aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/Custom.common (renamed from epan/dissectors/Custom.nmake)2
-rw-r--r--epan/dissectors/Makefile.am4
-rw-r--r--epan/dissectors/Makefile.common87
-rw-r--r--epan/dissectors/Makefile.nmake4
-rw-r--r--epan/dissectors/dcerpc/drsuapi/packet-dcerpc-drsuapi-template.c13
-rw-r--r--epan/dissectors/dcerpc/idl2wrs.c21
-rw-r--r--epan/dissectors/dissectors.vcproj230
-rw-r--r--epan/dissectors/packet-2dparityfec.c306
-rw-r--r--epan/dissectors/packet-3g-a11.c906
-rw-r--r--epan/dissectors/packet-6lowpan.c6
-rw-r--r--epan/dissectors/packet-aarp.c2
-rw-r--r--epan/dissectors/packet-aastra-aasp.c12
-rw-r--r--epan/dissectors/packet-acn.c1233
-rw-r--r--epan/dissectors/packet-acn.h175
-rw-r--r--epan/dissectors/packet-actrace.c4
-rw-r--r--epan/dissectors/packet-adwin-config.c10
-rw-r--r--epan/dissectors/packet-adwin.c14
-rw-r--r--epan/dissectors/packet-afp.c311
-rw-r--r--epan/dissectors/packet-afs.c141
-rw-r--r--epan/dissectors/packet-afs.h142
-rw-r--r--epan/dissectors/packet-agentx.c4
-rw-r--r--epan/dissectors/packet-aim-admin.c3
-rw-r--r--epan/dissectors/packet-aim-adverts.c3
-rw-r--r--epan/dissectors/packet-aim-bos.c3
-rw-r--r--epan/dissectors/packet-aim-buddylist.c3
-rw-r--r--epan/dissectors/packet-aim-chat.c11
-rw-r--r--epan/dissectors/packet-aim-chatnav.c3
-rw-r--r--epan/dissectors/packet-aim-directory.c3
-rw-r--r--epan/dissectors/packet-aim-email.c3
-rw-r--r--epan/dissectors/packet-aim-icq.c3
-rw-r--r--epan/dissectors/packet-aim-invitation.c3
-rw-r--r--epan/dissectors/packet-aim-location.c3
-rw-r--r--epan/dissectors/packet-aim-messaging.c11
-rw-r--r--epan/dissectors/packet-aim-oft.c3
-rw-r--r--epan/dissectors/packet-aim-popup.c3
-rw-r--r--epan/dissectors/packet-aim-signon.c3
-rw-r--r--epan/dissectors/packet-aim-sst.c3
-rw-r--r--epan/dissectors/packet-aim-stats.c3
-rw-r--r--epan/dissectors/packet-aim-translate.c3
-rw-r--r--epan/dissectors/packet-aim-userlookup.c3
-rw-r--r--epan/dissectors/packet-aim.c7
-rw-r--r--epan/dissectors/packet-airopeek.c142
-rw-r--r--epan/dissectors/packet-ajp13.c8
-rw-r--r--epan/dissectors/packet-alcap.c24
-rw-r--r--epan/dissectors/packet-amr.c2
-rw-r--r--epan/dissectors/packet-ancp.c2
-rw-r--r--epan/dissectors/packet-ansi_637.c12
-rw-r--r--epan/dissectors/packet-ansi_683.c12
-rw-r--r--epan/dissectors/packet-ansi_801.c8
-rw-r--r--epan/dissectors/packet-ansi_a.c62
-rw-r--r--epan/dissectors/packet-ansi_map.c191
-rw-r--r--epan/dissectors/packet-aodv.c186
-rw-r--r--epan/dissectors/packet-app-pkix-cert.c2
-rw-r--r--epan/dissectors/packet-applemidi.c23
-rw-r--r--epan/dissectors/packet-arcnet.c32
-rw-r--r--epan/dissectors/packet-arp.c713
-rw-r--r--epan/dissectors/packet-artnet.c1590
-rw-r--r--epan/dissectors/packet-aruba-adp.c1
-rw-r--r--epan/dissectors/packet-asap.c1
-rw-r--r--epan/dissectors/packet-ascend.c48
-rw-r--r--epan/dissectors/packet-asf.c40
-rw-r--r--epan/dissectors/packet-assa_r3.c1025
-rw-r--r--epan/dissectors/packet-assa_r3_public.h996
-rw-r--r--epan/dissectors/packet-atalk.c24
-rw-r--r--epan/dissectors/packet-babel.c2
-rw-r--r--epan/dissectors/packet-bacapp.c1221
-rw-r--r--epan/dissectors/packet-banana.c20
-rw-r--r--epan/dissectors/packet-batadv.c197
-rw-r--r--epan/dissectors/packet-beep.c17
-rw-r--r--epan/dissectors/packet-ber.c7392
-rw-r--r--epan/dissectors/packet-bfcp.c360
-rw-r--r--epan/dissectors/packet-bfd.c462
-rw-r--r--epan/dissectors/packet-bgp.c568
-rw-r--r--epan/dissectors/packet-bgp.h257
-rw-r--r--epan/dissectors/packet-bittorrent.c212
-rw-r--r--epan/dissectors/packet-bofl.c48
-rw-r--r--epan/dissectors/packet-bootp.c3116
-rw-r--r--epan/dissectors/packet-bootparams.c7
-rw-r--r--epan/dissectors/packet-bootparams.h32
-rw-r--r--epan/dissectors/packet-brdwlk.c128
-rw-r--r--epan/dissectors/packet-brp.c36
-rw-r--r--epan/dissectors/packet-bssap.c11
-rw-r--r--epan/dissectors/packet-bssgp.c6
-rw-r--r--epan/dissectors/packet-bt-dht.c10
-rw-r--r--epan/dissectors/packet-btamp.c208
-rw-r--r--epan/dissectors/packet-bthci_acl.c410
-rw-r--r--epan/dissectors/packet-bthci_acl.h2
-rw-r--r--epan/dissectors/packet-bthci_cmd.c4910
-rw-r--r--epan/dissectors/packet-bthci_evt.c5199
-rw-r--r--epan/dissectors/packet-bthci_sco.c88
-rw-r--r--epan/dissectors/packet-btl2cap.c3005
-rw-r--r--epan/dissectors/packet-btl2cap.h32
-rw-r--r--epan/dissectors/packet-btobex.c1063
-rw-r--r--epan/dissectors/packet-btrfcomm.c1447
-rw-r--r--epan/dissectors/packet-btrfcomm.h6
-rw-r--r--epan/dissectors/packet-btsdp.c1662
-rw-r--r--epan/dissectors/packet-btsdp.h100
-rw-r--r--epan/dissectors/packet-bzr.c4
-rw-r--r--epan/dissectors/packet-c1222.c26
-rw-r--r--epan/dissectors/packet-camel.c100
-rw-r--r--epan/dissectors/packet-canopen.c565
-rw-r--r--epan/dissectors/packet-capwap.c2
-rw-r--r--epan/dissectors/packet-cast.c714
-rw-r--r--epan/dissectors/packet-catapult-dct2000.c278
-rw-r--r--epan/dissectors/packet-ccsds.c3
-rw-r--r--epan/dissectors/packet-cdp.c1839
-rw-r--r--epan/dissectors/packet-cell_broadcast.c11
-rw-r--r--epan/dissectors/packet-cgmp.c5
-rw-r--r--epan/dissectors/packet-chdlc.c117
-rw-r--r--epan/dissectors/packet-cigi.c12
-rw-r--r--epan/dissectors/packet-cimd.c566
-rw-r--r--epan/dissectors/packet-cimd.h137
-rw-r--r--epan/dissectors/packet-cimetrics.c2
-rw-r--r--epan/dissectors/packet-cip.c47
-rw-r--r--epan/dissectors/packet-cipmotion.c2
-rw-r--r--epan/dissectors/packet-cipsafety.c108
-rw-r--r--epan/dissectors/packet-cipsafety.h6
-rw-r--r--epan/dissectors/packet-cisco-sm.c67
-rw-r--r--epan/dissectors/packet-clnp.c60
-rw-r--r--epan/dissectors/packet-cmpp.c493
-rw-r--r--epan/dissectors/packet-coap.c5
-rw-r--r--epan/dissectors/packet-cops.c195
-rw-r--r--epan/dissectors/packet-coseventcomm.c768
-rw-r--r--epan/dissectors/packet-cosine.c128
-rw-r--r--epan/dissectors/packet-cosnaming.c1557
-rw-r--r--epan/dissectors/packet-csm-encaps.c1070
-rw-r--r--epan/dissectors/packet-csn1.c42
-rw-r--r--epan/dissectors/packet-csn1.h82
-rw-r--r--epan/dissectors/packet-cups.c2
-rw-r--r--epan/dissectors/packet-data.c21
-rw-r--r--epan/dissectors/packet-data.h4
-rw-r--r--epan/dissectors/packet-db-lsp.c2
-rw-r--r--epan/dissectors/packet-dccp.c2169
-rw-r--r--epan/dissectors/packet-dccp.h18
-rw-r--r--epan/dissectors/packet-dcerpc-bossvr.c4
-rw-r--r--epan/dissectors/packet-dcerpc-budb.c3578
-rw-r--r--epan/dissectors/packet-dcerpc-butc.c2154
-rw-r--r--epan/dissectors/packet-dcerpc-cds_clerkserver.c6
-rw-r--r--epan/dissectors/packet-dcerpc-cds_solicit.c6
-rw-r--r--epan/dissectors/packet-dcerpc-conv.c98
-rw-r--r--epan/dissectors/packet-dcerpc-cprpc_server.c6
-rw-r--r--epan/dissectors/packet-dcerpc-dce122.c6
-rw-r--r--epan/dissectors/packet-dcerpc-dnsserver.c304
-rw-r--r--epan/dissectors/packet-dcerpc-drsuapi.c7339
-rw-r--r--epan/dissectors/packet-dcerpc-drsuapi.h8
-rw-r--r--epan/dissectors/packet-dcerpc-dtsprovider.c4
-rw-r--r--epan/dissectors/packet-dcerpc-dtsstime_req.c8
-rw-r--r--epan/dissectors/packet-dcerpc-fileexp.c4
-rw-r--r--epan/dissectors/packet-dcerpc-fldb.c4
-rw-r--r--epan/dissectors/packet-dcerpc-frsrpc.c2
-rw-r--r--epan/dissectors/packet-dcerpc-ftserver.c4
-rw-r--r--epan/dissectors/packet-dcerpc-icl_rpc.c6
-rw-r--r--epan/dissectors/packet-dcerpc-krb5rpc.c4
-rw-r--r--epan/dissectors/packet-dcerpc-llb.c6
-rw-r--r--epan/dissectors/packet-dcerpc-ndr.c305
-rw-r--r--epan/dissectors/packet-dcerpc-netlogon.c9
-rw-r--r--epan/dissectors/packet-dcerpc-nt.c180
-rw-r--r--epan/dissectors/packet-dcerpc-rdaclif.c6
-rw-r--r--epan/dissectors/packet-dcerpc-rep_proc.c4
-rw-r--r--epan/dissectors/packet-dcerpc-roverride.c4
-rw-r--r--epan/dissectors/packet-dcerpc-rpriv.c4
-rw-r--r--epan/dissectors/packet-dcerpc-rs_acct.c4
-rw-r--r--epan/dissectors/packet-dcerpc-rs_attr.c6
-rw-r--r--epan/dissectors/packet-dcerpc-rs_attr_schema.c6
-rw-r--r--epan/dissectors/packet-dcerpc-rs_bind.c8
-rw-r--r--epan/dissectors/packet-dcerpc-rs_misc.c4
-rw-r--r--epan/dissectors/packet-dcerpc-rs_pgo.c4
-rw-r--r--epan/dissectors/packet-dcerpc-rs_prop_acct.c6
-rw-r--r--epan/dissectors/packet-dcerpc-rs_prop_acl.c6
-rw-r--r--epan/dissectors/packet-dcerpc-rs_prop_attr.c6
-rw-r--r--epan/dissectors/packet-dcerpc-rs_prop_pgo.c8
-rw-r--r--epan/dissectors/packet-dcerpc-rs_prop_plcy.c6
-rw-r--r--epan/dissectors/packet-dcerpc-rs_pwd_mgmt.c6
-rw-r--r--epan/dissectors/packet-dcerpc-rs_repadm.c4
-rw-r--r--epan/dissectors/packet-dcerpc-rs_replist.c6
-rw-r--r--epan/dissectors/packet-dcerpc-rs_repmgr.c6
-rw-r--r--epan/dissectors/packet-dcerpc-rs_unix.c4
-rw-r--r--epan/dissectors/packet-dcerpc-rsec_login.c6
-rw-r--r--epan/dissectors/packet-dcerpc-secidmap.c9
-rw-r--r--epan/dissectors/packet-dcerpc-spoolss.c132
-rw-r--r--epan/dissectors/packet-dcerpc-tkn4int.c4
-rw-r--r--epan/dissectors/packet-dcerpc-ubikdisk.c4
-rw-r--r--epan/dissectors/packet-dcerpc-ubikvote.c4
-rw-r--r--epan/dissectors/packet-dcerpc-update.c4
-rw-r--r--epan/dissectors/packet-dcerpc.c2499
-rw-r--r--epan/dissectors/packet-dcm.c6
-rw-r--r--epan/dissectors/packet-dcom-oxid.c316
-rw-r--r--epan/dissectors/packet-dcom-sysact.c55
-rw-r--r--epan/dissectors/packet-dcom.c329
-rw-r--r--epan/dissectors/packet-dec-bpdu.c334
-rw-r--r--epan/dissectors/packet-dect.c5
-rw-r--r--epan/dissectors/packet-dhcp-failover.c2
-rw-r--r--epan/dissectors/packet-dhcpv6.c188
-rw-r--r--epan/dissectors/packet-diameter.c179
-rw-r--r--epan/dissectors/packet-diameter_3gpp.c77
-rw-r--r--epan/dissectors/packet-dis-pdus.c92
-rw-r--r--epan/dissectors/packet-distcc.c463
-rw-r--r--epan/dissectors/packet-dlm3.c2
-rw-r--r--epan/dissectors/packet-dlsw.c674
-rw-r--r--epan/dissectors/packet-dmp.c18
-rw-r--r--epan/dissectors/packet-dmx-chan.c204
-rw-r--r--epan/dissectors/packet-dmx-sip.c320
-rw-r--r--epan/dissectors/packet-dmx-test.c158
-rw-r--r--epan/dissectors/packet-dmx-text.c126
-rw-r--r--epan/dissectors/packet-dmx.c165
-rw-r--r--epan/dissectors/packet-dnp.c3
-rw-r--r--epan/dissectors/packet-dns.c4005
-rw-r--r--epan/dissectors/packet-dpnss-link.c162
-rw-r--r--epan/dissectors/packet-dpnss.c192
-rw-r--r--epan/dissectors/packet-drda.c1590
-rw-r--r--epan/dissectors/packet-dsi.c12
-rw-r--r--epan/dissectors/packet-dtls.c331
-rw-r--r--epan/dissectors/packet-dtn.c420
-rw-r--r--epan/dissectors/packet-dtn.h21
-rw-r--r--epan/dissectors/packet-dtp.c17
-rw-r--r--epan/dissectors/packet-dtpt.c676
-rw-r--r--epan/dissectors/packet-dua.c279
-rw-r--r--epan/dissectors/packet-dvb-ait.c316
-rw-r--r--epan/dissectors/packet-dvb-bat.c277
-rw-r--r--epan/dissectors/packet-dvb-data-mpe.c47
-rw-r--r--epan/dissectors/packet-dvb-eit.c308
-rw-r--r--epan/dissectors/packet-dvb-ipdc.c6
-rw-r--r--epan/dissectors/packet-dvb-nit.c257
-rw-r--r--epan/dissectors/packet-dvb-sdt.c285
-rw-r--r--epan/dissectors/packet-dvb-tdt.c104
-rw-r--r--epan/dissectors/packet-dvb-tot.c134
-rw-r--r--epan/dissectors/packet-dvbci.c513
-rw-r--r--epan/dissectors/packet-eap.c2075
-rw-r--r--epan/dissectors/packet-eapol.c527
-rw-r--r--epan/dissectors/packet-echo.c28
-rw-r--r--epan/dissectors/packet-ecp-oui.c6
-rw-r--r--epan/dissectors/packet-edonkey.c30
-rw-r--r--epan/dissectors/packet-ehs.c1720
-rw-r--r--epan/dissectors/packet-eigrp.c23
-rw-r--r--epan/dissectors/packet-eiss.c593
-rw-r--r--epan/dissectors/packet-elcom.c4
-rw-r--r--epan/dissectors/packet-enc.c40
-rw-r--r--epan/dissectors/packet-enip.c1302
-rw-r--r--epan/dissectors/packet-enip.h5
-rw-r--r--epan/dissectors/packet-enttec.c7
-rw-r--r--epan/dissectors/packet-epl.c2
-rw-r--r--epan/dissectors/packet-epl_v1.c420
-rw-r--r--epan/dissectors/packet-epmd.c542
-rw-r--r--epan/dissectors/packet-erf.c84
-rw-r--r--epan/dissectors/packet-erldp.c6
-rw-r--r--epan/dissectors/packet-esis.c281
-rw-r--r--epan/dissectors/packet-etch.c2
-rw-r--r--epan/dissectors/packet-eth.c4
-rw-r--r--epan/dissectors/packet-ethertype.c338
-rw-r--r--epan/dissectors/packet-etsi_card_app_toolkit.c7
-rw-r--r--epan/dissectors/packet-etv.c219
-rw-r--r--epan/dissectors/packet-evrc.c2
-rw-r--r--epan/dissectors/packet-exec.c6
-rw-r--r--epan/dissectors/packet-fc.c10
-rw-r--r--epan/dissectors/packet-fcct.c10
-rw-r--r--epan/dissectors/packet-fcels.c10
-rw-r--r--epan/dissectors/packet-fcfcs.c10
-rw-r--r--epan/dissectors/packet-fcfzs.c758
-rw-r--r--epan/dissectors/packet-fcgi.c10
-rw-r--r--epan/dissectors/packet-fcip.c101
-rw-r--r--epan/dissectors/packet-fclctl.c24
-rw-r--r--epan/dissectors/packet-fcoe.c2
-rw-r--r--epan/dissectors/packet-fcp.c875
-rw-r--r--epan/dissectors/packet-fcsb3.c1292
-rw-r--r--epan/dissectors/packet-fcsp.c482
-rw-r--r--epan/dissectors/packet-fcswils.c1870
-rw-r--r--epan/dissectors/packet-fddi.c351
-rw-r--r--epan/dissectors/packet-fefd.c8
-rw-r--r--epan/dissectors/packet-fip.c520
-rw-r--r--epan/dissectors/packet-fix.c42
-rw-r--r--epan/dissectors/packet-fmp.c3273
-rw-r--r--epan/dissectors/packet-fmp_notify.c4
-rw-r--r--epan/dissectors/packet-fp_hint.c1
-rw-r--r--epan/dissectors/packet-fr.c770
-rw-r--r--epan/dissectors/packet-frame.c188
-rw-r--r--epan/dissectors/packet-ftp.c1188
-rw-r--r--epan/dissectors/packet-fw1.c12
-rw-r--r--epan/dissectors/packet-g723.c2
-rw-r--r--epan/dissectors/packet-gadu-gadu.c1508
-rw-r--r--epan/dissectors/packet-gdsdb.c22
-rw-r--r--epan/dissectors/packet-gift.c2
-rw-r--r--epan/dissectors/packet-giop.c4
-rw-r--r--epan/dissectors/packet-giop.h4
-rw-r--r--epan/dissectors/packet-git.c2
-rw-r--r--epan/dissectors/packet-gluster.h436
-rw-r--r--epan/dissectors/packet-gluster_cli.c561
-rw-r--r--epan/dissectors/packet-gluster_pmap.c277
-rw-r--r--epan/dissectors/packet-glusterd.c738
-rw-r--r--epan/dissectors/packet-glusterfs.c2593
-rw-r--r--epan/dissectors/packet-glusterfs_hndsk.c338
-rw-r--r--epan/dissectors/packet-gmhdr.c99
-rw-r--r--epan/dissectors/packet-gmr1_bcch.c4
-rw-r--r--epan/dissectors/packet-gmr1_dtap.c6
-rw-r--r--epan/dissectors/packet-gmr1_rr.c8
-rw-r--r--epan/dissectors/packet-gmrp.c2
-rw-r--r--epan/dissectors/packet-gnutella.c3
-rw-r--r--epan/dissectors/packet-gopher.c4
-rw-r--r--epan/dissectors/packet-gprs-llc.c1
-rw-r--r--epan/dissectors/packet-gre.c1027
-rw-r--r--epan/dissectors/packet-gsm_a_bssmap.c1151
-rw-r--r--epan/dissectors/packet-gsm_a_common.c6902
-rw-r--r--epan/dissectors/packet-gsm_a_common.h57
-rw-r--r--epan/dissectors/packet-gsm_a_dtap.c129
-rw-r--r--epan/dissectors/packet-gsm_a_gm.c5213
-rw-r--r--epan/dissectors/packet-gsm_a_rp.c8
-rw-r--r--epan/dissectors/packet-gsm_a_rr.c536
-rw-r--r--epan/dissectors/packet-gsm_abis_om2000.c35
-rw-r--r--epan/dissectors/packet-gsm_abis_oml.c26
-rw-r--r--epan/dissectors/packet-gsm_bsslap.c4
-rw-r--r--epan/dissectors/packet-gsm_bssmap_le.c14
-rw-r--r--epan/dissectors/packet-gsm_cbch.c905
-rw-r--r--epan/dissectors/packet-gsm_map.c319
-rw-r--r--epan/dissectors/packet-gsm_rlcmac.c6
-rw-r--r--epan/dissectors/packet-gsm_sim.c13
-rw-r--r--epan/dissectors/packet-gsm_sms.c3392
-rw-r--r--epan/dissectors/packet-gsm_sms_ud.c940
-rw-r--r--epan/dissectors/packet-gssapi.c6
-rw-r--r--epan/dissectors/packet-gtp.c4472
-rw-r--r--epan/dissectors/packet-gtp.h2
-rw-r--r--epan/dissectors/packet-gtpv2.c1451
-rw-r--r--epan/dissectors/packet-gtpv2.h27
-rw-r--r--epan/dissectors/packet-gvrp.c471
-rw-r--r--epan/dissectors/packet-h235.c10
-rw-r--r--epan/dissectors/packet-h248.c730
-rw-r--r--epan/dissectors/packet-h248.h20
-rw-r--r--epan/dissectors/packet-h248_10.c9
-rw-r--r--epan/dissectors/packet-h248_2.c4
-rw-r--r--epan/dissectors/packet-h248_3gpp.c7
-rw-r--r--epan/dissectors/packet-h248_7.c41
-rw-r--r--epan/dissectors/packet-h248_annex_c.c3
-rw-r--r--epan/dissectors/packet-h248_annex_e.c873
-rw-r--r--epan/dissectors/packet-h248_q1950.c63
-rw-r--r--epan/dissectors/packet-h263.c7
-rw-r--r--epan/dissectors/packet-h264.c79
-rw-r--r--epan/dissectors/packet-h450.c2
-rw-r--r--epan/dissectors/packet-hartip.c1556
-rw-r--r--epan/dissectors/packet-hdcp.c12
-rw-r--r--epan/dissectors/packet-hdfs.c14
-rw-r--r--epan/dissectors/packet-hip.c80
-rw-r--r--epan/dissectors/packet-homeplug-av.c4
-rw-r--r--epan/dissectors/packet-hpteam.c20
-rw-r--r--epan/dissectors/packet-http.c121
-rw-r--r--epan/dissectors/packet-http.h3
-rw-r--r--epan/dissectors/packet-iax2.c46
-rw-r--r--epan/dissectors/packet-icep.c384
-rw-r--r--epan/dissectors/packet-icmp.c8
-rw-r--r--epan/dissectors/packet-icmp.h2
-rw-r--r--epan/dissectors/packet-icmpv6.c48
-rw-r--r--epan/dissectors/packet-icp.c2
-rw-r--r--epan/dissectors/packet-icq.c2
-rw-r--r--epan/dissectors/packet-idmp.c447
-rw-r--r--epan/dissectors/packet-ieee1722.c22
-rw-r--r--epan/dissectors/packet-ieee17221.c142
-rw-r--r--epan/dissectors/packet-ieee80211-airopeek.c141
-rw-r--r--epan/dissectors/packet-ieee80211-netmon.c (renamed from epan/dissectors/packet-netmon-802_11.c)6
-rw-r--r--epan/dissectors/packet-ieee80211-prism.c2
-rw-r--r--epan/dissectors/packet-ieee80211-radiotap-defs.h (renamed from epan/dissectors/packet-radiotap-defs.h)0
-rw-r--r--epan/dissectors/packet-ieee80211-radiotap-iter.c (renamed from epan/dissectors/packet-radiotap-iter.c)2
-rw-r--r--epan/dissectors/packet-ieee80211-radiotap-iter.h (renamed from epan/dissectors/packet-radiotap-iter.h)2
-rw-r--r--epan/dissectors/packet-ieee80211-radiotap.c (renamed from epan/dissectors/packet-radiotap.c)50
-rw-r--r--epan/dissectors/packet-ieee80211-radiotap.h (renamed from epan/dissectors/packet-radiotap.h)4
-rw-r--r--epan/dissectors/packet-ieee80211-wlancap.c2
-rw-r--r--epan/dissectors/packet-ieee80211.c760
-rw-r--r--epan/dissectors/packet-ieee802154.c30
-rw-r--r--epan/dissectors/packet-ifcp.c4
-rw-r--r--epan/dissectors/packet-igmp.c2
-rw-r--r--epan/dissectors/packet-igrp.c4
-rw-r--r--epan/dissectors/packet-image-gif.c1086
-rw-r--r--epan/dissectors/packet-image-jfif.c1
-rw-r--r--epan/dissectors/packet-imf.c30
-rw-r--r--epan/dissectors/packet-inap.c98
-rw-r--r--epan/dissectors/packet-infiniband.c1891
-rw-r--r--epan/dissectors/packet-ip.c821
-rw-r--r--epan/dissectors/packet-ip.h4
-rw-r--r--epan/dissectors/packet-ipfc.c2
-rw-r--r--epan/dissectors/packet-ipmi-app.c3
-rw-r--r--epan/dissectors/packet-ipmi-bridge.c4
-rw-r--r--epan/dissectors/packet-ipmi-chassis.c4
-rw-r--r--epan/dissectors/packet-ipmi-picmg.c4
-rw-r--r--epan/dissectors/packet-ipmi-pps.c4
-rw-r--r--epan/dissectors/packet-ipmi-se.c4
-rw-r--r--epan/dissectors/packet-ipmi-storage.c4
-rw-r--r--epan/dissectors/packet-ipmi-transport.c4
-rw-r--r--epan/dissectors/packet-ipmi-update.c4
-rw-r--r--epan/dissectors/packet-ipmi.c5
-rw-r--r--epan/dissectors/packet-ipp.c1067
-rw-r--r--epan/dissectors/packet-ipsec.c1
-rw-r--r--epan/dissectors/packet-ipv6.c1015
-rw-r--r--epan/dissectors/packet-ipv6.h54
-rw-r--r--epan/dissectors/packet-irc.c439
-rw-r--r--epan/dissectors/packet-isakmp.c98
-rw-r--r--epan/dissectors/packet-isis-clv.c10
-rw-r--r--epan/dissectors/packet-isis-clv.h7
-rw-r--r--epan/dissectors/packet-isis-hello.c186
-rw-r--r--epan/dissectors/packet-isis-lsp.c1336
-rw-r--r--epan/dissectors/packet-ismp.c2
-rw-r--r--epan/dissectors/packet-isns.c10
-rw-r--r--epan/dissectors/packet-iso7816.c479
-rw-r--r--epan/dissectors/packet-isup.c2183
-rw-r--r--epan/dissectors/packet-itdm.c2
-rw-r--r--epan/dissectors/packet-iuup.c6
-rw-r--r--epan/dissectors/packet-iwarp-ddp-rdmap.c3
-rw-r--r--epan/dissectors/packet-ixveriwave.c1510
-rw-r--r--epan/dissectors/packet-juniper.c2
-rw-r--r--epan/dissectors/packet-jxta.c37
-rw-r--r--epan/dissectors/packet-k12.c1
-rw-r--r--epan/dissectors/packet-kdsp.c1020
-rw-r--r--epan/dissectors/packet-kerberos.c9
-rw-r--r--epan/dissectors/packet-l1-events.c3
-rw-r--r--epan/dissectors/packet-l2tp.c3798
-rw-r--r--epan/dissectors/packet-laplink.c2
-rw-r--r--epan/dissectors/packet-lcsap.c84
-rw-r--r--epan/dissectors/packet-ldap.c842
-rw-r--r--epan/dissectors/packet-ldp.c40
-rw-r--r--epan/dissectors/packet-lisp-data.c6
-rw-r--r--epan/dissectors/packet-lisp.c6
-rw-r--r--epan/dissectors/packet-lldp.c105
-rw-r--r--epan/dissectors/packet-lldp.h14
-rw-r--r--epan/dissectors/packet-llrp.c991
-rw-r--r--epan/dissectors/packet-llt.c2
-rw-r--r--epan/dissectors/packet-lmp.c10
-rw-r--r--epan/dissectors/packet-lpp.c2
-rw-r--r--epan/dissectors/packet-lsc.c2
-rw-r--r--epan/dissectors/packet-lte-rrc.c2736
-rw-r--r--epan/dissectors/packet-ltp.c11
-rw-r--r--epan/dissectors/packet-lwapp.c247
-rw-r--r--epan/dissectors/packet-lwres.c4
-rw-r--r--epan/dissectors/packet-m3ap.c260
-rw-r--r--epan/dissectors/packet-m3ua.c3
-rw-r--r--epan/dissectors/packet-maap.c222
-rw-r--r--epan/dissectors/packet-mac-lte.c823
-rw-r--r--epan/dissectors/packet-mac-lte.h7
-rw-r--r--epan/dissectors/packet-mactelnet.c594
-rw-r--r--epan/dissectors/packet-manolito.c2
-rw-r--r--epan/dissectors/packet-mdshdr.c220
-rw-r--r--epan/dissectors/packet-megaco.c180
-rw-r--r--epan/dissectors/packet-memcache.c19
-rw-r--r--epan/dissectors/packet-mesh.c2
-rw-r--r--epan/dissectors/packet-mikey.c9
-rw-r--r--epan/dissectors/packet-mim.c2
-rw-r--r--epan/dissectors/packet-miop.c28
-rw-r--r--epan/dissectors/packet-mip.c4
-rw-r--r--epan/dissectors/packet-mip6.c58
-rw-r--r--epan/dissectors/packet-mmse.c2
-rw-r--r--epan/dissectors/packet-mndp.c45
-rw-r--r--epan/dissectors/packet-moldudp.c285
-rw-r--r--epan/dissectors/packet-moldudp64.c293
-rw-r--r--epan/dissectors/packet-mp2t.c33
-rw-r--r--epan/dissectors/packet-mp4ves.c3
-rw-r--r--epan/dissectors/packet-mpeg-ca.c155
-rw-r--r--epan/dissectors/packet-mpeg-descriptor.c3828
-rw-r--r--epan/dissectors/packet-mpeg-descriptor.h35
-rw-r--r--epan/dissectors/packet-mpeg-dsmcc.c1063
-rw-r--r--epan/dissectors/packet-mpeg-pat.c28
-rw-r--r--epan/dissectors/packet-mpeg-pes.c7
-rw-r--r--epan/dissectors/packet-mpeg-pmt.c307
-rw-r--r--epan/dissectors/packet-mpeg-sect.c323
-rw-r--r--epan/dissectors/packet-mpeg-sect.h67
-rw-r--r--epan/dissectors/packet-mpls-echo.c2941
-rw-r--r--epan/dissectors/packet-mpls-pm.c30
-rw-r--r--epan/dissectors/packet-mpls-psc.c269
-rw-r--r--epan/dissectors/packet-mpls-y1711.c441
-rw-r--r--epan/dissectors/packet-mpls.c595
-rw-r--r--epan/dissectors/packet-mpls.h18
-rw-r--r--epan/dissectors/packet-mq.c4
-rw-r--r--epan/dissectors/packet-ms-mms.c48
-rw-r--r--epan/dissectors/packet-msdp.c2
-rw-r--r--epan/dissectors/packet-msproxy.c32
-rw-r--r--epan/dissectors/packet-mstp.c11
-rw-r--r--epan/dissectors/packet-mstp.h9
-rw-r--r--epan/dissectors/packet-multipart.c13
-rw-r--r--epan/dissectors/packet-nas_eps.c924
-rw-r--r--epan/dissectors/packet-nbap.c1557
-rw-r--r--epan/dissectors/packet-nbd.c9
-rw-r--r--epan/dissectors/packet-nbns.c12
-rw-r--r--epan/dissectors/packet-ncp.c18
-rw-r--r--epan/dissectors/packet-ndp.c139
-rw-r--r--epan/dissectors/packet-ndps.c2
-rw-r--r--epan/dissectors/packet-netbios.c1
-rw-r--r--epan/dissectors/packet-netdump.c2
-rw-r--r--epan/dissectors/packet-netflow.c8
-rw-r--r--epan/dissectors/packet-netperfmeter.c97
-rw-r--r--epan/dissectors/packet-netsync.c5
-rw-r--r--epan/dissectors/packet-newmail.c29
-rw-r--r--epan/dissectors/packet-nflog.c406
-rw-r--r--epan/dissectors/packet-nfs.c82
-rw-r--r--epan/dissectors/packet-nfs.h2
-rw-r--r--epan/dissectors/packet-nhrp.c2212
-rw-r--r--epan/dissectors/packet-nhrp.h3
-rw-r--r--epan/dissectors/packet-noe.c3053
-rw-r--r--epan/dissectors/packet-nstrace.c104
-rw-r--r--epan/dissectors/packet-nt-tpcp.c37
-rw-r--r--epan/dissectors/packet-ntlmssp.c2
-rw-r--r--epan/dissectors/packet-ntp.c127
-rw-r--r--epan/dissectors/packet-oipf.c194
-rw-r--r--epan/dissectors/packet-olsr.c9
-rw-r--r--epan/dissectors/packet-omron-fins.c16
-rw-r--r--epan/dissectors/packet-opensafety.c437
-rw-r--r--epan/dissectors/packet-openwire.c2011
-rw-r--r--epan/dissectors/packet-opsi.c2
-rw-r--r--epan/dissectors/packet-osi-options.c2
-rw-r--r--epan/dissectors/packet-osi.c86
-rw-r--r--epan/dissectors/packet-ospf.c6
-rw-r--r--epan/dissectors/packet-p1.c6
-rw-r--r--epan/dissectors/packet-packetbb.c39
-rw-r--r--epan/dissectors/packet-parlay.c105135
-rw-r--r--epan/dissectors/packet-pcep.c369
-rw-r--r--epan/dissectors/packet-pcli.c7
-rw-r--r--epan/dissectors/packet-pcp.c3658
-rw-r--r--epan/dissectors/packet-pdcp-lte.c185
-rw-r--r--epan/dissectors/packet-peekremote.c156
-rw-r--r--epan/dissectors/packet-per.c75
-rw-r--r--epan/dissectors/packet-pgsql.c1
-rw-r--r--epan/dissectors/packet-pkix1explicit.c7
-rw-r--r--epan/dissectors/packet-pktgen.c4
-rw-r--r--epan/dissectors/packet-pnrp.c12
-rw-r--r--epan/dissectors/packet-pop.c77
-rw-r--r--epan/dissectors/packet-ppcap.c589
-rw-r--r--epan/dissectors/packet-ppi-antenna.c2
-rw-r--r--epan/dissectors/packet-ppi.c2
-rw-r--r--epan/dissectors/packet-ppp.c9165
-rw-r--r--epan/dissectors/packet-pppoe.c46
-rw-r--r--epan/dissectors/packet-pptp.c6
-rw-r--r--epan/dissectors/packet-pres.c4
-rw-r--r--epan/dissectors/packet-ptp.c6
-rw-r--r--epan/dissectors/packet-pvfs2.c7
-rw-r--r--epan/dissectors/packet-pw-atm.c386
-rw-r--r--epan/dissectors/packet-pw-cesopsn.c2
-rw-r--r--epan/dissectors/packet-pw-eth.c303
-rw-r--r--epan/dissectors/packet-pw-hdlc.c2
-rw-r--r--epan/dissectors/packet-pw-satop.c4
-rw-r--r--epan/dissectors/packet-q932-ros.c6
-rw-r--r--epan/dissectors/packet-qsig.c2
-rw-r--r--epan/dissectors/packet-radius.c203
-rw-r--r--epan/dissectors/packet-radius.h4
-rw-r--r--epan/dissectors/packet-ranap.c56
-rw-r--r--epan/dissectors/packet-ranap.h1
-rw-r--r--epan/dissectors/packet-rdm.c2617
-rw-r--r--epan/dissectors/packet-rdp.c814
-rw-r--r--epan/dissectors/packet-rdp.h40
-rw-r--r--epan/dissectors/packet-redbackli.c5
-rw-r--r--epan/dissectors/packet-reload.c1004
-rw-r--r--epan/dissectors/packet-rfc2190.c77
-rw-r--r--epan/dissectors/packet-rfid-felica.c126
-rw-r--r--epan/dissectors/packet-rfid-pn532.c615
-rw-r--r--epan/dissectors/packet-rlc-lte.c12
-rw-r--r--epan/dissectors/packet-rlc.c528
-rw-r--r--epan/dissectors/packet-rlc.h7
-rw-r--r--epan/dissectors/packet-rlm.c13
-rw-r--r--epan/dissectors/packet-rmi.c1
-rw-r--r--epan/dissectors/packet-rmp.c4
-rw-r--r--epan/dissectors/packet-rmt-alc.c1
-rw-r--r--epan/dissectors/packet-rmt-common.c1
-rw-r--r--epan/dissectors/packet-rmt-fec.c39
-rw-r--r--epan/dissectors/packet-rmt-lct.c2
-rw-r--r--epan/dissectors/packet-rmt-lct.h2
-rw-r--r--epan/dissectors/packet-rmt-norm.c29
-rw-r--r--epan/dissectors/packet-rnsap.c43
-rw-r--r--epan/dissectors/packet-rohc.c54
-rw-r--r--epan/dissectors/packet-roofnet.c4
-rw-r--r--epan/dissectors/packet-rpc.c552
-rw-r--r--epan/dissectors/packet-rpc.h7
-rw-r--r--epan/dissectors/packet-rpcap.c8
-rw-r--r--epan/dissectors/packet-rrc.c29928
-rw-r--r--epan/dissectors/packet-rrc.h6
-rw-r--r--epan/dissectors/packet-rrlp.c6
-rw-r--r--epan/dissectors/packet-rsh.c8
-rw-r--r--epan/dissectors/packet-rsip.c2
-rw-r--r--epan/dissectors/packet-rsl.c1527
-rw-r--r--epan/dissectors/packet-rsvp.c8480
-rw-r--r--epan/dissectors/packet-rsync.c4
-rw-r--r--epan/dissectors/packet-rtcp.c939
-rw-r--r--epan/dissectors/packet-rtmpt.c82
-rw-r--r--epan/dissectors/packet-rtnet.c7
-rw-r--r--epan/dissectors/packet-rtp-midi.c1335
-rw-r--r--epan/dissectors/packet-rtp.c287
-rw-r--r--epan/dissectors/packet-s1ap.c4
-rw-r--r--epan/dissectors/packet-sametime.c32
-rw-r--r--epan/dissectors/packet-sbc-ap.c2
-rw-r--r--epan/dissectors/packet-sccp.c4295
-rw-r--r--epan/dissectors/packet-sccpmg.c2
-rw-r--r--epan/dissectors/packet-scsi-sbc.c239
-rw-r--r--epan/dissectors/packet-scsi-sbc.h1
-rw-r--r--epan/dissectors/packet-scsi.c3326
-rw-r--r--epan/dissectors/packet-scsi.h1
-rw-r--r--epan/dissectors/packet-sctp.c241
-rw-r--r--epan/dissectors/packet-sdh.c294
-rw-r--r--epan/dissectors/packet-sdp.c1990
-rw-r--r--epan/dissectors/packet-sercosiii.c4
-rw-r--r--epan/dissectors/packet-sflow.c78
-rw-r--r--epan/dissectors/packet-sgsap.c2
-rw-r--r--epan/dissectors/packet-sigcomp.c2
-rw-r--r--epan/dissectors/packet-sip.c77
-rw-r--r--epan/dissectors/packet-sita.c584
-rw-r--r--epan/dissectors/packet-skinny.c1756
-rw-r--r--epan/dissectors/packet-sll.c4
-rw-r--r--epan/dissectors/packet-slowprotocols.c12
-rw-r--r--epan/dissectors/packet-smb-browse.c10
-rw-r--r--epan/dissectors/packet-smb-pipe.c47
-rw-r--r--epan/dissectors/packet-smb.c379
-rw-r--r--epan/dissectors/packet-smb.h3
-rw-r--r--epan/dissectors/packet-smb2.c446
-rw-r--r--epan/dissectors/packet-smb2.h9
-rw-r--r--epan/dissectors/packet-smpp.c454
-rw-r--r--epan/dissectors/packet-smtp.c343
-rw-r--r--epan/dissectors/packet-sndcp-xid.c2
-rw-r--r--epan/dissectors/packet-snmp.c106
-rw-r--r--epan/dissectors/packet-socketcan.c197
-rw-r--r--epan/dissectors/packet-spice.c468
-rw-r--r--epan/dissectors/packet-spnego.c2
-rw-r--r--epan/dissectors/packet-srvloc.c17
-rw-r--r--epan/dissectors/packet-ssh.c6
-rw-r--r--epan/dissectors/packet-ssl-utils.c1052
-rw-r--r--epan/dissectors/packet-ssl-utils.h9
-rw-r--r--epan/dissectors/packet-ssl.c329
-rw-r--r--epan/dissectors/packet-sync.c309
-rw-r--r--epan/dissectors/packet-synergy.c1
-rw-r--r--epan/dissectors/packet-syslog.c5
-rw-r--r--epan/dissectors/packet-t124.c2
-rw-r--r--epan/dissectors/packet-tango.c4394
-rw-r--r--epan/dissectors/packet-tcap.c20
-rw-r--r--epan/dissectors/packet-tcp.c221
-rw-r--r--epan/dissectors/packet-tcp.h18
-rw-r--r--epan/dissectors/packet-tds.c49
-rw-r--r--epan/dissectors/packet-teamspeak2.c32
-rw-r--r--epan/dissectors/packet-telnet.c1554
-rw-r--r--epan/dissectors/packet-teredo.c3
-rw-r--r--epan/dissectors/packet-tetra.c2
-rw-r--r--epan/dissectors/packet-text-media.c3
-rw-r--r--epan/dissectors/packet-tipc.c2
-rw-r--r--epan/dissectors/packet-tivoconnect.c1
-rw-r--r--epan/dissectors/packet-tn3270.c9289
-rw-r--r--epan/dissectors/packet-tnef.c19
-rw-r--r--epan/dissectors/packet-tte-pcf.c1
-rw-r--r--epan/dissectors/packet-turbocell.c2
-rw-r--r--epan/dissectors/packet-turnchannel.c2
-rw-r--r--epan/dissectors/packet-tzsp.c16
-rw-r--r--epan/dissectors/packet-ua.c495
-rw-r--r--epan/dissectors/packet-ua3g.c10911
-rw-r--r--epan/dissectors/packet-uasip.c955
-rw-r--r--epan/dissectors/packet-uaudp.c1111
-rw-r--r--epan/dissectors/packet-uaudp.h17
-rw-r--r--epan/dissectors/packet-ucp.c41
-rw-r--r--epan/dissectors/packet-udld.c3
-rw-r--r--epan/dissectors/packet-udp.c14
-rw-r--r--epan/dissectors/packet-ulp.c2
-rw-r--r--epan/dissectors/packet-uma.c7
-rw-r--r--epan/dissectors/packet-umts_fp.c3061
-rw-r--r--epan/dissectors/packet-umts_fp.h113
-rw-r--r--epan/dissectors/packet-umts_mac.c47
-rw-r--r--epan/dissectors/packet-usb-ccid.c320
-rw-r--r--epan/dissectors/packet-usb-hid.c24
-rw-r--r--epan/dissectors/packet-usb-hub.c30
-rw-r--r--epan/dissectors/packet-usb-masstorage.c10
-rw-r--r--epan/dissectors/packet-usb.c856
-rw-r--r--epan/dissectors/packet-usb.h35
-rw-r--r--epan/dissectors/packet-v5dl.c441
-rw-r--r--epan/dissectors/packet-v5ef.c209
-rw-r--r--epan/dissectors/packet-v5ua.c5
-rw-r--r--epan/dissectors/packet-vcdu.c2
-rw-r--r--epan/dissectors/packet-vines.c4
-rw-r--r--epan/dissectors/packet-vmlab.c2
-rw-r--r--epan/dissectors/packet-vnc.c54
-rw-r--r--epan/dissectors/packet-vtp.c5
-rw-r--r--epan/dissectors/packet-waveagent.c1939
-rw-r--r--epan/dissectors/packet-wbxml.c760
-rw-r--r--epan/dissectors/packet-wccp.c1089
-rw-r--r--epan/dissectors/packet-websocket.c518
-rw-r--r--epan/dissectors/packet-windows-common.c68
-rw-r--r--epan/dissectors/packet-windows-common.h4
-rw-r--r--epan/dissectors/packet-wlccp.c4
-rw-r--r--epan/dissectors/packet-wol.c20
-rw-r--r--epan/dissectors/packet-wow.c2
-rw-r--r--epan/dissectors/packet-wps.c2
-rw-r--r--epan/dissectors/packet-wreth.c2017
-rw-r--r--epan/dissectors/packet-wsmp.c2
-rw-r--r--epan/dissectors/packet-wtls.c280
-rw-r--r--epan/dissectors/packet-wtp.c4
-rw-r--r--epan/dissectors/packet-x11.c354
-rw-r--r--epan/dissectors/packet-x25.c62
-rw-r--r--epan/dissectors/packet-x2ap.c6
-rw-r--r--epan/dissectors/packet-x509ce.c2
-rw-r--r--epan/dissectors/packet-x509sat.c2
-rw-r--r--epan/dissectors/packet-xdmcp.c2
-rw-r--r--epan/dissectors/packet-xmcp.c2
-rw-r--r--epan/dissectors/packet-xml.c31
-rw-r--r--epan/dissectors/packet-xmpp.c8
-rw-r--r--epan/dissectors/packet-xot.c4
-rw-r--r--epan/dissectors/packet-xtp.c2
-rw-r--r--epan/dissectors/packet-yami.c612
-rw-r--r--epan/dissectors/packet-yhoo.c225
-rw-r--r--epan/dissectors/packet-ymsg.c430
-rw-r--r--epan/dissectors/packet-ziop.c10
-rw-r--r--epan/dissectors/pidl/dnsserver.cnf4
-rw-r--r--epan/dissectors/pidl/frsrpc.cnf2
-rw-r--r--epan/dissectors/x11-declarations.h352
-rw-r--r--epan/dissectors/x11-enum.h164
-rw-r--r--epan/dissectors/x11-extension-errors.h3
-rw-r--r--epan/dissectors/x11-extension-implementation.h17477
-rw-r--r--epan/dissectors/x11-glx-render-enum.h38
-rw-r--r--epan/dissectors/x11-register-info.h730
701 files changed, 309899 insertions, 128257 deletions
diff --git a/epan/dissectors/Custom.nmake b/epan/dissectors/Custom.common
index 162df0efb3..54ad11b79f 100644
--- a/epan/dissectors/Custom.nmake
+++ b/epan/dissectors/Custom.common
@@ -5,4 +5,6 @@
CUSTOM_DISSECTOR_SRC =
+CUSTOM_DIRTY_ASN1_DISSECTOR_SRC =
+
CUSTOM_HEADER_FILES =
diff --git a/epan/dissectors/Makefile.am b/epan/dissectors/Makefile.am
index 0d5a39434b..4b21c50eee 100644
--- a/epan/dissectors/Makefile.am
+++ b/epan/dissectors/Makefile.am
@@ -47,7 +47,7 @@ libdissectors_la_CFLAGS = $(AM_CLEAN_CFLAGS)
DIST_SUBDIRS = dcerpc pidl
EXTRA_DIST = \
- Custom.nmake \
+ Custom.common \
Makefile.common \
Makefile.nmake \
packet-ncp2222.inc \
@@ -143,6 +143,6 @@ MAINTAINERCLEANFILES = \
Makefile.in
checkapi:
- $(PERL) ../../tools/checkAPIs.pl -g abort -g termoutput \
+ $(PERL) ../../tools/checkAPIs.pl -g abort -g termoutput -build \
$(ALL_DISSECTORS_SRC) $(DISSECTOR_INCLUDES) \
packet-dcerpc-nt.c
diff --git a/epan/dissectors/Makefile.common b/epan/dissectors/Makefile.common
index 8f9e5f5fa9..23e110b4aa 100644
--- a/epan/dissectors/Makefile.common
+++ b/epan/dissectors/Makefile.common
@@ -23,7 +23,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-include Custom.nmake
+include Custom.common
# "BUILT_SOURCES" are built before any "make all" or "make check" targets.
BUILT_C_FILES = \
@@ -177,7 +177,7 @@ ASN1_DISSECTOR_SRC = \
#
# asn2wrs-generated ASN.1 dissectors with warnings.
-#
+# and idl2wrs-generated dissectors
DIRTY_ASN1_DISSECTOR_SRC = \
packet-ansi_map.c \
packet-gnm.c \
@@ -188,6 +188,7 @@ DIRTY_ASN1_DISSECTOR_SRC = \
packet-m3ap.c \
packet-nbap.c \
packet-p1.c \
+ packet-parlay.c \
packet-pcap.c \
packet-pkcs12.c \
packet-pres.c \
@@ -197,8 +198,11 @@ DIRTY_ASN1_DISSECTOR_SRC = \
packet-snmp.c \
packet-t124.c \
packet-t125.c \
+ packet-tango.c \
packet-tcap.c \
- packet-tetra.c
+ packet-tetra.c \
+ $(CUSTOM_DIRTY_ASN1_DISSECTOR_SRC)
+
#
# Dissectors without warnings.
@@ -242,7 +246,6 @@ DISSECTOR_SRC = \
packet-aim-stats.c \
packet-aim-translate.c \
packet-aim-userlookup.c \
- packet-airopeek.c \
packet-ajp13.c \
packet-alcap.c \
packet-amqp.c \
@@ -285,6 +288,7 @@ DISSECTOR_SRC = \
packet-bctp.c \
packet-beep.c \
packet-ber.c \
+ packet-bfcp.c \
packet-bfd.c \
packet-bgp.c \
packet-bittorrent.c \
@@ -342,7 +346,9 @@ DISSECTOR_SRC = \
packet-collectd.c \
packet-componentstatus.c \
packet-cops.c \
+ packet-coseventcomm.c \
packet-cosine.c \
+ packet-cosnaming.c \
packet-cpfi.c \
packet-cpha.c \
packet-csm-encaps.c \
@@ -437,6 +443,11 @@ DISSECTOR_SRC = \
packet-dlm3.c \
packet-dlsw.c \
packet-dmp.c \
+ packet-dmx.c \
+ packet-dmx-chan.c \
+ packet-dmx-test.c \
+ packet-dmx-text.c \
+ packet-dmx-sip.c \
packet-dnp.c \
packet-dns.c \
packet-dplay.c \
@@ -450,7 +461,14 @@ DISSECTOR_SRC = \
packet-dtpt.c \
packet-dua.c \
packet-dvb-data-mpe.c \
+ packet-dvb-ait.c \
+ packet-dvb-bat.c \
+ packet-dvb-eit.c \
packet-dvb-ipdc.c \
+ packet-dvb-nit.c \
+ packet-dvb-sdt.c \
+ packet-dvb-tdt.c \
+ packet-dvb-tot.c \
packet-dvbci.c \
packet-dvmrp.c \
packet-e100.c \
@@ -466,6 +484,7 @@ DISSECTOR_SRC = \
packet-ehdlc.c \
packet-ehs.c \
packet-eigrp.c \
+ packet-eiss.c \
packet-elcom.c \
packet-enc.c \
packet-enip.c \
@@ -482,6 +501,7 @@ DISSECTOR_SRC = \
packet-etherip.c \
packet-ethertype.c \
packet-etsi_card_app_toolkit.c \
+ packet-etv.c \
packet-evrc.c \
packet-exec.c \
packet-extreme.c \
@@ -523,6 +543,11 @@ DISSECTOR_SRC = \
packet-giop.c \
packet-git.c \
packet-glbp.c \
+ packet-gluster_cli.c \
+ packet-gluster_pmap.c \
+ packet-glusterd.c \
+ packet-glusterfs.c \
+ packet-glusterfs_hndsk.c \
packet-gmhdr.c \
packet-gmrp.c \
packet-gmr1_bcch.c \
@@ -570,6 +595,7 @@ DISSECTOR_SRC = \
packet-h263.c \
packet-h263p.c \
packet-h264.c \
+ packet-hartip.c \
packet-hazelcast.c \
packet-hci_h1.c \
packet-hci_h4.c \
@@ -604,8 +630,12 @@ DISSECTOR_SRC = \
packet-ieee1722.c \
packet-ieee17221.c \
packet-ieee80211.c \
+ packet-ieee80211-airopeek.c \
+ packet-ieee80211-netmon.c \
packet-ieee80211-prism.c \
packet-ieee80211-radio.c \
+ packet-ieee80211-radiotap.c \
+ packet-ieee80211-radiotap-iter.c \
packet-ieee80211-wlancap.c \
packet-ieee802154.c \
packet-ieee8021ah.c \
@@ -652,12 +682,14 @@ DISSECTOR_SRC = \
packet-ismacryp.c \
packet-ismp.c \
packet-isns.c \
+ packet-iso7816.c \
packet-isup.c \
packet-itdm.c \
packet-iua.c \
packet-iuup.c \
packet-iwarp-ddp-rdmap.c\
packet-iwarp-mpa.c \
+ packet-ixveriwave.c \
packet-jmirror.c \
packet-jpeg.c \
packet-json.c \
@@ -666,6 +698,7 @@ DISSECTOR_SRC = \
packet-k12.c \
packet-kadm5.c \
packet-kdp.c \
+ packet-kdsp.c \
packet-kerberos.c \
packet-kerberos4.c \
packet-kingfisher.c \
@@ -691,6 +724,7 @@ DISSECTOR_SRC = \
packet-lisp.c \
packet-llc.c \
packet-lldp.c \
+ packet-llrp.c \
packet-llt.c \
packet-lmi.c \
packet-lmp.c \
@@ -705,6 +739,7 @@ DISSECTOR_SRC = \
packet-m2tp.c \
packet-m2ua.c \
packet-m3ua.c \
+ packet-maap.c \
packet-mac-lte.c \
packet-mac-lte-framed.c \
packet-maccontrol.c \
@@ -725,16 +760,24 @@ DISSECTOR_SRC = \
packet-mip6.c \
packet-mmse.c \
packet-mndp.c \
+ packet-moldudp.c \
+ packet-moldudp64.c \
packet-mongo.c \
packet-mount.c \
packet-mp2t.c \
packet-mp4ves.c \
+ packet-mpeg-ca.c \
+ packet-mpeg-descriptor.c \
+ packet-mpeg-dsmcc.c \
packet-mpeg-pat.c \
+ packet-mpeg-pmt.c \
packet-mpeg-sect.c \
packet-mpeg1.c \
packet-mpls.c \
packet-mpls-echo.c \
packet-mpls-pm.c \
+ packet-mpls-psc.c \
+ packet-mpls-y1711.c \
packet-mq.c \
packet-mq-pcf.c \
packet-mrdisc.c \
@@ -775,11 +818,11 @@ DISSECTOR_SRC = \
packet-netbios.c \
packet-netdump.c \
packet-netflow.c \
- packet-netmon-802_11.c \
packet-netperfmeter.c \
packet-netsync.c \
packet-nettl.c \
packet-newmail.c \
+ packet-nflog.c \
packet-nfs.c \
packet-nfsacl.c \
packet-nfsauth.c \
@@ -798,10 +841,12 @@ DISSECTOR_SRC = \
packet-null.c \
packet-nwmtp.c \
packet-oicq.c \
+ packet-oipf.c \
packet-olsr.c \
packet-omapi.c \
packet-omron-fins.c \
packet-opensafety.c \
+ packet-openwire.c \
packet-osi-options.c \
packet-osi.c \
packet-ositp.c \
@@ -817,6 +862,7 @@ DISSECTOR_SRC = \
packet-pcnfsd.c \
packet-pcp.c \
packet-pdcp-lte.c \
+ packet-peekremote.c \
packet-per.c \
packet-pflog.c \
packet-pgm.c \
@@ -828,6 +874,7 @@ DISSECTOR_SRC = \
packet-pnrp.c \
packet-pop.c \
packet-portmap.c \
+ packet-ppcap.c \
packet-ppi.c \
packet-ppi-antenna.c \
packet-ppi-geolocation-common.c \
@@ -856,8 +903,6 @@ DISSECTOR_SRC = \
packet-quake2.c \
packet-quake3.c \
packet-quakeworld.c \
- packet-radiotap.c \
- packet-radiotap-iter.c \
packet-radius.c \
packet-radius_packetcable.c \
packet-raw.c \
@@ -871,6 +916,7 @@ DISSECTOR_SRC = \
packet-retix-bpdu.c \
packet-rfc2190.c \
packet-rfid-felica.c \
+ packet-rfid-pn532.c \
packet-rgmp.c \
packet-rip.c \
packet-ripng.c \
@@ -928,6 +974,7 @@ DISSECTOR_SRC = \
packet-scsi-smc.c \
packet-scsi-ssc.c \
packet-sctp.c \
+ packet-sdh.c \
packet-sdlc.c \
packet-sdp.c \
packet-sebek.c \
@@ -977,8 +1024,9 @@ DISSECTOR_SRC = \
packet-stun.c \
packet-sua.c \
packet-symantec.c \
+ packet-sync.c \
packet-synergy.c \
- packet-synphasor.c \
+ packet-synphasor.c \
packet-syslog.c \
packet-t30.c \
packet-tacacs.c \
@@ -1036,6 +1084,8 @@ DISSECTOR_SRC = \
packet-v120.c \
packet-v52.c \
packet-v5ua.c \
+ packet-v5ef.c \
+ packet-v5dl.c \
packet-vcdu.c \
packet-vicp.c \
packet-vines.c \
@@ -1051,10 +1101,12 @@ DISSECTOR_SRC = \
packet-vxlan.c \
packet-wai.c \
packet-wap.c \
+ packet-waveagent.c \
packet-wassp.c \
packet-wbxml.c \
packet-wccp.c \
packet-wcp.c \
+ packet-websocket.c \
packet-wfleet-hdlc.c \
packet-who.c \
packet-wifi-p2p.c \
@@ -1064,6 +1116,7 @@ DISSECTOR_SRC = \
packet-wol.c \
packet-wow.c \
packet-wps.c \
+ packet-wreth.c \
packet-wsmp.c \
packet-wsp.c \
packet-wtls.c \
@@ -1084,6 +1137,7 @@ DISSECTOR_SRC = \
packet-xot.c \
packet-xtp.c \
packet-xyplex.c \
+ packet-yami.c \
packet-yhoo.c \
packet-ymsg.c \
packet-ypbind.c \
@@ -1116,12 +1170,10 @@ DIRTY_DISSECTOR_SRC = \
#
DISSECTOR_INCLUDES = \
$(PIDL_DISSECTOR_INCLUDES) \
- packet-acn.h \
packet-acp133.h \
packet-acse.h \
packet-actrace.h \
packet-afp.h \
- packet-afs.h \
packet-aim.h \
packet-alcap.h \
packet-ansi_a.h \
@@ -1130,14 +1182,11 @@ DISSECTOR_INCLUDES = \
packet-ap1394.h \
packet-arcnet.h \
packet-arp.h \
- packet-assa_r3_public.h \
packet-atalk.h \
packet-atm.h \
packet-bacapp.h \
packet-ber.h \
packet-bfd.h \
- packet-bgp.h \
- packet-bootparams.h \
packet-bssap.h \
packet-bssgp.h \
packet-bthci_acl.h \
@@ -1150,7 +1199,6 @@ DISSECTOR_INCLUDES = \
packet-cell_broadcast.h \
packet-charging_ase.h \
packet-chdlc.h \
- packet-cimd.h \
packet-cip.h \
packet-cipsafety.h \
packet-clearcase.h \
@@ -1226,6 +1274,7 @@ DISSECTOR_INCLUDES = \
packet-frame.h \
packet-ftam.h \
packet-giop.h \
+ packet-gluster.h \
packet-gmr1_common.h \
packet-gnm.h \
packet-gnutella.h \
@@ -1237,6 +1286,7 @@ DISSECTOR_INCLUDES = \
packet-gsm_sms.h \
packet-gssapi.h \
packet-gtp.h \
+ packet-gtpv2.h \
packet-h223.h \
packet-h225.h \
packet-h235.h \
@@ -1257,6 +1307,9 @@ DISSECTOR_INCLUDES = \
packet-idmp.h \
packet-idp.h \
packet-ieee80211.h \
+ packet-ieee80211-radiotap.h \
+ packet-ieee80211-radiotap-iter.h \
+ packet-ieee80211-radiotap-defs.h \
packet-ieee802154.h \
packet-ieee8021ah.h \
packet-ieee8023.h \
@@ -1297,6 +1350,8 @@ DISSECTOR_INCLUDES = \
packet-mms.h \
packet-mount.h \
packet-mp4ves.h \
+ packet-mpeg-descriptor.h \
+ packet-mpeg-sect.h \
packet-mpls.h \
packet-mq.h \
packet-mrdisc.h \
@@ -1349,13 +1404,9 @@ DISSECTOR_INCLUDES = \
packet-q931.h \
packet-q932.h \
packet-qsig.h \
- packet-radiotap.h \
- packet-radiotap-iter.h \
- packet-radiotap-defs.h \
packet-radius.h \
packet-ranap.h \
packet-raw.h \
- packet-rdp.h \
packet-rdt.h \
packet-reload.h \
packet-rgmp.h \
diff --git a/epan/dissectors/Makefile.nmake b/epan/dissectors/Makefile.nmake
index 3e6a1d9c2a..70087fae78 100644
--- a/epan/dissectors/Makefile.nmake
+++ b/epan/dissectors/Makefile.nmake
@@ -7,8 +7,6 @@ include ..\..\config.nmake
############### no need to modify below this line #########
-include Custom.nmake
-
include Makefile.common
CFLAGS= $(WARNINGS_ARE_ERRORS) $(STANDARD_CFLAGS) \
@@ -115,6 +113,6 @@ maintainer-clean: distclean
rm -f $(GENERATED_FILES)
checkapi:
- $(PERL) ../../tools/checkAPIs.pl -g abort -g termoutput \
+ $(PERL) ../../tools/checkAPIs.pl -g abort -g termoutput -build \
$(ALL_DISSECTORS_SRC) $(DISSECTOR_INCLUDES) \
packet-dcerpc-nt.c
diff --git a/epan/dissectors/dcerpc/drsuapi/packet-dcerpc-drsuapi-template.c b/epan/dissectors/dcerpc/drsuapi/packet-dcerpc-drsuapi-template.c
index fbc29754c5..50d726df77 100644
--- a/epan/dissectors/dcerpc/drsuapi/packet-dcerpc-drsuapi-template.c
+++ b/epan/dissectors/dcerpc/drsuapi/packet-dcerpc-drsuapi-template.c
@@ -49,10 +49,8 @@ ETH_ETT
static int
ucarray_drsuapi_dissect_DsReplicaSyncRequest1Info_nc_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- header_field_info *hfinfo;
static guint32 len;
dcerpc_info *di;
- char *s;
int old_offset;
di=pinfo->private_data;
@@ -72,16 +70,9 @@ ucarray_drsuapi_dissect_DsReplicaSyncRequest1Info_nc_dn(tvbuff_t *tvb, int offse
ALIGN_TO_2_BYTES;
- s = tvb_get_unicode_string(tvb, offset, len*2, ENC_LITTLE_ENDIAN);
if (tree && len) {
- hfinfo = proto_registrar_get_nth(hf_drsuapi_DsReplicaSyncRequest1Info_nc_dn);
- if (hfinfo->type == FT_STRING) {
- proto_tree_add_string(tree, hf_drsuapi_DsReplicaSyncRequest1Info_nc_dn, tvb, offset,
- len, s);
- } else {
- proto_tree_add_item(tree, hf_drsuapi_DsReplicaSyncRequest1Info_nc_dn, tvb, offset,
- len, DREP_ENC_INTEGER(drep));
- }
+ proto_tree_add_item(tree, hf_drsuapi_DsReplicaSyncRequest1Info_nc_dn, tvb, offset,
+ len*2, ENC_UTF_16|ENC_LITTLE_ENDIAN);
}
offset+=2*len;
diff --git a/epan/dissectors/dcerpc/idl2wrs.c b/epan/dissectors/dcerpc/idl2wrs.c
index ada09deb31..cda1ea1e84 100644
--- a/epan/dissectors/dcerpc/idl2wrs.c
+++ b/epan/dissectors/dcerpc/idl2wrs.c
@@ -1219,7 +1219,7 @@ find_type(char *name)
FPRINTF(eth_code, " return offset;\n");
FPRINTF(eth_code, "}\n");
FPRINTF(eth_code, "\n");
- tmptype=register_new_type("NTTIME", dissectorname, "FT_ABSOLUTE_TIME", "BASE_NONE", "0", "NULL", 4);
+ tmptype=register_new_type("NTTIME", dissectorname, "FT_ABSOLUTE_TIME", "ABSOLUTE_TIME_LOCAL", "0", "NULL", 4);
} else if(!strcmp(name,"NTTIME_hyper")){
/* 8 bytes, aligned to 8 bytes */
sprintf(dissectorname, "%s_dissect_%s", ifname, name);
@@ -1235,7 +1235,7 @@ find_type(char *name)
FPRINTF(eth_code, " return offset;\n");
FPRINTF(eth_code, "}\n");
FPRINTF(eth_code, "\n");
- tmptype=register_new_type("NTTIME_hyper", dissectorname, "FT_ABSOLUTE_TIME", "BASE_NONE", "0", "NULL", 4);
+ tmptype=register_new_type("NTTIME_hyper", dissectorname, "FT_ABSOLUTE_TIME", "ABSOLUTE_TIME_LOCAL", "0", "NULL", 4);
} else if(!strcmp(name,"NTTIME_1sec")){
/* 8 bytes, aligned to 8 bytes */
sprintf(dissectorname, "%s_dissect_%s", ifname, name);
@@ -1251,7 +1251,7 @@ find_type(char *name)
FPRINTF(eth_code, " return offset;\n");
FPRINTF(eth_code, "}\n");
FPRINTF(eth_code, "\n");
- tmptype=register_new_type("NTTIME_1sec", dissectorname, "FT_ABSOLUTE_TIME", "BASE_NONE", "0", "NULL", 4);
+ tmptype=register_new_type("NTTIME_1sec", dissectorname, "FT_ABSOLUTE_TIME", "ABSOLUTE_TIME_LOCAL", "0", "NULL", 4);
} else if(!strcmp(name,"udlong")){
/* 8 bytes, aligned to 4 bytes */
sprintf(dissectorname, "%s_dissect_%s", ifname, name);
@@ -1311,7 +1311,7 @@ find_type(char *name)
FPRINTF(eth_code, " return offset;\n");
FPRINTF(eth_code, "}\n");
FPRINTF(eth_code, "\n");
- tmptype=register_new_type("time_t", dissectorname, "FT_ABSOLUTE_TIME", "BASE_NONE", "0", "NULL", 4);
+ tmptype=register_new_type("time_t", dissectorname, "FT_ABSOLUTE_TIME", "ABSOLUTE_TIME_LOCAL", "0", "NULL", 4);
} else if(!strcmp(name,"SID")){
sprintf(dissectorname, "%s_dissect_%s", ifname, name);
FPRINTF(NULL,"\nAutogenerating built-in type:%s\n------------\n",name);
@@ -1553,7 +1553,7 @@ static void parsetypedefstruct(int pass)
}
FPRINTF(eth_code, " old_offset=offset;\n");
FPRINTF(eth_code, " if(parent_tree){\n");
- FPRINTF(eth_code, " item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);\n");
+ FPRINTF(eth_code, " item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);\n");
FPRINTF(eth_code, " tree=proto_item_add_subtree(item, ett_%s_%s);\n", ifname, struct_name);
FPRINTF(eth_code, " }\n");
FPRINTF(eth_code, "\n");
@@ -1988,7 +1988,7 @@ static void parsetypedefbitmap(int pass)
}
FPRINTF(eth_code, "\n");
FPRINTF(eth_code, " if(parent_tree){\n");
- FPRINTF(eth_code, " item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, %d, TRUE);\n", alignment);
+ FPRINTF(eth_code, " item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, %d, ENC_LITTLE_ENDIAN);\n", alignment);
FPRINTF(eth_code, " tree=proto_item_add_subtree(item, ett_%s_%s);\n", ifname, bitmap_name);
FPRINTF(eth_code, " }\n");
FPRINTF(eth_code, "\n");
@@ -2769,6 +2769,8 @@ static void parsetypedefenum(void)
{
token_item_t *ti;
enum_list_t *enum_list, *el, *lastel;
+ char *p;
+ long val;
int eval, enumsize;
char dissectorname[256], valsstring[256], hfvalsstring[256];
@@ -2847,7 +2849,12 @@ static void parsetypedefenum(void)
if(!strcmp(ti->str,"=")){
ti=ti->next;
/* grab value */
- el->val=atoi(ti->str);
+ val=strtol(ti->str,&p,0);
+ if (p==ti->str||*p) {
+ fprintf(stderr, "ERROR: typedefenum value is not a number\n");
+ Exit(10);
+ }
+ el->val=val;
ti=ti->next;
} else {
el->val=eval;
diff --git a/epan/dissectors/dissectors.vcproj b/epan/dissectors/dissectors.vcproj
index 15240b1f08..dec7d6bbf6 100644
--- a/epan/dissectors/dissectors.vcproj
+++ b/epan/dissectors/dissectors.vcproj
@@ -1,115 +1,115 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9,00"
- Name="dissectors"
- ProjectGUID="{7D31A4A1-6663-4935-B28D-E179D0D14023}"
- Keyword="MakeFileProj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="0"
- >
- <Tool
- Name="VCNMakeTool"
- BuildCommandLine=""
- ReBuildCommandLine=""
- CleanCommandLine=""
- Output="dissectors.exe"
- PreprocessorDefinitions="WIN32;_DEBUG"
- IncludeSearchPath=""
- ForcedIncludes=""
- AssemblySearchPath=""
- ForcedUsingAssemblies=""
- CompileAsManaged=""
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="0"
- >
- <Tool
- Name="VCNMakeTool"
- BuildCommandLine=""
- ReBuildCommandLine=""
- CleanCommandLine=""
- Output="dissectors.exe"
- PreprocessorDefinitions="WIN32;NDEBUG"
- IncludeSearchPath=""
- ForcedIncludes=""
- AssemblySearchPath=""
- ForcedUsingAssemblies=""
- CompileAsManaged=""
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
- >
- <File
- RelativePath=".\packet-dcerpc.c"
- >
- </File>
- <File
- RelativePath=".\packet-dcp.c"
- >
- </File>
- <File
- RelativePath=".\packet-dmp.c"
- >
- </File>
- <File
- RelativePath=".\packet-tcp.c"
- >
- </File>
- <File
- RelativePath=".\packet-udp.c"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
- >
- <File
- RelativePath=".\packet-dcerpc.h"
- >
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
- >
- </Filter>
- <File
- RelativePath=".\Makefile.nmake"
- >
- </File>
- <File
- RelativePath=".\readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="dissectors"
+ ProjectGUID="{7D31A4A1-6663-4935-B28D-E179D0D14023}"
+ Keyword="MakeFileProj"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="0"
+ >
+ <Tool
+ Name="VCNMakeTool"
+ BuildCommandLine=""
+ ReBuildCommandLine=""
+ CleanCommandLine=""
+ Output="dissectors.exe"
+ PreprocessorDefinitions="WIN32;_DEBUG"
+ IncludeSearchPath=""
+ ForcedIncludes=""
+ AssemblySearchPath=""
+ ForcedUsingAssemblies=""
+ CompileAsManaged=""
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="0"
+ >
+ <Tool
+ Name="VCNMakeTool"
+ BuildCommandLine=""
+ ReBuildCommandLine=""
+ CleanCommandLine=""
+ Output="dissectors.exe"
+ PreprocessorDefinitions="WIN32;NDEBUG"
+ IncludeSearchPath=""
+ ForcedIncludes=""
+ AssemblySearchPath=""
+ ForcedUsingAssemblies=""
+ CompileAsManaged=""
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath=".\packet-dcerpc.c"
+ >
+ </File>
+ <File
+ RelativePath=".\packet-dcp.c"
+ >
+ </File>
+ <File
+ RelativePath=".\packet-dmp.c"
+ >
+ </File>
+ <File
+ RelativePath=".\packet-tcp.c"
+ >
+ </File>
+ <File
+ RelativePath=".\packet-udp.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ <File
+ RelativePath=".\packet-dcerpc.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ <File
+ RelativePath=".\Makefile.nmake"
+ >
+ </File>
+ <File
+ RelativePath=".\readme.txt"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/epan/dissectors/packet-2dparityfec.c b/epan/dissectors/packet-2dparityfec.c
index b88ce0270b..fcf72344d9 100644
--- a/epan/dissectors/packet-2dparityfec.c
+++ b/epan/dissectors/packet-2dparityfec.c
@@ -164,154 +164,154 @@ void proto_register_2dparityfec(void)
module_t *module_2dparityfec;
/* Payload type definitions */
-static hf_register_info hf[] = {
- {&hf_2dparityfec_snbase_low,
- { "SNBase low",
- "2dparityfec.snbase_low",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL,
- HFILL} },
-
- {&hf_2dparityfec_length_recovery,
- { "Length recovery",
- "2dparityfec.lr",
- FT_UINT16,
- BASE_HEX,
- NULL,
- 0x0,
- NULL,
- HFILL} },
-
- {&hf_2dparityfec_rfc2733_ext,
- { "RFC2733 Extension (E)",
- "2dparityfec.e",
- FT_BOOLEAN,
- 8,
- NULL,
- 0x80,
- NULL,
- HFILL} },
-
- {&hf_2dparityfec_pt_recovery,
- { "Payload Type recovery",
- "2dparityfec.ptr",
- FT_UINT8,
- BASE_HEX,
- NULL,
- 0x7f,
- NULL,
- HFILL} },
-
- {&hf_2dparityfec_mask,
- { "Mask",
- "2dparityfec.mask",
- /*FT_UINT32*/FT_UINT24,
- BASE_HEX,
- NULL,
- /*0x00ffffff*/0x0,
- NULL,
- HFILL} },
-
- {&hf_2dparityfec_ts_recovery,
- { "Timestamp recovery",
- "2dparityfec.tsr",
- FT_UINT32,
- BASE_HEX,
- NULL,
- 0x0,
- NULL,
- HFILL} },
-
- {&hf_2dparityfec_ts_pro_mpeg_ext,
- { "Pro-MPEG Extension (X)",
- "2dparityfec.x",
- FT_BOOLEAN,
- 8,
- NULL,
- 0x80,
- NULL,
- HFILL} },
-
- {&hf_2dparityfec_row_flag,
- { "Row FEC (D)",
- "2dparityfec.d",
- FT_BOOLEAN,
- 8,
- NULL,
- 0x40,
- NULL,
- HFILL} },
-
- {&hf_2dparityfec_type,
- { "Type",
- "2dparityfec.type",
- FT_UINT8,
- BASE_DEC,
- VALS(fec_type_names),
- 0x38,
- NULL,
- HFILL} },
-
- {&hf_2dparityfec_index,
- { "Index",
- "2dparityfec.index",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x07,
- NULL,
- HFILL} },
-
- {&hf_2dparityfec_offset,
- { "Offset",
- "2dparityfec.offset",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- NULL,
- HFILL} },
-
- {&hf_2dparityfec_na,
- { "NA",
- "2dparityfec.na",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- NULL,
- HFILL} },
-
- {&hf_2dparityfec_snbase_ext,
- { "SNBase ext",
- "2dparityfec.snbase_ext",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- NULL,
- HFILL} },
-
- {&hf_2dparityfec_payload,
- { "FEC Payload",
- "2dparityfec.payload",
- FT_BYTES,
- BASE_NONE,
- NULL,
- 0x0,
- NULL,
- HFILL} }
-
-
-};
+ static hf_register_info hf[] = {
+ {&hf_2dparityfec_snbase_low,
+ { "SNBase low",
+ "2dparityfec.snbase_low",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL,
+ HFILL} },
+
+ {&hf_2dparityfec_length_recovery,
+ { "Length recovery",
+ "2dparityfec.lr",
+ FT_UINT16,
+ BASE_HEX,
+ NULL,
+ 0x0,
+ NULL,
+ HFILL} },
+
+ {&hf_2dparityfec_rfc2733_ext,
+ { "RFC2733 Extension (E)",
+ "2dparityfec.e",
+ FT_BOOLEAN,
+ 8,
+ NULL,
+ 0x80,
+ NULL,
+ HFILL} },
+
+ {&hf_2dparityfec_pt_recovery,
+ { "Payload Type recovery",
+ "2dparityfec.ptr",
+ FT_UINT8,
+ BASE_HEX,
+ NULL,
+ 0x7f,
+ NULL,
+ HFILL} },
+
+ {&hf_2dparityfec_mask,
+ { "Mask",
+ "2dparityfec.mask",
+ /*FT_UINT32*/FT_UINT24,
+ BASE_HEX,
+ NULL,
+ /*0x00ffffff*/0x0,
+ NULL,
+ HFILL} },
+
+ {&hf_2dparityfec_ts_recovery,
+ { "Timestamp recovery",
+ "2dparityfec.tsr",
+ FT_UINT32,
+ BASE_HEX,
+ NULL,
+ 0x0,
+ NULL,
+ HFILL} },
+
+ {&hf_2dparityfec_ts_pro_mpeg_ext,
+ { "Pro-MPEG Extension (X)",
+ "2dparityfec.x",
+ FT_BOOLEAN,
+ 8,
+ NULL,
+ 0x80,
+ NULL,
+ HFILL} },
+
+ {&hf_2dparityfec_row_flag,
+ { "Row FEC (D)",
+ "2dparityfec.d",
+ FT_BOOLEAN,
+ 8,
+ NULL,
+ 0x40,
+ NULL,
+ HFILL} },
+
+ {&hf_2dparityfec_type,
+ { "Type",
+ "2dparityfec.type",
+ FT_UINT8,
+ BASE_DEC,
+ VALS(fec_type_names),
+ 0x38,
+ NULL,
+ HFILL} },
+
+ {&hf_2dparityfec_index,
+ { "Index",
+ "2dparityfec.index",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x07,
+ NULL,
+ HFILL} },
+
+ {&hf_2dparityfec_offset,
+ { "Offset",
+ "2dparityfec.offset",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL,
+ HFILL} },
+
+ {&hf_2dparityfec_na,
+ { "NA",
+ "2dparityfec.na",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL,
+ HFILL} },
+
+ {&hf_2dparityfec_snbase_ext,
+ { "SNBase ext",
+ "2dparityfec.snbase_ext",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL,
+ HFILL} },
+
+ {&hf_2dparityfec_payload,
+ { "FEC Payload",
+ "2dparityfec.payload",
+ FT_BYTES,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ NULL,
+ HFILL} }
+
+
+ };
/* Setup protocol subtree array */
-static gint *ett[] = {
- &ett_2dparityfec,
-};
+ static gint *ett[] = {
+ &ett_2dparityfec,
+ };
proto_2dparityfec = proto_register_protocol(
"Pro-MPEG Code of Practice #3 release 2 FEC Protocol", /* name */
@@ -325,10 +325,10 @@ static gint *ett[] = {
proto_reg_handoff_2dparityfec);
prefs_register_bool_preference(module_2dparityfec, "enable",
- "Decode Pro-MPEG FEC on RTP dynamic payload type 96",
- "Enable this option to recognise all traffic on RTP dynamic payload type 96 (0x60) "
- "as FEC data corresponding to Pro-MPEG Code of Practice #3 release 2",
- &dissect_fec);
+ "Decode Pro-MPEG FEC on RTP dynamic payload type 96",
+ "Enable this option to recognise all traffic on RTP dynamic payload type 96 (0x60) "
+ "as FEC data corresponding to Pro-MPEG Code of Practice #3 release 2",
+ &dissect_fec);
}
@@ -353,10 +353,10 @@ void proto_reg_handoff_2dparityfec(void)
*
* Local Variables:
* c-basic-offset: 3
- * tab-width: 3
+ * tab-width: 8
* indent-tabs-mode: nil
* End:
*
- * ex: set shiftwidth=3 tabstop=3 expandtab:
- * :indentSize=3:tabSize=3:noTabs=true:
+ * ex: set shiftwidth=3 tabstop=8 expandtab:
+ * :indentSize=3:tabSize=8:noTabs=true:
*/
diff --git a/epan/dissectors/packet-3g-a11.c b/epan/dissectors/packet-3g-a11.c
index 8d9ee5b608..e57ef27806 100644
--- a/epan/dissectors/packet-3g-a11.c
+++ b/epan/dissectors/packet-3g-a11.c
@@ -448,15 +448,15 @@ static const value_string a11_rohc_profile_vals[] =
Last Byte: [F] [Digit N]
*/
static void
-decode_sse(proto_tree* ext_tree, tvbuff_t* tvb, int offset, guint ext_len)
+decode_sse(proto_tree *ext_tree, tvbuff_t *tvb, int offset, guint ext_len)
{
- guint8 msid_len;
- guint8 msid_start_offset;
- guint8 msid_num_digits;
- guint8 msid_index;
- char *msid_digits;
- const char* p_msid;
- gboolean odd_even_ind;
+ guint8 msid_len;
+ guint8 msid_start_offset;
+ guint8 msid_num_digits;
+ guint8 msid_index;
+ char *msid_digits;
+ const char *p_msid;
+ gboolean odd_even_ind;
/* Decode Protocol Type */
if (ext_len < 2)
@@ -536,13 +536,13 @@ decode_sse(proto_tree* ext_tree, tvbuff_t* tvb, int offset, guint ext_len)
return;
}
- msid_digits = ep_alloc(A11_MSG_MSID_LEN_MAX+2);
+ msid_digits = (char *)ep_alloc(A11_MSG_MSID_LEN_MAX+2);
msid_start_offset = offset;
- if(msid_len > A11_MSG_MSID_ELEM_LEN_MAX)
+ if (msid_len > A11_MSG_MSID_ELEM_LEN_MAX)
{
p_msid = "MSID is too long";
- }else if(msid_len == 0)
+ }else if (msid_len == 0)
{
p_msid = "MSID is too short";
}else
@@ -560,7 +560,7 @@ decode_sse(proto_tree* ext_tree, tvbuff_t* tvb, int offset, guint ext_len)
odd_even_ind = (msid_digits[0] == '1');
- if(odd_even_ind)
+ if (odd_even_ind)
{
msid_num_digits = ((msid_len-1) * 2) + 1;
}else
@@ -589,7 +589,7 @@ dissect_a11_radius( tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *t
/* None of this really matters if we don't have a tree */
if (!tree)
- return;
+ return;
/* return if length of extension is not valid */
if (tvb_reported_length_remaining(tvb, offset) < 12) {
@@ -600,39 +600,40 @@ dissect_a11_radius( tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *t
radius_tree = proto_item_add_subtree(ti, ett_a11_radiuses);
- dissect_attribute_value_pairs(radius_tree, pinfo, tvb, offset, app_len-2);
+ dissect_attribute_value_pairs(radius_tree, pinfo, tvb, offset, app_len-2);
}
/* X.S0011-005-D v2.0 Service Option Profile */
-static const gchar *dissect_3gpp2_service_option_profile(proto_tree * tree, tvbuff_t * tvb, packet_info* pinfo _U_)
+static const gchar *
+dissect_3gpp2_service_option_profile(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_)
{
- int offset = 0;
- guint8 sub_type, sub_type_length;
-
- /* Maximum service connections/Link Flows total 32 bit*/
- proto_tree_add_item(tree, hf_a11_serv_opt_prof_max_serv, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset+=4;
-
- while (tvb_length_remaining(tvb,offset)>0){
- sub_type_length = tvb_get_guint8(tvb,offset+1);
-
- sub_type = tvb_get_guint8(tvb,offset);
- proto_tree_add_item(tree, hf_a11_sub_type, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
- proto_tree_add_item(tree, hf_a11_sub_type_length, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
- if(sub_type==1){
- proto_tree_add_item(tree, hf_a11_serv_opt, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
- /* Max number of service instances of Service Option n */
- proto_tree_add_item(tree, hf_a11_max_num_serv_opt, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
- }
-
- offset = offset+sub_type_length-2;
- }
+ int offset = 0;
+ guint8 sub_type, sub_type_length;
+
+ /* Maximum service connections/Link Flows total 32 bit*/
+ proto_tree_add_item(tree, hf_a11_serv_opt_prof_max_serv, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset+=4;
+
+ while (tvb_length_remaining(tvb,offset)>0){
+ sub_type_length = tvb_get_guint8(tvb,offset+1);
+
+ sub_type = tvb_get_guint8(tvb,offset);
+ proto_tree_add_item(tree, hf_a11_sub_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_a11_sub_type_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ if (sub_type==1){
+ proto_tree_add_item(tree, hf_a11_serv_opt, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ /* Max number of service instances of Service Option n */
+ proto_tree_add_item(tree, hf_a11_max_num_serv_opt, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ }
+
+ offset = offset+sub_type_length-2;
+ }
return "";
@@ -646,186 +647,188 @@ static const value_string a11_aut_flow_prof_subtype_vals[] = {
};
/* X.S0011-005-D v2.0 Authorized Flow Profile IDs for the User */
-static const gchar *dissect_3gpp2_radius_aut_flow_profile_ids(proto_tree * tree, tvbuff_t * tvb, packet_info* pinfo _U_)
+static const gchar *
+dissect_3gpp2_radius_aut_flow_profile_ids(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_)
{
- proto_tree* sub_tree;
- int offset = 0;
- proto_item *item;
- guint8 sub_type, sub_type_length;
- guint32 value;
-
- while (tvb_length_remaining(tvb,offset)>0){
- sub_type = tvb_get_guint8(tvb,offset);
- sub_type_length = tvb_get_guint8(tvb,offset+1);
- /* value is 2 octets */
- value = tvb_get_ntohs(tvb,offset+2);
- item = proto_tree_add_text(tree, tvb, offset, sub_type_length, "%s = %u",
- val_to_str(sub_type, a11_aut_flow_prof_subtype_vals, "Unknown"), value);
- sub_tree = proto_item_add_subtree(item, ett_a11_aut_flow_profile_ids);
-
- proto_tree_add_item(sub_tree, hf_a11_aut_flow_prof_sub_type, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
- proto_tree_add_item(sub_tree, hf_a11_aut_flow_prof_sub_type_len, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
- proto_tree_add_item(sub_tree, hf_a11_aut_flow_prof_sub_type_value, tvb, offset, 2, ENC_BIG_ENDIAN);
-
- offset = offset+sub_type_length-2;
- }
+ proto_tree *sub_tree;
+ int offset = 0;
+ proto_item *item;
+ guint8 sub_type, sub_type_length;
+ guint32 value;
+
+ while (tvb_length_remaining(tvb,offset)>0){
+ sub_type = tvb_get_guint8(tvb,offset);
+ sub_type_length = tvb_get_guint8(tvb,offset+1);
+ /* value is 2 octets */
+ value = tvb_get_ntohs(tvb,offset+2);
+ item = proto_tree_add_text(tree, tvb, offset, sub_type_length, "%s = %u",
+ val_to_str(sub_type, a11_aut_flow_prof_subtype_vals, "Unknown"), value);
+ sub_tree = proto_item_add_subtree(item, ett_a11_aut_flow_profile_ids);
+
+ proto_tree_add_item(sub_tree, hf_a11_aut_flow_prof_sub_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(sub_tree, hf_a11_aut_flow_prof_sub_type_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(sub_tree, hf_a11_aut_flow_prof_sub_type_value, tvb, offset, 2, ENC_BIG_ENDIAN);
+
+ offset = offset+sub_type_length-2;
+ }
return "";
}
/* Code to dissect Additional Session Info */
-static void dissect_ase(tvbuff_t* tvb, int offset, guint ase_len, proto_tree* ext_tree)
+static void
+dissect_ase(tvbuff_t *tvb, int offset, guint ase_len, proto_tree *ext_tree)
{
- guint clen = 0; /* consumed length */
+ guint clen = 0; /* consumed length */
- while(clen < ase_len)
- {
- proto_tree* exts_tree;
- guint8 srid = tvb_get_guint8(tvb, offset+1);
- guint16 service_option =tvb_get_ntohs(tvb,offset+2);
- proto_item *ti;
- guint8 entry_lenght;
- int entry_start_offset;
-
- /* Entry Length */
- entry_start_offset = offset;
- entry_lenght = tvb_get_guint8(tvb, offset);
+ while (clen < ase_len)
+ {
+ proto_tree *exts_tree;
+ guint8 srid = tvb_get_guint8(tvb, offset+1);
+ guint16 service_option = tvb_get_ntohs(tvb, offset+2);
+ proto_item *ti;
+ guint8 entry_lenght;
+ int entry_start_offset;
- if(registration_request_msg && (service_option==64 || service_option==67)){
- if(service_option == 67){
- ti = proto_tree_add_text(ext_tree, tvb, offset, entry_lenght+1, "GRE Key Entry (SRID: %d)", srid);
- } else if(service_option== 64){
- ti = proto_tree_add_text(ext_tree, tvb, offset, entry_lenght+1, "GRE Key Entry (SRID: %d)", srid);
- } else {
- proto_tree_add_text(ext_tree, tvb, offset, entry_lenght+1, "Unknown service option %u (SRID: %d)", service_option, srid);
- clen+=entry_lenght+1;
- continue;
- }
- }else{
- ti = proto_tree_add_text(ext_tree, tvb, offset, entry_lenght, "GRE Key Entry (SRID: %d)", srid);
- }
+ /* Entry Length */
+ entry_start_offset = offset;
+ entry_lenght = tvb_get_guint8(tvb, offset);
+
+ if (registration_request_msg && (service_option==64 || service_option==67)){
+ if (service_option == 67){
+ ti = proto_tree_add_text(ext_tree, tvb, offset, entry_lenght+1, "GRE Key Entry (SRID: %d)", srid);
+ } else if (service_option== 64){
+ ti = proto_tree_add_text(ext_tree, tvb, offset, entry_lenght+1, "GRE Key Entry (SRID: %d)", srid);
+ } else {
+ proto_tree_add_text(ext_tree, tvb, offset, entry_lenght+1, "Unknown service option %u (SRID: %d)", service_option, srid);
+ clen+=entry_lenght+1;
+ continue;
+ }
+ }else{
+ ti = proto_tree_add_text(ext_tree, tvb, offset, entry_lenght, "GRE Key Entry (SRID: %d)", srid);
+ }
- exts_tree = proto_item_add_subtree(ti, ett_a11_ase);
+ exts_tree = proto_item_add_subtree(ti, ett_a11_ase);
- proto_tree_add_item(exts_tree, hf_a11_ase_len_type, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
+ proto_tree_add_item(exts_tree, hf_a11_ase_len_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
- /* SRID */
- proto_tree_add_item(exts_tree, hf_a11_ase_srid_type, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
+ /* SRID */
+ proto_tree_add_item(exts_tree, hf_a11_ase_srid_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
- /* Service Option */
- proto_tree_add_item(exts_tree, hf_a11_ase_servopt_type, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset+=2;
+ /* Service Option */
+ proto_tree_add_item(exts_tree, hf_a11_ase_servopt_type, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
- /* GRE Protocol Type*/
- proto_tree_add_item(exts_tree, hf_a11_ase_gre_proto_type, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset+=2;
+ /* GRE Protocol Type*/
+ proto_tree_add_item(exts_tree, hf_a11_ase_gre_proto_type, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
- /* GRE Key */
- proto_tree_add_item(exts_tree, hf_a11_ase_gre_key, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset+=4;
+ /* GRE Key */
+ proto_tree_add_item(exts_tree, hf_a11_ase_gre_key, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset+=4;
- /* PCF IP Address */
- proto_tree_add_item(exts_tree, hf_a11_ase_pcf_addr_key, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset+=4;
+ /* PCF IP Address */
+ proto_tree_add_item(exts_tree, hf_a11_ase_pcf_addr_key, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset+=4;
- if(registration_request_msg){
- if(service_option == 0x0043){
- proto_item* tl;
- proto_tree* extv_tree;
- guint8 profile_count=tvb_get_guint8(tvb, offset+6);
- guint8 profile_index=0;
- guint8 reverse_profile_count;
+ if (registration_request_msg){
+ if (service_option == 0x0043){
+ proto_item *tl;
+ proto_tree *extv_tree;
+ guint8 profile_count=tvb_get_guint8(tvb, offset+6);
+ guint8 profile_index=0;
+ guint8 reverse_profile_count;
- proto_item* tj = proto_tree_add_text(exts_tree, tvb, offset,6+(profile_count*2)+1, "Forward ROHC Info");
+ proto_item *tj = proto_tree_add_text(exts_tree, tvb, offset,6+(profile_count*2)+1, "Forward ROHC Info");
- proto_tree* extt_tree = proto_item_add_subtree(tj, ett_a11_forward_rohc);
+ proto_tree *extt_tree = proto_item_add_subtree(tj, ett_a11_forward_rohc);
- proto_tree_add_item(extt_tree, hf_a11_ase_forward_rohc_info_len, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
+ proto_tree_add_item(extt_tree, hf_a11_ase_forward_rohc_info_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
- proto_tree_add_item(extt_tree, hf_a11_ase_forward_maxcid, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset+=2;
- proto_tree_add_item(extt_tree, hf_a11_ase_forward_mrru, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset+=2;
- proto_tree_add_item(extt_tree, hf_a11_ase_forward_large_cids, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
- profile_count=tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(extt_tree, hf_a11_ase_forward_maxcid, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+ proto_tree_add_item(extt_tree, hf_a11_ase_forward_mrru, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+ proto_tree_add_item(extt_tree, hf_a11_ase_forward_large_cids, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ profile_count=tvb_get_guint8(tvb, offset);
- proto_tree_add_item(extt_tree, hf_a11_ase_forward_profile_count, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
+ proto_tree_add_item(extt_tree, hf_a11_ase_forward_profile_count, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
- for(profile_index=0; profile_index<profile_count; profile_index++){
- proto_item* tk = proto_tree_add_text (extt_tree, tvb, offset, (2*profile_count), "Forward Profile : %d", profile_index);
- proto_tree* extu_tree = proto_item_add_subtree(tk, ett_a11_forward_profile);
- proto_tree_add_item(extu_tree, hf_a11_ase_forward_profile, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset+=2;
- }/*for*/
+ for(profile_index=0; profile_index<profile_count; profile_index++){
+ proto_item *tk = proto_tree_add_text (extt_tree, tvb, offset, (2*profile_count), "Forward Profile : %d", profile_index);
+ proto_tree *extu_tree = proto_item_add_subtree(tk, ett_a11_forward_profile);
+ proto_tree_add_item(extu_tree, hf_a11_ase_forward_profile, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+ }/*for*/
- reverse_profile_count=tvb_get_guint8(tvb, offset+6);
+ reverse_profile_count=tvb_get_guint8(tvb, offset+6);
- tl = proto_tree_add_text(exts_tree, tvb, offset,6+(reverse_profile_count*2)+1, "Reverse ROHC Info");
+ tl = proto_tree_add_text(exts_tree, tvb, offset,6+(reverse_profile_count*2)+1, "Reverse ROHC Info");
- extv_tree = proto_item_add_subtree(tl, ett_a11_reverse_rohc);
+ extv_tree = proto_item_add_subtree(tl, ett_a11_reverse_rohc);
- proto_tree_add_item(extv_tree, hf_a11_ase_reverse_rohc_info_len, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
+ proto_tree_add_item(extv_tree, hf_a11_ase_reverse_rohc_info_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
- proto_tree_add_item(extv_tree, hf_a11_ase_reverse_maxcid, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset+=2;
- proto_tree_add_item(extv_tree, hf_a11_ase_reverse_mrru, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset+=2;
- proto_tree_add_item(extv_tree, hf_a11_ase_reverse_large_cids, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
+ proto_tree_add_item(extv_tree, hf_a11_ase_reverse_maxcid, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+ proto_tree_add_item(extv_tree, hf_a11_ase_reverse_mrru, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+ proto_tree_add_item(extv_tree, hf_a11_ase_reverse_large_cids, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
- profile_count=tvb_get_guint8(tvb, offset);
+ profile_count=tvb_get_guint8(tvb, offset);
- proto_tree_add_item(extv_tree, hf_a11_ase_reverse_profile_count, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
+ proto_tree_add_item(extv_tree, hf_a11_ase_reverse_profile_count, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
- for(profile_index=0; profile_index<reverse_profile_count; profile_index++){
- proto_item* tm = proto_tree_add_text(extv_tree, tvb, offset, (2*profile_count), "Reverse Profile : %d", profile_index);
+ for(profile_index=0; profile_index<reverse_profile_count; profile_index++){
+ proto_item *tm = proto_tree_add_text(extv_tree, tvb, offset, (2*profile_count), "Reverse Profile : %d", profile_index);
- proto_tree* extw_tree = proto_item_add_subtree(tm, ett_a11_reverse_profile);
+ proto_tree *extw_tree = proto_item_add_subtree(tm, ett_a11_reverse_profile);
- proto_tree_add_item(extw_tree, hf_a11_ase_reverse_profile, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset+=2;
+ proto_tree_add_item(extw_tree, hf_a11_ase_reverse_profile, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
- }/*for*/
- }/* Service option */
+ }/*for*/
+ }/* Service option */
- }/* if */
- clen+=entry_lenght+1;
- /* Set offset = start of next entry in case of padding */
- offset = entry_start_offset + entry_lenght+1;
+ }/* if */
+ clen+=entry_lenght+1;
+ /* Set offset = start of next entry in case of padding */
+ offset = entry_start_offset + entry_lenght+1;
- }/*while*/
+ } /* while */
- registration_request_msg =0;
+ registration_request_msg =0;
}
#define A11_FQI_IPFLOW_DISC_ENABLED 0x80
#define A11_FQI_DSCP_INCLUDED 0x40
-static void dissect_fwd_qosinfo_flags
- (tvbuff_t* tvb, int offset, proto_tree* ext_tree, guint8* p_dscp_included)
+static void
+dissect_fwd_qosinfo_flags(tvbuff_t *tvb, int offset, proto_tree *ext_tree, guint8 *p_dscp_included)
{
guint8 flags = tvb_get_guint8(tvb, offset);
guint8 nbits = sizeof(flags) * 8;
- proto_item* ti = proto_tree_add_text(ext_tree, tvb, offset, sizeof(flags),
+ proto_item *ti = proto_tree_add_text(ext_tree, tvb, offset, sizeof(flags),
"Flags: %#02x", flags);
- proto_tree* flags_tree = proto_item_add_subtree(ti, ett_a11_fqi_flags);
+ proto_tree *flags_tree = proto_item_add_subtree(ti, ett_a11_fqi_flags);
proto_tree_add_text(flags_tree, tvb, offset, sizeof(flags), "%s",
decode_boolean_bitfield(flags, A11_FQI_IPFLOW_DISC_ENABLED, nbits,
@@ -834,7 +837,7 @@ static void dissect_fwd_qosinfo_flags
proto_tree_add_text(flags_tree, tvb, offset, sizeof(flags), "%s",
decode_boolean_bitfield(flags, A11_FQI_DSCP_INCLUDED, nbits,
"DSCP Included", "DSCP Not Included"));
- if(flags & A11_FQI_DSCP_INCLUDED)
+ if (flags & A11_FQI_DSCP_INCLUDED)
{
*p_dscp_included = 1;
}else
@@ -847,18 +850,18 @@ static void dissect_fwd_qosinfo_flags
#define A11_FQI_DSCP 0x7E
#define A11_FQI_FLOW_STATE 0x01
-static void dissect_fqi_entry_flags
- (tvbuff_t* tvb, int offset, proto_tree* ext_tree, guint8 dscp_enabled)
+static void
+dissect_fqi_entry_flags(tvbuff_t *tvb, int offset, proto_tree *ext_tree, guint8 dscp_enabled)
{
- guint8 dscp = tvb_get_guint8(tvb, offset);
+ guint8 dscp = tvb_get_guint8(tvb, offset);
guint8 nbits = sizeof(dscp) * 8;
- proto_item* ti = proto_tree_add_text(ext_tree, tvb, offset, sizeof(dscp),
+ proto_item *ti = proto_tree_add_text(ext_tree, tvb, offset, sizeof(dscp),
"DSCP and Flow State: %#02x", dscp);
- proto_tree* flags_tree = proto_item_add_subtree(ti, ett_a11_fqi_entry_flags);
+ proto_tree *flags_tree = proto_item_add_subtree(ti, ett_a11_fqi_entry_flags);
- if(dscp_enabled)
+ if (dscp_enabled)
{
proto_tree_add_text(flags_tree, tvb, offset, sizeof(dscp), "%s",
decode_numeric_bitfield(dscp, A11_FQI_DSCP, nbits,
@@ -873,16 +876,16 @@ static void dissect_fqi_entry_flags
#define A11_RQI_FLOW_STATE 0x01
-static void dissect_rqi_entry_flags
- (tvbuff_t* tvb, int offset, proto_tree* ext_tree)
+static void
+dissect_rqi_entry_flags(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
{
guint8 flags = tvb_get_guint8(tvb, offset);
guint8 nbits = sizeof(flags) * 8;
- proto_item* ti = proto_tree_add_text(ext_tree, tvb, offset, sizeof(flags),
+ proto_item *ti = proto_tree_add_text(ext_tree, tvb, offset, sizeof(flags),
"Flags: %#02x", flags);
- proto_tree* flags_tree = proto_item_add_subtree(ti, ett_a11_rqi_entry_flags);
+ proto_tree *flags_tree = proto_item_add_subtree(ti, ett_a11_rqi_entry_flags);
proto_tree_add_text(flags_tree, tvb, offset, sizeof(flags), "%s",
decode_boolean_bitfield(flags, A11_RQI_FLOW_STATE, nbits,
@@ -890,9 +893,10 @@ static void dissect_rqi_entry_flags
}
/* Code to dissect Forward QoS Info */
-static void dissect_fwd_qosinfo(tvbuff_t* tvb, int offset, proto_tree* ext_tree)
+static void
+dissect_fwd_qosinfo(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
{
- int clen = 0; /* consumed length */
+ int clen = 0; /* consumed length */
guint8 flow_count;
guint8 flow_index;
guint8 dscp_enabled = 0;
@@ -919,10 +923,10 @@ static void dissect_fwd_qosinfo(tvbuff_t* tvb, int offset, proto_tree* ext_tree)
guint8 entry_len = tvb_get_guint8(tvb, offset+clen);
guint8 flow_id = tvb_get_guint8(tvb, offset+clen+1);
- proto_item* ti = proto_tree_add_text
+ proto_item *ti = proto_tree_add_text
(ext_tree, tvb, offset+clen, entry_len+1, "Forward Flow Entry (Flow Id: %d)", flow_id);
- proto_tree* exts_tree = proto_item_add_subtree(ti, ett_a11_fqi_flowentry);
+ proto_tree *exts_tree = proto_item_add_subtree(ti, ett_a11_fqi_flowentry);
/* Entry Length */
proto_tree_add_item(exts_tree, hf_a11_fqi_entrylen, tvb, offset+clen, 1, ENC_BIG_ENDIAN);
@@ -943,13 +947,13 @@ static void dissect_fwd_qosinfo(tvbuff_t* tvb, int offset, proto_tree* ext_tree)
clen++;
/* Requested QoS Blob */
- if(requested_qos_len)
+ if (requested_qos_len)
{
- proto_item* ti2;
- proto_tree* exts_tree2;
+ proto_item *ti2;
+ proto_tree *exts_tree2;
- proto_item* ti1 = proto_tree_add_text(ext_tree, tvb, offset+clen,requested_qos_len, "Forward Requested QoS ");
- proto_tree* exts_tree1 = proto_item_add_subtree(ti1, ett_a11_fqi_requestedqos);
+ proto_item *ti1 = proto_tree_add_text(ext_tree, tvb, offset+clen,requested_qos_len, "Forward Requested QoS ");
+ proto_tree *exts_tree1 = proto_item_add_subtree(ti1, ett_a11_fqi_requestedqos);
proto_tree_add_text(exts_tree1, tvb, offset+clen, requested_qos_len, "Forward Requested QoS Sub Blob");
@@ -986,10 +990,10 @@ static void dissect_fwd_qosinfo(tvbuff_t* tvb, int offset, proto_tree* ext_tree)
clen++;
/* Granted QoS Blob */
- if(granted_qos_len)
+ if (granted_qos_len)
{
- proto_item* ti3;
- proto_tree* exts_tree3;
+ proto_item *ti3;
+ proto_tree *exts_tree3;
ti3 = proto_tree_add_text(ext_tree, tvb, offset+clen, granted_qos_len, "Forward Granted QoS ");
@@ -1005,9 +1009,10 @@ static void dissect_fwd_qosinfo(tvbuff_t* tvb, int offset, proto_tree* ext_tree)
}
/* Code to dissect Reverse QoS Info */
-static void dissect_rev_qosinfo(tvbuff_t* tvb, int offset, proto_tree* ext_tree)
+static void
+dissect_rev_qosinfo(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
{
- int clen = 0; /* consumed length */
+ int clen = 0; /* consumed length */
guint8 flow_count;
guint8 flow_index;
@@ -1029,10 +1034,10 @@ static void dissect_rev_qosinfo(tvbuff_t* tvb, int offset, proto_tree* ext_tree)
guint8 entry_len = tvb_get_guint8(tvb, offset+clen);
guint8 flow_id = tvb_get_guint8(tvb, offset+clen+1);
- proto_item* ti = proto_tree_add_text
+ proto_item *ti = proto_tree_add_text
(ext_tree, tvb, offset+clen, entry_len+1, "Reverse Flow Entry (Flow Id: %d)", flow_id);
- proto_tree* exts_tree = proto_item_add_subtree(ti, ett_a11_rqi_flowentry);
+ proto_tree *exts_tree = proto_item_add_subtree(ti, ett_a11_rqi_flowentry);
/* Entry Length */
proto_tree_add_item(exts_tree, hf_a11_rqi_entrylen, tvb, offset+clen, 1, ENC_BIG_ENDIAN);
@@ -1052,12 +1057,12 @@ static void dissect_rev_qosinfo(tvbuff_t* tvb, int offset, proto_tree* ext_tree)
clen++;
/* Requested QoS Blob */
- if(requested_qos_len)
+ if (requested_qos_len)
{
proto_item *ti1, *ti2;
proto_tree *exts_tree1, *exts_tree2;
- ti1 = proto_tree_add_text(ext_tree, tvb, offset+clen,requested_qos_len , "Reverse Requested QoS ");
+ ti1 = proto_tree_add_text(ext_tree, tvb, offset+clen,requested_qos_len , "Reverse Requested QoS ");
exts_tree1 = proto_item_add_subtree(ti1, ett_a11_rqi_requestedqos);
@@ -1095,10 +1100,10 @@ static void dissect_rev_qosinfo(tvbuff_t* tvb, int offset, proto_tree* ext_tree)
clen++;
/* Granted QoS Blob */
- if(granted_qos_len)
+ if (granted_qos_len)
{
- proto_item* ti3;
- proto_tree* exts_tree3;
+ proto_item *ti3;
+ proto_tree *exts_tree3;
ti3 = proto_tree_add_text(ext_tree, tvb, offset+clen,granted_qos_len , "Reverse Granted QoS ");
exts_tree3 = proto_item_add_subtree(ti3, ett_a11_rqi_grantedqos);
@@ -1114,13 +1119,14 @@ static void dissect_rev_qosinfo(tvbuff_t* tvb, int offset, proto_tree* ext_tree)
/* Code to dissect Subscriber QoS Profile */
-static void dissect_subscriber_qos_profile(tvbuff_t* tvb, packet_info *pinfo, int offset, int ext_len, proto_tree* ext_tree)
+static void
+dissect_subscriber_qos_profile(tvbuff_t *tvb, packet_info *pinfo, int offset, int ext_len, proto_tree *ext_tree)
{
- proto_tree* exts_tree;
+ proto_tree *exts_tree;
int qos_profile_len = ext_len;
- proto_item* ti =
+ proto_item *ti =
proto_tree_add_text (ext_tree, tvb, offset, 0,
"Subscriber Qos Profile (%d bytes)",
qos_profile_len);
@@ -1128,20 +1134,21 @@ static void dissect_subscriber_qos_profile(tvbuff_t* tvb, packet_info *pinfo, in
exts_tree = proto_item_add_subtree(ti, ett_a11_subscriber_profile);
/* Subscriber QoS profile */
- if(qos_profile_len)
+ if (qos_profile_len)
{
proto_tree_add_item
(exts_tree, hf_a11_subsciber_profile, tvb, offset,
qos_profile_len, ENC_NA);
- dissect_attribute_value_pairs(exts_tree, pinfo, tvb, offset, qos_profile_len);
+ dissect_attribute_value_pairs(exts_tree, pinfo, tvb, offset, qos_profile_len);
}
}
/* Code to dissect Forward QoS Update Info */
-static void dissect_fwd_qosupdate_info(tvbuff_t* tvb, int offset, proto_tree* ext_tree)
+static void
+dissect_fwd_qosupdate_info(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
{
- int clen = 0; /* consumed length */
+ int clen = 0; /* consumed length */
guint8 flow_count;
guint8 flow_index;
@@ -1152,12 +1159,12 @@ static void dissect_fwd_qosupdate_info(tvbuff_t* tvb, int offset, proto_tree* ex
for(flow_index=0; flow_index<flow_count; flow_index++)
{
- proto_tree* exts_tree;
+ proto_tree *exts_tree;
guint8 granted_qos_len;
guint8 flow_id = tvb_get_guint8(tvb, offset+clen);
- proto_item* ti = proto_tree_add_text
+ proto_item *ti = proto_tree_add_text
(ext_tree, tvb, offset+clen, 1, "Forward Flow Entry (Flow Id: %d)", flow_id);
clen++;
@@ -1170,7 +1177,7 @@ static void dissect_fwd_qosupdate_info(tvbuff_t* tvb, int offset, proto_tree* ex
clen++;
/* Forward QoS Sub Blob */
- if(granted_qos_len)
+ if (granted_qos_len)
{
proto_tree_add_item
(exts_tree, hf_a11_fqui_updated_qos, tvb, offset+clen,
@@ -1182,9 +1189,10 @@ static void dissect_fwd_qosupdate_info(tvbuff_t* tvb, int offset, proto_tree* ex
/* Code to dissect Reverse QoS Update Info */
-static void dissect_rev_qosupdate_info(tvbuff_t* tvb, int offset, proto_tree* ext_tree)
+static void
+dissect_rev_qosupdate_info(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
{
- int clen = 0; /* consumed length */
+ int clen = 0; /* consumed length */
guint8 flow_count;
guint8 flow_index;
@@ -1195,12 +1203,12 @@ static void dissect_rev_qosupdate_info(tvbuff_t* tvb, int offset, proto_tree* ex
for(flow_index=0; flow_index<flow_count; flow_index++)
{
- proto_tree* exts_tree;
- guint8 granted_qos_len;
+ proto_tree *exts_tree;
+ guint8 granted_qos_len;
- guint8 flow_id = tvb_get_guint8(tvb, offset+clen);
+ guint8 flow_id = tvb_get_guint8(tvb, offset+clen);
- proto_item* ti = proto_tree_add_text
+ proto_item *ti = proto_tree_add_text
(ext_tree, tvb, offset+clen, 1, "Reverse Flow Entry (Flow Id: %d)", flow_id);
clen++;
exts_tree = proto_item_add_subtree(ti, ett_a11_rqui_flowentry);
@@ -1212,7 +1220,7 @@ static void dissect_rev_qosupdate_info(tvbuff_t* tvb, int offset, proto_tree* ex
clen++;
/* Reverse QoS Sub Blob */
- if(granted_qos_len)
+ if (granted_qos_len)
{
proto_tree_add_item
(exts_tree, hf_a11_rqui_updated_qos, tvb, offset+clen,
@@ -1226,18 +1234,15 @@ static void dissect_rev_qosupdate_info(tvbuff_t* tvb, int offset, proto_tree* ex
static void
dissect_a11_extensions( tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree)
{
- proto_item *ti;
- proto_tree *exts_tree;
- proto_tree *ext_tree;
- guint ext_len;
- guint8 ext_type;
- guint8 ext_subtype = 0;
- guint hdrLen;
-
- gint16 apptype = -1;
+ proto_item *ti;
+ proto_tree *exts_tree;
+ proto_tree *ext_tree;
+ guint ext_len;
+ guint8 ext_type;
+ guint8 ext_subtype = 0;
+ guint hdrLen;
- /* None of this really matters if we don't have a tree */
- if (!tree) return;
+ gint16 apptype = -1;
/* Add our tree, if we have extensions */
ti = proto_tree_add_text(tree, tvb, offset, -1, "Extensions");
@@ -1255,14 +1260,14 @@ dissect_a11_extensions( tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tre
*/
ext_subtype = tvb_get_guint8(tvb, offset + 1);
ext_len = tvb_get_ntohs(tvb, offset + 2);
- hdrLen = 4;
+ hdrLen = 4;
} else if ((ext_type == CVSE_EXT) || (ext_type == OLD_CVSE_EXT)) {
ext_len = tvb_get_ntohs(tvb, offset + 2);
ext_subtype = tvb_get_guint8(tvb, offset + 8);
hdrLen = 4;
} else {
ext_len = tvb_get_guint8(tvb, offset + 1);
- hdrLen = 2;
+ hdrLen = 2;
}
ti = proto_tree_add_text(exts_tree, tvb, offset, ext_len + hdrLen,
@@ -1278,7 +1283,7 @@ dissect_a11_extensions( tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tre
proto_tree_add_uint(ext_tree, hf_a11_ext_len, tvb, offset, 1, ext_len);
offset++;
}
- else if((ext_type == CVSE_EXT) || (ext_type == OLD_CVSE_EXT)) {
+ else if ((ext_type == CVSE_EXT) || (ext_type == OLD_CVSE_EXT)) {
offset++;
proto_tree_add_uint(ext_tree, hf_a11_ext_len, tvb, offset, 2, ext_len);
offset+=2;
@@ -1304,7 +1309,7 @@ dissect_a11_extensions( tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tre
if (ext_len < 4)
break;
proto_tree_add_item(ext_tree, hf_a11_aext_spi, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
+ offset += 4;
ext_len -= 4;
if (ext_len == 0)
break;
@@ -1335,7 +1340,7 @@ dissect_a11_extensions( tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tre
if (ext_len < 4)
break;
proto_tree_add_item(ext_tree, hf_a11_aext_spi, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
+ offset += 4;
ext_len -= 4;
/* Key */
if (ext_len == 0)
@@ -1349,15 +1354,15 @@ dissect_a11_extensions( tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tre
if (ext_len < 4)
break;
proto_tree_add_item(ext_tree, hf_a11_vse_vid, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
+ offset += 4;
ext_len -= 4;
if (ext_len < 2)
break;
apptype = tvb_get_ntohs(tvb, offset);
proto_tree_add_uint(ext_tree, hf_a11_vse_apptype, tvb, offset, 2, apptype);
- offset += 2;
+ offset += 2;
ext_len -= 2;
- if(apptype == 0x0101) {
+ if (apptype == 0x0101) {
if (tvb_reported_length_remaining(tvb, offset) > 0) {
dissect_a11_radius(tvb, pinfo, offset, ext_tree, ext_len + 2);
}
@@ -1368,21 +1373,21 @@ dissect_a11_extensions( tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tre
if (ext_len < 6)
break;
proto_tree_add_item(ext_tree, hf_a11_vse_vid, tvb, offset+2, 4, ENC_BIG_ENDIAN);
- offset += 6;
+ offset += 6;
ext_len -= 6;
proto_tree_add_item(ext_tree, hf_a11_vse_apptype, tvb, offset, 2, ENC_BIG_ENDIAN);
if (ext_len < 2)
break;
apptype = tvb_get_ntohs(tvb, offset);
- offset += 2;
+ offset += 2;
ext_len -= 2;
switch(apptype) {
case 0x0401:
if (ext_len < 5)
break;
proto_tree_add_item(ext_tree, hf_a11_vse_panid, tvb, offset, 5, ENC_NA);
- offset += 5;
+ offset += 5;
ext_len -= 5;
if (ext_len < 5)
break;
@@ -1457,13 +1462,13 @@ static int
dissect_a11( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
/* Set up structures we will need to add the protocol subtree and manage it */
- proto_item *ti;
- proto_tree *a11_tree = NULL;
- proto_item *tf;
- proto_tree *flags_tree;
- guint8 type;
- guint8 flags;
- guint offset=0;
+ proto_item *ti;
+ proto_tree *a11_tree = NULL;
+ proto_item *tf;
+ proto_tree *flags_tree;
+ guint8 type;
+ guint8 flags;
+ guint offset = 0;
if (!tvb_bytes_exist(tvb, offset, 1))
return 0; /* not enough data to check message type */
@@ -1477,17 +1482,17 @@ dissect_a11( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
col_set_str(pinfo->cinfo, COL_PROTOCOL, "3GPP2 A11");
col_clear(pinfo->cinfo, COL_INFO);
- if(type == REGISTRATION_REQUEST)
- registration_request_msg =1;
+ if (type == REGISTRATION_REQUEST)
+ registration_request_msg =1;
else
- registration_request_msg =0;
+ registration_request_msg =0;
- switch (type) {
- case REGISTRATION_REQUEST:
+ switch (type) {
+ case REGISTRATION_REQUEST:
- registration_request_msg =1;
- col_add_fstr(pinfo->cinfo, COL_INFO, "Reg Request: PDSN=%s PCF=%s",
+ registration_request_msg = 1;
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Reg Request: PDSN=%s PCF=%s",
tvb_ip_to_str(tvb, 8),
tvb_ip_to_str(tvb, 12));
@@ -1781,22 +1786,22 @@ proto_register_a11(void)
{ &hf_a11_type,
{ "Message Type", "a11.type",
FT_UINT8, BASE_DEC, VALS(a11_types), 0,
- "A11 Message type.", HFILL }
+ "A11 Message Type", HFILL }
},
{ &hf_a11_flags,
- {"Flags", "a11.flags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL}
+ { "Flags", "a11.flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}
},
{ &hf_a11_s,
- {"Simultaneous Bindings", "a11.s",
- FT_BOOLEAN, 8, NULL, 128,
- "Simultaneous Bindings Allowed", HFILL }
+ { "Simultaneous Bindings", "a11.s",
+ FT_BOOLEAN, 8, NULL, 128,
+ "Simultaneous Bindings Allowed", HFILL }
},
{ &hf_a11_b,
- {"Broadcast Datagrams", "a11.b",
- FT_BOOLEAN, 8, NULL, 64,
- "Broadcast Datagrams requested", HFILL }
+ { "Broadcast Datagrams", "a11.b",
+ FT_BOOLEAN, 8, NULL, 64,
+ "Broadcast Datagrams requested", HFILL }
},
{ &hf_a11_d,
{ "Co-located Care-of Address", "a11.d",
@@ -1804,14 +1809,14 @@ proto_register_a11(void)
"MN using Co-located Care-of address", HFILL }
},
{ &hf_a11_m,
- {"Minimal Encapsulation", "a11.m",
- FT_BOOLEAN, 8, NULL, 16,
- "MN wants Minimal encapsulation", HFILL }
+ { "Minimal Encapsulation", "a11.m",
+ FT_BOOLEAN, 8, NULL, 16,
+ "MN wants Minimal encapsulation", HFILL }
},
{ &hf_a11_g,
- {"GRE", "a11.g",
- FT_BOOLEAN, 8, NULL, 8,
- "MN wants GRE encapsulation", HFILL }
+ { "GRE", "a11.g",
+ FT_BOOLEAN, 8, NULL, 8,
+ "MN wants GRE encapsulation", HFILL }
},
{ &hf_a11_v,
{ "Van Jacobson", "a11.v",
@@ -1826,53 +1831,53 @@ proto_register_a11(void)
{ &hf_a11_code,
{ "Reply Code", "a11.code",
FT_UINT8, BASE_DEC, VALS(a11_reply_codes), 0,
- "A11 Registration Reply code.", HFILL }
+ "A11 Registration Reply code", HFILL }
},
{ &hf_a11_status,
{ "Reply Status", "a11.ackstat",
FT_UINT8, BASE_DEC, VALS(a11_ack_status), 0,
- "A11 Registration Ack Status.", HFILL }
+ "A11 Registration Ack Status", HFILL }
},
{ &hf_a11_life,
{ "Lifetime", "a11.life",
FT_UINT16, BASE_DEC, NULL, 0,
- "A11 Registration Lifetime.", HFILL }
+ "A11 Registration Lifetime", HFILL }
},
{ &hf_a11_homeaddr,
{ "Home Address", "a11.homeaddr",
FT_IPv4, BASE_NONE, NULL, 0,
- "Mobile Node's home address.", HFILL }
+ "Mobile Node's home address", HFILL }
},
{ &hf_a11_haaddr,
{ "Home Agent", "a11.haaddr",
FT_IPv4, BASE_NONE, NULL, 0,
- "Home agent IP Address.", HFILL }
+ "Home agent IP Address", HFILL }
},
{ &hf_a11_coa,
{ "Care of Address", "a11.coa",
FT_IPv4, BASE_NONE, NULL, 0,
- "Care of Address.", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_ident,
{ "Identification", "a11.ident",
FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0,
- "MN Identification.", HFILL }
+ "MN Identification", HFILL }
},
{ &hf_a11_ext_type,
{ "Extension Type", "a11.ext.type",
FT_UINT8, BASE_DEC, VALS(a11_ext_types), 0,
- "Mobile IP Extension Type.", HFILL }
+ "Mobile IP Extension Type", HFILL }
},
{ &hf_a11_ext_stype,
{ "Gen Auth Ext SubType", "a11.ext.auth.subtype",
FT_UINT8, BASE_DEC, VALS(a11_ext_stypes), 0,
- "Mobile IP Auth Extension Sub Type.", HFILL }
+ "Mobile IP Auth Extension Sub Type", HFILL }
},
{ &hf_a11_ext_len,
{ "Extension Length", "a11.ext.len",
FT_UINT16, BASE_DEC, NULL, 0,
- "Mobile IP Extension Length.", HFILL }
+ "Mobile IP Extension Length", HFILL }
},
{ &hf_a11_ext,
{ "Extension", "a11.extension",
@@ -1882,12 +1887,12 @@ proto_register_a11(void)
{ &hf_a11_aext_spi,
{ "SPI", "a11.auth.spi",
FT_UINT32, BASE_HEX, NULL, 0,
- "Authentication Header Security Parameter Index.", HFILL }
+ "Authentication Header Security Parameter Index", HFILL }
},
{ &hf_a11_aext_auth,
{ "Authenticator", "a11.auth.auth",
FT_BYTES, BASE_NONE, NULL, 0,
- "Authenticator.", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_next_nai,
{ "NAI", "a11.nai",
@@ -1897,7 +1902,7 @@ proto_register_a11(void)
{ &hf_a11_ses_key,
{ "Key", "a11.ext.key",
FT_UINT32, BASE_HEX, NULL, 0,
- "Session Key.", HFILL }
+ "Session Key", HFILL }
},
{ &hf_a11_ses_sidver,
{ "Session ID Version", "a11.ext.sidver",
@@ -1912,57 +1917,58 @@ proto_register_a11(void)
{ &hf_a11_ses_msid_type,
{ "MSID Type", "a11.ext.msid_type",
FT_UINT16, BASE_DEC, NULL, 0,
- "MSID Type.", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_ses_msid_len,
{ "MSID Length", "a11.ext.msid_len",
FT_UINT8, BASE_DEC, NULL, 0,
- "MSID Length.", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_ses_msid,
{ "MSID(BCD)", "a11.ext.msid",
FT_STRING, BASE_NONE, NULL, 0,
- "MSID(BCD).", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_ses_ptype,
{ "Protocol Type", "a11.ext.ptype",
FT_UINT16, BASE_HEX, VALS(a11_ses_ptype_vals), 0,
- "Protocol Type.", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_vse_vid,
{ "Vendor ID", "a11.ext.vid",
FT_UINT32, BASE_HEX|BASE_EXT_STRING, &sminmpec_values_ext, 0,
- "Vendor ID.", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_vse_apptype,
{ "Application Type", "a11.ext.apptype",
FT_UINT8, BASE_HEX, VALS(a11_ext_app), 0,
- "Application Type.", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_vse_ppaddr,
{ "Anchor P-P Address", "a11.ext.ppaddr",
FT_IPv4, BASE_NONE, NULL, 0,
- "Anchor P-P Address.", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_vse_dormant,
{ "All Dormant Indicator", "a11.ext.dormant",
FT_UINT16, BASE_HEX, VALS(a11_ext_dormant), 0,
- "All Dormant Indicator.", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_vse_code,
{ "Reply Code", "a11.ext.code",
FT_UINT8, BASE_DEC, VALS(a11_reply_codes), 0,
- "PDSN Code.", HFILL }
+ NULL, HFILL }
},
+ /* XXX: Is this the correct filter name ?? */
{ &hf_a11_vse_pdit,
{ "PDSN Code", "a11.ext.code",
FT_UINT8, BASE_HEX, VALS(a11_ext_nvose_pdsn_code), 0,
- "PDSN Code.", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_vse_srvopt,
{ "Service Option", "a11.ext.srvopt",
FT_UINT16, BASE_HEX, VALS(a11_ext_nvose_srvopt), 0,
- "Service Option.", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_vse_panid,
{ "PANID", "a11.ext.panid",
@@ -1977,47 +1983,47 @@ proto_register_a11(void)
{ &hf_a11_vse_qosmode,
{ "QoS Mode", "a11.ext.qosmode",
FT_UINT8, BASE_HEX, VALS(a11_ext_nvose_qosmode), 0,
- "QoS Mode.", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_ase_len_type,
{ "Entry Length", "a11.ext.ase.len",
FT_UINT8, BASE_DEC, NULL, 0,
- "Entry Length.", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_ase_srid_type,
{ "Service Reference ID (SRID)", "a11.ext.ase.srid",
FT_UINT8, BASE_DEC, NULL, 0,
- "Service Reference ID (SRID).", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_ase_servopt_type,
{ "Service Option", "a11.ext.ase.srvopt",
FT_UINT16, BASE_HEX, VALS(a11_ext_nvose_srvopt), 0,
- "Service Option.", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_ase_gre_proto_type,
{ "GRE Protocol Type", "a11.ext.ase.ptype",
FT_UINT16, BASE_HEX, VALS(a11_ses_ptype_vals), 0,
- "GRE Protocol Type.", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_ase_gre_key,
{ "GRE Key", "a11.ext.ase.key",
FT_UINT32, BASE_HEX, NULL, 0,
- "GRE Key.", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_ase_pcf_addr_key,
{ "PCF IP Address", "a11.ext.ase.pcfip",
FT_IPv4, BASE_NONE, NULL, 0,
- "PCF IP Address.", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_fqi_srid,
{ "SRID", "a11.ext.fqi.srid",
FT_UINT8, BASE_DEC, NULL, 0,
- "Forward Flow Entry SRID.", HFILL }
+ "Forward Flow Entry SRID", HFILL }
},
{ &hf_a11_fqi_flags,
{ "Flags", "a11.ext.fqi.flags",
FT_UINT8, BASE_HEX, NULL, 0,
- "Forward Flow Entry Flags.", HFILL }
+ "Forward Flow Entry Flags", HFILL }
},
{ &hf_a11_fqi_flowcount,
{ "Forward Flow Count", "a11.ext.fqi.flowcount",
@@ -2032,12 +2038,12 @@ proto_register_a11(void)
{ &hf_a11_fqi_entrylen,
{ "Entry Length", "a11.ext.fqi.entrylen",
FT_UINT8, BASE_DEC, NULL, 0,
- "Forward Entry Length.", HFILL }
+ "Forward Entry Length", HFILL }
},
{ &hf_a11_fqi_dscp,
{ "Forward DSCP", "a11.ext.fqi.dscp",
FT_UINT8, BASE_HEX, NULL, 0,
- "Forward Flow DSCP.", HFILL }
+ "Forward Flow DSCP", HFILL }
},
{ &hf_a11_fqi_flowstate,
{ "Forward Flow State", "a11.ext.fqi.flowstate",
@@ -2047,62 +2053,62 @@ proto_register_a11(void)
{ &hf_a11_fqi_requested_qoslen,
{ "Requested QoS Length", "a11.ext.fqi.reqqoslen",
FT_UINT8, BASE_DEC, NULL, 0,
- "Forward Requested QoS Length.", HFILL }
- },
- { &hf_a11_fqi_flow_priority,
- { "Flow Priority", "a11.ext.fqi.flow_priority",
- FT_UINT8, BASE_DEC, NULL, 0xF0,
- NULL, HFILL }
- },
- { &hf_a11_fqi_num_qos_attribute_set,
- { "Number of QoS Attribute Sets", "a11.ext.fqi.num_qos_attribute_set",
- FT_UINT8, BASE_DEC, NULL, 0x0E,
- NULL, HFILL }
- },
- { &hf_a11_fqi_qos_attribute_setlen,
- { "QoS Attribute Set Length", "a11.ext.fqi.qos_attribute_setlen",
- FT_UINT16, BASE_DEC, NULL, 0x01E0,
- NULL, HFILL }
- },
- { &hf_a11_fqi_qos_attribute_setid,
- { "QoS Attribute SetID", "a11.ext.fqi.qos_attribute_setid",
- FT_UINT16, BASE_DEC, NULL, 0x1FC0,
- "QoS Attribute SetID.", HFILL }
- },
- { &hf_a11_fqi_verbose,
- { "Verbose", "a11.ext.fqi.verbose",
- FT_UINT8, BASE_DEC, NULL, 0x20,
- NULL, HFILL }
- },
- { &hf_a11_fqi_flow_profileid,
- { "Flow Profile Id", "a11.ext.fqi.flow_profileid",
- FT_UINT24, BASE_DEC, NULL, 0x1FFFE0,
- NULL, HFILL }
- },
- { &hf_a11_fqi_qos_granted_attribute_setid,
- { "QoS Attribute SetID", "a11.ext.fqi.qos_granted_attribute_setid",
- FT_UINT8, BASE_DEC, NULL, 0xFE,
- NULL, HFILL }
- },
+ "Forward Requested QoS Length", HFILL }
+ },
+ { &hf_a11_fqi_flow_priority,
+ { "Flow Priority", "a11.ext.fqi.flow_priority",
+ FT_UINT8, BASE_DEC, NULL, 0xF0,
+ NULL, HFILL }
+ },
+ { &hf_a11_fqi_num_qos_attribute_set,
+ { "Number of QoS Attribute Sets", "a11.ext.fqi.num_qos_attribute_set",
+ FT_UINT8, BASE_DEC, NULL, 0x0E,
+ NULL, HFILL }
+ },
+ { &hf_a11_fqi_qos_attribute_setlen,
+ { "QoS Attribute Set Length", "a11.ext.fqi.qos_attribute_setlen",
+ FT_UINT16, BASE_DEC, NULL, 0x01E0,
+ NULL, HFILL }
+ },
+ { &hf_a11_fqi_qos_attribute_setid,
+ { "QoS Attribute SetID", "a11.ext.fqi.qos_attribute_setid",
+ FT_UINT16, BASE_DEC, NULL, 0x1FC0,
+ NULL, HFILL }
+ },
+ { &hf_a11_fqi_verbose,
+ { "Verbose", "a11.ext.fqi.verbose",
+ FT_UINT8, BASE_DEC, NULL, 0x20,
+ NULL, HFILL }
+ },
+ { &hf_a11_fqi_flow_profileid,
+ { "Flow Profile Id", "a11.ext.fqi.flow_profileid",
+ FT_UINT24, BASE_DEC, NULL, 0x1FFFE0,
+ NULL, HFILL }
+ },
+ { &hf_a11_fqi_qos_granted_attribute_setid,
+ { "QoS Attribute SetID", "a11.ext.fqi.qos_granted_attribute_setid",
+ FT_UINT8, BASE_DEC, NULL, 0xFE,
+ NULL, HFILL }
+ },
{ &hf_a11_fqi_granted_qoslen,
{ "Granted QoS Length", "a11.ext.fqi.graqoslen",
FT_UINT8, BASE_DEC, NULL, 0,
- "Forward Granted QoS Length.", HFILL }
+ "Forward Granted QoS Length", HFILL }
},
{ &hf_a11_rqi_flow_priority,
{ "Flow Priority", "a11.ext.rqi.flow_priority",
- FT_UINT8, BASE_DEC, NULL, 0xF0,
- NULL, HFILL }
+ FT_UINT8, BASE_DEC, NULL, 0xF0,
+ NULL, HFILL }
},
{ &hf_a11_rqi_num_qos_attribute_set,
{ "Number of QoS Attribute Sets", "a11.ext.rqi.num_qos_attribute_set",
- FT_UINT8, BASE_DEC, NULL, 0x0E,
- NULL, HFILL }
+ FT_UINT8, BASE_DEC, NULL, 0x0E,
+ NULL, HFILL }
},
{ &hf_a11_rqi_qos_attribute_setlen,
{ "QoS Attribute Set Length", "a11.ext.rqi.qos_attribute_setlen",
- FT_UINT16, BASE_DEC, NULL, 0x01E0,
- NULL, HFILL }
+ FT_UINT16, BASE_DEC, NULL, 0x01E0,
+ NULL, HFILL }
},
{ &hf_a11_rqi_qos_attribute_setid,
{ "QoS Attribute SetID", "a11.ext.rqi.qos_attribute_setid",
@@ -2122,98 +2128,98 @@ proto_register_a11(void)
{ &hf_a11_rqi_qos_granted_attribute_setid,
{ "QoS Attribute SetID", "a11.ext.rqi.qos_granted_attribute_setid",
FT_UINT8, BASE_DEC, NULL, 0xFE,
- "QoS Attribute SetID.", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_rqi_srid,
{ "SRID", "a11.ext.rqi.srid",
FT_UINT8, BASE_DEC, NULL, 0,
- "Reverse Flow Entry SRID.", HFILL }
+ "Reverse Flow Entry SRID", HFILL }
},
{ &hf_a11_rqi_flowcount,
{ "Reverse Flow Count", "a11.ext.rqi.flowcount",
FT_UINT8, BASE_DEC, NULL, 0,
- "Reverse Flow Count.", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_rqi_flowid,
{ "Reverse Flow Id", "a11.ext.rqi.flowid",
FT_UINT8, BASE_DEC, NULL, 0,
- "Reverse Flow Id.", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_rqi_entrylen,
{ "Entry Length", "a11.ext.rqi.entrylen",
FT_UINT8, BASE_DEC, NULL, 0,
- "Reverse Flow Entry Length.", HFILL }
+ "Reverse Flow Entry Length", HFILL }
},
{ &hf_a11_rqi_flowstate,
{ "Flow State", "a11.ext.rqi.flowstate",
FT_UINT8, BASE_HEX, NULL, 0,
- "Reverse Flow State.", HFILL }
+ "Reverse Flow State", HFILL }
},
{ &hf_a11_rqi_requested_qoslen,
{ "Requested QoS Length", "a11.ext.rqi.reqqoslen",
FT_UINT8, BASE_DEC, NULL, 0,
- "Reverse Requested QoS Length.", HFILL }
- },
- { &hf_a11_rqi_requested_qos,
- { "Requested QoS", "a11.ext.rqi.reqqos",
- FT_BYTES, BASE_NONE, NULL, 0,
- "Reverse Requested QoS.", HFILL }
- },
- { &hf_a11_rqi_granted_qoslen,
- { "Granted QoS Length", "a11.ext.rqi.graqoslen",
- FT_UINT8, BASE_DEC, NULL, 0,
- "Reverse Granted QoS Length.", HFILL }
- },
- { &hf_a11_rqi_granted_qos,
- { "Granted QoS", "a11.ext.rqi.graqos",
- FT_BYTES, BASE_NONE, NULL, 0,
- "Reverse Granted QoS.", HFILL }
- },
- { &hf_a11_fqui_flowcount,
- { "Forward QoS Update Flow Count", "a11.ext.fqui.flowcount",
- FT_UINT8, BASE_DEC, NULL, 0,
- "Forward QoS Update Flow Count.", HFILL }
- },
- { &hf_a11_rqui_flowcount,
- { "Reverse QoS Update Flow Count", "a11.ext.rqui.flowcount",
- FT_UINT8, BASE_DEC, NULL, 0,
- "Reverse QoS Update Flow Count.", HFILL }
- },
- { &hf_a11_fqui_updated_qoslen,
- { "Forward Updated QoS Sub-Blob Length", "a11.ext.fqui.updatedqoslen",
- FT_UINT8, BASE_DEC, NULL, 0,
- "Forward Updated QoS Sub-Blob Length.", HFILL }
- },
- { &hf_a11_fqui_updated_qos,
- { "Forward Updated QoS Sub-Blob", "a11.ext.fqui.updatedqos",
- FT_BYTES, BASE_NONE, NULL, 0,
- "Forward Updated QoS Sub-Blob.", HFILL }
- },
+ "Reverse Requested QoS Length", HFILL }
+ },
+ { &hf_a11_rqi_requested_qos,
+ { "Requested QoS", "a11.ext.rqi.reqqos",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "Reverse Requested QoS", HFILL }
+ },
+ { &hf_a11_rqi_granted_qoslen,
+ { "Granted QoS Length", "a11.ext.rqi.graqoslen",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ "Reverse Granted QoS Length", HFILL }
+ },
+ { &hf_a11_rqi_granted_qos,
+ { "Granted QoS", "a11.ext.rqi.graqos",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "Reverse Granted QoS", HFILL }
+ },
+ { &hf_a11_fqui_flowcount,
+ { "Forward QoS Update Flow Count", "a11.ext.fqui.flowcount",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_a11_rqui_flowcount,
+ { "Reverse QoS Update Flow Count", "a11.ext.rqui.flowcount",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_a11_fqui_updated_qoslen,
+ { "Forward Updated QoS Sub-Blob Length", "a11.ext.fqui.updatedqoslen",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_a11_fqui_updated_qos,
+ { "Forward Updated QoS Sub-Blob", "a11.ext.fqui.updatedqos",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }
+ },
{ &hf_a11_rqui_updated_qoslen,
{ "Reverse Updated QoS Sub-Blob Length", "a11.ext.rqui.updatedqoslen",
FT_UINT8, BASE_DEC, NULL, 0,
- "Reverse Updated QoS Sub-Blob Length.", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_rqui_updated_qos,
{ "Reverse Updated QoS Sub-Blob", "a11.ext.rqui.updatedqos",
FT_BYTES, BASE_NONE, NULL, 0,
- "Reverse Updated QoS Sub-Blob.", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_subsciber_profile_len,
{ "Subscriber QoS Profile Length", "a11.ext.sqp.profilelen",
FT_BYTES, BASE_NONE, NULL, 0,
- "Subscriber QoS Profile Length.", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_subsciber_profile,
{ "Subscriber QoS Profile", "a11.ext.sqp.profile",
FT_BYTES, BASE_NONE, NULL, 0,
- "Subscriber QoS Profile.", HFILL }
+ NULL, HFILL }
},
{ &hf_a11_ase_forward_rohc_info_len,
{ "Forward ROHC Info Length", "a11.ext.ase.forwardlen",
- FT_UINT8, BASE_DEC, NULL, 0,
- NULL, HFILL }
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }
},
{ &hf_a11_ase_forward_maxcid,
@@ -2226,7 +2232,7 @@ proto_register_a11(void)
{ "Forward MRRU", "a11.ext.ase.mrru",
FT_UINT16, BASE_DEC, NULL, 0,
NULL, HFILL }
- },
+ },
{ &hf_a11_ase_forward_large_cids,
{ "Forward Large CIDS", "a11.ext.ase.forwardlargecids",
@@ -2238,7 +2244,7 @@ proto_register_a11(void)
{ "Forward Profile Count", "a11.ext.ase.profilecount",
FT_UINT8, BASE_DEC, NULL, 0,
NULL, HFILL }
- },
+ },
{ &hf_a11_ase_forward_profile,
@@ -2275,54 +2281,54 @@ proto_register_a11(void)
{ "Reverse Profile Count", "a11.ext.ase.revprofilecount",
FT_UINT8, BASE_DEC, NULL, 0,
NULL, HFILL }
- },
-
-
- { &hf_a11_ase_reverse_profile,
- { "Reverse Profile", "a11.ext.ase.reverseprofile",
- FT_UINT16, BASE_DEC, VALS(a11_rohc_profile_vals), 0,
- NULL, HFILL }
- },
- { &hf_a11_aut_flow_prof_sub_type,
- { "Sub type", "a11.aut_flow_prof.sub_type",
- FT_UINT8, BASE_DEC, VALS(a11_aut_flow_prof_subtype_vals), 0,
- NULL, HFILL }
- },
- { &hf_a11_aut_flow_prof_sub_type_len,
- { "Length", "a11.aut_flow_prof.length",
- FT_UINT8, BASE_DEC, NULL, 0,
- NULL, HFILL }
- },
- { &hf_a11_aut_flow_prof_sub_type_value,
- { "Value", "a11.aut_flow_prof.value",
- FT_UINT16, BASE_DEC, NULL, 0,
- NULL, HFILL }
- },
- { &hf_a11_serv_opt_prof_max_serv,
- { "Service-Connections-Per-Link-flow", "a11.serv_opt_prof.scplf",
- FT_UINT32, BASE_DEC, NULL, 0,
- NULL, HFILL }
- },
- { &hf_a11_sub_type,
- { "Sub-Type", "a11.sub_type",
- FT_UINT8, BASE_DEC, NULL, 0,
- NULL, HFILL }
- },
- { &hf_a11_sub_type_length,
- { "Sub-Type Length", "a11.sub_type_length",
- FT_UINT8, BASE_DEC, NULL, 0,
- NULL, HFILL }
- },
- { &hf_a11_serv_opt,
- { "Service Option", "a11.serviceoption",
- FT_UINT8, BASE_DEC, NULL, 0,
- NULL, HFILL }
- },
- { &hf_a11_max_num_serv_opt,
- { "Max number of service instances of Service Option", "a11.serviceoption",
- FT_UINT8, BASE_DEC, NULL, 0,
- NULL, HFILL }
- },
+ },
+
+
+ { &hf_a11_ase_reverse_profile,
+ { "Reverse Profile", "a11.ext.ase.reverseprofile",
+ FT_UINT16, BASE_DEC, VALS(a11_rohc_profile_vals), 0,
+ NULL, HFILL }
+ },
+ { &hf_a11_aut_flow_prof_sub_type,
+ { "Sub type", "a11.aut_flow_prof.sub_type",
+ FT_UINT8, BASE_DEC, VALS(a11_aut_flow_prof_subtype_vals), 0,
+ NULL, HFILL }
+ },
+ { &hf_a11_aut_flow_prof_sub_type_len,
+ { "Length", "a11.aut_flow_prof.length",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_a11_aut_flow_prof_sub_type_value,
+ { "Value", "a11.aut_flow_prof.value",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_a11_serv_opt_prof_max_serv,
+ { "Service-Connections-Per-Link-flow", "a11.serv_opt_prof.scplf",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_a11_sub_type,
+ { "Sub-Type", "a11.sub_type",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_a11_sub_type_length,
+ { "Sub-Type Length", "a11.sub_type_length",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_a11_serv_opt,
+ { "Service Option", "a11.serviceoption",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_a11_max_num_serv_opt,
+ { "Max number of service instances of Service Option", "a11.serviceoption",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }
+ },
};
/* Setup protocol subtree array */
@@ -2352,7 +2358,7 @@ proto_register_a11(void)
&ett_a11_reverse_rohc,
&ett_a11_forward_profile,
&ett_a11_reverse_profile,
- &ett_a11_aut_flow_profile_ids,
+ &ett_a11_aut_flow_profile_ids,
};
/* Register the protocol name and description */
@@ -2374,8 +2380,8 @@ proto_reg_handoff_a11(void)
a11_handle = find_dissector("a11");
dissector_add_uint("udp.port", UDP_PORT_3GA11, a11_handle);
- /* 3GPP2-Service-Option-Profile(74) */
- radius_register_avp_dissector(VENDOR_THE3GPP2, 74, dissect_3gpp2_service_option_profile);
- /* 3GPP2-Authorized-Flow-Profile-IDs(131) */
- radius_register_avp_dissector(VENDOR_THE3GPP2, 131, dissect_3gpp2_radius_aut_flow_profile_ids);
+ /* 3GPP2-Service-Option-Profile(74) */
+ radius_register_avp_dissector(VENDOR_THE3GPP2, 74, dissect_3gpp2_service_option_profile);
+ /* 3GPP2-Authorized-Flow-Profile-IDs(131) */
+ radius_register_avp_dissector(VENDOR_THE3GPP2, 131, dissect_3gpp2_radius_aut_flow_profile_ids);
}
diff --git a/epan/dissectors/packet-6lowpan.c b/epan/dissectors/packet-6lowpan.c
index 22339bf2ae..c71a2070dd 100644
--- a/epan/dissectors/packet-6lowpan.c
+++ b/epan/dissectors/packet-6lowpan.c
@@ -418,7 +418,7 @@ static const guint8 lowpan_llprefix[8] = {
#define LOWPAN_CONTEXT_DEFAULT 0
#define LOWPAN_CONTEXT_LINK_LOCAL LOWPAN_CONTEXT_COUNT /* An internal context used for the link-local prefix. */
static struct e_in6_addr lowpan_context_table[LOWPAN_CONTEXT_COUNT+1]; /* The 17-th context stores the link-local prefix. */
-static gchar * lowpan_context_prefs[LOWPAN_CONTEXT_COUNT]; /* Array of strings set by the preferences. */
+static const gchar * lowpan_context_prefs[LOWPAN_CONTEXT_COUNT]; /* Array of strings set by the preferences. */
/* Helper macro to convert a bit offset/length into a byte count. */
#define BITS_TO_BYTE_LEN(bitoff, bitlen) ((bitlen)?(((bitlen) + ((bitoff)&0x07) + 7) >> 3):(0))
@@ -2530,7 +2530,7 @@ proto_register_6lowpan(void)
/* Initialize the context table. */
memset(lowpan_context_table, 0, sizeof(lowpan_context_table));
- memset(lowpan_context_prefs, 0, sizeof(lowpan_context_prefs));
+ memset((gchar*)lowpan_context_prefs, 0, sizeof(lowpan_context_prefs));
/* Initialize the link-local prefix. */
lowpan_context_table[LOWPAN_CONTEXT_LINK_LOCAL].bytes[0] = 0xfe;
@@ -2564,7 +2564,7 @@ proto_register_6lowpan(void)
g_string_printf(pref_title, "Context %d", i);
g_string_printf(pref_desc, "IPv6 prefix to use for stateful address decompression.");
prefs_register_string_preference(prefs_module, pref_name->str, pref_title->str,
- pref_desc->str, (const char **) &lowpan_context_prefs[i]);
+ pref_desc->str, &lowpan_context_prefs[i]);
/* Don't free the ->str */
g_string_free(pref_name, FALSE);
g_string_free(pref_title, FALSE);
diff --git a/epan/dissectors/packet-aarp.c b/epan/dissectors/packet-aarp.c
index 761e8a7a9a..f4e56ec368 100644
--- a/epan/dissectors/packet-aarp.c
+++ b/epan/dissectors/packet-aarp.c
@@ -107,7 +107,7 @@ tvb_atalkid_to_str(tvbuff_t *tvb, gint offset)
gint node;
gchar *cur;
- cur=ep_alloc(16);
+ cur=(gchar *)ep_alloc(16);
node=tvb_get_guint8(tvb, offset)<<8|tvb_get_guint8(tvb, offset+1);
g_snprintf(cur, 16, "%d.%d",node,tvb_get_guint8(tvb, offset+2));
return cur;
diff --git a/epan/dissectors/packet-aastra-aasp.c b/epan/dissectors/packet-aastra-aasp.c
index 5f9d6e43b3..2b82c29be3 100644
--- a/epan/dissectors/packet-aastra-aasp.c
+++ b/epan/dissectors/packet-aastra-aasp.c
@@ -215,7 +215,7 @@ dissect_a_binary_command(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
{
proto_tree_add_item(subtree, hf_a_data, tvb, 1, 3, ENC_NA);
proto_tree_add_item(subtree, hf_a_length, tvb, 4, 1, ENC_NA);
- proto_tree_add_item(subtree, hf_a_text, tvb, 5, -1, ENC_ASCII);
+ proto_tree_add_item(subtree, hf_a_text, tvb, 5, -1, ENC_ASCII|ENC_NA);
pstr = tvb_get_string(tvb, 5, tvb_get_guint8(tvb, 4));
if(pstr)
@@ -283,7 +283,7 @@ dissect_a_binary_command(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
len = tvb_get_guint8(tvb, i+1);
ti = proto_tree_add_item(subtree, hf_a_item, tvb, i, len+2, ENC_NA);
infotree = proto_item_add_subtree(ti, ett_a_item);
- proto_tree_add_item(infotree, hf_a_weekday, tvb, i+2, len, ENC_ASCII);
+ proto_tree_add_item(infotree, hf_a_weekday, tvb, i+2, len, ENC_ASCII|ENC_NA);
pstr = tvb_get_string(tvb, i+2, len);
if(pstr)
{
@@ -298,7 +298,7 @@ dissect_a_binary_command(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
len = tvb_get_guint8(tvb, i+1);
ti = proto_tree_add_item(subtree, hf_a_item, tvb, i, len+2, ENC_NA);
infotree = proto_item_add_subtree(ti, ett_a_item);
- proto_tree_add_item(infotree, hf_a_month_name, tvb, i+2, len, ENC_ASCII);
+ proto_tree_add_item(infotree, hf_a_month_name, tvb, i+2, len, ENC_ASCII|ENC_NA);
pstr = tvb_get_string(tvb, i+2, len);
if(pstr)
{
@@ -313,7 +313,7 @@ dissect_a_binary_command(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
len = tvb_get_guint8(tvb, i+1);
ti = proto_tree_add_item(subtree, hf_a_item, tvb, i, len+2, ENC_NA);
infotree = proto_item_add_subtree(ti, ett_a_item);
- proto_tree_add_item(infotree, hf_a_weekofyear_prefix, tvb, i+2, len, ENC_ASCII);
+ proto_tree_add_item(infotree, hf_a_weekofyear_prefix, tvb, i+2, len, ENC_ASCII|ENC_NA);
pstr = tvb_get_string(tvb, i+2, len);
if(pstr)
{
@@ -362,7 +362,7 @@ dissect_a_binary_command(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
{
proto_tree_add_item(subtree, hf_a_line, tvb, 1, 1, ENC_NA);
proto_tree_add_item(subtree, hf_a_length, tvb, 2, 1, ENC_NA);
- proto_tree_add_item(subtree, hf_a_cdpn, tvb, 3, -1, ENC_ASCII);
+ proto_tree_add_item(subtree, hf_a_cdpn, tvb, 3, -1, ENC_ASCII|ENC_NA);
pstr = tvb_get_string(tvb, 3, tvb_get_guint8(tvb, 2));
if(pstr)
@@ -453,7 +453,7 @@ dissect_aasp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
else
{
- proto_tree_add_item(aasp_tree, hf_a_text, tvb, 0, -1, ENC_ASCII);
+ proto_tree_add_item(aasp_tree, hf_a_text, tvb, 0, -1, ENC_ASCII|ENC_NA);
}
}
diff --git a/epan/dissectors/packet-acn.c b/epan/dissectors/packet-acn.c
index ed07d842ec..89385b6b14 100644
--- a/epan/dissectors/packet-acn.c
+++ b/epan/dissectors/packet-acn.c
@@ -49,7 +49,150 @@
#include <epan/prefs.h>
#include <epan/ipv6-utils.h>
-#include "packet-acn.h"
+/* pdu flags */
+#define ACN_PDU_FLAG_L 0x80
+#define ACN_PDU_FLAG_V 0x40
+#define ACN_PDU_FLAG_H 0x20
+#define ACN_PDU_FLAG_D 0x10
+
+#define ACN_DMX_OPTION_P 0x80
+#define ACN_DMX_OPTION_S 0x40
+
+#define ACN_DMP_ADT_FLAG_V 0x80 /* V = Specifies whether address is a virtual address or not. */
+#define ACN_DMP_ADT_FLAG_R 0x40 /* R = Specifies whether address is relative to last valid address in packet or not. */
+#define ACN_DMP_ADT_FLAG_D 0x30 /* D1, D0 = Specify non-range or range address, single data, equal size
+ or mixed size data array */
+#define ACN_DMP_ADT_EXTRACT_D(f) (((f) & ACN_DMP_ADT_FLAG_D) >> 4)
+
+#define ACN_DMP_ADT_FLAG_X 0x0c /* X1, X0 = These bits are reserved and their values shall be set to 0
+ when encoded. Their values shall be ignored when decoding. */
+
+#define ACN_DMP_ADT_FLAG_A 0x03 /* A1, A0 = Size of Address elements */
+#define ACN_DMP_ADT_EXTRACT_A(f) ((f) & ACN_DMP_ADT_FLAG_A)
+
+#define ACN_DMP_ADT_V_VIRTUAL 0
+#define ACN_DMP_ADT_V_ACTUAL 1
+
+#define ACN_DMP_ADT_R_ABSOLUTE 0
+#define ACN_DMP_ADT_R_RELATIVE 1
+
+#define ACN_DMP_ADT_D_NS 0
+#define ACN_DMP_ADT_D_RS 1
+#define ACN_DMP_ADT_D_RE 2
+#define ACN_DMP_ADT_D_RM 3
+
+#define ACN_DMP_ADT_A_1 0
+#define ACN_DMP_ADT_A_2 1
+#define ACN_DMP_ADT_A_4 2
+#define ACN_DMP_ADT_A_R 3
+
+#define ACN_PROTOCOL_ID_SDT 1
+#define ACN_PROTOCOL_ID_DMP 2
+#define ACN_PROTOCOL_ID_DMX 3
+#define ACN_PROTOCOL_ID_DMX_2 4
+
+#define ACN_ADDR_NULL 0
+#define ACN_ADDR_IPV4 1
+#define ACN_ADDR_IPV6 2
+#define ACN_ADDR_IPPORT 3
+
+/* STD Messages */
+#define ACN_SDT_VECTOR_UNKNOWN 0
+#define ACN_SDT_VECTOR_REL_WRAP 1
+#define ACN_SDT_VECTOR_UNREL_WRAP 2
+#define ACN_SDT_VECTOR_CHANNEL_PARAMS 3
+#define ACN_SDT_VECTOR_JOIN 4
+#define ACN_SDT_VECTOR_JOIN_REFUSE 5
+#define ACN_SDT_VECTOR_JOIN_ACCEPT 6
+#define ACN_SDT_VECTOR_LEAVE 7
+#define ACN_SDT_VECTOR_LEAVING 8
+#define ACN_SDT_VECTOR_CONNECT 9
+#define ACN_SDT_VECTOR_CONNECT_ACCEPT 10
+#define ACN_SDT_VECTOR_CONNECT_REFUSE 11
+#define ACN_SDT_VECTOR_DISCONNECT 12
+#define ACN_SDT_VECTOR_DISCONNECTING 13
+#define ACN_SDT_VECTOR_ACK 14
+#define ACN_SDT_VECTOR_NAK 15
+#define ACN_SDT_VECTOR_GET_SESSION 16
+#define ACN_SDT_VECTOR_SESSIONS 17
+
+#define ACN_REFUSE_CODE_NONSPECIFIC 1
+#define ACN_REFUSE_CODE_ILLEGAL_PARAMS 2
+#define ACN_REFUSE_CODE_LOW_RESOURCES 3
+#define ACN_REFUSE_CODE_ALREADY_MEMBER 4
+#define ACN_REFUSE_CODE_BAD_ADDR_TYPE 5
+#define ACN_REFUSE_CODE_NO_RECIP_CHAN 6
+
+#define ACN_REASON_CODE_NONSPECIFIC 1
+/*#define ACN_REASON_CODE_ 2 */
+/*#define ACN_REASON_CODE_ 3 */
+/*#define ACN_REASON_CODE_ 4 */
+/*#define ACN_REASON_CODE_ 5 */
+#define ACN_REASON_CODE_NO_RECIP_CHAN 6
+#define ACN_REASON_CODE_CHANNEL_EXPIRED 7
+#define ACN_REASON_CODE_LOST_SEQUENCE 8
+#define ACN_REASON_CODE_SATURATED 9
+#define ACN_REASON_CODE_TRANS_ADDR_CHANGING 10
+#define ACN_REASON_CODE_ASKED_TO_LEAVE 11
+#define ACN_REASON_CODE_NO_RECIPIENT 12
+
+#define ACN_DMP_VECTOR_UNKNOWN 0
+#define ACN_DMP_VECTOR_GET_PROPERTY 1
+#define ACN_DMP_VECTOR_SET_PROPERTY 2
+#define ACN_DMP_VECTOR_GET_PROPERTY_REPLY 3
+#define ACN_DMP_VECTOR_EVENT 4
+#define ACN_DMP_VECTOR_MAP_PROPERTY 5
+#define ACN_DMP_VECTOR_UNMAP_PROPERTY 6
+#define ACN_DMP_VECTOR_SUBSCRIBE 7
+#define ACN_DMP_VECTOR_UNSUBSCRIBE 8
+#define ACN_DMP_VECTOR_GET_PROPERTY_FAIL 9
+#define ACN_DMP_VECTOR_SET_PROPERTY_FAIL 10
+#define ACN_DMP_VECTOR_MAP_PROPERTY_FAIL 11
+#define ACN_DMP_VECTOR_SUBSCRIBE_ACCEPT 12
+#define ACN_DMP_VECTOR_SUBSCRIBE_REJECT 13
+#define ACN_DMP_VECTOR_ALLOCATE_MAP 14
+#define ACN_DMP_VECTOR_ALLOCATE_MAP_REPLY 15
+#define ACN_DMP_VECTOR_DEALLOCATE_MAP 16
+
+#define ACN_DMP_REASON_CODE_NONSPECIFIC 1
+#define ACN_DMP_REASON_CODE_NOT_A_PROPERTY 2
+#define ACN_DMP_REASON_CODE_WRITE_ONLY 3
+#define ACN_DMP_REASON_CODE_NOT_WRITABLE 4
+#define ACN_DMP_REASON_CODE_DATA_ERROR 5
+#define ACN_DMP_REASON_CODE_MAPS_NOT_SUPPORTED 6
+#define ACN_DMP_REASON_CODE_SPACE_NOT_AVAILABLE 7
+#define ACN_DMP_REASON_CODE_PROP_NOT_MAPPABLE 8
+#define ACN_DMP_REASON_CODE_MAP_NOT_ALLOCATED 9
+#define ACN_DMP_REASON_CODE_SUBSCRIPTION_NOT_SUPPORTED 10
+#define ACN_DMP_REASON_CODE_NO_SUBSCRIPTIONS_SUPPORTED 11
+
+#define ACN_DMX_VECTOR 2
+
+#define ACN_PREF_DMX_DISPLAY_HEX 0
+#define ACN_PREF_DMX_DISPLAY_DEC 1
+#define ACN_PREF_DMX_DISPLAY_PER 2
+
+#define ACN_PREF_DMX_DISPLAY_20PL 0
+#define ACN_PREF_DMX_DISPLAY_16PL 1
+
+typedef struct
+{
+ guint32 start;
+ guint32 vector;
+ guint32 header;
+ guint32 data;
+ guint32 data_length;
+} acn_pdu_offsets;
+
+typedef struct
+{
+ guint8 flags;
+ guint32 address; /* or first address */
+ guint32 increment;
+ guint32 count;
+ guint32 size;
+ guint32 data_length;
+} acn_dmp_adt_type;
/*
* See
@@ -59,23 +202,8 @@
#define ACTUAL_ADDRESS 0
/* forward reference */
-static gboolean dissect_acn_heur( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree );
-static guint32 acn_add_channel_owner_info_block(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, int offset);
-static guint32 acn_add_channel_member_info_block(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, int offset);
-static guint32 acn_add_expiry(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, const char *label);
-static guint32 acn_add_channel_parameter(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset);
static guint32 acn_add_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, const char *label);
-static guint32 acn_add_dmp_address_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, acn_dmp_adt_type *adt);
-static guint32 acn_add_dmp_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, acn_dmp_adt_type *adt);
-static guint32 dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, acn_pdu_offsets *last_pdu_offsets);
-static guint32 dissect_acn_sdt_wrapped_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, int offset, acn_pdu_offsets *last_pdu_offsets);
-static guint32 dissect_acn_sdt_client_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, acn_pdu_offsets *last_pdu_offsets);
-static guint32 dissect_acn_dmx_data_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, acn_pdu_offsets *last_pdu_offsets);
-static guint32 dissect_acn_dmx_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, acn_pdu_offsets *last_pdu_offsets);
-static guint32 dissect_acn_sdt_base_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, acn_pdu_offsets *last_pdu_offsets);
-static guint32 dissect_acn_root_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, acn_pdu_offsets *last_pdu_offsets);
-static int dissect_acn(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
-static gboolean is_acn(tvbuff_t *tvb);
+static int dissect_acn(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
/* Global variables */
static int proto_acn = -1;
@@ -215,24 +343,24 @@ static const value_string acn_dmp_adt_a_vals[] = {
static const value_string acn_sdt_vector_vals[] = {
- {ACN_SDT_VECTOR_UNKNOWN, "Unknown"},
- {ACN_SDT_VECTOR_REL_WRAP, "Reliable Wrapper"},
- {ACN_SDT_VECTOR_UNREL_WRAP, "Unreliable Wrapper"},
+ {ACN_SDT_VECTOR_UNKNOWN, "Unknown"},
+ {ACN_SDT_VECTOR_REL_WRAP, "Reliable Wrapper"},
+ {ACN_SDT_VECTOR_UNREL_WRAP, "Unreliable Wrapper"},
{ACN_SDT_VECTOR_CHANNEL_PARAMS, "Channel Parameters"},
- {ACN_SDT_VECTOR_JOIN, "Join"},
- {ACN_SDT_VECTOR_JOIN_REFUSE, "Join Refuse"},
- {ACN_SDT_VECTOR_JOIN_ACCEPT, "Join Accept"},
- {ACN_SDT_VECTOR_LEAVE, "Leave"},
- {ACN_SDT_VECTOR_LEAVING, "Leaving"},
- {ACN_SDT_VECTOR_CONNECT, "Connect"},
+ {ACN_SDT_VECTOR_JOIN, "Join"},
+ {ACN_SDT_VECTOR_JOIN_REFUSE, "Join Refuse"},
+ {ACN_SDT_VECTOR_JOIN_ACCEPT, "Join Accept"},
+ {ACN_SDT_VECTOR_LEAVE, "Leave"},
+ {ACN_SDT_VECTOR_LEAVING, "Leaving"},
+ {ACN_SDT_VECTOR_CONNECT, "Connect"},
{ACN_SDT_VECTOR_CONNECT_ACCEPT, "Connect Accept"},
{ACN_SDT_VECTOR_CONNECT_REFUSE, "Connect Refuse"},
- {ACN_SDT_VECTOR_DISCONNECT, "Disconnect"},
- {ACN_SDT_VECTOR_DISCONNECTING, "Disconnecting"},
- {ACN_SDT_VECTOR_ACK, "Ack"},
- {ACN_SDT_VECTOR_NAK, "Nak"},
- {ACN_SDT_VECTOR_GET_SESSION, "Get Session"},
- {ACN_SDT_VECTOR_SESSIONS, "Sessions"},
+ {ACN_SDT_VECTOR_DISCONNECT, "Disconnect"},
+ {ACN_SDT_VECTOR_DISCONNECTING, "Disconnecting"},
+ {ACN_SDT_VECTOR_ACK, "Ack"},
+ {ACN_SDT_VECTOR_NAK, "Nak"},
+ {ACN_SDT_VECTOR_GET_SESSION, "Get Session"},
+ {ACN_SDT_VECTOR_SESSIONS, "Sessions"},
{ 0, NULL },
};
@@ -242,66 +370,66 @@ static const value_string acn_dmx_vector_vals[] = {
};
static const value_string acn_dmp_vector_vals[] = {
- {ACN_DMP_VECTOR_UNKNOWN, "Unknown"},
- {ACN_DMP_VECTOR_GET_PROPERTY, "Get Property"},
- {ACN_DMP_VECTOR_SET_PROPERTY, "Set Property"},
+ {ACN_DMP_VECTOR_UNKNOWN, "Unknown"},
+ {ACN_DMP_VECTOR_GET_PROPERTY, "Get Property"},
+ {ACN_DMP_VECTOR_SET_PROPERTY, "Set Property"},
{ACN_DMP_VECTOR_GET_PROPERTY_REPLY, "Get property reply"},
- {ACN_DMP_VECTOR_EVENT, "Event"},
- {ACN_DMP_VECTOR_MAP_PROPERTY, "Map Property"},
- {ACN_DMP_VECTOR_UNMAP_PROPERTY, "Unmap Property"},
- {ACN_DMP_VECTOR_SUBSCRIBE, "Subscribe"},
- {ACN_DMP_VECTOR_UNSUBSCRIBE, "Unsubscribe"},
- {ACN_DMP_VECTOR_GET_PROPERTY_FAIL, "Get Property Fail"},
- {ACN_DMP_VECTOR_SET_PROPERTY_FAIL, "Set Property Fail"},
- {ACN_DMP_VECTOR_MAP_PROPERTY_FAIL, "Map Property Fail"},
- {ACN_DMP_VECTOR_SUBSCRIBE_ACCEPT, "Subscribe Accept"},
- {ACN_DMP_VECTOR_SUBSCRIBE_REJECT, "Subscribe Reject"},
- {ACN_DMP_VECTOR_ALLOCATE_MAP, "Allocate Map"},
+ {ACN_DMP_VECTOR_EVENT, "Event"},
+ {ACN_DMP_VECTOR_MAP_PROPERTY, "Map Property"},
+ {ACN_DMP_VECTOR_UNMAP_PROPERTY, "Unmap Property"},
+ {ACN_DMP_VECTOR_SUBSCRIBE, "Subscribe"},
+ {ACN_DMP_VECTOR_UNSUBSCRIBE, "Unsubscribe"},
+ {ACN_DMP_VECTOR_GET_PROPERTY_FAIL, "Get Property Fail"},
+ {ACN_DMP_VECTOR_SET_PROPERTY_FAIL, "Set Property Fail"},
+ {ACN_DMP_VECTOR_MAP_PROPERTY_FAIL, "Map Property Fail"},
+ {ACN_DMP_VECTOR_SUBSCRIBE_ACCEPT, "Subscribe Accept"},
+ {ACN_DMP_VECTOR_SUBSCRIBE_REJECT, "Subscribe Reject"},
+ {ACN_DMP_VECTOR_ALLOCATE_MAP, "Allocate Map"},
{ACN_DMP_VECTOR_ALLOCATE_MAP_REPLY, "Allocate Map Reply"},
- {ACN_DMP_VECTOR_DEALLOCATE_MAP, "Deallocate Map"},
+ {ACN_DMP_VECTOR_DEALLOCATE_MAP, "Deallocate Map"},
{ 0, NULL },
};
static const value_string acn_ip_address_type_vals[] = {
- { ACN_ADDR_NULL, "Null"},
- { ACN_ADDR_IPV4, "IPv4"},
- { ACN_ADDR_IPV6, "IPv6"},
+ { ACN_ADDR_NULL, "Null"},
+ { ACN_ADDR_IPV4, "IPv4"},
+ { ACN_ADDR_IPV6, "IPv6"},
{ ACN_ADDR_IPPORT, "Port"},
{ 0, NULL },
};
static const value_string acn_refuse_code_vals[] = {
- { ACN_REFUSE_CODE_NONSPECIFIC, "Nonspecific" },
+ { ACN_REFUSE_CODE_NONSPECIFIC, "Nonspecific" },
{ ACN_REFUSE_CODE_ILLEGAL_PARAMS, "Illegal Parameters" },
- { ACN_REFUSE_CODE_LOW_RESOURCES, "Low Resources" },
+ { ACN_REFUSE_CODE_LOW_RESOURCES, "Low Resources" },
{ ACN_REFUSE_CODE_ALREADY_MEMBER, "Already Member" },
- { ACN_REFUSE_CODE_BAD_ADDR_TYPE, "Bad Address Type" },
- { ACN_REFUSE_CODE_NO_RECIP_CHAN, "No Reciprocal Channel" },
+ { ACN_REFUSE_CODE_BAD_ADDR_TYPE, "Bad Address Type" },
+ { ACN_REFUSE_CODE_NO_RECIP_CHAN, "No Reciprocal Channel" },
{ 0, NULL },
};
static const value_string acn_reason_code_vals[] = {
- { ACN_REASON_CODE_NONSPECIFIC, "Nonspecific" },
- { ACN_REASON_CODE_NO_RECIP_CHAN, "No Reciprocal Channel" },
- { ACN_REASON_CODE_CHANNEL_EXPIRED, "Channel Expired" },
- { ACN_REASON_CODE_LOST_SEQUENCE, "Lost Sequence" },
- { ACN_REASON_CODE_SATURATED, "Saturated" },
+ { ACN_REASON_CODE_NONSPECIFIC, "Nonspecific" },
+ { ACN_REASON_CODE_NO_RECIP_CHAN, "No Reciprocal Channel" },
+ { ACN_REASON_CODE_CHANNEL_EXPIRED, "Channel Expired" },
+ { ACN_REASON_CODE_LOST_SEQUENCE, "Lost Sequence" },
+ { ACN_REASON_CODE_SATURATED, "Saturated" },
{ ACN_REASON_CODE_TRANS_ADDR_CHANGING, "Transport Address Changing" },
- { ACN_REASON_CODE_ASKED_TO_LEAVE, "Asked to Leave" },
- { ACN_REASON_CODE_NO_RECIPIENT, "No Recipient"},
+ { ACN_REASON_CODE_ASKED_TO_LEAVE, "Asked to Leave" },
+ { ACN_REASON_CODE_NO_RECIPIENT, "No Recipient"},
{ 0, NULL },
};
static const value_string acn_dmp_reason_code_vals[] = {
- { ACN_DMP_REASON_CODE_NONSPECIFIC, "Nonspecific" },
- { ACN_DMP_REASON_CODE_NOT_A_PROPERTY, "Not a Property" },
- { ACN_DMP_REASON_CODE_WRITE_ONLY, "Write Only" },
- { ACN_DMP_REASON_CODE_NOT_WRITABLE, "Not Writable" },
- { ACN_DMP_REASON_CODE_DATA_ERROR, "Data Error" },
- { ACN_DMP_REASON_CODE_MAPS_NOT_SUPPORTED, "Maps not Supported" },
- { ACN_DMP_REASON_CODE_SPACE_NOT_AVAILABLE, "Space not Available" },
- { ACN_DMP_REASON_CODE_PROP_NOT_MAPPABLE, "Property not Mappable"},
- { ACN_DMP_REASON_CODE_MAP_NOT_ALLOCATED, "Map not Allocated"},
+ { ACN_DMP_REASON_CODE_NONSPECIFIC, "Nonspecific" },
+ { ACN_DMP_REASON_CODE_NOT_A_PROPERTY, "Not a Property" },
+ { ACN_DMP_REASON_CODE_WRITE_ONLY, "Write Only" },
+ { ACN_DMP_REASON_CODE_NOT_WRITABLE, "Not Writable" },
+ { ACN_DMP_REASON_CODE_DATA_ERROR, "Data Error" },
+ { ACN_DMP_REASON_CODE_MAPS_NOT_SUPPORTED, "Maps not Supported" },
+ { ACN_DMP_REASON_CODE_SPACE_NOT_AVAILABLE, "Space not Available" },
+ { ACN_DMP_REASON_CODE_PROP_NOT_MAPPABLE, "Property not Mappable"},
+ { ACN_DMP_REASON_CODE_MAP_NOT_ALLOCATED, "Map not Allocated"},
{ ACN_DMP_REASON_CODE_SUBSCRIPTION_NOT_SUPPORTED, "Subscription not Supported"},
{ ACN_DMP_REASON_CODE_NO_SUBSCRIPTIONS_SUPPORTED, "No Subscriptions Supported"},
{ 0, NULL },
@@ -322,7 +450,8 @@ static const enum_val_t dmx_display_line_format[] = {
/******************************************************************************/
/* Test to see if it is an ACN Packet */
-static gboolean is_acn(tvbuff_t *tvb)
+static gboolean
+is_acn(tvbuff_t *tvb)
{
static char acn_packet_id[] = "ASC-E1.17\0\0\0"; /* must be 12 bytes */
@@ -361,14 +490,14 @@ dissect_acn_heur( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
/******************************************************************************/
/* Adds tree branch for channel owner info block */
static guint32
-acn_add_channel_owner_info_block(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, int offset)
+acn_add_channel_owner_info_block(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
proto_item *pi;
- proto_tree *this_tree = NULL;
- guint32 session_count;
- guint32 x;
+ proto_tree *this_tree;
+ guint32 session_count;
+ guint32 x;
- pi = proto_tree_add_text(this_tree, tvb, offset, 8, "Channel Owner Info Block");
+ pi = proto_tree_add_text(tree, tvb, offset, 8, "Channel Owner Info Block");
this_tree = proto_item_add_subtree(pi, ett_acn_channel_owner_info_block);
proto_tree_add_item(this_tree, hf_acn_member_id, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -390,14 +519,14 @@ acn_add_channel_owner_info_block(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
/******************************************************************************/
/* Adds tree branch for channel member info block */
static guint32
-acn_add_channel_member_info_block(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, int offset)
+acn_add_channel_member_info_block(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
proto_item *pi;
- proto_tree *this_tree = NULL;
- guint32 session_count;
- guint32 x;
+ proto_tree *this_tree;
+ guint32 session_count;
+ guint32 x;
- pi = proto_tree_add_text(this_tree, tvb, offset, 8, "Channel Member Info Block");
+ pi = proto_tree_add_text(tree, tvb, offset, 8, "Channel Member Info Block");
this_tree = proto_item_add_subtree(pi, ett_acn_channel_member_info_block);
proto_tree_add_item(this_tree, hf_acn_member_id, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -438,7 +567,7 @@ static guint32
acn_add_channel_parameter(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset)
{
proto_item *pi;
- proto_tree *param_tree = NULL;
+ proto_tree *param_tree;
pi = proto_tree_add_text(tree, tvb, offset, 8, "Channel Parameter Block");
param_tree = proto_item_add_subtree(pi, ett_acn_channel_parameter);
@@ -463,11 +592,11 @@ acn_add_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int off
{
proto_item *pi;
proto_tree *addr_tree = NULL;
- guint8 ip_address_type;
+ guint8 ip_address_type;
+ address addr;
+ guint32 IPv4;
+ guint32 port;
- address addr;
- guint32 IPv4;
- guint32 port;
struct e_in6_addr IPv6;
@@ -477,56 +606,56 @@ acn_add_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int off
switch (ip_address_type) {
case ACN_ADDR_NULL:
proto_tree_add_item(tree, hf_acn_ip_address_type, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset += 1;
+ offset += 1;
break;
case ACN_ADDR_IPV4:
/* Build tree and add type*/
- pi = proto_tree_add_text(tree, tvb, offset, 7, "%s", label);
- addr_tree = proto_item_add_subtree(pi, ett_acn_address);
+ pi = proto_tree_add_text(tree, tvb, offset, 7, "%s", label);
+ addr_tree = proto_item_add_subtree(pi, ett_acn_address);
proto_tree_add_item(addr_tree, hf_acn_ip_address_type, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset +=1;
+ offset += 1;
/* Add port */
- port = tvb_get_ntohs(tvb, offset);
+ port = tvb_get_ntohs(tvb, offset);
proto_tree_add_item(addr_tree, hf_acn_port, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
+ offset += 2;
/* Add Address */
proto_tree_add_item(addr_tree, hf_acn_ipv4, tvb, offset, 4, ENC_BIG_ENDIAN);
/* Append port and address to tree item */
- IPv4 = tvb_get_ipv4(tvb, offset);
+ IPv4 = tvb_get_ipv4(tvb, offset);
SET_ADDRESS(&addr, AT_IPv4, sizeof(IPv4), &IPv4);
proto_item_append_text(pi, " %s, Port %d", ep_address_to_str(&addr), port);
- offset += 4;
+ offset += 4;
break;
case ACN_ADDR_IPV6:
/* Build tree and add type*/
- pi = proto_tree_add_text(tree, tvb, offset, 19, "%s", label);
- addr_tree = proto_item_add_subtree(pi, ett_acn_address);
+ pi = proto_tree_add_text(tree, tvb, offset, 19, "%s", label);
+ addr_tree = proto_item_add_subtree(pi, ett_acn_address);
proto_tree_add_item(addr_tree, hf_acn_ip_address_type, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset +=1;
+ offset += 1;
/* Add port */
- port = tvb_get_ntohs(tvb, offset);
+ port = tvb_get_ntohs(tvb, offset);
proto_tree_add_item(addr_tree, hf_acn_port, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
+ offset += 2;
/* Add Address */
proto_tree_add_item(addr_tree, hf_acn_ipv6, tvb, offset, 16, ENC_NA);
/* Append port and address to tree item */
tvb_get_ipv6(tvb, offset, &IPv6);
SET_ADDRESS(&addr, AT_IPv6, sizeof(struct e_in6_addr), &IPv6);
proto_item_append_text(pi, " %s, Port %d", ep_address_to_str(&addr), port);
- offset += 16;
+ offset += 16;
break;
case ACN_ADDR_IPPORT:
/* Build tree and add type*/
- pi = proto_tree_add_text(tree, tvb, offset, 3, "%s", label);
- addr_tree = proto_item_add_subtree(pi, ett_acn_address);
+ pi = proto_tree_add_text(tree, tvb, offset, 3, "%s", label);
+ addr_tree = proto_item_add_subtree(pi, ett_acn_address);
proto_tree_add_item(addr_tree, hf_acn_ip_address_type, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset +=1;
+ offset += 1;
/* Add port */
- port = tvb_get_ntohs(tvb, offset);
+ port = tvb_get_ntohs(tvb, offset);
proto_tree_add_item(addr_tree, hf_acn_port, tvb, offset, 2, ENC_BIG_ENDIAN);
/* Append port to tree item */
proto_item_append_text(pi, " %s Port %d", ep_address_to_str(&addr), port);
- offset += 2;
+ offset += 2;
break;
}
return offset;
@@ -537,9 +666,9 @@ acn_add_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int off
static guint32
acn_add_dmp_address_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, acn_dmp_adt_type *adt)
{
- proto_item *pi;
- proto_tree *this_tree = NULL;
- guint8 D;
+ proto_item *pi;
+ proto_tree *this_tree = NULL;
+ guint8 D;
const gchar *name;
/* header contains address and data type */
@@ -555,7 +684,7 @@ acn_add_dmp_address_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
proto_tree_add_uint(this_tree, hf_acn_dmp_adt_d, tvb, offset, 1, adt->flags);
proto_tree_add_uint(this_tree, hf_acn_dmp_adt_x, tvb, offset, 1, adt->flags);
proto_tree_add_uint(this_tree, hf_acn_dmp_adt_a, tvb, offset, 1, adt->flags);
- offset++;
+ offset += 1;
return offset; /* bytes used */
}
@@ -567,35 +696,36 @@ acn_add_dmp_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int
{
guint32 start_offset;
guint32 bytes_used;
- guint8 D, A;
+ guint8 D, A;
start_offset = offset;
D = ACN_DMP_ADT_EXTRACT_D(adt->flags);
A = ACN_DMP_ADT_EXTRACT_A(adt->flags);
+
switch (D) {
- case ACN_DMP_ADT_D_NS: /* Non-range address, Single data item */
- adt->increment = 1;
- adt->count = 1;
- switch (A) { /* address */
- case ACN_DMP_ADT_A_1: /* One octet address, (range: one octet address, increment, and count). */
- adt->address = tvb_get_guint8(tvb, offset);
- offset += 1;
- bytes_used = 1;
+ case ACN_DMP_ADT_D_NS: /* Non-range address, Single data item */
+ adt->increment = 1;
+ adt->count = 1;
+ switch (A) { /* address */
+ case ACN_DMP_ADT_A_1: /* One octet address, (range: one octet address, increment, and count). */
+ adt->address = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ bytes_used = 1;
break;
- case ACN_DMP_ADT_A_2: /* Two octet address, (range: two octet address, increment, and count). */
- adt->address = tvb_get_ntohs(tvb, offset);
- offset += 2;
- bytes_used = 2;
+ case ACN_DMP_ADT_A_2: /* Two octet address, (range: two octet address, increment, and count). */
+ adt->address = tvb_get_ntohs(tvb, offset);
+ offset += 2;
+ bytes_used = 2;
break;
- case ACN_DMP_ADT_A_4: /* Four octet address, (range: one octet address, increment, and count). */
- adt->address = tvb_get_ntohl(tvb, offset);
- offset += 4;
- bytes_used = 4;
+ case ACN_DMP_ADT_A_4: /* Four octet address, (range: one octet address, increment, and count). */
+ adt->address = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+ bytes_used = 4;
break;
- default: /* and ACN_DMP_ADT_A_R (Four octet address, (range: four octet address, increment, and count)*/
+ default: /* and ACN_DMP_ADT_A_R (Four octet address, (range: four octet address, increment, and count)*/
return offset;
- } /* of switch (A) */
+ } /* of switch (A) */
if (adt->flags & ACN_DMP_ADT_FLAG_V) {
proto_tree_add_text(tree, tvb, start_offset, bytes_used, "Virtual Address: 0x%X", adt->address);
@@ -604,83 +734,91 @@ acn_add_dmp_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int
}
break;
- case ACN_DMP_ADT_D_RS: /* Range address, Single data item */
+ case ACN_DMP_ADT_D_RS: /* Range address, Single data item */
switch (A) {
- case ACN_DMP_ADT_A_1: /* One octet address, (range: one octet address, increment, and count). */
- adt->address = tvb_get_guint8(tvb, offset);
- offset += 1;
- adt->increment = tvb_get_guint8(tvb, offset);
- offset += 1;
- adt->count = tvb_get_guint8(tvb, offset);
- offset += 1;
- bytes_used = 3;
+ case ACN_DMP_ADT_A_1: /* One octet address, (range: one octet address, increment, and count). */
+ adt->address = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ adt->increment = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ adt->count = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ bytes_used = 3;
break;
- case ACN_DMP_ADT_A_2: /* Two octet address, (range: two octet address, increment, and count). */
- adt->address = tvb_get_ntohs(tvb, offset);
- offset += 2;
- adt->increment = tvb_get_ntohs(tvb, offset);
- offset += 2;
- adt->count = tvb_get_ntohs(tvb, offset);
- offset += 2;
- bytes_used = 6;
+ case ACN_DMP_ADT_A_2: /* Two octet address, (range: two octet address, increment, and count). */
+ adt->address = tvb_get_ntohs(tvb, offset);
+ offset += 2;
+ adt->increment = tvb_get_ntohs(tvb, offset);
+ offset += 2;
+ adt->count = tvb_get_ntohs(tvb, offset);
+ offset += 2;
+ bytes_used = 6;
break;
- case ACN_DMP_ADT_A_4: /* Four octet address, (range: four octet address, increment, and count). */
- adt->address = tvb_get_ntohl(tvb, offset);
- offset += 4;
- adt->increment = tvb_get_ntohl(tvb, offset);
- offset += 4;
- adt->count = tvb_get_ntohl(tvb, offset);
- offset += 4;
- bytes_used = 12;
+ case ACN_DMP_ADT_A_4: /* Four octet address, (range: four octet address, increment, and count). */
+ adt->address = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+ adt->increment = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+ adt->count = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+ bytes_used = 12;
break;
- default: /* and ACN_DMP_ADT_A_R, this reserved....so it has no meaning yet */
+ default: /* and ACN_DMP_ADT_A_R, this reserved....so it has no meaning yet */
return offset;
- } /* of switch (A) */
+ } /* of switch (A) */
if (adt->flags & ACN_DMP_ADT_FLAG_V) {
- proto_tree_add_text(tree, tvb, start_offset, bytes_used, "Virtual Address first: 0x%X, inc: %d, count: %d", adt->address, adt->increment, adt->count);
+ proto_tree_add_text(tree, tvb, start_offset, bytes_used,
+ "Virtual Address first: 0x%X, inc: %d, count: %d",
+ adt->address, adt->increment, adt->count);
} else {
- proto_tree_add_text(tree, tvb, start_offset, bytes_used, "Actual Address first: 0x%X, inc: %d, count: %d", adt->address, adt->increment, adt->count);
+ proto_tree_add_text(tree, tvb, start_offset, bytes_used,
+ "Actual Address first: 0x%X, inc: %d, count: %d",
+ adt->address, adt->increment, adt->count);
}
break;
- case ACN_DMP_ADT_D_RE: /* Range address, Array of equal size data items */
+ case ACN_DMP_ADT_D_RE: /* Range address, Array of equal size data items */
switch (A) {
- case ACN_DMP_ADT_A_1: /* One octet address, (range: one octet address, increment, and count). */
- adt->address = tvb_get_guint8(tvb, offset);
- offset += 1;
- adt->increment = tvb_get_guint8(tvb, offset);
- offset += 1;
- adt->count = tvb_get_guint8(tvb, offset);
- offset += 1;
- bytes_used = 3;
+ case ACN_DMP_ADT_A_1: /* One octet address, (range: one octet address, increment, and count). */
+ adt->address = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ adt->increment = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ adt->count = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ bytes_used = 3;
break;
- case ACN_DMP_ADT_A_2: /* Two octet address, (range: two octet address, increment, and count). */
- adt->address = tvb_get_ntohs(tvb, offset);
- offset += 2;
- adt->increment = tvb_get_ntohs(tvb, offset);
- offset += 2;
- adt->count = tvb_get_ntohs(tvb, offset);
- offset += 2;
- bytes_used = 6;
+ case ACN_DMP_ADT_A_2: /* Two octet address, (range: two octet address, increment, and count). */
+ adt->address = tvb_get_ntohs(tvb, offset);
+ offset += 2;
+ adt->increment = tvb_get_ntohs(tvb, offset);
+ offset += 2;
+ adt->count = tvb_get_ntohs(tvb, offset);
+ offset += 2;
+ bytes_used = 6;
break;
- case ACN_DMP_ADT_A_4: /* Four octet address, (range: four octet address, increment, and count). */
- adt->address = tvb_get_ntohl(tvb, offset);
- offset += 4;
- adt->increment = tvb_get_ntohl(tvb, offset);
- offset += 4;
- adt->count = tvb_get_ntohl(tvb, offset);
- offset += 4;
- bytes_used = 12;
+ case ACN_DMP_ADT_A_4: /* Four octet address, (range: four octet address, increment, and count). */
+ adt->address = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+ adt->increment = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+ adt->count = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+ bytes_used = 12;
break;
- default: /* and ACN_DMP_ADT_A_R, this reserved....so it has no meaning yet */
+ default: /* and ACN_DMP_ADT_A_R, this reserved....so it has no meaning yet */
return offset;
- } /* of switch (A) */
+ } /* of switch (A) */
if (adt->flags & ACN_DMP_ADT_FLAG_V) {
- proto_tree_add_text(tree, tvb, start_offset, bytes_used, "Virtual Address first: 0x%X, inc: %d, count: %d", adt->address, adt->increment, adt->count);
+ proto_tree_add_text(tree, tvb, start_offset, bytes_used,
+ "Virtual Address first: 0x%X, inc: %d, count: %d",
+ adt->address, adt->increment, adt->count);
} else {
- proto_tree_add_text(tree, tvb, start_offset, bytes_used, "Actual Address first: 0x%X, inc: %d, count: %d", adt->address, adt->increment, adt->count);
+ proto_tree_add_text(tree, tvb, start_offset, bytes_used,
+ "Actual Address first: 0x%X, inc: %d, count: %d",
+ adt->address, adt->increment, adt->count);
}
break;
@@ -718,9 +856,13 @@ acn_add_dmp_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int
} /* of switch (A) */
if (adt->flags & ACN_DMP_ADT_FLAG_V) {
- proto_tree_add_text(tree, tvb, start_offset, bytes_used, "Virtual Address first: 0x%X, inc: %d, count: %d", adt->address, adt->increment, adt->count);
+ proto_tree_add_text(tree, tvb, start_offset, bytes_used,
+ "Virtual Address first: 0x%X, inc: %d, count: %d",
+ adt->address, adt->increment, adt->count);
} else {
- proto_tree_add_text(tree, tvb, start_offset, bytes_used, "Actual Address first: 0x%X, inc: %d, count: %d", adt->address, adt->increment, adt->count);
+ proto_tree_add_text(tree, tvb, start_offset, bytes_used,
+ "Actual Address first: 0x%X, inc: %d, count: %d",
+ adt->address, adt->increment, adt->count);
}
break;
} /* of switch (D) */
@@ -735,14 +877,14 @@ acn_add_dmp_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int
static guint32
acn_add_dmp_data(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, acn_dmp_adt_type *adt)
{
- guint8 D, A;
- guint32 data_size;
- guint32 data_value;
- guint32 data_address;
- guint32 x,y;
- gchar buffer[BUFFER_SIZE];
+ guint8 D, A;
+ guint32 data_size;
+ guint32 data_value;
+ guint32 data_address;
+ guint32 x,y;
+ gchar buffer[BUFFER_SIZE];
proto_item *ti;
- guint32 ok_to_process = FALSE;
+ guint32 ok_to_process = FALSE;
buffer[0] = 0;
@@ -781,18 +923,19 @@ acn_add_dmp_data(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int of
}
if (!ok_to_process) {
- data_size = adt->data_length;
- ti = proto_tree_add_item(tree, hf_acn_data, tvb, offset, data_size, ENC_NA);
- offset += data_size;
+ data_size = adt->data_length;
+ ti = proto_tree_add_item(tree, hf_acn_data, tvb, offset, data_size, ENC_NA);
+ offset += data_size;
proto_item_set_text(ti, "Data and more Address-Data Pairs (further dissection not possible)");
return offset;
}
A = ACN_DMP_ADT_EXTRACT_A(adt->flags);
+
switch (D) {
- case ACN_DMP_ADT_D_NS: /* Non-range address, Single data item */
+ case ACN_DMP_ADT_D_NS: /* Non-range address, Single data item */
/* calculate data size */
- data_size = adt->data_length;
+ data_size = adt->data_length;
data_address = adt->address;
switch (A) {
@@ -829,7 +972,7 @@ acn_add_dmp_data(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int of
break;
default:
/* build string of values */
- for (y=0;y<20 && y<data_size;y++) {
+ for (y=0; y<20 && y<data_size; y++) {
data_value = tvb_get_guint8(tvb, offset+y);
g_snprintf(buffer, BUFFER_SIZE, "%s %2.2X", buffer, data_value);
}
@@ -848,7 +991,7 @@ acn_add_dmp_data(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int of
data_size = adt->data_length;
data_address = adt->address;
- for (x=0;x<adt->count;x++) {
+ for (x=0; x<adt->count; x++) {
switch (A) {
case ACN_DMP_ADT_A_1: /* One octet address, (range: one octet address, increment, and count). */
g_snprintf(buffer, BUFFER_SIZE, "Addr 0x%2.2X ->", data_address);
@@ -882,7 +1025,7 @@ acn_add_dmp_data(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int of
break;
default:
/* build string of values */
- for (y=0;y<20 && y<data_size;y++) {
+ for (y=0; y<20 && y<data_size; y++) {
data_value = tvb_get_guint8(tvb, offset+y);
g_snprintf(buffer, BUFFER_SIZE, "%s %2.2X", buffer, data_value);
}
@@ -902,7 +1045,7 @@ acn_add_dmp_data(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int of
data_size = adt->data_length / adt->count;
data_address = adt->address;
- for (x=0;x<adt->count;x++) {
+ for (x=0; x<adt->count; x++) {
switch (A) {
case ACN_DMP_ADT_A_1: /* One octet address, (range: one octet address, increment, and count). */
g_snprintf(buffer, BUFFER_SIZE, "Addr 0x%2.2X ->", data_address);
@@ -936,7 +1079,7 @@ acn_add_dmp_data(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int of
break;
default:
/* build string of values */
- for (y=0;y<20 && y<data_size;y++) {
+ for (y=0; y<20 && y<data_size; y++) {
data_value = tvb_get_guint8(tvb, offset+y);
g_snprintf(buffer, BUFFER_SIZE, "%s %2.2X", buffer, data_value);
}
@@ -970,12 +1113,12 @@ acn_add_dmp_data(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int of
static guint32
acn_add_dmp_reason_codes(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, acn_dmp_adt_type *adt)
{
- guint8 D, A;
- guint32 data_value;
- guint32 data_address;
- guint32 x;
+ guint8 D, A;
+ guint32 data_value;
+ guint32 data_address;
+ guint32 x;
- gchar buffer[BUFFER_SIZE];
+ gchar buffer[BUFFER_SIZE];
const gchar *name;
buffer[0] = 0;
@@ -1000,17 +1143,15 @@ acn_add_dmp_reason_codes(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
}
/* Get reason */
- data_value = tvb_get_guint8(tvb, offset);
- /* convert to string */
- name = val_to_str(data_value, acn_dmp_reason_code_vals, "reason not valid (%d)");
- /* Add item */
+ data_value = tvb_get_guint8(tvb, offset);
+ name = val_to_str(data_value, acn_dmp_reason_code_vals, "reason not valid (%d)");
proto_tree_add_uint_format(tree, hf_acn_data8, tvb, offset, 1, data_value, "%s %s", buffer, name);
- offset++;
+ offset += 1;
break;
case ACN_DMP_ADT_D_RS: /* Range address, Single data item */
data_address = adt->address;
- for (x=0;x<adt->count;x++) {
+ for (x=0; x<adt->count; x++) {
switch (A) {
case ACN_DMP_ADT_A_1: /* One octet address, (range: one octet address, increment, and count). */
g_snprintf(buffer, BUFFER_SIZE, "Addr 0x%2.2X ->", data_address);
@@ -1027,20 +1168,18 @@ acn_add_dmp_reason_codes(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
/* Get reason */
data_value = tvb_get_guint8(tvb, offset);
- /* convert to string */
- name = val_to_str(data_value, acn_dmp_reason_code_vals, "reason not valid (%d)");
- /* Add item */
+ name = val_to_str(data_value, acn_dmp_reason_code_vals, "reason not valid (%d)");
proto_tree_add_uint_format(tree, hf_acn_data8, tvb, offset, 1, data_value, "%s %s", buffer, name);
data_address += adt->increment;
} /* of (x=0;x<adt->count;x++) */
- offset++;
+ offset += 1;
break;
case ACN_DMP_ADT_D_RE: /* Range address, Array of equal size data items */
case ACN_DMP_ADT_D_RM: /* Range address, Series of mixed size data items */
data_address = adt->address;
- for (x=0;x<adt->count;x++) {
+ for (x=0; x<adt->count; x++) {
switch (A) {
case ACN_DMP_ADT_A_1: /* One octet address, (range: one octet address, increment, and count). */
g_snprintf(buffer, BUFFER_SIZE, "Addr 0x%2.2X ->", data_address);
@@ -1055,13 +1194,11 @@ acn_add_dmp_reason_codes(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
return offset;
}
/* Get reason */
- data_value = tvb_get_guint8(tvb, offset);
- /* convert to string */
- name = val_to_str(data_value, acn_dmp_reason_code_vals, "reason not valid (%d)");
- /* Add item */
+ data_value = tvb_get_guint8(tvb, offset);
+ name = val_to_str(data_value, acn_dmp_reason_code_vals, "reason not valid (%d)");
proto_tree_add_uint_format(tree, hf_acn_data8, tvb, offset, 1, data_value, "%s %s", buffer, name);
data_address += adt->increment;
- offset++;
+ offset += 1;
} /* of (x=0;x<adt->count;x++) */
break;
} /* of switch (D) */
@@ -1075,47 +1212,47 @@ static guint32
dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, acn_pdu_offsets *last_pdu_offsets)
{
/* common to all pdu */
- guint8 pdu_flags;
- guint32 pdu_start;
- guint32 pdu_length;
- guint32 pdu_flvh_length; /* flags, length, vector, header */
- guint8 D;
- guint8 octet;
- guint32 length1;
- guint32 length2;
- guint32 length3;
- guint32 vector_offset;
- guint32 header_offset;
- guint32 data_offset;
- guint32 old_offset;
- guint32 end_offset;
- guint32 data_length;
- guint32 address_count;
-
- proto_item *ti, *pi;
- proto_tree *pdu_tree = NULL;
- proto_tree *flag_tree = NULL;
+ guint8 pdu_flags;
+ guint32 pdu_start;
+ guint32 pdu_length;
+ guint32 pdu_flvh_length; /* flags, length, vector, header */
+ guint8 D;
+ guint8 octet;
+ guint32 length1;
+ guint32 length2;
+ guint32 length3;
+ guint32 vector_offset;
+ guint32 header_offset;
+ guint32 data_offset;
+ guint32 old_offset;
+ guint32 end_offset;
+ guint32 data_length;
+ guint32 address_count;
+
+ proto_item *ti, *pi;
+ proto_tree *pdu_tree = NULL;
+ proto_tree *flag_tree = NULL;
/* this pdu */
- const gchar *name;
- acn_dmp_adt_type adt = {0,0,0,0,0,0};
- acn_dmp_adt_type adt2 = {0,0,0,0,0,0};
- guint32 vector;
+ const gchar *name;
+ acn_dmp_adt_type adt = {0,0,0,0,0,0};
+ acn_dmp_adt_type adt2 = {0,0,0,0,0,0};
+ guint32 vector;
/* save start of pdu block */
pdu_start = offset;
/* get PDU flags and length flag first */
- octet = tvb_get_guint8(tvb, offset++);
- pdu_flags = octet & 0xf0;
- length1 = octet & 0x0f; /* bottom 4 bits only */
- length2 = tvb_get_guint8(tvb, offset++);
+ octet = tvb_get_guint8(tvb, offset++);
+ pdu_flags = octet & 0xf0;
+ length1 = octet & 0x0f; /* bottom 4 bits only */
+ length2 = tvb_get_guint8(tvb, offset++);
/* if length flag is set, then we have a 20 bit length else we have a 12 bit */
/* flvh = flags, length, vector, header */
if (pdu_flags & ACN_PDU_FLAG_L) {
length3 = tvb_get_guint8(tvb, offset);
- offset++;
+ offset += 1;
pdu_length = length3 | (length2 << 8) | (length1 << 16);
pdu_flvh_length = 3;
} else {
@@ -1125,11 +1262,11 @@ dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int off
/* offset should now be pointing to vector (if one exists) */
/* Add pdu item and tree */
- ti = proto_tree_add_item(tree, hf_acn_pdu, tvb, pdu_start, pdu_length, ENC_NA);
+ ti = proto_tree_add_item(tree, hf_acn_pdu, tvb, pdu_start, pdu_length, ENC_NA);
pdu_tree = proto_item_add_subtree(ti, ett_acn_dmp_pdu);
/* Add flag item and tree */
- pi = proto_tree_add_uint(pdu_tree, hf_acn_pdu_flags, tvb, pdu_start, 1, pdu_flags);
+ pi = proto_tree_add_uint(pdu_tree, hf_acn_pdu_flags, tvb, pdu_start, 1, pdu_flags);
flag_tree = proto_item_add_subtree(pi, ett_acn_pdu_flags);
proto_tree_add_item(flag_tree, hf_acn_pdu_flag_l, tvb, pdu_start, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(flag_tree, hf_acn_pdu_flag_v, tvb, pdu_start, 1, ENC_BIG_ENDIAN);
@@ -1142,13 +1279,13 @@ dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int off
/* Set vector offset */
if (pdu_flags & ACN_PDU_FLAG_V) {
/* use new values */
- vector_offset = offset;
- last_pdu_offsets->vector = offset;
- offset++;
+ vector_offset = offset;
+ last_pdu_offsets->vector = offset;
+ offset += 1;
pdu_flvh_length++;
} else {
/* use last values */
- vector_offset = last_pdu_offsets->vector;
+ vector_offset = last_pdu_offsets->vector;
}
/* offset should now be pointing to header (if one exists) */
@@ -1164,13 +1301,13 @@ dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int off
/* Set header offset */
if (pdu_flags & ACN_PDU_FLAG_H) {
/* use new values */
- header_offset = offset;
- last_pdu_offsets->header = offset;
- offset++;
+ header_offset = offset;
+ last_pdu_offsets->header = offset;
+ offset += 1;
pdu_flvh_length++;
} else {
/* use last values */
- header_offset = last_pdu_offsets->header;
+ header_offset = last_pdu_offsets->header;
}
/* offset should now be pointing to data (if one exists) */
@@ -1180,14 +1317,14 @@ dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int off
/* Adjust data */
if (pdu_flags & ACN_PDU_FLAG_D) {
/* use new values */
- data_offset = offset;
- data_length = pdu_length - pdu_flvh_length;
- last_pdu_offsets->data = offset;
+ data_offset = offset;
+ data_length = pdu_length - pdu_flvh_length;
+ last_pdu_offsets->data = offset;
last_pdu_offsets->data_length = data_length;
} else {
/* use last values */
- data_offset = last_pdu_offsets->data;
- data_length = last_pdu_offsets->data_length;
+ data_offset = last_pdu_offsets->data;
+ data_length = last_pdu_offsets->data_length;
}
end_offset = data_offset + data_length;
@@ -1197,8 +1334,8 @@ dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int off
case ACN_DMP_VECTOR_GET_PROPERTY:
/* Rip trough property address */
while (data_offset < end_offset) {
- old_offset = data_offset;
- data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+ old_offset = data_offset;
+ data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
if (old_offset == data_offset) break;
}
break;
@@ -1207,13 +1344,13 @@ dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int off
/* But, in reality, this generally won't work as we have know way of */
/* calculating the next Address-Data pair */
while (data_offset < end_offset) {
- old_offset = data_offset;
- data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+ old_offset = data_offset;
+ data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
if (old_offset == data_offset) break;
adt.data_length = data_length - (data_offset - old_offset);
- old_offset = data_offset;
- data_offset = acn_add_dmp_data(tvb, pinfo, pdu_tree, data_offset, &adt);
+ old_offset = data_offset;
+ data_offset = acn_add_dmp_data(tvb, pinfo, pdu_tree, data_offset, &adt);
if (old_offset == data_offset) break;
}
break;
@@ -1222,13 +1359,13 @@ dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int off
/* But, in reality, this generally won't work as we have know way of */
/* calculating the next Address-Data pair */
while (data_offset < end_offset) {
- old_offset = data_offset;
- data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+ old_offset = data_offset;
+ data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
if (old_offset == data_offset) break;
adt.data_length = data_length - (data_offset - old_offset);
- old_offset = data_offset;
- data_offset = acn_add_dmp_data(tvb, pinfo, pdu_tree, data_offset, &adt);
+ old_offset = data_offset;
+ data_offset = acn_add_dmp_data(tvb, pinfo, pdu_tree, data_offset, &adt);
if (old_offset == data_offset) break;
}
break;
@@ -1237,13 +1374,13 @@ dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int off
/* But, in reality, this generally won't work as we have know way of */
/* calculating the next Address-Data pair */
while (data_offset < end_offset) {
- old_offset = data_offset;
- data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+ old_offset = data_offset;
+ data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
if (old_offset == data_offset) break;
adt.data_length = data_length - (data_offset - old_offset);
- old_offset = data_offset;
- data_offset = acn_add_dmp_data(tvb, pinfo, pdu_tree, data_offset, &adt);
+ old_offset = data_offset;
+ data_offset = acn_add_dmp_data(tvb, pinfo, pdu_tree, data_offset, &adt);
if (old_offset == data_offset) break;
}
break;
@@ -1253,8 +1390,8 @@ dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int off
/* Rip through Actual-Virtual Address Pairs */
while (data_offset < end_offset) {
/* actual */
- old_offset = data_offset;
- data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+ old_offset = data_offset;
+ data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
if (old_offset == data_offset) break;
D = ACN_DMP_ADT_EXTRACT_D(adt.flags);
switch (D) {
@@ -1284,84 +1421,84 @@ dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int off
case ACN_DMP_VECTOR_UNMAP_PROPERTY:
/* Rip trough Actaul Proptery Address */
while (data_offset < end_offset) {
- old_offset = data_offset;
- data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+ old_offset = data_offset;
+ data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
if (old_offset == data_offset) break;
}
break;
case ACN_DMP_VECTOR_SUBSCRIBE:
/* Rip trough Proptery Address */
while (data_offset < end_offset) {
- old_offset = data_offset;
- data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+ old_offset = data_offset;
+ data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
if (old_offset == data_offset) break;
}
break;
case ACN_DMP_VECTOR_UNSUBSCRIBE:
/* Rip trough Proptery Address */
while (data_offset < end_offset) {
- old_offset = data_offset;
- data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+ old_offset = data_offset;
+ data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
if (old_offset == data_offset) break;
}
break;
case ACN_DMP_VECTOR_GET_PROPERTY_FAIL:
/* Rip trough Address-Reason Code Pairs */
while (data_offset < end_offset) {
- old_offset = data_offset;
- data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+ old_offset = data_offset;
+ data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
if (old_offset == data_offset) break;
adt.data_length = data_length - (data_offset - old_offset);
- old_offset = data_offset;
- data_offset = acn_add_dmp_reason_codes(tvb, pinfo, pdu_tree, data_offset, &adt);
+ old_offset = data_offset;
+ data_offset = acn_add_dmp_reason_codes(tvb, pinfo, pdu_tree, data_offset, &adt);
if (old_offset == data_offset) break;
}
break;
case ACN_DMP_VECTOR_SET_PROPERTY_FAIL:
/* Rip trough Address-Reason Code Pairs */
while (data_offset < end_offset) {
- old_offset = data_offset;
- data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+ old_offset = data_offset;
+ data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
if (old_offset == data_offset) break;
adt.data_length = data_length - (data_offset - old_offset);
- old_offset = data_offset;
- data_offset = acn_add_dmp_reason_codes(tvb, pinfo, pdu_tree, data_offset, &adt);
+ old_offset = data_offset;
+ data_offset = acn_add_dmp_reason_codes(tvb, pinfo, pdu_tree, data_offset, &adt);
if (old_offset == data_offset) break;
}
break;
case ACN_DMP_VECTOR_MAP_PROPERTY_FAIL:
/* Rip trough Address-Reason Code Pairs */
while (data_offset < end_offset) {
- old_offset = data_offset;
- data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+ old_offset = data_offset;
+ data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
if (old_offset == data_offset) break;
adt.data_length = data_length - (data_offset - old_offset);
- old_offset = data_offset;
- data_offset = acn_add_dmp_reason_codes(tvb, pinfo, pdu_tree, data_offset, &adt);
+ old_offset = data_offset;
+ data_offset = acn_add_dmp_reason_codes(tvb, pinfo, pdu_tree, data_offset, &adt);
if (old_offset == data_offset) break;
}
break;
case ACN_DMP_VECTOR_SUBSCRIBE_ACCEPT:
/* Rip through Property Addrsses */
while (data_offset < end_offset) {
- old_offset = data_offset;
- data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+ old_offset = data_offset;
+ data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
if (old_offset == data_offset) break;
}
break;
case ACN_DMP_VECTOR_SUBSCRIBE_REJECT:
/* Rip trough Address-Reason Code Pairs */
while (data_offset < end_offset) {
- old_offset = data_offset;
- data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+ old_offset = data_offset;
+ data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
if (old_offset == data_offset) break;
adt.data_length = data_length - (data_offset - old_offset);
- old_offset = data_offset;
- data_offset = acn_add_dmp_reason_codes(tvb, pinfo, pdu_tree, data_offset, &adt);
+ old_offset = data_offset;
+ data_offset = acn_add_dmp_reason_codes(tvb, pinfo, pdu_tree, data_offset, &adt);
if (old_offset == data_offset) break;
}
break;
@@ -1371,7 +1508,7 @@ dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int off
case ACN_DMP_VECTOR_ALLOCATE_MAP_REPLY:
/* Single reason code */
proto_tree_add_item(pdu_tree, hf_acn_dmp_reason_code, tvb, data_offset, 1, ENC_BIG_ENDIAN);
- data_offset++;
+ /* data_offset += 1; */
case ACN_DMP_VECTOR_DEALLOCATE_MAP:
/* No data for this */
break;
@@ -1387,40 +1524,40 @@ static guint32
dissect_acn_sdt_wrapped_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, int offset, acn_pdu_offsets *last_pdu_offsets)
{
/* common to all pdu */
- guint8 pdu_flags;
- guint32 pdu_start;
- guint32 pdu_length;
- guint32 pdu_flvh_length; /* flags, length, vector, header */
- guint8 octet;
- guint32 length1;
- guint32 length2;
- guint32 length3;
- guint32 vector_offset;
- guint32 data_offset;
- guint32 data_length;
-
- proto_item *ti, *pi;
- proto_tree *pdu_tree = NULL;
- proto_tree *flag_tree = NULL;
+ guint8 pdu_flags;
+ guint32 pdu_start;
+ guint32 pdu_length;
+ guint32 pdu_flvh_length; /* flags, length, vector, header */
+ guint8 octet;
+ guint32 length1;
+ guint32 length2;
+ guint32 length3;
+ guint32 vector_offset;
+ guint32 data_offset;
+ guint32 data_length;
+
+ proto_item *ti, *pi;
+ proto_tree *pdu_tree = NULL;
+ proto_tree *flag_tree = NULL;
/* this pdu */
const gchar *name;
- guint32 vector;
+ guint32 vector;
/* save start of pdu block */
pdu_start = offset;
/* get PDU flags and length flag first */
- octet = tvb_get_guint8(tvb, offset++);
- pdu_flags = octet & 0xf0;
- length1 = octet & 0x0f; /* bottom 4 bits only */
- length2 = tvb_get_guint8(tvb, offset++);
+ octet = tvb_get_guint8(tvb, offset++);
+ pdu_flags = octet & 0xf0;
+ length1 = octet & 0x0f; /* bottom 4 bits only */
+ length2 = tvb_get_guint8(tvb, offset++);
/* if length flag is set, then we have a 20 bit length else we have a 12 bit */
/* flvh = flags, length, vector, header */
if (pdu_flags & ACN_PDU_FLAG_L) {
length3 = tvb_get_guint8(tvb, offset);
- offset++;
+ offset += 1;
pdu_length = length3 | (length2 << 8) | (length1 << 16);
pdu_flvh_length = 3;
} else {
@@ -1449,7 +1586,7 @@ dissect_acn_sdt_wrapped_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
/* use new values */
vector_offset = offset;
last_pdu_offsets->vector = offset;
- offset++;
+ offset += 1;
pdu_flvh_length++;
} else {
/* use last values */
@@ -1509,7 +1646,7 @@ dissect_acn_sdt_wrapped_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
proto_tree_add_item(pdu_tree, hf_acn_protocol_id, tvb, data_offset, 4, ENC_BIG_ENDIAN);
data_offset += 4;
proto_tree_add_item(pdu_tree, hf_acn_refuse_code, tvb, data_offset, 1, ENC_BIG_ENDIAN);
- /*data_offset++;*/
+ /*data_offset += 1;*/
break;
case ACN_SDT_VECTOR_DISCONNECT:
/* Protocol ID item */
@@ -1521,7 +1658,7 @@ dissect_acn_sdt_wrapped_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
proto_tree_add_item(pdu_tree, hf_acn_protocol_id, tvb, data_offset, 4, ENC_BIG_ENDIAN);
data_offset += 4;
proto_tree_add_item(pdu_tree, hf_acn_reason_code, tvb, data_offset, 1, ENC_BIG_ENDIAN);
- /*data_offset++;*/
+ /*data_offset += 1;*/
break;
}
@@ -1536,47 +1673,47 @@ static guint32
dissect_acn_sdt_client_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, acn_pdu_offsets *last_pdu_offsets)
{
/* common to all pdu */
- guint8 pdu_flags;
- guint32 pdu_start;
- guint32 pdu_length;
- guint32 pdu_flvh_length; /* flags, length, vector, header */
- acn_pdu_offsets pdu_offsets = {0,0,0,0,0};
- guint8 octet;
- guint32 length1;
- guint32 length2;
- guint32 length3;
- guint32 vector_offset;
- guint32 header_offset;
- guint32 data_offset;
- guint32 data_length;
- guint32 old_offset;
- guint32 end_offset;
-
- proto_item *ti, *pi;
- proto_tree *pdu_tree = NULL;
- proto_tree *flag_tree = NULL;
+ guint8 pdu_flags;
+ guint32 pdu_start;
+ guint32 pdu_length;
+ guint32 pdu_flvh_length; /* flags, length, vector, header */
+ acn_pdu_offsets pdu_offsets = {0,0,0,0,0};
+ guint8 octet;
+ guint32 length1;
+ guint32 length2;
+ guint32 length3;
+ guint32 vector_offset;
+ guint32 header_offset;
+ guint32 data_offset;
+ guint32 data_length;
+ guint32 old_offset;
+ guint32 end_offset;
+
+ proto_item *ti, *pi;
+ proto_tree *pdu_tree = NULL;
+ proto_tree *flag_tree = NULL;
/* this pdu */
- const gchar *name;
- guint32 member_id;
- guint32 protocol_id;
- guint16 association;
+ const gchar *name;
+ guint32 member_id;
+ guint32 protocol_id;
+ guint16 association;
/* save start of pdu block */
- pdu_start = offset;
+ pdu_start = offset;
pdu_offsets.start = pdu_start;
/* get PDU flags and length flag first */
- octet = tvb_get_guint8(tvb, offset++);
- pdu_flags = octet & 0xf0;
- length1 = octet & 0x0f; /* bottom 4 bits only */
- length2 = tvb_get_guint8(tvb, offset++);
+ octet = tvb_get_guint8(tvb, offset++);
+ pdu_flags = octet & 0xf0;
+ length1 = octet & 0x0f; /* bottom 4 bits only */
+ length2 = tvb_get_guint8(tvb, offset++);
/* if length flag is set, then we have a 20 bit length else we have a 12 bit */
/* flvh = flags, length, vector, header */
if (pdu_flags & ACN_PDU_FLAG_L) {
length3 = tvb_get_guint8(tvb, offset);
- offset++;
+ offset += 1;
pdu_length = length3 | (length2 << 8) | (length1 << 16);
pdu_flvh_length = 3;
} else {
@@ -1586,7 +1723,7 @@ dissect_acn_sdt_client_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
/* offset should now be pointing to vector (if one exists) */
/* Add pdu item and tree */
- ti = proto_tree_add_item(tree, hf_acn_pdu, tvb, pdu_start, pdu_length, ENC_NA);
+ ti = proto_tree_add_item(tree, hf_acn_pdu, tvb, pdu_start, pdu_length, ENC_NA);
pdu_tree = proto_item_add_subtree(ti, ett_acn_sdt_client_pdu);
/* Add flag item and tree */
@@ -1620,13 +1757,13 @@ dissect_acn_sdt_client_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
/* Set header offset */
if (pdu_flags & ACN_PDU_FLAG_H) {
/* use new values */
- header_offset = offset;
- last_pdu_offsets->header = offset;
- offset += 6;
- pdu_flvh_length += 6;
+ header_offset = offset;
+ last_pdu_offsets->header = offset;
+ offset += 6;
+ pdu_flvh_length += 6;
} else {
/* use last values */
- header_offset = last_pdu_offsets->header;
+ header_offset = last_pdu_offsets->header;
}
/* offset should now be pointing to data (if one exists) */
@@ -1662,14 +1799,14 @@ dissect_acn_sdt_client_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
switch (protocol_id) {
case ACN_PROTOCOL_ID_SDT:
while (data_offset < end_offset) {
- old_offset = data_offset;
+ old_offset = data_offset;
data_offset = dissect_acn_sdt_wrapped_pdu(tvb, pinfo, pdu_tree, data_offset, &pdu_offsets);
if (old_offset == data_offset) break;
}
break;
case ACN_PROTOCOL_ID_DMP:
while (data_offset < end_offset) {
- old_offset = data_offset;
+ old_offset = data_offset;
data_offset = dissect_acn_dmp_pdu(tvb, pinfo, pdu_tree, data_offset, &pdu_offsets);
if (data_offset == old_offset) break;
}
@@ -1701,7 +1838,7 @@ ltos(guint8 level, gchar *string, guint8 base, gchar leading_char, guint8 min_ch
}
/* deal with zeros */
if ((level == 0) && (!show_zero)) {
- for (i=0;i<min_chars;i++) {
+ for (i=0; i<min_chars; i++) {
string[i] = '.';
}
string[i++] = ' ';
@@ -1716,7 +1853,7 @@ ltos(guint8 level, gchar *string, guint8 base, gchar leading_char, guint8 min_ch
} while ((level /= base) > 0);
/* expand to needed character */
- for (;i<min_chars;i++) {
+ for (; i<min_chars; i++) {
string[i] = leading_char;
}
/* terminate */
@@ -1739,43 +1876,42 @@ static guint32
dissect_acn_dmx_data_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, acn_pdu_offsets *last_pdu_offsets)
{
/* common to all pdu */
- guint8 pdu_flags;
- guint32 pdu_start;
- guint32 pdu_length;
- guint32 pdu_flvh_length; /* flags, length, vector, header */
- guint8 octet;
- guint32 length1;
- guint32 length2;
- guint32 length3;
- guint32 vector_offset;
- guint32 data_offset;
- guint32 end_offset;
- guint32 data_length;
- guint32 header_offset;
- guint32 total_cnt;
- guint32 item_cnt;
-
-
- proto_item *ti, *pi;
- proto_tree *pdu_tree = NULL;
- proto_tree *flag_tree = NULL;
+ guint8 pdu_flags;
+ guint32 pdu_start;
+ guint32 pdu_length;
+ guint32 pdu_flvh_length; /* flags, length, vector, header */
+ guint8 octet;
+ guint32 length1;
+ guint32 length2;
+ guint32 length3;
+ guint32 vector_offset;
+ guint32 data_offset;
+ guint32 end_offset;
+ guint32 data_length;
+ guint32 header_offset;
+ guint32 total_cnt;
+ guint32 item_cnt;
+
+ proto_item *ti, *pi;
+ proto_tree *pdu_tree = NULL;
+ proto_tree *flag_tree = NULL;
/* proto_tree *addr_tree = NULL; */
/* this pdu */
- acn_dmp_adt_type adt = {0,0,0,0,0,0};
- const gchar *name;
- guint32 vector;
- gchar buffer[BUFFER_SIZE];
- char *buf_ptr;
- guint32 x;
- guint8 level;
- guint8 min_char;
- guint8 base;
- gchar leading_char;
- guint8 perline;
- guint8 halfline;
- guint16 dmx_count;
- guint16 dmx_start_code;
+ acn_dmp_adt_type adt = {0,0,0,0,0,0};
+ const gchar *name;
+ guint32 vector;
+ gchar buffer[BUFFER_SIZE];
+ char *buf_ptr;
+ guint32 x;
+ guint8 level;
+ guint8 min_char;
+ guint8 base;
+ gchar leading_char;
+ guint8 perline;
+ guint8 halfline;
+ guint16 dmx_count;
+ guint16 dmx_start_code;
buffer[0] = 0;
@@ -1783,16 +1919,16 @@ dissect_acn_dmx_data_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo,
pdu_start = offset;
/* get PDU flags and length flag first */
- octet = tvb_get_guint8(tvb, offset++);
- pdu_flags = octet & 0xf0;
- length1 = octet & 0x0f; /* bottom 4 bits only */
- length2 = tvb_get_guint8(tvb, offset++);
+ octet = tvb_get_guint8(tvb, offset++);
+ pdu_flags = octet & 0xf0;
+ length1 = octet & 0x0f; /* bottom 4 bits only */
+ length2 = tvb_get_guint8(tvb, offset++);
/* if length flag is set, then we have a 20 bit length else we have a 12 bit */
/* flvh = flags, length, vector, header */
if (pdu_flags & ACN_PDU_FLAG_L) {
length3 = tvb_get_guint8(tvb, offset);
- offset++;
+ offset += 1;
pdu_length = length3 | (length2 << 8) | (length1 << 16);
pdu_flvh_length = 3;
} else {
@@ -1802,11 +1938,11 @@ dissect_acn_dmx_data_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo,
/* offset should now be pointing to vector (if one exists) */
/* Add pdu item and tree */
- ti = proto_tree_add_item(tree, hf_acn_pdu, tvb, pdu_start, pdu_length, ENC_NA);
+ ti = proto_tree_add_item(tree, hf_acn_pdu, tvb, pdu_start, pdu_length, ENC_NA);
pdu_tree = proto_item_add_subtree(ti, ett_acn_dmx_data_pdu);
/* Add flag item and tree */
- pi = proto_tree_add_uint(pdu_tree, hf_acn_pdu_flags, tvb, pdu_start, 1, pdu_flags);
+ pi = proto_tree_add_uint(pdu_tree, hf_acn_pdu_flags, tvb, pdu_start, 1, pdu_flags);
flag_tree = proto_item_add_subtree(pi, ett_acn_pdu_flags);
proto_tree_add_item(flag_tree, hf_acn_pdu_flag_l, tvb, pdu_start, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(flag_tree, hf_acn_pdu_flag_v, tvb, pdu_start, 1, ENC_BIG_ENDIAN);
@@ -1843,7 +1979,7 @@ dissect_acn_dmx_data_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo,
/* use new values */
header_offset = offset;
last_pdu_offsets->header = offset;
- offset++;
+ offset += 1;
pdu_flvh_length++;
} else {
/* use last values */
@@ -1871,7 +2007,7 @@ dissect_acn_dmx_data_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo,
switch (vector) {
case ACN_DMP_VECTOR_SET_PROPERTY:
dmx_start_code = tvb_get_ntohs(tvb, data_offset);
- if(protocol_id==ACN_PROTOCOL_ID_DMX_2){
+ if (protocol_id==ACN_PROTOCOL_ID_DMX_2) {
proto_tree_add_item(pdu_tree, hf_acn_dmx_2_first_property_address, tvb, data_offset, 2, ENC_BIG_ENDIAN);
} else{
proto_tree_add_item(pdu_tree, hf_acn_dmx_start_code, tvb, data_offset, 2, ENC_BIG_ENDIAN);
@@ -1879,25 +2015,25 @@ dissect_acn_dmx_data_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo,
data_offset += 2;
proto_tree_add_item(pdu_tree, hf_acn_dmx_increment, tvb, data_offset, 2, ENC_BIG_ENDIAN);
data_offset += 2;
- dmx_count = tvb_get_ntohs(tvb, data_offset);
+ dmx_count = tvb_get_ntohs(tvb, data_offset);
proto_tree_add_item(pdu_tree, hf_acn_dmx_count, tvb, data_offset, 2, ENC_BIG_ENDIAN);
data_offset += 2;
- if(protocol_id==ACN_PROTOCOL_ID_DMX_2){
+ if (protocol_id==ACN_PROTOCOL_ID_DMX_2) {
proto_tree_add_item(pdu_tree, hf_acn_dmx_2_start_code, tvb, data_offset, 1, ENC_BIG_ENDIAN);
data_offset += 1;
- dmx_count -= 1;
+ dmx_count -= 1;
}
buf_ptr = buffer;
switch (global_acn_dmx_display_line_format) {
case ACN_PREF_DMX_DISPLAY_16PL:
- perline = 16;
+ perline = 16;
halfline = 8;
break;
default:
- perline = 20;
+ perline = 20;
halfline = 10;
}
@@ -1905,12 +2041,12 @@ dissect_acn_dmx_data_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo,
switch ((guint)global_acn_dmx_display_view) {
case ACN_PREF_DMX_DISPLAY_HEX:
min_char = 2;
- base = 16;
+ base = 16;
break;
/* case ACN_PREF_DMX_DISPLAY_PER: */
default:
min_char = 3;
- base = 10;
+ base = 10;
}
/* do we display leading zeros */
@@ -1934,7 +2070,7 @@ dissect_acn_dmx_data_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo,
g_snprintf(buffer, BUFFER_SIZE, "%-10s: ", "Data...");
buf_ptr += 9;
- for (x=1;x<=perline;x++) {
+ for (x=1; x<=perline; x++) {
buf_ptr = ltos((guint8)x, buf_ptr, 10, ' ', min_char, FALSE);
if (x==halfline) {
*buf_ptr++ = '|';
@@ -1950,7 +2086,7 @@ dissect_acn_dmx_data_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo,
total_cnt = 0;
item_cnt = 0;
- for (x=data_offset; x < end_offset; x++) {
+ for (x=data_offset; x<end_offset; x++) {
level = tvb_get_guint8(tvb, x);
if (global_acn_dmx_display_view==ACN_PREF_DMX_DISPLAY_PER) {
if ((level > 0) && (level < 3)) {
@@ -1971,11 +2107,11 @@ dissect_acn_dmx_data_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo,
buf_ptr = buffer + 9;
item_cnt = 0;
} else {
- /* add separater character */
+ /* add separator character */
if (item_cnt == halfline) {
*buf_ptr++ = '|';
*buf_ptr++ = ' ';
- *buf_ptr = '\0';
+ *buf_ptr = '\0';
}
}
}
@@ -2002,48 +2138,48 @@ static guint32
dissect_acn_dmx_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, acn_pdu_offsets *last_pdu_offsets)
{
/* common to all pdu */
- guint8 pdu_flags;
- guint32 pdu_start;
- guint32 pdu_length;
- guint32 pdu_flvh_length; /* flags, length, vector, header */
- acn_pdu_offsets pdu_offsets = {0,0,0,0,0};
- guint8 octet;
- guint8 option_flags;
- guint32 length1;
- guint32 length2;
- guint32 length3;
- guint32 vector_offset;
- guint32 data_offset;
- guint32 data_length;
-
- proto_item *ti, *pi;
- proto_tree *pdu_tree = NULL;
- proto_tree *flag_tree = NULL;
-
- const char *name;
+ guint8 pdu_flags;
+ guint32 pdu_start;
+ guint32 pdu_length;
+ guint32 pdu_flvh_length; /* flags, length, vector, header */
+ acn_pdu_offsets pdu_offsets = {0,0,0,0,0};
+ guint8 octet;
+ guint8 option_flags;
+ guint32 length1;
+ guint32 length2;
+ guint32 length3;
+ guint32 vector_offset;
+ guint32 data_offset;
+ guint32 data_length;
+
+ proto_item *ti, *pi;
+ proto_tree *pdu_tree = NULL;
+ proto_tree *flag_tree = NULL;
+
+ const char *name;
/* this pdu */
- guint32 vector;
+ guint32 vector;
- guint32 universe;
- guint32 priority;
- guint32 sequence;
+ guint32 universe;
+ guint32 priority;
+ guint32 sequence;
/* save start of pdu block */
pdu_start = offset;
pdu_offsets.start = pdu_start;
/* get PDU flags and length flag first */
- octet = tvb_get_guint8(tvb, offset++);
- pdu_flags = octet & 0xf0;
- length1 = octet & 0x0f; /* bottom 4 bits only */
- length2 = tvb_get_guint8(tvb, offset++);
+ octet = tvb_get_guint8(tvb, offset++);
+ pdu_flags = octet & 0xf0;
+ length1 = octet & 0x0f; /* bottom 4 bits only */
+ length2 = tvb_get_guint8(tvb, offset++);
/* if length flag is set, then we have a 20 bit length else we have a 12 bit */
/* flvh = flags, length, vector, header */
if (pdu_flags & ACN_PDU_FLAG_L) {
length3 = tvb_get_guint8(tvb, offset);
- offset++;
+ offset += 1;
pdu_length = length3 | (length2 << 8) | (length1 << 16);
pdu_flvh_length = 3;
} else {
@@ -2073,7 +2209,7 @@ dissect_acn_dmx_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo, prot
/* use new values */
vector_offset = offset;
last_pdu_offsets->vector = offset;
- offset += 4;
+ offset += 4;
pdu_flvh_length += 4;
} else {
/* use last values */
@@ -2108,7 +2244,7 @@ dissect_acn_dmx_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo, prot
/* process based on vector */
switch (vector) {
case 0x02:
- if(protocol_id==ACN_PROTOCOL_ID_DMX_2){
+ if (protocol_id==ACN_PROTOCOL_ID_DMX_2) {
proto_tree_add_item(pdu_tree, hf_acn_dmx_source_name, tvb, data_offset, 64, ENC_UTF_8|ENC_NA);
data_offset += 64;
} else{
@@ -2120,7 +2256,7 @@ dissect_acn_dmx_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo, prot
proto_tree_add_item(pdu_tree, hf_acn_dmx_priority, tvb, data_offset, 1, ENC_BIG_ENDIAN);
data_offset += 1;
- if(protocol_id==ACN_PROTOCOL_ID_DMX_2){
+ if (protocol_id==ACN_PROTOCOL_ID_DMX_2) {
proto_tree_add_item(pdu_tree, hf_acn_dmx_2_reserved, tvb, data_offset, 2, ENC_BIG_ENDIAN);
data_offset += 2;
}
@@ -2129,7 +2265,7 @@ dissect_acn_dmx_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo, prot
proto_tree_add_item(pdu_tree, hf_acn_dmx_sequence_number, tvb, data_offset, 1, ENC_BIG_ENDIAN);
data_offset += 1;
- if(protocol_id==ACN_PROTOCOL_ID_DMX_2){
+ if (protocol_id == ACN_PROTOCOL_ID_DMX_2) {
option_flags = tvb_get_guint8(tvb, data_offset);
pi = proto_tree_add_uint(pdu_tree, hf_acn_dmx_2_options, tvb, data_offset, 1, option_flags);
flag_tree = proto_item_add_subtree(pi, ett_acn_dmx_2_options);
@@ -2159,46 +2295,46 @@ static guint32
dissect_acn_sdt_base_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, acn_pdu_offsets *last_pdu_offsets)
{
/* common to all pdu */
- guint8 pdu_flags;
- guint32 pdu_start;
- guint32 pdu_length;
- guint32 pdu_flvh_length; /* flags, length, vector, header */
- acn_pdu_offsets pdu_offsets = {0,0,0,0,0};
- guint8 octet;
- guint32 length1;
- guint32 length2;
- guint32 length3;
- guint32 vector_offset;
- guint32 data_offset;
- guint32 end_offset;
- guint32 old_offset;
- guint32 data_length;
-
- proto_item *ti, *pi;
- proto_tree *pdu_tree = NULL;
- proto_tree *flag_tree = NULL;
+ guint8 pdu_flags;
+ guint32 pdu_start;
+ guint32 pdu_length;
+ guint32 pdu_flvh_length; /* flags, length, vector, header */
+ acn_pdu_offsets pdu_offsets = {0,0,0,0,0};
+ guint8 octet;
+ guint32 length1;
+ guint32 length2;
+ guint32 length3;
+ guint32 vector_offset;
+ guint32 data_offset;
+ guint32 end_offset;
+ guint32 old_offset;
+ guint32 data_length;
+
+ proto_item *ti, *pi;
+ proto_tree *pdu_tree = NULL;
+ proto_tree *flag_tree = NULL;
/* this pdu */
- const gchar *name;
- guint32 vector;
- guint32 member_id;
+ const gchar *name;
+ guint32 vector;
+ guint32 member_id;
/* save start of pdu block */
- pdu_start = offset;
+ pdu_start = offset;
pdu_offsets.start = pdu_start;
/* get PDU flags and length flag first */
- octet = tvb_get_guint8(tvb, offset++);
- pdu_flags = octet & 0xf0;
- length1 = octet & 0x0f; /* bottom 4 bits only */
- length2 = tvb_get_guint8(tvb, offset++);
+ octet = tvb_get_guint8(tvb, offset++);
+ pdu_flags = octet & 0xf0;
+ length1 = octet & 0x0f; /* bottom 4 bits only */
+ length2 = tvb_get_guint8(tvb, offset++);
/* if length flag is set, then we have a 20 bit length else we have a 12 bit */
/* flvh = flags, length, vector, header */
if (pdu_flags & ACN_PDU_FLAG_L) {
length3 = tvb_get_guint8(tvb, offset);
- offset++;
- pdu_length = length3 | (length2 << 8) | (length1 << 16);
+ offset += 1;
+ pdu_length = length3 | (length2 << 8) | (length1 << 16);
pdu_flvh_length = 3;
} else {
pdu_length = length2 | (length1 << 8);
@@ -2226,7 +2362,7 @@ dissect_acn_sdt_base_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, in
/* use new values */
vector_offset = offset;
last_pdu_offsets->vector = offset;
- offset++;
+ offset += 1;
pdu_flvh_length++;
} else {
/* use last values */
@@ -2265,19 +2401,19 @@ dissect_acn_sdt_base_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, in
break;
case ACN_SDT_VECTOR_REL_WRAP:
case ACN_SDT_VECTOR_UNREL_WRAP:
- proto_tree_add_item(pdu_tree, hf_acn_channel_number, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(pdu_tree, hf_acn_channel_number, tvb, data_offset, 2, ENC_BIG_ENDIAN);
data_offset += 2;
- proto_tree_add_item(pdu_tree, hf_acn_total_sequence_number, tvb, data_offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(pdu_tree, hf_acn_total_sequence_number, tvb, data_offset, 4, ENC_BIG_ENDIAN);
data_offset += 4;
proto_tree_add_item(pdu_tree, hf_acn_reliable_sequence_number, tvb, data_offset, 4, ENC_BIG_ENDIAN);
data_offset += 4;
proto_tree_add_item(pdu_tree, hf_acn_oldest_available_wrapper, tvb, data_offset, 4, ENC_BIG_ENDIAN);
data_offset += 4;
- proto_tree_add_item(pdu_tree, hf_acn_first_memeber_to_ack, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(pdu_tree, hf_acn_first_memeber_to_ack, tvb, data_offset, 2, ENC_BIG_ENDIAN);
data_offset += 2;
- proto_tree_add_item(pdu_tree, hf_acn_last_memeber_to_ack, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(pdu_tree, hf_acn_last_memeber_to_ack, tvb, data_offset, 2, ENC_BIG_ENDIAN);
data_offset += 2;
- proto_tree_add_item(pdu_tree, hf_acn_mak_threshold, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(pdu_tree, hf_acn_mak_threshold, tvb, data_offset, 2, ENC_BIG_ENDIAN);
data_offset += 2;
while (data_offset < end_offset) {
@@ -2289,15 +2425,15 @@ dissect_acn_sdt_base_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, in
case ACN_SDT_VECTOR_CHANNEL_PARAMS:
break;
case ACN_SDT_VECTOR_JOIN:
- proto_tree_add_item(pdu_tree, hf_acn_cid, tvb, data_offset, 16, ENC_BIG_ENDIAN);
+ proto_tree_add_item(pdu_tree, hf_acn_cid, tvb, data_offset, 16, ENC_BIG_ENDIAN);
data_offset += 16;
- proto_tree_add_item(pdu_tree, hf_acn_member_id, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(pdu_tree, hf_acn_member_id, tvb, data_offset, 2, ENC_BIG_ENDIAN);
data_offset += 2;
- proto_tree_add_item(pdu_tree, hf_acn_channel_number, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(pdu_tree, hf_acn_channel_number, tvb, data_offset, 2, ENC_BIG_ENDIAN);
data_offset += 2;
- proto_tree_add_item(pdu_tree, hf_acn_reciprocal_channel, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(pdu_tree, hf_acn_reciprocal_channel, tvb, data_offset, 2, ENC_BIG_ENDIAN);
data_offset += 2;
- proto_tree_add_item(pdu_tree, hf_acn_total_sequence_number, tvb, data_offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(pdu_tree, hf_acn_total_sequence_number, tvb, data_offset, 4, ENC_BIG_ENDIAN);
data_offset += 4;
proto_tree_add_item(pdu_tree, hf_acn_reliable_sequence_number, tvb, data_offset, 4, ENC_BIG_ENDIAN);
data_offset += 4;
@@ -2306,16 +2442,16 @@ dissect_acn_sdt_base_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, in
/*data_offset =*/ acn_add_expiry(tvb, pinfo, pdu_tree, data_offset, "Ad-hoc Expiry:");
break;
case ACN_SDT_VECTOR_JOIN_REFUSE:
- pi = proto_tree_add_item(pdu_tree, hf_acn_cid, tvb, data_offset, 16, ENC_BIG_ENDIAN);
+ pi = proto_tree_add_item(pdu_tree, hf_acn_cid, tvb, data_offset, 16, ENC_BIG_ENDIAN);
data_offset += 16;
proto_item_append_text(pi, "(Leader)");
- proto_tree_add_item(pdu_tree, hf_acn_channel_number, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(pdu_tree, hf_acn_channel_number, tvb, data_offset, 2, ENC_BIG_ENDIAN);
data_offset += 2;
- proto_tree_add_item(pdu_tree, hf_acn_member_id, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(pdu_tree, hf_acn_member_id, tvb, data_offset, 2, ENC_BIG_ENDIAN);
data_offset += 2;
- proto_tree_add_item(pdu_tree, hf_acn_reliable_sequence_number, tvb, data_offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(pdu_tree, hf_acn_reliable_sequence_number, tvb, data_offset, 4, ENC_BIG_ENDIAN);
data_offset += 4;
- proto_tree_add_item(pdu_tree, hf_acn_refuse_code, tvb, data_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(pdu_tree, hf_acn_refuse_code, tvb, data_offset, 1, ENC_BIG_ENDIAN);
/*data_offset ++;*/
break;
case ACN_SDT_VECTOR_JOIN_ACCEPT:
@@ -2334,17 +2470,17 @@ dissect_acn_sdt_base_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, in
case ACN_SDT_VECTOR_LEAVE:
break;
case ACN_SDT_VECTOR_LEAVING:
- pi = proto_tree_add_item(pdu_tree, hf_acn_cid, tvb, data_offset, 16, ENC_BIG_ENDIAN);
+ pi = proto_tree_add_item(pdu_tree, hf_acn_cid, tvb, data_offset, 16, ENC_BIG_ENDIAN);
data_offset += 16;
proto_item_append_text(pi, "(Leader)");
- proto_tree_add_item(pdu_tree, hf_acn_channel_number, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(pdu_tree, hf_acn_channel_number, tvb, data_offset, 2, ENC_BIG_ENDIAN);
data_offset += 2;
- proto_tree_add_item(pdu_tree, hf_acn_member_id, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(pdu_tree, hf_acn_member_id, tvb, data_offset, 2, ENC_BIG_ENDIAN);
data_offset += 2;
proto_tree_add_item(pdu_tree, hf_acn_reliable_sequence_number, tvb, data_offset, 4, ENC_BIG_ENDIAN);
data_offset += 4;
- proto_tree_add_item(pdu_tree, hf_acn_reason_code, tvb, data_offset, 1, ENC_BIG_ENDIAN);
- offset++;
+ proto_tree_add_item(pdu_tree, hf_acn_reason_code, tvb, data_offset, 1, ENC_BIG_ENDIAN);
+ /* offset += 1; */
break;
case ACN_SDT_VECTOR_CONNECT:
break;
@@ -2359,18 +2495,18 @@ dissect_acn_sdt_base_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, in
case ACN_SDT_VECTOR_ACK:
break;
case ACN_SDT_VECTOR_NAK:
- pi = proto_tree_add_item(pdu_tree, hf_acn_cid, tvb, data_offset, 16, ENC_BIG_ENDIAN);
+ pi = proto_tree_add_item(pdu_tree, hf_acn_cid, tvb, data_offset, 16, ENC_BIG_ENDIAN);
data_offset += 16;
proto_item_append_text(pi, "(Leader)");
- proto_tree_add_item(pdu_tree, hf_acn_channel_number, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(pdu_tree, hf_acn_channel_number, tvb, data_offset, 2, ENC_BIG_ENDIAN);
data_offset += 2;
- proto_tree_add_item(pdu_tree, hf_acn_member_id, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(pdu_tree, hf_acn_member_id, tvb, data_offset, 2, ENC_BIG_ENDIAN);
data_offset += 2;
proto_tree_add_item(pdu_tree, hf_acn_reliable_sequence_number, tvb, data_offset, 4, ENC_BIG_ENDIAN);
data_offset += 4;
- proto_tree_add_item(pdu_tree, hf_acn_first_missed_sequence, tvb, data_offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(pdu_tree, hf_acn_first_missed_sequence, tvb, data_offset, 4, ENC_BIG_ENDIAN);
data_offset += 4;
- proto_tree_add_item(pdu_tree, hf_acn_last_missed_sequence, tvb, data_offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(pdu_tree, hf_acn_last_missed_sequence, tvb, data_offset, 4, ENC_BIG_ENDIAN);
/*data_offset += 4;*/
break;
case ACN_SDT_VECTOR_GET_SESSION:
@@ -2399,45 +2535,45 @@ static guint32
dissect_acn_root_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, acn_pdu_offsets *last_pdu_offsets)
{
/* common to all pdu */
- guint8 pdu_flags;
- guint32 pdu_start;
- guint32 pdu_length;
- guint32 pdu_flvh_length; /* flags, length, vector, header */
- acn_pdu_offsets pdu_offsets = {0,0,0,0,0};
- guint8 octet;
- guint32 length1;
- guint32 length2;
- guint32 length3;
- guint32 vector_offset;
- guint32 header_offset;
- guint32 data_offset;
- guint32 end_offset;
- guint32 old_offset;
- guint32 data_length;
-
- proto_item *ti, *pi;
- proto_tree *pdu_tree = NULL;
- proto_tree *flag_tree = NULL;
+ guint8 pdu_flags;
+ guint32 pdu_start;
+ guint32 pdu_length;
+ guint32 pdu_flvh_length; /* flags, length, vector, header */
+ acn_pdu_offsets pdu_offsets = {0,0,0,0,0};
+ guint8 octet;
+ guint32 length1;
+ guint32 length2;
+ guint32 length3;
+ guint32 vector_offset;
+ guint32 header_offset;
+ guint32 data_offset;
+ guint32 end_offset;
+ guint32 old_offset;
+ guint32 data_length;
+
+ proto_item *ti, *pi;
+ proto_tree *pdu_tree = NULL;
+ proto_tree *flag_tree = NULL;
/* this pdu */
- guint32 protocol_id;
- e_guid_t guid;
+ guint32 protocol_id;
+ e_guid_t guid;
/* save start of pdu block */
- pdu_start = offset;
+ pdu_start = offset;
pdu_offsets.start = pdu_start;
/* get PDU flags and length flag first */
- octet = tvb_get_guint8(tvb, offset++);
- pdu_flags = octet & 0xf0;
- length1 = octet & 0x0f; /* bottom 4 bits only */
- length2 = tvb_get_guint8(tvb, offset++);
+ octet = tvb_get_guint8(tvb, offset++);
+ pdu_flags = octet & 0xf0;
+ length1 = octet & 0x0f; /* bottom 4 bits only */
+ length2 = tvb_get_guint8(tvb, offset++);
/* if length flag is set, then we have a 20 bit length else we have a 12 bit */
/* flvh = flags, length, vector, header */
if (pdu_flags & ACN_PDU_FLAG_L) {
length3 = tvb_get_guint8(tvb, offset);
- offset++;
+ offset += 1;
pdu_length = length3 | (length2 << 8) | (length1 << 16);
pdu_flvh_length = 3;
} else {
@@ -2587,12 +2723,12 @@ dissect_acn_root_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int of
static int
dissect_acn(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti = NULL;
- proto_tree *acn_tree = NULL;
- guint32 data_offset = 0;
- guint32 old_offset;
- guint32 end_offset;
- acn_pdu_offsets pdu_offsets = {0,0,0,0,0};
+ proto_item *ti = NULL;
+ proto_tree *acn_tree = NULL;
+ guint32 data_offset = 0;
+ guint32 old_offset;
+ guint32 end_offset;
+ acn_pdu_offsets pdu_offsets = {0,0,0,0,0};
/* if (!is_acn(tvb)) { */
/* return 0; */
@@ -2628,7 +2764,8 @@ dissect_acn(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/******************************************************************************/
/* Register protocol */
-void proto_register_acn(void)
+void
+proto_register_acn(void)
{
static hf_register_info hf[] = {
/**************************************************************************/
diff --git a/epan/dissectors/packet-acn.h b/epan/dissectors/packet-acn.h
deleted file mode 100644
index b7c32068d5..0000000000
--- a/epan/dissectors/packet-acn.h
+++ /dev/null
@@ -1,175 +0,0 @@
-/* packet-acn.h
- * Routines for ACN packet disassembly
- *
- * $Id$
- *
- * Copyright (c) 2003 by Erwin Rol <erwin@erwinrol.com>
- * Copyright (c) 2006 by Electronic Theatre Controls, Inc.
- * Bill Florac <bflorac@etcconnect.com>
- *
- * Wireshark - Network traffic analyzer
- * By Gerald Combs <gerald@wireshark.org>
- * Copyright 1999 Gerald Combs
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef PACKET_ACN_H__
-#define PACKET_ACN_H__
-
-/* pdu flags */
-#define ACN_PDU_FLAG_L 0x80
-#define ACN_PDU_FLAG_V 0x40
-#define ACN_PDU_FLAG_H 0x20
-#define ACN_PDU_FLAG_D 0x10
-
-#define ACN_DMX_OPTION_P 0x80
-#define ACN_DMX_OPTION_S 0x40
-
-#define ACN_DMP_ADT_FLAG_V 0x80 /* V = Specifies whether address is a virtual address or not. */
-#define ACN_DMP_ADT_FLAG_R 0x40 /* R = Specifies whether address is relative to last valid address in packet or not. */
-#define ACN_DMP_ADT_FLAG_D 0x30 /* D1, D0 = Specify non-range or range address, single data, equal size or mixed size data array */
-#define ACN_DMP_ADT_EXTRACT_D(f) (((f) & ACN_DMP_ADT_FLAG_D) >> 4)
-#define ACN_DMP_ADT_FLAG_X 0x0c /* X1, X0 = These bits are reserved and their values shall be set to 0 when encoded. Their values shall be ignored when decoding. */
-#define ACN_DMP_ADT_FLAG_A 0x03 /* A1, A0 = Size of Address elements */
-#define ACN_DMP_ADT_EXTRACT_A(f) ((f) & ACN_DMP_ADT_FLAG_A)
-
-#define ACN_DMP_ADT_V_VIRTUAL 0
-#define ACN_DMP_ADT_V_ACTUAL 1
-
-#define ACN_DMP_ADT_R_ABSOLUTE 0
-#define ACN_DMP_ADT_R_RELATIVE 1
-
-#define ACN_DMP_ADT_D_NS 0
-#define ACN_DMP_ADT_D_RS 1
-#define ACN_DMP_ADT_D_RE 2
-#define ACN_DMP_ADT_D_RM 3
-
-#define ACN_DMP_ADT_A_1 0
-#define ACN_DMP_ADT_A_2 1
-#define ACN_DMP_ADT_A_4 2
-#define ACN_DMP_ADT_A_R 3
-
-#define ACN_PROTOCOL_ID_SDT 1
-#define ACN_PROTOCOL_ID_DMP 2
-#define ACN_PROTOCOL_ID_DMX 3
-#define ACN_PROTOCOL_ID_DMX_2 4
-
-#define ACN_ADDR_NULL 0
-#define ACN_ADDR_IPV4 1
-#define ACN_ADDR_IPV6 2
-#define ACN_ADDR_IPPORT 3
-
-/* STD Messages */
-#define ACN_SDT_VECTOR_UNKNOWN 0
-#define ACN_SDT_VECTOR_REL_WRAP 1
-#define ACN_SDT_VECTOR_UNREL_WRAP 2
-#define ACN_SDT_VECTOR_CHANNEL_PARAMS 3
-#define ACN_SDT_VECTOR_JOIN 4
-#define ACN_SDT_VECTOR_JOIN_REFUSE 5
-#define ACN_SDT_VECTOR_JOIN_ACCEPT 6
-#define ACN_SDT_VECTOR_LEAVE 7
-#define ACN_SDT_VECTOR_LEAVING 8
-#define ACN_SDT_VECTOR_CONNECT 9
-#define ACN_SDT_VECTOR_CONNECT_ACCEPT 10
-#define ACN_SDT_VECTOR_CONNECT_REFUSE 11
-#define ACN_SDT_VECTOR_DISCONNECT 12
-#define ACN_SDT_VECTOR_DISCONNECTING 13
-#define ACN_SDT_VECTOR_ACK 14
-#define ACN_SDT_VECTOR_NAK 15
-#define ACN_SDT_VECTOR_GET_SESSION 16
-#define ACN_SDT_VECTOR_SESSIONS 17
-
-#define ACN_REFUSE_CODE_NONSPECIFIC 1
-#define ACN_REFUSE_CODE_ILLEGAL_PARAMS 2
-#define ACN_REFUSE_CODE_LOW_RESOURCES 3
-#define ACN_REFUSE_CODE_ALREADY_MEMBER 4
-#define ACN_REFUSE_CODE_BAD_ADDR_TYPE 5
-#define ACN_REFUSE_CODE_NO_RECIP_CHAN 6
-
-#define ACN_REASON_CODE_NONSPECIFIC 1
-/*#define ACN_REASON_CODE_ 2 */
-/*#define ACN_REASON_CODE_ 3 */
-/*#define ACN_REASON_CODE_ 4 */
-/*#define ACN_REASON_CODE_ 5 */
-#define ACN_REASON_CODE_NO_RECIP_CHAN 6
-#define ACN_REASON_CODE_CHANNEL_EXPIRED 7
-#define ACN_REASON_CODE_LOST_SEQUENCE 8
-#define ACN_REASON_CODE_SATURATED 9
-#define ACN_REASON_CODE_TRANS_ADDR_CHANGING 10
-#define ACN_REASON_CODE_ASKED_TO_LEAVE 11
-#define ACN_REASON_CODE_NO_RECIPIENT 12
-
-#define ACN_DMP_VECTOR_UNKNOWN 0
-#define ACN_DMP_VECTOR_GET_PROPERTY 1
-#define ACN_DMP_VECTOR_SET_PROPERTY 2
-#define ACN_DMP_VECTOR_GET_PROPERTY_REPLY 3
-#define ACN_DMP_VECTOR_EVENT 4
-#define ACN_DMP_VECTOR_MAP_PROPERTY 5
-#define ACN_DMP_VECTOR_UNMAP_PROPERTY 6
-#define ACN_DMP_VECTOR_SUBSCRIBE 7
-#define ACN_DMP_VECTOR_UNSUBSCRIBE 8
-#define ACN_DMP_VECTOR_GET_PROPERTY_FAIL 9
-#define ACN_DMP_VECTOR_SET_PROPERTY_FAIL 10
-#define ACN_DMP_VECTOR_MAP_PROPERTY_FAIL 11
-#define ACN_DMP_VECTOR_SUBSCRIBE_ACCEPT 12
-#define ACN_DMP_VECTOR_SUBSCRIBE_REJECT 13
-#define ACN_DMP_VECTOR_ALLOCATE_MAP 14
-#define ACN_DMP_VECTOR_ALLOCATE_MAP_REPLY 15
-#define ACN_DMP_VECTOR_DEALLOCATE_MAP 16
-
-#define ACN_DMP_REASON_CODE_NONSPECIFIC 1
-#define ACN_DMP_REASON_CODE_NOT_A_PROPERTY 2
-#define ACN_DMP_REASON_CODE_WRITE_ONLY 3
-#define ACN_DMP_REASON_CODE_NOT_WRITABLE 4
-#define ACN_DMP_REASON_CODE_DATA_ERROR 5
-#define ACN_DMP_REASON_CODE_MAPS_NOT_SUPPORTED 6
-#define ACN_DMP_REASON_CODE_SPACE_NOT_AVAILABLE 7
-#define ACN_DMP_REASON_CODE_PROP_NOT_MAPPABLE 8
-#define ACN_DMP_REASON_CODE_MAP_NOT_ALLOCATED 9
-#define ACN_DMP_REASON_CODE_SUBSCRIPTION_NOT_SUPPORTED 10
-#define ACN_DMP_REASON_CODE_NO_SUBSCRIPTIONS_SUPPORTED 11
-
-
-
-#define ACN_DMX_VECTOR 2
-
-#define ACN_PREF_DMX_DISPLAY_HEX 0
-#define ACN_PREF_DMX_DISPLAY_DEC 1
-#define ACN_PREF_DMX_DISPLAY_PER 2
-
-#define ACN_PREF_DMX_DISPLAY_20PL 0
-#define ACN_PREF_DMX_DISPLAY_16PL 1
-
-typedef struct
-{
- guint32 start;
- guint32 vector;
- guint32 header;
- guint32 data;
- guint32 data_length;
-} acn_pdu_offsets;
-
-typedef struct
-{
- guint8 flags;
- guint32 address; /* or first address */
- guint32 increment;
- guint32 count;
- guint32 size;
- guint32 data_length;
-} acn_dmp_adt_type;
-
-#endif /* !PACKET_ACN_H */
diff --git a/epan/dissectors/packet-actrace.c b/epan/dissectors/packet-actrace.c
index b012589012..fd99868f17 100644
--- a/epan/dissectors/packet-actrace.c
+++ b/epan/dissectors/packet-actrace.c
@@ -637,7 +637,7 @@ static void dissect_actrace_cas(tvbuff_t *tvb, packet_info *pinfo, proto_tree *a
if (frame_label != NULL) {
/* Initialise packet info for passing to tap */
- actrace_pi = ep_alloc(sizeof(actrace_info_t));
+ actrace_pi = ep_new(actrace_info_t);
actrace_pi->type = ACTRACE_CAS;
actrace_pi->direction = direction;
@@ -675,7 +675,7 @@ static void dissect_actrace_isdn(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
/* if it is a q931 packet (we don't want LAPD packets for Voip Graph) add tap info */
if (len > 4) {
/* Initialise packet info for passing to tap */
- actrace_pi = ep_alloc(sizeof(actrace_info_t));
+ actrace_pi = ep_new(actrace_info_t);
actrace_pi->type = ACTRACE_ISDN;
actrace_pi->direction = (value==PSTN_TO_BLADE?1:0);
diff --git a/epan/dissectors/packet-adwin-config.c b/epan/dissectors/packet-adwin-config.c
index 2c2f41d0cc..d9b6f16fc9 100644
--- a/epan/dissectors/packet-adwin-config.c
+++ b/epan/dissectors/packet-adwin-config.c
@@ -372,15 +372,15 @@ dissect_TCPFlashUpdate(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *adwin
}
/* 00:50:c2:0a:2*:** */
-static char mac_iab_start[] = { 0x00, 0x50, 0xc2, 0x0a, 0x20, 0x00 };
-static char mac_iab_end[] = { 0x00, 0x50, 0xc2, 0x0a, 0x2f, 0xff };
+static const unsigned char mac_iab_start[] = { 0x00, 0x50, 0xc2, 0x0a, 0x20, 0x00 };
+static const unsigned char mac_iab_end[] = { 0x00, 0x50, 0xc2, 0x0a, 0x2f, 0xff };
/* 00:22:71:**:**:** */
-static char mac_oui_start[] = { 0x00, 0x22, 0x71, 0x00, 0x00, 0x00 };
-static char mac_oui_end[] = { 0x00, 0x22, 0x71, 0xff, 0xff, 0xff };
+static const unsigned char mac_oui_start[] = { 0x00, 0x22, 0x71, 0x00, 0x00, 0x00 };
+static const unsigned char mac_oui_end[] = { 0x00, 0x22, 0x71, 0xff, 0xff, 0xff };
/* ff:ff:ff:ff:ff:ff */
-static char mac_broadcast[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
+static const unsigned char mac_broadcast[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
/* return TRUE if mac is in mac address range assigned to ADwin or if
* mac is broadcast */
diff --git a/epan/dissectors/packet-adwin.c b/epan/dissectors/packet-adwin.c
index 8a0b23892f..4bf088c98e 100644
--- a/epan/dissectors/packet-adwin.c
+++ b/epan/dissectors/packet-adwin.c
@@ -542,13 +542,13 @@ adwin_request_response_handling(tvbuff_t *tvb, packet_info *pinfo,
/*
* Do we already have a state structure for this conv
*/
- adwin_info = conversation_get_proto_data(conversation, proto_adwin);
+ adwin_info = (adwin_conv_info_t *)conversation_get_proto_data(conversation, proto_adwin);
if (!adwin_info) {
/*
* No. Attach that information to the conversation, and add
* it to the list of information structures.
*/
- adwin_info = se_alloc(sizeof(adwin_conv_info_t));
+ adwin_info = se_new(adwin_conv_info_t);
adwin_info->pdus = se_tree_create_non_persistent(
EMEM_TREE_TYPE_RED_BLACK, "adwin_pdus");
@@ -557,23 +557,23 @@ adwin_request_response_handling(tvbuff_t *tvb, packet_info *pinfo,
if (!pinfo->fd->flags.visited) {
if (direction == ADWIN_REQUEST) {
/* This is a request */
- adwin_trans = se_alloc(sizeof(adwin_transaction_t));
+ adwin_trans = se_new(adwin_transaction_t);
adwin_trans->req_frame = pinfo->fd->num;
adwin_trans->rep_frame = 0;
adwin_trans->req_time = pinfo->fd->abs_ts;
se_tree_insert32(adwin_info->pdus, seq_num, (void *)adwin_trans);
} else {
- adwin_trans = se_tree_lookup32(adwin_info->pdus, seq_num);
+ adwin_trans = (adwin_transaction_t *)se_tree_lookup32(adwin_info->pdus, seq_num);
if (adwin_trans) {
adwin_trans->rep_frame = pinfo->fd->num;
}
}
} else {
- adwin_trans = se_tree_lookup32(adwin_info->pdus, seq_num);
+ adwin_trans = (adwin_transaction_t *)se_tree_lookup32(adwin_info->pdus, seq_num);
}
if (!adwin_trans) {
/* create a "fake" adwin_trans structure */
- adwin_trans = ep_alloc(sizeof(adwin_transaction_t));
+ adwin_trans = ep_new(adwin_transaction_t);
adwin_trans->req_frame = 0;
adwin_trans->rep_frame = 0;
adwin_trans->req_time = pinfo->fd->abs_ts;
@@ -608,7 +608,7 @@ adwin_request_response_handling(tvbuff_t *tvb, packet_info *pinfo,
static void
dissect_UDPH1_generic(tvbuff_t *tvb, packet_info *pinfo,
- proto_tree *adwin_tree, proto_tree *adwin_debug_tree, gchar** info_string, gchar* packet_name)
+ proto_tree *adwin_tree, proto_tree *adwin_debug_tree, gchar** info_string, const gchar* packet_name)
{
guint32 i3plus1code = 0, instructionID, seq_num;
diff --git a/epan/dissectors/packet-afp.c b/epan/dissectors/packet-afp.c
index b117378f18..86808f6731 100644
--- a/epan/dissectors/packet-afp.c
+++ b/epan/dissectors/packet-afp.c
@@ -174,10 +174,13 @@ http://developer.apple.com/mac/library/documentation/Networking/Conceptual/AFP/I
#define AFP_SYNCFORK 79
/* FPSpotlightRPC subcommand codes */
-#define SPOTLIGHT_CMD_GET_VOLPATH 1
+#define SPOTLIGHT_CMD_GET_VOLPATH 4
#define SPOTLIGHT_CMD_GET_VOLID 2
#define SPOTLIGHT_CMD_GET_THREE 3
+/* Spotlight epoch is UNIX epoch minus SPOTLIGHT_TIME_DELTA */
+#define SPOTLIGHT_TIME_DELTA G_GINT64_CONSTANT(280878921600U)
+
/* ----------------------------- */
static int proto_afp = -1;
static int hf_afp_reserved = -1;
@@ -254,8 +257,6 @@ static int hf_afp_create_flag = -1;
static int hf_afp_struct_size = -1;
static int hf_afp_struct_size16 = -1;
-static int hf_afp_request_bitmap = -1;
-
static int hf_afp_cat_count = -1;
static int hf_afp_cat_req_matches = -1;
static int hf_afp_cat_position = -1;
@@ -287,7 +288,6 @@ static int hf_afp_rw_count = -1;
static int hf_afp_newline_mask = -1;
static int hf_afp_newline_char = -1;
static int hf_afp_last_written = -1;
-static int hf_afp_actual_count = -1;
static int hf_afp_fork_type = -1;
static int hf_afp_access_mode = -1;
@@ -625,7 +625,6 @@ static int hf_afp_dir_attribute_InExpFolder = -1;
static int hf_afp_dir_attribute_BackUpNeeded = -1;
static int hf_afp_dir_attribute_RenameInhibit = -1;
static int hf_afp_dir_attribute_DeleteInhibit = -1;
-static int hf_afp_dir_attribute_SetClear = -1;
static int hf_afp_file_bitmap_Attributes = -1;
static int hf_afp_file_bitmap_ParentDirID = -1;
@@ -687,12 +686,14 @@ static int ett_afp_spotlight_toc = -1;
static int hf_afp_spotlight_request_flags = -1;
static int hf_afp_spotlight_request_command = -1;
static int hf_afp_spotlight_request_reserved = -1;
+static int hf_afp_spotlight_reply_reserved = -1;
static int hf_afp_spotlight_volpath_server = -1;
static int hf_afp_spotlight_volpath_client = -1;
static int hf_afp_spotlight_returncode = -1;
static int hf_afp_spotlight_volflags = -1;
static int hf_afp_spotlight_reqlen = -1;
-static int hf_afp_spotlight_toc_query_end = -1;
+static int hf_afp_spotlight_uuid = -1;
+static int hf_afp_spotlight_date = -1;
static const value_string flag_vals[] = {
{0, "Start" },
@@ -939,9 +940,7 @@ static int hf_afp_access_bitmap = -1;
static int hf_afp_acl_entrycount = -1;
static int hf_afp_acl_flags = -1;
-static int hf_afp_ace_applicable = -1;
static int hf_afp_ace_flags = -1;
-static int hf_afp_ace_rights = -1;
static int ett_afp_ace_flags = -1;
static int hf_afp_ace_flags_allow = -1;
@@ -1019,7 +1018,7 @@ static int hf_afp_acl_access_bitmap_generic_read = -1;
static gint afp_equal (gconstpointer v, gconstpointer v2);
static guint afp_hash (gconstpointer v);
-static gint dissect_spotlight(tvbuff_t *tvb, proto_tree *tree, gint offset);
+static gint dissect_spotlight(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset);
typedef struct {
guint32 conversation;
@@ -1049,6 +1048,34 @@ spotlight_ntohieee_double(tvbuff_t *tvb, gint offset, guint encoding)
return tvb_get_ntohieee_double(tvb, offset);
}
+/*
+* Returns the UTF-16 string encoding, by checking the 2-byte byte order mark.
+* If there is no byte order mark, -1 is returned.
+*/
+static guint
+spotlight_get_utf16_string_encoding(tvbuff_t *tvb, gint offset, gint query_length, guint encoding) {
+ guint utf16_encoding;
+
+ /* check for byte order mark */
+ utf16_encoding = ENC_BIG_ENDIAN;
+ if (query_length >= 2) {
+ guint16 byte_order_mark;
+ if (encoding == ENC_LITTLE_ENDIAN)
+ byte_order_mark = tvb_get_letohs(tvb, offset);
+ else
+ byte_order_mark = tvb_get_ntohs(tvb, offset);
+
+ if (byte_order_mark == 0xFFFE) {
+ utf16_encoding = ENC_BIG_ENDIAN | ENC_UTF_16;
+ }
+ else if (byte_order_mark == 0xFEFF) {
+ utf16_encoding = ENC_LITTLE_ENDIAN | ENC_UTF_16;
+ }
+ }
+
+ return utf16_encoding;
+}
+
/* Hash Functions */
static gint afp_equal (gconstpointer v, gconstpointer v2)
{
@@ -2971,8 +2998,8 @@ dissect_query_afp_move(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint
offset += 4;
offset = decode_name_label(tree, pinfo, tvb, offset, "Source path: %s");
- offset = decode_name_label(tree, NULL, tvb, offset, "Dest dir: %s");
- offset = decode_name_label(tree, NULL, tvb, offset, "New name: %s");
+ offset = decode_name_label(tree, NULL, tvb, offset, "Dest dir: %s");
+ offset = decode_name_label(tree, NULL, tvb, offset, "New name: %s");
return offset;
}
@@ -3014,8 +3041,8 @@ dissect_query_afp_copy_file(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
offset = decode_vol_did(sub_tree, tvb, offset);
offset = decode_name_label(tree, pinfo, tvb, offset, "Source path: %s");
- offset = decode_name_label(tree, NULL, tvb, offset, "Dest dir: %s");
- offset = decode_name_label(tree, NULL, tvb, offset, "New name: %s");
+ offset = decode_name_label(tree, NULL, tvb, offset, "Dest dir: %s");
+ offset = decode_name_label(tree, NULL, tvb, offset, "New name: %s");
return offset;
}
@@ -3415,7 +3442,7 @@ dissect_reply_afp_map_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
}
}
if (size) {
- proto_tree_add_item(tree, hf_afp_map_name, tvb, offset, size, ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_afp_map_name, tvb, offset, size, ENC_ASCII|ENC_NA);
}
else {
proto_tree_add_item(tree, hf_afp_unknown, tvb, offset, len, ENC_NA);
@@ -3446,7 +3473,7 @@ dissect_query_afp_map_name(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
len = tvb_get_guint8(tvb, offset);
break;
}
- proto_tree_add_item(tree, hf_afp_map_name, tvb, offset, size, ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_afp_map_name, tvb, offset, size, ENC_ASCII|ENC_NA);
offset += len +size;
return offset;
@@ -3988,12 +4015,17 @@ dissect_query_afp_with_did(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
#define SQ_TYPE_FLOAT 0x8500
#define SQ_TYPE_DATA 0x0700
#define SQ_TYPE_CNIDS 0x8700
+#define SQ_TYPE_UUID 0x0e00
+#define SQ_TYPE_DATE 0x8600
+
+#define SQ_CPX_TYPE_ARRAY 0x0a00
+#define SQ_CPX_TYPE_STRING 0x0c00
+#define SQ_CPX_TYPE_UTF16_STRING 0x1c00
+#define SQ_CPX_TYPE_DICT 0x0d00
+#define SQ_CPX_TYPE_CNIDS 0x1a00
+#define SQ_CPX_TYPE_FILEMETA 0x1b00
-#define SQ_CPX_TYPE_ARRAY 0x0a00
-#define SQ_CPX_TYPE_STRING 0x0c00
-#define SQ_CPX_TYPE_DICT 0x0d00
-#define SQ_CPX_TYPE_CNIDS 0x1a00
-#define SQ_CPX_TYPE_FILEMETA 0x1b00
+#define SUBQ_SAFETY_LIM 20
static gint
spotlight_int64(tvbuff_t *tvb, proto_tree *tree, gint offset, guint encoding)
@@ -4016,6 +4048,54 @@ spotlight_int64(tvbuff_t *tvb, proto_tree *tree, gint offset, guint encoding)
}
static gint
+spotlight_date(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, guint encoding)
+{
+ gint count, i;
+ guint64 query_data64;
+ nstime_t t;
+
+ query_data64 = spotlight_ntoh64(tvb, offset, encoding);
+ count = query_data64 >> 32;
+ offset += 8;
+
+ if (count > SUBQ_SAFETY_LIM) {
+ expert_add_info_format(pinfo, tree, PI_MALFORMED, PI_ERROR,
+ "Subquery count (%d) > safety limit (%d)", count, SUBQ_SAFETY_LIM);
+ return -1;
+ }
+
+ i = 0;
+ while (i++ < count) {
+ query_data64 = spotlight_ntoh64(tvb, offset, encoding) >> 24;
+ t.secs = query_data64 - SPOTLIGHT_TIME_DELTA;
+ t.nsecs = 0;
+ proto_tree_add_time(tree, hf_afp_spotlight_date, tvb, offset, 8, &t);
+ offset += 8;
+ }
+
+ return count;
+}
+
+static gint
+spotlight_uuid(tvbuff_t *tvb, proto_tree *tree, gint offset, guint encoding)
+{
+ gint count, i;
+ guint64 query_data64;
+
+ query_data64 = spotlight_ntoh64(tvb, offset, encoding);
+ count = query_data64 >> 32;
+ offset += 8;
+
+ i = 0;
+ while (i++ < count) {
+ proto_tree_add_item(tree, hf_afp_spotlight_uuid, tvb, offset, 16, ENC_BIG_ENDIAN);
+ offset += 16;
+ }
+
+ return count;
+}
+
+static gint
spotlight_float(tvbuff_t *tvb, proto_tree *tree, gint offset, guint encoding)
{
gint count, i;
@@ -4095,6 +4175,8 @@ static const char *spotlight_get_cpx_qtype_string(guint64 cpx_query_type)
return "array";
case SQ_CPX_TYPE_STRING:
return "string";
+ case SQ_CPX_TYPE_UTF16_STRING:
+ return "utf-16 string";
case SQ_CPX_TYPE_DICT:
return "dictionary";
case SQ_CPX_TYPE_CNIDS:
@@ -4107,15 +4189,18 @@ static const char *spotlight_get_cpx_qtype_string(guint64 cpx_query_type)
}
static gint
-spotlight_dissect_query_loop(tvbuff_t *tvb, proto_tree *tree, gint offset, guint64 cpx_query_type, gint count, gint toc_offset, guint encoding)
+spotlight_dissect_query_loop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset,
+ guint64 cpx_query_type, gint count, gint toc_offset, guint encoding)
{
- gint j;
+ gint i, j;
gint subquery_count;
gint toc_index;
guint64 query_data64;
gint query_length;
guint64 query_type;
guint64 complex_query_type;
+ guint unicode_encoding;
+ guint8 mark_exists;
proto_item *item_query;
proto_tree *sub_tree;
@@ -4165,6 +4250,29 @@ spotlight_dissect_query_loop(tvbuff_t *tvb, proto_tree *tree, gint offset, guint
toc_index + 1,
tvb_get_ephemeral_string(tvb, offset + 16, query_length - 8));
break;
+ case SQ_CPX_TYPE_UTF16_STRING:
+ /*
+ * This is an UTF-16 string.
+ * Dissections show the typical byte order mark 0xFFFE or 0xFEFF, respectively.
+ * However the existence of such a mark can not be assumed.
+ * If the mark is missing, big endian encoding is assumed.
+ */
+
+ subquery_count = 1;
+ query_data64 = spotlight_ntoh64(tvb, offset + 8, encoding);
+ query_length = (query_data64 & 0xffff) * 8;
+
+ unicode_encoding = spotlight_get_utf16_string_encoding(tvb, offset + 16, query_length - 8, encoding);
+ mark_exists = (unicode_encoding & ENC_UTF_16);
+ unicode_encoding &= ~ENC_UTF_16;
+
+ item_query = proto_tree_add_text(tree, tvb, offset, query_length + 8,
+ "%s, toc index: %u, utf-16 string: '%s'",
+ spotlight_get_cpx_qtype_string(complex_query_type),
+ toc_index + 1,
+ tvb_get_ephemeral_unicode_string(tvb, offset + (mark_exists ? 18 : 16),
+ query_length - (mark_exists? 10 : 8), unicode_encoding));
+ break;
default:
subquery_count = 1;
item_query = proto_tree_add_text(tree, tvb, offset, query_length,
@@ -4178,30 +4286,51 @@ spotlight_dissect_query_loop(tvbuff_t *tvb, proto_tree *tree, gint offset, guint
sub_tree = proto_item_add_subtree(item_query, ett_afp_spotlight_query_line);
offset += 8;
- offset = spotlight_dissect_query_loop(tvb, sub_tree, offset, complex_query_type, subquery_count, toc_offset, encoding);
+ offset = spotlight_dissect_query_loop(tvb, pinfo, sub_tree, offset, complex_query_type, subquery_count, toc_offset, encoding);
+ count--;
break;
case SQ_TYPE_NULL:
subquery_count = (gint)(query_data64 >> 32);
- proto_tree_add_text(tree, tvb, offset, query_length, "%u %s", subquery_count, plurality(subquery_count, "null", "nulls"));
- count -= subquery_count;
+ if (subquery_count > count) {
+ item_query = proto_tree_add_text(tree, tvb, offset, query_length, "null");
+ expert_add_info_format(pinfo, item_query, PI_MALFORMED, PI_ERROR,
+ "Subquery count (%d) > query count (%d)", subquery_count, count);
+ count = 0;
+ } else if (subquery_count > 20) {
+ item_query = proto_tree_add_text(tree, tvb, offset, query_length, "null");
+ expert_add_info_format(pinfo, item_query, PI_PROTOCOL, PI_WARN,
+ "Abnormal number of subqueries (%d)", subquery_count);
+ count -= subquery_count;
+ } else {
+ for (i = 0; i < subquery_count; i++, count--)
+ proto_tree_add_text(tree, tvb, offset, query_length, "null");
+ }
offset += query_length;
break;
case SQ_TYPE_BOOL:
proto_tree_add_text(tree, tvb, offset, query_length, "bool: %s",
(query_data64 >> 32) ? "true" : "false");
+ count--;
offset += query_length;
break;
case SQ_TYPE_INT64:
item_query = proto_tree_add_text(tree, tvb, offset, 8, "int64");
sub_tree = proto_item_add_subtree(item_query, ett_afp_spotlight_query_line);
- j = spotlight_int64(tvb, sub_tree, offset, encoding) - 1;
+ j = spotlight_int64(tvb, sub_tree, offset, encoding);
+ count -= j;
+ offset += query_length;
+ break;
+ case SQ_TYPE_UUID:
+ item_query = proto_tree_add_text(tree, tvb, offset, 8, "UUID");
+ sub_tree = proto_item_add_subtree(item_query, ett_afp_spotlight_query_line);
+ j = spotlight_uuid(tvb, sub_tree, offset, encoding);
count -= j;
offset += query_length;
break;
case SQ_TYPE_FLOAT:
item_query = proto_tree_add_text(tree, tvb, offset, 8, "float");
sub_tree = proto_item_add_subtree(item_query, ett_afp_spotlight_query_line);
- j = spotlight_float(tvb, sub_tree, offset, encoding) - 1;
+ j = spotlight_float(tvb, sub_tree, offset, encoding);
count -= j;
offset += query_length;
break;
@@ -4211,34 +4340,61 @@ spotlight_dissect_query_loop(tvbuff_t *tvb, proto_tree *tree, gint offset, guint
proto_tree_add_text(tree, tvb, offset, query_length, "string: '%s'",
tvb_get_ephemeral_string(tvb, offset + 8, query_length - 8));
break;
+ case SQ_CPX_TYPE_UTF16_STRING: {
+ /* description see above */
+ unicode_encoding = spotlight_get_utf16_string_encoding(tvb, offset + 8, query_length, encoding);
+ mark_exists = (unicode_encoding & ENC_UTF_16);
+ unicode_encoding &= ~ENC_UTF_16;
+
+ proto_tree_add_text(tree, tvb, offset, query_length, "utf-16 string: '%s'",
+ tvb_get_ephemeral_unicode_string(tvb, offset + (mark_exists ? 10 : 8),
+ query_length - (mark_exists? 10 : 8), unicode_encoding));
+ break;
+ }
case SQ_CPX_TYPE_FILEMETA:
- item_query = proto_tree_add_text(tree, tvb, offset, query_length, "filemeta");
- sub_tree = proto_item_add_subtree(item_query, ett_afp_spotlight_query_line);
- (void)dissect_spotlight(tvb, sub_tree, offset + 8);
+ if (query_length <= 8) {
+ /* item_query = */ proto_tree_add_text(tree, tvb, offset, query_length, "filemeta (empty)");
+ } else {
+ item_query = proto_tree_add_text(tree, tvb, offset, query_length, "filemeta");
+ sub_tree = proto_item_add_subtree(item_query, ett_afp_spotlight_query_line);
+ (void)dissect_spotlight(tvb, pinfo, sub_tree, offset + 8);
+ }
break;
}
+ count--;
offset += query_length;
break;
case SQ_TYPE_CNIDS:
- item_query = proto_tree_add_text(tree, tvb, offset, query_length, "CNID Array");
- sub_tree = proto_item_add_subtree(item_query, ett_afp_spotlight_query_line);
- spotlight_CNID_array(tvb, sub_tree, offset + 8, encoding);
+ if (query_length <= 8) {
+ /* item_query = */ proto_tree_add_text(tree, tvb, offset, query_length, "CNID Array (empty)");
+ } else {
+ item_query = proto_tree_add_text(tree, tvb, offset, query_length, "CNID Array");
+ sub_tree = proto_item_add_subtree(item_query, ett_afp_spotlight_query_line);
+ spotlight_CNID_array(tvb, sub_tree, offset + 8, encoding);
+ }
+ count--;
+ offset += query_length;
+ break;
+ case SQ_TYPE_DATE:
+ if ((j = spotlight_date(tvb, pinfo, tree, offset, encoding)) == -1)
+ return offset;
+ count -= j;
offset += query_length;
break;
default:
proto_tree_add_text(tree, tvb, offset, query_length, "type: %s",
spotlight_get_qtype_string(query_type));
+ count--;
offset += query_length;
break;
}
- count--;
}
return offset;
}
static gint
-dissect_spotlight(tvbuff_t *tvb, proto_tree *tree, gint offset)
+dissect_spotlight(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset)
{
guint encoding;
gint i;
@@ -4328,10 +4484,9 @@ dissect_spotlight(tvbuff_t *tvb, proto_tree *tree, gint offset)
sub_tree_queries = proto_item_add_subtree(item_queries_data, ett_afp_spotlight_queries);
/* Queries */
- offset = spotlight_dissect_query_loop(tvb, sub_tree_queries, offset, SQ_CPX_TYPE_ARRAY, INT_MAX, offset + (gint)toc_offset + 8, encoding);
+ offset = spotlight_dissect_query_loop(tvb, pinfo, sub_tree_queries, offset, SQ_CPX_TYPE_ARRAY, INT_MAX, offset + (gint)toc_offset + 8, encoding);
/* ToC */
- offset += (gint)toc_offset;
if (toc_entries < 1) {
proto_tree_add_text(tree,
tvb,
@@ -4367,7 +4522,19 @@ dissect_spotlight(tvbuff_t *tvb, proto_tree *tree, gint offset)
toc_entry >> 32,
spotlight_get_cpx_qtype_string((toc_entry & 0xffff0000) >> 16),
(toc_entry & 0xffff) * 8);
- } else {
+ } else if ((((toc_entry & 0xffff0000) >> 16) == SQ_CPX_TYPE_STRING)
+ || (((toc_entry & 0xffff0000) >> 16) == SQ_CPX_TYPE_UTF16_STRING)) {
+ proto_tree_add_text(sub_tree_toc,
+ tvb,
+ offset,
+ 8,
+ "%u: pad byte count: %" G_GINT64_MODIFIER "x, type: %s, offset: %" G_GINT64_MODIFIER "u",
+ i+1,
+ 8 - (toc_entry >> 32),
+ spotlight_get_cpx_qtype_string((toc_entry & 0xffff0000) >> 16),
+ (toc_entry & 0xffff) * 8);
+ }
+ else {
proto_tree_add_text(sub_tree_toc,
tvb,
offset,
@@ -4386,7 +4553,7 @@ dissect_spotlight(tvbuff_t *tvb, proto_tree *tree, gint offset)
}
static gint
-dissect_query_afp_spotlight(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gint offset, afp_request_val *request_val)
+dissect_query_afp_spotlight(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, afp_request_val *request_val)
{
gint len;
@@ -4421,7 +4588,7 @@ dissect_query_afp_spotlight(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
proto_tree_add_item(tree, hf_afp_spotlight_reqlen, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
- offset = dissect_spotlight(tvb, tree, offset);
+ offset = dissect_spotlight(tvb, pinfo, tree, offset);
break;
}
@@ -4509,7 +4676,7 @@ decode_kauth_acl(tvbuff_t *tvb, proto_tree *tree, gint offset)
/* FIXME: preliminary decoding... */
entries = tvb_get_ntohl(tvb, offset);
- item = proto_tree_add_text(tree, tvb, offset, 4, "ACEs : %d", entries);
+ item = proto_tree_add_item(tree, hf_afp_acl_entrycount, tvb, offset, 4, ENC_BIG_ENDIAN);
sub_tree = proto_item_add_subtree(item, ett_afp_ace_entries);
offset += 4;
@@ -4538,7 +4705,7 @@ decode_uuid_acl(tvbuff_t *tvb, proto_tree *tree, gint offset, guint16 bitmap)
}
if ((bitmap & kFileSec_GRPUUID)) {
- proto_tree_add_item(tree, hf_afp_UUID, tvb, offset, 16, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_afp_GRPUUID, tvb, offset, 16, ENC_BIG_ENDIAN);
offset += 16;
}
@@ -4602,17 +4769,20 @@ dissect_reply_afp_get_acl(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
/* ************************** */
static gint
-dissect_reply_afp_spotlight(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gint offset, afp_request_val *request_val)
+dissect_reply_afp_spotlight(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, afp_request_val *request_val)
{
gint len;
switch (request_val->spotlight_req_command) {
case SPOTLIGHT_CMD_GET_VOLPATH:
- proto_tree_add_item(tree, hf_afp_spotlight_returncode, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_afp_vol_id, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
- tvb_get_ephemeral_stringz(tvb, offset, &len);;
+ proto_tree_add_item(tree, hf_afp_spotlight_reply_reserved, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ tvb_get_ephemeral_stringz(tvb, offset, &len);
proto_tree_add_item(tree, hf_afp_spotlight_volpath_server, tvb, offset, len, ENC_UTF_8|ENC_NA);
offset += len;
break;
@@ -4626,7 +4796,7 @@ dissect_reply_afp_spotlight(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
proto_tree_add_item(tree, hf_afp_spotlight_returncode, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
- offset = dissect_spotlight(tvb, tree, offset);
+ offset = dissect_spotlight(tvb, pinfo, tree, offset);
break;
}
return offset;
@@ -4637,7 +4807,7 @@ dissect_reply_afp_spotlight(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
static void
dissect_afp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- struct aspinfo *aspinfo = pinfo->private_data;
+ struct aspinfo *aspinfo = (struct aspinfo*)pinfo->private_data;
proto_tree *afp_tree = NULL;
proto_item *ti;
conversation_t *conversation;
@@ -4662,10 +4832,10 @@ dissect_afp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (!request_val && !aspinfo->reply) {
afp_command = tvb_get_guint8(tvb, offset);
- new_request_key = se_alloc(sizeof(afp_request_key));
+ new_request_key = se_new(afp_request_key);
*new_request_key = request_key;
- request_val = se_alloc(sizeof(afp_request_val));
+ request_val = se_new(afp_request_val);
request_val->command = afp_command;
if (afp_command == AFP_SPOTLIGHTRPC)
@@ -5403,11 +5573,6 @@ proto_register_afp(void)
FT_BOOLEAN, 16, NULL, kFPDeleteInhibitBit,
NULL, HFILL }},
- { &hf_afp_dir_attribute_SetClear,
- { "Set", "afp.dir_attribute.set_clear",
- FT_BOOLEAN, 16, NULL, kFPSetClearBit,
- "Clear/set attribute", HFILL }},
-
{ &hf_afp_file_bitmap_Attributes,
{ "Attributes", "afp.file_bitmap.attributes",
FT_BOOLEAN, 16, NULL, kFPAttributeBit,
@@ -5830,11 +5995,6 @@ proto_register_afp(void)
FT_BOOLEAN, 32, NULL, 0x80000000,
NULL, HFILL }},
- { &hf_afp_request_bitmap,
- { "Request bitmap", "afp.request_bitmap",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
-
{ &hf_afp_struct_size,
{ "Struct size", "afp.struct_size",
FT_UINT8, BASE_DEC, NULL,0,
@@ -5885,11 +6045,6 @@ proto_register_afp(void)
FT_UINT32, BASE_DEC, NULL, 0x0,
"Offset of the last byte written", HFILL }},
- { &hf_afp_actual_count,
- { "Count", "afp.actual_count",
- FT_INT32, BASE_DEC, NULL, 0x0,
- "Number of bytes returned by read/write", HFILL }},
-
{ &hf_afp_ofork_len,
{ "New length", "afp.ofork_len",
FT_INT32, BASE_DEC, NULL, 0x0,
@@ -6388,7 +6543,7 @@ proto_register_afp(void)
"Inherit ACL", HFILL }},
{ &hf_afp_acl_entrycount,
- { "Count", "afp.acl_entrycount",
+ { "ACEs count", "afp.acl_entrycount",
FT_UINT32, BASE_HEX, NULL, 0,
"Number of ACL entries", HFILL }},
@@ -6397,16 +6552,6 @@ proto_register_afp(void)
FT_UINT32, BASE_HEX, NULL, 0,
NULL, HFILL }},
- { &hf_afp_ace_applicable,
- { "ACE", "afp.ace_applicable",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- "ACE applicable", HFILL }},
-
- { &hf_afp_ace_rights,
- { "Rights", "afp.ace_rights",
- FT_UINT32, BASE_HEX, NULL, 0,
- "ACE flags", HFILL }},
-
{ &hf_afp_acl_access_bitmap,
{ "Bitmap", "afp.acl_access_bitmap",
FT_UINT32, BASE_HEX, NULL, 0,
@@ -6557,6 +6702,11 @@ proto_register_afp(void)
FT_UINT32, BASE_HEX, NULL, 0x0,
"Spotlight RPC Padding", HFILL }},
+ { &hf_afp_spotlight_reply_reserved,
+ { "Reserved", "afp.spotlight.reserved",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "Spotlight RPC Padding", HFILL }},
+
{ &hf_afp_spotlight_volpath_client,
{ "Client's volume path", "afp.spotlight.volpath_client",
FT_STRING, BASE_NONE, NULL, 0x0,
@@ -6582,9 +6732,14 @@ proto_register_afp(void)
FT_UINT32, BASE_DEC, NULL, 0x0,
NULL, HFILL }},
- { &hf_afp_spotlight_toc_query_end,
- { "End marker", "afp.spotlight.query_end",
- FT_UINT32, BASE_HEX, NULL, 0x0,
+ { &hf_afp_spotlight_uuid,
+ { "UUID", "afp.spotlight.uuid",
+ FT_GUID, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_afp_spotlight_date,
+ { "Date", "afp.spotlight.date",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0,
NULL, HFILL }},
{ &hf_afp_unknown,
diff --git a/epan/dissectors/packet-afs.c b/epan/dissectors/packet-afs.c
index 05e23d6cbb..c7fc16bd46 100644
--- a/epan/dissectors/packet-afs.c
+++ b/epan/dissectors/packet-afs.c
@@ -36,9 +36,10 @@
#endif
#include <stdio.h>
-
#include <string.h>
+
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/conversation.h>
#include <epan/addr_resolv.h>
@@ -46,7 +47,119 @@
#include <epan/strutil.h>
#include "packet-rx.h"
-#include "packet-afs.h"
+
+#define AFS_PORT_FS 7000
+#define AFS_PORT_CB 7001
+#define AFS_PORT_PROT 7002
+#define AFS_PORT_VLDB 7003
+#define AFS_PORT_KAUTH 7004
+#define AFS_PORT_VOL 7005
+#define AFS_PORT_ERROR 7006 /* Doesn't seem to be used */
+#define AFS_PORT_BOS 7007
+#define AFS_PORT_UPDATE 7008
+#define AFS_PORT_RMTSYS 7009
+#define AFS_PORT_BACKUP 7021
+
+#ifndef AFSNAMEMAX
+#define AFSNAMEMAX 256
+#endif
+
+#ifndef AFSOPAQUEMAX
+#define AFSOPAQUEMAX 1024
+#endif
+
+#define PRNAMEMAX 64
+#define VLNAMEMAX 65
+#define KANAMEMAX 64
+#define BOSNAMEMAX 256
+
+#define PRSFS_READ 1 /* Read files */
+#define PRSFS_WRITE 2 /* Write files */
+#define PRSFS_INSERT 4 /* Insert files into a directory */
+#define PRSFS_LOOKUP 8 /* Lookup files into a directory */
+#define PRSFS_DELETE 16 /* Delete files */
+#define PRSFS_LOCK 32 /* Lock files */
+#define PRSFS_ADMINISTER 64 /* Change ACL's */
+
+#define CB_TYPE_EXCLUSIVE 1
+#define CB_TYPE_SHARED 2
+#define CB_TYPE_DROPPED 3
+
+#define OPCODE_LOW 0
+#define OPCODE_HIGH 66000 /* arbitrary, is just a fuzzy check for encrypted traffic */
+#define VOTE_LOW 10000
+#define VOTE_HIGH 10007
+#define DISK_LOW 20000
+#define DISK_HIGH 20013
+
+#define FILE_TYPE_FILE 1
+#define FILE_TYPE_DIR 2
+#define FILE_TYPE_LINK 3
+
+struct afs_header {
+ guint32 opcode;
+};
+
+struct afs_volsync {
+ guint32 spare1;
+ guint32 spare2;
+ guint32 spare3;
+ guint32 spare4;
+ guint32 spare5;
+ guint32 spare6;
+};
+
+struct afs_status {
+ guint32 InterfaceVersion;
+ guint32 FileType;
+ guint32 LinkCount;
+ guint32 Length;
+ guint32 DataVersion;
+ guint32 Author;
+ guint32 Owner;
+ guint32 CallerAccess;
+ guint32 AnonymousAccess;
+ guint32 UnixModeBits;
+ guint32 ParentVnode;
+ guint32 ParentUnique;
+ guint32 SegSize;
+ guint32 ClientModTime;
+ guint32 ServerModTime;
+ guint32 Group;
+ guint32 SyncCount;
+ guint32 spare1;
+ guint32 spare2;
+ guint32 spare3;
+ guint32 spare4;
+};
+
+struct afs_volumeinfo {
+ guint32 Vid;
+ guint32 Type;
+ guint32 Type0;
+ guint32 Type1;
+ guint32 Type2;
+ guint32 Type3;
+ guint32 Type4;
+ guint32 ServerCount;
+ guint32 Server0;
+ guint32 Server1;
+ guint32 Server2;
+ guint32 Server3;
+ guint32 Server4;
+ guint32 Server5;
+ guint32 Server6;
+ guint32 Server7;
+ guint16 Part0;
+ guint16 Part1;
+ guint16 Part2;
+ guint16 Part3;
+ guint16 Part4;
+ guint16 Part5;
+ guint16 Part6;
+ guint16 Part7;
+};
+
static int proto_afs = -1;
static int hf_afs_fs = -1;
@@ -418,7 +531,7 @@ static gint ett_afs_vldb_flags = -1;
i_orxs = tvb_get_ntohl(tvb, offset); \
len_orxs = ((i_orxs+4-1)/4)*4 + 4; \
proto_tree_add_item(tree, field, tvb, offset-4, len_orxs, \
- ENC_ASCII|ENC_BIG_ENDIAN); \
+ ENC_ASCII|ENC_NA); \
offset += len_orxs; \
}
@@ -1314,15 +1427,15 @@ static const value_string volume_types[] = {
};
struct afs_request_key {
- guint32 conversation, epoch, cid, callnumber;
- guint16 service;
+ guint32 conversation, epoch, cid, callnumber;
+ guint16 service;
};
struct afs_request_val {
- guint32 opcode;
- guint req_num;
- guint rep_num;
- nstime_t req_time;
+ guint32 opcode;
+ guint req_num;
+ guint rep_num;
+ nstime_t req_time;
};
static GHashTable *afs_request_hash = NULL;
@@ -1471,10 +1584,10 @@ dissect_afs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
opcode = 0;
if(!pinfo->fd->flags.visited){
if ( !request_val && !reply) {
- new_request_key = se_alloc(sizeof(struct afs_request_key));
+ new_request_key = se_new(struct afs_request_key);
*new_request_key = request_key;
- request_val = se_alloc(sizeof(struct afs_request_val));
+ request_val = se_new(struct afs_request_val);
request_val -> opcode = tvb_get_ntohl(tvb, offset);
request_val -> req_num = pinfo->fd->num;
request_val -> rep_num = 0;
@@ -1905,7 +2018,7 @@ dissect_fs_request(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int o
break;
case 134: /* Store ACL */
OUT_FS_AFSFid("Target");
- offset = dissect_acl(tvb, rxinfo, tree, offset);
+ /* offset = */ dissect_acl(tvb, rxinfo, tree, offset);
break;
case 135: /* Store Status */
OUT_FS_AFSFid("Target");
@@ -2963,9 +3076,9 @@ dissect_backup_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int
}
static void
-dissect_backup_request(tvbuff_t *tvb _U_, struct rxinfo *rxinfo _U_, proto_tree *tree _U_, int offset, int opcode)
+dissect_backup_request(tvbuff_t *tvb _U_, struct rxinfo *rxinfo _U_, proto_tree *tree _U_, int offset _U_, int opcode)
{
- offset += 4; /* skip the opcode */
+ /* offset += 4; */ /* skip the opcode */
switch ( opcode )
{
diff --git a/epan/dissectors/packet-afs.h b/epan/dissectors/packet-afs.h
deleted file mode 100644
index 29a78d1065..0000000000
--- a/epan/dissectors/packet-afs.h
+++ /dev/null
@@ -1,142 +0,0 @@
-/* packet-afs.h
- * Definitions for packet disassembly structures and routines
- *
- * $Id$
- *
- * Wireshark - Network traffic analyzer
- * By Gerald Combs <gerald@wireshark.org>
- * Copyright 1998 Gerald Combs
- *
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef PACKET_AFS_H
-#define PACKET_AFS_H
-
-#define AFS_PORT_FS 7000
-#define AFS_PORT_CB 7001
-#define AFS_PORT_PROT 7002
-#define AFS_PORT_VLDB 7003
-#define AFS_PORT_KAUTH 7004
-#define AFS_PORT_VOL 7005
-#define AFS_PORT_ERROR 7006 /* Doesn't seem to be used */
-#define AFS_PORT_BOS 7007
-#define AFS_PORT_UPDATE 7008
-#define AFS_PORT_RMTSYS 7009
-#define AFS_PORT_BACKUP 7021
-
-#ifndef AFSNAMEMAX
-#define AFSNAMEMAX 256
-#endif
-
-#ifndef AFSOPAQUEMAX
-#define AFSOPAQUEMAX 1024
-#endif
-
-#define PRNAMEMAX 64
-#define VLNAMEMAX 65
-#define KANAMEMAX 64
-#define BOSNAMEMAX 256
-
-#define PRSFS_READ 1 /* Read files */
-#define PRSFS_WRITE 2 /* Write files */
-#define PRSFS_INSERT 4 /* Insert files into a directory */
-#define PRSFS_LOOKUP 8 /* Lookup files into a directory */
-#define PRSFS_DELETE 16 /* Delete files */
-#define PRSFS_LOCK 32 /* Lock files */
-#define PRSFS_ADMINISTER 64 /* Change ACL's */
-
-#define CB_TYPE_EXCLUSIVE 1
-#define CB_TYPE_SHARED 2
-#define CB_TYPE_DROPPED 3
-
-#define OPCODE_LOW 0
-#define OPCODE_HIGH 66000 /* arbitrary, is just a fuzzy check for encrypted traffic */
-#define VOTE_LOW 10000
-#define VOTE_HIGH 10007
-#define DISK_LOW 20000
-#define DISK_HIGH 20013
-
-#define FILE_TYPE_FILE 1
-#define FILE_TYPE_DIR 2
-#define FILE_TYPE_LINK 3
-
-struct afs_header {
- guint32 opcode;
-};
-
-struct afs_volsync {
- guint32 spare1;
- guint32 spare2;
- guint32 spare3;
- guint32 spare4;
- guint32 spare5;
- guint32 spare6;
-};
-
-struct afs_status {
- guint32 InterfaceVersion;
- guint32 FileType;
- guint32 LinkCount;
- guint32 Length;
- guint32 DataVersion;
- guint32 Author;
- guint32 Owner;
- guint32 CallerAccess;
- guint32 AnonymousAccess;
- guint32 UnixModeBits;
- guint32 ParentVnode;
- guint32 ParentUnique;
- guint32 SegSize;
- guint32 ClientModTime;
- guint32 ServerModTime;
- guint32 Group;
- guint32 SyncCount;
- guint32 spare1;
- guint32 spare2;
- guint32 spare3;
- guint32 spare4;
-};
-
-struct afs_volumeinfo {
- guint32 Vid;
- guint32 Type;
- guint32 Type0;
- guint32 Type1;
- guint32 Type2;
- guint32 Type3;
- guint32 Type4;
- guint32 ServerCount;
- guint32 Server0;
- guint32 Server1;
- guint32 Server2;
- guint32 Server3;
- guint32 Server4;
- guint32 Server5;
- guint32 Server6;
- guint32 Server7;
- guint16 Part0;
- guint16 Part1;
- guint16 Part2;
- guint16 Part3;
- guint16 Part4;
- guint16 Part5;
- guint16 Part6;
- guint16 Part7;
-};
-
-
-#endif
diff --git a/epan/dissectors/packet-agentx.c b/epan/dissectors/packet-agentx.c
index 011fe33d86..8615506842 100644
--- a/epan/dissectors/packet-agentx.c
+++ b/epan/dissectors/packet-agentx.c
@@ -364,8 +364,8 @@ dissect_object_id(tvbuff_t *tvb, proto_tree *tree, int offset, guint8 flags, enu
g_snprintf(&str_oid[0], 2048, "(null)");
if(tree) {
- char *range = "";
- char *inclusion = (include) ? " (Inclusive)" : " (Exclusive)";
+ const char *range = "";
+ const char *inclusion = (include) ? " (Inclusive)" : " (Exclusive)";
switch (oid_usage) {
case OID_START_RANGE: range = "(Range Start) "; break;
case OID_END_RANGE: range = " (Range End) "; break;
diff --git a/epan/dissectors/packet-aim-admin.c b/epan/dissectors/packet-aim-admin.c
index 85d5668446..6166e635b2 100644
--- a/epan/dissectors/packet-aim-admin.c
+++ b/epan/dissectors/packet-aim-admin.c
@@ -27,9 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-aim-adverts.c b/epan/dissectors/packet-aim-adverts.c
index 905ceab63e..c506d41deb 100644
--- a/epan/dissectors/packet-aim-adverts.c
+++ b/epan/dissectors/packet-aim-adverts.c
@@ -27,9 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-aim-bos.c b/epan/dissectors/packet-aim-bos.c
index 418b76fdc0..94a1ac93aa 100644
--- a/epan/dissectors/packet-aim-bos.c
+++ b/epan/dissectors/packet-aim-bos.c
@@ -27,9 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-aim-buddylist.c b/epan/dissectors/packet-aim-buddylist.c
index 3a135e9796..bfc521717b 100644
--- a/epan/dissectors/packet-aim-buddylist.c
+++ b/epan/dissectors/packet-aim-buddylist.c
@@ -27,9 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-aim-chat.c b/epan/dissectors/packet-aim-chat.c
index c64c5b683b..8c2cd27fef 100644
--- a/epan/dissectors/packet-aim-chat.c
+++ b/epan/dissectors/packet-aim-chat.c
@@ -28,9 +28,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-
#include <glib.h>
#include <epan/packet.h>
@@ -89,8 +86,8 @@ static int dissect_aim_chat_outgoing_msg(tvbuff_t *tvb, packet_info *pinfo, prot
guchar *msg;
int buddyname_length;
- buddyname=ep_alloc(MAX_BUDDYNAME_LENGTH+1);
- msg=ep_alloc(1000);
+ buddyname=(guchar *)ep_alloc(MAX_BUDDYNAME_LENGTH+1);
+ msg=(guchar *)ep_alloc(1000);
buddyname_length = aim_get_buddyname( buddyname, tvb, 30, 31 );
/* channel message from client */
@@ -110,8 +107,8 @@ static int dissect_aim_chat_incoming_msg(tvbuff_t *tvb, packet_info *pinfo, prot
/* channel message to client */
int buddyname_length;
- buddyname=ep_alloc(MAX_BUDDYNAME_LENGTH+1);
- msg=ep_alloc(1000);
+ buddyname=(guchar *)ep_alloc(MAX_BUDDYNAME_LENGTH+1);
+ msg=(guchar *)ep_alloc(1000);
buddyname_length = aim_get_buddyname( buddyname, tvb, 30, 31 );
aim_get_message( msg, tvb, 36 + buddyname_length, tvb_length(tvb)
diff --git a/epan/dissectors/packet-aim-chatnav.c b/epan/dissectors/packet-aim-chatnav.c
index 1e74ec1897..b90168cd22 100644
--- a/epan/dissectors/packet-aim-chatnav.c
+++ b/epan/dissectors/packet-aim-chatnav.c
@@ -27,9 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-aim-directory.c b/epan/dissectors/packet-aim-directory.c
index 0e88ffe01d..f375885470 100644
--- a/epan/dissectors/packet-aim-directory.c
+++ b/epan/dissectors/packet-aim-directory.c
@@ -27,9 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-aim-email.c b/epan/dissectors/packet-aim-email.c
index 754fed5272..d7a7b1c90f 100644
--- a/epan/dissectors/packet-aim-email.c
+++ b/epan/dissectors/packet-aim-email.c
@@ -27,9 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-aim-icq.c b/epan/dissectors/packet-aim-icq.c
index 9e42fa2b91..60b67961df 100644
--- a/epan/dissectors/packet-aim-icq.c
+++ b/epan/dissectors/packet-aim-icq.c
@@ -27,9 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-aim-invitation.c b/epan/dissectors/packet-aim-invitation.c
index 1481053677..cb43e94fe7 100644
--- a/epan/dissectors/packet-aim-invitation.c
+++ b/epan/dissectors/packet-aim-invitation.c
@@ -27,9 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-aim-location.c b/epan/dissectors/packet-aim-location.c
index 25bfa012d1..52aa3d1e09 100644
--- a/epan/dissectors/packet-aim-location.c
+++ b/epan/dissectors/packet-aim-location.c
@@ -28,9 +28,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-aim-messaging.c b/epan/dissectors/packet-aim-messaging.c
index 551d70b68c..a238456c55 100644
--- a/epan/dissectors/packet-aim-messaging.c
+++ b/epan/dissectors/packet-aim-messaging.c
@@ -364,7 +364,7 @@ dissect_aim_msg_incoming(tvbuff_t *tvb, packet_info *pinfo, proto_tree *msg_tree
/* Message Channel ID */
proto_tree_add_item(msg_tree, hf_aim_message_channel_id, tvb, offset, 2,
- ENC_BIG_ENDIAN);
+ ENC_BIG_ENDIAN);
channel_id = tvb_get_ntohs(tvb, offset);
offset += 2;
@@ -506,7 +506,8 @@ dissect_aim_rendezvous_extended_message(tvbuff_t *tvb, proto_tree *msg_tree)
text_length = tvb_get_letohs(tvb, offset);
proto_tree_add_item(msg_tree, hf_aim_rendezvous_extended_data_message_text_length, tvb, offset, 2, ENC_BIG_ENDIAN); offset+=2;
text = tvb_get_ephemeral_string(tvb, offset, text_length);
- proto_tree_add_text(msg_tree, tvb, offset, text_length, "Text: %s", text); offset+=text_length;
+ proto_tree_add_text(msg_tree, tvb, offset, text_length, "Text: %s", text); /* offset+=text_length; */
+
offset = tvb_length(tvb);
return offset;
@@ -549,7 +550,7 @@ dissect_aim_tlv_value_extended_data(proto_item *ti, guint16 valueid _U_, tvbuff_
proto_tree_add_text(entry, tvb, offset, 2, "Unknown"); offset += 2;
proto_tree_add_item(entry, hf_aim_icbm_client_err_client_caps_flags, tvb, offset, 4, ENC_BIG_ENDIAN); offset+=4;
proto_tree_add_text(entry, tvb, offset, 1, "Unknown"); offset += 1;
- proto_tree_add_text(entry, tvb, offset, 2, "Downcounter?"); offset += 2;
+ proto_tree_add_text(entry, tvb, offset, 2, "Downcounter?"); /* offset += 2;*/
offset = start_offset + length;
@@ -564,7 +565,7 @@ dissect_aim_tlv_value_extended_data(proto_item *ti, guint16 valueid _U_, tvbuff_
{
/* a message follows */
tvbuff_t *subtvb = tvb_new_subset_remaining(tvb, offset);
- offset += dissect_aim_rendezvous_extended_message(subtvb, entry);
+ /* offset += */ dissect_aim_rendezvous_extended_message(subtvb, entry);
}
else
{
@@ -584,7 +585,7 @@ dissect_aim_msg_ack(tvbuff_t *tvb, packet_info *pinfo, proto_tree *msg_tree)
proto_tree_add_item(msg_tree,hf_aim_icbm_cookie, tvb, offset, 8, ENC_NA); offset+=8;
proto_tree_add_item(msg_tree, hf_aim_message_channel_id, tvb, offset, 2,
- ENC_BIG_ENDIAN); offset += 2;
+ ENC_BIG_ENDIAN); offset += 2;
offset = dissect_aim_buddyname(tvb, pinfo, offset, msg_tree);
diff --git a/epan/dissectors/packet-aim-oft.c b/epan/dissectors/packet-aim-oft.c
index c2973e797a..820fd2280e 100644
--- a/epan/dissectors/packet-aim-oft.c
+++ b/epan/dissectors/packet-aim-oft.c
@@ -27,9 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-aim-popup.c b/epan/dissectors/packet-aim-popup.c
index d00fc677b7..ec09bf4e70 100644
--- a/epan/dissectors/packet-aim-popup.c
+++ b/epan/dissectors/packet-aim-popup.c
@@ -27,9 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-aim-signon.c b/epan/dissectors/packet-aim-signon.c
index fb8bfb3c36..268d0c95e6 100644
--- a/epan/dissectors/packet-aim-signon.c
+++ b/epan/dissectors/packet-aim-signon.c
@@ -28,9 +28,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-aim-sst.c b/epan/dissectors/packet-aim-sst.c
index 65cc9c26f0..2bf45d3f2c 100644
--- a/epan/dissectors/packet-aim-sst.c
+++ b/epan/dissectors/packet-aim-sst.c
@@ -27,9 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-aim-stats.c b/epan/dissectors/packet-aim-stats.c
index 2f159ce66f..b366a94d91 100644
--- a/epan/dissectors/packet-aim-stats.c
+++ b/epan/dissectors/packet-aim-stats.c
@@ -27,9 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-aim-translate.c b/epan/dissectors/packet-aim-translate.c
index c781a1ad5f..2427a7a9a7 100644
--- a/epan/dissectors/packet-aim-translate.c
+++ b/epan/dissectors/packet-aim-translate.c
@@ -27,9 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-aim-userlookup.c b/epan/dissectors/packet-aim-userlookup.c
index ddfc45bf01..07445858f5 100644
--- a/epan/dissectors/packet-aim-userlookup.c
+++ b/epan/dissectors/packet-aim-userlookup.c
@@ -27,9 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-aim.c b/epan/dissectors/packet-aim.c
index 013bbac742..65d2fe9c8c 100644
--- a/epan/dissectors/packet-aim.c
+++ b/epan/dissectors/packet-aim.c
@@ -29,7 +29,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
#include <string.h>
#include <ctype.h>
@@ -470,7 +469,7 @@ const aim_subtype
{
GList *gl = families;
while(gl) {
- aim_family *fam = gl->data;
+ aim_family *fam = (aim_family *)gl->data;
if(fam->family == famnum) {
int i;
for(i = 0; fam->subtypes[i].name; i++) {
@@ -489,7 +488,7 @@ const aim_family
{
GList *gl = families;
while(gl) {
- aim_family *fam = gl->data;
+ aim_family *fam = (aim_family *)gl->data;
if(fam->family == famnum) return fam;
gl = gl->next;
}
@@ -808,7 +807,7 @@ dissect_aim_close_conn(tvbuff_t *tvb, packet_info *pinfo, int offset,
{
col_set_str(pinfo->cinfo, COL_INFO, "Close Connection");
- offset = dissect_aim_tlv_sequence(tvb, pinfo, offset, tree, aim_client_tlvs);
+ dissect_aim_tlv_sequence(tvb, pinfo, offset, tree, aim_client_tlvs);
}
static void
diff --git a/epan/dissectors/packet-airopeek.c b/epan/dissectors/packet-airopeek.c
deleted file mode 100644
index e9ad7b0964..0000000000
--- a/epan/dissectors/packet-airopeek.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/* packet-airopeek.c
- *
- * Routines for the disassembly airopeek encapsulated wireless
- * traces (tested with frames captured from a Cisco WCS).
- *
- * $Id$
- *
- * Copyright 2007 Joerg Mayer (see AUTHORS file)
- *
- * Wireshark - Network traffic analyzer
- * By Gerald Combs <gerald@wireshark.org>
- * Copyright 1998 Gerald Combs
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-/*
- * TODO: Decode meta information.
- * Check on fillup bytes in capture (fcs sometimes wrong)
- * From:
- * http://www.cisco.com/univercd/cc/td/doc/product/wireless/pahcont/oweb.pdf
- * "It will include information on timestamp, signal strength, packet size
- * and so on"
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <glib.h>
-#include <epan/packet.h>
-
-static int proto_airopeek = -1;
-static gint hf_airopeek_unknown1 = -1;
-static gint hf_airopeek_unknown2 = -1;
-static gint hf_airopeek_unknown3 = -1;
-static gint hf_airopeek_unknown4 = -1;
-static gint hf_airopeek_unknown5 = -1;
-static gint hf_airopeek_unknown6 = -1;
-static gint hf_airopeek_channel = -1;
-static gint hf_airopeek_timestamp = -1;
-static gint ett_airopeek = -1;
-
-static dissector_handle_t ieee80211_handle;
-
-static void
-dissect_airopeek(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
-{
- tvbuff_t *next_tvb;
- proto_tree *airopeek_tree = NULL;
- proto_item *ti = NULL;
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "AIROPEEK");
- col_clear(pinfo->cinfo, COL_INFO);
-
- if (tree) {
- ti = proto_tree_add_item(tree, proto_airopeek, tvb, 0, -1, ENC_NA);
- airopeek_tree = proto_item_add_subtree(ti, ett_airopeek);
-
- proto_tree_add_item(airopeek_tree, hf_airopeek_unknown1, tvb, 0, 2, ENC_NA);
- proto_tree_add_item(airopeek_tree, hf_airopeek_unknown2, tvb, 2, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(airopeek_tree, hf_airopeek_unknown3, tvb, 4, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(airopeek_tree, hf_airopeek_unknown4, tvb, 6, 5, ENC_NA);
- proto_tree_add_item(airopeek_tree, hf_airopeek_timestamp, tvb, 11, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(airopeek_tree, hf_airopeek_unknown5, tvb, 15, 2, ENC_NA);
- proto_tree_add_item(airopeek_tree, hf_airopeek_channel, tvb, 17, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(airopeek_tree, hf_airopeek_unknown6, tvb, 18, 2, ENC_NA);
- }
- next_tvb = tvb_new_subset_remaining(tvb, 20);
- pinfo->pseudo_header->ieee_802_11.fcs_len = 4;
- call_dissector(ieee80211_handle, next_tvb, pinfo, tree);
-}
-
-void
-proto_register_airopeek(void)
-{
- static hf_register_info hf[] = {
- { &hf_airopeek_unknown1,
- { "Unknown1", "airopeek.unknown1", FT_BYTES, BASE_NONE, NULL,
- 0x0, NULL, HFILL }},
-
- { &hf_airopeek_unknown2,
- { "caplength1", "airopeek.unknown2", FT_UINT16, BASE_DEC, NULL,
- 0x0, NULL, HFILL }},
-
- { &hf_airopeek_unknown3,
- { "caplength2", "airopeek.unknown3", FT_UINT16, BASE_DEC, NULL,
- 0x0, NULL, HFILL }},
-
- { &hf_airopeek_unknown4,
- { "Unknown4", "airopeek.unknown4", FT_BYTES, BASE_NONE, NULL,
- 0x0, NULL, HFILL }},
-
- { &hf_airopeek_unknown5,
- { "Unknown5", "airopeek.unknown5", FT_BYTES, BASE_NONE, NULL,
- 0x0, NULL, HFILL }},
-
- { &hf_airopeek_unknown6,
- { "Unknown6", "airopeek.unknown6", FT_BYTES, BASE_NONE, NULL,
- 0x0, NULL, HFILL }},
-
- { &hf_airopeek_timestamp,
- { "Timestamp?", "airopeek.timestamp", FT_UINT32, BASE_DEC, NULL,
- 0x0, NULL, HFILL }},
-
- { &hf_airopeek_channel,
- { "Channel", "airopeek.channel", FT_UINT8, BASE_DEC, NULL,
- 0x0, NULL, HFILL }},
-
- };
- static gint *ett[] = {
- &ett_airopeek,
- };
-
- proto_airopeek = proto_register_protocol(
- "Airopeek encapsulated IEEE 802.11", "AIROPEEK", "airopeek");
- proto_register_field_array(proto_airopeek, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
-}
-
-void
-proto_reg_handoff_airopeek(void)
-{
- dissector_handle_t airopeek_handle;
-
- ieee80211_handle = find_dissector("wlan_datapad");
-
- airopeek_handle = create_dissector_handle(dissect_airopeek, proto_airopeek);
- dissector_add_uint("udp.port", 5000, airopeek_handle);
-}
diff --git a/epan/dissectors/packet-ajp13.c b/epan/dissectors/packet-ajp13.c
index 0739031a50..643dc9c392 100644
--- a/epan/dissectors/packet-ajp13.c
+++ b/epan/dissectors/packet-ajp13.c
@@ -359,7 +359,7 @@ display_rsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ajp13_tree, ajp13_con
case MTYPE_END_RESPONSE:
if (ajp13_tree)
proto_tree_add_item(ajp13_tree, hf_ajp13_reusep, tvb, pos, 1, ENC_BIG_ENDIAN);
- pos+=1;
+ /*pos+=1;*/
break;
case MTYPE_SEND_HEADERS:
@@ -456,7 +456,7 @@ display_rsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ajp13_tree, ajp13_con
cd->content_length = rlen;
if (ajp13_tree)
proto_tree_add_item(ajp13_tree, hf_ajp13_rlen, tvb, pos, 2, ENC_BIG_ENDIAN);
- pos+=2;
+ /*pos+=2;*/
break;
}
@@ -783,7 +783,7 @@ dissect_ajp13_tcp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
cd = (ajp13_conv_data*)conversation_get_proto_data(conv, proto_ajp13);
if (!cd) {
- cd = se_alloc(sizeof(ajp13_conv_data));
+ cd = se_new(ajp13_conv_data);
cd->content_length = 0;
cd->was_get_body_chunk = FALSE;
conversation_add_proto_data(conv, proto_ajp13, cd);
@@ -800,7 +800,7 @@ dissect_ajp13_tcp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
* time we've see the packet, and it must be the first "in order"
* pass through the data.
*/
- fd = se_alloc(sizeof(ajp13_frame_data));
+ fd = se_new(ajp13_frame_data);
p_add_proto_data(pinfo->fd, proto_ajp13, fd);
fd->is_request_body = FALSE;
if (cd->content_length) {
diff --git a/epan/dissectors/packet-alcap.c b/epan/dissectors/packet-alcap.c
index fb190ad618..71425e7598 100644
--- a/epan/dissectors/packet-alcap.c
+++ b/epan/dissectors/packet-alcap.c
@@ -536,7 +536,7 @@ static const gchar* dissect_fields_desea(packet_info* pinfo _U_, tvbuff_t *tvb,
return NULL;
}
- e164 = ep_alloc(sizeof(e164_info_t));
+ e164 = ep_new(e164_info_t);
e164->e164_number_type = CALLED_PARTY_NUMBER;
e164->nature_of_address = tvb_get_guint8(tvb,offset) & 0x7f;
@@ -563,7 +563,7 @@ static const gchar* dissect_fields_oesea(packet_info* pinfo _U_, tvbuff_t *tvb,
return NULL;
}
- e164 = ep_alloc(sizeof(e164_info_t));
+ e164 = ep_new(e164_info_t);
e164->e164_number_type = CALLING_PARTY_NUMBER;
e164->nature_of_address = tvb_get_guint8(tvb,offset) & 0x7f;
@@ -1353,7 +1353,7 @@ static void alcap_leg_tree(proto_tree* tree, tvbuff_t* tvb, const alcap_leg_info
extern void alcap_tree_from_bearer_key(proto_tree* tree, tvbuff_t* tvb, const gchar* key) {
- alcap_leg_info_t* leg = se_tree_lookup_string(legs_by_bearer,key,0);
+ alcap_leg_info_t* leg = (alcap_leg_info_t*)se_tree_lookup_string(legs_by_bearer,key,0);
if (leg) {
alcap_leg_tree(tree,tvb,leg);
@@ -1364,7 +1364,7 @@ extern void alcap_tree_from_bearer_key(proto_tree* tree, tvbuff_t* tvb, const g
static void dissect_alcap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
proto_tree *alcap_tree = NULL;
- alcap_message_info_t* msg_info = ep_alloc0(sizeof(alcap_message_info_t));
+ alcap_message_info_t* msg_info = ep_new0(alcap_message_info_t);
int len = tvb_length(tvb);
int offset;
proto_item* pi;
@@ -1432,8 +1432,8 @@ static void dissect_alcap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
alcap_leg_info_t* leg = NULL;
switch (msg_info->msg_type) {
case 5: /* ERQ */
- if( ! ( leg = se_tree_lookup32(legs_by_osaid,msg_info->osaid) )) {
- leg = se_alloc(sizeof(alcap_leg_info_t));
+ if( ! ( leg = (alcap_leg_info_t*)se_tree_lookup32(legs_by_osaid,msg_info->osaid) )) {
+ leg = se_new(alcap_leg_info_t);
leg->dsaid = 0;
leg->osaid = msg_info->osaid;
@@ -1472,7 +1472,7 @@ static void dissect_alcap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
}
break;
case 4: /* ECF */
- if(( leg = se_tree_lookup32(legs_by_osaid,msg_info->dsaid) )) {
+ if(( leg = (alcap_leg_info_t *)se_tree_lookup32(legs_by_osaid,msg_info->dsaid) )) {
leg->dsaid = msg_info->osaid;
se_tree_insert32(legs_by_dsaid,leg->dsaid,leg);
}
@@ -1481,8 +1481,8 @@ static void dissect_alcap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
case 12: /* MOA */
case 13: /* MOR */
case 14: /* MOD */
- if( ( leg = se_tree_lookup32(legs_by_osaid,msg_info->dsaid) )
- || ( leg = se_tree_lookup32(legs_by_dsaid,msg_info->dsaid) ) ) {
+ if( ( leg = (alcap_leg_info_t *)se_tree_lookup32(legs_by_osaid,msg_info->dsaid) )
+ || ( leg = (alcap_leg_info_t *)se_tree_lookup32(legs_by_dsaid,msg_info->dsaid) ) ) {
if(msg_info->release_cause)
leg->release_cause = msg_info->release_cause;
@@ -1490,11 +1490,11 @@ static void dissect_alcap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
}
break;
case 7: /* REL */
- leg = se_tree_lookup32(legs_by_osaid,msg_info->dsaid);
+ leg = (alcap_leg_info_t *)se_tree_lookup32(legs_by_osaid,msg_info->dsaid);
if(leg) {
leg->release_cause = msg_info->release_cause;
- } else if (( leg = se_tree_lookup32(legs_by_dsaid,msg_info->dsaid) )) {
+ } else if (( leg = (alcap_leg_info_t *)se_tree_lookup32(legs_by_dsaid,msg_info->dsaid) )) {
leg->release_cause = msg_info->release_cause;
}
break;
@@ -1503,7 +1503,7 @@ static void dissect_alcap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
}
if (leg != NULL && ( (! leg->msgs) || leg->msgs->last->framenum < pinfo->fd->num ) ) {
- alcap_msg_data_t* msg = se_alloc(sizeof(alcap_msg_data_t));
+ alcap_msg_data_t* msg = se_new(alcap_msg_data_t);
msg->msg_type = msg_info->msg_type;
msg->framenum = pinfo->fd->num;
msg->next = NULL;
diff --git a/epan/dissectors/packet-amr.c b/epan/dissectors/packet-amr.c
index 0ca194f9ff..d8a30c9188 100644
--- a/epan/dissectors/packet-amr.c
+++ b/epan/dissectors/packet-amr.c
@@ -819,7 +819,7 @@ proto_register_amr(void)
prefs_register_enum_preference(amr_module, "encoding.version",
"Type of AMR encoding of the payload",
"Type of AMR encoding of the payload",
- &amr_encoding_type, encoding_types, ENC_BIG_ENDIAN);
+ &amr_encoding_type, encoding_types, FALSE);
prefs_register_enum_preference(amr_module, "mode",
"The AMR mode",
diff --git a/epan/dissectors/packet-ancp.c b/epan/dissectors/packet-ancp.c
index 52e5beb705..821a7dcec5 100644
--- a/epan/dissectors/packet-ancp.c
+++ b/epan/dissectors/packet-ancp.c
@@ -219,7 +219,7 @@ static const value_string techtype_str[] = {
static const value_string dsl_line_attrs[] = {
{ 0x91, "DSL-Type" },
- { 0x81, "Actual-Net-Data-Upstream" },
+ { 0x81, "Actual-Net-Data-Rate-Upstream" },
{ 0x82, "Actual-Net-Data-Rate-Downstream" },
{ 0x83, "Minimum-Net-Data-Rate-Upstream" },
{ 0x84, "Minimum-Net-Data-Rate-Downstream" },
diff --git a/epan/dissectors/packet-ansi_637.c b/epan/dissectors/packet-ansi_637.c
index 1e40510004..999a87657b 100644
--- a/epan/dissectors/packet-ansi_637.c
+++ b/epan/dissectors/packet-ansi_637.c
@@ -34,14 +34,6 @@
# include "config.h"
#endif
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-
#include <epan/packet.h>
#include <epan/emem.h>
#include <epan/strutil.h>
@@ -726,7 +718,7 @@ tele_param_user_data(tvbuff_t *tvb, proto_tree *tree, guint len, guint32 offset)
for (i=0; i < num_fields; i++)
{
oct = tvb_get_guint8(tvb, saved_offset);
- oct2 = tvb_get_guint8(tvb, saved_offset + 1);;
+ oct2 = tvb_get_guint8(tvb, saved_offset + 1);
ansi_637_bigbuf[i] = ((oct & 0x07) << 5) | ((oct2 & 0xf8) >> 3);
saved_offset++;
}
@@ -753,7 +745,7 @@ tele_param_user_data(tvbuff_t *tvb, proto_tree *tree, guint len, guint32 offset)
for (i=0; i < num_fields; i++)
{
oct = tvb_get_guint8(tvb, saved_offset);
- oct2 = tvb_get_guint8(tvb, saved_offset + 1);;
+ oct2 = tvb_get_guint8(tvb, saved_offset + 1);
ansi_637_bigbuf[i] = ((oct & 0x07) << 5) | ((oct2 & 0xf8) >> 3);
saved_offset++;
}
diff --git a/epan/dissectors/packet-ansi_683.c b/epan/dissectors/packet-ansi_683.c
index 0cd8524fcf..28fc22b45a 100644
--- a/epan/dissectors/packet-ansi_683.c
+++ b/epan/dissectors/packet-ansi_683.c
@@ -34,14 +34,6 @@
# include "config.h"
#endif
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-
#include <string.h>
#include <epan/packet.h>
@@ -1534,8 +1526,6 @@ for_param_block_val_spasm(tvbuff_t *tvb, proto_tree *tree, guint len, guint32 of
tvb, offset, 1,
"%s : Reserved",
bigbuf);
-
- offset++;
}
else
{
@@ -1569,8 +1559,6 @@ for_param_block_val_spasm(tvbuff_t *tvb, proto_tree *tree, guint len, guint32 of
tvb, offset, 3,
"%s : Reserved",
bigbuf);
-
- offset += 3;
}
}
diff --git a/epan/dissectors/packet-ansi_801.c b/epan/dissectors/packet-ansi_801.c
index 1aa027fb96..a015b8bbf6 100644
--- a/epan/dissectors/packet-ansi_801.c
+++ b/epan/dissectors/packet-ansi_801.c
@@ -42,14 +42,6 @@
#include <glib.h>
#include <math.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-ansi_a.c b/epan/dissectors/packet-ansi_a.c
index a8943df0e9..55a364fae1 100644
--- a/epan/dissectors/packet-ansi_a.c
+++ b/epan/dissectors/packet-ansi_a.c
@@ -46,6 +46,7 @@
#include <epan/tap.h>
#include <epan/strutil.h>
#include <epan/emem.h>
+#include <epan/expert.h>
#include "packet-rtp.h"
#include "packet-bssap.h"
@@ -919,6 +920,16 @@ ansi_a_so_int_to_str(
curr_offset += ((edc_len) - (edc_max_len)); \
}
+#define EXTRANEOUS_DATA_CHECK_EXPERT(edc_len, edc_max_len) \
+ if ((edc_len) > (edc_max_len)) \
+ { \
+ proto_item *expert_item; \
+ expert_item = proto_tree_add_text(tree, tvb, \
+ curr_offset, (edc_len) - (edc_max_len), "Extraneous Data, dissector bug or later version spec(report to wireshark.org)"); \
+ expert_add_info_format(pinfo, expert_item, PI_PROTOCOL, PI_NOTE, "Extraneous Data, dissector bug or later version spec(report to wireshark.org)"); \
+ curr_offset += ((edc_len) - (edc_max_len)); \
+ }
+
#define SHORT_DATA_CHECK(sdc_len, sdc_min_len) \
if ((sdc_len) < (sdc_min_len)) \
{ \
@@ -2734,7 +2745,7 @@ static guint8
elem_cell_id_list(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len)
{
guint8 oct;
- guint8 consumed;
+ guint16 consumed;
guint8 num_cells;
guint32 curr_offset;
proto_item *item = NULL;
@@ -2953,7 +2964,7 @@ elem_downlink_re_aux(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len,
{
guint8 oct;
guint8 disc;
- guint8 consumed;
+ guint16 consumed;
guint8 num_cells;
guint8 curr_cell;
guint32 value;
@@ -3081,7 +3092,7 @@ elem_downlink_re(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint3
static guint8
elem_downlink_re_list(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len)
{
- guint8 consumed;
+ guint16 consumed;
guint8 num_envs;
guint8 oct_len;
guint32 curr_offset;
@@ -3203,7 +3214,7 @@ static guint8
elem_ho_pow_lev(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len)
{
guint8 oct;
- guint8 consumed;
+ guint16 consumed;
guint8 num_cells;
proto_item *item = NULL;
proto_tree *subtree = NULL;
@@ -4549,7 +4560,7 @@ elem_cause_l3(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 o
case 7: str = "International network"; break;
case 10: str = "Network beyond interworking point"; break;
default:
- str = "Reserved"; break;
+ str = "Reserved";
break;
}
@@ -5294,7 +5305,6 @@ elem_adds_user_part(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gui
proto_item *item;
curr_offset = offset;
- adds_app = 0;
oct = tvb_get_guint8(tvb, curr_offset);
@@ -5805,7 +5815,7 @@ elem_is2000_scr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32
}
}
- EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
+ EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset);
return(curr_offset - offset);
}
@@ -8688,11 +8698,11 @@ static guint8 (*elem_1_fcn[])(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
/*
* Type Length Value (TLV) element dissector
*/
-static guint8
+static guint16
elem_tlv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, elem_idx_t idx, guint32 offset, guint len _U_, const gchar *name_add)
{
guint8 oct, parm_len;
- guint8 consumed;
+ guint16 consumed;
guint32 curr_offset;
proto_tree *subtree;
proto_item *item;
@@ -8770,11 +8780,11 @@ elem_tlv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, elem_idx_t idx, gu
* Length cannot be used in these functions, big problem if a element dissector
* is not defined for these.
*/
-static guint8
+static guint16
elem_tv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, elem_idx_t idx, guint32 offset, const gchar *name_add)
{
guint8 oct;
- guint8 consumed;
+ guint16 consumed;
guint32 curr_offset;
proto_tree *subtree;
proto_item *item;
@@ -8847,12 +8857,12 @@ elem_tv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, elem_idx_t idx, gui
* Length cannot be used in these functions, big problem if a element dissector
* is not defined for these.
*/
-static guint8
+static guint16
elem_t(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, elem_idx_t idx, guint32 offset, const gchar *name_add)
{
guint8 oct;
guint32 curr_offset;
- guint8 consumed;
+ guint16 consumed;
curr_offset = offset;
@@ -8882,11 +8892,11 @@ elem_t(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, elem_idx_t idx,
/*
* Length Value (LV) element dissector
*/
-static guint8
+static guint16
elem_lv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, elem_idx_t idx, guint32 offset, guint len _U_, const gchar *name_add)
{
guint8 parm_len;
- guint8 consumed;
+ guint16 consumed;
guint32 curr_offset;
proto_tree *subtree;
proto_item *item;
@@ -8954,15 +8964,14 @@ elem_lv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, elem_idx_t idx, gui
* Length cannot be used in these functions, big problem if a element dissector
* is not defined for these.
*/
-static guint8
+static guint16
elem_v(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, elem_idx_t idx, guint32 offset)
{
- guint8 consumed;
+ guint16 consumed;
guint32 curr_offset;
gint dec_idx;
curr_offset = offset;
- consumed = 0;
if ((int)idx < 0 || idx >= ansi_a_elem_1_max-1)
{
@@ -9100,7 +9109,7 @@ elem_v(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, elem_idx_t idx, guin
static void
bsmap_cl3_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 offset, guint len)
{
- guint8 consumed;
+ guint16 consumed;
guint32 curr_offset;
guint curr_len;
@@ -9457,7 +9466,7 @@ dtap_srvc_release_complete(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
static void
bsmap_ass_req(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 offset, guint len)
{
- guint8 consumed;
+ guint16 consumed;
guint32 curr_offset;
guint curr_len;
@@ -9510,7 +9519,7 @@ bsmap_ass_req(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 offse
static void
bsmap_ass_complete(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 offset, guint len)
{
- guint8 consumed;
+ guint16 consumed;
guint32 curr_offset;
guint curr_len;
@@ -9545,7 +9554,7 @@ bsmap_ass_complete(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32
static void
bsmap_ass_failure(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 offset, guint len)
{
- guint8 consumed;
+ guint16 consumed;
guint32 curr_offset;
guint curr_len;
@@ -9565,7 +9574,7 @@ bsmap_ass_failure(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 o
static void
bsmap_clr_req(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 offset, guint len)
{
- guint8 consumed;
+ guint16 consumed;
guint32 curr_offset;
guint curr_len;
@@ -9585,7 +9594,7 @@ bsmap_clr_req(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 offse
static void
bsmap_clr_command(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 offset, guint len)
{
- guint8 consumed;
+ guint16 consumed;
guint32 curr_offset;
guint curr_len;
@@ -9605,7 +9614,7 @@ bsmap_clr_command(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 o
static void
bsmap_clr_complete(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 offset, guint len)
{
- guint8 consumed;
+ guint16 consumed;
guint32 curr_offset;
guint curr_len;
@@ -11623,7 +11632,7 @@ dissect_cdma2000_a1_elements(tvbuff_t *tvb, _U_ packet_info *pinfo, proto_tree *
}
}
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0);
}
/* GENERIC DISSECTOR FUNCTIONS */
@@ -11783,7 +11792,6 @@ dissect_dtap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/*
* add DTAP message name
*/
- saved_offset = offset;
oct = tvb_get_guint8(tvb, offset++);
msg_str = my_match_strval_idx((guint32) oct, ansi_a_dtap_strings, &idx, &dec_idx);
diff --git a/epan/dissectors/packet-ansi_map.c b/epan/dissectors/packet-ansi_map.c
index d331477b10..30e9404cde 100644
--- a/epan/dissectors/packet-ansi_map.c
+++ b/epan/dissectors/packet-ansi_map.c
@@ -1219,17 +1219,17 @@ update_saved_invokedata(packet_info *pinfo, proto_tree *tree _U_, tvbuff_t *tvb
if ((!pinfo->fd->flags.visited)&&(p_private_tcap->TransactionID_str)){
/* Only do this once XXX I hope its the right thing to do */
/* The hash string needs to contain src and dest to distiguish differnt flows */
- switch(ansi_map_response_matching_type){
- case ANSI_MAP_TID_ONLY:
- g_snprintf(buf,1024,"%s",p_private_tcap->TransactionID_str);
- break;
- case 1:
- g_snprintf(buf,1024,"%s%s",p_private_tcap->TransactionID_str,src_str);
- break;
- default:
- g_snprintf(buf,1024,"%s%s%s",p_private_tcap->TransactionID_str,src_str,dst_str);
- break;
- }
+ switch(ansi_map_response_matching_type){
+ case ANSI_MAP_TID_ONLY:
+ g_snprintf(buf,1024,"%s",p_private_tcap->TransactionID_str);
+ break;
+ case 1:
+ g_snprintf(buf,1024,"%s%s",p_private_tcap->TransactionID_str,src_str);
+ break;
+ default:
+ g_snprintf(buf,1024,"%s%s%s",p_private_tcap->TransactionID_str,src_str,dst_str);
+ break;
+ }
/* If the entry allready exists don't owervrite it */
ansi_map_saved_invokedata = (struct ansi_map_invokedata_t *)g_hash_table_lookup(TransactionId_table,buf);
if(ansi_map_saved_invokedata)
@@ -1370,29 +1370,12 @@ static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
static int dissect_returnData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx);
static int dissect_ansi_map_SystemMyTypeCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index _U_);
-#if 0
-/* Moved to tvbuff.h
- * XXX remove after trial period.
- */
-typedef struct dgt_set_t
-{
- unsigned char out[15];
-}
-dgt_set_t;
-#endif
static dgt_set_t Dgt_tbcd = {
{
/* 0 1 2 3 4 5 6 7 8 9 a b c d e */
'0','1','2','3','4','5','6','7','8','9','?','B','C','*','#'
}
};
-static dgt_set_t Dgt1_9_bcd = {
- {
- /* 0 1 2 3 4 5 6 7 8 9 a b c d e */
- '0','1','2','3','4','5','6','7','8','9','?','?','?','?','?'
- }
-};
-
/* Type of Digits (octet 1, bits A-H) */
static const value_string ansi_map_type_of_digits_vals[] = {
@@ -1465,7 +1448,7 @@ dissect_ansi_map_min_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
subtree = proto_item_add_subtree(actx->created_item, ett_mintype);
- digit_str = tvb_bcd_dig_to_ep_str(tvb, offset, tvb_length_remaining(tvb,offset), &Dgt1_9_bcd, FALSE);
+ digit_str = tvb_bcd_dig_to_ep_str(tvb, offset, tvb_length_remaining(tvb,offset), NULL, FALSE);
proto_tree_add_string(subtree, hf_ansi_map_bcd_digits, tvb, offset, -1, digit_str);
proto_item_append_text(actx->created_item, " - %s", digit_str);
}
@@ -1548,7 +1531,7 @@ dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
switch ((octet&0xf)){
case 1:
/* BCD Coding */
- digit_str = tvb_bcd_dig_to_ep_str(tvb, offset, tvb_length_remaining(tvb,offset), &Dgt_tbcd, FALSE);
+ digit_str = tvb_bcd_dig_to_ep_str(tvb, offset, tvb_length_remaining(tvb,offset), &Dgt_tbcd, FALSE);
proto_tree_add_string(subtree, hf_ansi_map_bcd_digits, tvb, offset, -1, digit_str);
proto_item_append_text(actx->created_item, " - %s", digit_str);
break;
@@ -4953,7 +4936,7 @@ dissect_ansi_map_SystemAccessType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
static int
dissect_ansi_map_SystemCapabilities(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 344 "../../asn1/ansi_map/ansi_map.cnf"
+#line 340 "../../asn1/ansi_map/ansi_map.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
&parameter_tvb);
@@ -5209,7 +5192,7 @@ dissect_ansi_map_SuspiciousAccess(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
static int
dissect_ansi_map_TransactionCapability(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 361 "../../asn1/ansi_map/ansi_map.cnf"
+#line 357 "../../asn1/ansi_map/ansi_map.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
&parameter_tvb);
@@ -5454,7 +5437,7 @@ dissect_ansi_map_ReauthenticationReport(gboolean implicit_tag _U_, tvbuff_t *tvb
static int
dissect_ansi_map_ServiceIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 441 "../../asn1/ansi_map/ansi_map.cnf"
+#line 437 "../../asn1/ansi_map/ansi_map.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
&parameter_tvb);
@@ -5997,7 +5980,7 @@ dissect_ansi_map_AlertCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off
static int
dissect_ansi_map_CDMA2000HandoffInvokeIOSData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 419 "../../asn1/ansi_map/ansi_map.cnf"
+#line 415 "../../asn1/ansi_map/ansi_map.cnf"
tvbuff_t *parameter_tvb = NULL;
proto_tree *subtree;
@@ -6112,7 +6095,7 @@ dissect_ansi_map_CDMAConnectionReference(gboolean implicit_tag _U_, tvbuff_t *tv
static int
dissect_ansi_map_CDMAServiceOption(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 369 "../../asn1/ansi_map/ansi_map.cnf"
+#line 365 "../../asn1/ansi_map/ansi_map.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
&parameter_tvb);
@@ -6606,7 +6589,7 @@ dissect_ansi_map_BSMCStatus(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
static int
dissect_ansi_map_CDMA2000HandoffResponseIOSData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 430 "../../asn1/ansi_map/ansi_map.cnf"
+#line 426 "../../asn1/ansi_map/ansi_map.cnf"
tvbuff_t *parameter_tvb = NULL;
proto_tree *subtree;
@@ -6847,7 +6830,7 @@ dissect_ansi_map_ACGEncountered(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
static int
dissect_ansi_map_CallingPartyName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 380 "../../asn1/ansi_map/ansi_map.cnf"
+#line 376 "../../asn1/ansi_map/ansi_map.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
&parameter_tvb);
@@ -7368,7 +7351,7 @@ dissect_ansi_map_LegInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
static int
dissect_ansi_map_TerminationTriggers(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 353 "../../asn1/ansi_map/ansi_map.cnf"
+#line 349 "../../asn1/ansi_map/ansi_map.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
&parameter_tvb);
@@ -7557,7 +7540,7 @@ dissect_ansi_map_DestinationAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_
static int
dissect_ansi_map_WIN_TriggerList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 403 "../../asn1/ansi_map/ansi_map.cnf"
+#line 399 "../../asn1/ansi_map/ansi_map.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
&parameter_tvb);
@@ -9048,7 +9031,7 @@ dissect_ansi_map_TriggerType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o
static int
dissect_ansi_map_TriggerCapability(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 388 "../../asn1/ansi_map/ansi_map.cnf"
+#line 384 "../../asn1/ansi_map/ansi_map.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
&parameter_tvb);
@@ -9066,7 +9049,7 @@ dissect_ansi_map_TriggerCapability(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
static int
dissect_ansi_map_WINOperationsCapability(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 396 "../../asn1/ansi_map/ansi_map.cnf"
+#line 392 "../../asn1/ansi_map/ansi_map.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
&parameter_tvb);
@@ -9152,7 +9135,7 @@ dissect_ansi_map_LocationRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, i
static int
dissect_ansi_map_ControlNetworkID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 411 "../../asn1/ansi_map/ansi_map.cnf"
+#line 407 "../../asn1/ansi_map/ansi_map.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
&parameter_tvb);
@@ -9624,7 +9607,7 @@ dissect_ansi_map_RestrictionDigits(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
static int
dissect_ansi_map_SMS_OriginationRestrictions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 310 "../../asn1/ansi_map/ansi_map.cnf"
+#line 308 "../../asn1/ansi_map/ansi_map.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
&parameter_tvb);
@@ -10656,7 +10639,7 @@ dissect_ansi_map_SMS_BearerData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
static int
dissect_ansi_map_SMS_TeleserviceIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 319 "../../asn1/ansi_map/ansi_map.cnf"
+#line 317 "../../asn1/ansi_map/ansi_map.cnf"
int length;
tvbuff_t *parameter_tvb = NULL;
@@ -15492,7 +15475,7 @@ dissect_ansi_map_ReturnData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
/*--- End of included file: packet-ansi_map-fn.c ---*/
-#line 3620 "../../asn1/ansi_map/packet-ansi_map-template.c"
+#line 3601 "../../asn1/ansi_map/packet-ansi_map-template.c"
/*
* 6.5.2.dk N.S0013-0 v 1.0,X.S0004-550-E v1.0 2.301
@@ -15728,7 +15711,6 @@ static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
break;
/*End N.S0011-0 v 1.0 */
case 57: /*Information Backward*/
- offset = offset;
break;
/* N.S0008-0 v 1.0 */
case 58: /*Change Facilities*/
@@ -15793,7 +15775,6 @@ static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
break;
/*END N.S0013 */
case 77: /*Release*/
- offset = offset;
break;
case 78: /*SMS Delivery Point to Point Ack*/
offset = dissect_ansi_map_SMSDeliveryPointToPointAck(TRUE, tvb, offset, actx, tree, hf_ansi_map_smsDeliveryPointToPointAck);
@@ -15847,7 +15828,6 @@ static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
offset = dissect_ansi_map_CallTerminationReport(TRUE, tvb, offset, actx, tree, hf_ansi_map_callTerminationReport);
break;
case 93: /*Geo Position Directive*/
- offset = offset;
break;
case 94: /*Geo Position Request*/
offset = dissect_ansi_map_GeoPositionRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_interSystemPositionRequest);
@@ -15876,9 +15856,9 @@ static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
/*End N.S0029 X.S0001-A v1.0*/
/* X.S0002-0 v1.0 */
/* LCSParameterRequest */
- case 101: /* InterSystemSMSPage 101 */
- offset = dissect_ansi_map_InterSystemSMSPage(TRUE, tvb, offset, actx, tree, hf_ansi_map_interSystemSMSPage);
- break;
+ case 101: /* InterSystemSMSPage 101 */
+ offset = dissect_ansi_map_InterSystemSMSPage(TRUE, tvb, offset, actx, tree, hf_ansi_map_interSystemSMSPage);
+ break;
case 102:
offset = dissect_ansi_map_LCSParameterRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_lcsParameterRequest);
break;
@@ -15894,27 +15874,27 @@ static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
/* StatusRequest X.S0008-0 v1.0*/
offset = dissect_ansi_map_StatusRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_statusRequest);
break;
- /* InterSystemSMSDelivery-PointToPoint 111 X.S0004-540-E v2.0*/
- case 111:
- /* InterSystemSMSDeliveryPointToPoint X.S0004-540-E v2.0 */
- offset = dissect_ansi_map_InterSystemSMSDeliveryPointToPoint(TRUE, tvb, offset, actx, tree, hf_ansi_map_interSystemSMSDeliveryPointToPoint);
- break;
- case 112:
- /* QualificationRequest2 112 X.S0004-540-E v2.0*/
- offset = dissect_ansi_map_QualificationRequest2(TRUE, tvb, offset, actx, tree, hf_ansi_map_qualificationRequest2);
- break;
+ /* InterSystemSMSDelivery-PointToPoint 111 X.S0004-540-E v2.0*/
+ case 111:
+ /* InterSystemSMSDeliveryPointToPoint X.S0004-540-E v2.0 */
+ offset = dissect_ansi_map_InterSystemSMSDeliveryPointToPoint(TRUE, tvb, offset, actx, tree, hf_ansi_map_interSystemSMSDeliveryPointToPoint);
+ break;
+ case 112:
+ /* QualificationRequest2 112 X.S0004-540-E v2.0*/
+ offset = dissect_ansi_map_QualificationRequest2(TRUE, tvb, offset, actx, tree, hf_ansi_map_qualificationRequest2);
+ break;
default:
proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob");
- opCodeKnown = FALSE;
+ opCodeKnown = FALSE;
break;
}
if (opCodeKnown)
{
- tap_p->message_type = OperationCode;
- tap_p->size = 0; /* should be number of octets in message */
+ tap_p->message_type = OperationCode;
+ tap_p->size = 0; /* should be number of octets in message */
- tap_queue_packet(ansi_map_tap, g_pinfo, tap_p);
+ tap_queue_packet(ansi_map_tap, g_pinfo, tap_p);
}
return offset;
@@ -16063,7 +16043,7 @@ static int dissect_returnData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
case 56: /*OTASP Request 6.4.2.CC*/
offset = dissect_ansi_map_OTASPRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_oTASPRequestRes);
break;
- /* 57 Information Backward*/
+ /* 57 Information Backward*/
case 58: /*Change Facilities*/
offset = dissect_ansi_map_ChangeFacilitiesRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_changeFacilitiesRes);
break;
@@ -16078,7 +16058,7 @@ static int dissect_returnData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
break;
case 62: /*NumberPortabilityRequest */
offset = dissect_ansi_map_NumberPortabilityRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_numberPortabilityRequestRes);
- break;
+ break;
case 63: /*Service Request*/
offset = dissect_ansi_map_ServiceRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_serviceRequestRes);
break;
@@ -16092,7 +16072,7 @@ static int dissect_returnData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
case 68: /*Facility Selected and Available*/
offset = dissect_ansi_map_FacilitySelectedAndAvailableRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_facilitySelectedAndAvailableRes);
break;
- /* 69 Instruction Request*/
+ /* 69 Instruction Request*/
case 70: /*Modify*/
offset = dissect_ansi_map_ModifyRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_modifyRes);
break;
@@ -16166,26 +16146,26 @@ static int dissect_returnData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
/* StatusRequest X.S0008-0 v1.0*/
offset = dissect_ansi_map_StatusRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_statusRequestRes);
break;
- case 111:
- /* InterSystemSMSDeliveryPointToPointRes X.S0004-540-E v2.0 */
- offset = dissect_ansi_map_InterSystemSMSDeliveryPointToPointRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_interSystemSMSDeliveryPointToPointRes);
- break;
- case 112:
- /* QualificationRequest2Res 112 X.S0004-540-E v2.0*/
- offset = dissect_ansi_map_QualificationRequest2Res(TRUE, tvb, offset, actx, tree, hf_ansi_map_qualificationRequest2Res);
- break;
+ case 111:
+ /* InterSystemSMSDeliveryPointToPointRes X.S0004-540-E v2.0 */
+ offset = dissect_ansi_map_InterSystemSMSDeliveryPointToPointRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_interSystemSMSDeliveryPointToPointRes);
+ break;
+ case 112:
+ /* QualificationRequest2Res 112 X.S0004-540-E v2.0*/
+ offset = dissect_ansi_map_QualificationRequest2Res(TRUE, tvb, offset, actx, tree, hf_ansi_map_qualificationRequest2Res);
+ break;
default:
proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob");
- opCodeKnown = FALSE;
+ opCodeKnown = FALSE;
break;
}
if (opCodeKnown)
{
- tap_p->message_type = OperationCode;
- tap_p->size = 0; /* should be number of octets in message */
+ tap_p->message_type = OperationCode;
+ tap_p->size = 0; /* should be number of octets in message */
- tap_queue_packet(ansi_map_tap, g_pinfo, tap_p);
+ tap_queue_packet(ansi_map_tap, g_pinfo, tap_p);
}
return offset;
@@ -16210,19 +16190,19 @@ find_saved_invokedata(asn1_ctx_t *actx){
src_str = ep_address_to_str(src);
dst_str = ep_address_to_str(dst);
/* Reverse order to invoke */
- switch(ansi_map_response_matching_type){
- case ANSI_MAP_TID_ONLY:
- g_snprintf(buf,1024,"%s",p_private_tcap->TransactionID_str);
- break;
- case 1:
- g_snprintf(buf,1024,"%s%s",p_private_tcap->TransactionID_str,dst_str);
- break;
- default:
- g_snprintf(buf,1024,"%s%s%s",p_private_tcap->TransactionID_str,dst_str,src_str);
- break;
- }
+ switch(ansi_map_response_matching_type){
+ case ANSI_MAP_TID_ONLY:
+ g_snprintf(buf,1024,"%s",p_private_tcap->TransactionID_str);
+ break;
+ case 1:
+ g_snprintf(buf,1024,"%s%s",p_private_tcap->TransactionID_str,dst_str);
+ break;
+ default:
+ g_snprintf(buf,1024,"%s%s%s",p_private_tcap->TransactionID_str,dst_str,src_str);
+ break;
+ }
- /*g_warning("Find Hash string %s pkt: %u",buf,actx->pinfo->fd->num);*/
+ /*g_warning("Find Hash string %s pkt: %u",buf,actx->pinfo->fd->num);*/
ansi_map_saved_invokedata = (struct ansi_map_invokedata_t *)g_hash_table_lookup(TransactionId_table, buf);
if(ansi_map_saved_invokedata){
OperationCode = ansi_map_saved_invokedata->opcode & 0xff;
@@ -16231,7 +16211,7 @@ find_saved_invokedata(asn1_ctx_t *actx){
OperationCode = OperationCode & 0x00ff;
}
}else{
- /*g_warning("No private data pkt: %u",actx->pinfo->fd->num);*/
+ /*g_warning("No private data pkt: %u",actx->pinfo->fd->num);*/
OperationCode = OperationCode & 0x00ff;
}
return OperationCode;
@@ -16242,7 +16222,6 @@ dissect_ansi_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_item *ansi_map_item;
proto_tree *ansi_map_tree = NULL;
- int offset = 0;
struct ansi_tcap_private_t *p_private_tcap;
asn1_ctx_t asn1_ctx;
asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
@@ -16568,7 +16547,7 @@ void proto_register_ansi_map(void) {
NULL, HFILL }},
{ &hf_ansi_map_cdmaserviceoption,
{ "CDMAServiceOption", "ansi_map.cdmaserviceoption",
- FT_UINT16, BASE_RANGE_STRING | BASE_DEC, RVALS(&cdmaserviceoption_vals), 0x0,
+ FT_UINT16, BASE_RANGE_STRING | BASE_DEC, RVALS(cdmaserviceoption_vals), 0x0,
NULL, HFILL }},
{ &hf_ansi_trans_cap_waddr,
{ "WIN Addressing (WADDR)", "ansi_map.trans_cap_waddr",
@@ -19342,7 +19321,7 @@ void proto_register_ansi_map(void) {
NULL, HFILL }},
/*--- End of included file: packet-ansi_map-hfarr.c ---*/
-#line 5279 "../../asn1/ansi_map/packet-ansi_map-template.c"
+#line 5254 "../../asn1/ansi_map/packet-ansi_map-template.c"
};
/* List of subtrees */
@@ -19603,15 +19582,15 @@ void proto_register_ansi_map(void) {
&ett_ansi_map_ReturnData,
/*--- End of included file: packet-ansi_map-ettarr.c ---*/
-#line 5312 "../../asn1/ansi_map/packet-ansi_map-template.c"
+#line 5287 "../../asn1/ansi_map/packet-ansi_map-template.c"
};
- static enum_val_t ansi_map_response_matching_type_values[] = {
- {"Only Transaction ID will be used in Invoke/response matching", "Transaction ID only", 0},
- {"Transaction ID and Source will be used in Invoke/response matching", "Transaction ID and Source", 1},
- {"Transaction ID Source and Destination will be used in Invoke/response matching", "Transaction ID Source and Destination", 2},
- {NULL, NULL, -1}
- };
+ static enum_val_t ansi_map_response_matching_type_values[] = {
+ {"Only Transaction ID will be used in Invoke/response matching", "Transaction ID only", 0},
+ {"Transaction ID and Source will be used in Invoke/response matching", "Transaction ID and Source", 1},
+ {"Transaction ID Source and Destination will be used in Invoke/response matching", "Transaction ID Source and Destination", 2},
+ {NULL, NULL, -1}
+ };
/* Register protocol */
proto_ansi_map = proto_register_protocol(PNAME, PSNAME, PFNAME);
@@ -19645,10 +19624,10 @@ void proto_register_ansi_map(void) {
"ANSI MAP SSNs to decode as ANSI MAP",
&global_ssn_range, MAX_SSN);
- prefs_register_enum_preference(ansi_map_module, "transaction.matchtype",
- "Type of matching invoke/response",
- "Type of matching invoke/response, risk of missmatch if loose matching choosen",
- &ansi_map_response_matching_type, ansi_map_response_matching_type_values, FALSE);
+ prefs_register_enum_preference(ansi_map_module, "transaction.matchtype",
+ "Type of matching invoke/response",
+ "Type of matching invoke/response, risk of missmatch if loose matching choosen",
+ &ansi_map_response_matching_type, ansi_map_response_matching_type_values, FALSE);
register_init_routine(&ansi_map_init_protocol);
}
diff --git a/epan/dissectors/packet-aodv.c b/epan/dissectors/packet-aodv.c
index 136e047be5..963cd697ba 100644
--- a/epan/dissectors/packet-aodv.c
+++ b/epan/dissectors/packet-aodv.c
@@ -171,9 +171,9 @@ dissect_aodv_ext(tvbuff_t * tvb, int offset, proto_tree * tree)
val_to_str(type, exttype_vals, "Unknown"));
if (len == 0) {
- proto_tree_add_text(ext_tree, tvb, offset + 1, 1,
- "Invalid option length: %u", len);
- return; /* we must not try to decode this */
+ proto_tree_add_text(ext_tree, tvb, offset + 1, 1,
+ "Invalid option length: %u", len);
+ return; /* we must not try to decode this */
}
proto_tree_add_text(ext_tree, tvb, offset + 1, 1,
"Length: %u bytes", len);
@@ -182,15 +182,15 @@ dissect_aodv_ext(tvbuff_t * tvb, int offset, proto_tree * tree)
switch (type) {
case AODV_EXT_INT:
- proto_tree_add_uint(ext_tree, hf_aodv_ext_interval,
- tvb, offset, 4, tvb_get_ntohl(tvb, offset));
+ proto_tree_add_uint(ext_tree, hf_aodv_ext_interval,
+ tvb, offset, 4, tvb_get_ntohl(tvb, offset));
break;
case AODV_EXT_NTP:
- proto_tree_add_item(ext_tree, hf_aodv_ext_timestamp,
- tvb, offset, 8, ENC_BIG_ENDIAN);
- break;
- default:
- break;
+ proto_tree_add_item(ext_tree, hf_aodv_ext_timestamp,
+ tvb, offset, 8, ENC_BIG_ENDIAN);
+ break;
+ default:
+ break;
}
/* If multifield extensions appear, we need more
* sophisticated handler. For now, this is okay. */
@@ -252,37 +252,37 @@ dissect_aodv_rreq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *aodv_tree,
rreq_id = tvb_get_ntohl(tvb, offset);
if (aodv_tree)
- proto_tree_add_uint(aodv_tree, hf_aodv_rreq_id, tvb, offset, 4,
+ proto_tree_add_uint(aodv_tree, hf_aodv_rreq_id, tvb, offset, 4,
rreq_id);
offset += 4;
if (is_ipv6) {
- tvb_get_ipv6(tvb, offset, &dest_addr_v6);
- if (aodv_tree) {
- proto_tree_add_ipv6(aodv_tree, hf_aodv_dest_ipv6, tvb, offset,
- INET6_ADDRLEN, (guint8 *)&dest_addr_v6);
- proto_item_append_text(ti, ", Dest IP: %s",
- ip6_to_str(&dest_addr_v6));
- }
- col_append_fstr(pinfo->cinfo, COL_INFO, ", D: %s",
- ip6_to_str(&dest_addr_v6));
- offset += INET6_ADDRLEN;
+ tvb_get_ipv6(tvb, offset, &dest_addr_v6);
+ if (aodv_tree) {
+ proto_tree_add_ipv6(aodv_tree, hf_aodv_dest_ipv6, tvb, offset,
+ INET6_ADDRLEN, (guint8 *)&dest_addr_v6);
+ proto_item_append_text(ti, ", Dest IP: %s",
+ ip6_to_str(&dest_addr_v6));
+ }
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", D: %s",
+ ip6_to_str(&dest_addr_v6));
+ offset += INET6_ADDRLEN;
} else {
- dest_addr_v4 = tvb_get_ipv4(tvb, offset);
- if (aodv_tree) {
- proto_tree_add_ipv4(aodv_tree, hf_aodv_dest_ip, tvb, offset, 4,
- dest_addr_v4);
- proto_item_append_text(ti, ", Dest IP: %s",
- ip_to_str((guint8 *)&dest_addr_v4));
- }
- col_append_fstr(pinfo->cinfo, COL_INFO, ", D: %s",
- ip_to_str((guint8 *)&dest_addr_v4));
- offset += 4;
+ dest_addr_v4 = tvb_get_ipv4(tvb, offset);
+ if (aodv_tree) {
+ proto_tree_add_ipv4(aodv_tree, hf_aodv_dest_ip, tvb, offset, 4,
+ dest_addr_v4);
+ proto_item_append_text(ti, ", Dest IP: %s",
+ ip_to_str((guint8 *)&dest_addr_v4));
+ }
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", D: %s",
+ ip_to_str((guint8 *)&dest_addr_v4));
+ offset += 4;
}
dest_seqno = tvb_get_ntohl(tvb, offset);
if (aodv_tree)
- proto_tree_add_uint(aodv_tree, hf_aodv_dest_seqno, tvb, offset, 4,
+ proto_tree_add_uint(aodv_tree, hf_aodv_dest_seqno, tvb, offset, 4,
dest_seqno);
offset += 4;
@@ -312,17 +312,17 @@ dissect_aodv_rreq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *aodv_tree,
orig_seqno = tvb_get_ntohl(tvb, offset);
if (aodv_tree)
- proto_tree_add_uint(aodv_tree, hf_aodv_orig_seqno, tvb, offset, 4,
+ proto_tree_add_uint(aodv_tree, hf_aodv_orig_seqno, tvb, offset, 4,
orig_seqno);
- col_append_fstr(pinfo->cinfo, COL_INFO, " Id=%u Hcnt=%u DSN=%u OSN=%u",
- rreq_id,
- hop_count,
- dest_seqno,
- orig_seqno);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " Id=%u Hcnt=%u DSN=%u OSN=%u",
+ rreq_id,
+ hop_count,
+ dest_seqno,
+ orig_seqno);
offset += 4;
if (aodv_tree) {
- extlen = tvb_reported_length_remaining(tvb, offset);
+ extlen = tvb_reported_length_remaining(tvb, offset);
if (extlen > 0)
dissect_aodv_ext(tvb, offset, aodv_tree);
}
@@ -374,71 +374,71 @@ dissect_aodv_rrep(tvbuff_t *tvb, packet_info *pinfo, proto_tree *aodv_tree,
offset += 1;
if (is_ipv6) {
- tvb_get_ipv6(tvb, offset, &dest_addr_v6);
- if (aodv_tree) {
- proto_tree_add_ipv6(aodv_tree, hf_aodv_dest_ipv6, tvb, offset,
- INET6_ADDRLEN, (guint8 *)&dest_addr_v6);
- proto_item_append_text(ti, ", Dest IP: %s",
- ip6_to_str(&dest_addr_v6));
- }
-
- col_append_fstr(pinfo->cinfo, COL_INFO, ", D: %s",
- ip6_to_str(&dest_addr_v6));
- offset += INET6_ADDRLEN;
+ tvb_get_ipv6(tvb, offset, &dest_addr_v6);
+ if (aodv_tree) {
+ proto_tree_add_ipv6(aodv_tree, hf_aodv_dest_ipv6, tvb, offset,
+ INET6_ADDRLEN, (guint8 *)&dest_addr_v6);
+ proto_item_append_text(ti, ", Dest IP: %s",
+ ip6_to_str(&dest_addr_v6));
+ }
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", D: %s",
+ ip6_to_str(&dest_addr_v6));
+ offset += INET6_ADDRLEN;
} else {
- dest_addr_v4 = tvb_get_ipv4(tvb, offset);
- if (aodv_tree) {
- proto_tree_add_ipv4(aodv_tree, hf_aodv_dest_ip, tvb, offset, 4,
- dest_addr_v4);
- proto_item_append_text(ti, ", Dest IP: %s",
- ip_to_str((guint8 *)&dest_addr_v4));
- }
- col_append_fstr(pinfo->cinfo, COL_INFO, ", D: %s",
- ip_to_str((guint8 *)&dest_addr_v4));
- offset += 4;
+ dest_addr_v4 = tvb_get_ipv4(tvb, offset);
+ if (aodv_tree) {
+ proto_tree_add_ipv4(aodv_tree, hf_aodv_dest_ip, tvb, offset, 4,
+ dest_addr_v4);
+ proto_item_append_text(ti, ", Dest IP: %s",
+ ip_to_str((guint8 *)&dest_addr_v4));
+ }
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", D: %s",
+ ip_to_str((guint8 *)&dest_addr_v4));
+ offset += 4;
}
dest_seqno = tvb_get_ntohl(tvb, offset);
if (aodv_tree)
- proto_tree_add_uint(aodv_tree, hf_aodv_dest_seqno, tvb, offset, 4,
- dest_seqno);
+ proto_tree_add_uint(aodv_tree, hf_aodv_dest_seqno, tvb, offset, 4,
+ dest_seqno);
offset += 4;
if (is_ipv6) {
- tvb_get_ipv6(tvb, offset, &orig_addr_v6);
- if (aodv_tree) {
- proto_tree_add_ipv6(aodv_tree, hf_aodv_orig_ipv6, tvb, offset,
- INET6_ADDRLEN, (guint8 *)&orig_addr_v6);
- proto_item_append_text(ti, ", Orig IP: %s",
- ip6_to_str(&orig_addr_v6));
- }
- col_append_fstr(pinfo->cinfo, COL_INFO, ", O: %s",
- ip6_to_str(&orig_addr_v6));
- offset += INET6_ADDRLEN;
+ tvb_get_ipv6(tvb, offset, &orig_addr_v6);
+ if (aodv_tree) {
+ proto_tree_add_ipv6(aodv_tree, hf_aodv_orig_ipv6, tvb, offset,
+ INET6_ADDRLEN, (guint8 *)&orig_addr_v6);
+ proto_item_append_text(ti, ", Orig IP: %s",
+ ip6_to_str(&orig_addr_v6));
+ }
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", O: %s",
+ ip6_to_str(&orig_addr_v6));
+ offset += INET6_ADDRLEN;
} else {
- orig_addr_v4 = tvb_get_ipv4(tvb, offset);
- if (aodv_tree) {
- proto_tree_add_ipv4(aodv_tree, hf_aodv_orig_ip, tvb, offset, 4,
- orig_addr_v4);
- proto_item_append_text(ti, ", Orig IP: %s",
- ip_to_str((guint8 *)&orig_addr_v4));
- }
- col_append_fstr(pinfo->cinfo, COL_INFO, ", O: %s",
- ip_to_str((guint8 *)&orig_addr_v4));
- offset += 4;
+ orig_addr_v4 = tvb_get_ipv4(tvb, offset);
+ if (aodv_tree) {
+ proto_tree_add_ipv4(aodv_tree, hf_aodv_orig_ip, tvb, offset, 4,
+ orig_addr_v4);
+ proto_item_append_text(ti, ", Orig IP: %s",
+ ip_to_str((guint8 *)&orig_addr_v4));
+ }
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", O: %s",
+ ip_to_str((guint8 *)&orig_addr_v4));
+ offset += 4;
}
lifetime = tvb_get_ntohl(tvb, offset);
if (aodv_tree) {
- proto_tree_add_uint(aodv_tree, hf_aodv_lifetime, tvb, offset, 4,
- lifetime);
- proto_item_append_text(ti, ", Lifetime=%u", lifetime);
+ proto_tree_add_uint(aodv_tree, hf_aodv_lifetime, tvb, offset, 4,
+ lifetime);
+ proto_item_append_text(ti, ", Lifetime=%u", lifetime);
}
- col_append_fstr(pinfo->cinfo, COL_INFO, " Hcnt=%u DSN=%u Lifetime=%u",
- hop_count,
- dest_seqno,
- lifetime);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " Hcnt=%u DSN=%u Lifetime=%u",
+ hop_count,
+ dest_seqno,
+ lifetime);
offset += 4;
if (aodv_tree) {
@@ -776,10 +776,10 @@ dissect_aodv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
return 0;
}
-
- col_add_str(pinfo->cinfo, COL_INFO,
- val_to_str(type, type_vals,
- "Unknown AODV Packet Type (%u)"));
+
+ col_add_str(pinfo->cinfo, COL_INFO,
+ val_to_str(type, type_vals,
+ "Unknown AODV Packet Type (%u)"));
if (tree) {
ti = proto_tree_add_protocol_format(tree, proto_aodv, tvb, 0, -1,
"Ad hoc On-demand Distance Vector Routing Protocol, %s",
diff --git a/epan/dissectors/packet-app-pkix-cert.c b/epan/dissectors/packet-app-pkix-cert.c
index 3ccd667c68..900a1bea20 100644
--- a/epan/dissectors/packet-app-pkix-cert.c
+++ b/epan/dissectors/packet-app-pkix-cert.c
@@ -32,8 +32,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-applemidi.c b/epan/dissectors/packet-applemidi.c
index a93cc19694..2cabe6026e 100644
--- a/epan/dissectors/packet-applemidi.c
+++ b/epan/dissectors/packet-applemidi.c
@@ -118,11 +118,11 @@ static const char applemidi_unknown_command[] = "unknown command: 0x%04x";
static void free_encoding_name_str (void *ptr)
{
- encoding_name_and_rate_t *encoding_name_and_rate = (encoding_name_and_rate_t *)ptr;
+ encoding_name_and_rate_t *encoding_name_and_rate = (encoding_name_and_rate_t *)ptr;
- if (encoding_name_and_rate->encoding_name) {
- g_free(encoding_name_and_rate->encoding_name);
- }
+ if (encoding_name_and_rate->encoding_name) {
+ g_free(encoding_name_and_rate->encoding_name);
+ }
}
static void
@@ -160,7 +160,10 @@ dissect_applemidi_common( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
* the protocol version, a random number generated by the initiator of the session,
* the SSRC that is used by the respective sides RTP-entity and optionally the
* name of the participant */
- if ( ( APPLEMIDI_COMMAND_INVITATION == command ) || ( APPLEMIDI_COMMAND_INVITATION_REJECTED == command ) || ( APLLEMIDI_COMMAND_INVITATION_ACCEPTED == command ) || ( APPLEMIDI_COMMAND_ENDSESSION == command ) ) {
+ if ( ( APPLEMIDI_COMMAND_INVITATION == command ) ||
+ ( APPLEMIDI_COMMAND_INVITATION_REJECTED == command ) ||
+ ( APLLEMIDI_COMMAND_INVITATION_ACCEPTED == command ) ||
+ ( APPLEMIDI_COMMAND_ENDSESSION == command ) ) {
proto_tree_add_item( applemidi_tree, hf_applemidi_protocol_version, tvb, offset, 4, ENC_BIG_ENDIAN );
offset += 4;
@@ -229,7 +232,8 @@ dissect_applemidi_common( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
proto_tree_add_item( applemidi_tree, hf_applemidi_ssrc, tvb, offset, 4, ENC_BIG_ENDIAN );
offset += 4;
- proto_tree_add_item( applemidi_tree, hf_applemidi_rtp_bitrate_limit, tvb, offset, 4, ENC_BIG_ENDIAN );
+ proto_tree_add_item( applemidi_tree, hf_applemidi_rtp_bitrate_limit,
+ tvb, offset, 4, ENC_BIG_ENDIAN );
offset += 4;
}
/* If there is any remaining data (possibly because an unknown command was encountered),
@@ -315,7 +319,8 @@ dissect_applemidi_heur( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) {
key = g_malloc( sizeof( gint ) );
*key = 97;
g_hash_table_insert( rtp_dyn_payload, key, encoding_name_and_rate );
- rtp_add_address( pinfo, &pinfo->src, pinfo->srcport, 0, APPLEMIDI_DISSECTOR_SHORTNAME, pinfo->fd->num, FALSE, rtp_dyn_payload);
+ rtp_add_address( pinfo, &pinfo->src, pinfo->srcport, 0, APPLEMIDI_DISSECTOR_SHORTNAME,
+ pinfo->fd->num, FALSE, rtp_dyn_payload);
/* call dissect_applemidi() from now on for UDP packets on this "connection"
it is important to do this step after calling rtp_add_address, otherwise
@@ -524,7 +529,9 @@ proto_register_applemidi( void )
&ett_applemidi_seq_num
};
- proto_applemidi = proto_register_protocol( APPLEMIDI_DISSECTOR_NAME, APPLEMIDI_DISSECTOR_SHORTNAME, APPLEMIDI_DISSECTOR_ABBREVIATION );
+ proto_applemidi = proto_register_protocol( APPLEMIDI_DISSECTOR_NAME,
+ APPLEMIDI_DISSECTOR_SHORTNAME,
+ APPLEMIDI_DISSECTOR_ABBREVIATION );
proto_register_field_array( proto_applemidi, hf, array_length( hf ) );
proto_register_subtree_array( ett, array_length( ett ) );
diff --git a/epan/dissectors/packet-arcnet.c b/epan/dissectors/packet-arcnet.c
index 11f29f8762..a6383cb4d5 100644
--- a/epan/dissectors/packet-arcnet.c
+++ b/epan/dissectors/packet-arcnet.c
@@ -27,8 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
@@ -54,7 +52,7 @@ static dissector_handle_t data_handle;
void
capture_arcnet (const guchar *pd, int len, packet_counts *ld,
- gboolean has_offset, gboolean has_exception)
+ gboolean has_offset, gboolean has_exception)
{
int offset = has_offset ? 4 : 2;
@@ -132,7 +130,7 @@ capture_arcnet (const guchar *pd, int len, packet_counts *ld,
static void
dissect_arcnet_common (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree,
- gboolean has_offset, gboolean has_exception)
+ gboolean has_offset, gboolean has_exception)
{
int offset = 0;
guint8 dst, src, protID, split_flag;
@@ -146,10 +144,10 @@ dissect_arcnet_common (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree,
src = tvb_get_guint8 (tvb, 0);
dst = tvb_get_guint8 (tvb, 1);
- SET_ADDRESS(&pinfo->dl_src, AT_ARCNET, 1, tvb_get_ptr(tvb, 0, 1));
- SET_ADDRESS(&pinfo->src, AT_ARCNET, 1, tvb_get_ptr(tvb, 0, 1));
- SET_ADDRESS(&pinfo->dl_dst, AT_ARCNET, 1, tvb_get_ptr(tvb, 1, 1));
- SET_ADDRESS(&pinfo->dst, AT_ARCNET, 1, tvb_get_ptr(tvb, 1, 1));
+ SET_ADDRESS(&pinfo->dl_src, AT_ARCNET, 1, tvb_get_ptr(tvb, 0, 1));
+ SET_ADDRESS(&pinfo->src, AT_ARCNET, 1, tvb_get_ptr(tvb, 0, 1));
+ SET_ADDRESS(&pinfo->dl_dst, AT_ARCNET, 1, tvb_get_ptr(tvb, 1, 1));
+ SET_ADDRESS(&pinfo->dst, AT_ARCNET, 1, tvb_get_ptr(tvb, 1, 1));
ti = proto_tree_add_item (tree, proto_arcnet, tvb, 0, -1, ENC_NA);
@@ -175,7 +173,7 @@ dissect_arcnet_common (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree,
case ARCNET_PROTO_IP_1051:
case ARCNET_PROTO_ARP_1051:
case ARCNET_PROTO_DIAGNOSE:
- case ARCNET_PROTO_BACNET: /* XXX - no fragmentation? */
+ case ARCNET_PROTO_BACNET: /* XXX - no fragmentation? */
/* No fragmentation stuff in the header */
break;
@@ -211,8 +209,8 @@ dissect_arcnet_common (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree,
/* This is an exception packet. The flag value there is the
"this is an exception flag" packet; the next two bytes
after it are padding. */
- proto_tree_add_uint (arcnet_tree, hf_arcnet_exception_flag, tvb, offset, 1,
- split_flag);
+ proto_tree_add_uint (arcnet_tree, hf_arcnet_exception_flag, tvb, offset, 1,
+ split_flag);
offset++;
proto_tree_add_text (arcnet_tree, tvb, offset, 2, "Padding");
@@ -227,7 +225,7 @@ dissect_arcnet_common (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree,
}
proto_tree_add_uint (arcnet_tree, hf_arcnet_split_flag, tvb, offset, 1,
- split_flag);
+ split_flag);
offset++;
proto_tree_add_item (arcnet_tree, hf_arcnet_sequence, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -242,9 +240,9 @@ dissect_arcnet_common (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree,
next_tvb = tvb_new_subset_remaining (tvb, offset);
if (!dissector_try_uint (arcnet_dissector_table, protID,
- next_tvb, pinfo, tree))
+ next_tvb, pinfo, tree))
{
- col_add_fstr (pinfo->cinfo, COL_PROTOCOL, "0x%04x", protID);
+ col_add_fstr (pinfo->cinfo, COL_PROTOCOL, "0x%04x", protID);
call_dissector (data_handle, next_tvb, pinfo, tree);
}
@@ -341,8 +339,8 @@ proto_register_arcnet (void)
};
arcnet_dissector_table = register_dissector_table ("arcnet.protocol_id",
- "ARCNET Protocol ID",
- FT_UINT8, BASE_HEX);
+ "ARCNET Protocol ID",
+ FT_UINT8, BASE_HEX);
/* Register the protocol name and description */
proto_arcnet = proto_register_protocol ("ARCNET", "ARCNET", "arcnet");
@@ -362,7 +360,7 @@ proto_reg_handoff_arcnet (void)
dissector_add_uint ("wtap_encap", WTAP_ENCAP_ARCNET, arcnet_handle);
arcnet_linux_handle = create_dissector_handle (dissect_arcnet_linux,
- proto_arcnet);
+ proto_arcnet);
dissector_add_uint ("wtap_encap", WTAP_ENCAP_ARCNET_LINUX, arcnet_linux_handle);
data_handle = find_dissector ("data");
}
diff --git a/epan/dissectors/packet-arp.c b/epan/dissectors/packet-arp.c
index 39c3e60e91..0c120e52f1 100644
--- a/epan/dissectors/packet-arp.c
+++ b/epan/dissectors/packet-arp.c
@@ -7,6 +7,9 @@
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
+ * By Deepti Ragha <dlragha@ncsu.edu>
+ * Copyright 2012 Deepti Ragha
+ *
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
@@ -64,6 +67,7 @@ static int hf_arp_dst_hw = -1;
static int hf_arp_dst_hw_mac = -1;
static int hf_arp_dst_proto = -1;
static int hf_arp_dst_proto_ipv4 = -1;
+static int hf_drarp_error_status = -1;
static int hf_arp_packet_storm = -1;
static int hf_arp_duplicate_ip_address = -1;
static int hf_arp_duplicate_ip_address_earlier_frame = -1;
@@ -115,8 +119,8 @@ typedef struct address_hash_value {
static GHashTable *duplicate_result_hash_table = NULL;
typedef struct duplicate_result_key {
- guint32 frame_number;
- guint32 ip_address;
+ guint32 frame_number;
+ guint32 ip_address;
} duplicate_result_key;
@@ -126,6 +130,7 @@ typedef struct duplicate_result_key {
*/
+
/* ARP / RARP structs and definitions */
#ifndef ARPOP_REQUEST
#define ARPOP_REQUEST 1 /* ARP request. */
@@ -140,6 +145,20 @@ typedef struct duplicate_result_key {
#ifndef ARPOP_RREPLY
#define ARPOP_RREPLY 4 /* RARP reply. */
#endif
+
+/*Additional parameters as per http://www.iana.org/assignments/arp-parameters*/
+#ifndef ARPOP_DRARPREQUEST
+#define ARPOP_DRARPREQUEST 5 /* DRARP request. */
+#endif
+
+#ifndef ARPOP_DRARPREPLY
+#define ARPOP_DRARPREPLY 6 /* DRARP reply. */
+#endif
+
+#ifndef ARPOP_DRARPERROR
+#define ARPOP_DRARPERROR 7 /* DRARP error. */
+#endif
+
#ifndef ARPOP_IREQUEST
#define ARPOP_IREQUEST 8 /* Inverse ARP (RFC 1293) request. */
#endif
@@ -149,6 +168,60 @@ typedef struct duplicate_result_key {
#ifndef ATMARPOP_NAK
#define ATMARPOP_NAK 10 /* ATMARP NAK. */
#endif
+
+/*Additional parameters as per http://www.iana.org/assignments/arp-parameters*/
+#ifndef ARPOP_MARS_REQUEST
+#define ARPOP_MARS_REQUEST 11 /*MARS request message. */
+#endif
+
+#ifndef ARPOP_MARS_MULTI
+#define ARPOP_MARS_MULTI 12 /*MARS-Multi message. */
+#endif
+
+#ifndef ARPOP_MARS_MSERV
+#define ARPOP_MARS_MSERV 13 /*MARS-Mserv message. */
+#endif
+
+#ifndef ARPOP_MARS_JOIN
+#define ARPOP_MARS_JOIN 14 /*MARS-Join request. */
+#endif
+
+#ifndef ARPOP_MARS_LEAVE
+#define ARPOP_MARS_LEAVE 15 /*MARS Leave request. */
+#endif
+
+#ifndef ARPOP_MARS_NAK
+#define ARPOP_MARS_NAK 16 /*MARS nak message.*/
+#endif
+
+#ifndef ARPOP_MARS_UNSERV
+#define ARPOP_MARS_UNSERV 17 /*MARS Unserv message. */
+#endif
+
+#ifndef ARPOP_MARS_SJOIN
+#define ARPOP_MARS_SJOIN 18 /*MARS Sjoin message. */
+#endif
+
+#ifndef ARPOP_MARS_SLEAVE
+#define ARPOP_MARS_SLEAVE 19 /*MARS Sleave message. */
+#endif
+
+#ifndef ARPOP_MARS_GROUPLIST_REQUEST
+#define ARPOP_MARS_GROUPLIST_REQUEST 20 /*MARS Grouplist request message. */
+#endif
+
+#ifndef ARPOP_MARS_GROUPLIST_REPLY
+#define ARPOP_MARS_GROUPLIST_REPLY 21 /*MARS Grouplist reply message. */
+#endif
+
+#ifndef ARPOP_MARS_REDIRECT_MAP
+#define ARPOP_MARS_REDIRECT_MAP 22 /*MARS Grouplist request message. */
+#endif
+
+#ifndef ARPOP_MAPOS_UNARP
+#define ARPOP_MAPOS_UNARP 23 /*MAPOS UNARP*/
+#endif
+
#ifndef ARPOP_EXP1
#define ARPOP_EXP1 24 /* Experimental 1 */
#endif
@@ -156,16 +229,73 @@ typedef struct duplicate_result_key {
#define ARPOP_EXP2 25 /* Experimental 2 */
#endif
+#ifndef ARPOP_RESERVED1
+#define ARPOP_RESERVED1 0 /*Reserved opcode 1*/
+#endif
+
+#ifndef ARPOP_RESERVED2
+#define ARPOP_RESERVED2 65535 /*Reserved opcode 2*/
+#endif
+
+#ifndef DRARPERR_RESTRICTED
+#define DRARPERR_RESTRICTED 1
+#endif
+
+#ifndef DRARPERR_NOADDRESSES
+#define DRARPERR_NOADDRESSES 2
+#endif
+
+#ifndef DRARPERR_SERVERDOWN
+#define DRARPERR_SERVERDOWN 3
+#endif
+
+#ifndef DRARPERR_MOVED
+#define DRARPERR_MOVED 4
+#endif
+
+#ifndef DRARPERR_FAILURE
+#define DRARPERR_FAILURE 5
+#endif
+
+
+
static const value_string op_vals[] = {
{ARPOP_REQUEST, "request" },
{ARPOP_REPLY, "reply" },
{ARPOP_RREQUEST, "reverse request"},
{ARPOP_RREPLY, "reverse reply" },
+ {ARPOP_DRARPREQUEST, "drarp request"},
+ {ARPOP_DRARPREPLY, "drarp reply"},
+ {ARPOP_DRARPERROR, "drarp error"},
{ARPOP_IREQUEST, "inverse request"},
{ARPOP_IREPLY, "inverse reply" },
+ {ATMARPOP_NAK, "arp nak" },
+ {ARPOP_MARS_REQUEST, "mars request"},
+ {ARPOP_MARS_MULTI, "mars multi"},
+ {ARPOP_MARS_MSERV, "mars mserv"},
+ {ARPOP_MARS_JOIN, "mars join"},
+ {ARPOP_MARS_LEAVE, "mars leave"},
+ {ARPOP_MARS_NAK, "mars nak"},
+ {ARPOP_MARS_UNSERV, "mars unserv"},
+ {ARPOP_MARS_SJOIN, "mars sjoin"},
+ {ARPOP_MARS_SLEAVE, "mars sleave"},
+ {ARPOP_MARS_GROUPLIST_REQUEST, "mars grouplist request"},
+ {ARPOP_MARS_GROUPLIST_REPLY, "mars gruoplist reply"},
+ {ARPOP_MARS_REDIRECT_MAP, "mars redirect map"},
+ {ARPOP_MAPOS_UNARP, "mapos unarp"},
{ARPOP_EXP1, "experimental 1" },
{ARPOP_EXP2, "experimental 2" },
- {0, NULL } };
+ {ARPOP_RESERVED1, "reserved"},
+ {ARPOP_RESERVED2, "reserved"},
+ {0, NULL}};
+
+static const value_string drarp_status[]={
+{DRARPERR_RESTRICTED, "restricted"},
+{DRARPERR_NOADDRESSES, "no address"},
+{DRARPERR_SERVERDOWN, "serverdown"},
+{DRARPERR_MOVED, "moved"},
+{DRARPERR_FAILURE, "failure"},
+{0, NULL}};
static const value_string atmop_vals[] = {
{ARPOP_REQUEST, "request" },
@@ -173,10 +303,27 @@ static const value_string atmop_vals[] = {
{ARPOP_IREQUEST, "inverse request"},
{ARPOP_IREPLY, "inverse reply" },
{ATMARPOP_NAK, "nak" },
- {0, NULL } };
+ {ARPOP_MARS_REQUEST, "mars request"},
+ {ARPOP_MARS_MULTI, "mars multi"},
+ {ARPOP_MARS_MSERV, "mars mserv"},
+ {ARPOP_MARS_JOIN, "mars join"},
+ {ARPOP_MARS_LEAVE, "mars leave"},
+ {ARPOP_MARS_NAK, "mars nak"},
+ {ARPOP_MARS_UNSERV, "mars unserv"},
+ {ARPOP_MARS_SJOIN, "mars sjoin"},
+ {ARPOP_MARS_SLEAVE, "mars sleave"},
+ {ARPOP_MARS_GROUPLIST_REQUEST, "mars grouplist request"},
+ {ARPOP_MARS_GROUPLIST_REPLY, "mars gruoplist reply"},
+ {ARPOP_MARS_REDIRECT_MAP, "mars redirect map"},
+ {ARPOP_MAPOS_UNARP, "mapos unarp"},
+ {ARPOP_EXP1, "experimental 1" },
+ {ARPOP_EXP2, "experimental 2" },
+ {ARPOP_RESERVED1, "reserved"},
+ {ARPOP_RESERVED2, "reserved"},
+ {0, NULL} };
-#define ATMARP_IS_E164 0x40 /* bit in type/length for E.164 format */
-#define ATMARP_LEN_MASK 0x3F /* length of {sub}address in type/length */
+#define ATMARP_IS_E164 0x40 /* bit in type/length for E.164 format */
+#define ATMARP_LEN_MASK 0x3F /* length of {sub}address in type/length */
/*
* Given the hardware address type and length, check whether an address
@@ -220,7 +367,7 @@ arpproaddr_to_str(const guint8 *ad, int ad_len, guint16 type)
return bytes_to_str(ad, ad_len);
}
-#define MAX_E164_STR_LEN 20
+#define MAX_E164_STR_LEN 20
static const gchar *
atmarpnum_to_str(const guint8 *ad, int ad_tl)
@@ -323,24 +470,24 @@ arphrdtype_to_str(guint16 hwtype, const char *fmt) {
}
/* Offsets of fields within an ARP packet. */
-#define AR_HRD 0
-#define AR_PRO 2
-#define AR_HLN 4
-#define AR_PLN 5
-#define AR_OP 6
-#define MIN_ARP_HEADER_SIZE 8
+#define AR_HRD 0
+#define AR_PRO 2
+#define AR_HLN 4
+#define AR_PLN 5
+#define AR_OP 6
+#define MIN_ARP_HEADER_SIZE 8
/* Offsets of fields within an ATMARP packet. */
-#define ATM_AR_HRD 0
-#define ATM_AR_PRO 2
-#define ATM_AR_SHTL 4
-#define ATM_AR_SSTL 5
-#define ATM_AR_OP 6
-#define ATM_AR_SPLN 8
-#define ATM_AR_THTL 9
-#define ATM_AR_TSTL 10
-#define ATM_AR_TPLN 11
-#define MIN_ATMARP_HEADER_SIZE 12
+#define ATM_AR_HRD 0
+#define ATM_AR_PRO 2
+#define ATM_AR_SHTL 4
+#define ATM_AR_SSTL 5
+#define ATM_AR_OP 6
+#define ATM_AR_SPLN 8
+#define ATM_AR_THTL 9
+#define ATM_AR_TSTL 10
+#define ATM_AR_TPLN 11
+#define MIN_ATMARP_HEADER_SIZE 12
static void
dissect_atm_number(tvbuff_t *tvb, int offset, int tl, int hf_e164,
@@ -374,8 +521,8 @@ dissect_atm_nsap(tvbuff_t *tvb, int offset, int len, proto_tree *tree)
afi = tvb_get_guint8(tvb, offset);
switch (afi) {
- case 0x39: /* DCC ATM format */
- case 0xBD: /* DCC ATM group format */
+ case 0x39: /* DCC ATM format */
+ case 0xBD: /* DCC ATM group format */
proto_tree_add_text(tree, tvb, offset + 0, 3,
"Data Country Code%s: 0x%04X",
(afi == 0xBD) ? " (group)" : "",
@@ -390,8 +537,8 @@ dissect_atm_nsap(tvbuff_t *tvb, int offset, int len, proto_tree *tree)
"Selector: 0x%02X", tvb_get_guint8(tvb, offset + 19));
break;
- case 0x47: /* ICD ATM format */
- case 0xC5: /* ICD ATM group format */
+ case 0x47: /* ICD ATM format */
+ case 0xC5: /* ICD ATM group format */
proto_tree_add_text(tree, tvb, offset + 0, 3,
"International Code Designator%s: 0x%04X",
(afi == 0xC5) ? " (group)" : "",
@@ -406,8 +553,8 @@ dissect_atm_nsap(tvbuff_t *tvb, int offset, int len, proto_tree *tree)
"Selector: 0x%02X", tvb_get_guint8(tvb, offset + 19));
break;
- case 0x45: /* E.164 ATM format */
- case 0xC3: /* E.164 ATM group format */
+ case 0x45: /* E.164 ATM format */
+ case 0xC3: /* E.164 ATM group format */
proto_tree_add_text(tree, tvb, offset + 0, 9,
"E.164 ISDN%s: %s",
(afi == 0xC3) ? " (group)" : "",
@@ -433,24 +580,28 @@ dissect_atm_nsap(tvbuff_t *tvb, int offset, int len, proto_tree *tree)
}
/* l.s. 32 bits are ipv4 address */
-static guint address_hash_func(gconstpointer v)
+static guint
+address_hash_func(gconstpointer v)
{
return GPOINTER_TO_UINT(v);
}
/* Compare 2 ipv4 addresses */
-static gint address_equal_func(gconstpointer v, gconstpointer v2)
+static gint
+address_equal_func(gconstpointer v, gconstpointer v2)
{
return v == v2;
}
-static guint duplicate_result_hash_func(gconstpointer v)
+static guint
+duplicate_result_hash_func(gconstpointer v)
{
duplicate_result_key *key = (duplicate_result_key*)v;
return (key->frame_number + key->ip_address);
}
-static gint duplicate_result_equal_func(gconstpointer v, gconstpointer v2)
+static gint
+duplicate_result_equal_func(gconstpointer v, gconstpointer v2)
{
duplicate_result_key *key1 = (duplicate_result_key*)v;
duplicate_result_key *key2 = (duplicate_result_key*)v2;
@@ -463,7 +614,8 @@ static gint duplicate_result_equal_func(gconstpointer v, gconstpointer v2)
/* Check to see if this mac & ip pair represent 2 devices trying to share
the same IP address - report if found (+ return TRUE and set out param) */
-static gboolean check_for_duplicate_addresses(packet_info *pinfo, proto_tree *tree,
+static gboolean
+check_for_duplicate_addresses(packet_info *pinfo, proto_tree *tree,
tvbuff_t *tvb,
const guint8 *mac, guint32 ip,
guint32 *duplicate_ip)
@@ -586,7 +738,8 @@ arp_init_protocol(void)
/* Take note that a request has been seen */
-static void request_seen(packet_info *pinfo)
+static void
+request_seen(packet_info *pinfo)
{
/* Don't count frame again after already recording first time around. */
if (p_get_proto_data(pinfo->fd, proto_arp) == 0)
@@ -596,7 +749,8 @@ static void request_seen(packet_info *pinfo)
}
/* Has storm request rate been exceeded with this request? */
-static void check_for_storm_count(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static void
+check_for_storm_count(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
gboolean report_storm = FALSE;
@@ -764,18 +918,38 @@ dissect_atmarp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case ARPOP_REPLY:
case ATMARPOP_NAK:
default:
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "ATMARP");
- break;
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "ATMARP");
+ break;
case ARPOP_RREQUEST:
case ARPOP_RREPLY:
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "ATMRARP");
- break;
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "ATMRARP");
+ break;
case ARPOP_IREQUEST:
case ARPOP_IREPLY:
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "Inverse ATMARP");
- break;
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "Inverse ATMARP");
+ break;
+
+ case ARPOP_MARS_REQUEST:
+ case ARPOP_MARS_MULTI:
+ case ARPOP_MARS_MSERV:
+ case ARPOP_MARS_JOIN:
+ case ARPOP_MARS_LEAVE:
+ case ARPOP_MARS_NAK:
+ case ARPOP_MARS_UNSERV:
+ case ARPOP_MARS_SJOIN:
+ case ARPOP_MARS_SLEAVE:
+ case ARPOP_MARS_GROUPLIST_REQUEST:
+ case ARPOP_MARS_GROUPLIST_REPLY:
+ case ARPOP_MARS_REDIRECT_MAP:
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "MARS");
+ break;
+
+ case ARPOP_MAPOS_UNARP:
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "MAPOS");
+ break;
+
}
switch (ar_op) {
@@ -807,6 +981,123 @@ dissect_atmarp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case ATMARPOP_NAK:
col_add_fstr(pinfo->cinfo, COL_INFO, "I don't know where %s is", spa_str);
break;
+ case ARPOP_MARS_REQUEST:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MARS request from %s%s%s at %s",
+ sha_str,
+ ((ssa_str != NULL) ? "," : ""),
+ ((ssa_str != NULL) ? ssa_str : ""),
+ spa_str);
+ break;
+
+ case ARPOP_MARS_MULTI:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MARS MULTI request from %s%s%s at %s",
+ sha_str,
+ ((ssa_str != NULL) ? "," : ""),
+ ((ssa_str != NULL) ? ssa_str : ""),
+ spa_str);
+ break;
+
+ case ARPOP_MARS_MSERV:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MARS MSERV request from %s%s%s at %s",
+ sha_str,
+ ((ssa_str != NULL) ? "," : ""),
+ ((ssa_str != NULL) ? ssa_str : ""),
+ spa_str);
+ break;
+
+ case ARPOP_MARS_JOIN:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MARS JOIN request from %s%s%s at %s",
+ sha_str,
+ ((ssa_str != NULL) ? "," : ""),
+ ((ssa_str != NULL) ? ssa_str : ""),
+ spa_str);
+ break;
+
+ case ARPOP_MARS_LEAVE:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MARS LEAVE from %s%s%s at %s",
+ sha_str,
+ ((ssa_str != NULL) ? "," : ""),
+ ((ssa_str != NULL) ? ssa_str : ""),
+ spa_str);
+ break;
+
+ case ARPOP_MARS_NAK:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MARS NAK from %s%s%s at %s",
+ sha_str,
+ ((ssa_str != NULL) ? "," : ""),
+ ((ssa_str != NULL) ? ssa_str : ""),
+ spa_str);
+ break;
+
+ case ARPOP_MARS_UNSERV:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MARS UNSERV request from %s%s%s at %s",
+ sha_str,
+ ((ssa_str != NULL) ? "," : ""),
+ ((ssa_str != NULL) ? ssa_str : ""),
+ spa_str);
+ break;
+
+ case ARPOP_MARS_SJOIN:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MARS SJOIN request from %s%s%s at %s",
+ sha_str,
+ ((ssa_str != NULL) ? "," : ""),
+ ((ssa_str != NULL) ? ssa_str : ""),
+ spa_str);
+ break;
+
+ case ARPOP_MARS_SLEAVE:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MARS SLEAVE from %s%s%s at %s",
+ sha_str,
+ ((ssa_str != NULL) ? "," : ""),
+ ((ssa_str != NULL) ? ssa_str : ""),
+ spa_str);
+ break;
+
+ case ARPOP_MARS_GROUPLIST_REQUEST:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MARS grouplist request from %s%s%s at %s",
+ sha_str,
+ ((ssa_str != NULL) ? "," : ""),
+ ((ssa_str != NULL) ? ssa_str : ""),
+ spa_str);
+ break;
+
+ case ARPOP_MARS_GROUPLIST_REPLY:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MARS grouplist reply from %s%s%s at %s",
+ sha_str,
+ ((ssa_str != NULL) ? "," : ""),
+ ((ssa_str != NULL) ? ssa_str : ""),
+ spa_str);
+ break;
+
+ case ARPOP_MARS_REDIRECT_MAP:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MARS redirect map from %s%s%s at %s",
+ sha_str,
+ ((ssa_str != NULL) ? "," : ""),
+ ((ssa_str != NULL) ? ssa_str : ""),
+ spa_str);
+ break;
+
+ case ARPOP_MAPOS_UNARP:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MAPOS UNARP request from %s%s%s at %s",
+ sha_str,
+ ((ssa_str != NULL) ? "," : ""),
+ ((ssa_str != NULL) ? ssa_str : ""),
+ spa_str);
+ break;
+
+ case ARPOP_EXP1:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Experimental 1 ( opcode %d )", ar_op);
+ break;
+
+ case ARPOP_EXP2:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Experimental 2 ( opcode %d )", ar_op);
+ break;
+
+ case 0:
+ case 65535:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Reserved opcode %d", ar_op);
+ break;
+
default:
col_add_fstr(pinfo->cinfo, COL_INFO, "Unknown ATMARP opcode 0x%04x", ar_op);
break;
@@ -978,10 +1269,35 @@ dissect_arp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
col_set_str(pinfo->cinfo, COL_PROTOCOL, "RARP");
break;
+ case ARPOP_DRARPREQUEST:
+ case ARPOP_DRARPREPLY:
+ case ARPOP_DRARPERROR:
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "DRARP");
+ break;
+
case ARPOP_IREQUEST:
case ARPOP_IREPLY:
col_set_str(pinfo->cinfo, COL_PROTOCOL, "Inverse ARP");
break;
+
+ case ARPOP_MARS_REQUEST:
+ case ARPOP_MARS_MULTI:
+ case ARPOP_MARS_MSERV:
+ case ARPOP_MARS_JOIN:
+ case ARPOP_MARS_LEAVE:
+ case ARPOP_MARS_NAK:
+ case ARPOP_MARS_UNSERV:
+ case ARPOP_MARS_SJOIN:
+ case ARPOP_MARS_SLEAVE:
+ case ARPOP_MARS_GROUPLIST_REQUEST:
+ case ARPOP_MARS_GROUPLIST_REPLY:
+ case ARPOP_MARS_REDIRECT_MAP:
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "MARS");
+ break;
+
+ case ARPOP_MAPOS_UNARP:
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "MAPOS");
+ break;
}
/* Get the offsets of the addresses. */
@@ -1026,6 +1342,7 @@ dissect_arp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Do not add target address if the packet is a Request. According to the RFC,
target addresses in requests have no meaning */
+
ip = tvb_get_ipv4(tvb, tpa_offset);
mac = tvb_get_ptr(tvb, tha_offset, 6);
if ((mac[0] & 0x01) == 0 && memcmp(mac, mac_allzero, 6) != 0 && ip != 0
@@ -1039,6 +1356,8 @@ dissect_arp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
&duplicate_ip);
}
}
+
+
}
spa_val = tvb_get_ptr(tvb, spa_offset, ar_pln);
@@ -1077,20 +1396,123 @@ dissect_arp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
break;
case ARPOP_RREQUEST:
case ARPOP_IREQUEST:
+ case ARPOP_DRARPREQUEST:
col_add_fstr(pinfo->cinfo, COL_INFO, "Who is %s? Tell %s",
tvb_arphrdaddr_to_str(tvb, tha_offset, ar_hln, ar_hrd),
tvb_arphrdaddr_to_str(tvb, sha_offset, ar_hln, ar_hrd));
break;
case ARPOP_RREPLY:
+ case ARPOP_DRARPREPLY:
col_add_fstr(pinfo->cinfo, COL_INFO, "%s is at %s",
tvb_arphrdaddr_to_str(tvb, tha_offset, ar_hln, ar_hrd),
arpproaddr_to_str(tpa_val, ar_pln, ar_pro));
break;
+
+ case ARPOP_DRARPERROR:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "DRARP Error");
+ break;
+
case ARPOP_IREPLY:
col_add_fstr(pinfo->cinfo, COL_INFO, "%s is at %s",
tvb_arphrdaddr_to_str(tvb, sha_offset, ar_hln, ar_hrd),
arpproaddr_to_str(spa_val, ar_pln, ar_pro));
break;
+
+ case ATMARPOP_NAK:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "ARP NAK");
+ break;
+
+ case ARPOP_MARS_REQUEST:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MARS request from %s at %s",
+ tvb_arphrdaddr_to_str(tvb, sha_offset, ar_hln, ar_hrd),
+ arpproaddr_to_str(spa_val, ar_pln, ar_pro));
+ break;
+
+ case ARPOP_MARS_MULTI:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MARS MULTI request from %s at %s",
+ tvb_arphrdaddr_to_str(tvb, sha_offset, ar_hln, ar_hrd),
+ arpproaddr_to_str(spa_val, ar_pln, ar_pro));
+ break;
+
+ case ARPOP_MARS_MSERV:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MARS MSERV request from %s at %s",
+ tvb_arphrdaddr_to_str(tvb, sha_offset, ar_hln, ar_hrd),
+ arpproaddr_to_str(spa_val, ar_pln, ar_pro));
+ break;
+
+ case ARPOP_MARS_JOIN:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MARS JOIN request from %s at %s",
+ tvb_arphrdaddr_to_str(tvb, sha_offset, ar_hln, ar_hrd),
+ arpproaddr_to_str(spa_val, ar_pln, ar_pro));
+ break;
+
+ case ARPOP_MARS_LEAVE:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MARS LEAVE from %s at %s",
+ tvb_arphrdaddr_to_str(tvb, sha_offset, ar_hln, ar_hrd),
+ arpproaddr_to_str(spa_val, ar_pln, ar_pro));
+ break;
+
+ case ARPOP_MARS_NAK:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MARS NAK from %s at %s",
+ tvb_arphrdaddr_to_str(tvb, sha_offset, ar_hln, ar_hrd),
+ arpproaddr_to_str(spa_val, ar_pln, ar_pro));
+ break;
+
+ case ARPOP_MARS_UNSERV:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MARS UNSERV request from %s at %s",
+ tvb_arphrdaddr_to_str(tvb, sha_offset, ar_hln, ar_hrd),
+ arpproaddr_to_str(spa_val, ar_pln, ar_pro));
+ break;
+
+ case ARPOP_MARS_SJOIN:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MARS SJOIN request from %s at %s",
+ tvb_arphrdaddr_to_str(tvb, sha_offset, ar_hln, ar_hrd),
+ arpproaddr_to_str(spa_val, ar_pln, ar_pro));
+ break;
+
+ case ARPOP_MARS_SLEAVE:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MARS SLEAVE from %s at %s",
+ tvb_arphrdaddr_to_str(tvb, sha_offset, ar_hln, ar_hrd),
+ arpproaddr_to_str(spa_val, ar_pln, ar_pro));
+ break;
+
+ case ARPOP_MARS_GROUPLIST_REQUEST:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MARS grouplist request from %s at %s",
+ tvb_arphrdaddr_to_str(tvb, sha_offset, ar_hln, ar_hrd),
+ arpproaddr_to_str(spa_val, ar_pln, ar_pro));
+ break;
+
+ case ARPOP_MARS_GROUPLIST_REPLY:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MARS grouplist reply from %s at %s",
+ tvb_arphrdaddr_to_str(tvb, sha_offset, ar_hln, ar_hrd),
+ arpproaddr_to_str(spa_val, ar_pln, ar_pro));
+ break;
+
+ case ARPOP_MARS_REDIRECT_MAP:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MARS redirect map from %s at %s",
+ tvb_arphrdaddr_to_str(tvb, sha_offset, ar_hln, ar_hrd),
+ arpproaddr_to_str(spa_val, ar_pln, ar_pro));
+ break;
+
+ case ARPOP_MAPOS_UNARP:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MAPOS UNARP request from %s at %s",
+ tvb_arphrdaddr_to_str(tvb, sha_offset, ar_hln, ar_hrd),
+ arpproaddr_to_str(spa_val, ar_pln, ar_pro));
+ break;
+
+ case ARPOP_EXP1:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Experimental 1 ( opcode %d )", ar_op);
+ break;
+
+ case ARPOP_EXP2:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Experimental 2 ( opcode %d )", ar_op);
+ break;
+
+ case 0:
+ case 65535:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Reserved opcode %d", ar_op);
+ break;
+
default:
col_add_fstr(pinfo->cinfo, COL_INFO, "Unknown ARP opcode 0x%04x", ar_op);
break;
@@ -1113,8 +1535,11 @@ dissect_arp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_uint(arp_tree, hf_arp_hard_size, tvb, AR_HLN, 1, ar_hln);
proto_tree_add_uint(arp_tree, hf_arp_proto_size, tvb, AR_PLN, 1, ar_pln);
proto_tree_add_uint(arp_tree, hf_arp_opcode, tvb, AR_OP, 2, ar_op);
+ if(is_gratuitous)
+ {
item = proto_tree_add_boolean(arp_tree, hf_arp_isgratuitous, tvb, 0, 0, is_gratuitous);
PROTO_ITEM_SET_GENERATED(item);
+ }
if (ar_hln != 0) {
proto_tree_add_item(arp_tree,
ARP_HW_IS_ETHER(ar_hrd, ar_hln) ?
@@ -1136,13 +1561,16 @@ dissect_arp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
hf_arp_dst_hw,
tvb, tha_offset, ar_hln, ENC_BIG_ENDIAN);
}
- if (ar_pln != 0) {
+ if (ar_pln != 0 && ar_op != ARPOP_DRARPERROR) { /*DISPLAYING ERROR NUMBER FOR DRARPERROR*/
proto_tree_add_item(arp_tree,
ARP_PRO_IS_IPv4(ar_pro, ar_pln) ?
hf_arp_dst_proto_ipv4 :
hf_arp_dst_proto,
tvb, tpa_offset, ar_pln, ENC_BIG_ENDIAN);
}
+ else if (ar_pln != 0 && ar_op == ARPOP_DRARPERROR) {
+ proto_tree_add_item(arp_tree, hf_drarp_error_status, tvb, tpa_offset, 1, ENC_BIG_ENDIAN); /*Adding the first byte of tpa field as drarp_error_status*/
+ }
}
if (global_arp_detect_request_storm)
@@ -1165,173 +1593,178 @@ proto_register_arp(void)
static hf_register_info hf[] = {
{ &hf_arp_hard_type,
- { "Hardware type", "arp.hw.type",
- FT_UINT16, BASE_DEC, VALS(hrd_vals), 0x0,
- NULL, HFILL }},
+ { "Hardware type", "arp.hw.type",
+ FT_UINT16, BASE_DEC, VALS(hrd_vals), 0x0,
+ NULL, HFILL }},
{ &hf_arp_proto_type,
- { "Protocol type", "arp.proto.type",
- FT_UINT16, BASE_HEX, VALS(etype_vals), 0x0,
- NULL, HFILL }},
+ { "Protocol type", "arp.proto.type",
+ FT_UINT16, BASE_HEX, VALS(etype_vals), 0x0,
+ NULL, HFILL }},
{ &hf_arp_hard_size,
- { "Hardware size", "arp.hw.size",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Hardware size", "arp.hw.size",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_atmarp_sht,
- { "Sender ATM number type", "arp.src.htype",
- FT_BOOLEAN, 8, TFS(&tfs_type_bit), ATMARP_IS_E164,
- NULL, HFILL }},
+ { "Sender ATM number type", "arp.src.htype",
+ FT_BOOLEAN, 8, TFS(&tfs_type_bit), ATMARP_IS_E164,
+ NULL, HFILL }},
{ &hf_atmarp_shl,
- { "Sender ATM number length", "arp.src.hlen",
- FT_UINT8, BASE_DEC, NULL, ATMARP_LEN_MASK,
- NULL, HFILL }},
+ { "Sender ATM number length", "arp.src.hlen",
+ FT_UINT8, BASE_DEC, NULL, ATMARP_LEN_MASK,
+ NULL, HFILL }},
{ &hf_atmarp_sst,
- { "Sender ATM subaddress type", "arp.src.stype",
- FT_BOOLEAN, 8, TFS(&tfs_type_bit), ATMARP_IS_E164,
- NULL, HFILL }},
+ { "Sender ATM subaddress type", "arp.src.stype",
+ FT_BOOLEAN, 8, TFS(&tfs_type_bit), ATMARP_IS_E164,
+ NULL, HFILL }},
{ &hf_atmarp_ssl,
- { "Sender ATM subaddress length", "arp.src.slen",
- FT_UINT8, BASE_DEC, NULL, ATMARP_LEN_MASK,
- NULL, HFILL }},
+ { "Sender ATM subaddress length", "arp.src.slen",
+ FT_UINT8, BASE_DEC, NULL, ATMARP_LEN_MASK,
+ NULL, HFILL }},
{ &hf_arp_proto_size,
- { "Protocol size", "arp.proto.size",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Protocol size", "arp.proto.size",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_arp_opcode,
- { "Opcode", "arp.opcode",
- FT_UINT16, BASE_DEC, VALS(op_vals), 0x0,
- NULL, HFILL }},
+ { "Opcode", "arp.opcode",
+ FT_UINT16, BASE_DEC, VALS(op_vals), 0x0,
+ NULL, HFILL }},
{ &hf_arp_isgratuitous,
- { "Is gratuitous", "arp.isgratuitous",
- FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x0,
- NULL, HFILL }},
+ { "Is gratuitous", "arp.isgratuitous",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x0,
+ NULL, HFILL }},
{ &hf_atmarp_spln,
- { "Sender protocol size", "arp.src.pln",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Sender protocol size", "arp.src.pln",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_atmarp_tht,
- { "Target ATM number type", "arp.dst.htype",
- FT_BOOLEAN, 8, TFS(&tfs_type_bit), ATMARP_IS_E164,
- NULL, HFILL }},
+ { "Target ATM number type", "arp.dst.htype",
+ FT_BOOLEAN, 8, TFS(&tfs_type_bit), ATMARP_IS_E164,
+ NULL, HFILL }},
{ &hf_atmarp_thl,
- { "Target ATM number length", "arp.dst.hlen",
- FT_UINT8, BASE_DEC, NULL, ATMARP_LEN_MASK,
- NULL, HFILL }},
+ { "Target ATM number length", "arp.dst.hlen",
+ FT_UINT8, BASE_DEC, NULL, ATMARP_LEN_MASK,
+ NULL, HFILL }},
{ &hf_atmarp_tst,
- { "Target ATM subaddress type", "arp.dst.stype",
- FT_BOOLEAN, 8, TFS(&tfs_type_bit), ATMARP_IS_E164,
- NULL, HFILL }},
+ { "Target ATM subaddress type", "arp.dst.stype",
+ FT_BOOLEAN, 8, TFS(&tfs_type_bit), ATMARP_IS_E164,
+ NULL, HFILL }},
{ &hf_atmarp_tsl,
- { "Target ATM subaddress length", "arp.dst.slen",
- FT_UINT8, BASE_DEC, NULL, ATMARP_LEN_MASK,
- NULL, HFILL }},
+ { "Target ATM subaddress length", "arp.dst.slen",
+ FT_UINT8, BASE_DEC, NULL, ATMARP_LEN_MASK,
+ NULL, HFILL }},
{ &hf_atmarp_tpln,
- { "Target protocol size", "arp.dst.pln",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Target protocol size", "arp.dst.pln",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_arp_src_hw,
- { "Sender hardware address", "arp.src.hw",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Sender hardware address", "arp.src.hw",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_arp_src_hw_mac,
- { "Sender MAC address", "arp.src.hw_mac",
- FT_ETHER, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Sender MAC address", "arp.src.hw_mac",
+ FT_ETHER, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_atmarp_src_atm_num_e164,
- { "Sender ATM number (E.164)", "arp.src.atm_num_e164",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Sender ATM number (E.164)", "arp.src.atm_num_e164",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_atmarp_src_atm_num_nsap,
- { "Sender ATM number (NSAP)", "arp.src.atm_num_nsap",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Sender ATM number (NSAP)", "arp.src.atm_num_nsap",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_atmarp_src_atm_subaddr,
- { "Sender ATM subaddress", "arp.src.atm_subaddr",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Sender ATM subaddress", "arp.src.atm_subaddr",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_arp_src_proto,
- { "Sender protocol address", "arp.src.proto",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Sender protocol address", "arp.src.proto",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_arp_src_proto_ipv4,
- { "Sender IP address", "arp.src.proto_ipv4",
- FT_IPv4, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Sender IP address", "arp.src.proto_ipv4",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_arp_dst_hw,
- { "Target hardware address", "arp.dst.hw",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Target hardware address", "arp.dst.hw",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_arp_dst_hw_mac,
- { "Target MAC address", "arp.dst.hw_mac",
- FT_ETHER, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Target MAC address", "arp.dst.hw_mac",
+ FT_ETHER, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_atmarp_dst_atm_num_e164,
- { "Target ATM number (E.164)", "arp.dst.atm_num_e164",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Target ATM number (E.164)", "arp.dst.atm_num_e164",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_atmarp_dst_atm_num_nsap,
- { "Target ATM number (NSAP)", "arp.dst.atm_num_nsap",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Target ATM number (NSAP)", "arp.dst.atm_num_nsap",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_atmarp_dst_atm_subaddr,
- { "Target ATM subaddress", "arp.dst.atm_subaddr",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Target ATM subaddress", "arp.dst.atm_subaddr",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_arp_dst_proto,
- { "Target protocol address", "arp.dst.proto",
- FT_BYTES, BASE_NONE, NULL, 0x0,
+ { "Target protocol address", "arp.dst.proto",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_arp_dst_proto_ipv4,
- { "Target IP address", "arp.dst.proto_ipv4",
- FT_IPv4, BASE_NONE, NULL, 0x0,
+ { "Target IP address", "arp.dst.proto_ipv4",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_drarp_error_status,
+ { "DRARP error status", "arp.dst.drarp_error_status",
+ FT_UINT16, BASE_DEC, VALS(drarp_status), 0x0,
NULL, HFILL }},
{ &hf_arp_packet_storm,
- { "Packet storm detected", "arp.packet-storm-detected",
- FT_NONE, BASE_NONE, NULL, 0x0,
+ { "Packet storm detected", "arp.packet-storm-detected",
+ FT_NONE, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_arp_duplicate_ip_address,
- { "Duplicate IP address detected", "arp.duplicate-address-detected",
- FT_NONE, BASE_NONE, NULL, 0x0,
+ { "Duplicate IP address detected", "arp.duplicate-address-detected",
+ FT_NONE, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_arp_duplicate_ip_address_earlier_frame,
- { "Frame showing earlier use of IP address", "arp.duplicate-address-frame",
- FT_FRAMENUM, BASE_NONE, NULL, 0x0,
+ { "Frame showing earlier use of IP address", "arp.duplicate-address-frame",
+ FT_FRAMENUM, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_arp_duplicate_ip_address_seconds_since_earlier_frame,
- { "Seconds since earlier frame seen", "arp.seconds-since-duplicate-address-frame",
- FT_UINT32, BASE_DEC, NULL, 0x0,
+ { "Seconds since earlier frame seen", "arp.seconds-since-duplicate-address-frame",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
NULL, HFILL }},
};
@@ -1346,7 +1779,7 @@ proto_register_arp(void)
module_t *arp_module;
proto_arp = proto_register_protocol("Address Resolution Protocol",
- "ARP/RARP", "arp");
+ "ARP/RARP", "arp");
proto_register_field_array(proto_arp, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
diff --git a/epan/dissectors/packet-artnet.c b/epan/dissectors/packet-artnet.c
index 47ee930896..bbeb05d344 100644
--- a/epan/dissectors/packet-artnet.c
+++ b/epan/dissectors/packet-artnet.c
@@ -3,7 +3,7 @@
*
* $Id$
*
- * Copyright (c) 2003 by Erwin Rol <erwin@erwinrol.com>
+ * Copyright (c) 2003, 2011 by Erwin Rol <erwin@erwinrol.com>
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
@@ -30,10 +30,8 @@
#include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-#include <time.h>
-#include <string.h>
+#include <glib.h>
+
#include <epan/packet.h>
#include <epan/addr_resolv.h>
#include <epan/prefs.h>
@@ -70,51 +68,86 @@
#define ARTNET_VIDEO_PALETTE_LENGTH 55
#define ARTNET_VIDEO_DATA_LENGTH 8
-
#define ARTNET_OP_POLL 0x2000
#define ARTNET_OP_POLL_REPLY 0x2100
-#define ARTNET_OP_POLL_SERVER_REPLY 0x2200
+#define ARTNET_OP_POLL_FP_REPLY 0x2200
+#define ARTNET_OP_DIAG_DATA 0x2300
+#define ARTNET_OP_COMMAND 0x2400
+
#define ARTNET_OP_OUTPUT 0x5000
+
#define ARTNET_OP_ADDRESS 0x6000
+
#define ARTNET_OP_INPUT 0x7000
-#define ARTNET_OP_VIDEO_SETUP 0xa010
-#define ARTNET_OP_VIDEO_PALETTE 0xa020
-#define ARTNET_OP_VIDEO_DATA 0xa040
#define ARTNET_OP_TOD_REQUEST 0x8000
#define ARTNET_OP_TOD_DATA 0x8100
#define ARTNET_OP_TOD_CONTROL 0x8200
#define ARTNET_OP_RDM 0x8300
+#define ARTNET_OP_RDM_SUB 0x8400
+
+#define ARTNET_OP_MEDIA 0x9000
+#define ARTNET_OP_MEDIA_PATCH 0x9100
+#define ARTNET_OP_MEDIA_CONTROL 0x9200
+#define ARTNET_OP_MEDIA_CONTRL_REPLY 0x9300
+#define ARTNET_OP_TIME_CODE 0x9700
+#define ARTNET_OP_TIME_SYNC 0x9800
+#define ARTNET_OP_TRIGGER 0x9900
+
+#define ARTNET_OP_DIRECTORY 0x9a00
+#define ARTNET_OP_DIRECTORY_REPLY 0x9b00
+
+#define ARTNET_OP_VIDEO_SETUP 0xa010
+#define ARTNET_OP_VIDEO_PALETTE 0xa020
+#define ARTNET_OP_VIDEO_DATA 0xa040
#define ARTNET_OP_MAC_MASTER 0xf000
#define ARTNET_OP_MAC_SLAVE 0xf100
#define ARTNET_OP_FIRMWARE_MASTER 0xf200
#define ARTNET_OP_FIRMWARE_REPLY 0xf300
+#define ARTNET_OP_FILE_TN_MASTER 0xf400
+#define ARTNET_OP_FILE_FN_MASTER 0xf500
+#define ARTNET_OP_FILE_FN_REPLY 0xf600
#define ARTNET_OP_IP_PROG 0xf800
#define ARTNET_OP_IP_PROG_REPLY 0xf900
static const value_string artnet_opcode_vals[] = {
- { ARTNET_OP_POLL, "ArtPoll packet" },
- { ARTNET_OP_POLL_REPLY, "ArtPollReply packet" },
- { ARTNET_OP_POLL_SERVER_REPLY, "ArtPollServerReply packet" },
- { ARTNET_OP_OUTPUT, "ArtDMX data packet" },
- { ARTNET_OP_ADDRESS, "ArtAddress packet" },
- { ARTNET_OP_INPUT, "ArtInput packet" },
- { ARTNET_OP_VIDEO_SETUP, "ArtVideoSetup packet" },
- { ARTNET_OP_VIDEO_PALETTE, "ArtVideoPalette packet" },
- { ARTNET_OP_VIDEO_DATA, "ArtVideoData packet" },
- { ARTNET_OP_TOD_REQUEST, "ArtTodRequest packet" },
- { ARTNET_OP_TOD_DATA, "ArtTodData packet" },
- { ARTNET_OP_TOD_CONTROL, "ArtTodControl packet" },
- { ARTNET_OP_RDM, "ArtRdm packet" },
- { ARTNET_OP_MAC_MASTER, "ArtMacMaster packet" },
- { ARTNET_OP_MAC_SLAVE, "ArtMacSlave packet" },
- { ARTNET_OP_FIRMWARE_MASTER, "ArtFirmwareMaster packet" },
- { ARTNET_OP_FIRMWARE_REPLY, "ArtFirmwareReply packet" },
- { ARTNET_OP_IP_PROG, "ArtIpProg packet" },
- { ARTNET_OP_IP_PROG_REPLY, "ArtIpProgReply packet" },
- { 0, NULL }
+ { ARTNET_OP_POLL, "ArtPoll" },
+ { ARTNET_OP_POLL_REPLY, "ArtPollReply" },
+ { ARTNET_OP_POLL_FP_REPLY, "ArtPollFpReply" },
+ { ARTNET_OP_DIAG_DATA, "ArtDiagData" },
+ { ARTNET_OP_COMMAND, "ArtCommand" },
+ { ARTNET_OP_OUTPUT, "ArtDMX" },
+ { ARTNET_OP_ADDRESS, "ArtAddress" },
+ { ARTNET_OP_INPUT, "ArtInput" },
+ { ARTNET_OP_TOD_REQUEST, "ArtTodRequest" },
+ { ARTNET_OP_TOD_DATA, "ArtTodData" },
+ { ARTNET_OP_TOD_CONTROL, "ArtTodControl" },
+ { ARTNET_OP_RDM, "ArtRdm" },
+ { ARTNET_OP_RDM_SUB, "ArtRdmSub" },
+ { ARTNET_OP_MEDIA, "ArtMedia" },
+ { ARTNET_OP_MEDIA_PATCH, "ArtMediaPatch" },
+ { ARTNET_OP_MEDIA_CONTROL, "ArtMediaControl" },
+ { ARTNET_OP_MEDIA_CONTRL_REPLY, "ArtMediaContrlReply" },
+ { ARTNET_OP_TIME_CODE, "ArtTimeCode" },
+ { ARTNET_OP_TIME_SYNC, "ArtTimeSync" },
+ { ARTNET_OP_TRIGGER, "ArtTrigger" },
+ { ARTNET_OP_DIRECTORY, "ArtDirectory" },
+ { ARTNET_OP_DIRECTORY_REPLY, "ArtDirectoryReply" },
+ { ARTNET_OP_VIDEO_SETUP, "ArtVideoSetup" },
+ { ARTNET_OP_VIDEO_PALETTE, "ArtVideoPalette" },
+ { ARTNET_OP_VIDEO_DATA, "ArtVideoData" },
+ { ARTNET_OP_MAC_MASTER, "ArtMacMaster" },
+ { ARTNET_OP_MAC_SLAVE, "ArtMacSlave" },
+ { ARTNET_OP_FIRMWARE_MASTER, "ArtFirmwareMaster" },
+ { ARTNET_OP_FIRMWARE_REPLY, "ArtFirmwareReply" },
+ { ARTNET_OP_FILE_TN_MASTER, "ArtfileTnMaster" },
+ { ARTNET_OP_FILE_FN_MASTER, "ArtfileFnMaster" },
+ { ARTNET_OP_FILE_FN_REPLY, "ArtfileFnReply" },
+ { ARTNET_OP_IP_PROG, "ArtIpProg" },
+ { ARTNET_OP_IP_PROG_REPLY, "ArtIpProgReply" },
+ { 0, NULL }
};
static const value_string artnet_oem_code_vals[] = {
@@ -282,6 +315,35 @@ static const value_string artnet_rdm_command_vals[] = {
{ 0, NULL }
};
+
+#define ARTNET_CC_DISCOVERY_COMMAND 0x10
+#define ARTNET_CC_DISCOVERY_COMMAND_RESPONSE 0x11
+#define ARTNET_CC_GET_COMMAND 0x20
+#define ARTNET_CC_GET_COMMAND_RESPONSE 0x21
+#define ARTNET_CC_SET_COMMAND 0x30
+#define ARTNET_CC_SET_COMMAND_RESPONSE 0x31
+
+static const value_string artnet_cc_vals[] = {
+ { ARTNET_CC_DISCOVERY_COMMAND, "Discovery Command" },
+ { ARTNET_CC_DISCOVERY_COMMAND_RESPONSE, "Discovery Command Response" },
+ { ARTNET_CC_GET_COMMAND, "Get Command" },
+ { ARTNET_CC_GET_COMMAND_RESPONSE, "Get Command Response" },
+ { ARTNET_CC_SET_COMMAND, "Set Command" },
+ { ARTNET_CC_SET_COMMAND_RESPONSE, "Set Command Response" },
+ { 0, NULL },
+};
+
+#define ARTNET_FILE_TYPE_FIRST 0x00
+#define ARTNET_FILE_TYPE_NORM 0x01
+#define ARTNET_FILE_TYPE_LAST 0x02
+
+static const value_string artnet_file_type_vals[] = {
+ { ARTNET_FILE_TYPE_FIRST, "First file packet" } ,
+ { ARTNET_FILE_TYPE_NORM, "File packet" } ,
+ { ARTNET_FILE_TYPE_LAST, "Final file packet" } ,
+ { 0, NULL },
+};
+
void proto_reg_handoff_artnet(void);
/* Define the artnet proto */
@@ -291,6 +353,7 @@ static int proto_artnet = -1;
/* general */
static int hf_artnet_filler = -1;
static int hf_artnet_spare = -1;
+static int hf_artnet_excess_bytes = -1;
/* Header */
static int hf_artnet_header = -1;
@@ -356,9 +419,6 @@ static int hf_artnet_output_sequence = -1;
static int hf_artnet_output_physical = -1;
static int hf_artnet_output_universe = -1;
static int hf_artnet_output_length = -1;
-static int hf_artnet_output_data = -1;
-static int hf_artnet_output_dmx_data = -1;
-static int hf_artnet_output_data_filter = -1;
/* ArtAddress */
static int hf_artnet_address = -1;
@@ -421,8 +481,8 @@ static int hf_artnet_video_data_len_x = -1;
static int hf_artnet_video_data_len_y = -1;
static int hf_artnet_video_data_data = -1;
-/* ArtPollServerReply */
-static int hf_artnet_poll_server_reply = -1;
+/* ArtPollFpReply */
+static int hf_artnet_poll_fp_reply = -1;
/* ArtTodRequest */
static int hf_artnet_tod_request = -1;
@@ -449,6 +509,19 @@ static int hf_artnet_tod_control_address = -1;
static int hf_artnet_rdm = -1;
static int hf_artnet_rdm_command = -1;
static int hf_artnet_rdm_address = -1;
+static int hf_artnet_rdm_sc = -1;
+
+static int hf_artnet_rdm_rdmver = -1;
+static int hf_artnet_rdm_net = -1;
+
+/* ArtRdmSub */
+static int hf_artnet_rdm_sub = -1;
+static int hf_artnet_rdm_sub_uid = -1;
+static int hf_artnet_rdm_sub_command_class = -1;
+static int hf_artnet_rdm_sub_pid = -1;
+static int hf_artnet_rdm_sub_sub_device = -1;
+static int hf_artnet_rdm_sub_sub_count = -1;
+static int hf_artnet_rdm_sub_data = -1;
/* ArtIpProg */
static int hf_artnet_ip_prog = -1;
@@ -469,21 +542,84 @@ static int hf_artnet_ip_prog_reply_ip = -1;
static int hf_artnet_ip_prog_reply_sm = -1;
static int hf_artnet_ip_prog_reply_port = -1;
-/* Define the tree for artnet */
-static int ett_artnet = -1;
+/* ArtDiagData */
+static int hf_artnet_diag_data = -1;
+static int hf_artnet_diag_data_priority = -1;
+static int hf_artnet_diag_data_index = -1;
+static int hf_artnet_diag_data_length = -1;
+static int hf_artnet_diag_data_data = -1;
-/*
- * Here are the global variables associated with the preferences
- * for artnet
- */
+/* ArtCommand */
+static int hf_artnet_command = -1;
+
+/* ArtMedia */
+static int hf_artnet_media = -1;
+
+/* ArtMediaPatch */
+static int hf_artnet_media_patch = -1;
+
+/* ArtMediaControl */
+static int hf_artnet_media_control = -1;
+
+/* ArtMediaControlReply */
+static int hf_artnet_media_control_reply = -1;
+
+/* ArtTimeCode */
+static int hf_artnet_time_code = -1;
+
+/* ArtTimeSync */
+static int hf_artnet_time_sync = -1;
-static guint global_udp_port_artnet = UDP_PORT_ARTNET;
-static gint global_disp_chan_val_type = 0;
-static gint global_disp_col_count = 16;
-static gint global_disp_chan_nr_type = 0;
+/* ArtTrigger */
+static int hf_artnet_trigger = -1;
+
+/* ArtDirectory */
+static int hf_artnet_directory = -1;
+static int hf_artnet_directory_filler = -1;
+static int hf_artnet_directory_cmd = -1;
+static int hf_artnet_directory_file = -1;
+
+/* ArtDirectoryReply */
+static int hf_artnet_directory_reply = -1;
+static int hf_artnet_directory_reply_filler = -1;
+static int hf_artnet_directory_reply_flags = -1;
+static int hf_artnet_directory_reply_file = -1;
+static int hf_artnet_directory_reply_name = -1;
+static int hf_artnet_directory_reply_desc = -1;
+static int hf_artnet_directory_reply_length = -1;
+static int hf_artnet_directory_reply_data = -1;
+
+/* ArtMacMaster */
+static int hf_artnet_mac_master = -1;
+
+/* ArtMacSlave */
+static int hf_artnet_mac_slave = -1;
+
+/* ArtFileTnMaster */
+static int hf_artnet_file_tn_master = -1;
+static int hf_artnet_file_tn_master_filler = -1;
+static int hf_artnet_file_tn_master_type = -1;
+static int hf_artnet_file_tn_master_block_id = -1;
+static int hf_artnet_file_tn_master_length = -1;
+static int hf_artnet_file_tn_master_name = -1;
+static int hf_artnet_file_tn_master_checksum = -1;
+static int hf_artnet_file_tn_master_spare = -1;
+static int hf_artnet_file_tn_master_data = -1;
+
+
+/* ArtFileFnMaster */
+static int hf_artnet_file_fn_master = -1;
+
+/* ArtFileFnReply */
+static int hf_artnet_file_fn_reply = -1;
+
+
+/* Define the tree for artnet */
+static int ett_artnet = -1;
/* A static handle for the rdm dissector */
static dissector_handle_t rdm_handle;
+static dissector_handle_t dmx_chan_handle;
static guint
dissect_artnet_poll(tvbuff_t *tvb, guint offset, proto_tree *tree)
@@ -749,23 +885,12 @@ dissect_artnet_poll_reply(tvbuff_t *tvb, guint offset, proto_tree *tree)
}
static guint
-dissect_artnet_output(tvbuff_t *tvb, guint offset, proto_tree *tree)
+dissect_artnet_output(tvbuff_t *tvb, guint offset, proto_tree *tree, packet_info *pinfo, proto_tree* base_tree)
{
- proto_tree *hi,*si;
- proto_item *item;
- guint16 length,r,c,row_count;
- guint8 v;
- static char string[255];
- char* ptr;
- const char* chan_format[] = {
- "%2u ",
- "%02x ",
- "%3u "
- };
- const char* string_format[] = {
- "%03x: %s",
- "%3u: %s"
- };
+ tvbuff_t *next_tvb = NULL;
+ guint16 length;
+ guint size;
+ gboolean save_info;
proto_tree_add_item(tree, hf_artnet_output_sequence, tvb,
offset, 1, ENC_BIG_ENDIAN);
@@ -784,56 +909,19 @@ dissect_artnet_output(tvbuff_t *tvb, guint offset, proto_tree *tree)
offset, 2, length);
offset += 2;
- hi = proto_tree_add_item(tree,
- hf_artnet_output_data,
- tvb,
- offset,
- length,
- ENC_NA);
+ size = tvb_reported_length_remaining(tvb, offset);
- si = proto_item_add_subtree(hi, ett_artnet);
+ save_info=col_get_writable(pinfo->cinfo);
+ col_set_writable(pinfo->cinfo, ENC_BIG_ENDIAN);
- row_count = (length/global_disp_col_count) + ((length%global_disp_col_count) == 0 ? 0 : 1);
- ptr = string;
- /* XX: In theory the g_snprintf statements below could store '\0' bytes off the end of the */
- /* 'string' buffer'. This is so since g_snprint returns the number of characters which */
- /* "would have been written" (whether or not there was room) and since ptr is always */
- /* incremented by this amount. In practice the string buffer is large enough such that the */
- /* string buffer size is not exceeded even with the maximum number of columns which might */
- /* be displayed. */
- /* ToDo: consider recoding slightly ... */
- for (r=0; r < row_count;r++) {
- for (c=0;(c < global_disp_col_count) && (((r*global_disp_col_count)+c) < length);c++) {
- if ((c % (global_disp_col_count/2)) == 0) {
- ptr += g_snprintf(ptr, (gulong)(sizeof string - strlen(string)), " ");
- }
+ if (!next_tvb)
+ next_tvb = tvb_new_subset(tvb, offset, length, length);
- v = tvb_get_guint8(tvb, (offset+(r*global_disp_col_count)+c));
- if (global_disp_chan_val_type == 0) {
- v = (v * 100) / 255;
- if (v == 100) {
- ptr += g_snprintf(ptr, (gulong)(sizeof string - strlen(string)), "FL ");
- } else {
- ptr += g_snprintf(ptr, (gulong)(sizeof string - strlen(string)), chan_format[global_disp_chan_val_type], v);
- }
- } else {
- ptr += g_snprintf(ptr, (gulong)(sizeof string - strlen(string)), chan_format[global_disp_chan_val_type], v);
- }
- }
+ call_dissector(dmx_chan_handle, next_tvb, pinfo, base_tree);
- proto_tree_add_none_format(si,hf_artnet_output_dmx_data, tvb,
- offset+(r*global_disp_col_count), c,
- string_format[global_disp_chan_nr_type], (r*global_disp_col_count)+1, string);
- ptr = string;
- }
-
- /* Add the real type hidden */
- item = proto_tree_add_item(si, hf_artnet_output_data_filter, tvb,
- offset, length, ENC_NA );
- PROTO_ITEM_SET_HIDDEN(item);
- offset += length;
+ col_set_writable(pinfo->cinfo, save_info);
- return offset;
+ return offset + size;
}
static guint
@@ -1232,19 +1320,40 @@ dissect_artnet_tod_control(tvbuff_t *tvb, guint offset, proto_tree *tree)
}
static guint
-dissect_artnet_rdm(tvbuff_t *tvb, guint offset, proto_tree *tree, packet_info *pinfo)
+dissect_artnet_rdm(tvbuff_t *tvb, guint offset, proto_tree *tree, packet_info *pinfo, proto_tree *base_tree)
{
+ guint8 rdmver;
+ guint8 sc;
guint size;
gboolean save_info;
tvbuff_t *next_tvb = NULL;
- proto_tree_add_item(tree, hf_artnet_filler, tvb,
- offset, 2, ENC_NA);
- offset += 2;
+ rdmver = tvb_get_guint8(tvb, offset);
+ if (rdmver == 0x00) {
+ proto_tree_add_item(tree, hf_artnet_filler, tvb,
+ offset, 2, ENC_NA);
+ offset += 2;
- proto_tree_add_item(tree, hf_artnet_spare, tvb,
- offset, 8, ENC_NA);
- offset += 8;
+ proto_tree_add_item(tree, hf_artnet_spare, tvb,
+ offset, 8, ENC_NA);
+ offset += 8;
+ } else {
+ proto_tree_add_item(tree, hf_artnet_rdm_rdmver, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+
+ proto_tree_add_item(tree, hf_artnet_filler, tvb,
+ offset, 1, ENC_NA);
+ offset += 1;
+
+ proto_tree_add_item(tree, hf_artnet_spare, tvb,
+ offset, 7, ENC_NA);
+ offset += 7;
+
+ proto_tree_add_item(tree, hf_artnet_rdm_net, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ }
proto_tree_add_item(tree, hf_artnet_rdm_command, tvb,
offset, 1, ENC_BIG_ENDIAN);
@@ -1253,7 +1362,18 @@ dissect_artnet_rdm(tvbuff_t *tvb, guint offset, proto_tree *tree, packet_info *
proto_tree_add_item(tree, hf_artnet_rdm_address, tvb,
offset, 1, ENC_BIG_ENDIAN);
offset += 1;
+
+ /* check for old version that included the 0xCC startcode
+ * The 0xCC will never be the first byte of the RDM packet
+ */
+ sc = tvb_get_guint8(tvb, offset);
+ if (sc == 0xCC) {
+ proto_tree_add_item(tree, hf_artnet_rdm_sc, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ }
+
size = tvb_reported_length_remaining(tvb, offset);
save_info=col_get_writable(pinfo->cinfo);
@@ -1262,15 +1382,77 @@ dissect_artnet_rdm(tvbuff_t *tvb, guint offset, proto_tree *tree, packet_info *
if (!next_tvb)
next_tvb = tvb_new_subset_remaining(tvb, offset);
- call_dissector(rdm_handle, next_tvb, pinfo, tree);
+ call_dissector(rdm_handle, next_tvb, pinfo, base_tree);
col_set_writable(pinfo->cinfo, save_info);
- size = tvb_reported_length_remaining(tvb, offset) - size;
-
return offset + size;
}
+
+static guint
+dissect_artnet_rdm_sub(tvbuff_t *tvb, guint offset, proto_tree *tree, packet_info *pinfo _U_)
+{
+ guint8 cc;
+ gint size;
+
+ proto_tree_add_item(tree, hf_artnet_rdm_rdmver, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+
+ proto_tree_add_item(tree, hf_artnet_filler, tvb,
+ offset, 1, ENC_NA);
+ offset += 1;
+
+ proto_tree_add_item(tree, hf_artnet_rdm_sub_uid, tvb,
+ offset, 6, ENC_NA);
+ offset += 6;
+
+ proto_tree_add_item(tree, hf_artnet_spare, tvb,
+ offset, 1, ENC_NA);
+ offset += 1;
+
+ cc = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_artnet_rdm_sub_command_class, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+
+ proto_tree_add_item(tree, hf_artnet_rdm_sub_pid, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_artnet_rdm_sub_sub_device, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_artnet_rdm_sub_sub_count, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_artnet_spare, tvb,
+ offset, 4, ENC_NA);
+ offset += 4;
+
+ switch(cc) {
+ case ARTNET_CC_SET_COMMAND:
+ case ARTNET_CC_GET_COMMAND_RESPONSE:
+ size = tvb_reported_length_remaining(tvb, offset);
+ proto_tree_add_item(tree, hf_artnet_rdm_sub_data, tvb,
+ offset, size, ENC_NA);
+ offset += size;
+ break;
+
+ case ARTNET_CC_DISCOVERY_COMMAND:
+ case ARTNET_CC_DISCOVERY_COMMAND_RESPONSE:
+ case ARTNET_CC_GET_COMMAND:
+ case ARTNET_CC_SET_COMMAND_RESPONSE:
+ default:
+ break;
+ }
+
+ return offset;
+}
+
static guint
dissect_artnet_ip_prog(tvbuff_t *tvb, guint offset, proto_tree *tree) {
guint8 command;
@@ -1344,23 +1526,225 @@ dissect_artnet_ip_prog_reply(tvbuff_t *tvb, guint offset, proto_tree *tree)
}
static guint
-dissect_artnet_poll_server_reply(tvbuff_t *tvb, guint offset, proto_tree *tree)
+dissect_artnet_poll_fp_reply(tvbuff_t *tvb _U_, guint offset, proto_tree *tree _U_)
+{
+ return offset;
+}
+
+
+/* ArtDiagData */
+static guint
+dissect_artnet_diag_data(tvbuff_t *tvb, guint offset, proto_tree *tree)
{
- /* no spec released for this packet at the moment */
+ guint16 length;
+
proto_tree_add_item(tree, hf_artnet_filler, tvb,
- offset, 182, ENC_NA);
- offset += 182;
+ offset, 1, ENC_NA);
+ offset++;
+
+ proto_tree_add_item(tree, hf_artnet_diag_data_priority, tvb,
+ offset, 1, ENC_NA);
+ offset++;
+
+ proto_tree_add_item(tree, hf_artnet_diag_data_index, tvb,
+ offset, 2, ENC_NA);
+ offset += 2;
+
+ length = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_item(tree, hf_artnet_diag_data_length, tvb,
+ offset, 2, ENC_NA);
+ offset+=2;
+
+ proto_tree_add_item(tree, hf_artnet_diag_data_data, tvb,
+ offset, length, ENC_NA);
+ offset += length;
+
+ return offset;
+}
+
+/* ArtCommand */
+static guint
+dissect_artnet_command(tvbuff_t *tvb _U_, guint offset, proto_tree *tree _U_)
+{
+ return offset;
+}
+
+/* ArtMedia */
+static guint
+dissect_artnet_media(tvbuff_t *tvb _U_, guint offset, proto_tree *tree _U_)
+{
+ return offset;
+}
+
+/* ArtMediaPatch */
+static guint
+dissect_artnet_media_patch(tvbuff_t *tvb _U_, guint offset, proto_tree *tree _U_)
+{
+ return offset;
+}
+
+/* ArtMediaControl */
+static guint
+dissect_artnet_media_control(tvbuff_t *tvb _U_, guint offset, proto_tree *tree _U_)
+{
+ return offset;
+}
+
+/* ArtMediaControlReply */
+static guint
+dissect_artnet_media_control_reply(tvbuff_t *tvb _U_, guint offset, proto_tree *tree _U_)
+{
+ return offset;
+}
+
+/* ArtTimeCode */
+static guint
+dissect_artnet_time_code(tvbuff_t *tvb _U_, guint offset, proto_tree *tree _U_)
+{
+ return offset;
+}
+
+/* ArtTimeSync */
+static guint
+dissect_artnet_time_sync(tvbuff_t *tvb _U_, guint offset, proto_tree *tree _U_)
+{
+ return offset;
+}
+
+/* ArtTrigger */
+static guint
+dissect_artnet_trigger(tvbuff_t *tvb _U_, guint offset, proto_tree *tree _U_)
+{
+ return offset;
+}
+
+/* ArtDirectory */
+static guint
+dissect_artnet_directory(tvbuff_t *tvb, guint offset, proto_tree *tree)
+{
+ proto_tree_add_item(tree, hf_artnet_directory_filler, tvb,
+ offset, 2, ENC_NA);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_artnet_directory_cmd, tvb,
+ offset, 1, ENC_NA);
+ offset++;
+
+ proto_tree_add_item(tree, hf_artnet_directory_file, tvb,
+ offset, 2, ENC_NA);
+ offset += 2;
return offset;
}
+/* ArtDirectoryReply */
+static guint
+dissect_artnet_directory_reply(tvbuff_t *tvb, guint offset, proto_tree *tree)
+{
+ proto_tree_add_item(tree, hf_artnet_directory_reply_filler, tvb,
+ offset, 2, ENC_NA);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_artnet_directory_reply_flags, tvb,
+ offset, 1, ENC_NA);
+ offset++;
+
+ proto_tree_add_item(tree, hf_artnet_directory_reply_file, tvb,
+ offset, 2, ENC_NA);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_artnet_directory_reply_name, tvb,
+ offset, 16, ENC_NA);
+ offset += 16;
+
+ proto_tree_add_item(tree, hf_artnet_directory_reply_desc, tvb,
+ offset, 64, ENC_NA);
+ offset += 64;
+
+ proto_tree_add_item(tree, hf_artnet_directory_reply_length, tvb,
+ offset, 8, ENC_NA);
+ offset += 8;
+
+ proto_tree_add_item(tree, hf_artnet_directory_reply_data, tvb,
+ offset, 64, ENC_NA);
+ offset += 64;
+
+ return offset;
+}
+
+/* ArtMacMaster */
+static guint
+dissect_artnet_mac_master(tvbuff_t *tvb _U_, guint offset, proto_tree *tree _U_)
+{
+ return offset;
+}
+
+/* ArtMacSlave */
+static guint
+dissect_artnet_mac_slave(tvbuff_t *tvb _U_, guint offset, proto_tree *tree _U_)
+{
+ return offset;
+}
+
+/* ArtFileTnMaster */
+static guint
+dissect_artnet_file_tn_master(tvbuff_t *tvb, guint offset, proto_tree *tree)
+{
+ proto_tree_add_item(tree, hf_artnet_file_tn_master_filler, tvb,
+ offset, 2, ENC_NA);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_artnet_file_tn_master_type, tvb,
+ offset, 1, ENC_NA);
+ offset += 1;
+
+ proto_tree_add_item(tree, hf_artnet_file_tn_master_block_id, tvb,
+ offset, 1, ENC_NA);
+ offset += 1;
+
+ proto_tree_add_item(tree, hf_artnet_file_tn_master_length, tvb,
+ offset, 4, ENC_NA);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_artnet_file_tn_master_name, tvb,
+ offset, 14, ENC_NA);
+ offset += 14;
+
+ proto_tree_add_item(tree, hf_artnet_file_tn_master_checksum, tvb,
+ offset, 2, ENC_NA);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_artnet_file_tn_master_spare, tvb,
+ offset, 4, ENC_NA);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_artnet_file_tn_master_data, tvb,
+ offset, 512, ENC_NA);
+ offset += 512;
+
+ return offset;
+}
+
+/* ArtFileFnMaster */
+static guint
+dissect_artnet_file_fn_master(tvbuff_t *tvb _U_, guint offset, proto_tree *tree _U_)
+{
+ return offset;
+}
+
+/* ArtFileFnReply */
+static guint
+dissect_artnet_file_fn_reply(tvbuff_t *tvb _U_, guint offset, proto_tree *tree _U_)
+{
+ return offset;
+}
static void
dissect_artnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
gint offset = 0;
guint size;
guint16 opcode;
- proto_tree *ti,*hi,*si,*artnet_tree=NULL,*artnet_header_tree=NULL;
+ proto_tree *ti = NULL,*hi = NULL,*si = NULL,*artnet_tree=NULL,*artnet_header_tree=NULL;
/* Set the protocol column */
col_set_str(pinfo->cinfo, COL_PROTOCOL, "ARTNET");
@@ -1368,6 +1752,7 @@ dissect_artnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
/* Clear out stuff in the info column */
col_clear(pinfo->cinfo, COL_INFO);
+
if (tree) {
ti = proto_tree_add_item(tree, proto_artnet, tvb, offset, -1, ENC_NA);
artnet_tree = proto_item_add_subtree(ti, ett_artnet);
@@ -1392,16 +1777,18 @@ dissect_artnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
opcode = tvb_get_letohs(tvb, offset);
/* set the info column */
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s",
- val_to_str(opcode, artnet_opcode_vals, "Unknown (0x%04x)"));
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s (0x%04x)",
+ val_to_str(opcode, artnet_opcode_vals, "Unknown"), opcode);
if( tree ){
proto_tree_add_uint(artnet_header_tree, hf_artnet_header_opcode, tvb,
offset, 2, opcode);
+
+ proto_item_append_text(ti, ", Opcode: %s (0x%04x)", val_to_str(opcode, artnet_opcode_vals, "Unknown"), opcode);
}
offset += 2;
- if( opcode != ARTNET_OP_POLL_REPLY && opcode != ARTNET_OP_POLL_SERVER_REPLY ) {
+ if( opcode != ARTNET_OP_POLL_REPLY && opcode != ARTNET_OP_POLL_FP_REPLY ) {
if( tree ){
proto_tree_add_item(artnet_header_tree, hf_artnet_header_protver, tvb,
offset, 2, ENC_BIG_ENDIAN);
@@ -1412,13 +1799,14 @@ dissect_artnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
}
switch( opcode ) {
+
case ARTNET_OP_POLL:
if (tree) {
hi = proto_tree_add_item(artnet_tree,
hf_artnet_poll,
tvb,
offset,
- ARTNET_POLL_LENGTH,
+ 0,
ENC_NA);
si = proto_item_add_subtree(hi, ett_artnet);
@@ -1427,6 +1815,7 @@ dissect_artnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
size -= offset;
proto_item_set_len(si, size);
+ offset += size;
}
break;
@@ -1436,7 +1825,7 @@ dissect_artnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
hf_artnet_poll_reply,
tvb,
offset,
- ARTNET_POLL_REPLY_LENGTH,
+ 0,
ENC_NA);
si = proto_item_add_subtree(hi, ett_artnet);
@@ -1445,6 +1834,61 @@ dissect_artnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
size -= offset;
proto_item_set_len(si, size);
+ offset += size;
+ }
+ break;
+
+ case ARTNET_OP_POLL_FP_REPLY:
+ if (tree) {
+ hi = proto_tree_add_item(artnet_tree,
+ hf_artnet_poll_fp_reply,
+ tvb,
+ offset,
+ 0,
+ ENC_NA );
+ si = proto_item_add_subtree(hi, ett_artnet );
+
+ size = dissect_artnet_poll_fp_reply( tvb, offset, si );
+ size -= offset;
+
+ proto_item_set_len(si, size );
+ offset += size;
+ }
+ break;
+
+ case ARTNET_OP_DIAG_DATA:
+ if (tree) {
+ hi = proto_tree_add_item(artnet_tree,
+ hf_artnet_diag_data,
+ tvb,
+ offset,
+ 0,
+ ENC_NA );
+ si = proto_item_add_subtree(hi, ett_artnet );
+
+ size = dissect_artnet_diag_data( tvb, offset, si );
+ size -= offset;
+
+ proto_item_set_len(si, size );
+ offset += size;
+ }
+ break;
+
+ case ARTNET_OP_COMMAND:
+ if (tree) {
+ hi = proto_tree_add_item(artnet_tree,
+ hf_artnet_command,
+ tvb,
+ offset,
+ 0,
+ ENC_NA );
+ si = proto_item_add_subtree(hi, ett_artnet );
+
+ size = dissect_artnet_command( tvb, offset, si );
+ size -= offset;
+
+ proto_item_set_len(si, size );
+ offset += size;
}
break;
@@ -1454,25 +1898,26 @@ dissect_artnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
hf_artnet_output,
tvb,
offset,
- ARTNET_OUTPUT_LENGTH,
+ 0,
ENC_NA);
si = proto_item_add_subtree(hi, ett_artnet);
- size = dissect_artnet_output( tvb, offset, si );
+ size = dissect_artnet_output( tvb, offset, si, pinfo, tree);
size -= offset;
-
- proto_item_set_len(si, size);
+ proto_item_set_len(si, size );
+ offset += size;
}
break;
+
case ARTNET_OP_ADDRESS:
if (tree) {
hi = proto_tree_add_item(artnet_tree,
hf_artnet_address,
tvb,
offset,
- ARTNET_POLL_REPLY_LENGTH,
+ 0,
ENC_NA);
si = proto_item_add_subtree(hi, ett_artnet);
@@ -1481,6 +1926,7 @@ dissect_artnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
size -= offset;
proto_item_set_len(si, size);
+ offset += size;
}
break;
@@ -1490,7 +1936,7 @@ dissect_artnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
hf_artnet_input,
tvb,
offset,
- ARTNET_INPUT_LENGTH,
+ 0,
ENC_NA);
si = proto_item_add_subtree(hi, ett_artnet);
@@ -1499,16 +1945,272 @@ dissect_artnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
size -= offset;
proto_item_set_len(si, size);
+ offset += size;
+ }
+ break;
+
+ case ARTNET_OP_TOD_REQUEST:
+ if (tree) {
+ hi = proto_tree_add_item(artnet_tree,
+ hf_artnet_tod_request,
+ tvb,
+ offset,
+ 0,
+ ENC_NA);
+
+ si = proto_item_add_subtree(hi, ett_artnet);
+
+ size = dissect_artnet_tod_request( tvb, offset, si );
+ size -= offset;
+
+ proto_item_set_len(si, size);
+ offset += size;
+ }
+ break;
+
+ case ARTNET_OP_TOD_DATA:
+ if (tree) {
+ hi = proto_tree_add_item(artnet_tree,
+ hf_artnet_tod_data,
+ tvb,
+ offset,
+ 0,
+ ENC_NA);
+
+ si = proto_item_add_subtree(hi, ett_artnet );
+
+ size = dissect_artnet_tod_data( tvb, offset, si );
+ size -= offset;
+
+ proto_item_set_len(si, size );
+ offset += size;
+ }
+ break;
+
+ case ARTNET_OP_TOD_CONTROL:
+ if (tree){
+ hi = proto_tree_add_item(artnet_tree,
+ hf_artnet_tod_control,
+ tvb,
+ offset,
+ 0,
+ ENC_NA );
+ si = proto_item_add_subtree(hi, ett_artnet );
+
+ size = dissect_artnet_tod_control( tvb, offset, si );
+ size -= offset;
+
+ proto_item_set_len(si, size );
+ offset += size;
+ }
+ break;
+
+ case ARTNET_OP_RDM:
+ if (tree) {
+ hi = proto_tree_add_item(artnet_tree,
+ hf_artnet_rdm,
+ tvb,
+ offset,
+ 0,
+ ENC_NA);
+ si = proto_item_add_subtree(hi,ett_artnet);
+
+ size = dissect_artnet_rdm( tvb, offset, si, pinfo, tree);
+ size -= offset;
+
+ proto_item_set_len( si, size );
+ offset += size;
+ }
+ break;
+
+ case ARTNET_OP_RDM_SUB:
+ if (tree) {
+ hi = proto_tree_add_item(artnet_tree,
+ hf_artnet_rdm_sub,
+ tvb,
+ offset,
+ 0,
+ ENC_NA);
+ si = proto_item_add_subtree(hi,ett_artnet);
+
+ size = dissect_artnet_rdm_sub( tvb, offset, si, pinfo );
+ size -= offset;
+
+ proto_item_set_len( si, size );
+ offset += size;
+ }
+ break;
+
+ case ARTNET_OP_MEDIA:
+ if (tree) {
+ hi = proto_tree_add_item(artnet_tree,
+ hf_artnet_media,
+ tvb,
+ offset,
+ 0,
+ ENC_NA);
+ si = proto_item_add_subtree(hi,ett_artnet);
+
+ size = dissect_artnet_media( tvb, offset, si);
+ size -= offset;
+
+ proto_item_set_len( si, size );
+ offset += size;
}
break;
+ case ARTNET_OP_MEDIA_PATCH:
+ if (tree) {
+ hi = proto_tree_add_item(artnet_tree,
+ hf_artnet_media_patch,
+ tvb,
+ offset,
+ 0,
+ ENC_NA);
+ si = proto_item_add_subtree(hi,ett_artnet);
+
+ size = dissect_artnet_media_patch( tvb, offset, si);
+ size -= offset;
+
+ proto_item_set_len( si, size );
+ offset += size;
+ }
+ break;
+
+ case ARTNET_OP_MEDIA_CONTROL:
+ if (tree) {
+ hi = proto_tree_add_item(artnet_tree,
+ hf_artnet_media_control,
+ tvb,
+ offset,
+ 0,
+ ENC_NA);
+ si = proto_item_add_subtree(hi,ett_artnet);
+
+ size = dissect_artnet_media_control( tvb, offset, si);
+ size -= offset;
+
+ proto_item_set_len( si, size );
+ offset += size;
+ }
+ break;
+
+ case ARTNET_OP_MEDIA_CONTRL_REPLY:
+ if (tree) {
+ hi = proto_tree_add_item(artnet_tree,
+ hf_artnet_media_control_reply,
+ tvb,
+ offset,
+ 0,
+ ENC_NA);
+ si = proto_item_add_subtree(hi,ett_artnet);
+
+ size = dissect_artnet_media_control_reply( tvb, offset, si);
+ size -= offset;
+
+ proto_item_set_len( si, size );
+ offset += size;
+ }
+ break;
+
+ case ARTNET_OP_TIME_CODE:
+ if (tree) {
+ hi = proto_tree_add_item(artnet_tree,
+ hf_artnet_time_code,
+ tvb,
+ offset,
+ 0,
+ ENC_NA);
+ si = proto_item_add_subtree(hi,ett_artnet);
+
+ size = dissect_artnet_time_code( tvb, offset, si);
+ size -= offset;
+
+ proto_item_set_len( si, size );
+ offset += size;
+ }
+ break;
+
+ case ARTNET_OP_TIME_SYNC:
+ if (tree) {
+ hi = proto_tree_add_item(artnet_tree,
+ hf_artnet_time_sync,
+ tvb,
+ offset,
+ 0,
+ ENC_NA);
+ si = proto_item_add_subtree(hi,ett_artnet);
+
+ size = dissect_artnet_time_sync( tvb, offset, si);
+ size -= offset;
+
+ proto_item_set_len( si, size );
+ offset += size;
+ }
+ break;
+
+ case ARTNET_OP_TRIGGER:
+ if (tree) {
+ hi = proto_tree_add_item(artnet_tree,
+ hf_artnet_trigger,
+ tvb,
+ offset,
+ 0,
+ ENC_NA);
+ si = proto_item_add_subtree(hi,ett_artnet);
+
+ size = dissect_artnet_trigger( tvb, offset, si);
+ size -= offset;
+
+ proto_item_set_len( si, size );
+ offset += size;
+ }
+ break;
+
+ case ARTNET_OP_DIRECTORY:
+ if (tree) {
+ hi = proto_tree_add_item(artnet_tree,
+ hf_artnet_directory,
+ tvb,
+ offset,
+ 0,
+ ENC_NA);
+ si = proto_item_add_subtree(hi,ett_artnet);
+
+ size = dissect_artnet_directory( tvb, offset, si);
+ size -= offset;
+
+ proto_item_set_len( si, size );
+ offset += size;
+ }
+ break;
+
+ case ARTNET_OP_DIRECTORY_REPLY:
+ if (tree) {
+ hi = proto_tree_add_item(artnet_tree,
+ hf_artnet_directory_reply,
+ tvb,
+ offset,
+ 0,
+ ENC_NA);
+ si = proto_item_add_subtree(hi,ett_artnet);
+
+ size = dissect_artnet_directory_reply( tvb, offset, si);
+ size -= offset;
+
+ proto_item_set_len( si, size );
+ offset += size;
+ }
+ break;
+
+
case ARTNET_OP_VIDEO_SETUP:
if (tree) {
hi = proto_tree_add_item(artnet_tree,
hf_artnet_input,
tvb,
offset,
- ARTNET_VIDEO_SETUP_LENGTH,
+ 0,
ENC_NA);
si = proto_item_add_subtree(hi, ett_artnet);
@@ -1517,6 +2219,7 @@ dissect_artnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
size -= offset;
proto_item_set_len(si, size);
+ offset += size;
}
break;
@@ -1526,7 +2229,7 @@ dissect_artnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
hf_artnet_input,
tvb,
offset,
- ARTNET_VIDEO_PALETTE_LENGTH,
+ 0,
ENC_NA);
si = proto_item_add_subtree(hi, ett_artnet);
@@ -1535,6 +2238,7 @@ dissect_artnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
size -= offset;
proto_item_set_len(si, size);
+ offset += size;
}
break;
@@ -1544,7 +2248,7 @@ dissect_artnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
hf_artnet_input,
tvb,
offset,
- ARTNET_VIDEO_DATA_LENGTH,
+ 0,
ENC_NA);
si = proto_item_add_subtree(hi, ett_artnet);
@@ -1553,6 +2257,45 @@ dissect_artnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
size -= offset;
proto_item_set_len(si, size);
+ offset += size;
+ }
+ break;
+
+ case ARTNET_OP_MAC_MASTER:
+ if (tree) {
+ hi = proto_tree_add_item(artnet_tree,
+ hf_artnet_mac_master,
+ tvb,
+ offset,
+ 0,
+ ENC_NA);
+
+ si = proto_item_add_subtree(hi, ett_artnet);
+
+ size = dissect_artnet_mac_master( tvb, offset, si );
+ size -= offset;
+
+ proto_item_set_len(si, size);
+ offset += size;
+ }
+ break;
+
+ case ARTNET_OP_MAC_SLAVE:
+ if (tree) {
+ hi = proto_tree_add_item(artnet_tree,
+ hf_artnet_mac_slave,
+ tvb,
+ offset,
+ 0,
+ ENC_NA);
+
+ si = proto_item_add_subtree(hi, ett_artnet);
+
+ size = dissect_artnet_mac_slave( tvb, offset, si );
+ size -= offset;
+
+ proto_item_set_len(si, size);
+ offset += size;
}
break;
@@ -1562,7 +2305,7 @@ dissect_artnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
hf_artnet_firmware_master,
tvb,
offset,
- ARTNET_FIRMWARE_MASTER_LENGTH,
+ 0,
ENC_NA);
si = proto_item_add_subtree(hi, ett_artnet);
@@ -1571,6 +2314,7 @@ dissect_artnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
size -= offset;
proto_item_set_len(si, size);
+ offset += size;
}
break;
@@ -1580,7 +2324,7 @@ dissect_artnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
hf_artnet_firmware_reply,
tvb,
offset,
- ARTNET_FIRMWARE_REPLY_LENGTH,
+ 0,
ENC_NA);
si = proto_item_add_subtree(hi, ett_artnet);
@@ -1589,138 +2333,116 @@ dissect_artnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
size -= offset;
proto_item_set_len(si, size);
+ offset += size;
}
break;
- case ARTNET_OP_TOD_REQUEST:
+ case ARTNET_OP_FILE_TN_MASTER:
if (tree) {
hi = proto_tree_add_item(artnet_tree,
- hf_artnet_tod_request,
- tvb,
- offset,
- 0,
- ENC_NA);
-
- si = proto_item_add_subtree(hi, ett_artnet);
+ hf_artnet_file_tn_master,
+ tvb,
+ offset,
+ 0,
+ ENC_NA);
+ si = proto_item_add_subtree(hi, ett_artnet );
- size = dissect_artnet_tod_request( tvb, offset, si );
- size -= offset;
+ size = dissect_artnet_file_tn_master( tvb, offset, si);
+ size -= offset;
- proto_item_set_len(si, size);
+ proto_item_set_len(si, size );
+ offset += size;
}
break;
- case ARTNET_OP_TOD_DATA:
+ case ARTNET_OP_FILE_FN_MASTER:
if (tree) {
hi = proto_tree_add_item(artnet_tree,
- hf_artnet_tod_data,
- tvb,
- offset,
- 0,
- ENC_NA);
-
- si = proto_item_add_subtree(hi, ett_artnet );
+ hf_artnet_file_fn_master,
+ tvb,
+ offset,
+ 0,
+ ENC_NA);
+ si = proto_item_add_subtree(hi, ett_artnet );
- size = dissect_artnet_tod_data( tvb, offset, si );
- size -= offset;
+ size = dissect_artnet_file_fn_master( tvb, offset, si);
+ size -= offset;
- proto_item_set_len(si, size );
+ proto_item_set_len(si, size );
+ offset += size;
}
break;
- case ARTNET_OP_TOD_CONTROL:
- if (tree){
- hi = proto_tree_add_item(artnet_tree,
- hf_artnet_tod_control,
- tvb,
- offset,
- 0,
- ENC_NA );
- si = proto_item_add_subtree(hi, ett_artnet );
-
- size = dissect_artnet_tod_control( tvb, offset, si );
- size -= offset;
-
- proto_item_set_len(si, size );
- }
- break;
+ case ARTNET_OP_FILE_FN_REPLY:
+ if (tree) {
+ hi = proto_tree_add_item(artnet_tree,
+ hf_artnet_file_fn_reply,
+ tvb,
+ offset,
+ 0,
+ ENC_NA);
+ si = proto_item_add_subtree(hi, ett_artnet );
- case ARTNET_OP_RDM:
- hi = proto_tree_add_item(artnet_tree,
- hf_artnet_rdm,
- tvb,
- offset,
- 0,
- ENC_NA);
- si = proto_item_add_subtree(hi,ett_artnet);
-
- size = dissect_artnet_rdm( tvb, offset, si, pinfo );
- size -= offset;
-
- proto_item_set_len( si, size );
+ size = dissect_artnet_file_fn_reply( tvb, offset, si);
+ size -= offset;
+
+ proto_item_set_len(si, size );
+ offset += size;
+ }
break;
case ARTNET_OP_IP_PROG:
if (tree) {
hi = proto_tree_add_item(artnet_tree,
- hf_artnet_ip_prog,
- tvb,
- offset,
- 0,
- ENC_NA);
- si = proto_item_add_subtree(hi, ett_artnet );
+ hf_artnet_ip_prog,
+ tvb,
+ offset,
+ 0,
+ ENC_NA);
+ si = proto_item_add_subtree(hi, ett_artnet );
- size = dissect_artnet_ip_prog( tvb, offset, si);
- size -= offset;
+ size = dissect_artnet_ip_prog( tvb, offset, si);
+ size -= offset;
- proto_item_set_len(si, size );
+ proto_item_set_len(si, size );
+ offset += size;
}
break;
case ARTNET_OP_IP_PROG_REPLY:
if (tree) {
hi = proto_tree_add_item(artnet_tree,
- hf_artnet_ip_prog_reply,
- tvb,
- offset,
- 0,
- ENC_NA);
- si = proto_item_add_subtree(hi, ett_artnet );
+ hf_artnet_ip_prog_reply,
+ tvb,
+ offset,
+ 0,
+ ENC_NA);
+ si = proto_item_add_subtree(hi, ett_artnet );
- size = dissect_artnet_ip_prog_reply( tvb, offset, si );
- size -= offset;
+ size = dissect_artnet_ip_prog_reply( tvb, offset, si );
+ size -= offset;
- proto_item_set_len(si, size );
+ proto_item_set_len(si, size );
+ offset += size;
}
break;
- case ARTNET_OP_POLL_SERVER_REPLY:
- if (tree) {
- hi = proto_tree_add_item(artnet_tree,
- hf_artnet_poll_server_reply,
- tvb,
- offset,
- 0,
- ENC_NA );
- si = proto_item_add_subtree(hi, ett_artnet );
-
- size = dissect_artnet_poll_server_reply( tvb, offset, si );
- size -= offset;
-
- proto_item_set_len(si, size );
- }
- break;
default:
if (tree) {
proto_tree_add_text(artnet_tree, tvb, offset, -1,
"Data (%d bytes)", tvb_reported_length_remaining(tvb, offset));
+ offset += tvb_reported_length_remaining(tvb, offset);
}
break;
}
-
-
+ if (tree) {
+ if (tvb_reported_length_remaining(tvb, offset) > 0) {
+ proto_tree_add_item(artnet_tree, hf_artnet_excess_bytes, tvb,
+ offset, tvb_reported_length_remaining(tvb, offset), ENC_NA);
+ }
+ }
}
void
@@ -1728,6 +2450,11 @@ proto_register_artnet(void) {
static hf_register_info hf[] = {
/* General */
+ { &hf_artnet_excess_bytes,
+ { "Excess Bytes",
+ "artnet.excess_bytes",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_artnet_filler,
{ "filler",
@@ -1742,7 +2469,6 @@ proto_register_artnet(void) {
NULL, HFILL }},
/* header */
-
{ &hf_artnet_header,
{ "Descriptor Header",
"artnet.header",
@@ -2091,24 +2817,6 @@ proto_register_artnet(void) {
FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }},
- { &hf_artnet_output_data,
- { "DMX data",
- "artnet.output.data",
- FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_artnet_output_data_filter,
- { "DMX data filter",
- "artnet.output.data_filter",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_artnet_output_dmx_data,
- { "DMX data",
- "artnet.output.dmx_data",
- FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
-
/* ArtAddress */
{ &hf_artnet_address,
@@ -2516,6 +3224,67 @@ proto_register_artnet(void) {
"artnet.rdm.address",
FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }},
+
+ { &hf_artnet_rdm_sc,
+ { "Startcode",
+ "artnet.rdm.sc",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_artnet_rdm_rdmver,
+ { "RDM Version",
+ "artnet.rdm.rdmver",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_artnet_rdm_net,
+ { "Address High",
+ "artnet.rdm.net",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ /* ArtRdmSub */
+ { &hf_artnet_rdm_sub,
+ { "ArtRdmSub packet",
+ "artnet.rdm_sub",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Art-Net ArtRdmSub packet", HFILL }},
+
+ { &hf_artnet_rdm_sub_uid,
+ { "UID",
+ "artnet.rdm_sub.uid",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_artnet_rdm_sub_command_class,
+ { "Command Class",
+ "artnet.rdm_sub.command_class",
+ FT_UINT8, BASE_HEX, VALS(artnet_cc_vals), 0x0,
+ NULL, HFILL }},
+
+ { &hf_artnet_rdm_sub_pid,
+ { "Parameter ID",
+ "artnet.rdm_sub.param_id",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_artnet_rdm_sub_sub_device,
+ { "Sub Device",
+ "artnet.rdm_sub.sub_device",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_artnet_rdm_sub_sub_count,
+ { "Sub Count",
+ "artnet.rdm_sub.sub_count",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_artnet_rdm_sub_data,
+ { "Data",
+ "artnet.rdm_sub.data",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
/* ArtIpProg */
{ &hf_artnet_ip_prog,
@@ -2610,92 +3379,303 @@ proto_register_artnet(void) {
NULL, HFILL }},
/* ArtPollServerReply */
- { &hf_artnet_poll_server_reply,
- { "ArtPollServerReply packet",
- "artnet.poll_server_reply",
- FT_NONE, BASE_NONE, NULL, 0,
- "Art-Net ArtPollServerReply packet", HFILL }}
+ { &hf_artnet_poll_fp_reply,
+ { "ArtPollFpReply packet",
+ "artnet.poll_fp_reply",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Art-Net ArtPollFpReply packet", HFILL }},
- };
+ /* ArtDiagData */
+ { &hf_artnet_diag_data,
+ { "ArtDiagData packet",
+ "artnet.diag_data",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Art-Net ArtDiagData packet", HFILL }},
- static gint *ett[] = {
- &ett_artnet,
- };
+ { &hf_artnet_diag_data_priority,
+ { "Priotity",
+ "artnet.diag_data.priority",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
- module_t *artnet_module;
+ { &hf_artnet_diag_data_index,
+ { "Index",
+ "artnet.diag_data.index",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
- static enum_val_t disp_chan_val_types[] = {
- { "pro", "Percent", 0 },
- { "hex", "Hexadecimal", 1 },
- { "dec", "Decimal", 2 },
- { NULL, NULL, 0 }
- };
+ { &hf_artnet_diag_data_length,
+ { "Length",
+ "artnet.diag_data.length",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_artnet_diag_data_data,
+ { "Data",
+ "artnet.diag_data.data",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ /* ArtCommand */
+ { &hf_artnet_command,
+ { "ArtCommand packet",
+ "artnet.command",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Art-Net ArtCommand packet", HFILL }},
+
+ /* ArtMedia */
+ { &hf_artnet_media,
+ { "ArtMedia packet",
+ "artnet.media",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Art-Net ArtMedia packet", HFILL }},
+
+ /* ArtMediaPatch */
+ { &hf_artnet_media_patch,
+ { "ArtMediaPatch packet",
+ "artnet.media_patch",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Art-Net ArtMediaPatch packet", HFILL }},
+
+ /* ArtMediaControl */
+ { &hf_artnet_media_control,
+ { "ArtMediaControl packet",
+ "artnet.media_control",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Art-Net ArtMediaControl packet", HFILL }},
+
+ /* ArtMediaControlReply */
+ { &hf_artnet_media_control_reply,
+ { "ArtMediaControlReply packet",
+ "artnet.media_control_reply",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Art-Net ArtMediaControlReply packet", HFILL }},
+
+ /* ArtTimeCode */
+ { &hf_artnet_time_code,
+ { "ArtTimeCode packet",
+ "artnet.time_code",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Art-Net ArtTimeCode packet", HFILL }},
+
+ /* ArtTimeSync */
+ { &hf_artnet_time_sync,
+ { "ArtTimeSync packet",
+ "artnet.time_sync",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Art-Net ArtTimeSync packet", HFILL }},
+
+ /* ArtTrigger */
+ { &hf_artnet_trigger,
+ { "ArtTrigger packet",
+ "artnet.trigger",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Art-Net ArtTrigger packet", HFILL }},
+
+ /* ArtDirectory */
+ { &hf_artnet_directory,
+ { "ArtDirectory packet",
+ "artnet.directory",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Art-Net ArtDirectory packet", HFILL }},
+
+ { &hf_artnet_directory_filler,
+ { "Filler",
+ "artnet.directory.filler",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_artnet_directory_cmd,
+ { "Command",
+ "artnet.directory.cmd",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_artnet_directory_file,
+ { "File Nr.",
+ "artnet.directory.file",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ /* ArtDirectoryReply */
+ { &hf_artnet_directory_reply,
+ { "ArtDirectoryReply packet",
+ "artnet.directory_reply",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Art-Net ArtDirectoryReply packet", HFILL }},
+
+ { &hf_artnet_directory_reply_filler,
+ { "Filler",
+ "artnet.directory_reply.filler",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_artnet_directory_reply_flags,
+ { "Flags",
+ "artnet.directory_reply.flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_artnet_directory_reply_file,
+ { "File",
+ "artnet.directory_reply.file",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_artnet_directory_reply_name,
+ { "Name",
+ "artnet.directory_reply.name",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_artnet_directory_reply_desc,
+ { "Description",
+ "artnet.directory_reply.desc",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_artnet_directory_reply_length,
+ { "Lenght",
+ "artnet.directory_reply.length",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_artnet_directory_reply_data,
+ { "Data",
+ "artnet.directory_reply.data",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ /* ArtMacMaster */
+ { &hf_artnet_mac_master,
+ { "ArtMacMaster packet",
+ "artnet.mac_master",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Art-Net ArtMacMaster packet", HFILL }},
+
+ /* ArtMacSlave */
+ { &hf_artnet_mac_slave,
+ { "ArtMacSlave packet",
+ "artnet.mac_slave",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Art-Net ArtMacSlave packet", HFILL }},
+
+ /* ArtFileTnMaster */
+ { &hf_artnet_file_tn_master,
+ { "ArtFileTnMaster packet",
+ "artnet.file_tn_master",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Art-Net ArtFileTnMaster packet", HFILL }},
+
+ { &hf_artnet_file_tn_master_filler,
+ { "Filler",
+ "artnet.file_tn_master.filler",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_artnet_file_tn_master_type,
+ { "Type",
+ "artnet.file_tn_master.type",
+ FT_UINT8, BASE_HEX, VALS(artnet_file_type_vals), 0x0,
+ NULL, HFILL }},
+
+ { &hf_artnet_file_tn_master_block_id,
+ { "Block ID",
+ "artnet.file_tn_master.block_id",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_artnet_file_tn_master_length,
+ { "Length",
+ "artnet.file_tn_master.length",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_artnet_file_tn_master_name,
+ { "Name",
+ "artnet.file_tn_master.name",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_artnet_file_tn_master_checksum,
+ { "Checksum",
+ "artnet.file_tn_master.checksum",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_artnet_file_tn_master_spare,
+ { "Spare",
+ "artnet.file_tn_master.spare",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_artnet_file_tn_master_data,
+ { "Data",
+ "artnet.file_tn_master.data",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ /* ArtFileFnMaster */
+ { &hf_artnet_file_fn_master,
+ { "ArtFileFnMaster packet",
+ "artnet.file_fn_master",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Art-Net ArtFileFnMaster packet", HFILL }},
+
+ /* ArtFileFnReply */
+ { &hf_artnet_file_fn_reply,
+ { "ArtFileFnReply packet",
+ "artnet.file_fn_reply",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Art-Net ArtFileFnReply packet", HFILL }}
- static enum_val_t disp_chan_nr_types[] = {
- { "hex", "Hexadecimal", 0 },
- { "dec", "Decimal", 1 },
- { NULL, NULL, 0 }
};
- static enum_val_t col_count[] = {
- { "6", "6", 6 },
- { "10", "10", 10 },
- { "12", "12", 12 },
- { "16", "16", 16 },
- { "24", "24", 24 },
- { NULL, NULL, 0 }
+ static gint *ett[] = {
+ &ett_artnet,
};
proto_artnet = proto_register_protocol("Art-Net",
- "ARTNET","artnet");
+ "ARTNET","artnet");
proto_register_field_array(proto_artnet,hf,array_length(hf));
proto_register_subtree_array(ett,array_length(ett));
+}
+
+/* Heuristic dissector */
+static gboolean
+dissect_artnet_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ static const char artnet_packet_id[] = "Art-Net\0";
+
+ /* check if we atleast have the 8 byte header */
+ if (tvb_length(tvb) < sizeof(artnet_packet_id))
+ return FALSE;
- artnet_module = prefs_register_protocol(proto_artnet,
- proto_reg_handoff_artnet);
- prefs_register_uint_preference(artnet_module, "udp_port",
- "UDP Port",
- "The UDP port on which "
- "Art-Net "
- "packets will be sent",
- 10,&global_udp_port_artnet);
-
- prefs_register_enum_preference(artnet_module, "dmx_disp_chan_val_type",
- "DMX Display channel value type",
- "The way DMX values are displayed",
- &global_disp_chan_val_type,
- disp_chan_val_types, ENC_BIG_ENDIAN);
-
- prefs_register_enum_preference(artnet_module, "dmx_disp_chan_nr_type",
- "DMX Display channel nr. type",
- "The way DMX channel numbers are displayed",
- &global_disp_chan_nr_type,
- disp_chan_nr_types, ENC_BIG_ENDIAN);
-
- prefs_register_enum_preference(artnet_module, "dmx_disp_col_count",
- "DMX Display Column Count",
- "The number of columns for the DMX display",
- &global_disp_col_count,
- col_count, ENC_BIG_ENDIAN);
+ /* Check the 8 byte header */
+ if (tvb_memeql(tvb, 0, artnet_packet_id, sizeof(artnet_packet_id) - 1) != 0)
+ return FALSE;
+
+ /* if the header matches, dissect it */
+ dissect_artnet(tvb, pinfo, tree);
+
+ return TRUE;
}
+
/* The registration hand-off routing */
void
proto_reg_handoff_artnet(void) {
static gboolean artnet_initialized = FALSE;
static dissector_handle_t artnet_handle;
- static guint udp_port_artnet;
-
+
if(!artnet_initialized) {
- artnet_handle = create_dissector_handle(dissect_artnet,proto_artnet);
+ artnet_handle = create_dissector_handle(dissect_artnet,proto_artnet);
+ dissector_add_handle("udp.port", artnet_handle);
rdm_handle = find_dissector("rdm");
+ dmx_chan_handle = find_dissector("dmx-chan");
artnet_initialized = TRUE;
- } else {
- dissector_delete_uint("udp.port",udp_port_artnet,artnet_handle);
}
- udp_port_artnet = global_udp_port_artnet;
-
- dissector_add_uint("udp.port",global_udp_port_artnet,artnet_handle);
+ heur_dissector_add("udp", dissect_artnet_heur, proto_artnet);
}
diff --git a/epan/dissectors/packet-aruba-adp.c b/epan/dissectors/packet-aruba-adp.c
index 8a194be5b0..56bf4f4782 100644
--- a/epan/dissectors/packet-aruba-adp.c
+++ b/epan/dissectors/packet-aruba-adp.c
@@ -27,7 +27,6 @@
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
-#include <stdlib.h>
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-asap.c b/epan/dissectors/packet-asap.c
index 40ba7147f4..0f5d4314eb 100644
--- a/epan/dissectors/packet-asap.c
+++ b/epan/dissectors/packet-asap.c
@@ -187,7 +187,6 @@ dissect_error_cause(tvbuff_t *cause_tvb, proto_tree *parameter_tree)
message_tvb = tvb_new_subset_remaining(cause_tvb, CAUSE_INFO_OFFSET);
dissect_asap(message_tvb, NULL, cause_tree);
break;
- break;
case INVALID_VALUES:
parameter_tvb = tvb_new_subset_remaining(cause_tvb, CAUSE_INFO_OFFSET);
dissect_parameter(parameter_tvb, cause_tree);
diff --git a/epan/dissectors/packet-ascend.c b/epan/dissectors/packet-ascend.c
index b9d7e480ab..9c9266df81 100644
--- a/epan/dissectors/packet-ascend.c
+++ b/epan/dissectors/packet-ascend.c
@@ -50,9 +50,9 @@ static dissector_handle_t ppp_hdlc_handle;
static void
dissect_ascend(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *fh_tree;
- proto_item *ti, *hidden_item;
- union wtap_pseudo_header *pseudo_header = pinfo->pseudo_header;
+ proto_tree *fh_tree;
+ proto_item *ti, *hidden_item;
+ union wtap_pseudo_header *pseudo_header = pinfo->pseudo_header;
/* load the top pane info. This should be overwritten by
the next protocol in the stack */
@@ -77,24 +77,24 @@ dissect_ascend(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
layer (ie none) */
if(tree) {
ti = proto_tree_add_protocol_format(tree, proto_ascend, tvb, 0, 0,
- "Lucent/Ascend packet trace");
+ "Lucent/Ascend packet trace");
fh_tree = proto_item_add_subtree(ti, ett_raw);
proto_tree_add_uint(fh_tree, hf_link_type, tvb, 0, 0,
- pseudo_header->ascend.type);
+ pseudo_header->ascend.type);
if (pseudo_header->ascend.type == ASCEND_PFX_WDD) {
proto_tree_add_string(fh_tree, hf_called_number, tvb, 0, 0,
- pseudo_header->ascend.call_num);
+ pseudo_header->ascend.call_num);
proto_tree_add_uint(fh_tree, hf_chunk, tvb, 0, 0,
- pseudo_header->ascend.chunk);
+ pseudo_header->ascend.chunk);
hidden_item = proto_tree_add_uint(fh_tree, hf_session_id, tvb, 0, 0, 0);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
} else { /* It's wandsession data */
proto_tree_add_string(fh_tree, hf_user_name, tvb, 0, 0,
- pseudo_header->ascend.user);
+ pseudo_header->ascend.user);
proto_tree_add_uint(fh_tree, hf_session_id, tvb, 0, 0,
- pseudo_header->ascend.sess);
+ pseudo_header->ascend.sess);
hidden_item = proto_tree_add_uint(fh_tree, hf_chunk, tvb, 0, 0, 0);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
}
proto_tree_add_uint(fh_tree, hf_task, tvb, 0, 0, pseudo_header->ascend.task);
}
@@ -117,35 +117,35 @@ proto_register_ascend(void)
{
static hf_register_info hf[] = {
{ &hf_link_type,
- { "Link type", "ascend.type", FT_UINT32, BASE_DEC, VALS(encaps_vals), 0x0,
- NULL, HFILL }},
+ { "Link type", "ascend.type", FT_UINT32, BASE_DEC, VALS(encaps_vals), 0x0,
+ NULL, HFILL }},
{ &hf_session_id,
- { "Session ID", "ascend.sess", FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Session ID", "ascend.sess", FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_called_number,
- { "Called number", "ascend.number", FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Called number", "ascend.number", FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_chunk,
- { "WDD Chunk", "ascend.chunk", FT_UINT32, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "WDD Chunk", "ascend.chunk", FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_task,
- { "Task", "ascend.task", FT_UINT32, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Task", "ascend.task", FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_user_name,
- { "User name", "ascend.user", FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "User name", "ascend.user", FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
};
static gint *ett[] = {
&ett_raw,
};
proto_ascend = proto_register_protocol("Lucent/Ascend debug output",
- "Lucent/Ascend", "ascend");
+ "Lucent/Ascend", "ascend");
proto_register_field_array(proto_ascend, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
}
diff --git a/epan/dissectors/packet-asf.c b/epan/dissectors/packet-asf.c
index 93a8421a15..ee9dff1b6b 100644
--- a/epan/dissectors/packet-asf.c
+++ b/epan/dissectors/packet-asf.c
@@ -33,6 +33,7 @@
#include <glib.h>
#include <epan/packet.h>
+#include <epan/expert.h>
#include <epan/sminmpec.h>
/*
@@ -136,12 +137,12 @@ static const value_string asf_integrity_type_vals[] = {
{ 0x00, NULL }
};
-static void dissect_asf_open_session_request(tvbuff_t *tvb, proto_tree *tree,
- gint offset, gint len);
-static void dissect_asf_open_session_response(tvbuff_t *tvb, proto_tree *tree,
- gint offset, gint len);
-static void dissect_asf_payloads(tvbuff_t *tvb, proto_tree *tree,
- gint offset, gint len);
+static void dissect_asf_open_session_request(tvbuff_t *tvb, packet_info *pinfo,
+ proto_tree *tree, gint offset, gint len);
+static void dissect_asf_open_session_response(tvbuff_t *tvb, packet_info *pinfo,
+ proto_tree *tree, gint offset, gint len);
+static void dissect_asf_payloads(tvbuff_t *tvb, packet_info *pinfo,
+ proto_tree *tree, gint offset, gint len);
static void dissect_asf_payload_authentication(tvbuff_t *tvb, proto_tree *tree,
gint offset, gint len);
static void dissect_asf_payload_integrity(tvbuff_t *tvb, proto_tree *tree,
@@ -178,10 +179,10 @@ dissect_asf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (len) {
switch(type) {
case ASF_TYPE_OPEN_SESS_RQST:
- dissect_asf_open_session_request(tvb, asf_tree, 8, len);
+ dissect_asf_open_session_request(tvb, pinfo, asf_tree, 8, len);
break;
case ASF_TYPE_OPEN_SESS_RESP:
- dissect_asf_open_session_response(tvb, asf_tree, 8, len);
+ dissect_asf_open_session_response(tvb, pinfo, asf_tree, 8, len);
break;
/* TODO: Add the rest as captures become available to test. */
@@ -196,29 +197,29 @@ dissect_asf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
static void
-dissect_asf_open_session_request(tvbuff_t *tvb, proto_tree *tree,
- gint offset, gint len)
+dissect_asf_open_session_request(tvbuff_t *tvb, packet_info *pinfo,
+ proto_tree *tree, gint offset, gint len)
{
proto_tree_add_item(tree, hf_asf_mgt_console_id, tvb, offset, 4,ENC_BIG_ENDIAN);
offset += 4;
len -= 4;
- dissect_asf_payloads(tvb, tree, offset, len);
+ dissect_asf_payloads(tvb, pinfo, tree, offset, len);
}
static void
-dissect_asf_open_session_response(tvbuff_t *tvb, proto_tree *tree,
- gint offset, gint len)
+dissect_asf_open_session_response(tvbuff_t *tvb, packet_info *pinfo,
+ proto_tree *tree, gint offset, gint len)
{
proto_tree_add_item(tree, hf_asf_rssp_status_code, tvb, offset, 1,ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_asf_mgt_console_id, tvb, offset + 4, 4,ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_asf_client_id, tvb, offset + 8, 4,ENC_BIG_ENDIAN);
offset += 12;
len -= 12;
- dissect_asf_payloads(tvb, tree, offset, len);
+ dissect_asf_payloads(tvb, pinfo, tree, offset, len);
}
static void
-dissect_asf_payloads(tvbuff_t *tvb, proto_tree *tree,
+dissect_asf_payloads(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
gint offset, gint len)
{
guint8 ptype;
@@ -236,7 +237,14 @@ dissect_asf_payloads(tvbuff_t *tvb, proto_tree *tree,
val_to_str(ptype, asf_payload_type_vals, "Unknown (%u)"), plen);
ptree = proto_item_add_subtree(ti, ett_asf_payload);
proto_tree_add_item(ptree, hf_asf_payload_type, tvb, offset, 1,ENC_BIG_ENDIAN);
- proto_tree_add_item(ptree, hf_asf_payload_len, tvb, offset + 2, 2,ENC_BIG_ENDIAN);
+ ti = proto_tree_add_item(ptree, hf_asf_payload_len, tvb, offset + 2, 2,ENC_BIG_ENDIAN);
+ if (plen < 4)
+ {
+ expert_add_info_format(pinfo, ti, PI_MALFORMED,
+ PI_ERROR,
+ "Payload length too short to include the type and length");
+ break;
+ }
if ( ptype && (plen > 4) )
{
switch ( ptype )
diff --git a/epan/dissectors/packet-assa_r3.c b/epan/dissectors/packet-assa_r3.c
index 4abed8ed3e..30d0c53e7f 100644
--- a/epan/dissectors/packet-assa_r3.c
+++ b/epan/dissectors/packet-assa_r3.c
@@ -28,11 +28,966 @@
#endif
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/expert.h>
#include <epan/dissectors/packet-tcp.h>
-#include "packet-assa_r3_public.h"
+/* */
+/* System limits */
+/* */
+#define MAX_USERS 2400
+#define MAX_TIMEZONES 32
+#define MAX_EXCEPTIONS 64
+#define MAX_EXCEPTIONGROUPS 64
+#define MAX_EVENTENTRIES 10000
+#define MAX_DECLINEDENTRIES 500
+#define MAX_ALARMENTRIES 200
+
+/*
+ * Enumerations
+ */
+typedef enum
+{
+ ACCESSMODE_NONE = 0, /* 0 - No access mode (not used, not legal, I think) */
+ ACCESSMODE_PRIMARYONLY, /* 1 - Primary only */
+ ACCESSMODE_PRIMARYORAUX, /* 2 - Primary or aux field */
+ ACCESSMODE_PRIMARYANDAUX, /* 3 - Primary and aux field */
+ ACCESSMODE_PRIMARYTHENAUX, /* 4 - Primary required first, then aux */
+ ACCESSMODE_LAST /* 5 - Dummy, for range checking */
+}
+accessMode_e;
+
+typedef enum
+{
+ ADDUSERPARAMTYPE_DISPOSITION = 0, /* 0 - What we're supposed to do (add, delete, etc) */
+ ADDUSERPARAMTYPE_USERNO, /* 1 - User to manage (user number, U16) */
+ ADDUSERPARAMTYPE_ACCESSALWAYS, /* 2 - Access always (boolean) */
+ ADDUSERPARAMTYPE_ACCESSMODE, /* 3 - Access type (accessMode_e) */
+ ADDUSERPARAMTYPE_CACHED, /* 4 - Entry is managed by cache system (boolean) */
+ ADDUSERPARAMTYPE_USERTYPE, /* 5 - User type (userType_e) */
+ ADDUSERPARAMTYPE_PRIMARYFIELD, /* 6 - Primary field (MAX_CREDENTIALBYTES) */
+ ADDUSERPARAMTYPE_PRIMARYFIELDTYPE, /* 7 - Primary field type (fieldType_e); */
+ ADDUSERPARAMTYPE_AUXFIELD, /* 8 - Auxiliary field (MAX_CREDENTIALBYTES) */
+ ADDUSERPARAMTYPE_AUXFIELDTYPE, /* 9 - Auxiliary field type (fieldType_e) */
+ ADDUSERPARAMTYPE_TIMEZONE, /* 10 - Timezone bitmap (U32) */
+ ADDUSERPARAMTYPE_EXPIREON, /* 11 - Date on which user no longer granted access, if non-0 */
+ ADDUSERPARAMTYPE_USECOUNT, /* 12 - Use count */
+ ADDUSERPARAMTYPE_EXCEPTIONGROUP, /* 13 - Exception group */
+ ADDUSERPARAMTYPE_LAST
+}
+addUserParamType_e;
+
+typedef enum
+{
+ ALARMID_NONE = 0, /* 0 - No alarm */
+ ALARMID_VALIDIN, /* 1 - Valid entry */
+ ALARMID_DENIEDACCESS, /* 2 - Denied access (bad credential) */
+ ALARMID_SECURED, /* 3 - Door closed & secured (only seen after alarms 3 or 4) */
+ ALARMID_DOORFORCED, /* 4 - Door forced */
+ ALARMID_KEYOVERRIDE, /* 5 - Key override */
+ ALARMID_INVALIDENTRY, /* 6 - Door open but invalid entry (key used?) */
+ ALARMID_DOORAJAR, /* 7 - Door ajar (needs .ja woman with Engrish accent) */
+ ALARMID_LOWBATTERY, /* 8 - Low battery alarm */
+ ALARMID_RXHELD, /* 9 - RX held */
+ ALARMID_LAST
+}
+alarmID_e;
+
+typedef enum
+{
+ CAPABILITIES_USERS = 0, /* 0 - Number of users supported */
+ CAPABILITIES_TIMEZONES, /* 1 - Number of timezone supported */
+ CAPABILITIES_EXCEPTIONS, /* 2 - Number of exceptions supported */
+ CAPABILITIES_EXCEPTIONGROUPS, /* 3 - Number of exception groups supported */
+ CAPABILITIES_EVENTLOG, /* 4 - Number of event log entries supported */
+ CAPABILITIES_DECLINEDLOG, /* 5 - Number of declined log entries supported */
+ CAPABILITIES_ALARMLOG, /* 6 - Number of alarm log entries supported */
+ CAPABILITIES_TOTALEVENTS, /* 7 - Total events (EVENT_LAST - 1) */
+ CAPABILITIES_LAST
+}
+capabilities_e;
+
+typedef enum
+{
+ CHECKSUMRESULT_CONFIGURATIONNVRAM = 0, /* 0 - Checksum results of the configuration NVRAM */
+ CHECKSUMRESULT_EXCEPTIONS, /* 1 - Checksum results of the exceptions NVRAM */
+ CHECKSUMRESULT_EXCEPTIONGROUPS, /* 2 - Checksum results of the exception groups NVRAM */
+ CHECKSUMRESULT_TZCALENDARS, /* 3 - Checksum results of the time zone calendar NVRAM */
+ CHECKSUMRESULT_TIMEZONES, /* 4 - Checksum results of the time zone NVRAM */
+ CHECKSUMRESULT_USERS, /* 5 - Checksum results of the users NVRAM */
+ CHECKSUMRESULT_CACHELRU, /* 6 - Checksum results of the cache LRU */
+ CHECKSUMRESULT_LAST
+}
+checksumResult_e;
+
+typedef enum
+{
+ CMD_RESPONSE = 0, /* 0 - Response to command */
+ CMD_HANDSHAKE, /* 1 - Establish session */
+ CMD_KILLSESSION, /* 2 - Kill session */
+ CMD_QUERYSERIALNUMBER, /* 3 - Query serial number */
+ CMD_QUERYVERSION, /* 4 - Query version */
+ CMD_SETDATETIME, /* 5 - Set date and time */
+ CMD_QUERYDATETIME, /* 6 - Query date and time */
+ CMD_SETCONFIG, /* 7 - Set configuration options */
+ CMD_GETCONFIG, /* 8 - Read configuration options */
+ CMD_MANAGEUSER, /* 9 - Manage users (add/delete/replace/update) */
+ CMD_DELETEUSERS, /* 10 - Delete users (all/most/cached) */
+ CMD_DEFINEEXCEPTION, /* 11 - Define exception (old block holiday) */
+ CMD_DEFINEEXCEPTIONGROUP, /* 12 - Define exception group */
+ CMD_DEFINECALENDAR, /* 13 - Define calendar */
+ CMD_DEFINETIMEZONE, /* 14 - Define time zone */
+ CMD_RMTAUTHRETRY, /* 15 - Remote authorization retry */
+ CMD_FILTERS, /* 16 - Event log filter configuration */
+ CMD_ALARMCONFIGURE, /* 17 - Alarm condition configuration */
+ CMD_EVENTLOGDUMP, /* 18 - Dump event log */
+ CMD_DECLINEDLOGDUMP, /* 19 - Dump declined log */
+ CMD_ALARMLOGDUMP, /* 20 - Dump alarm log */
+ CMD_DOWNLOADFIRMWARE, /* 21 - Download firmware */
+ CMD_DOWNLOADFIRMWARETIMEOUT, /* 22 - Download firmware timeout (internal command only) */
+ CMD_POWERTABLESELECTION, /* 23 - Power table selection */
+ CMD_CLEARNVRAM, /* 24 - Clear nvram (config/event log/declined log/etc) */
+ CMD_DPAC, /* 25 - DPAC manipulation commands */
+ CMD_SELFTEST, /* 26 - Selftest (heh) */
+ CMD_RESET, /* 27 - Restart controller */
+ CMD_LOGWRITE, /* 28 - Write event to event log */
+ CMD_MFGCOMMAND, /* 29 - Manufacturing commands */
+ CMD_NVRAMBACKUP, /* 30 - Backup/restore/erase NVRAM */
+ CMD_EXTENDEDRESPONSE, /* 31 - Response to command (extended version) */
+ CMD_LAST
+}
+cmdCommand_e;
+
+typedef enum
+{
+ CMDMFG_SETSERIALNUMBER = 0, /* 0 - Set serial number */
+ CMDMFG_SETCRYPTKEY, /* 1 - Set encryption key */
+ CMDMFG_DUMPNVRAM, /* 2 - Dump NVRAM */
+ CMDMFG_TERMINAL, /* 3 - DPAC terminal mode */
+ CMDMFG_REMOTEUNLOCK, /* 4 - Remote unlock (only on 'd' builds) */
+ CMDMFG_AUXCTLRVERSION, /* 5 - Request version of auxiliary controller */
+ CMDMFG_IOPINS, /* 6 - Read I/O pin states */
+ CMDMFG_ADCS, /* 7 - Read ADC values */
+ CMDMFG_HARDWAREID, /* 8 - Read hardware ID and CPU ID */
+ CMDMFG_CHECKPOINTLOGDUMP, /* 9 - Dump checkpoint log */
+ CMDMFG_CHECKPOINTLOGCLEAR, /* 10 - Clear checkpoint log */
+ CMDMFG_READREGISTERS, /* 11 - Read selected CPU registers */
+ CMDMFG_FORCEOPTIONS, /* 12 - Force I/O lines to certain states */
+ CMDMFG_COMMUSER, /* 13 - Fake a comm user entry */
+ CMDMFG_DUMPKEYPAD, /* 14 - Dump keypad debugging buffer */
+ CMDMFG_BATTERYCHECK, /* 15 - Force battery check */
+ CMDMFG_RAMREFRESH, /* 16 - Refresh RAM variables from NVRAM */
+ CMDMFG_TASKFLAGS, /* 17 - Dump task flags */
+ CMDMFG_TIMERCHAIN, /* 18 - Dump active timer chains */
+ CMDMFG_PEEKPOKE, /* 19 - Peek/poke CPU RAM memory */
+ CMDMFG_LOCKSTATE, /* 20 - Display global gLockState variable */
+ CMDMFG_CAPABILITIES, /* 21 - Read firmware capabilities (# users/event log entries, etc) */
+ CMDMFG_DUMPM41T81, /* 22 - Dump M41T81 RTC registers */
+ CMDMFG_DEBUGLOGDUMP, /* 23 - Dump debugging log */
+ CMDMFG_DEBUGLOGCLEAR, /* 24 - Clear debugging log */
+ CMDMFG_TESTWDT, /* 25 - Test watchdog */
+ CMDMFG_QUERYCKSUM, /* 26 - Query NVRAM checksum value */
+ CMDMFG_VALIDATECHECKSUMS, /* 27 - Validate checksums */
+ CMDMFG_REBUILDLRUCACHE, /* 28 - Rebuild LRC cache */
+ CMDMFG_TZUPDATE, /* 29 - Send TZCHANGE to tod.c */
+ CMDMFG_TESTPRESERVE, /* 30 - Test preserve save/restore code */
+ CMDMFG_MORTISESTATELOGDUMP, /* 31 - Dump the mortise state log */
+ CMDMFG_MORTISESTATELOGCLEAR, /* 32 - Clear the mortise state log */
+ CMDMFG_MORTISEPINS, /* 33 - Display current mortise pin status */
+ CMDMFG_HALTANDCATCHFIRE, /* 34 - Stop processor (optionally catch fire) */
+ CMDMFG_LAST
+}
+cmdMfgCommand_e;
+
+typedef enum
+{
+ CONFIGITEM_SERIAL_NUMBER = 0, /* 0 - Ye olde serial number */
+ CONFIGITEM_CRYPT_KEY, /* 1 - The encryption/decryption key */
+ CONFIGITEM_HARDWARE_OPTIONS_MFG, /* 2 - Bit map of hardware options at manufacturing time (hardwareOptions_e) */
+ CONFIGITEM_HARDWARE_OPTIONS, /* 3 - Bit map of hardware options at runtime time (hardwareOptions_e) */
+ CONFIGITEM_NVRAM_CHANGES, /* 4 - Log of NVRAM changes since reset (which blocks were reset) */
+
+ CONFIGITEM_NVRAMDIRTY, /* 5 - NVRAM is (or might be) dirty */
+ CONFIGITEM_NVRAM_WV, /* 6 - NVRAM write verify (I2C parts only) */
+ CONFIGITEM_ENABLE_WDT, /* 7 - If true, and OPT_WATCHDOG enabled, enables WDT */
+ CONFIGITEM_EARLY_ACK, /* 8 - Generates early RESPONSE_COMMANDRECEIVED message for commands that take some time */
+ CONFIGITEM_CONSOLE_AES_ONLY, /* 9 - If set, requires AES encryption on serial communications */
+ CONFIGITEM_RADIO_AES_ONLY, /* 10 - If set, requires AES encryption on radio communications */
+ CONFIGITEM_NDRLE, /* 11 - RLE (Run Length Encoding) NVRAM dump enable/disable */
+ CONFIGITEM_SOMF, /* 12 - Stop on mortise failure */
+ CONFIGITEM_NOGAF, /* 13 - Prevents what should be fatal errors from being fatal (i.e, No One Gives A Flip) */
+ CONFIGITEM_CARD_READER_POWER, /* 14 - External mag reader power supply control */
+ CONFIGITEM_PROX_ENABLE, /* 15 - Prox into permanent sleep mode */
+ CONFIGITEM_CKSUMCONFIG, /* 16 - Configuration NVRAM checksum enable/disable */
+ CONFIGITEM_DAILY_BATTERY_CHECK, /* 17 - Enable/disable daily battery check */
+ CONFIGITEM_DAILY_BATTERY_CHECK_HOUR, /* 18 - If daily battery check enabled, top of the hour to check at */
+ CONFIGITEM_BATTERY_LOW, /* 19 - Return low battery status (TRUE = low) */
+
+ CONFIGITEM_LRU_HEAD, /* 20 - Cache LRU head pointer */
+ CONFIGITEM_LRU_TAIL, /* 21 - Cache LRU tail pointer */
+ CONFIGITEM_RTC_CALIBRATION, /* 22 - Signed 6 bit value written to M41T81 calibration register */
+ CONFIGITEM_ACVREQUESTER, /* 23 - Auxiliary controller version requester (fromDevice_e, internal variable) */
+ CONFIGITEM_LOCAL_LED, /* 24 - Local LED function assignment */
+
+ CONFIGITEM_ERRCNT_XORLEN, /* 25 - Error counter for XOR length not matching in protocol.c */
+ CONFIGITEM_ERRCNT_CRC, /* 26 - Error counter for bad CRC in protocol.c */
+ CONFIGITEM_ERRCNT_NOTSIGIL, /* 27 - Error counter for character received was not sigil in protocol.c */
+ CONFIGITEM_ERRCNT_TIMEOUT, /* 28 - Error counter for timeout in protocol.c */
+ CONFIGITEM_ERRCNT_TOOLONG, /* 29 - Error counter for packet too long in protocol.c */
+ CONFIGITEM_ERRCNT_TOOSHORT, /* 30 - Error counter for packet too short in protocol.c */
+ CONFIGITEM_ERRCNT_HITDEFAULT, /* 31 - Error counter for hitting default handler in protocol.c */
+ CONFIGITEM_ERRCNT_OVERRUN, /* 32 - Error counter for serial buffer overrun in serial.c */
+ CONFIGITEM_ERRCNT_UARTFE, /* 33 - Error counter for UART framing error in serial.c */
+ CONFIGITEM_ERRCNT_UARTOE, /* 34 - Error counter for UART overrun error in serial.c */
+
+ CONFIGITEM_DST_SET, /* 35 - Daylight savings time currently active */
+ CONFIGITEM_DST_MODE, /* 36 - Determines if repeating month/date, repeating month/day, or specific month/date (dstMode_e) */
+ CONFIGITEM_DST_FORWARD_MONTH, /* 37 - Month to skip forward on (1-12) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
+ CONFIGITEM_DST_FORWARD_DOM, /* 38 - Day of month to skip forward on (1-31) (DSTMODE_REPEATINGDATE, DSTMODE_ONETIMEDATE) */
+ CONFIGITEM_DST_FORWARD_OOD, /* 39 - Occurence number of CONFIGITEM_DST_FORWARD_DOW to skip forward on (1-5) (DSTMODE_REPEATINGDOW) */
+ CONFIGITEM_DST_FORWARD_DOW, /* 40 - Day of week to skip forward on (1-7) (DSTMODE_REPEATINGDOW) */
+ CONFIGITEM_DST_FORWARD_HOUR, /* 41 - Hour of day of month to skip forward on (0-23) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
+ CONFIGITEM_DST_FORWARD_MINUTE, /* 42 - Hour of day of month to skip forward on (0-23) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
+ CONFIGITEM_DST_FORWARD_ADJUST, /* 43 - Number of minutes to move forward */
+ CONFIGITEM_DST_BACK_MONTH, /* 44 - Month to fall back on (1-12) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDAY, DSTMODE_ONETIMEDATE) */
+ CONFIGITEM_DST_BACK_DOM, /* 45 - Day of month to fall back on (1-31) (DSTMODE_REPEATINGDATE, DSTMODE_ONETIMEDATE) */
+ CONFIGITEM_DST_BACK_OOD, /* 46 - Occurence number of CONFIGITEM_DST_BACK_DOW to fall back on (1-5) (DSTMODE_REPEATINGDOW) */
+ CONFIGITEM_DST_BACK_DOW, /* 47 - Day of week to fall back on (1-7) (DSTMODE_REPEATINGDATE, DSTMODE_ONETIMEDATE) */
+ CONFIGITEM_DST_BACK_HOUR, /* 48 - Hour of day of month to fall back on (0-23) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
+ CONFIGITEM_DST_BACK_MINUTE, /* 49 - Hour of day of month to fall back on (0-23) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
+ CONFIGITEM_DST_BACK_ADJUST, /* 50 - Number of minutes to move backwards */
+
+ CONFIGITEM_EVENTLOG_ZEROMEM, /* 51 - If set, event log memory is zeroed when event log cleared */
+ CONFIGITEM_EVENTLOG_BEGIN, /* 52 - Beginning record number when event log cleared */
+ CONFIGITEM_EVENTLOG_RECORD, /* 53 - Next event log record to write */
+ CONFIGITEM_EVENTLOG_ENTRIES, /* 54 - Number of entries in event log */
+ CONFIGITEM_EVENTLOG_WARNDEVICE, /* 55 - Event log warning device */
+ CONFIGITEM_EVENTLOG_WARNEVERY, /* 56 - Warn at every 'n' records (more or less) */
+ CONFIGITEM_EVENTLOG_RMTDEVICE, /* 57 - Device event log entries copied to (fromDevice_e) */
+
+ CONFIGITEM_DECLINEDLOG_ZEROMEM, /* 58 - If set, declined log memory is zeroed when declined log cleared */
+ CONFIGITEM_DECLINEDLOG_BEGIN, /* 59 - Beginning record number when declined log cleared */
+ CONFIGITEM_DECLINEDLOG_RECORD, /* 60 - Next declined log record to write */
+ CONFIGITEM_DECLINEDLOG_ENTRIES, /* 61 - Number of entries in declined log */
+ CONFIGITEM_DECLINEDLOG_WARNDEVICE, /* 62 - Declined record warning device */
+ CONFIGITEM_DECLINEDLOG_WARNEVERY, /* 63 - Warn at every 'n' records (more or less) */
+ CONFIGITEM_DECLINEDLOG_RMTDEVICE, /* 64 - Device declined entries copied to (fromDevice_e) */
+
+ CONFIGITEM_ALARMLOG_ZEROMEM, /* 65 - If set, alarm log memory is zeroed when alarm log cleared */
+ CONFIGITEM_ALARMLOG_BEGIN, /* 66 - Beginning record number when alarm log cleared */
+ CONFIGITEM_ALARMLOG_RECORD, /* 67 - Next alarm log record to write */
+ CONFIGITEM_ALARMLOG_ENTRIES, /* 68 - Number of entries in alarm log */
+ CONFIGITEM_ALARMLOG_WARNDEVICE, /* 69 - Alarm record warning device */
+ CONFIGITEM_ALARMLOG_WARNEVERY, /* 70 - Warn at every 'n' records (more or less) */
+ CONFIGITEM_ALARMLOG_RMTDEVICE, /* 71 - Device alarm entries copied to (fromDevice_e) */
+
+ CONFIGITEM_VISIBLE_FEEDBACK, /* 72 - Visible feedback on keypad presses enabled */
+ CONFIGITEM_AUDIBLE_FEEDBACK, /* 73 - Audible feedback on keypad presses enabled */
+ CONFIGITEM_VISIBLE_INDICATORS, /* 74 - Visible indicators on all actions (run dark) */
+ CONFIGITEM_AUDIBLE_INDICATORS, /* 75 - Audible indicators on all actions (run silent) */
+ CONFIGITEM_2NDPINDURATION, /* 76 - Number of seconds to wait for second PIN */
+ CONFIGITEM_LOCKOUT_ATTEMPTS, /* 77 - Number of pin/prox/magcard attempts before lockout */
+ CONFIGITEM_LOCKOUT_DURATION, /* 78 - Duration of lockout, in penta-seconds */
+ CONFIGITEM_KEYPAD_INACTIVITY, /* 79 - Duration in seconds with no key entries before key buffer cleared */
+ CONFIGITEM_ICIDLE_DURATION, /* 80 - If last credential was invalid, invalid attempt counter reset after this many seconds */
+ CONFIGITEM_WRITE_DECLINED_LOG, /* 81 - Declined log writing enable/disable */
+ CONFIGITEM_LOW_BATTERY_INDICATOR, /* 82 - Low battery audio/visual indicator enable/disable */
+
+ CONFIGITEM_PANIC_MODE, /* 83 - Enable/disable panic mode */
+
+ CONFIGITEM_TIMEZONE_ENABLE, /* 84 - Timezones enabled (applies to users, not passage modes) */
+ CONFIGITEM_EXCEPTION_ENABLE, /* 85 - Exceptions enabled (applies to users and passage modes) */
+ CONFIGITEM_AUTOUNLOCK_ENABLE, /* 86 - Auto-unlocking (schedule based) enabled */
+
+ CONFIGITEM_LOCK_PRIORITY_EMERGENCY, /* 87 - DPAC/PWM lock priority for emergency users (lockPriority_e) */
+ CONFIGITEM_LOCK_PRIORITY_SUPERVISOR, /* 88 - DPAC/PWM lock priority for supervisors (lockPriority_e) */
+ CONFIGITEM_LOCK_PRIORITY_USER, /* 89 - DPAC/PWM lock priority for users (lockPriority_e) */
+ CONFIGITEM_LOCK_PRIORITY_PASSAGE, /* 90 - DPAC/PWM lock priority for passage mode (lockPriority_e) */
+ CONFIGITEM_LOCK_PRIORITY_PANIC, /* 91 - DPAC/PWM lock priority for panic mode/panic users (lockPriority_e) */
+ CONFIGITEM_LOCK_PRIORITY_LOCKOUT, /* 92 - DPAC/PWM lock priority for remote unlock (lockPriority_e) */
+ CONFIGITEM_LOCK_PRIORITY_RELOCK, /* 93 - DPAC/PWM lock priority for remote unlock (lockPriority_e) */
+ CONFIGITEM_LOCK_PRIORITY_BOLTTHROWN, /* 94 - DPAC/PWM lock priority for bolt thrown (lockPriority_e) */
+ CONFIGITEM_LOCK_PRIORITY_CONFIGCHANGE, /* 95 - DPAC/PWM lock priority for configuration change (CONFIGITEM_LOCK_TYPE) (lockPriority_e) */
+ CONFIGITEM_LOCK_PRIORITY_REMOTE, /* 96 - DPAC/PWM lock priority for remote unlock (lockPriority_e) */
+ CONFIGITEM_LOCK_TYPE, /* 97 - Type of lock (PWM, electric, magnetic) */
+ CONFIGITEM_DOUBLE_PULSE, /* 98 - Lock double pulse enabled */
+ CONFIGITEM_DOUBLE_DELAY, /* 99 - Delay between double pulses, in centiseconds */
+ CONFIGITEM_MOTOR_DURATION, /* 100 - Duration lock motor to run, in centiseconds */
+ CONFIGITEM_MORTISE_TYPE, /* 101 - Type of mortise connected to controller */
+ CONFIGITEM_UNLOCK_TIME, /* 102 - Normal unlock duration in seconds */
+ CONFIGITEM_EXT_UNLOCK_TIME, /* 103 - Extended unlock duration, in seconds */
+ CONFIGITEM_DOOR_AJAR_TIME, /* 104 - Time before door considered stuck open, in seconds */
+
+ CONFIGITEM_SESSION_TIMEOUT, /* 105 - Session timeout, in seconds */
+ CONFIGITEM_RETRY_ON_TIMEOUT, /* 106 - Retry lock-initiated sessions if comm session timed out (instead of terminated by remote end) */
+
+ CONFIGITEM_UNSOLICITED_ENCRYPT, /* 107 - Unsolicited messages are encrypted (encryptionScheme_e) */
+ CONFIGITEM_RMT_AUTH_TIMEOUT, /* 108 - Seconds to wait for remote authorization timeout (0 = no remote auth) */
+ CONFIGITEM_RMT_AUTH_DEVICE, /* 109 - Device remote authorization requests sent over (fromDevice_e) */
+ CONFIGITEM_ALARM_DEVICE, /* 110 - Device alarm condition connects via */
+ CONFIGITEM_NOTIFY_DEVICE, /* 111 - Notify user device */
+ CONFIGITEM_COMMUSER_DEVICE, /* 112 - Device comm user connects via */
+ CONFIGITEM_SCHEDULER_DEVICE, /* 113 - Device scheduler connects via */
+
+ CONFIGITEM_SCHEDULER_TYPE, /* 114 - Scheduling algorithm to use (schedulerType_e) */
+ CONFIGITEM_SCHEDULER_AWAKE, /* 115 - Number of decaseconds scheduler is awake for */
+ CONFIGITEM_SCHEDULER_PERIOD, /* 116 - Interval in minutes between scheduled wakeups (SCHEDULERTYPE_SIMPLE) */
+ CONFIGITEM_SCHEDULER_HOD, /* 117 - Hour of day map (SCHEDULERTYPE_HOD) */
+ CONFIGITEM_SCHEDULER_DOW, /* 118 - Day of month map (SCHEDULERTYPE_DOW) */
+ CONFIGITEM_SCHEDULER_DOM, /* 119 - Day of month map (SCHEDULERTYPE_DOM) */
+ CONFIGITEM_SCHEDULER_HM1, /* 120 - On at hour:minute #1 */
+ CONFIGITEM_SCHEDULER_HM2, /* 121 - On at hour:minute #2 */
+ CONFIGITEM_SCHEDULER_HM3, /* 122 - On at hour:minute #3 */
+ CONFIGITEM_SCHEDULER_HM4, /* 123 - On at hour:minute #4 */
+
+ CONFIGITEM_RADIO_TYPE, /* 124 - Radio type (None, DPAC, WiPort, etc) */
+ CONFIGITEM_RADIO_MODE, /* 125 - Radio mode (DPAC=active/passive) */
+ CONFIGITEM_RADIO_TIMEOUT, /* 126 - Number of seconds before we decide server didn't hear us (only in RADIOMODE_LOCKINITIATED) */
+ CONFIGITEM_RADIO_ATTEMPTS, /* 127 - Number of times to attempt connection to server (only in RADIOMODE_LOCKINITIATED) */
+ CONFIGITEM_RADIO_HOUSEKEEPING, /* 128 - Time we allow for radio housekeeping (associate with AP, etc) */
+ CONFIGITEM_RADIO_LEAPUSERNAME, /* 129 - LEAP username */
+ CONFIGITEM_RADIO_LEAPPASSWORD, /* 130 - LEAP password */
+
+ CONFIGITEM_INHIBIT_VOLTAGE, /* 131 - Voltage when battery is considered dead */
+ CONFIGITEM_LOW_VOLTAGE, /* 132 - Voltage when battery is considered low */
+ CONFIGITEM_PT_RANGE_1, /* 133 - Power table for 0.00 to 5.99 volts */
+ CONFIGITEM_PT_RANGE_2, /* 134 - Power table for 6.00 to 6.49 volts */
+ CONFIGITEM_PT_RANGE_3, /* 135 - Power table for 6.50 to 6.99 volts */
+ CONFIGITEM_PT_RANGE_4, /* 136 - Power table for 7.00 to 7.49 volts */
+ CONFIGITEM_PT_RANGE_5, /* 137 - Power table for 7.50 to 7.99 volts */
+ CONFIGITEM_PT_RANGE_6, /* 138 - Power table for 8.00 to 8.49 volts */
+ CONFIGITEM_PT_RANGE_7, /* 139 - Power table for 8.50 to 8.99 volts */
+ CONFIGITEM_PT_RANGE_8, /* 140 - Power table for 9.00 and up volts */
+
+ CONFIGITEM_MAGCARD_IFS, /* 141 - Include field separator character in returned data */
+ CONFIGITEM_MAGCARD_FIELDS, /* 142 - Mag card fields to include */
+ CONFIGITEM_MAGCARD_OFFSET, /* 143 - Offset into concatenated field */
+ CONFIGITEM_MAGCARD_DIGITS, /* 144 - Number of digits to return past offset */
+
+ CONFIGITEM_ALARMS, /* 145 - Alarms (not writable) */
+ CONFIGITEM_FILTERS, /* 146 - Event filter storage (not writable) */
+ CONFIGITEM_ALARMSTATE, /* 147 - Current alarm state (alarmID_e) */
+ CONFIGITEM_DOORSTATE, /* 148 - Current door state (doorState_e) */
+
+ CONFIGITEM_DPACDEBUG, /* 149 - Enable DPAC debug events to event log */
+ CONFIGITEM_FAILOPENSECURE, /* 150 - Fail open (false) or secure (true) on battery dead */
+
+ CONFIGITEM_REPLACED_VOLTAGE, /* 151 - If battery above this voltage, it's been replaced */
+
+ CONFIGITEM_RX_HELD_TIME, /* 152 - If RX held longer than this, sent RX held alarm */
+ CONFIGITEM_PACKET_TIMEOUT, /* 153 - Time (in seconds) that a complete packet must arrive in */
+
+ CONFIGITEM_EXTENDEDRESPONSE, /* 154 - Enables extended response (which includes original sequence number) */
+ CONFIGITEM_PASSAGEMODEINDICATOR, /* 155 - When lock in passage mode, LEDs show denied if set, granted if cleared (Squish #1133) */
+
+ CONFIGITEM_PFMRETURNTIME, /* 156 - Number of seconds power must be present to exit power fail death loop */
+
+ CONFIGITEM_LAST, /* Must be last item defined (All non-virtual items added above) */
+
+ CONFIGITEM_MAGIC_FIRST = 239, /* Next item is first magic command */
+ CONFIGITEM_MAGIC_USERFIELD, /* 240 - Virtual command to delete PIN '8989', add user '8989' */
+ CONFIGITEM_MAGIC_USERADD, /* 241 - Virtual command to add a user (PIN only) */
+ CONFIGITEM_MAGIC_USERDELETE, /* 242 - Virtual command to delete a user */
+ CONFIGITEM_MAGIC_NVRAMBACKUP, /* 243 - Virtual command to backup NVRAM to FLASH */
+ CONFIGITEM_MAGIC_NVRAMRESTORE, /* 244 - Virtual command to restore NVRAM from FLASH */
+ CONFIGITEM_MAGIC_NVRAMERASE, /* 245 - Virtual command to erase backed-up NVRAM */
+ CONFIGITEM_MAGIC_LAST /* *Really* the last item */
+}
+configItem_e;
+
+typedef enum
+{
+ DELETEUSERS_ALL = 0, /* 0 - Delete ALL users, including master and emergency, restores default users */
+ DELETEUSERS_CACHED, /* 1 - Delete only cached users */
+ DELETEUSERS_LAST
+}
+deleteUsers_e;
+
+typedef enum
+{
+ DISPOSITION_ADD = 0, /* 0 - Add, must not exist (by user number only) */
+ DISPOSITION_REPLACE, /* 1 - Replace, (add, but overwrite if necessary) */
+ DISPOSITION_UPDATE, /* 2 - Update, must already exist */
+ DISPOSITION_DELETE, /* 3 - Delete, exists or not is irrelevant */
+ DISPOSITION_RETRIEVE, /* 4 - Retrieve, must exist */
+ DISPOSITION_LAST
+}
+disposition_e;
+
+typedef enum
+{
+ DOORSTATE_NONE = 0, /* 0 - No door state available */
+ DOORSTATE_SECURED, /* 1 - Door closed & secured */
+ DOORSTATE_DOORFORCED, /* 2 - Door forced */
+ DOORSTATE_KEYOVERRIDE, /* 3 - Key override */
+ DOORSTATE_DOORAJAR, /* 4 - Door ajar */
+ DOORSTATE_LAST
+}
+doorState_e;
+
+typedef enum
+{
+ DSTMODE_NONE, /* 0 - Automatic DST switching disabled */
+ DSTMODE_REPEATINGDOM, /* 1 - Particular day on a particular month (Apr 2nd) */
+ DSTMODE_REPEATINGDOW, /* 2 - Day of week on a particular week of a particular month (Sunday of last week of April) */
+ DSTMODE_ONETIMEDOM, /* 3 - Like DSTMODE_REPEATINGDOM, but clears CONFIGITEM_DST_[FORWARD|BACK][MONTH|DAY] items */
+ DSTMODE_ONETIMEDOW, /* 4 - Like DSTMODE_REPEATINGDOW, but clears CONFIGITEM_DST_[FORWARD|BACK][MONTH|OOD|DOW] items */
+ DSTMODE_LAST
+}
+dstMode_e;
+
+typedef enum
+{
+ ENCRYPTIONSCHEME_NONE = 0, /* 0 - No encryption */
+ ENCRYPTIONSCHEME_ROLLING, /* 1 - XOR with crypt key, shift each byte */
+ ENCRYPTIONSCHEME_SN, /* 2 - XOR with serial number, shift each byte */
+ ENCRYPTIONSCHEME_AESIV, /* 3 - AES implementation (set initial vector) */
+ ENCRYPTIONSCHEME_AES, /* 4 - AES implementation */
+ ENCRYPTIONSCHEME_LAST
+}
+encryptionScheme_e;
+
+typedef enum
+{
+ EVENT_INVALIDPIN = 0, /* 0 - Entered PIN was invalid */
+ EVENT_USER, /* 1 - Regular user has been granted access */
+ EVENT_ONETIME, /* 2 - One-time user has been granted access */
+ EVENT_PASSAGEBEGIN, /* 3 - Lock has unlocked because of auto-unlock mode */
+ EVENT_PASSAGEEND, /* 4 - Lock has relocked because of auto-unlock mode */
+ EVENT_BADTIME, /* 5 - Access attempted outside of allowed time/date */
+ EVENT_LOCKEDOUT, /* 6 - Access attempted during panic or lockout */
+ EVENT_LOWBATTERY, /* 7 - Battery is low */
+ EVENT_DEADBATTERY, /* 8 - Battery is dead */
+ EVENT_BATTERYREPLACED, /* 9 - Battery has been replaced */
+ EVENT_USERADDED, /* 10 - User added or changed */
+ EVENT_USERDELETED, /* 11 - User deleted */
+ EVENT_EMERGENCY, /* 12 - The emergency code was entered */
+ EVENT_PANIC, /* 13 - Somebody pushed the panic button */
+ EVENT_RELOCK, /* 14 - Relock code was entered */
+ EVENT_LOCKOUTBEGIN, /* 15 - Lockout code was entered */
+ EVENT_LOCKOUTEND, /* 16 - Lockout code was entered again */
+ EVENT_RESET, /* 17 - Lock was reset (restarted) */
+ EVENT_DATETIMESET, /* 18 - System date & time was set */
+ EVENT_LOGCLEARED, /* 19 - Event log cleared */
+ EVENT_DBRESET, /* 20 - User database reset */
+ EVENT_COMMSTARTED, /* 21 - Communications session started */
+ EVENT_COMMENDED, /* 22 - Communications session ended */
+ EVENT_FIRMWAREABORT, /* 23 - A firmware update aborted */
+ EVENT_FIRMWAREERROR, /* 24 - A firmware update encountered an error */
+ EVENT_FIRMWARETIMEOUT, /* 25 - Timeout expecting firmware download data record */
+ EVENT_DSTFALLBACK, /* 26 - Clock set back */
+ EVENT_DSTSPRINGFORWARD, /* 27 - Clock set forward */
+ EVENT_BOLTTHROWN, /* 28 - Bolt thrown */
+ EVENT_BOLTRETRACTED, /* 29 - Bolt retracted */
+ EVENT_MASTERCODE, /* 30 - Master code entered (clears panic, relock, and lockout) */
+ EVENT_COMMUSER, /* 31 - A comm user was activated */
+ EVENT_DPACDISABLED, /* 32 - DPAC disabled */
+ EVENT_NOTIFY, /* 33 - Notify user has been granted access */
+ EVENT_EXPIRED, /* 34 - Expired user attempted access */
+ EVENT_SUPERVISOR, /* 35 - The supervisor code was entered */
+ EVENT_MCCENTER, /* 36 - Entered MCC programming mode */
+ EVENT_MCCEXIT, /* 37 - Exited MCC programming mode */
+ EVENT_SERIALRXOVERRUN, /* 38 - Serial receiver overrun */
+ EVENT_DPACRXOVERRUN, /* 39 - DPAC receiver overrun */
+ EVENT_NVRAMPBCLEAR, /* 40 - NVRAM cleared by pushybutton */
+ EVENT_NVRAMLAYOUTCHANGE, /* 41 - NVRAM cleared by revision */
+ EVENT_NVRAMOK, /* 42 - NVRAM wasn't changed */
+ EVENT_USERREPLACED, /* 43 - User replaced */
+ EVENT_RADIOTIMEOUT, /* 44 - Radio timed out waiting for remote login */
+ EVENT_SUSPENDEDUSER, /* 45 - Suspended user attempted access */
+ EVENT_USERUPDATED, /* 46 - User updated */
+ EVENT_DOORBOLTED, /* 47 - Access denied because door is bolted */
+ EVENT_PANICACTIVE, /* 48 - Access denied because lock is in panic mode */
+ EVENT_PASSAGEACTIVE, /* 49 - Access denied because lock is in passage mode */
+ EVENT_PASSAGEINACTIVE, /* 50 - Access denied because lock is not in passage mode */
+ EVENT_BADACCESSMODE, /* 51 - Access denied because access mode is wierd */
+ EVENT_CLOCKERR, /* 52 - Error reading RTC */
+ EVENT_REMOTEUNLOCK, /* 53 - Remote unlock */
+ EVENT_TZHAUDISABLED, /* 54 - Time zone, exceptions, and auto-unlock functionality disabled */
+ EVENT_EVENTLOGWRAPPED, /* 55 - Event log wrapped */
+ EVENT_DECLINEDLOGWRAPPED, /* 56 - Declined log wrapped */
+ EVENT_ALARMLOGWRAPPED, /* 57 - Alarm log wrapped */
+ EVENT_RADIOBUSYEMERGENCY, /* 58 - Access denied because radio is busy */
+ EVENT_RADIOBUSYSUPERVISOR, /* 59 - Access denied because radio is busy */
+ EVENT_RADIOBUSYONETIME, /* 60 - Access denied because radio is busy */
+ EVENT_RADIOBUSYUSER, /* 61 - Access denied because radio is busy */
+ EVENT_RADIOBUSYPANIC, /* 62 - Access denied because radio is busy */
+ EVENT_RADIOBUSYREX, /* 63 - Access denied because radio is busy */
+ EVENT_RADIOBUSYLOCKOUT, /* 64 - Access denied because radio is busy */
+ EVENT_RADIOBUSYRELOCK, /* 65 - Access denied because radio is busy */
+ EVENT_BATTERYCHECKHELDOFF, /* 66 - Battery check was not performed (user number says why) */
+ EVENT_RMTAUTHREQUEST, /* 67 - Remote authorization request made */
+ EVENT_FIRMWAREUPDATE, /* 68 - A firmware update was attempted, and succeeded */
+ EVENT_FIRMWAREUPDATEFAILED, /* 69 - A firmware update was attempted, and failed */
+ EVENT_MSMFAILURE, /* 70 - Mortise state machine failure */
+ EVENT_CLOCKRESET, /* 71 - The RTC was reset, likely due to ESD */
+ EVENT_POWERFAIL, /* 72 - Power Fail Monitor (PFM) circuit triggered */
+ EVENT_DPAC501WENTSTUPID, /* 73 - DPAC-501 failed to release CTS on power up */
+ /*
+ * These are all internal debugging events. Real events should go before these.
+ */
+ EVENT_CHECKSUMCONFIG, /* 74 - Performing checksum on configuration NVRAM */
+ EVENT_CHECKSUMTZ, /* 75 - Performing checksum on timezone data NVRAM */
+ EVENT_DEBUG, /* 76 - Debug event, could mean anything (programmer discretion) */
+ EVENT_LAST /* 77 - Everything must go before this entry */
+}
+event_e;
+
+typedef enum
+{
+ FIELDTYPE_NONE = 0, /* 0 - Field contains nothing */
+ FIELDTYPE_PIN, /* 1 - Field contains PIN */
+ FIELDTYPE_PROX, /* 2 - Field contains Prox card */
+ FIELDTYPE_MAGCARD, /* 3 - Field contains mag card */
+ FIELDTYPE_LAST
+}
+fieldType_e;
+
+typedef enum
+{
+ FILTERMODE_NORMAL = 0, /* 0 - Filters events specified */
+ FILTERMODE_INVERT, /* 1 - Filters events not specified */
+ FILTERMODE_LAST
+}
+filterMode_e;
+
+typedef enum
+{
+ FILTERSELECT_RECORDING = 0, /* 0 - Recording filters */
+ FILTERSELECT_REPORTING, /* 1 - Reporting filters */
+ FILTERSELECT_LAST
+}
+filterSelect_e;
+
+typedef enum
+{
+ FORCEITEM_RADIOPOWER = 0, /* 0 - Radio power */
+ FORCEITEM_RADIOENABLE, /* 1 - Radio enable */
+ FORCEITEM_LEDRED, /* 2 - Red keypad LED */
+ FORCEITEM_LEDGREEN, /* 3 - Green keypad LED */
+ FORCEITEM_LEDYELLOW, /* 4 - Yellow keypad LED */
+ FORCEITEM_PIEZO, /* 5 - Keypad peizo */
+ FORCEITEM_MAGPOWER, /* 6 - Mag card reader power supply */
+ FORCEITEM_MAGLEDA, /* 7 - Mag card LED A (usually red) */
+ FORCEITEM_MAGLEDB, /* 8 - Mag card LED B (usually green) */
+ FORCEITEM_PROXPOWER, /* 13 - Prox circuitry power (opamps, etc) */
+ FORCEITEM_PROXPING, /* 14 - Prox PIC12F629 ping/sleep mode */
+ FORCEITEM_PROXMODE, /* 15 - Prox ping/read mode (selects 50hz/125KHz filters) */
+ FORCEITEM_I2CPOWER, /* 16 - I2C power */
+ FORCEITEM_MOTORARUN, /* 17 - Motor A run (to H-bridge) */
+ FORCEITEM_MOTORBRUN, /* 18 - Motor B run (to H-bridge) */
+ FORCEITEM_VMON, /* 19 - VMon (ADC 0 battery sense) */
+ FORCEITEM_PROX, /* 20 - Prox test mode (continuous 125KHz read) */
+ FORCEITEM_MORTISETEST, /* 21 - Force mortise into test mode */
+ FORCEITEM_KEYPADTEST, /* 22 - Force keypad into test mode */
+ FORCEITEM_MAGTEST, /* 23 - Force mag card test mode */
+ FORCEITEM_PROXTEST, /* 24 - Force prox card test mode */
+ FORCEITEM_ICLASSPOWER, /* 25 - iClass Prox power */
+ FORCEITEM_ICLASSRESET, /* 26 - iClass Prox reset */
+ FORCEITEM_LAST
+}
+forceItem_e;
+
+typedef enum
+{
+ FROMDEVICE_NONE = 0, /* 0 - Used to indicate no device */
+ FROMDEVICE_INTERNAL, /* 1 - Generated internally */
+ FROMDEVICE_KEYPAD, /* 2 - Generated from keypad */
+ FROMDEVICE_CONSOLE, /* 3 - Generated from console */
+ FROMDEVICE_WIFI, /* 4 - Generated from wi-fi (DPAC) */
+ FROMDEVICE_LAST
+}
+fromDevice_e;
+
+typedef enum
+{
+ HARDWAREOPTIONS_NONE = 0x0000, /* No options installed (?!) */
+ HARDWAREOPTIONS_CLOCK = 0x0001, /* Has RTC installed (always set) */
+ HARDWAREOPTIONS_CONSOLE = 0x0002, /* Has serial console (always set) */
+ HARDWAREOPTIONS_KEYPAD = 0x0004, /* Has keypad installed */
+ HARDWAREOPTIONS_PROXREADER = 0x0008, /* Has Prox card circuitry installed */
+ HARDWAREOPTIONS_MAGREADER = 0x0010, /* Has magnetic card reader attached */
+ HARDWAREOPTIONS_1WIRE = 0x0020, /* Has Dallas 1-wire interface installed */
+ HARDWAREOPTIONS_WIFI = 0x0040, /* Has WiFi module installed (DPAC only, for now) */
+ HARDWAREOPTIONS_RS485 = 0x0080, /* Has RS-485 optioning (RS-232 assumed if not) */
+ HARDWAREOPTIONS_IR = 0x0100, /* Has IR LED communications interface installed */
+ HARDWAREOPTIONS_PUSHBUTTON = 0x0200, /* Has MCC pushbutton */
+ HARDWAREOPTIONS_WATCHDOG = 0x0400, /* Has watchdog option compiled in */
+ HARDWAREOPTIONS_ICLASSREADER = 0x0800, /* Has iClass OEM75 prox reader installed */
+ HARDWAREOPTIONS_AVAIL1000 = 0x1000, /* Not defined */
+ HARDWAREOPTIONS_AVAIL2000 = 0x2000, /* Not defined */
+ HARDWAREOPTIONS_AVAIL4000 = 0x4000, /* Not defined */
+ HARDWAREOPTIONS_AVAIL8000 = 0x8000, /* Not defined */
+
+ HARDWAREOPTIONS_RADIO = (HARDWAREOPTIONS_WIFI),
+
+ HARDWAREOPTIONS_LAST = 0xffff /* Place holder, don't use */
+}
+hardwareOptions_e;
+
+typedef enum
+{
+ LOCALLED_NONE = 0, /* 0 - No assignment */
+ LOCALLED_RADIOPOWER, /* 1 - Follows radio power supply (lit=power on) */
+ LOCALLED_LOCKUNLOCKED, /* 2 - Follows strike state (lit=locked) */
+ LOCALLED_I2CPOWER, /* 3 - Follows I2C power (lit=power on) */
+ LOCALLED_AUTHCONSOLE, /* 4 - Follows authorization from console port (lit=authorized) */
+ LOCALLED_AUTHWIFI, /* 5 - Follows authorization from Wifi port (lit=authorized) */
+ LOCALLED_BATTERYLOW, /* 6 - Follows battery low status (lit=low) */
+ LOCALLED_BATTERYDEAD, /* 7 - Follows battery dead status (lit=battery dead) */
+ LOCALLED_PROXREADY, /* 8 - Follows Prox ready to read (lit=ready) */
+ LOCALLED_APACQUIRED, /* 9 - Follows WAP acquired via DPAC (lit=acquired) */
+ LOCALLED_PASSMODE, /* 10 - Follows DPAC entering pass mode (lit=pass mode successful) */
+ LOCALLED_PROXREAD, /* 11 - Follows receiving a prox read event (PROXCARDEVENT_READCARD) */
+ LOCALLED_CONNECTED, /* 12 - Follows the DPAC interrupt line, indicating connection status */
+ LOCALLED_DPACCTSTIMER, /* 13 - Follows DPAC CTS line, if asserted more than 5 seconds */
+ LOCALLED_PFMCHARGING, /* 14 - Follows the state of the PFM super-cap charger */
+ LOCALLED_LAST
+}
+localLED_e;
+
+typedef enum
+{
+ LOCKPRIORITY_NONE = 0, /* 0 - Radio is not shut down for motor run, access not denied if radio is on */
+ LOCKPRIORITY_DPAC, /* 1 - Radio is not shut down for motor run, access denied if radio is on */
+ LOCKPRIORITY_LOCK, /* 2 - Radio is shut down for motor run, access not denied if radio is on */
+ LOCKPRIORITY_LAST
+}
+lockPriority_e;
+
+typedef enum
+{
+ LOCKTYPE_NONE = 0, /* 0 - No lock present */
+ LOCKTYPE_PWM, /* 1 - PWM motor */
+ LOCKTYPE_ELECTRIC_STRIKE, /* 2 - Electric strike (normally de-energized, uses Motor A side of H-bridge) */
+ LOCKTYPE_MAGNETIC_LOCK, /* 3 - Magnetic lock (normally energized, uses Motor A side of H-bridge) */
+ LOCKTYPE_RELAY, /* 4 - Relay (normally de-energized, uses Motor B side of H-bridge) */
+ LOCKTYPE_LAST
+}
+lockType_e;
+
+typedef enum
+{
+ MFGFIELD_IOPINS = 0, /* 0 - Contains data about the state of the IO pins */
+ MFGFIELD_ADCS, /* 1 - Contains raw ADC data */
+ MFGFIELD_HARDWAREID, /* 2 - Contains hardware ID & revision of PIC */
+ MFGFIELD_CHECKPOINTLOG, /* 3 - Contains the checkpoint log data */
+ MFGFIELD_CPUREGISTERS, /* 4 - Contains the contents of selected PIC registers */
+ MFGFIELD_TASKFLAGS, /* 5 - Contains a list of all task flag values */
+ MFGFIELD_TIMERCHAIN, /* 6 - Contains a complete list of all active timers (timerData_t) */
+ MFGFIELD_PEEKPOKE, /* 7 - Contains results of peeking memory (U8, U16, U32, or string) */
+ MFGFIELD_LOCKSTATE, /* 8 - Contains the current passage mode flags (lockState_t) */
+ MFGFIELD_CAPABILITIES, /* 9 - Contains lock capability info (# users, event log entries, etc) */
+ MFGFIELD_DUMPM41T81, /* 10 - Contains a complete dump of the M41T81 RTC registers */
+ MFGFIELD_NVRAMCHECKSUMVALUE, /* 11 - Contains the 32-bit NVRAM checksum value */
+ MFGFIELD_CHECKSUMRESULTS, /* 12 - Contains results from checksumming exceptions, exceptiong roups, time zone calendars and time zones */
+ MFGFIELD_MORTISESTATELOG, /* 13 - Contains the last 32 mortise state changes */
+ MFGFIELD_MORTISEPINS, /* 14 - Contains the mortise pin status (S1,S2,S3,S4) */
+ MFGFIELD_KEYPADCHAR, /* 15 - Contains a character from the keypad */
+ MFGFIELD_MAGCARD, /* 16 - Contains mag card data */
+ MFGFIELD_PROXCARD, /* 17 - Contains prox card data */
+ MFGFIELD_LAST
+}
+mfgField_e;
+
+typedef enum
+{
+ MORTISETYPE_NONE = 0, /* 0 - No mortise installed */
+ MORTISETYPE_S82276, /* 1 - Sargent 82276 mortise (A) */
+ MORTISETYPE_S82277, /* 2 - Sargent 82277 mortise, no cylinder (B) */
+ MORTISETYPE_S82278, /* 3 - Sargent 82278 mortise, no deadbolt (C) */
+ MORTISETYPE_S82279, /* 4 - Sargent 82279 mortise, no cylinder or deadbolt (D) */
+ MORTISETYPE_S10G77, /* 5 - Sargent 10G77 bored lock body (E) */
+ MORTISETYPE_S8877, /* 6 - Sargent 8877 mortise exit device (F) */
+ MORTISETYPE_S8878, /* 7 - Sargent 8878 mortise exit device, no cylinder (G) */
+ MORTISETYPE_S8977, /* 8 - Sargent 8977 mortise exit device (H) */
+ MORTISETYPE_S8978, /* 9 - Sargent 8978 mortise exit device, no cylinder (I) */
+ MORTISETYPE_CRML20x36, /* 10 - Corbin-Russwin ML20736/ML20836 mortise (J) */
+ MORTISETYPE_CRML20x35, /* 11 - Corbin-Russwin ML20735/ML20835 mortise, no cylinder (K) */
+ MORTISETYPE_CRML20x34, /* 12 - Corbin-Russwin ML20734/ML20834 mortise, no deadbolt (L) */
+ MORTISETYPE_CRML20x33, /* 13 - Corbin-Russwin ML20733/ML20833 mortise, no cylinder or deadbolt (M) */
+ MORTISETYPE_CRCL33x34, /* 14 - Corbin-Russwin CL33734/CL33834 bored lock body (N) */
+ MORTISETYPE_CR9X34, /* 15 - Corbin-Russwin 9734/9834 bored lock body (O) */
+ MORTISETYPE_CR9X33, /* 16 - Corbin-Russwin 9833/9833 bored lock body, no cylinder (P) */
+ MORTISETYPE_CR9MX34, /* 17 - Corbin-Russwin 9M734/9M834 bored lock body (Q) */
+ MORTISETYPE_CR9MX33, /* 18 - Corbin-Russwin 9M733/9M833 bored lock body, no cylinder (R) */
+ MORTISETYPE_LAST
+}
+mortiseType_e;
+
+typedef enum
+{
+ NVRAMCLEAROPTIONS_NONE = 0x0000, /* Place holder */
+ NVRAMCLEAROPTIONS_CFGINSTALLER = 0x0001, /* Options settable by the installer (lock type, etc) */
+ NVRAMCLEAROPTIONS_CFGADMIN = 0x0002, /* Options settable by the lock administrator (time, date, etc) */
+ NVRAMCLEAROPTIONS_EXCEPTIONS = 0x0004, /* The exceptions definitions */
+ NVRAMCLEAROPTIONS_EXCEPTIONGROUPS = 0x0008, /* The exception group definitions */
+ NVRAMCLEAROPTIONS_CALENDARS = 0x0010, /* The timezones calendar definitions */
+ NVRAMCLEAROPTIONS_TIMEZONES = 0x0020, /* The timezones definitions */
+ NVRAMCLEAROPTIONS_FILTERS = 0x0040, /* Recording filters */
+ NVRAMCLEAROPTIONS_EVENTLOG = 0x0080, /* The event log */
+ NVRAMCLEAROPTIONS_USERDATA = 0x0100, /* The actual user database */
+ NVRAMCLEAROPTIONS_DECLINEDLOG = 0x0200, /* Declined credentials log */
+ NVRAMCLEAROPTIONS_ALARMLOG = 0x0400, /* Alarm log */
+ NVRAMCLEAROPTIONS_LRUCACHE = 0x0800, /* LRU cache for remote authorization (status, user doesn't clear explicitly) */
+ NVRAMCLEAROPTIONS_DBHASH = 0x1000, /* User database hash (status, user doesn't clear explicitly) */
+ NVRAMCLEAROPTIONS_CFGSYSTEM = 0x2000, /* Factory settable options, system variables (status, user doesn't clear explicitly) */
+ NVRAMCLEAROPTIONS_AVAIL4000 = 0x4000, /* Unused */
+ NVRAMCLEAROPTIONS_ALL = 0x7fff, /* All of the above */
+ NVRAMCLEAROPTIONS_USEBACKUP = 0x8000 /* If set, installer and admin options are set according from NVRAM backup (if valid) */
+}
+nvramClearOptions_e;
+
+typedef enum
+{
+ NVRAMCOMMAND_BACKUP = 0, /* 0 - Backup NVRAM to backup region */
+ NVRAMCOMMAND_ERASE, /* 1 - Erase backup region */
+ NVRAMCOMMAND_RESTORE, /* 2 - Restore NVRAM from backup region */
+ NVRAMCOMMAND_LAST
+}
+nvramCommand_e;
+
+typedef enum
+{
+ NVRAMDUMPSELECT_ALL = 0, /* 0 - Dump all */
+ NVRAMDUMPSELECT_PIC, /* 1 - Dump NVRAM on PIC */
+ NVRAMDUMPSELECT_USER, /* 2 - Dump I2C NVRAM containing user data, exceptions, exception groups, calendars, timezones */
+ NVRAMDUMPSELECT_EVENT, /* 3 - Dump I2C NVRAM containing event log, declined log, alarm log, LRU cache */
+ NVRAMDUMPSELECT_LAST
+}
+nvramDumpSelect_e;
+
+typedef enum
+{
+ PEEKPOKE_READU8 = 0, /* 0 - Read 8 bit value */
+ PEEKPOKE_READU16, /* 1 - Read 16 bit value */
+ PEEKPOKE_READU24, /* 2 - Read 24 bit value */
+ PEEKPOKE_READU32, /* 3 - Read 32 bit value */
+ PEEKPOKE_READSTRING, /* 4 - Read 'n' 8 bit values */
+ PEEKPOKE_WRITEU8, /* 5 - Write 8 bit value */
+ PEEKPOKE_WRITEU16, /* 6 - Write 16 bit value */
+ PEEKPOKE_WRITEU24, /* 7 - Write 24 bit value */
+ PEEKPOKE_WRITEU32, /* 8 - Write 32 bit value */
+ PEEKPOKE_WRITESTRING, /* 9 - Write 'n' 8 bit values */
+ PEEKPOKE_LAST
+}
+peekPoke_e;
+
+typedef enum
+{
+ PPMISOURCE_NONE = 0, /* 0 - PPMI came from nowhere (not set) */
+ PPMISOURCE_PIN, /* 1 - PPMI came from PIN */
+ PPMISOURCE_PROX, /* 2 - PPMI came from Prox */
+ PPMISOURCE_MAGCARD, /* 3 - PPMI came from mag card */
+ PPMISOURCE_LAST
+}
+ppmiSource_e;
+
+typedef enum
+{
+ RADIOMODE_HOSTINITIATED = 0, /* 0 - DPAC in listen mode (default) */
+ RADIOMODE_LOCKINITIATED, /* 1 - DPAC in pass-through mode */
+ RADIOMODE_LAST
+}
+radioMode_e;
+
+typedef enum
+{
+ RADIOTYPE_NONE = 0, /* 0 - No radio present */
+ RADIOTYPE_WIPORTNR, /* 1 - WiPortNR */
+ RADIOTYPE_DPAC80211B, /* 2 - DPAC 802.11b */
+ RADIOTYPE_DPAC80211BG, /* 3 - DPAC 802.11bg */
+ RADIOTYPE_LAST
+}
+radioType_e;
+
+typedef enum
+{
+ RESPONSETYPE_OK = 0, /* 0 - All is well */
+ RESPONSETYPE_ERROR, /* 1 - Generic error */
+ RESPONSETYPE_HASDATA, /* 2 - Response has data */
+ RESPONSETYPE_NOHANDLER, /* 3 - Command requested with no handler (internal error) */
+ RESPONSETYPE_NOSESSION, /* 4 - No session established */
+ RESPONSETYPE_BADCOMMAND, /* 5 - Bad command value */
+ RESPONSETYPE_BADPARAMETER, /* 6 - Bad parameter (can mean a lot of things) */
+ RESPONSETYPE_BADPARAMETERLEN, /* 7 - Bad parameter length (too short, too long) */
+ RESPONSETYPE_MISSINGPARAMETER, /* 8 - Missing parameter (something was required, what'd you forget?) */
+ RESPONSETYPE_DUPLICATEPARAMETER, /* 9 - Parameter supplied more than once (D'oh!) */
+ RESPONSETYPE_PARAMETERCONFLICT, /* 10 - Parameters conflict (usually mutually exclusive items) */
+ RESPONSETYPE_BADDEVICE, /* 11 - Bad device (command came from a device that's not allowed) */
+ RESPONSETYPE_NVRAMERROR, /* 12 - Hardware problem... */
+ RESPONSETYPE_NVRAMERRORNOACK, /* 13 - Hardware problem... */
+ RESPONSETYPE_NVRAMERRORNOACK32, /* 14 - Hardware problem... */
+ RESPONSETYPE_NOTI2CADDRESS, /* 15 - Illegal I2C address in i2cStart */
+ RESPONSETYPE_FIRMWAREERROR, /* 16 - Generic firmware upload error (can mean lots of things) */
+ RESPONSETYPE_DUMPINPROGRESS, /* 17 - Can't do something, a dump is in progress */
+ RESPONSETYPE_INTERNALERROR, /* 18 - Something Bad Happened(tm) */
+ RESPONSETYPE_NOTIMPLEMENTED, /* 19 - Command or function not implemented */
+ RESPONSETYPE_PINFORMATERROR, /* 20 - Error in formatting of PIN (non hex character) */
+ RESPONSETYPE_PINEXISTS, /* 21 - PIN already exists in database */
+ RESPONSETYPE_PINNOTFOUND, /* 22 - PIN wasn't found (actionManageUsers) */
+ RESPONSETYPE_USERACTIVE, /* 23 - The record for this user is active (not deleted or free) */
+ RESPONSETYPE_USERINACTIVE, /* 24 - The record for this user is inactive (not in use) */
+ RESPONSETYPE_PARENTNOTFOUND, /* 25 - Users parent couldn't be found (used internally by dbmgr.c) */
+ RESPONSETYPE_NOCHAIN, /* 26 - No users in chain (used internally by dbmgr.c) */
+ RESPONSETYPE_CAUGHTINLOOP, /* 27 - Caught in a loop somewhere */
+ RESPONSETYPE_EVENTFILTERED, /* 28 - Event record was filtered (eventlog.c) */
+ RESPONSETYPE_PAYLOADTOOLARGE, /* 29 - Message payload too large (protocol.c) */
+ RESPONSETYPE_ENDOFDATA, /* 30 - No more data (used internally by eventlog.c) */
+ RESPONSETYPE_RMTAUTHREJECTED, /* 31 - Remote authorization rejected (lockmgr.c) */
+ RESPONSETYPE_NVRAMVERSIONERROR, /* 32 - NVRAM version doesn't match expected value */
+ RESPONSETYPE_NOHARDWARE, /* 33 - Operation requested for unsupported hardware */
+ RESPONSETYPE_SCHEDULERCONFLICT, /* 34 - Scheduler not in correct mode for this operation */
+ RESPONSETYPE_NVRAMWRITEERROR, /* 35 - NVRAM write compare error */
+ RESPONSETYPE_DECLINEDFILTERED, /* 36 - Declined record was filtered (declinedlog.c) */
+ RESPONSETYPE_NECONFIGPARM, /* 37 - Non-existent configuration parameter */
+ RESPONSETYPE_FLASHERASEERROR, /* 38 - Error erasing FLASH */
+ RESPONSETYPE_FLASHWRITEERROR, /* 39 - Error writing FLASH */
+ RESPONSETYPE_BADNVBACKUP, /* 40 - NVBackup length doesn't match sizeof (configParametersNV_t) */
+ RESPONSETYPE_EARLYACK, /* 41 - Sent prior to long commands if CONFIGITEM_EARLYACK set */
+ RESPONSETYPE_ALARMFILTERED, /* 42 - Alarm record was filtered (alarm.c) */
+ RESPONSETYPE_ACVFAILURE, /* 43 - Auxiliary controller version request failure */
+ RESPONSETYPE_USERCHECKSUMERROR, /* 44 - User checksum value error */
+ RESPONSETYPE_CHECKSUMERROR, /* 45 - Generic checksum error */
+ RESPONSETYPE_RTCSQWFAILURE, /* 46 - RTC isn't generating square wave */
+ RESPONSETYPE_PRIORITYSHUTDOWN, /* 47 - Session terminated early because lock has priority over communications */
+ RESPONSETYPE_NOTMODIFIABLE, /* 48 - Configuration parameter is not user modifiable */
+ RESPONSETYPE_CANTPRESERVE, /* 49 - Can't preserve configuration (config.c, not enough space) */
+ RESPONSETYPE_INPASSAGEMODE, /* 50 - Lock is in passage mode, can't do remote unlock */
+ RESPONSETYPE_LAST,
+ /*
+ * These should not be exposed to the user
+ */
+ RESPONSETYPE_NOREPLY, /* 51 - Do not send a reply, subroutine is posting it's own */
+ RESPONSETYPE_TAKEABREAK, /* 52 - Intermediate return result, when log searches taking too long */
+ RESPONSETYPE_DPACBLOCKS, /* 53 - PWM lock, battery powered, DPAC takes priority */
+ RESPONSETYPE_ACKNAKTIMEOUT, /* 54 - Added for console.c, not used in lock firmware */
+ RESPONSETYPE_UNKNOWNCPUSPEED /* 55 - Unknown CPU speed (utils.c, utilCalculateClockRate()) */
+}
+responseType_e;
+
+typedef enum
+{
+ SCHEDULERTYPE_HARDON = 0, /* 0 - Radio is always on */
+ SCHEDULERTYPE_SIMPLE, /* 1 - Simple 'x' minutes off, 'y' seconds on scheduler */
+ SCHEDULERTYPE_DOM, /* 2 - Day of month scheduling */
+ SCHEDULERTYPE_DOW, /* 3 - Day of week scheduling */
+ SCHEDULERTYPE_COMMUSER, /* 4 - Only a comm user triggers power on */
+ SCHEDULERTYPE_HOD, /* 5 - Hour of day scheduling */
+ SCHEDULERTYPE_OFF, /* 6 - Nothing wakes up radio */
+ SCHEDULERTYPE_LAST
+}
+schedulerType_e;
+
+typedef enum
+{
+ TIMEZONEMODE_NORMAL = 0, /* 0 - Timezone is applied to user, no auto unlocking */
+ TIMEZONEMODE_EXCLUSION, /* 1 - User NOT permitted access if in this zone at this time */
+ TIMEZONEMODE_AUTOTIME, /* 2 - Auto unlock at the start of the TZ, lock at end */
+ TIMEZONEMODE_AUTOFPT, /* 3 - Unlock on first person through, lock at end */
+ TIMEZONEMODE_UAPM, /* 4 - Permits user activated passage mode when active */
+ TIMEZONEMODE_LAST
+}
+timeZoneMode_e;
+
+typedef enum
+{
+ UNLOCKMODE_NORMAL = 0, /* 0 - Normal unlock (CONFIGITEM_UNLOCK_TIME duration) */
+ UNLOCKMODE_UNLOCK, /* 1 - Unlock, switching to passage mode */
+ UNLOCKMODE_LOCK, /* 2 - Lock, regardless of mode */
+ UNLOCKMODE_LAST
+}
+unlockMode_e;
+
+typedef enum
+{
+ UPSTREAMCOMMAND_RESERVED = 0, /* 0 - Not used */
+ UPSTREAMCOMMAND_DEBUGMSG, /* 1 - Debug message (zero terminated) */
+ UPSTREAMCOMMAND_QUERYVERSION, /* 2 - Version string (zero terminated) */
+ UPSTREAMCOMMAND_QUERYDATETIME, /* 3 - Current date/time */
+ UPSTREAMCOMMAND_QUERYSERIALNUMBER, /* 5 - Serial number (MAX_SERIALNUM_LENGTH bytes) */
+ UPSTREAMCOMMAND_DUMPEVENTLOG, /* 6 - Event log record */
+ UPSTREAMCOMMAND_DUMPNVRAM, /* 7 - NVRAM dump record */
+ UPSTREAMCOMMAND_RMTAUTHREQUEST, /* 8 - Remote authorization request */
+ UPSTREAMCOMMAND_RETRIEVEUSER, /* 9 - Retrieve user record */
+ UPSTREAMCOMMAND_QUERYCONFIG, /* 10 - Query configuration */
+ UPSTREAMCOMMAND_RMTEVENTLOGRECORD, /* 11 - Remote event log record */
+ UPSTREAMCOMMAND_DPAC, /* 12 - DPAC related message */
+ UPSTREAMCOMMAND_NOTIFY, /* 14 - Notify user message */
+ UPSTREAMCOMMAND_MFG, /* 15 - Manufacturing data */
+ UPSTREAMCOMMAND_EVENTLOGWARNING, /* 16 - Event log warning level message */
+ UPSTREAMCOMMAND_DUMPNVRAMRLE, /* 17 - Run Length Encoded (RLE) NVRAM dump record */
+ UPSTREAMCOMMAND_RMTDECLINEDRECORD, /* 18 - Remote declined log record */
+ UPSTREAMCOMMAND_DECLINEDWARNING, /* 19 - Declined log warning level message */
+ UPSTREAMCOMMAND_DUMPDECLINEDLOG, /* 20 - Declined log record dump */
+ UPSTREAMCOMMAND_RMTALARMRECORD, /* 21 - Remote alarm log record */
+ UPSTREAMCOMMAND_ALARMWARNING, /* 22 - Alarm log warning level message */
+ UPSTREAMCOMMAND_DUMPALARMLOG, /* 23 - Alarm log record dump */
+ UPSTREAMCOMMAND_CONNECTSCHEDULER, /* 24 - Connection because of scheduler, contains serial number */
+ UPSTREAMCOMMAND_CONNECTCOMMUSER, /* 25 - Connection because of comm user, contains serial number */
+ UPSTREAMCOMMAND_CONNECTALARM, /* 26 - Connection because of alarm event, contains serial number */
+ UPSTREAMCOMMAND_DUMPDEBUGLOG, /* 27 - Debug log dump record */
+ UPSTREAMCOMMAND_LAST
+}
+upstreamCommand_e;
+
+typedef enum
+{
+ UPSTREAMFIELD_NOTUSED = 0, /* 0 - Not used */
+ UPSTREAMFIELD_SERIALNUMBER, /* 1 - Contains unit serial number */
+ UPSTREAMFIELD_NAR, /* 2 - Contains 16 bit Next Available Record */
+ UPSTREAMFIELD_ENTRYDEVICE, /* 3 - Contains a ppmSource_e */
+ UPSTREAMFIELD_PPMIFIELDTYPE, /* 4 - Contains a type of _PIN (auxFieldType_e) */
+ UPSTREAMFIELD_PIN, /* 5 - Contains a PIN, Prox, mag key */
+ UPSTREAMFIELD_SEQUENCENUMBER, /* 6 - Contains 16 bit sequence number */
+ UPSTREAMFIELD_RESPONSEWINDOW, /* 7 - Contains 8 bit response window (number of seconds) */
+ UPSTREAMFIELD_USERNUMBER, /* 8 - Contains 16 bit user number */
+ UPSTREAMFIELD_VERSION, /* 9 - Contains version string */
+ UPSTREAMFIELD_EVENTLOGRECORD, /* 10 - Contains eventLog_e event log record */
+ UPSTREAMFIELD_DATETIME, /* 11 - Contains 8 byte date/time data */
+ UPSTREAMFIELD_EVENTLOGRECORDCOUNT, /* 17 - Contains number of event log records */
+ UPSTREAMFIELD_DECLINEDRECORDCOUNT, /* 20 - Contains number of declined log records */
+ UPSTREAMFIELD_DECLINEDRECORD, /* 21 - Contains declinedLog_t declined log record */
+ UPSTREAMFIELD_USERTYPE, /* 23 - Contains the user type (master, emergency, normal, etc) */
+ UPSTREAMFIELD_ACCESSALWAYS, /* 24 - Contains the access always mode (true, false) */
+ UPSTREAMFIELD_CACHED, /* 25 - Contains the cached flag (true, false) */
+ UPSTREAMFIELD_PRIMARYFIELDTYPE, /* 26 - Contains the primary field type (pin, prox, mag) */
+ UPSTREAMFIELD_AUXFIELDTYPE, /* 27 - Contains the aux field type (pin, prox, mag) */
+ UPSTREAMFIELD_ACCESSMODE, /* 28 - Contains the access mode (aux only, aux + pin, aux or pin, etc) */
+ UPSTREAMFIELD_EXPIREON, /* 29 - Contains the date the user expires on (00/00/00 if not set) */
+ UPSTREAMFIELD_USECOUNT, /* 30 - Contains the use count (if user type is ONE_TIME) */
+ UPSTREAMFIELD_TIMEZONE, /* 31 - Contains the timezone bit map */
+ UPSTREAMFIELD_EXCEPTIONGROUP, /* 32 - Contains the exception group */
+ UPSTREAMFIELD_PRIMARYPIN, /* 33 - Contains the primary PPMI (ASCII, 0 terminated) */
+ UPSTREAMFIELD_AUXPIN, /* 34 - Contains the aux PPMI (ASCII, 0 terminated) */
+ UPSTREAMFIELD_ALARMRECORDCOUNT, /* 35 - Contains number of alarm log records */
+ UPSTREAMFIELD_ALARMRECORD, /* 36 - Contains alarmLog_t alarm log record */
+ UPSTREAMFIELD_AUXCTLRVERSION, /* 37 - Contains the version number of the auxiliary controller */
+ UPSTREAMFIELD_LAST
+}
+upstreamField_e;
+
+typedef enum
+{
+ USERTYPE_NONE = 0, /* 0 - No user */
+ USERTYPE_MASTER, /* 1 - Master user (clears panic, relock, lockout and auto open) */
+ USERTYPE_EMERGENCY, /* 2 - Opens door regardless of state */
+ USERTYPE_SUPERVISOR, /* 3 - Like emergency user, except won't unlock when in panic mode */
+ USERTYPE_USER, /* 4 - Generic user */
+ USERTYPE_EXTENDED, /* 5 - Same as _USER, but strike can be kept open longer */
+ USERTYPE_PASSAGE, /* 6 - Toggles strike between passage and non-passage modes */
+ USERTYPE_ONETIME, /* 7 - User may be used one time */
+ USERTYPE_PANIC, /* 8 - Locks down locks, no user except master valid */
+ USERTYPE_LOCKOUT, /* 9 - Locks out regular, extended, passage, one time, and notify users */
+ USERTYPE_RELOCK, /* 10 - Relock cancels passage mode, but can't unlock */
+ USERTYPE_NOTIFY, /* 11 - Same as _USER, only sends unsolicited message to server */
+ USERTYPE_COMM, /* 12 - Kicks a communications sessions off if not running _HARDON scheduler */
+ USERTYPE_SUSPENDED, /* 13 - User is suspended */
+ USERTYPE_LAST
+}
+userType_e;
+
/*
* Wireshark ID of the R3 protocol
@@ -79,7 +1034,7 @@ static gint hf_r3_upstreamfieldlength = -1; /* Upstream field length */
static gint hf_r3_upstreamfieldtype = -1; /* Upstream field type (upstreamField_e) */
/*static gint hf_r3_upstreamfielddatalen = -1;*/ /* Upstream field data length */
static gint hf_r3_upstreamfielderror = -1; /* Upstream field is unknown type */
-static gint hf_r3_upstreamfieldarray [UPSTREAMFIELD_LAST];
+static gint hf_r3_upstreamfieldarray[UPSTREAMFIELD_LAST];
static gint hf_r3_configitems = -1;
static gint hf_r3_configitem = -1;
@@ -3274,7 +4229,7 @@ static void dissect_serialnumber (tvbuff_t *tvb, guint32 start_offset, guint32 l
tvb_ensure_bytes_exist (tvb, start_offset, 16);
- sn_item = proto_tree_add_item (tree, hf_index, tvb, start_offset, 16, TRUE);
+ sn_item = proto_tree_add_item (tree, hf_index, tvb, start_offset, 16, ENC_ASCII|ENC_NA);
sn_tree = proto_item_add_subtree (sn_item, ett_r3serialnumber);
s = tvb_get_ephemeral_string (tvb, start_offset + 0, 2);
@@ -3315,6 +4270,7 @@ static void dissect_r3_upstreamfields (tvbuff_t *tvb, guint32 start_offset _U_,
guint32 fieldType = tvb_get_guint8 (tvb, offset + 1);
guint32 dataLength = fieldLength - 2;
proto_item *upstreamfield_item = NULL;
+ proto_item *upstreamfield_length = NULL;
proto_tree *upstreamfield_tree = NULL;
const gchar *usfn = NULL;
@@ -3323,22 +4279,25 @@ static void dissect_r3_upstreamfields (tvbuff_t *tvb, guint32 start_offset _U_,
upstreamfield_item = proto_tree_add_none_format (tree, hf_r3_upstreamfield, tvb, offset + 0, fieldLength, "Upstream Field: %s (%u)", usfn, fieldType);
upstreamfield_tree = proto_item_add_subtree (upstreamfield_item, ett_r3upstreamfield);
- proto_tree_add_item (upstreamfield_tree, hf_r3_upstreamfieldlength, tvb, offset + 0, 1, ENC_LITTLE_ENDIAN);
+ upstreamfield_length = proto_tree_add_item (upstreamfield_tree, hf_r3_upstreamfieldlength, tvb, offset + 0, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item (upstreamfield_tree, hf_r3_upstreamfieldtype, tvb, offset + 1, 1, ENC_LITTLE_ENDIAN);
+ if (fieldLength < 2)
+ {
+ dataLength = 0;
+ expert_add_info_format (pinfo, upstreamfield_length, PI_UNDECODED, PI_WARN, "Malformed length value -- all fields are at least 2 octets.");
+ }
+
offset += 2;
switch (fieldType)
{
/*
- * Strings, booleans, 8 & 16 bit values
+ * Booleans, 8 & 16 bit values
*/
case UPSTREAMFIELD_NOTUSED :
- case UPSTREAMFIELD_PIN :
- case UPSTREAMFIELD_VERSION :
case UPSTREAMFIELD_PRIMARYPIN :
case UPSTREAMFIELD_AUXPIN :
- case UPSTREAMFIELD_AUXCTLRVERSION :
case UPSTREAMFIELD_ACCESSALWAYS :
case UPSTREAMFIELD_CACHED :
case UPSTREAMFIELD_ENTRYDEVICE :
@@ -3356,7 +4315,16 @@ static void dissect_r3_upstreamfields (tvbuff_t *tvb, guint32 start_offset _U_,
case UPSTREAMFIELD_EVENTLOGRECORDCOUNT :
case UPSTREAMFIELD_DECLINEDRECORDCOUNT :
case UPSTREAMFIELD_ALARMRECORDCOUNT :
- proto_tree_add_item (upstreamfield_tree, hf_r3_upstreamfieldarray [fieldType], tvb, offset, dataLength, TRUE);
+ proto_tree_add_item (upstreamfield_tree, hf_r3_upstreamfieldarray [fieldType], tvb, offset, dataLength, ENC_LITTLE_ENDIAN);
+ break;
+
+ /*
+ * Strings
+ */
+ case UPSTREAMFIELD_PIN :
+ case UPSTREAMFIELD_VERSION :
+ case UPSTREAMFIELD_AUXCTLRVERSION :
+ proto_tree_add_item (upstreamfield_tree, hf_r3_upstreamfieldarray [fieldType], tvb, offset, dataLength, ENC_ASCII|ENC_NA);
break;
/*
@@ -3485,7 +4453,7 @@ static void dissect_r3_upstreamfields (tvbuff_t *tvb, guint32 start_offset _U_,
else
{
tz = tvb_get_letohl (tvb, offset);
- timezone_item = proto_tree_add_item (upstreamfield_tree, hf_r3_upstreamfieldarray [fieldType], tvb, offset, 4, TRUE);
+ timezone_item = proto_tree_add_item (upstreamfield_tree, hf_r3_upstreamfieldarray [fieldType], tvb, offset, 4, ENC_LITTLE_ENDIAN);
timezone_tree = proto_item_add_subtree (timezone_item, ett_r3timezone);
for (i = 0; i < 32; i++)
@@ -3673,9 +4641,9 @@ static void dissect_r3_upstreamcommand_rmteventlogrecord (tvbuff_t *tvb, guint32
static void dissect_r3_upstreamcommand_dpac (tvbuff_t *tvb, guint32 start_offset, guint32 length _U_, packet_info *pinfo _U_, proto_tree *tree)
{
/* XXX: hf[] entries for the following hf indexes do not exist ?? */
- proto_tree_add_item (tree, hf_r3_dpacreply_stuff, tvb, start_offset + 2, 1, TRUE);
- proto_tree_add_item (tree, hf_r3_dpacreply_length, tvb, start_offset + 3, 1, TRUE);
- proto_tree_add_item (tree, hf_r3_dpacreply_reply, tvb, start_offset + 4, -1, TRUE);
+ proto_tree_add_item (tree, hf_r3_dpacreply_stuff, tvb, start_offset + 2, 1, ENC_NA);
+ proto_tree_add_item (tree, hf_r3_dpacreply_length, tvb, start_offset + 3, 1, ENC_NA);
+ proto_tree_add_item (tree, hf_r3_dpacreply_reply, tvb, start_offset + 4, -1, ENC_NA);
}
static void dissect_r3_upstreamcommand_notify (tvbuff_t *tvb, guint32 start_offset, guint32 length, packet_info *pinfo, proto_tree *tree)
@@ -4654,15 +5622,22 @@ static void dissect_r3_cmd_manageuser (tvbuff_t *tvb, guint32 start_offset, guin
guint32 paramType = tvb_get_guint8 (payload_tvb, offset + 1);
guint32 dataLength = paramLength - 2;
proto_tree *mu_tree = NULL;
+ proto_item *len_field = NULL;
const gchar *auptn = NULL;
auptn = val_to_str_ext_const (paramType, &r3_adduserparamtypenames_ext, "[Unknown Field]");
mu_tree = proto_item_add_subtree (proto_tree_add_none_format (tree, hf_r3_adduserparamtype, payload_tvb, offset + 0, paramLength, "Manage User Field: %s (%u)", auptn, paramType), ett_r3manageuser);
- proto_tree_add_item (mu_tree, hf_r3_adduserparamtypelength, payload_tvb, offset + 0, 1, ENC_LITTLE_ENDIAN);
+ len_field = proto_tree_add_item (mu_tree, hf_r3_adduserparamtypelength, payload_tvb, offset + 0, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item (mu_tree, hf_r3_adduserparamtypetype, payload_tvb, offset + 1, 1, ENC_LITTLE_ENDIAN);
+ if (paramLength < 2)
+ {
+ dataLength = 0;
+ expert_add_info_format (pinfo, len_field, PI_UNDECODED, PI_WARN, "Malformed length value -- all fields are at least 2 octets.");
+ }
+
offset += 2;
switch (paramType)
@@ -4677,21 +5652,21 @@ static void dissect_r3_cmd_manageuser (tvbuff_t *tvb, guint32 start_offset, guin
case ADDUSERPARAMTYPE_USECOUNT :
case ADDUSERPARAMTYPE_EXCEPTIONGROUP :
if (dataLength != 1)
- expert_add_info_format (pinfo, tree, PI_UNDECODED, PI_WARN, "Malformed field -- expected 1 octet");
+ expert_add_info_format (pinfo, mu_tree, PI_UNDECODED, PI_WARN, "Malformed field -- expected 1 octet");
else
- proto_tree_add_item (mu_tree, hf_r3_adduserparamtypearray [paramType], payload_tvb, offset, dataLength, TRUE);
+ proto_tree_add_item (mu_tree, hf_r3_adduserparamtypearray [paramType], payload_tvb, offset, dataLength, ENC_LITTLE_ENDIAN);
break;
case ADDUSERPARAMTYPE_USERNO :
if (dataLength != 2)
- expert_add_info_format (pinfo, tree, PI_UNDECODED, PI_WARN, "Malformed field -- expected 2 octets");
+ expert_add_info_format (pinfo, mu_tree, PI_UNDECODED, PI_WARN, "Malformed field -- expected 2 octets");
else
- proto_tree_add_item (mu_tree, hf_r3_adduserparamtypearray [paramType], payload_tvb, offset, dataLength, TRUE);
+ proto_tree_add_item (mu_tree, hf_r3_adduserparamtypearray [paramType], payload_tvb, offset, dataLength, ENC_LITTLE_ENDIAN);
break;
case ADDUSERPARAMTYPE_PRIMARYFIELD :
case ADDUSERPARAMTYPE_AUXFIELD :
- proto_tree_add_item (mu_tree, hf_r3_adduserparamtypearray [paramType], payload_tvb, offset, dataLength, TRUE);
+ proto_tree_add_item (mu_tree, hf_r3_adduserparamtypearray [paramType], payload_tvb, offset, dataLength, ENC_NA);
break;
case ADDUSERPARAMTYPE_EXPIREON :
@@ -4700,7 +5675,7 @@ static void dissect_r3_cmd_manageuser (tvbuff_t *tvb, guint32 start_offset, guin
proto_tree *expireon_tree = NULL;
if (dataLength != 3)
- expert_add_info_format (pinfo, tree, PI_UNDECODED, PI_WARN, "Malformed expiration field -- expected 3 octets");
+ expert_add_info_format (pinfo, mu_tree, PI_UNDECODED, PI_WARN, "Malformed expiration field -- expected 3 octets");
else
{
expireon_item = proto_tree_add_text (mu_tree, payload_tvb, offset, 3, "Expire YY/MM/DD: %02u/%02u/%02u",
@@ -4722,11 +5697,11 @@ static void dissect_r3_cmd_manageuser (tvbuff_t *tvb, guint32 start_offset, guin
proto_tree *timezone_tree = NULL;
if (dataLength != 4)
- expert_add_info_format (pinfo, tree, PI_UNDECODED, PI_WARN, "Malformed timezone field -- expected 4 octets");
+ expert_add_info_format (pinfo, mu_tree, PI_UNDECODED, PI_WARN, "Malformed timezone field -- expected 4 octets");
else
{
tz = tvb_get_letohl (payload_tvb, offset);
- timezone_item = proto_tree_add_item (mu_tree, hf_r3_upstreamfieldarray [paramType], payload_tvb, offset, 4, TRUE);
+ timezone_item = proto_tree_add_item (mu_tree, hf_r3_upstreamfieldarray [paramType], payload_tvb, offset, 4, ENC_LITTLE_ENDIAN);
timezone_tree = proto_item_add_subtree (timezone_item, ett_r3timezone);
for (i = 0; i < 32; i++)
@@ -5145,9 +6120,9 @@ static void dissect_r3_cmd_dpac (tvbuff_t *tvb, guint32 start_offset, guint32 le
proto_tree_add_item (tree, hf_r3_commandlength, tvb, start_offset + 0, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item (tree, hf_r3_command, tvb, start_offset + 1, 1, ENC_LITTLE_ENDIAN);
/* XXX: hf[] entries for the following hf indexes do not exist ?? */
- proto_tree_add_item (tree, hf_r3_dpac_action, payload_tvb, 0, 1, TRUE);
- proto_tree_add_item (tree, hf_r3_dpac_waittime, payload_tvb, 1, 2, TRUE);
- proto_tree_add_item (tree, hf_r3_dpac_command, payload_tvb, 3, -1, TRUE);
+ proto_tree_add_item (tree, hf_r3_dpac_action, payload_tvb, 0, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item (tree, hf_r3_dpac_waittime, payload_tvb, 1, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item (tree, hf_r3_dpac_command, payload_tvb, 3, -1, ENC_NA);
}
static void dissect_r3_cmd_selftest (tvbuff_t *tvb, guint32 start_offset, guint32 length _U_, packet_info *pinfo _U_, proto_tree *tree)
diff --git a/epan/dissectors/packet-assa_r3_public.h b/epan/dissectors/packet-assa_r3_public.h
deleted file mode 100644
index 3995c30b74..0000000000
--- a/epan/dissectors/packet-assa_r3_public.h
+++ /dev/null
@@ -1,996 +0,0 @@
-/* packet-r3_public.h
- * Routines for R3 packet dissection
- * Copyright (c) 2009 Assa Abloy USA <jcwren@assaabloyusa.com>
- *
- * $Id$
- *
- * Wireshark - Network traffic analyzer
- * By Gerald Combs <gerald@wireshark.org>
- * Copyright 1998 Gerald Combs
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef __PACKET_ASSA_R3_PUBLIC_H__
-#define __PACKET_ASSA_R3_PUBLIC_H__
-
-/* */
-/* System limits */
-/* */
-#define MAX_USERS 2400
-#define MAX_TIMEZONES 32
-#define MAX_EXCEPTIONS 64
-#define MAX_EXCEPTIONGROUPS 64
-#define MAX_EVENTENTRIES 10000
-#define MAX_DECLINEDENTRIES 500
-#define MAX_ALARMENTRIES 200
-
-/*
- * Enumerations
- */
-typedef enum
-{
- ACCESSMODE_NONE = 0, /* 0 - No access mode (not used, not legal, I think) */
- ACCESSMODE_PRIMARYONLY, /* 1 - Primary only */
- ACCESSMODE_PRIMARYORAUX, /* 2 - Primary or aux field */
- ACCESSMODE_PRIMARYANDAUX, /* 3 - Primary and aux field */
- ACCESSMODE_PRIMARYTHENAUX, /* 4 - Primary required first, then aux */
- ACCESSMODE_LAST /* 5 - Dummy, for range checking */
-}
-accessMode_e;
-
-typedef enum
-{
- ADDUSERPARAMTYPE_DISPOSITION = 0, /* 0 - What we're supposed to do (add, delete, etc) */
- ADDUSERPARAMTYPE_USERNO, /* 1 - User to manage (user number, U16) */
- ADDUSERPARAMTYPE_ACCESSALWAYS, /* 2 - Access always (boolean) */
- ADDUSERPARAMTYPE_ACCESSMODE, /* 3 - Access type (accessMode_e) */
- ADDUSERPARAMTYPE_CACHED, /* 4 - Entry is managed by cache system (boolean) */
- ADDUSERPARAMTYPE_USERTYPE, /* 5 - User type (userType_e) */
- ADDUSERPARAMTYPE_PRIMARYFIELD, /* 6 - Primary field (MAX_CREDENTIALBYTES) */
- ADDUSERPARAMTYPE_PRIMARYFIELDTYPE, /* 7 - Primary field type (fieldType_e); */
- ADDUSERPARAMTYPE_AUXFIELD, /* 8 - Auxiliary field (MAX_CREDENTIALBYTES) */
- ADDUSERPARAMTYPE_AUXFIELDTYPE, /* 9 - Auxiliary field type (fieldType_e) */
- ADDUSERPARAMTYPE_TIMEZONE, /* 10 - Timezone bitmap (U32) */
- ADDUSERPARAMTYPE_EXPIREON, /* 11 - Date on which user no longer granted access, if non-0 */
- ADDUSERPARAMTYPE_USECOUNT, /* 12 - Use count */
- ADDUSERPARAMTYPE_EXCEPTIONGROUP, /* 13 - Exception group */
- ADDUSERPARAMTYPE_LAST
-}
-addUserParamType_e;
-
-typedef enum
-{
- ALARMID_NONE = 0, /* 0 - No alarm */
- ALARMID_VALIDIN, /* 1 - Valid entry */
- ALARMID_DENIEDACCESS, /* 2 - Denied access (bad credential) */
- ALARMID_SECURED, /* 3 - Door closed & secured (only seen after alarms 3 or 4) */
- ALARMID_DOORFORCED, /* 4 - Door forced */
- ALARMID_KEYOVERRIDE, /* 5 - Key override */
- ALARMID_INVALIDENTRY, /* 6 - Door open but invalid entry (key used?) */
- ALARMID_DOORAJAR, /* 7 - Door ajar (needs .ja woman with Engrish accent) */
- ALARMID_LOWBATTERY, /* 8 - Low battery alarm */
- ALARMID_RXHELD, /* 9 - RX held */
- ALARMID_LAST
-}
-alarmID_e;
-
-typedef enum
-{
- CAPABILITIES_USERS = 0, /* 0 - Number of users supported */
- CAPABILITIES_TIMEZONES, /* 1 - Number of timezone supported */
- CAPABILITIES_EXCEPTIONS, /* 2 - Number of exceptions supported */
- CAPABILITIES_EXCEPTIONGROUPS, /* 3 - Number of exception groups supported */
- CAPABILITIES_EVENTLOG, /* 4 - Number of event log entries supported */
- CAPABILITIES_DECLINEDLOG, /* 5 - Number of declined log entries supported */
- CAPABILITIES_ALARMLOG, /* 6 - Number of alarm log entries supported */
- CAPABILITIES_TOTALEVENTS, /* 7 - Total events (EVENT_LAST - 1) */
- CAPABILITIES_LAST
-}
-capabilities_e;
-
-typedef enum
-{
- CHECKSUMRESULT_CONFIGURATIONNVRAM = 0, /* 0 - Checksum results of the configuration NVRAM */
- CHECKSUMRESULT_EXCEPTIONS, /* 1 - Checksum results of the exceptions NVRAM */
- CHECKSUMRESULT_EXCEPTIONGROUPS, /* 2 - Checksum results of the exception groups NVRAM */
- CHECKSUMRESULT_TZCALENDARS, /* 3 - Checksum results of the time zone calendar NVRAM */
- CHECKSUMRESULT_TIMEZONES, /* 4 - Checksum results of the time zone NVRAM */
- CHECKSUMRESULT_USERS, /* 5 - Checksum results of the users NVRAM */
- CHECKSUMRESULT_CACHELRU, /* 6 - Checksum results of the cache LRU */
- CHECKSUMRESULT_LAST
-}
-checksumResult_e;
-
-typedef enum
-{
- CMD_RESPONSE = 0, /* 0 - Response to command */
- CMD_HANDSHAKE, /* 1 - Establish session */
- CMD_KILLSESSION, /* 2 - Kill session */
- CMD_QUERYSERIALNUMBER, /* 3 - Query serial number */
- CMD_QUERYVERSION, /* 4 - Query version */
- CMD_SETDATETIME, /* 5 - Set date and time */
- CMD_QUERYDATETIME, /* 6 - Query date and time */
- CMD_SETCONFIG, /* 7 - Set configuration options */
- CMD_GETCONFIG, /* 8 - Read configuration options */
- CMD_MANAGEUSER, /* 9 - Manage users (add/delete/replace/update) */
- CMD_DELETEUSERS, /* 10 - Delete users (all/most/cached) */
- CMD_DEFINEEXCEPTION, /* 11 - Define exception (old block holiday) */
- CMD_DEFINEEXCEPTIONGROUP, /* 12 - Define exception group */
- CMD_DEFINECALENDAR, /* 13 - Define calendar */
- CMD_DEFINETIMEZONE, /* 14 - Define time zone */
- CMD_RMTAUTHRETRY, /* 15 - Remote authorization retry */
- CMD_FILTERS, /* 16 - Event log filter configuration */
- CMD_ALARMCONFIGURE, /* 17 - Alarm condition configuration */
- CMD_EVENTLOGDUMP, /* 18 - Dump event log */
- CMD_DECLINEDLOGDUMP, /* 19 - Dump declined log */
- CMD_ALARMLOGDUMP, /* 20 - Dump alarm log */
- CMD_DOWNLOADFIRMWARE, /* 21 - Download firmware */
- CMD_DOWNLOADFIRMWARETIMEOUT, /* 22 - Download firmware timeout (internal command only) */
- CMD_POWERTABLESELECTION, /* 23 - Power table selection */
- CMD_CLEARNVRAM, /* 24 - Clear nvram (config/event log/declined log/etc) */
- CMD_DPAC, /* 25 - DPAC manipulation commands */
- CMD_SELFTEST, /* 26 - Selftest (heh) */
- CMD_RESET, /* 27 - Restart controller */
- CMD_LOGWRITE, /* 28 - Write event to event log */
- CMD_MFGCOMMAND, /* 29 - Manufacturing commands */
- CMD_NVRAMBACKUP, /* 30 - Backup/restore/erase NVRAM */
- CMD_EXTENDEDRESPONSE, /* 31 - Response to command (extended version) */
- CMD_LAST
-}
-cmdCommand_e;
-
-typedef enum
-{
- CMDMFG_SETSERIALNUMBER = 0, /* 0 - Set serial number */
- CMDMFG_SETCRYPTKEY, /* 1 - Set encryption key */
- CMDMFG_DUMPNVRAM, /* 2 - Dump NVRAM */
- CMDMFG_TERMINAL, /* 3 - DPAC terminal mode */
- CMDMFG_REMOTEUNLOCK, /* 4 - Remote unlock (only on 'd' builds) */
- CMDMFG_AUXCTLRVERSION, /* 5 - Request version of auxiliary controller */
- CMDMFG_IOPINS, /* 6 - Read I/O pin states */
- CMDMFG_ADCS, /* 7 - Read ADC values */
- CMDMFG_HARDWAREID, /* 8 - Read hardware ID and CPU ID */
- CMDMFG_CHECKPOINTLOGDUMP, /* 9 - Dump checkpoint log */
- CMDMFG_CHECKPOINTLOGCLEAR, /* 10 - Clear checkpoint log */
- CMDMFG_READREGISTERS, /* 11 - Read selected CPU registers */
- CMDMFG_FORCEOPTIONS, /* 12 - Force I/O lines to certain states */
- CMDMFG_COMMUSER, /* 13 - Fake a comm user entry */
- CMDMFG_DUMPKEYPAD, /* 14 - Dump keypad debugging buffer */
- CMDMFG_BATTERYCHECK, /* 15 - Force battery check */
- CMDMFG_RAMREFRESH, /* 16 - Refresh RAM variables from NVRAM */
- CMDMFG_TASKFLAGS, /* 17 - Dump task flags */
- CMDMFG_TIMERCHAIN, /* 18 - Dump active timer chains */
- CMDMFG_PEEKPOKE, /* 19 - Peek/poke CPU RAM memory */
- CMDMFG_LOCKSTATE, /* 20 - Display global gLockState variable */
- CMDMFG_CAPABILITIES, /* 21 - Read firmware capabilities (# users/event log entries, etc) */
- CMDMFG_DUMPM41T81, /* 22 - Dump M41T81 RTC registers */
- CMDMFG_DEBUGLOGDUMP, /* 23 - Dump debugging log */
- CMDMFG_DEBUGLOGCLEAR, /* 24 - Clear debugging log */
- CMDMFG_TESTWDT, /* 25 - Test watchdog */
- CMDMFG_QUERYCKSUM, /* 26 - Query NVRAM checksum value */
- CMDMFG_VALIDATECHECKSUMS, /* 27 - Validate checksums */
- CMDMFG_REBUILDLRUCACHE, /* 28 - Rebuild LRC cache */
- CMDMFG_TZUPDATE, /* 29 - Send TZCHANGE to tod.c */
- CMDMFG_TESTPRESERVE, /* 30 - Test preserve save/restore code */
- CMDMFG_MORTISESTATELOGDUMP, /* 31 - Dump the mortise state log */
- CMDMFG_MORTISESTATELOGCLEAR, /* 32 - Clear the mortise state log */
- CMDMFG_MORTISEPINS, /* 33 - Display current mortise pin status */
- CMDMFG_HALTANDCATCHFIRE, /* 34 - Stop processor (optionally catch fire) */
- CMDMFG_LAST
-}
-cmdMfgCommand_e;
-
-typedef enum
-{
- CONFIGITEM_SERIAL_NUMBER = 0, /* 0 - Ye olde serial number */
- CONFIGITEM_CRYPT_KEY, /* 1 - The encryption/decryption key */
- CONFIGITEM_HARDWARE_OPTIONS_MFG, /* 2 - Bit map of hardware options at manufacturing time (hardwareOptions_e) */
- CONFIGITEM_HARDWARE_OPTIONS, /* 3 - Bit map of hardware options at runtime time (hardwareOptions_e) */
- CONFIGITEM_NVRAM_CHANGES, /* 4 - Log of NVRAM changes since reset (which blocks were reset) */
-
- CONFIGITEM_NVRAMDIRTY, /* 5 - NVRAM is (or might be) dirty */
- CONFIGITEM_NVRAM_WV, /* 6 - NVRAM write verify (I2C parts only) */
- CONFIGITEM_ENABLE_WDT, /* 7 - If true, and OPT_WATCHDOG enabled, enables WDT */
- CONFIGITEM_EARLY_ACK, /* 8 - Generates early RESPONSE_COMMANDRECEIVED message for commands that take some time */
- CONFIGITEM_CONSOLE_AES_ONLY, /* 9 - If set, requires AES encryption on serial communications */
- CONFIGITEM_RADIO_AES_ONLY, /* 10 - If set, requires AES encryption on radio communications */
- CONFIGITEM_NDRLE, /* 11 - RLE (Run Length Encoding) NVRAM dump enable/disable */
- CONFIGITEM_SOMF, /* 12 - Stop on mortise failure */
- CONFIGITEM_NOGAF, /* 13 - Prevents what should be fatal errors from being fatal (i.e, No One Gives A Flip) */
- CONFIGITEM_CARD_READER_POWER, /* 14 - External mag reader power supply control */
- CONFIGITEM_PROX_ENABLE, /* 15 - Prox into permanent sleep mode */
- CONFIGITEM_CKSUMCONFIG, /* 16 - Configuration NVRAM checksum enable/disable */
- CONFIGITEM_DAILY_BATTERY_CHECK, /* 17 - Enable/disable daily battery check */
- CONFIGITEM_DAILY_BATTERY_CHECK_HOUR, /* 18 - If daily battery check enabled, top of the hour to check at */
- CONFIGITEM_BATTERY_LOW, /* 19 - Return low battery status (TRUE = low) */
-
- CONFIGITEM_LRU_HEAD, /* 20 - Cache LRU head pointer */
- CONFIGITEM_LRU_TAIL, /* 21 - Cache LRU tail pointer */
- CONFIGITEM_RTC_CALIBRATION, /* 22 - Signed 6 bit value written to M41T81 calibration register */
- CONFIGITEM_ACVREQUESTER, /* 23 - Auxiliary controller version requester (fromDevice_e, internal variable) */
- CONFIGITEM_LOCAL_LED, /* 24 - Local LED function assignment */
-
- CONFIGITEM_ERRCNT_XORLEN, /* 25 - Error counter for XOR length not matching in protocol.c */
- CONFIGITEM_ERRCNT_CRC, /* 26 - Error counter for bad CRC in protocol.c */
- CONFIGITEM_ERRCNT_NOTSIGIL, /* 27 - Error counter for character received was not sigil in protocol.c */
- CONFIGITEM_ERRCNT_TIMEOUT, /* 28 - Error counter for timeout in protocol.c */
- CONFIGITEM_ERRCNT_TOOLONG, /* 29 - Error counter for packet too long in protocol.c */
- CONFIGITEM_ERRCNT_TOOSHORT, /* 30 - Error counter for packet too short in protocol.c */
- CONFIGITEM_ERRCNT_HITDEFAULT, /* 31 - Error counter for hitting default handler in protocol.c */
- CONFIGITEM_ERRCNT_OVERRUN, /* 32 - Error counter for serial buffer overrun in serial.c */
- CONFIGITEM_ERRCNT_UARTFE, /* 33 - Error counter for UART framing error in serial.c */
- CONFIGITEM_ERRCNT_UARTOE, /* 34 - Error counter for UART overrun error in serial.c */
-
- CONFIGITEM_DST_SET, /* 35 - Daylight savings time currently active */
- CONFIGITEM_DST_MODE, /* 36 - Determines if repeating month/date, repeating month/day, or specific month/date (dstMode_e) */
- CONFIGITEM_DST_FORWARD_MONTH, /* 37 - Month to skip forward on (1-12) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
- CONFIGITEM_DST_FORWARD_DOM, /* 38 - Day of month to skip forward on (1-31) (DSTMODE_REPEATINGDATE, DSTMODE_ONETIMEDATE) */
- CONFIGITEM_DST_FORWARD_OOD, /* 39 - Occurence number of CONFIGITEM_DST_FORWARD_DOW to skip forward on (1-5) (DSTMODE_REPEATINGDOW) */
- CONFIGITEM_DST_FORWARD_DOW, /* 40 - Day of week to skip forward on (1-7) (DSTMODE_REPEATINGDOW) */
- CONFIGITEM_DST_FORWARD_HOUR, /* 41 - Hour of day of month to skip forward on (0-23) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
- CONFIGITEM_DST_FORWARD_MINUTE, /* 42 - Hour of day of month to skip forward on (0-23) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
- CONFIGITEM_DST_FORWARD_ADJUST, /* 43 - Number of minutes to move forward */
- CONFIGITEM_DST_BACK_MONTH, /* 44 - Month to fall back on (1-12) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDAY, DSTMODE_ONETIMEDATE) */
- CONFIGITEM_DST_BACK_DOM, /* 45 - Day of month to fall back on (1-31) (DSTMODE_REPEATINGDATE, DSTMODE_ONETIMEDATE) */
- CONFIGITEM_DST_BACK_OOD, /* 46 - Occurence number of CONFIGITEM_DST_BACK_DOW to fall back on (1-5) (DSTMODE_REPEATINGDOW) */
- CONFIGITEM_DST_BACK_DOW, /* 47 - Day of week to fall back on (1-7) (DSTMODE_REPEATINGDATE, DSTMODE_ONETIMEDATE) */
- CONFIGITEM_DST_BACK_HOUR, /* 48 - Hour of day of month to fall back on (0-23) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
- CONFIGITEM_DST_BACK_MINUTE, /* 49 - Hour of day of month to fall back on (0-23) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
- CONFIGITEM_DST_BACK_ADJUST, /* 50 - Number of minutes to move backwards */
-
- CONFIGITEM_EVENTLOG_ZEROMEM, /* 51 - If set, event log memory is zeroed when event log cleared */
- CONFIGITEM_EVENTLOG_BEGIN, /* 52 - Beginning record number when event log cleared */
- CONFIGITEM_EVENTLOG_RECORD, /* 53 - Next event log record to write */
- CONFIGITEM_EVENTLOG_ENTRIES, /* 54 - Number of entries in event log */
- CONFIGITEM_EVENTLOG_WARNDEVICE, /* 55 - Event log warning device */
- CONFIGITEM_EVENTLOG_WARNEVERY, /* 56 - Warn at every 'n' records (more or less) */
- CONFIGITEM_EVENTLOG_RMTDEVICE, /* 57 - Device event log entries copied to (fromDevice_e) */
-
- CONFIGITEM_DECLINEDLOG_ZEROMEM, /* 58 - If set, declined log memory is zeroed when declined log cleared */
- CONFIGITEM_DECLINEDLOG_BEGIN, /* 59 - Beginning record number when declined log cleared */
- CONFIGITEM_DECLINEDLOG_RECORD, /* 60 - Next declined log record to write */
- CONFIGITEM_DECLINEDLOG_ENTRIES, /* 61 - Number of entries in declined log */
- CONFIGITEM_DECLINEDLOG_WARNDEVICE, /* 62 - Declined record warning device */
- CONFIGITEM_DECLINEDLOG_WARNEVERY, /* 63 - Warn at every 'n' records (more or less) */
- CONFIGITEM_DECLINEDLOG_RMTDEVICE, /* 64 - Device declined entries copied to (fromDevice_e) */
-
- CONFIGITEM_ALARMLOG_ZEROMEM, /* 65 - If set, alarm log memory is zeroed when alarm log cleared */
- CONFIGITEM_ALARMLOG_BEGIN, /* 66 - Beginning record number when alarm log cleared */
- CONFIGITEM_ALARMLOG_RECORD, /* 67 - Next alarm log record to write */
- CONFIGITEM_ALARMLOG_ENTRIES, /* 68 - Number of entries in alarm log */
- CONFIGITEM_ALARMLOG_WARNDEVICE, /* 69 - Alarm record warning device */
- CONFIGITEM_ALARMLOG_WARNEVERY, /* 70 - Warn at every 'n' records (more or less) */
- CONFIGITEM_ALARMLOG_RMTDEVICE, /* 71 - Device alarm entries copied to (fromDevice_e) */
-
- CONFIGITEM_VISIBLE_FEEDBACK, /* 72 - Visible feedback on keypad presses enabled */
- CONFIGITEM_AUDIBLE_FEEDBACK, /* 73 - Audible feedback on keypad presses enabled */
- CONFIGITEM_VISIBLE_INDICATORS, /* 74 - Visible indicators on all actions (run dark) */
- CONFIGITEM_AUDIBLE_INDICATORS, /* 75 - Audible indicators on all actions (run silent) */
- CONFIGITEM_2NDPINDURATION, /* 76 - Number of seconds to wait for second PIN */
- CONFIGITEM_LOCKOUT_ATTEMPTS, /* 77 - Number of pin/prox/magcard attempts before lockout */
- CONFIGITEM_LOCKOUT_DURATION, /* 78 - Duration of lockout, in penta-seconds */
- CONFIGITEM_KEYPAD_INACTIVITY, /* 79 - Duration in seconds with no key entries before key buffer cleared */
- CONFIGITEM_ICIDLE_DURATION, /* 80 - If last credential was invalid, invalid attempt counter reset after this many seconds */
- CONFIGITEM_WRITE_DECLINED_LOG, /* 81 - Declined log writing enable/disable */
- CONFIGITEM_LOW_BATTERY_INDICATOR, /* 82 - Low battery audio/visual indicator enable/disable */
-
- CONFIGITEM_PANIC_MODE, /* 83 - Enable/disable panic mode */
-
- CONFIGITEM_TIMEZONE_ENABLE, /* 84 - Timezones enabled (applies to users, not passage modes) */
- CONFIGITEM_EXCEPTION_ENABLE, /* 85 - Exceptions enabled (applies to users and passage modes) */
- CONFIGITEM_AUTOUNLOCK_ENABLE, /* 86 - Auto-unlocking (schedule based) enabled */
-
- CONFIGITEM_LOCK_PRIORITY_EMERGENCY, /* 87 - DPAC/PWM lock priority for emergency users (lockPriority_e) */
- CONFIGITEM_LOCK_PRIORITY_SUPERVISOR, /* 88 - DPAC/PWM lock priority for supervisors (lockPriority_e) */
- CONFIGITEM_LOCK_PRIORITY_USER, /* 89 - DPAC/PWM lock priority for users (lockPriority_e) */
- CONFIGITEM_LOCK_PRIORITY_PASSAGE, /* 90 - DPAC/PWM lock priority for passage mode (lockPriority_e) */
- CONFIGITEM_LOCK_PRIORITY_PANIC, /* 91 - DPAC/PWM lock priority for panic mode/panic users (lockPriority_e) */
- CONFIGITEM_LOCK_PRIORITY_LOCKOUT, /* 92 - DPAC/PWM lock priority for remote unlock (lockPriority_e) */
- CONFIGITEM_LOCK_PRIORITY_RELOCK, /* 93 - DPAC/PWM lock priority for remote unlock (lockPriority_e) */
- CONFIGITEM_LOCK_PRIORITY_BOLTTHROWN, /* 94 - DPAC/PWM lock priority for bolt thrown (lockPriority_e) */
- CONFIGITEM_LOCK_PRIORITY_CONFIGCHANGE, /* 95 - DPAC/PWM lock priority for configuration change (CONFIGITEM_LOCK_TYPE) (lockPriority_e) */
- CONFIGITEM_LOCK_PRIORITY_REMOTE, /* 96 - DPAC/PWM lock priority for remote unlock (lockPriority_e) */
- CONFIGITEM_LOCK_TYPE, /* 97 - Type of lock (PWM, electric, magnetic) */
- CONFIGITEM_DOUBLE_PULSE, /* 98 - Lock double pulse enabled */
- CONFIGITEM_DOUBLE_DELAY, /* 99 - Delay between double pulses, in centiseconds */
- CONFIGITEM_MOTOR_DURATION, /* 100 - Duration lock motor to run, in centiseconds */
- CONFIGITEM_MORTISE_TYPE, /* 101 - Type of mortise connected to controller */
- CONFIGITEM_UNLOCK_TIME, /* 102 - Normal unlock duration in seconds */
- CONFIGITEM_EXT_UNLOCK_TIME, /* 103 - Extended unlock duration, in seconds */
- CONFIGITEM_DOOR_AJAR_TIME, /* 104 - Time before door considered stuck open, in seconds */
-
- CONFIGITEM_SESSION_TIMEOUT, /* 105 - Session timeout, in seconds */
- CONFIGITEM_RETRY_ON_TIMEOUT, /* 106 - Retry lock-initiated sessions if comm session timed out (instead of terminated by remote end) */
-
- CONFIGITEM_UNSOLICITED_ENCRYPT, /* 107 - Unsolicited messages are encrypted (encryptionScheme_e) */
- CONFIGITEM_RMT_AUTH_TIMEOUT, /* 108 - Seconds to wait for remote authorization timeout (0 = no remote auth) */
- CONFIGITEM_RMT_AUTH_DEVICE, /* 109 - Device remote authorization requests sent over (fromDevice_e) */
- CONFIGITEM_ALARM_DEVICE, /* 110 - Device alarm condition connects via */
- CONFIGITEM_NOTIFY_DEVICE, /* 111 - Notify user device */
- CONFIGITEM_COMMUSER_DEVICE, /* 112 - Device comm user connects via */
- CONFIGITEM_SCHEDULER_DEVICE, /* 113 - Device scheduler connects via */
-
- CONFIGITEM_SCHEDULER_TYPE, /* 114 - Scheduling algorithm to use (schedulerType_e) */
- CONFIGITEM_SCHEDULER_AWAKE, /* 115 - Number of decaseconds scheduler is awake for */
- CONFIGITEM_SCHEDULER_PERIOD, /* 116 - Interval in minutes between scheduled wakeups (SCHEDULERTYPE_SIMPLE) */
- CONFIGITEM_SCHEDULER_HOD, /* 117 - Hour of day map (SCHEDULERTYPE_HOD) */
- CONFIGITEM_SCHEDULER_DOW, /* 118 - Day of month map (SCHEDULERTYPE_DOW) */
- CONFIGITEM_SCHEDULER_DOM, /* 119 - Day of month map (SCHEDULERTYPE_DOM) */
- CONFIGITEM_SCHEDULER_HM1, /* 120 - On at hour:minute #1 */
- CONFIGITEM_SCHEDULER_HM2, /* 121 - On at hour:minute #2 */
- CONFIGITEM_SCHEDULER_HM3, /* 122 - On at hour:minute #3 */
- CONFIGITEM_SCHEDULER_HM4, /* 123 - On at hour:minute #4 */
-
- CONFIGITEM_RADIO_TYPE, /* 124 - Radio type (None, DPAC, WiPort, etc) */
- CONFIGITEM_RADIO_MODE, /* 125 - Radio mode (DPAC=active/passive) */
- CONFIGITEM_RADIO_TIMEOUT, /* 126 - Number of seconds before we decide server didn't hear us (only in RADIOMODE_LOCKINITIATED) */
- CONFIGITEM_RADIO_ATTEMPTS, /* 127 - Number of times to attempt connection to server (only in RADIOMODE_LOCKINITIATED) */
- CONFIGITEM_RADIO_HOUSEKEEPING, /* 128 - Time we allow for radio housekeeping (associate with AP, etc) */
- CONFIGITEM_RADIO_LEAPUSERNAME, /* 129 - LEAP username */
- CONFIGITEM_RADIO_LEAPPASSWORD, /* 130 - LEAP password */
-
- CONFIGITEM_INHIBIT_VOLTAGE, /* 131 - Voltage when battery is considered dead */
- CONFIGITEM_LOW_VOLTAGE, /* 132 - Voltage when battery is considered low */
- CONFIGITEM_PT_RANGE_1, /* 133 - Power table for 0.00 to 5.99 volts */
- CONFIGITEM_PT_RANGE_2, /* 134 - Power table for 6.00 to 6.49 volts */
- CONFIGITEM_PT_RANGE_3, /* 135 - Power table for 6.50 to 6.99 volts */
- CONFIGITEM_PT_RANGE_4, /* 136 - Power table for 7.00 to 7.49 volts */
- CONFIGITEM_PT_RANGE_5, /* 137 - Power table for 7.50 to 7.99 volts */
- CONFIGITEM_PT_RANGE_6, /* 138 - Power table for 8.00 to 8.49 volts */
- CONFIGITEM_PT_RANGE_7, /* 139 - Power table for 8.50 to 8.99 volts */
- CONFIGITEM_PT_RANGE_8, /* 140 - Power table for 9.00 and up volts */
-
- CONFIGITEM_MAGCARD_IFS, /* 141 - Include field separator character in returned data */
- CONFIGITEM_MAGCARD_FIELDS, /* 142 - Mag card fields to include */
- CONFIGITEM_MAGCARD_OFFSET, /* 143 - Offset into concatenated field */
- CONFIGITEM_MAGCARD_DIGITS, /* 144 - Number of digits to return past offset */
-
- CONFIGITEM_ALARMS, /* 145 - Alarms (not writable) */
- CONFIGITEM_FILTERS, /* 146 - Event filter storage (not writable) */
- CONFIGITEM_ALARMSTATE, /* 147 - Current alarm state (alarmID_e) */
- CONFIGITEM_DOORSTATE, /* 148 - Current door state (doorState_e) */
-
- CONFIGITEM_DPACDEBUG, /* 149 - Enable DPAC debug events to event log */
- CONFIGITEM_FAILOPENSECURE, /* 150 - Fail open (false) or secure (true) on battery dead */
-
- CONFIGITEM_REPLACED_VOLTAGE, /* 151 - If battery above this voltage, it's been replaced */
-
- CONFIGITEM_RX_HELD_TIME, /* 152 - If RX held longer than this, sent RX held alarm */
- CONFIGITEM_PACKET_TIMEOUT, /* 153 - Time (in seconds) that a complete packet must arrive in */
-
- CONFIGITEM_EXTENDEDRESPONSE, /* 154 - Enables extended response (which includes original sequence number) */
- CONFIGITEM_PASSAGEMODEINDICATOR, /* 155 - When lock in passage mode, LEDs show denied if set, granted if cleared (Squish #1133) */
-
- CONFIGITEM_PFMRETURNTIME, /* 156 - Number of seconds power must be present to exit power fail death loop */
-
- CONFIGITEM_LAST, /* Must be last item defined (All non-virtual items added above) */
-
- CONFIGITEM_MAGIC_FIRST = 239, /* Next item is first magic command */
- CONFIGITEM_MAGIC_USERFIELD, /* 240 - Virtual command to delete PIN '8989', add user '8989' */
- CONFIGITEM_MAGIC_USERADD, /* 241 - Virtual command to add a user (PIN only) */
- CONFIGITEM_MAGIC_USERDELETE, /* 242 - Virtual command to delete a user */
- CONFIGITEM_MAGIC_NVRAMBACKUP, /* 243 - Virtual command to backup NVRAM to FLASH */
- CONFIGITEM_MAGIC_NVRAMRESTORE, /* 244 - Virtual command to restore NVRAM from FLASH */
- CONFIGITEM_MAGIC_NVRAMERASE, /* 245 - Virtual command to erase backed-up NVRAM */
- CONFIGITEM_MAGIC_LAST /* *Really* the last item */
-}
-configItem_e;
-
-typedef enum
-{
- DELETEUSERS_ALL = 0, /* 0 - Delete ALL users, including master and emergency, restores default users */
- DELETEUSERS_CACHED, /* 1 - Delete only cached users */
- DELETEUSERS_LAST
-}
-deleteUsers_e;
-
-typedef enum
-{
- DISPOSITION_ADD = 0, /* 0 - Add, must not exist (by user number only) */
- DISPOSITION_REPLACE, /* 1 - Replace, (add, but overwrite if necessary) */
- DISPOSITION_UPDATE, /* 2 - Update, must already exist */
- DISPOSITION_DELETE, /* 3 - Delete, exists or not is irrelevant */
- DISPOSITION_RETRIEVE, /* 4 - Retrieve, must exist */
- DISPOSITION_LAST
-}
-disposition_e;
-
-typedef enum
-{
- DOORSTATE_NONE = 0, /* 0 - No door state available */
- DOORSTATE_SECURED, /* 1 - Door closed & secured */
- DOORSTATE_DOORFORCED, /* 2 - Door forced */
- DOORSTATE_KEYOVERRIDE, /* 3 - Key override */
- DOORSTATE_DOORAJAR, /* 4 - Door ajar */
- DOORSTATE_LAST
-}
-doorState_e;
-
-typedef enum
-{
- DSTMODE_NONE, /* 0 - Automatic DST switching disabled */
- DSTMODE_REPEATINGDOM, /* 1 - Particular day on a particular month (Apr 2nd) */
- DSTMODE_REPEATINGDOW, /* 2 - Day of week on a particular week of a particular month (Sunday of last week of April) */
- DSTMODE_ONETIMEDOM, /* 3 - Like DSTMODE_REPEATINGDOM, but clears CONFIGITEM_DST_[FORWARD|BACK][MONTH|DAY] items */
- DSTMODE_ONETIMEDOW, /* 4 - Like DSTMODE_REPEATINGDOW, but clears CONFIGITEM_DST_[FORWARD|BACK][MONTH|OOD|DOW] items */
- DSTMODE_LAST
-}
-dstMode_e;
-
-typedef enum
-{
- ENCRYPTIONSCHEME_NONE = 0, /* 0 - No encryption */
- ENCRYPTIONSCHEME_ROLLING, /* 1 - XOR with crypt key, shift each byte */
- ENCRYPTIONSCHEME_SN, /* 2 - XOR with serial number, shift each byte */
- ENCRYPTIONSCHEME_AESIV, /* 3 - AES implementation (set initial vector) */
- ENCRYPTIONSCHEME_AES, /* 4 - AES implementation */
- ENCRYPTIONSCHEME_LAST
-}
-encryptionScheme_e;
-
-typedef enum
-{
- EVENT_INVALIDPIN = 0, /* 0 - Entered PIN was invalid */
- EVENT_USER, /* 1 - Regular user has been granted access */
- EVENT_ONETIME, /* 2 - One-time user has been granted access */
- EVENT_PASSAGEBEGIN, /* 3 - Lock has unlocked because of auto-unlock mode */
- EVENT_PASSAGEEND, /* 4 - Lock has relocked because of auto-unlock mode */
- EVENT_BADTIME, /* 5 - Access attempted outside of allowed time/date */
- EVENT_LOCKEDOUT, /* 6 - Access attempted during panic or lockout */
- EVENT_LOWBATTERY, /* 7 - Battery is low */
- EVENT_DEADBATTERY, /* 8 - Battery is dead */
- EVENT_BATTERYREPLACED, /* 9 - Battery has been replaced */
- EVENT_USERADDED, /* 10 - User added or changed */
- EVENT_USERDELETED, /* 11 - User deleted */
- EVENT_EMERGENCY, /* 12 - The emergency code was entered */
- EVENT_PANIC, /* 13 - Somebody pushed the panic button */
- EVENT_RELOCK, /* 14 - Relock code was entered */
- EVENT_LOCKOUTBEGIN, /* 15 - Lockout code was entered */
- EVENT_LOCKOUTEND, /* 16 - Lockout code was entered again */
- EVENT_RESET, /* 17 - Lock was reset (restarted) */
- EVENT_DATETIMESET, /* 18 - System date & time was set */
- EVENT_LOGCLEARED, /* 19 - Event log cleared */
- EVENT_DBRESET, /* 20 - User database reset */
- EVENT_COMMSTARTED, /* 21 - Communications session started */
- EVENT_COMMENDED, /* 22 - Communications session ended */
- EVENT_FIRMWAREABORT, /* 23 - A firmware update aborted */
- EVENT_FIRMWAREERROR, /* 24 - A firmware update encountered an error */
- EVENT_FIRMWARETIMEOUT, /* 25 - Timeout expecting firmware download data record */
- EVENT_DSTFALLBACK, /* 26 - Clock set back */
- EVENT_DSTSPRINGFORWARD, /* 27 - Clock set forward */
- EVENT_BOLTTHROWN, /* 28 - Bolt thrown */
- EVENT_BOLTRETRACTED, /* 29 - Bolt retracted */
- EVENT_MASTERCODE, /* 30 - Master code entered (clears panic, relock, and lockout) */
- EVENT_COMMUSER, /* 31 - A comm user was activated */
- EVENT_DPACDISABLED, /* 32 - DPAC disabled */
- EVENT_NOTIFY, /* 33 - Notify user has been granted access */
- EVENT_EXPIRED, /* 34 - Expired user attempted access */
- EVENT_SUPERVISOR, /* 35 - The supervisor code was entered */
- EVENT_MCCENTER, /* 36 - Entered MCC programming mode */
- EVENT_MCCEXIT, /* 37 - Exited MCC programming mode */
- EVENT_SERIALRXOVERRUN, /* 38 - Serial receiver overrun */
- EVENT_DPACRXOVERRUN, /* 39 - DPAC receiver overrun */
- EVENT_NVRAMPBCLEAR, /* 40 - NVRAM cleared by pushybutton */
- EVENT_NVRAMLAYOUTCHANGE, /* 41 - NVRAM cleared by revision */
- EVENT_NVRAMOK, /* 42 - NVRAM wasn't changed */
- EVENT_USERREPLACED, /* 43 - User replaced */
- EVENT_RADIOTIMEOUT, /* 44 - Radio timed out waiting for remote login */
- EVENT_SUSPENDEDUSER, /* 45 - Suspended user attempted access */
- EVENT_USERUPDATED, /* 46 - User updated */
- EVENT_DOORBOLTED, /* 47 - Access denied because door is bolted */
- EVENT_PANICACTIVE, /* 48 - Access denied because lock is in panic mode */
- EVENT_PASSAGEACTIVE, /* 49 - Access denied because lock is in passage mode */
- EVENT_PASSAGEINACTIVE, /* 50 - Access denied because lock is not in passage mode */
- EVENT_BADACCESSMODE, /* 51 - Access denied because access mode is wierd */
- EVENT_CLOCKERR, /* 52 - Error reading RTC */
- EVENT_REMOTEUNLOCK, /* 53 - Remote unlock */
- EVENT_TZHAUDISABLED, /* 54 - Time zone, exceptions, and auto-unlock functionality disabled */
- EVENT_EVENTLOGWRAPPED, /* 55 - Event log wrapped */
- EVENT_DECLINEDLOGWRAPPED, /* 56 - Declined log wrapped */
- EVENT_ALARMLOGWRAPPED, /* 57 - Alarm log wrapped */
- EVENT_RADIOBUSYEMERGENCY, /* 58 - Access denied because radio is busy */
- EVENT_RADIOBUSYSUPERVISOR, /* 59 - Access denied because radio is busy */
- EVENT_RADIOBUSYONETIME, /* 60 - Access denied because radio is busy */
- EVENT_RADIOBUSYUSER, /* 61 - Access denied because radio is busy */
- EVENT_RADIOBUSYPANIC, /* 62 - Access denied because radio is busy */
- EVENT_RADIOBUSYREX, /* 63 - Access denied because radio is busy */
- EVENT_RADIOBUSYLOCKOUT, /* 64 - Access denied because radio is busy */
- EVENT_RADIOBUSYRELOCK, /* 65 - Access denied because radio is busy */
- EVENT_BATTERYCHECKHELDOFF, /* 66 - Battery check was not performed (user number says why) */
- EVENT_RMTAUTHREQUEST, /* 67 - Remote authorization request made */
- EVENT_FIRMWAREUPDATE, /* 68 - A firmware update was attempted, and succeeded */
- EVENT_FIRMWAREUPDATEFAILED, /* 69 - A firmware update was attempted, and failed */
- EVENT_MSMFAILURE, /* 70 - Mortise state machine failure */
- EVENT_CLOCKRESET, /* 71 - The RTC was reset, likely due to ESD */
- EVENT_POWERFAIL, /* 72 - Power Fail Monitor (PFM) circuit triggered */
- EVENT_DPAC501WENTSTUPID, /* 73 - DPAC-501 failed to release CTS on power up */
- /*
- * These are all internal debugging events. Real events should go before these.
- */
- EVENT_CHECKSUMCONFIG, /* 74 - Performing checksum on configuration NVRAM */
- EVENT_CHECKSUMTZ, /* 75 - Performing checksum on timezone data NVRAM */
- EVENT_DEBUG, /* 76 - Debug event, could mean anything (programmer discretion) */
- EVENT_LAST /* 77 - Everything must go before this entry */
-}
-event_e;
-
-typedef enum
-{
- FIELDTYPE_NONE = 0, /* 0 - Field contains nothing */
- FIELDTYPE_PIN, /* 1 - Field contains PIN */
- FIELDTYPE_PROX, /* 2 - Field contains Prox card */
- FIELDTYPE_MAGCARD, /* 3 - Field contains mag card */
- FIELDTYPE_LAST
-}
-fieldType_e;
-
-typedef enum
-{
- FILTERMODE_NORMAL = 0, /* 0 - Filters events specified */
- FILTERMODE_INVERT, /* 1 - Filters events not specified */
- FILTERMODE_LAST
-}
-filterMode_e;
-
-typedef enum
-{
- FILTERSELECT_RECORDING = 0, /* 0 - Recording filters */
- FILTERSELECT_REPORTING, /* 1 - Reporting filters */
- FILTERSELECT_LAST
-}
-filterSelect_e;
-
-typedef enum
-{
- FORCEITEM_RADIOPOWER = 0, /* 0 - Radio power */
- FORCEITEM_RADIOENABLE, /* 1 - Radio enable */
- FORCEITEM_LEDRED, /* 2 - Red keypad LED */
- FORCEITEM_LEDGREEN, /* 3 - Green keypad LED */
- FORCEITEM_LEDYELLOW, /* 4 - Yellow keypad LED */
- FORCEITEM_PIEZO, /* 5 - Keypad peizo */
- FORCEITEM_MAGPOWER, /* 6 - Mag card reader power supply */
- FORCEITEM_MAGLEDA, /* 7 - Mag card LED A (usually red) */
- FORCEITEM_MAGLEDB, /* 8 - Mag card LED B (usually green) */
- FORCEITEM_PROXPOWER, /* 13 - Prox circuitry power (opamps, etc) */
- FORCEITEM_PROXPING, /* 14 - Prox PIC12F629 ping/sleep mode */
- FORCEITEM_PROXMODE, /* 15 - Prox ping/read mode (selects 50hz/125KHz filters) */
- FORCEITEM_I2CPOWER, /* 16 - I2C power */
- FORCEITEM_MOTORARUN, /* 17 - Motor A run (to H-bridge) */
- FORCEITEM_MOTORBRUN, /* 18 - Motor B run (to H-bridge) */
- FORCEITEM_VMON, /* 19 - VMon (ADC 0 battery sense) */
- FORCEITEM_PROX, /* 20 - Prox test mode (continuous 125KHz read) */
- FORCEITEM_MORTISETEST, /* 21 - Force mortise into test mode */
- FORCEITEM_KEYPADTEST, /* 22 - Force keypad into test mode */
- FORCEITEM_MAGTEST, /* 23 - Force mag card test mode */
- FORCEITEM_PROXTEST, /* 24 - Force prox card test mode */
- FORCEITEM_ICLASSPOWER, /* 25 - iClass Prox power */
- FORCEITEM_ICLASSRESET, /* 26 - iClass Prox reset */
- FORCEITEM_LAST
-}
-forceItem_e;
-
-typedef enum
-{
- FROMDEVICE_NONE = 0, /* 0 - Used to indicate no device */
- FROMDEVICE_INTERNAL, /* 1 - Generated internally */
- FROMDEVICE_KEYPAD, /* 2 - Generated from keypad */
- FROMDEVICE_CONSOLE, /* 3 - Generated from console */
- FROMDEVICE_WIFI, /* 4 - Generated from wi-fi (DPAC) */
- FROMDEVICE_LAST
-}
-fromDevice_e;
-
-typedef enum
-{
- HARDWAREOPTIONS_NONE = 0x0000, /* No options installed (?!) */
- HARDWAREOPTIONS_CLOCK = 0x0001, /* Has RTC installed (always set) */
- HARDWAREOPTIONS_CONSOLE = 0x0002, /* Has serial console (always set) */
- HARDWAREOPTIONS_KEYPAD = 0x0004, /* Has keypad installed */
- HARDWAREOPTIONS_PROXREADER = 0x0008, /* Has Prox card circuitry installed */
- HARDWAREOPTIONS_MAGREADER = 0x0010, /* Has magnetic card reader attached */
- HARDWAREOPTIONS_1WIRE = 0x0020, /* Has Dallas 1-wire interface installed */
- HARDWAREOPTIONS_WIFI = 0x0040, /* Has WiFi module installed (DPAC only, for now) */
- HARDWAREOPTIONS_RS485 = 0x0080, /* Has RS-485 optioning (RS-232 assumed if not) */
- HARDWAREOPTIONS_IR = 0x0100, /* Has IR LED communications interface installed */
- HARDWAREOPTIONS_PUSHBUTTON = 0x0200, /* Has MCC pushbutton */
- HARDWAREOPTIONS_WATCHDOG = 0x0400, /* Has watchdog option compiled in */
- HARDWAREOPTIONS_ICLASSREADER = 0x0800, /* Has iClass OEM75 prox reader installed */
- HARDWAREOPTIONS_AVAIL1000 = 0x1000, /* Not defined */
- HARDWAREOPTIONS_AVAIL2000 = 0x2000, /* Not defined */
- HARDWAREOPTIONS_AVAIL4000 = 0x4000, /* Not defined */
- HARDWAREOPTIONS_AVAIL8000 = 0x8000, /* Not defined */
-
- HARDWAREOPTIONS_RADIO = (HARDWAREOPTIONS_WIFI),
-
- HARDWAREOPTIONS_LAST = 0xffff /* Place holder, don't use */
-}
-hardwareOptions_e;
-
-typedef enum
-{
- LOCALLED_NONE = 0, /* 0 - No assignment */
- LOCALLED_RADIOPOWER, /* 1 - Follows radio power supply (lit=power on) */
- LOCALLED_LOCKUNLOCKED, /* 2 - Follows strike state (lit=locked) */
- LOCALLED_I2CPOWER, /* 3 - Follows I2C power (lit=power on) */
- LOCALLED_AUTHCONSOLE, /* 4 - Follows authorization from console port (lit=authorized) */
- LOCALLED_AUTHWIFI, /* 5 - Follows authorization from Wifi port (lit=authorized) */
- LOCALLED_BATTERYLOW, /* 6 - Follows battery low status (lit=low) */
- LOCALLED_BATTERYDEAD, /* 7 - Follows battery dead status (lit=battery dead) */
- LOCALLED_PROXREADY, /* 8 - Follows Prox ready to read (lit=ready) */
- LOCALLED_APACQUIRED, /* 9 - Follows WAP acquired via DPAC (lit=acquired) */
- LOCALLED_PASSMODE, /* 10 - Follows DPAC entering pass mode (lit=pass mode successful) */
- LOCALLED_PROXREAD, /* 11 - Follows receiving a prox read event (PROXCARDEVENT_READCARD) */
- LOCALLED_CONNECTED, /* 12 - Follows the DPAC interrupt line, indicating connection status */
- LOCALLED_DPACCTSTIMER, /* 13 - Follows DPAC CTS line, if asserted more than 5 seconds */
- LOCALLED_PFMCHARGING, /* 14 - Follows the state of the PFM super-cap charger */
- LOCALLED_LAST
-}
-localLED_e;
-
-typedef enum
-{
- LOCKPRIORITY_NONE = 0, /* 0 - Radio is not shut down for motor run, access not denied if radio is on */
- LOCKPRIORITY_DPAC, /* 1 - Radio is not shut down for motor run, access denied if radio is on */
- LOCKPRIORITY_LOCK, /* 2 - Radio is shut down for motor run, access not denied if radio is on */
- LOCKPRIORITY_LAST
-}
-lockPriority_e;
-
-typedef enum
-{
- LOCKTYPE_NONE = 0, /* 0 - No lock present */
- LOCKTYPE_PWM, /* 1 - PWM motor */
- LOCKTYPE_ELECTRIC_STRIKE, /* 2 - Electric strike (normally de-energized, uses Motor A side of H-bridge) */
- LOCKTYPE_MAGNETIC_LOCK, /* 3 - Magnetic lock (normally energized, uses Motor A side of H-bridge) */
- LOCKTYPE_RELAY, /* 4 - Relay (normally de-energized, uses Motor B side of H-bridge) */
- LOCKTYPE_LAST
-}
-lockType_e;
-
-typedef enum
-{
- MFGFIELD_IOPINS = 0, /* 0 - Contains data about the state of the IO pins */
- MFGFIELD_ADCS, /* 1 - Contains raw ADC data */
- MFGFIELD_HARDWAREID, /* 2 - Contains hardware ID & revision of PIC */
- MFGFIELD_CHECKPOINTLOG, /* 3 - Contains the checkpoint log data */
- MFGFIELD_CPUREGISTERS, /* 4 - Contains the contents of selected PIC registers */
- MFGFIELD_TASKFLAGS, /* 5 - Contains a list of all task flag values */
- MFGFIELD_TIMERCHAIN, /* 6 - Contains a complete list of all active timers (timerData_t) */
- MFGFIELD_PEEKPOKE, /* 7 - Contains results of peeking memory (U8, U16, U32, or string) */
- MFGFIELD_LOCKSTATE, /* 8 - Contains the current passage mode flags (lockState_t) */
- MFGFIELD_CAPABILITIES, /* 9 - Contains lock capability info (# users, event log entries, etc) */
- MFGFIELD_DUMPM41T81, /* 10 - Contains a complete dump of the M41T81 RTC registers */
- MFGFIELD_NVRAMCHECKSUMVALUE, /* 11 - Contains the 32-bit NVRAM checksum value */
- MFGFIELD_CHECKSUMRESULTS, /* 12 - Contains results from checksumming exceptions, exceptiong roups, time zone calendars and time zones */
- MFGFIELD_MORTISESTATELOG, /* 13 - Contains the last 32 mortise state changes */
- MFGFIELD_MORTISEPINS, /* 14 - Contains the mortise pin status (S1,S2,S3,S4) */
- MFGFIELD_KEYPADCHAR, /* 15 - Contains a character from the keypad */
- MFGFIELD_MAGCARD, /* 16 - Contains mag card data */
- MFGFIELD_PROXCARD, /* 17 - Contains prox card data */
- MFGFIELD_LAST
-}
-mfgField_e;
-
-typedef enum
-{
- MORTISETYPE_NONE = 0, /* 0 - No mortise installed */
- MORTISETYPE_S82276, /* 1 - Sargent 82276 mortise (A) */
- MORTISETYPE_S82277, /* 2 - Sargent 82277 mortise, no cylinder (B) */
- MORTISETYPE_S82278, /* 3 - Sargent 82278 mortise, no deadbolt (C) */
- MORTISETYPE_S82279, /* 4 - Sargent 82279 mortise, no cylinder or deadbolt (D) */
- MORTISETYPE_S10G77, /* 5 - Sargent 10G77 bored lock body (E) */
- MORTISETYPE_S8877, /* 6 - Sargent 8877 mortise exit device (F) */
- MORTISETYPE_S8878, /* 7 - Sargent 8878 mortise exit device, no cylinder (G) */
- MORTISETYPE_S8977, /* 8 - Sargent 8977 mortise exit device (H) */
- MORTISETYPE_S8978, /* 9 - Sargent 8978 mortise exit device, no cylinder (I) */
- MORTISETYPE_CRML20x36, /* 10 - Corbin-Russwin ML20736/ML20836 mortise (J) */
- MORTISETYPE_CRML20x35, /* 11 - Corbin-Russwin ML20735/ML20835 mortise, no cylinder (K) */
- MORTISETYPE_CRML20x34, /* 12 - Corbin-Russwin ML20734/ML20834 mortise, no deadbolt (L) */
- MORTISETYPE_CRML20x33, /* 13 - Corbin-Russwin ML20733/ML20833 mortise, no cylinder or deadbolt (M) */
- MORTISETYPE_CRCL33x34, /* 14 - Corbin-Russwin CL33734/CL33834 bored lock body (N) */
- MORTISETYPE_CR9X34, /* 15 - Corbin-Russwin 9734/9834 bored lock body (O) */
- MORTISETYPE_CR9X33, /* 16 - Corbin-Russwin 9833/9833 bored lock body, no cylinder (P) */
- MORTISETYPE_CR9MX34, /* 17 - Corbin-Russwin 9M734/9M834 bored lock body (Q) */
- MORTISETYPE_CR9MX33, /* 18 - Corbin-Russwin 9M733/9M833 bored lock body, no cylinder (R) */
- MORTISETYPE_LAST
-}
-mortiseType_e;
-
-typedef enum
-{
- NVRAMCLEAROPTIONS_NONE = 0x0000, /* Place holder */
- NVRAMCLEAROPTIONS_CFGINSTALLER = 0x0001, /* Options settable by the installer (lock type, etc) */
- NVRAMCLEAROPTIONS_CFGADMIN = 0x0002, /* Options settable by the lock administrator (time, date, etc) */
- NVRAMCLEAROPTIONS_EXCEPTIONS = 0x0004, /* The exceptions definitions */
- NVRAMCLEAROPTIONS_EXCEPTIONGROUPS = 0x0008, /* The exception group definitions */
- NVRAMCLEAROPTIONS_CALENDARS = 0x0010, /* The timezones calendar definitions */
- NVRAMCLEAROPTIONS_TIMEZONES = 0x0020, /* The timezones definitions */
- NVRAMCLEAROPTIONS_FILTERS = 0x0040, /* Recording filters */
- NVRAMCLEAROPTIONS_EVENTLOG = 0x0080, /* The event log */
- NVRAMCLEAROPTIONS_USERDATA = 0x0100, /* The actual user database */
- NVRAMCLEAROPTIONS_DECLINEDLOG = 0x0200, /* Declined credentials log */
- NVRAMCLEAROPTIONS_ALARMLOG = 0x0400, /* Alarm log */
- NVRAMCLEAROPTIONS_LRUCACHE = 0x0800, /* LRU cache for remote authorization (status, user doesn't clear explicitly) */
- NVRAMCLEAROPTIONS_DBHASH = 0x1000, /* User database hash (status, user doesn't clear explicitly) */
- NVRAMCLEAROPTIONS_CFGSYSTEM = 0x2000, /* Factory settable options, system variables (status, user doesn't clear explicitly) */
- NVRAMCLEAROPTIONS_AVAIL4000 = 0x4000, /* Unused */
- NVRAMCLEAROPTIONS_ALL = 0x7fff, /* All of the above */
- NVRAMCLEAROPTIONS_USEBACKUP = 0x8000 /* If set, installer and admin options are set according from NVRAM backup (if valid) */
-}
-nvramClearOptions_e;
-
-typedef enum
-{
- NVRAMCOMMAND_BACKUP = 0, /* 0 - Backup NVRAM to backup region */
- NVRAMCOMMAND_ERASE, /* 1 - Erase backup region */
- NVRAMCOMMAND_RESTORE, /* 2 - Restore NVRAM from backup region */
- NVRAMCOMMAND_LAST
-}
-nvramCommand_e;
-
-typedef enum
-{
- NVRAMDUMPSELECT_ALL = 0, /* 0 - Dump all */
- NVRAMDUMPSELECT_PIC, /* 1 - Dump NVRAM on PIC */
- NVRAMDUMPSELECT_USER, /* 2 - Dump I2C NVRAM containing user data, exceptions, exception groups, calendars, timezones */
- NVRAMDUMPSELECT_EVENT, /* 3 - Dump I2C NVRAM containing event log, declined log, alarm log, LRU cache */
- NVRAMDUMPSELECT_LAST
-}
-nvramDumpSelect_e;
-
-typedef enum
-{
- PEEKPOKE_READU8 = 0, /* 0 - Read 8 bit value */
- PEEKPOKE_READU16, /* 1 - Read 16 bit value */
- PEEKPOKE_READU24, /* 2 - Read 24 bit value */
- PEEKPOKE_READU32, /* 3 - Read 32 bit value */
- PEEKPOKE_READSTRING, /* 4 - Read 'n' 8 bit values */
- PEEKPOKE_WRITEU8, /* 5 - Write 8 bit value */
- PEEKPOKE_WRITEU16, /* 6 - Write 16 bit value */
- PEEKPOKE_WRITEU24, /* 7 - Write 24 bit value */
- PEEKPOKE_WRITEU32, /* 8 - Write 32 bit value */
- PEEKPOKE_WRITESTRING, /* 9 - Write 'n' 8 bit values */
- PEEKPOKE_LAST
-}
-peekPoke_e;
-
-typedef enum
-{
- PPMISOURCE_NONE = 0, /* 0 - PPMI came from nowhere (not set) */
- PPMISOURCE_PIN, /* 1 - PPMI came from PIN */
- PPMISOURCE_PROX, /* 2 - PPMI came from Prox */
- PPMISOURCE_MAGCARD, /* 3 - PPMI came from mag card */
- PPMISOURCE_LAST
-}
-ppmiSource_e;
-
-typedef enum
-{
- RADIOMODE_HOSTINITIATED = 0, /* 0 - DPAC in listen mode (default) */
- RADIOMODE_LOCKINITIATED, /* 1 - DPAC in pass-through mode */
- RADIOMODE_LAST
-}
-radioMode_e;
-
-typedef enum
-{
- RADIOTYPE_NONE = 0, /* 0 - No radio present */
- RADIOTYPE_WIPORTNR, /* 1 - WiPortNR */
- RADIOTYPE_DPAC80211B, /* 2 - DPAC 802.11b */
- RADIOTYPE_DPAC80211BG, /* 3 - DPAC 802.11bg */
- RADIOTYPE_LAST
-}
-radioType_e;
-
-typedef enum
-{
- RESPONSETYPE_OK = 0, /* 0 - All is well */
- RESPONSETYPE_ERROR, /* 1 - Generic error */
- RESPONSETYPE_HASDATA, /* 2 - Response has data */
- RESPONSETYPE_NOHANDLER, /* 3 - Command requested with no handler (internal error) */
- RESPONSETYPE_NOSESSION, /* 4 - No session established */
- RESPONSETYPE_BADCOMMAND, /* 5 - Bad command value */
- RESPONSETYPE_BADPARAMETER, /* 6 - Bad parameter (can mean a lot of things) */
- RESPONSETYPE_BADPARAMETERLEN, /* 7 - Bad parameter length (too short, too long) */
- RESPONSETYPE_MISSINGPARAMETER, /* 8 - Missing parameter (something was required, what'd you forget?) */
- RESPONSETYPE_DUPLICATEPARAMETER, /* 9 - Parameter supplied more than once (D'oh!) */
- RESPONSETYPE_PARAMETERCONFLICT, /* 10 - Parameters conflict (usually mutually exclusive items) */
- RESPONSETYPE_BADDEVICE, /* 11 - Bad device (command came from a device that's not allowed) */
- RESPONSETYPE_NVRAMERROR, /* 12 - Hardware problem... */
- RESPONSETYPE_NVRAMERRORNOACK, /* 13 - Hardware problem... */
- RESPONSETYPE_NVRAMERRORNOACK32, /* 14 - Hardware problem... */
- RESPONSETYPE_NOTI2CADDRESS, /* 15 - Illegal I2C address in i2cStart */
- RESPONSETYPE_FIRMWAREERROR, /* 16 - Generic firmware upload error (can mean lots of things) */
- RESPONSETYPE_DUMPINPROGRESS, /* 17 - Can't do something, a dump is in progress */
- RESPONSETYPE_INTERNALERROR, /* 18 - Something Bad Happened(tm) */
- RESPONSETYPE_NOTIMPLEMENTED, /* 19 - Command or function not implemented */
- RESPONSETYPE_PINFORMATERROR, /* 20 - Error in formatting of PIN (non hex character) */
- RESPONSETYPE_PINEXISTS, /* 21 - PIN already exists in database */
- RESPONSETYPE_PINNOTFOUND, /* 22 - PIN wasn't found (actionManageUsers) */
- RESPONSETYPE_USERACTIVE, /* 23 - The record for this user is active (not deleted or free) */
- RESPONSETYPE_USERINACTIVE, /* 24 - The record for this user is inactive (not in use) */
- RESPONSETYPE_PARENTNOTFOUND, /* 25 - Users parent couldn't be found (used internally by dbmgr.c) */
- RESPONSETYPE_NOCHAIN, /* 26 - No users in chain (used internally by dbmgr.c) */
- RESPONSETYPE_CAUGHTINLOOP, /* 27 - Caught in a loop somewhere */
- RESPONSETYPE_EVENTFILTERED, /* 28 - Event record was filtered (eventlog.c) */
- RESPONSETYPE_PAYLOADTOOLARGE, /* 29 - Message payload too large (protocol.c) */
- RESPONSETYPE_ENDOFDATA, /* 30 - No more data (used internally by eventlog.c) */
- RESPONSETYPE_RMTAUTHREJECTED, /* 31 - Remote authorization rejected (lockmgr.c) */
- RESPONSETYPE_NVRAMVERSIONERROR, /* 32 - NVRAM version doesn't match expected value */
- RESPONSETYPE_NOHARDWARE, /* 33 - Operation requested for unsupported hardware */
- RESPONSETYPE_SCHEDULERCONFLICT, /* 34 - Scheduler not in correct mode for this operation */
- RESPONSETYPE_NVRAMWRITEERROR, /* 35 - NVRAM write compare error */
- RESPONSETYPE_DECLINEDFILTERED, /* 36 - Declined record was filtered (declinedlog.c) */
- RESPONSETYPE_NECONFIGPARM, /* 37 - Non-existent configuration parameter */
- RESPONSETYPE_FLASHERASEERROR, /* 38 - Error erasing FLASH */
- RESPONSETYPE_FLASHWRITEERROR, /* 39 - Error writing FLASH */
- RESPONSETYPE_BADNVBACKUP, /* 40 - NVBackup length doesn't match sizeof (configParametersNV_t) */
- RESPONSETYPE_EARLYACK, /* 41 - Sent prior to long commands if CONFIGITEM_EARLYACK set */
- RESPONSETYPE_ALARMFILTERED, /* 42 - Alarm record was filtered (alarm.c) */
- RESPONSETYPE_ACVFAILURE, /* 43 - Auxiliary controller version request failure */
- RESPONSETYPE_USERCHECKSUMERROR, /* 44 - User checksum value error */
- RESPONSETYPE_CHECKSUMERROR, /* 45 - Generic checksum error */
- RESPONSETYPE_RTCSQWFAILURE, /* 46 - RTC isn't generating square wave */
- RESPONSETYPE_PRIORITYSHUTDOWN, /* 47 - Session terminated early because lock has priority over communications */
- RESPONSETYPE_NOTMODIFIABLE, /* 48 - Configuration parameter is not user modifiable */
- RESPONSETYPE_CANTPRESERVE, /* 49 - Can't preserve configuration (config.c, not enough space) */
- RESPONSETYPE_INPASSAGEMODE, /* 50 - Lock is in passage mode, can't do remote unlock */
- RESPONSETYPE_LAST,
- /*
- * These should not be exposed to the user
- */
- RESPONSETYPE_NOREPLY, /* 51 - Do not send a reply, subroutine is posting it's own */
- RESPONSETYPE_TAKEABREAK, /* 52 - Intermediate return result, when log searches taking too long */
- RESPONSETYPE_DPACBLOCKS, /* 53 - PWM lock, battery powered, DPAC takes priority */
- RESPONSETYPE_ACKNAKTIMEOUT, /* 54 - Added for console.c, not used in lock firmware */
- RESPONSETYPE_UNKNOWNCPUSPEED /* 55 - Unknown CPU speed (utils.c, utilCalculateClockRate()) */
-}
-responseType_e;
-
-typedef enum
-{
- SCHEDULERTYPE_HARDON = 0, /* 0 - Radio is always on */
- SCHEDULERTYPE_SIMPLE, /* 1 - Simple 'x' minutes off, 'y' seconds on scheduler */
- SCHEDULERTYPE_DOM, /* 2 - Day of month scheduling */
- SCHEDULERTYPE_DOW, /* 3 - Day of week scheduling */
- SCHEDULERTYPE_COMMUSER, /* 4 - Only a comm user triggers power on */
- SCHEDULERTYPE_HOD, /* 5 - Hour of day scheduling */
- SCHEDULERTYPE_OFF, /* 6 - Nothing wakes up radio */
- SCHEDULERTYPE_LAST
-}
-schedulerType_e;
-
-typedef enum
-{
- TIMEZONEMODE_NORMAL = 0, /* 0 - Timezone is applied to user, no auto unlocking */
- TIMEZONEMODE_EXCLUSION, /* 1 - User NOT permitted access if in this zone at this time */
- TIMEZONEMODE_AUTOTIME, /* 2 - Auto unlock at the start of the TZ, lock at end */
- TIMEZONEMODE_AUTOFPT, /* 3 - Unlock on first person through, lock at end */
- TIMEZONEMODE_UAPM, /* 4 - Permits user activated passage mode when active */
- TIMEZONEMODE_LAST
-}
-timeZoneMode_e;
-
-typedef enum
-{
- UNLOCKMODE_NORMAL = 0, /* 0 - Normal unlock (CONFIGITEM_UNLOCK_TIME duration) */
- UNLOCKMODE_UNLOCK, /* 1 - Unlock, switching to passage mode */
- UNLOCKMODE_LOCK, /* 2 - Lock, regardless of mode */
- UNLOCKMODE_LAST
-}
-unlockMode_e;
-
-typedef enum
-{
- UPSTREAMCOMMAND_RESERVED = 0, /* 0 - Not used */
- UPSTREAMCOMMAND_DEBUGMSG, /* 1 - Debug message (zero terminated) */
- UPSTREAMCOMMAND_QUERYVERSION, /* 2 - Version string (zero terminated) */
- UPSTREAMCOMMAND_QUERYDATETIME, /* 3 - Current date/time */
- UPSTREAMCOMMAND_QUERYSERIALNUMBER, /* 5 - Serial number (MAX_SERIALNUM_LENGTH bytes) */
- UPSTREAMCOMMAND_DUMPEVENTLOG, /* 6 - Event log record */
- UPSTREAMCOMMAND_DUMPNVRAM, /* 7 - NVRAM dump record */
- UPSTREAMCOMMAND_RMTAUTHREQUEST, /* 8 - Remote authorization request */
- UPSTREAMCOMMAND_RETRIEVEUSER, /* 9 - Retrieve user record */
- UPSTREAMCOMMAND_QUERYCONFIG, /* 10 - Query configuration */
- UPSTREAMCOMMAND_RMTEVENTLOGRECORD, /* 11 - Remote event log record */
- UPSTREAMCOMMAND_DPAC, /* 12 - DPAC related message */
- UPSTREAMCOMMAND_NOTIFY, /* 14 - Notify user message */
- UPSTREAMCOMMAND_MFG, /* 15 - Manufacturing data */
- UPSTREAMCOMMAND_EVENTLOGWARNING, /* 16 - Event log warning level message */
- UPSTREAMCOMMAND_DUMPNVRAMRLE, /* 17 - Run Length Encoded (RLE) NVRAM dump record */
- UPSTREAMCOMMAND_RMTDECLINEDRECORD, /* 18 - Remote declined log record */
- UPSTREAMCOMMAND_DECLINEDWARNING, /* 19 - Declined log warning level message */
- UPSTREAMCOMMAND_DUMPDECLINEDLOG, /* 20 - Declined log record dump */
- UPSTREAMCOMMAND_RMTALARMRECORD, /* 21 - Remote alarm log record */
- UPSTREAMCOMMAND_ALARMWARNING, /* 22 - Alarm log warning level message */
- UPSTREAMCOMMAND_DUMPALARMLOG, /* 23 - Alarm log record dump */
- UPSTREAMCOMMAND_CONNECTSCHEDULER, /* 24 - Connection because of scheduler, contains serial number */
- UPSTREAMCOMMAND_CONNECTCOMMUSER, /* 25 - Connection because of comm user, contains serial number */
- UPSTREAMCOMMAND_CONNECTALARM, /* 26 - Connection because of alarm event, contains serial number */
- UPSTREAMCOMMAND_DUMPDEBUGLOG, /* 27 - Debug log dump record */
- UPSTREAMCOMMAND_LAST
-}
-upstreamCommand_e;
-
-typedef enum
-{
- UPSTREAMFIELD_NOTUSED = 0, /* 0 - Not used */
- UPSTREAMFIELD_SERIALNUMBER, /* 1 - Contains unit serial number */
- UPSTREAMFIELD_NAR, /* 2 - Contains 16 bit Next Available Record */
- UPSTREAMFIELD_ENTRYDEVICE, /* 3 - Contains a ppmSource_e */
- UPSTREAMFIELD_PPMIFIELDTYPE, /* 4 - Contains a type of _PIN (auxFieldType_e) */
- UPSTREAMFIELD_PIN, /* 5 - Contains a PIN, Prox, mag key */
- UPSTREAMFIELD_SEQUENCENUMBER, /* 6 - Contains 16 bit sequence number */
- UPSTREAMFIELD_RESPONSEWINDOW, /* 7 - Contains 8 bit response window (number of seconds) */
- UPSTREAMFIELD_USERNUMBER, /* 8 - Contains 16 bit user number */
- UPSTREAMFIELD_VERSION, /* 9 - Contains version string */
- UPSTREAMFIELD_EVENTLOGRECORD, /* 10 - Contains eventLog_e event log record */
- UPSTREAMFIELD_DATETIME, /* 11 - Contains 8 byte date/time data */
- UPSTREAMFIELD_EVENTLOGRECORDCOUNT, /* 17 - Contains number of event log records */
- UPSTREAMFIELD_DECLINEDRECORDCOUNT, /* 20 - Contains number of declined log records */
- UPSTREAMFIELD_DECLINEDRECORD, /* 21 - Contains declinedLog_t declined log record */
- UPSTREAMFIELD_USERTYPE, /* 23 - Contains the user type (master, emergency, normal, etc) */
- UPSTREAMFIELD_ACCESSALWAYS, /* 24 - Contains the access always mode (true, false) */
- UPSTREAMFIELD_CACHED, /* 25 - Contains the cached flag (true, false) */
- UPSTREAMFIELD_PRIMARYFIELDTYPE, /* 26 - Contains the primary field type (pin, prox, mag) */
- UPSTREAMFIELD_AUXFIELDTYPE, /* 27 - Contains the aux field type (pin, prox, mag) */
- UPSTREAMFIELD_ACCESSMODE, /* 28 - Contains the access mode (aux only, aux + pin, aux or pin, etc) */
- UPSTREAMFIELD_EXPIREON, /* 29 - Contains the date the user expires on (00/00/00 if not set) */
- UPSTREAMFIELD_USECOUNT, /* 30 - Contains the use count (if user type is ONE_TIME) */
- UPSTREAMFIELD_TIMEZONE, /* 31 - Contains the timezone bit map */
- UPSTREAMFIELD_EXCEPTIONGROUP, /* 32 - Contains the exception group */
- UPSTREAMFIELD_PRIMARYPIN, /* 33 - Contains the primary PPMI (ASCII, 0 terminated) */
- UPSTREAMFIELD_AUXPIN, /* 34 - Contains the aux PPMI (ASCII, 0 terminated) */
- UPSTREAMFIELD_ALARMRECORDCOUNT, /* 35 - Contains number of alarm log records */
- UPSTREAMFIELD_ALARMRECORD, /* 36 - Contains alarmLog_t alarm log record */
- UPSTREAMFIELD_AUXCTLRVERSION, /* 37 - Contains the version number of the auxiliary controller */
- UPSTREAMFIELD_LAST
-}
-upstreamField_e;
-
-typedef enum
-{
- USERTYPE_NONE = 0, /* 0 - No user */
- USERTYPE_MASTER, /* 1 - Master user (clears panic, relock, lockout and auto open) */
- USERTYPE_EMERGENCY, /* 2 - Opens door regardless of state */
- USERTYPE_SUPERVISOR, /* 3 - Like emergency user, except won't unlock when in panic mode */
- USERTYPE_USER, /* 4 - Generic user */
- USERTYPE_EXTENDED, /* 5 - Same as _USER, but strike can be kept open longer */
- USERTYPE_PASSAGE, /* 6 - Toggles strike between passage and non-passage modes */
- USERTYPE_ONETIME, /* 7 - User may be used one time */
- USERTYPE_PANIC, /* 8 - Locks down locks, no user except master valid */
- USERTYPE_LOCKOUT, /* 9 - Locks out regular, extended, passage, one time, and notify users */
- USERTYPE_RELOCK, /* 10 - Relock cancels passage mode, but can't unlock */
- USERTYPE_NOTIFY, /* 11 - Same as _USER, only sends unsolicited message to server */
- USERTYPE_COMM, /* 12 - Kicks a communications sessions off if not running _HARDON scheduler */
- USERTYPE_SUSPENDED, /* 13 - User is suspended */
- USERTYPE_LAST
-}
-userType_e;
-
-#endif
-
-/*
- * Editor modelines
- *
- * Local variables:
- * c-basic-offset: 2
- * tab-width: 8
- * indent-tabs-mode: nil
- * End:
- *
- * vim: set tabstop=2 softtabstop=2 shiftwidth=2 expandtab:
- */
diff --git a/epan/dissectors/packet-atalk.c b/epan/dissectors/packet-atalk.c
index a1947d137b..13568f16c0 100644
--- a/epan/dissectors/packet-atalk.c
+++ b/epan/dissectors/packet-atalk.c
@@ -1019,7 +1019,7 @@ dissect_asp_reply_get_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
proto_tree_add_item(sub_tree, hf_asp_server_flag_utf8_name , tvb, ofs, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(sub_tree, hf_asp_server_flag_fast_copy , tvb, ofs, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_asp_server_name, tvb, offset +AFPSTATUS_PRELEN, 1, ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_asp_server_name, tvb, offset +AFPSTATUS_PRELEN, 1, ENC_ASCII|ENC_NA);
flag = tvb_get_ntohs(tvb, ofs);
if ((flag & AFPSRVRINFO_SRVSIGNATURE)) {
@@ -1054,7 +1054,7 @@ dissect_asp_reply_get_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
}
if (machine_ofs)
- proto_tree_add_item(tree, hf_asp_server_type, tvb, machine_ofs, 1, ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_asp_server_type, tvb, machine_ofs, 1, ENC_ASCII|ENC_NA);
ofs = offset +tvb_get_ntohs(tvb, offset +AFPSTATUS_VERSOFF);
if (ofs) {
@@ -1064,7 +1064,7 @@ dissect_asp_reply_get_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
sub_tree = proto_item_add_subtree(ti, ett_asp_vers);
for (i = 0; i < nbe; i++) {
len = tvb_get_guint8(tvb, ofs);
- proto_tree_add_item(sub_tree, hf_asp_server_vers, tvb, ofs, 1, ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(sub_tree, hf_asp_server_vers, tvb, ofs, 1, ENC_ASCII|ENC_NA);
ofs += len + 1;
}
}
@@ -1077,7 +1077,7 @@ dissect_asp_reply_get_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
sub_tree = proto_item_add_subtree(ti, ett_asp_uams);
for (i = 0; i < nbe; i++) {
len = tvb_get_guint8(tvb, ofs);
- proto_tree_add_item(sub_tree, hf_asp_server_uams, tvb, ofs, 1, ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(sub_tree, hf_asp_server_uams, tvb, ofs, 1, ENC_ASCII|ENC_NA);
ofs += len + 1;
}
}
@@ -1153,7 +1153,7 @@ dissect_asp_reply_get_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
sub_tree = proto_item_add_subtree(ti, ett_asp_directory);
for (i = 0; i < nbe; i++) {
len = tvb_get_guint8(tvb, ofs);
- proto_tree_add_item(sub_tree, hf_asp_server_directory, tvb, ofs, 1, ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(sub_tree, hf_asp_server_directory, tvb, ofs, 1, ENC_ASCII|ENC_NA);
ofs += len + 1;
}
}
@@ -1517,7 +1517,7 @@ dissect_atp_zip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
sub_tree = proto_item_add_subtree(ti, ett_zip_zones_list);
for (i = 0; i < count; i++) {
len = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(sub_tree, hf_zip_zone_name, tvb, offset, 1,ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(sub_tree, hf_zip_zone_name, tvb, offset, 1,ENC_ASCII|ENC_NA);
offset += len +1;
}
break;
@@ -1581,7 +1581,7 @@ dissect_ddp_zip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset += 4;
len = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(zip_tree, hf_zip_zone_name, tvb, offset, 1,ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(zip_tree, hf_zip_zone_name, tvb, offset, 1,ENC_ASCII|ENC_NA);
offset += len +1;
len = tvb_get_guint8(tvb, offset);
@@ -1590,7 +1590,7 @@ dissect_ddp_zip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(zip_tree, hf_zip_multicast_address,tvb, offset, len,ENC_NA);
offset += len;
- proto_tree_add_item(zip_tree, hf_zip_zone_name, tvb, offset, 1,ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(zip_tree, hf_zip_zone_name, tvb, offset, 1,ENC_ASCII|ENC_NA);
break;
case 2: /* Reply */
@@ -1606,7 +1606,7 @@ dissect_ddp_zip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(net_tree, hf_zip_network, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
len = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(net_tree, hf_zip_zone_name, tvb, offset, 1,ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(net_tree, hf_zip_zone_name, tvb, offset, 1,ENC_ASCII|ENC_NA);
offset += len +1;
}
break;
@@ -1616,7 +1616,7 @@ dissect_ddp_zip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset++;
proto_tree_add_item(zip_tree, hf_zip_zero_value, tvb, offset, 4, ENC_NA);
offset += 4;
- proto_tree_add_item(zip_tree, hf_zip_zone_name, tvb, offset, 1,ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(zip_tree, hf_zip_zone_name, tvb, offset, 1,ENC_ASCII|ENC_NA);
break;
case 6 : /* GetNetInfo reply */
@@ -1635,7 +1635,7 @@ dissect_ddp_zip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset += 2;
len = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(zip_tree, hf_zip_zone_name, tvb, offset, 1,ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(zip_tree, hf_zip_zone_name, tvb, offset, 1,ENC_ASCII|ENC_NA);
offset += len +1;
len = tvb_get_guint8(tvb, offset);
@@ -1644,7 +1644,7 @@ dissect_ddp_zip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(zip_tree, hf_zip_multicast_address,tvb, offset, len,ENC_NA);
offset += len;
if ((flag & 0x80) != 0)
- proto_tree_add_item(zip_tree, hf_zip_default_zone, tvb, offset, 1,ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(zip_tree, hf_zip_default_zone, tvb, offset, 1,ENC_ASCII|ENC_NA);
break;
default:
diff --git a/epan/dissectors/packet-babel.c b/epan/dissectors/packet-babel.c
index 856c78d631..f937969ec9 100644
--- a/epan/dissectors/packet-babel.c
+++ b/epan/dissectors/packet-babel.c
@@ -115,7 +115,7 @@ format_address(const unsigned char *prefix)
return ip6_to_str((const struct e_in6_addr*)prefix);
}
-const char *
+static const char *
format_prefix(const unsigned char *prefix, unsigned char plen)
{
return ep_strdup_printf("%s/%u", format_address(prefix), plen);
diff --git a/epan/dissectors/packet-bacapp.c b/epan/dissectors/packet-bacapp.c
index 5824b0586b..2ceec52b28 100644
--- a/epan/dissectors/packet-bacapp.c
+++ b/epan/dissectors/packet-bacapp.c
@@ -247,28 +247,31 @@ fAbortPDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
/**
* 20.2.4, adds the label with max 64Bit unsigned Integer Value to tree
* @param tvb
+ * @param pinfo
* @param tree
* @param offset
* @param label
* @return modified offset
*/
static guint
-fUnsignedTag (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label);
+fUnsignedTag (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label);
/**
* 20.2.5, adds the label with max 64Bit signed Integer Value to tree
* @param tvb
+ * @param pinfo
* @param tree
* @param offset
* @param label
* @return modified offset
*/
static guint
-fSignedTag (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label);
+fSignedTag (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label);
/**
* 20.2.8, adds the label with Octet String to tree; if lvt == 0 then lvt = restOfFrame
* @param tvb
+ * @param pinfo
* @param tree
* @param offset
* @param label
@@ -276,29 +279,31 @@ fSignedTag (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label);
* @return modified offset
*/
static guint
-fOctetString (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label, guint32 lvt);
+fOctetString (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label, guint32 lvt);
/**
* 20.2.12, adds the label with Date Value to tree
* @param tvb
+ * @param pinfo
* @param tree
* @param offset
* @param label
* @return modified offset
*/
static guint
-fDate (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label);
+fDate (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label);
/**
* 20.2.13, adds the label with Time Value to tree
* @param tvb
+ * @param pinfo
* @param tree
* @param offset
* @param label
* @return modified offset
*/
static guint
-fTime (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label);
+fTime (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label);
/**
* 20.2.14, adds Object Identifier to tree
@@ -617,12 +622,13 @@ fAtomicWriteFileRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gui
* fileStartRecord [1] INTEGER,
* }
* @param tvb
+ * @param pinfo
* @param tree
* @param offset
* @return modified offset
*/
static guint
-fAtomicWriteFileAck (tvbuff_t *tvb, proto_tree *tree, guint offset);
+fAtomicWriteFileAck (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
/**
* AddListElement-Request ::= SEQUENCE {
@@ -865,12 +871,13 @@ fWritePropertyMultipleRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
* password [2] CharacterString (SIZE(1..20)) OPTIONAL
* }
* @param tvb
+ * @param pinfo
* @param tree
* @param offset
* @return modified offset
*/
static guint
-fDeviceCommunicationControlRequest(tvbuff_t *tvb, proto_tree *tree, guint offset);
+fDeviceCommunicationControlRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
/**
* ConfirmedPrivateTransfer-Request ::= SEQUENCE {
@@ -938,12 +945,13 @@ fConfirmedTextMessageRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
* password [1] CharacterString (SIZE(1..20)) OPTIONAL
* }
* @param tvb
+ * @param pinfo
* @param tree
* @param offset
* @return modified offset
*/
static guint
-fReinitializeDeviceRequest(tvbuff_t *tvb, proto_tree *tree, guint offset);
+fReinitializeDeviceRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
/**
* VTOpen-Request ::= SEQUENCE {
@@ -1006,12 +1014,13 @@ fVtDataRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offse
* acceptedOctetCount [1] Unsigned OPTIONAL -- present only if allNewDataAccepted = FALSE
* }
* @param tvb
+ * @param pinfo
* @param tree
* @param offset
* @return modified offset
*/
static guint
-fVtDataAck (tvbuff_t *tvb, proto_tree *tree, guint offset);
+fVtDataAck (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
/**
* Authenticate-Request ::= SEQUENCE {
@@ -1022,12 +1031,13 @@ fVtDataAck (tvbuff_t *tvb, proto_tree *tree, guint offset);
* startEncypheredSession [4] BOOLEAN OPTIONAL
* }
* @param tvb
+ * @param pinfo
* @param tree
* @param offset
* @return modified offset
*/
static guint
-fAuthenticateRequest (tvbuff_t *tvb, proto_tree *tree, guint offset);
+fAuthenticateRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
/**
* Authenticate-ACK ::= SEQUENCE {
@@ -1187,24 +1197,26 @@ fUnconfirmedTextMessageRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr
* BACnetDateTime
* }
* @param tvb
+ * @param pinfo
* @param tree
* @param offset
* @return modified offset
*/
static guint
-fTimeSynchronizationRequest (tvbuff_t *tvb, proto_tree *tree, guint offset);
+fTimeSynchronizationRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
/**
* UTCTimeSynchronization-Request ::= SEQUENCE {
* BACnetDateTime
* }
* @param tvb
+ * @param pinfo
* @param tree
* @param offset
* @return modified offset
*/
static guint
-fUTCTimeSynchronizationRequest (tvbuff_t *tvb, proto_tree *tree, guint offset);
+fUTCTimeSynchronizationRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
/**
* Who-Has-Request ::= SEQUENCE {
@@ -1399,12 +1411,13 @@ fActionList (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
* mac-address OCTET STRING -- A string of length 0 indicates a broadcast
* }
* @param tvb
+ * @param pinfo
* @param tree
* @param offset
* @return modified offset
*/
static guint
-fAddress (tvbuff_t *tvb, proto_tree *tree, guint offset);
+fAddress (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
/**
* BACnetAddressBinding ::= SEQUENCE {
@@ -1427,12 +1440,13 @@ fAddressBinding (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offs
* weekNDay [2] BacnetWeekNday
* }
* @param tvb
+ * @param pinfo
* @param tree
* @param offset
* @return modified offset
*/
static guint
-fCalendarEntry (tvbuff_t *tvb, proto_tree *tree, guint offset);
+fCalendarEntry (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
/**
* BACnetClientCOV ::= CHOICE {
@@ -1480,12 +1494,13 @@ fWeeklySchedule (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offs
* EndDate Date
* }
* @param tvb
+ * @param pinfo
* @param tree
* @param offset
* @return modified offset
*/
static guint
-fDateRange (tvbuff_t *tvb, proto_tree *tree, guint offset);
+fDateRange (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
/**
* BACnetDateTime ::= SEQUENCE {
@@ -1493,13 +1508,14 @@ fDateRange (tvbuff_t *tvb, proto_tree *tree, guint offset);
* time Time
* }
* @param tvb
+ * @param pinfo
* @param tree
* @param offset
* @param label
* @return modified offset
*/
static guint
-fDateTime (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label);
+fDateTime (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label);
/**
* BACnetDestination ::= SEQUENCE {
@@ -1891,13 +1907,14 @@ fSpecialEvent (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset
* dateTime [2] BACnetDateTime
* }
* @param tvb
+ * @param pinfo
* @param tree
* @param offset
* @param label
* @return modified offset
*/
static guint
-fTimeStamp (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label);
+fTimeStamp (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label);
static guint
fEventTimeStamps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
@@ -1946,12 +1963,13 @@ fVTSession (tvbuff_t *tvb, proto_tree *tree, guint offset);
* -- 7 = Sunday
* -- X'FF' = any day of week
* @param tvb
+ * @param pinfo
* @param tree
* @param offset
* @return modified offset
*/
static guint
-fWeekNDay (tvbuff_t *tvb, proto_tree *tree, guint offset);
+fWeekNDay (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
/**
* ReadAccessResult ::= SEQUENCE {
@@ -2017,6 +2035,7 @@ fTagNo (tvbuff_t *tvb, guint offset);
/**
* splits Tag Header coresponding to 20.2.1 General Rules For BACnet Tags
* @param tvb = "TestyVirtualBuffer"
+ * @param pinfo = packet info
* @param offset = offset in actual tvb
* @return tag_no BACnet 20.2.1.2 Tag Number
* @return class_tag BACnet 20.2.1.1 Class
@@ -2025,28 +2044,30 @@ fTagNo (tvbuff_t *tvb, guint offset);
*/
static guint
-fTagHeader (tvbuff_t *tvb, guint offset, guint8 *tag_no, guint8* class_tag, guint32 *lvt);
+fTagHeader (tvbuff_t *tvb, packet_info *pinfo, guint offset, guint8 *tag_no, guint8* class_tag, guint32 *lvt);
/**
* adds processID with max 32Bit unsigned Integer Value to tree
* @param tvb
+ * @param pinfo
* @param tree
* @param offset
* @return modified offset
*/
static guint
-fProcessId (tvbuff_t *tvb, proto_tree *tree, guint offset);
+fProcessId (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
/**
* adds timeSpan with max 32Bit unsigned Integer Value to tree
* @param tvb
+ * @param pinfo
* @param tree
* @param offset
* @return modified offset
*/
static guint
-fTimeSpan (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label);
+fTimeSpan (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label);
/**
* BACnet Application PDUs chapter 21
@@ -2075,7 +2096,7 @@ fPropertyIdentifier (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
* @return modified offset
*/
static guint
-fPropertyArrayIndex (tvbuff_t *tvb, proto_tree *tree, guint offset);
+fPropertyArrayIndex (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
/**
* listOfEventSummaries ::= SEQUENCE OF SEQUENCE {
@@ -2145,13 +2166,14 @@ fError(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
* Generic handler for context tagged values. Mostly for handling
* vendor-defined properties and services.
* @param tvb
+ * @param pinfo
* @param tree
* @param offset
* @return modified offset
* @todo beautify this ugly construct
*/
static guint
-fContextTaggedValue(tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label);
+fContextTaggedValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label);
/**
* realizes some ABSTRACT-SYNTAX.&Type
@@ -2167,7 +2189,7 @@ fAbstractSyntaxNType (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
static guint
-fBitStringTagVS (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label,
+fBitStringTagVS (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label,
const value_string *src);
/**
@@ -4843,16 +4865,15 @@ fSigned64 (tvbuff_t *tvb, guint offset, guint32 lvt, gint64 *val)
}
static guint
-fTagHeaderTree (tvbuff_t *tvb, proto_tree *tree, guint offset,
- guint8 *tag_no, guint8* tag_info, guint32 *lvt)
+fTagHeaderTree (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ guint offset, guint8 *tag_no, guint8* tag_info, guint32 *lvt)
{
+ proto_item *ti = NULL;
guint8 tag;
guint8 value;
guint tag_len = 1;
guint lvt_len = 1; /* used for tree display of lvt */
guint lvt_offset; /* used for tree display of lvt */
- proto_item *ti;
- proto_tree *subtree;
lvt_offset = offset;
tag = tvb_get_guint8(tvb, offset);
@@ -4884,70 +4905,78 @@ fTagHeaderTree (tvbuff_t *tvb, proto_tree *tree, guint offset,
}
if (tree) {
+ proto_tree *subtree;
if (tag_is_opening(tag))
ti = proto_tree_add_text(tree, tvb, offset, tag_len, "{[%u]", *tag_no );
else if (tag_is_closing(tag))
ti = proto_tree_add_text(tree, tvb, offset, tag_len, "}[%u]", *tag_no );
else if (tag_is_context_specific(tag)) {
ti = proto_tree_add_text(tree, tvb, offset, tag_len,
- "Context Tag: %u, Length/Value/Type: %u",
- *tag_no, *lvt);
+ "Context Tag: %u, Length/Value/Type: %u",
+ *tag_no, *lvt);
} else
ti = proto_tree_add_text(tree, tvb, offset, tag_len,
- "Application Tag: %s, Length/Value/Type: %u",
- val_to_str(*tag_no,
- BACnetApplicationTagNumber,
- ASHRAE_Reserved_Fmt),
- *lvt);
+ "Application Tag: %s, Length/Value/Type: %u",
+ val_to_str(*tag_no,
+ BACnetApplicationTagNumber,
+ ASHRAE_Reserved_Fmt),
+ *lvt);
- subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
/* details if needed */
+ subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
proto_tree_add_item(subtree, hf_BACnetTagClass, tvb, offset, 1, ENC_BIG_ENDIAN);
if (tag_is_extended_tag_number(tag)) {
proto_tree_add_uint_format(subtree,
- hf_BACnetContextTagNumber,
- tvb, offset, 1, tag,
- "Extended Tag Number");
+ hf_BACnetContextTagNumber,
+ tvb, offset, 1, tag,
+ "Extended Tag Number");
proto_tree_add_item(subtree,
- hf_BACnetExtendedTagNumber,
- tvb, offset + 1, 1, ENC_BIG_ENDIAN);
+ hf_BACnetExtendedTagNumber,
+ tvb, offset + 1, 1, ENC_BIG_ENDIAN);
} else {
if (tag_is_context_specific(tag))
proto_tree_add_item(subtree,
- hf_BACnetContextTagNumber,
- tvb, offset, 1, ENC_BIG_ENDIAN);
+ hf_BACnetContextTagNumber,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
else
proto_tree_add_item(subtree,
- hf_BACnetApplicationTagNumber,
- tvb, offset, 1, ENC_BIG_ENDIAN);
+ hf_BACnetApplicationTagNumber,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
}
if (tag_is_closing(tag) || tag_is_opening(tag))
proto_tree_add_item(subtree,
- hf_BACnetNamedTag,
- tvb, offset, 1, ENC_BIG_ENDIAN);
+ hf_BACnetNamedTag,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
else if (tag_is_extended_value(tag)) {
proto_tree_add_item(subtree,
- hf_BACnetNamedTag,
- tvb, offset, 1, ENC_BIG_ENDIAN);
+ hf_BACnetNamedTag,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_uint(subtree, hf_bacapp_tag_lvt,
- tvb, lvt_offset, lvt_len, *lvt);
+ tvb, lvt_offset, lvt_len, *lvt);
} else
proto_tree_add_uint(subtree, hf_bacapp_tag_lvt,
- tvb, lvt_offset, lvt_len, *lvt);
+ tvb, lvt_offset, lvt_len, *lvt);
+ } /* if (tree) */
+
+ if (*lvt > tvb_length(tvb)) {
+ expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR,
+ "LVT length too long: %d > %d", *lvt,
+ tvb_length(tvb));
+ *lvt = 1;
}
return tag_len;
}
static guint
-fTagHeader (tvbuff_t *tvb, guint offset, guint8 *tag_no, guint8* tag_info,
+fTagHeader (tvbuff_t *tvb, packet_info *pinfo, guint offset, guint8 *tag_no, guint8* tag_info,
guint32 *lvt)
{
- return fTagHeaderTree (tvb, NULL, offset, tag_no, tag_info, lvt);
+ return fTagHeaderTree (tvb, pinfo, NULL, offset, tag_no, tag_info, lvt);
}
static guint
-fNullTag (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
+fNullTag (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label)
{
guint8 tag_no, tag_info;
guint32 lvt;
@@ -4956,13 +4985,13 @@ fNullTag (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
ti = proto_tree_add_text(tree, tvb, offset, 1, "%sNULL", label);
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
- fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
return offset + 1;
}
static guint
-fBooleanTag (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
+fBooleanTag (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label)
{
guint8 tag_no, tag_info;
guint32 lvt = 0;
@@ -4970,7 +4999,7 @@ fBooleanTag (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
proto_tree *subtree;
guint bool_len = 1;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_info && lvt == 1) {
lvt = tvb_get_guint8(tvb, offset+1);
++bool_len;
@@ -4979,13 +5008,13 @@ fBooleanTag (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
ti = proto_tree_add_text(tree, tvb, offset, bool_len,
"%s%s", label, lvt == 0 ? "FALSE" : "TRUE");
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
- fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
return offset + bool_len;
}
static guint
-fUnsignedTag (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
+fUnsignedTag (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label)
{
guint64 val = 0;
guint8 tag_no, tag_info;
@@ -4994,7 +5023,7 @@ fUnsignedTag (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
proto_item *ti;
proto_tree *subtree;
- tag_len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ tag_len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
/* only support up to an 8 byte (64-bit) integer */
if (fUnsigned64 (tvb, offset + tag_len, lvt, &val))
ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len,
@@ -5003,32 +5032,43 @@ fUnsignedTag (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len,
"%s - %u octets (Unsigned)", label, lvt);
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
- fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
return offset+tag_len+lvt;
}
static guint
-fDevice_Instance (tvbuff_t *tvb, proto_tree *tree, guint offset, int hf)
+fDevice_Instance (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, int hf)
{
guint8 tag_no, tag_info;
- guint32 lvt;
+ guint32 lvt, safe_lvt;
guint tag_len;
proto_item *ti;
proto_tree *subtree;
- tag_len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
- ti = proto_tree_add_item(tree, hf, tvb, offset+tag_len, lvt, ENC_BIG_ENDIAN);
+ tag_len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
+
+ if (lvt > 4)
+ safe_lvt = 4;
+ else
+ safe_lvt = lvt;
+
+ ti = proto_tree_add_item(tree, hf, tvb, offset+tag_len, safe_lvt, ENC_BIG_ENDIAN);
+
+ if (lvt != safe_lvt)
+ expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR,
+ "This field claims to be an impossible %u bytes, while the max is %u", lvt, safe_lvt);
+
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
- fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
return offset+tag_len+lvt;
}
/* set split_val to zero when not needed */
static guint
-fEnumeratedTagSplit (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label,
- const value_string *vs, guint32 split_val)
+fEnumeratedTagSplit (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ guint offset, const gchar *label, const value_string *vs, guint32 split_val)
{
guint32 val = 0;
guint8 tag_no, tag_info;
@@ -5037,7 +5077,7 @@ fEnumeratedTagSplit (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar
proto_item *ti;
proto_tree *subtree;
- tag_len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ tag_len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
/* only support up to a 4 byte (32-bit) enumeration */
if (fUnsigned32 (tvb, offset+tag_len, lvt, &val)) {
if (vs)
@@ -5052,20 +5092,20 @@ fEnumeratedTagSplit (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar
"%s - %u octets (enumeration)", label, lvt);
}
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
- fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
return offset+tag_len+lvt;
}
static guint
-fEnumeratedTag (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label,
- const value_string *vs)
+fEnumeratedTag (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ guint offset, const gchar *label, const value_string *vs)
{
- return fEnumeratedTagSplit (tvb, tree, offset, label, vs, 0);
+ return fEnumeratedTagSplit (tvb, pinfo, tree, offset, label, vs, 0);
}
static guint
-fSignedTag (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
+fSignedTag (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label)
{
gint64 val = 0;
guint8 tag_no, tag_info;
@@ -5074,7 +5114,7 @@ fSignedTag (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
proto_item *ti;
proto_tree *subtree;
- tag_len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ tag_len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (fSigned64 (tvb, offset + tag_len, lvt, &val))
ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len,
"%s(Signed) %" G_GINT64_MODIFIER "d", label, val);
@@ -5082,13 +5122,13 @@ fSignedTag (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len,
"%s - %u octets (Signed)", label, lvt);
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
- fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
return offset+tag_len+lvt;
}
static guint
-fRealTag (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
+fRealTag (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label)
{
guint8 tag_no, tag_info;
guint32 lvt;
@@ -5097,18 +5137,18 @@ fRealTag (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
proto_item *ti;
proto_tree *subtree;
- tag_len = fTagHeader(tvb, offset, &tag_no, &tag_info, &lvt);
+ tag_len = fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
f_val = tvb_get_ntohieee_float(tvb, offset+tag_len);
ti = proto_tree_add_text(tree, tvb, offset, 4+tag_len,
"%s%f (Real)", label, f_val);
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
- fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
return offset+tag_len+4;
}
static guint
-fDoubleTag (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
+fDoubleTag (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label)
{
guint8 tag_no, tag_info;
guint32 lvt;
@@ -5117,18 +5157,18 @@ fDoubleTag (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
proto_item *ti;
proto_tree *subtree;
- tag_len = fTagHeader(tvb, offset, &tag_no, &tag_info, &lvt);
+ tag_len = fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
d_val = tvb_get_ntohieee_double(tvb, offset+tag_len);
ti = proto_tree_add_text(tree, tvb, offset, 8+tag_len,
"%s%f (Double)", label, d_val);
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
- fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
return offset+tag_len+8;
}
static guint
-fProcessId (tvbuff_t *tvb, proto_tree *tree, guint offset)
+fProcessId (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
{
guint32 val = 0, lvt;
guint8 tag_no, tag_info;
@@ -5136,7 +5176,7 @@ fProcessId (tvbuff_t *tvb, proto_tree *tree, guint offset)
proto_tree *subtree;
guint tag_len;
- tag_len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ tag_len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (fUnsigned32 (tvb, offset+tag_len, lvt, &val))
ti = proto_tree_add_uint(tree, hf_bacapp_tag_ProcessId,
tvb, offset, lvt+tag_len, val);
@@ -5144,14 +5184,14 @@ fProcessId (tvbuff_t *tvb, proto_tree *tree, guint offset)
ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len,
"Process Identifier - %u octets (Signed)", lvt);
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
- fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
offset += tag_len + lvt;
return offset;
}
static guint
-fTimeSpan (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
+fTimeSpan (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label)
{
guint32 val = 0, lvt;
guint8 tag_no, tag_info;
@@ -5159,7 +5199,7 @@ fTimeSpan (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
proto_tree *subtree;
guint tag_len;
- tag_len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ tag_len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (fUnsigned32 (tvb, offset+tag_len, lvt, &val))
ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len,
"%s (hh.mm.ss): %d.%02d.%02d%s",
@@ -5170,13 +5210,13 @@ fTimeSpan (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len,
"%s - %u octets (Signed)", label, lvt);
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
- fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
return offset+tag_len+lvt;
}
static guint
-fWeekNDay (tvbuff_t *tvb, proto_tree *tree, guint offset)
+fWeekNDay (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
{
guint32 month, weekOfMonth, dayOfWeek;
guint8 tag_no, tag_info;
@@ -5185,7 +5225,7 @@ fWeekNDay (tvbuff_t *tvb, proto_tree *tree, guint offset)
proto_item *ti;
proto_tree *subtree;
- tag_len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ tag_len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
month = tvb_get_guint8(tvb, offset+tag_len);
weekOfMonth = tvb_get_guint8(tvb, offset+tag_len+1);
dayOfWeek = tvb_get_guint8(tvb, offset+tag_len+2);
@@ -5194,13 +5234,13 @@ fWeekNDay (tvbuff_t *tvb, proto_tree *tree, guint offset)
val_to_str(weekOfMonth, weekofmonth, "week of month (%d) not found"),
val_to_str(dayOfWeek, day_of_week, "day of week (%d) not found"));
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
- fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
return offset+tag_len+lvt;
}
static guint
-fDate (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
+fDate (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label)
{
guint32 year, month, day, weekday;
guint8 tag_no, tag_info;
@@ -5209,7 +5249,7 @@ fDate (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
proto_item *ti;
proto_tree *subtree;
- tag_len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ tag_len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
year = tvb_get_guint8(tvb, offset+tag_len);
month = tvb_get_guint8(tvb, offset+tag_len+1);
day = tvb_get_guint8(tvb, offset+tag_len+2);
@@ -5235,13 +5275,13 @@ fDate (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
day, val_to_str(weekday, day_of_week, "(%d) not found"));
}
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
- fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
return offset+tag_len+lvt;
}
static guint
-fTime (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
+fTime (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label)
{
guint32 hour, minute, second, msec, lvt;
guint8 tag_no, tag_info;
@@ -5249,7 +5289,7 @@ fTime (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
proto_item *ti;
proto_tree *subtree;
- tag_len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ tag_len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
hour = tvb_get_guint8(tvb, offset+tag_len);
minute = tvb_get_guint8(tvb, offset+tag_len+1);
second = tvb_get_guint8(tvb, offset+tag_len+2);
@@ -5266,13 +5306,13 @@ fTime (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
hour >= 12 ? "P.M." : "A.M.",
hour, minute, second, msec);
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
- fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
return offset+tag_len+lvt;
}
static guint
-fDateTime (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
+fDateTime (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label)
{
proto_tree *subtree = tree;
proto_item *tt;
@@ -5281,8 +5321,8 @@ fDateTime (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
tt = proto_tree_add_text (subtree, tvb, offset, 10, "%s", label);
subtree = proto_item_add_subtree(tt, ett_bacapp_value);
}
- offset = fDate (tvb,subtree,offset,"Date: ");
- return fTime (tvb,subtree,offset,"Time: ");
+ offset = fDate (tvb,pinfo,subtree,offset,"Date: ");
+ return fTime (tvb,pinfo,subtree,offset,"Time: ");
}
static guint
@@ -5294,11 +5334,11 @@ fTimeValue (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info)) { /* closing Tag, but not for me */
return offset;
}
- offset = fTime (tvb,tree,offset,"Time: ");
+ offset = fTime (tvb,pinfo,tree,offset,"Time: ");
offset = fApplicationTypes(tvb, pinfo, tree, offset, "Value: ");
if (offset==lastoffset) break; /* exit loop if nothing happens inside */
@@ -5307,22 +5347,22 @@ fTimeValue (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
}
static guint
-fCalendarEntry (tvbuff_t *tvb, proto_tree *tree, guint offset)
+fCalendarEntry (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
{
guint8 tag_no, tag_info;
guint32 lvt;
switch (fTagNo(tvb, offset)) {
case 0: /* Date */
- offset = fDate (tvb, tree, offset, "Date: ");
+ offset = fDate (tvb, pinfo, tree, offset, "Date: ");
break;
case 1: /* dateRange */
- offset += fTagHeaderTree(tvb, tree, offset, &tag_no, &tag_info, &lvt);
- offset = fDateRange (tvb, tree, offset);
- offset += fTagHeaderTree(tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
+ offset = fDateRange (tvb, pinfo, tree, offset);
+ offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
break;
case 2: /* BACnetWeekNDay */
- offset = fWeekNDay (tvb, tree, offset);
+ offset = fWeekNDay (tvb, pinfo, tree, offset);
break;
default:
return offset;
@@ -5343,15 +5383,15 @@ fEventTimeStamps( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint
if (ti) {
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
}
- offset = fTimeStamp (tvb, subtree, offset,"TO-OFFNORMAL timestamp: ");
- offset = fTimeStamp (tvb, subtree, offset,"TO-FAULT timestamp: ");
- offset = fTimeStamp (tvb, subtree, offset,"TO-NORMAL timestamp: ");
+ offset = fTimeStamp (tvb, pinfo, subtree, offset,"TO-OFFNORMAL timestamp: ");
+ offset = fTimeStamp (tvb, pinfo, subtree, offset,"TO-FAULT timestamp: ");
+ offset = fTimeStamp (tvb, pinfo, subtree, offset,"TO-NORMAL timestamp: ");
}
return offset;
}
static guint
-fTimeStamp (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
+fTimeStamp (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label)
{
guint8 tag_no = 0, tag_info = 0;
guint32 lvt = 0;
@@ -5359,16 +5399,16 @@ fTimeStamp (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
if (tvb_reported_length_remaining(tvb, offset) > 0) { /* don't loop, it's a CHOICE */
switch (fTagNo(tvb, offset)) {
case 0: /* time */
- offset = fTime (tvb, tree, offset, label?label:"time: ");
+ offset = fTime (tvb, pinfo, tree, offset, label?label:"time: ");
break;
case 1: /* sequenceNumber */
- offset = fUnsignedTag (tvb, tree, offset,
+ offset = fUnsignedTag (tvb, pinfo, tree, offset,
label?label:"sequence number: ");
break;
case 2: /* dateTime */
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
- offset = fDateTime (tvb, tree, offset, label?label:"date time: ");
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
+ offset = fDateTime (tvb, pinfo, tree, offset, label?label:"date time: ");
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
break;
default:
return offset;
@@ -5406,13 +5446,13 @@ fDestination (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
if (tvb_reported_length_remaining(tvb, offset) > 0) {
offset = fApplicationTypesEnumerated(tvb,pinfo,tree,offset,
"valid Days: ", BACnetDaysOfWeek);
- offset = fTime (tvb,tree,offset,"from time: ");
- offset = fTime (tvb,tree,offset,"to time: ");
+ offset = fTime (tvb,pinfo,tree,offset,"from time: ");
+ offset = fTime (tvb,pinfo,tree,offset,"to time: ");
offset = fRecipient (tvb,pinfo,tree,offset);
- offset = fProcessId (tvb,tree,offset);
+ offset = fProcessId (tvb,pinfo,tree,offset);
offset = fApplicationTypes (tvb,pinfo,tree,offset,
"issue confirmed notifications: ");
- offset = fBitStringTagVS (tvb,tree,offset,
+ offset = fBitStringTagVS (tvb,pinfo,tree,offset,
"transitions: ", BACnetEventTransitionBits);
}
return offset;
@@ -5420,7 +5460,7 @@ fDestination (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
static guint
-fOctetString (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label, guint32 lvt)
+fOctetString (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label, guint32 lvt)
{
gchar *tmp;
guint start = offset;
@@ -5428,7 +5468,7 @@ fOctetString (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label,
proto_tree *subtree = tree;
proto_item *ti = 0;
- offset += fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (lvt > 0) {
tmp = tvb_bytes_to_str(tvb, offset, lvt);
@@ -5439,13 +5479,13 @@ fOctetString (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label,
if (ti)
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
- fTagHeaderTree(tvb, subtree, start, &tag_no, &tag_info, &lvt);
+ fTagHeaderTree(tvb, pinfo, subtree, start, &tag_no, &tag_info, &lvt);
return offset;
}
static guint
-fMacAddress (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label, guint32 lvt)
+fMacAddress (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label, guint32 lvt)
{
gchar *tmp;
guint start = offset;
@@ -5453,7 +5493,7 @@ fMacAddress (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label,
proto_tree* subtree = tree;
proto_item* ti = 0;
- offset += fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
ti = proto_tree_add_text(tree, tvb, offset, 6, "%s", label); /* just add the label, with the tagHeader information in its subtree */
@@ -5486,34 +5526,34 @@ fMacAddress (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label,
if (ti)
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
- fTagHeaderTree(tvb, subtree, start, &tag_no, &tag_info, &lvt);
+ fTagHeaderTree(tvb, pinfo, subtree, start, &tag_no, &tag_info, &lvt);
return offset;
}
static guint
-fAddress (tvbuff_t *tvb, proto_tree *tree, guint offset)
+fAddress (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
{
guint8 tag_no, tag_info;
guint32 lvt;
guint offs;
- offset = fUnsignedTag (tvb, tree, offset, "network-number");
- offs = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ offset = fUnsignedTag (tvb, pinfo, tree, offset, "network-number");
+ offs = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (lvt == 0) {
proto_tree_add_text(tree, tvb, offset, offs, "MAC-address: broadcast");
offset += offs;
} else
- offset = fMacAddress (tvb, tree, offset, "MAC-address: ", lvt);
+ offset = fMacAddress (tvb, pinfo, tree, offset, "MAC-address: ", lvt);
return offset;
}
static guint
-fSessionKey (tvbuff_t *tvb, proto_tree *tree, guint offset)
+fSessionKey (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
{
- offset = fOctetString (tvb,tree,offset,"session key: ", 8);
- return fAddress (tvb,tree,offset);
+ offset = fOctetString (tvb,pinfo,tree,offset,"session key: ", 8);
+ return fAddress (tvb,pinfo,tree,offset);
}
static guint
@@ -5526,7 +5566,7 @@ fObjectIdentifier (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint of
proto_tree *subtree;
guint32 object_id;
- tag_length = fTagHeader(tvb, offset, &tag_no, &tag_info, &lvt);
+ tag_length = fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
object_id = tvb_get_ntohl(tvb,offset+tag_length);
object_type = object_id_type(object_id);
ti = proto_tree_add_text(tree, tvb, offset, tag_length + 4,
@@ -5556,7 +5596,7 @@ fObjectIdentifier (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint of
/* here are the details of how we arrived at the above text */
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
- fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
offset += tag_length;
proto_tree_add_item(subtree, hf_bacapp_objectType, tvb, offset, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(subtree, hf_bacapp_instanceNumber, tvb, offset, 4, ENC_BIG_ENDIAN);
@@ -5571,15 +5611,15 @@ fRecipient (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
guint8 tag_no, tag_info;
guint32 lvt;
- fTagHeader(tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_no < 2) {
if (tag_no == 0) { /* device */
offset = fObjectIdentifier (tvb, pinfo, tree, offset);
}
else { /* address */
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
- offset = fAddress (tvb, tree, offset);
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
+ offset = fAddress (tvb, pinfo, tree, offset);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
}
}
return offset;
@@ -5604,14 +5644,14 @@ fRecipientProcess (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint of
switch (fTagNo(tvb, offset)) {
case 0: /* recipient */
- offset += fTagHeaderTree(tvb, tree, offset, &tag_no, &tag_info, &lvt); /* show context open */
+ offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt); /* show context open */
tt = proto_tree_add_text(tree, tvb, offset, 1, "Recipient"); /* add tree label and indent */
subtree = proto_item_add_subtree(tt, ett_bacapp_value);
offset = fRecipient (tvb, pinfo, subtree, offset);
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt); /* show context close */
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt); /* show context close */
break;
case 1: /* processId */
- offset = fProcessId (tvb, tree, offset);
+ offset = fProcessId (tvb, pinfo, tree, offset);
lastoffset = offset;
break;
default:
@@ -5635,7 +5675,7 @@ fCOVSubscription (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint off
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info) ) {
return offset;
}
@@ -5649,27 +5689,27 @@ fCOVSubscription (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint off
tt = proto_tree_add_text(tree, tvb, offset, 1, "Recipient"); /* add tree label and indent */
subtree = proto_item_add_subtree(tt, ett_bacapp_value);
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt); /* show context open */
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); /* show context open */
offset = fRecipientProcess (tvb, pinfo, subtree, offset);
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt); /* show context close */
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); /* show context close */
subtree = tree; /* done with this level - return to previous tree */
break;
case 1: /* MonitoredPropertyReference */
tt = proto_tree_add_text(tree, tvb, offset, 1, "Monitored Property Reference");
subtree = proto_item_add_subtree(tt, ett_bacapp_value);
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
offset = fBACnetObjectPropertyReference (tvb, pinfo, subtree, offset);
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
subtree = tree;
break;
case 2: /* IssueConfirmedNotifications - boolean */
- offset = fBooleanTag (tvb, tree, offset, "Issue Confirmed Notifications: ");
+ offset = fBooleanTag (tvb, pinfo, tree, offset, "Issue Confirmed Notifications: ");
break;
case 3: /* TimeRemaining */
- offset = fUnsignedTag (tvb, tree, offset, "Time Remaining: ");
+ offset = fUnsignedTag (tvb, pinfo, tree, offset, "Time Remaining: ");
break;
case 4: /* COVIncrement */
- offset = fRealTag (tvb, tree, offset, "COV Increment: ");
+ offset = fRealTag (tvb, pinfo, tree, offset, "COV Increment: ");
break;
default:
break;
@@ -5683,7 +5723,7 @@ static guint
fAddressBinding (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
{
offset = fObjectIdentifier (tvb, pinfo, tree, offset);
- return fAddress (tvb, tree, offset);
+ return fAddress (tvb, pinfo, tree, offset);
}
static guint
@@ -5698,7 +5738,7 @@ fActionCommand (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offse
propertyArrayIndex = -1;
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info) ) {
if (tag_no == tag_match) {
return offset;
@@ -5719,23 +5759,23 @@ fActionCommand (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offse
offset = fPropertyIdentifier (tvb, pinfo, subtree, offset);
break;
case 3: /* propertyArrayIndex */
- offset = fPropertyArrayIndex (tvb, subtree, offset);
+ offset = fPropertyArrayIndex (tvb, pinfo, subtree, offset);
break;
case 4: /* propertyValue */
offset = fPropertyValue (tvb, pinfo, subtree, offset, tag_info);
break;
case 5: /* priority */
- offset = fUnsignedTag (tvb,subtree,offset,"Priority: ");
+ offset = fUnsignedTag (tvb,pinfo,subtree,offset,"Priority: ");
break;
case 6: /* postDelay */
- offset = fUnsignedTag (tvb,subtree,offset,"Post Delay: ");
+ offset = fUnsignedTag (tvb,pinfo,subtree,offset,"Post Delay: ");
break;
case 7: /* quitOnFailure */
- offset = fBooleanTag(tvb, subtree, offset,
+ offset = fBooleanTag(tvb, pinfo, subtree, offset,
"Quit On Failure: ");
break;
case 8: /* writeSuccessful */
- offset = fBooleanTag(tvb, subtree, offset,
+ offset = fBooleanTag(tvb, pinfo, subtree, offset,
"Write Successful: ");
break;
default:
@@ -5761,7 +5801,7 @@ fActionList (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
while (tvb_reported_length_remaining(tvb, offset) > 0) {
lastoffset = offset;
- len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info)) {
subtree = tree;
if ( tag_no != 0 ) /* don't eat the closing property tag, just return */
@@ -5772,7 +5812,7 @@ fActionList (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
if (tag_is_opening(tag_info)) {
ti = proto_tree_add_text(tree, tvb, offset, 1, "Action List");
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
- offset += fTagHeaderTree (tvb, subtree, offset,
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset,
&tag_no, &tag_info, &lvt);
}
switch (tag_no) {
@@ -5798,7 +5838,7 @@ fPropertyIdentifier (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
const gchar *label = "Property Identifier";
propertyIdentifier = 0; /* global Variable */
- tag_len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ tag_len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
/* can we decode this value? */
if (fUnsigned32 (tvb, offset+tag_len, lvt, (guint32 *)&propertyIdentifier)) {
ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len,
@@ -5818,7 +5858,7 @@ fPropertyIdentifier (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
return offset;
}
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
- fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
proto_tree_add_item(subtree, hf_BACnetPropertyIdentifier, tvb,
offset+tag_len, lvt, ENC_BIG_ENDIAN);
@@ -5826,7 +5866,7 @@ fPropertyIdentifier (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
}
static guint
-fPropertyArrayIndex (tvbuff_t *tvb, proto_tree *tree, guint offset)
+fPropertyArrayIndex (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
{
guint8 tag_no, tag_info;
guint32 lvt;
@@ -5834,7 +5874,7 @@ fPropertyArrayIndex (tvbuff_t *tvb, proto_tree *tree, guint offset)
proto_item *ti;
proto_tree *subtree;
- tag_len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ tag_len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (fUnsigned32 (tvb, offset + tag_len, lvt, (guint32 *)&propertyArrayIndex))
ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len,
"property Array Index (Unsigned) %u", propertyArrayIndex);
@@ -5842,13 +5882,13 @@ fPropertyArrayIndex (tvbuff_t *tvb, proto_tree *tree, guint offset)
ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len,
"property Array Index - %u octets (Unsigned)", lvt);
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
- fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
return offset+tag_len+lvt;
}
static guint
-fCharacterString (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
+fCharacterString (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label)
{
guint8 tag_no, tag_info, character_set;
guint32 lvt, l;
@@ -5863,7 +5903,7 @@ fCharacterString (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *la
if (tvb_reported_length_remaining(tvb, offset) > 0) {
- offs = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ offs = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
character_set = tvb_get_guint8(tvb, offset+offs);
/* Account for code page if DBCS */
@@ -5930,7 +5970,7 @@ fCharacterString (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *la
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
- fTagHeaderTree (tvb, subtree, start, &tag_no, &tag_info, &lvt);
+ fTagHeaderTree (tvb, pinfo, subtree, start, &tag_no, &tag_info, &lvt);
proto_tree_add_item(subtree, hf_BACnetCharacterSet, tvb, start+offs, 1, ENC_BIG_ENDIAN);
if (character_set == 1) {
@@ -5942,7 +5982,7 @@ fCharacterString (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *la
}
static guint
-fBitStringTagVS (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label,
+fBitStringTagVS (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label,
const value_string *src)
{
guint8 tag_no, tag_info, tmp;
@@ -5954,7 +5994,7 @@ fBitStringTagVS (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *lab
proto_tree* subtree = tree;
proto_item* ti = 0;
- offs = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ offs = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
numberOfBytes = lvt-1; /* Ignore byte for unused bit count */
offset += offs;
unused = tvb_get_guint8(tvb, offset); /* get the unused Bits */
@@ -5963,7 +6003,7 @@ fBitStringTagVS (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *lab
if (ti) {
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
}
- fTagHeaderTree(tvb, subtree, start, &tag_no, &tag_info, &lvt);
+ fTagHeaderTree(tvb, pinfo, subtree, start, &tag_no, &tag_info, &lvt);
proto_tree_add_text(subtree, tvb, offset, 1,
"Unused bits: %u", unused);
skip = 0;
@@ -6003,9 +6043,9 @@ fBitStringTagVS (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *lab
}
static guint
-fBitStringTag (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
+fBitStringTag (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label)
{
- return fBitStringTagVS (tvb, tree, offset, label, NULL);
+ return fBitStringTagVS (tvb, pinfo, tree, offset, label, NULL);
}
/* handles generic application types, as well as enumerated and enumerations
@@ -6020,44 +6060,44 @@ fApplicationTypesEnumeratedSplit (tvbuff_t *tvb, packet_info *pinfo, proto_tree
if (tvb_reported_length_remaining(tvb, offset) > 0) {
- tag_len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ tag_len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (!tag_is_context_specific(tag_info)) {
switch (tag_no) {
case 0: /** NULL 20.2.2 */
- offset = fNullTag(tvb, tree, offset, label);
+ offset = fNullTag(tvb, pinfo, tree, offset, label);
break;
case 1: /** BOOLEAN 20.2.3 */
- offset = fBooleanTag(tvb, tree, offset, label);
+ offset = fBooleanTag(tvb, pinfo, tree, offset, label);
break;
case 2: /** Unsigned Integer 20.2.4 */
- offset = fUnsignedTag(tvb, tree, offset, label);
+ offset = fUnsignedTag(tvb, pinfo, tree, offset, label);
break;
case 3: /** Signed Integer 20.2.5 */
- offset = fSignedTag(tvb, tree, offset, label);
+ offset = fSignedTag(tvb, pinfo, tree, offset, label);
break;
case 4: /** Real 20.2.6 */
- offset = fRealTag(tvb, tree, offset, label);
+ offset = fRealTag(tvb, pinfo, tree, offset, label);
break;
case 5: /** Double 20.2.7 */
- offset = fDoubleTag(tvb, tree, offset, label);
+ offset = fDoubleTag(tvb, pinfo, tree, offset, label);
break;
case 6: /** Octet String 20.2.8 */
- offset = fOctetString (tvb, tree, offset, label, lvt);
+ offset = fOctetString (tvb, pinfo, tree, offset, label, lvt);
break;
case 7: /** Character String 20.2.9 */
- offset = fCharacterString (tvb,tree,offset,label);
+ offset = fCharacterString (tvb,pinfo,tree,offset,label);
break;
case 8: /** Bit String 20.2.10 */
- offset = fBitStringTagVS (tvb, tree, offset, label, src);
+ offset = fBitStringTagVS (tvb, pinfo, tree, offset, label, src);
break;
case 9: /** Enumerated 20.2.11 */
- offset = fEnumeratedTagSplit (tvb, tree, offset, label, src, split_val);
+ offset = fEnumeratedTagSplit (tvb, pinfo, tree, offset, label, src, split_val);
break;
case 10: /** Date 20.2.12 */
- offset = fDate (tvb, tree, offset, label);
+ offset = fDate (tvb, pinfo, tree, offset, label);
break;
case 11: /** Time 20.2.13 */
- offset = fTime (tvb, tree, offset, label);
+ offset = fTime (tvb, pinfo, tree, offset, label);
break;
case 12: /** BACnetObjectIdentifier 20.2.14 */
offset = fObjectIdentifier (tvb, pinfo, tree, offset);
@@ -6078,7 +6118,7 @@ fApplicationTypesEnumeratedSplit (tvbuff_t *tvb, packet_info *pinfo, proto_tree
}
static guint
-fShedLevel (tvbuff_t *tvb, proto_tree *tree, guint offset)
+fShedLevel (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
{
guint lastoffset = 0;
@@ -6087,13 +6127,13 @@ fShedLevel (tvbuff_t *tvb, proto_tree *tree, guint offset)
switch (fTagNo(tvb,offset)) {
case 0: /* percent */
- offset = fUnsignedTag (tvb, tree, offset, "shed percent: ");
+ offset = fUnsignedTag (tvb, pinfo, tree, offset, "shed percent: ");
break;
case 1: /* level */
- offset = fUnsignedTag (tvb, tree, offset, "shed level: ");
+ offset = fUnsignedTag (tvb, pinfo, tree, offset, "shed level: ");
break;
case 2: /* amount */
- offset = fRealTag(tvb, tree, offset, "shed amount: ");
+ offset = fRealTag(tvb, pinfo, tree, offset, "shed amount: ");
break;
default:
return offset;
@@ -6118,7 +6158,7 @@ fApplicationTypes (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint of
}
static guint
-fContextTaggedValue(tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label)
+fContextTaggedValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label)
{
guint8 tag_no, tag_info;
guint32 lvt;
@@ -6128,7 +6168,7 @@ fContextTaggedValue(tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *
gint tvb_len;
(void)label;
- tag_len = fTagHeader(tvb, offset, &tag_no, &tag_info, &lvt);
+ tag_len = fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
/* cap the the suggested length in case of bad data */
tvb_len = tvb_reported_length_remaining(tvb, offset+tag_len);
if ((tvb_len >= 0) && ((guint32)tvb_len < lvt)) {
@@ -6138,7 +6178,7 @@ fContextTaggedValue(tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *
"Context Value (as %u DATA octets)", lvt);
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
- fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
return offset + tag_len + lvt;
}
@@ -6157,16 +6197,16 @@ fPrescale (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint offset
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info) ) {
return offset;
}
switch (tag_no) {
case 0: /* multiplier */
- offset = fUnsignedTag (tvb,tree,offset,"Multiplier: ");
+ offset = fUnsignedTag (tvb,pinfo,tree,offset,"Multiplier: ");
break;
case 1: /* moduloDivide */
- offset = fUnsignedTag (tvb,tree,offset,"Modulo Divide: ");
+ offset = fUnsignedTag (tvb,pinfo,tree,offset,"Modulo Divide: ");
break;
default:
return offset;
@@ -6191,16 +6231,16 @@ fScale (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint offset)
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info) ) {
return offset;
}
switch (tag_no) {
case 0: /* floatScale */
- offset = fRealTag (tvb,tree,offset,"Float Scale: ");
+ offset = fRealTag (tvb,pinfo,tree,offset,"Float Scale: ");
break;
case 1: /* integerScale */
- offset = fSignedTag (tvb,tree,offset,"Integer Scale: ");
+ offset = fSignedTag (tvb,pinfo,tree,offset,"Integer Scale: ");
break;
default:
return offset;
@@ -6232,24 +6272,25 @@ fLoggingRecord (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info) ) {
return offset;
}
switch (tag_no) {
case 0: /* timestamp */
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
- offset = fDateTime (tvb, tree, offset, "Timestamp: ");
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
+ offset = fDateTime (tvb, pinfo, tree, offset, "Timestamp: ");
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
break;
case 1: /* presentValue */
- offset = fUnsignedTag (tvb,tree,offset,"Present Value: ");
+ offset = fUnsignedTag (tvb,pinfo,tree,offset,"Present Value: ");
break;
case 2: /* accumulatedValue */
- offset = fUnsignedTag (tvb,tree,offset,"Accumulated Value: ");
+ offset = fUnsignedTag (tvb,pinfo,tree,offset,"Accumulated Value: ");
break;
case 3: /* accumulatorStatus */
- offset = fEnumeratedTag (tvb, tree, offset, "Accumulator Status: ", BACnetAccumulatorStatus);
+ offset = fEnumeratedTag (tvb, pinfo, tree, offset, "Accumulator Status: ", BACnetAccumulatorStatus);
+ break;
default:
return offset;
}
@@ -6270,7 +6311,7 @@ fSequenceOfEnums (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint off
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info) ) {
return offset;
}
@@ -6293,7 +6334,7 @@ fDoorMembers (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info) ) {
return offset;
}
@@ -6315,7 +6356,7 @@ fListOfGroupMembers (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info) ) {
return offset;
}
@@ -6332,7 +6373,7 @@ fAbstractSyntaxNType (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
guint32 lvt;
guint lastoffset = 0, depth = 0;
char ar[256];
- guint32 save_object_type = object_type;
+ guint32 save_object_type;
if (propertyIdentifier >= 0) {
g_snprintf (ar, sizeof(ar), "%s: ",
@@ -6345,7 +6386,7 @@ fAbstractSyntaxNType (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
}
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info)) { /* closing tag, but not for me */
if (depth <= 0) return offset;
}
@@ -6371,7 +6412,7 @@ fAbstractSyntaxNType (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
offset = fLOPR (tvb, pinfo, tree,offset);
break;
case 55: /* list-of-session-keys */
- fSessionKey (tvb, tree, offset);
+ fSessionKey (tvb, pinfo, tree, offset);
break;
case 79: /* object-type */
case 96: /* protocol-object-types-supported */
@@ -6459,13 +6500,13 @@ fAbstractSyntaxNType (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
case 212: /* actual-shed-level */
case 214: /* expected-shed-level */
case 218: /* requested-shed-level */
- offset = fShedLevel (tvb, tree, offset);
+ offset = fShedLevel (tvb, pinfo, tree, offset);
break;
case 152: /* active-cov-subscriptions */
offset = fCOVSubscription (tvb, pinfo, tree, offset);
break;
case 23: /* date-list */
- offset = fCalendarEntry(tvb, tree, offset);
+ offset = fCalendarEntry(tvb, pinfo, tree, offset);
break;
case 116: /* time-sychronization-recipients */
offset = fRecipient(tvb, pinfo, tree, offset);
@@ -6567,12 +6608,12 @@ fAbstractSyntaxNType (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
if (tag_info) {
if (tag_is_opening(tag_info)) {
++depth;
- offset += fTagHeaderTree(tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
} else if (tag_is_closing(tag_info)) {
--depth;
- offset += fTagHeaderTree(tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
} else {
- offset = fContextTaggedValue(tvb, tree, offset, ar);
+ offset = fContextTaggedValue(tvb, pinfo, tree, offset, ar);
}
} else {
offset = fApplicationTypes (tvb, pinfo, tree, offset, ar);
@@ -6592,11 +6633,11 @@ fPropertyValue (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offse
guint32 lvt;
if (tag_is_opening(tag_info)) {
- offset += fTagHeaderTree(tvb, tree, offset,
+ offset += fTagHeaderTree(tvb, pinfo, tree, offset,
&tag_no, &tag_info, &lvt);
offset = fAbstractSyntaxNType (tvb, pinfo, tree, offset);
if (tvb_length_remaining(tvb, offset) > 0) {
- offset += fTagHeaderTree(tvb, tree, offset,
+ offset += fTagHeaderTree(tvb, pinfo, tree, offset,
&tag_no, &tag_info, &lvt);
}
} else {
@@ -6618,7 +6659,7 @@ fPropertyIdentifierValue (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
offset = fPropertyReference(tvb, pinfo, tree, offset, tagoffset, 0);
if (offset > lastoffset) {
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_no == tagoffset+2) { /* Value - might not be present in ReadAccessResult */
offset = fPropertyValue (tvb, pinfo, tree, offset, tag_info);
}
@@ -6639,9 +6680,9 @@ fBACnetPropertyValue (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
if (offset > lastoffset) {
/* detect optional priority
by looking to see if the next tag is context tag number 3 */
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_context_specific(tag_info) && (tag_no == 3))
- offset = fUnsignedTag (tvb,tree,offset,"Priority: ");
+ offset = fUnsignedTag (tvb,pinfo,tree,offset,"Priority: ");
}
if (offset == lastoffset) break; /* nothing happened, exit loop */
}
@@ -6659,7 +6700,7 @@ fSubscribeCOVPropertyRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info)) {
offset += len;
subtree = tree;
@@ -6668,16 +6709,16 @@ fSubscribeCOVPropertyRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
switch (tag_no) {
case 0: /* ProcessId */
- offset = fUnsignedTag (tvb, tree, offset, "subscriber Process Id: ");
+ offset = fUnsignedTag (tvb, pinfo, tree, offset, "subscriber Process Id: ");
break;
case 1: /* monitored ObjectId */
offset = fObjectIdentifier (tvb, pinfo, tree, offset);
break;
case 2: /* issueConfirmedNotifications */
- offset = fBooleanTag (tvb, tree, offset, "issue Confirmed Notifications: ");
+ offset = fBooleanTag (tvb, pinfo, tree, offset, "issue Confirmed Notifications: ");
break;
case 3: /* life time */
- offset = fTimeSpan (tvb,tree,offset,"life time");
+ offset = fTimeSpan (tvb,pinfo,tree,offset,"life time");
break;
case 4: /* monitoredPropertyIdentifier */
if (tag_is_opening(tag_info)) {
@@ -6685,14 +6726,14 @@ fSubscribeCOVPropertyRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
if (tt) {
subtree = proto_item_add_subtree(tt, ett_bacapp_value);
}
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
offset = fBACnetPropertyReference (tvb, pinfo, subtree, offset, 1);
break;
}
FAULT;
break;
case 5: /* covIncrement */
- offset = fRealTag (tvb, tree, offset, "COV Increment: ");
+ offset = fRealTag (tvb, pinfo, tree, offset, "COV Increment: ");
break;
default:
return offset;
@@ -6718,16 +6759,16 @@ fWhoHas (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
switch (fTagNo(tvb, offset)) {
case 0: /* deviceInstanceLowLimit */
- offset = fUnsignedTag (tvb, tree, offset, "device Instance Low Limit: ");
+ offset = fUnsignedTag (tvb, pinfo, tree, offset, "device Instance Low Limit: ");
break;
case 1: /* deviceInstanceHighLimit */
- offset = fUnsignedTag (tvb, tree, offset, "device Instance High Limit: ");
+ offset = fUnsignedTag (tvb, pinfo, tree, offset, "device Instance High Limit: ");
break;
case 2: /* BACnetObjectId */
offset = fObjectIdentifier (tvb, pinfo, tree, offset);
break;
case 3: /* messageText */
- offset = fCharacterString (tvb,tree,offset, "Object Name: ");
+ offset = fCharacterString (tvb,pinfo,tree,offset, "Object Name: ");
break;
default:
return offset;
@@ -6745,15 +6786,15 @@ fDailySchedule (tvbuff_t *tvb, packet_info *pinfo, proto_tree *subtree, guint of
guint8 tag_no, tag_info;
guint32 lvt;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_opening(tag_info) && tag_no == 0) {
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt); /* opening context tag 0 */
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); /* opening context tag 0 */
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info)) {
/* should be closing context tag 0 */
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
return offset;
}
@@ -6762,7 +6803,7 @@ fDailySchedule (tvbuff_t *tvb, packet_info *pinfo, proto_tree *subtree, guint of
}
} else if (tag_no == 0 && lvt == 0) {
/* not sure null (empty array element) is legal */
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
}
return offset;
}
@@ -6789,7 +6830,7 @@ fWeeklySchedule (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offs
}
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info)) {
return offset; /* outer encoding will print out closing tag */
}
@@ -6803,30 +6844,30 @@ fWeeklySchedule (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offs
static guint
-fUTCTimeSynchronizationRequest (tvbuff_t *tvb, proto_tree *tree, guint offset)
+fUTCTimeSynchronizationRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
{
if (tvb_reported_length_remaining(tvb, offset) <= 0)
return offset;
- return fDateTime (tvb, tree, offset, "UTC-Time: ");
+ return fDateTime (tvb, pinfo, tree, offset, "UTC-Time: ");
}
static guint
-fTimeSynchronizationRequest (tvbuff_t *tvb, proto_tree *tree, guint offset)
+fTimeSynchronizationRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
{
if (tvb_reported_length_remaining(tvb, offset) <= 0)
return offset;
- return fDateTime (tvb, tree, offset, NULL);
+ return fDateTime (tvb, pinfo, tree, offset, NULL);
}
static guint
-fDateRange (tvbuff_t *tvb, proto_tree *tree, guint offset)
+fDateRange (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
{
if (tvb_reported_length_remaining(tvb, offset) <= 0)
return offset;
- offset = fDate (tvb,tree,offset,"Start Date: ");
- return fDate (tvb, tree, offset, "End Date: ");
+ offset = fDate (tvb,pinfo,tree,offset,"Start Date: ");
+ return fDate (tvb, pinfo, tree, offset, "End Date: ");
}
static guint
@@ -6840,7 +6881,7 @@ fVendorIdentifier (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint of
proto_tree *subtree;
const gchar *label = "Vendor ID";
- tag_len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ tag_len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (fUnsigned32 (tvb, offset + tag_len, lvt, &val))
ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len,
"%s: %s (%u)", label,
@@ -6849,7 +6890,7 @@ fVendorIdentifier (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint of
ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len,
"%s - %u octets (Unsigned)", label, lvt);
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
- fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
if ((lvt < 1) || (lvt > 2)) { /* vendorIDs >= 1 and <= 2 are supported */
proto_item *expert_item;
@@ -6876,7 +6917,7 @@ fRestartReason (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offse
proto_tree *subtree;
const gchar *label = "Restart Reason";
- tag_len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ tag_len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (fUnsigned32 (tvb, offset + tag_len, lvt, &val))
ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len,
"%s: %s (%u)", label,
@@ -6885,7 +6926,7 @@ fRestartReason (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offse
ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len,
"%s - %u octets (Unsigned)", label, lvt);
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
- fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
if (lvt != 1) {
proto_item *expert_item;
@@ -6916,19 +6957,19 @@ fConfirmedTextMessageRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
case 1: /* messageClass */
switch (fTagNo(tvb, offset)) {
case 0: /* numeric */
- offset = fUnsignedTag (tvb, tree, offset, "message Class: ");
+ offset = fUnsignedTag (tvb, pinfo, tree, offset, "message Class: ");
break;
case 1: /* character */
- offset = fCharacterString (tvb, tree, offset, "message Class: ");
+ offset = fCharacterString (tvb, pinfo, tree, offset, "message Class: ");
break;
}
break;
case 2: /* messagePriority */
- offset = fEnumeratedTag (tvb, tree, offset, "message Priority: ",
+ offset = fEnumeratedTag (tvb, pinfo, tree, offset, "message Priority: ",
BACnetMessagePriority);
break;
case 3: /* message */
- offset = fCharacterString (tvb, tree, offset, "message: ");
+ offset = fCharacterString (tvb, pinfo, tree, offset, "message: ");
break;
default:
return offset;
@@ -6957,7 +6998,7 @@ fConfirmedPrivateTransferRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
guint service_number = 0;
lastoffset = offset;
- len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
fUnsigned32(tvb, offset+len, lvt, &vendor_identifier);
if (col_get_writable(pinfo->cinfo))
col_append_fstr(pinfo->cinfo, COL_INFO, "V=%u ", vendor_identifier);
@@ -6976,7 +7017,7 @@ fConfirmedPrivateTransferRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
/* exit loop if nothing happens inside */
while (tvb_reported_length_remaining(tvb, offset) > 0) {
lastoffset = offset;
- len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info)) {
if (tag_no == 2) { /* Make sure it's the expected tag */
offset += len;
@@ -6993,7 +7034,7 @@ fConfirmedPrivateTransferRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
fUnsigned32(tvb, offset+len, lvt, &service_number);
if (col_get_writable(pinfo->cinfo))
col_append_fstr(pinfo->cinfo, COL_INFO, "SN=%u ", service_number);
- offset = fUnsignedTag (tvb, subtree, offset, "service Number: ");
+ offset = fUnsignedTag (tvb, pinfo, subtree, offset, "service Number: ");
break;
case 2: /*serviceParameters */
if (tag_is_opening(tag_info)) {
@@ -7042,17 +7083,17 @@ fLifeSafetyOperationRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
switch (tag_no) {
case 0: /* subscriberProcessId */
- offset = fUnsignedTag (tvb, subtree, offset, "requesting Process Id: ");
+ offset = fUnsignedTag (tvb, pinfo, subtree, offset, "requesting Process Id: ");
break;
case 1: /* requestingSource */
- offset = fCharacterString (tvb, tree, offset, "requesting Source: ");
+ offset = fCharacterString (tvb, pinfo, tree, offset, "requesting Source: ");
break;
case 2: /* request */
- offset = fEnumeratedTagSplit (tvb, tree, offset,
+ offset = fEnumeratedTagSplit (tvb, pinfo, tree, offset,
"request: ", BACnetLifeSafetyOperation, 64);
break;
case 3: /* objectId */
@@ -7119,26 +7160,26 @@ fBACnetPropertyStates(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, g
guint32 lvt;
const gchar* label = NULL;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
label = ep_strdup_printf( "%s: ", val_to_str_const( tag_no, VALS(BACnetPropertyStates), "unknown-"+tag_no ));
switch (tag_no) {
case 0:
- offset = fBooleanTag (tvb, tree, offset, label);
+ offset = fBooleanTag (tvb, pinfo, tree, offset, label);
break;
case 11:
- offset = fUnsignedTag(tvb, tree, offset, label);
+ offset = fUnsignedTag(tvb, pinfo, tree, offset, label);
break;
default:
if ( (tag_no > BACnetPropertyStatesEnums_Size) ||
VALS(BACnetPropertyStatesEnums[tag_no].valstr) == NULL)
{
- offset = fEnumeratedTag(tvb, tree, offset, "Unknown State: ", NULL);
+ offset = fEnumeratedTag(tvb, pinfo, tree, offset, "Unknown State: ", NULL);
/* don't use Abstract type here because it is context tagged and therefore we don't know app type */
}
else
{
- offset = fEnumeratedTagSplit(tvb, tree, offset, label,
+ offset = fEnumeratedTagSplit(tvb, pinfo, tree, offset, label,
VALS(BACnetPropertyStatesEnums[tag_no].valstr), 64);
}
break;
@@ -7166,7 +7207,7 @@ fDeviceObjectPropertyValue (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
while (tvb_reported_length_remaining(tvb, offset) > 0) {
lastoffset = offset;
/* check the tag. A closing tag means we are done */
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info)) {
return offset;
}
@@ -7181,13 +7222,13 @@ fDeviceObjectPropertyValue (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
offset = fPropertyIdentifier (tvb, pinfo, tree, offset);
break;
case 3: /* arrayIndex - OPTIONAL */
- offset = fUnsignedTag (tvb, tree, offset,
+ offset = fUnsignedTag (tvb, pinfo, tree, offset,
"arrayIndex: ");
break;
case 4: /* value */
- offset += fTagHeaderTree(tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
offset = fAbstractSyntaxNType (tvb, pinfo, tree, offset);
- offset += fTagHeaderTree(tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
break;
default:
return offset;
@@ -7233,7 +7274,7 @@ fDeviceObjectPropertyReference (tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
while (tvb_reported_length_remaining(tvb, offset) > 0) {
lastoffset = offset;
/* check the tag. A closing tag means we are done */
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info)) {
return offset;
}
@@ -7245,7 +7286,7 @@ fDeviceObjectPropertyReference (tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
offset = fPropertyIdentifier (tvb, pinfo, tree, offset);
break;
case 2: /* arrayIndex - OPTIONAL */
- offset = fUnsignedTag (tvb, tree, offset,
+ offset = fUnsignedTag (tvb, pinfo, tree, offset,
"arrayIndex: ");
break;
case 3: /* deviceIdentifier - OPTIONAL */
@@ -7268,12 +7309,12 @@ fNotificationParameters (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu
proto_tree *subtree = tree;
proto_item *tt;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
tt = proto_tree_add_text(subtree, tvb, offset, 0, "notification parameters (%d) %s",
tag_no, val_to_str(tag_no, BACnetEventType, "invalid type"));
subtree = proto_item_add_subtree(tt, ett_bacapp_value);
/* Opening tag for parameter choice */
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
switch (tag_no) {
case 0: /* change-of-bitstring */
@@ -7281,11 +7322,11 @@ fNotificationParameters (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu
lastoffset = offset;
switch (fTagNo(tvb, offset)) {
case 0:
- offset = fBitStringTag (tvb, subtree, offset,
+ offset = fBitStringTag (tvb, pinfo, subtree, offset,
"referenced-bitstring: ");
break;
case 1:
- offset = fBitStringTagVS (tvb, subtree, offset,
+ offset = fBitStringTagVS (tvb, pinfo, subtree, offset,
"status-flags: ", BACnetStatusFlags);
lastoffset = offset;
break;
@@ -7300,12 +7341,12 @@ fNotificationParameters (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu
lastoffset = offset;
switch (fTagNo(tvb, offset)) {
case 0:
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
offset = fBACnetPropertyStates(tvb, pinfo, subtree, offset);
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
break;
case 1:
- offset = fBitStringTagVS (tvb, subtree, offset,
+ offset = fBitStringTagVS (tvb, pinfo, subtree, offset,
"status-flags: ", BACnetStatusFlags);
lastoffset = offset;
break;
@@ -7320,23 +7361,23 @@ fNotificationParameters (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu
lastoffset = offset;
switch (fTagNo(tvb, offset)) {
case 0:
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
switch (fTagNo(tvb, offset)) {
case 0:
- offset = fBitStringTag (tvb, subtree, offset,
+ offset = fBitStringTag (tvb, pinfo, subtree, offset,
"changed-bits: ");
break;
case 1:
- offset = fRealTag (tvb, subtree, offset,
+ offset = fRealTag (tvb, pinfo, subtree, offset,
"changed-value: ");
break;
default:
break;
}
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
break;
case 1:
- offset = fBitStringTagVS (tvb, subtree, offset,
+ offset = fBitStringTagVS (tvb, pinfo, subtree, offset,
"status-flags: ", BACnetStatusFlags);
lastoffset = offset;
break;
@@ -7354,19 +7395,19 @@ fNotificationParameters (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu
/* from BACnet Table 13-3,
Standard Object Property Values Returned in Notifications */
propertyIdentifier = 85; /* PRESENT_VALUE */
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
offset = fAbstractSyntaxNType (tvb, pinfo, subtree, offset);
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
break;
case 1:
- offset = fBitStringTagVS (tvb, subtree, offset,
+ offset = fBitStringTagVS (tvb, pinfo, subtree, offset,
"status-flags: ", BACnetStatusFlags);
break;
case 2: /* "feedback-value: " */
propertyIdentifier = 40; /* FEEDBACK_VALUE */
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
offset = fAbstractSyntaxNType (tvb, pinfo, subtree, offset);
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
lastoffset = offset;
break;
default:
@@ -7380,17 +7421,17 @@ fNotificationParameters (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu
lastoffset = offset;
switch (fTagNo(tvb, offset)) {
case 0:
- offset = fRealTag (tvb, subtree, offset, "reference-value: ");
+ offset = fRealTag (tvb, pinfo, subtree, offset, "reference-value: ");
break;
case 1:
- offset = fBitStringTagVS (tvb, subtree, offset,
+ offset = fBitStringTagVS (tvb, pinfo, subtree, offset,
"status-flags: ", BACnetStatusFlags);
break;
case 2:
- offset = fRealTag (tvb, subtree, offset, "setpoint-value: ");
+ offset = fRealTag (tvb, pinfo, subtree, offset, "setpoint-value: ");
break;
case 3:
- offset = fRealTag (tvb, subtree, offset, "error-limit: ");
+ offset = fRealTag (tvb, pinfo, subtree, offset, "error-limit: ");
lastoffset = offset;
break;
default:
@@ -7404,17 +7445,17 @@ fNotificationParameters (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu
lastoffset = offset;
switch (fTagNo(tvb, offset)) {
case 0:
- offset = fRealTag (tvb, subtree, offset, "exceeding-value: ");
+ offset = fRealTag (tvb, pinfo, subtree, offset, "exceeding-value: ");
break;
case 1:
- offset = fBitStringTagVS (tvb, subtree, offset,
+ offset = fBitStringTagVS (tvb, pinfo, subtree, offset,
"status-flags: ", BACnetStatusFlags);
break;
case 2:
- offset = fRealTag (tvb, subtree, offset, "deadband: ");
+ offset = fRealTag (tvb, pinfo, subtree, offset, "deadband: ");
break;
case 3:
- offset = fRealTag (tvb, subtree, offset, "exceeded-limit: ");
+ offset = fRealTag (tvb, pinfo, subtree, offset, "exceeded-limit: ");
lastoffset = offset;
break;
default:
@@ -7441,14 +7482,14 @@ fNotificationParameters (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu
offset = fObjectIdentifier (tvb, pinfo, subtree, offset); /* buffer-object */
break;
case 2:
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
- offset = fDateTime (tvb, subtree, offset, "previous-notification: ");
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset = fDateTime (tvb, pinfo, subtree, offset, "previous-notification: ");
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
break;
case 3:
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
- offset = fDateTime (tvb, subtree, offset, "current-notification: ");
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset = fDateTime (tvb, pinfo, subtree, offset, "current-notification: ");
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
lastoffset = offset;
break;
default:
@@ -7462,19 +7503,19 @@ fNotificationParameters (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu
lastoffset = offset;
switch (fTagNo(tvb, offset)) {
case 0:
- offset = fEnumeratedTagSplit (tvb, subtree, offset,
+ offset = fEnumeratedTagSplit (tvb, pinfo, subtree, offset,
"new-state: ", BACnetLifeSafetyState, 256);
break;
case 1:
- offset = fEnumeratedTagSplit (tvb, subtree, offset,
+ offset = fEnumeratedTagSplit (tvb, pinfo, subtree, offset,
"new-mode: ", BACnetLifeSafetyMode, 256);
break;
case 2:
- offset = fBitStringTagVS (tvb, subtree, offset,
+ offset = fBitStringTagVS (tvb, pinfo, subtree, offset,
"status-flags: ", BACnetStatusFlags);
break;
case 3:
- offset = fEnumeratedTagSplit (tvb, subtree, offset,
+ offset = fEnumeratedTagSplit (tvb, pinfo, subtree, offset,
"operation-expected: ", BACnetLifeSafetyOperation, 64);
lastoffset = offset;
break;
@@ -7492,14 +7533,14 @@ fNotificationParameters (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu
offset = fVendorIdentifier (tvb, pinfo, subtree, offset);
break;
case 1:
- offset = fUnsignedTag (tvb, subtree, offset,
+ offset = fUnsignedTag (tvb, pinfo, subtree, offset,
"extended-event-type: ");
break;
case 2: /* parameters */
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
offset = fApplicationTypes(tvb, pinfo, subtree, offset, "parameters: ");
offset = fDeviceObjectPropertyValue(tvb, pinfo, subtree, offset);
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
lastoffset = offset;
break;
default:
@@ -7513,16 +7554,16 @@ fNotificationParameters (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu
lastoffset = offset;
switch (fTagNo(tvb, offset)) {
case 0: /* buffer-property */
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
offset = fDeviceObjectPropertyReference (tvb, pinfo, subtree, offset);
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
break;
case 1:
- offset = fUnsignedTag (tvb, subtree, offset,
+ offset = fUnsignedTag (tvb, pinfo, subtree, offset,
"previous-notification: ");
break;
case 2:
- offset = fUnsignedTag (tvb, subtree, offset,
+ offset = fUnsignedTag (tvb, pinfo, subtree, offset,
"current-notification: ");
lastoffset = offset;
break;
@@ -7537,15 +7578,15 @@ fNotificationParameters (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu
lastoffset = offset;
switch (fTagNo(tvb, offset)) {
case 0:
- offset = fUnsignedTag (tvb, subtree, offset,
+ offset = fUnsignedTag (tvb, pinfo, subtree, offset,
"exceeding-value: ");
break;
case 1:
- offset = fBitStringTagVS (tvb, subtree, offset,
+ offset = fBitStringTagVS (tvb, pinfo, subtree, offset,
"status-flags: ", BACnetStatusFlags);
break;
case 2:
- offset = fUnsignedTag (tvb, subtree, offset,
+ offset = fUnsignedTag (tvb, pinfo, subtree, offset,
"exceeded-limit: ");
lastoffset = offset;
break;
@@ -7562,7 +7603,7 @@ fNotificationParameters (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu
}
/* Closing tag for parameter choice */
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
return offset;
}
@@ -7576,40 +7617,40 @@ fEventParameter (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offs
proto_tree *subtree = tree;
proto_item *tt;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
tt = proto_tree_add_text(subtree, tvb, offset, 0, "event parameters (%d) %s",
tag_no, val_to_str(tag_no, BACnetEventType, "invalid type"));
subtree = proto_item_add_subtree(tt, ett_bacapp_value);
/* Opening tag for parameter choice */
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
switch (tag_no) {
case 0: /* change-of-bitstring */
while ((tvb_reported_length_remaining(tvb, offset) > 0)&&(offset>lastoffset)) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info)) {
break;
}
switch (tag_no) {
case 0:
- offset = fTimeSpan (tvb, subtree, offset, "Time Delay");
+ offset = fTimeSpan (tvb, pinfo, subtree, offset, "Time Delay");
break;
case 1:
- offset = fBitStringTag (tvb, subtree, offset, "bitmask: ");
+ offset = fBitStringTag (tvb, pinfo, subtree, offset, "bitmask: ");
break;
case 2: /* SEQUENCE OF BIT STRING */
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
while ((tvb_reported_length_remaining(tvb, offset) > 0)&&(offset>lastoffset)) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info)) {
break;
}
- offset = fBitStringTag(tvb, subtree, offset,
+ offset = fBitStringTag(tvb, pinfo, subtree, offset,
"bitstring value: ");
}
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
break;
default:
break;
@@ -7619,25 +7660,25 @@ fEventParameter (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offs
case 1: /* change-of-state */
while ((tvb_reported_length_remaining(tvb, offset) > 0)&&(offset>lastoffset)) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info)) {
break;
}
switch (tag_no) {
case 0:
- offset = fTimeSpan (tvb, subtree, offset, "Time Delay");
+ offset = fTimeSpan (tvb, pinfo, subtree, offset, "Time Delay");
break;
case 1: /* SEQUENCE OF BACnetPropertyStates */
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
while ((tvb_reported_length_remaining(tvb, offset) > 0)&&(offset>lastoffset)) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info)) {
break;
}
offset = fBACnetPropertyStates(tvb, pinfo, subtree, offset);
}
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
break;
default:
break;
@@ -7649,22 +7690,22 @@ fEventParameter (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offs
lastoffset = offset;
switch (fTagNo(tvb, offset)) {
case 0:
- offset = fTimeSpan (tvb, subtree, offset, "Time Delay");
+ offset = fTimeSpan (tvb, pinfo, subtree, offset, "Time Delay");
break;
case 1: /* don't loop it, it's a CHOICE */
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
switch (fTagNo(tvb, offset)) {
case 0:
- offset = fBitStringTag (tvb, subtree, offset, "bitmask: ");
+ offset = fBitStringTag (tvb, pinfo, subtree, offset, "bitmask: ");
break;
case 1:
- offset = fRealTag (tvb, subtree, offset,
+ offset = fRealTag (tvb, pinfo, subtree, offset,
"referenced Property Increment: ");
break;
default:
break;
}
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
break;
default:
break;
@@ -7677,12 +7718,12 @@ fEventParameter (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offs
tag_no = fTagNo(tvb, offset);
switch (tag_no) {
case 0:
- offset = fTimeSpan (tvb, subtree, offset, "Time Delay");
+ offset = fTimeSpan (tvb, pinfo, subtree, offset, "Time Delay");
break;
case 1:
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
offset = fDeviceObjectPropertyReference (tvb,pinfo,subtree,offset);
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
break;
default:
break;
@@ -7692,27 +7733,27 @@ fEventParameter (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offs
case 4: /* floating-limit */
while ((tvb_reported_length_remaining(tvb, offset) > 0)&&(offset>lastoffset)) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info)) {
break;
}
switch (tag_no) {
case 0:
- offset = fTimeSpan (tvb, subtree, offset, "Time Delay");
+ offset = fTimeSpan (tvb, pinfo, subtree, offset, "Time Delay");
break;
case 1:
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
offset = fDeviceObjectPropertyReference (tvb,pinfo,subtree,offset);
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
break;
case 2:
- offset = fRealTag (tvb, subtree, offset, "low diff limit: ");
+ offset = fRealTag (tvb, pinfo, subtree, offset, "low diff limit: ");
break;
case 3:
- offset = fRealTag (tvb, subtree, offset, "high diff limit: ");
+ offset = fRealTag (tvb, pinfo, subtree, offset, "high diff limit: ");
break;
case 4:
- offset = fRealTag (tvb, subtree, offset, "deadband: ");
+ offset = fRealTag (tvb, pinfo, subtree, offset, "deadband: ");
break;
default:
break;
@@ -7724,16 +7765,16 @@ fEventParameter (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offs
lastoffset = offset;
switch (fTagNo(tvb, offset)) {
case 0:
- offset = fTimeSpan (tvb, subtree, offset, "Time Delay");
+ offset = fTimeSpan (tvb, pinfo, subtree, offset, "Time Delay");
break;
case 1:
- offset = fRealTag (tvb, subtree, offset, "low limit: ");
+ offset = fRealTag (tvb, pinfo, subtree, offset, "low limit: ");
break;
case 2:
- offset = fRealTag (tvb, subtree, offset, "high limit: ");
+ offset = fRealTag (tvb, pinfo, subtree, offset, "high limit: ");
break;
case 3:
- offset = fRealTag (tvb, subtree, offset, "deadband: ");
+ offset = fRealTag (tvb, pinfo, subtree, offset, "deadband: ");
break;
default:
break;
@@ -7753,10 +7794,10 @@ fEventParameter (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offs
lastoffset = offset;
switch (fTagNo(tvb, offset)) {
case 0:
- offset = fUnsignedTag (tvb,tree,offset,"notification threshold");
+ offset = fUnsignedTag (tvb,pinfo,tree,offset,"notification threshold");
break;
case 1:
- offset = fUnsignedTag (tvb,tree,offset,
+ offset = fUnsignedTag (tvb,pinfo,tree,offset,
"previous notification count: ");
break;
default:
@@ -7770,38 +7811,38 @@ fEventParameter (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offs
lastoffset = offset;
switch (fTagNo(tvb, offset)) {
case 0:
- offset = fTimeSpan (tvb, subtree, offset, "Time Delay");
+ offset = fTimeSpan (tvb, pinfo, subtree, offset, "Time Delay");
break;
case 1:
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
while ((tvb_reported_length_remaining(tvb, offset) > 0)&&(offset>lastoffset)) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info)) {
break;
}
- offset = fEnumeratedTagSplit (tvb, subtree, offset,
+ offset = fEnumeratedTagSplit (tvb, pinfo, subtree, offset,
"life safety alarm value: ", BACnetLifeSafetyState, 256);
}
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
break;
case 2:
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
while ((tvb_reported_length_remaining(tvb, offset) > 0)&&(offset>lastoffset)) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info)) {
break;
}
- offset = fEnumeratedTagSplit (tvb, subtree, offset,
+ offset = fEnumeratedTagSplit (tvb, pinfo, subtree, offset,
"alarm value: ", BACnetLifeSafetyState, 256);
}
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
break;
case 3:
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
offset = fDeviceObjectPropertyReference (tvb, pinfo, subtree, offset);
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
break;
default:
break;
@@ -7816,14 +7857,14 @@ fEventParameter (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offs
offset = fVendorIdentifier (tvb, pinfo, tree, offset);
break;
case 1:
- offset = fUnsignedTag (tvb, tree, offset,
+ offset = fUnsignedTag (tvb, pinfo, tree, offset,
"extended-event-type: ");
break;
case 2: /* parameters */
- offset += fTagHeaderTree(tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
offset = fApplicationTypes(tvb, pinfo, tree, offset, "parameters: ");
offset = fDeviceObjectPropertyValue(tvb, pinfo, tree, offset);
- offset += fTagHeaderTree(tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
lastoffset = offset;
break;
default:
@@ -7837,11 +7878,11 @@ fEventParameter (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offs
lastoffset = offset;
switch (fTagNo(tvb, offset)) {
case 0:
- offset = fUnsignedTag (tvb, subtree, offset,
+ offset = fUnsignedTag (tvb, pinfo, subtree, offset,
"notification-threshold: ");
break;
case 1:
- offset = fUnsignedTag (tvb, subtree, offset,
+ offset = fUnsignedTag (tvb, pinfo, subtree, offset,
"previous-notification-count: ");
break;
default:
@@ -7854,14 +7895,14 @@ fEventParameter (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offs
lastoffset = offset;
switch (fTagNo(tvb, offset)) {
case 0:
- offset = fTimeSpan (tvb, tree, offset, "Time Delay");
+ offset = fTimeSpan (tvb, pinfo, tree, offset, "Time Delay");
break;
case 1:
- offset = fUnsignedTag (tvb, tree, offset,
+ offset = fUnsignedTag (tvb, pinfo, tree, offset,
"low-limit: ");
break;
case 2:
- offset = fUnsignedTag (tvb, tree, offset,
+ offset = fUnsignedTag (tvb, pinfo, tree, offset,
"high-limit: ");
break;
default:
@@ -7875,7 +7916,7 @@ fEventParameter (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offs
}
/* Closing tag for parameter choice */
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
return offset;
}
@@ -7892,31 +7933,31 @@ fEventLogRecord(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offse
lastoffset = offset;
switch (fTagNo(tvb, offset)) {
case 0: /* timestamp */
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
- offset = fDate (tvb,tree,offset,"Date: ");
- offset = fTime (tvb,tree,offset,"Time: ");
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
+ offset = fDate (tvb,pinfo,tree,offset,"Date: ");
+ offset = fTime (tvb,pinfo,tree,offset,"Time: ");
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
break;
case 1: /* logDatum: don't loop, it's a CHOICE */
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
switch (fTagNo(tvb, offset)) {
case 0: /* logStatus */ /* Changed this to BitString per BACnet Spec. */
- offset = fBitStringTagVS(tvb, tree, offset, "log status:", BACnetLogStatus);
+ offset = fBitStringTagVS(tvb, pinfo, tree, offset, "log status:", BACnetLogStatus);
break;
case 1: /* todo: move this to new method fConfirmedEventNotificationRequestTag... */
tt = proto_tree_add_text(tree, tvb, offset, 1, "notification: ");
subtree = proto_item_add_subtree(tt, ett_bacapp_value);
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
offset = fConfirmedEventNotificationRequest(tvb, pinfo, subtree, offset);
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
break;
case 2:
- offset = fRealTag (tvb, tree, offset, "time-change: ");
+ offset = fRealTag (tvb, pinfo, tree, offset, "time-change: ");
break;
default:
return offset;
}
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
break;
default:
return offset;
@@ -7937,59 +7978,59 @@ fLogRecord (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
lastoffset = offset;
switch (fTagNo(tvb, offset)) {
case 0: /* timestamp */
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
- offset = fDate (tvb,tree,offset,"Date: ");
- offset = fTime (tvb,tree,offset,"Time: ");
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
+ offset = fDate (tvb,pinfo,tree,offset,"Date: ");
+ offset = fTime (tvb,pinfo,tree,offset,"Time: ");
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
break;
case 1: /* logDatum: don't loop, it's a CHOICE */
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
switch (fTagNo(tvb, offset)) {
case 0: /* logStatus */ /* Changed this to BitString per BACnet Spec. */
- offset = fBitStringTagVS(tvb, tree, offset, "log status:", BACnetLogStatus);
+ offset = fBitStringTagVS(tvb, pinfo, tree, offset, "log status:", BACnetLogStatus);
break;
case 1:
- offset = fBooleanTag (tvb, tree, offset, "boolean-value: ");
+ offset = fBooleanTag (tvb, pinfo, tree, offset, "boolean-value: ");
break;
case 2:
- offset = fRealTag (tvb, tree, offset, "real value: ");
+ offset = fRealTag (tvb, pinfo, tree, offset, "real value: ");
break;
case 3:
- offset = fUnsignedTag (tvb, tree, offset, "enum value: ");
+ offset = fUnsignedTag (tvb, pinfo, tree, offset, "enum value: ");
break;
case 4:
- offset = fUnsignedTag (tvb, tree, offset, "unsigned value: ");
+ offset = fUnsignedTag (tvb, pinfo, tree, offset, "unsigned value: ");
break;
case 5:
- offset = fSignedTag (tvb, tree, offset, "signed value: ");
+ offset = fSignedTag (tvb, pinfo, tree, offset, "signed value: ");
break;
case 6:
- offset = fBitStringTag (tvb, tree, offset, "bitstring value: ");
+ offset = fBitStringTag (tvb, pinfo, tree, offset, "bitstring value: ");
break;
case 7:
- offset = fNullTag(tvb, tree, offset, "null value: ");
+ offset = fNullTag(tvb, pinfo, tree, offset, "null value: ");
break;
case 8:
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
offset = fError (tvb, pinfo, tree, offset);
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
break;
case 9:
- offset = fRealTag (tvb, tree, offset, "time change: ");
+ offset = fRealTag (tvb, pinfo, tree, offset, "time change: ");
break;
case 10: /* any Value */
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
offset = fAbstractSyntaxNType (tvb, pinfo, tree, offset);
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
break;
default:
return offset;
}
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
break;
case 2:
/* Changed this to BitString per BACnet Spec. */
- offset = fBitStringTagVS(tvb, tree, offset, "Status Flags:", BACnetStatusFlags);
+ offset = fBitStringTagVS(tvb, pinfo, tree, offset, "Status Flags:", BACnetStatusFlags);
break;
default:
return offset;
@@ -8010,71 +8051,71 @@ fLogMultipleRecord (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint o
lastoffset = offset;
switch (fTagNo(tvb, offset)) {
case 0: /* timestamp */
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
- offset = fDate (tvb,tree,offset,"Date: ");
- offset = fTime (tvb,tree,offset,"Time: ");
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
+ offset = fDate (tvb,pinfo,tree,offset,"Date: ");
+ offset = fTime (tvb,pinfo,tree,offset,"Time: ");
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
break;
case 1: /* logData: don't loop, it's a CHOICE */
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
switch (fTagNo(tvb, offset)) {
case 0: /* logStatus */ /* Changed this to BitString per BACnet Spec. */
- offset = fBitStringTagVS(tvb, tree, offset, "log status:", BACnetLogStatus);
+ offset = fBitStringTagVS(tvb, pinfo, tree, offset, "log status:", BACnetLogStatus);
break;
case 1: /* log-data: SEQUENCE OF CHOICE */
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
while ((tvb_reported_length_remaining(tvb, offset) > 0) && (offset != lastoffset)) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info)) {
lastoffset = offset;
break;
}
switch (tag_no) {
case 0:
- offset = fBooleanTag (tvb, tree, offset, "boolean-value: ");
+ offset = fBooleanTag (tvb, pinfo, tree, offset, "boolean-value: ");
break;
case 1:
- offset = fRealTag (tvb, tree, offset, "real value: ");
+ offset = fRealTag (tvb, pinfo, tree, offset, "real value: ");
break;
case 2:
- offset = fUnsignedTag (tvb, tree, offset, "enum value: ");
+ offset = fUnsignedTag (tvb, pinfo, tree, offset, "enum value: ");
break;
case 3:
- offset = fUnsignedTag (tvb, tree, offset, "unsigned value: ");
+ offset = fUnsignedTag (tvb, pinfo, tree, offset, "unsigned value: ");
break;
case 4:
- offset = fSignedTag (tvb, tree, offset, "signed value: ");
+ offset = fSignedTag (tvb, pinfo, tree, offset, "signed value: ");
break;
case 5:
- offset = fBitStringTag (tvb, tree, offset, "bitstring value: ");
+ offset = fBitStringTag (tvb, pinfo, tree, offset, "bitstring value: ");
break;
case 6:
- offset = fNullTag(tvb, tree, offset, "null value: ");
+ offset = fNullTag(tvb, pinfo, tree, offset, "null value: ");
break;
case 7:
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
offset = fError (tvb, pinfo, tree, offset);
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
break;
case 8: /* any Value */
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
offset = fAbstractSyntaxNType (tvb, pinfo, tree, offset);
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
break;
default:
return offset;
}
}
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
break;
case 2:
- offset = fRealTag (tvb, tree, offset, "time-change: ");
+ offset = fRealTag (tvb, pinfo, tree, offset, "time-change: ");
break;
default:
return offset;
}
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
break;
default:
return offset;
@@ -8094,7 +8135,7 @@ fConfirmedEventNotificationRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tre
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info)) {
lastoffset = offset;
break;
@@ -8102,7 +8143,7 @@ fConfirmedEventNotificationRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tre
switch (tag_no) {
case 0: /* ProcessId */
- offset = fProcessId (tvb,tree,offset);
+ offset = fProcessId (tvb,pinfo,tree,offset);
break;
case 1: /* initiating ObjectId */
offset = fObjectIdentifier (tvb, pinfo, tree, offset);
@@ -8111,42 +8152,42 @@ fConfirmedEventNotificationRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tre
offset = fObjectIdentifier (tvb, pinfo, tree, offset);
break;
case 3: /* time stamp */
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
- offset = fTimeStamp (tvb, tree, offset, NULL);
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
+ offset = fTimeStamp (tvb, pinfo, tree, offset, NULL);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
break;
case 4: /* notificationClass */
- offset = fUnsignedTag (tvb, tree, offset, "Notification Class: ");
+ offset = fUnsignedTag (tvb, pinfo, tree, offset, "Notification Class: ");
break;
case 5: /* Priority */
- offset = fUnsignedTag (tvb, tree, offset, "Priority: ");
+ offset = fUnsignedTag (tvb, pinfo, tree, offset, "Priority: ");
break;
case 6: /* EventType */
- offset = fEnumeratedTagSplit (tvb, tree, offset,
+ offset = fEnumeratedTagSplit (tvb, pinfo, tree, offset,
"Event Type: ", BACnetEventType, 64);
break;
case 7: /* messageText */
- offset = fCharacterString (tvb, tree, offset, "message Text: ");
+ offset = fCharacterString (tvb, pinfo, tree, offset, "message Text: ");
break;
case 8: /* NotifyType */
- offset = fEnumeratedTag (tvb, tree, offset,
+ offset = fEnumeratedTag (tvb, pinfo, tree, offset,
"Notify Type: ", BACnetNotifyType);
break;
case 9: /* ackRequired */
- offset = fBooleanTag (tvb, tree, offset, "ack Required: ");
+ offset = fBooleanTag (tvb, pinfo, tree, offset, "ack Required: ");
break;
case 10: /* fromState */
- offset = fEnumeratedTagSplit (tvb, tree, offset,
+ offset = fEnumeratedTagSplit (tvb, pinfo, tree, offset,
"from State: ", BACnetEventState, 64);
break;
case 11: /* toState */
- offset = fEnumeratedTagSplit (tvb, tree, offset,
+ offset = fEnumeratedTagSplit (tvb, pinfo, tree, offset,
"to State: ", BACnetEventState, 64);
break;
case 12: /* NotificationParameters */
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
offset = fNotificationParameters (tvb, pinfo, tree, offset);
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
break;
default:
break;
@@ -8173,7 +8214,7 @@ fConfirmedCOVNotificationRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info)) {
offset += len;
subtree = tree;
@@ -8182,7 +8223,7 @@ fConfirmedCOVNotificationRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree
switch (tag_no) {
case 0: /* ProcessId */
- offset = fProcessId (tvb,tree,offset);
+ offset = fProcessId (tvb,pinfo,tree,offset);
break;
case 1: /* initiating DeviceId */
offset = fObjectIdentifier (tvb, pinfo, subtree, offset);
@@ -8191,13 +8232,13 @@ fConfirmedCOVNotificationRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree
offset = fObjectIdentifier (tvb, pinfo, subtree, offset);
break;
case 3: /* time remaining */
- offset = fTimeSpan (tvb, tree, offset, "Time remaining");
+ offset = fTimeSpan (tvb, pinfo, tree, offset, "Time remaining");
break;
case 4: /* List of Values */
if (tag_is_opening(tag_info)) {
tt = proto_tree_add_text(subtree, tvb, offset, 1, "list of Values");
subtree = proto_item_add_subtree(tt, ett_bacapp_value);
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
offset = fBACnetPropertyValue (tvb, pinfo, subtree, offset);
break;
}
@@ -8228,27 +8269,27 @@ fAcknowledgeAlarmRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
lastoffset = offset;
switch (fTagNo(tvb, offset)) {
case 0: /* acknowledgingProcessId */
- offset = fUnsignedTag (tvb, tree, offset, "acknowledging Process Id: ");
+ offset = fUnsignedTag (tvb, pinfo, tree, offset, "acknowledging Process Id: ");
break;
case 1: /* eventObjectId */
offset = fObjectIdentifier (tvb, pinfo, tree, offset);
break;
case 2: /* eventStateAcknowledged */
- offset = fEnumeratedTagSplit (tvb, tree, offset,
+ offset = fEnumeratedTagSplit (tvb, pinfo, tree, offset,
"event State Acknowledged: ", BACnetEventState, 64);
break;
case 3: /* timeStamp */
- offset += fTagHeaderTree(tvb, tree, offset, &tag_no, &tag_info, &lvt);
- offset = fTimeStamp(tvb, tree, offset, NULL);
- offset += fTagHeaderTree(tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
+ offset = fTimeStamp(tvb, pinfo, tree, offset, NULL);
+ offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
break;
case 4: /* acknowledgementSource */
- offset = fCharacterString (tvb, tree, offset, "acknowledgement Source: ");
+ offset = fCharacterString (tvb, pinfo, tree, offset, "acknowledgement Source: ");
break;
case 5: /* timeOfAcknowledgement */
- offset += fTagHeaderTree(tvb, tree, offset, &tag_no, &tag_info, &lvt);
- offset = fTimeStamp(tvb, tree, offset, "acknowledgement timestamp: ");
- offset += fTagHeaderTree(tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
+ offset = fTimeStamp(tvb, pinfo, tree, offset, "acknowledgement timestamp: ");
+ offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
break;
default:
return offset;
@@ -8286,30 +8327,30 @@ fGetEnrollmentSummaryRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
lastoffset = offset;
switch (fTagNo(tvb, offset)) {
case 0: /* acknowledgmentFilter */
- offset = fEnumeratedTag (tvb, tree, offset,
+ offset = fEnumeratedTag (tvb, pinfo, tree, offset,
"acknowledgment Filter: ", BACnetAcknowledgementFilter);
break;
case 1: /* eventObjectId - OPTIONAL */
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
offset = fRecipientProcess (tvb, pinfo, tree, offset);
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
break;
case 2: /* eventStateFilter */
- offset = fEnumeratedTag (tvb, tree, offset,
+ offset = fEnumeratedTag (tvb, pinfo, tree, offset,
"event State Filter: ", BACnetEventStateFilter);
break;
case 3: /* eventTypeFilter - OPTIONAL */
- offset = fEnumeratedTag (tvb, tree, offset,
+ offset = fEnumeratedTag (tvb, pinfo, tree, offset,
"event Type Filter: ", BACnetEventType);
break;
case 4: /* priorityFilter */
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
- offset = fUnsignedTag (tvb, tree, offset, "min Priority: ");
- offset = fUnsignedTag (tvb, tree, offset, "max Priority: ");
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
+ offset = fUnsignedTag (tvb, pinfo, tree, offset, "min Priority: ");
+ offset = fUnsignedTag (tvb, pinfo, tree, offset, "max Priority: ");
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
break;
case 5: /* notificationClassFilter - OPTIONAL */
- offset = fUnsignedTag (tvb, tree, offset, "notification Class Filter: ");
+ offset = fUnsignedTag (tvb, pinfo, tree, offset, "notification Class Filter: ");
break;
default:
return offset;
@@ -8361,7 +8402,7 @@ flistOfEventSummaries (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guin
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
/* we are finished here if we spot a closing tag */
if (tag_is_closing(tag_info)) {
break;
@@ -8371,11 +8412,11 @@ flistOfEventSummaries (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guin
offset = fObjectIdentifier (tvb, pinfo, tree, offset);
break;
case 1: /* eventState */
- offset = fEnumeratedTag (tvb, tree, offset,
+ offset = fEnumeratedTag (tvb, pinfo, tree, offset,
"event State: ", BACnetEventState);
break;
case 2: /* acknowledgedTransitions */
- offset = fBitStringTagVS (tvb, tree, offset,
+ offset = fBitStringTagVS (tvb, pinfo, tree, offset,
"acknowledged Transitions: ", BACnetEventTransitionBits);
break;
case 3: /* eventTimeStamps */
@@ -8383,18 +8424,18 @@ flistOfEventSummaries (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guin
if (ti) {
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
}
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
- offset = fTimeStamp (tvb, subtree, offset,"TO-OFFNORMAL timestamp: ");
- offset = fTimeStamp (tvb, subtree, offset,"TO-FAULT timestamp: ");
- offset = fTimeStamp (tvb, subtree, offset,"TO-NORMAL timestamp: ");
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset = fTimeStamp (tvb, pinfo, subtree, offset,"TO-OFFNORMAL timestamp: ");
+ offset = fTimeStamp (tvb, pinfo, subtree, offset,"TO-FAULT timestamp: ");
+ offset = fTimeStamp (tvb, pinfo, subtree, offset,"TO-NORMAL timestamp: ");
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
break;
case 4: /* notifyType */
- offset = fEnumeratedTag (tvb, tree, offset,
+ offset = fEnumeratedTag (tvb, pinfo, tree, offset,
"Notify Type: ", BACnetNotifyType);
break;
case 5: /* eventEnable */
- offset = fBitStringTagVS (tvb, tree, offset,
+ offset = fBitStringTagVS (tvb, pinfo, tree, offset,
"event Enable: ", BACnetEventTransitionBits);
break;
case 6: /* eventPriorities */
@@ -8402,11 +8443,11 @@ flistOfEventSummaries (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guin
if (ti) {
subtree = proto_item_add_subtree(ti, ett_bacapp_tag);
}
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
- offset = fUnsignedTag (tvb, subtree, offset, "TO-OFFNORMAL Priority: ");
- offset = fUnsignedTag (tvb, subtree, offset, "TO-FAULT Priority: ");
- offset = fUnsignedTag (tvb, subtree, offset, "TO-NORMAL Priority: ");
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset = fUnsignedTag (tvb, pinfo, subtree, offset, "TO-OFFNORMAL Priority: ");
+ offset = fUnsignedTag (tvb, pinfo, subtree, offset, "TO-FAULT Priority: ");
+ offset = fUnsignedTag (tvb, pinfo, subtree, offset, "TO-NORMAL Priority: ");
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
break;
default:
return offset;
@@ -8426,7 +8467,7 @@ fLOPR (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
col_set_writable(pinfo->cinfo, FALSE); /* don't set all infos into INFO column */
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
/* we are finished here if we spot a closing tag */
if (tag_is_closing(tag_info)) {
break;
@@ -8448,12 +8489,12 @@ fGetEventInformationACK (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu
lastoffset = offset;
switch (fTagNo(tvb, offset)) {
case 0: /* listOfEventSummaries */
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
offset = flistOfEventSummaries (tvb, pinfo, tree, offset);
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
break;
case 1: /* moreEvents */
- offset = fBooleanTag (tvb, tree, offset, "more Events: ");
+ offset = fBooleanTag (tvb, pinfo, tree, offset, "more Events: ");
break;
default:
return offset;
@@ -8476,7 +8517,7 @@ fAddListElementRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guin
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info)) {
offset += len;
subtree = tree;
@@ -8491,7 +8532,7 @@ fAddListElementRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guin
if (tag_is_opening(tag_info)) {
tt = proto_tree_add_text(subtree, tvb, offset, 1, "listOfElements");
subtree = proto_item_add_subtree(tt, ett_bacapp_value);
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
offset = fAbstractSyntaxNType (tvb, pinfo, subtree, offset);
break;
}
@@ -8512,7 +8553,7 @@ fDeleteObjectRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
}
static guint
-fDeviceCommunicationControlRequest(tvbuff_t *tvb, proto_tree *tree, guint offset)
+fDeviceCommunicationControlRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
{
guint lastoffset = 0;
@@ -8521,14 +8562,14 @@ fDeviceCommunicationControlRequest(tvbuff_t *tvb, proto_tree *tree, guint offset
switch (fTagNo(tvb, offset)) {
case 0: /* timeDuration */
- offset = fUnsignedTag (tvb,tree,offset,"time Duration: ");
+ offset = fUnsignedTag (tvb,pinfo,tree,offset,"time Duration: ");
break;
case 1: /* enable-disable */
- offset = fEnumeratedTag (tvb, tree, offset, "enable-disable: ",
+ offset = fEnumeratedTag (tvb, pinfo, tree, offset, "enable-disable: ",
BACnetEnableDisable);
break;
case 2: /* password - OPTIONAL */
- offset = fCharacterString (tvb, tree, offset, "Password: ");
+ offset = fCharacterString (tvb, pinfo, tree, offset, "Password: ");
break;
default:
return offset;
@@ -8539,7 +8580,7 @@ fDeviceCommunicationControlRequest(tvbuff_t *tvb, proto_tree *tree, guint offset
}
static guint
-fReinitializeDeviceRequest(tvbuff_t *tvb, proto_tree *tree, guint offset)
+fReinitializeDeviceRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
{
guint lastoffset = 0;
@@ -8548,12 +8589,12 @@ fReinitializeDeviceRequest(tvbuff_t *tvb, proto_tree *tree, guint offset)
switch (fTagNo(tvb, offset)) {
case 0: /* reinitializedStateOfDevice */
- offset = fEnumeratedTag (tvb, tree, offset,
+ offset = fEnumeratedTag (tvb, pinfo, tree, offset,
"reinitialized State Of Device: ",
BACnetReinitializedStateOfDevice);
break;
case 1: /* password - OPTIONAL */
- offset = fCharacterString (tvb, tree, offset, "Password: ");
+ offset = fCharacterString (tvb, pinfo, tree, offset, "Password: ");
break;
default:
return offset;
@@ -8595,11 +8636,11 @@ fVtDataRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offse
{
offset= fApplicationTypes (tvb, pinfo, tree,offset,"VT Session ID: ");
offset = fApplicationTypes (tvb, pinfo, tree, offset, "VT New Data: ");
- return fApplicationTypes (tvb, pinfo, tree,offset,"VT Data Flag: ");;
+ return fApplicationTypes (tvb, pinfo, tree,offset,"VT Data Flag: ");
}
static guint
-fVtDataAck (tvbuff_t *tvb, proto_tree *tree, guint offset)
+fVtDataAck (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
{
guint lastoffset = 0;
@@ -8608,10 +8649,10 @@ fVtDataAck (tvbuff_t *tvb, proto_tree *tree, guint offset)
switch (fTagNo(tvb,offset)) {
case 0: /* BOOLEAN */
- offset = fBooleanTag (tvb, tree, offset, "all New Data Accepted: ");
+ offset = fBooleanTag (tvb, pinfo, tree, offset, "all New Data Accepted: ");
break;
case 1: /* Unsigned OPTIONAL */
- offset = fUnsignedTag (tvb, tree, offset, "accepted Octet Count: ");
+ offset = fUnsignedTag (tvb, pinfo, tree, offset, "accepted Octet Count: ");
break;
default:
return offset;
@@ -8622,7 +8663,7 @@ fVtDataAck (tvbuff_t *tvb, proto_tree *tree, guint offset)
}
static guint
-fAuthenticateRequest (tvbuff_t *tvb, proto_tree *tree, guint offset)
+fAuthenticateRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
{
guint lastoffset = 0;
@@ -8631,19 +8672,19 @@ fAuthenticateRequest (tvbuff_t *tvb, proto_tree *tree, guint offset)
switch (fTagNo(tvb,offset)) {
case 0: /* Unsigned32 */
- offset = fUnsignedTag (tvb, tree, offset, "pseudo Random Number: ");
+ offset = fUnsignedTag (tvb, pinfo, tree, offset, "pseudo Random Number: ");
break;
case 1: /* expected Invoke ID Unsigned8 OPTIONAL */
proto_tree_add_item(tree, hf_bacapp_invoke_id, tvb, offset++, 1, ENC_BIG_ENDIAN);
break;
case 2: /* Chararacter String OPTIONAL */
- offset = fCharacterString (tvb, tree, offset, "operator Name: ");
+ offset = fCharacterString (tvb, pinfo, tree, offset, "operator Name: ");
break;
case 3: /* Chararacter String OPTIONAL */
- offset = fCharacterString (tvb, tree, offset, "operator Password: ");
+ offset = fCharacterString (tvb, pinfo, tree, offset, "operator Password: ");
break;
case 4: /* Boolean OPTIONAL */
- offset = fBooleanTag (tvb, tree, offset, "start Encyphered Session: ");
+ offset = fBooleanTag (tvb, pinfo, tree, offset, "start Encyphered Session: ");
break;
default:
return offset;
@@ -8663,9 +8704,9 @@ static guint
fRequestKeyRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
{
offset = fObjectIdentifier (tvb, pinfo, tree, offset); /* Requesting Device Identifier */
- offset = fAddress (tvb, tree, offset);
+ offset = fAddress (tvb, pinfo, tree, offset);
offset = fObjectIdentifier (tvb, pinfo, tree, offset); /* Remote Device Identifier */
- return fAddress (tvb, tree, offset);
+ return fAddress (tvb, pinfo, tree, offset);
}
static guint
@@ -8693,7 +8734,7 @@ fReadPropertyAck (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint off
propertyArrayIndex = -1;
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info)) {
offset += len;
subtree = tree;
@@ -8707,7 +8748,7 @@ fReadPropertyAck (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint off
offset = fPropertyIdentifier (tvb, pinfo, subtree, offset);
break;
case 2: /* propertyArrayIndex */
- offset = fPropertyArrayIndex (tvb, subtree, offset);
+ offset = fPropertyArrayIndex (tvb, pinfo, subtree, offset);
break;
case 3: /* propertyValue */
offset = fPropertyValue (tvb, pinfo, subtree, offset, tag_info);
@@ -8732,7 +8773,7 @@ fWritePropertyRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
propertyArrayIndex = -1;
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
/* quit loop if we spot a closing tag */
if (tag_is_closing(tag_info)) {
subtree = tree;
@@ -8747,13 +8788,13 @@ fWritePropertyRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
offset = fPropertyIdentifier (tvb, pinfo, subtree, offset);
break;
case 2: /* propertyArrayIndex */
- offset = fPropertyArrayIndex (tvb, subtree, offset);
+ offset = fPropertyArrayIndex (tvb, pinfo, subtree, offset);
break;
case 3: /* propertyValue */
offset = fPropertyValue (tvb, pinfo, subtree, offset, tag_info);
break;
case 4: /* Priority (only used for write) */
- offset = fUnsignedTag (tvb, subtree, offset, "Priority: ");
+ offset = fUnsignedTag (tvb, pinfo, subtree, offset, "Priority: ");
break;
default:
return offset;
@@ -8772,7 +8813,7 @@ fWriteAccessSpecification (tvbuff_t *tvb, packet_info *pinfo, proto_tree *subtre
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
/* maybe a listOfwriteAccessSpecifications if we spot a closing tag */
if (tag_is_closing(tag_info)) {
offset += len;
@@ -8785,7 +8826,7 @@ fWriteAccessSpecification (tvbuff_t *tvb, packet_info *pinfo, proto_tree *subtre
break;
case 1: /* listOfPropertyValues */
if (tag_is_opening(tag_info)) {
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
offset = fBACnetPropertyValue (tvb, pinfo, subtree, offset);
break;
}
@@ -8820,7 +8861,7 @@ fPropertyReference (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint o
propertyArrayIndex = -1;
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info)) { /* closing Tag, but not for me */
return offset;
} else if (tag_is_opening(tag_info)) { /* opening Tag, but not for me */
@@ -8831,7 +8872,7 @@ fPropertyReference (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint o
offset = fPropertyIdentifier (tvb, pinfo, tree, offset);
break;
case 1: /* propertyArrayIndex */
- offset = fPropertyArrayIndex (tvb, tree, offset);
+ offset = fPropertyArrayIndex (tvb, pinfo, tree, offset);
if (list != 0) break; /* Continue decoding if this may be a list */
default:
lastoffset = offset; /* Set loop end condition */
@@ -8885,9 +8926,9 @@ fObjectPropertyValue (tvbuff_t *tvb, proto_tree *tree, guint offset)
while ((tvb_reported_length_remaining(tvb, offset) > 0)&&(offset>lastoffset)) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info)) {
- offset += fTagHeaderTree (tvb, subtree, offset,
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset,
&tag_no, &tag_info, &lvt);
continue;
}
@@ -8899,13 +8940,13 @@ fObjectPropertyValue (tvbuff_t *tvb, proto_tree *tree, guint offset)
offset = fPropertyIdentifier (tvb, pinfo, subtree, offset);
break;
case 2: /* propertyArrayIndex */
- offset = fUnsignedTag (tvb, subtree, offset, "property Array Index: ");
+ offset = fUnsignedTag (tvb, pinfo, subtree, offset, "property Array Index: ");
break;
case 3: /* Value */
- offset = fPropertyValue (tvb, subtree, offset, tag_info);
+ offset = fPropertyValue (tvb, pinfo, subtree, offset, tag_info);
break;
case 4: /* Priority */
- offset = fUnsignedTag (tvb, subtree, offset, "Priority: ");
+ offset = fUnsignedTag (tvb, pinfo, subtree, offset, "Priority: ");
break;
default:
break;
@@ -8985,7 +9026,7 @@ fSpecialEvent (tvbuff_t *tvb, packet_info *pinfo, proto_tree *subtree, guint off
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
/* maybe a SEQUENCE of SpecialEvents if we spot a closing tag */
if (tag_is_closing(tag_info)) {
/* if we find 2 closing tags in succession we need to exit without incrementing the offset again */
@@ -9000,9 +9041,9 @@ fSpecialEvent (tvbuff_t *tvb, packet_info *pinfo, proto_tree *subtree, guint off
switch (tag_no) {
case 0: /* calendarEntry */
if (tag_is_opening(tag_info)) {
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
- offset = fCalendarEntry (tvb, subtree, offset);
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset = fCalendarEntry (tvb, pinfo, subtree, offset);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
}
break;
case 1: /* calendarReference */
@@ -9010,15 +9051,15 @@ fSpecialEvent (tvbuff_t *tvb, packet_info *pinfo, proto_tree *subtree, guint off
break;
case 2: /* list of BACnetTimeValue */
if (tag_is_opening(tag_info)) {
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
offset = fTimeValue (tvb, pinfo, subtree, offset);
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
break;
}
FAULT;
break;
case 3: /* eventPriority */
- offset = fUnsignedTag (tvb, subtree, offset, "event priority: ");
+ offset = fUnsignedTag (tvb, pinfo, subtree, offset, "event priority: ");
break;
default:
return offset;
@@ -9038,7 +9079,7 @@ fSelectionCriteria (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint o
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
/* maybe a listOfSelectionCriteria if we spot a closing tag */
if (tag_is_closing(tag_info)) {
offset += len;
@@ -9050,16 +9091,16 @@ fSelectionCriteria (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint o
offset = fPropertyIdentifier (tvb, pinfo, tree, offset);
break;
case 1: /* propertyArrayIndex */
- offset = fPropertyArrayIndex (tvb, tree, offset);
+ offset = fPropertyArrayIndex (tvb, pinfo, tree, offset);
break;
case 2: /* relationSpecifier */
- offset = fEnumeratedTag (tvb, tree, offset,
+ offset = fEnumeratedTag (tvb, pinfo, tree, offset,
"relation Specifier: ", BACnetRelationSpecifier);
break;
case 3: /* comparisonValue */
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
offset = fAbstractSyntaxNType (tvb, pinfo, tree, offset);
- offset += fTagHeaderTree (tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
break;
default:
return offset;
@@ -9078,7 +9119,7 @@ fObjectSelectionCriteria (tvbuff_t *tvb, packet_info *pinfo, proto_tree *subtree
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
/* quit loop if we spot a closing tag */
if (tag_is_closing(tag_info)) {
break;
@@ -9086,14 +9127,14 @@ fObjectSelectionCriteria (tvbuff_t *tvb, packet_info *pinfo, proto_tree *subtree
switch (tag_no) {
case 0: /* selectionLogic */
- offset = fEnumeratedTag (tvb, subtree, offset,
+ offset = fEnumeratedTag (tvb, pinfo, subtree, offset,
"selection Logic: ", BACnetSelectionLogic);
break;
case 1: /* listOfSelectionCriteria */
if (tag_is_opening(tag_info)) {
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
offset = fSelectionCriteria (tvb, pinfo, subtree, offset);
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
break;
}
FAULT;
@@ -9116,10 +9157,10 @@ fReadPropertyConditionalRequest(tvbuff_t *tvb, packet_info* pinfo, proto_tree *s
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_opening(tag_info) && tag_no < 2) {
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
switch (tag_no) {
case 0: /* objectSelectionCriteria */
offset = fObjectSelectionCriteria (tvb, pinfo, subtree, offset);
@@ -9130,7 +9171,7 @@ fReadPropertyConditionalRequest(tvbuff_t *tvb, packet_info* pinfo, proto_tree *s
default:
return offset;
}
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
}
if (offset == lastoffset) break; /* nothing happened, exit loop */
}
@@ -9148,7 +9189,7 @@ fReadAccessSpecification (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
switch (tag_no) {
case 0: /* objectIdentifier */
offset = fObjectIdentifier (tvb, pinfo, subtree, offset);
@@ -9157,10 +9198,10 @@ fReadAccessSpecification (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
if (tag_is_opening(tag_info)) {
tt = proto_tree_add_text(subtree, tvb, offset, 1, "listOfPropertyReferences");
subtree = proto_item_add_subtree(tt, ett_bacapp_value);
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
offset = fBACnetPropertyReference (tvb, pinfo, subtree, offset, 1);
} else if (tag_is_closing(tag_info)) {
- offset += fTagHeaderTree (tvb, subtree, offset,
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset,
&tag_no, &tag_info, &lvt);
subtree = tree;
} else {
@@ -9188,7 +9229,7 @@ fReadAccessResult (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint of
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
/* maybe a listOfReadAccessResults if we spot a closing tag here */
if (tag_is_closing(tag_info)) {
offset += len;
@@ -9204,7 +9245,7 @@ fReadAccessResult (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint of
if (tag_is_opening(tag_info)) {
tt = proto_tree_add_text(tree, tvb, offset, 1, "listOfResults");
subtree = proto_item_add_subtree(tt, ett_bacapp_value);
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
break;
}
FAULT;
@@ -9216,7 +9257,7 @@ fReadAccessResult (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint of
if (tag_is_opening(tag_info)) {
tt = proto_tree_add_text(subtree, tvb, offset, 1, "propertyAccessError");
subtree = proto_item_add_subtree(tt, ett_bacapp_value);
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
/* Error Code follows */
offset = fError(tvb, pinfo, subtree, offset);
break;
@@ -9249,15 +9290,15 @@ fCreateObjectRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *subtree, gui
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_no < 2) {
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
switch (tag_no) {
case 0: /* objectSpecifier */
switch (fTagNo(tvb, offset)) { /* choice of objectType or objectIdentifier */
case 0: /* objectType */
- offset = fEnumeratedTagSplit (tvb, subtree, offset, "Object Type: ", BACnetObjectType, 128);
+ offset = fEnumeratedTagSplit (tvb, pinfo, subtree, offset, "Object Type: ", BACnetObjectType, 128);
break;
case 1: /* objectIdentifier */
offset = fObjectIdentifier (tvb, pinfo, subtree, offset);
@@ -9276,7 +9317,7 @@ fCreateObjectRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *subtree, gui
default:
break;
}
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
}
if (offset == lastoffset) break; /* nothing happened, exit loop */
}
@@ -9301,11 +9342,11 @@ fReadRangeRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint of
if (tvb_reported_length_remaining(tvb, offset) > 0) {
/* optional range choice */
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_opening(tag_info)) {
tt = proto_tree_add_text(subtree, tvb, offset, 1, "%s", val_to_str(tag_no, BACnetReadRangeOptions, "unknown range option"));
subtree = proto_item_add_subtree(tt, ett_bacapp_value);
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
switch (tag_no) {
case 3: /* range byPosition */
case 6: /* range bySequenceNumber, 2004 spec */
@@ -9314,17 +9355,17 @@ fReadRangeRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint of
break;
case 4: /* range byTime - deprecated in 2004 */
case 7: /* 2004 spec */
- offset = fDateTime(tvb, subtree, offset, "reference Date/Time: ");
+ offset = fDateTime(tvb, pinfo, subtree, offset, "reference Date/Time: ");
offset = fApplicationTypes (tvb, pinfo, subtree, offset, "reference Count: ");
break;
case 5: /* range timeRange - deprecated in 2004 */
- offset = fDateTime(tvb, subtree, offset, "beginning Time: ");
- offset = fDateTime(tvb, subtree, offset, "ending Time: ");
+ offset = fDateTime(tvb, pinfo, subtree, offset, "beginning Time: ");
+ offset = fDateTime(tvb, pinfo, subtree, offset, "ending Time: ");
break;
default:
break;
}
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
}
}
return offset;
@@ -9344,24 +9385,24 @@ fReadRangeAck (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset
OPTIONAL propertyArrayIndex */
offset = fBACnetObjectPropertyReference(tvb, pinfo, subtree, offset);
/* resultFlags => BACnetResultFlags ::= BIT STRING */
- offset = fBitStringTagVS (tvb, tree, offset,
+ offset = fBitStringTagVS (tvb, pinfo, tree, offset,
"resultFlags: ",
BACnetResultFlags);
/* itemCount */
- offset = fUnsignedTag (tvb, subtree, offset, "item Count: ");
+ offset = fUnsignedTag (tvb, pinfo, subtree, offset, "item Count: ");
/* itemData */
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_opening(tag_info)) {
col_set_writable(pinfo->cinfo, FALSE); /* don't set all infos into INFO column */
tt = proto_tree_add_text(subtree, tvb, offset, 1, "itemData");
subtree = proto_item_add_subtree(tt, ett_bacapp_value);
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
offset = fAbstractSyntaxNType (tvb, pinfo, subtree, offset);
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
}
/* firstSequenceNumber - OPTIONAL */
if (tvb_reported_length_remaining(tvb, offset) > 0) {
- offset = fUnsignedTag (tvb, subtree, offset, "first Sequence Number: ");
+ offset = fUnsignedTag (tvb, pinfo, subtree, offset, "first Sequence Number: ");
}
return offset;
@@ -9376,12 +9417,12 @@ fAccessMethod(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
proto_item* tt;
proto_tree* subtree = NULL;
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_opening(tag_info)) {
tt = proto_tree_add_text(tree, tvb, offset, 1, "%s", val_to_str(tag_no, BACnetFileAccessOption, "invalid access method"));
subtree = proto_item_add_subtree(tt, ett_bacapp_value);
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
offset = fApplicationTypes (tvb, pinfo, subtree, offset, val_to_str(tag_no, BACnetFileStartOption, "invalid option"));
offset = fApplicationTypes (tvb, pinfo, subtree, offset, val_to_str(tag_no, BACnetFileWriteInfo, "unknown option"));
@@ -9395,9 +9436,9 @@ fAccessMethod(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
if ((bacapp_flags & BACAPP_MORE_SEGMENTS) == 0) {
/* More Flag is not set, so we can look for closing tag in this segment */
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_closing(tag_info)) {
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
}
}
}
@@ -9414,15 +9455,15 @@ fAtomicReadFileRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guin
offset = fObjectIdentifier (tvb, pinfo, tree, offset);
- fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
if (tag_is_opening(tag_info)) {
tt = proto_tree_add_text(subtree, tvb, offset, 1, "%s", val_to_str(tag_no, BACnetFileAccessOption, "unknown access method"));
subtree = proto_item_add_subtree(tt, ett_bacapp_value);
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
- offset = fSignedTag (tvb, subtree, offset, val_to_str(tag_no, BACnetFileStartOption, "unknown option"));
- offset = fUnsignedTag (tvb, subtree, offset, val_to_str(tag_no, BACnetFileRequestCount, "unknown option"));
- offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset = fSignedTag (tvb, pinfo, subtree, offset, val_to_str(tag_no, BACnetFileStartOption, "unknown option"));
+ offset = fUnsignedTag (tvb, pinfo, subtree, offset, val_to_str(tag_no, BACnetFileRequestCount, "unknown option"));
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
}
return offset;
}
@@ -9438,10 +9479,10 @@ fAtomicWriteFileRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gui
}
static guint
-fAtomicWriteFileAck (tvbuff_t *tvb, proto_tree *tree, guint offset)
+fAtomicWriteFileAck (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
{
guint tag_no = fTagNo(tvb, offset);
- return fSignedTag (tvb, tree, offset, val_to_str(tag_no, BACnetFileStartOption, "unknown option"));
+ return fSignedTag (tvb, pinfo, tree, offset, val_to_str(tag_no, BACnetFileStartOption, "unknown option"));
}
static guint
@@ -9525,7 +9566,7 @@ fConfirmedServiceRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
offset = fWritePropertyMultipleRequest(tvb, pinfo, tree, offset);
break;
case 17:
- offset = fDeviceCommunicationControlRequest(tvb, tree, offset);
+ offset = fDeviceCommunicationControlRequest(tvb, pinfo, tree, offset);
break;
case 18:
offset = fConfirmedPrivateTransferRequest(tvb, pinfo, tree, offset);
@@ -9534,7 +9575,7 @@ fConfirmedServiceRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
offset = fConfirmedTextMessageRequest(tvb, pinfo, tree, offset);
break;
case 20:
- offset = fReinitializeDeviceRequest(tvb, tree, offset);
+ offset = fReinitializeDeviceRequest(tvb, pinfo, tree, offset);
break;
case 21:
offset = fVtOpenRequest(tvb, pinfo, tree, offset);
@@ -9546,7 +9587,7 @@ fConfirmedServiceRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
offset = fVtDataRequest (tvb, pinfo, tree, offset);
break;
case 24:
- offset = fAuthenticateRequest (tvb, tree, offset);
+ offset = fAuthenticateRequest (tvb, pinfo, tree, offset);
break;
case 25:
offset = fRequestKeyRequest (tvb, pinfo, tree, offset);
@@ -9586,7 +9627,7 @@ fConfirmedServiceAck (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
offset = fAtomicReadFileAck (tvb, pinfo, tree, offset);
break;
case 7: /* atomicReadFileAck */
- offset = fAtomicWriteFileAck (tvb, tree, offset);
+ offset = fAtomicWriteFileAck (tvb, pinfo, tree, offset);
break;
case 10: /* createObject */
offset = fCreateObjectAck (tvb, pinfo, tree, offset);
@@ -9607,7 +9648,7 @@ fConfirmedServiceAck (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
offset = fVtOpenAck (tvb, pinfo, tree, offset);
break;
case 23:
- offset = fVtDataAck (tvb, tree, offset);
+ offset = fVtDataAck (tvb, pinfo, tree, offset);
break;
case 24:
offset = fAuthenticateAck (tvb, pinfo, tree, offset);
@@ -9668,24 +9709,22 @@ fWhoIsRequest (tvbuff_t *tvb, packet_info* pinfo, proto_tree *tree, guint offse
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- tag_len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ tag_len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
switch (tag_no) {
case 0:
/* DeviceInstanceRangeLowLimit Optional */
- fUnsigned32(tvb, offset+tag_len, lvt, &val);
- if (col_get_writable(pinfo->cinfo))
+ if (col_get_writable(pinfo->cinfo) && fUnsigned32(tvb, offset+tag_len, lvt, &val))
col_append_fstr(pinfo->cinfo, COL_INFO, "%d ", val);
- offset = fDevice_Instance (tvb, tree, offset,
+ offset = fDevice_Instance (tvb, pinfo, tree, offset,
hf_Device_Instance_Range_Low_Limit);
break;
case 1:
/* DeviceInstanceRangeHighLimit Optional but
required if DeviceInstanceRangeLowLimit is there */
- fUnsigned32(tvb, offset+tag_len, lvt, &val);
- if (col_get_writable(pinfo->cinfo))
+ if (col_get_writable(pinfo->cinfo) && fUnsigned32(tvb, offset+tag_len, lvt, &val))
col_append_fstr(pinfo->cinfo, COL_INFO, "%d ", val);
- offset = fDevice_Instance (tvb, tree, offset,
+ offset = fDevice_Instance (tvb, pinfo, tree, offset,
hf_Device_Instance_Range_High_Limit);
break;
default:
@@ -9722,7 +9761,7 @@ fUnconfirmedServiceRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
offset = fUnconfirmedTextMessageRequest(tvb, pinfo, tree, offset);
break;
case 6: /* timeSynchronization */
- offset = fTimeSynchronizationRequest (tvb, tree, offset);
+ offset = fTimeSynchronizationRequest (tvb, pinfo, tree, offset);
break;
case 7: /* who-Has */
offset = fWhoHas (tvb, pinfo, tree, offset);
@@ -9731,7 +9770,7 @@ fUnconfirmedServiceRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
offset = fWhoIsRequest (tvb, pinfo, tree, offset);
break;
case 9: /* utcTimeSynchronization */
- offset = fUTCTimeSynchronizationRequest (tvb, tree, offset);
+ offset = fUTCTimeSynchronizationRequest (tvb, pinfo, tree, offset);
break;
default:
break;
@@ -9885,9 +9924,9 @@ fContextTaggedError(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint o
guint8 parsed_tag = 0;
guint32 lvt = 0;
- offset += fTagHeaderTree(tvb, tree, offset, &parsed_tag, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, tree, offset, &parsed_tag, &tag_info, &lvt);
offset = fError(tvb, pinfo, tree, offset);
- return offset + fTagHeaderTree(tvb, tree, offset, &parsed_tag, &tag_info, &lvt);
+ return offset + fTagHeaderTree(tvb, pinfo, tree, offset, &parsed_tag, &tag_info, &lvt);
}
static guint
@@ -9906,7 +9945,7 @@ fConfirmedPrivateTransferError(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr
while (tvb_reported_length_remaining(tvb, offset) > 0) {
/* exit loop if nothing happens inside */
lastoffset = offset;
- tag_len = fTagHeader (tvb, offset, &tag_no, &tag_info, &lvt);
+ tag_len = fTagHeader (tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
switch (tag_no) {
case 0: /* errorType */
offset = fContextTaggedError(tvb, pinfo, subtree, offset);
@@ -9921,7 +9960,7 @@ fConfirmedPrivateTransferError(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr
fUnsigned32(tvb, offset+tag_len, lvt, &service_number);
if (col_get_writable(pinfo->cinfo))
col_append_fstr(pinfo->cinfo, COL_INFO, "SN=%u ", service_number);
- offset = fUnsignedTag (tvb, subtree, offset, "service Number: ");
+ offset = fUnsignedTag (tvb, pinfo, subtree, offset, "service Number: ");
break;
case 3: /* errorParameters */
if (tag_is_opening(tag_info)) {
@@ -9929,10 +9968,10 @@ fConfirmedPrivateTransferError(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr
"error Parameters");
subtree = proto_item_add_subtree(tt, ett_bacapp_value);
propertyIdentifier = -1;
- offset += fTagHeaderTree(tvb, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
offset = fAbstractSyntaxNType (tvb, pinfo, subtree, offset);
} else if (tag_is_closing(tag_info)) {
- offset += fTagHeaderTree (tvb, subtree, offset,
+ offset += fTagHeaderTree (tvb, pinfo, subtree, offset,
&tag_no, &tag_info, &lvt);
subtree = tree;
} else {
@@ -9960,7 +9999,7 @@ fCreateObjectError(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint of
offset = fContextTaggedError(tvb, pinfo, tree, offset);
break;
case 1: /* firstFailedElementNumber */
- offset = fUnsignedTag (tvb,tree,offset,"first failed element number: ");
+ offset = fUnsignedTag (tvb,pinfo,tree,offset,"first failed element number: ");
break;
default:
return offset;
@@ -9988,9 +10027,9 @@ fVTCloseError(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
offset = fContextTaggedError(tvb, pinfo, tree,offset);
if (fTagNo(tvb, offset) == 1) {
/* listOfVTSessionIdentifiers [OPTIONAL] */
- offset += fTagHeaderTree(tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
offset = fVtCloseRequest (tvb, pinfo, tree, offset);
- offset += fTagHeaderTree(tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
}
}
/* should report bad packet if initial tag wasn't 0 */
@@ -10012,9 +10051,9 @@ fWritePropertyMultipleError(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
offset = fContextTaggedError(tvb, pinfo, tree, offset);
break;
case 1: /* firstFailedWriteAttempt */
- offset += fTagHeaderTree(tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
offset = fBACnetObjectPropertyReference(tvb, pinfo, tree, offset);
- offset += fTagHeaderTree(tvb, tree, offset, &tag_no, &tag_info, &lvt);
+ offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
break;
default:
return offset;
diff --git a/epan/dissectors/packet-banana.c b/epan/dissectors/packet-banana.c
index d7232a5984..52691be418 100644
--- a/epan/dissectors/packet-banana.c
+++ b/epan/dissectors/packet-banana.c
@@ -32,8 +32,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
@@ -240,17 +238,15 @@ dissect_banana(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
col_add_fstr(pinfo->cinfo, COL_INFO, "First element: %s",
val_to_str(byte, type_vals, "Unknown type: %u"));
- if (tree) {
- /* Create display subtree for the protocol */
- ti = proto_tree_add_item(tree, proto_banana, tvb, 0, -1, ENC_NA);
- banana_tree = proto_item_add_subtree(ti, ett_banana);
+ /* Create display subtree for the protocol */
+ ti = proto_tree_add_item(tree, proto_banana, tvb, 0, -1, ENC_NA);
+ banana_tree = proto_item_add_subtree(ti, ett_banana);
- offset = 0;
- old_offset = -1;
- while (offset > old_offset) {
- old_offset = offset;
- offset += dissect_banana_element(tvb, pinfo, banana_tree, offset);
- }
+ offset = 0;
+ old_offset = -1;
+ while (offset > old_offset) {
+ old_offset = offset;
+ offset += dissect_banana_element(tvb, pinfo, banana_tree, offset);
}
/* Return the amount of data this dissector was able to dissect */
diff --git a/epan/dissectors/packet-batadv.c b/epan/dissectors/packet-batadv.c
index 681a29c730..a36bf0e9de 100644
--- a/epan/dissectors/packet-batadv.c
+++ b/epan/dissectors/packet-batadv.c
@@ -36,14 +36,16 @@
/* Start content from packet-batadv.h */
#define ETH_P_BATMAN 0x4305
-#define BATADV_PACKET_V5 0x01
-#define BATADV_ICMP_V5 0x02
-#define BATADV_UNICAST_V5 0x03
-#define BATADV_BCAST_V5 0x04
-#define BATADV_VIS_V5 0x05
-#define BATADV_UNICAST_FRAG_V12 0x06
-#define BATADV_TT_QUERY_V14 0x07
-#define BATADV_ROAM_ADV_V14 0x08
+#define BATADV_PACKET_V5 0x01
+#define BATADV_ICMP_V5 0x02
+#define BATADV_UNICAST_V5 0x03
+#define BATADV_BCAST_V5 0x04
+#define BATADV_VIS_V5 0x05
+#define BATADV_UNICAST_FRAG_V12 0x06
+#define BATADV_TT_QUERY_V14 0x07
+#define BATADV_ROAM_ADV_V14 0x08
+#define BATADV_ROAM_ADV_V14 0x08
+#define BATADV_UNICAST_4ADDR_V14 0x09
#define ECHO_REPLY 0
#define DESTINATION_UNREACHABLE 3
@@ -61,6 +63,11 @@
#define BAT_RR_LEN 16
+#define UNICAST_4ADDR_DATA 0x01
+#define UNICAST_4ADDR_DAT_DHT_GET 0x02
+#define UNICAST_4ADDR_DAT_DHT_PUT 0x03
+#define UNICAST_4ADDR_DAT_CACHE_REPLY 0x04
+
struct batman_packet_v5 {
guint8 packet_type;
guint8 version; /* batman version field */
@@ -200,7 +207,18 @@ struct unicast_packet_v14 {
guint8 ttvn; /* destination translation table version number */
address dest;
};
-#define UNICAST_PACKET_V14_SIZE 12
+#define UNICAST_PACKET_V14_SIZE 10
+
+struct unicast_4addr_packet_v14 {
+ guint8 packet_type;
+ guint8 version; /* batman version field */
+ guint8 ttl;
+ guint8 ttvn; /* destination translation table version number */
+ address dest;
+ address src;
+ guint8 subtype;
+};
+#define UNICAST_4ADDR_PACKET_V14_SIZE 17
struct unicast_frag_packet_v12 {
guint8 packet_type;
@@ -334,6 +352,7 @@ static gint ett_batadv_bcast = -1;
static gint ett_batadv_icmp = -1;
static gint ett_batadv_icmp_rr = -1;
static gint ett_batadv_unicast = -1;
+static gint ett_batadv_unicast_4addr = -1;
static gint ett_batadv_unicast_frag = -1;
static gint ett_batadv_vis = -1;
static gint ett_batadv_vis_entry = -1;
@@ -382,6 +401,13 @@ static int hf_batadv_unicast_dst = -1;
static int hf_batadv_unicast_ttl = -1;
static int hf_batadv_unicast_ttvn = -1;
+static int hf_batadv_unicast_4addr_version = -1;
+static int hf_batadv_unicast_4addr_dst = -1;
+static int hf_batadv_unicast_4addr_ttl = -1;
+static int hf_batadv_unicast_4addr_ttvn = -1;
+static int hf_batadv_unicast_4addr_src = -1;
+static int hf_batadv_unicast_4addr_subtype = -1;
+
static int hf_batadv_unicast_frag_version = -1;
static int hf_batadv_unicast_frag_dst = -1;
static int hf_batadv_unicast_frag_ttl = -1;
@@ -438,10 +464,19 @@ static int hf_msg_reassembled_length = -1;
/* flags */
static int hf_batadv_batman_flags_directlink = -1;
static int hf_batadv_batman_flags_vis_server = -1;
+static int hf_batadv_batman_flags_not_best_next_hop = -1;
static int hf_batadv_batman_flags_primaries_first_hop = -1;
static int hf_batadv_unicast_frag_flags_head = -1;
static int hf_batadv_unicast_frag_flags_largetail = -1;
+static const value_string unicast_4addr_typenames[] = {
+ { UNICAST_4ADDR_DATA, "Data" },
+ { UNICAST_4ADDR_DAT_DHT_GET, "DHT Get" },
+ { UNICAST_4ADDR_DAT_DHT_PUT, "DHT Put" },
+ { UNICAST_4ADDR_DAT_CACHE_REPLY, "DHT Cache Reply" },
+ { 0, NULL }
+};
+
static const value_string icmp_packettypenames[] = {
{ ECHO_REPLY, "ECHO_REPLY" },
{ DESTINATION_UNREACHABLE, "DESTINATION UNREACHABLE" },
@@ -511,6 +546,9 @@ static void dissect_batadv_unicast(tvbuff_t *tvb, packet_info *pinfo, proto_tree
static void dissect_batadv_unicast_v6(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static void dissect_batadv_unicast_v14(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
+static void dissect_batadv_unicast_4addr(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
+static void dissect_batadv_unicast_4addr_v14(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
+
static void dissect_batadv_unicast_frag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static void dissect_batadv_unicast_frag_v12(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static void dissect_batadv_unicast_frag_v14(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
@@ -580,6 +618,9 @@ static void dissect_batman_plugin(tvbuff_t *tvb, packet_info *pinfo, proto_tree
case BATADV_ROAM_ADV_V14:
dissect_batadv_roam_adv(tvb, pinfo, tree);
break;
+ case BATADV_UNICAST_4ADDR_V14:
+ dissect_batadv_unicast_4addr(tvb, pinfo, tree);
+ break;
default:
/* dunno */
{
@@ -1271,6 +1312,7 @@ static int dissect_batadv_batman_v14(tvbuff_t *tvb, int offset, packet_info *pin
proto_tree_add_boolean(flag_tree, hf_batadv_batman_flags_directlink, tvb, offset, 1, batman_packeth->flags);
proto_tree_add_boolean(flag_tree, hf_batadv_batman_flags_vis_server, tvb, offset, 1, batman_packeth->flags);
proto_tree_add_boolean(flag_tree, hf_batadv_batman_flags_primaries_first_hop, tvb, offset, 1, batman_packeth->flags);
+ proto_tree_add_boolean(flag_tree, hf_batadv_batman_flags_not_best_next_hop, tvb, offset, 1, batman_packeth->flags);
/* </flags> */
offset += 1;
@@ -2080,6 +2122,107 @@ static void dissect_batadv_unicast_v14(tvbuff_t *tvb, packet_info *pinfo, proto_
}
}
+static void dissect_batadv_unicast_4addr(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ guint8 version;
+
+ /* set protocol name */
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "BATADV_UNICAST_4ADDR");
+
+ version = tvb_get_guint8(tvb, 1);
+ switch (version) {
+ case 14:
+ dissect_batadv_unicast_4addr_v14(tvb, pinfo, tree);
+ break;
+ default:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Unsupported Version %d", version);
+ call_dissector(data_handle, tvb, pinfo, tree);
+ break;
+ }
+}
+
+static void dissect_batadv_unicast_4addr_v14(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ struct unicast_4addr_packet_v14 *unicast_4addr_packeth;
+ const guint8 *dest_addr, *src_addr;
+
+ tvbuff_t *next_tvb;
+ guint length_remaining;
+ int offset = 0;
+ proto_tree *batadv_unicast_4addr_tree = NULL;
+
+ unicast_4addr_packeth = ep_alloc(sizeof(struct unicast_4addr_packet_v14));
+
+ unicast_4addr_packeth->version = tvb_get_guint8(tvb, 1);
+ unicast_4addr_packeth->ttl = tvb_get_guint8(tvb, 2);
+ unicast_4addr_packeth->ttvn = tvb_get_guint8(tvb, 3);
+ dest_addr = tvb_get_ptr(tvb, 4, 6);
+ SET_ADDRESS(&unicast_4addr_packeth->dest, AT_ETHER, 6, dest_addr);
+ src_addr = tvb_get_ptr(tvb, 10, 6);
+ SET_ADDRESS(&unicast_4addr_packeth->src, AT_ETHER, 6, src_addr);
+ unicast_4addr_packeth->subtype = tvb_get_guint8(tvb, 16);
+
+ /* Set info column */
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s",
+ val_to_str(unicast_4addr_packeth->subtype, unicast_4addr_typenames, "Unknown (0x%02x)"));
+
+ /* Set tree info */
+ if (tree) {
+ proto_item *ti;
+
+ if (PTREE_DATA(tree)->visible) {
+ ti = proto_tree_add_protocol_format(tree, proto_batadv_plugin, tvb, 0, UNICAST_4ADDR_PACKET_V14_SIZE,
+ "B.A.T.M.A.N. Unicast 4Addr, Dst: %s (%s)",
+ get_ether_name(dest_addr), ether_to_str(dest_addr));
+ } else {
+ ti = proto_tree_add_item(tree, proto_batadv_plugin, tvb, 0, UNICAST_4ADDR_PACKET_V14_SIZE, ENC_NA);
+ }
+ batadv_unicast_4addr_tree = proto_item_add_subtree(ti, ett_batadv_unicast_4addr);
+ }
+
+ /* items */
+ proto_tree_add_uint_format(batadv_unicast_4addr_tree, hf_batadv_packet_type, tvb, offset, 1, BATADV_UNICAST_4ADDR_V14,
+ "Packet Type: %s (%u)", "BATADV_UNICAST_4ADDR", BATADV_UNICAST_4ADDR_V14);
+ offset += 1;
+
+ proto_tree_add_item(batadv_unicast_4addr_tree, hf_batadv_unicast_4addr_version, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+
+ proto_tree_add_item(batadv_unicast_4addr_tree, hf_batadv_unicast_4addr_ttl, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+
+ proto_tree_add_item(batadv_unicast_4addr_tree, hf_batadv_unicast_4addr_ttvn, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+
+ proto_tree_add_ether(batadv_unicast_4addr_tree, hf_batadv_unicast_4addr_dst, tvb, offset, 6, dest_addr);
+ offset += 6;
+
+ proto_tree_add_ether(batadv_unicast_4addr_tree, hf_batadv_unicast_4addr_src, tvb, offset, 6, src_addr);
+ offset += 6;
+
+ proto_tree_add_item(batadv_unicast_4addr_tree, hf_batadv_unicast_4addr_subtype, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+
+ SET_ADDRESS(&pinfo->dl_dst, AT_ETHER, 6, dest_addr);
+ SET_ADDRESS(&pinfo->dst, AT_ETHER, 6, dest_addr);
+ SET_ADDRESS(&pinfo->dl_src, AT_ETHER, 6, src_addr);
+ SET_ADDRESS(&pinfo->src, AT_ETHER, 6, src_addr);
+
+ tap_queue_packet(batadv_tap, pinfo, unicast_4addr_packeth);
+
+ length_remaining = tvb_length_remaining(tvb, offset);
+
+ if (length_remaining != 0) {
+ next_tvb = tvb_new_subset(tvb, offset, length_remaining, -1);
+
+ if (have_tap_listener(batadv_follow_tap)) {
+ tap_queue_packet(batadv_follow_tap, pinfo, next_tvb);
+ }
+
+ call_dissector(eth_handle, next_tvb, pinfo, tree);
+ }
+}
+
static void dissect_batadv_unicast_frag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
guint8 version;
@@ -3112,6 +3255,11 @@ void proto_register_batadv(void)
FT_BOOLEAN, 8, TFS(&tfs_set_notset), 0x10,
NULL, HFILL }
},
+ { &hf_batadv_batman_flags_not_best_next_hop,
+ { "NOT_BEST_NEXT_HOP", "batadv.batman.flags.not_best_next_hop",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), 0x8,
+ NULL, HFILL }
+ },
{ &hf_batadv_batman_tt,
{ "Translation Table", "batadv.batman.tt",
FT_ETHER, BASE_NONE, NULL, 0x0,
@@ -3197,6 +3345,36 @@ void proto_register_batadv(void)
FT_UINT8, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
+ { &hf_batadv_unicast_4addr_version,
+ { "Version", "batadv.unicast_4addr.version",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_batadv_unicast_4addr_dst,
+ { "Destination", "batadv.unicast_4addr.dst",
+ FT_ETHER, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_batadv_unicast_4addr_ttl,
+ { "Time to Live", "batadv.unicast_4addr.ttl",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_batadv_unicast_4addr_ttvn,
+ { "TT Version", "batadv.unicast_4addr.ttvn",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_batadv_unicast_4addr_src,
+ { "Source", "batadv.unicast_4addr.src",
+ FT_ETHER, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_batadv_unicast_4addr_subtype,
+ { "Subtype", "batadv.unicast_4addr.subtype",
+ FT_UINT8, BASE_DEC, VALS (&unicast_4addr_typenames), 0x0,
+ NULL, HFILL }
+ },
{ &hf_batadv_unicast_frag_version,
{ "Version", "batadv.unicast_frag.version",
FT_UINT8, BASE_DEC, NULL, 0x0,
@@ -3461,6 +3639,7 @@ void proto_register_batadv(void)
&ett_batadv_icmp,
&ett_batadv_icmp_rr,
&ett_batadv_unicast,
+ &ett_batadv_unicast_4addr,
&ett_batadv_unicast_frag,
&ett_batadv_vis,
&ett_batadv_vis_entry,
diff --git a/epan/dissectors/packet-beep.c b/epan/dissectors/packet-beep.c
index e91270c3c4..a91b6e43d3 100644
--- a/epan/dissectors/packet-beep.c
+++ b/epan/dissectors/packet-beep.c
@@ -586,7 +586,7 @@ dissect_beep_tree(tvbuff_t *tvb, int offset, packet_info *pinfo,
set_mime_hdr_flags(more, request_val, beep_frame_data, pinfo);
}
else { /* Protocol violation, so dissect rest as undisectable */
- if (tree) {
+ if (tree && (tvb_length_remaining(tvb, offset) > 0)) {
proto_tree_add_text(hdr, tvb, offset,
tvb_length_remaining(tvb, offset),
"Undissected Payload: %s",
@@ -624,7 +624,7 @@ dissect_beep_tree(tvbuff_t *tvb, int offset, packet_info *pinfo,
/* We dissect the rest as data and bail ... */
- if (tree) {
+ if (tree && (tvb_length_remaining(tvb, offset) > 0)) {
proto_tree_add_text(hdr, tvb, offset,
tvb_length_remaining(tvb, offset),
"Undissected Payload: %s",
@@ -710,7 +710,7 @@ dissect_beep_tree(tvbuff_t *tvb, int offset, packet_info *pinfo,
/* We dissect the rest as data and bail ... */
- if (tree) {
+ if (tree && (tvb_length_remaining(tvb, offset) > 0)) {
proto_tree_add_text(tree, tvb, offset,
tvb_length_remaining(tvb, offset),
"Undissected Payload: %s",
@@ -731,7 +731,7 @@ dissect_beep_tree(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tr = NULL;
if (tree) {
- ti = proto_tree_add_text(tree, tvb, offset, MIN(5, tvb_length_remaining(tvb, offset)), "Trailer");
+ ti = proto_tree_add_text(tree, tvb, offset, MIN(5, MAX(0, tvb_length_remaining(tvb, offset))), "Trailer");
tr = proto_item_add_subtree(ti, ett_trailer);
@@ -746,7 +746,7 @@ dissect_beep_tree(tvbuff_t *tvb, int offset, packet_info *pinfo,
/* We dissect the rest as data and bail ... */
- if (tree) {
+ if (tree && (tvb_length_remaining(tvb, offset) > 0)) {
proto_tree_add_text(tr, tvb, offset, tvb_length_remaining(tvb, offset),
"Undissected Payload: %s",
tvb_format_text(tvb, offset,
@@ -890,7 +890,8 @@ dissect_beep(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* "tvb_format_text()" is passed a value that won't go past the end
* of the packet, so it won't throw an exception.
*/
- col_add_str(pinfo->cinfo, COL_INFO, tvb_format_text(tvb, offset, tvb_length_remaining(tvb, offset)));
+ if (tvb_length_remaining(tvb, offset) > 0)
+ col_add_str(pinfo->cinfo, COL_INFO, tvb_format_text(tvb, offset, tvb_length_remaining(tvb, offset)));
/* Here, we parse the message so we can retrieve the info we need, which
* is that there is some payload left from a previous segment on the
@@ -926,10 +927,10 @@ dissect_beep(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
int pl_left = beep_frame_data->pl_left;
- pl_left = MIN(pl_left, tvb_length_remaining(tvb, offset));
+ pl_left = MIN(pl_left, MAX(0, tvb_length_remaining(tvb, offset)));
/* Add the payload bit, only if we have a tree */
- if (tree) {
+ if (tree && (pl_left > 0)) {
proto_tree_add_text(beep_tree, tvb, offset, pl_left, "Payload: %s",
tvb_format_text(tvb, offset, pl_left));
}
diff --git a/epan/dissectors/packet-ber.c b/epan/dissectors/packet-ber.c
index cd5b5671f8..c9d6a33603 100644
--- a/epan/dissectors/packet-ber.c
+++ b/epan/dissectors/packet-ber.c
@@ -157,6 +157,7 @@ static gboolean show_internal_ber_fields = FALSE;
static gboolean decode_octetstring_as_ber = FALSE;
static gboolean decode_primitive_as_ber = FALSE;
static gboolean decode_unexpected = FALSE;
+static gboolean decode_warning_leading_zero_bits = FALSE;
static gchar *decode_as_syntax = NULL;
static gchar *ber_filename = NULL;
@@ -172,89 +173,89 @@ static guint32 last_length;
static gboolean last_ind;
static const value_string ber_class_codes[] = {
- { BER_CLASS_UNI, "UNIVERSAL" },
- { BER_CLASS_APP, "APPLICATION" },
- { BER_CLASS_CON, "CONTEXT" },
- { BER_CLASS_PRI, "PRIVATE" },
- { 0, NULL }
+ { BER_CLASS_UNI, "UNIVERSAL" },
+ { BER_CLASS_APP, "APPLICATION" },
+ { BER_CLASS_CON, "CONTEXT" },
+ { BER_CLASS_PRI, "PRIVATE" },
+ { 0, NULL }
};
static const true_false_string ber_pc_codes = {
- "Constructed Encoding",
- "Primitive Encoding"
+ "Constructed Encoding",
+ "Primitive Encoding"
};
static const true_false_string ber_pc_codes_short = {
- "constructed",
- "primitive"
+ "constructed",
+ "primitive"
};
static const value_string ber_uni_tag_codes[] = {
- { BER_UNI_TAG_EOC, "'end-of-content'" },
- { BER_UNI_TAG_BOOLEAN, "BOOLEAN" },
- { BER_UNI_TAG_INTEGER, "INTEGER" },
- { BER_UNI_TAG_BITSTRING, "BIT STRING" },
- { BER_UNI_TAG_OCTETSTRING, "OCTET STRING" },
- { BER_UNI_TAG_NULL, "NULL" },
- { BER_UNI_TAG_OID, "OBJECT IDENTIFIER" },
- { BER_UNI_TAG_ObjectDescriptor, "ObjectDescriptor" },
- { BER_UNI_TAG_EXTERNAL, "EXTERNAL" },
- { BER_UNI_TAG_REAL, "REAL" },
- { BER_UNI_TAG_ENUMERATED, "ENUMERATED" },
- { BER_UNI_TAG_EMBEDDED_PDV, "EMBEDDED PDV" },
- { BER_UNI_TAG_UTF8String, "UTF8String" },
- { BER_UNI_TAG_RELATIVE_OID, "RELATIVE-OID" },
- /* UNIVERSAL 14-15
- * Reserved for future editions of this
- * Recommendation | International Standard
- */
- { 14, "Reserved for future editions" },
- { 15 , "Reserved for future editions" },
-
- { BER_UNI_TAG_SEQUENCE, "SEQUENCE" },
- { BER_UNI_TAG_SET, "SET" },
- { BER_UNI_TAG_NumericString, "NumericString" },
- { BER_UNI_TAG_PrintableString, "PrintableString" },
- { BER_UNI_TAG_TeletexString, "TeletexString, T61String" },
- { BER_UNI_TAG_VideotexString, "VideotexString" },
- { BER_UNI_TAG_IA5String, "IA5String" },
- { BER_UNI_TAG_UTCTime, "UTCTime" },
- { BER_UNI_TAG_GeneralizedTime, "GeneralizedTime" },
- { BER_UNI_TAG_GraphicString, "GraphicString" },
- { BER_UNI_TAG_VisibleString, "VisibleString, ISO64String" },
- { BER_UNI_TAG_GeneralString, "GeneralString" },
- { BER_UNI_TAG_UniversalString, "UniversalString" },
- { BER_UNI_TAG_CHARACTERSTRING, "CHARACTER STRING" },
- { BER_UNI_TAG_BMPString, "BMPString" },
- { 31, "Continued" },
- { 0, NULL }
+ { BER_UNI_TAG_EOC, "'end-of-content'" },
+ { BER_UNI_TAG_BOOLEAN, "BOOLEAN" },
+ { BER_UNI_TAG_INTEGER, "INTEGER" },
+ { BER_UNI_TAG_BITSTRING, "BIT STRING" },
+ { BER_UNI_TAG_OCTETSTRING, "OCTET STRING" },
+ { BER_UNI_TAG_NULL, "NULL" },
+ { BER_UNI_TAG_OID, "OBJECT IDENTIFIER" },
+ { BER_UNI_TAG_ObjectDescriptor, "ObjectDescriptor" },
+ { BER_UNI_TAG_EXTERNAL, "EXTERNAL" },
+ { BER_UNI_TAG_REAL, "REAL" },
+ { BER_UNI_TAG_ENUMERATED, "ENUMERATED" },
+ { BER_UNI_TAG_EMBEDDED_PDV, "EMBEDDED PDV" },
+ { BER_UNI_TAG_UTF8String, "UTF8String" },
+ { BER_UNI_TAG_RELATIVE_OID, "RELATIVE-OID" },
+ /* UNIVERSAL 14-15
+ * Reserved for future editions of this
+ * Recommendation | International Standard
+ */
+ { 14, "Reserved for future editions" },
+ { 15 , "Reserved for future editions" },
+
+ { BER_UNI_TAG_SEQUENCE, "SEQUENCE" },
+ { BER_UNI_TAG_SET, "SET" },
+ { BER_UNI_TAG_NumericString, "NumericString" },
+ { BER_UNI_TAG_PrintableString, "PrintableString" },
+ { BER_UNI_TAG_TeletexString, "TeletexString, T61String" },
+ { BER_UNI_TAG_VideotexString, "VideotexString" },
+ { BER_UNI_TAG_IA5String, "IA5String" },
+ { BER_UNI_TAG_UTCTime, "UTCTime" },
+ { BER_UNI_TAG_GeneralizedTime, "GeneralizedTime" },
+ { BER_UNI_TAG_GraphicString, "GraphicString" },
+ { BER_UNI_TAG_VisibleString, "VisibleString, ISO64String" },
+ { BER_UNI_TAG_GeneralString, "GeneralString" },
+ { BER_UNI_TAG_UniversalString, "UniversalString" },
+ { BER_UNI_TAG_CHARACTERSTRING, "CHARACTER STRING" },
+ { BER_UNI_TAG_BMPString, "BMPString" },
+ { 31, "Continued" },
+ { 0, NULL }
};
static value_string_ext ber_uni_tag_codes_ext = VALUE_STRING_EXT_INIT(ber_uni_tag_codes);
static const true_false_string ber_real_binary_vals = {
- "Binary encoding",
- "Decimal encoding"
+ "Binary encoding",
+ "Decimal encoding"
};
static const true_false_string ber_real_decimal_vals = {
- "SpecialRealValue",
- "Decimal encoding "
+ "SpecialRealValue",
+ "Decimal encoding "
};
typedef struct _da_data {
- GHFunc func;
- gpointer user_data;
+ GHFunc func;
+ gpointer user_data;
} da_data;
typedef struct _oid_user_t {
- char *oid;
- char *name;
- char *syntax;
+ char *oid;
+ char *name;
+ char *syntax;
} oid_user_t;
-UAT_CSTRING_CB_DEF(oid_users, oid, oid_user_t);
-UAT_CSTRING_CB_DEF(oid_users, name, oid_user_t);
-UAT_VS_CSTRING_DEF(oid_users, syntax, oid_user_t, 0, "");
+UAT_CSTRING_CB_DEF(oid_users, oid, oid_user_t)
+UAT_CSTRING_CB_DEF(oid_users, name, oid_user_t)
+UAT_VS_CSTRING_DEF(oid_users, syntax, oid_user_t, 0, "")
static oid_user_t *oid_users;
static guint num_oid_users;
@@ -263,100 +264,100 @@ static guint num_oid_users;
/* Define non_const_value_string as a hack to prevent chackAPIs.pl from complaining */
#define non_const_value_string value_string
static non_const_value_string syntax_names[MAX_SYNTAX_NAMES+1] = {
- {0, ""},
- {0, NULL}
+ {0, ""},
+ {0, NULL}
};
static const fragment_items octet_string_frag_items = {
- /* Fragment subtrees */
- &ett_ber_fragment,
- &ett_ber_fragments,
- /* Fragment fields */
- &hf_ber_fragments,
- &hf_ber_fragment,
- &hf_ber_fragment_overlap,
- &hf_ber_fragment_overlap_conflicts,
- &hf_ber_fragment_multiple_tails,
- &hf_ber_fragment_too_long_fragment,
- &hf_ber_fragment_error,
- &hf_ber_fragment_count,
- /* Reassembled in field */
- &hf_ber_reassembled_in,
- /* Reassembled length field */
- &hf_ber_reassembled_length,
- /* Tag */
- "OCTET STRING fragments"
+ /* Fragment subtrees */
+ &ett_ber_fragment,
+ &ett_ber_fragments,
+ /* Fragment fields */
+ &hf_ber_fragments,
+ &hf_ber_fragment,
+ &hf_ber_fragment_overlap,
+ &hf_ber_fragment_overlap_conflicts,
+ &hf_ber_fragment_multiple_tails,
+ &hf_ber_fragment_too_long_fragment,
+ &hf_ber_fragment_error,
+ &hf_ber_fragment_count,
+ /* Reassembled in field */
+ &hf_ber_reassembled_in,
+ /* Reassembled length field */
+ &hf_ber_reassembled_length,
+ /* Tag */
+ "OCTET STRING fragments"
};
static void *
oid_copy_cb(void *dest, const void *orig, size_t len _U_)
{
- oid_user_t *u = dest;
- const oid_user_t *o = orig;
+ oid_user_t *u = dest;
+ const oid_user_t *o = orig;
- u->oid = g_strdup(o->oid);
- u->name = g_strdup(o->name);
- u->syntax = o->syntax;
+ u->oid = g_strdup(o->oid);
+ u->name = g_strdup(o->name);
+ u->syntax = o->syntax;
- return dest;
+ return dest;
}
static void
oid_free_cb(void *r)
{
- oid_user_t *u = r;
+ oid_user_t *u = r;
- g_free(u->oid);
- g_free(u->name);
+ g_free(u->oid);
+ g_free(u->name);
}
static int
cmp_value_string(const void *v1, const void *v2)
{
- value_string *vs1 = (value_string *)v1;
- value_string *vs2 = (value_string *)v2;
+ value_string *vs1 = (value_string *)v1;
+ value_string *vs2 = (value_string *)v2;
- return strcmp(vs1->strptr, vs2->strptr);
+ return strcmp(vs1->strptr, vs2->strptr);
}
static uat_field_t users_flds[] = {
- UAT_FLD_OID(oid_users, oid, "OID", "Object Identifier"),
- UAT_FLD_CSTRING(oid_users, name, "Name", "Human readable name for the OID"),
- UAT_FLD_VS(oid_users, syntax, "Syntax", syntax_names, "Syntax of values associated with the OID"),
- UAT_END_FIELDS
+ UAT_FLD_OID(oid_users, oid, "OID", "Object Identifier"),
+ UAT_FLD_CSTRING(oid_users, name, "Name", "Human readable name for the OID"),
+ UAT_FLD_VS(oid_users, syntax, "Syntax", syntax_names, "Syntax of values associated with the OID"),
+ UAT_END_FIELDS
};
void
dissect_ber_oid_NULL_callback(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
{
- return;
+ return;
}
void
register_ber_oid_dissector_handle(const char *oid, dissector_handle_t dissector, int proto _U_, const char *name)
{
- dissector_add_string("ber.oid", oid, dissector);
- oid_add_from_string(name, oid);
+ dissector_add_string("ber.oid", oid, dissector);
+ oid_add_from_string(name, oid);
}
void
register_ber_oid_dissector(const char *oid, dissector_t dissector, int proto, const char *name)
{
- dissector_handle_t dissector_handle;
+ dissector_handle_t dissector_handle;
- dissector_handle=create_dissector_handle(dissector, proto);
- dissector_add_string("ber.oid", oid, dissector_handle);
- oid_add_from_string(name, oid);
+ dissector_handle=create_dissector_handle(dissector, proto);
+ dissector_add_string("ber.oid", oid, dissector_handle);
+ oid_add_from_string(name, oid);
}
void
register_ber_syntax_dissector(const char *syntax, int proto, dissector_t dissector)
{
- dissector_handle_t dissector_handle;
+ dissector_handle_t dissector_handle;
- dissector_handle=create_dissector_handle(dissector, proto);
- dissector_add_string("ber.syntax", syntax, dissector_handle);
+ dissector_handle=create_dissector_handle(dissector, proto);
+ dissector_add_string("ber.syntax", syntax, dissector_handle);
}
@@ -364,195 +365,195 @@ void
register_ber_oid_syntax(const char *oid, const char *name, const char *syntax)
{
- if(syntax && *syntax)
- g_hash_table_insert(syntax_table, (gpointer)g_strdup(oid), (gpointer)g_strdup(syntax));
+ if(syntax && *syntax)
+ g_hash_table_insert(syntax_table, (gpointer)g_strdup(oid), (gpointer)g_strdup(syntax));
- if(name && *name)
- register_ber_oid_name(oid, name);
+ if(name && *name)
+ register_ber_oid_name(oid, name);
}
/* Register the oid name to get translation in proto dissection */
void
register_ber_oid_name(const char *oid, const char *name)
{
- oid_add_from_string(name, oid);
+ oid_add_from_string(name, oid);
}
static void
ber_add_syntax_name(gpointer key, gpointer value _U_, gpointer user_data)
{
- guint *i = (guint*)user_data;
+ guint *i = (guint*)user_data;
- if(*i < MAX_SYNTAX_NAMES) {
- syntax_names[*i].value = *i;
- syntax_names[*i].strptr = (const gchar*)key;
+ if(*i < MAX_SYNTAX_NAMES) {
+ syntax_names[*i].value = *i;
+ syntax_names[*i].strptr = (const gchar*)key;
- (*i)++;
- }
+ (*i)++;
+ }
}
static void ber_decode_as_dt(const gchar *table_name _U_, ftenum_t selector_type _U_, gpointer key, gpointer value, gpointer user_data)
{
- da_data *decode_as_data;
+ da_data *decode_as_data;
- decode_as_data = (da_data *)user_data;
+ decode_as_data = (da_data *)user_data;
- decode_as_data->func(key, value, decode_as_data->user_data);
+ decode_as_data->func(key, value, decode_as_data->user_data);
}
void ber_decode_as_foreach(GHFunc func, gpointer user_data)
{
- da_data decode_as_data;
+ da_data decode_as_data;
- decode_as_data.func = func;
- decode_as_data.user_data = user_data;
+ decode_as_data.func = func;
+ decode_as_data.user_data = user_data;
- dissector_table_foreach("ber.syntax", ber_decode_as_dt, &decode_as_data);
+ dissector_table_foreach("ber.syntax", ber_decode_as_dt, &decode_as_data);
}
void ber_decode_as(const gchar *syntax)
{
- if(decode_as_syntax) {
- g_free(decode_as_syntax);
- decode_as_syntax = NULL;
- }
+ if(decode_as_syntax) {
+ g_free(decode_as_syntax);
+ decode_as_syntax = NULL;
+ }
- if(syntax)
- decode_as_syntax = g_strdup(syntax);
+ if(syntax)
+ decode_as_syntax = g_strdup(syntax);
}
/* Get oid syntax from hash table to get translation in proto dissection(packet-per.c) */
static const gchar *
get_ber_oid_syntax(const char *oid)
{
- return g_hash_table_lookup(syntax_table, oid);
+ return g_hash_table_lookup(syntax_table, oid);
}
void ber_set_filename(gchar *filename)
{
- gchar *ptr;
+ gchar *ptr;
- if(ber_filename) {
- g_free(ber_filename);
- ber_filename = NULL;
- }
+ if(ber_filename) {
+ g_free(ber_filename);
+ ber_filename = NULL;
+ }
- if(filename) {
+ if(filename) {
- ber_filename = g_strdup(filename);
+ ber_filename = g_strdup(filename);
- if((ptr = strrchr(ber_filename, '.')) != NULL) {
+ if((ptr = strrchr(ber_filename, '.')) != NULL) {
- ber_decode_as(get_ber_oid_syntax(ptr));
+ ber_decode_as(get_ber_oid_syntax(ptr));
+ }
}
- }
}
static void
ber_update_oids(void)
{
- guint i;
+ guint i;
- for(i = 0; i < num_oid_users; i++)
- register_ber_oid_syntax(oid_users[i].oid, oid_users[i].name, oid_users[i].syntax);
+ for(i = 0; i < num_oid_users; i++)
+ register_ber_oid_syntax(oid_users[i].oid, oid_users[i].name, oid_users[i].syntax);
}
static void
ber_check_length (guint32 length, gint32 min_len, gint32 max_len, asn1_ctx_t *actx, proto_item *item, gboolean bit)
{
- if (min_len != -1 && length < (guint32)min_len) {
- expert_add_info_format(actx->pinfo, item, PI_PROTOCOL, PI_WARN, "Size constraint: %sstring too short: %d (%d .. %d)", bit ? "bit " : "", length, min_len, max_len);
- } else if (max_len != -1 && length > (guint32)max_len) {
- expert_add_info_format(actx->pinfo, item, PI_PROTOCOL, PI_WARN, "Size constraint: %sstring too long: %d (%d .. %d)", bit ? "bit " : "", length, min_len, max_len);
- }
+ if (min_len != -1 && length < (guint32)min_len) {
+ expert_add_info_format(actx->pinfo, item, PI_PROTOCOL, PI_WARN, "Size constraint: %sstring too short: %d (%d .. %d)", bit ? "bit " : "", length, min_len, max_len);
+ } else if (max_len != -1 && length > (guint32)max_len) {
+ expert_add_info_format(actx->pinfo, item, PI_PROTOCOL, PI_WARN, "Size constraint: %sstring too long: %d (%d .. %d)", bit ? "bit " : "", length, min_len, max_len);
+ }
}
static void
ber_check_value64 (gint64 value, gint64 min_len, gint64 max_len, asn1_ctx_t *actx, proto_item *item)
{
- if (min_len != -1 && value < min_len) {
- expert_add_info_format(actx->pinfo, item, PI_PROTOCOL, PI_WARN, "Size constraint: value too small: %" G_GINT64_MODIFIER "d (%" G_GINT64_MODIFIER "d .. %" G_GINT64_MODIFIER "d)", value, min_len, max_len);
- } else if (max_len != -1 && value > max_len) {
- expert_add_info_format(actx->pinfo, item, PI_PROTOCOL, PI_WARN, "Size constraint: value too big: %" G_GINT64_MODIFIER "d (%" G_GINT64_MODIFIER "d .. %" G_GINT64_MODIFIER "d)", value, min_len, max_len);
- }
+ if (min_len != -1 && value < min_len) {
+ expert_add_info_format(actx->pinfo, item, PI_PROTOCOL, PI_WARN, "Size constraint: value too small: %" G_GINT64_MODIFIER "d (%" G_GINT64_MODIFIER "d .. %" G_GINT64_MODIFIER "d)", value, min_len, max_len);
+ } else if (max_len != -1 && value > max_len) {
+ expert_add_info_format(actx->pinfo, item, PI_PROTOCOL, PI_WARN, "Size constraint: value too big: %" G_GINT64_MODIFIER "d (%" G_GINT64_MODIFIER "d .. %" G_GINT64_MODIFIER "d)", value, min_len, max_len);
+ }
}
static void
ber_check_value (guint32 value, gint32 min_len, gint32 max_len, asn1_ctx_t *actx, proto_item *item)
{
- if (min_len != -1 && value < (guint32)min_len) {
- expert_add_info_format(actx->pinfo, item, PI_PROTOCOL, PI_WARN, "Size constraint: value too small: %d (%d .. %d)", value, min_len, max_len);
- } else if (max_len != -1 && value > (guint32)max_len) {
- expert_add_info_format(actx->pinfo, item, PI_PROTOCOL, PI_WARN, "Size constraint: value too big: %d (%d .. %d)", value, min_len, max_len);
- }
+ if (min_len != -1 && value < (guint32)min_len) {
+ expert_add_info_format(actx->pinfo, item, PI_PROTOCOL, PI_WARN, "Size constraint: value too small: %d (%d .. %d)", value, min_len, max_len);
+ } else if (max_len != -1 && value > (guint32)max_len) {
+ expert_add_info_format(actx->pinfo, item, PI_PROTOCOL, PI_WARN, "Size constraint: value too big: %d (%d .. %d)", value, min_len, max_len);
+ }
}
static void
ber_check_items (int cnt, gint32 min_len, gint32 max_len, asn1_ctx_t *actx, proto_item *item)
{
- if (min_len != -1 && cnt < min_len) {
- expert_add_info_format(actx->pinfo, item, PI_PROTOCOL, PI_WARN, "Size constraint: too few items: %d (%d .. %d)", cnt, min_len, max_len);
- } else if (max_len != -1 && cnt > max_len) {
- expert_add_info_format(actx->pinfo, item, PI_PROTOCOL, PI_WARN, "Size constraint: too many items: %d (%d .. %d)", cnt, min_len, max_len);
- }
+ if (min_len != -1 && cnt < min_len) {
+ expert_add_info_format(actx->pinfo, item, PI_PROTOCOL, PI_WARN, "Size constraint: too few items: %d (%d .. %d)", cnt, min_len, max_len);
+ } else if (max_len != -1 && cnt > max_len) {
+ expert_add_info_format(actx->pinfo, item, PI_PROTOCOL, PI_WARN, "Size constraint: too many items: %d (%d .. %d)", cnt, min_len, max_len);
+ }
}
int dissect_ber_tagged_type(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint hf_id, gint8 tag_cls, gint32 tag_tag, gboolean tag_impl, ber_type_fn type)
{
- gint8 tmp_cls;
- gint32 tmp_tag;
- guint32 tmp_len;
- tvbuff_t *next_tvb = tvb;
- proto_item *cause;
+ gint8 tmp_cls;
+ gint32 tmp_tag;
+ guint32 tmp_len;
+ tvbuff_t *next_tvb = tvb;
+ proto_item *cause;
#ifdef DEBUG_BER
-{
-const char *name;
-header_field_info *hfinfo;
-if(hf_id>=0){
-hfinfo = proto_registrar_get_nth(hf_id);
-name=hfinfo->name;
-} else {
-name="unnamed";
-}
-if(tvb_length_remaining(tvb,offset)>3){
-printf("dissect_ber_tagged_type(%s) entered implicit_tag:%d offset:%d len:%d %02x:%02x:%02x\n",name,implicit_tag,offset,tvb_length_remaining(tvb,offset),tvb_get_guint8(tvb,offset),tvb_get_guint8(tvb,offset+1),tvb_get_guint8(tvb,offset+2));
-}else{
-printf("dissect_ber_tagged_type(%s) entered\n",name);
-}
-}
+ {
+ const char *name;
+ header_field_info *hfinfo;
+ if(hf_id>=0){
+ hfinfo = proto_registrar_get_nth(hf_id);
+ name=hfinfo->name;
+ } else {
+ name="unnamed";
+ }
+ if(tvb_length_remaining(tvb,offset)>3){
+ printf("dissect_ber_tagged_type(%s) entered implicit_tag:%d offset:%d len:%d %02x:%02x:%02x\n",name,implicit_tag,offset,tvb_length_remaining(tvb,offset),tvb_get_guint8(tvb,offset),tvb_get_guint8(tvb,offset+1),tvb_get_guint8(tvb,offset+2));
+ }else{
+ printf("dissect_ber_tagged_type(%s) entered\n",name);
+ }
+ }
#endif
- if (implicit_tag) {
- offset = type(tag_impl, tvb, offset, actx, tree, hf_id);
- return offset;
- }
+ if (implicit_tag) {
+ offset = type(tag_impl, tvb, offset, actx, tree, hf_id);
+ return offset;
+ }
- offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &tmp_cls, NULL, &tmp_tag);
- offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &tmp_len, NULL);
+ offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &tmp_cls, NULL, &tmp_tag);
+ offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &tmp_len, NULL);
- if ((tmp_cls != tag_cls) || (tmp_tag != tag_tag)) {
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, tmp_len, "wrong_tag",
- "BER Error: Wrong tag in tagged type - expected class:%s(%d) tag:%d (%s) but found class:%s(%d) tag:%d",
- val_to_str(tag_cls, ber_class_codes, "Unknown"), tag_cls, tag_tag, val_to_str_ext(tag_tag, &ber_uni_tag_codes_ext,"Unknown"),
- val_to_str(tmp_cls, ber_class_codes, "Unknown"), tmp_cls, tmp_tag);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Wrong tag in tagged type");
- }
+ if ((tmp_cls != tag_cls) || (tmp_tag != tag_tag)) {
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, tmp_len, "wrong_tag",
+ "BER Error: Wrong tag in tagged type - expected class:%s(%d) tag:%d (%s) but found class:%s(%d) tag:%d",
+ val_to_str(tag_cls, ber_class_codes, "Unknown"), tag_cls, tag_tag, val_to_str_ext(tag_tag, &ber_uni_tag_codes_ext,"Unknown"),
+ val_to_str(tmp_cls, ber_class_codes, "Unknown"), tmp_cls, tmp_tag);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Wrong tag in tagged type");
+ }
- if (tag_impl) {
- next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), tmp_len);
- type(tag_impl, next_tvb, 0, actx, tree, hf_id);
- offset += tmp_len;
- } else {
- offset = type(tag_impl, tvb, offset, actx, tree, hf_id);
- }
+ if (tag_impl) {
+ next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), tmp_len);
+ type(tag_impl, next_tvb, 0, actx, tree, hf_id);
+ offset += tmp_len;
+ } else {
+ offset = type(tag_impl, tvb, offset, actx, tree, hf_id);
+ }
- return offset;
+ return offset;
}
/*
@@ -563,13 +564,13 @@ ber_add_bad_length_error(packet_info *pinfo, proto_tree *tree,
const char *name, tvbuff_t *tvb, const gint start,
gint length)
{
- proto_item *ti;
+ proto_item *ti;
- ti = proto_tree_add_string_format(tree, hf_ber_error, tvb, start, length, "illegal_length",
- "%s: length of item (%d) is not valid", name, length);
- expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_WARN,
- "Length of item (%d) is not valid", length);
- return ti;
+ ti = proto_tree_add_string_format(tree, hf_ber_error, tvb, start, length, "illegal_length",
+ "%s: length of item (%d) is not valid", name, length);
+ expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_WARN,
+ "Length of item (%d) is not valid", length);
+ return ti;
}
/*
@@ -594,429 +595,429 @@ ber_proto_tree_add_item(packet_info *pinfo, proto_tree *tree,
const int hfindex, tvbuff_t *tvb, const gint start,
gint length, const guint encoding)
{
- header_field_info *hfinfo;
-
- hfinfo = proto_registrar_get_nth((guint)hfindex);
- if (hfinfo != NULL) {
- switch (hfinfo->type) {
-
- case FT_BOOLEAN:
- case FT_UINT8:
- case FT_UINT16:
- case FT_UINT24:
- case FT_UINT32:
- case FT_INT8:
- case FT_INT16:
- case FT_INT24:
- case FT_INT32:
- if (length != 1 && length != 2 && length != 3 &&
- length != 4)
- return ber_add_bad_length_error(pinfo, tree,
- hfinfo->name, tvb, start, length);
- break;
-
- case FT_IPv4:
- if (length != FT_IPv4_LEN)
- return ber_add_bad_length_error(pinfo, tree,
- hfinfo->name, tvb, start, length);
- break;
-
- case FT_IPXNET:
- if (length != FT_IPXNET_LEN)
- return ber_add_bad_length_error(pinfo, tree,
- hfinfo->name, tvb, start, length);
- break;
-
- case FT_IPv6:
- if (length < 0 || length > FT_IPv6_LEN)
- return ber_add_bad_length_error(pinfo, tree,
- hfinfo->name, tvb, start, length);
- break;
-
- case FT_ETHER:
- if (length != FT_ETHER_LEN)
- return ber_add_bad_length_error(pinfo, tree,
- hfinfo->name, tvb, start, length);
- break;
-
- case FT_GUID:
- if (length != FT_GUID_LEN)
- return ber_add_bad_length_error(pinfo, tree,
- hfinfo->name, tvb, start, length);
- break;
-
- case FT_FLOAT:
- if (length != 4)
- return ber_add_bad_length_error(pinfo, tree,
- hfinfo->name, tvb, start, length);
- break;
-
- case FT_DOUBLE:
- if (length != 8)
- return ber_add_bad_length_error(pinfo, tree,
- hfinfo->name, tvb, start, length);
- break;
-
- case FT_ABSOLUTE_TIME:
- case FT_RELATIVE_TIME:
- if (length != 4 && length != 8)
- return ber_add_bad_length_error(pinfo, tree,
- hfinfo->name, tvb, start, length);
- break;
-
- default:
- break;
- }
- }
- return proto_tree_add_item(tree, hfindex, tvb, start, length, encoding);
+ header_field_info *hfinfo;
+
+ hfinfo = proto_registrar_get_nth((guint)hfindex);
+ if (hfinfo != NULL) {
+ switch (hfinfo->type) {
+
+ case FT_BOOLEAN:
+ case FT_UINT8:
+ case FT_UINT16:
+ case FT_UINT24:
+ case FT_UINT32:
+ case FT_INT8:
+ case FT_INT16:
+ case FT_INT24:
+ case FT_INT32:
+ if (length != 1 && length != 2 && length != 3 &&
+ length != 4)
+ return ber_add_bad_length_error(pinfo, tree,
+ hfinfo->name, tvb, start, length);
+ break;
+
+ case FT_IPv4:
+ if (length != FT_IPv4_LEN)
+ return ber_add_bad_length_error(pinfo, tree,
+ hfinfo->name, tvb, start, length);
+ break;
+
+ case FT_IPXNET:
+ if (length != FT_IPXNET_LEN)
+ return ber_add_bad_length_error(pinfo, tree,
+ hfinfo->name, tvb, start, length);
+ break;
+
+ case FT_IPv6:
+ if (length < 0 || length > FT_IPv6_LEN)
+ return ber_add_bad_length_error(pinfo, tree,
+ hfinfo->name, tvb, start, length);
+ break;
+
+ case FT_ETHER:
+ if (length != FT_ETHER_LEN)
+ return ber_add_bad_length_error(pinfo, tree,
+ hfinfo->name, tvb, start, length);
+ break;
+
+ case FT_GUID:
+ if (length != FT_GUID_LEN)
+ return ber_add_bad_length_error(pinfo, tree,
+ hfinfo->name, tvb, start, length);
+ break;
+
+ case FT_FLOAT:
+ if (length != 4)
+ return ber_add_bad_length_error(pinfo, tree,
+ hfinfo->name, tvb, start, length);
+ break;
+
+ case FT_DOUBLE:
+ if (length != 8)
+ return ber_add_bad_length_error(pinfo, tree,
+ hfinfo->name, tvb, start, length);
+ break;
+
+ case FT_ABSOLUTE_TIME:
+ case FT_RELATIVE_TIME:
+ if (length != 4 && length != 8)
+ return ber_add_bad_length_error(pinfo, tree,
+ hfinfo->name, tvb, start, length);
+ break;
+
+ default:
+ break;
+ }
+ }
+ return proto_tree_add_item(tree, hfindex, tvb, start, length, encoding);
}
static int
try_dissect_unknown_ber(packet_info *pinfo, tvbuff_t *tvb, volatile int offset, proto_tree *tree, gint nest_level)
{
- int start_offset;
- gint8 ber_class;
- gboolean pc, ind;
- gint32 tag;
- guint32 len;
- int hdr_len;
- proto_item *item=NULL;
- proto_tree *next_tree=NULL;
- guint8 c;
- guint32 i;
- gboolean is_printable;
- volatile gboolean is_decoded_as;
- proto_item *pi, *cause;
- asn1_ctx_t asn1_ctx;
-
- if (nest_level > BER_MAX_NESTING) {
- /* Assume that we have a malformed packet. */
- THROW(ReportedBoundsError);
- }
-
- start_offset=offset;
- asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
-
- offset=get_ber_identifier(tvb, offset, &ber_class, &pc, &tag);
- offset=get_ber_length(tvb, offset, &len, &ind);
-
- if(len>(guint32)tvb_length_remaining(tvb, offset)){
- /* hmm maybe something bad happened or the frame is short,
- since these are not vital outputs just return instead of
- throwing an exception.
- */
-
- if(show_internal_ber_fields) {
- offset=dissect_ber_identifier(pinfo, tree, tvb, start_offset, &ber_class, &pc, &tag);
- offset=dissect_ber_length(pinfo, tree, tvb, offset, &len, NULL);
- }
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "illegal_length", "BER Error: length:%u longer than tvb_length_remaining:%d",len, tvb_length_remaining(tvb, offset));
- expert_add_info_format(pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error length");
- return tvb_length(tvb);
- }
+ int start_offset;
+ gint8 ber_class;
+ gboolean pc, ind;
+ gint32 tag;
+ guint32 len;
+ int hdr_len;
+ proto_item *item=NULL;
+ proto_tree *next_tree=NULL;
+ guint8 c;
+ guint32 i;
+ gboolean is_printable;
+ volatile gboolean is_decoded_as;
+ proto_item *pi, *cause;
+ asn1_ctx_t asn1_ctx;
+
+ if (nest_level > BER_MAX_NESTING) {
+ /* Assume that we have a malformed packet. */
+ THROW(ReportedBoundsError);
+ }
+
+ start_offset=offset;
+ asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
+
+ offset=get_ber_identifier(tvb, offset, &ber_class, &pc, &tag);
+ offset=get_ber_length(tvb, offset, &len, &ind);
+
+ if(len>(guint32)tvb_length_remaining(tvb, offset)){
+ /* hmm maybe something bad happened or the frame is short,
+ since these are not vital outputs just return instead of
+ throwing an exception.
+ */
+
+ if(show_internal_ber_fields) {
+ offset=dissect_ber_identifier(pinfo, tree, tvb, start_offset, &ber_class, &pc, &tag);
+ offset=dissect_ber_length(pinfo, tree, tvb, offset, &len, NULL);
+ }
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "illegal_length", "BER Error: length:%u longer than tvb_length_remaining:%d",len, tvb_length_remaining(tvb, offset));
+ expert_add_info_format(pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error length");
+ return tvb_length(tvb);
+ }
/* we dont care about the class only on the constructor flag */
- switch(pc){
-
- case FALSE: /* this is not constructed */
-
- switch(ber_class) { /* we do care about the class */
- case BER_CLASS_UNI: /* it a Universal tag - we can decode it */
- switch(tag){
- case BER_UNI_TAG_EOC:
- /* XXX: shouldn't really get here */
- break;
- case BER_UNI_TAG_INTEGER:
- offset = dissect_ber_integer(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_INTEGER, NULL);
- break;
- case BER_UNI_TAG_BITSTRING:
- offset = dissect_ber_bitstring(FALSE, &asn1_ctx, tree, tvb, start_offset, NULL, hf_ber_unknown_BITSTRING, -1, NULL);
- break;
- case BER_UNI_TAG_ENUMERATED:
- offset = dissect_ber_integer(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_ENUMERATED, NULL);
- break;
- case BER_UNI_TAG_GraphicString:
- offset = dissect_ber_octet_string(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_GraphicString, NULL);
- break;
- case BER_UNI_TAG_OCTETSTRING:
- is_decoded_as = FALSE;
- if (decode_octetstring_as_ber && len >= 2) {
- volatile int ber_offset = 0;
- guint32 ber_len = 0;
- TRY {
- ber_offset = get_ber_identifier(tvb, offset, NULL, &pc, NULL);
- ber_offset = get_ber_length(tvb, ber_offset, &ber_len, NULL);
- } CATCH_ALL {
- }
- ENDTRY;
- if (pc && (ber_len > 0) && (ber_len + (ber_offset - offset) == len)) {
- /* Decoded a constructed ASN.1 tag with a length indicating this
- * could be BER encoded data. Try dissecting as unknown BER.
- */
- is_decoded_as = TRUE;
- if (show_internal_ber_fields) {
- offset = dissect_ber_identifier(pinfo, tree, tvb, start_offset, NULL, NULL, NULL);
- offset = dissect_ber_length(pinfo, tree, tvb, offset, NULL, NULL);
- }
- item = ber_proto_tree_add_item(pinfo, tree, hf_ber_unknown_BER_OCTETSTRING, tvb, offset, len, ENC_NA);
- next_tree = proto_item_add_subtree(item, ett_ber_octet_string);
- offset = try_dissect_unknown_ber(pinfo, tvb, offset, next_tree, nest_level+1);
- }
- }
- if (!is_decoded_as) {
- offset = dissect_ber_octet_string(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_OCTETSTRING, NULL);
- }
- break;
- case BER_UNI_TAG_OID:
- offset=dissect_ber_object_identifier_str(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_OID, NULL);
- break;
- case BER_UNI_TAG_NumericString:
- offset = dissect_ber_octet_string(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_NumericString, NULL);
- break;
- case BER_UNI_TAG_PrintableString:
- offset = dissect_ber_octet_string(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_PrintableString, NULL);
- break;
- case BER_UNI_TAG_TeletexString:
- offset = dissect_ber_octet_string(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_TeletexString, NULL);
- break;
- case BER_UNI_TAG_VisibleString:
- offset = dissect_ber_octet_string(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_VisibleString, NULL);
- break;
- case BER_UNI_TAG_GeneralString:
- offset = dissect_ber_GeneralString(&asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_GeneralString, NULL, 0);
- break;
- case BER_UNI_TAG_BMPString:
- offset = dissect_ber_octet_string(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_BMPString, NULL);
- break;
- case BER_UNI_TAG_UniversalString:
- offset = dissect_ber_octet_string(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_UniversalString, NULL);
- break;
- case BER_UNI_TAG_IA5String:
- offset = dissect_ber_octet_string(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_IA5String, NULL);
- break;
- case BER_UNI_TAG_UTCTime:
- offset = dissect_ber_octet_string(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_UTCTime, NULL);
- break;
- case BER_UNI_TAG_NULL:
- proto_tree_add_text(tree, tvb, offset, len, "NULL tag");
- break;
- case BER_UNI_TAG_UTF8String:
- offset = dissect_ber_octet_string(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_UTF8String, NULL);
- break;
- case BER_UNI_TAG_GeneralizedTime:
- offset = dissect_ber_octet_string(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_GeneralizedTime, NULL);
- break;
- case BER_UNI_TAG_BOOLEAN:
- offset = dissect_ber_boolean(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_BOOLEAN, NULL);
- break;
- default:
- offset=dissect_ber_identifier(pinfo, tree, tvb, start_offset, &ber_class, &pc, &tag);
- offset=dissect_ber_length(pinfo, tree, tvb, offset, &len, NULL);
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "unknown_universal_tag", "BER Error: can not handle universal tag:%d",tag);
- expert_add_info_format(pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: can not handle universal");
- offset += len;
- }
- break;
- case BER_CLASS_APP:
- case BER_CLASS_CON:
- case BER_CLASS_PRI:
- default:
- /* we dissect again if show_internal_ber_fields is set */
- if(show_internal_ber_fields) {
- offset=dissect_ber_identifier(pinfo, tree, tvb, start_offset, &ber_class, &pc, &tag);
- offset=dissect_ber_length(pinfo, tree, tvb, offset, &len, NULL);
- }
-
- /* we can't dissect this directly as it is specific */
- pi = proto_tree_add_none_format(tree, hf_ber_unknown_BER_primitive, tvb, offset, len,
- "[%s %d] ", val_to_str(ber_class,ber_class_codes,"Unknown"), tag);
-
- is_decoded_as = FALSE;
- if (decode_primitive_as_ber && len >= 2) {
- volatile int ber_offset = 0;
- guint32 ber_len = 0;
- TRY {
- ber_offset = get_ber_identifier(tvb, offset, NULL, &pc, NULL);
- ber_offset = get_ber_length(tvb, ber_offset, &ber_len, NULL);
- } CATCH_ALL {
- }
- ENDTRY;
- if (pc && (ber_len > 0) && (ber_len + (ber_offset - offset) == len)) {
- /* Decoded a constructed ASN.1 tag with a length indicating this
- * could be BER encoded data. Try dissecting as unknown BER.
- */
- is_decoded_as = TRUE;
- proto_item_append_text (pi, "[BER encoded]");
- next_tree = proto_item_add_subtree(pi, ett_ber_primitive);
- offset = try_dissect_unknown_ber(pinfo, tvb, offset, next_tree, nest_level+1);
- }
- }
-
- if (!is_decoded_as && len) {
- /* we may want to do better and show the bytes */
- is_printable = TRUE;
- for(i=0;i<len;i++){
- c = tvb_get_guint8(tvb, offset+i);
-
- if(is_printable && !g_ascii_isprint(c))
- is_printable=FALSE;
-
- proto_item_append_text(pi,"%02x",c);
- }
-
- if(is_printable) { /* give a nicer representation if it looks like a string */
- proto_item_append_text(pi," (");
- for(i=0;i<len;i++){
- proto_item_append_text(pi,"%c",tvb_get_guint8(tvb, offset+i));
- }
- proto_item_append_text(pi,")");
- }
- offset += len;
- }
-
- break;
- }
- break;
-
- case TRUE: /* this is constructed */
-
- /* we dissect again if show_internal_ber_fields is set */
- if(show_internal_ber_fields) {
- offset=dissect_ber_identifier(pinfo, tree, tvb, start_offset, &ber_class, &pc, &tag);
- offset=dissect_ber_length(pinfo, tree, tvb, offset, &len, NULL);
- }
-
- hdr_len=offset-start_offset;
-
- switch(ber_class) {
- case BER_CLASS_UNI:
- item=proto_tree_add_text(tree, tvb, offset, len, "%s", val_to_str_ext(tag,&ber_uni_tag_codes_ext,"Unknown"));
- if(item){
- next_tree=proto_item_add_subtree(item, ett_ber_SEQUENCE);
- }
- while(offset < (int)(start_offset + len + hdr_len))
- offset=try_dissect_unknown_ber(pinfo, tvb, offset, next_tree, nest_level+1);
- break;
- case BER_CLASS_APP:
- case BER_CLASS_CON:
- case BER_CLASS_PRI:
- default:
- item=proto_tree_add_text(tree, tvb, offset, len, "[%s %d]", val_to_str(ber_class,ber_class_codes,"Unknown"), tag);
- if(item){
- next_tree=proto_item_add_subtree(item, ett_ber_SEQUENCE);
- }
- while(offset < (int)(start_offset + len + hdr_len))
- offset=try_dissect_unknown_ber(pinfo, tvb, offset, next_tree, nest_level+1);
- break;
-
- }
- break;
-
- }
-
- return offset;
+ switch(pc){
+
+ case FALSE: /* this is not constructed */
+
+ switch(ber_class) { /* we do care about the class */
+ case BER_CLASS_UNI: /* it a Universal tag - we can decode it */
+ switch(tag){
+ case BER_UNI_TAG_EOC:
+ /* XXX: shouldn't really get here */
+ break;
+ case BER_UNI_TAG_INTEGER:
+ offset = dissect_ber_integer(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_INTEGER, NULL);
+ break;
+ case BER_UNI_TAG_BITSTRING:
+ offset = dissect_ber_bitstring(FALSE, &asn1_ctx, tree, tvb, start_offset, NULL, hf_ber_unknown_BITSTRING, -1, NULL);
+ break;
+ case BER_UNI_TAG_ENUMERATED:
+ offset = dissect_ber_integer(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_ENUMERATED, NULL);
+ break;
+ case BER_UNI_TAG_GraphicString:
+ offset = dissect_ber_octet_string(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_GraphicString, NULL);
+ break;
+ case BER_UNI_TAG_OCTETSTRING:
+ is_decoded_as = FALSE;
+ if (decode_octetstring_as_ber && len >= 2) {
+ volatile int ber_offset = 0;
+ guint32 ber_len = 0;
+ TRY {
+ ber_offset = get_ber_identifier(tvb, offset, NULL, &pc, NULL);
+ ber_offset = get_ber_length(tvb, ber_offset, &ber_len, NULL);
+ } CATCH_ALL {
+ }
+ ENDTRY;
+ if (pc && (ber_len > 0) && (ber_len + (ber_offset - offset) == len)) {
+ /* Decoded a constructed ASN.1 tag with a length indicating this
+ * could be BER encoded data. Try dissecting as unknown BER.
+ */
+ is_decoded_as = TRUE;
+ if (show_internal_ber_fields) {
+ offset = dissect_ber_identifier(pinfo, tree, tvb, start_offset, NULL, NULL, NULL);
+ offset = dissect_ber_length(pinfo, tree, tvb, offset, NULL, NULL);
+ }
+ item = ber_proto_tree_add_item(pinfo, tree, hf_ber_unknown_BER_OCTETSTRING, tvb, offset, len, ENC_NA);
+ next_tree = proto_item_add_subtree(item, ett_ber_octet_string);
+ offset = try_dissect_unknown_ber(pinfo, tvb, offset, next_tree, nest_level+1);
+ }
+ }
+ if (!is_decoded_as) {
+ offset = dissect_ber_octet_string(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_OCTETSTRING, NULL);
+ }
+ break;
+ case BER_UNI_TAG_OID:
+ offset=dissect_ber_object_identifier_str(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_OID, NULL);
+ break;
+ case BER_UNI_TAG_NumericString:
+ offset = dissect_ber_octet_string(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_NumericString, NULL);
+ break;
+ case BER_UNI_TAG_PrintableString:
+ offset = dissect_ber_octet_string(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_PrintableString, NULL);
+ break;
+ case BER_UNI_TAG_TeletexString:
+ offset = dissect_ber_octet_string(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_TeletexString, NULL);
+ break;
+ case BER_UNI_TAG_VisibleString:
+ offset = dissect_ber_octet_string(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_VisibleString, NULL);
+ break;
+ case BER_UNI_TAG_GeneralString:
+ offset = dissect_ber_GeneralString(&asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_GeneralString, NULL, 0);
+ break;
+ case BER_UNI_TAG_BMPString:
+ offset = dissect_ber_octet_string(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_BMPString, NULL);
+ break;
+ case BER_UNI_TAG_UniversalString:
+ offset = dissect_ber_octet_string(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_UniversalString, NULL);
+ break;
+ case BER_UNI_TAG_IA5String:
+ offset = dissect_ber_octet_string(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_IA5String, NULL);
+ break;
+ case BER_UNI_TAG_UTCTime:
+ offset = dissect_ber_octet_string(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_UTCTime, NULL);
+ break;
+ case BER_UNI_TAG_NULL:
+ proto_tree_add_text(tree, tvb, offset, len, "NULL tag");
+ break;
+ case BER_UNI_TAG_UTF8String:
+ offset = dissect_ber_octet_string(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_UTF8String, NULL);
+ break;
+ case BER_UNI_TAG_GeneralizedTime:
+ offset = dissect_ber_octet_string(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_GeneralizedTime, NULL);
+ break;
+ case BER_UNI_TAG_BOOLEAN:
+ offset = dissect_ber_boolean(FALSE, &asn1_ctx, tree, tvb, start_offset, hf_ber_unknown_BOOLEAN, NULL);
+ break;
+ default:
+ offset=dissect_ber_identifier(pinfo, tree, tvb, start_offset, &ber_class, &pc, &tag);
+ offset=dissect_ber_length(pinfo, tree, tvb, offset, &len, NULL);
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "unknown_universal_tag", "BER Error: can not handle universal tag:%d",tag);
+ expert_add_info_format(pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: can not handle universal");
+ offset += len;
+ }
+ break;
+ case BER_CLASS_APP:
+ case BER_CLASS_CON:
+ case BER_CLASS_PRI:
+ default:
+ /* we dissect again if show_internal_ber_fields is set */
+ if(show_internal_ber_fields) {
+ offset=dissect_ber_identifier(pinfo, tree, tvb, start_offset, &ber_class, &pc, &tag);
+ offset=dissect_ber_length(pinfo, tree, tvb, offset, &len, NULL);
+ }
+
+ /* we can't dissect this directly as it is specific */
+ pi = proto_tree_add_none_format(tree, hf_ber_unknown_BER_primitive, tvb, offset, len,
+ "[%s %d] ", val_to_str(ber_class,ber_class_codes,"Unknown"), tag);
+
+ is_decoded_as = FALSE;
+ if (decode_primitive_as_ber && len >= 2) {
+ volatile int ber_offset = 0;
+ guint32 ber_len = 0;
+ TRY {
+ ber_offset = get_ber_identifier(tvb, offset, NULL, &pc, NULL);
+ ber_offset = get_ber_length(tvb, ber_offset, &ber_len, NULL);
+ } CATCH_ALL {
+ }
+ ENDTRY;
+ if (pc && (ber_len > 0) && (ber_len + (ber_offset - offset) == len)) {
+ /* Decoded a constructed ASN.1 tag with a length indicating this
+ * could be BER encoded data. Try dissecting as unknown BER.
+ */
+ is_decoded_as = TRUE;
+ proto_item_append_text (pi, "[BER encoded]");
+ next_tree = proto_item_add_subtree(pi, ett_ber_primitive);
+ offset = try_dissect_unknown_ber(pinfo, tvb, offset, next_tree, nest_level+1);
+ }
+ }
+
+ if (!is_decoded_as && len) {
+ /* we may want to do better and show the bytes */
+ is_printable = TRUE;
+ for(i=0;i<len;i++){
+ c = tvb_get_guint8(tvb, offset+i);
+
+ if(is_printable && !g_ascii_isprint(c))
+ is_printable=FALSE;
+
+ proto_item_append_text(pi,"%02x",c);
+ }
+
+ if(is_printable) { /* give a nicer representation if it looks like a string */
+ proto_item_append_text(pi," (");
+ for(i=0;i<len;i++){
+ proto_item_append_text(pi,"%c",tvb_get_guint8(tvb, offset+i));
+ }
+ proto_item_append_text(pi,")");
+ }
+ offset += len;
+ }
+
+ break;
+ }
+ break;
+
+ case TRUE: /* this is constructed */
+
+ /* we dissect again if show_internal_ber_fields is set */
+ if(show_internal_ber_fields) {
+ offset=dissect_ber_identifier(pinfo, tree, tvb, start_offset, &ber_class, &pc, &tag);
+ offset=dissect_ber_length(pinfo, tree, tvb, offset, &len, NULL);
+ }
+
+ hdr_len=offset-start_offset;
+
+ switch(ber_class) {
+ case BER_CLASS_UNI:
+ item=proto_tree_add_text(tree, tvb, offset, len, "%s", val_to_str_ext(tag,&ber_uni_tag_codes_ext,"Unknown"));
+ if(item){
+ next_tree=proto_item_add_subtree(item, ett_ber_SEQUENCE);
+ }
+ while(offset < (int)(start_offset + len + hdr_len))
+ offset=try_dissect_unknown_ber(pinfo, tvb, offset, next_tree, nest_level+1);
+ break;
+ case BER_CLASS_APP:
+ case BER_CLASS_CON:
+ case BER_CLASS_PRI:
+ default:
+ item=proto_tree_add_text(tree, tvb, offset, len, "[%s %d]", val_to_str(ber_class,ber_class_codes,"Unknown"), tag);
+ if(item){
+ next_tree=proto_item_add_subtree(item, ett_ber_SEQUENCE);
+ }
+ while(offset < (int)(start_offset + len + hdr_len))
+ offset=try_dissect_unknown_ber(pinfo, tvb, offset, next_tree, nest_level+1);
+ break;
+
+ }
+ break;
+
+ }
+
+ return offset;
}
int
dissect_unknown_ber(packet_info *pinfo, tvbuff_t *tvb, int offset, proto_tree *tree)
{
- return try_dissect_unknown_ber(pinfo, tvb, offset, tree, 1);
+ return try_dissect_unknown_ber(pinfo, tvb, offset, tree, 1);
}
int
call_ber_oid_callback(const char *oid, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
{
- tvbuff_t *next_tvb;
- const char *syntax = NULL;
-
- if (!tvb) {
- return offset;
- }
-
- next_tvb = tvb_new_subset_remaining(tvb, offset);
- if(oid == NULL ||
- ((((syntax = get_ber_oid_syntax(oid)) == NULL) ||
- /* First see if a syntax has been registered for this oid (user defined) */
- !dissector_try_string(ber_syntax_dissector_table, syntax, next_tvb, pinfo, tree)) &&
- /* Then try registered oid's */
- (!dissector_try_string(ber_oid_dissector_table, oid, next_tvb, pinfo, tree)))) {
- proto_item *item=NULL;
- proto_tree *next_tree=NULL;
- gint length_remaining;
-
- length_remaining = tvb_length_remaining(tvb, offset);
-
- if (oid == NULL) {
- item=proto_tree_add_none_format(tree, hf_ber_no_oid, next_tvb, 0, length_remaining, "BER: No OID supplied to call_ber_oid_callback");
- expert_add_info_format(pinfo, item, PI_MALFORMED, PI_WARN, "BER Error: No OID supplied");
- } else if (tvb_get_ntohs (tvb, offset) != 0x0500) { /* Not NULL tag */
- if(syntax)
- item=proto_tree_add_none_format(tree, hf_ber_syntax_not_implemented, next_tvb, 0, length_remaining, "BER: Dissector for syntax:%s not implemented. Contact Wireshark developers if you want this supported", syntax);
- else
- item=proto_tree_add_none_format(tree, hf_ber_oid_not_implemented, next_tvb, 0, length_remaining, "BER: Dissector for OID:%s not implemented. Contact Wireshark developers if you want this supported", oid);
- expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, "BER: Dissector for OID %s not implemented", oid);
- } else {
- next_tree=tree;
- }
- if (decode_unexpected) {
- int ber_offset;
- gint32 ber_len;
-
- if(item){
- next_tree=proto_item_add_subtree(item, ett_ber_unknown);
- }
- ber_offset = get_ber_identifier(next_tvb, 0, NULL, NULL, NULL);
- ber_offset = get_ber_length(next_tvb, ber_offset, &ber_len, NULL);
- if ((ber_len + ber_offset) == length_remaining) {
- /* Decoded an ASN.1 tag with a length indicating this
- * could be BER encoded data. Try dissecting as unknown BER.
- */
- dissect_unknown_ber(pinfo, next_tvb, 0, next_tree);
- } else {
- proto_tree_add_text(next_tree, next_tvb, 0, length_remaining,
- "Unknown Data (%d byte%s)", length_remaining,
- plurality(length_remaining, "", "s"));
- }
- }
-
- }
-
- /*XXX until we change the #.REGISTER signature for _PDU()s
- * into new_dissector_t we have to do this kludge with
- * manually step past the content in the ANY type.
- */
- offset+=tvb_length_remaining(tvb, offset);
-
- return offset;
+ tvbuff_t *next_tvb;
+ const char *syntax = NULL;
+
+ if (!tvb) {
+ return offset;
+ }
+
+ next_tvb = tvb_new_subset_remaining(tvb, offset);
+ if(oid == NULL ||
+ ((((syntax = get_ber_oid_syntax(oid)) == NULL) ||
+ /* First see if a syntax has been registered for this oid (user defined) */
+ !dissector_try_string(ber_syntax_dissector_table, syntax, next_tvb, pinfo, tree)) &&
+ /* Then try registered oid's */
+ (!dissector_try_string(ber_oid_dissector_table, oid, next_tvb, pinfo, tree)))) {
+ proto_item *item=NULL;
+ proto_tree *next_tree=NULL;
+ gint length_remaining;
+
+ length_remaining = tvb_length_remaining(tvb, offset);
+
+ if (oid == NULL) {
+ item=proto_tree_add_none_format(tree, hf_ber_no_oid, next_tvb, 0, length_remaining, "BER: No OID supplied to call_ber_oid_callback");
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_WARN, "BER Error: No OID supplied");
+ } else if (tvb_get_ntohs (tvb, offset) != 0x0500) { /* Not NULL tag */
+ if(syntax)
+ item=proto_tree_add_none_format(tree, hf_ber_syntax_not_implemented, next_tvb, 0, length_remaining, "BER: Dissector for syntax:%s not implemented. Contact Wireshark developers if you want this supported", syntax);
+ else
+ item=proto_tree_add_none_format(tree, hf_ber_oid_not_implemented, next_tvb, 0, length_remaining, "BER: Dissector for OID:%s not implemented. Contact Wireshark developers if you want this supported", oid);
+ expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, "BER: Dissector for OID %s not implemented", oid);
+ } else {
+ next_tree=tree;
+ }
+ if (decode_unexpected) {
+ int ber_offset;
+ gint32 ber_len;
+
+ if(item){
+ next_tree=proto_item_add_subtree(item, ett_ber_unknown);
+ }
+ ber_offset = get_ber_identifier(next_tvb, 0, NULL, NULL, NULL);
+ ber_offset = get_ber_length(next_tvb, ber_offset, &ber_len, NULL);
+ if ((ber_len + ber_offset) == length_remaining) {
+ /* Decoded an ASN.1 tag with a length indicating this
+ * could be BER encoded data. Try dissecting as unknown BER.
+ */
+ dissect_unknown_ber(pinfo, next_tvb, 0, next_tree);
+ } else {
+ proto_tree_add_text(next_tree, next_tvb, 0, length_remaining,
+ "Unknown Data (%d byte%s)", length_remaining,
+ plurality(length_remaining, "", "s"));
+ }
+ }
+
+ }
+
+ /*XXX until we change the #.REGISTER signature for _PDU()s
+ * into new_dissector_t we have to do this kludge with
+ * manually step past the content in the ANY type.
+ */
+ offset+=tvb_length_remaining(tvb, offset);
+
+ return offset;
}
static int
call_ber_syntax_callback(const char *syntax, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
{
- tvbuff_t *next_tvb;
-
- next_tvb = tvb_new_subset_remaining(tvb, offset);
- if(syntax == NULL ||
- !dissector_try_string(ber_syntax_dissector_table, syntax, next_tvb, pinfo, tree)){
- proto_item *item=NULL;
- proto_tree *next_tree=NULL;
-
- if (syntax == NULL)
- item=proto_tree_add_none_format(tree, hf_ber_no_syntax, next_tvb, 0, tvb_length_remaining(tvb, offset), "BER: No syntax supplied to call_ber_syntax_callback");
- else
- item=proto_tree_add_none_format(tree, hf_ber_syntax_not_implemented, next_tvb, 0, tvb_length_remaining(tvb, offset), "BER: Dissector for syntax: %s not implemented. Contact Wireshark developers if you want this supported", syntax);
- if(item){
- next_tree=proto_item_add_subtree(item, ett_ber_unknown);
- }
- dissect_unknown_ber(pinfo, next_tvb, 0, next_tree);
- }
+ tvbuff_t *next_tvb;
+
+ next_tvb = tvb_new_subset_remaining(tvb, offset);
+ if(syntax == NULL ||
+ !dissector_try_string(ber_syntax_dissector_table, syntax, next_tvb, pinfo, tree)){
+ proto_item *item=NULL;
+ proto_tree *next_tree=NULL;
+
+ if (syntax == NULL)
+ item=proto_tree_add_none_format(tree, hf_ber_no_syntax, next_tvb, 0, tvb_length_remaining(tvb, offset), "BER: No syntax supplied to call_ber_syntax_callback");
+ else
+ item=proto_tree_add_none_format(tree, hf_ber_syntax_not_implemented, next_tvb, 0, tvb_length_remaining(tvb, offset), "BER: Dissector for syntax: %s not implemented. Contact Wireshark developers if you want this supported", syntax);
+ if(item){
+ next_tree=proto_item_add_subtree(item, ett_ber_unknown);
+ }
+ dissect_unknown_ber(pinfo, next_tvb, 0, next_tree);
+ }
- /*XXX until we change the #.REGISTER signature for _PDU()s
- * into new_dissector_t we have to do this kludge with
- * manually step past the content in the ANY type.
- */
- offset+=tvb_length_remaining(tvb, offset);
+ /*XXX until we change the #.REGISTER signature for _PDU()s
+ * into new_dissector_t we have to do this kludge with
+ * manually step past the content in the ANY type.
+ */
+ offset+=tvb_length_remaining(tvb, offset);
- return offset;
+ return offset;
}
@@ -1024,98 +1025,99 @@ call_ber_syntax_callback(const char *syntax, tvbuff_t *tvb, int offset, packet_i
/* 8.1.2 Identifier octets */
int get_ber_identifier(tvbuff_t *tvb, int offset, gint8 *ber_class, gboolean *pc, gint32 *tag) {
- guint8 id, t;
- gint8 tmp_class;
- gboolean tmp_pc;
- gint32 tmp_tag;
+ guint8 id, t;
+ gint8 tmp_class;
+ gboolean tmp_pc;
+ gint32 tmp_tag;
- id = tvb_get_guint8(tvb, offset);
- offset += 1;
+ id = tvb_get_guint8(tvb, offset);
+ offset += 1;
#ifdef DEBUG_BER
printf ("BER ID=%02x", id);
#endif
- /* 8.1.2.2 */
- tmp_class = (id>>6) & 0x03;
- tmp_pc = (id>>5) & 0x01;
- tmp_tag = id&0x1F;
- /* 8.1.2.4 */
- if (tmp_tag == 0x1F) {
- tmp_tag = 0;
- while (tvb_length_remaining(tvb, offset) > 0) {
- t = tvb_get_guint8(tvb, offset);
+ /* 8.1.2.2 */
+ tmp_class = (id>>6) & 0x03;
+ tmp_pc = (id>>5) & 0x01;
+ tmp_tag = id&0x1F;
+ /* 8.1.2.4 */
+ if (tmp_tag == 0x1F) {
+ tmp_tag = 0;
+ while (tvb_length_remaining(tvb, offset) > 0) {
+ t = tvb_get_guint8(tvb, offset);
#ifdef DEBUG_BER
printf (" %02x", t);
#endif
- offset += 1;
- tmp_tag <<= 7;
- tmp_tag |= t & 0x7F;
- if (!(t & 0x80)) break;
- }
- }
+ offset += 1;
+ tmp_tag <<= 7;
+ tmp_tag |= t & 0x7F;
+ if (!(t & 0x80))
+ break;
+ }
+ }
#ifdef DEBUG_BER
printf ("\n");
#endif
- if (ber_class)
- *ber_class = tmp_class;
- if (pc)
- *pc = tmp_pc;
- if (tag)
- *tag = tmp_tag;
+ if (ber_class)
+ *ber_class = tmp_class;
+ if (pc)
+ *pc = tmp_pc;
+ if (tag)
+ *tag = tmp_tag;
- last_class = tmp_class;
- last_pc = tmp_pc;
- last_tag = tmp_tag;
+ last_class = tmp_class;
+ last_pc = tmp_pc;
+ last_tag = tmp_tag;
- return offset;
+ return offset;
}
static void get_last_ber_identifier(gint8 *ber_class, gboolean *pc, gint32 *tag)
{
- if (ber_class)
- *ber_class = last_class;
- if (pc)
- *pc = last_pc;
- if (tag)
- *tag = last_tag;
+ if (ber_class)
+ *ber_class = last_class;
+ if (pc)
+ *pc = last_pc;
+ if (tag)
+ *tag = last_tag;
}
int dissect_ber_identifier(packet_info *pinfo _U_, proto_tree *tree, tvbuff_t *tvb, int offset, gint8 *ber_class, gboolean *pc, gint32 *tag)
{
- int old_offset = offset;
- gint8 tmp_class;
- gboolean tmp_pc;
- gint32 tmp_tag;
-
- offset = get_ber_identifier(tvb, offset, &tmp_class, &tmp_pc, &tmp_tag);
-
- if(show_internal_ber_fields){
- proto_tree_add_uint(tree, hf_ber_id_class, tvb, old_offset, 1, tmp_class<<6);
- proto_tree_add_boolean(tree, hf_ber_id_pc, tvb, old_offset, 1, (tmp_pc)?0x20:0x00);
- if(tmp_tag>0x1F){
- if(tmp_class==BER_CLASS_UNI){
- proto_tree_add_uint(tree, hf_ber_id_uni_tag_ext, tvb, old_offset + 1, offset - (old_offset + 1), tmp_tag);
- } else {
- proto_tree_add_uint(tree, hf_ber_id_tag_ext, tvb, old_offset + 1, offset - (old_offset + 1), tmp_tag);
- }
- } else {
- if(tmp_class==BER_CLASS_UNI){
- proto_tree_add_uint(tree, hf_ber_id_uni_tag, tvb, old_offset, 1, tmp_tag);
- } else {
- proto_tree_add_uint(tree, hf_ber_id_tag, tvb, old_offset, 1, tmp_tag);
- }
- }
- }
-
- if(ber_class)
- *ber_class = tmp_class;
- if(pc)
- *pc = tmp_pc;
- if(tag)
- *tag = tmp_tag;
-
- return offset;
+ int old_offset = offset;
+ gint8 tmp_class;
+ gboolean tmp_pc;
+ gint32 tmp_tag;
+
+ offset = get_ber_identifier(tvb, offset, &tmp_class, &tmp_pc, &tmp_tag);
+
+ if(show_internal_ber_fields){
+ proto_tree_add_uint(tree, hf_ber_id_class, tvb, old_offset, 1, tmp_class<<6);
+ proto_tree_add_boolean(tree, hf_ber_id_pc, tvb, old_offset, 1, (tmp_pc)?0x20:0x00);
+ if(tmp_tag>0x1F){
+ if(tmp_class==BER_CLASS_UNI){
+ proto_tree_add_uint(tree, hf_ber_id_uni_tag_ext, tvb, old_offset + 1, offset - (old_offset + 1), tmp_tag);
+ } else {
+ proto_tree_add_uint(tree, hf_ber_id_tag_ext, tvb, old_offset + 1, offset - (old_offset + 1), tmp_tag);
+ }
+ } else {
+ if(tmp_class==BER_CLASS_UNI){
+ proto_tree_add_uint(tree, hf_ber_id_uni_tag, tvb, old_offset, 1, tmp_tag);
+ } else {
+ proto_tree_add_uint(tree, hf_ber_id_tag, tvb, old_offset, 1, tmp_tag);
+ }
+ }
+ }
+
+ if(ber_class)
+ *ber_class = tmp_class;
+ if(pc)
+ *pc = tmp_pc;
+ if(tag)
+ *tag = tmp_tag;
+
+ return offset;
}
/** Try to get the length octets of the BER TLV.
@@ -1128,85 +1130,85 @@ int dissect_ber_identifier(packet_info *pinfo _U_, proto_tree *tree, tvbuff_t *t
static int
try_get_ber_length(tvbuff_t *tvb, int offset, guint32 *length, gboolean *ind, gint nest_level) {
- guint8 oct, len;
- guint32 indef_len;
- guint32 tmp_length;
- gboolean tmp_ind;
- int tmp_offset,s_offset;
- gint8 tclass;
- gboolean tpc;
- gint32 ttag;
- tmp_length = 0;
- tmp_ind = FALSE;
-
- if (nest_level > BER_MAX_NESTING) {
- /* Assume that we have a malformed packet. */
- THROW(ReportedBoundsError);
- }
-
- oct = tvb_get_guint8(tvb, offset);
- offset += 1;
-
- if(!(oct&0x80)) {
- /* 8.1.3.4 */
- tmp_length = oct;
- } else {
- len = oct & 0x7F;
- if(len) {
- /* 8.1.3.5 */
- while (len--) {
- oct = tvb_get_guint8(tvb, offset);
- offset++;
- tmp_length = (tmp_length<<8) + oct;
- }
- } else {
- /* 8.1.3.6 */
-
- tmp_offset = offset;
- /* ok in here we can traverse the BER to find the length, this will fix most indefinite length issues */
- /* Assumption here is that indefinite length is always used on constructed types*/
- /* check for EOC */
- while (tvb_get_guint8(tvb, offset) || tvb_get_guint8(tvb, offset+1)) {
- /* not an EOC at offset */
- s_offset=offset;
- offset= get_ber_identifier(tvb, offset, &tclass, &tpc, &ttag);
- offset= try_get_ber_length(tvb,offset, &indef_len, NULL, nest_level+1);
- tmp_length += indef_len+(offset-s_offset); /* length + tag and length */
- offset += indef_len;
+ guint8 oct, len;
+ guint32 indef_len;
+ guint32 tmp_length;
+ gboolean tmp_ind;
+ int tmp_offset,s_offset;
+ gint8 tclass;
+ gboolean tpc;
+ gint32 ttag;
+ tmp_length = 0;
+ tmp_ind = FALSE;
+
+ if (nest_level > BER_MAX_NESTING) {
+ /* Assume that we have a malformed packet. */
+ THROW(ReportedBoundsError);
+ }
+
+ oct = tvb_get_guint8(tvb, offset);
+ offset += 1;
+
+ if(!(oct&0x80)) {
+ /* 8.1.3.4 */
+ tmp_length = oct;
+ } else {
+ len = oct & 0x7F;
+ if(len) {
+ /* 8.1.3.5 */
+ while (len--) {
+ oct = tvb_get_guint8(tvb, offset);
+ offset++;
+ tmp_length = (tmp_length<<8) + oct;
+ }
+ } else {
+ /* 8.1.3.6 */
+
+ tmp_offset = offset;
+ /* ok in here we can traverse the BER to find the length, this will fix most indefinite length issues */
+ /* Assumption here is that indefinite length is always used on constructed types*/
+ /* check for EOC */
+ while (tvb_get_guint8(tvb, offset) || tvb_get_guint8(tvb, offset+1)) {
+ /* not an EOC at offset */
+ s_offset=offset;
+ offset= get_ber_identifier(tvb, offset, &tclass, &tpc, &ttag);
+ offset= try_get_ber_length(tvb,offset, &indef_len, NULL, nest_level+1);
+ tmp_length += indef_len+(offset-s_offset); /* length + tag and length */
+ offset += indef_len;
/* Make sure we've moved forward in the packet */
- if (offset <= s_offset)
- THROW(ReportedBoundsError);
- }
- tmp_length += 2;
- tmp_ind = TRUE;
- offset = tmp_offset;
- }
- }
-
- if (length)
- *length = tmp_length;
- if (ind)
- *ind = tmp_ind;
+ if (offset <= s_offset)
+ THROW(ReportedBoundsError);
+ }
+ tmp_length += 2;
+ tmp_ind = TRUE;
+ offset = tmp_offset;
+ }
+ }
+
+ if (length)
+ *length = tmp_length;
+ if (ind)
+ *ind = tmp_ind;
#ifdef DEBUG_BER
printf("get BER length %d, offset %d (remaining %d)\n", tmp_length, offset, tvb_length_remaining(tvb, offset));
#endif
- return offset;
+ return offset;
}
int
get_ber_length(tvbuff_t *tvb, int offset, guint32 *length, gboolean *ind)
{
- return try_get_ber_length(tvb, offset, length, ind, 1);
+ return try_get_ber_length(tvb, offset, length, ind, 1);
}
static void get_last_ber_length(guint32 *length, gboolean *ind)
{
- if (length)
- *length = last_length;
- if (ind)
- *ind = last_ind;
+ if (length)
+ *length = last_length;
+ if (ind)
+ *ind = last_ind;
}
/* this function dissects the length octets of the BER TLV.
@@ -1215,152 +1217,152 @@ static void get_last_ber_length(guint32 *length, gboolean *ind)
int
dissect_ber_length(packet_info *pinfo _U_, proto_tree *tree, tvbuff_t *tvb, int offset, guint32 *length, gboolean *ind)
{
- int old_offset = offset;
- guint32 tmp_length;
- gboolean tmp_ind;
-
- offset = get_ber_length(tvb, offset, &tmp_length, &tmp_ind);
-
- if(show_internal_ber_fields){
- if(tmp_ind){
- proto_tree_add_text(tree, tvb, old_offset, 1, "Length: Indefinite length %d", tmp_length);
- } else {
- proto_tree_add_uint(tree, hf_ber_length, tvb, old_offset, offset - old_offset, tmp_length);
- }
- }
- if(length)
- *length = tmp_length;
- if(ind)
- *ind = tmp_ind;
+ int old_offset = offset;
+ guint32 tmp_length;
+ gboolean tmp_ind;
+
+ offset = get_ber_length(tvb, offset, &tmp_length, &tmp_ind);
+
+ if(show_internal_ber_fields){
+ if(tmp_ind){
+ proto_tree_add_text(tree, tvb, old_offset, 1, "Length: Indefinite length %d", tmp_length);
+ } else {
+ proto_tree_add_uint(tree, hf_ber_length, tvb, old_offset, offset - old_offset, tmp_length);
+ }
+ }
+ if(length)
+ *length = tmp_length;
+ if(ind)
+ *ind = tmp_ind;
#ifdef DEBUG_BER
printf("dissect BER length %d, offset %d (remaining %d)\n", tmp_length, offset, tvb_length_remaining(tvb, offset));
#endif
- last_length = tmp_length;
- last_ind = tmp_ind;
+ last_length = tmp_length;
+ last_ind = tmp_ind;
- return offset;
+ return offset;
}
static GHashTable *octet_segment_table = NULL;
static GHashTable *octet_reassembled_table = NULL;
static void ber_defragment_init(void) {
- fragment_table_init(&octet_segment_table);
- reassembled_table_init(&octet_reassembled_table);
+ fragment_table_init(&octet_segment_table);
+ reassembled_table_init(&octet_reassembled_table);
}
static int
reassemble_octet_string(asn1_ctx_t *actx, proto_tree *tree, gint hf_id, tvbuff_t *tvb, int offset, guint32 con_len, gboolean ind, tvbuff_t **out_tvb)
{
- fragment_data *fd_head = NULL;
- tvbuff_t *next_tvb = NULL;
- tvbuff_t *reassembled_tvb = NULL;
- guint16 dst_ref = 0;
- int start_offset = offset;
- gboolean fragment = TRUE;
- gboolean firstFragment = TRUE;
+ fragment_data *fd_head = NULL;
+ tvbuff_t *next_tvb = NULL;
+ tvbuff_t *reassembled_tvb = NULL;
+ guint16 dst_ref = 0;
+ int start_offset = offset;
+ gboolean fragment = TRUE;
+ gboolean firstFragment = TRUE;
- /* so we need to consume octet strings for the given length */
+ /* so we need to consume octet strings for the given length */
- if(out_tvb)
- *out_tvb=NULL;
+ if(out_tvb)
+ *out_tvb=NULL;
- if (con_len == 0) /* Zero encodings (8.7.3) */
- return offset;
+ if (con_len == 0) /* Zero encodings (8.7.3) */
+ return offset;
- /* not sure we need this */
- actx->pinfo->fragmented = TRUE;
+ /* not sure we need this */
+ actx->pinfo->fragmented = TRUE;
- while(!fd_head) {
+ while(!fd_head) {
- offset = dissect_ber_octet_string(FALSE, actx, NULL, tvb, offset, hf_id, &next_tvb);
+ offset = dissect_ber_octet_string(FALSE, actx, NULL, tvb, offset, hf_id, &next_tvb);
- if (next_tvb == NULL) {
- /* Assume that we have a malformed packet. */
- THROW(ReportedBoundsError);
- }
+ if (next_tvb == NULL) {
+ /* Assume that we have a malformed packet. */
+ THROW(ReportedBoundsError);
+ }
- if(ind) {
- /* this was indefinite length - so check for EOC */
+ if(ind) {
+ /* this was indefinite length - so check for EOC */
- if((tvb_get_guint8(tvb, offset)==0)&&(tvb_get_guint8(tvb, offset+1)==0)) {
- fragment = FALSE;
- /* skip past EOC */
- offset +=2;
- }
- } else {
+ if((tvb_get_guint8(tvb, offset)==0)&&(tvb_get_guint8(tvb, offset+1)==0)) {
+ fragment = FALSE;
+ /* skip past EOC */
+ offset +=2;
+ }
+ } else {
- if((guint32)(offset - start_offset) >= con_len)
- fragment = FALSE;
- }
+ if((guint32)(offset - start_offset) >= con_len)
+ fragment = FALSE;
+ }
- if(!fragment && firstFragment) {
- /* there is only one fragment (I'm sure there's a reason it was constructed) */
- /* anyway, we can get out of here */
- gboolean pc;
- get_ber_identifier(tvb, start_offset, NULL, &pc, NULL);
- if (!pc && tree) {
- /* Only display here if not constructed */
- dissect_ber_octet_string(FALSE, actx, tree, tvb, start_offset, hf_id, NULL);
- }
- reassembled_tvb = next_tvb;
- break;
- }
+ if(!fragment && firstFragment) {
+ /* there is only one fragment (I'm sure there's a reason it was constructed) */
+ /* anyway, we can get out of here */
+ gboolean pc;
+ get_ber_identifier(tvb, start_offset, NULL, &pc, NULL);
+ if (!pc && tree) {
+ /* Only display here if not constructed */
+ dissect_ber_octet_string(FALSE, actx, tree, tvb, start_offset, hf_id, NULL);
+ }
+ reassembled_tvb = next_tvb;
+ break;
+ }
- if (tvb_length(next_tvb) < 1) {
- /* Don't cause an assertion in the reassembly code. */
- THROW(ReportedBoundsError);
- }
- fd_head = fragment_add_seq_next(next_tvb, 0, actx->pinfo, dst_ref,
- octet_segment_table,
- octet_reassembled_table,
- tvb_length(next_tvb),
- fragment);
+ if (tvb_length(next_tvb) < 1) {
+ /* Don't cause an assertion in the reassembly code. */
+ THROW(ReportedBoundsError);
+ }
+ fd_head = fragment_add_seq_next(next_tvb, 0, actx->pinfo, dst_ref,
+ octet_segment_table,
+ octet_reassembled_table,
+ tvb_length(next_tvb),
+ fragment);
- firstFragment = FALSE;
- }
+ firstFragment = FALSE;
+ }
- if(fd_head) {
- if(fd_head->next) {
- /* not sure I really want to do this here - should be nearer the application where we can give it a better name*/
- proto_tree *next_tree;
- proto_item *frag_tree_item;
+ if(fd_head) {
+ if(fd_head->next) {
+ /* not sure I really want to do this here - should be nearer the application where we can give it a better name*/
+ proto_tree *next_tree;
+ proto_item *frag_tree_item;
- reassembled_tvb = tvb_new_child_real_data(next_tvb, fd_head->data, fd_head->len, fd_head->len);
+ reassembled_tvb = tvb_new_child_real_data(next_tvb, fd_head->data, fd_head->len, fd_head->len);
- actx->created_item = proto_tree_add_item(tree, hf_id, reassembled_tvb, 0, -1, ENC_BIG_ENDIAN);
- next_tree = proto_item_add_subtree (actx->created_item, ett_ber_reassembled_octet_string);
+ actx->created_item = proto_tree_add_item(tree, hf_id, reassembled_tvb, 0, -1, ENC_BIG_ENDIAN);
+ next_tree = proto_item_add_subtree (actx->created_item, ett_ber_reassembled_octet_string);
- add_new_data_source(actx->pinfo, reassembled_tvb, "Reassembled OCTET STRING");
- show_fragment_seq_tree(fd_head, &octet_string_frag_items, next_tree, actx->pinfo, reassembled_tvb, &frag_tree_item);
+ add_new_data_source(actx->pinfo, reassembled_tvb, "Reassembled OCTET STRING");
+ show_fragment_seq_tree(fd_head, &octet_string_frag_items, next_tree, actx->pinfo, reassembled_tvb, &frag_tree_item);
+ }
}
- }
- if(out_tvb)
- *out_tvb = reassembled_tvb;
+ if(out_tvb)
+ *out_tvb = reassembled_tvb;
- /* again - not sure we need this */
- actx->pinfo->fragmented = FALSE;
+ /* again - not sure we need this */
+ actx->pinfo->fragmented = FALSE;
- return offset;
+ return offset;
}
/* 8.7 Encoding of an octetstring value */
int
dissect_ber_constrained_octet_string(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint32 min_len, gint32 max_len, gint hf_id, tvbuff_t **out_tvb) {
- gint8 ber_class;
- gboolean pc, ind;
- gint32 tag;
- guint32 len;
- int hoffset;
- int end_offset;
- proto_item *it, *cause;
- guint32 i;
- guint32 len_remain;
+ gint8 ber_class;
+ gboolean pc, ind;
+ gint32 tag;
+ guint32 len;
+ int hoffset;
+ int end_offset;
+ proto_item *it, *cause;
+ guint32 i;
+ guint32 len_remain;
#ifdef DEBUG_BER
{
@@ -1380,97 +1382,97 @@ printf("OCTET STRING dissect_ber_octet_string(%s) entered\n",name);
}
#endif
- if(out_tvb)
- *out_tvb=NULL;
-
- if (!implicit_tag) {
- hoffset = offset;
- /* read header and len for the octet string */
- offset=dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
- offset=dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, &ind);
- end_offset=offset+len;
-
- /* sanity check: we only handle Constructed Universal Sequences */
- if ((ber_class!=BER_CLASS_APP)&&(ber_class!=BER_CLASS_PRI))
-
- if( (ber_class!=BER_CLASS_UNI)
- ||((tag<BER_UNI_TAG_NumericString)&&(tag!=BER_UNI_TAG_OCTETSTRING)&&(tag!=BER_UNI_TAG_UTF8String)) ){
- tvb_ensure_bytes_exist(tvb, hoffset, 2);
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "octetstring_expected", "BER Error: OctetString expected but class:%s(%d) %s tag:%d was unexpected", val_to_str(ber_class,ber_class_codes,"Unknown"), ber_class, pc ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tag);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: OctetString expected");
- if (decode_unexpected) {
- proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
- dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
- }
- return end_offset;
- }
- } else {
- /* implicit tag so get from last tag/length */
-
- get_last_ber_identifier(&ber_class, &pc, &tag);
- get_last_ber_length(&len, &ind);
-
- end_offset=offset+len;
-
- /* caller may have created new buffer for indefinite length data Verify via length */
- len_remain = (guint32)tvb_length_remaining(tvb, offset);
- if((ind) && (len_remain == len - 2)) {
- /* new buffer received so adjust length and indefinite flag */
- len -=2;
- end_offset -= 2;
- ind = FALSE;
- } else if (len_remain < len) {
- /*
- * error - short frame, or this item runs past the
- * end of the item containing it
- */
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "illegal_length", "BER Error: length:%u longer than tvb_length_remaining:%d", len, len_remain);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error length");
- return end_offset;
- }
-
- }
-
- actx->created_item = NULL;
-
- if (pc) {
- /* constructed */
- end_offset = reassemble_octet_string(actx, tree, hf_id, tvb, offset, len, ind, out_tvb);
- } else {
- /* primitive */
- gint length_remaining;
-
- length_remaining = tvb_length_remaining(tvb, offset);
+ if(out_tvb)
+ *out_tvb=NULL;
+
+ if (!implicit_tag) {
+ hoffset = offset;
+ /* read header and len for the octet string */
+ offset=dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
+ offset=dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, &ind);
+ end_offset=offset+len;
+
+ /* sanity check: we only handle Constructed Universal Sequences */
+ if ((ber_class!=BER_CLASS_APP)&&(ber_class!=BER_CLASS_PRI))
+
+ if( (ber_class!=BER_CLASS_UNI)
+ ||((tag<BER_UNI_TAG_NumericString)&&(tag!=BER_UNI_TAG_OCTETSTRING)&&(tag!=BER_UNI_TAG_UTF8String)) ){
+ tvb_ensure_bytes_exist(tvb, hoffset, 2);
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "octetstring_expected", "BER Error: OctetString expected but class:%s(%d) %s tag:%d was unexpected", val_to_str(ber_class,ber_class_codes,"Unknown"), ber_class, pc ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tag);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: OctetString expected");
+ if (decode_unexpected) {
+ proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
+ dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
+ }
+ return end_offset;
+ }
+ } else {
+ /* implicit tag so get from last tag/length */
+
+ get_last_ber_identifier(&ber_class, &pc, &tag);
+ get_last_ber_length(&len, &ind);
+
+ end_offset=offset+len;
+
+ /* caller may have created new buffer for indefinite length data Verify via length */
+ len_remain = (guint32)tvb_length_remaining(tvb, offset);
+ if((ind) && (len_remain == len - 2)) {
+ /* new buffer received so adjust length and indefinite flag */
+ len -=2;
+ end_offset -= 2;
+ ind = FALSE;
+ } else if (len_remain < len) {
+ /*
+ * error - short frame, or this item runs past the
+ * end of the item containing it
+ */
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "illegal_length", "BER Error: length:%u longer than tvb_length_remaining:%d", len, len_remain);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error length");
+ return end_offset;
+ }
+
+ }
+
+ actx->created_item = NULL;
+
+ if (pc) {
+ /* constructed */
+ end_offset = reassemble_octet_string(actx, tree, hf_id, tvb, offset, len, ind, out_tvb);
+ } else {
+ /* primitive */
+ gint length_remaining;
+
+ length_remaining = tvb_length_remaining(tvb, offset);
#if 0
- if(length_remaining<1){
- return end_offset;
- }
+ if(length_remaining<1){
+ return end_offset;
+ }
#endif
- if(len<=(guint32)length_remaining){
- length_remaining=len;
- }
- if(hf_id >= 0) {
- it = ber_proto_tree_add_item(actx->pinfo, tree, hf_id, tvb, offset, length_remaining, ENC_BIG_ENDIAN);
- actx->created_item = it;
- ber_check_length(length_remaining, min_len, max_len, actx, it, ENC_BIG_ENDIAN);
- } else {
- proto_item *pi;
-
- pi=proto_tree_add_text(tree, tvb, offset, len, "Unknown OctetString: Length: 0x%02x, Value: 0x", len);
- if(pi){
- for(i=0;i<len;i++){
- proto_item_append_text(pi,"%02x",tvb_get_guint8(tvb, offset));
- offset++;
- }
- }
- }
-
- if(out_tvb) {
- *out_tvb = tvb_new_subset(tvb, offset, length_remaining, len);
- }
- }
- return end_offset;
+ if(len<=(guint32)length_remaining){
+ length_remaining=len;
+ }
+ if(hf_id >= 0) {
+ it = ber_proto_tree_add_item(actx->pinfo, tree, hf_id, tvb, offset, length_remaining, ENC_BIG_ENDIAN);
+ actx->created_item = it;
+ ber_check_length(length_remaining, min_len, max_len, actx, it, ENC_BIG_ENDIAN);
+ } else {
+ proto_item *pi;
+
+ pi=proto_tree_add_text(tree, tvb, offset, len, "Unknown OctetString: Length: 0x%02x, Value: 0x", len);
+ if(pi){
+ for(i=0;i<len;i++){
+ proto_item_append_text(pi,"%02x",tvb_get_guint8(tvb, offset));
+ offset++;
+ }
+ }
+ }
+
+ if(out_tvb) {
+ *out_tvb = tvb_new_subset(tvb, offset, length_remaining, len);
+ }
+ }
+ return end_offset;
}
int
@@ -1480,76 +1482,75 @@ dissect_ber_octet_string(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tr
int dissect_ber_octet_string_wcb(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint hf_id, ber_callback func)
{
- tvbuff_t *out_tvb = NULL;
-
- offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_id, (func)?&out_tvb:NULL);
- if (func && out_tvb && (tvb_length(out_tvb)>0)) {
- if (hf_id >= 0)
- tree = proto_item_add_subtree(actx->created_item, ett_ber_octet_string);
- /* TODO Should hf_id2 be pased as last parameter???*/
- func(FALSE, out_tvb, 0, actx, tree, -1);
- }
- return offset;
+ tvbuff_t *out_tvb = NULL;
+
+ offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_id, (func)?&out_tvb:NULL);
+ if (func && out_tvb && (tvb_length(out_tvb)>0)) {
+ if (hf_id >= 0)
+ tree = proto_item_add_subtree(actx->created_item, ett_ber_octet_string);
+ /* TODO Should hf_id2 be pased as last parameter???*/
+ func(FALSE, out_tvb, 0, actx, tree, -1);
+ }
+ return offset;
}
int dissect_ber_old_octet_string_wcb(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint hf_id, ber_old_callback func)
{
- tvbuff_t *out_tvb = NULL;
-
- offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_id, (func)?&out_tvb:NULL);
- if (func && out_tvb && (tvb_length(out_tvb)>0)) {
- if (hf_id >= 0)
- tree = proto_item_add_subtree(actx->created_item, ett_ber_octet_string);
- /* TODO Should hf_id2 be pased as last parameter???*/
- func(tree, out_tvb, 0, actx);
- }
- return offset;
+ tvbuff_t *out_tvb = NULL;
+
+ offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_id, (func)?&out_tvb:NULL);
+ if (func && out_tvb && (tvb_length(out_tvb)>0)) {
+ if (hf_id >= 0)
+ tree = proto_item_add_subtree(actx->created_item, ett_ber_octet_string);
+ /* TODO Should hf_id2 be pased as last parameter???*/
+ func(tree, out_tvb, 0, actx);
+ }
+ return offset;
}
/* 8.8 Encoding of a null value */
int
dissect_ber_null(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint hf_id) {
- gint8 ber_class;
- gboolean pc;
- gint32 tag;
- guint32 len;
- int offset_old;
- proto_item* cause;
-
-if (!implicit_tag)
-{
- offset_old = offset;
- offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
- if((pc) ||
- (!implicit_tag && ((ber_class != BER_CLASS_UNI) || (tag != BER_UNI_TAG_NULL)))) {
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset_old, offset - offset_old, "null_expected", "BER Error: NULL expected but class:%s(%d) %s tag:%d was unexpected", val_to_str(ber_class,ber_class_codes,"Unknown"), ber_class, pc ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tag);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: NULL expected");
- }
-
- offset_old = offset;
- offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, NULL);
- if(len) {
- proto_tree_add_string_format(tree, hf_ber_error, tvb, offset_old, offset - offset_old, "illegal_length", "BER Error: NULL expect zero length but Length=%d", len);
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "unexpected_data", "BER Error: unexpected data in NULL type");
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: NULL expect zero length");
- offset += len;
- }
-}
- if (hf_id >= 0)
- proto_tree_add_item(tree, hf_id, tvb, offset, 0, ENC_BIG_ENDIAN);
- return offset;
+ gint8 ber_class;
+ gboolean pc;
+ gint32 tag;
+ guint32 len;
+ int offset_old;
+ proto_item* cause;
+
+ if (!implicit_tag)
+ {
+ offset_old = offset;
+ offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
+ if((pc) ||
+ (!implicit_tag && ((ber_class != BER_CLASS_UNI) || (tag != BER_UNI_TAG_NULL)))) {
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset_old, offset - offset_old, "null_expected", "BER Error: NULL expected but class:%s(%d) %s tag:%d was unexpected", val_to_str(ber_class,ber_class_codes,"Unknown"), ber_class, pc ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tag);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: NULL expected");
+ }
+
+ offset_old = offset;
+ offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, NULL);
+ if(len) {
+ proto_tree_add_string_format(tree, hf_ber_error, tvb, offset_old, offset - offset_old, "illegal_length", "BER Error: NULL expect zero length but Length=%d", len);
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "unexpected_data", "BER Error: unexpected data in NULL type");
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: NULL expect zero length");
+ offset += len;
+ }
+ }
+ if (hf_id >= 0)
+ proto_tree_add_item(tree, hf_id, tvb, offset, 0, ENC_BIG_ENDIAN);
+ return offset;
}
int
dissect_ber_integer64(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint hf_id, gint64 *value)
{
- gint8 ber_class;
- gboolean pc;
- gint32 tag;
- guint32 len;
- gint64 val;
- guint32 i;
- gboolean used_too_many_bytes = FALSE;
-
+ gint8 ber_class;
+ gboolean pc;
+ gint32 tag;
+ guint32 len;
+ gint64 val;
+ guint32 i;
+ gboolean used_too_many_bytes = FALSE;
#ifdef DEBUG_BER
{
const char *name;
@@ -1569,239 +1570,239 @@ printf("INTEGERnew dissect_ber_integer(%s) entered implicit_tag:%d \n",name,impl
#endif
- if(value){
- *value=0;
- }
-
- if(!implicit_tag){
- offset=dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
- offset=dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, NULL);
- } else {
- gint32 remaining=tvb_length_remaining(tvb, offset);
- len=remaining>0 ? remaining : 0;
- }
-
- /* we cant handle integers > 64 bits */
- if(len>8){
- header_field_info *hfinfo;
- proto_item *pi = NULL;
-
- if (hf_id >= 0) {
- hfinfo = proto_registrar_get_nth(hf_id);
- pi=proto_tree_add_text(tree, tvb, offset, len, "%s : 0x", hfinfo->name);
- }
- if(pi){
- for(i=0;i<len;i++){
- proto_item_append_text(pi,"%02x",tvb_get_guint8(tvb, offset));
- offset++;
- }
- } else {
- offset += len;
- }
- return offset;
- }
-
- val=0;
- if(len > 0) {
- /* extend sign bit */
- guint8 first = tvb_get_guint8(tvb, offset);
- if(first & 0x80){
- val=-1;
- }
- if(len > 1) {
- guint8 second = tvb_get_guint8(tvb, offset+1);
- if((first == 0x00 && (second & 0x80) == 0) ||
- (first == 0xff && (second & 0x80)))
- {
- used_too_many_bytes = TRUE;
- }
- }
- for(i=0;i<len;i++){
- val=(val<<8)|tvb_get_guint8(tvb, offset);
- offset++;
- }
- }
-
- actx->created_item=NULL;
-
- if(hf_id >= 0){
- /* */
- if(len < 1 || len > 8) {
- proto_item *pi = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset-len, len, "invalid length", "BER Error: Can't handle integer length: %u", len);
- expert_add_info_format(actx->pinfo, pi, PI_MALFORMED, PI_WARN, "BER Error: Illegal integer length: %u", len);
- } else {
- header_field_info* hfi;
-
- hfi = proto_registrar_get_nth(hf_id);
- switch(hfi->type){
- case FT_UINT8:
- case FT_UINT16:
- case FT_UINT24:
- case FT_UINT32:
- actx->created_item=proto_tree_add_uint(tree, hf_id, tvb, offset-len, len, (guint32)val);
- break;
- case FT_INT8:
- case FT_INT16:
- case FT_INT24:
- case FT_INT32:
- actx->created_item=proto_tree_add_int(tree, hf_id, tvb, offset-len, len, (gint32)val);
- break;
- case FT_INT64:
- actx->created_item=proto_tree_add_int64(tree, hf_id, tvb, offset-len, len, val);
- break;
- case FT_UINT64:
- actx->created_item=proto_tree_add_uint64(tree, hf_id, tvb, offset-len, len, (guint64)val);
- break;
- default:
- DISSECTOR_ASSERT_NOT_REACHED();
- }
-
- if (used_too_many_bytes) {
- expert_add_info_format(actx->pinfo, actx->created_item, PI_PROTOCOL, PI_WARN,
- "Value is encoded with too many bytes(9 leading zero or one bits), hf_abbr: %s",hfi->abbrev);
- }
- }
- }
-
- if(value){
- *value=val;
- }
-
- return offset;
+ if(value){
+ *value=0;
+ }
+
+ if(!implicit_tag){
+ offset=dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
+ offset=dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, NULL);
+ } else {
+ gint32 remaining=tvb_length_remaining(tvb, offset);
+ len=remaining>0 ? remaining : 0;
+ }
+
+ /* we cant handle integers > 64 bits */
+ if(len>8){
+ header_field_info *hfinfo;
+ proto_item *pi = NULL;
+
+ if (hf_id >= 0) {
+ hfinfo = proto_registrar_get_nth(hf_id);
+ pi=proto_tree_add_text(tree, tvb, offset, len, "%s : 0x", hfinfo->name);
+ }
+ if(pi){
+ for(i=0;i<len;i++){
+ proto_item_append_text(pi,"%02x",tvb_get_guint8(tvb, offset));
+ offset++;
+ }
+ } else {
+ offset += len;
+ }
+ return offset;
+ }
+
+ val=0;
+ if(len > 0) {
+ /* extend sign bit */
+ guint8 first = tvb_get_guint8(tvb, offset);
+ if(first & 0x80){
+ val=-1;
+ }
+ if(len > 1 && decode_warning_leading_zero_bits) {
+ guint8 second = tvb_get_guint8(tvb, offset+1);
+ if((first == 0x00 && (second & 0x80) == 0) ||
+ (first == 0xff && (second & 0x80)))
+ {
+ used_too_many_bytes = TRUE;
+ }
+ }
+ for(i=0;i<len;i++){
+ val=(val<<8)|tvb_get_guint8(tvb, offset);
+ offset++;
+ }
+ }
+
+ actx->created_item=NULL;
+
+ if(hf_id >= 0){
+ /* */
+ if(len < 1 || len > 8) {
+ proto_item *pi = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset-len, len, "invalid length", "BER Error: Can't handle integer length: %u", len);
+ expert_add_info_format(actx->pinfo, pi, PI_MALFORMED, PI_WARN, "BER Error: Illegal integer length: %u", len);
+ } else {
+ header_field_info* hfi;
+
+ hfi = proto_registrar_get_nth(hf_id);
+ switch(hfi->type){
+ case FT_UINT8:
+ case FT_UINT16:
+ case FT_UINT24:
+ case FT_UINT32:
+ actx->created_item=proto_tree_add_uint(tree, hf_id, tvb, offset-len, len, (guint32)val);
+ break;
+ case FT_INT8:
+ case FT_INT16:
+ case FT_INT24:
+ case FT_INT32:
+ actx->created_item=proto_tree_add_int(tree, hf_id, tvb, offset-len, len, (gint32)val);
+ break;
+ case FT_INT64:
+ actx->created_item=proto_tree_add_int64(tree, hf_id, tvb, offset-len, len, val);
+ break;
+ case FT_UINT64:
+ actx->created_item=proto_tree_add_uint64(tree, hf_id, tvb, offset-len, len, (guint64)val);
+ break;
+ default:
+ DISSECTOR_ASSERT_NOT_REACHED();
+ }
+
+ if (used_too_many_bytes) {
+ expert_add_info_format(actx->pinfo, actx->created_item, PI_PROTOCOL, PI_WARN,
+ "Value is encoded with too many bytes(9 leading zero or one bits), hf_abbr: %s",hfi->abbrev);
+ }
+ }
+ }
+
+ if(value){
+ *value=val;
+ }
+
+ return offset;
}
int
dissect_ber_constrained_integer64(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint64 min_len, gint64 max_len, gint hf_id, gint64 *value)
{
- gint64 val;
+ gint64 val;
- offset=dissect_ber_integer64(implicit_tag, actx, tree, tvb, offset, hf_id, &val);
- if(value){
- *value=val;
- }
+ offset=dissect_ber_integer64(implicit_tag, actx, tree, tvb, offset, hf_id, &val);
+ if(value){
+ *value=val;
+ }
- ber_check_value64 (val, min_len, max_len, actx, actx->created_item);
+ ber_check_value64 (val, min_len, max_len, actx, actx->created_item);
- return offset;
+ return offset;
}
int
dissect_ber_integer(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint hf_id, guint32 *value)
{
- gint64 val;
+ gint64 val;
- offset=dissect_ber_integer64(implicit_tag, actx, tree, tvb, offset, hf_id, &val);
- if(value){
- *value=(guint32)val;
- }
+ offset=dissect_ber_integer64(implicit_tag, actx, tree, tvb, offset, hf_id, &val);
+ if(value){
+ *value=(guint32)val;
+ }
- return offset;
+ return offset;
}
int
dissect_ber_constrained_integer(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint32 min_len, gint32 max_len, gint hf_id, guint32 *value)
{
- gint64 val;
+ gint64 val;
- offset=dissect_ber_integer64(implicit_tag, actx, tree, tvb, offset, hf_id, &val);
- if(value){
- *value=(guint32)val;
- }
+ offset=dissect_ber_integer64(implicit_tag, actx, tree, tvb, offset, hf_id, &val);
+ if(value){
+ *value=(guint32)val;
+ }
- ber_check_value ((guint32)val, min_len, max_len, actx, actx->created_item);
+ ber_check_value ((guint32)val, min_len, max_len, actx, actx->created_item);
- return offset;
+ return offset;
}
int
dissect_ber_boolean(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint hf_id, gboolean *value)
{
- gint8 ber_class;
- gboolean pc;
- gint32 tag;
- guint32 len;
- guint8 val;
- header_field_info *hfi;
-
- if(!implicit_tag){
- offset=dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
- offset=dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, NULL);
- /*if(ber_class!=BER_CLASS_UNI)*/
- } else {
- /* nothing to do here, yet */
- }
+ gint8 ber_class;
+ gboolean pc;
+ gint32 tag;
+ guint32 len;
+ guint8 val;
+ header_field_info *hfi;
+
+ if(!implicit_tag){
+ offset=dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
+ offset=dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, NULL);
+ /*if(ber_class!=BER_CLASS_UNI)*/
+ } else {
+ /* nothing to do here, yet */
+ }
- val=tvb_get_guint8(tvb, offset);
- offset+=1;
+ val=tvb_get_guint8(tvb, offset);
+ offset+=1;
- actx->created_item=NULL;
+ actx->created_item=NULL;
- if(hf_id >= 0){
- hfi = proto_registrar_get_nth(hf_id);
- if(hfi->type == FT_BOOLEAN)
- actx->created_item=proto_tree_add_boolean(tree, hf_id, tvb, offset-1, 1, val);
- else
- actx->created_item=proto_tree_add_uint(tree, hf_id, tvb, offset-1, 1, val?1:0);
- }
+ if(hf_id >= 0){
+ hfi = proto_registrar_get_nth(hf_id);
+ if(hfi->type == FT_BOOLEAN)
+ actx->created_item=proto_tree_add_boolean(tree, hf_id, tvb, offset-1, 1, val);
+ else
+ actx->created_item=proto_tree_add_uint(tree, hf_id, tvb, offset-1, 1, val?1:0);
+ }
- if(value){
- *value=(val?TRUE:ENC_BIG_ENDIAN);
- }
+ if(value){
+ *value=(val?TRUE:ENC_BIG_ENDIAN);
+ }
- return offset;
+ return offset;
}
-/* 8.5 Encoding of a real value */
+/* 8.5 Encoding of a real value */
/* NOT Tested*/
int
dissect_ber_real(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint hf_id _U_, double *value)
{
- gint8 ber_class;
- gboolean pc;
- gint32 tag;
- guint32 val_length = 0, end_offset;
- double val = 0;
-
- if(!implicit_tag){
- offset=dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
- offset=dissect_ber_length(actx->pinfo, tree, tvb, offset, &val_length, NULL);
- } else {
- /* 8.5.1 The encoding of a real value shall be primitive. */
- DISSECTOR_ASSERT_NOT_REACHED();
- }
- /* 8.5.2 If the real value is the value zero,
- * there shall be no contents octets in the encoding.
- */
- if (val_length==0){
- if (value)
- *value = 0;
- return offset;
- }
- end_offset = offset + val_length;
-
- val = asn1_get_real(tvb_get_ptr(tvb, offset, val_length), val_length);
- actx->created_item = proto_tree_add_double(tree, hf_id, tvb, offset, val_length, val);
-
- if (value) *value = val;
-
- return end_offset;
+ gint8 ber_class;
+ gboolean pc;
+ gint32 tag;
+ guint32 val_length = 0, end_offset;
+ double val = 0;
+
+ if(!implicit_tag){
+ offset=dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
+ offset=dissect_ber_length(actx->pinfo, tree, tvb, offset, &val_length, NULL);
+ } else {
+ /* 8.5.1 The encoding of a real value shall be primitive. */
+ DISSECTOR_ASSERT_NOT_REACHED();
+ }
+ /* 8.5.2 If the real value is the value zero,
+ * there shall be no contents octets in the encoding.
+ */
+ if (val_length==0){
+ if (value)
+ *value = 0;
+ return offset;
+ }
+ end_offset = offset + val_length;
+
+ val = asn1_get_real(tvb_get_ptr(tvb, offset, val_length), val_length);
+ actx->created_item = proto_tree_add_double(tree, hf_id, tvb, offset, val_length, val);
+
+ if (value) *value = val;
+
+ return end_offset;
}
/* this function dissects a BER sequence
*/
int dissect_ber_sequence(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *parent_tree, tvbuff_t *tvb, int offset, const ber_sequence_t *seq, gint hf_id, gint ett_id) {
- gint8 classx;
- gboolean pcx, ind = 0, ind_field, imp_tag=FALSE;
- gint32 tagx;
- guint32 lenx;
- proto_tree *tree = parent_tree;
- proto_item *item = NULL;
- proto_item *cause;
- int end_offset = 0;
- int hoffset;
- gint length_remaining;
- tvbuff_t *next_tvb;
+ gint8 classx;
+ gboolean pcx, ind = 0, ind_field, imp_tag=FALSE;
+ gint32 tagx;
+ guint32 lenx;
+ proto_tree *tree = parent_tree;
+ proto_item *item = NULL;
+ proto_item *cause;
+ int end_offset = 0;
+ int hoffset;
+ gint length_remaining;
+ tvbuff_t *next_tvb;
#ifdef DEBUG_BER
{
@@ -1820,216 +1821,218 @@ printf("SEQUENCE dissect_ber_sequence(%s) entered\n",name);
}
}
#endif
- hoffset = offset;
- if(!implicit_tag) {
- offset = get_ber_identifier(tvb, offset, NULL, NULL, NULL);
- offset = get_ber_length(tvb, offset, &lenx, NULL);
- } else {
- /* was implicit tag so just use the length of the tvb */
- lenx=tvb_length_remaining(tvb,offset);
- end_offset=offset+lenx;
- }
- /* create subtree */
- if(hf_id >= 0) {
- if(parent_tree){
- item = proto_tree_add_item(parent_tree, hf_id, tvb, hoffset, lenx + offset - hoffset, ENC_BIG_ENDIAN);
- tree = proto_item_add_subtree(item, ett_id);
- }
- }
- offset = hoffset;
-
- if(!implicit_tag){
- /* first we must read the sequence header */
- offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &classx, &pcx, &tagx);
- offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &lenx, &ind);
- if(ind){
- /* Fixed the length is correctly returned from dissect ber_length
- end_offset = tvb_length(tvb);*/
- end_offset = offset + lenx -2;
- } else {
- end_offset = offset + lenx;
- }
-
- /* sanity check: we only handle Constructed Universal Sequences */
- if((classx!=BER_CLASS_APP)&&(classx!=BER_CLASS_PRI))
- if((!pcx)
- ||(!implicit_tag&&((classx!=BER_CLASS_UNI)
- ||(tagx!=BER_UNI_TAG_SEQUENCE)))) {
- tvb_ensure_bytes_exist(tvb, hoffset, 2);
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, lenx, "sequence_expected", "BER Error: Sequence expected but class:%s(%d) %s tag:%d was unexpected", val_to_str(classx,ber_class_codes,"Unknown"), classx, pcx ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tagx);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Sequence expected");
- if (decode_unexpected) {
- proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
- dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
- }
- return end_offset;
- }
- }
- /* loop over all entries until we reach the end of the sequence */
- while (offset < end_offset){
- gint8 ber_class;
- gboolean pc;
- gint32 tag;
- guint32 len;
- int eoffset, count;
-
- /*if(ind){ this sequence was of indefinite length, if this is implicit indefinite impossible maybe
- but ber dissector uses this to eat the tag length then pass into here... EOC still on there...*/
- if((tvb_get_guint8(tvb, offset)==0)&&(tvb_get_guint8(tvb, offset+1)==0)){
- /* If the first bytes is 00 00 of a indefenert length field it's a zero length field*/
- offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
- dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, &ind);
- proto_item_append_text(item," 0 items");
- return end_offset;
- /*
- if(show_internal_ber_fields){
- proto_tree_add_text(tree, tvb, s_offset, offset+2, "ERROR WRONG SEQ EOC");
- }
- return end_offset;
- */
- }
- /*}*/
- hoffset = offset;
- /* read header and len for next field */
- offset = get_ber_identifier(tvb, offset, &ber_class, &pc, &tag);
- offset = get_ber_length(tvb, offset, &len, &ind_field);
- eoffset = offset + len;
+ hoffset = offset;
+ if(!implicit_tag) {
+ offset = get_ber_identifier(tvb, offset, NULL, NULL, NULL);
+ offset = get_ber_length(tvb, offset, &lenx, NULL);
+ } else {
+ /* was implicit tag so just use the length of the tvb */
+ lenx=tvb_length_remaining(tvb,offset);
+ end_offset=offset+lenx;
+ }
+ /* create subtree */
+ if(hf_id >= 0) {
+ if(parent_tree){
+ item = proto_tree_add_item(parent_tree, hf_id, tvb, hoffset, lenx + offset - hoffset, ENC_BIG_ENDIAN);
+ tree = proto_item_add_subtree(item, ett_id);
+ }
+ }
+ offset = hoffset;
+
+ if(!implicit_tag){
+ /* first we must read the sequence header */
+ offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &classx, &pcx, &tagx);
+ offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &lenx, &ind);
+ if(ind){
+ /* Fixed the length is correctly returned from dissect ber_length
+ end_offset = tvb_length(tvb);*/
+ end_offset = offset + lenx -2;
+ } else {
+ end_offset = offset + lenx;
+ }
+
+ /* sanity check: we only handle Constructed Universal Sequences */
+ if((classx!=BER_CLASS_APP)&&(classx!=BER_CLASS_PRI))
+ if((!pcx)
+ ||(!implicit_tag&&((classx!=BER_CLASS_UNI)
+ ||(tagx!=BER_UNI_TAG_SEQUENCE)))) {
+ tvb_ensure_bytes_exist(tvb, hoffset, 2);
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, lenx, "sequence_expected", "BER Error: Sequence expected but class:%s(%d) %s tag:%d was unexpected", val_to_str(classx,ber_class_codes,"Unknown"), classx, pcx ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tagx);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Sequence expected");
+ if (decode_unexpected) {
+ proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
+ dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
+ }
+ return end_offset;
+ }
+ }
+ /* loop over all entries until we reach the end of the sequence */
+ while (offset < end_offset){
+ gint8 ber_class;
+ gboolean pc;
+ gint32 tag;
+ guint32 len;
+ int eoffset, count;
+
+ /*if(ind){ this sequence was of indefinite length, if this is implicit indefinite impossible maybe
+ but ber dissector uses this to eat the tag length then pass into here... EOC still on there...*/
+ if((tvb_get_guint8(tvb, offset)==0)&&(tvb_get_guint8(tvb, offset+1)==0)){
+ /* If the first bytes is 00 00 of a indefenert length field it's a zero length field*/
+ offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
+ dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, &ind);
+ proto_item_append_text(item," 0 items");
+ return end_offset;
+ /*
+ if(show_internal_ber_fields){
+ proto_tree_add_text(tree, tvb, s_offset, offset+2, "ERROR WRONG SEQ EOC");
+ }
+ return end_offset;
+ */
+ }
+ /*}*/
+ hoffset = offset;
+ /* read header and len for next field */
+ offset = get_ber_identifier(tvb, offset, &ber_class, &pc, &tag);
+ offset = get_ber_length(tvb, offset, &len, &ind_field);
+ eoffset = offset + len;
/* Make sure we move forward */
- if (eoffset <= hoffset)
- THROW(ReportedBoundsError);
+ if (eoffset <= hoffset)
+ THROW(ReportedBoundsError);
- /*if(ind_field && (len == 2)){
- / disgusting indefinite length zero length field, what are these people doing /
- offset = eoffset;
- continue;
- }
- */
+ /*if(ind_field && (len == 2)){
+ / disgusting indefinite length zero length field, what are these people doing /
+ offset = eoffset;
+ continue;
+ }
+ */
ber_sequence_try_again:
- /* have we run out of known entries in the sequence ?*/
- if(!seq->func) {
- /* it was not, move to the next one and try again */
- offset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
- offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, NULL, NULL);
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "unknown_field", "BER Error: This field lies beyond the end of the known sequence definition.");
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Unknown field in Sequence");
- if (decode_unexpected) {
- proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
- dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
- }
- offset = eoffset;
- continue;
- }
-
- /* Verify that this one is the one we want.
- * Skip check completely if ber_class==ANY
- * of if NOCHKTAG is set
- */
+ /* have we run out of known entries in the sequence ?*/
+ if(!seq->func) {
+ /* it was not, move to the next one and try again */
+ offset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
+ offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, NULL, NULL);
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "unknown_field", "BER Error: This field lies beyond the end of the known sequence definition.");
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Unknown field in Sequence");
+ if (decode_unexpected) {
+ proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
+ dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
+ }
+ offset = eoffset;
+ continue;
+ }
+
+ /* Verify that this one is the one we want.
+ * Skip check completely if ber_class==ANY
+ * of if NOCHKTAG is set
+ */
/* XXX Bug in asn2eth,
* for scope [7] Scope OPTIONAL,
* it generates
* { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_scope },
* and there should not be a NOTCHKTAG here
*/
- if( ((seq->ber_class==BER_CLASS_CON)||(seq->ber_class==BER_CLASS_APP)||(seq->ber_class==BER_CLASS_PRI)) && (!(seq->flags&BER_FLAGS_NOOWNTAG)) ){
- if( (seq->ber_class!=BER_CLASS_ANY)
- && (seq->tag!=-1)
- &&( (seq->ber_class!=ber_class)
- ||(seq->tag!=tag) ) ){
- /* it was not, move to the next one and try again */
- if(seq->flags&BER_FLAGS_OPTIONAL){
- /* well this one was optional so just skip to the next one and try again. */
- seq++;
- goto ber_sequence_try_again;
- }
- offset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
- offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, NULL, NULL);
- if( seq->ber_class == BER_CLASS_UNI){
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "wrong_field",
- "BER Error: Wrong field in SEQUENCE expected class:%s(%d) tag:%d (%s) but found class:%s(%d) tag:%d",
- val_to_str(seq->ber_class,ber_class_codes,"Unknown"),seq->ber_class,
- seq->tag,val_to_str_ext(seq->tag,&ber_uni_tag_codes_ext,"Unknown"),
- val_to_str(ber_class,ber_class_codes,"Unknown"),ber_class,tag);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Wrong field in SEQUENCE");
- }else{
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "wrong_field",
- "BER Error: Wrong field in SEQUENCE expected class:%s(%d) tag:%d but found class:%s(%d) tag:%d",
- val_to_str(seq->ber_class,ber_class_codes,"Unknown"),seq->ber_class,
- seq->tag,val_to_str(ber_class,ber_class_codes,"Unknown"),ber_class,tag);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Wrong field in SEQUENCE");
- }
- if (decode_unexpected) {
- proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
- dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
- }
- seq++;
- offset=eoffset;
- continue;
- }
- } else if(!(seq->flags & BER_FLAGS_NOTCHKTAG)) {
- if( (seq->ber_class!=BER_CLASS_ANY)
- && (seq->tag!=-1)
- &&( (seq->ber_class!=ber_class)
- ||(seq->tag!=tag) ) ){
- /* it was not, move to the next one and try again */
- if(seq->flags&BER_FLAGS_OPTIONAL){
- /* well this one was optional so just skip to the next one and try again. */
- seq++;
- goto ber_sequence_try_again;
- }
-
- offset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
- offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, NULL, NULL);
- if( seq->ber_class == BER_CLASS_UNI){
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "wrong_field", "BER Error: Wrong field in sequence expected class:%s(%d) tag:%d(%s) but found class:%s(%d) tag:%d",
- val_to_str(seq->ber_class,ber_class_codes,"Unknown"),seq->ber_class,seq->tag,val_to_str_ext(seq->tag,&ber_uni_tag_codes_ext,"Unknown"),val_to_str(ber_class,ber_class_codes,"Unknown"),ber_class,tag);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Wrong field in sequence");
- }else{
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "wrong_field", "BER Error: Wrong field in sequence expected class:%s(%d) tag:%d but found class:%s(%d) tag:%d",val_to_str(seq->ber_class,ber_class_codes,"Unknown"),seq->ber_class,seq->tag,val_to_str(ber_class,ber_class_codes,"Unknown"),ber_class,tag);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Wrong field in sequence");
- }
- if (decode_unexpected) {
- proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
- dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
- }
- seq++;
- offset=eoffset;
- continue;
- }
- }
-
- if(!(seq->flags & BER_FLAGS_NOOWNTAG) ) {
- /* dissect header and len for field */
- if(ind_field && (len == 2)){
- /* This is a Zero length field */
- next_tvb = tvb_new_subset(tvb, offset, len, len);
- hoffset = eoffset;
- }else{
- hoffset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
- hoffset = dissect_ber_length(actx->pinfo, tree, tvb, hoffset, NULL, NULL);
- length_remaining=tvb_length_remaining(tvb, hoffset);
- if (length_remaining>eoffset-hoffset-(2*ind_field))
- length_remaining=eoffset-hoffset-(2*ind_field);
- next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, eoffset-hoffset-(2*ind_field));
- }
- }
- else {
- length_remaining=tvb_length_remaining(tvb, hoffset);
- if (length_remaining>eoffset-hoffset)
- length_remaining=eoffset-hoffset;
- next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, eoffset-hoffset);
- }
-
- /* call the dissector for this field */
- /*if ((eoffset-hoffset)>length_remaining) {*/
- /* If the field is indefinite (i.e. we dont know the
- * length) of if the tvb is short, then just
- * give it all of the tvb and hope for the best.
- */
- /*next_tvb = tvb_new_subset_remaining(tvb, hoffset);*/
- /*} else {*/
-
- /*}*/
+ if( ((seq->ber_class==BER_CLASS_CON)||(seq->ber_class==BER_CLASS_APP)||(seq->ber_class==BER_CLASS_PRI)) && (!(seq->flags&BER_FLAGS_NOOWNTAG)) ){
+ if( (seq->ber_class!=BER_CLASS_ANY)
+ && (seq->tag!=-1)
+ &&( (seq->ber_class!=ber_class)
+ ||(seq->tag!=tag) ) ){
+ /* it was not, move to the next one and try again */
+ if(seq->flags&BER_FLAGS_OPTIONAL){
+ /* well this one was optional so just skip to the next one and try again. */
+ seq++;
+ goto ber_sequence_try_again;
+ }
+ offset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
+ offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, NULL, NULL);
+ if( seq->ber_class == BER_CLASS_UNI){
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "wrong_field",
+ "BER Error: Wrong field in SEQUENCE expected class:%s(%d) tag:%d (%s) but found class:%s(%d) tag:%d",
+ val_to_str(seq->ber_class,ber_class_codes,"Unknown"),seq->ber_class,
+ seq->tag,val_to_str_ext(seq->tag,&ber_uni_tag_codes_ext,"Unknown"),
+ val_to_str(ber_class,ber_class_codes,"Unknown"),ber_class,tag);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Wrong field in SEQUENCE");
+ }else{
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "wrong_field",
+ "BER Error: Wrong field in SEQUENCE expected class:%s(%d) tag:%d but found class:%s(%d) tag:%d",
+ val_to_str(seq->ber_class,ber_class_codes,"Unknown"),seq->ber_class,
+ seq->tag,val_to_str(ber_class,ber_class_codes,"Unknown"),ber_class,tag);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Wrong field in SEQUENCE");
+ }
+ if (decode_unexpected) {
+ proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
+ dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
+ }
+ seq++;
+ offset=eoffset;
+ continue;
+ }
+ } else if(!(seq->flags & BER_FLAGS_NOTCHKTAG)) {
+ if( (seq->ber_class!=BER_CLASS_ANY)
+ && (seq->tag!=-1)
+ &&( (seq->ber_class!=ber_class)
+ ||(seq->tag!=tag) ) ){
+ /* it was not, move to the next one and try again */
+ if(seq->flags&BER_FLAGS_OPTIONAL){
+ /* well this one was optional so just skip to the next one and try again. */
+ seq++;
+ goto ber_sequence_try_again;
+ }
+
+ offset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
+ offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, NULL, NULL);
+ if( seq->ber_class == BER_CLASS_UNI){
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "wrong_field", "BER Error: Wrong field in sequence expected class:%s(%d) tag:%d(%s) but found class:%s(%d) tag:%d",
+ val_to_str(seq->ber_class,ber_class_codes,"Unknown"),seq->ber_class,seq->tag,val_to_str_ext(seq->tag,&ber_uni_tag_codes_ext,"Unknown"),val_to_str(ber_class,ber_class_codes,"Unknown"),ber_class,tag);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Wrong field in sequence");
+ }else{
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "wrong_field", "BER Error: Wrong field in sequence expected class:%s(%d) tag:%d but found class:%s(%d) tag:%d",val_to_str(seq->ber_class,ber_class_codes,"Unknown"),seq->ber_class,seq->tag,val_to_str(ber_class,ber_class_codes,"Unknown"),ber_class,tag);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Wrong field in sequence");
+ }
+ if (decode_unexpected) {
+ proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
+ dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
+ }
+ seq++;
+ offset=eoffset;
+ continue;
+ }
+ }
+
+ if(!(seq->flags & BER_FLAGS_NOOWNTAG) ) {
+ /* dissect header and len for field */
+ if(ind_field && (len == 2)){
+ /* This is a Zero length field */
+ next_tvb = tvb_new_subset(tvb, offset, len, len);
+ hoffset = eoffset;
+ }else{
+ hoffset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
+ hoffset = dissect_ber_length(actx->pinfo, tree, tvb, hoffset, NULL, NULL);
+ length_remaining=tvb_length_remaining(tvb, hoffset);
+ if (length_remaining>eoffset-hoffset-(2*ind_field))
+ length_remaining=eoffset-hoffset-(2*ind_field);
+ next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, eoffset-hoffset-(2*ind_field));
+ }
+ }
+ else {
+ length_remaining=tvb_length_remaining(tvb, hoffset);
+ if (length_remaining>eoffset-hoffset)
+ length_remaining=eoffset-hoffset;
+ next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, eoffset-hoffset);
+ }
+
+#if 0
+ /* call the dissector for this field */
+ if ((eoffset-hoffset)>length_remaining) {
+ /* If the field is indefinite (i.e. we dont know the
+ * length) of if the tvb is short, then just
+ * give it all of the tvb and hope for the best.
+ */
+ next_tvb = tvb_new_subset_remaining(tvb, hoffset);
+ } else {
+
+ }
+#endif
#ifdef DEBUG_BER
{
@@ -2048,16 +2051,16 @@ printf("SEQUENCE dissect_ber_sequence(%s) calling subdissector\n",name);
}
}
#endif
- if (next_tvb == NULL) {
- /* Assume that we have a malformed packet. */
- THROW(ReportedBoundsError);
- }
- imp_tag=FALSE;
- if (seq->flags & BER_FLAGS_IMPLTAG){
- imp_tag = TRUE;
- }
+ if (next_tvb == NULL) {
+ /* Assume that we have a malformed packet. */
+ THROW(ReportedBoundsError);
+ }
+ imp_tag=FALSE;
+ if (seq->flags & BER_FLAGS_IMPLTAG){
+ imp_tag = TRUE;
+ }
- count=seq->func(imp_tag, next_tvb, 0, actx, tree, *seq->p_id);
+ count=seq->func(imp_tag, next_tvb, 0, actx, tree, *seq->p_id);
#ifdef DEBUG_BER
{
@@ -2072,58 +2075,58 @@ name="unnamed";
printf("SEQUENCE dissect_ber_sequence(%s) subdissector ate %d bytes\n",name,count);
}
#endif
- /* if it was optional and no bytes were eaten and it was */
- /* supposed to (len<>0), just try again. */
- if((len!=0)&&(count==0)&&(seq->flags&BER_FLAGS_OPTIONAL)){
- seq++;
- goto ber_sequence_try_again;
- /* move the offset to the beginning of the next sequenced item */
- }
- offset = eoffset;
- if(!(seq->flags & BER_FLAGS_NOOWNTAG) ) {
- /* if we stripped the tag and length we should also strip the EOC is ind_len
- * Unless its a zero length field (len = 2)
- */
- if((ind_field == 1)&&(len>2))
- {
- /* skip over EOC */
- if(show_internal_ber_fields){
- proto_tree_add_text(tree, tvb, offset, count, "SEQ FIELD EOC");
- }
- }
- }
- seq++;
- }
-
- /* if we didnt end up at exactly offset, then we ate too many bytes */
- if(offset != end_offset) {
- tvb_ensure_bytes_exist(tvb, offset-2, 2);
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset-2, 2, "illegal_length", "BER Error: Sequence ate %d too many bytes", offset-end_offset);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: too many bytes in Sequence");
- }
- if(ind){
- /* need to eat this EOC
- end_offset = tvb_length(tvb);*/
- end_offset += 2;
- if(show_internal_ber_fields){
- proto_tree_add_text(tree, tvb, end_offset-2,2 , "SEQ EOC");
- }
- }
- return end_offset;
+ /* if it was optional and no bytes were eaten and it was */
+ /* supposed to (len<>0), just try again. */
+ if((len!=0)&&(count==0)&&(seq->flags&BER_FLAGS_OPTIONAL)){
+ seq++;
+ goto ber_sequence_try_again;
+ /* move the offset to the beginning of the next sequenced item */
+ }
+ offset = eoffset;
+ if(!(seq->flags & BER_FLAGS_NOOWNTAG) ) {
+ /* if we stripped the tag and length we should also strip the EOC is ind_len
+ * Unless its a zero length field (len = 2)
+ */
+ if((ind_field == 1)&&(len>2))
+ {
+ /* skip over EOC */
+ if(show_internal_ber_fields){
+ proto_tree_add_text(tree, tvb, offset, count, "SEQ FIELD EOC");
+ }
+ }
+ }
+ seq++;
+ }
+
+ /* if we didnt end up at exactly offset, then we ate too many bytes */
+ if(offset != end_offset) {
+ tvb_ensure_bytes_exist(tvb, offset-2, 2);
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset-2, 2, "illegal_length", "BER Error: Sequence ate %d too many bytes", offset-end_offset);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: too many bytes in Sequence");
+ }
+ if(ind){
+ /* need to eat this EOC
+ end_offset = tvb_length(tvb);*/
+ end_offset += 2;
+ if(show_internal_ber_fields){
+ proto_tree_add_text(tree, tvb, end_offset-2,2 , "SEQ EOC");
+ }
+ }
+ return end_offset;
}
int dissect_ber_old_sequence(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *parent_tree, tvbuff_t *tvb, int offset, const ber_old_sequence_t *seq, gint hf_id, gint ett_id) {
- gint8 classx;
- gboolean pcx, ind = 0, ind_field;
- gint32 tagx;
- guint32 lenx;
- proto_tree *tree = parent_tree;
- proto_item *item = NULL;
- proto_item *cause;
- int end_offset = 0;
- int hoffset;
- gint length_remaining;
- tvbuff_t *next_tvb;
+ gint8 classx;
+ gboolean pcx, ind = 0, ind_field;
+ gint32 tagx;
+ guint32 lenx;
+ proto_tree *tree = parent_tree;
+ proto_item *item = NULL;
+ proto_item *cause;
+ int end_offset = 0;
+ int hoffset;
+ gint length_remaining;
+ tvbuff_t *next_tvb;
#ifdef DEBUG_BER
{
@@ -2142,216 +2145,218 @@ printf("SEQUENCE dissect_ber_old_sequence(%s) entered\n",name);
}
}
#endif
- hoffset = offset;
- if(!implicit_tag) {
- offset = get_ber_identifier(tvb, offset, NULL, NULL, NULL);
- offset = get_ber_length(tvb, offset, &lenx, NULL);
- } else {
- /* was implicit tag so just use the length of the tvb */
- lenx=tvb_length_remaining(tvb,offset);
- end_offset=offset+lenx;
- }
- /* create subtree */
- if(hf_id >= 0) {
- if(parent_tree){
- item = proto_tree_add_item(parent_tree, hf_id, tvb, hoffset, lenx + offset - hoffset, ENC_BIG_ENDIAN);
- tree = proto_item_add_subtree(item, ett_id);
- }
- }
- offset = hoffset;
-
- if(!implicit_tag){
- /* first we must read the sequence header */
- offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &classx, &pcx, &tagx);
- offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &lenx, &ind);
- if(ind){
- /* Fixed the length is correctly returned from dissect ber_length
- end_offset = tvb_length(tvb);*/
- end_offset = offset + lenx -2;
- } else {
- end_offset = offset + lenx;
- }
-
- /* sanity check: we only handle Constructed Universal Sequences */
- if((classx!=BER_CLASS_APP)&&(classx!=BER_CLASS_PRI))
- if((!pcx)
- ||(!implicit_tag&&((classx!=BER_CLASS_UNI)
- ||(tagx!=BER_UNI_TAG_SEQUENCE)))) {
- tvb_ensure_bytes_exist(tvb, hoffset, 2);
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, lenx, "sequence_expected", "BER Error: Sequence expected but class:%s(%d) %s tag:%d was unexpected", val_to_str(classx,ber_class_codes,"Unknown"), classx, pcx ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tagx);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Sequence expected");
- if (decode_unexpected) {
- proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
- dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
- }
- return end_offset;
- }
- }
- /* loop over all entries until we reach the end of the sequence */
- while (offset < end_offset){
- gint8 ber_class;
- gboolean pc;
- gint32 tag;
- guint32 len;
- int eoffset, count;
-
- /*if(ind){ this sequence was of indefinite length, if this is implicit indefinite impossible maybe
- but ber dissector uses this to eat the tag length then pass into here... EOC still on there...*/
- if((tvb_get_guint8(tvb, offset)==0)&&(tvb_get_guint8(tvb, offset+1)==0)){
- /* If the first bytes is 00 00 of a indefenert length field it's a zero length field*/
- offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
- dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, &ind);
- proto_item_append_text(item," 0 items");
- return end_offset;
- /*
- if(show_internal_ber_fields){
- proto_tree_add_text(tree, tvb, s_offset, offset+2, "ERROR WRONG SEQ EOC");
- }
- return end_offset;
- */
- }
- /*}*/
- hoffset = offset;
- /* read header and len for next field */
- offset = get_ber_identifier(tvb, offset, &ber_class, &pc, &tag);
- offset = get_ber_length(tvb, offset, &len, &ind_field);
- eoffset = offset + len;
+ hoffset = offset;
+ if(!implicit_tag) {
+ offset = get_ber_identifier(tvb, offset, NULL, NULL, NULL);
+ offset = get_ber_length(tvb, offset, &lenx, NULL);
+ } else {
+ /* was implicit tag so just use the length of the tvb */
+ lenx=tvb_length_remaining(tvb,offset);
+ end_offset=offset+lenx;
+ }
+ /* create subtree */
+ if(hf_id >= 0) {
+ if(parent_tree){
+ item = proto_tree_add_item(parent_tree, hf_id, tvb, hoffset, lenx + offset - hoffset, ENC_BIG_ENDIAN);
+ tree = proto_item_add_subtree(item, ett_id);
+ }
+ }
+ offset = hoffset;
+
+ if(!implicit_tag){
+ /* first we must read the sequence header */
+ offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &classx, &pcx, &tagx);
+ offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &lenx, &ind);
+ if(ind){
+ /* Fixed the length is correctly returned from dissect ber_length
+ end_offset = tvb_length(tvb);*/
+ end_offset = offset + lenx -2;
+ } else {
+ end_offset = offset + lenx;
+ }
+
+ /* sanity check: we only handle Constructed Universal Sequences */
+ if((classx!=BER_CLASS_APP)&&(classx!=BER_CLASS_PRI))
+ if((!pcx)
+ ||(!implicit_tag&&((classx!=BER_CLASS_UNI)
+ ||(tagx!=BER_UNI_TAG_SEQUENCE)))) {
+ tvb_ensure_bytes_exist(tvb, hoffset, 2);
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, lenx, "sequence_expected", "BER Error: Sequence expected but class:%s(%d) %s tag:%d was unexpected", val_to_str(classx,ber_class_codes,"Unknown"), classx, pcx ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tagx);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Sequence expected");
+ if (decode_unexpected) {
+ proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
+ dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
+ }
+ return end_offset;
+ }
+ }
+ /* loop over all entries until we reach the end of the sequence */
+ while (offset < end_offset){
+ gint8 ber_class;
+ gboolean pc;
+ gint32 tag;
+ guint32 len;
+ int eoffset, count;
+
+ /*if(ind){ this sequence was of indefinite length, if this is implicit indefinite impossible maybe
+ but ber dissector uses this to eat the tag length then pass into here... EOC still on there...*/
+ if((tvb_get_guint8(tvb, offset)==0)&&(tvb_get_guint8(tvb, offset+1)==0)){
+ /* If the first bytes is 00 00 of a indefenert length field it's a zero length field*/
+ offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
+ dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, &ind);
+ proto_item_append_text(item," 0 items");
+ return end_offset;
+ /*
+ if(show_internal_ber_fields){
+ proto_tree_add_text(tree, tvb, s_offset, offset+2, "ERROR WRONG SEQ EOC");
+ }
+ return end_offset;
+ */
+ }
+ /*}*/
+ hoffset = offset;
+ /* read header and len for next field */
+ offset = get_ber_identifier(tvb, offset, &ber_class, &pc, &tag);
+ offset = get_ber_length(tvb, offset, &len, &ind_field);
+ eoffset = offset + len;
/* Make sure we move forward */
- if (eoffset <= hoffset)
- THROW(ReportedBoundsError);
+ if (eoffset <= hoffset)
+ THROW(ReportedBoundsError);
- /*if(ind_field && (len == 2)){
- / disgusting indefinite length zero length field, what are these people doing /
- offset = eoffset;
- continue;
- }
- */
+ /*if(ind_field && (len == 2)){
+ / disgusting indefinite length zero length field, what are these people doing /
+ offset = eoffset;
+ continue;
+ }
+ */
ber_old_sequence_try_again:
- /* have we run out of known entries in the sequence ?*/
- if(!seq->func) {
- /* it was not, move to the next one and try again */
- offset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
- offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, NULL, NULL);
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "illegal_length", "BER Error: This field lies beyond the end of the known sequence definition.");
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Unknown field in Sequence");
- if (decode_unexpected) {
- proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
- dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
- }
- offset = eoffset;
- continue;
- }
-
- /* Verify that this one is the one we want.
- * Skip check completely if ber_class==ANY
- * of if NOCHKTAG is set
- */
+ /* have we run out of known entries in the sequence ?*/
+ if(!seq->func) {
+ /* it was not, move to the next one and try again */
+ offset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
+ offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, NULL, NULL);
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "illegal_length", "BER Error: This field lies beyond the end of the known sequence definition.");
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Unknown field in Sequence");
+ if (decode_unexpected) {
+ proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
+ dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
+ }
+ offset = eoffset;
+ continue;
+ }
+
+ /* Verify that this one is the one we want.
+ * Skip check completely if ber_class==ANY
+ * of if NOCHKTAG is set
+ */
/* XXX Bug in asn2eth,
* for scope [7] Scope OPTIONAL,
* it generates
* { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_scope },
* and there should not be a NOTCHKTAG here
*/
- if( ((seq->ber_class==BER_CLASS_CON)||(seq->ber_class==BER_CLASS_APP)||(seq->ber_class==BER_CLASS_PRI)) && (!(seq->flags&BER_FLAGS_NOOWNTAG)) ){
- if( (seq->ber_class!=BER_CLASS_ANY)
- && (seq->tag!=-1)
- &&( (seq->ber_class!=ber_class)
- ||(seq->tag!=tag) ) ){
- /* it was not, move to the next one and try again */
- if(seq->flags&BER_FLAGS_OPTIONAL){
- /* well this one was optional so just skip to the next one and try again. */
- seq++;
- goto ber_old_sequence_try_again;
- }
- offset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
- offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, NULL, NULL);
- if( seq->ber_class == BER_CLASS_UNI){
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "wrong_field",
- "BER Error: Wrong field in SEQUENCE expected class:%s(%d) tag:%d (%s) but found class:%s(%d) tag:%d",
- val_to_str(seq->ber_class,ber_class_codes,"Unknown"),seq->ber_class,
- seq->tag,val_to_str_ext(seq->tag,&ber_uni_tag_codes_ext,"Unknown"),
- val_to_str(ber_class,ber_class_codes,"Unknown"),ber_class,tag);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Wrong field in SEQUENCE");
- }else{
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "wrong_field"
- "BER Error: Wrong field in SEQUENCE expected class:%s(%d) tag:%d but found class:%s(%d) tag:%d",
- val_to_str(seq->ber_class,ber_class_codes,"Unknown"),seq->ber_class,
- seq->tag,val_to_str(ber_class,ber_class_codes,"Unknown"),ber_class,tag);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Wrong field in SEQUENCE");
- }
- if (decode_unexpected) {
- proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
- dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
- }
- seq++;
- offset=eoffset;
- continue;
- }
- } else if(!(seq->flags & BER_FLAGS_NOTCHKTAG)) {
- if( (seq->ber_class!=BER_CLASS_ANY)
- && (seq->tag!=-1)
- &&( (seq->ber_class!=ber_class)
- ||(seq->tag!=tag) ) ){
- /* it was not, move to the next one and try again */
- if(seq->flags&BER_FLAGS_OPTIONAL){
- /* well this one was optional so just skip to the next one and try again. */
- seq++;
- goto ber_old_sequence_try_again;
- }
-
- offset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
- offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, NULL, NULL);
- if( seq->ber_class == BER_CLASS_UNI){
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "wrong_field", "BER Error: Wrong field in sequence expected class:%s(%d) tag:%d(%s) but found class:%s(%d) tag:%d",
- val_to_str(seq->ber_class,ber_class_codes,"Unknown"),seq->ber_class,seq->tag,val_to_str_ext(seq->tag,&ber_uni_tag_codes_ext,"Unknown"),val_to_str(ber_class,ber_class_codes,"Unknown"),ber_class,tag);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Wrong field in sequence");
- }else{
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "wrong_field", "BER Error: Wrong field in sequence expected class:%s(%d) tag:%d but found class:%s(%d) tag:%d",val_to_str(seq->ber_class,ber_class_codes,"Unknown"),seq->ber_class,seq->tag,val_to_str(ber_class,ber_class_codes,"Unknown"),ber_class,tag);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Wrong field in sequence");
- }
- if (decode_unexpected) {
- proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
- dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
- }
- seq++;
- offset=eoffset;
- continue;
- }
- }
-
- if(!(seq->flags & BER_FLAGS_NOOWNTAG) ) {
- /* dissect header and len for field */
- if(ind_field && (len == 2)){
- /* This is a Zero length field */
- next_tvb = tvb_new_subset(tvb, offset, len, len);
- hoffset = eoffset;
- }else{
- hoffset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
- hoffset = dissect_ber_length(actx->pinfo, tree, tvb, hoffset, NULL, NULL);
- length_remaining=tvb_length_remaining(tvb, hoffset);
- if (length_remaining>eoffset-hoffset-(2*ind_field))
- length_remaining=eoffset-hoffset-(2*ind_field);
- next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, eoffset-hoffset-(2*ind_field));
- }
- }
- else {
- length_remaining=tvb_length_remaining(tvb, hoffset);
- if (length_remaining>eoffset-hoffset)
- length_remaining=eoffset-hoffset;
- next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, eoffset-hoffset);
- }
-
- /* call the dissector for this field */
- /*if ((eoffset-hoffset)>length_remaining) {*/
- /* If the field is indefinite (i.e. we dont know the
- * length) of if the tvb is short, then just
- * give it all of the tvb and hope for the best.
- */
- /*next_tvb = tvb_new_subset_remaining(tvb, hoffset);*/
- /*} else {*/
-
- /*}*/
+ if( ((seq->ber_class==BER_CLASS_CON)||(seq->ber_class==BER_CLASS_APP)||(seq->ber_class==BER_CLASS_PRI)) && (!(seq->flags&BER_FLAGS_NOOWNTAG)) ){
+ if( (seq->ber_class!=BER_CLASS_ANY)
+ && (seq->tag!=-1)
+ &&( (seq->ber_class!=ber_class)
+ ||(seq->tag!=tag) ) ){
+ /* it was not, move to the next one and try again */
+ if(seq->flags&BER_FLAGS_OPTIONAL){
+ /* well this one was optional so just skip to the next one and try again. */
+ seq++;
+ goto ber_old_sequence_try_again;
+ }
+ offset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
+ offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, NULL, NULL);
+ if( seq->ber_class == BER_CLASS_UNI){
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "wrong_field",
+ "BER Error: Wrong field in SEQUENCE expected class:%s(%d) tag:%d (%s) but found class:%s(%d) tag:%d",
+ val_to_str(seq->ber_class,ber_class_codes,"Unknown"),seq->ber_class,
+ seq->tag,val_to_str_ext(seq->tag,&ber_uni_tag_codes_ext,"Unknown"),
+ val_to_str(ber_class,ber_class_codes,"Unknown"),ber_class,tag);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Wrong field in SEQUENCE");
+ }else{
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "wrong_field"
+ "BER Error: Wrong field in SEQUENCE expected class:%s(%d) tag:%d but found class:%s(%d) tag:%d",
+ val_to_str(seq->ber_class,ber_class_codes,"Unknown"),seq->ber_class,
+ seq->tag,val_to_str(ber_class,ber_class_codes,"Unknown"),ber_class,tag);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Wrong field in SEQUENCE");
+ }
+ if (decode_unexpected) {
+ proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
+ dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
+ }
+ seq++;
+ offset=eoffset;
+ continue;
+ }
+ } else if(!(seq->flags & BER_FLAGS_NOTCHKTAG)) {
+ if( (seq->ber_class!=BER_CLASS_ANY)
+ && (seq->tag!=-1)
+ &&( (seq->ber_class!=ber_class)
+ ||(seq->tag!=tag) ) ){
+ /* it was not, move to the next one and try again */
+ if(seq->flags&BER_FLAGS_OPTIONAL){
+ /* well this one was optional so just skip to the next one and try again. */
+ seq++;
+ goto ber_old_sequence_try_again;
+ }
+
+ offset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
+ offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, NULL, NULL);
+ if( seq->ber_class == BER_CLASS_UNI){
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "wrong_field", "BER Error: Wrong field in sequence expected class:%s(%d) tag:%d(%s) but found class:%s(%d) tag:%d",
+ val_to_str(seq->ber_class,ber_class_codes,"Unknown"),seq->ber_class,seq->tag,val_to_str_ext(seq->tag,&ber_uni_tag_codes_ext,"Unknown"),val_to_str(ber_class,ber_class_codes,"Unknown"),ber_class,tag);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Wrong field in sequence");
+ }else{
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "wrong_field", "BER Error: Wrong field in sequence expected class:%s(%d) tag:%d but found class:%s(%d) tag:%d",val_to_str(seq->ber_class,ber_class_codes,"Unknown"),seq->ber_class,seq->tag,val_to_str(ber_class,ber_class_codes,"Unknown"),ber_class,tag);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Wrong field in sequence");
+ }
+ if (decode_unexpected) {
+ proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
+ dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
+ }
+ seq++;
+ offset=eoffset;
+ continue;
+ }
+ }
+
+ if(!(seq->flags & BER_FLAGS_NOOWNTAG) ) {
+ /* dissect header and len for field */
+ if(ind_field && (len == 2)){
+ /* This is a Zero length field */
+ next_tvb = tvb_new_subset(tvb, offset, len, len);
+ hoffset = eoffset;
+ }else{
+ hoffset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
+ hoffset = dissect_ber_length(actx->pinfo, tree, tvb, hoffset, NULL, NULL);
+ length_remaining=tvb_length_remaining(tvb, hoffset);
+ if (length_remaining>eoffset-hoffset-(2*ind_field))
+ length_remaining=eoffset-hoffset-(2*ind_field);
+ next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, eoffset-hoffset-(2*ind_field));
+ }
+ }
+ else {
+ length_remaining=tvb_length_remaining(tvb, hoffset);
+ if (length_remaining>eoffset-hoffset)
+ length_remaining=eoffset-hoffset;
+ next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, eoffset-hoffset);
+ }
+
+#if 0
+ /* call the dissector for this field */
+ if ((eoffset-hoffset)>length_remaining) {
+ /* If the field is indefinite (i.e. we dont know the
+ * length) of if the tvb is short, then just
+ * give it all of the tvb and hope for the best.
+ */
+ next_tvb = tvb_new_subset_remaining(tvb, hoffset);
+ } else {
+
+ }
+#endif
#ifdef DEBUG_BER
{
@@ -2370,11 +2375,11 @@ printf("SEQUENCE dissect_ber_old_sequence(%s) calling subdissector\n",name);
}
}
#endif
- if (next_tvb == NULL) {
- /* Assume that we have a malformed packet. */
- THROW(ReportedBoundsError);
- }
- count=seq->func(tree, next_tvb, 0, actx);
+ if (next_tvb == NULL) {
+ /* Assume that we have a malformed packet. */
+ THROW(ReportedBoundsError);
+ }
+ count=seq->func(tree, next_tvb, 0, actx);
#ifdef DEBUG_BER
{
@@ -2389,68 +2394,68 @@ name="unnamed";
printf("SEQUENCE dissect_ber_old_sequence(%s) subdissector ate %d bytes\n",name,count);
}
#endif
- /* if it was optional and no bytes were eaten and it was */
- /* supposed to (len<>0), just try again. */
- if((len!=0)&&(count==0)&&(seq->flags&BER_FLAGS_OPTIONAL)){
- seq++;
- goto ber_old_sequence_try_again;
- /* move the offset to the beginning of the next sequenced item */
- }
- offset = eoffset;
- seq++;
- if(!(seq->flags & BER_FLAGS_NOOWNTAG) ) {
- /* if we stripped the tag and length we should also strip the EOC is ind_len
- * Unless its a zero length field (len = 2)
- */
- if((ind_field == 1)&&(len>2))
- {
- /* skip over EOC */
- if(show_internal_ber_fields){
- proto_tree_add_text(tree, tvb, offset, count, "SEQ FIELD EOC");
- }
- }
- }
- }
-
- /* if we didnt end up at exactly offset, then we ate too many bytes */
- if(offset != end_offset) {
- tvb_ensure_bytes_exist(tvb, offset-2, 2);
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset-2, 2, "illegal_length", "BER Error: Sequence ate %d too many bytes", offset-end_offset);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: too many bytes in Sequence");
- }
- if(ind){
- /* need to eat this EOC
- end_offset = tvb_length(tvb);*/
- end_offset += 2;
- if(show_internal_ber_fields){
- proto_tree_add_text(tree, tvb, end_offset-2,2 , "SEQ EOC");
- }
- }
- return end_offset;
+ /* if it was optional and no bytes were eaten and it was */
+ /* supposed to (len<>0), just try again. */
+ if((len!=0)&&(count==0)&&(seq->flags&BER_FLAGS_OPTIONAL)){
+ seq++;
+ goto ber_old_sequence_try_again;
+ /* move the offset to the beginning of the next sequenced item */
+ }
+ offset = eoffset;
+ seq++;
+ if(!(seq->flags & BER_FLAGS_NOOWNTAG) ) {
+ /* if we stripped the tag and length we should also strip the EOC is ind_len
+ * Unless its a zero length field (len = 2)
+ */
+ if((ind_field == 1)&&(len>2))
+ {
+ /* skip over EOC */
+ if(show_internal_ber_fields){
+ proto_tree_add_text(tree, tvb, offset, count, "SEQ FIELD EOC");
+ }
+ }
+ }
+ }
+
+ /* if we didnt end up at exactly offset, then we ate too many bytes */
+ if(offset != end_offset) {
+ tvb_ensure_bytes_exist(tvb, offset-2, 2);
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset-2, 2, "illegal_length", "BER Error: Sequence ate %d too many bytes", offset-end_offset);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: too many bytes in Sequence");
+ }
+ if(ind){
+ /* need to eat this EOC
+ end_offset = tvb_length(tvb);*/
+ end_offset += 2;
+ if(show_internal_ber_fields){
+ proto_tree_add_text(tree, tvb, end_offset-2,2 , "SEQ EOC");
+ }
+ }
+ return end_offset;
}
/* This function dissects a BER set
*/
int dissect_ber_set(gboolean implicit_tag,asn1_ctx_t *actx, proto_tree *parent_tree, tvbuff_t *tvb, int offset, const ber_sequence_t *set, gint hf_id, gint ett_id) {
- gint8 classx;
- gboolean pcx, ind = 0, ind_field, imp_tag = FALSE;
- gint32 tagx;
- guint32 lenx;
- proto_tree *tree = parent_tree;
- proto_item *item = NULL;
- proto_item *cause;
- int end_offset, s_offset;
- int hoffset;
- gint length_remaining;
- tvbuff_t *next_tvb;
- const ber_sequence_t *cset = NULL;
+ gint8 classx;
+ gboolean pcx, ind = 0, ind_field, imp_tag = FALSE;
+ gint32 tagx;
+ guint32 lenx;
+ proto_tree *tree = parent_tree;
+ proto_item *item = NULL;
+ proto_item *cause;
+ int end_offset, s_offset;
+ int hoffset;
+ gint length_remaining;
+ tvbuff_t *next_tvb;
+ const ber_sequence_t *cset = NULL;
# define MAX_SET_ELEMENTS 32
- guint32 mandatory_fields = 0;
- guint8 set_idx;
- gboolean first_pass;
- s_offset = offset;
+ guint32 mandatory_fields = 0;
+ guint8 set_idx;
+ gboolean first_pass;
+ s_offset = offset;
#ifdef DEBUG_BER
- {
+ {
const char *name;
header_field_info *hfinfo;
if(hf_id>=0){
@@ -2467,128 +2472,130 @@ printf("SET dissect_ber_set(%s) entered\n",name);
}
#endif
- if(!implicit_tag){
- hoffset = offset;
- /* first we must read the sequence header */
- offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &classx, &pcx, &tagx);
- offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &lenx, &ind);
- if(ind){
- /* Fixed the length is correctly returned from dissect ber_length
- end_offset = tvb_length(tvb);*/
- end_offset = offset + lenx -2;
- } else {
- end_offset = offset + lenx;
- }
-
- /* sanity check: we only handle Constructed Universal Sets */
- if ((classx!=BER_CLASS_APP)&&(classx!=BER_CLASS_PRI))
- if ((!pcx)
- ||(!implicit_tag&&((classx!=BER_CLASS_UNI)
- ||(tagx!=BER_UNI_TAG_SET)))) {
- tvb_ensure_bytes_exist(tvb, hoffset, 2);
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, lenx, "set_expected", "BER Error: SET expected but class:%s(%d) %s tag:%d was found", val_to_str(classx,ber_class_codes,"Unknown"), classx, pcx ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tagx);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: SET expected");
- if (decode_unexpected) {
- proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
- dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
- }
- return end_offset;
- }
- } else {
- /* was implicit tag so just use the length of the tvb */
- lenx=tvb_length_remaining(tvb,offset);
- end_offset=offset+lenx;
- }
-
- /* create subtree */
- if (hf_id >= 0) {
- if(parent_tree){
- item = proto_tree_add_item(parent_tree, hf_id, tvb, offset, lenx, ENC_BIG_ENDIAN);
- tree = proto_item_add_subtree(item, ett_id);
- }
- }
-
- /* record the mandatory elements of the set so we can check we found everything at the end
- we can only record 32 elements for now ... */
- for(set_idx = 0; (cset=&set[set_idx])->func && (set_idx < MAX_SET_ELEMENTS); set_idx++) {
-
- if(!(cset->flags & BER_FLAGS_OPTIONAL))
- mandatory_fields |= 1 << set_idx;
-
- }
-
- /* loop over all entries until we reach the end of the set */
- while (offset < end_offset){
- gint8 ber_class;
- gboolean pc;
- gint32 tag;
- guint32 len;
- int eoffset, count;
-
- /*if(ind){ this sequence was of indefinite length, if this is implicit indefinite impossible maybe
- but ber dissector uses this to eat the tag length then pass into here... EOC still on there...*/
-
- if((tvb_get_guint8(tvb, offset)==0)&&(tvb_get_guint8(tvb, offset+1)==0)){
- if(show_internal_ber_fields){
- proto_tree_add_text(tree, tvb, s_offset, offset+2, "SEQ EOC");
- }
- return end_offset;
- }
- /* } */
- hoffset = offset;
- /* read header and len for next field */
- offset = get_ber_identifier(tvb, offset, &ber_class, &pc, &tag);
- offset = get_ber_length(tvb, offset, &len, &ind_field);
- eoffset = offset + len;
-
- /* Look through the Set to see if this class/id exists and
- * hasn't been seen before
- * Skip check completely if ber_class==ANY
- * of if NOCHKTAG is set
- */
-
-
- for(first_pass=TRUE, cset = set, set_idx = 0; cset->func || first_pass; cset++, set_idx++) {
-
- /* we reset for a second pass when we will look for choices */
- if(!cset->func) {
- first_pass = FALSE;
-
- cset=set; /* reset to the beginning */
- set_idx = 0;
- }
-
- if((first_pass && ((cset->ber_class==ber_class) && (cset->tag==tag))) ||
- (!first_pass && ((cset->ber_class== BER_CLASS_ANY) && (cset->tag == -1))) ) /* choices */
- {
-
- if (!(cset->flags & BER_FLAGS_NOOWNTAG) ) {
- /* dissect header and len for field */
- hoffset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
- hoffset = dissect_ber_length(actx->pinfo, tree, tvb, hoffset, NULL, NULL);
- length_remaining=tvb_length_remaining(tvb, hoffset);
- if (length_remaining>eoffset-hoffset-(2*ind_field))
- length_remaining=eoffset-hoffset-(2*ind_field);
- next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, eoffset-hoffset-(2*ind_field));
- }
- else {
- length_remaining=tvb_length_remaining(tvb, hoffset);
- if (length_remaining>eoffset-hoffset)
- length_remaining=eoffset-hoffset;
- next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, eoffset-hoffset);
- }
-
-
- /* call the dissector for this field */
- /*if ((eoffset-hoffset)>length_remaining) {*/
- /* If the field is indefinite (i.e. we dont know the
- * length) of if the tvb is short, then just
- * give it all of the tvb and hope for the best.
- */
- /*next_tvb = tvb_new_subset_remaining(tvb, hoffset);*/
- /*} else {*/
-
- /*}*/
+ if(!implicit_tag){
+ hoffset = offset;
+ /* first we must read the sequence header */
+ offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &classx, &pcx, &tagx);
+ offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &lenx, &ind);
+ if(ind){
+ /* Fixed the length is correctly returned from dissect ber_length
+ end_offset = tvb_length(tvb);*/
+ end_offset = offset + lenx -2;
+ } else {
+ end_offset = offset + lenx;
+ }
+
+ /* sanity check: we only handle Constructed Universal Sets */
+ if ((classx!=BER_CLASS_APP)&&(classx!=BER_CLASS_PRI))
+ if ((!pcx)
+ ||(!implicit_tag&&((classx!=BER_CLASS_UNI)
+ ||(tagx!=BER_UNI_TAG_SET)))) {
+ tvb_ensure_bytes_exist(tvb, hoffset, 2);
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, lenx, "set_expected", "BER Error: SET expected but class:%s(%d) %s tag:%d was found", val_to_str(classx,ber_class_codes,"Unknown"), classx, pcx ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tagx);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: SET expected");
+ if (decode_unexpected) {
+ proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
+ dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
+ }
+ return end_offset;
+ }
+ } else {
+ /* was implicit tag so just use the length of the tvb */
+ lenx=tvb_length_remaining(tvb,offset);
+ end_offset=offset+lenx;
+ }
+
+ /* create subtree */
+ if (hf_id >= 0) {
+ if(parent_tree){
+ item = proto_tree_add_item(parent_tree, hf_id, tvb, offset, lenx, ENC_BIG_ENDIAN);
+ tree = proto_item_add_subtree(item, ett_id);
+ }
+ }
+
+ /* record the mandatory elements of the set so we can check we found everything at the end
+ we can only record 32 elements for now ... */
+ for(set_idx = 0; (cset=&set[set_idx])->func && (set_idx < MAX_SET_ELEMENTS); set_idx++) {
+
+ if(!(cset->flags & BER_FLAGS_OPTIONAL))
+ mandatory_fields |= 1 << set_idx;
+
+ }
+
+ /* loop over all entries until we reach the end of the set */
+ while (offset < end_offset){
+ gint8 ber_class;
+ gboolean pc;
+ gint32 tag;
+ guint32 len;
+ int eoffset, count;
+
+ /*if(ind){ this sequence was of indefinite length, if this is implicit indefinite impossible maybe
+ but ber dissector uses this to eat the tag length then pass into here... EOC still on there...*/
+
+ if((tvb_get_guint8(tvb, offset)==0)&&(tvb_get_guint8(tvb, offset+1)==0)){
+ if(show_internal_ber_fields){
+ proto_tree_add_text(tree, tvb, s_offset, offset+2, "SEQ EOC");
+ }
+ return end_offset;
+ }
+ /* } */
+ hoffset = offset;
+ /* read header and len for next field */
+ offset = get_ber_identifier(tvb, offset, &ber_class, &pc, &tag);
+ offset = get_ber_length(tvb, offset, &len, &ind_field);
+ eoffset = offset + len;
+
+ /* Look through the Set to see if this class/id exists and
+ * hasn't been seen before
+ * Skip check completely if ber_class==ANY
+ * of if NOCHKTAG is set
+ */
+
+
+ for(first_pass=TRUE, cset = set, set_idx = 0; cset->func || first_pass; cset++, set_idx++) {
+
+ /* we reset for a second pass when we will look for choices */
+ if(!cset->func) {
+ first_pass = FALSE;
+
+ cset=set; /* reset to the beginning */
+ set_idx = 0;
+ }
+
+ if((first_pass && ((cset->ber_class==ber_class) && (cset->tag==tag))) ||
+ (!first_pass && ((cset->ber_class== BER_CLASS_ANY) && (cset->tag == -1))) ) /* choices */
+ {
+
+ if (!(cset->flags & BER_FLAGS_NOOWNTAG) ) {
+ /* dissect header and len for field */
+ hoffset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
+ hoffset = dissect_ber_length(actx->pinfo, tree, tvb, hoffset, NULL, NULL);
+ length_remaining=tvb_length_remaining(tvb, hoffset);
+ if (length_remaining>eoffset-hoffset-(2*ind_field))
+ length_remaining=eoffset-hoffset-(2*ind_field);
+ next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, eoffset-hoffset-(2*ind_field));
+ }
+ else {
+ length_remaining=tvb_length_remaining(tvb, hoffset);
+ if (length_remaining>eoffset-hoffset)
+ length_remaining=eoffset-hoffset;
+ next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, eoffset-hoffset);
+ }
+
+
+#if 0
+ /* call the dissector for this field */
+ if ((eoffset-hoffset)>length_remaining) {
+ /* If the field is indefinite (i.e. we dont know the
+ * length) of if the tvb is short, then just
+ * give it all of the tvb and hope for the best.
+ */
+ next_tvb = tvb_new_subset_remaining(tvb, hoffset);
+ } else {
+
+ }
+#endif
#ifdef DEBUG_BER
{
@@ -2607,110 +2614,110 @@ printf("SET dissect_ber_set(%s) calling subdissector\n",name);
}
}
#endif
- if (next_tvb == NULL) {
- /* Assume that we have a malformed packet. */
- THROW(ReportedBoundsError);
- }
- imp_tag = FALSE;
- if ((cset->flags & BER_FLAGS_IMPLTAG))
- imp_tag = TRUE;
- count=cset->func(imp_tag, next_tvb, 0, actx, tree, *cset->p_id);
-
- /* if we consumed some bytes,
- or we knew the length was zero (during the first pass only) */
- if(count || (first_pass && (len == 0 || (ind_field == 1 && len == 2)))) {
- /* we found it! */
- if(set_idx < MAX_SET_ELEMENTS)
- mandatory_fields &= ~(1 << set_idx);
-
- offset = eoffset;
-
- if(!(cset->flags & BER_FLAGS_NOOWNTAG) ) {
- /* if we stripped the tag and length we should also strip the EOC is ind_len */
- if(ind_field == 1){
- /* skip over EOC */
- if(show_internal_ber_fields){
- proto_tree_add_text(tree, tvb, offset, count, "SET FIELD EOC");
- }
- }
- }
- break;
- }
- }
- }
-
- if(!cset->func) {
- /* we didn't find a match */
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "unknown_field", "BER Error: Unknown field in SET class:%s(%d) tag:%d",val_to_str(ber_class,ber_class_codes,"Unknown"),ber_class,tag);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Unknown field in SET");
- if (decode_unexpected) {
- proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
- dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
- }
- offset = eoffset;
- }
- }
-
- if(mandatory_fields) {
-
- /* OK - we didn't find some of the elements we expected */
-
- for(set_idx = 0; (cset = &set[set_idx])->func && (set_idx < MAX_SET_ELEMENTS); set_idx++) {
-
- if(mandatory_fields & (1 << set_idx)) {
-
- /* here is something we should have seen - but didn't! */
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, lenx, "missing_field",
- "BER Error: Missing field in SET class:%s(%d) tag:%d expected",
- val_to_str(cset->ber_class,ber_class_codes,"Unknown"),cset->ber_class,
- cset->tag);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Missing field in SET");
-
- }
-
- }
- }
-
- /* if we didnt end up at exactly offset, then we ate too many bytes */
- if (offset != end_offset) {
- tvb_ensure_bytes_exist(tvb, offset-2, 2);
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset-2, 2, "illegal_length", "BER Error: SET ate %d too many bytes", offset-end_offset);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: too many bytes in SET");
- }
-
- if(ind){
- /* need to eat this EOC
- end_offset = tvb_length(tvb);*/
- end_offset += 2;
- if(show_internal_ber_fields){
- proto_tree_add_text(tree, tvb, end_offset-2,2 , "SET EOC");
- }
- }
-
- return end_offset;
+ if (next_tvb == NULL) {
+ /* Assume that we have a malformed packet. */
+ THROW(ReportedBoundsError);
+ }
+ imp_tag = FALSE;
+ if ((cset->flags & BER_FLAGS_IMPLTAG))
+ imp_tag = TRUE;
+ count=cset->func(imp_tag, next_tvb, 0, actx, tree, *cset->p_id);
+
+ /* if we consumed some bytes,
+ or we knew the length was zero (during the first pass only) */
+ if(count || (first_pass && (len == 0 || (ind_field == 1 && len == 2)))) {
+ /* we found it! */
+ if(set_idx < MAX_SET_ELEMENTS)
+ mandatory_fields &= ~(1 << set_idx);
+
+ offset = eoffset;
+
+ if(!(cset->flags & BER_FLAGS_NOOWNTAG) ) {
+ /* if we stripped the tag and length we should also strip the EOC is ind_len */
+ if(ind_field == 1){
+ /* skip over EOC */
+ if(show_internal_ber_fields){
+ proto_tree_add_text(tree, tvb, offset, count, "SET FIELD EOC");
+ }
+ }
+ }
+ break;
+ }
+ }
+ }
+
+ if(!cset->func) {
+ /* we didn't find a match */
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "unknown_field", "BER Error: Unknown field in SET class:%s(%d) tag:%d",val_to_str(ber_class,ber_class_codes,"Unknown"),ber_class,tag);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Unknown field in SET");
+ if (decode_unexpected) {
+ proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
+ dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
+ }
+ offset = eoffset;
+ }
+ }
+
+ if(mandatory_fields) {
+
+ /* OK - we didn't find some of the elements we expected */
+
+ for(set_idx = 0; (cset = &set[set_idx])->func && (set_idx < MAX_SET_ELEMENTS); set_idx++) {
+
+ if(mandatory_fields & (1 << set_idx)) {
+
+ /* here is something we should have seen - but didn't! */
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, lenx, "missing_field",
+ "BER Error: Missing field in SET class:%s(%d) tag:%d expected",
+ val_to_str(cset->ber_class,ber_class_codes,"Unknown"),cset->ber_class,
+ cset->tag);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Missing field in SET");
+
+ }
+
+ }
+ }
+
+ /* if we didnt end up at exactly offset, then we ate too many bytes */
+ if (offset != end_offset) {
+ tvb_ensure_bytes_exist(tvb, offset-2, 2);
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset-2, 2, "illegal_length", "BER Error: SET ate %d too many bytes", offset-end_offset);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: too many bytes in SET");
+ }
+
+ if(ind){
+ /* need to eat this EOC
+ end_offset = tvb_length(tvb);*/
+ end_offset += 2;
+ if(show_internal_ber_fields){
+ proto_tree_add_text(tree, tvb, end_offset-2,2 , "SET EOC");
+ }
+ }
+
+ return end_offset;
}
int dissect_ber_old_set(gboolean implicit_tag,asn1_ctx_t *actx, proto_tree *parent_tree, tvbuff_t *tvb, int offset, const ber_old_sequence_t *set, gint hf_id, gint ett_id) {
- gint8 classx;
- gboolean pcx, ind = 0, ind_field;
- gint32 tagx;
- guint32 lenx;
- proto_tree *tree = parent_tree;
- proto_item *item = NULL;
- proto_item *cause;
- int end_offset, s_offset;
- int hoffset;
- gint length_remaining;
- tvbuff_t *next_tvb;
- const ber_old_sequence_t *cset = NULL;
+ gint8 classx;
+ gboolean pcx, ind = 0, ind_field;
+ gint32 tagx;
+ guint32 lenx;
+ proto_tree *tree = parent_tree;
+ proto_item *item = NULL;
+ proto_item *cause;
+ int end_offset, s_offset;
+ int hoffset;
+ gint length_remaining;
+ tvbuff_t *next_tvb;
+ const ber_old_sequence_t *cset = NULL;
# define MAX_SET_ELEMENTS 32
- guint32 mandatory_fields = 0;
- guint8 set_idx;
- gboolean first_pass;
- s_offset = offset;
+ guint32 mandatory_fields = 0;
+ guint8 set_idx;
+ gboolean first_pass;
+ s_offset = offset;
#ifdef DEBUG_BER
- {
+ {
const char *name;
header_field_info *hfinfo;
if(hf_id>=0){
@@ -2727,128 +2734,130 @@ printf("SET dissect_old_ber_set(%s) entered\n",name);
}
#endif
- if(!implicit_tag){
- hoffset = offset;
- /* first we must read the sequence header */
- offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &classx, &pcx, &tagx);
- offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &lenx, &ind);
- if(ind){
- /* Fixed the length is correctly returned from dissect ber_length
- end_offset = tvb_length(tvb);*/
- end_offset = offset + lenx -2;
- } else {
- end_offset = offset + lenx;
- }
-
- /* sanity check: we only handle Constructed Universal Sets */
- if ((classx!=BER_CLASS_APP)&&(classx!=BER_CLASS_PRI))
- if ((!pcx)
- ||(!implicit_tag&&((classx!=BER_CLASS_UNI)
- ||(tagx!=BER_UNI_TAG_SET)))) {
- tvb_ensure_bytes_exist(tvb, hoffset, 2);
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, lenx, "set_expected", "BER Error: SET expected but class:%s(%d) %s tag:%d was found", val_to_str(classx,ber_class_codes,"Unknown"), classx, pcx ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tagx);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: SET expected");
- if (decode_unexpected) {
- proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
- dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
- }
- return end_offset;
- }
- } else {
- /* was implicit tag so just use the length of the tvb */
- lenx=tvb_length_remaining(tvb,offset);
- end_offset=offset+lenx;
- }
-
- /* create subtree */
- if (hf_id >= 0) {
- if(parent_tree){
- item = proto_tree_add_item(parent_tree, hf_id, tvb, offset, lenx, ENC_BIG_ENDIAN);
- tree = proto_item_add_subtree(item, ett_id);
- }
- }
-
- /* record the mandatory elements of the set so we can check we found everything at the end
- we can only record 32 elements for now ... */
- for(set_idx = 0; (cset=&set[set_idx])->func && (set_idx < MAX_SET_ELEMENTS); set_idx++) {
-
- if(!(cset->flags & BER_FLAGS_OPTIONAL))
- mandatory_fields |= 1 << set_idx;
-
- }
-
- /* loop over all entries until we reach the end of the set */
- while (offset < end_offset){
- gint8 ber_class;
- gboolean pc;
- gint32 tag;
- guint32 len;
- int eoffset, count;
-
- /*if(ind){ this sequence was of indefinite length, if this is implicit indefinite impossible maybe
- but ber dissector uses this to eat the tag length then pass into here... EOC still on there...*/
-
- if((tvb_get_guint8(tvb, offset)==0)&&(tvb_get_guint8(tvb, offset+1)==0)){
- if(show_internal_ber_fields){
- proto_tree_add_text(tree, tvb, s_offset, offset+2, "SEQ EOC");
- }
- return end_offset;
- }
- /* } */
- hoffset = offset;
- /* read header and len for next field */
- offset = get_ber_identifier(tvb, offset, &ber_class, &pc, &tag);
- offset = get_ber_length(tvb, offset, &len, &ind_field);
- eoffset = offset + len;
-
- /* Look through the Set to see if this class/id exists and
- * hasn't been seen before
- * Skip check completely if class==ANY
- * of if NOCHKTAG is set
- */
-
-
- for(first_pass=TRUE, cset = set, set_idx = 0; cset->func || first_pass; cset++, set_idx++) {
-
- /* we reset for a second pass when we will look for choices */
- if(!cset->func) {
- first_pass = FALSE;
-
- cset=set; /* reset to the beginning */
- set_idx = 0;
- }
-
- if((first_pass && ((cset->ber_class==ber_class) && (cset->tag==tag))) ||
- (!first_pass && ((cset->ber_class== BER_CLASS_ANY) && (cset->tag == -1))) ) /* choices */
- {
-
- if (!(cset->flags & BER_FLAGS_NOOWNTAG) ) {
- /* dissect header and len for field */
- hoffset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
- hoffset = dissect_ber_length(actx->pinfo, tree, tvb, hoffset, NULL, NULL);
- length_remaining=tvb_length_remaining(tvb, hoffset);
- if (length_remaining>eoffset-hoffset-(2*ind_field))
- length_remaining=eoffset-hoffset-(2*ind_field);
- next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, eoffset-hoffset-(2*ind_field));
- }
- else {
- length_remaining=tvb_length_remaining(tvb, hoffset);
- if (length_remaining>eoffset-hoffset)
- length_remaining=eoffset-hoffset;
- next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, eoffset-hoffset);
- }
-
-
- /* call the dissector for this field */
- /*if ((eoffset-hoffset)>length_remaining) {*/
- /* If the field is indefinite (i.e. we dont know the
- * length) of if the tvb is short, then just
- * give it all of the tvb and hope for the best.
- */
- /*next_tvb = tvb_new_subset_remaining(tvb, hoffset);*/
- /*} else {*/
-
- /*}*/
+ if(!implicit_tag){
+ hoffset = offset;
+ /* first we must read the sequence header */
+ offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &classx, &pcx, &tagx);
+ offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &lenx, &ind);
+ if(ind){
+ /* Fixed the length is correctly returned from dissect ber_length
+ end_offset = tvb_length(tvb);*/
+ end_offset = offset + lenx -2;
+ } else {
+ end_offset = offset + lenx;
+ }
+
+ /* sanity check: we only handle Constructed Universal Sets */
+ if ((classx!=BER_CLASS_APP)&&(classx!=BER_CLASS_PRI))
+ if ((!pcx)
+ ||(!implicit_tag&&((classx!=BER_CLASS_UNI)
+ ||(tagx!=BER_UNI_TAG_SET)))) {
+ tvb_ensure_bytes_exist(tvb, hoffset, 2);
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, lenx, "set_expected", "BER Error: SET expected but class:%s(%d) %s tag:%d was found", val_to_str(classx,ber_class_codes,"Unknown"), classx, pcx ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tagx);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: SET expected");
+ if (decode_unexpected) {
+ proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
+ dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
+ }
+ return end_offset;
+ }
+ } else {
+ /* was implicit tag so just use the length of the tvb */
+ lenx=tvb_length_remaining(tvb,offset);
+ end_offset=offset+lenx;
+ }
+
+ /* create subtree */
+ if (hf_id >= 0) {
+ if(parent_tree){
+ item = proto_tree_add_item(parent_tree, hf_id, tvb, offset, lenx, ENC_BIG_ENDIAN);
+ tree = proto_item_add_subtree(item, ett_id);
+ }
+ }
+
+ /* record the mandatory elements of the set so we can check we found everything at the end
+ we can only record 32 elements for now ... */
+ for(set_idx = 0; (cset=&set[set_idx])->func && (set_idx < MAX_SET_ELEMENTS); set_idx++) {
+
+ if(!(cset->flags & BER_FLAGS_OPTIONAL))
+ mandatory_fields |= 1 << set_idx;
+
+ }
+
+ /* loop over all entries until we reach the end of the set */
+ while (offset < end_offset){
+ gint8 ber_class;
+ gboolean pc;
+ gint32 tag;
+ guint32 len;
+ int eoffset, count;
+
+ /*if(ind){ this sequence was of indefinite length, if this is implicit indefinite impossible maybe
+ but ber dissector uses this to eat the tag length then pass into here... EOC still on there...*/
+
+ if((tvb_get_guint8(tvb, offset)==0)&&(tvb_get_guint8(tvb, offset+1)==0)){
+ if(show_internal_ber_fields){
+ proto_tree_add_text(tree, tvb, s_offset, offset+2, "SEQ EOC");
+ }
+ return end_offset;
+ }
+ /* } */
+ hoffset = offset;
+ /* read header and len for next field */
+ offset = get_ber_identifier(tvb, offset, &ber_class, &pc, &tag);
+ offset = get_ber_length(tvb, offset, &len, &ind_field);
+ eoffset = offset + len;
+
+ /* Look through the Set to see if this class/id exists and
+ * hasn't been seen before
+ * Skip check completely if class==ANY
+ * of if NOCHKTAG is set
+ */
+
+
+ for(first_pass=TRUE, cset = set, set_idx = 0; cset->func || first_pass; cset++, set_idx++) {
+
+ /* we reset for a second pass when we will look for choices */
+ if(!cset->func) {
+ first_pass = FALSE;
+
+ cset=set; /* reset to the beginning */
+ set_idx = 0;
+ }
+
+ if((first_pass && ((cset->ber_class==ber_class) && (cset->tag==tag))) ||
+ (!first_pass && ((cset->ber_class== BER_CLASS_ANY) && (cset->tag == -1))) ) /* choices */
+ {
+
+ if (!(cset->flags & BER_FLAGS_NOOWNTAG) ) {
+ /* dissect header and len for field */
+ hoffset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
+ hoffset = dissect_ber_length(actx->pinfo, tree, tvb, hoffset, NULL, NULL);
+ length_remaining=tvb_length_remaining(tvb, hoffset);
+ if (length_remaining>eoffset-hoffset-(2*ind_field))
+ length_remaining=eoffset-hoffset-(2*ind_field);
+ next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, eoffset-hoffset-(2*ind_field));
+ }
+ else {
+ length_remaining=tvb_length_remaining(tvb, hoffset);
+ if (length_remaining>eoffset-hoffset)
+ length_remaining=eoffset-hoffset;
+ next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, eoffset-hoffset);
+ }
+
+
+#if 0
+ /* call the dissector for this field */
+ if ((eoffset-hoffset)>length_remaining) {
+ /* If the field is indefinite (i.e. we dont know the
+ * length) of if the tvb is short, then just
+ * give it all of the tvb and hope for the best.
+ */
+ next_tvb = tvb_new_subset_remaining(tvb, hoffset);
+ } else {
+
+ }
+#endif
#ifdef DEBUG_BER
{
@@ -2867,84 +2876,84 @@ printf("SET dissect_old_ber_set(%s) calling subdissector\n",name);
}
}
#endif
- if (next_tvb == NULL) {
- /* Assume that we have a malformed packet. */
- THROW(ReportedBoundsError);
- }
- count=cset->func(tree, next_tvb, 0, actx);
-
- /* if we consumed some bytes,
- or we knew the length was zero (during the first pass only) */
- if(count || (first_pass && (len == 0 || (ind_field == 1 && len == 2)))) {
- /* we found it! */
- if(set_idx < MAX_SET_ELEMENTS)
- mandatory_fields &= ~(1 << set_idx);
-
- offset = eoffset;
-
- if(!(cset->flags & BER_FLAGS_NOOWNTAG) ) {
- /* if we stripped the tag and length we should also strip the EOC is ind_len */
- if(ind_field == 1){
- /* skip over EOC */
- if(show_internal_ber_fields){
- proto_tree_add_text(tree, tvb, offset, count, "SET FIELD EOC");
- }
- }
- }
- break;
- }
- }
- }
-
- if(!cset->func) {
- /* we didn't find a match */
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "unknown_field", "BER Error: Unknown field in SET class:%s(%d) tag:%d",val_to_str(ber_class,ber_class_codes,"Unknown"),ber_class,tag);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Unknown field in SET");
- if (decode_unexpected) {
- proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
- dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
- }
- offset = eoffset;
- }
- }
-
- if(mandatory_fields) {
-
- /* OK - we didn't find some of the elements we expected */
-
- for(set_idx = 0; (cset = &set[set_idx])->func && (set_idx < MAX_SET_ELEMENTS); set_idx++) {
-
- if(mandatory_fields & (1 << set_idx)) {
-
- /* here is something we should have seen - but didn't! */
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, lenx, "missing_field",
- "BER Error: Missing field in SET class:%s(%d) tag:%d expected",
- val_to_str(cset->ber_class,ber_class_codes,"Unknown"),cset->ber_class,
- cset->tag);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Missing field in SET");
-
- }
-
- }
- }
-
- /* if we didnt end up at exactly offset, then we ate too many bytes */
- if (offset != end_offset) {
- tvb_ensure_bytes_exist(tvb, offset-2, 2);
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset-2, 2, "illegal_length", "BER Error: SET ate %d too many bytes", offset-end_offset);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: too many bytes in SET");
- }
-
- if(ind){
- /* need to eat this EOC
- end_offset = tvb_length(tvb);*/
- end_offset += 2;
- if(show_internal_ber_fields){
- proto_tree_add_text(tree, tvb, end_offset-2,2 , "SET EOC");
- }
- }
-
- return end_offset;
+ if (next_tvb == NULL) {
+ /* Assume that we have a malformed packet. */
+ THROW(ReportedBoundsError);
+ }
+ count=cset->func(tree, next_tvb, 0, actx);
+
+ /* if we consumed some bytes,
+ or we knew the length was zero (during the first pass only) */
+ if(count || (first_pass && (len == 0 || (ind_field == 1 && len == 2)))) {
+ /* we found it! */
+ if(set_idx < MAX_SET_ELEMENTS)
+ mandatory_fields &= ~(1 << set_idx);
+
+ offset = eoffset;
+
+ if(!(cset->flags & BER_FLAGS_NOOWNTAG) ) {
+ /* if we stripped the tag and length we should also strip the EOC is ind_len */
+ if(ind_field == 1){
+ /* skip over EOC */
+ if(show_internal_ber_fields){
+ proto_tree_add_text(tree, tvb, offset, count, "SET FIELD EOC");
+ }
+ }
+ }
+ break;
+ }
+ }
+ }
+
+ if(!cset->func) {
+ /* we didn't find a match */
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "unknown_field", "BER Error: Unknown field in SET class:%s(%d) tag:%d",val_to_str(ber_class,ber_class_codes,"Unknown"),ber_class,tag);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Unknown field in SET");
+ if (decode_unexpected) {
+ proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
+ dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
+ }
+ offset = eoffset;
+ }
+ }
+
+ if(mandatory_fields) {
+
+ /* OK - we didn't find some of the elements we expected */
+
+ for(set_idx = 0; (cset = &set[set_idx])->func && (set_idx < MAX_SET_ELEMENTS); set_idx++) {
+
+ if(mandatory_fields & (1 << set_idx)) {
+
+ /* here is something we should have seen - but didn't! */
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, lenx, "missing_field",
+ "BER Error: Missing field in SET class:%s(%d) tag:%d expected",
+ val_to_str(cset->ber_class,ber_class_codes,"Unknown"),cset->ber_class,
+ cset->tag);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Missing field in SET");
+
+ }
+
+ }
+ }
+
+ /* if we didnt end up at exactly offset, then we ate too many bytes */
+ if (offset != end_offset) {
+ tvb_ensure_bytes_exist(tvb, offset-2, 2);
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset-2, 2, "illegal_length", "BER Error: SET ate %d too many bytes", offset-end_offset);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: too many bytes in SET");
+ }
+
+ if(ind){
+ /* need to eat this EOC
+ end_offset = tvb_length(tvb);*/
+ end_offset += 2;
+ if(show_internal_ber_fields){
+ proto_tree_add_text(tree, tvb, end_offset-2,2 , "SET EOC");
+ }
+ }
+
+ return end_offset;
}
/* this function dissects a BER choice
@@ -2958,19 +2967,19 @@ printf("SET dissect_old_ber_set(%s) calling subdissector\n",name);
int
dissect_ber_choice(asn1_ctx_t *actx, proto_tree *parent_tree, tvbuff_t *tvb, int offset, const ber_choice_t *choice, gint hf_id, gint ett_id, gint *branch_taken)
{
- gint8 ber_class;
- gboolean pc, ind, imp_tag = FALSE;
- gint32 tag;
- guint32 len;
- const ber_choice_t *ch;
- proto_tree *tree=parent_tree;
- proto_item *item=NULL;
- int end_offset, start_offset, count;
- int hoffset = offset;
- header_field_info *hfinfo;
- gint length, length_remaining;
- tvbuff_t *next_tvb;
- gboolean first_pass;
+ gint8 ber_class;
+ gboolean pc, ind, imp_tag = FALSE;
+ gint32 tag;
+ guint32 len;
+ const ber_choice_t *ch;
+ proto_tree *tree=parent_tree;
+ proto_item *item=NULL;
+ int end_offset, start_offset, count;
+ int hoffset = offset;
+ header_field_info *hfinfo;
+ gint length, length_remaining;
+ tvbuff_t *next_tvb;
+ gboolean first_pass;
#ifdef DEBUG_BER_CHOICE
{
@@ -2989,110 +2998,110 @@ printf("CHOICE dissect_ber_choice(%s) entered len:%d\n",name,tvb_length_remainin
}
}
#endif
- start_offset=offset;
+ start_offset=offset;
+
+ if(tvb_length_remaining(tvb,offset) == 0) {
+ item = proto_tree_add_string_format(parent_tree, hf_ber_error, tvb, offset, 0, "empty_choice", "BER Error: Empty choice was found");
+ expert_add_info_format(actx->pinfo, item, PI_MALFORMED, PI_WARN, "BER Error: Empty choice was found");
+ return offset;
+ }
- if(tvb_length_remaining(tvb,offset) == 0) {
- item = proto_tree_add_string_format(parent_tree, hf_ber_error, tvb, offset, 0, "empty_choice", "BER Error: Empty choice was found");
- expert_add_info_format(actx->pinfo, item, PI_MALFORMED, PI_WARN, "BER Error: Empty choice was found");
- return offset;
+ /* read header and len for choice field */
+ offset=get_ber_identifier(tvb, offset, &ber_class, &pc, &tag);
+ offset=get_ber_length(tvb, offset, &len, &ind);
+ end_offset = offset + len ;
+
+ /* Some sanity checks.
+ * The hf field passed to us MUST be an integer type
+ */
+ if(hf_id >= 0){
+ hfinfo=proto_registrar_get_nth(hf_id);
+ switch(hfinfo->type) {
+ case FT_UINT8:
+ case FT_UINT16:
+ case FT_UINT24:
+ case FT_UINT32:
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, offset, len,"dissect_ber_choice(): Was passed a HF field that was not integer type : %s",hfinfo->abbrev);
+ fprintf(stderr,"dissect_ber_choice(): frame:%u offset:%d Was passed a HF field that was not integer type : %s\n",actx->pinfo->fd->num,offset,hfinfo->abbrev);
+ return end_offset;
}
+ }
+
- /* read header and len for choice field */
- offset=get_ber_identifier(tvb, offset, &ber_class, &pc, &tag);
- offset=get_ber_length(tvb, offset, &len, &ind);
- end_offset = offset + len ;
-
- /* Some sanity checks.
- * The hf field passed to us MUST be an integer type
- */
- if(hf_id >= 0){
- hfinfo=proto_registrar_get_nth(hf_id);
- switch(hfinfo->type) {
- case FT_UINT8:
- case FT_UINT16:
- case FT_UINT24:
- case FT_UINT32:
- break;
- default:
- proto_tree_add_text(tree, tvb, offset, len,"dissect_ber_choice(): Was passed a HF field that was not integer type : %s",hfinfo->abbrev);
- fprintf(stderr,"dissect_ber_choice(): frame:%u offset:%d Was passed a HF field that was not integer type : %s\n",actx->pinfo->fd->num,offset,hfinfo->abbrev);
- return end_offset;
- }
- }
-
-
-
- /* loop over all entries until we find the right choice or
- run out of entries */
- ch = choice;
- if(branch_taken){
- *branch_taken=-1;
- }
- first_pass = TRUE;
- while(ch->func || first_pass){
- if(branch_taken){
- (*branch_taken)++;
- }
- /* we reset for a second pass when we will look for choices */
- if(!ch->func) {
- first_pass = FALSE;
- ch = choice; /* reset to the beginning */
- if(branch_taken){
- *branch_taken=-1;
- }
- }
+
+ /* loop over all entries until we find the right choice or
+ run out of entries */
+ ch = choice;
+ if(branch_taken){
+ *branch_taken=-1;
+ }
+ first_pass = TRUE;
+ while(ch->func || first_pass){
+ if(branch_taken){
+ (*branch_taken)++;
+ }
+ /* we reset for a second pass when we will look for choices */
+ if(!ch->func) {
+ first_pass = FALSE;
+ ch = choice; /* reset to the beginning */
+ if(branch_taken){
+ *branch_taken=-1;
+ }
+ }
choice_try_again:
#ifdef DEBUG_BER_CHOICE
printf("CHOICE testing potential subdissector class[%p]:%d:(expected)%d tag:%d:(expected)%d flags:%d\n",ch,ber_class,ch->ber_class,tag,ch->tag,ch->flags);
#endif
- if( (first_pass && (((ch->ber_class==ber_class)&&(ch->tag==tag))
- || ((ch->ber_class==ber_class)&&(ch->tag==-1)&&(ch->flags&BER_FLAGS_NOOWNTAG)))) ||
- (!first_pass && (((ch->ber_class == BER_CLASS_ANY) && (ch->tag == -1)))) /* we failed on the first pass so now try any choices */
- ){
- if(!(ch->flags & BER_FLAGS_NOOWNTAG)){
- /* dissect header and len for field */
- hoffset = dissect_ber_identifier(actx->pinfo, tree, tvb, start_offset, NULL, NULL, NULL);
- hoffset = dissect_ber_length(actx->pinfo, tree, tvb, hoffset, NULL, NULL);
- start_offset=hoffset;
- if (ind)
- {
- length = len-2;
- }
- else
- {
- length = len;
- }
- }
- else
- length = end_offset- hoffset;
- /* create subtree */
- if(hf_id >= 0){
- if(parent_tree){
- item = proto_tree_add_uint(parent_tree, hf_id, tvb, hoffset, end_offset - hoffset, ch->value);
- tree = proto_item_add_subtree(item, ett_id);
- }
- }
-
- length_remaining=tvb_length_remaining(tvb, hoffset);
- if(length_remaining>length)
- length_remaining=length;
+ if( (first_pass && (((ch->ber_class==ber_class)&&(ch->tag==tag))
+ || ((ch->ber_class==ber_class)&&(ch->tag==-1)&&(ch->flags&BER_FLAGS_NOOWNTAG)))) ||
+ (!first_pass && (((ch->ber_class == BER_CLASS_ANY) && (ch->tag == -1)))) /* we failed on the first pass so now try any choices */
+ ){
+ if(!(ch->flags & BER_FLAGS_NOOWNTAG)){
+ /* dissect header and len for field */
+ hoffset = dissect_ber_identifier(actx->pinfo, tree, tvb, start_offset, NULL, NULL, NULL);
+ hoffset = dissect_ber_length(actx->pinfo, tree, tvb, hoffset, NULL, NULL);
+ start_offset=hoffset;
+ if (ind)
+ {
+ length = len-2;
+ }
+ else
+ {
+ length = len;
+ }
+ }
+ else
+ length = end_offset- hoffset;
+ /* create subtree */
+ if(hf_id >= 0){
+ if(parent_tree){
+ item = proto_tree_add_uint(parent_tree, hf_id, tvb, hoffset, end_offset - hoffset, ch->value);
+ tree = proto_item_add_subtree(item, ett_id);
+ }
+ }
+
+ length_remaining=tvb_length_remaining(tvb, hoffset);
+ if(length_remaining>length)
+ length_remaining=length;
#ifdef REMOVED
- /* This is bogus and makes the OID_1.0.9506.1.1.cap file
- * in Steven J Schaeffer's email of 2005-09-12 fail to dissect
- * properly. Maybe we should get rid of 'first_pass'
- * completely.
- * It was added as a qad workaround for some problem CMIP
- * traces anyway.
- * God, this file is a mess and it is my fault. /ronnie
- */
- if(first_pass)
- next_tvb=tvb_new_subset(tvb, hoffset, length_remaining, length);
- else
- next_tvb = tvb; /* we didn't make selection on this class/tag so pass it on */
+ /* This is bogus and makes the OID_1.0.9506.1.1.cap file
+ * in Steven J Schaeffer's email of 2005-09-12 fail to dissect
+ * properly. Maybe we should get rid of 'first_pass'
+ * completely.
+ * It was added as a qad workaround for some problem CMIP
+ * traces anyway.
+ * God, this file is a mess and it is my fault. /ronnie
+ */
+ if(first_pass)
+ next_tvb=tvb_new_subset(tvb, hoffset, length_remaining, length);
+ else
+ next_tvb = tvb; /* we didn't make selection on this class/tag so pass it on */
#endif
- next_tvb=tvb_new_subset(tvb, hoffset, length_remaining, length);
+ next_tvb=tvb_new_subset(tvb, hoffset, length_remaining, length);
#ifdef DEBUG_BER_CHOICE
@@ -3112,14 +3121,14 @@ printf("CHOICE dissect_ber_choice(%s) calling subdissector len:%d\n",name,tvb_le
}
}
#endif
- if (next_tvb == NULL) {
- /* Assume that we have a malformed packet. */
- THROW(ReportedBoundsError);
- }
- imp_tag = FALSE;
- if ((ch->flags & BER_FLAGS_IMPLTAG))
- imp_tag = TRUE;
- count=ch->func(imp_tag, next_tvb, 0, actx, tree, *ch->p_id);
+ if (next_tvb == NULL) {
+ /* Assume that we have a malformed packet. */
+ THROW(ReportedBoundsError);
+ }
+ imp_tag = FALSE;
+ if ((ch->flags & BER_FLAGS_IMPLTAG))
+ imp_tag = TRUE;
+ count=ch->func(imp_tag, next_tvb, 0, actx, tree, *ch->p_id);
#ifdef DEBUG_BER_CHOICE
{
const char *name;
@@ -3133,9 +3142,9 @@ name="unnamed";
printf("CHOICE dissect_ber_choice(%s) subdissector ate %d bytes\n",name,count);
}
#endif
- if((count==0)&&(((ch->ber_class==ber_class)&&(ch->tag==-1)&&(ch->flags&BER_FLAGS_NOOWNTAG)) || !first_pass)){
- /* wrong one, break and try again */
- ch++;
+ if((count==0)&&(((ch->ber_class==ber_class)&&(ch->tag==-1)&&(ch->flags&BER_FLAGS_NOOWNTAG)) || !first_pass)){
+ /* wrong one, break and try again */
+ ch++;
#ifdef DEBUG_BER_CHOICE
{
const char *name;
@@ -3149,59 +3158,59 @@ name="unnamed";
printf("CHOICE dissect_ber_choice(%s) trying again\n",name);
}
#endif
- goto choice_try_again;
- }
- if(!(ch->flags & BER_FLAGS_NOOWNTAG)){
- if(ind)
- {
- /* we are traversing a indfinite length choice where we did not pass the tag length */
- /* we need to eat the EOC */
- if(show_internal_ber_fields){
- proto_tree_add_text(tree, tvb, start_offset, count+2, "CHOICE EOC");
- }
- }
- }
- return end_offset;
- }
- ch++;
- }
- if(branch_taken){
- /* none of the branches were taken so set the param
- back to -1 */
- *branch_taken=-1;
- }
+ goto choice_try_again;
+ }
+ if(!(ch->flags & BER_FLAGS_NOOWNTAG)){
+ if(ind)
+ {
+ /* we are traversing a indfinite length choice where we did not pass the tag length */
+ /* we need to eat the EOC */
+ if(show_internal_ber_fields){
+ proto_tree_add_text(tree, tvb, start_offset, count+2, "CHOICE EOC");
+ }
+ }
+ }
+ return end_offset;
+ }
+ ch++;
+ }
+ if(branch_taken){
+ /* none of the branches were taken so set the param
+ back to -1 */
+ *branch_taken=-1;
+ }
#ifdef REMOVED
- /*XXX here we should have another flag to the CHOICE to distinguish
- * between the case when we know it is a mandatory or if the CHOICE is optional == no arm matched */
-
- /* oops no more entries and we still havent found
- * our guy :-(
- */
- item = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "missing_choice_field", "BER Error: This choice field was not found.");
- expert_add_info_format(actx->pinfo, item, PI_MALFORMED, PI_WARN, "BER Error: This choice field was not found");
- return end_offset;
+ /*XXX here we should have another flag to the CHOICE to distinguish
+ * between the case when we know it is a mandatory or if the CHOICE is optional == no arm matched */
+
+ /* oops no more entries and we still havent found
+ * our guy :-(
+ */
+ item = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "missing_choice_field", "BER Error: This choice field was not found.");
+ expert_add_info_format(actx->pinfo, item, PI_MALFORMED, PI_WARN, "BER Error: This choice field was not found");
+ return end_offset;
#endif
- return start_offset;
+ return start_offset;
}
int
dissect_ber_old_choice(asn1_ctx_t *actx, proto_tree *parent_tree, tvbuff_t *tvb, int offset, const ber_old_choice_t *choice, gint hf_id, gint ett_id, gint *branch_taken)
{
- gint8 ber_class;
- gboolean pc, ind;
- gint32 tag;
- guint32 len;
- const ber_old_choice_t *ch;
- proto_tree *tree=parent_tree;
- proto_item *item=NULL;
- int end_offset, start_offset, count;
- int hoffset = offset;
- header_field_info *hfinfo;
- gint length, length_remaining;
- tvbuff_t *next_tvb;
- gboolean first_pass;
+ gint8 ber_class;
+ gboolean pc, ind;
+ gint32 tag;
+ guint32 len;
+ const ber_old_choice_t *ch;
+ proto_tree *tree=parent_tree;
+ proto_item *item=NULL;
+ int end_offset, start_offset, count;
+ int hoffset = offset;
+ header_field_info *hfinfo;
+ gint length, length_remaining;
+ tvbuff_t *next_tvb;
+ gboolean first_pass;
#ifdef DEBUG_BER_CHOICE
{
@@ -3220,110 +3229,110 @@ printf("CHOICE dissect_ber_old_choice(%s) entered len:%d\n",name,tvb_length_rema
}
}
#endif
- start_offset=offset;
+ start_offset=offset;
+
+ if(tvb_length_remaining(tvb,offset) == 0) {
+ item = proto_tree_add_string_format(parent_tree, hf_ber_error, tvb, offset, 0, "empty_choice", "BER Error: Empty choice was found");
+ expert_add_info_format(actx->pinfo, item, PI_MALFORMED, PI_WARN, "BER Error: Empty choice was found");
+ return offset;
+ }
- if(tvb_length_remaining(tvb,offset) == 0) {
- item = proto_tree_add_string_format(parent_tree, hf_ber_error, tvb, offset, 0, "empty_choice", "BER Error: Empty choice was found");
- expert_add_info_format(actx->pinfo, item, PI_MALFORMED, PI_WARN, "BER Error: Empty choice was found");
- return offset;
+ /* read header and len for choice field */
+ offset=get_ber_identifier(tvb, offset, &ber_class, &pc, &tag);
+ offset=get_ber_length(tvb, offset, &len, &ind);
+ end_offset = offset + len ;
+
+ /* Some sanity checks.
+ * The hf field passed to us MUST be an integer type
+ */
+ if(hf_id >= 0){
+ hfinfo=proto_registrar_get_nth(hf_id);
+ switch(hfinfo->type) {
+ case FT_UINT8:
+ case FT_UINT16:
+ case FT_UINT24:
+ case FT_UINT32:
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, offset, len,"dissect_ber_old_choice(): Was passed a HF field that was not integer type : %s",hfinfo->abbrev);
+ fprintf(stderr,"dissect_ber_old_choice(): frame:%u offset:%d Was passed a HF field that was not integer type : %s\n",actx->pinfo->fd->num,offset,hfinfo->abbrev);
+ return end_offset;
}
+ }
- /* read header and len for choice field */
- offset=get_ber_identifier(tvb, offset, &ber_class, &pc, &tag);
- offset=get_ber_length(tvb, offset, &len, &ind);
- end_offset = offset + len ;
-
- /* Some sanity checks.
- * The hf field passed to us MUST be an integer type
- */
- if(hf_id >= 0){
- hfinfo=proto_registrar_get_nth(hf_id);
- switch(hfinfo->type) {
- case FT_UINT8:
- case FT_UINT16:
- case FT_UINT24:
- case FT_UINT32:
- break;
- default:
- proto_tree_add_text(tree, tvb, offset, len,"dissect_ber_old_choice(): Was passed a HF field that was not integer type : %s",hfinfo->abbrev);
- fprintf(stderr,"dissect_ber_old_choice(): frame:%u offset:%d Was passed a HF field that was not integer type : %s\n",actx->pinfo->fd->num,offset,hfinfo->abbrev);
- return end_offset;
- }
- }
-
-
-
- /* loop over all entries until we find the right choice or
- run out of entries */
- ch = choice;
- if(branch_taken){
- *branch_taken=-1;
- }
- first_pass = TRUE;
- while(ch->func || first_pass){
- if(branch_taken){
- (*branch_taken)++;
- }
- /* we reset for a second pass when we will look for choices */
- if(!ch->func) {
- first_pass = FALSE;
- ch = choice; /* reset to the beginning */
- if(branch_taken){
- *branch_taken=-1;
- }
- }
+
+
+ /* loop over all entries until we find the right choice or
+ run out of entries */
+ ch = choice;
+ if(branch_taken){
+ *branch_taken=-1;
+ }
+ first_pass = TRUE;
+ while(ch->func || first_pass){
+ if(branch_taken){
+ (*branch_taken)++;
+ }
+ /* we reset for a second pass when we will look for choices */
+ if(!ch->func) {
+ first_pass = FALSE;
+ ch = choice; /* reset to the beginning */
+ if(branch_taken){
+ *branch_taken=-1;
+ }
+ }
choice_try_again:
#ifdef DEBUG_BER_CHOICE
printf("CHOICE testing potential subdissector class[%p]:%d:(expected)%d tag:%d:(expected)%d flags:%d\n",ch,ber_class,ch->ber_class,tag,ch->tag,ch->flags);
#endif
- if( (first_pass && (((ch->ber_class==ber_class)&&(ch->tag==tag))
- || ((ch->ber_class==ber_class)&&(ch->tag==-1)&&(ch->flags&BER_FLAGS_NOOWNTAG)))) ||
- (!first_pass && (((ch->ber_class == BER_CLASS_ANY) && (ch->tag == -1)))) /* we failed on the first pass so now try any choices */
- ){
- if(!(ch->flags & BER_FLAGS_NOOWNTAG)){
- /* dissect header and len for field */
- hoffset = dissect_ber_identifier(actx->pinfo, tree, tvb, start_offset, NULL, NULL, NULL);
- hoffset = dissect_ber_length(actx->pinfo, tree, tvb, hoffset, NULL, NULL);
- start_offset=hoffset;
- if (ind)
- {
- length = len-2;
- }
- else
- {
- length = len;
- }
- }
- else
- length = end_offset- hoffset;
- /* create subtree */
- if(hf_id >= 0){
- if(parent_tree){
- item = proto_tree_add_uint(parent_tree, hf_id, tvb, hoffset, end_offset - hoffset, ch->value);
- tree = proto_item_add_subtree(item, ett_id);
- }
- }
-
- length_remaining=tvb_length_remaining(tvb, hoffset);
- if(length_remaining>length)
- length_remaining=length;
+ if( (first_pass && (((ch->ber_class==ber_class)&&(ch->tag==tag))
+ || ((ch->ber_class==ber_class)&&(ch->tag==-1)&&(ch->flags&BER_FLAGS_NOOWNTAG)))) ||
+ (!first_pass && (((ch->ber_class == BER_CLASS_ANY) && (ch->tag == -1)))) /* we failed on the first pass so now try any choices */
+ ){
+ if(!(ch->flags & BER_FLAGS_NOOWNTAG)){
+ /* dissect header and len for field */
+ hoffset = dissect_ber_identifier(actx->pinfo, tree, tvb, start_offset, NULL, NULL, NULL);
+ hoffset = dissect_ber_length(actx->pinfo, tree, tvb, hoffset, NULL, NULL);
+ start_offset=hoffset;
+ if (ind)
+ {
+ length = len-2;
+ }
+ else
+ {
+ length = len;
+ }
+ }
+ else
+ length = end_offset- hoffset;
+ /* create subtree */
+ if(hf_id >= 0){
+ if(parent_tree){
+ item = proto_tree_add_uint(parent_tree, hf_id, tvb, hoffset, end_offset - hoffset, ch->value);
+ tree = proto_item_add_subtree(item, ett_id);
+ }
+ }
+
+ length_remaining=tvb_length_remaining(tvb, hoffset);
+ if(length_remaining>length)
+ length_remaining=length;
#ifdef REMOVED
- /* This is bogus and makes the OID_1.0.9506.1.1.cap file
- * in Steven J Schaeffer's email of 2005-09-12 fail to dissect
- * properly. Maybe we should get rid of 'first_pass'
- * completely.
- * It was added as a qad workaround for some problem CMIP
- * traces anyway.
- * God, this file is a mess and it is my fault. /ronnie
- */
- if(first_pass)
- next_tvb=tvb_new_subset(tvb, hoffset, length_remaining, length);
- else
- next_tvb = tvb; /* we didn't make selection on this class/tag so pass it on */
+ /* This is bogus and makes the OID_1.0.9506.1.1.cap file
+ * in Steven J Schaeffer's email of 2005-09-12 fail to dissect
+ * properly. Maybe we should get rid of 'first_pass'
+ * completely.
+ * It was added as a qad workaround for some problem CMIP
+ * traces anyway.
+ * God, this file is a mess and it is my fault. /ronnie
+ */
+ if(first_pass)
+ next_tvb=tvb_new_subset(tvb, hoffset, length_remaining, length);
+ else
+ next_tvb = tvb; /* we didn't make selection on this class/tag so pass it on */
#endif
- next_tvb=tvb_new_subset(tvb, hoffset, length_remaining, length);
+ next_tvb=tvb_new_subset(tvb, hoffset, length_remaining, length);
#ifdef DEBUG_BER_CHOICE
@@ -3343,11 +3352,11 @@ printf("CHOICE dissect_ber_old_choice(%s) calling subdissector len:%d\n",name,tv
}
}
#endif
- if (next_tvb == NULL) {
- /* Assume that we have a malformed packet. */
- THROW(ReportedBoundsError);
- }
- count=ch->func(tree, next_tvb, 0, actx);
+ if (next_tvb == NULL) {
+ /* Assume that we have a malformed packet. */
+ THROW(ReportedBoundsError);
+ }
+ count=ch->func(tree, next_tvb, 0, actx);
#ifdef DEBUG_BER_CHOICE
{
const char *name;
@@ -3361,9 +3370,9 @@ name="unnamed";
printf("CHOICE dissect_ber_old_choice(%s) subdissector ate %d bytes\n",name,count);
}
#endif
- if((count==0)&&(((ch->ber_class==ber_class)&&(ch->tag==-1)&&(ch->flags&BER_FLAGS_NOOWNTAG)) || !first_pass)){
- /* wrong one, break and try again */
- ch++;
+ if((count==0)&&(((ch->ber_class==ber_class)&&(ch->tag==-1)&&(ch->flags&BER_FLAGS_NOOWNTAG)) || !first_pass)){
+ /* wrong one, break and try again */
+ ch++;
#ifdef DEBUG_BER_CHOICE
{
const char *name;
@@ -3377,41 +3386,41 @@ name="unnamed";
printf("CHOICE dissect_ber_old_choice(%s) trying again\n",name);
}
#endif
- goto choice_try_again;
- }
- if(!(ch->flags & BER_FLAGS_NOOWNTAG)){
- if(ind)
- {
- /* we are traversing a indfinite length choice where we did not pass the tag length */
- /* we need to eat the EOC */
- if(show_internal_ber_fields){
- proto_tree_add_text(tree, tvb, start_offset, count+2, "CHOICE EOC");
- }
- }
- }
- return end_offset;
- }
- ch++;
- }
- if(branch_taken){
- /* none of the branches were taken so set the param
- back to -1 */
- *branch_taken=-1;
- }
+ goto choice_try_again;
+ }
+ if(!(ch->flags & BER_FLAGS_NOOWNTAG)){
+ if(ind)
+ {
+ /* we are traversing a indfinite length choice where we did not pass the tag length */
+ /* we need to eat the EOC */
+ if(show_internal_ber_fields){
+ proto_tree_add_text(tree, tvb, start_offset, count+2, "CHOICE EOC");
+ }
+ }
+ }
+ return end_offset;
+ }
+ ch++;
+ }
+ if(branch_taken){
+ /* none of the branches were taken so set the param
+ back to -1 */
+ *branch_taken=-1;
+ }
#ifdef REMOVED
- /*XXX here we should have another flag to the CHOICE to distinguish
- * between the case when we know it is a mandatory or if the CHOICE is optional == no arm matched */
-
- /* oops no more entries and we still havent found
- * our guy :-(
- */
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "missing_choice_field", "BER Error: This choice field was not found.");
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: This choice field was not found");
- return end_offset;
+ /*XXX here we should have another flag to the CHOICE to distinguish
+ * between the case when we know it is a mandatory or if the CHOICE is optional == no arm matched */
+
+ /* oops no more entries and we still havent found
+ * our guy :-(
+ */
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "missing_choice_field", "BER Error: This choice field was not found.");
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: This choice field was not found");
+ return end_offset;
#endif
- return start_offset;
+ return start_offset;
}
#if 0
@@ -3420,66 +3429,66 @@ printf("CHOICE dissect_ber_old_choice(%s) trying again\n",name);
int
dissect_ber_GeneralString(asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint hf_id, char *name_string, int name_len)
{
- gint8 ber_class;
- gboolean pc;
- gint32 tag;
- guint32 len;
- int end_offset;
- int hoffset;
- char str_arr[256];
- guint32 max_len;
- char *str;
- proto_item *cause;
-
- str=str_arr;
- max_len=255;
- if(name_string){
- str=name_string;
- max_len=name_len;
- }
-
- hoffset = offset;
- /* first we must read the GeneralString header */
- offset=dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
- offset=dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, NULL);
- end_offset=offset+len;
-
- /* sanity check: we only handle Universal GeneralString*/
- if( (ber_class!=BER_CLASS_UNI)
- ||(tag!=BER_UNI_TAG_GENSTR) ){
- tvb_ensure_bytes_exist(tvb, hoffset, 2);
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "generalstring_expected", "BER Error: GeneralString expected but class:%s(%d) %s tag:%d was unexpected", val_to_str(ber_class,ber_class_codes,"Unknown"), ber_class, pc ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tag);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: GeneralString expected");
- if (decode_unexpected) {
- proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
- dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
- }
- return end_offset;
- }
-
- if(len>=(max_len-1)){
- len=max_len-1;
- }
-
- tvb_memcpy(tvb, str, offset, len);
- str[len]=0;
-
- if(hf_id >= 0){
- proto_tree_add_string(tree, hf_id, tvb, offset, len, str);
- }
-
- return end_offset;
+ gint8 ber_class;
+ gboolean pc;
+ gint32 tag;
+ guint32 len;
+ int end_offset;
+ int hoffset;
+ char str_arr[256];
+ guint32 max_len;
+ char *str;
+ proto_item *cause;
+
+ str=str_arr;
+ max_len=255;
+ if(name_string){
+ str=name_string;
+ max_len=name_len;
+ }
+
+ hoffset = offset;
+ /* first we must read the GeneralString header */
+ offset=dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
+ offset=dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, NULL);
+ end_offset=offset+len;
+
+ /* sanity check: we only handle Universal GeneralString*/
+ if( (ber_class!=BER_CLASS_UNI)
+ ||(tag!=BER_UNI_TAG_GENSTR) ){
+ tvb_ensure_bytes_exist(tvb, hoffset, 2);
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "generalstring_expected", "BER Error: GeneralString expected but class:%s(%d) %s tag:%d was unexpected", val_to_str(ber_class,ber_class_codes,"Unknown"), ber_class, pc ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tag);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: GeneralString expected");
+ if (decode_unexpected) {
+ proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
+ dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
+ }
+ return end_offset;
+ }
+
+ if(len>=(max_len-1)){
+ len=max_len-1;
+ }
+
+ tvb_memcpy(tvb, str, offset, len);
+ str[len]=0;
+
+ if(hf_id >= 0){
+ proto_tree_add_string(tree, hf_id, tvb, offset, len, str);
+ }
+
+ return end_offset;
}
#endif
int dissect_ber_constrained_restricted_string(gboolean implicit_tag, gint32 type, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint32 min_len, gint32 max_len, gint hf_id, tvbuff_t **out_tvb) {
- gint8 ber_class;
- gboolean pc;
- gint32 tag;
- guint32 len;
- int eoffset;
- int hoffset = offset;
- proto_item *cause;
+ gint8 ber_class;
+ gboolean pc;
+ gint32 tag;
+ guint32 len;
+ int eoffset;
+ int hoffset = offset;
+ proto_item *cause;
#ifdef DEBUG_BER
{
@@ -3499,77 +3508,77 @@ printf("RESTRICTED STRING dissect_ber_octet_string(%s) entered\n",name);
}
#endif
- if(!implicit_tag) {
- offset = get_ber_identifier(tvb, offset, &ber_class, &pc, &tag);
- offset = get_ber_length(tvb, offset, &len, NULL);
- eoffset = offset + len;
-
- /* sanity check */
- if( (ber_class!=BER_CLASS_UNI)
- ||(tag != type) ){
- tvb_ensure_bytes_exist(tvb, hoffset, 2);
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "string_expected", "BER Error: String with tag=%d expected but class:%s(%d) %s tag:%d was unexpected", type, val_to_str(ber_class,ber_class_codes,"Unknown"), ber_class, pc ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tag);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: String expected");
- if (decode_unexpected) {
- proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
- dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
- }
- return eoffset;
- }
- }
-
- /* 8.21.3 */
- return dissect_ber_constrained_octet_string(implicit_tag, actx, tree, tvb, hoffset, min_len, max_len, hf_id, out_tvb);
+ if(!implicit_tag) {
+ offset = get_ber_identifier(tvb, offset, &ber_class, &pc, &tag);
+ offset = get_ber_length(tvb, offset, &len, NULL);
+ eoffset = offset + len;
+
+ /* sanity check */
+ if( (ber_class!=BER_CLASS_UNI)
+ ||(tag != type) ){
+ tvb_ensure_bytes_exist(tvb, hoffset, 2);
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "string_expected", "BER Error: String with tag=%d expected but class:%s(%d) %s tag:%d was unexpected", type, val_to_str(ber_class,ber_class_codes,"Unknown"), ber_class, pc ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tag);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: String expected");
+ if (decode_unexpected) {
+ proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
+ dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
+ }
+ return eoffset;
+ }
+ }
+
+ /* 8.21.3 */
+ return dissect_ber_constrained_octet_string(implicit_tag, actx, tree, tvb, hoffset, min_len, max_len, hf_id, out_tvb);
}
int dissect_ber_restricted_string(gboolean implicit_tag, gint32 type, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint hf_id, tvbuff_t **out_tvb)
{
- return dissect_ber_constrained_restricted_string(implicit_tag, type, actx, tree, tvb, offset, NO_BOUND, NO_BOUND, hf_id, out_tvb);
+ return dissect_ber_constrained_restricted_string(implicit_tag, type, actx, tree, tvb, offset, NO_BOUND, NO_BOUND, hf_id, out_tvb);
}
int
dissect_ber_GeneralString(asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint hf_id, char *name_string, guint name_len)
{
- tvbuff_t *out_tvb = NULL;
- gint tvb_len;
-
- offset = dissect_ber_restricted_string(FALSE, BER_UNI_TAG_GeneralString, actx, tree, tvb, offset, hf_id, (name_string)?&out_tvb:NULL);
-
- if(name_string) {
- /*
- * XXX - do we want to just get what's left in the tvbuff
- * if the full length isn't available in the tvbuff, or
- * do we want to throw an exception?
- */
- if(out_tvb) {
- tvb_len = tvb_length(out_tvb);
- if((guint)tvb_len >= name_len) {
- tvb_memcpy(out_tvb, (guint8*)name_string, 0, name_len-1);
- name_string[name_len-1] = '\0';
- } else {
- tvb_memcpy(out_tvb, (guint8*)name_string, 0, tvb_len);
- name_string[tvb_len] = '\0';
- }
- }
- }
-
- return offset;
+ tvbuff_t *out_tvb = NULL;
+ gint tvb_len;
+
+ offset = dissect_ber_restricted_string(FALSE, BER_UNI_TAG_GeneralString, actx, tree, tvb, offset, hf_id, (name_string)?&out_tvb:NULL);
+
+ if(name_string) {
+ /*
+ * XXX - do we want to just get what's left in the tvbuff
+ * if the full length isn't available in the tvbuff, or
+ * do we want to throw an exception?
+ */
+ if(out_tvb) {
+ tvb_len = tvb_length(out_tvb);
+ if((guint)tvb_len >= name_len) {
+ tvb_memcpy(out_tvb, (guint8*)name_string, 0, name_len-1);
+ name_string[name_len-1] = '\0';
+ } else {
+ tvb_memcpy(out_tvb, (guint8*)name_string, 0, tvb_len);
+ name_string[tvb_len] = '\0';
+ }
+ }
+ }
+
+ return offset;
}
/* 8.19 Encoding of an object identifier value.
*/
int dissect_ber_object_identifier(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint hf_id, tvbuff_t **value_tvb)
{
- gint8 ber_class;
- gboolean pc;
- gint32 tag;
- guint32 len;
- int eoffset;
- int hoffset;
- const char *str;
- proto_item *cause;
- header_field_info *hfi;
- const gchar *name;
+ gint8 ber_class;
+ gboolean pc;
+ gint32 tag;
+ guint32 len;
+ int eoffset;
+ int hoffset;
+ const char *str;
+ proto_item *cause;
+ header_field_info *hfi;
+ const gchar *name;
#ifdef DEBUG_BER
{
@@ -3589,68 +3598,68 @@ printf("OBJECT IDENTIFIER dissect_ber_object_identifier(%s) entered\n",name);
}
#endif
- if(!implicit_tag) {
- hoffset = offset;
- /* sanity check */
- offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
- offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, NULL);
- eoffset = offset + len;
- if( (ber_class!=BER_CLASS_UNI)
- ||(tag != BER_UNI_TAG_OID) ){
- tvb_ensure_bytes_exist(tvb, hoffset, 2);
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "oid_expected", "BER Error: Object Identifier expected but class:%s(%d) %s tag:%d was unexpected", val_to_str(ber_class,ber_class_codes,"Unknown"), ber_class, pc ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tag);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Object Identifier expected");
- if (decode_unexpected) {
- proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
- dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
- }
- return eoffset;
- }
- } else {
- len=tvb_length_remaining(tvb,offset);
- eoffset=offset+len;
- }
-
- actx->created_item=NULL;
- hfi = proto_registrar_get_nth(hf_id);
- if (hfi->type == FT_OID) {
- actx->created_item = proto_tree_add_item(tree, hf_id, tvb, offset, len, ENC_BIG_ENDIAN);
- } else if (IS_FT_STRING(hfi->type)) {
- str = oid_encoded2string(tvb_get_ptr(tvb, offset, len), len);
- actx->created_item = proto_tree_add_string(tree, hf_id, tvb, offset, len, str);
- if(actx->created_item){
- /* see if we know the name of this oid */
- name = oid_resolved_from_encoded(tvb_get_ptr(tvb, offset, len), len);
- if(name){
- proto_item_append_text(actx->created_item, " (%s)", name);
- }
- }
- } else {
- DISSECTOR_ASSERT_NOT_REACHED();
- }
-
- if (value_tvb)
- *value_tvb = tvb_new_subset(tvb, offset, len, len);
-
- return eoffset;
+ if(!implicit_tag) {
+ hoffset = offset;
+ /* sanity check */
+ offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
+ offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, NULL);
+ eoffset = offset + len;
+ if( (ber_class!=BER_CLASS_UNI)
+ ||(tag != BER_UNI_TAG_OID) ){
+ tvb_ensure_bytes_exist(tvb, hoffset, 2);
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "oid_expected", "BER Error: Object Identifier expected but class:%s(%d) %s tag:%d was unexpected", val_to_str(ber_class,ber_class_codes,"Unknown"), ber_class, pc ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tag);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Object Identifier expected");
+ if (decode_unexpected) {
+ proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
+ dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
+ }
+ return eoffset;
+ }
+ } else {
+ len=tvb_length_remaining(tvb,offset);
+ eoffset=offset+len;
+ }
+
+ actx->created_item=NULL;
+ hfi = proto_registrar_get_nth(hf_id);
+ if (hfi->type == FT_OID) {
+ actx->created_item = proto_tree_add_item(tree, hf_id, tvb, offset, len, ENC_BIG_ENDIAN);
+ } else if (IS_FT_STRING(hfi->type)) {
+ str = oid_encoded2string(tvb_get_ptr(tvb, offset, len), len);
+ actx->created_item = proto_tree_add_string(tree, hf_id, tvb, offset, len, str);
+ if(actx->created_item){
+ /* see if we know the name of this oid */
+ name = oid_resolved_from_encoded(tvb_get_ptr(tvb, offset, len), len);
+ if(name){
+ proto_item_append_text(actx->created_item, " (%s)", name);
+ }
+ }
+ } else {
+ DISSECTOR_ASSERT_NOT_REACHED();
+ }
+
+ if (value_tvb)
+ *value_tvb = tvb_new_subset(tvb, offset, len, len);
+
+ return eoffset;
}
int dissect_ber_object_identifier_str(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint hf_id, const char **value_stringx)
{
- tvbuff_t *value_tvb = NULL;
- guint length;
+ tvbuff_t *value_tvb = NULL;
+ guint length;
- offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_id, (value_stringx) ? &value_tvb : NULL);
+ offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_id, (value_stringx) ? &value_tvb : NULL);
- if (value_stringx) {
- if (value_tvb && (length = tvb_length(value_tvb))) {
- *value_stringx = oid_encoded2string(tvb_get_ptr(value_tvb, 0, length), length);
- } else {
- *value_stringx = "";
+ if (value_stringx) {
+ if (value_tvb && (length = tvb_length(value_tvb))) {
+ *value_stringx = oid_encoded2string(tvb_get_ptr(value_tvb, 0, length), length);
+ } else {
+ *value_stringx = "";
+ }
}
- }
- return offset;
+ return offset;
}
#ifdef DEBUG_BER
@@ -3658,18 +3667,18 @@ int dissect_ber_object_identifier_str(gboolean implicit_tag, asn1_ctx_t *actx, p
#endif
static int dissect_ber_sq_of(gboolean implicit_tag, gint32 type, asn1_ctx_t *actx, proto_tree *parent_tree, tvbuff_t *tvb, int offset, gint32 min_len, gint32 max_len, const ber_sequence_t *seq, gint hf_id, gint ett_id) {
- gint8 classx;
- gboolean pcx, ind = FALSE, ind_field;
- gint32 tagx;
- guint32 lenx;
-
- proto_tree *tree = parent_tree;
- proto_item *item = NULL;
- proto_item *causex;
- int cnt, hoffsetx, end_offset;
- header_field_info *hfi;
- gint length_remaining;
- tvbuff_t *next_tvb;
+ gint8 classx;
+ gboolean pcx, ind = FALSE, ind_field;
+ gint32 tagx;
+ guint32 lenx;
+
+ proto_tree *tree = parent_tree;
+ proto_item *item = NULL;
+ proto_item *causex;
+ int cnt, hoffsetx, end_offset;
+ header_field_info *hfi;
+ gint length_remaining;
+ tvbuff_t *next_tvb;
#ifdef DEBUG_BER_SQ_OF
{
@@ -3689,200 +3698,200 @@ printf("SQ OF dissect_ber_sq_of(%s) entered\n",name);
}
#endif
- if(!implicit_tag){
- hoffsetx = offset;
- /* first we must read the sequence header */
- offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &classx, &pcx, &tagx);
- offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &lenx, &ind);
- if(ind){
- /* if the length is indefinite we dont really know (yet) where the
- * object ends so assume it spans the rest of the tvb for now.
- */
- end_offset = offset + lenx;
- } else {
- end_offset = offset + lenx;
- }
-
- /* sanity check: we only handle Constructed Universal Sequences */
- if((classx!=BER_CLASS_APP)&&(classx!=BER_CLASS_PRI))
- if(!pcx
- ||(!implicit_tag&&((classx!=BER_CLASS_UNI)
- ||(tagx!=type)))) {
- tvb_ensure_bytes_exist(tvb, hoffsetx, 2);
- causex = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, lenx, (type==BER_UNI_TAG_SEQUENCE)?"set_of_expected":"sequence_of_expected", "BER Error: %s Of expected but class:%s(%d) %s tag:%d was unexpected",
- (type==BER_UNI_TAG_SEQUENCE)?"Set":"Sequence", val_to_str(classx,ber_class_codes,"Unknown"), classx, pcx ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tagx);
- expert_add_info_format(actx->pinfo, causex, PI_MALFORMED, PI_WARN, "BER Error: %s Of expected",(type==BER_UNI_TAG_SEQUENCE)?"Set":"Sequence");
- if (decode_unexpected) {
- proto_tree *unknown_tree = proto_item_add_subtree(causex, ett_ber_unknown);
- dissect_unknown_ber(actx->pinfo, tvb, hoffsetx, unknown_tree);
- }
- return end_offset;
- }
- } else {
- /* the tvb length should be correct now nope we could be comming from an implicit choice or sequence, thus we
- read the items we match and return the length*/
- lenx=tvb_length_remaining(tvb,offset);
- end_offset = offset + lenx;
- }
-
- /* count number of items */
- cnt = 0;
- hoffsetx = offset;
- /* only count the number of items IFF we have the full blob,
- * else this will just generate a [short frame] before we even start
- * dissecting a single item.
- */
- /* XXX Do we really need to count them at all ? ronnie */
- if(tvb_length_remaining(tvb, offset)==tvb_reported_length_remaining(tvb, offset)){
- while (offset < end_offset){
- guint32 len;
- gint s_offset;
-
- s_offset = offset;
-
- /*if(ind){ this sequence of was of indefinite length, if this is implicit indefinite impossible maybe
- but ber dissector uses this to eat the tag length then pass into here... EOC still on there...*/
- if((tvb_get_guint8(tvb, offset)==0)&&(tvb_get_guint8(tvb, offset+1)==0)){
- break;
- }
- /*}*/
-
- /* read header and len for next field */
- offset = get_ber_identifier(tvb, offset, NULL, NULL, NULL);
- offset = get_ber_length(tvb, offset, &len, &ind);
- /* best place to get real length of implicit sequence of or set of is here... */
- /* adjust end_offset if we find somthing that doesnt match */
- offset += len;
- cnt++;
- if (offset <= s_offset)
- THROW(ReportedBoundsError);
- }
- }
- offset = hoffsetx;
-
- /* create subtree */
- if(hf_id >= 0) {
- hfi = proto_registrar_get_nth(hf_id);
- if(parent_tree){
- if(hfi->type == FT_NONE) {
- item = proto_tree_add_item(parent_tree, hf_id, tvb, offset, lenx, ENC_BIG_ENDIAN);
- proto_item_append_text(item, ":");
- } else {
- item = proto_tree_add_uint(parent_tree, hf_id, tvb, offset, lenx, cnt);
- proto_item_append_text(item, (cnt==1)?" item":" items");
- }
- tree = proto_item_add_subtree(item, ett_id);
- ber_check_items (cnt, min_len, max_len, actx, item);
- }
- }
-
- /* loop over all entries until we reach the end of the sequence */
- while (offset < end_offset){
- gint8 ber_class;
- gboolean pc;
- gint32 tag;
- guint32 len;
- int eoffset;
- int hoffset;
- proto_item *cause;
- gboolean imp_tag;
-
- hoffset = offset;
- /*if(ind){ this sequence was of indefinite length, if this is implicit indefinite impossible maybe
- but ber dissector uses this to eat the tag length then pass into here... EOC still on there...*/
- if((tvb_get_guint8(tvb, offset)==0)&&(tvb_get_guint8(tvb, offset+1)==0)){
- if(show_internal_ber_fields){
- proto_tree_add_text(tree, tvb, hoffset, end_offset-hoffset, "SEQ OF EOC");
- }
- return offset+2;
- }
- /*}*/
- /* read header and len for next field */
- offset = get_ber_identifier(tvb, offset, &ber_class, &pc, &tag);
- offset = get_ber_length(tvb, offset, &len, &ind_field);
- eoffset = offset + len;
+ if(!implicit_tag){
+ hoffsetx = offset;
+ /* first we must read the sequence header */
+ offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &classx, &pcx, &tagx);
+ offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &lenx, &ind);
+ if(ind){
+ /* if the length is indefinite we dont really know (yet) where the
+ * object ends so assume it spans the rest of the tvb for now.
+ */
+ end_offset = offset + lenx;
+ } else {
+ end_offset = offset + lenx;
+ }
+
+ /* sanity check: we only handle Constructed Universal Sequences */
+ if((classx!=BER_CLASS_APP)&&(classx!=BER_CLASS_PRI))
+ if(!pcx
+ ||(!implicit_tag&&((classx!=BER_CLASS_UNI)
+ ||(tagx!=type)))) {
+ tvb_ensure_bytes_exist(tvb, hoffsetx, 2);
+ causex = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, lenx, (type==BER_UNI_TAG_SEQUENCE)?"set_of_expected":"sequence_of_expected", "BER Error: %s Of expected but class:%s(%d) %s tag:%d was unexpected",
+ (type==BER_UNI_TAG_SEQUENCE)?"Set":"Sequence", val_to_str(classx,ber_class_codes,"Unknown"), classx, pcx ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tagx);
+ expert_add_info_format(actx->pinfo, causex, PI_MALFORMED, PI_WARN, "BER Error: %s Of expected",(type==BER_UNI_TAG_SEQUENCE)?"Set":"Sequence");
+ if (decode_unexpected) {
+ proto_tree *unknown_tree = proto_item_add_subtree(causex, ett_ber_unknown);
+ dissect_unknown_ber(actx->pinfo, tvb, hoffsetx, unknown_tree);
+ }
+ return end_offset;
+ }
+ } else {
+ /* the tvb length should be correct now nope we could be comming from an implicit choice or sequence, thus we
+ read the items we match and return the length*/
+ lenx=tvb_length_remaining(tvb,offset);
+ end_offset = offset + lenx;
+ }
+
+ /* count number of items */
+ cnt = 0;
+ hoffsetx = offset;
+ /* only count the number of items IFF we have the full blob,
+ * else this will just generate a [short frame] before we even start
+ * dissecting a single item.
+ */
+ /* XXX Do we really need to count them at all ? ronnie */
+ if(tvb_length_remaining(tvb, offset)==tvb_reported_length_remaining(tvb, offset)){
+ while (offset < end_offset){
+ guint32 len;
+ gint s_offset;
+
+ s_offset = offset;
+
+ /*if(ind){ this sequence of was of indefinite length, if this is implicit indefinite impossible maybe
+ but ber dissector uses this to eat the tag length then pass into here... EOC still on there...*/
+ if((tvb_get_guint8(tvb, offset)==0)&&(tvb_get_guint8(tvb, offset+1)==0)){
+ break;
+ }
+ /*}*/
+
+ /* read header and len for next field */
+ offset = get_ber_identifier(tvb, offset, NULL, NULL, NULL);
+ offset = get_ber_length(tvb, offset, &len, &ind);
+ /* best place to get real length of implicit sequence of or set of is here... */
+ /* adjust end_offset if we find somthing that doesnt match */
+ offset += len;
+ cnt++;
+ if (offset <= s_offset)
+ THROW(ReportedBoundsError);
+ }
+ }
+ offset = hoffsetx;
+
+ /* create subtree */
+ if(hf_id >= 0) {
+ hfi = proto_registrar_get_nth(hf_id);
+ if(parent_tree){
+ if(hfi->type == FT_NONE) {
+ item = proto_tree_add_item(parent_tree, hf_id, tvb, offset, lenx, ENC_BIG_ENDIAN);
+ proto_item_append_text(item, ":");
+ } else {
+ item = proto_tree_add_uint(parent_tree, hf_id, tvb, offset, lenx, cnt);
+ proto_item_append_text(item, (cnt==1)?" item":" items");
+ }
+ tree = proto_item_add_subtree(item, ett_id);
+ ber_check_items (cnt, min_len, max_len, actx, item);
+ }
+ }
+
+ /* loop over all entries until we reach the end of the sequence */
+ while (offset < end_offset){
+ gint8 ber_class;
+ gboolean pc;
+ gint32 tag;
+ guint32 len;
+ int eoffset;
+ int hoffset;
+ proto_item *cause;
+ gboolean imp_tag;
+
+ hoffset = offset;
+ /*if(ind){ this sequence was of indefinite length, if this is implicit indefinite impossible maybe
+ but ber dissector uses this to eat the tag length then pass into here... EOC still on there...*/
+ if((tvb_get_guint8(tvb, offset)==0)&&(tvb_get_guint8(tvb, offset+1)==0)){
+ if(show_internal_ber_fields){
+ proto_tree_add_text(tree, tvb, hoffset, end_offset-hoffset, "SEQ OF EOC");
+ }
+ return offset+2;
+ }
+ /*}*/
+ /* read header and len for next field */
+ offset = get_ber_identifier(tvb, offset, &ber_class, &pc, &tag);
+ offset = get_ber_length(tvb, offset, &len, &ind_field);
+ eoffset = offset + len;
/* Make sure we move forward */
- if (eoffset <= hoffset)
- THROW(ReportedBoundsError);
-
- if((ber_class==BER_CLASS_UNI)&&(tag==BER_UNI_TAG_EOC)){
- /* This is a zero length sequence of*/
- hoffset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
- dissect_ber_length(actx->pinfo, tree, tvb, hoffset, NULL, NULL);
- return eoffset;
- }
- /* verify that this one is the one we want */
- /* ahup if we are implicit then we return to the uper layer how much we have used */
- if(seq->ber_class!=BER_CLASS_ANY){
- if((seq->ber_class!=ber_class)
- ||(seq->tag!=tag) ){
- if(!(seq->flags & BER_FLAGS_NOTCHKTAG)) {
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "wrong_field", "BER Error: Wrong field in SQ OF(tag %u expected %u)",tag,seq->tag);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Wrong field in Sequence Of");
- if (decode_unexpected) {
- proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
- dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
- }
- offset = eoffset;
- continue;
- /* wrong.... */
- }
- }
- }
-
- if(!(seq->flags & BER_FLAGS_NOOWNTAG) && !(seq->flags & BER_FLAGS_IMPLTAG)) {
- /* dissect header and len for field */
- hoffset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
- hoffset = dissect_ber_length(actx->pinfo, tree, tvb, hoffset, NULL, NULL);
- }
- if((seq->flags == BER_FLAGS_IMPLTAG)&&(seq->ber_class==BER_CLASS_CON)) {
- /* Constructed sequence of with a tag */
- /* dissect header and len for field */
- hoffset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
- hoffset = dissect_ber_length(actx->pinfo, tree, tvb, hoffset, NULL, NULL);
- /* Function has IMPLICIT TAG */
- }
-
- length_remaining=tvb_length_remaining(tvb, hoffset);
- if (length_remaining>eoffset-hoffset)
- length_remaining=eoffset-hoffset;
- next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, eoffset-hoffset);
-
- imp_tag = FALSE;
- if(seq->flags == BER_FLAGS_IMPLTAG)
- imp_tag = TRUE;
- /* call the dissector for this field */
- seq->func(imp_tag, next_tvb, 0, actx, tree, *seq->p_id);
- /* hold on if we are implicit and the result is zero, i.e. the item in the sequence of
- doesnt match the next item, thus this implicit sequence is over, return the number of bytes
- we have eaten to allow the possible upper sequence continue... */
- cnt++; /* rubbish*/
- offset = eoffset;
- }
-
- /* if we didnt end up at exactly offset, then we ate too many bytes */
- if(offset != end_offset) {
- tvb_ensure_bytes_exist(tvb, offset-2, 2);
- causex =proto_tree_add_string_format(tree, hf_ber_error, tvb, offset-2, 2, "illegal_length", "BER Error: %s Of ate %d too many bytes",
- (type==BER_UNI_TAG_SEQUENCE)?"Set":"Sequence", offset-end_offset);
- expert_add_info_format(actx->pinfo, causex, PI_MALFORMED, PI_WARN, "BER Error:too many byte in %s",(type==BER_UNI_TAG_SEQUENCE)?"Set":"Sequence");
- }
-
- return end_offset;
+ if (eoffset <= hoffset)
+ THROW(ReportedBoundsError);
+
+ if((ber_class==BER_CLASS_UNI)&&(tag==BER_UNI_TAG_EOC)){
+ /* This is a zero length sequence of*/
+ hoffset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
+ dissect_ber_length(actx->pinfo, tree, tvb, hoffset, NULL, NULL);
+ return eoffset;
+ }
+ /* verify that this one is the one we want */
+ /* ahup if we are implicit then we return to the uper layer how much we have used */
+ if(seq->ber_class!=BER_CLASS_ANY){
+ if((seq->ber_class!=ber_class)
+ ||(seq->tag!=tag) ){
+ if(!(seq->flags & BER_FLAGS_NOTCHKTAG)) {
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "wrong_field", "BER Error: Wrong field in SQ OF(tag %u expected %u)",tag,seq->tag);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Wrong field in Sequence Of");
+ if (decode_unexpected) {
+ proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
+ dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
+ }
+ offset = eoffset;
+ continue;
+ /* wrong.... */
+ }
+ }
+ }
+
+ if(!(seq->flags & BER_FLAGS_NOOWNTAG) && !(seq->flags & BER_FLAGS_IMPLTAG)) {
+ /* dissect header and len for field */
+ hoffset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
+ hoffset = dissect_ber_length(actx->pinfo, tree, tvb, hoffset, NULL, NULL);
+ }
+ if((seq->flags == BER_FLAGS_IMPLTAG)&&(seq->ber_class==BER_CLASS_CON)) {
+ /* Constructed sequence of with a tag */
+ /* dissect header and len for field */
+ hoffset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
+ hoffset = dissect_ber_length(actx->pinfo, tree, tvb, hoffset, NULL, NULL);
+ /* Function has IMPLICIT TAG */
+ }
+
+ length_remaining=tvb_length_remaining(tvb, hoffset);
+ if (length_remaining>eoffset-hoffset)
+ length_remaining=eoffset-hoffset;
+ next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, eoffset-hoffset);
+
+ imp_tag = FALSE;
+ if(seq->flags == BER_FLAGS_IMPLTAG)
+ imp_tag = TRUE;
+ /* call the dissector for this field */
+ seq->func(imp_tag, next_tvb, 0, actx, tree, *seq->p_id);
+ /* hold on if we are implicit and the result is zero, i.e. the item in the sequence of
+ doesnt match the next item, thus this implicit sequence is over, return the number of bytes
+ we have eaten to allow the possible upper sequence continue... */
+ cnt++; /* rubbish*/
+ offset = eoffset;
+ }
+
+ /* if we didnt end up at exactly offset, then we ate too many bytes */
+ if(offset != end_offset) {
+ tvb_ensure_bytes_exist(tvb, offset-2, 2);
+ causex =proto_tree_add_string_format(tree, hf_ber_error, tvb, offset-2, 2, "illegal_length", "BER Error: %s Of ate %d too many bytes",
+ (type==BER_UNI_TAG_SEQUENCE)?"Set":"Sequence", offset-end_offset);
+ expert_add_info_format(actx->pinfo, causex, PI_MALFORMED, PI_WARN, "BER Error:too many byte in %s",(type==BER_UNI_TAG_SEQUENCE)?"Set":"Sequence");
+ }
+
+ return end_offset;
}
static int dissect_ber_old_sq_of(gboolean implicit_tag, gint32 type, asn1_ctx_t *actx, proto_tree *parent_tree, tvbuff_t *tvb, int offset, const ber_old_sequence_t *seq, gint hf_id, gint ett_id) {
- gint8 classx;
- gboolean pcx, ind = FALSE, ind_field;
- gint32 tagx;
- guint32 lenx;
-
- proto_tree *tree = parent_tree;
- proto_item *item = NULL;
- proto_item *causex;
- int cnt, hoffsetx, end_offset;
- header_field_info *hfi;
- gint length_remaining;
+ gint8 classx;
+ gboolean pcx, ind = FALSE, ind_field;
+ gint32 tagx;
+ guint32 lenx;
+
+ proto_tree *tree = parent_tree;
+ proto_item *item = NULL;
+ proto_item *causex;
+ int cnt, hoffsetx, end_offset;
+ header_field_info *hfi;
+ /*gint length_remaining;*/
#ifdef DEBUG_BER_SQ_OF
{
@@ -3902,604 +3911,604 @@ printf("SQ OF dissect_ber_old_sq_of(%s) entered\n",name);
}
#endif
- if(!implicit_tag){
- hoffsetx = offset;
- /* first we must read the sequence header */
- offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &classx, &pcx, &tagx);
- offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &lenx, &ind);
- if(ind){
- /* if the length is indefinite we dont really know (yet) where the
- * object ends so assume it spans the rest of the tvb for now.
- */
- end_offset = offset + lenx;
- } else {
- end_offset = offset + lenx;
- }
-
- /* sanity check: we only handle Constructed Universal Sequences */
- if((classx!=BER_CLASS_APP)&&(classx!=BER_CLASS_PRI))
- if(!pcx
- ||(!implicit_tag&&((classx!=BER_CLASS_UNI)
- ||(tagx!=type)))) {
- tvb_ensure_bytes_exist(tvb, hoffsetx, 2);
- causex = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, lenx, (type==BER_UNI_TAG_SEQUENCE)?"set_of_expected":"sequence_of_expected", "BER Error: %s Of expected but class:%s(%d) %s tag:%d was unexpected",
- (type==BER_UNI_TAG_SEQUENCE)?"Set":"Sequence", val_to_str(classx,ber_class_codes,"Unknown"), classx, pcx ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tagx);
- expert_add_info_format(actx->pinfo, causex, PI_MALFORMED, PI_WARN, "BER Error: %s Of expected",(type==BER_UNI_TAG_SEQUENCE)?"Set":"Sequence");
- if (decode_unexpected) {
- proto_tree *unknown_tree = proto_item_add_subtree(causex, ett_ber_unknown);
- dissect_unknown_ber(actx->pinfo, tvb, hoffsetx, unknown_tree);
- }
- return end_offset;
- }
- } else {
- /* the tvb length should be correct now nope we could be comming from an implicit choice or sequence, thus we
- read the items we match and return the length*/
- lenx=tvb_length_remaining(tvb,offset);
- end_offset = offset + lenx;
- }
-
- /* count number of items */
- cnt = 0;
- hoffsetx = offset;
- /* only count the number of items IFF we have the full blob,
- * else this will just generate a [short frame] before we even start
- * dissecting a single item.
- */
- /* XXX Do we really need to count them at all ? ronnie */
- if(tvb_length_remaining(tvb, offset)==tvb_reported_length_remaining(tvb, offset)){
- while (offset < end_offset){
- guint32 len;
- gint s_offset;
-
- s_offset = offset;
-
- if(ind){ /* this sequence of was of indefinite length, so check for EOC */
- if((tvb_get_guint8(tvb, offset)==0)&&(tvb_get_guint8(tvb, offset+1)==0)){
- break;
- }
- }
-
- /* read header and len for next field */
- offset = get_ber_identifier(tvb, offset, NULL, NULL, NULL);
- offset = get_ber_length(tvb, offset, &len, &ind);
- /* best place to get real length of implicit sequence of or set of is here... */
- /* adjust end_offset if we find somthing that doesnt match */
- offset += len;
- cnt++;
- if (offset <= s_offset)
- THROW(ReportedBoundsError);
- }
- }
- offset = hoffsetx;
-
- /* create subtree */
- if(hf_id >= 0) {
- hfi = proto_registrar_get_nth(hf_id);
- if(parent_tree){
- if(hfi->type == FT_NONE) {
- item = proto_tree_add_item(parent_tree, hf_id, tvb, offset, lenx, ENC_BIG_ENDIAN);
- proto_item_append_text(item, ":");
- } else {
- item = proto_tree_add_uint(parent_tree, hf_id, tvb, offset, lenx, cnt);
- proto_item_append_text(item, (cnt==1)?" item":" items");
- }
- tree = proto_item_add_subtree(item, ett_id);
- }
- }
-
- /* loop over all entries until we reach the end of the sequence */
- while (offset < end_offset){
- gint8 ber_class;
- gboolean pc;
- gint32 tag;
- guint32 len;
- int eoffset;
- int hoffset;
- proto_item *cause;
-
- hoffset = offset;
- if(ind){ /*this sequence of was of indefinite length, so check for EOC */
- if((tvb_get_guint8(tvb, offset)==0)&&(tvb_get_guint8(tvb, offset+1)==0)){
- if(show_internal_ber_fields){
- proto_tree_add_text(tree, tvb, hoffset, end_offset-hoffset, "SEQ OF EOC");
- }
- return offset+2;
- }
- }
- /* read header and len for next field */
- offset = get_ber_identifier(tvb, offset, &ber_class, &pc, &tag);
- offset = get_ber_length(tvb, offset, &len, &ind_field);
- eoffset = offset + len;
- /* Make sure we move forward */
- if (eoffset <= hoffset)
- THROW(ReportedBoundsError);
-
- if((ber_class==BER_CLASS_UNI)&&(tag==BER_UNI_TAG_EOC)){
- /* This is a zero length sequence of*/
- hoffset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
- dissect_ber_length(actx->pinfo, tree, tvb, hoffset, NULL, NULL);
- return eoffset;
- }
- /* verify that this one is the one we want */
- /* ahup if we are implicit then we return to the uper layer how much we have used */
- if(seq->ber_class!=BER_CLASS_ANY){
- if((seq->ber_class!=ber_class)
- ||(seq->tag!=tag) ){
- if(!(seq->flags & BER_FLAGS_NOTCHKTAG)) {
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "wrong_field", "BER Error: Wrong field in SQ OF");
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Wrong field in Sequence Of");
- if (decode_unexpected) {
- proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
- dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
- }
- offset = eoffset;
- continue;
- /* wrong.... */
- }
- }
- }
-
- if(!(seq->flags & BER_FLAGS_NOOWNTAG) && !(seq->flags & BER_FLAGS_IMPLTAG)) {
- /* dissect header and len for field */
- hoffset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
- hoffset = dissect_ber_length(actx->pinfo, tree, tvb, hoffset, NULL, NULL);
- }
- if((seq->flags == BER_FLAGS_IMPLTAG)&&(seq->ber_class==BER_CLASS_CON)) {
- /* Constructed sequence of with a tag */
- /* dissect header and len for field */
- hoffset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
- hoffset = dissect_ber_length(actx->pinfo, tree, tvb, hoffset, NULL, NULL);
- }
-
- length_remaining=tvb_length_remaining(tvb, hoffset);
- if (length_remaining>eoffset-hoffset)
- length_remaining=eoffset-hoffset;
-
-
- /* call the dissector for this field */
- seq->func(tree, tvb, hoffset, actx);
- /* hold on if we are implicit and the result is zero, i.e. the item in the sequence of
- doesnt match the next item, thus this implicit sequence is over, return the number of bytes
- we have eaten to allow the possible upper sequence continue... */
- cnt++; /* rubbish*/
- offset = eoffset;
- }
-
- /* if we didnt end up at exactly offset, then we ate too many bytes */
- if(offset != end_offset) {
- tvb_ensure_bytes_exist(tvb, offset-2, 2);
- causex =proto_tree_add_string_format(tree, hf_ber_error, tvb, offset-2, 2, "illegal_length", "BER Error: %s Of ate %d too many bytes",
- (type==BER_UNI_TAG_SEQUENCE)?"Set":"Sequence", offset-end_offset);
- expert_add_info_format(actx->pinfo, causex, PI_MALFORMED, PI_WARN, "BER Error:too many byte in %s",(type==BER_UNI_TAG_SEQUENCE)?"Set":"Sequence");
- }
-
- return end_offset;
+ if(!implicit_tag){
+ hoffsetx = offset;
+ /* first we must read the sequence header */
+ offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &classx, &pcx, &tagx);
+ offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &lenx, &ind);
+ if(ind){
+ /* if the length is indefinite we dont really know (yet) where the
+ * object ends so assume it spans the rest of the tvb for now.
+ */
+ end_offset = offset + lenx;
+ } else {
+ end_offset = offset + lenx;
+ }
+
+ /* sanity check: we only handle Constructed Universal Sequences */
+ if((classx!=BER_CLASS_APP)&&(classx!=BER_CLASS_PRI))
+ if(!pcx
+ ||(!implicit_tag&&((classx!=BER_CLASS_UNI)
+ ||(tagx!=type)))) {
+ tvb_ensure_bytes_exist(tvb, hoffsetx, 2);
+ causex = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, lenx, (type==BER_UNI_TAG_SEQUENCE)?"set_of_expected":"sequence_of_expected", "BER Error: %s Of expected but class:%s(%d) %s tag:%d was unexpected",
+ (type==BER_UNI_TAG_SEQUENCE)?"Set":"Sequence", val_to_str(classx,ber_class_codes,"Unknown"), classx, pcx ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tagx);
+ expert_add_info_format(actx->pinfo, causex, PI_MALFORMED, PI_WARN, "BER Error: %s Of expected",(type==BER_UNI_TAG_SEQUENCE)?"Set":"Sequence");
+ if (decode_unexpected) {
+ proto_tree *unknown_tree = proto_item_add_subtree(causex, ett_ber_unknown);
+ dissect_unknown_ber(actx->pinfo, tvb, hoffsetx, unknown_tree);
+ }
+ return end_offset;
+ }
+ } else {
+ /* the tvb length should be correct now nope we could be comming from an implicit choice or sequence, thus we
+ read the items we match and return the length*/
+ lenx=tvb_length_remaining(tvb,offset);
+ end_offset = offset + lenx;
+ }
+
+ /* count number of items */
+ cnt = 0;
+ hoffsetx = offset;
+ /* only count the number of items IFF we have the full blob,
+ * else this will just generate a [short frame] before we even start
+ * dissecting a single item.
+ */
+ /* XXX Do we really need to count them at all ? ronnie */
+ if(tvb_length_remaining(tvb, offset)==tvb_reported_length_remaining(tvb, offset)){
+ while (offset < end_offset){
+ guint32 len;
+ gint s_offset;
+
+ s_offset = offset;
+
+ if(ind){ /* this sequence of was of indefinite length, so check for EOC */
+ if((tvb_get_guint8(tvb, offset)==0)&&(tvb_get_guint8(tvb, offset+1)==0)){
+ break;
+ }
+ }
+
+ /* read header and len for next field */
+ offset = get_ber_identifier(tvb, offset, NULL, NULL, NULL);
+ offset = get_ber_length(tvb, offset, &len, &ind);
+ /* best place to get real length of implicit sequence of or set of is here... */
+ /* adjust end_offset if we find somthing that doesn't match */
+ offset += len;
+ cnt++;
+ if (offset <= s_offset)
+ THROW(ReportedBoundsError);
+ }
+ }
+ offset = hoffsetx;
+
+ /* create subtree */
+ if(hf_id >= 0) {
+ hfi = proto_registrar_get_nth(hf_id);
+ if(parent_tree){
+ if(hfi->type == FT_NONE) {
+ item = proto_tree_add_item(parent_tree, hf_id, tvb, offset, lenx, ENC_BIG_ENDIAN);
+ proto_item_append_text(item, ":");
+ } else {
+ item = proto_tree_add_uint(parent_tree, hf_id, tvb, offset, lenx, cnt);
+ proto_item_append_text(item, (cnt==1)?" item":" items");
+ }
+ tree = proto_item_add_subtree(item, ett_id);
+ }
+ }
+
+ /* loop over all entries until we reach the end of the sequence */
+ while (offset < end_offset){
+ gint8 ber_class;
+ gboolean pc;
+ gint32 tag;
+ guint32 len;
+ int eoffset;
+ int hoffset;
+ proto_item *cause;
+
+ hoffset = offset;
+ if(ind){ /*this sequence of was of indefinite length, so check for EOC */
+ if((tvb_get_guint8(tvb, offset)==0)&&(tvb_get_guint8(tvb, offset+1)==0)){
+ if(show_internal_ber_fields){
+ proto_tree_add_text(tree, tvb, hoffset, end_offset-hoffset, "SEQ OF EOC");
+ }
+ return offset+2;
+ }
+ }
+ /* read header and len for next field */
+ offset = get_ber_identifier(tvb, offset, &ber_class, &pc, &tag);
+ offset = get_ber_length(tvb, offset, &len, &ind_field);
+ eoffset = offset + len;
+ /* Make sure we move forward */
+ if (eoffset <= hoffset)
+ THROW(ReportedBoundsError);
+
+ if((ber_class==BER_CLASS_UNI)&&(tag==BER_UNI_TAG_EOC)){
+ /* This is a zero length sequence of*/
+ hoffset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
+ dissect_ber_length(actx->pinfo, tree, tvb, hoffset, NULL, NULL);
+ return eoffset;
+ }
+ /* verify that this one is the one we want */
+ /* ahup if we are implicit then we return to the uper layer how much we have used */
+ if(seq->ber_class!=BER_CLASS_ANY){
+ if((seq->ber_class!=ber_class)
+ ||(seq->tag!=tag) ){
+ if(!(seq->flags & BER_FLAGS_NOTCHKTAG)) {
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "wrong_field", "BER Error: Wrong field in SQ OF");
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: Wrong field in Sequence Of");
+ if (decode_unexpected) {
+ proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
+ dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
+ }
+ offset = eoffset;
+ continue;
+ /* wrong.... */
+ }
+ }
+ }
+
+ if(!(seq->flags & BER_FLAGS_NOOWNTAG) && !(seq->flags & BER_FLAGS_IMPLTAG)) {
+ /* dissect header and len for field */
+ hoffset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
+ hoffset = dissect_ber_length(actx->pinfo, tree, tvb, hoffset, NULL, NULL);
+ }
+ if((seq->flags == BER_FLAGS_IMPLTAG)&&(seq->ber_class==BER_CLASS_CON)) {
+ /* Constructed sequence of with a tag */
+ /* dissect header and len for field */
+ hoffset = dissect_ber_identifier(actx->pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
+ hoffset = dissect_ber_length(actx->pinfo, tree, tvb, hoffset, NULL, NULL);
+ }
+
+ /*length_remaining=tvb_length_remaining(tvb, hoffset);
+ if (length_remaining>eoffset-hoffset)
+ length_remaining=eoffset-hoffset;*/
+
+
+ /* call the dissector for this field */
+ seq->func(tree, tvb, hoffset, actx);
+ /* hold on if we are implicit and the result is zero, i.e. the item in the sequence of
+ doesnt match the next item, thus this implicit sequence is over, return the number of bytes
+ we have eaten to allow the possible upper sequence continue... */
+ cnt++; /* rubbish*/
+ offset = eoffset;
+ }
+
+ /* if we didnt end up at exactly offset, then we ate too many bytes */
+ if(offset != end_offset) {
+ tvb_ensure_bytes_exist(tvb, offset-2, 2);
+ causex =proto_tree_add_string_format(tree, hf_ber_error, tvb, offset-2, 2, "illegal_length", "BER Error: %s Of ate %d too many bytes",
+ (type==BER_UNI_TAG_SEQUENCE)?"Set":"Sequence", offset-end_offset);
+ expert_add_info_format(actx->pinfo, causex, PI_MALFORMED, PI_WARN, "BER Error:too many byte in %s",(type==BER_UNI_TAG_SEQUENCE)?"Set":"Sequence");
+ }
+
+ return end_offset;
}
int dissect_ber_constrained_sequence_of(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *parent_tree, tvbuff_t *tvb, int offset, gint32 min_len, gint32 max_len, const ber_sequence_t *seq, gint hf_id, gint ett_id) {
- return dissect_ber_sq_of(implicit_tag, BER_UNI_TAG_SEQUENCE, actx, parent_tree, tvb, offset, min_len, max_len, seq, hf_id, ett_id);
+ return dissect_ber_sq_of(implicit_tag, BER_UNI_TAG_SEQUENCE, actx, parent_tree, tvb, offset, min_len, max_len, seq, hf_id, ett_id);
}
int dissect_ber_sequence_of(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *parent_tree, tvbuff_t *tvb, int offset, const ber_sequence_t *seq, gint hf_id, gint ett_id) {
- return dissect_ber_sq_of(implicit_tag, BER_UNI_TAG_SEQUENCE, actx, parent_tree, tvb, offset, NO_BOUND, NO_BOUND, seq, hf_id, ett_id);
+ return dissect_ber_sq_of(implicit_tag, BER_UNI_TAG_SEQUENCE, actx, parent_tree, tvb, offset, NO_BOUND, NO_BOUND, seq, hf_id, ett_id);
}
int dissect_ber_constrained_set_of(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *parent_tree, tvbuff_t *tvb, int offset, gint32 min_len, gint32 max_len, const ber_sequence_t *seq, gint hf_id, gint ett_id) {
- return dissect_ber_sq_of(implicit_tag, BER_UNI_TAG_SET, actx, parent_tree, tvb, offset, min_len, max_len, seq, hf_id, ett_id);
+ return dissect_ber_sq_of(implicit_tag, BER_UNI_TAG_SET, actx, parent_tree, tvb, offset, min_len, max_len, seq, hf_id, ett_id);
}
int dissect_ber_set_of(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *parent_tree, tvbuff_t *tvb, int offset, const ber_sequence_t *seq, gint hf_id, gint ett_id) {
- return dissect_ber_sq_of(implicit_tag, BER_UNI_TAG_SET, actx, parent_tree, tvb, offset, NO_BOUND, NO_BOUND, seq, hf_id, ett_id);
+ return dissect_ber_sq_of(implicit_tag, BER_UNI_TAG_SET, actx, parent_tree, tvb, offset, NO_BOUND, NO_BOUND, seq, hf_id, ett_id);
}
int dissect_ber_old_sequence_of(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *parent_tree, tvbuff_t *tvb, int offset, const ber_old_sequence_t *seq, gint hf_id, gint ett_id) {
- return dissect_ber_old_sq_of(implicit_tag, BER_UNI_TAG_SEQUENCE, actx, parent_tree, tvb, offset, seq, hf_id, ett_id);
+ return dissect_ber_old_sq_of(implicit_tag, BER_UNI_TAG_SEQUENCE, actx, parent_tree, tvb, offset, seq, hf_id, ett_id);
}
int dissect_ber_old_set_of(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *parent_tree, tvbuff_t *tvb, int offset, const ber_old_sequence_t *seq, gint hf_id, gint ett_id) {
- return dissect_ber_old_sq_of(implicit_tag, BER_UNI_TAG_SET, actx, parent_tree, tvb, offset, seq, hf_id, ett_id);
+ return dissect_ber_old_sq_of(implicit_tag, BER_UNI_TAG_SET, actx, parent_tree, tvb, offset, seq, hf_id, ett_id);
}
int
dissect_ber_GeneralizedTime(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint hf_id)
{
- char str[35];
- int tmp_int;
- const guint8 *tmpstr;
- char *strptr;
- char first_delim[2];
- int first_digits;
- char second_delim[2];
- int second_digits;
- int ret;
- gint8 ber_class;
- gboolean pc;
- gint32 tag;
- guint32 len;
- int end_offset;
- int hoffset;
- proto_item *cause;
-
- if(!implicit_tag){
- hoffset = offset;
- offset=dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
- offset=dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, NULL);
- end_offset=offset+len;
-
- /* sanity check. we only handle universal/generalized time */
- if( (ber_class!=BER_CLASS_UNI)
- ||(tag!=BER_UNI_TAG_GeneralizedTime)){
- tvb_ensure_bytes_exist(tvb, hoffset, 2);
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "generalized_time_expected", "BER Error: GeneralizedTime expected but class:%s(%d) %s tag:%d was unexpected", val_to_str(ber_class,ber_class_codes,"Unknown"), ber_class, pc ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tag);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: GeneralizedTime expected");
- if (decode_unexpected) {
- proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
- dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
- }
- return end_offset;
- }
- } else {
- len=tvb_length_remaining(tvb,offset);
- end_offset=offset+len;
- }
-
- if (len < 14 || len > 23) {
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "illegal_length", "BER Error: GeneralizedTime invalid length: %u", len);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: GeneralizedTime invalid length");
- if (decode_unexpected) {
- proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
- dissect_unknown_ber(actx->pinfo, tvb, offset, unknown_tree);
- }
- return end_offset;
- }
-
- tmpstr=tvb_get_ephemeral_string(tvb, offset, len);
- strptr = str;
- /* those fields are allways present */
- strptr += g_snprintf(str, 20, "%.4s-%.2s-%.2s %.2s:%.2s:%.2s",
- tmpstr, tmpstr+4, tmpstr+6, tmpstr+8,
- tmpstr+10, tmpstr+12);
-
- first_delim[0]=0;
- second_delim[0]=0;
- ret = sscanf( tmpstr, "%14d%1[.,+-Z]%4d%1[+-Z]%4d", &tmp_int, first_delim, &first_digits, second_delim, &second_digits);
- /* tmp_int does not contain valid value bacause of overflow but we use it just for format checking */
- if (ret < 1) {
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "invalid_generalized_time", "BER Error: GeneralizedTime invalid format: %s", tmpstr);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: GeneralizedTime invalid format");
- if (decode_unexpected) {
- proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
- dissect_unknown_ber(actx->pinfo, tvb, offset, unknown_tree);
- }
- return end_offset;
- }
-
- switch (first_delim[0]) {
- case '.':
- case ',':
- strptr += g_snprintf(strptr, 5, "%c%.3d", first_delim[0], first_digits);
- switch (second_delim[0]) {
- case '+':
- case '-':
- g_snprintf(strptr, 12, " (UTC%c%.4d)", second_delim[0], second_digits);
- break;
- case 'Z':
- g_snprintf(strptr, 7, " (UTC)");
- break;
- case 0:
- break;
- default:
- /* handle the malformed field */
- break;
- }
- break;
- case '+':
- case '-':
- g_snprintf(strptr, 12, " (UTC%c%.4d)", first_delim[0], first_digits);
- break;
- case 'Z':
- g_snprintf(strptr, 7, " (UTC)");
- break;
- case 0:
- break;
- default:
- /* handle the malformed field */
- break;
- }
-
- if(hf_id >= 0){
- proto_tree_add_string(tree, hf_id, tvb, offset, len, str);
- }
-
- offset+=len;
- return offset;
+ char str[35];
+ int tmp_int;
+ const guint8 *tmpstr;
+ char *strptr;
+ char first_delim[2];
+ int first_digits;
+ char second_delim[2];
+ int second_digits;
+ int ret;
+ gint8 ber_class;
+ gboolean pc;
+ gint32 tag;
+ guint32 len;
+ int end_offset;
+ int hoffset;
+ proto_item *cause;
+
+ if(!implicit_tag){
+ hoffset = offset;
+ offset=dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
+ offset=dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, NULL);
+ end_offset=offset+len;
+
+ /* sanity check. we only handle universal/generalized time */
+ if( (ber_class!=BER_CLASS_UNI)
+ ||(tag!=BER_UNI_TAG_GeneralizedTime)){
+ tvb_ensure_bytes_exist(tvb, hoffset, 2);
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "generalized_time_expected", "BER Error: GeneralizedTime expected but class:%s(%d) %s tag:%d was unexpected", val_to_str(ber_class,ber_class_codes,"Unknown"), ber_class, pc ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tag);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: GeneralizedTime expected");
+ if (decode_unexpected) {
+ proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
+ dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
+ }
+ return end_offset;
+ }
+ } else {
+ len=tvb_length_remaining(tvb,offset);
+ end_offset=offset+len;
+ }
+
+ if (len < 14 || len > 23) {
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "illegal_length", "BER Error: GeneralizedTime invalid length: %u", len);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: GeneralizedTime invalid length");
+ if (decode_unexpected) {
+ proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
+ dissect_unknown_ber(actx->pinfo, tvb, offset, unknown_tree);
+ }
+ return end_offset;
+ }
+
+ tmpstr=tvb_get_ephemeral_string(tvb, offset, len);
+ strptr = str;
+ /* those fields are allways present */
+ strptr += g_snprintf(str, 20, "%.4s-%.2s-%.2s %.2s:%.2s:%.2s",
+ tmpstr, tmpstr+4, tmpstr+6, tmpstr+8,
+ tmpstr+10, tmpstr+12);
+
+ first_delim[0]=0;
+ second_delim[0]=0;
+ ret = sscanf( tmpstr, "%14d%1[.,+-Z]%4d%1[+-Z]%4d", &tmp_int, first_delim, &first_digits, second_delim, &second_digits);
+ /* tmp_int does not contain valid value bacause of overflow but we use it just for format checking */
+ if (ret < 1) {
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "invalid_generalized_time", "BER Error: GeneralizedTime invalid format: %s", tmpstr);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: GeneralizedTime invalid format");
+ if (decode_unexpected) {
+ proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
+ dissect_unknown_ber(actx->pinfo, tvb, offset, unknown_tree);
+ }
+ return end_offset;
+ }
+
+ switch (first_delim[0]) {
+ case '.':
+ case ',':
+ strptr += g_snprintf(strptr, 5, "%c%.3d", first_delim[0], first_digits);
+ switch (second_delim[0]) {
+ case '+':
+ case '-':
+ g_snprintf(strptr, 12, " (UTC%c%.4d)", second_delim[0], second_digits);
+ break;
+ case 'Z':
+ g_snprintf(strptr, 7, " (UTC)");
+ break;
+ case 0:
+ break;
+ default:
+ /* handle the malformed field */
+ break;
+ }
+ break;
+ case '+':
+ case '-':
+ g_snprintf(strptr, 12, " (UTC%c%.4d)", first_delim[0], first_digits);
+ break;
+ case 'Z':
+ g_snprintf(strptr, 7, " (UTC)");
+ break;
+ case 0:
+ break;
+ default:
+ /* handle the malformed field */
+ break;
+ }
+
+ if(hf_id >= 0){
+ proto_tree_add_string(tree, hf_id, tvb, offset, len, str);
+ }
+
+ offset+=len;
+ return offset;
}
int
dissect_ber_UTCTime(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint hf_id)
{
- char outstr[33];
- char *outstrptr = outstr;
- const guint8 *instr;
- gint8 ber_class;
- gboolean pc;
- gint32 tag;
- guint32 len, i, n;
- int hoffset;
- proto_item *cause;
- proto_tree *error_tree;
- gchar *error_str = NULL;
-
- if(!implicit_tag){
- hoffset = offset;
- offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
- offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, NULL);
-
- /* sanity check: we only handle UTCTime */
- if( (ber_class!=BER_CLASS_UNI) || (tag!=BER_UNI_TAG_UTCTime) ) {
- tvb_ensure_bytes_exist(tvb, hoffset, 2);
- cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "utctime_expected",
- "BER Error: UTCTime expected but class:%s(%d) %s tag:%d was unexpected",
- val_to_str(ber_class,ber_class_codes,"Unknown"), ber_class,
- pc ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tag);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: UTCTime expected");
- if (decode_unexpected) {
- proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
- dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
- }
- return offset+len;
- }
- } else {
- len = tvb_length_remaining(tvb,offset);
- }
-
- if (len < 10 || len > 19) {
- error_str = g_strdup_printf("BER Error: UTCTime invalid length: %u", len);
- instr = tvb_get_ephemeral_string(tvb, offset, len > 19 ? 19 : len);
- goto malformed;
- }
-
- instr = tvb_get_ephemeral_string(tvb, offset, len);
-
- /* YYMMDDhhmm */
- for(i=0;i<10;i++) {
- if(instr[i] < '0' || instr[i] > '9') {
- error_str = g_strdup("BER Error: malformed UTCTime encoding, "
- "first 10 octets have to contain YYMMDDhhmm in digits");
- goto malformed;
- }
- }
- g_snprintf(outstrptr, 15, "%.2s-%.2s-%.2s %.2s:%.2s", instr, instr+2, instr+4, instr+6, instr+8);
- outstrptr+= 14;
-
- /* (ss)? */
- if(len >= 12) {
- if(instr[i] >= '0' && instr[i] <= '9') {
- i++;
- if(instr[i] >= '0' && instr[i] <= '9') {
- i++;
- g_snprintf(outstrptr, 4, ":%.2s", instr+10);
- outstrptr+=3;
- } else {
- error_str = g_strdup("BER Error: malformed UTCTime encoding, "
- "if 11th octet is a digit for seconds, "
- "the 12th octet has to be a digit, too");
- goto malformed;
- }
- }
- }
-
- /* Z|([+-]hhmm) */
- switch (instr[i]) {
- case 'Z':
- if(len!=i+1) {
- error_str = g_strdup("BER Error: malformed UTCTime encoding, "
- "there must be no further octets after \'Z\'");
- goto malformed;
- }
- g_snprintf(outstrptr, 7, " (UTC)");
- i++;
- break;
- case '-':
- case '+':
- if(len!=i+5) {
- error_str = g_strdup("BER Error: malformed UTCTime encoding, "
- "4 digits must follow on \'+\' resp. \'-\'");
- goto malformed;
- }
- for(n=i+1;n<i+5;n++) {
- if(instr[n] < '0' || instr[n] > '9') {
- error_str = g_strdup("BER Error: malformed UTCTime encoding, "
- "4 digits must follow on \'+\' resp. \'-\'");
- goto malformed;
- }
- }
- g_snprintf(outstrptr, 12, " (UTC%c%.4s)", instr[i], instr+i+1);
- i+=5;
- break;
- default:
- error_str = g_strdup_printf("BER Error: malformed UTCTime encoding, "
- "unexpected character in %dth octet, "
- "must be \'Z\', \'+\' or \'-\'", i+1);
- goto malformed;
- break;
- }
-
- if(len!=i) {
- error_str = g_strdup_printf("BER Error: malformed UTCTime encoding, "
- "%d unexpected character%s after %dth octet",
- len-i, (len==i-1?"s":""), i);
- goto malformed;
- }
-
- if(hf_id >= 0){
- proto_tree_add_string(tree, hf_id, tvb, offset, len, outstr);
- }
-
- return offset+len;
+ char outstr[33];
+ char *outstrptr = outstr;
+ const guint8 *instr;
+ gint8 ber_class;
+ gboolean pc;
+ gint32 tag;
+ guint32 len, i, n;
+ int hoffset;
+ proto_item *cause;
+ proto_tree *error_tree;
+ gchar *error_str = NULL;
+
+ if(!implicit_tag){
+ hoffset = offset;
+ offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &ber_class, &pc, &tag);
+ offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, NULL);
+
+ /* sanity check: we only handle UTCTime */
+ if( (ber_class!=BER_CLASS_UNI) || (tag!=BER_UNI_TAG_UTCTime) ) {
+ tvb_ensure_bytes_exist(tvb, hoffset, 2);
+ cause = proto_tree_add_string_format(tree, hf_ber_error, tvb, offset, len, "utctime_expected",
+ "BER Error: UTCTime expected but class:%s(%d) %s tag:%d was unexpected",
+ val_to_str(ber_class,ber_class_codes,"Unknown"), ber_class,
+ pc ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tag);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: UTCTime expected");
+ if (decode_unexpected) {
+ proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
+ dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
+ }
+ return offset+len;
+ }
+ } else {
+ len = tvb_length_remaining(tvb,offset);
+ }
+
+ if (len < 10 || len > 19) {
+ error_str = g_strdup_printf("BER Error: UTCTime invalid length: %u", len);
+ instr = tvb_get_ephemeral_string(tvb, offset, len > 19 ? 19 : len);
+ goto malformed;
+ }
+
+ instr = tvb_get_ephemeral_string(tvb, offset, len);
+
+ /* YYMMDDhhmm */
+ for(i=0;i<10;i++) {
+ if(instr[i] < '0' || instr[i] > '9') {
+ error_str = g_strdup("BER Error: malformed UTCTime encoding, "
+ "first 10 octets have to contain YYMMDDhhmm in digits");
+ goto malformed;
+ }
+ }
+ g_snprintf(outstrptr, 15, "%.2s-%.2s-%.2s %.2s:%.2s", instr, instr+2, instr+4, instr+6, instr+8);
+ outstrptr+= 14;
+
+ /* (ss)? */
+ if(len >= 12) {
+ if(instr[i] >= '0' && instr[i] <= '9') {
+ i++;
+ if(instr[i] >= '0' && instr[i] <= '9') {
+ i++;
+ g_snprintf(outstrptr, 4, ":%.2s", instr+10);
+ outstrptr+=3;
+ } else {
+ error_str = g_strdup("BER Error: malformed UTCTime encoding, "
+ "if 11th octet is a digit for seconds, "
+ "the 12th octet has to be a digit, too");
+ goto malformed;
+ }
+ }
+ }
+
+ /* Z|([+-]hhmm) */
+ switch (instr[i]) {
+ case 'Z':
+ if(len!=i+1) {
+ error_str = g_strdup("BER Error: malformed UTCTime encoding, "
+ "there must be no further octets after \'Z\'");
+ goto malformed;
+ }
+ g_snprintf(outstrptr, 7, " (UTC)");
+ i++;
+ break;
+ case '-':
+ case '+':
+ if(len!=i+5) {
+ error_str = g_strdup("BER Error: malformed UTCTime encoding, "
+ "4 digits must follow on \'+\' resp. \'-\'");
+ goto malformed;
+ }
+ for(n=i+1;n<i+5;n++) {
+ if(instr[n] < '0' || instr[n] > '9') {
+ error_str = g_strdup("BER Error: malformed UTCTime encoding, "
+ "4 digits must follow on \'+\' resp. \'-\'");
+ goto malformed;
+ }
+ }
+ g_snprintf(outstrptr, 12, " (UTC%c%.4s)", instr[i], instr+i+1);
+ i+=5;
+ break;
+ default:
+ error_str = g_strdup_printf("BER Error: malformed UTCTime encoding, "
+ "unexpected character in %dth octet, "
+ "must be \'Z\', \'+\' or \'-\'", i+1);
+ goto malformed;
+ break;
+ }
+
+ if(len!=i) {
+ error_str = g_strdup_printf("BER Error: malformed UTCTime encoding, "
+ "%d unexpected character%s after %dth octet",
+ len-i, (len==i-1?"s":""), i);
+ goto malformed;
+ }
+
+ if(hf_id >= 0){
+ proto_tree_add_string(tree, hf_id, tvb, offset, len, outstr);
+ }
+
+ return offset+len;
malformed:
- if(hf_id >= 0){
- cause = proto_tree_add_string(tree, hf_id, tvb, offset, len, instr);
- error_tree = proto_item_add_subtree(cause, ett_ber_unknown);
- } else {
- error_tree = tree;
- }
-
- cause = proto_tree_add_string_format(error_tree, hf_ber_error, tvb, offset, len, "invalid_utctime", "%s", error_str);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: malformed UTCTime encoding");
- g_free (error_str);
+ if(hf_id >= 0){
+ cause = proto_tree_add_string(tree, hf_id, tvb, offset, len, instr);
+ error_tree = proto_item_add_subtree(cause, ett_ber_unknown);
+ } else {
+ error_tree = tree;
+ }
+
+ cause = proto_tree_add_string_format(error_tree, hf_ber_error, tvb, offset, len, "invalid_utctime", "%s", error_str);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: malformed UTCTime encoding");
+ g_free (error_str);
- return offset+len;
+ return offset+len;
}
/* 8.6 Encoding of a bitstring value */
int dissect_ber_constrained_bitstring(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *parent_tree, tvbuff_t *tvb, int offset, gint32 min_len, gint32 max_len, const asn_namedbit *named_bits, gint hf_id, gint ett_id, tvbuff_t **out_tvb)
{
- gint8 ber_class;
- gboolean pc, ind;
- gint32 tag;
- guint32 len, byteno;
- guint8 pad=0, b0, b1, val, *bitstring;
- int end_offset;
- int hoffset;
- proto_item *item = NULL;
- proto_item *cause;
- proto_tree *tree = NULL;
- const asn_namedbit *nb;
- const char *sep;
- gboolean term;
-
- if(!implicit_tag){
- hoffset = offset;
- /* read header and len for the octet string */
- offset = dissect_ber_identifier(actx->pinfo, parent_tree, tvb, offset, &ber_class, &pc, &tag);
- offset = dissect_ber_length(actx->pinfo, parent_tree, tvb, offset, &len, &ind);
- end_offset = offset + len;
-
- /* sanity check: we only handle Universal BitStrings */
-
- /* for an IMPLICIT APPLICATION tag asn2eth seems to call this
- function with implicit_tag = FALSE. BER_FLAGS_NOOWNTAG was
- set so the APPLICATION tag was still present.
- So here we relax it for APPLICATION tags. CONTEXT tags may
- still cause a problem. */
-
- if(!implicit_tag && (ber_class!=BER_CLASS_APP)) {
- if( (ber_class!=BER_CLASS_UNI)
- ||(tag!=BER_UNI_TAG_BITSTRING) ){
- tvb_ensure_bytes_exist(tvb, hoffset, 2);
- cause = proto_tree_add_string_format(parent_tree, hf_ber_error, tvb, offset, len, "bitstring_expected", "BER Error: BitString expected but class:%s(%d) %s tag:%d was unexpected", val_to_str(ber_class,ber_class_codes,"Unknown"), ber_class, pc ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tag);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: BitString expected");
- if (decode_unexpected) {
- proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
- dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
- }
- return end_offset;
- }
- }
- } else {
- pc=0;
- len=tvb_length_remaining(tvb,offset);
- end_offset=offset+len;
- }
-
- actx->created_item = NULL;
-
- if(pc) {
- /* constructed */
- /* TO DO */
- } else {
- /* primitive */
- pad = tvb_get_guint8(tvb, offset);
- if(pad == 0 && len == 1) {
- /* empty */
- proto_tree_add_item(parent_tree, hf_ber_bitstring_empty, tvb, offset, 1, ENC_BIG_ENDIAN);
- } else {
- /* padding */
- proto_item *pad_item = proto_tree_add_item(parent_tree, hf_ber_bitstring_padding, tvb, offset, 1, ENC_BIG_ENDIAN);
- if (pad > 7) {
- expert_add_info_format(actx->pinfo, pad_item, PI_UNDECODED, PI_WARN,
- "Illegal padding (0 .. 7): %d", pad);
- }
- }
- offset++;
- len--;
- if(hf_id >= 0) {
- item = proto_tree_add_item(parent_tree, hf_id, tvb, offset, len, ENC_BIG_ENDIAN);
- actx->created_item = item;
- if(ett_id != -1) {
- tree = proto_item_add_subtree(item, ett_id);
- }
- }
- if(out_tvb) {
- if(len<=(guint32)tvb_length_remaining(tvb, offset)){
- *out_tvb = tvb_new_subset(tvb, offset, len, len);
- } else {
- *out_tvb = tvb_new_subset_remaining(tvb, offset);
- }
- }
- }
-
- if(named_bits) {
- sep = " (";
- term = FALSE;
- nb = named_bits;
- bitstring = tvb_get_ephemeral_string(tvb, offset, len);
-
- while (nb->p_id) {
- if(len > 0 && nb->bit < (8*len-pad)) {
- val = tvb_get_guint8(tvb, offset + nb->bit/8);
- bitstring[(nb->bit/8)] &= ~(0x80 >> (nb->bit%8));
- val &= 0x80 >> (nb->bit%8);
- b0 = (nb->gb0 == -1) ? nb->bit/8 :
- ((guint32)nb->gb0)/8;
- b1 = (nb->gb1 == -1) ? nb->bit/8 :
- ((guint32)nb->gb1)/8;
- proto_tree_add_item(tree, *(nb->p_id), tvb, offset + b0, b1 - b0 + 1, ENC_BIG_ENDIAN);
- } else { /* 8.6.2.4 */
- val = 0;
- proto_tree_add_boolean(tree, *(nb->p_id), tvb, offset + len, 0, 0x00);
- }
- if(val) {
- if(item && nb->tstr) {
- proto_item_append_text(item, "%s%s", sep, nb->tstr);
- sep = ", ";
- term = TRUE;
- }
- } else {
- if(item && nb->fstr) {
- proto_item_append_text(item, "%s%s", sep, nb->fstr);
- sep = ", ";
- term = TRUE;
- }
- }
- nb++;
- }
- if(term)
- proto_item_append_text(item, ")");
-
- for (byteno = 0; byteno < len; byteno++) {
- if (bitstring[byteno]) {
- expert_add_info_format(actx->pinfo, item, PI_UNDECODED, PI_WARN,
- "Unknown bit(s): 0x%s", bytes_to_str(bitstring, len));
- break;
- }
- }
- }
-
- if (pad > 0 && pad < 8 && len > 0) {
- guint8 bits_in_pad = tvb_get_guint8(tvb, offset + len - 1) & (0xFF >> (8-pad));
- if (bits_in_pad) {
- expert_add_info_format(actx->pinfo, item, PI_UNDECODED, PI_WARN,
- "Bits set in padded area: 0x%02x", bits_in_pad);
- }
- }
-
- ber_check_length(8*len-pad, min_len, max_len, actx, item, TRUE);
-
- return end_offset;
+ gint8 ber_class;
+ gboolean pc, ind;
+ gint32 tag;
+ guint32 len, byteno;
+ guint8 pad=0, b0, b1, val, *bitstring;
+ int end_offset;
+ int hoffset;
+ proto_item *item = NULL;
+ proto_item *cause;
+ proto_tree *tree = NULL;
+ const asn_namedbit *nb;
+ const char *sep;
+ gboolean term;
+
+ if(!implicit_tag){
+ hoffset = offset;
+ /* read header and len for the octet string */
+ offset = dissect_ber_identifier(actx->pinfo, parent_tree, tvb, offset, &ber_class, &pc, &tag);
+ offset = dissect_ber_length(actx->pinfo, parent_tree, tvb, offset, &len, &ind);
+ end_offset = offset + len;
+
+ /* sanity check: we only handle Universal BitStrings */
+
+ /* for an IMPLICIT APPLICATION tag asn2eth seems to call this
+ function with implicit_tag = FALSE. BER_FLAGS_NOOWNTAG was
+ set so the APPLICATION tag was still present.
+ So here we relax it for APPLICATION tags. CONTEXT tags may
+ still cause a problem. */
+
+ if(!implicit_tag && (ber_class!=BER_CLASS_APP)) {
+ if( (ber_class!=BER_CLASS_UNI)
+ ||(tag!=BER_UNI_TAG_BITSTRING) ){
+ tvb_ensure_bytes_exist(tvb, hoffset, 2);
+ cause = proto_tree_add_string_format(parent_tree, hf_ber_error, tvb, offset, len, "bitstring_expected", "BER Error: BitString expected but class:%s(%d) %s tag:%d was unexpected", val_to_str(ber_class,ber_class_codes,"Unknown"), ber_class, pc ? ber_pc_codes_short.true_string : ber_pc_codes_short.false_string, tag);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: BitString expected");
+ if (decode_unexpected) {
+ proto_tree *unknown_tree = proto_item_add_subtree(cause, ett_ber_unknown);
+ dissect_unknown_ber(actx->pinfo, tvb, hoffset, unknown_tree);
+ }
+ return end_offset;
+ }
+ }
+ } else {
+ pc=0;
+ len=tvb_length_remaining(tvb,offset);
+ end_offset=offset+len;
+ }
+
+ actx->created_item = NULL;
+
+ if(pc) {
+ /* constructed */
+ /* TO DO */
+ } else {
+ /* primitive */
+ pad = tvb_get_guint8(tvb, offset);
+ if(pad == 0 && len == 1) {
+ /* empty */
+ proto_tree_add_item(parent_tree, hf_ber_bitstring_empty, tvb, offset, 1, ENC_BIG_ENDIAN);
+ } else {
+ /* padding */
+ proto_item *pad_item = proto_tree_add_item(parent_tree, hf_ber_bitstring_padding, tvb, offset, 1, ENC_BIG_ENDIAN);
+ if (pad > 7) {
+ expert_add_info_format(actx->pinfo, pad_item, PI_UNDECODED, PI_WARN,
+ "Illegal padding (0 .. 7): %d", pad);
+ }
+ }
+ offset++;
+ len--;
+ if(hf_id >= 0) {
+ item = proto_tree_add_item(parent_tree, hf_id, tvb, offset, len, ENC_BIG_ENDIAN);
+ actx->created_item = item;
+ if(ett_id != -1) {
+ tree = proto_item_add_subtree(item, ett_id);
+ }
+ }
+ if(out_tvb) {
+ if(len<=(guint32)tvb_length_remaining(tvb, offset)){
+ *out_tvb = tvb_new_subset(tvb, offset, len, len);
+ } else {
+ *out_tvb = tvb_new_subset_remaining(tvb, offset);
+ }
+ }
+ }
+
+ if(named_bits) {
+ sep = " (";
+ term = FALSE;
+ nb = named_bits;
+ bitstring = tvb_get_ephemeral_string(tvb, offset, len);
+
+ while (nb->p_id) {
+ if(len > 0 && nb->bit < (8*len-pad)) {
+ val = tvb_get_guint8(tvb, offset + nb->bit/8);
+ bitstring[(nb->bit/8)] &= ~(0x80 >> (nb->bit%8));
+ val &= 0x80 >> (nb->bit%8);
+ b0 = (nb->gb0 == -1) ? nb->bit/8 :
+ ((guint32)nb->gb0)/8;
+ b1 = (nb->gb1 == -1) ? nb->bit/8 :
+ ((guint32)nb->gb1)/8;
+ proto_tree_add_item(tree, *(nb->p_id), tvb, offset + b0, b1 - b0 + 1, ENC_BIG_ENDIAN);
+ } else { /* 8.6.2.4 */
+ val = 0;
+ proto_tree_add_boolean(tree, *(nb->p_id), tvb, offset + len, 0, 0x00);
+ }
+ if(val) {
+ if(item && nb->tstr) {
+ proto_item_append_text(item, "%s%s", sep, nb->tstr);
+ sep = ", ";
+ term = TRUE;
+ }
+ } else {
+ if(item && nb->fstr) {
+ proto_item_append_text(item, "%s%s", sep, nb->fstr);
+ sep = ", ";
+ term = TRUE;
+ }
+ }
+ nb++;
+ }
+ if(term)
+ proto_item_append_text(item, ")");
+
+ for (byteno = 0; byteno < len; byteno++) {
+ if (bitstring[byteno]) {
+ expert_add_info_format(actx->pinfo, item, PI_UNDECODED, PI_WARN,
+ "Unknown bit(s): 0x%s", bytes_to_str(bitstring, len));
+ break;
+ }
+ }
+ }
+
+ if (pad > 0 && pad < 8 && len > 0) {
+ guint8 bits_in_pad = tvb_get_guint8(tvb, offset + len - 1) & (0xFF >> (8-pad));
+ if (bits_in_pad) {
+ expert_add_info_format(actx->pinfo, item, PI_UNDECODED, PI_WARN,
+ "Bits set in padded area: 0x%02x", bits_in_pad);
+ }
+ }
+
+ ber_check_length(8*len-pad, min_len, max_len, actx, item, TRUE);
+
+ return end_offset;
}
int dissect_ber_bitstring(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *parent_tree, tvbuff_t *tvb, int offset, const asn_namedbit *named_bits, gint hf_id, gint ett_id, tvbuff_t **out_tvb)
@@ -4509,75 +4518,75 @@ int dissect_ber_bitstring(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *p
int dissect_ber_bitstring32(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *parent_tree, tvbuff_t *tvb, int offset, int **bit_fields, gint hf_id, gint ett_id, tvbuff_t **out_tvb)
{
- tvbuff_t *tmp_tvb = NULL;
- proto_tree *tree;
- guint32 val;
- int **bf;
- header_field_info *hfi;
- const char *sep;
- gboolean term;
- unsigned int i, tvb_len;
-
- offset = dissect_ber_bitstring(implicit_tag, actx, parent_tree, tvb, offset, NULL, hf_id, ett_id, &tmp_tvb);
-
- tree = proto_item_get_subtree(actx->created_item);
- if(bit_fields && tree && tmp_tvb) {
- /* tmp_tvb points to the actual bitstring (including any pad bits at the end.
- * note that this bitstring is not neccessarily always encoded as 4 bytes
- * so we have to read it byte by byte.
- */
- val=0;
- tvb_len=tvb_length(tmp_tvb);
- for(i=0;i<4;i++){
- val<<=8;
- if(i<tvb_len){
- val|=tvb_get_guint8(tmp_tvb,i);
- }
- }
- bf = bit_fields;
- sep = " (";
- term = FALSE;
- while (*bf) {
- proto_tree_add_boolean(tree, **bf, tmp_tvb, 0, tvb_len, val);
- if (**bf >= 0) {
- hfi = proto_registrar_get_nth(**bf);
- if(val & hfi->bitmask) {
- proto_item_append_text(actx->created_item, "%s%s", sep, hfi->name);
- sep = ", ";
- term = TRUE;
- }
- }
- bf++;
- }
- if(term)
- proto_item_append_text(actx->created_item, ")");
- }
-
- if(out_tvb)
- *out_tvb = tmp_tvb;
-
- return offset;
+ tvbuff_t *tmp_tvb = NULL;
+ proto_tree *tree;
+ guint32 val;
+ int **bf;
+ header_field_info *hfi;
+ const char *sep;
+ gboolean term;
+ unsigned int i, tvb_len;
+
+ offset = dissect_ber_bitstring(implicit_tag, actx, parent_tree, tvb, offset, NULL, hf_id, ett_id, &tmp_tvb);
+
+ tree = proto_item_get_subtree(actx->created_item);
+ if(bit_fields && tree && tmp_tvb) {
+ /* tmp_tvb points to the actual bitstring (including any pad bits at the end.
+ * note that this bitstring is not neccessarily always encoded as 4 bytes
+ * so we have to read it byte by byte.
+ */
+ val=0;
+ tvb_len=tvb_length(tmp_tvb);
+ for(i=0;i<4;i++){
+ val<<=8;
+ if(i<tvb_len){
+ val|=tvb_get_guint8(tmp_tvb,i);
+ }
+ }
+ bf = bit_fields;
+ sep = " (";
+ term = FALSE;
+ while (*bf) {
+ if (**bf >= 0) {
+ proto_tree_add_boolean(tree, **bf, tmp_tvb, 0, tvb_len, val);
+ hfi = proto_registrar_get_nth(**bf);
+ if(val & hfi->bitmask) {
+ proto_item_append_text(actx->created_item, "%s%s", sep, hfi->name);
+ sep = ", ";
+ term = TRUE;
+ }
+ }
+ bf++;
+ }
+ if(term)
+ proto_item_append_text(actx->created_item, ")");
+ }
+
+ if(out_tvb)
+ *out_tvb = tmp_tvb;
+
+ return offset;
}
/*
- * 8.18 Encoding of a value of the external type
- * 8.18.1 The encoding of a value of the external type shall be the BER encoding of the following
- * sequence type, assumed to be defined in an environment of EXPLICIT TAGS,
- * with a value as specified in the subclauses below:
+ * 8.18 Encoding of a value of the external type
+ * 8.18.1 The encoding of a value of the external type shall be the BER encoding of the following
+ * sequence type, assumed to be defined in an environment of EXPLICIT TAGS,
+ * with a value as specified in the subclauses below:
*
- * [UNIVERSAL 8] IMPLICIT SEQUENCE {
- * direct-reference OBJECT IDENTIFIER OPTIONAL,
- * indirect-reference INTEGER OPTIONAL,
- * data-value-descriptor ObjectDescriptor OPTIONAL,
- * encoding CHOICE {
- * single-ASN1-type [0] ABSTRACT-SYNTAX.&Type,
- * octet-aligned [1] IMPLICIT OCTET STRING,
- * arbitrary [2] IMPLICIT BIT STRING } }
+ * [UNIVERSAL 8] IMPLICIT SEQUENCE {
+ * direct-reference OBJECT IDENTIFIER OPTIONAL,
+ * indirect-reference INTEGER OPTIONAL,
+ * data-value-descriptor ObjectDescriptor OPTIONAL,
+ * encoding CHOICE {
+ * single-ASN1-type [0] ABSTRACT-SYNTAX.&Type,
+ * octet-aligned [1] IMPLICIT OCTET STRING,
+ * arbitrary [2] IMPLICIT BIT STRING } }
*
*/
static int
-dissect_ber_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_ber_INTEGER(gboolean implicit_tag, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) {
offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
&actx->external.indirect_reference);
actx->external.indirect_ref_present = TRUE;
@@ -4588,353 +4597,353 @@ dissect_ber_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_
static int
dissect_ber_T_octet_aligned(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_)
{
- if (actx->external.u.ber.ber_callback) {
- offset = actx->external.u.ber.ber_callback(FALSE, tvb, offset, actx, tree, hf_index);
- } else if (actx->external.direct_ref_present &&
- dissector_get_string_handle(ber_oid_dissector_table, actx->external.direct_reference)) {
- offset = call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree);
- } else {
- offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, &actx->external.octet_aligned);
- }
+ if (actx->external.u.ber.ber_callback) {
+ offset = actx->external.u.ber.ber_callback(FALSE, tvb, offset, actx, tree, hf_index);
+ } else if (actx->external.direct_ref_present &&
+ dissector_get_string_handle(ber_oid_dissector_table, actx->external.direct_reference)) {
+ offset = call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree);
+ } else {
+ offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, &actx->external.octet_aligned);
+ }
- return offset;
+ return offset;
}
static int
-dissect_ber_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_)
+dissect_ber_OBJECT_IDENTIFIER(gboolean implicit_tag, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index)
{
- offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_index, &actx->external.direct_reference);
- actx->external.direct_ref_present = TRUE;
+ offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_index, &actx->external.direct_reference);
+ actx->external.direct_ref_present = TRUE;
- return offset;
+ return offset;
}
static int
dissect_ber_ObjectDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_)
{
- offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_ObjectDescriptor,
- actx, tree, tvb, offset, hf_index,
- &actx->external.data_value_descriptor);
+ offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_ObjectDescriptor,
+ actx, tree, tvb, offset, hf_index,
+ &actx->external.data_value_descriptor);
- return offset;
+ return offset;
}
static int
dissect_ber_T_single_ASN1_type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_)
{
- if (actx->external.u.ber.ber_callback) {
- offset = actx->external.u.ber.ber_callback(FALSE, tvb, offset, actx, tree, hf_index);
- } else {
- offset = call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree);
- }
+ if (actx->external.u.ber.ber_callback) {
+ offset = actx->external.u.ber.ber_callback(FALSE, tvb, offset, actx, tree, hf_index);
+ } else {
+ offset = call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree);
+ }
- return offset;
+ return offset;
}
static int
dissect_ber_T_arbitrary(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_)
{
- if (actx->external.u.ber.ber_callback) {
- offset = actx->external.u.ber.ber_callback(FALSE, tvb, offset, actx, tree, hf_index);
- } else {
- offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
- NULL, hf_index, -1, &actx->external.arbitrary);
- }
+ if (actx->external.u.ber.ber_callback) {
+ offset = actx->external.u.ber.ber_callback(FALSE, tvb, offset, actx, tree, hf_index);
+ } else {
+ offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
+ NULL, hf_index, -1, &actx->external.arbitrary);
+ }
- return offset;
+ return offset;
}
static const value_string ber_T_encoding_vals[] = {
- { 0, "single-ASN1-type" },
- { 1, "octet-aligned" },
- { 2, "arbitrary" },
- { 0, NULL }
+ { 0, "single-ASN1-type" },
+ { 1, "octet-aligned" },
+ { 2, "arbitrary" },
+ { 0, NULL }
};
static const ber_choice_t T_encoding_choice[] = {
- { 0, &hf_ber_single_ASN1_type, BER_CLASS_CON, 0, 0, dissect_ber_T_single_ASN1_type },
- { 1, &hf_ber_octet_aligned , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ber_T_octet_aligned },
- { 2, &hf_ber_arbitrary , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ber_T_arbitrary },
- { 0, NULL, 0, 0, 0, NULL }
+ { 0, &hf_ber_single_ASN1_type, BER_CLASS_CON, 0, 0, dissect_ber_T_single_ASN1_type },
+ { 1, &hf_ber_octet_aligned , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ber_T_octet_aligned },
+ { 2, &hf_ber_arbitrary , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ber_T_arbitrary },
+ { 0, NULL, 0, 0, 0, NULL }
};
static int
-dissect_ber_T_encoding(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_ber_choice(actx, tree, tvb, offset,
- T_encoding_choice, hf_index, ett_ber_T_encoding,
- &actx->external.encoding);
+dissect_ber_T_encoding(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) {
+ offset = dissect_ber_choice(actx, tree, tvb, offset,
+ T_encoding_choice, hf_index, ett_ber_T_encoding,
+ &actx->external.encoding);
- return offset;
+ return offset;
}
static const ber_sequence_t external_U_sequence[] = {
- { &hf_ber_direct_reference, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ber_OBJECT_IDENTIFIER },
- { &hf_ber_indirect_reference, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ber_INTEGER },
- { &hf_ber_data_value_descriptor, BER_CLASS_UNI, BER_UNI_TAG_ObjectDescriptor, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ber_ObjectDescriptor },
- { &hf_ber_encoding , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ber_T_encoding },
- { NULL, 0, 0, 0, NULL }
+ { &hf_ber_direct_reference, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ber_OBJECT_IDENTIFIER },
+ { &hf_ber_indirect_reference, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ber_INTEGER },
+ { &hf_ber_data_value_descriptor, BER_CLASS_UNI, BER_UNI_TAG_ObjectDescriptor, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ber_ObjectDescriptor },
+ { &hf_ber_encoding , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ber_T_encoding },
+ { NULL, 0, 0, 0, NULL }
};
static int
dissect_ber_external_U(gboolean implicit_tag, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_ , proto_tree *tree, int hf_index _U_)
{
- offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
- external_U_sequence, hf_index, ett_ber_EXTERNAL);
- return offset;
+ offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
+ external_U_sequence, hf_index, ett_ber_EXTERNAL);
+ return offset;
}
int
dissect_ber_external_type(gboolean implicit_tag, proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, gint hf_id, ber_callback func){
- actx->external.u.ber.ber_callback = func;
+ actx->external.u.ber.ber_callback = func;
- offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
- hf_id, BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, TRUE, dissect_ber_external_U);
+ offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
+ hf_id, BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, TRUE, dissect_ber_external_U);
- asn1_ctx_clean_external(actx);
+ asn1_ctx_clean_external(actx);
- return offset;
+ return offset;
}
/* Experimental */
int
dissect_ber_EmbeddedPDV_Type(gboolean implicit_tag, proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, gint hf_id, ber_callback func _U_){
- offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
- hf_id, BER_CLASS_UNI, BER_UNI_TAG_EMBEDDED_PDV, TRUE, dissect_ber_external_U);
+ offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
+ hf_id, BER_CLASS_UNI, BER_UNI_TAG_EMBEDDED_PDV, TRUE, dissect_ber_external_U);
- return offset;
+ return offset;
}
static void
dissect_ber_syntax(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- (void) dissect_unknown_ber(pinfo, tvb, 0, tree);
+ (void) dissect_unknown_ber(pinfo, tvb, 0, tree);
}
static void
dissect_ber(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- const char *name;
+ const char *name;
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "BER");
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "BER");
- col_set_str(pinfo->cinfo, COL_DEF_SRC, "BER encoded file");
+ col_set_str(pinfo->cinfo, COL_DEF_SRC, "BER encoded file");
- if(!decode_as_syntax) {
+ if(!decode_as_syntax) {
- /* if we got here we couldn't find anything better */
- col_set_str(pinfo->cinfo, COL_INFO, "Unknown BER");
+ /* if we got here we couldn't find anything better */
+ col_set_str(pinfo->cinfo, COL_INFO, "Unknown BER");
- (void) dissect_unknown_ber(pinfo, tvb, 0, tree);
+ (void) dissect_unknown_ber(pinfo, tvb, 0, tree);
- } else {
+ } else {
- (void) call_ber_syntax_callback(decode_as_syntax, tvb, 0, pinfo, tree);
+ (void) call_ber_syntax_callback(decode_as_syntax, tvb, 0, pinfo, tree);
- /* see if we have a better name */
- name = get_ber_oid_syntax(decode_as_syntax);
- col_add_fstr(pinfo->cinfo, COL_INFO, "Decoded as %s", name ? name : decode_as_syntax);
- }
+ /* see if we have a better name */
+ name = get_ber_oid_syntax(decode_as_syntax);
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Decoded as %s", name ? name : decode_as_syntax);
+ }
}
void
proto_register_ber(void)
{
static hf_register_info hf[] = {
- { &hf_ber_id_class, {
- "Class", "ber.id.class", FT_UINT8, BASE_DEC,
- VALS(ber_class_codes), 0xc0, "Class of BER TLV Identifier", HFILL }},
- { &hf_ber_bitstring_padding, {
- "Padding", "ber.bitstring.padding", FT_UINT8, BASE_DEC,
- NULL, 0x0, "Number of unused bits in the last octet of the bitstring", HFILL }},
- { &hf_ber_bitstring_empty, {
- "Empty", "ber.bitstring.empty", FT_UINT8, BASE_DEC,
- NULL, 0x0, "This is an empty bitstring", HFILL }},
- { &hf_ber_id_pc, {
- "P/C", "ber.id.pc", FT_BOOLEAN, 8,
- TFS(&ber_pc_codes), 0x20, "Primitive or Constructed BER encoding", HFILL }},
- { &hf_ber_id_uni_tag, {
- "Tag", "ber.id.uni_tag", FT_UINT8, BASE_DEC|BASE_EXT_STRING,
- &ber_uni_tag_codes_ext, 0x1f, "Universal tag type", HFILL }},
- { &hf_ber_id_uni_tag_ext, {
- "Tag", "ber.id.uni_tag", FT_UINT32, BASE_DEC,
- NULL, 0, "Universal tag type", HFILL }},
- { &hf_ber_id_tag, {
- "Tag", "ber.id.tag", FT_UINT8, BASE_DEC,
- NULL, 0x1f, "Tag value for non-Universal classes", HFILL }},
- { &hf_ber_id_tag_ext, {
- "Tag", "ber.id.tag", FT_UINT32, BASE_DEC,
- NULL, 0, "Tag value for non-Universal classes", HFILL }},
- { &hf_ber_length, {
- "Length", "ber.length", FT_UINT32, BASE_DEC,
- NULL, 0, "Length of contents", HFILL }},
- { &hf_ber_unknown_OCTETSTRING, {
- "OCTETSTRING", "ber.unknown.OCTETSTRING", FT_BYTES, BASE_NONE,
- NULL, 0, "This is an unknown OCTETSTRING", HFILL }},
- { &hf_ber_unknown_BER_OCTETSTRING, {
- "OCTETSTRING [BER encoded]", "ber.unknown.OCTETSTRING", FT_NONE, BASE_NONE,
- NULL, 0, "This is an BER encoded OCTETSTRING", HFILL }},
- { &hf_ber_unknown_BER_primitive, {
- "Primitive [BER encoded]", "ber.unknown.primitive", FT_NONE, BASE_NONE,
- NULL, 0, "This is a BER encoded Primitive", HFILL }},
- { &hf_ber_unknown_OID, {
- "OID", "ber.unknown.OID", FT_OID, BASE_NONE,
- NULL, 0, "This is an unknown Object Identifier", HFILL }},
- { &hf_ber_unknown_GraphicString, {
- "GRAPHICSTRING", "ber.unknown.GRAPHICSTRING", FT_STRING, BASE_NONE,
- NULL, 0, "This is an unknown GRAPHICSTRING", HFILL }},
- { &hf_ber_unknown_NumericString, {
- "NumericString", "ber.unknown.NumericString", FT_STRING, BASE_NONE,
- NULL, 0, "This is an unknown NumericString", HFILL }},
- { &hf_ber_unknown_PrintableString, {
- "PrintableString", "ber.unknown.PrintableString", FT_STRING, BASE_NONE,
- NULL, 0, "This is an unknown PrintableString", HFILL }},
- { &hf_ber_unknown_TeletexString, {
- "TeletexString", "ber.unknown.TeletexString", FT_STRING, BASE_NONE,
- NULL, 0, "This is an unknown TeletexString", HFILL }},
- { &hf_ber_unknown_VisibleString, {
- "VisibleString", "ber.unknown.VisibleString", FT_STRING, BASE_NONE,
- NULL, 0, "This is an unknown VisibleString", HFILL }},
- { &hf_ber_unknown_GeneralString, {
- "GeneralString", "ber.unknown.GeneralString", FT_STRING, BASE_NONE,
- NULL, 0, "This is an unknown GeneralString", HFILL }},
- { &hf_ber_unknown_UniversalString, {
- "UniversalString", "ber.unknown.UniversalString", FT_STRING, BASE_NONE,
- NULL, 0, "This is an unknown UniversalString", HFILL }},
- { &hf_ber_unknown_BMPString, {
- "BMPString", "ber.unknown.BMPString", FT_STRING, BASE_NONE,
- NULL, 0, "This is an unknown BMPString", HFILL }},
- { &hf_ber_unknown_IA5String, {
- "IA5String", "ber.unknown.IA5String", FT_STRING, BASE_NONE,
- NULL, 0, "This is an unknown IA5String", HFILL }},
- { &hf_ber_unknown_UTCTime, {
- "UTCTime", "ber.unknown.UTCTime", FT_STRING, BASE_NONE,
- NULL, 0, "This is an unknown UTCTime", HFILL }},
- { &hf_ber_unknown_UTF8String, {
- "UTF8String", "ber.unknown.UTF8String", FT_STRING, BASE_NONE,
- NULL, 0, "This is an unknown UTF8String", HFILL }},
- { &hf_ber_unknown_GeneralizedTime, {
- "GeneralizedTime", "ber.unknown.GeneralizedTime", FT_STRING, BASE_NONE,
- NULL, 0, "This is an unknown GeneralizedTime", HFILL }},
- { &hf_ber_unknown_INTEGER, {
- "INTEGER", "ber.unknown.INTEGER", FT_INT64, BASE_DEC,
- NULL, 0, "This is an unknown INTEGER", HFILL }},
- { &hf_ber_unknown_BITSTRING, {
- "BITSTRING", "ber.unknown.BITSTRING", FT_BYTES, BASE_NONE,
- NULL, 0, "This is an unknown BITSTRING", HFILL }},
- { &hf_ber_unknown_BOOLEAN, {
- "BOOLEAN", "ber.unknown.BOOLEAN", FT_UINT8, BASE_HEX,
- NULL, 0, "This is an unknown BOOLEAN", HFILL }},
- { &hf_ber_unknown_ENUMERATED, {
- "ENUMERATED", "ber.unknown.ENUMERATED", FT_UINT32, BASE_DEC,
- NULL, 0, "This is an unknown ENUMERATED", HFILL }},
- { &hf_ber_error, {
- "BER Error", "ber.error", FT_STRING, BASE_NONE,
- NULL, 0, NULL, HFILL }},
- { &hf_ber_no_oid, {
- "No OID", "ber.no_oid", FT_NONE, BASE_NONE,
- NULL, 0, "No OID supplied to call_ber_oid_callback", HFILL }},
- { &hf_ber_oid_not_implemented, {
- "OID not implemented", "ber.oid_not_implemented", FT_NONE, BASE_NONE,
- NULL, 0, "Dissector for OID not implemented", HFILL }},
- { &hf_ber_no_syntax, {
- "No OID", "ber.no_oid", FT_NONE, BASE_NONE,
- NULL, 0, "No syntax supplied to call_ber_syntax_callback", HFILL }},
- { &hf_ber_syntax_not_implemented, {
- "Syntax not implemented", "ber.syntax_not_implemented", FT_NONE, BASE_NONE,
- NULL, 0, "Dissector for OID not implemented", HFILL }},
- { &hf_ber_direct_reference,
- { "direct-reference", "ber.direct_reference",
- FT_OID, BASE_NONE, NULL, 0,
- "ber.OBJECT_IDENTIFIER", HFILL }},
- { &hf_ber_indirect_reference,
- { "indirect-reference", "ber.indirect_reference",
- FT_INT32, BASE_DEC, NULL, 0,
- "ber.INTEGER", HFILL }},
- { &hf_ber_data_value_descriptor,
- { "data-value-descriptor", "ber.data_value_descriptor",
- FT_STRING, BASE_NONE, NULL, 0,
- "ber.ObjectDescriptor", HFILL }},
- { &hf_ber_encoding,
- { "encoding", "ber.encoding",
- FT_UINT32, BASE_DEC, VALS(ber_T_encoding_vals), 0,
- "ber.T_encoding", HFILL }},
- { &hf_ber_octet_aligned,
- { "octet-aligned", "ber.octet_aligned",
- FT_BYTES, BASE_NONE, NULL, 0,
- "ber.T_octet_aligned", HFILL }},
- { &hf_ber_arbitrary,
- { "arbitrary", "ber.arbitrary",
- FT_BYTES, BASE_NONE, NULL, 0,
- "ber.T_arbitrary", HFILL }},
- { &hf_ber_single_ASN1_type,
- { "single-ASN1-type", "ber.single_ASN1_type",
- FT_NONE, BASE_NONE, NULL, 0,
- "ber.T_single_ASN1_type", HFILL }},
-
- /* Fragment entries */
- { &hf_ber_fragments,
- { "OCTET STRING fragments", "ber.octet_string.fragments", FT_NONE, BASE_NONE,
- NULL, 0x00, NULL, HFILL } },
- { &hf_ber_fragment,
- { "OCTET STRING fragment", "ber.octet_string.fragment", FT_FRAMENUM, BASE_NONE,
- NULL, 0x00, NULL, HFILL } },
- { &hf_ber_fragment_overlap,
- { "OCTET STRING fragment overlap", "ber.octet_string.fragment.overlap", FT_BOOLEAN,
- BASE_NONE, NULL, 0x0, NULL, HFILL } },
- { &hf_ber_fragment_overlap_conflicts,
- { "OCTET STRING fragment overlapping with conflicting data",
- "ber.octet_string.fragment.overlap.conflicts", FT_BOOLEAN, BASE_NONE, NULL,
- 0x0, NULL, HFILL } },
- { &hf_ber_fragment_multiple_tails,
- { "OCTET STRING has multiple tail fragments",
- "ber.octet_string.fragment.multiple_tails", FT_BOOLEAN, BASE_NONE,
- NULL, 0x0, NULL, HFILL } },
- { &hf_ber_fragment_too_long_fragment,
- { "OCTET STRING fragment too long", "ber.octet_string.fragment.too_long_fragment",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL,
- HFILL } },
- { &hf_ber_fragment_error,
- { "OCTET STRING defragmentation error", "ber.octet_string.fragment.error", FT_FRAMENUM,
- BASE_NONE, NULL, 0x00, NULL, HFILL } },
- { &hf_ber_fragment_count,
- { "OCTET STRING fragment count", "ber.octet_string.fragment.count", FT_UINT32, BASE_DEC,
- NULL, 0x00, NULL, HFILL } },
- { &hf_ber_reassembled_in,
- { "Reassembled in", "ber.octet_string.reassembled.in", FT_FRAMENUM, BASE_NONE,
- NULL, 0x00, NULL, HFILL } },
- { &hf_ber_reassembled_length,
- { "Reassembled OCTET STRING length", "ber.octet_string.reassembled.length", FT_UINT32, BASE_DEC,
- NULL, 0x00, NULL, HFILL } }
+ { &hf_ber_id_class, {
+ "Class", "ber.id.class", FT_UINT8, BASE_DEC,
+ VALS(ber_class_codes), 0xc0, "Class of BER TLV Identifier", HFILL }},
+ { &hf_ber_bitstring_padding, {
+ "Padding", "ber.bitstring.padding", FT_UINT8, BASE_DEC,
+ NULL, 0x0, "Number of unused bits in the last octet of the bitstring", HFILL }},
+ { &hf_ber_bitstring_empty, {
+ "Empty", "ber.bitstring.empty", FT_UINT8, BASE_DEC,
+ NULL, 0x0, "This is an empty bitstring", HFILL }},
+ { &hf_ber_id_pc, {
+ "P/C", "ber.id.pc", FT_BOOLEAN, 8,
+ TFS(&ber_pc_codes), 0x20, "Primitive or Constructed BER encoding", HFILL }},
+ { &hf_ber_id_uni_tag, {
+ "Tag", "ber.id.uni_tag", FT_UINT8, BASE_DEC|BASE_EXT_STRING,
+ &ber_uni_tag_codes_ext, 0x1f, "Universal tag type", HFILL }},
+ { &hf_ber_id_uni_tag_ext, {
+ "Tag", "ber.id.uni_tag", FT_UINT32, BASE_DEC,
+ NULL, 0, "Universal tag type", HFILL }},
+ { &hf_ber_id_tag, {
+ "Tag", "ber.id.tag", FT_UINT8, BASE_DEC,
+ NULL, 0x1f, "Tag value for non-Universal classes", HFILL }},
+ { &hf_ber_id_tag_ext, {
+ "Tag", "ber.id.tag", FT_UINT32, BASE_DEC,
+ NULL, 0, "Tag value for non-Universal classes", HFILL }},
+ { &hf_ber_length, {
+ "Length", "ber.length", FT_UINT32, BASE_DEC,
+ NULL, 0, "Length of contents", HFILL }},
+ { &hf_ber_unknown_OCTETSTRING, {
+ "OCTETSTRING", "ber.unknown.OCTETSTRING", FT_BYTES, BASE_NONE,
+ NULL, 0, "This is an unknown OCTETSTRING", HFILL }},
+ { &hf_ber_unknown_BER_OCTETSTRING, {
+ "OCTETSTRING [BER encoded]", "ber.unknown.OCTETSTRING", FT_NONE, BASE_NONE,
+ NULL, 0, "This is an BER encoded OCTETSTRING", HFILL }},
+ { &hf_ber_unknown_BER_primitive, {
+ "Primitive [BER encoded]", "ber.unknown.primitive", FT_NONE, BASE_NONE,
+ NULL, 0, "This is a BER encoded Primitive", HFILL }},
+ { &hf_ber_unknown_OID, {
+ "OID", "ber.unknown.OID", FT_OID, BASE_NONE,
+ NULL, 0, "This is an unknown Object Identifier", HFILL }},
+ { &hf_ber_unknown_GraphicString, {
+ "GRAPHICSTRING", "ber.unknown.GRAPHICSTRING", FT_STRING, BASE_NONE,
+ NULL, 0, "This is an unknown GRAPHICSTRING", HFILL }},
+ { &hf_ber_unknown_NumericString, {
+ "NumericString", "ber.unknown.NumericString", FT_STRING, BASE_NONE,
+ NULL, 0, "This is an unknown NumericString", HFILL }},
+ { &hf_ber_unknown_PrintableString, {
+ "PrintableString", "ber.unknown.PrintableString", FT_STRING, BASE_NONE,
+ NULL, 0, "This is an unknown PrintableString", HFILL }},
+ { &hf_ber_unknown_TeletexString, {
+ "TeletexString", "ber.unknown.TeletexString", FT_STRING, BASE_NONE,
+ NULL, 0, "This is an unknown TeletexString", HFILL }},
+ { &hf_ber_unknown_VisibleString, {
+ "VisibleString", "ber.unknown.VisibleString", FT_STRING, BASE_NONE,
+ NULL, 0, "This is an unknown VisibleString", HFILL }},
+ { &hf_ber_unknown_GeneralString, {
+ "GeneralString", "ber.unknown.GeneralString", FT_STRING, BASE_NONE,
+ NULL, 0, "This is an unknown GeneralString", HFILL }},
+ { &hf_ber_unknown_UniversalString, {
+ "UniversalString", "ber.unknown.UniversalString", FT_STRING, BASE_NONE,
+ NULL, 0, "This is an unknown UniversalString", HFILL }},
+ { &hf_ber_unknown_BMPString, {
+ "BMPString", "ber.unknown.BMPString", FT_STRING, BASE_NONE,
+ NULL, 0, "This is an unknown BMPString", HFILL }},
+ { &hf_ber_unknown_IA5String, {
+ "IA5String", "ber.unknown.IA5String", FT_STRING, BASE_NONE,
+ NULL, 0, "This is an unknown IA5String", HFILL }},
+ { &hf_ber_unknown_UTCTime, {
+ "UTCTime", "ber.unknown.UTCTime", FT_STRING, BASE_NONE,
+ NULL, 0, "This is an unknown UTCTime", HFILL }},
+ { &hf_ber_unknown_UTF8String, {
+ "UTF8String", "ber.unknown.UTF8String", FT_STRING, BASE_NONE,
+ NULL, 0, "This is an unknown UTF8String", HFILL }},
+ { &hf_ber_unknown_GeneralizedTime, {
+ "GeneralizedTime", "ber.unknown.GeneralizedTime", FT_STRING, BASE_NONE,
+ NULL, 0, "This is an unknown GeneralizedTime", HFILL }},
+ { &hf_ber_unknown_INTEGER, {
+ "INTEGER", "ber.unknown.INTEGER", FT_INT64, BASE_DEC,
+ NULL, 0, "This is an unknown INTEGER", HFILL }},
+ { &hf_ber_unknown_BITSTRING, {
+ "BITSTRING", "ber.unknown.BITSTRING", FT_BYTES, BASE_NONE,
+ NULL, 0, "This is an unknown BITSTRING", HFILL }},
+ { &hf_ber_unknown_BOOLEAN, {
+ "BOOLEAN", "ber.unknown.BOOLEAN", FT_UINT8, BASE_HEX,
+ NULL, 0, "This is an unknown BOOLEAN", HFILL }},
+ { &hf_ber_unknown_ENUMERATED, {
+ "ENUMERATED", "ber.unknown.ENUMERATED", FT_UINT32, BASE_DEC,
+ NULL, 0, "This is an unknown ENUMERATED", HFILL }},
+ { &hf_ber_error, {
+ "BER Error", "ber.error", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }},
+ { &hf_ber_no_oid, {
+ "No OID", "ber.no_oid", FT_NONE, BASE_NONE,
+ NULL, 0, "No OID supplied to call_ber_oid_callback", HFILL }},
+ { &hf_ber_oid_not_implemented, {
+ "OID not implemented", "ber.oid_not_implemented", FT_NONE, BASE_NONE,
+ NULL, 0, "Dissector for OID not implemented", HFILL }},
+ { &hf_ber_no_syntax, {
+ "No OID", "ber.no_oid", FT_NONE, BASE_NONE,
+ NULL, 0, "No syntax supplied to call_ber_syntax_callback", HFILL }},
+ { &hf_ber_syntax_not_implemented, {
+ "Syntax not implemented", "ber.syntax_not_implemented", FT_NONE, BASE_NONE,
+ NULL, 0, "Dissector for OID not implemented", HFILL }},
+ { &hf_ber_direct_reference,
+ { "direct-reference", "ber.direct_reference",
+ FT_OID, BASE_NONE, NULL, 0,
+ "ber.OBJECT_IDENTIFIER", HFILL }},
+ { &hf_ber_indirect_reference,
+ { "indirect-reference", "ber.indirect_reference",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "ber.INTEGER", HFILL }},
+ { &hf_ber_data_value_descriptor,
+ { "data-value-descriptor", "ber.data_value_descriptor",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "ber.ObjectDescriptor", HFILL }},
+ { &hf_ber_encoding,
+ { "encoding", "ber.encoding",
+ FT_UINT32, BASE_DEC, VALS(ber_T_encoding_vals), 0,
+ "ber.T_encoding", HFILL }},
+ { &hf_ber_octet_aligned,
+ { "octet-aligned", "ber.octet_aligned",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "ber.T_octet_aligned", HFILL }},
+ { &hf_ber_arbitrary,
+ { "arbitrary", "ber.arbitrary",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "ber.T_arbitrary", HFILL }},
+ { &hf_ber_single_ASN1_type,
+ { "single-ASN1-type", "ber.single_ASN1_type",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ber.T_single_ASN1_type", HFILL }},
+
+ /* Fragment entries */
+ { &hf_ber_fragments,
+ { "OCTET STRING fragments", "ber.octet_string.fragments", FT_NONE, BASE_NONE,
+ NULL, 0x00, NULL, HFILL } },
+ { &hf_ber_fragment,
+ { "OCTET STRING fragment", "ber.octet_string.fragment", FT_FRAMENUM, BASE_NONE,
+ NULL, 0x00, NULL, HFILL } },
+ { &hf_ber_fragment_overlap,
+ { "OCTET STRING fragment overlap", "ber.octet_string.fragment.overlap", FT_BOOLEAN,
+ BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_ber_fragment_overlap_conflicts,
+ { "OCTET STRING fragment overlapping with conflicting data",
+ "ber.octet_string.fragment.overlap.conflicts", FT_BOOLEAN, BASE_NONE, NULL,
+ 0x0, NULL, HFILL } },
+ { &hf_ber_fragment_multiple_tails,
+ { "OCTET STRING has multiple tail fragments",
+ "ber.octet_string.fragment.multiple_tails", FT_BOOLEAN, BASE_NONE,
+ NULL, 0x0, NULL, HFILL } },
+ { &hf_ber_fragment_too_long_fragment,
+ { "OCTET STRING fragment too long", "ber.octet_string.fragment.too_long_fragment",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL,
+ HFILL } },
+ { &hf_ber_fragment_error,
+ { "OCTET STRING defragmentation error", "ber.octet_string.fragment.error", FT_FRAMENUM,
+ BASE_NONE, NULL, 0x00, NULL, HFILL } },
+ { &hf_ber_fragment_count,
+ { "OCTET STRING fragment count", "ber.octet_string.fragment.count", FT_UINT32, BASE_DEC,
+ NULL, 0x00, NULL, HFILL } },
+ { &hf_ber_reassembled_in,
+ { "Reassembled in", "ber.octet_string.reassembled.in", FT_FRAMENUM, BASE_NONE,
+ NULL, 0x00, NULL, HFILL } },
+ { &hf_ber_reassembled_length,
+ { "Reassembled OCTET STRING length", "ber.octet_string.reassembled.length", FT_UINT32, BASE_DEC,
+ NULL, 0x00, NULL, HFILL } }
};
static gint *ett[] = {
- &ett_ber_octet_string,
- &ett_ber_reassembled_octet_string,
- &ett_ber_primitive,
- &ett_ber_unknown,
- &ett_ber_SEQUENCE,
- &ett_ber_EXTERNAL,
- &ett_ber_T_encoding,
- &ett_ber_fragment,
- &ett_ber_fragments
+ &ett_ber_octet_string,
+ &ett_ber_reassembled_octet_string,
+ &ett_ber_primitive,
+ &ett_ber_unknown,
+ &ett_ber_SEQUENCE,
+ &ett_ber_EXTERNAL,
+ &ett_ber_T_encoding,
+ &ett_ber_fragment,
+ &ett_ber_fragments
};
module_t *ber_module;
uat_t* users_uat = uat_new("OID Tables",
- sizeof(oid_user_t),
- "oid",
- FALSE,
- (void*) &oid_users,
- &num_oid_users,
- UAT_CAT_GENERAL,
- "ChObjectIdentifiers",
- oid_copy_cb,
- NULL,
- oid_free_cb,
- ber_update_oids,
- users_flds);
+ sizeof(oid_user_t),
+ "oid",
+ FALSE,
+ (void*) &oid_users,
+ &num_oid_users,
+ UAT_CAT_GENERAL,
+ "ChObjectIdentifiers",
+ oid_copy_cb,
+ NULL,
+ oid_free_cb,
+ ber_update_oids,
+ users_flds);
proto_ber = proto_register_protocol("Basic Encoding Rules (ASN.1 X.690)", "BER", "ber");
register_dissector ("ber", dissect_ber, proto_ber);
@@ -4947,27 +4956,32 @@ proto_register_ber(void)
ber_module = prefs_register_protocol(proto_ber, NULL);
prefs_register_bool_preference(ber_module, "show_internals",
- "Show internal BER encapsulation tokens",
- "Whether the dissector should also display internal"
- " ASN.1 BER details such as Identifier and Length fields", &show_internal_ber_fields);
+ "Show internal BER encapsulation tokens",
+ "Whether the dissector should also display internal"
+ " ASN.1 BER details such as Identifier and Length fields", &show_internal_ber_fields);
prefs_register_bool_preference(ber_module, "decode_unexpected",
- "Decode unexpected tags as BER encoded data",
- "Whether the dissector should decode unexpected tags as"
- " ASN.1 BER encoded data", &decode_unexpected);
+ "Decode unexpected tags as BER encoded data",
+ "Whether the dissector should decode unexpected tags as"
+ " ASN.1 BER encoded data", &decode_unexpected);
prefs_register_bool_preference(ber_module, "decode_octetstring",
- "Decode OCTET STRING as BER encoded data",
- "Whether the dissector should try decoding OCTET STRINGs as"
- " constructed ASN.1 BER encoded data", &decode_octetstring_as_ber);
+ "Decode OCTET STRING as BER encoded data",
+ "Whether the dissector should try decoding OCTET STRINGs as"
+ " constructed ASN.1 BER encoded data", &decode_octetstring_as_ber);
prefs_register_bool_preference(ber_module, "decode_primitive",
- "Decode Primitive as BER encoded data",
- "Whether the dissector should try decoding unknown primitive as"
- " constructed ASN.1 BER encoded data", &decode_primitive_as_ber);
+ "Decode Primitive as BER encoded data",
+ "Whether the dissector should try decoding unknown primitive as"
+ " constructed ASN.1 BER encoded data", &decode_primitive_as_ber);
+
+ prefs_register_bool_preference(ber_module, "warn_too_many_bytes",
+ "Warn if too many leading zero bits in encoded data",
+ "Whether the dissector should warn if excessive leading zero (0) bits",
+ &decode_warning_leading_zero_bits);
prefs_register_uat_preference(ber_module, "oid_table", "Object Identifiers",
- "A table that provides names for object identifiers"
- " and the syntax of any associated values",
- users_uat);
+ "A table that provides names for object identifiers"
+ " and the syntax of any associated values",
+ users_uat);
ber_oid_dissector_table = register_dissector_table("ber.oid", "BER OID Dissectors", FT_STRING, BASE_NONE);
ber_syntax_dissector_table = register_dissector_table("ber.syntax", "BER Syntax Dissectors", FT_STRING, BASE_NONE);
@@ -4981,29 +4995,29 @@ proto_register_ber(void)
void
proto_reg_handoff_ber(void)
{
- guint i = 1;
- dissector_handle_t ber_handle;
+ guint i = 1;
+ dissector_handle_t ber_handle;
- oid_add_from_string("asn1","2.1");
- oid_add_from_string("basic-encoding","2.1.1");
+ oid_add_from_string("asn1","2.1");
+ oid_add_from_string("basic-encoding","2.1.1");
- ber_handle = create_dissector_handle(dissect_ber, proto_ber);
- dissector_add_uint("wtap_encap", WTAP_ENCAP_BER, ber_handle);
+ ber_handle = create_dissector_handle(dissect_ber, proto_ber);
+ dissector_add_uint("wtap_encap", WTAP_ENCAP_BER, ber_handle);
- ber_decode_as_foreach(ber_add_syntax_name, &i);
+ ber_decode_as_foreach(ber_add_syntax_name, &i);
- if(i > 1)
- qsort(&syntax_names[1], i - 1, sizeof(value_string), cmp_value_string);
- syntax_names[i].value = 0;
- syntax_names[i].strptr = NULL;
+ if(i > 1)
+ qsort(&syntax_names[1], i - 1, sizeof(value_string), cmp_value_string);
+ syntax_names[i].value = 0;
+ syntax_names[i].strptr = NULL;
- /* allow the dissection of BER/DER carried over a TCP transport
- by using "Decode As..." */
- dissector_add_handle("tcp.port", ber_handle);
+ /* allow the dissection of BER/DER carried over a TCP transport
+ by using "Decode As..." */
+ dissector_add_handle("tcp.port", ber_handle);
- ber_update_oids();
+ ber_update_oids();
}
gboolean oid_has_dissector(const char *oid) {
- return(dissector_get_string_handle(ber_oid_dissector_table, oid) != NULL);
+ return(dissector_get_string_handle(ber_oid_dissector_table, oid) != NULL);
}
diff --git a/epan/dissectors/packet-bfcp.c b/epan/dissectors/packet-bfcp.c
new file mode 100644
index 0000000000..16886ec0c0
--- /dev/null
+++ b/epan/dissectors/packet-bfcp.c
@@ -0,0 +1,360 @@
+/* packet-bfcp.c
+ * Routines for Binary Floor Control Protocol(BFCP) dissection
+ * Copyright 2012, Nitinkumar Yemul <nitinkumaryemul@gmail.com>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * BFCP Message structure is defined in RFC 4582.
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+#include <epan/prefs.h>
+#include <epan/expert.h>
+
+/* Initialize protocol and registered fields */
+static int proto_bfcp = -1;
+static gboolean bfcp_enable_heuristic_dissection = FALSE;
+static dissector_handle_t bfcp_handle;
+
+
+static int hf_bfcp_transaction_initiator = -1;
+static int hf_bfcp_primitive = -1;
+static int hf_bfcp_payload_length = -1;
+static int hf_bfcp_conference_id = -1;
+static int hf_bfcp_transaction_id = -1;
+static int hf_bfcp_user_id = -1;
+static int hf_bfcp_payload = -1;
+static int hf_bfcp_attribute_types = -1;
+static int hf_bfcp_attribute_length = -1;
+static int hf_bfcp_request_status = -1;
+
+/* Initialize subtree pointers */
+static gint ett_bfcp = -1;
+
+/* Initialize BFCP primitives */
+static const value_string map_bfcp_primitive[] = {
+ { 0, "<Invalid Primitive>"},
+ { 1, "FloorRequest"},
+ { 2, "FloorRelease"},
+ { 3, "FloorRequestQuery"},
+ { 4, "FloorRequestStatus"},
+ { 5, "UserQuery"},
+ { 6, "UserStatus"},
+ { 7, "FloorQuery"},
+ { 8, "FloorStatus"},
+ { 9, "ChairAction"},
+ { 10, "ChairActionAck"},
+ { 11, "Hello"},
+ { 12, "HelloAck"},
+ { 13, "Error"},
+ { 14, "FloorRequestStatusAck"},
+ { 15, "ErrorAck"},
+ { 16, "FloorStatusAck"},
+ { 17, "Goodbye"},
+ { 18, "GoodbyeAck"},
+ { 0, NULL},
+};
+
+static const value_string map_bfcp_attribute_types[] = {
+ { 0, "<Invalid Primitive>"},
+ { 1, "BeneficiaryID"},
+ { 2, "FloorID"},
+ { 3, "FloorRequestID"},
+ { 4, "Priority"},
+ { 5, "RequestStatus"},
+ { 6, "ErrorCode"},
+ { 7, "ErrorInfo"},
+ { 8, "ParticipantProvidedInfo"},
+ { 9, "StatusInfo"},
+ { 10, "SupportedAttributes"},
+ { 11, "SupportedPrimitives"},
+ { 12, "UserDisplayName"},
+ { 13, "UserURI"},
+ { 14, "BeneficiaryInformation"},
+ { 15, "FloorRequestInformation"},
+ { 16, "RequestedByInformation"},
+ { 17, "FloorRequestStatus"},
+ { 18, "OverallRequestStatus"},
+ { 0, NULL},
+};
+
+static const value_string map_bfcp_request_status[] = {
+ { 0, "<Invalid Primitive>"},
+ { 1, "Pending"},
+ { 2, "Accepted"},
+ { 3, "Granted"},
+ { 4, "Denied"},
+ { 5, "Cancelled"},
+ { 6, "Released"},
+ { 7, "Revoked"},
+ { 0, NULL},
+};
+
+/*Define offset for fields in BFCP packet */
+#define BFCP_OFFSET_TRANSACTION_INITIATOR 0
+#define BFCP_OFFSET_PRIMITIVE 1
+#define BFCP_OFFSET_PAYLOAD_LENGTH 2
+#define BFCP_OFFSET_CONFERENCE_ID 4
+#define BFCP_OFFSET_TRANSACTION_ID 8
+#define BFCP_OFFSET_USER_ID 10
+#define BFCP_OFFSET_PAYLOAD 12
+
+/* Code to actually dissect BFCP packets */
+static gboolean dissect_bfcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ guint8 first_byte;
+ guint8 primitive;
+ const gchar *str;
+ gint bfcp_payload_length;
+ gint read_attr = 0;
+ proto_tree *bfcp_tree = NULL;
+
+
+ /* Size of smallest BFCP packet: 12 octets */
+ if (tvb_length(tvb) < 12)
+ return FALSE;
+
+ /* Check version and reserved bits in first byte */
+ first_byte = tvb_get_guint8(tvb, 0);
+
+ /* If first_byte of bfcp_packet is a combination of the
+ * version and the I bit. The value must be either 0x20 or 0x30
+ * if the bit is set, otherwise it is not BFCP.
+ */
+ if ((first_byte != 0x20) && (first_byte != 0x30))
+ return FALSE;
+
+ primitive = tvb_get_guint8(tvb, 1);
+
+ if ((primitive < 1) || (primitive > 18))
+ return FALSE;
+
+ str = match_strval(primitive, map_bfcp_primitive);
+ if (NULL == str)
+ return FALSE;
+
+ /* Make entries in Protocol column and Info column on summary display*/
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "BFCP");
+ col_add_str(pinfo->cinfo, COL_INFO, str);
+
+ if (tree) {
+ proto_item *ti;
+ ti = proto_tree_add_item(tree, proto_bfcp, tvb, 0, -1, ENC_NA);
+ bfcp_tree = proto_item_add_subtree(ti, ett_bfcp);
+
+ /* Add items to BFCP tree */
+ proto_tree_add_item(bfcp_tree, hf_bfcp_transaction_initiator, tvb,
+ BFCP_OFFSET_TRANSACTION_INITIATOR, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(bfcp_tree, hf_bfcp_primitive, tvb,
+ BFCP_OFFSET_PRIMITIVE, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(bfcp_tree, hf_bfcp_payload_length, tvb,
+ BFCP_OFFSET_PAYLOAD_LENGTH, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(bfcp_tree, hf_bfcp_conference_id, tvb,
+ BFCP_OFFSET_CONFERENCE_ID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(bfcp_tree, hf_bfcp_transaction_id, tvb,
+ BFCP_OFFSET_TRANSACTION_ID, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(bfcp_tree, hf_bfcp_user_id, tvb,
+ BFCP_OFFSET_USER_ID, 2, ENC_BIG_ENDIAN);
+ }
+
+ bfcp_payload_length = tvb_get_ntohs(tvb,
+ BFCP_OFFSET_PAYLOAD_LENGTH) * 4;
+
+ while ((tvb_reported_length_remaining(tvb, BFCP_OFFSET_PAYLOAD + read_attr) >= 2) &&
+ ((bfcp_payload_length - read_attr) >= 2))
+ {
+ proto_item *ti;
+ gint read = 0;
+ gint length;
+ guint8 first_byte;
+ guint8 attribute_type;
+
+ first_byte = tvb_get_guint8(tvb, BFCP_OFFSET_PAYLOAD + read_attr);
+
+ /* Padding so continue to next attribute */
+ if (first_byte == 0)
+ {
+ read_attr++;
+ continue;
+ }
+
+ proto_tree_add_item(bfcp_tree, hf_bfcp_attribute_types, tvb,
+ BFCP_OFFSET_PAYLOAD + read_attr,1, ENC_BIG_ENDIAN);
+ attribute_type = (first_byte & 0xFE) >> 1;
+ read++;
+
+ ti = proto_tree_add_item(bfcp_tree, hf_bfcp_attribute_length, tvb,
+ BFCP_OFFSET_PAYLOAD + read_attr + read,1, ENC_BIG_ENDIAN);
+ length = tvb_get_guint8(tvb, BFCP_OFFSET_PAYLOAD + read_attr + read);
+ read++;
+
+ /* If RequestStatus then show what type of status it is... */
+ if (attribute_type == 5)
+ {
+ proto_tree_add_item(bfcp_tree, hf_bfcp_request_status, tvb,
+ BFCP_OFFSET_PAYLOAD + read_attr + read,1, ENC_BIG_ENDIAN);
+ read++;
+ }
+ if (length >= read)
+ {
+ proto_tree_add_item(bfcp_tree, hf_bfcp_payload, tvb,
+ BFCP_OFFSET_PAYLOAD + read_attr + read, length-read, ENC_NA);
+ }
+ else
+ {
+ expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR,
+ "Attribute length is too small (%d bytes)", length);
+ break;
+ }
+ read_attr = read_attr + length;
+ }
+ return TRUE;
+}
+
+void proto_reg_handoff_bfcp(void);
+
+void proto_register_bfcp(void)
+{
+ module_t *bfcp_module;
+
+ static hf_register_info hf[] = {
+ {
+ &hf_bfcp_transaction_initiator,
+ { "Transaction Initiator", "bfcp.transaction_initiator",
+ FT_BOOLEAN, 8,
+ NULL, 0x10,
+ NULL, HFILL }
+ },
+ {
+ &hf_bfcp_primitive,
+ { "Primitive", "bfcp.primitive",
+ FT_UINT8, BASE_DEC,
+ VALS(map_bfcp_primitive), 0x0,
+ NULL, HFILL }
+ },
+ {
+ &hf_bfcp_payload_length,
+ { "Payload Length", "bfcp.payload_length",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ {
+ &hf_bfcp_conference_id,
+ { "Conference ID", "bfcp.conference_id",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ {
+ &hf_bfcp_transaction_id,
+ { "Transaction ID", "bfcp.transaction_id",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ {
+ &hf_bfcp_user_id,
+ { "User ID", "bfcp.user_id",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ {
+ &hf_bfcp_payload,
+ { "Payload", "bfcp.payload",
+ FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL,
+ HFILL }
+ },
+ {
+ &hf_bfcp_attribute_types,
+ { "Attribute Type", "bfcp.attribute_type",
+ FT_UINT8, BASE_DEC,
+ VALS(map_bfcp_attribute_types), 0xFE,
+ NULL, HFILL }
+ },
+ {
+ &hf_bfcp_attribute_length,
+ { "Attribute Length", "bfcp.attribute_length",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ {
+ &hf_bfcp_request_status,
+ { "Request Status", "bfcp.request_status",
+ FT_UINT8, BASE_DEC,
+ VALS(map_bfcp_request_status), 0x0,
+ NULL, HFILL }
+ }
+ };
+
+ static gint *ett[] = {
+ &ett_bfcp
+ };
+
+ /* Register protocol name and description */
+ proto_bfcp = proto_register_protocol("Binary Floor Control Protocol",
+ "BFCP", "bfcp");
+
+ bfcp_module = prefs_register_protocol(proto_bfcp,
+ proto_reg_handoff_bfcp);
+
+ prefs_register_bool_preference(bfcp_module, "enable",
+ "Enable BFCP heuristic dissection",
+ "Enable BFCP heuristic dissection (default is disabled)",
+ &bfcp_enable_heuristic_dissection);
+
+ /* Register field and subtree array */
+ proto_register_field_array(proto_bfcp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+}
+
+void proto_reg_handoff_bfcp(void)
+{
+ static gboolean prefs_initialized = FALSE;
+
+ /* "Decode As" is always available;
+ * Heuristic dissection in disabled by default since
+ * the heuristic is quite weak.
+ */
+ if (!prefs_initialized)
+ {
+ heur_dissector_add("tcp", dissect_bfcp, proto_bfcp);
+ heur_dissector_add("udp", dissect_bfcp, proto_bfcp);
+ bfcp_handle = new_create_dissector_handle(dissect_bfcp, proto_bfcp);
+ dissector_add_handle("tcp.port", bfcp_handle);
+ dissector_add_handle("udp.port", bfcp_handle);
+ prefs_initialized = TRUE;
+ }
+
+ heur_dissector_set_enabled("tcp", dissect_bfcp, proto_bfcp,
+ bfcp_enable_heuristic_dissection);
+
+ heur_dissector_set_enabled("udp", dissect_bfcp, proto_bfcp,
+ bfcp_enable_heuristic_dissection);
+}
diff --git a/epan/dissectors/packet-bfd.c b/epan/dissectors/packet-bfd.c
index be9582a28f..ac427c7321 100644
--- a/epan/dissectors/packet-bfd.c
+++ b/epan/dissectors/packet-bfd.c
@@ -1,5 +1,7 @@
/* packet-bfd.c
* Routines for Bidirectional Forwarding Detection (BFD) message dissection
+ * RFCs 5880, 5881, 5882, 5883, 5884, 5885
+ * (and http://tools.ietf.org/html/draft-ietf-bfd-base-01 for version 0)
*
* Copyright 2003, Hannes Gredler <hannes@juniper.net>
* Copyright 2006, Balint Reczey <Balint.Reczey@ericsson.com>
@@ -9,7 +11,7 @@
* Krishnamurthy Mayya <krishnamurthy.mayya@ipinfusion.com>
* Nikitha Malgi <malgi.nikitha@ipinfusion.com>
* - support for MPLS-TP BFD Proactive CV Message Format as per RFC 6428
- * - includes decoding support for Section MEP-ID, LSP MEP-ID, PW MEP-ID
+ * - includes decoding support for Section MEP-ID, LSP MEP-ID, PW MEP-ID
*
* $Id$
*
@@ -36,10 +38,8 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/expert.h>
@@ -50,7 +50,7 @@
/* As per RFC 6428 : http://tools.ietf.org/html/rfc6428
Section: 3.5 */
-#define TLV_TYPE_MPLSTP_SECTION_MEP 0
+#define TLV_TYPE_MPLSTP_SECTION_MEP 0
#define TLV_TYPE_MPLSTP_LSP_MEP 1
#define TLV_TYPE_MPLSTP_PW_MEP 2
@@ -124,10 +124,8 @@ static const value_string bfd_control_auth_type_values[] = {
proto_item_append_text(item, string, sep); \
sep = cont_sep; \
}
-static const char initial_sep[] = " (";
-static const char cont_sep[] = ", ";
-
-
+static const char *const initial_sep = " (";
+static const char *const cont_sep = ", ";
static gint proto_bfd = -1;
@@ -270,7 +268,8 @@ static gint hf_section_interface_no = -1;
/* Given the type of authentication being used, return the required length of
* the authentication header
*/
-static guint8 get_bfd_required_auth_len(guint8 auth_type)
+static guint8
+get_bfd_required_auth_len(guint8 auth_type)
{
guint8 auth_len = 0;
@@ -292,7 +291,8 @@ static guint8 get_bfd_required_auth_len(guint8 auth_type)
/* Given the type of authentication being used, return the length of
* checksum field
*/
-static guint8 get_bfd_checksum_len(guint8 auth_type)
+static guint8
+get_bfd_checksum_len(guint8 auth_type)
{
guint8 checksum_len = 0;
switch (auth_type) {
@@ -310,21 +310,24 @@ static guint8 get_bfd_checksum_len(guint8 auth_type)
return checksum_len;
}
-static void dissect_bfd_authentication(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static void
+dissect_bfd_authentication(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- int offset = 24;
- guint8 auth_type;
- guint8 auth_len;
+ int offset = 24;
+ guint8 auth_type;
+ guint8 auth_len;
proto_item *ti;
proto_item *auth_item;
proto_tree *auth_tree;
- guint8 *password;
+ guint8 *password;
auth_type = tvb_get_guint8(tvb, offset);
- auth_len = tvb_get_guint8(tvb, offset + 1);
+ auth_len = tvb_get_guint8(tvb, offset + 1);
auth_item = proto_tree_add_text(tree, tvb, offset, auth_len, "Authentication: %s",
- val_to_str(auth_type, bfd_control_auth_type_values, "Unknown Authentication Type (%d)") );
+ val_to_str(auth_type,
+ bfd_control_auth_type_values,
+ "Unknown Authentication Type (%d)") );
auth_tree = proto_item_add_subtree(auth_item, ett_bfd_auth);
proto_tree_add_item(auth_tree, hf_bfd_auth_type, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -335,116 +338,118 @@ static void dissect_bfd_authentication(tvbuff_t *tvb, packet_info *pinfo, proto_
proto_tree_add_item(auth_tree, hf_bfd_auth_key, tvb, offset + 2, 1, ENC_BIG_ENDIAN);
switch (auth_type) {
- case BFD_AUTH_SIMPLE:
- password = tvb_get_ephemeral_string(tvb, offset+3, auth_len-3);
- proto_tree_add_string(auth_tree, hf_bfd_auth_password, tvb, offset+3,
- auth_len-3, password);
- proto_item_append_text(auth_item, ": %s", password);
- break;
- case BFD_AUTH_MD5:
- case BFD_AUTH_MET_MD5:
- case BFD_AUTH_SHA1:
- case BFD_AUTH_MET_SHA1:
- if (auth_len != get_bfd_required_auth_len(auth_type)) {
- ti = proto_tree_add_text(auth_tree, tvb, offset, auth_len,
- "Length of authentication is invalid (%d)", auth_len);
- proto_item_append_text(auth_item, ": Invalid Authentication Section");
- expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_WARN,
- "Length of authentication section is invalid for Authentication Type: %s",
- val_to_str(auth_type, bfd_control_auth_type_values, "Unknown Authentication Type (%d)") );
- }
-
- proto_tree_add_item(auth_tree, hf_bfd_auth_seq_num, tvb, offset+4, 4, ENC_BIG_ENDIAN);
-
- proto_tree_add_text(auth_tree, tvb, offset+8, get_bfd_checksum_len(auth_type), "Checksum: 0x%s",
- tvb_bytes_to_str(tvb, offset+8, get_bfd_checksum_len(auth_type)) );
- break;
- default:
- break;
+ case BFD_AUTH_SIMPLE:
+ password = tvb_get_ephemeral_string(tvb, offset+3, auth_len-3);
+ proto_tree_add_string(auth_tree, hf_bfd_auth_password, tvb, offset+3,
+ auth_len-3, password);
+ proto_item_append_text(auth_item, ": %s", password);
+ break;
+ case BFD_AUTH_MD5:
+ case BFD_AUTH_MET_MD5:
+ case BFD_AUTH_SHA1:
+ case BFD_AUTH_MET_SHA1:
+ if (auth_len != get_bfd_required_auth_len(auth_type)) {
+ ti = proto_tree_add_text(auth_tree, tvb, offset, auth_len,
+ "Length of authentication is invalid (%d)", auth_len);
+ proto_item_append_text(auth_item, ": Invalid Authentication Section");
+ expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_WARN,
+ "Length of authentication section is invalid for Authentication Type: %s",
+ val_to_str(auth_type, bfd_control_auth_type_values, "Unknown Authentication Type (%d)") );
+ }
+
+ proto_tree_add_item(auth_tree, hf_bfd_auth_seq_num, tvb, offset+4, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_text(auth_tree, tvb, offset+8, get_bfd_checksum_len(auth_type), "Checksum: 0x%s",
+ tvb_bytes_to_str(tvb, offset+8, get_bfd_checksum_len(auth_type)) );
+ break;
+ default:
+ break;
}
}
-void
+void
dissect_bfd_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- gint bfd_version = -1;
- gint bfd_diag = -1;
- gint bfd_sta = -1;
- gint bfd_flags = -1;
- gint bfd_flags_h = -1;
- gint bfd_flags_p = -1;
- gint bfd_flags_f = -1;
- gint bfd_flags_c = -1;
- gint bfd_flags_a = -1;
- gint bfd_flags_d = -1;
- gint bfd_flags_m = -1;
- gint bfd_flags_d_v0 = -1;
- gint bfd_flags_p_v0 = -1;
- gint bfd_flags_f_v0 = -1;
- gint bfd_detect_time_multiplier = -1;
- gint bfd_length = -1;
- gint bfd_my_discriminator = -1;
- gint bfd_your_discriminator = -1;
- gint bfd_desired_min_tx_interval = -1;
- gint bfd_required_min_rx_interval = -1;
- gint bfd_required_min_echo_interval = -1;
-
- proto_item *ti;
- proto_tree *bfd_tree;
- proto_tree *bfd_flags_tree;
-
- const char *sep;
+ guint flags;
+ guint bfd_version;
+ guint bfd_diag;
+ guint bfd_sta = 0;
+ guint bfd_flags;
+ guint bfd_flags_h = 0;
+ guint bfd_flags_p = 0;
+ guint bfd_flags_f = 0;
+ guint bfd_flags_c = 0;
+ guint bfd_flags_a = 0;
+ guint bfd_flags_d = 0;
+ guint bfd_flags_m = 0;
+ guint bfd_flags_d_v0 = 0;
+ guint bfd_flags_p_v0 = 0;
+ guint bfd_flags_f_v0 = 0;
+ guint bfd_detect_time_multiplier;
+ guint bfd_length;
+ guint bfd_my_discriminator;
+ guint bfd_your_discriminator;
+ guint bfd_desired_min_tx_interval;
+ guint bfd_required_min_rx_interval;
+ guint bfd_required_min_echo_interval;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "BFD Control");
col_clear(pinfo->cinfo, COL_INFO);
- bfd_version = ((tvb_get_guint8(tvb, 0) & 0xe0) >> 5);
- bfd_diag = (tvb_get_guint8(tvb, 0) & 0x1f);
+ bfd_version = (tvb_get_guint8(tvb, 0) & 0xe0) >> 5;
+ bfd_diag = (tvb_get_guint8(tvb, 0) & 0x1f);
+ flags = tvb_get_guint8(tvb, 1);
switch (bfd_version) {
case 0:
- bfd_flags = tvb_get_guint8(tvb, 1 );
- bfd_flags_h = (tvb_get_guint8(tvb, 1) & 0x80);
- bfd_flags_d_v0 = (tvb_get_guint8(tvb, 1) & 0x40);
- bfd_flags_p_v0 = (tvb_get_guint8(tvb, 1) & 0x20);
- bfd_flags_f_v0 = (tvb_get_guint8(tvb, 1) & 0x10);
+ bfd_flags = flags;
+ bfd_flags_h = flags & 0x80;
+ bfd_flags_d_v0 = flags & 0x40;
+ bfd_flags_p_v0 = flags & 0x20;
+ bfd_flags_f_v0 = flags & 0x10;
break;
case 1:
default:
- bfd_sta = (tvb_get_guint8(tvb, 1) & 0xc0);
- bfd_flags = (tvb_get_guint8(tvb, 1) & 0x3e);
- bfd_flags_p = (tvb_get_guint8(tvb, 1) & 0x20);
- bfd_flags_f = (tvb_get_guint8(tvb, 1) & 0x10);
- bfd_flags_c = (tvb_get_guint8(tvb, 1) & 0x08);
- bfd_flags_a = (tvb_get_guint8(tvb, 1) & 0x04);
- bfd_flags_d = (tvb_get_guint8(tvb, 1) & 0x02);
- bfd_flags_m = (tvb_get_guint8(tvb, 1) & 0x01);
+ bfd_sta = flags & 0xc0;
+ bfd_flags = flags & 0x3e;
+ bfd_flags_p = flags & 0x20;
+ bfd_flags_f = flags & 0x10;
+ bfd_flags_c = flags & 0x08;
+ bfd_flags_a = flags & 0x04;
+ bfd_flags_d = flags & 0x02;
+ bfd_flags_m = flags & 0x01;
break;
}
- bfd_detect_time_multiplier = tvb_get_guint8(tvb, 2);
- bfd_length = tvb_get_guint8(tvb, 3);
- bfd_my_discriminator = tvb_get_ntohl(tvb, 4);
- bfd_your_discriminator = tvb_get_ntohl(tvb, 8);
- bfd_desired_min_tx_interval = tvb_get_ntohl(tvb, 12);
- bfd_required_min_rx_interval = tvb_get_ntohl(tvb, 16);
+
+ bfd_detect_time_multiplier = tvb_get_guint8(tvb, 2);
+ bfd_length = tvb_get_guint8(tvb, 3);
+ bfd_my_discriminator = tvb_get_ntohl(tvb, 4);
+ bfd_your_discriminator = tvb_get_ntohl(tvb, 8);
+ bfd_desired_min_tx_interval = tvb_get_ntohl(tvb, 12);
+ bfd_required_min_rx_interval = tvb_get_ntohl(tvb, 16);
bfd_required_min_echo_interval = tvb_get_ntohl(tvb, 20);
- switch (bfd_version) {
- case 0:
- col_add_fstr(pinfo->cinfo, COL_INFO, "Diag: %s, Flags: 0x%02x",
- val_to_str(bfd_diag, bfd_control_v0_diag_values, "UNKNOWN"),
- bfd_flags);
- break;
- case 1:
- default:
- col_add_fstr(pinfo->cinfo, COL_INFO, "Diag: %s, State: %s, Flags: 0x%02x",
- val_to_str(bfd_diag, bfd_control_v1_diag_values, "UNKNOWN"),
- val_to_str(bfd_sta >> 6 , bfd_control_sta_values, "UNKNOWN"),
- bfd_flags);
- break;
+ switch (bfd_version) {
+ case 0:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Diag: %s, Flags: 0x%02x",
+ val_to_str_const(bfd_diag, bfd_control_v0_diag_values, "Unknown"),
+ bfd_flags);
+ break;
+ case 1:
+ default:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Diag: %s, State: %s, Flags: 0x%02x",
+ val_to_str_const(bfd_diag, bfd_control_v1_diag_values, "Unknown"),
+ val_to_str_const(bfd_sta >> 6 , bfd_control_sta_values, "Unknown"),
+ bfd_flags);
+ break;
}
if (tree) {
+ proto_item *ti;
+ proto_tree *bfd_tree;
+ proto_tree *bfd_flags_tree;
+ const char *sep;
+
ti = proto_tree_add_protocol_format(tree, proto_bfd, tvb, 0, bfd_length,
"BFD Control message");
@@ -456,7 +461,7 @@ dissect_bfd_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_uint(bfd_tree, hf_bfd_diag, tvb, 0,
1, bfd_diag);
- switch (bfd_version) {
+ switch (bfd_version) {
case 0:
break;
case 1:
@@ -465,19 +470,19 @@ dissect_bfd_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
1, bfd_sta);
break;
- }
- switch (bfd_version) {
+ }
+ switch (bfd_version) {
case 0:
ti = proto_tree_add_text ( bfd_tree, tvb, 1, 1, "Message Flags: 0x%02x",
bfd_flags);
bfd_flags_tree = proto_item_add_subtree(ti, ett_bfd_flags);
- proto_tree_add_boolean(bfd_flags_tree, hf_bfd_flags_h, tvb, 1, 1, bfd_flags_h);
+ proto_tree_add_boolean(bfd_flags_tree, hf_bfd_flags_h, tvb, 1, 1, bfd_flags_h);
proto_tree_add_boolean(bfd_flags_tree, hf_bfd_flags_d_v0, tvb, 1, 1, bfd_flags_d_v0);
proto_tree_add_boolean(bfd_flags_tree, hf_bfd_flags_p_v0, tvb, 1, 1, bfd_flags_p_v0);
proto_tree_add_boolean(bfd_flags_tree, hf_bfd_flags_f_v0, tvb, 1, 1, bfd_flags_f_v0);
sep = initial_sep;
- APPEND_BOOLEAN_FLAG(bfd_flags_h, ti, "%sH");
+ APPEND_BOOLEAN_FLAG(bfd_flags_h, ti, "%sH");
APPEND_BOOLEAN_FLAG(bfd_flags_d_v0, ti, "%sD");
APPEND_BOOLEAN_FLAG(bfd_flags_p_v0, ti, "%sP");
APPEND_BOOLEAN_FLAG(bfd_flags_f_v0, ti, "%sF");
@@ -508,16 +513,16 @@ dissect_bfd_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_item_append_text (ti, ")");
}
break;
- }
+ }
proto_tree_add_uint_format_value(bfd_tree, hf_bfd_detect_time_multiplier, tvb, 2,
- 1, bfd_detect_time_multiplier,
- "%u (= %u ms Detection time)",
- bfd_detect_time_multiplier,
- bfd_detect_time_multiplier * bfd_desired_min_tx_interval/1000);
+ 1, bfd_detect_time_multiplier,
+ "%u (= %u ms Detection time)",
+ bfd_detect_time_multiplier,
+ bfd_detect_time_multiplier * (bfd_desired_min_tx_interval/1000));
- proto_tree_add_uint_format_value(bfd_tree, hf_bfd_message_length, tvb, 3, 1, bfd_length,
- "%u bytes", bfd_length);
+ proto_tree_add_uint_format_value(bfd_tree, hf_bfd_message_length, tvb, 3, 1, bfd_length,
+ "%u bytes", bfd_length);
proto_tree_add_uint(bfd_tree, hf_bfd_my_discriminator, tvb, 4,
4, bfd_my_discriminator);
@@ -529,150 +534,127 @@ dissect_bfd_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
4, bfd_desired_min_tx_interval,
"%4u ms (%u us)",
bfd_desired_min_tx_interval/1000,
- bfd_desired_min_tx_interval);
+ bfd_desired_min_tx_interval);
proto_tree_add_uint_format_value(bfd_tree, hf_bfd_required_min_rx_interval, tvb, 16,
4, bfd_required_min_rx_interval,
"%4u ms (%u us)",
bfd_required_min_rx_interval/1000,
- bfd_required_min_rx_interval);
+ bfd_required_min_rx_interval);
proto_tree_add_uint_format_value(bfd_tree, hf_bfd_required_min_echo_interval, tvb, 20,
4, bfd_required_min_echo_interval,
"%4u ms (%u us)",
bfd_required_min_echo_interval/1000,
- bfd_required_min_echo_interval);
-
- /* Dissect the authentication fields if the Authentication flag has
- * been set
- */
- if (bfd_version && bfd_flags_a) {
- if (bfd_length >= 28) {
- dissect_bfd_authentication(tvb, pinfo, bfd_tree);
- } else {
- ti = proto_tree_add_text(bfd_tree, tvb, 24, bfd_length,
- "Authentication: Length of the BFD frame is invalid (%d)", bfd_length);
- expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_WARN,
- "Authentication flag is set in a BFD packet, but no authentication data is present");
- }
- }
+ bfd_required_min_echo_interval);
+
+ /* Dissect the authentication fields if the Authentication flag has
+ * been set
+ */
+ if (bfd_version && bfd_flags_a) {
+ if (bfd_length >= 28) {
+ dissect_bfd_authentication(tvb, pinfo, bfd_tree);
+ } else {
+ ti = proto_tree_add_text(bfd_tree, tvb, 24, bfd_length,
+ "Authentication: Length of the BFD frame is invalid (%d)", bfd_length);
+ expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_WARN,
+ "Authentication flag is set in a BFD packet, but no authentication data is present");
+ }
+ }
}
return;
}
-/* BFD CV Source MEP-ID TLV Decoder,
+/* BFD CV Source MEP-ID TLV Decoder,
As per RFC 6428 : http://tools.ietf.org/html/rfc6428
sections - 3.5.1, 3.5.2, 3.5.3 */
-void
+void
dissect_bfd_mep (tvbuff_t *tvb, proto_tree *tree)
{
- gint offset = 0, mep_offset = 0;
- gint mep_type = -1;
- gint mep_len = -1;
- gint mep_global_id = -1;
- gint mep_node_id = -1;
- gint mep_tunnel_no = -1;
- gint mep_lsp_no = -1;
- gint mep_ac_id = -1;
- gint mep_agi_type = -1;
- gint mep_agi_len = -1;
- gint section_global_id = -1;
- gint section_node_id = -1;
- gint section_interface_num = -1;
proto_item *ti;
proto_tree *bfd_tree;
-
- /* Fetch the BFD control message length and move the offset
+ gint offset;
+ gint mep_type;
+ gint mep_len;
+ gint mep_agi_len;
+
+ if (!tree)
+ return;
+
+ /* Fetch the BFD control message length and move the offset
to point to the data portion after the control message */
- mep_offset = tvb_get_guint8 ( tvb, (offset + 3));
- offset = mep_offset;
+ offset = tvb_get_guint8(tvb, 3);
mep_type = tvb_get_ntohs (tvb, offset);
- mep_len = tvb_get_ntohs (tvb, (offset + 2));
- ti = proto_tree_add_protocol_format (tree, proto_bfd, tvb, offset, (mep_len + 4),
+ mep_len = tvb_get_ntohs (tvb, (offset + 2));
+ ti = proto_tree_add_protocol_format (tree, proto_bfd, tvb, offset, (mep_len + 4),
"MPLS-TP SOURCE MEP-ID TLV");
switch (mep_type) {
- case TLV_TYPE_MPLSTP_SECTION_MEP:
-
- section_global_id = tvb_get_ntohl (tvb, (offset + 4));
- section_node_id = tvb_get_ipv4 (tvb, (offset + 8));
- section_interface_num = tvb_get_ntohl (tvb, (offset + 12));
- if (tree) {
- bfd_tree = proto_item_add_subtree (ti, ett_bfd);
- proto_tree_add_uint (bfd_tree, hf_mep_type , tvb, offset,
- 2, mep_type);
- proto_tree_add_uint (bfd_tree, hf_mep_len, tvb, (offset + 2),
- 2, mep_len);
- proto_tree_add_uint (bfd_tree, hf_mep_global_id, tvb, (offset + 4),
- 4, section_global_id);
- proto_tree_add_ipv4 (bfd_tree, hf_mep_node_id, tvb, (offset + 8),
- 4, section_node_id);
- proto_tree_add_uint (bfd_tree, hf_section_interface_no, tvb, (offset + 12),
- 4, section_interface_num);
- }
-
- break;
-
+ case TLV_TYPE_MPLSTP_SECTION_MEP:
+
+ bfd_tree = proto_item_add_subtree (ti, ett_bfd);
+ proto_tree_add_uint (bfd_tree, hf_mep_type , tvb, offset,
+ 2, mep_type);
+ proto_tree_add_uint (bfd_tree, hf_mep_len, tvb, (offset + 2),
+ 2, mep_len);
+ proto_tree_add_item (bfd_tree, hf_mep_global_id, tvb, (offset + 4),
+ 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item (bfd_tree, hf_mep_node_id, tvb, (offset + 8),
+ 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item (bfd_tree, hf_section_interface_no, tvb, (offset + 12),
+ 4, ENC_BIG_ENDIAN);
+
+ break;
+
case TLV_TYPE_MPLSTP_LSP_MEP:
- mep_global_id = tvb_get_ntohl (tvb, (offset + 4));
- mep_node_id = tvb_get_ipv4 (tvb, (offset + 8));
- mep_tunnel_no = tvb_get_ntohs (tvb, (offset + 12));
- mep_lsp_no = tvb_get_ntohs (tvb, (offset + 14));
- if (tree) {
- bfd_tree = proto_item_add_subtree (ti, ett_bfd);
- proto_tree_add_uint (bfd_tree, hf_mep_type , tvb, offset,
- 2, mep_type);
- proto_tree_add_uint (bfd_tree, hf_mep_len, tvb, (offset + 2),
- 2, mep_len);
- proto_tree_add_uint (bfd_tree, hf_mep_global_id, tvb, (offset + 4),
- 4, mep_global_id);
- proto_tree_add_ipv4 (bfd_tree, hf_mep_node_id, tvb, (offset + 8),
- 4, mep_node_id);
- proto_tree_add_uint (bfd_tree, hf_mep_tunnel_no, tvb, (offset + 12),
- 2, mep_tunnel_no);
- proto_tree_add_uint (bfd_tree, hf_mep_lsp_no, tvb, (offset + 14),
- 2, mep_lsp_no);
- }
-
- break;
+ bfd_tree = proto_item_add_subtree (ti, ett_bfd);
+ proto_tree_add_uint (bfd_tree, hf_mep_type , tvb, offset,
+ 2, mep_type);
+ proto_tree_add_uint (bfd_tree, hf_mep_len, tvb, (offset + 2),
+ 2, mep_len);
+ proto_tree_add_item (bfd_tree, hf_mep_global_id, tvb, (offset + 4),
+ 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item (bfd_tree, hf_mep_node_id, tvb, (offset + 8),
+ 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item (bfd_tree, hf_mep_tunnel_no, tvb, (offset + 12),
+ 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item (bfd_tree, hf_mep_lsp_no, tvb, (offset + 14),
+ 2, ENC_BIG_ENDIAN);
+
+ break;
case TLV_TYPE_MPLSTP_PW_MEP:
- mep_global_id = tvb_get_ntohl (tvb, (offset + 4));
- mep_node_id = tvb_get_ipv4 (tvb, (offset + 8));
- mep_ac_id = tvb_get_ntohl (tvb, (offset + 12));
- mep_agi_type = tvb_get_guint8 (tvb, (offset + 16));
- mep_agi_len = tvb_get_guint8 (tvb, (offset + 17));
- if (tree) {
- bfd_tree = proto_item_add_subtree (ti, ett_bfd);
- proto_tree_add_uint (bfd_tree, hf_mep_type, tvb, offset,
- 2, (mep_type));
- proto_tree_add_uint (bfd_tree, hf_mep_len, tvb, (offset + 2),
- 2, mep_len);
- proto_tree_add_uint (bfd_tree, hf_mep_global_id, tvb, (offset + 4),
- 4, mep_global_id);
- proto_tree_add_ipv4 (bfd_tree, hf_mep_node_id, tvb, (offset + 8),
- 4, mep_node_id);
- proto_tree_add_uint (bfd_tree, hf_mep_ac_id, tvb, (offset + 12),
- 4, mep_ac_id);
- proto_tree_add_uint (bfd_tree, hf_mep_agi_type, tvb, (offset + 16),
- 1, mep_agi_type);
- proto_tree_add_uint (bfd_tree, hf_mep_agi_len, tvb, (offset + 17),
- 1, mep_agi_len);
- proto_tree_add_item (bfd_tree, hf_mep_agi_val, tvb, (offset + 18),
- mep_agi_len, ENC_BIG_ENDIAN);
- }
+ mep_agi_len = tvb_get_guint8 (tvb, (offset + 17));
+ bfd_tree = proto_item_add_subtree (ti, ett_bfd);
+ proto_tree_add_uint (bfd_tree, hf_mep_type, tvb, offset,
+ 2, (mep_type));
+ proto_tree_add_uint (bfd_tree, hf_mep_len, tvb, (offset + 2),
+ 2, mep_len);
+ proto_tree_add_item (bfd_tree, hf_mep_global_id, tvb, (offset + 4),
+ 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item (bfd_tree, hf_mep_node_id, tvb, (offset + 8),
+ 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item (bfd_tree, hf_mep_ac_id, tvb, (offset + 12),
+ 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item (bfd_tree, hf_mep_agi_type, tvb, (offset + 16),
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_uint (bfd_tree, hf_mep_agi_len, tvb, (offset + 17),
+ 1, mep_agi_len);
+ proto_tree_add_item (bfd_tree, hf_mep_agi_val, tvb, (offset + 18),
+ mep_agi_len, ENC_ASCII|ENC_NA);
- break;
+ break;
default:
- break;
+ break;
}
return;
}
/* Register the protocol with Wireshark */
-void proto_register_bfd(void)
+void
+proto_register_bfd(void)
{
/* Setup list of header fields */
@@ -719,34 +701,34 @@ void proto_register_bfd(void)
},
{ &hf_bfd_flags_p,
{ "Poll", "bfd.flags.p",
- FT_BOOLEAN, 6, TFS(&tfs_set_notset), 0x20,
+ FT_BOOLEAN, 6, TFS(&tfs_set_notset), 0x20, /* 6 flag bits; Sta is shown separately */
"If set, the transmitting system is expecting a packet with the Final (F) bit in reply",
- HFILL }
+ HFILL }
},
{ &hf_bfd_flags_f,
{ "Final", "bfd.flags.f",
- FT_BOOLEAN, 6, TFS(&tfs_set_notset), 0x10,
+ FT_BOOLEAN, 6, TFS(&tfs_set_notset), 0x10, /* 6 flag bits; Sta is shown separately */
"If set, the transmitting system is replying to a packet with the Poll (P) bit set",
- HFILL }
+ HFILL }
},
{ &hf_bfd_flags_c,
{ "Control Plane Independent", "bfd.flags.c",
- FT_BOOLEAN, 6, TFS(&tfs_set_notset), 0x08,
+ FT_BOOLEAN, 6, TFS(&tfs_set_notset), 0x08, /* 6 flag bits; Sta is shown separately */
"If set, the BFD implementation is implemented in the forwarding plane", HFILL }
},
{ &hf_bfd_flags_a,
{ "Authentication Present", "bfd.flags.a",
- FT_BOOLEAN, 6, TFS(&tfs_set_notset), 0x04,
+ FT_BOOLEAN, 6, TFS(&tfs_set_notset), 0x04, /* 6 flag bits; Sta is shown separately */
"The Authentication Section is present", HFILL }
},
{ &hf_bfd_flags_d,
{ "Demand", "bfd.flags.d",
- FT_BOOLEAN, 6, TFS(&tfs_set_notset), 0x02,
+ FT_BOOLEAN, 6, TFS(&tfs_set_notset), 0x02, /* 6 flag bits; Sta is shown separately */
"If set, Demand mode is active in the transmitting system", HFILL }
},
{ &hf_bfd_flags_m,
{ "Multipoint", "bfd.flags.m",
- FT_BOOLEAN, 6, TFS(&tfs_set_notset), 0x01,
+ FT_BOOLEAN, 6, TFS(&tfs_set_notset), 0x01, /* 6 flag bits; Sta is shown separately */
"Reserved for future point-to-multipoint extensions", HFILL }
},
{ &hf_bfd_detect_time_multiplier,
@@ -809,7 +791,7 @@ void proto_register_bfd(void)
FT_UINT32, BASE_HEX, NULL, 0x0,
"The Sequence Number is periodically incremented to prevent replay attacks", HFILL }
},
- { &hf_mep_type,
+ { &hf_mep_type,
{ "Type", "mep.type",
FT_UINT16, BASE_DEC, VALS(mplstp_mep_tlv_type_values), 0x0,
"The type of the MEP Id", HFILL }
@@ -860,9 +842,9 @@ void proto_register_bfd(void)
NULL, HFILL }
},
{ &hf_mep_agi_val,
- { "AGI value", "mep.agi.val",
- FT_STRING, BASE_NONE, NULL , 0x0,
- NULL, HFILL }
+ { "AGI value", "mep.agi.val",
+ FT_STRING, BASE_NONE, NULL , 0x0,
+ NULL, HFILL }
},
{ &hf_section_interface_no,
{ "Interface Number", "mep.interface.no",
@@ -875,7 +857,7 @@ void proto_register_bfd(void)
static gint *ett[] = {
&ett_bfd,
&ett_bfd_flags,
- &ett_bfd_auth
+ &ett_bfd_auth
};
/* Register the protocol name and description */
@@ -894,7 +876,7 @@ proto_reg_handoff_bfd(void)
{
dissector_handle_t bfd_control_handle;
- bfd_control_handle = create_dissector_handle(dissect_bfd_control, proto_bfd);
- dissector_add_uint("udp.port", UDP_PORT_BFD_1HOP_CONTROL, bfd_control_handle);
+ bfd_control_handle = find_dissector("bfd");
+ dissector_add_uint("udp.port", UDP_PORT_BFD_1HOP_CONTROL, bfd_control_handle);
dissector_add_uint("udp.port", UDP_PORT_BFD_MULTIHOP_CONTROL, bfd_control_handle);
}
diff --git a/epan/dissectors/packet-bgp.c b/epan/dissectors/packet-bgp.c
index 0f177b747f..1f76790468 100644
--- a/epan/dissectors/packet-bgp.c
+++ b/epan/dissectors/packet-bgp.c
@@ -32,15 +32,18 @@
* RFC2858 Multiprotocol Extensions for BGP-4
* RFC2918 Route Refresh Capability for BGP-4
* RFC3107 Carrying Label Information in BGP-4
+ * RFC4486 Subcodes for BGP Cease Notification Message
* RFC5512 BGP Encapsulation SAFI and the BGP Tunnel Encapsulation Attribute
* RFC5640 Load-Balancing for Mesh Softwires
+ * RFC6608 Subcodes for BGP Finite State Machine Error
* draft-ietf-idr-as4bytes-06
* draft-ietf-idr-dynamic-cap-03
* draft-ietf-idr-bgp-ext-communities-05
* draft-knoll-idr-qos-attribute-03
* draft-nalawade-kapoor-tunnel-safi-05
* draft-ietf-idr-add-paths-04 Additional-Path for BGP-4
- *
+ * http://www.iana.org/assignments/bgp-parameters/ (last updated 2012-04-26)
+
* TODO:
* Destination Preference Attribute for BGP (work in progress)
* RFC1863 A BGP/IDRP Route Server alternative to a full mesh routing
@@ -51,11 +54,11 @@
#endif
#include <string.h>
+
#include <glib.h>
#include <epan/packet.h>
#include <epan/addr_and_mask.h>
-#include "packet-bgp.h"
#include "packet-frame.h"
#include <epan/afn.h>
#include <epan/prefs.h>
@@ -65,33 +68,250 @@
/* #define MAX_STR_LEN 256 */
+/* some handy things to know */
+#define BGP_MAX_PACKET_SIZE 4096
+#define BGP_MARKER_SIZE 16 /* size of BGP marker */
+#define BGP_HEADER_SIZE 19 /* size of BGP header, including marker */
+#define BGP_MIN_OPEN_MSG_SIZE 29
+#define BGP_MIN_UPDATE_MSG_SIZE 23
+#define BGP_MIN_NOTIFICATION_MSG_SIZE 21
+#define BGP_MIN_KEEPALVE_MSG_SIZE BGP_HEADER_SIZE
+#define BGP_TCP_PORT 179
+#define BGP_ROUTE_DISTINGUISHER_SIZE 8
+
+/* BGP message types */
+#define BGP_OPEN 1
+#define BGP_UPDATE 2
+#define BGP_NOTIFICATION 3
+#define BGP_KEEPALIVE 4
+#define BGP_ROUTE_REFRESH 5
+#define BGP_CAPABILITY 6
+#define BGP_ROUTE_REFRESH_CISCO 0x80
+
+
+/* BGP ROUTE-REFRESH message */
+struct bgp_route_refresh {
+ guint8 bgpr_marker[BGP_MARKER_SIZE];
+ guint16 bgpr_len;
+ guint8 bgpr_type;
+ guint16 bgpr_afi;
+ guint8 bgpr_reserved;
+ guint8 bgpr_safi;
+};
+
+/* path attribute */
+struct bgp_attr {
+ guint8 bgpa_flags;
+ guint8 bgpa_type;
+};
+
+/* attribute flags, from RFC1771 */
+#define BGP_ATTR_FLAG_OPTIONAL 0x80
+#define BGP_ATTR_FLAG_TRANSITIVE 0x40
+#define BGP_ATTR_FLAG_PARTIAL 0x20
+#define BGP_ATTR_FLAG_EXTENDED_LENGTH 0x10
+
+/* SSA flags */
+#define BGP_SSA_TRANSITIVE 0x8000
+#define BGP_SSA_TYPE 0x7FFF
+
+/* SSA Types */
+#define BGP_SSA_L2TPv3 1
+#define BGP_SSA_mGRE 2
+#define BGP_SSA_IPSec 3
+#define BGP_SSA_MPLS 4
+#define BGP_SSA_L2TPv3_IN_IPSec 5
+#define BGP_SSA_mGRE_IN_IPSec 6
+
+/* AS_PATH segment types */
+#define AS_SET 1 /* RFC1771 */
+#define AS_SEQUENCE 2 /* RFC1771 */
+#define AS_CONFED_SET 4 /* RFC1965 has the wrong values, corrected in */
+#define AS_CONFED_SEQUENCE 3 /* draft-ietf-idr-bgp-confed-rfc1965bis-01.txt */
+
+/* OPEN message Optional Parameter types */
+#define BGP_OPTION_AUTHENTICATION 1 /* RFC1771 */
+#define BGP_OPTION_CAPABILITY 2 /* RFC2842 */
+
+/* BGP capability code */
+#define BGP_CAPABILITY_RESERVED 0 /* RFC2434 */
+#define BGP_CAPABILITY_MULTIPROTOCOL 1 /* RFC2858 */
+#define BGP_CAPABILITY_ROUTE_REFRESH 2 /* RFC2918 */
+#define BGP_CAPABILITY_COOPERATIVE_ROUTE_FILTERING 3 /* draft-ietf-idr-route-filter-04.txt */
+#define BGP_CAPABILITY_GRACEFUL_RESTART 0x40 /* draft-ietf-idr-restart-05 */
+#define BGP_CAPABILITY_4_OCTET_AS_NUMBER 0x41 /* draft-ietf-idr-as4bytes-06 */
+#define BGP_CAPABILITY_DYNAMIC_CAPABILITY 0x42 /* draft-ietf-idr-dynamic-cap-03 */
+#define BGP_CAPABILITY_ADDITIONAL_PATHS 0x45 /* draft-ietf-idr-add-paths */
+#define BGP_CAPABILITY_ORF_CISCO 0x82 /* Cisco */
+#define BGP_CAPABILITY_ROUTE_REFRESH_CISCO 0x80 /* Cisco */
+
+#define BGP_ORF_PREFIX_CISCO 0x80 /* Cisco */
+#define BGP_ORF_COMM_CISCO 0x81 /* Cisco */
+#define BGP_ORF_EXTCOMM_CISCO 0x82 /* Cisco */
+#define BGP_ORF_ASPATH_CISCO 0x83 /* Cisco */
+
+#define BGP_ORF_COMM 0x02 /* draft-ietf-idr-route-filter-06.txt */
+#define BGP_ORF_EXTCOMM 0x03 /* draft-ietf-idr-route-filter-06.txt */
+#define BGP_ORF_ASPATH 0x04 /* draft-ietf-idr-aspath-orf-02.txt */
+/* draft-ietf-idr-route-filter-06.txt */
+#define BGP_ORF_ACTION 0xc0
+#define BGP_ORF_ADD 0x00
+#define BGP_ORF_REMOVE 0x40
+#define BGP_ORF_REMOVEALL 0x80
+#define BGP_ORF_MATCH 0x20
+#define BGP_ORF_PERMIT 0x00
+#define BGP_ORF_DENY 0x20
+
+/* well-known communities, from RFC1997 */
+#define BGP_COMM_NO_EXPORT 0xFFFFFF01
+#define BGP_COMM_NO_ADVERTISE 0xFFFFFF02
+#define BGP_COMM_NO_EXPORT_SUBCONFED 0xFFFFFF03
+#define FOURHEX0 0x00000000
+#define FOURHEXF 0xFFFF0000
+
+/* attribute types */
+#define BGPTYPE_ORIGIN 1 /* RFC1771 */
+#define BGPTYPE_AS_PATH 2 /* RFC1771 */
+#define BGPTYPE_NEXT_HOP 3 /* RFC1771 */
+#define BGPTYPE_MULTI_EXIT_DISC 4 /* RFC1771 */
+#define BGPTYPE_LOCAL_PREF 5 /* RFC1771 */
+#define BGPTYPE_ATOMIC_AGGREGATE 6 /* RFC1771 */
+#define BGPTYPE_AGGREGATOR 7 /* RFC1771 */
+#define BGPTYPE_COMMUNITIES 8 /* RFC1997 */
+#define BGPTYPE_ORIGINATOR_ID 9 /* RFC2796 */
+#define BGPTYPE_CLUSTER_LIST 10 /* RFC2796 */
+#define BGPTYPE_DPA 11 /* work in progress */
+#define BGPTYPE_ADVERTISER 12 /* RFC1863 */
+#define BGPTYPE_RCID_PATH 13 /* RFC1863 */
+#define BGPTYPE_MP_REACH_NLRI 14 /* RFC2858 */
+#define BGPTYPE_MP_UNREACH_NLRI 15 /* RFC2858 */
+#define BGPTYPE_EXTENDED_COMMUNITY 16 /* Draft Ramachandra */
+#define BGPTYPE_NEW_AS_PATH 17 /* draft-ietf-idr-as4bytes */
+#define BGPTYPE_NEW_AGGREGATOR 18 /* draft-ietf-idr-as4bytes */
+#define BGPTYPE_SAFI_SPECIFIC_ATTR 19 /* draft-kapoor-nalawade-idr-bgp-ssa-00.txt */
+#define BGPTYPE_TUNNEL_ENCAPS_ATTR 23 /* RFC5512 */
+
+/* Extended community type */
+/* according to IANA's number assignment at: http://www.iana.org/assignments/bgp-extended-communities */
+#define BGP_EXT_COM_QOS_MARK_T 0x04 /* QoS Marking transitive attribute of regular type (8bit) */
+#define BGP_EXT_COM_QOS_MARK_NT 0x44 /* QoS Marking non-transitive attribute of regular type (8bit) */
+ /* Format Type(1byte):Flags(1byte):QoS Set(1byte):Tec. Type(1byte): */
+ /* Marking O(2bytes):Marking A(1byte):Proc.Cnt(1byte) */
+#define BGP_EXT_COM_COS_CAP_T 0x05 /* CoS Capability - Format Type(1byte):Flags(1byte):remaining '0..0' */
+
+ /* draft-ietf-idr-bgp-ext-communities */
+#define BGP_EXT_COM_RT_0 0x0002 /* Route Target,Format AS(2bytes):AN(4bytes) */
+#define BGP_EXT_COM_RT_1 0x0102 /* Route Target,Format IP address:AN(2bytes) */
+#define BGP_EXT_COM_RT_2 0x0202 /* Route Target,Format AS(2bytes):AN(4bytes) */
+#define BGP_EXT_COM_RO_0 0x0003 /* Route Origin,Format AS(2bytes):AN(4bytes) */
+#define BGP_EXT_COM_RO_1 0x0103 /* Route Origin,Format IP address:AN(2bytes) */
+#define BGP_EXT_COM_RO_2 0x0203 /* Route Origin,Format AS(2bytes):AN(4bytes) */
+#define BGP_EXT_COM_LINKBAND ((BGP_ATTR_FLAG_TRANSITIVE << 8) | 0x0004)
+ /* Link Bandwidth,Format AS(2bytes):
+ * Bandwidth(4bytes) */
+ /* -2 version of the draft */
+#define BGP_EXT_COM_VPN_ORIGIN 0x0005 /* OSPF Domin ID / VPN of Origin */
+ /* draft-rosen-vpns-ospf-bgp-mpls */
+#define BGP_EXT_COM_OSPF_RTYPE 0x8000 /* OSPF Route Type,Format Area(4B):RouteType(1B):Options(1B) */
+#define BGP_EXT_COM_OSPF_RID 0x8001 /* OSPF Router ID,Format RouterID(4B):Unused(2B) */
+#define BGP_EXT_COM_L2INFO 0x800a /* draft-kompella-ppvpn-l2vpn */
+
+/* Extended community QoS Marking technology type */
+#define QOS_TECH_TYPE_DSCP 0x00 /* DiffServ enabled IP (DSCP encoding) */
+#define QOS_TECH_TYPE_802_1q 0x01 /* Ethernet using 802.1q priority tag */
+#define QOS_TECH_TYPE_E_LSP 0x02 /* MPLS using E-LSP */
+#define QOS_TECH_TYPE_VC 0x03 /* Virtual Channel (VC) encoding using separate channels for */
+ /* QoS forwarding / one channel per class (e.g. ATM VCs, FR */
+ /* VCs, MPLS L-LSPs) */
+#define QOS_TECH_TYPE_GMPLS_TIME 0x04 /* GMPLS - time slot encoding */
+#define QOS_TECH_TYPE_GMPLS_LAMBDA 0x05 /* GMPLS - lambda encoding */
+#define QOS_TECH_TYPE_GMPLS_FIBRE 0x06 /* GMPLS - fibre encoding */
+
+/* OSPF codes for BGP_EXT_COM_OSPF_RTYPE draft-rosen-vpns-ospf-bgp-mpls */
+#define BGP_OSPF_RTYPE_RTR 1 /* OSPF Router LSA */
+#define BGP_OSPF_RTYPE_NET 2 /* OSPF Network LSA */
+#define BGP_OSPF_RTYPE_SUM 3 /* OSPF Summary LSA */
+#define BGP_OSPF_RTYPE_EXT 5 /* OSPF External LSA, note that ASBR doesn't apply to MPLS-VPN */
+#define BGP_OSPF_RTYPE_NSSA 7 /* OSPF NSSA External*/
+#define BGP_OSPF_RTYPE_SHAM 129 /* OSPF-MPLS-VPN Sham link */
+#define BGP_OSPF_RTYPE_METRIC_TYPE 0x1 /* LSB of RTYPE Options Field */
+
+/* Extended community & Route dinstinguisher formats */
+#define FORMAT_AS2_LOC 0x00 /* Format AS(2bytes):AN(4bytes) */
+#define FORMAT_IP_LOC 0x01 /* Format IP address:AN(2bytes) */
+#define FORMAT_AS4_LOC 0x02 /* Format AS(4bytes):AN(2bytes) */
+
+/* RFC 2858 subsequent address family numbers */
+#define SAFNUM_UNICAST 1
+#define SAFNUM_MULCAST 2
+#define SAFNUM_UNIMULC 3
+#define SAFNUM_MPLS_LABEL 4 /* rfc3107 */
+#define SAFNUM_MCAST_VPN 5 /* draft-ietf-l3vpn-2547bis-mcast-bgp-08.txt */
+#define SAFNUM_ENCAPSULATION 7 /* rfc5512 */
+#define SAFNUM_TUNNEL 64 /* draft-nalawade-kapoor-tunnel-safi-02.txt */
+#define SAFNUM_VPLS 65
+#define SAFNUM_MDT 66 /* rfc6037 */
+#define SAFNUM_LAB_VPNUNICAST 128 /* Draft-rosen-rfc2547bis-03 */
+#define SAFNUM_LAB_VPNMULCAST 129
+#define SAFNUM_LAB_VPNUNIMULC 130
+#define SAFNUM_ROUTE_TARGET 132 /* RFC 4684 Constrained Route Distribution for BGP/MPLS IP VPN */
+
+/* BGP Additional Paths Capability */
+#define BGP_ADDPATH_RECEIVE 0x01
+#define BGP_ADDPATH_SEND 0x02
+
+/* mcast-vpn route types draft-ietf-l3vpn-2547bis-mcast-bgp-08.txt */
+#define MCAST_VPN_RTYPE_INTRA_AS_IPMSI_AD 1
+#define MCAST_VPN_RTYPE_INTER_AS_IPMSI_AD 2
+#define MCAST_VPN_RTYPE_SPMSI_AD 3
+#define MCAST_VPN_RTYPE_LEAF_AD 4
+#define MCAST_VPN_RTYPE_SOURCE_ACTIVE_AD 5
+#define MCAST_VPN_RTYPE_SHARED_TREE_JOIN 6
+#define MCAST_VPN_RTYPE_SOURCE_TREE_JOIN 7
+
+/* RFC 5512 Tunnel Types */
+#define TUNNEL_TYPE_L2TP_OVER_IP 1
+#define TUNNEL_TYPE_GRE 2
+#define TUNNEL_TYPE_IP_IN_IP 7
+
+/* RFC 5512/5640 Sub-TLV Types */
+#define TUNNEL_SUBTLV_ENCAPSULATION 1
+#define TUNNEL_SUBTLV_PROTO_TYPE 2
+#define TUNNEL_SUBTLV_COLOR 4
+#define TUNNEL_SUBTLV_LOAD_BALANCE 5
+
+#ifndef offsetof
+#define offsetof(type, member) ((size_t)(&((type *)0)->member))
+#endif
+
+
static const value_string bgptypevals[] = {
- { BGP_OPEN, "OPEN Message" },
- { BGP_UPDATE, "UPDATE Message" },
- { BGP_NOTIFICATION, "NOTIFICATION Message" },
- { BGP_KEEPALIVE, "KEEPALIVE Message" },
- { BGP_ROUTE_REFRESH, "ROUTE-REFRESH Message" },
- { BGP_CAPABILITY, "CAPABILITY Message" },
+ { BGP_OPEN, "OPEN Message" },
+ { BGP_UPDATE, "UPDATE Message" },
+ { BGP_NOTIFICATION, "NOTIFICATION Message" },
+ { BGP_KEEPALIVE, "KEEPALIVE Message" },
+ { BGP_ROUTE_REFRESH, "ROUTE-REFRESH Message" },
+ { BGP_CAPABILITY, "CAPABILITY Message" },
{ BGP_ROUTE_REFRESH_CISCO, "Cisco ROUTE-REFRESH Message" },
{ 0, NULL }
};
-#define BGP_MAJOR_ERROR_MSG_HDR 1
-#define BGP_MAJOR_ERROR_OPEN_MSG 2
-#define BGP_MAJOR_ERROR_UPDATE_MSG 3
-#define BGP_MAJOR_ERROR_HT_EXPIRED 4
+#define BGP_MAJOR_ERROR_MSG_HDR 1
+#define BGP_MAJOR_ERROR_OPEN_MSG 2
+#define BGP_MAJOR_ERROR_UPDATE_MSG 3
+#define BGP_MAJOR_ERROR_HT_EXPIRED 4
#define BGP_MAJOR_ERROR_STATE_MACHINE 5
-#define BGP_MAJOR_ERROR_CEASE 6
-#define BGP_MAJOR_ERROR_CAP_MSG 7
+#define BGP_MAJOR_ERROR_CEASE 6
+#define BGP_MAJOR_ERROR_CAP_MSG 7
static const value_string bgpnotify_major[] = {
- { BGP_MAJOR_ERROR_MSG_HDR, "Message Header Error" },
- { BGP_MAJOR_ERROR_OPEN_MSG, "OPEN Message Error" },
- { BGP_MAJOR_ERROR_UPDATE_MSG, "UPDATE Message Error" },
- { BGP_MAJOR_ERROR_HT_EXPIRED, "Hold Timer Expired" },
+ { BGP_MAJOR_ERROR_MSG_HDR, "Message Header Error" },
+ { BGP_MAJOR_ERROR_OPEN_MSG, "OPEN Message Error" },
+ { BGP_MAJOR_ERROR_UPDATE_MSG, "UPDATE Message Error" },
+ { BGP_MAJOR_ERROR_HT_EXPIRED, "Hold Timer Expired" },
{ BGP_MAJOR_ERROR_STATE_MACHINE, "Finite State Machine Error" },
- { BGP_MAJOR_ERROR_CEASE, "Cease" },
- { BGP_MAJOR_ERROR_CAP_MSG, "CAPABILITY Message Error" },
+ { BGP_MAJOR_ERROR_CEASE, "Cease" },
+ { BGP_MAJOR_ERROR_CAP_MSG, "CAPABILITY Message Error" },
{ 0, NULL }
};
@@ -107,36 +327,44 @@ static const value_string bgpnotify_minor_open_msg[] = {
{ 2, "Bad Peer AS" },
{ 3, "Bad BGP Identifier" },
{ 4, "Unsupported Optional Parameter" },
- { 5, "Authentication Failure" },
+ { 5, "Authentication Failure [Deprecated]" },
{ 6, "Unacceptable Hold Time" },
{ 7, "Unsupported Capability" },
{ 0, NULL }
};
static const value_string bgpnotify_minor_update_msg[] = {
- { 1, "Malformed Attribute List" },
- { 2, "Unrecognized Well-known Attribute" },
- { 3, "Missing Well-known Attribute" },
- { 4, "Attribute Flags Error" },
- { 5, "Attribute Length Error" },
- { 6, "Invalid ORIGIN Attribute" },
- { 7, "AS Routing Loop" },
- { 8, "Invalid NEXT_HOP Attribute" },
- { 9, "Optional Attribute Error" },
+ { 1, "Malformed Attribute List" },
+ { 2, "Unrecognized Well-known Attribute" },
+ { 3, "Missing Well-known Attribute" },
+ { 4, "Attribute Flags Error" },
+ { 5, "Attribute Length Error" },
+ { 6, "Invalid ORIGIN Attribute" },
+ { 7, "AS Routing Loop [Deprecated]" },
+ { 8, "Invalid NEXT_HOP Attribute" },
+ { 9, "Optional Attribute Error" },
{ 10, "Invalid Network Field" },
{ 11, "Malformed AS_PATH" },
{ 0, NULL }
};
+/* RFC6608 Subcodes for BGP Finite State Machine Error */
+static const value_string bgpnotify_minor_state_machine[] = {
+ { 1, "Receive Unexpected Message in OpenSent State" },
+ { 2, "Receive Unexpected Message in OpenConfirm State" },
+ { 3, "Receive Unexpected Message in Established State" },
+ { 0, NULL }
+};
-/* draft-ietf-idr-cease-subcode-02 */
+/* RFC4486 Subcodes for BGP Cease Notification Message */
static const value_string bgpnotify_minor_cease[] = {
{ 1, "Maximum Number of Prefixes Reached"},
{ 2, "Administratively Shutdown"},
- { 3, "Peer Unconfigured"},
+ { 3, "Peer De-configured"},
{ 4, "Administratively Reset"},
{ 5, "Connection Rejected"},
{ 6, "Other Configuration Change"},
{ 7, "Connection Collision Resolution"},
+ { 8, "Out of Resources"},
{ 0, NULL }
};
@@ -172,21 +400,21 @@ static const value_string as_segment_type[] = {
};
static const value_string bgpattr_type[] = {
- { BGPTYPE_ORIGIN, "ORIGIN" },
- { BGPTYPE_AS_PATH, "AS_PATH" },
- { BGPTYPE_NEXT_HOP, "NEXT_HOP" },
- { BGPTYPE_MULTI_EXIT_DISC, "MULTI_EXIT_DISC" },
- { BGPTYPE_LOCAL_PREF, "LOCAL_PREF" },
- { BGPTYPE_ATOMIC_AGGREGATE, "ATOMIC_AGGREGATE" },
- { BGPTYPE_AGGREGATOR, "AGGREGATOR" },
- { BGPTYPE_COMMUNITIES, "COMMUNITIES" },
- { BGPTYPE_ORIGINATOR_ID, "ORIGINATOR_ID" },
- { BGPTYPE_CLUSTER_LIST, "CLUSTER_LIST" },
- { BGPTYPE_MP_REACH_NLRI, "MP_REACH_NLRI" },
- { BGPTYPE_MP_UNREACH_NLRI, "MP_UNREACH_NLRI" },
+ { BGPTYPE_ORIGIN, "ORIGIN" },
+ { BGPTYPE_AS_PATH, "AS_PATH" },
+ { BGPTYPE_NEXT_HOP, "NEXT_HOP" },
+ { BGPTYPE_MULTI_EXIT_DISC, "MULTI_EXIT_DISC" },
+ { BGPTYPE_LOCAL_PREF, "LOCAL_PREF" },
+ { BGPTYPE_ATOMIC_AGGREGATE, "ATOMIC_AGGREGATE" },
+ { BGPTYPE_AGGREGATOR, "AGGREGATOR" },
+ { BGPTYPE_COMMUNITIES, "COMMUNITIES" },
+ { BGPTYPE_ORIGINATOR_ID, "ORIGINATOR_ID" },
+ { BGPTYPE_CLUSTER_LIST, "CLUSTER_LIST" },
+ { BGPTYPE_MP_REACH_NLRI, "MP_REACH_NLRI" },
+ { BGPTYPE_MP_UNREACH_NLRI, "MP_UNREACH_NLRI" },
{ BGPTYPE_EXTENDED_COMMUNITY, "EXTENDED_COMMUNITIES" },
- { BGPTYPE_NEW_AS_PATH, "NEW_AS_PATH" },
- { BGPTYPE_NEW_AGGREGATOR, "NEW_AGGREGATOR" },
+ { BGPTYPE_NEW_AS_PATH, "NEW_AS_PATH" },
+ { BGPTYPE_NEW_AGGREGATOR, "NEW_AGGREGATOR" },
{ BGPTYPE_SAFI_SPECIFIC_ATTR, "SAFI_SPECIFIC_ATTRIBUTE" },
{ BGPTYPE_TUNNEL_ENCAPS_ATTR, "TUNNEL_ENCAPSULATION_ATTRIBUTE" },
{ 0, NULL }
@@ -201,70 +429,70 @@ static const value_string tunnel_type[] = {
static const value_string subtlv_type[] = {
{ TUNNEL_SUBTLV_ENCAPSULATION, "ENCAPSULATION" },
- { TUNNEL_SUBTLV_PROTO_TYPE, "PROTOCOL_TYPE" },
- { TUNNEL_SUBTLV_COLOR, "COLOR" },
- { TUNNEL_SUBTLV_LOAD_BALANCE, "LOAD_BALANCE" },
+ { TUNNEL_SUBTLV_PROTO_TYPE, "PROTOCOL_TYPE" },
+ { TUNNEL_SUBTLV_COLOR, "COLOR" },
+ { TUNNEL_SUBTLV_LOAD_BALANCE, "LOAD_BALANCE" },
{ 0, NULL }
};
static const value_string bgpext_com8_type[] = {
- { BGP_EXT_COM_QOS_MARK_T, "QoS Marking - transitive" },
+ { BGP_EXT_COM_QOS_MARK_T, "QoS Marking - transitive" },
{ BGP_EXT_COM_QOS_MARK_NT, "QoS Marking - non-transitive" },
- { BGP_EXT_COM_COS_CAP_T, "CoS Capability - transitive" },
+ { BGP_EXT_COM_COS_CAP_T, "CoS Capability - transitive" },
{ 0, NULL }
};
static const value_string bgpext_com_type[] = {
- { BGP_EXT_COM_RT_0, "two-octet AS specific Route Target" },
- { BGP_EXT_COM_RT_1, "IPv4 address specific Route Target" },
- { BGP_EXT_COM_RT_2, "four-octet AS specific Route Target" },
- { BGP_EXT_COM_RO_0, "two-octet AS specific Route Origin" },
- { BGP_EXT_COM_RO_1, "IPv4 address specific Route Origin" },
- { BGP_EXT_COM_RO_2, "four-octet AS specific Route Origin" },
- { BGP_EXT_COM_LINKBAND, "Link Bandwidth" },
+ { BGP_EXT_COM_RT_0, "two-octet AS specific Route Target" },
+ { BGP_EXT_COM_RT_1, "IPv4 address specific Route Target" },
+ { BGP_EXT_COM_RT_2, "four-octet AS specific Route Target" },
+ { BGP_EXT_COM_RO_0, "two-octet AS specific Route Origin" },
+ { BGP_EXT_COM_RO_1, "IPv4 address specific Route Origin" },
+ { BGP_EXT_COM_RO_2, "four-octet AS specific Route Origin" },
+ { BGP_EXT_COM_LINKBAND, "Link Bandwidth" },
{ BGP_EXT_COM_VPN_ORIGIN, "OSPF Domain" },
{ BGP_EXT_COM_OSPF_RTYPE, "OSPF Route Type" },
- { BGP_EXT_COM_OSPF_RID, "OSPF Router ID" },
- { BGP_EXT_COM_L2INFO, "Layer 2 Information" },
+ { BGP_EXT_COM_OSPF_RID, "OSPF Router ID" },
+ { BGP_EXT_COM_L2INFO, "Layer 2 Information" },
{ 0, NULL }
};
static const value_string qos_tech_type[] = {
- { QOS_TECH_TYPE_DSCP, "DiffServ enabled IP (DSCP encoding)" },
- { QOS_TECH_TYPE_802_1q, "Ethernet using 802.1q priority tag" },
- { QOS_TECH_TYPE_E_LSP, "MPLS using E-LSP" },
- { QOS_TECH_TYPE_VC, "Virtual Channel (VC) encoding" },
- { QOS_TECH_TYPE_GMPLS_TIME, "GMPLS - time slot encoding" },
+ { QOS_TECH_TYPE_DSCP, "DiffServ enabled IP (DSCP encoding)" },
+ { QOS_TECH_TYPE_802_1q, "Ethernet using 802.1q priority tag" },
+ { QOS_TECH_TYPE_E_LSP, "MPLS using E-LSP" },
+ { QOS_TECH_TYPE_VC, "Virtual Channel (VC) encoding" },
+ { QOS_TECH_TYPE_GMPLS_TIME, "GMPLS - time slot encoding" },
{ QOS_TECH_TYPE_GMPLS_LAMBDA, "GMPLS - lambda encoding" },
- { QOS_TECH_TYPE_GMPLS_FIBRE, "GMPLS - fibre encoding" },
+ { QOS_TECH_TYPE_GMPLS_FIBRE, "GMPLS - fibre encoding" },
{ 0, NULL }
};
static const value_string bgp_ssa_type[] = {
- { BGP_SSA_L2TPv3 , "L2TPv3 Tunnel" },
- { BGP_SSA_mGRE , "mGRE Tunnel" },
- { BGP_SSA_IPSec , "IPSec Tunnel" },
- { BGP_SSA_MPLS , "MPLS Tunnel" },
+ { BGP_SSA_L2TPv3 , "L2TPv3 Tunnel" },
+ { BGP_SSA_mGRE , "mGRE Tunnel" },
+ { BGP_SSA_IPSec , "IPSec Tunnel" },
+ { BGP_SSA_MPLS , "MPLS Tunnel" },
{ BGP_SSA_L2TPv3_IN_IPSec , "L2TPv3 in IPSec Tunnel" },
- { BGP_SSA_mGRE_IN_IPSec , "mGRE in IPSec Tunnel" },
+ { BGP_SSA_mGRE_IN_IPSec , "mGRE in IPSec Tunnel" },
{ 0, NULL }
};
static const value_string bgp_l2vpn_encaps[] = {
- { 0, "Reserved"},
- { 1, "Frame Relay"},
- { 2, "ATM AAL5 VCC transport"},
- { 3, "ATM transparent cell transport"},
- { 4, "Ethernet VLAN"},
- { 5, "Ethernet"},
- { 6, "Cisco-HDLC"},
- { 7, "PPP"},
- { 8, "CEM"},
- { 9, "ATM VCC cell transport"},
- { 10, "ATM VPC cell transport"},
- { 11, "MPLS"},
- { 12, "VPLS"},
- { 64, "IP-interworking"},
+ { 0, "Reserved"},
+ { 1, "Frame Relay"},
+ { 2, "ATM AAL5 VCC transport"},
+ { 3, "ATM transparent cell transport"},
+ { 4, "Ethernet VLAN"},
+ { 5, "Ethernet"},
+ { 6, "Cisco-HDLC"},
+ { 7, "PPP"},
+ { 8, "CEM"},
+ { 9, "ATM VCC cell transport"},
+ { 10, "ATM VPC cell transport"},
+ { 11, "MPLS"},
+ { 12, "VPLS"},
+ { 64, "IP-interworking"},
{ 0, NULL }
};
@@ -280,26 +508,26 @@ static const value_string bgpext_ospf_rtype[] = {
/* Subsequent address family identifier, RFC2858 */
static const value_string bgpattr_nlri_safi[] = {
- { 0, "Reserved" },
- { SAFNUM_UNICAST, "Unicast" },
- { SAFNUM_MULCAST, "Multicast" },
- { SAFNUM_UNIMULC, "Unicast+Multicast" },
- { SAFNUM_MPLS_LABEL, "Labeled Unicast"},
- { SAFNUM_MCAST_VPN, "MCAST-VPN"},
- { SAFNUM_ENCAPSULATION, "Encapsulation"},
- { SAFNUM_TUNNEL, "Tunnel"},
- { SAFNUM_VPLS, "VPLS"},
+ { 0, "Reserved" },
+ { SAFNUM_UNICAST, "Unicast" },
+ { SAFNUM_MULCAST, "Multicast" },
+ { SAFNUM_UNIMULC, "Unicast+Multicast" },
+ { SAFNUM_MPLS_LABEL, "Labeled Unicast"},
+ { SAFNUM_MCAST_VPN, "MCAST-VPN"},
+ { SAFNUM_ENCAPSULATION, "Encapsulation"},
+ { SAFNUM_TUNNEL, "Tunnel"},
+ { SAFNUM_VPLS, "VPLS"},
{ SAFNUM_LAB_VPNUNICAST, "Labeled VPN Unicast" }, /* draft-rosen-rfc2547bis-03 */
{ SAFNUM_LAB_VPNMULCAST, "Labeled VPN Multicast" },
{ SAFNUM_LAB_VPNUNIMULC, "Labeled VPN Unicast+Multicast" },
- { SAFNUM_ROUTE_TARGET, "Route Target Filter" },
+ { SAFNUM_ROUTE_TARGET, "Route Target Filter" },
{ 0, NULL }
};
/* ORF Type, draft-ietf-idr-route-filter-04.txt */
static const value_string orf_type_vals[] = {
- { 2, "Communities ORF-Type" },
- { 3, "Extended Communities ORF-Type" },
+ { 2, "Communities ORF-Type" },
+ { 3, "Extended Communities ORF-Type" },
{ 128, "Cisco PrefixList ORF-Type" },
{ 129, "Cisco CommunityList ORF-Type" },
{ 130, "Cisco Extended CommunityList ORF-Type" },
@@ -336,16 +564,16 @@ static const value_string orf_entry_match_vals[] = {
};
static const value_string capability_vals[] = {
- { BGP_CAPABILITY_RESERVED, "Reserved capability" },
- { BGP_CAPABILITY_MULTIPROTOCOL, "Multiprotocol extensions capability" },
- { BGP_CAPABILITY_ROUTE_REFRESH, "Route refresh capability" },
+ { BGP_CAPABILITY_RESERVED, "Reserved capability" },
+ { BGP_CAPABILITY_MULTIPROTOCOL, "Multiprotocol extensions capability" },
+ { BGP_CAPABILITY_ROUTE_REFRESH, "Route refresh capability" },
{ BGP_CAPABILITY_COOPERATIVE_ROUTE_FILTERING, "Cooperative route filtering capability" },
- { BGP_CAPABILITY_GRACEFUL_RESTART, "Graceful Restart capability" },
- { BGP_CAPABILITY_4_OCTET_AS_NUMBER, "Support for 4-octet AS number capability" },
- { BGP_CAPABILITY_DYNAMIC_CAPABILITY, "Support for Dynamic capability" },
- { BGP_CAPABILITY_ADDITIONAL_PATHS, "Support for Additional Paths" },
- { BGP_CAPABILITY_ROUTE_REFRESH_CISCO, "Route refresh capability" },
- { BGP_CAPABILITY_ORF_CISCO, "Cooperative route filtering capability" },
+ { BGP_CAPABILITY_GRACEFUL_RESTART, "Graceful Restart capability" },
+ { BGP_CAPABILITY_4_OCTET_AS_NUMBER, "Support for 4-octet AS number capability" },
+ { BGP_CAPABILITY_DYNAMIC_CAPABILITY, "Support for Dynamic capability" },
+ { BGP_CAPABILITY_ADDITIONAL_PATHS, "Support for Additional Paths" },
+ { BGP_CAPABILITY_ROUTE_REFRESH_CISCO, "Route refresh capability" },
+ { BGP_CAPABILITY_ORF_CISCO, "Cooperative route filtering capability" },
{ 0, NULL }
};
@@ -466,6 +694,9 @@ static int hf_bgp_encaps_tunnel_tlv_len = -1;
static int hf_bgp_encaps_tunnel_tlv_type = -1;
static int hf_bgp_encaps_tunnel_subtlv_len = -1;
static int hf_bgp_encaps_tunnel_subtlv_type = -1;
+static int hf_bgp_mdt_safi_rd = -1;
+static int hf_bgp_mdt_safi_ipv4_addr = -1;
+static int hf_bgp_mdt_safi_group_addr = -1;
static gint ett_bgp = -1;
@@ -900,6 +1131,40 @@ decode_mcast_vpn_nlri(proto_tree *tree, tvbuff_t *tvb, gint offset, guint16 afi)
}
/*
+ * Decodes an MDT-SAFI message.
+ */
+static guint
+decode_mdt_safi(proto_tree *tree, tvbuff_t *tvb, gint offset)
+{
+ const guint ip_length = 4;
+ const guint mdt_safi_nlri_length_bits = 128;
+ guint length; /* length in bits */
+ gint orig_offset = offset;
+ proto_item *item;
+
+ length = tvb_get_guint8(tvb, offset);
+ if (length != mdt_safi_nlri_length_bits)
+ return -1;
+ offset++;
+
+ item = proto_tree_add_item(tree, hf_bgp_mdt_safi_rd, tvb,
+ offset, BGP_ROUTE_DISTINGUISHER_SIZE, ENC_NA);
+ proto_item_set_text(item, "Route Distinguisher: %s",
+ decode_bgp_rd(tvb, offset));
+ offset += BGP_ROUTE_DISTINGUISHER_SIZE;
+
+ proto_tree_add_item(tree, hf_bgp_mdt_safi_ipv4_addr, tvb,
+ offset, ip_length, ENC_BIG_ENDIAN);
+ offset += ip_length;
+
+ proto_tree_add_item(tree, hf_bgp_mdt_safi_group_addr, tvb,
+ offset, ip_length, ENC_BIG_ENDIAN);
+ offset += ip_length;
+
+ return offset - orig_offset;
+}
+
+/*
* Decode an MPLS label stack
* XXX - We should change *buf to **buf, use ep_alloc() and drop the buflen
* argument.
@@ -1183,6 +1448,11 @@ decode_prefix_MP(proto_tree *tree, int hf_addr4, int hf_addr6,
if (total_length < 0)
return -1;
break;
+ case SAFNUM_MDT:
+ total_length = decode_mdt_safi(tree, tvb, offset);
+ if (total_length < 0)
+ return -1;
+ break;
case SAFNUM_ROUTE_TARGET:
plen = tvb_get_guint8(tvb, offset);
@@ -2096,6 +2366,9 @@ dissect_bgp_update(tvbuff_t *tvb, proto_tree *tree)
guint8 encaps_tunnel_subtype; /* Encapsulation Tunnel Sub-TLV Type */
guint8 encaps_tunnel_sublen; /* Encapsulation TLV Sub-TLV Length */
+ if (!tree)
+ return;
+
hlen = tvb_get_ntohs(tvb, BGP_MARKER_SIZE);
o = BGP_HEADER_SIZE;
junk_emstr = ep_strbuf_new_label(NULL);
@@ -3332,6 +3605,9 @@ example 2
18 le = 24
10 07 02 prefix = 7.2.0.0/16
*/
+ if (!tree)
+ return;
+
hlen = tvb_get_ntohs(tvb, BGP_MARKER_SIZE);
p = BGP_HEADER_SIZE;
/* AFI */
@@ -3439,12 +3715,11 @@ static void
dissect_bgp_pdu(tvbuff_t *volatile tvb, packet_info *pinfo, proto_tree *tree,
gboolean first)
{
- guint16 bgp_len; /* Message length */
- guint8 bgp_type; /* Message type */
- const char *typ; /* Message type (string) */
- proto_item *ti; /* tree item */
- proto_item *ti_len; /* length item */
- proto_tree *bgp_tree; /* BGP packet tree */
+ guint16 bgp_len; /* Message length */
+ guint8 bgp_type; /* Message type */
+ const char *typ; /* Message type (string) */
+ proto_item *ti_len = NULL; /* length item */
+ proto_tree *bgp_tree = NULL; /* BGP packet tree */
bgp_len = tvb_get_ntohs(tvb, BGP_MARKER_SIZE);
bgp_type = tvb_get_guint8(tvb, BGP_MARKER_SIZE + 2);
@@ -3456,6 +3731,7 @@ dissect_bgp_pdu(tvbuff_t *volatile tvb, packet_info *pinfo, proto_tree *tree,
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s", typ);
if (tree) {
+ proto_item *ti;
ti = proto_tree_add_item(tree, proto_bgp, tvb, 0, -1, ENC_NA);
proto_item_append_text(ti, " - %s", typ);
@@ -3488,36 +3764,37 @@ dissect_bgp_pdu(tvbuff_t *volatile tvb, packet_info *pinfo, proto_tree *tree,
proto_tree_add_item(bgp_tree, hf_bgp_marker, tvb, 0, 16, ENC_NA);
ti_len = proto_tree_add_item(bgp_tree, hf_bgp_length, tvb, 16, 2, ENC_BIG_ENDIAN);
- if (bgp_len < BGP_HEADER_SIZE || bgp_len > BGP_MAX_PACKET_SIZE) {
- expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Length is invalid %u", bgp_len);
- return;
- }
+ }
- proto_tree_add_item(bgp_tree, hf_bgp_type, tvb, 16 + 2, 1, ENC_BIG_ENDIAN);
+ if (bgp_len < BGP_HEADER_SIZE || bgp_len > BGP_MAX_PACKET_SIZE) {
+ expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Length is invalid %u", bgp_len);
+ return;
+ }
- switch (bgp_type) {
- case BGP_OPEN:
- dissect_bgp_open(tvb, bgp_tree, pinfo);
- break;
- case BGP_UPDATE:
- dissect_bgp_update(tvb, bgp_tree);
- break;
- case BGP_NOTIFICATION:
- dissect_bgp_notification(tvb, bgp_tree, pinfo);
- break;
- case BGP_KEEPALIVE:
- /* no data in KEEPALIVE messages */
- break;
- case BGP_ROUTE_REFRESH_CISCO:
- case BGP_ROUTE_REFRESH:
- dissect_bgp_route_refresh(tvb, bgp_tree);
- break;
- case BGP_CAPABILITY:
- dissect_bgp_capability(tvb, bgp_tree, pinfo);
- break;
- default:
- break;
- }
+ proto_tree_add_item(bgp_tree, hf_bgp_type, tvb, 16 + 2, 1, ENC_BIG_ENDIAN);
+
+ switch (bgp_type) {
+ case BGP_OPEN:
+ dissect_bgp_open(tvb, bgp_tree, pinfo);
+ break;
+ case BGP_UPDATE:
+ dissect_bgp_update(tvb, bgp_tree);
+ break;
+ case BGP_NOTIFICATION:
+ dissect_bgp_notification(tvb, bgp_tree, pinfo);
+ break;
+ case BGP_KEEPALIVE:
+ /* no data in KEEPALIVE messages */
+ break;
+ case BGP_ROUTE_REFRESH_CISCO:
+ case BGP_ROUTE_REFRESH:
+ dissect_bgp_route_refresh(tvb, bgp_tree);
+ break;
+ case BGP_CAPABILITY:
+ dissect_bgp_capability(tvb, bgp_tree, pinfo);
+ break;
+ default:
+ break;
}
}
@@ -3791,7 +4068,7 @@ proto_register_bgp(void)
NULL, 0x0, NULL, HFILL }},
{ &hf_bgp_notify_minor_state_machine,
{ "Minor error Code (State Machine)", "bgp.notify.minor_error", FT_UINT8, BASE_DEC,
- NULL, 0x0, NULL, HFILL }},
+ VALS(bgpnotify_minor_state_machine), 0x0, NULL, HFILL }},
{ &hf_bgp_notify_minor_cease,
{ "Minor error Code (Cease)", "bgp.notify.minor_error", FT_UINT8, BASE_DEC,
VALS(bgpnotify_minor_cease), 0x0, NULL, HFILL }},
@@ -4016,6 +4293,15 @@ proto_register_bgp(void)
{ &hf_bgp_encaps_tunnel_subtlv_type,
{ "Type code", "bgp.encaps_tunnel_subtlv_type", FT_UINT8, BASE_DEC,
VALS(subtlv_type), 0x0, NULL, HFILL}},
+ { &hf_bgp_mdt_safi_rd,
+ { "Route Distinguisher", "bgp.mdt_safi_rd", FT_BYTES,
+ BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ { &hf_bgp_mdt_safi_ipv4_addr,
+ { "IPv4 Address", "bgp.mdt_safi_ipv4_addr", FT_IPv4,
+ BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ { &hf_bgp_mdt_safi_group_addr,
+ { "Group Address", "bgp.mdt_safi_group_addr", FT_IPv4,
+ BASE_NONE, NULL, 0x0, NULL, HFILL}},
};
static gint *ett[] = {
diff --git a/epan/dissectors/packet-bgp.h b/epan/dissectors/packet-bgp.h
deleted file mode 100644
index 586c21113c..0000000000
--- a/epan/dissectors/packet-bgp.h
+++ /dev/null
@@ -1,257 +0,0 @@
-/* packet-bgp.c
- * Definitions for BGP packet disassembly structures and routine
- *
- * $Id$
- *
- * Wireshark - Network traffic analyzer
- * By Gerald Combs <gerald@wireshark.org>
- * Copyright 1998 Gerald Combs
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef __PACKET_BGP_H__
-#define __PACKET_BGP_H__
-
-/* some handy things to know */
-#define BGP_MAX_PACKET_SIZE 4096
-#define BGP_MARKER_SIZE 16 /* size of BGP marker */
-#define BGP_HEADER_SIZE 19 /* size of BGP header, including marker */
-#define BGP_MIN_OPEN_MSG_SIZE 29
-#define BGP_MIN_UPDATE_MSG_SIZE 23
-#define BGP_MIN_NOTIFICATION_MSG_SIZE 21
-#define BGP_MIN_KEEPALVE_MSG_SIZE BGP_HEADER_SIZE
-#define BGP_TCP_PORT 179
-#define BGP_ROUTE_DISTINGUISHER_SIZE 8
-
-/* BGP message types */
-#define BGP_OPEN 1
-#define BGP_UPDATE 2
-#define BGP_NOTIFICATION 3
-#define BGP_KEEPALIVE 4
-#define BGP_ROUTE_REFRESH 5
-#define BGP_CAPABILITY 6
-#define BGP_ROUTE_REFRESH_CISCO 0x80
-
-;
-
-/* BGP ROUTE-REFRESH message */
-struct bgp_route_refresh {
- guint8 bgpr_marker[BGP_MARKER_SIZE];
- guint16 bgpr_len;
- guint8 bgpr_type;
- guint16 bgpr_afi;
- guint8 bgpr_reserved;
- guint8 bgpr_safi;
-};
-
-/* path attribute */
-struct bgp_attr {
- guint8 bgpa_flags;
- guint8 bgpa_type;
-};
-
-/* attribute flags, from RFC1771 */
-#define BGP_ATTR_FLAG_OPTIONAL 0x80
-#define BGP_ATTR_FLAG_TRANSITIVE 0x40
-#define BGP_ATTR_FLAG_PARTIAL 0x20
-#define BGP_ATTR_FLAG_EXTENDED_LENGTH 0x10
-
-/* SSA flags */
-#define BGP_SSA_TRANSITIVE 0x8000
-#define BGP_SSA_TYPE 0x7FFF
-
-/* SSA Types */
-#define BGP_SSA_L2TPv3 1
-#define BGP_SSA_mGRE 2
-#define BGP_SSA_IPSec 3
-#define BGP_SSA_MPLS 4
-#define BGP_SSA_L2TPv3_IN_IPSec 5
-#define BGP_SSA_mGRE_IN_IPSec 6
-
-/* AS_PATH segment types */
-#define AS_SET 1 /* RFC1771 */
-#define AS_SEQUENCE 2 /* RFC1771 */
-#define AS_CONFED_SET 4 /* RFC1965 has the wrong values, corrected in */
-#define AS_CONFED_SEQUENCE 3 /* draft-ietf-idr-bgp-confed-rfc1965bis-01.txt */
-
-/* OPEN message Optional Parameter types */
-#define BGP_OPTION_AUTHENTICATION 1 /* RFC1771 */
-#define BGP_OPTION_CAPABILITY 2 /* RFC2842 */
-
-/* BGP capability code */
-#define BGP_CAPABILITY_RESERVED 0 /* RFC2434 */
-#define BGP_CAPABILITY_MULTIPROTOCOL 1 /* RFC2858 */
-#define BGP_CAPABILITY_ROUTE_REFRESH 2 /* RFC2918 */
-#define BGP_CAPABILITY_COOPERATIVE_ROUTE_FILTERING 3 /* draft-ietf-idr-route-filter-04.txt */
-#define BGP_CAPABILITY_GRACEFUL_RESTART 0x40 /* draft-ietf-idr-restart-05 */
-#define BGP_CAPABILITY_4_OCTET_AS_NUMBER 0x41 /* draft-ietf-idr-as4bytes-06 */
-#define BGP_CAPABILITY_DYNAMIC_CAPABILITY 0x42 /* draft-ietf-idr-dynamic-cap-03 */
-#define BGP_CAPABILITY_ADDITIONAL_PATHS 0x45 /* draft-ietf-idr-add-paths */
-#define BGP_CAPABILITY_ORF_CISCO 0x82 /* Cisco */
-#define BGP_CAPABILITY_ROUTE_REFRESH_CISCO 0x80 /* Cisco */
-
-#define BGP_ORF_PREFIX_CISCO 0x80 /* Cisco */
-#define BGP_ORF_COMM_CISCO 0x81 /* Cisco */
-#define BGP_ORF_EXTCOMM_CISCO 0x82 /* Cisco */
-#define BGP_ORF_ASPATH_CISCO 0x83 /* Cisco */
-
-#define BGP_ORF_COMM 0x02 /* draft-ietf-idr-route-filter-06.txt */
-#define BGP_ORF_EXTCOMM 0x03 /* draft-ietf-idr-route-filter-06.txt */
-#define BGP_ORF_ASPATH 0x04 /* draft-ietf-idr-aspath-orf-02.txt */
-/* draft-ietf-idr-route-filter-06.txt */
-#define BGP_ORF_ACTION 0xc0
-#define BGP_ORF_ADD 0x00
-#define BGP_ORF_REMOVE 0x40
-#define BGP_ORF_REMOVEALL 0x80
-#define BGP_ORF_MATCH 0x20
-#define BGP_ORF_PERMIT 0x00
-#define BGP_ORF_DENY 0x20
-
-/* well-known communities, from RFC1997 */
-#define BGP_COMM_NO_EXPORT 0xFFFFFF01
-#define BGP_COMM_NO_ADVERTISE 0xFFFFFF02
-#define BGP_COMM_NO_EXPORT_SUBCONFED 0xFFFFFF03
-#define FOURHEX0 0x00000000
-#define FOURHEXF 0xFFFF0000
-
-/* attribute types */
-#define BGPTYPE_ORIGIN 1 /* RFC1771 */
-#define BGPTYPE_AS_PATH 2 /* RFC1771 */
-#define BGPTYPE_NEXT_HOP 3 /* RFC1771 */
-#define BGPTYPE_MULTI_EXIT_DISC 4 /* RFC1771 */
-#define BGPTYPE_LOCAL_PREF 5 /* RFC1771 */
-#define BGPTYPE_ATOMIC_AGGREGATE 6 /* RFC1771 */
-#define BGPTYPE_AGGREGATOR 7 /* RFC1771 */
-#define BGPTYPE_COMMUNITIES 8 /* RFC1997 */
-#define BGPTYPE_ORIGINATOR_ID 9 /* RFC2796 */
-#define BGPTYPE_CLUSTER_LIST 10 /* RFC2796 */
-#define BGPTYPE_DPA 11 /* work in progress */
-#define BGPTYPE_ADVERTISER 12 /* RFC1863 */
-#define BGPTYPE_RCID_PATH 13 /* RFC1863 */
-#define BGPTYPE_MP_REACH_NLRI 14 /* RFC2858 */
-#define BGPTYPE_MP_UNREACH_NLRI 15 /* RFC2858 */
-#define BGPTYPE_EXTENDED_COMMUNITY 16 /* Draft Ramachandra */
-#define BGPTYPE_NEW_AS_PATH 17 /* draft-ietf-idr-as4bytes */
-#define BGPTYPE_NEW_AGGREGATOR 18 /* draft-ietf-idr-as4bytes */
-#define BGPTYPE_SAFI_SPECIFIC_ATTR 19 /* draft-kapoor-nalawade-idr-bgp-ssa-00.txt */
-#define BGPTYPE_TUNNEL_ENCAPS_ATTR 23 /* RFC5512 */
-
-/* Extended community type */
-/* according to IANA's number assignment at: http://www.iana.org/assignments/bgp-extended-communities */
-#define BGP_EXT_COM_QOS_MARK_T 0x04 /* QoS Marking transitive attribute of regular type (8bit) */
-#define BGP_EXT_COM_QOS_MARK_NT 0x44 /* QoS Marking non-transitive attribute of regular type (8bit) */
- /* Format Type(1byte):Flags(1byte):QoS Set(1byte):Tec. Type(1byte): */
- /* Marking O(2bytes):Marking A(1byte):Proc.Cnt(1byte) */
-#define BGP_EXT_COM_COS_CAP_T 0x05 /* CoS Capability - Format Type(1byte):Flags(1byte):remaining '0..0' */
-
- /* draft-ietf-idr-bgp-ext-communities */
-#define BGP_EXT_COM_RT_0 0x0002 /* Route Target,Format AS(2bytes):AN(4bytes) */
-#define BGP_EXT_COM_RT_1 0x0102 /* Route Target,Format IP address:AN(2bytes) */
-#define BGP_EXT_COM_RT_2 0x0202 /* Route Target,Format AS(2bytes):AN(4bytes) */
-#define BGP_EXT_COM_RO_0 0x0003 /* Route Origin,Format AS(2bytes):AN(4bytes) */
-#define BGP_EXT_COM_RO_1 0x0103 /* Route Origin,Format IP address:AN(2bytes) */
-#define BGP_EXT_COM_RO_2 0x0203 /* Route Origin,Format AS(2bytes):AN(4bytes) */
-#define BGP_EXT_COM_LINKBAND ((BGP_ATTR_FLAG_TRANSITIVE << 8) | 0x0004)
- /* Link Bandwidth,Format AS(2bytes):
- * Bandwidth(4bytes) */
- /* -2 version of the draft */
-#define BGP_EXT_COM_VPN_ORIGIN 0x0005 /* OSPF Domin ID / VPN of Origin */
- /* draft-rosen-vpns-ospf-bgp-mpls */
-#define BGP_EXT_COM_OSPF_RTYPE 0x8000 /* OSPF Route Type,Format Area(4B):RouteType(1B):Options(1B) */
-#define BGP_EXT_COM_OSPF_RID 0x8001 /* OSPF Router ID,Format RouterID(4B):Unused(2B) */
-#define BGP_EXT_COM_L2INFO 0x800a /* draft-kompella-ppvpn-l2vpn */
-
-/* Extended community QoS Marking technology type */
-#define QOS_TECH_TYPE_DSCP 0x00 /* DiffServ enabled IP (DSCP encoding) */
-#define QOS_TECH_TYPE_802_1q 0x01 /* Ethernet using 802.1q priority tag */
-#define QOS_TECH_TYPE_E_LSP 0x02 /* MPLS using E-LSP */
-#define QOS_TECH_TYPE_VC 0x03 /* Virtual Channel (VC) encoding using separate channels for */
- /* QoS forwarding / one channel per class (e.g. ATM VCs, FR */
- /* VCs, MPLS L-LSPs) */
-#define QOS_TECH_TYPE_GMPLS_TIME 0x04 /* GMPLS - time slot encoding */
-#define QOS_TECH_TYPE_GMPLS_LAMBDA 0x05 /* GMPLS - lambda encoding */
-#define QOS_TECH_TYPE_GMPLS_FIBRE 0x06 /* GMPLS - fibre encoding */
-
-/* OSPF codes for BGP_EXT_COM_OSPF_RTYPE draft-rosen-vpns-ospf-bgp-mpls */
-#define BGP_OSPF_RTYPE_RTR 1 /* OSPF Router LSA */
-#define BGP_OSPF_RTYPE_NET 2 /* OSPF Network LSA */
-#define BGP_OSPF_RTYPE_SUM 3 /* OSPF Summary LSA */
-#define BGP_OSPF_RTYPE_EXT 5 /* OSPF External LSA, note that ASBR doesn't apply to MPLS-VPN */
-#define BGP_OSPF_RTYPE_NSSA 7 /* OSPF NSSA External*/
-#define BGP_OSPF_RTYPE_SHAM 129 /* OSPF-MPLS-VPN Sham link */
-#define BGP_OSPF_RTYPE_METRIC_TYPE 0x1 /* LSB of RTYPE Options Field */
-
-/* Extended community & Route dinstinguisher formats */
-#define FORMAT_AS2_LOC 0x00 /* Format AS(2bytes):AN(4bytes) */
-#define FORMAT_IP_LOC 0x01 /* Format IP address:AN(2bytes) */
-#define FORMAT_AS4_LOC 0x02 /* Format AS(4bytes):AN(2bytes) */
-
-/* RFC 2858 subsequent address family numbers */
-#define SAFNUM_UNICAST 1
-#define SAFNUM_MULCAST 2
-#define SAFNUM_UNIMULC 3
-#define SAFNUM_MPLS_LABEL 4 /* rfc3107 */
-#define SAFNUM_MCAST_VPN 5 /* draft-ietf-l3vpn-2547bis-mcast-bgp-08.txt */
-#define SAFNUM_ENCAPSULATION 7 /* rfc5512 */
-#define SAFNUM_TUNNEL 64 /* draft-nalawade-kapoor-tunnel-safi-02.txt */
-#define SAFNUM_VPLS 65
-#define SAFNUM_LAB_VPNUNICAST 128 /* Draft-rosen-rfc2547bis-03 */
-#define SAFNUM_LAB_VPNMULCAST 129
-#define SAFNUM_LAB_VPNUNIMULC 130
-#define SAFNUM_ROUTE_TARGET 132 /* RFC 4684 Constrained Route Distribution for BGP/MPLS IP VPN */
-
-/* BGP Additional Paths Capability */
-#define BGP_ADDPATH_RECEIVE 0x01
-#define BGP_ADDPATH_SEND 0x02
-
-/* mcast-vpn route types draft-ietf-l3vpn-2547bis-mcast-bgp-08.txt */
-#define MCAST_VPN_RTYPE_INTRA_AS_IPMSI_AD 1
-#define MCAST_VPN_RTYPE_INTER_AS_IPMSI_AD 2
-#define MCAST_VPN_RTYPE_SPMSI_AD 3
-#define MCAST_VPN_RTYPE_LEAF_AD 4
-#define MCAST_VPN_RTYPE_SOURCE_ACTIVE_AD 5
-#define MCAST_VPN_RTYPE_SHARED_TREE_JOIN 6
-#define MCAST_VPN_RTYPE_SOURCE_TREE_JOIN 7
-
-/* RFC 5512 Tunnel Types */
-#define TUNNEL_TYPE_L2TP_OVER_IP 1
-#define TUNNEL_TYPE_GRE 2
-#define TUNNEL_TYPE_IP_IN_IP 7
-
-/* RFC 5512/5640 Sub-TLV Types */
-#define TUNNEL_SUBTLV_ENCAPSULATION 1
-#define TUNNEL_SUBTLV_PROTO_TYPE 2
-#define TUNNEL_SUBTLV_COLOR 4
-#define TUNNEL_SUBTLV_LOAD_BALANCE 5
-
-#ifndef offsetof
-#define offsetof(type, member) ((size_t)(&((type *)0)->member))
-#endif
-
-#endif
-
-/*
-* Editor modelines - http://www.wireshark.org/tools/modelines.html
-*
-* Local variables:
-* c-basic-offset: 4
-* tab-width: 8
-* indent-tabs-mode: nil
-* End:
-*
-* ex: set shiftwidth=4 tabstop=8 expandtab:
-* :indentSize=4:tabSize=8:noTabs=true:
-*/
diff --git a/epan/dissectors/packet-bittorrent.c b/epan/dissectors/packet-bittorrent.c
index 02d15ab725..08a695370e 100644
--- a/epan/dissectors/packet-bittorrent.c
+++ b/epan/dissectors/packet-bittorrent.c
@@ -45,19 +45,19 @@
* http://bitconjurer.org/BitTorrent/protocol.html
*/
-#define BITTORRENT_MESSAGE_CHOKE 0
-#define BITTORRENT_MESSAGE_UNCHOKE 1
-#define BITTORRENT_MESSAGE_INTERESTED 2
-#define BITTORRENT_MESSAGE_NOT_INTERESTED 3
-#define BITTORRENT_MESSAGE_HAVE 4
-#define BITTORRENT_MESSAGE_BITFIELD 5
-#define BITTORRENT_MESSAGE_REQUEST 6
-#define BITTORRENT_MESSAGE_PIECE 7
-#define BITTORRENT_MESSAGE_CANCEL 8
-#define BITTORRENT_MESSAGE_PORT 9
-#define BITTORRENT_MESSAGE_EXTENDED 20
-
-#define BITTORRENT_HEADER_LENGTH 4
+#define BITTORRENT_MESSAGE_CHOKE 0
+#define BITTORRENT_MESSAGE_UNCHOKE 1
+#define BITTORRENT_MESSAGE_INTERESTED 2
+#define BITTORRENT_MESSAGE_NOT_INTERESTED 3
+#define BITTORRENT_MESSAGE_HAVE 4
+#define BITTORRENT_MESSAGE_BITFIELD 5
+#define BITTORRENT_MESSAGE_REQUEST 6
+#define BITTORRENT_MESSAGE_PIECE 7
+#define BITTORRENT_MESSAGE_CANCEL 8
+#define BITTORRENT_MESSAGE_PORT 9
+#define BITTORRENT_MESSAGE_EXTENDED 20
+
+#define BITTORRENT_HEADER_LENGTH 4
/*
* Azureus messages are specified by name so these are made up numbers
@@ -74,23 +74,23 @@
static const value_string bittorrent_messages[] = {
- { BITTORRENT_MESSAGE_CHOKE, "Choke" },
- { BITTORRENT_MESSAGE_UNCHOKE, "Unchoke" },
- { BITTORRENT_MESSAGE_INTERESTED, "Interested" },
+ { BITTORRENT_MESSAGE_CHOKE, "Choke" },
+ { BITTORRENT_MESSAGE_UNCHOKE, "Unchoke" },
+ { BITTORRENT_MESSAGE_INTERESTED, "Interested" },
{ BITTORRENT_MESSAGE_NOT_INTERESTED, "Not Interested" },
- { BITTORRENT_MESSAGE_HAVE, "Have" },
- { BITTORRENT_MESSAGE_BITFIELD, "Bitfield" },
- { BITTORRENT_MESSAGE_REQUEST, "Request" },
- { BITTORRENT_MESSAGE_PIECE, "Piece" },
- { BITTORRENT_MESSAGE_CANCEL, "Cancel" },
- { BITTORRENT_MESSAGE_PORT, "Port" },
- { BITTORRENT_MESSAGE_EXTENDED, "Extended" },
- { AZUREUS_MESSAGE_KEEP_ALIVE, "Keepalive" },
- { AZUREUS_MESSAGE_HANDSHAKE, "Azureus Handshake" },
- { AZUREUS_MESSAGE_BT_HANDSHAKE, "Azureus BitTorrent Handshake" },
- { AZUREUS_MESSAGE_PEER_EXCHANGE, "Azureus Peer Exchange" },
- { AZUREUS_MESSAGE_JPC_HELLO, "Azureus PeerCache Hello" },
- { AZUREUS_MESSAGE_JPC_REPLY, "Azureus PeerCache Reply" },
+ { BITTORRENT_MESSAGE_HAVE, "Have" },
+ { BITTORRENT_MESSAGE_BITFIELD, "Bitfield" },
+ { BITTORRENT_MESSAGE_REQUEST, "Request" },
+ { BITTORRENT_MESSAGE_PIECE, "Piece" },
+ { BITTORRENT_MESSAGE_CANCEL, "Cancel" },
+ { BITTORRENT_MESSAGE_PORT, "Port" },
+ { BITTORRENT_MESSAGE_EXTENDED, "Extended" },
+ { AZUREUS_MESSAGE_KEEP_ALIVE, "Keepalive" },
+ { AZUREUS_MESSAGE_HANDSHAKE, "Azureus Handshake" },
+ { AZUREUS_MESSAGE_BT_HANDSHAKE, "Azureus BitTorrent Handshake" },
+ { AZUREUS_MESSAGE_PEER_EXCHANGE, "Azureus Peer Exchange" },
+ { AZUREUS_MESSAGE_JPC_HELLO, "Azureus PeerCache Hello" },
+ { AZUREUS_MESSAGE_JPC_REPLY, "Azureus PeerCache Reply" },
{ 0, NULL }
};
@@ -104,27 +104,27 @@ static const value_string azureus_priorities[] = {
struct amp_message {
const char *name;
- guint32 value;
+ guint32 value;
};
static const struct amp_message amp_messages[] = {
- { "BT_KEEP_ALIVE", AZUREUS_MESSAGE_KEEP_ALIVE },
- { "BT_CHOKE", BITTORRENT_MESSAGE_CHOKE },
- { "BT_UNCHOKE", BITTORRENT_MESSAGE_UNCHOKE },
- { "BT_INTERESTED", BITTORRENT_MESSAGE_INTERESTED },
- { "BT_UNINTERESTED", BITTORRENT_MESSAGE_NOT_INTERESTED },
- { "BT_HAVE", BITTORRENT_MESSAGE_HAVE },
- { "BT_BITFIELD", BITTORRENT_MESSAGE_BITFIELD },
- { "BT_REQUEST", BITTORRENT_MESSAGE_REQUEST },
- { "BT_PIECE", BITTORRENT_MESSAGE_PIECE },
- { "BT_CANCEL", BITTORRENT_MESSAGE_CANCEL },
- { "BT_PORT", BITTORRENT_MESSAGE_PORT },
- { "BT_EXTENDED", BITTORRENT_MESSAGE_EXTENDED },
- { "AZ_HANDSHAKE", AZUREUS_MESSAGE_HANDSHAKE },
- { "BT_HANDSHAKE", AZUREUS_MESSAGE_BT_HANDSHAKE },
+ { "BT_KEEP_ALIVE", AZUREUS_MESSAGE_KEEP_ALIVE },
+ { "BT_CHOKE", BITTORRENT_MESSAGE_CHOKE },
+ { "BT_UNCHOKE", BITTORRENT_MESSAGE_UNCHOKE },
+ { "BT_INTERESTED", BITTORRENT_MESSAGE_INTERESTED },
+ { "BT_UNINTERESTED", BITTORRENT_MESSAGE_NOT_INTERESTED },
+ { "BT_HAVE", BITTORRENT_MESSAGE_HAVE },
+ { "BT_BITFIELD", BITTORRENT_MESSAGE_BITFIELD },
+ { "BT_REQUEST", BITTORRENT_MESSAGE_REQUEST },
+ { "BT_PIECE", BITTORRENT_MESSAGE_PIECE },
+ { "BT_CANCEL", BITTORRENT_MESSAGE_CANCEL },
+ { "BT_PORT", BITTORRENT_MESSAGE_PORT },
+ { "BT_EXTENDED", BITTORRENT_MESSAGE_EXTENDED },
+ { "AZ_HANDSHAKE", AZUREUS_MESSAGE_HANDSHAKE },
+ { "BT_HANDSHAKE", AZUREUS_MESSAGE_BT_HANDSHAKE },
{ "AZ_PEER_EXCHANGE", AZUREUS_MESSAGE_PEER_EXCHANGE },
- { "JPC_HELLO", AZUREUS_MESSAGE_JPC_HELLO },
- { "JPC_REPLY", AZUREUS_MESSAGE_JPC_REPLY },
+ { "JPC_HELLO", AZUREUS_MESSAGE_JPC_HELLO },
+ { "JPC_REPLY", AZUREUS_MESSAGE_JPC_REPLY },
{ NULL, 0 }
};
@@ -162,20 +162,20 @@ static gint hf_azureus_jpc_session = -1;
static gint hf_bittorrent_port = -1;
static gint hf_bittorrent_extended = -1;
-static gint ett_bittorrent = -1;
-static gint ett_bittorrent_msg = -1;
-static gint ett_peer_id = -1;
-static gint ett_bittorrent_bdict = -1;
-static gint ett_bittorrent_bdict_entry = -1;
-static gint ett_bittorrent_blist = -1;
+static gint ett_bittorrent = -1;
+static gint ett_bittorrent_msg = -1;
+static gint ett_peer_id = -1;
+static gint ett_bittorrent_bdict = -1;
+static gint ett_bittorrent_bdict_entry = -1;
+static gint ett_bittorrent_blist = -1;
-static gboolean bittorrent_desegment = TRUE;
+static gboolean bittorrent_desegment = TRUE;
static gboolean decode_client_information = FALSE;
struct client_information {
- char id[5]; /* string length must be <= 4 to allow space for NUL termination byte */
- char ver_len;
- const char *name; /* NULL means array entry terminates the array */
+ char id[5]; /* string length must be <= 4 to allow space for NUL termination byte */
+ char ver_len;
+ const char *name; /* NULL means array entry terminates the array */
};
static struct client_information peer_id[] = {
@@ -265,19 +265,20 @@ static struct client_information peer_id[] = {
{"", 0, NULL}
};
-static guint get_bittorrent_pdu_length(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
+static guint
+get_bittorrent_pdu_length(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
{
- guint8 type;
+ guint8 type;
guint32 length;
if (tvb_get_guint8(tvb, offset) == 19 &&
tvb_memeql(tvb, offset + 1, "BitTorrent protocol", 19) == 0) {
/* Return the length of a Handshake message */
- return 1 + /* pstrlen */
- 19 + /* pstr */
- 8 + /* reserved */
- 20 + /* SHA1 hash of the info key */
- 20; /* peer id */
+ return 1 + /* pstrlen */
+ 19 + /* pstr */
+ 8 + /* reserved */
+ 20 + /* SHA1 hash of the info key */
+ 20; /* peer id */
} else {
/* Try to validate the length of the message indicated by the header. */
length = tvb_get_ntohl(tvb, offset);
@@ -312,13 +313,14 @@ static guint get_bittorrent_pdu_length(packet_info *pinfo _U_, tvbuff_t *tvb, in
}
}
-static int dissect_bencoding_str(tvbuff_t *tvb, packet_info *pinfo _U_,
+static int
+dissect_bencoding_str(tvbuff_t *tvb, packet_info *pinfo _U_,
int offset, int length, proto_tree *tree, proto_item *ti, int treeadd)
{
guint8 ch;
- int stringlen = 0, nextstringlen;
- int used;
- int izero = 0;
+ int stringlen = 0, nextstringlen;
+ int used;
+ int izero = 0;
if (length<2) {
if (tree) {
@@ -379,8 +381,9 @@ static int dissect_bencoding_str(tvbuff_t *tvb, packet_info *pinfo _U_,
return -1;
}
-static int dissect_bencoding_int(tvbuff_t *tvb, packet_info *pinfo _U_,
- int offset, int length, proto_tree *tree, proto_item *ti, int treeadd)
+static int
+dissect_bencoding_int(tvbuff_t *tvb, packet_info *pinfo _U_,
+ int offset, int length, proto_tree *tree, proto_item *ti, int treeadd)
{
gint32 ival=0;
int neg = 0;
@@ -446,12 +449,13 @@ static int dissect_bencoding_int(tvbuff_t *tvb, packet_info *pinfo _U_,
return -1;
}
-static int dissect_bencoding_rec(tvbuff_t *tvb, packet_info *pinfo _U_,
- int offset, int length, proto_tree *tree, int level, proto_item *treei, int treeadd)
+static int
+dissect_bencoding_rec(tvbuff_t *tvb, packet_info *pinfo _U_,
+ int offset, int length, proto_tree *tree, int level, proto_item *treei, int treeadd)
{
guint8 op;
- int oplen = 0, op1len, op2len;
- int used;
+ int oplen = 0, op1len, op2len;
+ int used;
proto_item *ti = NULL, *td = NULL;
proto_tree *itree = NULL, *dtree = NULL;
@@ -565,26 +569,28 @@ static int dissect_bencoding_rec(tvbuff_t *tvb, packet_info *pinfo _U_,
return -1;
}
-static void dissect_bencoding(tvbuff_t *tvb, packet_info *pinfo _U_,
+static void
+dissect_bencoding(tvbuff_t *tvb, packet_info *pinfo _U_,
int offset, int length, proto_tree *tree)
{
- dissect_bencoding_rec(tvb, pinfo, offset, length, tree, 0, NULL, 0);
+ dissect_bencoding_rec(tvb, pinfo, offset, length, tree, 0, NULL, 0);
}
-static void dissect_bittorrent_message (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static void
+dissect_bittorrent_message (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- int offset = 0;
- int i;
- int isamp = 0;
+ int offset = 0;
+ int i;
+ int isamp = 0;
proto_tree *mtree;
- guint16 type = 0;
- guint32 typelen = 0;
- guint8 prio = 0;
- guint32 length;
+ guint16 type = 0;
+ guint32 typelen = 0;
+ guint8 prio = 0;
+ guint32 length;
const char *msgtype = NULL;
proto_item *ti;
- guint32 piece_index, piece_begin, piece_length;
- guint32 stringlen;
+ guint32 piece_index, piece_begin, piece_length;
+ guint32 stringlen;
if (tvb_bytes_exist(tvb, offset + BITTORRENT_HEADER_LENGTH, 1)) {
/* Check for data from the middle of a message. */
@@ -688,9 +694,9 @@ static void dissect_bittorrent_message (tvbuff_t *tvb, packet_info *pinfo, proto
proto_tree_add_uint(mtree, hf_bittorrent_piece_length, tvb, offset, 4, piece_length);
proto_item_append_text(ti, ", Piece (Idx:0x%x,Begin:0x%x,Len:0x%x)", piece_index, piece_begin, piece_length);
- col_append_fstr(pinfo->cinfo, COL_INFO, ", Piece (Idx:0x%x,Begin:0x%x,Len:0x%x)", piece_index, piece_begin, piece_length);
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", Piece (Idx:0x%x,Begin:0x%x,Len:0x%x)", piece_index, piece_begin, piece_length);
- break;
+ break;
case BITTORRENT_MESSAGE_PORT:
/* port as payload */
@@ -707,16 +713,16 @@ static void dissect_bittorrent_message (tvbuff_t *tvb, packet_info *pinfo, proto
proto_tree_add_item(mtree, hf_bittorrent_piece_index, tvb, offset, 4, ENC_BIG_ENDIAN);
proto_item_append_text(ti, ", Piece (Idx:0x%x)", piece_index);
- col_append_fstr(pinfo->cinfo, COL_INFO, ", Piece (Idx:0x%x)", piece_index);
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", Piece (Idx:0x%x)", piece_index);
- break;
+ break;
case BITTORRENT_MESSAGE_BITFIELD:
proto_tree_add_item(mtree, hf_bittorrent_bitfield_data, tvb, offset, length, ENC_NA);
proto_item_append_text(ti, ", Len:0x%x", length);
col_append_fstr(pinfo->cinfo, COL_INFO, ", Len:0x%x", length);
- break;
+ break;
case BITTORRENT_MESSAGE_PIECE:
piece_index = tvb_get_ntohl(tvb, offset);
@@ -731,7 +737,7 @@ static void dissect_bittorrent_message (tvbuff_t *tvb, packet_info *pinfo, proto
proto_item_append_text(ti, ", Idx:0x%x,Begin:0x%x,Len:0x%x", piece_index, piece_begin, length);
col_append_fstr(pinfo->cinfo, COL_INFO, ", Idx:0x%x,Begin:0x%x,Len:0x%x", piece_index, piece_begin, length);
- break;
+ break;
case AZUREUS_MESSAGE_HANDSHAKE:
case AZUREUS_MESSAGE_PEER_EXCHANGE:
@@ -755,10 +761,11 @@ static void dissect_bittorrent_message (tvbuff_t *tvb, packet_info *pinfo, proto
}
}
-static int dissect_bittorrent_welcome (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
+static int
+dissect_bittorrent_welcome (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
{
- int offset = 0;
- int i;
+ int offset = 0;
+ int i;
char *version;
col_set_str(pinfo->cinfo, COL_INFO, "Handshake");
@@ -788,7 +795,8 @@ static int dissect_bittorrent_welcome (tvbuff_t *tvb, packet_info *pinfo _U_, pr
return offset;
}
-static void dissect_bittorrent_tcp_pdu (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static
+void dissect_bittorrent_tcp_pdu (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_item *ti;
@@ -811,14 +819,16 @@ static void dissect_bittorrent_tcp_pdu (tvbuff_t *tvb, packet_info *pinfo, proto
}
-static void dissect_bittorrent (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static
+void dissect_bittorrent (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
tcp_dissect_pdus(tvb, pinfo, tree, bittorrent_desegment, BITTORRENT_HEADER_LENGTH,
get_bittorrent_pdu_length, dissect_bittorrent_tcp_pdu);
}
-static gboolean test_bittorrent_packet (tvbuff_t *tvb, packet_info *pinfo,
- proto_tree *tree)
+static
+gboolean test_bittorrent_packet (tvbuff_t *tvb, packet_info *pinfo,
+ proto_tree *tree)
{
conversation_t *conversation;
@@ -985,10 +995,10 @@ proto_reg_handoff_bittorrent(void)
*
* Local Variables:
* c-basic-offset: 3
- * tab-width: 3
+ * tab-width: 8
* indent-tabs-mode: nil
* End:
*
- * ex: set shiftwidth=3 tabstop=3 expandtab:
- * :indentSize=3:tabSize=3:noTabs=true:
+ * ex: set shiftwidth=3 tabstop=8 expandtab:
+ * :indentSize=3:tabSize=8:noTabs=true:
*/
diff --git a/epan/dissectors/packet-bofl.c b/epan/dissectors/packet-bofl.c
index 40c40c5056..e171f057fa 100644
--- a/epan/dissectors/packet-bofl.c
+++ b/epan/dissectors/packet-bofl.c
@@ -73,27 +73,27 @@ dissect_bofl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
col_clear(pinfo->cinfo, COL_INFO);
if (tree) {
- ti = proto_tree_add_item(tree, proto_bofl, tvb, 0, -1, ENC_NA);
- bofl_tree = proto_item_add_subtree(ti, ett_bofl);
+ ti = proto_tree_add_item(tree, proto_bofl, tvb, 0, -1, ENC_NA);
+ bofl_tree = proto_item_add_subtree(ti, ett_bofl);
}
pdu = tvb_get_ntohl(tvb, 0);
- col_add_fstr(pinfo->cinfo, COL_INFO,
- "PDU: 0x%08x", pdu);
+ col_add_fstr(pinfo->cinfo, COL_INFO,
+ "PDU: 0x%08x", pdu);
if (tree)
- proto_tree_add_uint(bofl_tree, hf_bofl_pdu, tvb, 0, 4, pdu);
+ proto_tree_add_uint(bofl_tree, hf_bofl_pdu, tvb, 0, 4, pdu);
sequence = tvb_get_ntohl(tvb, 4);
- col_append_fstr(pinfo->cinfo, COL_INFO,
- " Sequence: %u", sequence);
+ col_append_fstr(pinfo->cinfo, COL_INFO,
+ " Sequence: %u", sequence);
if (tree) {
- proto_tree_add_uint(bofl_tree, hf_bofl_sequence, tvb, 4, 4, sequence);
+ proto_tree_add_uint(bofl_tree, hf_bofl_sequence, tvb, 4, 4, sequence);
- len = tvb_length_remaining(tvb, 8);
- if (len > 0)
- proto_tree_add_text(bofl_tree, tvb, 8, len,
- "Padding (%d byte)", len);
+ len = tvb_length_remaining(tvb, 8);
+ if (len > 0)
+ proto_tree_add_text(bofl_tree, tvb, 8, len,
+ "Padding (%d byte)", len);
}
}
@@ -102,24 +102,24 @@ void
proto_register_bofl(void)
{
static hf_register_info hf[] = {
- { &hf_bofl_pdu,
- { "PDU", "bofl.pdu",
- FT_UINT32, BASE_HEX, NULL, 0,
- "PDU; normally equals 0x01010000 or 0x01011111", HFILL }
- },
- { &hf_bofl_sequence,
- { "Sequence", "bofl.sequence",
- FT_UINT32, BASE_DEC, NULL, 0,
- "incremental counter", HFILL }
- }
+ { &hf_bofl_pdu,
+ { "PDU", "bofl.pdu",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ "PDU; normally equals 0x01010000 or 0x01011111", HFILL }
+ },
+ { &hf_bofl_sequence,
+ { "Sequence", "bofl.sequence",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "incremental counter", HFILL }
+ }
};
static gint *ett[] = {
- &ett_bofl,
+ &ett_bofl,
};
proto_bofl = proto_register_protocol("Wellfleet Breath of Life",
- "BOFL", "bofl");
+ "BOFL", "bofl");
proto_register_field_array(proto_bofl, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
}
diff --git a/epan/dissectors/packet-bootp.c b/epan/dissectors/packet-bootp.c
index 46fdf1a0fc..165af76851 100644
--- a/epan/dissectors/packet-bootp.c
+++ b/epan/dissectors/packet-bootp.c
@@ -9,7 +9,7 @@
* $Id$
*
* The information used comes from:
- * RFC 951: Bootstrap Protocol
+ * RFC 951: Bootstrap Protocol
* RFC 1497: BOOTP extensions
* RFC 1542: Clarifications and Extensions for the Bootstrap Protocol
* RFC 2131: Dynamic Host Configuration Protocol
@@ -18,6 +18,7 @@
* RFC 2242: NetWare/IP Domain Name and Information
* RFC 2489: Procedure for Defining New DHCP Options
* RFC 2610: DHCP Options for Service Location Protocol
+ * RFC 2685: Virtual Private Networks Identifier
* RFC 3046: DHCP Relay Agent Information Option
* RFC 3118: Authentication for DHCP Messages
* RFC 3203: DHCP reconfigure extension
@@ -67,7 +68,7 @@
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
@@ -130,7 +131,6 @@ static int hf_bootp_hw_ether_addr = -1;
static int hf_bootp_server = -1;
static int hf_bootp_file = -1;
static int hf_bootp_cookie = -1;
-static int hf_bootp_vendor = -1;
static int hf_bootp_dhcp = -1;
static int hf_bootp_fqdn_s = -1;
static int hf_bootp_fqdn_o = -1;
@@ -157,181 +157,180 @@ static int hf_bootp_option_value_ip_address = -1;
static int hf_bootp_option_value_boolean = -1;
static int hf_bootp_suboption_length = -1;
-static int hf_bootp_option_padding = -1; /* 0 */
-static int hf_bootp_option_subnet_mask = -1; /* 1 */
-static int hf_bootp_option_time_offset = -1; /* 2 */
-static int hf_bootp_option_router = -1; /* 3 */
-static int hf_bootp_option_time_server = -1; /* 4 */
-static int hf_bootp_option_name_server = -1; /* 5 */
-static int hf_bootp_option_domain_name_server = -1; /* 6 */
-static int hf_bootp_option_log_server = -1; /* 7 */
-static int hf_bootp_option_quotes_server = -1; /* 8 */
-static int hf_bootp_option_lpr_server = -1; /* 9 */
-static int hf_bootp_option_impress_server = -1; /* 10 */
-static int hf_bootp_option_resource_location_server = -1; /* 11 */
-static int hf_bootp_option_hostname = -1; /* 12 */
-static int hf_bootp_option_boot_file_size = -1; /* 13 */
-static int hf_bootp_option_merit_dump_file = -1; /* 14 */
-static int hf_bootp_option_domain_name = -1; /* 15 */
-static int hf_bootp_option_swap_server = -1; /* 16 */
-static int hf_bootp_option_root_path = -1; /* 17 */
-static int hf_bootp_option_extension_path = -1; /* 18 */
-static int hf_bootp_option_ip_forwarding = -1; /* 19 */
-static int hf_bootp_option_non_local_source_routing = -1; /* 20 */
-static int hf_bootp_option_policy_filter_ip = -1; /* 21 - IP address */
-static int hf_bootp_option_policy_filter_subnet_mask = -1; /* 21 - Subnet mask */
-static int hf_bootp_option_max_datagram_reassembly_size = -1; /* 22 */
-static int hf_bootp_option_default_ip_ttl = -1; /* 23 */
-static int hf_bootp_option_path_mtu_aging_timeout = -1; /* 24 */
-static int hf_bootp_option_path_mtu_plateau_table_item = -1; /* 25 */
-static int hf_bootp_option_interface_mtu = -1; /* 26 */
-static int hf_bootp_option_all_subnets_are_local = -1; /* 27 */
-static int hf_bootp_option_broadcast_address = -1; /* 28 */
-static int hf_bootp_option_perform_mask_discovery = -1; /* 29 */
-static int hf_bootp_option_mask_supplier = -1; /* 30 */
-static int hf_bootp_option_perform_router_discover = -1; /* 31 */
-static int hf_bootp_option_router_solicitation_address = -1; /* 32 */
-static int hf_bootp_option_static_route_ip = -1; /* 33 - Destination IP */
-static int hf_bootp_option_static_route_router = -1; /* 33 - Router */
-static int hf_bootp_option_trailer_encapsulation = -1; /* 34 */
-static int hf_bootp_option_arp_cache_timeout = -1; /* 35 */
-static int hf_bootp_option_ethernet_encapsulation = -1; /* 36 */
-static int hf_bootp_option_tcp_default_ttl = -1; /* 37 */
-static int hf_bootp_option_tcp_keepalive_interval = -1; /* 38 */
-static int hf_bootp_option_tcp_keepalive_garbage = -1; /* 39 */
-static int hf_bootp_option_nis_domain = -1; /* 40 */
-static int hf_bootp_option_nis_server = -1; /* 41 */
-static int hf_bootp_option_ntp_server = -1; /* 42 */
-
-static int hf_bootp_option43_value = -1; /* 43 suboption value */
-static int hf_bootp_option43_value_8 = -1; /* 43 suboption value */
-static int hf_bootp_option43_value_16 = -1; /* 43 suboption value */
-static int hf_bootp_option43_value_32 = -1; /* 43 suboption value */
-static int hf_bootp_option43_value_stringz = -1; /* 43 suboption value */
-static int hf_bootp_option43_value_ip_address = -1; /* 43 suboption value */
-
-static int hf_bootp_option43_pxeclient_suboption = -1; /* 43 suboption */
-static int hf_bootp_option43_pxeclient_padding = -1; /* 43:0 PXE */
-static int hf_bootp_option43_pxeclient_mtftp_ip = -1; /* 43:1 PXE */
-static int hf_bootp_option43_pxeclient_mtftp_client_port = -1; /* 43:2 PXE */
-static int hf_bootp_option43_pxeclient_mtftp_server_port = -1; /* 43:3 PXE */
-static int hf_bootp_option43_pxeclient_mtftp_timeout = -1; /* 43:4 PXE */
-static int hf_bootp_option43_pxeclient_mtftp_delay = -1; /* 43:5 PXE */
-static int hf_bootp_option43_pxeclient_discovery_control = -1; /* 43:6 PXE */
-static int hf_bootp_option43_pxeclient_multicast_address = -1; /* 43:7 PXE */
-static int hf_bootp_option43_pxeclient_boot_servers = -1; /* 43:8 PXE */
-static int hf_bootp_option43_pxeclient_boot_menu = -1; /* 43:9 PXE */
-static int hf_bootp_option43_pxeclient_menu_prompt = -1; /* 43:10 PXE */
-static int hf_bootp_option43_pxeclient_multicast_address_alloc = -1; /* 43:11 PXE */
-static int hf_bootp_option43_pxeclient_credential_types = -1; /* 43:12 PXE */
-static int hf_bootp_option43_pxeclient_boot_item = -1; /* 43:71 PXE */
-static int hf_bootp_option43_pxeclient_end = -1; /* 43:255 PXE */
-
-static int hf_bootp_option43_cl_suboption = -1; /* 43 suboption */
-static int hf_bootp_option43_cl_padding = -1; /* 43:0 CL */
-static int hf_bootp_option43_cl_suboption_request_list = -1; /* 43:1 CL */
-static int hf_bootp_option43_cl_device_type = -1; /* 43:2 CL */
-static int hf_bootp_option43_cl_esafe_type = -1; /* 43:3 CL */
-static int hf_bootp_option43_cl_serial_number = -1; /* 43:4 CL */
-static int hf_bootp_option43_cl_hardware_version = -1; /* 43:5 CL */
-static int hf_bootp_option43_cl_software_version = -1; /* 43:6 CL */
-static int hf_bootp_option43_cl_boot_rom_version = -1; /* 43:7 CL */
-static int hf_bootp_option43_cl_oui_bytes = -1; /* 43:8 CL */
-static int hf_bootp_option43_cl_oui_string = -1; /* 43:8 CL */
-static int hf_bootp_option43_cl_model_number = -1; /* 43:9 CL */
-static int hf_bootp_option43_cl_vendor_name10 = -1; /* 43:10 CL */
-static int hf_bootp_option43_cl_address_realm = -1; /* 43:11 CL */
-static int hf_bootp_option43_cl_cm_ps_system_desc = -1; /* 43:12 CL */
-static int hf_bootp_option43_cl_cm_ps_firmware_revision = -1; /* 43:13 CL */
-static int hf_bootp_option43_cl_firewall_policy_file_version = -1; /* 43:14 CL */
-static int hf_bootp_option43_cl_esafe_config_file_devices = -1; /* 43:15 CL */
-static int hf_bootp_option43_cl_video_security_tape = -1; /* 43:18 CL */
-static int hf_bootp_option43_cl_mta_mac_address = -1; /* 43:31 CL */
-static int hf_bootp_option43_cl_correlation_ID = -1; /* 43:32 CL */
-static int hf_bootp_option43_cl_vendor_name51 = -1; /* 43:51 CL */
-static int hf_bootp_option43_cl_cablecard_capability = -1; /* 43:52 CL */
-static int hf_bootp_option43_cl_device_id_ca = -1; /* 43:53 CL */
-static int hf_bootp_option43_cl_device_id_x509 = -1; /* 43:54 CL */
-static int hf_bootp_option43_cl_end = -1; /* 43:255 CL */
-
-static int hf_bootp_option43_alcatel_suboption = -1; /* 43 suboption */
-static int hf_bootp_option43_alcatel_padding = -1; /* 43:0 Alcatel */
-static int hf_bootp_option43_alcatel_vlan_id = -1; /* 43:58 Alcatel */
-static int hf_bootp_option43_alcatel_tftp1 = -1; /* 43:64 Alcatel */
-static int hf_bootp_option43_alcatel_tftp2 = -1; /* 43:65 Alcatel */
-static int hf_bootp_option43_alcatel_app_type = -1; /* 43:66 Alcatel */
-static int hf_bootp_option43_alcatel_sip_url = -1; /* 43:67 Alcatel */
-static int hf_bootp_option43_alcatel_end = -1; /* 43:255 Alcatel */
-
-
-static int hf_bootp_option_netbios_over_tcpip_name_server = -1; /* 44 */
-static int hf_bootp_option_netbios_over_tcpip_dd_name_server = -1; /* 45 */
-static int hf_bootp_option_netbios_over_tcpip_node_type = -1; /* 46 */
-static int hf_bootp_option_netbios_over_tcpip_scope = -1; /* 47 */
-static int hf_bootp_option_xwindows_system_font_server = -1; /* 48 */
-static int hf_bootp_option_xwindows_system_display_manager = -1; /* 49 */
-static int hf_bootp_option_requested_ip_address = -1; /* 50 */
-static int hf_bootp_option_ip_address_lease_time = -1; /* 51 */
-static int hf_bootp_option_option_overload = -1; /* 52 */
-static int hf_bootp_option_dhcp = -1; /* 53 */
-static int hf_bootp_option_dhcp_server_id = -1; /* 54 */
-static int hf_bootp_option_parameter_request_list_item = -1; /* 55 */
-static int hf_bootp_option_message = -1; /* 56 */
-static int hf_bootp_option_dhcp_max_message_size = -1; /* 57 */
-static int hf_bootp_option_renewal_time_value = -1; /* 58 */
-static int hf_bootp_option_rebinding_time_value = -1; /* 59 */
-static int hf_bootp_option_vendor_class_id = -1; /* 60 */
-
-static int hf_bootp_option_novell_netware_ip_domain = -1; /* 62 */
-
-static int hf_bootp_option63_suboption = -1; /* 63 suboption */
-static int hf_bootp_option63_value = -1; /* 63 suboption value */
-static int hf_bootp_option63_value_8 = -1; /* 63 suboption value */
-static int hf_bootp_option63_value_ip_address = -1; /* 63 suboption value */
-static int hf_bootp_option63_value_boolean = -1; /* 63 suboption value */
-static int hf_bootp_option63_broadcast = -1; /* 63:5 */
-static int hf_bootp_option63_preferred_dss_server = -1; /* 63:6 */
-static int hf_bootp_option63_nearest_nwip_server = -1; /* 63:7 */
-static int hf_bootp_option63_autoretries = -1; /* 63:8 */
-static int hf_bootp_option63_autoretry_delay = -1; /* 63:9 */
-static int hf_bootp_option63_support_netware_v1_1 = -1; /* 63:10 */
-static int hf_bootp_option63_primary_dss = -1; /* 63:11 */
-
-static int hf_bootp_option_nis_plus_domain = -1; /* 64 */
-static int hf_bootp_option_nis_plus_server = -1; /* 65 */
-static int hf_bootp_option_tftp_server_name = -1; /* 66 */
-static int hf_bootp_option_bootfile_name = -1; /* 67 */
-static int hf_bootp_option_mobile_ip_home_agent = -1; /* 68 */
-static int hf_bootp_option_smtp_server = -1; /* 69 */
-static int hf_bootp_option_pop3_server = -1; /* 70 */
-static int hf_bootp_option_nntp_server = -1; /* 71 */
-static int hf_bootp_option_default_www_server = -1; /* 72 */
-static int hf_bootp_option_default_finger_server = -1; /* 73 */
-static int hf_bootp_option_default_irc_server = -1; /* 74 */
-static int hf_bootp_option_streettalk_server = -1; /* 75 */
-static int hf_bootp_option_streettalk_da_server = -1; /* 76 */
-static int hf_bootp_option_slp_directory_agent_value = -1; /* 78 */
-static int hf_bootp_option_slp_directory_agent_slpda_address = -1; /* 78 */
-static int hf_bootp_option_slp_service_scope_value = -1; /* 79 */
-static int hf_bootp_option_slp_service_scope_string = -1; /* 79 */
-
-static int hf_bootp_option82_suboption = -1; /* 82 suboption */
-static int hf_bootp_option82_value = -1; /* 82 suboption value */
-static int hf_bootp_option82_value_8 = -1; /* 82 suboption value */
-static int hf_bootp_option82_value_32 = -1; /* 82 suboption value */
-static int hf_bootp_option82_value_ip_address = -1; /* 82 suboption value */
-static int hf_bootp_option82_value_stringz = -1; /* 82 suboption value */
-static int hf_bootp_option82_padding = -1; /* 82:0 */
-static int hf_bootp_option82_agent_circuit_id = -1; /* 82:1 */
-static int hf_bootp_option82_agent_remote_id = -1; /* 82:2 */
-static int hf_bootp_option82_reserved = -1; /* 82:3 */
-static int hf_bootp_option82_docsis_device_class = -1; /* 82:4 */
-static int hf_bootp_option82_link_selection = -1; /* 82:5 */
-static int hf_bootp_option82_subscriber_id = -1; /* 82:6 */
-static int hf_bootp_option82_radius_attributes = -1; /* 82:7 */
-static int hf_bootp_option82_authentication = -1; /* 82:8 */
-static int hf_bootp_option82_vi = -1; /* 82:9 */
- /* 82:9 suboptions */
+static int hf_bootp_option_padding = -1; /* 0 */
+static int hf_bootp_option_subnet_mask = -1; /* 1 */
+static int hf_bootp_option_time_offset = -1; /* 2 */
+static int hf_bootp_option_router = -1; /* 3 */
+static int hf_bootp_option_time_server = -1; /* 4 */
+static int hf_bootp_option_name_server = -1; /* 5 */
+static int hf_bootp_option_domain_name_server = -1; /* 6 */
+static int hf_bootp_option_log_server = -1; /* 7 */
+static int hf_bootp_option_quotes_server = -1; /* 8 */
+static int hf_bootp_option_lpr_server = -1; /* 9 */
+static int hf_bootp_option_impress_server = -1; /* 10 */
+static int hf_bootp_option_resource_location_server = -1; /* 11 */
+static int hf_bootp_option_hostname = -1; /* 12 */
+static int hf_bootp_option_boot_file_size = -1; /* 13 */
+static int hf_bootp_option_merit_dump_file = -1; /* 14 */
+static int hf_bootp_option_domain_name = -1; /* 15 */
+static int hf_bootp_option_swap_server = -1; /* 16 */
+static int hf_bootp_option_root_path = -1; /* 17 */
+static int hf_bootp_option_extension_path = -1; /* 18 */
+static int hf_bootp_option_ip_forwarding = -1; /* 19 */
+static int hf_bootp_option_non_local_source_routing = -1; /* 20 */
+static int hf_bootp_option_policy_filter_ip = -1; /* 21 - IP address */
+static int hf_bootp_option_policy_filter_subnet_mask = -1; /* 21 - Subnet mask */
+static int hf_bootp_option_max_datagram_reassembly_size = -1; /* 22 */
+static int hf_bootp_option_default_ip_ttl = -1; /* 23 */
+static int hf_bootp_option_path_mtu_aging_timeout = -1; /* 24 */
+static int hf_bootp_option_path_mtu_plateau_table_item = -1; /* 25 */
+static int hf_bootp_option_interface_mtu = -1; /* 26 */
+static int hf_bootp_option_all_subnets_are_local = -1; /* 27 */
+static int hf_bootp_option_broadcast_address = -1; /* 28 */
+static int hf_bootp_option_perform_mask_discovery = -1; /* 29 */
+static int hf_bootp_option_mask_supplier = -1; /* 30 */
+static int hf_bootp_option_perform_router_discover = -1; /* 31 */
+static int hf_bootp_option_router_solicitation_address = -1; /* 32 */
+static int hf_bootp_option_static_route_ip = -1; /* 33 - Destination IP */
+static int hf_bootp_option_static_route_router = -1; /* 33 - Router */
+static int hf_bootp_option_trailer_encapsulation = -1; /* 34 */
+static int hf_bootp_option_arp_cache_timeout = -1; /* 35 */
+static int hf_bootp_option_ethernet_encapsulation = -1; /* 36 */
+static int hf_bootp_option_tcp_default_ttl = -1; /* 37 */
+static int hf_bootp_option_tcp_keepalive_interval = -1; /* 38 */
+static int hf_bootp_option_tcp_keepalive_garbage = -1; /* 39 */
+static int hf_bootp_option_nis_domain = -1; /* 40 */
+static int hf_bootp_option_nis_server = -1; /* 41 */
+static int hf_bootp_option_ntp_server = -1; /* 42 */
+
+static int hf_bootp_option43_value = -1; /* 43 suboption value */
+static int hf_bootp_option43_value_8 = -1; /* 43 suboption value */
+static int hf_bootp_option43_value_32 = -1; /* 43 suboption value */
+static int hf_bootp_option43_value_stringz = -1; /* 43 suboption value */
+static int hf_bootp_option43_value_ip_address = -1; /* 43 suboption value */
+
+static int hf_bootp_option43_pxeclient_suboption = -1; /* 43 suboption */
+static int hf_bootp_option43_pxeclient_padding = -1; /* 43:0 PXE */
+static int hf_bootp_option43_pxeclient_mtftp_ip = -1; /* 43:1 PXE */
+static int hf_bootp_option43_pxeclient_mtftp_client_port = -1; /* 43:2 PXE */
+static int hf_bootp_option43_pxeclient_mtftp_server_port = -1; /* 43:3 PXE */
+static int hf_bootp_option43_pxeclient_mtftp_timeout = -1; /* 43:4 PXE */
+static int hf_bootp_option43_pxeclient_mtftp_delay = -1; /* 43:5 PXE */
+static int hf_bootp_option43_pxeclient_discovery_control = -1; /* 43:6 PXE */
+static int hf_bootp_option43_pxeclient_multicast_address = -1; /* 43:7 PXE */
+static int hf_bootp_option43_pxeclient_boot_servers = -1; /* 43:8 PXE */
+static int hf_bootp_option43_pxeclient_boot_menu = -1; /* 43:9 PXE */
+static int hf_bootp_option43_pxeclient_menu_prompt = -1; /* 43:10 PXE */
+static int hf_bootp_option43_pxeclient_multicast_address_alloc = -1; /* 43:11 PXE */
+static int hf_bootp_option43_pxeclient_credential_types = -1; /* 43:12 PXE */
+static int hf_bootp_option43_pxeclient_boot_item = -1; /* 43:71 PXE */
+static int hf_bootp_option43_pxeclient_end = -1; /* 43:255 PXE */
+
+static int hf_bootp_option43_cl_suboption = -1; /* 43 suboption */
+static int hf_bootp_option43_cl_padding = -1; /* 43:0 CL */
+static int hf_bootp_option43_cl_suboption_request_list = -1; /* 43:1 CL */
+static int hf_bootp_option43_cl_device_type = -1; /* 43:2 CL */
+static int hf_bootp_option43_cl_esafe_type = -1; /* 43:3 CL */
+static int hf_bootp_option43_cl_serial_number = -1; /* 43:4 CL */
+static int hf_bootp_option43_cl_hardware_version = -1; /* 43:5 CL */
+static int hf_bootp_option43_cl_software_version = -1; /* 43:6 CL */
+static int hf_bootp_option43_cl_boot_rom_version = -1; /* 43:7 CL */
+static int hf_bootp_option43_cl_oui_bytes = -1; /* 43:8 CL */
+static int hf_bootp_option43_cl_oui_string = -1; /* 43:8 CL */
+static int hf_bootp_option43_cl_model_number = -1; /* 43:9 CL */
+static int hf_bootp_option43_cl_vendor_name10 = -1; /* 43:10 CL */
+static int hf_bootp_option43_cl_address_realm = -1; /* 43:11 CL */
+static int hf_bootp_option43_cl_cm_ps_system_desc = -1; /* 43:12 CL */
+static int hf_bootp_option43_cl_cm_ps_firmware_revision = -1; /* 43:13 CL */
+static int hf_bootp_option43_cl_firewall_policy_file_version = -1; /* 43:14 CL */
+static int hf_bootp_option43_cl_esafe_config_file_devices = -1; /* 43:15 CL */
+static int hf_bootp_option43_cl_video_security_tape = -1; /* 43:18 CL */
+static int hf_bootp_option43_cl_mta_mac_address = -1; /* 43:31 CL */
+static int hf_bootp_option43_cl_correlation_ID = -1; /* 43:32 CL */
+static int hf_bootp_option43_cl_vendor_name51 = -1; /* 43:51 CL */
+static int hf_bootp_option43_cl_cablecard_capability = -1; /* 43:52 CL */
+static int hf_bootp_option43_cl_device_id_ca = -1; /* 43:53 CL */
+static int hf_bootp_option43_cl_device_id_x509 = -1; /* 43:54 CL */
+static int hf_bootp_option43_cl_end = -1; /* 43:255 CL */
+
+static int hf_bootp_option43_alcatel_suboption = -1; /* 43 suboption */
+static int hf_bootp_option43_alcatel_padding = -1; /* 43:0 Alcatel */
+static int hf_bootp_option43_alcatel_vlan_id = -1; /* 43:58 Alcatel */
+static int hf_bootp_option43_alcatel_tftp1 = -1; /* 43:64 Alcatel */
+static int hf_bootp_option43_alcatel_tftp2 = -1; /* 43:65 Alcatel */
+static int hf_bootp_option43_alcatel_app_type = -1; /* 43:66 Alcatel */
+static int hf_bootp_option43_alcatel_sip_url = -1; /* 43:67 Alcatel */
+static int hf_bootp_option43_alcatel_end = -1; /* 43:255 Alcatel */
+
+
+static int hf_bootp_option_netbios_over_tcpip_name_server = -1; /* 44 */
+static int hf_bootp_option_netbios_over_tcpip_dd_name_server = -1; /* 45 */
+static int hf_bootp_option_netbios_over_tcpip_node_type = -1; /* 46 */
+static int hf_bootp_option_netbios_over_tcpip_scope = -1; /* 47 */
+static int hf_bootp_option_xwindows_system_font_server = -1; /* 48 */
+static int hf_bootp_option_xwindows_system_display_manager = -1; /* 49 */
+static int hf_bootp_option_requested_ip_address = -1; /* 50 */
+static int hf_bootp_option_ip_address_lease_time = -1; /* 51 */
+static int hf_bootp_option_option_overload = -1; /* 52 */
+static int hf_bootp_option_dhcp = -1; /* 53 */
+static int hf_bootp_option_dhcp_server_id = -1; /* 54 */
+static int hf_bootp_option_parameter_request_list_item = -1; /* 55 */
+static int hf_bootp_option_message = -1; /* 56 */
+static int hf_bootp_option_dhcp_max_message_size = -1; /* 57 */
+static int hf_bootp_option_renewal_time_value = -1; /* 58 */
+static int hf_bootp_option_rebinding_time_value = -1; /* 59 */
+static int hf_bootp_option_vendor_class_id = -1; /* 60 */
+
+static int hf_bootp_option_novell_netware_ip_domain = -1; /* 62 */
+
+static int hf_bootp_option63_suboption = -1; /* 63 suboption */
+static int hf_bootp_option63_value = -1; /* 63 suboption value */
+static int hf_bootp_option63_value_8 = -1; /* 63 suboption value */
+static int hf_bootp_option63_value_ip_address = -1; /* 63 suboption value */
+static int hf_bootp_option63_value_boolean = -1; /* 63 suboption value */
+static int hf_bootp_option63_broadcast = -1; /* 63:5 */
+static int hf_bootp_option63_preferred_dss_server = -1; /* 63:6 */
+static int hf_bootp_option63_nearest_nwip_server = -1; /* 63:7 */
+static int hf_bootp_option63_autoretries = -1; /* 63:8 */
+static int hf_bootp_option63_autoretry_delay = -1; /* 63:9 */
+static int hf_bootp_option63_support_netware_v1_1 = -1; /* 63:10 */
+static int hf_bootp_option63_primary_dss = -1; /* 63:11 */
+
+static int hf_bootp_option_nis_plus_domain = -1; /* 64 */
+static int hf_bootp_option_nis_plus_server = -1; /* 65 */
+static int hf_bootp_option_tftp_server_name = -1; /* 66 */
+static int hf_bootp_option_bootfile_name = -1; /* 67 */
+static int hf_bootp_option_mobile_ip_home_agent = -1; /* 68 */
+static int hf_bootp_option_smtp_server = -1; /* 69 */
+static int hf_bootp_option_pop3_server = -1; /* 70 */
+static int hf_bootp_option_nntp_server = -1; /* 71 */
+static int hf_bootp_option_default_www_server = -1; /* 72 */
+static int hf_bootp_option_default_finger_server = -1; /* 73 */
+static int hf_bootp_option_default_irc_server = -1; /* 74 */
+static int hf_bootp_option_streettalk_server = -1; /* 75 */
+static int hf_bootp_option_streettalk_da_server = -1; /* 76 */
+static int hf_bootp_option_slp_directory_agent_value = -1; /* 78 */
+static int hf_bootp_option_slp_directory_agent_slpda_address = -1; /* 78 */
+static int hf_bootp_option_slp_service_scope_value = -1; /* 79 */
+static int hf_bootp_option_slp_service_scope_string = -1; /* 79 */
+
+static int hf_bootp_option82_suboption = -1; /* 82 suboption */
+static int hf_bootp_option82_value = -1; /* 82 suboption value */
+static int hf_bootp_option82_value_8 = -1; /* 82 suboption value */
+static int hf_bootp_option82_value_32 = -1; /* 82 suboption value */
+static int hf_bootp_option82_value_ip_address = -1; /* 82 suboption value */
+static int hf_bootp_option82_value_stringz = -1; /* 82 suboption value */
+static int hf_bootp_option82_padding = -1; /* 82:0 */
+static int hf_bootp_option82_agent_circuit_id = -1; /* 82:1 */
+static int hf_bootp_option82_agent_remote_id = -1; /* 82:2 */
+static int hf_bootp_option82_reserved = -1; /* 82:3 */
+static int hf_bootp_option82_docsis_device_class = -1; /* 82:4 */
+static int hf_bootp_option82_link_selection = -1; /* 82:5 */
+static int hf_bootp_option82_subscriber_id = -1; /* 82:6 */
+static int hf_bootp_option82_radius_attributes = -1; /* 82:7 */
+static int hf_bootp_option82_authentication = -1; /* 82:8 */
+static int hf_bootp_option82_vi = -1; /* 82:9 */
+ /* 82:9 suboptions */
static int hf_bootp_option82_vi_enterprise = -1;
static int hf_bootp_option82_vi_data_length = -1;
static int hf_bootp_option82_vi_cl_option = -1;
@@ -339,75 +338,82 @@ static int hf_bootp_option82_vi_cl_length = -1;
static int hf_bootp_option82_vi_cl_tag = -1;
static int hf_bootp_option82_vi_cl_tag_length = -1;
static int hf_bootp_option82_vi_cl_docsis_version = -1;
- /* 82:9 suboptions end */
-static int hf_bootp_option82_flags = -1; /* 82:10 */
-static int hf_bootp_option82_server_id_override = -1; /* 82:11 */
-
-static int hf_bootp_option_novell_dss_string = -1; /* 85 */
-static int hf_bootp_option_novell_dss_ip = -1; /* 85 */
-static int hf_bootp_option_novell_ds_tree_name = -1; /* 86 */
-static int hf_bootp_option_novell_ds_context = -1; /* 87 */
-static int hf_bootp_option_dhcp_authentication_protocol = -1; /* 90 */
-static int hf_bootp_option_dhcp_authentication_alg_delay = -1; /* 90 */
-static int hf_bootp_option_dhcp_authentication_algorithm = -1; /* 90 */
-static int hf_bootp_option_dhcp_authentication_rdm = -1; /* 90 */
+ /* 82:9 suboptions end */
+static int hf_bootp_option82_flags = -1; /* 82:10 */
+static int hf_bootp_option82_server_id_override = -1; /* 82:11 */
+static int hf_bootp_option82_link_selection_cisco = -1; /* 82:150 */
+static int hf_bootp_option82_vrf_name_vpn_id = -1; /* 82:151 */
+ /* 82:151 suboptions */
+static int hf_bootp_option82_vrf_name_vpn_id_oui = -1;
+static int hf_bootp_option82_vrf_name_vpn_id_index = -1;
+ /* 82:151 suboptions end */
+static int hf_bootp_option82_server_id_override_cisco = -1; /* 82:152 */
+
+static int hf_bootp_option_novell_dss_string = -1; /* 85 */
+static int hf_bootp_option_novell_dss_ip = -1; /* 85 */
+static int hf_bootp_option_novell_ds_tree_name = -1; /* 86 */
+static int hf_bootp_option_novell_ds_context = -1; /* 87 */
+static int hf_bootp_option_dhcp_authentication_protocol = -1; /* 90 */
+static int hf_bootp_option_dhcp_authentication_alg_delay = -1; /* 90 */
+static int hf_bootp_option_dhcp_authentication_algorithm = -1; /* 90 */
+static int hf_bootp_option_dhcp_authentication_rdm = -1; /* 90 */
static int hf_bootp_option_dhcp_authentication_rdm_replay_detection = -1; /* 90 */
-static int hf_bootp_option_dhcp_authentication_rdm_rdv = -1; /* 90 */
-static int hf_bootp_option_dhcp_authentication_secret_id = -1; /* 90 */
-static int hf_bootp_option_dhcp_authentication_hmac_md5_hash = -1; /* 90 */
-static int hf_bootp_option_dhcp_authentication_information = -1; /* 90 */
-static int hf_bootp_option_client_last_transaction_time = -1; /* 91 */
-static int hf_bootp_option_associated_ip_option = -1; /* 92 */
-static int hf_bootp_option_client_system_architecture = -1; /* 93 */
-static int hf_bootp_option_client_network_id_major_ver = -1; /* 94 */
-static int hf_bootp_option_client_network_id_minor_ver = -1; /* 94 */
-static int hf_bootp_option_civic_location_what = -1; /* 99 */
-static int hf_bootp_option_civic_location_country = -1; /* 99 */
-static int hf_bootp_option_civic_location_ca_type = -1; /* 99 */
-static int hf_bootp_option_civic_location_ca_length = -1; /* 99 */
-static int hf_bootp_option_civic_location_ca_value = -1; /* 99 */
-static int hf_bootp_option_netinfo_parent_server_address = -1; /* 112 */
-static int hf_bootp_option_netinfo_parent_server_tag = -1; /* 113 */
-static int hf_bootp_option_dhcp_auto_configuration = -1; /* 116 */
-static int hf_bootp_option_cl_dss_id_option = -1; /* 123 CL */
-static int hf_bootp_option_cl_dss_id_len = -1; /* 123 CL */
-static int hf_bootp_option_cl_dss_id = -1; /* 123 CL */
-static int hf_bootp_option_vi_class_cl_address_mode = -1; /* 124 */
-static int hf_bootp_option_vi_class_enterprise = -1; /* 124 */
-static int hf_bootp_option_vi_class_data_length = -1; /* 124 */
-static int hf_bootp_option_vi_class_data = -1; /* 124 */
+static int hf_bootp_option_dhcp_authentication_rdm_rdv = -1; /* 90 */
+static int hf_bootp_option_dhcp_authentication_secret_id = -1; /* 90 */
+static int hf_bootp_option_dhcp_authentication_hmac_md5_hash = -1; /* 90 */
+static int hf_bootp_option_dhcp_authentication_information = -1; /* 90 */
+static int hf_bootp_option_client_last_transaction_time = -1; /* 91 */
+static int hf_bootp_option_associated_ip_option = -1; /* 92 */
+static int hf_bootp_option_client_system_architecture = -1; /* 93 */
+static int hf_bootp_option_client_network_id_major_ver = -1; /* 94 */
+static int hf_bootp_option_client_network_id_minor_ver = -1; /* 94 */
+static int hf_bootp_option_civic_location_what = -1; /* 99 */
+static int hf_bootp_option_civic_location_country = -1; /* 99 */
+static int hf_bootp_option_civic_location_ca_type = -1; /* 99 */
+static int hf_bootp_option_civic_location_ca_length = -1; /* 99 */
+static int hf_bootp_option_civic_location_ca_value = -1; /* 99 */
+static int hf_bootp_option_netinfo_parent_server_address = -1; /* 112 */
+static int hf_bootp_option_netinfo_parent_server_tag = -1; /* 113 */
+static int hf_bootp_option_dhcp_auto_configuration = -1; /* 116 */
+static int hf_bootp_option_cl_dss_id_option = -1; /* 123 CL */
+static int hf_bootp_option_cl_dss_id_len = -1; /* 123 CL */
+static int hf_bootp_option_cl_dss_id = -1; /* 123 CL */
+static int hf_bootp_option_vi_class_cl_address_mode = -1; /* 124 */
+static int hf_bootp_option_vi_class_enterprise = -1; /* 124 */
+static int hf_bootp_option_vi_class_data_length = -1; /* 124 */
+static int hf_bootp_option_vi_class_data = -1; /* 124 */
static int hf_bootp_option125_enterprise = -1;
-static int hf_bootp_option125_value = -1; /* 125 suboption value */
-static int hf_bootp_option125_value_8 = -1; /* 125 suboption value */
-static int hf_bootp_option125_value_16 = -1; /* 125 suboption value */
-static int hf_bootp_option125_value_ip_address = -1; /* 125 suboption value */
-static int hf_bootp_option125_value_stringz = -1; /* 125 suboption value */
-static int hf_bootp_option125_tr111_suboption = -1; /* 125 suboption */
-static int hf_bootp_option125_tr111_device_manufacturer_oui = -1; /* 125:TR-111 1 */
-static int hf_bootp_option125_tr111_device_serial_number = -1; /* 125:TR-111 2 */
-static int hf_bootp_option125_tr111_device_product_class = -1; /* 125:TR-111 3 */
-static int hf_bootp_option125_tr111_gateway_manufacturer_oui = -1; /* 125:TR-111 4 */
-static int hf_bootp_option125_tr111_gateway_serial_number = -1; /* 125:TR-111 5 */
-static int hf_bootp_option125_tr111_gateway_product_class = -1; /* 125:TR-111 6 */
-static int hf_bootp_option125_cl_suboption = -1; /* 125 suboption */
-static int hf_bootp_option125_cl_option_request = -1; /* 125:CL 1 */
-static int hf_bootp_option125_cl_tftp_server_addresses = -1; /* 125:CL 1 */
-static int hf_bootp_option125_cl_erouter_container_option = -1; /* 125:CL 1 */
-static int hf_bootp_option125_cl_mib_environment_indicator_option = -1; /* 125:CL 1 */
-static int hf_bootp_option125_cl_modem_capabilities = -1; /* 125:CL 1 */
-
-static int hf_bootp_option_subnet_selection_option = -1; /* 118 */
-static int hf_bootp_option_lost_server_domain_name = -1; /* 137 */
-static int hf_bootp_option_capwap_access_controller = -1; /* 138 */
-static int hf_bootp_option_tftp_server_address = -1; /* 150 */
-static int hf_bootp_option_6RD_ipv4_mask_len = -1; /* 212 */
-static int hf_bootp_option_6RD_prefix_len = -1; /* 212 */
-static int hf_bootp_option_6RD_prefix = -1; /* 212 */
-static int hf_bootp_option_6RD_border_relay_ip = -1; /* 212 */
-static int hf_bootp_option_private_proxy_autodiscovery = -1; /* 252 */
-static int hf_bootp_option_end = -1; /* 255 */
-static int hf_bootp_option_end_overload = -1; /* 255 (with overload)*/
+static int hf_bootp_option125_value = -1; /* 125 suboption value */
+static int hf_bootp_option125_value_8 = -1; /* 125 suboption value */
+static int hf_bootp_option125_value_16 = -1; /* 125 suboption value */
+static int hf_bootp_option125_value_ip_address = -1; /* 125 suboption value */
+static int hf_bootp_option125_value_stringz = -1; /* 125 suboption value */
+static int hf_bootp_option125_tr111_suboption = -1; /* 125 suboption */
+static int hf_bootp_option125_tr111_device_manufacturer_oui = -1; /* 125:TR-111 1 */
+static int hf_bootp_option125_tr111_device_serial_number = -1; /* 125:TR-111 2 */
+static int hf_bootp_option125_tr111_device_product_class = -1; /* 125:TR-111 3 */
+static int hf_bootp_option125_tr111_gateway_manufacturer_oui = -1; /* 125:TR-111 4 */
+static int hf_bootp_option125_tr111_gateway_serial_number = -1; /* 125:TR-111 5 */
+static int hf_bootp_option125_tr111_gateway_product_class = -1; /* 125:TR-111 6 */
+static int hf_bootp_option125_cl_suboption = -1; /* 125 suboption */
+static int hf_bootp_option125_cl_option_request = -1; /* 125:CL 1 */
+static int hf_bootp_option125_cl_tftp_server_addresses = -1; /* 125:CL 2 */
+static int hf_bootp_option125_cl_erouter_container_option = -1; /* 125:CL 3 */
+static int hf_bootp_option125_cl_mib_environment_indicator_option = -1; /* 125:CL 4 */
+static int hf_bootp_option125_cl_modem_capabilities = -1; /* 125:CL 5 */
+
+static int hf_bootp_option_subnet_selection_option = -1; /* 118 */
+static int hf_bootp_option_lost_server_domain_name = -1; /* 137 */
+static int hf_bootp_option_capwap_access_controller = -1; /* 138 */
+static int hf_bootp_option_tftp_server_address = -1; /* 150 */
+static int hf_bootp_option_6RD_ipv4_mask_len = -1; /* 212 */
+static int hf_bootp_option_6RD_prefix_len = -1; /* 212 */
+static int hf_bootp_option_6RD_prefix = -1; /* 212 */
+static int hf_bootp_option_6RD_border_relay_ip = -1; /* 212 */
+static int hf_bootp_option_private_proxy_autodiscovery = -1; /* 252 */
+static int hf_bootp_option_end = -1; /* 255 */
+static int hf_bootp_option_end_overload = -1; /* 255 (with overload)*/
@@ -423,15 +429,15 @@ static gint ett_bootp_option125_suboption = -1;
static gint ett_bootp_fqdn = -1;
/* RFC3825decoder error codes of the conversion function */
-#define RFC3825_NOERROR 0
-#define RFC3825_LATITUDE_OUTOFRANGE 1
-#define RFC3825_LATITUDE_UNCERTAINTY_OUTOFRANGE 2
-#define RFC3825_LONGITUDE_OUTOFRANGE 3
+#define RFC3825_NOERROR 0
+#define RFC3825_LATITUDE_OUTOFRANGE 1
+#define RFC3825_LATITUDE_UNCERTAINTY_OUTOFRANGE 2
+#define RFC3825_LONGITUDE_OUTOFRANGE 3
#define RFC3825_LONGITUDE_UNCERTAINTY_OUTOFRANGE 4
-#define RFC3825_ALTITUDE_OUTOFRANGE 5
-#define RFC3825_ALTITUDE_UNCERTAINTY_OUTOFRANGE 6
-#define RFC3825_ALTITUDE_TYPE_OUTOFRANGE 7
-#define RFC3825_DATUM_TYPE_OUTOFRANGE 8
+#define RFC3825_ALTITUDE_OUTOFRANGE 5
+#define RFC3825_ALTITUDE_UNCERTAINTY_OUTOFRANGE 6
+#define RFC3825_ALTITUDE_TYPE_OUTOFRANGE 7
+#define RFC3825_DATUM_TYPE_OUTOFRANGE 8
#define DUID_LLT 1
#define DUID_EN 2
@@ -439,27 +445,27 @@ static gint ett_bootp_fqdn = -1;
struct rfc3825_location_fixpoint_t {
- gint64 latitude; /* latitude in degrees, allowed range from -90deg to 90deg.
+ gint64 latitude; /* latitude in degrees, allowed range from -90deg to 90deg.
Fixpoint A(8,25) with 34 bits */
- guint8 latitude_res; /* the resolution of the latitude in bits, allowed range is from 0 to 34.
+ guint8 latitude_res; /* the resolution of the latitude in bits, allowed range is from 0 to 34.
6 bits. */
- gint64 longitude; /* longitude in degrees, range from -180deg to 180deg.
+ gint64 longitude; /* longitude in degrees, range from -180deg to 180deg.
Fixpoint A(8,25) with 34 bits */
- guint8 longitude_res; /* the resolution of the longitude in bits, allowed range is from 0 to 34.
+ guint8 longitude_res; /* the resolution of the longitude in bits, allowed range is from 0 to 34.
6 bits. */
- gint32 altitude; /* the altitude, 30 bits.
+ gint32 altitude; /* the altitude, 30 bits.
Depending on alt_type this are meters or floors, no range limit.
altitude_type==1: A(13,8) with 22 bits
altitude_type==2: A(13,8) with 22 bits */
- guint8 altitude_res; /* the resolution of the altitude in bits, allowed range is from 0 to 30.
+ guint8 altitude_res; /* the resolution of the altitude in bits, allowed range is from 0 to 30.
6 bits.
altitude_type==1: any value between 0 and 30
altitude_type==2: either 0 (floor unknown) or 30 */
- guint8 altitude_type; /* the type of the altitude, 4 bits. allowed values are:
+ guint8 altitude_type; /* the type of the altitude, 4 bits. allowed values are:
0: unknown
1: altitude in meters
2: altitude in floors */
- guint8 datum_type; /* the map datum used for the coordinates. 8 bits.
+ guint8 datum_type; /* the map datum used for the coordinates. 8 bits.
All values are allowed although currently only the
following ones are defined:
1: WGS84
@@ -472,23 +478,23 @@ struct rfc3825_location_fixpoint_t {
*/
struct rfc3825_location_decimal_t {
- double latitude; /* latitude in degrees, allowed range from -90deg to 90deg */
- double latitude_res; /* the uncertainty of the latitude in grad, "0.01" means +-0.01deg
+ double latitude; /* latitude in degrees, allowed range from -90deg to 90deg */
+ double latitude_res; /* the uncertainty of the latitude in grad, "0.01" means +-0.01deg
from the altitude. During conversion this will be rounded to
next smaller value which can be represented in fixpoint arithmetic */
- double longitude; /* longitude in degrees, range from -180deg to 180deg */
- double longitude_res; /* the uncertainty of the longitude in grad, "0.01" means +-0.01deg
+ double longitude; /* longitude in degrees, range from -180deg to 180deg */
+ double longitude_res; /* the uncertainty of the longitude in grad, "0.01" means +-0.01deg
from the longitude. During conversion this will be rounded to
next smaller value which can be represented in fixpoint arithmetic */
- double altitude; /* the altitude, depending on alt_type this are meters or floors, no range limit */
- double altitude_res; /* the uncertainty of the altitude in either:
+ double altitude; /* the altitude, depending on alt_type this are meters or floors, no range limit */
+ double altitude_res; /* the uncertainty of the altitude in either:
- altitude-type=meters: "10" means 10 meters which means +-10 meters from the altitude
- altitude-type=floors: either 0 (unknown) or 30 (exact) */
- int altitude_type; /* the type of the altitude, allowed values are
+ int altitude_type; /* the type of the altitude, allowed values are
0: unknown
1: altitude in meters
2: altitude in floors */
- int datum_type; /* the map datum used for the coordinates.
+ int datum_type; /* the map datum used for the coordinates.
All values are allowed although currently only the
following ones are defined:
1: WGS84
@@ -522,22 +528,22 @@ static const value_string altitude_type_values[] = {
/* AutoConfigure (RFC 2563) */
static const value_string dhcp_autoconfig[] = {
- {0, "DoNotAutoConfigure"},
- {1, "AutoConfigure"},
- {0, NULL }
+ { 0, "DoNotAutoConfigure"},
+ { 1, "AutoConfigure"},
+ { 0, NULL }
};
/* Error Types for RFC 3825 coordinate location decoding */
static const value_string rfc3825_error_types[] = {
- {1, "Latitude is out of range [-90,90]"},
- {2, "Latitude Uncertainty is out of range [0,90]"},
- {3, "Longitude is out of range [-180,180]"},
- {4, "Longitude Uncertainty is out of range [0,180]"},
- {5, "Altitude is out of range [-(2^21),(2^21)-1]"},
- {6, "Altitude Uncertainty is out of range [0,2^20]"},
- {7, "Altitude Type is out of range [0,2]"},
- {8, "Datum is out of range [1,3]"},
- {0, NULL }
+ { 1, "Latitude is out of range [-90,90]"},
+ { 2, "Latitude Uncertainty is out of range [0,90]"},
+ { 3, "Longitude is out of range [-180,180]"},
+ { 4, "Longitude Uncertainty is out of range [0,180]"},
+ { 5, "Altitude is out of range [-(2^21),(2^21)-1]"},
+ { 6, "Altitude Uncertainty is out of range [0,2^20]"},
+ { 7, "Altitude Type is out of range [0,2]"},
+ { 8, "Datum is out of range [1,3]"},
+ { 0, NULL }
};
@@ -552,37 +558,37 @@ static const value_string civic_address_what_values[] = {
/* Civic Address Type field (RFC 4119, RFC 4776, RFC 5139) */
static const value_string civic_address_type_values[] = {
- { 0, "Language" },
- { 1, "A1" },
- { 2, "A2" },
- { 3, "A3" },
- { 4, "A4" },
- { 5, "A5" },
- { 6, "A6" },
- { 16, "PRD (Leading street direction)" },
- { 17, "POD (Trailing street suffix)" },
- { 18, "STS (Street suffix)" },
- { 19, "HNO (House number)" },
- { 20, "HNS (House number suffix)" },
- { 21, "LMK (Landmark or vanity address)" },
- { 22, "LOC (Additional location information)" },
- { 23, "NAM" },
- { 24, "PC (Postal/ZIP code)" },
- { 25, "BLD (Building)" },
- { 26, "UNIT" },
- { 27, "FLR (Floor)" },
- { 28, "ROOM" },
- { 29, "PLC (Place-type)" },
- { 30, "PCN (Postal community name)" },
- { 31, "POBOX" },
- { 32, "ADDCODE (Additional Code)" },
- { 33, "SEAT" },
- { 34, "RD (Primary road or street)" },
- { 35, "RDSEC (Road section)" },
- { 36, "RDBR (Road branch)" },
- { 37, "RDSUBBR (Road sub-branch)" },
- { 38, "PRM (Road pre-modifier)" },
- { 39, "POM (Road post-modifier" },
+ { 0, "Language" },
+ { 1, "A1" },
+ { 2, "A2" },
+ { 3, "A3" },
+ { 4, "A4" },
+ { 5, "A5" },
+ { 6, "A6" },
+ { 16, "PRD (Leading street direction)" },
+ { 17, "POD (Trailing street suffix)" },
+ { 18, "STS (Street suffix)" },
+ { 19, "HNO (House number)" },
+ { 20, "HNS (House number suffix)" },
+ { 21, "LMK (Landmark or vanity address)" },
+ { 22, "LOC (Additional location information)" },
+ { 23, "NAM" },
+ { 24, "PC (Postal/ZIP code)" },
+ { 25, "BLD (Building)" },
+ { 26, "UNIT" },
+ { 27, "FLR (Floor)" },
+ { 28, "ROOM" },
+ { 29, "PLC (Place-type)" },
+ { 30, "PCN (Postal community name)" },
+ { 31, "POBOX" },
+ { 32, "ADDCODE (Additional Code)" },
+ { 33, "SEAT" },
+ { 34, "RD (Primary road or street)" },
+ { 35, "RDSEC (Road section)" },
+ { 36, "RDBR (Road branch)" },
+ { 37, "RDSUBBR (Road sub-branch)" },
+ { 38, "PRM (Road pre-modifier)" },
+ { 39, "POM (Road post-modifier" },
{ 128, "Script" },
{ 0, NULL }
};
@@ -603,8 +609,8 @@ static const value_string duidtype_vals[] =
static gboolean novell_string = FALSE;
-#define UDP_PORT_BOOTPS 67
-#define UDP_PORT_BOOTPC 68
+#define UDP_PORT_BOOTPS 67
+#define UDP_PORT_BOOTPC 68
#define BOOTP_BC 0x8000
#define BOOTP_MBZ 0x7FFF
@@ -677,14 +683,14 @@ static const true_false_string flag_set_broadcast = {
#define PACKETCABLE_CM_CAP20 "docsis2.0:"
#define PACKETCABLE_CM_CAP30 "docsis3.0:"
-#define PACKETCABLE_CCC_I05 1
-#define PACKETCABLE_CCC_DRAFT5 2
+#define PACKETCABLE_CCC_I05 1
+#define PACKETCABLE_CCC_DRAFT5 2
#define PACKETCABLE_CCC_RFC_3495 3
static enum_val_t pkt_ccc_protocol_versions[] = {
- { "ccc_i05", "PKT-SP-PROV-I05-021127", PACKETCABLE_CCC_I05 },
- { "ccc_draft_5", "IETF Draft 5", PACKETCABLE_CCC_DRAFT5 },
- { "rfc_3495", "RFC 3495", PACKETCABLE_CCC_RFC_3495 },
+ { "ccc_i05", "PKT-SP-PROV-I05-021127", PACKETCABLE_CCC_I05 },
+ { "ccc_draft_5", "IETF Draft 5", PACKETCABLE_CCC_DRAFT5 },
+ { "rfc_3495", "RFC 3495", PACKETCABLE_CCC_RFC_3495 },
{ NULL, NULL, 0 }
};
@@ -693,40 +699,40 @@ static guint pkt_ccc_option = 122;
static int dissect_vendor_pxeclient_suboption(packet_info *pinfo, proto_item *v_ti, proto_tree *v_tree,
- tvbuff_t *tvb, int optoff, int optend);
+ tvbuff_t *tvb, int optoff, int optend);
static int dissect_vendor_cablelabs_suboption(packet_info *pinfo, proto_item *v_ti, proto_tree *v_tree,
- tvbuff_t *tvb, int optoff, int optend);
+ tvbuff_t *tvb, int optoff, int optend);
static int dissect_vendor_alcatel_suboption(packet_info *pinfo, proto_item *v_ti, proto_tree *v_tree,
- tvbuff_t *tvb, int optoff, int optend);
+ tvbuff_t *tvb, int optoff, int optend);
static int dissect_netware_ip_suboption(packet_info *pinfo, proto_item *v_ti, proto_tree *v_tree,
- tvbuff_t *tvb, int optoff, int optend);
+ tvbuff_t *tvb, int optoff, int optend);
static int dissect_vendor_tr111_suboption(packet_info *pinfo, proto_item *v_ti, proto_tree *v_tree,
- tvbuff_t *tvb, int optoff, int optend);
+ tvbuff_t *tvb, int optoff, int optend);
static int bootp_dhcp_decode_agent_info(packet_info *pinfo, proto_item *v_ti, proto_tree *v_tree,
- tvbuff_t *tvb, int optoff, int optend);
+ tvbuff_t *tvb, int optoff, int optend);
static void dissect_packetcable_mta_cap(proto_tree *v_tree, tvbuff_t *tvb,
- int voff, int len);
+ int voff, int len);
static void dissect_docsis_cm_cap(proto_tree *v_tree, tvbuff_t *tvb,
- int voff, int len, gboolean opt125);
+ int voff, int len, gboolean opt125);
static int dissect_packetcable_i05_ccc(packet_info *pinfo, proto_item *v_ti, proto_tree *v_tree,
- tvbuff_t *tvb, int optoff, int optend);
+ tvbuff_t *tvb, int optoff, int optend);
static int dissect_packetcable_ietf_ccc(packet_info *pinfo, proto_item *v_ti, proto_tree *v_tree,
- tvbuff_t *tvb, int optoff, int optend, int revision);
+ tvbuff_t *tvb, int optoff, int optend, int revision);
static int dissect_vendor_cl_suboption(packet_info *pinfo, proto_item *v_ti, proto_tree *v_tree,
- tvbuff_t *tvb, int optoff, int optend);
+ tvbuff_t *tvb, int optoff, int optend);
#define OPT53_DISCOVER "Discover"
/* http://www.iana.org/assignments/bootp-dhcp-parameters */
static const value_string opt53_text[] = {
- { 1, OPT53_DISCOVER },
- { 2, "Offer" },
- { 3, "Request" },
- { 4, "Decline" },
- { 5, "ACK" },
- { 6, "NAK" },
- { 7, "Release" },
- { 8, "Inform" },
- { 9, "Force Renew" },
+ { 1, OPT53_DISCOVER },
+ { 2, "Offer" },
+ { 3, "Request" },
+ { 4, "Decline" },
+ { 5, "ACK" },
+ { 6, "NAK" },
+ { 7, "Release" },
+ { 8, "Inform" },
+ { 9, "Force Renew" },
{ 10, "Lease query" }, /* RFC4388 */
{ 11, "Lease Unassigned" }, /* RFC4388 */
{ 12, "Lease Unknown" }, /* RFC4388 */
@@ -758,17 +764,17 @@ static const value_string opt53_text[] = {
/* Server name and boot file offsets and lengths */
#define SERVER_NAME_OFFSET 44
-#define SERVER_NAME_LEN 64
+#define SERVER_NAME_LEN 64
#define FILE_NAME_OFFSET 108
#define FILE_NAME_LEN 128
#define VENDOR_INFO_OFFSET 236
static const value_string bootp_nbnt_vals[] = {
- {0x1, "B-node" },
- {0x2, "P-node" },
- {0x4, "M-node" },
- {0x8, "H-node" },
- {0, NULL }
+ {0x1, "B-node" },
+ {0x2, "P-node" },
+ {0x4, "M-node" },
+ {0x8, "H-node" },
+ {0, NULL }
};
static const value_string bootp_client_arch[] = {
@@ -782,38 +788,38 @@ static const value_string bootp_client_arch[] = {
{ 0x0007, "EFI BC" },
{ 0x0008, "EFI Xscale" },
{ 0x0009, "EFI x86-64" },
- { 0, NULL }
+ { 0, NULL }
};
static const value_string opt_overload_vals[] = {
- { OPT_OVERLOAD_FILE, "Boot file name holds options", },
- { OPT_OVERLOAD_SNAME, "Server host name holds options", },
+ { OPT_OVERLOAD_FILE, "Boot file name holds options", },
+ { OPT_OVERLOAD_SNAME, "Server host name holds options", },
{ OPT_OVERLOAD_BOTH, "Boot file and server host names hold options" },
- { 0, NULL } };
+ { 0, NULL } };
static const value_string slpda_vals[] = {
- {0x00, "Dynamic Discovery" },
- {0x01, "Static Discovery" },
- {0x80, "Backwards compatibility" },
- {0, NULL } };
+ {0x00, "Dynamic Discovery" },
+ {0x01, "Static Discovery" },
+ {0x80, "Backwards compatibility" },
+ {0, NULL } };
static const value_string slp_scope_vals[] = {
- {0x00, "Preferred Scope" },
- {0x01, "Mandatory Scope" },
- {0, NULL } };
+ {0x00, "Preferred Scope" },
+ {0x01, "Mandatory Scope" },
+ {0, NULL } };
static const value_string authen_protocol_vals[] = {
{AUTHEN_PROTO_CONFIG_TOKEN, "configuration token" },
{AUTHEN_PROTO_DELAYED_AUTHEN, "delayed authentication" },
- {0, NULL } };
+ {0, NULL } };
static const value_string authen_da_algo_vals[] = {
{AUTHEN_DELAYED_ALGO_HMAC_MD5, "HMAC_MD5" },
- {0, NULL } };
+ {0, NULL } };
static const value_string authen_rdm_vals[] = {
{AUTHEN_RDM_MONOTONIC_COUNTER, "Monotonically-increasing counter" },
- {0, NULL } };
+ {0, NULL } };
static const value_string cl_dss_id_type_vals[] = {
{1, "Primary DSS_ID" },
@@ -822,9 +828,9 @@ static const value_string cl_dss_id_type_vals[] = {
};
/* bootp options administration */
-#define BOOTP_OPT_NUM 256
+#define BOOTP_OPT_NUM 256
-/* Re-define structure. Values to be updated by bootp_init_protocol */
+/* Re-define structure. Values to be updated by bootp_init_protocol */
static struct opt_info bootp_opt[BOOTP_OPT_NUM];
static struct opt_info default_bootp_opt[BOOTP_OPT_NUM] = {
@@ -865,7 +871,7 @@ static struct opt_info default_bootp_opt[BOOTP_OPT_NUM] = {
/* 34 */ { "Trailer Encapsulation", val_boolean, &hf_bootp_option_trailer_encapsulation },
/* 35 */ { "ARP Cache Timeout", time_in_u_secs, &hf_bootp_option_arp_cache_timeout },
/* 36 */ { "Ethernet Encapsulation", val_boolean, &hf_bootp_option_ethernet_encapsulation },
-/* 37 */ { "TCP Default TTL", val_u_byte, &hf_bootp_option_tcp_default_ttl },
+/* 37 */ { "TCP Default TTL", val_u_byte, &hf_bootp_option_tcp_default_ttl },
/* 38 */ { "TCP Keepalive Interval", time_in_u_secs, &hf_bootp_option_tcp_keepalive_interval },
/* 39 */ { "TCP Keepalive Garbage", val_boolean, &hf_bootp_option_tcp_keepalive_garbage },
/* 40 */ { "Network Information Service Domain", string, &hf_bootp_option_nis_domain },
@@ -910,7 +916,7 @@ static struct opt_info default_bootp_opt[BOOTP_OPT_NUM] = {
/* 79 */ { "Service Location Agent Scope", special, NULL },
/* 80 */ { "Rapid commit", opaque, NULL },
/* 81 */ { "Client Fully Qualified Domain Name", special, NULL},
-/* 82 */ { "Agent Information Option", special, NULL},
+/* 82 */ { "Agent Information Option", special, NULL},
/* 83 */ { "iSNS [TODO:RFC4174]", opaque, NULL },
/* 84 */ { "Removed/Unassigned", opaque, NULL },
/* 85 */ { "Novell Directory Services Servers", special, NULL},
@@ -946,7 +952,7 @@ static struct opt_info default_bootp_opt[BOOTP_OPT_NUM] = {
/* 115 */ { "Removed/Unassigned", opaque, NULL },
/* 116 */ { "DHCP Auto-Configuration", val_u_byte, &hf_bootp_option_dhcp_auto_configuration },
/* 117 */ { "Name Service Search [TODO:RFC2937]", opaque, NULL },
-/* 118 */ { "Subnet Selection Option", ipv4_list, &hf_bootp_option_subnet_selection_option },
+/* 118 */ { "Subnet Selection Option", ipv4_list, &hf_bootp_option_subnet_selection_option },
/* 119 */ { "Domain Search [TODO:RFC3397]", opaque, NULL },
/* 120 */ { "SIP Servers [TODO:RFC3361]", opaque, NULL },
/* 121 */ { "Classless Static Route", special, NULL},
@@ -1092,40 +1098,40 @@ static struct opt_info default_bootp_opt[BOOTP_OPT_NUM] = {
*/
/* UAT entry structure. */
typedef struct {
- guint opt;
- gchar *text;
+ guint opt;
+ gchar *text;
enum field_type ftype;
} uat_bootp_record_t;
static uat_bootp_record_t *uat_bootp_records = NULL;
-static uat_t * bootp_uat = NULL;
+static uat_t *bootp_uat = NULL;
static guint num_bootp_records_uat = 0;
static void* uat_bootp_record_copy_cb(void* n, const void* o, size_t siz _U_) {
- uat_bootp_record_t* new_record = (uat_bootp_record_t *)n;
- const uat_bootp_record_t* old_record = (uat_bootp_record_t *)o;
+ uat_bootp_record_t* new_record = (uat_bootp_record_t *)n;
+ const uat_bootp_record_t* old_record = (const uat_bootp_record_t *)o;
- if (old_record->text) {
- new_record->text = g_strdup(old_record->text);
- } else {
- new_record->text = NULL;
- }
+ if (old_record->text) {
+ new_record->text = g_strdup(old_record->text);
+ } else {
+ new_record->text = NULL;
+ }
- return new_record;
+ return new_record;
}
static void uat_bootp_record_update_cb(void* r, const char** err) {
- uat_bootp_record_t* rec = (uat_bootp_record_t *)r;
+ uat_bootp_record_t* rec = (uat_bootp_record_t *)r;
- if ((rec->opt == 0) || (rec->opt >=BOOTP_OPT_NUM-1))
- *err = ep_strdup_printf("Option must be between 1 and %d", BOOTP_OPT_NUM-2);
+ if ((rec->opt == 0) || (rec->opt >=BOOTP_OPT_NUM-1))
+ *err = ep_strdup_printf("Option must be between 1 and %d", BOOTP_OPT_NUM-2);
}
static void uat_bootp_record_free_cb(void*r) {
- uat_bootp_record_t* rec = (uat_bootp_record_t *)r;
+ uat_bootp_record_t* rec = (uat_bootp_record_t *)r;
- if (rec->text) g_free(rec->text);
+ if (rec->text) g_free(rec->text);
}
UAT_DEC_CB_DEF(uat_bootp_records, opt, uat_bootp_record_t)
@@ -1136,9 +1142,9 @@ UAT_VS_DEF(uat_bootp_records, ftype, uat_bootp_record_t, 0, "string")
static struct opt_info* bootp_get_opt(unsigned int idx)
{
if(idx>=BOOTP_OPT_NUM)
- return NULL;
+ return NULL;
- return &bootp_opt[idx];
+ return &bootp_opt[idx];
}
static const char *
@@ -1166,13 +1172,13 @@ struct basic_types_hfs {
/* Handle "basic" datatypes adding to a tree */
static int
bootp_handle_basic_types(packet_info *pinfo, proto_tree *tree, proto_item *item, tvbuff_t *tvb,
- enum field_type ftype, int offset, int total_len,
- gint *hf, struct basic_types_hfs* hf_default)
+ enum field_type ftype, int offset, int total_len,
+ gint *hf, struct basic_types_hfs* hf_default)
{
- int i, left;
- gint32 time_s_secs;
+ int i, left;
+ gint32 time_s_secs;
guint32 time_u_secs;
- int consumed = 0;
+ int consumed = 0;
switch (ftype) {
case bytes:
@@ -1267,9 +1273,9 @@ bootp_handle_basic_types(packet_info *pinfo, proto_tree *tree, proto_item *item,
}
if (hf != NULL)
- proto_tree_add_item(tree, *hf, tvb, offset, 2, TRUE);
+ proto_tree_add_item(tree, *hf, tvb, offset, 2, ENC_LITTLE_ENDIAN);
else if (hf_default->val_u_short != NULL)
- proto_tree_add_item(tree, *hf_default->val_u_short, tvb, offset, 2, TRUE);
+ proto_tree_add_item(tree, *hf_default->val_u_short, tvb, offset, 2, ENC_LITTLE_ENDIAN);
consumed = 2;
break;
@@ -1335,7 +1341,7 @@ bootp_handle_basic_types(packet_info *pinfo, proto_tree *tree, proto_item *item,
consumed = 4;
break;
default:
- /* Ignore other field_types */
+ /* Ignore other field_types */
break;
}
@@ -1345,32 +1351,42 @@ bootp_handle_basic_types(packet_info *pinfo, proto_tree *tree, proto_item *item,
/* Returns the number of bytes consumed by this option. */
static int
bootp_option(tvbuff_t *tvb, packet_info *pinfo, proto_tree *bp_tree, int voff,
- int eoff, gboolean first_pass, gboolean *at_end, const char **dhcp_type_p,
- const guint8 **vendor_class_id_p, guint8 *overload_p)
+ int eoff, gboolean first_pass, gboolean *at_end, const char **dhcp_type_p,
+ const guint8 **vendor_class_id_p, guint8 *overload_p)
{
- struct opt_info* opt;
- enum field_type ftype;
- guchar code = tvb_get_guint8(tvb, voff);
- int optlen;
- guchar byte;
- int i, consumed, basictype_consumed;
- int optoff, optleft, optend;
- proto_tree *v_tree;
- proto_item *vti;
- guint8 protocol;
- guint8 algorithm;
- guint8 rdm;
- guint8 fqdn_flags;
- int o52voff, o52eoff;
- gboolean o52at_end;
- guint8 s_option;
- guint8 s_len;
- const guchar *dns_name;
- gboolean option_handled = TRUE;
- struct basic_types_hfs default_hfs = {&hf_bootp_option_value, &hf_bootp_option_value_ip_address, &hf_bootp_option_value_ip_address,
- &hf_bootp_option_value_stringz, &hf_bootp_option_value_boolean, &hf_bootp_option_value_8,
- &hf_bootp_option_value_16, &hf_bootp_option_value_16,
- &hf_bootp_option_value_u32, &hf_bootp_option_value_i32, &hf_bootp_option_value_u32 };
+ struct opt_info *opt;
+ enum field_type ftype;
+ guchar code = tvb_get_guint8(tvb, voff);
+ int optlen;
+ guchar byte;
+ int i, consumed, basictype_consumed;
+ int optoff, optleft, optend;
+ proto_tree *v_tree;
+ proto_item *vti;
+ guint8 protocol;
+ guint8 algorithm;
+ guint8 rdm;
+ guint8 fqdn_flags;
+ int o52voff, o52eoff;
+ gboolean o52at_end;
+ guint8 s_option;
+ guint8 s_len;
+ const guchar *dns_name;
+ gboolean option_handled = TRUE;
+
+ struct basic_types_hfs default_hfs = {
+ &hf_bootp_option_value,
+ &hf_bootp_option_value_ip_address,
+ &hf_bootp_option_value_ip_address,
+ &hf_bootp_option_value_stringz,
+ &hf_bootp_option_value_boolean,
+ &hf_bootp_option_value_8,
+ &hf_bootp_option_value_16,
+ &hf_bootp_option_value_16,
+ &hf_bootp_option_value_u32,
+ &hf_bootp_option_value_i32,
+ &hf_bootp_option_value_u32
+ };
/* Options whose length isn't "optlen + 2". */
switch (code) {
@@ -1779,7 +1795,7 @@ bootp_option(tvbuff_t *tvb, packet_info *pinfo, proto_tree *bp_tree, int voff,
}
break;
- case 97: /* Client Identifier (UUID) */
+ case 97: /* Client Identifier (UUID) */
if (optlen > 0)
byte = tvb_get_guint8(tvb, optoff);
else
@@ -1886,13 +1902,13 @@ bootp_option(tvbuff_t *tvb, packet_info *pinfo, proto_tree *bp_tree, int voff,
}
break;
- case 82: /* Relay Agent Information Option */
+ case 82: /* Relay Agent Information Option */
optend = optoff + optlen;
while (optoff < optend)
optoff = bootp_dhcp_decode_agent_info(pinfo, vti, v_tree, tvb, optoff, optend);
break;
- case 85: /* Novell Servers (RFC 2241) */
+ case 85: /* Novell Servers (RFC 2241) */
/* Option 85 can be sent as a string */
/* Added by Greg Morris (gmorris[AT]novell.com) */
if (novell_string) {
@@ -2141,7 +2157,7 @@ bootp_option(tvbuff_t *tvb, packet_info *pinfo, proto_tree *bp_tree, int voff,
}
break;
- case 124: { /* V-I Vendor Class */
+ case 124: { /* V-I Vendor Class */
int data_len;
if (optlen == 1) {
@@ -2175,7 +2191,7 @@ bootp_option(tvbuff_t *tvb, packet_info *pinfo, proto_tree *bp_tree, int voff,
break;
}
- case 125: { /* V-I Vendor-specific Information */
+ case 125: { /* V-I Vendor-specific Information */
int enterprise = 0;
int s_end = 0;
int s_option_len = 0;
@@ -2269,7 +2285,7 @@ bootp_option(tvbuff_t *tvb, packet_info *pinfo, proto_tree *bp_tree, int voff,
}
default: /* not special */
- /* The PacketCable CCC option number can vary. If this is a CCC option,
+ /* The PacketCable CCC option number can vary. If this is a CCC option,
handle it as a special.
*/
if (code == pkt_ccc_option) {
@@ -2311,49 +2327,70 @@ bootp_option(tvbuff_t *tvb, packet_info *pinfo, proto_tree *bp_tree, int voff,
}
static const value_string option82_suboption_vals[] = {
- { 0, "Padding" },
- { 1, "Agent Circuit ID" },
- { 2, "Agent Remote ID" },
- { 3, "Reserved" },
- { 4, "DOCSIS Device Class" },
- { 5, "Link selection" },
- { 6, "Subscriber ID" },
- { 7, "RADIUS Attributes" },
- { 8, "Authentication" },
- { 9, "Vendor-Specific Information" },
+ { 0, "Padding" },
+ { 1, "Agent Circuit ID" },
+ { 2, "Agent Remote ID" },
+ { 3, "Reserved" },
+ { 4, "DOCSIS Device Class" },
+ { 5, "Link selection" },
+ { 6, "Subscriber ID" },
+ { 7, "RADIUS Attributes" },
+ { 8, "Authentication" },
+ { 9, "Vendor-Specific Information" },
{ 10, "Flags" },
{ 11, "Server ID Override" },
+ { 150, "Link selection (Cisco proprietary)" },
+ { 151, "VRF name/VPN ID" },
+ { 152, "Server ID Override (Cisco proprietary)" },
{ 0, NULL }
};
static int
bootp_dhcp_decode_agent_info(packet_info *pinfo, proto_item *v_ti, proto_tree *v_tree, tvbuff_t *tvb, int optoff,
- int optend)
+ int optend)
{
- int suboptoff = optoff;
- guint8 subopt, vs_opt, vs_len;
- int subopt_len, datalen;
- guint32 enterprise;
+ int suboptoff = optoff;
+ guint8 subopt, idx, vs_opt, vs_len;
+ int subopt_len, subopt_end, datalen;
+ guint32 enterprise;
proto_item *vti;
- proto_tree *o82_v_tree, *o82_9_tree;
- guint8 tag, tag_len;
- struct basic_types_hfs default_hfs = {&hf_bootp_option82_value, &hf_bootp_option82_value_ip_address, &hf_bootp_option82_value_ip_address,
- &hf_bootp_option82_value_stringz, NULL, &hf_bootp_option82_value_8,
- NULL, NULL, &hf_bootp_option82_value_32, NULL, NULL};
-
- static struct opt_info o82_opt[]= {
- /* 0 */ {"nop", bytes, &hf_bootp_option82_padding}, /* dummy */
- /* 1 */ {"Agent Circuit ID", bytes, &hf_bootp_option82_agent_circuit_id}, /* [RFC3046] */
- /* 2 */ {"Agent Remote ID", bytes, &hf_bootp_option82_agent_remote_id}, /* [RFC3046] */
- /* 3 */ {"Reserved", bytes, &hf_bootp_option82_reserved},
- /* 4 */ {"DOCSIS Device Class", val_u_long, &hf_bootp_option82_docsis_device_class}, /* [RFC3256] */
- /* 5 */ {"Link selection", ipv4, &hf_bootp_option82_link_selection}, /* [RFC3527] */
- /* 6 */ {"Subscriber ID", string, &hf_bootp_option82_subscriber_id}, /* [RFC3993] */ /***** CHECK STRING TYPE */
- /* 7 */ {"RADIUS Attributes", bytes, &hf_bootp_option82_radius_attributes}, /* [RFC4014] */
- /* 8 */ {"Authentication", bytes, &hf_bootp_option82_authentication}, /* [RFC4030] */
- /* 9 */ {"Vendor-Specific Information", special, &hf_bootp_option82_vi}, /* [RFC 4243] */
- /* 10 */ {"Flags", val_u_byte, &hf_bootp_option82_flags}, /* [RFC5010] */
- /* 11 */ {"Server ID Override", ipv4, &hf_bootp_option82_server_id_override}, /* [RFC 5107] */
+ proto_tree *o82_v_tree, *o82_sub_tree;
+ guint8 tag, tag_len;
+
+ struct basic_types_hfs default_hfs = {
+ &hf_bootp_option82_value,
+ &hf_bootp_option82_value_ip_address,
+ &hf_bootp_option82_value_ip_address,
+ &hf_bootp_option82_value_stringz,
+ NULL,
+ &hf_bootp_option82_value_8,
+ NULL,
+ NULL,
+ &hf_bootp_option82_value_32,
+ NULL,
+ NULL
+ };
+
+ struct opt82_info {
+ int id;
+ struct opt_info info;
+ };
+ static struct opt82_info o82_opt[]= {
+ {0, {"nop", bytes, &hf_bootp_option82_padding}}, /* dummy */
+ {1, {"Agent Circuit ID", bytes, &hf_bootp_option82_agent_circuit_id}}, /* [RFC3046] */
+ {2, {"Agent Remote ID", bytes, &hf_bootp_option82_agent_remote_id}}, /* [RFC3046] */
+ {3, {"Reserved", bytes, &hf_bootp_option82_reserved}},
+ {4, {"DOCSIS Device Class", val_u_long, &hf_bootp_option82_docsis_device_class}}, /* [RFC3256] */
+ {5, {"Link selection", ipv4, &hf_bootp_option82_link_selection}}, /* [RFC3527] */
+ {6, {"Subscriber ID", string, &hf_bootp_option82_subscriber_id}}, /* [RFC3993] */ /***** CHECK STRING TYPE */
+ {7, {"RADIUS Attributes", bytes, &hf_bootp_option82_radius_attributes}}, /* [RFC4014] */
+ {8, {"Authentication", bytes, &hf_bootp_option82_authentication}}, /* [RFC4030] */
+ {9, {"Vendor-Specific Information", special, &hf_bootp_option82_vi}}, /* [RFC 4243] */
+ {10, {"Flags", val_u_byte, &hf_bootp_option82_flags}}, /* [RFC5010] */
+ {11, {"Server ID Override", ipv4, &hf_bootp_option82_server_id_override}}, /* [RFC 5107] */
+ {150, {"Link selection (Cisco proprietary)", ipv4, &hf_bootp_option82_link_selection_cisco}}, /* [RFC3527] */
+ {151, {"VRF name/VPN ID", special, &hf_bootp_option82_vrf_name_vpn_id}}, /* [RFC2685] */
+ {152, {"Server ID Override (Cisco proprietary)", ipv4, &hf_bootp_option82_server_id_override_cisco}} /* [RFC 5107] */
};
subopt = tvb_get_guint8(tvb, optoff);
@@ -2373,35 +2410,41 @@ bootp_dhcp_decode_agent_info(packet_info *pinfo, proto_item *v_ti, proto_tree *v
proto_tree_add_item(o82_v_tree, hf_bootp_suboption_length, tvb, suboptoff, 1, ENC_BIG_ENDIAN);
suboptoff++;
- if (suboptoff+subopt_len > optend) {
+ subopt_end = suboptoff+subopt_len;
+ if (subopt_end > optend) {
expert_add_info_format(pinfo, vti, PI_PROTOCOL, PI_ERROR,
"Suboption %d: no room left in option for suboption value", subopt);
return (optend);
}
- if ( (subopt < 1 ) || (subopt >= array_length(o82_opt)) ) {
+ for (idx = 0; idx < array_length(o82_opt); idx++) {
+ if (o82_opt[idx].id == subopt) {
+ break;
+ }
+ }
+ if ( (idx < 1 ) || (idx == array_length(o82_opt)) ) {
proto_tree_add_item(o82_v_tree, hf_bootp_option82_value, tvb, suboptoff, subopt_len, ENC_NA);
- } else if (o82_opt[subopt].ftype == special) {
+ } else if (o82_opt[idx].info.ftype == special) {
switch(subopt)
{
case 9:
- while (suboptoff < optend) {
+ while (suboptoff < subopt_end) {
enterprise = tvb_get_ntohl(tvb, suboptoff);
vti = proto_tree_add_item(o82_v_tree, hf_bootp_option82_vi_enterprise, tvb, suboptoff, 4, ENC_BIG_ENDIAN);
suboptoff += 4;
- o82_9_tree = proto_item_add_subtree(vti, ett_bootp_option82_suboption9);
+ o82_sub_tree = proto_item_add_subtree(vti, ett_bootp_option82_suboption9);
datalen = tvb_get_guint8(tvb, suboptoff);
- proto_tree_add_item(o82_9_tree, hf_bootp_option82_vi_data_length, tvb, suboptoff, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(o82_sub_tree, hf_bootp_option82_vi_data_length, tvb, suboptoff, 1, ENC_BIG_ENDIAN);
suboptoff++;
switch (enterprise) {
case 4491: /* CableLab */
vs_opt = tvb_get_guint8(tvb, suboptoff);
- proto_tree_add_item(o82_9_tree, hf_bootp_option82_vi_cl_option, tvb, suboptoff, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(o82_sub_tree, hf_bootp_option82_vi_cl_option, tvb, suboptoff, 1, ENC_BIG_ENDIAN);
suboptoff++;
vs_len = tvb_get_guint8(tvb, suboptoff);
- proto_tree_add_item(o82_9_tree, hf_bootp_option82_vi_cl_length, tvb, suboptoff, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(o82_sub_tree, hf_bootp_option82_vi_cl_length, tvb, suboptoff, 1, ENC_BIG_ENDIAN);
suboptoff++;
switch (vs_opt) {
@@ -2409,12 +2452,12 @@ bootp_dhcp_decode_agent_info(packet_info *pinfo, proto_item *v_ti, proto_tree *v
case 1:
if (vs_len == 4) {
tag = tvb_get_guint8(tvb, suboptoff);
- proto_tree_add_item(o82_9_tree, hf_bootp_option82_vi_cl_tag, tvb, suboptoff, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(o82_sub_tree, hf_bootp_option82_vi_cl_tag, tvb, suboptoff, 1, ENC_BIG_ENDIAN);
tag_len = tvb_get_guint8(tvb, suboptoff+1);
- proto_tree_add_item(o82_9_tree, hf_bootp_option82_vi_cl_tag_length, tvb, suboptoff+1, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(o82_sub_tree, hf_bootp_option82_vi_cl_tag_length, tvb, suboptoff+1, 1, ENC_BIG_ENDIAN);
suboptoff+=2;
if (tag == 1) {
- proto_tree_add_uint_format_value(o82_9_tree, hf_bootp_option82_vi_cl_docsis_version,
+ proto_tree_add_uint_format_value(o82_sub_tree, hf_bootp_option82_vi_cl_docsis_version,
tvb, suboptoff, 2, 0, "%d.%d",
tvb_get_guint8(tvb, suboptoff), tvb_get_guint8(tvb, suboptoff+1));
suboptoff+=2;
@@ -2442,17 +2485,26 @@ bootp_dhcp_decode_agent_info(packet_info *pinfo, proto_item *v_ti, proto_tree *v
}
}
break;
+ case 151:
+ if (subopt_len != 7) {
+ expert_add_info_format(pinfo, vti, PI_PROTOCOL, PI_ERROR,
+ "Invalid length (expected 7 bytes, found %d bytes)", subopt_len);
+ break;
+ }
+ proto_tree_add_item(o82_v_tree, hf_bootp_option82_vrf_name_vpn_id_oui, tvb, suboptoff, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(o82_v_tree, hf_bootp_option82_vrf_name_vpn_id_index, tvb, suboptoff+3, 4, ENC_BIG_ENDIAN);
+ break;
default:
- if (o82_opt[subopt].phf != NULL)
- proto_tree_add_item(o82_v_tree, *o82_opt[subopt].phf, tvb, suboptoff, subopt_len, ENC_BIG_ENDIAN);
+ if (o82_opt[idx].info.phf != NULL)
+ proto_tree_add_item(o82_v_tree, *o82_opt[idx].info.phf, tvb, suboptoff, subopt_len, ENC_BIG_ENDIAN);
else
proto_tree_add_item(o82_v_tree, hf_bootp_option82_value, tvb, suboptoff, subopt_len, ENC_NA);
break;
}
}
else {
- if (bootp_handle_basic_types(pinfo, o82_v_tree, vti, tvb, o82_opt[subopt].ftype,
- suboptoff, subopt_len, o82_opt[subopt].phf, &default_hfs) == 0) {
+ if (bootp_handle_basic_types(pinfo, o82_v_tree, vti, tvb, o82_opt[idx].info.ftype,
+ suboptoff, subopt_len, o82_opt[idx].info.phf, &default_hfs) == 0) {
expert_add_info_format(pinfo, vti, PI_PROTOCOL, PI_ERROR, "ERROR, please report: Unknown subopt type handler %d", subopt);
}
}
@@ -2462,16 +2514,16 @@ bootp_dhcp_decode_agent_info(packet_info *pinfo, proto_item *v_ti, proto_tree *v
}
static const value_string option43_pxeclient_suboption_vals[] = {
- { 0, "Padding" },
- { 1, "PXE mtftp IP" },
- { 2, "PXE mtftp client port" },
- { 3, "PXE mtftp server port" },
- { 4, "PXE mtftp timeout" },
- { 5, "PXE mtftp delay" },
- { 6, "PXE discovery control" },
- { 7, "PXE multicast address" },
- { 8, "PXE boot servers" },
- { 9, "PXE boot menu" },
+ { 0, "Padding" },
+ { 1, "PXE mtftp IP" },
+ { 2, "PXE mtftp client port" },
+ { 3, "PXE mtftp server port" },
+ { 4, "PXE mtftp timeout" },
+ { 5, "PXE mtftp delay" },
+ { 6, "PXE discovery control" },
+ { 7, "PXE multicast address" },
+ { 8, "PXE boot servers" },
+ { 9, "PXE boot menu" },
{ 10, "PXE menu prompt" },
{ 11, "PXE multicast address alloc", },
{ 12, "PXE credential types" },
@@ -2482,16 +2534,27 @@ static const value_string option43_pxeclient_suboption_vals[] = {
static int
dissect_vendor_pxeclient_suboption(packet_info *pinfo, proto_item *v_ti, proto_tree *v_tree,
- tvbuff_t *tvb, int optoff, int optend)
+ tvbuff_t *tvb, int optoff, int optend)
{
- int suboptoff = optoff;
- guint8 subopt;
- guint8 subopt_len;
+ int suboptoff = optoff;
+ guint8 subopt;
+ guint8 subopt_len;
proto_tree *o43pxeclient_v_tree;
proto_item *vti;
- struct basic_types_hfs default_hfs = {NULL, &hf_bootp_option43_value_ip_address, &hf_bootp_option43_value_ip_address,
- NULL, NULL, &hf_bootp_option43_value_8,
- NULL, NULL, NULL, NULL, NULL};
+
+ struct basic_types_hfs default_hfs = {
+ NULL,
+ &hf_bootp_option43_value_ip_address,
+ &hf_bootp_option43_value_ip_address,
+ NULL,
+ NULL,
+ &hf_bootp_option43_value_8,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ };
static struct opt_info o43pxeclient_opt[]= {
/* 0 */ {"nop", special, &hf_bootp_option43_pxeclient_padding}, /* dummy */
@@ -2532,7 +2595,7 @@ dissect_vendor_pxeclient_suboption(packet_info *pinfo, proto_item *v_ti, proto_t
if (suboptoff >= optend) {
expert_add_info_format(pinfo, v_ti, PI_PROTOCOL, PI_ERROR,
"Suboption %d: no room left in option for suboption length", subopt);
- return (optend);
+ return (optend);
}
subopt_len = tvb_get_guint8(tvb, suboptoff);
@@ -2576,40 +2639,40 @@ rfc3825_lci_to_fixpoint(const unsigned char lci[16], struct rfc3825_location_fix
if (lci[0] & 2) { /* LSB<<1 contains the sign of the latitude */
/* Latitude is negative, expand two's complement */
fixpoint->latitude = (((gint64)lci[0] & 3)<<32) | ((gint64)lci[1]<<24) |
- ((gint64)lci[2]<<16) | ((gint64)lci[3]<<8) |
- (gint64)lci[4] | ((gint64)0x3FFFFFFF<<34);
+ ((gint64)lci[2]<<16) | ((gint64)lci[3]<<8) |
+ (gint64)lci[4] | ((gint64)0x3FFFFFFF<<34);
} else {
/* Latitude is positive */
fixpoint->latitude = (((gint64)lci[0] & 3)<<32) | ((gint64)lci[1]<<24) |
- ((gint64)lci[2]<<16) | ((gint64)lci[3]<<8) |
- (gint64)lci[4];
+ ((gint64)lci[2]<<16) | ((gint64)lci[3]<<8) |
+ (gint64)lci[4];
}
fixpoint->longitude_res = (lci[5]>>2) & 0x3F; /* make sure that right-shift does not copy sign bit */
if (lci[5] & 2) { /* LSB<<1 contains the sign of the latitude */
/* Longitude is negative, expand two's complement */
fixpoint->longitude = (((gint64)lci[5] & 3)<<32) | ((gint64)lci[6]<<24) |
- ((gint64)lci[7]<<16) | ((gint64)lci[8]<<8) |
- (gint64)lci[9] | ((gint64)0x3FFFFFFF<<34);
+ ((gint64)lci[7]<<16) | ((gint64)lci[8]<<8) |
+ (gint64)lci[9] | ((gint64)0x3FFFFFFF<<34);
} else {
/* Longitude is positive */
fixpoint->longitude = (((gint64)lci[5] & 3)<<32) | ((gint64)lci[6]<<24) |
- ((gint64)lci[7]<<16) | ((gint64)lci[8]<<8) |
- (gint64)lci[9];
+ ((gint64)lci[7]<<16) | ((gint64)lci[8]<<8) |
+ (gint64)lci[9];
}
- fixpoint->altitude_type = (lci[10]>>4) & 0x0F; /* make sure that right-shift does not copy sign bit */
- fixpoint->altitude_res = ((lci[10] & 0x0F) << 2) | ((lci[11]>>6) & 0x03);
+ fixpoint->altitude_type = (lci[10]>>4) & 0x0F; /* make sure that right-shift does not copy sign bit */
+ fixpoint->altitude_res = ((lci[10] & 0x0F) << 2) | ((lci[11]>>6) & 0x03);
if (lci[11] & 0x20) { /* LSB<<1 contains the sign of the latitude */
/* Altitude is negative, expand two's complement */
fixpoint->altitude = (((gint32)lci[11] & 0x3F)<<24) | ((gint32)lci[12]<<16) |
- ((gint32)lci[13]<<8) | ((gint32)lci[14]) |
- ((gint32)0x03<<30);
+ ((gint32)lci[13]<<8) | ((gint32)lci[14]) |
+ ((gint32)0x03<<30);
} else {
/* Altitude is positive */
fixpoint->altitude = (((gint32)lci[11] & 0x3F)<<24) | ((gint32)lci[12]<<16) |
- ((gint32)lci[13]<<8) | ((gint32)lci[14]);
+ ((gint32)lci[13]<<8) | ((gint32)lci[14]);
}
fixpoint->datum_type = lci[15];
@@ -2694,16 +2757,16 @@ rfc3825_fixpoint_to_decimal(struct rfc3825_location_fixpoint_t *fixpoint, struct
}
static const value_string option43_cl_suboption_vals[] = {
- { 0, "Padding" },
- { 1, "Suboption Request List" },
- { 2, "Device Type" },
- { 3, "eSAFE Types" },
- { 4, "Serial Number" },
- { 5, "Hardware Version" },
- { 6, "Software Version" },
- { 7, "Boot ROM version" },
- { 8, "Organizationally Unique Identifier" },
- { 9, "Model Number" },
+ { 0, "Padding" },
+ { 1, "Suboption Request List" },
+ { 2, "Device Type" },
+ { 3, "eSAFE Types" },
+ { 4, "Serial Number" },
+ { 5, "Hardware Version" },
+ { 6, "Software Version" },
+ { 7, "Boot ROM version" },
+ { 8, "Organizationally Unique Identifier" },
+ { 9, "Model Number" },
{ 10, "Vendor Name" },
{ 11, "Address Realm" },
{ 12, "CM/PS System Description" },
@@ -2729,16 +2792,27 @@ static const value_string cablehome_subopt11_vals[] = {
static int
dissect_vendor_cablelabs_suboption(packet_info *pinfo, proto_item *v_ti, proto_tree *v_tree,
- tvbuff_t *tvb, int optoff, int optend)
+ tvbuff_t *tvb, int optoff, int optend)
{
- int suboptoff = optoff;
- guint8 subopt;
- guint8 subopt_len;
+ int suboptoff = optoff;
+ guint8 subopt;
+ guint8 subopt_len;
proto_tree *o43cl_v_tree;
proto_item *vti;
- struct basic_types_hfs default_hfs = {&hf_bootp_option43_value, NULL, NULL,
- &hf_bootp_option43_value_stringz, NULL, &hf_bootp_option43_value_8,
- NULL, NULL, &hf_bootp_option43_value_32, NULL, NULL};
+
+ struct basic_types_hfs default_hfs = {
+ &hf_bootp_option43_value,
+ NULL,
+ NULL,
+ &hf_bootp_option43_value_stringz,
+ NULL,
+ &hf_bootp_option43_value_8,
+ NULL,
+ NULL,
+ &hf_bootp_option43_value_32,
+ NULL,
+ NULL
+ };
static struct opt_info o43cablelabs_opt[]= {
/* 0 */ {"nop", special, &hf_bootp_option43_cl_padding}, /* dummy */
@@ -2819,8 +2893,8 @@ dissect_vendor_cablelabs_suboption(packet_info *pinfo, proto_item *v_ti, proto_t
if (suboptoff >= optend) {
expert_add_info_format(pinfo, v_ti, PI_PROTOCOL, PI_ERROR,
- "Suboption %d: no room left in option for suboption length", subopt);
- return (optend);
+ "Suboption %d: no room left in option for suboption length", subopt);
+ return (optend);
}
subopt_len = tvb_get_guint8(tvb, suboptoff);
@@ -2881,7 +2955,7 @@ dissect_vendor_cablelabs_suboption(packet_info *pinfo, proto_item *v_ti, proto_t
}
static const value_string option43_alcatel_suboption_vals[] = {
- { 0, "Padding" },
+ { 0, "Padding" },
{ 58, "Voice VLAN ID" },
{ 64, "Spatial Redundancy TFTP1" },
{ 65, "Spatial Redundancy TFTP2" },
@@ -2899,11 +2973,11 @@ static const value_string option43_alcatel_app_type_vals[] = {
static int
dissect_vendor_alcatel_suboption(packet_info *pinfo, proto_item *v_ti, proto_tree *v_tree,
- tvbuff_t *tvb, int optoff, int optend)
+ tvbuff_t *tvb, int optoff, int optend)
{
- int suboptoff = optoff;
- guint8 subopt;
- guint8 subopt_len;
+ int suboptoff = optoff;
+ guint8 subopt;
+ guint8 subopt_len;
proto_item *vti;
proto_tree *o43alcatel_v_tree;
@@ -2936,7 +3010,7 @@ dissect_vendor_alcatel_suboption(packet_info *pinfo, proto_item *v_ti, proto_tre
if (suboptoff+subopt_len > optend) {
expert_add_info_format(pinfo, vti, PI_PROTOCOL, PI_ERROR, "Suboption %d: no room left in option for suboption value", subopt);
- return (optend);
+ return (optend);
}
switch (subopt)
@@ -3001,15 +3075,26 @@ static const value_string option63_suboption_vals[] = {
static int
dissect_netware_ip_suboption(packet_info *pinfo, proto_item *v_ti, proto_tree *v_tree,
- tvbuff_t *tvb, int optoff, int optend)
+ tvbuff_t *tvb, int optoff, int optend)
{
- int suboptoff = optoff;
- guint8 subopt, subopt_len;
+ int suboptoff = optoff;
+ guint8 subopt, subopt_len;
proto_tree *o63_v_tree;
proto_item *vti;
- struct basic_types_hfs default_hfs = {NULL, &hf_bootp_option63_value_ip_address, &hf_bootp_option63_value_ip_address,
- NULL, &hf_bootp_option63_value_boolean, &hf_bootp_option63_value_8,
- NULL, NULL, NULL, NULL, NULL};
+
+ struct basic_types_hfs default_hfs = {
+ NULL,
+ &hf_bootp_option63_value_ip_address,
+ &hf_bootp_option63_value_ip_address,
+ NULL,
+ &hf_bootp_option63_value_boolean,
+ &hf_bootp_option63_value_8,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ };
static struct opt_info o63_opt[]= {
/* 0 */ {"",none,NULL},
@@ -3078,15 +3163,26 @@ static const value_string option125_tr111_suboption_vals[] = {
static int
dissect_vendor_tr111_suboption(packet_info *pinfo, proto_item *v_ti, proto_tree *v_tree,
- tvbuff_t *tvb, int optoff, int optend)
+ tvbuff_t *tvb, int optoff, int optend)
{
- int suboptoff = optoff;
+ int suboptoff = optoff;
proto_tree *o125_v_tree;
proto_item *vti;
- guint8 subopt, subopt_len;
- struct basic_types_hfs default_hfs = {NULL, NULL, NULL,
- &hf_bootp_option125_value_stringz, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL};
+ guint8 subopt, subopt_len;
+
+ struct basic_types_hfs default_hfs = {
+ NULL,
+ NULL,
+ NULL,
+ &hf_bootp_option125_value_stringz,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ };
/* Reference: TR-111 DHCP Option 125 Sub-Option Data Fields
Page 10.
@@ -3108,7 +3204,7 @@ dissect_vendor_tr111_suboption(packet_info *pinfo, proto_item *v_ti, proto_tree
if (suboptoff >= optend) {
expert_add_info_format(pinfo, v_ti, PI_PROTOCOL, PI_ERROR,
"Suboption %d: no room left in option for suboption length", subopt);
- return (optend);
+ return (optend);
}
subopt_len = tvb_get_guint8(tvb, suboptoff);
@@ -3123,7 +3219,7 @@ dissect_vendor_tr111_suboption(packet_info *pinfo, proto_item *v_ti, proto_tree
if (suboptoff+subopt_len > optend) {
expert_add_info_format(pinfo, vti, PI_PROTOCOL, PI_ERROR,
"Suboption %d: no room left in option for suboption value", subopt);
- return (optend);
+ return (optend);
}
if (subopt < array_length(o125_tr111_opt)) {
@@ -3162,15 +3258,26 @@ static const value_string pkt_mib_env_ind_opt_vals[] = {
static int
dissect_vendor_cl_suboption(packet_info *pinfo, proto_item *v_ti, proto_tree *v_tree,
- tvbuff_t *tvb, int optoff, int optend)
+ tvbuff_t *tvb, int optoff, int optend)
{
- int suboptoff = optoff;
- guint8 subopt, subopt_len;
+ int suboptoff = optoff;
+ guint8 subopt, subopt_len;
proto_tree *o125_v_tree;
proto_item *vti;
- struct basic_types_hfs default_hfs = {&hf_bootp_option125_value, &hf_bootp_option125_value_ip_address, &hf_bootp_option125_value_ip_address,
- &hf_bootp_option125_value_stringz, NULL, &hf_bootp_option125_value_8,
- &hf_bootp_option125_value_16, NULL, NULL, NULL, NULL};
+
+ struct basic_types_hfs default_hfs = {
+ &hf_bootp_option125_value,
+ &hf_bootp_option125_value_ip_address,
+ &hf_bootp_option125_value_ip_address,
+ &hf_bootp_option125_value_stringz,
+ NULL,
+ &hf_bootp_option125_value_8,
+ &hf_bootp_option125_value_16,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ };
static struct opt_info o125_cl_opt[]= {
/* 0 */ {"nop", special, NULL}, /* dummy */
@@ -3186,8 +3293,8 @@ dissect_vendor_cl_suboption(packet_info *pinfo, proto_item *v_ti, proto_tree *v_
if (suboptoff >= optend) {
expert_add_info_format(pinfo, v_ti, PI_PROTOCOL, PI_ERROR,
- "Suboption %d: no room left in option for suboption length", subopt);
- return (optend);
+ "Suboption %d: no room left in option for suboption length", subopt);
+ return (optend);
}
subopt_len = tvb_get_guint8(tvb, suboptoff);
@@ -3236,31 +3343,31 @@ dissect_vendor_cl_suboption(packet_info *pinfo, proto_item *v_ti, proto_tree *v_
#define PKT_MDC_TLV_OFF 10
-/* These are ASCII-encoded hexadecimal digits. We use the raw hex equivalent for
+/* These are ASCII-encoded hexadecimal digits. We use the raw hex equivalent for
convenience. */
-#define PKT_MDC_VERSION 0x3031 /* "01" */
-#define PKT_MDC_TEL_END 0x3032 /* "02" */
-#define PKT_MDC_TGT 0x3033 /* "03" */
-#define PKT_MDC_HTTP_ACC 0x3034 /* "04" */
-#define PKT_MDC_SYSLOG 0x3035 /* "05" */
-#define PKT_MDC_NCS 0x3036 /* "06" */
-#define PKT_MDC_PRI_LINE 0x3037 /* "07" */
-#define PKT_MDC_VENDOR_TLV 0x3038 /* "08" */
-#define PKT_MDC_NVRAM_STOR 0x3039 /* "09" */
-#define PKT_MDC_PROV_REP 0x3041 /* "0A" */
-#define PKT_MDC_PROV_REP_LC 0x3061 /* "0a" */
-#define PKT_MDC_SUPP_CODECS 0x3042 /* "0B" */
-#define PKT_MDC_SUPP_CODECS_LC 0x3062 /* "0b" */
-#define PKT_MDC_SILENCE 0x3043 /* "0C" */
-#define PKT_MDC_SILENCE_LC 0x3063 /* "0c" */
-#define PKT_MDC_ECHO_CANCEL 0x3044 /* "0D" */
-#define PKT_MDC_ECHO_CANCEL_LC 0x3064 /* "0d" */
-#define PKT_MDC_RSVP 0x3045 /* "0E" */
-#define PKT_MDC_RSVP_LC 0x3065 /* "0e" */
-#define PKT_MDC_UGS_AD 0x3046 /* "0F" */
-#define PKT_MDC_UGS_AD_LC 0x3066 /* "0f" */
-#define PKT_MDC_IF_INDEX 0x3130 /* "10" */
-#define PKT_MDC_FLOW_LOG 0x3131 /* "11" */
+#define PKT_MDC_VERSION 0x3031 /* "01" */
+#define PKT_MDC_TEL_END 0x3032 /* "02" */
+#define PKT_MDC_TGT 0x3033 /* "03" */
+#define PKT_MDC_HTTP_ACC 0x3034 /* "04" */
+#define PKT_MDC_SYSLOG 0x3035 /* "05" */
+#define PKT_MDC_NCS 0x3036 /* "06" */
+#define PKT_MDC_PRI_LINE 0x3037 /* "07" */
+#define PKT_MDC_VENDOR_TLV 0x3038 /* "08" */
+#define PKT_MDC_NVRAM_STOR 0x3039 /* "09" */
+#define PKT_MDC_PROV_REP 0x3041 /* "0A" */
+#define PKT_MDC_PROV_REP_LC 0x3061 /* "0a" */
+#define PKT_MDC_SUPP_CODECS 0x3042 /* "0B" */
+#define PKT_MDC_SUPP_CODECS_LC 0x3062 /* "0b" */
+#define PKT_MDC_SILENCE 0x3043 /* "0C" */
+#define PKT_MDC_SILENCE_LC 0x3063 /* "0c" */
+#define PKT_MDC_ECHO_CANCEL 0x3044 /* "0D" */
+#define PKT_MDC_ECHO_CANCEL_LC 0x3064 /* "0d" */
+#define PKT_MDC_RSVP 0x3045 /* "0E" */
+#define PKT_MDC_RSVP_LC 0x3065 /* "0e" */
+#define PKT_MDC_UGS_AD 0x3046 /* "0F" */
+#define PKT_MDC_UGS_AD_LC 0x3066 /* "0f" */
+#define PKT_MDC_IF_INDEX 0x3130 /* "10" */
+#define PKT_MDC_FLOW_LOG 0x3131 /* "11" */
#define PKT_MDC_PROV_FLOWS 0x3132 /* "12" */
/* PacketCable 1.5: */
#define PKT_MDC_T38_VERSION 0x3133 /* "13" */
@@ -3326,7 +3433,7 @@ static const value_string pkt_mdc_boolean_vals[] = {
};
static const value_string pkt_mdc_codec_vals[] = {
- { 0x3031, "other" }, /* "01" */
+ { 0x3031, "other" }, /* "01" */
{ 0x3032, "unknown" },
{ 0x3033, "G.729" },
{ 0x3034, "reserved" },
@@ -3334,8 +3441,8 @@ static const value_string pkt_mdc_codec_vals[] = {
{ 0x3036, "PCMU" },
{ 0x3037, "G.726-32" },
{ 0x3038, "G.728" },
- { 0x3039, "PCMA" }, /* "09" */
- { 0x3041, "G.726-16" }, /* "0A" */
+ { 0x3039, "PCMA" }, /* "09" */
+ { 0x3041, "G.726-16" }, /* "0A" */
{ 0x3042, "G.726-24" },
{ 0x3043, "G.726-40" },
{ 0x3044, "iLBC" },
@@ -3424,15 +3531,15 @@ static const value_string pkt_mdc_euro_mib_vals[] = {
static void
dissect_packetcable_mta_cap(proto_tree *v_tree, tvbuff_t *tvb, int voff, int len)
{
- guint16 raw_val;
- unsigned long flow_val = 0;
- int off = PKT_MDC_TLV_OFF + voff;
- int subopt_off, max_len;
- guint tlv_len, i, mib_val;
- guint8 asc_val[3] = " ", flow_val_str[5];
- char bit_fld[64];
- proto_item *ti, *mib_ti;
- proto_tree *subtree, *subtree2;
+ guint16 raw_val;
+ unsigned long flow_val = 0;
+ int off = PKT_MDC_TLV_OFF + voff;
+ int subopt_off, max_len;
+ guint tlv_len, i, mib_val;
+ guint8 asc_val[3] = " ", flow_val_str[5];
+ char bit_fld[64];
+ proto_item *ti, *mib_ti;
+ proto_tree *subtree, *subtree2;
tvb_memcpy (tvb, asc_val, off, 2);
if (sscanf((gchar*)asc_val, "%x", &tlv_len) != 1 || tlv_len > 0xff) {
@@ -3706,29 +3813,29 @@ static const value_string docsis_cm_cap_type_vals[] = {
{ DOCSIS_CM_CAP_IPFILT_SUP, "IP Filters Support" },
{ DOCSIS_CM_CAP_LLCFILT_SUP, "LLC Filters Support" },
{ DOCSIS_CM_CAP_EXPUNI_SPACE, "Expanded Unicast SID Space" },
- { DOCSIS_CM_CAP_RNGHLDOFF_SUP, "Ranging Hold-Off Support" },
+ { DOCSIS_CM_CAP_RNGHLDOFF_SUP, "Ranging Hold-Off Support" },
{ DOCSIS_CM_CAP_L2VPN_SUP, "L2VPN Capability" },
- { DOCSIS_CM_CAP_L2VPN_HOST_SUP, "eSAFE Host Capability" },
+ { DOCSIS_CM_CAP_L2VPN_HOST_SUP, "eSAFE Host Capability" },
{ DOCSIS_CM_CAP_DUTFILT_SUP, "DUT Filtering" },
- { DOCSIS_CM_CAP_USFREQRNG_SUP, "Upstream Frequency Range Support" },
- { DOCSIS_CM_CAP_USSYMRATE_SUP, "Upstream Symbol Rate Support" },
+ { DOCSIS_CM_CAP_USFREQRNG_SUP, "Upstream Frequency Range Support" },
+ { DOCSIS_CM_CAP_USSYMRATE_SUP, "Upstream Symbol Rate Support" },
{ DOCSIS_CM_CAP_SACM2_SUP, "Selectable Active Code Mode 2 Support" },
{ DOCSIS_CM_CAP_SACM2HOP_SUP, "Code Hopping SAC Mode 2 is supported" },
- { DOCSIS_CM_CAP_MULTTXCHAN_SUP, "Multiple Transmit Channel Support" },
- { DOCSIS_CM_CAP_512USTXCHAN_SUP, "5.12 Msps Upstream Transmit Channel Support" },
- { DOCSIS_CM_CAP_256USTXCHAN_SUP, "2.56 Msps Upstream Transmit Channel Support" },
- { DOCSIS_CM_CAP_TOTALSIDCLU_SUP, "Total SID Cluster Support" },
- { DOCSIS_CM_CAP_SIDCLUPERSF_SUP, "SID Clusters per Service Flow Support" },
- { DOCSIS_CM_CAP_MULTRXCHAN_SUP, "Multiple Receive Channel Support" },
- { DOCSIS_CM_CAP_TOTALDSID_SUP, "Total Downstream Service ID (DSID) Support" },
- { DOCSIS_CM_CAP_RESEQDSID_SUP, "Resequencing Downstream Service ID (DSID) Support" },
- { DOCSIS_CM_CAP_MULTDSID_SUP, "Multicast Downstream Service ID (DSID) Support" },
- { DOCSIS_CM_CAP_MULTDSIDFW_SUP, "Multicast DSID Forwarding" },
+ { DOCSIS_CM_CAP_MULTTXCHAN_SUP, "Multiple Transmit Channel Support" },
+ { DOCSIS_CM_CAP_512USTXCHAN_SUP, "5.12 Msps Upstream Transmit Channel Support" },
+ { DOCSIS_CM_CAP_256USTXCHAN_SUP, "2.56 Msps Upstream Transmit Channel Support" },
+ { DOCSIS_CM_CAP_TOTALSIDCLU_SUP, "Total SID Cluster Support" },
+ { DOCSIS_CM_CAP_SIDCLUPERSF_SUP, "SID Clusters per Service Flow Support" },
+ { DOCSIS_CM_CAP_MULTRXCHAN_SUP, "Multiple Receive Channel Support" },
+ { DOCSIS_CM_CAP_TOTALDSID_SUP, "Total Downstream Service ID (DSID) Support" },
+ { DOCSIS_CM_CAP_RESEQDSID_SUP, "Resequencing Downstream Service ID (DSID) Support" },
+ { DOCSIS_CM_CAP_MULTDSID_SUP, "Multicast Downstream Service ID (DSID) Support" },
+ { DOCSIS_CM_CAP_MULTDSIDFW_SUP, "Multicast DSID Forwarding" },
{ DOCSIS_CM_CAP_FCTF_SUP, "Frame Control Type Forwarding Capability" },
{ DOCSIS_CM_CAP_DPV_SUP, "DPV Capability" },
- { DOCSIS_CM_CAP_UGSPERUSFLOW_SUP, "Unsolicited Grant Service/Upstream Service Flow Support" },
- { DOCSIS_CM_CAP_MAPUCDRECEIPT_SUP, "MAP and UCD Receipt Support" },
- { DOCSIS_CM_CAP_USDROPCLASSIF_SUP, "Upstream Drop Classifier Support" },
+ { DOCSIS_CM_CAP_UGSPERUSFLOW_SUP, "Unsolicited Grant Service/Upstream Service Flow Support" },
+ { DOCSIS_CM_CAP_MAPUCDRECEIPT_SUP, "MAP and UCD Receipt Support" },
+ { DOCSIS_CM_CAP_USDROPCLASSIF_SUP, "Upstream Drop Classifier Support" },
{ DOCSIS_CM_CAP_IPV6_SUP, "IPv6 Support" },
{ 0, NULL }
};
@@ -3850,15 +3957,16 @@ static void get_opt125_tlv(tvbuff_t *tvb, guint off, guint8 *tlvtype, guint8 *tl
/* Type */
*tlvtype = tvb_get_guint8(tvb, off);
/* Length */
- *tlvlen = tvb_get_guint8(tvb, off+1);
+ *tlvlen = tvb_get_guint8(tvb, off+1);
/* Value */
*value = ep_tvb_memdup(tvb, off + 2, *tlvlen);
}
static void get_opt60_tlv(tvbuff_t *tvb, guint off, guint8 *tlvtype, guint8 *tlvlen, guint8 **value)
{
- guint i;
- guint8 *val_asc;
+ guint i;
+ guint8 *val_asc;
+
val_asc = (guint8 *)ep_alloc0(4);
/* Type */
tvb_memcpy(tvb, val_asc, off, 2);
@@ -3879,17 +3987,17 @@ static void get_opt60_tlv(tvbuff_t *tvb, guint off, guint8 *tlvtype, guint8 *tlv
static void
dissect_docsis_cm_cap(proto_tree *v_tree, tvbuff_t *tvb, int voff, int len, gboolean opt125)
{
- guint8 *asc_val;
- guint i;
+ guint8 *asc_val;
+ guint i;
proto_item *ti;
proto_tree *subtree;
- char bit_fld[64];
- guint8 tlv_type;
- guint8 tlv_len;
- guint8 val_byte = 0;
- guint16 val_uint16 = 0;
- guint8 *val_other = NULL;
- guint off = voff;
+ char bit_fld[64];
+ guint8 tlv_type;
+ guint8 tlv_len;
+ guint8 val_byte = 0;
+ guint16 val_uint16 = 0;
+ guint8 *val_other = NULL;
+ guint off = voff;
asc_val = ep_alloc0(4);
@@ -3929,11 +4037,11 @@ dissect_docsis_cm_cap(proto_tree *v_tree, tvbuff_t *tvb, int voff, int len, gboo
{
get_opt125_tlv(tvb, off, &tlv_type, &tlv_len, &val_other);
ti = proto_tree_add_uint_format(v_tree, hf_bootp_docsis_cm_cap_type, tvb, off,
- tlv_len + 2,
- tlv_type,
- "0x%02x: %s = ",
- tlv_type,
- val_to_str(tlv_type, docsis_cm_cap_type_vals, "unknown"));
+ tlv_len + 2,
+ tlv_type,
+ "0x%02x: %s = ",
+ tlv_type,
+ val_to_str(tlv_type, docsis_cm_cap_type_vals, "unknown"));
}
else
{
@@ -3942,11 +4050,11 @@ dissect_docsis_cm_cap(proto_tree *v_tree, tvbuff_t *tvb, int voff, int len, gboo
from ASCII to uint8s to allow the same parser to work for both */
get_opt60_tlv(tvb, off, &tlv_type, &tlv_len, &val_other);
ti = proto_tree_add_uint_format(v_tree, hf_bootp_docsis_cm_cap_type, tvb, off,
- (tlv_len * 2) + 4,
- tlv_type,
- "0x%02x: %s = ",
- tlv_type,
- val_to_str(tlv_type, docsis_cm_cap_type_vals, "unknown"));
+ (tlv_len * 2) + 4,
+ tlv_type,
+ "0x%02x: %s = ",
+ tlv_type,
+ val_to_str(tlv_type, docsis_cm_cap_type_vals, "unknown"));
}
if (tlv_len == 1)
@@ -4158,8 +4266,8 @@ dissect_docsis_cm_cap(proto_tree *v_tree, tvbuff_t *tvb, int voff, int len, gboo
#define PKT_CCC_PROV_TIMER 8
#define PKT_CCC_CMS_FQDN 9
#define PKT_CCC_IETF_SEC_TKT 9
-#define PKT_CCC_AS_KRB 10
-#define PKT_CCC_AP_KRB 11
+#define PKT_CCC_AS_KRB 10
+#define PKT_CCC_AP_KRB 11
#define PKT_CCC_MTA_KRB_CLEAR 12
static const value_string pkt_i05_ccc_opt_vals[] = {
@@ -4200,10 +4308,10 @@ static const value_string pkt_i05_ccc_ticket_ctl_vals[] = {
static int
dissect_packetcable_i05_ccc(packet_info *pinfo, proto_item *v_ti, proto_tree *v_tree,
- tvbuff_t *tvb, int optoff, int optend)
+ tvbuff_t *tvb, int optoff, int optend)
{
- int suboptoff = optoff;
- guint8 subopt, subopt_len, fetch_tgt, timer_val, ticket_ctl;
+ int suboptoff = optoff;
+ guint8 subopt, subopt_len, fetch_tgt, timer_val, ticket_ctl;
proto_tree *pkt_s_tree;
proto_item *vti;
@@ -4344,18 +4452,18 @@ static const value_string sec_tcm_vals[] = {
static int
dissect_packetcable_ietf_ccc(packet_info *pinfo, proto_item *v_ti, proto_tree *v_tree,
- tvbuff_t *tvb, int optoff, int optend, int revision)
+ tvbuff_t *tvb, int optoff, int optend, int revision)
{
- int suboptoff = optoff;
- guint8 subopt, subopt_len;
- guint32 ipv4addr;
- guint8 prov_type, fetch_tgt, timer_val;
- guint16 sec_tcm;
- proto_tree *pkt_s_tree;
- proto_item *vti;
- int max_timer_val = 255, i;
+ int suboptoff = optoff;
+ guint8 subopt, subopt_len;
+ guint32 ipv4addr;
+ guint8 prov_type, fetch_tgt, timer_val;
+ guint16 sec_tcm;
+ proto_tree *pkt_s_tree;
+ proto_item *vti;
+ int max_timer_val = 255, i;
const guchar *dns_name;
- char bit_fld[24];
+ char bit_fld[24];
subopt = tvb_get_guint8(tvb, suboptoff);
suboptoff++;
@@ -4547,20 +4655,20 @@ static const value_string op_vals[] = {
static void
dissect_bootp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *bp_tree;
- proto_item *ti;
- proto_tree *flag_tree;
- proto_item *fi, *hidden_item;
- guint8 op;
- guint8 htype, hlen;
- int voff, eoff, tmpvoff; /* vendor offset, end offset */
- guint32 ip_addr;
- gboolean at_end;
- const char *dhcp_type = NULL;
- const guint8 *vendor_class_id = NULL;
- guint16 flags, secs;
- int offset_delta;
- guint8 overload = 0; /* DHCP option overload */
+ proto_tree *bp_tree;
+ proto_item *ti;
+ proto_tree *flag_tree;
+ proto_item *fi, *hidden_item;
+ guint8 op;
+ guint8 htype, hlen;
+ int voff, eoff, tmpvoff; /* vendor offset, end offset */
+ guint32 ip_addr;
+ gboolean at_end;
+ const char *dhcp_type = NULL;
+ const guint8 *vendor_class_id = NULL;
+ guint16 flags, secs;
+ int offset_delta;
+ guint8 overload = 0; /* DHCP option overload */
col_set_str(pinfo->cinfo, COL_PROTOCOL, "BOOTP");
/*
@@ -4810,463 +4918,1449 @@ void
proto_register_bootp(void)
{
static const value_string bootp_custom_type_vals[] = {
- { ipv4, "IP Address"},
- { ipv4_list, "IP Address List" },
- { string, "string" },
- { bytes, "bytes" },
- { val_boolean, "boolean" },
- { val_u_byte, "byte" },
- { val_u_short, "unsigned short" },
+ { ipv4, "IP Address"},
+ { ipv4_list, "IP Address List" },
+ { string, "string" },
+ { bytes, "bytes" },
+ { val_boolean, "boolean" },
+ { val_u_byte, "byte" },
+ { val_u_short, "unsigned short" },
{ val_u_short_list, "unsigned short list" },
- { val_u_long, "unsigned long" },
- { time_in_s_secs, "integer time in seconds" },
- { time_in_u_secs, "unsigned integer time in seconds" },
+ { val_u_long, "unsigned long" },
+ { time_in_s_secs, "integer time in seconds" },
+ { time_in_u_secs, "unsigned integer time in seconds" },
{ 0x00, NULL }
};
static hf_register_info hf[] = {
{ &hf_bootp_dhcp,
- { "Frame is DHCP", "bootp.dhcp", FT_BOOLEAN,
- BASE_NONE, NULL, 0x0,
+ { "Frame is DHCP", "bootp.dhcp",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_bootp_type,
- { "Message type", "bootp.type", FT_UINT8,
- BASE_DEC, VALS(op_vals), 0x0,
+ { "Message type", "bootp.type",
+ FT_UINT8, BASE_DEC, VALS(op_vals), 0x0,
NULL, HFILL }},
{ &hf_bootp_hw_type,
- { "Hardware type", "bootp.hw.type", FT_UINT8,
- BASE_HEX, NULL, 0x0,
+ { "Hardware type", "bootp.hw.type",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }},
{ &hf_bootp_hw_len,
- { "Hardware address length", "bootp.hw.len", FT_UINT8,
- BASE_DEC, NULL, 0x0,
+ { "Hardware address length", "bootp.hw.len",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
NULL, HFILL }},
{ &hf_bootp_hops,
- { "Hops", "bootp.hops", FT_UINT8,
- BASE_DEC, NULL, 0x0,
+ { "Hops", "bootp.hops",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
NULL, HFILL }},
{ &hf_bootp_id,
- { "Transaction ID", "bootp.id", FT_UINT32,
- BASE_HEX, NULL, 0x0,
+ { "Transaction ID", "bootp.id",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
NULL, HFILL }},
{ &hf_bootp_secs,
- { "Seconds elapsed", "bootp.secs", FT_UINT16,
- BASE_DEC, NULL, 0x0,
+ { "Seconds elapsed", "bootp.secs",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }},
{ &hf_bootp_flags,
- { "Bootp flags", "bootp.flags", FT_UINT16,
- BASE_HEX, NULL, 0x0,
+ { "Bootp flags", "bootp.flags",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
NULL, HFILL }},
{ &hf_bootp_flags_broadcast,
- { "Broadcast flag", "bootp.flags.bc", FT_BOOLEAN,
- 16, TFS(&flag_set_broadcast), BOOTP_BC,
+ { "Broadcast flag", "bootp.flags.bc",
+ FT_BOOLEAN, 16, TFS(&flag_set_broadcast), BOOTP_BC,
NULL, HFILL }},
{ &hf_bootp_flags_reserved,
- { "Reserved flags", "bootp.flags.reserved", FT_UINT16,
- BASE_HEX, NULL, BOOTP_MBZ,
+ { "Reserved flags", "bootp.flags.reserved",
+ FT_UINT16, BASE_HEX, NULL, BOOTP_MBZ,
NULL, HFILL }},
{ &hf_bootp_ip_client,
- { "Client IP address", "bootp.ip.client",FT_IPv4,
- BASE_NONE, NULL, 0x0,
+ { "Client IP address", "bootp.ip.client",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_bootp_ip_your,
- { "Your (client) IP address", "bootp.ip.your", FT_IPv4,
- BASE_NONE, NULL, 0x0,
+ { "Your (client) IP address", "bootp.ip.your",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_bootp_ip_server,
- { "Next server IP address", "bootp.ip.server",FT_IPv4,
- BASE_NONE, NULL, 0x0,
+ { "Next server IP address", "bootp.ip.server",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_bootp_ip_relay,
- { "Relay agent IP address", "bootp.ip.relay", FT_IPv4,
- BASE_NONE, NULL, 0x0,
+ { "Relay agent IP address", "bootp.ip.relay",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_bootp_hw_addr,
- { "Client hardware address", "bootp.hw.addr", FT_BYTES,
- BASE_NONE, NULL, 0x0,
+ { "Client hardware address", "bootp.hw.addr",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_bootp_hw_addr_padding,
- { "Client hardware address padding", "bootp.hw.addr_padding", FT_BYTES,
- BASE_NONE, NULL, 0x0,
+ { "Client hardware address padding", "bootp.hw.addr_padding",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_bootp_hw_ether_addr,
- { "Client MAC address", "bootp.hw.mac_addr", FT_ETHER,
- BASE_NONE, NULL, 0x0,
+ { "Client MAC address", "bootp.hw.mac_addr",
+ FT_ETHER, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_bootp_server,
- { "Server host name", "bootp.server", FT_STRING,
- BASE_NONE, NULL, 0x0,
+ { "Server host name", "bootp.server",
+ FT_STRING, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_bootp_file,
- { "Boot file name", "bootp.file", FT_STRING,
- BASE_NONE, NULL, 0x0,
+ { "Boot file name", "bootp.file",
+ FT_STRING, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_bootp_cookie,
- { "Magic cookie", "bootp.cookie", FT_IPv4,
- BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_bootp_vendor,
- { "Bootp Vendor Options", "bootp.vendor", FT_BYTES,
- BASE_NONE, NULL, 0x0,
+ { "Magic cookie", "bootp.cookie",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_bootp_fqdn_s,
- { "Server", "bootp.fqdn.s", FT_BOOLEAN,
- 8, TFS(&tfs_fqdn_s), F_FQDN_S,
+ { "Server", "bootp.fqdn.s",
+ FT_BOOLEAN, 8, TFS(&tfs_fqdn_s), F_FQDN_S,
"If true, server should do DDNS update", HFILL }},
{ &hf_bootp_fqdn_o,
- { "Server overrides", "bootp.fqdn.o", FT_BOOLEAN,
- 8, TFS(&tfs_fqdn_o), F_FQDN_O,
+ { "Server overrides", "bootp.fqdn.o",
+ FT_BOOLEAN, 8, TFS(&tfs_fqdn_o), F_FQDN_O,
"If true, server insists on doing DDNS update", HFILL }},
{ &hf_bootp_fqdn_e,
- { "Encoding", "bootp.fqdn.e", FT_BOOLEAN,
- 8, TFS(&tfs_fqdn_e), F_FQDN_E,
+ { "Encoding", "bootp.fqdn.e",
+ FT_BOOLEAN, 8, TFS(&tfs_fqdn_e), F_FQDN_E,
"If true, name is binary encoded", HFILL }},
{ &hf_bootp_fqdn_n,
- { "Server DDNS", "bootp.fqdn.n", FT_BOOLEAN,
- 8, TFS(&tfs_fqdn_n), F_FQDN_N,
+ { "Server DDNS", "bootp.fqdn.n",
+ FT_BOOLEAN, 8, TFS(&tfs_fqdn_n), F_FQDN_N,
"If true, server should not do any DDNS updates", HFILL }},
{ &hf_bootp_fqdn_mbz,
- { "Reserved flags", "bootp.fqdn.mbz",FT_UINT8,
- BASE_HEX, NULL, F_FQDN_MBZ,
+ { "Reserved flags", "bootp.fqdn.mbz",
+ FT_UINT8, BASE_HEX, NULL, F_FQDN_MBZ,
NULL, HFILL }},
{ &hf_bootp_fqdn_rcode1,
- { "A-RR result", "bootp.fqdn.rcode1", FT_UINT8,
- BASE_DEC, NULL, 0x0,
+ { "A-RR result", "bootp.fqdn.rcode1",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
"Result code of A-RR update", HFILL }},
{ &hf_bootp_fqdn_rcode2,
- { "PTR-RR result", "bootp.fqdn.rcode2", FT_UINT8,
- BASE_DEC, NULL, 0x0,
+ { "PTR-RR result", "bootp.fqdn.rcode2",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
"Result code of PTR-RR update", HFILL }},
{ &hf_bootp_fqdn_name,
- { "Client name", "bootp.fqdn.name", FT_STRING,
- BASE_NONE, NULL, 0x0,
+ { "Client name", "bootp.fqdn.name",
+ FT_STRING, BASE_NONE, NULL, 0x0,
"Name to register via DDNS", HFILL }},
{ &hf_bootp_fqdn_asciiname,
- { "Client name", "bootp.fqdn.name", FT_STRING,
- BASE_NONE, NULL, 0x0,
+ { "Client name", "bootp.fqdn.name",
+ FT_STRING, BASE_NONE, NULL, 0x0,
"Name to register via DDNS", HFILL }},
{ &hf_bootp_pkt_mta_cap_len,
- { "MTA DC Length", "bootp.vendor.pktc.mta_cap_len", FT_UINT8,
- BASE_DEC, NULL, 0x0,
+ { "MTA DC Length", "bootp.vendor.pktc.mta_cap_len",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
"PacketCable MTA Device Capabilities Length", HFILL }},
{ &hf_bootp_docsis_cm_cap_len,
- { "CM DC Length", "bootp.vendor.docsis.cm_cap_len", FT_UINT8,
- BASE_DEC, NULL, 0x0,
+ { "CM DC Length", "bootp.vendor.docsis.cm_cap_len",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
"DOCSIS Cable Modem Device Capabilities Length", HFILL }},
{ &hf_bootp_docsis_cm_cap_type,
- { "CM DC Type", "bootp.docsis_cm_cap_type", FT_UINT16,
- BASE_DEC, VALS(docsis_cm_cap_type_vals), 0x0,
+ { "CM DC Type", "bootp.docsis_cm_cap_type",
+ FT_UINT16, BASE_DEC, VALS(docsis_cm_cap_type_vals), 0x0,
"Docsis Cable Modem Device Capability type", HFILL }},
{ &hf_bootp_client_identifier_uuid,
- { "Client Identifier (UUID)", "bootp.client_id_uuid", FT_GUID,
- BASE_NONE, NULL, 0x0,
+ { "Client Identifier (UUID)", "bootp.client_id_uuid",
+ FT_GUID, BASE_NONE, NULL, 0x0,
"Client Machine Identifier (UUID)", HFILL }},
{ &hf_bootp_option_type,
- { "Option", "bootp.option.type", FT_UINT8,
- BASE_DEC, NULL, 0x0,
+ { "Option", "bootp.option.type",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
"Bootp/Dhcp option type", HFILL }},
{ &hf_bootp_option_length,
- { "Length", "bootp.option.length", FT_UINT8,
- BASE_DEC, NULL, 0x0,
+ { "Length", "bootp.option.length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
"Bootp/Dhcp option length", HFILL }},
{ &hf_bootp_suboption_length,
- { "Length", "bootp.option.suboption_length", FT_UINT8,
- BASE_DEC, NULL, 0x0,
+ { "Length", "bootp.option.suboption_length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
"Suboption length", HFILL }},
- { &hf_bootp_option_value, { "Value", "bootp.option.value", FT_BYTES, BASE_NONE, NULL, 0x0, "Bootp/Dhcp option value", HFILL }},
- { &hf_bootp_option_value_8, { "Value", "bootp.option.value", FT_UINT8, BASE_DEC, NULL, 0x0, "8-bit Bootp/Dhcp option value", HFILL }},
- { &hf_bootp_option_value_16, { "Value", "bootp.option.value", FT_UINT16, BASE_DEC, NULL, 0x0, "16-bit Bootp/Dhcp option value", HFILL }},
- { &hf_bootp_option_value_u32, { "Value", "bootp.option.value", FT_UINT32, BASE_HEX, NULL, 0x0, "32-bit Bootp/Dhcp option value", HFILL }},
- { &hf_bootp_option_value_i32, { "Value", "bootp.option.value", FT_INT32, BASE_DEC, NULL, 0x0, "32-bit Bootp/Dhcp option value", HFILL }},
- { &hf_bootp_option_value_stringz, { "Value", "bootp.option.value", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Z-String Bootp/Dhcp option value", HFILL }},
- { &hf_bootp_option_value_ip_address, { "Value", "bootp.option.value", FT_IPv4, BASE_NONE, NULL, 0x00, "IP address Bootp/Dhcp option value", HFILL }},
- { &hf_bootp_option_value_boolean, { "Value", "bootp.option.value", FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, "Boolean Bootp/Dhcp option value", HFILL }},
- { &hf_bootp_option_padding, { "Padding", "bootp.option.padding", FT_BYTES, BASE_NONE, NULL, 0x0, "Option 0: Padding", HFILL }},
- { &hf_bootp_option_subnet_mask, { "Subnet Mask", "bootp.option.subnet_mask", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 1: Subnet Mask", HFILL }},
- { &hf_bootp_option_time_offset, { "Time Offset", "bootp.option.time_offset", FT_INT32, BASE_DEC, NULL, 0x00, "Option 2: Time Offset", HFILL }},
- { &hf_bootp_option_router, { "Router", "bootp.option.router", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 3: Router", HFILL }},
- { &hf_bootp_option_time_server, { "Time Server", "bootp.option.time_server", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 4: Time Server", HFILL }},
- { &hf_bootp_option_name_server, { "Name Server", "bootp.option.name_server", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 5: Name Server", HFILL }},
- { &hf_bootp_option_domain_name_server, { "Domain Name Server", "bootp.option.domain_name_server", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 6: Domain Name Server", HFILL }},
- { &hf_bootp_option_log_server, { "Log Server", "bootp.option.log_server", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 7: Log Server", HFILL }},
- { &hf_bootp_option_quotes_server, { "Quotes Server", "bootp.option.quotes_server", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 8: Quotes Server", HFILL }},
- { &hf_bootp_option_lpr_server, { "LPR Server", "bootp.option.lpr_server", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 9: LPR Server", HFILL }},
- { &hf_bootp_option_impress_server, { "Impress Server", "bootp.option.impress_server", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 10: Impress Server", HFILL }},
- { &hf_bootp_option_resource_location_server, { "Resource Location Server", "bootp.option.resource_location_server", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 11: Resource Location Server", HFILL }},
- { &hf_bootp_option_hostname, { "Host Name", "bootp.option.hostname", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 12: Host Name", HFILL }},
- { &hf_bootp_option_boot_file_size, { "Boot File Size", "bootp.option.boot_file_size", FT_UINT16, BASE_DEC, NULL, 0x0, "Option 13: Boot File Size", HFILL }},
- { &hf_bootp_option_merit_dump_file, { "Merit Dump File", "bootp.option.merit_dump_file", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 14: Merit Dump File", HFILL }},
- { &hf_bootp_option_domain_name, { "Domain Name", "bootp.option.domain_name", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 15: Domain Name", HFILL }},
- { &hf_bootp_option_swap_server, { "Swap Server", "bootp.option.swap_server", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 16: Swap Server", HFILL }},
- { &hf_bootp_option_root_path, { "Root Path", "bootp.option.root_path", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 17: Root Path", HFILL }},
- { &hf_bootp_option_extension_path, { "Extensions Path", "bootp.option.extension_path", FT_STRINGZ, BASE_NONE, NULL, 0x0,"Option 18: Extensions Path", HFILL }},
- { &hf_bootp_option_ip_forwarding, { "IP Forwarding", "bootp.option.ip_forwarding", FT_BOOLEAN, BASE_NONE, TFS(&tfs_enabled_disabled), 0x00, "Option 19: IP Forwarding", HFILL }},
- { &hf_bootp_option_policy_filter_ip, { "IP Address", "bootp.option.policy_filter.ip", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 21: IP address", HFILL }},
- { &hf_bootp_option_policy_filter_subnet_mask, { "Subnet Mask", "bootp.option.policy_filter.subnet_mask", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 21: Subnet Mask", HFILL }},
- { &hf_bootp_option_non_local_source_routing, { "Non-Local Source Routing", "bootp.option.non_local_source_routing", FT_BOOLEAN, BASE_NONE, TFS(&tfs_enabled_disabled), 0x00, "Option 20: Non-Local Source Routing", HFILL }},
- { &hf_bootp_option_max_datagram_reassembly_size, { "Maximum Datagram Reassembly Size", "bootp.option.max_datagram_reassembly_size", FT_UINT16, BASE_DEC, NULL, 0x0, "Option 22: Maximum Datagram Reassembly Size", HFILL }},
- { &hf_bootp_option_default_ip_ttl, { "Default IP Time-to-Live", "bootp.option.default_ip_ttl", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 23: Default IP Time-to-Live", HFILL }},
- { &hf_bootp_option_path_mtu_aging_timeout, { "Path MTU Aging Timeout", "bootp.option.path_mtu_aging_timeout", FT_UINT32, BASE_DEC, NULL, 0x00, "Option 24: Path MTU Aging Timeout", HFILL }},
- { &hf_bootp_option_path_mtu_plateau_table_item, { "Path MTU Plateau Table Item", "bootp.option.path_mtu_plateau_table_item", FT_UINT16, BASE_DEC, NULL, 0x0, "Option 25: Path MTU Plateau Table Item", HFILL }},
- { &hf_bootp_option_interface_mtu, { "Interface MTU", "bootp.option.interface_mtu", FT_UINT16, BASE_DEC, NULL, 0x0,"Option 26: Interface MTU", HFILL }},
- { &hf_bootp_option_all_subnets_are_local, { "All Subnets are Local", "bootp.option.all_subnets_are_local", FT_BOOLEAN, BASE_NONE, TFS(&tfs_yes_no), 0x00, "Option 27: All Subnets are Local", HFILL }},
- { &hf_bootp_option_broadcast_address, { "Broadcast Address", "bootp.option.broadcast_address", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 28: Broadcast Address", HFILL }},
- { &hf_bootp_option_perform_mask_discovery, { "Perform Mask Discovery", "bootp.option.perform_mask_discovery", FT_BOOLEAN, BASE_NONE, TFS(&tfs_enabled_disabled), 0x00, "Option 29: Perform Mask Discovery", HFILL }},
- { &hf_bootp_option_mask_supplier, { "Mask Supplier", "bootp.option.mask_supplier", FT_BOOLEAN, BASE_NONE, TFS(&tfs_yes_no), 0x00, "Option 30: Mask Supplier", HFILL }},
- { &hf_bootp_option_perform_router_discover, { "Perform Router Discover", "bootp.option.perform_router_discover", FT_BOOLEAN, BASE_NONE, TFS(&tfs_enabled_disabled), 0x00, "Option 31: Perform Router Discover", HFILL }},
- { &hf_bootp_option_router_solicitation_address, { "Router Solicitation Address", "bootp.option.router_solicitation_address", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 32: Router Solicitation Address", HFILL }},
- { &hf_bootp_option_static_route_ip, { "Destination IP Address", "bootp.option.static_route.ip", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 33: Destination IP address", HFILL }},
- { &hf_bootp_option_static_route_router, { "Destination Router", "bootp.option.static_route.router", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 33: Destination Router", HFILL }},
- { &hf_bootp_option_trailer_encapsulation, { "Trailer Encapsulation", "bootp.option.trailer_encapsulation", FT_BOOLEAN, BASE_NONE, TFS(&tfs_enabled_disabled), 0x00, "Option 34: Trailer Encapsulation", HFILL }},
- { &hf_bootp_option_arp_cache_timeout, { "ARP Cache Timeout", "bootp.option.arp_cache_timeout", FT_UINT32, BASE_DEC, NULL, 0x00, "Option 35: ARP Cache Timeout", HFILL }},
- { &hf_bootp_option_ethernet_encapsulation, { "Ethernet Encapsulation", "bootp.option.ethernet_encapsulation", FT_BOOLEAN, BASE_NONE, TFS(&tfs_enabled_disabled), 0x00, "Option 36: Ethernet Encapsulation", HFILL }},
- { &hf_bootp_option_tcp_default_ttl, { "TCP Default TTL", "bootp.option.tcp_default_ttl", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 37: TCP Default TTL", HFILL }},
- { &hf_bootp_option_tcp_keepalive_interval, { "TCP Keepalive Interval", "bootp.option.tcp_keepalive_interval", FT_UINT32, BASE_DEC, NULL, 0x00, "Option 38: TCP Keepalive Interval", HFILL }},
- { &hf_bootp_option_tcp_keepalive_garbage, { "TCP Keepalive Garbage", "bootp.option.tcp_keepalive_garbage", FT_BOOLEAN, BASE_NONE, TFS(&tfs_enabled_disabled), 0x00, "Option 39: TCP Keepalive Garbage", HFILL }},
- { &hf_bootp_option_nis_domain, { "Network Information Service Domain", "bootp.option.nis_domain", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 40: Network Information Service Domain", HFILL }},
- { &hf_bootp_option_nis_server, { "Network Information Service Server", "bootp.option.nis_server", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 41: Network Information Service Server", HFILL }},
- { &hf_bootp_option_ntp_server, { "Network Time Protocol Server", "bootp.option.ntp_server", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 42: Network Time Protocol Server", HFILL }},
-
- { &hf_bootp_option43_value, { "Value", "bootp.option.vendor.value", FT_BYTES, BASE_NONE, NULL, 0x0, "Option 43: Suboption value", HFILL }},
- { &hf_bootp_option43_value_8, { "Value", "bootp.option.vendor.value", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 43: Suboption 8-bit value", HFILL }},
- { &hf_bootp_option43_value_16, { "Value", "bootp.option.vendor.value", FT_UINT16, BASE_DEC, NULL, 0x0, "Option 43: Suboption 16-bit value", HFILL }},
- { &hf_bootp_option43_value_32, { "Value", "bootp.option.vendor.value", FT_UINT32, BASE_DEC, NULL, 0x0, "Option 43: Suboption 32-bit value", HFILL }},
- { &hf_bootp_option43_value_stringz, { "Value", "bootp.option.vendor.value", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 43: Suboption Z-String value", HFILL }},
- { &hf_bootp_option43_value_ip_address, { "Value", "bootp.option.vendor.value", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 43: Suboption IP address", HFILL }},
-
- { &hf_bootp_option43_pxeclient_suboption, { "Option 43 Suboption", "bootp.option.vendor.pxeclient.suboption", FT_UINT8, BASE_DEC, VALS(option43_pxeclient_suboption_vals), 0x0, "Option 43:PXE Client Suboption", HFILL }},
- { &hf_bootp_option43_pxeclient_padding, { "Padding", "bootp.option.vendor.pxeclient.padding", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 43:PXE Client 0 Padding", HFILL }},
- { &hf_bootp_option43_pxeclient_mtftp_ip, { "mtftp IP", "bootp.option.vendor.pxeclient.mtftp_ip", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 43:PXE Client 1 mtftp IP", HFILL }},
- { &hf_bootp_option43_pxeclient_mtftp_client_port, { "mtftp IP", "bootp.option.vendor.pxeclient.mtftp_client_port", FT_UINT16, BASE_DEC, NULL, 0x00, "Option 43:PXE Client 2 mtftp client port", HFILL }},
- { &hf_bootp_option43_pxeclient_mtftp_server_port, { "mtftp IP", "bootp.option.vendor.pxeclient.mtftp_server_port", FT_UINT16, BASE_DEC, NULL, 0x00, "Option 43:PXE Client 3 mtftp server port", HFILL }},
- { &hf_bootp_option43_pxeclient_mtftp_timeout, { "mtftp timeout", "bootp.option.vendor.pxeclient.mtftp_timeout", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 43:PXE Client 4 mtftp timeout", HFILL }},
- { &hf_bootp_option43_pxeclient_mtftp_delay, { "mtftp delay", "bootp.option.vendor.pxeclient.mtftp_delay", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 43:PXE Client 5 mtftp delay", HFILL }},
- { &hf_bootp_option43_pxeclient_discovery_control, { "discovery control", "bootp.option.vendor.pxeclient.discovery_control", FT_UINT8, BASE_HEX, NULL, 0x0, "Option 43:PXE Client 6 discovery control", HFILL }},
- { &hf_bootp_option43_pxeclient_multicast_address, { "multicast address", "bootp.option.vendor.pxeclient.multicast_address", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 43:PXE Client 7 multicast address", HFILL }},
- { &hf_bootp_option43_pxeclient_boot_servers, { "boot servers", "bootp.option.vendor.pxeclient.boot_servers", FT_BYTES, BASE_NONE, NULL, 0x0, "Option 43:PXE Client 8 boot servers", HFILL }},
- { &hf_bootp_option43_pxeclient_boot_menu, { "boot menu", "bootp.option.vendor.pxeclient.boot_menu", FT_BYTES, BASE_NONE, NULL, 0x0, "Option 43:PXE Client 9 boot menu", HFILL }},
- { &hf_bootp_option43_pxeclient_menu_prompt, { "menu prompt", "bootp.option.vendor.pxeclient.menu_prompt", FT_BYTES, BASE_NONE, NULL, 0x0, "Option 43:PXE Client 10 menu prompt", HFILL }},
- { &hf_bootp_option43_pxeclient_multicast_address_alloc, { "multicast address alloc", "bootp.option.vendor.pxeclient.multicast_address_alloc", FT_BYTES, BASE_NONE, NULL, 0x0, "Option 43:PXE Client 11 multicast address alloc", HFILL }},
- { &hf_bootp_option43_pxeclient_credential_types, { "credential types", "bootp.option.vendor.pxeclient.credential_types", FT_BYTES, BASE_NONE, NULL, 0x0, "Option 43:PXE Client 12 credential types", HFILL }},
- { &hf_bootp_option43_pxeclient_boot_item, { "boot item", "bootp.option.vendor.pxeclient.boot_item", FT_BYTES, BASE_NONE, NULL, 0x0, "Option 43:PXE Client 71 boot item", HFILL }},
- { &hf_bootp_option43_pxeclient_end, { "PXE Client End", "bootp.option.vendor.pxeclient.end", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 43:PXE Client 255 End", HFILL }},
-
-
- { &hf_bootp_option43_cl_suboption, { "Option 43 Suboption", "bootp.option.vendor.cl.suboption", FT_UINT8, BASE_DEC, VALS(option43_cl_suboption_vals), 0x0, "Option 43:CL Suboption", HFILL }},
- { &hf_bootp_option43_cl_padding, { "Padding", "bootp.option.vendor.cl.padding", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 43:CL 0 Padding", HFILL }},
- { &hf_bootp_option43_cl_suboption_request_list, { "Suboption Request List", "bootp.option.vendor.cl.suboption_request_list", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 43:CL 1 Suboption Request List", HFILL }},
- { &hf_bootp_option43_cl_device_type, { "Device Type", "bootp.option.vendor.cl.device_type", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 43:CL 2 Device Type", HFILL }},
- { &hf_bootp_option43_cl_esafe_type, { "eSAFE Types", "bootp.option.vendor.cl.esafe_type", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 43:CL 3 eSAFE Types", HFILL }},
- { &hf_bootp_option43_cl_serial_number, { "Serial Number", "bootp.option.vendor.cl.serial_number", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 43:CL 4 Serial Number", HFILL }},
- { &hf_bootp_option43_cl_hardware_version, { "Hardware Version", "bootp.option.vendor.cl.hardware_version", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 43:CL 5 Hardware Version", HFILL }},
- { &hf_bootp_option43_cl_software_version, { "Software Version", "bootp.option.vendor.cl.software_version", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 43:CL 6 Software Version", HFILL }},
- { &hf_bootp_option43_cl_boot_rom_version, { "Boot ROM version", "bootp.option.vendor.cl.boot_rom_version", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 43:CL 7 Boot ROM version", HFILL }},
- { &hf_bootp_option43_cl_oui_string, { "Organizationally Unique Identifier", "bootp.option.vendor.cl.oui_string", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 43:CL 8 Organizationally Unique Identifier", HFILL }},
- { &hf_bootp_option43_cl_oui_bytes, { "Organizationally Unique Identifier", "bootp.option.vendor.cl.oui_string", FT_BYTES, BASE_NONE, NULL, 0x0, "Option 43:CL 8 Organizationally Unique Identifier", HFILL }},
- { &hf_bootp_option43_cl_model_number, { "Model Number", "bootp.option.vendor.cl.model_number", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 43:CL 9 Model Number", HFILL }},
- { &hf_bootp_option43_cl_vendor_name10, { "Vendor Name", "bootp.option.vendor.cl.vendor_name10", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 43:CL 10 Vendor Name", HFILL }},
- { &hf_bootp_option43_cl_address_realm, { "Address Realm", "bootp.option.vendor.cl.address_realm", FT_UINT8, BASE_DEC, VALS(cablehome_subopt11_vals), 0x0, "Option 43:CL 11 Address Realm", HFILL }},
- { &hf_bootp_option43_cl_cm_ps_system_desc, { "CM/PS System Description", "bootp.option.vendor.cl.cm_ps_system_desc", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 43:CL 12 CM/PS System Description", HFILL }},
- { &hf_bootp_option43_cl_cm_ps_firmware_revision, { "CM/PS Firmware Revision", "bootp.option.vendor.cl.cm_ps_firmware_revision", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 43:CL 13 CM/PS Firmware Revision", HFILL }},
- { &hf_bootp_option43_cl_firewall_policy_file_version, { "Firewall Policy File Version", "bootp.option.vendor.cl.firewall_policy_file_version", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 43:CL 14 Firewall Policy File Version", HFILL }},
- { &hf_bootp_option43_cl_esafe_config_file_devices, { "eSafe Config File Devices", "bootp.option.vendor.cl.esafe_config_file_devices", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 43:CL 15 eSafe Config File Devices", HFILL }},
- { &hf_bootp_option43_cl_video_security_tape, { "Video Security Type", "bootp.option.vendor.cl.video_security_tape", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 43:CL 18 Video Security Type", HFILL }},
- { &hf_bootp_option43_cl_mta_mac_address, { "MTA MAC Address", "bootp.option.vendor.cl.mta_mac_address", FT_ETHER, BASE_NONE, NULL, 0x0, "Option 43:CL 31 MTA MAC Address", HFILL }},
- { &hf_bootp_option43_cl_correlation_ID, { "Correlation ID", "bootp.option.vendor.cl.correlation_ID", FT_UINT32, BASE_DEC, NULL, 0x0, "Option 43: CL 32 Correlation ID", HFILL }},
- { &hf_bootp_option43_cl_vendor_name51, { "Vendor Name", "bootp.option.vendor.cl.vendor_name51", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 43:CL 51 Vendor Name", HFILL }},
- { &hf_bootp_option43_cl_cablecard_capability, { "CableCARD Capability", "bootp.option.vendor.cl.cablecard_capability", FT_BYTES, BASE_NONE, NULL, 0x0, "Option 43:CL 52 CableCARD Capability", HFILL }},
- { &hf_bootp_option43_cl_device_id_ca, { "Device Identification (CA)", "bootp.option.vendor.cl.device_id_ca", FT_BYTES, BASE_NONE, NULL, 0x0, "Option 43:CL 53 Device Identification (CA)", HFILL }},
- { &hf_bootp_option43_cl_device_id_x509, { "Device Identification (X.509)", "bootp.option.vendor.cl.device_id_x509", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 43:CL 54 Device Identification (X.509)", HFILL }},
- { &hf_bootp_option43_cl_end, { "CL End", "bootp.option.vendor.cl.end", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 43:CL 255 End", HFILL }},
-
- { &hf_bootp_option43_alcatel_suboption, { "Option 43 Suboption", "bootp.option.vendor.alu.suboption", FT_UINT8, BASE_DEC, VALS(option43_alcatel_suboption_vals), 0x0, "Option 43:Alcatel Suboption", HFILL }},
- { &hf_bootp_option43_alcatel_padding, { "Padding", "bootp.option.vendor.alu.padding", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 43:Alcatel 0 Padding", HFILL }},
- { &hf_bootp_option43_alcatel_vlan_id, { "Voice VLAN ID", "bootp.option.vendor.alu.vid", FT_UINT16, BASE_DEC, NULL, 0x0, "Option 43:Alcatel 58 Voice VLAN ID", HFILL }},
- { &hf_bootp_option43_alcatel_tftp1, { "Spatial Redundancy TFTP1", "bootp.option.vendor.alu.tftp1", FT_IPv4, BASE_NONE, NULL, 0x0, "Option 43:Alcatel 64 Spatial Redundancy TFTP1", HFILL }},
- { &hf_bootp_option43_alcatel_tftp2, { "Spatial Redundancy TFTP2", "bootp.option.vendor.alu.tftp2", FT_IPv4, BASE_NONE, NULL, 0x0, "Option 43:Alcatel 65 Spatial Redundancy TFTP2", HFILL }},
- { &hf_bootp_option43_alcatel_app_type, { "Application Type", "bootp.option.vendor.alu.app_type", FT_UINT8, BASE_DEC, VALS(option43_alcatel_app_type_vals), 0x0, "Option 43:Alcatel 66 Application Type", HFILL }},
- { &hf_bootp_option43_alcatel_sip_url, { "SIP URL", "bootp.option.vendor.alu.sip_url", FT_STRING, BASE_NONE, NULL, 0x0, "Option 43:Alcatel 67 SIP URL", HFILL }},
- { &hf_bootp_option43_alcatel_end, { "Alcatel End", "bootp.option.vendor.alu.end", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 43:Alcatel 255 End", HFILL }},
-
- { &hf_bootp_option_netbios_over_tcpip_name_server, { "NetBIOS over TCP/IP Name Server", "bootp.option.netbios_over_tcpip_name_server", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 44: NetBIOS over TCP/IP Name Server", HFILL }},
- { &hf_bootp_option_netbios_over_tcpip_dd_name_server, { "NetBIOS over TCP/IP Datagram Distribution Name Server", "bootp.option.netbios_over_tcpip_dd_name_server", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 45: NetBIOS over TCP/IP Datagram Distribution Name Server", HFILL }},
- { &hf_bootp_option_netbios_over_tcpip_node_type, { "NetBIOS over TCP/IP Node Type", "bootp.option.netbios_over_tcpip_node_type", FT_UINT8, BASE_DEC, VALS(bootp_nbnt_vals), 0x0, "Option 46: NetBIOS over TCP/IP Node Type", HFILL }},
- { &hf_bootp_option_netbios_over_tcpip_scope, { "NetBIOS over TCP/IP Scope", "bootp.option.netbios_over_tcpip_scope", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 47: NetBIOS over TCP/IP Scope", HFILL }},
- { &hf_bootp_option_xwindows_system_font_server, { "X Window System Font Server", "bootp.option.xwindows_system_font_server", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 48: X Window System Font Server", HFILL }},
- { &hf_bootp_option_xwindows_system_display_manager, { "X Window System Display Manager", "bootp.option.xwindows_system_display_manager", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 49: X Window System Display Manager", HFILL }},
- { &hf_bootp_option_requested_ip_address, { "Requested IP Address", "bootp.option.requested_ip_address", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 50: Requested IP Address", HFILL }},
- { &hf_bootp_option_ip_address_lease_time, { "IP Address Lease Time", "bootp.option.ip_address_lease_time", FT_UINT32, BASE_DEC, NULL, 0x00, "Option 51: IP Address Lease Time", HFILL }},
- { &hf_bootp_option_option_overload, { "Option Overload", "bootp.option.option_overload", FT_UINT8, BASE_DEC, VALS(opt_overload_vals), 0x0, "Option 52: Option Overload", HFILL }},
- { &hf_bootp_option_dhcp, { "DHCP", "bootp.option.dhcp", FT_UINT8, BASE_DEC, VALS(opt53_text), 0x0, "Option 53: DHCP option", HFILL }},
- { &hf_bootp_option_dhcp_server_id, { "DHCP Server Identifier", "bootp.option.dhcp_server_id", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 54: DHCP Server Identifier", HFILL }},
- { &hf_bootp_option_parameter_request_list_item, { "Parameter Request List Item", "bootp.option.request_list_item", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 55: Parameter Request List Item", HFILL }},
- { &hf_bootp_option_message, { "Message", "bootp.option.message", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 56: Option message", HFILL }},
- { &hf_bootp_option_dhcp_max_message_size, { "Maximum DHCP Message Size", "bootp.option.dhcp_max_message_size", FT_UINT16, BASE_DEC, NULL, 0x0, "Option 57: Maximum DHCP Message Size", HFILL }},
- { &hf_bootp_option_renewal_time_value, { "Renewal Time Value", "bootp.option.renewal_time_value", FT_UINT32, BASE_DEC, NULL, 0x00, "Option 58: Renewal Time Value", HFILL }},
- { &hf_bootp_option_rebinding_time_value, { "Rebinding Time Value", "bootp.option.rebinding_time_value", FT_UINT32, BASE_DEC, NULL, 0x00, "Option 59: Rebinding Time Value", HFILL }},
- { &hf_bootp_option_vendor_class_id, { "Vendor class identifier", "bootp.option.vendor_class_id", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 60: Vendor class identifier", HFILL }},
- { &hf_bootp_option_novell_netware_ip_domain, { "Novell/Netware IP domain", "bootp.option.novell_netware_ip_domain", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 62: Novell/Netware IP domain", HFILL }},
-
- { &hf_bootp_option63_suboption, { "Option 63 Suboption", "bootp.option.novell_options.suboption", FT_UINT8, BASE_DEC, VALS(option63_suboption_vals), 0x0, "Option 63: Suboption", HFILL }},
- { &hf_bootp_option63_value, { "Value", "bootp.option.novell_options.value", FT_BYTES, BASE_NONE, NULL, 0x0, "Option 63: Suboption value", HFILL }},
- { &hf_bootp_option63_value_8, { "Value", "bootp.option.novell_options.value", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 63: Suboption 8-bit value", HFILL }},
- { &hf_bootp_option63_value_ip_address, { "Value", "bootp.option.novell_options.value", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 63: Suboption IP address", HFILL }},
- { &hf_bootp_option63_value_boolean, { "Value", "bootp.option.novell_options.value", FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, "Option 63: Suboption Boolean value", HFILL }},
- { &hf_bootp_option63_broadcast, { "Broadcast for nearest Netware server", "bootp.option.novell_options.broadcast", FT_BOOLEAN, BASE_NONE, TFS(&tfs_yes_no), 0x00, "Option 63:5 Broadcast for nearest Netware server", HFILL }},
- { &hf_bootp_option63_preferred_dss_server, { "Preferred DSS server", "bootp.option.novell_options.preferred_dss_server", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 63:6 Preferred DSS server", HFILL }},
- { &hf_bootp_option63_nearest_nwip_server, { "Nearest NWIP server", "bootp.option.novell_options.nearest_nwip_server", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 63:7 Nearest NWIP server", HFILL }},
- { &hf_bootp_option63_autoretries, { "Autoretries", "bootp.option.novell_options.autoretries", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 63:8 Autoretries", HFILL }},
- { &hf_bootp_option63_autoretry_delay, { "Autoretry delay, sec", "bootp.option.novell_options.autoretry_delay", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 63:9 Autoretry delay, sec", HFILL }},
- { &hf_bootp_option63_support_netware_v1_1, { "Broadcast for nearest Netware server", "bootp.option.novell_options.support_netware_v1_1", FT_BOOLEAN, BASE_NONE, TFS(&tfs_yes_no), 0x00, "Option 63:10 Broadcast for nearest Netware server", HFILL }},
- { &hf_bootp_option63_primary_dss, { "Primary DSS", "bootp.option.novell_options.primary_dss", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 63:11 Primary DSS", HFILL }},
-
- { &hf_bootp_option_nis_plus_domain, { "Network Information Service+ Domain", "bootp.option.nis_plus_domain", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 64: Network Information Service+ Domain", HFILL }},
- { &hf_bootp_option_nis_plus_server, { "Network Information Service+ Server", "bootp.option.nis_plus_server", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 65: Network Information Service+ Server", HFILL }},
- { &hf_bootp_option_tftp_server_name, { "TFTP Server Name", "bootp.option.tftp_server_name", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 66: TFTP Server Name", HFILL }},
- { &hf_bootp_option_bootfile_name, { "Bootfile name", "bootp.option.bootfile_name", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 67: Bootfile name", HFILL }},
- { &hf_bootp_option_mobile_ip_home_agent, { "Mobile IP Home Agent", "bootp.option.mobile_ip_home_agent", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 68: Mobile IP Home Agent", HFILL }},
- { &hf_bootp_option_smtp_server, { "SMTP Server", "bootp.option.smtp_server", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 69: SMTP Server", HFILL }},
- { &hf_bootp_option_pop3_server, { "POP3 Server", "bootp.option.pop3_server", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 70: POP3 Server", HFILL }},
- { &hf_bootp_option_nntp_server, { "NNTP Server", "bootp.option.nntp_server", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 71: NNTP Server", HFILL }},
- { &hf_bootp_option_default_www_server, { "Default WWW Server", "bootp.option.default_www_server", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 72: Default WWW Server", HFILL }},
- { &hf_bootp_option_default_finger_server, { "Default Finger Server", "bootp.option.default_finger_server", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 73: Default Finger Server", HFILL }},
- { &hf_bootp_option_default_irc_server, { "Default IRC Server", "bootp.option.default_irc_server", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 74: Default IRC Server", HFILL }},
- { &hf_bootp_option_streettalk_server, { "StreetTalk Server", "bootp.option.streettalk_server", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 75: StreetTalk Server", HFILL }},
- { &hf_bootp_option_streettalk_da_server, { "StreetTalk Directory Assistance Server", "bootp.option.streettalk_da_server", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 76: StreetTalk Directory Assistance Server", HFILL }},
- { &hf_bootp_option_slp_directory_agent_value, { "Value", "bootp.option.slp_directory_agent.value", FT_UINT8, BASE_DEC, VALS(slpda_vals), 0x0, "Option 78: SLPDA Value", HFILL }},
- { &hf_bootp_option_slp_directory_agent_slpda_address, { "IP Address", "bootp.option.slp_directory_agent.slpda_address", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 78: SLPDA Address", HFILL }},
- { &hf_bootp_option_slp_service_scope_value, { "Value", "bootp.option.slp_service_scope.value", FT_UINT8, BASE_DEC, VALS(slp_scope_vals), 0x0, "Option 79: SLP Service Scope Value", HFILL }},
- { &hf_bootp_option_slp_service_scope_string, { "SLP Service Scope", "bootp.option.slp_service_scope.string", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 79: SLP Service Scope", HFILL }},
-
- { &hf_bootp_option82_suboption, { "Option 82 Suboption", "bootp.option.agent_information_option.suboption", FT_UINT8, BASE_DEC, VALS(option82_suboption_vals), 0x0, "Option 82: Suboption", HFILL }},
- { &hf_bootp_option82_value, { "Value", "bootp.option.agent_information_option.value", FT_BYTES, BASE_NONE, NULL, 0x0, "Option 82: Suboption value", HFILL }},
- { &hf_bootp_option82_value_8, { "Value", "bootp.option.agent_information_option.value", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 82: Suboption 8-bit value", HFILL }},
- { &hf_bootp_option82_value_32, { "Value", "bootp.option.agent_information_option.value", FT_UINT32, BASE_DEC, NULL, 0x0, "Option 82: Suboption 32-bit value", HFILL }},
- { &hf_bootp_option82_value_ip_address, { "Value", "bootp.option.agent_information_option.value", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 82: Suboption IP address", HFILL }},
- { &hf_bootp_option82_value_stringz, { "Value", "bootp.option.agent_information_option.value", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 82: Suboption Z-String value", HFILL }},
- { &hf_bootp_option82_padding, { "Padding", "bootp.option.agent_information_option.padding", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 82:0 Padding", HFILL }},
- { &hf_bootp_option82_agent_circuit_id, { "Agent Circuit ID", "bootp.option.agent_information_option.agent_circuit_id", FT_BYTES, BASE_NONE, NULL, 0x0, "Option 82:1 Agent Circuit ID", HFILL }},
- { &hf_bootp_option82_agent_remote_id, { "Agent Remote ID", "bootp.option.agent_information_option.agent_remote_id", FT_BYTES, BASE_NONE, NULL, 0x0, "Option 82:2 Agent Remote ID", HFILL }},
- { &hf_bootp_option82_reserved, { "Reserved", "bootp.option.agent_information_option.reserved", FT_BYTES, BASE_NONE, NULL, 0x0, "Option 82:3 Reserved", HFILL }},
- { &hf_bootp_option82_docsis_device_class, { "DOCSIS Device Class", "bootp.option.agent_information_option.docsis_device_class", FT_UINT32, BASE_HEX, NULL, 0x0, "Option 82:4 DOCSIS Device Class", HFILL }},
- { &hf_bootp_option82_link_selection, { "Link selection", "bootp.option.agent_information_option.link_selection", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 82:5 Link selection", HFILL }},
- { &hf_bootp_option82_subscriber_id, { "Subscriber ID", "bootp.option.agent_information_option.subscriber_id", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 82:6 Subscriber ID", HFILL }},
- { &hf_bootp_option82_radius_attributes, { "RADIUS Attributes", "bootp.option.agent_information_option.radius_attributes", FT_BYTES, BASE_NONE, NULL, 0x0, "Option 82:7 RADIUS Attributes", HFILL }},
- { &hf_bootp_option82_authentication, { "Authentication", "bootp.option.agent_information_option.authentication", FT_BYTES, BASE_NONE, NULL, 0x0, "Option 82:8 Authentication", HFILL }},
- { &hf_bootp_option82_vi, { "Vendor-Specific Information", "bootp.option.agent_information_option.vi", FT_BYTES, BASE_NONE, NULL, 0x0, "Option 82:9 Vendor-Specific Information", HFILL }},
- { &hf_bootp_option82_vi_enterprise, { "Enterprise", "bootp.option.agent_information_option.vi.enterprise", FT_UINT32, BASE_DEC|BASE_EXT_STRING, &sminmpec_values_ext, 0x0, "Option 82:9 VI Enterprise", HFILL }},
- { &hf_bootp_option82_vi_data_length, { "Data Length", "bootp.option.agent_information_option.vi.data_length", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 82:9 VI Data Length", HFILL }},
- { &hf_bootp_option82_vi_cl_option, { "Option", "bootp.option.agent_information_option.vi.cl.option", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 82:9 VI CL Option", HFILL }},
- { &hf_bootp_option82_vi_cl_length, { "Length", "bootp.option.agent_information_option.vi.cl.length", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 82:9 VI CL Length", HFILL }},
- { &hf_bootp_option82_vi_cl_tag, { "Tag", "bootp.option.agent_information_option.vi.cl.tag", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 82:9 VI CL Tag", HFILL }},
- { &hf_bootp_option82_vi_cl_tag_length, { "Tag Length", "bootp.option.agent_information_option.vi.cl.tag_length", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 82:9 VI CL Tag Length", HFILL }},
- { &hf_bootp_option82_vi_cl_docsis_version, { "DOCSIS Version Number", "bootp.option.agent_information_option.vi.cl.docsis_version", FT_UINT16, BASE_HEX, NULL, 0x0, "Option 82:9 VI CL DOCSIS Version Number", HFILL }},
- { &hf_bootp_option82_flags, { "Flags", "bootp.option.agent_information_option.flags", FT_UINT8, BASE_HEX, NULL, 0x0, "Option 82:10 Flags", HFILL }},
- { &hf_bootp_option82_server_id_override, { "Server ID Override", "bootp.option.agent_information_option.server_id_override", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 82:11 Server ID Override", HFILL }},
-
- { &hf_bootp_option_novell_dss_string, { "Novell Directory Services Servers String", "bootp.option.novell_dss.string", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 85: Novell Directory Services Servers String", HFILL }},
- { &hf_bootp_option_novell_dss_ip, { "IP Address", "bootp.option.novell_dss.ip", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 85: Novell Directory Services Servers IP Address", HFILL }},
- { &hf_bootp_option_novell_ds_tree_name, { "Novell Directory Services Tree Name", "bootp.option.novell_ds_tree_name", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 86: Novell Directory Services Tree Name", HFILL }},
- { &hf_bootp_option_novell_ds_context, { "Novell Directory Services Context", "bootp.option.novell_ds_context", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 87: Novell Directory Services Context", HFILL }},
- { &hf_bootp_option_dhcp_authentication_protocol, { "Protocol", "bootp.option.dhcp_authentication.protocol", FT_UINT8, BASE_DEC, VALS(authen_protocol_vals), 0x0, "Option 90: Authentication Protocol", HFILL }},
- { &hf_bootp_option_dhcp_authentication_alg_delay, { "Delay Algorithm", "bootp.option.dhcp_authentication.alg_delay", FT_UINT8, BASE_DEC, VALS(authen_da_algo_vals), 0x0, "Option 90: Delayed Authentication Algorithm", HFILL }},
- { &hf_bootp_option_dhcp_authentication_algorithm, { "Algorithm", "bootp.option.dhcp_authentication.algorithm", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 90: Authentication Algorithm", HFILL }},
- { &hf_bootp_option_dhcp_authentication_rdm, { "Replay Detection Method", "bootp.option.dhcp_authentication.rdm", FT_UINT8, BASE_DEC, VALS(authen_rdm_vals), 0x0, "Option 90: Replay Detection Method", HFILL }},
- { &hf_bootp_option_dhcp_authentication_rdm_replay_detection, { "RDM Replay Detection Value", "bootp.option.dhcp_authentication.rdm_replay_detection", FT_UINT64, BASE_HEX, NULL, 0x0, "Option 90: RDM Replay Detection Value", HFILL }},
- { &hf_bootp_option_dhcp_authentication_rdm_rdv, { "Replay Detection Value", "bootp.option.dhcp_authentication.rdm_rdv", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 90: Replay Detection Value", HFILL }},
- { &hf_bootp_option_dhcp_authentication_secret_id, { "Secret ID", "bootp.option.dhcp_authentication.secret_id", FT_UINT32, BASE_HEX, NULL, 0x0, "Option 90: Secret ID", HFILL }},
- { &hf_bootp_option_dhcp_authentication_hmac_md5_hash, { "HMAC MD5 Hash", "bootp.option.dhcp_authentication.hmac_md5_hash", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 90: HMAC MD5 Hash", HFILL }},
- { &hf_bootp_option_dhcp_authentication_information, { "Authentication Information", "bootp.option.dhcp_authentication.information", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 90: Authentication Information", HFILL }},
- { &hf_bootp_option_client_last_transaction_time, { "Client last transaction time", "bootp.option.client_last_transaction_time", FT_UINT32, BASE_DEC, NULL, 0x00, "Option 91: Client last transaction time", HFILL }},
- { &hf_bootp_option_associated_ip_option, { "Associated IP option", "bootp.option.associated_ip_option", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 92: Associated IP option", HFILL }},
- { &hf_bootp_option_client_system_architecture, { "Client System Architecture", "bootp.option.client_system_architecture", FT_UINT16, BASE_DEC, VALS(bootp_client_arch), 0x0, "Option 93: Client System Architecture", HFILL }},
- { &hf_bootp_option_client_network_id_major_ver, { "Major Version", "bootp.client_network_id_major", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 94: Major Version", HFILL }},
- { &hf_bootp_option_client_network_id_minor_ver, { "Minor Version", "bootp.client_network_id_minor", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 94: Minor Version", HFILL }},
- { &hf_bootp_option_civic_location_what, { "What", "bootp.option.civic_location.what", FT_UINT8, BASE_DEC, VALS(civic_address_what_values), 0x0, "Option 99: What", HFILL }},
- { &hf_bootp_option_civic_location_country, { "Country", "bootp.option.civic_location.country", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 99: Country", HFILL }},
- { &hf_bootp_option_civic_location_ca_type, { "CA Type", "bootp.option.civic_location.ca_type", FT_UINT8, BASE_DEC, VALS(civic_address_type_values), 0x0, "Option 99: CA Type", HFILL }},
- { &hf_bootp_option_civic_location_ca_length, { "CA Length", "bootp.option.civic_location.ca_length", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 99: CA Length", HFILL }},
- { &hf_bootp_option_civic_location_ca_value, { "CA Value", "bootp.option.civic_location.ca_value", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 99: CA Value", HFILL }},
- { &hf_bootp_option_netinfo_parent_server_address, { "NetInfo Parent Server Address", "bootp.option.netinfo_parent_server_address", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 112: NetInfo Parent Server Address", HFILL }},
- { &hf_bootp_option_netinfo_parent_server_tag, { "NetInfo Parent Server Tag", "bootp.option.netinfo_parent_server_tag", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 113: NetInfo Parent Server Tag", HFILL }},
- { &hf_bootp_option_dhcp_auto_configuration, { "DHCP Auto-Configuration", "bootp.option.dhcp_auto_configuration", FT_UINT8, BASE_DEC, VALS(dhcp_autoconfig), 0x0, "Option 116: DHCP Auto-Configuration", HFILL }},
- { &hf_bootp_option_cl_dss_id_option, { "DSS_ID Type", "bootp.option.cl_dss_id.option", FT_UINT8, BASE_DEC, VALS(cl_dss_id_type_vals), 0x0, "Option 123:CL DSS_ID Type", HFILL }},
- { &hf_bootp_option_cl_dss_id_len, { "DSS_ID Length", "bootp.option.cl_dss_id.len", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 123:CL DSS_ID Length", HFILL }},
- { &hf_bootp_option_cl_dss_id, { "Country", "bootp.option.cl_dss_id", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 123:CL DSS_ID", HFILL }},
- { &hf_bootp_option_vi_class_cl_address_mode, { "CableLab Address Mode", "bootp.option.vi_class.cl_address_mode", FT_UINT8, BASE_DEC, VALS(cablelab_ipaddr_mode_vals), 0x0, "Option 124: CableLab Address Mode", HFILL }},
- { &hf_bootp_option_vi_class_enterprise, { "Enterprise", "bootp.option.vi_class.enterprise", FT_UINT32, BASE_DEC|BASE_EXT_STRING, &sminmpec_values_ext, 0x00, "Option 124: Enterprise", HFILL }},
- { &hf_bootp_option_vi_class_data_length, { "CableLab Address Mode", "bootp.option.vi_class.length", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 124: Length", HFILL }},
- { &hf_bootp_option_vi_class_data, { "NetInfo Parent Server Tag", "bootp.option.vi_class.data", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 124: Data", HFILL }},
-
- { &hf_bootp_option125_enterprise, { "Enterprise", "bootp.option.vi.enterprise", FT_UINT32, BASE_DEC|BASE_EXT_STRING, &sminmpec_values_ext, 0x00, "Option 125: Enterprise", HFILL }},
- { &hf_bootp_option125_value, { "Value", "bootp.option.vi.value", FT_BYTES, BASE_NONE, NULL, 0x0, "Option 125: Suboption value", HFILL }},
- { &hf_bootp_option125_value_8, { "Value", "bootp.option.vi.value", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 125: Suboption 8-bit value", HFILL }},
- { &hf_bootp_option125_value_16, { "Value", "bootp.option.vi.value", FT_UINT16, BASE_DEC, NULL, 0x0, "Option 125: Suboption 16-bit value", HFILL }},
- { &hf_bootp_option125_value_ip_address, { "Value", "bootp.option.vi.value", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 125: Suboption IP address value", HFILL }},
- { &hf_bootp_option125_value_stringz, { "Value", "bootp.option.vi.value", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 125: Suboption Z-String value", HFILL }},
- { &hf_bootp_option125_tr111_suboption, { "Option 125 Suboption", "bootp.option.vi.tr111.suboption", FT_UINT8, BASE_DEC, VALS(option125_tr111_suboption_vals), 0x0, "Option 125:TR 111 Suboption", HFILL }},
- { &hf_bootp_option125_tr111_device_manufacturer_oui, { "DeviceManufacturerOUI", "bootp.option.vi.tr111.device_manufacturer_oui", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 125:TR 111 1 DeviceManufacturerOUI", HFILL }},
- { &hf_bootp_option125_tr111_device_serial_number, { "DeviceSerialNumber", "bootp.option.vi.tr111.device_serial_number", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 125:TR 111 2 DeviceSerialNumber", HFILL }},
- { &hf_bootp_option125_tr111_device_product_class, { "DeviceProductClass", "bootp.option.vi.tr111.device_product_class", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 125:TR 111 3 DeviceProductClass", HFILL }},
- { &hf_bootp_option125_tr111_gateway_manufacturer_oui, { "GatewayManufacturerOUI", "bootp.option.vi.tr111.gateway_manufacturer_oui", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 125:TR 111 4 GatewayManufacturerOUI", HFILL }},
- { &hf_bootp_option125_tr111_gateway_serial_number, { "GatewaySerialNumber", "bootp.option.vi.tr111.gateway_serial_number", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 125:TR 111 5 GatewaySerialNumber", HFILL }},
- { &hf_bootp_option125_tr111_gateway_product_class, { "GatewayProductClass", "bootp.option.vi.tr111.gateway_product_class", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 125:TR 111 6 GatewayProductClass", HFILL }},
-
- { &hf_bootp_option125_cl_suboption, { "Option 125 Suboption", "bootp.option.vi.cl.suboption", FT_UINT8, BASE_DEC, VALS(option125_cl_suboption_vals), 0x0, "Option 125:CL Suboption", HFILL }},
- { &hf_bootp_option125_cl_option_request, { "Option Request", "bootp.option.vi.cl.option_request", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 125:CL 1 Option Request", HFILL }},
- { &hf_bootp_option125_cl_tftp_server_addresses, { "TFTP Server Addresses", "bootp.option.vi.cl.tftp_server_addresses", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 125:CL 2 TFTP Server Addresses", HFILL }},
- { &hf_bootp_option125_cl_erouter_container_option, { "eRouter Container Option", "bootp.option.vi.cl.erouter_container_option", FT_BYTES, BASE_NONE, NULL, 0x0, "Option 125:CL 3 eRouter Container Option", HFILL }},
- { &hf_bootp_option125_cl_mib_environment_indicator_option, { "MIB Environment Indicator Option", "bootp.option.vi.cl.suboption", FT_UINT8, BASE_DEC, VALS(pkt_mib_env_ind_opt_vals), 0x0, "Option 125:CL 4 MIB Environment Indicator Option", HFILL }},
- { &hf_bootp_option125_cl_modem_capabilities, { "Modem Capabilities", "bootp.option.vi.cl.modem_capabilities", FT_BYTES, BASE_NONE, NULL, 0x0, "Option 125:CL 5 Modem Capabilities", HFILL }},
-
- { &hf_bootp_option_subnet_selection_option, { "Subnet Selection Option", "bootp.option.subnet_selection_option", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 118: Subnet Selection Option", HFILL }},
- { &hf_bootp_option_lost_server_domain_name, { "LoST Server Domain Name", "bootp.option.lost_server_domain_name", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 137: LoST Server Domain Name", HFILL }},
- { &hf_bootp_option_capwap_access_controller, { "CAPWAP Access Controllers", "bootp.option.capwap_access_controller", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 138: CAPWAP Access Controllers", HFILL }},
- { &hf_bootp_option_tftp_server_address, { "TFTP Server Address", "bootp.option.tftp_server_address", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 150: TFTP Server Address", HFILL }},
- { &hf_bootp_option_6RD_ipv4_mask_len, { "6RD IPv4 Mask Length", "bootp.option.6RD.ipv4_mask_len", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 212: 6RD IPv4 Mask Length", HFILL }},
- { &hf_bootp_option_6RD_prefix_len, { "6RD Prefix Length", "bootp.option.6RD.prefix_len", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 212: 6RD Prefix Length", HFILL }},
- { &hf_bootp_option_6RD_prefix, { "6RD Prefix", "bootp.option.6RD.prefix", FT_IPv6, BASE_NONE, NULL, 0x00, "Option 212: 6RD Prefix", HFILL }},
- { &hf_bootp_option_6RD_border_relay_ip, { "Border Relay IP", "bootp.option.6RD.border_relay_ip", FT_IPv4, BASE_NONE, NULL, 0x00, "Option 212: Border Relay IP", HFILL }},
- { &hf_bootp_option_private_proxy_autodiscovery, { "Private/Proxy autodiscovery", "bootp.option.private_proxy_autodiscovery", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Option 252: Private/Proxy autodiscovery", HFILL }},
- { &hf_bootp_option_end, { "Option End", "bootp.option.end", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 255: End", HFILL }},
- { &hf_bootp_option_end_overload, { "Option End (Overload)", "bootp.option.end", FT_UINT8, BASE_DEC, NULL, 0x0, "Option 255: End (Overload)", HFILL }},
+ { &hf_bootp_option_value,
+ { "Value", "bootp.option.value",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Bootp/Dhcp option value", HFILL }},
+
+ { &hf_bootp_option_value_8,
+ { "Value", "bootp.option.value",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "8-bit Bootp/Dhcp option value", HFILL }},
+
+ { &hf_bootp_option_value_16,
+ { "Value", "bootp.option.value",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "16-bit Bootp/Dhcp option value", HFILL }},
+
+ { &hf_bootp_option_value_u32,
+ { "Value", "bootp.option.value",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "32-bit Bootp/Dhcp option value", HFILL }},
+
+ { &hf_bootp_option_value_i32,
+ { "Value", "bootp.option.value",
+ FT_INT32, BASE_DEC, NULL, 0x0,
+ "32-bit Bootp/Dhcp option value", HFILL }},
+
+ { &hf_bootp_option_value_stringz,
+ { "Value", "bootp.option.value",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Z-String Bootp/Dhcp option value", HFILL }},
+
+ { &hf_bootp_option_value_ip_address,
+ { "Value", "bootp.option.value",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "IP address Bootp/Dhcp option value", HFILL }},
+
+ { &hf_bootp_option_value_boolean,
+ { "Value", "bootp.option.value",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00,
+ "Boolean Bootp/Dhcp option value", HFILL }},
+
+ { &hf_bootp_option_padding,
+ { "Padding", "bootp.option.padding",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Option 0: Padding", HFILL }},
+
+ { &hf_bootp_option_subnet_mask,
+ { "Subnet Mask", "bootp.option.subnet_mask",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 1: Subnet Mask", HFILL }},
+
+ { &hf_bootp_option_time_offset,
+ { "Time Offset", "bootp.option.time_offset",
+ FT_INT32, BASE_DEC, NULL, 0x00,
+ "Option 2: Time Offset", HFILL }},
+
+ { &hf_bootp_option_router,
+ { "Router", "bootp.option.router",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 3: Router", HFILL }},
+
+ { &hf_bootp_option_time_server,
+ { "Time Server", "bootp.option.time_server",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 4: Time Server", HFILL }},
+
+ { &hf_bootp_option_name_server,
+ { "Name Server", "bootp.option.name_server",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 5: Name Server", HFILL }},
+
+ { &hf_bootp_option_domain_name_server,
+ { "Domain Name Server", "bootp.option.domain_name_server",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 6: Domain Name Server", HFILL }},
+
+ { &hf_bootp_option_log_server,
+ { "Log Server", "bootp.option.log_server",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 7: Log Server", HFILL }},
+
+ { &hf_bootp_option_quotes_server,
+ { "Quotes Server", "bootp.option.quotes_server",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 8: Quotes Server", HFILL }},
+
+ { &hf_bootp_option_lpr_server,
+ { "LPR Server", "bootp.option.lpr_server",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 9: LPR Server", HFILL }},
+
+ { &hf_bootp_option_impress_server,
+ { "Impress Server", "bootp.option.impress_server",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 10: Impress Server", HFILL }},
+
+ { &hf_bootp_option_resource_location_server,
+ { "Resource Location Server", "bootp.option.resource_location_server",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 11: Resource Location Server", HFILL }},
+
+ { &hf_bootp_option_hostname,
+ { "Host Name", "bootp.option.hostname",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 12: Host Name", HFILL }},
+
+ { &hf_bootp_option_boot_file_size,
+ { "Boot File Size", "bootp.option.boot_file_size",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Option 13: Boot File Size", HFILL }},
+
+ { &hf_bootp_option_merit_dump_file,
+ { "Merit Dump File", "bootp.option.merit_dump_file",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 14: Merit Dump File", HFILL }},
+
+ { &hf_bootp_option_domain_name,
+ { "Domain Name", "bootp.option.domain_name",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 15: Domain Name", HFILL }},
+
+ { &hf_bootp_option_swap_server,
+ { "Swap Server", "bootp.option.swap_server",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 16: Swap Server", HFILL }},
+
+ { &hf_bootp_option_root_path,
+ { "Root Path", "bootp.option.root_path",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 17: Root Path", HFILL }},
+
+ { &hf_bootp_option_extension_path,
+ { "Extensions Path", "bootp.option.extension_path",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 18: Extensions Path", HFILL }},
+
+ { &hf_bootp_option_ip_forwarding,
+ { "IP Forwarding", "bootp.option.ip_forwarding",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_enabled_disabled), 0x00,
+ "Option 19: IP Forwarding", HFILL }},
+
+ { &hf_bootp_option_policy_filter_ip,
+ { "IP Address", "bootp.option.policy_filter.ip",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 21: IP address", HFILL }},
+
+ { &hf_bootp_option_policy_filter_subnet_mask,
+ { "Subnet Mask", "bootp.option.policy_filter.subnet_mask",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 21: Subnet Mask", HFILL }},
+
+ { &hf_bootp_option_non_local_source_routing,
+ { "Non-Local Source Routing", "bootp.option.non_local_source_routing",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_enabled_disabled), 0x00,
+ "Option 20: Non-Local Source Routing", HFILL }},
+
+ { &hf_bootp_option_max_datagram_reassembly_size,
+ { "Maximum Datagram Reassembly Size", "bootp.option.max_datagram_reassembly_size",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Option 22: Maximum Datagram Reassembly Size", HFILL }},
+
+ { &hf_bootp_option_default_ip_ttl,
+ { "Default IP Time-to-Live", "bootp.option.default_ip_ttl",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 23: Default IP Time-to-Live", HFILL }},
+
+ { &hf_bootp_option_path_mtu_aging_timeout,
+ { "Path MTU Aging Timeout", "bootp.option.path_mtu_aging_timeout",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "Option 24: Path MTU Aging Timeout", HFILL }},
+
+ { &hf_bootp_option_path_mtu_plateau_table_item,
+ { "Path MTU Plateau Table Item", "bootp.option.path_mtu_plateau_table_item",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Option 25: Path MTU Plateau Table Item", HFILL }},
+
+ { &hf_bootp_option_interface_mtu,
+ { "Interface MTU", "bootp.option.interface_mtu",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Option 26: Interface MTU", HFILL }},
+
+ { &hf_bootp_option_all_subnets_are_local,
+ { "All Subnets are Local", "bootp.option.all_subnets_are_local",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_yes_no), 0x00,
+ "Option 27: All Subnets are Local", HFILL }},
+
+ { &hf_bootp_option_broadcast_address,
+ { "Broadcast Address", "bootp.option.broadcast_address",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 28: Broadcast Address", HFILL }},
+
+ { &hf_bootp_option_perform_mask_discovery,
+ { "Perform Mask Discovery", "bootp.option.perform_mask_discovery",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_enabled_disabled), 0x00,
+ "Option 29: Perform Mask Discovery", HFILL }},
+
+ { &hf_bootp_option_mask_supplier,
+ { "Mask Supplier", "bootp.option.mask_supplier",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_yes_no), 0x00,
+ "Option 30: Mask Supplier", HFILL }},
+
+ { &hf_bootp_option_perform_router_discover,
+ { "Perform Router Discover", "bootp.option.perform_router_discover",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_enabled_disabled), 0x00,
+ "Option 31: Perform Router Discover", HFILL }},
+
+ { &hf_bootp_option_router_solicitation_address,
+ { "Router Solicitation Address", "bootp.option.router_solicitation_address",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 32: Router Solicitation Address", HFILL }},
+
+ { &hf_bootp_option_static_route_ip,
+ { "Destination IP Address", "bootp.option.static_route.ip",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 33: Destination IP address", HFILL }},
+
+ { &hf_bootp_option_static_route_router,
+ { "Destination Router", "bootp.option.static_route.router",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 33: Destination Router", HFILL }},
+
+ { &hf_bootp_option_trailer_encapsulation,
+ { "Trailer Encapsulation", "bootp.option.trailer_encapsulation",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_enabled_disabled), 0x00,
+ "Option 34: Trailer Encapsulation", HFILL }},
+
+ { &hf_bootp_option_arp_cache_timeout,
+ { "ARP Cache Timeout", "bootp.option.arp_cache_timeout",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "Option 35: ARP Cache Timeout", HFILL }},
+
+ { &hf_bootp_option_ethernet_encapsulation,
+ { "Ethernet Encapsulation", "bootp.option.ethernet_encapsulation",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_enabled_disabled), 0x00,
+ "Option 36: Ethernet Encapsulation", HFILL }},
+
+ { &hf_bootp_option_tcp_default_ttl,
+ { "TCP Default TTL", "bootp.option.tcp_default_ttl",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 37: TCP Default TTL", HFILL }},
+
+ { &hf_bootp_option_tcp_keepalive_interval,
+ { "TCP Keepalive Interval", "bootp.option.tcp_keepalive_interval",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "Option 38: TCP Keepalive Interval", HFILL }},
+
+ { &hf_bootp_option_tcp_keepalive_garbage,
+ { "TCP Keepalive Garbage", "bootp.option.tcp_keepalive_garbage",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_enabled_disabled), 0x00,
+ "Option 39: TCP Keepalive Garbage", HFILL }},
+
+ { &hf_bootp_option_nis_domain,
+ { "Network Information Service Domain", "bootp.option.nis_domain",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 40: Network Information Service Domain", HFILL }},
+
+ { &hf_bootp_option_nis_server,
+ { "Network Information Service Server", "bootp.option.nis_server",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 41: Network Information Service Server", HFILL }},
+
+ { &hf_bootp_option_ntp_server,
+ { "Network Time Protocol Server", "bootp.option.ntp_server",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 42: Network Time Protocol Server", HFILL }},
+
+
+ { &hf_bootp_option43_value,
+ { "Value", "bootp.option.vendor.value",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Option 43: Suboption value", HFILL }},
+
+ { &hf_bootp_option43_value_8,
+ { "Value", "bootp.option.vendor.value",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 43: Suboption 8-bit value", HFILL }},
+
+ { &hf_bootp_option43_value_32,
+ { "Value", "bootp.option.vendor.value",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Option 43: Suboption 32-bit value", HFILL }},
+
+ { &hf_bootp_option43_value_stringz,
+ { "Value", "bootp.option.vendor.value",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 43: Suboption Z-String value", HFILL }},
+
+ { &hf_bootp_option43_value_ip_address,
+ { "Value", "bootp.option.vendor.value",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 43: Suboption IP address", HFILL }},
+
+
+ { &hf_bootp_option43_pxeclient_suboption,
+ { "Option 43 Suboption", "bootp.option.vendor.pxeclient.suboption",
+ FT_UINT8, BASE_DEC, VALS(option43_pxeclient_suboption_vals), 0x0,
+ "Option 43:PXE Client Suboption", HFILL }},
+
+ { &hf_bootp_option43_pxeclient_padding,
+ { "Padding", "bootp.option.vendor.pxeclient.padding",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 43:PXE Client 0 Padding", HFILL }},
+
+ { &hf_bootp_option43_pxeclient_mtftp_ip,
+ { "mtftp IP", "bootp.option.vendor.pxeclient.mtftp_ip",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 43:PXE Client 1 mtftp IP", HFILL }},
+
+ { &hf_bootp_option43_pxeclient_mtftp_client_port,
+ { "mtftp IP", "bootp.option.vendor.pxeclient.mtftp_client_port",
+ FT_UINT16, BASE_DEC, NULL, 0x00,
+ "Option 43:PXE Client 2 mtftp client port", HFILL }},
+
+ { &hf_bootp_option43_pxeclient_mtftp_server_port,
+ { "mtftp IP", "bootp.option.vendor.pxeclient.mtftp_server_port",
+ FT_UINT16, BASE_DEC, NULL, 0x00,
+ "Option 43:PXE Client 3 mtftp server port", HFILL }},
+
+ { &hf_bootp_option43_pxeclient_mtftp_timeout,
+ { "mtftp timeout", "bootp.option.vendor.pxeclient.mtftp_timeout",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 43:PXE Client 4 mtftp timeout", HFILL }},
+
+ { &hf_bootp_option43_pxeclient_mtftp_delay,
+ { "mtftp delay", "bootp.option.vendor.pxeclient.mtftp_delay",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 43:PXE Client 5 mtftp delay", HFILL }},
+
+ { &hf_bootp_option43_pxeclient_discovery_control,
+ { "discovery control", "bootp.option.vendor.pxeclient.discovery_control",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ "Option 43:PXE Client 6 discovery control", HFILL }},
+
+ { &hf_bootp_option43_pxeclient_multicast_address,
+ { "multicast address", "bootp.option.vendor.pxeclient.multicast_address",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 43:PXE Client 7 multicast address", HFILL }},
+
+ { &hf_bootp_option43_pxeclient_boot_servers,
+ { "boot servers", "bootp.option.vendor.pxeclient.boot_servers",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Option 43:PXE Client 8 boot servers", HFILL }},
+
+ { &hf_bootp_option43_pxeclient_boot_menu,
+ { "boot menu", "bootp.option.vendor.pxeclient.boot_menu",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Option 43:PXE Client 9 boot menu", HFILL }},
+
+ { &hf_bootp_option43_pxeclient_menu_prompt,
+ { "menu prompt", "bootp.option.vendor.pxeclient.menu_prompt",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Option 43:PXE Client 10 menu prompt", HFILL }},
+
+ { &hf_bootp_option43_pxeclient_multicast_address_alloc,
+ { "multicast address alloc", "bootp.option.vendor.pxeclient.multicast_address_alloc",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Option 43:PXE Client 11 multicast address alloc", HFILL }},
+
+ { &hf_bootp_option43_pxeclient_credential_types,
+ { "credential types", "bootp.option.vendor.pxeclient.credential_types",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Option 43:PXE Client 12 credential types", HFILL }},
+
+ { &hf_bootp_option43_pxeclient_boot_item,
+ { "boot item", "bootp.option.vendor.pxeclient.boot_item",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Option 43:PXE Client 71 boot item", HFILL }},
+
+ { &hf_bootp_option43_pxeclient_end,
+ { "PXE Client End", "bootp.option.vendor.pxeclient.end",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 43:PXE Client 255 End", HFILL }},
+
+
+ { &hf_bootp_option43_cl_suboption,
+ { "Option 43 Suboption", "bootp.option.vendor.cl.suboption",
+ FT_UINT8, BASE_DEC, VALS(option43_cl_suboption_vals), 0x0,
+ "Option 43:CL Suboption", HFILL }},
+
+ { &hf_bootp_option43_cl_padding,
+ { "Padding", "bootp.option.vendor.cl.padding",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 43:CL 0 Padding", HFILL }},
+
+ { &hf_bootp_option43_cl_suboption_request_list,
+ { "Suboption Request List", "bootp.option.vendor.cl.suboption_request_list",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 43:CL 1 Suboption Request List", HFILL }},
+
+ { &hf_bootp_option43_cl_device_type,
+ { "Device Type", "bootp.option.vendor.cl.device_type",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 43:CL 2 Device Type", HFILL }},
+
+ { &hf_bootp_option43_cl_esafe_type,
+ { "eSAFE Types", "bootp.option.vendor.cl.esafe_type",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 43:CL 3 eSAFE Types", HFILL }},
+
+ { &hf_bootp_option43_cl_serial_number,
+ { "Serial Number", "bootp.option.vendor.cl.serial_number",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 43:CL 4 Serial Number", HFILL }},
+
+ { &hf_bootp_option43_cl_hardware_version,
+ { "Hardware Version", "bootp.option.vendor.cl.hardware_version",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 43:CL 5 Hardware Version", HFILL }},
+
+ { &hf_bootp_option43_cl_software_version,
+ { "Software Version", "bootp.option.vendor.cl.software_version",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 43:CL 6 Software Version", HFILL }},
+
+ { &hf_bootp_option43_cl_boot_rom_version,
+ { "Boot ROM version", "bootp.option.vendor.cl.boot_rom_version",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 43:CL 7 Boot ROM version", HFILL }},
+
+ { &hf_bootp_option43_cl_oui_string,
+ { "Organizationally Unique Identifier", "bootp.option.vendor.cl.oui_string",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 43:CL 8 Organizationally Unique Identifier", HFILL }},
+
+ { &hf_bootp_option43_cl_oui_bytes,
+ { "Organizationally Unique Identifier", "bootp.option.vendor.cl.oui_string",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Option 43:CL 8 Organizationally Unique Identifier", HFILL }},
+
+ { &hf_bootp_option43_cl_model_number,
+ { "Model Number", "bootp.option.vendor.cl.model_number",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 43:CL 9 Model Number", HFILL }},
+
+ { &hf_bootp_option43_cl_vendor_name10,
+ { "Vendor Name", "bootp.option.vendor.cl.vendor_name10",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 43:CL 10 Vendor Name", HFILL }},
+
+ { &hf_bootp_option43_cl_address_realm,
+ { "Address Realm", "bootp.option.vendor.cl.address_realm",
+ FT_UINT8, BASE_DEC, VALS(cablehome_subopt11_vals), 0x0,
+ "Option 43:CL 11 Address Realm", HFILL }},
+
+ { &hf_bootp_option43_cl_cm_ps_system_desc,
+ { "CM/PS System Description", "bootp.option.vendor.cl.cm_ps_system_desc",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 43:CL 12 CM/PS System Description", HFILL }},
+
+ { &hf_bootp_option43_cl_cm_ps_firmware_revision,
+ { "CM/PS Firmware Revision", "bootp.option.vendor.cl.cm_ps_firmware_revision",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 43:CL 13 CM/PS Firmware Revision", HFILL }},
+
+ { &hf_bootp_option43_cl_firewall_policy_file_version,
+ { "Firewall Policy File Version", "bootp.option.vendor.cl.firewall_policy_file_version",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 43:CL 14 Firewall Policy File Version", HFILL }},
+
+ { &hf_bootp_option43_cl_esafe_config_file_devices,
+ { "eSafe Config File Devices", "bootp.option.vendor.cl.esafe_config_file_devices",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 43:CL 15 eSafe Config File Devices", HFILL }},
+
+ { &hf_bootp_option43_cl_video_security_tape,
+ { "Video Security Type", "bootp.option.vendor.cl.video_security_tape",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 43:CL 18 Video Security Type", HFILL }},
+
+ { &hf_bootp_option43_cl_mta_mac_address,
+ { "MTA MAC Address", "bootp.option.vendor.cl.mta_mac_address",
+ FT_ETHER, BASE_NONE, NULL, 0x0,
+ "Option 43:CL 31 MTA MAC Address", HFILL }},
+
+ { &hf_bootp_option43_cl_correlation_ID,
+ { "Correlation ID", "bootp.option.vendor.cl.correlation_ID",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Option 43: CL 32 Correlation ID", HFILL }},
+
+ { &hf_bootp_option43_cl_vendor_name51,
+ { "Vendor Name", "bootp.option.vendor.cl.vendor_name51",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 43:CL 51 Vendor Name", HFILL }},
+
+ { &hf_bootp_option43_cl_cablecard_capability,
+ { "CableCARD Capability", "bootp.option.vendor.cl.cablecard_capability",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Option 43:CL 52 CableCARD Capability", HFILL }},
+
+ { &hf_bootp_option43_cl_device_id_ca,
+ { "Device Identification (CA)", "bootp.option.vendor.cl.device_id_ca",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Option 43:CL 53 Device Identification (CA)", HFILL }},
+
+ { &hf_bootp_option43_cl_device_id_x509,
+ { "Device Identification (X.509)", "bootp.option.vendor.cl.device_id_x509",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 43:CL 54 Device Identification (X.509)", HFILL }},
+
+ { &hf_bootp_option43_cl_end,
+ { "CL End", "bootp.option.vendor.cl.end",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 43:CL 255 End", HFILL }},
+
+
+ { &hf_bootp_option43_alcatel_suboption,
+ { "Option 43 Suboption", "bootp.option.vendor.alu.suboption",
+ FT_UINT8, BASE_DEC, VALS(option43_alcatel_suboption_vals), 0x0,
+ "Option 43:Alcatel Suboption", HFILL }},
+
+ { &hf_bootp_option43_alcatel_padding,
+ { "Padding", "bootp.option.vendor.alu.padding",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 43:Alcatel 0 Padding", HFILL }},
+
+ { &hf_bootp_option43_alcatel_vlan_id,
+ { "Voice VLAN ID", "bootp.option.vendor.alu.vid",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Option 43:Alcatel 58 Voice VLAN ID", HFILL }},
+
+ { &hf_bootp_option43_alcatel_tftp1,
+ { "Spatial Redundancy TFTP1", "bootp.option.vendor.alu.tftp1",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ "Option 43:Alcatel 64 Spatial Redundancy TFTP1", HFILL }},
+
+ { &hf_bootp_option43_alcatel_tftp2,
+ { "Spatial Redundancy TFTP2", "bootp.option.vendor.alu.tftp2",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ "Option 43:Alcatel 65 Spatial Redundancy TFTP2", HFILL }},
+
+ { &hf_bootp_option43_alcatel_app_type,
+ { "Application Type", "bootp.option.vendor.alu.app_type",
+ FT_UINT8, BASE_DEC, VALS(option43_alcatel_app_type_vals), 0x0,
+ "Option 43:Alcatel 66 Application Type", HFILL }},
+
+ { &hf_bootp_option43_alcatel_sip_url,
+ { "SIP URL", "bootp.option.vendor.alu.sip_url",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "Option 43:Alcatel 67 SIP URL", HFILL }},
+
+ { &hf_bootp_option43_alcatel_end,
+ { "Alcatel End", "bootp.option.vendor.alu.end",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 43:Alcatel 255 End", HFILL }},
+
+
+ { &hf_bootp_option_netbios_over_tcpip_name_server,
+ { "NetBIOS over TCP/IP Name Server", "bootp.option.netbios_over_tcpip_name_server",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 44: NetBIOS over TCP/IP Name Server", HFILL }},
+
+ { &hf_bootp_option_netbios_over_tcpip_dd_name_server,
+ { "NetBIOS over TCP/IP Datagram Distribution Name Server", "bootp.option.netbios_over_tcpip_dd_name_server",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 45: NetBIOS over TCP/IP Datagram Distribution Name Server", HFILL }},
+
+ { &hf_bootp_option_netbios_over_tcpip_node_type,
+ { "NetBIOS over TCP/IP Node Type", "bootp.option.netbios_over_tcpip_node_type",
+ FT_UINT8, BASE_DEC, VALS(bootp_nbnt_vals), 0x0,
+ "Option 46: NetBIOS over TCP/IP Node Type", HFILL }},
+
+ { &hf_bootp_option_netbios_over_tcpip_scope,
+ { "NetBIOS over TCP/IP Scope", "bootp.option.netbios_over_tcpip_scope",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 47: NetBIOS over TCP/IP Scope", HFILL }},
+
+ { &hf_bootp_option_xwindows_system_font_server,
+ { "X Window System Font Server", "bootp.option.xwindows_system_font_server",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 48: X Window System Font Server", HFILL }},
+
+ { &hf_bootp_option_xwindows_system_display_manager,
+ { "X Window System Display Manager", "bootp.option.xwindows_system_display_manager",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 49: X Window System Display Manager", HFILL }},
+
+ { &hf_bootp_option_requested_ip_address,
+ { "Requested IP Address", "bootp.option.requested_ip_address",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 50: Requested IP Address", HFILL }},
+
+ { &hf_bootp_option_ip_address_lease_time,
+ { "IP Address Lease Time", "bootp.option.ip_address_lease_time",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "Option 51: IP Address Lease Time", HFILL }},
+
+ { &hf_bootp_option_option_overload,
+ { "Option Overload", "bootp.option.option_overload",
+ FT_UINT8, BASE_DEC, VALS(opt_overload_vals), 0x0,
+ "Option 52: Option Overload", HFILL }},
+
+ { &hf_bootp_option_dhcp,
+ { "DHCP", "bootp.option.dhcp",
+ FT_UINT8, BASE_DEC, VALS(opt53_text), 0x0,
+ "Option 53: DHCP option", HFILL }},
+
+ { &hf_bootp_option_dhcp_server_id,
+ { "DHCP Server Identifier", "bootp.option.dhcp_server_id",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 54: DHCP Server Identifier", HFILL }},
+
+ { &hf_bootp_option_parameter_request_list_item,
+ { "Parameter Request List Item", "bootp.option.request_list_item",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 55: Parameter Request List Item", HFILL }},
+
+ { &hf_bootp_option_message,
+ { "Message", "bootp.option.message",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 56: Option message", HFILL }},
+
+ { &hf_bootp_option_dhcp_max_message_size,
+ { "Maximum DHCP Message Size", "bootp.option.dhcp_max_message_size",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Option 57: Maximum DHCP Message Size", HFILL }},
+
+ { &hf_bootp_option_renewal_time_value,
+ { "Renewal Time Value", "bootp.option.renewal_time_value",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "Option 58: Renewal Time Value", HFILL }},
+
+ { &hf_bootp_option_rebinding_time_value,
+ { "Rebinding Time Value", "bootp.option.rebinding_time_value",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "Option 59: Rebinding Time Value", HFILL }},
+
+ { &hf_bootp_option_vendor_class_id,
+ { "Vendor class identifier", "bootp.option.vendor_class_id",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 60: Vendor class identifier", HFILL }},
+
+ { &hf_bootp_option_novell_netware_ip_domain,
+ { "Novell/Netware IP domain", "bootp.option.novell_netware_ip_domain",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 62: Novell/Netware IP domain", HFILL }},
+
+ { &hf_bootp_option63_suboption,
+ { "Option 63 Suboption", "bootp.option.novell_options.suboption",
+ FT_UINT8, BASE_DEC, VALS(option63_suboption_vals), 0x0,
+ "Option 63: Suboption", HFILL }},
+
+ { &hf_bootp_option63_value,
+ { "Value", "bootp.option.novell_options.value",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Option 63: Suboption value", HFILL }},
+
+ { &hf_bootp_option63_value_8,
+ { "Value", "bootp.option.novell_options.value",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 63: Suboption 8-bit value", HFILL }},
+
+ { &hf_bootp_option63_value_ip_address,
+ { "Value", "bootp.option.novell_options.value",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 63: Suboption IP address", HFILL }},
+
+ { &hf_bootp_option63_value_boolean,
+ { "Value", "bootp.option.novell_options.value",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00,
+ "Option 63: Suboption Boolean value", HFILL }},
+
+ { &hf_bootp_option63_broadcast,
+ { "Broadcast for nearest Netware server", "bootp.option.novell_options.broadcast",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_yes_no), 0x00,
+ "Option 63:5 Broadcast for nearest Netware server", HFILL }},
+
+ { &hf_bootp_option63_preferred_dss_server,
+ { "Preferred DSS server", "bootp.option.novell_options.preferred_dss_server",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 63:6 Preferred DSS server", HFILL }},
+
+ { &hf_bootp_option63_nearest_nwip_server,
+ { "Nearest NWIP server", "bootp.option.novell_options.nearest_nwip_server",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 63:7 Nearest NWIP server", HFILL }},
+
+ { &hf_bootp_option63_autoretries,
+ { "Autoretries", "bootp.option.novell_options.autoretries",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 63:8 Autoretries", HFILL }},
+
+ { &hf_bootp_option63_autoretry_delay,
+ { "Autoretry delay, sec",
+ "bootp.option.novell_options.autoretry_delay", FT_UINT8, BASE_DEC, NULL,
+ 0x0, "Option 63:9 Autoretry delay, sec", HFILL }},
+
+ { &hf_bootp_option63_support_netware_v1_1,
+ { "Broadcast for nearest Netware server", "bootp.option.novell_options.support_netware_v1_1",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_yes_no), 0x00,
+ "Option 63:10 Broadcast for nearest Netware server", HFILL }},
+
+ { &hf_bootp_option63_primary_dss,
+ { "Primary DSS", "bootp.option.novell_options.primary_dss",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 63:11 Primary DSS", HFILL }},
+
+
+ { &hf_bootp_option_nis_plus_domain,
+ { "Network Information Service+ Domain", "bootp.option.nis_plus_domain",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 64: Network Information Service+ Domain", HFILL }},
+
+ { &hf_bootp_option_nis_plus_server,
+ { "Network Information Service+ Server", "bootp.option.nis_plus_server",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 65: Network Information Service+ Server", HFILL }},
+
+ { &hf_bootp_option_tftp_server_name,
+ { "TFTP Server Name", "bootp.option.tftp_server_name",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 66: TFTP Server Name", HFILL }},
+
+ { &hf_bootp_option_bootfile_name,
+ { "Bootfile name", "bootp.option.bootfile_name",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 67: Bootfile name", HFILL }},
+
+ { &hf_bootp_option_mobile_ip_home_agent,
+ { "Mobile IP Home Agent", "bootp.option.mobile_ip_home_agent",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 68: Mobile IP Home Agent", HFILL }},
+
+ { &hf_bootp_option_smtp_server,
+ { "SMTP Server", "bootp.option.smtp_server",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 69: SMTP Server", HFILL }},
+
+ { &hf_bootp_option_pop3_server,
+ { "POP3 Server", "bootp.option.pop3_server",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 70: POP3 Server", HFILL }},
+
+ { &hf_bootp_option_nntp_server,
+ { "NNTP Server", "bootp.option.nntp_server",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 71: NNTP Server", HFILL }},
+
+ { &hf_bootp_option_default_www_server,
+ { "Default WWW Server", "bootp.option.default_www_server",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 72: Default WWW Server", HFILL }},
+
+ { &hf_bootp_option_default_finger_server,
+ { "Default Finger Server", "bootp.option.default_finger_server",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 73: Default Finger Server", HFILL }},
+
+ { &hf_bootp_option_default_irc_server,
+ { "Default IRC Server", "bootp.option.default_irc_server",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 74: Default IRC Server", HFILL }},
+
+ { &hf_bootp_option_streettalk_server,
+ { "StreetTalk Server", "bootp.option.streettalk_server",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 75: StreetTalk Server", HFILL }},
+
+ { &hf_bootp_option_streettalk_da_server,
+ { "StreetTalk Directory Assistance Server", "bootp.option.streettalk_da_server",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 76: StreetTalk Directory Assistance Server", HFILL }},
+
+ { &hf_bootp_option_slp_directory_agent_value,
+ { "Value", "bootp.option.slp_directory_agent.value",
+ FT_UINT8, BASE_DEC, VALS(slpda_vals), 0x0,
+ "Option 78: SLPDA Value", HFILL }},
+
+ { &hf_bootp_option_slp_directory_agent_slpda_address,
+ { "IP Address", "bootp.option.slp_directory_agent.slpda_address",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 78: SLPDA Address", HFILL }},
+
+ { &hf_bootp_option_slp_service_scope_value,
+ { "Value", "bootp.option.slp_service_scope.value",
+ FT_UINT8, BASE_DEC, VALS(slp_scope_vals), 0x0,
+ "Option 79: SLP Service Scope Value", HFILL }},
+
+ { &hf_bootp_option_slp_service_scope_string,
+ { "SLP Service Scope", "bootp.option.slp_service_scope.string",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 79: SLP Service Scope", HFILL }},
+
+
+ { &hf_bootp_option82_suboption,
+ { "Option 82 Suboption", "bootp.option.agent_information_option.suboption",
+ FT_UINT8, BASE_DEC, VALS(option82_suboption_vals), 0x0,
+ "Option 82: Suboption", HFILL }},
+
+ { &hf_bootp_option82_value,
+ { "Value", "bootp.option.agent_information_option.value",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Option 82: Suboption value", HFILL }},
+
+ { &hf_bootp_option82_value_8,
+ { "Value", "bootp.option.agent_information_option.value",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 82: Suboption 8-bit value", HFILL }},
+
+ { &hf_bootp_option82_value_32,
+ { "Value", "bootp.option.agent_information_option.value",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Option 82: Suboption 32-bit value", HFILL }},
+
+ { &hf_bootp_option82_value_ip_address,
+ { "Value", "bootp.option.agent_information_option.value",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 82: Suboption IP address", HFILL }},
+
+ { &hf_bootp_option82_value_stringz,
+ { "Value", "bootp.option.agent_information_option.value",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 82: Suboption Z-String value", HFILL }},
+
+ { &hf_bootp_option82_padding,
+ { "Padding", "bootp.option.agent_information_option.padding",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 82:0 Padding", HFILL }},
+
+ { &hf_bootp_option82_agent_circuit_id,
+ { "Agent Circuit ID", "bootp.option.agent_information_option.agent_circuit_id",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Option 82:1 Agent Circuit ID", HFILL }},
+
+ { &hf_bootp_option82_agent_remote_id,
+ { "Agent Remote ID", "bootp.option.agent_information_option.agent_remote_id",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Option 82:2 Agent Remote ID", HFILL }},
+
+ { &hf_bootp_option82_reserved,
+ { "Reserved", "bootp.option.agent_information_option.reserved",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Option 82:3 Reserved", HFILL }},
+
+ { &hf_bootp_option82_docsis_device_class,
+ { "DOCSIS Device Class", "bootp.option.agent_information_option.docsis_device_class",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "Option 82:4 DOCSIS Device Class", HFILL }},
+
+ { &hf_bootp_option82_link_selection,
+ { "Link selection", "bootp.option.agent_information_option.link_selection",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 82:5 Link selection", HFILL }},
+
+ { &hf_bootp_option82_subscriber_id,
+ { "Subscriber ID", "bootp.option.agent_information_option.subscriber_id",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 82:6 Subscriber ID", HFILL }},
+
+ { &hf_bootp_option82_radius_attributes,
+ { "RADIUS Attributes", "bootp.option.agent_information_option.radius_attributes",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Option 82:7 RADIUS Attributes", HFILL }},
+
+ { &hf_bootp_option82_authentication,
+ { "Authentication", "bootp.option.agent_information_option.authentication",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Option 82:8 Authentication", HFILL }},
+
+ { &hf_bootp_option82_vi,
+ { "Vendor-Specific Information", "bootp.option.agent_information_option.vi",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Option 82:9 Vendor-Specific Information", HFILL }},
+
+ { &hf_bootp_option82_vi_enterprise,
+ { "Enterprise", "bootp.option.agent_information_option.vi.enterprise",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &sminmpec_values_ext, 0x0,
+ "Option 82:9 VI Enterprise", HFILL }},
+
+ { &hf_bootp_option82_vi_data_length,
+ { "Data Length", "bootp.option.agent_information_option.vi.data_length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 82:9 VI Data Length", HFILL }},
+
+ { &hf_bootp_option82_vi_cl_option,
+ { "Option", "bootp.option.agent_information_option.vi.cl.option",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 82:9 VI CL Option", HFILL }},
+
+ { &hf_bootp_option82_vi_cl_length,
+ { "Length", "bootp.option.agent_information_option.vi.cl.length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 82:9 VI CL Length", HFILL }},
+
+ { &hf_bootp_option82_vi_cl_tag,
+ { "Tag", "bootp.option.agent_information_option.vi.cl.tag",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 82:9 VI CL Tag", HFILL }},
+
+ { &hf_bootp_option82_vi_cl_tag_length,
+ { "Tag Length", "bootp.option.agent_information_option.vi.cl.tag_length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 82:9 VI CL Tag Length", HFILL }},
+
+ { &hf_bootp_option82_vi_cl_docsis_version,
+ { "DOCSIS Version Number", "bootp.option.agent_information_option.vi.cl.docsis_version",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ "Option 82:9 VI CL DOCSIS Version Number", HFILL }},
+
+ { &hf_bootp_option82_flags,
+ { "Flags", "bootp.option.agent_information_option.flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ "Option 82:10 Flags", HFILL }},
+
+ { &hf_bootp_option82_server_id_override,
+ { "Server ID Override", "bootp.option.agent_information_option.server_id_override",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 82:11 Server ID Override", HFILL }},
+
+ { &hf_bootp_option82_link_selection_cisco,
+ { "Link selection (Cisco proprietary)", "bootp.option.agent_information_option.link_selection_cisco",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 82:150 Link selection (Cisco proprietary)", HFILL }},
+
+ { &hf_bootp_option82_vrf_name_vpn_id,
+ { "VRF name/VPN ID", "bootp.option.agent_information_option.vrf_name_vpn_id",
+ FT_BYTES, BASE_NONE, NULL, 0x00,
+ "Option 82:151 VRF name/VPN ID", HFILL }},
+
+ { &hf_bootp_option82_vrf_name_vpn_id_oui,
+ { "VRF name/VPN ID OUI", "bootp.option.agent_information_option.vrf_name_vpn_id_oui",
+ FT_UINT24, BASE_HEX, NULL, 0x00,
+ "Option 82:151 VRF name/VPN ID OUI", HFILL }},
+
+ { &hf_bootp_option82_vrf_name_vpn_id_index,
+ { "VRF name/VPN ID Index", "bootp.option.agent_information_option.vrf_name_vpn_id_index",
+ FT_UINT32, BASE_HEX, NULL, 0x00,
+ "Option 82:151 VRF name/VPN ID Index", HFILL }},
+
+ { &hf_bootp_option82_server_id_override_cisco,
+ { "Server ID Override (Cisco proprietary)", "bootp.option.agent_information_option.server_id_override_cisco",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 82:152 Server ID Override (Cisco proprietary)", HFILL }},
+
+
+ { &hf_bootp_option_novell_dss_string,
+ { "Novell Directory Services Servers String", "bootp.option.novell_dss.string",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 85: Novell Directory Services Servers String", HFILL }},
+
+ { &hf_bootp_option_novell_dss_ip,
+ { "IP Address", "bootp.option.novell_dss.ip",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 85: Novell Directory Services Servers IP Address", HFILL }},
+
+ { &hf_bootp_option_novell_ds_tree_name,
+ { "Novell Directory Services Tree Name", "bootp.option.novell_ds_tree_name",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 86: Novell Directory Services Tree Name", HFILL }},
+
+ { &hf_bootp_option_novell_ds_context,
+ { "Novell Directory Services Context", "bootp.option.novell_ds_context",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 87: Novell Directory Services Context", HFILL }},
+
+ { &hf_bootp_option_dhcp_authentication_protocol,
+ { "Protocol", "bootp.option.dhcp_authentication.protocol",
+ FT_UINT8, BASE_DEC, VALS(authen_protocol_vals), 0x0,
+ "Option 90: Authentication Protocol", HFILL }},
+
+ { &hf_bootp_option_dhcp_authentication_alg_delay,
+ { "Delay Algorithm", "bootp.option.dhcp_authentication.alg_delay",
+ FT_UINT8, BASE_DEC, VALS(authen_da_algo_vals), 0x0,
+ "Option 90: Delayed Authentication Algorithm", HFILL }},
+
+ { &hf_bootp_option_dhcp_authentication_algorithm,
+ { "Algorithm", "bootp.option.dhcp_authentication.algorithm",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 90: Authentication Algorithm", HFILL }},
+
+ { &hf_bootp_option_dhcp_authentication_rdm,
+ { "Replay Detection Method", "bootp.option.dhcp_authentication.rdm",
+ FT_UINT8, BASE_DEC, VALS(authen_rdm_vals), 0x0,
+ "Option 90: Replay Detection Method", HFILL }},
+
+ { &hf_bootp_option_dhcp_authentication_rdm_replay_detection,
+ { "RDM Replay Detection Value", "bootp.option.dhcp_authentication.rdm_replay_detection",
+ FT_UINT64, BASE_HEX, NULL, 0x0,
+ "Option 90: RDM Replay Detection Value", HFILL }},
+
+ { &hf_bootp_option_dhcp_authentication_rdm_rdv,
+ { "Replay Detection Value", "bootp.option.dhcp_authentication.rdm_rdv",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 90: Replay Detection Value", HFILL }},
+
+ { &hf_bootp_option_dhcp_authentication_secret_id,
+ { "Secret ID", "bootp.option.dhcp_authentication.secret_id",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "Option 90: Secret ID", HFILL }},
+
+ { &hf_bootp_option_dhcp_authentication_hmac_md5_hash,
+ { "HMAC MD5 Hash", "bootp.option.dhcp_authentication.hmac_md5_hash",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 90: HMAC MD5 Hash", HFILL }},
+
+ { &hf_bootp_option_dhcp_authentication_information,
+ { "Authentication Information", "bootp.option.dhcp_authentication.information",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 90: Authentication Information", HFILL }},
+
+ { &hf_bootp_option_client_last_transaction_time,
+ { "Client last transaction time", "bootp.option.client_last_transaction_time",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "Option 91: Client last transaction time", HFILL }},
+
+ { &hf_bootp_option_associated_ip_option,
+ { "Associated IP option", "bootp.option.associated_ip_option",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 92: Associated IP option", HFILL }},
+
+ { &hf_bootp_option_client_system_architecture,
+ { "Client System Architecture", "bootp.option.client_system_architecture",
+ FT_UINT16, BASE_DEC, VALS(bootp_client_arch), 0x0,
+ "Option 93: Client System Architecture", HFILL }},
+
+ { &hf_bootp_option_client_network_id_major_ver,
+ { "Major Version", "bootp.client_network_id_major",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 94: Major Version", HFILL }},
+
+ { &hf_bootp_option_client_network_id_minor_ver,
+ { "Minor Version", "bootp.client_network_id_minor",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 94: Minor Version", HFILL }},
+
+ { &hf_bootp_option_civic_location_what,
+ { "What", "bootp.option.civic_location.what",
+ FT_UINT8, BASE_DEC, VALS(civic_address_what_values), 0x0,
+ "Option 99: What", HFILL }},
+
+ { &hf_bootp_option_civic_location_country,
+ { "Country", "bootp.option.civic_location.country",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 99: Country", HFILL }},
+
+ { &hf_bootp_option_civic_location_ca_type,
+ { "CA Type", "bootp.option.civic_location.ca_type",
+ FT_UINT8, BASE_DEC, VALS(civic_address_type_values), 0x0,
+ "Option 99: CA Type", HFILL }},
+
+ { &hf_bootp_option_civic_location_ca_length,
+ { "CA Length", "bootp.option.civic_location.ca_length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 99: CA Length", HFILL }},
+
+ { &hf_bootp_option_civic_location_ca_value,
+ { "CA Value", "bootp.option.civic_location.ca_value",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 99: CA Value", HFILL }},
+
+ { &hf_bootp_option_netinfo_parent_server_address,
+ { "NetInfo Parent Server Address", "bootp.option.netinfo_parent_server_address",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 112: NetInfo Parent Server Address", HFILL }},
+
+ { &hf_bootp_option_netinfo_parent_server_tag,
+ { "NetInfo Parent Server Tag", "bootp.option.netinfo_parent_server_tag",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 113: NetInfo Parent Server Tag", HFILL }},
+
+ { &hf_bootp_option_dhcp_auto_configuration,
+ { "DHCP Auto-Configuration", "bootp.option.dhcp_auto_configuration",
+ FT_UINT8, BASE_DEC, VALS(dhcp_autoconfig), 0x0,
+ "Option 116: DHCP Auto-Configuration", HFILL }},
+
+ { &hf_bootp_option_cl_dss_id_option,
+ { "DSS_ID Type", "bootp.option.cl_dss_id.option",
+ FT_UINT8, BASE_DEC, VALS(cl_dss_id_type_vals), 0x0,
+ "Option 123:CL DSS_ID Type", HFILL }},
+
+ { &hf_bootp_option_cl_dss_id_len,
+ { "DSS_ID Length", "bootp.option.cl_dss_id.len",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 123:CL DSS_ID Length", HFILL }},
+
+ { &hf_bootp_option_cl_dss_id,
+ { "Country", "bootp.option.cl_dss_id",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 123:CL DSS_ID", HFILL }},
+
+ { &hf_bootp_option_vi_class_cl_address_mode,
+ { "CableLab Address Mode", "bootp.option.vi_class.cl_address_mode",
+ FT_UINT8, BASE_DEC, VALS(cablelab_ipaddr_mode_vals), 0x0,
+ "Option 124: CableLab Address Mode", HFILL }},
+
+ { &hf_bootp_option_vi_class_enterprise,
+ { "Enterprise", "bootp.option.vi_class.enterprise",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &sminmpec_values_ext, 0x00,
+ "Option 124: Enterprise", HFILL }},
+
+ { &hf_bootp_option_vi_class_data_length,
+ { "CableLab Address Mode", "bootp.option.vi_class.length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 124: Length", HFILL }},
+
+ { &hf_bootp_option_vi_class_data,
+ { "NetInfo Parent Server Tag", "bootp.option.vi_class.data",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 124: Data", HFILL }},
+
+ { &hf_bootp_option125_enterprise,
+ { "Enterprise", "bootp.option.vi.enterprise",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &sminmpec_values_ext, 0x00,
+ "Option 125: Enterprise", HFILL }},
+
+ { &hf_bootp_option125_value,
+ { "Value", "bootp.option.vi.value",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Option 125: Suboption value", HFILL }},
+
+ { &hf_bootp_option125_value_8,
+ { "Value", "bootp.option.vi.value",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 125: Suboption 8-bit value", HFILL }},
+
+ { &hf_bootp_option125_value_16,
+ { "Value", "bootp.option.vi.value",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Option 125: Suboption 16-bit value", HFILL }},
+
+ { &hf_bootp_option125_value_ip_address,
+ { "Value", "bootp.option.vi.value",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 125: Suboption IP address value", HFILL }},
+
+ { &hf_bootp_option125_value_stringz,
+ { "Value", "bootp.option.vi.value",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 125: Suboption Z-String value", HFILL }},
+
+ { &hf_bootp_option125_tr111_suboption,
+ { "Option 125 Suboption", "bootp.option.vi.tr111.suboption",
+ FT_UINT8, BASE_DEC, VALS(option125_tr111_suboption_vals), 0x0,
+ "Option 125:TR 111 Suboption", HFILL }},
+
+ { &hf_bootp_option125_tr111_device_manufacturer_oui,
+ { "DeviceManufacturerOUI", "bootp.option.vi.tr111.device_manufacturer_oui",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 125:TR 111 1 DeviceManufacturerOUI", HFILL }},
+
+ { &hf_bootp_option125_tr111_device_serial_number,
+ { "DeviceSerialNumber", "bootp.option.vi.tr111.device_serial_number",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 125:TR 111 2 DeviceSerialNumber", HFILL }},
+
+ { &hf_bootp_option125_tr111_device_product_class,
+ { "DeviceProductClass", "bootp.option.vi.tr111.device_product_class",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 125:TR 111 3 DeviceProductClass", HFILL }},
+
+ { &hf_bootp_option125_tr111_gateway_manufacturer_oui,
+ { "GatewayManufacturerOUI", "bootp.option.vi.tr111.gateway_manufacturer_oui",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 125:TR 111 4 GatewayManufacturerOUI", HFILL }},
+
+ { &hf_bootp_option125_tr111_gateway_serial_number,
+ { "GatewaySerialNumber", "bootp.option.vi.tr111.gateway_serial_number",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 125:TR 111 5 GatewaySerialNumber", HFILL }},
+
+ { &hf_bootp_option125_tr111_gateway_product_class,
+ { "GatewayProductClass", "bootp.option.vi.tr111.gateway_product_class",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 125:TR 111 6 GatewayProductClass", HFILL }},
+
+ { &hf_bootp_option125_cl_suboption,
+ { "Option 125 Suboption", "bootp.option.vi.cl.suboption",
+ FT_UINT8, BASE_DEC, VALS(option125_cl_suboption_vals), 0x0,
+ "Option 125:CL Suboption", HFILL }},
+
+ { &hf_bootp_option125_cl_option_request,
+ { "Option Request", "bootp.option.vi.cl.option_request",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 125:CL 1 Option Request", HFILL }},
+
+ { &hf_bootp_option125_cl_tftp_server_addresses,
+ { "TFTP Server Addresses", "bootp.option.vi.cl.tftp_server_addresses",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 125:CL 2 TFTP Server Addresses", HFILL }},
+
+ { &hf_bootp_option125_cl_erouter_container_option,
+ { "eRouter Container Option", "bootp.option.vi.cl.erouter_container_option",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Option 125:CL 3 eRouter Container Option", HFILL }},
+
+ { &hf_bootp_option125_cl_mib_environment_indicator_option,
+ { "MIB Environment Indicator Option", "bootp.option.vi.cl.suboption",
+ FT_UINT8, BASE_DEC, VALS(pkt_mib_env_ind_opt_vals), 0x0,
+ "Option 125:CL 4 MIB Environment Indicator Option", HFILL }},
+
+ { &hf_bootp_option125_cl_modem_capabilities,
+ { "Modem Capabilities", "bootp.option.vi.cl.modem_capabilities",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Option 125:CL 5 Modem Capabilities", HFILL }},
+
+ { &hf_bootp_option_subnet_selection_option,
+ { "Subnet Selection Option", "bootp.option.subnet_selection_option",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 118: Subnet Selection Option", HFILL }},
+
+ { &hf_bootp_option_lost_server_domain_name,
+ { "LoST Server Domain Name", "bootp.option.lost_server_domain_name",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 137: LoST Server Domain Name", HFILL }},
+
+ { &hf_bootp_option_capwap_access_controller,
+ { "CAPWAP Access Controllers", "bootp.option.capwap_access_controller",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 138: CAPWAP Access Controllers", HFILL }},
+
+ { &hf_bootp_option_tftp_server_address,
+ { "TFTP Server Address", "bootp.option.tftp_server_address",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 150: TFTP Server Address", HFILL }},
+
+ { &hf_bootp_option_6RD_ipv4_mask_len,
+ { "6RD IPv4 Mask Length", "bootp.option.6RD.ipv4_mask_len",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 212: 6RD IPv4 Mask Length", HFILL }},
+
+ { &hf_bootp_option_6RD_prefix_len,
+ { "6RD Prefix Length", "bootp.option.6RD.prefix_len",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 212: 6RD Prefix Length", HFILL }},
+
+ { &hf_bootp_option_6RD_prefix,
+ { "6RD Prefix", "bootp.option.6RD.prefix",
+ FT_IPv6, BASE_NONE, NULL, 0x00,
+ "Option 212: 6RD Prefix", HFILL }},
+
+ { &hf_bootp_option_6RD_border_relay_ip,
+ { "Border Relay IP", "bootp.option.6RD.border_relay_ip",
+ FT_IPv4, BASE_NONE, NULL, 0x00,
+ "Option 212: Border Relay IP", HFILL }},
+
+ { &hf_bootp_option_private_proxy_autodiscovery,
+ { "Private/Proxy autodiscovery", "bootp.option.private_proxy_autodiscovery",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Option 252: Private/Proxy autodiscovery", HFILL }},
+
+ { &hf_bootp_option_end,
+ { "Option End", "bootp.option.end",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 255: End", HFILL }},
+
+ { &hf_bootp_option_end_overload,
+ { "Option End (Overload)", "bootp.option.end",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Option 255: End (Overload)", HFILL }},
+
};
static uat_field_t bootp_uat_flds[] = {
@@ -5325,24 +6419,24 @@ proto_register_bootp(void)
prefs_register_obsolete_preference(bootp_module, "displayasstring");
bootp_uat = uat_new("Custom BootP/DHCP Options (Excl. suboptions)",
- sizeof(uat_bootp_record_t), /* record size */
- "custom_bootp", /* filename */
- TRUE, /* from_profile */
- (void*) &uat_bootp_records, /* data_ptr */
- &num_bootp_records_uat, /* numitems_ptr */
- UAT_CAT_GENERAL, /* category */
- NULL, /* help */
- uat_bootp_record_copy_cb, /* copy callback */
- uat_bootp_record_update_cb, /* update callback */
- uat_bootp_record_free_cb, /* free callback */
- NULL, /* post update callback */
- bootp_uat_flds); /* UAT field definitions */
+ sizeof(uat_bootp_record_t), /* record size */
+ "custom_bootp", /* filename */
+ TRUE, /* from_profile */
+ (void*) &uat_bootp_records, /* data_ptr */
+ &num_bootp_records_uat, /* numitems_ptr */
+ UAT_CAT_GENERAL, /* category */
+ NULL, /* help */
+ uat_bootp_record_copy_cb, /* copy callback */
+ uat_bootp_record_update_cb, /* update callback */
+ uat_bootp_record_free_cb, /* free callback */
+ NULL, /* post update callback */
+ bootp_uat_flds); /* UAT field definitions */
prefs_register_uat_preference(bootp_module,
- "custom_bootp_table",
- "Custom BootP/DHCP Options (Excl. suboptions)",
- "Custom BootP/DHCP Options (Excl. suboptions)",
- bootp_uat);
+ "custom_bootp_table",
+ "Custom BootP/DHCP Options (Excl. suboptions)",
+ "Custom BootP/DHCP Options (Excl. suboptions)",
+ bootp_uat);
}
void
diff --git a/epan/dissectors/packet-bootparams.c b/epan/dissectors/packet-bootparams.c
index 0368c68b7a..8f97cb041d 100644
--- a/epan/dissectors/packet-bootparams.c
+++ b/epan/dissectors/packet-bootparams.c
@@ -31,7 +31,12 @@
#include <glib.h>
#include "packet-rpc.h"
-#include "packet-bootparams.h"
+
+#define BOOTPARAMSPROC_NULL 0
+#define BOOTPARAMSPROC_WHOAMI 1
+#define BOOTPARAMSPROC_GETFILE 2
+
+#define BOOTPARAMS_PROGRAM 100026
static int proto_bootparams = -1;
static int hf_bootparams_procedure_v1 = -1;
diff --git a/epan/dissectors/packet-bootparams.h b/epan/dissectors/packet-bootparams.h
deleted file mode 100644
index 963ad32c30..0000000000
--- a/epan/dissectors/packet-bootparams.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* packet-bootparams.h */
-/* $Id$
- *
- * Wireshark - Network traffic analyzer
- * By Gerald Combs <gerald@wireshark.org>
- * Copyright 1998 Gerald Combs
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef PACKET_BOOTPARAMS_H
-#define PACKET_BOOTPARAMS_H
-
-#define BOOTPARAMSPROC_NULL 0
-#define BOOTPARAMSPROC_WHOAMI 1
-#define BOOTPARAMSPROC_GETFILE 2
-
-#define BOOTPARAMS_PROGRAM 100026
-
-#endif
diff --git a/epan/dissectors/packet-brdwlk.c b/epan/dissectors/packet-brdwlk.c
index 5c66e16821..289eb6ae5f 100644
--- a/epan/dissectors/packet-brdwlk.c
+++ b/epan/dissectors/packet-brdwlk.c
@@ -7,17 +7,17 @@
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
- *
+ *
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
@@ -27,16 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
@@ -153,70 +143,70 @@ static const true_false_string tfs_error_ctrl = {
static void
dissect_brdwlk_err(proto_tree *parent_tree, tvbuff_t *tvb, int offset)
{
- proto_item *item=NULL;
- proto_tree *tree=NULL;
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
guint8 flags;
- flags = tvb_get_guint8 (tvb, offset);
- if(parent_tree){
- item=proto_tree_add_uint(parent_tree, hf_brdwlk_error,
+ flags = tvb_get_guint8(tvb, offset);
+ if (parent_tree) {
+ item=proto_tree_add_uint(parent_tree, hf_brdwlk_error,
tvb, offset, 1, flags);
tree=proto_item_add_subtree(item, ett_brdwlk_error);
}
proto_tree_add_boolean(tree, hf_brdwlk_error_plp, tvb, offset, 1, flags);
- if (flags&0x01){
+ if (flags & 0x01) {
proto_item_append_text(item, " Packet Length Present");
}
- flags&=(~( 0x01 ));
+ flags &= (~( 0x01 ));
proto_tree_add_boolean(tree, hf_brdwlk_error_ef, tvb, offset, 1, flags);
- if (flags&0x02){
+ if (flags & 0x02) {
proto_item_append_text(item, " Empty Frame");
}
- flags&=(~( 0x02 ));
+ flags &= (~( 0x02 ));
proto_tree_add_boolean(tree, hf_brdwlk_error_nd, tvb, offset, 1, flags);
- if (flags&0x04){
+ if (flags & 0x04) {
proto_item_append_text(item, " No Data");
}
- flags&=(~( 0x04 ));
+ flags &= (~( 0x04 ));
proto_tree_add_boolean(tree, hf_brdwlk_error_tr, tvb, offset, 1, flags);
- if (flags&0x08){
+ if (flags & 0x08) {
proto_item_append_text(item, " Truncated");
}
- flags&=(~( 0x08 ));
+ flags &= (~( 0x08 ));
proto_tree_add_boolean(tree, hf_brdwlk_error_badcrc, tvb, offset, 1, flags);
- if (flags&0x10){
+ if (flags & 0x10) {
proto_item_append_text(item, " Bad FC CRC");
}
- flags&=(~( 0x10 ));
+ flags &= (~( 0x10 ));
proto_tree_add_boolean(tree, hf_brdwlk_error_ff, tvb, offset, 1, flags);
- if (flags&0x20){
+ if (flags & 0x20) {
proto_item_append_text(item, " Fifo Full");
}
- flags&=(~( 0x20 ));
+ flags &= (~( 0x20 ));
proto_tree_add_boolean(tree, hf_brdwlk_error_jumbo, tvb, offset, 1, flags);
- if (flags&0x40){
+ if (flags & 0x40) {
proto_item_append_text(item, " Jumbo FC Frame");
}
- flags&=(~( 0x40 ));
+ flags &= (~( 0x40 ));
proto_tree_add_boolean(tree, hf_brdwlk_error_ctrl, tvb, offset, 1, flags);
- if (flags&0x80){
+ if (flags & 0x80) {
proto_item_append_text(item, " Ctrl Char Inside Frame");
}
- flags&=(~( 0x80 ));
+ flags &= (~( 0x80 ));
}
/* Code to actually dissect the packets */
static void
-dissect_brdwlk (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+dissect_brdwlk(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
/* Set up structures needed to add the protocol subtree and manage it */
@@ -232,11 +222,11 @@ dissect_brdwlk (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Make entries in Protocol column and Info column on summary display */
col_set_str(pinfo->cinfo, COL_PROTOCOL, "Boardwalk");
-
+
col_clear(pinfo->cinfo, COL_INFO);
- pinfo->vsan = (tvb_get_ntohs (tvb, offset) & 0xFFF);
- sof = (tvb_get_guint8 (tvb, offset) & 0xF0) >> 4;
+ pinfo->vsan = (tvb_get_ntohs(tvb, offset) & 0xFFF);
+ sof = (tvb_get_guint8(tvb, offset) & 0xF0) >> 4;
if ((sof == FCM_DELIM_SOFI3) || (sof == FCM_DELIM_SOFI2) || (sof == FCM_DELIM_SOFI1)
|| (sof == FCM_DELIM_SOFI4)) {
@@ -247,13 +237,13 @@ dissect_brdwlk (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
if (tree) {
- ti = proto_tree_add_protocol_format (tree, proto_brdwlk, tvb, 0,
- hdrlen, "Boardwalk");
+ ti = proto_tree_add_protocol_format(tree, proto_brdwlk, tvb, 0,
+ hdrlen, "Boardwalk");
- brdwlk_tree = proto_item_add_subtree (ti, ett_brdwlk);
+ brdwlk_tree = proto_item_add_subtree(ti, ett_brdwlk);
- proto_tree_add_item (brdwlk_tree, hf_brdwlk_sof, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (brdwlk_tree, hf_brdwlk_vsan, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(brdwlk_tree, hf_brdwlk_sof, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(brdwlk_tree, hf_brdwlk_vsan, tvb, offset, 2, ENC_BIG_ENDIAN);
}
@@ -290,10 +280,10 @@ dissect_brdwlk (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
len -= 4;
reported_len -= 4;
offset = tvb_reported_length(tvb) - 4;
- pkt_cnt = tvb_get_ntohs (tvb, offset);
+ pkt_cnt = tvb_get_ntohs(tvb, offset);
if (tree) {
- proto_tree_add_uint (brdwlk_tree, hf_brdwlk_pktcnt, tvb, offset,
- 2, pkt_cnt);
+ proto_tree_add_uint(brdwlk_tree, hf_brdwlk_pktcnt, tvb, offset,
+ 2, pkt_cnt);
}
dropped_packets = FALSE;
if (pinfo->fd->flags.visited) {
@@ -330,27 +320,27 @@ dissect_brdwlk (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
if (tree) {
- hidden_item = proto_tree_add_boolean (brdwlk_tree, hf_brdwlk_drop,
- tvb, offset, 0, dropped_packets);
+ hidden_item = proto_tree_add_boolean(brdwlk_tree, hf_brdwlk_drop,
+ tvb, offset, 0, dropped_packets);
PROTO_ITEM_SET_HIDDEN(hidden_item);
}
}
packet_count = pkt_cnt;
- error=tvb_get_guint8(tvb, offset+2);
+ error=tvb_get_guint8(tvb, offset+2);
dissect_brdwlk_err(brdwlk_tree, tvb, offset+2);
- eof = tvb_get_guint8 (tvb, offset+3);
+ eof = tvb_get_guint8(tvb, offset+3);
if (eof != FCM_DELIM_EOFN) {
pinfo->sof_eof |= PINFO_EOF_LAST_FRAME;
}
else if (eof != FCM_DELIM_EOFT) {
pinfo->sof_eof |= PINFO_EOF_INVALID;
}
-
+
if (tree) {
- proto_tree_add_item (brdwlk_tree, hf_brdwlk_eof, tvb, offset+3,
- 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(brdwlk_tree, hf_brdwlk_eof, tvb, offset+3,
+ 1, ENC_BIG_ENDIAN);
}
if ((error & BRDWLK_HAS_PLEN) && tree) {
@@ -358,25 +348,25 @@ dissect_brdwlk (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
* is also provided. This length is the size between SOF & EOF
* including FC CRC.
*/
- plen = tvb_get_ntohl (tvb, offset-4);
+ plen = tvb_get_ntohl(tvb, offset-4);
plen *= 4;
- proto_tree_add_uint (brdwlk_tree, hf_brdwlk_plen, tvb, offset-4,
- 4, plen);
-
+ proto_tree_add_uint(brdwlk_tree, hf_brdwlk_plen, tvb, offset-4,
+ 4, plen);
+
#if 0
/* XXX - this would throw an exception if it would increase
* the reported length.
*/
if (error & BRDWLK_TRUNCATED_BIT) {
- tvb_set_reported_length (tvb, plen);
+ tvb_set_reported_length(tvb, plen);
}
#endif
}
}
-
- next_tvb = tvb_new_subset (tvb, 2, len, reported_len);
+
+ next_tvb = tvb_new_subset(tvb, 2, len, reported_len);
if (fc_dissector_handle) {
- call_dissector (fc_dissector_handle, next_tvb, pinfo, tree);
+ call_dissector(fc_dissector_handle, next_tvb, pinfo, tree);
}
}
@@ -394,16 +384,16 @@ brdwlk_init(void)
*/
void
-proto_register_brdwlk (void)
-{
+proto_register_brdwlk(void)
+{
/* Setup list of header fields See Section 1.6.1 for details*/
static hf_register_info hf[] = {
{ &hf_brdwlk_sof,
- {"SOF", "brdwlk.sof", FT_UINT8, BASE_HEX, VALS (brdwlk_sof_vals),
+ {"SOF", "brdwlk.sof", FT_UINT8, BASE_HEX, VALS(brdwlk_sof_vals),
0xF0, NULL, HFILL}},
{ &hf_brdwlk_eof,
- {"EOF", "brdwlk.eof", FT_UINT8, BASE_HEX, VALS (brdwlk_eof_vals),
+ {"EOF", "brdwlk.eof", FT_UINT8, BASE_HEX, VALS(brdwlk_eof_vals),
0x0F, NULL, HFILL}},
{ &hf_brdwlk_error,
{"Error", "brdwlk.error", FT_UINT8, BASE_HEX, NULL, 0x0, NULL,
@@ -464,18 +454,14 @@ proto_register_brdwlk (void)
}
-/* If this dissector uses sub-dissector registration add a registration routine.
- This format is required because a script is used to find these routines and
- create the code that calls these routines.
-*/
void
proto_reg_handoff_brdwlk(void)
{
dissector_handle_t brdwlk_handle;
- brdwlk_handle = create_dissector_handle (dissect_brdwlk, proto_brdwlk);
+ brdwlk_handle = create_dissector_handle(dissect_brdwlk, proto_brdwlk);
dissector_add_uint("ethertype", ETHERTYPE_BRDWALK, brdwlk_handle);
dissector_add_uint("ethertype", 0xABCD, brdwlk_handle);
data_handle = find_dissector("data");
- fc_dissector_handle = find_dissector ("fc");
+ fc_dissector_handle = find_dissector("fc");
}
diff --git a/epan/dissectors/packet-brp.c b/epan/dissectors/packet-brp.c
index 9f4ceee3f1..6944870114 100644
--- a/epan/dissectors/packet-brp.c
+++ b/epan/dissectors/packet-brp.c
@@ -130,15 +130,15 @@ static gint ett_brp_fltype = -1;
/* Preferences */
static guint global_brp_port = 0;
-int
+static int
dissect_brp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *brp_item = NULL;
- proto_tree *brp_tree = NULL;
- gint offset = 0;
- guint8 type = 0;
- guint8 packet_type = tvb_get_guint8(tvb, 0);
+ proto_item *brp_item = NULL;
+ proto_tree *brp_tree = NULL;
+ gint offset = 0;
+ guint8 type = 0;
+ guint8 packet_type = tvb_get_guint8(tvb, 0);
/* If there is a "tree" requested, we handle that request. */
@@ -401,9 +401,9 @@ void proto_register_brp (void)
/* Register preferences */
prefs_register_uint_preference(brp_module, "port",
- "BRP Port",
- "Set the UDP port for BRP messages",
- 10, &global_brp_port);
+ "BRP Port",
+ "Set the UDP port for BRP messages",
+ 10, &global_brp_port);
new_register_dissector("brp", dissect_brp, proto_brp);
}
@@ -411,23 +411,23 @@ void proto_register_brp (void)
/*--- proto_reg_handoff_brp -------------------------------------------*/
void proto_reg_handoff_brp(void)
{
- static gboolean initialized = FALSE;
+ static gboolean initialized = FALSE;
static dissector_handle_t brp_handle;
- static guint saved_brp_port;
+ static guint saved_brp_port;
if (!initialized) {
- brp_handle = new_create_dissector_handle(dissect_brp, proto_brp);
- dissector_add_handle("udp.port", brp_handle);
- initialized = TRUE;
+ brp_handle = new_create_dissector_handle(dissect_brp, proto_brp);
+ dissector_add_handle("udp.port", brp_handle);
+ initialized = TRUE;
} else {
- if (saved_brp_port != 0) {
- dissector_delete_uint("udp.port", saved_brp_port, brp_handle);
- }
+ if (saved_brp_port != 0) {
+ dissector_delete_uint("udp.port", saved_brp_port, brp_handle);
+ }
}
/* Set the port number */
if (global_brp_port != 0) {
- dissector_add_uint("udp.port", global_brp_port, brp_handle);
+ dissector_add_uint("udp.port", global_brp_port, brp_handle);
}
saved_brp_port = global_brp_port;
}
diff --git a/epan/dissectors/packet-bssap.c b/epan/dissectors/packet-bssap.c
index 504b2bcdc8..65c0bb2700 100644
--- a/epan/dissectors/packet-bssap.c
+++ b/epan/dissectors/packet-bssap.c
@@ -37,14 +37,6 @@
#include <glib.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-
#include <epan/packet.h>
#include <epan/prefs.h>
#include <epan/emem.h>
@@ -531,7 +523,7 @@ dissect_bssap_var_parameter(tvbuff_t *tvb, packet_info *pinfo,
return(parameter_length + length_length);
}
-static void
+static int
dissect_bssap_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *bssap_tree,
proto_tree *tree)
{
@@ -586,6 +578,7 @@ dissect_bssap_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *bssap_tree,
dissect_bssap_unknown_message(tvb, bssap_tree);
break;
}
+ return offset;
}
static void
diff --git a/epan/dissectors/packet-bssgp.c b/epan/dissectors/packet-bssgp.c
index bbfc48b57a..f519e43ce7 100644
--- a/epan/dissectors/packet-bssgp.c
+++ b/epan/dissectors/packet-bssgp.c
@@ -2020,7 +2020,6 @@ de_bssgp_ran_app_error_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
break;
default :
proto_tree_add_text(tree, tvb, curr_offset, len, "Unknown Application Error Container");
- curr_offset+=len;
break;
}
return(len);
@@ -2228,7 +2227,7 @@ de_bssgp_rim_routing_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
* and is coded as the value part (octet 3 to octet 10) of the
* Cell Identifier information element specified in sub-clause 11.3.9.
*/
- curr_offset = curr_offset + de_bssgp_cell_id(tvb, tree, pinfo, curr_offset, len, add_string, string_len);
+ de_bssgp_cell_id(tvb, tree, pinfo, curr_offset, len, add_string, string_len);
break;
case 1:
/* RIM Routing Address discriminator = 0001:
@@ -2240,7 +2239,6 @@ de_bssgp_rim_routing_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
/* Octet 10 - 11 RNC-ID (or Extended RNC-ID) */
rnc_id = tvb_get_ntohs(tvb, curr_offset);
proto_tree_add_item(tree, hf_bssgp_rnc_id, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
- curr_offset+=2;
if (add_string)
g_snprintf(add_string, string_len, " %s, RNC-ID %u", add_string, rnc_id);
@@ -6316,7 +6314,7 @@ proto_register_bssgp(void)
},
{ &hf_bssgp_elem_id,
{ "Element ID", "bssgp.elem_id",
- FT_UINT8, BASE_DEC, NULL, 0,
+ FT_UINT8, BASE_HEX, NULL, 0,
NULL, HFILL }
},
{ &hf_bssgp_bss_area_ind,
diff --git a/epan/dissectors/packet-bt-dht.c b/epan/dissectors/packet-bt-dht.c
index b821d37e8d..ae85cd62ee 100644
--- a/epan/dissectors/packet-bt-dht.c
+++ b/epan/dissectors/packet-bt-dht.c
@@ -98,7 +98,7 @@ static const char list_str[] = "list...";
*/
static int
-dissect_bencoded_string(tvbuff_t *tvb, packet_info _U_*pinfo, proto_tree *tree, guint offset, char **result, gboolean tohex, char *label )
+dissect_bencoded_string(tvbuff_t *tvb, packet_info _U_*pinfo, proto_tree *tree, guint offset, char **result, gboolean tohex, const char *label )
{
guint string_len_start;
guint string_len;
@@ -128,7 +128,7 @@ dissect_bencoded_string(tvbuff_t *tvb, packet_info _U_*pinfo, proto_tree *tree,
* *result will be the decoded value
*/
static int
-dissect_bencoded_int(tvbuff_t *tvb, packet_info _U_*pinfo, proto_tree *tree, guint offset, char **result, char *label )
+dissect_bencoded_int(tvbuff_t *tvb, packet_info _U_*pinfo, proto_tree *tree, guint offset, char **result, const char *label )
{
guint start_offset;
@@ -153,7 +153,7 @@ static int dissect_bencoded_dict(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
/* dissect a bencoded list from tvb, start at offset. it's like "lXXXe", "X" is any bencoded thing */
static int
-dissect_bencoded_list(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, char *label )
+dissect_bencoded_list(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const char *label )
{
proto_item *ti;
proto_tree *sub_tree;
@@ -194,7 +194,7 @@ dissect_bencoded_list(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
/* dissect a bt dht error from tvb, start at offset. it's like "li201e9:error msge" */
static int
-dissect_bt_dht_error(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, char **result, char *label )
+dissect_bt_dht_error(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, char **result, const char *label )
{
proto_item *ti;
proto_tree *sub_tree;
@@ -222,7 +222,7 @@ dissect_bt_dht_error(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
/* dissect a bt dht values list from tvb, start at offset. it's like "l6:....6:....e" */
static int
-dissect_bt_dht_values(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, char **result, char *label )
+dissect_bt_dht_values(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, char **result, const char *label )
{
proto_item *ti;
proto_tree *sub_tree;
diff --git a/epan/dissectors/packet-btamp.c b/epan/dissectors/packet-btamp.c
index f651f1a25f..7638977a01 100644
--- a/epan/dissectors/packet-btamp.c
+++ b/epan/dissectors/packet-btamp.c
@@ -86,7 +86,7 @@ static const value_string command_code_vals[] = {
};
static const value_string reason_vals[] = {
- { 0x0000, "Command not understood" },
+ { 0x0000, "Command not understood" },
{ 0, NULL }
};
@@ -109,25 +109,25 @@ static const value_string controller_status_vals[] = {
};
static const value_string status_vals[] = {
- { 0x0000, "Success" },
- { 0x0001, "Invalid Controller ID" },
+ { 0x0000, "Success" },
+ { 0x0001, "Invalid Controller ID" },
{ 0, NULL }
};
static const value_string create_status_vals[] = {
- { 0x0000, "Success" },
- { 0x0001, "Invalid Controller ID" },
- { 0x0002, "Failed - Unable to start link creation" },
- { 0x0003, "Failed - Collision Occurred" },
- { 0x0004, "Failed - AMP Disconnected Physical Link Request packet received" },
- { 0x0005, "Failed - Physical Link Already Exists" },
+ { 0x0000, "Success" },
+ { 0x0001, "Invalid Controller ID" },
+ { 0x0002, "Failed - Unable to start link creation" },
+ { 0x0003, "Failed - Collision Occurred" },
+ { 0x0004, "Failed - AMP Disconnected Physical Link Request packet received" },
+ { 0x0005, "Failed - Physical Link Already Exists" },
{ 0, NULL }
};
static const value_string disc_status_vals[] = {
- { 0x0000, "Success" },
- { 0x0001, "Invalid Controller ID" },
- { 0x0002, "Failed - No Physical Link exists and no Physical Link creation is in progress" },
+ { 0x0000, "Success" },
+ { 0x0001, "Invalid Controller ID" },
+ { 0x0002, "Failed - No Physical Link exists and no Physical Link creation is in progress" },
{ 0, NULL }
};
@@ -138,9 +138,9 @@ dissect_comrej(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tr
reason = tvb_get_letohs(tvb, offset);
proto_tree_add_item(tree, hf_btamp_rej_reason, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ offset += 2;
- switch(reason){
+ switch (reason) {
case 0x0000: /* Command not understood */
break;
@@ -155,10 +155,10 @@ static int
dissect_discoverrequest(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
proto_tree_add_item(tree, hf_btamp_mtu, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ offset += 2;
proto_tree_add_item(tree, hf_btamp_extfeatures, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ offset += 2;
return offset;
}
@@ -166,23 +166,23 @@ dissect_discoverrequest(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto
static int
dissect_controller_entry(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, guint16 idx)
{
- proto_tree *btamp_controller_entry_tree=NULL;
- proto_item *ti_controller_entry=NULL;
+ proto_item *ti_controller_entry;
+ proto_tree *btamp_controller_entry_tree;
- ti_controller_entry=proto_tree_add_none_format(tree,
+ ti_controller_entry = proto_tree_add_none_format(tree,
hf_btamp_controllers, tvb,
offset, 3,
"Entry: %u", idx);
- btamp_controller_entry_tree=proto_item_add_subtree(ti_controller_entry, ett_btamp_controller_entry);
+ btamp_controller_entry_tree = proto_item_add_subtree(ti_controller_entry, ett_btamp_controller_entry);
proto_tree_add_item(btamp_controller_entry_tree, hf_btamp_controller_id, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset+=1;
+ offset += 1;
proto_tree_add_item(btamp_controller_entry_tree, hf_btamp_controller_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset+=1;
+ offset += 1;
proto_tree_add_item(btamp_controller_entry_tree, hf_btamp_controller_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset+=1;
+ offset += 1;
return offset;
}
@@ -190,27 +190,27 @@ dissect_controller_entry(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, prot
static int
dissect_discoverresponse(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
{
- guint16 length;
- guint16 idx = 1;
- proto_tree *btamp_controller_list_tree=NULL;
- proto_item *ti_controller_list=NULL;
+ guint16 length;
+ guint16 idx = 1;
+ proto_item *ti_controller_list;
+ proto_tree *btamp_controller_list_tree;
proto_tree_add_item(tree, hf_btamp_mtu, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ offset += 2;
proto_tree_add_item(tree, hf_btamp_extfeatures, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ offset += 2;
length = tvb_length_remaining(tvb, offset);
- ti_controller_list=proto_tree_add_none_format(tree,
+ ti_controller_list = proto_tree_add_none_format(tree,
hf_btamp_controller_list, tvb,
offset, length,
"Controller list");
- btamp_controller_list_tree=proto_item_add_subtree(ti_controller_list, ett_btamp_controller_list);
+ btamp_controller_list_tree = proto_item_add_subtree(ti_controller_list, ett_btamp_controller_list);
while (tvb_length_remaining(tvb, offset) >= 3) {
offset = dissect_controller_entry(tvb, offset, pinfo, btamp_controller_list_tree, idx);
- ++idx;
+ idx += 1;
}
return offset;
@@ -219,21 +219,21 @@ dissect_discoverresponse(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tr
static int
dissect_changenotify(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
{
- guint16 length;
- guint16 idx = 1;
- proto_tree *btamp_controller_list_tree=NULL;
- proto_item *ti_controller_list=NULL;
+ guint16 length;
+ guint16 idx = 1;
+ proto_item *ti_controller_list;
+ proto_tree *btamp_controller_list_tree;
length = tvb_length_remaining(tvb, offset);
- ti_controller_list=proto_tree_add_none_format(tree,
+ ti_controller_list = proto_tree_add_none_format(tree,
hf_btamp_controller_list, tvb,
offset, length,
"Controller list");
- btamp_controller_list_tree=proto_item_add_subtree(ti_controller_list, ett_btamp_controller_list);
+ btamp_controller_list_tree = proto_item_add_subtree(ti_controller_list, ett_btamp_controller_list);
while (tvb_length_remaining(tvb, offset) >= 3) {
offset = dissect_controller_entry(tvb, offset, pinfo, btamp_controller_list_tree, idx);
- ++idx;
+ idx += 1;
}
return offset;
@@ -249,7 +249,7 @@ static int
dissect_getinforequest(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
proto_tree_add_item(tree, hf_btamp_controller_id, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset+=1;
+ offset += 1;
return offset;
}
@@ -257,34 +257,34 @@ dissect_getinforequest(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_
static int
dissect_getinforesponse(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree *btamp_controller_tree=NULL;
- proto_item *ti_controller=NULL;
+ proto_item *ti_controller;
+ proto_tree *btamp_controller_tree;
proto_tree_add_item(tree, hf_btamp_controller_id, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset+=1;
+ offset += 1;
proto_tree_add_item(tree, hf_btamp_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset+=1;
+ offset += 1;
proto_tree_add_item(tree, hf_btamp_total_bw, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
+ offset += 4;
proto_tree_add_item(tree, hf_btamp_max_guaran_bw, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
+ offset += 4;
proto_tree_add_item(tree, hf_btamp_min_latency, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
+ offset += 4;
- ti_controller=proto_tree_add_none_format(tree,
+ ti_controller = proto_tree_add_none_format(tree,
hf_btamp_pal_caps_mask, tvb,
offset, 2,
"PAL Capabilities");
- btamp_controller_tree=proto_item_add_subtree(ti_controller, ett_btamp_caps);
+ btamp_controller_tree = proto_item_add_subtree(ti_controller, ett_btamp_caps);
proto_tree_add_item(btamp_controller_tree, hf_btamp_pal_caps_guaranteed, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ offset += 2;
proto_tree_add_item(tree, hf_btamp_amp_assoc_size, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ offset += 2;
return offset;
}
@@ -293,7 +293,7 @@ static int
dissect_getampassocrequest(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
proto_tree_add_item(tree, hf_btamp_controller_id, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset+=1;
+ offset += 1;
return offset;
}
@@ -302,7 +302,7 @@ static int
dissect_ampassoc(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
proto_tree_add_item(tree, hf_btamp_amp_assoc, tvb, offset, tvb_length_remaining(tvb, offset), ENC_NA);
- offset+=tvb_length_remaining(tvb, offset);
+ offset += tvb_length_remaining(tvb, offset);
return offset;
}
@@ -311,12 +311,12 @@ static int
dissect_getampassocresponse(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
{
proto_tree_add_item(tree, hf_btamp_controller_id, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset+=1;
+ offset += 1;
proto_tree_add_item(tree, hf_btamp_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset+=1;
+ offset += 1;
- offset=dissect_ampassoc(tvb, offset, pinfo, tree);
+ offset = dissect_ampassoc(tvb, offset, pinfo, tree);
return offset;
}
@@ -325,12 +325,12 @@ static int
dissect_createphysicalrequest(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
{
proto_tree_add_item(tree, hf_btamp_lcontroller_id, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset+=1;
+ offset += 1;
proto_tree_add_item(tree, hf_btamp_rcontroller_id, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset+=1;
+ offset += 1;
- offset=dissect_ampassoc(tvb, offset, pinfo, tree);
+ offset = dissect_ampassoc(tvb, offset, pinfo, tree);
return offset;
}
@@ -339,13 +339,13 @@ static int
dissect_createphysicalresponse(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
proto_tree_add_item(tree, hf_btamp_lcontroller_id, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset+=1;
+ offset += 1;
proto_tree_add_item(tree, hf_btamp_rcontroller_id, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset+=1;
+ offset += 1;
proto_tree_add_item(tree, hf_btamp_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset+=1;
+ offset += 1;
return offset;
}
@@ -354,10 +354,10 @@ static int
dissect_discphysicalchanrequest(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
proto_tree_add_item(tree, hf_btamp_lcontroller_id, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset+=1;
+ offset += 1;
proto_tree_add_item(tree, hf_btamp_rcontroller_id, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset+=1;
+ offset += 1;
return offset;
}
@@ -366,27 +366,27 @@ static int
dissect_discphysicalchanresponse(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
proto_tree_add_item(tree, hf_btamp_lcontroller_id, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset+=1;
+ offset += 1;
proto_tree_add_item(tree, hf_btamp_rcontroller_id, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset+=1;
+ offset += 1;
proto_tree_add_item(tree, hf_btamp_controller_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset+=1;
+ offset += 1;
return offset;
}
-static int dissect_btamp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static int
+dissect_btamp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- int offset=0;
- proto_item *ti=NULL;
- proto_tree *btamp_tree=NULL;
- guint16 length;
- proto_tree *btamp_cmd_tree=NULL;
- proto_item *ti_command=NULL;
- guint8 cmd_code;
- guint16 cmd_length;
+ int offset = 0;
+ proto_tree *btamp_tree = NULL;
+ guint16 length;
+ proto_item *ti_command;
+ proto_tree *btamp_cmd_tree;
+ guint8 cmd_code;
+ guint16 cmd_length;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "AMP");
switch (pinfo->p2p_dir) {
@@ -409,92 +409,94 @@ static int dissect_btamp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
break;
}
- if(tree){
- ti=proto_tree_add_item(tree, proto_btamp, tvb, offset, -1, ENC_NA);
- btamp_tree=proto_item_add_subtree(ti, ett_btamp);
+ if (tree) {
+ proto_item *ti;
+ ti = proto_tree_add_item(tree, proto_btamp, tvb, offset, -1, ENC_NA);
+ btamp_tree = proto_item_add_subtree(ti, ett_btamp);
}
length = tvb_length_remaining(tvb, offset);
- ti_command=proto_tree_add_none_format(btamp_tree,
+ ti_command = proto_tree_add_none_format(btamp_tree,
hf_btamp_command, tvb,
offset, length,
"Command: ");
- btamp_cmd_tree=proto_item_add_subtree(ti_command, ett_btamp_cmd);
+ btamp_cmd_tree = proto_item_add_subtree(ti_command, ett_btamp_cmd);
- cmd_code=tvb_get_guint8(tvb, offset);
- proto_tree_add_item(btamp_cmd_tree, hf_btamp_cmd_code, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ cmd_code = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(btamp_cmd_tree, hf_btamp_cmd_code, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
- proto_tree_add_item(btamp_cmd_tree, hf_btamp_cmd_ident, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(btamp_cmd_tree, hf_btamp_cmd_ident, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
- cmd_length=tvb_get_letohs(tvb, offset);
+ cmd_length = tvb_get_letohs(tvb, offset);
proto_tree_add_item(btamp_cmd_tree, hf_btamp_cmd_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
proto_item_set_len(ti_command, cmd_length+4);
- offset+=2;
+ offset += 2;
switch(cmd_code) {
case 0x01: /* Command Reject */
- offset=dissect_comrej(tvb, offset, pinfo, btamp_cmd_tree);
+ offset = dissect_comrej(tvb, offset, pinfo, btamp_cmd_tree);
break;
case 0x02: /* Discover Request */
- offset=dissect_discoverrequest(tvb, offset, pinfo, btamp_cmd_tree);
+ offset = dissect_discoverrequest(tvb, offset, pinfo, btamp_cmd_tree);
break;
case 0x03: /* Discover Response */
- offset=dissect_discoverresponse(tvb, offset, pinfo, btamp_cmd_tree);
+ offset = dissect_discoverresponse(tvb, offset, pinfo, btamp_cmd_tree);
break;
case 0x04: /* AMP Change Notify */
- offset=dissect_changenotify(tvb, offset, pinfo, btamp_cmd_tree);
+ offset = dissect_changenotify(tvb, offset, pinfo, btamp_cmd_tree);
break;
case 0x05: /* AMP Change Response */
- offset=dissect_changeresponse(tvb, offset, pinfo, btamp_cmd_tree);
+ offset = dissect_changeresponse(tvb, offset, pinfo, btamp_cmd_tree);
break;
case 0x06: /* AMP Get Info Request */
- offset=dissect_getinforequest(tvb, offset, pinfo, btamp_cmd_tree);
+ offset = dissect_getinforequest(tvb, offset, pinfo, btamp_cmd_tree);
break;
case 0x07: /* AMP Get Info Response */
- offset=dissect_getinforesponse(tvb, offset, pinfo, btamp_cmd_tree);
+ offset = dissect_getinforesponse(tvb, offset, pinfo, btamp_cmd_tree);
break;
case 0x08: /* Get AMP Assoc Request */
- offset=dissect_getampassocrequest(tvb, offset, pinfo, btamp_cmd_tree);
+ offset = dissect_getampassocrequest(tvb, offset, pinfo, btamp_cmd_tree);
break;
case 0x09: /* Get AMP Assoc Response */
- offset=dissect_getampassocresponse(tvb, offset, pinfo, btamp_cmd_tree);
+ offset = dissect_getampassocresponse(tvb, offset, pinfo, btamp_cmd_tree);
break;
case 0x0A: /* Create Physical Link Request */
- offset=dissect_createphysicalrequest(tvb, offset, pinfo, btamp_cmd_tree);
+ offset = dissect_createphysicalrequest(tvb, offset, pinfo, btamp_cmd_tree);
break;
case 0x0B: /* Create Physical Link Response */
- offset=dissect_createphysicalresponse(tvb, offset, pinfo, btamp_cmd_tree);
+ offset = dissect_createphysicalresponse(tvb, offset, pinfo, btamp_cmd_tree);
break;
case 0x0c: /* Disconnect Physical Link Request */
- offset=dissect_discphysicalchanrequest(tvb, offset, pinfo, btamp_cmd_tree);
+ offset = dissect_discphysicalchanrequest(tvb, offset, pinfo, btamp_cmd_tree);
break;
case 0x0d: /* Disconnect Physical Link Response */
- offset=dissect_discphysicalchanresponse(tvb, offset, pinfo, btamp_cmd_tree);
+ offset = dissect_discphysicalchanresponse(tvb, offset, pinfo, btamp_cmd_tree);
break;
default:
proto_tree_add_item(btamp_cmd_tree, hf_btamp_cmd_data, tvb, offset, -1, ENC_NA);
- offset+=tvb_length_remaining(tvb, offset);
+ offset += tvb_length_remaining(tvb, offset);
break;
}
proto_item_append_text(ti_command, "%s", val_to_str(cmd_code, command_code_vals, "Unknown PDU (%u)"));
col_append_str(pinfo->cinfo, COL_INFO, val_to_str(cmd_code, command_code_vals, "Unknown PDU (%u)"));
-return offset;
+
+ return offset;
}
/* Register the protocol with Wireshark */
diff --git a/epan/dissectors/packet-bthci_acl.c b/epan/dissectors/packet-bthci_acl.c
index 0e03baa1c9..100abd6a37 100644
--- a/epan/dissectors/packet-bthci_acl.c
+++ b/epan/dissectors/packet-bthci_acl.c
@@ -54,36 +54,36 @@ static int hf_btacl_reassembled_in = -1;
/* Initialize the subtree pointers */
static gint ett_btacl = -1;
-static dissector_handle_t btl2cap_handle=NULL;
+static dissector_handle_t btl2cap_handle = NULL;
static gboolean acl_reassembly = TRUE;
typedef struct _multi_fragment_pdu_t {
- guint32 first_frame;
- guint32 last_frame;
- guint16 tot_len;
- char *reassembled;
- int cur_off; /* counter used by reassembly */
+ guint32 first_frame;
+ guint32 last_frame;
+ guint16 tot_len;
+ char *reassembled;
+ int cur_off; /* counter used by reassembly */
} multi_fragment_pdu_t;
typedef struct _chandle_data_t {
- emem_tree_t *start_fragments; /* indexed by pinfo->fd->num */
+ emem_tree_t *start_fragments; /* indexed by pinfo->fd->num */
} chandle_data_t;
-static emem_tree_t *chandle_tree=NULL;
+static emem_tree_t *chandle_tree = NULL;
static const value_string pb_flag_vals[] = {
{0, "First Non-automatically Flushable Packet"},
{1, "Continuing Fragment"},
{2, "First Automatically Flushable Packet"},
- {0, NULL }
+ {0, NULL }
};
static const value_string bc_flag_vals[] = {
- {0, "Point-To-Point"},
- {1, "Active Broadcast"},
- {2, "Piconet Broadcast"},
- {0, NULL }
+ {0, "Point-To-Point"},
+ {1, "Active Broadcast"},
+ {2, "Piconet Broadcast"},
+ {0, NULL }
};
@@ -92,134 +92,134 @@ static const value_string bc_flag_vals[] = {
static void
dissect_btacl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti=NULL;
- proto_tree *btacl_tree=NULL;
- guint16 flags, length;
- gboolean fragmented;
- int offset=0;
- guint16 pb_flag, l2cap_length=0;
- tvbuff_t *next_tvb;
- bthci_acl_data_t *acl_data;
- chandle_data_t *chandle_data;
- void* pd_save;
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "HCI_ACL");
-
- if(tree){
- ti=proto_tree_add_item(tree, proto_btacl, tvb, offset, -1, ENC_NA);
- btacl_tree = proto_item_add_subtree(ti, ett_btacl);
- }
-
- flags=tvb_get_letohs(tvb, offset);
- pb_flag = (flags & 0x3000) >> 12;
- proto_tree_add_item(btacl_tree, hf_btacl_chandle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(btacl_tree, hf_btacl_pb_flag, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(btacl_tree, hf_btacl_bc_flag, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- acl_data=ep_alloc(sizeof(bthci_acl_data_t));
- acl_data->chandle=flags&0x0fff;
- pd_save = pinfo->private_data;
- pinfo->private_data=acl_data;
-
- /* find the chandle_data structure associated with this chandle */
- chandle_data=se_tree_lookup32(chandle_tree, acl_data->chandle);
- if(!chandle_data){
- chandle_data=se_alloc(sizeof(chandle_data_t));
- chandle_data->start_fragments=se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "bthci_acl fragment starts");
- se_tree_insert32(chandle_tree, acl_data->chandle, chandle_data);
- }
-
- length = tvb_get_letohs(tvb, offset);
- proto_tree_add_item(btacl_tree, hf_btacl_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- /* determine if packet is fragmented */
- switch(pb_flag){
- case 0x01: /* Continuation fragment */
- fragmented = TRUE;
- break;
- case 0x00: /* First fragment/packet, non-auto flushable */
- case 0x02: /* First fragment/packet, auto flushable */
- l2cap_length=tvb_get_letohs(tvb, offset);
- fragmented=((l2cap_length+4)!=length);
- break;
- default:
- /* unknown pb_flag */
- fragmented = FALSE;
- }
-
-
- if((!fragmented)
- || ((!acl_reassembly)&& !(pb_flag&0x01)) ){
- /* call L2CAP dissector for PDUs that are not fragmented
- * also for the first fragment if reassembly is disabled
- */
- next_tvb=tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), length);
- if(btl2cap_handle){
- call_dissector(btl2cap_handle, next_tvb, pinfo, tree);
- }
- pinfo->private_data = pd_save;
- return;
- }
-
- if(fragmented && acl_reassembly){
- multi_fragment_pdu_t *mfp=NULL;
- gint len;
-
- if(!(pb_flag&0x01)){ /* first fragment */
- if(!pinfo->fd->flags.visited){
- mfp=se_alloc(sizeof(multi_fragment_pdu_t));
- mfp->first_frame=pinfo->fd->num;
- mfp->last_frame=0;
- mfp->tot_len=l2cap_length+4;
- mfp->reassembled=se_alloc(mfp->tot_len);
- len = tvb_length_remaining(tvb, offset);
- if (len <= mfp->tot_len) {
- tvb_memcpy(tvb, (guint8*)mfp->reassembled, offset, len);
- mfp->cur_off=len;
- se_tree_insert32(chandle_data->start_fragments, pinfo->fd->num, mfp);
- }
- } else {
- mfp=se_tree_lookup32(chandle_data->start_fragments, pinfo->fd->num);
- }
- if(mfp != NULL && mfp->last_frame){
- proto_item *item;
- item=proto_tree_add_uint(btacl_tree, hf_btacl_reassembled_in, tvb, 0, 0, mfp->last_frame);
- PROTO_ITEM_SET_GENERATED(item);
- col_append_fstr(pinfo->cinfo, COL_INFO, " [Reassembled in #%u]", mfp->last_frame);
- }
- }
- if(pb_flag==0x01){ /* continuation fragment */
- mfp=se_tree_lookup32_le(chandle_data->start_fragments, pinfo->fd->num);
- if(!pinfo->fd->flags.visited){
- len = tvb_length_remaining(tvb, offset);
- if(mfp != NULL && !mfp->last_frame && (mfp->tot_len>=mfp->cur_off+len)){
- tvb_memcpy(tvb, (guint8*)mfp->reassembled+mfp->cur_off, offset, len);
- mfp->cur_off+=len;
- if(mfp->cur_off==mfp->tot_len){
- mfp->last_frame=pinfo->fd->num;
- }
- }
- }
- if(mfp){
- proto_item *item;
- item=proto_tree_add_uint(btacl_tree, hf_btacl_continuation_to, tvb, 0, 0, mfp->first_frame);
- PROTO_ITEM_SET_GENERATED(item);
- col_append_fstr(pinfo->cinfo, COL_INFO, " [Continuation to #%u]", mfp->first_frame);
- }
- if(mfp != NULL && mfp->last_frame==pinfo->fd->num){
- next_tvb = tvb_new_child_real_data(tvb, (guint8*)mfp->reassembled, mfp->tot_len, mfp->tot_len);
- add_new_data_source(pinfo, next_tvb, "Reassembled BTHCI ACL");
-
- /* call L2CAP dissector */
- if(btl2cap_handle){
- call_dissector(btl2cap_handle, next_tvb, pinfo, tree);
- }
- }
- }
- }
- pinfo->private_data = pd_save;
+ proto_item *ti = NULL;
+ proto_tree *btacl_tree = NULL;
+ guint16 flags, length;
+ gboolean fragmented;
+ int offset = 0;
+ guint16 pb_flag, l2cap_length = 0;
+ tvbuff_t *next_tvb;
+ bthci_acl_data_t *acl_data;
+ chandle_data_t *chandle_data;
+ void* pd_save;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "HCI_ACL");
+
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_btacl, tvb, offset, -1, ENC_NA);
+ btacl_tree = proto_item_add_subtree(ti, ett_btacl);
+ }
+
+ flags = tvb_get_letohs(tvb, offset);
+ pb_flag = (flags & 0x3000) >> 12;
+ proto_tree_add_item(btacl_tree, hf_btacl_chandle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(btacl_tree, hf_btacl_pb_flag, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(btacl_tree, hf_btacl_bc_flag, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ acl_data = ep_alloc(sizeof(bthci_acl_data_t));
+ acl_data->chandle = flags&0x0fff;
+ pd_save = pinfo->private_data;
+ pinfo->private_data = acl_data;
+
+ /* find the chandle_data structure associated with this chandle */
+ chandle_data = se_tree_lookup32(chandle_tree, acl_data->chandle);
+ if (!chandle_data) {
+ chandle_data = se_alloc(sizeof(chandle_data_t));
+ chandle_data->start_fragments = se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "bthci_acl fragment starts");
+ se_tree_insert32(chandle_tree, acl_data->chandle, chandle_data);
+ }
+
+ length = tvb_get_letohs(tvb, offset);
+ proto_tree_add_item(btacl_tree, hf_btacl_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+
+ /* determine if packet is fragmented */
+ switch(pb_flag) {
+ case 0x01: /* Continuation fragment */
+ fragmented = TRUE;
+ break;
+ case 0x00: /* First fragment/packet, non-auto flushable */
+ case 0x02: /* First fragment/packet, auto flushable */
+ l2cap_length = tvb_get_letohs(tvb, offset);
+ fragmented = ((l2cap_length+4)!=length);
+ break;
+ default:
+ /* unknown pb_flag */
+ fragmented = FALSE;
+ }
+
+
+ if ((!fragmented)
+ || ((!acl_reassembly)&& !(pb_flag&0x01))) {
+ /* call L2CAP dissector for PDUs that are not fragmented
+ * also for the first fragment if reassembly is disabled
+ */
+ next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), length);
+ if (btl2cap_handle) {
+ call_dissector(btl2cap_handle, next_tvb, pinfo, tree);
+ }
+ pinfo->private_data = pd_save;
+ return;
+ }
+
+ if (fragmented && acl_reassembly) {
+ multi_fragment_pdu_t *mfp = NULL;
+ gint len;
+
+ if (!(pb_flag&0x01)) { /* first fragment */
+ if (!pinfo->fd->flags.visited) {
+ mfp = se_alloc(sizeof(multi_fragment_pdu_t));
+ mfp->first_frame = pinfo->fd->num;
+ mfp->last_frame = 0;
+ mfp->tot_len = l2cap_length+4;
+ mfp->reassembled = se_alloc(mfp->tot_len);
+ len = tvb_length_remaining(tvb, offset);
+ if (len <= mfp->tot_len) {
+ tvb_memcpy(tvb, (guint8*)mfp->reassembled, offset, len);
+ mfp->cur_off = len;
+ se_tree_insert32(chandle_data->start_fragments, pinfo->fd->num, mfp);
+ }
+ } else {
+ mfp = se_tree_lookup32(chandle_data->start_fragments, pinfo->fd->num);
+ }
+ if (mfp != NULL && mfp->last_frame) {
+ proto_item *item;
+ item = proto_tree_add_uint(btacl_tree, hf_btacl_reassembled_in, tvb, 0, 0, mfp->last_frame);
+ PROTO_ITEM_SET_GENERATED(item);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " [Reassembled in #%u]", mfp->last_frame);
+ }
+ }
+ if (pb_flag == 0x01) { /* continuation fragment */
+ mfp = se_tree_lookup32_le(chandle_data->start_fragments, pinfo->fd->num);
+ if (!pinfo->fd->flags.visited) {
+ len = tvb_length_remaining(tvb, offset);
+ if (mfp != NULL && !mfp->last_frame && (mfp->tot_len>=mfp->cur_off+len)) {
+ tvb_memcpy(tvb, (guint8*)mfp->reassembled+mfp->cur_off, offset, len);
+ mfp->cur_off+=len;
+ if (mfp->cur_off == mfp->tot_len) {
+ mfp->last_frame = pinfo->fd->num;
+ }
+ }
+ }
+ if (mfp) {
+ proto_item *item;
+ item = proto_tree_add_uint(btacl_tree, hf_btacl_continuation_to, tvb, 0, 0, mfp->first_frame);
+ PROTO_ITEM_SET_GENERATED(item);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " [Continuation to #%u]", mfp->first_frame);
+ }
+ if (mfp != NULL && mfp->last_frame == pinfo->fd->num) {
+ next_tvb = tvb_new_child_real_data(tvb, (guint8*)mfp->reassembled, mfp->tot_len, mfp->tot_len);
+ add_new_data_source(pinfo, next_tvb, "Reassembled BTHCI ACL");
+
+ /* call L2CAP dissector */
+ if (btl2cap_handle) {
+ call_dissector(btl2cap_handle, next_tvb, pinfo, tree);
+ }
+ }
+ }
+ }
+ pinfo->private_data = pd_save;
}
@@ -227,77 +227,81 @@ void
proto_register_btacl(void)
{
- /* Setup list of header fields See Section 1.6.1 for details*/
- static hf_register_info hf[] = {
- { &hf_btacl_chandle,
- { "Connection Handle", "bthci_acl.chandle",
- FT_UINT16, BASE_HEX, NULL, 0x0FFF,
- NULL, HFILL }
- },
- { &hf_btacl_pb_flag,
- { "PB Flag", "bthci_acl.pb_flag",
- FT_UINT16, BASE_DEC, VALS(pb_flag_vals), 0x3000,
- "Packet Boundary Flag", HFILL }
- },
- { &hf_btacl_bc_flag,
- { "BC Flag", "bthci_acl.bc_flag",
- FT_UINT16, BASE_DEC, VALS(bc_flag_vals), 0xC000,
- "Broadcast Flag", HFILL }
- },
- { &hf_btacl_length,
- { "Data Total Length", "bthci_acl.length",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_btacl_data,
- { "Data", "bthci_acl.data",
- FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_btacl_continuation_to,
- { "This is a continuation to the PDU in frame", "bthci_acl.continuation_to", FT_FRAMENUM, BASE_NONE, NULL, 0x0,
- "This is a continuation to the PDU in frame #", HFILL }},
- { &hf_btacl_reassembled_in,
- { "This PDU is reassembled in frame", "bthci_acl.reassembled_in", FT_FRAMENUM, BASE_NONE, NULL, 0x0,
- "This PDU is reassembled in frame #", HFILL }},
- };
-
- /* Setup protocol subtree array */
- static gint *ett[] = {
- &ett_btacl,
- };
- module_t *btacl_module;
-
- /* Register the protocol name and description */
- proto_btacl = proto_register_protocol("Bluetooth HCI ACL Packet", "HCI_ACL", "bthci_acl");
- register_dissector("bthci_acl", dissect_btacl, proto_btacl);
-
- /* Required function calls to register the header fields and subtrees used */
- proto_register_field_array(proto_btacl, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
-
- /* Register configuration preferences */
- btacl_module = prefs_register_protocol(proto_btacl, NULL);
- prefs_register_bool_preference(btacl_module, "btacl_reassembly",
- "Reassemble ACL Fragments",
- "Whether the ACL dissector should reassemble fragmented PDUs",
- &acl_reassembly);
-
- chandle_tree=se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "bthci_acl chandles");
+ /* Setup list of header fields See Section 1.6.1 for details*/
+ static hf_register_info hf[] = {
+ { &hf_btacl_chandle,
+ { "Connection Handle", "bthci_acl.chandle",
+ FT_UINT16, BASE_HEX, NULL, 0x0FFF,
+ NULL, HFILL }
+ },
+ { &hf_btacl_pb_flag,
+ { "PB Flag", "bthci_acl.pb_flag",
+ FT_UINT16, BASE_DEC, VALS(pb_flag_vals), 0x3000,
+ "Packet Boundary Flag", HFILL }
+ },
+ { &hf_btacl_bc_flag,
+ { "BC Flag", "bthci_acl.bc_flag",
+ FT_UINT16, BASE_DEC, VALS(bc_flag_vals), 0xC000,
+ "Broadcast Flag", HFILL }
+ },
+ { &hf_btacl_length,
+ { "Data Total Length", "bthci_acl.length",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_btacl_data,
+ { "Data", "bthci_acl.data",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_btacl_continuation_to,
+ { "This is a continuation to the PDU in frame", "bthci_acl.continuation_to",
+ FT_FRAMENUM, BASE_NONE, NULL, 0x0,
+ "This is a continuation to the PDU in frame #", HFILL }
+ },
+ { &hf_btacl_reassembled_in,
+ { "This PDU is reassembled in frame", "bthci_acl.reassembled_in",
+ FT_FRAMENUM, BASE_NONE, NULL, 0x0,
+ "This PDU is reassembled in frame #", HFILL }
+ },
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_btacl,
+ };
+ module_t *btacl_module;
+
+ /* Register the protocol name and description */
+ proto_btacl = proto_register_protocol("Bluetooth HCI ACL Packet", "HCI_ACL", "bthci_acl");
+ register_dissector("bthci_acl", dissect_btacl, proto_btacl);
+
+ /* Required function calls to register the header fields and subtrees used */
+ proto_register_field_array(proto_btacl, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ /* Register configuration preferences */
+ btacl_module = prefs_register_protocol(proto_btacl, NULL);
+ prefs_register_bool_preference(btacl_module, "btacl_reassembly",
+ "Reassemble ACL Fragments",
+ "Whether the ACL dissector should reassemble fragmented PDUs",
+ &acl_reassembly);
+
+ chandle_tree = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "bthci_acl chandles");
}
void
proto_reg_handoff_btacl(void)
{
- dissector_handle_t bthci_acl_handle;
+ dissector_handle_t bthci_acl_handle;
- bthci_acl_handle = find_dissector("bthci_acl");
- dissector_add_uint("hci_h4.type", HCI_H4_TYPE_ACL, bthci_acl_handle);
- dissector_add_uint("hci_h1.type", BTHCI_CHANNEL_ACL, bthci_acl_handle);
+ bthci_acl_handle = find_dissector("bthci_acl");
+ dissector_add_uint("hci_h4.type", HCI_H4_TYPE_ACL, bthci_acl_handle);
+ dissector_add_uint("hci_h1.type", BTHCI_CHANNEL_ACL, bthci_acl_handle);
- btl2cap_handle = find_dissector("btl2cap");
+ btl2cap_handle = find_dissector("btl2cap");
}
diff --git a/epan/dissectors/packet-bthci_acl.h b/epan/dissectors/packet-bthci_acl.h
index c2f4a3ee94..c116078523 100644
--- a/epan/dissectors/packet-bthci_acl.h
+++ b/epan/dissectors/packet-bthci_acl.h
@@ -25,7 +25,7 @@
#define __PACKET_BTHCI_ACL_H__
typedef struct _bthci_acl_data_t {
- guint16 chandle; /* only low 12 bits used */
+ guint16 chandle; /* only low 12 bits used */
} bthci_acl_data_t;
#endif
diff --git a/epan/dissectors/packet-bthci_cmd.c b/epan/dissectors/packet-bthci_cmd.c
index 769220dc4d..fca9dfd0bf 100644
--- a/epan/dissectors/packet-bthci_cmd.c
+++ b/epan/dissectors/packet-bthci_cmd.c
@@ -239,1646 +239,1646 @@ static gint ett_eir_subtree = -1;
static gint ett_eir_struct_subtree = -1;
static const value_string bthci_cmd_opcode_vals[] = {
- {0x0000, "No Operation"},
- {0x0401, "Inquiry"},
- {0x0402, "Inquiry Cancel"},
- {0x0403, "Periodic Inquiry Mode"},
- {0x0404, "Exit Periodic Inquiry Mode"},
- {0x0405, "Create Connection"},
- {0x0406, "Disconnect"},
- {0x0407, "Add SCO Connection"},
- {0x0408, "Create Connection Cancel"},
- {0x0409, "Accept Connection Request"},
- {0x040a, "Reject Connection Request"},
- {0x040b, "Link Key Request Reply"},
- {0x040c, "Link Key Request Negative Reply"},
- {0x040d, "PIN Code Request Reply"},
- {0x040e, "PIN Code Request Negative Reply"},
- {0x040f, "Change Connection Packet Type"},
- {0x0411, "Authentication Requested"},
- {0x0413, "Set Connection Encryption"},
- {0x0415, "Change Connection Link Key"},
- {0x0417, "Master Link Key"},
- {0x0419, "Remote Name Request"},
- {0x041a, "Remote Name Request Cancel"},
- {0x041b, "Read Remote Supported Features"},
- {0x041c, "Read Remote Extended Features"},
- {0x041d, "Read Remote Version Information"},
- {0x041f, "Read Clock offset"},
- {0x0420, "Read LMP Handle"},
- {0x0428, "Setup Synchronous Connection"},
- {0x0429, "Accept Synchronous Connection Request"},
- {0x042a, "Reject Synchronous Connection Request"},
- {0x042b, "IO Capability Request Reply"},
- {0x042c, "User Confirmation Request Reply"},
- {0x042d, "User Confirmation Request Negative Reply"},
- {0x042e, "User Passkey Request Reply"},
- {0x042f, "User Passkey Request Negative Reply"},
- {0x0430, "Remote OOB Data Request Reply"},
- {0x0433, "Remote OOB Data Request Negative Reply"},
- {0x0801, "Hold Mode"},
- {0x0803, "Sniff Mode"},
- {0x0804, "Exit Sniff Mode"},
- {0x0805, "Park Mode"},
- {0x0806, "Exit Park Mode"},
- {0x0807, "QoS Setup"},
- {0x0809, "Role Discovery"},
- {0x080b, "Switch Role"},
- {0x080c, "Read Link Policy Settings"},
- {0x080d, "Write Link Policy Settings"},
- {0x080e, "Read Default Link Policy Settings"},
- {0x080f, "Write Default Link Policy Settings"},
- {0x0810, "Flow Specification"},
- {0x0811, "Sniff Subrating"},
- {0x0c01, "Set Event Mask"},
- {0x0c03, "Reset"},
- {0x0c05, "Set Event Filter"},
- {0x0c08, "Flush"},
- {0x0c09, "Read PIN Type "},
- {0x0c0a, "Write PIN Type"},
- {0x0c0b, "Create New Unit Key"},
- {0x0c0d, "Read Stored Link Key"},
- {0x0c11, "Write Stored Link Key"},
- {0x0c12, "Delete Stored Link Key"},
- {0x0c13, "Change Local Name"},
- {0x0c14, "Read Local Name"},
- {0x0c15, "Read Connection Accept Timeout"},
- {0x0c16, "Write Connection Accept Timeout"},
- {0x0c17, "Read Page Timeout"},
- {0x0c18, "Write Page Timeout"},
- {0x0c19, "Read Scan Enable"},
- {0x0c1a, "Write Scan Enable"},
- {0x0c1b, "Read Page Scan Activity"},
- {0x0c1c, "Write Page Scan Activity"},
- {0x0c1d, "Read Inquiry Scan Activity"},
- {0x0c1e, "Write Inquiry Scan Activity"},
- {0x0c1f, "Read Authentication Enable"},
- {0x0c20, "Write Authentication Enable"},
- {0x0c21, "Read Encryption Mode"},
- {0x0c22, "Write Encryption Mode"},
- {0x0c23, "Read Class of Device"},
- {0x0c24, "Write Class of Device"},
- {0x0c25, "Read Voice Setting"},
- {0x0c26, "Write Voice Setting"},
- {0x0c27, "Read Automatic Flush Timeout"},
- {0x0c28, "Write Automatic Flush Timeout"},
- {0x0c29, "Read Num Broadcast Retransmissions"},
- {0x0c2a, "Write Num Broadcast Retransmissions"},
- {0x0c2b, "Read Hold Mode Activity "},
- {0x0c2c, "Write Hold Mode Activity"},
- {0x0c2d, "Read Tx Power Level"},
- {0x0c2e, "Read SCO Flow Control Enable"},
- {0x0c2f, "Write SCO Flow Control Enable"},
- {0x0c31, "Set Host Controller To Host Flow Control"},
- {0x0c33, "Host Buffer Size"},
- {0x0c35, "Host Number of Completed Packets"},
- {0x0c36, "Read Link Supervision Timeout"},
- {0x0c37, "Write Link Supervision Timeout"},
- {0x0c38, "Read Number of Supported IAC"},
- {0x0c39, "Read Current IAC LAP"},
- {0x0c3a, "Write Current IAC LAP"},
- {0x0c3b, "Read Page Scan Period Mode"},
- {0x0c3c, "Write Page Scan Period Mode"},
- {0x0c3d, "Read Page Scan Mode"},
- {0x0c3e, "Write Page Scan Mode"},
- {0x0c3f, "Set AFH Host Channel Classification"},
- {0x0c42, "Read Inquiry Scan Type"},
- {0x0c43, "Write Inquiry Scan Type"},
- {0x0c44, "Read Inquiry Mode"},
- {0x0c45, "Write Inquiry Mode"},
- {0x0c46, "Read Page Scan Type"},
- {0x0c47, "Write Page Scan Type"},
- {0x0c48, "Read AFH Channel Assessment Mode"},
- {0x0c49, "Write AFH Channel Assessment Mode"},
- {0x0c51, "Read Extended Inquiry Response"},
- {0x0c52, "Write Extended Inquiry Response"},
- {0x0c53, "Refresh Encryption Key"},
- {0x0c55, "Read Simple Pairing Mode"},
- {0x0c56, "Write Simple Pairing Mode"},
- {0x0c57, "Read Local OOB Data"},
- {0x0c58, "Read Inquiry Response Tx Power Level"},
- {0x0c59, "Write Inquiry Tx Power Level"},
- {0x0c5a, "Read Default Erroneous Data Reporting"},
- {0x0c5b, "Write Default Erroneous Data Reporting"},
- {0x0c5f, "Enhanced Flush"},
- {0x0c60, "Send Keypress Notification"},
- {0x1001, "Read Local Version Information"},
- {0x1002, "Read Local Supported Commands"},
- {0x1003, "Read Local Supported Features"},
- {0x1004, "Read Local Extended Features"},
- {0x1005, "Read Buffer Size"},
- {0x1007, "Read Country Code"},
- {0x1009, "Read BD ADDR"},
- {0x1401, "Read Failed Contact Counter"},
- {0x1402, "Reset Failed Contact Counter"},
- {0x1403, "Read Link Quality"},
- {0x1405, "Read RSSI"},
- {0x1406, "Read AFH Channel Map"},
- {0x1407, "Read Clock"},
- {0x1801, "Read Loopback Mode"},
- {0x1802, "Write Loopback Mode"},
- {0x1803, "Enable Device Under Test Mode"},
- {0x1804, "Write Simple Pairing Debug Mode"},
- {0xfc00, "Vendor-Specific"},
- {0, NULL}
+ {0x0000, "No Operation"},
+ {0x0401, "Inquiry"},
+ {0x0402, "Inquiry Cancel"},
+ {0x0403, "Periodic Inquiry Mode"},
+ {0x0404, "Exit Periodic Inquiry Mode"},
+ {0x0405, "Create Connection"},
+ {0x0406, "Disconnect"},
+ {0x0407, "Add SCO Connection"},
+ {0x0408, "Create Connection Cancel"},
+ {0x0409, "Accept Connection Request"},
+ {0x040a, "Reject Connection Request"},
+ {0x040b, "Link Key Request Reply"},
+ {0x040c, "Link Key Request Negative Reply"},
+ {0x040d, "PIN Code Request Reply"},
+ {0x040e, "PIN Code Request Negative Reply"},
+ {0x040f, "Change Connection Packet Type"},
+ {0x0411, "Authentication Requested"},
+ {0x0413, "Set Connection Encryption"},
+ {0x0415, "Change Connection Link Key"},
+ {0x0417, "Master Link Key"},
+ {0x0419, "Remote Name Request"},
+ {0x041a, "Remote Name Request Cancel"},
+ {0x041b, "Read Remote Supported Features"},
+ {0x041c, "Read Remote Extended Features"},
+ {0x041d, "Read Remote Version Information"},
+ {0x041f, "Read Clock offset"},
+ {0x0420, "Read LMP Handle"},
+ {0x0428, "Setup Synchronous Connection"},
+ {0x0429, "Accept Synchronous Connection Request"},
+ {0x042a, "Reject Synchronous Connection Request"},
+ {0x042b, "IO Capability Request Reply"},
+ {0x042c, "User Confirmation Request Reply"},
+ {0x042d, "User Confirmation Request Negative Reply"},
+ {0x042e, "User Passkey Request Reply"},
+ {0x042f, "User Passkey Request Negative Reply"},
+ {0x0430, "Remote OOB Data Request Reply"},
+ {0x0433, "Remote OOB Data Request Negative Reply"},
+ {0x0801, "Hold Mode"},
+ {0x0803, "Sniff Mode"},
+ {0x0804, "Exit Sniff Mode"},
+ {0x0805, "Park Mode"},
+ {0x0806, "Exit Park Mode"},
+ {0x0807, "QoS Setup"},
+ {0x0809, "Role Discovery"},
+ {0x080b, "Switch Role"},
+ {0x080c, "Read Link Policy Settings"},
+ {0x080d, "Write Link Policy Settings"},
+ {0x080e, "Read Default Link Policy Settings"},
+ {0x080f, "Write Default Link Policy Settings"},
+ {0x0810, "Flow Specification"},
+ {0x0811, "Sniff Subrating"},
+ {0x0c01, "Set Event Mask"},
+ {0x0c03, "Reset"},
+ {0x0c05, "Set Event Filter"},
+ {0x0c08, "Flush"},
+ {0x0c09, "Read PIN Type "},
+ {0x0c0a, "Write PIN Type"},
+ {0x0c0b, "Create New Unit Key"},
+ {0x0c0d, "Read Stored Link Key"},
+ {0x0c11, "Write Stored Link Key"},
+ {0x0c12, "Delete Stored Link Key"},
+ {0x0c13, "Change Local Name"},
+ {0x0c14, "Read Local Name"},
+ {0x0c15, "Read Connection Accept Timeout"},
+ {0x0c16, "Write Connection Accept Timeout"},
+ {0x0c17, "Read Page Timeout"},
+ {0x0c18, "Write Page Timeout"},
+ {0x0c19, "Read Scan Enable"},
+ {0x0c1a, "Write Scan Enable"},
+ {0x0c1b, "Read Page Scan Activity"},
+ {0x0c1c, "Write Page Scan Activity"},
+ {0x0c1d, "Read Inquiry Scan Activity"},
+ {0x0c1e, "Write Inquiry Scan Activity"},
+ {0x0c1f, "Read Authentication Enable"},
+ {0x0c20, "Write Authentication Enable"},
+ {0x0c21, "Read Encryption Mode"},
+ {0x0c22, "Write Encryption Mode"},
+ {0x0c23, "Read Class of Device"},
+ {0x0c24, "Write Class of Device"},
+ {0x0c25, "Read Voice Setting"},
+ {0x0c26, "Write Voice Setting"},
+ {0x0c27, "Read Automatic Flush Timeout"},
+ {0x0c28, "Write Automatic Flush Timeout"},
+ {0x0c29, "Read Num Broadcast Retransmissions"},
+ {0x0c2a, "Write Num Broadcast Retransmissions"},
+ {0x0c2b, "Read Hold Mode Activity "},
+ {0x0c2c, "Write Hold Mode Activity"},
+ {0x0c2d, "Read Tx Power Level"},
+ {0x0c2e, "Read SCO Flow Control Enable"},
+ {0x0c2f, "Write SCO Flow Control Enable"},
+ {0x0c31, "Set Host Controller To Host Flow Control"},
+ {0x0c33, "Host Buffer Size"},
+ {0x0c35, "Host Number of Completed Packets"},
+ {0x0c36, "Read Link Supervision Timeout"},
+ {0x0c37, "Write Link Supervision Timeout"},
+ {0x0c38, "Read Number of Supported IAC"},
+ {0x0c39, "Read Current IAC LAP"},
+ {0x0c3a, "Write Current IAC LAP"},
+ {0x0c3b, "Read Page Scan Period Mode"},
+ {0x0c3c, "Write Page Scan Period Mode"},
+ {0x0c3d, "Read Page Scan Mode"},
+ {0x0c3e, "Write Page Scan Mode"},
+ {0x0c3f, "Set AFH Host Channel Classification"},
+ {0x0c42, "Read Inquiry Scan Type"},
+ {0x0c43, "Write Inquiry Scan Type"},
+ {0x0c44, "Read Inquiry Mode"},
+ {0x0c45, "Write Inquiry Mode"},
+ {0x0c46, "Read Page Scan Type"},
+ {0x0c47, "Write Page Scan Type"},
+ {0x0c48, "Read AFH Channel Assessment Mode"},
+ {0x0c49, "Write AFH Channel Assessment Mode"},
+ {0x0c51, "Read Extended Inquiry Response"},
+ {0x0c52, "Write Extended Inquiry Response"},
+ {0x0c53, "Refresh Encryption Key"},
+ {0x0c55, "Read Simple Pairing Mode"},
+ {0x0c56, "Write Simple Pairing Mode"},
+ {0x0c57, "Read Local OOB Data"},
+ {0x0c58, "Read Inquiry Response Tx Power Level"},
+ {0x0c59, "Write Inquiry Tx Power Level"},
+ {0x0c5a, "Read Default Erroneous Data Reporting"},
+ {0x0c5b, "Write Default Erroneous Data Reporting"},
+ {0x0c5f, "Enhanced Flush"},
+ {0x0c60, "Send Keypress Notification"},
+ {0x1001, "Read Local Version Information"},
+ {0x1002, "Read Local Supported Commands"},
+ {0x1003, "Read Local Supported Features"},
+ {0x1004, "Read Local Extended Features"},
+ {0x1005, "Read Buffer Size"},
+ {0x1007, "Read Country Code"},
+ {0x1009, "Read BD ADDR"},
+ {0x1401, "Read Failed Contact Counter"},
+ {0x1402, "Reset Failed Contact Counter"},
+ {0x1403, "Read Link Quality"},
+ {0x1405, "Read RSSI"},
+ {0x1406, "Read AFH Channel Map"},
+ {0x1407, "Read Clock"},
+ {0x1801, "Read Loopback Mode"},
+ {0x1802, "Write Loopback Mode"},
+ {0x1803, "Enable Device Under Test Mode"},
+ {0x1804, "Write Simple Pairing Debug Mode"},
+ {0xfc00, "Vendor-Specific"},
+ {0, NULL}
};
value_string_ext bthci_cmd_opcode_vals_ext = VALUE_STRING_EXT_INIT(bthci_cmd_opcode_vals);
static const value_string bthci_ogf_vals[] = {
- { HCI_OGF_LINK_CONTROL, "Link Control Commands" },
- { HCI_OGF_LINK_POLICY, "Link Policy Commands" },
- { HCI_OGF_HOST_CONTROLLER,"Host Controller & Baseband Commands" },
- { HCI_OGF_INFORMATIONAL,"Informational Parameters" },
- { HCI_OGF_STATUS, "Status Parameters" },
- { HCI_OGF_TESTING, "Testing Commands" },
- { HCI_OGF_LOGO_TESTING, "Bluetooth Logo Testing Commands" },
- { HCI_OGF_VENDOR_SPECIFIC, "Vendor-Specific Commands" },
- { 0, NULL }
+ { HCI_OGF_LINK_CONTROL, "Link Control Commands" },
+ { HCI_OGF_LINK_POLICY, "Link Policy Commands" },
+ { HCI_OGF_HOST_CONTROLLER,"Host Controller & Baseband Commands" },
+ { HCI_OGF_INFORMATIONAL,"Informational Parameters" },
+ { HCI_OGF_STATUS, "Status Parameters" },
+ { HCI_OGF_TESTING, "Testing Commands" },
+ { HCI_OGF_LOGO_TESTING, "Bluetooth Logo Testing Commands" },
+ { HCI_OGF_VENDOR_SPECIFIC, "Vendor-Specific Commands" },
+ { 0, NULL }
};
value_string_ext bthci_ogf_vals_ext = VALUE_STRING_EXT_INIT(bthci_ogf_vals);
static const value_string bthci_cmd_status_vals[] = {
- {0x00, "Success"},
- {0x01, "Unknown HCI Command"},
- {0x02, "No Connection"},
- {0x03, "Hardware Failure"},
- {0x04, "Page Timeout"},
- {0x05, "Authentication Failure"},
- {0x06, "Key Missing"},
- {0x07, "Memory Full"},
- {0x08, "Connection Timeout"},
- {0x09, "Max Number Of Connections"},
- {0x0A, "Max Number Of SCO Connections To A Device"},
- {0x0B, "ACL connection already exists"},
- {0x0C, "Command Disallowed"},
- {0x0D, "Host Rejected due to limited resources"},
- {0x0E, "Host Rejected due to security reasons"},
- {0x0F, "Host Rejected due to remote device is only a personal device"},
- {0x10, "Host Timeout"},
- {0x11, "Unsupported Feature or Parameter Value"},
- {0x12, "Invalid HCI Command Parameters"},
- {0x13, "Other End Terminated Connection: User Ended Connection"},
- {0x14, "Other End Terminated Connection: Low Resources"},
- {0x15, "Other End Terminated Connection: About to Power Off"},
- {0x16, "Connection Terminated by Local Host"},
- {0x17, "Repeated Attempts"},
- {0x18, "Pairing Not Allowed"},
- {0x19, "Unknown LMP PDU"},
- {0x1A, "Unsupported Remote Feature"},
- {0x1B, "SCO Offset Rejected"},
- {0x1C, "SCO Interval Rejected"},
- {0x1D, "SCO Air Mode Rejected"},
- {0x1E, "Invalid LMP Parameters"},
- {0x1F, "Unspecified Error"},
- {0x20, "Unsupported LMP Parameter Value"},
- {0x21, "Role Change Not Allowed"},
- {0x22, "LMP Response Timeout"},
- {0x23, "LMP Error Transaction Collision"},
- {0x24, "LMP PDU Not Allowed"},
- {0x25, "Encryption Mode Not Acceptable"},
- {0x26, "Unit Key Used"},
- {0x27, "QoS is Not Supported"},
- {0x28, "Instant Passed"},
- {0x29, "Pairing with Unit Key Not Supported"},
- {0x2A, "Different Transaction Collision"},
- {0x2C, "QoS Unacceptable Parameter"},
- {0x2D, "QoS Rejected"},
- {0x2E, "Channel Classification Not Supported"},
- {0x2F, "Insufficient Security"},
- {0x30, "Parameter Out Of Mandatory Range"},
- {0x31, "Unknown"},
- {0x32, "Role Switch Pending"},
- {0x33, "Unknown"},
- {0x34, "Reserved Slot Violation"},
- {0x35, "Role Switch Failed"},
- {0x36, "Extended Inquiry Response Too Large"},
- {0x37, "Secure Simple Pairing Not Supported By Host"},
- {0x38, "Host Busy - Pairing"},
- {0, NULL }
+ {0x00, "Success"},
+ {0x01, "Unknown HCI Command"},
+ {0x02, "No Connection"},
+ {0x03, "Hardware Failure"},
+ {0x04, "Page Timeout"},
+ {0x05, "Authentication Failure"},
+ {0x06, "Key Missing"},
+ {0x07, "Memory Full"},
+ {0x08, "Connection Timeout"},
+ {0x09, "Max Number Of Connections"},
+ {0x0A, "Max Number Of SCO Connections To A Device"},
+ {0x0B, "ACL connection already exists"},
+ {0x0C, "Command Disallowed"},
+ {0x0D, "Host Rejected due to limited resources"},
+ {0x0E, "Host Rejected due to security reasons"},
+ {0x0F, "Host Rejected due to remote device is only a personal device"},
+ {0x10, "Host Timeout"},
+ {0x11, "Unsupported Feature or Parameter Value"},
+ {0x12, "Invalid HCI Command Parameters"},
+ {0x13, "Other End Terminated Connection: User Ended Connection"},
+ {0x14, "Other End Terminated Connection: Low Resources"},
+ {0x15, "Other End Terminated Connection: About to Power Off"},
+ {0x16, "Connection Terminated by Local Host"},
+ {0x17, "Repeated Attempts"},
+ {0x18, "Pairing Not Allowed"},
+ {0x19, "Unknown LMP PDU"},
+ {0x1A, "Unsupported Remote Feature"},
+ {0x1B, "SCO Offset Rejected"},
+ {0x1C, "SCO Interval Rejected"},
+ {0x1D, "SCO Air Mode Rejected"},
+ {0x1E, "Invalid LMP Parameters"},
+ {0x1F, "Unspecified Error"},
+ {0x20, "Unsupported LMP Parameter Value"},
+ {0x21, "Role Change Not Allowed"},
+ {0x22, "LMP Response Timeout"},
+ {0x23, "LMP Error Transaction Collision"},
+ {0x24, "LMP PDU Not Allowed"},
+ {0x25, "Encryption Mode Not Acceptable"},
+ {0x26, "Unit Key Used"},
+ {0x27, "QoS is Not Supported"},
+ {0x28, "Instant Passed"},
+ {0x29, "Pairing with Unit Key Not Supported"},
+ {0x2A, "Different Transaction Collision"},
+ {0x2C, "QoS Unacceptable Parameter"},
+ {0x2D, "QoS Rejected"},
+ {0x2E, "Channel Classification Not Supported"},
+ {0x2F, "Insufficient Security"},
+ {0x30, "Parameter Out Of Mandatory Range"},
+ {0x31, "Unknown"},
+ {0x32, "Role Switch Pending"},
+ {0x33, "Unknown"},
+ {0x34, "Reserved Slot Violation"},
+ {0x35, "Role Switch Failed"},
+ {0x36, "Extended Inquiry Response Too Large"},
+ {0x37, "Secure Simple Pairing Not Supported By Host"},
+ {0x38, "Host Busy - Pairing"},
+ {0, NULL }
};
value_string_ext bthci_cmd_status_vals_ext = VALUE_STRING_EXT_INIT(bthci_cmd_status_vals);
static const value_string bthci_cmd_major_dev_class_vals[] = {
- {0x00, "Miscellaneous"},
- {0x01, "Computer"},
- {0x02, "Phone"},
- {0x03, "LAN/Network Access Point"},
- {0x04, "Audio/Video"},
- {0x05, "Peripheral (HID)"},
- {0x06, "Imaging"},
- {0x07, "Wearable"},
- {0x08, "Toy"},
- {0, NULL }
+ {0x00, "Miscellaneous"},
+ {0x01, "Computer"},
+ {0x02, "Phone"},
+ {0x03, "LAN/Network Access Point"},
+ {0x04, "Audio/Video"},
+ {0x05, "Peripheral (HID)"},
+ {0x06, "Imaging"},
+ {0x07, "Wearable"},
+ {0x08, "Toy"},
+ {0, NULL }
};
value_string_ext bthci_cmd_major_dev_class_vals_ext = VALUE_STRING_EXT_INIT(bthci_cmd_major_dev_class_vals);
static const value_string bthci_cmd_service_class_type_vals[] = {
- {0x1000, "Service Discovery Server Service"},
- {0x1001, "Browse Group Descriptor Service"},
- {0x1002, "Public Browse Group"},
- {0x1101, "Serial Port"},
- {0x1102, "LAN Access Using PPP"},
- {0x1103, "Dialup Networking"},
- {0x1104, "IrMC Sync"},
- {0x1105, "OBEX Object Push"},
- {0x1106, "OBEX File Transfer"},
- {0x1107, "IrMC Sync Command"},
- {0x1108, "Headset"},
- {0x1109, "Cordless Telephony"},
- {0x110A, "Audio Source"},
- {0x110B, "Audio Sink"},
- {0x110C, "A/V Remote Control Target"},
- {0x110D, "Advanced Audio Distribution"},
- {0x110E, "A/V Remote Control"},
- {0x110F, "Video Conferencing"},
- {0x1110, "Intercom"},
- {0x1111, "Fax"},
- {0x1112, "Headset Audio Gateway"},
- {0x1113, "WAP"},
- {0x1114, "WAP Client"},
- {0x1115, "PANU"},
- {0x1116, "NAP"},
- {0x1117, "GN"},
- {0x1118, "Direct Printing"},
- {0x1119, "Reference Printing"},
- {0x111A, "Imaging"},
- {0x111B, "Imaging Responder"},
- {0x111C, "Imaging Automatic Archive"},
- {0x111D, "Imaging Referenced Objects"},
- {0x111E, "Handsfree"},
- {0x111F, "Handsfree Audio Gateway"},
- {0x1120, "Direct Printing Reference Objects Service"},
- {0x1121, "Reflected UI"},
- {0x1122, "Basic Printing"},
- {0x1123, "Printing Status"},
- {0x1124, "Human Interface Device Service"},
- {0x1125, "Hardcopy Cable Replacement"},
- {0x1126, "HCR Print"},
- {0x1127, "HCR Scan"},
- {0x1128, "Common ISDN Access"},
- {0x1129, "Video Conferencing GW"},
- {0x112A, "UDI_MT"},
- {0x112B, "UDI_TA"},
- {0x112C, "Audio/Video"},
- {0x112D, "SIM Access"},
- {0x112E, "Phonebook Access - PCE"},
- {0x112F, "Phonebook Access - PSE"},
- {0x1130, "Phonebook Access"},
- {0x1200, "PnP Information"},
- {0x1201, "Generic Networking"},
- {0x1202, "Generic File Transfer"},
- {0x1203, "Generic Audio"},
- {0x1204, "Generic Telephony"},
- {0x1205, "UPNP Service"},
- {0x1206, "UPNP IP Service"},
- {0x1300, "ESDP_UPNP_IP_PAN"},
- {0x1301, "ESDP_UPNP_IP_LAP"},
- {0x1302, "ESDP_UPNP_L2CAP"},
- {0x1303, "Video Source"},
- {0x1304, "Video Sink"},
- {0x1305, "Video Distribution"},
- {0, NULL}
+ {0x1000, "Service Discovery Server Service"},
+ {0x1001, "Browse Group Descriptor Service"},
+ {0x1002, "Public Browse Group"},
+ {0x1101, "Serial Port"},
+ {0x1102, "LAN Access Using PPP"},
+ {0x1103, "Dialup Networking"},
+ {0x1104, "IrMC Sync"},
+ {0x1105, "OBEX Object Push"},
+ {0x1106, "OBEX File Transfer"},
+ {0x1107, "IrMC Sync Command"},
+ {0x1108, "Headset"},
+ {0x1109, "Cordless Telephony"},
+ {0x110A, "Audio Source"},
+ {0x110B, "Audio Sink"},
+ {0x110C, "A/V Remote Control Target"},
+ {0x110D, "Advanced Audio Distribution"},
+ {0x110E, "A/V Remote Control"},
+ {0x110F, "Video Conferencing"},
+ {0x1110, "Intercom"},
+ {0x1111, "Fax"},
+ {0x1112, "Headset Audio Gateway"},
+ {0x1113, "WAP"},
+ {0x1114, "WAP Client"},
+ {0x1115, "PANU"},
+ {0x1116, "NAP"},
+ {0x1117, "GN"},
+ {0x1118, "Direct Printing"},
+ {0x1119, "Reference Printing"},
+ {0x111A, "Imaging"},
+ {0x111B, "Imaging Responder"},
+ {0x111C, "Imaging Automatic Archive"},
+ {0x111D, "Imaging Referenced Objects"},
+ {0x111E, "Handsfree"},
+ {0x111F, "Handsfree Audio Gateway"},
+ {0x1120, "Direct Printing Reference Objects Service"},
+ {0x1121, "Reflected UI"},
+ {0x1122, "Basic Printing"},
+ {0x1123, "Printing Status"},
+ {0x1124, "Human Interface Device Service"},
+ {0x1125, "Hardcopy Cable Replacement"},
+ {0x1126, "HCR Print"},
+ {0x1127, "HCR Scan"},
+ {0x1128, "Common ISDN Access"},
+ {0x1129, "Video Conferencing GW"},
+ {0x112A, "UDI_MT"},
+ {0x112B, "UDI_TA"},
+ {0x112C, "Audio/Video"},
+ {0x112D, "SIM Access"},
+ {0x112E, "Phonebook Access - PCE"},
+ {0x112F, "Phonebook Access - PSE"},
+ {0x1130, "Phonebook Access"},
+ {0x1200, "PnP Information"},
+ {0x1201, "Generic Networking"},
+ {0x1202, "Generic File Transfer"},
+ {0x1203, "Generic Audio"},
+ {0x1204, "Generic Telephony"},
+ {0x1205, "UPNP Service"},
+ {0x1206, "UPNP IP Service"},
+ {0x1300, "ESDP_UPNP_IP_PAN"},
+ {0x1301, "ESDP_UPNP_IP_LAP"},
+ {0x1302, "ESDP_UPNP_L2CAP"},
+ {0x1303, "Video Source"},
+ {0x1304, "Video Sink"},
+ {0x1305, "Video Distribution"},
+ {0, NULL}
};
value_string_ext bthci_cmd_service_class_type_vals_ext = VALUE_STRING_EXT_INIT(bthci_cmd_service_class_type_vals);
static const value_string bthci_cmd_eir_data_type_vals[] = {
- {0x01, "Flags" },
- {0x02, "16-bit Service Class UUIDs (incomplete)" },
- {0x03, "16-bit Service Class UUIDs" },
- {0x04, "32-bit Service Class UUIDs (incomplete)" },
- {0x05, "32-bit Service Class UUIDs" },
- {0x06, "128-bit Service Class UUIDs (incomplete)" },
- {0x07, "128-bit Service Class UUIDs" },
- {0x08, "Device Name (shortened)" },
- {0x09, "Device Name" },
- {0x0A, "Tx Power Level" },
- {0x0B, "OOB Optional Data Length" },
- {0x0C, "BD_ADDR" },
- {0x0D, "Class Of Device" },
- {0x0E, "Simple Pairing Hash C" },
- {0x0F, "Simple Pairing Randomizer R" },
- {0xFF, "Manufacturer Specific" },
- { 0, NULL }
+ {0x01, "Flags" },
+ {0x02, "16-bit Service Class UUIDs (incomplete)" },
+ {0x03, "16-bit Service Class UUIDs" },
+ {0x04, "32-bit Service Class UUIDs (incomplete)" },
+ {0x05, "32-bit Service Class UUIDs" },
+ {0x06, "128-bit Service Class UUIDs (incomplete)" },
+ {0x07, "128-bit Service Class UUIDs" },
+ {0x08, "Device Name (shortened)" },
+ {0x09, "Device Name" },
+ {0x0A, "Tx Power Level" },
+ {0x0B, "OOB Optional Data Length" },
+ {0x0C, "BD_ADDR" },
+ {0x0D, "Class Of Device" },
+ {0x0E, "Simple Pairing Hash C" },
+ {0x0F, "Simple Pairing Randomizer R" },
+ {0xFF, "Manufacturer Specific" },
+ { 0, NULL }
};
value_string_ext bthci_cmd_eir_data_type_vals_ext = VALUE_STRING_EXT_INIT(bthci_cmd_eir_data_type_vals);
const value_string bthci_cmd_io_capability_vals[] = {
- {0x00, "Display Only" },
- {0x01, "Display Yes/No" },
- {0x02, "Keyboard Only" },
- {0x03, "No Input, No Output" },
- { 0, NULL }
+ {0x00, "Display Only" },
+ {0x01, "Display Yes/No" },
+ {0x02, "Keyboard Only" },
+ {0x03, "No Input, No Output" },
+ { 0, NULL }
};
const value_string bthci_cmd_oob_data_present_vals[] = {
- {0x00, "OOB Authentication Data Not Present" },
- {0x01, "OOB Authentication Data From Remote Device Present" },
- { 0, NULL }
+ {0x00, "OOB Authentication Data Not Present" },
+ {0x01, "OOB Authentication Data From Remote Device Present" },
+ { 0, NULL }
};
static const value_string bthci_cmd_auth_req_vals[] = {
- {0x00, "MITM Protection Not Required - No Bonding. Numeric Comparison, Automatic Accept Allowed" },
- {0x01, "MITM Protection Required - No Bonding. Use IO Capabilty To Determine Procedure" },
- {0x02, "MITM Protection Not Required - Dedicated Bonding. Numeric Comparison, Automatic Accept Allowed" },
- {0x03, "MITM Protection Required - Dedicated Bonding. Use IO Capabilty To Determine Procedure" },
- {0x04, "MITM Protection Not Required - General Bonding. Numeric Comparison, Automatic Accept Allowed" },
- {0x05, "MITM Protection Required - General Bonding. Use IO Capabilty To Determine Procedure" },
- { 0, NULL }
+ {0x00, "MITM Protection Not Required - No Bonding. Numeric Comparison, Automatic Accept Allowed" },
+ {0x01, "MITM Protection Required - No Bonding. Use IO Capabilty To Determine Procedure" },
+ {0x02, "MITM Protection Not Required - Dedicated Bonding. Numeric Comparison, Automatic Accept Allowed" },
+ {0x03, "MITM Protection Required - Dedicated Bonding. Use IO Capabilty To Determine Procedure" },
+ {0x04, "MITM Protection Not Required - General Bonding. Numeric Comparison, Automatic Accept Allowed" },
+ {0x05, "MITM Protection Required - General Bonding. Use IO Capabilty To Determine Procedure" },
+ { 0, NULL }
};
value_string_ext bthci_cmd_auth_req_vals_ext = VALUE_STRING_EXT_INIT(bthci_cmd_auth_req_vals);
static const value_string cmd_role_vals[] = {
- {0x00, "Become Master"},
- {0x01, "Remain Slave"},
- {0, NULL }
+ {0x00, "Become Master"},
+ {0x01, "Remain Slave"},
+ {0, NULL }
};
static const value_string cmd_pin_types[] = {
- {0x00, "Variable PIN" },
- {0x01, "Fixed PIN" },
- {0, NULL }
+ {0x00, "Variable PIN" },
+ {0x01, "Fixed PIN" },
+ {0, NULL }
};
static const value_string cmd_encryption_enable[] = {
- {0x00, "Link Level Encryption is OFF"},
- {0x01, "Link Level Encryption is ON"},
- {0, NULL }
+ {0x00, "Link Level Encryption is OFF"},
+ {0x01, "Link Level Encryption is ON"},
+ {0, NULL }
};
static const value_string cmd_key_flag[] = {
- {0x00, "Using Semi-permanent Link Key"},
- {0x01, "Using Temporary Link Key"},
- {0, NULL }
+ {0x00, "Using Semi-permanent Link Key"},
+ {0x01, "Using Temporary Link Key"},
+ {0, NULL }
};
static const value_string cmd_filter_types[] = {
- {0x00, "Clear all Filters" },
- {0x01, "Inquiry Result" },
- {0x02, "Connection Setup" },
- {0, NULL }
+ {0x00, "Clear all Filters" },
+ {0x01, "Inquiry Result" },
+ {0x02, "Connection Setup" },
+ {0, NULL }
};
static const value_string cmd_inquiry_result_filter_condition_types[] = {
- {0x00, "A new device responded" },
- {0x01, "A device with the specified Class of Device responded" },
- {0x02, "A device with the specified BD_ADDR responded" },
- {0, NULL }
+ {0x00, "A new device responded" },
+ {0x01, "A device with the specified Class of Device responded" },
+ {0x02, "A device with the specified BD_ADDR responded" },
+ {0, NULL }
};
static const value_string cmd_service_types[] = {
- {0x00, "No Traffic"},
- {0x01, "Best Effort"},
- {0x02, "Guaranteed"},
- {0, NULL }
+ {0x00, "No Traffic"},
+ {0x01, "Best Effort"},
+ {0x02, "Guaranteed"},
+ {0, NULL }
};
static const value_string cmd_connection_setup_filter_condition_types[] = {
- {0x00, "Allow Connections from all devices" },
- {0x01, "Allow Connections from a device with a specific Class of Device" },
- {0x02, "Allow Connections from a device with a specific BD_ADDR" },
- {0, NULL }
+ {0x00, "Allow Connections from all devices" },
+ {0x01, "Allow Connections from a device with a specific Class of Device" },
+ {0x02, "Allow Connections from a device with a specific BD_ADDR" },
+ {0, NULL }
};
static const value_string cmd_auto_acc_flag_values[] = {
- {0x01, "Do NOT Auto accept" },
- {0x02, "Do Auto accept, role switch disabled" },
- {0x03, "Do Auto accept, role switch enabled" },
- {0, NULL }
+ {0x01, "Do NOT Auto accept" },
+ {0x02, "Do Auto accept, role switch disabled" },
+ {0x03, "Do Auto accept, role switch enabled" },
+ {0, NULL }
};
static const value_string cmd_read_all_flag_values[] = {
- {0x00, "Return Link Key for specified BD_ADDR" },
- {0x01, "Return all stored Link Keys" },
- {0, NULL }
+ {0x00, "Return Link Key for specified BD_ADDR" },
+ {0x01, "Return all stored Link Keys" },
+ {0, NULL }
};
static const value_string cmd_delete_all_flag_values[] = {
- {0x00, "Delete only Link Key for specified BD_ADDR" },
- {0x01, "Delete all stored Link Keys" },
- {0, NULL }
+ {0x00, "Delete only Link Key for specified BD_ADDR" },
+ {0x01, "Delete all stored Link Keys" },
+ {0, NULL }
};
static const value_string cmd_scan_enable_values[] = {
- {0x00, "No Scans enabled" },
- {0x01, "Inquiry Scan enabled/Page Scan disable" },
- {0x02, "Inquiry Scan disabled/Page Scan enabled" },
- {0x03, "Inquiry Scan enabled/Page Scan enabled" },
- {0, NULL }
+ {0x00, "No Scans enabled" },
+ {0x01, "Inquiry Scan enabled/Page Scan disable" },
+ {0x02, "Inquiry Scan disabled/Page Scan enabled" },
+ {0x03, "Inquiry Scan enabled/Page Scan enabled" },
+ {0, NULL }
};
static const value_string cmd_authentication_enable_values[] = {
- {0x00, "Authentication disabled" },
- {0x01, "Authentication enabled for all connection" },
- {0, NULL }
+ {0x00, "Authentication disabled" },
+ {0x01, "Authentication enabled for all connection" },
+ {0, NULL }
};
static const value_string cmd_input_coding_values[] = {
- {0x0, "Linear" },
- {0x1, "\xb5-law" },
- {0x2, "A-law" },
- {0, NULL }
+ {0x0, "Linear" },
+ {0x1, "\xb5-law" },
+ {0x2, "A-law" },
+ {0, NULL }
};
static const value_string cmd_input_data_format_values[] = {
- {0x0, "1's complement" },
- {0x1, "2's complement" },
- {0x2, "Sign-Magnitude" },
- {0, NULL }
+ {0x0, "1's complement" },
+ {0x1, "2's complement" },
+ {0x2, "Sign-Magnitude" },
+ {0, NULL }
};
static const value_string cmd_input_sample_size_values[] = {
- {0x0, "8 bit (only for Linear PCM)" },
- {0x1, "16 bit (only for Linear PCM)" },
- {0, NULL }
+ {0x0, "8 bit (only for Linear PCM)" },
+ {0x1, "16 bit (only for Linear PCM)" },
+ {0, NULL }
};
static const value_string cmd_air_coding_format_values[] = {
- {0x0, "CVSD" },
- {0x1, "\xb5-law" },
- {0x2, "A-law" },
- {0, NULL }
+ {0x0, "CVSD" },
+ {0x1, "\xb5-law" },
+ {0x2, "A-law" },
+ {0, NULL }
};
static const value_string cmd_en_disabled[] = {
- {0x00, "disabled" },
- {0x01, "enabled" },
- {0, NULL }
+ {0x00, "disabled" },
+ {0x01, "enabled" },
+ {0, NULL }
};
static const value_string cmd_flow_contr_enable[] = {
- {0x00, "Flow control off in direction from Host Controller to Host." },
- {0x01, "ON - HCI ACL Data Packets / OFF - HCI SCO Data Packets" },
- {0x02, "OFF - HCI ACL Data Packets / ON - HCI SCO Data Packets" },
- {0x03, "ON - HCI ACL Data Packets / ON - HCI SCO Data Packets" },
- {0, NULL }
+ {0x00, "Flow control off in direction from Host Controller to Host." },
+ {0x01, "ON - HCI ACL Data Packets / OFF - HCI SCO Data Packets" },
+ {0x02, "OFF - HCI ACL Data Packets / ON - HCI SCO Data Packets" },
+ {0x03, "ON - HCI ACL Data Packets / ON - HCI SCO Data Packets" },
+ {0, NULL }
};
static const value_string cmd_power_level_types[] = {
- {0x00, "Read Current Transmission Power Level" },
- {0x01, "Read Maximum Transmission Power Level" },
- {0, NULL }
+ {0x00, "Read Current Transmission Power Level" },
+ {0x01, "Read Maximum Transmission Power Level" },
+ {0, NULL }
};
static const value_string cmd_loopback_modes[] = {
- {0x00, "No Loopback mode enabled" },
- {0x01, "Enable Local Loopback" },
- {0x02, "Enable Remote Loopback" },
- {0, NULL }
+ {0x00, "No Loopback mode enabled" },
+ {0x01, "Enable Local Loopback" },
+ {0x02, "Enable Remote Loopback" },
+ {0, NULL }
};
static const value_string encrypt_mode_vals[] = {
- { 0x00, "Encryption Disabled" },
- { 0x01, "Encryption only for Point-To-Point Packets" },
- { 0x02, "Encryption for Point-To-Point and Broadcast Packets" },
- { 0, NULL }
+ { 0x00, "Encryption Disabled" },
+ { 0x01, "Encryption only for Point-To-Point Packets" },
+ { 0x02, "Encryption for Point-To-Point and Broadcast Packets" },
+ { 0, NULL }
};
static const value_string cmd_boolean[] = {
- {0, "false" },
- {1, "true" },
- {0, NULL }
+ {0, "false" },
+ {1, "true" },
+ {0, NULL }
};
static const value_string cmd_page_scan_modes[] = {
- {0, "Mandatory Page Scan Mode"},
- {1, "Optional Page Scan Mode I"},
- {2, "Optional Page Scan Mode II"},
- {3, "Optional Page Scan Mode III"},
- {0, NULL }
+ {0, "Mandatory Page Scan Mode"},
+ {1, "Optional Page Scan Mode I"},
+ {2, "Optional Page Scan Mode II"},
+ {3, "Optional Page Scan Mode III"},
+ {0, NULL }
};
static const value_string cmd_page_scan_repetition_modes[] = {
- {0, "R0"},
- {1, "R1"},
- {2, "R2"},
- {0, NULL }
+ {0, "R0"},
+ {1, "R1"},
+ {2, "R2"},
+ {0, NULL }
};
static const value_string cmd_page_scan_period_modes[] = {
- {0, "P0"},
- {1, "P1"},
- {2, "P2"},
- {0, NULL }
+ {0, "P0"},
+ {1, "P1"},
+ {2, "P2"},
+ {0, NULL }
};
static const value_string cmd_role_switch_modes[] = {
- {0, "Local device will be master, and will not accept a master-slave switch request." },
- {1, "Local device may be master, or may become slave after accepting a master slave switch." },
- {0, NULL }
+ {0, "Local device will be master, and will not accept a master-slave switch request." },
+ {1, "Local device may be master, or may become slave after accepting a master slave switch." },
+ {0, NULL }
};
static const value_string cmd_rtx_effort[] = {
- {0x00, "No Retransmission" },
- {0x01, "At least 1 retransmission, optimize for consumption" },
- {0x02, "At least 1 retransmission, optimize for link quality" },
- {0xFF, "Don't Care" },
- { 0, NULL }
+ {0x00, "No Retransmission" },
+ {0x01, "At least 1 retransmission, optimize for consumption" },
+ {0x02, "At least 1 retransmission, optimize for link quality" },
+ {0xFF, "Don't Care" },
+ { 0, NULL }
};
static const value_string cmd_scan_types[] = {
- {0x00, "Standard Scan" },
- {0x01, "Interlaced Scan" },
- { 0, NULL }
+ {0x00, "Standard Scan" },
+ {0x01, "Interlaced Scan" },
+ { 0, NULL }
};
static const value_string cmd_inq_modes[] = {
- {0x00, "Standard Results" },
- {0x01, "Results With RSSI" },
- {0x02, "Results With RSSI or Extended Results" },
- { 0, NULL }
+ {0x00, "Standard Results" },
+ {0x01, "Results With RSSI" },
+ {0x02, "Results With RSSI or Extended Results" },
+ { 0, NULL }
};
static const value_string cmd_flush_pkt_type[] = {
- {0x00, "Automatically Flushable Only" },
- { 0, NULL }
+ {0x00, "Automatically Flushable Only" },
+ { 0, NULL }
};
static const value_string cmd_which_clock[] = {
- {0x00, "Local" },
- {0x01, "Piconet" },
- { 0, NULL }
+ {0x00, "Local" },
+ {0x01, "Piconet" },
+ { 0, NULL }
};
static const value_string cmd_notification_types[] = {
- {0x00, "Passkey Entry Started" },
- {0x01, "Passkey Digit Entered" },
- {0x02, "Passkey Digit Erased" },
- {0x03, "Passkey Cleared" },
- {0x04, "Passkey Entry Completed" },
- { 0, NULL }
+ {0x00, "Passkey Entry Started" },
+ {0x01, "Passkey Digit Entered" },
+ {0x02, "Passkey Digit Erased" },
+ {0x03, "Passkey Cleared" },
+ {0x04, "Passkey Entry Completed" },
+ { 0, NULL }
};
static int
dissect_bthci_cmd_bd_addr(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- guint8 i, bd_addr[6];
- proto_item *item;
+ guint8 i, bd_addr[6];
+ proto_item *item;
- for(i=6; i; i--)
- bd_addr[6-i] = tvb_get_guint8(tvb, offset+i-1);
+ for(i=6; i; i--)
+ bd_addr[6-i] = tvb_get_guint8(tvb, offset+i-1);
- item = proto_tree_add_item(tree, hf_bthci_cmd_bd_addr, tvb, offset, 6, ENC_NA);
- proto_item_append_text(item, "%02x%02x:%02x:%02x%02x%02x (%s)",
- bd_addr[0], bd_addr[1], bd_addr[2], bd_addr[3], bd_addr[4], bd_addr[5],
- get_ether_name(bd_addr));
+ item = proto_tree_add_item(tree, hf_bthci_cmd_bd_addr, tvb, offset, 6, ENC_NA);
+ proto_item_append_text(item, "%02x%02x:%02x:%02x%02x%02x (%s)",
+ bd_addr[0], bd_addr[1], bd_addr[2], bd_addr[3], bd_addr[4], bd_addr[5],
+ get_ether_name(bd_addr));
- offset+=6;
+ offset+=6;
- return offset;
+ return offset;
}
static int
dissect_bthci_cmd_cod(int type, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- guint8 cod1, cod2;
- proto_item *item;
-
- item = proto_tree_add_item(tree, type, tvb, offset, 3, ENC_LITTLE_ENDIAN);
-
- cod1 = tvb_get_guint8(tvb, offset+1);
- cod2 = tvb_get_guint8(tvb, offset+2);
-
- if( (cod2 != 0) || (cod1 & 0x20) )
- {
- char buf[128];
-
- buf[0] = '\0';
-
- proto_item_append_text(item, " (%s - services:", val_to_str_ext_const(cod1 & 0x1f, &bthci_cmd_major_dev_class_vals_ext, "???"));
- if (cod2 & 0x80) g_strlcat(buf, " Information,", sizeof(buf));
- if (cod2 & 0x40) g_strlcat(buf, " Telephony,", sizeof(buf));
- if (cod2 & 0x20) g_strlcat(buf, " Audio,", sizeof(buf));
- if (cod2 & 0x10) g_strlcat(buf, " Object transfer,", sizeof(buf));
- if (cod2 & 0x08) g_strlcat(buf, " Capturing,", sizeof(buf));
- if (cod2 & 0x04) g_strlcat(buf, " Rendering,", sizeof(buf));
- if (cod2 & 0x02) g_strlcat(buf, " Networking,", sizeof(buf));
- if (cod2 & 0x01) g_strlcat(buf, " Positioning,", sizeof(buf));
- if (cod1 & 0x20) g_strlcat(buf, " Limited discoverable mode,", sizeof(buf));
-
- buf[strlen(buf)-1] = '\0'; /* skip last comma */
-
- g_strlcat(buf, ")", sizeof(buf));
- proto_item_append_text(item, "%s", buf);
- }
- else
- {
- proto_item_append_text(item, " (%s - no major services)", val_to_str_ext_const(cod1 & 0x1f, &bthci_cmd_major_dev_class_vals_ext, "???"));
- }
-
- return offset+3;
+ guint8 cod1, cod2;
+ proto_item *item;
+
+ item = proto_tree_add_item(tree, type, tvb, offset, 3, ENC_LITTLE_ENDIAN);
+
+ cod1 = tvb_get_guint8(tvb, offset+1);
+ cod2 = tvb_get_guint8(tvb, offset+2);
+
+ if ((cod2 != 0) || (cod1 & 0x20))
+ {
+ char buf[128];
+
+ buf[0] = '\0';
+
+ proto_item_append_text(item, " (%s - services:", val_to_str_ext_const(cod1 & 0x1f, &bthci_cmd_major_dev_class_vals_ext, "???"));
+ if (cod2 & 0x80) g_strlcat(buf, " Information,", sizeof(buf));
+ if (cod2 & 0x40) g_strlcat(buf, " Telephony,", sizeof(buf));
+ if (cod2 & 0x20) g_strlcat(buf, " Audio,", sizeof(buf));
+ if (cod2 & 0x10) g_strlcat(buf, " Object transfer,", sizeof(buf));
+ if (cod2 & 0x08) g_strlcat(buf, " Capturing,", sizeof(buf));
+ if (cod2 & 0x04) g_strlcat(buf, " Rendering,", sizeof(buf));
+ if (cod2 & 0x02) g_strlcat(buf, " Networking,", sizeof(buf));
+ if (cod2 & 0x01) g_strlcat(buf, " Positioning,", sizeof(buf));
+ if (cod1 & 0x20) g_strlcat(buf, " Limited discoverable mode,", sizeof(buf));
+
+ buf[strlen(buf)-1] = '\0'; /* skip last comma */
+
+ g_strlcat(buf, ")", sizeof(buf));
+ proto_item_append_text(item, "%s", buf);
+ }
+ else
+ {
+ proto_item_append_text(item, " (%s - no major services)", val_to_str_ext_const(cod1 & 0x1f, &bthci_cmd_major_dev_class_vals_ext, "???"));
+ }
+
+ return offset+3;
}
static int
dissect_bthci_ext_inquiry_response(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- guint8 i, j, length, type;
- proto_item *ti_eir=NULL;
- proto_tree *ti_eir_subtree=NULL;
-
- if(tree){
- ti_eir=proto_tree_add_text(tree, tvb, offset, 240, "Extended Inquiry Response Data");
- ti_eir_subtree=proto_item_add_subtree(ti_eir, ett_eir_subtree);
- }
-
- i=0;
- while(i<240){
- length = tvb_get_guint8(tvb, offset+i);
- if( length != 0 ){
-
- proto_item *ti_eir_struct=NULL;
- proto_tree *ti_eir_struct_subtree=NULL;
-
- ti_eir_struct = proto_tree_add_text(ti_eir_subtree, tvb, offset+i, length+1, "%s", "");
- ti_eir_struct_subtree = proto_item_add_subtree(ti_eir_struct, ett_eir_struct_subtree);
-
- type = tvb_get_guint8(tvb, offset+i+1);
-
- proto_item_append_text(ti_eir_struct,"%s", val_to_str_ext_const(type, &bthci_cmd_eir_data_type_vals_ext, "Unknown"));
-
- proto_tree_add_item(ti_eir_struct_subtree,hf_bthci_cmd_eir_struct_length, tvb, offset+i, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_eir_struct_subtree,hf_bthci_cmd_eir_struct_type, tvb, offset+i+1, 1, ENC_LITTLE_ENDIAN);
-
- switch(type) {
- case 0x02: /* 16-bit Service Class UUIDs, incomplete list */
- case 0x03: /* 16-bit Service Class UUIDs, complete list */
- j=0;
- while(j<(length-1))
- {
- proto_tree_add_item(ti_eir_struct_subtree, hf_bthci_cmd_sc_uuid16, tvb, offset+i+j+2, 2, ENC_LITTLE_ENDIAN);
- j+=2;
- }
- break;
- case 0x04: /* 32-bit Service Class UUIDs, incomplete list */
- case 0x05: /* 32-bit Service Class UUIDs, complete list */
- j=0;
- while(j<(length-1))
- {
- proto_tree_add_item(ti_eir_struct_subtree, hf_bthci_cmd_sc_uuid32, tvb, offset+i+j+2, 4, ENC_LITTLE_ENDIAN);
- j+=4;
- }
- break;
- case 0x06: /* 128-bit Service Class UUIDs, incomplete list */
- case 0x07: /* 128-bit Service Class UUIDs, complete list */
- j=0;
- while(j<(length-1))
- {
- proto_tree_add_item(ti_eir_struct_subtree, hf_bthci_cmd_sc_uuid128, tvb, offset+i+j+2, 16, ENC_NA);
- j+=16;
- }
- break;
- case 0x08: /* Device Name, shortened */
- case 0x09: /* Device Name, full */
- proto_tree_add_item(ti_eir_struct_subtree, hf_bthci_cmd_device_name, tvb, offset+i+2, length-1, ENC_ASCII|ENC_NA);
- proto_item_append_text(ti_eir_struct,": %s", tvb_format_text(tvb,offset+i+2,length-1));
- break;
- case 0x0A: /* Tx Power Level */
- proto_tree_add_item(ti_eir_struct_subtree, hf_bthci_cmd_tx_power, tvb, offset+i+2, 1, ENC_LITTLE_ENDIAN);
-
- default:
- proto_tree_add_item(ti_eir_struct_subtree, hf_bthci_cmd_eir_data, tvb, offset+i+2, length-1, ENC_NA);
- break;
- }
- i += length+1;
- }
- else {
- break;
- }
- }
-
- return offset+240;
+ guint8 i, j, length, type;
+ proto_item *ti_eir = NULL;
+ proto_tree *ti_eir_subtree = NULL;
+
+ if (tree) {
+ ti_eir=proto_tree_add_text(tree, tvb, offset, 240, "Extended Inquiry Response Data");
+ ti_eir_subtree=proto_item_add_subtree(ti_eir, ett_eir_subtree);
+ }
+
+ i=0;
+ while(i<240) {
+ length = tvb_get_guint8(tvb, offset+i);
+ if (length != 0) {
+
+ proto_item *ti_eir_struct=NULL;
+ proto_tree *ti_eir_struct_subtree=NULL;
+
+ ti_eir_struct = proto_tree_add_text(ti_eir_subtree, tvb, offset+i, length+1, "%s", "");
+ ti_eir_struct_subtree = proto_item_add_subtree(ti_eir_struct, ett_eir_struct_subtree);
+
+ type = tvb_get_guint8(tvb, offset+i+1);
+
+ proto_item_append_text(ti_eir_struct,"%s", val_to_str_ext_const(type, &bthci_cmd_eir_data_type_vals_ext, "Unknown"));
+
+ proto_tree_add_item(ti_eir_struct_subtree,hf_bthci_cmd_eir_struct_length, tvb, offset+i, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_eir_struct_subtree,hf_bthci_cmd_eir_struct_type, tvb, offset+i+1, 1, ENC_LITTLE_ENDIAN);
+
+ switch (type) {
+ case 0x02: /* 16-bit Service Class UUIDs, incomplete list */
+ case 0x03: /* 16-bit Service Class UUIDs, complete list */
+ j=0;
+ while(j<(length-1))
+ {
+ proto_tree_add_item(ti_eir_struct_subtree, hf_bthci_cmd_sc_uuid16, tvb, offset+i+j+2, 2, ENC_LITTLE_ENDIAN);
+ j+=2;
+ }
+ break;
+ case 0x04: /* 32-bit Service Class UUIDs, incomplete list */
+ case 0x05: /* 32-bit Service Class UUIDs, complete list */
+ j=0;
+ while(j<(length-1))
+ {
+ proto_tree_add_item(ti_eir_struct_subtree, hf_bthci_cmd_sc_uuid32, tvb, offset+i+j+2, 4, ENC_LITTLE_ENDIAN);
+ j+=4;
+ }
+ break;
+ case 0x06: /* 128-bit Service Class UUIDs, incomplete list */
+ case 0x07: /* 128-bit Service Class UUIDs, complete list */
+ j=0;
+ while(j<(length-1))
+ {
+ proto_tree_add_item(ti_eir_struct_subtree, hf_bthci_cmd_sc_uuid128, tvb, offset+i+j+2, 16, ENC_NA);
+ j+=16;
+ }
+ break;
+ case 0x08: /* Device Name, shortened */
+ case 0x09: /* Device Name, full */
+ proto_tree_add_item(ti_eir_struct_subtree, hf_bthci_cmd_device_name, tvb, offset+i+2, length-1, ENC_ASCII|ENC_NA);
+ proto_item_append_text(ti_eir_struct,": %s", tvb_format_text(tvb,offset+i+2,length-1));
+ break;
+ case 0x0A: /* Tx Power Level */
+ proto_tree_add_item(ti_eir_struct_subtree, hf_bthci_cmd_tx_power, tvb, offset+i+2, 1, ENC_LITTLE_ENDIAN);
+ break;
+ default:
+ proto_tree_add_item(ti_eir_struct_subtree, hf_bthci_cmd_eir_data, tvb, offset+i+2, length-1, ENC_NA);
+ break;
+ }
+ i += length+1;
+ }
+ else {
+ break;
+ }
+ }
+
+ return offset+240;
}
static int
dissect_link_control_cmd(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, guint16 cmd_ocf)
{
- proto_item *item;
- guint32 clock_value;
-
- switch(cmd_ocf) {
- case 0x0001: /* Inquiry */
- proto_tree_add_item(tree, hf_bthci_cmd_lap, tvb, offset, 3, ENC_LITTLE_ENDIAN);
- offset+=3;
- proto_tree_add_item(tree, hf_bthci_cmd_inq_length, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- proto_tree_add_item(tree, hf_bthci_cmd_num_responses, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x0002: /* Inquiry Cancel */
- /* no parameters */
- break;
-
- case 0x0003: /* Periodic Inquiry Mode */
- proto_tree_add_item(tree, hf_bthci_cmd_max_period_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- proto_tree_add_item(tree, hf_bthci_cmd_min_period_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- proto_tree_add_item(tree, hf_bthci_cmd_lap, tvb, offset, 3, ENC_LITTLE_ENDIAN);
- offset+=3;
- proto_tree_add_item(tree, hf_bthci_cmd_inq_length, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- proto_tree_add_item(tree, hf_bthci_cmd_num_responses, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x0004: /* Exit Periodic Inquiry Mode */
- /* no parameters */
- break;
-
- case 0x0005: /* Create Connection */
- offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
-
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_2dh1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_3dh1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_dm1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_dh1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_2dh3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_3dh3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_dm3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_dh3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_2dh5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_3dh5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_dm5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_dh5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- proto_tree_add_item(tree, hf_bthci_cmd_page_scan_repetition_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- proto_tree_add_item(tree, hf_bthci_cmd_page_scan_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- item = proto_tree_add_item(tree, hf_bthci_cmd_clock_offset, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- clock_value = tvb_get_letohs(tvb, 13) & 32767; /* only bit0-14 are valid */
- proto_item_append_text(item, " (%g ms)", 1.25*clock_value);
- proto_tree_add_item(tree, hf_bthci_cmd_clock_offset_valid , tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- proto_tree_add_item(tree, hf_bthci_cmd_allow_role_switch, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x0006: /* Disconnect */
- proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- proto_tree_add_item(tree, hf_bthci_cmd_reason, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x0007: /* Add SCO Connection */
- proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_hv1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_hv2, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_hv3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- break;
-
- case 0x0008: /* Create Connection Cancel Request */
- offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
- break;
-
- case 0x0009: /* Accept Connection Request */
- offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
-
- proto_tree_add_item(tree, hf_bthci_cmd_role, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x000a: /* Reject Connection Request */
- offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
-
- proto_tree_add_item(tree, hf_bthci_cmd_reason, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x000b: /* Link Key Request Reply */
- offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
-
- proto_tree_add_item(tree, hf_bthci_cmd_link_key, tvb, offset, 16, ENC_NA);
- offset+=16;
- break;
-
- case 0x000c: /* Link Key Request Negative Reply */
- offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
- break;
-
- case 0x000d: /* PIN Code Request Reply */
- offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
-
- proto_tree_add_item(tree, hf_bthci_cmd_pin_code_length ,tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- proto_tree_add_item(tree, hf_bthci_cmd_pin_code ,tvb, offset, 16, ENC_ASCII|ENC_NA);
- offset+=16;
- break;
-
- case 0x000e: /* PIN Code Request Negative Reply */
- offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
- break;
-
- case 0x000f: /* Change Connection Packet Type */
- proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_2dh1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_3dh1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_dm1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_dh1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_2dh3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_3dh3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_dm3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_dh3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_2dh5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_3dh5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_dm5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_packet_type_dh5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- break;
-
- case 0x0011: /* Authentication Request */
- proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- break;
-
- case 0x0013: /* Set Connection Encryption */
- proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- proto_tree_add_item(tree, hf_bthci_cmd_encryption_enable, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x0017: /* Master Link Key */
- proto_tree_add_item(tree, hf_bthci_cmd_key_flag, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x0019: /* Remote Name Request */
- offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
-
- proto_tree_add_item(tree, hf_bthci_cmd_page_scan_repetition_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- proto_tree_add_item(tree, hf_bthci_cmd_page_scan_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- item = proto_tree_add_item(tree, hf_bthci_cmd_clock_offset, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- clock_value = tvb_get_letohs(tvb, offset) & 32767; /* only bit0-14 are valid */
- proto_item_append_text(item, " (%g ms)", 1.25*clock_value);
- proto_tree_add_item(tree, hf_bthci_cmd_clock_offset_valid , tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- break;
-
- case 0x001a: /* Remote Name Request Cancel */
- offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
- break;
-
- case 0x001c: /* Read Remote Extended Features */
- proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- proto_tree_add_item(tree, hf_bthci_cmd_page_number, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x0028: /* Setup Synchronous Connection */
- case 0x0029: /* Accept Synchronous Connection Request */
- proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- proto_tree_add_item(tree, hf_bthci_cmd_transmit_bandwidth, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
- proto_tree_add_item(tree, hf_bthci_cmd_receive_bandwidth, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
- proto_tree_add_item(tree, hf_bthci_cmd_max_latency_ms, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- proto_tree_add_item(tree, hf_bthci_cmd_input_coding, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_input_data_format, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_input_sample_size, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_linear_pcm_bit_pos, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_air_coding_format, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- proto_tree_add_item(tree, hf_bthci_cmd_retransmission_effort, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- proto_tree_add_item(tree, hf_bthci_cmd_sco_packet_type_hv1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_sco_packet_type_hv2, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_sco_packet_type_hv3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_sco_packet_type_ev3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_sco_packet_type_ev4, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_sco_packet_type_ev5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_sco_packet_type_2ev3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_sco_packet_type_3ev3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_sco_packet_type_2ev5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_sco_packet_type_3ev5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- break;
-
- case 0x002a: /* Reject Synchronous Connection Request */
- offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
-
- proto_tree_add_item(tree, hf_bthci_cmd_reason, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x0015: /* Change Connection Link Key */
- case 0x001b: /* Read Remote Supported Features */
- case 0x001d: /* Read Remote Version Information */
- case 0x001f: /* Read Clock Offset*/
- case 0x0020: /* Read LMP Handle */
- proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- break;
-
- case 0x002b: /* IO Capability Response */
- offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
-
- proto_tree_add_item(tree, hf_bthci_cmd_io_capability, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- proto_tree_add_item(tree, hf_bthci_cmd_oob_data_present, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- proto_tree_add_item(tree, hf_bthci_cmd_auth_requirements, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x002c: /* User Confirmation Request Reply */
- case 0x002d: /* User Confirmation Request Negative Reply */
- case 0x002f: /* User Passkey Request Negative Reply */
- case 0x0033: /* Remote OOB Data Request Negative Reply */
- offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
- break;
-
- case 0x002e: /* User Passkey Request Reply */
- offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
-
- proto_tree_add_item(tree, hf_bthci_cmd_passkey, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
- break;
-
- case 0x0030: /* Remote OOB Data Request Reply */
- offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
-
- proto_tree_add_item(tree, hf_bthci_cmd_hash_c, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- proto_tree_add_item(tree, hf_bthci_cmd_randomizer_r, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- break;
-
- default:
- proto_tree_add_item(tree, hf_bthci_cmd_params, tvb, offset, -1, ENC_NA);
- offset+=tvb_length_remaining(tvb, offset);
- break;
- }
+ proto_item *item;
+ guint32 clock_value;
+
+ switch (cmd_ocf) {
+ case 0x0001: /* Inquiry */
+ proto_tree_add_item(tree, hf_bthci_cmd_lap, tvb, offset, 3, ENC_LITTLE_ENDIAN);
+ offset+=3;
+ proto_tree_add_item(tree, hf_bthci_cmd_inq_length, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_bthci_cmd_num_responses, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x0002: /* Inquiry Cancel */
+ /* no parameters */
+ break;
+
+ case 0x0003: /* Periodic Inquiry Mode */
+ proto_tree_add_item(tree, hf_bthci_cmd_max_period_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ proto_tree_add_item(tree, hf_bthci_cmd_min_period_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ proto_tree_add_item(tree, hf_bthci_cmd_lap, tvb, offset, 3, ENC_LITTLE_ENDIAN);
+ offset+=3;
+ proto_tree_add_item(tree, hf_bthci_cmd_inq_length, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_bthci_cmd_num_responses, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x0004: /* Exit Periodic Inquiry Mode */
+ /* no parameters */
+ break;
+
+ case 0x0005: /* Create Connection */
+ offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
+
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_2dh1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_3dh1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_dm1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_dh1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_2dh3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_3dh3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_dm3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_dh3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_2dh5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_3dh5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_dm5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_dh5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+
+ proto_tree_add_item(tree, hf_bthci_cmd_page_scan_repetition_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_bthci_cmd_page_scan_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ item = proto_tree_add_item(tree, hf_bthci_cmd_clock_offset, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ clock_value = tvb_get_letohs(tvb, 13) & 32767; /* only bit0-14 are valid */
+ proto_item_append_text(item, " (%g ms)", 1.25*clock_value);
+ proto_tree_add_item(tree, hf_bthci_cmd_clock_offset_valid , tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+
+ proto_tree_add_item(tree, hf_bthci_cmd_allow_role_switch, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x0006: /* Disconnect */
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ proto_tree_add_item(tree, hf_bthci_cmd_reason, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x0007: /* Add SCO Connection */
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_hv1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_hv2, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_hv3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ break;
+
+ case 0x0008: /* Create Connection Cancel Request */
+ offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
+ break;
+
+ case 0x0009: /* Accept Connection Request */
+ offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
+
+ proto_tree_add_item(tree, hf_bthci_cmd_role, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x000a: /* Reject Connection Request */
+ offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
+
+ proto_tree_add_item(tree, hf_bthci_cmd_reason, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x000b: /* Link Key Request Reply */
+ offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
+
+ proto_tree_add_item(tree, hf_bthci_cmd_link_key, tvb, offset, 16, ENC_NA);
+ offset+=16;
+ break;
+
+ case 0x000c: /* Link Key Request Negative Reply */
+ offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
+ break;
+
+ case 0x000d: /* PIN Code Request Reply */
+ offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
+
+ proto_tree_add_item(tree, hf_bthci_cmd_pin_code_length ,tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_bthci_cmd_pin_code ,tvb, offset, 16, ENC_ASCII|ENC_NA);
+ offset+=16;
+ break;
+
+ case 0x000e: /* PIN Code Request Negative Reply */
+ offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
+ break;
+
+ case 0x000f: /* Change Connection Packet Type */
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_2dh1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_3dh1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_dm1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_dh1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_2dh3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_3dh3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_dm3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_dh3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_2dh5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_3dh5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_dm5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_packet_type_dh5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ break;
+
+ case 0x0011: /* Authentication Request */
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ break;
+
+ case 0x0013: /* Set Connection Encryption */
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ proto_tree_add_item(tree, hf_bthci_cmd_encryption_enable, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x0017: /* Master Link Key */
+ proto_tree_add_item(tree, hf_bthci_cmd_key_flag, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x0019: /* Remote Name Request */
+ offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
+
+ proto_tree_add_item(tree, hf_bthci_cmd_page_scan_repetition_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_bthci_cmd_page_scan_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ item = proto_tree_add_item(tree, hf_bthci_cmd_clock_offset, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ clock_value = tvb_get_letohs(tvb, offset) & 32767; /* only bit0-14 are valid */
+ proto_item_append_text(item, " (%g ms)", 1.25*clock_value);
+ proto_tree_add_item(tree, hf_bthci_cmd_clock_offset_valid , tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ break;
+
+ case 0x001a: /* Remote Name Request Cancel */
+ offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
+ break;
+
+ case 0x001c: /* Read Remote Extended Features */
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ proto_tree_add_item(tree, hf_bthci_cmd_page_number, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x0028: /* Setup Synchronous Connection */
+ case 0x0029: /* Accept Synchronous Connection Request */
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ proto_tree_add_item(tree, hf_bthci_cmd_transmit_bandwidth, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset+=4;
+ proto_tree_add_item(tree, hf_bthci_cmd_receive_bandwidth, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset+=4;
+ proto_tree_add_item(tree, hf_bthci_cmd_max_latency_ms, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+
+ proto_tree_add_item(tree, hf_bthci_cmd_input_coding, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_input_data_format, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_input_sample_size, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_linear_pcm_bit_pos, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_air_coding_format, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+
+ proto_tree_add_item(tree, hf_bthci_cmd_retransmission_effort, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_bthci_cmd_sco_packet_type_hv1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_sco_packet_type_hv2, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_sco_packet_type_hv3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_sco_packet_type_ev3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_sco_packet_type_ev4, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_sco_packet_type_ev5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_sco_packet_type_2ev3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_sco_packet_type_3ev3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_sco_packet_type_2ev5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_sco_packet_type_3ev5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ break;
+
+ case 0x002a: /* Reject Synchronous Connection Request */
+ offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
+
+ proto_tree_add_item(tree, hf_bthci_cmd_reason, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x0015: /* Change Connection Link Key */
+ case 0x001b: /* Read Remote Supported Features */
+ case 0x001d: /* Read Remote Version Information */
+ case 0x001f: /* Read Clock Offset*/
+ case 0x0020: /* Read LMP Handle */
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ break;
+
+ case 0x002b: /* IO Capability Response */
+ offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
+
+ proto_tree_add_item(tree, hf_bthci_cmd_io_capability, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_bthci_cmd_oob_data_present, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_bthci_cmd_auth_requirements, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x002c: /* User Confirmation Request Reply */
+ case 0x002d: /* User Confirmation Request Negative Reply */
+ case 0x002f: /* User Passkey Request Negative Reply */
+ case 0x0033: /* Remote OOB Data Request Negative Reply */
+ offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
+ break;
+
+ case 0x002e: /* User Passkey Request Reply */
+ offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
+
+ proto_tree_add_item(tree, hf_bthci_cmd_passkey, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset+=4;
+ break;
+
+ case 0x0030: /* Remote OOB Data Request Reply */
+ offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
+
+ proto_tree_add_item(tree, hf_bthci_cmd_hash_c, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ proto_tree_add_item(tree, hf_bthci_cmd_randomizer_r, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ break;
+
+ default:
+ proto_tree_add_item(tree, hf_bthci_cmd_params, tvb, offset, -1, ENC_NA);
+ offset+=tvb_length_remaining(tvb, offset);
+ break;
+ }
return offset;
}
static int
dissect_link_policy_cmd(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, guint16 cmd_ocf)
{
- proto_item *item;
- guint16 timeout;
-
- switch(cmd_ocf) {
-
- case 0x0001: /* Hold Mode */
- proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- item = proto_tree_add_item(tree, hf_bthci_cmd_max_interval_hold, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- timeout = tvb_get_letohs(tvb, offset);
- proto_item_append_text(item, " slots (%g msec)", timeout*0.625);
- offset+=2;
- item = proto_tree_add_item(tree, hf_bthci_cmd_min_interval_hold, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- timeout = tvb_get_letohs(tvb, offset);
- proto_item_append_text(item, " slots (%g msec)", timeout*0.625);
- offset+=2;
- break;
-
- case 0x0003: /* sniff mode */
- proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- item = proto_tree_add_item(tree, hf_bthci_cmd_max_interval_sniff, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*0.625);
- offset+=2;
- item = proto_tree_add_item(tree, hf_bthci_cmd_min_interval_sniff, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*0.625);
- offset+=2;
- item = proto_tree_add_item(tree, hf_bthci_cmd_sniff_attempt, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- timeout = tvb_get_letohs(tvb, offset);
- if(timeout>0){
- proto_item_append_text(item, " (%g msec)", (2*timeout-1)*0.625);
- } else {
- proto_item_append_text(item, " (0 msec)");
- }
- offset+=2;
- item = proto_tree_add_item(tree, hf_bthci_cmd_timeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*1.25);
- offset+=2;
- break;
-
- case 0x0005: /* Park Mode */
- proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- item = proto_tree_add_item(tree, hf_bthci_cmd_max_interval_beacon, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- timeout = tvb_get_letohs(tvb, offset);
- proto_item_append_text(item, " slots (%g msec)", timeout*0.625);
- offset+=2;
- item = proto_tree_add_item(tree, hf_bthci_cmd_min_interval_beacon, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- timeout = tvb_get_letohs(tvb, offset);
- proto_item_append_text(item, " slots (%g msec)", timeout*0.625);
- offset+=2;
- break;
-
- case 0x0007: /* QoS Setup */
- proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- proto_tree_add_item(tree, hf_bthci_cmd_flags, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- proto_tree_add_item(tree, hf_bthci_cmd_service_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- proto_tree_add_item(tree, hf_bthci_cmd_token_rate, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
- proto_tree_add_item(tree, hf_bthci_cmd_peak_bandwidth, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
- proto_tree_add_item(tree, hf_bthci_cmd_latency, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
- proto_tree_add_item(tree, hf_bthci_cmd_delay_variation, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
- break;
-
- case 0x000b: /* Switch Role */
- offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
-
- proto_tree_add_item(tree, hf_bthci_cmd_role, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x0004: /* Exit Sniff Mode */
- case 0x0006: /* Exit Park Mode */
- case 0x0009: /* Role Discovery */
- case 0x000c: /* Read Link Policy Settings */
- proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- break;
-
- case 0x000d: /* Write Link Policy Settings */
- case 0x000f: /* Write Default Link Policy Settings */
- proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- proto_tree_add_item(tree, hf_bthci_cmd_link_policy_setting_switch, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_link_policy_setting_hold , tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_link_policy_setting_sniff , tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_link_policy_setting_park , tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- break;
-
- case 0x0010: /* Flow Specification */
- proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- proto_tree_add_item(tree, hf_bthci_cmd_flags, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- proto_tree_add_item(tree, hf_bthci_cmd_service_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- proto_tree_add_item(tree, hf_bthci_cmd_token_rate, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
- proto_tree_add_item(tree, hf_bthci_cmd_token_bucket_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
- proto_tree_add_item(tree, hf_bthci_cmd_peak_bandwidth, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
- proto_tree_add_item(tree, hf_bthci_cmd_latency, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
- break;
-
- case 0x0011: /* Sniff Subrating */
- proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- item = proto_tree_add_item(tree, hf_bthci_cmd_max_latency, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*0.625);
- offset+=2;
-
- item = proto_tree_add_item(tree, hf_bthci_cmd_min_remote_timeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*0.625);
- offset+=2;
-
- item = proto_tree_add_item(tree, hf_bthci_cmd_min_local_timeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*0.625);
- offset+=2;
- break;
-
- default:
- proto_tree_add_item(tree, hf_bthci_cmd_params, tvb, offset, -1, ENC_NA);
- offset+=tvb_length_remaining(tvb, offset);
- break;
-
- }
+ proto_item *item;
+ guint16 timeout;
+
+ switch (cmd_ocf) {
+
+ case 0x0001: /* Hold Mode */
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ item = proto_tree_add_item(tree, hf_bthci_cmd_max_interval_hold, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ timeout = tvb_get_letohs(tvb, offset);
+ proto_item_append_text(item, " slots (%g msec)", timeout*0.625);
+ offset+=2;
+ item = proto_tree_add_item(tree, hf_bthci_cmd_min_interval_hold, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ timeout = tvb_get_letohs(tvb, offset);
+ proto_item_append_text(item, " slots (%g msec)", timeout*0.625);
+ offset+=2;
+ break;
+
+ case 0x0003: /* sniff mode */
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ item = proto_tree_add_item(tree, hf_bthci_cmd_max_interval_sniff, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*0.625);
+ offset+=2;
+ item = proto_tree_add_item(tree, hf_bthci_cmd_min_interval_sniff, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*0.625);
+ offset+=2;
+ item = proto_tree_add_item(tree, hf_bthci_cmd_sniff_attempt, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ timeout = tvb_get_letohs(tvb, offset);
+ if (timeout>0) {
+ proto_item_append_text(item, " (%g msec)", (2*timeout-1)*0.625);
+ } else {
+ proto_item_append_text(item, " (0 msec)");
+ }
+ offset+=2;
+ item = proto_tree_add_item(tree, hf_bthci_cmd_timeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*1.25);
+ offset+=2;
+ break;
+
+ case 0x0005: /* Park Mode */
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ item = proto_tree_add_item(tree, hf_bthci_cmd_max_interval_beacon, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ timeout = tvb_get_letohs(tvb, offset);
+ proto_item_append_text(item, " slots (%g msec)", timeout*0.625);
+ offset+=2;
+ item = proto_tree_add_item(tree, hf_bthci_cmd_min_interval_beacon, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ timeout = tvb_get_letohs(tvb, offset);
+ proto_item_append_text(item, " slots (%g msec)", timeout*0.625);
+ offset+=2;
+ break;
+
+ case 0x0007: /* QoS Setup */
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ proto_tree_add_item(tree, hf_bthci_cmd_flags, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_bthci_cmd_service_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_bthci_cmd_token_rate, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset+=4;
+ proto_tree_add_item(tree, hf_bthci_cmd_peak_bandwidth, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset+=4;
+ proto_tree_add_item(tree, hf_bthci_cmd_latency, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset+=4;
+ proto_tree_add_item(tree, hf_bthci_cmd_delay_variation, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset+=4;
+ break;
+
+ case 0x000b: /* Switch Role */
+ offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
+
+ proto_tree_add_item(tree, hf_bthci_cmd_role, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x0004: /* Exit Sniff Mode */
+ case 0x0006: /* Exit Park Mode */
+ case 0x0009: /* Role Discovery */
+ case 0x000c: /* Read Link Policy Settings */
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ break;
+
+ case 0x000d: /* Write Link Policy Settings */
+ case 0x000f: /* Write Default Link Policy Settings */
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ proto_tree_add_item(tree, hf_bthci_cmd_link_policy_setting_switch, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_link_policy_setting_hold , tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_link_policy_setting_sniff , tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_link_policy_setting_park , tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ break;
+
+ case 0x0010: /* Flow Specification */
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ proto_tree_add_item(tree, hf_bthci_cmd_flags, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_bthci_cmd_service_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_bthci_cmd_token_rate, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset+=4;
+ proto_tree_add_item(tree, hf_bthci_cmd_token_bucket_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset+=4;
+ proto_tree_add_item(tree, hf_bthci_cmd_peak_bandwidth, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset+=4;
+ proto_tree_add_item(tree, hf_bthci_cmd_latency, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset+=4;
+ break;
+
+ case 0x0011: /* Sniff Subrating */
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+
+ item = proto_tree_add_item(tree, hf_bthci_cmd_max_latency, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*0.625);
+ offset+=2;
+
+ item = proto_tree_add_item(tree, hf_bthci_cmd_min_remote_timeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*0.625);
+ offset+=2;
+
+ item = proto_tree_add_item(tree, hf_bthci_cmd_min_local_timeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*0.625);
+ offset+=2;
+ break;
+
+ default:
+ proto_tree_add_item(tree, hf_bthci_cmd_params, tvb, offset, -1, ENC_NA);
+ offset+=tvb_length_remaining(tvb, offset);
+ break;
+
+ }
return offset;
}
static int
dissect_host_controller_baseband_cmd(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
- proto_tree *tree, guint16 cmd_ocf)
+ proto_tree *tree, guint16 cmd_ocf)
{
- proto_item *item;
- guint16 timeout;
- guint8 filter_type, filter_condition_type, num8;
- int i;
-
- switch(cmd_ocf) {
-
- case 0x0001: /* Set Event Mask */
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_00, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_01, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_02, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_03, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_04, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_05, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_06, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_07, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_10, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_11, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_12, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_13, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_14, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_17, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_20, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_21, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_23, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_24, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_25, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_26, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_27, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_30, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_31, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_32, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_33, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_34, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_35, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_36, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_37, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_40, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_41, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_42, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_53, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_54, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_55, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_56, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_57, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_60, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_61, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_62, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_63, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_64, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_65, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_67, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_70, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_72, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_73, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x0005: /* Set Event Filter */
- proto_tree_add_item(tree, hf_bthci_cmd_filter_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- filter_type = tvb_get_guint8(tvb, 3);
- offset++;
- switch (filter_type) {
-
- case 0x01: /* Inquiry Result Filter */
- proto_tree_add_item(tree, hf_bthci_cmd_inquiry_result_filter_condition_type,
- tvb, offset, 1, ENC_LITTLE_ENDIAN);
- filter_condition_type = tvb_get_guint8(tvb, offset);
- offset++;
- switch (filter_condition_type) {
- case 0x01:
- offset=dissect_bthci_cmd_cod(hf_bthci_cmd_class_of_device, tvb, offset, pinfo, tree);
- offset=dissect_bthci_cmd_cod(hf_bthci_cmd_class_of_device_mask, tvb, offset, pinfo, tree);
- break;
-
- case 0x02:
- offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
- break;
-
- default:
- break;
-
- }
- break;
-
- case 0x02: /* Connection Setup Filter */
- proto_tree_add_item(tree, hf_bthci_cmd_connection_setup_filter_condition_type,
- tvb, offset, 1, ENC_LITTLE_ENDIAN);
- filter_condition_type = tvb_get_guint8(tvb, offset);
- offset++;
- switch (filter_condition_type) {
- case 0x00:
- proto_tree_add_item(tree, hf_bthci_cmd_auto_acc_flag, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x01:
- offset=dissect_bthci_cmd_cod(hf_bthci_cmd_class_of_device, tvb, offset, pinfo, tree);
- offset=dissect_bthci_cmd_cod(hf_bthci_cmd_class_of_device_mask, tvb, offset, pinfo, tree);
-
- proto_tree_add_item(tree, hf_bthci_cmd_auto_acc_flag, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x02:
- offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
-
- proto_tree_add_item(tree, hf_bthci_cmd_auto_acc_flag, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- default:
- break;
-
- }
- break;
-
- default:
- break;
-
- }
-
- break;
- case 0x000a: /* Write PIN Type */
- proto_tree_add_item(tree, hf_bthci_cmd_pin_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x000d: /* Read Stored Link Key */
- offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
-
- proto_tree_add_item(tree, hf_bthci_cmd_read_all_flag, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x0011: /* Write Stored Link Key */
- proto_tree_add_item(tree, hf_bthci_cmd_num_link_keys, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- num8 = tvb_get_guint8(tvb, offset);
- offset++;
- for (i=0; i<num8; i++) {
- dissect_bthci_cmd_bd_addr(tvb, offset+(i*22), pinfo, tree);
- proto_tree_add_item(tree, hf_bthci_cmd_link_key, tvb, offset+6+(i*22), 16, ENC_NA);
- }
- break;
-
- case 0x0012: /* Delete Stored Link Key */
- offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
-
- proto_tree_add_item(tree, hf_bthci_cmd_delete_all_flag, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x0013: /* Change Local Name */
- proto_tree_add_item(tree, hf_bthci_cmd_device_name,
- tvb, offset, 248, ENC_ASCII|ENC_NA);
- offset+=248;
- break;
-
- case 0x0016: /* Write Connection Accept Timeout */
- item = proto_tree_add_item(tree, hf_bthci_cmd_timeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- timeout = tvb_get_letohs(tvb, offset);
- proto_item_append_text(item, " slots (%g msec)", timeout*0.625);
- offset+=2;
- break;
-
- case 0x0018: /* Write Page Timeout */
- item = proto_tree_add_item(tree, hf_bthci_cmd_timeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- timeout = tvb_get_letohs(tvb, offset);
- if(timeout > 0){
- proto_item_append_text(item, " slots (%g msec)", timeout*0.625);
- } else {
- proto_item_append_text(item, " Illegal Page Timeout");
- }
- offset+=2;
- break;
-
- case 0x001a: /* Write Scan Enable */
- proto_tree_add_item(tree, hf_bthci_cmd_scan_enable,
- tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x0020: /* Write Authentication Enable */
- proto_tree_add_item(tree, hf_bthci_cmd_authentication_enable,
- tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x0022: /* Write Encryption Mode */
- proto_tree_add_item(tree, hf_bthci_cmd_encrypt_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x0024: /* Write Class of Device */
- offset=dissect_bthci_cmd_cod(hf_bthci_cmd_class_of_device, tvb, offset, pinfo, tree);
- break;
-
- case 0x0026: /* Write Voice Setting */
- proto_tree_add_item(tree, hf_bthci_cmd_input_coding,
- tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_input_data_format,
- tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_input_sample_size,
- tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_linear_pcm_bit_pos,
- tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_air_coding_format,
- tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- break;
-
- case 0x0028: /* Write Automatic Flush Timeout */
- proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- item = proto_tree_add_item(tree, hf_bthci_cmd_timeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- timeout = tvb_get_letohs(tvb, offset);
- if(timeout>0){
- proto_item_append_text(item, " slots (%g msec)", timeout*0.625);
- } else {
- proto_item_append_text(item, " (= No Automatic Flush )");
- }
- offset+=2;
- break;
-
- case 0x002a: /* Write Num of Broadcast Retransmissions */
- proto_tree_add_item(tree, hf_bthci_cmd_num_broadcast_retransmissions,
- tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x002c: /* Write Hold Mode Activity */
- proto_tree_add_item(tree, hf_bthci_cmd_hold_mode_act_page,
- tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_hold_mode_act_inquiry,
- tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_hold_mode_act_periodic,
- tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x002d: /* Read Transmit Power Level */
- proto_tree_add_item(tree, hf_bthci_cmd_connection_handle,
- tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- proto_tree_add_item(tree, hf_bthci_cmd_power_level_type,
- tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x002f: /* Write SCO Flow Control Enable */
- proto_tree_add_item(tree, hf_bthci_cmd_sco_flow_control,
- tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x0031: /* Set Host Controller To Host Flow Control */
- proto_tree_add_item(tree, hf_bthci_cmd_flow_contr_enable,
- tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x0033: /* Host Buffer Size */
- proto_tree_add_item(tree, hf_bthci_cmd_host_data_packet_length_acl,
- tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- proto_tree_add_item(tree, hf_bthci_cmd_host_data_packet_length_sco,
- tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- proto_tree_add_item(tree, hf_bthci_cmd_host_total_num_acl_data_packets,
- tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- proto_tree_add_item(tree, hf_bthci_cmd_host_total_num_sco_data_packets,
- tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- break;
-
- case 0x0035: /* Host Number Of Completed Packets */
- proto_tree_add_item(tree, hf_bthci_cmd_num_handles,
- tvb, offset, 1, ENC_LITTLE_ENDIAN);
- num8 = tvb_get_guint8(tvb, offset);
- offset++;
- for (i=0; i<num8; i++) {
- proto_tree_add_item(tree, hf_bthci_cmd_connection_handle,
- tvb, offset+(i*4), 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_cmd_num_compl_packets,
- tvb, offset+2+(i*4), 2, ENC_LITTLE_ENDIAN);
- }
- break;
-
- case 0x0037: /* Write Link Supervision Timeout */
- proto_tree_add_item(tree, hf_bthci_cmd_connection_handle,
- tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- item = proto_tree_add_item(tree, hf_bthci_cmd_timeout,
- tvb, offset, 2, ENC_LITTLE_ENDIAN);
- timeout = tvb_get_letohs(tvb, offset);
- if(timeout>0){
- proto_item_append_text(item, " slots (%g msec)", timeout*0.625);
- } else {
- proto_item_append_text(item, " (= No Link Supervision Timeout)");
- }
- offset+=2;
- break;
-
- case 0x003a: /* Write Current IAC LAP */
- proto_tree_add_item(tree, hf_bthci_cmd_num_curr_iac, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- num8 = tvb_get_guint8(tvb, offset);
- offset++;
- for (i=0; i<num8; i++) {
- proto_tree_add_item(tree, hf_bthci_cmd_iac_lap, tvb, offset+(i*3), 3, ENC_LITTLE_ENDIAN);
- }
- break;
-
- case 0x003c: /* Write Page Scan Period Mode */
- proto_tree_add_item(tree, hf_bthci_cmd_page_scan_period_mode,
- tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x003e: /* Write Page Scan Mode */
- proto_tree_add_item(tree, hf_bthci_cmd_page_scan_mode,
- tvb, 3, 1, ENC_LITTLE_ENDIAN);
- break;
-
- case 0x003f: /* Set AFH Host Channel Classification */
- proto_tree_add_item(tree, hf_bthci_cmd_afh_ch_classification, tvb, offset, 10, ENC_NA);
- offset+=10;
- break;
-
- case 0x0008: /* Flush */
- case 0x0027: /* Read Automatic Flush Timeout */
- case 0x0036: /* Read Link Supervision Timeout */
- proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- break;
-
- case 0x001c: /* Write Page Scan Activity */
- case 0x001e: /* Write Inquiry Scan Activity */
- item = proto_tree_add_item(tree, hf_bthci_cmd_interval, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*0.625);
- offset+=2;
- item = proto_tree_add_item(tree, hf_bthci_cmd_window, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*0.625);
- offset+=2;
- break;
-
-
- case 0x0043: /* Write Inquiry Scan Type */
- proto_tree_add_item(tree, hf_bthci_cmd_scan_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x0045: /* Write Inquiry Mode */
- proto_tree_add_item(tree, hf_bthci_cmd_inq_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x0047: /* Write Page Scan Type */
- proto_tree_add_item(tree, hf_bthci_cmd_scan_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x0049: /* Write AFH Channel Assessment Mode */
- proto_tree_add_item(tree, hf_bthci_cmd_afh_ch_assessment_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x0052: /* Write Extended Inquiry Response */
- proto_tree_add_item(tree, hf_bthci_cmd_fec_required, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- offset=dissect_bthci_ext_inquiry_response(tvb, offset, pinfo, tree);
- break;
-
- case 0x0053: /* Refresh Encryption Key */
- proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- break;
-
- case 0x0056: /* Write Simple Pairing Mode */
- proto_tree_add_item(tree, hf_bthci_cmd_simple_pairing_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x0059: /* Write Inquiry Tx Response Power Level */
- proto_tree_add_item(tree, hf_bthci_cmd_tx_power, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x005b: /* Write Default Erroneous Data Reporting */
- proto_tree_add_item(tree, hf_bthci_cmd_err_data_reporting, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x005f: /* Enhanced Flush */
- proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- proto_tree_add_item(tree, hf_bthci_cmd_flush_packet_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- case 0x0060: /* Send Keypress Notification */
- offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
-
- proto_tree_add_item(tree, hf_bthci_cmd_notification_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- default:
- proto_tree_add_item(tree, hf_bthci_cmd_params, tvb, offset, -1, ENC_NA);
- offset+=tvb_length_remaining(tvb, offset);
- break;
-
- }
+ proto_item *item;
+ guint16 timeout;
+ guint8 filter_type, filter_condition_type, num8;
+ int i;
+
+ switch (cmd_ocf) {
+
+ case 0x0001: /* Set Event Mask */
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_00, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_01, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_02, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_03, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_04, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_05, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_06, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_07, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_10, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_11, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_12, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_13, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_14, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_17, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_20, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_21, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_23, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_24, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_25, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_26, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_27, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_30, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_31, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_32, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_33, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_34, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_35, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_36, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_37, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_40, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_41, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_42, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_53, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_54, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_55, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_56, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_57, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_60, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_61, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_62, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_63, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_64, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_65, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_67, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_70, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_72, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_evt_mask_73, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x0005: /* Set Event Filter */
+ proto_tree_add_item(tree, hf_bthci_cmd_filter_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ filter_type = tvb_get_guint8(tvb, 3);
+ offset++;
+ switch (filter_type) {
+
+ case 0x01: /* Inquiry Result Filter */
+ proto_tree_add_item(tree, hf_bthci_cmd_inquiry_result_filter_condition_type,
+ tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ filter_condition_type = tvb_get_guint8(tvb, offset);
+ offset++;
+ switch (filter_condition_type) {
+ case 0x01:
+ offset=dissect_bthci_cmd_cod(hf_bthci_cmd_class_of_device, tvb, offset, pinfo, tree);
+ offset=dissect_bthci_cmd_cod(hf_bthci_cmd_class_of_device_mask, tvb, offset, pinfo, tree);
+ break;
+
+ case 0x02:
+ offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
+ break;
+
+ default:
+ break;
+
+ }
+ break;
+
+ case 0x02: /* Connection Setup Filter */
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_setup_filter_condition_type,
+ tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ filter_condition_type = tvb_get_guint8(tvb, offset);
+ offset++;
+ switch (filter_condition_type) {
+ case 0x00:
+ proto_tree_add_item(tree, hf_bthci_cmd_auto_acc_flag, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x01:
+ offset=dissect_bthci_cmd_cod(hf_bthci_cmd_class_of_device, tvb, offset, pinfo, tree);
+ offset=dissect_bthci_cmd_cod(hf_bthci_cmd_class_of_device_mask, tvb, offset, pinfo, tree);
+
+ proto_tree_add_item(tree, hf_bthci_cmd_auto_acc_flag, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x02:
+ offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
+
+ proto_tree_add_item(tree, hf_bthci_cmd_auto_acc_flag, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ default:
+ break;
+
+ }
+ break;
+
+ default:
+ break;
+
+ }
+
+ break;
+ case 0x000a: /* Write PIN Type */
+ proto_tree_add_item(tree, hf_bthci_cmd_pin_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x000d: /* Read Stored Link Key */
+ offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
+
+ proto_tree_add_item(tree, hf_bthci_cmd_read_all_flag, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x0011: /* Write Stored Link Key */
+ proto_tree_add_item(tree, hf_bthci_cmd_num_link_keys, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ num8 = tvb_get_guint8(tvb, offset);
+ offset++;
+ for (i=0; i<num8; i++) {
+ dissect_bthci_cmd_bd_addr(tvb, offset+(i*22), pinfo, tree);
+ proto_tree_add_item(tree, hf_bthci_cmd_link_key, tvb, offset+6+(i*22), 16, ENC_NA);
+ }
+ break;
+
+ case 0x0012: /* Delete Stored Link Key */
+ offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
+
+ proto_tree_add_item(tree, hf_bthci_cmd_delete_all_flag, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x0013: /* Change Local Name */
+ proto_tree_add_item(tree, hf_bthci_cmd_device_name,
+ tvb, offset, 248, ENC_ASCII|ENC_NA);
+ offset+=248;
+ break;
+
+ case 0x0016: /* Write Connection Accept Timeout */
+ item = proto_tree_add_item(tree, hf_bthci_cmd_timeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ timeout = tvb_get_letohs(tvb, offset);
+ proto_item_append_text(item, " slots (%g msec)", timeout*0.625);
+ offset+=2;
+ break;
+
+ case 0x0018: /* Write Page Timeout */
+ item = proto_tree_add_item(tree, hf_bthci_cmd_timeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ timeout = tvb_get_letohs(tvb, offset);
+ if (timeout > 0) {
+ proto_item_append_text(item, " slots (%g msec)", timeout*0.625);
+ } else {
+ proto_item_append_text(item, " Illegal Page Timeout");
+ }
+ offset+=2;
+ break;
+
+ case 0x001a: /* Write Scan Enable */
+ proto_tree_add_item(tree, hf_bthci_cmd_scan_enable,
+ tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x0020: /* Write Authentication Enable */
+ proto_tree_add_item(tree, hf_bthci_cmd_authentication_enable,
+ tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x0022: /* Write Encryption Mode */
+ proto_tree_add_item(tree, hf_bthci_cmd_encrypt_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x0024: /* Write Class of Device */
+ offset=dissect_bthci_cmd_cod(hf_bthci_cmd_class_of_device, tvb, offset, pinfo, tree);
+ break;
+
+ case 0x0026: /* Write Voice Setting */
+ proto_tree_add_item(tree, hf_bthci_cmd_input_coding,
+ tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_input_data_format,
+ tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_input_sample_size,
+ tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_linear_pcm_bit_pos,
+ tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_air_coding_format,
+ tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ break;
+
+ case 0x0028: /* Write Automatic Flush Timeout */
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ item = proto_tree_add_item(tree, hf_bthci_cmd_timeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ timeout = tvb_get_letohs(tvb, offset);
+ if (timeout>0) {
+ proto_item_append_text(item, " slots (%g msec)", timeout*0.625);
+ } else {
+ proto_item_append_text(item, " (= No Automatic Flush )");
+ }
+ offset+=2;
+ break;
+
+ case 0x002a: /* Write Num of Broadcast Retransmissions */
+ proto_tree_add_item(tree, hf_bthci_cmd_num_broadcast_retransmissions,
+ tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x002c: /* Write Hold Mode Activity */
+ proto_tree_add_item(tree, hf_bthci_cmd_hold_mode_act_page,
+ tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_hold_mode_act_inquiry,
+ tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_hold_mode_act_periodic,
+ tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x002d: /* Read Transmit Power Level */
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_handle,
+ tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ proto_tree_add_item(tree, hf_bthci_cmd_power_level_type,
+ tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x002f: /* Write SCO Flow Control Enable */
+ proto_tree_add_item(tree, hf_bthci_cmd_sco_flow_control,
+ tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x0031: /* Set Host Controller To Host Flow Control */
+ proto_tree_add_item(tree, hf_bthci_cmd_flow_contr_enable,
+ tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x0033: /* Host Buffer Size */
+ proto_tree_add_item(tree, hf_bthci_cmd_host_data_packet_length_acl,
+ tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ proto_tree_add_item(tree, hf_bthci_cmd_host_data_packet_length_sco,
+ tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_bthci_cmd_host_total_num_acl_data_packets,
+ tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ proto_tree_add_item(tree, hf_bthci_cmd_host_total_num_sco_data_packets,
+ tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ break;
+
+ case 0x0035: /* Host Number Of Completed Packets */
+ proto_tree_add_item(tree, hf_bthci_cmd_num_handles,
+ tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ num8 = tvb_get_guint8(tvb, offset);
+ offset++;
+ for (i=0; i<num8; i++) {
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_handle,
+ tvb, offset+(i*4), 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_cmd_num_compl_packets,
+ tvb, offset+2+(i*4), 2, ENC_LITTLE_ENDIAN);
+ }
+ break;
+
+ case 0x0037: /* Write Link Supervision Timeout */
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_handle,
+ tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ item = proto_tree_add_item(tree, hf_bthci_cmd_timeout,
+ tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ timeout = tvb_get_letohs(tvb, offset);
+ if (timeout>0) {
+ proto_item_append_text(item, " slots (%g msec)", timeout*0.625);
+ } else {
+ proto_item_append_text(item, " (= No Link Supervision Timeout)");
+ }
+ offset+=2;
+ break;
+
+ case 0x003a: /* Write Current IAC LAP */
+ proto_tree_add_item(tree, hf_bthci_cmd_num_curr_iac, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ num8 = tvb_get_guint8(tvb, offset);
+ offset++;
+ for (i=0; i<num8; i++) {
+ proto_tree_add_item(tree, hf_bthci_cmd_iac_lap, tvb, offset+(i*3), 3, ENC_LITTLE_ENDIAN);
+ }
+ break;
+
+ case 0x003c: /* Write Page Scan Period Mode */
+ proto_tree_add_item(tree, hf_bthci_cmd_page_scan_period_mode,
+ tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x003e: /* Write Page Scan Mode */
+ proto_tree_add_item(tree, hf_bthci_cmd_page_scan_mode,
+ tvb, 3, 1, ENC_LITTLE_ENDIAN);
+ break;
+
+ case 0x003f: /* Set AFH Host Channel Classification */
+ proto_tree_add_item(tree, hf_bthci_cmd_afh_ch_classification, tvb, offset, 10, ENC_NA);
+ offset+=10;
+ break;
+
+ case 0x0008: /* Flush */
+ case 0x0027: /* Read Automatic Flush Timeout */
+ case 0x0036: /* Read Link Supervision Timeout */
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ break;
+
+ case 0x001c: /* Write Page Scan Activity */
+ case 0x001e: /* Write Inquiry Scan Activity */
+ item = proto_tree_add_item(tree, hf_bthci_cmd_interval, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*0.625);
+ offset+=2;
+ item = proto_tree_add_item(tree, hf_bthci_cmd_window, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*0.625);
+ offset+=2;
+ break;
+
+
+ case 0x0043: /* Write Inquiry Scan Type */
+ proto_tree_add_item(tree, hf_bthci_cmd_scan_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x0045: /* Write Inquiry Mode */
+ proto_tree_add_item(tree, hf_bthci_cmd_inq_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x0047: /* Write Page Scan Type */
+ proto_tree_add_item(tree, hf_bthci_cmd_scan_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x0049: /* Write AFH Channel Assessment Mode */
+ proto_tree_add_item(tree, hf_bthci_cmd_afh_ch_assessment_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x0052: /* Write Extended Inquiry Response */
+ proto_tree_add_item(tree, hf_bthci_cmd_fec_required, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ offset=dissect_bthci_ext_inquiry_response(tvb, offset, pinfo, tree);
+ break;
+
+ case 0x0053: /* Refresh Encryption Key */
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ break;
+
+ case 0x0056: /* Write Simple Pairing Mode */
+ proto_tree_add_item(tree, hf_bthci_cmd_simple_pairing_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x0059: /* Write Inquiry Tx Response Power Level */
+ proto_tree_add_item(tree, hf_bthci_cmd_tx_power, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x005b: /* Write Default Erroneous Data Reporting */
+ proto_tree_add_item(tree, hf_bthci_cmd_err_data_reporting, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x005f: /* Enhanced Flush */
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ proto_tree_add_item(tree, hf_bthci_cmd_flush_packet_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ case 0x0060: /* Send Keypress Notification */
+ offset = dissect_bthci_cmd_bd_addr(tvb, offset, pinfo, tree);
+
+ proto_tree_add_item(tree, hf_bthci_cmd_notification_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ default:
+ proto_tree_add_item(tree, hf_bthci_cmd_params, tvb, offset, -1, ENC_NA);
+ offset+=tvb_length_remaining(tvb, offset);
+ break;
+
+ }
return offset;
}
static int
dissect_informational_parameters_cmd(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
- proto_tree *tree, guint16 cmd_ocf)
+ proto_tree *tree, guint16 cmd_ocf)
{
- switch(cmd_ocf) {
+ switch (cmd_ocf) {
- case 0x0004: /* Read Local Extended Features */
- proto_tree_add_item(tree, hf_bthci_cmd_page_number, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
+ case 0x0004: /* Read Local Extended Features */
+ proto_tree_add_item(tree, hf_bthci_cmd_page_number, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
- default:
- proto_tree_add_item(tree, hf_bthci_cmd_params, tvb, offset, -1, ENC_NA);
- offset+=tvb_length_remaining(tvb, offset);
- break;
+ default:
+ proto_tree_add_item(tree, hf_bthci_cmd_params, tvb, offset, -1, ENC_NA);
+ offset+=tvb_length_remaining(tvb, offset);
+ break;
- }
+ }
return offset;
}
static int
dissect_status_parameters_cmd(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
- proto_tree *tree, guint16 cmd_ocf)
+ proto_tree *tree, guint16 cmd_ocf)
{
- switch(cmd_ocf) {
-
- case 0x0001: /* Read Failed Contact Counter */
- case 0x0002: /* Reset Failed Contact Counter */
- case 0x0003: /* Get Link Quality */
- case 0x0005: /* Read RSSI */
- case 0x0006: /* Read AFH Channel Map */
- proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- break;
-
- case 0x0007: /* Read Clock */
- proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- proto_tree_add_item(tree, hf_bthci_cmd_which_clock, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- default:
- proto_tree_add_item(tree, hf_bthci_cmd_params, tvb, offset, -1, ENC_NA);
- offset+=tvb_length_remaining(tvb, offset);
- break;
-
- }
+ switch (cmd_ocf) {
+
+ case 0x0001: /* Read Failed Contact Counter */
+ case 0x0002: /* Reset Failed Contact Counter */
+ case 0x0003: /* Get Link Quality */
+ case 0x0005: /* Read RSSI */
+ case 0x0006: /* Read AFH Channel Map */
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ break;
+
+ case 0x0007: /* Read Clock */
+ proto_tree_add_item(tree, hf_bthci_cmd_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ proto_tree_add_item(tree, hf_bthci_cmd_which_clock, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ default:
+ proto_tree_add_item(tree, hf_bthci_cmd_params, tvb, offset, -1, ENC_NA);
+ offset+=tvb_length_remaining(tvb, offset);
+ break;
+
+ }
return offset;
}
static int
dissect_testing_cmd(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, guint16 cmd_ocf)
{
- switch(cmd_ocf) {
+ switch (cmd_ocf) {
- case 0x0002: /* Write Loopback Mode */
- proto_tree_add_item(tree, hf_bthci_cmd_loopback_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
+ case 0x0002: /* Write Loopback Mode */
+ proto_tree_add_item(tree, hf_bthci_cmd_loopback_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
- case 0x0004: /* Write Simple Pairing Debug Mode */
- proto_tree_add_item(tree, hf_bthci_cmd_simple_pairing_debug_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
+ case 0x0004: /* Write Simple Pairing Debug Mode */
+ proto_tree_add_item(tree, hf_bthci_cmd_simple_pairing_debug_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
- default:
- proto_tree_add_item(tree, hf_bthci_cmd_params, tvb, offset, -1, ENC_NA);
- offset+=tvb_length_remaining(tvb, offset);
- break;
+ default:
+ proto_tree_add_item(tree, hf_bthci_cmd_params, tvb, offset, -1, ENC_NA);
+ offset+=tvb_length_remaining(tvb, offset);
+ break;
- }
+ }
return offset;
}
@@ -1886,72 +1886,72 @@ return offset;
static void
dissect_bthci_cmd(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti_cmd=NULL;
- proto_tree *bthci_cmd_tree=NULL;
- guint16 opcode, ocf;
- guint8 param_length, ogf;
- int offset=0;
-
- proto_item *ti_opcode;
- proto_tree *opcode_tree;
-
- if(tree){
- ti_cmd = proto_tree_add_item(tree, proto_bthci_cmd, tvb, offset, -1, ENC_NA);
- bthci_cmd_tree = proto_item_add_subtree(ti_cmd, ett_bthci_cmd);
- }
-
- opcode = tvb_get_letohs(tvb, offset);
- ocf = opcode & 0x03ff;
+ proto_item *ti_cmd = NULL;
+ proto_tree *bthci_cmd_tree = NULL;
+ guint16 opcode, ocf;
+ guint8 param_length, ogf;
+ int offset = 0;
+
+ proto_item *ti_opcode;
+ proto_tree *opcode_tree;
+
+ if (tree) {
+ ti_cmd = proto_tree_add_item(tree, proto_bthci_cmd, tvb, offset, -1, ENC_NA);
+ bthci_cmd_tree = proto_item_add_subtree(ti_cmd, ett_bthci_cmd);
+ }
+
+ opcode = tvb_get_letohs(tvb, offset);
+ ocf = opcode & 0x03ff;
ogf = (guint8) (opcode >> 10);
- proto_item_append_text(ti_cmd," - %s", val_to_str_ext(opcode, &bthci_cmd_opcode_vals_ext, "Unknown 0x%04x"));
+ proto_item_append_text(ti_cmd," - %s", val_to_str_ext(opcode, &bthci_cmd_opcode_vals_ext, "Unknown 0x%04x"));
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "HCI_CMD");
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "HCI_CMD");
- col_append_fstr(pinfo->cinfo, COL_INFO, " %s", val_to_str_ext(opcode, &bthci_cmd_opcode_vals_ext, "Unknown 0x%04x"));
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s", val_to_str_ext(opcode, &bthci_cmd_opcode_vals_ext, "Unknown 0x%04x"));
- ti_opcode = proto_tree_add_item(bthci_cmd_tree, hf_bthci_cmd_opcode, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- opcode_tree = proto_item_add_subtree(ti_opcode, ett_opcode);
- proto_tree_add_item(opcode_tree, hf_bthci_cmd_ogf, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(opcode_tree, hf_bthci_cmd_ocf, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ ti_opcode = proto_tree_add_item(bthci_cmd_tree, hf_bthci_cmd_opcode, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ opcode_tree = proto_item_add_subtree(ti_opcode, ett_opcode);
+ proto_tree_add_item(opcode_tree, hf_bthci_cmd_ogf, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(opcode_tree, hf_bthci_cmd_ocf, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(bthci_cmd_tree, hf_bthci_cmd_param_length, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- param_length = tvb_get_guint8(tvb, offset);
- offset++;
+ proto_tree_add_item(bthci_cmd_tree, hf_bthci_cmd_param_length, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ param_length = tvb_get_guint8(tvb, offset);
+ offset++;
- if(param_length>0){
- switch(ogf){
- case 0x01: /* Link Control Command */
- dissect_link_control_cmd(tvb, offset, pinfo, bthci_cmd_tree, ocf);
- break;
+ if (param_length > 0) {
+ switch (ogf) {
+ case 0x01: /* Link Control Command */
+ dissect_link_control_cmd(tvb, offset, pinfo, bthci_cmd_tree, ocf);
+ break;
- case 0x02: /* Link Policy Command */
- dissect_link_policy_cmd(tvb, offset, pinfo, bthci_cmd_tree, ocf);
- break;
+ case 0x02: /* Link Policy Command */
+ dissect_link_policy_cmd(tvb, offset, pinfo, bthci_cmd_tree, ocf);
+ break;
- case 0x03: /* Host Controller & Baseband Command */
- dissect_host_controller_baseband_cmd(tvb, offset, pinfo, bthci_cmd_tree, ocf);
- break;
+ case 0x03: /* Host Controller & Baseband Command */
+ dissect_host_controller_baseband_cmd(tvb, offset, pinfo, bthci_cmd_tree, ocf);
+ break;
- case 0x04: /* Informational Parameter Command */
- dissect_informational_parameters_cmd(tvb, offset, pinfo, bthci_cmd_tree, ocf);
- break;
+ case 0x04: /* Informational Parameter Command */
+ dissect_informational_parameters_cmd(tvb, offset, pinfo, bthci_cmd_tree, ocf);
+ break;
- case 0x05: /* Status Parameter Command */
- dissect_status_parameters_cmd(tvb, offset, pinfo, bthci_cmd_tree, ocf);
- break;
+ case 0x05: /* Status Parameter Command */
+ dissect_status_parameters_cmd(tvb, offset, pinfo, bthci_cmd_tree, ocf);
+ break;
- case 0x06: /* Testing Command */
- dissect_testing_cmd(tvb, offset, pinfo, bthci_cmd_tree, ocf);
- break;
+ case 0x06: /* Testing Command */
+ dissect_testing_cmd(tvb, offset, pinfo, bthci_cmd_tree, ocf);
+ break;
- default:
- proto_tree_add_item(bthci_cmd_tree, hf_bthci_cmd_params, tvb, 3, -1, ENC_NA);
- break;
- }
- }
+ default:
+ proto_tree_add_item(bthci_cmd_tree, hf_bthci_cmd_params, tvb, 3, -1, ENC_NA);
+ break;
+ }
+ }
}
@@ -1964,957 +1964,957 @@ void
proto_register_bthci_cmd(void)
{
- /* Setup list of header fields See Section 1.6.1 for details*/
- static hf_register_info hf[] = {
- { &hf_bthci_cmd_opcode,
- { "Command Opcode","bthci_cmd.opcode", FT_UINT16, BASE_HEX|BASE_EXT_STRING,
- &bthci_cmd_opcode_vals_ext, 0x0, "HCI Command Opcode", HFILL }
- },
- { &hf_bthci_cmd_ogf,
- { "ogf", "bthci_cmd.ogf",
- FT_UINT16, BASE_HEX|BASE_EXT_STRING, &bthci_ogf_vals_ext, 0xfc00,
- "Opcode Group Field", HFILL }
- },
- { &hf_bthci_cmd_ocf,
- { "ocf", "bthci_cmd.ocf",
- FT_UINT16, BASE_HEX, NULL, 0x03ff,
- "Opcode Command Field", HFILL }
- },
- { &hf_bthci_cmd_param_length,
- { "Parameter Total Length", "bthci_cmd.param_length",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_params,
- { "Command Parameters", "bthci_cmd.params",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_lap,
- { "LAP", "bthci_cmd.lap",
- FT_UINT24, BASE_HEX, NULL, 0x0,
- "LAP for the inquiry access code", HFILL }
- },
- { &hf_bthci_cmd_inq_length,
- { "Inquiry Length", "bthci_cmd.inq_length",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Inquiry Length (*1.28s)", HFILL }
- },
- { &hf_bthci_cmd_num_responses,
- { "Num Responses", "bthci_cmd.num_responses",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Number of Responses", HFILL }
- },
- { &hf_bthci_cmd_encrypt_mode,
- { "Encryption Mode", "bthci_cmd.encrypt_mode",
- FT_UINT8, BASE_HEX, VALS(encrypt_mode_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_bd_addr,
- { "BD_ADDR:", "bthci_cmd.bd_addr",
- FT_NONE, BASE_NONE, NULL, 0x0,
- "Bluetooth Device Address", HFILL}
- },
- { &hf_bthci_cmd_packet_type_2dh1,
- { "Packet Type 2-DH1", "bthci_cmd.packet_type_2dh1",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0002,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_packet_type_3dh1,
- { "Packet Type 3-DH1", "bthci_cmd.packet_type_3dh1",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0004,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_packet_type_dm1,
- { "Packet Type DM1", "bthci_cmd.packet_type_dm1",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0008,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_packet_type_dh1,
- { "Packet Type DH1", "bthci_cmd.packet_type_dh1",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0010,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_packet_type_2dh3,
- { "Packet Type 2-DH3", "bthci_cmd.packet_type_2dh3",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0100,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_packet_type_3dh3,
- { "Packet Type 3-DH3", "bthci_cmd.packet_type_3dh3",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0200,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_packet_type_dm3,
- { "Packet Type DM3", "bthci_cmd.packet_type_dm3",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0400,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_packet_type_dh3,
- { "Packet Type DH3", "bthci_cmd.packet_type_dh3",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0800,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_packet_type_2dh5,
- { "Packet Type 2-DH5", "bthci_cmd.packet_type_2dh5",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x1000,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_packet_type_3dh5,
- { "Packet Type 3-DH5", "bthci_cmd.packet_type_3dh5",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x2000,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_packet_type_dm5,
- { "Packet Type DM5", "bthci_cmd.packet_type_dm5",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x4000,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_packet_type_dh5,
- { "Packet Type DH5", "bthci_cmd.packet_type_dh5",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x8000,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_page_scan_mode,
- { "Page Scan Mode", "bthci_cmd.page_scan_mode",
- FT_UINT8, BASE_HEX, VALS(cmd_page_scan_modes), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_page_scan_repetition_mode,
- { "Page Scan Repetition Mode", "bthci_cmd.page_scan_repetition_mode",
- FT_UINT8, BASE_HEX, VALS(cmd_page_scan_repetition_modes), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_page_scan_period_mode,
- { "Page Scan Period Mode", "bthci_cmd.page_scan_period_mode",
- FT_UINT8, BASE_HEX, VALS(cmd_page_scan_period_modes), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_clock_offset,
- { "Clock Offset", "bthci_cmd.clock_offset",
- FT_UINT16, BASE_HEX, NULL, 0x7FFF,
- "Bit 2-16 of the Clock Offset between CLKmaster-CLKslave", HFILL }
- },
- { &hf_bthci_cmd_clock_offset_valid,
- { "Clock_Offset_Valid_Flag", "bthci_cmd.clock_offset_valid",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x8000,
- "Indicates if clock offset is valid", HFILL }
- },
- { &hf_bthci_cmd_allow_role_switch,
- { "Allow Role Switch", "bthci_cmd.allow_role_switch",
- FT_UINT8, BASE_HEX, VALS(cmd_role_switch_modes), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_status,
- { "Status", "bthci_cmd.status",
- FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_status_vals_ext, 0x0,
- NULL, HFILL }
- },
-
- { &hf_bthci_cmd_max_period_length,
- { "Max Period Length", "bthci_cmd.max_period_length",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Maximum amount of time specified between consecutive inquiries.", HFILL }
- },
- { &hf_bthci_cmd_min_period_length,
- { "Min Period Length", "bthci_cmd.min_period_length",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Minimum amount of time specified between consecutive inquiries.", HFILL }
- },
- { &hf_bthci_cmd_connection_handle,
- { "Connection Handle", "bthci_cmd.connection_handle",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_reason,
- { "Reason", "bthci_cmd.reason",
- FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_status_vals_ext, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_num_link_keys,
- { "Number of Link Keys", "bthci_cmd.num_link_keys",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_link_key,
- { "Link Key", "bthci_cmd.link_key",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- "Link Key for the associated BD_ADDR", HFILL }
- },
- { &hf_bthci_cmd_packet_type_hv1,
- { "Packet Type HV1", "bthci_cmd.packet_type_hv1",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0020,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_packet_type_hv2,
- { "Packet Type HV2", "bthci_cmd.packet_type_hv2",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0040,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_packet_type_hv3,
- { "Packet Type HV3", "bthci_cmd.packet_type_hv3",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0080,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_role,
- { "Role", "bthci_cmd.role",
- FT_UINT8, BASE_HEX, VALS(cmd_role_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_pin_code_length,
- { "PIN Code Length", "bthci_cmd.pin_code_length",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_pin_code,
- { "PIN Code", "bthci_cmd.pin_code",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_pin_type,
- { "PIN Type", "bthci_cmd.pin_type",
- FT_UINT8, BASE_HEX, VALS(cmd_pin_types), 0x0,
- "PIN Types", HFILL }
- },
- { &hf_bthci_cmd_encryption_enable,
- { "Encryption Enable", "bthci_cmd.encryption_enable",
- FT_UINT8, BASE_HEX, VALS(cmd_encryption_enable), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_key_flag,
- { "Key Flag", "bthci_cmd.key_flag",
- FT_UINT8, BASE_HEX, VALS(cmd_key_flag), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_max_interval_hold,
- { "Hold Mode Max Interval", "bthci_cmd.hold_mode_max_int",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Maximal acceptable number of Baseband slots to wait in Hold Mode.", HFILL }
- },
- { &hf_bthci_cmd_min_interval_hold,
- { "Hold Mode Min Interval", "bthci_cmd.hold_mode_min_int",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Minimum acceptable number of Baseband slots to wait in Hold Mode.", HFILL }
- },
- { &hf_bthci_cmd_max_interval_sniff,
- { "Sniff Max Interval", "bthci_cmd.sniff_max_int",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Maximal acceptable number of Baseband slots between each sniff period.", HFILL }
- },
- { &hf_bthci_cmd_min_interval_sniff,
- { "Sniff Min Interval", "bthci_cmd.sniff_min_int",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Minimum acceptable number of Baseband slots between each sniff period.", HFILL }
- },
- { &hf_bthci_cmd_sniff_attempt,
- { "Sniff Attempt", "bthci_cmd.sniff_attempt",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Number of Baseband receive slots for sniff attempt.", HFILL }
- },
- { &hf_bthci_cmd_timeout,
- { "Timeout", "bthci_cmd.timeout",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Number of Baseband slots for timeout.", HFILL }
- },
- { &hf_bthci_cmd_max_interval_beacon,
- { "Beacon Max Interval", "bthci_cmd.beacon_max_int",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Maximal acceptable number of Baseband slots between consecutive beacons.", HFILL }
- },
- { &hf_bthci_cmd_min_interval_beacon,
- { "Beacon Min Interval", "bthci_cmd.beacon_min_int",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Minimum acceptable number of Baseband slots between consecutive beacons.", HFILL }
- },
- { &hf_bthci_cmd_flags,
- { "Flags", "bthci_cmd.flags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_service_type,
- { "Service Type", "bthci_cmd.service_type",
- FT_UINT8, BASE_HEX, VALS(cmd_service_types), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_token_rate,
- { "Available Token Rate", "bthci_cmd.token_rate",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Token Rate, in bytes per second", HFILL }
- },
- { &hf_bthci_cmd_token_bucket_size,
- { "Available Token Bucket Size", "bthci_cmd.token_bucket_size",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Token Bucket Size in bytes", HFILL }
- },
- { &hf_bthci_cmd_peak_bandwidth,
- { "Peak Bandwidth", "bthci_cmd.peak_bandwidth",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Peak Bandwidth, in bytes per second", HFILL }
- },
- { &hf_bthci_cmd_latency,
- { "Latency", "bthci_cmd.latency",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Latency, in microseconds", HFILL }
- },
- { &hf_bthci_cmd_delay_variation,
- { "Delay Variation", "bthci_cmd.delay_variation",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Delay Variation, in microseconds", HFILL }
- },
- { &hf_bthci_cmd_link_policy_setting_switch,
- { "Enable Master Slave Switch", "bthci_cmd.link_policy_switch",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0001,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_link_policy_setting_hold,
- { "Enable Hold Mode", "bthci_cmd.link_policy_hold",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0002,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_link_policy_setting_sniff,
- { "Enable Sniff Mode", "bthci_cmd.link_policy_sniff",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0004,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_link_policy_setting_park,
- { "Enable Park Mode", "bthci_cmd.link_policy_park",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0008,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_filter_type,
- { "Filter Type", "bthci_cmd.filter_type",
- FT_UINT8, BASE_HEX, VALS(cmd_filter_types), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_inquiry_result_filter_condition_type,
- { "Filter Condition Type", "bthci_cmd.filter_condition_type",
- FT_UINT8, BASE_HEX, VALS(cmd_inquiry_result_filter_condition_types), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_connection_setup_filter_condition_type,
- { "Filter Condition Type", "bthci_cmd.filter_condition_type",
- FT_UINT8, BASE_HEX, VALS(cmd_connection_setup_filter_condition_types), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_class_of_device,
- { "Class of Device", "bthci_cmd.class_of_device",
- FT_UINT24, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_class_of_device_mask,
- { "Class of Device Mask", "bthci_cmd.class_of_device_mask",
- FT_UINT24, BASE_HEX, NULL, 0x0,
- "Bit Mask used to determine which bits of the Class of Device parameter are of interest.", HFILL }
- },
- { &hf_bthci_cmd_auto_acc_flag,
- { "Auto Accept Flag", "bthci_cmd.auto_accept_flag",
- FT_UINT8, BASE_HEX, VALS(cmd_auto_acc_flag_values), 0x0,
- "Class of Device of Interest", HFILL }
- },
- { &hf_bthci_cmd_read_all_flag,
- { "Read All Flag", "bthci_cmd.read_all_flag",
- FT_UINT8, BASE_HEX, VALS(cmd_read_all_flag_values), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_delete_all_flag,
- { "Delete All Flag", "bthci_cmd.delete_all_flag",
- FT_UINT8, BASE_HEX, VALS(cmd_delete_all_flag_values), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_authentication_enable,
- { "Authentication Enable", "bthci_cmd.auth_enable",
- FT_UINT8, BASE_HEX, VALS(cmd_authentication_enable_values), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_input_coding,
- { "Input Coding", "bthci_cmd.input_coding",
- FT_UINT16, BASE_DEC, VALS(cmd_input_coding_values), 0x0300,
- "Authentication Enable", HFILL }
- },
- { &hf_bthci_cmd_input_data_format,
- { "Input Data Format", "bthci_cmd.input_data_format",
- FT_UINT16, BASE_DEC, VALS(cmd_input_data_format_values), 0x00c0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_input_sample_size,
- { "Input Sample Size", "bthci_cmd.input_sample_size",
- FT_UINT16, BASE_DEC, VALS(cmd_input_sample_size_values), 0x0020,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_linear_pcm_bit_pos,
- { "Linear PCM Bit Pos", "bthci_cmd.lin_pcm_bit_pos",
- FT_UINT16, BASE_DEC, NULL, 0x001c,
- "# bit pos. that MSB of sample is away from starting at MSB", HFILL }
- },
- { &hf_bthci_cmd_air_coding_format,
- { "Air Coding Format", "bthci_cmd.air_coding_format",
- FT_UINT16, BASE_DEC, VALS(cmd_air_coding_format_values), 0x0003,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_num_broadcast_retransmissions,
- { "Num Broadcast Retran", "bthci_cmd.num_broad_retran",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Number of Broadcast Retransmissions", HFILL }
- },
- { &hf_bthci_cmd_hold_mode_act_page,
- { "Suspend Page Scan", "bthci_cmd.hold_mode_page",
- FT_UINT8, BASE_DEC, VALS(cmd_boolean), 0x1,
- "Device can enter low power state", HFILL }
- },
- { &hf_bthci_cmd_hold_mode_act_inquiry,
- { "Suspend Inquiry Scan", "bthci_cmd.hold_mode_inquiry",
- FT_UINT8, BASE_DEC, VALS(cmd_boolean), 0x2,
- "Device can enter low power state", HFILL }
- },
- { &hf_bthci_cmd_hold_mode_act_periodic,
- { "Suspend Periodic Inquiries", "bthci_cmd.hold_mode_periodic",
- FT_UINT8, BASE_DEC, VALS(cmd_boolean), 0x4,
- "Device can enter low power state", HFILL }
- },
- { &hf_bthci_cmd_scan_enable,
- { "Scan Enable", "bthci_cmd.scan_enable",
- FT_UINT8, BASE_HEX, VALS(cmd_scan_enable_values), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_interval,
- { "Interval", "bthci_cmd.interval",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_window,
- { "Interval", "bthci_cmd.window",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Window", HFILL }
- },
- { &hf_bthci_cmd_device_name,
- { "Device Name", "bthci_cmd.device_name",
- FT_STRINGZ, BASE_NONE, NULL, 0x0,
- "Userfriendly descriptive name for the device", HFILL }
- },
- { &hf_bthci_cmd_num_curr_iac,
- { "Number of Current IAC", "bthci_cmd.num_curr_iac",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Number of IACs which are currently in use", HFILL }
- },
- { &hf_bthci_cmd_iac_lap,
- { "IAC LAP", "bthci_cmd.num_curr_iac",
- FT_UINT24, BASE_HEX, NULL, 0x0,
- "LAP(s)used to create IAC", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_00,
- { "Inquiry Complete", "bthci_cmd.evt_mask_00",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x01,
- "Inquiry Complete Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_01,
- { "Inquiry Result", "bthci_cmd.evt_mask_01",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x02,
- "Inquiry Result Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_02,
- { "Connect Complete", "bthci_cmd.evt_mask_02",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x04,
- "Connection Complete Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_03,
- { "Connect Request", "bthci_cmd.evt_mask_03",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x08,
- "Connect Request Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_04,
- { "Disconnect Complete", "bthci_cmd.evt_mask_04",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x10,
- "Disconnect Complete Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_05,
- { "Auth Complete", "bthci_cmd.evt_mask_05",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x20,
- "Auth Complete Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_06,
- { "Remote Name Req Complete", "bthci_cmd.evt_mask_06",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x40,
- "Remote Name Req Complete Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_07,
- { "Encrypt Change", "bthci_cmd.evt_mask_07",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x80,
- "Encrypt Change Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_10,
- { "Change Connection Link Key Complete", "bthci_cmd.evt_mask_10",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x01,
- "Change Connection Link Key Complete Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_11,
- { "Master Link Key Complete", "bthci_cmd.evt_mask_11",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x02,
- "Master Link Key Complete Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_12,
- { "Read Remote Supported Features", "bthci_cmd.evt_mask_12",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x04,
- "Read Remote Supported Features Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_13,
- { "Read Remote Ver Info Complete", "bthci_cmd.evt_mask_13",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x08,
- "Read Remote Ver Info Complete Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_14,
- { "QoS Setup Complete", "bthci_cmd.evt_mask_14",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x10,
- "QoS Setup Complete Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_17,
- { "Hardware Error", "bthci_cmd.evt_mask_17",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x80,
- "Hardware Error Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_20,
- { "Flush Occurred", "bthci_cmd.evt_mask_20",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x01,
- "Flush Occurred Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_21,
- { "Role Change", "bthci_cmd.evt_mask_21",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x02,
- "Role Change Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_23,
- { "Mode Change", "bthci_cmd.evt_mask_23",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x08,
- "Mode Change Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_24,
- { "Return Link Keys", "bthci_cmd.evt_mask_24",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x10,
- "Return Link Keys Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_25,
- { "PIN Code Request", "bthci_cmd.evt_mask_25",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x20,
- "PIN Code Request Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_26,
- { "Link Key Request", "bthci_cmd.evt_mask_26",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x40,
- "Link Key Request Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_27,
- { "Link Key Notification", "bthci_cmd.evt_mask_27",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x80,
- "Link Key Notification Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_30,
- { "Loopback Command", "bthci_cmd.evt_mask_30",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x01,
- "Loopback Command Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_31,
- { "Data Buffer Overflow" , "bthci_cmd.evt_mask_31",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x02,
- "Data Buffer Overflow Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_32,
- { "Max Slots Change", "bthci_cmd.evt_mask_32",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x04,
- "Max Slots Change Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_33,
- { "Read Clock Offset Complete", "bthci_cmd.evt_mask_33",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x08,
- "Read Clock Offset Complete Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_34,
- { "Connection Packet Type Changed", "bthci_cmd.evt_mask_34",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x10,
- "Connection Packet Type Changed Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_35,
- { "QoS Violation", "bthci_cmd.evt_mask_35",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x20,
- "QoS Violation Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_36,
- { "Page Scan Mode Change", "bthci_cmd.evt_mask_36",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x40,
- "Page Scan Mode Change Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_37,
- { "Page Scan Repetition Mode Change", "bthci_cmd.evt_mask_37",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x80,
- "Page Scan Repetition Mode Change Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_40,
- { "Flow Specification Complete", "bthci_cmd.evt_mask_40",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x01,
- "Flow Specification Complete Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_41,
- { "Inquiry Result With RSSI", "bthci_cmd.evt_mask_41",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x02,
- "Inquiry Result With RSSI Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_42,
- { "Read Remote Ext. Features Complete", "bthci_cmd.evt_mask_42",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x04,
- "Read Remote Ext. Features Complete Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_53,
- { "Synchronous Connection Complete", "bthci_cmd.evt_mask_53",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x08,
- "Synchronous Connection Complete Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_54,
- { "Synchronous Connection Changed", "bthci_cmd.evt_mask_54",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x10,
- "Synchronous Connection Changed Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_55,
- { "Sniff Subrate", "bthci_cmd.evt_mask_55",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x20,
- "Sniff Subrate Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_56,
- { "Extended Inquiry Result", "bthci_cmd.evt_mask_56",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x40,
- "Extended Inquiry Result Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_57,
- { "Encryption Key Refresh Complete", "bthci_cmd.evt_mask_57",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x80,
- "Encryption Key Refresh Complete Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_60,
- { "IO Capability Request", "bthci_cmd.evt_mask_60",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x01,
- "IO Capability Request Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_61,
- { "IO Capability Response", "bthci_cmd.evt_mask_61",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x02,
- "IO Capability Response Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_62,
- { "User Confirmation Request", "bthci_cmd.evt_mask_62",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x04,
- "User Confirmation Request Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_63,
- { "User Passkey Request", "bthci_cmd.evt_mask_63",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x08,
- "User Passkey Request Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_64,
- { "Remote OOB Data Request", "bthci_cmd.evt_mask_64",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x10,
- "Remote OOB Data Request Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_65,
- { "Simple Pairing Complete", "bthci_cmd.evt_mask_65",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x20,
- "Simple Pairing Complete Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_67,
- { "Link Supervision Timeout Changed", "bthci_cmd.evt_mask_67",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x80,
- "Link Supervision Timeout Changed Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_70,
- { "Enhanced Flush Complete", "bthci_cmd.evt_mask_70",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x01,
- "Enhanced Flush Complete Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_72,
- { "User Passkey Notification", "bthci_cmd.evt_mask_72",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x04,
- "User Passkey Notification Bit", HFILL }
- },
- { &hf_bthci_cmd_evt_mask_73,
- { "Keypress Notification", "bthci_cmd.evt_mask_73",
- FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x08,
- "Keypress Notification Bit", HFILL }
- },
- { &hf_bthci_cmd_sco_flow_control,
- { "SCO Flow Control","bthci_cmd.flow_control",
- FT_UINT8, BASE_HEX, VALS(cmd_en_disabled), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_num_handles,
- { "Number of Handles", "bthci_cmd.num_handles",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
-
- { &hf_bthci_cmd_num_compl_packets,
- { "Number of Completed Packets", "bthci_cmd.num_compl_packets",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Number of Completed HCI Data Packets", HFILL }
- },
- { &hf_bthci_cmd_flow_contr_enable,
- { "Flow Control Enable", "bthci_cmd.flow_contr_enable",
- FT_UINT8, BASE_HEX, VALS(cmd_flow_contr_enable), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_host_data_packet_length_acl,
- {"Host ACL Data Packet Length (bytes)", "bthci_cmd.max_data_length_acl",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Max Host ACL Data Packet length of data portion host is able to accept", HFILL }
- },
- { &hf_bthci_cmd_host_data_packet_length_sco,
- {"Host SCO Data Packet Length (bytes)", "bthci_cmd.max_data_length_sco",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Max Host SCO Data Packet length of data portion host is able to accept", HFILL }
- },
- { &hf_bthci_cmd_host_total_num_acl_data_packets,
- {"Host Total Num ACL Data Packets", "bthci_cmd.max_data_num_acl",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Total Number of HCI ACL Data Packets that can be stored in the data buffers of the Host", HFILL }
- },
- { &hf_bthci_cmd_host_total_num_sco_data_packets,
- {"Host Total Num SCO Data Packets", "bthci_cmd.max_data_num_sco",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Total Number of HCI SCO Data Packets that can be stored in the data buffers of the Host", HFILL }
- },
- { &hf_bthci_cmd_power_level_type,
- {"Type", "bthci_cmd.power_level_type",
- FT_UINT8, BASE_HEX, VALS(cmd_power_level_types), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_cmd_loopback_mode,
- {"Loopback Mode", "bthci_cmd.loopback_mode",
- FT_UINT8, BASE_HEX, VALS(cmd_loopback_modes), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_cmd_page_number,
- {"Page Number", "bthci_cmd.page_number",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_cmd_transmit_bandwidth,
- {"Tx Bandwidth (bytes/s)", "bthci_cmd.tx_bandwidth",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Tx Bandwidth", HFILL}
- },
- { &hf_bthci_cmd_receive_bandwidth,
- {"Rx Bandwidth (bytes/s)", "bthci_cmd.rx_bandwidth",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Rx Bandwidth", HFILL}
- },
- { &hf_bthci_cmd_max_latency_ms,
- {"Max. Latency (ms)", "bthci_cmd.max_latency_ms",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_cmd_max_latency,
- {"Max. Latency", "bthci_cmd.max_latency",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Max. Latency in baseband slots", HFILL}
- },
- { &hf_bthci_cmd_retransmission_effort,
- {"Retransmission Effort", "bthci_cmd.retransmission_effort",
- FT_UINT8, BASE_DEC, VALS(cmd_rtx_effort), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_cmd_scan_type,
- {"Scan Type", "bthci_cmd.inq_scan_type",
- FT_UINT8, BASE_DEC, VALS(cmd_scan_types), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_cmd_inq_mode,
- {"Inquiry Mode", "bthci_cmd.inq_scan_type",
- FT_UINT8, BASE_DEC, VALS(cmd_inq_modes), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_cmd_fec_required,
- {"FEC Required", "bthci_cmd.fec_required",
- FT_UINT8, BASE_DEC, VALS(cmd_boolean), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_cmd_err_data_reporting,
- {"Erroneous Data Reporting", "bthci_cmd.err_data_reporting",
- FT_UINT8, BASE_DEC, VALS(cmd_en_disabled), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_cmd_tx_power,
- {"Power Level (dBm)", "bthci_cmd.power_level",
- FT_INT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_cmd_sco_packet_type_hv1,
- { "Packet Type HV1", "bthci_cmd.sco_packet_type_hv1",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0001,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_sco_packet_type_hv2,
- { "Packet Type HV2", "bthci_cmd.sco_packet_type_hv2",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0002,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_sco_packet_type_hv3,
- { "Packet Type HV3", "bthci_cmd.sco_packet_type_hv3",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0004,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_sco_packet_type_ev3,
- { "Packet Type EV3", "bthci_cmd.sco_packet_type_ev3",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0008,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_sco_packet_type_ev4,
- { "Packet Type EV4", "bthci_cmd.sco_packet_type_ev4",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0010,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_sco_packet_type_ev5,
- { "Packet Type EV5", "bthci_cmd.sco_packet_type_ev5",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0020,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_sco_packet_type_2ev3,
- { "Packet Type 2-EV3", "bthci_cmd.sco_packet_type_2ev3",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0040,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_sco_packet_type_3ev3,
- { "Packet Type 3-EV3", "bthci_cmd.sco_packet_type_3ev3",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0080,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_sco_packet_type_2ev5,
- { "Packet Type 2-EV5", "bthci_cmd.sco_packet_type_2ev5",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0100,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_sco_packet_type_3ev5,
- { "Packet Type 3-EV5", "bthci_cmd.sco_packet_type_3ev5",
- FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0200,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_min_remote_timeout,
- {"Min. Remote Timeout", "bthci_cmd.min_remote_timeout",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Min. Remote Timeout in baseband slots", HFILL}
- },
- { &hf_bthci_cmd_min_local_timeout,
- {"Min. Local Timeout", "bthci_cmd.min_local_timeout",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Min. Local Timeout in baseband slots", HFILL}
- },
- { &hf_bthci_cmd_flush_packet_type,
- {"Packet Type", "bthci_cmd.flush_packet_type",
- FT_UINT8, BASE_DEC, VALS(cmd_flush_pkt_type), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_cmd_afh_ch_assessment_mode,
- {"AFH Channel Assessment Mode", "bthci_cmd.afh_ch_assessment_mode",
- FT_UINT8, BASE_DEC, VALS(cmd_en_disabled), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_cmd_afh_ch_classification,
- { "Channel Classification", "bthci_cmd.afh_ch_classification",
- FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_cmd_which_clock,
- {"Which Clock", "bthci_cmd.which_clock",
- FT_UINT8, BASE_DEC, VALS(cmd_which_clock), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_cmd_io_capability,
- {"IO Capability", "bthci_cmd.io_capability",
- FT_UINT8, BASE_DEC, VALS(bthci_cmd_io_capability_vals), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_cmd_oob_data_present,
- {"OOB Data Present", "bthci_cmd.oob_data_present",
- FT_UINT8, BASE_DEC, VALS(bthci_cmd_oob_data_present_vals), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_cmd_auth_requirements,
- {"Authentication Requirements", "bthci_cmd.auth_requirements",
- FT_UINT8, BASE_DEC|BASE_EXT_STRING, &bthci_cmd_auth_req_vals_ext, 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_cmd_passkey,
- {"Passkey", "bthci_cmd.passkey",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_cmd_hash_c,
- {"Hash C", "bthci_cmd.hash_c",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_cmd_randomizer_r,
- {"Randomizer R", "bthci_cmd.randomizer_r",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_cmd_simple_pairing_mode,
- {"Simple Pairing Mode", "bthci_cmd.simple_pairing_mode",
- FT_UINT8, BASE_DEC, VALS(cmd_en_disabled), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_cmd_simple_pairing_debug_mode,
- {"Simple Pairing Debug Mode", "bthci_cmd.simple_pairing_debug_mode",
- FT_UINT8, BASE_DEC, VALS(cmd_en_disabled), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_cmd_notification_type,
- {"Notification Type", "bthci_cmd.notification_type",
- FT_UINT8, BASE_DEC, VALS(cmd_notification_types), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_cmd_eir_data,
- {"Data", "bthci_cmd.eir_data",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- "EIR Data", HFILL}
- },
- { &hf_bthci_cmd_eir_struct_length,
- { "Length", "bthci_cmd.eir_struct_length",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Structure Length", HFILL }
- },
- { &hf_bthci_cmd_eir_struct_type,
- { "Type", "bthci_cmd.eir_data_type",
- FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_eir_data_type_vals_ext, 0x0,
- "Data Type", HFILL }
- },
- { &hf_bthci_cmd_sc_uuid16,
- { "UUID", "bthci_cmd.service_class_uuid16",
- FT_UINT16, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_service_class_type_vals_ext, 0x0,
- "16-bit Service Class UUID", HFILL }
- },
- { &hf_bthci_cmd_sc_uuid32,
- { "UUID", "bthci_cmd.service_class_uuid32",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- "32-bit Service Class UUID", HFILL }
- },
- { &hf_bthci_cmd_sc_uuid128,
- { "UUID", "bthci_cmd.service_class_uuid128",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- "128-bit Service Class UUID", HFILL }
- }
- };
-
- /* Setup protocol subtree array */
- static gint *ett[] = {
- &ett_bthci_cmd,
- &ett_opcode,
- &ett_eir_subtree,
- &ett_eir_struct_subtree
- };
-
- /* Register the protocol name and description */
- proto_bthci_cmd = proto_register_protocol("Bluetooth HCI Command", "HCI_CMD", "bthci_cmd");
-
- register_dissector("bthci_cmd", dissect_bthci_cmd, proto_bthci_cmd);
-
- /* Required function calls to register the header fields and subtrees used */
- proto_register_field_array(proto_bthci_cmd, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ /* Setup list of header fields See Section 1.6.1 for details*/
+ static hf_register_info hf[] = {
+ { &hf_bthci_cmd_opcode,
+ { "Command Opcode","bthci_cmd.opcode", FT_UINT16, BASE_HEX|BASE_EXT_STRING,
+ &bthci_cmd_opcode_vals_ext, 0x0, "HCI Command Opcode", HFILL }
+ },
+ { &hf_bthci_cmd_ogf,
+ { "ogf", "bthci_cmd.ogf",
+ FT_UINT16, BASE_HEX|BASE_EXT_STRING, &bthci_ogf_vals_ext, 0xfc00,
+ "Opcode Group Field", HFILL }
+ },
+ { &hf_bthci_cmd_ocf,
+ { "ocf", "bthci_cmd.ocf",
+ FT_UINT16, BASE_HEX, NULL, 0x03ff,
+ "Opcode Command Field", HFILL }
+ },
+ { &hf_bthci_cmd_param_length,
+ { "Parameter Total Length", "bthci_cmd.param_length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_params,
+ { "Command Parameters", "bthci_cmd.params",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_lap,
+ { "LAP", "bthci_cmd.lap",
+ FT_UINT24, BASE_HEX, NULL, 0x0,
+ "LAP for the inquiry access code", HFILL }
+ },
+ { &hf_bthci_cmd_inq_length,
+ { "Inquiry Length", "bthci_cmd.inq_length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Inquiry Length (*1.28s)", HFILL }
+ },
+ { &hf_bthci_cmd_num_responses,
+ { "Num Responses", "bthci_cmd.num_responses",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Number of Responses", HFILL }
+ },
+ { &hf_bthci_cmd_encrypt_mode,
+ { "Encryption Mode", "bthci_cmd.encrypt_mode",
+ FT_UINT8, BASE_HEX, VALS(encrypt_mode_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_bd_addr,
+ { "BD_ADDR:", "bthci_cmd.bd_addr",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ "Bluetooth Device Address", HFILL}
+ },
+ { &hf_bthci_cmd_packet_type_2dh1,
+ { "Packet Type 2-DH1", "bthci_cmd.packet_type_2dh1",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0002,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_packet_type_3dh1,
+ { "Packet Type 3-DH1", "bthci_cmd.packet_type_3dh1",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0004,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_packet_type_dm1,
+ { "Packet Type DM1", "bthci_cmd.packet_type_dm1",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0008,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_packet_type_dh1,
+ { "Packet Type DH1", "bthci_cmd.packet_type_dh1",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0010,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_packet_type_2dh3,
+ { "Packet Type 2-DH3", "bthci_cmd.packet_type_2dh3",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0100,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_packet_type_3dh3,
+ { "Packet Type 3-DH3", "bthci_cmd.packet_type_3dh3",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0200,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_packet_type_dm3,
+ { "Packet Type DM3", "bthci_cmd.packet_type_dm3",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0400,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_packet_type_dh3,
+ { "Packet Type DH3", "bthci_cmd.packet_type_dh3",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0800,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_packet_type_2dh5,
+ { "Packet Type 2-DH5", "bthci_cmd.packet_type_2dh5",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x1000,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_packet_type_3dh5,
+ { "Packet Type 3-DH5", "bthci_cmd.packet_type_3dh5",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x2000,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_packet_type_dm5,
+ { "Packet Type DM5", "bthci_cmd.packet_type_dm5",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x4000,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_packet_type_dh5,
+ { "Packet Type DH5", "bthci_cmd.packet_type_dh5",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x8000,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_page_scan_mode,
+ { "Page Scan Mode", "bthci_cmd.page_scan_mode",
+ FT_UINT8, BASE_HEX, VALS(cmd_page_scan_modes), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_page_scan_repetition_mode,
+ { "Page Scan Repetition Mode", "bthci_cmd.page_scan_repetition_mode",
+ FT_UINT8, BASE_HEX, VALS(cmd_page_scan_repetition_modes), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_page_scan_period_mode,
+ { "Page Scan Period Mode", "bthci_cmd.page_scan_period_mode",
+ FT_UINT8, BASE_HEX, VALS(cmd_page_scan_period_modes), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_clock_offset,
+ { "Clock Offset", "bthci_cmd.clock_offset",
+ FT_UINT16, BASE_HEX, NULL, 0x7FFF,
+ "Bit 2-16 of the Clock Offset between CLKmaster-CLKslave", HFILL }
+ },
+ { &hf_bthci_cmd_clock_offset_valid,
+ { "Clock_Offset_Valid_Flag", "bthci_cmd.clock_offset_valid",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x8000,
+ "Indicates if clock offset is valid", HFILL }
+ },
+ { &hf_bthci_cmd_allow_role_switch,
+ { "Allow Role Switch", "bthci_cmd.allow_role_switch",
+ FT_UINT8, BASE_HEX, VALS(cmd_role_switch_modes), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_status,
+ { "Status", "bthci_cmd.status",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_status_vals_ext, 0x0,
+ NULL, HFILL }
+ },
+
+ { &hf_bthci_cmd_max_period_length,
+ { "Max Period Length", "bthci_cmd.max_period_length",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Maximum amount of time specified between consecutive inquiries.", HFILL }
+ },
+ { &hf_bthci_cmd_min_period_length,
+ { "Min Period Length", "bthci_cmd.min_period_length",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Minimum amount of time specified between consecutive inquiries.", HFILL }
+ },
+ { &hf_bthci_cmd_connection_handle,
+ { "Connection Handle", "bthci_cmd.connection_handle",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_reason,
+ { "Reason", "bthci_cmd.reason",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_status_vals_ext, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_num_link_keys,
+ { "Number of Link Keys", "bthci_cmd.num_link_keys",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_link_key,
+ { "Link Key", "bthci_cmd.link_key",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Link Key for the associated BD_ADDR", HFILL }
+ },
+ { &hf_bthci_cmd_packet_type_hv1,
+ { "Packet Type HV1", "bthci_cmd.packet_type_hv1",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0020,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_packet_type_hv2,
+ { "Packet Type HV2", "bthci_cmd.packet_type_hv2",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0040,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_packet_type_hv3,
+ { "Packet Type HV3", "bthci_cmd.packet_type_hv3",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0080,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_role,
+ { "Role", "bthci_cmd.role",
+ FT_UINT8, BASE_HEX, VALS(cmd_role_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_pin_code_length,
+ { "PIN Code Length", "bthci_cmd.pin_code_length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_pin_code,
+ { "PIN Code", "bthci_cmd.pin_code",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_pin_type,
+ { "PIN Type", "bthci_cmd.pin_type",
+ FT_UINT8, BASE_HEX, VALS(cmd_pin_types), 0x0,
+ "PIN Types", HFILL }
+ },
+ { &hf_bthci_cmd_encryption_enable,
+ { "Encryption Enable", "bthci_cmd.encryption_enable",
+ FT_UINT8, BASE_HEX, VALS(cmd_encryption_enable), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_key_flag,
+ { "Key Flag", "bthci_cmd.key_flag",
+ FT_UINT8, BASE_HEX, VALS(cmd_key_flag), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_max_interval_hold,
+ { "Hold Mode Max Interval", "bthci_cmd.hold_mode_max_int",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Maximal acceptable number of Baseband slots to wait in Hold Mode.", HFILL }
+ },
+ { &hf_bthci_cmd_min_interval_hold,
+ { "Hold Mode Min Interval", "bthci_cmd.hold_mode_min_int",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Minimum acceptable number of Baseband slots to wait in Hold Mode.", HFILL }
+ },
+ { &hf_bthci_cmd_max_interval_sniff,
+ { "Sniff Max Interval", "bthci_cmd.sniff_max_int",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Maximal acceptable number of Baseband slots between each sniff period.", HFILL }
+ },
+ { &hf_bthci_cmd_min_interval_sniff,
+ { "Sniff Min Interval", "bthci_cmd.sniff_min_int",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Minimum acceptable number of Baseband slots between each sniff period.", HFILL }
+ },
+ { &hf_bthci_cmd_sniff_attempt,
+ { "Sniff Attempt", "bthci_cmd.sniff_attempt",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Number of Baseband receive slots for sniff attempt.", HFILL }
+ },
+ { &hf_bthci_cmd_timeout,
+ { "Timeout", "bthci_cmd.timeout",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Number of Baseband slots for timeout.", HFILL }
+ },
+ { &hf_bthci_cmd_max_interval_beacon,
+ { "Beacon Max Interval", "bthci_cmd.beacon_max_int",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Maximal acceptable number of Baseband slots between consecutive beacons.", HFILL }
+ },
+ { &hf_bthci_cmd_min_interval_beacon,
+ { "Beacon Min Interval", "bthci_cmd.beacon_min_int",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Minimum acceptable number of Baseband slots between consecutive beacons.", HFILL }
+ },
+ { &hf_bthci_cmd_flags,
+ { "Flags", "bthci_cmd.flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_service_type,
+ { "Service Type", "bthci_cmd.service_type",
+ FT_UINT8, BASE_HEX, VALS(cmd_service_types), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_token_rate,
+ { "Available Token Rate", "bthci_cmd.token_rate",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Token Rate, in bytes per second", HFILL }
+ },
+ { &hf_bthci_cmd_token_bucket_size,
+ { "Available Token Bucket Size", "bthci_cmd.token_bucket_size",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Token Bucket Size in bytes", HFILL }
+ },
+ { &hf_bthci_cmd_peak_bandwidth,
+ { "Peak Bandwidth", "bthci_cmd.peak_bandwidth",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Peak Bandwidth, in bytes per second", HFILL }
+ },
+ { &hf_bthci_cmd_latency,
+ { "Latency", "bthci_cmd.latency",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Latency, in microseconds", HFILL }
+ },
+ { &hf_bthci_cmd_delay_variation,
+ { "Delay Variation", "bthci_cmd.delay_variation",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Delay Variation, in microseconds", HFILL }
+ },
+ { &hf_bthci_cmd_link_policy_setting_switch,
+ { "Enable Master Slave Switch", "bthci_cmd.link_policy_switch",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0001,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_link_policy_setting_hold,
+ { "Enable Hold Mode", "bthci_cmd.link_policy_hold",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0002,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_link_policy_setting_sniff,
+ { "Enable Sniff Mode", "bthci_cmd.link_policy_sniff",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0004,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_link_policy_setting_park,
+ { "Enable Park Mode", "bthci_cmd.link_policy_park",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0008,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_filter_type,
+ { "Filter Type", "bthci_cmd.filter_type",
+ FT_UINT8, BASE_HEX, VALS(cmd_filter_types), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_inquiry_result_filter_condition_type,
+ { "Filter Condition Type", "bthci_cmd.filter_condition_type",
+ FT_UINT8, BASE_HEX, VALS(cmd_inquiry_result_filter_condition_types), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_connection_setup_filter_condition_type,
+ { "Filter Condition Type", "bthci_cmd.filter_condition_type",
+ FT_UINT8, BASE_HEX, VALS(cmd_connection_setup_filter_condition_types), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_class_of_device,
+ { "Class of Device", "bthci_cmd.class_of_device",
+ FT_UINT24, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_class_of_device_mask,
+ { "Class of Device Mask", "bthci_cmd.class_of_device_mask",
+ FT_UINT24, BASE_HEX, NULL, 0x0,
+ "Bit Mask used to determine which bits of the Class of Device parameter are of interest.", HFILL }
+ },
+ { &hf_bthci_cmd_auto_acc_flag,
+ { "Auto Accept Flag", "bthci_cmd.auto_accept_flag",
+ FT_UINT8, BASE_HEX, VALS(cmd_auto_acc_flag_values), 0x0,
+ "Class of Device of Interest", HFILL }
+ },
+ { &hf_bthci_cmd_read_all_flag,
+ { "Read All Flag", "bthci_cmd.read_all_flag",
+ FT_UINT8, BASE_HEX, VALS(cmd_read_all_flag_values), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_delete_all_flag,
+ { "Delete All Flag", "bthci_cmd.delete_all_flag",
+ FT_UINT8, BASE_HEX, VALS(cmd_delete_all_flag_values), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_authentication_enable,
+ { "Authentication Enable", "bthci_cmd.auth_enable",
+ FT_UINT8, BASE_HEX, VALS(cmd_authentication_enable_values), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_input_coding,
+ { "Input Coding", "bthci_cmd.input_coding",
+ FT_UINT16, BASE_DEC, VALS(cmd_input_coding_values), 0x0300,
+ "Authentication Enable", HFILL }
+ },
+ { &hf_bthci_cmd_input_data_format,
+ { "Input Data Format", "bthci_cmd.input_data_format",
+ FT_UINT16, BASE_DEC, VALS(cmd_input_data_format_values), 0x00c0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_input_sample_size,
+ { "Input Sample Size", "bthci_cmd.input_sample_size",
+ FT_UINT16, BASE_DEC, VALS(cmd_input_sample_size_values), 0x0020,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_linear_pcm_bit_pos,
+ { "Linear PCM Bit Pos", "bthci_cmd.lin_pcm_bit_pos",
+ FT_UINT16, BASE_DEC, NULL, 0x001c,
+ "# bit pos. that MSB of sample is away from starting at MSB", HFILL }
+ },
+ { &hf_bthci_cmd_air_coding_format,
+ { "Air Coding Format", "bthci_cmd.air_coding_format",
+ FT_UINT16, BASE_DEC, VALS(cmd_air_coding_format_values), 0x0003,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_num_broadcast_retransmissions,
+ { "Num Broadcast Retran", "bthci_cmd.num_broad_retran",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Number of Broadcast Retransmissions", HFILL }
+ },
+ { &hf_bthci_cmd_hold_mode_act_page,
+ { "Suspend Page Scan", "bthci_cmd.hold_mode_page",
+ FT_UINT8, BASE_DEC, VALS(cmd_boolean), 0x1,
+ "Device can enter low power state", HFILL }
+ },
+ { &hf_bthci_cmd_hold_mode_act_inquiry,
+ { "Suspend Inquiry Scan", "bthci_cmd.hold_mode_inquiry",
+ FT_UINT8, BASE_DEC, VALS(cmd_boolean), 0x2,
+ "Device can enter low power state", HFILL }
+ },
+ { &hf_bthci_cmd_hold_mode_act_periodic,
+ { "Suspend Periodic Inquiries", "bthci_cmd.hold_mode_periodic",
+ FT_UINT8, BASE_DEC, VALS(cmd_boolean), 0x4,
+ "Device can enter low power state", HFILL }
+ },
+ { &hf_bthci_cmd_scan_enable,
+ { "Scan Enable", "bthci_cmd.scan_enable",
+ FT_UINT8, BASE_HEX, VALS(cmd_scan_enable_values), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_interval,
+ { "Interval", "bthci_cmd.interval",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_window,
+ { "Interval", "bthci_cmd.window",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Window", HFILL }
+ },
+ { &hf_bthci_cmd_device_name,
+ { "Device Name", "bthci_cmd.device_name",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Userfriendly descriptive name for the device", HFILL }
+ },
+ { &hf_bthci_cmd_num_curr_iac,
+ { "Number of Current IAC", "bthci_cmd.num_curr_iac",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Number of IACs which are currently in use", HFILL }
+ },
+ { &hf_bthci_cmd_iac_lap,
+ { "IAC LAP", "bthci_cmd.num_curr_iac",
+ FT_UINT24, BASE_HEX, NULL, 0x0,
+ "LAP(s)used to create IAC", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_00,
+ { "Inquiry Complete", "bthci_cmd.evt_mask_00",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x01,
+ "Inquiry Complete Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_01,
+ { "Inquiry Result", "bthci_cmd.evt_mask_01",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x02,
+ "Inquiry Result Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_02,
+ { "Connect Complete", "bthci_cmd.evt_mask_02",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x04,
+ "Connection Complete Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_03,
+ { "Connect Request", "bthci_cmd.evt_mask_03",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x08,
+ "Connect Request Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_04,
+ { "Disconnect Complete", "bthci_cmd.evt_mask_04",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x10,
+ "Disconnect Complete Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_05,
+ { "Auth Complete", "bthci_cmd.evt_mask_05",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x20,
+ "Auth Complete Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_06,
+ { "Remote Name Req Complete", "bthci_cmd.evt_mask_06",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x40,
+ "Remote Name Req Complete Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_07,
+ { "Encrypt Change", "bthci_cmd.evt_mask_07",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x80,
+ "Encrypt Change Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_10,
+ { "Change Connection Link Key Complete", "bthci_cmd.evt_mask_10",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x01,
+ "Change Connection Link Key Complete Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_11,
+ { "Master Link Key Complete", "bthci_cmd.evt_mask_11",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x02,
+ "Master Link Key Complete Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_12,
+ { "Read Remote Supported Features", "bthci_cmd.evt_mask_12",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x04,
+ "Read Remote Supported Features Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_13,
+ { "Read Remote Ver Info Complete", "bthci_cmd.evt_mask_13",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x08,
+ "Read Remote Ver Info Complete Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_14,
+ { "QoS Setup Complete", "bthci_cmd.evt_mask_14",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x10,
+ "QoS Setup Complete Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_17,
+ { "Hardware Error", "bthci_cmd.evt_mask_17",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x80,
+ "Hardware Error Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_20,
+ { "Flush Occurred", "bthci_cmd.evt_mask_20",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x01,
+ "Flush Occurred Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_21,
+ { "Role Change", "bthci_cmd.evt_mask_21",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x02,
+ "Role Change Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_23,
+ { "Mode Change", "bthci_cmd.evt_mask_23",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x08,
+ "Mode Change Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_24,
+ { "Return Link Keys", "bthci_cmd.evt_mask_24",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x10,
+ "Return Link Keys Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_25,
+ { "PIN Code Request", "bthci_cmd.evt_mask_25",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x20,
+ "PIN Code Request Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_26,
+ { "Link Key Request", "bthci_cmd.evt_mask_26",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x40,
+ "Link Key Request Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_27,
+ { "Link Key Notification", "bthci_cmd.evt_mask_27",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x80,
+ "Link Key Notification Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_30,
+ { "Loopback Command", "bthci_cmd.evt_mask_30",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x01,
+ "Loopback Command Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_31,
+ { "Data Buffer Overflow" , "bthci_cmd.evt_mask_31",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x02,
+ "Data Buffer Overflow Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_32,
+ { "Max Slots Change", "bthci_cmd.evt_mask_32",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x04,
+ "Max Slots Change Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_33,
+ { "Read Clock Offset Complete", "bthci_cmd.evt_mask_33",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x08,
+ "Read Clock Offset Complete Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_34,
+ { "Connection Packet Type Changed", "bthci_cmd.evt_mask_34",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x10,
+ "Connection Packet Type Changed Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_35,
+ { "QoS Violation", "bthci_cmd.evt_mask_35",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x20,
+ "QoS Violation Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_36,
+ { "Page Scan Mode Change", "bthci_cmd.evt_mask_36",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x40,
+ "Page Scan Mode Change Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_37,
+ { "Page Scan Repetition Mode Change", "bthci_cmd.evt_mask_37",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x80,
+ "Page Scan Repetition Mode Change Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_40,
+ { "Flow Specification Complete", "bthci_cmd.evt_mask_40",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x01,
+ "Flow Specification Complete Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_41,
+ { "Inquiry Result With RSSI", "bthci_cmd.evt_mask_41",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x02,
+ "Inquiry Result With RSSI Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_42,
+ { "Read Remote Ext. Features Complete", "bthci_cmd.evt_mask_42",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x04,
+ "Read Remote Ext. Features Complete Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_53,
+ { "Synchronous Connection Complete", "bthci_cmd.evt_mask_53",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x08,
+ "Synchronous Connection Complete Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_54,
+ { "Synchronous Connection Changed", "bthci_cmd.evt_mask_54",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x10,
+ "Synchronous Connection Changed Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_55,
+ { "Sniff Subrate", "bthci_cmd.evt_mask_55",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x20,
+ "Sniff Subrate Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_56,
+ { "Extended Inquiry Result", "bthci_cmd.evt_mask_56",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x40,
+ "Extended Inquiry Result Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_57,
+ { "Encryption Key Refresh Complete", "bthci_cmd.evt_mask_57",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x80,
+ "Encryption Key Refresh Complete Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_60,
+ { "IO Capability Request", "bthci_cmd.evt_mask_60",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x01,
+ "IO Capability Request Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_61,
+ { "IO Capability Response", "bthci_cmd.evt_mask_61",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x02,
+ "IO Capability Response Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_62,
+ { "User Confirmation Request", "bthci_cmd.evt_mask_62",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x04,
+ "User Confirmation Request Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_63,
+ { "User Passkey Request", "bthci_cmd.evt_mask_63",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x08,
+ "User Passkey Request Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_64,
+ { "Remote OOB Data Request", "bthci_cmd.evt_mask_64",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x10,
+ "Remote OOB Data Request Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_65,
+ { "Simple Pairing Complete", "bthci_cmd.evt_mask_65",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x20,
+ "Simple Pairing Complete Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_67,
+ { "Link Supervision Timeout Changed", "bthci_cmd.evt_mask_67",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x80,
+ "Link Supervision Timeout Changed Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_70,
+ { "Enhanced Flush Complete", "bthci_cmd.evt_mask_70",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x01,
+ "Enhanced Flush Complete Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_72,
+ { "User Passkey Notification", "bthci_cmd.evt_mask_72",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x04,
+ "User Passkey Notification Bit", HFILL }
+ },
+ { &hf_bthci_cmd_evt_mask_73,
+ { "Keypress Notification", "bthci_cmd.evt_mask_73",
+ FT_UINT8, BASE_HEX, VALS(cmd_boolean), 0x08,
+ "Keypress Notification Bit", HFILL }
+ },
+ { &hf_bthci_cmd_sco_flow_control,
+ { "SCO Flow Control","bthci_cmd.flow_control",
+ FT_UINT8, BASE_HEX, VALS(cmd_en_disabled), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_num_handles,
+ { "Number of Handles", "bthci_cmd.num_handles",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+
+ { &hf_bthci_cmd_num_compl_packets,
+ { "Number of Completed Packets", "bthci_cmd.num_compl_packets",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Number of Completed HCI Data Packets", HFILL }
+ },
+ { &hf_bthci_cmd_flow_contr_enable,
+ { "Flow Control Enable", "bthci_cmd.flow_contr_enable",
+ FT_UINT8, BASE_HEX, VALS(cmd_flow_contr_enable), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_host_data_packet_length_acl,
+ {"Host ACL Data Packet Length (bytes)", "bthci_cmd.max_data_length_acl",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Max Host ACL Data Packet length of data portion host is able to accept", HFILL }
+ },
+ { &hf_bthci_cmd_host_data_packet_length_sco,
+ {"Host SCO Data Packet Length (bytes)", "bthci_cmd.max_data_length_sco",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Max Host SCO Data Packet length of data portion host is able to accept", HFILL }
+ },
+ { &hf_bthci_cmd_host_total_num_acl_data_packets,
+ {"Host Total Num ACL Data Packets", "bthci_cmd.max_data_num_acl",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Total Number of HCI ACL Data Packets that can be stored in the data buffers of the Host", HFILL }
+ },
+ { &hf_bthci_cmd_host_total_num_sco_data_packets,
+ {"Host Total Num SCO Data Packets", "bthci_cmd.max_data_num_sco",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Total Number of HCI SCO Data Packets that can be stored in the data buffers of the Host", HFILL }
+ },
+ { &hf_bthci_cmd_power_level_type,
+ {"Type", "bthci_cmd.power_level_type",
+ FT_UINT8, BASE_HEX, VALS(cmd_power_level_types), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_cmd_loopback_mode,
+ {"Loopback Mode", "bthci_cmd.loopback_mode",
+ FT_UINT8, BASE_HEX, VALS(cmd_loopback_modes), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_cmd_page_number,
+ {"Page Number", "bthci_cmd.page_number",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_cmd_transmit_bandwidth,
+ {"Tx Bandwidth (bytes/s)", "bthci_cmd.tx_bandwidth",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Tx Bandwidth", HFILL}
+ },
+ { &hf_bthci_cmd_receive_bandwidth,
+ {"Rx Bandwidth (bytes/s)", "bthci_cmd.rx_bandwidth",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Rx Bandwidth", HFILL}
+ },
+ { &hf_bthci_cmd_max_latency_ms,
+ {"Max. Latency (ms)", "bthci_cmd.max_latency_ms",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_cmd_max_latency,
+ {"Max. Latency", "bthci_cmd.max_latency",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Max. Latency in baseband slots", HFILL}
+ },
+ { &hf_bthci_cmd_retransmission_effort,
+ {"Retransmission Effort", "bthci_cmd.retransmission_effort",
+ FT_UINT8, BASE_DEC, VALS(cmd_rtx_effort), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_cmd_scan_type,
+ {"Scan Type", "bthci_cmd.inq_scan_type",
+ FT_UINT8, BASE_DEC, VALS(cmd_scan_types), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_cmd_inq_mode,
+ {"Inquiry Mode", "bthci_cmd.inq_scan_type",
+ FT_UINT8, BASE_DEC, VALS(cmd_inq_modes), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_cmd_fec_required,
+ {"FEC Required", "bthci_cmd.fec_required",
+ FT_UINT8, BASE_DEC, VALS(cmd_boolean), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_cmd_err_data_reporting,
+ {"Erroneous Data Reporting", "bthci_cmd.err_data_reporting",
+ FT_UINT8, BASE_DEC, VALS(cmd_en_disabled), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_cmd_tx_power,
+ {"Power Level (dBm)", "bthci_cmd.power_level",
+ FT_INT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_cmd_sco_packet_type_hv1,
+ { "Packet Type HV1", "bthci_cmd.sco_packet_type_hv1",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0001,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_sco_packet_type_hv2,
+ { "Packet Type HV2", "bthci_cmd.sco_packet_type_hv2",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0002,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_sco_packet_type_hv3,
+ { "Packet Type HV3", "bthci_cmd.sco_packet_type_hv3",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0004,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_sco_packet_type_ev3,
+ { "Packet Type EV3", "bthci_cmd.sco_packet_type_ev3",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0008,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_sco_packet_type_ev4,
+ { "Packet Type EV4", "bthci_cmd.sco_packet_type_ev4",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0010,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_sco_packet_type_ev5,
+ { "Packet Type EV5", "bthci_cmd.sco_packet_type_ev5",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0020,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_sco_packet_type_2ev3,
+ { "Packet Type 2-EV3", "bthci_cmd.sco_packet_type_2ev3",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0040,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_sco_packet_type_3ev3,
+ { "Packet Type 3-EV3", "bthci_cmd.sco_packet_type_3ev3",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0080,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_sco_packet_type_2ev5,
+ { "Packet Type 2-EV5", "bthci_cmd.sco_packet_type_2ev5",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0100,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_sco_packet_type_3ev5,
+ { "Packet Type 3-EV5", "bthci_cmd.sco_packet_type_3ev5",
+ FT_UINT16, BASE_DEC, VALS(cmd_boolean), 0x0200,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_min_remote_timeout,
+ {"Min. Remote Timeout", "bthci_cmd.min_remote_timeout",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Min. Remote Timeout in baseband slots", HFILL}
+ },
+ { &hf_bthci_cmd_min_local_timeout,
+ {"Min. Local Timeout", "bthci_cmd.min_local_timeout",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Min. Local Timeout in baseband slots", HFILL}
+ },
+ { &hf_bthci_cmd_flush_packet_type,
+ {"Packet Type", "bthci_cmd.flush_packet_type",
+ FT_UINT8, BASE_DEC, VALS(cmd_flush_pkt_type), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_cmd_afh_ch_assessment_mode,
+ {"AFH Channel Assessment Mode", "bthci_cmd.afh_ch_assessment_mode",
+ FT_UINT8, BASE_DEC, VALS(cmd_en_disabled), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_cmd_afh_ch_classification,
+ { "Channel Classification", "bthci_cmd.afh_ch_classification",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_cmd_which_clock,
+ {"Which Clock", "bthci_cmd.which_clock",
+ FT_UINT8, BASE_DEC, VALS(cmd_which_clock), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_cmd_io_capability,
+ {"IO Capability", "bthci_cmd.io_capability",
+ FT_UINT8, BASE_DEC, VALS(bthci_cmd_io_capability_vals), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_cmd_oob_data_present,
+ {"OOB Data Present", "bthci_cmd.oob_data_present",
+ FT_UINT8, BASE_DEC, VALS(bthci_cmd_oob_data_present_vals), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_cmd_auth_requirements,
+ {"Authentication Requirements", "bthci_cmd.auth_requirements",
+ FT_UINT8, BASE_DEC|BASE_EXT_STRING, &bthci_cmd_auth_req_vals_ext, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_cmd_passkey,
+ {"Passkey", "bthci_cmd.passkey",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_cmd_hash_c,
+ {"Hash C", "bthci_cmd.hash_c",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_cmd_randomizer_r,
+ {"Randomizer R", "bthci_cmd.randomizer_r",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_cmd_simple_pairing_mode,
+ {"Simple Pairing Mode", "bthci_cmd.simple_pairing_mode",
+ FT_UINT8, BASE_DEC, VALS(cmd_en_disabled), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_cmd_simple_pairing_debug_mode,
+ {"Simple Pairing Debug Mode", "bthci_cmd.simple_pairing_debug_mode",
+ FT_UINT8, BASE_DEC, VALS(cmd_en_disabled), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_cmd_notification_type,
+ {"Notification Type", "bthci_cmd.notification_type",
+ FT_UINT8, BASE_DEC, VALS(cmd_notification_types), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_cmd_eir_data,
+ {"Data", "bthci_cmd.eir_data",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "EIR Data", HFILL}
+ },
+ { &hf_bthci_cmd_eir_struct_length,
+ { "Length", "bthci_cmd.eir_struct_length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Structure Length", HFILL }
+ },
+ { &hf_bthci_cmd_eir_struct_type,
+ { "Type", "bthci_cmd.eir_data_type",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_eir_data_type_vals_ext, 0x0,
+ "Data Type", HFILL }
+ },
+ { &hf_bthci_cmd_sc_uuid16,
+ { "UUID", "bthci_cmd.service_class_uuid16",
+ FT_UINT16, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_service_class_type_vals_ext, 0x0,
+ "16-bit Service Class UUID", HFILL }
+ },
+ { &hf_bthci_cmd_sc_uuid32,
+ { "UUID", "bthci_cmd.service_class_uuid32",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "32-bit Service Class UUID", HFILL }
+ },
+ { &hf_bthci_cmd_sc_uuid128,
+ { "UUID", "bthci_cmd.service_class_uuid128",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "128-bit Service Class UUID", HFILL }
+ }
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_bthci_cmd,
+ &ett_opcode,
+ &ett_eir_subtree,
+ &ett_eir_struct_subtree
+ };
+
+ /* Register the protocol name and description */
+ proto_bthci_cmd = proto_register_protocol("Bluetooth HCI Command", "HCI_CMD", "bthci_cmd");
+
+ register_dissector("bthci_cmd", dissect_bthci_cmd, proto_bthci_cmd);
+
+ /* Required function calls to register the header fields and subtrees used */
+ proto_register_field_array(proto_bthci_cmd, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
@@ -2925,9 +2925,9 @@ proto_register_bthci_cmd(void)
void
proto_reg_handoff_bthci_cmd(void)
{
- dissector_handle_t bthci_cmd_handle;
- bthci_cmd_handle = find_dissector("bthci_cmd");
- dissector_add_uint("hci_h4.type", HCI_H4_TYPE_CMD, bthci_cmd_handle);
- dissector_add_uint("hci_h1.type", BTHCI_CHANNEL_COMMAND, bthci_cmd_handle);
+ dissector_handle_t bthci_cmd_handle;
+ bthci_cmd_handle = find_dissector("bthci_cmd");
+ dissector_add_uint("hci_h4.type", HCI_H4_TYPE_CMD, bthci_cmd_handle);
+ dissector_add_uint("hci_h1.type", BTHCI_CHANNEL_COMMAND, bthci_cmd_handle);
}
diff --git a/epan/dissectors/packet-bthci_evt.c b/epan/dissectors/packet-bthci_evt.c
index 0a96bd2b96..2eadf1189b 100644
--- a/epan/dissectors/packet-bthci_evt.c
+++ b/epan/dissectors/packet-bthci_evt.c
@@ -247,2117 +247,2118 @@ static gint ett_eir_subtree = -1;
static gint ett_eir_struct_subtree = -1;
static const value_string evt_code_vals[] = {
- {0x01, "Inquiry Complete"},
- {0x02, "Inquiry Result"},
- {0x03, "Connect Complete"},
- {0x04, "Connect Request"},
- {0x05, "Disconnect Complete"},
- {0x06, "Auth Complete"},
- {0x07, "Remote Name Req Complete"},
- {0x08, "Encrypt Change"},
- {0x09, "Change Connection Link Key Complete"},
- {0x0a, "Master Link Key Complete"},
- {0x0b, "Read Remote Supported Features"},
- {0x0c, "Read Remote Ver Info Complete"},
- {0x0d, "QoS Setup Complete"},
- {0x0e, "Command Complete"},
- {0x0f, "Command Status"},
- {0x10, "Hardware Error"},
- {0x11, "Flush Occurred"},
- {0x12, "Role Change"},
- {0x13, "Number of Completed Packets"},
- {0x14, "Mode Change"},
- {0x15, "Return Link Keys"},
- {0x16, "PIN Code Request"},
- {0x17, "Link Key Request"},
- {0x18, "Link Key Notification"},
- {0x19, "Loopback Command"},
- {0x1a, "Data Buffer Overflow"},
- {0x1b, "Max Slots Change"},
- {0x1c, "Read Clock Offset Complete"},
- {0x1d, "Connection Packet Type Changed"},
- {0x1e, "QoS Violation"},
- {0x1f, "Page Scan Mode Change"},
- {0x20, "Page Scan Repetition Mode Change"},
- {0x21, "Flow Specification Complete"},
- {0x22, "Inquiry Result With RSSI"},
- {0x23, "Read Remote Extended Features Complete"},
- {0x2c, "Synchronous Connection Complete"},
- {0x2d, "Synchronous Connection Changed"},
- {0x2e, "Sniff Subrating"},
- {0x2f, "Extended Inquiry Result"},
- {0x30, "Encryption Key Refresh Complete"},
- {0x31, "IO Capability Request"},
- {0x32, "IO Capability Response"},
- {0x33, "User Confirmation Request"},
- {0x34, "User Passkey Request"},
- {0x35, "Remote OOB Data Request"},
- {0x36, "Simple Pairing Complete"},
- {0x38, "Link Supervision Timeout Changed"},
- {0x39, "Enhanced Flush Complete"},
- {0x3b, "User Passkey Notification"},
- {0x3c, "Keypress Notification"},
- {0x3d, "Remote Host Supported Features Notification"},
- {0xfe, "Bluetooth Logo Testing"},
- {0xff, "Vendor-Specific"},
- {0, NULL}
+ {0x01, "Inquiry Complete"},
+ {0x02, "Inquiry Result"},
+ {0x03, "Connect Complete"},
+ {0x04, "Connect Request"},
+ {0x05, "Disconnect Complete"},
+ {0x06, "Auth Complete"},
+ {0x07, "Remote Name Req Complete"},
+ {0x08, "Encrypt Change"},
+ {0x09, "Change Connection Link Key Complete"},
+ {0x0a, "Master Link Key Complete"},
+ {0x0b, "Read Remote Supported Features"},
+ {0x0c, "Read Remote Ver Info Complete"},
+ {0x0d, "QoS Setup Complete"},
+ {0x0e, "Command Complete"},
+ {0x0f, "Command Status"},
+ {0x10, "Hardware Error"},
+ {0x11, "Flush Occurred"},
+ {0x12, "Role Change"},
+ {0x13, "Number of Completed Packets"},
+ {0x14, "Mode Change"},
+ {0x15, "Return Link Keys"},
+ {0x16, "PIN Code Request"},
+ {0x17, "Link Key Request"},
+ {0x18, "Link Key Notification"},
+ {0x19, "Loopback Command"},
+ {0x1a, "Data Buffer Overflow"},
+ {0x1b, "Max Slots Change"},
+ {0x1c, "Read Clock Offset Complete"},
+ {0x1d, "Connection Packet Type Changed"},
+ {0x1e, "QoS Violation"},
+ {0x1f, "Page Scan Mode Change"},
+ {0x20, "Page Scan Repetition Mode Change"},
+ {0x21, "Flow Specification Complete"},
+ {0x22, "Inquiry Result With RSSI"},
+ {0x23, "Read Remote Extended Features Complete"},
+ {0x2c, "Synchronous Connection Complete"},
+ {0x2d, "Synchronous Connection Changed"},
+ {0x2e, "Sniff Subrating"},
+ {0x2f, "Extended Inquiry Result"},
+ {0x30, "Encryption Key Refresh Complete"},
+ {0x31, "IO Capability Request"},
+ {0x32, "IO Capability Response"},
+ {0x33, "User Confirmation Request"},
+ {0x34, "User Passkey Request"},
+ {0x35, "Remote OOB Data Request"},
+ {0x36, "Simple Pairing Complete"},
+ {0x38, "Link Supervision Timeout Changed"},
+ {0x39, "Enhanced Flush Complete"},
+ {0x3b, "User Passkey Notification"},
+ {0x3c, "Keypress Notification"},
+ {0x3d, "Remote Host Supported Features Notification"},
+ {0xfe, "Bluetooth Logo Testing"},
+ {0xff, "Vendor-Specific"},
+ {0, NULL}
};
static const value_string bthci_cmd_status_pending_vals[] = {
- {0x00, "Pending"},
- {0, NULL }
+ {0x00, "Pending"},
+ {0, NULL }
};
static const value_string evt_link_types[] = {
- {0x00, "SCO connection (Voice Channels)"},
- {0x01, "ACL connection (Data Channels)"},
- {0x02, "eSCO connection (Voice Channels)"},
- {0, NULL }
+ {0x00, "SCO connection (Voice Channels)"},
+ {0x01, "ACL connection (Data Channels)"},
+ {0x02, "eSCO connection (Voice Channels)"},
+ {0, NULL }
};
static const value_string evt_sync_link_types[] = {
- {0x00, "SCO connection"},
- {0x02, "eSCO connection"},
- {0, NULL }
+ {0x00, "SCO connection"},
+ {0x02, "eSCO connection"},
+ {0, NULL }
};
static const value_string evt_encryption_modes[] = {
- {0x00, "Encryption Disabled"},
- {0x01, "Encryption only for point-to-point packets"},
- {0x02, "Encryption for both point-to-point and broadcast packets"},
- {0, NULL }
+ {0x00, "Encryption Disabled"},
+ {0x01, "Encryption only for point-to-point packets"},
+ {0x02, "Encryption for both point-to-point and broadcast packets"},
+ {0, NULL }
};
static const value_string evt_encryption_enable[] = {
- {0x00, "Link Level Encryption is OFF"},
- {0x01, "Link Level Encryption is ON"},
- {0, NULL }
+ {0x00, "Link Level Encryption is OFF"},
+ {0x01, "Link Level Encryption is ON"},
+ {0, NULL }
};
static const value_string evt_key_flag[] = {
- {0x00, "Using Semi-permanent Link Key"},
- {0x01, "Using Temporary Link Key"},
- {0, NULL }
+ {0x00, "Using Semi-permanent Link Key"},
+ {0x01, "Using Temporary Link Key"},
+ {0, NULL }
};
/* Taken from https://www.bluetooth.org/Technical/AssignedNumbers/link_manager.htm */
static const value_string evt_lmp_vers_nr[] = {
- {0x00, "1.0b"},
- {0x01, "1.1"},
- {0x02, "1.2"},
- {0x03, "2.0 + EDR"},
- {0x04, "2.1 + EDR"},
- {0x05, "3.0 + HS"},
- {0x06, "4.0"},
- {0, NULL }
+ {0x00, "1.0b"},
+ {0x01, "1.1"},
+ {0x02, "1.2"},
+ {0x03, "2.0 + EDR"},
+ {0x04, "2.1 + EDR"},
+ {0x05, "3.0 + HS"},
+ {0x06, "4.0"},
+ {0, NULL }
};
/* Taken from https://www.bluetooth.org/Technical/AssignedNumbers/hci.htm
* (requires a login/password)
*/
static const value_string evt_hci_vers_nr[] = {
- {0x00, "1.0b"},
- {0x01, "1.1"},
- {0x02, "1.2"},
- {0x03, "2.0 + EDR"},
- {0x04, "2.1 + EDR"},
- {0x05, "3.0 + HS"},
- {0x06, "4.0"},
- {0, NULL }
+ {0x00, "1.0b"},
+ {0x01, "1.1"},
+ {0x02, "1.2"},
+ {0x03, "2.0 + EDR"},
+ {0x04, "2.1 + EDR"},
+ {0x05, "3.0 + HS"},
+ {0x06, "4.0"},
+ {0, NULL }
};
/* Taken from https://www.bluetooth.org/technical/assignednumbers/identifiers.htm */
static const value_string evt_comp_id[] = {
- {0x0000, "Ericsson Technology Licensing"},
- {0x0001, "Nokia Mobile Phones"},
- {0x0002, "Intel Corp."},
- {0x0003, "IBM Corp."},
- {0x0004, "Toshiba Corp."},
- {0x0005, "3Com"},
- {0x0006, "Microsoft"},
- {0x0007, "Lucent"},
- {0x0008, "Motorola"},
- {0x0009, "Infineon Technologies AG"},
- {0x000A, "Cambridge Silicon Radio"},
- {0x000B, "Silicon Wave"},
- {0x000C, "Digianswer A/S"},
- {0x000D, "Texas Instruments Inc."},
- {0x000E, "Ceva, Inc. (formerly Parthus Technologies, Inc.)"},
- {0x000F, "Broadcom Corporation"},
- {0x0010, "Mitel Semiconductor"},
- {0x0011, "Widcomm, Inc."},
- {0x0012, "Zeevo, Inc."},
- {0x0013, "Atmel Corporation"},
- {0x0014, "Mitsubishi Electric Corporation"},
- {0x0015, "RTX Telecom A/S"},
- {0x0016, "KC Technology Inc."},
- {0x0017, "Newlogic"},
- {0x0018, "Transilica, Inc."},
- {0x0019, "Rohde & Schwarz GmbH & Co. KG"},
- {0x001A, "TTPCom Limited"},
- {0x001B, "Signia Technologies, Inc."},
- {0x001C, "Conexant Systems Inc."},
- {0x001D, "Qualcomm"},
- {0x001E, "Inventel"},
- {0x001F, "AVM Berlin"},
- {0x0020, "BandSpeed, Inc."},
- {0x0021, "Mansella Ltd"},
- {0x0022, "NEC Corporation"},
- {0x0023, "WavePlus Technology Co., Ltd."},
- {0x0024, "Alcatel"},
- {0x0025, "Philips Semiconductors"},
- {0x0026, "C Technologies"},
- {0x0027, "Open Interface"},
- {0x0028, "R F Micro Devices"},
- {0x0029, "Hitachi Ltd"},
- {0x002A, "Symbol Technologies, Inc."},
- {0x002B, "Tenovis"},
- {0x002C, "Macronix International Co. Ltd."},
- {0x002D, "GCT Semiconductor"},
- {0x002E, "Norwood Systems"},
- {0x002F, "MewTel Technology Inc."},
- {0x0030, "ST Microelectronics"},
- {0x0031, "Synopsys"},
- {0x0032, "Red-M (Communications) Ltd"},
- {0x0033, "Commil Ltd"},
- {0x0034, "Computer Access Technology Corporation (CATC)"},
- {0x0035, "Eclipse (HQ Espana) S.L."},
- {0x0036, "Renesas Technology Corp."},
- {0x0037, "Mobilian Corporation"},
- {0x0038, "Terax"},
- {0x0039, "Integrated System Solution Corp."},
- {0x003A, "Matsushita Electric Industrial Co., Ltd."},
- {0x003B, "Gennum Corporation"},
- {0x003C, "Research In Motion"},
- {0x003D, "IPextreme, Inc."},
- {0x003E, "Systems and Chips, Inc"},
- {0x003F, "Bluetooth SIG, Inc"},
- {0x0040, "Seiko Epson Corporation"},
- {0x0041, "Integrated Silicon Solution Taiwan, Inc."},
- {0x0042, "CONWISE Technology Corporation Ltd"},
- {0x0043, "PARROT SA"},
- {0x0044, "Socket Mobile"},
- {0x0045, "Atheros Communications, Inc."},
- {0x0046, "MediaTek, Inc."},
- {0x0047, "Bluegiga"},
- {0x0048, "Marvell Technology Group Ltd."},
- {0x0049, "3DSP Corporation"},
- {0x004A, "Accel Semiconductor Ltd."},
- {0x004B, "Continental Automotive Systems"},
- {0x004C, "Apple, Inc."},
- {0x004D, "Staccato Communications, Inc."},
- {0x004E, "Avago Technologies"},
- {0x004F, "APT Licensing Ltd."},
- {0x0050, "SiRF Technology, Inc."},
- {0x0051, "Tzero Technologies, Inc."},
- {0x0052, "J&M Corporation"},
- {0x0053, "Free2move AB"},
- {0x0054, "3DiJoy Corporation"},
- {0x0055, "Plantronics, Inc."},
- {0x0056, "Sony Ericsson Mobile Communications"},
- {0x0057, "Harman International Industries, Inc."},
- {0x0058, "Vizio, Inc."},
- {0x0059, "Nordic Semiconductor ASA"},
- {0x005A, "EM Microelectronic-Marin SA"},
- {0x005B, "Ralink Technology Corporation"},
- {0x005C, "Belkin International, Inc."},
- {0x005D, "Realtek Semiconductor Corporation"},
- {0x005E, "Stonestreet One, LLC"},
- {0x005F, "Wicentric, Inc."},
- {0x0060, "RivieraWaves S.A.S"},
- {0x0061, "RDA Microelectronics"},
- {0x0062, "Gibson Guitars"},
- {0x0063, "MiCommand Inc."},
- {0x0064, "Band XI International, LLC"},
- {0x0065, "Hewlett-Packard Company"},
- {0x0066, "9Solutions Oy"},
- {0x0067, "GN Netcom A/S"},
- {0x0068, "General Motors"},
- {0x0069, "A&D Engineering, Inc."},
- {0x006A, "MindTree Ltd."},
- {0x006B, "Polar Electro OY"},
- {0x006C, "Beautiful Enterprise Co., Ltd."},
- {0x006D, "BriarTek, Inc."},
- {0x006E, "Summit Data Communications, Inc."},
- {0x006F, "Sound ID"},
- {0x0070, "Monster, LLC"},
- {0x0071, "connectBlue AB"},
- {0x0072, "ShangHai Super Smart Electronics Co. Ltd."},
- {0x0073, "Group Sense Ltd."},
- {0x0074, "Zomm, LLC"},
- {0x0075, "Samsung Electronics Co. Ltd."},
- {0x0076, "Creative Technology Ltd."},
- {0x0077, "Laird Technologies"},
- {0x0078, "Nike, Inc."},
- {0x0079, "lesswire AG"},
- {0x007A, "MStar Semiconductor, Inc."},
- {0x007B, "Hanlynn Technologies"},
- {0x007C, "A & R Cambridge"},
- {0x007D, "Seers Technology Co. Ltd."},
- {0xFFFF, "For use in internal and interoperability tests."},
- {0, NULL }
+ {0x0000, "Ericsson Technology Licensing"},
+ {0x0001, "Nokia Mobile Phones"},
+ {0x0002, "Intel Corp."},
+ {0x0003, "IBM Corp."},
+ {0x0004, "Toshiba Corp."},
+ {0x0005, "3Com"},
+ {0x0006, "Microsoft"},
+ {0x0007, "Lucent"},
+ {0x0008, "Motorola"},
+ {0x0009, "Infineon Technologies AG"},
+ {0x000A, "Cambridge Silicon Radio"},
+ {0x000B, "Silicon Wave"},
+ {0x000C, "Digianswer A/S"},
+ {0x000D, "Texas Instruments Inc."},
+ {0x000E, "Ceva, Inc. (formerly Parthus Technologies, Inc.)"},
+ {0x000F, "Broadcom Corporation"},
+ {0x0010, "Mitel Semiconductor"},
+ {0x0011, "Widcomm, Inc."},
+ {0x0012, "Zeevo, Inc."},
+ {0x0013, "Atmel Corporation"},
+ {0x0014, "Mitsubishi Electric Corporation"},
+ {0x0015, "RTX Telecom A/S"},
+ {0x0016, "KC Technology Inc."},
+ {0x0017, "Newlogic"},
+ {0x0018, "Transilica, Inc."},
+ {0x0019, "Rohde & Schwarz GmbH & Co. KG"},
+ {0x001A, "TTPCom Limited"},
+ {0x001B, "Signia Technologies, Inc."},
+ {0x001C, "Conexant Systems Inc."},
+ {0x001D, "Qualcomm"},
+ {0x001E, "Inventel"},
+ {0x001F, "AVM Berlin"},
+ {0x0020, "BandSpeed, Inc."},
+ {0x0021, "Mansella Ltd"},
+ {0x0022, "NEC Corporation"},
+ {0x0023, "WavePlus Technology Co., Ltd."},
+ {0x0024, "Alcatel"},
+ {0x0025, "Philips Semiconductors"},
+ {0x0026, "C Technologies"},
+ {0x0027, "Open Interface"},
+ {0x0028, "R F Micro Devices"},
+ {0x0029, "Hitachi Ltd"},
+ {0x002A, "Symbol Technologies, Inc."},
+ {0x002B, "Tenovis"},
+ {0x002C, "Macronix International Co. Ltd."},
+ {0x002D, "GCT Semiconductor"},
+ {0x002E, "Norwood Systems"},
+ {0x002F, "MewTel Technology Inc."},
+ {0x0030, "ST Microelectronics"},
+ {0x0031, "Synopsys"},
+ {0x0032, "Red-M (Communications) Ltd"},
+ {0x0033, "Commil Ltd"},
+ {0x0034, "Computer Access Technology Corporation (CATC)"},
+ {0x0035, "Eclipse (HQ Espana) S.L."},
+ {0x0036, "Renesas Technology Corp."},
+ {0x0037, "Mobilian Corporation"},
+ {0x0038, "Terax"},
+ {0x0039, "Integrated System Solution Corp."},
+ {0x003A, "Matsushita Electric Industrial Co., Ltd."},
+ {0x003B, "Gennum Corporation"},
+ {0x003C, "Research In Motion"},
+ {0x003D, "IPextreme, Inc."},
+ {0x003E, "Systems and Chips, Inc"},
+ {0x003F, "Bluetooth SIG, Inc"},
+ {0x0040, "Seiko Epson Corporation"},
+ {0x0041, "Integrated Silicon Solution Taiwan, Inc."},
+ {0x0042, "CONWISE Technology Corporation Ltd"},
+ {0x0043, "PARROT SA"},
+ {0x0044, "Socket Mobile"},
+ {0x0045, "Atheros Communications, Inc."},
+ {0x0046, "MediaTek, Inc."},
+ {0x0047, "Bluegiga"},
+ {0x0048, "Marvell Technology Group Ltd."},
+ {0x0049, "3DSP Corporation"},
+ {0x004A, "Accel Semiconductor Ltd."},
+ {0x004B, "Continental Automotive Systems"},
+ {0x004C, "Apple, Inc."},
+ {0x004D, "Staccato Communications, Inc."},
+ {0x004E, "Avago Technologies"},
+ {0x004F, "APT Licensing Ltd."},
+ {0x0050, "SiRF Technology, Inc."},
+ {0x0051, "Tzero Technologies, Inc."},
+ {0x0052, "J&M Corporation"},
+ {0x0053, "Free2move AB"},
+ {0x0054, "3DiJoy Corporation"},
+ {0x0055, "Plantronics, Inc."},
+ {0x0056, "Sony Ericsson Mobile Communications"},
+ {0x0057, "Harman International Industries, Inc."},
+ {0x0058, "Vizio, Inc."},
+ {0x0059, "Nordic Semiconductor ASA"},
+ {0x005A, "EM Microelectronic-Marin SA"},
+ {0x005B, "Ralink Technology Corporation"},
+ {0x005C, "Belkin International, Inc."},
+ {0x005D, "Realtek Semiconductor Corporation"},
+ {0x005E, "Stonestreet One, LLC"},
+ {0x005F, "Wicentric, Inc."},
+ {0x0060, "RivieraWaves S.A.S"},
+ {0x0061, "RDA Microelectronics"},
+ {0x0062, "Gibson Guitars"},
+ {0x0063, "MiCommand Inc."},
+ {0x0064, "Band XI International, LLC"},
+ {0x0065, "Hewlett-Packard Company"},
+ {0x0066, "9Solutions Oy"},
+ {0x0067, "GN Netcom A/S"},
+ {0x0068, "General Motors"},
+ {0x0069, "A&D Engineering, Inc."},
+ {0x006A, "MindTree Ltd."},
+ {0x006B, "Polar Electro OY"},
+ {0x006C, "Beautiful Enterprise Co., Ltd."},
+ {0x006D, "BriarTek, Inc."},
+ {0x006E, "Summit Data Communications, Inc."},
+ {0x006F, "Sound ID"},
+ {0x0070, "Monster, LLC"},
+ {0x0071, "connectBlue AB"},
+ {0x0072, "ShangHai Super Smart Electronics Co. Ltd."},
+ {0x0073, "Group Sense Ltd."},
+ {0x0074, "Zomm, LLC"},
+ {0x0075, "Samsung Electronics Co. Ltd."},
+ {0x0076, "Creative Technology Ltd."},
+ {0x0077, "Laird Technologies"},
+ {0x0078, "Nike, Inc."},
+ {0x0079, "lesswire AG"},
+ {0x007A, "MStar Semiconductor, Inc."},
+ {0x007B, "Hanlynn Technologies"},
+ {0x007C, "A & R Cambridge"},
+ {0x007D, "Seers Technology Co. Ltd."},
+ {0xFFFF, "For use in internal and interoperability tests."},
+ {0, NULL }
};
static const value_string evt_service_types[] = {
- {0x00, "No Traffic Available"},
- {0x01, "Best Effort Available"},
- {0x02, "Guaranteed Available"},
- {0, NULL }
+ {0x00, "No Traffic Available"},
+ {0x01, "Best Effort Available"},
+ {0x02, "Guaranteed Available"},
+ {0, NULL }
};
static const value_string evt_role_vals[] = {
- {0x00, "Currently the Master for specified BD_ADDR"},
- {0x01, "Currently the Slave for specified BD_ADDR"},
- {0, NULL }
+ {0x00, "Currently the Master for specified BD_ADDR"},
+ {0x01, "Currently the Slave for specified BD_ADDR"},
+ {0, NULL }
};
static const value_string evt_role_vals_handle[] = {
- {0x00, "Currently the Master for this connection handle"},
- {0x01, "Currently the Slave for this connection handle"},
- {0, NULL }
+ {0x00, "Currently the Master for this connection handle"},
+ {0x01, "Currently the Slave for this connection handle"},
+ {0, NULL }
};
static const value_string evt_modes[] = {
- {0x00, "Active Mode"},
- {0x01, "Hold Mode"},
- {0x02, "Sniff Mode"},
- {0x03, "Park Mode"},
- {0, NULL }
+ {0x00, "Active Mode"},
+ {0x01, "Hold Mode"},
+ {0x02, "Sniff Mode"},
+ {0x03, "Park Mode"},
+ {0, NULL }
};
static const value_string evt_key_types[] = {
- {0x00, "Combination Key"},
- {0x01, "Local Unit Key"},
- {0x02, "Remote Unit Key"},
- {0x03, "Debug Combination Key"},
- {0x04, "Unauthenticated Combination Key"},
- {0x05, "Authenticated Combination Key"},
- {0x06, "Changed Combination Key"},
- {0, NULL }
+ {0x00, "Combination Key"},
+ {0x01, "Local Unit Key"},
+ {0x02, "Remote Unit Key"},
+ {0x03, "Debug Combination Key"},
+ {0x04, "Unauthenticated Combination Key"},
+ {0x05, "Authenticated Combination Key"},
+ {0x06, "Changed Combination Key"},
+ {0, NULL }
};
static const value_string evt_page_scan_modes[] = {
- {0x00, "Mandatory Page Scan Mode"},
- {0x01, "Optional Page Scan Mode I"},
- {0x02, "Optional Page Scan Mode II"},
- {0x03, "Optional Page Scan Mode III"},
- {0, NULL }
+ {0x00, "Mandatory Page Scan Mode"},
+ {0x01, "Optional Page Scan Mode I"},
+ {0x02, "Optional Page Scan Mode II"},
+ {0x03, "Optional Page Scan Mode III"},
+ {0, NULL }
};
static const value_string evt_page_scan_repetition_modes[] = {
- {0x00, "R0"},
- {0x01, "R1"},
- {0x02, "R2"},
- {0, NULL }
+ {0x00, "R0"},
+ {0x01, "R1"},
+ {0x02, "R2"},
+ {0, NULL }
};
static const value_string evt_page_scan_period_modes[] = {
- {0x00, "P0"},
- {0x01, "P1"},
- {0x02, "P2"},
- {0, NULL }
+ {0x00, "P0"},
+ {0x01, "P1"},
+ {0x02, "P2"},
+ {0, NULL }
};
static const value_string evt_scan_types[] = {
- {0x00, "Standard Scan" },
- {0x01, "Interlaced Scan" },
- {0, NULL }
+ {0x00, "Standard Scan" },
+ {0x01, "Interlaced Scan" },
+ {0, NULL }
};
static const value_string evt_inq_modes[] = {
- {0x00, "Standard Results" },
- {0x01, "Results With RSSI" },
- {0x02, "Results With RSSI or Extended Results" },
- {0, NULL }
+ {0x00, "Standard Results" },
+ {0x01, "Results With RSSI" },
+ {0x02, "Results With RSSI or Extended Results" },
+ {0, NULL }
};
static const value_string evt_power_level_types[] = {
- {0x00, "Read Current Transmission Power Level" },
- {0x01, "Read Maximum Transmission Power Level" },
- {0, NULL }
+ {0x00, "Read Current Transmission Power Level" },
+ {0x01, "Read Maximum Transmission Power Level" },
+ {0, NULL }
};
static const value_string evt_boolean[] = {
- {0x0 , "False" },
- {0x1 , "True" },
- {0, NULL }
+ {0x0 , "False" },
+ {0x1 , "True" },
+ {0, NULL }
};
static const value_string evt_pin_types[] = {
- {0x00, "Variable PIN" },
- {0x01, "Fixed PIN" },
- {0, NULL }
+ {0x00, "Variable PIN" },
+ {0x01, "Fixed PIN" },
+ {0, NULL }
};
static const value_string evt_scan_enable_values[] = {
- {0x00, "No Scans enabled" },
- {0x01, "Inquiry Scan enabled/Page Scan disable" },
- {0x02, "Inquiry Scan disabled/Page Scan enabled" },
- {0x03, "Inquiry Scan enabled/Page Scan enabled" },
- {0, NULL }
+ {0x00, "No Scans enabled" },
+ {0x01, "Inquiry Scan enabled/Page Scan disable" },
+ {0x02, "Inquiry Scan disabled/Page Scan enabled" },
+ {0x03, "Inquiry Scan enabled/Page Scan enabled" },
+ {0, NULL }
};
static const value_string evt_auth_enable_values[] = {
- {0x00, "Disabled" },
- {0x01, "Enabled for all connections "},
- {0, NULL }
+ {0x00, "Disabled" },
+ {0x01, "Enabled for all connections "},
+ {0, NULL }
};
static const value_string evt_enable_values[] = {
- {0x00, "Disabled" },
- {0x01, "Enabled"},
- {0, NULL }
+ {0x00, "Disabled" },
+ {0x01, "Enabled"},
+ {0, NULL }
};
static const value_string evt_input_coding_values[] = {
- {0x0, "Linear" },
- {0x1, "\xb5-law" },
- {0x2, "A-law" },
- {0, NULL }
+ {0x0, "Linear" },
+ {0x1, "\xb5-law" },
+ {0x2, "A-law" },
+ {0, NULL }
};
static const value_string evt_input_data_format_values[] = {
- {0x0, "1's complement" },
- {0x1, "2's complement" },
- {0x2, "Sign-Magnitude" },
- {0, NULL }
+ {0x0, "1's complement" },
+ {0x1, "2's complement" },
+ {0x2, "Sign-Magnitude" },
+ {0, NULL }
};
static const value_string evt_input_sample_size_values[] = {
- {0x0, "8 bit (only for Linear PCM)" },
- {0x1, "16 bit (only for Linear PCM)" },
- {0, NULL }
+ {0x0, "8 bit (only for Linear PCM)" },
+ {0x1, "16 bit (only for Linear PCM)" },
+ {0, NULL }
};
static const value_string evt_loopback_modes[] = {
- {0x00, "No Loopback mode enabled" },
- {0x01, "Enable Local Loopback" },
- {0x02, "Enable Remote Loopback" },
- {0, NULL }
+ {0x00, "No Loopback mode enabled" },
+ {0x01, "Enable Local Loopback" },
+ {0x02, "Enable Remote Loopback" },
+ {0, NULL }
};
static const value_string evt_country_code_values[] = {
- {0x0, "North America & Europe (except France) and Japan" },
- {0x1, "France" },
- {0, NULL }
+ {0x0, "North America & Europe (except France) and Japan" },
+ {0x1, "France" },
+ {0, NULL }
};
static const value_string evt_air_mode_values[] = {
- {0x0, "\xb5-law" },
- {0x1, "A-law" },
- {0x2, "CVSD" },
- {0x3, "Transparent" },
- {0, NULL }
+ {0x0, "\xb5-law" },
+ {0x1, "A-law" },
+ {0x2, "CVSD" },
+ {0x3, "Transparent" },
+ {0, NULL }
};
static const value_string evt_flow_direction_values[] = {
- {0x0, "Outgoing Traffic" },
- {0x1, "Incoming Traffic" },
- {0, NULL }
+ {0x0, "Outgoing Traffic" },
+ {0x1, "Incoming Traffic" },
+ {0, NULL }
};
static const value_string evt_notification_type_vals[] = {
- {0x0, "Passkey Entry Started" },
- {0x1, "Passkey Digit Entered" },
- {0x2, "Passkey Digit Erased" },
- {0x3, "Passkey Cleared" },
- {0x4, "Passkey Entry Completed" },
- {0, NULL }
+ {0x0, "Passkey Entry Started" },
+ {0x1, "Passkey Digit Entered" },
+ {0x2, "Passkey Digit Erased" },
+ {0x3, "Passkey Cleared" },
+ {0x4, "Passkey Entry Completed" },
+ {0, NULL }
};
static int
dissect_bthci_evt_bd_addr(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- guint8 i, bd_addr[6];
- proto_item *handle_item;
+ guint8 i, bd_addr[6];
+ proto_item *handle_item;
- for(i=6; i; i--)
- bd_addr[6-i] = tvb_get_guint8(tvb, offset+i-1);
+ for(i=6; i; i--)
+ bd_addr[6-i] = tvb_get_guint8(tvb, offset+i-1);
- handle_item = proto_tree_add_item(tree, hf_bthci_evt_bd_addr, tvb, offset, 6, ENC_NA);
- proto_item_append_text(handle_item, "%02x%02x:%02x:%02x%02x%02x (%s)",
- bd_addr[0], bd_addr[1], bd_addr[2], bd_addr[3], bd_addr[4], bd_addr[5],
- get_ether_name(bd_addr));
+ handle_item = proto_tree_add_item(tree, hf_bthci_evt_bd_addr, tvb, offset, 6, ENC_NA);
+ proto_item_append_text(handle_item, "%02x%02x:%02x:%02x%02x%02x (%s)",
+ bd_addr[0], bd_addr[1], bd_addr[2], bd_addr[3], bd_addr[4], bd_addr[5],
+ get_ether_name(bd_addr));
- offset+=6;
+ offset+=6;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_cod(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- guint8 cod1, cod2;
- proto_item *item;
-
- item = proto_tree_add_item(tree, hf_bthci_evt_class_of_device, tvb, offset, 3, ENC_LITTLE_ENDIAN);
-
- cod1 = tvb_get_guint8(tvb, offset+1);
- cod2 = tvb_get_guint8(tvb, offset+2);
-
- if( (cod2 != 0) || (cod1 & 0x20) )
- {
- char buf[128];
-
- buf[0] = 0;
-
- proto_item_append_text(item, " (%s - services:", val_to_str_ext_const(cod1 & 0x1f, &bthci_cmd_major_dev_class_vals_ext, "???"));
- if (cod2 & 0x80) g_strlcat(buf, " Information,", sizeof(buf));
- if (cod2 & 0x40) g_strlcat(buf, " Telephony,", sizeof(buf));
- if (cod2 & 0x20) g_strlcat(buf, " Audio,", sizeof(buf));
- if (cod2 & 0x10) g_strlcat(buf, " Object transfer,", sizeof(buf));
- if (cod2 & 0x08) g_strlcat(buf, " Capturing,", sizeof(buf));
- if (cod2 & 0x04) g_strlcat(buf, " Rendering,", sizeof(buf));
- if (cod2 & 0x02) g_strlcat(buf, " Networking,", sizeof(buf));
- if (cod2 & 0x01) g_strlcat(buf, " Positioning,", sizeof(buf));
- if (cod1 & 0x20) g_strlcat(buf, " Limited discoverable mode,", sizeof(buf));
-
- buf[strlen(buf)-1] = 0; /* skip last comma */
-
- g_strlcat(buf, ")", sizeof(buf));
- proto_item_append_text(item, "%s", buf);
- }
- else
- {
- proto_item_append_text(item, " (%s - no major services)", val_to_str_ext_const(cod1 & 0x1f, &bthci_cmd_major_dev_class_vals_ext, "???"));
- }
-
- return offset+3;
+ guint8 cod1, cod2;
+ proto_item *item;
+
+ item = proto_tree_add_item(tree, hf_bthci_evt_class_of_device, tvb, offset, 3, ENC_LITTLE_ENDIAN);
+
+ cod1 = tvb_get_guint8(tvb, offset+1);
+ cod2 = tvb_get_guint8(tvb, offset+2);
+
+ if ((cod2 != 0) || (cod1 & 0x20))
+ {
+ char buf[128];
+
+ buf[0] = 0;
+
+ proto_item_append_text(item, " (%s - services:", val_to_str_ext_const(cod1 & 0x1f, &bthci_cmd_major_dev_class_vals_ext, "???"));
+ if (cod2 & 0x80) g_strlcat(buf, " Information,", sizeof(buf));
+ if (cod2 & 0x40) g_strlcat(buf, " Telephony,", sizeof(buf));
+ if (cod2 & 0x20) g_strlcat(buf, " Audio,", sizeof(buf));
+ if (cod2 & 0x10) g_strlcat(buf, " Object transfer,", sizeof(buf));
+ if (cod2 & 0x08) g_strlcat(buf, " Capturing,", sizeof(buf));
+ if (cod2 & 0x04) g_strlcat(buf, " Rendering,", sizeof(buf));
+ if (cod2 & 0x02) g_strlcat(buf, " Networking,", sizeof(buf));
+ if (cod2 & 0x01) g_strlcat(buf, " Positioning,", sizeof(buf));
+ if (cod1 & 0x20) g_strlcat(buf, " Limited discoverable mode,", sizeof(buf));
+
+ buf[strlen(buf)-1] = 0; /* skip last comma */
+
+ g_strlcat(buf, ")", sizeof(buf));
+ proto_item_append_text(item, "%s", buf);
+ }
+ else
+ {
+ proto_item_append_text(item, " (%s - no major services)", val_to_str_ext_const(cod1 & 0x1f, &bthci_cmd_major_dev_class_vals_ext, "???"));
+ }
+
+ return offset+3;
}
static int
dissect_bthci_evt_inq_complete(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_conn_complete(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
+ offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
- proto_tree_add_item(tree, hf_bthci_evt_link_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_link_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_encryption_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_encryption_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_conn_request(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
+ offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
- offset = dissect_bthci_evt_cod(tvb, offset, pinfo, tree);
+ offset = dissect_bthci_evt_cod(tvb, offset, pinfo, tree);
- proto_tree_add_item(tree, hf_bthci_evt_link_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_link_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_disconn_complete(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_reason, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_reason, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_auth_complete(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_lmp_features(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- guint8 fc_lag;
- proto_item *item;
- proto_item *ti_lmp_features=NULL;
- proto_item *ti_lmp_subtree=NULL;
-
- if(tree){
- ti_lmp_features=proto_tree_add_text(tree, tvb, offset, 8, "LMP_Features");
- ti_lmp_subtree=proto_item_add_subtree(ti_lmp_features, ett_lmp_subtree);
- }
-
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_00, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_01, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_02, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_03, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_04, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_05, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_06, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_07, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_10, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_11, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_12, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_13, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_14, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_15, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_16, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_17, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_20, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_21, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_22, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_23, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- item = proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_24, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- fc_lag = (tvb_get_guint8(tvb, offset) & 0x70)>>4;
- proto_item_append_text(item, " (%i bytes)", 256*fc_lag);
-
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_27, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_31, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_32, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_33, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_34, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_35, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_36, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_37, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_40, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_41, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_43, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_44, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_47, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_50, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_51, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_52, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_53, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_54, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_55, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_56, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_57, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_60, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_63, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_64, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_65, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_66, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_70, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_71, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_77, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- return offset;
+ guint8 fc_lag;
+ proto_item *item;
+ proto_item *ti_lmp_features = NULL;
+ proto_item *ti_lmp_subtree = NULL;
+
+ if(tree){
+ ti_lmp_features=proto_tree_add_text(tree, tvb, offset, 8, "LMP_Features");
+ ti_lmp_subtree=proto_item_add_subtree(ti_lmp_features, ett_lmp_subtree);
+ }
+
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_00, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_01, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_02, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_03, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_04, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_05, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_06, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_07, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_10, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_11, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_12, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_13, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_14, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_15, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_16, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_17, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_20, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_21, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_22, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_23, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ item = proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_24, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ fc_lag = (tvb_get_guint8(tvb, offset) & 0x70)>>4;
+ proto_item_append_text(item, " (%i bytes)", 256*fc_lag);
+
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_27, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_31, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_32, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_33, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_34, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_35, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_36, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_37, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_40, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_41, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_43, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_44, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_47, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_50, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_51, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_52, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_53, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_54, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_55, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_56, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_57, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_60, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_63, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_64, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_65, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_66, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_70, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_71, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_77, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ return offset;
}
static int
dissect_bthci_evt_pin_code_request(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
+ offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_link_key_request(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
+ offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_link_key_notification(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
+ offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
- proto_tree_add_item(tree, hf_bthci_evt_link_key, tvb, offset, 16, ENC_NA);
- offset+=16;
+ proto_tree_add_item(tree, hf_bthci_evt_link_key, tvb, offset, 16, ENC_NA);
+ offset+=16;
- proto_tree_add_item(tree, hf_bthci_evt_key_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset+=1;
+ proto_tree_add_item(tree, hf_bthci_evt_key_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset+=1;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_return_link_keys(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- guint8 evt_num_keys;
+ guint8 evt_num_keys;
- evt_num_keys = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(tree, hf_bthci_evt_num_keys, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ evt_num_keys = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_bthci_evt_num_keys, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- while(evt_num_keys--){
- offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
+ while(evt_num_keys--){
+ offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
- proto_tree_add_item(tree, hf_bthci_evt_link_key, tvb, offset, 16, ENC_NA);
- offset+=16;
+ proto_tree_add_item(tree, hf_bthci_evt_link_key, tvb, offset, 16, ENC_NA);
+ offset+=16;
- }
+ }
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_read_remote_support_features_complete(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
{
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- offset=dissect_bthci_evt_lmp_features(tvb, offset, pinfo,tree);
+ offset=dissect_bthci_evt_lmp_features(tvb, offset, pinfo,tree);
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_remote_name_req_complete(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
+ offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
- proto_tree_add_item(tree, hf_bthci_evt_remote_name, tvb, offset, 248, ENC_ASCII|ENC_NA);
- offset+=248;
+ proto_tree_add_item(tree, hf_bthci_evt_remote_name, tvb, offset, 248, ENC_ASCII|ENC_NA);
+ offset+=248;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_read_remote_version_information_complete(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_vers_nr, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_vers_nr, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_comp_id, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_comp_id, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_sub_vers_nr, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_sub_vers_nr, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_flush_occured(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_number_of_completed_packets(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- guint8 evt_num_handles;
+ guint8 evt_num_handles;
- evt_num_handles = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(tree, hf_bthci_evt_num_handles, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ evt_num_handles = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_bthci_evt_num_handles, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- while(evt_num_handles--){
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ while(evt_num_handles--){
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_num_compl_packets, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_num_compl_packets, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- }
+ }
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_mode_change(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_item *handle_item;
+ proto_item *handle_item;
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_curr_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_curr_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- handle_item = proto_tree_add_item(tree, hf_bthci_evt_interval, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_item_append_text(handle_item, " Baseband slots (%f msec)", tvb_get_letohs(tvb, offset)*0.625);
- offset+=2;
+ handle_item = proto_tree_add_item(tree, hf_bthci_evt_interval, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(handle_item, " Baseband slots (%f msec)", tvb_get_letohs(tvb, offset)*0.625);
+ offset+=2;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_role_change(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
+ offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
- proto_tree_add_item(tree, hf_bthci_evt_role, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_role, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_hardware_error(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_item(tree, hf_bthci_evt_hardware_code, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_hardware_code, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_loopback_command(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- tvbuff_t *next_tvb;
+ tvbuff_t *next_tvb;
- next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), -1);
- if(bthci_com_handle){
- call_dissector(bthci_com_handle, next_tvb, pinfo, tree);
- }
- offset+=tvb_length_remaining(tvb, offset);
+ next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), -1);
+ if(bthci_com_handle){
+ call_dissector(bthci_com_handle, next_tvb, pinfo, tree);
+ }
+ offset+=tvb_length_remaining(tvb, offset);
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_data_buffer_overflow(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_item(tree, hf_bthci_evt_link_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_link_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_read_clock_offset_complete(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_item *handle_item;
- gint16 clk;
+ proto_item *handle_item;
+ gint16 clk;
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- handle_item = proto_tree_add_item(tree, hf_bthci_evt_clock_offset, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- clk=tvb_get_letohs(tvb, offset) & 32767; /* only bit0-14 are valid */
- proto_item_append_text(handle_item, " (%g ms)", 1.25*clk);
- offset+=2;
+ handle_item = proto_tree_add_item(tree, hf_bthci_evt_clock_offset, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ clk=tvb_get_letohs(tvb, offset) & 32767; /* only bit0-14 are valid */
+ proto_item_append_text(handle_item, " (%g ms)", 1.25*clk);
+ offset+=2;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_max_slots_change(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_max_slots, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_max_slots, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_qos_violation(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_conn_packet_type_changed(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- guint16 flags;
- proto_tree *handle_tree=NULL;
- proto_item *ti_ptype_subtree=NULL;
-
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- flags=tvb_get_letohs(tvb, offset);
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- handle_tree = proto_tree_add_text(tree, tvb, offset, 2, "Usable packet types: ");
- ti_ptype_subtree = proto_item_add_subtree(handle_tree, ett_ptype_subtree);
-
- if (flags & 0x0008)
- proto_item_append_text(handle_tree, "DM1 ");
- if (flags & 0x0010)
- proto_item_append_text(handle_tree, "DH1 ");
- if (flags & 0x0400)
- proto_item_append_text(handle_tree, "DM3 ");
- if (flags & 0x0800)
- proto_item_append_text(handle_tree, "DH3 ");
- if (flags & 0x4000)
- proto_item_append_text(handle_tree, "DM5 ");
- if (flags & 0x8000)
- proto_item_append_text(handle_tree, "DH5 ");
- if (flags & 0x0020)
- proto_item_append_text(handle_tree, "HV1 ");
- if (flags & 0x0040)
- proto_item_append_text(handle_tree, "HV2 ");
- if (flags & 0x0080)
- proto_item_append_text(handle_tree, "HV3 ");
- if (flags & 0x0002)
- proto_item_append_text(handle_tree, "2-DH1 ");
- if (flags & 0x0004)
- proto_item_append_text(handle_tree, "3-DH1 ");
- if (flags & 0x0100)
- proto_item_append_text(handle_tree, "2-DH3 ");
- if (flags & 0x0200)
- proto_item_append_text(handle_tree, "3-DH3 ");
- if (flags & 0x1000)
- proto_item_append_text(handle_tree, "2-DH5 ");
- if (flags & 0x2000)
- proto_item_append_text(handle_tree, "3-DH5 ");
-
- proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_2dh1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_3dh1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_dm1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_dh1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_2dh3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_3dh3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_dm3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_dh3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_2dh5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_3dh5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_dm5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_dh5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_hv1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_hv2, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_hv3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- return offset;
+ guint16 flags;
+ proto_tree *handle_tree=NULL;
+ proto_item *ti_ptype_subtree=NULL;
+
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ flags=tvb_get_letohs(tvb, offset);
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+
+ handle_tree = proto_tree_add_text(tree, tvb, offset, 2, "Usable packet types: ");
+ ti_ptype_subtree = proto_item_add_subtree(handle_tree, ett_ptype_subtree);
+
+ if (flags & 0x0008)
+ proto_item_append_text(handle_tree, "DM1 ");
+ if (flags & 0x0010)
+ proto_item_append_text(handle_tree, "DH1 ");
+ if (flags & 0x0400)
+ proto_item_append_text(handle_tree, "DM3 ");
+ if (flags & 0x0800)
+ proto_item_append_text(handle_tree, "DH3 ");
+ if (flags & 0x4000)
+ proto_item_append_text(handle_tree, "DM5 ");
+ if (flags & 0x8000)
+ proto_item_append_text(handle_tree, "DH5 ");
+ if (flags & 0x0020)
+ proto_item_append_text(handle_tree, "HV1 ");
+ if (flags & 0x0040)
+ proto_item_append_text(handle_tree, "HV2 ");
+ if (flags & 0x0080)
+ proto_item_append_text(handle_tree, "HV3 ");
+ if (flags & 0x0002)
+ proto_item_append_text(handle_tree, "2-DH1 ");
+ if (flags & 0x0004)
+ proto_item_append_text(handle_tree, "3-DH1 ");
+ if (flags & 0x0100)
+ proto_item_append_text(handle_tree, "2-DH3 ");
+ if (flags & 0x0200)
+ proto_item_append_text(handle_tree, "3-DH3 ");
+ if (flags & 0x1000)
+ proto_item_append_text(handle_tree, "2-DH5 ");
+ if (flags & 0x2000)
+ proto_item_append_text(handle_tree, "3-DH5 ");
+
+ proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_2dh1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_3dh1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_dm1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_dh1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_2dh3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_3dh3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_dm3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_dh3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_2dh5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_3dh5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_dm5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_dh5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_hv1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_hv2, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_ptype_subtree, hf_bthci_evt_link_type_hv3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+
+ return offset;
}
static int
dissect_bthci_evt_command_status(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
{
- guint8 status_code;
- guint16 opcode;
+ guint8 status_code;
+ guint16 opcode;
- status_code = tvb_get_guint8(tvb, offset);
+ status_code = tvb_get_guint8(tvb, offset);
- if( status_code != 0) {
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- }
- else {
- proto_tree_add_item(tree, hf_bthci_evt_status_pending, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- }
- offset++;
+ if (status_code != 0) {
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ }
+ else {
+ proto_tree_add_item(tree, hf_bthci_evt_status_pending, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ }
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_num_command_packets, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_num_command_packets, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- opcode = tvb_get_letohs(tvb, offset);
- proto_tree_add_item(tree, hf_bthci_evt_com_opcode, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ opcode = tvb_get_letohs(tvb, offset);
+ proto_tree_add_item(tree, hf_bthci_evt_com_opcode, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- col_append_fstr(pinfo->cinfo, COL_INFO, " (%s)",
- val_to_str_ext(opcode, &bthci_cmd_opcode_vals_ext, "Unknown 0x%08x"));
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (%s)",
+ val_to_str_ext(opcode, &bthci_cmd_opcode_vals_ext, "Unknown 0x%08x"));
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_page_scan_mode_change(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
+ offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
- proto_tree_add_item(tree, hf_bthci_evt_page_scan_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_page_scan_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_page_scan_repetition_mode_change(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
+ offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
- proto_tree_add_item(tree, hf_bthci_evt_page_scan_repetition_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_page_scan_repetition_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_inq_result_with_rssi(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- guint8 num, evt_num_responses;
+ guint8 num, evt_num_responses;
- evt_num_responses = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(tree, hf_bthci_evt_num_responses, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ evt_num_responses = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_bthci_evt_num_responses, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- for(num=0;num<evt_num_responses;num++){
- offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
+ for(num=0;num<evt_num_responses;num++){
+ offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
- proto_tree_add_item(tree, hf_bthci_evt_page_scan_repetition_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_page_scan_repetition_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- /* reserved byte */
- offset++;
+ /* reserved byte */
+ offset++;
- offset = dissect_bthci_evt_cod(tvb, offset, pinfo, tree);
+ offset = dissect_bthci_evt_cod(tvb, offset, pinfo, tree);
- proto_tree_add_item(tree, hf_bthci_evt_clock_offset, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_clock_offset, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_rssi, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_rssi, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- }
+ }
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_ext_inquiry_response(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- guint8 i, j, length, type;
- proto_item *ti_eir=NULL;
- proto_item *ti_eir_subtree=NULL;
-
- if(tree){
- ti_eir=proto_tree_add_text(tree, tvb, offset, 240, "Extended Inquiry Response Data");
- ti_eir_subtree=proto_item_add_subtree(ti_eir, ett_eir_subtree);
- }
-
- i=0;
- while(i<240){
- length = tvb_get_guint8(tvb, offset+i);
- if( length != 0 ){
-
- proto_item *ti_eir_struct=NULL;
- proto_tree *ti_eir_struct_subtree=NULL;
-
- ti_eir_struct = proto_tree_add_text(ti_eir_subtree, tvb, offset+i, length+1, "%s", "");
- ti_eir_struct_subtree = proto_item_add_subtree(ti_eir_struct, ett_eir_struct_subtree);
-
- type = tvb_get_guint8(tvb, offset+i+1);
-
- proto_item_append_text(ti_eir_struct,"%s", val_to_str_ext_const(type, &bthci_cmd_eir_data_type_vals_ext, "Unknown"));
-
- proto_tree_add_item(ti_eir_struct_subtree,hf_bthci_evt_eir_struct_length, tvb, offset+i, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_eir_struct_subtree,hf_bthci_evt_eir_struct_type, tvb, offset+i+1, 1, ENC_LITTLE_ENDIAN);
-
- switch(type) {
- case 0x02: /* 16-bit Service Class UUIDs, incomplete list */
- case 0x03: /* 16-bit Service Class UUIDs, complete list */
- j=0;
- while(j<(length-1))
- {
- proto_tree_add_item(ti_eir_struct_subtree, hf_bthci_evt_sc_uuid16, tvb, offset+i+j+2, 2, ENC_LITTLE_ENDIAN);
- j+=2;
- }
- break;
- case 0x04: /* 32-bit Service Class UUIDs, incomplete list */
- case 0x05: /* 32-bit Service Class UUIDs, complete list */
- j=0;
- while(j<(length-1))
- {
- proto_tree_add_item(ti_eir_struct_subtree, hf_bthci_evt_sc_uuid32, tvb, offset+i+j+2, 4, ENC_LITTLE_ENDIAN);
- j+=4;
- }
- break;
- case 0x06: /* 128-bit Service Class UUIDs, incomplete list */
- case 0x07: /* 128-bit Service Class UUIDs, complete list */
- j=0;
- while(j<(length-1))
- {
- proto_tree_add_item(ti_eir_struct_subtree, hf_bthci_evt_sc_uuid128, tvb, offset+i+j+2, 16, ENC_NA);
- j+=16;
- }
- break;
- case 0x08: /* Device Name, shortened */
- case 0x09: /* Device Name, full */
- proto_tree_add_item(ti_eir_struct_subtree, hf_bthci_evt_device_name, tvb, offset+i+2, length-1, ENC_ASCII|ENC_NA);
- proto_item_append_text(ti_eir_struct,": %s", tvb_format_text(tvb,offset+i+2,length-1));
- break;
- case 0x0A: /* Tx Power Level */
- proto_tree_add_item(ti_eir_struct_subtree, hf_bthci_evt_transmit_power_level, tvb, offset+i+2, 1, ENC_LITTLE_ENDIAN);
-
- default:
- proto_tree_add_item(ti_eir_struct_subtree, hf_bthci_evt_eir_data, tvb, offset+i+2, length-1, ENC_NA);
- break;
- }
- i += length+1;
- }
- else {
- break;
- }
- }
-
- return offset+240;
+ guint8 length, type;
+ guint i, j;
+ proto_item *ti_eir = NULL;
+ proto_item *ti_eir_subtree = NULL;
+
+ if(tree){
+ ti_eir=proto_tree_add_text(tree, tvb, offset, 240, "Extended Inquiry Response Data");
+ ti_eir_subtree=proto_item_add_subtree(ti_eir, ett_eir_subtree);
+ }
+
+ i=0;
+ while(i<240){
+ length = tvb_get_guint8(tvb, offset+i);
+ if (length != 0) {
+
+ proto_item *ti_eir_struct=NULL;
+ proto_tree *ti_eir_struct_subtree=NULL;
+
+ ti_eir_struct = proto_tree_add_text(ti_eir_subtree, tvb, offset+i, length+1, "%s", "");
+ ti_eir_struct_subtree = proto_item_add_subtree(ti_eir_struct, ett_eir_struct_subtree);
+
+ type = tvb_get_guint8(tvb, offset+i+1);
+
+ proto_item_append_text(ti_eir_struct,"%s", val_to_str_ext_const(type, &bthci_cmd_eir_data_type_vals_ext, "Unknown"));
+
+ proto_tree_add_item(ti_eir_struct_subtree,hf_bthci_evt_eir_struct_length, tvb, offset+i, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_eir_struct_subtree,hf_bthci_evt_eir_struct_type, tvb, offset+i+1, 1, ENC_LITTLE_ENDIAN);
+
+ switch(type) {
+ case 0x02: /* 16-bit Service Class UUIDs, incomplete list */
+ case 0x03: /* 16-bit Service Class UUIDs, complete list */
+ j=0;
+ while(j<(guint)(length-1))
+ {
+ proto_tree_add_item(ti_eir_struct_subtree, hf_bthci_evt_sc_uuid16, tvb, offset+i+j+2, 2, ENC_LITTLE_ENDIAN);
+ j+=2;
+ }
+ break;
+ case 0x04: /* 32-bit Service Class UUIDs, incomplete list */
+ case 0x05: /* 32-bit Service Class UUIDs, complete list */
+ j=0;
+ while(j<(guint)(length-1))
+ {
+ proto_tree_add_item(ti_eir_struct_subtree, hf_bthci_evt_sc_uuid32, tvb, offset+i+j+2, 4, ENC_LITTLE_ENDIAN);
+ j+=4;
+ }
+ break;
+ case 0x06: /* 128-bit Service Class UUIDs, incomplete list */
+ case 0x07: /* 128-bit Service Class UUIDs, complete list */
+ j=0;
+ while(j<(guint)(length-1))
+ {
+ proto_tree_add_item(ti_eir_struct_subtree, hf_bthci_evt_sc_uuid128, tvb, offset+i+j+2, 16, ENC_NA);
+ j+=16;
+ }
+ break;
+ case 0x08: /* Device Name, shortened */
+ case 0x09: /* Device Name, full */
+ proto_tree_add_item(ti_eir_struct_subtree, hf_bthci_evt_device_name, tvb, offset+i+2, length-1, ENC_ASCII|ENC_NA);
+ proto_item_append_text(ti_eir_struct,": %s", tvb_format_text(tvb,offset+i+2,length-1));
+ break;
+ case 0x0A: /* Tx Power Level */
+ proto_tree_add_item(ti_eir_struct_subtree, hf_bthci_evt_transmit_power_level, tvb, offset+i+2, 1, ENC_LITTLE_ENDIAN);
+ break;
+ default:
+ proto_tree_add_item(ti_eir_struct_subtree, hf_bthci_evt_eir_data, tvb, offset+i+2, length-1, ENC_NA);
+ break;
+ }
+ i += length+1;
+ }
+ else {
+ break;
+ }
+ }
+
+ return offset+240;
}
static int
dissect_bthci_evt_io_capability_request(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
+ offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_io_capability_response(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
+ offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
- proto_tree_add_item(tree, hf_bthci_evt_io_capability, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_io_capability, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_oob_data_present, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_oob_data_present, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_auth_requirements, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_auth_requirements, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_user_confirmation_request(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
+ offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
- proto_tree_add_item(tree, hf_bthci_evt_numeric_value, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
+ proto_tree_add_item(tree, hf_bthci_evt_numeric_value, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset+=4;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_user_passkey_request(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
+ offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_remote_oob_data_request(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
+ offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_simple_pairing_complete(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
+ offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_user_passkey_notification(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
+ offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
- proto_tree_add_item(tree, hf_bthci_evt_passkey, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
+ proto_tree_add_item(tree, hf_bthci_evt_passkey, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset+=4;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_keypress_notification(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
+ offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
- proto_tree_add_item(tree, hf_bthci_evt_notification_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_notification_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_remote_host_sup_feat_notification(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
+ offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
- proto_tree_add_item(tree, hf_bthci_evt_ext_lmp_features, tvb, offset, 8, ENC_LITTLE_ENDIAN);
- offset+=8;
+ proto_tree_add_item(tree, hf_bthci_evt_ext_lmp_features, tvb, offset, 8, ENC_LITTLE_ENDIAN);
+ offset+=8;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_item *ti_opcode=NULL;
- proto_tree *opcode_tree=NULL;
- proto_item *item;
- gint16 timeout;
- guint8 num8, i;
- guint16 com_opcode;
- guint32 accuracy;
-
- proto_tree_add_item(tree, hf_bthci_evt_num_command_packets, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- com_opcode = tvb_get_letohs(tvb, offset);
- ti_opcode = proto_tree_add_item(tree, hf_bthci_evt_com_opcode, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- opcode_tree = proto_item_add_subtree(ti_opcode, ett_opcode);
- proto_tree_add_item(opcode_tree, hf_bthci_evt_ogf, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(opcode_tree, hf_bthci_evt_ocf, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- col_append_fstr(pinfo->cinfo, COL_INFO, " (%s)",
- val_to_str_ext(com_opcode, &bthci_cmd_opcode_vals_ext, "Unknown 0x%08x"));
-
- switch(com_opcode) {
- /* This is a list of Commands that all return just the status */
- case 0x0402: /* Inquiry Cancel */
- case 0x0403: /* Periodic Inquiry Mode */
- case 0x0404: /* Exit Periodic Enquiry Mode */
- case 0x080f: /* Write Default Link Policy Settings */
- case 0x0c01: /* Set Event Mask */
- case 0x0c03: /* Reset */
- case 0x0c05: /* Set Event Filter */
- case 0x0c0a: /* Write PIN Type */
- case 0x0c0b: /* Create Unit Key */
- case 0x0c13: /* Change Local Name */
- case 0x0c16: /* Write Connection Accept Timeout */
- case 0x0c18: /* Write Page Timeout */
- case 0x0c1a: /* Write Scan Enable */
- case 0x0c1c: /* Write Page Scan Activity */
- case 0x0c1e: /* Write Inquiry Scan Activity */
- case 0x0c20: /* Write Authentication Enable */
- case 0x0c22: /* Write Encryption Mode */
- case 0x0c24: /* Write Class of Device */
- case 0x0c26: /* Write Voice Setting */
- case 0x0c2a: /* Write Num Broadcast Retransmissions */
- case 0x0c2c: /* Write Hold Mode Activity */
- case 0x0c2f: /* Write SCO Flow Control Enable */
- case 0x0c31: /* Set Host Controller To Host Flow Control */
- case 0x0c33: /* Host Buffer Size */
- case 0x0c3a: /* Write Current IAC LAP */
- case 0x0c3c: /* Write Page Scan Period Mode */
- case 0x0c3e: /* Write Page Scan Mode */
- case 0x0c3f: /* Set AFH Host Channel Classification */
- case 0x0c43: /* Write Inquiry Scan Type */
- case 0x0c45: /* Write Inquiry Mode */
- case 0x0c47: /* Write Page Scan Type */
- case 0x0c49: /* Write AFH Channel Assessment Mode */
- case 0x0c52: /* Write Extended Inquiry Response */
- case 0x0c53: /* Refresh Encryption Key */
- case 0x0c56: /* Write Simple Pairing Mode */
- case 0x0c59: /* Write Inquiry Tx Power Level */
- case 0x0c5b: /* Write Default Erroneous Data Reporting */
- case 0x0c60: /* Send Keypress Notification */
- case 0x1802: /* Write Loopback Mode */
- case 0x1803: /* Enable Device Under Test Mode */
- case 0x1804: /* Write Simple Pairing Debug Mode */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
-
- /* This is a list of Commands that all return status and BD_ADDR */
- case 0x0408: /* Create Connection Cancel */
- case 0x040b: /* Link Key Request Reply */
- case 0x040c: /* Link Key Request Negative Reply */
- case 0x040d: /* PIN Code Request Reply */
- case 0x040e: /* PIN Code Request Negative Reply */
- case 0x041a: /* Remote Name Request Cancel */
- case 0x042b: /* IO Capability Response */
- case 0x042c: /* User Confirmation Request Reply */
- case 0x042d: /* User Confirmation Request Negative Reply */
- case 0x042e: /* User Passkey Request Reply */
- case 0x042f: /* User Passkey Request Negative Reply */
- case 0x0430: /* Remote OOB Data Request Reply */
- case 0x0433: /* Remote OOB Data Request Negative Reply */
- case 0x1009: /* Read BD_ADDR */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
-
- break;
-
- /* This is a list of Commands that all return status and connection_handle */
- case 0x080d: /* Write Link Policy Settings */
- case 0x0811: /* Sniff Subrating */
- case 0x0c08: /* Flush */
- case 0x0c28: /* Write Automatic Flush Timeout */
- case 0x0c37: /* Write Link Supervision Timeout */
- case 0x0c5f: /* Enhanced Flush */
- case 0x1402: /* Reset Failed Contact Counter */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- break;
-
- /* This is a list of Commands that all return status and timeout */
- case 0x0c15: /* Read Connection Accept Timeout */
- case 0x0c17: /* Read Page Timeout */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- timeout = tvb_get_letohs(tvb, offset);
- item = proto_tree_add_item(tree, hf_bthci_evt_timeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_item_append_text(item, " slots (%g msec)", timeout*0.625);
- offset+=2;
-
- break;
-
- /* This is a list of Commands that all return status, connection handle and timeout */
- case 0x0c27: /* Read Automatic Flush Timeout */
- case 0x0c36: /* Read Link Supervision Timeout */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- timeout = tvb_get_letohs(tvb, offset);
- item = proto_tree_add_item(tree, hf_bthci_evt_timeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_item_append_text(item, " slots (%g msec)", timeout*0.625);
- offset+=2;
-
- break;
-
- /* This is a list of Commands that all return status, interval and window */
- case 0x0c1b: /* Read Page Scan Activity */
- case 0x0c1d: /* Read Inquiry Scan Activity */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- proto_tree_add_item(tree, hf_bthci_evt_interval, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- proto_tree_add_item(tree, hf_bthci_evt_window, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- break;
-
- case 0x0420: /* Read LMP Handle */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_item *ti_opcode=NULL;
+ proto_tree *opcode_tree=NULL;
+ proto_item *item;
+ gint16 timeout;
+ guint8 num8, i;
+ guint16 com_opcode;
+ guint32 accuracy;
+
+ proto_tree_add_item(tree, hf_bthci_evt_num_command_packets, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ com_opcode = tvb_get_letohs(tvb, offset);
+ ti_opcode = proto_tree_add_item(tree, hf_bthci_evt_com_opcode, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ opcode_tree = proto_item_add_subtree(ti_opcode, ett_opcode);
+ proto_tree_add_item(opcode_tree, hf_bthci_evt_ogf, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(opcode_tree, hf_bthci_evt_ocf, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (%s)",
+ val_to_str_ext(com_opcode, &bthci_cmd_opcode_vals_ext, "Unknown 0x%08x"));
+
+ switch(com_opcode) {
+ /* This is a list of Commands that all return just the status */
+ case 0x0402: /* Inquiry Cancel */
+ case 0x0403: /* Periodic Inquiry Mode */
+ case 0x0404: /* Exit Periodic Enquiry Mode */
+ case 0x080f: /* Write Default Link Policy Settings */
+ case 0x0c01: /* Set Event Mask */
+ case 0x0c03: /* Reset */
+ case 0x0c05: /* Set Event Filter */
+ case 0x0c0a: /* Write PIN Type */
+ case 0x0c0b: /* Create Unit Key */
+ case 0x0c13: /* Change Local Name */
+ case 0x0c16: /* Write Connection Accept Timeout */
+ case 0x0c18: /* Write Page Timeout */
+ case 0x0c1a: /* Write Scan Enable */
+ case 0x0c1c: /* Write Page Scan Activity */
+ case 0x0c1e: /* Write Inquiry Scan Activity */
+ case 0x0c20: /* Write Authentication Enable */
+ case 0x0c22: /* Write Encryption Mode */
+ case 0x0c24: /* Write Class of Device */
+ case 0x0c26: /* Write Voice Setting */
+ case 0x0c2a: /* Write Num Broadcast Retransmissions */
+ case 0x0c2c: /* Write Hold Mode Activity */
+ case 0x0c2f: /* Write SCO Flow Control Enable */
+ case 0x0c31: /* Set Host Controller To Host Flow Control */
+ case 0x0c33: /* Host Buffer Size */
+ case 0x0c3a: /* Write Current IAC LAP */
+ case 0x0c3c: /* Write Page Scan Period Mode */
+ case 0x0c3e: /* Write Page Scan Mode */
+ case 0x0c3f: /* Set AFH Host Channel Classification */
+ case 0x0c43: /* Write Inquiry Scan Type */
+ case 0x0c45: /* Write Inquiry Mode */
+ case 0x0c47: /* Write Page Scan Type */
+ case 0x0c49: /* Write AFH Channel Assessment Mode */
+ case 0x0c52: /* Write Extended Inquiry Response */
+ case 0x0c53: /* Refresh Encryption Key */
+ case 0x0c56: /* Write Simple Pairing Mode */
+ case 0x0c59: /* Write Inquiry Tx Power Level */
+ case 0x0c5b: /* Write Default Erroneous Data Reporting */
+ case 0x0c60: /* Send Keypress Notification */
+ case 0x1802: /* Write Loopback Mode */
+ case 0x1803: /* Enable Device Under Test Mode */
+ case 0x1804: /* Write Simple Pairing Debug Mode */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
+
+ /* This is a list of Commands that all return status and BD_ADDR */
+ case 0x0408: /* Create Connection Cancel */
+ case 0x040b: /* Link Key Request Reply */
+ case 0x040c: /* Link Key Request Negative Reply */
+ case 0x040d: /* PIN Code Request Reply */
+ case 0x040e: /* PIN Code Request Negative Reply */
+ case 0x041a: /* Remote Name Request Cancel */
+ case 0x042b: /* IO Capability Response */
+ case 0x042c: /* User Confirmation Request Reply */
+ case 0x042d: /* User Confirmation Request Negative Reply */
+ case 0x042e: /* User Passkey Request Reply */
+ case 0x042f: /* User Passkey Request Negative Reply */
+ case 0x0430: /* Remote OOB Data Request Reply */
+ case 0x0433: /* Remote OOB Data Request Negative Reply */
+ case 0x1009: /* Read BD_ADDR */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
+
+ break;
+
+ /* This is a list of Commands that all return status and connection_handle */
+ case 0x080d: /* Write Link Policy Settings */
+ case 0x0811: /* Sniff Subrating */
+ case 0x0c08: /* Flush */
+ case 0x0c28: /* Write Automatic Flush Timeout */
+ case 0x0c37: /* Write Link Supervision Timeout */
+ case 0x0c5f: /* Enhanced Flush */
+ case 0x1402: /* Reset Failed Contact Counter */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+
+ break;
+
+ /* This is a list of Commands that all return status and timeout */
+ case 0x0c15: /* Read Connection Accept Timeout */
+ case 0x0c17: /* Read Page Timeout */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ timeout = tvb_get_letohs(tvb, offset);
+ item = proto_tree_add_item(tree, hf_bthci_evt_timeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(item, " slots (%g msec)", timeout*0.625);
+ offset+=2;
+
+ break;
+
+ /* This is a list of Commands that all return status, connection handle and timeout */
+ case 0x0c27: /* Read Automatic Flush Timeout */
+ case 0x0c36: /* Read Link Supervision Timeout */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+
+ timeout = tvb_get_letohs(tvb, offset);
+ item = proto_tree_add_item(tree, hf_bthci_evt_timeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(item, " slots (%g msec)", timeout*0.625);
+ offset+=2;
+
+ break;
+
+ /* This is a list of Commands that all return status, interval and window */
+ case 0x0c1b: /* Read Page Scan Activity */
+ case 0x0c1d: /* Read Inquiry Scan Activity */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_bthci_evt_interval, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+
+ proto_tree_add_item(tree, hf_bthci_evt_window, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+
+ break;
+
+ case 0x0420: /* Read LMP Handle */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_lmp_handle, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_lmp_handle, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- /* 4 reserved bytes */
- offset+=4;
- break;
+ /* 4 reserved bytes */
+ offset+=4;
+ break;
- case 0x0809: /* Role Discovery */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x0809: /* Role Discovery */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_curr_role, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_curr_role, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- break;
+ break;
- case 0x080c: /* Read Link Policy Settings */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x080c: /* Read Link Policy Settings */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_link_policy_setting_switch, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_evt_link_policy_setting_hold , tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_evt_link_policy_setting_sniff , tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_evt_link_policy_setting_park , tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_link_policy_setting_switch, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_evt_link_policy_setting_hold , tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_evt_link_policy_setting_sniff , tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_evt_link_policy_setting_park , tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- break;
+ break;
- case 0x080e: /* Read Default Link Policy Settings */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x080e: /* Read Default Link Policy Settings */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_link_policy_setting_switch, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_evt_link_policy_setting_hold , tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_evt_link_policy_setting_sniff , tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_evt_link_policy_setting_park , tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_link_policy_setting_switch, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_evt_link_policy_setting_hold , tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_evt_link_policy_setting_sniff , tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_evt_link_policy_setting_park , tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- break;
+ break;
- case 0x0c09: /* Read PIN Type */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x0c09: /* Read PIN Type */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_pin_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_pin_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- break;
+ break;
- case 0x0c0d: /* Read Stored Link Key */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x0c0d: /* Read Stored Link Key */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_max_num_keys, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_max_num_keys, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_num_keys_read, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_num_keys_read, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- break;
+ break;
- case 0x0c11: /* Write Stored Link Key */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x0c11: /* Write Stored Link Key */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_num_keys_written, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_num_keys_written, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- break;
+ break;
- case 0x0c12: /* Delete Stored Link Key */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x0c12: /* Delete Stored Link Key */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_num_keys_deleted, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_num_keys_deleted, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- break;
+ break;
- case 0x0c14: /* Read Local Name */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x0c14: /* Read Local Name */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_device_name, tvb, offset, 248, ENC_ASCII|ENC_NA);
- offset+=248;
+ proto_tree_add_item(tree, hf_bthci_evt_device_name, tvb, offset, 248, ENC_ASCII|ENC_NA);
+ offset+=248;
- break;
+ break;
- case 0x0c19: /* Read Scan Enable */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x0c19: /* Read Scan Enable */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_scan_enable, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_scan_enable, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- break;
+ break;
- case 0x0c1f: /* Read Authentication Enable */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x0c1f: /* Read Authentication Enable */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_authentication_enable, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_authentication_enable, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- break;
+ break;
- case 0x0c21: /* Read Encryption Mode */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x0c21: /* Read Encryption Mode */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_encryption_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_encryption_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- break;
+ break;
- case 0x0c23: /* Read Class of Device */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x0c23: /* Read Class of Device */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- offset = dissect_bthci_evt_cod(tvb, offset, pinfo, tree);
+ offset = dissect_bthci_evt_cod(tvb, offset, pinfo, tree);
- break;
+ break;
- case 0x0c25: /* Read Voice Setting */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x0c25: /* Read Voice Setting */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_input_coding, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_evt_input_data_format, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_evt_input_sample_size, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_input_coding, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_evt_input_data_format, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_evt_input_sample_size, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- break;
+ break;
- case 0x0c29: /* Read Num Broadcast Retransmissions */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x0c29: /* Read Num Broadcast Retransmissions */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_num_broadcast_retransm, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_num_broadcast_retransm, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- break;
+ break;
- case 0x0c2b: /* Read Hold Mode Activity */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x0c2b: /* Read Hold Mode Activity */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_hold_mode_act_page, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_evt_hold_mode_act_inquiry, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_bthci_evt_hold_mode_act_periodic, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_hold_mode_act_page, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_evt_hold_mode_act_inquiry, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_bthci_evt_hold_mode_act_periodic, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- break;
+ break;
- case 0x0c2d: /* Read Transmit Power Level */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x0c2d: /* Read Transmit Power Level */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_transmit_power_level, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_transmit_power_level, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- break;
+ break;
- case 0x0c2e: /* Read SCO Flow Control Enable */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x0c2e: /* Read SCO Flow Control Enable */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_sco_flow_cont_enable, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_sco_flow_cont_enable, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- break;
+ break;
- case 0x0c38: /* Read Number of Supported IAC */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x0c38: /* Read Number of Supported IAC */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_num_supp_iac, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_num_supp_iac, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- break;
+ break;
- case 0x0c39: /* Read Current IAC LAP */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x0c39: /* Read Current IAC LAP */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- num8 = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(tree, hf_bthci_evt_num_curr_iac, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ num8 = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_bthci_evt_num_curr_iac, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- for (i=0; i<num8; i++) {
- proto_tree_add_item(tree, hf_bthci_evt_iac_lap, tvb, offset, 3, ENC_LITTLE_ENDIAN);
- offset+=3;
- }
- break;
+ for (i=0; i<num8; i++) {
+ proto_tree_add_item(tree, hf_bthci_evt_iac_lap, tvb, offset, 3, ENC_LITTLE_ENDIAN);
+ offset+=3;
+ }
+ break;
- case 0x0c3b: /* Read Page Scan Period Mode */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x0c3b: /* Read Page Scan Period Mode */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_page_scan_period_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_page_scan_period_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- break;
+ break;
- case 0x0c3d: /* Read Page Scan Mode */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x0c3d: /* Read Page Scan Mode */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_page_scan_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_page_scan_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- break;
+ break;
- case 0x0c42: /* Read Inquiry Scan Type */
- case 0x0c46: /* Read Page Scan Type */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- proto_tree_add_item(tree, hf_bthci_evt_scan_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
+ case 0x0c42: /* Read Inquiry Scan Type */
+ case 0x0c46: /* Read Page Scan Type */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_scan_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
- case 0x0c44: /* Read Inquiry Mode */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- proto_tree_add_item(tree, hf_bthci_evt_inq_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
+ case 0x0c44: /* Read Inquiry Mode */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_inq_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
- case 0x0c48: /* Read AFH Channel Assessment Mode */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- proto_tree_add_item(tree, hf_bthci_evt_afh_ch_assessment_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
+ case 0x0c48: /* Read AFH Channel Assessment Mode */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_afh_ch_assessment_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
- case 0x0c51: /* Read Extended Inquiry Response */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x0c51: /* Read Extended Inquiry Response */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_fec_required, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_fec_required, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- offset=dissect_bthci_evt_ext_inquiry_response(tvb, offset, pinfo, tree);
- break;
+ offset=dissect_bthci_evt_ext_inquiry_response(tvb, offset, pinfo, tree);
+ break;
- case 0x0c55: /* Read Simple Pairing Mode */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x0c55: /* Read Simple Pairing Mode */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_simple_pairing_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
+ proto_tree_add_item(tree, hf_bthci_evt_simple_pairing_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
- case 0x0c57: /* Read Local OOB Data */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- proto_tree_add_item(tree, hf_bthci_evt_hash_c, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_randomizer_r, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- break;
+ case 0x0c57: /* Read Local OOB Data */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_hash_c, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_randomizer_r, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ break;
- case 0x0c58: /* Read Inquiry Response Tx Power Level */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- proto_tree_add_item(tree, hf_bthci_evt_power_level_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- break;
+ case 0x0c58: /* Read Inquiry Response Tx Power Level */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_power_level_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ break;
- case 0x0c5a: /* Read Default Erroneous Data Reporting */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x0c5a: /* Read Default Erroneous Data Reporting */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_err_data_reporting, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_err_data_reporting, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- break;
+ break;
- case 0x1001: /* Read Local Version Information */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x1001: /* Read Local Version Information */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_hci_vers_nr, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_hci_vers_nr, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_hci_revision, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_hci_revision, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_vers_nr, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_vers_nr, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_comp_id, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_comp_id, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_sub_vers_nr, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_sub_vers_nr, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- break;
+ break;
- case 0x1002: /* Read Local Supported Commands */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x1002: /* Read Local Supported Commands */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_local_supported_cmds, tvb, offset, 64, ENC_NA);
- offset+=64;
+ proto_tree_add_item(tree, hf_bthci_evt_local_supported_cmds, tvb, offset, 64, ENC_NA);
+ offset+=64;
- break;
+ break;
- case 0x1003: /* Read Local Supported Features */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x1003: /* Read Local Supported Features */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- offset=dissect_bthci_evt_lmp_features(tvb, offset, pinfo, tree);
+ offset=dissect_bthci_evt_lmp_features(tvb, offset, pinfo, tree);
- break;
+ break;
- case 0x1004: /* Read Local Extended Features */
- {
- guint8 page_number;
+ case 0x1004: /* Read Local Extended Features */
+ {
+ guint8 page_number;
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- page_number = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(tree, hf_bthci_evt_page_number, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ page_number = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_bthci_evt_page_number, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_max_page_number, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_max_page_number, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- if( page_number == 0 ){
- offset=dissect_bthci_evt_lmp_features(tvb, offset, pinfo, tree);
- }
- else {
- proto_tree_add_item(tree, hf_bthci_evt_ext_lmp_features, tvb, offset, 8, ENC_LITTLE_ENDIAN);
- offset+=8;
- }
- }
+ if (page_number == 0) {
+ offset=dissect_bthci_evt_lmp_features(tvb, offset, pinfo, tree);
+ }
+ else {
+ proto_tree_add_item(tree, hf_bthci_evt_ext_lmp_features, tvb, offset, 8, ENC_LITTLE_ENDIAN);
+ offset+=8;
+ }
+ }
- break;
+ break;
- case 0x1005: /* Read Buffer Size */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x1005: /* Read Buffer Size */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_host_data_packet_length_acl, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_host_data_packet_length_acl, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_host_data_packet_length_sco, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_host_data_packet_length_sco, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_host_total_num_acl_data_packets, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_host_total_num_acl_data_packets, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_host_total_num_sco_data_packets, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_host_total_num_sco_data_packets, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- break;
+ break;
- case 0x1007: /* Read Country Code */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x1007: /* Read Country Code */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_country_code, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_country_code, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- break;
+ break;
- case 0x1401: /* Read Failed Contact Counter */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x1401: /* Read Failed Contact Counter */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_failed_contact_counter, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_failed_contact_counter, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- break;
+ break;
- case 0x1403: /* Get Link Quality */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x1403: /* Get Link Quality */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_link_quality, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_link_quality, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- break;
+ break;
- case 0x1405: /* Read RSSI */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x1405: /* Read RSSI */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_rssi, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_rssi, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- break;
+ break;
- case 0x1406: /* Read AFH Channel Map */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x1406: /* Read AFH Channel Map */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_afh_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_afh_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_afh_channel_map, tvb, offset, 10, ENC_LITTLE_ENDIAN);
- offset+=10;
+ proto_tree_add_item(tree, hf_bthci_evt_afh_channel_map, tvb, offset, 10, ENC_NA);
+ offset+=10;
- break;
+ break;
- case 0x1407: /* Read Clock */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x1407: /* Read Clock */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_clock, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
+ proto_tree_add_item(tree, hf_bthci_evt_clock, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset+=4;
- accuracy = tvb_get_letohl(tvb, offset);
- item = proto_tree_add_item(tree, hf_bthci_evt_clock_accuracy, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_item_append_text(item, " %g msec", accuracy*0.3125);
- offset+=2;
+ accuracy = tvb_get_letohl(tvb, offset);
+ item = proto_tree_add_item(tree, hf_bthci_evt_clock_accuracy, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(item, " %g msec", accuracy*0.3125);
+ offset+=2;
- break;
+ break;
- case 0x1801: /* Read Loopback Mode */
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x1801: /* Read Loopback Mode */
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_loopback_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_loopback_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- break;
+ break;
- default:
- proto_tree_add_item(tree, hf_bthci_evt_ret_params, tvb, offset, -1, ENC_NA);
- offset+=tvb_length_remaining(tvb, offset);
- break;
- }
+ default:
+ proto_tree_add_item(tree, hf_bthci_evt_ret_params, tvb, offset, -1, ENC_NA);
+ offset+=tvb_length_remaining(tvb, offset);
+ break;
+ }
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_qos_setup_complete(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_flags, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_flags, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_service_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_service_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_token_rate, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
+ proto_tree_add_item(tree, hf_bthci_evt_token_rate, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset+=4;
- proto_tree_add_item(tree, hf_bthci_evt_peak_bandwidth, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
+ proto_tree_add_item(tree, hf_bthci_evt_peak_bandwidth, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset+=4;
- proto_tree_add_item(tree, hf_bthci_evt_latency, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
+ proto_tree_add_item(tree, hf_bthci_evt_latency, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset+=4;
- proto_tree_add_item(tree, hf_bthci_evt_delay_variation, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
+ proto_tree_add_item(tree, hf_bthci_evt_delay_variation, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset+=4;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_change_conn_link_key_complete(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_master_link_key_complete(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_key_flag, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_key_flag, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_encryption_change(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_encryption_enable, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_encryption_enable, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_read_remote_ext_features_complete(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- guint8 page_number;
+ guint8 page_number;
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- page_number = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(tree, hf_bthci_evt_page_number, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ page_number = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_bthci_evt_page_number, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_max_page_number, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_max_page_number, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- if( page_number == 0 ){
- offset=dissect_bthci_evt_lmp_features(tvb, offset, pinfo, tree);
- }
- else {
- proto_tree_add_item(tree, hf_bthci_evt_ext_lmp_features, tvb, offset, 8, ENC_LITTLE_ENDIAN);
- offset+=8;
- }
+ if (page_number == 0) {
+ offset=dissect_bthci_evt_lmp_features(tvb, offset, pinfo, tree);
+ }
+ else {
+ proto_tree_add_item(tree, hf_bthci_evt_ext_lmp_features, tvb, offset, 8, ENC_LITTLE_ENDIAN);
+ offset+=8;
+ }
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_sync_connection_complete(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_item *item;
+ proto_item *item;
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
+ offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
- proto_tree_add_item(tree, hf_bthci_evt_sync_link_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_sync_link_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- item = proto_tree_add_item(tree, hf_bthci_evt_sync_tx_interval, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_item_append_text(item, " slots (%g msec)", tvb_get_guint8(tvb, offset)*0.625);
- offset++;
+ item = proto_tree_add_item(tree, hf_bthci_evt_sync_tx_interval, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(item, " slots (%g msec)", tvb_get_guint8(tvb, offset)*0.625);
+ offset++;
- item = proto_tree_add_item(tree, hf_bthci_evt_sync_rtx_window, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_item_append_text(item, " slots (%g msec)", tvb_get_guint8(tvb, offset)*0.625);
- offset++;
+ item = proto_tree_add_item(tree, hf_bthci_evt_sync_rtx_window, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(item, " slots (%g msec)", tvb_get_guint8(tvb, offset)*0.625);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_sync_rx_packet_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_sync_rx_packet_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_sync_tx_packet_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_sync_tx_packet_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_air_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_air_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_sync_connection_changed(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_item *item;
+ proto_item *item;
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- item = proto_tree_add_item(tree, hf_bthci_evt_sync_tx_interval, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_item_append_text(item, " slots (%g msec)", tvb_get_guint8(tvb, offset)*0.625);
- offset++;
+ item = proto_tree_add_item(tree, hf_bthci_evt_sync_tx_interval, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(item, " slots (%g msec)", tvb_get_guint8(tvb, offset)*0.625);
+ offset++;
- item = proto_tree_add_item(tree, hf_bthci_evt_sync_rtx_window, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_item_append_text(item, " slots (%g msec)", tvb_get_guint8(tvb, offset)*0.625);
- offset++;
+ item = proto_tree_add_item(tree, hf_bthci_evt_sync_rtx_window, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(item, " slots (%g msec)", tvb_get_guint8(tvb, offset)*0.625);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_sync_rx_packet_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_sync_rx_packet_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_sync_tx_packet_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_sync_tx_packet_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_sniff_subrating(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_item *item;
+ proto_item *item;
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- item = proto_tree_add_item(tree, hf_bthci_evt_max_tx_latency, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*0.625);
- offset+=2;
+ item = proto_tree_add_item(tree, hf_bthci_evt_max_tx_latency, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*0.625);
+ offset+=2;
- item = proto_tree_add_item(tree, hf_bthci_evt_max_rx_latency, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*0.625);
- offset+=2;
+ item = proto_tree_add_item(tree, hf_bthci_evt_max_rx_latency, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*0.625);
+ offset+=2;
- item = proto_tree_add_item(tree, hf_bthci_evt_min_remote_timeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*0.625);
- offset+=2;
+ item = proto_tree_add_item(tree, hf_bthci_evt_min_remote_timeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*0.625);
+ offset+=2;
- item = proto_tree_add_item(tree, hf_bthci_evt_min_local_timeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*0.625);
- offset+=2;
+ item = proto_tree_add_item(tree, hf_bthci_evt_min_local_timeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*0.625);
+ offset+=2;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_flow_specification_complete(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(tree, hf_bthci_evt_flags, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_flags, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_flow_direction, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_flow_direction, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_service_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_service_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_token_rate, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
+ proto_tree_add_item(tree, hf_bthci_evt_token_rate, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset+=4;
- proto_tree_add_item(tree, hf_bthci_evt_token_bucket_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
+ proto_tree_add_item(tree, hf_bthci_evt_token_bucket_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset+=4;
- proto_tree_add_item(tree, hf_bthci_evt_peak_bandwidth, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
+ proto_tree_add_item(tree, hf_bthci_evt_peak_bandwidth, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset+=4;
- proto_tree_add_item(tree, hf_bthci_evt_latency, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
+ proto_tree_add_item(tree, hf_bthci_evt_latency, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset+=4;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_enhanced_flush_complete(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_encryption_key_refresh_complete(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_link_supervision_timeout_changed(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_item *item;
+ proto_item *item;
- proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- item = proto_tree_add_item(tree, hf_bthci_evt_link_supervision_timeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*0.625);
- offset+=2;
+ item = proto_tree_add_item(tree, hf_bthci_evt_link_supervision_timeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(item, " slots (%g msec)", tvb_get_letohs(tvb, offset)*0.625);
+ offset+=2;
- return offset;
+ return offset;
}
static int
dissect_bthci_evt_inq_result(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- guint8 num, evt_num_responses;
+ guint8 num, evt_num_responses;
- evt_num_responses = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(tree, hf_bthci_evt_num_responses, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ evt_num_responses = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_bthci_evt_num_responses, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- for(num=0;num<evt_num_responses;num++){
- offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
+ for(num=0;num<evt_num_responses;num++){
+ offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree);
- proto_tree_add_item(tree, hf_bthci_evt_page_scan_repetition_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_page_scan_repetition_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_page_scan_period_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_page_scan_period_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(tree, hf_bthci_evt_page_scan_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(tree, hf_bthci_evt_page_scan_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- offset = dissect_bthci_evt_cod(tvb, offset, pinfo, tree);
+ offset = dissect_bthci_evt_cod(tvb, offset, pinfo, tree);
- proto_tree_add_item(tree, hf_bthci_evt_clock_offset, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- }
+ proto_tree_add_item(tree, hf_bthci_evt_clock_offset, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
+ }
- return offset;
+ return offset;
}
@@ -2365,244 +2366,244 @@ dissect_bthci_evt_inq_result(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
static int
dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti;
- proto_tree *bthci_evt_tree=NULL;
- guint8 param_length, evt_code;
- int offset=0;
+ proto_item *ti;
+ proto_tree *bthci_evt_tree = NULL;
+ guint8 param_length, evt_code;
+ int offset = 0;
- if(tree){
- ti=proto_tree_add_item(tree, proto_bthci_evt, tvb, offset, -1, ENC_NA);
- bthci_evt_tree=proto_item_add_subtree(ti, ett_bthci_evt);
- }
+ if(tree){
+ ti=proto_tree_add_item(tree, proto_bthci_evt, tvb, offset, -1, ENC_NA);
+ bthci_evt_tree=proto_item_add_subtree(ti, ett_bthci_evt);
+ }
- evt_code = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(bthci_evt_tree, hf_bthci_evt_code, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_item_append_text(bthci_evt_tree, " - %s", val_to_str(evt_code, evt_code_vals, "Unknown 0x%08x"));
- offset++;
+ evt_code = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(bthci_evt_tree, hf_bthci_evt_code, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(bthci_evt_tree, " - %s", val_to_str(evt_code, evt_code_vals, "Unknown 0x%08x"));
+ offset++;
- param_length = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(bthci_evt_tree, hf_bthci_evt_param_length, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ param_length = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(bthci_evt_tree, hf_bthci_evt_param_length, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "HCI_EVT");
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "HCI_EVT");
- col_append_fstr(pinfo->cinfo, COL_INFO, " %s", val_to_str(evt_code, evt_code_vals, "Unknown 0x%08x"));
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s", val_to_str(evt_code, evt_code_vals, "Unknown 0x%08x"));
- if (param_length > 0) {
- switch(evt_code) {
- case 0x01: /* Inquiry Complete */
- offset=dissect_bthci_evt_inq_complete(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ if (param_length > 0) {
+ switch(evt_code) {
+ case 0x01: /* Inquiry Complete */
+ offset=dissect_bthci_evt_inq_complete(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x02: /* Inquiry result event */
- offset=dissect_bthci_evt_inq_result(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x02: /* Inquiry result event */
+ offset=dissect_bthci_evt_inq_result(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x03: /* Connection Complete */
- offset=dissect_bthci_evt_conn_complete(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x03: /* Connection Complete */
+ offset=dissect_bthci_evt_conn_complete(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x04: /* Connection Request */
- offset=dissect_bthci_evt_conn_request(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x04: /* Connection Request */
+ offset=dissect_bthci_evt_conn_request(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x05: /* Disconnection Complete */
- offset=dissect_bthci_evt_disconn_complete(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x05: /* Disconnection Complete */
+ offset=dissect_bthci_evt_disconn_complete(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x06: /* Authentication Complete */
- offset=dissect_bthci_evt_auth_complete(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x06: /* Authentication Complete */
+ offset=dissect_bthci_evt_auth_complete(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x07: /* Remote Name Request Complete */
- offset=dissect_bthci_evt_remote_name_req_complete(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x07: /* Remote Name Request Complete */
+ offset=dissect_bthci_evt_remote_name_req_complete(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x08: /* Encryption Change */
- offset=dissect_bthci_evt_encryption_change(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x08: /* Encryption Change */
+ offset=dissect_bthci_evt_encryption_change(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x09: /* Change Connection Link Key Complete */
- offset=dissect_bthci_evt_change_conn_link_key_complete(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x09: /* Change Connection Link Key Complete */
+ offset=dissect_bthci_evt_change_conn_link_key_complete(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x0a: /* Master Link Key Complete */
- offset=dissect_bthci_evt_master_link_key_complete(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x0a: /* Master Link Key Complete */
+ offset=dissect_bthci_evt_master_link_key_complete(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x0b: /* Read Remote Support Features Complete */
- offset=dissect_bthci_evt_read_remote_support_features_complete(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x0b: /* Read Remote Support Features Complete */
+ offset=dissect_bthci_evt_read_remote_support_features_complete(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x0c: /* Read Remote Version Information Complete */
- offset=dissect_bthci_evt_read_remote_version_information_complete(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x0c: /* Read Remote Version Information Complete */
+ offset=dissect_bthci_evt_read_remote_version_information_complete(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x0d: /* QoS Setup Complete */
- offset=dissect_bthci_evt_qos_setup_complete(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x0d: /* QoS Setup Complete */
+ offset=dissect_bthci_evt_qos_setup_complete(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x0e: /* Command Complete */
- offset=dissect_bthci_evt_command_complete(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x0e: /* Command Complete */
+ offset=dissect_bthci_evt_command_complete(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x0f: /* Command Status */
- offset=dissect_bthci_evt_command_status(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x0f: /* Command Status */
+ offset=dissect_bthci_evt_command_status(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x10: /* Hardware Error */
- offset=dissect_bthci_evt_hardware_error(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x10: /* Hardware Error */
+ offset=dissect_bthci_evt_hardware_error(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x11: /* Flush Occurred */
- offset=dissect_bthci_evt_flush_occured(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x11: /* Flush Occurred */
+ offset=dissect_bthci_evt_flush_occured(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x12: /* Role Change */
- offset=dissect_bthci_evt_role_change(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x12: /* Role Change */
+ offset=dissect_bthci_evt_role_change(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x13: /* Number Of Completed Packets */
- offset=dissect_bthci_evt_number_of_completed_packets(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x13: /* Number Of Completed Packets */
+ offset=dissect_bthci_evt_number_of_completed_packets(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x14: /* Mode Change */
- offset=dissect_bthci_evt_mode_change(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x14: /* Mode Change */
+ offset=dissect_bthci_evt_mode_change(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x15: /* Return Link Keys */
- offset=dissect_bthci_evt_return_link_keys(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x15: /* Return Link Keys */
+ offset=dissect_bthci_evt_return_link_keys(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x16: /* PIN Code Request */
- offset=dissect_bthci_evt_pin_code_request(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x16: /* PIN Code Request */
+ offset=dissect_bthci_evt_pin_code_request(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x17: /* Link Key Request */
- offset=dissect_bthci_evt_link_key_request(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x17: /* Link Key Request */
+ offset=dissect_bthci_evt_link_key_request(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x18: /* Link Key Notification */
- offset=dissect_bthci_evt_link_key_notification(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x18: /* Link Key Notification */
+ offset=dissect_bthci_evt_link_key_notification(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x19: /* Loopback Command */
- offset=dissect_bthci_evt_loopback_command(tvb, offset, pinfo, bthci_evt_tree);
- break;
-
- case 0x1a: /* Data Buffer Overflow */
- offset=dissect_bthci_evt_data_buffer_overflow(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x19: /* Loopback Command */
+ offset=dissect_bthci_evt_loopback_command(tvb, offset, pinfo, bthci_evt_tree);
+ break;
+
+ case 0x1a: /* Data Buffer Overflow */
+ offset=dissect_bthci_evt_data_buffer_overflow(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x1b: /* Max Slots Change */
- offset=dissect_bthci_evt_max_slots_change(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x1b: /* Max Slots Change */
+ offset=dissect_bthci_evt_max_slots_change(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x1c: /* Read Clock Offset Complete */
- offset=dissect_bthci_evt_read_clock_offset_complete(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x1c: /* Read Clock Offset Complete */
+ offset=dissect_bthci_evt_read_clock_offset_complete(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x1d: /* Connection Packet Type Changed */
- offset=dissect_bthci_evt_conn_packet_type_changed(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x1d: /* Connection Packet Type Changed */
+ offset=dissect_bthci_evt_conn_packet_type_changed(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x1e: /* QoS Violation */
- offset=dissect_bthci_evt_qos_violation(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x1e: /* QoS Violation */
+ offset=dissect_bthci_evt_qos_violation(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x1f: /* Page Scan Mode Change */
- offset=dissect_bthci_evt_page_scan_mode_change(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x1f: /* Page Scan Mode Change */
+ offset=dissect_bthci_evt_page_scan_mode_change(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x20: /* Page Scan Repetition Mode Change */
- offset=dissect_bthci_evt_page_scan_repetition_mode_change(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x20: /* Page Scan Repetition Mode Change */
+ offset=dissect_bthci_evt_page_scan_repetition_mode_change(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x21: /* Flow Specification Complete */
- offset=dissect_bthci_evt_flow_specification_complete(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x21: /* Flow Specification Complete */
+ offset=dissect_bthci_evt_flow_specification_complete(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x22: /* Inquiry Result with RSSI */
- offset=dissect_bthci_evt_inq_result_with_rssi(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x22: /* Inquiry Result with RSSI */
+ offset=dissect_bthci_evt_inq_result_with_rssi(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x23: /* Read Remote Extended Features Complete */
- offset=dissect_bthci_evt_read_remote_ext_features_complete(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x23: /* Read Remote Extended Features Complete */
+ offset=dissect_bthci_evt_read_remote_ext_features_complete(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x2c: /* Synchronous Connection Complete */
- offset=dissect_bthci_evt_sync_connection_complete(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x2c: /* Synchronous Connection Complete */
+ offset=dissect_bthci_evt_sync_connection_complete(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x2d: /* Synchronous Connection Changed */
- offset=dissect_bthci_evt_sync_connection_changed(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x2d: /* Synchronous Connection Changed */
+ offset=dissect_bthci_evt_sync_connection_changed(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x2e: /* Sniff Subrating */
- offset=dissect_bthci_evt_sniff_subrating(tvb, offset, pinfo, bthci_evt_tree);
- break;
+ case 0x2e: /* Sniff Subrating */
+ offset=dissect_bthci_evt_sniff_subrating(tvb, offset, pinfo, bthci_evt_tree);
+ break;
- case 0x2f: /* Extended Inquiry Result */
- offset=dissect_bthci_evt_inq_result_with_rssi(tvb, offset, pinfo, bthci_evt_tree);
- offset=dissect_bthci_evt_ext_inquiry_response(tvb, offset, pinfo, bthci_evt_tree);
- break;
-
- case 0x30: /* Encryption Key Refresh Complete */
- offset=dissect_bthci_evt_encryption_key_refresh_complete(tvb, offset, pinfo, bthci_evt_tree);
- break;
-
- case 0x31: /* IO Capability Request */
- offset=dissect_bthci_evt_io_capability_request(tvb, offset, pinfo, bthci_evt_tree);
- break;
-
- case 0x32: /* IO Capability Response */
- offset=dissect_bthci_evt_io_capability_response(tvb, offset, pinfo, bthci_evt_tree);
- break;
-
- case 0x33: /* User Confirmation Request */
- offset=dissect_bthci_evt_user_confirmation_request(tvb, offset, pinfo, bthci_evt_tree);
- break;
-
- case 0x34: /* User Passkey Request */
- offset=dissect_bthci_evt_user_passkey_request(tvb, offset, pinfo, bthci_evt_tree);
- break;
-
- case 0x35: /* Remote OOB Data Request */
- offset=dissect_bthci_evt_remote_oob_data_request(tvb, offset, pinfo, bthci_evt_tree);
- break;
-
- case 0x36: /* Simple Pairing Complete */
- offset=dissect_bthci_evt_simple_pairing_complete(tvb, offset, pinfo, bthci_evt_tree);
- break;
-
- case 0x38: /* Link Supervision Timeout Changed */
- offset=dissect_bthci_evt_link_supervision_timeout_changed(tvb, offset, pinfo, bthci_evt_tree);
- break;
-
- case 0x39: /* Enhanced Flush Complete */
- offset=dissect_bthci_evt_enhanced_flush_complete(tvb, offset, pinfo, bthci_evt_tree);
- break;
-
- case 0x3b: /* Enhanced Flush Complete */
- offset=dissect_bthci_evt_user_passkey_notification(tvb, offset, pinfo, bthci_evt_tree);
- break;
-
- case 0x3c: /* Enhanced Flush Complete */
- offset=dissect_bthci_evt_keypress_notification(tvb, offset, pinfo, bthci_evt_tree);
- break;
-
- case 0x3d: /* Remote Host Supported Features Notification */
- offset=dissect_bthci_evt_remote_host_sup_feat_notification(tvb, offset, pinfo, bthci_evt_tree);
- break;
-
- default:
- proto_tree_add_item(bthci_evt_tree, hf_bthci_evt_params, tvb, 2, -1, ENC_NA);
- offset+=tvb_length_remaining(tvb, offset);
- break;
- }
+ case 0x2f: /* Extended Inquiry Result */
+ offset=dissect_bthci_evt_inq_result_with_rssi(tvb, offset, pinfo, bthci_evt_tree);
+ offset=dissect_bthci_evt_ext_inquiry_response(tvb, offset, pinfo, bthci_evt_tree);
+ break;
+
+ case 0x30: /* Encryption Key Refresh Complete */
+ offset=dissect_bthci_evt_encryption_key_refresh_complete(tvb, offset, pinfo, bthci_evt_tree);
+ break;
+
+ case 0x31: /* IO Capability Request */
+ offset=dissect_bthci_evt_io_capability_request(tvb, offset, pinfo, bthci_evt_tree);
+ break;
+
+ case 0x32: /* IO Capability Response */
+ offset=dissect_bthci_evt_io_capability_response(tvb, offset, pinfo, bthci_evt_tree);
+ break;
+
+ case 0x33: /* User Confirmation Request */
+ offset=dissect_bthci_evt_user_confirmation_request(tvb, offset, pinfo, bthci_evt_tree);
+ break;
+
+ case 0x34: /* User Passkey Request */
+ offset=dissect_bthci_evt_user_passkey_request(tvb, offset, pinfo, bthci_evt_tree);
+ break;
+
+ case 0x35: /* Remote OOB Data Request */
+ offset=dissect_bthci_evt_remote_oob_data_request(tvb, offset, pinfo, bthci_evt_tree);
+ break;
+
+ case 0x36: /* Simple Pairing Complete */
+ offset=dissect_bthci_evt_simple_pairing_complete(tvb, offset, pinfo, bthci_evt_tree);
+ break;
+
+ case 0x38: /* Link Supervision Timeout Changed */
+ offset=dissect_bthci_evt_link_supervision_timeout_changed(tvb, offset, pinfo, bthci_evt_tree);
+ break;
+
+ case 0x39: /* Enhanced Flush Complete */
+ offset=dissect_bthci_evt_enhanced_flush_complete(tvb, offset, pinfo, bthci_evt_tree);
+ break;
+
+ case 0x3b: /* Enhanced Flush Complete */
+ offset=dissect_bthci_evt_user_passkey_notification(tvb, offset, pinfo, bthci_evt_tree);
+ break;
+
+ case 0x3c: /* Enhanced Flush Complete */
+ offset=dissect_bthci_evt_keypress_notification(tvb, offset, pinfo, bthci_evt_tree);
+ break;
+
+ case 0x3d: /* Remote Host Supported Features Notification */
+ offset=dissect_bthci_evt_remote_host_sup_feat_notification(tvb, offset, pinfo, bthci_evt_tree);
+ break;
+
+ default:
+ proto_tree_add_item(bthci_evt_tree, hf_bthci_evt_params, tvb, 2, -1, ENC_NA);
+ offset+=tvb_length_remaining(tvb, offset);
+ break;
+ }
- }
+ }
return offset;
}
@@ -2617,978 +2618,978 @@ void
proto_register_bthci_evt(void)
{
- /* Setup list of header fields See Section 1.6.1 for details*/
- static hf_register_info hf[] = {
- { &hf_bthci_evt_code,
- { "Event Code", "bthci_evt.code",
- FT_UINT8, BASE_HEX, VALS(evt_code_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_param_length,
- { "Parameter Total Length", "bthci_evt.param_length",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_params,
- { "Event Parameter", "bthci_evt.params",
- FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_num_command_packets,
- { "Number of Allowed Command Packets", "bthci_evt.num_command_packets",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_num_handles,
- { "Number of Connection Handles", "bthci_evt.num_handles",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Number of Connection Handles and Num_HCI_Data_Packets parameter pairs", HFILL }
- },
- { &hf_bthci_evt_connection_handle,
- { "Connection Handle", "bthci_evt.connection_handle",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
-
- { &hf_bthci_evt_num_compl_packets,
- { "Number of Completed Packets", "bthci_evt.num_compl_packets",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "The number of HCI Data Packets that have been completed", HFILL }
- },
-
- { &hf_bthci_evt_com_opcode,
- { "Command Opcode", "bthci_evt.com_opcode",
- FT_UINT16, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_opcode_vals_ext, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_ogf,
- { "ogf", "bthci_evt.ogf",
- FT_UINT16, BASE_HEX|BASE_EXT_STRING, &bthci_ogf_vals_ext, 0xfc00,
- "Opcode Group Field", HFILL }
- },
- { &hf_bthci_evt_ocf,
- { "ocf", "bthci_evt.ocf",
- FT_UINT16, BASE_HEX, NULL, 0x03ff,
- "Opcode Command Field", HFILL }
- },
- { &hf_bthci_evt_ret_params,
- { "Return Parameter", "bthci_evt.ret_params",
- FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_status,
- { "Status", "bthci_evt.status",
- FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_status_vals_ext, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_status_pending,
- { "Status", "bthci_evt.status",
- FT_UINT8, BASE_HEX, VALS(bthci_cmd_status_pending_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_bd_addr,
- { "BD_ADDR:", "bthci_evt.bd_addr",
- FT_NONE, BASE_NONE, NULL, 0x0,
- "Bluetooth Device Address", HFILL}
- },
- { &hf_bthci_evt_class_of_device,
- { "Class of Device", "bthci_evt.class_of_device",
- FT_UINT24, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_link_type,
- { "Link Type", "bthci_evt.link_type",
- FT_UINT8, BASE_HEX, VALS(evt_link_types), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_encryption_mode,
- { "Encryption Mode", "bthci_evt.encryption_mode",
- FT_UINT8, BASE_HEX, VALS(evt_encryption_modes), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_reason,
- { "Reason", "bthci_evt.reason",
- FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_status_vals_ext, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_remote_name,
- { "Remote Name", "bthci_evt.remote_name",
- FT_STRINGZ, BASE_NONE, NULL, 0x0,
- "Userfriendly descriptive name for the remote device", HFILL }
- },
- { &hf_bthci_evt_encryption_enable,
- { "Encryption Enable", "bthci_evt.encryption_enable",
- FT_UINT8, BASE_HEX, VALS(evt_encryption_enable), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_key_flag,
- { "Key Flag", "bthci_evt.key_flag",
- FT_UINT8, BASE_HEX, VALS(evt_key_flag), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_vers_nr,
- { "LMP Version", "bthci_evt.lmp_vers_nr",
- FT_UINT8, BASE_HEX, VALS(evt_lmp_vers_nr), 0x0,
- "Version of the Current LMP", HFILL }
- },
- { &hf_bthci_evt_hci_vers_nr,
- { "HCI Version", "bthci_evt.hci_vers_nr",
- FT_UINT8, BASE_HEX, VALS(evt_hci_vers_nr), 0x0,
- "Version of the Current HCI", HFILL }
- },
- { &hf_bthci_evt_hci_revision,
- { "HCI Revision", "bthci_evt.hci_vers_nr",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Revision of the Current HCI", HFILL }
- },
- { &hf_bthci_evt_comp_id,
- { "Manufacturer Name", "bthci_evt.comp_id",
- FT_UINT16, BASE_HEX, VALS(evt_comp_id), 0x0,
- "Manufacturer Name of Bluetooth Hardware", HFILL }
- },
- { &hf_bthci_evt_sub_vers_nr,
- { "LMP Subversion", "bthci_evt.lmp_sub_vers_nr",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Subversion of the Current LMP", HFILL }
- },
- { &hf_bthci_evt_flags,
- { "Flags", "bthci_evt.flags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_service_type,
- { "Service Type", "bthci_evt.service_type",
- FT_UINT8, BASE_HEX, VALS(evt_service_types), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_token_rate,
- { "Available Token Rate", "bthci_evt.token_rate",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Available Token Rate, in bytes per second", HFILL }
- },
- { &hf_bthci_evt_peak_bandwidth,
- { "Available Peak Bandwidth", "bthci_evt.peak_bandwidth",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Available Peak Bandwidth, in bytes per second", HFILL }
- },
- { &hf_bthci_evt_latency,
- { "Available Latency", "bthci_evt.latency",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Available Latency, in microseconds", HFILL }
- },
- { &hf_bthci_evt_delay_variation,
- { "Available Delay Variation", "bthci_evt.delay_variation",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Available Delay Variation, in microseconds", HFILL }
- },
- { &hf_bthci_evt_hardware_code,
- { "Hardware Code", "bthci_evt.hardware_code",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- "Hardware Code (implementation specific)", HFILL }
- },
- { &hf_bthci_evt_role,
- { "Role", "bthci_evt.role",
- FT_UINT8, BASE_HEX, VALS(evt_role_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_curr_mode,
- { "Current Mode", "bthci_evt.current_mode",
- FT_UINT8, BASE_HEX, VALS(evt_modes), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_interval,
- { "Interval", "bthci_evt.interval",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Interval - Number of Baseband slots", HFILL }
- },
- { &hf_bthci_evt_link_key,
- { "Link Key", "bthci_evt.link_key",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- "Link Key for the associated BD_ADDR", HFILL }
- },
- { &hf_bthci_evt_key_type,
- { "Key Type", "bthci_evt.key_type",
- FT_UINT8, BASE_HEX, VALS(evt_key_types), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_max_slots,
- { "Maximum Number of Slots", "bthci_evt.max_slots",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Maximum Number of slots allowed for baseband packets", HFILL }
- },
- { &hf_bthci_evt_clock_offset,
- { "Clock Offset", "bthci_evt.clock_offset",
- FT_UINT16, BASE_HEX, NULL, 0x7FFF,
- "Bit 2-16 of the Clock Offset between CLKmaster-CLKslave", HFILL }
- },
- { &hf_bthci_evt_page_scan_mode,
- { "Page Scan Mode", "bthci_evt.page_scan_mode",
- FT_UINT8, BASE_HEX, VALS(evt_page_scan_modes), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_page_scan_repetition_mode,
- { "Page Scan Repetition Mode", "bthci_evt.page_scan_repetition_mode",
- FT_UINT8, BASE_HEX, VALS(evt_page_scan_repetition_modes), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_page_scan_period_mode,
- { "Page Scan Period Mode", "bthci_evt.page_scan_period_mode",
- FT_UINT8, BASE_HEX, VALS(evt_page_scan_period_modes), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_link_type_2dh1,
- { "ACL Link Type 2-DH1", "bthci_evt.link_type_2dh1",
- FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0002,
- NULL, HFILL }
- },
- { &hf_bthci_evt_link_type_3dh1,
- { "ACL Link Type 3-DH1", "bthci_evt.link_type_3dh1",
- FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0004,
- NULL, HFILL }
- },
- { &hf_bthci_evt_link_type_dm1,
- { "ACL Link Type DM1", "bthci_evt.link_type_dm1",
- FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0008,
- NULL, HFILL }
- },
- { &hf_bthci_evt_link_type_dh1,
- { "ACL Link Type DH1", "bthci_evt.link_type_dh1",
- FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0010,
- NULL, HFILL }
- },
- { &hf_bthci_evt_link_type_2dh3,
- { "ACL Link Type 2-DH3", "bthci_evt.link_type_2dh3",
- FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0100,
- NULL, HFILL }
- },
- { &hf_bthci_evt_link_type_3dh3,
- { "ACL Link Type 3-DH3", "bthci_evt.link_type_3dh3",
- FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0200,
- NULL, HFILL }
- },
- { &hf_bthci_evt_link_type_dm3,
- { "ACL Link Type DM3", "bthci_evt.link_type_dm3",
- FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0400,
- NULL, HFILL }
- },
- { &hf_bthci_evt_link_type_dh3,
- { "ACL Link Type DH3", "bthci_evt.link_type_dh3",
- FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0800,
- NULL, HFILL }
- },
- { &hf_bthci_evt_link_type_2dh5,
- { "ACL Link Type 2-DH5", "bthci_evt.link_type_2dh5",
- FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x1000,
- NULL, HFILL }
- },
- { &hf_bthci_evt_link_type_3dh5,
- { "ACL Link Type 3-DH5", "bthci_evt.link_type_3dh5",
- FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x2000,
- NULL, HFILL }
- },
- { &hf_bthci_evt_link_type_dm5,
- { "ACL Link Type DM5", "bthci_evt.link_type_dm5",
- FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x4000,
- NULL, HFILL }
- },
- { &hf_bthci_evt_link_type_dh5,
- { "ACL Link Type DH5", "bthci_evt.link_type_dh5",
- FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x8000,
- NULL, HFILL }
- },
- { &hf_bthci_evt_link_type_hv1,
- { "SCO Link Type HV1", "bthci_evt.link_type_hv1",
- FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0020,
- NULL, HFILL }
- },
- { &hf_bthci_evt_link_type_hv2,
- { "SCO Link Type HV2", "bthci_evt.link_type_hv2",
- FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0040,
- NULL, HFILL }
- },
- { &hf_bthci_evt_link_type_hv3,
- { "SCO Link Type HV3", "bthci_evt.link_type_hv3",
- FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0080,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_00,
- { "3-slot packets", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x01,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_01,
- { "5-slot packets", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x02,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_02,
- { "encryption", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x04,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_03,
- { "slot offset", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x08,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_04,
- { "timing accuracy", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x10,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_05,
- { "master/slave switch", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x20,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_06,
- { "hold mode", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x40,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_07,
- { "sniff mode", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x80,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_10,
- { "park mode", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x01,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_11,
- { "RSSI", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x02,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_12,
- { "channel quality driven data rate", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x04,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_13,
- { "SCO link", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x08,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_14,
- { "HV2 packets", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x10,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_15,
- { "HV3 packets", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x20,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_16,
- { "u-law log", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x40,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_17,
- { "A-law log", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x80,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_20,
- { "CVSD", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x01,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_21,
- { "paging scheme", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x02,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_22,
- { "power control", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x04,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_23,
- { "transparent SCO data", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x08,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_24,
- { "Flow control lag", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, NULL, 0x70,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_27,
- { "broadband encryption", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x80,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_31,
- { "EDR ACL 2 Mbps mode", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x02,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_32,
- { "EDR ACL 3 Mbps mode", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x04,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_33,
- { "enhanced inquiry scan", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x08,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_34,
- { "interlaced inquiry scan", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x10,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_35,
- { "interlaced page scan", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x20,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_36,
- { "RSSI with inquiry results", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x40,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_37,
- { "eSCO EV3 packets", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x80,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_40,
- { "eSCO EV4 packets", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x01,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_41,
- { "eSCO EV5 packets", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x02,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_43,
- { "AFH capable slave", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x08,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_44,
- { "AFH classification slave", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x10,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_47,
- { "3-slot EDR ACL packets", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x80,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_50,
- { "5-slot EDR ACL packets", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x01,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_51,
- { "sniff subrating", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x02,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_52,
- { "pause encryption", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x04,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_53,
- { "AFH capable master", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x08,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_54,
- { "AFH classification master", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x10,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_55,
- { "EDR eSCO 2 Mbps mode", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x20,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_56,
- { "EDR eSCO 3 Mbps mode", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x40,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_57,
- { "3-slot EDR eSCO packets", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x80,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_60,
- { "extended inquiry response", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x01,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_63,
- { "secure simple pairing", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x08,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_64,
- { "encapsulated PDU", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x10,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_65,
- { "erroneous data reporting", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x20,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_66,
- { "non-flushable packet boundary flag", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x40,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_70,
- { "link supervision timeout changed event", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x01,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_71,
- { "inquiry response TX power level", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x02,
- NULL, HFILL }
- },
- { &hf_bthci_evt_lmp_feature_77,
- { "extended features", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x80,
- NULL, HFILL }
- },
- { &hf_bthci_evt_num_keys,
- { "Number of Link Keys", "bthci_evt.num_keys",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Number of Link Keys contained", HFILL }
- },
- { &hf_bthci_evt_num_keys_read,
- { "Number of Link Keys Read", "bthci_evt.num_keys_read",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_num_keys_deleted,
- { "Number of Link Keys Deleted", "bthci_evt.num_keys_deleted",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_num_keys_written,
- { "Number of Link Keys Written", "bthci_evt.num_keys_written",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_max_num_keys,
- { "Max Num Keys", "bthci_evt.max_num_keys",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Total Number of Link Keys that the Host Controller can store", HFILL }
- },
- { &hf_bthci_evt_num_responses,
- { "Number of responses", "bthci_evt.num_responses",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Number of Responses from Inquiry", HFILL }
- },
- { &hf_bthci_evt_link_policy_setting_switch,
- { "Enable Master Slave Switch", "bthci_evt.link_policy_switch",
- FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0001,
- NULL, HFILL }
- },
- { &hf_bthci_evt_link_policy_setting_hold,
- { "Enable Hold Mode", "bthci_evt.link_policy_hold",
- FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0002,
- NULL, HFILL }
- },
- { &hf_bthci_evt_link_policy_setting_sniff,
- { "Enable Sniff Mode", "bthci_evt.link_policy_sniff",
- FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0004,
- NULL, HFILL }
- },
- { &hf_bthci_evt_link_policy_setting_park,
- { "Enable Park Mode", "bthci_evt.link_policy_park",
- FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0008,
- NULL, HFILL }
- },
- { &hf_bthci_evt_curr_role,
- { "Current Role", "bthci_evt.curr_role",
- FT_UINT8, BASE_HEX, VALS(evt_role_vals_handle), 0x0,
- "Current role for this connection handle", HFILL }
- },
- { &hf_bthci_evt_pin_type,
- { "PIN Type", "bthci_evt.pin_type",
- FT_UINT8, BASE_HEX, VALS(evt_pin_types), 0x0,
- "PIN Types", HFILL }
- },
- { &hf_bthci_evt_device_name,
- { "Device Name", "bthci_evt.device_name",
- FT_STRINGZ, BASE_NONE, NULL, 0x0,
- "Userfriendly descriptive name for the device", HFILL }
- },
- { &hf_bthci_evt_timeout,
- { "Timeout", "bthci_evt.timeout",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Number of Baseband slots for timeout.", HFILL }
- },
- { &hf_bthci_evt_scan_enable,
- { "Scan", "bthci_evt.scan_enable",
- FT_UINT8, BASE_HEX, VALS(evt_scan_enable_values), 0x0,
- "Scan Enable", HFILL }
- },
- { &hf_bthci_evt_authentication_enable,
- { "Authentication", "bthci_evt.auth_enable",
- FT_UINT8, BASE_HEX, VALS(evt_auth_enable_values), 0x0,
- "Authentication Enable", HFILL }
- },
- { &hf_bthci_evt_sco_flow_cont_enable,
- { "SCO Flow Control", "bthci_evt.sco_flow_cont_enable",
- FT_UINT8, BASE_HEX, VALS(evt_enable_values), 0x0,
- "SCO Flow Control Enable", HFILL }
- },
- { &hf_bthci_evt_window,
- { "Interval", "bthci_evt.window",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Window", HFILL }
- },
- { &hf_bthci_evt_input_coding,
- { "Input Coding", "bthci_evt.input_coding",
- FT_UINT16, BASE_DEC, VALS(evt_input_coding_values), 0x0300,
- "Authentication Enable", HFILL }
- },
- { &hf_bthci_evt_input_data_format,
- { "Input Data Format", "bthci_evt.input_data_format",
- FT_UINT16, BASE_DEC, VALS(evt_input_data_format_values), 0x00c0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_input_sample_size,
- { "Input Sample Size", "bthci_evt.input_sample_size",
- FT_UINT16, BASE_DEC, VALS(evt_input_sample_size_values), 0x0020,
- NULL, HFILL }
- },
- { &hf_bthci_evt_num_broadcast_retransm,
- { "Num Broadcast Retran", "bthci_evt.num_broad_retran",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Number of Broadcast Retransmissions", HFILL }
- },
- { &hf_bthci_evt_hold_mode_act_page,
- { "Suspend Page Scan", "bthci_evt.hold_mode_page",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x1,
- "Device can enter low power state", HFILL }
- },
- { &hf_bthci_evt_hold_mode_act_inquiry,
- { "Suspend Inquiry Scan", "bthci_evt.hold_mode_inquiry",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x2,
- "Device can enter low power state", HFILL }
- },
- { &hf_bthci_evt_hold_mode_act_periodic,
- { "Suspend Periodic Inquiries", "bthci_evt.hold_mode_periodic",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x4,
- "Device can enter low power state", HFILL }
- },
- { &hf_bthci_evt_transmit_power_level,
- { "Transmit Power Level (dBm)", "bthci_evt.transmit_power_level",
- FT_INT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_num_supp_iac,
- {"Num Support IAC", "bthci_evt.num_supp_iac",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Num of supported IAC the device can simultaneously listen", HFILL }
- },
- { &hf_bthci_evt_num_curr_iac,
- {"Num Current IAC", "bthci_evt.num_curr_iac",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Num of IACs currently in use to simultaneously listen", HFILL }
- },
- { &hf_bthci_evt_iac_lap,
- { "IAC LAP", "bthci_evt.num_curr_iac",
- FT_UINT24, BASE_HEX, NULL, 0x0,
- "LAP(s)used to create IAC", HFILL }
- },
- { &hf_bthci_evt_loopback_mode,
- {"Loopback Mode", "bthci_evt.loopback_mode",
- FT_UINT8, BASE_HEX, VALS(evt_loopback_modes), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_country_code,
- {"Country Code", "bthci_evt.country_code",
- FT_UINT8, BASE_HEX, VALS(evt_country_code_values), 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_failed_contact_counter,
- {"Failed Contact Counter", "bthci_evt.failed_contact_counter",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_link_quality,
- {"Link Quality", "bthci_evt.link_quality",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Link Quality (0x00 - 0xFF Higher Value = Better Link)", HFILL }
- },
- { &hf_bthci_evt_rssi,
- { "RSSI (dB)", "bthci_evt.rssi",
- FT_INT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_host_data_packet_length_acl,
- {"Host ACL Data Packet Length (bytes)", "bthci_evt.max_data_length_acl",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Max Host ACL Data Packet length of data portion host is able to accept", HFILL }
- },
- { &hf_bthci_evt_host_data_packet_length_sco,
- {"Host SCO Data Packet Length (bytes)", "bthci_evt.max_data_length_sco",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Max Host SCO Data Packet length of data portion host is able to accept", HFILL }
- },
- { &hf_bthci_evt_host_total_num_acl_data_packets,
- {"Host Total Num ACL Data Packets", "bthci_evt.max_data_num_acl",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Total Number of HCI ACL Data Packets that can be stored in the data buffers of the Host", HFILL }
- },
- { &hf_bthci_evt_host_total_num_sco_data_packets,
- {"Host Total Num SCO Data Packets", "bthci_evt.max_data_num_sco",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Total Number of HCI SCO Data Packets that can be stored in the data buffers of the Host", HFILL }
- },
- { &hf_bthci_evt_page_number,
- {"Page Number", "bthci_evt.page_number",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_max_page_number,
- {"Max. Page Number", "bthci_evt.max_page_number",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_local_supported_cmds,
- { "Local Supported Commands", "bthci_evt.local_supported_cmds",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_fec_required,
- {"FEC Required", "bthci_evt.fec_required",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_err_data_reporting,
- {"Erroneous Data Reporting", "bthci_evt.err_data_reporting",
- FT_UINT8, BASE_DEC, VALS(evt_enable_values), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_scan_type,
- {"Scan Type", "bthci_evt.inq_scan_type",
- FT_UINT8, BASE_DEC, VALS(evt_scan_types), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_inq_mode,
- {"Inquiry Mode", "bthci_evt.inq_scan_type",
- FT_UINT8, BASE_DEC, VALS(evt_inq_modes), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_power_level_type,
- {"Type", "bthci_evt.power_level_type",
- FT_UINT8, BASE_HEX, VALS(evt_power_level_types), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_ext_lmp_features,
- {"Ext. LMP Features", "bthci_evt.page_number",
- FT_UINT64, BASE_HEX, NULL, 0x0,
- "Extended LMP Features", HFILL}
- },
- { &hf_bthci_evt_sync_link_type,
- {"Link Type", "bthci_evt.sync_link_type",
- FT_UINT8, BASE_HEX, VALS(evt_sync_link_types), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_sync_tx_interval,
- {"Transmit Interval", "bthci_evt.sync_tx_interval",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_sync_rtx_window,
- {"Retransmit Window", "bthci_evt.sync_rtx_window",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_sync_rx_packet_length,
- {"Rx Packet Length", "bthci_evt.sync_rx_pkt_len",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_sync_tx_packet_length,
- {"Tx Packet Length", "bthci_evt.sync_tx_pkt_len",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_air_mode,
- {"Air Mode", "bthci_evt.air_mode",
- FT_UINT8, BASE_DEC, VALS(evt_air_mode_values), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_max_tx_latency,
- {"Max. Tx Latency", "bthci_evt.max_tx_latency",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_max_rx_latency,
- {"Max. Rx Latency", "bthci_evt.max_rx_latency",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_min_remote_timeout,
- {"Min. Remote Timeout", "bthci_evt.min_remote_timeout",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_min_local_timeout,
- {"Min. Local Timeout", "bthci_evt.min_local_timeout",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_link_supervision_timeout,
- {"Link Supervision Timeout", "bthci_evt.link_supervision_timeout",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_token_bucket_size,
- { "Token Bucket Size", "bthci_evt.token_bucket_size",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Token Bucket Size (bytes)", HFILL }
- },
- { &hf_bthci_evt_flow_direction,
- {"Flow Direction", "bthci_evt.flow_direction",
- FT_UINT8, BASE_DEC, VALS(evt_flow_direction_values), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_afh_ch_assessment_mode,
- {"AFH Channel Assessment Mode", "bthci_evt.afh_ch_assessment_mode",
- FT_UINT8, BASE_DEC, VALS(evt_enable_values), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_lmp_handle,
- { "LMP Handle", "bthci_evt.lmp_handle",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_clock,
- { "Clock", "bthci_evt.clock",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_clock_accuracy,
- { "Clock", "bthci_evt.clock_accuracy",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bthci_evt_afh_mode,
- {"AFH Mode", "bthci_evt.afh_mode",
- FT_UINT8, BASE_DEC, VALS(evt_enable_values), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_afh_channel_map,
- {"AFH Channel Map", "bthci_evt.afh_channel_map",
- FT_UINT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_simple_pairing_mode,
- {"Simple Pairing Mode", "bthci_evt.simple_pairing_mode",
- FT_UINT8, BASE_DEC, VALS(evt_enable_values), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_hash_c,
- {"Hash C", "bthci_evt.hash_c",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_randomizer_r,
- {"Randomizer R", "bthci_evt.randomizer_r",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_io_capability,
- {"IO Capability", "bthci_evt.io_capability",
- FT_UINT8, BASE_HEX, VALS(bthci_cmd_io_capability_vals), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_oob_data_present,
- {"OOB Data Present", "bthci_evt.oob_data_present",
- FT_UINT8, BASE_DEC, VALS(bthci_cmd_oob_data_present_vals), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_auth_requirements,
- {"Authentication Requirements", "bthci_evt.auth_requirements",
- FT_UINT8, BASE_DEC|BASE_EXT_STRING, &bthci_cmd_auth_req_vals_ext, 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_numeric_value,
- {"Numeric Value", "bthci_evt.numeric_value",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_passkey,
- {"Passkey", "bthci_evt.passkey",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_notification_type,
- {"Notification Type", "bthci_evt.notification_type",
- FT_UINT8, BASE_DEC, VALS(evt_notification_type_vals), 0x0,
- NULL, HFILL}
- },
- { &hf_bthci_evt_eir_data,
- {"Data", "bthci_evt.eir_data",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- "EIR Data", HFILL}
- },
- { &hf_bthci_evt_eir_struct_length,
- { "Length", "bthci_evt.eir_struct_length",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Structure Length", HFILL }
- },
- { &hf_bthci_evt_eir_struct_type,
- { "Type", "bthci_evt.eir_data_type",
- FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_eir_data_type_vals_ext, 0x0,
- "Data Type", HFILL }
- },
- { &hf_bthci_evt_sc_uuid16,
- { "UUID", "bthci_evt.service_class_uuid16",
- FT_UINT16, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_service_class_type_vals_ext, 0x0,
- "16-bit Service Class UUID", HFILL }
- },
- { &hf_bthci_evt_sc_uuid32,
- { "UUID", "bthci_evt.service_class_uuid32",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- "32-bit Service Class UUID", HFILL }
- },
- { &hf_bthci_evt_sc_uuid128,
- { "UUID", "bthci_evt.service_class_uuid128",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- "128-bit Service Class UUID", HFILL }
- }
- };
-
- /* Setup protocol subtree array */
- static gint *ett[] = {
- &ett_bthci_evt,
- &ett_opcode,
- &ett_lmp_subtree,
- &ett_ptype_subtree,
- &ett_eir_subtree,
- &ett_eir_struct_subtree
- };
-
- /* Register the protocol name and description */
- proto_bthci_evt = proto_register_protocol("Bluetooth HCI Event",
- "HCI_EVT", "bthci_evt");
-
- new_register_dissector("bthci_evt", dissect_bthci_evt, proto_bthci_evt);
-
-
-
- /* Required function calls to register the header fields and subtrees used */
- proto_register_field_array(proto_bthci_evt, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ /* Setup list of header fields See Section 1.6.1 for details*/
+ static hf_register_info hf[] = {
+ { &hf_bthci_evt_code,
+ { "Event Code", "bthci_evt.code",
+ FT_UINT8, BASE_HEX, VALS(evt_code_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_param_length,
+ { "Parameter Total Length", "bthci_evt.param_length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_params,
+ { "Event Parameter", "bthci_evt.params",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_num_command_packets,
+ { "Number of Allowed Command Packets", "bthci_evt.num_command_packets",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_num_handles,
+ { "Number of Connection Handles", "bthci_evt.num_handles",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Number of Connection Handles and Num_HCI_Data_Packets parameter pairs", HFILL }
+ },
+ { &hf_bthci_evt_connection_handle,
+ { "Connection Handle", "bthci_evt.connection_handle",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+
+ { &hf_bthci_evt_num_compl_packets,
+ { "Number of Completed Packets", "bthci_evt.num_compl_packets",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "The number of HCI Data Packets that have been completed", HFILL }
+ },
+
+ { &hf_bthci_evt_com_opcode,
+ { "Command Opcode", "bthci_evt.com_opcode",
+ FT_UINT16, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_opcode_vals_ext, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_ogf,
+ { "ogf", "bthci_evt.ogf",
+ FT_UINT16, BASE_HEX|BASE_EXT_STRING, &bthci_ogf_vals_ext, 0xfc00,
+ "Opcode Group Field", HFILL }
+ },
+ { &hf_bthci_evt_ocf,
+ { "ocf", "bthci_evt.ocf",
+ FT_UINT16, BASE_HEX, NULL, 0x03ff,
+ "Opcode Command Field", HFILL }
+ },
+ { &hf_bthci_evt_ret_params,
+ { "Return Parameter", "bthci_evt.ret_params",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_status,
+ { "Status", "bthci_evt.status",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_status_vals_ext, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_status_pending,
+ { "Status", "bthci_evt.status",
+ FT_UINT8, BASE_HEX, VALS(bthci_cmd_status_pending_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_bd_addr,
+ { "BD_ADDR:", "bthci_evt.bd_addr",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ "Bluetooth Device Address", HFILL}
+ },
+ { &hf_bthci_evt_class_of_device,
+ { "Class of Device", "bthci_evt.class_of_device",
+ FT_UINT24, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_link_type,
+ { "Link Type", "bthci_evt.link_type",
+ FT_UINT8, BASE_HEX, VALS(evt_link_types), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_encryption_mode,
+ { "Encryption Mode", "bthci_evt.encryption_mode",
+ FT_UINT8, BASE_HEX, VALS(evt_encryption_modes), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_reason,
+ { "Reason", "bthci_evt.reason",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_status_vals_ext, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_remote_name,
+ { "Remote Name", "bthci_evt.remote_name",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Userfriendly descriptive name for the remote device", HFILL }
+ },
+ { &hf_bthci_evt_encryption_enable,
+ { "Encryption Enable", "bthci_evt.encryption_enable",
+ FT_UINT8, BASE_HEX, VALS(evt_encryption_enable), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_key_flag,
+ { "Key Flag", "bthci_evt.key_flag",
+ FT_UINT8, BASE_HEX, VALS(evt_key_flag), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_vers_nr,
+ { "LMP Version", "bthci_evt.lmp_vers_nr",
+ FT_UINT8, BASE_HEX, VALS(evt_lmp_vers_nr), 0x0,
+ "Version of the Current LMP", HFILL }
+ },
+ { &hf_bthci_evt_hci_vers_nr,
+ { "HCI Version", "bthci_evt.hci_vers_nr",
+ FT_UINT8, BASE_HEX, VALS(evt_hci_vers_nr), 0x0,
+ "Version of the Current HCI", HFILL }
+ },
+ { &hf_bthci_evt_hci_revision,
+ { "HCI Revision", "bthci_evt.hci_vers_nr",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Revision of the Current HCI", HFILL }
+ },
+ { &hf_bthci_evt_comp_id,
+ { "Manufacturer Name", "bthci_evt.comp_id",
+ FT_UINT16, BASE_HEX, VALS(evt_comp_id), 0x0,
+ "Manufacturer Name of Bluetooth Hardware", HFILL }
+ },
+ { &hf_bthci_evt_sub_vers_nr,
+ { "LMP Subversion", "bthci_evt.lmp_sub_vers_nr",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Subversion of the Current LMP", HFILL }
+ },
+ { &hf_bthci_evt_flags,
+ { "Flags", "bthci_evt.flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_service_type,
+ { "Service Type", "bthci_evt.service_type",
+ FT_UINT8, BASE_HEX, VALS(evt_service_types), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_token_rate,
+ { "Available Token Rate", "bthci_evt.token_rate",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Available Token Rate, in bytes per second", HFILL }
+ },
+ { &hf_bthci_evt_peak_bandwidth,
+ { "Available Peak Bandwidth", "bthci_evt.peak_bandwidth",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Available Peak Bandwidth, in bytes per second", HFILL }
+ },
+ { &hf_bthci_evt_latency,
+ { "Available Latency", "bthci_evt.latency",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Available Latency, in microseconds", HFILL }
+ },
+ { &hf_bthci_evt_delay_variation,
+ { "Available Delay Variation", "bthci_evt.delay_variation",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Available Delay Variation, in microseconds", HFILL }
+ },
+ { &hf_bthci_evt_hardware_code,
+ { "Hardware Code", "bthci_evt.hardware_code",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ "Hardware Code (implementation specific)", HFILL }
+ },
+ { &hf_bthci_evt_role,
+ { "Role", "bthci_evt.role",
+ FT_UINT8, BASE_HEX, VALS(evt_role_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_curr_mode,
+ { "Current Mode", "bthci_evt.current_mode",
+ FT_UINT8, BASE_HEX, VALS(evt_modes), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_interval,
+ { "Interval", "bthci_evt.interval",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Interval - Number of Baseband slots", HFILL }
+ },
+ { &hf_bthci_evt_link_key,
+ { "Link Key", "bthci_evt.link_key",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Link Key for the associated BD_ADDR", HFILL }
+ },
+ { &hf_bthci_evt_key_type,
+ { "Key Type", "bthci_evt.key_type",
+ FT_UINT8, BASE_HEX, VALS(evt_key_types), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_max_slots,
+ { "Maximum Number of Slots", "bthci_evt.max_slots",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Maximum Number of slots allowed for baseband packets", HFILL }
+ },
+ { &hf_bthci_evt_clock_offset,
+ { "Clock Offset", "bthci_evt.clock_offset",
+ FT_UINT16, BASE_HEX, NULL, 0x7FFF,
+ "Bit 2-16 of the Clock Offset between CLKmaster-CLKslave", HFILL }
+ },
+ { &hf_bthci_evt_page_scan_mode,
+ { "Page Scan Mode", "bthci_evt.page_scan_mode",
+ FT_UINT8, BASE_HEX, VALS(evt_page_scan_modes), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_page_scan_repetition_mode,
+ { "Page Scan Repetition Mode", "bthci_evt.page_scan_repetition_mode",
+ FT_UINT8, BASE_HEX, VALS(evt_page_scan_repetition_modes), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_page_scan_period_mode,
+ { "Page Scan Period Mode", "bthci_evt.page_scan_period_mode",
+ FT_UINT8, BASE_HEX, VALS(evt_page_scan_period_modes), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_link_type_2dh1,
+ { "ACL Link Type 2-DH1", "bthci_evt.link_type_2dh1",
+ FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0002,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_link_type_3dh1,
+ { "ACL Link Type 3-DH1", "bthci_evt.link_type_3dh1",
+ FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0004,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_link_type_dm1,
+ { "ACL Link Type DM1", "bthci_evt.link_type_dm1",
+ FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0008,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_link_type_dh1,
+ { "ACL Link Type DH1", "bthci_evt.link_type_dh1",
+ FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0010,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_link_type_2dh3,
+ { "ACL Link Type 2-DH3", "bthci_evt.link_type_2dh3",
+ FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0100,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_link_type_3dh3,
+ { "ACL Link Type 3-DH3", "bthci_evt.link_type_3dh3",
+ FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0200,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_link_type_dm3,
+ { "ACL Link Type DM3", "bthci_evt.link_type_dm3",
+ FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0400,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_link_type_dh3,
+ { "ACL Link Type DH3", "bthci_evt.link_type_dh3",
+ FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0800,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_link_type_2dh5,
+ { "ACL Link Type 2-DH5", "bthci_evt.link_type_2dh5",
+ FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x1000,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_link_type_3dh5,
+ { "ACL Link Type 3-DH5", "bthci_evt.link_type_3dh5",
+ FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x2000,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_link_type_dm5,
+ { "ACL Link Type DM5", "bthci_evt.link_type_dm5",
+ FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x4000,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_link_type_dh5,
+ { "ACL Link Type DH5", "bthci_evt.link_type_dh5",
+ FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x8000,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_link_type_hv1,
+ { "SCO Link Type HV1", "bthci_evt.link_type_hv1",
+ FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0020,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_link_type_hv2,
+ { "SCO Link Type HV2", "bthci_evt.link_type_hv2",
+ FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0040,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_link_type_hv3,
+ { "SCO Link Type HV3", "bthci_evt.link_type_hv3",
+ FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0080,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_00,
+ { "3-slot packets", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_01,
+ { "5-slot packets", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_02,
+ { "encryption", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_03,
+ { "slot offset", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_04,
+ { "timing accuracy", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_05,
+ { "master/slave switch", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_06,
+ { "hold mode", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_07,
+ { "sniff mode", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_10,
+ { "park mode", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_11,
+ { "RSSI", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_12,
+ { "channel quality driven data rate", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_13,
+ { "SCO link", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_14,
+ { "HV2 packets", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_15,
+ { "HV3 packets", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_16,
+ { "u-law log", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_17,
+ { "A-law log", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_20,
+ { "CVSD", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_21,
+ { "paging scheme", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_22,
+ { "power control", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_23,
+ { "transparent SCO data", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_24,
+ { "Flow control lag", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, NULL, 0x70,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_27,
+ { "broadband encryption", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_31,
+ { "EDR ACL 2 Mbps mode", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_32,
+ { "EDR ACL 3 Mbps mode", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_33,
+ { "enhanced inquiry scan", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_34,
+ { "interlaced inquiry scan", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_35,
+ { "interlaced page scan", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_36,
+ { "RSSI with inquiry results", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_37,
+ { "eSCO EV3 packets", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_40,
+ { "eSCO EV4 packets", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_41,
+ { "eSCO EV5 packets", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_43,
+ { "AFH capable slave", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_44,
+ { "AFH classification slave", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_47,
+ { "3-slot EDR ACL packets", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_50,
+ { "5-slot EDR ACL packets", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_51,
+ { "sniff subrating", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_52,
+ { "pause encryption", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_53,
+ { "AFH capable master", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_54,
+ { "AFH classification master", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_55,
+ { "EDR eSCO 2 Mbps mode", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_56,
+ { "EDR eSCO 3 Mbps mode", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_57,
+ { "3-slot EDR eSCO packets", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_60,
+ { "extended inquiry response", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_63,
+ { "secure simple pairing", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_64,
+ { "encapsulated PDU", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_65,
+ { "erroneous data reporting", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_66,
+ { "non-flushable packet boundary flag", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_70,
+ { "link supervision timeout changed event", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_71,
+ { "inquiry response TX power level", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_lmp_feature_77,
+ { "extended features", "bthci_evt.lmp_feature",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_num_keys,
+ { "Number of Link Keys", "bthci_evt.num_keys",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Number of Link Keys contained", HFILL }
+ },
+ { &hf_bthci_evt_num_keys_read,
+ { "Number of Link Keys Read", "bthci_evt.num_keys_read",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_num_keys_deleted,
+ { "Number of Link Keys Deleted", "bthci_evt.num_keys_deleted",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_num_keys_written,
+ { "Number of Link Keys Written", "bthci_evt.num_keys_written",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_max_num_keys,
+ { "Max Num Keys", "bthci_evt.max_num_keys",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Total Number of Link Keys that the Host Controller can store", HFILL }
+ },
+ { &hf_bthci_evt_num_responses,
+ { "Number of responses", "bthci_evt.num_responses",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Number of Responses from Inquiry", HFILL }
+ },
+ { &hf_bthci_evt_link_policy_setting_switch,
+ { "Enable Master Slave Switch", "bthci_evt.link_policy_switch",
+ FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0001,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_link_policy_setting_hold,
+ { "Enable Hold Mode", "bthci_evt.link_policy_hold",
+ FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0002,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_link_policy_setting_sniff,
+ { "Enable Sniff Mode", "bthci_evt.link_policy_sniff",
+ FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0004,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_link_policy_setting_park,
+ { "Enable Park Mode", "bthci_evt.link_policy_park",
+ FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0008,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_curr_role,
+ { "Current Role", "bthci_evt.curr_role",
+ FT_UINT8, BASE_HEX, VALS(evt_role_vals_handle), 0x0,
+ "Current role for this connection handle", HFILL }
+ },
+ { &hf_bthci_evt_pin_type,
+ { "PIN Type", "bthci_evt.pin_type",
+ FT_UINT8, BASE_HEX, VALS(evt_pin_types), 0x0,
+ "PIN Types", HFILL }
+ },
+ { &hf_bthci_evt_device_name,
+ { "Device Name", "bthci_evt.device_name",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ "Userfriendly descriptive name for the device", HFILL }
+ },
+ { &hf_bthci_evt_timeout,
+ { "Timeout", "bthci_evt.timeout",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Number of Baseband slots for timeout.", HFILL }
+ },
+ { &hf_bthci_evt_scan_enable,
+ { "Scan", "bthci_evt.scan_enable",
+ FT_UINT8, BASE_HEX, VALS(evt_scan_enable_values), 0x0,
+ "Scan Enable", HFILL }
+ },
+ { &hf_bthci_evt_authentication_enable,
+ { "Authentication", "bthci_evt.auth_enable",
+ FT_UINT8, BASE_HEX, VALS(evt_auth_enable_values), 0x0,
+ "Authentication Enable", HFILL }
+ },
+ { &hf_bthci_evt_sco_flow_cont_enable,
+ { "SCO Flow Control", "bthci_evt.sco_flow_cont_enable",
+ FT_UINT8, BASE_HEX, VALS(evt_enable_values), 0x0,
+ "SCO Flow Control Enable", HFILL }
+ },
+ { &hf_bthci_evt_window,
+ { "Interval", "bthci_evt.window",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Window", HFILL }
+ },
+ { &hf_bthci_evt_input_coding,
+ { "Input Coding", "bthci_evt.input_coding",
+ FT_UINT16, BASE_DEC, VALS(evt_input_coding_values), 0x0300,
+ "Authentication Enable", HFILL }
+ },
+ { &hf_bthci_evt_input_data_format,
+ { "Input Data Format", "bthci_evt.input_data_format",
+ FT_UINT16, BASE_DEC, VALS(evt_input_data_format_values), 0x00c0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_input_sample_size,
+ { "Input Sample Size", "bthci_evt.input_sample_size",
+ FT_UINT16, BASE_DEC, VALS(evt_input_sample_size_values), 0x0020,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_num_broadcast_retransm,
+ { "Num Broadcast Retran", "bthci_evt.num_broad_retran",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Number of Broadcast Retransmissions", HFILL }
+ },
+ { &hf_bthci_evt_hold_mode_act_page,
+ { "Suspend Page Scan", "bthci_evt.hold_mode_page",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x1,
+ "Device can enter low power state", HFILL }
+ },
+ { &hf_bthci_evt_hold_mode_act_inquiry,
+ { "Suspend Inquiry Scan", "bthci_evt.hold_mode_inquiry",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x2,
+ "Device can enter low power state", HFILL }
+ },
+ { &hf_bthci_evt_hold_mode_act_periodic,
+ { "Suspend Periodic Inquiries", "bthci_evt.hold_mode_periodic",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x4,
+ "Device can enter low power state", HFILL }
+ },
+ { &hf_bthci_evt_transmit_power_level,
+ { "Transmit Power Level (dBm)", "bthci_evt.transmit_power_level",
+ FT_INT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_num_supp_iac,
+ {"Num Support IAC", "bthci_evt.num_supp_iac",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Num of supported IAC the device can simultaneously listen", HFILL }
+ },
+ { &hf_bthci_evt_num_curr_iac,
+ {"Num Current IAC", "bthci_evt.num_curr_iac",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Num of IACs currently in use to simultaneously listen", HFILL }
+ },
+ { &hf_bthci_evt_iac_lap,
+ { "IAC LAP", "bthci_evt.num_curr_iac",
+ FT_UINT24, BASE_HEX, NULL, 0x0,
+ "LAP(s)used to create IAC", HFILL }
+ },
+ { &hf_bthci_evt_loopback_mode,
+ {"Loopback Mode", "bthci_evt.loopback_mode",
+ FT_UINT8, BASE_HEX, VALS(evt_loopback_modes), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_country_code,
+ {"Country Code", "bthci_evt.country_code",
+ FT_UINT8, BASE_HEX, VALS(evt_country_code_values), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_failed_contact_counter,
+ {"Failed Contact Counter", "bthci_evt.failed_contact_counter",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_link_quality,
+ {"Link Quality", "bthci_evt.link_quality",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Link Quality (0x00 - 0xFF Higher Value = Better Link)", HFILL }
+ },
+ { &hf_bthci_evt_rssi,
+ { "RSSI (dB)", "bthci_evt.rssi",
+ FT_INT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_host_data_packet_length_acl,
+ {"Host ACL Data Packet Length (bytes)", "bthci_evt.max_data_length_acl",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Max Host ACL Data Packet length of data portion host is able to accept", HFILL }
+ },
+ { &hf_bthci_evt_host_data_packet_length_sco,
+ {"Host SCO Data Packet Length (bytes)", "bthci_evt.max_data_length_sco",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Max Host SCO Data Packet length of data portion host is able to accept", HFILL }
+ },
+ { &hf_bthci_evt_host_total_num_acl_data_packets,
+ {"Host Total Num ACL Data Packets", "bthci_evt.max_data_num_acl",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Total Number of HCI ACL Data Packets that can be stored in the data buffers of the Host", HFILL }
+ },
+ { &hf_bthci_evt_host_total_num_sco_data_packets,
+ {"Host Total Num SCO Data Packets", "bthci_evt.max_data_num_sco",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Total Number of HCI SCO Data Packets that can be stored in the data buffers of the Host", HFILL }
+ },
+ { &hf_bthci_evt_page_number,
+ {"Page Number", "bthci_evt.page_number",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_max_page_number,
+ {"Max. Page Number", "bthci_evt.max_page_number",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_local_supported_cmds,
+ { "Local Supported Commands", "bthci_evt.local_supported_cmds",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_fec_required,
+ {"FEC Required", "bthci_evt.fec_required",
+ FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_err_data_reporting,
+ {"Erroneous Data Reporting", "bthci_evt.err_data_reporting",
+ FT_UINT8, BASE_DEC, VALS(evt_enable_values), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_scan_type,
+ {"Scan Type", "bthci_evt.inq_scan_type",
+ FT_UINT8, BASE_DEC, VALS(evt_scan_types), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_inq_mode,
+ {"Inquiry Mode", "bthci_evt.inq_scan_type",
+ FT_UINT8, BASE_DEC, VALS(evt_inq_modes), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_power_level_type,
+ {"Type", "bthci_evt.power_level_type",
+ FT_UINT8, BASE_HEX, VALS(evt_power_level_types), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_ext_lmp_features,
+ {"Ext. LMP Features", "bthci_evt.page_number",
+ FT_UINT64, BASE_HEX, NULL, 0x0,
+ "Extended LMP Features", HFILL}
+ },
+ { &hf_bthci_evt_sync_link_type,
+ {"Link Type", "bthci_evt.sync_link_type",
+ FT_UINT8, BASE_HEX, VALS(evt_sync_link_types), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_sync_tx_interval,
+ {"Transmit Interval", "bthci_evt.sync_tx_interval",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_sync_rtx_window,
+ {"Retransmit Window", "bthci_evt.sync_rtx_window",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_sync_rx_packet_length,
+ {"Rx Packet Length", "bthci_evt.sync_rx_pkt_len",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_sync_tx_packet_length,
+ {"Tx Packet Length", "bthci_evt.sync_tx_pkt_len",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_air_mode,
+ {"Air Mode", "bthci_evt.air_mode",
+ FT_UINT8, BASE_DEC, VALS(evt_air_mode_values), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_max_tx_latency,
+ {"Max. Tx Latency", "bthci_evt.max_tx_latency",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_max_rx_latency,
+ {"Max. Rx Latency", "bthci_evt.max_rx_latency",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_min_remote_timeout,
+ {"Min. Remote Timeout", "bthci_evt.min_remote_timeout",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_min_local_timeout,
+ {"Min. Local Timeout", "bthci_evt.min_local_timeout",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_link_supervision_timeout,
+ {"Link Supervision Timeout", "bthci_evt.link_supervision_timeout",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_token_bucket_size,
+ { "Token Bucket Size", "bthci_evt.token_bucket_size",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Token Bucket Size (bytes)", HFILL }
+ },
+ { &hf_bthci_evt_flow_direction,
+ {"Flow Direction", "bthci_evt.flow_direction",
+ FT_UINT8, BASE_DEC, VALS(evt_flow_direction_values), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_afh_ch_assessment_mode,
+ {"AFH Channel Assessment Mode", "bthci_evt.afh_ch_assessment_mode",
+ FT_UINT8, BASE_DEC, VALS(evt_enable_values), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_lmp_handle,
+ { "LMP Handle", "bthci_evt.lmp_handle",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_clock,
+ { "Clock", "bthci_evt.clock",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_clock_accuracy,
+ { "Clock", "bthci_evt.clock_accuracy",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bthci_evt_afh_mode,
+ {"AFH Mode", "bthci_evt.afh_mode",
+ FT_UINT8, BASE_DEC, VALS(evt_enable_values), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_afh_channel_map,
+ {"AFH Channel Map", "bthci_evt.afh_channel_map",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_simple_pairing_mode,
+ {"Simple Pairing Mode", "bthci_evt.simple_pairing_mode",
+ FT_UINT8, BASE_DEC, VALS(evt_enable_values), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_hash_c,
+ {"Hash C", "bthci_evt.hash_c",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_randomizer_r,
+ {"Randomizer R", "bthci_evt.randomizer_r",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_io_capability,
+ {"IO Capability", "bthci_evt.io_capability",
+ FT_UINT8, BASE_HEX, VALS(bthci_cmd_io_capability_vals), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_oob_data_present,
+ {"OOB Data Present", "bthci_evt.oob_data_present",
+ FT_UINT8, BASE_DEC, VALS(bthci_cmd_oob_data_present_vals), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_auth_requirements,
+ {"Authentication Requirements", "bthci_evt.auth_requirements",
+ FT_UINT8, BASE_DEC|BASE_EXT_STRING, &bthci_cmd_auth_req_vals_ext, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_numeric_value,
+ {"Numeric Value", "bthci_evt.numeric_value",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_passkey,
+ {"Passkey", "bthci_evt.passkey",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_notification_type,
+ {"Notification Type", "bthci_evt.notification_type",
+ FT_UINT8, BASE_DEC, VALS(evt_notification_type_vals), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_bthci_evt_eir_data,
+ {"Data", "bthci_evt.eir_data",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "EIR Data", HFILL}
+ },
+ { &hf_bthci_evt_eir_struct_length,
+ { "Length", "bthci_evt.eir_struct_length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Structure Length", HFILL }
+ },
+ { &hf_bthci_evt_eir_struct_type,
+ { "Type", "bthci_evt.eir_data_type",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_eir_data_type_vals_ext, 0x0,
+ "Data Type", HFILL }
+ },
+ { &hf_bthci_evt_sc_uuid16,
+ { "UUID", "bthci_evt.service_class_uuid16",
+ FT_UINT16, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_service_class_type_vals_ext, 0x0,
+ "16-bit Service Class UUID", HFILL }
+ },
+ { &hf_bthci_evt_sc_uuid32,
+ { "UUID", "bthci_evt.service_class_uuid32",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "32-bit Service Class UUID", HFILL }
+ },
+ { &hf_bthci_evt_sc_uuid128,
+ { "UUID", "bthci_evt.service_class_uuid128",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "128-bit Service Class UUID", HFILL }
+ }
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_bthci_evt,
+ &ett_opcode,
+ &ett_lmp_subtree,
+ &ett_ptype_subtree,
+ &ett_eir_subtree,
+ &ett_eir_struct_subtree
+ };
+
+ /* Register the protocol name and description */
+ proto_bthci_evt = proto_register_protocol("Bluetooth HCI Event",
+ "HCI_EVT", "bthci_evt");
+
+ new_register_dissector("bthci_evt", dissect_bthci_evt, proto_bthci_evt);
+
+
+
+ /* Required function calls to register the header fields and subtrees used */
+ proto_register_field_array(proto_bthci_evt, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
@@ -3599,13 +3600,13 @@ proto_register_bthci_evt(void)
void
proto_reg_handoff_bthci_evt(void)
{
- dissector_handle_t bthci_evt_handle;
+ dissector_handle_t bthci_evt_handle;
- bthci_evt_handle = find_dissector("bthci_evt");
- dissector_add_uint("hci_h4.type", HCI_H4_TYPE_EVT, bthci_evt_handle);
- dissector_add_uint("hci_h1.type", BTHCI_CHANNEL_EVENT, bthci_evt_handle);
+ bthci_evt_handle = find_dissector("bthci_evt");
+ dissector_add_uint("hci_h4.type", HCI_H4_TYPE_EVT, bthci_evt_handle);
+ dissector_add_uint("hci_h1.type", BTHCI_CHANNEL_EVENT, bthci_evt_handle);
- bthci_com_handle = find_dissector("bthci_cmd");
+ bthci_com_handle = find_dissector("bthci_cmd");
}
diff --git a/epan/dissectors/packet-bthci_sco.c b/epan/dissectors/packet-bthci_sco.c
index 9072ff88f7..ea0438e503 100644
--- a/epan/dissectors/packet-bthci_sco.c
+++ b/epan/dissectors/packet-bthci_sco.c
@@ -49,68 +49,68 @@ static gint ett_btsco = -1;
static void
dissect_btsco(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_item *ti;
- proto_tree *btsco_tree;
- int offset=0;
+ proto_item *ti;
+ proto_tree *btsco_tree;
+ int offset = 0;
- ti = proto_tree_add_item(tree, proto_btsco, tvb, offset, -1, ENC_NA);
- btsco_tree = proto_item_add_subtree(ti, ett_btsco);
+ ti = proto_tree_add_item(tree, proto_btsco, tvb, offset, -1, ENC_NA);
+ btsco_tree = proto_item_add_subtree(ti, ett_btsco);
- proto_tree_add_item(btsco_tree, hf_btsco_chandle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(btsco_tree, hf_btsco_chandle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset+=2;
- proto_tree_add_item(btsco_tree, hf_btsco_length, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(btsco_tree, hf_btsco_length, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(btsco_tree, hf_btsco_data, tvb, offset, -1, ENC_NA);
+ proto_tree_add_item(btsco_tree, hf_btsco_data, tvb, offset, -1, ENC_NA);
}
void
proto_register_btsco(void)
{
- static hf_register_info hf[] = {
- { &hf_btsco_chandle,
- { "Connection Handle", "bthci_sco.chandle",
- FT_UINT16, BASE_HEX, NULL, 0x0FFF,
- NULL, HFILL }
- },
- { &hf_btsco_length,
- { "Data Total Length", "bthci_sco.length",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_btsco_data,
- { "Data", "bthci_sco.data",
- FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- };
-
- /* Setup protocol subtree array */
- static gint *ett[] = {
- &ett_btsco,
- };
-
- /* Register the protocol name and description */
- proto_btsco = proto_register_protocol("Bluetooth HCI SCO Packet", "HCI_SCO", "bthci_sco");
- register_dissector("bthci_sco", dissect_btsco, proto_btsco);
-
- /* Required function calls to register the header fields and subtrees used */
- proto_register_field_array(proto_btsco, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ static hf_register_info hf[] = {
+ { &hf_btsco_chandle,
+ { "Connection Handle", "bthci_sco.chandle",
+ FT_UINT16, BASE_HEX, NULL, 0x0FFF,
+ NULL, HFILL }
+ },
+ { &hf_btsco_length,
+ { "Data Total Length", "bthci_sco.length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_btsco_data,
+ { "Data", "bthci_sco.data",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_btsco,
+ };
+
+ /* Register the protocol name and description */
+ proto_btsco = proto_register_protocol("Bluetooth HCI SCO Packet", "HCI_SCO", "bthci_sco");
+ register_dissector("bthci_sco", dissect_btsco, proto_btsco);
+
+ /* Required function calls to register the header fields and subtrees used */
+ proto_register_field_array(proto_btsco, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_btsco(void)
{
- dissector_handle_t bthci_sco_handle;
+ dissector_handle_t bthci_sco_handle;
- bthci_sco_handle = find_dissector("bthci_sco");
- dissector_add_uint("hci_h4.type", HCI_H4_TYPE_SCO, bthci_sco_handle);
- dissector_add_uint("hci_h1.type", BTHCI_CHANNEL_SCO, bthci_sco_handle);
+ bthci_sco_handle = find_dissector("bthci_sco");
+ dissector_add_uint("hci_h4.type", HCI_H4_TYPE_SCO, bthci_sco_handle);
+ dissector_add_uint("hci_h1.type", BTHCI_CHANNEL_SCO, bthci_sco_handle);
}
diff --git a/epan/dissectors/packet-btl2cap.c b/epan/dissectors/packet-btl2cap.c
index dba143cbf8..f01827a03a 100644
--- a/epan/dissectors/packet-btl2cap.c
+++ b/epan/dissectors/packet-btl2cap.c
@@ -140,449 +140,452 @@ static dissector_table_t l2cap_service_dissector_table;
/* This table maps cid values to psm values.
* The same table is used both for SCID and DCID.
- * For received CIDs we mask the cid with 0x8000 in this table
+ * For received CIDs we 'or' the cid with 0x8000 in this table
* Table is indexed by array: CID and frame number which created CID
*/
-static emem_tree_t *cid_to_psm_table = NULL;
+static emem_tree_t *cid_to_psm_table = NULL;
static emem_tree_t *psm_to_service_table = NULL;
typedef struct _config_data_t {
- guint8 mode;
- guint8 txwindow;
- emem_tree_t *start_fragments; /* indexed by pinfo->fd->num */
+ guint8 mode;
+ guint8 txwindow;
+ emem_tree_t *start_fragments; /* indexed by pinfo->fd->num */
} config_data_t;
+
typedef struct _psm_data_t {
- guint16 scid;
- guint16 dcid;
- guint16 psm;
- gboolean local_service;
- config_data_t in;
- config_data_t out;
+ guint16 scid;
+ guint16 dcid;
+ guint16 psm;
+ gboolean local_service;
+ config_data_t in;
+ config_data_t out;
} psm_data_t;
static const value_string command_code_vals[] = {
- { 0x01, "Command Reject" },
- { 0x02, "Connection Request" },
- { 0x03, "Connection Response" },
- { 0x04, "Configure Request" },
- { 0x05, "Configure Response" },
- { 0x06, "Disconnect Request" },
- { 0x07, "Disconnect Response" },
- { 0x08, "Echo Request" },
- { 0x09, "Echo Response" },
- { 0x0A, "Information Request" },
- { 0x0B, "Information Response" },
- { 0x0C, "Create Channel Request" },
- { 0x0D, "Create Channel Response" },
- { 0x0E, "Move Channel Request" },
- { 0x0F, "Move Channel Response" },
- { 0x10, "Move Channel Confirmation" },
- { 0x11, "Move Channel Confirmation Response" },
- { 0, NULL }
+ { 0x01, "Command Reject" },
+ { 0x02, "Connection Request" },
+ { 0x03, "Connection Response" },
+ { 0x04, "Configure Request" },
+ { 0x05, "Configure Response" },
+ { 0x06, "Disconnect Request" },
+ { 0x07, "Disconnect Response" },
+ { 0x08, "Echo Request" },
+ { 0x09, "Echo Response" },
+ { 0x0A, "Information Request" },
+ { 0x0B, "Information Response" },
+ { 0x0C, "Create Channel Request" },
+ { 0x0D, "Create Channel Response" },
+ { 0x0E, "Move Channel Request" },
+ { 0x0F, "Move Channel Response" },
+ { 0x10, "Move Channel Confirmation" },
+ { 0x11, "Move Channel Confirmation Response" },
+ { 0, NULL }
};
static const value_string psm_vals[] = {
- { 0x0001, "SDP" },
- { 0x0003, "RFCOMM" },
- { 0x0005, "TCS-BIN" },
- { 0x0007, "TCS-BIN-CORDLESS" },
- { 0x000F, "BNEP" },
- { 0x0011, "HID-Control" },
- { 0x0013, "HID-Interrupt" },
- { 0x0015, "UPnP" },
- { 0x0017, "AVCTP-Control" },
- { 0x0019, "AVDTP" },
- { 0x001B, "AVCTP-Browsing" },
- { 0x001D, "UDI_C-Plane" },
- { 0, NULL }
+ { 0x0001, "SDP" },
+ { 0x0003, "RFCOMM" },
+ { 0x0005, "TCS-BIN" },
+ { 0x0007, "TCS-BIN-CORDLESS" },
+ { 0x000F, "BNEP" },
+ { 0x0011, "HID-Control" },
+ { 0x0013, "HID-Interrupt" },
+ { 0x0015, "UPnP" },
+ { 0x0017, "AVCTP-Control" },
+ { 0x0019, "AVDTP" },
+ { 0x001B, "AVCTP-Browsing" },
+ { 0x001D, "UDI_C-Plane" },
+ { 0, NULL }
};
static const value_string result_vals[] = {
- { 0x0000, "Successful" },
- { 0x0001, "Pending" },
- { 0x0002, "Refused - PSM not supported" },
- { 0x0003, "Refused - security block" },
- { 0x0004, "Refused - no resources available" },
- { 0x0005, "Refused - Controller ID not supported" },
- { 0, NULL }
+ { 0x0000, "Successful" },
+ { 0x0001, "Pending" },
+ { 0x0002, "Refused - PSM not supported" },
+ { 0x0003, "Refused - security block" },
+ { 0x0004, "Refused - no resources available" },
+ { 0x0005, "Refused - Controller ID not supported" },
+ { 0, NULL }
};
static const value_string move_result_vals[] = {
- { 0x0000, "Success" },
- { 0x0001, "Pending" },
- { 0x0002, "Refused - Controller ID not supported" },
- { 0x0003, "Refused - New Controller ID is same as old" },
- { 0x0004, "Refused - Configuration not supported" },
- { 0x0005, "Refused - Move Channel collision" },
- { 0x0006, "Refused - Channel not allowed to be moved" },
- { 0, NULL }
+ { 0x0000, "Success" },
+ { 0x0001, "Pending" },
+ { 0x0002, "Refused - Controller ID not supported" },
+ { 0x0003, "Refused - New Controller ID is same as old" },
+ { 0x0004, "Refused - Configuration not supported" },
+ { 0x0005, "Refused - Move Channel collision" },
+ { 0x0006, "Refused - Channel not allowed to be moved" },
+ { 0, NULL }
};
static const value_string move_result_confirmation_vals[] = {
- { 0x0000, "Success - both sides succeed" },
- { 0x0001, "Failure - one or both sides refuse" },
- { 0, NULL }
+ { 0x0000, "Success - both sides succeed" },
+ { 0x0001, "Failure - one or both sides refuse" },
+ { 0, NULL }
};
static const value_string configuration_result_vals[] = {
- { 0x0000, "Success"},
- { 0x0001, "Failure - unacceptable parameters" },
- { 0x0002, "Failure - reject (no reason provided)" },
- { 0x0003, "Failure - unknown options" },
- { 0x0004, "Pending" },
- { 0x0005, "Failure - flow spec rejected" },
- { 0, NULL }
+ { 0x0000, "Success"},
+ { 0x0001, "Failure - unacceptable parameters" },
+ { 0x0002, "Failure - reject (no reason provided)" },
+ { 0x0003, "Failure - unknown options" },
+ { 0x0004, "Pending" },
+ { 0x0005, "Failure - flow spec rejected" },
+ { 0, NULL }
};
static const value_string status_vals[] = {
- { 0x0000, "No further information available" },
- { 0x0001, "Authentication pending" },
- { 0x0002, "Authorization pending" },
- { 0, NULL }
+ { 0x0000, "No further information available" },
+ { 0x0001, "Authentication pending" },
+ { 0x0002, "Authorization pending" },
+ { 0, NULL }
};
static const value_string reason_vals[] = {
- { 0x0000, "Command not understood" },
- { 0x0001, "Signaling MTU exceeded" },
- { 0x0002, "Invalid CID in request" },
- { 0, NULL }
+ { 0x0000, "Command not understood" },
+ { 0x0001, "Signaling MTU exceeded" },
+ { 0x0002, "Invalid CID in request" },
+ { 0, NULL }
};
static const value_string info_type_vals[] = {
- { 0x0001, "Connectionless MTU" },
- { 0x0002, "Extended Features Mask" },
- { 0x0003, "Fixed Channels Supported" },
- { 0, NULL }
+ { 0x0001, "Connectionless MTU" },
+ { 0x0002, "Extended Features Mask" },
+ { 0x0003, "Fixed Channels Supported" },
+ { 0, NULL }
};
static const value_string info_result_vals[] = {
- { 0x0000, "Success" },
- { 0x0001, "Not Supported" },
- { 0, NULL }
+ { 0x0000, "Success" },
+ { 0x0001, "Not Supported" },
+ { 0, NULL }
};
static const value_string option_servicetype_vals[] = {
- { 0x00, "No traffic" },
- { 0x01, "Best effort (Default)" },
- { 0x02, "Guaranteed" },
- { 0, NULL }
+ { 0x00, "No traffic" },
+ { 0x01, "Best effort (Default)" },
+ { 0x02, "Guaranteed" },
+ { 0, NULL }
};
static const value_string option_type_vals[] = {
- { 0x01, "Maximum Transmission Unit" },
- { 0x02, "Flush Timeout" },
- { 0x03, "Quality of Service" },
- { 0x04, "Retransmission and Flow Control" },
- { 0x05, "FCS" },
- { 0x06, "Extended Flow Specification" },
- { 0x07, "Extended Window Size" },
- { 0, NULL }
+ { 0x01, "Maximum Transmission Unit" },
+ { 0x02, "Flush Timeout" },
+ { 0x03, "Quality of Service" },
+ { 0x04, "Retransmission and Flow Control" },
+ { 0x05, "FCS" },
+ { 0x06, "Extended Flow Specification" },
+ { 0x07, "Extended Window Size" },
+ { 0, NULL }
};
static const value_string option_retransmissionmode_vals[] = {
- { 0x00, "Basic Mode" },
- { 0x01, "Retransmission Mode" },
- { 0x02, "Flow Control Mode" },
- { 0x03, "Enhanced Retransmission Mode" },
- { 0x04, "Streaming Mode" },
- { 0, NULL }
+ { 0x00, "Basic Mode" },
+ { 0x01, "Retransmission Mode" },
+ { 0x02, "Flow Control Mode" },
+ { 0x03, "Enhanced Retransmission Mode" },
+ { 0x04, "Streaming Mode" },
+ { 0, NULL }
};
static const value_string control_sar_vals[] = {
- { 0x00, "Unsegmented" },
- { 0x01, "Start" },
- { 0x02, "End" },
- { 0x03, "Continuation" },
- { 0, NULL }
+ { 0x00, "Unsegmented" },
+ { 0x01, "Start" },
+ { 0x02, "End" },
+ { 0x03, "Continuation" },
+ { 0, NULL }
};
static const value_string control_supervisory_vals[] = {
- { 0x00, "RR" },
- { 0x01, "REJ" },
- { 0x02, "RNR" },
- { 0x03, "SREJ" },
- { 0, NULL }
+ { 0x00, "RR" },
+ { 0x01, "REJ" },
+ { 0x02, "RNR" },
+ { 0x03, "SREJ" },
+ { 0, NULL }
};
static const value_string control_type_vals[] = {
- { 0x00, "I-Frame" },
- { 0x01, "S-Frame" },
- { 0, NULL }
+ { 0x00, "I-Frame" },
+ { 0x01, "S-Frame" },
+ { 0, NULL }
};
static const value_string option_fcs_vals[] = {
- { 0x00, "No FCS" },
- { 0x01, "16-bit FCS" },
- { 0, NULL }
+ { 0x00, "No FCS" },
+ { 0x01, "16-bit FCS" },
+ { 0, NULL }
};
static const value_string ctrl_id_code_vals[] = {
- { 0x00, "Bluetooth BR/EDR" },
- { 0x01, "Wifi 802.11" },
- { 0, NULL }
+ { 0x00, "Bluetooth BR/EDR" },
+ { 0x01, "Wifi 802.11" },
+ { 0, NULL }
};
static int
dissect_comrej(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- guint16 reason;
+ guint16 reason;
- reason = tvb_get_letohs(tvb, offset);
- proto_tree_add_item(tree, hf_btl2cap_rej_reason, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ reason = tvb_get_letohs(tvb, offset);
+ proto_tree_add_item(tree, hf_btl2cap_rej_reason, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
- switch(reason){
- case 0x0000: /* Command not understood */
- break;
+ switch (reason) {
+ case 0x0000: /* Command not understood */
+ break;
- case 0x0001: /* Signaling MTU exceeded */
- proto_tree_add_item(tree, hf_btl2cap_sig_mtu, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
- break;
+ case 0x0001: /* Signaling MTU exceeded */
+ proto_tree_add_item(tree, hf_btl2cap_sig_mtu, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+ break;
- case 0x0002: /* Invalid CID in requets */
- proto_tree_add_item(tree, hf_btl2cap_scid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ case 0x0002: /* Invalid CID in requets */
+ proto_tree_add_item(tree, hf_btl2cap_scid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
- proto_tree_add_item(tree, hf_btl2cap_dcid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(tree, hf_btl2cap_dcid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
- break;
+ break;
- default:
- break;
- }
+ default:
+ break;
+ }
- return offset;
+ return offset;
}
static int
dissect_connrequest(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, gboolean is_ch_request)
{
- guint16 scid, psm;
- psm_data_t *psm_data;
- const gchar *psm_str = "<NONE>";
-
- psm=tvb_get_letohs(tvb, offset);
- if( psm < BTL2CAP_DYNAMIC_PSM_START ) {
- proto_tree_add_item(tree, hf_btl2cap_psm, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- psm_str = val_to_str(psm, psm_vals, "Unknown PSM");
- }
- else {
- guint32 *service, token;
- proto_item *item;
-
- item = proto_tree_add_item(tree, hf_btl2cap_psm_dynamic, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- token = psm | ((pinfo->p2p_dir == P2P_DIR_RECV)?0x80000000:0x00000000);
- service = se_tree_lookup32(psm_to_service_table, token);
-
- if( service ) {
- psm_str = val_to_str(*service, vs_service_classes, "Unknown PSM");
- proto_item_append_text(item," (%s)", psm_str);
- }
- }
- offset+=2;
-
- scid=tvb_get_letohs(tvb, offset);
- proto_tree_add_item(tree, hf_btl2cap_scid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- if( psm_str )
- col_append_fstr(pinfo->cinfo, COL_INFO, " (%s, SCID: 0x%04x)", psm_str, scid);
- else
- col_append_fstr(pinfo->cinfo, COL_INFO, " (SCID: 0x%04x)", scid);
-
- if( is_ch_request ) {
- proto_tree_add_item(tree, hf_btl2cap_controller, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset+=1;
- }
-
- if (pinfo->fd->flags.visited == 0) {
- emem_tree_key_t key[3];
- guint32 kcid;
- guint32 frame_number;
-
- psm_data=se_alloc(sizeof(psm_data_t));
- psm_data->scid = (scid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x8000 : 0x0000));
- psm_data->dcid = 0;
- psm_data->psm=psm;
- psm_data->local_service = (pinfo->p2p_dir == P2P_DIR_RECV) ? TRUE : FALSE;
- psm_data->in.mode=0;
- psm_data->in.txwindow=0;
- psm_data->in.start_fragments=se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "bthci_l2cap fragment starts");
- psm_data->out.mode=0;
- psm_data->out.txwindow=0;
- psm_data->out.start_fragments=se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "bthci_l2cap fragment starts");
-
- frame_number = pinfo->fd->num;
- kcid = scid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x8000 : 0x0000);
-
- key[0].length = 1;
- key[0].key = &kcid;
- key[1].length = 1;
- key[1].key = &frame_number;
- key[2].length = 0;
- key[2].key = NULL;
-
- se_tree_insert32_array(cid_to_psm_table, key, psm_data);
- }
- return offset;
+ guint16 scid, psm;
+ psm_data_t *psm_data;
+ const gchar *psm_str = "<NONE>";
+
+ psm = tvb_get_letohs(tvb, offset);
+ if (psm < BTL2CAP_DYNAMIC_PSM_START) {
+ proto_tree_add_item(tree, hf_btl2cap_psm, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ psm_str = val_to_str_const(psm, psm_vals, "Unknown PSM");
+ }
+ else {
+ guint32 *service, token;
+ proto_item *item;
+
+ item = proto_tree_add_item(tree, hf_btl2cap_psm_dynamic, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ token = psm | ((pinfo->p2p_dir == P2P_DIR_RECV)?0x80000000:0x00000000);
+ service = se_tree_lookup32(psm_to_service_table, token);
+
+ if (service) {
+ psm_str = val_to_str_ext_const(*service, &vs_service_classes_ext, "Unknown PSM");
+ proto_item_append_text(item," (%s)", psm_str);
+ }
+ }
+ offset += 2;
+
+ scid = tvb_get_letohs(tvb, offset);
+ proto_tree_add_item(tree, hf_btl2cap_scid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ if (psm_str)
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (%s, SCID: 0x%04x)", psm_str, scid);
+ else
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (SCID: 0x%04x)", scid);
+
+ if (is_ch_request) {
+ proto_tree_add_item(tree, hf_btl2cap_controller, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+ }
+
+ if (!pinfo->fd->flags.visited) {
+ emem_tree_key_t key[3];
+ guint32 kcid;
+ guint32 frame_number;
+
+ /* XXX: Is using 0x8000 OK ? scid appears to be 16 bits */
+ psm_data = se_alloc(sizeof(psm_data_t));
+ psm_data->scid = (scid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x8000 : 0x0000));
+ psm_data->dcid = 0;
+ psm_data->psm = psm;
+ psm_data->local_service = (pinfo->p2p_dir == P2P_DIR_RECV) ? TRUE : FALSE;
+ psm_data->in.mode = 0;
+ psm_data->in.txwindow = 0;
+ psm_data->in.start_fragments = se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "bthci_l2cap fragment starts");
+ psm_data->out.mode = 0;
+ psm_data->out.txwindow = 0;
+ psm_data->out.start_fragments = se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "bthci_l2cap fragment starts");
+
+ frame_number = pinfo->fd->num;
+ kcid = scid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x8000 : 0x0000);
+
+ key[0].length = 1;
+ key[0].key = &kcid;
+ key[1].length = 1;
+ key[1].key = &frame_number;
+ key[2].length = 0;
+ key[2].key = NULL;
+
+ se_tree_insert32_array(cid_to_psm_table, key, psm_data);
+ }
+ return offset;
}
static int
dissect_movechanrequest(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- guint16 icid;
- guint8 ctrl_id;
+ guint16 icid;
+ guint8 ctrl_id;
- icid = tvb_get_letohs(tvb, offset);
- proto_tree_add_item(tree, hf_btl2cap_icid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ icid = tvb_get_letohs(tvb, offset);
+ proto_tree_add_item(tree, hf_btl2cap_icid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
- ctrl_id = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(tree, hf_btl2cap_dcontroller, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset+=1;
+ ctrl_id = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_btl2cap_dcontroller, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
- col_append_fstr(pinfo->cinfo, COL_INFO, " (ICID: 0x%04x, move to %s)", icid, val_to_str(ctrl_id, ctrl_id_code_vals, "Unknown controller"));
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (ICID: 0x%04x, move to %s)", icid,
+ val_to_str_const(ctrl_id, ctrl_id_code_vals, "Unknown controller"));
- return offset;
+ return offset;
}
static int
dissect_options(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int length, config_data_t *config_data)
{
- proto_item *ti_option=NULL;
- proto_tree *ti_option_subtree=NULL;
- guint8 option_type, option_length;
+ proto_item *ti_option;
+ proto_tree *ti_option_subtree;
+ guint8 option_type, option_length;
- while(length>0){
- option_type = tvb_get_guint8(tvb, offset);
- option_length = tvb_get_guint8(tvb, offset+1);
+ while (length > 0) {
+ option_type = tvb_get_guint8(tvb, offset);
+ option_length = tvb_get_guint8(tvb, offset+1);
- ti_option = proto_tree_add_none_format(tree,
- hf_btl2cap_option, tvb,
- offset, option_length + 2,
- "Option: ");
- ti_option_subtree = proto_item_add_subtree(ti_option, ett_btl2cap_option);
- proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_length, tvb, offset+1, 1, ENC_LITTLE_ENDIAN);
- offset+=2;
+ ti_option = proto_tree_add_none_format(tree,
+ hf_btl2cap_option, tvb,
+ offset, option_length + 2,
+ "Option: ");
+ ti_option_subtree = proto_item_add_subtree(ti_option, ett_btl2cap_option);
+ proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_length, tvb, offset+1, 1, ENC_LITTLE_ENDIAN);
+ offset += 2;
- if(option_length>0){
- switch(option_type){
- case 0x01: /* MTU */
- proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_mtu, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ if (option_length != 0) {
+ switch (option_type) {
+ case 0x01: /* MTU */
+ proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_mtu, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
- proto_item_append_text(ti_option, "MTU");
- break;
+ proto_item_append_text(ti_option, "MTU");
+ break;
- case 0x02: /* Flush timeout */
- proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_flushTO, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ case 0x02: /* Flush timeout */
+ proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_flushTO, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
- proto_item_append_text(ti_option, "Flush Timeout");
- break;
+ proto_item_append_text(ti_option, "Flush Timeout");
+ break;
- case 0x03: /* QOS */
- proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_flags, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x03: /* QOS */
+ proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_flags, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
- proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_service_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_service_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
- proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_tokenrate, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
+ proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_tokenrate, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
- proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_tokenbucketsize, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
+ proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_tokenbucketsize, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
- proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_peakbandwidth, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
+ proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_peakbandwidth, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
- proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_latency, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
+ proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_latency, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
- proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_delayvariation, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
+ proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_delayvariation, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
- proto_item_append_text(ti_option, "QOS");
- break;
+ proto_item_append_text(ti_option, "QOS");
+ break;
- case 0x04: /* Retransmission and Flow Control*/
- if(config_data)
- {
- config_data->mode = tvb_get_guint8(tvb, offset);
- config_data->txwindow = tvb_get_guint8(tvb, offset+1);
- }
- proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_retransmissionmode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x04: /* Retransmission and Flow Control*/
+ if (config_data)
+ {
+ config_data->mode = tvb_get_guint8(tvb, offset);
+ config_data->txwindow = tvb_get_guint8(tvb, offset+1);
+ }
+ proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_retransmissionmode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
- proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_txwindow, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_txwindow, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
- proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_maxtransmit, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_maxtransmit, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
- proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_retransmittimeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+= 2;
+ proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_retransmittimeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
- proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_monitortimeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+= 2;
+ proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_monitortimeout, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
- proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_mps, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+= 2;
+ proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_mps, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
- proto_item_append_text(ti_option, "Retransmission and Flow Control");
- break;
+ proto_item_append_text(ti_option, "Retransmission and Flow Control");
+ break;
- case 0x05: /* FCS */
- proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_fcs, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset+=1;
+ case 0x05: /* FCS */
+ proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_fcs, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
- proto_item_append_text(ti_option, "FCS");
- break;
+ proto_item_append_text(ti_option, "FCS");
+ break;
- case 0x06: /* Extended Flow Specification */
- proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_identifier, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ case 0x06: /* Extended Flow Specification */
+ proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_identifier, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
- proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_service_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_service_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
- proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_sdu_size, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_sdu_size, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
- proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_sdu_arrival_time, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
+ proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_sdu_arrival_time, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
- proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_access_latency, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
+ proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_access_latency, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
- proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_flush_to_us, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
+ proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_flush_to_us, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
- proto_item_append_text(ti_option, "Extended Flow Specification");
- break;
+ proto_item_append_text(ti_option, "Extended Flow Specification");
+ break;
- case 0x07: /* Extended Window Size */
- proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_window, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ case 0x07: /* Extended Window Size */
+ proto_tree_add_item(ti_option_subtree, hf_btl2cap_option_window, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
- proto_item_append_text(ti_option, "Extended Window Size");
- break;
+ proto_item_append_text(ti_option, "Extended Window Size");
+ break;
- default:
- proto_item_append_text(ti_option, "unknown");
- offset+=option_length;
- break;
- }
- }
- length -= (option_length + 2);
- }
- return offset;
+ default:
+ proto_item_append_text(ti_option, "unknown");
+ offset += option_length;
+ break;
+ }
+ }
+ length -= (option_length + 2);
+ }
+ return offset;
}
@@ -590,565 +593,574 @@ dissect_options(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *t
static int
dissect_configrequest(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, guint16 length)
{
- psm_data_t *psm_data;
- config_data_t *config_data;
- guint16 dcid;
- emem_tree_key_t key[3];
- guint32 kcid;
- guint32 frame_number;
-
- dcid = tvb_get_letohs(tvb, offset);
-
- frame_number = pinfo->fd->num;
- kcid = dcid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x0000 : 0x8000);
-
- key[0].length = 1;
- key[0].key = &kcid;
- key[1].length = 1;
- key[1].key = &frame_number;
- key[2].length = 0;
- key[2].key = NULL;
-
- psm_data = se_tree_lookup32_array_le(cid_to_psm_table, key);
-
- proto_tree_add_item(tree, hf_btl2cap_dcid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- col_append_fstr(pinfo->cinfo, COL_INFO, " (DCID: 0x%04x)", dcid);
-
- proto_tree_add_item(tree, hf_btl2cap_continuation_flag, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- if(tvb_length_remaining(tvb, offset)){
- if (psm_data && psm_data->dcid == (dcid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x0000 : 0x8000)))
- if(pinfo->p2p_dir==P2P_DIR_RECV)
- config_data = &(psm_data->out);
- else
- config_data = &(psm_data->in);
- else
- config_data = NULL;
- offset=dissect_options(tvb, offset, pinfo, tree, length - 4, config_data);
- }
-
- return offset;
+ psm_data_t *psm_data;
+ config_data_t *config_data;
+ guint16 dcid;
+ emem_tree_key_t key[3];
+ guint32 kcid;
+ guint32 frame_number;
+
+ dcid = tvb_get_letohs(tvb, offset);
+
+ frame_number = pinfo->fd->num;
+ kcid = dcid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x0000 : 0x8000);
+
+ key[0].length = 1;
+ key[0].key = &kcid;
+ key[1].length = 1;
+ key[1].key = &frame_number;
+ key[2].length = 0;
+ key[2].key = NULL;
+
+ psm_data = se_tree_lookup32_array_le(cid_to_psm_table, key);
+
+ proto_tree_add_item(tree, hf_btl2cap_dcid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (DCID: 0x%04x)", dcid);
+
+ proto_tree_add_item(tree, hf_btl2cap_continuation_flag, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ if (tvb_reported_length_remaining(tvb, offset) > 0) {
+ if (psm_data && psm_data->dcid == (dcid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x0000 : 0x8000)))
+ if (pinfo->p2p_dir == P2P_DIR_RECV)
+ config_data = &(psm_data->out);
+ else
+ config_data = &(psm_data->in);
+ else
+ config_data = NULL;
+ offset = dissect_options(tvb, offset, pinfo, tree, length - 4, config_data);
+ }
+
+ return offset;
}
static int
dissect_inforequest(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- guint16 info_type;
+ guint16 info_type;
- info_type=tvb_get_letohs(tvb, offset);
- proto_tree_add_item(tree, hf_btl2cap_info_type, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ info_type = tvb_get_letohs(tvb, offset);
+ proto_tree_add_item(tree, hf_btl2cap_info_type, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
- col_append_fstr(pinfo->cinfo, COL_INFO, " (%s)", val_to_str(info_type, info_type_vals, "Unknown type"));
- return offset;
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (%s)", val_to_str_const(info_type, info_type_vals, "Unknown type"));
+ return offset;
}
static int
dissect_inforesponse(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- guint16 info_type, result;
- proto_item *ti_features=NULL;
- proto_tree *ti_features_subtree=NULL;
- guint32 features;
-
- info_type=tvb_get_letohs(tvb, offset);
- proto_tree_add_item(tree, hf_btl2cap_info_type, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- result = tvb_get_letohs(tvb, offset);
- proto_tree_add_item(tree, hf_btl2cap_info_result, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- col_append_fstr(pinfo->cinfo, COL_INFO, " (%s, %s)",
- val_to_str(info_type, info_type_vals, "Unknown type"),
- val_to_str(result, info_result_vals, "Unknown result"));
-
- if(tvb_length_remaining(tvb, offset)) {
- switch(info_type){
- case 0x0001: /* Connectionless MTU */
- proto_tree_add_item(tree, hf_btl2cap_info_mtu, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- break;
- case 0x0002: /* Extended Features */
- ti_features = proto_tree_add_none_format(tree,
- hf_btl2cap_info_extfeatures, tvb,
- offset, 4,
- "Features: ");
- ti_features_subtree = proto_item_add_subtree(ti_features, ett_btl2cap_extfeatures);
- features = tvb_get_letohl(tvb, offset);
- if(features & 0x1)
- proto_item_append_text(ti_features, "FlowControl ");
- if(features & 0x2)
- proto_item_append_text(ti_features, "Retransmission ");
- if(features & 0x4)
- proto_item_append_text(ti_features, "BiDirQOS ");
- if(features & 0x8)
- proto_item_append_text(ti_features, "EnhRetransmission ");
- if(features & 0x10)
- proto_item_append_text(ti_features, "Streaming ");
- if(features & 0x20)
- proto_item_append_text(ti_features, "FCS ");
- if(features & 0x40)
- proto_item_append_text(ti_features, "FlowSpec ");
- if(features & 0x80)
- proto_item_append_text(ti_features, "FixedChan ");
- if(features & 0x100)
- proto_item_append_text(ti_features, "WindowSize ");
- if(features & 0x200)
- proto_item_append_text(ti_features, "Unicast ");
- proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_flowcontrol, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_retransmission, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_bidirqos, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_enh_retransmission, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_streaming, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_fcs, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_flow_spec, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_fixedchan, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_window, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_unicast, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
-
- break;
-
- case 0x0003: /* Fixed Channels Supported */
- ti_features = proto_tree_add_none_format(tree,
- hf_btl2cap_info_fixedchans, tvb,
- offset, 8,
- "Fixed Channels Supported:");
- ti_features_subtree = proto_item_add_subtree(ti_features, ett_btl2cap_fixedchans);
- proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_fixedchans_null, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_fixedchans_signal, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_fixedchans_connless, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_fixedchans_amp_man, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
- proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_fixedchans_amp_test, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
-
- break;
-
- default:
- proto_tree_add_item(tree, hf_btl2cap_cmd_data, tvb, offset, -1, ENC_NA);
- offset+=tvb_length_remaining(tvb, offset);
-
- break;
- }
- }
-
- return offset;
+ guint16 info_type, result;
+
+ info_type = tvb_get_letohs(tvb, offset);
+ proto_tree_add_item(tree, hf_btl2cap_info_type, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ result = tvb_get_letohs(tvb, offset);
+ proto_tree_add_item(tree, hf_btl2cap_info_result, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (%s, %s)",
+ val_to_str_const(info_type, info_type_vals, "Unknown type"),
+ val_to_str_const(result, info_result_vals, "Unknown result"));
+
+ if (tvb_reported_length_remaining(tvb, offset) > 0) {
+ proto_item *ti_features;
+ proto_tree *ti_features_subtree;
+ guint32 features;
+
+ switch (info_type) {
+ case 0x0001: /* Connectionless MTU */
+ proto_tree_add_item(tree, hf_btl2cap_info_mtu, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ break;
+ case 0x0002: /* Extended Features */
+ ti_features = proto_tree_add_none_format(tree,
+ hf_btl2cap_info_extfeatures, tvb,
+ offset, 4,
+ "Features: ");
+ ti_features_subtree = proto_item_add_subtree(ti_features, ett_btl2cap_extfeatures);
+ features = tvb_get_letohl(tvb, offset);
+ if (features & 0x1)
+ proto_item_append_text(ti_features, "FlowControl ");
+ if (features & 0x2)
+ proto_item_append_text(ti_features, "Retransmission ");
+ if (features & 0x4)
+ proto_item_append_text(ti_features, "BiDirQOS ");
+ if (features & 0x8)
+ proto_item_append_text(ti_features, "EnhRetransmission ");
+ if (features & 0x10)
+ proto_item_append_text(ti_features, "Streaming ");
+ if (features & 0x20)
+ proto_item_append_text(ti_features, "FCS ");
+ if (features & 0x40)
+ proto_item_append_text(ti_features, "FlowSpec ");
+ if (features & 0x80)
+ proto_item_append_text(ti_features, "FixedChan ");
+ if (features & 0x100)
+ proto_item_append_text(ti_features, "WindowSize ");
+ if (features & 0x200)
+ proto_item_append_text(ti_features, "Unicast ");
+ proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_flowcontrol, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_retransmission, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_bidirqos, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_enh_retransmission, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_streaming, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_fcs, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_flow_spec, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_fixedchan, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_window, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_unicast, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ break;
+
+ case 0x0003: /* Fixed Channels Supported */
+ ti_features = proto_tree_add_none_format(tree,
+ hf_btl2cap_info_fixedchans, tvb,
+ offset, 8,
+ "Fixed Channels Supported:");
+ ti_features_subtree = proto_item_add_subtree(ti_features, ett_btl2cap_fixedchans);
+ proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_fixedchans_null, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_fixedchans_signal, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_fixedchans_connless, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_fixedchans_amp_man, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+ proto_tree_add_item(ti_features_subtree, hf_btl2cap_info_fixedchans_amp_test, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ break;
+
+ default:
+ proto_tree_add_item(tree, hf_btl2cap_cmd_data, tvb, offset, -1, ENC_NA);
+ offset += tvb_reported_length_remaining(tvb, offset);
+
+ break;
+ }
+ }
+
+ return offset;
}
static int
dissect_configresponse(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, guint16 length)
{
- psm_data_t *psm_data;
- config_data_t *config_data;
- guint16 scid, result;
- emem_tree_key_t key[3];
- guint32 kcid;
- guint32 frame_number;
-
- scid = tvb_get_letohs(tvb, offset);
-
- frame_number = pinfo->fd->num;
- kcid = scid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x0000 : 0x8000);
-
- key[0].length = 1;
- key[0].key = &kcid;
- key[1].length = 1;
- key[1].key = &frame_number;
- key[2].length = 0;
- key[2].key = NULL;
-
- psm_data = se_tree_lookup32_array_le(cid_to_psm_table, key);
-
- proto_tree_add_item(tree, hf_btl2cap_scid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- proto_tree_add_item(tree, hf_btl2cap_continuation_flag, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- result = tvb_get_letohs(tvb, offset);
- proto_tree_add_item(tree, hf_btl2cap_configuration_result, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- col_append_fstr(pinfo->cinfo, COL_INFO, " - %s (SCID: 0x%04x)", val_to_str(result, configuration_result_vals, "Unknown"), scid);
-
- if(tvb_length_remaining(tvb, offset)){
- if (psm_data && psm_data->scid == (scid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x0000 : 0x8000)))
- if(pinfo->p2p_dir==P2P_DIR_RECV)
- config_data = &(psm_data->out);
- else
- config_data = &(psm_data->in);
- else
- config_data = NULL;
- offset=dissect_options(tvb, offset, pinfo, tree, length - 6, config_data);
- }
-
- return offset;
+ psm_data_t *psm_data;
+ config_data_t *config_data;
+ guint16 scid, result;
+ emem_tree_key_t key[3];
+ guint32 kcid;
+ guint32 frame_number;
+
+ scid = tvb_get_letohs(tvb, offset);
+
+ frame_number = pinfo->fd->num;
+ kcid = scid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x0000 : 0x8000);
+
+ key[0].length = 1;
+ key[0].key = &kcid;
+ key[1].length = 1;
+ key[1].key = &frame_number;
+ key[2].length = 0;
+ key[2].key = NULL;
+
+ psm_data = se_tree_lookup32_array_le(cid_to_psm_table, key);
+
+ proto_tree_add_item(tree, hf_btl2cap_scid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_btl2cap_continuation_flag, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ result = tvb_get_letohs(tvb, offset);
+ proto_tree_add_item(tree, hf_btl2cap_configuration_result, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, " - %s (SCID: 0x%04x)",
+ val_to_str_const(result, configuration_result_vals, "Unknown"), scid);
+
+ if (tvb_reported_length_remaining(tvb, offset) > 0) {
+ if (psm_data && psm_data->scid == (scid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x0000 : 0x8000)))
+ if (pinfo->p2p_dir == P2P_DIR_RECV)
+ config_data = &(psm_data->out);
+ else
+ config_data = &(psm_data->in);
+ else
+ config_data = NULL;
+ offset = dissect_options(tvb, offset, pinfo, tree, length - 6, config_data);
+ }
+
+ return offset;
}
static int
dissect_connresponse(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
{
- guint16 scid, dcid, result;
- psm_data_t *psm_data;
- emem_tree_key_t key[3];
- guint32 kcid;
- guint32 frame_number;
-
- dcid = tvb_get_letohs(tvb, offset);
- proto_tree_add_item(tree, hf_btl2cap_dcid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- scid = tvb_get_letohs(tvb, offset);
- proto_tree_add_item(tree, hf_btl2cap_scid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- result = tvb_get_letohs(tvb, offset);
- proto_tree_add_item(tree, hf_btl2cap_result, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- proto_tree_add_item(tree, hf_btl2cap_status, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- if(!result) {
- col_append_fstr(pinfo->cinfo, COL_INFO, " - Success (SCID: 0x%04x, DCID: 0x%04x)", scid, dcid);
- }
- else {
- col_append_fstr(pinfo->cinfo, COL_INFO, " - %s (SCID: 0x%04x)", val_to_str(result, result_vals, "Unknown"), scid);
- }
-
- if (pinfo->fd->flags.visited == 0) {
- frame_number = pinfo->fd->num;
- kcid = scid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x0000 : 0x8000);
-
- key[0].length = 1;
- key[0].key = &kcid;
- key[1].length = 1;
- key[1].key = &frame_number;
- key[2].length = 0;
- key[2].key = NULL;
-
- psm_data = se_tree_lookup32_array_le(cid_to_psm_table, key);
-
- if (psm_data && psm_data->scid == (scid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x0000 : 0x8000))) {
- frame_number = pinfo->fd->num;
- kcid = dcid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x8000 : 0x0000);
-
- key[0].length = 1;
- key[0].key = &kcid;
- key[1].length = 1;
- key[1].key = &frame_number;
- key[2].length = 0;
- key[2].key = NULL;
- psm_data->dcid = dcid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x8000 : 0x0000);
-
- se_tree_insert32_array(cid_to_psm_table, key, psm_data);
- }
- }
-
- return offset;
+ guint16 scid, dcid, result;
+ psm_data_t *psm_data;
+ emem_tree_key_t key[3];
+ guint32 kcid;
+ guint32 frame_number;
+
+ dcid = tvb_get_letohs(tvb, offset);
+ proto_tree_add_item(tree, hf_btl2cap_dcid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ scid = tvb_get_letohs(tvb, offset);
+ proto_tree_add_item(tree, hf_btl2cap_scid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ result = tvb_get_letohs(tvb, offset);
+ proto_tree_add_item(tree, hf_btl2cap_result, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_btl2cap_status, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ if (result == 0) {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " - Success (SCID: 0x%04x, DCID: 0x%04x)", scid, dcid);
+ }
+ else {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " - %s (SCID: 0x%04x)",
+ val_to_str_const(result, result_vals, "Unknown"), scid);
+ }
+
+ if (pinfo->fd->flags.visited == 0) {
+ frame_number = pinfo->fd->num;
+ kcid = scid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x0000 : 0x8000);
+
+ key[0].length = 1;
+ key[0].key = &kcid;
+ key[1].length = 1;
+ key[1].key = &frame_number;
+ key[2].length = 0;
+ key[2].key = NULL;
+
+ psm_data = se_tree_lookup32_array_le(cid_to_psm_table, key);
+
+ if (psm_data && psm_data->scid == (scid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x0000 : 0x8000))) {
+ frame_number = pinfo->fd->num;
+ kcid = dcid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x8000 : 0x0000);
+
+ key[0].length = 1;
+ key[0].key = &kcid;
+ key[1].length = 1;
+ key[1].key = &frame_number;
+ key[2].length = 0;
+ key[2].key = NULL;
+ psm_data->dcid = dcid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x8000 : 0x0000);
+
+ se_tree_insert32_array(cid_to_psm_table, key, psm_data);
+ }
+ }
+
+ return offset;
}
static int
dissect_chanresponse(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
{
- return dissect_connresponse(tvb, offset, pinfo, tree);
+ return dissect_connresponse(tvb, offset, pinfo, tree);
}
static int
dissect_movechanresponse(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- guint16 icid, result;
+ guint16 icid, result;
- icid = tvb_get_letohs(tvb, offset);
- proto_tree_add_item(tree, hf_btl2cap_icid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ icid = tvb_get_letohs(tvb, offset);
+ proto_tree_add_item(tree, hf_btl2cap_icid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
- result = tvb_get_letohs(tvb, offset);
- proto_tree_add_item(tree, hf_btl2cap_move_result, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ result = tvb_get_letohs(tvb, offset);
+ proto_tree_add_item(tree, hf_btl2cap_move_result, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
- col_append_fstr(pinfo->cinfo, COL_INFO, " (ICID: 0x%04x, %s)", icid, val_to_str(result, move_result_vals, "Unknown result"));
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (ICID: 0x%04x, %s)", icid,
+ val_to_str_const(result, move_result_vals, "Unknown result"));
- return offset;
+ return offset;
}
static int
dissect_movechanconfirmation(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- guint16 icid, result;
+ guint16 icid, result;
- icid = tvb_get_letohs(tvb, offset);
- proto_tree_add_item(tree, hf_btl2cap_icid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ icid = tvb_get_letohs(tvb, offset);
+ proto_tree_add_item(tree, hf_btl2cap_icid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
- result = tvb_get_letohs(tvb, offset);
- proto_tree_add_item(tree, hf_btl2cap_move_confirmation_result, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ result = tvb_get_letohs(tvb, offset);
+ proto_tree_add_item(tree, hf_btl2cap_move_confirmation_result, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
- col_append_fstr(pinfo->cinfo, COL_INFO, " (ICID: 0x%04x, %s)", icid, val_to_str(result, move_result_confirmation_vals, "Unknown result"));
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (ICID: 0x%04x, %s)", icid,
+ val_to_str_const(result, move_result_confirmation_vals, "Unknown result"));
- return offset;
+ return offset;
}
static int
dissect_movechanconfirmationresponse(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- guint16 icid;
+ guint16 icid;
- icid = tvb_get_letohs(tvb, offset);
- proto_tree_add_item(tree, hf_btl2cap_icid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ icid = tvb_get_letohs(tvb, offset);
+ proto_tree_add_item(tree, hf_btl2cap_icid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
- col_append_fstr(pinfo->cinfo, COL_INFO, " (ICID: 0x%04x)", icid);
- return offset;
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (ICID: 0x%04x)", icid);
+ return offset;
}
static int
dissect_disconnrequestresponse(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
{
- guint16 scid, dcid;
+ guint16 scid, dcid;
- dcid = tvb_get_letohs(tvb, offset);
- proto_tree_add_item(tree, hf_btl2cap_dcid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ dcid = tvb_get_letohs(tvb, offset);
+ proto_tree_add_item(tree, hf_btl2cap_dcid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
- scid = tvb_get_letohs(tvb, offset);
- proto_tree_add_item(tree, hf_btl2cap_scid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
+ scid = tvb_get_letohs(tvb, offset);
+ proto_tree_add_item(tree, hf_btl2cap_scid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
- col_append_fstr(pinfo->cinfo, COL_INFO, " (SCID: 0x%04x, DCID: 0x%04x)", scid, dcid);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (SCID: 0x%04x, DCID: 0x%04x)", scid, dcid);
- return offset;
+ return offset;
}
static int
-dissect_b_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree *btl2cap_tree, guint16 psm, gboolean local_service, guint16 length, int offset)
+dissect_b_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree *btl2cap_tree,
+ guint16 psm, gboolean local_service, guint16 length, int offset)
{
- tvbuff_t *next_tvb;
- next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), length);
-
- col_append_str(pinfo->cinfo, COL_INFO, "Connection oriented channel");
-
- if(psm){
- proto_item *psm_item;
- guint32 *service =se_tree_lookup32(psm_to_service_table, (local_service<<31) | psm);
-
- if( psm < BTL2CAP_DYNAMIC_PSM_START ) {
- psm_item=proto_tree_add_uint(btl2cap_tree, hf_btl2cap_psm, tvb, offset, 0, psm);
- }
- else {
- psm_item=proto_tree_add_uint(btl2cap_tree, hf_btl2cap_psm_dynamic, tvb, offset, 0, psm);
- if( service )
- proto_item_append_text(psm_item,": %s", val_to_str(*service, vs_service_classes, "Unknown service"));
- }
- PROTO_ITEM_SET_GENERATED(psm_item);
-
- /* call next dissector */
- if (!dissector_try_uint(l2cap_psm_dissector_table, (guint32) psm, next_tvb, pinfo, tree)) {
- /* not a known fixed PSM, try to find a registered service to a dynamic PSM */
- if(service != NULL && !dissector_try_uint(l2cap_service_dissector_table, *service, next_tvb, pinfo, tree)) {
- /* unknown protocol. declare as data */
- proto_tree_add_item(btl2cap_tree, hf_btl2cap_payload, tvb, offset, length, ENC_NA);
- }
- }
- offset+=tvb_length_remaining(tvb, offset);
- }
- else {
- proto_tree_add_item(btl2cap_tree, hf_btl2cap_payload, tvb, offset, length, ENC_NA);
- offset+=tvb_length_remaining(tvb, offset);
- }
- return offset;
+ tvbuff_t *next_tvb;
+
+ next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), length);
+
+ col_append_str(pinfo->cinfo, COL_INFO, "Connection oriented channel");
+
+ if (psm) {
+ proto_item *psm_item;
+ guint32 *service = se_tree_lookup32(psm_to_service_table, (local_service<<31) | psm);
+
+ if (psm < BTL2CAP_DYNAMIC_PSM_START) {
+ psm_item = proto_tree_add_uint(btl2cap_tree, hf_btl2cap_psm, tvb, offset, 0, psm);
+ }
+ else {
+ psm_item = proto_tree_add_uint(btl2cap_tree, hf_btl2cap_psm_dynamic, tvb, offset, 0, psm);
+ if (service)
+ proto_item_append_text(psm_item,": %s",
+ val_to_str_ext_const(*service, &vs_service_classes_ext, "Unknown service"));
+ }
+ PROTO_ITEM_SET_GENERATED(psm_item);
+
+ /* call next dissector */
+ if (!dissector_try_uint(l2cap_psm_dissector_table, (guint32) psm, next_tvb, pinfo, tree)) {
+ /* not a known fixed PSM, try to find a registered service to a dynamic PSM */
+ if ((service == NULL) || !dissector_try_uint(l2cap_service_dissector_table, *service, next_tvb, pinfo, tree)) {
+ /* unknown protocol. declare as data */
+ proto_tree_add_item(btl2cap_tree, hf_btl2cap_payload, tvb, offset, length, ENC_NA);
+ }
+ }
+ offset += tvb_length_remaining(tvb, offset);
+ }
+ else {
+ proto_tree_add_item(btl2cap_tree, hf_btl2cap_payload, tvb, offset, length, ENC_NA);
+ offset += tvb_length_remaining(tvb, offset);
+ }
+ return offset;
}
typedef struct _sdu_reassembly_t
{
- guint8* reassembled;
- guint8 seq;
- guint32 first_frame;
- guint32 last_frame;
- guint16 tot_len;
- int cur_off; /* counter used by reassembly */
+ guint8 *reassembled;
+ guint8 seq;
+ guint32 first_frame;
+ guint32 last_frame;
+ guint16 tot_len;
+ int cur_off; /* counter used by reassembly */
} sdu_reassembly_t;
static int
-dissect_i_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree *btl2cap_tree, psm_data_t *psm_data, guint16 length, int offset, config_data_t *config_data)
+dissect_i_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree *btl2cap_tree,
+ psm_data_t *psm_data, guint16 length, int offset, config_data_t *config_data)
{
- tvbuff_t *next_tvb = NULL;
- guint16 control, segment;
- guint16 sdulen;
- proto_item* ti_control;
- proto_tree* ti_control_subtree;
- sdu_reassembly_t* mfp = NULL;
- guint16 psm = (psm_data?psm_data->psm:0);
-
- control = tvb_get_letohs(tvb, offset);
- segment = (control & 0xC000) >> 14;
- switch(segment)
- {
- case 0:
- col_append_str(pinfo->cinfo, COL_INFO, "[I] Unsegmented SDU");
- break;
- case 1:
- col_append_str(pinfo->cinfo, COL_INFO, "[I] Start SDU");
- break;
- case 2:
- col_append_str(pinfo->cinfo, COL_INFO, "[I] End SDU");
- break;
- case 3:
- col_append_str(pinfo->cinfo, COL_INFO, "[I] Continuation SDU");
- break;
- }
- ti_control = proto_tree_add_none_format(btl2cap_tree, hf_btl2cap_control, tvb,
- offset, 2, "Control: %s reqseq:%d r:%d txseq:%d",
- val_to_str((control & 0xC000) >> 14, control_sar_vals, "unknown"),
- (control & 0x3F00) >> 8,
- (control & 0x0080) >> 7,
- (control & 0x007E) >> 1);
- ti_control_subtree = proto_item_add_subtree(ti_control, ett_btl2cap_control);
- proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_sar, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_reqseq, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_retransmissiondisable, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_txseq, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_type, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset += 2;
-
- /*Segmented frames with SAR = start have an extra SDU length header field*/
- if(segment == 0x01) {
- proto_item *pi;
- sdulen = tvb_get_letohs(tvb, offset);
- pi = proto_tree_add_item(btl2cap_tree, hf_btl2cap_sdulength, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset += 2;
- length -= 6; /*Control, SDUlength, FCS*/
-
- /* Detect malformed data */
- if (sdulen < length) {
- sdulen = length;
- expert_add_info_format(pinfo, pi, PI_MALFORMED, PI_WARN,
- "SDU length less than length of first packet");
- }
-
- if(!pinfo->fd->flags.visited){
- mfp=se_alloc(sizeof(sdu_reassembly_t));
- mfp->first_frame=pinfo->fd->num;
- mfp->last_frame=0;
- mfp->tot_len=sdulen;
- mfp->reassembled=se_alloc(sdulen);
- tvb_memcpy(tvb, mfp->reassembled, offset, length);
- mfp->cur_off=length;
- se_tree_insert32(config_data->start_fragments, pinfo->fd->num, mfp);
- } else {
- mfp=se_tree_lookup32(config_data->start_fragments, pinfo->fd->num);
- }
- if(mfp != NULL && mfp->last_frame){
- proto_item *item;
- item=proto_tree_add_uint(btl2cap_tree, hf_btl2cap_reassembled_in, tvb, 0, 0, mfp->last_frame);
- PROTO_ITEM_SET_GENERATED(item);
- col_append_fstr(pinfo->cinfo, COL_INFO, "[Reassembled in #%u] ", mfp->last_frame);
- }
- } else {
- length -= 4; /*Control, FCS*/
- }
- if(segment == 0x02 || segment == 0x03) {
- mfp=se_tree_lookup32_le(config_data->start_fragments, pinfo->fd->num);
- if(!pinfo->fd->flags.visited){
- if(mfp != NULL && !mfp->last_frame && (mfp->tot_len>=mfp->cur_off+length)){
- tvb_memcpy(tvb, mfp->reassembled+mfp->cur_off, offset, length);
- mfp->cur_off+=length;
- if(segment == 0x02){
- mfp->last_frame=pinfo->fd->num;
- }
- }
- }
- if(mfp){
- proto_item *item;
- item=proto_tree_add_uint(btl2cap_tree, hf_btl2cap_continuation_to, tvb, 0, 0, mfp->first_frame);
- PROTO_ITEM_SET_GENERATED(item);
- col_append_fstr(pinfo->cinfo, COL_INFO, "[Continuation to #%u] ", mfp->first_frame);
- }
- }
- if(segment == 0x02 && mfp != NULL && mfp->last_frame==pinfo->fd->num){
- next_tvb = tvb_new_child_real_data(tvb, (guint8*)mfp->reassembled, mfp->tot_len, mfp->tot_len);
- add_new_data_source(pinfo, next_tvb, "Reassembled L2CAP");
- }
- /*pass up to higher layer if we have a complete packet*/
- if(segment == 0x00) {
- next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset) - 2, length);
- }
- if(next_tvb) {
- if(psm){
- guint32 *service =se_tree_lookup32(psm_to_service_table, ((psm_data?psm_data->local_service:0)<<31) | psm);
- proto_item *psm_item;
-
- if( psm < BTL2CAP_DYNAMIC_PSM_START ) {
- psm_item=proto_tree_add_uint(btl2cap_tree, hf_btl2cap_psm, tvb, offset, 0, psm);
- }
- else {
- psm_item=proto_tree_add_uint(btl2cap_tree, hf_btl2cap_psm_dynamic, tvb, offset, 0, psm);
- if(service)
- proto_item_append_text(psm_item," (%s)", val_to_str(*service, vs_service_classes, "Unknown service"));
- }
- PROTO_ITEM_SET_GENERATED(psm_item);
-
- /* call next dissector */
- if (!dissector_try_uint(l2cap_psm_dissector_table, (guint32) psm, next_tvb, pinfo, tree)) {
- /* not a known fixed PSM, try to find a registered service to a dynamic PSM */
- if(service != NULL && !dissector_try_uint(l2cap_service_dissector_table, *service, next_tvb, pinfo, tree)) {
- /* unknown protocol. declare as data */
- proto_tree_add_item(btl2cap_tree, hf_btl2cap_payload, next_tvb, 0, tvb_length(next_tvb), ENC_NA);
- }
- }
- }
- else {
- proto_tree_add_item(btl2cap_tree, hf_btl2cap_payload, next_tvb, 0, tvb_length(next_tvb), ENC_NA);
- }
- }
- offset+=(tvb_length_remaining(tvb, offset) - 2);
- proto_tree_add_item(btl2cap_tree, hf_btl2cap_fcs, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset += 2;
- return offset;
+ tvbuff_t *next_tvb = NULL;
+ guint16 control, segment;
+ guint16 sdulen;
+ proto_item* ti_control;
+ proto_tree* ti_control_subtree;
+ sdu_reassembly_t *mfp = NULL;
+ guint16 psm = (psm_data?psm_data->psm:0);
+
+ control = tvb_get_letohs(tvb, offset);
+ segment = (control & 0xC000) >> 14;
+ switch (segment) {
+ case 0:
+ col_append_str(pinfo->cinfo, COL_INFO, "[I] Unsegmented SDU");
+ break;
+ case 1:
+ col_append_str(pinfo->cinfo, COL_INFO, "[I] Start SDU");
+ break;
+ case 2:
+ col_append_str(pinfo->cinfo, COL_INFO, "[I] End SDU");
+ break;
+ case 3:
+ col_append_str(pinfo->cinfo, COL_INFO, "[I] Continuation SDU");
+ break;
+ }
+ ti_control = proto_tree_add_none_format(btl2cap_tree, hf_btl2cap_control, tvb,
+ offset, 2, "Control: %s reqseq:%d r:%d txseq:%d",
+ val_to_str_const((control & 0xC000) >> 14, control_sar_vals, "unknown"),
+ (control & 0x3F00) >> 8,
+ (control & 0x0080) >> 7,
+ (control & 0x007E) >> 1);
+ ti_control_subtree = proto_item_add_subtree(ti_control, ett_btl2cap_control);
+ proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_sar, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_reqseq, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_retransmissiondisable, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_txseq, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_type, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ /*Segmented frames with SAR = start have an extra SDU length header field*/
+ if (segment == 0x01) {
+ proto_item *pi;
+ sdulen = tvb_get_letohs(tvb, offset);
+ pi = proto_tree_add_item(btl2cap_tree, hf_btl2cap_sdulength, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+ length -= 6; /*Control, SDUlength, FCS*/
+
+ /* Detect malformed data */
+ if (sdulen < length) {
+ sdulen = length;
+ expert_add_info_format(pinfo, pi, PI_MALFORMED, PI_WARN,
+ "SDU length less than length of first packet");
+ }
+
+ if (!pinfo->fd->flags.visited) {
+ mfp = se_alloc(sizeof(sdu_reassembly_t));
+ mfp->first_frame = pinfo->fd->num;
+ mfp->last_frame = 0;
+ mfp->tot_len = sdulen;
+ mfp->reassembled = se_alloc(sdulen);
+ tvb_memcpy(tvb, mfp->reassembled, offset, length);
+ mfp->cur_off = length;
+ se_tree_insert32(config_data->start_fragments, pinfo->fd->num, mfp);
+ } else {
+ mfp = se_tree_lookup32(config_data->start_fragments, pinfo->fd->num);
+ }
+ if (mfp != NULL && mfp->last_frame) {
+ proto_item *item;
+ item = proto_tree_add_uint(btl2cap_tree, hf_btl2cap_reassembled_in, tvb, 0, 0, mfp->last_frame);
+ PROTO_ITEM_SET_GENERATED(item);
+ col_append_fstr(pinfo->cinfo, COL_INFO, "[Reassembled in #%u] ", mfp->last_frame);
+ }
+ } else {
+ length -= 4; /*Control, FCS*/
+ }
+ if (segment == 0x02 || segment == 0x03) {
+ mfp = se_tree_lookup32_le(config_data->start_fragments, pinfo->fd->num);
+ if (!pinfo->fd->flags.visited) {
+ if (mfp != NULL && !mfp->last_frame && (mfp->tot_len>=mfp->cur_off+length)) {
+ tvb_memcpy(tvb, mfp->reassembled+mfp->cur_off, offset, length);
+ mfp->cur_off += length;
+ if (segment == 0x02) {
+ mfp->last_frame = pinfo->fd->num;
+ }
+ }
+ }
+ if (mfp) {
+ proto_item *item;
+ item = proto_tree_add_uint(btl2cap_tree, hf_btl2cap_continuation_to, tvb, 0, 0, mfp->first_frame);
+ PROTO_ITEM_SET_GENERATED(item);
+ col_append_fstr(pinfo->cinfo, COL_INFO, "[Continuation to #%u] ", mfp->first_frame);
+ }
+ }
+ if (segment == 0x02 && mfp != NULL && mfp->last_frame == pinfo->fd->num) {
+ next_tvb = tvb_new_child_real_data(tvb, (guint8 *)mfp->reassembled, mfp->tot_len, mfp->tot_len);
+ add_new_data_source(pinfo, next_tvb, "Reassembled L2CAP");
+ }
+ /*pass up to higher layer if we have a complete packet*/
+ if (segment == 0x00) {
+ next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset) - 2, length);
+ }
+ if (next_tvb) {
+ if (psm) {
+ guint32 *service = se_tree_lookup32(psm_to_service_table, ((psm_data?psm_data->local_service:0)<<31) | psm);
+ proto_item *psm_item;
+
+ if (psm < BTL2CAP_DYNAMIC_PSM_START) {
+ psm_item = proto_tree_add_uint(btl2cap_tree, hf_btl2cap_psm, tvb, offset, 0, psm);
+ }
+ else {
+ psm_item = proto_tree_add_uint(btl2cap_tree, hf_btl2cap_psm_dynamic, tvb, offset, 0, psm);
+ if (service)
+ proto_item_append_text(psm_item," (%s)",
+ val_to_str_ext_const(*service, &vs_service_classes_ext, "Unknown service"));
+ }
+ PROTO_ITEM_SET_GENERATED(psm_item);
+
+ /* call next dissector */
+ if (!dissector_try_uint(l2cap_psm_dissector_table, (guint32) psm, next_tvb, pinfo, tree)) {
+ /* not a known fixed PSM, try to find a registered service to a dynamic PSM */
+ if ((service == NULL) || !dissector_try_uint(l2cap_service_dissector_table, *service, next_tvb, pinfo, tree)) {
+ /* unknown protocol. declare as data */
+ proto_tree_add_item(btl2cap_tree, hf_btl2cap_payload, next_tvb, 0, tvb_length(next_tvb), ENC_NA);
+ }
+ }
+ }
+ else {
+ proto_tree_add_item(btl2cap_tree, hf_btl2cap_payload, next_tvb, 0, tvb_length(next_tvb), ENC_NA);
+ }
+ }
+ offset += (tvb_length_remaining(tvb, offset) - 2);
+ proto_tree_add_item(btl2cap_tree, hf_btl2cap_fcs, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+ return offset;
}
static int
-dissect_s_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, proto_tree *btl2cap_tree, guint16 psm _U_, guint16 length _U_, int offset, config_data_t *config_data _U_)
+dissect_s_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, proto_tree *btl2cap_tree,
+ guint16 psm _U_, guint16 length _U_, int offset, config_data_t *config_data _U_)
{
- proto_item* ti_control;
- proto_tree* ti_control_subtree;
- guint16 control;
-
- control = tvb_get_letohs(tvb, offset);
- switch((control & 0x000C) >> 2)
- {
- case 0:
- col_append_str(pinfo->cinfo, COL_INFO, "[S] Receiver Ready");
- break;
- case 1:
- col_append_str(pinfo->cinfo, COL_INFO, "[S] Reject");
- break;
- default:
- col_append_str(pinfo->cinfo, COL_INFO, "[S] Unknown supervisory frame");
- break;
- }
- ti_control = proto_tree_add_none_format(btl2cap_tree, hf_btl2cap_control, tvb,
- offset, 2, "Control: %s reqseq:%d r:%d",
- val_to_str((control & 0x000C) >> 2, control_supervisory_vals, "unknown"),
- (control & 0x3F00) >> 8,
- (control & 0x0080) >> 7);
- ti_control_subtree = proto_item_add_subtree(ti_control, ett_btl2cap_control);
- proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_reqseq, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_retransmissiondisable, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_supervisory, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_type, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset += 2;
- proto_tree_add_item(ti_control_subtree, hf_btl2cap_fcs, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset += 2;
- return offset;
+ proto_item *ti_control;
+ proto_tree *ti_control_subtree;
+ guint16 control;
+
+ control = tvb_get_letohs(tvb, offset);
+ switch ((control & 0x000C) >> 2) {
+ case 0:
+ col_append_str(pinfo->cinfo, COL_INFO, "[S] Receiver Ready");
+ break;
+ case 1:
+ col_append_str(pinfo->cinfo, COL_INFO, "[S] Reject");
+ break;
+ default:
+ col_append_str(pinfo->cinfo, COL_INFO, "[S] Unknown supervisory frame");
+ break;
+ }
+ ti_control = proto_tree_add_none_format(btl2cap_tree, hf_btl2cap_control, tvb,
+ offset, 2, "Control: %s reqseq:%d r:%d",
+ val_to_str_const((control & 0x000C) >> 2, control_supervisory_vals, "unknown"),
+ (control & 0x3F00) >> 8,
+ (control & 0x0080) >> 7);
+ ti_control_subtree = proto_item_add_subtree(ti_control, ett_btl2cap_control);
+ proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_reqseq, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_retransmissiondisable, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_supervisory, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_type, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(ti_control_subtree, hf_btl2cap_fcs, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+ return offset;
}
/* Code to actually dissect the packets
@@ -1159,285 +1171,288 @@ dissect_s_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, proto_t
static void
dissect_btl2cap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- int offset=0;
- proto_item *ti=NULL;
- proto_tree *btl2cap_tree=NULL;
- guint16 length, cid;
- guint16 psm;
- guint16 control;
- tvbuff_t *next_tvb = NULL;
- psm_data_t *psm_data;
- bthci_acl_data_t *acl_data;
- btl2cap_data_t *l2cap_data;
- config_data_t *config_data;
- void* pd_save;
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "L2CAP");
- switch (pinfo->p2p_dir) {
-
- case P2P_DIR_SENT:
- col_add_str(pinfo->cinfo, COL_INFO, "Sent ");
- break;
-
- case P2P_DIR_RECV:
- col_add_str(pinfo->cinfo, COL_INFO, "Rcvd ");
- break;
-
- case P2P_DIR_UNKNOWN:
- col_clear(pinfo->cinfo, COL_INFO);
- break;
-
- default:
- col_add_fstr(pinfo->cinfo, COL_INFO, "Unknown direction %d ",
- pinfo->p2p_dir);
- break;
- }
-
- if(tree){
- ti=proto_tree_add_item(tree, proto_btl2cap, tvb, offset, -1, ENC_NA);
- btl2cap_tree=proto_item_add_subtree(ti, ett_btl2cap);
- }
-
- length = tvb_get_letohs(tvb, offset);
- proto_tree_add_item(btl2cap_tree, hf_btl2cap_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- cid = tvb_get_letohs(tvb, offset);
- proto_tree_add_item(btl2cap_tree, hf_btl2cap_cid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- acl_data=(bthci_acl_data_t *)pinfo->private_data;
- l2cap_data=ep_alloc(sizeof(btl2cap_data_t));
- l2cap_data->chandle=acl_data->chandle;
- l2cap_data->cid=cid;
- pd_save = pinfo->private_data;
- pinfo->private_data=l2cap_data;
-
- if(cid==BTL2CAP_FIXED_CID_SIGNAL){ /* This is a command packet*/
- while(offset<(length+4)) {
- proto_tree *btl2cap_cmd_tree=NULL;
- proto_item *ti_command=NULL;
- guint8 cmd_code;
- guint16 cmd_length;
- const gchar *cmd_str;
-
- ti_command=proto_tree_add_none_format(btl2cap_tree,
- hf_btl2cap_command, tvb,
- offset, length,
- "Command: ");
- btl2cap_cmd_tree=proto_item_add_subtree(ti_command, ett_btl2cap_cmd);
-
- cmd_code=tvb_get_guint8(tvb, offset);
- proto_tree_add_item(btl2cap_cmd_tree, hf_btl2cap_cmd_code, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- proto_tree_add_item(btl2cap_cmd_tree, hf_btl2cap_cmd_ident, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- cmd_length=tvb_get_letohs(tvb, offset);
- proto_tree_add_item(btl2cap_cmd_tree, hf_btl2cap_cmd_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_item_set_len(ti_command, cmd_length+4);
- offset+=2;
-
- cmd_str = val_to_str(cmd_code, command_code_vals, "Unknown cmd");
- proto_item_append_text(ti_command,"%s", cmd_str);
- col_append_fstr(pinfo->cinfo, COL_INFO, "%s", cmd_str);
-
- switch(cmd_code) {
- case 0x01: /* Command Reject */
- offset=dissect_comrej(tvb, offset, pinfo, btl2cap_cmd_tree);
- break;
-
- case 0x02: /* Connection Request */
- offset=dissect_connrequest(tvb, offset, pinfo, btl2cap_cmd_tree, FALSE);
- break;
-
- case 0x03: /* Connection Response */
- offset=dissect_connresponse(tvb, offset, pinfo, btl2cap_cmd_tree);
- break;
-
- case 0x04: /* Configure Request */
- offset=dissect_configrequest(tvb, offset, pinfo, btl2cap_cmd_tree, cmd_length);
- break;
-
- case 0x05: /* Configure Response */
- offset=dissect_configresponse(tvb, offset, pinfo, btl2cap_cmd_tree, cmd_length);
- break;
-
- case 0x06: /* Disconnect Request */
- offset=dissect_disconnrequestresponse(tvb, offset, pinfo, btl2cap_cmd_tree);
- break;
-
- case 0x07: /* Disconnect Response */
- offset=dissect_disconnrequestresponse(tvb, offset, pinfo, btl2cap_cmd_tree);
- break;
-
- case 0x08: /* Echo Request */
- offset+=tvb_length_remaining(tvb, offset);
- break;
-
- case 0x09: /* Echo Response */
- offset+=tvb_length_remaining(tvb, offset);
- break;
-
- case 0x0a: /* Information Request */
- offset=dissect_inforequest(tvb, offset, pinfo, btl2cap_cmd_tree);
- break;
-
- case 0x0b: /* Information Response */
- offset=dissect_inforesponse(tvb, offset, pinfo, btl2cap_cmd_tree);
- break;
-
- case 0x0c: /* Create Channel Request */
- offset=dissect_connrequest(tvb, offset, pinfo, btl2cap_cmd_tree, TRUE);
- break;
-
- case 0x0d: /* Create Channel Response */
- offset=dissect_chanresponse(tvb, offset, pinfo, btl2cap_cmd_tree);
- break;
-
- case 0x0e: /* Move Channel Request */
- offset=dissect_movechanrequest(tvb, offset, pinfo, btl2cap_cmd_tree);
- break;
-
- case 0x0f: /* Move Channel Response */
- offset=dissect_movechanresponse(tvb, offset, pinfo, btl2cap_cmd_tree);
- break;
-
- case 0x10: /* Move Channel Confirmation */
- offset=dissect_movechanconfirmation(tvb, offset, pinfo, btl2cap_cmd_tree);
- break;
-
- case 0x11: /* Move Channel Confirmation Response */
- offset=dissect_movechanconfirmationresponse(tvb, offset, pinfo, btl2cap_cmd_tree);
- break;
-
- default:
- proto_tree_add_item(btl2cap_cmd_tree, hf_btl2cap_cmd_data, tvb, offset, -1, ENC_NA);
- offset+=tvb_length_remaining(tvb, offset);
- break;
- }
- }
- }
- else if (cid == BTL2CAP_FIXED_CID_CONNLESS) { /* Connectionless reception channel */
- col_append_str(pinfo->cinfo, COL_INFO, "Connectionless reception channel");
-
- psm = tvb_get_letohs(tvb, offset);
- proto_tree_add_item(btl2cap_tree, hf_btl2cap_psm, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), length);
-
- /* call next dissector */
- if(!dissector_try_uint(l2cap_psm_dissector_table, (guint32) psm, next_tvb, pinfo, tree)) {
- /* not a known fixed PSM, try to find a registered service to a dynamic PSM */
- guint32 *service;
- service=se_tree_lookup32(psm_to_service_table, ((pinfo->p2p_dir==P2P_DIR_RECV)?0x80000000:0) | psm);
-
- if(!service || !dissector_try_uint(l2cap_service_dissector_table, *service, next_tvb, pinfo, tree)) {
- /* unknown protocol. declare as data */
- proto_tree_add_item(btl2cap_tree, hf_btl2cap_payload, tvb, offset, length, ENC_NA);
- }
- }
- }
- else if(cid < BTL2CAP_FIXED_CID_MAX) {
- if (cid == BTL2CAP_FIXED_CID_AMP_MAN) {
- control = tvb_get_letohs(tvb, offset);
- if(control & 0x1) {
- dissect_s_frame(tvb, pinfo, tree, btl2cap_tree, 0 /* unused */, length, offset, NULL /* unused */);
- } else {
- proto_item* ti_control;
- proto_tree* ti_control_subtree;
-
- ti_control = proto_tree_add_none_format(btl2cap_tree, hf_btl2cap_control, tvb,
- offset, 2, "Control: %s reqseq:%d r:%d txseq:%d",
- val_to_str((control & 0xC000) >> 14, control_sar_vals, "unknown"),
- (control & 0x3F00) >> 8,
- (control & 0x0080) >> 7,
- (control & 0x007E) >> 1);
- ti_control_subtree = proto_item_add_subtree(ti_control, ett_btl2cap_control);
- proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_sar, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_reqseq, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_retransmissiondisable, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_txseq, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_type, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset += 2;
- proto_tree_add_item(btl2cap_tree, hf_btl2cap_fcs, tvb, tvb_length(tvb)-2, 2, ENC_LITTLE_ENDIAN);
-
- next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset)-2, length);
- }
- }
- else {
- next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), length);
- }
- /* call next dissector */
- if(next_tvb && !dissector_try_uint(l2cap_cid_dissector_table, (guint32) cid,
- next_tvb, pinfo, tree)){
- /* unknown protocol. declare as data */
- proto_tree_add_item(btl2cap_tree, hf_btl2cap_payload, tvb, offset, length, ENC_NA);
- }
- }
- else /* if(cid >= BTL2CAP_FIXED_CID_MAX) */ { /* Connection oriented channel */
- emem_tree_key_t key[3];
- guint32 kcid;
- guint32 frame_number;
-
- frame_number = pinfo->fd->num;
- kcid = cid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x0000 : 0x8000);
-
- key[0].length = 1;
- key[0].key = &kcid;
- key[1].length = 1;
- key[1].key = &frame_number;
- key[2].length = 0;
- key[2].key = NULL;
-
- psm_data = se_tree_lookup32_array_le(cid_to_psm_table, key);
-
- if (psm_data && (psm_data->scid == (cid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x0000 : 0x8000)) || (psm_data->dcid == (cid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x0000 : 0x8000))))) {
- psm=psm_data->psm;
-
- if(pinfo->p2p_dir==P2P_DIR_RECV)
- config_data = &(psm_data->in);
- else
- config_data = &(psm_data->out);
- if(config_data->mode == 0) {
- dissect_b_frame(tvb, pinfo, tree, btl2cap_tree, psm, psm_data->local_service, length, offset);
- } else {
- control = tvb_get_letohs(tvb, offset);
- if(control & 0x1) {
- dissect_s_frame(tvb, pinfo, tree, btl2cap_tree, psm, length, offset, config_data);
- } else {
- dissect_i_frame(tvb, pinfo, tree, btl2cap_tree, psm_data, length, offset, config_data);
- }
- }
- } else {
- psm=0;
- dissect_b_frame(tvb, pinfo, tree, btl2cap_tree, psm, FALSE, length, offset);
- }
- }
- pinfo->private_data = pd_save;
+ int offset = 0;
+ proto_tree *btl2cap_tree = NULL;
+ guint16 length, cid;
+ guint16 psm;
+ guint16 control;
+ tvbuff_t *next_tvb = NULL;
+ psm_data_t *psm_data;
+ bthci_acl_data_t *acl_data;
+ btl2cap_data_t *l2cap_data;
+ config_data_t *config_data;
+ void* pd_save;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "L2CAP");
+ switch (pinfo->p2p_dir) {
+
+ case P2P_DIR_SENT:
+ col_add_str(pinfo->cinfo, COL_INFO, "Sent ");
+ break;
+
+ case P2P_DIR_RECV:
+ col_add_str(pinfo->cinfo, COL_INFO, "Rcvd ");
+ break;
+
+ case P2P_DIR_UNKNOWN:
+ col_clear(pinfo->cinfo, COL_INFO);
+ break;
+
+ default:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Unknown direction %d ",
+ pinfo->p2p_dir);
+ break;
+ }
+
+ if (tree) {
+ proto_item *ti;
+ ti = proto_tree_add_item(tree, proto_btl2cap, tvb, offset, -1, ENC_NA);
+ btl2cap_tree = proto_item_add_subtree(ti, ett_btl2cap);
+ }
+
+ length = tvb_get_letohs(tvb, offset);
+ proto_tree_add_item(btl2cap_tree, hf_btl2cap_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ cid = tvb_get_letohs(tvb, offset);
+ proto_tree_add_item(btl2cap_tree, hf_btl2cap_cid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ acl_data = (bthci_acl_data_t *)pinfo->private_data;
+ l2cap_data = ep_alloc(sizeof(btl2cap_data_t));
+ l2cap_data->chandle = acl_data->chandle;
+ l2cap_data->cid = cid;
+ pd_save = pinfo->private_data;
+ pinfo->private_data = l2cap_data;
+
+ if (cid == BTL2CAP_FIXED_CID_SIGNAL) { /* This is a command packet*/
+ while (offset < (length+4)) {
+ proto_item *ti_command;
+ proto_tree *btl2cap_cmd_tree;
+ guint8 cmd_code;
+ guint16 cmd_length;
+ const gchar *cmd_str;
+
+ ti_command = proto_tree_add_none_format(btl2cap_tree,
+ hf_btl2cap_command, tvb,
+ offset, length,
+ "Command: ");
+ btl2cap_cmd_tree = proto_item_add_subtree(ti_command, ett_btl2cap_cmd);
+
+ cmd_code = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(btl2cap_cmd_tree, hf_btl2cap_cmd_code, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+
+ proto_tree_add_item(btl2cap_cmd_tree, hf_btl2cap_cmd_ident, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+
+ cmd_length = tvb_get_letohs(tvb, offset);
+ proto_tree_add_item(btl2cap_cmd_tree, hf_btl2cap_cmd_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_item_set_len(ti_command, cmd_length+4);
+ offset += 2;
+
+ cmd_str = val_to_str_const(cmd_code, command_code_vals, "Unknown cmd");
+ proto_item_append_text(ti_command,"%s", cmd_str);
+ col_append_fstr(pinfo->cinfo, COL_INFO, "%s", cmd_str);
+
+ switch (cmd_code) {
+ case 0x01: /* Command Reject */
+ offset = dissect_comrej(tvb, offset, pinfo, btl2cap_cmd_tree);
+ break;
+
+ case 0x02: /* Connection Request */
+ offset = dissect_connrequest(tvb, offset, pinfo, btl2cap_cmd_tree, FALSE);
+ break;
+
+ case 0x03: /* Connection Response */
+ offset = dissect_connresponse(tvb, offset, pinfo, btl2cap_cmd_tree);
+ break;
+
+ case 0x04: /* Configure Request */
+ offset = dissect_configrequest(tvb, offset, pinfo, btl2cap_cmd_tree, cmd_length);
+ break;
+
+ case 0x05: /* Configure Response */
+ offset = dissect_configresponse(tvb, offset, pinfo, btl2cap_cmd_tree, cmd_length);
+ break;
+
+ case 0x06: /* Disconnect Request */
+ offset = dissect_disconnrequestresponse(tvb, offset, pinfo, btl2cap_cmd_tree);
+ break;
+
+ case 0x07: /* Disconnect Response */
+ offset = dissect_disconnrequestresponse(tvb, offset, pinfo, btl2cap_cmd_tree);
+ break;
+
+ case 0x08: /* Echo Request */
+ offset += tvb_reported_length_remaining(tvb, offset);
+ break;
+
+ case 0x09: /* Echo Response */
+ offset += tvb_reported_length_remaining(tvb, offset);
+ break;
+
+ case 0x0a: /* Information Request */
+ offset = dissect_inforequest(tvb, offset, pinfo, btl2cap_cmd_tree);
+ break;
+
+ case 0x0b: /* Information Response */
+ offset = dissect_inforesponse(tvb, offset, pinfo, btl2cap_cmd_tree);
+ break;
+
+ case 0x0c: /* Create Channel Request */
+ offset = dissect_connrequest(tvb, offset, pinfo, btl2cap_cmd_tree, TRUE);
+ break;
+
+ case 0x0d: /* Create Channel Response */
+ offset = dissect_chanresponse(tvb, offset, pinfo, btl2cap_cmd_tree);
+ break;
+
+ case 0x0e: /* Move Channel Request */
+ offset = dissect_movechanrequest(tvb, offset, pinfo, btl2cap_cmd_tree);
+ break;
+
+ case 0x0f: /* Move Channel Response */
+ offset = dissect_movechanresponse(tvb, offset, pinfo, btl2cap_cmd_tree);
+ break;
+
+ case 0x10: /* Move Channel Confirmation */
+ offset = dissect_movechanconfirmation(tvb, offset, pinfo, btl2cap_cmd_tree);
+ break;
+
+ case 0x11: /* Move Channel Confirmation Response */
+ offset = dissect_movechanconfirmationresponse(tvb, offset, pinfo, btl2cap_cmd_tree);
+ break;
+
+ default:
+ proto_tree_add_item(btl2cap_cmd_tree, hf_btl2cap_cmd_data, tvb, offset, -1, ENC_NA);
+ offset += tvb_reported_length_remaining(tvb, offset);
+ break;
+ }
+ }
+ }
+ else if (cid == BTL2CAP_FIXED_CID_CONNLESS) { /* Connectionless reception channel */
+ col_append_str(pinfo->cinfo, COL_INFO, "Connectionless reception channel");
+
+ psm = tvb_get_letohs(tvb, offset);
+ proto_tree_add_item(btl2cap_tree, hf_btl2cap_psm, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), length);
+
+ /* call next dissector */
+ if (!dissector_try_uint(l2cap_psm_dissector_table, (guint32) psm, next_tvb, pinfo, tree)) {
+ /* not a known fixed PSM, try to find a registered service to a dynamic PSM */
+ guint32 *service;
+ service = se_tree_lookup32(psm_to_service_table, ((pinfo->p2p_dir == P2P_DIR_RECV)?0x80000000:0) | psm);
+
+ if ((service == NULL) || !dissector_try_uint(l2cap_service_dissector_table, *service, next_tvb, pinfo, tree)) {
+ /* unknown protocol. declare as data */
+ proto_tree_add_item(btl2cap_tree, hf_btl2cap_payload, tvb, offset, length, ENC_NA);
+ }
+ }
+ }
+ else if (cid < BTL2CAP_FIXED_CID_MAX) {
+ if (cid == BTL2CAP_FIXED_CID_AMP_MAN) {
+ control = tvb_get_letohs(tvb, offset);
+ if (control & 0x1) {
+ dissect_s_frame(tvb, pinfo, tree, btl2cap_tree, 0 /* unused */, length, offset, NULL /* unused */);
+ } else {
+ proto_item* ti_control;
+ proto_tree* ti_control_subtree;
+
+ ti_control = proto_tree_add_none_format(btl2cap_tree, hf_btl2cap_control, tvb,
+ offset, 2, "Control: %s reqseq:%d r:%d txseq:%d",
+ val_to_str_const((control & 0xC000) >> 14, control_sar_vals, "unknown"),
+ (control & 0x3F00) >> 8,
+ (control & 0x0080) >> 7,
+ (control & 0x007E) >> 1);
+ ti_control_subtree = proto_item_add_subtree(ti_control, ett_btl2cap_control);
+ proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_sar, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_reqseq, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_retransmissiondisable, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_txseq, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ti_control_subtree, hf_btl2cap_control_type, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(btl2cap_tree, hf_btl2cap_fcs, tvb, tvb_length(tvb)-2, 2, ENC_LITTLE_ENDIAN);
+
+ next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset)-2, length);
+ }
+ }
+ else {
+ next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), length);
+ }
+ /* call next dissector */
+ if (next_tvb && !dissector_try_uint(l2cap_cid_dissector_table, (guint32) cid,
+ next_tvb, pinfo, tree)) {
+ /* unknown protocol. declare as data */
+ proto_tree_add_item(btl2cap_tree, hf_btl2cap_payload, tvb, offset, length, ENC_NA);
+ }
+ }
+ else /* if (cid >= BTL2CAP_FIXED_CID_MAX) */ { /* Connection oriented channel */
+ emem_tree_key_t key[3];
+ guint32 kcid;
+ guint32 frame_number;
+
+ frame_number = pinfo->fd->num;
+ kcid = cid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x0000 : 0x8000);
+
+ key[0].length = 1;
+ key[0].key = &kcid;
+ key[1].length = 1;
+ key[1].key = &frame_number;
+ key[2].length = 0;
+ key[2].key = NULL;
+
+ psm_data = se_tree_lookup32_array_le(cid_to_psm_table, key);
+
+ if (psm_data &&
+ ((psm_data->scid == (cid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x0000 : 0x8000)))
+ || (psm_data->dcid == (cid | ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x0000 : 0x8000))))
+ ) {
+ psm = psm_data->psm;
+
+ if (pinfo->p2p_dir == P2P_DIR_RECV)
+ config_data = &(psm_data->in);
+ else
+ config_data = &(psm_data->out);
+ if (config_data->mode == 0) {
+ dissect_b_frame(tvb, pinfo, tree, btl2cap_tree, psm, psm_data->local_service, length, offset);
+ } else {
+ control = tvb_get_letohs(tvb, offset);
+ if (control & 0x1) {
+ dissect_s_frame(tvb, pinfo, tree, btl2cap_tree, psm, length, offset, config_data);
+ } else {
+ dissect_i_frame(tvb, pinfo, tree, btl2cap_tree, psm_data, length, offset, config_data);
+ }
+ }
+ } else {
+ psm = 0;
+ dissect_b_frame(tvb, pinfo, tree, btl2cap_tree, psm, FALSE, length, offset);
+ }
+ }
+ pinfo->private_data = pd_save;
}
static int
btl2cap_sdp_tap_packet(void *arg _U_, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *arg2)
{
- btsdp_data_t *sdp_data = (btsdp_data_t *) arg2;
+ btsdp_data_t *sdp_data = (btsdp_data_t *) arg2;
- if( sdp_data->protocol == BTSDP_L2CAP_PROTOCOL_UUID ) {
- guint32 token, *psm_service;
+ if (sdp_data->protocol == BTSDP_L2CAP_PROTOCOL_UUID) {
+ guint32 token, *psm_service;
- token = sdp_data->channel | ((sdp_data->flags & BTSDP_LOCAL_SERVICE_FLAG_MASK)<<31);
+ token = sdp_data->channel | ((sdp_data->flags & BTSDP_LOCAL_SERVICE_FLAG_MASK)<<31);
- psm_service=se_tree_lookup32(psm_to_service_table, token);
- if(!psm_service){
- psm_service=se_alloc0(sizeof(guint32));
- se_tree_insert32(psm_to_service_table, token, psm_service);
- }
- *psm_service = sdp_data->service;
- }
- return 0;
+ psm_service = se_tree_lookup32(psm_to_service_table, token);
+ if (!psm_service) {
+ psm_service = se_alloc0(sizeof(guint32));
+ se_tree_insert32(psm_to_service_table, token, psm_service);
+ }
+ *psm_service = sdp_data->service;
+ }
+ return 0;
}
@@ -1446,441 +1461,441 @@ void
proto_register_btl2cap(void)
{
- /* Setup list of header fields See Section 1.6.1 for details*/
- static hf_register_info hf[] = {
- { &hf_btl2cap_length,
- { "Length", "btl2cap.length",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "L2CAP Payload Length", HFILL }
- },
- { &hf_btl2cap_cid,
- { "CID", "btl2cap.cid",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- "L2CAP Channel Identifier", HFILL }
- },
- { &hf_btl2cap_payload,
- { "Payload", "btl2cap.payload",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- "L2CAP Payload", HFILL }
- },
- { &hf_btl2cap_command,
- { "Command", "btl2cap.command",
- FT_NONE, BASE_NONE, NULL, 0x0,
- "L2CAP Command", HFILL }
- },
- { &hf_btl2cap_cmd_code,
- { "Command Code", "btl2cap.cmd_code",
- FT_UINT8, BASE_HEX, VALS(command_code_vals), 0x0,
- "L2CAP Command Code", HFILL }
- },
- { &hf_btl2cap_cmd_ident,
- { "Command Identifier", "btl2cap.cmd_ident",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- "L2CAP Command Identifier", HFILL }
- },
- { &hf_btl2cap_cmd_length,
- { "Command Length", "btl2cap.cmd_length",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "L2CAP Command Length", HFILL }
- },
- { &hf_btl2cap_cmd_data,
- { "Command Data", "btl2cap.cmd_data",
- FT_NONE, BASE_NONE, NULL, 0x0,
- "L2CAP Command Data", HFILL }
- },
- { &hf_btl2cap_psm,
- { "PSM", "btl2cap.psm",
- FT_UINT16, BASE_HEX, VALS(psm_vals), 0x0,
- "Protocol/Service Multiplexer", HFILL }
- },
- { &hf_btl2cap_psm_dynamic,
- { "Dynamic PSM", "btl2cap.psm",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- "Dynamic Protocol/Service Multiplexer", HFILL }
- },
- { &hf_btl2cap_scid,
- { "Source CID", "btl2cap.scid",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- "Source Channel Identifier", HFILL }
- },
- { &hf_btl2cap_dcid,
- { "Destination CID", "btl2cap.dcid",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- "Destination Channel Identifier", HFILL }
- },
- { &hf_btl2cap_icid,
- { "Initiator CID", "btl2cap.icid",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- "Initiator Channel Identifier", HFILL }
- },
- { &hf_btl2cap_controller,
- { "Controller ID", "btl2cap.ctrl_id",
- FT_UINT8, BASE_DEC, VALS(ctrl_id_code_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_btl2cap_dcontroller,
- { "Controller ID", "btl2cap.dctrl_id",
- FT_UINT8, BASE_DEC, VALS(ctrl_id_code_vals), 0x0,
- "Destination Controller ID", HFILL }
- },
- { &hf_btl2cap_result,
- { "Result", "btl2cap.result",
- FT_UINT16, BASE_HEX, VALS(result_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_btl2cap_move_result,
- { "Move Result", "btl2cap.move_result",
- FT_UINT16, BASE_HEX, VALS(move_result_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_btl2cap_move_confirmation_result,
- { "Move Result", "btl2cap.move_result",
- FT_UINT16, BASE_HEX, VALS(move_result_confirmation_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_btl2cap_status,
- { "Status", "btl2cap.status",
- FT_UINT16, BASE_HEX, VALS(status_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_btl2cap_rej_reason,
- { "Reason", "btl2cap.rej_reason",
- FT_UINT16, BASE_HEX, VALS(reason_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_btl2cap_sig_mtu,
- { "Maximum Signalling MTU", "btl2cap.sig_mtu",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_btl2cap_info_mtu,
- { "Remote Entity MTU", "btl2cap.info_mtu",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Remote entity acceptable connectionless MTU", HFILL }
- },
- { &hf_btl2cap_info_flowcontrol,
- { "Flow Control Mode", "btl2cap.info_flowcontrol",
- FT_UINT32, BASE_DEC, NULL, 0x01,
- "Flow Control mode support", HFILL }
- },
- { &hf_btl2cap_info_retransmission,
- { "Retransmission Mode", "btl2cap.info_retransmission",
- FT_UINT32, BASE_DEC, NULL, 0x02,
- "Retransmission mode support", HFILL }
- },
- { &hf_btl2cap_info_bidirqos,
- { "Bi-Directional QOS", "btl2cap.info_bidirqos",
- FT_UINT32, BASE_DEC, NULL, 0x04,
- "Bi-Directional QOS support", HFILL }
- },
- { &hf_btl2cap_info_enh_retransmission,
- { "Enhancded Retransmission Mode", "btl2cap.info_enh_retransmission",
- FT_UINT32, BASE_DEC, NULL, 0x08,
- "Enhancded Retransmission mode support", HFILL }
- },
- { &hf_btl2cap_info_streaming,
- { "Streaming Mode", "btl2cap.info_streaming",
- FT_UINT32, BASE_DEC, NULL, 0x10,
- "Streaming mode support", HFILL }
- },
- { &hf_btl2cap_info_fcs,
- { "FCS", "btl2cap.info_fcs",
- FT_UINT32, BASE_DEC, NULL, 0x20,
- "FCS support", HFILL }
- },
- { &hf_btl2cap_info_flow_spec,
- { "Extended Flow Specification for BR/EDR", "btl2cap.info_flow_spec",
- FT_UINT32, BASE_DEC, NULL, 0x40,
- "Extended Flow Specification for BR/EDR support", HFILL }
- },
- { &hf_btl2cap_info_fixedchan,
- { "Fixed Channels", "btl2cap.info_fixedchan",
- FT_UINT32, BASE_DEC, NULL, 0x80,
- "Fixed Channels support", HFILL }
- },
- { &hf_btl2cap_info_window,
- { "Extended Window Size", "btl2cap.info_window",
- FT_UINT32, BASE_DEC, NULL, 0x01,
- "Extended Window Size support", HFILL }
- },
- { &hf_btl2cap_info_unicast,
- { "Unicast Connectionless Data Reception", "btl2cap.info_unicast",
- FT_UINT32, BASE_DEC, NULL, 0x02,
- "Unicast Connectionless Data Reception support", HFILL }
- },
- { &hf_btl2cap_info_fixedchans,
- { "Fixed Channels", "btl2cap.info_fixedchans",
- FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_btl2cap_info_fixedchans_null,
- { "Null identifier", "btl2cap.info_fixedchans_null",
- FT_UINT32, BASE_DEC, NULL, 0x1,
- NULL, HFILL }
- },
- { &hf_btl2cap_info_fixedchans_signal,
- { "L2CAP signaling channel", "btl2cap.info_fixedchans_signal",
- FT_UINT32, BASE_DEC, NULL, 0x2,
- NULL, HFILL }
- },
- { &hf_btl2cap_info_fixedchans_connless,
- { "Connectionless reception", "btl2cap.info_fixedchans_connless",
- FT_UINT32, BASE_DEC, NULL, 0x4,
- NULL, HFILL }
- },
- { &hf_btl2cap_info_fixedchans_amp_man,
- { "AMP Manager protocol", "btl2cap.info_fixedchans_amp_man",
- FT_UINT32, BASE_DEC, NULL, 0x8,
- NULL, HFILL }
- },
- { &hf_btl2cap_info_fixedchans_amp_test,
- { "AMP Test Manager", "btl2cap.info_fixedchans_amp_test",
- FT_UINT32, BASE_DEC, NULL, 0x80000000,
- NULL, HFILL }
- },
- { &hf_btl2cap_info_type,
- { "Information Type", "btl2cap.info_type",
- FT_UINT16, BASE_HEX, VALS(info_type_vals), 0x0,
- "Type of implementation-specific information", HFILL }
- },
- { &hf_btl2cap_info_result,
- { "Result", "btl2cap.info_result",
- FT_UINT16, BASE_HEX, VALS(info_result_vals), 0x0,
- "Information about the success of the request", HFILL }
- },
- { &hf_btl2cap_info_extfeatures,
- { "Extended Features", "btl2cap.info_extfeatures",
- FT_NONE, BASE_NONE, NULL, 0x0,
- "Extended Features Mask", HFILL }
- },
- { &hf_btl2cap_continuation_flag,
- { "Continuation Flag", "btl2cap.continuation",
- FT_BOOLEAN, 16, NULL, 0x0001,
- NULL, HFILL }
- },
- { &hf_btl2cap_configuration_result,
- { "Result", "btl2cap.conf_result",
- FT_UINT16, BASE_HEX, VALS(configuration_result_vals), 0x0,
- "Configuration Result", HFILL }
- },
- { &hf_btl2cap_option_type,
- { "Type", "btl2cap.option_type",
- FT_UINT8, BASE_HEX, VALS(option_type_vals), 0x0,
- "Type of option", HFILL }
- },
- { &hf_btl2cap_option_length,
- { "Length", "btl2cap.option_length",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Number of octets in option payload", HFILL }
- },
- { &hf_btl2cap_option_mtu,
- { "MTU", "btl2cap.option_mtu",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Maximum Transmission Unit", HFILL }
- },
- { &hf_btl2cap_option_flushTO,
- { "Flush Timeout (ms)", "btl2cap.option_flushto",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Flush Timeout in milliseconds", HFILL }
- },
- { &hf_btl2cap_option_flush_to_us,
- { "Flush Timeout (us)", "btl2cap.option_flushto",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Flush Timeout (microseconds)", HFILL }
- },
- { &hf_btl2cap_option_sdu_size,
- { "Maximum SDU Size", "btl2cap.option_sdu_size",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_btl2cap_option_sdu_arrival_time,
- { "SDU Inter-arrival Time (us)", "btl2cap.option_sdu_arrival_time",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "SDU Inter-arrival Time (microseconds)", HFILL }
- },
- { &hf_btl2cap_option_identifier,
- { "Identifier", "btl2cap.option_ident",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- "Flow Specification Identifier", HFILL }
- },
- { &hf_btl2cap_option_access_latency,
- { "Access Latency (us)", "btl2cap.option_access_latency",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Access Latency (microseconds)", HFILL }
- },
- { &hf_btl2cap_option_flags,
- { "Flags", "btl2cap.option_flags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- "Flags - must be set to 0 (Reserved for future use)", HFILL }
- },
- { &hf_btl2cap_option_service_type,
- { "Service Type", "btl2cap.option_servicetype",
- FT_UINT8, BASE_HEX, VALS(option_servicetype_vals), 0x0,
- "Level of service required", HFILL }
- },
- { &hf_btl2cap_option_tokenrate,
- { "Token Rate (bytes/s)", "btl2cap.option_tokenrate",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Rate at which traffic credits are granted (bytes/s)", HFILL }
- },
- { &hf_btl2cap_option_tokenbucketsize,
- { "Token Bucket Size (bytes)", "btl2cap.option_tokenbsize",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Size of the token bucket (bytes)", HFILL }
- },
- { &hf_btl2cap_option_peakbandwidth,
- { "Peak Bandwidth (bytes/s)", "btl2cap.option_peakbandwidth",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Limit how fast packets may be sent (bytes/s)", HFILL }
- },
- { &hf_btl2cap_option_latency,
- { "Latency (microseconds)", "btl2cap.option_latency",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Maximal acceptable delay (microseconds)", HFILL }
- },
- { &hf_btl2cap_option_delayvariation,
- { "Delay Variation (microseconds)", "btl2cap.option_delayvar",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Difference between maximum and minimum delay (microseconds)", HFILL }
- },
- { &hf_btl2cap_option_retransmissionmode,
- { "Mode", "btl2cap.retransmissionmode",
- FT_UINT8, BASE_HEX, VALS(option_retransmissionmode_vals), 0x0,
- "Retransmission/Flow Control mode", HFILL }
- },
- { &hf_btl2cap_option_txwindow,
- { "TxWindow", "btl2cap.txwindow",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Retransmission window size", HFILL }
- },
- { &hf_btl2cap_option_maxtransmit,
- { "MaxTransmit", "btl2cap.maxtransmit",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Maximum I-frame retransmissions", HFILL }
- },
- { &hf_btl2cap_option_retransmittimeout,
- { "Retransmit timeout (ms)", "btl2cap.retransmittimeout",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Retransmission timeout (milliseconds)", HFILL }
- },
- { &hf_btl2cap_option_monitortimeout,
- { "Monitor Timeout (ms)", "btl2cap.monitortimeout",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "S-frame transmission interval (milliseconds)", HFILL }
- },
- { &hf_btl2cap_option_mps,
- { "MPS", "btl2cap.mps",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Maximum PDU Payload Size", HFILL }
- },
- { &hf_btl2cap_option_fcs,
- { "FCS", "btl2cap.option_fcs",
- FT_UINT16, BASE_HEX, VALS(option_fcs_vals), 0x0,
- "Frame Check Sequence", HFILL }
- },
- { &hf_btl2cap_option_window,
- { "Extended Window Size", "btl2cap.option_window",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_btl2cap_option,
- { "Configuration Parameter Option", "btl2cap.conf_param_option",
- FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_btl2cap_control_sar,
- { "Segmentation and reassembly", "btl2cap.control_sar",
- FT_UINT16, BASE_HEX, VALS(control_sar_vals), 0xC000,
- NULL, HFILL }
- },
- { &hf_btl2cap_control_reqseq,
- { "ReqSeq", "btl2cap.control_reqseq",
- FT_UINT16, BASE_DEC, NULL, 0x3F00,
- "Request Sequence Number", HFILL }
- },
- { &hf_btl2cap_control_txseq,
- { "TxSeq", "btl2cap.control_txseq",
- FT_UINT16, BASE_DEC, NULL, 0x007E,
- "Transmitted Sequence Number", HFILL }
- },
- { &hf_btl2cap_control_retransmissiondisable,
- { "R", "btl2cap.control_retransmissiondisable",
- FT_UINT16, BASE_HEX, NULL, 0x0080,
- "Retransmission Disable", HFILL }
- },
- { &hf_btl2cap_control_supervisory,
- { "S", "btl2cap.control_supervisory",
- FT_UINT16, BASE_HEX, VALS(control_supervisory_vals), 0x000C,
- "Supervisory Function", HFILL }
- },
- { &hf_btl2cap_control_type,
- { "Frame Type", "btl2cap.control_type",
- FT_UINT16, BASE_HEX, VALS(control_type_vals), 0x0001,
- NULL, HFILL }
- },
- { &hf_btl2cap_control,
- { "Control field", "btl2cap.control",
- FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_btl2cap_fcs,
- { "FCS", "btl2cap.fcs",
- FT_UINT16, BASE_HEX, NULL, 0,
- "Frame Check Sequence", HFILL }
- },
- { &hf_btl2cap_sdulength,
- { "SDU Length", "btl2cap.sdulength",
- FT_UINT16, BASE_DEC, NULL, 0,
- NULL, HFILL }
- },
- { &hf_btl2cap_reassembled_in,
- { "This SDU is reassembled in frame", "btl2cap.reassembled_in",
- FT_FRAMENUM, BASE_NONE, NULL, 0,
- "This SDU is reassembled in frame #", HFILL }
- },
- { &hf_btl2cap_continuation_to,
- { "This is a continuation to the SDU in frame", "btl2cap.continuation_to",
- FT_FRAMENUM, BASE_NONE, NULL, 0,
- "This is a continuation to the SDU in frame #", HFILL }
- }
- };
-
- /* Setup protocol subtree array */
- static gint *ett[] = {
- &ett_btl2cap,
- &ett_btl2cap_cmd,
- &ett_btl2cap_option,
- &ett_btl2cap_extfeatures,
- &ett_btl2cap_fixedchans,
- &ett_btl2cap_control
- };
-
- /* Register the protocol name and description */
- proto_btl2cap = proto_register_protocol("Bluetooth L2CAP Protocol", "L2CAP", "btl2cap");
-
- register_dissector("btl2cap", dissect_btl2cap, proto_btl2cap);
-
- /* subdissector code */
- l2cap_psm_dissector_table = register_dissector_table("btl2cap.psm", "L2CAP PSM", FT_UINT16, BASE_HEX);
- l2cap_service_dissector_table = register_dissector_table("btl2cap.service", "L2CAP Service", FT_UINT16, BASE_HEX);
- l2cap_cid_dissector_table = register_dissector_table("btl2cap.cid", "L2CAP CID", FT_UINT16, BASE_HEX);
-
- /* Required function calls to register the header fields and subtrees used */
- proto_register_field_array(proto_btl2cap, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
-
- cid_to_psm_table=se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "btl2cap scid to psm");
- psm_to_service_table=se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "btl2cap psm to service uuid");
+ /* Setup list of header fields See Section 1.6.1 for details*/
+ static hf_register_info hf[] = {
+ { &hf_btl2cap_length,
+ { "Length", "btl2cap.length",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "L2CAP Payload Length", HFILL }
+ },
+ { &hf_btl2cap_cid,
+ { "CID", "btl2cap.cid",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ "L2CAP Channel Identifier", HFILL }
+ },
+ { &hf_btl2cap_payload,
+ { "Payload", "btl2cap.payload",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "L2CAP Payload", HFILL }
+ },
+ { &hf_btl2cap_command,
+ { "Command", "btl2cap.command",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ "L2CAP Command", HFILL }
+ },
+ { &hf_btl2cap_cmd_code,
+ { "Command Code", "btl2cap.cmd_code",
+ FT_UINT8, BASE_HEX, VALS(command_code_vals), 0x0,
+ "L2CAP Command Code", HFILL }
+ },
+ { &hf_btl2cap_cmd_ident,
+ { "Command Identifier", "btl2cap.cmd_ident",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ "L2CAP Command Identifier", HFILL }
+ },
+ { &hf_btl2cap_cmd_length,
+ { "Command Length", "btl2cap.cmd_length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "L2CAP Command Length", HFILL }
+ },
+ { &hf_btl2cap_cmd_data,
+ { "Command Data", "btl2cap.cmd_data",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ "L2CAP Command Data", HFILL }
+ },
+ { &hf_btl2cap_psm,
+ { "PSM", "btl2cap.psm",
+ FT_UINT16, BASE_HEX, VALS(psm_vals), 0x0,
+ "Protocol/Service Multiplexer", HFILL }
+ },
+ { &hf_btl2cap_psm_dynamic,
+ { "Dynamic PSM", "btl2cap.psm",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ "Dynamic Protocol/Service Multiplexer", HFILL }
+ },
+ { &hf_btl2cap_scid,
+ { "Source CID", "btl2cap.scid",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ "Source Channel Identifier", HFILL }
+ },
+ { &hf_btl2cap_dcid,
+ { "Destination CID", "btl2cap.dcid",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ "Destination Channel Identifier", HFILL }
+ },
+ { &hf_btl2cap_icid,
+ { "Initiator CID", "btl2cap.icid",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ "Initiator Channel Identifier", HFILL }
+ },
+ { &hf_btl2cap_controller,
+ { "Controller ID", "btl2cap.ctrl_id",
+ FT_UINT8, BASE_DEC, VALS(ctrl_id_code_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_btl2cap_dcontroller,
+ { "Controller ID", "btl2cap.dctrl_id",
+ FT_UINT8, BASE_DEC, VALS(ctrl_id_code_vals), 0x0,
+ "Destination Controller ID", HFILL }
+ },
+ { &hf_btl2cap_result,
+ { "Result", "btl2cap.result",
+ FT_UINT16, BASE_HEX, VALS(result_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_btl2cap_move_result,
+ { "Move Result", "btl2cap.move_result",
+ FT_UINT16, BASE_HEX, VALS(move_result_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_btl2cap_move_confirmation_result,
+ { "Move Result", "btl2cap.move_result",
+ FT_UINT16, BASE_HEX, VALS(move_result_confirmation_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_btl2cap_status,
+ { "Status", "btl2cap.status",
+ FT_UINT16, BASE_HEX, VALS(status_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_btl2cap_rej_reason,
+ { "Reason", "btl2cap.rej_reason",
+ FT_UINT16, BASE_HEX, VALS(reason_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_btl2cap_sig_mtu,
+ { "Maximum Signalling MTU", "btl2cap.sig_mtu",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_btl2cap_info_mtu,
+ { "Remote Entity MTU", "btl2cap.info_mtu",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Remote entity acceptable connectionless MTU", HFILL }
+ },
+ { &hf_btl2cap_info_flowcontrol,
+ { "Flow Control Mode", "btl2cap.info_flowcontrol",
+ FT_UINT32, BASE_DEC, NULL, 0x01,
+ "Flow Control mode support", HFILL }
+ },
+ { &hf_btl2cap_info_retransmission,
+ { "Retransmission Mode", "btl2cap.info_retransmission",
+ FT_UINT32, BASE_DEC, NULL, 0x02,
+ "Retransmission mode support", HFILL }
+ },
+ { &hf_btl2cap_info_bidirqos,
+ { "Bi-Directional QOS", "btl2cap.info_bidirqos",
+ FT_UINT32, BASE_DEC, NULL, 0x04,
+ "Bi-Directional QOS support", HFILL }
+ },
+ { &hf_btl2cap_info_enh_retransmission,
+ { "Enhanced Retransmission Mode", "btl2cap.info_enh_retransmission",
+ FT_UINT32, BASE_DEC, NULL, 0x08,
+ "Enhanced Retransmission mode support", HFILL }
+ },
+ { &hf_btl2cap_info_streaming,
+ { "Streaming Mode", "btl2cap.info_streaming",
+ FT_UINT32, BASE_DEC, NULL, 0x10,
+ "Streaming mode support", HFILL }
+ },
+ { &hf_btl2cap_info_fcs,
+ { "FCS", "btl2cap.info_fcs",
+ FT_UINT32, BASE_DEC, NULL, 0x20,
+ "FCS support", HFILL }
+ },
+ { &hf_btl2cap_info_flow_spec,
+ { "Extended Flow Specification for BR/EDR", "btl2cap.info_flow_spec",
+ FT_UINT32, BASE_DEC, NULL, 0x40,
+ "Extended Flow Specification for BR/EDR support", HFILL }
+ },
+ { &hf_btl2cap_info_fixedchan,
+ { "Fixed Channels", "btl2cap.info_fixedchan",
+ FT_UINT32, BASE_DEC, NULL, 0x80,
+ "Fixed Channels support", HFILL }
+ },
+ { &hf_btl2cap_info_window,
+ { "Extended Window Size", "btl2cap.info_window",
+ FT_UINT32, BASE_DEC, NULL, 0x01,
+ "Extended Window Size support", HFILL }
+ },
+ { &hf_btl2cap_info_unicast,
+ { "Unicast Connectionless Data Reception", "btl2cap.info_unicast",
+ FT_UINT32, BASE_DEC, NULL, 0x02,
+ "Unicast Connectionless Data Reception support", HFILL }
+ },
+ { &hf_btl2cap_info_fixedchans,
+ { "Fixed Channels", "btl2cap.info_fixedchans",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_btl2cap_info_fixedchans_null,
+ { "Null identifier", "btl2cap.info_fixedchans_null",
+ FT_UINT32, BASE_DEC, NULL, 0x1,
+ NULL, HFILL }
+ },
+ { &hf_btl2cap_info_fixedchans_signal,
+ { "L2CAP signaling channel", "btl2cap.info_fixedchans_signal",
+ FT_UINT32, BASE_DEC, NULL, 0x2,
+ NULL, HFILL }
+ },
+ { &hf_btl2cap_info_fixedchans_connless,
+ { "Connectionless reception", "btl2cap.info_fixedchans_connless",
+ FT_UINT32, BASE_DEC, NULL, 0x4,
+ NULL, HFILL }
+ },
+ { &hf_btl2cap_info_fixedchans_amp_man,
+ { "AMP Manager protocol", "btl2cap.info_fixedchans_amp_man",
+ FT_UINT32, BASE_DEC, NULL, 0x8,
+ NULL, HFILL }
+ },
+ { &hf_btl2cap_info_fixedchans_amp_test,
+ { "AMP Test Manager", "btl2cap.info_fixedchans_amp_test",
+ FT_UINT32, BASE_DEC, NULL, 0x80000000,
+ NULL, HFILL }
+ },
+ { &hf_btl2cap_info_type,
+ { "Information Type", "btl2cap.info_type",
+ FT_UINT16, BASE_HEX, VALS(info_type_vals), 0x0,
+ "Type of implementation-specific information", HFILL }
+ },
+ { &hf_btl2cap_info_result,
+ { "Result", "btl2cap.info_result",
+ FT_UINT16, BASE_HEX, VALS(info_result_vals), 0x0,
+ "Information about the success of the request", HFILL }
+ },
+ { &hf_btl2cap_info_extfeatures,
+ { "Extended Features", "btl2cap.info_extfeatures",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ "Extended Features Mask", HFILL }
+ },
+ { &hf_btl2cap_continuation_flag,
+ { "Continuation Flag", "btl2cap.continuation",
+ FT_BOOLEAN, 16, NULL, 0x0001,
+ NULL, HFILL }
+ },
+ { &hf_btl2cap_configuration_result,
+ { "Result", "btl2cap.conf_result",
+ FT_UINT16, BASE_HEX, VALS(configuration_result_vals), 0x0,
+ "Configuration Result", HFILL }
+ },
+ { &hf_btl2cap_option_type,
+ { "Type", "btl2cap.option_type",
+ FT_UINT8, BASE_HEX, VALS(option_type_vals), 0x0,
+ "Type of option", HFILL }
+ },
+ { &hf_btl2cap_option_length,
+ { "Length", "btl2cap.option_length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Number of octets in option payload", HFILL }
+ },
+ { &hf_btl2cap_option_mtu,
+ { "MTU", "btl2cap.option_mtu",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Maximum Transmission Unit", HFILL }
+ },
+ { &hf_btl2cap_option_flushTO,
+ { "Flush Timeout (ms)", "btl2cap.option_flushto",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Flush Timeout in milliseconds", HFILL }
+ },
+ { &hf_btl2cap_option_flush_to_us,
+ { "Flush Timeout (us)", "btl2cap.option_flushto",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Flush Timeout (microseconds)", HFILL }
+ },
+ { &hf_btl2cap_option_sdu_size,
+ { "Maximum SDU Size", "btl2cap.option_sdu_size",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_btl2cap_option_sdu_arrival_time,
+ { "SDU Inter-arrival Time (us)", "btl2cap.option_sdu_arrival_time",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "SDU Inter-arrival Time (microseconds)", HFILL }
+ },
+ { &hf_btl2cap_option_identifier,
+ { "Identifier", "btl2cap.option_ident",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ "Flow Specification Identifier", HFILL }
+ },
+ { &hf_btl2cap_option_access_latency,
+ { "Access Latency (us)", "btl2cap.option_access_latency",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Access Latency (microseconds)", HFILL }
+ },
+ { &hf_btl2cap_option_flags,
+ { "Flags", "btl2cap.option_flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ "Flags - must be set to 0 (Reserved for future use)", HFILL }
+ },
+ { &hf_btl2cap_option_service_type,
+ { "Service Type", "btl2cap.option_servicetype",
+ FT_UINT8, BASE_HEX, VALS(option_servicetype_vals), 0x0,
+ "Level of service required", HFILL }
+ },
+ { &hf_btl2cap_option_tokenrate,
+ { "Token Rate (bytes/s)", "btl2cap.option_tokenrate",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Rate at which traffic credits are granted (bytes/s)", HFILL }
+ },
+ { &hf_btl2cap_option_tokenbucketsize,
+ { "Token Bucket Size (bytes)", "btl2cap.option_tokenbsize",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Size of the token bucket (bytes)", HFILL }
+ },
+ { &hf_btl2cap_option_peakbandwidth,
+ { "Peak Bandwidth (bytes/s)", "btl2cap.option_peakbandwidth",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Limit how fast packets may be sent (bytes/s)", HFILL }
+ },
+ { &hf_btl2cap_option_latency,
+ { "Latency (microseconds)", "btl2cap.option_latency",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Maximal acceptable delay (microseconds)", HFILL }
+ },
+ { &hf_btl2cap_option_delayvariation,
+ { "Delay Variation (microseconds)", "btl2cap.option_delayvar",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Difference between maximum and minimum delay (microseconds)", HFILL }
+ },
+ { &hf_btl2cap_option_retransmissionmode,
+ { "Mode", "btl2cap.retransmissionmode",
+ FT_UINT8, BASE_HEX, VALS(option_retransmissionmode_vals), 0x0,
+ "Retransmission/Flow Control mode", HFILL }
+ },
+ { &hf_btl2cap_option_txwindow,
+ { "TxWindow", "btl2cap.txwindow",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Retransmission window size", HFILL }
+ },
+ { &hf_btl2cap_option_maxtransmit,
+ { "MaxTransmit", "btl2cap.maxtransmit",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Maximum I-frame retransmissions", HFILL }
+ },
+ { &hf_btl2cap_option_retransmittimeout,
+ { "Retransmit timeout (ms)", "btl2cap.retransmittimeout",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Retransmission timeout (milliseconds)", HFILL }
+ },
+ { &hf_btl2cap_option_monitortimeout,
+ { "Monitor Timeout (ms)", "btl2cap.monitortimeout",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "S-frame transmission interval (milliseconds)", HFILL }
+ },
+ { &hf_btl2cap_option_mps,
+ { "MPS", "btl2cap.mps",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Maximum PDU Payload Size", HFILL }
+ },
+ { &hf_btl2cap_option_fcs,
+ { "FCS", "btl2cap.option_fcs",
+ FT_UINT16, BASE_HEX, VALS(option_fcs_vals), 0x0,
+ "Frame Check Sequence", HFILL }
+ },
+ { &hf_btl2cap_option_window,
+ { "Extended Window Size", "btl2cap.option_window",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_btl2cap_option,
+ { "Configuration Parameter Option", "btl2cap.conf_param_option",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_btl2cap_control_sar,
+ { "Segmentation and reassembly", "btl2cap.control_sar",
+ FT_UINT16, BASE_HEX, VALS(control_sar_vals), 0xC000,
+ NULL, HFILL }
+ },
+ { &hf_btl2cap_control_reqseq,
+ { "ReqSeq", "btl2cap.control_reqseq",
+ FT_UINT16, BASE_DEC, NULL, 0x3F00,
+ "Request Sequence Number", HFILL }
+ },
+ { &hf_btl2cap_control_txseq,
+ { "TxSeq", "btl2cap.control_txseq",
+ FT_UINT16, BASE_DEC, NULL, 0x007E,
+ "Transmitted Sequence Number", HFILL }
+ },
+ { &hf_btl2cap_control_retransmissiondisable,
+ { "R", "btl2cap.control_retransmissiondisable",
+ FT_UINT16, BASE_HEX, NULL, 0x0080,
+ "Retransmission Disable", HFILL }
+ },
+ { &hf_btl2cap_control_supervisory,
+ { "S", "btl2cap.control_supervisory",
+ FT_UINT16, BASE_HEX, VALS(control_supervisory_vals), 0x000C,
+ "Supervisory Function", HFILL }
+ },
+ { &hf_btl2cap_control_type,
+ { "Frame Type", "btl2cap.control_type",
+ FT_UINT16, BASE_HEX, VALS(control_type_vals), 0x0001,
+ NULL, HFILL }
+ },
+ { &hf_btl2cap_control,
+ { "Control field", "btl2cap.control",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_btl2cap_fcs,
+ { "FCS", "btl2cap.fcs",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "Frame Check Sequence", HFILL }
+ },
+ { &hf_btl2cap_sdulength,
+ { "SDU Length", "btl2cap.sdulength",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_btl2cap_reassembled_in,
+ { "This SDU is reassembled in frame", "btl2cap.reassembled_in",
+ FT_FRAMENUM, BASE_NONE, NULL, 0,
+ "This SDU is reassembled in frame #", HFILL }
+ },
+ { &hf_btl2cap_continuation_to,
+ { "This is a continuation to the SDU in frame", "btl2cap.continuation_to",
+ FT_FRAMENUM, BASE_NONE, NULL, 0,
+ "This is a continuation to the SDU in frame #", HFILL }
+ }
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_btl2cap,
+ &ett_btl2cap_cmd,
+ &ett_btl2cap_option,
+ &ett_btl2cap_extfeatures,
+ &ett_btl2cap_fixedchans,
+ &ett_btl2cap_control
+ };
+
+ /* Register the protocol name and description */
+ proto_btl2cap = proto_register_protocol("Bluetooth L2CAP Protocol", "L2CAP", "btl2cap");
+
+ register_dissector("btl2cap", dissect_btl2cap, proto_btl2cap);
+
+ /* subdissector code */
+ l2cap_psm_dissector_table = register_dissector_table("btl2cap.psm", "L2CAP PSM", FT_UINT16, BASE_HEX);
+ l2cap_service_dissector_table = register_dissector_table("btl2cap.service", "L2CAP Service", FT_UINT16, BASE_HEX);
+ l2cap_cid_dissector_table = register_dissector_table("btl2cap.cid", "L2CAP CID", FT_UINT16, BASE_HEX);
+
+ /* Required function calls to register the header fields and subtrees used */
+ proto_register_field_array(proto_btl2cap, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ cid_to_psm_table = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "btl2cap scid to psm");
+ psm_to_service_table = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "btl2cap psm to service uuid");
}
void
proto_reg_handoff_btl2cap(void)
{
- /* tap into the btsdp dissector to look for l2cap PSM infomation that
- helps us determine the type of l2cap payload, i.e. which service is
- using the PSM channel so we know which sub-dissector to call */
- register_tap_listener("btsdp", NULL, NULL, TL_IS_DISSECTOR_HELPER, NULL, btl2cap_sdp_tap_packet, NULL);
+ /* tap into the btsdp dissector to look for l2cap PSM infomation that
+ helps us determine the type of l2cap payload, i.e. which service is
+ using the PSM channel so we know which sub-dissector to call */
+ register_tap_listener("btsdp", NULL, NULL, TL_IS_DISSECTOR_HELPER, NULL, btl2cap_sdp_tap_packet, NULL);
}
diff --git a/epan/dissectors/packet-btl2cap.h b/epan/dissectors/packet-btl2cap.h
index 53c0ac38a2..ccb65d626a 100644
--- a/epan/dissectors/packet-btl2cap.h
+++ b/epan/dissectors/packet-btl2cap.h
@@ -24,31 +24,31 @@
#ifndef __PACKET_BTL2CAP_H__
#define __PACKET_BTL2CAP_H__
-#define BTL2CAP_PSM_SDP 0x0001
-#define BTL2CAP_PSM_RFCOMM 0x0003
-#define BTL2CAP_PSM_BNEP 0x000f
-#define BTL2CAP_PSM_HID_CTRL 0x0011
-#define BTL2CAP_PSM_HID_INTR 0x0013
-#define BTL2CAP_PSM_AVCTP_CTRL 0x0017
-#define BTL2CAP_PSM_AVDTP 0x0019
-#define BTL2CAP_PSM_AVCTP_BRWS 0x001b
+#define BTL2CAP_PSM_SDP 0x0001
+#define BTL2CAP_PSM_RFCOMM 0x0003
+#define BTL2CAP_PSM_BNEP 0x000f
+#define BTL2CAP_PSM_HID_CTRL 0x0011
+#define BTL2CAP_PSM_HID_INTR 0x0013
+#define BTL2CAP_PSM_AVCTP_CTRL 0x0017
+#define BTL2CAP_PSM_AVDTP 0x0019
+#define BTL2CAP_PSM_AVCTP_BRWS 0x001b
#define BTL2CAP_DYNAMIC_PSM_START 0x1000
-#define BTL2CAP_FIXED_CID_NULL 0x0000
-#define BTL2CAP_FIXED_CID_SIGNAL 0x0001
-#define BTL2CAP_FIXED_CID_CONNLESS 0x0002
-#define BTL2CAP_FIXED_CID_AMP_MAN 0x0003
-#define BTL2CAP_FIXED_CID_AMP_TEST 0x003F
-#define BTL2CAP_FIXED_CID_MAX 0x0040
+#define BTL2CAP_FIXED_CID_NULL 0x0000
+#define BTL2CAP_FIXED_CID_SIGNAL 0x0001
+#define BTL2CAP_FIXED_CID_CONNLESS 0x0002
+#define BTL2CAP_FIXED_CID_AMP_MAN 0x0003
+#define BTL2CAP_FIXED_CID_AMP_TEST 0x003F
+#define BTL2CAP_FIXED_CID_MAX 0x0040
/* This structure is passed to higher layer protocols through
* pinfo->private_data so that they can track "conversations" based on
* chandle, cid and direction
*/
typedef struct _btl2cap_data_t {
- guint16 chandle; /* only low 12 bits used */
- guint16 cid;
+ guint16 chandle; /* only low 12 bits used */
+ guint16 cid;
} btl2cap_data_t;
#endif
diff --git a/epan/dissectors/packet-btobex.c b/epan/dissectors/packet-btobex.c
index 7500f43f71..7722143fd6 100644
--- a/epan/dissectors/packet-btobex.c
+++ b/epan/dissectors/packet-btobex.c
@@ -68,6 +68,7 @@ static int hf_btobex_fragment_error = -1;
static int hf_btobex_fragment_count = -1;
static int hf_btobex_reassembled_in = -1;
static int hf_btobex_reassembled_length = -1;
+
static gint ett_btobex_fragment = -1;
static gint ett_btobex_fragments = -1;
@@ -102,8 +103,8 @@ static dissector_handle_t xml_handle;
static dissector_handle_t data_handle;
typedef struct _ext_value_string {
- guint8 value[16];
- const gchar *strptr;
+ guint8 value[16];
+ const gchar *strptr;
} ext_value_string;
static const ext_value_string target_vals[] = {
@@ -131,11 +132,6 @@ static const value_string version_vals[] = {
{ 0, NULL }
};
-static const true_false_string true_false = {
- "True",
- "False"
-};
-
#define BTOBEX_CODE_VALS_CONNECT 0x00
#define BTOBEX_CODE_VALS_DISCONNECT 0x01
#define BTOBEX_CODE_VALS_PUT 0x02
@@ -192,25 +188,11 @@ static const value_string code_vals[] = {
{ BTOBEX_CODE_VALS_ABORT, "Abort" },
{ 0, NULL }
};
+static value_string_ext(code_vals_ext) = VALUE_STRING_EXT_INIT(code_vals);
static const value_string header_id_vals[] = {
{ 0x01, "Name" },
{ 0x05, "Description" },
- { 0x42, "Type" },
- { 0x44, "Time (ISO8601)" },
- { 0x46, "Target" },
- { 0x47, "HTTP" },
- { 0x48, "Body" },
- { 0x49, "End Of Body" },
- { 0x4a, "Who" },
- { 0x4c, "App. Parameters" },
- { 0x4d, "Auth. Challenge" },
- { 0x4e, "Auth. Response" },
- { 0x4f, "Object Class" },
- { 0xc0, "Count" },
- { 0xc3, "Length" },
- { 0xc4, "Time" },
- { 0xcb, "Connection Id" },
{ 0x30, "User Defined" },
{ 0x31, "User Defined" },
{ 0x32, "User Defined" },
@@ -227,557 +209,574 @@ static const value_string header_id_vals[] = {
{ 0x3d, "User Defined" },
{ 0x3e, "User Defined" },
{ 0x3f, "User Defined" },
+ { 0x42, "Type" },
+ { 0x44, "Time (ISO8601)" },
+ { 0x46, "Target" },
+ { 0x47, "HTTP" },
+ { 0x48, "Body" },
+ { 0x49, "End Of Body" },
+ { 0x4a, "Who" },
+ { 0x4c, "App. Parameters" },
+ { 0x4d, "Auth. Challenge" },
+ { 0x4e, "Auth. Response" },
+ { 0x4f, "Object Class" },
+ { 0xc0, "Count" },
+ { 0xc3, "Length" },
+ { 0xc4, "Time" },
+ { 0xcb, "Connection Id" },
{ 0, NULL }
};
+static value_string_ext header_id_vals_ext = VALUE_STRING_EXT_INIT(header_id_vals);
static void
defragment_init(void)
{
- fragment_table_init(&fragment_table);
- reassembled_table_init(&reassembled_table);
+ fragment_table_init(&fragment_table);
+ reassembled_table_init(&reassembled_table);
}
static int
is_ascii_str(const guint8 *str, int length)
{
- int i;
+ int i;
- if( (length < 1) || (str[length-1] != '\0') )
- return 0;
+ if ((length < 1) || (str[length-1] != '\0'))
+ return 0;
- for(i=0; i<length-1; i++) {
- if( (str[i] < 0x20) && (str[i] != 0x0a) ) /* not strict ascii */
- break;
- }
+ for(i=0; i<length-1; i++) {
+ if ((str[i] < 0x20) && (str[i] != 0x0a)) /* not strict ascii */
+ break;
+ }
- if(i<(length-1))
- return 0;
+ if (i < (length-1))
+ return 0;
- return 1;
+ return 1;
}
static int
display_unicode_string(tvbuff_t *tvb, proto_tree *tree, int offset, char **data)
{
- char *str, *p;
- int len;
- int charoffset;
- guint16 character;
-
- /* display a unicode string from the tree and return new offset */
- /*
- * Get the length of the string.
- */
- len = 0;
- while (tvb_get_ntohs(tvb, offset + len) != '\0')
- len += 2;
-
- len += 2; /* count the '\0' too */
-
- /*
- * Allocate a buffer for the string; "len" is the length in
- * bytes, not the length in characters.
- */
- str = ep_alloc(len/2);
-
- /* - this assumes the string is just ISO 8859-1 */
- charoffset = offset;
- p = str;
- while ((character = tvb_get_ntohs(tvb, charoffset)) != '\0') {
- *p++ = (char) character;
- charoffset += 2;
- }
- *p = '\0';
-
- if(!is_ascii_str(str, len/2)) {
- *str = '\0';
- }
-
- proto_tree_add_string(tree, hf_hdr_val_unicode, tvb, offset, len, str);
-
- if (data)
- *data = str;
-
- return offset+len;
+ char *str, *p;
+ int len;
+ int charoffset;
+ guint16 character;
+
+ /* display a unicode string from the tree and return new offset */
+ /*
+ * Get the length of the string.
+ */
+ len = 0;
+ while (tvb_get_ntohs(tvb, offset + len) != '\0')
+ len += 2;
+
+ len += 2; /* count the '\0' too */
+
+ /*
+ * Allocate a buffer for the string; "len" is the length in
+ * bytes, not the length in characters.
+ */
+ str = ep_alloc(len/2);
+
+ /* - this assumes the string is just ISO 8859-1 */
+ charoffset = offset;
+ p = str;
+ while ((character = tvb_get_ntohs(tvb, charoffset)) != '\0') {
+ *p++ = (char) character;
+ charoffset += 2;
+ }
+ *p = '\0';
+
+ if (!is_ascii_str(str, len/2)) {
+ *str = '\0';
+ }
+
+ proto_tree_add_string(tree, hf_hdr_val_unicode, tvb, offset, len, str);
+
+ if (data)
+ *data = str;
+
+ return offset+len;
}
static int
dissect_headers(proto_tree *tree, tvbuff_t *tvb, int offset, packet_info *pinfo)
{
- proto_tree *hdrs_tree=NULL;
- proto_item *hdrs=NULL;
- proto_tree *hdr_tree=NULL;
- proto_item *hdr=NULL;
- proto_item *handle_item;
- gint item_length = -1;
- guint8 hdr_id, i;
-
- if(tvb_length_remaining(tvb, offset)>0) {
- hdrs = proto_tree_add_text(tree, tvb, offset, item_length, "Headers");
- hdrs_tree=proto_item_add_subtree(hdrs, ett_btobex_hdrs);
- }
- else {
- return offset;
- }
-
- while(tvb_length_remaining(tvb, offset)>0) {
- hdr_id = tvb_get_guint8(tvb, offset);
-
- switch(0xC0 & hdr_id)
- {
- case 0x00: /* null terminated unicode */
- item_length = tvb_get_ntohs(tvb, offset+1);
- break;
- case 0x40: /* byte sequence */
- item_length = tvb_get_ntohs(tvb, offset+1);
- break;
- case 0x80: /* 1 byte */
- item_length = 2;
- break;
- case 0xc0: /* 4 bytes */
- item_length = 5;
- break;
- }
-
- hdr = proto_tree_add_text(hdrs_tree, tvb, offset, item_length, "%s", val_to_str(hdr_id, header_id_vals, "Unknown"));
- hdr_tree=proto_item_add_subtree(hdr, ett_btobex_hdr);
-
- proto_tree_add_item(hdr_tree, hf_hdr_id, tvb, offset, 1, ENC_BIG_ENDIAN);
-
- offset++;
-
- switch(0xC0 & hdr_id)
- {
- case 0x00: /* null terminated unicode */
- {
- proto_tree_add_item(hdr_tree, hf_hdr_length, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
-
- if( (item_length - 3) > 0 ) {
- char *str;
-
- display_unicode_string(tvb, hdr_tree, offset, &str);
- proto_item_append_text(hdr_tree, " (\"%s\")", str);
- col_append_fstr(pinfo->cinfo, COL_INFO, " \"%s\"", str);
- }
- else {
- col_append_str(pinfo->cinfo, COL_INFO, " \"\"");
- }
-
- offset += item_length - 3;
- }
- break;
- case 0x40: /* byte sequence */
- proto_tree_add_item(hdr_tree, hf_hdr_length, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
-
- handle_item = proto_tree_add_item(hdr_tree, hf_hdr_val_byte_seq, tvb, offset, item_length - 3, ENC_NA);
-
- if( ((hdr_id == 0x46) || (hdr_id == 0x4a)) && (item_length == 19) ) { /* target or who */
- for( i=0; target_vals[i].strptr != NULL; i++) {
- if( tvb_memeql(tvb, offset, target_vals[i].value, 16) == 0 ) {
- proto_item_append_text(handle_item, ": %s", target_vals[i].strptr);
- proto_item_append_text(hdr_tree, " (%s)", target_vals[i].strptr);
- col_append_fstr(pinfo->cinfo, COL_INFO, " - %s", target_vals[i].strptr);
- }
- }
- }
-
- if( !tvb_strneql(tvb, offset, "<?xml", 5) )
- {
- tvbuff_t* next_tvb = tvb_new_subset(tvb, offset, -1, -1);
-
- call_dissector(xml_handle, next_tvb, pinfo, tree);
- }
- else if(is_ascii_str(tvb_get_ptr(tvb, offset,item_length - 3), item_length - 3))
- {
- proto_item_append_text(hdr_tree, " (\"%s\")", tvb_get_ephemeral_string(tvb, offset,item_length - 3));
- col_append_fstr(pinfo->cinfo, COL_INFO, " \"%s\"", tvb_get_ephemeral_string(tvb, offset,item_length - 3));
- }
-
- offset += item_length - 3;
- break;
- case 0x80: /* 1 byte */
- proto_item_append_text(hdr_tree, " (%i)", tvb_get_ntohl(tvb, offset));
- proto_tree_add_item(hdr_tree, hf_hdr_val_byte, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
- break;
- case 0xc0: /* 4 bytes */
- proto_item_append_text(hdr_tree, " (%i)", tvb_get_ntohl(tvb, offset));
- proto_tree_add_item(hdr_tree, hf_hdr_val_long, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
- break;
- default:
- break;
- }
- }
-
- return offset;
+ proto_tree *hdrs_tree = NULL;
+ proto_tree *hdr_tree = NULL;
+ proto_item *hdr = NULL;
+ proto_item *handle_item;
+ gint item_length = -1;
+ guint8 hdr_id, i;
+
+ if (tvb_length_remaining(tvb, offset) > 0) {
+ proto_item *hdrs;
+ hdrs = proto_tree_add_text(tree, tvb, offset, item_length, "Headers");
+ hdrs_tree = proto_item_add_subtree(hdrs, ett_btobex_hdrs);
+ }
+ else {
+ return offset;
+ }
+
+ while (tvb_length_remaining(tvb, offset) > 0) {
+ hdr_id = tvb_get_guint8(tvb, offset);
+
+ switch(0xC0 & hdr_id)
+ {
+ case 0x00: /* null terminated unicode */
+ item_length = tvb_get_ntohs(tvb, offset+1);
+ break;
+ case 0x40: /* byte sequence */
+ item_length = tvb_get_ntohs(tvb, offset+1);
+ break;
+ case 0x80: /* 1 byte */
+ item_length = 2;
+ break;
+ case 0xc0: /* 4 bytes */
+ item_length = 5;
+ break;
+ }
+
+ hdr = proto_tree_add_text(hdrs_tree, tvb, offset, item_length, "%s",
+ val_to_str_ext_const(hdr_id, &header_id_vals_ext, "Unknown"));
+ hdr_tree = proto_item_add_subtree(hdr, ett_btobex_hdr);
+
+ proto_tree_add_item(hdr_tree, hf_hdr_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+
+ switch(0xC0 & hdr_id)
+ {
+ case 0x00: /* null terminated unicode */
+ {
+ proto_tree_add_item(hdr_tree, hf_hdr_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ if ((item_length - 3) > 0) {
+ char *str;
+
+ display_unicode_string(tvb, hdr_tree, offset, &str);
+ proto_item_append_text(hdr_tree, " (\"%s\")", str);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " \"%s\"", str);
+ }
+ else {
+ col_append_str(pinfo->cinfo, COL_INFO, " \"\"");
+ }
+
+ offset += item_length - 3;
+ }
+ break;
+ case 0x40: /* byte sequence */
+ proto_tree_add_item(hdr_tree, hf_hdr_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ handle_item = proto_tree_add_item(hdr_tree, hf_hdr_val_byte_seq, tvb, offset, item_length - 3, ENC_NA);
+
+ if (((hdr_id == 0x46) || (hdr_id == 0x4a)) && (item_length == 19)) { /* target or who */
+ for(i=0; target_vals[i].strptr != NULL; i++) {
+ if (tvb_memeql(tvb, offset, target_vals[i].value, 16) == 0) {
+ proto_item_append_text(handle_item, ": %s", target_vals[i].strptr);
+ proto_item_append_text(hdr_tree, " (%s)", target_vals[i].strptr);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " - %s", target_vals[i].strptr);
+ }
+ }
+ }
+
+ if (!tvb_strneql(tvb, offset, "<?xml", 5))
+ {
+ tvbuff_t* next_tvb = tvb_new_subset_remaining(tvb, offset);
+
+ call_dissector(xml_handle, next_tvb, pinfo, tree);
+ }
+ else if (is_ascii_str(tvb_get_ptr(tvb, offset,item_length - 3), item_length - 3))
+ {
+ proto_item_append_text(hdr_tree, " (\"%s\")", tvb_get_ephemeral_string(tvb, offset,item_length - 3));
+ col_append_fstr(pinfo->cinfo, COL_INFO, " \"%s\"", tvb_get_ephemeral_string(tvb, offset,item_length - 3));
+ }
+
+ offset += item_length - 3;
+ break;
+ case 0x80: /* 1 byte */
+ proto_item_append_text(hdr_tree, " (%i)", tvb_get_ntohl(tvb, offset));
+ proto_tree_add_item(hdr_tree, hf_hdr_val_byte, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ break;
+ case 0xc0: /* 4 bytes */
+ proto_item_append_text(hdr_tree, " (%i)", tvb_get_ntohl(tvb, offset));
+ proto_tree_add_item(hdr_tree, hf_hdr_val_long, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ break;
+ default:
+ break;
+ }
+ }
+
+ return offset;
}
static void
dissect_btobex(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti;
- proto_tree *st;
- fragment_data *frag_msg = NULL;
- gboolean save_fragmented, complete;
- tvbuff_t* new_tvb = NULL;
- tvbuff_t* next_tvb = NULL;
- guint32 no_of_segments = 0;
- int offset=0;
-
- save_fragmented = pinfo->fragmented;
-
- frag_msg = NULL;
- complete = FALSE;
-
- if( fragment_get(pinfo, pinfo->p2p_dir, fragment_table) ) {
- /* not the first fragment */
- frag_msg = fragment_add_seq_next(tvb, 0, pinfo, pinfo->p2p_dir,
- fragment_table, reassembled_table, tvb_length(tvb), TRUE);
-
- new_tvb = process_reassembled_data(tvb, 0, pinfo,
- "Reassembled Obex packet", frag_msg, &btobex_frag_items, NULL, tree);
-
- pinfo->fragmented = TRUE;
- }
- else {
- if(tvb_length(tvb) < tvb_get_ntohs(tvb, offset+1)) {
- /* first fragment in a sequence */
- no_of_segments = tvb_get_ntohs(tvb, offset+1)/tvb_length(tvb);
- if ( tvb_get_ntohs(tvb, offset+1) > (no_of_segments * tvb_length(tvb)))
- no_of_segments++;
-
- frag_msg = fragment_add_seq_next(tvb, 0, pinfo, pinfo->p2p_dir,
- fragment_table, reassembled_table, tvb_length(tvb), TRUE);
-
- fragment_set_tot_len(pinfo, pinfo->p2p_dir, fragment_table, no_of_segments-1);
-
- new_tvb = process_reassembled_data(tvb, 0, pinfo,
- "Reassembled Obex packet", frag_msg, &btobex_frag_items, NULL, tree);
-
- pinfo->fragmented = TRUE;
- }
- else if( tvb_length(tvb) == tvb_get_ntohs(tvb, offset+1) ) {
- /* non-fragmented */
- complete = TRUE;
- pinfo->fragmented = FALSE;
- }
- }
-
- if (new_tvb) { /* take it all */
- next_tvb = new_tvb;
- complete = TRUE;
- }
- else { /* make a new subset */
- next_tvb = tvb_new_subset(tvb, offset, -1, -1);
- }
-
- if( complete ) {
- guint8 code, final_flag;
-
- /* fully dissectable packet ready */
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "OBEX");
-
- ti = proto_tree_add_item(tree, proto_btobex, next_tvb, 0, -1, ENC_NA);
- st = proto_item_add_subtree(ti, ett_btobex);
-
- /* op/response code */
- code = tvb_get_guint8(next_tvb, offset) & BTOBEX_CODE_VALS_MASK;
- final_flag = tvb_get_guint8(next_tvb, offset) & 0x80;
-
- switch (pinfo->p2p_dir) {
-
- case P2P_DIR_SENT:
- col_add_fstr(pinfo->cinfo, COL_INFO, "Sent ");
- break;
-
- case P2P_DIR_RECV:
- col_add_fstr(pinfo->cinfo, COL_INFO, "Rcvd ");
- break;
-
- case P2P_DIR_UNKNOWN:
- break;
-
- default:
- col_add_fstr(pinfo->cinfo, COL_INFO, "Unknown direction %d ",
- pinfo->p2p_dir);
- break;
- }
-
- col_append_fstr(pinfo->cinfo, COL_INFO, "%s",
- val_to_str(code, code_vals, "Unknown"));
-
- if( (code < BTOBEX_CODE_VALS_CONTINUE) || (code == BTOBEX_CODE_VALS_ABORT)) {
- proto_tree_add_item(st, hf_opcode, next_tvb, offset, 1, ENC_BIG_ENDIAN);
- if (pinfo->p2p_dir == P2P_DIR_SENT || pinfo->p2p_dir == P2P_DIR_RECV) {
- last_opcode[pinfo->p2p_dir] = code;
- }
- }
- else {
- proto_tree_add_item(st, hf_response_code, next_tvb, offset, 1, ENC_BIG_ENDIAN);
- }
- proto_tree_add_item(st, hf_final_flag, next_tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
-
- /* length */
- proto_tree_add_item(st, hf_length, next_tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
-
- switch(code)
- {
- case BTOBEX_CODE_VALS_CONNECT:
- proto_tree_add_item(st, hf_version, next_tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
-
- proto_tree_add_item(st, hf_flags, next_tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
-
- proto_tree_add_item(st, hf_max_pkt_len, next_tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
- break;
-
- case BTOBEX_CODE_VALS_PUT:
- case BTOBEX_CODE_VALS_GET:
- col_append_fstr(pinfo->cinfo, COL_INFO, " %s", final_flag==0x80?"final":"continue");
- break;
-
- case BTOBEX_CODE_VALS_SET_PATH:
- proto_tree_add_item(st, hf_flags, next_tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(st, hf_set_path_flags_0, next_tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(st, hf_set_path_flags_1, next_tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
-
- proto_tree_add_item(st, hf_constants, next_tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
- break;
-
- case BTOBEX_CODE_VALS_DISCONNECT:
- case BTOBEX_CODE_VALS_ABORT:
- break;
-
- default:
- {
- guint8 response_opcode = last_opcode[(pinfo->p2p_dir + 1) & 0x01];
-
- if(response_opcode == BTOBEX_CODE_VALS_CONNECT) {
- proto_tree_add_item(st, hf_version, next_tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
-
- proto_tree_add_item(st, hf_flags, next_tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
-
- proto_tree_add_item(st, hf_max_pkt_len, next_tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
- }
- }
- break;
- }
-
- dissect_headers(st, next_tvb, offset, pinfo);
- }
- else
- {
- /* packet fragment */
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s Obex fragment",
- pinfo->p2p_dir==P2P_DIR_SENT?"Sent":"Rcvd");
-
- call_dissector(data_handle, next_tvb, pinfo, tree);
- }
-
- pinfo->fragmented = save_fragmented;
+ proto_item *ti;
+ proto_tree *st;
+ fragment_data *frag_msg = NULL;
+ gboolean save_fragmented, complete;
+ tvbuff_t* new_tvb = NULL;
+ tvbuff_t* next_tvb = NULL;
+ guint32 no_of_segments = 0;
+ int offset = 0;
+
+ save_fragmented = pinfo->fragmented;
+
+ frag_msg = NULL;
+ complete = FALSE;
+
+ if (fragment_get(pinfo, pinfo->p2p_dir, fragment_table)) {
+ /* not the first fragment */
+ frag_msg = fragment_add_seq_next(tvb, 0, pinfo, pinfo->p2p_dir,
+ fragment_table, reassembled_table, tvb_length(tvb), TRUE);
+
+ new_tvb = process_reassembled_data(tvb, 0, pinfo,
+ "Reassembled Obex packet", frag_msg, &btobex_frag_items, NULL, tree);
+
+ pinfo->fragmented = TRUE;
+ }
+ else {
+ if (tvb_length(tvb) < tvb_get_ntohs(tvb, offset+1)) {
+ /* first fragment in a sequence */
+ no_of_segments = tvb_get_ntohs(tvb, offset+1)/tvb_length(tvb);
+ if (tvb_get_ntohs(tvb, offset+1) > (no_of_segments * tvb_length(tvb)))
+ no_of_segments++;
+
+ frag_msg = fragment_add_seq_next(tvb, 0, pinfo, pinfo->p2p_dir,
+ fragment_table, reassembled_table, tvb_length(tvb), TRUE);
+
+ fragment_set_tot_len(pinfo, pinfo->p2p_dir, fragment_table, no_of_segments-1);
+
+ new_tvb = process_reassembled_data(tvb, 0, pinfo,
+ "Reassembled Obex packet", frag_msg, &btobex_frag_items, NULL, tree);
+
+ pinfo->fragmented = TRUE;
+ }
+ else if (tvb_length(tvb) == tvb_get_ntohs(tvb, offset+1)) {
+ /* non-fragmented */
+ complete = TRUE;
+ pinfo->fragmented = FALSE;
+ }
+ }
+
+ if (new_tvb) { /* take it all */
+ next_tvb = new_tvb;
+ complete = TRUE;
+ }
+ else { /* make a new subset */
+ next_tvb = tvb_new_subset_remaining(tvb, offset);
+ }
+
+ if (complete) {
+ guint8 code, final_flag;
+
+ /* fully dissectable packet ready */
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "OBEX");
+
+ ti = proto_tree_add_item(tree, proto_btobex, next_tvb, 0, -1, ENC_NA);
+ st = proto_item_add_subtree(ti, ett_btobex);
+
+ /* op/response code */
+ code = tvb_get_guint8(next_tvb, offset) & BTOBEX_CODE_VALS_MASK;
+ final_flag = tvb_get_guint8(next_tvb, offset) & 0x80;
+
+ switch (pinfo->p2p_dir)
+ {
+ case P2P_DIR_SENT:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Sent ");
+ break;
+
+ case P2P_DIR_RECV:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Rcvd ");
+ break;
+
+ case P2P_DIR_UNKNOWN:
+ break;
+
+ default:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Unknown direction %d ",
+ pinfo->p2p_dir);
+ break;
+ }
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, "%s",
+ val_to_str_ext_const(code, &code_vals_ext, "Unknown"));
+
+ if ((code < BTOBEX_CODE_VALS_CONTINUE) || (code == BTOBEX_CODE_VALS_ABORT)) {
+ proto_tree_add_item(st, hf_opcode, next_tvb, offset, 1, ENC_BIG_ENDIAN);
+ if (pinfo->p2p_dir == P2P_DIR_SENT || pinfo->p2p_dir == P2P_DIR_RECV) {
+ last_opcode[pinfo->p2p_dir] = code;
+ }
+ }
+ else {
+ proto_tree_add_item(st, hf_response_code, next_tvb, offset, 1, ENC_BIG_ENDIAN);
+ }
+ proto_tree_add_item(st, hf_final_flag, next_tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ /* length */
+ proto_tree_add_item(st, hf_length, next_tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ switch(code)
+ {
+ case BTOBEX_CODE_VALS_CONNECT:
+ proto_tree_add_item(st, hf_version, next_tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(st, hf_flags, next_tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(st, hf_max_pkt_len, next_tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ break;
+
+ case BTOBEX_CODE_VALS_PUT:
+ case BTOBEX_CODE_VALS_GET:
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s", (final_flag == 0x80) ? "final" : "continue");
+ break;
+
+ case BTOBEX_CODE_VALS_SET_PATH:
+ proto_tree_add_item(st, hf_flags, next_tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(st, hf_set_path_flags_0, next_tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(st, hf_set_path_flags_1, next_tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(st, hf_constants, next_tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ break;
+
+ case BTOBEX_CODE_VALS_DISCONNECT:
+ case BTOBEX_CODE_VALS_ABORT:
+ break;
+
+ default:
+ {
+ guint8 response_opcode = last_opcode[(pinfo->p2p_dir + 1) & 0x01];
+
+ if (response_opcode == BTOBEX_CODE_VALS_CONNECT) {
+ proto_tree_add_item(st, hf_version, next_tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(st, hf_flags, next_tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(st, hf_max_pkt_len, next_tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ }
+ }
+ break;
+ }
+
+ dissect_headers(st, next_tvb, offset, pinfo);
+ }
+ else
+ {
+ /* packet fragment */
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s Obex fragment",
+ (pinfo->p2p_dir==P2P_DIR_SENT) ? "Sent" : "Rcvd");
+
+ call_dissector(data_handle, next_tvb, pinfo, tree);
+ }
+
+ pinfo->fragmented = save_fragmented;
}
void
proto_register_btobex(void)
{
- static hf_register_info hf[] = {
- {&hf_opcode,
- {"Opcode", "btobex.opcode",
- FT_UINT8, BASE_HEX, VALS(code_vals), BTOBEX_CODE_VALS_MASK,
- "Request Opcode", HFILL}
- },
- {&hf_response_code,
- {"Response Code", "btobex.resp_code",
- FT_UINT8, BASE_HEX, VALS(code_vals), BTOBEX_CODE_VALS_MASK,
- NULL, HFILL}
- },
- {&hf_final_flag,
- {"Final Flag", "btobex.final_flag",
- FT_BOOLEAN, 8, TFS(&true_false), 0x80,
- NULL, HFILL}
- },
- {&hf_length,
- {"Packet Length", "btobex.pkt_len",
- FT_UINT16, BASE_DEC, NULL, 0,
- NULL, HFILL}
- },
- {&hf_version,
- {"Version", "btobex.version",
- FT_UINT8, BASE_HEX, VALS(version_vals), 0x00,
- "Obex Protocol Version", HFILL}
- },
- {&hf_flags,
- {"Flags", "btobex.flags",
- FT_UINT8, BASE_HEX, NULL, 0x00,
- NULL, HFILL}
- },
- {&hf_constants,
- {"Constants", "btobex.constants",
- FT_UINT8, BASE_HEX, NULL, 0x00,
- NULL, HFILL}
- },
- {&hf_max_pkt_len,
- {"Max. Packet Length", "btobex.max_pkt_len",
- FT_UINT16, BASE_DEC, NULL, 0,
- NULL, HFILL}
- },
- {&hf_set_path_flags_0,
- {"Go back one folder (../) first", "btobex.set_path_flags_0",
- FT_BOOLEAN, 8, TFS(&true_false), 0x01,
- NULL, HFILL}
- },
- {&hf_set_path_flags_1,
- {"Do not create folder, if not existing", "btobex.set_path_flags_1",
- FT_BOOLEAN, 8, TFS(&true_false), 0x02,
- NULL, HFILL}
- },
- {&hf_hdr_id,
- {"Header Id", "btobex.hdr_id",
- FT_UINT8, BASE_HEX, VALS(header_id_vals), 0x00,
- NULL, HFILL}
- },
- {&hf_hdr_length,
- {"Length", "btobex.pkt_hdr_len",
- FT_UINT16, BASE_DEC, NULL, 0,
- "Header Length", HFILL}
- },
- {&hf_hdr_val_unicode,
- { "Value", "btobex.pkt_hdr_val_uc",
- FT_STRING, BASE_NONE, NULL, 0,
- "Unicode Value", HFILL }
- },
- {&hf_hdr_val_byte_seq,
- {"Value", "btobex.hdr_val_byte_seq",
- FT_BYTES, BASE_NONE, NULL, 0,
- "Byte Value", HFILL}
- },
- {&hf_hdr_val_byte,
- {"Value", "btobex.hdr_val_byte",
- FT_UINT8, BASE_HEX, NULL, 0,
- "Byte Sequence Value", HFILL}
- },
- {&hf_hdr_val_long,
- {"Value", "btobex.hdr_val_long",
- FT_UINT32, BASE_DEC, NULL, 0,
- "4-byte Value", HFILL}
- },
-
- /* for fragmentation */
- { &hf_btobex_fragment_overlap,
- { "Fragment overlap", "btobex.fragment.overlap", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "Fragment overlaps with other fragments", HFILL }
- },
- { &hf_btobex_fragment_overlap_conflict,
- { "Conflicting data in fragment overlap", "btobex.fragment.overlap.conflict", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "Overlapping fragments contained conflicting data", HFILL }
- },
- { &hf_btobex_fragment_multiple_tails,
- { "Multiple tail fragments found", "btobex.fragment.multipletails", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "Several tails were found when defragmenting the packet", HFILL }
- },
- { &hf_btobex_fragment_too_long_fragment,
- { "Fragment too long", "btobex.fragment.toolongfragment", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "Fragment contained data past end of packet", HFILL }
- },
- { &hf_btobex_fragment_error,
- { "Defragmentation error", "btobex.fragment.error", FT_FRAMENUM, BASE_NONE, NULL, 0x0,
- "Defragmentation error due to illegal fragments", HFILL }
- },
- { &hf_btobex_fragment_count,
- { "Fragment count", "btobex.fragment.count", FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_btobex_fragment,
- { "OBEX Fragment", "btobex.fragment", FT_FRAMENUM, BASE_NONE, NULL, 0x0,
- "btobex Fragment", HFILL }
- },
- { &hf_btobex_fragments,
- { "OBEX Fragments", "btobex.fragments", FT_NONE, BASE_NONE, NULL, 0x0,
- "btobex Fragments", HFILL }
- },
- { &hf_btobex_reassembled_in,
- { "Reassembled OBEX in frame", "btobex.reassembled_in", FT_FRAMENUM, BASE_NONE, NULL, 0x0,
- "This OBEX frame is reassembled in this frame", HFILL }
- },
- { &hf_btobex_reassembled_length,
- { "Reassembled OBEX length", "btobex.reassembled.length", FT_UINT32, BASE_DEC, NULL, 0x0,
- "The total length of the reassembled payload", HFILL }
- }
- };
-
- /* Setup protocol subtree array */
- static gint *ett[] = {
- &ett_btobex,
- &ett_btobex_hdrs,
- &ett_btobex_hdr,
- &ett_btobex_fragment,
- &ett_btobex_fragments
- };
-
- proto_btobex = proto_register_protocol("Bluetooth OBEX Protocol", "OBEX", "btobex");
-
- register_dissector("btobex", dissect_btobex, proto_btobex);
-
- /* Required function calls to register the header fields and subtrees used */
- proto_register_field_array(proto_btobex, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
-
- register_init_routine(&defragment_init);
+ static hf_register_info hf[] = {
+ { &hf_opcode,
+ { "Opcode", "btobex.opcode",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &code_vals_ext, BTOBEX_CODE_VALS_MASK,
+ "Request Opcode", HFILL}
+ },
+ { &hf_response_code,
+ { "Response Code", "btobex.resp_code",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &code_vals_ext, BTOBEX_CODE_VALS_MASK,
+ NULL, HFILL}
+ },
+ { &hf_final_flag,
+ { "Final Flag", "btobex.final_flag",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ NULL, HFILL}
+ },
+ { &hf_length,
+ { "Packet Length", "btobex.pkt_len",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ NULL, HFILL}
+ },
+ { &hf_version,
+ { "Version", "btobex.version",
+ FT_UINT8, BASE_HEX, VALS(version_vals), 0x00,
+ "Obex Protocol Version", HFILL}
+ },
+ { &hf_flags,
+ { "Flags", "btobex.flags",
+ FT_UINT8, BASE_HEX, NULL, 0x00,
+ NULL, HFILL}
+ },
+ { &hf_constants,
+ { "Constants", "btobex.constants",
+ FT_UINT8, BASE_HEX, NULL, 0x00,
+ NULL, HFILL}
+ },
+ { &hf_max_pkt_len,
+ { "Max. Packet Length", "btobex.max_pkt_len",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ NULL, HFILL}
+ },
+ { &hf_set_path_flags_0,
+ { "Go back one folder (../) first", "btobex.set_path_flags_0",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ NULL, HFILL}
+ },
+ { &hf_set_path_flags_1,
+ { "Do not create folder, if not existing", "btobex.set_path_flags_1",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ NULL, HFILL}
+ },
+ { &hf_hdr_id,
+ { "Header Id", "btobex.hdr_id",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &header_id_vals_ext, 0x00,
+ NULL, HFILL}
+ },
+ { &hf_hdr_length,
+ { "Length", "btobex.pkt_hdr_len",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "Header Length", HFILL}
+ },
+ { &hf_hdr_val_unicode,
+ { "Value", "btobex.pkt_hdr_val_uc",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Unicode Value", HFILL }
+ },
+ { &hf_hdr_val_byte_seq,
+ { "Value", "btobex.hdr_val_byte_seq",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "Byte Value", HFILL}
+ },
+ { &hf_hdr_val_byte,
+ { "Value", "btobex.hdr_val_byte",
+ FT_UINT8, BASE_HEX, NULL, 0,
+ "Byte Sequence Value", HFILL}
+ },
+ { &hf_hdr_val_long,
+ { "Value", "btobex.hdr_val_long",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "4-byte Value", HFILL}
+ },
+
+ /* for fragmentation */
+ { &hf_btobex_fragment_overlap,
+ { "Fragment overlap", "btobex.fragment.overlap", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "Fragment overlaps with other fragments", HFILL }
+ },
+ { &hf_btobex_fragment_overlap_conflict,
+ { "Conflicting data in fragment overlap", "btobex.fragment.overlap.conflict", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "Overlapping fragments contained conflicting data", HFILL }
+ },
+ { &hf_btobex_fragment_multiple_tails,
+ { "Multiple tail fragments found", "btobex.fragment.multipletails", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "Several tails were found when defragmenting the packet", HFILL }
+ },
+ { &hf_btobex_fragment_too_long_fragment,
+ { "Fragment too long", "btobex.fragment.toolongfragment", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "Fragment contained data past end of packet", HFILL }
+ },
+ { &hf_btobex_fragment_error,
+ { "Defragmentation error", "btobex.fragment.error", FT_FRAMENUM, BASE_NONE, NULL, 0x0,
+ "Defragmentation error due to illegal fragments", HFILL }
+ },
+ { &hf_btobex_fragment_count,
+ { "Fragment count", "btobex.fragment.count", FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_btobex_fragment,
+ { "OBEX Fragment", "btobex.fragment", FT_FRAMENUM, BASE_NONE, NULL, 0x0,
+ "btobex Fragment", HFILL }
+ },
+ { &hf_btobex_fragments,
+ { "OBEX Fragments", "btobex.fragments", FT_NONE, BASE_NONE, NULL, 0x0,
+ "btobex Fragments", HFILL }
+ },
+ { &hf_btobex_reassembled_in,
+ { "Reassembled OBEX in frame", "btobex.reassembled_in", FT_FRAMENUM, BASE_NONE, NULL, 0x0,
+ "This OBEX frame is reassembled in this frame", HFILL }
+ },
+ { &hf_btobex_reassembled_length,
+ { "Reassembled OBEX length", "btobex.reassembled.length", FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The total length of the reassembled payload", HFILL }
+ }
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_btobex,
+ &ett_btobex_hdrs,
+ &ett_btobex_hdr,
+ &ett_btobex_fragment,
+ &ett_btobex_fragments
+ };
+
+ proto_btobex = proto_register_protocol("Bluetooth OBEX Protocol", "OBEX", "btobex");
+
+ register_dissector("btobex", dissect_btobex, proto_btobex);
+
+ /* Required function calls to register the header fields and subtrees used */
+ proto_register_field_array(proto_btobex, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ register_init_routine(&defragment_init);
}
void
proto_reg_handoff_btobex(void)
{
- dissector_handle_t btobex_handle;
-
- btobex_handle = find_dissector("btobex");
-
- /* register in rfcomm and l2cap the profiles/services this dissector should handle */
- dissector_add_uint("btrfcomm.service", BTSDP_OPP_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btrfcomm.service", BTSDP_FTP_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btrfcomm.service", BTSDP_BPP_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btrfcomm.service", BTSDP_BPP_STATUS_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btrfcomm.service", BTSDP_BIP_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btrfcomm.service", BTSDP_BIP_RESPONDER_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btrfcomm.service", BTSDP_BIP_AUTO_ARCH_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btrfcomm.service", BTSDP_BIP_REF_OBJ_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btrfcomm.service", BTSDP_PBAP_PCE_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btrfcomm.service", BTSDP_PBAP_PSE_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btrfcomm.service", BTSDP_PBAP_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btrfcomm.service", BTSDP_MAP_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btrfcomm.service", BTSDP_MAP_ACCESS_SRV_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btrfcomm.service", BTSDP_MAP_NOIYFY_SRV_SERVICE_UUID, btobex_handle);
-
- dissector_add_uint("btl2cap.service", BTSDP_OPP_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btl2cap.service", BTSDP_FTP_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btl2cap.service", BTSDP_BPP_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btl2cap.service", BTSDP_BPP_STATUS_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btl2cap.service", BTSDP_BIP_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btl2cap.service", BTSDP_BIP_RESPONDER_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btl2cap.service", BTSDP_BIP_AUTO_ARCH_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btl2cap.service", BTSDP_BIP_REF_OBJ_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btl2cap.service", BTSDP_PBAP_PCE_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btl2cap.service", BTSDP_PBAP_PSE_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btl2cap.service", BTSDP_PBAP_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btl2cap.service", BTSDP_MAP_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btl2cap.service", BTSDP_MAP_ACCESS_SRV_SERVICE_UUID, btobex_handle);
- dissector_add_uint("btl2cap.service", BTSDP_MAP_NOIYFY_SRV_SERVICE_UUID, btobex_handle);
-
- xml_handle = find_dissector("xml");
- data_handle = find_dissector("data");
+ dissector_handle_t btobex_handle;
+
+ btobex_handle = find_dissector("btobex");
+
+ /* register in rfcomm and l2cap the profiles/services this dissector should handle */
+ dissector_add_uint("btrfcomm.service", BTSDP_OPP_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btrfcomm.service", BTSDP_FTP_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btrfcomm.service", BTSDP_BPP_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btrfcomm.service", BTSDP_BPP_STATUS_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btrfcomm.service", BTSDP_BIP_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btrfcomm.service", BTSDP_BIP_RESPONDER_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btrfcomm.service", BTSDP_BIP_AUTO_ARCH_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btrfcomm.service", BTSDP_BIP_REF_OBJ_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btrfcomm.service", BTSDP_PBAP_PCE_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btrfcomm.service", BTSDP_PBAP_PSE_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btrfcomm.service", BTSDP_PBAP_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btrfcomm.service", BTSDP_MAP_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btrfcomm.service", BTSDP_MAP_ACCESS_SRV_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btrfcomm.service", BTSDP_MAP_NOIYFY_SRV_SERVICE_UUID, btobex_handle);
+
+ dissector_add_uint("btl2cap.service", BTSDP_OPP_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btl2cap.service", BTSDP_FTP_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btl2cap.service", BTSDP_BPP_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btl2cap.service", BTSDP_BPP_STATUS_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btl2cap.service", BTSDP_BIP_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btl2cap.service", BTSDP_BIP_RESPONDER_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btl2cap.service", BTSDP_BIP_AUTO_ARCH_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btl2cap.service", BTSDP_BIP_REF_OBJ_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btl2cap.service", BTSDP_PBAP_PCE_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btl2cap.service", BTSDP_PBAP_PSE_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btl2cap.service", BTSDP_PBAP_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btl2cap.service", BTSDP_MAP_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btl2cap.service", BTSDP_MAP_ACCESS_SRV_SERVICE_UUID, btobex_handle);
+ dissector_add_uint("btl2cap.service", BTSDP_MAP_NOIYFY_SRV_SERVICE_UUID, btobex_handle);
+
+ xml_handle = find_dissector("xml");
+ data_handle = find_dissector("data");
}
diff --git a/epan/dissectors/packet-btrfcomm.c b/epan/dissectors/packet-btrfcomm.c
index 3ad37dfbd6..cf7514ea9a 100644
--- a/epan/dissectors/packet-btrfcomm.c
+++ b/epan/dissectors/packet-btrfcomm.c
@@ -104,315 +104,308 @@ static emem_tree_t *dlci_table;
/* Initialize dissector table */
dissector_table_t rfcomm_service_dissector_table;
-typedef struct _dlci_stream_t {
- int len;
- int current;
- int is_escaped;
- int mode;
- guint8 *stream_buf;
-} dlci_stream_t;
-
typedef struct _dlci_state_t {
- guint32 service;
- char do_credit_fc;
+ guint32 service;
+ char do_credit_fc;
} dlci_state_t;
static dissector_handle_t data_handle;
static dissector_handle_t ppp_handle;
static const value_string vs_ctl_pn_i[] = {
- {0x0, "use UIH Frames"},
- /* specified by 07.10, but not used by RFCOMM
- {0x1, "use UI Frames"},
- {0x2, "use I Frames"},
- */
- {0, NULL}
+ {0x0, "use UIH Frames"},
+#if 0 /* specified by 07.10, but not used by RFCOMM */
+ {0x1, "use UI Frames"},
+ {0x2, "use I Frames"},
+#endif
+ {0, NULL}
};
static const value_string vs_ctl_pn_cl[] = {
- {0x0, "no credit based flow control scheme"},
- {0xe, "support of credit based flow control scheme (resp)"},
- {0xf, "support of credit based flow control scheme (req)"},
- /* specified by 07.10. Redefined by RFCOMM
- {0x0, "type 1 (unstructured octet stream)"},
- {0x1, "type 2 (unstructured octet stream with flow control)"},
- {0x2, "type 3 (uninterruptible framed data)"},
- {0x3, "type 4 (interruptible framed data)"},
- */
- {0, NULL}
+ {0x0, "no credit based flow control scheme"},
+ {0xe, "support of credit based flow control scheme (resp)"},
+ {0xf, "support of credit based flow control scheme (req)"},
+#if 0 /* specified by 07.10. Redefined by RFCOMM */
+ {0x0, "type 1 (unstructured octet stream)"},
+ {0x1, "type 2 (unstructured octet stream with flow control)"},
+ {0x2, "type 3 (uninterruptible framed data)"},
+ {0x3, "type 4 (interruptible framed data)"},
+#endif
+ {0, NULL}
};
static const value_string vs_frame_type[] = {
- /* masked 0xef */
- {0x2f, "Set Asynchronous Balanced Mode (SABM)"},
- {0x63, "Unnumbered Acknowledgement (UA)"},
- {0x0f, "Disconnected Mode (DM)"},
- {0x43, "Disconnect (DISC)"},
- {0xef, "Unnumbered Information with Header check (UIH)"},
- /* specified by 07.10, but not used by RFCOMM
- {0x03, "Unnumbered Information (UI)"},
- */
+ /* masked 0xef */
+ {0x2f, "Set Asynchronous Balanced Mode (SABM)"},
+ {0x63, "Unnumbered Acknowledgement (UA)"},
+ {0x0f, "Disconnected Mode (DM)"},
+ {0x43, "Disconnect (DISC)"},
+ {0xef, "Unnumbered Information with Header check (UIH)"},
+#if 0 /* specified by 07.10, but not used by RFCOMM */
+ {0x03, "Unnumbered Information (UI)"},
+#endif
{0, NULL}
};
static const value_string vs_frame_type_short[] = {
- /* masked 0xef */
- {0x2f, "SABM"},
- {0x63, "UA"},
- {0x0f, "DM"},
- {0x43, "DISC"},
- {0xef, "UIH"},
- /* specified by 07.10, but not used by RFCOMM
- {0x03, "UI"},
- */
+ /* masked 0xef */
+ {0x2f, "SABM"},
+ {0x63, "UA"},
+ {0x0f, "DM"},
+ {0x43, "DISC"},
+ {0xef, "UIH"},
+#if 0 /* specified by 07.10, but not used by RFCOMM */
+ {0x03, "UI"},
+#endif
{0, NULL}
};
static const value_string vs_ctl[] = {
/* masked 0xfc */
- {0x20, "DLC parameter negotiation (PN)"},
- {0x08, "Test Command (Test)"},
- {0x28, "Flow Control On Command (FCon)"},
- {0x18, "Flow Control Off Command (FCoff)"},
- {0x38, "Modem Status Command (MSC)"},
- {0x04, "Non Supported Command Response (NSC)"},
- {0x24, "Remote Port Negotiation Command (RPN)"},
- {0x14, "Remote Line Status Command (RLS)"},
- /* Specified by 07.10, but not used by RFCOMM
- {0x10, "Power Saving Control (PSC)"},
- {0x30, "Multiplexer close down (CLD)"},
- {0x34, "Service Negotiation Command (SNC)"},
- */
- /* old
- {0x80, "DLC parameter negotiation (PN)"},
- {0x20, "Test Command (Test)"},
- {0xa0, "Flow Control On Command (FCon)"},
- {0x60, "Flow Control Off Command (FCoff)"},
- {0xe0, "Modem Status Command (MSC)"},
- {0x10, "Non Supported Command Response (NSC)"},
- {0x90, "Remote Port Negotiation Command (RPN)"},
- {0x50, "Remote Line Status Command (RLS)"},
- {0x40, "Power Saving Control (PSC)"},
- {0xc0, "Multiplexer close down (CLD)"},
- {0xd0, "Service Negotiation Command (SNC)"},
- */
- {0x0, NULL}
+ {0x20, "DLC parameter negotiation (PN)"},
+ {0x08, "Test Command (Test)"},
+ {0x28, "Flow Control On Command (FCon)"},
+ {0x18, "Flow Control Off Command (FCoff)"},
+ {0x38, "Modem Status Command (MSC)"},
+ {0x04, "Non Supported Command Response (NSC)"},
+ {0x24, "Remote Port Negotiation Command (RPN)"},
+ {0x14, "Remote Line Status Command (RLS)"},
+#if 0 /* Specified by 07.10, but not used by RFCOMM */
+ {0x10, "Power Saving Control (PSC)"},
+ {0x30, "Multiplexer close down (CLD)"},
+ {0x34, "Service Negotiation Command (SNC)"},
+#endif
+#if 0 /* old */
+ {0x80, "DLC parameter negotiation (PN)"},
+ {0x20, "Test Command (Test)"},
+ {0xa0, "Flow Control On Command (FCon)"},
+ {0x60, "Flow Control Off Command (FCoff)"},
+ {0xe0, "Modem Status Command (MSC)"},
+ {0x10, "Non Supported Command Response (NSC)"},
+ {0x90, "Remote Port Negotiation Command (RPN)"},
+ {0x50, "Remote Line Status Command (RLS)"},
+ {0x40, "Power Saving Control (PSC)"},
+ {0xc0, "Multiplexer close down (CLD)"},
+ {0xd0, "Service Negotiation Command (SNC)"},
+#endif
+ {0x0, NULL}
};
static const value_string vs_ea[] = {
- {1, "Last field octet"},
- {0, "More field octets following"},
- {0, NULL}
+ {1, "Last field octet"},
+ {0, "More field octets following"},
+ {0, NULL}
};
static const value_string vs_cr[] = {
- {1, "Command"},
- {0, "Response"},
- {0, NULL}
+ {1, "Command"},
+ {0, "Response"},
+ {0, NULL}
};
static int
get_le_multi_byte_value(tvbuff_t *tvb, int offset, proto_tree *tree, guint32 *val_ptr, int hf_index)
{
- guint8 byte, bc = 0;
- guint32 val = 0;
- int start_offset=offset;
+ guint8 byte, bc = 0;
+ guint32 val = 0;
+ int start_offset = offset;
- do{
- byte = tvb_get_guint8(tvb, offset);
- offset++;
- val |= ((byte>>1)&0xff) << (bc++ * 7);
- }while((byte & 0x1)==0);
+ do {
+ byte = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ val |= ((byte>>1)&0xff) << (bc++ * 7);
+ } while ((byte & 0x1) == 0);
- *val_ptr = val;
+ *val_ptr = val;
- if(hf_index>0){
- proto_tree_add_uint(tree, hf_index, tvb, start_offset, offset-start_offset, val);
- }
+ if (hf_index > 0) {
+ proto_tree_add_uint(tree, hf_index, tvb, start_offset, offset-start_offset, val);
+ }
- return offset;
+ return offset;
}
static int
dissect_ctrl_pn(packet_info *pinfo, proto_tree *t, tvbuff_t *tvb, int offset, int cr_flag)
{
- proto_tree *st;
- proto_item *ti;
- int dlci;
- int cl;
- dlci_state_t *dlci_state;
- guint8 flags;
-
- /* dlci */
- dlci=tvb_get_guint8(tvb, offset)&0x3f;
- proto_tree_add_uint(t, hf_dlci, tvb, offset, 1, dlci);
- offset++;
-
- /* cl */
- flags=tvb_get_guint8(tvb, offset);
- cl=flags&0xf0;
-
- ti = proto_tree_add_text(t, tvb, offset, 1, "I1-I4: 0x%x, C1-C4: 0x%x", flags&0xf, (flags>>4)&0xf);
- st = proto_item_add_subtree(ti, ett_ctrl_pn_ci);
-
- proto_tree_add_item(st, hf_pn_c14, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(st, hf_pn_i14, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- /* priority */
- proto_tree_add_item(t, hf_priority, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- /* Ack timer */
- proto_tree_add_text(t, tvb, offset, 1, "Acknowledgement timer (T1): %d ms", (guint32)tvb_get_guint8(tvb, offset) * 100);
- offset++;
-
- /* max frame size */
- proto_tree_add_item(t, hf_max_frame_size, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- /* max retrans */
- proto_tree_add_item(t, hf_max_retrans, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- /* error recovery mode */
- proto_tree_add_item(t, hf_error_recovery_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- if(!pinfo->fd->flags.visited){
- guint32 token;
-
- if( pinfo->p2p_dir == cr_flag )
- token = dlci | 0x01; /* local service */
- else
- token = dlci;
-
- dlci_state=se_tree_lookup32(dlci_table, token);
- if(!dlci_state){
- dlci_state=se_alloc0(sizeof(dlci_state_t));
- se_tree_insert32(dlci_table, token, dlci_state);
- }
-
- if(!cl){
- /* sender does not do credit based flow control */
- dlci_state->do_credit_fc = 0;
- } else if(cr_flag && (cl==0xf0)){
- /* sender requests to use credit based flow control */
- dlci_state->do_credit_fc |= 1;
- } else if((!cr_flag) && (cl==0xe0)){
- /* receiver also knows how to handle credit based
- flow control */
- dlci_state->do_credit_fc |= 2;
- }
- }
- return offset;
+ proto_tree *st;
+ proto_item *ti;
+ int dlci;
+ int cl;
+ dlci_state_t *dlci_state;
+ guint8 flags;
+
+ /* dlci */
+ dlci = tvb_get_guint8(tvb, offset) & 0x3f;
+ proto_tree_add_uint(t, hf_dlci, tvb, offset, 1, dlci);
+ offset += 1;
+
+ /* cl */
+ flags = tvb_get_guint8(tvb, offset);
+ cl = flags&0xf0;
+
+ ti = proto_tree_add_text(t, tvb, offset, 1, "I1-I4: 0x%x, C1-C4: 0x%x", flags&0xf, (flags>>4)&0xf);
+ st = proto_item_add_subtree(ti, ett_ctrl_pn_ci);
+
+ proto_tree_add_item(st, hf_pn_c14, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(st, hf_pn_i14, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+
+ /* priority */
+ proto_tree_add_item(t, hf_priority, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+
+ /* Ack timer */
+ proto_tree_add_text(t, tvb, offset, 1, "Acknowledgement timer (T1): %d ms", (guint32)tvb_get_guint8(tvb, offset) * 100);
+ offset += 1;
+
+ /* max frame size */
+ proto_tree_add_item(t, hf_max_frame_size, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ /* max retrans */
+ proto_tree_add_item(t, hf_max_retrans, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+
+ /* error recovery mode */
+ proto_tree_add_item(t, hf_error_recovery_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+
+ if (!pinfo->fd->flags.visited) {
+ guint32 token;
+
+ if (pinfo->p2p_dir == cr_flag)
+ token = dlci | 0x01; /* local service */
+ else
+ token = dlci;
+
+ dlci_state = se_tree_lookup32(dlci_table, token);
+ if (!dlci_state) {
+ dlci_state = se_alloc0(sizeof(dlci_state_t));
+ se_tree_insert32(dlci_table, token, dlci_state);
+ }
+
+ if (!cl) {
+ /* sender does not do credit based flow control */
+ dlci_state->do_credit_fc = 0;
+ } else if (cr_flag && (cl == 0xf0)) {
+ /* sender requests to use credit based flow control */
+ dlci_state->do_credit_fc |= 1;
+ } else if ((!cr_flag) && (cl == 0xe0)) {
+ /* receiver also knows how to handle credit based
+ flow control */
+ dlci_state->do_credit_fc |= 2;
+ }
+ }
+ return offset;
}
static int
dissect_ctrl_msc(proto_tree *t, tvbuff_t *tvb, int offset, int length)
{
- proto_tree *st;
- proto_item *it;
- guint8 status;
- int start_offset;
-
- proto_tree_add_uint(t, hf_dlci, tvb, offset, 1, tvb_get_guint8(tvb, offset)&0x3f);
- offset++;
-
- start_offset=offset;
- status = tvb_get_guint8(tvb, offset);
- it = proto_tree_add_text(t, tvb, offset, 1, "V.24 Signals: FC = %d, RTC = %d, RTR = %d, IC = %d, DV = %d", (status >> 1) & 1,
- (status >> 2) & 1, (status >> 3) & 1,
- (status >> 6) & 1, (status >> 7) & 1);
- st = proto_item_add_subtree(it, ett_ctrl_pn_v24);
-
- proto_tree_add_item(st, hf_msc_fc, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(st, hf_msc_rtc, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(st, hf_msc_rtr, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(st, hf_msc_ic, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(st, hf_msc_dv, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- if(length==3){
- proto_tree_add_text(t, tvb, offset, 1, "Break bits B1-B3: 0x%x", (tvb_get_guint8(tvb, offset) & 0xf) >> 1);
- proto_tree_add_item(t, hf_msc_l, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- }
-
- proto_item_set_len(it, offset-start_offset);
-
- return offset;
+ proto_tree *st;
+ proto_item *it;
+ guint8 status;
+ int start_offset;
+
+ proto_tree_add_uint(t, hf_dlci, tvb, offset, 1, tvb_get_guint8(tvb, offset)&0x3f);
+ offset += 1;
+
+ start_offset = offset;
+ status = tvb_get_guint8(tvb, offset);
+ it = proto_tree_add_text(t, tvb, offset, 1, "V.24 Signals: FC = %d, RTC = %d, RTR = %d, IC = %d, DV = %d", (status >> 1) & 1,
+ (status >> 2) & 1, (status >> 3) & 1,
+ (status >> 6) & 1, (status >> 7) & 1);
+ st = proto_item_add_subtree(it, ett_ctrl_pn_v24);
+
+ proto_tree_add_item(st, hf_msc_fc, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(st, hf_msc_rtc, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(st, hf_msc_rtr, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(st, hf_msc_ic, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(st, hf_msc_dv, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+
+ if (length == 3) {
+ proto_tree_add_text(t, tvb, offset, 1, "Break bits B1-B3: 0x%x", (tvb_get_guint8(tvb, offset) & 0xf) >> 1);
+ proto_tree_add_item(t, hf_msc_l, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+ }
+
+ proto_item_set_len(it, offset-start_offset);
+
+ return offset;
}
static int
dissect_btrfcomm_Address(tvbuff_t *tvb, int offset, proto_tree *tree, guint8 *ea_flagp, guint8 *cr_flagp, guint8 *dlcip)
{
- proto_item *ti;
- proto_tree *addr_tree;
- guint8 dlci, cr_flag, ea_flag, flags;
+ proto_item *ti;
+ proto_tree *addr_tree;
+ guint8 dlci, cr_flag, ea_flag, flags;
- flags=tvb_get_guint8(tvb, offset);
+ flags = tvb_get_guint8(tvb, offset);
- ea_flag=flags&0x01;
- if(ea_flagp){
- *ea_flagp=ea_flag;
- }
+ ea_flag = flags&0x01;
+ if (ea_flagp) {
+ *ea_flagp = ea_flag;
+ }
- cr_flag=(flags&0x02)?1:0;
- if(cr_flagp){
- *cr_flagp=cr_flag;
- }
+ cr_flag = (flags&0x02) ? 1 : 0;
+ if (cr_flagp) {
+ *cr_flagp = cr_flag;
+ }
- dlci=flags>>2;
- if(dlcip){
- *dlcip=dlci;
- }
+ dlci = flags>>2;
+ if (dlcip) {
+ *dlcip = dlci;
+ }
- ti = proto_tree_add_text(tree, tvb, offset, 1, "Address: E/A flag: %d, C/R flag: %d, DLCI: 0x%02x", ea_flag, cr_flag, dlci);
- addr_tree = proto_item_add_subtree(ti, ett_addr);
+ ti = proto_tree_add_text(tree, tvb, offset, 1, "Address: E/A flag: %d, C/R flag: %d, DLCI: 0x%02x", ea_flag, cr_flag, dlci);
+ addr_tree = proto_item_add_subtree(ti, ett_addr);
- proto_tree_add_uint(addr_tree, hf_dlci, tvb, offset, 1, dlci);
- proto_tree_add_item(addr_tree, hf_cr, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(addr_tree, hf_ea, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_uint(addr_tree, hf_dlci, tvb, offset, 1, dlci);
+ proto_tree_add_item(addr_tree, hf_cr, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(addr_tree, hf_ea, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
- return offset;
+ return offset;
}
static int
dissect_btrfcomm_Control(tvbuff_t *tvb, int offset, proto_tree *tree, guint8 *pf_flagp, guint8 *frame_typep)
{
- proto_item *ti;
- proto_tree *hctl_tree;
- guint8 frame_type, pf_flag, flags;
+ proto_item *ti;
+ proto_tree *hctl_tree;
+ guint8 frame_type, pf_flag, flags;
- flags=tvb_get_guint8(tvb, offset);
+ flags = tvb_get_guint8(tvb, offset);
- pf_flag=(flags&0x10)?1:0;
- if(pf_flagp){
- *pf_flagp=pf_flag;
- }
+ pf_flag = (flags&0x10) ? 1 : 0;
+ if (pf_flagp) {
+ *pf_flagp = pf_flag;
+ }
- frame_type=flags&0xef;
- if(frame_typep){
- *frame_typep=frame_type;
- }
+ frame_type = flags&0xef;
+ if (frame_typep) {
+ *frame_typep = frame_type;
+ }
- ti = proto_tree_add_text(tree, tvb, offset, 1, "Control: Frame type: %s (0x%x), P/F flag: %d", val_to_str(frame_type, vs_frame_type, "Unknown"), frame_type, pf_flag);
- hctl_tree = proto_item_add_subtree(ti, ett_control);
+ ti = proto_tree_add_text(tree, tvb, offset, 1, "Control: Frame type: %s (0x%x), P/F flag: %d",
+ val_to_str_const(frame_type, vs_frame_type, "Unknown"), frame_type, pf_flag);
+ hctl_tree = proto_item_add_subtree(ti, ett_control);
- proto_tree_add_item(hctl_tree, hf_pf, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(hctl_tree, hf_frame_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(hctl_tree, hf_pf, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(hctl_tree, hf_frame_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- return offset;
+ offset += 1;
+ return offset;
}
@@ -420,71 +413,74 @@ dissect_btrfcomm_Control(tvbuff_t *tvb, int offset, proto_tree *tree, guint8 *pf
static int
dissect_btrfcomm_PayloadLen(tvbuff_t *tvb, int offset, proto_tree *tree, guint16 *frame_lenp)
{
- guint16 frame_len;
- int start_offset=offset;
+ guint16 frame_len;
+ int start_offset = offset;
- frame_len = tvb_get_guint8(tvb, offset);
- offset++;
+ frame_len = tvb_get_guint8(tvb, offset);
+ offset += 1;
- if(frame_len&0x01){
- frame_len >>= 1; /* 0 - 127 */
- } else {
- frame_len >>= 1; /* 128 - ... */
- frame_len |= (tvb_get_guint8(tvb, offset)) << 7;
- offset++;
- }
+ if (frame_len&0x01) {
+ frame_len >>= 1; /* 0 - 127 */
+ } else {
+ frame_len >>= 1; /* 128 - ... */
+ frame_len |= (tvb_get_guint8(tvb, offset)) << 7;
+ offset += 1;
+ }
- proto_tree_add_uint(tree, hf_len, tvb, start_offset, offset-start_offset, frame_len);
+ proto_tree_add_uint(tree, hf_len, tvb, start_offset, offset-start_offset, frame_len);
- if(frame_lenp){
- *frame_lenp=frame_len;
- }
+ if (frame_lenp) {
+ *frame_lenp = frame_len;
+ }
- return offset;
+ return offset;
}
static int
dissect_btrfcomm_MccType(tvbuff_t *tvb, int offset, proto_tree *tree, packet_info *pinfo, guint8 *mcc_cr_flagp, guint8 *mcc_ea_flagp, guint32 *mcc_typep)
{
- int start_offset=offset;
- proto_item *ti;
- proto_tree *mcc_tree;
- guint8 flags, mcc_cr_flag, mcc_ea_flag;
- guint32 mcc_type;
+ int start_offset = offset;
+ proto_item *ti;
+ proto_tree *mcc_tree;
+ guint8 flags, mcc_cr_flag, mcc_ea_flag;
+ guint32 mcc_type;
- flags=tvb_get_guint8(tvb, offset);
+ flags = tvb_get_guint8(tvb, offset);
- mcc_cr_flag=(flags&0x2)?1:0;
- if(mcc_cr_flagp){
- *mcc_cr_flagp=mcc_cr_flag;
- }
+ mcc_cr_flag = (flags&0x2) ? 1 : 0;
+ if (mcc_cr_flagp) {
+ *mcc_cr_flagp = mcc_cr_flag;
+ }
- mcc_ea_flag=flags&0x1;
- if(mcc_ea_flagp){
- *mcc_ea_flagp=mcc_ea_flag;
- }
+ mcc_ea_flag = flags & 0x1;
+ if (mcc_ea_flagp) {
+ *mcc_ea_flagp = mcc_ea_flag;
+ }
- offset = get_le_multi_byte_value(tvb, offset, tree, &mcc_type, -1);
- mcc_type =(mcc_type>>1)&0x3f; /* shift c/r flag off */
- if(mcc_typep){
- *mcc_typep=mcc_type;
- }
+ offset = get_le_multi_byte_value(tvb, offset, tree, &mcc_type, -1);
+ mcc_type = (mcc_type>>1) & 0x3f; /* shift c/r flag off */
+ if (mcc_typep) {
+ *mcc_typep = mcc_type;
+ }
- if(mcc_type){
- col_append_fstr(pinfo->cinfo, COL_INFO, "%s ", val_to_str(mcc_type, vs_ctl, "Unknown"));
- }
+ if (mcc_type) {
+ col_append_fstr(pinfo->cinfo, COL_INFO, "%s ", val_to_str_const(mcc_type, vs_ctl, "Unknown"));
+ }
- ti = proto_tree_add_text(tree, tvb, start_offset, offset-start_offset, "Type: %s (0x%x), C/R flag = %d, E/A flag = %d", val_to_str(mcc_type, vs_ctl, "Unknown"), mcc_type, mcc_cr_flag, mcc_ea_flag);
- mcc_tree = proto_item_add_subtree(ti, ett_mcc);
+ ti = proto_tree_add_text(tree, tvb, start_offset, offset-start_offset,
+ "Type: %s (0x%x), C/R flag = %d, E/A flag = %d",
+ val_to_str_const(mcc_type, vs_ctl, "Unknown"),
+ mcc_type, mcc_cr_flag, mcc_ea_flag);
+ mcc_tree = proto_item_add_subtree(ti, ett_mcc);
- proto_tree_add_item(mcc_tree, hf_mcc_cmd, tvb, start_offset, offset-start_offset, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(mcc_tree, hf_mcc_cr, tvb, start_offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(mcc_tree, hf_mcc_ea, tvb, start_offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mcc_tree, hf_mcc_cmd, tvb, start_offset, offset-start_offset, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mcc_tree, hf_mcc_cr, tvb, start_offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mcc_tree, hf_mcc_ea, tvb, start_offset, 1, ENC_LITTLE_ENDIAN);
- return offset;
+ return offset;
}
/* This dissector is only called from L2CAP.
@@ -495,532 +491,537 @@ dissect_btrfcomm_MccType(tvbuff_t *tvb, int offset, proto_tree *tree, packet_inf
static void
dissect_btrfcomm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti;
- proto_tree *rfcomm_tree;
- proto_tree *ctrl_tree;
- int offset=0;
- int fcs_offset;
- guint8 dlci, cr_flag, ea_flag;
- guint8 frame_type, pf_flag;
- guint16 frame_len;
- dlci_state_t *dlci_state = NULL;
-
- ti = proto_tree_add_item(tree, proto_btrfcomm, tvb, offset, -1, ENC_NA);
- rfcomm_tree = proto_item_add_subtree(ti, ett_btrfcomm);
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "RFCOMM");
- switch (pinfo->p2p_dir) {
-
- case P2P_DIR_SENT:
- col_add_str(pinfo->cinfo, COL_INFO, "Sent ");
- break;
-
- case P2P_DIR_RECV:
- col_add_str(pinfo->cinfo, COL_INFO, "Rcvd ");
- break;
-
- case P2P_DIR_UNKNOWN:
- col_clear(pinfo->cinfo, COL_INFO);
- break;
-
- default:
- col_add_fstr(pinfo->cinfo, COL_INFO, "Unknown direction %d ",
- pinfo->p2p_dir);
- break;
- }
-
-
- /* flags and dlci */
- offset=dissect_btrfcomm_Address(tvb, offset, rfcomm_tree, &ea_flag, &cr_flag, &dlci);
- /* pf and frame type */
- offset=dissect_btrfcomm_Control(tvb, offset, rfcomm_tree, &pf_flag, &frame_type);
- /* payload length */
- offset=dissect_btrfcomm_PayloadLen(tvb, offset, rfcomm_tree, &frame_len);
-
- if (dlci && (frame_len || (frame_type == 0xef) || (frame_type == 0x2f) )) {
- guint32 token;
-
- if( pinfo->p2p_dir == cr_flag )
- token = dlci | 0x01; /* local service */
- else
- token = dlci;
-
- dlci_state=se_tree_lookup32(dlci_table, token);
- if(!dlci_state){
- dlci_state=se_alloc0(sizeof(dlci_state_t));
- se_tree_insert32(dlci_table, token, dlci_state);
- }
- }
-
- col_append_fstr(pinfo->cinfo, COL_INFO, "%s DLCI=%d ", val_to_str(frame_type, vs_frame_type_short, "Unknown"), dlci);
- if(dlci && (frame_type == 0x2f))
- col_append_fstr(pinfo->cinfo, COL_INFO, "(%s) ", val_to_str(dlci_state->service, vs_service_classes, "Unknown"));
-
- /* UID frame */
- if(frame_type==0xef && dlci && pf_flag) {
- col_append_str(pinfo->cinfo, COL_INFO, "UID ");
- if((dlci_state->do_credit_fc&0x03)==0x03){
-/*QQQ use tvb_length_remaining()==2 and !frame_len as heuristics to catch this as well? */
- /* add credit based flow control byte */
- proto_tree_add_item(rfcomm_tree, hf_fc_credits, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- }
- }
-
-
- fcs_offset = offset + frame_len;
-
-
- /* multiplexer control command */
- if((!dlci)&&frame_len){
- proto_item *mcc_ti;
- guint32 mcc_type, length;
- guint8 mcc_cr_flag, mcc_ea_flag;
- int start_offset=offset;
-
- col_append_str(pinfo->cinfo, COL_INFO, "MPX_CTRL ");
-
- mcc_ti = proto_tree_add_text(rfcomm_tree, tvb, offset, 1, "Multiplexer Control Command");
- ctrl_tree = proto_item_add_subtree(mcc_ti, ett_btrfcomm_ctrl);
-
- /* mcc type */
- offset=dissect_btrfcomm_MccType(tvb, offset, ctrl_tree, pinfo, &mcc_cr_flag, &mcc_ea_flag, &mcc_type);
-
- /* len */
- offset = get_le_multi_byte_value(tvb, offset, ctrl_tree, &length, hf_mcc_len);
-
-
- if (length > (guint32) tvb_length_remaining(tvb, offset)) {
- expert_add_info_format(pinfo, ctrl_tree, PI_MALFORMED, PI_ERROR, "Huge MCC length: %u", length);
- return;
- }
-
- switch(mcc_type) {
- case 0x20: /* Parameter Negotiation */
- col_append_str(pinfo->cinfo, COL_INFO, "Parameter Negotiation ");
- dissect_ctrl_pn(pinfo, ctrl_tree, tvb, offset, mcc_cr_flag);
- break;
- case 0x38: /* Model Status Command */
- col_append_str(pinfo->cinfo, COL_INFO, "Model Status Command ");
- dissect_ctrl_msc(ctrl_tree, tvb, offset, length);
- break;
- }
- offset += length;
-
- proto_item_set_len(mcc_ti, offset-start_offset);
- }
-
-
- /* try to find a higher layer dissector that has registered to handle data
- * for this kind of service, if none is found dissect it as raw "data"
- */
- if(dlci&&frame_len){
- tvbuff_t *next_tvb;
- btl2cap_data_t *l2cap_data;
- btrfcomm_data_t rfcomm_data;
-
- next_tvb = tvb_new_subset(tvb, offset, frame_len, frame_len);
-
- l2cap_data = pinfo->private_data;
- pinfo->private_data = &rfcomm_data;
- rfcomm_data.chandle = l2cap_data->chandle;
- rfcomm_data.cid = l2cap_data->cid;
- rfcomm_data.dlci = dlci;
-
- if(!dissector_try_uint(rfcomm_service_dissector_table, dlci_state->service,
- next_tvb, pinfo, tree)){
- /* unknown service, let the data dissector handle it */
- call_dissector(data_handle, next_tvb, pinfo, tree);
- }
- }
-
- proto_tree_add_item(rfcomm_tree, hf_fcs, tvb, fcs_offset, 1, ENC_LITTLE_ENDIAN);
+ proto_item *ti;
+ proto_tree *rfcomm_tree;
+ proto_tree *ctrl_tree;
+ int offset = 0;
+ int fcs_offset;
+ guint8 dlci, cr_flag, ea_flag;
+ guint8 frame_type, pf_flag;
+ guint16 frame_len;
+ dlci_state_t *dlci_state = NULL;
+
+ ti = proto_tree_add_item(tree, proto_btrfcomm, tvb, offset, -1, ENC_NA);
+ rfcomm_tree = proto_item_add_subtree(ti, ett_btrfcomm);
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "RFCOMM");
+ switch (pinfo->p2p_dir) {
+
+ case P2P_DIR_SENT:
+ col_add_str(pinfo->cinfo, COL_INFO, "Sent ");
+ break;
+
+ case P2P_DIR_RECV:
+ col_add_str(pinfo->cinfo, COL_INFO, "Rcvd ");
+ break;
+
+ case P2P_DIR_UNKNOWN:
+ col_clear(pinfo->cinfo, COL_INFO);
+ break;
+
+ default:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Unknown direction %d ",
+ pinfo->p2p_dir);
+ break;
+ }
+
+
+ /* flags and dlci */
+ offset = dissect_btrfcomm_Address(tvb, offset, rfcomm_tree, &ea_flag, &cr_flag, &dlci);
+ /* pf and frame type */
+ offset = dissect_btrfcomm_Control(tvb, offset, rfcomm_tree, &pf_flag, &frame_type);
+ /* payload length */
+ offset = dissect_btrfcomm_PayloadLen(tvb, offset, rfcomm_tree, &frame_len);
+
+ if (dlci && (frame_len || (frame_type == 0xef) || (frame_type == 0x2f))) {
+ guint32 token;
+
+ if (pinfo->p2p_dir == cr_flag)
+ token = dlci | 0x01; /* local service */
+ else
+ token = dlci;
+
+ dlci_state = se_tree_lookup32(dlci_table, token);
+ if (!dlci_state) {
+ dlci_state = se_alloc0(sizeof(dlci_state_t));
+ se_tree_insert32(dlci_table, token, dlci_state);
+ }
+ }
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, "%s DLCI=%d ",
+ val_to_str_const(frame_type, vs_frame_type_short, "Unknown"), dlci);
+ if (dlci && (frame_type == 0x2f))
+ col_append_fstr(pinfo->cinfo, COL_INFO, "(%s) ",
+ val_to_str_ext_const(dlci_state->service, &vs_service_classes_ext, "Unknown"));
+
+ /* UID frame */
+ if ((frame_type == 0xef) && dlci && pf_flag) {
+ col_append_str(pinfo->cinfo, COL_INFO, "UID ");
+ if ((dlci_state->do_credit_fc & 0x03) == 0x03) {
+/*QQQ use tvb_length_remaining() == 2 and !frame_len as heuristics to catch this as well? */
+ /* add credit based flow control byte */
+ proto_tree_add_item(rfcomm_tree, hf_fc_credits, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+ }
+ }
+
+
+ fcs_offset = offset + frame_len;
+
+
+ /* multiplexer control command */
+ if (!dlci && frame_len) {
+ proto_item *mcc_ti;
+ guint32 mcc_type, length;
+ guint8 mcc_cr_flag, mcc_ea_flag;
+ int start_offset = offset;
+
+ col_append_str(pinfo->cinfo, COL_INFO, "MPX_CTRL ");
+
+ mcc_ti = proto_tree_add_text(rfcomm_tree, tvb, offset, 1, "Multiplexer Control Command");
+ ctrl_tree = proto_item_add_subtree(mcc_ti, ett_btrfcomm_ctrl);
+
+ /* mcc type */
+ offset = dissect_btrfcomm_MccType(tvb, offset, ctrl_tree, pinfo, &mcc_cr_flag, &mcc_ea_flag, &mcc_type);
+
+ /* len */
+ offset = get_le_multi_byte_value(tvb, offset, ctrl_tree, &length, hf_mcc_len);
+
+
+ if (length > (guint32) tvb_length_remaining(tvb, offset)) {
+ expert_add_info_format(pinfo, ctrl_tree, PI_MALFORMED, PI_ERROR, "Huge MCC length: %u", length);
+ return;
+ }
+
+ switch(mcc_type) {
+ case 0x20: /* Parameter Negotiation */
+ col_append_str(pinfo->cinfo, COL_INFO, "Parameter Negotiation ");
+ dissect_ctrl_pn(pinfo, ctrl_tree, tvb, offset, mcc_cr_flag);
+ break;
+ case 0x38: /* Model Status Command */
+ col_append_str(pinfo->cinfo, COL_INFO, "Model Status Command ");
+ dissect_ctrl_msc(ctrl_tree, tvb, offset, length);
+ break;
+ }
+ offset += length;
+
+ proto_item_set_len(mcc_ti, offset-start_offset);
+ }
+
+
+ /* try to find a higher layer dissector that has registered to handle data
+ * for this kind of service, if none is found dissect it as raw "data"
+ */
+ if (dlci && frame_len) {
+ tvbuff_t *next_tvb;
+ btl2cap_data_t *l2cap_data;
+ btrfcomm_data_t rfcomm_data;
+
+ next_tvb = tvb_new_subset(tvb, offset, frame_len, frame_len);
+
+ l2cap_data = pinfo->private_data;
+ pinfo->private_data = &rfcomm_data;
+ rfcomm_data.chandle = l2cap_data->chandle;
+ rfcomm_data.cid = l2cap_data->cid;
+ rfcomm_data.dlci = dlci;
+
+ if (!dissector_try_uint(rfcomm_service_dissector_table, dlci_state->service,
+ next_tvb, pinfo, tree)) {
+ /* unknown service, let the data dissector handle it */
+ call_dissector(data_handle, next_tvb, pinfo, tree);
+ }
+ }
+
+ proto_tree_add_item(rfcomm_tree, hf_fcs, tvb, fcs_offset, 1, ENC_LITTLE_ENDIAN);
}
void
proto_register_btrfcomm(void)
{
- static hf_register_info hf[] = {
- {&hf_dlci,
- {"DLCI", "btrfcomm.dlci",
- FT_UINT8, BASE_HEX, NULL, 0,
- "RFCOMM DLCI", HFILL}
- },
- {&hf_priority,
- {"Priority", "btrfcomm.priority",
- FT_UINT8, BASE_DEC, NULL, 0x3f,
- NULL, HFILL}
- },
- {&hf_max_frame_size,
- {"Max Frame Size", "btrfcomm.max_frame_size",
- FT_UINT16, BASE_DEC, NULL, 0,
- "Maximum Frame Size", HFILL}
- },
- {&hf_max_retrans,
- {"Max Retrans", "btrfcomm.max_retrans",
- FT_UINT8, BASE_DEC, NULL, 0,
- "Maximum number of retransmissions", HFILL}
- },
- {&hf_error_recovery_mode,
- {"Error Recovery Mode", "btrfcomm.error_recovery_mode",
- FT_UINT8, BASE_DEC, NULL, 0x07,
- NULL, HFILL}
- },
- {&hf_ea,
- {"EA Flag", "btrfcomm.ea",
- FT_UINT8, BASE_HEX, VALS(vs_ea), 0x1,
- "EA flag (should be always 1)", HFILL}
- },
- {&hf_cr,
- {"C/R Flag", "btrfcomm.cr",
- FT_UINT8, BASE_HEX, VALS(vs_cr), 0x2,
- "Command/Response flag", HFILL}
- },
- {&hf_mcc_ea,
- {"EA Flag", "btrfcomm.mcc.ea",
- FT_UINT8, BASE_HEX, VALS(vs_ea), 0x1,
- "EA flag (should be always 1)", HFILL}
- },
- {&hf_mcc_cr,
- {"C/R Flag", "btrfcomm.mcc.cr",
- FT_UINT8, BASE_HEX, VALS(vs_cr), 0x2,
- "Command/Response flag", HFILL}
- },
- {&hf_mcc_cmd,
- {"C/R Flag", "btrfcomm.mcc.cmd",
- FT_UINT8, BASE_HEX, VALS(vs_ctl), 0xfc,
- "Command/Response flag", HFILL}
- },
- {&hf_frame_type,
- {"Frame type", "btrfcomm.frame_type",
- FT_UINT8, BASE_HEX, VALS(vs_frame_type), 0xef,
- "Command/Response flag", HFILL}
- },
- {&hf_pf,
- {"P/F flag", "btrfcomm.pf",
- FT_UINT8, BASE_HEX, NULL, 0x10,
- "Poll/Final bit", HFILL}
- },
- {&hf_pn_i14,
- {"Type of frame", "btrfcomm.pn.i",
- FT_UINT8, BASE_HEX, VALS(vs_ctl_pn_i), 0x0f,
- "Type of information frames used for that particular DLCI",
- HFILL}
- },
- {&hf_pn_c14,
- {"Convergence layer", "btrfcomm.pn.cl",
- FT_UINT8, BASE_HEX, VALS(vs_ctl_pn_cl), 0xf0,
- "Convergence layer used for that particular DLCI", HFILL}
- },
- {&hf_len,
- {"Payload length", "btrfcomm.len",
- FT_UINT16, BASE_DEC, NULL, 0,
- "Frame length", HFILL}
- },
- {&hf_mcc_len,
- {"MCC Length", "btrfcomm.mcc.len",
- FT_UINT16, BASE_DEC, NULL, 0,
- "Length of MCC data", HFILL}
- },
- {&hf_fcs,
- {"Frame Check Sequence", "btrfcomm.fcs",
- FT_UINT8, BASE_HEX, NULL, 0,
- "Checksum over frame", HFILL}
- },
- {&hf_msc_fc,
- {"Flow Control (FC)", "btrfcomm.msc.fc",
- FT_UINT8, BASE_HEX, NULL, 0x2,
- "Flow Control", HFILL}
- },
- {&hf_msc_rtc,
- {"Ready To Communicate (RTC)", "btrfcomm.msc.rtc",
- FT_UINT8, BASE_HEX, NULL, 0x4,
- "Ready To Communicate", HFILL}
- },
- {&hf_msc_rtr,
- {"Ready To Receive (RTR)", "btrfcomm.msc.rtr",
- FT_UINT8, BASE_HEX, NULL, 0x8,
- "Ready To Receive", HFILL}
- },
- {&hf_msc_ic,
- {"Incoming Call Indicator (IC)", "btrfcomm.msc.ic",
- FT_UINT8, BASE_HEX, NULL, 0x40,
- "Incoming Call Indicator", HFILL}
- },
- {&hf_msc_dv,
- {"Data Valid (DV)", "btrfcomm.msc.dv",
- FT_UINT8, BASE_HEX, NULL, 0x80,
- "Data Valid", HFILL}
- },
- {&hf_msc_l,
- {"Length of break in units of 200ms", "btrfcomm.msc.bl",
- FT_UINT8, BASE_DEC, NULL, 0xf0,
- NULL, HFILL}
- },
- {&hf_fc_credits,
- {"Credits", "btrfcomm.credits",
- FT_UINT8, BASE_DEC, NULL, 0,
- "Flow control: number of UIH frames allowed to send", HFILL}
- }
-
- };
-
- /* Setup protocol subtree array */
- static gint *ett[] = {
- &ett_btrfcomm,
- &ett_btrfcomm_ctrl,
- &ett_addr,
- &ett_control,
- &ett_mcc,
- &ett_ctrl_pn_ci,
- &ett_ctrl_pn_v24
- };
-
- /* Register the protocol name and description */
- proto_btrfcomm = proto_register_protocol("Bluetooth RFCOMM Protocol", "RFCOMM", "btrfcomm");
-
- register_dissector("btrfcomm", dissect_btrfcomm, proto_btrfcomm);
-
- /* Required function calls to register the header fields and subtrees used */
- proto_register_field_array(proto_btrfcomm, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
-
- rfcomm_service_dissector_table = register_dissector_table("btrfcomm.service", "RFCOMM SERVICE", FT_UINT16, BASE_HEX);
-
- dlci_table=se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "RFCOMM dlci table");
+ static hf_register_info hf[] = {
+ { &hf_dlci,
+ { "DLCI", "btrfcomm.dlci",
+ FT_UINT8, BASE_HEX, NULL, 0,
+ "RFCOMM DLCI", HFILL}
+ },
+ { &hf_priority,
+ { "Priority", "btrfcomm.priority",
+ FT_UINT8, BASE_DEC, NULL, 0x3f,
+ NULL, HFILL}
+ },
+ { &hf_max_frame_size,
+ { "Max Frame Size", "btrfcomm.max_frame_size",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "Maximum Frame Size", HFILL}
+ },
+ { &hf_max_retrans,
+ { "Max Retrans", "btrfcomm.max_retrans",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ "Maximum number of retransmissions", HFILL}
+ },
+ { &hf_error_recovery_mode,
+ { "Error Recovery Mode", "btrfcomm.error_recovery_mode",
+ FT_UINT8, BASE_DEC, NULL, 0x07,
+ NULL, HFILL}
+ },
+ { &hf_ea,
+ { "EA Flag", "btrfcomm.ea",
+ FT_UINT8, BASE_HEX, VALS(vs_ea), 0x1,
+ "EA flag (should be always 1)", HFILL}
+ },
+ { &hf_cr,
+ { "C/R Flag", "btrfcomm.cr",
+ FT_UINT8, BASE_HEX, VALS(vs_cr), 0x2,
+ "Command/Response flag", HFILL}
+ },
+ { &hf_mcc_ea,
+ { "EA Flag", "btrfcomm.mcc.ea",
+ FT_UINT8, BASE_HEX, VALS(vs_ea), 0x1,
+ "EA flag (should be always 1)", HFILL}
+ },
+ { &hf_mcc_cr,
+ { "C/R Flag", "btrfcomm.mcc.cr",
+ FT_UINT8, BASE_HEX, VALS(vs_cr), 0x2,
+ "Command/Response flag", HFILL}
+ },
+ { &hf_mcc_cmd,
+ { "C/R Flag", "btrfcomm.mcc.cmd",
+ FT_UINT8, BASE_HEX, VALS(vs_ctl), 0xfc,
+ "Command/Response flag", HFILL}
+ },
+ { &hf_frame_type,
+ { "Frame type", "btrfcomm.frame_type",
+ FT_UINT8, BASE_HEX, VALS(vs_frame_type), 0xef,
+ "Command/Response flag", HFILL}
+ },
+ { &hf_pf,
+ { "P/F flag", "btrfcomm.pf",
+ FT_UINT8, BASE_HEX, NULL, 0x10,
+ "Poll/Final bit", HFILL}
+ },
+ { &hf_pn_i14,
+ { "Type of frame", "btrfcomm.pn.i",
+ FT_UINT8, BASE_HEX, VALS(vs_ctl_pn_i), 0x0f,
+ "Type of information frames used for that particular DLCI",
+ HFILL}
+ },
+ { &hf_pn_c14,
+ { "Convergence layer", "btrfcomm.pn.cl",
+ FT_UINT8, BASE_HEX, VALS(vs_ctl_pn_cl), 0xf0,
+ "Convergence layer used for that particular DLCI", HFILL}
+ },
+ { &hf_len,
+ { "Payload length", "btrfcomm.len",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "Frame length", HFILL}
+ },
+ { &hf_mcc_len,
+ { "MCC Length", "btrfcomm.mcc.len",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "Length of MCC data", HFILL}
+ },
+ { &hf_fcs,
+ { "Frame Check Sequence", "btrfcomm.fcs",
+ FT_UINT8, BASE_HEX, NULL, 0,
+ "Checksum over frame", HFILL}
+ },
+ { &hf_msc_fc,
+ { "Flow Control (FC)", "btrfcomm.msc.fc",
+ FT_UINT8, BASE_HEX, NULL, 0x2,
+ "Flow Control", HFILL}
+ },
+ { &hf_msc_rtc,
+ { "Ready To Communicate (RTC)", "btrfcomm.msc.rtc",
+ FT_UINT8, BASE_HEX, NULL, 0x4,
+ "Ready To Communicate", HFILL}
+ },
+ { &hf_msc_rtr,
+ { "Ready To Receive (RTR)", "btrfcomm.msc.rtr",
+ FT_UINT8, BASE_HEX, NULL, 0x8,
+ "Ready To Receive", HFILL}
+ },
+ { &hf_msc_ic,
+ { "Incoming Call Indicator (IC)", "btrfcomm.msc.ic",
+ FT_UINT8, BASE_HEX, NULL, 0x40,
+ "Incoming Call Indicator", HFILL}
+ },
+ { &hf_msc_dv,
+ { "Data Valid (DV)", "btrfcomm.msc.dv",
+ FT_UINT8, BASE_HEX, NULL, 0x80,
+ "Data Valid", HFILL}
+ },
+ { &hf_msc_l,
+ { "Length of break in units of 200ms", "btrfcomm.msc.bl",
+ FT_UINT8, BASE_DEC, NULL, 0xf0,
+ NULL, HFILL}
+ },
+ { &hf_fc_credits,
+ { "Credits", "btrfcomm.credits",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ "Flow control: number of UIH frames allowed to send", HFILL}
+ }
+
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_btrfcomm,
+ &ett_btrfcomm_ctrl,
+ &ett_addr,
+ &ett_control,
+ &ett_mcc,
+ &ett_ctrl_pn_ci,
+ &ett_ctrl_pn_v24
+ };
+
+ /* Register the protocol name and description */
+ proto_btrfcomm = proto_register_protocol("Bluetooth RFCOMM Protocol", "RFCOMM", "btrfcomm");
+
+ register_dissector("btrfcomm", dissect_btrfcomm, proto_btrfcomm);
+
+ /* Required function calls to register the header fields and subtrees used */
+ proto_register_field_array(proto_btrfcomm, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ rfcomm_service_dissector_table = register_dissector_table("btrfcomm.service", "RFCOMM SERVICE", FT_UINT16, BASE_HEX);
+
+ dlci_table = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "RFCOMM dlci table");
}
static int
btrfcomm_sdp_tap_packet(void *arg _U_, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *arg2)
{
- btsdp_data_t *sdp_data = (btsdp_data_t *) arg2;
-
- if( sdp_data->protocol == BTSDP_RFCOMM_PROTOCOL_UUID ) {
- guint32 token;
- dlci_state_t *dlci_state;
-
- /* rfcomm channel * 2 = dlci */
- token = (sdp_data->channel<<1) | (sdp_data->flags & BTSDP_LOCAL_SERVICE_FLAG_MASK);
-
- dlci_state=se_tree_lookup32(dlci_table, token);
- if(!dlci_state){
- dlci_state=se_alloc0(sizeof(dlci_state_t));
- se_tree_insert32(dlci_table, token, dlci_state);
- }
- dlci_state->service = sdp_data->service;
- }
- return 0;
+ btsdp_data_t *sdp_data = (btsdp_data_t *) arg2;
+
+ if (sdp_data->protocol == BTSDP_RFCOMM_PROTOCOL_UUID) {
+ guint32 token;
+ dlci_state_t *dlci_state;
+
+ /* rfcomm channel * 2 = dlci */
+ token = (sdp_data->channel<<1) | (sdp_data->flags & BTSDP_LOCAL_SERVICE_FLAG_MASK);
+
+ dlci_state = se_tree_lookup32(dlci_table, token);
+ if (!dlci_state) {
+ dlci_state = se_alloc0(sizeof(dlci_state_t));
+ se_tree_insert32(dlci_table, token, dlci_state);
+ }
+ dlci_state->service = sdp_data->service;
+ }
+ return 0;
}
void
proto_reg_handoff_btrfcomm(void)
{
- dissector_handle_t btrfcomm_handle;
+ dissector_handle_t btrfcomm_handle;
- btrfcomm_handle = find_dissector("btrfcomm");
- dissector_add_uint("btl2cap.psm", BTL2CAP_PSM_RFCOMM, btrfcomm_handle);
+ btrfcomm_handle = find_dissector("btrfcomm");
+ dissector_add_uint("btl2cap.psm", BTL2CAP_PSM_RFCOMM, btrfcomm_handle);
- data_handle = find_dissector("data");
+ data_handle = find_dissector("data");
- /* tap into the btsdp dissector to look for rfcomm channel infomation that
- helps us determine the type of rfcomm payload, i.e. which service is
- using the channels so we know which sub-dissector to call */
- register_tap_listener("btsdp", NULL, NULL, TL_IS_DISSECTOR_HELPER, NULL, btrfcomm_sdp_tap_packet, NULL);
+ /* tap into the btsdp dissector to look for rfcomm channel infomation that
+ helps us determine the type of rfcomm payload, i.e. which service is
+ using the channels so we know which sub-dissector to call */
+ register_tap_listener("btsdp", NULL, NULL, TL_IS_DISSECTOR_HELPER, NULL, btrfcomm_sdp_tap_packet, NULL);
}
/* Bluetooth Handsfree (HF) profile dissection */
static void
dissect_bthf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti;
- proto_tree *st;
+ proto_item *ti;
+ proto_tree *st;
- guint length = tvb_length(tvb);
+ guint length = tvb_length(tvb);
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "HANDSFREE");
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "HANDSFREE");
- ti = proto_tree_add_item(tree, proto_bthf, tvb, 0, -1, ENC_NA);
- st = proto_item_add_subtree(ti, ett_bthf);
+ ti = proto_tree_add_item(tree, proto_bthf, tvb, 0, -1, ENC_NA);
+ st = proto_item_add_subtree(ti, ett_bthf);
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s \"%s\"",
- pinfo->p2p_dir==P2P_DIR_SENT?"Sent":"Rcvd", tvb_format_text(tvb, 0, length));
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s \"%s\"",
+ (pinfo->p2p_dir == P2P_DIR_SENT) ? "Sent" : "Rcvd",
+ tvb_format_text(tvb, 0, length));
- proto_tree_add_item(st, hf_at_cmd, tvb, 0, -1, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(st, hf_at_cmd, tvb, 0, -1, ENC_ASCII|ENC_NA);
}
void
proto_register_bthf(void)
{
- static hf_register_info hf[] = {
- {&hf_at_cmd,
- {"AT Cmd", "bthf.atcmd",
- FT_STRING, BASE_NONE, NULL, 0,
- "AT Command", HFILL}
- },
- };
-
- /* Setup protocol subtree array */
- static gint *ett[] = {
- &ett_bthf,
- };
-
- proto_bthf = proto_register_protocol("Bluetooth Handsfree Packet", "BTHF", "bthf");
-
- /* Required function calls to register the header fields and subtrees used */
- proto_register_field_array(proto_bthf, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ static hf_register_info hf[] = {
+ { &hf_at_cmd,
+ { "AT Cmd", "bthf.atcmd",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "AT Command", HFILL}
+ },
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_bthf,
+ };
+
+ proto_bthf = proto_register_protocol("Bluetooth Handsfree Packet", "BTHF", "bthf");
+
+ /* Required function calls to register the header fields and subtrees used */
+ proto_register_field_array(proto_bthf, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_bthf(void)
{
- dissector_handle_t bthf_handle;
+ dissector_handle_t bthf_handle;
- bthf_handle = create_dissector_handle(dissect_bthf, proto_bthf);
+ bthf_handle = create_dissector_handle(dissect_bthf, proto_bthf);
- dissector_add_uint("btrfcomm.service", BTSDP_HFP_SERVICE_UUID, bthf_handle);
- dissector_add_uint("btrfcomm.service", BTSDP_HFP_GW_SERVICE_UUID, bthf_handle);
+ dissector_add_uint("btrfcomm.service", BTSDP_HFP_SERVICE_UUID, bthf_handle);
+ dissector_add_uint("btrfcomm.service", BTSDP_HFP_GW_SERVICE_UUID, bthf_handle);
}
/* Bluetooth Dial-Up Networking (DUN) profile dissection */
static void
dissect_btdun(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti;
- proto_tree *st;
- gboolean is_at_cmd;
- guint i, length;
-
- length = tvb_length(tvb);
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "DUN");
-
- ti = proto_tree_add_item(tree, proto_btdun, tvb, 0, -1, ENC_NA);
- st = proto_item_add_subtree(ti, ett_btdun);
-
- is_at_cmd = TRUE;
- for(i=0;i<length && is_at_cmd;i++) {
- is_at_cmd = tvb_get_guint8(tvb, i) < 0x7d;
- }
-
- if( is_at_cmd) {
- /* presumably an AT command */
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s \"%s\"",
- pinfo->p2p_dir==P2P_DIR_SENT?"Sent":"Rcvd", tvb_format_text(tvb, 0, length));
-
- proto_tree_add_item(st, hf_dun_at_cmd, tvb, 0, -1, ENC_ASCII|ENC_NA);
- }
- else {
- /* ... or raw PPP */
- if( ppp_handle )
- call_dissector(ppp_handle, tvb, pinfo, tree);
- else {
- /* TODO: remove the above 'if' and this 'else-body' when "ppp_raw_hdlc" is available, requires that it is
- made non-anonymous in ppp dissector to use */
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "PPP");
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s <PPP frame>", pinfo->p2p_dir==P2P_DIR_SENT?"Sent":"Rcvd");
-
- call_dissector(data_handle, tvb, pinfo, tree);
- }
- }
+ proto_item *ti;
+ proto_tree *st;
+ gboolean is_at_cmd;
+ guint i, length;
+
+ length = tvb_length(tvb);
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "DUN");
+
+ ti = proto_tree_add_item(tree, proto_btdun, tvb, 0, -1, ENC_NA);
+ st = proto_item_add_subtree(ti, ett_btdun);
+
+ is_at_cmd = TRUE;
+ for(i=0; i<length && is_at_cmd; i++) {
+ is_at_cmd = tvb_get_guint8(tvb, i) < 0x7d;
+ }
+
+ if (is_at_cmd) {
+ /* presumably an AT command */
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s \"%s\"",
+ (pinfo->p2p_dir == P2P_DIR_SENT) ? "Sent" : "Rcvd",
+ tvb_format_text(tvb, 0, length));
+
+ proto_tree_add_item(st, hf_dun_at_cmd, tvb, 0, -1, ENC_ASCII|ENC_NA);
+ }
+ else {
+ /* ... or raw PPP */
+ if (ppp_handle)
+ call_dissector(ppp_handle, tvb, pinfo, tree);
+ else {
+ /* TODO: remove the above 'if' and this 'else-body' when "ppp_raw_hdlc" is available, requires that it is
+ made non-anonymous in ppp dissector to use */
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "PPP");
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s <PPP frame>", (pinfo->p2p_dir == P2P_DIR_SENT) ? "Sent" : "Rcvd");
+
+ call_dissector(data_handle, tvb, pinfo, tree);
+ }
+ }
}
void
proto_register_btdun(void)
{
- static hf_register_info hf[] = {
- {&hf_dun_at_cmd,
- {"AT Cmd", "btdun.atcmd",
- FT_STRING, BASE_NONE, NULL, 0,
- "AT Command", HFILL}
- },
- };
-
- /* Setup protocol subtree array */
- static gint *ett[] = {
- &ett_btdun,
- };
-
- proto_btdun = proto_register_protocol("Bluetooth DUN Packet", "BTDUN", "btdun");
-
- /* Required function calls to register the header fields and subtrees used */
- proto_register_field_array(proto_bthf, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ static hf_register_info hf[] = {
+ { &hf_dun_at_cmd,
+ { "AT Cmd", "btdun.atcmd",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "AT Command", HFILL}
+ },
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_btdun,
+ };
+
+ proto_btdun = proto_register_protocol("Bluetooth DUN Packet", "BTDUN", "btdun");
+
+ /* Required function calls to register the header fields and subtrees used */
+ proto_register_field_array(proto_bthf, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_btdun(void)
{
- dissector_handle_t btdun_handle;
+ dissector_handle_t btdun_handle;
- btdun_handle = create_dissector_handle(dissect_btdun, proto_btdun);
+ btdun_handle = create_dissector_handle(dissect_btdun, proto_btdun);
- dissector_add_uint("btrfcomm.service", BTSDP_DUN_SERVICE_UUID, btdun_handle);
+ dissector_add_uint("btrfcomm.service", BTSDP_DUN_SERVICE_UUID, btdun_handle);
- ppp_handle = find_dissector("ppp_raw_hdlc");
+ ppp_handle = find_dissector("ppp_raw_hdlc");
}
/* Bluetooth Serial Port profile (SPP) dissection */
static void
dissect_btspp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti;
- proto_tree *st;
- gboolean ascii_only;
- guint i, length = tvb_length(tvb);
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "SPP");
-
- ti = proto_tree_add_item(tree, proto_btspp, tvb, 0, -1, ENC_NA);
- st = proto_item_add_subtree(ti, ett_btspp);
-
- length = MIN(length,60);
- ascii_only = TRUE;
- for(i=0;i<length && ascii_only;i++) {
- ascii_only = tvb_get_guint8(tvb, i) < 0x80;
- }
-
- if(ascii_only) {
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s \"%s%s\"",
- pinfo->p2p_dir==P2P_DIR_SENT?"Sent":"Rcvd",
- tvb_format_text(tvb, 0, length),
- tvb_length(tvb) > length ? "...":"");
- }
-
- proto_tree_add_item(st, hf_data, tvb, 0, -1, ENC_NA);
+ proto_item *ti;
+ proto_tree *st;
+ gboolean ascii_only;
+ guint i, length = tvb_length(tvb);
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "SPP");
+
+ ti = proto_tree_add_item(tree, proto_btspp, tvb, 0, -1, ENC_NA);
+ st = proto_item_add_subtree(ti, ett_btspp);
+
+ length = MIN(length,60);
+ ascii_only = TRUE;
+ for(i=0; i<length && ascii_only; i++) {
+ ascii_only = tvb_get_guint8(tvb, i) < 0x80;
+ }
+
+ if (ascii_only) {
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s \"%s%s\"",
+ (pinfo->p2p_dir == P2P_DIR_SENT) ? "Sent" : "Rcvd",
+ tvb_format_text(tvb, 0, length),
+ (tvb_length(tvb) > length) ? "..." : "");
+ }
+
+ proto_tree_add_item(st, hf_data, tvb, 0, -1, ENC_NA);
}
void
proto_register_btspp(void)
{
- static hf_register_info hf[] = {
- {&hf_data,
- {"Data", "btspp.data",
- FT_BYTES, BASE_NONE, NULL, 0,
- NULL, HFILL}},
- };
-
- /* Setup protocol subtree array */
- static gint *ett[] = {
- &ett_btspp,
- };
-
- proto_btspp = proto_register_protocol("Bluetooth SPP Packet", "BTSPP", "btspp");
-
- /* Required function calls to register the header fields and subtrees used */
- proto_register_field_array(proto_bthf, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ static hf_register_info hf[] = {
+ { &hf_data,
+ { "Data", "btspp.data",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL}
+ },
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_btspp,
+ };
+
+ proto_btspp = proto_register_protocol("Bluetooth SPP Packet", "BTSPP", "btspp");
+
+ /* Required function calls to register the header fields and subtrees used */
+ proto_register_field_array(proto_bthf, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_btspp(void)
{
- dissector_handle_t btspp_handle;
+ dissector_handle_t btspp_handle;
- btspp_handle = create_dissector_handle(dissect_btspp, proto_btspp);
+ btspp_handle = create_dissector_handle(dissect_btspp, proto_btspp);
- dissector_add_uint("btrfcomm.service", BTSDP_SPP_SERVICE_UUID, btspp_handle);
+ dissector_add_uint("btrfcomm.service", BTSDP_SPP_SERVICE_UUID, btspp_handle);
}
diff --git a/epan/dissectors/packet-btrfcomm.h b/epan/dissectors/packet-btrfcomm.h
index cd1f30f75c..57e9981df0 100644
--- a/epan/dissectors/packet-btrfcomm.h
+++ b/epan/dissectors/packet-btrfcomm.h
@@ -29,9 +29,9 @@
* chandle, cid, dlci and direction
*/
typedef struct _btrfcomm_data_t {
- guint16 chandle; /* only low 12 bits used */
- guint16 cid;
- guint8 dlci;
+ guint16 chandle; /* only low 12 bits used */
+ guint16 cid;
+ guint8 dlci;
} btrfcomm_data_t;
#endif
diff --git a/epan/dissectors/packet-btsdp.c b/epan/dissectors/packet-btsdp.c
index bda9f9f503..1cb5fa33c1 100644
--- a/epan/dissectors/packet-btsdp.c
+++ b/epan/dissectors/packet-btsdp.c
@@ -69,314 +69,416 @@ static int btsdp_tap = -1;
static emem_tree_t *service_table = NULL;
static const value_string vs_pduid[] = {
- {0x1, "Error Response"},
- {0x2, "Service Search Request"},
- {0x3, "Service Search Response"},
- {0x4, "Service Attribute Request"},
- {0x5, "Service Attribute Response"},
- {0x6, "Service Search Attribute Request"},
- {0x7, "Service Search Attribute Response"},
- {0, NULL}
+ {0x1, "Error Response"},
+ {0x2, "Service Search Request"},
+ {0x3, "Service Search Response"},
+ {0x4, "Service Attribute Request"},
+ {0x5, "Service Attribute Response"},
+ {0x6, "Service Search Attribute Request"},
+ {0x7, "Service Search Attribute Response"},
+ {0, NULL}
};
-#define ATTR_ID_SERVICE_CLASS_ID_LIST 0x0001
-#define ATTR_ID_PROTOCOL_DESCRIPTOR_LIST 0x0004
-#define ATTR_ID_BT_PROFILE_DESCRIPTOR_LIST 0x0009
-#define ATTR_ID_ADDITIONAL_PROTOCOL_DESCRIPTOR_LISTS 0x000d
-#define ATTR_ID_GOEP_L2CAP_PSM_GROUP_ID_IP_SUBNET 0x0200
+#define ATTR_ID_SERVICE_CLASS_ID_LIST 0x0001
+#define ATTR_ID_PROTOCOL_DESCRIPTOR_LIST 0x0004
+#define ATTR_ID_BT_PROFILE_DESCRIPTOR_LIST 0x0009
+#define ATTR_ID_ADDITIONAL_PROTOCOL_DESCRIPTOR_LISTS 0x000d
+#define ATTR_ID_GOEP_L2CAP_PSM_GROUP_ID_IP_SUBNET 0x0200
static const value_string vs_general_attribute_id[] = {
- {0x0000, "Service Record Handle"},
- {0x0001, "Service Class ID List"},
- {0x0002, "Service Record State"},
- {0x0003, "Service ID"},
- {0x0004, "Protocol Descriptor List"},
- {0x0005, "Browse Group List"},
- {0x0006, "Language Base Attribute ID List"},
- {0x0007, "Serviceinfo Time To Live"},
- {0x0008, "Service Availability"},
- {0x0009, "Bluetooth Profile Descriptor List"},
- {0x000a, "Documentation URL"},
- {0x000b, "Client Executable URL"},
- {0x000c, "Icon URL"},
- {0x000d, "Additional Protocol Descriptor Lists"},
- {0x0100, "Service Name"},
- {0x0101, "Service Description"},
- {0x0102, "Provider Name"},
- {0x0200, "GOEP L2CAP PSM/Group Id/IP Subnet"},
- {0x0201, "Service Database State"},
- {0x0300, "Service Version"},
- {0x0301, "Data Exchange Spec/Network/Supported Data Stores List"},
- {0x0302, "Remote Audio Volume Control/MCAP Supported Features"},
- {0x0303, "Supported Formats"},
- {0x0304, "Fax Class 2 Support"},
- {0x0305, "Audio Feedback Support"},
- {0x0306, "Network Address"},
- {0x0307, "WAP Gateway"},
- {0x0308, "Home Page URL"},
- {0x0309, "WAP Stack Type"},
- {0x030a, "Security Description"},
- {0x030b, "Net Access Type"},
- {0x030c, "Max Net Accessrate"},
- {0x030d, "IPv4 Subnet"},
- {0x030e, "IPv6 Subnet"},
- {0x0310, "Supported Capabilities"},
- {0x0311, "Supported Features"},
- {0x0312, "Supported Functions"},
- {0x0313, "Total Imaging Data Capacity"},
- {0x0314, "Supported Repositories"},
- {0x0315, "MAS Instance ID"},
- {0x0316, "Supported Message Types"},
- {0, NULL}
+ {0x0000, "Service Record Handle"},
+ {0x0001, "Service Class ID List"},
+ {0x0002, "Service Record State"},
+ {0x0003, "Service ID"},
+ {0x0004, "Protocol Descriptor List"},
+ {0x0005, "Browse Group List"},
+ {0x0006, "Language Base Attribute ID List"},
+ {0x0007, "Serviceinfo Time To Live"},
+ {0x0008, "Service Availability"},
+ {0x0009, "Bluetooth Profile Descriptor List"},
+ {0x000a, "Documentation URL"},
+ {0x000b, "Client Executable URL"},
+ {0x000c, "Icon URL"},
+ {0x000d, "Additional Protocol Descriptor Lists"},
+ {0x0100, "Service Name"},
+ {0x0101, "Service Description"},
+ {0x0102, "Provider Name"},
+ {0x0200, "GOEP L2CAP PSM/Group Id/IP Subnet"},
+ {0x0201, "Service Database State"},
+ {0x0300, "Service Version"},
+ {0x0301, "Data Exchange Spec/Network/Supported Data Stores List"},
+ {0x0302, "Remote Audio Volume Control/MCAP Supported Features"},
+ {0x0303, "Supported Formats"},
+ {0x0304, "Fax Class 2 Support"},
+ {0x0305, "Audio Feedback Support"},
+ {0x0306, "Network Address"},
+ {0x0307, "WAP Gateway"},
+ {0x0308, "Home Page URL"},
+ {0x0309, "WAP Stack Type"},
+ {0x030a, "Security Description"},
+ {0x030b, "Net Access Type"},
+ {0x030c, "Max Net Accessrate"},
+ {0x030d, "IPv4 Subnet"},
+ {0x030e, "IPv6 Subnet"},
+ {0x0310, "Supported Capabilities"},
+ {0x0311, "Supported Features"},
+ {0x0312, "Supported Functions"},
+ {0x0313, "Total Imaging Data Capacity"},
+ {0x0314, "Supported Repositories"},
+ {0x0315, "MAS Instance ID"},
+ {0x0316, "Supported Message Types"},
+ {0, NULL}
};
+/* service UUIDs */
+static const value_string vs_service_classes[] = {
+ {0x0001, "SDP"},
+ {0x0002, "UDP"},
+ {0x0003, "RFCOMM"},
+ {0x0004, "TCP"},
+ {0x0005, "TCS-BIN"},
+ {0x0006, "TCS-AT"},
+ {0x0008, "OBEX"},
+ {0x0009, "IP"},
+ {0x000A, "FTP"},
+ {0x000C, "HTTP"},
+ {0x000E, "WSP"},
+ {0x000F, "BNEP"},
+ {0x0010, "UPNP"},
+ {0x0011, "HIDP"},
+ {0x0012, "Hardcopy Control Channel"},
+ {0x0014, "Hardcopy Data Channel"},
+ {0x0016, "Hardcopy Notification"},
+ {0x0017, "AVCTP"},
+ {0x0019, "AVDTP"},
+ {0x001B, "CMPT"},
+ {0x001D, "UDI C-Plane"},
+ {0x001E, "MCAP Control Channel"},
+ {0x001F, "MCAP Data Channel"},
+ {0x0100, "L2CAP"},
+ {0x1000, "Service Discovery Server Service Class ID"},
+ {0x1001, "Browse Group Descriptor Service Class ID"},
+ {0x1002, "Public Browse Group"},
+ {0x1101, "Serial Port"},
+ {0x1102, "LAN Access Using PPP"},
+ {0x1103, "Dialup Networking"},
+ {0x1104, "IrMC Sync"},
+ {0x1105, "OBEX Object Push"},
+ {0x1106, "OBEX File Transfer"},
+ {0x1107, "IrMC Sync Command"},
+ {0x1108, "Headset"},
+ {0x1109, "Cordless Telephony"},
+ {0x110A, "Audio Source"},
+ {0x110B, "Audio Sink"},
+ {0x110C, "A/V Remote Control Target"},
+ {0x110D, "Advanced Audio Distribution"},
+ {0x110E, "A/V Remote Control"},
+ {0x110F, "Video Conferencing"},
+ {0x1110, "Intercom"},
+ {0x1111, "Fax"},
+ {0x1112, "Headset Audio Gateway"},
+ {0x1113, "WAP"},
+ {0x1114, "WAP client"},
+ {0x1115, "PANU"},
+ {0x1116, "NAP"},
+ {0x1117, "GN"},
+ {0x1118, "Direct Printing"},
+ {0x1119, "Reference Printing"},
+ {0x111A, "Imaging"},
+ {0x111B, "Imaging Responder"},
+ {0x111C, "Imaging Automatic Archive"},
+ {0x111D, "Imaging Referenced Objects"},
+ {0x111E, "Handsfree"},
+ {0x111F, "Handsfree Audio Gateway"},
+ {0x1120, "Direct Printing Reference Objects Service"},
+ {0x1121, "Reflected UI"},
+ {0x1122, "Basic Printing"},
+ {0x1123, "Printing Status"},
+ {0x1124, "Human Interface Device Service"},
+ {0x1125, "Hardcopy Cable Replacement"},
+ {0x1126, "HCR Print"},
+ {0x1127, "HCR Scan"},
+ {0x1128, "Common ISDN Access"},
+ {0x1129, "Video Conferencing GW"},
+ {0x112A, "UDI MT"},
+ {0x112B, "UDI TA"},
+ {0x112C, "Audio/Video"},
+ {0x112D, "SIM Access"},
+ {0x112E, "Phonebook Access client"},
+ {0x112F, "Phonebook Access server"},
+ {0x1130, "Phonebook Access Profile"},
+ {0x1131, "Headset - HS"},
+ {0x1132, "Message Access Server"},
+ {0x1133, "Message Notification Server"},
+ {0x1134, "Message Access Profile"},
+ {0x1200, "PnP Information"},
+ {0x1201, "Generic Networking"},
+ {0x1202, "Generic File Transfer"},
+ {0x1203, "Generic Audio"},
+ {0x1204, "Generic Telephony"},
+ {0x1205, "UPNP_Service"},
+ {0x1206, "UPNP_IP_Service"},
+ {0x1300, "ESDP_UPNP_IP_PAN"},
+ {0x1301, "ESDP_UPNP_IP_LAP"},
+ {0x1302, "ESDP_UPNP_L2CAP"},
+ {0x1303, "Video Source"},
+ {0x1304, "Video Sink"},
+ {0x1305, "Video Distribution"},
+ {0x1400, "Health Device Profile"},
+ {0x1401, "Health Device Source"},
+ {0x1402, "Health Device Sink"},
+ {0, NULL}
+};
+value_string_ext vs_service_classes_ext = VALUE_STRING_EXT_INIT(vs_service_classes);
+
static int
get_type_length(tvbuff_t *tvb, int offset, int *length)
{
- int size = 0;
- guint8 byte0 = tvb_get_guint8(tvb, offset);
- offset++;
-
- switch (byte0 & 0x07) {
- case 0:
- size = (byte0 >> 3) == 0 ? 0 : 1;
- break;
- case 1:
- size = 2;
- break;
- case 2:
- size = 4;
- break;
- case 3:
- size = 8;
- break;
- case 4:
- size = 16;
- break;
- case 5:
- size = tvb_get_guint8(tvb, offset);
- offset++;
- break;
- case 6:
- size = tvb_get_ntohs(tvb, offset);
- offset += 2;
- break;
- case 7:
- size = tvb_get_ntohl(tvb, offset);
- offset += 4;
- break;
- }
-
- *length = size;
- return offset;
+ int size = 0;
+ guint8 byte0 = tvb_get_guint8(tvb, offset);
+
+ offset += 1;
+
+ switch (byte0 & 0x07) {
+ case 0:
+ size = (byte0 >> 3) == 0 ? 0 : 1;
+ break;
+ case 1:
+ size = 2;
+ break;
+ case 2:
+ size = 4;
+ break;
+ case 3:
+ size = 8;
+ break;
+ case 4:
+ size = 16;
+ break;
+ case 5:
+ size = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ break;
+ case 6:
+ size = tvb_get_ntohs(tvb, offset);
+ offset += 2;
+ break;
+ case 7:
+ size = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+ break;
+ }
+
+ *length = size;
+ return offset;
}
static guint32
get_uint_by_size(tvbuff_t *tvb, int off, int size)
{
- switch(size) {
- case 0:
- return tvb_get_guint8(tvb, off);
- case 1:
- return tvb_get_ntohs(tvb, off);
- case 2:
- return tvb_get_ntohl(tvb, off);
- default:
- return 0xffffffff;
- }
+ switch (size) {
+ case 0:
+ return tvb_get_guint8(tvb, off);
+ case 1:
+ return tvb_get_ntohs(tvb, off);
+ case 2:
+ return tvb_get_ntohl(tvb, off);
+ default:
+ return 0xffffffff;
+ }
}
static gint32
get_int_by_size(tvbuff_t *tvb, int off, int size)
{
- switch(size) {
- case 0:
- return tvb_get_guint8(tvb, off);
- case 1:
- return tvb_get_ntohs(tvb, off);
- case 2:
- return tvb_get_ntohl(tvb, off);
- default:
- return -1;
- }
+ switch (size) {
+ case 0:
+ return tvb_get_guint8(tvb, off);
+ case 1:
+ return tvb_get_ntohs(tvb, off);
+ case 2:
+ return tvb_get_ntohl(tvb, off);
+ default:
+ return -1;
+ }
}
static int
dissect_attribute_id_list(proto_tree *t, tvbuff_t *tvb, int offset, packet_info *pinfo)
{
- proto_item *ti;
- proto_tree *st;
- int start_offset, bytes_to_go;
- guint16 id;
- const char *att_name;
-
- start_offset=offset;
- ti = proto_tree_add_text(t, tvb, offset, 2, "Attribute ID List");
- st = proto_item_add_subtree(ti, ett_btsdp_attribute_idlist);
-
- offset = get_type_length(tvb, offset, &bytes_to_go);
- proto_item_set_len(ti, offset - start_offset + bytes_to_go);
-
- while(bytes_to_go>0){
- guint8 byte0 = tvb_get_guint8(tvb, offset);
-
- if (byte0 == 0x09) { /* 16 bit attribute id */
-
- id = tvb_get_ntohs(tvb, offset+1);
- att_name = val_to_str(id, vs_general_attribute_id, "Unknown");
- proto_tree_add_text(st, tvb, offset, 3, "%s (0x%04x)", att_name, id);
- offset+=3;
- bytes_to_go-=3;
-
- col_append_fstr(pinfo->cinfo, COL_INFO, " (%s) ", att_name);
-
- } else if (byte0 == 0x0a) { /* 32 bit attribute range */
- col_append_fstr(pinfo->cinfo, COL_INFO, " (0x%04x - 0x%04x) ",
- tvb_get_ntohs(tvb, offset + 1), tvb_get_ntohs(tvb, offset + 3));
-
- proto_tree_add_text(st, tvb, offset, 5, "0x%04x - 0x%04x",
- tvb_get_ntohs(tvb, offset + 1),
- tvb_get_ntohs(tvb, offset + 3));
- offset+=5;
- bytes_to_go-=5;
- } else {
- break;
- }
- }
- return offset - start_offset;
+ proto_item *ti;
+ proto_tree *st;
+ int start_offset, bytes_to_go;
+ guint16 id;
+ const char *att_name;
+
+ start_offset = offset;
+ ti = proto_tree_add_text(t, tvb, offset, 2, "Attribute ID List");
+ st = proto_item_add_subtree(ti, ett_btsdp_attribute_idlist);
+
+ offset = get_type_length(tvb, offset, &bytes_to_go);
+ proto_item_set_len(ti, offset - start_offset + bytes_to_go);
+
+ while (bytes_to_go > 0) {
+ guint8 byte0 = tvb_get_guint8(tvb, offset);
+
+ if (byte0 == 0x09) { /* 16 bit attribute id */
+
+ id = tvb_get_ntohs(tvb, offset+1);
+ att_name = val_to_str_const(id, vs_general_attribute_id, "Unknown");
+ proto_tree_add_text(st, tvb, offset, 3, "%s (0x%04x)", att_name, id);
+ offset += 3;
+ bytes_to_go -= 3;
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (%s) ", att_name);
+
+ } else if (byte0 == 0x0a) { /* 32 bit attribute range */
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (0x%04x - 0x%04x) ",
+ tvb_get_ntohs(tvb, offset + 1), tvb_get_ntohs(tvb, offset + 3));
+
+ proto_tree_add_text(st, tvb, offset, 5, "0x%04x - 0x%04x",
+ tvb_get_ntohs(tvb, offset + 1),
+ tvb_get_ntohs(tvb, offset + 3));
+ offset += 5;
+ bytes_to_go -= 5;
+ } else {
+ break;
+ }
+ }
+ return offset - start_offset;
}
static int
dissect_sdp_error_response(proto_tree *t, tvbuff_t *tvb, int offset) {
- proto_tree_add_item(t, hf_error_code, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset+=2;
+ proto_tree_add_item(t, hf_error_code, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
- return offset;
+ return offset;
}
static int
get_sdp_data_element(tvbuff_t *tvb, int offset, guint16 id, guint8 *type, void **val, guint32 *service, guint32 *service_val)
{
- int size, start_offset, type_size;
- guint8 byte0;
- /* guint8 size_index; */
-
- byte0=tvb_get_guint8(tvb, offset);
- *type = (byte0>>3) & 0x1f;
- /* size_index = byte0 & 0x07; set but not used, so commented out */
-
- /* Initialize the rest of the outputs */
- *val = NULL;
- *service = 0;
- *service_val = 0;
-
- start_offset=offset;
- offset = get_type_length(tvb, offset, &size);
- type_size = offset - start_offset + size;
-
- switch (*type) {
- case 0: { /* null */
- *val = NULL;
- break;
- }
- case 1: /* unsigned integer */
- case 2: /* signed integer */
- case 3: { /* uuid */
- *val = ep_alloc(size);
-
- if (size == 1) {
- *((guint8 *) *val) = tvb_get_guint8(tvb, offset);
- }
- else if (size == 2) {
- *((guint16 *) *val) = tvb_get_ntohs(tvb, offset);
- }
- else if (size == 4) {
- *((guint32 *) *val) = tvb_get_ntohl(tvb, offset);
- }
- else if (size == 8) {
- *((guint64 *) *val) = tvb_get_ntoh64(tvb, offset);
- }
- else if (size == 16) {
- /* store the short UUID part of the 128-bit base UUID */
- *((guint32 *) *val) = tvb_get_ntohl(tvb, offset);
- }
- break;
- }
- case 8: /* fall through */
- case 4: {
- *val = tvb_bytes_to_str(tvb, offset, size);
- break;
- }
- case 5: {
- *val = ep_alloc(sizeof(type_size));
- *((guint8 *) *val) = tvb_get_guint8(tvb, offset);
- break;
- }
- case 6: /* Data Element sequence */
- case 7: /* Data Element alternative */ {
- gboolean flag = FALSE;
- int bytes_to_go = size;
- int len;
- guint32 value = 0;
-
- while(bytes_to_go > 0) {
- size = get_sdp_data_element(tvb, offset, id, type, val, service, service_val);
- if (size < 1 || *val == NULL) {
- break;
- }
-
- get_type_length(tvb, offset, &len);
- offset += size;
- bytes_to_go -= size;
-
- if( len == 1 ) {
- value = *((guint8 *) *val);
- }
- else if( len == 2 ) {
- value = *((guint16 *) *val);
- }
- else if ( len == 4 ) {
- value = *((guint32 *) *val);
- }
- else if ( len == 16 ) {
- value = *((guint32 *) *val);
- }
-
- /* pick special values of interest */
- /* protocol or additional protocol list with UUID values for L2CAP or RFCOMM */
- if ( ((id == 4) || (id == 0xd)) && (*type == 3) && ((value == 0x100) || (value == 0x0003)) ) {
- *service = value;
- flag = TRUE;
- }
- /* profile descriptor list with UUID */
- else if ( (id == 9) && (*type == 3) ) {
- *service = value;
- flag = TRUE;
- }
- /* service class id list with UUID */
- else if ( (id == 1) && (*type == 3) ) {
- *service = value;
- flag = TRUE;
- }
- /* unsigned int found after value of interest */
- else if ( (flag == TRUE) && *type == 1) {
- *service_val = value;
- flag = FALSE;
- }
- else {
- flag = FALSE;
- }
- }
- break;
- }
- }
-
- return type_size;
+ int size, start_offset, type_size;
+ guint8 byte0;
+ /* guint8 size_index; */
+
+ byte0 = tvb_get_guint8(tvb, offset);
+ *type = (byte0>>3) & 0x1f;
+ /* size_index = byte0 & 0x07; set but not used, so commented out */
+
+ /* Initialize the rest of the outputs */
+ *val = NULL;
+ *service = 0;
+ *service_val = 0;
+
+ start_offset = offset;
+ offset = get_type_length(tvb, offset, &size);
+ type_size = offset - start_offset + size;
+
+ switch (*type) {
+ case 0: { /* null */
+ *val = NULL;
+ break;
+ }
+ case 1: /* unsigned integer */
+ case 2: /* signed integer */
+ case 3: { /* uuid */
+ *val = ep_alloc(size);
+
+ if (size == 1) {
+ *((guint8 *) *val) = tvb_get_guint8(tvb, offset);
+ }
+ else if (size == 2) {
+ *((guint16 *) *val) = tvb_get_ntohs(tvb, offset);
+ }
+ else if (size == 4) {
+ *((guint32 *) *val) = tvb_get_ntohl(tvb, offset);
+ }
+ else if (size == 8) {
+ *((guint64 *) *val) = tvb_get_ntoh64(tvb, offset);
+ }
+ else if (size == 16) {
+ /* store the short UUID part of the 128-bit base UUID */
+ *((guint32 *) *val) = tvb_get_ntohl(tvb, offset);
+ }
+ break;
+ }
+ case 8: /* fall through */
+ case 4: {
+ *val = tvb_bytes_to_str(tvb, offset, size);
+ break;
+ }
+ case 5: {
+ *val = ep_alloc(sizeof(type_size));
+ *((guint8 *) *val) = tvb_get_guint8(tvb, offset);
+ break;
+ }
+ case 6: /* Data Element sequence */
+ case 7: /* Data Element alternative */ {
+ gboolean flag = FALSE;
+ int bytes_to_go = size;
+ int len;
+ guint32 value = 0;
+
+ while (bytes_to_go > 0) {
+ size = get_sdp_data_element(tvb, offset, id, type, val, service, service_val);
+ if (size < 1 || *val == NULL) {
+ break;
+ }
+
+ get_type_length(tvb, offset, &len);
+ offset += size;
+ bytes_to_go -= size;
+
+ if (len == 1) {
+ value = *((guint8 *) *val);
+ }
+ else if (len == 2) {
+ value = *((guint16 *) *val);
+ }
+ else if (len == 4) {
+ value = *((guint32 *) *val);
+ }
+ else if (len == 16) {
+ value = *((guint32 *) *val);
+ }
+
+ /* pick special values of interest */
+ /* protocol or additional protocol list with UUID values for L2CAP or RFCOMM */
+ if (((id == 4) || (id == 0xd)) && (*type == 3) && ((value == 0x100) || (value == 0x0003))) {
+ *service = value;
+ flag = TRUE;
+ }
+ /* profile descriptor list with UUID */
+ else if ((id == 9) && (*type == 3)) {
+ *service = value;
+ flag = TRUE;
+ }
+ /* service class id list with UUID */
+ else if ((id == 1) && (*type == 3)) {
+ *service = value;
+ flag = TRUE;
+ }
+ /* unsigned int found after value of interest */
+ else if ((flag == TRUE) && *type == 1) {
+ *service_val = value;
+ flag = FALSE;
+ }
+ else {
+ flag = FALSE;
+ }
+ }
+ break;
+ }
+ }
+
+ return type_size;
}
@@ -384,139 +486,139 @@ static int
dissect_sdp_type(proto_tree *t, tvbuff_t *tvb, int offset, char **attr_val)
{
#define MAX_SDP_LEN 1024
- int strpos=0, size, start_offset, type_size;
- char *str;
- guint8 byte0;
- guint8 type;
- guint8 size_index;
-
- str=ep_alloc(MAX_SDP_LEN+1);
- *attr_val=str;
- str[0]=0;
-
- byte0=tvb_get_guint8(tvb, offset);
- type=(byte0>>3)&0x1f;
- size_index=byte0&0x07;
-
- start_offset=offset;
- offset = get_type_length(tvb, offset, &size);
- type_size = offset - start_offset + size;
-
-
- switch (type) {
- case 0:
- proto_tree_add_text(t, tvb, start_offset, type_size, "Nil ");
- if(strpos<MAX_SDP_LEN){
- /* strpos+= */ g_snprintf(str+strpos, MAX_SDP_LEN-strpos, "Nil ");
- }
- break;
- case 1: {
- guint32 val = get_uint_by_size(tvb, offset, size_index);
- proto_tree_add_text(t, tvb, start_offset, type_size,
- "unsigned int %d ", val);
- if(strpos<MAX_SDP_LEN){
- /* strpos+= */ g_snprintf(str+strpos, MAX_SDP_LEN-strpos, "%u ", val);
- }
- break;
- }
- case 2: {
- guint32 val = get_int_by_size(tvb, offset, size_index);
- proto_tree_add_text(t, tvb, start_offset, type_size,
- "signed int %d ", val);
- if(strpos<MAX_SDP_LEN){
- /* strpos+= */ g_snprintf(str+strpos, MAX_SDP_LEN-strpos, "%d ", val);
- }
- break;
- }
- case 3: {
- guint32 id;
- const char *uuid_name;
- char *ptr = tvb_bytes_to_str(tvb, offset, size);
-
- if(size == 2){
- id = tvb_get_ntohs(tvb, offset);
- } else {
- id = tvb_get_ntohl(tvb, offset);
- }
- uuid_name = val_to_str(id, vs_service_classes, "Unknown service");
-
- proto_tree_add_text(t, tvb, start_offset, type_size, "%s (0x%s) ", uuid_name, ptr);
-
- if(strpos<MAX_SDP_LEN){
- /* strpos+= */ g_snprintf(str+strpos, MAX_SDP_LEN-strpos, ": %s", uuid_name);
- }
- break;
- }
- case 8: /* fall through */
- case 4: {
- char *ptr = (gchar*)tvb_get_ephemeral_string(tvb, offset, size);
-
- proto_tree_add_text(t, tvb, start_offset, type_size, "%s \"%s\"",
- type == 8 ? "URL" : "String", ptr);
- if(strpos<MAX_SDP_LEN){
- /* strpos+= */g_snprintf(str+strpos, MAX_SDP_LEN-strpos, "%s ", ptr);
- }
- break;
- }
- case 5: {
- guint8 var = tvb_get_guint8(tvb, offset);
-
- proto_tree_add_text(t, tvb, start_offset, type_size, "%s",
- var ? "true" : "false");
- if(strpos<MAX_SDP_LEN){
- /* strpos+= */g_snprintf(str+strpos, MAX_SDP_LEN-strpos, "%s ", var?"true":"false");
- }
- break;
- }
- case 6: /* Data Element sequence */
- case 7: /* Data Element alternative */ {
- proto_tree *st;
- proto_item *ti;
- int bytes_to_go = size;
- int first = 1;
- char *substr;
-
- ti = proto_tree_add_text(t, tvb, start_offset, type_size, "%s",
- type == 6 ? "Data Element sequence" :
- "Data Element alternative");
- st = proto_item_add_subtree(ti, ett_btsdp_des);
-
- if(strpos<MAX_SDP_LEN){
- strpos+=g_snprintf(str+strpos, MAX_SDP_LEN-strpos, "{ ");
- }
-
- while(bytes_to_go > 0){
- if(!first){
- if(strpos<MAX_SDP_LEN){
- strpos+=g_snprintf(str+strpos, MAX_SDP_LEN-strpos, ", ");
- }
- } else {
- first = 0;
- }
-
- size = dissect_sdp_type(st, tvb, offset, &substr);
- if (size < 1) {
- break;
- }
- if(strpos<MAX_SDP_LEN){
- strpos+=g_snprintf(str+strpos, MAX_SDP_LEN-strpos, "%s ", substr);
- }
- offset += size;
- bytes_to_go -= size;
- }
-
- if(strpos<MAX_SDP_LEN){
- /* strpos+= */ g_snprintf(str+strpos, MAX_SDP_LEN-strpos, "} ");
- }
- break;
- }
- }
-
- /* make sure the string is 0 terminated */
- str[MAX_SDP_LEN]=0;
-
-
- return type_size;
+ int strpos = 0, size, start_offset, type_size;
+ char *str;
+ guint8 byte0;
+ guint8 type;
+ guint8 size_index;
+
+ str = ep_alloc(MAX_SDP_LEN+1);
+ *attr_val = str;
+ str[0] = 0;
+
+ byte0 = tvb_get_guint8(tvb, offset);
+ type = (byte0>>3)&0x1f;
+ size_index = byte0&0x07;
+
+ start_offset = offset;
+ offset = get_type_length(tvb, offset, &size);
+ type_size = offset - start_offset + size;
+
+
+ switch (type) {
+ case 0:
+ proto_tree_add_text(t, tvb, start_offset, type_size, "Nil ");
+ if (strpos<MAX_SDP_LEN) {
+ /* strpos += */ g_snprintf(str+strpos, MAX_SDP_LEN-strpos, "Nil ");
+ }
+ break;
+ case 1: {
+ guint32 val = get_uint_by_size(tvb, offset, size_index);
+ proto_tree_add_text(t, tvb, start_offset, type_size,
+ "unsigned int %d ", val);
+ if (strpos<MAX_SDP_LEN) {
+ /* strpos += */ g_snprintf(str+strpos, MAX_SDP_LEN-strpos, "%u ", val);
+ }
+ break;
+ }
+ case 2: {
+ guint32 val = get_int_by_size(tvb, offset, size_index);
+ proto_tree_add_text(t, tvb, start_offset, type_size,
+ "signed int %d ", val);
+ if (strpos<MAX_SDP_LEN) {
+ /* strpos += */ g_snprintf(str+strpos, MAX_SDP_LEN-strpos, "%d ", val);
+ }
+ break;
+ }
+ case 3: {
+ guint32 id;
+ const char *uuid_name;
+ char *ptr = tvb_bytes_to_str(tvb, offset, size);
+
+ if (size == 2) {
+ id = tvb_get_ntohs(tvb, offset);
+ } else {
+ id = tvb_get_ntohl(tvb, offset);
+ }
+ uuid_name = val_to_str_ext_const(id, &vs_service_classes_ext, "Unknown service");
+
+ proto_tree_add_text(t, tvb, start_offset, type_size, "%s (0x%s) ", uuid_name, ptr);
+
+ if (strpos < MAX_SDP_LEN) {
+ /* strpos += */ g_snprintf(str+strpos, MAX_SDP_LEN-strpos, ": %s", uuid_name);
+ }
+ break;
+ }
+ case 8: /* fall through */
+ case 4: {
+ char *ptr = (gchar*)tvb_get_ephemeral_string(tvb, offset, size);
+
+ proto_tree_add_text(t, tvb, start_offset, type_size, "%s \"%s\"",
+ type == 8 ? "URL" : "String", ptr);
+ if (strpos < MAX_SDP_LEN) {
+ /* strpos += */g_snprintf(str+strpos, MAX_SDP_LEN-strpos, "%s ", ptr);
+ }
+ break;
+ }
+ case 5: {
+ guint8 var = tvb_get_guint8(tvb, offset);
+
+ proto_tree_add_text(t, tvb, start_offset, type_size, "%s",
+ var ? "true" : "false");
+ if (strpos < MAX_SDP_LEN) {
+ /* strpos += */g_snprintf(str+strpos, MAX_SDP_LEN-strpos, "%s ", var?"true":"false");
+ }
+ break;
+ }
+ case 6: /* Data Element sequence */
+ case 7: /* Data Element alternative */ {
+ proto_tree *st;
+ proto_item *ti;
+ int bytes_to_go = size;
+ int first = 1;
+ char *substr;
+
+ ti = proto_tree_add_text(t, tvb, start_offset, type_size, "%s",
+ type == 6 ? "Data Element sequence" :
+ "Data Element alternative");
+ st = proto_item_add_subtree(ti, ett_btsdp_des);
+
+ if (strpos < MAX_SDP_LEN) {
+ strpos += g_snprintf(str+strpos, MAX_SDP_LEN-strpos, "{ ");
+ }
+
+ while (bytes_to_go > 0) {
+ if (!first) {
+ if (strpos<MAX_SDP_LEN) {
+ strpos += g_snprintf(str+strpos, MAX_SDP_LEN-strpos, ", ");
+ }
+ } else {
+ first = 0;
+ }
+
+ size = dissect_sdp_type(st, tvb, offset, &substr);
+ if (size < 1) {
+ break;
+ }
+ if (strpos < MAX_SDP_LEN) {
+ strpos += g_snprintf(str+strpos, MAX_SDP_LEN-strpos, "%s ", substr);
+ }
+ offset += size;
+ bytes_to_go -= size;
+ }
+
+ if (strpos < MAX_SDP_LEN) {
+ /* strpos += */ g_snprintf(str+strpos, MAX_SDP_LEN-strpos, "} ");
+ }
+ break;
+ }
+ }
+
+ /* make sure the string is 0 terminated */
+ str[MAX_SDP_LEN]='\0';
+
+
+ return type_size;
}
@@ -525,116 +627,116 @@ dissect_sdp_type(proto_tree *t, tvbuff_t *tvb, int offset, char **attr_val)
static int
dissect_sdp_service_attribute(proto_tree *tree, tvbuff_t *tvb, int offset, packet_info *pinfo, guint32 token)
{
- proto_tree *st, *ti_sa, *ti_av;
- int size;
- const char *att_name;
- guint16 id;
- char *attr_val;
-
- id = tvb_get_ntohs(tvb, offset+1);
- att_name = val_to_str(id, vs_general_attribute_id, "Unknown");
-
- ti_sa = proto_tree_add_text(tree, tvb, offset, -1,
- "Service Attribute: id = %s (0x%x)", att_name, id);
- st = proto_item_add_subtree(ti_sa, ett_btsdp_attribute);
-
- proto_tree_add_text(st, tvb, offset, 3, "Attribute ID: %s (0x%x)", att_name, id);
- ti_av = proto_tree_add_text(st, tvb, offset + 3, -1, "Attribute Value");
- st = proto_item_add_subtree(ti_av, ett_btsdp_attribute);
-
- size = dissect_sdp_type(st, tvb, offset + 3, &attr_val);
- proto_item_append_text(ti_sa, ", value = %s", attr_val);
-
- if( pinfo->fd->flags.visited ==0) {
- void *val;
- guint8 type;
- guint32 service, service_val;
- btsdp_data_t *service_item;
-
- service_item=se_tree_lookup32(service_table, token);
-
- if(service_item != NULL) {
- switch(id) {
-
- case ATTR_ID_PROTOCOL_DESCRIPTOR_LIST:
- case ATTR_ID_BT_PROFILE_DESCRIPTOR_LIST:
- case ATTR_ID_ADDITIONAL_PROTOCOL_DESCRIPTOR_LISTS:
- get_sdp_data_element(tvb, offset+ 3, id, &type, &val, &service, &service_val);
-
- if( (service == BTSDP_L2CAP_PROTOCOL_UUID)
- || (service == BTSDP_RFCOMM_PROTOCOL_UUID) ) {
- service_item->channel = service_val;
- service_item->protocol = (guint16) service;
- }
- else {
- service_item->service = service;
- }
-
- service_item->flags = 0;
- if(id == ATTR_ID_ADDITIONAL_PROTOCOL_DESCRIPTOR_LISTS) {
- service_item->flags = BTSDP_SECONDARY_CHANNEL_FLAG_MASK;
- }
- break;
-
- case ATTR_ID_SERVICE_CLASS_ID_LIST:
- get_sdp_data_element(tvb, offset+ 3, id, &type, &val, &service, &service_val);
- service_item->service = service;
- break;
-
- case ATTR_ID_GOEP_L2CAP_PSM_GROUP_ID_IP_SUBNET:
- /* GOEP L2CAP PSM? */
- {
- void *psm;
- guint8 *psm_guint8;
-
- get_sdp_data_element(tvb, offset+ 3, id, &type, &psm, &service, &service_val);
- psm_guint8 = psm;
-
- if( (type == 1) && (*psm_guint8 & 0x1) ) {
- service_item->channel = *psm_guint8;
- service_item->protocol = BTSDP_L2CAP_PROTOCOL_UUID;
- service_item->flags = 0;
- }
- }
- break;
- }
-
- if( service_item->service != 0 && service_item->channel != 0 ) {
- service_item->flags |= token >>15; /* set flag when local service */
- tap_queue_packet(btsdp_tap, NULL, (void *) service_item);
- }
- }
- }
-
- proto_item_set_len(ti_sa, size + 3);
- proto_item_set_len(ti_av, size);
-
- return offset+size+3;
+ proto_tree *st, *ti_sa, *ti_av;
+ int size;
+ const char *att_name;
+ guint16 id;
+ char *attr_val;
+
+ id = tvb_get_ntohs(tvb, offset+1);
+ att_name = val_to_str_const(id, vs_general_attribute_id, "Unknown");
+
+ ti_sa = proto_tree_add_text(tree, tvb, offset, -1,
+ "Service Attribute: id = %s (0x%x)", att_name, id);
+ st = proto_item_add_subtree(ti_sa, ett_btsdp_attribute);
+
+ proto_tree_add_text(st, tvb, offset, 3, "Attribute ID: %s (0x%x)", att_name, id);
+ ti_av = proto_tree_add_text(st, tvb, offset + 3, -1, "Attribute Value");
+ st = proto_item_add_subtree(ti_av, ett_btsdp_attribute);
+
+ size = dissect_sdp_type(st, tvb, offset + 3, &attr_val);
+ proto_item_append_text(ti_sa, ", value = %s", attr_val);
+
+ if (!pinfo->fd->flags.visited) {
+ void *val;
+ guint8 type;
+ guint32 service, service_val;
+ btsdp_data_t *service_item;
+
+ service_item = se_tree_lookup32(service_table, token);
+
+ if (service_item != NULL) {
+ switch (id) {
+
+ case ATTR_ID_PROTOCOL_DESCRIPTOR_LIST:
+ case ATTR_ID_BT_PROFILE_DESCRIPTOR_LIST:
+ case ATTR_ID_ADDITIONAL_PROTOCOL_DESCRIPTOR_LISTS:
+ get_sdp_data_element(tvb, offset+ 3, id, &type, &val, &service, &service_val);
+
+ if ((service == BTSDP_L2CAP_PROTOCOL_UUID)
+ || (service == BTSDP_RFCOMM_PROTOCOL_UUID)) {
+ service_item->channel = service_val;
+ service_item->protocol = (guint16) service;
+ }
+ else {
+ service_item->service = service;
+ }
+
+ service_item->flags = 0;
+ if (id == ATTR_ID_ADDITIONAL_PROTOCOL_DESCRIPTOR_LISTS) {
+ service_item->flags = BTSDP_SECONDARY_CHANNEL_FLAG_MASK;
+ }
+ break;
+
+ case ATTR_ID_SERVICE_CLASS_ID_LIST:
+ get_sdp_data_element(tvb, offset+ 3, id, &type, &val, &service, &service_val);
+ service_item->service = service;
+ break;
+
+ case ATTR_ID_GOEP_L2CAP_PSM_GROUP_ID_IP_SUBNET:
+ /* GOEP L2CAP PSM? */
+ {
+ void *psm;
+ guint8 *psm_guint8;
+
+ get_sdp_data_element(tvb, offset+ 3, id, &type, &psm, &service, &service_val);
+ psm_guint8 = psm;
+
+ if ((type == 1) && (*psm_guint8 & 0x1)) {
+ service_item->channel = *psm_guint8;
+ service_item->protocol = BTSDP_L2CAP_PROTOCOL_UUID;
+ service_item->flags = 0;
+ }
+ }
+ break;
+ }
+
+ if (service_item->service != 0 && service_item->channel != 0) {
+ service_item->flags |= token >>15; /* set flag when local service */
+ tap_queue_packet(btsdp_tap, NULL, (void *) service_item);
+ }
+ }
+ }
+
+ proto_item_set_len(ti_sa, size + 3);
+ proto_item_set_len(ti_av, size);
+
+ return offset+size+3;
}
static int
dissect_sdp_service_attribute_list(proto_tree *tree, tvbuff_t *tvb, int offset, packet_info *pinfo, guint32 token)
{
- proto_item *ti;
- proto_tree *st;
- int start_offset = offset, len;
+ proto_item *ti;
+ proto_tree *st;
+ int start_offset = offset, len;
- offset = get_type_length(tvb, offset, &len);
+ offset = get_type_length(tvb, offset, &len);
- ti = proto_tree_add_text(tree, tvb, start_offset, -1, "Attribute List");
- st = proto_item_add_subtree(ti, ett_btsdp_attribute);
+ ti = proto_tree_add_text(tree, tvb, start_offset, -1, "Attribute List");
+ st = proto_item_add_subtree(ti, ett_btsdp_attribute);
- if(!len){
- return offset;
- }
+ if (!len) {
+ return offset;
+ }
- while (offset - start_offset < len) {
- offset = dissect_sdp_service_attribute(st, tvb, offset, pinfo, token);
- }
+ while ((offset - start_offset) < len) {
+ offset = dissect_sdp_service_attribute(st, tvb, offset, pinfo, token);
+ }
- proto_item_set_len(ti, offset - start_offset);
- return offset;
+ proto_item_set_len(ti, offset - start_offset);
+ return offset;
}
@@ -642,21 +744,21 @@ dissect_sdp_service_attribute_list(proto_tree *tree, tvbuff_t *tvb, int offset,
static int
dissect_sdp_service_attribute_list_array(proto_tree *tree, tvbuff_t *tvb, int offset, packet_info *pinfo, guint32 token)
{
- proto_item *ti;
- proto_tree *st;
- int start_offset, len;
+ proto_item *ti;
+ proto_tree *st;
+ int start_offset, len;
- start_offset=offset;
- offset = get_type_length(tvb, offset, &len);
- ti = proto_tree_add_text(tree, tvb, start_offset, offset-start_offset+len, "Attribute Lists");
- st = proto_item_add_subtree(ti, ett_btsdp_attribute);
+ start_offset = offset;
+ offset = get_type_length(tvb, offset, &len);
+ ti = proto_tree_add_text(tree, tvb, start_offset, offset-start_offset+len, "Attribute Lists");
+ st = proto_item_add_subtree(ti, ett_btsdp_attribute);
- start_offset=offset;
- while(offset-start_offset < len) {
- offset = dissect_sdp_service_attribute_list(st, tvb, offset, pinfo, token);
- }
+ start_offset = offset;
+ while (offset-start_offset < len) {
+ offset = dissect_sdp_service_attribute_list(st, tvb, offset, pinfo, token);
+ }
- return offset;
+ return offset;
}
@@ -664,350 +766,348 @@ dissect_sdp_service_attribute_list_array(proto_tree *tree, tvbuff_t *tvb, int of
static int
dissect_sdp_service_search_attribute_response(proto_tree *tree, tvbuff_t *tvb, int offset, packet_info *pinfo, guint32 token)
{
- proto_tree_add_item(tree, hf_ssares_al_bytecount, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
+ proto_tree_add_item(tree, hf_ssares_al_bytecount, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
- offset += dissect_sdp_service_attribute_list_array(tree, tvb, offset, pinfo, token);
+ offset += dissect_sdp_service_attribute_list_array(tree, tvb, offset, pinfo, token);
- return offset;
+ return offset;
}
static int
dissect_sdp_service_search_attribute_request(proto_tree *t, tvbuff_t *tvb, int offset, packet_info *pinfo, guint32 token)
{
- proto_tree *st;
- proto_item *ti;
- int start_offset;
- int size, bytes_to_go;
- char *str;
- btsdp_data_t *service_item = NULL;
-
- start_offset = offset;
- ti = proto_tree_add_text(t, tvb, offset, 2, "Service Search Pattern");
- st = proto_item_add_subtree(ti, ett_btsdp_attribute);
-
- offset = get_type_length(tvb, offset, &bytes_to_go);
- proto_item_set_len(ti, offset - start_offset + bytes_to_go);
-
- while(bytes_to_go>0) {
- if (pinfo->fd->flags.visited == 0) {
- service_item=se_tree_lookup32(service_table, token);
-
- if(service_item == NULL) {
- service_item=se_alloc(sizeof(btsdp_data_t));
- se_tree_insert32(service_table, token, service_item);
- }
- service_item->channel = 0;
- service_item->service = 0;
- }
-
- size = dissect_sdp_type(st, tvb, offset, &str);
- proto_item_append_text(st, " %s", str);
- col_append_fstr(pinfo->cinfo, COL_INFO, "%s", str);
-
- if (size < 1) {
- break;
- }
- offset+=size;
- bytes_to_go-=size;
- }
-
- /* dissect maximum attribute byte count */
- proto_tree_add_text(t, tvb, offset, 2, "Maximum Attribute Byte Count: %d", tvb_get_ntohs(tvb, offset));
- offset+=2;
-
- offset += dissect_attribute_id_list(t, tvb, offset, pinfo);
-
- proto_tree_add_text(t, tvb, offset, -1, "Continuation State");
-
- return offset;
+ proto_tree *st;
+ proto_item *ti;
+ int start_offset;
+ int size, bytes_to_go;
+ char *str;
+
+ start_offset = offset;
+ ti = proto_tree_add_text(t, tvb, offset, 2, "Service Search Pattern");
+ st = proto_item_add_subtree(ti, ett_btsdp_attribute);
+
+ offset = get_type_length(tvb, offset, &bytes_to_go);
+ proto_item_set_len(ti, offset - start_offset + bytes_to_go);
+
+ while (bytes_to_go > 0) {
+ btsdp_data_t *service_item;
+ if (!pinfo->fd->flags.visited) {
+ service_item = se_tree_lookup32(service_table, token);
+
+ if (service_item == NULL) {
+ service_item = se_alloc0(sizeof(btsdp_data_t));
+ se_tree_insert32(service_table, token, service_item);
+ }
+ service_item->channel = 0;
+ service_item->service = 0;
+ }
+
+ size = dissect_sdp_type(st, tvb, offset, &str);
+ proto_item_append_text(st, " %s", str);
+ col_append_fstr(pinfo->cinfo, COL_INFO, "%s", str);
+
+ if (size < 1) {
+ break;
+ }
+ offset += size;
+ bytes_to_go -= size;
+ }
+
+ /* dissect maximum attribute byte count */
+ proto_tree_add_text(t, tvb, offset, 2, "Maximum Attribute Byte Count: %d", tvb_get_ntohs(tvb, offset));
+ offset += 2;
+
+ offset += dissect_attribute_id_list(t, tvb, offset, pinfo);
+
+ proto_tree_add_text(t, tvb, offset, -1, "Continuation State");
+
+ return offset;
}
static int
dissect_sdp_service_attribute_response(proto_tree *t, tvbuff_t *tvb, int offset, packet_info *pinfo, guint32 token)
{
- proto_tree_add_text(t, tvb, offset, 2, "Attribute List Byte Count: %d",
- tvb_get_ntohs(tvb, offset));
- offset+=2;
+ proto_tree_add_text(t, tvb, offset, 2, "Attribute List Byte Count: %d",
+ tvb_get_ntohs(tvb, offset));
+ offset += 2;
- offset = dissect_sdp_service_attribute_list(t, tvb, offset, pinfo, token);
+ offset = dissect_sdp_service_attribute_list(t, tvb, offset, pinfo, token);
- proto_tree_add_text(t, tvb, offset, -1, "Continuation State");
- offset+=tvb_length_remaining(tvb, offset);
+ proto_tree_add_text(t, tvb, offset, -1, "Continuation State");
+ offset += tvb_length_remaining(tvb, offset);
- return offset;
+ return offset;
}
static int
dissect_sdp_service_attribute_request(proto_tree *t, tvbuff_t *tvb, int offset, packet_info *pinfo)
{
- proto_tree_add_text(t, tvb, offset, 4, "Service Record Handle: 0x%x",
- tvb_get_ntohl(tvb, offset));
- offset+=4;
+ proto_tree_add_text(t, tvb, offset, 4, "Service Record Handle: 0x%x",
+ tvb_get_ntohl(tvb, offset));
+ offset += 4;
- proto_tree_add_text(t, tvb, offset, 2, "Maximum Attribute Byte Count: %d",
- tvb_get_ntohs(tvb, offset));
- offset+=2;
+ proto_tree_add_text(t, tvb, offset, 2, "Maximum Attribute Byte Count: %d",
+ tvb_get_ntohs(tvb, offset));
+ offset += 2;
- offset += dissect_attribute_id_list(t, tvb, offset, pinfo);
+ offset += dissect_attribute_id_list(t, tvb, offset, pinfo);
- proto_tree_add_text(t, tvb, offset, -1, "Continuation State");
- offset+=tvb_length_remaining(tvb, offset);
- return offset;
+ proto_tree_add_text(t, tvb, offset, -1, "Continuation State");
+ offset += tvb_length_remaining(tvb, offset);
+ return offset;
}
static int
dissect_sdp_service_search_request(proto_tree *t, tvbuff_t *tvb, int offset, packet_info *pinfo, guint32 token)
{
- int start_offset, bytes_to_go, size;
- proto_item *ti;
- proto_tree *st;
+ int start_offset, bytes_to_go, size;
+ proto_item *ti;
+ proto_tree *st;
- start_offset=offset;
+ start_offset = offset;
- ti = proto_tree_add_text(t, tvb, offset, 2, "Service Search Pattern");
- st = proto_item_add_subtree(ti, ett_btsdp_service_search_pattern);
+ ti = proto_tree_add_text(t, tvb, offset, -1, "Service Search Pattern");
+ st = proto_item_add_subtree(ti, ett_btsdp_service_search_pattern);
- offset = get_type_length(tvb, offset, &bytes_to_go);
- proto_item_set_len(ti, offset - start_offset + bytes_to_go);
+ offset = get_type_length(tvb, offset, &bytes_to_go);
+ proto_item_set_len(ti, offset - start_offset + bytes_to_go);
- while(bytes_to_go>0){
- char *str;
- btsdp_data_t *service_item = NULL;
+ while (bytes_to_go > 0) {
+ char *str;
- if (pinfo->fd->flags.visited == 0) {
- guint32 service, service_val;
- guint8 type;
- void *val = NULL;
+ if (!pinfo->fd->flags.visited) {
+ btsdp_data_t *service_item;
+ guint32 service, service_val; /* dummy */
+ guint8 type;
+ void *val = NULL;
- service_item=se_tree_lookup32(service_table, token);
+ service_item = se_tree_lookup32(service_table, token);
- if(service_item == NULL) {
- service_item=se_alloc(sizeof(btsdp_data_t));
- se_tree_insert32(service_table, token, service_item);
- }
- service_item->channel = 0;
- service_item->service = 0;
+ if (service_item == NULL) {
+ service_item = se_alloc0(sizeof(btsdp_data_t));
+ se_tree_insert32(service_table, token, service_item);
+ }
- get_sdp_data_element(tvb, offset, 4, &type, &val, &service, &service_val);
+ get_sdp_data_element(tvb, offset, 4, &type, &val, &service, &service_val);
- if( type==3 && val != NULL)
- service_item->service = *((guint32 *) val);
- }
+ if ((type == 3) && (val != NULL))
+ service_item->service = *((guint32 *) val); /* "short UUID" */
+ }
- size = dissect_sdp_type(st, tvb, offset, &str);
+ size = dissect_sdp_type(st, tvb, offset, &str);
- proto_item_append_text(st, " %s", str);
+ proto_item_append_text(st, " %s", str);
- col_append_fstr(pinfo->cinfo, COL_INFO, "%s", str);
+ col_append_fstr(pinfo->cinfo, COL_INFO, "%s", str);
- if (size < 1) {
- break;
- }
- offset+=size;
- bytes_to_go-=size;
- }
+ if (size < 1) {
+ break;
+ }
+ offset += size;
+ bytes_to_go -= size;
+ }
- /* dissect maximum service record count */
- proto_tree_add_text(t, tvb, offset, 2, "Maximum Service Record Count: %d",
- tvb_get_ntohs(tvb, offset));
- offset+=2;
+ /* dissect maximum service record count */
+ proto_tree_add_text(t, tvb, offset, 2, "Maximum Service Record Count: %d",
+ tvb_get_ntohs(tvb, offset));
+ offset += 2;
- proto_tree_add_text(t, tvb, offset, -1, "Continuation State");
- offset+=tvb_length_remaining(tvb, offset);
- return offset;
+ proto_tree_add_text(t, tvb, offset, -1, "Continuation State");
+ offset += tvb_length_remaining(tvb, offset);
+ return offset;
}
static int
dissect_sdp_service_search_response(proto_tree *t, tvbuff_t *tvb, int offset)
{
- proto_tree *st;
- proto_item *ti;
- gint curr_count;
+ proto_tree *st;
+ proto_item *ti;
+ gint curr_count;
- proto_tree_add_item(t, hf_ssr_total_count, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset+=2;
+ proto_tree_add_item(t, hf_ssr_total_count, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
- curr_count = tvb_get_ntohs(tvb, offset);
- proto_tree_add_item(t, hf_ssr_current_count, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset+=2;
+ curr_count = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_item(t, hf_ssr_current_count, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
- ti = proto_tree_add_text(t, tvb, offset,
- curr_count * 4, "Service Record Handle List");
- st = proto_item_add_subtree(ti, ett_btsdp_ssr);
+ ti = proto_tree_add_text(t, tvb, offset,
+ curr_count * 4, "Service Record Handle List");
+ st = proto_item_add_subtree(ti, ett_btsdp_ssr);
- while(curr_count>0){
- proto_tree_add_text(st, tvb, offset, 4, "0x%x", tvb_get_ntohl(tvb, offset));
- offset+=4;
- curr_count--;
- }
+ while (curr_count > 0) {
+ proto_tree_add_text(st, tvb, offset, 4, "0x%x", tvb_get_ntohl(tvb, offset));
+ offset += 4;
+ curr_count -= 1;
+ }
- proto_tree_add_text(t, tvb, offset, -1, "Continuation State");
- offset+=tvb_length_remaining(tvb, offset);
+ proto_tree_add_text(t, tvb, offset, -1, "Continuation State");
+ offset += tvb_length_remaining(tvb, offset);
- return offset;
+ return offset;
}
static int
dissect_btsdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti;
- proto_tree *st;
- guint8 pdu;
- guint16 acl_handle;
- guint32 token;
- const char *pdu_name;
- int offset=0;
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "SDP");
-
- ti = proto_tree_add_item(tree, proto_btsdp, tvb, 0, -1, ENC_NA);
- st = proto_item_add_subtree(ti, ett_btsdp);
-
- /* pdu id */
- pdu = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(st, hf_pduid, tvb, offset, 1, ENC_BIG_ENDIAN);
- pdu_name = val_to_str(pdu, vs_pduid, "Unknown");
- switch (pinfo->p2p_dir) {
-
- case P2P_DIR_SENT:
- col_add_str(pinfo->cinfo, COL_INFO, "Sent ");
- break;
-
- case P2P_DIR_RECV:
- col_add_str(pinfo->cinfo, COL_INFO, "Rcvd ");
- break;
-
- case P2P_DIR_UNKNOWN:
- col_clear(pinfo->cinfo, COL_INFO);
- break;
-
- default:
- col_add_fstr(pinfo->cinfo, COL_INFO, "Unknown direction %d ",
- pinfo->p2p_dir);
- break;
- }
- col_append_fstr(pinfo->cinfo, COL_INFO, "%s ", pdu_name);
- proto_item_append_text(ti, ": %s (0x%x)", pdu_name, pdu);
- offset++;
-
- /* tid */
- proto_tree_add_item(st, hf_tid, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset+=2;
-
- /* plen */
- proto_tree_add_item(st, hf_plen, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset+=2;
-
- acl_handle = ((btl2cap_data_t *) pinfo->private_data)->chandle;
- if( pdu & 0x01)
- token = acl_handle | ((pinfo->p2p_dir != P2P_DIR_RECV)?0x8000:0x0000);
- else
- token = acl_handle | ((pinfo->p2p_dir == P2P_DIR_RECV)?0x8000:0x0000);
-
- switch(pdu) {
- case 0x1:
- offset=dissect_sdp_error_response(st, tvb, offset);
- break;
- case 0x2:
- offset=dissect_sdp_service_search_request(st, tvb, offset, pinfo, token);
- break;
- case 0x3:
- offset=dissect_sdp_service_search_response(st, tvb, offset);
- break;
- case 0x4:
- offset=dissect_sdp_service_attribute_request(st, tvb, offset, pinfo);
- break;
- case 0x5:
- offset=dissect_sdp_service_attribute_response(st, tvb, offset, pinfo, token);
- break;
- case 0x6:
- offset=dissect_sdp_service_search_attribute_request(st, tvb, offset, pinfo, token);
- break;
- case 07:
- offset=dissect_sdp_service_search_attribute_response(st, tvb, offset, pinfo, token);
- break;
- }
+ proto_item *ti;
+ proto_tree *st;
+ guint8 pdu;
+ guint16 acl_handle;
+ guint32 token;
+ const char *pdu_name;
+ int offset = 0;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "SDP");
+
+ ti = proto_tree_add_item(tree, proto_btsdp, tvb, 0, -1, ENC_NA);
+ st = proto_item_add_subtree(ti, ett_btsdp);
+
+ /* pdu id */
+ pdu = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(st, hf_pduid, tvb, offset, 1, ENC_BIG_ENDIAN);
+ pdu_name = val_to_str_const(pdu, vs_pduid, "Unknown");
+ switch (pinfo->p2p_dir) {
+
+ case P2P_DIR_SENT:
+ col_add_str(pinfo->cinfo, COL_INFO, "Sent ");
+ break;
+
+ case P2P_DIR_RECV:
+ col_add_str(pinfo->cinfo, COL_INFO, "Rcvd ");
+ break;
+
+ case P2P_DIR_UNKNOWN:
+ col_clear(pinfo->cinfo, COL_INFO);
+ break;
+
+ default:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Unknown direction %d ",
+ pinfo->p2p_dir);
+ break;
+ }
+ col_append_fstr(pinfo->cinfo, COL_INFO, "%s ", pdu_name);
+ proto_item_append_text(ti, ": %s (0x%x)", pdu_name, pdu);
+ offset += 1;
+
+ /* tid */
+ proto_tree_add_item(st, hf_tid, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ /* plen */
+ proto_tree_add_item(st, hf_plen, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ acl_handle = ((btl2cap_data_t *) pinfo->private_data)->chandle;
+ if (pdu & 0x01)
+ token = acl_handle | ((pinfo->p2p_dir != P2P_DIR_RECV)?0x8000:0x0000);
+ else
+ token = acl_handle | ((pinfo->p2p_dir == P2P_DIR_RECV)?0x8000:0x0000);
+
+ switch (pdu) {
+ case 0x1:
+ offset = dissect_sdp_error_response(st, tvb, offset);
+ break;
+ case 0x2:
+ offset = dissect_sdp_service_search_request(st, tvb, offset, pinfo, token);
+ break;
+ case 0x3:
+ offset = dissect_sdp_service_search_response(st, tvb, offset);
+ break;
+ case 0x4:
+ offset = dissect_sdp_service_attribute_request(st, tvb, offset, pinfo);
+ break;
+ case 0x5:
+ offset = dissect_sdp_service_attribute_response(st, tvb, offset, pinfo, token);
+ break;
+ case 0x6:
+ offset = dissect_sdp_service_search_attribute_request(st, tvb, offset, pinfo, token);
+ break;
+ case 07:
+ offset = dissect_sdp_service_search_attribute_response(st, tvb, offset, pinfo, token);
+ break;
+ }
return offset;
}
void
proto_register_btsdp(void)
{
- static hf_register_info hf[] = {
- {&hf_pduid,
- {"PDU", "btsdp.pdu",
- FT_UINT8, BASE_HEX, VALS(vs_pduid), 0,
- "PDU type", HFILL}
- },
- {&hf_tid,
- {"Transaction Id", "btsdp.tid",
- FT_UINT16, BASE_HEX, NULL, 0,
- NULL, HFILL}
- },
- {&hf_plen,
- {"Parameter Length", "btsdp.len",
- FT_UINT16, BASE_DEC, NULL, 0,
- NULL, HFILL}
- },
- {&hf_error_code,
- {"Error Code", "btsdp.error_code",
- FT_UINT16, BASE_HEX, NULL, 0,
- NULL, HFILL}
- },
- {&hf_ssr_total_count,
- {"Total Service Record Count", "btsdp.ssr.total_count",
- FT_UINT16, BASE_DEC, NULL, 0,
- "Total count of service records", HFILL}
- },
- {&hf_ssr_current_count,
- {"Current Service Record Count", "btsdp.ssr.current_count",
- FT_UINT16, BASE_DEC, NULL, 0,
- "Count of service records in this message", HFILL}
- },
- {&hf_ssares_al_bytecount,
- {"Attribute Lists Byte Count", "btsdp.ssares.byte_count",
- FT_UINT16, BASE_DEC, NULL, 0,
- "Count of bytes in attribute list response", HFILL}
- }
- };
-
- /* Setup protocol subtree array */
-
- static gint *ett[] = {
- &ett_btsdp,
- &ett_btsdp_ssr,
- &ett_btsdp_des,
- &ett_btsdp_attribute,
- &ett_btsdp_service_search_pattern,
- &ett_btsdp_attribute_idlist
- };
-
- proto_btsdp = proto_register_protocol("Bluetooth SDP Protocol", "BTSDP", "btsdp");
-
- new_register_dissector("btsdp", dissect_btsdp, proto_btsdp);
-
- btsdp_tap = register_tap("btsdp");
-
- /* Required function calls to register the header fields and subtrees used */
- proto_register_field_array(proto_btsdp, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
-
- service_table=se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "mapping of rfcomm channel/l2cap PSM to service uuid");
+ static hf_register_info hf[] = {
+ { &hf_pduid,
+ { "PDU", "btsdp.pdu",
+ FT_UINT8, BASE_HEX, VALS(vs_pduid), 0,
+ "PDU type", HFILL}
+ },
+ { &hf_tid,
+ { "Transaction Id", "btsdp.tid",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ NULL, HFILL}
+ },
+ { &hf_plen,
+ { "Parameter Length", "btsdp.len",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ NULL, HFILL}
+ },
+ { &hf_error_code,
+ { "Error Code", "btsdp.error_code",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ NULL, HFILL}
+ },
+ { &hf_ssr_total_count,
+ { "Total Service Record Count", "btsdp.ssr.total_count",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "Total count of service records", HFILL}
+ },
+ { &hf_ssr_current_count,
+ { "Current Service Record Count", "btsdp.ssr.current_count",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "Count of service records in this message", HFILL}
+ },
+ { &hf_ssares_al_bytecount,
+ { "Attribute Lists Byte Count", "btsdp.ssares.byte_count",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "Count of bytes in attribute list response", HFILL}
+ }
+ };
+
+ /* Setup protocol subtree array */
+
+ static gint *ett[] = {
+ &ett_btsdp,
+ &ett_btsdp_ssr,
+ &ett_btsdp_des,
+ &ett_btsdp_attribute,
+ &ett_btsdp_service_search_pattern,
+ &ett_btsdp_attribute_idlist
+ };
+
+ proto_btsdp = proto_register_protocol("Bluetooth SDP Protocol", "BTSDP", "btsdp");
+
+ new_register_dissector("btsdp", dissect_btsdp, proto_btsdp);
+
+ btsdp_tap = register_tap("btsdp");
+
+ /* Required function calls to register the header fields and subtrees used */
+ proto_register_field_array(proto_btsdp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ service_table = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "mapping of rfcomm channel/l2cap PSM to service uuid");
}
void
proto_reg_handoff_btsdp(void)
{
- dissector_handle_t btsdp_handle;
+ dissector_handle_t btsdp_handle;
- btsdp_handle = find_dissector("btsdp");
- dissector_add_uint("btl2cap.psm", BTL2CAP_PSM_SDP, btsdp_handle);
+ btsdp_handle = find_dissector("btsdp");
+ dissector_add_uint("btl2cap.psm", BTL2CAP_PSM_SDP, btsdp_handle);
}
diff --git a/epan/dissectors/packet-btsdp.h b/epan/dissectors/packet-btsdp.h
index f61dedf021..dc2bee3f51 100644
--- a/epan/dissectors/packet-btsdp.h
+++ b/epan/dissectors/packet-btsdp.h
@@ -75,104 +75,6 @@ typedef struct _btsdp_data_t {
(peer device) and/or a secondary PSM */
} btsdp_data_t;
-/* service UUIDs */
-static const value_string vs_service_classes[] = {
- {0x0001, "SDP"},
- {0x0002, "UDP"},
- {0x0003, "RFCOMM"},
- {0x0004, "TCP"},
- {0x0005, "TCS-BIN"},
- {0x0006, "TCS-AT"},
- {0x0008, "OBEX"},
- {0x0009, "IP"},
- {0x000A, "FTP"},
- {0x000C, "HTTP"},
- {0x000E, "WSP"},
- {0x000F, "BNEP"},
- {0x0010, "UPNP"},
- {0x0011, "HIDP"},
- {0x0012, "Hardcopy Control Channel"},
- {0x0014, "Hardcopy Data Channel"},
- {0x0016, "Hardcopy Notification"},
- {0x0017, "AVCTP"},
- {0x0019, "AVDTP"},
- {0x001B, "CMPT"},
- {0x001D, "UDI C-Plane"},
- {0x001E, "MCAP Control Channel"},
- {0x001F, "MCAP Data Channel"},
- {0x0100, "L2CAP"},
- {0x1000, "Service Discovery Server Service Class ID"},
- {0x1001, "Browse Group Descriptor Service Class ID"},
- {0x1002, "Public Browse Group"},
- {0x1101, "Serial Port"},
- {0x1102, "LAN Access Using PPP"},
- {0x1103, "Dialup Networking"},
- {0x1104, "IrMC Sync"},
- {0x1105, "OBEX Object Push"},
- {0x1106, "OBEX File Transfer"},
- {0x1107, "IrMC Sync Command"},
- {0x1108, "Headset"},
- {0x1109, "Cordless Telephony"},
- {0x110A, "Audio Source"},
- {0x110B, "Audio Sink"},
- {0x110C, "A/V Remote Control Target"},
- {0x110D, "Advanced Audio Distribution"},
- {0x110E, "A/V Remote Control"},
- {0x110F, "Video Conferencing"},
- {0x1110, "Intercom"},
- {0x1111, "Fax"},
- {0x1112, "Headset Audio Gateway"},
- {0x1113, "WAP"},
- {0x1114, "WAP client"},
- {0x1115, "PANU"},
- {0x1116, "NAP"},
- {0x1117, "GN"},
- {0x1118, "Direct Printing"},
- {0x1119, "Reference Printing"},
- {0x111A, "Imaging"},
- {0x111B, "Imaging Responder"},
- {0x111C, "Imaging Automatic Archive"},
- {0x111D, "Imaging Referenced Objects"},
- {0x111E, "Handsfree"},
- {0x111F, "Handsfree Audio Gateway"},
- {0x1120, "Direct Printing Reference Objects Service"},
- {0x1121, "Reflected UI"},
- {0x1122, "Basic Printing"},
- {0x1123, "Printing Status"},
- {0x1124, "Human Interface Device Service"},
- {0x1125, "Hardcopy Cable Replacement"},
- {0x1126, "HCR Print"},
- {0x1127, "HCR Scan"},
- {0x1128, "Common ISDN Access"},
- {0x1129, "Video Conferencing GW"},
- {0x112A, "UDI MT"},
- {0x112B, "UDI TA"},
- {0x112C, "Audio/Video"},
- {0x112D, "SIM Access"},
- {0x112E, "Phonebook Access client"},
- {0x112F, "Phonebook Access server"},
- {0x1130, "Phonebook Access Profile"},
- {0x1131, "Headset - HS"},
- {0x1132, "Message Access Server"},
- {0x1133, "Message Notification Server"},
- {0x1134, "Message Access Profile"},
- {0x1200, "PnP Information"},
- {0x1201, "Generic Networking"},
- {0x1202, "Generic File Transfer"},
- {0x1203, "Generic Audio"},
- {0x1204, "Generic Telephony"},
- {0x1205, "UPNP_Service"},
- {0x1206, "UPNP_IP_Service"},
- {0x1300, "ESDP_UPNP_IP_PAN"},
- {0x1301, "ESDP_UPNP_IP_LAP"},
- {0x1302, "ESDP_UPNP_L2CAP"},
- {0x1303, "Video Source"},
- {0x1304, "Video Sink"},
- {0x1305, "Video Distribution"},
- {0x1400, "Health Device Profile"},
- {0x1401, "Health Device Source"},
- {0x1402, "Health Device Sink"},
- {0, NULL}
-};
+extern value_string_ext vs_service_classes_ext;
#endif
diff --git a/epan/dissectors/packet-bzr.c b/epan/dissectors/packet-bzr.c
index e388ee8ddb..98f9053f7f 100644
--- a/epan/dissectors/packet-bzr.c
+++ b/epan/dissectors/packet-bzr.c
@@ -222,7 +222,7 @@ dissect_bzr_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (bzr_tree)
{
proto_tree_add_item(bzr_tree, hf_bzr_packet_protocol_version, tvb, 0,
- protocol_version_len+1, ENC_NA);
+ protocol_version_len+1, ENC_ASCII|ENC_NA);
}
offset += dissect_prefixed_bencode(tvb, offset, pinfo, bzr_tree);
@@ -261,7 +261,7 @@ proto_register_bzr(void)
{
static hf_register_info hf[] = {
{ &hf_bzr_packet_kind,
- { "Packet kind", "bzr.kind", FT_UINT8, BASE_NONE,
+ { "Packet kind", "bzr.kind", FT_UINT8, BASE_DEC,
VALS(message_part_kind), 0x0, NULL, HFILL },
},
{ &hf_bzr_packet_protocol_version,
diff --git a/epan/dissectors/packet-c1222.c b/epan/dissectors/packet-c1222.c
index e32ef8ce63..c25962d10c 100644
--- a/epan/dissectors/packet-c1222.c
+++ b/epan/dissectors/packet-c1222.c
@@ -802,10 +802,10 @@ keylookup(guint8 *keybuff, guint8 keyid)
* \param decrypt TRUE if packet is to be authenticated and decrypted; FALSE if authentication only is requested
* \returns TRUE if the requested operation was successful; otherwise FALSE
*/
+#ifdef HAVE_LIBGCRYPT
static gboolean
decrypt_packet(guchar *buffer, guint32 length, gboolean decrypt)
{
-#ifdef HAVE_LIBGCRYPT
#define CANONBUFFSIZE 300U
guchar canonbuff[CANONBUFFSIZE];
guint8 c1222_key[EAX_SIZEOF_KEY];
@@ -841,14 +841,14 @@ decrypt_packet(guchar *buffer, guint32 length, gboolean decrypt)
decrypt ? EAX_MODE_CIPHERTEXT_AUTH : EAX_MODE_CLEARTEXT_AUTH);
}
return status;
+}
#else /* HAVE_LIBCRYPT */
- /* these are to silence compiler unreferenced variable warnings */
- buffer=buffer;
- length=length;
- decrypt=decrypt;
+static gboolean
+decrypt_packet(guchar *buffer _U_, guint32 length _U_, gboolean decrypt _U_)
+{
return FALSE;
-#endif /* HAVE_LIBGCRYPT */
}
+#endif /* HAVE_LIBGCRYPT */
/**
* Checks to make sure that a complete, valid BER-encoded length is in the buffer.
@@ -925,13 +925,15 @@ dissect_epsem(tvbuff_t *tvb, int offset, guint32 len, packet_info *pinfo, proto_
}
/* parse the flags byte which is always unencrypted */
flags = tvb_get_guint8(tvb, offset);
- proto_tree_add_bitmask(tree, tvb, offset, hf_c1222_epsem_flags, ett_c1222_flags, c1222_flags, FALSE);
+ proto_tree_add_bitmask(tree, tvb, offset, hf_c1222_epsem_flags, ett_c1222_flags, c1222_flags, ENC_BIG_ENDIAN);
offset++;
switch ((flags & C1222_EPSEM_FLAG_SECURITY_MODE) >> 2) {
case EAX_MODE_CIPHERTEXT_AUTH:
/* mode is ciphertext with authentication */
hasmac = TRUE;
len2 = tvb_length_remaining(tvb, offset);
+ if (len2 <= 0)
+ return offset;
encrypted = TRUE;
if (c1222_decrypt) {
buffer = tvb_memdup(tvb, offset, len2);
@@ -951,6 +953,8 @@ dissect_epsem(tvbuff_t *tvb, int offset, guint32 len, packet_info *pinfo, proto_
/* mode is cleartext with authentication */
hasmac = TRUE;
len2 = tvb_length_remaining(tvb, offset);
+ if (len2 <= 0)
+ return offset;
buffer = tvb_memdup(tvb, offset, len2);
epsem_buffer = tvb_new_subset(tvb, offset, -1, -1);
if (c1222_decrypt) {
@@ -1402,7 +1406,7 @@ dissect_c1222_User_information(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &class, &pc, &tag);
offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, &ind);
if (tag == 0x1) { /* implicit octet string */
- tf = proto_tree_add_item(tree, hf_c1222_user_information, tvb, offset, len, FALSE);
+ tf = proto_tree_add_item(tree, hf_c1222_user_information, tvb, offset, len, ENC_NA);
epsem_tree = proto_item_add_subtree(tf, ett_c1222_epsem);
dissect_epsem(tvb, offset, len, actx->pinfo, epsem_tree);
offset += len;
@@ -1456,7 +1460,7 @@ static void dissect_C1222_MESSAGE_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_,
/*--- End of included file: packet-c1222-fn.c ---*/
-#line 987 "../../asn1/c1222/packet-c1222-template.c"
+#line 991 "../../asn1/c1222/packet-c1222-template.c"
/**
* Dissects a a full (reassembled) C12.22 message.
@@ -1827,7 +1831,7 @@ void proto_register_c1222(void) {
"OCTET_STRING_SIZE_CONSTR002", HFILL }},
/*--- End of included file: packet-c1222-hfarr.c ---*/
-#line 1269 "../../asn1/c1222/packet-c1222-template.c"
+#line 1273 "../../asn1/c1222/packet-c1222-template.c"
};
/* List of subtrees */
@@ -1848,7 +1852,7 @@ void proto_register_c1222(void) {
&ett_c1222_Calling_authentication_value_c1221_U,
/*--- End of included file: packet-c1222-ettarr.c ---*/
-#line 1279 "../../asn1/c1222/packet-c1222-template.c"
+#line 1283 "../../asn1/c1222/packet-c1222-template.c"
};
module_t *c1222_module;
diff --git a/epan/dissectors/packet-camel.c b/epan/dissectors/packet-camel.c
index 57ce0f1a34..405913afba 100644
--- a/epan/dissectors/packet-camel.c
+++ b/epan/dissectors/packet-camel.c
@@ -1219,23 +1219,23 @@ const value_string camel_opr_code_strings[] = {
/* CAMEL ERRORS */
static const value_string camel_err_code_string_vals[] = {
- { errcode_canceled, "canceled" },
- { errcode_cancelFailed, "cancelFailed" },
- { errcode_eTCFailed, "eTCFailed" },
- { errcode_improperCallerResponse, "improperCallerResponse" },
- { errcode_missingCustomerRecord, "missingCustomerRecord" },
- { errcode_missingParameter, "missingParameter" },
- { errcode_parameterOutOfRange, "parameterOutOfRange" },
- { errcode_requestedInfoError, "requestedInfoError" },
- { errcode_systemFailure, "systemFailure" },
- { errcode_taskRefused, "taskRefused" },
- { errcode_unavailableResource, "unavailableResource" },
- { errcode_unexpectedComponentSequence, "unexpectedComponentSequence" },
- { errcode_unexpectedDataValue, "unexpectedDataValue" },
- { errcode_unexpectedParameter, "unexpectedParameter" },
- { errcode_unknownLegID, "unknownLegID" },
- { errcode_unknownCSID, "unknownCSID" },
- { errcode_unknownPDPID, "unknownPDPID" },
+ { errcode_canceled, "canceled" },
+ { errcode_cancelFailed, "cancelFailed" },
+ { errcode_eTCFailed, "eTCFailed" },
+ { errcode_improperCallerResponse, "improperCallerResponse" },
+ { errcode_missingCustomerRecord, "missingCustomerRecord" },
+ { errcode_missingParameter, "missingParameter" },
+ { errcode_parameterOutOfRange, "parameterOutOfRange" },
+ { errcode_requestedInfoError, "requestedInfoError" },
+ { errcode_systemFailure, "systemFailure" },
+ { errcode_taskRefused, "taskRefused" },
+ { errcode_unavailableResource, "unavailableResource" },
+ { errcode_unexpectedComponentSequence, "unexpectedComponentSequence" },
+ { errcode_unexpectedDataValue, "unexpectedDataValue" },
+ { errcode_unexpectedParameter, "unexpectedParameter" },
+ { errcode_unknownLegID, "unknownLegID" },
+ { errcode_unknownCSID, "unknownCSID" },
+ { errcode_unknownPDPID, "unknownPDPID" },
{ 0, NULL }
};
@@ -2171,20 +2171,20 @@ dissect_camel_T_local(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _
if (is_ExtensionField){
hf_index = hf_camel_extension_code_local;
}else if (camel_opcode_type == CAMEL_OPCODE_RETURN_ERROR){
- hf_index = hf_camel_error_code_local;
- }
+ hf_index = hf_camel_error_code_local;
+ }
offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
&opcode);
if (is_ExtensionField == FALSE){
if (camel_opcode_type == CAMEL_OPCODE_RETURN_ERROR){
- errorCode = opcode;
- col_append_str(actx->pinfo->cinfo, COL_INFO,
+ errorCode = opcode;
+ col_append_str(actx->pinfo->cinfo, COL_INFO,
val_to_str(errorCode, camel_err_code_string_vals, "Unknown CAMEL error (%u)"));
col_append_str(actx->pinfo->cinfo, COL_INFO, " ");
col_set_fence(actx->pinfo->cinfo, COL_INFO);
}else{
- col_append_str(actx->pinfo->cinfo, COL_INFO,
+ col_append_str(actx->pinfo->cinfo, COL_INFO,
val_to_str(opcode, camel_opr_code_strings, "Unknown CAMEL (%u)"));
col_append_str(actx->pinfo->cinfo, COL_INFO, " ");
col_set_fence(actx->pinfo->cinfo, COL_INFO);
@@ -3084,7 +3084,7 @@ static int
dissect_camel_DateAndTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-/*
+/*
* date_option = 1 european dd:mm:yyyy
* date_option = 2 american mm:dd:yyyy
*/
@@ -3096,17 +3096,17 @@ dissect_camel_DateAndTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs
*/
guint8 digit_pair;
- guint8 i = 0, curr_offset;
+ guint8 i = 0, curr_offset;
char camel_time[CAMEL_DATE_AND_TIME_LEN];
char c[CAMEL_DATE_AND_TIME_LEN]; /*temporary container*/
/* 2 digits per octet, 7 octets total + 5 delimiters */
-
- for (curr_offset = 0; curr_offset < 7 ; curr_offset++)
+
+ for (curr_offset = 0; curr_offset < 7 ; curr_offset++)
/*Loop to extract date*/
{
digit_pair = tvb_get_guint8(tvb, curr_offset);
-
+
proto_tree_add_uint(tree,
hf_digit,
tvb,
@@ -3120,18 +3120,18 @@ dissect_camel_DateAndTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs
curr_offset,
1,
digit_pair >>4);
-
-
+
+
c[i] = camel_number_to_char( digit_pair & 0x0F);
i++;
c[i] = camel_number_to_char( digit_pair >>4);
i++;
}
-
+
/* Pretty print date */
/* XXX - Should we use sprintf here instead of assembling the string by
* hand? */
-
+
camel_time[0] = c[8];
camel_time[1] = c[9];
camel_time[2] = ':';
@@ -3145,7 +3145,7 @@ dissect_camel_DateAndTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs
{
camel_time[9] = c[6]; /*day*/
camel_time[10] = c[7];
- camel_time[11] = '/';
+ camel_time[11] = '/';
camel_time[12] = c[4]; /*month*/
camel_time[13] = c[5];
}
@@ -3153,7 +3153,7 @@ dissect_camel_DateAndTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs
{
camel_time[9] = c[4]; /*month*/
camel_time[10] = c[5];
- camel_time[11] = '/';
+ camel_time[11] = '/';
camel_time[12] = c[6]; /*day*/
camel_time[13] = c[7];
}
@@ -3164,14 +3164,14 @@ dissect_camel_DateAndTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs
camel_time[18] = c[3];
camel_time[CAMEL_DATE_AND_TIME_LEN - 1] = '\0';
-
+
/*start = 0, length = 7*/
-
- proto_tree_add_string(tree,
- hf_index,
+
+ proto_tree_add_string(tree,
+ hf_index,
tvb,
- 0,
- 7,
+ 0,
+ 7,
camel_time);
return 7; /* 7 octets eaten*/
@@ -3299,7 +3299,7 @@ dissect_camel_T_pDPTypeOrganization(gboolean implicit_tag _U_, tvbuff_t *tvb _U_
if (!parameter_tvb)
return offset;
- PDPTypeOrganization = (tvb_get_guint8(parameter_tvb,0) &0x0f);
+ PDPTypeOrganization = (tvb_get_guint8(parameter_tvb,0) &0x0f);
return offset;
}
@@ -3318,14 +3318,14 @@ dissect_camel_T_pDPTypeNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
if (!parameter_tvb)
return offset;
- PDPTypeNumber = tvb_get_guint8(parameter_tvb,0);
+ PDPTypeNumber = tvb_get_guint8(parameter_tvb,0);
subtree = proto_item_add_subtree(actx->created_item, ett_camel_pdptypenumber);
switch (PDPTypeOrganization){
case 0: /* ETSI */
- proto_tree_add_item(subtree, hf_camel_PDPTypeNumber_etsi, parameter_tvb, 0, 1, FALSE);
+ proto_tree_add_item(subtree, hf_camel_PDPTypeNumber_etsi, parameter_tvb, 0, 1, ENC_BIG_ENDIAN);
break;
case 1: /* IETF */
- proto_tree_add_item(subtree, hf_camel_PDPTypeNumber_ietf, parameter_tvb, 0, 1, FALSE);
+ proto_tree_add_item(subtree, hf_camel_PDPTypeNumber_ietf, parameter_tvb, 0, 1, ENC_BIG_ENDIAN);
break;
default:
break;
@@ -3355,10 +3355,10 @@ dissect_camel_T_pDPAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off
case 1: /* IETF */
switch(PDPTypeNumber){
case 0x21: /* IPv4 */
- proto_tree_add_item(subtree, hf_camel_PDPAddress_IPv4, parameter_tvb, 0, tvb_length(parameter_tvb), FALSE);
+ proto_tree_add_item(subtree, hf_camel_PDPAddress_IPv4, parameter_tvb, 0, tvb_length(parameter_tvb), ENC_BIG_ENDIAN);
break;
case 0x57: /* IPv6 */
- proto_tree_add_item(subtree, hf_camel_PDPAddress_IPv6, parameter_tvb, 0, tvb_length(parameter_tvb), FALSE);
+ proto_tree_add_item(subtree, hf_camel_PDPAddress_IPv6, parameter_tvb, 0, tvb_length(parameter_tvb), ENC_NA);
break;
default:
break;
@@ -7150,10 +7150,12 @@ static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
case opcode_resetTimerSMS: /* resetTimerSMS */
offset= dissect_ResetTimerSMSArg_PDU(tvb, actx->pinfo , tree);
break;
- cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob");
- proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown invokeData %d",opcode);
- /* todo call the asn.1 dissector */
+ default:
+ cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob");
+ proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown invokeData %d",opcode);
+ /* todo call the asn.1 dissector */
+ break;
}
return offset;
}
diff --git a/epan/dissectors/packet-canopen.c b/epan/dissectors/packet-canopen.c
index f984ab985b..8bcf9946d9 100644
--- a/epan/dissectors/packet-canopen.c
+++ b/epan/dissectors/packet-canopen.c
@@ -8,12 +8,6 @@
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
- * Copied from WHATEVER_FILE_YOU_USED (where "WHATEVER_FILE_YOU_USED"
- * is a dissector file; if you just copied this from README.developer,
- * don't bother with the "Copied from" - you don't even need to put
- * in a "Copied from" if you copied an existing dissector, especially
- * if the bulk of the code in the new dissector is your code)
- *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -36,12 +30,10 @@
#include <glib.h>
#include <epan/packet.h>
-#include <epan/prefs.h>
/* Initialize the protocol and registered fields */
static int proto_canopen = -1;
static int hf_canopen_cob_id = -1;
-static int hf_canopen_type = -1;
static int hf_canopen_function_code = -1;
static int hf_canopen_node_id = -1;
static int hf_canopen_pdo_data = -1;
@@ -64,208 +56,207 @@ static int hf_canopen_time_stamp_days = -1;
static gint ett_canopen = -1;
/* broadcast messages */
-#define FC_NMT 0x0
-#define FC_SYNC 0x1
-#define FC_TIME_STAMP 0x2
+#define FC_NMT 0x0
+#define FC_SYNC 0x1
+#define FC_TIME_STAMP 0x2
/* point-to-point messages */
-#define FC_EMERGENCY 0x1
-#define FC_PDO1_TX 0x3
-#define FC_PDO1_RX 0x4
-#define FC_PDO2_TX 0x5
-#define FC_PDO2_RX 0x6
-#define FC_PDO3_TX 0x7
-#define FC_PDO3_RX 0x8
-#define FC_PDO4_TX 0x9
-#define FC_PDO4_RX 0xA
-#define FC_DEFAULT_SDO_TX 0xB
-#define FC_DEFAULT_SDO_RX 0xC
-#define FC_NMT_ERR_CONTROL 0xE
+#define FC_EMERGENCY 0x1
+#define FC_PDO1_TX 0x3
+#define FC_PDO1_RX 0x4
+#define FC_PDO2_TX 0x5
+#define FC_PDO2_RX 0x6
+#define FC_PDO3_TX 0x7
+#define FC_PDO3_RX 0x8
+#define FC_PDO4_TX 0x9
+#define FC_PDO4_RX 0xA
+#define FC_DEFAULT_SDO_TX 0xB
+#define FC_DEFAULT_SDO_RX 0xC
+#define FC_NMT_ERR_CONTROL 0xE
static const value_string CAN_open_bcast_msg_type_vals[] = {
- { FC_NMT, "EMERGENCY"},
- { FC_SYNC, "Sync"},
- { FC_TIME_STAMP, "TIME STAMP"},
- { 0, NULL}
+ { FC_NMT, "EMERGENCY"},
+ { FC_SYNC, "Sync"},
+ { FC_TIME_STAMP, "TIME STAMP"},
+ { 0, NULL}
};
static const value_string CAN_open_p2p_msg_type_vals[] = {
- { FC_EMERGENCY, "EMERGENCY"},
- { FC_PDO1_TX, "PDO1 (tx)"},
- { FC_PDO1_RX, "PDO1 (rx)"},
- { FC_PDO2_TX, "PDO2 (tx)"},
- { FC_PDO2_RX, "PDO2 (rx)"},
- { FC_PDO3_TX, "PDO3 (tx)"},
- { FC_PDO3_RX, "PDO3 (rx)"},
- { FC_PDO4_TX, "PDO4 (tx)"},
- { FC_PDO4_RX, "PDO4 (rx)"},
- { FC_DEFAULT_SDO_TX, "Default-SDO (tx)"},
- { FC_DEFAULT_SDO_RX, "Default-SDO (rx)"},
- { FC_NMT_ERR_CONTROL, "NMT Error Control"},
- { 0, NULL}
+ { FC_EMERGENCY, "EMERGENCY"},
+ { FC_PDO1_TX, "PDO1 (tx)"},
+ { FC_PDO1_RX, "PDO1 (rx)"},
+ { FC_PDO2_TX, "PDO2 (tx)"},
+ { FC_PDO2_RX, "PDO2 (rx)"},
+ { FC_PDO3_TX, "PDO3 (tx)"},
+ { FC_PDO3_RX, "PDO3 (rx)"},
+ { FC_PDO4_TX, "PDO4 (tx)"},
+ { FC_PDO4_RX, "PDO4 (rx)"},
+ { FC_DEFAULT_SDO_TX, "Default-SDO (tx)"},
+ { FC_DEFAULT_SDO_RX, "Default-SDO (rx)"},
+ { FC_NMT_ERR_CONTROL, "NMT Error Control"},
+ { 0, NULL}
};
/* message types */
-#define MT_UNKNOWN 0
-#define MT_NMT_CTRL 1
-#define MT_SYNC 2
-#define MT_TIME_STAMP 3
-#define MT_EMERGENCY 4
-#define MT_PDO 5
-#define MT_SDO 6
-#define MT_NMT_GUARD 7
+#define MT_UNKNOWN 0
+#define MT_NMT_CTRL 1
+#define MT_SYNC 2
+#define MT_TIME_STAMP 3
+#define MT_EMERGENCY 4
+#define MT_PDO 5
+#define MT_SDO 6
+#define MT_NMT_GUARD 7
/* PDO offsets */
-#define CO_PDO_DATA_OFFSET 8
+#define CO_PDO_DATA_OFFSET 8
/* SDO offsets */
-#define CO_SDO_CMD_OFFSET 8
-#define CO_SDO_MAIN_IDX_OFFSET 9
-#define CO_SDO_MAIN_SUB_OFFSET 11
-#define CO_SDO_DATA_OFFSET 12
+#define CO_SDO_CMD_OFFSET 8
+#define CO_SDO_MAIN_IDX_OFFSET 9
+#define CO_SDO_MAIN_SUB_OFFSET 11
+#define CO_SDO_DATA_OFFSET 12
/* EMERGENCY offsets */
-#define CO_EM_ERR_CODE_OFFSET 8
-#define CO_EM_ERR_REG_OFFSET 10
-#define CO_EM_ERR_FIELD_OFFSET 11
+#define CO_EM_ERR_CODE_OFFSET 8
+#define CO_EM_ERR_REG_OFFSET 10
+#define CO_EM_ERR_FIELD_OFFSET 11
/* NMT offsets */
-#define CO_NMT_CTRL_CS_OFFSET 8
-#define CO_NMT_CTRL_NODE_ID_OFFSET 9
-#define CO_NMT_GUARD_STATE_OFFSET 8
+#define CO_NMT_CTRL_CS_OFFSET 8
+#define CO_NMT_CTRL_NODE_ID_OFFSET 9
+#define CO_NMT_GUARD_STATE_OFFSET 8
/* TIME STAMP offsets */
-#define CO_TIME_STAMP_MS_OFFSET 8
-#define CO_TIME_STAMP_DAYS_OFFSET 12
+#define CO_TIME_STAMP_MS_OFFSET 8
+#define CO_TIME_STAMP_DAYS_OFFSET 12
/* TIME STAMP conversion defines */
-#define TS_DAYS_BETWEEN_1970_AND_1984 5113
-#define TS_SECONDS_IN_PER_DAY 86400
-#define TS_NANOSEC_PER_MSEC 1000000
+#define TS_DAYS_BETWEEN_1970_AND_1984 5113
+#define TS_SECONDS_IN_PER_DAY 86400
+#define TS_NANOSEC_PER_MSEC 1000000
/* NMT command specifiers */
static const value_string nmt_ctrl_cs[] = {
- { 0x1, "Start remote node"},
- { 0x2, "Stop remote node"},
- { 0x80, "Enter pre-operational state"},
- { 0x81, "Reset node"},
- { 0x82, "Reset communication"},
- { 0, NULL}
+ { 0x01, "Start remote node"},
+ { 0x02, "Stop remote node"},
+ { 0x80, "Enter pre-operational state"},
+ { 0x81, "Reset node"},
+ { 0x82, "Reset communication"},
+ { 0, NULL}
};
/* NMT states */
static const value_string nmt_guard_state[] = {
- { 0x0, "Initialising"},
- { 0x1, "Disconnected"},
- { 0x2, "Connecting"},
- { 0x3, "Preparing"},
- { 0x4, "Stopped"},
- { 0x5, "Operational"},
- { 0x7F, "Pre-operational"},
- { 0, NULL}
+ { 0x00, "Initialising"},
+ { 0x01, "Disconnected"},
+ { 0x02, "Connecting"},
+ { 0x03, "Preparing"},
+ { 0x04, "Stopped"},
+ { 0x05, "Operational"},
+ { 0x7F, "Pre-operational"},
+ { 0, NULL}
};
-static void
-canopen_detect_msg_type(guint function_code, guint node_id,guint *msg_type_id)
+static guint
+canopen_detect_msg_type(guint function_code, guint node_id)
{
- switch(function_code)
- {
- case FC_NMT:
- *msg_type_id = MT_NMT_CTRL;
- break;
- case FC_SYNC:
- if (!node_id)
- {
- *msg_type_id = MT_SYNC;
- }
- else
- {
- *msg_type_id = MT_EMERGENCY;
- }
- break;
- case FC_TIME_STAMP:
- *msg_type_id = MT_TIME_STAMP;
- break;
- case FC_PDO1_TX:
- *msg_type_id = MT_PDO;
- break;
- case FC_PDO1_RX:
- *msg_type_id = MT_PDO;
- break;
- case FC_PDO2_TX:
- *msg_type_id = MT_PDO;
- break;
- case FC_PDO2_RX:
- *msg_type_id = MT_PDO;
- break;
- case FC_PDO3_TX:
- *msg_type_id = MT_PDO;
- break;
- case FC_PDO3_RX:
- *msg_type_id = MT_PDO;
- break;
- case FC_PDO4_TX:
- *msg_type_id = MT_PDO;
- break;
- case FC_PDO4_RX:
- *msg_type_id = MT_PDO;
- break;
- case FC_DEFAULT_SDO_TX:
- *msg_type_id = MT_SDO;
- break;
- case FC_DEFAULT_SDO_RX:
- *msg_type_id = MT_SDO;
- break;
- case FC_NMT_ERR_CONTROL:
- *msg_type_id = MT_NMT_GUARD;
- break;
- default:
- *msg_type_id = MT_UNKNOWN;
- break;
- }
+ switch (function_code) {
+ case FC_NMT:
+ return MT_NMT_CTRL;
+ break;
+ case FC_SYNC:
+ if (node_id == 0) {
+ return MT_SYNC;
+ } else {
+ return MT_EMERGENCY;
+ }
+ break;
+ case FC_TIME_STAMP:
+ return MT_TIME_STAMP;
+ break;
+ case FC_PDO1_TX:
+ return MT_PDO;
+ break;
+ case FC_PDO1_RX:
+ return MT_PDO;
+ break;
+ case FC_PDO2_TX:
+ return MT_PDO;
+ break;
+ case FC_PDO2_RX:
+ return MT_PDO;
+ break;
+ case FC_PDO3_TX:
+ return MT_PDO;
+ break;
+ case FC_PDO3_RX:
+ return MT_PDO;
+ break;
+ case FC_PDO4_TX:
+ return MT_PDO;
+ break;
+ case FC_PDO4_RX:
+ return MT_PDO;
+ break;
+ case FC_DEFAULT_SDO_TX:
+ return MT_SDO;
+ break;
+ case FC_DEFAULT_SDO_RX:
+ return MT_SDO;
+ break;
+ case FC_NMT_ERR_CONTROL:
+ return MT_NMT_GUARD;
+ break;
+ default:
+ return MT_UNKNOWN;
+ break;
+ }
}
/* Code to actually dissect the packets */
static void
dissect_canopen(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti, *cob_ti, *type_ti;
- proto_tree *canopen_tree = NULL;
- proto_tree *canopen_cob_tree = NULL;
- proto_tree *canopen_type_tree = NULL;
- guint function_code = -1;
- guint node_id = -1;
- guint32 id = -1;
- guint32 time_stamp_msec = -1;
- guint32 time_stamp_days = -1;
- guint msg_type_id = -1;
- nstime_t time_stamp;
- guint8 can_data_len;
-
- can_data_len = tvb_get_guint8(tvb, 4);
- id = tvb_get_ntohl(tvb, 0);
-
- node_id = (guint)(id & 0x7F);
- function_code = (guint)((id >> 7) & 0xF);
-
- if (tvb_length(tvb) < 1)
- return;
+ guint function_code;
+ guint node_id;
+ guint32 id;
+ guint32 time_stamp_msec;
+ guint32 time_stamp_days;
+ guint msg_type_id;
+ nstime_t time_stamp;
+ gint can_data_len;
+ const gchar *function_code_str;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "CANopen");
col_clear(pinfo->cinfo, COL_INFO);
- canopen_detect_msg_type(function_code, node_id, &msg_type_id);
- if(node_id == 0 ){
- /* brodcast */
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s", val_to_str(function_code, CAN_open_bcast_msg_type_vals, "Unknown (%u)"));
- }else{
- /*pet-to-per */
- col_add_fstr(pinfo->cinfo, COL_INFO, "p2p %s", val_to_str(function_code, CAN_open_p2p_msg_type_vals, "Unknown (%u)"));
- }
- col_append_fstr(pinfo->cinfo, COL_INFO, " %s", tvb_bytes_to_str_punct(tvb, CO_PDO_DATA_OFFSET, can_data_len, ' '));
+
+ can_data_len = tvb_get_guint8(tvb, 4);
+ id = tvb_get_ntohl(tvb, 0);
+
+ node_id = id & 0x7F;
+ function_code = (id >> 7) & 0xF;
+
+ msg_type_id = canopen_detect_msg_type(function_code, node_id);
+
+ if (node_id == 0 ) {
+ /* broadcast */
+ function_code_str = val_to_str(function_code, CAN_open_bcast_msg_type_vals, "Unknown (%u)");
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s", function_code_str);
+ } else {
+ /* point-to-point */
+ function_code_str = val_to_str(function_code, CAN_open_p2p_msg_type_vals, "Unknown (%u)");
+ col_add_fstr(pinfo->cinfo, COL_INFO, "p2p %s", function_code_str);
+ }
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s",
+ tvb_bytes_to_str_punct(tvb, CO_PDO_DATA_OFFSET, can_data_len, ' '));
if (tree) {
+ proto_item *ti, *cob_ti, *type_ti;
+ proto_tree *canopen_tree;
+ proto_tree *canopen_cob_tree;
+ proto_tree *canopen_type_tree;
- ti = proto_tree_add_item(tree, proto_canopen, tvb, 0, 1, ENC_NA);
+ ti = proto_tree_add_item(tree, proto_canopen, tvb, 0, -1, ENC_NA);
canopen_tree = proto_item_add_subtree(ti, ett_canopen);
@@ -280,13 +271,11 @@ dissect_canopen(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(canopen_cob_tree, hf_canopen_node_id, tvb, 0, 4, ENC_BIG_ENDIAN);
/* add CANopen frame type */
- if(node_id == 0 ){
- /* brodcast */
- type_ti = proto_tree_add_string(canopen_tree, hf_canopen_type, tvb, 0, 4, val_to_str(function_code, CAN_open_bcast_msg_type_vals, "Unknown (%u)"));
- }else{
- /*pet-to-per */
- type_ti = proto_tree_add_string(canopen_tree, hf_canopen_type, tvb, 0, 4, val_to_str(function_code, CAN_open_p2p_msg_type_vals, "Unknown (%u)"));
- }
+
+ type_ti = proto_tree_add_text(canopen_tree, tvb,
+ (msg_type_id != MT_SYNC) ? 8 : 0,
+ (msg_type_id != MT_SYNC) ? -1 : 0,
+ "Type: %s", function_code_str);
canopen_type_tree = proto_item_add_subtree(type_ti, ett_canopen);
switch(msg_type_id)
@@ -333,14 +322,13 @@ dissect_canopen(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
hf_canopen_em_err_field, tvb, CO_EM_ERR_FIELD_OFFSET, 4, ENC_NA);
break;
case MT_PDO:
- if(can_data_len)
- {
+ if (can_data_len != 0) {
proto_tree_add_item(canopen_type_tree,
hf_canopen_pdo_data, tvb, CO_PDO_DATA_OFFSET, can_data_len, ENC_NA);
}
- else
- {
- proto_tree_add_string(canopen_type_tree, hf_canopen_pdo_data_string, tvb, CO_PDO_DATA_OFFSET, 0, "empty");
+ else {
+ proto_tree_add_string(canopen_type_tree,
+ hf_canopen_pdo_data_string, tvb, CO_PDO_DATA_OFFSET, 0, "empty");
}
break;
case MT_SDO:
@@ -357,7 +345,6 @@ dissect_canopen(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
hf_canopen_sdo_data, tvb, CO_SDO_DATA_OFFSET, 4, ENC_NA);
break;
}
-
}
}
@@ -366,120 +353,110 @@ dissect_canopen(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
void
proto_register_canopen(void)
{
- static hf_register_info hf[] = {
- { &hf_canopen_cob_id,
- { "COB-ID", "canopen.cob_id",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_canopen_type,
- { "Type", "canopen.type",
- FT_STRINGZ, BASE_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_canopen_function_code,
- { "Function code", "canopen.function_code",
- FT_UINT32, BASE_HEX, NULL, 0x780,
- NULL, HFILL }
- },
- { &hf_canopen_node_id,
- { "Node-ID", "canopen.node_id",
- FT_UINT32, BASE_HEX, NULL, 0x7F,
- NULL, HFILL }
- },
- { &hf_canopen_pdo_data,
- { "Data", "canopen.pdo.data",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_canopen_pdo_data_string,
- { "Data", "canopen.pdo.data",
- FT_STRINGZ, BASE_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_canopen_sdo_cmd,
- { "SDO command byte", "canopen.sdo.cmd",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_canopen_sdo_main_idx,
- { "OD main-index", "canopen.sdo.main_idx",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_canopen_sdo_sub_idx,
- { "OD sub-index", "canopen.sdo.sub_idx",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_canopen_sdo_data,
- { "Data", "canopen.sdo.data",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_canopen_em_err_code,
- { "Error code", "canopen.em.err_code",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_canopen_em_err_reg,
- { "Error register", "canopen.em.err_reg",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_canopen_em_err_field,
- { "Manufacture specific error field", "canopen.em.err_field",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_canopen_nmt_ctrl_cs,
- { "Command specifier", "canopen.nmt_ctrl.cd",
- FT_UINT8, BASE_HEX, nmt_ctrl_cs, 0xFF,
- NULL, HFILL }
- },
- { &hf_canopen_nmt_ctrl_node_id,
- { "Node-ID", "canopen.nmt_ctrl.node_id",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_canopen_nmt_guard_state,
- { "Node-ID", "canopen.nmt_guard.state",
- FT_UINT8, BASE_HEX, nmt_guard_state, 0x7F,
- NULL, HFILL }
- },
- { &hf_canopen_time_stamp,
- { "Time stamp", "canopen.time_stamp",
- FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_canopen_time_stamp_ms,
- { "Time, after Midnight in Milliseconds", "canopen.time_stamp_ms",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_canopen_time_stamp_days,
- { "Current day since 1 Jan 1984", "canopen.time_stamp_days",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- };
-
- static gint *ett[] = {
- &ett_canopen
- };
-
- /* Register the protocol name and description */
- proto_canopen = proto_register_protocol("CANopen",
- "CANOPEN",
- "canopen");
-
- register_dissector("canopen", dissect_canopen, proto_canopen);
-
- /* Required function calls to register the header fields and subtrees used */
- proto_register_field_array(proto_canopen, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ static hf_register_info hf[] = {
+ { &hf_canopen_cob_id,
+ { "COB-ID", "canopen.cob_id",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_canopen_function_code,
+ { "Function code", "canopen.function_code",
+ FT_UINT32, BASE_HEX, NULL, 0x780,
+ NULL, HFILL }
+ },
+ { &hf_canopen_node_id,
+ { "Node-ID", "canopen.node_id",
+ FT_UINT32, BASE_HEX, NULL, 0x7F,
+ NULL, HFILL }
+ },
+ { &hf_canopen_pdo_data,
+ { "Data", "canopen.pdo.data",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_canopen_pdo_data_string,
+ { "Data", "canopen.pdo.data",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_canopen_sdo_cmd,
+ { "SDO command byte", "canopen.sdo.cmd",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_canopen_sdo_main_idx,
+ { "OD main-index", "canopen.sdo.main_idx",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_canopen_sdo_sub_idx,
+ { "OD sub-index", "canopen.sdo.sub_idx",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_canopen_sdo_data,
+ { "Data", "canopen.sdo.data",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_canopen_em_err_code,
+ { "Error code", "canopen.em.err_code",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_canopen_em_err_reg,
+ { "Error register", "canopen.em.err_reg",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_canopen_em_err_field,
+ { "Manufacture specific error field", "canopen.em.err_field",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_canopen_nmt_ctrl_cs,
+ { "Command specifier", "canopen.nmt_ctrl.cd",
+ FT_UINT8, BASE_HEX, VALS(nmt_ctrl_cs), 0xFF,
+ NULL, HFILL }
+ },
+ { &hf_canopen_nmt_ctrl_node_id,
+ { "Node-ID", "canopen.nmt_ctrl.node_id",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_canopen_nmt_guard_state,
+ { "Node-ID", "canopen.nmt_guard.state",
+ FT_UINT8, BASE_HEX, VALS(nmt_guard_state), 0x7F,
+ NULL, HFILL }
+ },
+ { &hf_canopen_time_stamp,
+ { "Time stamp", "canopen.time_stamp",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_canopen_time_stamp_ms,
+ { "Time, after Midnight in Milliseconds", "canopen.time_stamp_ms",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_canopen_time_stamp_days,
+ { "Current day since 1 Jan 1984", "canopen.time_stamp_days",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ };
+
+ static gint *ett[] = {
+ &ett_canopen
+ };
+
+ proto_canopen = proto_register_protocol("CANopen",
+ "CANOPEN",
+ "canopen");
+
+ register_dissector("canopen", dissect_canopen, proto_canopen);
+
+ proto_register_field_array(proto_canopen, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
-void
-proto_reg_handoff_canopen(void){}
-
diff --git a/epan/dissectors/packet-capwap.c b/epan/dissectors/packet-capwap.c
index 2f2f908d8e..3feaf036aa 100644
--- a/epan/dissectors/packet-capwap.c
+++ b/epan/dissectors/packet-capwap.c
@@ -27,7 +27,7 @@
# include "config.h"
#endif
-#include <stdlib.h>
+#include <glib.h>
#include <epan/packet.h>
#include <epan/prefs.h>
diff --git a/epan/dissectors/packet-cast.c b/epan/dissectors/packet-cast.c
index 72d2bb6536..3aecf411e7 100644
--- a/epan/dissectors/packet-cast.c
+++ b/epan/dissectors/packet-cast.c
@@ -41,8 +41,8 @@
* infrastructure for now
*
* typedef struct {
- * guint32 id;
- * char * name;
+ * guint32 id;
+ * char *name;
* } message_id_t;
*/
@@ -121,7 +121,7 @@ static const value_string message_id[] = {
{0x00D0, "CallDiscoveryprotocol"},
{0x00D1, "CallControlprotocol"},
- {0 , NULL} /* terminator */
+ {0 , NULL} /* terminator */
};
static const value_string audioCodecTypes[] = {
@@ -141,55 +141,55 @@ static const value_string orcStatus[] = {
};
static const value_string mediaPayloads[] = {
- {1 , "Non-standard codec"},
- {2 , "G.711 A-law 64k"},
- {3 , "G.711 A-law 56k"},
- {4 , "G.711 u-law 64k"},
- {5 , "G.711 u-law 56k"},
- {6 , "G.722 64k"},
- {7 , "G.722 56k"},
- {8 , "G.722 48k"},
- {9 , "G.723.1"},
- {10 , "G.728"},
- {11 , "G.729"},
- {12 , "G.729 Annex A"},
- {13 , "IS11172 AudioCap"}, /* IS11172 is an ISO MPEG standard */
- {14 , "IS13818 AudioCap"}, /* IS13818 is an ISO MPEG standard */
- {15 , "G.729 Annex B"},
- {16 , "G.729 Annex A+Annex B"},
- {18 , "GSM Full Rate"},
- {19 , "GSM Half Rate"},
- {20 , "GSM Enhanced Full Rate"},
- {25 , "Wideband 256k"},
- {32 , "Data 64k"},
- {33 , "Data 56k"},
- {80 , "GSM"},
- {81 , "ActiveVoice"},
- {82 , "G.726 32K"},
- {83 , "G.726 24K"},
- {84 , "G.726 16K"},
- {85 , "G.729B"},
- {86 , "G.729B Low Complexity"},
- {100 , "H261"},
- {101 , "H263"},
- {102 , "Vieo"},
- {105 , "T120"},
- {106 , "H224"},
- {257 , "RFC2833_DynPayload"},
- {0 , NULL}
+ { 1 , "Non-standard codec"},
+ { 2 , "G.711 A-law 64k"},
+ { 3 , "G.711 A-law 56k"},
+ { 4 , "G.711 u-law 64k"},
+ { 5 , "G.711 u-law 56k"},
+ { 6 , "G.722 64k"},
+ { 7 , "G.722 56k"},
+ { 8 , "G.722 48k"},
+ { 9 , "G.723.1"},
+ { 10 , "G.728"},
+ { 11 , "G.729"},
+ { 12 , "G.729 Annex A"},
+ { 13 , "IS11172 AudioCap"}, /* IS11172 is an ISO MPEG standard */
+ { 14 , "IS13818 AudioCap"}, /* IS13818 is an ISO MPEG standard */
+ { 15 , "G.729 Annex B"},
+ { 16 , "G.729 Annex A+Annex B"},
+ { 18 , "GSM Full Rate"},
+ { 19 , "GSM Half Rate"},
+ { 20 , "GSM Enhanced Full Rate"},
+ { 25 , "Wideband 256k"},
+ { 32 , "Data 64k"},
+ { 33 , "Data 56k"},
+ { 80 , "GSM"},
+ { 81 , "ActiveVoice"},
+ { 82 , "G.726 32K"},
+ { 83 , "G.726 24K"},
+ { 84 , "G.726 16K"},
+ { 85 , "G.729B"},
+ { 86 , "G.729B Low Complexity"},
+ {100 , "H261"},
+ {101 , "H263"},
+ {102 , "Vieo"},
+ {105 , "T120"},
+ {106 , "H224"},
+ {257 , "RFC2833_DynPayload"},
+ {0 , NULL}
};
static const value_string cast_Layouts[] = {
- {0 , "NoLayout"},
- {1 , "OneByOne"},
- {2 , "OneByTwo"},
- {3 , "TwoByTwo"},
- {4 , "TwoByTwo3Alt1"},
- {5 , "TwoByTwo3Alt2"},
- {6 , "ThreeByThree"},
- {7 , "ThreeByThree6Alt1"},
- {8 , "ThreeByThree6Alt2"},
- {9 , "ThreeByThree4Alt1"},
+ { 0 , "NoLayout"},
+ { 1 , "OneByOne"},
+ { 2 , "OneByTwo"},
+ { 3 , "TwoByTwo"},
+ { 4 , "TwoByTwo3Alt1"},
+ { 5 , "TwoByTwo3Alt2"},
+ { 6 , "ThreeByThree"},
+ { 7 , "ThreeByThree6Alt1"},
+ { 8 , "ThreeByThree6Alt2"},
+ { 9 , "ThreeByThree4Alt1"},
{10 , "ThreeByThree4Alt2"},
{0 , NULL}
};
@@ -236,16 +236,16 @@ static const value_string cast_miscCommandType[] = {
};
static const value_string cast_callStateTypes[] = {
- {0 , "TsIdle"},
- {1 , "TsOffHook"},
- {2 , "TsOnHook"},
- {3 , "TsRingOut"},
- {4 , "TsRingIn"},
- {5 , "TsConnected"},
- {6 , "TsBusy"},
- {7 , "TsCongestion"},
- {8 , "TsHold"},
- {9 , "TsCallWaiting"},
+ { 0 , "TsIdle"},
+ { 1 , "TsOffHook"},
+ { 2 , "TsOnHook"},
+ { 3 , "TsRingOut"},
+ { 4 , "TsRingIn"},
+ { 5 , "TsConnected"},
+ { 6 , "TsBusy"},
+ { 7 , "TsCongestion"},
+ { 8 , "TsHold"},
+ { 9 , "TsCallWaiting"},
{10 , "TsCallTransfer"},
{11 , "TsCallPark"},
{12 , "TsProceed"},
@@ -271,16 +271,16 @@ static const value_string cast_callSecurityStatusTypes[] = {
};
-#define MAX_CUSTOM_PICTURES 6
-#define MAX_SERVICE_TYPE 4
-#define MAX_LAYOUT_WITH_SAME_SERVICE 5
-#define MAX_PICTURE_FORMAT 5
-#define MAX_REFERENCE_PICTURE 4
-#define MAX_LEVEL_PREFERENCE 4
-#define StationMaxVideoCapabilities 10
-#define StationMaxDataCapabilities 5
-#define StationMaxNameSize 40 /* max size of calling party's name */
-#define StationMaxDirnumSize 24 /* max size of calling or called party dirnum */
+#define MAX_CUSTOM_PICTURES 6
+#define MAX_SERVICE_TYPE 4
+#define MAX_LAYOUT_WITH_SAME_SERVICE 5
+#define MAX_PICTURE_FORMAT 5
+#define MAX_REFERENCE_PICTURE 4
+#define MAX_LEVEL_PREFERENCE 4
+#define StationMaxVideoCapabilities 10
+#define StationMaxDataCapabilities 5
+#define StationMaxNameSize 40 /* max size of calling party's name */
+#define StationMaxDirnumSize 24 /* max size of calling or called party dirnum */
static void dissect_cast(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
@@ -392,7 +392,8 @@ static gboolean cast_desegment = TRUE;
static dissector_handle_t data_handle;
/* Dissect a single CAST PDU */
-static void dissect_cast_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static void
+dissect_cast_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
int offset = 0;
@@ -462,8 +463,8 @@ static void dissect_cast_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
count = offset+28;
/* total of 120 bytes */
for ( i = 0; i < MAX_CUSTOM_PICTURES; i++ ) {
- ti_sub = proto_tree_add_text(cast_tree, tvb, offset, 20, "customPictureFormat[%d]", i);
- cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
+ ti_sub = proto_tree_add_text(cast_tree, tvb, offset, 20, "customPictureFormat[%d]", i);
+ cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
proto_tree_add_item(cast_sub_tree, hf_cast_pictureWidth, tvb, count, 4, ENC_LITTLE_ENDIAN);
count+= 4;
proto_tree_add_item(cast_sub_tree, hf_cast_pictureHeight, tvb, count, 4, ENC_LITTLE_ENDIAN);
@@ -492,8 +493,8 @@ static void dissect_cast_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
count+= 4;
cast_sub_tree_sav_sav = cast_sub_tree_sav;
for ( t = 0; t < MAX_LAYOUT_WITH_SAME_SERVICE; t++ ) {
- ti_sub = proto_tree_add_text(cast_sub_tree_sav, tvb, offset, 20, "layouts[%d]", t);
- cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
+ ti_sub = proto_tree_add_text(cast_sub_tree_sav, tvb, offset, 20, "layouts[%d]", t);
+ cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
proto_tree_add_item(cast_sub_tree, hf_cast_layout, tvb, count, 4, ENC_LITTLE_ENDIAN);
count+= 4;
}
@@ -661,8 +662,8 @@ static void dissect_cast_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
proto_tree_add_item(cast_tree, hf_cast_DSCPValue, tvb, offset+44, 4, ENC_LITTLE_ENDIAN);
/* add video part of union */
- ti_sub = proto_tree_add_text(cast_tree, tvb, offset, 30, "videoParameters");
- cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
+ ti_sub = proto_tree_add_text(cast_tree, tvb, offset, 30, "videoParameters");
+ cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
proto_tree_add_item(cast_sub_tree, hf_cast_bitRate, tvb, offset+48, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(cast_sub_tree, hf_cast_pictureFormatCount, tvb, offset+52, 4, ENC_LITTLE_ENDIAN);
cast_sub_tree_sav = cast_sub_tree;
@@ -1033,7 +1034,8 @@ static void dissect_cast_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
}
/* Get the length of a single CAST PDU */
-static guint get_cast_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
+static guint
+get_cast_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
{
guint32 hdr_data_length;
@@ -1050,7 +1052,8 @@ static guint get_cast_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
}
/* Code to actually dissect the packets */
-static void dissect_cast(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static void
+dissect_cast(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
/* The general structure of a packet: {IP-Header|TCP-Header|n*CAST}
* CAST-Packet: {Header(Size, Reserved)|Data(MessageID, Message-Data)}
@@ -1088,647 +1091,647 @@ proto_register_cast(void)
static hf_register_info hf[] = {
{ &hf_cast_data_length,
{ "Data Length", "cast.data_length",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Number of bytes in the data portion.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of bytes in the data portion.",
+ HFILL }
},
{ &hf_cast_reserved,
{ "Marker", "cast.marker",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- "Marker value should ne zero.",
- HFILL }
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "Marker value should ne zero.",
+ HFILL }
},
/* FIXME: Enable use of message name ??? */
{ &hf_cast_messageid,
{ "Message ID", "cast.messageid",
- FT_UINT32, BASE_HEX, VALS(message_id), 0x0,
- "The function requested/done with this message.",
- HFILL }
+ FT_UINT32, BASE_HEX, VALS(message_id), 0x0,
+ "The function requested/done with this message.",
+ HFILL }
},
{ &hf_cast_version,
{ "Version", "cast.version",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The version in the keepalive version messages.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The version in the keepalive version messages.",
+ HFILL }
},
{ &hf_cast_ORCStatus,
{ "ORCStatus", "cast.ORCStatus",
- FT_UINT32, BASE_DEC, VALS(orcStatus), 0x0,
- "The status of the opened receive channel.",
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(orcStatus), 0x0,
+ "The status of the opened receive channel.",
+ HFILL }
},
{ &hf_cast_ipAddress,
{ "IP Address", "cast.ipAddress",
- FT_IPv4, BASE_NONE, NULL, 0x0,
- "An IP address",
- HFILL }
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ "An IP address",
+ HFILL }
},
{ &hf_cast_portNumber,
{ "Port Number", "cast.portNumber",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "A port number",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "A port number",
+ HFILL }
},
{ &hf_cast_passThruPartyID,
{ "PassThruPartyID", "cast.passThruPartyID",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The pass thru party id",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The pass thru party id",
+ HFILL }
},
{ &hf_cast_callIdentifier,
{ "Call Identifier", "cast.callIdentifier",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Call identifier for this call.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Call identifier for this call.",
+ HFILL }
},
{ &hf_cast_conferenceID,
{ "Conference ID", "cast.conferenceID",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The conference ID",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The conference ID",
+ HFILL }
},
{ &hf_cast_payloadType,
{ "PayloadType", "cast.payloadType",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "PayloadType.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "PayloadType.",
+ HFILL }
},
{ &hf_cast_lineInstance,
{ "Line Instance", "cast.lineInstance",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The display call plane associated with this call.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The display call plane associated with this call.",
+ HFILL }
},
{ &hf_cast_payloadCapability,
{ "PayloadCapability", "cast.payloadCapability",
- FT_UINT32, BASE_DEC, VALS(mediaPayloads), 0x0,
- "The payload capability for this media capability structure.",
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(mediaPayloads), 0x0,
+ "The payload capability for this media capability structure.",
+ HFILL }
},
{ &hf_cast_isConferenceCreator,
{ "IsConferenceCreator", "cast.isConferenceCreator",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "IsConferenceCreator.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "IsConferenceCreator.",
+ HFILL }
},
{ &hf_cast_payload_rfc_number,
{ "Payload_rfc_number", "cast.payload_rfc_number",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Payload_rfc_number.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Payload_rfc_number.",
+ HFILL }
},
{ &hf_cast_videoCapCount,
{ "VideoCapCount", "cast.videoCapCount",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "VideoCapCount.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "VideoCapCount.",
+ HFILL }
},
{ &hf_cast_dataCapCount,
{ "DataCapCount", "cast.dataCapCount",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "DataCapCount.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "DataCapCount.",
+ HFILL }
},
{ &hf_cast_RTPPayloadFormat,
{ "RTPPayloadFormat", "cast.RTPPayloadFormat",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "RTPPayloadFormat.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "RTPPayloadFormat.",
+ HFILL }
},
{ &hf_cast_customPictureFormatCount,
{ "CustomPictureFormatCount", "cast.customPictureFormatCount",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "CustomPictureFormatCount.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "CustomPictureFormatCount.",
+ HFILL }
},
{ &hf_cast_pictureWidth,
{ "PictureWidth", "cast.pictureWidth",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "PictureWidth.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "PictureWidth.",
+ HFILL }
},
{ &hf_cast_pictureHeight,
{ "PictureHeight", "cast.pictureHeight",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "PictureHeight.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "PictureHeight.",
+ HFILL }
},
{ &hf_cast_pixelAspectRatio,
{ "PixelAspectRatio", "cast.pixelAspectRatio",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "PixelAspectRatio.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "PixelAspectRatio.",
+ HFILL }
},
{ &hf_cast_clockConversionCode,
{ "ClockConversionCode", "cast.clockConversionCode",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "ClockConversionCode.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "ClockConversionCode.",
+ HFILL }
},
{ &hf_cast_clockDivisor,
{ "ClockDivisor", "cast.clockDivisor",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Clock Divisor.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Clock Divisor.",
+ HFILL }
},
{ &hf_cast_activeStreamsOnRegistration,
{ "ActiveStreamsOnRegistration", "cast.activeStreamsOnRegistration",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "ActiveStreamsOnRegistration.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "ActiveStreamsOnRegistration.",
+ HFILL }
},
{ &hf_cast_maxBW,
{ "MaxBW", "cast.maxBW",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "MaxBW.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "MaxBW.",
+ HFILL }
},
{ &hf_cast_serviceResourceCount,
{ "ServiceResourceCount", "cast.serviceResourceCount",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "ServiceResourceCount.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "ServiceResourceCount.",
+ HFILL }
},
{ &hf_cast_layoutCount,
{ "LayoutCount", "cast.layoutCount",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "LayoutCount.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "LayoutCount.",
+ HFILL }
},
{ &hf_cast_layout,
{ "Layout", "cast.layout",
- FT_UINT32, BASE_DEC, VALS(cast_Layouts), 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(cast_Layouts), 0x0,
+ NULL,
+ HFILL }
},
{ &hf_cast_maxConferences,
{ "MaxConferences", "cast.maxConferences",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "MaxConferences.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "MaxConferences.",
+ HFILL }
},
{ &hf_cast_activeConferenceOnRegistration,
{ "ActiveConferenceOnRegistration", "cast.activeConferenceOnRegistration",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "ActiveConferenceOnRegistration.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "ActiveConferenceOnRegistration.",
+ HFILL }
},
{ &hf_cast_transmitOrReceive,
{ "TransmitOrReceive", "cast.transmitOrReceive",
- FT_UINT32, BASE_DEC, VALS(cast_transmitOrReceive), 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(cast_transmitOrReceive), 0x0,
+ NULL,
+ HFILL }
},
{ &hf_cast_levelPreferenceCount,
{ "LevelPreferenceCount", "cast.levelPreferenceCount",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "LevelPreferenceCount.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "LevelPreferenceCount.",
+ HFILL }
},
{ &hf_cast_transmitPreference,
{ "TransmitPreference", "cast.transmitPreference",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "TransmitPreference.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "TransmitPreference.",
+ HFILL }
},
{ &hf_cast_format,
{ "Format", "cast.format",
- FT_UINT32, BASE_DEC, VALS(cast_formatTypes), 0x0,
- "Format.",
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(cast_formatTypes), 0x0,
+ "Format.",
+ HFILL }
},
{ &hf_cast_maxBitRate,
{ "MaxBitRate", "cast.maxBitRate",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "MaxBitRate.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "MaxBitRate.",
+ HFILL }
},
{ &hf_cast_minBitRate,
{ "MinBitRate", "cast.minBitRate",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "MinBitRate.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "MinBitRate.",
+ HFILL }
},
{ &hf_cast_MPI,
{ "MPI", "cast.MPI",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "MPI.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "MPI.",
+ HFILL }
},
{ &hf_cast_serviceNumber,
{ "ServiceNumber", "cast.serviceNumber",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "ServiceNumber.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "ServiceNumber.",
+ HFILL }
},
{ &hf_cast_temporalSpatialTradeOffCapability,
{ "TemporalSpatialTradeOffCapability", "cast.temporalSpatialTradeOffCapability",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "TemporalSpatialTradeOffCapability.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "TemporalSpatialTradeOffCapability.",
+ HFILL }
},
{ &hf_cast_stillImageTransmission,
{ "StillImageTransmission", "cast.stillImageTransmission",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "StillImageTransmission.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "StillImageTransmission.",
+ HFILL }
},
{ &hf_cast_h263_capability_bitfield,
{ "H263_capability_bitfield", "cast.h263_capability_bitfield",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "H263_capability_bitfield.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "H263_capability_bitfield.",
+ HFILL }
},
{ &hf_cast_annexNandWFutureUse,
{ "AnnexNandWFutureUse", "cast.annexNandWFutureUse",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "AnnexNandWFutureUse.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "AnnexNandWFutureUse.",
+ HFILL }
},
{ &hf_cast_modelNumber,
{ "ModelNumber", "cast.modelNumber",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "ModelNumber.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "ModelNumber.",
+ HFILL }
},
{ &hf_cast_bandwidth,
{ "Bandwidth", "cast.bandwidth",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Bandwidth.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Bandwidth.",
+ HFILL }
},
{ &hf_cast_protocolDependentData,
{ "ProtocolDependentData", "cast.protocolDependentData",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "ProtocolDependentData.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "ProtocolDependentData.",
+ HFILL }
},
{ &hf_cast_DSCPValue,
{ "DSCPValue", "cast.DSCPValue",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "DSCPValue.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "DSCPValue.",
+ HFILL }
},
{ &hf_cast_serviceNum,
{ "ServiceNum", "cast.serviceNum",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "ServiceNum.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "ServiceNum.",
+ HFILL }
},
{ &hf_cast_precedenceValue,
{ "Precedence", "cast.precedenceValue",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Precedence value",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Precedence value",
+ HFILL }
},
{ &hf_cast_maxStreams,
{ "MaxStreams", "cast.maxStreams",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "32 bit unsigned integer indicating the maximum number of simultansous RTP duplex streams that the client can handle.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "32 bit unsigned integer indicating the maximum number of simultansous RTP duplex streams that the client can handle.",
+ HFILL }
},
{ &hf_cast_millisecondPacketSize,
{ "MS/Packet", "cast.millisecondPacketSize",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The number of milliseconds of conversation in each packet",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The number of milliseconds of conversation in each packet",
+ HFILL }
},
{ &hf_cast_echoCancelType,
{ "Echo Cancel Type", "cast.echoCancelType",
- FT_UINT32, BASE_DEC, VALS(cast_echoCancelTypes), 0x0,
- "Is echo cancelling enabled or not",
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(cast_echoCancelTypes), 0x0,
+ "Is echo cancelling enabled or not",
+ HFILL }
},
{ &hf_cast_g723BitRate,
{ "G723 BitRate", "cast.g723BitRate",
- FT_UINT32, BASE_DEC, VALS(cast_g723BitRates), 0x0,
- "The G723 bit rate for this stream/JUNK if not g723 stream",
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(cast_g723BitRates), 0x0,
+ "The G723 bit rate for this stream/JUNK if not g723 stream",
+ HFILL }
},
{ &hf_cast_pictureFormatCount,
{ "PictureFormatCount", "cast.pictureFormatCount",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "PictureFormatCount.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "PictureFormatCount.",
+ HFILL }
},
{ &hf_cast_confServiceNum,
{ "ConfServiceNum", "cast.confServiceNum",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "ConfServiceNum.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "ConfServiceNum.",
+ HFILL }
},
{ &hf_cast_miscCommandType,
{ "MiscCommandType", "cast.miscCommandType",
- FT_UINT32, BASE_DEC, VALS(cast_miscCommandType), 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(cast_miscCommandType), 0x0,
+ NULL,
+ HFILL }
},
{ &hf_cast_temporalSpatialTradeOff,
{ "TemporalSpatialTradeOff", "cast.temporalSpatialTradeOff",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "TemporalSpatialTradeOff.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "TemporalSpatialTradeOff.",
+ HFILL }
},
{ &hf_cast_firstGOB,
{ "FirstGOB", "cast.firstGOB",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "FirstGOB.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "FirstGOB.",
+ HFILL }
},
{ &hf_cast_numberOfGOBs,
{ "NumberOfGOBs", "cast.numberOfGOBs",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "NumberOfGOBs.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "NumberOfGOBs.",
+ HFILL }
},
{ &hf_cast_firstMB,
{ "FirstMB", "cast.firstMB",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "FirstMB.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "FirstMB.",
+ HFILL }
},
{ &hf_cast_numberOfMBs,
{ "NumberOfMBs", "cast.numberOfMBs",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "NumberOfMBs.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "NumberOfMBs.",
+ HFILL }
},
{ &hf_cast_pictureNumber,
{ "PictureNumber", "cast.pictureNumber",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "PictureNumber.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "PictureNumber.",
+ HFILL }
},
{ &hf_cast_longTermPictureIndex,
{ "LongTermPictureIndex", "cast.longTermPictureIndex",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "LongTermPictureIndex.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "LongTermPictureIndex.",
+ HFILL }
},
{ &hf_cast_recoveryReferencePictureCount,
{ "RecoveryReferencePictureCount", "cast.recoveryReferencePictureCount",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "RecoveryReferencePictureCount.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "RecoveryReferencePictureCount.",
+ HFILL }
},
{ &hf_cast_calledParty,
{ "CalledParty", "cast.calledParty",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The number called.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The number called.",
+ HFILL }
},
{ &hf_cast_privacy,
{ "Privacy", "cast.privacy",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Privacy.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Privacy.",
+ HFILL }
},
{ &hf_cast_precedenceLv,
{ "PrecedenceLv", "cast.precedenceLv",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Precedence Level.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Precedence Level.",
+ HFILL }
},
{ &hf_cast_precedenceDm,
{ "PrecedenceDm", "cast.precedenceDm",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Precedence Domain.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Precedence Domain.",
+ HFILL }
},
{ &hf_cast_callState,
{ "CallState", "cast.callState",
- FT_UINT32, BASE_DEC, VALS(cast_callStateTypes), 0x0,
- "CallState.",
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(cast_callStateTypes), 0x0,
+ "CallState.",
+ HFILL }
},
{ &hf_cast_callingPartyName,
{ "Calling Party Name", "cast.callingPartyName",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The passed name of the calling party.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The passed name of the calling party.",
+ HFILL }
},
{ &hf_cast_callingParty,
{ "Calling Party", "cast.callingParty",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The passed number of the calling party.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The passed number of the calling party.",
+ HFILL }
},
{ &hf_cast_calledPartyName,
{ "Called Party Name", "cast.calledPartyName",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The name of the party we are calling.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The name of the party we are calling.",
+ HFILL }
},
{ &hf_cast_callType,
{ "Call Type", "cast.callType",
- FT_UINT32, BASE_DEC, VALS(cast_callTypes), 0x0,
- "What type of call, in/out/etc",
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(cast_callTypes), 0x0,
+ "What type of call, in/out/etc",
+ HFILL }
},
{ &hf_cast_originalCalledPartyName,
{ "Original Called Party Name", "cast.originalCalledPartyName",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "name of the original person who placed the call.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "name of the original person who placed the call.",
+ HFILL }
},
{ &hf_cast_originalCalledParty,
{ "Original Called Party", "cast.originalCalledParty",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The number of the original calling party.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The number of the original calling party.",
+ HFILL }
},
{ &hf_cast_lastRedirectingPartyName,
{ "LastRedirectingPartyName", "cast.lastRedirectingPartyName",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "LastRedirectingPartyName.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "LastRedirectingPartyName.",
+ HFILL }
},
{ &hf_cast_lastRedirectingParty,
{ "LastRedirectingParty", "cast.lastRedirectingParty",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "LastRedirectingParty.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "LastRedirectingParty.",
+ HFILL }
},
{ &hf_cast_cgpnVoiceMailbox,
{ "CgpnVoiceMailbox", "cast.cgpnVoiceMailbox",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "CgpnVoiceMailbox.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "CgpnVoiceMailbox.",
+ HFILL }
},
{ &hf_cast_cdpnVoiceMailbox,
{ "CdpnVoiceMailbox", "cast.cdpnVoiceMailbox",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "CdpnVoiceMailbox.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "CdpnVoiceMailbox.",
+ HFILL }
},
{ &hf_cast_originalCdpnVoiceMailbox,
{ "OriginalCdpnVoiceMailbox", "cast.originalCdpnVoiceMailbox",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "OriginalCdpnVoiceMailbox.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "OriginalCdpnVoiceMailbox.",
+ HFILL }
},
{ &hf_cast_lastRedirectingVoiceMailbox,
{ "LastRedirectingVoiceMailbox", "cast.lastRedirectingVoiceMailbox",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "LastRedirectingVoiceMailbox.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "LastRedirectingVoiceMailbox.",
+ HFILL }
},
{ &hf_cast_originalCdpnRedirectReason,
{ "OriginalCdpnRedirectReason", "cast.originalCdpnRedirectReason",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "OriginalCdpnRedirectReason.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "OriginalCdpnRedirectReason.",
+ HFILL }
},
{ &hf_cast_lastRedirectingReason,
{ "LastRedirectingReason", "cast.lastRedirectingReason",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "LastRedirectingReason.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "LastRedirectingReason.",
+ HFILL }
},
{ &hf_cast_callInstance,
{ "CallInstance", "cast.callInstance",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "CallInstance.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "CallInstance.",
+ HFILL }
},
{ &hf_cast_callSecurityStatus,
{ "CallSecurityStatus", "cast.callSecurityStatus",
- FT_UINT32, BASE_DEC, VALS(cast_callSecurityStatusTypes), 0x0,
- "CallSecurityStatus.",
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(cast_callSecurityStatusTypes), 0x0,
+ "CallSecurityStatus.",
+ HFILL }
},
{ &hf_cast_directoryNumber,
{ "Directory Number", "cast.directoryNumber",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The number we are reporting statistics for.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The number we are reporting statistics for.",
+ HFILL }
},
{ &hf_cast_requestorIpAddress,
{ "RequestorIpAddress", "cast.requestorIpAddress",
- FT_IPv4, BASE_NONE, NULL, 0x0,
- NULL,
- HFILL }
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_cast_stationIpAddress,
{ "StationIpAddress", "cast.stationIpAddress",
- FT_IPv4, BASE_NONE, NULL, 0x0,
- NULL,
- HFILL }
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_cast_stationFriendlyName,
{ "StationFriendlyName", "cast.stationFriendlyName",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "StationFriendlyName.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "StationFriendlyName.",
+ HFILL }
},
{ &hf_cast_stationGUID,
{ "stationGUID", "cast.stationGUID",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "stationGUID.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "stationGUID.",
+ HFILL }
},
{ &hf_cast_audio,
{ "AudioCodec", "cast.audio",
- FT_UINT32, BASE_DEC, VALS(audioCodecTypes), 0x0,
- "The audio codec that is in use.",
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(audioCodecTypes), 0x0,
+ "The audio codec that is in use.",
+ HFILL }
},
{ &hf_cast_bitRate,
{ "BitRate", "cast.bitRate",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "BitRate.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "BitRate.",
+ HFILL }
},
};
@@ -1743,9 +1746,8 @@ proto_register_cast(void)
/* Register the protocol name and description */
proto_cast = proto_register_protocol("Cast Client Control Protocol",
- "CAST", "cast");
+ "CAST", "cast");
- /* Required function calls to register the header fields and subtrees used */
proto_register_field_array(proto_cast, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
diff --git a/epan/dissectors/packet-catapult-dct2000.c b/epan/dissectors/packet-catapult-dct2000.c
index f1db29c19b..637dcdd6bb 100644
--- a/epan/dissectors/packet-catapult-dct2000.c
+++ b/epan/dissectors/packet-catapult-dct2000.c
@@ -32,6 +32,7 @@
#include <ctype.h>
#include <epan/packet.h>
+#include <epan/conversation.h>
#include <epan/expert.h>
#include <epan/emem.h>
#include <epan/ipproto.h>
@@ -102,6 +103,16 @@ static int hf_catapult_dct2000_lte_ccpri_opcode = -1;
static int hf_catapult_dct2000_lte_ccpri_status = -1;
static int hf_catapult_dct2000_lte_ccpri_channel = -1;
+static int hf_catapult_dct2000_lte_monitor_cpu_user = -1;
+static int hf_catapult_dct2000_lte_monitor_cpu_sys = -1;
+static int hf_catapult_dct2000_lte_monitor_cpu_load = -1;
+
+static int hf_catapult_dct2000_lte_nas_rrc_opcode = -1;
+static int hf_catapult_dct2000_lte_nas_rrc_establish_cause = -1;
+static int hf_catapult_dct2000_lte_nas_rrc_priority = -1;
+static int hf_catapult_dct2000_lte_nas_rrc_release_cause = -1;
+
+
/* UMTS RLC fields */
static int hf_catapult_dct2000_ueid = -1;
static int hf_catapult_dct2000_rbid = -1;
@@ -256,6 +267,20 @@ static const value_string transport_channel_type_vals[] = {
{ 0, NULL}
};
+#define LTE_NAS_RRC_DATA_IND 0x02
+#define LTE_NAS_RRC_DATA_REQ 0x03
+#define LTE_NAS_RRC_ESTABLISH_REQ 0x06
+#define LTE_NAS_RRC_RELEASE_IND 0x08
+
+static const value_string lte_nas_rrc_opcode_vals[] = {
+ { LTE_NAS_RRC_DATA_IND, "Data-Ind"},
+ { LTE_NAS_RRC_DATA_REQ, "Data-Req"},
+ { LTE_NAS_RRC_ESTABLISH_REQ, "Establish-Req"},
+ { LTE_NAS_RRC_RELEASE_IND, "Release-Ind"},
+ { 0, NULL}
+};
+
+
#define MAX_OUTHDR_VALUES 32
@@ -313,7 +338,7 @@ static gboolean find_ipprim_data_offset(tvbuff_t *tvb, int *data_offset, guint8
guint16 *conn_id_offset)
{
guint8 length;
- int offset = *data_offset;
+ int offset = *data_offset;
/* Get the ipprim command code. */
guint8 tag = tvb_get_guint8(tvb, offset++);
@@ -493,9 +518,9 @@ static gboolean find_sctpprim_variant3_data_offset(tvbuff_t *tvb, int *data_offs
guint16 *dest_addr_length,
guint32 *dest_port_offset)
{
- guint16 tag = 0;
+ guint16 tag = 0;
guint16 length = 0;
- int offset = *data_offset;
+ int offset = *data_offset;
/* Get the sctpprim (2 byte) command code. */
guint16 top_tag = tvb_get_ntohs(tvb, offset);
@@ -683,13 +708,13 @@ static void dissect_rlc_umts(tvbuff_t *tvb, gint offset,
packet_info *pinfo, proto_tree *tree,
gboolean is_sent)
{
- guint8 tag;
- gboolean ueid_set = FALSE, rbid_set=FALSE;
- guint32 ueid = 0;
- guint8 rbid = 0;
- guint8 length;
- tvbuff_t *rlc_tvb;
- dissector_handle_t rlc_umts_handle = 0;
+ guint8 tag;
+ gboolean ueid_set = FALSE, rbid_set=FALSE;
+ guint32 ueid = 0;
+ guint8 rbid = 0;
+ guint8 length;
+ tvbuff_t *rlc_tvb;
+ dissector_handle_t rlc_umts_handle = 0;
/* Top-level opcode */
tag = tvb_get_guint8(tvb, offset++);
@@ -820,13 +845,13 @@ static void dissect_rlc_umts(tvbuff_t *tvb, gint offset,
static void dissect_rrc_lte(tvbuff_t *tvb, gint offset,
packet_info *pinfo, proto_tree *tree)
{
- guint8 tag;
- dissector_handle_t protocol_handle = 0;
- gboolean isUplink = FALSE;
- LogicalChannelType logicalChannelType;
- guint16 cell_id;
- guint8 bcch_transport = 0;
- tvbuff_t *rrc_tvb;
+ guint8 tag;
+ dissector_handle_t protocol_handle = 0;
+ gboolean isUplink = FALSE;
+ LogicalChannelType logicalChannelType;
+ guint16 cell_id;
+ guint8 bcch_transport = 0;
+ tvbuff_t *rrc_tvb;
/* Top-level opcode */
tag = tvb_get_guint8(tvb, offset++);
@@ -1016,11 +1041,11 @@ static void dissect_rrc_lte(tvbuff_t *tvb, gint offset,
static void dissect_ccpri_lte(tvbuff_t *tvb, gint offset,
packet_info *pinfo, proto_tree *tree)
{
- guint8 opcode;
- guint8 tag;
- tvbuff_t *ccpri_tvb;
- dissector_handle_t protocol_handle = 0;
- guint16 length;
+ guint8 opcode;
+ guint8 tag;
+ tvbuff_t *ccpri_tvb;
+ dissector_handle_t protocol_handle = 0;
+ guint16 length;
/* Top-level opcode */
proto_tree_add_item(tree, hf_catapult_dct2000_lte_ccpri_opcode, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1081,12 +1106,12 @@ static void dissect_ccpri_lte(tvbuff_t *tvb, gint offset,
static void dissect_pdcp_lte(tvbuff_t *tvb, gint offset,
packet_info *pinfo, proto_tree *tree)
{
- guint8 opcode;
- guint8 tag;
- struct pdcp_lte_info *p_pdcp_lte_info = NULL;
- tvbuff_t *pdcp_lte_tvb;
- guint16 ueid;
- guint8 channelId;
+ guint8 opcode;
+ guint8 tag;
+ struct pdcp_lte_info *p_pdcp_lte_info = NULL;
+ tvbuff_t *pdcp_lte_tvb;
+ guint16 ueid;
+ guint8 channelId;
/* Look this up so can update channel info */
p_pdcp_lte_info = p_get_proto_data(pinfo->fd, proto_pdcp_lte);
@@ -1373,7 +1398,7 @@ static dissector_handle_t look_for_dissector(const char *protocol_name)
/* Populate outhdr_values array with numbers found in outhdr_string */
static void parse_outhdr_string(const guchar *outhdr_string)
{
- int n = 0;
+ int n = 0;
guint outhdr_string_len = (guint)strlen((const gchar*)outhdr_string);
/* Populate values array */
@@ -1613,8 +1638,9 @@ static void attach_fp_info(packet_info *pinfo, gboolean received, const char *pr
static void attach_rlc_info(packet_info *pinfo, guint32 urnti, guint8 rbid, gboolean is_sent)
{
/* Only need to set info once per session. */
- struct fp_info *p_fp_info = p_get_proto_data(pinfo->fd, proto_fp);
+ struct fp_info *p_fp_info;
struct rlc_info *p_rlc_info = p_get_proto_data(pinfo->fd, proto_rlc);
+
if (p_rlc_info != NULL) {
return;
}
@@ -1686,7 +1712,7 @@ static void attach_rlc_info(packet_info *pinfo, guint32 urnti, guint8 rbid, gboo
static void attach_mac_lte_info(packet_info *pinfo)
{
struct mac_lte_info *p_mac_lte_info;
- unsigned int i=0;
+ unsigned int i = 0;
/* Only need to set info once per session. */
p_mac_lte_info = get_mac_lte_proto_data(pinfo);
@@ -1793,6 +1819,11 @@ static void attach_mac_lte_info(packet_info *pinfo)
p_mac_lte_info->isPHICHNACK = outhdr_values[i];
}
+ if (p_mac_lte_info->direction == DIRECTION_UPLINK) {
+ /* R10 parameter not set yet */
+ p_mac_lte_info->isExtendedBSRSizes = FALSE;
+ }
+
/* Store info in packet */
set_mac_lte_proto_data(pinfo, p_mac_lte_info);
}
@@ -1803,7 +1834,7 @@ static void attach_mac_lte_info(packet_info *pinfo)
static void attach_rlc_lte_info(packet_info *pinfo)
{
struct rlc_lte_info *p_rlc_lte_info;
- unsigned int i=0;
+ unsigned int i = 0;
/* Only need to set info once per session. */
p_rlc_lte_info = p_get_proto_data(pinfo->fd, proto_rlc_lte);
@@ -1832,7 +1863,7 @@ static void attach_rlc_lte_info(packet_info *pinfo)
static void attach_pdcp_lte_info(packet_info *pinfo)
{
struct pdcp_lte_info *p_pdcp_lte_info;
- unsigned int i=0;
+ unsigned int i = 0;
/* Only need to set info once per session. */
p_pdcp_lte_info = p_get_proto_data(pinfo->fd, proto_pdcp_lte);
@@ -1870,8 +1901,8 @@ static void attach_pdcp_lte_info(packet_info *pinfo)
static void dissect_tty_lines(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
gint next_offset;
- proto_tree *tty_tree;
- proto_item *ti;
+ proto_tree *tty_tree;
+ proto_item *ti;
int lines = 0;
/* Create tty tree. */
@@ -1933,15 +1964,15 @@ static void dissect_tty_lines(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
static void check_for_oob_mac_lte_events(packet_info *pinfo, tvbuff_t *tvb, proto_tree *tree,
const char *string)
{
- guint number_of_ues;
- guint ueids[MAX_SRs];
- guint rntis[MAX_SRs];
- guint rapid;
- guint rach_attempt_number;
- mac_lte_oob_event oob_event;
+ guint number_of_ues;
+ guint ueids[MAX_SRs];
+ guint rntis[MAX_SRs];
+ guint rapid;
+ guint rach_attempt_number;
+ mac_lte_oob_event oob_event;
struct mac_lte_info *p_mac_lte_info;
- tvbuff_t *mac_lte_tvb = NULL;
- guint16 n;
+ tvbuff_t *mac_lte_tvb = NULL;
+ guint16 n;
/* Look for strings matching expected formats */
if (sscanf(string, ">> RACH Preamble Request[UE = %u] [RAPID = %u] [Attempt = %u]",
@@ -1980,7 +2011,11 @@ static void check_for_oob_mac_lte_events(packet_info *pinfo, tvbuff_t *tvb, prot
}
/* Read this entry */
- sscanf(current_position, "[UE=%u][RNTI=%u]", &ueids[n], &rntis[n]);
+ if (sscanf(current_position, "[UE=%u][RNTI=%u]", &ueids[n], &rntis[n]) != 2) {
+ /* Assuming that if we can't read this one there is no point trying others */
+ number_of_ues = n;
+ break;
+ }
}
}
}
@@ -2045,27 +2080,27 @@ static void check_for_oob_mac_lte_events(packet_info *pinfo, tvbuff_t *tvb, prot
static void
dissect_catapult_dct2000(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *dct2000_tree = NULL;
- proto_item *ti = NULL;
- gint offset = 0;
- gint context_length;
- const char *context_name;
- guint8 port_number;
- gint protocol_length;
- gint timestamp_length;
- const char *timestamp_string;
- gint variant_length;
- const char *variant_string;
- gint outhdr_length;
- const char *outhdr_string;
- guint8 direction;
- tvbuff_t *next_tvb;
- int encap;
- dissector_handle_t protocol_handle = 0;
- dissector_handle_t heur_protocol_handle = 0;
- int sub_dissector_result = 0;
- const char *protocol_name;
- gboolean is_comment;
+ proto_tree *dct2000_tree = NULL;
+ proto_item *ti = NULL;
+ gint offset = 0;
+ gint context_length;
+ const char *context_name;
+ guint8 port_number;
+ gint protocol_length;
+ gint timestamp_length;
+ const char *timestamp_string;
+ gint variant_length;
+ const char *variant_string;
+ gint outhdr_length;
+ const char *outhdr_string;
+ guint8 direction;
+ tvbuff_t *next_tvb;
+ int encap;
+ dissector_handle_t protocol_handle = 0;
+ dissector_handle_t heur_protocol_handle = 0;
+ int sub_dissector_result = 0;
+ const char *protocol_name;
+ gboolean is_comment;
/* Set Protocol */
col_set_str(pinfo->cinfo, COL_PROTOCOL, "DCT2000");
@@ -2216,37 +2251,52 @@ dissect_catapult_dct2000(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
else if ((strcmp(protocol_name, "nas_rrc_r8_lte") == 0) ||
(strcmp(protocol_name, "nas_rrc_r9_lte") == 0)) {
gboolean nas_body_found = TRUE;
- guint8 opcode = tvb_get_guint8(tvb, offset++);
+ guint8 opcode = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_catapult_dct2000_lte_nas_rrc_opcode,
+ tvb, offset++, 1, ENC_BIG_ENDIAN);
+
+ offset++; /* Skip overall length */
+
switch (opcode) {
- case 2: /* DATA IND */
- case 3: /* DATA REQ */
+ case LTE_NAS_RRC_DATA_IND:
+ case LTE_NAS_RRC_DATA_REQ:
/* UEId */
- offset += 2; /* tag */
- offset += 2; /* 2 wasted bytes */
+ offset++; /* tag */
+ offset += 2; /* 2 wasted bytes of UEId*/
proto_tree_add_item(tree, hf_catapult_dct2000_lte_ueid,
tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
break;
- case 6: /* ESTABLISH REQ */
+ case LTE_NAS_RRC_ESTABLISH_REQ:
/* UEId */
- offset += 2; /* tag */
- offset += 2; /* 2 wasted bytes */
+ offset++; /* tag */
+ offset += 2; /* 2 wasted bytes of UEId*/
proto_tree_add_item(tree, hf_catapult_dct2000_lte_ueid,
tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
- offset += 3; /* Establish cause */
- offset += 3; /* Priority */
+ /* Establish cause. TODO: value_string */
+ offset += 2; /* tag + length */
+ proto_tree_add_item(tree, hf_catapult_dct2000_lte_nas_rrc_establish_cause,
+ tvb, offset++, 1, ENC_BIG_ENDIAN);
+
+ /* Priority. TODO: Vals are low | high */
+ offset += 2; /* tag + length */
+ proto_tree_add_item(tree, hf_catapult_dct2000_lte_nas_rrc_priority,
+ tvb, offset++, 1, ENC_BIG_ENDIAN);
break;
- case 8: /* RELEASE IND */
+ case LTE_NAS_RRC_RELEASE_IND:
/* UEId */
- offset += 2; /* tag */
- offset += 2; /* 2 wasted bytes */
+ offset++; /* tag */
+ offset += 2; /* 2 wasted bytes of UEId*/
proto_tree_add_item(tree, hf_catapult_dct2000_lte_ueid,
tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
- offset += 3; /* Release cause */
+ /* Release cause. TODO: value_string */
+ offset += 2; /* tag + length */
+ proto_tree_add_item(tree, hf_catapult_dct2000_lte_nas_rrc_release_cause,
+ tvb, offset++, 1, ENC_BIG_ENDIAN);
break;
default:
@@ -2424,6 +2474,29 @@ dissect_catapult_dct2000(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
expert_add_info_format(pinfo, string_ti, PI_SEQUENCE, PI_ERROR,
"%s", string);
}
+
+ #define MONITOR_PREFIX ">> INFO ALL: Monitor: CPU=["
+ if (strncmp(string, MONITOR_PREFIX, strlen(MONITOR_PREFIX)) == 0) {
+ gint user_cpu, sys_cpu, load_cpu;
+ int matched;
+ matched = sscanf(string+strlen(MONITOR_PREFIX),
+ "User%%=%d Sys%%=%d Load%%=%d",
+ &user_cpu, &sys_cpu, &load_cpu);
+ if (matched == 3) {
+ ti = proto_tree_add_uint(tree, hf_catapult_dct2000_lte_monitor_cpu_user,
+ tvb, 0, 0, user_cpu);
+ PROTO_ITEM_SET_GENERATED(ti);
+
+ ti = proto_tree_add_uint(tree, hf_catapult_dct2000_lte_monitor_cpu_sys,
+ tvb, 0, 0, sys_cpu);
+ PROTO_ITEM_SET_GENERATED(ti);
+
+ ti = proto_tree_add_uint(tree, hf_catapult_dct2000_lte_monitor_cpu_load,
+ tvb, 0, 0, load_cpu);
+ PROTO_ITEM_SET_GENERATED(ti);
+ }
+ }
+
return;
}
@@ -3105,6 +3178,51 @@ void proto_register_catapult_dct2000(void)
}
},
+ { &hf_catapult_dct2000_lte_monitor_cpu_user,
+ { "User CPU",
+ "dct2000.lte.monitor.cpu.user", FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_catapult_dct2000_lte_monitor_cpu_sys,
+ { "Sys CPU",
+ "dct2000.lte.monitor.cpu.sys", FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_catapult_dct2000_lte_monitor_cpu_load,
+ { "Load CPU",
+ "dct2000.lte.monitor.cpu.load", FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+
+ { &hf_catapult_dct2000_lte_nas_rrc_opcode,
+ { "NAS RRC Opcode",
+ "dct2000.lte.nas-rrc.opcode", FT_UINT8, BASE_DEC, VALS(lte_nas_rrc_opcode_vals), 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_catapult_dct2000_lte_nas_rrc_establish_cause,
+ { "Establish Cause",
+ "dct2000.lte.nas-rrc.establish-cause", FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_catapult_dct2000_lte_nas_rrc_priority,
+ { "Priority",
+ "dct2000.lte.nas-rrc.priority", FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_catapult_dct2000_lte_nas_rrc_release_cause,
+ { "Priority",
+ "dct2000.lte.nas-rrc.priority", FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+
+
{ &hf_catapult_dct2000_ueid,
{ "UE Id",
"dct2000.ueid", FT_UINT32, BASE_DEC, NULL, 0x0,
@@ -3167,7 +3285,7 @@ void proto_register_catapult_dct2000(void)
},
{ &hf_catapult_dct2000_last_in_seg_set,
{ "Last in seg set",
- "dct2000.last-in-seg-set", FT_BOOLEAN, BASE_DEC, TFS(&tfs_yes_no), 0x0,
+ "dct2000.last-in-seg-set", FT_BOOLEAN, BASE_NONE, TFS(&tfs_yes_no), 0x0,
NULL, HFILL
}
},
diff --git a/epan/dissectors/packet-ccsds.c b/epan/dissectors/packet-ccsds.c
index c7f64a7e3d..37293eeace 100644
--- a/epan/dissectors/packet-ccsds.c
+++ b/epan/dissectors/packet-ccsds.c
@@ -28,9 +28,8 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/expert.h>
#include <epan/prefs.h>
diff --git a/epan/dissectors/packet-cdp.c b/epan/dissectors/packet-cdp.c
index 18331cbc25..84294ea715 100644
--- a/epan/dissectors/packet-cdp.c
+++ b/epan/dissectors/packet-cdp.c
@@ -27,7 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
#include <string.h>
#include <glib.h>
@@ -42,20 +41,20 @@
/*
* See
*
- * http://www.cisco.com/univercd/cc/td/doc/product/lan/trsrb/frames.htm#xtocid12
+ * http://www.cisco.com/univercd/cc/td/doc/product/lan/trsrb/frames.htm#xtocid12
*
* for some information on CDP.
*
* See
*
- * http://www.cisco.com/en/US/products/hw/switches/ps663/products_tech_note09186a0080094713.shtml#cdp
+ * http://www.cisco.com/en/US/products/hw/switches/ps663/products_tech_note09186a0080094713.shtml#cdp
*
* for some more information on CDP version 2.
*/
/* Offsets in TLV structure. */
-#define TLV_TYPE 0
-#define TLV_LENGTH 2
+#define TLV_TYPE 0
+#define TLV_LENGTH 2
static int proto_cdp = -1;
static int hf_cdp_version = -1;
@@ -92,13 +91,13 @@ static void
add_multi_line_string_to_tree(proto_tree *tree, tvbuff_t *tvb, gint start,
gint len, const gchar *prefix);
-#define TYPE_DEVICE_ID 0x0001
-#define TYPE_ADDRESS 0x0002
-#define TYPE_PORT_ID 0x0003
-#define TYPE_CAPABILITIES 0x0004
-#define TYPE_IOS_VERSION 0x0005
-#define TYPE_PLATFORM 0x0006
-#define TYPE_IP_PREFIX 0x0007
+#define TYPE_DEVICE_ID 0x0001
+#define TYPE_ADDRESS 0x0002
+#define TYPE_PORT_ID 0x0003
+#define TYPE_CAPABILITIES 0x0004
+#define TYPE_IOS_VERSION 0x0005
+#define TYPE_PLATFORM 0x0006
+#define TYPE_IP_PREFIX 0x0007
#define TYPE_PROTOCOL_HELLO 0x0008 /* Protocol Hello */
#define TYPE_VTP_MGMT_DOMAIN 0x0009 /* VTP Domain, CTPv2 - see second URL */
#define TYPE_NATIVE_VLAN 0x000a /* Native VLAN, CTPv2 - see second URL */
@@ -123,54 +122,54 @@ add_multi_line_string_to_tree(proto_tree *tree, tvbuff_t *tvb, gint start,
#define TYPE_SPARE_POE 0x001f /* Spare Pair PoE */
static const value_string type_vals[] = {
- { TYPE_DEVICE_ID, "Device ID" },
- { TYPE_ADDRESS, "Addresses" },
- { TYPE_PORT_ID, "Port ID" },
- { TYPE_CAPABILITIES, "Capabilities" },
- { TYPE_IOS_VERSION, "Software version" },
- { TYPE_PLATFORM, "Platform" },
- { TYPE_IP_PREFIX, "IP Prefix/Gateway (used for ODR)" },
- { TYPE_PROTOCOL_HELLO, "Protocol Hello" },
- { TYPE_VTP_MGMT_DOMAIN, "VTP Management Domain" },
- { TYPE_NATIVE_VLAN, "Native VLAN" },
- { TYPE_DUPLEX, "Duplex" },
- { TYPE_VOIP_VLAN_REPLY, "VoIP VLAN Reply" },
- { TYPE_VOIP_VLAN_QUERY, "VoIP VLAN Query" },
- { TYPE_POWER, "Power consumption" },
- { TYPE_MTU, "MTU"},
- { TYPE_TRUST_BITMAP, "Trust Bitmap" },
- { TYPE_UNTRUSTED_COS, "Untrusted Port CoS" },
- { TYPE_SYSTEM_NAME, "System Name" },
- { TYPE_SYSTEM_OID, "System Object ID" },
- { TYPE_MANAGEMENT_ADDR, "Management Address" },
- { TYPE_LOCATION, "Location" },
- { TYPE_EXT_PORT_ID, "External Port-ID" },
- { TYPE_POWER_REQUESTED, "Power Requested" },
- { TYPE_POWER_AVAILABLE, "Power Available" },
- { TYPE_PORT_UNIDIR, "Port Unidirectional" },
- { TYPE_NRGYZ, "EnergyWise" },
- { TYPE_SPARE_POE, "Spare PoE" },
- { 0, NULL }
+ { TYPE_DEVICE_ID, "Device ID" },
+ { TYPE_ADDRESS, "Addresses" },
+ { TYPE_PORT_ID, "Port ID" },
+ { TYPE_CAPABILITIES, "Capabilities" },
+ { TYPE_IOS_VERSION, "Software version" },
+ { TYPE_PLATFORM, "Platform" },
+ { TYPE_IP_PREFIX, "IP Prefix/Gateway (used for ODR)" },
+ { TYPE_PROTOCOL_HELLO, "Protocol Hello" },
+ { TYPE_VTP_MGMT_DOMAIN, "VTP Management Domain" },
+ { TYPE_NATIVE_VLAN, "Native VLAN" },
+ { TYPE_DUPLEX, "Duplex" },
+ { TYPE_VOIP_VLAN_REPLY, "VoIP VLAN Reply" },
+ { TYPE_VOIP_VLAN_QUERY, "VoIP VLAN Query" },
+ { TYPE_POWER, "Power consumption" },
+ { TYPE_MTU, "MTU"},
+ { TYPE_TRUST_BITMAP, "Trust Bitmap" },
+ { TYPE_UNTRUSTED_COS, "Untrusted Port CoS" },
+ { TYPE_SYSTEM_NAME, "System Name" },
+ { TYPE_SYSTEM_OID, "System Object ID" },
+ { TYPE_MANAGEMENT_ADDR, "Management Address" },
+ { TYPE_LOCATION, "Location" },
+ { TYPE_EXT_PORT_ID, "External Port-ID" },
+ { TYPE_POWER_REQUESTED, "Power Requested" },
+ { TYPE_POWER_AVAILABLE, "Power Available" },
+ { TYPE_PORT_UNIDIR, "Port Unidirectional" },
+ { TYPE_NRGYZ, "EnergyWise" },
+ { TYPE_SPARE_POE, "Spare PoE" },
+ { 0, NULL }
};
#define TYPE_HELLO_CLUSTER_MGMT 0x0112
static const value_string type_hello_vals[] = {
- { TYPE_HELLO_CLUSTER_MGMT, "Cluster Management" },
- { 0, NULL }
+ { TYPE_HELLO_CLUSTER_MGMT, "Cluster Management" },
+ { 0, NULL }
};
-#define TYPE_NRGYZ_ROLE 0x00000007
-#define TYPE_NRGYZ_DOMAIN 0x00000008
-#define TYPE_NRGYZ_NAME 0x00000009
-#define TYPE_NRGYZ_REPLYTO 0x00000017
+#define TYPE_NRGYZ_ROLE 0x00000007
+#define TYPE_NRGYZ_DOMAIN 0x00000008
+#define TYPE_NRGYZ_NAME 0x00000009
+#define TYPE_NRGYZ_REPLYTO 0x00000017
static const value_string type_nrgyz_vals[] = {
- { TYPE_NRGYZ_ROLE, "Role" },
- { TYPE_NRGYZ_DOMAIN, "Domain" },
- { TYPE_NRGYZ_NAME, "Name" },
- { TYPE_NRGYZ_REPLYTO, "Reply To" },
- { 0, NULL }
+ { TYPE_NRGYZ_ROLE, "Role" },
+ { TYPE_NRGYZ_DOMAIN, "Domain" },
+ { TYPE_NRGYZ_NAME, "Name" },
+ { TYPE_NRGYZ_REPLYTO, "Reply To" },
+ { 0, NULL }
};
static void
@@ -178,38 +177,38 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_item *ti, *checksum_item;
proto_tree *cdp_tree = NULL, *checksum_tree;
- int offset = 0;
- guint16 type;
- guint16 length, packet_checksum, computed_checksum, data_length;
- gboolean checksum_good, checksum_bad;
- proto_item *tlvi = NULL;
+ int offset = 0;
+ guint16 type;
+ guint16 length, packet_checksum, computed_checksum, data_length;
+ gboolean checksum_good, checksum_bad;
+ proto_item *tlvi = NULL;
proto_tree *tlv_tree = NULL;
- int real_length;
- guint32 naddresses;
- guint32 power_avail_len, power_avail;
- guint32 power_req_len, power_req;
- int addr_length;
- guint32 ip_addr;
- vec_t cksum_vec[1];
+ int real_length;
+ guint32 naddresses;
+ guint32 power_avail_len, power_avail;
+ guint32 power_req_len, power_req;
+ int addr_length;
+ guint32 ip_addr;
+ vec_t cksum_vec[1];
col_set_str(pinfo->cinfo, COL_PROTOCOL, "CDP");
col_clear(pinfo->cinfo, COL_INFO);
if (tree) {
ti = proto_tree_add_item(tree, proto_cdp, tvb, offset, -1, ENC_NA);
- cdp_tree = proto_item_add_subtree(ti, ett_cdp);
+ cdp_tree = proto_item_add_subtree(ti, ett_cdp);
- /* CDP header */
- proto_tree_add_item(cdp_tree, hf_cdp_version, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset += 1;
+ /* CDP header */
+ proto_tree_add_item(cdp_tree, hf_cdp_version, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
- proto_tree_add_uint_format_value(cdp_tree, hf_cdp_ttl, tvb, offset, 1,
- tvb_get_guint8(tvb, offset),
- "%u seconds",
- tvb_get_guint8(tvb, offset));
- offset += 1;
+ proto_tree_add_uint_format_value(cdp_tree, hf_cdp_ttl, tvb, offset, 1,
+ tvb_get_guint8(tvb, offset),
+ "%u seconds",
+ tvb_get_guint8(tvb, offset));
+ offset += 1;
} else {
- offset += 2; /* The version/ttl fields from above */
+ offset += 2; /* The version/ttl fields from above */
}
/* Checksum display & verification code */
@@ -256,686 +255,685 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
checksum_bad = !checksum_good;
if (checksum_good) {
checksum_item = proto_tree_add_uint_format(cdp_tree,
- hf_cdp_checksum, tvb, offset, 2, packet_checksum,
- "Checksum: 0x%04x [correct]", packet_checksum);
+ hf_cdp_checksum, tvb, offset, 2, packet_checksum,
+ "Checksum: 0x%04x [correct]", packet_checksum);
} else {
- checksum_item = proto_tree_add_uint_format(cdp_tree,
- hf_cdp_checksum, tvb, offset, 2, packet_checksum,
- "Checksum: 0x%04x [incorrect, should be 0x%04x]",
- packet_checksum,
- in_cksum_shouldbe(packet_checksum, computed_checksum));
+ checksum_item = proto_tree_add_uint_format(cdp_tree,
+ hf_cdp_checksum, tvb, offset, 2, packet_checksum,
+ "Checksum: 0x%04x [incorrect, should be 0x%04x]",
+ packet_checksum,
+ in_cksum_shouldbe(packet_checksum, computed_checksum));
}
checksum_tree = proto_item_add_subtree(checksum_item, ett_cdp_checksum);
checksum_item = proto_tree_add_boolean(checksum_tree, hf_cdp_checksum_good,
- tvb, offset, 2, checksum_good);
+ tvb, offset, 2, checksum_good);
PROTO_ITEM_SET_GENERATED(checksum_item);
checksum_item = proto_tree_add_boolean(checksum_tree, hf_cdp_checksum_bad,
- tvb, offset, 2, checksum_bad);
+ tvb, offset, 2, checksum_bad);
PROTO_ITEM_SET_GENERATED(checksum_item);
offset += 2;
while (tvb_reported_length_remaining(tvb, offset) != 0) {
- type = tvb_get_ntohs(tvb, offset + TLV_TYPE);
- length = tvb_get_ntohs(tvb, offset + TLV_LENGTH);
- if (length < 4) {
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb, offset, 4,
- "TLV with invalid length %u (< 4)",
- length);
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- }
- offset += 4;
- break;
- }
-
- switch (type) {
-
- case TYPE_DEVICE_ID:
- /* Device ID */
-
- col_append_fstr(pinfo->cinfo, COL_INFO,
- "Device ID: %s ",
- tvb_format_stringzpad(tvb, offset + 4, length - 4));
-
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb, offset,
- length, "Device ID: %s",
- tvb_format_stringzpad(tvb, offset + 4, length - 4));
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_deviceid, tvb, offset + 4, length - 4, ENC_ASCII|ENC_NA);
- }
- offset += length;
- break;
-
- case TYPE_PORT_ID:
- real_length = length;
- if (tvb_get_guint8(tvb, offset + real_length) != 0x00) {
- /* The length in the TLV doesn't appear to be the
- length of the TLV, as the byte just past it
- isn't the first byte of a 2-byte big-endian
- small integer; make the length of the TLV the length
- in the TLV, plus 4 bytes for the TLV type and length,
- minus 1 because that's what makes one capture work. */
- real_length = length + 3;
- }
-
- col_append_fstr(pinfo->cinfo, COL_INFO,
- "Port ID: %s ",
- tvb_format_stringzpad(tvb, offset + 4,
- length - 4));
-
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb, offset,
- real_length, "Port ID: %s",
- tvb_format_text(tvb, offset + 4, real_length - 4));
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_portid, tvb, offset + 4, real_length - 4, ENC_ASCII|ENC_NA);
- }
- offset += real_length;
- break;
-
- case TYPE_ADDRESS:
- /* Addresses */
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb, offset,
- length, "Addresses");
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- }
- offset += 4;
- length -= 4;
- naddresses = tvb_get_ntohl(tvb, offset);
- if (tree) {
- proto_tree_add_text(tlv_tree, tvb, offset, 4,
- "Number of addresses: %u", naddresses);
- }
- offset += 4;
- length -= 4;
- while (naddresses != 0) {
- addr_length = dissect_address_tlv(tvb, offset, length,
- tlv_tree);
- if (addr_length < 0)
- break;
- offset += addr_length;
- length -= addr_length;
-
- naddresses--;
- }
- offset += length;
- break;
-
- case TYPE_CAPABILITIES:
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb, offset,
- length, "Capabilities");
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- }
- offset += 4;
- length -= 4;
- dissect_capabilities(tvb, offset, length, tlv_tree);
- offset += length;
- break;
-
- case TYPE_IOS_VERSION:
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb, offset,
- length, "Software Version");
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- add_multi_line_string_to_tree(tlv_tree, tvb, offset + 4,
- length - 4, "Software Version: ");
- }
- offset += length;
- break;
-
- case TYPE_PLATFORM:
- /* ??? platform */
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb,
- offset, length, "Platform: %s",
- tvb_format_text(tvb, offset + 4, length - 4));
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_platform, tvb, offset + 4, length - 4, ENC_ASCII|ENC_NA);
- }
- offset += length;
- break;
-
- case TYPE_IP_PREFIX:
- if (length == 8) {
- /* if length is 8 then this is default gw not prefix */
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb, offset,
- length, "ODR Default gateway: %s",
- tvb_ip_to_str(tvb, offset+4));
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- proto_tree_add_text(tlv_tree, tvb, offset+4, 4,
- "ODR Default gateway = %s",
- tvb_ip_to_str(tvb, offset+4));
- }
- offset += 8;
- } else {
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb, offset,
- length, "IP Prefixes: %d",length/5);
-
- /* the actual number of prefixes is (length-4)/5
- but if the variable is not a "float" but "integer"
- then length/5=(length-4)/5 :) */
-
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- }
- offset += 4;
- length -= 4;
- while (length > 0) {
- if (tree) {
- proto_tree_add_text(tlv_tree, tvb, offset, 5,
- "IP Prefix = %s/%u",
- tvb_ip_to_str(tvb, offset),
- tvb_get_guint8(tvb,offset+4));
- }
- offset += 5;
- length -= 5;
- }
- }
- break;
-
- case TYPE_PROTOCOL_HELLO:
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb,
- offset,length, "Protocol Hello: %s",
- val_to_str(tvb_get_ntohs(tvb, offset+7), type_hello_vals, "Unknown (0x%04x)"));
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- proto_tree_add_text(tlv_tree, tvb, offset+4, 3,
- "OUI: 0x%06X (%s)",
- tvb_get_ntoh24(tvb,offset+4),
- val_to_str(tvb_get_ntoh24(tvb,offset+4), oui_vals, "Unknown"));
- proto_tree_add_text(tlv_tree, tvb, offset+7, 2,
- "Protocol ID: 0x%04X (%s)",
- tvb_get_ntohs(tvb, offset+7),
- val_to_str(tvb_get_ntohs(tvb, offset+7), type_hello_vals, "Unknown"));
-
- switch(tvb_get_ntohs(tvb, offset+7)) {
-
- case TYPE_HELLO_CLUSTER_MGMT:
- /* proto_tree_add_text(tlv_tree, tvb, offset+9,
- length - 9, "Cluster Management");
- */
- ip_addr = tvb_get_ipv4(tvb, offset+9);
- proto_tree_add_text(tlv_tree, tvb, offset+9, 4,
- "Cluster Master IP: %s",ip_to_str((guint8 *)&ip_addr));
- ip_addr = tvb_get_ipv4(tvb, offset+13);
- proto_tree_add_text(tlv_tree, tvb, offset+13, 4,
- "UNKNOWN (IP?): 0x%08X (%s)",
- ip_addr, ip_to_str((guint8 *)&ip_addr));
- proto_tree_add_text(tlv_tree, tvb, offset+17, 1,
- "Version?: 0x%02X",
- tvb_get_guint8(tvb, offset+17));
- proto_tree_add_text(tlv_tree, tvb, offset+18, 1,
- "Sub Version?: 0x%02X",
- tvb_get_guint8(tvb, offset+18));
- proto_tree_add_text(tlv_tree, tvb, offset+19, 1,
- "Status?: 0x%02X",
- tvb_get_guint8(tvb, offset+19));
- proto_tree_add_text(tlv_tree, tvb, offset+20, 1,
- "UNKNOWN: 0x%02X",
- tvb_get_guint8(tvb, offset+20));
- proto_tree_add_text(tlv_tree, tvb, offset+21, 6,
- "Cluster Commander MAC: %s",
- tvb_ether_to_str(tvb, offset+21));
- proto_tree_add_text(tlv_tree, tvb, offset+27, 6,
- "Switch's MAC: %s",
- tvb_ether_to_str(tvb, offset+27));
- proto_tree_add_text(tlv_tree, tvb, offset+33, 1,
- "UNKNOWN: 0x%02X",
- tvb_get_guint8(tvb, offset+33));
- proto_tree_add_text(tlv_tree, tvb, offset+34, 2,
- "Management VLAN: %d",
- tvb_get_ntohs(tvb, offset+34));
- break;
- default:
- proto_tree_add_text(tlv_tree, tvb, offset + 9,
- length - 9, "Unknown");
- break;
- }
- }
- offset += length;
- break;
-
- case TYPE_VTP_MGMT_DOMAIN:
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb,
- offset, length, "VTP Management Domain: %s",
- tvb_format_text(tvb, offset + 4, length - 4));
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- proto_tree_add_text(tlv_tree, tvb, offset + 4,
- length - 4, "VTP Management Domain: %s",
- tvb_format_text(tvb, offset + 4, length - 4));
- }
- offset += length;
- break;
-
- case TYPE_NATIVE_VLAN:
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb,
- offset, length, "Native VLAN: %u",
- tvb_get_ntohs(tvb, offset + 4));
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- proto_tree_add_text(tlv_tree, tvb, offset + 4,
- length - 4, "Native VLAN: %u",
- tvb_get_ntohs(tvb, offset + 4));
- }
- offset += length;
- break;
-
- case TYPE_DUPLEX:
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb,
- offset, length, "Duplex: %s",
- tvb_get_guint8(tvb, offset + 4) ?
- "Full" : "Half" );
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- proto_tree_add_text(tlv_tree, tvb, offset + 4,
- length - 4, "Duplex: %s",
- tvb_get_guint8(tvb, offset + 4) ?
- "Full" : "Half" );
- }
- offset += length;
- break;
-
- case TYPE_VOIP_VLAN_REPLY:
- if (tree) {
- if (length >= 7) {
- tlvi = proto_tree_add_text(cdp_tree, tvb, offset, length,
- "VoIP VLAN Reply: %u", tvb_get_ntohs(tvb, offset + 5));
- } else {
- /*
- * XXX - what are these? I've seen them in some captures;
- * they have a length of 6, and run up to the end of
- * the packet, so if we try to dissect it the same way
- * we dissect the 7-byte ones, we report a malformed
- * frame.
- */
- tlvi = proto_tree_add_text(cdp_tree, tvb,
- offset, length, "VoIP VLAN Reply");
- }
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- proto_tree_add_text(tlv_tree, tvb, offset + 4,
- 1, "Data");
- if (length >= 7) {
- proto_tree_add_text(tlv_tree, tvb, offset + 5,
- 2, "Voice VLAN: %u",
- tvb_get_ntohs(tvb, offset + 5));
- }
- }
- offset += length;
- break;
-
- case TYPE_VOIP_VLAN_QUERY:
- if (tree) {
- if (length >= 7) {
- tlvi = proto_tree_add_text(cdp_tree, tvb,
- offset, length, "VoIP VLAN Query: %u", tvb_get_ntohs(tvb, offset + 5));
- } else {
- /*
- * XXX - what are these? I've seen them in some captures;
- * they have a length of 6, and run up to the end of
- * the packet, so if we try to dissect it the same way
- * we dissect the 7-byte ones, we report a malformed
- * frame.
- */
- tlvi = proto_tree_add_text(cdp_tree, tvb,
- offset, length, "VoIP VLAN Query");
- }
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- proto_tree_add_text(tlv_tree, tvb, offset + 4,
- 1, "Data");
- if (length >= 7) {
- proto_tree_add_text(tlv_tree, tvb, offset + 5,
- 2, "Voice VLAN: %u",
- tvb_get_ntohs(tvb, offset + 5));
- }
- }
- offset += length;
- break;
-
- case TYPE_POWER:
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb,
- offset, length, "Power Consumption: %u mW",
- tvb_get_ntohs(tvb, offset + 4));
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- proto_tree_add_text(tlv_tree, tvb, offset + 4,
- length - 4, "Power Consumption: %u mW",
- tvb_get_ntohs(tvb, offset + 4));
- }
- offset += length;
- break;
-
- case TYPE_MTU:
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb,
- offset, length, "MTU: %u",
- tvb_get_ntohl(tvb,offset + 4));
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- proto_tree_add_text(tlv_tree, tvb, offset + 4,
- length - 4, "MTU: %u",
- tvb_get_ntohl(tvb,offset + 4));
- }
- offset += length;
- break;
-
- case TYPE_TRUST_BITMAP:
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb,
- offset, length, "Trust Bitmap: 0x%02X",
- tvb_get_guint8(tvb, offset + 4));
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- proto_tree_add_text(tlv_tree, tvb, offset + 4,
- length - 4, "Trust Bitmap: %02x",
- tvb_get_guint8(tvb, offset + 4));
- }
- offset += length;
- break;
-
- case TYPE_UNTRUSTED_COS:
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb,
- offset, length, "Untrusted port CoS: 0x%02X",
- tvb_get_guint8(tvb, offset + 4));
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- proto_tree_add_text(tlv_tree, tvb, offset + 4,
- length - 4, "Untrusted port CoS: %02x",
- tvb_get_guint8(tvb, offset + 4));
- }
- offset += length;
- break;
-
- case TYPE_SYSTEM_NAME:
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb,
- offset, length, "System Name: %s",
- tvb_format_text(tvb, offset + 4, length - 4));
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- proto_tree_add_text(tlv_tree, tvb, offset + 4,
- length - 4, "System Name: %s",
- tvb_format_text(tvb, offset + 4, length - 4));
- }
- offset += length;
- break;
-
- case TYPE_SYSTEM_OID:
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb,
- offset, length, "System Object Identifier");
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- proto_tree_add_text(tlv_tree, tvb, offset + 4,
- length - 4, "System Object Identifier: %s",
- tvb_bytes_to_str(tvb, offset + 4, length - 4));
- }
- offset += length;
- break;
-
- case TYPE_MANAGEMENT_ADDR:
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb,
- offset, length, "Management Addresses");
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- }
- offset += 4;
- length -= 4;
- naddresses = tvb_get_ntohl(tvb, offset);
- if (tree) {
- proto_tree_add_text(tlv_tree, tvb, offset, 4,
- "Number of addresses: %u", naddresses);
- }
- offset += 4;
- length -= 4;
- while (naddresses != 0) {
- addr_length = dissect_address_tlv(tvb, offset, length,
- tlv_tree);
- if (addr_length < 0)
- break;
- offset += addr_length;
- length -= addr_length;
-
- naddresses--;
- }
- offset += length;
- break;
-
- case TYPE_LOCATION:
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb,
- offset, length, "Location: %s",
- tvb_format_text(tvb, offset + 5, length - 5));
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- proto_tree_add_text(tlv_tree, tvb, offset + 4,
- 1 , "UNKNOWN: 0x%02X",
- tvb_get_guint8(tvb, offset + 4));
- proto_tree_add_text(tlv_tree, tvb, offset + 5,
- length - 5, "Location: %s",
- tvb_format_text(tvb, offset + 5, length - 5));
- }
- offset += length;
- break;
-
- case TYPE_POWER_REQUESTED:
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb,
- offset, length, "Power Request: ");
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- proto_tree_add_text(tlv_tree, tvb, offset + 4,
- 2, "Request-ID: %u",
- tvb_get_ntohs(tvb, offset + 4));
- proto_tree_add_text(tlv_tree, tvb, offset + 6,
- 2, "Management-ID: %u",
- tvb_get_ntohs(tvb, offset + 6));
- }
- power_req_len = (tvb_get_ntohs(tvb, offset + TLV_LENGTH)) - 8;
- /* Move offset to where the list of Power Request Values Exist */
- offset += 8;
- while(power_req_len) {
- if (power_req_len > 4) {
- power_req = tvb_get_ntohl(tvb, offset);
- if (tree) {
- proto_tree_add_text(tlv_tree, tvb, offset,
- 4, "Power Requested: %u mW", power_req);
- proto_item_append_text(tlvi, "%u mW, ", power_req);
- }
- power_req_len -= 4;
- offset += 4;
- } else {
- if (power_req_len == 4) {
- power_req = tvb_get_ntohl(tvb, offset);
- if (tree) {
- proto_tree_add_text(tlv_tree, tvb, offset,
- 4, "Power Requested: %u mW", power_req);
- proto_item_append_text(tlvi, "%u mW", power_req);
- }
- }
- offset += power_req_len;
- break;
- }
- }
- break;
-
- case TYPE_POWER_AVAILABLE:
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb,
- offset, length, "Power Available: ");
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- proto_tree_add_text(tlv_tree, tvb, offset + 4,
- 2, "Request-ID: %u",
- tvb_get_ntohs(tvb, offset + 4));
- proto_tree_add_text(tlv_tree, tvb, offset + 6,
- 2, "Management-ID: %u",
- tvb_get_ntohs(tvb, offset + 6));
- }
- power_avail_len = (tvb_get_ntohs(tvb, offset + TLV_LENGTH)) - 8;
- /* Move offset to where the list of Power Available Values Exist */
- offset += 8;
- while(power_avail_len) {
- if (power_avail_len >= 4) {
- power_avail = tvb_get_ntohl(tvb, offset);
- if (tree) {
- proto_tree_add_text(tlv_tree, tvb, offset,
- 4, "Power Available: %u mW", power_avail);
- proto_item_append_text(tlvi, "%u mW, ", power_avail);
- }
- power_avail_len -= 4;
- offset += 4;
- } else {
- offset += power_avail_len;
- break;
- }
- }
- break;
-
- case TYPE_NRGYZ:
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb,
- offset, length, "EnergyWise");
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- proto_tree_add_text(tlv_tree, tvb, offset + 4,
- 20, "Encrypted Data");
- proto_tree_add_text(tlv_tree, tvb, offset + 24,
- 4, "Unknown (Seen Sequence?): %u",
- tvb_get_ntohl(tvb, offset + 24));
- proto_tree_add_text(tlv_tree, tvb, offset + 28,
- 4, "Sequence Number: %u",
- tvb_get_ntohl(tvb, offset + 28));
- proto_tree_add_text(tlv_tree, tvb, offset + 32,
- 16, "Model Number: %s",
- tvb_format_stringzpad(tvb, offset + 32, 16));
- proto_tree_add_text(tlv_tree, tvb, offset + 48,
- 2, "Unknown Pad: %x",
- tvb_get_ntohs(tvb, offset + 48));
- proto_tree_add_text(tlv_tree, tvb, offset + 50,
- 3, "Hardware Version ID: %s",
- tvb_format_stringzpad(tvb, offset + 50, 3));
- proto_tree_add_text(tlv_tree, tvb, offset + 53,
- 11, "System Serial Number: %s",
- tvb_format_stringzpad(tvb, offset + 53, 11));
- proto_tree_add_text(tlv_tree, tvb, offset + 64,
- 8, "Unknown Values");
- proto_tree_add_text(tlv_tree, tvb, offset + 72,
- 2, "Length of TLV table: %u",
- tvb_get_ntohs(tvb, offset + 72));
- proto_tree_add_text(tlv_tree, tvb, offset + 74,
- 2, "Number of TLVs in table: %u",
- tvb_get_ntohs(tvb, offset + 74));
+ type = tvb_get_ntohs(tvb, offset + TLV_TYPE);
+ length = tvb_get_ntohs(tvb, offset + TLV_LENGTH);
+ if (length < 4) {
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb, offset, 4,
+ "TLV with invalid length %u (< 4)",
+ length);
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ }
+ offset += 4;
+ break;
+ }
+
+ switch (type) {
+
+ case TYPE_DEVICE_ID:
+ /* Device ID */
+
+ col_append_fstr(pinfo->cinfo, COL_INFO,
+ "Device ID: %s ",
+ tvb_format_stringzpad(tvb, offset + 4, length - 4));
+
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb, offset,
+ length, "Device ID: %s",
+ tvb_format_stringzpad(tvb, offset + 4, length - 4));
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_deviceid, tvb, offset + 4, length - 4, ENC_ASCII|ENC_NA);
+ }
+ offset += length;
+ break;
+
+ case TYPE_PORT_ID:
+ real_length = length;
+ if (tvb_get_guint8(tvb, offset + real_length) != 0x00) {
+ /* The length in the TLV doesn't appear to be the
+ length of the TLV, as the byte just past it
+ isn't the first byte of a 2-byte big-endian
+ small integer; make the length of the TLV the length
+ in the TLV, plus 4 bytes for the TLV type and length,
+ minus 1 because that's what makes one capture work. */
+ real_length = length + 3;
+ }
+
+ col_append_fstr(pinfo->cinfo, COL_INFO,
+ "Port ID: %s ",
+ tvb_format_stringzpad(tvb, offset + 4,
+ length - 4));
+
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb, offset,
+ real_length, "Port ID: %s",
+ tvb_format_text(tvb, offset + 4, real_length - 4));
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_portid, tvb, offset + 4, real_length - 4, ENC_ASCII|ENC_NA);
+ }
+ offset += real_length;
+ break;
+
+ case TYPE_ADDRESS:
+ /* Addresses */
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb, offset,
+ length, "Addresses");
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ }
+ offset += 4;
+ length -= 4;
+ naddresses = tvb_get_ntohl(tvb, offset);
+ if (tree) {
+ proto_tree_add_text(tlv_tree, tvb, offset, 4,
+ "Number of addresses: %u", naddresses);
+ }
+ offset += 4;
+ length -= 4;
+ while (naddresses != 0) {
+ addr_length = dissect_address_tlv(tvb, offset, length,
+ tlv_tree);
+ if (addr_length < 0)
+ break;
+ offset += addr_length;
+ length -= addr_length;
+
+ naddresses--;
+ }
+ offset += length;
+ break;
+
+ case TYPE_CAPABILITIES:
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb, offset,
+ length, "Capabilities");
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ }
+ offset += 4;
+ length -= 4;
+ dissect_capabilities(tvb, offset, length, tlv_tree);
+ offset += length;
+ break;
+
+ case TYPE_IOS_VERSION:
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb, offset,
+ length, "Software Version");
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ add_multi_line_string_to_tree(tlv_tree, tvb, offset + 4,
+ length - 4, "Software Version: ");
+ }
+ offset += length;
+ break;
+
+ case TYPE_PLATFORM:
+ /* ??? platform */
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb,
+ offset, length, "Platform: %s",
+ tvb_format_text(tvb, offset + 4, length - 4));
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_platform, tvb, offset + 4, length - 4, ENC_ASCII|ENC_NA);
+ }
+ offset += length;
+ break;
+
+ case TYPE_IP_PREFIX:
+ if (length == 8) {
+ /* if length is 8 then this is default gw not prefix */
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb, offset,
+ length, "ODR Default gateway: %s",
+ tvb_ip_to_str(tvb, offset+4));
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_text(tlv_tree, tvb, offset+4, 4,
+ "ODR Default gateway = %s",
+ tvb_ip_to_str(tvb, offset+4));
+ }
+ offset += 8;
+ } else {
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb, offset,
+ length, "IP Prefixes: %d",length/5);
+
+ /* the actual number of prefixes is (length-4)/5
+ but if the variable is not a "float" but "integer"
+ then length/5=(length-4)/5 :) */
+
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ }
+ offset += 4;
+ length -= 4;
+ while (length > 0) {
+ if (tree) {
+ proto_tree_add_text(tlv_tree, tvb, offset, 5,
+ "IP Prefix = %s/%u",
+ tvb_ip_to_str(tvb, offset),
+ tvb_get_guint8(tvb,offset+4));
+ }
+ offset += 5;
+ length -= 5;
+ }
+ }
+ break;
+
+ case TYPE_PROTOCOL_HELLO:
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb,
+ offset,length, "Protocol Hello: %s",
+ val_to_str(tvb_get_ntohs(tvb, offset+7), type_hello_vals, "Unknown (0x%04x)"));
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_text(tlv_tree, tvb, offset+4, 3,
+ "OUI: 0x%06X (%s)",
+ tvb_get_ntoh24(tvb,offset+4),
+ val_to_str(tvb_get_ntoh24(tvb,offset+4), oui_vals, "Unknown"));
+ proto_tree_add_text(tlv_tree, tvb, offset+7, 2,
+ "Protocol ID: 0x%04X (%s)",
+ tvb_get_ntohs(tvb, offset+7),
+ val_to_str(tvb_get_ntohs(tvb, offset+7), type_hello_vals, "Unknown"));
+
+ switch(tvb_get_ntohs(tvb, offset+7)) {
+
+ case TYPE_HELLO_CLUSTER_MGMT:
+ /* proto_tree_add_text(tlv_tree, tvb, offset+9,
+ length - 9, "Cluster Management");
+ */
+ ip_addr = tvb_get_ipv4(tvb, offset+9);
+ proto_tree_add_text(tlv_tree, tvb, offset+9, 4,
+ "Cluster Master IP: %s",ip_to_str((guint8 *)&ip_addr));
+ ip_addr = tvb_get_ipv4(tvb, offset+13);
+ proto_tree_add_text(tlv_tree, tvb, offset+13, 4,
+ "UNKNOWN (IP?): 0x%08X (%s)",
+ ip_addr, ip_to_str((guint8 *)&ip_addr));
+ proto_tree_add_text(tlv_tree, tvb, offset+17, 1,
+ "Version?: 0x%02X",
+ tvb_get_guint8(tvb, offset+17));
+ proto_tree_add_text(tlv_tree, tvb, offset+18, 1,
+ "Sub Version?: 0x%02X",
+ tvb_get_guint8(tvb, offset+18));
+ proto_tree_add_text(tlv_tree, tvb, offset+19, 1,
+ "Status?: 0x%02X",
+ tvb_get_guint8(tvb, offset+19));
+ proto_tree_add_text(tlv_tree, tvb, offset+20, 1,
+ "UNKNOWN: 0x%02X",
+ tvb_get_guint8(tvb, offset+20));
+ proto_tree_add_text(tlv_tree, tvb, offset+21, 6,
+ "Cluster Commander MAC: %s",
+ tvb_ether_to_str(tvb, offset+21));
+ proto_tree_add_text(tlv_tree, tvb, offset+27, 6,
+ "Switch's MAC: %s",
+ tvb_ether_to_str(tvb, offset+27));
+ proto_tree_add_text(tlv_tree, tvb, offset+33, 1,
+ "UNKNOWN: 0x%02X",
+ tvb_get_guint8(tvb, offset+33));
+ proto_tree_add_text(tlv_tree, tvb, offset+34, 2,
+ "Management VLAN: %d",
+ tvb_get_ntohs(tvb, offset+34));
+ break;
+ default:
+ proto_tree_add_text(tlv_tree, tvb, offset + 9,
+ length - 9, "Unknown");
+ break;
+ }
+ }
+ offset += length;
+ break;
+
+ case TYPE_VTP_MGMT_DOMAIN:
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb,
+ offset, length, "VTP Management Domain: %s",
+ tvb_format_text(tvb, offset + 4, length - 4));
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_text(tlv_tree, tvb, offset + 4,
+ length - 4, "VTP Management Domain: %s",
+ tvb_format_text(tvb, offset + 4, length - 4));
+ }
+ offset += length;
+ break;
+
+ case TYPE_NATIVE_VLAN:
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb,
+ offset, length, "Native VLAN: %u",
+ tvb_get_ntohs(tvb, offset + 4));
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_text(tlv_tree, tvb, offset + 4,
+ length - 4, "Native VLAN: %u",
+ tvb_get_ntohs(tvb, offset + 4));
+ }
+ offset += length;
+ break;
+
+ case TYPE_DUPLEX:
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb,
+ offset, length, "Duplex: %s",
+ tvb_get_guint8(tvb, offset + 4) ?
+ "Full" : "Half" );
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_text(tlv_tree, tvb, offset + 4,
+ length - 4, "Duplex: %s",
+ tvb_get_guint8(tvb, offset + 4) ?
+ "Full" : "Half" );
+ }
+ offset += length;
+ break;
+
+ case TYPE_VOIP_VLAN_REPLY:
+ if (tree) {
+ if (length >= 7) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb, offset, length,
+ "VoIP VLAN Reply: %u", tvb_get_ntohs(tvb, offset + 5));
+ } else {
+ /*
+ * XXX - what are these? I've seen them in some captures;
+ * they have a length of 6, and run up to the end of
+ * the packet, so if we try to dissect it the same way
+ * we dissect the 7-byte ones, we report a malformed
+ * frame.
+ */
+ tlvi = proto_tree_add_text(cdp_tree, tvb,
+ offset, length, "VoIP VLAN Reply");
+ }
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_text(tlv_tree, tvb, offset + 4,
+ 1, "Data");
+ if (length >= 7) {
+ proto_tree_add_text(tlv_tree, tvb, offset + 5,
+ 2, "Voice VLAN: %u",
+ tvb_get_ntohs(tvb, offset + 5));
+ }
+ }
+ offset += length;
+ break;
+
+ case TYPE_VOIP_VLAN_QUERY:
+ if (tree) {
+ if (length >= 7) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb,
+ offset, length, "VoIP VLAN Query: %u", tvb_get_ntohs(tvb, offset + 5));
+ } else {
+ /*
+ * XXX - what are these? I've seen them in some captures;
+ * they have a length of 6, and run up to the end of
+ * the packet, so if we try to dissect it the same way
+ * we dissect the 7-byte ones, we report a malformed
+ * frame.
+ */
+ tlvi = proto_tree_add_text(cdp_tree, tvb,
+ offset, length, "VoIP VLAN Query");
+ }
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_text(tlv_tree, tvb, offset + 4,
+ 1, "Data");
+ if (length >= 7) {
+ proto_tree_add_text(tlv_tree, tvb, offset + 5,
+ 2, "Voice VLAN: %u",
+ tvb_get_ntohs(tvb, offset + 5));
+ }
+ }
+ offset += length;
+ break;
+
+ case TYPE_POWER:
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb,
+ offset, length, "Power Consumption: %u mW",
+ tvb_get_ntohs(tvb, offset + 4));
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_text(tlv_tree, tvb, offset + 4,
+ length - 4, "Power Consumption: %u mW",
+ tvb_get_ntohs(tvb, offset + 4));
+ }
+ offset += length;
+ break;
+
+ case TYPE_MTU:
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb,
+ offset, length, "MTU: %u",
+ tvb_get_ntohl(tvb,offset + 4));
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_text(tlv_tree, tvb, offset + 4,
+ length - 4, "MTU: %u",
+ tvb_get_ntohl(tvb,offset + 4));
+ }
+ offset += length;
+ break;
+
+ case TYPE_TRUST_BITMAP:
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb,
+ offset, length, "Trust Bitmap: 0x%02X",
+ tvb_get_guint8(tvb, offset + 4));
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_text(tlv_tree, tvb, offset + 4,
+ length - 4, "Trust Bitmap: %02x",
+ tvb_get_guint8(tvb, offset + 4));
+ }
+ offset += length;
+ break;
+
+ case TYPE_UNTRUSTED_COS:
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb,
+ offset, length, "Untrusted port CoS: 0x%02X",
+ tvb_get_guint8(tvb, offset + 4));
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_text(tlv_tree, tvb, offset + 4,
+ length - 4, "Untrusted port CoS: %02x",
+ tvb_get_guint8(tvb, offset + 4));
+ }
+ offset += length;
+ break;
+
+ case TYPE_SYSTEM_NAME:
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb,
+ offset, length, "System Name: %s",
+ tvb_format_text(tvb, offset + 4, length - 4));
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_text(tlv_tree, tvb, offset + 4,
+ length - 4, "System Name: %s",
+ tvb_format_text(tvb, offset + 4, length - 4));
+ }
+ offset += length;
+ break;
+
+ case TYPE_SYSTEM_OID:
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb,
+ offset, length, "System Object Identifier");
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_text(tlv_tree, tvb, offset + 4,
+ length - 4, "System Object Identifier: %s",
+ tvb_bytes_to_str(tvb, offset + 4, length - 4));
+ }
+ offset += length;
+ break;
+
+ case TYPE_MANAGEMENT_ADDR:
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb,
+ offset, length, "Management Addresses");
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ }
+ offset += 4;
+ length -= 4;
+ naddresses = tvb_get_ntohl(tvb, offset);
+ if (tree) {
+ proto_tree_add_text(tlv_tree, tvb, offset, 4,
+ "Number of addresses: %u", naddresses);
+ }
+ offset += 4;
+ length -= 4;
+ while (naddresses != 0) {
+ addr_length = dissect_address_tlv(tvb, offset, length,
+ tlv_tree);
+ if (addr_length < 0)
+ break;
+ offset += addr_length;
+ length -= addr_length;
+
+ naddresses--;
+ }
+ offset += length;
+ break;
+
+ case TYPE_LOCATION:
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb,
+ offset, length, "Location: %s",
+ tvb_format_text(tvb, offset + 5, length - 5));
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_text(tlv_tree, tvb, offset + 4,
+ 1 , "UNKNOWN: 0x%02X",
+ tvb_get_guint8(tvb, offset + 4));
+ proto_tree_add_text(tlv_tree, tvb, offset + 5,
+ length - 5, "Location: %s",
+ tvb_format_text(tvb, offset + 5, length - 5));
+ }
+ offset += length;
+ break;
+
+ case TYPE_POWER_REQUESTED:
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb,
+ offset, length, "Power Request: ");
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_text(tlv_tree, tvb, offset + 4,
+ 2, "Request-ID: %u",
+ tvb_get_ntohs(tvb, offset + 4));
+ proto_tree_add_text(tlv_tree, tvb, offset + 6,
+ 2, "Management-ID: %u",
+ tvb_get_ntohs(tvb, offset + 6));
+ }
+ power_req_len = (tvb_get_ntohs(tvb, offset + TLV_LENGTH)) - 8;
+ /* Move offset to where the list of Power Request Values Exist */
+ offset += 8;
+ while(power_req_len) {
+ if (power_req_len > 4) {
+ power_req = tvb_get_ntohl(tvb, offset);
+ if (tree) {
+ proto_tree_add_text(tlv_tree, tvb, offset,
+ 4, "Power Requested: %u mW", power_req);
+ proto_item_append_text(tlvi, "%u mW, ", power_req);
+ }
+ power_req_len -= 4;
+ offset += 4;
+ } else {
+ if (power_req_len == 4) {
+ power_req = tvb_get_ntohl(tvb, offset);
+ if (tree) {
+ proto_tree_add_text(tlv_tree, tvb, offset,
+ 4, "Power Requested: %u mW", power_req);
+ proto_item_append_text(tlvi, "%u mW", power_req);
+ }
+ }
+ offset += power_req_len;
+ break;
+ }
+ }
+ break;
+
+ case TYPE_POWER_AVAILABLE:
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb,
+ offset, length, "Power Available: ");
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_text(tlv_tree, tvb, offset + 4,
+ 2, "Request-ID: %u",
+ tvb_get_ntohs(tvb, offset + 4));
+ proto_tree_add_text(tlv_tree, tvb, offset + 6,
+ 2, "Management-ID: %u",
+ tvb_get_ntohs(tvb, offset + 6));
+ }
+ power_avail_len = (tvb_get_ntohs(tvb, offset + TLV_LENGTH)) - 8;
+ /* Move offset to where the list of Power Available Values Exist */
+ offset += 8;
+ while(power_avail_len) {
+ if (power_avail_len >= 4) {
+ power_avail = tvb_get_ntohl(tvb, offset);
+ if (tree) {
+ proto_tree_add_text(tlv_tree, tvb, offset,
+ 4, "Power Available: %u mW", power_avail);
+ proto_item_append_text(tlvi, "%u mW, ", power_avail);
+ }
+ power_avail_len -= 4;
+ offset += 4;
+ } else {
+ offset += power_avail_len;
+ break;
+ }
+ }
+ break;
+
+ case TYPE_NRGYZ:
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb,
+ offset, length, "EnergyWise");
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_text(tlv_tree, tvb, offset + 4,
+ 20, "Encrypted Data");
+ proto_tree_add_text(tlv_tree, tvb, offset + 24,
+ 4, "Unknown (Seen Sequence?): %u",
+ tvb_get_ntohl(tvb, offset + 24));
+ proto_tree_add_text(tlv_tree, tvb, offset + 28,
+ 4, "Sequence Number: %u",
+ tvb_get_ntohl(tvb, offset + 28));
+ proto_tree_add_text(tlv_tree, tvb, offset + 32,
+ 16, "Model Number: %s",
+ tvb_format_stringzpad(tvb, offset + 32, 16));
+ proto_tree_add_text(tlv_tree, tvb, offset + 48,
+ 2, "Unknown Pad: %x",
+ tvb_get_ntohs(tvb, offset + 48));
+ proto_tree_add_text(tlv_tree, tvb, offset + 50,
+ 3, "Hardware Version ID: %s",
+ tvb_format_stringzpad(tvb, offset + 50, 3));
+ proto_tree_add_text(tlv_tree, tvb, offset + 53,
+ 11, "System Serial Number: %s",
+ tvb_format_stringzpad(tvb, offset + 53, 11));
+ proto_tree_add_text(tlv_tree, tvb, offset + 64,
+ 8, "Unknown Values");
+ proto_tree_add_text(tlv_tree, tvb, offset + 72,
+ 2, "Length of TLV table: %u",
+ tvb_get_ntohs(tvb, offset + 72));
+ proto_tree_add_text(tlv_tree, tvb, offset + 74,
+ 2, "Number of TLVs in table: %u",
+ tvb_get_ntohs(tvb, offset + 74));
/*
- proto_tree_add_text(tlv_tree, tvb,
- offset + 76, length - 76,
- "EnergyWise TLV Table");
+ proto_tree_add_text(tlv_tree, tvb,
+ offset + 76, length - 76,
+ "EnergyWise TLV Table");
*/
- dissect_nrgyz_tlv(tvb, offset + 76,
- tvb_get_ntohs(tvb, offset + 72),
- tvb_get_ntohs(tvb, offset + 74),
- tlv_tree);
-
-
- }
- offset += length;
- break;
-
- case TYPE_SPARE_POE:
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb, offset, length,
- "Spare Pair PoE");
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
-
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- }
- offset += 4;
- length -= 4;
- dissect_spare_poe_tlv(tvb, offset, length, tlv_tree);
- offset += length;
- break;
-
- default:
- if (tree) {
- tlvi = proto_tree_add_text(cdp_tree, tvb, offset,
- length, "Type: %s, length: %u",
- val_to_str(type, type_vals, "Unknown (0x%04x)"),
- length);
- tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
- if (length > 4) {
- proto_tree_add_text(tlv_tree, tvb, offset + 4,
- length - 4, "Data");
- } else {
- return;
- }
- }
- offset += length;
- }
+ dissect_nrgyz_tlv(tvb, offset + 76,
+ tvb_get_ntohs(tvb, offset + 72),
+ tvb_get_ntohs(tvb, offset + 74),
+ tlv_tree);
+
+
+ }
+ offset += length;
+ break;
+
+ case TYPE_SPARE_POE:
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb, offset, length,
+ "Spare Pair PoE");
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ }
+ offset += 4;
+ length -= 4;
+ dissect_spare_poe_tlv(tvb, offset, length, tlv_tree);
+ offset += length;
+ break;
+
+ default:
+ if (tree) {
+ tlvi = proto_tree_add_text(cdp_tree, tvb, offset,
+ length, "Type: %s, length: %u",
+ val_to_str(type, type_vals, "Unknown (0x%04x)"),
+ length);
+ tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
+ if (length > 4) {
+ proto_tree_add_text(tlv_tree, tvb, offset + 4,
+ length - 4, "Data");
+ } else {
+ return;
+ }
+ }
+ offset += length;
+ }
}
- call_dissector(data_handle, tvb_new_subset_remaining(tvb, offset), pinfo,
- cdp_tree);
+ call_dissector(data_handle, tvb_new_subset_remaining(tvb, offset), pinfo, cdp_tree);
}
-#define PROTO_TYPE_NLPID 1
-#define PROTO_TYPE_IEEE_802_2 2
+#define PROTO_TYPE_NLPID 1
+#define PROTO_TYPE_IEEE_802_2 2
static const value_string proto_type_vals[] = {
- { PROTO_TYPE_NLPID, "NLPID" },
- { PROTO_TYPE_IEEE_802_2, "802.2" },
- { 0, NULL }
+ { PROTO_TYPE_NLPID, "NLPID" },
+ { PROTO_TYPE_IEEE_802_2, "802.2" },
+ { 0, NULL }
};
static int
@@ -943,11 +941,11 @@ dissect_address_tlv(tvbuff_t *tvb, int offset, int length, proto_tree *tree)
{
proto_item *ti;
proto_tree *address_tree;
- guint8 protocol_type;
- guint8 protocol_length;
- int nlpid;
+ guint8 protocol_type;
+ guint8 protocol_length;
+ int nlpid;
const char *protocol_str;
- guint16 address_length;
+ guint16 address_length;
const char *address_type_str;
const char *address_str;
@@ -957,15 +955,15 @@ dissect_address_tlv(tvbuff_t *tvb, int offset, int length, proto_tree *tree)
address_tree = proto_item_add_subtree(ti, ett_cdp_address);
protocol_type = tvb_get_guint8(tvb, offset);
proto_tree_add_text(address_tree, tvb, offset, 1, "Protocol type: %s",
- val_to_str(protocol_type, proto_type_vals, "Unknown (0x%02x)"));
+ val_to_str(protocol_type, proto_type_vals, "Unknown (0x%02x)"));
offset += 1;
length -= 1;
if (length < 1)
- return -1;
+ return -1;
protocol_length = tvb_get_guint8(tvb, offset);
proto_tree_add_text(address_tree, tvb, offset, 1, "Protocol length: %u",
- protocol_length);
+ protocol_length);
offset += 1;
length -= 1;
@@ -975,26 +973,26 @@ dissect_address_tlv(tvbuff_t *tvb, int offset, int length, proto_tree *tree)
"Protocol: %s (truncated)",
tvb_bytes_to_str(tvb, offset, length));
}
- return -1;
+ return -1;
}
protocol_str = NULL;
- if (protocol_type == PROTO_TYPE_NLPID && protocol_length == 1) {
- nlpid = tvb_get_guint8(tvb, offset);
- protocol_str = val_to_str(nlpid, nlpid_vals, "Unknown (0x%02x)");
+ if ((protocol_type == PROTO_TYPE_NLPID) && (protocol_length == 1)) {
+ nlpid = tvb_get_guint8(tvb, offset);
+ protocol_str = val_to_str(nlpid, nlpid_vals, "Unknown (0x%02x)");
} else
nlpid = -1;
if (protocol_str == NULL)
protocol_str = tvb_bytes_to_str(tvb, offset, protocol_length);
proto_tree_add_text(address_tree, tvb, offset, protocol_length,
- "Protocol: %s", protocol_str);
+ "Protocol: %s", protocol_str);
offset += protocol_length;
length -= protocol_length;
if (length < 2)
- return -1;
+ return -1;
address_length = tvb_get_ntohs(tvb, offset);
proto_tree_add_text(address_tree, tvb, offset, 2, "Address length: %u",
- address_length);
+ address_length);
offset += 2;
length -= 2;
@@ -1004,7 +1002,7 @@ dissect_address_tlv(tvbuff_t *tvb, int offset, int length, proto_tree *tree)
"Address: %s (truncated)",
tvb_bytes_to_str(tvb, offset, length));
}
- return -1;
+ return -1;
}
/* XXX - the Cisco document seems to be saying that, for 802.2-format
protocol types, 0xAAAA03 0x000000 0x0800 is IPv6, but 0x0800 is
@@ -1012,7 +1010,7 @@ dissect_address_tlv(tvbuff_t *tvb, int offset, int length, proto_tree *tree)
length = 2 + protocol_length + 2 + address_length;
address_type_str = NULL;
address_str = NULL;
- if (protocol_type == PROTO_TYPE_NLPID && protocol_length == 1) {
+ if ((protocol_type == PROTO_TYPE_NLPID) && (protocol_length == 1)) {
switch (nlpid) {
/* XXX - dissect NLPID_ISO8473_CLNP as OSI CLNP address? */
@@ -1042,7 +1040,7 @@ dissect_capabilities(tvbuff_t *tvb, int offset, int length, proto_tree *tree)
{
proto_item *ti;
proto_tree *capabilities_tree;
- guint32 capabilities;
+ guint32 capabilities;
if (length < 4)
return;
@@ -1051,137 +1049,136 @@ dissect_capabilities(tvbuff_t *tvb, int offset, int length, proto_tree *tree)
capabilities);
capabilities_tree = proto_item_add_subtree(ti, ett_cdp_capabilities);
proto_tree_add_text(capabilities_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(capabilities, 0x01, 4*8,
- "Is a Router",
- "Not a Router"));
+ decode_boolean_bitfield(capabilities, 0x01, 4*8,
+ "Is a Router",
+ "Not a Router"));
proto_tree_add_text(capabilities_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(capabilities, 0x02, 4*8,
- "Is a Transparent Bridge",
- "Not a Transparent Bridge"));
+ decode_boolean_bitfield(capabilities, 0x02, 4*8,
+ "Is a Transparent Bridge",
+ "Not a Transparent Bridge"));
proto_tree_add_text(capabilities_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(capabilities, 0x04, 4*8,
- "Is a Source Route Bridge",
- "Not a Source Route Bridge"));
+ decode_boolean_bitfield(capabilities, 0x04, 4*8,
+ "Is a Source Route Bridge",
+ "Not a Source Route Bridge"));
proto_tree_add_text(capabilities_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(capabilities, 0x08, 4*8,
- "Is a Switch",
- "Not a Switch"));
+ decode_boolean_bitfield(capabilities, 0x08, 4*8,
+ "Is a Switch",
+ "Not a Switch"));
proto_tree_add_text(capabilities_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(capabilities, 0x10, 4*8,
- "Is a Host",
- "Not a Host"));
+ decode_boolean_bitfield(capabilities, 0x10, 4*8,
+ "Is a Host",
+ "Not a Host"));
proto_tree_add_text(capabilities_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(capabilities, 0x20, 4*8,
- "Is IGMP capable",
- "Not IGMP capable"));
+ decode_boolean_bitfield(capabilities, 0x20, 4*8,
+ "Is IGMP capable",
+ "Not IGMP capable"));
proto_tree_add_text(capabilities_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(capabilities, 0x40, 4*8,
- "Is a Repeater",
- "Not a Repeater"));
+ decode_boolean_bitfield(capabilities, 0x40, 4*8,
+ "Is a Repeater",
+ "Not a Repeater"));
}
static void
dissect_nrgyz_tlv(tvbuff_t *tvb, int offset, guint16 length, guint16 num,
- proto_tree *tree)
+ proto_tree *tree)
{
- guint32 tlvt, tlvl, ip_addr;
- proto_item *it = NULL;
+ guint32 tlvt, tlvl, ip_addr;
+ proto_item *it = NULL;
proto_tree *etree = NULL;
char const *ttext = NULL;
- while (num-- && length >= 8) {
- tlvt = tvb_get_ntohl(tvb, offset);
- tlvl = tvb_get_ntohl(tvb, offset + 4);
-
- if (length < tlvl) break;
- length -= tlvl;
-
- if (tlvl < 8) {
- proto_tree_add_text(tree, tvb, offset, 8,
- "TLV with invalid length %u (< 8)",
- tlvl);
- offset += 8;
- break;
- }
- else {
- ttext = val_to_str(tlvt, type_nrgyz_vals, "Unknown (0x%04x)");
- switch (tlvt) {
- case TYPE_NRGYZ_ROLE:
- case TYPE_NRGYZ_DOMAIN:
- case TYPE_NRGYZ_NAME:
- it = proto_tree_add_text(tree, tvb, offset,
- tlvl, "EnergyWise %s: %s", ttext,
- tvb_format_stringzpad(tvb,
- offset + 8, tlvl - 8)
- );
- break;
- case TYPE_NRGYZ_REPLYTO:
- ip_addr = tvb_get_ipv4(tvb, offset + 12);
- it = proto_tree_add_text(tree, tvb, offset,
- tlvl, "EnergyWise %s: %s port %u",
- ttext,
- ip_to_str((guint8 *)&ip_addr),
- tvb_get_ntohs(tvb, offset + 10)
- );
- break;
- default:
- it = proto_tree_add_text(tree, tvb, offset,
- tlvl, "EnergyWise %s TLV", ttext);
- }
- etree = proto_item_add_subtree(it, ett_cdp_nrgyz_tlv);
- proto_tree_add_text(etree, tvb, offset, 4,
- "TLV Type: %x (%s)", tlvt, ttext);
- proto_tree_add_text(etree, tvb, offset + 4, 4,
- "TLV Length: %u", tlvl);
- switch (tlvt) {
- case TYPE_NRGYZ_ROLE:
- case TYPE_NRGYZ_DOMAIN:
- case TYPE_NRGYZ_NAME:
- proto_tree_add_text(etree, tvb, offset + 8,
- tlvl - 8, "%s %s", ttext,
- tvb_format_stringzpad(tvb,
- offset + 8, tlvl - 8)
- );
- break;
- case TYPE_NRGYZ_REPLYTO:
- ip_addr = tvb_get_ipv4(tvb, offset + 12);
- proto_tree_add_text(etree, tvb, offset + 8, 2,
- "Unknown Field");
- proto_tree_add_text(etree, tvb, offset + 10, 2,
- "Port %d",
- tvb_get_ntohs(tvb, offset + 10)
- );
- proto_tree_add_text(etree, tvb, offset + 12, 4,
- "IP Address %s",
- ip_to_str((guint8 *)&ip_addr)
- );
- proto_tree_add_text(etree, tvb, offset + 16, 2,
- "Unknown Field (Backup server Port?)");
- proto_tree_add_text(etree, tvb, offset + 18, 4,
- "Unknown Field (Backup Server IP?)");
- break;
- default:
- if (tlvl > 8) {
- proto_tree_add_text(etree, tvb, offset + 8,
- tlvl - 8, "Data");
- }
- }
- offset += tlvl;
- }
+ while (num-- && (length >= 8)) {
+ tlvt = tvb_get_ntohl(tvb, offset);
+ tlvl = tvb_get_ntohl(tvb, offset + 4);
+
+ if (length < tlvl)
+ break;
+ length -= tlvl;
+
+ if (tlvl < 8) {
+ proto_tree_add_text(tree, tvb, offset, 8,
+ "TLV with invalid length %u (< 8)",
+ tlvl);
+ offset += 8;
+ break;
+ }
+ else {
+ ttext = val_to_str(tlvt, type_nrgyz_vals, "Unknown (0x%04x)");
+ switch (tlvt) {
+ case TYPE_NRGYZ_ROLE:
+ case TYPE_NRGYZ_DOMAIN:
+ case TYPE_NRGYZ_NAME:
+ it = proto_tree_add_text(tree, tvb, offset,
+ tlvl, "EnergyWise %s: %s", ttext,
+ tvb_format_stringzpad(tvb, offset + 8, tlvl - 8)
+ );
+ break;
+ case TYPE_NRGYZ_REPLYTO:
+ ip_addr = tvb_get_ipv4(tvb, offset + 12);
+ it = proto_tree_add_text(tree, tvb, offset,
+ tlvl, "EnergyWise %s: %s port %u",
+ ttext,
+ ip_to_str((guint8 *)&ip_addr),
+ tvb_get_ntohs(tvb, offset + 10)
+ );
+ break;
+ default:
+ it = proto_tree_add_text(tree, tvb, offset,
+ tlvl, "EnergyWise %s TLV", ttext);
+ }
+ etree = proto_item_add_subtree(it, ett_cdp_nrgyz_tlv);
+ proto_tree_add_text(etree, tvb, offset, 4,
+ "TLV Type: %x (%s)", tlvt, ttext);
+ proto_tree_add_text(etree, tvb, offset + 4, 4,
+ "TLV Length: %u", tlvl);
+ switch (tlvt) {
+ case TYPE_NRGYZ_ROLE:
+ case TYPE_NRGYZ_DOMAIN:
+ case TYPE_NRGYZ_NAME:
+ proto_tree_add_text(etree, tvb, offset + 8,
+ tlvl - 8, "%s %s", ttext,
+ tvb_format_stringzpad(tvb, offset + 8, tlvl - 8)
+ );
+ break;
+ case TYPE_NRGYZ_REPLYTO:
+ ip_addr = tvb_get_ipv4(tvb, offset + 12);
+ proto_tree_add_text(etree, tvb, offset + 8, 2,
+ "Unknown Field");
+ proto_tree_add_text(etree, tvb, offset + 10, 2,
+ "Port %d",
+ tvb_get_ntohs(tvb, offset + 10)
+ );
+ proto_tree_add_text(etree, tvb, offset + 12, 4,
+ "IP Address %s",
+ ip_to_str((guint8 *)&ip_addr)
+ );
+ proto_tree_add_text(etree, tvb, offset + 16, 2,
+ "Unknown Field (Backup server Port?)");
+ proto_tree_add_text(etree, tvb, offset + 18, 4,
+ "Unknown Field (Backup Server IP?)");
+ break;
+ default:
+ if (tlvl > 8) {
+ proto_tree_add_text(etree, tvb, offset + 8,
+ tlvl - 8, "Data");
+ }
+ }
+ offset += tlvl;
+ }
}
if (length) {
- proto_tree_add_text(tree, tvb, offset, length,
- "Invalid garbage at end");
+ proto_tree_add_text(tree, tvb, offset, length,
+ "Invalid garbage at end");
}
}
static void
dissect_spare_poe_tlv(tvbuff_t *tvb, int offset, int length,
- proto_tree *tree)
+ proto_tree *tree)
{
proto_item *ti;
proto_tree *tlv_tree;
- guint8 tlv_data;
+ guint8 tlv_data;
if (length == 0) {
return;
@@ -1189,52 +1186,52 @@ dissect_spare_poe_tlv(tvbuff_t *tvb, int offset, int length,
tlv_data = tvb_get_guint8(tvb, offset);
ti = proto_tree_add_text(tree, tvb, offset, length,
- "Spare Pair PoE: 0x%02x", tlv_data);
+ "Spare Pair PoE: 0x%02x", tlv_data);
tlv_tree = proto_item_add_subtree(ti, ett_cdp_spare_poe_tlv);
proto_tree_add_text(tlv_tree, tvb, offset, 1, "%s",
decode_boolean_bitfield(tlv_data, 0x01, 8,
- "PSE Four-Wire PoE Supported",
- "PSE Four-Wire PoE Not Supported"));
+ "PSE Four-Wire PoE Supported",
+ "PSE Four-Wire PoE Not Supported"));
proto_tree_add_text(tlv_tree, tvb, offset, 1, "%s",
decode_boolean_bitfield(tlv_data, 0x02, 8,
- "PD Spare Pair Architecture Shared",
- "PD Spare Pair Architecture Independent"));
+ "PD Spare Pair Architecture Shared",
+ "PD Spare Pair Architecture Independent"));
proto_tree_add_text(tlv_tree, tvb, offset, 1, "%s",
decode_boolean_bitfield(tlv_data, 0x04, 8,
- "PD Request Spare Pair PoE On",
- "PD Request Spare Pair PoE Off"));
+ "PD Request Spare Pair PoE On",
+ "PD Request Spare Pair PoE Off"));
proto_tree_add_text(tlv_tree, tvb, offset, 1, "%s",
decode_boolean_bitfield(tlv_data, 0x08, 8,
- "PSE Spare Pair PoE On",
- "PSE Spare Pair PoE Off"));
+ "PSE Spare Pair PoE On",
+ "PSE Spare Pair PoE Off"));
}
static void
add_multi_line_string_to_tree(proto_tree *tree, tvbuff_t *tvb, gint start,
gint len, const gchar *prefix)
{
- int prefix_len;
- int i;
+ int prefix_len;
+ int i;
char blanks[64+1];
gint next;
- int line_len;
- int data_len;
+ int line_len;
+ int data_len;
prefix_len = (int)strlen(prefix);
if (prefix_len > 64)
- prefix_len = 64;
+ prefix_len = 64;
for (i = 0; i < prefix_len; i++)
- blanks[i] = ' ';
+ blanks[i] = ' ';
blanks[i] = '\0';
while (len > 0) {
- line_len = tvb_find_line_end(tvb, start, len, &next, FALSE);
- data_len = next - start;
- proto_tree_add_text(tree, tvb, start, data_len, "%s%s", prefix,
- tvb_format_stringzpad(tvb, start, line_len));
- start += data_len;
- len -= data_len;
- prefix = blanks;
+ line_len = tvb_find_line_end(tvb, start, len, &next, FALSE);
+ data_len = next - start;
+ proto_tree_add_text(tree, tvb, start, data_len, "%s%s", prefix,
+ tvb_format_stringzpad(tvb, start, line_len));
+ start += data_len;
+ len -= data_len;
+ prefix = blanks;
}
}
@@ -1242,58 +1239,58 @@ void
proto_register_cdp(void)
{
static hf_register_info hf[] = {
- { &hf_cdp_version,
- { "Version", "cdp.version", FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { &hf_cdp_version,
+ { "Version", "cdp.version", FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
- { &hf_cdp_ttl,
- { "TTL", "cdp.ttl", FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { &hf_cdp_ttl,
+ { "TTL", "cdp.ttl", FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
- { &hf_cdp_checksum,
- { "Checksum", "cdp.checksum", FT_UINT16, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { &hf_cdp_checksum,
+ { "Checksum", "cdp.checksum", FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
- { &hf_cdp_checksum_good,
- { "Good", "cdp.checksum_good", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "True: checksum matches packet content; False: doesn't match content or not checked", HFILL }},
+ { &hf_cdp_checksum_good,
+ { "Good", "cdp.checksum_good", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "True: checksum matches packet content; False: doesn't match content or not checked", HFILL }},
- { &hf_cdp_checksum_bad,
- { "Bad", "cdp.checksum_bad", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "True: checksum doesn't match packet content; False: matches content or not checked", HFILL }},
+ { &hf_cdp_checksum_bad,
+ { "Bad", "cdp.checksum_bad", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "True: checksum doesn't match packet content; False: matches content or not checked", HFILL }},
- { &hf_cdp_tlvtype,
- { "Type", "cdp.tlv.type", FT_UINT16, BASE_HEX, VALS(type_vals), 0x0,
- NULL, HFILL }},
+ { &hf_cdp_tlvtype,
+ { "Type", "cdp.tlv.type", FT_UINT16, BASE_HEX, VALS(type_vals), 0x0,
+ NULL, HFILL }},
- { &hf_cdp_tlvlength,
- { "Length", "cdp.tlv.len", FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { &hf_cdp_tlvlength,
+ { "Length", "cdp.tlv.len", FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
- { &hf_cdp_deviceid,
- {"Device ID", "cdp.deviceid", FT_STRING, BASE_NONE,
- NULL, 0, NULL, HFILL }},
+ { &hf_cdp_deviceid,
+ {"Device ID", "cdp.deviceid", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }},
- { &hf_cdp_platform,
- {"Platform", "cdp.platform", FT_STRING, BASE_NONE,
- NULL, 0, NULL, HFILL }},
+ { &hf_cdp_platform,
+ {"Platform", "cdp.platform", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }},
- { &hf_cdp_portid,
- {"Sent through Interface", "cdp.portid", FT_STRING, BASE_NONE,
- NULL, 0, NULL, HFILL }}
+ { &hf_cdp_portid,
+ {"Sent through Interface", "cdp.portid", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }}
};
static gint *ett[] = {
- &ett_cdp,
- &ett_cdp_tlv,
- &ett_cdp_nrgyz_tlv,
- &ett_cdp_address,
- &ett_cdp_capabilities,
- &ett_cdp_checksum,
- &ett_cdp_spare_poe_tlv
+ &ett_cdp,
+ &ett_cdp_tlv,
+ &ett_cdp_nrgyz_tlv,
+ &ett_cdp_address,
+ &ett_cdp_capabilities,
+ &ett_cdp_checksum,
+ &ett_cdp_spare_poe_tlv
};
proto_cdp = proto_register_protocol("Cisco Discovery Protocol",
- "CDP", "cdp");
+ "CDP", "cdp");
proto_register_field_array(proto_cdp, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
}
@@ -1304,8 +1301,8 @@ proto_reg_handoff_cdp(void)
dissector_handle_t cdp_handle;
data_handle = find_dissector("data");
- cdp_handle = create_dissector_handle(dissect_cdp, proto_cdp);
+ cdp_handle = create_dissector_handle(dissect_cdp, proto_cdp);
dissector_add_uint("llc.cisco_pid", 0x2000, cdp_handle);
- dissector_add_uint("chdlctype", 0x2000, cdp_handle);
- dissector_add_uint("ppp.protocol", 0x0207, cdp_handle);
+ dissector_add_uint("chdlctype", 0x2000, cdp_handle);
+ dissector_add_uint("ppp.protocol", 0x0207, cdp_handle);
}
diff --git a/epan/dissectors/packet-cell_broadcast.c b/epan/dissectors/packet-cell_broadcast.c
index 26338a78ac..2ebe4e143c 100644
--- a/epan/dissectors/packet-cell_broadcast.c
+++ b/epan/dissectors/packet-cell_broadcast.c
@@ -28,12 +28,10 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <string.h>
#include <glib.h>
+
#include <epan/packet.h>
-#include <epan/emem.h>
#include <epan/strutil.h>
#include <epan/asn1.h>
@@ -366,7 +364,7 @@ dissect_gsm_cell_broadcast(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
frag_data, &gsm_page_items, NULL, cbs_page_tree);
}
}
- if ((tree != NULL) && (cbs_msg_tvb != NULL))
+ if (cbs_msg_tvb != NULL)
{
guint16 len;
proto_item *cbs_msg_item = NULL;
@@ -563,8 +561,3 @@ proto_register_cbs(void)
/* subtree array */
proto_register_subtree_array(ett, array_length(ett));
}
-
-void
-proto_reg_handoff_gsm_cbs(void)
-{
-}
diff --git a/epan/dissectors/packet-cgmp.c b/epan/dissectors/packet-cgmp.c
index d122613560..f9d4d1a640 100644
--- a/epan/dissectors/packet-cgmp.c
+++ b/epan/dissectors/packet-cgmp.c
@@ -22,11 +22,12 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+#ifdef HAVE_CONFIG_H
#include "config.h"
-
-#include <stdlib.h>
+#endif
#include <glib.h>
+
#include <epan/packet.h>
/*
diff --git a/epan/dissectors/packet-chdlc.c b/epan/dissectors/packet-chdlc.c
index a26b60f37d..8553d3a344 100644
--- a/epan/dissectors/packet-chdlc.c
+++ b/epan/dissectors/packet-chdlc.c
@@ -40,7 +40,7 @@
/*
* See section 4.3.1 of RFC 1547, and
*
- * http://www.nethelp.no/net/cisco-hdlc.txt
+ * http://www.nethelp.no/net/cisco-hdlc.txt
*/
static int proto_chdlc = -1;
@@ -76,31 +76,31 @@ static dissector_handle_t data_handle;
* wouldn't be in the Ethernet dissector table, and check that
* table first and the Ethernet dissector table if that fails.
*/
-#define CISCO_SLARP 0x8035 /* Cisco SLARP protocol */
+#define CISCO_SLARP 0x8035 /* Cisco SLARP protocol */
static dissector_table_t subdissector_table;
static const value_string chdlc_address_vals[] = {
- {CHDLC_ADDR_UNICAST, "Unicast"},
- {CHDLC_ADDR_MULTICAST, "Multicast"},
- {0, NULL}
+ {CHDLC_ADDR_UNICAST, "Unicast"},
+ {CHDLC_ADDR_MULTICAST, "Multicast"},
+ {0, NULL}
};
const value_string chdlc_vals[] = {
- {0x2000, "Cisco Discovery Protocol"},
- {ETHERTYPE_IP, "IP"},
- {ETHERTYPE_IPv6, "IPv6"},
- {CISCO_SLARP, "SLARP"},
- {ETHERTYPE_DEC_LB, "DEC LanBridge"},
- {CHDLCTYPE_BPDU, "Spanning Tree BPDU"},
- {ETHERTYPE_ATALK, "Appletalk"},
- {ETHERTYPE_AARP, "AARP"},
- {ETHERTYPE_IPX, "Netware IPX/SPX"},
- {ETHERTYPE_ETHBRIDGE, "Transparent Ethernet bridging" },
- {CHDLCTYPE_OSI, "OSI" },
- {ETHERTYPE_MPLS, "MPLS unicast"},
- {ETHERTYPE_MPLS_MULTI, "MPLS multicast"},
- {0, NULL}
+ {0x2000, "Cisco Discovery Protocol"},
+ {ETHERTYPE_IP, "IP"},
+ {ETHERTYPE_IPv6, "IPv6"},
+ {CISCO_SLARP, "SLARP"},
+ {ETHERTYPE_DEC_LB, "DEC LanBridge"},
+ {CHDLCTYPE_BPDU, "Spanning Tree BPDU"},
+ {ETHERTYPE_ATALK, "Appletalk"},
+ {ETHERTYPE_AARP, "AARP"},
+ {ETHERTYPE_IPX, "Netware IPX/SPX"},
+ {ETHERTYPE_ETHBRIDGE, "Transparent Ethernet bridging" },
+ {CHDLCTYPE_OSI, "OSI" },
+ {ETHERTYPE_MPLS, "MPLS unicast"},
+ {ETHERTYPE_MPLS_MULTI, "MPLS multicast"},
+ {0, NULL}
};
void
@@ -121,15 +121,15 @@ capture_chdlc( const guchar *pd, int offset, int len, packet_counts *ld ) {
void
chdlctype(guint16 chdlc_type, tvbuff_t *tvb, int offset_after_chdlctype,
- packet_info *pinfo, proto_tree *tree, proto_tree *fh_tree,
- int chdlctype_id)
+ packet_info *pinfo, proto_tree *tree, proto_tree *fh_tree,
+ int chdlctype_id)
{
- tvbuff_t *next_tvb;
- int padbyte = 0;
+ tvbuff_t *next_tvb;
+ int padbyte = 0;
if (tree) {
proto_tree_add_uint(fh_tree, chdlctype_id, tvb,
- offset_after_chdlctype - 2, 2, chdlc_type);
+ offset_after_chdlctype - 2, 2, chdlc_type);
}
padbyte = tvb_get_guint8(tvb, offset_after_chdlctype);
@@ -147,7 +147,7 @@ chdlctype(guint16 chdlc_type, tvbuff_t *tvb, int offset_after_chdlctype,
/* do lookup with the subdissector table */
if (!dissector_try_uint(subdissector_table, chdlc_type, next_tvb, pinfo, tree)) {
- col_add_fstr(pinfo->cinfo, COL_PROTOCOL, "0x%04x", chdlc_type);
+ col_add_fstr(pinfo->cinfo, COL_PROTOCOL, "0x%04x", chdlc_type);
call_dissector(data_handle,next_tvb, pinfo, tree);
}
}
@@ -159,8 +159,8 @@ dissect_chdlc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_item *ti;
proto_tree *fh_tree = NULL;
- guint8 addr;
- guint16 proto;
+ guint8 addr;
+ guint16 proto;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "CHDLC");
col_clear(pinfo->cinfo, COL_INFO);
@@ -221,7 +221,7 @@ proto_register_chdlc(void)
/* subdissector code */
subdissector_table = register_dissector_table("chdlctype",
- "Cisco HDLC frame type", FT_UINT16, BASE_HEX);
+ "Cisco HDLC frame type", FT_UINT16, BASE_HEX);
register_dissector("chdlc", dissect_chdlc, proto_chdlc);
@@ -229,11 +229,11 @@ proto_register_chdlc(void)
chdlc_module = prefs_register_protocol(proto_chdlc, NULL);
prefs_register_enum_preference(chdlc_module,
- "fcs_type",
- "CHDLC Frame Checksum Type",
- "The type of CHDLC frame checksum (none, 16-bit, 32-bit)",
- &chdlc_fcs_decode,
- fcs_options, ENC_BIG_ENDIAN);
+ "fcs_type",
+ "CHDLC Frame Checksum Type",
+ "The type of CHDLC frame checksum (none, 16-bit, 32-bit)",
+ &chdlc_fcs_decode,
+ fcs_options, ENC_BIG_ENDIAN);
}
@@ -242,21 +242,24 @@ proto_reg_handoff_chdlc(void)
{
dissector_handle_t chdlc_handle;
- data_handle = find_dissector("data");
+ data_handle = find_dissector("data");
chdlc_handle = find_dissector("chdlc");
dissector_add_uint("wtap_encap", WTAP_ENCAP_CHDLC, chdlc_handle);
dissector_add_uint("wtap_encap", WTAP_ENCAP_CHDLC_WITH_PHDR, chdlc_handle);
}
-#define SLARP_REQUEST 0
-#define SLARP_REPLY 1
-#define SLARP_LINECHECK 2
+
+
+
+#define SLARP_REQUEST 0
+#define SLARP_REPLY 1
+#define SLARP_LINECHECK 2
static const value_string slarp_ptype_vals[] = {
- {SLARP_REQUEST, "Request"},
- {SLARP_REPLY, "Reply"},
- {SLARP_LINECHECK, "Line keepalive"},
- {0, NULL}
+ {SLARP_REQUEST, "Request"},
+ {SLARP_REPLY, "Reply"},
+ {SLARP_LINECHECK, "Line keepalive"},
+ {0, NULL}
};
static void
@@ -264,10 +267,10 @@ dissect_slarp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_item *ti;
proto_tree *slarp_tree = NULL;
- guint32 code;
- guint32 addr;
- guint32 mysequence;
- guint32 yoursequence;
+ guint32 code;
+ guint32 addr;
+ guint32 mysequence;
+ guint32 yoursequence;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "SLARP");
col_clear(pinfo->cinfo, COL_INFO);
@@ -283,31 +286,31 @@ dissect_slarp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case SLARP_REQUEST:
case SLARP_REPLY:
- addr = tvb_get_ipv4(tvb, 4);
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s, from %s, mask %s",
- val_to_str(code, slarp_ptype_vals, "Unknown (%d)"),
- get_hostname(addr), tvb_ip_to_str(tvb, 8));
+ addr = tvb_get_ipv4(tvb, 4);
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s, from %s, mask %s",
+ val_to_str(code, slarp_ptype_vals, "Unknown (%d)"),
+ get_hostname(addr), tvb_ip_to_str(tvb, 8));
if (tree) {
proto_tree_add_uint(slarp_tree, hf_slarp_ptype, tvb, 0, 4, code);
proto_tree_add_item(slarp_tree, hf_slarp_address, tvb, 4, 4, ENC_BIG_ENDIAN);
proto_tree_add_text(slarp_tree, tvb, 8, 4,
- "Netmask: %s", tvb_ip_to_str(tvb, 8));
+ "Netmask: %s", tvb_ip_to_str(tvb, 8));
}
break;
case SLARP_LINECHECK:
mysequence = tvb_get_ntohl(tvb, 4);
yoursequence = tvb_get_ntohl(tvb, 8);
- col_add_fstr(pinfo->cinfo, COL_INFO,
- "%s, outgoing sequence %u, returned sequence %u",
- val_to_str(code, slarp_ptype_vals, "Unknown (%d)"),
- mysequence, yoursequence);
+ col_add_fstr(pinfo->cinfo, COL_INFO,
+ "%s, outgoing sequence %u, returned sequence %u",
+ val_to_str(code, slarp_ptype_vals, "Unknown (%d)"),
+ mysequence, yoursequence);
if (tree) {
proto_tree_add_uint(slarp_tree, hf_slarp_ptype, tvb, 0, 4, code);
proto_tree_add_uint(slarp_tree, hf_slarp_mysequence, tvb, 4, 4,
- mysequence);
+ mysequence);
proto_tree_add_uint(slarp_tree, hf_slarp_mysequence, tvb, 8, 4,
- yoursequence);
+ yoursequence);
}
break;
@@ -316,7 +319,7 @@ dissect_slarp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (tree) {
proto_tree_add_uint(slarp_tree, hf_slarp_ptype, tvb, 0, 4, code);
call_dissector(data_handle, tvb_new_subset_remaining(tvb, 4), pinfo,
- slarp_tree);
+ slarp_tree);
}
break;
}
diff --git a/epan/dissectors/packet-cigi.c b/epan/dissectors/packet-cigi.c
index 258afba766..95dcf62837 100644
--- a/epan/dissectors/packet-cigi.c
+++ b/epan/dissectors/packet-cigi.c
@@ -33,8 +33,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
@@ -2977,7 +2975,7 @@ cigi2_add_tree(tvbuff_t *tvb, proto_tree *cigi_tree)
}
/* Does the packet offset match the supposed length of the packet? */
- DISSECTOR_ASSERT((offset - init_offset == packet_length) && "Packet offset does not match packet length");
+ DISSECTOR_ASSERT_HINT(offset - init_offset == packet_length, "Packet offset does not match packet length");
}
}
@@ -3371,7 +3369,7 @@ cigi3_add_tree(tvbuff_t *tvb, proto_tree *cigi_tree)
}
/* Does the packet offset match the supposed length of the packet? */
- DISSECTOR_ASSERT((offset - init_offset == packet_length) && "Packet offset does not match packet length");
+ DISSECTOR_ASSERT_HINT(offset - init_offset == packet_length, "Packet offset does not match packet length");
}
}
@@ -5411,7 +5409,7 @@ cigi3_add_environmental_conditions_request(tvbuff_t *tvb, proto_tree *tree, gint
offset++;
proto_tree_add_item(tree, hf_cigi3_environmental_conditions_request_id, tvb, offset, 1, cigi_byte_order);
- offset += 5;;
+ offset += 5;
proto_tree_add_item(tree, hf_cigi3_environmental_conditions_request_lat, tvb, offset, 8, cigi_byte_order);
offset += 8;
@@ -5591,7 +5589,7 @@ cigi3_3_add_symbol_line_definition(tvbuff_t *tvb, proto_tree *tree, gint offset)
proto_tree_add_item(tree, hf_cigi3_3_symbol_line_definition_stipple_pattern, tvb, offset, 2, cigi_byte_order);
offset += 2;
- proto_tree_add_item(tree, hf_cigi3_3_symbol_line_definition_line_width, tvb, offset, 4, cigi_byte_order);;
+ proto_tree_add_item(tree, hf_cigi3_3_symbol_line_definition_line_width, tvb, offset, 4, cigi_byte_order);
offset += 4;
proto_tree_add_item(tree, hf_cigi3_3_symbol_line_definition_stipple_pattern_length, tvb, offset, 4, cigi_byte_order);
@@ -10599,7 +10597,7 @@ proto_register_cigi(void)
"Specifies whether the symbol should be hidden, visible, or destroyed", HFILL }
},
{ &hf_cigi3_3_short_symbol_control_attach_state,
- { "Atach State", "cigi.short_symbol_control.attach_state",
+ { "Attach State", "cigi.short_symbol_control.attach_state",
FT_BOOLEAN, 8, TFS(&cigi3_3_symbol_control_attach_state_tfs), 0x04,
"Specifies whether this symbol should be attached to another", HFILL }
},
diff --git a/epan/dissectors/packet-cimd.c b/epan/dissectors/packet-cimd.c
index 155ffa8cda..a911db9024 100644
--- a/epan/dissectors/packet-cimd.c
+++ b/epan/dissectors/packet-cimd.c
@@ -32,7 +32,105 @@
#include "config.h"
#endif
-#include "packet-cimd.h"
+#include <glib.h>
+
+#include <epan/packet.h>
+
+#define CIMD_STX 0x02 /* Start of CIMD PDU */
+#define CIMD_ETX 0x03 /* End of CIMD PDU */
+#define CIMD_COLON 0x3A /* CIMD colon */
+#define CIMD_DELIM 0x09 /* CIMD Delimiter */
+
+#define CIMD_OC_OFFSET 1 /* CIMD Operation Code Offset */
+#define CIMD_OC_LENGTH 2 /* CIMD Operation Code Length */
+#define CIMD_PN_OFFSET 4 /* CIMD Packet Number Offset */
+#define CIMD_PN_LENGTH 3 /* CIMD Packet Number Length */
+#define CIMD_PC_LENGTH 3 /* CIMD Parameter Code Length */
+#define CIMD_MIN_LENGTH 9 /* CIMD Minimal packet length : STX(1) + OC(2) + COLON(1) + PN(3) + DELIM(1) + ETX(1)*/
+
+/* define CIMD2 operation code */
+
+#define CIMD_Login 1
+#define CIMD_LoginResp 51
+#define CIMD_Logout 2
+#define CIMD_LogoutResp 52
+#define CIMD_SubmitMessage 3
+#define CIMD_SubmitMessageResp 53
+#define CIMD_EnqMessageStatus 4
+#define CIMD_EnqMessageStatusResp 54
+#define CIMD_DeliveryRequest 5
+#define CIMD_DeliveryRequestResp 55
+#define CIMD_CancelMessage 6
+#define CIMD_CancelMessageResp 56
+#define CIMD_SetMessage 8
+#define CIMD_SetMessageResp 58
+#define CIMD_GetMessage 9
+#define CIMD_GetMessageResp 59
+#define CIMD_Alive 40
+#define CIMD_AliveResp 90
+#define CIMD_GeneralErrorResp 98
+#define CIMD_NACK 99
+ /* SC2App */
+#define CIMD_DeliveryMessage 20
+#define CIMD_DeliveryMessageResp 70
+#define CIMD_DeliveryStatusReport 23
+#define CIMD_DeliveryStatusReportResp 73
+
+/* define CIMD2 operation's parameter codes */
+
+#define CIMD_UserIdentity 10
+#define CIMD_Password 11
+#define CIMD_Subaddress 12
+#define CIMD_WindowSize 19
+#define CIMD_DestinationAddress 21
+#define CIMD_OriginatingAddress 23
+#define CIMD_OriginatingImsi 26
+#define CIMD_AlphaOriginatingAddr 27
+#define CIMD_OriginatedVisitedMSCAd 28
+#define CIMD_DataCodingScheme 30
+#define CIMD_UserDataHeader 32
+#define CIMD_UserData 33
+#define CIMD_UserDataBinary 34
+#define CIMD_MoreMessagesToSend 44
+#define CIMD_ValidityPeriodRelative 50
+#define CIMD_ValidityPeriodAbsolute 51
+#define CIMD_ProtocolIdentifier 52
+#define CIMD_FirstDeliveryTimeRel 53
+#define CIMD_FirstDeliveryTimeAbs 54
+#define CIMD_ReplyPath 55
+#define CIMD_StatusReportRequest 56
+#define CIMD_CancelEnabled 58
+#define CIMD_CancelMode 59
+#define CIMD_SCTimeStamp 60
+#define CIMD_StatusCode 61
+#define CIMD_StatusErrorCode 62
+#define CIMD_DischargeTime 63
+#define CIMD_TariffClass 64
+#define CIMD_ServiceDescription 65
+#define CIMD_MessageCount 66
+#define CIMD_Priority 67
+#define CIMD_DeliveryRequestMode 68
+#define CIMD_SCAddress 69
+#define CIMD_GetParameter 500
+#define CIMD_SMSCTime 501
+#define CIMD_ErrorCode 900
+#define CIMD_ErrorText 901
+
+#define MAXPARAMSCOUNT 37
+
+typedef struct cimd_parameter_t cimd_parameter_t;
+
+typedef void (*cimd_pdissect)(tvbuff_t *tvb, proto_tree *tree, gint pindex, gint startOffset, gint endOffset);
+
+struct cimd_parameter_t {
+ cimd_pdissect diss;
+ gint *ett_p;
+ gint *hf_p;
+};
+
+static void dissect_cimd_parameter(tvbuff_t *tvb, proto_tree *tree, gint pindex, gint startOffset, gint endOffset);
+static void dissect_cimd_ud(tvbuff_t *tvb, proto_tree *tree, gint pindex, gint startOffset, gint endOffset);
+static void dissect_cimd_dcs(tvbuff_t *tvb, proto_tree *tree, gint pindex, gint startOffset, gint endOffset);
static int proto_cimd = -1;
/* Initialize the subtree pointers */
@@ -54,73 +152,73 @@ static int hf_cimd_dcs_indication_type = -1;
static const value_string vals_hdr_OC[] = {
/* operation codes array */
- {CIMD_Login, "Login"},
- {CIMD_LoginResp, "Login Resp"},
- {CIMD_Logout, "Logout"},
- {CIMD_LogoutResp, "Logout Resp"},
- {CIMD_SubmitMessage, "Submit message"},
- {CIMD_SubmitMessageResp, "Submit message Resp"},
- {CIMD_EnqMessageStatus, "Enquire message status"},
- {CIMD_EnqMessageStatusResp, "Enquire message status Resp"},
- {CIMD_DeliveryRequest, "Delivery request"},
- {CIMD_DeliveryRequestResp, "Delivery request Resp"},
- {CIMD_CancelMessage, "Cancel message"},
- {CIMD_CancelMessageResp, "Cancel message Resp"},
- {CIMD_SetMessage, "Set message"},
- {CIMD_SetMessageResp, "Set message Resp"},
- {CIMD_GetMessage, "Get message"},
- {CIMD_GetMessageResp, "Get message Resp"},
- {CIMD_Alive, "Alive"},
- {CIMD_AliveResp, "Alive Resp"},
- {CIMD_GeneralErrorResp, "General error Resp"},
- {CIMD_NACK, "Nack"},
+ {CIMD_Login, "Login"},
+ {CIMD_LoginResp, "Login Resp"},
+ {CIMD_Logout, "Logout"},
+ {CIMD_LogoutResp, "Logout Resp"},
+ {CIMD_SubmitMessage, "Submit message"},
+ {CIMD_SubmitMessageResp, "Submit message Resp"},
+ {CIMD_EnqMessageStatus, "Enquire message status"},
+ {CIMD_EnqMessageStatusResp, "Enquire message status Resp"},
+ {CIMD_DeliveryRequest, "Delivery request"},
+ {CIMD_DeliveryRequestResp, "Delivery request Resp"},
+ {CIMD_CancelMessage, "Cancel message"},
+ {CIMD_CancelMessageResp, "Cancel message Resp"},
+ {CIMD_SetMessage, "Set message"},
+ {CIMD_SetMessageResp, "Set message Resp"},
+ {CIMD_GetMessage, "Get message"},
+ {CIMD_GetMessageResp, "Get message Resp"},
+ {CIMD_Alive, "Alive"},
+ {CIMD_AliveResp, "Alive Resp"},
+ {CIMD_GeneralErrorResp, "General error Resp"},
+ {CIMD_NACK, "Nack"},
/* SC2App */
- {CIMD_DeliveryMessage, "Deliver message"},
- {CIMD_DeliveryMessageResp, "Deliver message Resp"},
- {CIMD_DeliveryStatusReport, "Deliver status report"},
+ {CIMD_DeliveryMessage, "Deliver message"},
+ {CIMD_DeliveryMessageResp, "Deliver message Resp"},
+ {CIMD_DeliveryStatusReport, "Deliver status report"},
{CIMD_DeliveryStatusReportResp, "Deliver status report Resp"},
{0, NULL}
};
static const value_string cimd_vals_PC[] = {
/* parameter codes array */
- {CIMD_UserIdentity, "User Identity"},
- {CIMD_Password, "Password"},
- {CIMD_Subaddress, "Subaddr"},
- {CIMD_WindowSize, "Window Size"},
- {CIMD_DestinationAddress, "Destination Address"},
- {CIMD_OriginatingAddress, "Originating Address"},
- {CIMD_OriginatingImsi, "Originating IMSI"},
- {CIMD_AlphaOriginatingAddr, "Alphanumeric Originating Address"},
+ {CIMD_UserIdentity, "User Identity"},
+ {CIMD_Password, "Password"},
+ {CIMD_Subaddress, "Subaddr"},
+ {CIMD_WindowSize, "Window Size"},
+ {CIMD_DestinationAddress, "Destination Address"},
+ {CIMD_OriginatingAddress, "Originating Address"},
+ {CIMD_OriginatingImsi, "Originating IMSI"},
+ {CIMD_AlphaOriginatingAddr, "Alphanumeric Originating Address"},
{CIMD_OriginatedVisitedMSCAd, "Originated Visited MSC Address"},
- {CIMD_DataCodingScheme, "Data Coding Scheme"},
- {CIMD_UserDataHeader, "User Data Header"},
- {CIMD_UserData, "User Data"},
- {CIMD_UserDataBinary, "User Data Binary"},
- {CIMD_MoreMessagesToSend, "More Messages To Send"},
+ {CIMD_DataCodingScheme, "Data Coding Scheme"},
+ {CIMD_UserDataHeader, "User Data Header"},
+ {CIMD_UserData, "User Data"},
+ {CIMD_UserDataBinary, "User Data Binary"},
+ {CIMD_MoreMessagesToSend, "More Messages To Send"},
{CIMD_ValidityPeriodRelative, "Validity Period Relative"},
{CIMD_ValidityPeriodAbsolute, "Validity Period Absolute"},
- {CIMD_ProtocolIdentifier, "Protocol Identifier"},
- {CIMD_FirstDeliveryTimeRel, "First Delivery Time Relative"},
- {CIMD_FirstDeliveryTimeAbs, "First Delivery Time Absolute"},
- {CIMD_ReplyPath, "Reply Path"},
- {CIMD_StatusReportRequest, "Status Report Request"},
- {CIMD_CancelEnabled, "Cancel Enabled"},
- {CIMD_CancelMode, "Cancel Mode"},
- {CIMD_SCTimeStamp, "Service Centre Time Stamp"},
- {CIMD_StatusCode, "Status Code"},
- {CIMD_StatusErrorCode, "Status Error Code"},
- {CIMD_DischargeTime, "Discharge Time"},
- {CIMD_TariffClass, "Tariff Class"},
- {CIMD_ServiceDescription, "Service Description"},
- {CIMD_MessageCount, "Message Count"},
- {CIMD_Priority, "Priority"},
- {CIMD_DeliveryRequestMode, "Delivery Request Mode"},
- {CIMD_SCAddress, "Service Center Address"},
- {CIMD_GetParameter, "Get Parameter"},
- {CIMD_SMSCTime, "SMS Center Time"},
- {CIMD_ErrorCode, "Error Code"},
- {CIMD_ErrorText, "Error Text"},
+ {CIMD_ProtocolIdentifier, "Protocol Identifier"},
+ {CIMD_FirstDeliveryTimeRel, "First Delivery Time Relative"},
+ {CIMD_FirstDeliveryTimeAbs, "First Delivery Time Absolute"},
+ {CIMD_ReplyPath, "Reply Path"},
+ {CIMD_StatusReportRequest, "Status Report Request"},
+ {CIMD_CancelEnabled, "Cancel Enabled"},
+ {CIMD_CancelMode, "Cancel Mode"},
+ {CIMD_SCTimeStamp, "Service Centre Time Stamp"},
+ {CIMD_StatusCode, "Status Code"},
+ {CIMD_StatusErrorCode, "Status Error Code"},
+ {CIMD_DischargeTime, "Discharge Time"},
+ {CIMD_TariffClass, "Tariff Class"},
+ {CIMD_ServiceDescription, "Service Description"},
+ {CIMD_MessageCount, "Message Count"},
+ {CIMD_Priority, "Priority"},
+ {CIMD_DeliveryRequestMode, "Delivery Request Mode"},
+ {CIMD_SCAddress, "Service Center Address"},
+ {CIMD_GetParameter, "Get Parameter"},
+ {CIMD_SMSCTime, "SMS Center Time"},
+ {CIMD_ErrorCode, "Error Code"},
+ {CIMD_ErrorText, "Error Text"},
{0, NULL}
};
@@ -275,27 +373,27 @@ static void dissect_cimd_parameter(tvbuff_t *tvb, proto_tree *tree, gint pindex,
static void dissect_cimd_ud(tvbuff_t *tvb, proto_tree *tree, gint pindex, gint startOffset, gint endOffset)
{
/* Set up structures needed to add the param subtree and manage it */
- proto_item *param_item = NULL;
- proto_tree *param_tree = NULL;
+ proto_item *param_item;
+ proto_tree *param_tree;
gchar* payloadText;
- gchar* tmpBuffer = (gchar*)ep_alloc(1024);
- gchar* tmpBuffer1 = (gchar*)ep_alloc(1024);
- int loop,i,poz, bufPoz = 0, bufPoz1 = 0, size, size1, resch;
- gint g_offset, g_size;
- gchar token[4];
- gchar ch;
- const char* mapping[128] = {
- "_Oa","_L-", "", "_Y-", "_e`", "_e'", "_u`", "_i`", "_o`","_C,", /*10*/
- "", "_O/", "_o/", "", "_A*", "_a*","_gd", "_--", "_gf", "_gg", "_gl", /*21*/
- "_go", "_gp","_gi", "_gs", "_gt", "_gx", "_XX","_AE","_ae", "_ss","_E'", /*32*/
- "","","_qq","", "_ox", "", "","", "", "", "", "", "", "", "", "",
- "", "", "", "", "", "" , "", "", "", "", "", "", "", "", "", "",
- "_!!", "", "", "", "", "", "","", "", "", "", "", "", "", "", "",
- "", "", "", "", "", "", "", "","", "", "", "_A\"", "_O\"", "_N~",
- "_U\"", "_so", "_??", "", "", "", "", "", "", "", "", "", "", "",
- "", "", "", "", "", "", "", "","", "", "", "", "", "", "", "_a\"",
- "_o\"","_n~","_n\"","_a`"
+ gchar* tmpBuffer = (gchar*)ep_alloc(1024);
+ gchar* tmpBuffer1 = (gchar*)ep_alloc(1024);
+ int loop,i,poz, bufPoz = 0, bufPoz1 = 0, size, size1, resch;
+ gint g_offset, g_size;
+ gchar token[4];
+ gchar ch;
+ const char* mapping[128] = {
+ "_Oa" , "_L-", "" , "_Y-", "_e`", "_e'", "_u`", "_i`", "_o`", "_C,", /*10*/
+ "" , "_O/", "_o/" , "" , "_A*", "_a*", "_gd", "_--", "_gf", "_gg", "_gl", /*21*/
+ "_go" , "_gp", "_gi" , "_gs", "_gt", "_gx", "_XX", "_AE", "_ae", "_ss", "_E'", /*32*/
+ "" , "" , "_qq" , "" , "_ox", "" , "" , "" , "" , "" , "" , "" , "" , "" , "", "",
+ "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "", "",
+ "_!!" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "", "",
+ "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "_A\"", "_O\"", "_N~",
+ "_U\"", "_so", "_??" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" ,
+ "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "", "_a\"",
+ "_o\"", "_n~", "_n\"","_a`"
};
param_item = proto_tree_add_text(tree, tvb,
@@ -344,9 +442,9 @@ static void dissect_cimd_ud(tvbuff_t *tvb, proto_tree *tree, gint pindex, gint s
}
else
{
- if(loop < size) tmpBuffer[bufPoz++] = payloadText[loop++];
- if(loop < size) tmpBuffer[bufPoz++] = payloadText[loop++];
- if(loop < size) tmpBuffer[bufPoz++] = payloadText[loop++];
+ if (loop < size) tmpBuffer[bufPoz++] = payloadText[loop++];
+ if (loop < size) tmpBuffer[bufPoz++] = payloadText[loop++];
+ if (loop < size) tmpBuffer[bufPoz++] = payloadText[loop++];
}
}
else
@@ -357,7 +455,7 @@ static void dissect_cimd_ud(tvbuff_t *tvb, proto_tree *tree, gint pindex, gint s
tmpBuffer[bufPoz] = '\0';
size1 = (int)strlen(tmpBuffer);
- for (loop=0; loop<size1;loop++)
+ for (loop=0; loop<size1; loop++)
{
ch = tmpBuffer[loop];
switch ((gint)ch)
@@ -377,7 +475,7 @@ static void dissect_cimd_ud(tvbuff_t *tvb, proto_tree *tree, gint pindex, gint s
case 0x0E: resch = 0x00C5; break;
case 0x0F: resch = 0x00E5; break;
case 0x11: resch = 0x005F; break;
- case 0x1B14: resch = 0x005E; break;
+/* case 0x1B14: resch = 0x005E; break; */
/* case 0x1B28: resch = 0x007B; break; */
/* case 0x1B29: resch = 0x007D; break; */
/* case 0x1B2F: resch = 0x005C; break; */
@@ -485,7 +583,7 @@ static void dissect_cimd_ud(tvbuff_t *tvb, proto_tree *tree, gint pindex, gint s
case 0x7C: resch = 0x00F6; break;
case 0x7D: resch = 0x00F1; break;
case 0x7F: resch = 0x00E0; break;
- default:resch = ch;break;
+ default:resch = ch; break;
}
tmpBuffer1[bufPoz1++] = (gchar)resch;
}
@@ -497,17 +595,17 @@ static void dissect_cimd_ud(tvbuff_t *tvb, proto_tree *tree, gint pindex, gint s
static void dissect_cimd_dcs(tvbuff_t *tvb, proto_tree *tree, gint pindex, gint startOffset, gint endOffset)
{
/* Set up structures needed to add the param subtree and manage it */
- proto_item *param_item = NULL;
- proto_tree *param_tree = NULL;
- gint offset;
- guint dcs;
- guint dcs_cg; /* coding group */
- guint dcs_cf; /* compressed flag */
- guint dcs_mcm; /* message class meaning flag */
- guint dcs_chs; /* character set */
- guint dcs_mc; /* message class */
- guint dcs_is; /* indication sense */
- guint dcs_it; /* indication type */
+ proto_item *param_item;
+ proto_tree *param_tree;
+ gint offset;
+ guint dcs;
+ guint dcs_cg; /* coding group */
+ guint dcs_cf; /* compressed flag */
+ guint dcs_mcm; /* message class meaning flag */
+ guint dcs_chs; /* character set */
+ guint dcs_mc; /* message class */
+ guint dcs_is; /* indication sense */
+ guint dcs_it; /* indication type */
gchar* bigbuf = (gchar*)ep_alloc(1024);
@@ -522,7 +620,7 @@ static void dissect_cimd_dcs(tvbuff_t *tvb, proto_tree *tree, gint pindex, gint
);
offset = startOffset + 1 + CIMD_PC_LENGTH + 1;
- dcs = decimal_int_value(tvb, offset, endOffset - offset);
+ dcs = decimal_int_value(tvb, offset, endOffset - offset);
proto_tree_add_uint(param_tree, (*vals_hdr_PC[pindex].hf_p), tvb, offset, endOffset - offset, dcs);
dcs_cg = (dcs & 0xF0) >> 4;
@@ -602,10 +700,10 @@ static void dissect_cimd_dcs(tvbuff_t *tvb, proto_tree *tree, gint pindex, gint
static void
dissect_cimd_operation(tvbuff_t *tvb, proto_tree *tree, gint etxp, guint16 checksum, guint8 last1,guint8 OC, guint8 PN)
{
- guint PC = 0; /* Parameter code */
- gint idx;
- gint offset = 0;
- gint endOffset = 0;
+ guint PC = 0; /* Parameter code */
+ gint idx;
+ gint offset = 0;
+ gint endOffset = 0;
proto_item *cimd_item = NULL;
proto_tree *cimd_tree = NULL;
@@ -644,15 +742,15 @@ dissect_cimd_operation(tvbuff_t *tvb, proto_tree *tree, gint etxp, guint16 check
static void
dissect_cimd(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- guint8 OC = 0; /* Operation Code */
- guint8 PN = 0; /* Packet number */
- guint16 checksum = 0; /* Checksum */
- guint16 pkt_check = 0;
- gint etxp = 0; /* ETX position */
- gint offset = 0;
+ guint8 OC = 0; /* Operation Code */
+ guint8 PN = 0; /* Packet number */
+ guint16 checksum = 0; /* Checksum */
+ guint16 pkt_check = 0;
+ gint etxp = 0; /* ETX position */
+ gint offset = 0;
/*gint endOffset = 0;*/
gboolean checksumIsValid = TRUE;
- guint8 last1, last2, last3;
+ guint8 last1, last2, last3;
etxp = tvb_find_guint8(tvb, CIMD_PN_OFFSET + CIMD_PN_LENGTH, -1, CIMD_ETX);
if (etxp == -1) return;
@@ -698,13 +796,12 @@ dissect_cimd(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static gboolean
dissect_cimd_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- int etxp;
- guint8 opcode = 0; /* Operation code */
+ int etxp;
+ guint8 opcode = 0; /* Operation code */
+
+ if (tvb_length(tvb) < CIMD_MIN_LENGTH)
+ return FALSE;
- /**
- * This runs atop TCP, so we are guaranteed that
- * there is at least one byte in the tvbuff
- */
if (tvb_get_guint8(tvb, 0) != CIMD_STX)
return FALSE;
@@ -713,10 +810,6 @@ dissect_cimd_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{ /* XXX - should we have an option to request reassembly? */
return FALSE;
}
- if (etxp > (int)tvb_reported_length(tvb))
- { /* XXX - "cannot happen" */
- return FALSE;
- }
/* Try getting the operation-code */
opcode = decimal_int_value(tvb, CIMD_OC_OFFSET, CIMD_OC_LENGTH);
@@ -739,101 +832,245 @@ proto_register_cimd(void)
{
static hf_register_info hf[] = {
{ &hf_cimd_opcode_indicator,
- { "Operation Code", "cimd.opcode", FT_UINT8, BASE_DEC, NULL, 0x00, "CIMD Operation Code", HFILL }},
+ { "Operation Code", "cimd.opcode",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_cimd_packet_number_indicator,
- { "Packet Number", "cimd.pnumber", FT_UINT8, BASE_DEC, NULL, 0x00, "CIMD Packet Number", HFILL }},
+ { "Packet Number", "cimd.pnumber",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_cimd_pcode_indicator,
- { "Code", "cimd.pcode", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Parameter Code", HFILL }},
+ { "Parameter Code", "cimd.pcode",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_cimd_checksum_indicator,
- { "Checksum", "cimd.chksum", FT_UINT8, BASE_HEX, NULL, 0x00, "CIMD Checksum", HFILL }},
+ { "Checksum", "cimd.chksum",
+ FT_UINT8, BASE_HEX, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_cimd_dcs_coding_group_indicator,
- { "Coding Group", "cimd.dcs.cg", FT_UINT8, BASE_DEC, NULL, 0x00, "CIMD DCS Coding Group", HFILL }},
+ { "DCS Coding Group", "cimd.dcs.cg",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_cimd_dcs_compressed_indicator,
- { "Compressed", "cimd.dcs.cf", FT_UINT8, BASE_DEC, NULL, 0x00, "CIMD DCS Compressed Flag", HFILL }},
+ { "DCS Compressed Flag", "cimd.dcs.cf",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_cimd_dcs_message_class_meaning_indicator,
- { "Message Class Meaning", "cimd.dcs.mcm", FT_UINT8, BASE_DEC, NULL, 0x00, "CIMD DCS Message Class Meaning Flag", HFILL }},
+ { "DCS Message Class Meaning", "cimd.dcs.mcm",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_cimd_dcs_message_class_indicator,
- { "Message Class", "cimd.dcs.mc", FT_UINT8, BASE_DEC, NULL, 0x00, "CIMD DCS Message Class", HFILL }},
+ { "DCS Message Class", "cimd.dcs.mc",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_cimd_dcs_character_set_indicator,
- { "Character Set", "cimd.dcs.chs", FT_UINT8, BASE_DEC, NULL, 0x00, "CIMD DCS Character Set", HFILL }},
+ { "DCS Character Set", "cimd.dcs.chs",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_cimd_dcs_indication_sense,
- { "Indication Sense", "cimd.dcs.is", FT_UINT8, BASE_DEC, NULL, 0x00, "CIMD DCS Indication Sense", HFILL }},
+ { "DCS Indication Sense", "cimd.dcs.is",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_cimd_dcs_indication_type,
- { "Indication Type", "cimd.dcs.it", FT_UINT8, BASE_DEC, NULL, 0x00, "CIMD DCS Indication Type", HFILL }},
+ { "DCS Indication Type", "cimd.dcs.it",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[0],
- { "User Identity", "cimd.ui", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD User Identity", HFILL }},
+ { "User Identity", "cimd.ui",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[1],
- { "Password", "cimd.passwd", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Password", HFILL }},
+ { "Password", "cimd.passwd",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[2],
- { "Subaddress", "cimd.saddr", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Subaddress", HFILL }},
+ { "Subaddress", "cimd.saddr",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[3],
- { "Window Size", "cimd.ws", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Window Size", HFILL }},
+ { "Window Size", "cimd.ws",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[4],
- { "Destination Address", "cimd.da", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Destination Address", HFILL }},
+ { "Destination Address", "cimd.da",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[5],
- { "Originating Address", "cimd.oa", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Originating Address", HFILL }},
+ { "Originating Address", "cimd.oa",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[6],
- { "Originating IMSI", "cimd.oimsi", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Originating IMSI", HFILL }},
+ { "Originating IMSI", "cimd.oimsi",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[7],
- { "Alphanumeric Originating Address", "cimd.aoi", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Alphanumeric Originating Address", HFILL }},
+ { "Alphanumeric Originating Address", "cimd.aoi",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[8],
- { "Originated Visited MSC Address", "cimd.ovma", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Originated Visited MSC Address", HFILL }},
+ { "Originated Visited MSC Address", "cimd.ovma",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[9],
- { "Data Coding Scheme", "cimd.dcs", FT_UINT8, BASE_HEX, NULL, 0x00, "CIMD Data Coding Scheme", HFILL }},
+ { "Data Coding Scheme", "cimd.dcs",
+ FT_UINT8, BASE_HEX, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[10],
- { "User Data Header", "cimd.udh", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD User Data Header", HFILL }},
+ { "User Data Header", "cimd.udh",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[11],
- { "User Data", "cimd.ud", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD User Data", HFILL }},
+ { "User Data", "cimd.ud",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[12],
- { "User Data Binary", "cimd.udb", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD User Data Binary", HFILL }},
+ { "User Data Binary", "cimd.udb",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[13],
- { "More Messages To Send", "cimd.mms", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD More Messages To Send", HFILL }},
+ { "More Messages To Send", "cimd.mms",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[14],
- { "Validity Period Relative", "cimd.vpr", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Validity Period Relative", HFILL }},
+ { "Validity Period Relative", "cimd.vpr",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[15],
- { "Validity Period Absolute", "cimd.vpa", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Validity Period Absolute", HFILL }},
+ { "Validity Period Absolute", "cimd.vpa",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[16],
- { "Protocol Identifier", "cimd.pi", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Protocol Identifier", HFILL }},
+ { "Protocol Identifier", "cimd.pi",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[17],
- { "First Delivery Time Relative", "cimd.fdtr", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD First Delivery Time Relative", HFILL }},
+ { "First Delivery Time Relative", "cimd.fdtr",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[18],
- { "First Delivery Time Absolute", "cimd.fdta", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD First Delivery Time Absolute", HFILL }},
+ { "First Delivery Time Absolute", "cimd.fdta",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[19],
- { "Reply Path", "cimd.rpath", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Reply Path", HFILL }},
+ { "Reply Path", "cimd.rpath",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[20],
- { "Status Report Request", "cimd.srr", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Status Report Request", HFILL }},
+ { "Status Report Request", "cimd.srr",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[21],
- { "Cancel Enabled", "cimd.ce", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Cancel Enabled", HFILL }},
+ { "Cancel Enabled", "cimd.ce",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[22],
- { "Cancel Mode", "cimd.cm", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Cancel Mode", HFILL }},
+ { "Cancel Mode", "cimd.cm",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[23],
- { "Service Centre Time Stamp", "cimd.scts", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Service Centre Time Stamp", HFILL }},
+ { "Service Center Time Stamp", "cimd.scts",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[24],
- { "Status Code", "cimd.stcode", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Status Code", HFILL }},
+ { "Status Code", "cimd.stcode",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[25],
- { "Status Error Code", "cimd.sterrcode", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Status Error Code", HFILL }},
+ { "Status Error Code", "cimd.sterrcode",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[26],
- { "Discharge Time", "cimd.dt", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Discharge Time", HFILL }},
+ { "Discharge Time", "cimd.dt",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[27],
- { "Tariff Class", "cimd.tclass", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Tariff Class", HFILL }},
+ { "Tariff Class", "cimd.tclass",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[28],
- { "Service Description", "cimd.sdes", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Service Description", HFILL }},
+ { "Service Description", "cimd.sdes",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[29],
- { "Message Count", "cimd.mcount", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Message Count", HFILL }},
+ { "Message Count", "cimd.mcount",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[30],
- { "Priority", "cimd.priority", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Priority", HFILL }},
+ { "Priority", "cimd.priority",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[31],
- { "Delivery Request Mode", "cimd.drmode", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Delivery Request Mode", HFILL }},
+ { "Delivery Request Mode", "cimd.drmode",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[32],
- { "Service Center Address", "cimd.scaddr", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Service Center Address", HFILL }},
+ { "Service Center Address", "cimd.scaddr",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[33],
- { "Get Parameter", "cimd.gpar", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Get Parameter", HFILL }},
+ { "Get Parameter", "cimd.gpar",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[34],
- { "SMS Center Time", "cimd.smsct", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD SMS Center Time", HFILL }},
+ { "SMS Center Time", "cimd.smsct",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[35],
- { "Error Code", "cimd.errcode", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Error Code", HFILL }},
+ { "Error Code", "cimd.errcode",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
{ &hf_index[36],
- { "Error Text", "cimd.errtext", FT_STRING, BASE_NONE, NULL, 0x00, "CIMD Error Text", HFILL }}
+ { "Error Text", "cimd.errtext",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ }
};
/* Setup protocol subtree array */
@@ -875,4 +1112,3 @@ proto_reg_handoff_cimd(void)
cimd_handle = create_dissector_handle(dissect_cimd, proto_cimd);
dissector_add_handle("tcp.port", cimd_handle);
}
-
diff --git a/epan/dissectors/packet-cimd.h b/epan/dissectors/packet-cimd.h
deleted file mode 100644
index 034ceeb932..0000000000
--- a/epan/dissectors/packet-cimd.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/* packet-cimd.h
- *
- * Routines for Computer Interface to Message Distribution (CIMD) version 2 dissection
- *
- * Copyright : 2005 Viorel Suman <vsuman[AT]avmob.ro>, Lucian Piros <lpiros[AT]avmob.ro>
- * In association with Avalanche Mobile BV, http://www.avmob.com
- *
- * $Id$
- *
- * Refer to the AUTHORS file or the AUTHORS section in the man page
- * for contacting the author(s) of this file.
- *
- * Wireshark - Network traffic analyzer
- * By Gerald Combs <gerald@wireshark.org>
- * Copyright 1998 Gerald Combs
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <string.h>
-#include <glib.h>
-
-#include <epan/packet.h>
-#include <epan/prefs.h>
-#include "packet-tcp.h"
-
-#define CIMD_STX 0x02 /* Start of CIMD PDU */
-#define CIMD_ETX 0x03 /* End of CIMD PDU */
-#define CIMD_COLON 0x3A /* CIMD colon */
-#define CIMD_DELIM 0x09 /* CIMD Delimiter */
-
-#define CIMD_OC_OFFSET 1 /* CIMD Operation Code Offset */
-#define CIMD_OC_LENGTH 2 /* CIMD Operation Code Length */
-#define CIMD_PN_OFFSET 4 /* CIMD Packet Number Offset */
-#define CIMD_PN_LENGTH 3 /* CIMD Packet Number Length */
-#define CIMD_PC_LENGTH 3 /* CIMD Parameter Code Length */
-#define CIMD_MIN_LENGTH 9 /* CIMD Minimal packet length : STX(1) + OC(2) + COLON(1) + PN(3) + DELIM(1) + ETX(1)*/
-
-/* define CIMD2 operation code */
-
-#define CIMD_Login 1
-#define CIMD_LoginResp 51
-#define CIMD_Logout 2
-#define CIMD_LogoutResp 52
-#define CIMD_SubmitMessage 3
-#define CIMD_SubmitMessageResp 53
-#define CIMD_EnqMessageStatus 4
-#define CIMD_EnqMessageStatusResp 54
-#define CIMD_DeliveryRequest 5
-#define CIMD_DeliveryRequestResp 55
-#define CIMD_CancelMessage 6
-#define CIMD_CancelMessageResp 56
-#define CIMD_SetMessage 8
-#define CIMD_SetMessageResp 58
-#define CIMD_GetMessage 9
-#define CIMD_GetMessageResp 59
-#define CIMD_Alive 40
-#define CIMD_AliveResp 90
-#define CIMD_GeneralErrorResp 98
-#define CIMD_NACK 99
- /* SC2App */
-#define CIMD_DeliveryMessage 20
-#define CIMD_DeliveryMessageResp 70
-#define CIMD_DeliveryStatusReport 23
-#define CIMD_DeliveryStatusReportResp 73
-
-/* define CIMD2 operation's parameter codes */
-
-#define CIMD_UserIdentity 10
-#define CIMD_Password 11
-#define CIMD_Subaddress 12
-#define CIMD_WindowSize 19
-#define CIMD_DestinationAddress 21
-#define CIMD_OriginatingAddress 23
-#define CIMD_OriginatingImsi 26
-#define CIMD_AlphaOriginatingAddr 27
-#define CIMD_OriginatedVisitedMSCAd 28
-#define CIMD_DataCodingScheme 30
-#define CIMD_UserDataHeader 32
-#define CIMD_UserData 33
-#define CIMD_UserDataBinary 34
-#define CIMD_MoreMessagesToSend 44
-#define CIMD_ValidityPeriodRelative 50
-#define CIMD_ValidityPeriodAbsolute 51
-#define CIMD_ProtocolIdentifier 52
-#define CIMD_FirstDeliveryTimeRel 53
-#define CIMD_FirstDeliveryTimeAbs 54
-#define CIMD_ReplyPath 55
-#define CIMD_StatusReportRequest 56
-#define CIMD_CancelEnabled 58
-#define CIMD_CancelMode 59
-#define CIMD_SCTimeStamp 60
-#define CIMD_StatusCode 61
-#define CIMD_StatusErrorCode 62
-#define CIMD_DischargeTime 63
-#define CIMD_TariffClass 64
-#define CIMD_ServiceDescription 65
-#define CIMD_MessageCount 66
-#define CIMD_Priority 67
-#define CIMD_DeliveryRequestMode 68
-#define CIMD_SCAddress 69
-#define CIMD_GetParameter 500
-#define CIMD_SMSCTime 501
-#define CIMD_ErrorCode 900
-#define CIMD_ErrorText 901
-
-#define MAXPARAMSCOUNT 37
-
-typedef void (*cimd_odissect)(tvbuff_t *tvb, proto_tree *tree, gint etxp, guint16 checksum, guint8 last1,guint8 OC, guint8 PN);
-
-typedef struct cimd_parameter_t cimd_parameter_t;
-
-typedef void (*cimd_pdissect)(tvbuff_t *tvb, proto_tree *tree, gint pindex, gint startOffset, gint endOffset);
-
-struct cimd_parameter_t {
- cimd_pdissect diss;
- gint *ett_p;
- gint *hf_p;
-};
-
-static void dissect_cimd_operation(tvbuff_t *tvb, proto_tree *tree, gint etxp, guint16 checksum, guint8 last1,guint8 OC, guint8 PN);
-static void dissect_cimd_parameter(tvbuff_t *tvb, proto_tree *tree, gint pindex, gint startOffset, gint endOffset);
-static void dissect_cimd_ud(tvbuff_t *tvb, proto_tree *tree, gint pindex, gint startOffset, gint endOffset);
-static void dissect_cimd_dcs(tvbuff_t *tvb, proto_tree *tree, gint pindex, gint startOffset, gint endOffset);
-
diff --git a/epan/dissectors/packet-cimetrics.c b/epan/dissectors/packet-cimetrics.c
index 107fec2ba5..5e9f0757c6 100644
--- a/epan/dissectors/packet-cimetrics.c
+++ b/epan/dissectors/packet-cimetrics.c
@@ -27,6 +27,8 @@
# include "config.h"
#endif
+#include <glib.h>
+
#include <epan/packet.h>
#include "packet-llc.h"
#include <epan/oui.h>
diff --git a/epan/dissectors/packet-cip.c b/epan/dissectors/packet-cip.c
index e8e54bdf57..f2ccb4a2d8 100644
--- a/epan/dissectors/packet-cip.c
+++ b/epan/dissectors/packet-cip.c
@@ -919,6 +919,7 @@ static const value_string cip_cm_ext_st_vals[] = {
{ CM_ES_REDUNDANT_CONNECTION_MISMATCH, "Redundant connection mismatch" },
{ CM_ES_NO_CONSUMER_RES_AVAIL_IN_PROD_MODULE, "No more user configurable link consumer resources available in the producing module" },
{ CM_ES_NO_CONSUMER_RES_CONF_IN_PROD_MODULE, "No more user configurable link consumer resources configured in the producing module" },
+ { CM_ES_NETWORK_LINK_OFFLINE, "Network link offline" },
{ CM_ES_INCOMPATIBLE_MULTICAST_RPI, "Incompatible Multicast RPI" },
{ CM_ES_INVALID_SAFETY_CONN_SIZE, "Invalid Safety Connection Size" },
{ CM_ES_INVALID_SAFETY_CONN_FORMAT, "Invalid Safety Connection Format" },
@@ -934,7 +935,6 @@ static const value_string cip_cm_ext_st_vals[] = {
{ CM_ES_TUNID_NOT_SET, "TUNID not set" },
{ CM_ES_TUNID_MISMATCH, "TUNID Mismatch" },
{ CM_ES_CONFIGURATION_OPERATION_NOT_ALLOWED, "Configuration operation not allowed" },
- { CM_ES_NETWORK_LINK_OFFLINE, "Network link offline" },
{ CM_ES_NO_TARGET_APP_DATA_AVAILABLE, "No target application data available" },
{ CM_ES_NO_ORIG_APP_DATA_AVAILABLE, "No originator application data available" },
{ CM_ES_NODE_ADDRESS_CHANGED_AFTER_SCHEDULED, "Node address has changed since the network was scheduled" },
@@ -1282,7 +1282,7 @@ static const value_string cip_vendor_vals[] = {
{ 331, "Interface Corporation" },
{ 332, "Grape Systems Inc." },
{ 333, "Reserved" },
- { 344, "Reserved" },
+ { 334, "Reserved" },
{ 335, "Toshiba IT & Control Systems Corporation" },
{ 336, "Sanyo Machine Works, Ltd." },
{ 337, "Vansco Electronics Ltd." },
@@ -2299,7 +2299,7 @@ static const value_string cip_class_names_vals[] = {
value_string_ext cip_class_names_vals_ext = VALUE_STRING_EXT_INIT(cip_class_names_vals);
-int dissect_id_revision(packet_info *pinfo, proto_tree *tree, proto_item *item, tvbuff_t *tvb,
+static int dissect_id_revision(packet_info *pinfo, proto_tree *tree, proto_item *item, tvbuff_t *tvb,
int offset, int total_len)
{
if (total_len < 2)
@@ -2313,7 +2313,7 @@ int dissect_id_revision(packet_info *pinfo, proto_tree *tree, proto_item *item,
return 2;
}
-int dissect_msg_rout_num_classes(packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, tvbuff_t *tvb,
+static int dissect_msg_rout_num_classes(packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, tvbuff_t *tvb,
int offset, int total_len _U_)
{
guint16 i, num_classes;
@@ -2671,7 +2671,7 @@ void dissect_epath( tvbuff_t *tvb, packet_info *pinfo, proto_item *epath_item, i
if ( !generate )
{
hidden_item = proto_tree_add_item(path_tree, hf_cip_epath,
- tvb, offset, path_length, ENC_LITTLE_ENDIAN );
+ tvb, offset, path_length, ENC_NA );
PROTO_ITEM_SET_HIDDEN(hidden_item);
}
@@ -3159,7 +3159,7 @@ void dissect_epath( tvbuff_t *tvb, packet_info *pinfo, proto_item *epath_item, i
}
else
{
- proto_tree_add_item(net_tree, hf_cip_seg_safety_data, tvb, offset+pathpos+3, seg_size-1, ENC_LITTLE_ENDIAN );
+ proto_tree_add_item(net_tree, hf_cip_seg_safety_data, tvb, offset+pathpos+3, seg_size-1, ENC_NA );
}
if (safety != NULL)
@@ -3401,14 +3401,11 @@ dissect_cip_class_generic(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_item *ti;
proto_tree *class_tree;
- if( tree )
- {
- /* Create display subtree for the protocol */
- ti = proto_tree_add_item(tree, proto_cip_class_generic, tvb, 0, -1, ENC_NA);
- class_tree = proto_item_add_subtree( ti, ett_cip_class_generic );
+ /* Create display subtree for the protocol */
+ ti = proto_tree_add_item(tree, proto_cip_class_generic, tvb, 0, -1, ENC_NA);
+ class_tree = proto_item_add_subtree( ti, ett_cip_class_generic );
- dissect_cip_generic_data( class_tree, tvb, 0, tvb_length(tvb), pinfo, ti );
- }
+ dissect_cip_generic_data( class_tree, tvb, 0, tvb_length(tvb), pinfo, ti );
return tvb_length(tvb);
}
@@ -4527,7 +4524,7 @@ dissect_cip_cm_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, int item_
break;
default:
/* Add data */
- proto_tree_add_item(cmd_data_tree, hf_cip_data, tvb, offset+4+add_stat_size, item_length-4-add_stat_size, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cmd_data_tree, hf_cip_data, tvb, offset+4+add_stat_size, item_length-4-add_stat_size, ENC_NA);
break;
}
}
@@ -4918,14 +4915,11 @@ dissect_cip_class_mb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_item *ti;
proto_tree *class_tree;
- if( tree )
- {
- /* Create display subtree for the protocol */
- ti = proto_tree_add_item(tree, proto_cip_class_mb, tvb, 0, -1, FALSE);
- class_tree = proto_item_add_subtree( ti, ett_cip_class_mb );
+ /* Create display subtree for the protocol */
+ ti = proto_tree_add_item(tree, proto_cip_class_mb, tvb, 0, -1, ENC_NA);
+ class_tree = proto_item_add_subtree( ti, ett_cip_class_mb );
- dissect_cip_mb_data( class_tree, tvb, 0, tvb_length(tvb), pinfo );
- }
+ dissect_cip_mb_data( class_tree, tvb, 0, tvb_length(tvb), pinfo );
return tvb_length(tvb);
}
@@ -5274,14 +5268,11 @@ dissect_cip_class_cco(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_item *ti;
proto_tree *class_tree;
- if( tree )
- {
- /* Create display subtree for the protocol */
- ti = proto_tree_add_item(tree, proto_cip_class_cco, tvb, 0, -1, ENC_NA);
- class_tree = proto_item_add_subtree( ti, ett_cip_class_cco );
+ /* Create display subtree for the protocol */
+ ti = proto_tree_add_item(tree, proto_cip_class_cco, tvb, 0, -1, ENC_NA);
+ class_tree = proto_item_add_subtree( ti, ett_cip_class_cco );
- dissect_cip_cco_data( class_tree, tvb, 0, tvb_length(tvb), pinfo );
- }
+ dissect_cip_cco_data( class_tree, tvb, 0, tvb_length(tvb), pinfo );
return tvb_length(tvb);
}
diff --git a/epan/dissectors/packet-cipmotion.c b/epan/dissectors/packet-cipmotion.c
index ba2fddcf5f..e678a12cde 100644
--- a/epan/dissectors/packet-cipmotion.c
+++ b/epan/dissectors/packet-cipmotion.c
@@ -387,7 +387,7 @@ static const value_string cip_pos_data_type_vals[] = {
/* Translate function to string - axis response values */
static const value_string cip_axis_response_vals[] = {
- { 0, "No Acknowlede" },
+ { 0, "No Acknowledge" },
{ 1, "Enable Acknowledge" },
{ 2, "Disable Acknowledge" },
{ 3, "Shutdown Acknowledge" },
diff --git a/epan/dissectors/packet-cipsafety.c b/epan/dissectors/packet-cipsafety.c
index 7348d4ef57..75910171c8 100644
--- a/epan/dissectors/packet-cipsafety.c
+++ b/epan/dissectors/packet-cipsafety.c
@@ -709,19 +709,16 @@ dissect_cip_class_s_supervisor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr
proto_item *ti;
proto_tree *class_tree;
- if( tree )
- {
- /* Create display subtree for the protocol */
- ti = proto_tree_add_item(tree, proto_cip_class_s_supervisor, tvb, 0, -1, ENC_NA);
- class_tree = proto_item_add_subtree( ti, ett_cip_class_s_supervisor );
+ /* Create display subtree for the protocol */
+ ti = proto_tree_add_item(tree, proto_cip_class_s_supervisor, tvb, 0, -1, ENC_NA);
+ class_tree = proto_item_add_subtree( ti, ett_cip_class_s_supervisor );
- dissect_cip_s_supervisor_data( class_tree, tvb, 0, tvb_length(tvb), pinfo );
- }
+ dissect_cip_s_supervisor_data( class_tree, tvb, 0, tvb_length(tvb), pinfo );
return tvb_length(tvb);
}
-int dissect_s_supervisor_exception_detail(proto_tree *tree, proto_item *item, tvbuff_t *tvb, int offset, int hf_size, int hf_data)
+static int dissect_s_supervisor_exception_detail(proto_tree *tree, proto_item *item, tvbuff_t *tvb, int offset, int hf_size, int hf_data)
{
int size;
@@ -733,7 +730,7 @@ int dissect_s_supervisor_exception_detail(proto_tree *tree, proto_item *item, tv
return size+1;
}
-int dissect_s_supervisor_exception_detail_alarm(packet_info *pinfo, proto_tree *tree, proto_item *item, tvbuff_t *tvb,
+static int dissect_s_supervisor_exception_detail_alarm(packet_info *pinfo, proto_tree *tree, proto_item *item, tvbuff_t *tvb,
int offset, int total_len)
{
proto_item *pi;
@@ -782,8 +779,8 @@ int dissect_s_supervisor_exception_detail_alarm(packet_info *pinfo, proto_tree *
return total_size;
}
-int dissect_s_supervisor_exception_detail_warning(packet_info *pinfo, proto_tree *tree, proto_item *item,
- tvbuff_t *tvb, int offset, int total_len)
+static int dissect_s_supervisor_exception_detail_warning(packet_info *pinfo, proto_tree *tree, proto_item *item,
+ tvbuff_t *tvb, int offset, int total_len)
{
proto_item *pi;
proto_tree *item_tree;
@@ -831,8 +828,8 @@ int dissect_s_supervisor_exception_detail_warning(packet_info *pinfo, proto_tree
return total_size;
}
-int dissect_s_supervisor_configuration_unid(packet_info *pinfo, proto_tree *tree _U_, proto_item *item,
- tvbuff_t *tvb, int offset, int total_len)
+static int dissect_s_supervisor_configuration_unid(packet_info *pinfo, proto_tree *tree _U_, proto_item *item,
+ tvbuff_t *tvb, int offset, int total_len)
{
if (total_len < 10)
{
@@ -851,8 +848,8 @@ int dissect_s_supervisor_configuration_unid(packet_info *pinfo, proto_tree *tree
return 10;
}
-int dissect_s_supervisor_safety_configuration_id(packet_info *pinfo, proto_tree *tree _U_, proto_item *item,
- tvbuff_t *tvb, int offset, int total_len)
+static int dissect_s_supervisor_safety_configuration_id(packet_info *pinfo, proto_tree *tree _U_, proto_item *item,
+ tvbuff_t *tvb, int offset, int total_len)
{
if (total_len < 10)
{
@@ -871,8 +868,8 @@ int dissect_s_supervisor_safety_configuration_id(packet_info *pinfo, proto_tree
return 10;
}
-int dissect_s_supervisor_target_unid(packet_info *pinfo, proto_tree *tree _U_, proto_item *item,
- tvbuff_t *tvb, int offset, int total_len)
+static int dissect_s_supervisor_target_unid(packet_info *pinfo, proto_tree *tree _U_, proto_item *item,
+ tvbuff_t *tvb, int offset, int total_len)
{
if (total_len < 10)
{
@@ -891,8 +888,8 @@ int dissect_s_supervisor_target_unid(packet_info *pinfo, proto_tree *tree _U_, p
return 10;
}
-int dissect_s_supervisor_output_connection_point_owners(packet_info *pinfo, proto_tree *tree, proto_item *item,
- tvbuff_t *tvb, int offset, int total_len)
+static int dissect_s_supervisor_output_connection_point_owners(packet_info *pinfo, proto_tree *tree, proto_item *item,
+ tvbuff_t *tvb, int offset, int total_len)
{
guint16 i, num_entries;
proto_item *entry_item, *app_path_item;
@@ -954,8 +951,8 @@ int dissect_s_supervisor_output_connection_point_owners(packet_info *pinfo, prot
return attr_len;
}
-int dissect_s_supervisor_proposed_tunid(packet_info *pinfo, proto_tree *tree _U_, proto_item *item,
- tvbuff_t *tvb, int offset, int total_len)
+static int dissect_s_supervisor_proposed_tunid(packet_info *pinfo, proto_tree *tree _U_, proto_item *item,
+ tvbuff_t *tvb, int offset, int total_len)
{
if (total_len < 10)
{
@@ -979,8 +976,8 @@ int dissect_s_supervisor_proposed_tunid(packet_info *pinfo, proto_tree *tree _U_
* Dissector for CIP Safety Validator Object
*
************************************************/
-int dissect_s_validator_type(packet_info *pinfo, proto_tree *tree, proto_item *item, tvbuff_t *tvb,
- int offset, int total_len)
+static int dissect_s_validator_type(packet_info *pinfo, proto_tree *tree, proto_item *item, tvbuff_t *tvb,
+ int offset, int total_len)
{
proto_item *pi;
proto_tree *item_tree;
@@ -999,8 +996,8 @@ int dissect_s_validator_type(packet_info *pinfo, proto_tree *tree, proto_item *i
return 1;
}
-int dissect_s_validator_time_coord_msg_min_mult(packet_info *pinfo, proto_tree *tree, proto_item *item,
- tvbuff_t *tvb, int offset, int total_len)
+static int dissect_s_validator_time_coord_msg_min_mult(packet_info *pinfo, proto_tree *tree, proto_item *item,
+ tvbuff_t *tvb, int offset, int total_len)
{
int i, size;
@@ -1024,8 +1021,8 @@ int dissect_s_validator_time_coord_msg_min_mult(packet_info *pinfo, proto_tree *
return (size+1);
}
-int dissect_s_validator_network_time_multiplier(packet_info *pinfo, proto_tree *tree, proto_item *item,
- tvbuff_t *tvb, int offset, int total_len)
+static int dissect_s_validator_network_time_multiplier(packet_info *pinfo, proto_tree *tree, proto_item *item,
+ tvbuff_t *tvb, int offset, int total_len)
{
int i, size;
@@ -1049,7 +1046,7 @@ int dissect_s_validator_network_time_multiplier(packet_info *pinfo, proto_tree *
return (size+1);
}
-int dissect_s_validator_timeout_multiplier(packet_info *pinfo, proto_tree *tree, proto_item *item, tvbuff_t *tvb,
+static int dissect_s_validator_timeout_multiplier(packet_info *pinfo, proto_tree *tree, proto_item *item, tvbuff_t *tvb,
int offset, int total_len)
{
int i, size;
@@ -1074,8 +1071,8 @@ int dissect_s_validator_timeout_multiplier(packet_info *pinfo, proto_tree *tree,
return (size+1);
}
-int dissect_s_validator_coordination_conn_inst(packet_info *pinfo, proto_tree *tree, proto_item *item,
- tvbuff_t *tvb, int offset, int total_len)
+static int dissect_s_validator_coordination_conn_inst(packet_info *pinfo, proto_tree *tree, proto_item *item,
+ tvbuff_t *tvb, int offset, int total_len)
{
int i, size;
@@ -1099,15 +1096,15 @@ int dissect_s_validator_coordination_conn_inst(packet_info *pinfo, proto_tree *t
return (size+1);
}
-int dissect_s_validator_app_data_path(packet_info *pinfo, proto_tree *tree _U_,
- proto_item *item, tvbuff_t *tvb, int offset, int total_len)
+static int dissect_s_validator_app_data_path(packet_info *pinfo, proto_tree *tree _U_,
+ proto_item *item, tvbuff_t *tvb, int offset, int total_len)
{
dissect_epath(tvb, pinfo, item, offset, total_len, FALSE, FALSE, NULL, NULL);
return total_len;
}
-int dissect_s_validator_prod_cons_fault_count(packet_info *pinfo, proto_tree *tree, proto_item *item,
- tvbuff_t *tvb, int offset, int total_len)
+static int dissect_s_validator_prod_cons_fault_count(packet_info *pinfo, proto_tree *tree, proto_item *item,
+ tvbuff_t *tvb, int offset, int total_len)
{
int i, size;
@@ -1289,14 +1286,11 @@ dissect_cip_class_s_validator(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
proto_item *ti;
proto_tree *class_tree;
- if( tree )
- {
- /* Create display subtree for the protocol */
- ti = proto_tree_add_item(tree, proto_cip_class_s_validator, tvb, 0, -1, ENC_NA);
- class_tree = proto_item_add_subtree( ti, ett_cip_class_s_validator );
+ /* Create display subtree for the protocol */
+ ti = proto_tree_add_item(tree, proto_cip_class_s_validator, tvb, 0, -1, ENC_NA);
+ class_tree = proto_item_add_subtree( ti, ett_cip_class_s_validator );
- dissect_cip_s_validator_data( class_tree, tvb, 0, tvb_length(tvb), pinfo );
- }
+ dissect_cip_s_validator_data( class_tree, tvb, 0, tvb_length(tvb), pinfo );
return tvb_length(tvb);
}
@@ -1416,6 +1410,9 @@ dissect_ack_byte( proto_tree *tree, tvbuff_t *tvb, int offset, packet_info *pinf
ack_byte = tvb_get_guint8(tvb, offset);
#endif
+ if (!tree)
+ return;
+
/* dissect Ack Byte bits */
ack_item = proto_tree_add_item(tree, hf_cipsafety_ack_byte, tvb, offset, 1, ENC_LITTLE_ENDIAN);
ack_tree = proto_item_add_subtree( ack_item, ett_cipsafety_ack_byte);
@@ -1502,7 +1499,7 @@ dissect_cip_safety_data( proto_tree *tree, proto_item *item, tvbuff_t *tvb, int
if (item_length-base_length <= 2)
{
/* Short Format (1-2 bytes I/O data) */
- proto_tree_add_item(tree, hf_cipsafety_data, tvb, 0, item_length-base_length, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_cipsafety_data, tvb, 0, item_length-base_length, ENC_NA);
dissect_mode_byte(tree, tvb, item_length-base_length, pinfo);
proto_tree_add_item(tree, hf_cipsafety_crc_s1, tvb, item_length-base_length+1, 1, ENC_LITTLE_ENDIAN);
@@ -1531,10 +1528,10 @@ dissect_cip_safety_data( proto_tree *tree, proto_item *item, tvbuff_t *tvb, int
io_data_size = multicast ? ((item_length-14)/2) : ((item_length-8)/2);
- proto_tree_add_item(tree, hf_cipsafety_data, tvb, 0, io_data_size, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_cipsafety_data, tvb, 0, io_data_size, ENC_NA);
dissect_mode_byte(tree, tvb, io_data_size, pinfo);
proto_tree_add_item(tree, hf_cipsafety_crc_s3, tvb, io_data_size+1, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_cipsafety_complement_data, tvb, io_data_size+3, io_data_size, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_cipsafety_complement_data, tvb, io_data_size+3, io_data_size, ENC_NA);
proto_tree_add_item(tree, hf_cipsafety_crc_s3, tvb, (io_data_size*2)+3, 2, ENC_LITTLE_ENDIAN);
proto_tree_add_item(tree, hf_cipsafety_timestamp, tvb, (io_data_size*2)+5, 2, ENC_LITTLE_ENDIAN);
proto_tree_add_item(tree, hf_cipsafety_crc_s1, tvb, (io_data_size*2)+7, 1, ENC_LITTLE_ENDIAN);
@@ -1552,7 +1549,7 @@ dissect_cip_safety_data( proto_tree *tree, proto_item *item, tvbuff_t *tvb, int
if (item_length-base_length <= 2)
{
/* Short Format (1-2 bytes I/O data) */
- proto_tree_add_item(tree, hf_cipsafety_data, tvb, 0, item_length-base_length, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_cipsafety_data, tvb, 0, item_length-base_length, ENC_NA);
dissect_mode_byte(tree, tvb, item_length-base_length, pinfo);
proto_tree_add_item(tree, hf_cipsafety_crc_s5_0, tvb, item_length-base_length+1, 1, ENC_LITTLE_ENDIAN);
@@ -1581,11 +1578,11 @@ dissect_cip_safety_data( proto_tree *tree, proto_item *item, tvbuff_t *tvb, int
io_data_size = multicast ? ((item_length-14)/2) : ((item_length-8)/2);
- proto_tree_add_item(tree, hf_cipsafety_data, tvb, 0, io_data_size, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_cipsafety_data, tvb, 0, io_data_size, ENC_NA);
dissect_mode_byte(tree, tvb, io_data_size, pinfo);
proto_tree_add_item(tree, hf_cipsafety_crc_s3, tvb, io_data_size+1, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_cipsafety_complement_data, tvb, io_data_size+3, io_data_size, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_cipsafety_complement_data, tvb, io_data_size+3, io_data_size, ENC_NA);
proto_tree_add_item(tree, hf_cipsafety_crc_s5_0, tvb, (io_data_size*2)+3, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(tree, hf_cipsafety_crc_s5_1, tvb, (io_data_size*2)+4, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(tree, hf_cipsafety_timestamp, tvb, (io_data_size*2)+5, 2, ENC_LITTLE_ENDIAN);
@@ -1606,7 +1603,7 @@ dissect_cip_safety_data( proto_tree *tree, proto_item *item, tvbuff_t *tvb, int
else
{
/* Shouldn't happen, but at least dissect it as data */
- proto_tree_add_item(tree, hf_cipsafety_data, tvb, 0, item_length, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_cipsafety_data, tvb, 0, item_length, ENC_NA);
}
}
@@ -1616,17 +1613,14 @@ dissect_cipsafety(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_item *ti;
proto_tree *safety_tree;
- if( tree )
- {
- /* Create display subtree for the protocol */
- ti = proto_tree_add_item(tree, proto_cipsafety, tvb, 0, -1, ENC_NA);
- safety_tree = proto_item_add_subtree( ti, ett_cip_safety);
+ /* Create display subtree for the protocol */
+ ti = proto_tree_add_item(tree, proto_cipsafety, tvb, 0, -1, ENC_NA);
+ safety_tree = proto_item_add_subtree( ti, ett_cip_safety);
- dissect_cip_safety_data(safety_tree, ti, tvb, tvb_length(tvb), pinfo );
- }
+ dissect_cip_safety_data(safety_tree, ti, tvb, tvb_length(tvb), pinfo );
}
-int dissect_sercosiii_link_error_count_p1p2(packet_info *pinfo, proto_tree *tree, proto_item *item, tvbuff_t *tvb,
+static int dissect_sercosiii_link_error_count_p1p2(packet_info *pinfo, proto_tree *tree, proto_item *item, tvbuff_t *tvb,
int offset, int total_len)
{
if (total_len < 4)
@@ -1640,7 +1634,7 @@ int dissect_sercosiii_link_error_count_p1p2(packet_info *pinfo, proto_tree *tree
return 4;
}
-int dissect_tcpip_ssn(packet_info *pinfo, proto_tree *tree, proto_item *item, tvbuff_t *tvb,
+static int dissect_tcpip_ssn(packet_info *pinfo, proto_tree *tree, proto_item *item, tvbuff_t *tvb,
int offset, int total_len)
{
if (total_len < 6)
diff --git a/epan/dissectors/packet-cipsafety.h b/epan/dissectors/packet-cipsafety.h
index b6be80c3d6..64bba1b8a2 100644
--- a/epan/dissectors/packet-cipsafety.h
+++ b/epan/dissectors/packet-cipsafety.h
@@ -25,6 +25,10 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+#ifndef PACKET_CIPSAFETY_H
+#define PACKET_CIPSAFETY_H
+
+#include "packet-enip.h"
/* Classes that have class-specfic dissectors */
#define CI_CLS_SAFETY_SUPERVISOR 0x39 /* Safety Supervisor */
@@ -63,3 +67,5 @@ extern void dissect_cipsafety_ssn(proto_tree *tree, tvbuff_t *tvb, packet_info *
*/
extern const value_string cipsafety_ssn_date_vals[8];
extern attribute_info_t cip_safety_attribute_vals[52];
+
+#endif /* PACKET_CIPSAFETY_H */
diff --git a/epan/dissectors/packet-cisco-sm.c b/epan/dissectors/packet-cisco-sm.c
index d30123b6be..c8709f7e03 100644
--- a/epan/dissectors/packet-cisco-sm.c
+++ b/epan/dissectors/packet-cisco-sm.c
@@ -43,21 +43,21 @@
# include "config.h"
#endif
-#include <stdlib.h>
+#include <glib.h>
#include <epan/packet.h>
-#define MESSAGE_TYPE_START 0
-#define MESSAGE_TYPE_STOP 1
-#define MESSAGE_TYPE_ACTIVE 2
-#define MESSAGE_TYPE_STANDBY 3
-#define MESSAGE_TYPE_Q_HOLD_INVOKE 4
-#define MESSAGE_TYPE_Q_HOLD_RESPONSE 5
-#define MESSAGE_TYPE_Q_RESUME_INVOKE 6
-#define MESSAGE_TYPE_Q_RESUME_RESPONSE 7
-#define MESSAGE_TYPE_Q_RESET_INVOKE 8
-#define MESSAGE_TYPE_Q_RESET_RESPONSE 9
-#define MESSAGE_TYPE_PDU 0x8000
+#define MESSAGE_TYPE_START 0
+#define MESSAGE_TYPE_STOP 1
+#define MESSAGE_TYPE_ACTIVE 2
+#define MESSAGE_TYPE_STANDBY 3
+#define MESSAGE_TYPE_Q_HOLD_INVOKE 4
+#define MESSAGE_TYPE_Q_HOLD_RESPONSE 5
+#define MESSAGE_TYPE_Q_RESUME_INVOKE 6
+#define MESSAGE_TYPE_Q_RESUME_RESPONSE 7
+#define MESSAGE_TYPE_Q_RESET_INVOKE 8
+#define MESSAGE_TYPE_Q_RESET_RESPONSE 9
+#define MESSAGE_TYPE_PDU 0x8000
static const value_string sm_message_type_value[] = {
{ MESSAGE_TYPE_START, "Start Message" },
@@ -105,6 +105,8 @@ static const value_string sm_pdu_type_value[] = {
};
/* TODO: Change to useful name once known */
+#define SM_PROTOCOL_X004 0x0004 /* https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7188 */
+/* RUDP/SM stack called BSM V1 (version 1 versus Version 0 used for SS7). */
#define SM_PROTOCOL_X100 0x0100
#define SM_PROTOCOL_X101 0x0101
#define SM_PROTOCOL_X114 0x0114
@@ -131,6 +133,7 @@ static gint ett_sm = -1;
static dissector_handle_t sdp_handle;
static dissector_handle_t mtp3_handle;
+static dissector_handle_t q931_handle;
static dissector_handle_t data_handle;
/* Code to actually dissect the packets */
@@ -166,6 +169,41 @@ dissect_sm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
protocol = tvb_get_ntohs(tvb,offset);
offset = offset + 2;
switch(protocol){
+ /* start case RUDP BSM v.1 ---------------------------------------------------------- */
+ case SM_PROTOCOL_X004:
+ if (!tree)
+ return;
+
+ proto_tree_add_item(sm_tree, hf_sm_msg_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset +2;
+ msg_type = tvb_get_ntohs(tvb,offset);
+ proto_tree_add_uint_format(sm_tree, hf_sm_msg_type, tvb, offset, 2, msg_type,
+ "Message type: %s (0x%0x)", val_to_str(msg_type, sm_pdu_type_value, "reserved"),
+ msg_type);
+ msg_type = tvb_get_ntohs(tvb,offset);
+ offset = offset + 2;
+ proto_tree_add_item(sm_tree, hf_sm_channel, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+ proto_tree_add_item(sm_tree, hf_sm_bearer, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset +2;
+ proto_tree_add_item(sm_tree, hf_sm_len, tvb, offset, 2, ENC_BIG_ENDIAN);
+ length = tvb_get_ntohs(tvb,offset);
+ offset = offset +2;
+ proto_item_set_len(ti, 16);
+
+ if (length > 0) {
+ next_tvb = tvb_new_subset(tvb, offset, length, length);
+
+ if ((msg_type == PDU_MTP3_TO_SLT || msg_type == PDU_MTP3_FROM_SLT)) {
+ call_dissector(q931_handle, next_tvb, pinfo, tree);
+ } else {
+ call_dissector(data_handle, next_tvb, pinfo, tree);
+ }
+ }
+
+ break;
+ /* end case RUDP BSM v.1 ---------------------------------------------------------- */
+
case SM_PROTOCOL_X100:
case SM_PROTOCOL_X122:
if (!tree)
@@ -185,7 +223,7 @@ dissect_sm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case SM_PROTOCOL_X101:
if (!tree)
return;
- /* XXX Reveres enginered so this may not be correct!!!
+ /* XXX Reverse enginered so this may not be correct!!!
* EISUP - used between Cisco HSI and Cisco PGW devices,
* uses RUDP with default port number 8003.
* Protocol stack is RUDP->Cisco SM->SDP.
@@ -223,7 +261,7 @@ dissect_sm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case SM_PROTOCOL_X114:
if (!tree)
return;
- /* XXX Reveres enginered so this may not be correct!!! */
+ /* XXX Reverse enginered so this may not be correct!!! */
proto_tree_add_item(sm_tree, hf_sm_len, tvb, offset, 2, ENC_BIG_ENDIAN);
length = tvb_get_ntohs(tvb,offset);
offset = offset + 2;
@@ -365,6 +403,7 @@ proto_reg_handoff_sm(void)
{
sdp_handle = find_dissector("sdp");
mtp3_handle = find_dissector("mtp3");
+ q931_handle = find_dissector("q931");
data_handle = find_dissector("data");
}
diff --git a/epan/dissectors/packet-clnp.c b/epan/dissectors/packet-clnp.c
index af687f5f5a..d895565b70 100644
--- a/epan/dissectors/packet-clnp.c
+++ b/epan/dissectors/packet-clnp.c
@@ -29,8 +29,8 @@
#endif
#include <glib.h>
-#include <epan/prefs.h>
#include <epan/packet.h>
+#include <epan/prefs.h>
#include <epan/reassemble.h>
#include "packet-frame.h"
#include "packet-osi.h"
@@ -188,33 +188,34 @@ static gboolean clnp_reassemble = TRUE;
* CLNP part / main entry point
*/
-static void dissect_clnp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static void
+dissect_clnp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *clnp_tree = NULL;
- proto_item *ti;
- guint8 cnf_proto_id;
- guint8 cnf_hdr_len;
- guint8 cnf_vers;
- guint8 cnf_ttl;
- guint8 cnf_type;
- char flag_string[6+1];
- const char *pdu_type_string;
- proto_tree *type_tree;
- guint16 segment_length;
- guint16 du_id = 0;
- guint16 segment_offset = 0;
- guint16 cnf_cksum;
- cksum_status_t cksum_status;
- int offset;
- guchar src_len, dst_len, nsel, opt_len = 0;
- const guint8 *dst_addr, *src_addr;
- guint next_length;
- proto_tree *discpdu_tree;
- gboolean save_in_error_pkt;
- fragment_data *fd_head;
- tvbuff_t *next_tvb;
- gboolean update_col_info = TRUE;
- gboolean save_fragmented;
+ proto_tree *clnp_tree = NULL;
+ proto_item *ti;
+ guint8 cnf_proto_id;
+ guint8 cnf_hdr_len;
+ guint8 cnf_vers;
+ guint8 cnf_ttl;
+ guint8 cnf_type;
+ char flag_string[6+1];
+ const char *pdu_type_string;
+ proto_tree *type_tree;
+ guint16 segment_length;
+ guint16 du_id = 0;
+ guint16 segment_offset = 0;
+ guint16 cnf_cksum;
+ cksum_status_t cksum_status;
+ int offset;
+ guchar src_len, dst_len, nsel, opt_len = 0;
+ const guint8 *dst_addr, *src_addr;
+ guint next_length;
+ proto_tree *discpdu_tree;
+ gboolean save_in_error_pkt;
+ fragment_data *fd_head;
+ tvbuff_t *next_tvb;
+ gboolean update_col_info = TRUE;
+ gboolean save_fragmented;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "CLNP");
col_clear(pinfo->cinfo, COL_INFO);
@@ -510,7 +511,7 @@ static void dissect_clnp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
part of the discarded PDU", i.e. it's like an ICMP error;
dissect it as a CLNP PDU. */
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s NPDU %s", pdu_type_string, flag_string);
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s NPDU %s", pdu_type_string, flag_string);
next_length = tvb_length_remaining(tvb, offset);
if (next_length != 0) {
/* We have payload; dissect it. */
@@ -551,7 +552,8 @@ clnp_reassemble_init(void)
reassembled_table_init(&clnp_reassembled_table);
}
-void proto_register_clnp(void)
+void
+proto_register_clnp(void)
{
static hf_register_info hf[] = {
{ &hf_clnp_id,
diff --git a/epan/dissectors/packet-cmpp.c b/epan/dissectors/packet-cmpp.c
index f6bdf478ab..c5b381a7f2 100644
--- a/epan/dissectors/packet-cmpp.c
+++ b/epan/dissectors/packet-cmpp.c
@@ -27,18 +27,16 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <epan/packet.h>
#include <epan/dissectors/packet-tcp.h>
-#define CMPP_FIX_HEADER_LENGTH 12
+#define CMPP_FIX_HEADER_LENGTH 12
#define CMPP_DELIVER_REPORT_LEN 71
/* These are not registered with IANA */
-#define CMPP_SP_LONG_PORT 7890
-#define CMPP_SP_SHORT_PORT 7900
-#define CMPP_ISMG_LONG_PORT 7930
+#define CMPP_SP_LONG_PORT 7890
+#define CMPP_SP_SHORT_PORT 7900
+#define CMPP_ISMG_LONG_PORT 7930
#define CMPP_ISMG_SHORT_PORT 9168
/* Initialize the protocol and registered fields */
@@ -152,39 +150,39 @@ static gboolean cmpp_desegment = TRUE;
#define CMPP_PUSH_MO_ROUTE_UPDATE_RESP 0x80000016
#define CMPP_GET_MO_ROUTE_RESP 0x80000017
static const value_string vals_command_Id[] = { /* Operation */
- { CMPP_CONNECT, "CMPP_CONNECT" },
- { CMPP_CONNECT_RESP, "CMPP_CONNECT_RESP" },
- { CMPP_TERMINATE, "CMPP_TERMINATE" },
- { CMPP_TERMINATE_RESP, "CMPP_TERMINATE_RESP" },
- { CMPP_SUBMIT, "CMPP_SUBMIT" },
- { CMPP_SUBMIT_RESP, "CMPP_SUBMIT_RESP" },
- { CMPP_DELIVER, "CMPP_DELIVER" },
- { CMPP_DELIVER_RESP, "CMPP_DELIVER_RESP" },
- { CMPP_QUERY, "CMPP_QUERY" },
- { CMPP_QUERY_RESP, "CMPP_QUERY" },
- { CMPP_CANCEL, "CMPP_CANCEL" },
- { CMPP_CANCEL_RESP, "CMPP_CANCEL_RESP" },
- { CMPP_ACTIVE_TEST, "CMPP_ACTIVE_TEST" },
- { CMPP_ACTIVE_TEST_RESP, "CMPP_ACTIVE_TEST_RESP" },
- { CMPP_FWD, "CMPP_FWD" },
- { CMPP_FWD_RESP, "CMPP_FWD_RESP" },
- { CMPP_MT_ROUTE, "CMPP_MT_ROUTE" },
- { CMPP_MO_ROUTE, "CMPP_MO_ROUTE" },
- { CMPP_GET_MT_ROUTE, "CMPP_GET_MT_ROUTE" },
- { CMPP_MT_ROUTE_UPDATE, "CMPP_MT_ROUTE_UPDATE" },
- { CMPP_MO_ROUTE_UPDATE, "CMPP_MO_ROUTE_UPDATE" },
- { CMPP_PUSH_MT_ROUTE_UPDATE, "CMPP_PUSH_MT_ROUTE_UPDATE" },
- { CMPP_PUSH_MO_ROUTE_UPDATE, "CMPP_PUSH_MO_ROUTE_UPDATE" },
- { CMPP_GET_MO_ROUTE, "CMPP_GET_MO_ROUTE" },
- { CMPP_MT_ROUTE_RESP, "CMPP_MT_ROUTE_RESP" },
- { CMPP_MO_ROUTE_RESP, "CMPP_MO_ROUTE_RESP" },
- { CMPP_GET_MT_ROUTE_RESP, "CMPP_GET_MT_ROUTE_RESP" },
- { CMPP_MT_ROUTE_UPDATE_RESP, "CMPP_MT_ROUTE_UPDATE_RESP" },
- { CMPP_MO_ROUTE_UPDATE_RESP, "CMPP_MO_ROUTE_UPDATE_RESP" },
- { CMPP_PUSH_MT_ROUTE_UPDATE_RESP, "CMPP_PUSH_MT_ROUTE_UPDATE_RESP" },
- { CMPP_PUSH_MO_ROUTE_UPDATE_RESP, "CMPP_PUSH_MO_ROUTE_UPDATE_RESP" },
- { CMPP_GET_MO_ROUTE_RESP, "CMPP_GET_MO_ROUTE_RESP" },
- { 0, NULL }
+ { CMPP_CONNECT, "CMPP_CONNECT" },
+ { CMPP_CONNECT_RESP, "CMPP_CONNECT_RESP" },
+ { CMPP_TERMINATE, "CMPP_TERMINATE" },
+ { CMPP_TERMINATE_RESP, "CMPP_TERMINATE_RESP" },
+ { CMPP_SUBMIT, "CMPP_SUBMIT" },
+ { CMPP_SUBMIT_RESP, "CMPP_SUBMIT_RESP" },
+ { CMPP_DELIVER, "CMPP_DELIVER" },
+ { CMPP_DELIVER_RESP, "CMPP_DELIVER_RESP" },
+ { CMPP_QUERY, "CMPP_QUERY" },
+ { CMPP_QUERY_RESP, "CMPP_QUERY" },
+ { CMPP_CANCEL, "CMPP_CANCEL" },
+ { CMPP_CANCEL_RESP, "CMPP_CANCEL_RESP" },
+ { CMPP_ACTIVE_TEST, "CMPP_ACTIVE_TEST" },
+ { CMPP_ACTIVE_TEST_RESP, "CMPP_ACTIVE_TEST_RESP" },
+ { CMPP_FWD, "CMPP_FWD" },
+ { CMPP_FWD_RESP, "CMPP_FWD_RESP" },
+ { CMPP_MT_ROUTE, "CMPP_MT_ROUTE" },
+ { CMPP_MO_ROUTE, "CMPP_MO_ROUTE" },
+ { CMPP_GET_MT_ROUTE, "CMPP_GET_MT_ROUTE" },
+ { CMPP_MT_ROUTE_UPDATE, "CMPP_MT_ROUTE_UPDATE" },
+ { CMPP_MO_ROUTE_UPDATE, "CMPP_MO_ROUTE_UPDATE" },
+ { CMPP_PUSH_MT_ROUTE_UPDATE, "CMPP_PUSH_MT_ROUTE_UPDATE" },
+ { CMPP_PUSH_MO_ROUTE_UPDATE, "CMPP_PUSH_MO_ROUTE_UPDATE" },
+ { CMPP_GET_MO_ROUTE, "CMPP_GET_MO_ROUTE" },
+ { CMPP_MT_ROUTE_RESP, "CMPP_MT_ROUTE_RESP" },
+ { CMPP_MO_ROUTE_RESP, "CMPP_MO_ROUTE_RESP" },
+ { CMPP_GET_MT_ROUTE_RESP, "CMPP_GET_MT_ROUTE_RESP" },
+ { CMPP_MT_ROUTE_UPDATE_RESP, "CMPP_MT_ROUTE_UPDATE_RESP" },
+ { CMPP_MO_ROUTE_UPDATE_RESP, "CMPP_MO_ROUTE_UPDATE_RESP" },
+ { CMPP_PUSH_MT_ROUTE_UPDATE_RESP, "CMPP_PUSH_MT_ROUTE_UPDATE_RESP" },
+ { CMPP_PUSH_MO_ROUTE_UPDATE_RESP, "CMPP_PUSH_MO_ROUTE_UPDATE_RESP" },
+ { CMPP_GET_MO_ROUTE_RESP, "CMPP_GET_MO_ROUTE_RESP" },
+ { 0, NULL }
};
static const value_string vals_connect_resp_status[] = { /* Connection Status */
@@ -266,13 +264,13 @@ cmpp_octet_string(proto_tree *tree, tvbuff_t *tvb, gint field, gint offset, gint
static char*
cmpp_version(proto_tree *tree, tvbuff_t *tvb, gint field, gint offset)
{
- gint8 version, major, minor;
- char *strval;
+ gint8 version, major, minor;
+ char *strval;
version = tvb_get_guint8(tvb, offset);
- minor = version & 0x0F;
- major = (version & 0xF0) >> 4;
- strval = ep_strdup_printf("%02u.%02u", major, minor);
+ minor = version & 0x0F;
+ major = (version & 0xF0) >> 4;
+ strval = ep_strdup_printf("%02u.%02u", major, minor);
/* TODO: the version should be added as a uint_format */
proto_tree_add_string(tree, field, tvb, offset, 1, strval);
return strval;
@@ -281,9 +279,9 @@ cmpp_version(proto_tree *tree, tvbuff_t *tvb, gint field, gint offset)
static char*
cmpp_timestamp(proto_tree *tree, tvbuff_t *tvb, gint field, gint offset)
{
- gint8 month, day, hour, minute, second;
- gint32 timevalue;
- char *strval;
+ gint8 month, day, hour, minute, second;
+ gint32 timevalue;
+ char *strval;
timevalue = tvb_get_ntohl(tvb, offset);
second = timevalue % 100;
@@ -344,11 +342,11 @@ cmpp_boolean(proto_tree *tree, tvbuff_t *tvb, gint field, gint offset)
static void
cmpp_msg_id(proto_tree *tree, tvbuff_t *tvb, gint field, gint offset)
{
- guint8 month,day,hour,minute,second;
- guint32 ismg_code;
+ guint8 month,day,hour,minute,second;
+ guint32 ismg_code;
proto_item *pi;
proto_tree *sub_tree;
- char *strval;
+ char *strval;
pi = proto_tree_add_item(tree, field, tvb, offset, 8, ENC_BIG_ENDIAN);
sub_tree = proto_item_add_subtree(pi, ett_msg_id);
@@ -398,7 +396,7 @@ cmpp_connect_resp(proto_tree *tree, tvbuff_t *tvb)
static void
cmpp_submit(proto_tree *tree, tvbuff_t *tvb)
{
- int offset, i;
+ int offset, i;
guint8 destUsr, msgLen;
offset = CMPP_FIX_HEADER_LENGTH;
cmpp_msg_id(tree, tvb, hf_cmpp_msg_id, offset);
@@ -493,7 +491,7 @@ cmpp_deliver_report(proto_tree *tree, tvbuff_t *tvb, gint field, guint offset)
static void
cmpp_deliver(proto_tree *tree, tvbuff_t *tvb)
{
- guint offset, msgLen;
+ guint offset, msgLen;
gboolean report;
offset = CMPP_FIX_HEADER_LENGTH;
cmpp_msg_id(tree, tvb, hf_cmpp_msg_id, offset);
@@ -541,11 +539,11 @@ dissect_cmpp_tcp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
/* Set up structures needed to add the protocol subtree and manage it */
- proto_item *ti;
- proto_tree *cmpp_tree;
- guint command_id;
- guint tvb_len;
- guint total_length;
+ proto_item *ti;
+ proto_tree *cmpp_tree;
+ guint command_id;
+ guint tvb_len;
+ guint total_length;
const gchar *command_str; /* Header command string */
/* Get the length of the PDU */
@@ -625,7 +623,7 @@ dissect_cmpp_tcp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static guint
get_cmpp_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, gint offset)
{
- return tvb_get_ntohl(tvb, offset);
+ return tvb_get_ntohl(tvb, offset);
}
@@ -664,296 +662,293 @@ dissect_cmpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Register the protocol with Wireshark */
-/* this format is require because a script is used to build the C function
- that calls all the protocol registration.
-*/
void
proto_register_cmpp(void) {
/* Setup list of header fields See Section 1.6.1 for details*/
static hf_register_info hf[] = {
{ &hf_cmpp_Total_Length,
- { "Total Length", "cmpp.Total_Length",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- "Total length of the CMPP PDU.",
- HFILL }
+ { "Total Length", "cmpp.Total_Length",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "Total length of the CMPP PDU.",
+ HFILL }
},
{ &hf_cmpp_Command_Id,
- { "Command Id", "cmpp.Command_Id",
- FT_UINT32, BASE_HEX, VALS(vals_command_Id), 0x00,
- "Command Id of the CMPP messages",
- HFILL }
+ { "Command Id", "cmpp.Command_Id",
+ FT_UINT32, BASE_HEX, VALS(vals_command_Id), 0x00,
+ "Command Id of the CMPP messages",
+ HFILL }
},
{ &hf_cmpp_Sequence_Id,
- { "Sequence Id", "cmpp.Sequence_Id",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- "Sequence Id of the CMPP messages",
- HFILL }
+ { "Sequence Id", "cmpp.Sequence_Id",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "Sequence Id of the CMPP messages",
+ HFILL }
},
{ &hf_cmpp_connect_Source_Addr,
- { "Source Addr", "cmpp.connect.Source_Addr",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "Source Address, the SP_Id",
- HFILL }
+ { "Source Addr", "cmpp.connect.Source_Addr",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "Source Address, the SP_Id",
+ HFILL }
},
{ &hf_cmpp_connect_AuthenticatorSource,
- { "Authenticator Source", "cmpp.connect.AuthenticatorSource",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "Authenticator source, MD5(Source_addr + 9 zero + shared secret + timestamp)",
- HFILL }
+ { "Authenticator Source", "cmpp.connect.AuthenticatorSource",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "Authenticator source, MD5(Source_addr + 9 zero + shared secret + timestamp)",
+ HFILL }
},
{ &hf_cmpp_Version,
- { "Version", "cmpp.Version",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "CMPP Version",
- HFILL }
+ { "Version", "cmpp.Version",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "CMPP Version",
+ HFILL }
},
{ &hf_cmpp_connect_Timestamp,
- { "Timestamp", "cmpp.connect.Timestamp",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "Timestamp MM/DD HH:MM:SS",
- HFILL }
+ { "Timestamp", "cmpp.connect.Timestamp",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "Timestamp MM/DD HH:MM:SS",
+ HFILL }
},
{ &hf_cmpp_connect_resp_status,
- { "Connect Response Status", "cmpp.connect_resp.Status",
- FT_UINT32, BASE_DEC, VALS(vals_connect_resp_status), 0x00,
- "Response Status, Value higher then 4 means other error",
- HFILL }
+ { "Connect Response Status", "cmpp.connect_resp.Status",
+ FT_UINT32, BASE_DEC, VALS(vals_connect_resp_status), 0x00,
+ "Response Status, Value higher then 4 means other error",
+ HFILL }
},
{ &hf_cmpp_connect_resp_AuthenticatorISMG,
- { "SIMG Authenticate result", "cmpp.connect_resp.AuthenticatorISMG",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "Authenticator result, MD5(Status + AuthenticatorSource + shared secret)",
- HFILL }
+ { "SIMG Authenticate result", "cmpp.connect_resp.AuthenticatorISMG",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "Authenticator result, MD5(Status + AuthenticatorSource + shared secret)",
+ HFILL }
},
{ &hf_cmpp_msg_id,
- { "Msg_Id", "cmpp.Msg_Id",
- FT_UINT64, BASE_HEX, NULL, 0x00,
- "Message ID",
- HFILL }
+ { "Msg_Id", "cmpp.Msg_Id",
+ FT_UINT64, BASE_HEX, NULL, 0x00,
+ "Message ID",
+ HFILL }
},
{ &hf_cmpp_submit_pk_total,
- { "Number of Part", "cmpp.submit.Pk_total",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- "Total number of parts of the message with the same Msg_Id, start from 1",
- HFILL }
+ { "Number of Part", "cmpp.submit.Pk_total",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ "Total number of parts of the message with the same Msg_Id, start from 1",
+ HFILL }
},
{ &hf_cmpp_submit_pk_number,
- { "Part Number", "cmpp.submit.Pk_number",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- "Part number of the message with the same Msg_Id, start from 1",
- HFILL }
+ { "Part Number", "cmpp.submit.Pk_number",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ "Part number of the message with the same Msg_Id, start from 1",
+ HFILL }
},
{ &hf_msg_id_timestamp,
- { "Timestamp", "cmpp.Msg_Id.timestamp",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "Timestamp MM/DD HH:MM:SS Bit 64 ~ 39",
- HFILL }
+ { "Timestamp", "cmpp.Msg_Id.timestamp",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "Timestamp MM/DD HH:MM:SS Bit 64 ~ 39",
+ HFILL }
},
{ &hf_msg_id_ismg_code,
- { "ISMG Code", "cmpp.Msg_Id.ismg_code",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- "ISMG Code, bit 38 ~ 17",
- HFILL }
+ { "ISMG Code", "cmpp.Msg_Id.ismg_code",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "ISMG Code, bit 38 ~ 17",
+ HFILL }
},
{ &hf_msg_id_sequence_id,
- { "Msg_Id sequence Id", "cmpp.Msg_Id.sequence_id",
- FT_UINT16, BASE_DEC, NULL, 0x00,
- "Msg_Id sequence Id, bit 16 ~ 1",
- HFILL }
+ { "Msg_Id sequence Id", "cmpp.Msg_Id.sequence_id",
+ FT_UINT16, BASE_DEC, NULL, 0x00,
+ "Msg_Id sequence Id, bit 16 ~ 1",
+ HFILL }
},
{ &hf_cmpp_submit_Registered_Delivery,
- { "Registered Delivery", "cmpp.submit.Registered_Delivery",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "Registered Delivery flag",
- HFILL }
+ { "Registered Delivery", "cmpp.submit.Registered_Delivery",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "Registered Delivery flag",
+ HFILL }
},
{ &hf_cmpp_submit_Msg_level,
- { "Message Level", "cmpp.submit.Msg_level",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- NULL,
- HFILL }
+ { "Message Level", "cmpp.submit.Msg_level",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ NULL,
+ HFILL }
},
{ &hf_cmpp_Service_Id,
- { "Service ID", "cmpp.Servicd_Id",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "Service ID, a mix of characters, numbers and symbol",
- HFILL }
+ { "Service ID", "cmpp.Servicd_Id",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "Service ID, a mix of characters, numbers and symbol",
+ HFILL }
},
{ &hf_cmpp_submit_Fee_UserType,
- { "Charging Informations", "cmpp.submit.Fee_UserType",
- FT_UINT8, BASE_DEC, VALS(vals_submit_Fee_UserType), 0x00,
- "Charging Informations, if value is 3, this field will not be used",
- HFILL }
+ { "Charging Informations", "cmpp.submit.Fee_UserType",
+ FT_UINT8, BASE_DEC, VALS(vals_submit_Fee_UserType), 0x00,
+ "Charging Informations, if value is 3, this field will not be used",
+ HFILL }
},
{ &hf_cmpp_submit_Fee_terminal_Id,
- { "Fee Terminal ID", "cmpp.submit.Fee_terminal_Id",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "Fee Terminal ID, Valid only when Fee_UserType is 3",
- HFILL }
+ { "Fee Terminal ID", "cmpp.submit.Fee_terminal_Id",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "Fee Terminal ID, Valid only when Fee_UserType is 3",
+ HFILL }
},
{ &hf_cmpp_submit_Fee_terminal_type,
- { "Fake Fee Terminal", "cmpp.submit.Fee_terminal_type",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "Fee terminal type, 0 is real, 1 is fake",
- HFILL }
+ { "Fake Fee Terminal", "cmpp.submit.Fee_terminal_type",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "Fee terminal type, 0 is real, 1 is fake",
+ HFILL }
},
{ &hf_cmpp_TP_pId,
- { "TP pId", "cmpp.TP_pId",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- "GSM TP pId Field",
- HFILL }
+ { "TP pId", "cmpp.TP_pId",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ "GSM TP pId Field",
+ HFILL }
},
{ &hf_cmpp_TP_udhi,
- { "TP udhi", "cmpp.TP_udhi",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- "GSM TP udhi field",
- HFILL }
+ { "TP udhi", "cmpp.TP_udhi",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ "GSM TP udhi field",
+ HFILL }
},
{ &hf_cmpp_Msg_Fmt,
- { "Message Format", "cmpp.Msg_Fmt",
- FT_UINT8, BASE_DEC, VALS(vals_Msg_Fmt), 0x00,
- NULL,
- HFILL }
+ { "Message Format", "cmpp.Msg_Fmt",
+ FT_UINT8, BASE_DEC, VALS(vals_Msg_Fmt), 0x00,
+ NULL,
+ HFILL }
},
{ &hf_cmpp_submit_Msg_src,
- { "Message Source SP_Id", "cmpp.submit.Msg_src",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "Message source SP ID",
- HFILL }
+ { "Message Source SP_Id", "cmpp.submit.Msg_src",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "Message source SP ID",
+ HFILL }
},
{ &hf_cmpp_submit_FeeType, /* TODO Replace this with a vals_string*/
- { "Fee Type", "cmpp.submit.FeeType",
- FT_STRING, BASE_NONE, NULL, 0x00,
- NULL,
- HFILL }
+ { "Fee Type", "cmpp.submit.FeeType",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL,
+ HFILL }
},
{ &hf_cmpp_submit_FeeCode,
- { "Fee Code", "cmpp.submit.FeeCode",
- FT_STRING, BASE_NONE, NULL, 0x00,
- NULL,
- HFILL }
+ { "Fee Code", "cmpp.submit.FeeCode",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL,
+ HFILL }
},
{ &hf_cmpp_submit_Valld_Time,
- { "Valid time", "cmpp.submit.Valld_Time",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "Message Valid Time, format follow SMPP 3.3",
- HFILL }
+ { "Valid time", "cmpp.submit.Valld_Time",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "Message Valid Time, format follow SMPP 3.3",
+ HFILL }
},
{ &hf_cmpp_submit_At_Time,
- { "Send time", "cmpp.submit.At_time",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "Message send time, format following SMPP 3.3",
- HFILL }
+ { "Send time", "cmpp.submit.At_time",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "Message send time, format following SMPP 3.3",
+ HFILL }
},
{ &hf_cmpp_submit_Src_Id,
- { "Source ID", "cmpp.submit.Src_Id",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "This value matches SMPP submit_sm source_addr field",
- HFILL }
+ { "Source ID", "cmpp.submit.Src_Id",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "This value matches SMPP submit_sm source_addr field",
+ HFILL }
},
{ &hf_cmpp_submit_DestUsr_tl,
- { "Destination Address Count", "cmpp.submit.DestUsr_tl",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- "Number of destination address, must smaller then 100",
- HFILL }
+ { "Destination Address Count", "cmpp.submit.DestUsr_tl",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ "Number of destination address, must smaller then 100",
+ HFILL }
},
{ &hf_cmpp_Dest_terminal_Id,
- { "Destination Address", "cmpp.Dest_terminal_Id",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "MSISDN number which receive the SMS",
- HFILL }
+ { "Destination Address", "cmpp.Dest_terminal_Id",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "MSISDN number which receive the SMS",
+ HFILL }
},
{ &hf_cmpp_submit_Dest_terminal_type,
- { "Fake Destination Terminal", "cmpp.submit.Dest_terminal_type",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "destination terminal type, 0 is real, 1 is fake",
- HFILL }
+ { "Fake Destination Terminal", "cmpp.submit.Dest_terminal_type",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "destination terminal type, 0 is real, 1 is fake",
+ HFILL }
},
{ &hf_cmpp_Msg_Length,
- { "Message length", "cmpp.Msg_Length",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- "SMS Message length, ASCII must be <= 160 bytes, other must be <= 140 bytes",
- HFILL }
+ { "Message length", "cmpp.Msg_Length",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ "SMS Message length, ASCII must be <= 160 bytes, other must be <= 140 bytes",
+ HFILL }
},
{ &hf_cmpp_Msg_Content,
- { "Message Content", "cmpp.Msg_Content",
- FT_STRING, BASE_NONE, NULL, 0x00,
- NULL,
- HFILL }
+ { "Message Content", "cmpp.Msg_Content",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL,
+ HFILL }
},
{ &hf_cmpp_LinkID,
- { "Link ID", "cmpp.LinkID",
- FT_STRING, BASE_NONE, NULL, 0x00,
- NULL,
- HFILL }
+ { "Link ID", "cmpp.LinkID",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL,
+ HFILL }
},
{ &hf_cmpp_submit_resp_Result,
- { "Result", "cmpp.submit_resp.Result",
- FT_UINT32, BASE_DEC, VALS(vals_Submit_Resp_Result), 0x00,
- "Submit Result",
- HFILL }
+ { "Result", "cmpp.submit_resp.Result",
+ FT_UINT32, BASE_DEC, VALS(vals_Submit_Resp_Result), 0x00,
+ "Submit Result",
+ HFILL }
},
{ &hf_cmpp_deliver_Dest_Id,
- { "Destination ID", "cmpp.deliver.Dest_Id",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "SP Service ID or server number",
- HFILL }
+ { "Destination ID", "cmpp.deliver.Dest_Id",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "SP Service ID or server number",
+ HFILL }
},
{ &hf_cmpp_deliver_Src_terminal_Id,
- { "Src_terminal_Id", "cmpp.deliver.Src_terminal_Id",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "Source MSISDN number, if it is deliver report, this will be the CMPP_SUBMIT destination number",
- HFILL }
+ { "Src_terminal_Id", "cmpp.deliver.Src_terminal_Id",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "Source MSISDN number, if it is deliver report, this will be the CMPP_SUBMIT destination number",
+ HFILL }
},
{ &hf_cmpp_deliver_Src_terminal_type,
- { "Fake source terminal type", "cmpp.deliver.Src_terminal_type",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "Type of the source terminal, can be 0 (real) or 1 (fake)",
- HFILL }
+ { "Fake source terminal type", "cmpp.deliver.Src_terminal_type",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "Type of the source terminal, can be 0 (real) or 1 (fake)",
+ HFILL }
},
{ &hf_cmpp_deliver_Registered_Delivery,
- { "Deliver Report", "cmpp.deliver.Registered_Delivery",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "The message is a deliver report if this value = 1",
- HFILL }
+ { "Deliver Report", "cmpp.deliver.Registered_Delivery",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "The message is a deliver report if this value = 1",
+ HFILL }
},
{ &hf_cmpp_deliver_Report,
- { "Detail Deliver Report", "cmpp.deliver.Report",
- FT_NONE, BASE_NONE, NULL, 0x00,
- "The detail report",
- HFILL }
+ { "Detail Deliver Report", "cmpp.deliver.Report",
+ FT_NONE, BASE_NONE, NULL, 0x00,
+ "The detail report",
+ HFILL }
},
{ &hf_cmpp_deliver_Report_Stat,
- { "Deliver Status", "cmpp.deliver.Report.Status",
- FT_STRING, BASE_NONE, NULL, 0x00,
- NULL,
- HFILL }
+ { "Deliver Status", "cmpp.deliver.Report.Status",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL,
+ HFILL }
},
{ &hf_cmpp_deliver_Report_Submit_time,
- { "Submit_time", "cmpp.deliver.Report.Submit_time",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "Format YYMMDDHHMM",
- HFILL }
+ { "Submit_time", "cmpp.deliver.Report.Submit_time",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "Format YYMMDDHHMM",
+ HFILL }
},
{ &hf_cmpp_deliver_Report_Done_time,
- { "Done_time", "cmpp.deliver.Report.Done_time",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "Format YYMMDDHHMM",
- HFILL }
+ { "Done_time", "cmpp.deliver.Report.Done_time",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "Format YYMMDDHHMM",
+ HFILL }
},
{ &hf_cmpp_deliver_Report_SMSC_sequence,
- { "SMSC_sequence", "cmpp.Report.SMSC_sequence",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- "Sequence number",
- HFILL }
+ { "SMSC_sequence", "cmpp.Report.SMSC_sequence",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "Sequence number",
+ HFILL }
},
{ &hf_cmpp_deliver_resp_Result,
- { "Result", "cmpp.deliver_resp.Result",
- FT_UINT32, BASE_DEC, VALS(vals_Deliver_Resp_Result), 0x00,
- "Deliver Result",
- HFILL }
+ { "Result", "cmpp.deliver_resp.Result",
+ FT_UINT32, BASE_DEC, VALS(vals_Deliver_Resp_Result), 0x00,
+ "Deliver Result",
+ HFILL }
}
};
diff --git a/epan/dissectors/packet-coap.c b/epan/dissectors/packet-coap.c
index 7cc1ddff73..081ebb1bac 100644
--- a/epan/dissectors/packet-coap.c
+++ b/epan/dissectors/packet-coap.c
@@ -1,4 +1,3 @@
-#include <stdio.h>
/* packet-coap.c
* Routines for COAP packet disassembly
* draft-ietf-core-coap-07.txt
@@ -208,7 +207,7 @@ dissect_coap_opt_string(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *subtr
{
guint8 *hoststr = NULL;
- proto_tree_add_item(subtree, hfindex, tvb, offset, opt_length, FALSE);
+ proto_tree_add_item(subtree, hfindex, tvb, offset, opt_length, ENC_UTF_8|ENC_NA);
/* forming a uri-string */
switch (opt_code) {
@@ -520,7 +519,7 @@ dissect_coap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
proto_item *payload_item = NULL;
tvbuff_t *payload_tvb;
guint payload_length = coap_length - offset;
- char *ctype_str_default = "";
+ const char *ctype_str_default = "";
/*
* TODO: should the content type be canonicalized ?
diff --git a/epan/dissectors/packet-cops.c b/epan/dissectors/packet-cops.c
index 860e733b25..f6cf412207 100644
--- a/epan/dissectors/packet-cops.c
+++ b/epan/dissectors/packet-cops.c
@@ -1402,7 +1402,7 @@ static int dissect_cops_pr_object_data(tvbuff_t *tvb, packet_info *pinfo, guint3
ti = proto_tree_add_text(tree, tvb, offset, len, "Contents:");
asn_tree = proto_item_add_subtree(ti, ett_cops_asn1);
- offset = dissect_ber_object_identifier(FALSE, &actx, asn_tree, tvb, offset, hf_cops_pprid_oid, &oid_tvb);
+ dissect_ber_object_identifier(FALSE, &actx, asn_tree, tvb, offset, hf_cops_pprid_oid, &oid_tvb);
if (oid_tvb) {
guint encoid_len = tvb_length_remaining(oid_tvb,0);
@@ -1497,6 +1497,7 @@ static int dissect_cops_pr_object_data(tvbuff_t *tvb, packet_info *pinfo, guint3
gint32 ber_tag;
guint32 ber_length;
gboolean ber_ind;
+ int hfid;
offset = get_ber_identifier(tvb, offset, &ber_class, &ber_pc, &ber_tag);
offset = get_ber_length(tvb, offset, &ber_length, &ber_ind);
@@ -1513,13 +1514,36 @@ static int dissect_cops_pr_object_data(tvbuff_t *tvb, packet_info *pinfo, guint3
* does not work here.
* -- a lazy lego
*/
+ hfid = oid_info->value_hfid;
+ oid_info = emem_tree_lookup32((*oid_info_p)->children,oid_info->subid+1);
+ } else
+ hfid = cops_tag_cls2syntax( ber_tag, ber_class );
+ switch (proto_registrar_get_ftype(hfid)) {
+
+ case FT_INT8:
+ case FT_INT16:
+ case FT_INT24:
+ case FT_INT32:
+ case FT_INT64:
+ case FT_UINT8:
+ case FT_UINT16:
+ case FT_UINT24:
+ case FT_UINT32:
+ case FT_UINT64:
+ case FT_BOOLEAN:
+ case FT_FLOAT:
+ case FT_DOUBLE:
+ case FT_IPv4:
+ proto_tree_add_item(asn_tree,hfid,tvb,offset,ber_length,ENC_BIG_ENDIAN);
+ break;
- proto_tree_add_item(asn_tree,oid_info->value_hfid,tvb,offset,ber_length,FALSE);
+ case FT_STRING:
+ proto_tree_add_item(asn_tree,hfid,tvb,offset,ber_length,ENC_ASCII|ENC_NA);
+ break;
- oid_info = emem_tree_lookup32((*oid_info_p)->children,oid_info->subid+1);
- } else {
- int hfid = cops_tag_cls2syntax( ber_tag, ber_class );
- proto_tree_add_item(asn_tree,hfid,tvb,offset,ber_length,FALSE);
+ default:
+ proto_tree_add_item(asn_tree,hfid,tvb,offset,ber_length,ENC_NA);
+ break;
}
offset += ber_length;
@@ -1534,7 +1558,7 @@ static int dissect_cops_pr_object_data(tvbuff_t *tvb, packet_info *pinfo, guint3
ti = proto_tree_add_text(tree, tvb, offset, len, "Contents:");
asn_tree = proto_item_add_subtree(ti, ett_cops_asn1);
- offset = dissect_ber_object_identifier(FALSE, &actx, asn_tree, tvb, offset, hf_cops_errprid_oid, NULL);
+ dissect_ber_object_identifier(FALSE, &actx, asn_tree, tvb, offset, hf_cops_errprid_oid, NULL);
break;
}
@@ -3166,11 +3190,12 @@ cops_amid(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
/* Application Manager Tag */
info_to_display(tvb,stt,offset,2,"Application Manager ID Application Manager Tag", NULL,FMT_DEC,&hf_cops_pcmm_amid_am_tag);
+
}
/* Cops - Section : Multimedia Gate Specifications */
-static void
+static int
cops_mm_gate_spec(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
proto_item *ti;
proto_tree *stt, *object_tree;
@@ -3223,10 +3248,12 @@ cops_mm_gate_spec(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
/* Timer T4 Value */
info_to_display(tvb,stt,offset,2,"Timer T4 Value (sec)",NULL,FMT_DEC,&hf_cops_pcmm_gate_spec_timer_t4);
offset += 2;
+
+ return offset;
}
/* Cops - Section : Classifier */
-static void
+static int
cops_classifier(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset, gboolean extended) {
proto_tree *stt;
@@ -3310,10 +3337,12 @@ cops_classifier(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset, gboolean
/* 3 octets Not specified */
offset += 3;
+
+ return offset;
}
/* Cops - Section : IPv6 Classifier */
-static void
+static int
cops_ipv6_classifier(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
proto_tree *stt;
@@ -3396,10 +3425,12 @@ cops_ipv6_classifier(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
/* 3 octets Not specified */
offset += 3;
+
+ return offset;
}
/* Cops - Section : Gate Specifications */
-static void
+static int
cops_flow_spec(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
proto_item *ti;
proto_tree *stt, *object_tree;
@@ -3452,7 +3483,7 @@ cops_flow_spec(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
info_to_display(tvb,object_tree,offset,4,"Slack Term",NULL,FMT_DEC,&hf_cops_pc_slack_term);
offset += 4;
- if (n < 64) return;
+ if (n < 64) return offset;
/* Reserved Envelope */
ti = proto_tree_add_text(stt, tvb, offset, 28, "Reserved Envelope");
@@ -3486,7 +3517,7 @@ cops_flow_spec(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
info_to_display(tvb,object_tree,offset,4,"Slack Term",NULL,FMT_DEC,&hf_cops_pc_slack_term);
offset += 4;
- if (n < 92) return;
+ if (n < 92) return offset;
/* Committed Envelope */
ti = proto_tree_add_text(stt, tvb, offset, 28, "Committed Envelope");
@@ -3518,10 +3549,13 @@ cops_flow_spec(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
/* Slack Term */
info_to_display(tvb,object_tree,offset,4,"Slack Term",NULL,FMT_DEC,&hf_cops_pc_slack_term);
+ offset += 4;
+
+ return offset;
}
/* Cops - Section : DOCSIS Service Class Name */
-static void
+static int
cops_docsis_service_class_name(tvbuff_t *tvb, proto_tree *st, guint object_len, guint32 offset) {
proto_tree *stt;
@@ -3543,6 +3577,8 @@ cops_docsis_service_class_name(tvbuff_t *tvb, proto_tree *st, guint object_len,
} else {
proto_tree_add_text(stt, tvb, offset - 8, 2, "Invalid object length: %u", object_len);
}
+
+ return offset;
}
/* New functions were made with the i04 suffix to maintain backward compatibility with I03
@@ -3552,7 +3588,7 @@ cops_docsis_service_class_name(tvbuff_t *tvb, proto_tree *st, guint object_len,
*/
/* Cops - Section : Best Effort Service */
-static void
+static int
cops_best_effort_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset, gboolean i05) {
proto_item *ti;
proto_tree *stt, *object_tree;
@@ -3617,7 +3653,7 @@ cops_best_effort_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32
offset += 4;
}
- if (n < 56) return;
+ if (n < 56) return offset;
/* Reserved Envelope */
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 36 : 32, "Reserved Envelope");
@@ -3668,7 +3704,7 @@ cops_best_effort_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32
offset += 4;
}
- if (n < 80) return;
+ if (n < 80) return offset;
/* Committed Envelope */
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 36 : 32, "Committed Envelope");
@@ -3718,10 +3754,12 @@ cops_best_effort_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32
info_to_display(tvb,object_tree,offset,4,"Attribute Aggregation Rule Mask",NULL,FMT_DEC,&hf_cops_pcmm_att_aggr_rule_mask);
offset += 4;
}
+
+ return offset;
}
/* Cops - Section : Non-Real-Time Polling Service */
-static void
+static int
cops_non_real_time_polling_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset, gboolean i05) {
proto_item *ti;
proto_tree *stt, *object_tree;
@@ -3790,7 +3828,7 @@ cops_non_real_time_polling_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint
offset += 4;
}
- if (n < 64) return;
+ if (n < 64) return offset;
/* Reserved Envelope */
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 40 : 36, "Reserved Envelope");
@@ -3845,7 +3883,7 @@ cops_non_real_time_polling_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint
offset += 4;
}
- if (n < 92) return;
+ if (n < 92) return offset;
/* Committed Envelope */
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 40 : 36, "Committed Envelope");
@@ -3899,10 +3937,12 @@ cops_non_real_time_polling_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint
info_to_display(tvb,object_tree,offset,4,"Attribute Aggregation Rule Mask",NULL,FMT_DEC,&hf_cops_pcmm_att_aggr_rule_mask);
offset += 4;
}
+
+ return offset;
}
/* Cops - Section : Real-Time Polling Service */
-static void
+static int
cops_real_time_polling_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset, gboolean i05) {
proto_item *ti;
proto_tree *stt, *object_tree;
@@ -3968,7 +4008,7 @@ cops_real_time_polling_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, g
offset += 4;
}
- if (n < 64) return;
+ if (n < 64) return offset;
/* Reserved Envelope */
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 40 : 36, "Reserved Envelope");
@@ -4020,7 +4060,7 @@ cops_real_time_polling_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, g
offset += 4;
}
- if (n < 92) return;
+ if (n < 92) return offset;
/* Committed Envelope */
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 40 : 36, "Committed Envelope");
@@ -4071,10 +4111,12 @@ cops_real_time_polling_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, g
info_to_display(tvb,object_tree,offset,4,"Attribute Aggregation Rule Mask",NULL,FMT_DEC,&hf_cops_pcmm_att_aggr_rule_mask);
offset += 4;
}
+
+ return offset;
}
/* Cops - Section : Unsolicited Grant Service */
-static void
+static int
cops_unsolicited_grant_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset, gboolean i05) {
proto_item *ti;
proto_tree *stt, *object_tree;
@@ -4131,7 +4173,7 @@ cops_unsolicited_grant_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, g
offset += 4;
}
- if (n < 40) return;
+ if (n < 40) return offset;
/* Reserved Envelope */
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 28 : 24, "Reserved Envelope");
@@ -4174,7 +4216,7 @@ cops_unsolicited_grant_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, g
offset += 4;
}
- if (n < 56) return;
+ if (n < 56) return offset;
/* Committed Envelope */
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 28 : 24, "Committed Envelope");
@@ -4216,10 +4258,12 @@ cops_unsolicited_grant_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, g
info_to_display(tvb,object_tree,offset,4,"Attribute Aggregation Rule Mask",NULL,FMT_DEC,&hf_cops_pcmm_att_aggr_rule_mask);
offset += 4;
}
+
+ return offset;
}
/* Cops - Section : Unsolicited Grant Service with Activity Detection */
-static void
+static int
cops_ugs_with_activity_detection_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset, gboolean i05) {
proto_item *ti;
proto_tree *stt, *object_tree;
@@ -4284,7 +4328,7 @@ cops_ugs_with_activity_detection_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n,
offset += 4;
}
- if (n < 56) return;
+ if (n < 56) return offset;
/* Reserved Envelope */
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 36 : 32, "Reserved Envelope");
@@ -4335,7 +4379,7 @@ cops_ugs_with_activity_detection_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n,
offset += 4;
}
- if (n < 80) return;
+ if (n < 80) return offset;
/* Committed Envelope */
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 36 : 32, "Committed Envelope");
@@ -4385,10 +4429,12 @@ cops_ugs_with_activity_detection_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n,
info_to_display(tvb,object_tree,offset,4,"Attribute Aggregation Rule Mask",NULL,FMT_DEC,&hf_cops_pcmm_att_aggr_rule_mask);
offset += 4;
}
+
+ return offset;
}
/* Cops - Section : Downstream Service */
-static void
+static int
cops_downstream_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset, gboolean i05) {
proto_item *ti;
proto_tree *stt, *object_tree;
@@ -4461,7 +4507,7 @@ cops_downstream_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32
offset += 4;
}
- if (n < 56) return;
+ if (n < 56) return offset;
/* Reserved Envelope */
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 40 : 36, "Reserved Envelope");
@@ -4520,7 +4566,7 @@ cops_downstream_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32
offset += 4;
}
- if (n < 80) return;
+ if (n < 80) return offset;
/* Committed Envelope */
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 40 : 36, "Committed Envelope");
@@ -4578,10 +4624,12 @@ cops_downstream_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32
info_to_display(tvb,object_tree,offset,4,"Attribute Aggregation Rule Mask",NULL,FMT_DEC,&hf_cops_pcmm_att_aggr_rule_mask);
offset += 4;
}
+
+ return offset;
}
/* Cops - Section : Upstream Drop */
-static void
+static int
cops_upstream_drop_i04(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
proto_tree *stt;
@@ -4595,12 +4643,14 @@ cops_upstream_drop_i04(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
proto_tree_add_text(stt, tvb, offset, 3, "Reserved");
offset += 3;
+
+ return offset;
}
/* END PCMM I04 */
/* Cops - Section : Best Effort Service */
-static void
+static int
cops_best_effort_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
proto_item *ti;
proto_tree *stt, *object_tree;
@@ -4651,7 +4701,7 @@ cops_best_effort_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset)
info_to_display(tvb,object_tree,offset,2,"Reserved",NULL,FMT_HEX,&hf_cops_pc_reserved);
offset += 2;
- if (n < 56) return;
+ if (n < 56) return offset;
/* Reserved Envelope */
ti = proto_tree_add_text(stt, tvb, offset, 24, "Reserved Envelope");
@@ -4688,7 +4738,7 @@ cops_best_effort_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset)
info_to_display(tvb,object_tree,offset,2,"Reserved",NULL,FMT_HEX,&hf_cops_pc_reserved);
offset += 2;
- if (n < 80) return;
+ if (n < 80) return offset;
/* Committed Envelope */
ti = proto_tree_add_text(stt, tvb, offset, 24, "Committed Envelope");
@@ -4724,10 +4774,12 @@ cops_best_effort_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset)
/* Reserved */
info_to_display(tvb,object_tree,offset,2,"Reserved",NULL,FMT_HEX,&hf_cops_pc_reserved);
offset += 2;
+
+ return offset;
}
/* Cops - Section : Non-Real-Time Polling Service */
-static void
+static int
cops_non_real_time_polling_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
proto_item *ti;
proto_tree *stt, *object_tree;
@@ -4782,7 +4834,7 @@ cops_non_real_time_polling_service(tvbuff_t *tvb, proto_tree *st, guint n, guint
info_to_display(tvb,object_tree,offset,4,"Nominal Polling Interval",NULL,FMT_DEC,&hf_cops_pcmm_nominal_polling_interval);
offset += 4;
- if (n < 64) return;
+ if (n < 64) return offset;
/* Reserved Envelope */
ti = proto_tree_add_text(stt, tvb, offset, 24, "Reserved Envelope");
@@ -4823,7 +4875,7 @@ cops_non_real_time_polling_service(tvbuff_t *tvb, proto_tree *st, guint n, guint
info_to_display(tvb,object_tree,offset,4,"Nominal Polling Interval",NULL,FMT_DEC,&hf_cops_pcmm_nominal_polling_interval);
offset += 4;
- if (n < 92) return;
+ if (n < 92) return offset;
/* Committed Envelope */
ti = proto_tree_add_text(stt, tvb, offset, 24, "Committed Envelope");
@@ -4863,10 +4915,12 @@ cops_non_real_time_polling_service(tvbuff_t *tvb, proto_tree *st, guint n, guint
/* Nominal Polling Interval */
info_to_display(tvb,object_tree,offset,4,"Nominal Polling Interval",NULL,FMT_DEC,&hf_cops_pcmm_nominal_polling_interval);
offset += 4;
+
+ return offset;
}
/* Cops - Section : Real-Time Polling Service */
-static void
+static int
cops_real_time_polling_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
proto_item *ti;
proto_tree *stt, *object_tree;
@@ -4918,7 +4972,7 @@ cops_real_time_polling_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 o
info_to_display(tvb,object_tree,offset,4,"Tolerated Poll Jitter",NULL,FMT_DEC,&hf_cops_pcmm_tolerated_poll_jitter);
offset += 4;
- if (n < 64) return;
+ if (n < 64) return offset;
/* Reserved Envelope */
ti = proto_tree_add_text(stt, tvb, offset, 24, "Reserved Envelope");
@@ -4956,7 +5010,7 @@ cops_real_time_polling_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 o
info_to_display(tvb,object_tree,offset,4,"Tolerated Poll Jitter",NULL,FMT_DEC,&hf_cops_pcmm_tolerated_poll_jitter);
offset += 4;
- if (n < 92) return;
+ if (n < 92) return offset;
/* Committed Envelope */
ti = proto_tree_add_text(stt, tvb, offset, 24, "Committed Envelope");
@@ -4993,10 +5047,12 @@ cops_real_time_polling_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 o
/* Tolerated Poll Jitter */
info_to_display(tvb,object_tree,offset,4,"Tolerated Poll Jitter",NULL,FMT_DEC,&hf_cops_pcmm_tolerated_poll_jitter);
offset += 4;
+
+ return offset;
}
/* Cops - Section : Unsolicited Grant Service */
-static void
+static int
cops_unsolicited_grant_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
proto_item *ti;
proto_tree *stt, *object_tree;
@@ -5039,7 +5095,7 @@ cops_unsolicited_grant_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 o
info_to_display(tvb,object_tree,offset,4,"Tolerated Grant Jitter",NULL,FMT_DEC,&hf_cops_pcmm_tolerated_grant_jitter);
offset += 4;
- if (n < 40) return;
+ if (n < 40) return offset;
/* Reserved Envelope */
ti = proto_tree_add_text(stt, tvb, offset, 16, "Reserved Envelope");
@@ -5068,7 +5124,7 @@ cops_unsolicited_grant_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 o
info_to_display(tvb,object_tree,offset,4,"Tolerated Grant Jitter",NULL,FMT_DEC,&hf_cops_pcmm_tolerated_grant_jitter);
offset += 4;
- if (n < 56) return;
+ if (n < 56) return offset;
/* Committed Envelope */
ti = proto_tree_add_text(stt, tvb, offset, 16, "Committed Envelope");
@@ -5096,10 +5152,12 @@ cops_unsolicited_grant_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 o
/* Tolerated Grant Jitter */
info_to_display(tvb,object_tree,offset,4,"Tolerated Grant Jitter",NULL,FMT_DEC,&hf_cops_pcmm_tolerated_grant_jitter);
offset += 4;
+
+ return offset;
}
/* Cops - Section : Unsolicited Grant Service with Activity Detection */
-static void
+static int
cops_ugs_with_activity_detection(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
proto_item *ti;
proto_tree *stt, *object_tree;
@@ -5150,7 +5208,7 @@ cops_ugs_with_activity_detection(tvbuff_t *tvb, proto_tree *st, guint n, guint32
info_to_display(tvb,object_tree,offset,4,"Tolerated Poll Jitter",NULL,FMT_DEC,&hf_cops_pcmm_tolerated_poll_jitter);
offset += 4;
- if (n < 56) return;
+ if (n < 56) return offset;
/* Reserved Envelope */
ti = proto_tree_add_text(stt, tvb, offset, 24, "Reserved Envelope");
@@ -5187,7 +5245,7 @@ cops_ugs_with_activity_detection(tvbuff_t *tvb, proto_tree *st, guint n, guint32
info_to_display(tvb,object_tree,offset,4,"Tolerated Poll Jitter",NULL,FMT_DEC,&hf_cops_pcmm_tolerated_poll_jitter);
offset += 4;
- if (n < 80) return;
+ if (n < 80) return offset;
/* Committed Envelope */
ti = proto_tree_add_text(stt, tvb, offset, 24, "Committed Envelope");
@@ -5223,10 +5281,12 @@ cops_ugs_with_activity_detection(tvbuff_t *tvb, proto_tree *st, guint n, guint32
/* Tolerated Poll Jitter */
info_to_display(tvb,object_tree,offset,4,"Tolerated Poll Jitter",NULL,FMT_DEC,&hf_cops_pcmm_tolerated_poll_jitter);
offset += 4;
+
+ return offset;
}
/* Cops - Section : Downstream Service */
-static void
+static int
cops_downstream_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
proto_item *ti;
proto_tree *stt, *object_tree;
@@ -5277,7 +5337,7 @@ cops_downstream_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset)
info_to_display(tvb,object_tree,offset,4,"Maximum Downstream Latency",NULL,FMT_DEC,&hf_cops_pcmm_max_downstream_latency);
offset += 4;
- if (n < 56) return;
+ if (n < 56) return offset;
/* Reserved Envelope */
ti = proto_tree_add_text(stt, tvb, offset, 24, "Reserved Envelope");
@@ -5314,7 +5374,7 @@ cops_downstream_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset)
info_to_display(tvb,object_tree,offset,4,"Maximum Downstream Latency",NULL,FMT_DEC,&hf_cops_pcmm_max_downstream_latency);
offset += 4;
- if (n < 80) return;
+ if (n < 80) return offset;
/* Committed Envelope */
ti = proto_tree_add_text(stt, tvb, offset, 24, "Committed Envelope");
@@ -5350,6 +5410,8 @@ cops_downstream_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset)
/* Maximum Downstream Latency */
info_to_display(tvb,object_tree,offset,4,"Maximum Downstream Latency",NULL,FMT_DEC,&hf_cops_pcmm_max_downstream_latency);
offset += 4;
+
+ return offset;
}
/* Cops - Section : PacketCable Multimedia Event Gereration-Info */
@@ -5406,7 +5468,7 @@ cops_mm_event_generation_info(tvbuff_t *tvb, proto_tree *st, guint n, guint32 of
}
/* Cops - Section : Volume-Based Usage Limit */
-static void
+static int
cops_volume_based_usage_limit(tvbuff_t *tvb, proto_tree *st, guint object_len, guint32 offset) {
proto_tree *stt;
@@ -5418,10 +5480,13 @@ cops_volume_based_usage_limit(tvbuff_t *tvb, proto_tree *st, guint object_len, g
/* Usage Limit */
proto_tree_add_item(stt, hf_cops_pcmm_volume_based_usage_limit, tvb, offset, 8,
ENC_BIG_ENDIAN);
+ offset += 8;
+
+ return offset;
}
/* Cops - Section : Time-Based Usage Limit */
-static void
+static int
cops_time_based_usage_limit(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
proto_tree *stt;
@@ -5433,6 +5498,8 @@ cops_time_based_usage_limit(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offs
/* Time Limit */
info_to_display(tvb,stt,offset,4,"Time Limit", NULL,FMT_DEC,&hf_cops_pcmm_time_based_usage_limit);
offset += 4;
+
+ return offset;
}
/* Cops - Section : Opaque Data */
@@ -5450,7 +5517,7 @@ cops_opaque_data(tvbuff_t *tvb, proto_tree *st, guint object_len, guint32 offset
}
/* Cops - Section : Gate Time Info */
-static void
+static int
cops_gate_time_info(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
proto_tree *stt;
@@ -5462,6 +5529,8 @@ cops_gate_time_info(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
/* Gate Time Info */
info_to_display(tvb,stt,offset,4,"Time Committed", NULL,FMT_DEC,&hf_cops_pcmm_gate_time_info);
offset += 4;
+
+ return offset;
}
/* Cops - Section : Gate Usage Info */
@@ -5479,7 +5548,7 @@ cops_gate_usage_info(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
}
/* Cops - Section : PacketCable error */
-static void
+static int
cops_packetcable_mm_error(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
proto_tree *stt;
@@ -5504,10 +5573,12 @@ cops_packetcable_mm_error(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset
proto_tree_add_uint_format(stt, hf_cops_pcmm_packetcable_error_subcode,
tvb, offset, 2, code, "Error-Subcode: 0x%04x", subcode);
offset += 2;
+
+ return offset;
}
/* Cops - Section : Gate State */
-static void
+static int
cops_gate_state(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
proto_tree *stt;
@@ -5523,10 +5594,12 @@ cops_gate_state(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
/* Reason */
info_to_display(tvb,stt,offset,2,"Reason",pcmm_gate_state_reason,FMT_DEC,&hf_cops_pcmm_packetcable_gate_state_reason);
offset += 2;
+
+ return offset;
}
/* Cops - Section : Version Info */
-static void
+static int
cops_version_info(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
proto_tree *stt;
@@ -5542,6 +5615,8 @@ cops_version_info(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
/* Reason */
info_to_display(tvb,stt,offset,2,"Minor Version Number",NULL,FMT_DEC,&hf_cops_pcmm_packetcable_version_info_minor);
offset += 2;
+
+ return offset;
}
/* Cops - Section : PSID */
@@ -5559,7 +5634,7 @@ cops_psid(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
}
/* Cops - Section : Synch Options */
-static void
+static int
cops_synch_options(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
proto_tree *stt;
@@ -5578,6 +5653,8 @@ cops_synch_options(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
/* Sych Type */
info_to_display(tvb,stt,offset,1,"Synch Type", pcmm_synch_type_vals,FMT_DEC,&hf_cops_pcmm_synch_options_synch_type);
offset += 1;
+
+ return offset;
}
/* Cops - Section : Msg Receipt Key */
@@ -5735,7 +5812,7 @@ decode_docsis_request_transmission_policy(tvbuff_t *tvb, guint32 offset, proto_t
{ 0, NULL }
};
- item = proto_tree_add_item (tree, hf, tvb, offset, 4, FALSE);
+ item = proto_tree_add_item (tree, hf, tvb, offset, 4, ENC_BIG_ENDIAN);
drtp_tree = proto_item_add_subtree(item, ett_docsis_request_transmission_policy);
for (i = 0 ; i <= 8; i++) {
if (policy & drtp_vals[i].value) {
diff --git a/epan/dissectors/packet-coseventcomm.c b/epan/dissectors/packet-coseventcomm.c
new file mode 100644
index 0000000000..4a4e0cf906
--- /dev/null
+++ b/epan/dissectors/packet-coseventcomm.c
@@ -0,0 +1,768 @@
+/* packet-coseventcomm.c
+ *
+ * $Id$
+ *
+ * Routines for IDL dissection
+ *
+ * Autogenerated from idl2wrs
+ * Copyright 2001 Frank Singleton <frank.singleton@ericsson.com>
+ */
+
+
+/*
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs
+ * Copyright 1999 - 2006 Gerald Combs
+ */
+
+static int hf_operationrequest = -1;/* Request_Operation field */
+
+
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <gmodule.h>
+
+#include <string.h>
+#include <glib.h>
+#include <epan/packet.h>
+#include <epan/proto.h>
+#include <epan/dissectors/packet-giop.h>
+
+
+#ifdef _MSC_VER
+/* disable warning: "unreference local variable" */
+#pragma warning(disable:4101)
+#endif
+
+
+static proto_tree *start_dissecting(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ptree, int *offset);
+
+
+
+/* Struct prototype declaration Start */
+
+
+/* Struct prototype declaration End */
+
+
+/* Union prototype declaration Start */
+
+
+/* Union prototype declaration End */
+
+
+
+/* Initialise the protocol and subtree pointers */
+
+static int proto_coseventcomm = -1;
+
+static gint ett_coseventcomm = -1;
+
+
+/* Initialise the initial Alignment */
+
+static guint32 boundary = GIOP_HEADER_SIZE; /* initial value */
+
+
+
+/* Initialise the Registered fields */
+
+/* TODO - Use registered fields */
+
+/*
+ * IDL Operations Start
+ */
+
+static const char CosEventComm_PushConsumer_push_op[] = "push" ;
+static const char CosEventComm_PushConsumer_disconnect_push_consumer_op[] = "disconnect_push_consumer" ;
+static const char CosEventComm_PushSupplier_disconnect_push_supplier_op[] = "disconnect_push_supplier" ;
+static const char CosEventComm_PullSupplier_pull_op[] = "pull" ;
+static const char CosEventComm_PullSupplier_try_pull_op[] = "try_pull" ;
+static const char CosEventComm_PullSupplier_disconnect_pull_supplier_op[] = "disconnect_pull_supplier" ;
+static const char CosEventComm_PullConsumer_disconnect_pull_consumer_op[] = "disconnect_pull_consumer" ;
+
+/*
+ * IDL Operations End
+ */
+
+/* Begin Exception (containing members) String Declare */
+
+
+
+/* End Exception (containing members) String Declare */
+
+/*
+ * IDL Attributes Start
+ */
+
+
+/*
+ * IDL Attributes End
+ */
+
+/*
+ * IDL Enums Start
+ */
+
+/*
+ * IDL Enums End
+ */
+
+/* Begin Exception Helper Functions */
+
+
+
+/* End Exception Helper Functions */
+
+/*
+ * Main delegator for exception handling
+ *
+ */
+
+static gboolean decode_user_exception(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *ptree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+ /*gboolean stream_is_big_endian _U_;*/ /* big endianess */
+ proto_tree *tree _U_;
+
+ if (!header->exception_id)
+ return FALSE;
+
+
+
+ return FALSE; /* user exception not found */
+
+}
+
+/* Begin Attribute Helper Functions */
+
+
+/* End Attribute Helper Functions */
+
+/*
+ * IDL:omg.org/CosEventComm/PushConsumer/push:1.0
+ */
+
+static void decode_CosEventComm_PushConsumer_push(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_any(tvb,tree,offset,stream_is_big_endian, boundary, header);
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:omg.org/CosEventComm/PushConsumer/disconnect_push_consumer:1.0
+ */
+
+static void decode_CosEventComm_PushConsumer_disconnect_push_consumer(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:omg.org/CosEventComm/PushSupplier/disconnect_push_supplier:1.0
+ */
+
+static void decode_CosEventComm_PushSupplier_disconnect_push_supplier(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:omg.org/CosEventComm/PullSupplier/pull:1.0
+ */
+
+static void decode_CosEventComm_PullSupplier_pull(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_any(tvb,tree,offset,stream_is_big_endian, boundary, header);
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:omg.org/CosEventComm/PullSupplier/try_pull:1.0
+ */
+
+static void decode_CosEventComm_PullSupplier_try_pull(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_any(tvb,tree,offset,stream_is_big_endian, boundary, header);
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"has_event = %u",u_octet1);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:omg.org/CosEventComm/PullSupplier/disconnect_pull_supplier:1.0
+ */
+
+static void decode_CosEventComm_PullSupplier_disconnect_pull_supplier(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:omg.org/CosEventComm/PullConsumer/disconnect_pull_consumer:1.0
+ */
+
+static void decode_CosEventComm_PullConsumer_disconnect_pull_consumer(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * Called once we accept the packet as being for us; it sets the
+ * Protocol and Info columns and creates the top-level protocol
+ * tree item.
+ */
+static proto_tree *start_dissecting(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ptree, int *offset) {
+
+ proto_item *ti = NULL;
+ proto_tree *tree = NULL; /* init later, inside if(tree) */
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "COSEVENTCOMM");
+
+ /*
+ * Do not clear COL_INFO, as nothing is being written there by
+ * this dissector yet. So leave it as is from the GIOP dissector.
+ * TODO: add something useful to COL_INFO
+ * col_clear(pinfo->cinfo, COL_INFO);
+ */
+
+ if (ptree) {
+ ti = proto_tree_add_item(ptree, proto_coseventcomm, tvb, *offset, -1, ENC_NA);
+ tree = proto_item_add_subtree(ti, ett_coseventcomm);
+ }
+ return tree;
+}
+
+static gboolean dissect_coseventcomm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ptree, int *offset, MessageHeader *header, gchar *operation, gchar *idlname) {
+
+ gboolean stream_is_big_endian; /* big endianess */
+ proto_tree *tree _U_;
+#define process_RequestOperation(){ \
+ proto_item *pi; \
+ if(header->message_type == Reply){ col_append_fstr(pinfo->cinfo, COL_INFO, " op = %s",operation); }; /* fill-up info column */ \
+ pi=proto_tree_add_string_format_value(ptree,hf_operationrequest,tvb,0,0,operation," %s",operation);PROTO_ITEM_SET_GENERATED(pi); /* fill-up the field */ \
+ };
+
+ stream_is_big_endian = is_big_endian(header); /* get endianess */
+
+ /* If we have a USER Exception, then decode it and return */
+
+ if ((header->message_type == Reply) && (header->rep_status == USER_EXCEPTION)) {
+
+ return decode_user_exception(tvb, pinfo, ptree, offset, header, operation, stream_is_big_endian);
+
+ }
+
+ switch(header->message_type) {
+
+ case Request:
+ case Reply:
+
+ if (strcmp(operation, CosEventComm_PushConsumer_push_op) == 0
+ && (!idlname || strcmp(idlname, "CosEventComm/PushConsumer") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_CosEventComm_PushConsumer_push(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, CosEventComm_PushConsumer_disconnect_push_consumer_op) == 0
+ && (!idlname || strcmp(idlname, "CosEventComm/PushConsumer") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_CosEventComm_PushConsumer_disconnect_push_consumer(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, CosEventComm_PushSupplier_disconnect_push_supplier_op) == 0
+ && (!idlname || strcmp(idlname, "CosEventComm/PushSupplier") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_CosEventComm_PushSupplier_disconnect_push_supplier(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, CosEventComm_PullSupplier_pull_op) == 0
+ && (!idlname || strcmp(idlname, "CosEventComm/PullSupplier") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_CosEventComm_PullSupplier_pull(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, CosEventComm_PullSupplier_try_pull_op) == 0
+ && (!idlname || strcmp(idlname, "CosEventComm/PullSupplier") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_CosEventComm_PullSupplier_try_pull(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, CosEventComm_PullSupplier_disconnect_pull_supplier_op) == 0
+ && (!idlname || strcmp(idlname, "CosEventComm/PullSupplier") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_CosEventComm_PullSupplier_disconnect_pull_supplier(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, CosEventComm_PullConsumer_disconnect_pull_consumer_op) == 0
+ && (!idlname || strcmp(idlname, "CosEventComm/PullConsumer") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_CosEventComm_PullConsumer_disconnect_pull_consumer(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+
+ break;
+
+ case CancelRequest:
+ case LocateRequest:
+ case LocateReply:
+ case CloseConnection:
+ case MessageError:
+ case Fragment:
+ return FALSE; /* not handled yet */
+
+ default:
+ return FALSE; /* not handled yet */
+
+ } /* switch */
+
+
+ return FALSE;
+
+} /* End of main dissector */
+
+
+
+/* Register the protocol with Wireshark */
+
+void proto_register_giop_coseventcomm(void) {
+
+ /* setup list of header fields */
+
+ static hf_register_info hf[] = {
+ /* field that indicates the currently ongoing request/reply exchange */
+ {&hf_operationrequest, {"Request_Operation","COSEVENTCOMM.Request_Operation",FT_STRING,BASE_NONE,NULL,0x0,NULL,HFILL}},
+
+ /* no fields yet */
+
+ };
+
+ /* setup protocol subtree array */
+
+ static gint *ett[] = {
+ &ett_coseventcomm,
+ };
+
+ /* Register the protocol name and description */
+
+ proto_coseventcomm = proto_register_protocol("Coseventcomm Dissector Using GIOP API" , "COSEVENTCOMM", "giop-coseventcomm" );
+
+ proto_register_field_array(proto_coseventcomm, hf, array_length(hf));
+
+ proto_register_subtree_array(ett,array_length(ett));
+
+}
+
+
+/* register me as handler for these interfaces */
+
+void proto_reg_handoff_giop_coseventcomm(void) {
+
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_coseventcomm, "COSEVENTCOMM", "CosEventComm/PullConsumer", proto_coseventcomm ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_coseventcomm, "COSEVENTCOMM", "CosEventComm/PullSupplier", proto_coseventcomm ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_coseventcomm, "COSEVENTCOMM", "CosEventComm/PushConsumer", proto_coseventcomm ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_coseventcomm, "COSEVENTCOMM", "CosEventComm/PushSupplier", proto_coseventcomm ); /* explicit dissector */
+
+
+ /* Register for Heuristic Dissection */
+
+ register_giop_user(dissect_coseventcomm, "COSEVENTCOMM" ,proto_coseventcomm); /* heuristic dissector */
+
+
+}
+
+
diff --git a/epan/dissectors/packet-cosine.c b/epan/dissectors/packet-cosine.c
index dffd46ef63..ddc0e1ae7e 100644
--- a/epan/dissectors/packet-cosine.c
+++ b/epan/dissectors/packet-cosine.c
@@ -55,9 +55,9 @@ static dissector_handle_t data_handle;
static void
dissect_cosine(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *fh_tree;
- proto_item *ti;
- union wtap_pseudo_header *pseudo_header = pinfo->pseudo_header;
+ proto_tree *fh_tree;
+ proto_item *ti;
+ union wtap_pseudo_header *pseudo_header = pinfo->pseudo_header;
/* load the top pane info. This should be overwritten by
the next protocol in the stack */
@@ -70,8 +70,8 @@ dissect_cosine(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
layer (ie none) */
if(tree) {
ti = proto_tree_add_protocol_format(tree, proto_cosine, tvb, 0, 0,
- "CoSine IPNOS L2 debug output (%s)",
- pseudo_header->cosine.if_name);
+ "CoSine IPNOS L2 debug output (%s)",
+ pseudo_header->cosine.if_name);
fh_tree = proto_item_add_subtree(ti, ett_raw);
proto_tree_add_uint(fh_tree, hf_pro, tvb, 0, 0, pseudo_header->cosine.pro);
proto_tree_add_uint(fh_tree, hf_off, tvb, 0, 0, pseudo_header->cosine.off);
@@ -80,65 +80,65 @@ dissect_cosine(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_uint(fh_tree, hf_err, tvb, 0, 0, pseudo_header->cosine.err);
switch (pseudo_header->cosine.encap) {
+ case COSINE_ENCAP_ETH:
+ break;
+ case COSINE_ENCAP_ATM:
+ case COSINE_ENCAP_PPoATM:
+ proto_tree_add_text(fh_tree, tvb, 0, 16, "SAR header");
+ break;
+ case COSINE_ENCAP_PPP:
+ case COSINE_ENCAP_FR:
+ case COSINE_ENCAP_PPoFR:
+ proto_tree_add_text(fh_tree, tvb, 0, 4, "Channel handle ID");
+ break;
+ case COSINE_ENCAP_HDLC:
+ if (pseudo_header->cosine.direction == COSINE_DIR_TX) {
+ proto_tree_add_text(fh_tree, tvb, 0, 2,
+ "Channel handle ID");
+ } else if (pseudo_header->cosine.direction == COSINE_DIR_RX) {
+ proto_tree_add_text(fh_tree, tvb, 0, 4,
+ "Channel handle ID");
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
+ switch (pseudo_header->cosine.encap) {
case COSINE_ENCAP_ETH:
- break;
+ call_dissector(eth_withoutfcs_handle, tvb_new_subset_remaining(tvb, 0),
+ pinfo, tree);
+ break;
case COSINE_ENCAP_ATM:
case COSINE_ENCAP_PPoATM:
- proto_tree_add_text(fh_tree, tvb, 0, 16, "SAR header");
- break;
+ call_dissector(llc_handle, tvb_new_subset_remaining(tvb, 16),
+ pinfo, tree);
+ break;
case COSINE_ENCAP_PPP:
+ call_dissector(ppp_hdlc_handle, tvb_new_subset_remaining(tvb, 4),
+ pinfo, tree);
+ break;
+ case COSINE_ENCAP_HDLC:
+ if (pseudo_header->cosine.direction == COSINE_DIR_TX) {
+ call_dissector(chdlc_handle, tvb_new_subset_remaining(tvb, 2),
+ pinfo, tree);
+ } else if (pseudo_header->cosine.direction == COSINE_DIR_RX) {
+ call_dissector(chdlc_handle, tvb_new_subset_remaining(tvb, 4),
+ pinfo, tree);
+ }
+ break;
case COSINE_ENCAP_FR:
case COSINE_ENCAP_PPoFR:
- proto_tree_add_text(fh_tree, tvb, 0, 4, "Channel handle ID");
- break;
- case COSINE_ENCAP_HDLC:
- if (pseudo_header->cosine.direction == COSINE_DIR_TX) {
- proto_tree_add_text(fh_tree, tvb, 0, 2,
- "Channel handle ID");
- } else if (pseudo_header->cosine.direction == COSINE_DIR_RX) {
- proto_tree_add_text(fh_tree, tvb, 0, 4,
- "Channel handle ID");
- }
- break;
+ call_dissector(fr_handle, tvb_new_subset_remaining(tvb, 4),
+ pinfo, tree);
+ break;
+ case COSINE_ENCAP_TEST:
+ case COSINE_ENCAP_UNKNOWN:
+ call_dissector(data_handle, tvb, pinfo, tree);
+ break;
default:
- break;
- }
- }
-
- switch (pseudo_header->cosine.encap) {
- case COSINE_ENCAP_ETH:
- call_dissector(eth_withoutfcs_handle, tvb_new_subset_remaining(tvb, 0),
- pinfo, tree);
- break;
- case COSINE_ENCAP_ATM:
- case COSINE_ENCAP_PPoATM:
- call_dissector(llc_handle, tvb_new_subset_remaining(tvb, 16),
- pinfo, tree);
- break;
- case COSINE_ENCAP_PPP:
- call_dissector(ppp_hdlc_handle, tvb_new_subset_remaining(tvb, 4),
- pinfo, tree);
- break;
- case COSINE_ENCAP_HDLC:
- if (pseudo_header->cosine.direction == COSINE_DIR_TX) {
- call_dissector(chdlc_handle, tvb_new_subset_remaining(tvb, 2),
- pinfo, tree);
- } else if (pseudo_header->cosine.direction == COSINE_DIR_RX) {
- call_dissector(chdlc_handle, tvb_new_subset_remaining(tvb, 4),
- pinfo, tree);
- }
- break;
- case COSINE_ENCAP_FR:
- case COSINE_ENCAP_PPoFR:
- call_dissector(fr_handle, tvb_new_subset_remaining(tvb, 4),
- pinfo, tree);
- break;
- case COSINE_ENCAP_TEST:
- case COSINE_ENCAP_UNKNOWN:
- call_dissector(data_handle, tvb, pinfo, tree);
- break;
- default:
- break;
+ break;
}
}
@@ -153,7 +153,7 @@ proto_register_cosine(void)
{ &hf_pri,
{ "Priority", "cosine.pri", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}},
{ &hf_rm,
- { "Rate Marking", "cosine.rm", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ { "Rate Marking", "cosine.rm", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}},
{ &hf_err,
{ "Error Code", "cosine.err", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}},
};
@@ -163,7 +163,7 @@ proto_register_cosine(void)
};
proto_cosine = proto_register_protocol("CoSine IPNOS L2 debug output",
- "CoSine", "cosine");
+ "CoSine", "cosine");
proto_register_field_array(proto_cosine, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
}
@@ -177,11 +177,11 @@ proto_reg_handoff_cosine(void)
* Get handles for dissectors.
*/
eth_withoutfcs_handle = find_dissector("eth_withoutfcs");
- ppp_hdlc_handle = find_dissector("ppp_hdlc");
- llc_handle = find_dissector("llc");
- chdlc_handle = find_dissector("chdlc");
- fr_handle = find_dissector("fr");
- data_handle = find_dissector("data");
+ ppp_hdlc_handle = find_dissector("ppp_hdlc");
+ llc_handle = find_dissector("llc");
+ chdlc_handle = find_dissector("chdlc");
+ fr_handle = find_dissector("fr");
+ data_handle = find_dissector("data");
cosine_handle = create_dissector_handle(dissect_cosine, proto_cosine);
dissector_add_uint("wtap_encap", WTAP_ENCAP_COSINE, cosine_handle);
diff --git a/epan/dissectors/packet-cosnaming.c b/epan/dissectors/packet-cosnaming.c
new file mode 100644
index 0000000000..40932e8e12
--- /dev/null
+++ b/epan/dissectors/packet-cosnaming.c
@@ -0,0 +1,1557 @@
+/* packet-cosnaming.c
+ *
+ * $Id$
+ *
+ * Routines for IDL dissection
+ *
+ * Autogenerated from idl2wrs
+ * Copyright 2001 Frank Singleton <frank.singleton@ericsson.com>
+ */
+
+
+/*
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs
+ * Copyright 1999 - 2006 Gerald Combs
+ */
+
+static int hf_operationrequest = -1;/* Request_Operation field */
+
+
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <gmodule.h>
+
+#include <string.h>
+#include <glib.h>
+#include <epan/packet.h>
+#include <epan/proto.h>
+#include <epan/dissectors/packet-giop.h>
+
+#ifdef _MSC_VER
+/* disable warning: "unreference local variable" */
+#pragma warning(disable:4101)
+#endif
+
+
+static proto_tree *start_dissecting(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ptree, int *offset);
+
+
+
+/* Struct prototype declaration Start */
+
+
+/* Struct = IDL:omg.org/CosNaming/NameComponent:1.0 */
+
+static void decode_CosNaming_NameComponent_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:omg.org/CosNaming/Binding:1.0 */
+
+static void decode_CosNaming_Binding_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct prototype declaration End */
+
+
+/* Union prototype declaration Start */
+
+
+/* Union prototype declaration End */
+
+
+
+/* Initialise the protocol and subtree pointers */
+
+static int proto_cosnaming = -1;
+
+static gint ett_cosnaming = -1;
+
+
+/* Initialise the initial Alignment */
+
+static guint32 boundary = GIOP_HEADER_SIZE; /* initial value */
+
+
+
+/* Initialise the Registered fields */
+
+/* TODO - Use registered fields */
+
+/*
+ * IDL Operations Start
+ */
+
+static const char CosNaming_NamingContext_bind_op[] = "bind" ;
+static const char CosNaming_NamingContext_rebind_op[] = "rebind" ;
+static const char CosNaming_NamingContext_bind_context_op[] = "bind_context" ;
+static const char CosNaming_NamingContext_rebind_context_op[] = "rebind_context" ;
+static const char CosNaming_NamingContext_resolve_op[] = "resolve" ;
+static const char CosNaming_NamingContext_unbind_op[] = "unbind" ;
+static const char CosNaming_NamingContext_new_context_op[] = "new_context" ;
+static const char CosNaming_NamingContext_bind_new_context_op[] = "bind_new_context" ;
+static const char CosNaming_NamingContext_destroy_op[] = "destroy" ;
+static const char CosNaming_NamingContext_list_op[] = "list" ;
+static const char CosNaming_BindingIterator_next_one_op[] = "next_one" ;
+static const char CosNaming_BindingIterator_next_n_op[] = "next_n" ;
+static const char CosNaming_BindingIterator_destroy_op[] = "destroy" ;
+
+/*
+ * IDL Operations End
+ */
+
+/* Begin Exception (containing members) String Declare */
+
+
+static const char user_exception_CosNaming_NamingContext_NotFound[] = "IDL:omg.org/CosNaming/NamingContext/NotFound:1.0" ;
+static const char user_exception_CosNaming_NamingContext_CannotProceed[] = "IDL:omg.org/CosNaming/NamingContext/CannotProceed:1.0" ;
+
+/* End Exception (containing members) String Declare */
+
+/*
+ * IDL Attributes Start
+ */
+
+
+/*
+ * IDL Attributes End
+ */
+
+/*
+ * IDL Enums Start
+ */
+
+/*
+ * Enum = IDL:omg.org/CosNaming/BindingType:1.0
+ */
+
+static const value_string CosNaming_BindingType[] = {
+
+ { 0, "nobject" },
+ { 1, "ncontext" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:omg.org/CosNaming/NamingContext/NotFoundReason:1.0
+ */
+
+static const value_string CosNaming_NamingContext_NotFoundReason[] = {
+
+ { 0, "missing_node" },
+ { 1, "not_context" },
+ { 2, "not_object" },
+ { 0, NULL },
+};
+
+/*
+ * IDL Enums End
+ */
+
+/* Begin Exception Helper Functions */
+
+
+/* Exception = IDL:omg.org/CosNaming/NamingContext/NotFound:1.0 */
+
+static void decode_ex_CosNaming_NamingContext_NotFound(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ guint32 u_octet4_loop_NotFound_rest_of_name;
+ guint32 i_NotFound_rest_of_name;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"NotFound_why = %u (%s)",u_octet4,val_to_str(u_octet4,CosNaming_NamingContext_NotFoundReason,"Unknown Enum Value"));
+ }
+
+ u_octet4_loop_NotFound_rest_of_name = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of NotFound_rest_of_name = %u",u_octet4_loop_NotFound_rest_of_name);
+ }
+
+ for (i_NotFound_rest_of_name=0; i_NotFound_rest_of_name < u_octet4_loop_NotFound_rest_of_name; i_NotFound_rest_of_name++) {
+
+ /* Begin struct "CosNaming_NameComponent" */
+
+
+
+ decode_CosNaming_NameComponent_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "CosNaming_NameComponent" */
+
+ }
+
+}
+
+/* Exception = IDL:omg.org/CosNaming/NamingContext/CannotProceed:1.0 */
+
+static void decode_ex_CosNaming_NamingContext_CannotProceed(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_CannotProceed_rest_of_name;
+ guint32 i_CannotProceed_rest_of_name;
+
+ /* Operation specific Variable declarations End */
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ u_octet4_loop_CannotProceed_rest_of_name = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of CannotProceed_rest_of_name = %u",u_octet4_loop_CannotProceed_rest_of_name);
+ }
+
+ for (i_CannotProceed_rest_of_name=0; i_CannotProceed_rest_of_name < u_octet4_loop_CannotProceed_rest_of_name; i_CannotProceed_rest_of_name++) {
+
+ /* Begin struct "CosNaming_NameComponent" */
+
+
+
+ decode_CosNaming_NameComponent_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "CosNaming_NameComponent" */
+
+ }
+
+}
+
+
+/* End Exception Helper Functions */
+
+/*
+ * Main delegator for exception handling
+ *
+ */
+
+static gboolean decode_user_exception(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *ptree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+ /*gboolean stream_is_big_endian _U_;*/ /* big endianess */
+ proto_tree *tree _U_;
+
+ if (!header->exception_id)
+ return FALSE;
+
+ if (strcmp(header->exception_id, user_exception_CosNaming_NamingContext_NotFound) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_CosNaming_NamingContext_NotFound(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:omg.org/CosNaming/NamingContext/NotFound:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_CosNaming_NamingContext_CannotProceed) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_CosNaming_NamingContext_CannotProceed(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:omg.org/CosNaming/NamingContext/CannotProceed:1.0 */
+ return TRUE;
+ }
+
+
+
+ return FALSE; /* user exception not found */
+
+}
+
+/* Begin Attribute Helper Functions */
+
+
+/* End Attribute Helper Functions */
+
+/*
+ * IDL:omg.org/CosNaming/NamingContext/bind:1.0
+ */
+
+static void decode_CosNaming_NamingContext_bind(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_n;
+ guint32 i_n;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_n = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of n = %u",u_octet4_loop_n);
+ }
+
+ for (i_n=0; i_n < u_octet4_loop_n; i_n++) {
+
+ /* Begin struct "CosNaming_NameComponent" */
+
+
+
+ decode_CosNaming_NameComponent_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "CosNaming_NameComponent" */
+
+ }
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:omg.org/CosNaming/NamingContext/rebind:1.0
+ */
+
+static void decode_CosNaming_NamingContext_rebind(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_n;
+ guint32 i_n;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_n = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of n = %u",u_octet4_loop_n);
+ }
+
+ for (i_n=0; i_n < u_octet4_loop_n; i_n++) {
+
+ /* Begin struct "CosNaming_NameComponent" */
+
+
+
+ decode_CosNaming_NameComponent_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "CosNaming_NameComponent" */
+
+ }
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:omg.org/CosNaming/NamingContext/bind_context:1.0
+ */
+
+static void decode_CosNaming_NamingContext_bind_context(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_n;
+ guint32 i_n;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_n = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of n = %u",u_octet4_loop_n);
+ }
+
+ for (i_n=0; i_n < u_octet4_loop_n; i_n++) {
+
+ /* Begin struct "CosNaming_NameComponent" */
+
+
+
+ decode_CosNaming_NameComponent_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "CosNaming_NameComponent" */
+
+ }
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:omg.org/CosNaming/NamingContext/rebind_context:1.0
+ */
+
+static void decode_CosNaming_NamingContext_rebind_context(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_n;
+ guint32 i_n;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_n = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of n = %u",u_octet4_loop_n);
+ }
+
+ for (i_n=0; i_n < u_octet4_loop_n; i_n++) {
+
+ /* Begin struct "CosNaming_NameComponent" */
+
+
+
+ decode_CosNaming_NameComponent_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "CosNaming_NameComponent" */
+
+ }
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:omg.org/CosNaming/NamingContext/resolve:1.0
+ */
+
+static void decode_CosNaming_NamingContext_resolve(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_n;
+ guint32 i_n;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_n = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of n = %u",u_octet4_loop_n);
+ }
+
+ for (i_n=0; i_n < u_octet4_loop_n; i_n++) {
+
+ /* Begin struct "CosNaming_NameComponent" */
+
+
+
+ decode_CosNaming_NameComponent_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "CosNaming_NameComponent" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:omg.org/CosNaming/NamingContext/unbind:1.0
+ */
+
+static void decode_CosNaming_NamingContext_unbind(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_n;
+ guint32 i_n;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_n = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of n = %u",u_octet4_loop_n);
+ }
+
+ for (i_n=0; i_n < u_octet4_loop_n; i_n++) {
+
+ /* Begin struct "CosNaming_NameComponent" */
+
+
+
+ decode_CosNaming_NameComponent_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "CosNaming_NameComponent" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:omg.org/CosNaming/NamingContext/new_context:1.0
+ */
+
+static void decode_CosNaming_NamingContext_new_context(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:omg.org/CosNaming/NamingContext/bind_new_context:1.0
+ */
+
+static void decode_CosNaming_NamingContext_bind_new_context(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_n;
+ guint32 i_n;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_n = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of n = %u",u_octet4_loop_n);
+ }
+
+ for (i_n=0; i_n < u_octet4_loop_n; i_n++) {
+
+ /* Begin struct "CosNaming_NameComponent" */
+
+
+
+ decode_CosNaming_NameComponent_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "CosNaming_NameComponent" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:omg.org/CosNaming/NamingContext/destroy:1.0
+ */
+
+static void decode_CosNaming_NamingContext_destroy(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:omg.org/CosNaming/NamingContext/list:1.0
+ */
+
+static void decode_CosNaming_NamingContext_list(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ guint32 u_octet4_loop_bl;
+ guint32 i_bl;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_ulong(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"how_many = %u",u_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ u_octet4_loop_bl = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of bl = %u",u_octet4_loop_bl);
+ }
+
+ for (i_bl=0; i_bl < u_octet4_loop_bl; i_bl++) {
+
+ /* Begin struct "CosNaming_Binding" */
+
+
+
+ decode_CosNaming_Binding_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "CosNaming_Binding" */
+
+ }
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:omg.org/CosNaming/BindingIterator/next_one:1.0
+ */
+
+static void decode_CosNaming_BindingIterator_next_one(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"Operation_Return_Value = %u",u_octet1);
+ }
+
+ /* Begin struct "CosNaming_Binding" */
+
+
+
+ decode_CosNaming_Binding_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "CosNaming_Binding" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:omg.org/CosNaming/BindingIterator/next_n:1.0
+ */
+
+static void decode_CosNaming_BindingIterator_next_n(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_bl;
+ guint32 i_bl;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_ulong(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"how_many = %u",u_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"Operation_Return_Value = %u",u_octet1);
+ }
+
+ u_octet4_loop_bl = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of bl = %u",u_octet4_loop_bl);
+ }
+
+ for (i_bl=0; i_bl < u_octet4_loop_bl; i_bl++) {
+
+ /* Begin struct "CosNaming_Binding" */
+
+
+
+ decode_CosNaming_Binding_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "CosNaming_Binding" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:omg.org/CosNaming/BindingIterator/destroy:1.0
+ */
+
+static void decode_CosNaming_BindingIterator_destroy(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/* Struct = IDL:omg.org/CosNaming/NameComponent:1.0 */
+
+static void decode_CosNaming_NameComponent_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"NameComponent_id (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"NameComponent_kind (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:omg.org/CosNaming/Binding:1.0 */
+
+static void decode_CosNaming_Binding_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_Binding_binding_name;
+ guint32 i_Binding_binding_name;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_Binding_binding_name = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of Binding_binding_name = %u",u_octet4_loop_Binding_binding_name);
+ }
+
+ for (i_Binding_binding_name=0; i_Binding_binding_name < u_octet4_loop_Binding_binding_name; i_Binding_binding_name++) {
+
+ /* Begin struct "CosNaming_NameComponent" */
+
+
+
+ decode_CosNaming_NameComponent_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "CosNaming_NameComponent" */
+
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"Binding_binding_type = %u (%s)",u_octet4,val_to_str(u_octet4,CosNaming_BindingType,"Unknown Enum Value"));
+ }
+
+}
+
+/*
+ * Called once we accept the packet as being for us; it sets the
+ * Protocol and Info columns and creates the top-level protocol
+ * tree item.
+ */
+static proto_tree *start_dissecting(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ptree, int *offset) {
+
+ proto_item *ti = NULL;
+ proto_tree *tree = NULL; /* init later, inside if(tree) */
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "COSNAMING");
+
+ /*
+ * Do not clear COL_INFO, as nothing is being written there by
+ * this dissector yet. So leave it as is from the GIOP dissector.
+ * TODO: add something useful to COL_INFO
+ * col_clear(pinfo->cinfo, COL_INFO);
+ */
+
+ if (ptree) {
+ ti = proto_tree_add_item(ptree, proto_cosnaming, tvb, *offset, -1, ENC_NA);
+ tree = proto_item_add_subtree(ti, ett_cosnaming);
+ }
+ return tree;
+}
+
+static gboolean dissect_cosnaming(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ptree, int *offset, MessageHeader *header, gchar *operation, gchar *idlname) {
+
+ gboolean stream_is_big_endian; /* big endianess */
+ proto_tree *tree _U_;
+#define process_RequestOperation(){ \
+ proto_item *pi; \
+ if(header->message_type == Reply){ col_append_fstr(pinfo->cinfo, COL_INFO, " op = %s",operation); }; /* fill-up info column */ \
+ pi=proto_tree_add_string_format_value(ptree,hf_operationrequest,tvb,0,0,operation," %s",operation);PROTO_ITEM_SET_GENERATED(pi); /* fill-up the field */ \
+ };
+
+ stream_is_big_endian = is_big_endian(header); /* get endianess */
+
+ /* If we have a USER Exception, then decode it and return */
+
+ if ((header->message_type == Reply) && (header->rep_status == USER_EXCEPTION)) {
+
+ return decode_user_exception(tvb, pinfo, ptree, offset, header, operation, stream_is_big_endian);
+
+ }
+
+ switch(header->message_type) {
+
+ case Request:
+ case Reply:
+
+ if (strcmp(operation, CosNaming_NamingContext_bind_op) == 0
+ && (!idlname || strcmp(idlname, "CosNaming/NamingContext") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_CosNaming_NamingContext_bind(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, CosNaming_NamingContext_rebind_op) == 0
+ && (!idlname || strcmp(idlname, "CosNaming/NamingContext") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_CosNaming_NamingContext_rebind(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, CosNaming_NamingContext_bind_context_op) == 0
+ && (!idlname || strcmp(idlname, "CosNaming/NamingContext") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_CosNaming_NamingContext_bind_context(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, CosNaming_NamingContext_rebind_context_op) == 0
+ && (!idlname || strcmp(idlname, "CosNaming/NamingContext") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_CosNaming_NamingContext_rebind_context(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, CosNaming_NamingContext_resolve_op) == 0
+ && (!idlname || strcmp(idlname, "CosNaming/NamingContext") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_CosNaming_NamingContext_resolve(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, CosNaming_NamingContext_unbind_op) == 0
+ && (!idlname || strcmp(idlname, "CosNaming/NamingContext") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_CosNaming_NamingContext_unbind(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, CosNaming_NamingContext_new_context_op) == 0
+ && (!idlname || strcmp(idlname, "CosNaming/NamingContext") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_CosNaming_NamingContext_new_context(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, CosNaming_NamingContext_bind_new_context_op) == 0
+ && (!idlname || strcmp(idlname, "CosNaming/NamingContext") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_CosNaming_NamingContext_bind_new_context(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, CosNaming_NamingContext_destroy_op) == 0
+ && (!idlname || strcmp(idlname, "CosNaming/NamingContext") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_CosNaming_NamingContext_destroy(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, CosNaming_NamingContext_list_op) == 0
+ && (!idlname || strcmp(idlname, "CosNaming/NamingContext") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_CosNaming_NamingContext_list(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, CosNaming_BindingIterator_next_one_op) == 0
+ && (!idlname || strcmp(idlname, "CosNaming/BindingIterator") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_CosNaming_BindingIterator_next_one(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, CosNaming_BindingIterator_next_n_op) == 0
+ && (!idlname || strcmp(idlname, "CosNaming/BindingIterator") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_CosNaming_BindingIterator_next_n(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, CosNaming_BindingIterator_destroy_op) == 0
+ && (!idlname || strcmp(idlname, "CosNaming/BindingIterator") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_CosNaming_BindingIterator_destroy(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+
+ break;
+
+ case CancelRequest:
+ case LocateRequest:
+ case LocateReply:
+ case CloseConnection:
+ case MessageError:
+ case Fragment:
+ return FALSE; /* not handled yet */
+
+ default:
+ return FALSE; /* not handled yet */
+
+ } /* switch */
+
+
+ return FALSE;
+
+} /* End of main dissector */
+
+
+
+/* Register the protocol with Wireshark */
+
+void proto_register_giop_cosnaming(void) {
+
+ /* setup list of header fields */
+
+ static hf_register_info hf[] = {
+ /* field that indicates the currently ongoing request/reply exchange */
+ {&hf_operationrequest, {"Request_Operation","COSNAMING.Request_Operation",FT_STRING,BASE_NONE,NULL,0x0,NULL,HFILL}},
+
+ /* no fields yet */
+
+ };
+
+ /* setup protocol subtree array */
+
+ static gint *ett[] = {
+ &ett_cosnaming,
+ };
+
+ /* Register the protocol name and description */
+
+ proto_cosnaming = proto_register_protocol("Cosnaming Dissector Using GIOP API" , "COSNAMING", "giop-cosnaming" );
+
+ proto_register_field_array(proto_cosnaming, hf, array_length(hf));
+
+ proto_register_subtree_array(ett,array_length(ett));
+
+}
+
+
+/* register me as handler for these interfaces */
+
+void proto_reg_handoff_giop_cosnaming(void) {
+
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_cosnaming, "COSNAMING", "CosNaming/BindingIterator", proto_cosnaming ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_cosnaming, "COSNAMING", "CosNaming/NamingContext", proto_cosnaming ); /* explicit dissector */
+
+
+ /* Register for Heuristic Dissection */
+
+ register_giop_user(dissect_cosnaming, "COSNAMING" ,proto_cosnaming); /* heuristic dissector */
+
+
+}
+
+
diff --git a/epan/dissectors/packet-csm-encaps.c b/epan/dissectors/packet-csm-encaps.c
index 657a60eff6..bdd1023b5e 100644
--- a/epan/dissectors/packet-csm-encaps.c
+++ b/epan/dissectors/packet-csm-encaps.c
@@ -29,14 +29,6 @@
# include "config.h"
#endif
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
@@ -45,56 +37,56 @@
#include <epan/etypes.h>
-#define OPCODE_NOOP 0x0000
+#define OPCODE_NOOP 0x0000
#define OPCODE_CONTROL_PACKET 0x0001
#define OPCODE_RELIABLE_DATA 0x0002
-#define CSM_ENCAPS_CTRL_ACK 0x80
-#define CSM_ENCAPS_CTRL_ACK_SUPPRESS 0x40
-#define CSM_ENCAPS_CTRL_ACK_TO_HOST 0x20
-#define CSM_ENCAPS_CTRL_ENDIAN 0x01
+#define CSM_ENCAPS_CTRL_ACK 0x80
+#define CSM_ENCAPS_CTRL_ACK_SUPPRESS 0x40
+#define CSM_ENCAPS_CTRL_ACK_TO_HOST 0x20
+#define CSM_ENCAPS_CTRL_ENDIAN 0x01
-#define CSM_ENCAPS_TYPE_CHANGE 0x00
-#define CSM_ENCAPS_TYPE_QUERY 0x01
-#define CSM_ENCAPS_TYPE_RESPONSE 0x02
-#define CSM_ENCAPS_TYPE_INDICATION 0x03
-#define CSM_ENCAPS_TYPE_QUERY_RESPONSE 0x04
+#define CSM_ENCAPS_TYPE_CHANGE 0x00
+#define CSM_ENCAPS_TYPE_QUERY 0x01
+#define CSM_ENCAPS_TYPE_RESPONSE 0x02
+#define CSM_ENCAPS_TYPE_INDICATION 0x03
+#define CSM_ENCAPS_TYPE_QUERY_RESPONSE 0x04
#define CSM_ENCAPS_TYPE_INDICATION_RESPONSE 0x05
static const value_string opcode_vals[] = {
- { OPCODE_NOOP, "No Operation" },
- { OPCODE_CONTROL_PACKET, "Control Packet" },
- { OPCODE_RELIABLE_DATA, "Reliable Data Transfer" },
- { 0, NULL }
+ { OPCODE_NOOP, "No Operation" },
+ { OPCODE_CONTROL_PACKET, "Control Packet" },
+ { OPCODE_RELIABLE_DATA, "Reliable Data Transfer" },
+ { 0, NULL }
};
static const value_string function_code_vals[] = {
- {0x0000, " "},
- { 0, NULL }
+ {0x0000, " "},
+ { 0, NULL }
};
static const value_string class_type_vals[] = {
- { 0, NULL }
+ { 0, NULL }
};
static const value_string exclusive_to_host_vals[] = {
- { 0, NULL }
+ { 0, NULL }
};
static const value_string exclusive_to_host_ct_vals[] = {
- { 0, NULL }
+ { 0, NULL }
};
static const value_string error_vals[] = {
- { 0, NULL }
+ { 0, NULL }
};
@@ -102,61 +94,61 @@ static const value_string error_vals[] = {
/* Initialize the protocol and registered fields */
static int proto_csm_encaps = -1;
-static int hf_csm_encaps_opcode = -1;
-static int hf_csm_encaps_seq = -1;
-static int hf_csm_encaps_ctrl = -1;
-static int hf_csm_encaps_ctrl_endian = -1;
-static int hf_csm_encaps_ctrl_ack = -1;
+static int hf_csm_encaps_opcode = -1;
+static int hf_csm_encaps_seq = -1;
+static int hf_csm_encaps_ctrl = -1;
+static int hf_csm_encaps_ctrl_endian = -1;
+static int hf_csm_encaps_ctrl_ack = -1;
static int hf_csm_encaps_ctrl_ack_suppress = -1;
-static int hf_csm_encaps_channel = -1;
-static int hf_csm_encaps_index = -1;
-static int hf_csm_encaps_length = -1;
-static int hf_csm_encaps_class = -1;
-static int hf_csm_encaps_type = -1;
-static int hf_csm_encaps_function_code = -1;
-static int hf_csm_encaps_reserved = -1;
-static int hf_csm_encaps_param_error = -1;
-static int hf_csm_encaps_param1 = -1;
-static int hf_csm_encaps_param2 = -1;
-static int hf_csm_encaps_param3 = -1;
-static int hf_csm_encaps_param4 = -1;
-static int hf_csm_encaps_param5 = -1;
-static int hf_csm_encaps_param6 = -1;
-static int hf_csm_encaps_param7 = -1;
-static int hf_csm_encaps_param8 = -1;
-static int hf_csm_encaps_param9 = -1;
-static int hf_csm_encaps_param10 = -1;
-static int hf_csm_encaps_param11 = -1;
-static int hf_csm_encaps_param12 = -1;
-static int hf_csm_encaps_param13 = -1;
-static int hf_csm_encaps_param14 = -1;
-static int hf_csm_encaps_param15 = -1;
-static int hf_csm_encaps_param16 = -1;
-static int hf_csm_encaps_param17 = -1;
-static int hf_csm_encaps_param18 = -1;
-static int hf_csm_encaps_param19 = -1;
-static int hf_csm_encaps_param20 = -1;
-static int hf_csm_encaps_param21 = -1;
-static int hf_csm_encaps_param22 = -1;
-static int hf_csm_encaps_param23 = -1;
-static int hf_csm_encaps_param24 = -1;
-static int hf_csm_encaps_param25 = -1;
-static int hf_csm_encaps_param26 = -1;
-static int hf_csm_encaps_param27 = -1;
-static int hf_csm_encaps_param28 = -1;
-static int hf_csm_encaps_param29 = -1;
-static int hf_csm_encaps_param30 = -1;
-static int hf_csm_encaps_param31 = -1;
-static int hf_csm_encaps_param32 = -1;
-static int hf_csm_encaps_param33 = -1;
-static int hf_csm_encaps_param34 = -1;
-static int hf_csm_encaps_param35 = -1;
-static int hf_csm_encaps_param36 = -1;
-static int hf_csm_encaps_param37 = -1;
-static int hf_csm_encaps_param38 = -1;
-static int hf_csm_encaps_param39 = -1;
-static int hf_csm_encaps_param40 = -1;
-static int hf_csm_encaps_param = -1;
+static int hf_csm_encaps_channel = -1;
+static int hf_csm_encaps_index = -1;
+static int hf_csm_encaps_length = -1;
+static int hf_csm_encaps_class = -1;
+static int hf_csm_encaps_type = -1;
+static int hf_csm_encaps_function_code = -1;
+static int hf_csm_encaps_reserved = -1;
+static int hf_csm_encaps_param_error = -1;
+static int hf_csm_encaps_param1 = -1;
+static int hf_csm_encaps_param2 = -1;
+static int hf_csm_encaps_param3 = -1;
+static int hf_csm_encaps_param4 = -1;
+static int hf_csm_encaps_param5 = -1;
+static int hf_csm_encaps_param6 = -1;
+static int hf_csm_encaps_param7 = -1;
+static int hf_csm_encaps_param8 = -1;
+static int hf_csm_encaps_param9 = -1;
+static int hf_csm_encaps_param10 = -1;
+static int hf_csm_encaps_param11 = -1;
+static int hf_csm_encaps_param12 = -1;
+static int hf_csm_encaps_param13 = -1;
+static int hf_csm_encaps_param14 = -1;
+static int hf_csm_encaps_param15 = -1;
+static int hf_csm_encaps_param16 = -1;
+static int hf_csm_encaps_param17 = -1;
+static int hf_csm_encaps_param18 = -1;
+static int hf_csm_encaps_param19 = -1;
+static int hf_csm_encaps_param20 = -1;
+static int hf_csm_encaps_param21 = -1;
+static int hf_csm_encaps_param22 = -1;
+static int hf_csm_encaps_param23 = -1;
+static int hf_csm_encaps_param24 = -1;
+static int hf_csm_encaps_param25 = -1;
+static int hf_csm_encaps_param26 = -1;
+static int hf_csm_encaps_param27 = -1;
+static int hf_csm_encaps_param28 = -1;
+static int hf_csm_encaps_param29 = -1;
+static int hf_csm_encaps_param30 = -1;
+static int hf_csm_encaps_param31 = -1;
+static int hf_csm_encaps_param32 = -1;
+static int hf_csm_encaps_param33 = -1;
+static int hf_csm_encaps_param34 = -1;
+static int hf_csm_encaps_param35 = -1;
+static int hf_csm_encaps_param36 = -1;
+static int hf_csm_encaps_param37 = -1;
+static int hf_csm_encaps_param38 = -1;
+static int hf_csm_encaps_param39 = -1;
+static int hf_csm_encaps_param40 = -1;
+static int hf_csm_encaps_param = -1;
/* Initialize the subtree pointers */
@@ -168,13 +160,13 @@ static gint ett_csm_encaps_control = -1;
static gchar *
csm_fc(guint16 fc, guint16 ct)
{
- if (fc == 0x0000) {
- return g_strdup(val_to_str(ct, class_type_vals,
- "0x%04x"));
- } else {
- return g_strdup(val_to_str(fc, function_code_vals,
- "0x%04x"));
- }
+ if (fc == 0x0000) {
+ return g_strdup(val_to_str(ct, class_type_vals,
+ "0x%04x"));
+ } else {
+ return g_strdup(val_to_str(fc, function_code_vals,
+ "0x%04x"));
+ }
}
@@ -183,14 +175,14 @@ csm_fc(guint16 fc, guint16 ct)
static gboolean
csm_to_host(guint16 fc, guint16 ct)
{
- if (fc == 0x0000)
- {
- return (match_strval(ct, exclusive_to_host_ct_vals) != NULL);
- }
- else
- {
- return (match_strval(fc, exclusive_to_host_vals) != NULL);
- }
+ if (fc == 0x0000)
+ {
+ return (match_strval(ct, exclusive_to_host_ct_vals) != NULL);
+ }
+ else
+ {
+ return (match_strval(fc, exclusive_to_host_vals) != NULL);
+ }
}
@@ -199,447 +191,455 @@ csm_to_host(guint16 fc, guint16 ct)
static void
dissect_csm_encaps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti, *subitem;
- proto_tree *csm_encaps_tree = NULL;
- proto_tree *csm_encaps_control_tree = NULL;
- guint16 function_code, channel, class_type;
- guint control, type, sequence, length;
- guint i;
- gboolean show_error_param= FALSE;
- gchar *str_function_name;
-
-
- function_code = tvb_get_letohs(tvb, 10);
- control = tvb_get_guint8(tvb, 3);
-
- class_type= tvb_get_guint8(tvb, 9);
- class_type= class_type<<8;
- class_type|= tvb_get_guint8(tvb, 8);
-
- type = tvb_get_guint8(tvb, 8);
- sequence = tvb_get_guint8(tvb, 2);
- length = tvb_get_guint8(tvb, 6);
- channel = tvb_get_ntohs(tvb, 4);
-
-
- if (CSM_ENCAPS_CTRL_ACK&control)
- show_error_param= FALSE;
- else
- {
- if (csm_to_host(function_code, class_type)) /* exclusive messages to host */
- show_error_param= FALSE;
- else
- {
- if (type == CSM_ENCAPS_TYPE_RESPONSE)
- show_error_param= TRUE;
- else
- show_error_param= FALSE;
- }
- }
-
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "CSM_ENCAPS");
-
- col_clear(pinfo->cinfo, COL_INFO);
-
-
- if (CSM_ENCAPS_CTRL_ACK&control)
- {
- if (CSM_ENCAPS_CTRL_ACK_TO_HOST&control)
- col_append_fstr(pinfo->cinfo, COL_INFO, "<-- ACK Ch: 0x%04X, Seq: %2d (To Host)", channel, sequence);
- else
- col_append_fstr(pinfo->cinfo, COL_INFO, "--> ACK Ch: 0x%04X, Seq: %2d (From Host)", channel, sequence);
- }
- else
- {
- str_function_name= csm_fc(function_code, class_type);
- if ((type == CSM_ENCAPS_TYPE_RESPONSE) || (csm_to_host(function_code, class_type)))
- col_append_fstr(pinfo->cinfo, COL_INFO, "<-- %-35s Ch: 0x%04X, Seq: %2d (To Host)", str_function_name, channel, sequence);
- else
- col_append_fstr(pinfo->cinfo, COL_INFO, "--> %-35s Ch: 0x%04X, Seq: %2d (From Host)", str_function_name, channel, sequence);
- g_free(str_function_name);
- }
-
-
- if (tree) {
- ti = proto_tree_add_item(tree, proto_csm_encaps, tvb, 0, -1, ENC_NA);
- csm_encaps_tree = proto_item_add_subtree(ti, ett_csm_encaps);
-
-
-
-
- proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_opcode, tvb, 0, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_seq, tvb, 2, 1, ENC_BIG_ENDIAN);
-
- subitem = proto_tree_add_uint(csm_encaps_tree, hf_csm_encaps_ctrl, tvb, 3, 1, control);
- csm_encaps_control_tree = proto_item_add_subtree(subitem, ett_csm_encaps_control);
-
- proto_tree_add_boolean(csm_encaps_control_tree, hf_csm_encaps_ctrl_ack, tvb, 3, 1, control);
- proto_tree_add_boolean(csm_encaps_control_tree, hf_csm_encaps_ctrl_ack_suppress, tvb, 3, 1, control);
- proto_tree_add_boolean(csm_encaps_control_tree, hf_csm_encaps_ctrl_endian, tvb, 3, 1, control);
-
- proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_channel, tvb, 4, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_length, tvb, 6, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_index, tvb, 7, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_class, tvb, 9, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_type, tvb, 8, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_function_code, tvb, 10, 2, ENC_LITTLE_ENDIAN);
-
- i=6;
-
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_reserved, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length)
- {
- if (show_error_param)
- proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param_error, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN);
- else
- proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param1, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN);
- i+=2;
- }
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param2, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param3, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param4, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param5, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param6, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param7, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param8, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param9, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param10, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param11, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param12, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param13, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param14, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param15, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param16, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param17, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param18, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param19, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param20, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param21, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param22, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param23, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param24, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param25, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param26, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param27, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param28, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param29, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param30, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param31, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param32, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param33, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param34, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param35, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param36, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param37, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param38, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param39, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
- if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param40, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
-
- for (; i<length; i+=2)
- proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN);
- }
+ proto_item *ti, *subitem;
+ proto_tree *csm_encaps_tree = NULL;
+ proto_tree *csm_encaps_control_tree = NULL;
+ guint16 function_code, channel, class_type;
+ guint control, type, sequence, length;
+ guint i;
+ gboolean show_error_param= FALSE;
+ gchar *str_function_name;
+
+
+ function_code = tvb_get_letohs(tvb, 10);
+ control = tvb_get_guint8(tvb, 3);
+
+ class_type = tvb_get_guint8(tvb, 9);
+ class_type = class_type<<8;
+ class_type|= tvb_get_guint8(tvb, 8);
+
+ type = tvb_get_guint8(tvb, 8);
+ sequence = tvb_get_guint8(tvb, 2);
+ length = tvb_get_guint8(tvb, 6);
+ channel = tvb_get_ntohs(tvb, 4);
+
+
+ if (CSM_ENCAPS_CTRL_ACK&control)
+ show_error_param= FALSE;
+ else
+ {
+ if (csm_to_host(function_code, class_type)) /* exclusive messages to host */
+ show_error_param= FALSE;
+ else
+ {
+ if (type == CSM_ENCAPS_TYPE_RESPONSE)
+ show_error_param= TRUE;
+ else
+ show_error_param= FALSE;
+ }
+ }
+
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "CSM_ENCAPS");
+
+ col_clear(pinfo->cinfo, COL_INFO);
+
+
+ if (CSM_ENCAPS_CTRL_ACK&control)
+ {
+ if (CSM_ENCAPS_CTRL_ACK_TO_HOST&control)
+ col_append_fstr(pinfo->cinfo, COL_INFO,
+ "<-- ACK Ch: 0x%04X, Seq: %2d (To Host)",
+ channel, sequence);
+ else
+ col_append_fstr(pinfo->cinfo, COL_INFO,
+ "--> ACK Ch: 0x%04X, Seq: %2d (From Host)",
+ channel, sequence);
+ }
+ else
+ {
+ str_function_name= csm_fc(function_code, class_type);
+ if ((type == CSM_ENCAPS_TYPE_RESPONSE) || (csm_to_host(function_code, class_type)))
+ col_append_fstr(pinfo->cinfo, COL_INFO,
+ "<-- %-35s Ch: 0x%04X, Seq: %2d (To Host)",
+ str_function_name, channel, sequence);
+ else
+ col_append_fstr(pinfo->cinfo, COL_INFO,
+ "--> %-35s Ch: 0x%04X, Seq: %2d (From Host)",
+ str_function_name, channel, sequence);
+ g_free(str_function_name);
+ }
+
+
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_csm_encaps, tvb, 0, -1, ENC_NA);
+ csm_encaps_tree = proto_item_add_subtree(ti, ett_csm_encaps);
+
+
+
+
+ proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_opcode, tvb, 0, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_seq, tvb, 2, 1, ENC_BIG_ENDIAN);
+
+ subitem = proto_tree_add_uint(csm_encaps_tree, hf_csm_encaps_ctrl, tvb, 3, 1, control);
+ csm_encaps_control_tree = proto_item_add_subtree(subitem, ett_csm_encaps_control);
+
+ proto_tree_add_boolean(csm_encaps_control_tree, hf_csm_encaps_ctrl_ack, tvb, 3, 1, control);
+ proto_tree_add_boolean(csm_encaps_control_tree, hf_csm_encaps_ctrl_ack_suppress, tvb, 3, 1, control);
+ proto_tree_add_boolean(csm_encaps_control_tree, hf_csm_encaps_ctrl_endian, tvb, 3, 1, control);
+
+ proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_channel, tvb, 4, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_length, tvb, 6, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_index, tvb, 7, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_class, tvb, 9, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_type, tvb, 8, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_function_code, tvb, 10, 2, ENC_LITTLE_ENDIAN);
+
+ i=6;
+
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_reserved, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length)
+ {
+ if (show_error_param)
+ proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param_error, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN);
+ else
+ proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param1, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN);
+ i+=2;
+ }
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param2, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param3, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param4, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param5, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param6, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param7, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param8, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param9, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param10, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param11, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param12, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param13, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param14, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param15, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param16, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param17, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param18, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param19, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param20, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param21, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param22, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param23, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param24, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param25, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param26, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param27, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param28, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param29, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param30, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param31, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param32, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param33, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param34, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param35, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param36, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param37, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param38, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param39, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+ if (i<length) proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param40, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN); i+=2;
+
+ for (; i<length; i+=2)
+ proto_tree_add_item(csm_encaps_tree, hf_csm_encaps_param, tvb, 12 + i-6, 2, ENC_LITTLE_ENDIAN);
+ }
}
void
proto_register_csm_encaps(void)
{
- static struct true_false_string control_endian_bit = {"Little Endian","Big Endian"};
- static struct true_false_string control_ack_bit = {"ACK Packet", "Message Packet"};
- static struct true_false_string control_ack_suppress_bit = {"ACK Suppressed", "ACK Required"};
-
-
- static hf_register_info hf[] = {
- { &hf_csm_encaps_opcode,
- { "Opcode", "csm_encaps.opcode",
- FT_UINT16, BASE_HEX, VALS(opcode_vals), 0,
- "CSM_ENCAPS Opcode", HFILL }
- },
- { &hf_csm_encaps_seq,
- { "Sequence Number", "csm_encaps.seq_num",
- FT_UINT8, BASE_DEC, NULL, 0,
- "CSM_ENCAPS Sequence Number", HFILL }
- },
-
- { &hf_csm_encaps_ctrl,
- { "Control", "csm_encaps.ctrl",
- FT_UINT8, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Control", HFILL }
- },
-
- { &hf_csm_encaps_ctrl_ack,
- { "Packet Bit", "csm_encaps.ctrl.ack",
- FT_BOOLEAN, 8, TFS(&control_ack_bit), CSM_ENCAPS_CTRL_ACK,
- "Message Packet/ACK Packet", HFILL }
- },
- { &hf_csm_encaps_ctrl_ack_suppress,
- { "ACK Suppress Bit", "csm_encaps.ctrl.ack_suppress",
- FT_BOOLEAN, 8, TFS(&control_ack_suppress_bit), CSM_ENCAPS_CTRL_ACK_SUPPRESS,
- "ACK Required/ACK Suppressed", HFILL }
- },
- { &hf_csm_encaps_ctrl_endian,
- { "Endian Bit", "csm_encaps.ctrl.endian",
- FT_BOOLEAN, 8, TFS(&control_endian_bit), CSM_ENCAPS_CTRL_ENDIAN,
- "Little Endian/Big Endian", HFILL }
- },
-
-
- { &hf_csm_encaps_channel,
- { "Channel Number", "csm_encaps.channel",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Channel Number", HFILL }
- },
- { &hf_csm_encaps_index,
- { "Index", "csm_encaps.index",
- FT_UINT8, BASE_DEC, NULL, 0,
- "CSM_ENCAPS Index", HFILL }
- },
- { &hf_csm_encaps_length,
- { "Length", "csm_encaps.length",
- FT_UINT8, BASE_DEC, NULL, 0,
- "CSM_ENCAPS Length", HFILL }
- },
- { &hf_csm_encaps_class,
- { "Class", "csm_encaps.class",
- FT_UINT8, BASE_DEC, NULL, 0,
- "CSM_ENCAPS Class", HFILL }
- },
- { &hf_csm_encaps_type,
- { "Type", "csm_encaps.type",
- FT_UINT8, BASE_DEC, NULL, 0,
- "CSM_ENCAPS Type", HFILL }
- },
- { &hf_csm_encaps_function_code,
- { "Function Code", "csm_encaps.function_code",
- FT_UINT16, BASE_HEX, VALS(function_code_vals), 0,
- "CSM_ENCAPS Function Code", HFILL }
- },
- { &hf_csm_encaps_reserved,
- { "Reserved", "csm_encaps.reserved",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Reserved", HFILL }
- },
- { &hf_csm_encaps_param_error,
- { "Parameter 1", "csm_encaps.param1",
- FT_UINT16, BASE_HEX, VALS(error_vals), 0,
- "CSM_ENCAPS Parameter 1", HFILL }
- },
- { &hf_csm_encaps_param1,
- { "Parameter 1", "csm_encaps.param1",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 1", HFILL }
- },
- { &hf_csm_encaps_param2,
- { "Parameter 2", "csm_encaps.param2",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 2", HFILL }
- },
- { &hf_csm_encaps_param3,
- { "Parameter 3", "csm_encaps.param3",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 3", HFILL }
- },
- { &hf_csm_encaps_param4,
- { "Parameter 4", "csm_encaps.param4",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 4", HFILL }
- },
- { &hf_csm_encaps_param5,
- { "Parameter 5", "csm_encaps.param5",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 5", HFILL }
- },
- { &hf_csm_encaps_param6,
- { "Parameter 6", "csm_encaps.param6",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 6", HFILL }
- },
- { &hf_csm_encaps_param7,
- { "Parameter 7", "csm_encaps.param7",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 7", HFILL }
- },
- { &hf_csm_encaps_param8,
- { "Parameter 8", "csm_encaps.param8",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 8", HFILL }
- },
- { &hf_csm_encaps_param9,
- { "Parameter 9", "csm_encaps.param9",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 9", HFILL }
- },
- { &hf_csm_encaps_param10,
- { "Parameter 10", "csm_encaps.param10",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 10", HFILL }
- },
- { &hf_csm_encaps_param11,
- { "Parameter 11", "csm_encaps.param11",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 11", HFILL }
- },
- { &hf_csm_encaps_param12,
- { "Parameter 12", "csm_encaps.param12",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 12", HFILL }
- },
- { &hf_csm_encaps_param13,
- { "Parameter 13", "csm_encaps.param13",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 13", HFILL }
- },
- { &hf_csm_encaps_param14,
- { "Parameter 14", "csm_encaps.param14",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 14", HFILL }
- },
- { &hf_csm_encaps_param15,
- { "Parameter 15", "csm_encaps.param15",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 15", HFILL }
- },
- { &hf_csm_encaps_param16,
- { "Parameter 16", "csm_encaps.param16",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 16", HFILL }
- },
- { &hf_csm_encaps_param17,
- { "Parameter 17", "csm_encaps.param17",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 17", HFILL }
- },
- { &hf_csm_encaps_param18,
- { "Parameter 18", "csm_encaps.param18",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 18", HFILL }
- },
- { &hf_csm_encaps_param19,
- { "Parameter 19", "csm_encaps.param19",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 19", HFILL }
- },
- { &hf_csm_encaps_param20,
- { "Parameter 20", "csm_encaps.param20",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 20", HFILL }
- },
- { &hf_csm_encaps_param21,
- { "Parameter 21", "csm_encaps.param21",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 21", HFILL }
- },
- { &hf_csm_encaps_param22,
- { "Parameter 22", "csm_encaps.param22",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 22", HFILL }
- },
- { &hf_csm_encaps_param23,
- { "Parameter 23", "csm_encaps.param23",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 23", HFILL }
- },
- { &hf_csm_encaps_param24,
- { "Parameter 24", "csm_encaps.param24",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 24", HFILL }
- },
- { &hf_csm_encaps_param25,
- { "Parameter 25", "csm_encaps.param25",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 25", HFILL }
- },
- { &hf_csm_encaps_param26,
- { "Parameter 26", "csm_encaps.param26",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 26", HFILL }
- },
- { &hf_csm_encaps_param27,
- { "Parameter 27", "csm_encaps.param27",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 27", HFILL }
- },
- { &hf_csm_encaps_param28,
- { "Parameter 28", "csm_encaps.param28",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 28", HFILL }
- },
- { &hf_csm_encaps_param29,
- { "Parameter 29", "csm_encaps.param29",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 29", HFILL }
- },
- { &hf_csm_encaps_param30,
- { "Parameter 30", "csm_encaps.param30",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 30", HFILL }
- },
- { &hf_csm_encaps_param31,
- { "Parameter 31", "csm_encaps.param31",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 31", HFILL }
- },
- { &hf_csm_encaps_param32,
- { "Parameter 32", "csm_encaps.param32",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 32", HFILL }
- },
- { &hf_csm_encaps_param33,
- { "Parameter 33", "csm_encaps.param33",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 33", HFILL }
- },
- { &hf_csm_encaps_param34,
- { "Parameter 34", "csm_encaps.param34",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 34", HFILL }
- },
- { &hf_csm_encaps_param35,
- { "Parameter 35", "csm_encaps.param35",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 35", HFILL }
- },
- { &hf_csm_encaps_param36,
- { "Parameter 36", "csm_encaps.param36",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 36", HFILL }
- },
- { &hf_csm_encaps_param37,
- { "Parameter 37", "csm_encaps.param37",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 37", HFILL }
- },
- { &hf_csm_encaps_param38,
- { "Parameter 38", "csm_encaps.param38",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 38", HFILL }
- },
- { &hf_csm_encaps_param39,
- { "Parameter 39", "csm_encaps.param39",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 39", HFILL }
- },
- { &hf_csm_encaps_param40,
- { "Parameter 40", "csm_encaps.param40",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter 40", HFILL }
- },
- { &hf_csm_encaps_param,
- { "Parameter", "csm_encaps.param",
- FT_UINT16, BASE_HEX, NULL, 0,
- "CSM_ENCAPS Parameter", HFILL }
- },
- };
-
- static gint *ett[] = {
- &ett_csm_encaps,
- &ett_csm_encaps_control
- };
-
- proto_csm_encaps = proto_register_protocol("CSM_ENCAPS", "CSM_ENCAPS", "csm_encaps");
- proto_register_field_array(proto_csm_encaps, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ static struct true_false_string control_endian_bit = {"Little Endian","Big Endian"};
+ static struct true_false_string control_ack_bit = {"ACK Packet", "Message Packet"};
+ static struct true_false_string control_ack_suppress_bit = {"ACK Suppressed", "ACK Required"};
+
+
+ static hf_register_info hf[] = {
+ { &hf_csm_encaps_opcode,
+ { "Opcode", "csm_encaps.opcode",
+ FT_UINT16, BASE_HEX, VALS(opcode_vals), 0,
+ "CSM_ENCAPS Opcode", HFILL }
+ },
+ { &hf_csm_encaps_seq,
+ { "Sequence Number", "csm_encaps.seq_num",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ "CSM_ENCAPS Sequence Number", HFILL }
+ },
+
+ { &hf_csm_encaps_ctrl,
+ { "Control", "csm_encaps.ctrl",
+ FT_UINT8, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Control", HFILL }
+ },
+
+ { &hf_csm_encaps_ctrl_ack,
+ { "Packet Bit", "csm_encaps.ctrl.ack",
+ FT_BOOLEAN, 8, TFS(&control_ack_bit), CSM_ENCAPS_CTRL_ACK,
+ "Message Packet/ACK Packet", HFILL }
+ },
+ { &hf_csm_encaps_ctrl_ack_suppress,
+ { "ACK Suppress Bit", "csm_encaps.ctrl.ack_suppress",
+ FT_BOOLEAN, 8, TFS(&control_ack_suppress_bit), CSM_ENCAPS_CTRL_ACK_SUPPRESS,
+ "ACK Required/ACK Suppressed", HFILL }
+ },
+ { &hf_csm_encaps_ctrl_endian,
+ { "Endian Bit", "csm_encaps.ctrl.endian",
+ FT_BOOLEAN, 8, TFS(&control_endian_bit), CSM_ENCAPS_CTRL_ENDIAN,
+ "Little Endian/Big Endian", HFILL }
+ },
+
+
+ { &hf_csm_encaps_channel,
+ { "Channel Number", "csm_encaps.channel",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Channel Number", HFILL }
+ },
+ { &hf_csm_encaps_index,
+ { "Index", "csm_encaps.index",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ "CSM_ENCAPS Index", HFILL }
+ },
+ { &hf_csm_encaps_length,
+ { "Length", "csm_encaps.length",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ "CSM_ENCAPS Length", HFILL }
+ },
+ { &hf_csm_encaps_class,
+ { "Class", "csm_encaps.class",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ "CSM_ENCAPS Class", HFILL }
+ },
+ { &hf_csm_encaps_type,
+ { "Type", "csm_encaps.type",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ "CSM_ENCAPS Type", HFILL }
+ },
+ { &hf_csm_encaps_function_code,
+ { "Function Code", "csm_encaps.function_code",
+ FT_UINT16, BASE_HEX, VALS(function_code_vals), 0,
+ "CSM_ENCAPS Function Code", HFILL }
+ },
+ { &hf_csm_encaps_reserved,
+ { "Reserved", "csm_encaps.reserved",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Reserved", HFILL }
+ },
+ { &hf_csm_encaps_param_error,
+ { "Parameter 1", "csm_encaps.param1",
+ FT_UINT16, BASE_HEX, VALS(error_vals), 0,
+ "CSM_ENCAPS Parameter 1", HFILL }
+ },
+ { &hf_csm_encaps_param1,
+ { "Parameter 1", "csm_encaps.param1",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 1", HFILL }
+ },
+ { &hf_csm_encaps_param2,
+ { "Parameter 2", "csm_encaps.param2",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 2", HFILL }
+ },
+ { &hf_csm_encaps_param3,
+ { "Parameter 3", "csm_encaps.param3",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 3", HFILL }
+ },
+ { &hf_csm_encaps_param4,
+ { "Parameter 4", "csm_encaps.param4",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 4", HFILL }
+ },
+ { &hf_csm_encaps_param5,
+ { "Parameter 5", "csm_encaps.param5",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 5", HFILL }
+ },
+ { &hf_csm_encaps_param6,
+ { "Parameter 6", "csm_encaps.param6",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 6", HFILL }
+ },
+ { &hf_csm_encaps_param7,
+ { "Parameter 7", "csm_encaps.param7",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 7", HFILL }
+ },
+ { &hf_csm_encaps_param8,
+ { "Parameter 8", "csm_encaps.param8",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 8", HFILL }
+ },
+ { &hf_csm_encaps_param9,
+ { "Parameter 9", "csm_encaps.param9",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 9", HFILL }
+ },
+ { &hf_csm_encaps_param10,
+ { "Parameter 10", "csm_encaps.param10",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 10", HFILL }
+ },
+ { &hf_csm_encaps_param11,
+ { "Parameter 11", "csm_encaps.param11",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 11", HFILL }
+ },
+ { &hf_csm_encaps_param12,
+ { "Parameter 12", "csm_encaps.param12",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 12", HFILL }
+ },
+ { &hf_csm_encaps_param13,
+ { "Parameter 13", "csm_encaps.param13",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 13", HFILL }
+ },
+ { &hf_csm_encaps_param14,
+ { "Parameter 14", "csm_encaps.param14",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 14", HFILL }
+ },
+ { &hf_csm_encaps_param15,
+ { "Parameter 15", "csm_encaps.param15",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 15", HFILL }
+ },
+ { &hf_csm_encaps_param16,
+ { "Parameter 16", "csm_encaps.param16",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 16", HFILL }
+ },
+ { &hf_csm_encaps_param17,
+ { "Parameter 17", "csm_encaps.param17",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 17", HFILL }
+ },
+ { &hf_csm_encaps_param18,
+ { "Parameter 18", "csm_encaps.param18",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 18", HFILL }
+ },
+ { &hf_csm_encaps_param19,
+ { "Parameter 19", "csm_encaps.param19",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 19", HFILL }
+ },
+ { &hf_csm_encaps_param20,
+ { "Parameter 20", "csm_encaps.param20",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 20", HFILL }
+ },
+ { &hf_csm_encaps_param21,
+ { "Parameter 21", "csm_encaps.param21",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 21", HFILL }
+ },
+ { &hf_csm_encaps_param22,
+ { "Parameter 22", "csm_encaps.param22",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 22", HFILL }
+ },
+ { &hf_csm_encaps_param23,
+ { "Parameter 23", "csm_encaps.param23",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 23", HFILL }
+ },
+ { &hf_csm_encaps_param24,
+ { "Parameter 24", "csm_encaps.param24",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 24", HFILL }
+ },
+ { &hf_csm_encaps_param25,
+ { "Parameter 25", "csm_encaps.param25",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 25", HFILL }
+ },
+ { &hf_csm_encaps_param26,
+ { "Parameter 26", "csm_encaps.param26",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 26", HFILL }
+ },
+ { &hf_csm_encaps_param27,
+ { "Parameter 27", "csm_encaps.param27",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 27", HFILL }
+ },
+ { &hf_csm_encaps_param28,
+ { "Parameter 28", "csm_encaps.param28",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 28", HFILL }
+ },
+ { &hf_csm_encaps_param29,
+ { "Parameter 29", "csm_encaps.param29",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 29", HFILL }
+ },
+ { &hf_csm_encaps_param30,
+ { "Parameter 30", "csm_encaps.param30",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 30", HFILL }
+ },
+ { &hf_csm_encaps_param31,
+ { "Parameter 31", "csm_encaps.param31",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 31", HFILL }
+ },
+ { &hf_csm_encaps_param32,
+ { "Parameter 32", "csm_encaps.param32",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 32", HFILL }
+ },
+ { &hf_csm_encaps_param33,
+ { "Parameter 33", "csm_encaps.param33",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 33", HFILL }
+ },
+ { &hf_csm_encaps_param34,
+ { "Parameter 34", "csm_encaps.param34",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 34", HFILL }
+ },
+ { &hf_csm_encaps_param35,
+ { "Parameter 35", "csm_encaps.param35",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 35", HFILL }
+ },
+ { &hf_csm_encaps_param36,
+ { "Parameter 36", "csm_encaps.param36",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 36", HFILL }
+ },
+ { &hf_csm_encaps_param37,
+ { "Parameter 37", "csm_encaps.param37",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 37", HFILL }
+ },
+ { &hf_csm_encaps_param38,
+ { "Parameter 38", "csm_encaps.param38",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 38", HFILL }
+ },
+ { &hf_csm_encaps_param39,
+ { "Parameter 39", "csm_encaps.param39",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 39", HFILL }
+ },
+ { &hf_csm_encaps_param40,
+ { "Parameter 40", "csm_encaps.param40",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter 40", HFILL }
+ },
+ { &hf_csm_encaps_param,
+ { "Parameter", "csm_encaps.param",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "CSM_ENCAPS Parameter", HFILL }
+ },
+ };
+
+ static gint *ett[] = {
+ &ett_csm_encaps,
+ &ett_csm_encaps_control
+ };
+
+ proto_csm_encaps = proto_register_protocol("CSM_ENCAPS", "CSM_ENCAPS", "csm_encaps");
+ proto_register_field_array(proto_csm_encaps, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
@@ -647,8 +647,8 @@ proto_register_csm_encaps(void)
void
proto_reg_handoff_csm_encaps(void)
{
- dissector_handle_t csm_encaps_handle;
+ dissector_handle_t csm_encaps_handle;
- csm_encaps_handle = create_dissector_handle(dissect_csm_encaps, proto_csm_encaps);
- dissector_add_uint("ethertype", ETHERTYPE_CSM_ENCAPS, csm_encaps_handle);
+ csm_encaps_handle = create_dissector_handle(dissect_csm_encaps, proto_csm_encaps);
+ dissector_add_uint("ethertype", ETHERTYPE_CSM_ENCAPS, csm_encaps_handle);
}
diff --git a/epan/dissectors/packet-csn1.c b/epan/dissectors/packet-csn1.c
index 944ac8809a..6dfc443e43 100644
--- a/epan/dissectors/packet-csn1.c
+++ b/epan/dissectors/packet-csn1.c
@@ -98,7 +98,7 @@ static const char* ErrCodes[] =
};
static gint16
-ProcessError(proto_tree *tree, tvbuff_t *tvb, gint bit_offset, unsigned char* sz, gint16 err, const CSN_DESCR* pDescr)
+ProcessError(proto_tree *tree, tvbuff_t *tvb, gint bit_offset, const unsigned char* sz, gint16 err, const CSN_DESCR* pDescr)
{
gint16 i = MIN(-err, ((gint16) ElementsOf(ErrCodes)-1));
if (i >= 0)
@@ -405,7 +405,7 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
{
if (remaining_bits_len >= pDescr->descr.crumb_spec[pDescr->i].crumb_bit_length)
{
- proto_tree_add_split_bits_crumb(tree, *pDescr->serialize.hf_ptr, tvb, bit_offset,
+ proto_tree_add_split_bits_crumb(tree, *pDescr->serialize.hf_ptr, tvb, bit_offset,
pDescr->descr.crumb_spec, pDescr->i);
remaining_bits_len -= pDescr->descr.crumb_spec[pDescr->i].crumb_bit_length;
@@ -501,7 +501,7 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
test_tree = proto_item_add_subtree(ti, ett_csn1);
csnStreamInit(&arT, bit_offset, remaining_bits_len);
- Status = csnStreamDissector(test_tree, &arT, pDescr->descr.ptr, tvb, pui8, ett_csn1);
+ Status = csnStreamDissector(test_tree, &arT, (const CSN_DESCR*)pDescr->descr.ptr, tvb, pui8, ett_csn1);
if (Status >= 0)
{
pui8 += nSize;
@@ -566,7 +566,7 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
test_tree = proto_item_add_subtree(ti, ett_csn1);
csnStreamInit(&arT, bit_offset, remaining_bits_len);
- Status = csnStreamDissector(test_tree, &arT, pDescr->descr.ptr, tvb, pvDATA(data, pDescr->offset), ett_csn1);
+ Status = csnStreamDissector(test_tree, &arT, (const CSN_DESCR*)pDescr->descr.ptr, tvb, pvDATA(data, pDescr->offset), ett_csn1);
if (Status >= 0)
{
@@ -624,11 +624,11 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
ti = proto_tree_add_text(tree, tvb, bit_offset>>3, 1, "%s", pDescr->sz);
test_tree = proto_item_add_subtree(ti, ett_csn1);
} else {
- test_tree = tree;
+ test_tree = tree;
}
csnStreamInit(&arT, bit_offset, remaining_bits_len);
- Status = csnStreamDissector(test_tree, &arT, descr, tvb, data, ett_csn1);
+ Status = csnStreamDissector(test_tree, &arT, (const CSN_DESCR*)descr, tvb, data, ett_csn1);
if (Status >= 0)
{
@@ -708,7 +708,7 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
case CSN_UNION:
{
gint16 Bits;
- guint8 index;
+ guint8 t_index;
gint16 count = pDescr->i;
const CSN_DESCR* pDescrNext = pDescr;
@@ -723,19 +723,19 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
proto_tree_add_text(tree, tvb, bit_offset>>3, ((bit_offset+Bits-1)>>3)-(bit_offset>>3)+1, "%s Union:%s",
decode_bits_in_field(bit_offset, Bits, tvb_get_bits8(tvb, bit_offset, Bits)),
pDescr->sz);
- index = 0;
+ t_index = 0;
while (Bits > 0)
{
- index <<= 1;
+ t_index <<= 1;
if (CSN_UNION_LH == pDescr->type)
{
- index |= tvb_get_masked_bits8(tvb, bit_offset, 1);
+ t_index |= tvb_get_masked_bits8(tvb, bit_offset, 1);
}
else
{
- index |= tvb_get_bits8(tvb, bit_offset, 1);
+ t_index |= tvb_get_bits8(tvb, bit_offset, 1);
}
remaining_bits_len--;
@@ -745,11 +745,11 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
/* Assign UnionType */
pui8 = pui8DATA(data, pDescr->offset);
- *pui8 = index;
+ *pui8 = t_index;
/* script index to continue on, limited in case we do not have a power of 2 */
- pDescr += (MIN(index + 1, count));
+ pDescr += (MIN(t_index + 1, count));
switch (pDescr->type)
@@ -997,7 +997,7 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
test_tree = proto_item_add_subtree(ti, ett_csn1);
csnStreamInit(&arT, bit_offset, remaining_bits_len);
- Status = csnStreamDissector(test_tree, &arT, pDescr->descr.ptr, tvb, pui8, ett_csn1);
+ Status = csnStreamDissector(test_tree, &arT, (const CSN_DESCR *)pDescr->descr.ptr, tvb, pui8, ett_csn1);
if (Status >= 0)
{
pui8 += nSize;
@@ -1050,7 +1050,7 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
test_tree = proto_item_add_subtree(ti, ett_csn1);
csnStreamInit(&arT, bit_offset, remaining_bits_len);
- Status = csnStreamDissector(test_tree, &arT, pDescr->descr.ptr, tvb, pvDATA(data, pDescr->offset), ett_csn1);
+ Status = csnStreamDissector(test_tree, &arT, (const CSN_DESCR *)pDescr->descr.ptr, tvb, pvDATA(data, pDescr->offset), ett_csn1);
if (Status >= 0)
{
proto_item_set_len(ti,((arT.bit_offset-1)>>3) - (bit_offset>>3)+1);
@@ -1220,12 +1220,12 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
}
{ /* extract bits */
- guint8* pui8 = pui8DATA(data, pDescr->offset);
+ guint8* t_pui8 = pui8DATA(data, pDescr->offset);
gint16 nB1 = no_of_bits & 0x07;/* no_of_bits Mod 8 */
if (nB1 > 0)
{ /* take care of the first byte - it will be right aligned */
- *pui8++ = tvb_get_bits8(tvb, bit_offset, nB1);
+ *t_pui8++ = tvb_get_bits8(tvb, bit_offset, nB1);
no_of_bits -= nB1;
bit_offset += nB1; /* (nB1 is no_of_bits Mod 8) */
remaining_bits_len -= nB1;
@@ -1234,7 +1234,7 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
/* remaining no_of_bits is a multiple of 8 or 0 */
while (no_of_bits > 0)
{
- *pui8++ = tvb_get_bits8(tvb, bit_offset, 8);
+ *t_pui8++ = tvb_get_bits8(tvb, bit_offset, 8);
no_of_bits -= 8;
remaining_bits_len -= 8;
}
@@ -1451,7 +1451,7 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
test_tree = proto_item_add_subtree(ti, ett_csn1);
csnStreamInit(&arT, bit_offset, remaining_bits_len);
- Status = csnStreamDissector(test_tree, &arT, pDescr->descr.ptr, tvb, pvDATA(data, pDescr->offset), ett_csn1);
+ Status = csnStreamDissector(test_tree, &arT, (const CSN_DESCR *)pDescr->descr.ptr, tvb, pvDATA(data, pDescr->offset), ett_csn1);
if (Status >= 0)
{ /* successful completion */
@@ -1515,7 +1515,7 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
test_tree = proto_item_add_subtree(ti, ett_csn1);
csnStreamInit(&arT, bit_offset, remaining_bits_len);
- Status = csnStreamDissector(test_tree, &arT, pDescr->descr.ptr, tvb, pvDATA(data, pDescr->offset), ett_csn1);
+ Status = csnStreamDissector(test_tree, &arT, (const CSN_DESCR *)pDescr->descr.ptr, tvb, pvDATA(data, pDescr->offset), ett_csn1);
if (Status >= 0)
{ /* successful completion */
@@ -1594,7 +1594,7 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
no_of_bits = callback(tree, tvb, pvDATA(data, pDescr->i), pvDATA(data, pDescr->offset), bit_offset, ett_csn1);
bit_offset += no_of_bits;
-
+
pDescr++;
break;
}
diff --git a/epan/dissectors/packet-csn1.h b/epan/dissectors/packet-csn1.h
index f40dde9273..5bd035b3dd 100644
--- a/epan/dissectors/packet-csn1.h
+++ b/epan/dissectors/packet-csn1.h
@@ -254,13 +254,13 @@ gint16 csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pD
* Similar to the M_BIT except that not only bit 0 or 1 but also the
* end of the message may be encountered when looking for the next element in
* the message.
- * Covers the case {null | 0 | 1}
+ * Covers the case {null | 0 | 1}
*****************************************************************************/
#define M_BIT_OR_NULL(_STRUCT, _MEMBER, _HF_PTR)\
{CSN_BIT, 0, {0}, offsetof(_STRUCT, _MEMBER), TRUE, #_MEMBER, {(StreamSerializeFcn_t) _HF_PTR}}
/******************************************************************************
* M_NEXT_EXIST(Par1, Par2, Par3)
- * Indicates whether the next element or a group of elements defined in the
+ * Indicates whether the next element or a group of elements defined in the
* structure is present or not.
* Par1: C structure name
* Par2: C structure element name
@@ -274,7 +274,7 @@ gint16 csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pD
* M_NEXT_EXIST_LH(Par1, Par2, Par3)
* similar to the M_NEXT_EXIST except that instead of bit 0/1 which is fetched
* from the message in order to find out whether the next element/elements are
- * present in the message, the logical operation XOR with the background
+ * present in the message, the logical operation XOR with the background
* pattern 0x2B is performed on the read bit before the decision is made.
*****************************************************************************/
#define M_NEXT_EXIST_LH(_STRUCT, _MEMBER, _NoOfExisting)\
@@ -283,9 +283,9 @@ gint16 csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pD
/******************************************************************************
* M_NEXT_EXIST_OR_NULL(Par1, Par2, Par3)
* Similar to the M_NEXT_EXIST except that not only bit 0 or 1 but also the end
- * of the message may be encountered when looking for the next element in the
+ * of the message may be encountered when looking for the next element in the
* message.
- * Covers the case {null | 0 | 1 < IE >}
+ * Covers the case {null | 0 | 1 < IE >}
*****************************************************************************/
#define M_NEXT_EXIST_OR_NULL(_STRUCT, _MEMBER, _NoOfExisting)\
{CSN_NEXT_EXIST, _NoOfExisting, {0}, offsetof(_STRUCT, _MEMBER), TRUE, #_MEMBER, {(StreamSerializeFcn_t)0}}
@@ -295,7 +295,7 @@ gint16 csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pD
* Similar to the M_NEXT_EXIST_LH except that not only bit 0 or 1 but also the
* end of the message may be encountered when looking for the next element in
* the message.
- * Covers the case {null | L | H < IE >}
+ * Covers the case {null | L | H < IE >}
*****************************************************************************/
#define M_NEXT_EXIST_OR_NULL_LH(_STRUCT, _MEMBER, _NoOfExisting)\
{CSN_NEXT_EXIST_LH, _NoOfExisting, {(void*)1}, offsetof(_STRUCT, _MEMBER), TRUE, #_MEMBER, {(StreamSerializeFcn_t)0}}
@@ -339,7 +339,7 @@ gint16 csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pD
* Similar to the M_UINT except that not only the request set of bits but also the
* end of the message may be encountered when looking for the next element in
* the message.
- * Covers the case {null | 0 | 1 < IE >}
+ * Covers the case {null | 0 | 1 < IE >}
*****************************************************************************/
#define M_UINT_OR_NULL(_STRUCT, _MEMBER, _BITS, _HF_PTR)\
{CSN_UINT, _BITS, {0}, offsetof(_STRUCT, _MEMBER), TRUE, #_MEMBER, {(StreamSerializeFcn_t) _HF_PTR}}
@@ -347,8 +347,8 @@ gint16 csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pD
/******************************************************************************
* M_UINT_LH(Par1, Par2, Par3, Par4)
* This macro has the same functionality as M_UINT except that in addition the
- * logical "exclusive or" operation with the background value "0x2B" is
- * performed before the final value of the integer number is delivered from the
+ * logical "exclusive or" operation with the background value "0x2B" is
+ * performed before the final value of the integer number is delivered from the
* received CSN.1 message
*****************************************************************************/
#define M_UINT_LH(_STRUCT, _MEMBER, _BITS, _HF_PTR)\
@@ -419,16 +419,16 @@ gint16 csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pD
/******************************************************************************
* M_REC_ARRAY(Par1, Par2, Par3, Par4)
- * similar to the M_VAR_ARRAY. The difference is that the size of the array is
+ * similar to the M_VAR_ARRAY. The difference is that the size of the array is
* not known in advance and it has to be calculated during unpacking. Its value
- * is stored in a variable which belongs to the same structure as the array.
- * A zero element terminates the array. The CSN.1 syntax describes it
+ * is stored in a variable which belongs to the same structure as the array.
+ * A zero element terminates the array. The CSN.1 syntax describes it
* recursively as:
- * <array> ::={1 <element> <array>| 0}
+ * <array> ::={1 <element> <array>| 0}
*
* Par1: C structure name
* Par2: C structure element name
- * Par3: name of the structure member where the calculated the size of the
+ * Par3: name of the structure member where the calculated the size of the
* array will be stored
* Par4: length of each element in bits
*****************************************************************************/
@@ -501,8 +501,8 @@ gint16 csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pD
* M_UNION(Par1, Par2)
* Informs the CSN.1 library that a union follows and how many possible choices
* there are in the union. The actual value of the choice, which points out the
- * chosen element of the union is stored in the uint8 variable and is usually
- * called UnionType. The elements of the union have to be listed directly after
+ * chosen element of the union is stored in the uint8 variable and is usually
+ * called UnionType. The elements of the union have to be listed directly after
* the M_UNION statement.
* Par1: C structure name
* Par2: number of possible choice in the union
@@ -519,12 +519,12 @@ gint16 csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pD
/******************************************************************************
* M_CHOICE(Par1, Par2, Par3, Par4)
- * Similar to the M_UNION. In the M_UNION the selected element of all possible
- * choices in the union is referred as a sequential numbers, i.e., the first
- * choice is addressed as choice 0 the second as choice 1, the third as choice
+ * Similar to the M_UNION. In the M_UNION the selected element of all possible
+ * choices in the union is referred as a sequential numbers, i.e., the first
+ * choice is addressed as choice 0 the second as choice 1, the third as choice
* 2 and so on, both in the encoded message and in the variable UnionType which
- * is the part of the message. In the CSN_CHOICE case, this rule does not
- * apply. There is free but predefined mapping of the element of the union and
+ * is the part of the message. In the CSN_CHOICE case, this rule does not
+ * apply. There is free but predefined mapping of the element of the union and
* the value which addresses this element.
* The value of the address is called a selector.
* After unpacking, this value is then converted to the sequential number of the
@@ -532,14 +532,14 @@ gint16 csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pD
* Par1: C structure name
* Par2: C structure element name
* Par3: address of an array of type CSN_ChoiceElement_t where all possible
- * values of the selector are provided, together with the selector
- * length expressed in bits and the address of the CSN_DESCR type
- * where the element is defined. For every element in the union
- * there is one line in the Choice variable. These lines have to
- * appear in the _CHOICE in the same order as the elements in the
- * union. The element of the union selected in the message through
- * the _CHOICE parameter is after unpacking translated to the
- * corresponding sequential number of this element and stored in
+ * values of the selector are provided, together with the selector
+ * length expressed in bits and the address of the CSN_DESCR type
+ * where the element is defined. For every element in the union
+ * there is one line in the Choice variable. These lines have to
+ * appear in the _CHOICE in the same order as the elements in the
+ * union. The element of the union selected in the message through
+ * the _CHOICE parameter is after unpacking translated to the
+ * corresponding sequential number of this element and stored in
* the variable pointed out by the _MEMBER
* Par4: number of possible choices in the union
*****************************************************************************/
@@ -552,15 +552,15 @@ gint16 csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pD
* displayed to show there was a choice
*****************************************************************************/
#define M_CHOICE_IL(_STRUCT, _MEMBER, _CHOICE, _ElementCount)\
- {CSN_CHOICE, _ElementCount, {(void*)_CHOICE}, offsetof(_STRUCT, _MEMBER), FALSE, NULL, {(StreamSerializeFcn_t)0}}
+ {CSN_CHOICE, _ElementCount, {(void*)_CHOICE}, offsetof(_STRUCT, _MEMBER), FALSE, NULL, {(StreamSerializeFcn_t)0}}
/******************************************************************************
* M_FIXED(Par1, Par2, Par3)
- * Defines a fixed value of type integer which should be fetched from or stored
+ * Defines a fixed value of type integer which should be fetched from or stored
* in the message
* Par1: C structure name
* Par2: gives the length of the fixed number in bits.
- * Par3: the value of the number. If the expected value is not present in
+ * Par3: the value of the number. If the expected value is not present in
* the message the unpacking procedure is aborted
*****************************************************************************/
#define M_FIXED(_STRUCT, _BITS, _BITVALUE)\
@@ -571,21 +571,21 @@ gint16 csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pD
* Same as M_FIXED but allows to define a custom string for the subtree
* Par1: C structure name
* Par2: gives the length of the fixed number in bits.
- * Par3: the value of the number. If the expected value is not present in
+ * Par3: the value of the number. If the expected value is not present in
* the message the unpacking procedure is aborted
* Par4: C string for the text
*****************************************************************************/
#define M_FIXED_LABEL(_STRUCT, _BITS, _BITVALUE, _LABEL)\
- {CSN_FIXED, _BITS, {0}, _BITVALUE, FALSE, _LABEL, {(StreamSerializeFcn_t)0}}
+ {CSN_FIXED, _BITS, {0}, _BITVALUE, FALSE, _LABEL, {(StreamSerializeFcn_t)0}}
/******************************************************************************
* M_SERIALIZE(Par1, Par2, Par3)
- * Allows using a complete free format of data being encoded or decoded.
- * When the M_SERIALIZE is encounted during encoding or decoding of a message
- * the CSNstream program passes the control over to the specified function
- * together with all necessary parameters about the current position within
- * the message being unpacked or packed. When transferring of "serialized"
- * data to or from the message is finished by the function the CSNstream gets
+ * Allows using a complete free format of data being encoded or decoded.
+ * When the M_SERIALIZE is encounted during encoding or decoding of a message
+ * the CSNstream program passes the control over to the specified function
+ * together with all necessary parameters about the current position within
+ * the message being unpacked or packed. When transferring of "serialized"
+ * data to or from the message is finished by the function the CSNstream gets
* back control over the data stream and continues to work with the message.
*****************************************************************************/
#define M_SERIALIZE(_STRUCT, _MEMBER, _LENGTH_LEN, _SERIALIZEFCN)\
@@ -596,7 +596,7 @@ gint16 csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pD
/******************************************************************************
* M_BITMAP(Par1, Par2, Par3)
- * Defines a type which consists of a bitmap. The size of the bitmap in bits
+ * Defines a type which consists of a bitmap. The size of the bitmap in bits
* is fixed and provided by the parameter Par3
* Par1: C structure name
* Par2: C structure element name
diff --git a/epan/dissectors/packet-cups.c b/epan/dissectors/packet-cups.c
index 1a1d2ceb1d..29918aa1e5 100644
--- a/epan/dissectors/packet-cups.c
+++ b/epan/dissectors/packet-cups.c
@@ -336,7 +336,7 @@ get_unquoted_string(tvbuff_t *tvb, gint offset, gint *next_offset, guint *len)
guint l = 0;
gint o;
- o = tvb_pbrk_guint8(tvb, offset, -1, (const guint8*)" \t\r\n", NULL);
+ o = tvb_pbrk_guint8(tvb, offset, -1, " \t\r\n", NULL);
if (o != -1) {
l = o - offset;
s = tvb_get_ptr(tvb, offset, l);
diff --git a/epan/dissectors/packet-data.c b/epan/dissectors/packet-data.c
index 6b6975e13b..83ba3234b9 100644
--- a/epan/dissectors/packet-data.c
+++ b/epan/dissectors/packet-data.c
@@ -59,7 +59,7 @@ dissect_data(tvbuff_t *tvb, packet_info *pinfo _U_ , proto_tree *tree)
if (tree) {
bytes = tvb_length_remaining(tvb, 0);
if (bytes > 0) {
- tvbuff_t *data_tvb;
+ tvbuff_t *data_tvb;
proto_item *ti;
proto_tree *data_tree;
if (new_pane) {
@@ -84,9 +84,9 @@ dissect_data(tvbuff_t *tvb, packet_info *pinfo _U_ , proto_tree *tree)
if(generate_md5_hash) {
const guint8 *cp;
- md5_state_t md_ctx;
- md5_byte_t digest[16];
- gchar *digest_string;
+ md5_state_t md_ctx;
+ md5_byte_t digest[16];
+ gchar *digest_string;
cp = tvb_get_ptr(tvb, 0, bytes);
@@ -122,9 +122,9 @@ proto_register_data(void)
static gint *ett[] = {
&ett_data
};
-
+
module_t *module_data;
-
+
proto_data = proto_register_protocol (
"Data", /* name */
"Data", /* short name */
@@ -135,8 +135,8 @@ proto_register_data(void)
proto_register_field_array(proto_data, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
-
- module_data = prefs_register_protocol( proto_data, proto_reg_handoff_data);
+
+ module_data = prefs_register_protocol( proto_data, NULL);
prefs_register_bool_preference(module_data,
"datapref.newpane",
"Show not dissected data on new Packet Bytes pane",
@@ -159,8 +159,3 @@ proto_register_data(void)
*/
proto_set_cant_toggle(proto_data);
}
-
-void
-proto_reg_handoff_data(void)
-{
-}
diff --git a/epan/dissectors/packet-data.h b/epan/dissectors/packet-data.h
index 32ac8142d6..cf22ac0b45 100644
--- a/epan/dissectors/packet-data.h
+++ b/epan/dissectors/packet-data.h
@@ -24,8 +24,8 @@
#ifndef __PACKET_DATA_H__
#define __PACKET_DATA_H__
-/* "proto_data" is exported from libwireshark.dll.
- * Thus we need a special declaration.
+/* "proto_data" is exported from libwireshark.dll.
+ * Thus we need a special declaration.
*/
WS_VAR_IMPORT int proto_data;
diff --git a/epan/dissectors/packet-db-lsp.c b/epan/dissectors/packet-db-lsp.c
index 6ce601802c..f167f972bb 100644
--- a/epan/dissectors/packet-db-lsp.c
+++ b/epan/dissectors/packet-db-lsp.c
@@ -134,7 +134,7 @@ dissect_db_lsp_pdu (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
} else {
proto_tree_add_item (db_lsp_tree, hf_value, tvb, offset, length, ENC_NA);
}
- offset += length;
+ /*offset += length;*/
proto_item_append_text (db_lsp_item, ", Type: %d, Length: %d", type, length);
proto_item_set_len (db_lsp_item, length + 5);
diff --git a/epan/dissectors/packet-dccp.c b/epan/dissectors/packet-dccp.c
index 7e7cfb1aef..bb91be4cf7 100644
--- a/epan/dissectors/packet-dccp.c
+++ b/epan/dissectors/packet-dccp.c
@@ -1,6 +1,6 @@
/* packet-dccp.c
* Routines for Datagram Congestion Control Protocol, "DCCP" dissection:
- * it should be conformance to draft-ietf-dccp-spec-11.txt
+ * it should conform to RFC 4340
*
* Copyright 2005 _FF_
*
@@ -43,36 +43,34 @@
* Jan 29, 2007: updates the offsets of the timestamps to be
* compliant to (cf. RFC 4342, sec. 13).
* (Gerrit Renker)
+ *
+ * Mar 11, 2012: add support for RFC 5596 (DCCP-Listen Packet)
+ * (Francesco Fondelli)
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
-#include <stdio.h>
-#include <stdlib.h>
-
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/addr_resolv.h>
#include <epan/ipproto.h>
#include <epan/in_cksum.h>
#include <epan/prefs.h>
#include <epan/emem.h>
-
-#include "packet-dccp.h"
-
#include "packet-ip.h"
#include <epan/conversation.h>
#include <epan/tap.h>
+#include "packet-dccp.h"
/*
* Some definitions and the dissect_options() logic have been taken
* from Arnaldo Carvalho de Melo's DCCP implementation, thanks!
*/
-
-#define DCCP_HDR_LEN 16 /* base DCCP header length, with 48 bits seqnums */
-#define DCCP_HDR_LEN_MIN 12 /* with 24 bits seqnum */
+#define DCCP_HDR_LEN 16 /* base DCCP header length, with 48 bits seqnums */
+#define DCCP_HDR_LEN_MIN 12 /* with 24 bits seqnum */
#define DCCP_HDR_PKT_TYPES_LEN_MAX 12 /* max per packet type extra
* header length
*/
@@ -80,6 +78,11 @@
#define DCCP_HDR_LEN_MAX (DCCP_HDR_LEN + DCCP_HDR_PKT_TYPES_LEN_MAX + \
DCCP_OPT_LEN_MAX)
+/*
+ * FF: please keep this list in sync with
+ * http://www.iana.org/assignments/dccp-parameters/dccp-parameters.xml
+ * Registry Name: 'Packet Types'
+ */
static const value_string dccp_packet_type_vals[] = {
{0x0, "Request" },
{0x1, "Response"},
@@ -91,7 +94,7 @@ static const value_string dccp_packet_type_vals[] = {
{0x7, "Reset" },
{0x8, "Sync" },
{0x9, "SyncAck" },
- {0xA, "Reserved"},
+ {0xA, "Listen" },
{0xB, "Reserved"},
{0xC, "Reserved"},
{0xD, "Reserved"},
@@ -139,22 +142,6 @@ static const value_string dccp_feature_numbers_vals[] = {
{0, NULL }
};
-#if 0
-#define DBG(str, args...) do {\
- fprintf(stdout, \
- "[%s][%s][%d]: ",\
- __FILE__, \
- __FUNCTION__, \
- __LINE__); \
- fflush(stdout); \
- fprintf(stdout, str, ## args); \
- } while (0)
-#else
-#define DBG0(format)
-#define DBG1(format, arg1)
-#define DBG2(format, arg1, arg2)
-#endif /* 0/1 */
-
static int proto_dccp = -1;
static int dccp_tap = -1;
@@ -201,956 +188,1256 @@ static dissector_handle_t data_handle;
/* preferences */
static gboolean dccp_summary_in_tree = TRUE;
-static gboolean try_heuristic_first = FALSE;
-static gboolean dccp_check_checksum = TRUE;
-
+static gboolean try_heuristic_first = FALSE;
+static gboolean dccp_check_checksum = TRUE;
static void
-decode_dccp_ports(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int sport, int dport)
+decode_dccp_ports(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree, int sport, int dport)
{
- tvbuff_t *next_tvb;
- int low_port, high_port;
-
- next_tvb = tvb_new_subset_remaining(tvb, offset);
-
- /* determine if this packet is part of a conversation and call dissector */
- /* for the conversation if available */
-
- if (try_conversation_dissector(&pinfo->src, &pinfo->dst, PT_DCCP, sport, dport, next_tvb, pinfo, tree)) {
- return;
- }
-
- if (try_heuristic_first) {
- /* do lookup with the heuristic subdissector table */
- if (dissector_try_heuristic(heur_subdissector_list, next_tvb, pinfo, tree)) {
- return;
- }
- }
-
- /* Do lookups with the subdissector table.
- We try the port number with the lower value first, followed by the
- port number with the higher value. This means that, for packets
- where a dissector is registered for *both* port numbers:
-
- 1) we pick the same dissector for traffic going in both directions;
-
- 2) we prefer the port number that's more likely to be the right
- one (as that prefers well-known ports to reserved ports);
-
- although there is, of course, no guarantee that any such strategy
- will always pick the right port number.
- XXX - we ignore port numbers of 0, as some dissectors use a port
- number of 0 to disable the port. */
-
- if (sport > dport) {
- low_port = dport;
- high_port = sport;
- } else {
- low_port = sport;
- high_port = dport;
- }
- if (low_port != 0 &&
- dissector_try_uint(dccp_subdissector_table, low_port, next_tvb, pinfo, tree)) {
- return;
- }
- if (high_port != 0 &&
- dissector_try_uint(dccp_subdissector_table, high_port, next_tvb, pinfo, tree)) {
- return;
- }
-
- if (!try_heuristic_first) {
- /* do lookup with the heuristic subdissector table */
- if (dissector_try_heuristic(heur_subdissector_list, next_tvb, pinfo, tree)) {
- return;
- }
- }
-
- /* Oh, well, we don't know this; dissect it as data. */
- call_dissector(data_handle, next_tvb, pinfo, tree);
+ tvbuff_t *next_tvb;
+ int low_port, high_port;
+
+ next_tvb = tvb_new_subset_remaining(tvb, offset);
+
+ /*
+ * determine if this packet is part of a conversation and call dissector
+ * for the conversation if available
+ */
+ if (try_conversation_dissector(&pinfo->src, &pinfo->dst, PT_DCCP, sport,
+ dport, next_tvb, pinfo, tree)) {
+ return;
+ }
+
+ if (try_heuristic_first) {
+ /* do lookup with the heuristic subdissector table */
+ if (dissector_try_heuristic(heur_subdissector_list, next_tvb, pinfo,
+ tree)) {
+ return;
+ }
+ }
+
+ /*
+ * Do lookups with the subdissector table.
+ * We try the port number with the lower value first, followed by the
+ * port number with the higher value. This means that, for packets
+ * where a dissector is registered for *both* port numbers:
+ *
+ * 1) we pick the same dissector for traffic going in both directions;
+ *
+ * 2) we prefer the port number that's more likely to be the right
+ * one (as that prefers well-known ports to reserved ports);
+ *
+ * although there is, of course, no guarantee that any such strategy
+ * will always pick the right port number.
+ * XXX - we ignore port numbers of 0, as some dissectors use a port
+ * number of 0 to disable the port.
+ */
+ if (sport > dport) {
+ low_port = dport;
+ high_port = sport;
+ } else {
+ low_port = sport;
+ high_port = dport;
+ }
+
+ if (low_port != 0 &&
+ dissector_try_uint(dccp_subdissector_table, low_port,
+ next_tvb, pinfo, tree)) {
+ return;
+ }
+
+ if (high_port != 0 &&
+ dissector_try_uint(dccp_subdissector_table, high_port,
+ next_tvb, pinfo, tree)) {
+ return;
+ }
+
+ if (!try_heuristic_first) {
+ /* do lookup with the heuristic subdissector table */
+ if (dissector_try_heuristic(heur_subdissector_list, next_tvb,
+ pinfo, tree)) {
+ return;
+ }
+ }
+
+ /* Oh, well, we don't know this; dissect it as data. */
+ call_dissector(data_handle, next_tvb, pinfo, tree);
}
/*
- * Auxiliary functions to dissect DCCP options
+ * decode a variable-length number of nbytes starting at offset. Based on
+ * a concept by Arnaldo de Melo
*/
-/* decode a variable-length number of nbytes starting at offset. Based on a concept by Arnaldo de Melo */
-static guint64 tvb_get_ntoh_var(tvbuff_t *tvb, gint offset, guint nbytes)
+static guint64
+tvb_get_ntoh_var(tvbuff_t *tvb, gint offset, guint nbytes)
{
- const guint8* ptr;
- guint64 value = 0;
-
- ptr = tvb_get_ptr(tvb, offset, nbytes);
- if (nbytes > 5)
- value += ((guint64)*ptr++) << 40;
- if (nbytes > 4)
- value += ((guint64)*ptr++) << 32;
- if (nbytes > 3)
- value += ((guint64)*ptr++) << 24;
- if (nbytes > 2)
- value += ((guint64)*ptr++) << 16;
- if (nbytes > 1)
- value += ((guint64)*ptr++) << 8;
- if (nbytes > 0)
- value += *ptr;
-
- return value;
+ const guint8 *ptr;
+ guint64 value = 0;
+
+ ptr = tvb_get_ptr(tvb, offset, nbytes);
+ if (nbytes > 5)
+ value += ((guint64) * ptr++) << 40;
+ if (nbytes > 4)
+ value += ((guint64) * ptr++) << 32;
+ if (nbytes > 3)
+ value += ((guint64) * ptr++) << 24;
+ if (nbytes > 2)
+ value += ((guint64) * ptr++) << 16;
+ if (nbytes > 1)
+ value += ((guint64) * ptr++) << 8;
+ if (nbytes > 0)
+ value += *ptr;
+
+ return value;
}
-static void dissect_feature_options(proto_tree *dccp_options_tree, tvbuff_t *tvb, int offset, guint8 option_len,
- guint8 option_type)
+static void
+dissect_feature_options(proto_tree *dccp_options_tree, tvbuff_t *tvb,
+ int offset, guint8 option_len,
+ guint8 option_type)
{
- guint8 feature_number = tvb_get_guint8(tvb, offset + 2);
- proto_item *dccp_item, *hidden_item;
- int i;
-
- hidden_item = proto_tree_add_uint(dccp_options_tree, hf_dccp_feature_number, tvb, offset + 2, 1, feature_number);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
-
- dccp_item = proto_tree_add_text(dccp_options_tree, tvb, offset, option_len, "%s(",
- val_to_str(option_type, dccp_feature_options_vals, "Unknown Type"));
-
- /* decode the feature according to whether it is server-priority (list) or NN (single number) */
- switch (feature_number) {
- /* Server Priority features (RFC 4340, 6.3.1) */
- case 1: /* Congestion Control ID (CCID); fall through */
- case 2: /* Allow Short Seqnums; fall through */
- case 4: /* ECN Incapable; fall through */
- case 6: /* Send Ack Vector; fall through */
- case 7: /* Send NDP Count; fall through */
- case 8: /* Minimum Checksum Coverage; fall through */
- case 9: /* Check Data Checksum; fall through */
- case 192: /* Send Loss Event Rate, RFC 4342, section 8.4 */
- proto_item_append_text(dccp_item, "%s",
- val_to_str(feature_number, dccp_feature_numbers_vals, "Unknown Type"));
- for (i = 0; i < option_len - 3; i++)
- proto_item_append_text(dccp_item, "%s %d", i? "," : "", tvb_get_guint8(tvb, offset + 3 + i));
- break;
- /* Non-negotiable features (RFC 4340, 6.3.2) */
- case 3: /* Sequence Window; fall through */
- case 5: /* Ack Ratio */
- proto_item_append_text(dccp_item, "%s",
- val_to_str(feature_number, dccp_feature_numbers_vals, "Unknown Type"));
-
- if (option_len > 3) /* could be empty Confirm */
- proto_item_append_text(dccp_item, " %" G_GINT64_MODIFIER "u", tvb_get_ntoh_var(tvb, offset + 3, option_len - 3));
- break;
- /* Reserved, specific, or unknown features */
- default:
- if (feature_number == 0 ||
- (feature_number >= 10 && feature_number <= 127))
- proto_item_append_text(dccp_item, "Reserved feature number %d", feature_number);
- else if (feature_number >= 193)
- proto_item_append_text(dccp_item, "CCID-specific feature number %d", feature_number);
- else
- proto_item_append_text(dccp_item, "Unknown feature number %d", feature_number);
- break;
- }
- proto_item_append_text(dccp_item, ")");
+ guint8 feature_number = tvb_get_guint8(tvb, offset + 2);
+ proto_item *dccp_item, *hidden_item;
+ int i;
+
+ hidden_item =
+ proto_tree_add_uint(dccp_options_tree, hf_dccp_feature_number, tvb,
+ offset + 2, 1, feature_number);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+
+ dccp_item =
+ proto_tree_add_text(dccp_options_tree, tvb, offset, option_len, "%s(",
+ val_to_str(option_type,
+ dccp_feature_options_vals,
+ "Unknown Type"));
+
+ /*
+ * decode the feature according to whether it is server-priority (list)
+ * or NN (single number)
+ */
+ switch (feature_number) {
+
+ /* Server Priority features (RFC 4340, 6.3.1) */
+
+ case 1: /* Congestion Control ID (CCID); fall through */
+ case 2: /* Allow Short Seqnums; fall through */
+ case 4: /* ECN Incapable; fall through */
+ case 6: /* Send Ack Vector; fall through */
+ case 7: /* Send NDP Count; fall through */
+ case 8: /* Minimum Checksum Coverage; fall through */
+ case 9: /* Check Data Checksum; fall through */
+ case 192: /* Send Loss Event Rate, RFC 4342, section 8.4 */
+ proto_item_append_text(dccp_item, "%s",
+ val_to_str(feature_number,
+ dccp_feature_numbers_vals,
+ "Unknown Type"));
+ for (i = 0; i < option_len - 3; i++)
+ proto_item_append_text(dccp_item, "%s %d", i ? "," : "",
+ tvb_get_guint8(tvb,
+ offset + 3 + i));
+ break;
+
+ /* Non-negotiable features (RFC 4340, 6.3.2) */
+
+ case 3: /* Sequence Window; fall through */
+ case 5: /* Ack Ratio */
+ proto_item_append_text(dccp_item, "%s",
+ val_to_str(feature_number,
+ dccp_feature_numbers_vals,
+ "Unknown Type"));
+
+ if (option_len > 3) /* could be empty Confirm */
+ proto_item_append_text(dccp_item, " %" G_GINT64_MODIFIER "u",
+ tvb_get_ntoh_var(tvb, offset + 3,
+ option_len - 3));
+ break;
+
+ /* Reserved, specific, or unknown features */
+ default:
+ if (feature_number == 0 ||
+ (feature_number >= 10 && feature_number <= 127))
+ proto_item_append_text(dccp_item, "Reserved feature number %d",
+ feature_number);
+ else if (feature_number >= 193)
+ proto_item_append_text(dccp_item, "CCID-specific feature number %d",
+ feature_number);
+ else
+ proto_item_append_text(dccp_item, "Unknown feature number %d",
+ feature_number);
+ break;
+ }
+ proto_item_append_text(dccp_item, ")");
}
/*
* This function dissects DCCP options
*/
-static void dissect_options(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *dccp_options_tree, proto_tree *tree _U_, e_dccphdr *dccph _U_,
- int offset_start,
- int offset_end)
-{
- /* if here I'm sure there is at least offset_end - offset_start bytes in tvb and it should be options */
- int offset=offset_start;
- guint8 option_type = 0;
- guint8 option_len = 0;
- int i;
- guint32 p;
- proto_item *dccp_item = NULL;
- proto_item *hidden_item;
-
- while( offset < offset_end ) {
-
- /* DBG("offset==%d\n", offset); */
-
- /* first byte is the option type */
- option_type = tvb_get_guint8(tvb, offset);
- hidden_item = proto_tree_add_uint(dccp_options_tree, hf_dccp_option_type, tvb, offset, 1, option_type);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
-
- if (option_type >= 32) { /* variable length options */
-
- if(!tvb_bytes_exist(tvb, offset, 1)) {
- /* DBG("malformed\n"); */
- hidden_item = proto_tree_add_boolean(dccp_options_tree, hf_dccp_malformed, tvb, offset, 0, TRUE);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- THROW(ReportedBoundsError);
- }
-
- option_len = tvb_get_guint8(tvb, offset + 1);
-
- if (option_len < 2) {
- /* DBG("malformed\n"); */
- hidden_item = proto_tree_add_boolean(dccp_options_tree, hf_dccp_malformed, tvb, offset, 0, TRUE);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- THROW(ReportedBoundsError);
- }
-
- if(!tvb_bytes_exist(tvb, offset, option_len)) {
- /* DBG("malformed\n"); */
- hidden_item = proto_tree_add_boolean(dccp_options_tree, hf_dccp_malformed, tvb, offset, 0, TRUE);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- THROW(ReportedBoundsError);
- }
-
- } else { /* 1byte options */
- option_len = 1;
- }
-
- switch (option_type) {
-
- case 0:
- proto_tree_add_text(dccp_options_tree, tvb, offset, option_len, "Padding");
- break;
-
- case 1:
- proto_tree_add_text(dccp_options_tree, tvb, offset, option_len, "Mandatory");
- break;
-
- case 2:
- proto_tree_add_text(dccp_options_tree, tvb, offset, option_len, "Slow Receiver");
- break;
-
- case 32:
- case 33:
- case 34:
- case 35:
- dissect_feature_options(dccp_options_tree, tvb, offset, option_len, option_type);
- break;
-
- case 36:
- dccp_item = proto_tree_add_text(dccp_options_tree, tvb, offset, option_len, "Init Cookie(");
- for (i = 0; i < option_len - 2; i++) {
- if(i==0)
- proto_item_append_text(dccp_item, "%02x", tvb_get_guint8(tvb, offset + 2 + i));
- else
- proto_item_append_text(dccp_item, " %02x", tvb_get_guint8(tvb, offset + 2 + i));
- }
- proto_item_append_text(dccp_item, ")");
- break;
-
- case 37:
- if (option_len > 8)
- proto_tree_add_text(dccp_options_tree, tvb, offset, option_len, "NDP Count too long (max 6 bytes)");
- else
- proto_tree_add_text(dccp_options_tree, tvb, offset, option_len, "NDP Count: %" G_GINT64_MODIFIER "u",
- tvb_get_ntoh_var(tvb, offset + 2, option_len - 2));
- break;
-
- case 38:
- dccp_item = proto_tree_add_text(dccp_options_tree, tvb, offset, option_len, "Ack Vector [Nonce 0]:");
- for (i = 0; i < option_len - 2; i++)
- proto_item_append_text(dccp_item, " %02x", tvb_get_guint8(tvb, offset + 2 + i));
- break;
-
- case 39:
- dccp_item = proto_tree_add_text(dccp_options_tree, tvb, offset, option_len, "Ack Vector [Nonce 1]:");
- for (i = 0; i < option_len - 2; i++)
- proto_item_append_text(dccp_item, " %02x", tvb_get_guint8(tvb, offset + 2 + i));
- proto_item_append_text(dccp_item, ")");
- break;
-
- case 40:
- dccp_item = proto_tree_add_text(dccp_options_tree, tvb, offset, option_len, "Data Dropped:");
- for (i = 0; i < option_len - 2; i++)
- proto_item_append_text(dccp_item, " %02x", tvb_get_guint8(tvb, offset + 2 + i));
- break;
-
- case 41:
- if(option_len==6)
- proto_tree_add_uint(dccp_options_tree, hf_dccp_timestamp, tvb, offset + 2, 4,
- tvb_get_ntohl(tvb, offset + 2));
- else
- proto_tree_add_text(dccp_options_tree, tvb, offset, option_len,
- "Timestamp too long [%u != 6]", option_len);
- break;
-
- case 42:
- if(option_len==6)
- proto_tree_add_uint(dccp_options_tree, hf_dccp_timestamp_echo, tvb, offset + 2, 4,
- tvb_get_ntohl(tvb, offset + 2));
- else if (option_len==8) {
- proto_tree_add_uint(dccp_options_tree, hf_dccp_timestamp_echo, tvb, offset + 2, 4,
- tvb_get_ntohl(tvb, offset + 2));
-
- proto_tree_add_uint(dccp_options_tree, hf_dccp_elapsed_time, tvb, offset + 6, 2,
- tvb_get_ntohs(tvb, offset + 6));
- } else if (option_len==10) {
- proto_tree_add_uint(dccp_options_tree, hf_dccp_timestamp_echo, tvb, offset + 2, 4,
- tvb_get_ntohl(tvb, offset + 2));
-
- proto_tree_add_uint(dccp_options_tree, hf_dccp_elapsed_time, tvb, offset + 6, 4,
- tvb_get_ntohl(tvb, offset + 6));
- } else
- proto_tree_add_text(dccp_options_tree, tvb, offset, option_len, "Wrong Timestamp Echo length");
- break;
-
- case 43:
- if(option_len==4)
- proto_tree_add_uint(dccp_options_tree, hf_dccp_elapsed_time, tvb, offset + 2, 2,
- tvb_get_ntohs(tvb, offset + 2));
- else if (option_len==6)
- proto_tree_add_uint(dccp_options_tree, hf_dccp_elapsed_time, tvb, offset + 2, 4,
- tvb_get_ntohl(tvb, offset + 2));
- else
- proto_tree_add_text(dccp_options_tree, tvb, offset, option_len, "Wrong Elapsed Time length");
- break;
-
- case 44:
- if(option_len==6) {
- proto_tree_add_uint(dccp_options_tree, hf_dccp_data_checksum, tvb, offset + 2, 4,
- tvb_get_ntohl(tvb, offset + 2));
- } else
- proto_tree_add_text(dccp_options_tree, tvb, offset, option_len, "Wrong Data checksum length");
- break;
- case 192: /* RFC 4342, 8.5 */
- if(option_len == 6) {
- p = tvb_get_ntohl(tvb, offset + 2);
- /* According to the comment in section 8.5 of RFC 4342, 0xffffffff can mean zero */
- if (p == 0xFFFFFFFF)
- proto_tree_add_text(dccp_options_tree, tvb, offset, option_len, "CCID3 Loss Event Rate: 0 (or max)");
- else
- proto_tree_add_text(dccp_options_tree, tvb, offset, option_len, "CCID3 Loss Event Rate: %u", p);
- } else
- proto_tree_add_text(dccp_options_tree, tvb, offset, option_len, "Wrong CCID3 Loss Event Rate length");
- break;
- case 193: /* RFC 4342, 8.6 */
- proto_tree_add_text(dccp_options_tree, tvb, offset, option_len, "CCID3 Loss Intervals");
- /* FIXME: not implemented and apparently not used by any implementation so far */
- break;
- case 194: /* RFC 4342, 8.3 */
- if(option_len == 6)
- proto_tree_add_text(dccp_options_tree, tvb, offset, option_len, "CCID3 Receive Rate: %u bytes/sec",
- tvb_get_ntohl(tvb, offset + 2));
- else
- proto_tree_add_text(dccp_options_tree, tvb, offset, option_len, "Wrong CCID3 Receive Rate length");
- break;
- default :
- if(((option_type >= 45) && (option_type <= 127)) ||
- ((option_type >= 3) && (option_type <= 31))) {
- proto_tree_add_text(dccp_options_tree, tvb, offset, option_len, "Reserved");
- break;
- }
-
- if (option_type >= 128) {
- proto_tree_add_text(dccp_options_tree, tvb, offset, option_len, "CCID option %d", option_type);
- break;
- }
-
- /* if here we don't know this option */
- proto_tree_add_text(dccp_options_tree, tvb, offset, option_len, "Unknown");
- break;
-
- } /* end switch() */
-
- offset+=option_len; /* Skip over the dissected option */
-
- } /* end while() */
-}
-/* compute DCCP checksum coverage according to RFC 4340, section 9 */
-static inline guint dccp_csum_coverage(const e_dccphdr *dccph, guint len)
-{
- guint cov;
-
- if (dccph->cscov == 0)
- return len;
- cov = (dccph->data_offset + dccph->cscov - 1) * sizeof(guint32);
- return (cov > len)? len : cov;
-}
-
-static void dissect_dccp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static void
+dissect_options(tvbuff_t *tvb, packet_info *pinfo _U_,
+ proto_tree *dccp_options_tree, proto_tree *tree _U_,
+ e_dccphdr *dccph _U_,
+ int offset_start,
+ int offset_end)
{
- proto_tree *dccp_tree = NULL;
- proto_tree *dccp_options_tree = NULL;
- proto_item *dccp_item = NULL;
- proto_item *hidden_item;
-
- vec_t cksum_vec[4];
- guint32 phdr[2];
- guint16 computed_cksum;
- guint offset = 0;
- guint len = 0;
- guint reported_len = 0;
- guint advertised_dccp_header_len = 0;
- guint options_len = 0;
- e_dccphdr *dccph;
-
- /* get at least a full message header */
- if(tvb_length(tvb) < DCCP_HDR_LEN_MIN) {
- /* DBG("malformed\n"); */
- if (tree) {
- hidden_item = proto_tree_add_boolean(dccp_tree, hf_dccp_malformed, tvb, offset, 0, TRUE);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- }
- col_set_str(pinfo->cinfo, COL_INFO, "Packet too short");
- THROW(ReportedBoundsError);
+ /*
+ * if here I'm sure there is at least offset_end - offset_start bytes
+ * in tvb and it should be options
+ */
+ int offset = offset_start;
+ guint8 option_type = 0;
+ guint8 option_len = 0;
+ int i;
+ guint32 p;
+ proto_item *dccp_item = NULL;
+ proto_item *hidden_item;
+
+ while (offset < offset_end) {
+ /* first byte is the option type */
+ option_type = tvb_get_guint8(tvb, offset);
+ hidden_item =
+ proto_tree_add_uint(dccp_options_tree, hf_dccp_option_type, tvb,
+ offset,
+ 1,
+ option_type);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+
+ if (option_type >= 32) { /* variable length options */
+ if (!tvb_bytes_exist(tvb, offset, 1)) {
+ hidden_item =
+ proto_tree_add_boolean(dccp_options_tree, hf_dccp_malformed,
+ tvb, offset, 0, TRUE);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ THROW(ReportedBoundsError);
+ }
+
+ option_len = tvb_get_guint8(tvb, offset + 1);
+
+ if (option_len < 2) {
+ hidden_item =
+ proto_tree_add_boolean(dccp_options_tree, hf_dccp_malformed,
+ tvb, offset, 0, TRUE);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ THROW(ReportedBoundsError);
+ }
+
+ if (!tvb_bytes_exist(tvb, offset, option_len)) {
+ hidden_item =
+ proto_tree_add_boolean(dccp_options_tree, hf_dccp_malformed,
+ tvb, offset, 0, TRUE);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ THROW(ReportedBoundsError);
+ }
+ } else { /* 1byte options */
+ option_len = 1;
}
- dccph=ep_alloc0(sizeof(e_dccphdr));
-
- SET_ADDRESS(&dccph->ip_src, pinfo->src.type, pinfo->src.len, pinfo->src.data);
- SET_ADDRESS(&dccph->ip_dst, pinfo->dst.type, pinfo->dst.len, pinfo->dst.data);
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "DCCP");
- col_clear(pinfo->cinfo, COL_INFO);
-
- /* Extract generic header */
- dccph->sport=tvb_get_ntohs(tvb, offset);
- /* DBG("dccph->sport: %d\n", dccph->sport); */
- dccph->dport=tvb_get_ntohs(tvb, offset+2);
- /* DBG("dccph->dport: %d\n", dccph->dport); */
-
- /* update pinfo structure. I guess I have to do it, because this is a transport protocol dissector. Right? */
- pinfo->ptype=PT_DCCP;
- pinfo->srcport=dccph->sport;
- pinfo->destport=dccph->dport;
-
- dccph->data_offset=tvb_get_guint8(tvb, offset+4);
- /* DBG("dccph->data_offset: %d\n", dccph->data_offset); */
- dccph->cscov=tvb_get_guint8(tvb, offset+5)&0x0F;
- /* DBG("dccph->cscov: %d\n", dccph->cscov); */
- dccph->ccval=tvb_get_guint8(tvb, offset+5) &0xF0;
- dccph->ccval >>= 4;
- /* DBG("dccph->ccval: %d\n", dccph->ccval); */
- dccph->checksum=tvb_get_ntohs(tvb, offset+6);
- /* DBG("dccph->checksum: %d\n", dccph->checksum); */
- dccph->reserved1=tvb_get_guint8(tvb, offset+8)&0xE0;
- dccph->reserved1>>=5;
- /* DBG("dccph->reserved1: %d\n", dccph->reserved1); */
- dccph->type=tvb_get_guint8(tvb, offset+8)&0x1E;
- dccph->type>>=1;
- /* DBG("dccph->type: %d\n", dccph->type); */
- dccph->x=tvb_get_guint8(tvb, offset+8)&0x01;
- /* DBG("dccph->x: %d\n", dccph->x); */
- if(dccph->x) {
- if(tvb_length(tvb) < DCCP_HDR_LEN) { /* at least 16 bytes */
- /* DBG("malformed\n"); */
- hidden_item = proto_tree_add_boolean(dccp_tree, hf_dccp_malformed, tvb, offset, 0, TRUE);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- THROW(ReportedBoundsError);
- }
- dccph->reserved2=tvb_get_guint8(tvb, offset+9);
- /* DBG("dccph->reserved2: %u\n", dccph->reserved2); */
- dccph->seq=tvb_get_ntohs(tvb, offset+10);
- dccph->seq<<=32;
- dccph->seq+=tvb_get_ntohl(tvb, offset+12);
- /* DBG("dccph->seq[48bits]: %" G_GINT64_MODIFIER "u\n", dccph->seq); */
- } else {
- dccph->seq=tvb_get_guint8(tvb, offset+9);
- dccph->seq<<=16;
- dccph->seq+=tvb_get_ntohs(tvb, offset+10);
- /* DBG("dccph->seq[24bits]: %" G_GINT64_MODIFIER "u\n", dccph->seq); */
- }
-
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s > %s [%s] Seq=%" G_GINT64_MODIFIER "u",
- get_dccp_port(dccph->sport),
- get_dccp_port(dccph->dport),
- val_to_str(dccph->type, dccp_packet_type_vals, "Unknown Type"),
- dccph->seq);
-
-
- if (tree) {
- if(dccp_summary_in_tree) {
- dccp_item =
- proto_tree_add_protocol_format(tree, proto_dccp, tvb, offset, dccph->data_offset*4,
- "Datagram Congestion Control Protocol, Src Port: %s (%u), Dst Port: %s (%u)"
- " [%s] Seq=%" G_GINT64_MODIFIER "u",
- get_dccp_port(dccph->sport), dccph->sport,
- get_dccp_port(dccph->dport), dccph->dport,
- val_to_str(dccph->type, dccp_packet_type_vals, "Unknown Type"),
- dccph->seq);
- } else {
- dccp_item = proto_tree_add_item(tree, proto_dccp, tvb, offset, 8, ENC_NA);
- }
-
- dccp_tree = proto_item_add_subtree(dccp_item, ett_dccp);
-
- proto_tree_add_uint_format_value(dccp_tree, hf_dccp_srcport, tvb, offset, 2, dccph->sport,
- "%s (%u)", get_dccp_port(dccph->sport), dccph->sport);
- proto_tree_add_uint_format_value(dccp_tree, hf_dccp_dstport, tvb, offset + 2, 2, dccph->dport,
- "%s (%u)", get_dccp_port(dccph->dport), dccph->dport);
-
- hidden_item = proto_tree_add_uint(dccp_tree, hf_dccp_port, tvb, offset, 2, dccph->sport);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_uint(dccp_tree, hf_dccp_port, tvb, offset + 2, 2, dccph->dport);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
-
- proto_tree_add_uint(dccp_tree, hf_dccp_data_offset, tvb, offset + 4, 1, dccph->data_offset);
- proto_tree_add_uint(dccp_tree, hf_dccp_ccval, tvb, offset + 5, 1, dccph->ccval);
- proto_tree_add_uint(dccp_tree, hf_dccp_cscov, tvb, offset + 5, 1, dccph->cscov);
-
- /* checksum analysis taken from packet-udp (difference: mandatory checksums in DCCP) */
-
- reported_len = tvb_reported_length(tvb);
- len = tvb_length(tvb);
- if (!pinfo->fragmented && len >= reported_len) {
-
- /* The packet isn't part of a fragmented datagram and isn't
- truncated, so we can checksum it.
- XXX - make a bigger scatter-gather list once we do fragment
- reassembly? */
-
- if (dccp_check_checksum) {
-
- /* Set up the fields of the pseudo-header. */
- cksum_vec[0].ptr = pinfo->src.data;
- cksum_vec[0].len = pinfo->src.len;
- cksum_vec[1].ptr = pinfo->dst.data;
- cksum_vec[1].len = pinfo->dst.len;
- cksum_vec[2].ptr = (const guint8 *)&phdr;
- switch (pinfo->src.type) {
-
- case AT_IPv4:
- phdr[0] = g_htonl((IP_PROTO_DCCP<<16) + reported_len);
- cksum_vec[2].len = 4;
- break;
- case AT_IPv6:
- phdr[0] = g_htonl(reported_len);
- phdr[1] = g_htonl(IP_PROTO_DCCP);
- cksum_vec[2].len = 8;
- break;
-
- default:
- /* DCCP runs only atop IPv4 and IPv6.... */
- /*DISSECTOR_ASSERT_NOT_REACHED();*/
- break;
- }
- cksum_vec[3].ptr = tvb_get_ptr(tvb, offset, len);
- cksum_vec[3].len = dccp_csum_coverage(dccph, reported_len);
- computed_cksum = in_cksum(&cksum_vec[0], 4);
- if (computed_cksum == 0) {
- proto_tree_add_uint_format_value(dccp_tree, hf_dccp_checksum, tvb,
- offset + 6, 2, dccph->checksum,
- "0x%04x [correct]", dccph->checksum);
- } else {
- hidden_item = proto_tree_add_boolean(dccp_tree, hf_dccp_checksum_bad, tvb, offset + 6, 2, TRUE);;
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- proto_tree_add_uint_format_value(dccp_tree, hf_dccp_checksum, tvb, offset + 6, 2, dccph->checksum,
- "0x%04x [incorrect, should be 0x%04x]", dccph->checksum,
- in_cksum_shouldbe(dccph->checksum, computed_cksum));
- }
- } else {
- proto_tree_add_uint_format_value(dccp_tree, hf_dccp_checksum, tvb,
- offset + 6, 2, dccph->checksum, "0x%04x", dccph->checksum);
- }
- } else {
- proto_tree_add_uint_format_value(dccp_tree, hf_dccp_checksum, tvb,
- offset + 6, 2, dccph->checksum, "0x%04x", dccph->checksum);
- }
-
- hidden_item = proto_tree_add_uint(dccp_tree, hf_dccp_res1, tvb, offset + 8, 1, dccph->reserved1);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- proto_tree_add_uint(dccp_tree, hf_dccp_type, tvb, offset + 8, 1, dccph->type);
- proto_tree_add_boolean(dccp_tree, hf_dccp_x, tvb, offset + 8, 1, dccph->x);
- if(dccph->x) {
- hidden_item = proto_tree_add_uint(dccp_tree, hf_dccp_res2, tvb, offset + 9, 1, dccph->reserved2);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- proto_tree_add_uint64(dccp_tree, hf_dccp_seq, tvb, offset + 10, 6, dccph->seq);
- } else {
- proto_tree_add_uint64(dccp_tree, hf_dccp_seq, tvb, offset + 9, 3, dccph->seq);
-
- }
- }
-
- if(dccph->x)
- offset+=16; /* Skip over extended Generic header */
- else
- offset+=12; /* Skip over not extended Generic header */
-
- /* dissecting type depending additional fields */
- switch(dccph->type) {
-
- case 0x0: /* DCCP-Request */
- if(!tvb_bytes_exist(tvb, offset, 4)) { /* at least 4 byte */
- if(tree)
- proto_tree_add_text(dccp_tree, tvb, offset, -1, "too short packet");
- return;
- }
- dccph->service_code=tvb_get_ntohl(tvb, offset);
- if(tree)
- proto_tree_add_uint(dccp_tree, hf_dccp_service_code, tvb, offset, 4, dccph->service_code);
- col_append_fstr(pinfo->cinfo, COL_INFO, " (service=%u)", dccph->service_code);
-
- offset+=4; /* Skip over service code */
- break;
-
- case 0x1: /* DCCP-Response */
- if(!tvb_bytes_exist(tvb, offset, 8)) { /* at least 8 byte */
- if(tree)
- proto_tree_add_text(dccp_tree, tvb, offset, -1, "too short packet");
- return;
- }
- dccph->ack_reserved=tvb_get_ntohs(tvb, offset);
- if(tree) {
- hidden_item = proto_tree_add_uint(dccp_tree, hf_dccp_ack_res, tvb, offset, 2, dccph->ack_reserved);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- }
- dccph->ack=tvb_get_ntohs(tvb, offset+2);
- dccph->ack<<=32;
- dccph->ack+=tvb_get_ntohl(tvb, offset+4);
-
- if(tree)
- proto_tree_add_uint64(dccp_tree, hf_dccp_ack, tvb, offset + 2, 6, dccph->ack);
- col_append_fstr(pinfo->cinfo, COL_INFO, " (Ack=%" G_GINT64_MODIFIER "u)", dccph->ack);
-
- offset+=8; /* Skip over Acknowledgement Number Subheader */
-
- if(!tvb_bytes_exist(tvb, offset, 4)) { /* at least 4 byte */
- if(tree)
- proto_tree_add_text(dccp_tree, tvb, offset, -1, "too short packet");
- return;
- }
- dccph->service_code=tvb_get_ntohl(tvb, offset);
- if(tree)
- proto_tree_add_uint(dccp_tree, hf_dccp_service_code, tvb, offset, 4, dccph->service_code);
- col_append_fstr(pinfo->cinfo, COL_INFO, " (service=%u)", dccph->service_code);
-
- offset+=4; /* Skip over service code */
- break;
-
- case 0x2: /* DCCP-Data */
- /* nothing to dissect */
- break;
-
- case 0x3: /* DCCP-Ack */
- case 0x4: /* DCCP-DataAck */
- if(dccph->x) {
- if(!tvb_bytes_exist(tvb, offset, 8)) { /* at least 8 byte */
- if(tree)
- proto_tree_add_text(dccp_tree, tvb, offset, -1, "too short packet");
- return;
- }
- dccph->ack_reserved=tvb_get_ntohs(tvb, offset);
- if(tree) {
- hidden_item = proto_tree_add_uint(dccp_tree, hf_dccp_ack_res, tvb, offset, 2, dccph->ack_reserved);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- }
- dccph->ack=tvb_get_ntohs(tvb, offset+2);
- dccph->ack<<=32;
- dccph->ack+=tvb_get_ntohl(tvb, offset+4);
- if(tree)
- proto_tree_add_uint64(dccp_tree, hf_dccp_ack, tvb, offset + 2, 6, dccph->ack);
- col_append_fstr(pinfo->cinfo, COL_INFO, " (Ack=%" G_GINT64_MODIFIER "u)", dccph->ack);
-
- offset+=8; /* Skip over Acknowledgement Number Subheader */
- } else {
- if(!tvb_bytes_exist(tvb, offset, 4)) { /* at least 4 byte */
- if(tree)
- proto_tree_add_text(dccp_tree, tvb, offset, -1, "too short packet");
- return;
- }
- dccph->ack_reserved=tvb_get_guint8(tvb, offset);
- if(tree) {
- hidden_item = proto_tree_add_uint(dccp_tree, hf_dccp_ack_res, tvb, offset, 1, dccph->ack_reserved);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- }
- dccph->ack=tvb_get_guint8(tvb, offset+1);
- dccph->ack<<=16;
- dccph->ack+=tvb_get_ntohs(tvb, offset+2);
- if(tree)
- proto_tree_add_uint64(dccp_tree, hf_dccp_ack, tvb, offset + 1, 3, dccph->ack);
- col_append_fstr(pinfo->cinfo, COL_INFO, " (Ack=%" G_GINT64_MODIFIER "u)", dccph->ack);
-
- offset+=4; /* Skip over Acknowledgement Number Subheader */
- }
- break;
-
- case 0x7: /* DCCP-Reset */
- if(!tvb_bytes_exist(tvb, offset, 8)) { /* at least 8 byte */
- if(tree)
- proto_tree_add_text(dccp_tree, tvb, offset, -1, "too short packet");
- return;
- }
- dccph->ack_reserved=tvb_get_ntohs(tvb, offset);
- if(tree) {
- hidden_item = proto_tree_add_uint(dccp_tree, hf_dccp_ack_res, tvb, offset, 2, dccph->ack_reserved);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- }
- dccph->ack=tvb_get_ntohs(tvb, offset+2);
- dccph->ack<<=32;
- dccph->ack+=tvb_get_ntohl(tvb, offset+4);
- if(tree)
- proto_tree_add_uint64(dccp_tree, hf_dccp_ack, tvb, offset + 2, 6, dccph->ack);
- col_append_fstr(pinfo->cinfo, COL_INFO, " (Ack=%" G_GINT64_MODIFIER "u)", dccph->ack);
-
- offset+=8; /* Skip over Acknowledgement Number Subheader */
-
- dccph->reset_code=tvb_get_guint8(tvb, offset);
- dccph->data1=tvb_get_guint8(tvb, offset+1);
- dccph->data2=tvb_get_guint8(tvb, offset+2);
- dccph->data3=tvb_get_guint8(tvb, offset+3);
- if(tree) {
- proto_tree_add_uint(dccp_tree, hf_dccp_reset_code, tvb, offset, 1, dccph->reset_code);
- proto_tree_add_uint(dccp_tree, hf_dccp_data1, tvb, offset + 1, 1, dccph->data1);
- proto_tree_add_uint(dccp_tree, hf_dccp_data2, tvb, offset + 2, 1, dccph->data2);
- proto_tree_add_uint(dccp_tree, hf_dccp_data3, tvb, offset + 3, 1, dccph->data3);
- }
- col_append_fstr(pinfo->cinfo, COL_INFO, " (code=%s)", val_to_str(dccph->reset_code, dccp_reset_code_vals, "Unknown"));
-
- offset+=4; /* Skip over Reset Code and data123 */
- break;
-
- case 0x5: /* DCCP-CloseReq */
- case 0x6: /* DCCP-Close */
- case 0x8: /* DCCP-Sync */
- case 0x9: /* DCCP-SyncAck */
- if(!tvb_bytes_exist(tvb, offset, 8)) { /* at least 8 byte */
- if(tree)
- proto_tree_add_text(dccp_tree, tvb, offset, -1, "too short packet");
- return;
- }
- dccph->ack_reserved=tvb_get_ntohs(tvb, offset);
- if(tree) {
- hidden_item = proto_tree_add_uint(dccp_tree, hf_dccp_ack_res, tvb, offset, 2, dccph->ack_reserved);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- }
- dccph->ack=tvb_get_ntohs(tvb, offset+2);
- dccph->ack<<=32;
- dccph->ack+=tvb_get_ntohl(tvb, offset+4);
- if(tree)
- proto_tree_add_uint64(dccp_tree, hf_dccp_ack, tvb, offset + 2, 6, dccph->ack);
- col_append_fstr(pinfo->cinfo, COL_INFO, " (Ack=%" G_GINT64_MODIFIER "u)", dccph->ack);
-
- offset+=8; /* Skip over Acknowledgement Number Subheader */
- break;
-
- default:
- if(tree)
- proto_tree_add_text(dccp_tree, tvb, offset, -1, "Reserved packet type: unable to dissect further");
- return;
- }
-
-
- /* note: data_offset is the offset from the start of the packet's DCCP header to the
- * start of its application data area, in 32-bit words.
- */
-
- /* it's time to do some checks */
- advertised_dccp_header_len = dccph->data_offset*4;
- options_len = advertised_dccp_header_len - offset;
-
- if ( advertised_dccp_header_len > DCCP_HDR_LEN_MAX ) {
- if(tree)
- proto_tree_add_text(dccp_tree, tvb, 4, 2,
- "bogus data offset, advertised header length (%d) is larger than max (%d)",
- advertised_dccp_header_len, DCCP_HDR_LEN_MAX);
- return;
- }
-
- if(tvb_length(tvb) < advertised_dccp_header_len) {
- if(tree)
- proto_tree_add_text(dccp_tree, tvb, offset, -1, "too short packet: missing %d bytes of DCCP header",
- advertised_dccp_header_len - tvb_reported_length_remaining(tvb, offset));
- return;
- }
-
- if(options_len > DCCP_OPT_LEN_MAX) {
- /* DBG("malformed\n"); */
- if(tree) {
- hidden_item = proto_tree_add_boolean(dccp_tree, hf_dccp_malformed, tvb, offset, 0, TRUE);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- }
- THROW(ReportedBoundsError);
- }
-
-
- /* Dissecting Options (if here we have at least (advertised_dccp_header_len - offset) bytes of options) */
- if(advertised_dccp_header_len == offset) {
- ; /* ok no options, no need to skip over */
- } else if (advertised_dccp_header_len < offset) {
- if(tree) {
- proto_tree_add_text(dccp_tree, tvb, 4, 2,
- "bogus data offset, advertised header length (%d) is shorter than expected",
- advertised_dccp_header_len);
- hidden_item = proto_tree_add_boolean(dccp_tree, hf_dccp_malformed, tvb, offset, 0, TRUE);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- }
- THROW(ReportedBoundsError);
- } else {
- if(dccp_tree) {
- dccp_item = proto_tree_add_none_format(dccp_tree, hf_dccp_options, tvb, offset, options_len, "Options: (%u bytes)", options_len);
- dccp_options_tree = proto_item_add_subtree(dccp_item, ett_dccp_options);
- }
- dissect_options(tvb, pinfo, dccp_options_tree, tree, dccph, offset, offset + options_len);
- }
-
- offset+=options_len; /* Skip over Options */
-
- /* Queuing tap data */
- tap_queue_packet(dccp_tap, pinfo, dccph);
-
- /* Call sub-dissectors */
-
- if (!pinfo->flags.in_error_pkt || tvb_length_remaining(tvb, offset) > 0)
- decode_dccp_ports(tvb, offset, pinfo, tree, dccph->sport, dccph->dport);
+ switch (option_type) {
+ case 0:
+ proto_tree_add_text(dccp_options_tree, tvb, offset, option_len,
+ "Padding");
+ break;
+ case 1:
+ proto_tree_add_text(dccp_options_tree, tvb, offset, option_len,
+ "Mandatory");
+ break;
+ case 2:
+ proto_tree_add_text(dccp_options_tree, tvb, offset, option_len,
+ "Slow Receiver");
+ break;
+ case 32:
+ case 33:
+ case 34:
+ case 35:
+ dissect_feature_options(dccp_options_tree, tvb, offset, option_len,
+ option_type);
+ break;
+ case 36:
+ dccp_item =
+ proto_tree_add_text(dccp_options_tree, tvb, offset, option_len,
+ "Init Cookie(");
+ for (i = 0; i < option_len - 2; i++) {
+ if (i == 0)
+ proto_item_append_text(dccp_item, "%02x",
+ tvb_get_guint8(tvb, offset + 2 + i));
+ else
+ proto_item_append_text(dccp_item, " %02x",
+ tvb_get_guint8(tvb, offset + 2 + i));
+ }
+ proto_item_append_text(dccp_item, ")");
+ break;
+ case 37:
+ if (option_len > 8)
+ proto_tree_add_text(dccp_options_tree, tvb, offset, option_len,
+ "NDP Count too long (max 6 bytes)");
+ else
+ proto_tree_add_text(dccp_options_tree, tvb, offset, option_len,
+ "NDP Count: %" G_GINT64_MODIFIER "u",
+ tvb_get_ntoh_var(tvb, offset + 2,
+ option_len - 2));
+ break;
+ case 38:
+ dccp_item =
+ proto_tree_add_text(dccp_options_tree, tvb, offset, option_len,
+ "Ack Vector [Nonce 0]:");
+ for (i = 0; i < option_len - 2; i++)
+ proto_item_append_text(dccp_item, " %02x",
+ tvb_get_guint8(tvb, offset + 2 + i));
+ break;
+ case 39:
+ dccp_item =
+ proto_tree_add_text(dccp_options_tree, tvb, offset, option_len,
+ "Ack Vector [Nonce 1]:");
+ for (i = 0; i < option_len - 2; i++)
+ proto_item_append_text(dccp_item, " %02x",
+ tvb_get_guint8(tvb, offset + 2 + i));
+ proto_item_append_text(dccp_item, ")");
+ break;
+ case 40:
+ dccp_item =
+ proto_tree_add_text(dccp_options_tree, tvb, offset, option_len,
+ "Data Dropped:");
+ for (i = 0; i < option_len - 2; i++)
+ proto_item_append_text(dccp_item, " %02x",
+ tvb_get_guint8(tvb, offset + 2 + i));
+ break;
+ case 41:
+ if (option_len == 6)
+ proto_tree_add_uint(dccp_options_tree, hf_dccp_timestamp, tvb,
+ offset + 2, 4,
+ tvb_get_ntohl(tvb, offset + 2));
+ else
+ proto_tree_add_text(dccp_options_tree, tvb, offset, option_len,
+ "Timestamp too long [%u != 6]", option_len);
+ break;
+ case 42:
+ if (option_len == 6)
+ proto_tree_add_uint(dccp_options_tree, hf_dccp_timestamp_echo,
+ tvb, offset + 2, 4,
+ tvb_get_ntohl(tvb, offset + 2));
+ else if (option_len == 8) {
+ proto_tree_add_uint(dccp_options_tree, hf_dccp_timestamp_echo,
+ tvb, offset + 2, 4,
+ tvb_get_ntohl(tvb, offset + 2));
+ proto_tree_add_uint(dccp_options_tree, hf_dccp_elapsed_time,
+ tvb, offset + 6, 2,
+ tvb_get_ntohs(tvb, offset + 6));
+ } else if (option_len == 10) {
+ proto_tree_add_uint(dccp_options_tree, hf_dccp_timestamp_echo,
+ tvb, offset + 2, 4,
+ tvb_get_ntohl(tvb, offset + 2));
+ proto_tree_add_uint(dccp_options_tree, hf_dccp_elapsed_time,
+ tvb, offset + 6, 4,
+ tvb_get_ntohl(tvb, offset + 6));
+ } else
+ proto_tree_add_text(dccp_options_tree, tvb, offset, option_len,
+ "Wrong Timestamp Echo length");
+ break;
+ case 43:
+ if (option_len == 4)
+ proto_tree_add_uint(dccp_options_tree, hf_dccp_elapsed_time,
+ tvb, offset + 2, 2,
+ tvb_get_ntohs(tvb, offset + 2));
+ else if (option_len == 6)
+ proto_tree_add_uint(dccp_options_tree, hf_dccp_elapsed_time,
+ tvb, offset + 2, 4,
+ tvb_get_ntohl(tvb, offset + 2));
+ else
+ proto_tree_add_text(dccp_options_tree, tvb, offset, option_len,
+ "Wrong Elapsed Time length");
+ break;
+ case 44:
+ if (option_len == 6) {
+ proto_tree_add_uint(dccp_options_tree, hf_dccp_data_checksum,
+ tvb, offset + 2, 4,
+ tvb_get_ntohl(tvb, offset + 2));
+ } else
+ proto_tree_add_text(dccp_options_tree, tvb, offset, option_len,
+ "Wrong Data checksum length");
+ break;
+ case 192: /* RFC 4342, 8.5 */
+ if (option_len == 6) {
+ p = tvb_get_ntohl(tvb, offset + 2);
+ /*
+ * According to the comment in section 8.5 of RFC 4342,
+ * 0xffffffff can mean zero
+ */
+ if (p == 0xFFFFFFFF)
+ proto_tree_add_text(dccp_options_tree, tvb, offset,
+ option_len,
+ "CCID3 Loss Event Rate: 0 (or max)");
+ else
+ proto_tree_add_text(dccp_options_tree, tvb, offset,
+ option_len, "CCID3 Loss Event Rate: %u",
+ p);
+ } else
+ proto_tree_add_text(dccp_options_tree, tvb, offset, option_len,
+ "Wrong CCID3 Loss Event Rate length");
+ break;
+ case 193: /* RFC 4342, 8.6 */
+ proto_tree_add_text(dccp_options_tree, tvb, offset, option_len,
+ "CCID3 Loss Intervals");
+ /*
+ * FIXME: not implemented and apparently not used by any
+ * implementation so far
+ */
+ break;
+ case 194: /* RFC 4342, 8.3 */
+ if (option_len == 6)
+ proto_tree_add_text(dccp_options_tree, tvb, offset, option_len,
+ "CCID3 Receive Rate: %u bytes/sec",
+ tvb_get_ntohl(tvb, offset + 2));
+ else
+ proto_tree_add_text(dccp_options_tree, tvb, offset, option_len,
+ "Wrong CCID3 Receive Rate length");
+ break;
+ default:
+ if (((option_type >= 45) && (option_type <= 127)) ||
+ ((option_type >= 3) && (option_type <= 31))) {
+ proto_tree_add_text(dccp_options_tree, tvb, offset, option_len,
+ "Reserved");
+ break;
+ }
+
+ if (option_type >= 128) {
+ proto_tree_add_text(dccp_options_tree, tvb, offset, option_len,
+ "CCID option %d",
+ option_type);
+ break;
+ }
+
+ /* if here we don't know this option */
+ proto_tree_add_text(dccp_options_tree, tvb, offset, option_len,
+ "Unknown");
+ break;
+ } /* end switch() */
+ offset += option_len; /* move offset past the dissected option */
+ } /* end while() */
}
-
-void proto_register_dccp(void)
+/*
+ * compute DCCP checksum coverage according to RFC 4340, section 9
+*/
+static inline guint
+dccp_csum_coverage(const e_dccphdr *dccph, guint len)
{
- module_t *dccp_module;
+ guint cov;
- static hf_register_info hf[] = {
- { &hf_dccp_srcport,
- { "Source Port", "dccp.srcport", FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ if (dccph->cscov == 0)
+ return len;
- { &hf_dccp_dstport,
- { "Destination Port", "dccp.dstport", FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ cov = (dccph->data_offset + dccph->cscov - 1) * sizeof (guint32);
+ return (cov > len) ? len : cov;
+}
- { &hf_dccp_port,
- { "Source or Destination Port", "dccp.port", FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+static void
+dissect_dccp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ proto_tree *dccp_tree = NULL;
+ proto_tree *dccp_options_tree = NULL;
+ proto_item *dccp_item = NULL;
+ proto_item *hidden_item;
+
+ vec_t cksum_vec[4];
+ guint32 phdr[2];
+ guint16 computed_cksum;
+ guint offset = 0;
+ guint len = 0;
+ guint reported_len = 0;
+ guint advertised_dccp_header_len = 0;
+ guint options_len = 0;
+ e_dccphdr *dccph;
+
+ /* get at least a full message header */
+ if (tvb_length(tvb) < DCCP_HDR_LEN_MIN) {
+ if (tree) {
+ hidden_item =
+ proto_tree_add_boolean(dccp_tree, hf_dccp_malformed, tvb,
+ offset, 0, TRUE);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ }
+ col_set_str(pinfo->cinfo, COL_INFO, "Packet too short");
+ THROW(ReportedBoundsError);
+ }
+
+ dccph = ep_alloc0(sizeof (e_dccphdr));
+
+ SET_ADDRESS(&dccph->ip_src, pinfo->src.type, pinfo->src.len,
+ pinfo->src.data);
+ SET_ADDRESS(&dccph->ip_dst, pinfo->dst.type, pinfo->dst.len,
+ pinfo->dst.data);
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "DCCP");
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ /* Extract generic header */
+ dccph->sport = tvb_get_ntohs(tvb, offset);
+ dccph->dport = tvb_get_ntohs(tvb, offset + 2);
+
+ /*
+ * update pinfo structure. I guess I have to do it, because this
+ * is a transport protocol dissector.
+ */
+ pinfo->ptype = PT_DCCP;
+ pinfo->srcport = dccph->sport;
+ pinfo->destport = dccph->dport;
+
+ dccph->data_offset = tvb_get_guint8(tvb, offset + 4);
+ dccph->cscov = tvb_get_guint8(tvb, offset + 5) & 0x0F;
+ dccph->ccval = tvb_get_guint8(tvb, offset + 5) & 0xF0;
+ dccph->ccval >>= 4;
+ dccph->checksum = tvb_get_ntohs(tvb, offset + 6);
+ dccph->reserved1 = tvb_get_guint8(tvb, offset + 8) & 0xE0;
+ dccph->reserved1 >>= 5;
+ dccph->type = tvb_get_guint8(tvb, offset + 8) & 0x1E;
+ dccph->type >>= 1;
+ dccph->x = tvb_get_guint8(tvb, offset + 8) & 0x01;
+
+ if (dccph->x) {
+ if (tvb_length(tvb) < DCCP_HDR_LEN) { /* at least 16 bytes */
+ hidden_item =
+ proto_tree_add_boolean(dccp_tree, hf_dccp_malformed, tvb,
+ offset, 0, TRUE);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ THROW(ReportedBoundsError);
+ }
+ dccph->reserved2 = tvb_get_guint8(tvb, offset + 9);
+
+ dccph->seq = tvb_get_ntohs(tvb, offset + 10);
+ dccph->seq <<= 32;
+ dccph->seq += tvb_get_ntohl(tvb, offset + 12);
+ } else {
+ dccph->seq = tvb_get_guint8(tvb, offset + 9);
+ dccph->seq <<= 16;
+ dccph->seq += tvb_get_ntohs(tvb, offset + 10);
+ }
+
+ col_add_fstr(pinfo->cinfo, COL_INFO,
+ "%s > %s [%s] Seq=%" G_GINT64_MODIFIER "u",
+ get_dccp_port(dccph->sport),
+ get_dccp_port(dccph->dport),
+ val_to_str(dccph->type, dccp_packet_type_vals, "Unknown Type"),
+ dccph->seq);
+
+ if (tree) {
+ if (dccp_summary_in_tree) {
+ dccp_item =
+ proto_tree_add_protocol_format(
+ tree, proto_dccp, tvb, offset, dccph->data_offset * 4,
+ "Datagram Congestion Control Protocol, Src Port: %s (%u),"
+ " Dst Port: %s (%u)"
+ " [%s] Seq=%" G_GINT64_MODIFIER "u",
+ get_dccp_port(dccph->sport), dccph->sport,
+ get_dccp_port(dccph->dport), dccph->dport,
+ val_to_str(dccph->type, dccp_packet_type_vals,
+ "Unknown Type"),
+ dccph->seq);
+ } else {
+ dccp_item = proto_tree_add_item(tree, proto_dccp, tvb, offset, 8,
+ ENC_NA);
+ }
- { &hf_dccp_data_offset,
- { "Data Offset", "dccp.data_offset", FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ dccp_tree = proto_item_add_subtree(dccp_item, ett_dccp);
+
+ proto_tree_add_uint_format_value(dccp_tree, hf_dccp_srcport, tvb,
+ offset, 2, dccph->sport,
+ "%s (%u)",
+ get_dccp_port(dccph->sport),
+ dccph->sport);
+ proto_tree_add_uint_format_value(dccp_tree, hf_dccp_dstport, tvb,
+ offset + 2, 2, dccph->dport,
+ "%s (%u)",
+ get_dccp_port(dccph->dport),
+ dccph->dport);
+ hidden_item =
+ proto_tree_add_uint(dccp_tree, hf_dccp_port, tvb, offset, 2,
+ dccph->sport);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ hidden_item =
+ proto_tree_add_uint(dccp_tree, hf_dccp_port, tvb, offset + 2, 2,
+ dccph->dport);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+
+ proto_tree_add_uint(dccp_tree, hf_dccp_data_offset, tvb, offset + 4, 1,
+ dccph->data_offset);
+ proto_tree_add_uint(dccp_tree, hf_dccp_ccval, tvb, offset + 5, 1,
+ dccph->ccval);
+ proto_tree_add_uint(dccp_tree, hf_dccp_cscov, tvb, offset + 5, 1,
+ dccph->cscov);
+
+ /*
+ * checksum analysis taken from packet-udp (difference: mandatory
+ * checksums in DCCP)
+ */
+ reported_len = tvb_reported_length(tvb);
+ len = tvb_length(tvb);
+
+ if (!pinfo->fragmented && len >= reported_len) {
+ /* The packet isn't part of a fragmented datagram and isn't
+ * truncated, so we can checksum it.
+ * XXX - make a bigger scatter-gather list once we do fragment
+ * reassembly? */
+ if (dccp_check_checksum) {
+ /* Set up the fields of the pseudo-header. */
+ cksum_vec[0].ptr = pinfo->src.data;
+ cksum_vec[0].len = pinfo->src.len;
+ cksum_vec[1].ptr = pinfo->dst.data;
+ cksum_vec[1].len = pinfo->dst.len;
+ cksum_vec[2].ptr = (const guint8 *) &phdr;
+ switch (pinfo->src.type) {
+ case AT_IPv4:
+ phdr[0] = g_htonl((IP_PROTO_DCCP << 16) + reported_len);
+ cksum_vec[2].len = 4;
+ break;
+ case AT_IPv6:
+ phdr[0] = g_htonl(reported_len);
+ phdr[1] = g_htonl(IP_PROTO_DCCP);
+ cksum_vec[2].len = 8;
+ break;
+
+ default:
+ /* DCCP runs only atop IPv4 and IPv6... */
+ break;
+ }
+ cksum_vec[3].ptr = tvb_get_ptr(tvb, offset, len);
+ cksum_vec[3].len = dccp_csum_coverage(dccph, reported_len);
+ computed_cksum = in_cksum(&cksum_vec[0], 4);
+ if (computed_cksum == 0) {
+ proto_tree_add_uint_format_value(dccp_tree,
+ hf_dccp_checksum, tvb,
+ offset + 6, 2,
+ dccph->checksum,
+ "0x%04x [correct]",
+ dccph->checksum);
+ } else {
+ hidden_item =
+ proto_tree_add_boolean(dccp_tree, hf_dccp_checksum_bad,
+ tvb, offset + 6, 2, TRUE);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ proto_tree_add_uint_format_value(
+ dccp_tree, hf_dccp_checksum, tvb, offset + 6, 2,
+ dccph->checksum,
+ "0x%04x [incorrect, should be 0x%04x]",
+ dccph->checksum,
+ in_cksum_shouldbe(dccph->checksum, computed_cksum));
+ }
+ } else {
+ proto_tree_add_uint_format_value(dccp_tree, hf_dccp_checksum,
+ tvb,
+ offset + 6, 2, dccph->checksum,
+ "0x%04x", dccph->checksum);
+ }
+ } else {
+ proto_tree_add_uint_format_value(dccp_tree, hf_dccp_checksum, tvb,
+ offset + 6, 2, dccph->checksum,
+ "0x%04x", dccph->checksum);
+ }
- { &hf_dccp_ccval,
- { "CCVal", "dccp.ccval", FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ hidden_item =
+ proto_tree_add_uint(dccp_tree, hf_dccp_res1, tvb, offset + 8, 1,
+ dccph->reserved1);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ proto_tree_add_uint(dccp_tree, hf_dccp_type, tvb, offset + 8, 1,
+ dccph->type);
+ proto_tree_add_boolean(dccp_tree, hf_dccp_x, tvb, offset + 8, 1,
+ dccph->x);
+ if (dccph->x) {
+ hidden_item =
+ proto_tree_add_uint(dccp_tree, hf_dccp_res2, tvb, offset + 9, 1,
+ dccph->reserved2);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ proto_tree_add_uint64(dccp_tree, hf_dccp_seq, tvb, offset + 10, 6,
+ dccph->seq);
+ } else {
+ proto_tree_add_uint64(dccp_tree, hf_dccp_seq, tvb, offset + 9, 3,
+ dccph->seq);
+ }
+ }
+
+ if (dccph->x)
+ offset += 16; /* move offset past the extended Generic header */
+ else
+ offset += 12; /* move offset past the not extended Generic header */
+
+ /* dissecting type dependant additional fields */
+ switch (dccph->type) {
+ case 0x0: /* DCCP-Request */
+ case 0xA: /* DCCP-Listen */
+ if (!tvb_bytes_exist(tvb, offset, 4)) { /* at least 4 byte */
+ if (tree)
+ proto_tree_add_text(dccp_tree, tvb, offset, -1,
+ "too short packet");
+ return;
+ }
+ dccph->service_code = tvb_get_ntohl(tvb, offset);
+ if (tree)
+ proto_tree_add_uint(dccp_tree, hf_dccp_service_code, tvb, offset, 4,
+ dccph->service_code);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (service=%u)",
+ dccph->service_code);
+ offset += 4; /* move offset past the service code */
+ break;
+ case 0x1: /* DCCP-Response */
+ if (!tvb_bytes_exist(tvb, offset, 8)) { /* at least 8 byte */
+ if (tree)
+ proto_tree_add_text(dccp_tree, tvb, offset, -1,
+ "too short packet");
+ return;
+ }
+ dccph->ack_reserved = tvb_get_ntohs(tvb, offset);
+ if (tree) {
+ hidden_item =
+ proto_tree_add_uint(dccp_tree, hf_dccp_ack_res, tvb, offset, 2,
+ dccph->ack_reserved);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ }
+ dccph->ack = tvb_get_ntohs(tvb, offset + 2);
+ dccph->ack <<= 32;
+ dccph->ack += tvb_get_ntohl(tvb, offset + 4);
+
+ if (tree)
+ proto_tree_add_uint64(dccp_tree, hf_dccp_ack, tvb, offset + 2, 6,
+ dccph->ack);
+ col_append_fstr(pinfo->cinfo, COL_INFO,
+ " (Ack=%" G_GINT64_MODIFIER "u)",
+ dccph->ack);
+ offset += 8; /* move offset past the Acknowledgement Number Subheader */
+
+ if (!tvb_bytes_exist(tvb, offset, 4)) { /* at least 4 byte */
+ if (tree)
+ proto_tree_add_text(dccp_tree, tvb, offset, -1,
+ "too short packet");
+ return;
+ }
+ dccph->service_code = tvb_get_ntohl(tvb, offset);
+ if (tree)
+ proto_tree_add_uint(dccp_tree, hf_dccp_service_code, tvb, offset, 4,
+ dccph->service_code);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (service=%u)",
+ dccph->service_code);
+
+ offset += 4; /* move offset past the service code */
+ break;
+ case 0x2: /* DCCP-Data */
+ /* nothing to dissect */
+ break;
+ case 0x3: /* DCCP-Ack */
+ case 0x4: /* DCCP-DataAck */
+ if (dccph->x) {
+ if (!tvb_bytes_exist(tvb, offset, 8)) { /* at least 8 byte */
+ if (tree)
+ proto_tree_add_text(dccp_tree, tvb, offset, -1,
+ "too short packet");
+ return;
+ }
+ dccph->ack_reserved = tvb_get_ntohs(tvb, offset);
+ if (tree) {
+ hidden_item =
+ proto_tree_add_uint(dccp_tree, hf_dccp_ack_res, tvb, offset,
+ 2, dccph->ack_reserved);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ }
+ dccph->ack = tvb_get_ntohs(tvb, offset + 2);
+ dccph->ack <<= 32;
+ dccph->ack += tvb_get_ntohl(tvb, offset + 4);
+ if (tree)
+ proto_tree_add_uint64(dccp_tree, hf_dccp_ack, tvb, offset + 2,
+ 6, dccph->ack);
+ col_append_fstr(pinfo->cinfo, COL_INFO,
+ " (Ack=%" G_GINT64_MODIFIER "u)",
+ dccph->ack);
+ offset += 8; /* move offset past the Ack Number Subheader */
+ } else {
+ if (!tvb_bytes_exist(tvb, offset, 4)) { /* at least 4 byte */
+ if (tree)
+ proto_tree_add_text(dccp_tree, tvb, offset, -1,
+ "too short packet");
+ return;
+ }
+ dccph->ack_reserved = tvb_get_guint8(tvb, offset);
+ if (tree) {
+ hidden_item =
+ proto_tree_add_uint(dccp_tree, hf_dccp_ack_res, tvb, offset,
+ 1, dccph->ack_reserved);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ }
+ dccph->ack = tvb_get_guint8(tvb, offset + 1);
+ dccph->ack <<= 16;
+ dccph->ack += tvb_get_ntohs(tvb, offset + 2);
+ if (tree)
+ proto_tree_add_uint64(dccp_tree, hf_dccp_ack, tvb, offset + 1,
+ 3, dccph->ack);
+ col_append_fstr(pinfo->cinfo, COL_INFO,
+ " (Ack=%" G_GINT64_MODIFIER "u)", dccph->ack);
+ offset += 4; /* move offset past the Ack. Number Subheader */
+ }
+ break;
+ case 0x7: /* DCCP-Reset */
+ if (!tvb_bytes_exist(tvb, offset, 8)) { /* at least 8 byte */
+ if (tree)
+ proto_tree_add_text(dccp_tree, tvb, offset, -1,
+ "too short packet");
+ return;
+ }
- { &hf_dccp_cscov,
- { "Checksum Coverage", "dccp.cscov", FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ dccph->ack_reserved = tvb_get_ntohs(tvb, offset);
- { &hf_dccp_checksum_bad,
- { "Bad Checksum", "dccp.checksum_bad", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ if (tree) {
+ hidden_item =
+ proto_tree_add_uint(dccp_tree, hf_dccp_ack_res, tvb, offset, 2,
+ dccph->ack_reserved);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ }
- { &hf_dccp_checksum,
- { "Checksum", "dccp.checksum", FT_UINT16, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ dccph->ack = tvb_get_ntohs(tvb, offset + 2);
+ dccph->ack <<= 32;
+ dccph->ack += tvb_get_ntohl(tvb, offset + 4);
+
+ if (tree)
+ proto_tree_add_uint64(dccp_tree, hf_dccp_ack, tvb, offset + 2, 6,
+ dccph->ack);
+ col_append_fstr(pinfo->cinfo, COL_INFO,
+ " (Ack=%" G_GINT64_MODIFIER "u)", dccph->ack);
+ offset += 8; /* move offset past the Ack. Number Subheader */
+
+ dccph->reset_code = tvb_get_guint8(tvb, offset);
+ dccph->data1 = tvb_get_guint8(tvb, offset + 1);
+ dccph->data2 = tvb_get_guint8(tvb, offset + 2);
+ dccph->data3 = tvb_get_guint8(tvb, offset + 3);
+
+ if (tree) {
+ proto_tree_add_uint(dccp_tree, hf_dccp_reset_code, tvb, offset, 1,
+ dccph->reset_code);
+ proto_tree_add_uint(dccp_tree, hf_dccp_data1, tvb, offset + 1, 1,
+ dccph->data1);
+ proto_tree_add_uint(dccp_tree, hf_dccp_data2, tvb, offset + 2, 1,
+ dccph->data2);
+ proto_tree_add_uint(dccp_tree, hf_dccp_data3, tvb, offset + 3, 1,
+ dccph->data3);
+ }
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (code=%s)",
+ val_to_str(dccph->reset_code, dccp_reset_code_vals,
+ "Unknown"));
+
+ offset += 4; /* move offset past the Reset Code and data123 */
+ break;
+ case 0x5: /* DCCP-CloseReq */
+ case 0x6: /* DCCP-Close */
+ case 0x8: /* DCCP-Sync */
+ case 0x9: /* DCCP-SyncAck */
+ if (!tvb_bytes_exist(tvb, offset, 8)) { /* at least 8 byte */
+ if (tree)
+ proto_tree_add_text(dccp_tree, tvb, offset, -1,
+ "too short packet");
+ return;
+ }
+ dccph->ack_reserved = tvb_get_ntohs(tvb, offset);
+ if (tree) {
+ hidden_item =
+ proto_tree_add_uint(dccp_tree, hf_dccp_ack_res, tvb, offset, 2,
+ dccph->ack_reserved);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ }
+ dccph->ack = tvb_get_ntohs(tvb, offset + 2);
+ dccph->ack <<= 32;
+ dccph->ack += tvb_get_ntohl(tvb, offset + 4);
+ if (tree)
+ proto_tree_add_uint64(dccp_tree, hf_dccp_ack, tvb, offset + 2, 6,
+ dccph->ack);
+ col_append_fstr(pinfo->cinfo, COL_INFO,
+ " (Ack=%" G_GINT64_MODIFIER "u)", dccph->ack);
+ offset += 8; /* move offset past the Ack. Number Subheader */
+ break;
+ default:
+ if (tree)
+ proto_tree_add_text(
+ dccp_tree, tvb, offset, -1,
+ "Reserved packet type: unable to dissect further");
+ return;
+ }
+
+ /*
+ * note: data_offset is the offset from the start of the packet's
+ * DCCP header to the start of its application data area, in 32-bit words.
+ */
+
+ /* it's time to do some checks */
+ advertised_dccp_header_len = dccph->data_offset * 4;
+ options_len = advertised_dccp_header_len - offset;
+
+ if (advertised_dccp_header_len > DCCP_HDR_LEN_MAX) {
+ if (tree)
+ proto_tree_add_text(
+ dccp_tree, tvb, 4, 2,
+ "bogus data offset, advertised header length (%d) is "
+ "larger than max (%d)",
+ advertised_dccp_header_len, DCCP_HDR_LEN_MAX);
+ return;
+ }
+
+ if (tvb_length(tvb) < advertised_dccp_header_len) {
+ if (tree)
+ proto_tree_add_text(
+ dccp_tree, tvb, offset, -1,
+ "too short packet: missing %d bytes of DCCP header",
+ advertised_dccp_header_len -
+ tvb_reported_length_remaining(tvb, offset));
+ return;
+ }
+
+ if (options_len > DCCP_OPT_LEN_MAX) {
+ if (tree) {
+ hidden_item =
+ proto_tree_add_boolean(dccp_tree, hf_dccp_malformed, tvb,
+ offset, 0, TRUE);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ }
+ THROW(ReportedBoundsError);
+ }
+
+ /*
+ * Dissecting Options (if here we have at least
+ * (advertised_dccp_header_len - offset) bytes of options)
+ */
+ if (advertised_dccp_header_len == offset) {
+ ; /* ok no options, no need to move the offset forward */
+ } else if (advertised_dccp_header_len < offset) {
+ if (tree) {
+ proto_tree_add_text(
+ dccp_tree, tvb, 4, 2,
+ "bogus data offset, advertised header length (%d) is "
+ "shorter than expected",
+ advertised_dccp_header_len);
+ hidden_item =
+ proto_tree_add_boolean(dccp_tree, hf_dccp_malformed, tvb,
+ offset, 0, TRUE);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ }
+ THROW(ReportedBoundsError);
+ } else {
+ if (dccp_tree) {
+ dccp_item =
+ proto_tree_add_none_format(dccp_tree, hf_dccp_options, tvb,
+ offset,
+ options_len, "Options: (%u bytes)",
+ options_len);
+ dccp_options_tree = proto_item_add_subtree(dccp_item,
+ ett_dccp_options);
+ }
+ dissect_options(tvb, pinfo, dccp_options_tree, tree, dccph, offset,
+ offset + options_len);
+ }
- { &hf_dccp_res1,
- { "Reserved", "dccp.res1", FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ offset += options_len; /* move offset past the Options */
- { &hf_dccp_res2,
- { "Reserved", "dccp.res2", FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ /* queuing tap data */
+ tap_queue_packet(dccp_tap, pinfo, dccph);
- { &hf_dccp_type,
- { "Type", "dccp.type", FT_UINT8, BASE_DEC, VALS(dccp_packet_type_vals), 0x0,
- NULL, HFILL }},
+ /* call sub-dissectors */
+ if (!pinfo->flags.in_error_pkt || tvb_length_remaining(tvb, offset) > 0)
+ decode_dccp_ports(tvb, offset, pinfo, tree, dccph->sport, dccph->dport);
+}
- { &hf_dccp_x,
- { "Extended Sequence Numbers", "dccp.x", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_dccp_seq,
- { "Sequence Number", "dccp.seq", FT_UINT64, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_dccp_ack_res,
- { "Reserved", "dccp.ack_res", FT_UINT16, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_dccp_ack,
- { "Acknowledgement Number", "dccp.ack", FT_UINT64, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_dccp_service_code,
- { "Service Code", "dccp.service_code", FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_dccp_reset_code,
- { "Reset Code", "dccp.reset_code", FT_UINT8, BASE_DEC, VALS(dccp_reset_code_vals), 0x0,
- NULL, HFILL }},
-
- { &hf_dccp_data1,
- { "Data 1", "dccp.data1", FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_dccp_data2,
- { "Data 2", "dccp.data2", FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_dccp_data3,
- { "Data 3", "dccp.data3", FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_dccp_option_type,
- { "Option Type", "dccp.option_type", FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_dccp_feature_number,
- { "Feature Number", "dccp.feature_number", FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_dccp_ndp_count,
- { "NDP Count", "dccp.ndp_count", FT_UINT64, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_dccp_timestamp,
- { "Timestamp", "dccp.timestamp", FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_dccp_timestamp_echo,
- { "Timestamp Echo", "dccp.timestamp_echo", FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_dccp_elapsed_time,
- { "Elapsed Time", "dccp.elapsed_time", FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_dccp_data_checksum,
- { "Data Checksum", "dccp.checksum_data", FT_UINT32, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_dccp_malformed,
- { "Malformed", "dccp.malformed", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_dccp_options,
- { "Options", "dccp.options", FT_NONE, BASE_NONE, NULL, 0x0,
- "DCCP Options fields", HFILL }}
-
- };
-
- static gint *ett[] = {
- &ett_dccp,
- &ett_dccp_options
- };
-
- proto_dccp = proto_register_protocol("Datagram Congestion Control Protocol", "DCCP", "dccp");
- proto_register_field_array(proto_dccp, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
-
- /* subdissectors */
- dccp_subdissector_table = register_dissector_table("dccp.port", "DCCP port", FT_UINT16, BASE_DEC);
- register_heur_dissector_list("dccp", &heur_subdissector_list);
-
- /* reg preferences */
- dccp_module = prefs_register_protocol(proto_dccp, NULL);
- prefs_register_bool_preference(dccp_module, "summary_in_tree",
- "Show DCCP summary in protocol tree",
- "Whether the DCCP summary line should be shown in the protocol tree",
- &dccp_summary_in_tree);
-
- prefs_register_bool_preference(dccp_module, "try_heuristic_first",
- "Try heuristic sub-dissectors first",
- "Try to decode a packet using an heuristic sub-dissector before using a sub-dissector "
- "registered to a specific port",
- &try_heuristic_first);
-
- prefs_register_bool_preference(dccp_module, "check_checksum",
- "Check the validity of the DCCP checksum when possible",
- "Whether to check the validity of the DCCP checksum",
- &dccp_check_checksum);
+void
+proto_register_dccp(void)
+{
+ module_t *dccp_module;
+
+ static hf_register_info hf[] = {
+ {
+ &hf_dccp_srcport,
+ {
+ "Source Port", "dccp.srcport",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_dstport,
+ {
+ "Destination Port", "dccp.dstport",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_port,
+ {
+ "Source or Destination Port", "dccp.port",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_data_offset,
+ {
+ "Data Offset", "dccp.data_offset",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_ccval,
+ {
+ "CCVal", "dccp.ccval",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_cscov,
+ {
+ "Checksum Coverage", "dccp.cscov",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_checksum_bad,
+ {
+ "Bad Checksum", "dccp.checksum_bad",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_checksum,
+ {
+ "Checksum", "dccp.checksum",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_res1,
+ {
+ "Reserved", "dccp.res1",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_res2,
+ {
+ "Reserved", "dccp.res2",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_type,
+ {
+ "Type", "dccp.type",
+ FT_UINT8, BASE_DEC, VALS(dccp_packet_type_vals), 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_x,
+ {
+ "Extended Sequence Numbers", "dccp.x",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_seq,
+ {
+ "Sequence Number", "dccp.seq",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_ack_res,
+ {
+ "Reserved", "dccp.ack_res",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_ack,
+ {
+ "Acknowledgement Number", "dccp.ack",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_service_code,
+ {
+ "Service Code", "dccp.service_code",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_reset_code,
+ {
+ "Reset Code", "dccp.reset_code",
+ FT_UINT8, BASE_DEC, VALS(dccp_reset_code_vals), 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_data1,
+ {
+ "Data 1", "dccp.data1",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_data2,
+ {
+ "Data 2", "dccp.data2",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_data3,
+ {
+ "Data 3", "dccp.data3",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_option_type,
+ {
+ "Option Type", "dccp.option_type",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_feature_number,
+ {
+ "Feature Number", "dccp.feature_number",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_ndp_count,
+ {
+ "NDP Count", "dccp.ndp_count",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_timestamp,
+ {
+ "Timestamp", "dccp.timestamp",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_timestamp_echo,
+ {
+ "Timestamp Echo", "dccp.timestamp_echo",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_elapsed_time,
+ {
+ "Elapsed Time", "dccp.elapsed_time",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_data_checksum,
+ {
+ "Data Checksum", "dccp.checksum_data",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_malformed,
+ {
+ "Malformed", "dccp.malformed",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_dccp_options,
+ {
+ "Options", "dccp.options",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ "DCCP Options fields", HFILL
+ }
+ }
+ };
+
+ static gint *ett[] = {
+ &ett_dccp,
+ &ett_dccp_options
+ };
+
+ proto_dccp =
+ proto_register_protocol("Datagram Congestion Control Protocol", "DCCP",
+ "dccp");
+ proto_register_field_array(proto_dccp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ /* subdissectors */
+ dccp_subdissector_table =
+ register_dissector_table("dccp.port", "DCCP port", FT_UINT16,
+ BASE_DEC);
+ register_heur_dissector_list("dccp", &heur_subdissector_list);
+
+ /* reg preferences */
+ dccp_module = prefs_register_protocol(proto_dccp, NULL);
+ prefs_register_bool_preference(
+ dccp_module, "summary_in_tree",
+ "Show DCCP summary in protocol tree",
+ "Whether the DCCP summary line should be shown in the protocol tree",
+ &dccp_summary_in_tree);
+
+ prefs_register_bool_preference(
+ dccp_module, "try_heuristic_first",
+ "Try heuristic sub-dissectors first",
+ "Try to decode a packet using an heuristic sub-dissector before "
+ "using a sub-dissector "
+ "registered to a specific port",
+ &try_heuristic_first);
+
+ prefs_register_bool_preference(
+ dccp_module, "check_checksum",
+ "Check the validity of the DCCP checksum when possible",
+ "Whether to check the validity of the DCCP checksum",
+ &dccp_check_checksum);
}
-void proto_reg_handoff_dccp(void)
+void
+proto_reg_handoff_dccp(void)
{
- dissector_handle_t dccp_handle;
+ dissector_handle_t dccp_handle;
- dccp_handle = create_dissector_handle(dissect_dccp, proto_dccp);
- dissector_add_uint("ip.proto", IP_PROTO_DCCP, dccp_handle);
- data_handle = find_dissector("data");
- dccp_tap = register_tap("dccp");
+ dccp_handle = create_dissector_handle(dissect_dccp, proto_dccp);
+ dissector_add_uint("ip.proto", IP_PROTO_DCCP, dccp_handle);
+ data_handle = find_dissector("data");
+ dccp_tap = register_tap("dccp");
}
+
+/*
+ * Editor modelines - http://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vi: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
+ */
diff --git a/epan/dissectors/packet-dccp.h b/epan/dissectors/packet-dccp.h
index 151beb360e..a01cf91d89 100644
--- a/epan/dissectors/packet-dccp.h
+++ b/epan/dissectors/packet-dccp.h
@@ -1,6 +1,6 @@
/* packet-dccp.h
* Definitions for Datagram Congestion Control Protocol, "DCCP" dissection:
- * it should be conformance to draft-ietf-dccp-spec-11.txt
+ * it should conform to RFC 4340
*
* Copyright 2005 _FF_
*
@@ -33,8 +33,7 @@
#define __PACKET_DCCP_H__
/* DCCP structs and definitions */
-typedef struct _e_dccphdr
-{
+typedef struct _e_dccphdr {
guint16 sport;
guint16 dport;
guint8 data_offset;
@@ -64,3 +63,16 @@ typedef struct _e_dccphdr
} e_dccphdr;
#endif /* __PACKET_DCCP_H__ */
+
+/*
+ * Editor modelines - http://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vi: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
+ */
diff --git a/epan/dissectors/packet-dcerpc-bossvr.c b/epan/dissectors/packet-dcerpc-bossvr.c
index 34b912ae0f..bd294ec7c1 100644
--- a/epan/dissectors/packet-dcerpc-bossvr.c
+++ b/epan/dissectors/packet-dcerpc-bossvr.c
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-budb.c b/epan/dissectors/packet-dcerpc-budb.c
index 8e9ae92271..34ad401ec5 100644
--- a/epan/dissectors/packet-dcerpc-budb.c
+++ b/epan/dissectors/packet-dcerpc-budb.c
@@ -295,8 +295,8 @@ budb_dissect_NameString_t(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_t
/* INCLUDED FILE : ETH_CODE */
static e_uuid_t uuid_dcerpc_budb = {
- 0xeb814e2a, 0x0099, 0x11ca,
- { 0x86, 0x78, 0x02, 0x60, 0x8c, 0x2e, 0xa9, 0x6e}
+ 0xeb814e2a, 0x0099, 0x11ca,
+ { 0x86, 0x78, 0x02, 0x60, 0x8c, 0x2e, 0xa9, 0x6e}
};
static guint16 ver_budb = 4;
@@ -304,33 +304,33 @@ static guint16 ver_budb = 4;
static int
budb_dissect_principal_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_principal_name, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_principal_name, param);
+ return offset;
}
static int
budb_dissect_principal_instance(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_principal_instance, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_principal_instance, param);
+ return offset;
}
static int
budb_dissect_principal_cell(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_principal_cell, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_principal_cell, param);
+ return offset;
}
static int
budb_dissect_principal_spare(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_principal_spare, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_principal_spare, param);
+ return offset;
}
@@ -344,33 +344,33 @@ budb_dissect_uint32(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *t
static int
budb_dissect_principal_spare1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_principal_spare1, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_principal_spare1, param);
+ return offset;
}
static int
budb_dissect_principal_spare2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_principal_spare2, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_principal_spare2, param);
+ return offset;
}
static int
budb_dissect_principal_spare3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_principal_spare3, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_principal_spare3, param);
+ return offset;
}
static int
budb_dissect_principal_spare4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_principal_spare4, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_principal_spare4, param);
+ return offset;
}
@@ -385,8 +385,8 @@ budb_dissect_principal(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_budb_principal);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_budb_principal);
}
offset=budb_dissect_principal_name(tvb, offset, pinfo, tree, drep);
@@ -420,81 +420,81 @@ budb_dissect_int32(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tr
static int
budb_dissect_tapeSet_id(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_tapeSet_id, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_tapeSet_id, param);
+ return offset;
}
static int
budb_dissect_tapeSet_tapeServer(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_tapeSet_tapeServer, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_tapeSet_tapeServer, param);
+ return offset;
}
static int
budb_dissect_tapeSet_format(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_tapeSet_format, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_tapeSet_format, param);
+ return offset;
}
static int
budb_dissect_tapeSet_maxTapes(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_tapeSet_maxTapes, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_tapeSet_maxTapes, param);
+ return offset;
}
static int
budb_dissect_tapeSet_a(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_tapeSet_a, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_tapeSet_a, param);
+ return offset;
}
static int
budb_dissect_tapeSet_b(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_tapeSet_b, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_tapeSet_b, param);
+ return offset;
}
static int
budb_dissect_tapeSet_spare1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeSet_spare1, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeSet_spare1, param);
+ return offset;
}
static int
budb_dissect_tapeSet_spare2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeSet_spare2, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeSet_spare2, param);
+ return offset;
}
static int
budb_dissect_tapeSet_spare3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeSet_spare3, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeSet_spare3, param);
+ return offset;
}
static int
budb_dissect_tapeSet_spare4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeSet_spare4, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeSet_spare4, param);
+ return offset;
}
@@ -509,8 +509,8 @@ budb_dissect_tapeSet(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_budb_tapeSet);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_budb_tapeSet);
}
offset=budb_dissect_tapeSet_id(tvb, offset, pinfo, tree, drep);
@@ -540,57 +540,57 @@ budb_dissect_tapeSet(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *
static int
budb_dissect_dumpEntry_id(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_id, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_id, param);
+ return offset;
}
static int
budb_dissect_dumpEntry_parent(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_parent, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_parent, param);
+ return offset;
}
static int
budb_dissect_dumpEntry_level(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_level, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_level, param);
+ return offset;
}
static int
budb_dissect_dumpEntry_flags(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_flags, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_flags, param);
+ return offset;
}
static int
budb_dissect_dumpEntry_volumeSetName(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_volumeSetName, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_volumeSetName, param);
+ return offset;
}
static int
budb_dissect_dumpEntry_dumpPath(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_dumpPath, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_dumpPath, param);
+ return offset;
}
static int
budb_dissect_dumpEntry_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_name, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_name, param);
+ return offset;
}
@@ -606,73 +606,73 @@ budb_dissect_time_t(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *t
static int
budb_dissect_dumpEntry_created(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_time_t(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_created, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_time_t(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_created, param);
+ return offset;
}
static int
budb_dissect_dumpEntry_incTime(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_time_t(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_incTime, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_time_t(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_incTime, param);
+ return offset;
}
static int
budb_dissect_dumpEntry_nVolumes(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_nVolumes, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_nVolumes, param);
+ return offset;
}
static int
budb_dissect_dumpEntry_tapes(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_tapeSet(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_tapes, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_tapeSet(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_tapes, param);
+ return offset;
}
static int
budb_dissect_dumpEntry_dumper(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_principal(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_dumper, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_principal(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_dumper, param);
+ return offset;
}
static int
budb_dissect_dumpEntry_spare1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_spare1, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_spare1, param);
+ return offset;
}
static int
budb_dissect_dumpEntry_spare2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_spare2, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_spare2, param);
+ return offset;
}
static int
budb_dissect_dumpEntry_spare3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_spare3, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_spare3, param);
+ return offset;
}
static int
budb_dissect_dumpEntry_spare4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_spare4, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dumpEntry_spare4, param);
+ return offset;
}
@@ -687,8 +687,8 @@ budb_dissect_dumpEntry(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_budb_dumpEntry);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_budb_dumpEntry);
}
offset=budb_dissect_dumpEntry_id(tvb, offset, pinfo, tree, drep);
@@ -730,137 +730,137 @@ budb_dissect_dumpEntry(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
static int
budb_dissect_tapeEntry_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_name, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_name, param);
+ return offset;
}
static int
budb_dissect_tapeEntry_flags(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_flags, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_flags, param);
+ return offset;
}
static int
budb_dissect_tapeEntry_written(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_time_t(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_written, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_time_t(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_written, param);
+ return offset;
}
static int
budb_dissect_tapeEntry_expires(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_time_t(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_expires, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_time_t(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_expires, param);
+ return offset;
}
static int
budb_dissect_tapeEntry_nMBytes(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_nMBytes, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_nMBytes, param);
+ return offset;
}
static int
budb_dissect_tapeEntry_nBytes(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_nBytes, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_nBytes, param);
+ return offset;
}
static int
budb_dissect_tapeEntry_nFiles(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_nFiles, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_nFiles, param);
+ return offset;
}
static int
budb_dissect_tapeEntry_nVolumes(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_nVolumes, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_nVolumes, param);
+ return offset;
}
static int
budb_dissect_tapeEntry_seq(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_seq, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_seq, param);
+ return offset;
}
static int
budb_dissect_tapeEntry_tapeid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_tapeid, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_tapeid, param);
+ return offset;
}
static int
budb_dissect_tapeEntry_useCount(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_useCount, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_useCount, param);
+ return offset;
}
static int
budb_dissect_tapeEntry_mediaType(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_mediaType, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_mediaType, param);
+ return offset;
}
static int
budb_dissect_tapeEntry_dump(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_dump, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_dump, param);
+ return offset;
}
static int
budb_dissect_tapeEntry_spare1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_spare1, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_spare1, param);
+ return offset;
}
static int
budb_dissect_tapeEntry_spare2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_spare2, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_spare2, param);
+ return offset;
}
static int
budb_dissect_tapeEntry_spare3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_spare3, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_spare3, param);
+ return offset;
}
static int
budb_dissect_tapeEntry_spare4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_spare4, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeEntry_spare4, param);
+ return offset;
}
@@ -875,8 +875,8 @@ budb_dissect_tapeEntry(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_budb_tapeEntry);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_budb_tapeEntry);
}
offset=budb_dissect_tapeEntry_name(tvb, offset, pinfo, tree, drep);
@@ -920,17 +920,17 @@ budb_dissect_tapeEntry(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
static int
budb_dissect_volumeEntry_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_name, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_name, param);
+ return offset;
}
static int
budb_dissect_volumeEntry_flags(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_flags, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_flags, param);
+ return offset;
}
@@ -946,129 +946,129 @@ budb_dissect_udlong(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *t
static int
budb_dissect_volumeEntry_id(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_udlong(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_id, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_udlong(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_id, param);
+ return offset;
}
static int
budb_dissect_volumeEntry_server(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_server, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_server, param);
+ return offset;
}
static int
budb_dissect_volumeEntry_partition(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_partition, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_partition, param);
+ return offset;
}
static int
budb_dissect_volumeEntry_nFrags(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_nFrags, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_nFrags, param);
+ return offset;
}
static int
budb_dissect_volumeEntry_position(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_position, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_position, param);
+ return offset;
}
static int
budb_dissect_volumeEntry_clone(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_time_t(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_clone, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_time_t(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_clone, param);
+ return offset;
}
static int
budb_dissect_volumeEntry_incTime(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_time_t(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_incTime, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_time_t(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_incTime, param);
+ return offset;
}
static int
budb_dissect_volumeEntry_startByte(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_startByte, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_startByte, param);
+ return offset;
}
static int
budb_dissect_volumeEntry_nBytes(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_nBytes, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_nBytes, param);
+ return offset;
}
static int
budb_dissect_volumeEntry_seq(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_seq, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_seq, param);
+ return offset;
}
static int
budb_dissect_volumeEntry_dump(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_dump, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_dump, param);
+ return offset;
}
static int
budb_dissect_volumeEntry_tape(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_tape, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_tape, param);
+ return offset;
}
static int
budb_dissect_volumeEntry_spare1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_spare1, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_spare1, param);
+ return offset;
}
static int
budb_dissect_volumeEntry_spare2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_spare2, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_spare2, param);
+ return offset;
}
static int
budb_dissect_volumeEntry_spare3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_spare3, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_spare3, param);
+ return offset;
}
static int
budb_dissect_volumeEntry_spare4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_spare4, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_volumeEntry_spare4, param);
+ return offset;
}
@@ -1083,8 +1083,8 @@ budb_dissect_volumeEntry(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tr
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_budb_volumeEntry);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_budb_volumeEntry);
}
offset=budb_dissect_volumeEntry_name(tvb, offset, pinfo, tree, drep);
@@ -1130,31 +1130,31 @@ budb_dissect_volumeEntry(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tr
static int
budb_dissect_volumeList_volumeList_len(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_volumeList_volumeList_len, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_volumeList_volumeList_len, param);
+ return offset;
}
static int
budb_dissect_volumeList_volumeList_val(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_volumeEntry(tvb, offset, pinfo, tree, drep, hf_budb_volumeList_volumeList_val, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_volumeEntry(tvb, offset, pinfo, tree, drep, hf_budb_volumeList_volumeList_val, param);
+ return offset;
}
static int
ptr_budb_dissect_volumeList_volumeList_val(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, budb_dissect_volumeList_volumeList_val, NDR_POINTER_PTR, "volumeList_val", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, budb_dissect_volumeList_volumeList_val, NDR_POINTER_PTR, "volumeList_val", -1);
+ return offset;
}
static int
ucarray_ptr_budb_dissect_volumeList_volumeList_val(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, ptr_budb_dissect_volumeList_volumeList_val);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, ptr_budb_dissect_volumeList_volumeList_val);
+ return offset;
}
@@ -1169,8 +1169,8 @@ budb_dissect_volumeList(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tre
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_budb_volumeList);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_budb_volumeList);
}
offset=budb_dissect_volumeList_volumeList_len(tvb, offset, pinfo, tree, drep);
@@ -1184,31 +1184,31 @@ budb_dissect_volumeList(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tre
static int
budb_dissect_dumpList_dumpList_len(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dumpList_dumpList_len, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dumpList_dumpList_len, param);
+ return offset;
}
static int
budb_dissect_dumpList_dumpList_val(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_dumpEntry(tvb, offset, pinfo, tree, drep, hf_budb_dumpList_dumpList_val, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_dumpEntry(tvb, offset, pinfo, tree, drep, hf_budb_dumpList_dumpList_val, param);
+ return offset;
}
static int
ptr_budb_dissect_dumpList_dumpList_val(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, budb_dissect_dumpList_dumpList_val, NDR_POINTER_PTR, "dumpList_val", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, budb_dissect_dumpList_dumpList_val, NDR_POINTER_PTR, "dumpList_val", -1);
+ return offset;
}
static int
ucarray_ptr_budb_dissect_dumpList_dumpList_val(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, ptr_budb_dissect_dumpList_dumpList_val);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, ptr_budb_dissect_dumpList_dumpList_val);
+ return offset;
}
@@ -1223,8 +1223,8 @@ budb_dissect_dumpList(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_budb_dumpList);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_budb_dumpList);
}
offset=budb_dissect_dumpList_dumpList_len(tvb, offset, pinfo, tree, drep);
@@ -1238,31 +1238,31 @@ budb_dissect_dumpList(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
static int
budb_dissect_tapeList_tapeList_len(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeList_tapeList_len, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_tapeList_tapeList_len, param);
+ return offset;
}
static int
budb_dissect_tapeList_tapeList_val(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_tapeEntry(tvb, offset, pinfo, tree, drep, hf_budb_tapeList_tapeList_val, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_tapeEntry(tvb, offset, pinfo, tree, drep, hf_budb_tapeList_tapeList_val, param);
+ return offset;
}
static int
ptr_budb_dissect_tapeList_tapeList_val(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, budb_dissect_tapeList_tapeList_val, NDR_POINTER_PTR, "tapeList_val", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, budb_dissect_tapeList_tapeList_val, NDR_POINTER_PTR, "tapeList_val", -1);
+ return offset;
}
static int
ucarray_ptr_budb_dissect_tapeList_tapeList_val(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, ptr_budb_dissect_tapeList_tapeList_val);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, ptr_budb_dissect_tapeList_tapeList_val);
+ return offset;
}
@@ -1277,8 +1277,8 @@ budb_dissect_tapeList(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_budb_tapeList);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_budb_tapeList);
}
offset=budb_dissect_tapeList_tapeList_len(tvb, offset, pinfo, tree, drep);
@@ -1292,9 +1292,9 @@ budb_dissect_tapeList(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
static int
budb_dissect_charListT_charListT_len(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_charListT_charListT_len, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_charListT_charListT_len, param);
+ return offset;
}
@@ -1308,27 +1308,27 @@ budb_dissect_uint8(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tr
static int
budb_dissect_charListT_charListT_val(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint8(tvb, offset, pinfo, tree, drep, hf_budb_charListT_charListT_val, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint8(tvb, offset, pinfo, tree, drep, hf_budb_charListT_charListT_val, param);
+ return offset;
}
static int
fixedarray_budb_dissect_charListT_charListT_val(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- int count=1024;
- while(count--){
- offset=budb_dissect_charListT_charListT_val(tvb, offset, pinfo, tree, drep);
- }
+ int count=1024;
+ while(count--){
+ offset=budb_dissect_charListT_charListT_val(tvb, offset, pinfo, tree, drep);
+ }
- return offset;
+ return offset;
}
static int
uvarray_fixedarray_budb_dissect_charListT_charListT_val(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_uvarray(tvb, offset, pinfo, tree, drep, fixedarray_budb_dissect_charListT_charListT_val);
- return offset;
+ offset=dissect_ndr_uvarray(tvb, offset, pinfo, tree, drep, fixedarray_budb_dissect_charListT_charListT_val);
+ return offset;
}
@@ -1343,8 +1343,8 @@ budb_dissect_charListT(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_budb_charListT);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_budb_charListT);
}
offset=budb_dissect_charListT_charListT_len(tvb, offset, pinfo, tree, drep);
@@ -1358,81 +1358,81 @@ budb_dissect_charListT(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
static int
budb_dissect_DbHeader_dbversion(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_DbHeader_dbversion, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_DbHeader_dbversion, param);
+ return offset;
}
static int
budb_dissect_DbHeader_created(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_DbHeader_created, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_DbHeader_created, param);
+ return offset;
}
static int
budb_dissect_DbHeader_cell(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_DbHeader_cell, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_DbHeader_cell, param);
+ return offset;
}
static int
budb_dissect_DbHeader_lastDumpId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_DbHeader_lastDumpId, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_DbHeader_lastDumpId, param);
+ return offset;
}
static int
budb_dissect_DbHeader_lastInstanceId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_DbHeader_lastInstanceId, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_DbHeader_lastInstanceId, param);
+ return offset;
}
static int
budb_dissect_DbHeader_lastTapeId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_DbHeader_lastTapeId, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_DbHeader_lastTapeId, param);
+ return offset;
}
static int
budb_dissect_DbHeader_spare1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_DbHeader_spare1, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_DbHeader_spare1, param);
+ return offset;
}
static int
budb_dissect_DbHeader_spare2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_DbHeader_spare2, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_DbHeader_spare2, param);
+ return offset;
}
static int
budb_dissect_DbHeader_spare3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_DbHeader_spare3, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_DbHeader_spare3, param);
+ return offset;
}
static int
budb_dissect_DbHeader_spare4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_DbHeader_spare4, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_DbHeader_spare4, param);
+ return offset;
}
@@ -1447,8 +1447,8 @@ budb_dissect_DbHeader(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_budb_DbHeader);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_budb_DbHeader);
}
offset=budb_dissect_DbHeader_dbversion(tvb, offset, pinfo, tree, drep);
@@ -1478,145 +1478,145 @@ budb_dissect_DbHeader(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
static int
budb_dissect_dbVolume_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_name, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_name, param);
+ return offset;
}
static int
budb_dissect_dbVolume_flags(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_flags, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_flags, param);
+ return offset;
}
static int
budb_dissect_dbVolume_id(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_udlong(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_id, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_udlong(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_id, param);
+ return offset;
}
static int
budb_dissect_dbVolume_server(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_server, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_server, param);
+ return offset;
}
static int
budb_dissect_dbVolume_partition(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_partition, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_partition, param);
+ return offset;
}
static int
budb_dissect_dbVolume_nFrags(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_nFrags, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_nFrags, param);
+ return offset;
}
static int
budb_dissect_dbVolume_position(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_position, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_position, param);
+ return offset;
}
static int
budb_dissect_dbVolume_clone(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_time_t(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_clone, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_time_t(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_clone, param);
+ return offset;
}
static int
budb_dissect_dbVolume_incTime(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_time_t(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_incTime, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_time_t(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_incTime, param);
+ return offset;
}
static int
budb_dissect_dbVolume_startByte(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_startByte, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_startByte, param);
+ return offset;
}
static int
budb_dissect_dbVolume_nBytes(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_nBytes, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_nBytes, param);
+ return offset;
}
static int
budb_dissect_dbVolume_seq(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_seq, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_seq, param);
+ return offset;
}
static int
budb_dissect_dbVolume_dump(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_dump, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_dump, param);
+ return offset;
}
static int
budb_dissect_dbVolume_tape(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_tape, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_tape, param);
+ return offset;
}
static int
budb_dissect_dbVolume_spare1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_spare1, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_spare1, param);
+ return offset;
}
static int
budb_dissect_dbVolume_spare2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_spare2, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_spare2, param);
+ return offset;
}
static int
budb_dissect_dbVolume_spare3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_spare3, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_spare3, param);
+ return offset;
}
static int
budb_dissect_dbVolume_spare4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_spare4, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dbVolume_spare4, param);
+ return offset;
}
@@ -1631,8 +1631,8 @@ budb_dissect_dbVolume(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_budb_dbVolume);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_budb_dbVolume);
}
offset=budb_dissect_dbVolume_name(tvb, offset, pinfo, tree, drep);
@@ -1678,57 +1678,57 @@ budb_dissect_dbVolume(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
static int
budb_dissect_structDumpHeader_type(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_structDumpHeader_type, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_structDumpHeader_type, param);
+ return offset;
}
static int
budb_dissect_structDumpHeader_structversion(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_structDumpHeader_structversion, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_structDumpHeader_structversion, param);
+ return offset;
}
static int
budb_dissect_structDumpHeader_size(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_structDumpHeader_size, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_int32(tvb, offset, pinfo, tree, drep, hf_budb_structDumpHeader_size, param);
+ return offset;
}
static int
budb_dissect_structDumpHeader_spare1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_structDumpHeader_spare1, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_structDumpHeader_spare1, param);
+ return offset;
}
static int
budb_dissect_structDumpHeader_spare2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_structDumpHeader_spare2, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_structDumpHeader_spare2, param);
+ return offset;
}
static int
budb_dissect_structDumpHeader_spare3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_structDumpHeader_spare3, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_structDumpHeader_spare3, param);
+ return offset;
}
static int
budb_dissect_structDumpHeader_spare4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_structDumpHeader_spare4, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_structDumpHeader_spare4, param);
+ return offset;
}
@@ -1743,8 +1743,8 @@ budb_dissect_structDumpHeader(tvbuff_t *tvb, int offset, packet_info *pinfo, pro
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_budb_structDumpHeader);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_budb_structDumpHeader);
}
offset=budb_dissect_structDumpHeader_type(tvb, offset, pinfo, tree, drep);
@@ -1784,8 +1784,8 @@ ref_budb_dissect_AddVolume_vol(tvbuff_t *tvb, int offset, packet_info *pinfo, pr
static int
budb_dissect_AddVolume_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_budb_dissect_AddVolume_vol(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_AddVolume_vol(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -1818,8 +1818,8 @@ ref_budb_dissect_CreateDump_dump(tvbuff_t *tvb, int offset, packet_info *pinfo,
static int
budb_dissect_CreateDump_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_budb_dissect_CreateDump_dump(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_CreateDump_dump(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -1828,8 +1828,8 @@ budb_dissect_CreateDump_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *
static int
budb_dissect_CreateDump_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_budb_dissect_CreateDump_dump(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_CreateDump_dump(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_budb_rc, NULL);
@@ -1848,8 +1848,8 @@ budb_dissect_DeleteDump_id(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_
static int
budb_dissect_DeleteDump_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=budb_dissect_DeleteDump_id(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_DeleteDump_id(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -1882,8 +1882,8 @@ ref_budb_dissect_DeleteTape_tape(tvbuff_t *tvb, int offset, packet_info *pinfo,
static int
budb_dissect_DeleteTape_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_budb_dissect_DeleteTape_tape(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_DeleteTape_tape(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -1939,14 +1939,14 @@ budb_dissect_DeleteVDP_curDumpId(tvbuff_t *tvb, int offset, packet_info *pinfo,
static int
budb_dissect_DeleteVDP_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ptr_budb_dissect_DeleteVDP_dsname(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ptr_budb_dissect_DeleteVDP_dsname(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ptr_budb_dissect_DeleteVDP_dumpPath(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ptr_budb_dissect_DeleteVDP_dumpPath(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=budb_dissect_DeleteVDP_curDumpId(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_DeleteVDP_curDumpId(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -2017,11 +2017,11 @@ ref_budb_dissect_FindClone_cloneSpare(tvbuff_t *tvb, int offset, packet_info *pi
static int
budb_dissect_FindClone_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=budb_dissect_FindClone_dumpID(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_FindClone_dumpID(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ptr_budb_dissect_FindClone_volName(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ptr_budb_dissect_FindClone_volName(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -2030,11 +2030,11 @@ budb_dissect_FindClone_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *p
static int
budb_dissect_FindClone_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_budb_dissect_FindClone_clonetime(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_FindClone_clonetime(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ref_budb_dissect_FindClone_cloneSpare(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_FindClone_cloneSpare(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_budb_rc, NULL);
@@ -2091,14 +2091,14 @@ ref_budb_dissect_FindDump_deptr(tvbuff_t *tvb, int offset, packet_info *pinfo, p
static int
budb_dissect_FindDump_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ptr_budb_dissect_FindDump_volName(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ptr_budb_dissect_FindDump_volName(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=budb_dissect_FindDump_beforeDate(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_FindDump_beforeDate(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=budb_dissect_FindDump_dateSpare(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_FindDump_dateSpare(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -2107,8 +2107,8 @@ budb_dissect_FindDump_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi
static int
budb_dissect_FindDump_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_budb_dissect_FindDump_deptr(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_FindDump_deptr(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_budb_rc, NULL);
@@ -2164,11 +2164,11 @@ ref_budb_dissect_FindLatestDump_dumpentry(tvbuff_t *tvb, int offset, packet_info
static int
budb_dissect_FindLatestDump_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ptr_budb_dissect_FindLatestDump_vsname(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ptr_budb_dissect_FindLatestDump_vsname(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ptr_budb_dissect_FindLatestDump_dname(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ptr_budb_dissect_FindLatestDump_dname(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -2177,8 +2177,8 @@ budb_dissect_FindLatestDump_request(tvbuff_t *tvb _U_, int offset _U_, packet_in
static int
budb_dissect_FindLatestDump_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_budb_dissect_FindLatestDump_dumpentry(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_FindLatestDump_dumpentry(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_budb_rc, NULL);
@@ -2204,8 +2204,8 @@ ref_budb_dissect_FinishDump_dump(tvbuff_t *tvb, int offset, packet_info *pinfo,
static int
budb_dissect_FinishDump_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_budb_dissect_FinishDump_dump(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_FinishDump_dump(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -2214,8 +2214,8 @@ budb_dissect_FinishDump_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *
static int
budb_dissect_FinishDump_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_budb_dissect_FinishDump_dump(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_FinishDump_dump(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_budb_rc, NULL);
@@ -2241,8 +2241,8 @@ ref_budb_dissect_FinishTape_tape(tvbuff_t *tvb, int offset, packet_info *pinfo,
static int
budb_dissect_FinishTape_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_budb_dissect_FinishTape_tape(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_FinishTape_tape(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -2367,23 +2367,23 @@ ptr_ptr_budb_dissect_GetDumps_dumps(tvbuff_t *tvb, int offset, packet_info *pinf
static int
budb_dissect_GetDumps_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=budb_dissect_GetDumps_majorVersion(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_GetDumps_majorVersion(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=budb_dissect_GetDumps_flags(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_GetDumps_flags(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ptr_budb_dissect_GetDumps_name(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ptr_budb_dissect_GetDumps_name(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=budb_dissect_GetDumps_start(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_GetDumps_start(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=budb_dissect_GetDumps_end(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_GetDumps_end(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=budb_dissect_GetDumps_index(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_GetDumps_index(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -2392,14 +2392,14 @@ budb_dissect_GetDumps_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi
static int
budb_dissect_GetDumps_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_budb_dissect_GetDumps_nextIndex(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_GetDumps_nextIndex(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ref_budb_dissect_GetDumps_dbUpdate(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_GetDumps_dbUpdate(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ptr_ptr_budb_dissect_GetDumps_dumps(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ptr_ptr_budb_dissect_GetDumps_dumps(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_budb_rc, NULL);
@@ -2517,23 +2517,23 @@ ptr_ptr_budb_dissect_GetTapes_tapes(tvbuff_t *tvb, int offset, packet_info *pinf
static int
budb_dissect_GetTapes_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=budb_dissect_GetTapes_majorVersion(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_GetTapes_majorVersion(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=budb_dissect_GetTapes_flags(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_GetTapes_flags(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ptr_budb_dissect_GetTapes_name(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ptr_budb_dissect_GetTapes_name(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=budb_dissect_GetTapes_start(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_GetTapes_start(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=budb_dissect_GetTapes_end(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_GetTapes_end(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=budb_dissect_GetTapes_index(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_GetTapes_index(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -2542,14 +2542,14 @@ budb_dissect_GetTapes_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi
static int
budb_dissect_GetTapes_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_budb_dissect_GetTapes_nextIndex(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_GetTapes_nextIndex(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ref_budb_dissect_GetTapes_dbUpdate(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_GetTapes_dbUpdate(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ptr_ptr_budb_dissect_GetTapes_tapes(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ptr_ptr_budb_dissect_GetTapes_tapes(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_budb_rc, NULL);
@@ -2667,23 +2667,23 @@ ptr_ptr_budb_dissect_GetVolumes_volumes(tvbuff_t *tvb, int offset, packet_info *
static int
budb_dissect_GetVolumes_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=budb_dissect_GetVolumes_majorVersion(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_GetVolumes_majorVersion(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=budb_dissect_GetVolumes_flags(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_GetVolumes_flags(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ptr_budb_dissect_GetVolumes_name(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ptr_budb_dissect_GetVolumes_name(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=budb_dissect_GetVolumes_start(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_GetVolumes_start(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=budb_dissect_GetVolumes_end(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_GetVolumes_end(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=budb_dissect_GetVolumes_index(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_GetVolumes_index(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -2692,14 +2692,14 @@ budb_dissect_GetVolumes_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *
static int
budb_dissect_GetVolumes_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_budb_dissect_GetVolumes_nextIndex(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_GetVolumes_nextIndex(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ref_budb_dissect_GetVolumes_dbUpdate(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_GetVolumes_dbUpdate(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ptr_ptr_budb_dissect_GetVolumes_volumes(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ptr_ptr_budb_dissect_GetVolumes_volumes(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_budb_rc, NULL);
@@ -2740,8 +2740,8 @@ ref_budb_dissect_UseTape_new(tvbuff_t *tvb, int offset, packet_info *pinfo, prot
static int
budb_dissect_UseTape_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_budb_dissect_UseTape_tape(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_UseTape_tape(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -2750,8 +2750,8 @@ budb_dissect_UseTape_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin
static int
budb_dissect_UseTape_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_budb_dissect_UseTape_new(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_UseTape_new(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_budb_rc, NULL);
@@ -2824,17 +2824,17 @@ ref_budb_dissect_GetText_charListPtr(tvbuff_t *tvb, int offset, packet_info *pin
static int
budb_dissect_GetText_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=budb_dissect_GetText_lockHandle(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_GetText_lockHandle(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=budb_dissect_GetText_textType(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_GetText_textType(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=budb_dissect_GetText_maxLength(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_GetText_maxLength(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=budb_dissect_GetText_offset(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_GetText_offset(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -2843,11 +2843,11 @@ budb_dissect_GetText_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin
static int
budb_dissect_GetText_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_budb_dissect_GetText_nextOffset(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_GetText_nextOffset(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ref_budb_dissect_GetText_charListPtr(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_GetText_charListPtr(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_budb_rc, NULL);
@@ -2881,8 +2881,8 @@ ref_budb_dissect_GetTextVersion_tversion(tvbuff_t *tvb, int offset, packet_info
static int
budb_dissect_GetTextVersion_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=budb_dissect_GetTextVersion_textType(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_GetTextVersion_textType(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -2891,8 +2891,8 @@ budb_dissect_GetTextVersion_request(tvbuff_t *tvb _U_, int offset _U_, packet_in
static int
budb_dissect_GetTextVersion_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_budb_dissect_GetTextVersion_tversion(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_GetTextVersion_tversion(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_budb_rc, NULL);
@@ -2950,20 +2950,20 @@ ref_budb_dissect_SaveText_charListPtr(tvbuff_t *tvb, int offset, packet_info *pi
static int
budb_dissect_SaveText_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=budb_dissect_SaveText_lockHandle(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_SaveText_lockHandle(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=budb_dissect_SaveText_textType(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_SaveText_textType(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=budb_dissect_SaveText_offset(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_SaveText_offset(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=budb_dissect_SaveText_flags(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_SaveText_flags(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ref_budb_dissect_SaveText_charListPtr(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_SaveText_charListPtr(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -2989,8 +2989,8 @@ budb_dissect_FreeAllLocks_instanceId(tvbuff_t *tvb, int offset, packet_info *pin
static int
budb_dissect_FreeAllLocks_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=budb_dissect_FreeAllLocks_instanceId(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_FreeAllLocks_instanceId(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -3016,8 +3016,8 @@ budb_dissect_FreeLock_lockHandle(tvbuff_t *tvb, int offset, packet_info *pinfo,
static int
budb_dissect_FreeLock_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=budb_dissect_FreeLock_lockHandle(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_FreeLock_lockHandle(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -3057,8 +3057,8 @@ budb_dissect_GetInstanceId_request(tvbuff_t *tvb _U_, int offset _U_, packet_inf
static int
budb_dissect_GetInstanceId_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_budb_dissect_GetInstanceId_instanceId(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_GetInstanceId_instanceId(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_budb_rc, NULL);
@@ -3108,14 +3108,14 @@ ref_budb_dissect_GetLock_lockHandle(tvbuff_t *tvb, int offset, packet_info *pinf
static int
budb_dissect_GetLock_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=budb_dissect_GetLock_instanceId(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_GetLock_instanceId(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=budb_dissect_GetLock_lockName(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_GetLock_lockName(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=budb_dissect_GetLock_expiration(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_GetLock_expiration(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -3124,8 +3124,8 @@ budb_dissect_GetLock_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin
static int
budb_dissect_GetLock_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_budb_dissect_GetLock_lockHandle(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_GetLock_lockHandle(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_budb_rc, NULL);
@@ -3188,14 +3188,14 @@ budb_dissect_DbVerify_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi
static int
budb_dissect_DbVerify_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_budb_dissect_DbVerify_status(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_DbVerify_status(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ref_budb_dissect_DbVerify_orphans(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_DbVerify_orphans(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ref_budb_dissect_DbVerify_host(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_DbVerify_host(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_budb_rc, NULL);
@@ -3244,8 +3244,8 @@ ref_budb_dissect_DumpDB_charListPtr(tvbuff_t *tvb, int offset, packet_info *pinf
static int
budb_dissect_DumpDB_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=budb_dissect_DumpDB_maxLength(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_DumpDB_maxLength(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -3254,11 +3254,11 @@ budb_dissect_DumpDB_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinf
static int
budb_dissect_DumpDB_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_budb_dissect_DumpDB_flags(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_DumpDB_flags(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ref_budb_dissect_DumpDB_charListPtr(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_DumpDB_charListPtr(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_budb_rc, NULL);
@@ -3284,8 +3284,8 @@ ref_budb_dissect_RestoreDbHeader_header(tvbuff_t *tvb, int offset, packet_info *
static int
budb_dissect_RestoreDbHeader_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_budb_dissect_RestoreDbHeader_header(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_RestoreDbHeader_header(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -3325,8 +3325,8 @@ budb_dissect_T_GetVersion_request(tvbuff_t *tvb _U_, int offset _U_, packet_info
static int
budb_dissect_T_GetVersion_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_budb_dissect_T_GetVersion_majorVersion(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_T_GetVersion_majorVersion(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_budb_rc, NULL);
@@ -3360,11 +3360,11 @@ ptr_budb_dissect_T_DumpHashTable_filename(tvbuff_t *tvb, int offset, packet_info
static int
budb_dissect_T_DumpHashTable_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=budb_dissect_T_DumpHashTable_type(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_T_DumpHashTable_type(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ptr_budb_dissect_T_DumpHashTable_filename(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ptr_budb_dissect_T_DumpHashTable_filename(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -3397,8 +3397,8 @@ ptr_budb_dissect_T_DumpDatabase_filename(tvbuff_t *tvb, int offset, packet_info
static int
budb_dissect_T_DumpDatabase_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ptr_budb_dissect_T_DumpDatabase_filename(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ptr_budb_dissect_T_DumpDatabase_filename(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -3423,9 +3423,9 @@ budb_dissect_uuid_t(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *t
static int
budb_dissect_dfs_interfaceDescription_interface_uuid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uuid_t(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_interface_uuid, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uuid_t(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_interface_uuid, param);
+ return offset;
}
@@ -3439,124 +3439,124 @@ budb_dissect_uint16(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *t
static int
budb_dissect_dfs_interfaceDescription_vers_major(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint16(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_vers_major, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint16(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_vers_major, param);
+ return offset;
}
static int
budb_dissect_dfs_interfaceDescription_vers_minor(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint16(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_vers_minor, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint16(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_vers_minor, param);
+ return offset;
}
static int
budb_dissect_dfs_interfaceDescription_vers_provider(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_vers_provider, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_vers_provider, param);
+ return offset;
}
static int
budb_dissect_dfs_interfaceDescription_spare0(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_spare0, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_spare0, param);
+ return offset;
}
static int
budb_dissect_dfs_interfaceDescription_spare1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_spare1, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_spare1, param);
+ return offset;
}
static int
budb_dissect_dfs_interfaceDescription_spare2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_spare2, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_spare2, param);
+ return offset;
}
static int
budb_dissect_dfs_interfaceDescription_spare3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_spare3, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_spare3, param);
+ return offset;
}
static int
budb_dissect_dfs_interfaceDescription_spare4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_spare4, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_spare4, param);
+ return offset;
}
static int
budb_dissect_dfs_interfaceDescription_spare5(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_spare5, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_spare5, param);
+ return offset;
}
static int
budb_dissect_dfs_interfaceDescription_spare6(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_spare6, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_spare6, param);
+ return offset;
}
static int
budb_dissect_dfs_interfaceDescription_spare7(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_spare7, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_spare7, param);
+ return offset;
}
static int
budb_dissect_dfs_interfaceDescription_spare8(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_spare8, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_spare8, param);
+ return offset;
}
static int
budb_dissect_dfs_interfaceDescription_spare9(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_spare9, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_spare9, param);
+ return offset;
}
static int
budb_dissect_dfs_interfaceDescription_spareText(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint8(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_spareText, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint8(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceDescription_spareText, param);
+ return offset;
}
static int
fixedarray_budb_dissect_dfs_interfaceDescription_spareText(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- int count=50;
- while(count--){
- offset=budb_dissect_dfs_interfaceDescription_spareText(tvb, offset, pinfo, tree, drep);
- }
+ int count=50;
+ while(count--){
+ offset=budb_dissect_dfs_interfaceDescription_spareText(tvb, offset, pinfo, tree, drep);
+ }
- return offset;
+ return offset;
}
@@ -3571,8 +3571,8 @@ budb_dissect_dfs_interfaceDescription(tvbuff_t *tvb, int offset, packet_info *pi
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_budb_dfs_interfaceDescription);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_budb_dfs_interfaceDescription);
}
offset=budb_dissect_dfs_interfaceDescription_interface_uuid(tvb, offset, pinfo, tree, drep);
@@ -3612,24 +3612,24 @@ budb_dissect_dfs_interfaceDescription(tvbuff_t *tvb, int offset, packet_info *pi
static int
budb_dissect_dfs_interfaceList_dfs_interfaceList_len(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceList_dfs_interfaceList_len, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceList_dfs_interfaceList_len, param);
+ return offset;
}
static int
budb_dissect_dfs_interfaceList_dfs_interfaceList_val(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=budb_dissect_dfs_interfaceDescription(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceList_dfs_interfaceList_val, param);
- return offset;
+ guint32 param=0;
+ offset=budb_dissect_dfs_interfaceDescription(tvb, offset, pinfo, tree, drep, hf_budb_dfs_interfaceList_dfs_interfaceList_val, param);
+ return offset;
}
static int
uvarray_budb_dissect_dfs_interfaceList_dfs_interfaceList_val(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_uvarray(tvb, offset, pinfo, tree, drep, budb_dissect_dfs_interfaceList_dfs_interfaceList_val);
- return offset;
+ offset=dissect_ndr_uvarray(tvb, offset, pinfo, tree, drep, budb_dissect_dfs_interfaceList_dfs_interfaceList_val);
+ return offset;
}
@@ -3644,8 +3644,8 @@ budb_dissect_dfs_interfaceList(tvbuff_t *tvb, int offset, packet_info *pinfo, pr
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_budb_dfs_interfaceList);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_budb_dfs_interfaceList);
}
offset=budb_dissect_dfs_interfaceList_dfs_interfaceList_len(tvb, offset, pinfo, tree, drep);
@@ -3675,8 +3675,8 @@ ref_budb_dissect_GetServerInterfaces_serverInterfacesP(tvbuff_t *tvb, int offset
static int
budb_dissect_GetServerInterfaces_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_budb_dissect_GetServerInterfaces_serverInterfacesP(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_GetServerInterfaces_serverInterfacesP(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -3685,8 +3685,8 @@ budb_dissect_GetServerInterfaces_request(tvbuff_t *tvb _U_, int offset _U_, pack
static int
budb_dissect_GetServerInterfaces_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_budb_dissect_GetServerInterfaces_serverInterfacesP(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_budb_dissect_GetServerInterfaces_serverInterfacesP(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_budb_rc, NULL);
@@ -3720,11 +3720,11 @@ ucarray_budb_dissect_AddVolumes_vol(tvbuff_t *tvb, int offset, packet_info *pinf
static int
budb_dissect_AddVolumes_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=budb_dissect_AddVolumes_cnt(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=budb_dissect_AddVolumes_cnt(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ucarray_budb_dissect_AddVolumes_vol(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ucarray_budb_dissect_AddVolumes_vol(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -3750,1075 +3750,1075 @@ proto_register_budb(void)
/* INCLUDED FILE : ETH_HFARR */
- { &hf_budb_opnum,
- { "Operation", "budb.opnum", FT_UINT16, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_rc,
- { "Return code", "budb.rc", FT_UINT32, BASE_HEX,
- VALS(NT_errors), 0,
- NULL, HFILL }},
-
- { &hf_budb_principal_name,
- { "name", "budb.principal.name", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_principal_instance,
- { "instance", "budb.principal.instance", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_principal_cell,
- { "cell", "budb.principal.cell", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_principal_spare,
- { "spare", "budb.principal.spare", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_principal_spare1,
- { "spare1", "budb.principal.spare1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_principal_spare2,
- { "spare2", "budb.principal.spare2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_principal_spare3,
- { "spare3", "budb.principal.spare3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_principal_spare4,
- { "spare4", "budb.principal.spare4", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeSet_id,
- { "id", "budb.tapeSet.id", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeSet_tapeServer,
- { "tapeServer", "budb.tapeSet.tapeServer", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeSet_format,
- { "format", "budb.tapeSet.format", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeSet_maxTapes,
- { "maxTapes", "budb.tapeSet.maxTapes", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeSet_a,
- { "a", "budb.tapeSet.a", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeSet_b,
- { "b", "budb.tapeSet.b", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeSet_spare1,
- { "spare1", "budb.tapeSet.spare1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeSet_spare2,
- { "spare2", "budb.tapeSet.spare2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeSet_spare3,
- { "spare3", "budb.tapeSet.spare3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeSet_spare4,
- { "spare4", "budb.tapeSet.spare4", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dumpEntry_id,
- { "id", "budb.dumpEntry.id", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dumpEntry_parent,
- { "parent", "budb.dumpEntry.parent", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dumpEntry_level,
- { "level", "budb.dumpEntry.level", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dumpEntry_flags,
- { "flags", "budb.dumpEntry.flags", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dumpEntry_volumeSetName,
- { "volumeSetName", "budb.dumpEntry.volumeSetName", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dumpEntry_dumpPath,
- { "dumpPath", "budb.dumpEntry.dumpPath", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dumpEntry_name,
- { "name", "budb.dumpEntry.name", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dumpEntry_created,
- { "created", "budb.dumpEntry.created", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dumpEntry_incTime,
- { "incTime", "budb.dumpEntry.incTime", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dumpEntry_nVolumes,
- { "nVolumes", "budb.dumpEntry.nVolumes", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dumpEntry_tapes,
- { "tapes", "budb.dumpEntry.tapes", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dumpEntry_dumper,
- { "dumper", "budb.dumpEntry.dumper", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dumpEntry_spare1,
- { "spare1", "budb.dumpEntry.spare1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dumpEntry_spare2,
- { "spare2", "budb.dumpEntry.spare2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dumpEntry_spare3,
- { "spare3", "budb.dumpEntry.spare3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dumpEntry_spare4,
- { "spare4", "budb.dumpEntry.spare4", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeEntry_name,
- { "name", "budb.tapeEntry.name", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeEntry_flags,
- { "flags", "budb.tapeEntry.flags", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeEntry_written,
- { "written", "budb.tapeEntry.written", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeEntry_expires,
- { "expires", "budb.tapeEntry.expires", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeEntry_nMBytes,
- { "nMBytes", "budb.tapeEntry.nMBytes", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeEntry_nBytes,
- { "nBytes", "budb.tapeEntry.nBytes", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeEntry_nFiles,
- { "nFiles", "budb.tapeEntry.nFiles", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeEntry_nVolumes,
- { "nVolumes", "budb.tapeEntry.nVolumes", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeEntry_seq,
- { "seq", "budb.tapeEntry.seq", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeEntry_tapeid,
- { "tapeid", "budb.tapeEntry.tapeid", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeEntry_useCount,
- { "useCount", "budb.tapeEntry.useCount", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeEntry_mediaType,
- { "mediaType", "budb.tapeEntry.mediaType", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeEntry_dump,
- { "dump", "budb.tapeEntry.dump", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeEntry_spare1,
- { "spare1", "budb.tapeEntry.spare1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeEntry_spare2,
- { "spare2", "budb.tapeEntry.spare2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeEntry_spare3,
- { "spare3", "budb.tapeEntry.spare3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeEntry_spare4,
- { "spare4", "budb.tapeEntry.spare4", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_volumeEntry_name,
- { "name", "budb.volumeEntry.name", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_volumeEntry_flags,
- { "flags", "budb.volumeEntry.flags", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_volumeEntry_id,
- { "id", "budb.volumeEntry.id", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_volumeEntry_server,
- { "server", "budb.volumeEntry.server", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_volumeEntry_partition,
- { "partition", "budb.volumeEntry.partition", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_volumeEntry_nFrags,
- { "nFrags", "budb.volumeEntry.nFrags", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_volumeEntry_position,
- { "position", "budb.volumeEntry.position", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_volumeEntry_clone,
- { "clone", "budb.volumeEntry.clone", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_volumeEntry_incTime,
- { "incTime", "budb.volumeEntry.incTime", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_volumeEntry_startByte,
- { "startByte", "budb.volumeEntry.startByte", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_volumeEntry_nBytes,
- { "nBytes", "budb.volumeEntry.nBytes", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_volumeEntry_seq,
- { "seq", "budb.volumeEntry.seq", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_volumeEntry_dump,
- { "dump", "budb.volumeEntry.dump", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_volumeEntry_tape,
- { "tape", "budb.volumeEntry.tape", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_volumeEntry_spare1,
- { "spare1", "budb.volumeEntry.spare1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_volumeEntry_spare2,
- { "spare2", "budb.volumeEntry.spare2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_volumeEntry_spare3,
- { "spare3", "budb.volumeEntry.spare3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_volumeEntry_spare4,
- { "spare4", "budb.volumeEntry.spare4", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_volumeList_volumeList_len,
- { "volumeList_len", "budb.volumeList.volumeList_len", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_volumeList_volumeList_val,
- { "volumeList_val", "budb.volumeList.volumeList_val", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dumpList_dumpList_len,
- { "dumpList_len", "budb.dumpList.dumpList_len", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dumpList_dumpList_val,
- { "dumpList_val", "budb.dumpList.dumpList_val", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeList_tapeList_len,
- { "tapeList_len", "budb.tapeList.tapeList_len", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_tapeList_tapeList_val,
- { "tapeList_val", "budb.tapeList.tapeList_val", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_charListT_charListT_len,
- { "charListT_len", "budb.charListT.charListT_len", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_charListT_charListT_val,
- { "charListT_val", "budb.charListT.charListT_val", FT_UINT8, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_DbHeader_dbversion,
- { "dbversion", "budb.DbHeader.dbversion", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_DbHeader_created,
- { "created", "budb.DbHeader.created", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_DbHeader_cell,
- { "cell", "budb.DbHeader.cell", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_DbHeader_lastDumpId,
- { "lastDumpId", "budb.DbHeader.lastDumpId", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_DbHeader_lastInstanceId,
- { "lastInstanceId", "budb.DbHeader.lastInstanceId", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_DbHeader_lastTapeId,
- { "lastTapeId", "budb.DbHeader.lastTapeId", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_DbHeader_spare1,
- { "spare1", "budb.DbHeader.spare1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_DbHeader_spare2,
- { "spare2", "budb.DbHeader.spare2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_DbHeader_spare3,
- { "spare3", "budb.DbHeader.spare3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_DbHeader_spare4,
- { "spare4", "budb.DbHeader.spare4", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dbVolume_name,
- { "name", "budb.dbVolume.name", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dbVolume_flags,
- { "flags", "budb.dbVolume.flags", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dbVolume_id,
- { "id", "budb.dbVolume.id", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dbVolume_server,
- { "server", "budb.dbVolume.server", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dbVolume_partition,
- { "partition", "budb.dbVolume.partition", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dbVolume_nFrags,
- { "nFrags", "budb.dbVolume.nFrags", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dbVolume_position,
- { "position", "budb.dbVolume.position", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dbVolume_clone,
- { "clone", "budb.dbVolume.clone", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dbVolume_incTime,
- { "incTime", "budb.dbVolume.incTime", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dbVolume_startByte,
- { "startByte", "budb.dbVolume.startByte", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dbVolume_nBytes,
- { "nBytes", "budb.dbVolume.nBytes", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dbVolume_seq,
- { "seq", "budb.dbVolume.seq", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dbVolume_dump,
- { "dump", "budb.dbVolume.dump", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dbVolume_tape,
- { "tape", "budb.dbVolume.tape", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dbVolume_spare1,
- { "spare1", "budb.dbVolume.spare1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dbVolume_spare2,
- { "spare2", "budb.dbVolume.spare2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dbVolume_spare3,
- { "spare3", "budb.dbVolume.spare3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dbVolume_spare4,
- { "spare4", "budb.dbVolume.spare4", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_structDumpHeader_type,
- { "type", "budb.structDumpHeader.type", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_structDumpHeader_structversion,
- { "structversion", "budb.structDumpHeader.structversion", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_structDumpHeader_size,
- { "size", "budb.structDumpHeader.size", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_structDumpHeader_spare1,
- { "spare1", "budb.structDumpHeader.spare1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_structDumpHeader_spare2,
- { "spare2", "budb.structDumpHeader.spare2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_structDumpHeader_spare3,
- { "spare3", "budb.structDumpHeader.spare3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_structDumpHeader_spare4,
- { "spare4", "budb.structDumpHeader.spare4", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_AddVolume_vol,
- { "vol", "budb.AddVolume.vol", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_CreateDump_dump,
- { "dump", "budb.CreateDump.dump", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_DeleteDump_id,
- { "id", "budb.DeleteDump.id", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_DeleteTape_tape,
- { "tape", "budb.DeleteTape.tape", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_DeleteVDP_dsname,
- { "dsname", "budb.DeleteVDP.dsname", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_DeleteVDP_dumpPath,
- { "dumpPath", "budb.DeleteVDP.dumpPath", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_DeleteVDP_curDumpId,
- { "curDumpId", "budb.DeleteVDP.curDumpId", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_FindClone_dumpID,
- { "dumpID", "budb.FindClone.dumpID", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_FindClone_volName,
- { "volName", "budb.FindClone.volName", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_FindClone_clonetime,
- { "clonetime", "budb.FindClone.clonetime", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_FindClone_cloneSpare,
- { "cloneSpare", "budb.FindClone.cloneSpare", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_FindDump_volName,
- { "volName", "budb.FindDump.volName", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_FindDump_beforeDate,
- { "beforeDate", "budb.FindDump.beforeDate", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_FindDump_dateSpare,
- { "dateSpare", "budb.FindDump.dateSpare", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_FindDump_deptr,
- { "deptr", "budb.FindDump.deptr", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_FindLatestDump_vsname,
- { "vsname", "budb.FindLatestDump.vsname", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_FindLatestDump_dname,
- { "dname", "budb.FindLatestDump.dname", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_FindLatestDump_dumpentry,
- { "dumpentry", "budb.FindLatestDump.dumpentry", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_FinishDump_dump,
- { "dump", "budb.FinishDump.dump", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_FinishTape_tape,
- { "tape", "budb.FinishTape.tape", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetDumps_majorVersion,
- { "majorVersion", "budb.GetDumps.majorVersion", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetDumps_flags,
- { "flags", "budb.GetDumps.flags", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetDumps_name,
- { "name", "budb.GetDumps.name", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetDumps_start,
- { "start", "budb.GetDumps.start", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetDumps_end,
- { "end", "budb.GetDumps.end", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetDumps_index,
- { "index", "budb.GetDumps.index", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetDumps_nextIndex,
- { "nextIndex", "budb.GetDumps.nextIndex", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetDumps_dbUpdate,
- { "dbUpdate", "budb.GetDumps.dbUpdate", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetDumps_dumps,
- { "dumps", "budb.GetDumps.dumps", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetTapes_majorVersion,
- { "majorVersion", "budb.GetTapes.majorVersion", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetTapes_flags,
- { "flags", "budb.GetTapes.flags", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetTapes_name,
- { "name", "budb.GetTapes.name", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetTapes_start,
- { "start", "budb.GetTapes.start", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetTapes_end,
- { "end", "budb.GetTapes.end", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetTapes_index,
- { "index", "budb.GetTapes.index", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetTapes_nextIndex,
- { "nextIndex", "budb.GetTapes.nextIndex", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetTapes_dbUpdate,
- { "dbUpdate", "budb.GetTapes.dbUpdate", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetTapes_tapes,
- { "tapes", "budb.GetTapes.tapes", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetVolumes_majorVersion,
- { "majorVersion", "budb.GetVolumes.majorVersion", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetVolumes_flags,
- { "flags", "budb.GetVolumes.flags", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetVolumes_name,
- { "name", "budb.GetVolumes.name", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetVolumes_start,
- { "start", "budb.GetVolumes.start", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetVolumes_end,
- { "end", "budb.GetVolumes.end", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetVolumes_index,
- { "index", "budb.GetVolumes.index", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetVolumes_nextIndex,
- { "nextIndex", "budb.GetVolumes.nextIndex", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetVolumes_dbUpdate,
- { "dbUpdate", "budb.GetVolumes.dbUpdate", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetVolumes_volumes,
- { "volumes", "budb.GetVolumes.volumes", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_UseTape_tape,
- { "tape", "budb.UseTape.tape", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_UseTape_new,
- { "new", "budb.UseTape.new", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetText_lockHandle,
- { "lockHandle", "budb.GetText.lockHandle", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetText_textType,
- { "textType", "budb.GetText.textType", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetText_maxLength,
- { "maxLength", "budb.GetText.maxLength", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetText_offset,
- { "offset", "budb.GetText.offset", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetText_nextOffset,
- { "nextOffset", "budb.GetText.nextOffset", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetText_charListPtr,
- { "charListPtr", "budb.GetText.charListPtr", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetTextVersion_textType,
- { "textType", "budb.GetTextVersion.textType", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetTextVersion_tversion,
- { "tversion", "budb.GetTextVersion.tversion", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_SaveText_lockHandle,
- { "lockHandle", "budb.SaveText.lockHandle", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_SaveText_textType,
- { "textType", "budb.SaveText.textType", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_SaveText_offset,
- { "offset", "budb.SaveText.offset", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_SaveText_flags,
- { "flags", "budb.SaveText.flags", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_SaveText_charListPtr,
- { "charListPtr", "budb.SaveText.charListPtr", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_FreeAllLocks_instanceId,
- { "instanceId", "budb.FreeAllLocks.instanceId", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_FreeLock_lockHandle,
- { "lockHandle", "budb.FreeLock.lockHandle", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetInstanceId_instanceId,
- { "instanceId", "budb.GetInstanceId.instanceId", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetLock_instanceId,
- { "instanceId", "budb.GetLock.instanceId", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetLock_lockName,
- { "lockName", "budb.GetLock.lockName", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetLock_expiration,
- { "expiration", "budb.GetLock.expiration", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetLock_lockHandle,
- { "lockHandle", "budb.GetLock.lockHandle", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_DbVerify_status,
- { "status", "budb.DbVerify.status", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_DbVerify_orphans,
- { "orphans", "budb.DbVerify.orphans", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_DbVerify_host,
- { "host", "budb.DbVerify.host", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_DumpDB_maxLength,
- { "maxLength", "budb.DumpDB.maxLength", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_DumpDB_flags,
- { "flags", "budb.DumpDB.flags", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_DumpDB_charListPtr,
- { "charListPtr", "budb.DumpDB.charListPtr", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_RestoreDbHeader_header,
- { "header", "budb.RestoreDbHeader.header", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_T_GetVersion_majorVersion,
- { "majorVersion", "budb.T_GetVersion.majorVersion", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_T_DumpHashTable_type,
- { "type", "budb.T_DumpHashTable.type", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_T_DumpHashTable_filename,
- { "filename", "budb.T_DumpHashTable.filename", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_T_DumpDatabase_filename,
- { "filename", "budb.T_DumpDatabase.filename", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dfs_interfaceDescription_interface_uuid,
- { "interface_uuid", "budb.dfs_interfaceDescription.interface_uuid", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dfs_interfaceDescription_vers_major,
- { "vers_major", "budb.dfs_interfaceDescription.vers_major", FT_UINT16, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dfs_interfaceDescription_vers_minor,
- { "vers_minor", "budb.dfs_interfaceDescription.vers_minor", FT_UINT16, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dfs_interfaceDescription_vers_provider,
- { "vers_provider", "budb.dfs_interfaceDescription.vers_provider", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dfs_interfaceDescription_spare0,
- { "spare0", "budb.dfs_interfaceDescription.spare0", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dfs_interfaceDescription_spare1,
- { "spare1", "budb.dfs_interfaceDescription.spare1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dfs_interfaceDescription_spare2,
- { "spare2", "budb.dfs_interfaceDescription.spare2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dfs_interfaceDescription_spare3,
- { "spare3", "budb.dfs_interfaceDescription.spare3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dfs_interfaceDescription_spare4,
- { "spare4", "budb.dfs_interfaceDescription.spare4", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dfs_interfaceDescription_spare5,
- { "spare5", "budb.dfs_interfaceDescription.spare5", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dfs_interfaceDescription_spare6,
- { "spare6", "budb.dfs_interfaceDescription.spare6", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dfs_interfaceDescription_spare7,
- { "spare7", "budb.dfs_interfaceDescription.spare7", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dfs_interfaceDescription_spare8,
- { "spare8", "budb.dfs_interfaceDescription.spare8", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dfs_interfaceDescription_spare9,
- { "spare9", "budb.dfs_interfaceDescription.spare9", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dfs_interfaceDescription_spareText,
- { "spareText", "budb.dfs_interfaceDescription.spareText", FT_UINT8, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dfs_interfaceList_dfs_interfaceList_len,
- { "dfs_interfaceList_len", "budb.dfs_interfaceList.dfs_interfaceList_len", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_dfs_interfaceList_dfs_interfaceList_val,
- { "dfs_interfaceList_val", "budb.dfs_interfaceList.dfs_interfaceList_val", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_GetServerInterfaces_serverInterfacesP,
- { "serverInterfacesP", "budb.GetServerInterfaces.serverInterfacesP", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_AddVolumes_cnt,
- { "cnt", "budb.AddVolumes.cnt", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_budb_AddVolumes_vol,
- { "vol", "budb.AddVolumes.vol", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
+ { &hf_budb_opnum,
+ { "Operation", "budb.opnum", FT_UINT16, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_rc,
+ { "Return code", "budb.rc", FT_UINT32, BASE_HEX,
+ VALS(NT_errors), 0,
+ NULL, HFILL }},
+
+ { &hf_budb_principal_name,
+ { "name", "budb.principal.name", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_principal_instance,
+ { "instance", "budb.principal.instance", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_principal_cell,
+ { "cell", "budb.principal.cell", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_principal_spare,
+ { "spare", "budb.principal.spare", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_principal_spare1,
+ { "spare1", "budb.principal.spare1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_principal_spare2,
+ { "spare2", "budb.principal.spare2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_principal_spare3,
+ { "spare3", "budb.principal.spare3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_principal_spare4,
+ { "spare4", "budb.principal.spare4", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeSet_id,
+ { "id", "budb.tapeSet.id", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeSet_tapeServer,
+ { "tapeServer", "budb.tapeSet.tapeServer", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeSet_format,
+ { "format", "budb.tapeSet.format", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeSet_maxTapes,
+ { "maxTapes", "budb.tapeSet.maxTapes", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeSet_a,
+ { "a", "budb.tapeSet.a", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeSet_b,
+ { "b", "budb.tapeSet.b", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeSet_spare1,
+ { "spare1", "budb.tapeSet.spare1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeSet_spare2,
+ { "spare2", "budb.tapeSet.spare2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeSet_spare3,
+ { "spare3", "budb.tapeSet.spare3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeSet_spare4,
+ { "spare4", "budb.tapeSet.spare4", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dumpEntry_id,
+ { "id", "budb.dumpEntry.id", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dumpEntry_parent,
+ { "parent", "budb.dumpEntry.parent", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dumpEntry_level,
+ { "level", "budb.dumpEntry.level", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dumpEntry_flags,
+ { "flags", "budb.dumpEntry.flags", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dumpEntry_volumeSetName,
+ { "volumeSetName", "budb.dumpEntry.volumeSetName", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dumpEntry_dumpPath,
+ { "dumpPath", "budb.dumpEntry.dumpPath", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dumpEntry_name,
+ { "name", "budb.dumpEntry.name", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dumpEntry_created,
+ { "created", "budb.dumpEntry.created", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dumpEntry_incTime,
+ { "incTime", "budb.dumpEntry.incTime", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dumpEntry_nVolumes,
+ { "nVolumes", "budb.dumpEntry.nVolumes", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dumpEntry_tapes,
+ { "tapes", "budb.dumpEntry.tapes", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dumpEntry_dumper,
+ { "dumper", "budb.dumpEntry.dumper", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dumpEntry_spare1,
+ { "spare1", "budb.dumpEntry.spare1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dumpEntry_spare2,
+ { "spare2", "budb.dumpEntry.spare2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dumpEntry_spare3,
+ { "spare3", "budb.dumpEntry.spare3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dumpEntry_spare4,
+ { "spare4", "budb.dumpEntry.spare4", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeEntry_name,
+ { "name", "budb.tapeEntry.name", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeEntry_flags,
+ { "flags", "budb.tapeEntry.flags", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeEntry_written,
+ { "written", "budb.tapeEntry.written", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeEntry_expires,
+ { "expires", "budb.tapeEntry.expires", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeEntry_nMBytes,
+ { "nMBytes", "budb.tapeEntry.nMBytes", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeEntry_nBytes,
+ { "nBytes", "budb.tapeEntry.nBytes", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeEntry_nFiles,
+ { "nFiles", "budb.tapeEntry.nFiles", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeEntry_nVolumes,
+ { "nVolumes", "budb.tapeEntry.nVolumes", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeEntry_seq,
+ { "seq", "budb.tapeEntry.seq", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeEntry_tapeid,
+ { "tapeid", "budb.tapeEntry.tapeid", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeEntry_useCount,
+ { "useCount", "budb.tapeEntry.useCount", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeEntry_mediaType,
+ { "mediaType", "budb.tapeEntry.mediaType", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeEntry_dump,
+ { "dump", "budb.tapeEntry.dump", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeEntry_spare1,
+ { "spare1", "budb.tapeEntry.spare1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeEntry_spare2,
+ { "spare2", "budb.tapeEntry.spare2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeEntry_spare3,
+ { "spare3", "budb.tapeEntry.spare3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeEntry_spare4,
+ { "spare4", "budb.tapeEntry.spare4", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_volumeEntry_name,
+ { "name", "budb.volumeEntry.name", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_volumeEntry_flags,
+ { "flags", "budb.volumeEntry.flags", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_volumeEntry_id,
+ { "id", "budb.volumeEntry.id", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_volumeEntry_server,
+ { "server", "budb.volumeEntry.server", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_volumeEntry_partition,
+ { "partition", "budb.volumeEntry.partition", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_volumeEntry_nFrags,
+ { "nFrags", "budb.volumeEntry.nFrags", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_volumeEntry_position,
+ { "position", "budb.volumeEntry.position", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_volumeEntry_clone,
+ { "clone", "budb.volumeEntry.clone", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_volumeEntry_incTime,
+ { "incTime", "budb.volumeEntry.incTime", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_volumeEntry_startByte,
+ { "startByte", "budb.volumeEntry.startByte", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_volumeEntry_nBytes,
+ { "nBytes", "budb.volumeEntry.nBytes", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_volumeEntry_seq,
+ { "seq", "budb.volumeEntry.seq", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_volumeEntry_dump,
+ { "dump", "budb.volumeEntry.dump", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_volumeEntry_tape,
+ { "tape", "budb.volumeEntry.tape", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_volumeEntry_spare1,
+ { "spare1", "budb.volumeEntry.spare1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_volumeEntry_spare2,
+ { "spare2", "budb.volumeEntry.spare2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_volumeEntry_spare3,
+ { "spare3", "budb.volumeEntry.spare3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_volumeEntry_spare4,
+ { "spare4", "budb.volumeEntry.spare4", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_volumeList_volumeList_len,
+ { "volumeList_len", "budb.volumeList.volumeList_len", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_volumeList_volumeList_val,
+ { "volumeList_val", "budb.volumeList.volumeList_val", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dumpList_dumpList_len,
+ { "dumpList_len", "budb.dumpList.dumpList_len", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dumpList_dumpList_val,
+ { "dumpList_val", "budb.dumpList.dumpList_val", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeList_tapeList_len,
+ { "tapeList_len", "budb.tapeList.tapeList_len", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_tapeList_tapeList_val,
+ { "tapeList_val", "budb.tapeList.tapeList_val", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_charListT_charListT_len,
+ { "charListT_len", "budb.charListT.charListT_len", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_charListT_charListT_val,
+ { "charListT_val", "budb.charListT.charListT_val", FT_UINT8, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_DbHeader_dbversion,
+ { "dbversion", "budb.DbHeader.dbversion", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_DbHeader_created,
+ { "created", "budb.DbHeader.created", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_DbHeader_cell,
+ { "cell", "budb.DbHeader.cell", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_DbHeader_lastDumpId,
+ { "lastDumpId", "budb.DbHeader.lastDumpId", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_DbHeader_lastInstanceId,
+ { "lastInstanceId", "budb.DbHeader.lastInstanceId", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_DbHeader_lastTapeId,
+ { "lastTapeId", "budb.DbHeader.lastTapeId", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_DbHeader_spare1,
+ { "spare1", "budb.DbHeader.spare1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_DbHeader_spare2,
+ { "spare2", "budb.DbHeader.spare2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_DbHeader_spare3,
+ { "spare3", "budb.DbHeader.spare3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_DbHeader_spare4,
+ { "spare4", "budb.DbHeader.spare4", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dbVolume_name,
+ { "name", "budb.dbVolume.name", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dbVolume_flags,
+ { "flags", "budb.dbVolume.flags", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dbVolume_id,
+ { "id", "budb.dbVolume.id", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dbVolume_server,
+ { "server", "budb.dbVolume.server", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dbVolume_partition,
+ { "partition", "budb.dbVolume.partition", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dbVolume_nFrags,
+ { "nFrags", "budb.dbVolume.nFrags", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dbVolume_position,
+ { "position", "budb.dbVolume.position", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dbVolume_clone,
+ { "clone", "budb.dbVolume.clone", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dbVolume_incTime,
+ { "incTime", "budb.dbVolume.incTime", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dbVolume_startByte,
+ { "startByte", "budb.dbVolume.startByte", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dbVolume_nBytes,
+ { "nBytes", "budb.dbVolume.nBytes", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dbVolume_seq,
+ { "seq", "budb.dbVolume.seq", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dbVolume_dump,
+ { "dump", "budb.dbVolume.dump", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dbVolume_tape,
+ { "tape", "budb.dbVolume.tape", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dbVolume_spare1,
+ { "spare1", "budb.dbVolume.spare1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dbVolume_spare2,
+ { "spare2", "budb.dbVolume.spare2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dbVolume_spare3,
+ { "spare3", "budb.dbVolume.spare3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dbVolume_spare4,
+ { "spare4", "budb.dbVolume.spare4", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_structDumpHeader_type,
+ { "type", "budb.structDumpHeader.type", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_structDumpHeader_structversion,
+ { "structversion", "budb.structDumpHeader.structversion", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_structDumpHeader_size,
+ { "size", "budb.structDumpHeader.size", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_structDumpHeader_spare1,
+ { "spare1", "budb.structDumpHeader.spare1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_structDumpHeader_spare2,
+ { "spare2", "budb.structDumpHeader.spare2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_structDumpHeader_spare3,
+ { "spare3", "budb.structDumpHeader.spare3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_structDumpHeader_spare4,
+ { "spare4", "budb.structDumpHeader.spare4", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_AddVolume_vol,
+ { "vol", "budb.AddVolume.vol", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_CreateDump_dump,
+ { "dump", "budb.CreateDump.dump", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_DeleteDump_id,
+ { "id", "budb.DeleteDump.id", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_DeleteTape_tape,
+ { "tape", "budb.DeleteTape.tape", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_DeleteVDP_dsname,
+ { "dsname", "budb.DeleteVDP.dsname", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_DeleteVDP_dumpPath,
+ { "dumpPath", "budb.DeleteVDP.dumpPath", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_DeleteVDP_curDumpId,
+ { "curDumpId", "budb.DeleteVDP.curDumpId", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_FindClone_dumpID,
+ { "dumpID", "budb.FindClone.dumpID", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_FindClone_volName,
+ { "volName", "budb.FindClone.volName", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_FindClone_clonetime,
+ { "clonetime", "budb.FindClone.clonetime", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_FindClone_cloneSpare,
+ { "cloneSpare", "budb.FindClone.cloneSpare", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_FindDump_volName,
+ { "volName", "budb.FindDump.volName", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_FindDump_beforeDate,
+ { "beforeDate", "budb.FindDump.beforeDate", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_FindDump_dateSpare,
+ { "dateSpare", "budb.FindDump.dateSpare", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_FindDump_deptr,
+ { "deptr", "budb.FindDump.deptr", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_FindLatestDump_vsname,
+ { "vsname", "budb.FindLatestDump.vsname", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_FindLatestDump_dname,
+ { "dname", "budb.FindLatestDump.dname", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_FindLatestDump_dumpentry,
+ { "dumpentry", "budb.FindLatestDump.dumpentry", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_FinishDump_dump,
+ { "dump", "budb.FinishDump.dump", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_FinishTape_tape,
+ { "tape", "budb.FinishTape.tape", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetDumps_majorVersion,
+ { "majorVersion", "budb.GetDumps.majorVersion", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetDumps_flags,
+ { "flags", "budb.GetDumps.flags", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetDumps_name,
+ { "name", "budb.GetDumps.name", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetDumps_start,
+ { "start", "budb.GetDumps.start", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetDumps_end,
+ { "end", "budb.GetDumps.end", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetDumps_index,
+ { "index", "budb.GetDumps.index", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetDumps_nextIndex,
+ { "nextIndex", "budb.GetDumps.nextIndex", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetDumps_dbUpdate,
+ { "dbUpdate", "budb.GetDumps.dbUpdate", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetDumps_dumps,
+ { "dumps", "budb.GetDumps.dumps", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetTapes_majorVersion,
+ { "majorVersion", "budb.GetTapes.majorVersion", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetTapes_flags,
+ { "flags", "budb.GetTapes.flags", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetTapes_name,
+ { "name", "budb.GetTapes.name", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetTapes_start,
+ { "start", "budb.GetTapes.start", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetTapes_end,
+ { "end", "budb.GetTapes.end", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetTapes_index,
+ { "index", "budb.GetTapes.index", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetTapes_nextIndex,
+ { "nextIndex", "budb.GetTapes.nextIndex", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetTapes_dbUpdate,
+ { "dbUpdate", "budb.GetTapes.dbUpdate", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetTapes_tapes,
+ { "tapes", "budb.GetTapes.tapes", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetVolumes_majorVersion,
+ { "majorVersion", "budb.GetVolumes.majorVersion", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetVolumes_flags,
+ { "flags", "budb.GetVolumes.flags", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetVolumes_name,
+ { "name", "budb.GetVolumes.name", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetVolumes_start,
+ { "start", "budb.GetVolumes.start", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetVolumes_end,
+ { "end", "budb.GetVolumes.end", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetVolumes_index,
+ { "index", "budb.GetVolumes.index", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetVolumes_nextIndex,
+ { "nextIndex", "budb.GetVolumes.nextIndex", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetVolumes_dbUpdate,
+ { "dbUpdate", "budb.GetVolumes.dbUpdate", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetVolumes_volumes,
+ { "volumes", "budb.GetVolumes.volumes", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_UseTape_tape,
+ { "tape", "budb.UseTape.tape", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_UseTape_new,
+ { "new", "budb.UseTape.new", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetText_lockHandle,
+ { "lockHandle", "budb.GetText.lockHandle", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetText_textType,
+ { "textType", "budb.GetText.textType", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetText_maxLength,
+ { "maxLength", "budb.GetText.maxLength", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetText_offset,
+ { "offset", "budb.GetText.offset", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetText_nextOffset,
+ { "nextOffset", "budb.GetText.nextOffset", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetText_charListPtr,
+ { "charListPtr", "budb.GetText.charListPtr", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetTextVersion_textType,
+ { "textType", "budb.GetTextVersion.textType", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetTextVersion_tversion,
+ { "tversion", "budb.GetTextVersion.tversion", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_SaveText_lockHandle,
+ { "lockHandle", "budb.SaveText.lockHandle", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_SaveText_textType,
+ { "textType", "budb.SaveText.textType", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_SaveText_offset,
+ { "offset", "budb.SaveText.offset", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_SaveText_flags,
+ { "flags", "budb.SaveText.flags", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_SaveText_charListPtr,
+ { "charListPtr", "budb.SaveText.charListPtr", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_FreeAllLocks_instanceId,
+ { "instanceId", "budb.FreeAllLocks.instanceId", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_FreeLock_lockHandle,
+ { "lockHandle", "budb.FreeLock.lockHandle", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetInstanceId_instanceId,
+ { "instanceId", "budb.GetInstanceId.instanceId", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetLock_instanceId,
+ { "instanceId", "budb.GetLock.instanceId", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetLock_lockName,
+ { "lockName", "budb.GetLock.lockName", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetLock_expiration,
+ { "expiration", "budb.GetLock.expiration", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetLock_lockHandle,
+ { "lockHandle", "budb.GetLock.lockHandle", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_DbVerify_status,
+ { "status", "budb.DbVerify.status", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_DbVerify_orphans,
+ { "orphans", "budb.DbVerify.orphans", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_DbVerify_host,
+ { "host", "budb.DbVerify.host", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_DumpDB_maxLength,
+ { "maxLength", "budb.DumpDB.maxLength", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_DumpDB_flags,
+ { "flags", "budb.DumpDB.flags", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_DumpDB_charListPtr,
+ { "charListPtr", "budb.DumpDB.charListPtr", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_RestoreDbHeader_header,
+ { "header", "budb.RestoreDbHeader.header", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_T_GetVersion_majorVersion,
+ { "majorVersion", "budb.T_GetVersion.majorVersion", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_T_DumpHashTable_type,
+ { "type", "budb.T_DumpHashTable.type", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_T_DumpHashTable_filename,
+ { "filename", "budb.T_DumpHashTable.filename", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_T_DumpDatabase_filename,
+ { "filename", "budb.T_DumpDatabase.filename", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dfs_interfaceDescription_interface_uuid,
+ { "interface_uuid", "budb.dfs_interfaceDescription.interface_uuid", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dfs_interfaceDescription_vers_major,
+ { "vers_major", "budb.dfs_interfaceDescription.vers_major", FT_UINT16, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dfs_interfaceDescription_vers_minor,
+ { "vers_minor", "budb.dfs_interfaceDescription.vers_minor", FT_UINT16, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dfs_interfaceDescription_vers_provider,
+ { "vers_provider", "budb.dfs_interfaceDescription.vers_provider", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dfs_interfaceDescription_spare0,
+ { "spare0", "budb.dfs_interfaceDescription.spare0", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dfs_interfaceDescription_spare1,
+ { "spare1", "budb.dfs_interfaceDescription.spare1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dfs_interfaceDescription_spare2,
+ { "spare2", "budb.dfs_interfaceDescription.spare2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dfs_interfaceDescription_spare3,
+ { "spare3", "budb.dfs_interfaceDescription.spare3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dfs_interfaceDescription_spare4,
+ { "spare4", "budb.dfs_interfaceDescription.spare4", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dfs_interfaceDescription_spare5,
+ { "spare5", "budb.dfs_interfaceDescription.spare5", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dfs_interfaceDescription_spare6,
+ { "spare6", "budb.dfs_interfaceDescription.spare6", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dfs_interfaceDescription_spare7,
+ { "spare7", "budb.dfs_interfaceDescription.spare7", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dfs_interfaceDescription_spare8,
+ { "spare8", "budb.dfs_interfaceDescription.spare8", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dfs_interfaceDescription_spare9,
+ { "spare9", "budb.dfs_interfaceDescription.spare9", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dfs_interfaceDescription_spareText,
+ { "spareText", "budb.dfs_interfaceDescription.spareText", FT_UINT8, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dfs_interfaceList_dfs_interfaceList_len,
+ { "dfs_interfaceList_len", "budb.dfs_interfaceList.dfs_interfaceList_len", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_dfs_interfaceList_dfs_interfaceList_val,
+ { "dfs_interfaceList_val", "budb.dfs_interfaceList.dfs_interfaceList_val", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_GetServerInterfaces_serverInterfacesP,
+ { "serverInterfacesP", "budb.GetServerInterfaces.serverInterfacesP", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_AddVolumes_cnt,
+ { "cnt", "budb.AddVolumes.cnt", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_budb_AddVolumes_vol,
+ { "vol", "budb.AddVolumes.vol", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
/* END OF INCLUDED FILE : ETH_HFARR */
@@ -4829,21 +4829,21 @@ proto_register_budb(void)
/* INCLUDED FILE : ETH_ETTARR */
- &ett_budb,
- &ett_budb_principal,
- &ett_budb_tapeSet,
- &ett_budb_dumpEntry,
- &ett_budb_tapeEntry,
- &ett_budb_volumeEntry,
- &ett_budb_volumeList,
- &ett_budb_dumpList,
- &ett_budb_tapeList,
- &ett_budb_charListT,
- &ett_budb_DbHeader,
- &ett_budb_dbVolume,
- &ett_budb_structDumpHeader,
- &ett_budb_dfs_interfaceDescription,
- &ett_budb_dfs_interfaceList,
+ &ett_budb,
+ &ett_budb_principal,
+ &ett_budb_tapeSet,
+ &ett_budb_dumpEntry,
+ &ett_budb_tapeEntry,
+ &ett_budb_volumeEntry,
+ &ett_budb_volumeList,
+ &ett_budb_dumpList,
+ &ett_budb_tapeList,
+ &ett_budb_charListT,
+ &ett_budb_DbHeader,
+ &ett_budb_dbVolume,
+ &ett_budb_structDumpHeader,
+ &ett_budb_dfs_interfaceDescription,
+ &ett_budb_dfs_interfaceList,
/* END OF INCLUDED FILE : ETH_ETTARR */
@@ -4860,93 +4860,93 @@ static dcerpc_sub_dissector function_dissectors[] = {
/* INCLUDED FILE : ETH_FT */
- { 0, "AddVolume",
- budb_dissect_AddVolume_request,
- budb_dissect_AddVolume_response },
- { 1, "CreateDump",
- budb_dissect_CreateDump_request,
- budb_dissect_CreateDump_response },
- { 2, "DeleteDump",
- budb_dissect_DeleteDump_request,
- budb_dissect_DeleteDump_response },
- { 3, "DeleteTape",
- budb_dissect_DeleteTape_request,
- budb_dissect_DeleteTape_response },
- { 4, "DeleteVDP",
- budb_dissect_DeleteVDP_request,
- budb_dissect_DeleteVDP_response },
- { 5, "FindClone",
- budb_dissect_FindClone_request,
- budb_dissect_FindClone_response },
- { 6, "FindDump",
- budb_dissect_FindDump_request,
- budb_dissect_FindDump_response },
- { 7, "FindLatestDump",
- budb_dissect_FindLatestDump_request,
- budb_dissect_FindLatestDump_response },
- { 8, "FinishDump",
- budb_dissect_FinishDump_request,
- budb_dissect_FinishDump_response },
- { 9, "FinishTape",
- budb_dissect_FinishTape_request,
- budb_dissect_FinishTape_response },
- { 10, "GetDumps",
- budb_dissect_GetDumps_request,
- budb_dissect_GetDumps_response },
- { 11, "GetTapes",
- budb_dissect_GetTapes_request,
- budb_dissect_GetTapes_response },
- { 12, "GetVolumes",
- budb_dissect_GetVolumes_request,
- budb_dissect_GetVolumes_response },
- { 13, "UseTape",
- budb_dissect_UseTape_request,
- budb_dissect_UseTape_response },
- { 14, "GetText",
- budb_dissect_GetText_request,
- budb_dissect_GetText_response },
- { 15, "GetTextVersion",
- budb_dissect_GetTextVersion_request,
- budb_dissect_GetTextVersion_response },
- { 16, "SaveText",
- budb_dissect_SaveText_request,
- budb_dissect_SaveText_response },
- { 17, "FreeAllLocks",
- budb_dissect_FreeAllLocks_request,
- budb_dissect_FreeAllLocks_response },
- { 18, "FreeLock",
- budb_dissect_FreeLock_request,
- budb_dissect_FreeLock_response },
- { 19, "GetInstanceId",
- budb_dissect_GetInstanceId_request,
- budb_dissect_GetInstanceId_response },
- { 20, "GetLock",
- budb_dissect_GetLock_request,
- budb_dissect_GetLock_response },
- { 21, "DbVerify",
- budb_dissect_DbVerify_request,
- budb_dissect_DbVerify_response },
- { 22, "DumpDB",
- budb_dissect_DumpDB_request,
- budb_dissect_DumpDB_response },
- { 23, "RestoreDbHeader",
- budb_dissect_RestoreDbHeader_request,
- budb_dissect_RestoreDbHeader_response },
- { 24, "T_GetVersion",
- budb_dissect_T_GetVersion_request,
- budb_dissect_T_GetVersion_response },
- { 25, "T_DumpHashTable",
- budb_dissect_T_DumpHashTable_request,
- budb_dissect_T_DumpHashTable_response },
- { 26, "T_DumpDatabase",
- budb_dissect_T_DumpDatabase_request,
- budb_dissect_T_DumpDatabase_response },
- { 27, "GetServerInterfaces",
- budb_dissect_GetServerInterfaces_request,
- budb_dissect_GetServerInterfaces_response },
- { 28, "AddVolumes",
- budb_dissect_AddVolumes_request,
- budb_dissect_AddVolumes_response },
+ { 0, "AddVolume",
+ budb_dissect_AddVolume_request,
+ budb_dissect_AddVolume_response },
+ { 1, "CreateDump",
+ budb_dissect_CreateDump_request,
+ budb_dissect_CreateDump_response },
+ { 2, "DeleteDump",
+ budb_dissect_DeleteDump_request,
+ budb_dissect_DeleteDump_response },
+ { 3, "DeleteTape",
+ budb_dissect_DeleteTape_request,
+ budb_dissect_DeleteTape_response },
+ { 4, "DeleteVDP",
+ budb_dissect_DeleteVDP_request,
+ budb_dissect_DeleteVDP_response },
+ { 5, "FindClone",
+ budb_dissect_FindClone_request,
+ budb_dissect_FindClone_response },
+ { 6, "FindDump",
+ budb_dissect_FindDump_request,
+ budb_dissect_FindDump_response },
+ { 7, "FindLatestDump",
+ budb_dissect_FindLatestDump_request,
+ budb_dissect_FindLatestDump_response },
+ { 8, "FinishDump",
+ budb_dissect_FinishDump_request,
+ budb_dissect_FinishDump_response },
+ { 9, "FinishTape",
+ budb_dissect_FinishTape_request,
+ budb_dissect_FinishTape_response },
+ { 10, "GetDumps",
+ budb_dissect_GetDumps_request,
+ budb_dissect_GetDumps_response },
+ { 11, "GetTapes",
+ budb_dissect_GetTapes_request,
+ budb_dissect_GetTapes_response },
+ { 12, "GetVolumes",
+ budb_dissect_GetVolumes_request,
+ budb_dissect_GetVolumes_response },
+ { 13, "UseTape",
+ budb_dissect_UseTape_request,
+ budb_dissect_UseTape_response },
+ { 14, "GetText",
+ budb_dissect_GetText_request,
+ budb_dissect_GetText_response },
+ { 15, "GetTextVersion",
+ budb_dissect_GetTextVersion_request,
+ budb_dissect_GetTextVersion_response },
+ { 16, "SaveText",
+ budb_dissect_SaveText_request,
+ budb_dissect_SaveText_response },
+ { 17, "FreeAllLocks",
+ budb_dissect_FreeAllLocks_request,
+ budb_dissect_FreeAllLocks_response },
+ { 18, "FreeLock",
+ budb_dissect_FreeLock_request,
+ budb_dissect_FreeLock_response },
+ { 19, "GetInstanceId",
+ budb_dissect_GetInstanceId_request,
+ budb_dissect_GetInstanceId_response },
+ { 20, "GetLock",
+ budb_dissect_GetLock_request,
+ budb_dissect_GetLock_response },
+ { 21, "DbVerify",
+ budb_dissect_DbVerify_request,
+ budb_dissect_DbVerify_response },
+ { 22, "DumpDB",
+ budb_dissect_DumpDB_request,
+ budb_dissect_DumpDB_response },
+ { 23, "RestoreDbHeader",
+ budb_dissect_RestoreDbHeader_request,
+ budb_dissect_RestoreDbHeader_response },
+ { 24, "T_GetVersion",
+ budb_dissect_T_GetVersion_request,
+ budb_dissect_T_GetVersion_response },
+ { 25, "T_DumpHashTable",
+ budb_dissect_T_DumpHashTable_request,
+ budb_dissect_T_DumpHashTable_response },
+ { 26, "T_DumpDatabase",
+ budb_dissect_T_DumpDatabase_request,
+ budb_dissect_T_DumpDatabase_response },
+ { 27, "GetServerInterfaces",
+ budb_dissect_GetServerInterfaces_request,
+ budb_dissect_GetServerInterfaces_response },
+ { 28, "AddVolumes",
+ budb_dissect_AddVolumes_request,
+ budb_dissect_AddVolumes_response },
/* END OF INCLUDED FILE : ETH_FT */
@@ -4959,9 +4959,9 @@ proto_reg_handoff_budb(void)
/* INCLUDED FILE : ETH_HANDOFF */
- dcerpc_init_uuid(proto_budb, ett_budb,
- &uuid_dcerpc_budb, ver_budb,
- function_dissectors, hf_budb_opnum);
+ dcerpc_init_uuid(proto_budb, ett_budb,
+ &uuid_dcerpc_budb, ver_budb,
+ function_dissectors, hf_budb_opnum);
/* END OF INCLUDED FILE : ETH_HANDOFF */
diff --git a/epan/dissectors/packet-dcerpc-butc.c b/epan/dissectors/packet-dcerpc-butc.c
index 906a2605e4..42b193681f 100644
--- a/epan/dissectors/packet-dcerpc-butc.c
+++ b/epan/dissectors/packet-dcerpc-butc.c
@@ -205,8 +205,8 @@ butc_dissect_NameString_t(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_t
/* INCLUDED FILE : ETH_CODE */
static e_uuid_t uuid_dcerpc_butc = {
- 0x1d193c08, 0x000b, 0x11ca,
- { 0xba, 0x1d, 0x02, 0x60, 0x8c, 0x2e, 0xa9, 0x6e}
+ 0x1d193c08, 0x000b, 0x11ca,
+ { 0xba, 0x1d, 0x02, 0x60, 0x8c, 0x2e, 0xa9, 0x6e}
};
static guint16 ver_butc = 4;
@@ -232,8 +232,8 @@ butc_dissect_Restore_flags(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_
ALIGN_TO_4_BYTES;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, 4, TRUE);
- tree=proto_item_add_subtree(item, ett_butc_Restore_flags);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ tree=proto_item_add_subtree(item, ett_butc_Restore_flags);
}
offset=dissect_ndr_uint32(tvb, offset, pinfo, NULL, drep, -1, &flags);
@@ -241,18 +241,18 @@ butc_dissect_Restore_flags(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_
proto_tree_add_boolean(tree, hf_butc_Restore_flags_TC_RESTORE_CREATE, tvb, offset-4, 4, flags);
if(flags&0x00000001){
- proto_item_append_text(item, " TC_RESTORE_CREATE");
+ proto_item_append_text(item, " TC_RESTORE_CREATE");
}
flags&=(~0x00000001);
proto_tree_add_boolean(tree, hf_butc_Restore_flags_TC_RESTORE_INCR, tvb, offset-4, 4, flags);
if(flags&0x00000002){
- proto_item_append_text(item, " TC_RESTORE_INCR");
+ proto_item_append_text(item, " TC_RESTORE_INCR");
}
flags&=(~0x00000002);
if(flags){
- proto_item_append_text(item, "UNKNOWN-FLAGS");
+ proto_item_append_text(item, "UNKNOWN-FLAGS");
}
return offset;
@@ -268,9 +268,9 @@ butc_dissect_uint16(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *t
static int
butc_dissect_afsNetAddr_type(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint16(tvb, offset, pinfo, tree, drep, hf_butc_afsNetAddr_type, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint16(tvb, offset, pinfo, tree, drep, hf_butc_afsNetAddr_type, param);
+ return offset;
}
@@ -284,20 +284,20 @@ butc_dissect_uint8(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tr
static int
butc_dissect_afsNetAddr_data(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint8(tvb, offset, pinfo, tree, drep, hf_butc_afsNetAddr_data, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint8(tvb, offset, pinfo, tree, drep, hf_butc_afsNetAddr_data, param);
+ return offset;
}
static int
fixedarray_butc_dissect_afsNetAddr_data(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- int count=14;
- while(count--){
- offset=butc_dissect_afsNetAddr_data(tvb, offset, pinfo, tree, drep);
- }
+ int count=14;
+ while(count--){
+ offset=butc_dissect_afsNetAddr_data(tvb, offset, pinfo, tree, drep);
+ }
- return offset;
+ return offset;
}
@@ -312,8 +312,8 @@ butc_dissect_afsNetAddr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tre
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_butc_afsNetAddr);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_butc_afsNetAddr);
}
offset=butc_dissect_afsNetAddr_type(tvb, offset, pinfo, tree, drep);
@@ -337,17 +337,17 @@ butc_dissect_udlong(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *t
static int
butc_dissect_tc_dumpDesc_vid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_udlong(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpDesc_vid, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_udlong(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpDesc_vid, param);
+ return offset;
}
static int
butc_dissect_tc_dumpDesc_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpDesc_name, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpDesc_name, param);
+ return offset;
}
@@ -361,9 +361,9 @@ butc_dissect_int32(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tr
static int
butc_dissect_tc_dumpDesc_partition(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpDesc_partition, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpDesc_partition, param);
+ return offset;
}
@@ -379,25 +379,25 @@ butc_dissect_time_t(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *t
static int
butc_dissect_tc_dumpDesc_date(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_time_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpDesc_date, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_time_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpDesc_date, param);
+ return offset;
}
static int
butc_dissect_tc_dumpDesc_cloneDate(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_time_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpDesc_cloneDate, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_time_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpDesc_cloneDate, param);
+ return offset;
}
static int
butc_dissect_tc_dumpDesc_hostAddr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_afsNetAddr(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpDesc_hostAddr, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_afsNetAddr(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpDesc_hostAddr, param);
+ return offset;
}
@@ -411,33 +411,33 @@ butc_dissect_uint32(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *t
static int
butc_dissect_tc_dumpDesc_spare1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpDesc_spare1, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpDesc_spare1, param);
+ return offset;
}
static int
butc_dissect_tc_dumpDesc_spare2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpDesc_spare2, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpDesc_spare2, param);
+ return offset;
}
static int
butc_dissect_tc_dumpDesc_spare3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpDesc_spare3, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpDesc_spare3, param);
+ return offset;
}
static int
butc_dissect_tc_dumpDesc_spare4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpDesc_spare4, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpDesc_spare4, param);
+ return offset;
}
@@ -452,8 +452,8 @@ butc_dissect_tc_dumpDesc(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tr
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_butc_tc_dumpDesc);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_butc_tc_dumpDesc);
}
offset=butc_dissect_tc_dumpDesc_vid(tvb, offset, pinfo, tree, drep);
@@ -483,113 +483,113 @@ butc_dissect_tc_dumpDesc(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tr
static int
butc_dissect_tc_restoreDesc_frag(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_frag, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_frag, param);
+ return offset;
}
static int
butc_dissect_tc_restoreDesc_tapeName(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_tapeName, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_tapeName, param);
+ return offset;
}
static int
butc_dissect_tc_restoreDesc_position(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_position, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_position, param);
+ return offset;
}
static int
butc_dissect_tc_restoreDesc_origVid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_udlong(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_origVid, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_udlong(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_origVid, param);
+ return offset;
}
static int
butc_dissect_tc_restoreDesc_vid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_udlong(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_vid, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_udlong(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_vid, param);
+ return offset;
}
static int
butc_dissect_tc_restoreDesc_partition(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_partition, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_partition, param);
+ return offset;
}
static int
butc_dissect_tc_restoreDesc_flags(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_Restore_flags(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_flags, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_Restore_flags(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_flags, param);
+ return offset;
}
static int
butc_dissect_tc_restoreDesc_hostAddr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_afsNetAddr(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_hostAddr, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_afsNetAddr(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_hostAddr, param);
+ return offset;
}
static int
butc_dissect_tc_restoreDesc_realDumpId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_realDumpId, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_realDumpId, param);
+ return offset;
}
static int
butc_dissect_tc_restoreDesc_spare2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_spare2, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_spare2, param);
+ return offset;
}
static int
butc_dissect_tc_restoreDesc_spare3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_spare3, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_spare3, param);
+ return offset;
}
static int
butc_dissect_tc_restoreDesc_spare4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_spare4, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_spare4, param);
+ return offset;
}
static int
butc_dissect_tc_restoreDesc_oldName(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_oldName, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_oldName, param);
+ return offset;
}
static int
butc_dissect_tc_restoreDesc_newName(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_newName, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreDesc_newName, param);
+ return offset;
}
@@ -604,8 +604,8 @@ butc_dissect_tc_restoreDesc(tvbuff_t *tvb, int offset, packet_info *pinfo, proto
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_butc_tc_restoreDesc);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_butc_tc_restoreDesc);
}
offset=butc_dissect_tc_restoreDesc_frag(tvb, offset, pinfo, tree, drep);
@@ -643,73 +643,73 @@ butc_dissect_tc_restoreDesc(tvbuff_t *tvb, int offset, packet_info *pinfo, proto
static int
butc_dissect_tc_dumpStat_dumpID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpStat_dumpID, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpStat_dumpID, param);
+ return offset;
}
static int
butc_dissect_tc_dumpStat_bytesDumped(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpStat_bytesDumped, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpStat_bytesDumped, param);
+ return offset;
}
static int
butc_dissect_tc_dumpStat_volumeBeingDumped(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_udlong(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpStat_volumeBeingDumped, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_udlong(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpStat_volumeBeingDumped, param);
+ return offset;
}
static int
butc_dissect_tc_dumpStat_numVolErrs(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpStat_numVolErrs, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpStat_numVolErrs, param);
+ return offset;
}
static int
butc_dissect_tc_dumpStat_flags(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpStat_flags, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpStat_flags, param);
+ return offset;
}
static int
butc_dissect_tc_dumpStat_spare1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpStat_spare1, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpStat_spare1, param);
+ return offset;
}
static int
butc_dissect_tc_dumpStat_spare2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpStat_spare2, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpStat_spare2, param);
+ return offset;
}
static int
butc_dissect_tc_dumpStat_spare3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpStat_spare3, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpStat_spare3, param);
+ return offset;
}
static int
butc_dissect_tc_dumpStat_spare4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpStat_spare4, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpStat_spare4, param);
+ return offset;
}
@@ -724,8 +724,8 @@ butc_dissect_tc_dumpStat(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tr
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_butc_tc_dumpStat);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_butc_tc_dumpStat);
}
offset=butc_dissect_tc_dumpStat_dumpID(tvb, offset, pinfo, tree, drep);
@@ -753,65 +753,65 @@ butc_dissect_tc_dumpStat(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tr
static int
butc_dissect_tc_tapeLabel_size(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeLabel_size, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeLabel_size, param);
+ return offset;
}
static int
butc_dissect_tc_tapeLabel_size_ext(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeLabel_size_ext, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeLabel_size_ext, param);
+ return offset;
}
static int
butc_dissect_tc_tapeLabel_spare1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeLabel_spare1, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeLabel_spare1, param);
+ return offset;
}
static int
butc_dissect_tc_tapeLabel_spare2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeLabel_spare2, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeLabel_spare2, param);
+ return offset;
}
static int
butc_dissect_tc_tapeLabel_spare3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeLabel_spare3, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeLabel_spare3, param);
+ return offset;
}
static int
butc_dissect_tc_tapeLabel_spare4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeLabel_spare4, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeLabel_spare4, param);
+ return offset;
}
static int
butc_dissect_tc_tapeLabel_nameLen(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeLabel_nameLen, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeLabel_nameLen, param);
+ return offset;
}
static int
butc_dissect_tc_tapeLabel_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeLabel_name, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeLabel_name, param);
+ return offset;
}
@@ -826,8 +826,8 @@ butc_dissect_tc_tapeLabel(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_t
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_butc_tc_tapeLabel);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_butc_tc_tapeLabel);
}
offset=butc_dissect_tc_tapeLabel_size(tvb, offset, pinfo, tree, drep);
@@ -853,97 +853,97 @@ butc_dissect_tc_tapeLabel(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_t
static int
butc_dissect_tc_tapeSet_id(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeSet_id, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeSet_id, param);
+ return offset;
}
static int
butc_dissect_tc_tapeSet_tapeServer(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeSet_tapeServer, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeSet_tapeServer, param);
+ return offset;
}
static int
butc_dissect_tc_tapeSet_format(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeSet_format, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeSet_format, param);
+ return offset;
}
static int
butc_dissect_tc_tapeSet_maxTapes(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeSet_maxTapes, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeSet_maxTapes, param);
+ return offset;
}
static int
butc_dissect_tc_tapeSet_a(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeSet_a, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeSet_a, param);
+ return offset;
}
static int
butc_dissect_tc_tapeSet_b(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeSet_b, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeSet_b, param);
+ return offset;
}
static int
butc_dissect_tc_tapeSet_expDate(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeSet_expDate, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeSet_expDate, param);
+ return offset;
}
static int
butc_dissect_tc_tapeSet_expType(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeSet_expType, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeSet_expType, param);
+ return offset;
}
static int
butc_dissect_tc_tapeSet_spare1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeSet_spare1, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeSet_spare1, param);
+ return offset;
}
static int
butc_dissect_tc_tapeSet_spare2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeSet_spare2, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeSet_spare2, param);
+ return offset;
}
static int
butc_dissect_tc_tapeSet_spare3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeSet_spare3, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeSet_spare3, param);
+ return offset;
}
static int
butc_dissect_tc_tapeSet_spare4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeSet_spare4, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tapeSet_spare4, param);
+ return offset;
}
@@ -958,8 +958,8 @@ butc_dissect_tc_tapeSet(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tre
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_butc_tc_tapeSet);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_butc_tc_tapeSet);
}
offset=butc_dissect_tc_tapeSet_id(tvb, offset, pinfo, tree, drep);
@@ -993,41 +993,41 @@ butc_dissect_tc_tapeSet(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tre
static int
butc_dissect_tc_tcInfo_tcVersion(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tcInfo_tcVersion, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tcInfo_tcVersion, param);
+ return offset;
}
static int
butc_dissect_tc_tcInfo_spare1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tcInfo_spare1, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tcInfo_spare1, param);
+ return offset;
}
static int
butc_dissect_tc_tcInfo_spare2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tcInfo_spare2, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tcInfo_spare2, param);
+ return offset;
}
static int
butc_dissect_tc_tcInfo_spare3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tcInfo_spare3, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tcInfo_spare3, param);
+ return offset;
}
static int
butc_dissect_tc_tcInfo_spare4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tcInfo_spare4, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_tcInfo_spare4, param);
+ return offset;
}
@@ -1042,8 +1042,8 @@ butc_dissect_tc_tcInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_butc_tc_tcInfo);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_butc_tc_tcInfo);
}
offset=butc_dissect_tc_tcInfo_tcVersion(tvb, offset, pinfo, tree, drep);
@@ -1063,31 +1063,31 @@ butc_dissect_tc_tcInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
static int
butc_dissect_tc_restoreArray_tc_restoreArray_len(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreArray_tc_restoreArray_len, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreArray_tc_restoreArray_len, param);
+ return offset;
}
static int
butc_dissect_tc_restoreArray_tc_restoreArray_val(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_tc_restoreDesc(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreArray_tc_restoreArray_val, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_tc_restoreDesc(tvb, offset, pinfo, tree, drep, hf_butc_tc_restoreArray_tc_restoreArray_val, param);
+ return offset;
}
static int
ptr_butc_dissect_tc_restoreArray_tc_restoreArray_val(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_tc_restoreArray_tc_restoreArray_val, NDR_POINTER_PTR, "tc_restoreArray_val", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_tc_restoreArray_tc_restoreArray_val, NDR_POINTER_PTR, "tc_restoreArray_val", -1);
+ return offset;
}
static int
ucarray_ptr_butc_dissect_tc_restoreArray_tc_restoreArray_val(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, ptr_butc_dissect_tc_restoreArray_tc_restoreArray_val);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, ptr_butc_dissect_tc_restoreArray_tc_restoreArray_val);
+ return offset;
}
@@ -1102,8 +1102,8 @@ butc_dissect_tc_restoreArray(tvbuff_t *tvb, int offset, packet_info *pinfo, prot
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_butc_tc_restoreArray);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_butc_tc_restoreArray);
}
offset=butc_dissect_tc_restoreArray_tc_restoreArray_len(tvb, offset, pinfo, tree, drep);
@@ -1117,31 +1117,31 @@ butc_dissect_tc_restoreArray(tvbuff_t *tvb, int offset, packet_info *pinfo, prot
static int
butc_dissect_tc_dumpArray_tc_dumpArray_len(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpArray_tc_dumpArray_len, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpArray_tc_dumpArray_len, param);
+ return offset;
}
static int
butc_dissect_tc_dumpArray_tc_dumpArray(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_tc_dumpDesc(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpArray_tc_dumpArray, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_tc_dumpDesc(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpArray_tc_dumpArray, param);
+ return offset;
}
static int
ptr_butc_dissect_tc_dumpArray_tc_dumpArray(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_tc_dumpArray_tc_dumpArray, NDR_POINTER_PTR, "tc_dumpArray", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_tc_dumpArray_tc_dumpArray, NDR_POINTER_PTR, "tc_dumpArray", -1);
+ return offset;
}
static int
ucarray_ptr_butc_dissect_tc_dumpArray_tc_dumpArray(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, ptr_butc_dissect_tc_dumpArray_tc_dumpArray);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, ptr_butc_dissect_tc_dumpArray_tc_dumpArray);
+ return offset;
}
@@ -1156,8 +1156,8 @@ butc_dissect_tc_dumpArray(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_t
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_butc_tc_dumpArray);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_butc_tc_dumpArray);
}
offset=butc_dissect_tc_dumpArray_tc_dumpArray_len(tvb, offset, pinfo, tree, drep);
@@ -1171,81 +1171,81 @@ butc_dissect_tc_dumpArray(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_t
static int
butc_dissect_tc_dumpInterface_dumpPath(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpInterface_dumpPath, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpInterface_dumpPath, param);
+ return offset;
}
static int
butc_dissect_tc_dumpInterface_volumeSetName(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpInterface_volumeSetName, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpInterface_volumeSetName, param);
+ return offset;
}
static int
butc_dissect_tc_dumpInterface_dumpName(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpInterface_dumpName, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpInterface_dumpName, param);
+ return offset;
}
static int
butc_dissect_tc_dumpInterface_tapeSet(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_tc_tapeSet(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpInterface_tapeSet, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_tc_tapeSet(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpInterface_tapeSet, param);
+ return offset;
}
static int
butc_dissect_tc_dumpInterface_parentDumpId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpInterface_parentDumpId, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpInterface_parentDumpId, param);
+ return offset;
}
static int
butc_dissect_tc_dumpInterface_dumpLevel(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpInterface_dumpLevel, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpInterface_dumpLevel, param);
+ return offset;
}
static int
butc_dissect_tc_dumpInterface_spare1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpInterface_spare1, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpInterface_spare1, param);
+ return offset;
}
static int
butc_dissect_tc_dumpInterface_spare2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpInterface_spare2, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpInterface_spare2, param);
+ return offset;
}
static int
butc_dissect_tc_dumpInterface_spare3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpInterface_spare3, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpInterface_spare3, param);
+ return offset;
}
static int
butc_dissect_tc_dumpInterface_spare4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpInterface_spare4, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_dumpInterface_spare4, param);
+ return offset;
}
@@ -1260,8 +1260,8 @@ butc_dissect_tc_dumpInterface(tvbuff_t *tvb, int offset, packet_info *pinfo, pro
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_butc_tc_dumpInterface);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_butc_tc_dumpInterface);
}
offset=butc_dissect_tc_dumpInterface_dumpPath(tvb, offset, pinfo, tree, drep);
@@ -1291,33 +1291,33 @@ butc_dissect_tc_dumpInterface(tvbuff_t *tvb, int offset, packet_info *pinfo, pro
static int
butc_dissect_tc_statusInfoSwitchVol_nKBytes(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_statusInfoSwitchVol_nKBytes, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_statusInfoSwitchVol_nKBytes, param);
+ return offset;
}
static int
butc_dissect_tc_statusInfoSwitchVol_volumeName(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_statusInfoSwitchVol_volumeName, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_butc_tc_statusInfoSwitchVol_volumeName, param);
+ return offset;
}
static int
butc_dissect_tc_statusInfoSwitchVol_volsFailed(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_statusInfoSwitchVol_volsFailed, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_int32(tvb, offset, pinfo, tree, drep, hf_butc_tc_statusInfoSwitchVol_volsFailed, param);
+ return offset;
}
static int
butc_dissect_tc_statusInfoSwitchVol_spare1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_statusInfoSwitchVol_spare1, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_statusInfoSwitchVol_spare1, param);
+ return offset;
}
@@ -1332,8 +1332,8 @@ butc_dissect_tc_statusInfoSwitchVol(tvbuff_t *tvb, int offset, packet_info *pinf
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_butc_tc_statusInfoSwitchVol);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_butc_tc_statusInfoSwitchVol);
}
offset=butc_dissect_tc_statusInfoSwitchVol_nKBytes(tvb, offset, pinfo, tree, drep);
@@ -1351,17 +1351,17 @@ butc_dissect_tc_statusInfoSwitchVol(tvbuff_t *tvb, int offset, packet_info *pinf
static int
butc_dissect_tc_statusInfoSwitchLabel_tapeLabel(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_tc_tapeLabel(tvb, offset, pinfo, tree, drep, hf_butc_tc_statusInfoSwitchLabel_tapeLabel, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_tc_tapeLabel(tvb, offset, pinfo, tree, drep, hf_butc_tc_statusInfoSwitchLabel_tapeLabel, param);
+ return offset;
}
static int
butc_dissect_tc_statusInfoSwitchLabel_spare1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_statusInfoSwitchLabel_spare1, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tc_statusInfoSwitchLabel_spare1, param);
+ return offset;
}
@@ -1376,8 +1376,8 @@ butc_dissect_tc_statusInfoSwitchLabel(tvbuff_t *tvb, int offset, packet_info *pi
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_butc_tc_statusInfoSwitchLabel);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_butc_tc_statusInfoSwitchLabel);
}
offset=butc_dissect_tc_statusInfoSwitchLabel_tapeLabel(tvb, offset, pinfo, tree, drep);
@@ -1475,69 +1475,69 @@ butc_dissect_union_tc_statusInfoSwitch(tvbuff_t *tvb, int offset, packet_info *p
proto_item *item=NULL;
proto_tree *tree=NULL;
int old_offset;
- guint32 level;
+ guint32 level = 0;
ALIGN_TO_4_BYTES;
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_text(parent_tree, tvb, offset, -1, "tc_statusInfoSwitch");
- tree=proto_item_add_subtree(item, ett_butc_tc_statusInfoSwitch);
+ item=proto_tree_add_text(parent_tree, tvb, offset, -1, "tc_statusInfoSwitch");
+ tree=proto_item_add_subtree(item, ett_butc_tc_statusInfoSwitch);
}
offset=dissect_ndr_uint32(tvb, offset, pinfo, tree,
- drep, hf_index, &level);
+ drep, hf_index, &level);
switch(level){
case TCOP_NONE:
- ALIGN_TO_4_BYTES;
- offset=butc_dissect_union_tc_statusInfoSwitch_TCOP_NONE_none(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=butc_dissect_union_tc_statusInfoSwitch_TCOP_NONE_none(tvb, offset, pinfo, tree, drep);
+ break;
case TCOP_DUMP:
- ALIGN_TO_4_BYTES;
- offset=butc_dissect_union_tc_statusInfoSwitch_TCOP_DUMP_vol(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=butc_dissect_union_tc_statusInfoSwitch_TCOP_DUMP_vol(tvb, offset, pinfo, tree, drep);
+ break;
case TCOP_RESTORE:
- ALIGN_TO_4_BYTES;
- offset=butc_dissect_union_tc_statusInfoSwitch_TCOP_RESTORE_vol(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=butc_dissect_union_tc_statusInfoSwitch_TCOP_RESTORE_vol(tvb, offset, pinfo, tree, drep);
+ break;
case TCOP_LABELTAPE:
- ALIGN_TO_4_BYTES;
- offset=butc_dissect_union_tc_statusInfoSwitch_TCOP_LABELTAPE_label(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=butc_dissect_union_tc_statusInfoSwitch_TCOP_LABELTAPE_label(tvb, offset, pinfo, tree, drep);
+ break;
case TCOP_READLABEL:
- ALIGN_TO_4_BYTES;
- offset=butc_dissect_union_tc_statusInfoSwitch_TCOP_READLABEL_label(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=butc_dissect_union_tc_statusInfoSwitch_TCOP_READLABEL_label(tvb, offset, pinfo, tree, drep);
+ break;
case TCOP_SCANTAPE:
- ALIGN_TO_4_BYTES;
- offset=butc_dissect_union_tc_statusInfoSwitch_TCOP_SCANTAPE_spare1(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=butc_dissect_union_tc_statusInfoSwitch_TCOP_SCANTAPE_spare1(tvb, offset, pinfo, tree, drep);
+ break;
case TCOP_STATUS:
- ALIGN_TO_4_BYTES;
- offset=butc_dissect_union_tc_statusInfoSwitch_TCOP_STATUS_spare2(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=butc_dissect_union_tc_statusInfoSwitch_TCOP_STATUS_spare2(tvb, offset, pinfo, tree, drep);
+ break;
case TCOP_SAVEDB:
- ALIGN_TO_4_BYTES;
- offset=butc_dissect_union_tc_statusInfoSwitch_TCOP_SAVEDB_spare3(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=butc_dissect_union_tc_statusInfoSwitch_TCOP_SAVEDB_spare3(tvb, offset, pinfo, tree, drep);
+ break;
case TCOP_RESTOREDB:
- ALIGN_TO_4_BYTES;
- offset=butc_dissect_union_tc_statusInfoSwitch_TCOP_RESTOREDB_spare4(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=butc_dissect_union_tc_statusInfoSwitch_TCOP_RESTOREDB_spare4(tvb, offset, pinfo, tree, drep);
+ break;
case TCOP_SPARE:
- ALIGN_TO_4_BYTES;
- offset=butc_dissect_union_tc_statusInfoSwitch_TCOP_SPARE_spare5(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=butc_dissect_union_tc_statusInfoSwitch_TCOP_SPARE_spare5(tvb, offset, pinfo, tree, drep);
+ break;
}
@@ -1548,65 +1548,65 @@ butc_dissect_union_tc_statusInfoSwitch(tvbuff_t *tvb, int offset, packet_info *p
static int
butc_dissect_tciStatusS_taskName(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_butc_tciStatusS_taskName, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_NameString_t(tvb, offset, pinfo, tree, drep, hf_butc_tciStatusS_taskName, param);
+ return offset;
}
static int
butc_dissect_tciStatusS_flags(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tciStatusS_flags, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tciStatusS_flags, param);
+ return offset;
}
static int
butc_dissect_tciStatusS_lastPolled(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_time_t(tvb, offset, pinfo, tree, drep, hf_butc_tciStatusS_lastPolled, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_time_t(tvb, offset, pinfo, tree, drep, hf_butc_tciStatusS_lastPolled, param);
+ return offset;
}
static int
butc_dissect_tciStatusS_info(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_union_tc_statusInfoSwitch(tvb, offset, pinfo, tree, drep, hf_butc_tciStatusS_info, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_union_tc_statusInfoSwitch(tvb, offset, pinfo, tree, drep, hf_butc_tciStatusS_info, param);
+ return offset;
}
static int
butc_dissect_tciStatusS_taskId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tciStatusS_taskId, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tciStatusS_taskId, param);
+ return offset;
}
static int
butc_dissect_tciStatusS_spare2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tciStatusS_spare2, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tciStatusS_spare2, param);
+ return offset;
}
static int
butc_dissect_tciStatusS_spare3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tciStatusS_spare3, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tciStatusS_spare3, param);
+ return offset;
}
static int
butc_dissect_tciStatusS_spare4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tciStatusS_spare4, param);
- return offset;
+ guint32 param=0;
+ offset=butc_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_butc_tciStatusS_spare4, param);
+ return offset;
}
@@ -1621,8 +1621,8 @@ butc_dissect_tciStatusS(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tre
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_butc_tciStatusS);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_butc_tciStatusS);
}
offset=butc_dissect_tciStatusS_taskName(tvb, offset, pinfo, tree, drep);
@@ -1656,7 +1656,7 @@ butc_dissect_BUTC_PerformDump_tcdiPtr(tvbuff_t *tvb, int offset, packet_info *pi
static int
ref_butc_dissect_BUTC_PerformDump_tcdiPtr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_PerformDump_tcdiPtr, NDR_POINTER_REF, "tcdiPtr", -1);
+ offset=dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_PerformDump_tcdiPtr, NDR_POINTER_REF, "tcdiPtr", -1);
return offset;
}
@@ -1671,7 +1671,7 @@ butc_dissect_BUTC_PerformDump_dumps(tvbuff_t *tvb, int offset, packet_info *pinf
static int
ref_butc_dissect_BUTC_PerformDump_dumps(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_PerformDump_dumps, NDR_POINTER_REF, "dumps", -1);
+ offset=dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_PerformDump_dumps, NDR_POINTER_REF, "dumps", -1);
return offset;
}
@@ -1686,7 +1686,7 @@ butc_dissect_BUTC_PerformDump_dumpID(tvbuff_t *tvb, int offset, packet_info *pin
static int
ref_butc_dissect_BUTC_PerformDump_dumpID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_PerformDump_dumpID, NDR_POINTER_REF, "dumpID", -1);
+ offset=dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_PerformDump_dumpID, NDR_POINTER_REF, "dumpID", -1);
return offset;
}
@@ -1694,9 +1694,11 @@ ref_butc_dissect_BUTC_PerformDump_dumpID(tvbuff_t *tvb, int offset, packet_info
static int
butc_dissect_BUTC_PerformDump_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_butc_dissect_BUTC_PerformDump_tcdiPtr(tvb, offset, pinfo, tree, drep);
+ offset=ref_butc_dissect_BUTC_PerformDump_tcdiPtr(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ref_butc_dissect_BUTC_PerformDump_dumps(tvb, offset, pinfo, tree, drep);
+ offset=ref_butc_dissect_BUTC_PerformDump_dumps(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -1705,7 +1707,8 @@ butc_dissect_BUTC_PerformDump_request(tvbuff_t *tvb _U_, int offset _U_, packet_
static int
butc_dissect_BUTC_PerformDump_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_butc_dissect_BUTC_PerformDump_dumpID(tvb, offset, pinfo, tree, drep);
+ offset=ref_butc_dissect_BUTC_PerformDump_dumpID(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_butc_rc, NULL);
@@ -1723,7 +1726,7 @@ butc_dissect_BUTC_PerformRestore_dumpSetName(tvbuff_t *tvb, int offset, packet_i
static int
ptr_butc_dissect_BUTC_PerformRestore_dumpSetName(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_PerformRestore_dumpSetName, NDR_POINTER_PTR, "dumpSetName", -1);
+ offset=dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_PerformRestore_dumpSetName, NDR_POINTER_PTR, "dumpSetName", -1);
return offset;
}
@@ -1738,7 +1741,7 @@ butc_dissect_BUTC_PerformRestore_restores(tvbuff_t *tvb, int offset, packet_info
static int
ref_butc_dissect_BUTC_PerformRestore_restores(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_PerformRestore_restores, NDR_POINTER_REF, "restores", -1);
+ offset=dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_PerformRestore_restores, NDR_POINTER_REF, "restores", -1);
return offset;
}
@@ -1753,7 +1756,7 @@ butc_dissect_BUTC_PerformRestore_dumpID(tvbuff_t *tvb, int offset, packet_info *
static int
ref_butc_dissect_BUTC_PerformRestore_dumpID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_PerformRestore_dumpID, NDR_POINTER_REF, "dumpID", -1);
+ offset=dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_PerformRestore_dumpID, NDR_POINTER_REF, "dumpID", -1);
return offset;
}
@@ -1761,9 +1764,11 @@ ref_butc_dissect_BUTC_PerformRestore_dumpID(tvbuff_t *tvb, int offset, packet_in
static int
butc_dissect_BUTC_PerformRestore_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ptr_butc_dissect_BUTC_PerformRestore_dumpSetName(tvb, offset, pinfo, tree, drep);
+ offset=ptr_butc_dissect_BUTC_PerformRestore_dumpSetName(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ref_butc_dissect_BUTC_PerformRestore_restores(tvb, offset, pinfo, tree, drep);
+ offset=ref_butc_dissect_BUTC_PerformRestore_restores(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -1772,7 +1777,8 @@ butc_dissect_BUTC_PerformRestore_request(tvbuff_t *tvb _U_, int offset _U_, pack
static int
butc_dissect_BUTC_PerformRestore_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_butc_dissect_BUTC_PerformRestore_dumpID(tvb, offset, pinfo, tree, drep);
+ offset=ref_butc_dissect_BUTC_PerformRestore_dumpID(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_butc_rc, NULL);
@@ -1791,7 +1797,8 @@ butc_dissect_BUTC_AbortDump_dumpID(tvbuff_t *tvb, int offset, packet_info *pinfo
static int
butc_dissect_BUTC_AbortDump_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=butc_dissect_BUTC_AbortDump_dumpID(tvb, offset, pinfo, tree, drep);
+ offset=butc_dissect_BUTC_AbortDump_dumpID(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -1816,7 +1823,7 @@ butc_dissect_BUTC_LabelTape_label(tvbuff_t *tvb, int offset, packet_info *pinfo,
static int
ref_butc_dissect_BUTC_LabelTape_label(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_LabelTape_label, NDR_POINTER_REF, "label", -1);
+ offset=dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_LabelTape_label, NDR_POINTER_REF, "label", -1);
return offset;
}
@@ -1831,7 +1838,7 @@ butc_dissect_BUTC_LabelTape_taskId(tvbuff_t *tvb, int offset, packet_info *pinfo
static int
ref_butc_dissect_BUTC_LabelTape_taskId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_LabelTape_taskId, NDR_POINTER_REF, "taskId", -1);
+ offset=dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_LabelTape_taskId, NDR_POINTER_REF, "taskId", -1);
return offset;
}
@@ -1839,7 +1846,8 @@ ref_butc_dissect_BUTC_LabelTape_taskId(tvbuff_t *tvb, int offset, packet_info *p
static int
butc_dissect_BUTC_LabelTape_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_butc_dissect_BUTC_LabelTape_label(tvb, offset, pinfo, tree, drep);
+ offset=ref_butc_dissect_BUTC_LabelTape_label(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -1848,7 +1856,8 @@ butc_dissect_BUTC_LabelTape_request(tvbuff_t *tvb _U_, int offset _U_, packet_in
static int
butc_dissect_BUTC_LabelTape_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_butc_dissect_BUTC_LabelTape_taskId(tvb, offset, pinfo, tree, drep);
+ offset=ref_butc_dissect_BUTC_LabelTape_taskId(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_butc_rc, NULL);
@@ -1866,7 +1875,7 @@ butc_dissect_BUTC_ReadLabel_taskId(tvbuff_t *tvb, int offset, packet_info *pinfo
static int
ref_butc_dissect_BUTC_ReadLabel_taskId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_ReadLabel_taskId, NDR_POINTER_REF, "taskId", -1);
+ offset=dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_ReadLabel_taskId, NDR_POINTER_REF, "taskId", -1);
return offset;
}
@@ -1881,7 +1890,8 @@ butc_dissect_BUTC_ReadLabel_request(tvbuff_t *tvb _U_, int offset _U_, packet_in
static int
butc_dissect_BUTC_ReadLabel_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_butc_dissect_BUTC_ReadLabel_taskId(tvb, offset, pinfo, tree, drep);
+ offset=ref_butc_dissect_BUTC_ReadLabel_taskId(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_butc_rc, NULL);
@@ -1907,7 +1917,7 @@ butc_dissect_BUTC_ScanDumps_taskId(tvbuff_t *tvb, int offset, packet_info *pinfo
static int
ref_butc_dissect_BUTC_ScanDumps_taskId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_ScanDumps_taskId, NDR_POINTER_REF, "taskId", -1);
+ offset=dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_ScanDumps_taskId, NDR_POINTER_REF, "taskId", -1);
return offset;
}
@@ -1915,7 +1925,8 @@ ref_butc_dissect_BUTC_ScanDumps_taskId(tvbuff_t *tvb, int offset, packet_info *p
static int
butc_dissect_BUTC_ScanDumps_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=butc_dissect_BUTC_ScanDumps_addDbFlag(tvb, offset, pinfo, tree, drep);
+ offset=butc_dissect_BUTC_ScanDumps_addDbFlag(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -1924,7 +1935,8 @@ butc_dissect_BUTC_ScanDumps_request(tvbuff_t *tvb _U_, int offset _U_, packet_in
static int
butc_dissect_BUTC_ScanDumps_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_butc_dissect_BUTC_ScanDumps_taskId(tvb, offset, pinfo, tree, drep);
+ offset=ref_butc_dissect_BUTC_ScanDumps_taskId(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_butc_rc, NULL);
@@ -1942,7 +1954,7 @@ butc_dissect_BUTC_TCInfo_tciptr(tvbuff_t *tvb, int offset, packet_info *pinfo, p
static int
ref_butc_dissect_BUTC_TCInfo_tciptr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_TCInfo_tciptr, NDR_POINTER_REF, "tciptr", -1);
+ offset=dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_TCInfo_tciptr, NDR_POINTER_REF, "tciptr", -1);
return offset;
}
@@ -1957,7 +1969,8 @@ butc_dissect_BUTC_TCInfo_request(tvbuff_t *tvb _U_, int offset _U_, packet_info
static int
butc_dissect_BUTC_TCInfo_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_butc_dissect_BUTC_TCInfo_tciptr(tvb, offset, pinfo, tree, drep);
+ offset=ref_butc_dissect_BUTC_TCInfo_tciptr(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_butc_rc, NULL);
@@ -1975,7 +1988,7 @@ butc_dissect_BUTC_SaveDb_taskId(tvbuff_t *tvb, int offset, packet_info *pinfo, p
static int
ref_butc_dissect_BUTC_SaveDb_taskId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_SaveDb_taskId, NDR_POINTER_REF, "taskId", -1);
+ offset=dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_SaveDb_taskId, NDR_POINTER_REF, "taskId", -1);
return offset;
}
@@ -1990,7 +2003,8 @@ butc_dissect_BUTC_SaveDb_request(tvbuff_t *tvb _U_, int offset _U_, packet_info
static int
butc_dissect_BUTC_SaveDb_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_butc_dissect_BUTC_SaveDb_taskId(tvb, offset, pinfo, tree, drep);
+ offset=ref_butc_dissect_BUTC_SaveDb_taskId(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_butc_rc, NULL);
@@ -2008,7 +2022,7 @@ butc_dissect_BUTC_RestoreDb_taskId(tvbuff_t *tvb, int offset, packet_info *pinfo
static int
ref_butc_dissect_BUTC_RestoreDb_taskId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_RestoreDb_taskId, NDR_POINTER_REF, "taskId", -1);
+ offset=dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_RestoreDb_taskId, NDR_POINTER_REF, "taskId", -1);
return offset;
}
@@ -2023,7 +2037,8 @@ butc_dissect_BUTC_RestoreDb_request(tvbuff_t *tvb _U_, int offset _U_, packet_in
static int
butc_dissect_BUTC_RestoreDb_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_butc_dissect_BUTC_RestoreDb_taskId(tvb, offset, pinfo, tree, drep);
+ offset=ref_butc_dissect_BUTC_RestoreDb_taskId(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_butc_rc, NULL);
@@ -2042,7 +2057,8 @@ butc_dissect_BUTC_EndStatus_taskId(tvbuff_t *tvb, int offset, packet_info *pinfo
static int
butc_dissect_BUTC_EndStatus_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=butc_dissect_BUTC_EndStatus_taskId(tvb, offset, pinfo, tree, drep);
+ offset=butc_dissect_BUTC_EndStatus_taskId(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -2075,7 +2091,7 @@ butc_dissect_BUTC_GetStatus_statusPtr(tvbuff_t *tvb, int offset, packet_info *pi
static int
ref_butc_dissect_BUTC_GetStatus_statusPtr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_GetStatus_statusPtr, NDR_POINTER_REF, "statusPtr", -1);
+ offset=dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_GetStatus_statusPtr, NDR_POINTER_REF, "statusPtr", -1);
return offset;
}
@@ -2083,7 +2099,8 @@ ref_butc_dissect_BUTC_GetStatus_statusPtr(tvbuff_t *tvb, int offset, packet_info
static int
butc_dissect_BUTC_GetStatus_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=butc_dissect_BUTC_GetStatus_taskId(tvb, offset, pinfo, tree, drep);
+ offset=butc_dissect_BUTC_GetStatus_taskId(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -2092,7 +2109,8 @@ butc_dissect_BUTC_GetStatus_request(tvbuff_t *tvb _U_, int offset _U_, packet_in
static int
butc_dissect_BUTC_GetStatus_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_butc_dissect_BUTC_GetStatus_statusPtr(tvb, offset, pinfo, tree, drep);
+ offset=ref_butc_dissect_BUTC_GetStatus_statusPtr(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_butc_rc, NULL);
@@ -2111,7 +2129,8 @@ butc_dissect_BUTC_RequestAbort_taskId(tvbuff_t *tvb, int offset, packet_info *pi
static int
butc_dissect_BUTC_RequestAbort_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=butc_dissect_BUTC_RequestAbort_taskId(tvb, offset, pinfo, tree, drep);
+ offset=butc_dissect_BUTC_RequestAbort_taskId(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -2136,7 +2155,7 @@ butc_dissect_BUTC_ScanStatus_taskId(tvbuff_t *tvb, int offset, packet_info *pinf
static int
ref_butc_dissect_BUTC_ScanStatus_taskId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_ScanStatus_taskId, NDR_POINTER_REF, "taskId", -1);
+ offset=dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_ScanStatus_taskId, NDR_POINTER_REF, "taskId", -1);
return offset;
}
@@ -2151,7 +2170,7 @@ butc_dissect_BUTC_ScanStatus_statusPtr(tvbuff_t *tvb, int offset, packet_info *p
static int
ref_butc_dissect_BUTC_ScanStatus_statusPtr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_ScanStatus_statusPtr, NDR_POINTER_REF, "statusPtr", -1);
+ offset=dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_ScanStatus_statusPtr, NDR_POINTER_REF, "statusPtr", -1);
return offset;
}
@@ -2166,7 +2185,7 @@ butc_dissect_BUTC_ScanStatus_flags(tvbuff_t *tvb, int offset, packet_info *pinfo
static int
ref_butc_dissect_BUTC_ScanStatus_flags(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_ScanStatus_flags, NDR_POINTER_REF, "flags", -1);
+ offset=dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, butc_dissect_BUTC_ScanStatus_flags, NDR_POINTER_REF, "flags", -1);
return offset;
}
@@ -2174,9 +2193,11 @@ ref_butc_dissect_BUTC_ScanStatus_flags(tvbuff_t *tvb, int offset, packet_info *p
static int
butc_dissect_BUTC_ScanStatus_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_butc_dissect_BUTC_ScanStatus_taskId(tvb, offset, pinfo, tree, drep);
+ offset=ref_butc_dissect_BUTC_ScanStatus_taskId(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ref_butc_dissect_BUTC_ScanStatus_flags(tvb, offset, pinfo, tree, drep);
+ offset=ref_butc_dissect_BUTC_ScanStatus_flags(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -2185,11 +2206,14 @@ butc_dissect_BUTC_ScanStatus_request(tvbuff_t *tvb _U_, int offset _U_, packet_i
static int
butc_dissect_BUTC_ScanStatus_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_butc_dissect_BUTC_ScanStatus_taskId(tvb, offset, pinfo, tree, drep);
+ offset=ref_butc_dissect_BUTC_ScanStatus_taskId(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ref_butc_dissect_BUTC_ScanStatus_statusPtr(tvb, offset, pinfo, tree, drep);
+ offset=ref_butc_dissect_BUTC_ScanStatus_statusPtr(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ref_butc_dissect_BUTC_ScanStatus_flags(tvb, offset, pinfo, tree, drep);
+ offset=ref_butc_dissect_BUTC_ScanStatus_flags(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_butc_rc, NULL);
@@ -2224,625 +2248,625 @@ proto_register_butc(void)
/* INCLUDED FILE : ETH_HFARR */
- { &hf_butc_opnum,
- { "Operation", "butc.opnum", FT_UINT16, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_rc,
- { "Return code", "butc.rc", FT_UINT32, BASE_HEX,
- VALS(NT_errors), 0,
- NULL, HFILL }},
-
- { &hf_butc_Restore_flags_TC_RESTORE_CREATE,
- { "TC_RESTORE_CREATE", "butc.Restore_flags.TC_RESTORE_CREATE", FT_BOOLEAN, 32,
- TFS(&TC_RESTORE_CREATE_tfs), 0x00000001,
- NULL, HFILL }},
-
- { &hf_butc_Restore_flags_TC_RESTORE_INCR,
- { "TC_RESTORE_INCR", "butc.Restore_flags.TC_RESTORE_INCR", FT_BOOLEAN, 32,
- TFS(&TC_RESTORE_INCR_tfs), 0x00000002,
- NULL, HFILL }},
-
- { &hf_butc_afsNetAddr_type,
- { "type", "butc.afsNetAddr.type", FT_UINT16, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_afsNetAddr_data,
- { "data", "butc.afsNetAddr.data", FT_UINT8, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpDesc_vid,
- { "vid", "butc.tc_dumpDesc.vid", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpDesc_name,
- { "name", "butc.tc_dumpDesc.name", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpDesc_partition,
- { "partition", "butc.tc_dumpDesc.partition", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpDesc_date,
- { "date", "butc.tc_dumpDesc.date", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpDesc_cloneDate,
- { "cloneDate", "butc.tc_dumpDesc.cloneDate", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpDesc_hostAddr,
- { "hostAddr", "butc.tc_dumpDesc.hostAddr", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpDesc_spare1,
- { "spare1", "butc.tc_dumpDesc.spare1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpDesc_spare2,
- { "spare2", "butc.tc_dumpDesc.spare2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpDesc_spare3,
- { "spare3", "butc.tc_dumpDesc.spare3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpDesc_spare4,
- { "spare4", "butc.tc_dumpDesc.spare4", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_restoreDesc_frag,
- { "frag", "butc.tc_restoreDesc.frag", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_restoreDesc_tapeName,
- { "tapeName", "butc.tc_restoreDesc.tapeName", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_restoreDesc_position,
- { "position", "butc.tc_restoreDesc.position", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_restoreDesc_origVid,
- { "origVid", "butc.tc_restoreDesc.origVid", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_restoreDesc_vid,
- { "vid", "butc.tc_restoreDesc.vid", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_restoreDesc_partition,
- { "partition", "butc.tc_restoreDesc.partition", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_restoreDesc_flags,
- { "flags", "butc.tc_restoreDesc.flags", FT_UINT32, BASE_HEX,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_restoreDesc_hostAddr,
- { "hostAddr", "butc.tc_restoreDesc.hostAddr", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_restoreDesc_realDumpId,
- { "realDumpId", "butc.tc_restoreDesc.realDumpId", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_restoreDesc_spare2,
- { "spare2", "butc.tc_restoreDesc.spare2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_restoreDesc_spare3,
- { "spare3", "butc.tc_restoreDesc.spare3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_restoreDesc_spare4,
- { "spare4", "butc.tc_restoreDesc.spare4", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_restoreDesc_oldName,
- { "oldName", "butc.tc_restoreDesc.oldName", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_restoreDesc_newName,
- { "newName", "butc.tc_restoreDesc.newName", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpStat_dumpID,
- { "dumpID", "butc.tc_dumpStat.dumpID", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpStat_bytesDumped,
- { "bytesDumped", "butc.tc_dumpStat.bytesDumped", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpStat_volumeBeingDumped,
- { "volumeBeingDumped", "butc.tc_dumpStat.volumeBeingDumped", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpStat_numVolErrs,
- { "numVolErrs", "butc.tc_dumpStat.numVolErrs", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpStat_flags,
- { "flags", "butc.tc_dumpStat.flags", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpStat_spare1,
- { "spare1", "butc.tc_dumpStat.spare1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpStat_spare2,
- { "spare2", "butc.tc_dumpStat.spare2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpStat_spare3,
- { "spare3", "butc.tc_dumpStat.spare3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpStat_spare4,
- { "spare4", "butc.tc_dumpStat.spare4", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_tapeLabel_size,
- { "size", "butc.tc_tapeLabel.size", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_tapeLabel_size_ext,
- { "size_ext", "butc.tc_tapeLabel.size_ext", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_tapeLabel_spare1,
- { "spare1", "butc.tc_tapeLabel.spare1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_tapeLabel_spare2,
- { "spare2", "butc.tc_tapeLabel.spare2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_tapeLabel_spare3,
- { "spare3", "butc.tc_tapeLabel.spare3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_tapeLabel_spare4,
- { "spare4", "butc.tc_tapeLabel.spare4", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_tapeLabel_nameLen,
- { "nameLen", "butc.tc_tapeLabel.nameLen", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_tapeLabel_name,
- { "name", "butc.tc_tapeLabel.name", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_tapeSet_id,
- { "id", "butc.tc_tapeSet.id", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_tapeSet_tapeServer,
- { "tapeServer", "butc.tc_tapeSet.tapeServer", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_tapeSet_format,
- { "format", "butc.tc_tapeSet.format", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_tapeSet_maxTapes,
- { "maxTapes", "butc.tc_tapeSet.maxTapes", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_tapeSet_a,
- { "a", "butc.tc_tapeSet.a", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_tapeSet_b,
- { "b", "butc.tc_tapeSet.b", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_tapeSet_expDate,
- { "expDate", "butc.tc_tapeSet.expDate", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_tapeSet_expType,
- { "expType", "butc.tc_tapeSet.expType", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_tapeSet_spare1,
- { "spare1", "butc.tc_tapeSet.spare1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_tapeSet_spare2,
- { "spare2", "butc.tc_tapeSet.spare2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_tapeSet_spare3,
- { "spare3", "butc.tc_tapeSet.spare3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_tapeSet_spare4,
- { "spare4", "butc.tc_tapeSet.spare4", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_tcInfo_tcVersion,
- { "tcVersion", "butc.tc_tcInfo.tcVersion", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_tcInfo_spare1,
- { "spare1", "butc.tc_tcInfo.spare1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_tcInfo_spare2,
- { "spare2", "butc.tc_tcInfo.spare2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_tcInfo_spare3,
- { "spare3", "butc.tc_tcInfo.spare3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_tcInfo_spare4,
- { "spare4", "butc.tc_tcInfo.spare4", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_restoreArray_tc_restoreArray_len,
- { "tc_restoreArray_len", "butc.tc_restoreArray.tc_restoreArray_len", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_restoreArray_tc_restoreArray_val,
- { "tc_restoreArray_val", "butc.tc_restoreArray.tc_restoreArray_val", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpArray_tc_dumpArray_len,
- { "tc_dumpArray_len", "butc.tc_dumpArray.tc_dumpArray_len", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpArray_tc_dumpArray,
- { "tc_dumpArray", "butc.tc_dumpArray.tc_dumpArray", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpInterface_dumpPath,
- { "dumpPath", "butc.tc_dumpInterface.dumpPath", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpInterface_volumeSetName,
- { "volumeSetName", "butc.tc_dumpInterface.volumeSetName", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpInterface_dumpName,
- { "dumpName", "butc.tc_dumpInterface.dumpName", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpInterface_tapeSet,
- { "tapeSet", "butc.tc_dumpInterface.tapeSet", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpInterface_parentDumpId,
- { "parentDumpId", "butc.tc_dumpInterface.parentDumpId", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpInterface_dumpLevel,
- { "dumpLevel", "butc.tc_dumpInterface.dumpLevel", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpInterface_spare1,
- { "spare1", "butc.tc_dumpInterface.spare1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpInterface_spare2,
- { "spare2", "butc.tc_dumpInterface.spare2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpInterface_spare3,
- { "spare3", "butc.tc_dumpInterface.spare3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_dumpInterface_spare4,
- { "spare4", "butc.tc_dumpInterface.spare4", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_statusInfoSwitchVol_nKBytes,
- { "nKBytes", "butc.tc_statusInfoSwitchVol.nKBytes", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_statusInfoSwitchVol_volumeName,
- { "volumeName", "butc.tc_statusInfoSwitchVol.volumeName", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_statusInfoSwitchVol_volsFailed,
- { "volsFailed", "butc.tc_statusInfoSwitchVol.volsFailed", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_statusInfoSwitchVol_spare1,
- { "spare1", "butc.tc_statusInfoSwitchVol.spare1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_statusInfoSwitchLabel_tapeLabel,
- { "tapeLabel", "butc.tc_statusInfoSwitchLabel.tapeLabel", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_statusInfoSwitchLabel_spare1,
- { "spare1", "butc.tc_statusInfoSwitchLabel.spare1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_statusInfoSwitch_TCOP_NONE_none,
- { "none", "butc.tc_statusInfoSwitch.none", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_statusInfoSwitch_TCOP_DUMP_vol,
- { "vol", "butc.tc_statusInfoSwitch.vol", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_statusInfoSwitch_TCOP_RESTORE_vol,
- { "vol", "butc.tc_statusInfoSwitch.vol", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_statusInfoSwitch_TCOP_LABELTAPE_label,
- { "label", "butc.tc_statusInfoSwitch.label", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_statusInfoSwitch_TCOP_READLABEL_label,
- { "label", "butc.tc_statusInfoSwitch.label", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_statusInfoSwitch_TCOP_SCANTAPE_spare1,
- { "spare1", "butc.tc_statusInfoSwitch.spare1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_statusInfoSwitch_TCOP_STATUS_spare2,
- { "spare2", "butc.tc_statusInfoSwitch.spare2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_statusInfoSwitch_TCOP_SAVEDB_spare3,
- { "spare3", "butc.tc_statusInfoSwitch.spare3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_statusInfoSwitch_TCOP_RESTOREDB_spare4,
- { "spare4", "butc.tc_statusInfoSwitch.spare4", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tc_statusInfoSwitch_TCOP_SPARE_spare5,
- { "spare5", "butc.tc_statusInfoSwitch.spare5", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tciStatusS_taskName,
- { "taskName", "butc.tciStatusS.taskName", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tciStatusS_flags,
- { "flags", "butc.tciStatusS.flags", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tciStatusS_lastPolled,
- { "lastPolled", "butc.tciStatusS.lastPolled", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tciStatusS_info,
- { "info", "butc.tciStatusS.info", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tciStatusS_taskId,
- { "taskId", "butc.tciStatusS.taskId", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tciStatusS_spare2,
- { "spare2", "butc.tciStatusS.spare2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tciStatusS_spare3,
- { "spare3", "butc.tciStatusS.spare3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_tciStatusS_spare4,
- { "spare4", "butc.tciStatusS.spare4", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_BUTC_PerformDump_tcdiPtr,
- { "tcdiPtr", "butc.BUTC_PerformDump.tcdiPtr", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_BUTC_PerformDump_dumps,
- { "dumps", "butc.BUTC_PerformDump.dumps", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_BUTC_PerformDump_dumpID,
- { "dumpID", "butc.BUTC_PerformDump.dumpID", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_BUTC_PerformRestore_dumpSetName,
- { "dumpSetName", "butc.BUTC_PerformRestore.dumpSetName", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_BUTC_PerformRestore_restores,
- { "restores", "butc.BUTC_PerformRestore.restores", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_BUTC_PerformRestore_dumpID,
- { "dumpID", "butc.BUTC_PerformRestore.dumpID", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_BUTC_AbortDump_dumpID,
- { "dumpID", "butc.BUTC_AbortDump.dumpID", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_BUTC_LabelTape_label,
- { "label", "butc.BUTC_LabelTape.label", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_BUTC_LabelTape_taskId,
- { "taskId", "butc.BUTC_LabelTape.taskId", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_BUTC_ReadLabel_taskId,
- { "taskId", "butc.BUTC_ReadLabel.taskId", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_BUTC_ScanDumps_addDbFlag,
- { "addDbFlag", "butc.BUTC_ScanDumps.addDbFlag", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_BUTC_ScanDumps_taskId,
- { "taskId", "butc.BUTC_ScanDumps.taskId", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_BUTC_TCInfo_tciptr,
- { "tciptr", "butc.BUTC_TCInfo.tciptr", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_BUTC_SaveDb_taskId,
- { "taskId", "butc.BUTC_SaveDb.taskId", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_BUTC_RestoreDb_taskId,
- { "taskId", "butc.BUTC_RestoreDb.taskId", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_BUTC_EndStatus_taskId,
- { "taskId", "butc.BUTC_EndStatus.taskId", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_BUTC_GetStatus_taskId,
- { "taskId", "butc.BUTC_GetStatus.taskId", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_BUTC_GetStatus_statusPtr,
- { "statusPtr", "butc.BUTC_GetStatus.statusPtr", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_BUTC_RequestAbort_taskId,
- { "taskId", "butc.BUTC_RequestAbort.taskId", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_BUTC_ScanStatus_taskId,
- { "taskId", "butc.BUTC_ScanStatus.taskId", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_BUTC_ScanStatus_statusPtr,
- { "statusPtr", "butc.BUTC_ScanStatus.statusPtr", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_butc_BUTC_ScanStatus_flags,
- { "flags", "butc.BUTC_ScanStatus.flags", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
+ { &hf_butc_opnum,
+ { "Operation", "butc.opnum", FT_UINT16, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_rc,
+ { "Return code", "butc.rc", FT_UINT32, BASE_HEX,
+ VALS(NT_errors), 0,
+ NULL, HFILL }},
+
+ { &hf_butc_Restore_flags_TC_RESTORE_CREATE,
+ { "TC_RESTORE_CREATE", "butc.Restore_flags.TC_RESTORE_CREATE", FT_BOOLEAN, 32,
+ TFS(&TC_RESTORE_CREATE_tfs), 0x00000001,
+ NULL, HFILL }},
+
+ { &hf_butc_Restore_flags_TC_RESTORE_INCR,
+ { "TC_RESTORE_INCR", "butc.Restore_flags.TC_RESTORE_INCR", FT_BOOLEAN, 32,
+ TFS(&TC_RESTORE_INCR_tfs), 0x00000002,
+ NULL, HFILL }},
+
+ { &hf_butc_afsNetAddr_type,
+ { "type", "butc.afsNetAddr.type", FT_UINT16, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_afsNetAddr_data,
+ { "data", "butc.afsNetAddr.data", FT_UINT8, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpDesc_vid,
+ { "vid", "butc.tc_dumpDesc.vid", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpDesc_name,
+ { "name", "butc.tc_dumpDesc.name", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpDesc_partition,
+ { "partition", "butc.tc_dumpDesc.partition", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpDesc_date,
+ { "date", "butc.tc_dumpDesc.date", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpDesc_cloneDate,
+ { "cloneDate", "butc.tc_dumpDesc.cloneDate", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpDesc_hostAddr,
+ { "hostAddr", "butc.tc_dumpDesc.hostAddr", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpDesc_spare1,
+ { "spare1", "butc.tc_dumpDesc.spare1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpDesc_spare2,
+ { "spare2", "butc.tc_dumpDesc.spare2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpDesc_spare3,
+ { "spare3", "butc.tc_dumpDesc.spare3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpDesc_spare4,
+ { "spare4", "butc.tc_dumpDesc.spare4", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_restoreDesc_frag,
+ { "frag", "butc.tc_restoreDesc.frag", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_restoreDesc_tapeName,
+ { "tapeName", "butc.tc_restoreDesc.tapeName", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_restoreDesc_position,
+ { "position", "butc.tc_restoreDesc.position", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_restoreDesc_origVid,
+ { "origVid", "butc.tc_restoreDesc.origVid", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_restoreDesc_vid,
+ { "vid", "butc.tc_restoreDesc.vid", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_restoreDesc_partition,
+ { "partition", "butc.tc_restoreDesc.partition", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_restoreDesc_flags,
+ { "flags", "butc.tc_restoreDesc.flags", FT_UINT32, BASE_HEX,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_restoreDesc_hostAddr,
+ { "hostAddr", "butc.tc_restoreDesc.hostAddr", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_restoreDesc_realDumpId,
+ { "realDumpId", "butc.tc_restoreDesc.realDumpId", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_restoreDesc_spare2,
+ { "spare2", "butc.tc_restoreDesc.spare2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_restoreDesc_spare3,
+ { "spare3", "butc.tc_restoreDesc.spare3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_restoreDesc_spare4,
+ { "spare4", "butc.tc_restoreDesc.spare4", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_restoreDesc_oldName,
+ { "oldName", "butc.tc_restoreDesc.oldName", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_restoreDesc_newName,
+ { "newName", "butc.tc_restoreDesc.newName", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpStat_dumpID,
+ { "dumpID", "butc.tc_dumpStat.dumpID", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpStat_bytesDumped,
+ { "bytesDumped", "butc.tc_dumpStat.bytesDumped", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpStat_volumeBeingDumped,
+ { "volumeBeingDumped", "butc.tc_dumpStat.volumeBeingDumped", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpStat_numVolErrs,
+ { "numVolErrs", "butc.tc_dumpStat.numVolErrs", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpStat_flags,
+ { "flags", "butc.tc_dumpStat.flags", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpStat_spare1,
+ { "spare1", "butc.tc_dumpStat.spare1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpStat_spare2,
+ { "spare2", "butc.tc_dumpStat.spare2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpStat_spare3,
+ { "spare3", "butc.tc_dumpStat.spare3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpStat_spare4,
+ { "spare4", "butc.tc_dumpStat.spare4", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_tapeLabel_size,
+ { "size", "butc.tc_tapeLabel.size", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_tapeLabel_size_ext,
+ { "size_ext", "butc.tc_tapeLabel.size_ext", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_tapeLabel_spare1,
+ { "spare1", "butc.tc_tapeLabel.spare1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_tapeLabel_spare2,
+ { "spare2", "butc.tc_tapeLabel.spare2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_tapeLabel_spare3,
+ { "spare3", "butc.tc_tapeLabel.spare3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_tapeLabel_spare4,
+ { "spare4", "butc.tc_tapeLabel.spare4", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_tapeLabel_nameLen,
+ { "nameLen", "butc.tc_tapeLabel.nameLen", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_tapeLabel_name,
+ { "name", "butc.tc_tapeLabel.name", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_tapeSet_id,
+ { "id", "butc.tc_tapeSet.id", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_tapeSet_tapeServer,
+ { "tapeServer", "butc.tc_tapeSet.tapeServer", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_tapeSet_format,
+ { "format", "butc.tc_tapeSet.format", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_tapeSet_maxTapes,
+ { "maxTapes", "butc.tc_tapeSet.maxTapes", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_tapeSet_a,
+ { "a", "butc.tc_tapeSet.a", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_tapeSet_b,
+ { "b", "butc.tc_tapeSet.b", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_tapeSet_expDate,
+ { "expDate", "butc.tc_tapeSet.expDate", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_tapeSet_expType,
+ { "expType", "butc.tc_tapeSet.expType", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_tapeSet_spare1,
+ { "spare1", "butc.tc_tapeSet.spare1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_tapeSet_spare2,
+ { "spare2", "butc.tc_tapeSet.spare2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_tapeSet_spare3,
+ { "spare3", "butc.tc_tapeSet.spare3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_tapeSet_spare4,
+ { "spare4", "butc.tc_tapeSet.spare4", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_tcInfo_tcVersion,
+ { "tcVersion", "butc.tc_tcInfo.tcVersion", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_tcInfo_spare1,
+ { "spare1", "butc.tc_tcInfo.spare1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_tcInfo_spare2,
+ { "spare2", "butc.tc_tcInfo.spare2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_tcInfo_spare3,
+ { "spare3", "butc.tc_tcInfo.spare3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_tcInfo_spare4,
+ { "spare4", "butc.tc_tcInfo.spare4", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_restoreArray_tc_restoreArray_len,
+ { "tc_restoreArray_len", "butc.tc_restoreArray.tc_restoreArray_len", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_restoreArray_tc_restoreArray_val,
+ { "tc_restoreArray_val", "butc.tc_restoreArray.tc_restoreArray_val", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpArray_tc_dumpArray_len,
+ { "tc_dumpArray_len", "butc.tc_dumpArray.tc_dumpArray_len", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpArray_tc_dumpArray,
+ { "tc_dumpArray", "butc.tc_dumpArray.tc_dumpArray", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpInterface_dumpPath,
+ { "dumpPath", "butc.tc_dumpInterface.dumpPath", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpInterface_volumeSetName,
+ { "volumeSetName", "butc.tc_dumpInterface.volumeSetName", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpInterface_dumpName,
+ { "dumpName", "butc.tc_dumpInterface.dumpName", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpInterface_tapeSet,
+ { "tapeSet", "butc.tc_dumpInterface.tapeSet", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpInterface_parentDumpId,
+ { "parentDumpId", "butc.tc_dumpInterface.parentDumpId", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpInterface_dumpLevel,
+ { "dumpLevel", "butc.tc_dumpInterface.dumpLevel", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpInterface_spare1,
+ { "spare1", "butc.tc_dumpInterface.spare1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpInterface_spare2,
+ { "spare2", "butc.tc_dumpInterface.spare2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpInterface_spare3,
+ { "spare3", "butc.tc_dumpInterface.spare3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_dumpInterface_spare4,
+ { "spare4", "butc.tc_dumpInterface.spare4", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_statusInfoSwitchVol_nKBytes,
+ { "nKBytes", "butc.tc_statusInfoSwitchVol.nKBytes", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_statusInfoSwitchVol_volumeName,
+ { "volumeName", "butc.tc_statusInfoSwitchVol.volumeName", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_statusInfoSwitchVol_volsFailed,
+ { "volsFailed", "butc.tc_statusInfoSwitchVol.volsFailed", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_statusInfoSwitchVol_spare1,
+ { "spare1", "butc.tc_statusInfoSwitchVol.spare1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_statusInfoSwitchLabel_tapeLabel,
+ { "tapeLabel", "butc.tc_statusInfoSwitchLabel.tapeLabel", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_statusInfoSwitchLabel_spare1,
+ { "spare1", "butc.tc_statusInfoSwitchLabel.spare1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_statusInfoSwitch_TCOP_NONE_none,
+ { "none", "butc.tc_statusInfoSwitch.none", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_statusInfoSwitch_TCOP_DUMP_vol,
+ { "vol", "butc.tc_statusInfoSwitch.vol", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_statusInfoSwitch_TCOP_RESTORE_vol,
+ { "vol", "butc.tc_statusInfoSwitch.vol", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_statusInfoSwitch_TCOP_LABELTAPE_label,
+ { "label", "butc.tc_statusInfoSwitch.label", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_statusInfoSwitch_TCOP_READLABEL_label,
+ { "label", "butc.tc_statusInfoSwitch.label", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_statusInfoSwitch_TCOP_SCANTAPE_spare1,
+ { "spare1", "butc.tc_statusInfoSwitch.spare1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_statusInfoSwitch_TCOP_STATUS_spare2,
+ { "spare2", "butc.tc_statusInfoSwitch.spare2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_statusInfoSwitch_TCOP_SAVEDB_spare3,
+ { "spare3", "butc.tc_statusInfoSwitch.spare3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_statusInfoSwitch_TCOP_RESTOREDB_spare4,
+ { "spare4", "butc.tc_statusInfoSwitch.spare4", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tc_statusInfoSwitch_TCOP_SPARE_spare5,
+ { "spare5", "butc.tc_statusInfoSwitch.spare5", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tciStatusS_taskName,
+ { "taskName", "butc.tciStatusS.taskName", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tciStatusS_flags,
+ { "flags", "butc.tciStatusS.flags", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tciStatusS_lastPolled,
+ { "lastPolled", "butc.tciStatusS.lastPolled", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tciStatusS_info,
+ { "info", "butc.tciStatusS.info", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tciStatusS_taskId,
+ { "taskId", "butc.tciStatusS.taskId", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tciStatusS_spare2,
+ { "spare2", "butc.tciStatusS.spare2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tciStatusS_spare3,
+ { "spare3", "butc.tciStatusS.spare3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_tciStatusS_spare4,
+ { "spare4", "butc.tciStatusS.spare4", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_BUTC_PerformDump_tcdiPtr,
+ { "tcdiPtr", "butc.BUTC_PerformDump.tcdiPtr", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_BUTC_PerformDump_dumps,
+ { "dumps", "butc.BUTC_PerformDump.dumps", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_BUTC_PerformDump_dumpID,
+ { "dumpID", "butc.BUTC_PerformDump.dumpID", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_BUTC_PerformRestore_dumpSetName,
+ { "dumpSetName", "butc.BUTC_PerformRestore.dumpSetName", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_BUTC_PerformRestore_restores,
+ { "restores", "butc.BUTC_PerformRestore.restores", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_BUTC_PerformRestore_dumpID,
+ { "dumpID", "butc.BUTC_PerformRestore.dumpID", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_BUTC_AbortDump_dumpID,
+ { "dumpID", "butc.BUTC_AbortDump.dumpID", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_BUTC_LabelTape_label,
+ { "label", "butc.BUTC_LabelTape.label", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_BUTC_LabelTape_taskId,
+ { "taskId", "butc.BUTC_LabelTape.taskId", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_BUTC_ReadLabel_taskId,
+ { "taskId", "butc.BUTC_ReadLabel.taskId", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_BUTC_ScanDumps_addDbFlag,
+ { "addDbFlag", "butc.BUTC_ScanDumps.addDbFlag", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_BUTC_ScanDumps_taskId,
+ { "taskId", "butc.BUTC_ScanDumps.taskId", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_BUTC_TCInfo_tciptr,
+ { "tciptr", "butc.BUTC_TCInfo.tciptr", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_BUTC_SaveDb_taskId,
+ { "taskId", "butc.BUTC_SaveDb.taskId", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_BUTC_RestoreDb_taskId,
+ { "taskId", "butc.BUTC_RestoreDb.taskId", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_BUTC_EndStatus_taskId,
+ { "taskId", "butc.BUTC_EndStatus.taskId", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_BUTC_GetStatus_taskId,
+ { "taskId", "butc.BUTC_GetStatus.taskId", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_BUTC_GetStatus_statusPtr,
+ { "statusPtr", "butc.BUTC_GetStatus.statusPtr", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_BUTC_RequestAbort_taskId,
+ { "taskId", "butc.BUTC_RequestAbort.taskId", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_BUTC_ScanStatus_taskId,
+ { "taskId", "butc.BUTC_ScanStatus.taskId", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_BUTC_ScanStatus_statusPtr,
+ { "statusPtr", "butc.BUTC_ScanStatus.statusPtr", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_butc_BUTC_ScanStatus_flags,
+ { "flags", "butc.BUTC_ScanStatus.flags", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
/* END OF INCLUDED FILE : ETH_HFARR */
@@ -2853,22 +2877,22 @@ proto_register_butc(void)
/* INCLUDED FILE : ETH_ETTARR */
- &ett_butc,
- &ett_butc_Restore_flags,
- &ett_butc_afsNetAddr,
- &ett_butc_tc_dumpDesc,
- &ett_butc_tc_restoreDesc,
- &ett_butc_tc_dumpStat,
- &ett_butc_tc_tapeLabel,
- &ett_butc_tc_tapeSet,
- &ett_butc_tc_tcInfo,
- &ett_butc_tc_restoreArray,
- &ett_butc_tc_dumpArray,
- &ett_butc_tc_dumpInterface,
- &ett_butc_tc_statusInfoSwitchVol,
- &ett_butc_tc_statusInfoSwitchLabel,
- &ett_butc_tc_statusInfoSwitch,
- &ett_butc_tciStatusS,
+ &ett_butc,
+ &ett_butc_Restore_flags,
+ &ett_butc_afsNetAddr,
+ &ett_butc_tc_dumpDesc,
+ &ett_butc_tc_restoreDesc,
+ &ett_butc_tc_dumpStat,
+ &ett_butc_tc_tapeLabel,
+ &ett_butc_tc_tapeSet,
+ &ett_butc_tc_tcInfo,
+ &ett_butc_tc_restoreArray,
+ &ett_butc_tc_dumpArray,
+ &ett_butc_tc_dumpInterface,
+ &ett_butc_tc_statusInfoSwitchVol,
+ &ett_butc_tc_statusInfoSwitchLabel,
+ &ett_butc_tc_statusInfoSwitch,
+ &ett_butc_tciStatusS,
/* END OF INCLUDED FILE : ETH_ETTARR */
@@ -2885,48 +2909,48 @@ static dcerpc_sub_dissector function_dissectors[] = {
/* INCLUDED FILE : ETH_FT */
- { 0, "BUTC_PerformDump",
- butc_dissect_BUTC_PerformDump_request,
- butc_dissect_BUTC_PerformDump_response },
- { 1, "BUTC_PerformRestore",
- butc_dissect_BUTC_PerformRestore_request,
- butc_dissect_BUTC_PerformRestore_response },
- { 2, "BUTC_AbortDump",
- butc_dissect_BUTC_AbortDump_request,
- butc_dissect_BUTC_AbortDump_response },
- { 3, "BUTC_LabelTape",
- butc_dissect_BUTC_LabelTape_request,
- butc_dissect_BUTC_LabelTape_response },
- { 4, "BUTC_ReadLabel",
- butc_dissect_BUTC_ReadLabel_request,
- butc_dissect_BUTC_ReadLabel_response },
- { 5, "BUTC_ScanDumps",
- butc_dissect_BUTC_ScanDumps_request,
- butc_dissect_BUTC_ScanDumps_response },
- { 6, "BUTC_TCInfo",
- butc_dissect_BUTC_TCInfo_request,
- butc_dissect_BUTC_TCInfo_response },
- { 7, "BUTC_SaveDb",
- butc_dissect_BUTC_SaveDb_request,
- butc_dissect_BUTC_SaveDb_response },
- { 8, "BUTC_RestoreDb",
- butc_dissect_BUTC_RestoreDb_request,
- butc_dissect_BUTC_RestoreDb_response },
- { 9, "BUTC_EndStatus",
- butc_dissect_BUTC_EndStatus_request,
- butc_dissect_BUTC_EndStatus_response },
- { 10, "BUTC_GetStatus",
- butc_dissect_BUTC_GetStatus_request,
- butc_dissect_BUTC_GetStatus_response },
- { 11, "BUTC_RequestAbort",
- butc_dissect_BUTC_RequestAbort_request,
- butc_dissect_BUTC_RequestAbort_response },
- { 12, "BUTC_ScanStatus",
- butc_dissect_BUTC_ScanStatus_request,
- butc_dissect_BUTC_ScanStatus_response },
- { 13, "BUTC_GetServerInterfaces",
- butc_dissect_BUTC_GetServerInterfaces_request,
- butc_dissect_BUTC_GetServerInterfaces_response },
+ { 0, "BUTC_PerformDump",
+ butc_dissect_BUTC_PerformDump_request,
+ butc_dissect_BUTC_PerformDump_response },
+ { 1, "BUTC_PerformRestore",
+ butc_dissect_BUTC_PerformRestore_request,
+ butc_dissect_BUTC_PerformRestore_response },
+ { 2, "BUTC_AbortDump",
+ butc_dissect_BUTC_AbortDump_request,
+ butc_dissect_BUTC_AbortDump_response },
+ { 3, "BUTC_LabelTape",
+ butc_dissect_BUTC_LabelTape_request,
+ butc_dissect_BUTC_LabelTape_response },
+ { 4, "BUTC_ReadLabel",
+ butc_dissect_BUTC_ReadLabel_request,
+ butc_dissect_BUTC_ReadLabel_response },
+ { 5, "BUTC_ScanDumps",
+ butc_dissect_BUTC_ScanDumps_request,
+ butc_dissect_BUTC_ScanDumps_response },
+ { 6, "BUTC_TCInfo",
+ butc_dissect_BUTC_TCInfo_request,
+ butc_dissect_BUTC_TCInfo_response },
+ { 7, "BUTC_SaveDb",
+ butc_dissect_BUTC_SaveDb_request,
+ butc_dissect_BUTC_SaveDb_response },
+ { 8, "BUTC_RestoreDb",
+ butc_dissect_BUTC_RestoreDb_request,
+ butc_dissect_BUTC_RestoreDb_response },
+ { 9, "BUTC_EndStatus",
+ butc_dissect_BUTC_EndStatus_request,
+ butc_dissect_BUTC_EndStatus_response },
+ { 10, "BUTC_GetStatus",
+ butc_dissect_BUTC_GetStatus_request,
+ butc_dissect_BUTC_GetStatus_response },
+ { 11, "BUTC_RequestAbort",
+ butc_dissect_BUTC_RequestAbort_request,
+ butc_dissect_BUTC_RequestAbort_response },
+ { 12, "BUTC_ScanStatus",
+ butc_dissect_BUTC_ScanStatus_request,
+ butc_dissect_BUTC_ScanStatus_response },
+ { 13, "BUTC_GetServerInterfaces",
+ butc_dissect_BUTC_GetServerInterfaces_request,
+ butc_dissect_BUTC_GetServerInterfaces_response },
/* END OF INCLUDED FILE : ETH_FT */
@@ -2939,9 +2963,9 @@ proto_reg_handoff_butc(void)
/* INCLUDED FILE : ETH_HANDOFF */
- dcerpc_init_uuid(proto_butc, ett_butc,
- &uuid_dcerpc_butc, ver_butc,
- function_dissectors, hf_butc_opnum);
+ dcerpc_init_uuid(proto_butc, ett_butc,
+ &uuid_dcerpc_butc, ver_butc,
+ function_dissectors, hf_butc_opnum);
/* END OF INCLUDED FILE : ETH_HANDOFF */
diff --git a/epan/dissectors/packet-dcerpc-cds_clerkserver.c b/epan/dissectors/packet-dcerpc-cds_clerkserver.c
index bcd1c75eb7..a5a5016866 100644
--- a/epan/dissectors/packet-dcerpc-cds_clerkserver.c
+++ b/epan/dissectors/packet-dcerpc-cds_clerkserver.c
@@ -5,7 +5,7 @@
* Copyright 2002, Jaime Fournier <Jaime.Fournier@hush.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/directory.tar.gz directory/cds/stubs/cds_clerkserver.idl
- *
+ *
* $Id$
*
* Wireshark - Network traffic analyzer
@@ -32,10 +32,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-cds_solicit.c b/epan/dissectors/packet-dcerpc-cds_solicit.c
index 62cec6fefa..b9b96baf67 100644
--- a/epan/dissectors/packet-dcerpc-cds_solicit.c
+++ b/epan/dissectors/packet-dcerpc-cds_solicit.c
@@ -3,7 +3,7 @@
* Copyright 2002, Jaime Fournier <Jaime.Fournier@hush.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/directory.tar.gz directory/cds/stubs/cds_solicit.idl
- *
+ *
* $Id$
*
* Wireshark - Network traffic analyzer
@@ -30,10 +30,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-conv.c b/epan/dissectors/packet-dcerpc-conv.c
index 72b23be301..af20c74c6c 100644
--- a/epan/dissectors/packet-dcerpc-conv.c
+++ b/epan/dissectors/packet-dcerpc-conv.c
@@ -28,10 +28,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
@@ -58,23 +54,24 @@ static guint16 ver_conv = 3;
static int
conv_dissect_who_are_you_rqst (tvbuff_t *tvb, int offset,
- packet_info *pinfo, proto_tree *tree,
- guint8 *drep)
+ packet_info *pinfo, proto_tree *tree,
+ guint8 *drep)
{
/*
* [in] uuid_t *actuid,
* [in] unsigned32 boot_time,
*/
- e_uuid_t actuid;
+ e_uuid_t actuid;
- offset = dissect_ndr_uuid_t (tvb, offset, pinfo, tree, drep, hf_conv_who_are_you_rqst_actuid, &actuid);
- offset = dissect_ndr_time_t (tvb, offset, pinfo, tree, drep, hf_conv_who_are_you_rqst_boot_time, NULL);
+ offset = dissect_ndr_uuid_t (tvb, offset, pinfo, tree, drep, hf_conv_who_are_you_rqst_actuid, &actuid);
+ offset = dissect_ndr_time_t (tvb, offset, pinfo, tree, drep, hf_conv_who_are_you_rqst_boot_time, NULL);
- if (check_col(pinfo->cinfo, COL_INFO)) {
- col_add_fstr(pinfo->cinfo, COL_INFO,
- "conv_who_are_you request actuid: %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
- actuid.Data1, actuid.Data2, actuid.Data3, actuid.Data4[0], actuid.Data4[1],
- actuid.Data4[2], actuid.Data4[3], actuid.Data4[4], actuid.Data4[5], actuid.Data4[6], actuid.Data4[7]);
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_add_fstr(pinfo->cinfo, COL_INFO,
+ "conv_who_are_you request actuid: %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
+ actuid.Data1, actuid.Data2, actuid.Data3,
+ actuid.Data4[0], actuid.Data4[1], actuid.Data4[2], actuid.Data4[3],
+ actuid.Data4[4], actuid.Data4[5], actuid.Data4[6], actuid.Data4[7]);
}
return offset;
@@ -82,33 +79,33 @@ conv_dissect_who_are_you_rqst (tvbuff_t *tvb, int offset,
static int
conv_dissect_who_are_you_resp (tvbuff_t *tvb, int offset,
- packet_info *pinfo, proto_tree *tree,
- guint8 *drep)
+ packet_info *pinfo, proto_tree *tree,
+ guint8 *drep)
{
/*
* [out] unsigned32 *seq,
* [out] unsigned32 *st
*/
- guint32 seq, st;
+ guint32 seq, st;
- offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_conv_who_are_you_resp_seq, &seq);
- offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_conv_rc, &st);
+ offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_conv_who_are_you_resp_seq, &seq);
+ offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_conv_rc, &st);
- if (check_col(pinfo->cinfo, COL_INFO)) {
- col_add_fstr(pinfo->cinfo, COL_INFO, "conv_who_are_you response seq:%u st:%s",
- seq, val_to_str_ext(st, &dce_error_vals_ext, "%u"));
- }
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_add_fstr(pinfo->cinfo, COL_INFO, "conv_who_are_you response seq:%u st:%s",
+ seq, val_to_str_ext(st, &dce_error_vals_ext, "%u"));
+ }
- return offset;
+ return offset;
}
static int
conv_dissect_who_are_you2_rqst (tvbuff_t *tvb, int offset,
- packet_info *pinfo, proto_tree *tree,
- guint8 *drep)
+ packet_info *pinfo, proto_tree *tree,
+ guint8 *drep)
{
/*
* [in] uuid_t *actuid,
@@ -120,18 +117,19 @@ conv_dissect_who_are_you2_rqst (tvbuff_t *tvb, int offset,
offset = dissect_ndr_time_t (tvb, offset, pinfo, tree, drep, hf_conv_who_are_you2_rqst_boot_time, NULL);
if (check_col(pinfo->cinfo, COL_INFO)) {
- col_add_fstr(pinfo->cinfo, COL_INFO,
- "conv_who_are_you2 request actuid: %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
- actuid.Data1, actuid.Data2, actuid.Data3, actuid.Data4[0], actuid.Data4[1],
- actuid.Data4[2], actuid.Data4[3], actuid.Data4[4], actuid.Data4[5], actuid.Data4[6], actuid.Data4[7]);
+ col_add_fstr(pinfo->cinfo, COL_INFO,
+ "conv_who_are_you2 request actuid: %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
+ actuid.Data1, actuid.Data2, actuid.Data3,
+ actuid.Data4[0], actuid.Data4[1], actuid.Data4[2], actuid.Data4[3],
+ actuid.Data4[4], actuid.Data4[5], actuid.Data4[6], actuid.Data4[7]);
}
return offset;
}
static int
conv_dissect_who_are_you2_resp (tvbuff_t *tvb, int offset,
- packet_info *pinfo, proto_tree *tree,
- guint8 *drep)
+ packet_info *pinfo, proto_tree *tree,
+ guint8 *drep)
{
/*
* [out] unsigned32 *seq,
@@ -139,19 +137,20 @@ conv_dissect_who_are_you2_resp (tvbuff_t *tvb, int offset,
*
* [out] unsigned32 *st
*/
- guint32 seq, st;
- e_uuid_t cas_uuid;
-
- offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_conv_who_are_you2_resp_seq, &seq);
- offset = dissect_ndr_uuid_t (tvb, offset, pinfo, tree, drep, hf_conv_who_are_you2_resp_casuuid, &cas_uuid);
- offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_conv_rc, &st);
-
- if (check_col(pinfo->cinfo, COL_INFO)) {
- col_add_fstr(pinfo->cinfo, COL_INFO,
- "conv_who_are_you2 response seq:%u st:%s cas:%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
- seq, val_to_str_ext(st, &dce_error_vals_ext, "%u"),
- cas_uuid.Data1, cas_uuid.Data2, cas_uuid.Data3, cas_uuid.Data4[0], cas_uuid.Data4[1],
- cas_uuid.Data4[2], cas_uuid.Data4[3], cas_uuid.Data4[4], cas_uuid.Data4[5], cas_uuid.Data4[6], cas_uuid.Data4[7]);
+ guint32 seq, st;
+ e_uuid_t cas_uuid;
+
+ offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_conv_who_are_you2_resp_seq, &seq);
+ offset = dissect_ndr_uuid_t (tvb, offset, pinfo, tree, drep, hf_conv_who_are_you2_resp_casuuid, &cas_uuid);
+ offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_conv_rc, &st);
+
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_add_fstr(pinfo->cinfo, COL_INFO,
+ "conv_who_are_you2 response seq:%u st:%s cas:%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
+ seq, val_to_str_ext(st, &dce_error_vals_ext, "%u"),
+ cas_uuid.Data1, cas_uuid.Data2, cas_uuid.Data3,
+ cas_uuid.Data4[0], cas_uuid.Data4[1], cas_uuid.Data4[2], cas_uuid.Data4[3],
+ cas_uuid.Data4[4], cas_uuid.Data4[5], cas_uuid.Data4[6], cas_uuid.Data4[7]);
}
return offset;
@@ -163,9 +162,12 @@ static dcerpc_sub_dissector conv_dissectors[] = {
conv_dissect_who_are_you_rqst, conv_dissect_who_are_you_resp },
{ 1, "who_are_you2",
conv_dissect_who_are_you2_rqst, conv_dissect_who_are_you2_resp },
- { 2, "are_you_there", NULL, NULL },
- { 3, "who_are_you_auth", NULL, NULL },
- { 4, "who_are_you_auth_more", NULL, NULL },
+ { 2, "are_you_there",
+ NULL, NULL },
+ { 3, "who_are_you_auth",
+ NULL, NULL },
+ { 4, "who_are_you_auth_more",
+ NULL, NULL },
{ 0, NULL, NULL, NULL }
};
diff --git a/epan/dissectors/packet-dcerpc-cprpc_server.c b/epan/dissectors/packet-dcerpc-cprpc_server.c
index 9f7581cae8..c9917c9dfb 100644
--- a/epan/dissectors/packet-dcerpc-cprpc_server.c
+++ b/epan/dissectors/packet-dcerpc-cprpc_server.c
@@ -3,7 +3,7 @@
* Copyright 2002, Jaime Fournier <Jaime.Fournier@hush.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/directory.tar.gz directory/cds/stubs/cprpc_server.idl
- *
+ *
* $Id$
*
* Wireshark - Network traffic analyzer
@@ -30,10 +30,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-dce122.c b/epan/dissectors/packet-dcerpc-dce122.c
index b810ded200..4c5afae34b 100644
--- a/epan/dissectors/packet-dcerpc-dce122.c
+++ b/epan/dissectors/packet-dcerpc-dce122.c
@@ -1012,9 +1012,9 @@ static const value_string dce_error_vals[] = {
{ 700887083, "req .d: op .d, size .d" },
{ 700887084, "name lookup request (size .d): .s" },
{ 700887085, "get_cred(pag .d, euid .d):" },
-{ 700887086, " get_cred(): server .s, level .d, protocol .d" },
+{ 700887086, "get_cred(): server .s, level .d, protocol .d" },
{ 700887087, "build_msg(pag .d, euid .d, credpag .d, credeuid .d):" },
-{ 700887088, " build_msg(): crlvl .d, crprotoc .d, exp .d, server .s" },
+{ 700887088, "build_msg(): crlvl .d, crprotoc .d, exp .d, server .s" },
{ 700887089, "decode_msg()" },
{ 700887090, "UNKNOWN MESSAGE TYPE" },
{ 700887091, "gen_block()" },
@@ -4427,6 +4427,6 @@ static const value_string dce_error_vals[] = {
{ 0, NULL }
};
-#define array_length(x) (sizeof x / sizeof x[0])
+#define array_length(x) (sizeof x / sizeof x[0])
value_string_ext dce_error_vals_ext = VALUE_STRING_EXT_INIT(dce_error_vals);
diff --git a/epan/dissectors/packet-dcerpc-dnsserver.c b/epan/dissectors/packet-dcerpc-dnsserver.c
index daf3b8c18a..a487fb5a6e 100644
--- a/epan/dissectors/packet-dcerpc-dnsserver.c
+++ b/epan/dissectors/packet-dcerpc-dnsserver.c
@@ -1,10 +1,10 @@
/* DO NOT EDIT
This filter was automatically generated
from dnsserver.idl and dnsserver.cnf.
-
- Pidl is a perl based IDL compiler for DCE/RPC idl files.
+
+ Pidl is a perl based IDL compiler for DCE/RPC idl files.
It is maintained by the Samba team, not the Wireshark team.
- Instructions on how to download and install Pidl can be
+ Instructions on how to download and install Pidl can be
found at http://wiki.wireshark.org/Pidl
$Id$
@@ -595,7 +595,7 @@ dnsserver_dissect_struct_DNS_RPC_NAME(tvbuff_t *tvb _U_, int offset _U_, packet_
dcerpc_info *di = NULL;
guint8 len;
const char *dn;
- int dn_len;
+ int dn_len = 0;
guint16 bc;
di=pinfo->private_data;
if(di->conformant_run){
@@ -714,7 +714,7 @@ dnsserver_dissect_struct_DNS_RPC_VERSION(tvbuff_t *tvb _U_, int offset _U_, pack
item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
tree = proto_item_add_subtree(item, ett_dnsserver_DNS_RPC_VERSION);
}
-
+
offset = dnsserver_dissect_element_DNS_RPC_VERSION_OSMajorVersion(tvb, offset, pinfo, tree, drep);
offset = dnsserver_dissect_element_DNS_RPC_VERSION_OSMinorVersion(tvb, offset, pinfo, tree, drep);
@@ -1303,7 +1303,7 @@ dnsserver_dissect_struct_DNS_RPC_RECORD_NODE_NAME(tvbuff_t *tvb _U_, int offset
item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
tree = proto_item_add_subtree(item, ett_dnsserver_DNS_RPC_RECORD_NODE_NAME);
}
-
+
offset = dnsserver_dissect_element_DNS_RPC_RECORD_NODE_NAME_Name(tvb, offset, pinfo, tree, drep);
@@ -1440,7 +1440,7 @@ dnsserver_dissect_struct_DNS_RPC_RECORD(tvbuff_t *tvb _U_, int offset _U_, packe
item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
tree = proto_item_add_subtree(item, ett_dnsserver_DNS_RPC_RECORD);
}
-
+
offset = dnsserver_dissect_element_DNS_RPC_RECORD_DataLength(tvb, offset, pinfo, tree, drep);
offset = dnsserver_dissect_element_DNS_RPC_RECORD_Type(tvb, offset, pinfo, tree, drep);
@@ -1528,7 +1528,7 @@ dnsserver_dissect_struct_DNS_RPC_NODE(tvbuff_t *tvb _U_, int offset _U_, packet_
item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
tree = proto_item_add_subtree(item, ett_dnsserver_DNS_RPC_NODE);
}
-
+
offset = dnsserver_dissect_element_DNS_RPC_NODE_Length(tvb, offset, pinfo, tree, drep);
offset = dnsserver_dissect_element_DNS_RPC_NODE_RecordCount(tvb, offset, pinfo, tree, drep);
@@ -1592,7 +1592,7 @@ dnsserver_dissect_struct_IP4_ARRAY(tvbuff_t *tvb _U_, int offset _U_, packet_inf
item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
tree = proto_item_add_subtree(item, ett_dnsserver_IP4_ARRAY);
}
-
+
offset = dnsserver_dissect_element_IP4_ARRAY_AddrCount(tvb, offset, pinfo, tree, drep);
offset = dnsserver_dissect_element_IP4_ARRAY_AddrArray(tvb, offset, pinfo, tree, drep);
@@ -2348,7 +2348,7 @@ dnsserver_dissect_struct_DNS_RPC_SERVER_INFO_DOTNET(tvbuff_t *tvb _U_, int offse
item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
tree = proto_item_add_subtree(item, ett_dnsserver_DNS_RPC_SERVER_INFO_DOTNET);
}
-
+
offset = dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_RpcStructureVersion(tvb, offset, pinfo, tree, drep);
offset = dnsserver_dissect_element_DNS_RPC_SERVER_INFO_DOTNET_reserved0(tvb, offset, pinfo, tree, drep);
@@ -2645,7 +2645,7 @@ dnsserver_dissect_struct_DNS_RECORD_BUFFER(tvbuff_t *tvb _U_, int offset _U_, pa
item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
tree = proto_item_add_subtree(item, ett_dnsserver_DNS_RECORD_BUFFER);
}
-
+
offset = dnsserver_dissect_element_DNS_RECORD_BUFFER_rpc_node(tvb, offset, pinfo, tree, drep);
@@ -3291,287 +3291,287 @@ static dcerpc_sub_dissector dnsserver_dissectors[] = {
void proto_register_dcerpc_dnsserver(void)
{
static hf_register_info hf[] = {
- { &hf_dnsserver_DnssrvEnumRecords2_start_child,
+ { &hf_dnsserver_DnssrvEnumRecords2_start_child,
{ "Start Child", "dnsserver.DnssrvEnumRecords2.start_child", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_LocalNetPriority,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_LocalNetPriority,
{ "Localnetpriority", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.LocalNetPriority", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_AGING_ON,
+ { &hf_dnsserver_DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_AGING_ON,
{ "Dns Rpc Flag Aging On", "dnsserver.DNS_RPC_NODE_FLAGS.DNS_RPC_FLAG_AGING_ON", FT_BOOLEAN, 32, TFS(&DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_AGING_ON_tfs), ( 0x00020000 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_LOG_LEVELS_DNS_LOG_LEVEL_WRITE_THROUGH,
+ { &hf_dnsserver_DNS_LOG_LEVELS_DNS_LOG_LEVEL_WRITE_THROUGH,
{ "Dns Log Level Write Through", "dnsserver.DNS_LOG_LEVELS.DNS_LOG_LEVEL_WRITE_THROUGH", FT_BOOLEAN, 32, TFS(&DNS_LOG_LEVELS_DNS_LOG_LEVEL_WRITE_THROUGH_tfs), ( 0x80000000 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_reserved0,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_reserved0,
{ "Reserved0", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.reserved0", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DefaultNoRefreshInterval,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DefaultNoRefreshInterval,
{ "Defaultnorefreshinterval", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.DefaultNoRefreshInterval", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_LogFilter,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_LogFilter,
{ "Logfilter", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.LogFilter", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_LOG_LEVELS_DNS_LOG_LEVEL_ANSWERS,
+ { &hf_dnsserver_DNS_LOG_LEVELS_DNS_LOG_LEVEL_ANSWERS,
{ "Dns Log Level Answers", "dnsserver.DNS_LOG_LEVELS.DNS_LOG_LEVEL_ANSWERS", FT_BOOLEAN, 32, TFS(&DNS_LOG_LEVELS_DNS_LOG_LEVEL_ANSWERS_tfs), ( 0x00000200 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_SELECT_FLAGS_DNS_RPC_VIEW_ONLY_CHILDREN,
+ { &hf_dnsserver_DNS_SELECT_FLAGS_DNS_RPC_VIEW_ONLY_CHILDREN,
{ "Dns Rpc View Only Children", "dnsserver.DNS_SELECT_FLAGS.DNS_RPC_VIEW_ONLY_CHILDREN", FT_BOOLEAN, 32, TFS(&DNS_SELECT_FLAGS_DNS_RPC_VIEW_ONLY_CHILDREN_tfs), ( 0x00020000 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_BootMethod,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_BootMethod,
{ "Bootmethod", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.BootMethod", FT_UINT8, BASE_DEC, VALS(dnsserver_DNS_RPC_BOOT_METHOD_vals), 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_SELECT_FLAGS_DNS_RPC_VIEW_AUTHORITY_DATA,
+ { &hf_dnsserver_DNS_SELECT_FLAGS_DNS_RPC_VIEW_AUTHORITY_DATA,
{ "Dns Rpc View Authority Data", "dnsserver.DNS_SELECT_FLAGS.DNS_RPC_VIEW_AUTHORITY_DATA", FT_BOOLEAN, 32, TFS(&DNS_SELECT_FLAGS_DNS_RPC_VIEW_AUTHORITY_DATA_tfs), ( 0x00000001 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_extension1,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_extension1,
{ "Extension1", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.extension1", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_ListenAddrs,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_ListenAddrs,
{ "Listenaddrs", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.ListenAddrs", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_LOG_LEVELS_DNS_LOG_LEVEL_QUESTIONS,
+ { &hf_dnsserver_DNS_LOG_LEVELS_DNS_LOG_LEVEL_QUESTIONS,
{ "Dns Log Level Questions", "dnsserver.DNS_LOG_LEVELS.DNS_LOG_LEVEL_QUESTIONS", FT_BOOLEAN, 32, TFS(&DNS_LOG_LEVELS_DNS_LOG_LEVEL_QUESTIONS_tfs), ( 0x00000100 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_NODE_COMPLETE,
+ { &hf_dnsserver_DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_NODE_COMPLETE,
{ "Dns Rpc Flag Node Complete", "dnsserver.DNS_RPC_NODE_FLAGS.DNS_RPC_FLAG_NODE_COMPLETE", FT_BOOLEAN, 32, TFS(&DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_NODE_COMPLETE_tfs), ( 0x00800000 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_Forwarders,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_Forwarders,
{ "Forwarders", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.Forwarders", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DnssrvQuery2_server_name,
+ { &hf_dnsserver_DnssrvQuery2_server_name,
{ "Server Name", "dnsserver.DnssrvQuery2.server_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_NODE_STICKY,
+ { &hf_dnsserver_DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_NODE_STICKY,
{ "Dns Rpc Flag Node Sticky", "dnsserver.DNS_RPC_NODE_FLAGS.DNS_RPC_FLAG_NODE_STICKY", FT_BOOLEAN, 32, TFS(&DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_NODE_STICKY_tfs), ( 0x01000000 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_WriteAuthorityNs,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_WriteAuthorityNs,
{ "Writeauthorityns", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.WriteAuthorityNs", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_AutoCacheUpdate,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_AutoCacheUpdate,
{ "Autocacheupdate", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.AutoCacheUpdate", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_status,
+ { &hf_dnsserver_status,
{ "NT Error", "dnsserver.status", FT_UINT32, BASE_HEX, VALS(NT_errors), 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_RECORD_DataLength,
+ { &hf_dnsserver_DNS_RPC_RECORD_DataLength,
{ "Datalength", "dnsserver.DNS_RPC_RECORD.DataLength", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_AdminConfigured,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_AdminConfigured,
{ "Adminconfigured", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.AdminConfigured", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_LOG_LEVELS_DNS_LOG_LEVEL_RECV,
+ { &hf_dnsserver_DNS_LOG_LEVELS_DNS_LOG_LEVEL_RECV,
{ "Dns Log Level Recv", "dnsserver.DNS_LOG_LEVELS.DNS_LOG_LEVEL_RECV", FT_BOOLEAN, 32, TFS(&DNS_LOG_LEVELS_DNS_LOG_LEVEL_RECV_tfs), ( 0x00002000 ), NULL, HFILL }},
- { &hf_dnsserver_DnssrvEnumRecords2_buffer_length,
+ { &hf_dnsserver_DnssrvEnumRecords2_buffer_length,
{ "Buffer Length", "dnsserver.DnssrvEnumRecords2.buffer_length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_extension3,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_extension3,
{ "Extension3", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.extension3", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_PROTOCOLS_DNS_RPC_USE_LPC,
+ { &hf_dnsserver_DNS_RPC_PROTOCOLS_DNS_RPC_USE_LPC,
{ "Dns Rpc Use Lpc", "dnsserver.DNS_RPC_PROTOCOLS.DNS_RPC_USE_LPC", FT_BOOLEAN, 32, TFS(&DNS_RPC_PROTOCOLS_DNS_RPC_USE_LPC_tfs), ( 0x00000004 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_NAME_name,
+ { &hf_dnsserver_DNS_RPC_NAME_name,
{ "Name", "dnsserver.DNS_RPC_NAME.name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_RECORD_CREATE_PTR,
+ { &hf_dnsserver_DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_RECORD_CREATE_PTR,
{ "Dns Rpc Flag Record Create Ptr", "dnsserver.DNS_RPC_NODE_FLAGS.DNS_RPC_FLAG_RECORD_CREATE_PTR", FT_BOOLEAN, 32, TFS(&DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_RECORD_CREATE_PTR_tfs), ( 0x02000000 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_RpcProtocol,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_RpcProtocol,
{ "Rpcprotocol", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.RpcProtocol", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_NODE_Childcount,
+ { &hf_dnsserver_DNS_RPC_NODE_Childcount,
{ "Childcount", "dnsserver.DNS_RPC_NODE.Childcount", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_RpcStructureVersion,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_RpcStructureVersion,
{ "Rpcstructureversion", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.RpcStructureVersion", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DefaultAgingState,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DefaultAgingState,
{ "Defaultagingstate", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.DefaultAgingState", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DsDsaVersion,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DsDsaVersion,
{ "Dsdsaversion", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.DsDsaVersion", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_extension0,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_extension0,
{ "Extension0", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.extension0", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_RoundRobin,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_RoundRobin,
{ "Roundrobin", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.RoundRobin", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_BindSecondaries,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_BindSecondaries,
{ "Bindsecondaries", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.BindSecondaries", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_extension5,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_extension5,
{ "Extension5", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.extension5", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_AutoReverseZones,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_AutoReverseZones,
{ "Autoreversezones", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.AutoReverseZones", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DnssrvQuery2_data,
+ { &hf_dnsserver_DnssrvQuery2_data,
{ "Data", "dnsserver.DnssrvQuery2.data", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNSSRV_RPC_UNION_dword,
+ { &hf_dnsserver_DNSSRV_RPC_UNION_dword,
{ "Dword", "dnsserver.DNSSRV_RPC_UNION.dword", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_VERSION_OSMajorVersion,
+ { &hf_dnsserver_DNS_RPC_VERSION_OSMajorVersion,
{ "Osmajorversion", "dnsserver.DNS_RPC_VERSION.OSMajorVersion", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DsDomainVersion,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DsDomainVersion,
{ "Dsdomainversion", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.DsDomainVersion", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_ZONE_DELEGATION,
+ { &hf_dnsserver_DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_ZONE_DELEGATION,
{ "Dns Rpc Flag Zone Delegation", "dnsserver.DNS_RPC_NODE_FLAGS.DNS_RPC_FLAG_ZONE_DELEGATION", FT_BOOLEAN, 32, TFS(&DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_ZONE_DELEGATION_tfs), ( 0x10000000 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_RecursionTimeout,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_RecursionTimeout,
{ "Recursiontimeout", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.RecursionTimeout", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_LOG_LEVELS_DNS_LOG_LEVEL_UPDATE,
+ { &hf_dnsserver_DNS_LOG_LEVELS_DNS_LOG_LEVEL_UPDATE,
{ "Dns Log Level Update", "dnsserver.DNS_LOG_LEVELS.DNS_LOG_LEVEL_UPDATE", FT_BOOLEAN, 32, TFS(&DNS_LOG_LEVELS_DNS_LOG_LEVEL_UPDATE_tfs), ( 0x00000020 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_LooseWildcarding,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_LooseWildcarding,
{ "Loosewildcarding", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.LooseWildcarding", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DsContainer,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DsContainer,
{ "Dscontainer", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.DsContainer", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DnssrvQuery2_client_version,
+ { &hf_dnsserver_DnssrvQuery2_client_version,
{ "Client Version", "dnsserver.DnssrvQuery2.client_version", FT_UINT32, BASE_DEC, VALS(dnsserver_DNS_RPC_CLIENT_VERSION_vals), 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_SELECT_FLAGS_DNS_RPC_VIEW_ADDITIONAL_DATA,
+ { &hf_dnsserver_DNS_SELECT_FLAGS_DNS_RPC_VIEW_ADDITIONAL_DATA,
{ "Dns Rpc View Additional Data", "dnsserver.DNS_SELECT_FLAGS.DNS_RPC_VIEW_ADDITIONAL_DATA", FT_BOOLEAN, 32, TFS(&DNS_SELECT_FLAGS_DNS_RPC_VIEW_ADDITIONAL_DATA_tfs), ( 0x00000010 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_NODE_records,
+ { &hf_dnsserver_DNS_RPC_NODE_records,
{ "Records", "dnsserver.DNS_RPC_NODE.records", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_RECORD_NODE_NAME_Name,
+ { &hf_dnsserver_DNS_RPC_RECORD_NODE_NAME_Name,
{ "Name", "dnsserver.DNS_RPC_RECORD_NODE_NAME.Name", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_RECORD_TimeStamp,
+ { &hf_dnsserver_DNS_RPC_RECORD_TimeStamp,
{ "Timestamp", "dnsserver.DNS_RPC_RECORD.TimeStamp", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_RECORD_TtlSeconds,
+ { &hf_dnsserver_DNS_RPC_RECORD_TtlSeconds,
{ "Ttlseconds", "dnsserver.DNS_RPC_RECORD.TtlSeconds", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_VERSION_OSMinorVersion,
+ { &hf_dnsserver_DNS_RPC_VERSION_OSMinorVersion,
{ "Osminorversion", "dnsserver.DNS_RPC_VERSION.OSMinorVersion", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_NameCheckFlag,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_NameCheckFlag,
{ "Namecheckflag", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.NameCheckFlag", FT_UINT32, BASE_DEC, VALS(dnsserver_DNS_NAME_CHECK_FLAGS_vals), 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DomainName,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DomainName,
{ "Domainname", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.DomainName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_AUTH_ZONE_ROOT,
+ { &hf_dnsserver_DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_AUTH_ZONE_ROOT,
{ "Dns Rpc Flag Auth Zone Root", "dnsserver.DNS_RPC_NODE_FLAGS.DNS_RPC_FLAG_AUTH_ZONE_ROOT", FT_BOOLEAN, 32, TFS(&DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_AUTH_ZONE_ROOT_tfs), ( 0x20000000 ), NULL, HFILL }},
- { &hf_dnsserver_DnssrvEnumRecords2_filter_stop,
+ { &hf_dnsserver_DnssrvEnumRecords2_filter_stop,
{ "Filter Stop", "dnsserver.DnssrvEnumRecords2.filter_stop", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DnssrvEnumRecords2_setting_flags,
+ { &hf_dnsserver_DnssrvEnumRecords2_setting_flags,
{ "Setting Flags", "dnsserver.DnssrvEnumRecords2.setting_flags", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_LOG_LEVELS_DNS_LOG_LEVEL_SEND,
+ { &hf_dnsserver_DNS_LOG_LEVELS_DNS_LOG_LEVEL_SEND,
{ "Dns Log Level Send", "dnsserver.DNS_LOG_LEVELS.DNS_LOG_LEVEL_SEND", FT_BOOLEAN, 32, TFS(&DNS_LOG_LEVELS_DNS_LOG_LEVEL_SEND_tfs), ( 0x00001000 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DomainDirectoryPartition,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DomainDirectoryPartition,
{ "Domaindirectorypartition", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.DomainDirectoryPartition", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_NoRecursion,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_NoRecursion,
{ "Norecursion", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.NoRecursion", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DnssrvEnumRecords2_client_version,
+ { &hf_dnsserver_DnssrvEnumRecords2_client_version,
{ "Client Version", "dnsserver.DnssrvEnumRecords2.client_version", FT_UINT32, BASE_DEC, VALS(dnsserver_DNS_RPC_CLIENT_VERSION_vals), 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_ServerAddrs,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_ServerAddrs,
{ "Serveraddrs", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.ServerAddrs", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DnssrvEnumRecords2_select_flag,
+ { &hf_dnsserver_DnssrvEnumRecords2_select_flag,
{ "Select Flag", "dnsserver.DnssrvEnumRecords2.select_flag", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_LogFilePath,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_LogFilePath,
{ "Logfilepath", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.LogFilePath", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_PROTOCOLS_DNS_RPC_USE_NAMED_PIPE,
+ { &hf_dnsserver_DNS_RPC_PROTOCOLS_DNS_RPC_USE_NAMED_PIPE,
{ "Dns Rpc Use Named Pipe", "dnsserver.DNS_RPC_PROTOCOLS.DNS_RPC_USE_NAMED_PIPE", FT_BOOLEAN, 32, TFS(&DNS_RPC_PROTOCOLS_DNS_RPC_USE_NAMED_PIPE_tfs), ( 0x00000002 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_NODE_NodeName,
+ { &hf_dnsserver_DNS_RPC_NODE_NodeName,
{ "Nodename", "dnsserver.DNS_RPC_NODE.NodeName", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_SELECT_FLAGS_DNS_RPC_VIEW_NO_CHILDREN,
+ { &hf_dnsserver_DNS_SELECT_FLAGS_DNS_RPC_VIEW_NO_CHILDREN,
{ "Dns Rpc View No Children", "dnsserver.DNS_SELECT_FLAGS.DNS_RPC_VIEW_NO_CHILDREN", FT_BOOLEAN, 32, TFS(&DNS_SELECT_FLAGS_DNS_RPC_VIEW_NO_CHILDREN_tfs), ( 0x00010000 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_extension4,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_extension4,
{ "Extension4", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.extension4", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_IP4_ARRAY_AddrCount,
+ { &hf_dnsserver_IP4_ARRAY_AddrCount,
{ "Addrcount", "dnsserver.IP4_ARRAY.AddrCount", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_ForestName,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_ForestName,
{ "Forestname", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.ForestName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DnssrvEnumRecords2_record_type,
+ { &hf_dnsserver_DnssrvEnumRecords2_record_type,
{ "Record Type", "dnsserver.DnssrvEnumRecords2.record_type", FT_UINT16, BASE_DEC, VALS(dnsserver_DNS_RECORD_TYPE_vals), 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_LOG_LEVELS_DNS_LOG_LEVEL_NOTIFY,
+ { &hf_dnsserver_DNS_LOG_LEVELS_DNS_LOG_LEVEL_NOTIFY,
{ "Dns Log Level Notify", "dnsserver.DNS_LOG_LEVELS.DNS_LOG_LEVEL_NOTIFY", FT_BOOLEAN, 32, TFS(&DNS_LOG_LEVELS_DNS_LOG_LEVEL_NOTIFY_tfs), ( 0x00000010 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_RECORD_Flags,
+ { &hf_dnsserver_DNS_RPC_RECORD_Flags,
{ "Flags", "dnsserver.DNS_RPC_RECORD.Flags", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DnssrvEnumRecords2_server_name,
+ { &hf_dnsserver_DnssrvEnumRecords2_server_name,
{ "Server Name", "dnsserver.DnssrvEnumRecords2.server_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DnssrvEnumRecords2_record_buffer,
+ { &hf_dnsserver_DnssrvEnumRecords2_record_buffer,
{ "Record Buffer", "dnsserver.DnssrvEnumRecords2.record_buffer", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DnssrvEnumRecords2_node_name,
+ { &hf_dnsserver_DnssrvEnumRecords2_node_name,
{ "Node Name", "dnsserver.DnssrvEnumRecords2.node_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RECORD_BUFFER_rpc_node,
+ { &hf_dnsserver_DNS_RECORD_BUFFER_rpc_node,
{ "Rpc Node", "dnsserver.DNS_RECORD_BUFFER.rpc_node", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_LastScavengeTime,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_LastScavengeTime,
{ "Lastscavengetime", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.LastScavengeTime", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_NODE_Length,
+ { &hf_dnsserver_DNS_RPC_NODE_Length,
{ "Length", "dnsserver.DNS_RPC_NODE.Length", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DnssrvEnumRecords2_filter_start,
+ { &hf_dnsserver_DnssrvEnumRecords2_filter_start,
{ "Filter Start", "dnsserver.DnssrvEnumRecords2.filter_start", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_ForestDirectoryPartition,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_ForestDirectoryPartition,
{ "Forestdirectorypartition", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.ForestDirectoryPartition", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DnssrvEnumRecords2_zone,
+ { &hf_dnsserver_DnssrvEnumRecords2_zone,
{ "Zone", "dnsserver.DnssrvEnumRecords2.zone", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_reserve_array,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_reserve_array,
{ "Reserve Array", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.reserve_array", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_RECORD_TTL_CHANGE,
+ { &hf_dnsserver_DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_RECORD_TTL_CHANGE,
{ "Dns Rpc Flag Record Ttl Change", "dnsserver.DNS_RPC_NODE_FLAGS.DNS_RPC_FLAG_RECORD_TTL_CHANGE", FT_BOOLEAN, 32, TFS(&DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_RECORD_TTL_CHANGE_tfs), ( 0x04000000 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_SELECT_FLAGS_DNS_RPC_VIEW_CACHE_DATA,
+ { &hf_dnsserver_DNS_SELECT_FLAGS_DNS_RPC_VIEW_CACHE_DATA,
{ "Dns Rpc View Cache Data", "dnsserver.DNS_SELECT_FLAGS.DNS_RPC_VIEW_CACHE_DATA", FT_BOOLEAN, 32, TFS(&DNS_SELECT_FLAGS_DNS_RPC_VIEW_CACHE_DATA_tfs), ( 0x00000002 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_ForwardTimeout,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_ForwardTimeout,
{ "Forwardtimeout", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.ForwardTimeout", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_reserve_array2,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_reserve_array2,
{ "Reserve Array2", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.reserve_array2", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_extension2,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_extension2,
{ "Extension2", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.extension2", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_RECORD_UNION_NodeName,
+ { &hf_dnsserver_DNS_RPC_RECORD_UNION_NodeName,
{ "Nodename", "dnsserver.DNS_RPC_RECORD_UNION.NodeName", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_LOG_LEVELS_DNS_LOG_LEVEL_FULL_PACKETS,
+ { &hf_dnsserver_DNS_LOG_LEVELS_DNS_LOG_LEVEL_FULL_PACKETS,
{ "Dns Log Level Full Packets", "dnsserver.DNS_LOG_LEVELS.DNS_LOG_LEVEL_FULL_PACKETS", FT_BOOLEAN, 32, TFS(&DNS_LOG_LEVELS_DNS_LOG_LEVEL_FULL_PACKETS_tfs), ( 0x01000000 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_RecursionRetry,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_RecursionRetry,
{ "Recursionretry", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.RecursionRetry", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DnssrvQuery2_zone,
+ { &hf_dnsserver_DnssrvQuery2_zone,
{ "Zone", "dnsserver.DnssrvQuery2.zone", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DefaultRefreshInterval,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DefaultRefreshInterval,
{ "Defaultrefreshinterval", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.DefaultRefreshInterval", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_ZONE_ROOT,
+ { &hf_dnsserver_DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_ZONE_ROOT,
{ "Dns Rpc Flag Zone Root", "dnsserver.DNS_RPC_NODE_FLAGS.DNS_RPC_FLAG_ZONE_ROOT", FT_BOOLEAN, 32, TFS(&DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_ZONE_ROOT_tfs), ( 0x40000000 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_StrictFileParsing,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_StrictFileParsing,
{ "Strictfileparsing", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.StrictFileParsing", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_SELECT_FLAGS_DNS_RPC_VIEW_ROOT_HINT_DATA,
+ { &hf_dnsserver_DNS_SELECT_FLAGS_DNS_RPC_VIEW_ROOT_HINT_DATA,
{ "Dns Rpc View Root Hint Data", "dnsserver.DNS_SELECT_FLAGS.DNS_RPC_VIEW_ROOT_HINT_DATA", FT_BOOLEAN, 32, TFS(&DNS_SELECT_FLAGS_DNS_RPC_VIEW_ROOT_HINT_DATA_tfs), ( 0x00000008 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_SELECT_FLAGS_DNS_RPC_VIEW_GLUE_DATA,
+ { &hf_dnsserver_DNS_SELECT_FLAGS_DNS_RPC_VIEW_GLUE_DATA,
{ "Dns Rpc View Glue Data", "dnsserver.DNS_SELECT_FLAGS.DNS_RPC_VIEW_GLUE_DATA", FT_BOOLEAN, 32, TFS(&DNS_SELECT_FLAGS_DNS_RPC_VIEW_GLUE_DATA_tfs), ( 0x00000004 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DsForestVersion,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DsForestVersion,
{ "Dsforestversion", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.DsForestVersion", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNSSRV_RPC_UNION_ServerInfoDotnet,
+ { &hf_dnsserver_DNSSRV_RPC_UNION_ServerInfoDotnet,
{ "Serverinfodotnet", "dnsserver.DNSSRV_RPC_UNION.ServerInfoDotnet", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_LogFileMaxSize,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_LogFileMaxSize,
{ "Logfilemaxsize", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.LogFileMaxSize", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_MaxCacheTtl,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_MaxCacheTtl,
{ "Maxcachettl", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.MaxCacheTtl", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_RECORD_record,
+ { &hf_dnsserver_DNS_RPC_RECORD_record,
{ "Record", "dnsserver.DNS_RPC_RECORD.record", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_ScavengingInterval,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_ScavengingInterval,
{ "Scavenginginterval", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.ScavengingInterval", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_RecurseAfterForwarding,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_RecurseAfterForwarding,
{ "Recurseafterforwarding", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.RecurseAfterForwarding", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_SUPPRESS_NOTIFY,
+ { &hf_dnsserver_DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_SUPPRESS_NOTIFY,
{ "Dns Rpc Flag Suppress Notify", "dnsserver.DNS_RPC_NODE_FLAGS.DNS_RPC_FLAG_SUPPRESS_NOTIFY", FT_BOOLEAN, 32, TFS(&DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_SUPPRESS_NOTIFY_tfs), ( 0x00010000 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_Version,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_Version,
{ "Version", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.Version", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DnssrvQuery2_setting_flags,
+ { &hf_dnsserver_DnssrvQuery2_setting_flags,
{ "Setting Flags", "dnsserver.DnssrvQuery2.setting_flags", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_RECORD_reserved,
+ { &hf_dnsserver_DNS_RPC_RECORD_reserved,
{ "Reserved", "dnsserver.DNS_RPC_RECORD.reserved", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_CACHE_DATA,
+ { &hf_dnsserver_DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_CACHE_DATA,
{ "Dns Rpc Flag Cache Data", "dnsserver.DNS_RPC_NODE_FLAGS.DNS_RPC_FLAG_CACHE_DATA", FT_BOOLEAN, 32, TFS(&DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_CACHE_DATA_tfs), ( 0x80000000 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_ServerName,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_ServerName,
{ "Servername", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.ServerName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_AddressAnswerLimit,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_AddressAnswerLimit,
{ "Addressanswerlimit", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.AddressAnswerLimit", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_AllowUpdate,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_AllowUpdate,
{ "Allowupdate", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.AllowUpdate", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_PROTOCOLS_DNS_RPC_USE_TCPIP,
+ { &hf_dnsserver_DNS_RPC_PROTOCOLS_DNS_RPC_USE_TCPIP,
{ "Dns Rpc Use Tcpip", "dnsserver.DNS_RPC_PROTOCOLS.DNS_RPC_USE_TCPIP", FT_BOOLEAN, 32, TFS(&DNS_RPC_PROTOCOLS_DNS_RPC_USE_TCPIP_tfs), ( 0x00000001 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_SecureResponses,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_SecureResponses,
{ "Secureresponses", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.SecureResponses", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_IP4_ARRAY_AddrArray,
+ { &hf_dnsserver_IP4_ARRAY_AddrArray,
{ "Addrarray", "dnsserver.IP4_ARRAY.AddrArray", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_VERSION_ServicePackVersion,
+ { &hf_dnsserver_DNS_RPC_VERSION_ServicePackVersion,
{ "Servicepackversion", "dnsserver.DNS_RPC_VERSION.ServicePackVersion", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DebugLevel,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DebugLevel,
{ "Debuglevel", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.DebugLevel", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_RECORD_Type,
+ { &hf_dnsserver_DNS_RPC_RECORD_Type,
{ "Type", "dnsserver.DNS_RPC_RECORD.Type", FT_UINT16, BASE_DEC, VALS(dnsserver_DNS_RECORD_TYPE_vals), 0, NULL, HFILL }},
- { &hf_dnsserver_DNSSRV_RPC_UNION_null,
+ { &hf_dnsserver_DNSSRV_RPC_UNION_null,
{ "Null", "dnsserver.DNSSRV_RPC_UNION.null", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_NAME_Name,
+ { &hf_dnsserver_DNS_RPC_NAME_Name,
{ "Name", "dnsserver.DNS_RPC_NAME.Name", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_LogLevel,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_LogLevel,
{ "Loglevel", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.LogLevel", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_NODE_RecordCount,
+ { &hf_dnsserver_DNS_RPC_NODE_RecordCount,
{ "Recordcount", "dnsserver.DNS_RPC_NODE.RecordCount", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_NODE_Flags,
+ { &hf_dnsserver_DNS_RPC_NODE_Flags,
{ "Flags", "dnsserver.DNS_RPC_NODE.Flags", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_LOG_LEVELS_DNS_LOG_LEVEL_QUERY,
+ { &hf_dnsserver_DNS_LOG_LEVELS_DNS_LOG_LEVEL_QUERY,
{ "Dns Log Level Query", "dnsserver.DNS_LOG_LEVELS.DNS_LOG_LEVEL_QUERY", FT_BOOLEAN, 32, TFS(&DNS_LOG_LEVELS_DNS_LOG_LEVEL_QUERY_tfs), ( 0x00000001 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_LOG_LEVELS_DNS_LOG_LEVEL_UDP,
+ { &hf_dnsserver_DNS_LOG_LEVELS_DNS_LOG_LEVEL_UDP,
{ "Dns Log Level Udp", "dnsserver.DNS_LOG_LEVELS.DNS_LOG_LEVEL_UDP", FT_BOOLEAN, 32, TFS(&DNS_LOG_LEVELS_DNS_LOG_LEVEL_UDP_tfs), ( 0x00004000 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_LOG_LEVELS_DNS_LOG_LEVEL_TCP,
+ { &hf_dnsserver_DNS_LOG_LEVELS_DNS_LOG_LEVEL_TCP,
{ "Dns Log Level Tcp", "dnsserver.DNS_LOG_LEVELS.DNS_LOG_LEVEL_TCP", FT_BOOLEAN, 32, TFS(&DNS_LOG_LEVELS_DNS_LOG_LEVEL_TCP_tfs), ( 0x00008000 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DsPollingInterval,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DsPollingInterval,
{ "Dspollinginterval", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.DsPollingInterval", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_opnum,
+ { &hf_dnsserver_opnum,
{ "Operation", "dnsserver.opnum", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DsAvailable,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_DsAvailable,
{ "Dsavailable", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.DsAvailable", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_ForwardDelegations,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_ForwardDelegations,
{ "Forwarddelegations", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.ForwardDelegations", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_RECORD_Serial,
+ { &hf_dnsserver_DNS_RPC_RECORD_Serial,
{ "Serial", "dnsserver.DNS_RPC_RECORD.Serial", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DnssrvQuery2_operation,
+ { &hf_dnsserver_DnssrvQuery2_operation,
{ "Operation", "dnsserver.DnssrvQuery2.operation", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DnssrvQuery2_type_id,
+ { &hf_dnsserver_DnssrvQuery2_type_id,
{ "Type Id", "dnsserver.DnssrvQuery2.type_id", FT_UINT32, BASE_DEC, VALS(dnsserver_DnssrvRpcTypeId_vals), 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_NAME_NameLength,
+ { &hf_dnsserver_DNS_RPC_NAME_NameLength,
{ "Namelength", "dnsserver.DNS_RPC_NAME.NameLength", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_OPEN_ACL,
+ { &hf_dnsserver_DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_OPEN_ACL,
{ "Dns Rpc Flag Open Acl", "dnsserver.DNS_RPC_NODE_FLAGS.DNS_RPC_FLAG_OPEN_ACL", FT_BOOLEAN, 32, TFS(&DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_OPEN_ACL_tfs), ( 0x00040000 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_RECOR_DEFAULT_TTL,
+ { &hf_dnsserver_DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_RECOR_DEFAULT_TTL,
{ "Dns Rpc Flag Recor Default Ttl", "dnsserver.DNS_RPC_NODE_FLAGS.DNS_RPC_FLAG_RECOR_DEFAULT_TTL", FT_BOOLEAN, 32, TFS(&DNS_RPC_NODE_FLAGS_DNS_RPC_FLAG_RECOR_DEFAULT_TTL_tfs), ( 0x08000000 ), NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_EventLogLevel,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_EventLogLevel,
{ "Eventloglevel", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.EventLogLevel", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_LocalNetPriorityNetmask,
+ { &hf_dnsserver_DNS_RPC_SERVER_INFO_DOTNET_LocalNetPriorityNetmask,
{ "Localnetprioritynetmask", "dnsserver.DNS_RPC_SERVER_INFO_DOTNET.LocalNetPriorityNetmask", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
};
diff --git a/epan/dissectors/packet-dcerpc-drsuapi.c b/epan/dissectors/packet-dcerpc-drsuapi.c
index 210b1d7cf8..0c6c6e769e 100644
--- a/epan/dissectors/packet-dcerpc-drsuapi.c
+++ b/epan/dissectors/packet-dcerpc-drsuapi.c
@@ -1,7 +1,5 @@
/* DO NOT EDIT
* This dissector is autogenerated
- * (XXX - Is this true?)
- * Well, the IDL is in epan/dissectors/dcerpc/drsuapi/ ...
*/
/* packet-dcerpc-drsuapi.c
@@ -552,15 +550,13 @@ static gint ett_drsuapi_DsReplicaInfo = -1;
static int
ucarray_drsuapi_dissect_DsReplicaSyncRequest1Info_nc_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- header_field_info *hfinfo;
static guint32 len;
dcerpc_info *di;
- char *s;
int old_offset;
di=pinfo->private_data;
if(di->conformant_run){
- /*just a run to handle conformant arrays, nothing to dissect
+ /*just a run to handle conformant arrays, nothing to dissect
but we need to remember how long this array was.
see packet-dcerpc.c for examples of conformant_run
and what it is.
@@ -575,16 +571,9 @@ ucarray_drsuapi_dissect_DsReplicaSyncRequest1Info_nc_dn(tvbuff_t *tvb, int offse
ALIGN_TO_2_BYTES;
- s = tvb_get_unicode_string(tvb, offset, len*2, ENC_LITTLE_ENDIAN);
if (tree && len) {
- hfinfo = proto_registrar_get_nth(hf_drsuapi_DsReplicaSyncRequest1Info_nc_dn);
- if (hfinfo->type == FT_STRING) {
- proto_tree_add_string(tree, hf_drsuapi_DsReplicaSyncRequest1Info_nc_dn, tvb, offset,
- len, s);
- } else {
- proto_tree_add_item(tree, hf_drsuapi_DsReplicaSyncRequest1Info_nc_dn, tvb, offset,
- len, DREP_ENC_INTEGER(drep));
- }
+ proto_tree_add_item(tree, hf_drsuapi_DsReplicaSyncRequest1Info_nc_dn, tvb, offset,
+ len*2, ENC_UTF_16|ENC_LITTLE_ENDIAN);
}
offset+=2*len;
@@ -602,8 +591,8 @@ drsuapi_dissect_a_string(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tr
/* INCLUDED FILE : ETH_CODE */
static e_uuid_t uuid_dcerpc_drsuapi = {
- 0xe3514235, 0x4b06, 0x11d1,
- { 0xab, 0x04, 0x00, 0xc0, 0x4f, 0xc2, 0xdc, 0xd2}
+ 0xe3514235, 0x4b06, 0x11d1,
+ { 0xab, 0x04, 0x00, 0xc0, 0x4f, 0xc2, 0xdc, 0xd2}
};
static guint16 ver_drsuapi = 4;
@@ -789,8 +778,8 @@ drsuapi_dissect_SupportedExtensions(tvbuff_t *tvb, int offset, packet_info *pinf
ALIGN_TO_4_BYTES;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, 4, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_SupportedExtensions);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ tree=proto_item_add_subtree(item, ett_drsuapi_SupportedExtensions);
}
offset=dissect_ndr_uint32(tvb, offset, pinfo, NULL, drep, -1, &flags);
@@ -798,210 +787,210 @@ drsuapi_dissect_SupportedExtensions(tvbuff_t *tvb, int offset, packet_info *pinf
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_BASE, tvb, offset-4, 4, flags);
if(flags&0x00000001){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_BASE");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_BASE");
}
flags&=(~0x00000001);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION, tvb, offset-4, 4, flags);
if(flags&0x00000002){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION");
}
flags&=(~0x00000002);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI, tvb, offset-4, 4, flags);
if(flags&0x00000004){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI");
}
flags&=(~0x00000004);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2, tvb, offset-4, 4, flags);
if(flags&0x00000008){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2");
}
flags&=(~0x00000008);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS, tvb, offset-4, 4, flags);
if(flags&0x00000010){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS");
}
flags&=(~0x00000010);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1, tvb, offset-4, 4, flags);
if(flags&0x00000020){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1");
}
flags&=(~0x00000020);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION, tvb, offset-4, 4, flags);
if(flags&0x00000040){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION");
}
flags&=(~0x00000040);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_00000080, tvb, offset-4, 4, flags);
if(flags&0x00000080){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_00000080");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_00000080");
}
flags&=(~0x00000080);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE, tvb, offset-4, 4, flags);
if(flags&0x00000100){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE");
}
flags&=(~0x00000100);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2, tvb, offset-4, 4, flags);
if(flags&0x00000200){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2");
}
flags&=(~0x00000200);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION, tvb, offset-4, 4, flags);
if(flags&0x00000400){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION");
}
flags&=(~0x00000400);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2, tvb, offset-4, 4, flags);
if(flags&0x00000800){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2");
}
flags&=(~0x00000800);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD, tvb, offset-4, 4, flags);
if(flags&0x00001000){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD");
}
flags&=(~0x00001000);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND, tvb, offset-4, 4, flags);
if(flags&0x00002000){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND");
}
flags&=(~0x00002000);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO, tvb, offset-4, 4, flags);
if(flags&0x00004000){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO");
}
flags&=(~0x00004000);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION, tvb, offset-4, 4, flags);
if(flags&0x00008000){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION");
}
flags&=(~0x00008000);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01, tvb, offset-4, 4, flags);
if(flags&0x00010000){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01");
}
flags&=(~0x00010000);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP, tvb, offset-4, 4, flags);
if(flags&0x00020000){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP");
}
flags&=(~0x00020000);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY, tvb, offset-4, 4, flags);
if(flags&0x00040000){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY");
}
flags&=(~0x00040000);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3, tvb, offset-4, 4, flags);
if(flags&0x00080000){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3");
}
flags&=(~0x00080000);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_00100000, tvb, offset-4, 4, flags);
if(flags&0x00100000){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_00100000");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_00100000");
}
flags&=(~0x00100000);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2, tvb, offset-4, 4, flags);
if(flags&0x00200000){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2");
}
flags&=(~0x00200000);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6, tvb, offset-4, 4, flags);
if(flags&0x00400000){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6");
}
flags&=(~0x00400000);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS, tvb, offset-4, 4, flags);
if(flags&0x00800000){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS");
}
flags&=(~0x00800000);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8, tvb, offset-4, 4, flags);
if(flags&0x01000000){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8");
}
flags&=(~0x01000000);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5, tvb, offset-4, 4, flags);
if(flags&0x02000000){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5");
}
flags&=(~0x02000000);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6, tvb, offset-4, 4, flags);
if(flags&0x04000000){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6");
}
flags&=(~0x04000000);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3, tvb, offset-4, 4, flags);
if(flags&0x08000000){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3");
}
flags&=(~0x08000000);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7, tvb, offset-4, 4, flags);
if(flags&0x08000000){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7");
}
flags&=(~0x08000000);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT, tvb, offset-4, 4, flags);
if(flags&0x08000000){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT");
}
flags&=(~0x08000000);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS, tvb, offset-4, 4, flags);
if(flags&0x10000000){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS");
}
flags&=(~0x10000000);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_20000000, tvb, offset-4, 4, flags);
if(flags&0x20000000){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_20000000");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_20000000");
}
flags&=(~0x20000000);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_40000000, tvb, offset-4, 4, flags);
if(flags&0x40000000){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_40000000");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_40000000");
}
flags&=(~0x40000000);
proto_tree_add_boolean(tree, hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_80000000, tvb, offset-4, 4, flags);
if(flags&0x80000000){
- proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_80000000");
+ proto_item_append_text(item, " DRSUAPI_SUPPORTED_EXTENSION_80000000");
}
flags&=(~0x80000000);
if(flags){
- proto_item_append_text(item, "UNKNOWN-FLAGS");
+ proto_item_append_text(item, "UNKNOWN-FLAGS");
}
return offset;
@@ -1009,9 +998,9 @@ drsuapi_dissect_SupportedExtensions(tvbuff_t *tvb, int offset, packet_info *pinf
static int
drsuapi_dissect_DsBindInfo24_supported_extensions(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_SupportedExtensions(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsBindInfo24_supported_extensions, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_SupportedExtensions(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsBindInfo24_supported_extensions, param);
+ return offset;
}
@@ -1025,9 +1014,9 @@ drsuapi_dissect_GUID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *
static int
drsuapi_dissect_DsBindInfo24_site_guid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsBindInfo24_site_guid, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsBindInfo24_site_guid, param);
+ return offset;
}
@@ -1041,9 +1030,9 @@ drsuapi_dissect_uint32(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
static int
drsuapi_dissect_DsBindInfo24_u1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsBindInfo24_u1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsBindInfo24_u1, param);
+ return offset;
}
@@ -1058,8 +1047,8 @@ drsuapi_dissect_DsBindInfo24(tvbuff_t *tvb, int offset, packet_info *pinfo, prot
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsBindInfo24);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsBindInfo24);
}
offset=drsuapi_dissect_DsBindInfo24_supported_extensions(tvb, offset, pinfo, tree, drep);
@@ -1075,33 +1064,33 @@ drsuapi_dissect_DsBindInfo24(tvbuff_t *tvb, int offset, packet_info *pinfo, prot
static int
drsuapi_dissect_DsBindInfo28_supported_extensions(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_SupportedExtensions(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsBindInfo28_supported_extensions, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_SupportedExtensions(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsBindInfo28_supported_extensions, param);
+ return offset;
}
static int
drsuapi_dissect_DsBindInfo28_site_guid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsBindInfo28_site_guid, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsBindInfo28_site_guid, param);
+ return offset;
}
static int
drsuapi_dissect_DsBindInfo28_u1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsBindInfo28_u1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsBindInfo28_u1, param);
+ return offset;
}
static int
drsuapi_dissect_DsBindInfo28_repl_epoch(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsBindInfo28_repl_epoch, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsBindInfo28_repl_epoch, param);
+ return offset;
}
@@ -1116,8 +1105,8 @@ drsuapi_dissect_DsBindInfo28(tvbuff_t *tvb, int offset, packet_info *pinfo, prot
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsBindInfo28);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsBindInfo28);
}
offset=drsuapi_dissect_DsBindInfo28_supported_extensions(tvb, offset, pinfo, tree, drep);
@@ -1161,23 +1150,23 @@ drsuapi_dissect_union_DsBindInfo(tvbuff_t *tvb, int offset, packet_info *pinfo,
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsBindInfo");
- tree=proto_item_add_subtree(item, ett_drsuapi_DsBindInfo);
+ item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsBindInfo");
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsBindInfo);
}
offset=dissect_ndr_uint32(tvb, offset, pinfo, tree,
- drep, hf_index, &level);
+ drep, hf_index, &level);
switch(level){
case 24:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsBindInfo_24_info24(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsBindInfo_24_info24(tvb, offset, pinfo, tree, drep);
+ break;
case 28:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsBindInfo_28_info28(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsBindInfo_28_info28(tvb, offset, pinfo, tree, drep);
+ break;
}
@@ -1188,17 +1177,17 @@ drsuapi_dissect_union_DsBindInfo(tvbuff_t *tvb, int offset, packet_info *pinfo,
static int
drsuapi_dissect_DsBindInfoCtr_length(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsBindInfoCtr_length, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsBindInfoCtr_length, param);
+ return offset;
}
static int
drsuapi_dissect_DsBindInfoCtr_info(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_union_DsBindInfo(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsBindInfoCtr_info, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_union_DsBindInfo(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsBindInfoCtr_info, param);
+ return offset;
}
@@ -1213,8 +1202,8 @@ drsuapi_dissect_DsBindInfoCtr(tvbuff_t *tvb, int offset, packet_info *pinfo, pro
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsBindInfoCtr);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsBindInfoCtr);
}
offset=drsuapi_dissect_DsBindInfoCtr_length(tvb, offset, pinfo, tree, drep);
@@ -1263,8 +1252,8 @@ static int
drsuapi_dissect_policy_handle(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep, int hf_index, guint32 param)
{
offset = dissect_nt_policy_hnd(tvb, offset, pinfo, tree, drep,
- hf_index, &policy_hnd, &hnd_item,
- param&0x01, param&0x02);
+ hf_index, &policy_hnd, &hnd_item,
+ param&0x01, param&0x02);
return offset;
}
@@ -1287,11 +1276,11 @@ ref_drsuapi_dissect_DsBind_bind_handle(tvbuff_t *tvb, int offset, packet_info *p
static int
drsuapi_dissect_DsBind_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=unique_drsuapi_dissect_DsBind_bind_guid(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=unique_drsuapi_dissect_DsBind_bind_guid(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=unique_drsuapi_dissect_DsBind_bind_info(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=unique_drsuapi_dissect_DsBind_bind_info(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -1300,11 +1289,11 @@ drsuapi_dissect_DsBind_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *p
static int
drsuapi_dissect_DsBind_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=unique_drsuapi_dissect_DsBind_bind_info(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=unique_drsuapi_dissect_DsBind_bind_info(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ref_drsuapi_dissect_DsBind_bind_handle(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_drsuapi_dissect_DsBind_bind_handle(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_drsuapi_rc, NULL);
@@ -1330,8 +1319,8 @@ ref_drsuapi_dissect_DsUnbind_bind_handle(tvbuff_t *tvb, int offset, packet_info
static int
drsuapi_dissect_DsUnbind_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_drsuapi_dissect_DsUnbind_bind_handle(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_drsuapi_dissect_DsUnbind_bind_handle(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -1340,8 +1329,8 @@ drsuapi_dissect_DsUnbind_request(tvbuff_t *tvb _U_, int offset _U_, packet_info
static int
drsuapi_dissect_DsUnbind_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_drsuapi_dissect_DsUnbind_bind_handle(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_drsuapi_dissect_DsUnbind_bind_handle(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_drsuapi_rc, NULL);
@@ -1351,25 +1340,25 @@ drsuapi_dissect_DsUnbind_response(tvbuff_t *tvb _U_, int offset _U_, packet_info
static int
drsuapi_dissect_DsReplicaSyncRequest1Info_unknown1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaSyncRequest1Info_unknown1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaSyncRequest1Info_unknown1, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaSyncRequest1Info_unknown2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaSyncRequest1Info_unknown2, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaSyncRequest1Info_unknown2, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaSyncRequest1Info_guid1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaSyncRequest1Info_guid1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaSyncRequest1Info_guid1, param);
+ return offset;
}
@@ -1383,28 +1372,28 @@ drsuapi_dissect_uint8(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
static int
drsuapi_dissect_DsReplicaSyncRequest1Info_byte_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint8(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaSyncRequest1Info_byte_array, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint8(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaSyncRequest1Info_byte_array, param);
+ return offset;
}
static int
fixedarray_drsuapi_dissect_DsReplicaSyncRequest1Info_byte_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- int count=28;
- while(count--){
- offset=drsuapi_dissect_DsReplicaSyncRequest1Info_byte_array(tvb, offset, pinfo, tree, drep);
- }
+ int count=28;
+ while(count--){
+ offset=drsuapi_dissect_DsReplicaSyncRequest1Info_byte_array(tvb, offset, pinfo, tree, drep);
+ }
- return offset;
+ return offset;
}
static int
drsuapi_dissect_DsReplicaSyncRequest1Info_str_len(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaSyncRequest1Info_str_len, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaSyncRequest1Info_str_len, param);
+ return offset;
}
@@ -1429,8 +1418,8 @@ drsuapi_dissect_DsReplicaSyncRequest1Info(tvbuff_t *tvb, int offset, packet_info
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaSyncRequest1Info);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaSyncRequest1Info);
}
offset=drsuapi_dissect_DsReplicaSyncRequest1Info_unknown1(tvb, offset, pinfo, tree, drep);
@@ -1580,8 +1569,8 @@ drsuapi_dissect_DsReplicaSyncOptions(tvbuff_t *tvb, int offset, packet_info *pin
ALIGN_TO_4_BYTES;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, 4, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaSyncOptions);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaSyncOptions);
}
offset=dissect_ndr_uint32(tvb, offset, pinfo, NULL, drep, -1, &flags);
@@ -1589,150 +1578,150 @@ drsuapi_dissect_DsReplicaSyncOptions(tvbuff_t *tvb, int offset, packet_info *pin
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_OPERATION, tvb, offset-4, 4, flags);
if(flags&0x00000001){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_OPERATION");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_OPERATION");
}
flags&=(~0x00000001);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_WRITEABLE, tvb, offset-4, 4, flags);
if(flags&0x00000002){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_WRITEABLE");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_WRITEABLE");
}
flags&=(~0x00000002);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_PERIODIC, tvb, offset-4, 4, flags);
if(flags&0x00000004){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_PERIODIC");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_PERIODIC");
}
flags&=(~0x00000004);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_INTERSITE_MESSAGING, tvb, offset-4, 4, flags);
if(flags&0x00000008){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_INTERSITE_MESSAGING");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_INTERSITE_MESSAGING");
}
flags&=(~0x00000008);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_ALL_SOURCES, tvb, offset-4, 4, flags);
if(flags&0x00000010){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_ALL_SOURCES");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_ALL_SOURCES");
}
flags&=(~0x00000010);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_FULL, tvb, offset-4, 4, flags);
if(flags&0x00000020){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_FULL");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_FULL");
}
flags&=(~0x00000020);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_URGENT, tvb, offset-4, 4, flags);
if(flags&0x00000040){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_URGENT");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_URGENT");
}
flags&=(~0x00000040);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_NO_DISCARD, tvb, offset-4, 4, flags);
if(flags&0x00000080){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_NO_DISCARD");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_NO_DISCARD");
}
flags&=(~0x00000080);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_FORCE, tvb, offset-4, 4, flags);
if(flags&0x00000100){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_FORCE");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_FORCE");
}
flags&=(~0x00000100);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_ADD_REFERENCE, tvb, offset-4, 4, flags);
if(flags&0x00000200){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_ADD_REFERENCE");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_ADD_REFERENCE");
}
flags&=(~0x00000200);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_NEVER_COMPLETED, tvb, offset-4, 4, flags);
if(flags&0x00000400){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_NEVER_COMPLETED");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_NEVER_COMPLETED");
}
flags&=(~0x00000400);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_TWO_WAY, tvb, offset-4, 4, flags);
if(flags&0x00000800){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_TWO_WAY");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_TWO_WAY");
}
flags&=(~0x00000800);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_NEVER_NOTIFY, tvb, offset-4, 4, flags);
if(flags&0x00001000){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_NEVER_NOTIFY");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_NEVER_NOTIFY");
}
flags&=(~0x00001000);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_INITIAL, tvb, offset-4, 4, flags);
if(flags&0x00002000){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_INITIAL");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_INITIAL");
}
flags&=(~0x00002000);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_USE_COMPRESSION, tvb, offset-4, 4, flags);
if(flags&0x00004000){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_USE_COMPRESSION");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_USE_COMPRESSION");
}
flags&=(~0x00004000);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_ABANDONED, tvb, offset-4, 4, flags);
if(flags&0x00008000){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_ABANDONED");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_ABANDONED");
}
flags&=(~0x00008000);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_INITIAL_IN_PROGRESS, tvb, offset-4, 4, flags);
if(flags&0x00010000){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_INITIAL_IN_PROGRESS");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_INITIAL_IN_PROGRESS");
}
flags&=(~0x00010000);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_PARTIAL_ATTRIBUTE_SET, tvb, offset-4, 4, flags);
if(flags&0x00020000){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_PARTIAL_ATTRIBUTE_SET");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_PARTIAL_ATTRIBUTE_SET");
}
flags&=(~0x00020000);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_REQUEUE, tvb, offset-4, 4, flags);
if(flags&0x00040000){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_REQUEUE");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_REQUEUE");
}
flags&=(~0x00040000);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_NOTIFICATION, tvb, offset-4, 4, flags);
if(flags&0x00080000){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_NOTIFICATION");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_NOTIFICATION");
}
flags&=(~0x00080000);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_REPLICA, tvb, offset-4, 4, flags);
if(flags&0x00100000){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_REPLICA");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_REPLICA");
}
flags&=(~0x00100000);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_CRITICAL, tvb, offset-4, 4, flags);
if(flags&0x00200000){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_CRITICAL");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_CRITICAL");
}
flags&=(~0x00200000);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_FULL_IN_PROGRESS, tvb, offset-4, 4, flags);
if(flags&0x00400000){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_FULL_IN_PROGRESS");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_FULL_IN_PROGRESS");
}
flags&=(~0x00400000);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_PREEMPTED, tvb, offset-4, 4, flags);
if(flags&0x00800000){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_PREEMPTED");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_SYNC_PREEMPTED");
}
flags&=(~0x00800000);
if(flags){
- proto_item_append_text(item, "UNKNOWN-FLAGS");
+ proto_item_append_text(item, "UNKNOWN-FLAGS");
}
return offset;
@@ -1740,47 +1729,47 @@ drsuapi_dissect_DsReplicaSyncOptions(tvbuff_t *tvb, int offset, packet_info *pin
static int
drsuapi_dissect_DsReplicaSyncRequest1_info(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaSyncRequest1Info(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaSyncRequest1_info, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaSyncRequest1Info(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaSyncRequest1_info, param);
+ return offset;
}
static int
ref_drsuapi_dissect_DsReplicaSyncRequest1_info(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaSyncRequest1_info, NDR_POINTER_REF, "info", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaSyncRequest1_info, NDR_POINTER_REF, "info", -1);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaSyncRequest1_guid1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaSyncRequest1_guid1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaSyncRequest1_guid1, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaSyncRequest1_string1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_a_string(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaSyncRequest1_string1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_a_string(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaSyncRequest1_string1, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsReplicaSyncRequest1_string1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaSyncRequest1_string1, NDR_POINTER_UNIQUE, "string1", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaSyncRequest1_string1, NDR_POINTER_UNIQUE, "string1", -1);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaSyncRequest1_options(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaSyncOptions(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaSyncRequest1_options, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaSyncOptions(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaSyncRequest1_options, param);
+ return offset;
}
@@ -1795,8 +1784,8 @@ drsuapi_dissect_DsReplicaSyncRequest1(tvbuff_t *tvb, int offset, packet_info *pi
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaSyncRequest1);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaSyncRequest1);
}
offset=ref_drsuapi_dissect_DsReplicaSyncRequest1_info(tvb, offset, pinfo, tree, drep);
@@ -1840,18 +1829,18 @@ drsuapi_dissect_union_DsReplicaSyncRequest(tvbuff_t *tvb, int offset, packet_inf
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsReplicaSyncRequest");
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaSyncRequest);
+ item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsReplicaSyncRequest");
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaSyncRequest);
}
offset=dissect_ndr_uint32(tvb, offset, pinfo, tree,
- drep, hf_index, &level);
+ drep, hf_index, &level);
switch(level){
case 1:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsReplicaSyncRequest_1_req1(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsReplicaSyncRequest_1_req1(tvb, offset, pinfo, tree, drep);
+ break;
}
@@ -1901,14 +1890,14 @@ ref_drsuapi_dissect_DsReplicaSync_req(tvbuff_t *tvb, int offset, packet_info *pi
static int
drsuapi_dissect_DsReplicaSync_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_drsuapi_dissect_DsReplicaSync_bind_handle(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_drsuapi_dissect_DsReplicaSync_bind_handle(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=drsuapi_dissect_DsReplicaSync_level(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=drsuapi_dissect_DsReplicaSync_level(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=ref_drsuapi_dissect_DsReplicaSync_req(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_drsuapi_dissect_DsReplicaSync_req(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -1926,7 +1915,7 @@ drsuapi_dissect_DsReplicaSync_response(tvbuff_t *tvb _U_, int offset _U_, packet
static int
drsuapi_dissect_uint64(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep, int hf_index, guint32 param _U_)
{
-
+
ALIGN_TO_8_BYTES;
offset=dissect_ndr_uint64(tvb, offset, pinfo, tree, drep, hf_index, NULL);
@@ -1936,25 +1925,25 @@ drsuapi_dissect_uint64(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
static int
drsuapi_dissect_DsGetNCChangesUsnTriple_usn1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesUsnTriple_usn1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesUsnTriple_usn1, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesUsnTriple_usn2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesUsnTriple_usn2, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesUsnTriple_usn2, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesUsnTriple_usn3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesUsnTriple_usn3, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesUsnTriple_usn3, param);
+ return offset;
}
@@ -1969,8 +1958,8 @@ drsuapi_dissect_DsGetNCChangesUsnTriple(tvbuff_t *tvb, int offset, packet_info *
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsGetNCChangesUsnTriple);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsGetNCChangesUsnTriple);
}
offset=drsuapi_dissect_DsGetNCChangesUsnTriple_usn1(tvb, offset, pinfo, tree, drep);
@@ -1986,17 +1975,17 @@ drsuapi_dissect_DsGetNCChangesUsnTriple(tvbuff_t *tvb, int offset, packet_info *
static int
drsuapi_dissect_DsReplicaCoursor_source_dsa_invocation_id(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor_source_dsa_invocation_id, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor_source_dsa_invocation_id, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaCoursor_highest_usn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor_highest_usn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor_highest_usn, param);
+ return offset;
}
@@ -2011,8 +2000,8 @@ drsuapi_dissect_DsReplicaCoursor(tvbuff_t *tvb, int offset, packet_info *pinfo,
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaCoursor);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaCoursor);
}
offset=drsuapi_dissect_DsReplicaCoursor_source_dsa_invocation_id(tvb, offset, pinfo, tree, drep);
@@ -2026,48 +2015,48 @@ drsuapi_dissect_DsReplicaCoursor(tvbuff_t *tvb, int offset, packet_info *pinfo,
static int
drsuapi_dissect_DsReplicaCoursor05Ctr_u1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor05Ctr_u1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor05Ctr_u1, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaCoursor05Ctr_u2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor05Ctr_u2, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor05Ctr_u2, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaCoursor05Ctr_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor05Ctr_count, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor05Ctr_count, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaCoursor05Ctr_u3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor05Ctr_u3, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor05Ctr_u3, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaCoursor05Ctr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaCoursor(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor05Ctr_array, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaCoursor(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor05Ctr_array, param);
+ return offset;
}
static int
ucarray_drsuapi_dissect_DsReplicaCoursor05Ctr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaCoursor05Ctr_array);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaCoursor05Ctr_array);
+ return offset;
}
@@ -2082,8 +2071,8 @@ drsuapi_dissect_DsReplicaCoursor05Ctr(tvbuff_t *tvb, int offset, packet_info *pi
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaCoursor05Ctr);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaCoursor05Ctr);
}
offset=drsuapi_dissect_DsReplicaCoursor05Ctr_u1(tvb, offset, pinfo, tree, drep);
@@ -2103,95 +2092,95 @@ drsuapi_dissect_DsReplicaCoursor05Ctr(tvbuff_t *tvb, int offset, packet_info *pi
static int
drsuapi_dissect_DsGetNCChangesRequest5_guid1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest5_guid1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest5_guid1, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesRequest5_guid2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest5_guid2, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest5_guid2, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesRequest5_sync_req_info1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaSyncRequest1Info(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest5_sync_req_info1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaSyncRequest1Info(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest5_sync_req_info1, param);
+ return offset;
}
static int
ref_drsuapi_dissect_DsGetNCChangesRequest5_sync_req_info1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetNCChangesRequest5_sync_req_info1, NDR_POINTER_REF, "sync_req_info1", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetNCChangesRequest5_sync_req_info1, NDR_POINTER_REF, "sync_req_info1", -1);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesRequest5_usn1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsGetNCChangesUsnTriple(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest5_usn1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsGetNCChangesUsnTriple(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest5_usn1, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesRequest5_coursor(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaCoursor05Ctr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest5_coursor, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaCoursor05Ctr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest5_coursor, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsGetNCChangesRequest5_coursor(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetNCChangesRequest5_coursor, NDR_POINTER_UNIQUE, "coursor", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetNCChangesRequest5_coursor, NDR_POINTER_UNIQUE, "coursor", -1);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesRequest5_unknown1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest5_unknown1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest5_unknown1, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesRequest5_unknown2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest5_unknown2, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest5_unknown2, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesRequest5_unknown3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest5_unknown3, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest5_unknown3, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesRequest5_unknown4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest5_unknown4, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest5_unknown4, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesRequest5_h1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest5_h1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest5_h1, param);
+ return offset;
}
@@ -2206,8 +2195,8 @@ drsuapi_dissect_DsGetNCChangesRequest5(tvbuff_t *tvb, int offset, packet_info *p
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsGetNCChangesRequest5);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsGetNCChangesRequest5);
}
offset=drsuapi_dissect_DsGetNCChangesRequest5_guid1(tvb, offset, pinfo, tree, drep);
@@ -2237,31 +2226,31 @@ drsuapi_dissect_DsGetNCChangesRequest5(tvbuff_t *tvb, int offset, packet_info *p
static int
drsuapi_dissect_DsGetNCChangesRequest_Ctr14_length(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest_Ctr14_length, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest_Ctr14_length, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesRequest_Ctr14_byte_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint8(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest_Ctr14_byte_array, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint8(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest_Ctr14_byte_array, param);
+ return offset;
}
static int
ucarray_drsuapi_dissect_DsGetNCChangesRequest_Ctr14_byte_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetNCChangesRequest_Ctr14_byte_array);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetNCChangesRequest_Ctr14_byte_array);
+ return offset;
}
static int
unique_ucarray_drsuapi_dissect_DsGetNCChangesRequest_Ctr14_byte_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, ucarray_drsuapi_dissect_DsGetNCChangesRequest_Ctr14_byte_array, NDR_POINTER_UNIQUE, "byte_array", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, ucarray_drsuapi_dissect_DsGetNCChangesRequest_Ctr14_byte_array, NDR_POINTER_UNIQUE, "byte_array", -1);
+ return offset;
}
@@ -2276,8 +2265,8 @@ drsuapi_dissect_DsGetNCChangesRequest_Ctr14(tvbuff_t *tvb, int offset, packet_in
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsGetNCChangesRequest_Ctr14);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsGetNCChangesRequest_Ctr14);
}
offset=drsuapi_dissect_DsGetNCChangesRequest_Ctr14_length(tvb, offset, pinfo, tree, drep);
@@ -2291,17 +2280,17 @@ drsuapi_dissect_DsGetNCChangesRequest_Ctr14(tvbuff_t *tvb, int offset, packet_in
static int
drsuapi_dissect_DsGetNCChangesRequest_Ctr13_unknown1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest_Ctr13_unknown1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest_Ctr13_unknown1, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesRequest_Ctr13_data(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsGetNCChangesRequest_Ctr14(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest_Ctr13_data, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsGetNCChangesRequest_Ctr14(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest_Ctr13_data, param);
+ return offset;
}
@@ -2316,8 +2305,8 @@ drsuapi_dissect_DsGetNCChangesRequest_Ctr13(tvbuff_t *tvb, int offset, packet_in
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsGetNCChangesRequest_Ctr13);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsGetNCChangesRequest_Ctr13);
}
offset=drsuapi_dissect_DsGetNCChangesRequest_Ctr13_unknown1(tvb, offset, pinfo, tree, drep);
@@ -2331,31 +2320,31 @@ drsuapi_dissect_DsGetNCChangesRequest_Ctr13(tvbuff_t *tvb, int offset, packet_in
static int
drsuapi_dissect_DsGetNCChangesRequest_Ctr12_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest_Ctr12_count, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest_Ctr12_count, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesRequest_Ctr12_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsGetNCChangesRequest_Ctr13(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest_Ctr12_array, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsGetNCChangesRequest_Ctr13(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest_Ctr12_array, param);
+ return offset;
}
static int
ucarray_drsuapi_dissect_DsGetNCChangesRequest_Ctr12_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetNCChangesRequest_Ctr12_array);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetNCChangesRequest_Ctr12_array);
+ return offset;
}
static int
unique_ucarray_drsuapi_dissect_DsGetNCChangesRequest_Ctr12_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, ucarray_drsuapi_dissect_DsGetNCChangesRequest_Ctr12_array, NDR_POINTER_UNIQUE, "array", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, ucarray_drsuapi_dissect_DsGetNCChangesRequest_Ctr12_array, NDR_POINTER_UNIQUE, "array", -1);
+ return offset;
}
@@ -2370,8 +2359,8 @@ drsuapi_dissect_DsGetNCChangesRequest_Ctr12(tvbuff_t *tvb, int offset, packet_in
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsGetNCChangesRequest_Ctr12);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsGetNCChangesRequest_Ctr12);
}
offset=drsuapi_dissect_DsGetNCChangesRequest_Ctr12_count(tvb, offset, pinfo, tree, drep);
@@ -2385,119 +2374,119 @@ drsuapi_dissect_DsGetNCChangesRequest_Ctr12(tvbuff_t *tvb, int offset, packet_in
static int
drsuapi_dissect_DsGetNCChangesRequest8_guid1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_guid1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_guid1, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesRequest8_guid2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_guid2, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_guid2, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesRequest8_sync_req_info1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaSyncRequest1Info(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_sync_req_info1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaSyncRequest1Info(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_sync_req_info1, param);
+ return offset;
}
static int
ref_drsuapi_dissect_DsGetNCChangesRequest8_sync_req_info1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetNCChangesRequest8_sync_req_info1, NDR_POINTER_REF, "sync_req_info1", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetNCChangesRequest8_sync_req_info1, NDR_POINTER_REF, "sync_req_info1", -1);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesRequest8_usn1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsGetNCChangesUsnTriple(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_usn1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsGetNCChangesUsnTriple(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_usn1, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesRequest8_coursor(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaCoursor05Ctr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_coursor, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaCoursor05Ctr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_coursor, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsGetNCChangesRequest8_coursor(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetNCChangesRequest8_coursor, NDR_POINTER_UNIQUE, "coursor", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetNCChangesRequest8_coursor, NDR_POINTER_UNIQUE, "coursor", -1);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesRequest8_unknown1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_unknown1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_unknown1, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesRequest8_unknown2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_unknown2, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_unknown2, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesRequest8_unknown3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_unknown3, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_unknown3, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesRequest8_unknown4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_unknown4, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_unknown4, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesRequest8_h1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_h1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_h1, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesRequest8_unique_ptr1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_unique_ptr1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_unique_ptr1, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesRequest8_unique_ptr2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_unique_ptr2, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_unique_ptr2, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesRequest8_ctr12(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsGetNCChangesRequest_Ctr12(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_ctr12, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsGetNCChangesRequest_Ctr12(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesRequest8_ctr12, param);
+ return offset;
}
@@ -2512,8 +2501,8 @@ drsuapi_dissect_DsGetNCChangesRequest8(tvbuff_t *tvb, int offset, packet_info *p
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsGetNCChangesRequest8);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsGetNCChangesRequest8);
}
offset=drsuapi_dissect_DsGetNCChangesRequest8_guid1(tvb, offset, pinfo, tree, drep);
@@ -2575,23 +2564,23 @@ drsuapi_dissect_union_DsGetNCChangesRequest(tvbuff_t *tvb, int offset, packet_in
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsGetNCChangesRequest");
- tree=proto_item_add_subtree(item, ett_drsuapi_DsGetNCChangesRequest);
+ item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsGetNCChangesRequest");
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsGetNCChangesRequest);
}
offset=dissect_ndr_uint32(tvb, offset, pinfo, tree,
- drep, hf_index, &level);
+ drep, hf_index, &level);
switch(level){
case 5:
- ALIGN_TO_8_BYTES;
- offset=drsuapi_dissect_union_DsGetNCChangesRequest_5_req5(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_8_BYTES;
+ offset=drsuapi_dissect_union_DsGetNCChangesRequest_5_req5(tvb, offset, pinfo, tree, drep);
+ break;
case 8:
- ALIGN_TO_8_BYTES;
- offset=drsuapi_dissect_union_DsGetNCChangesRequest_8_req8(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_8_BYTES;
+ offset=drsuapi_dissect_union_DsGetNCChangesRequest_8_req8(tvb, offset, pinfo, tree, drep);
+ break;
}
@@ -2602,9 +2591,9 @@ drsuapi_dissect_union_DsGetNCChangesRequest(tvbuff_t *tvb, int offset, packet_in
static int
drsuapi_dissect_DsReplicaCoursorEx_coursor(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaCoursor(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursorEx_coursor, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaCoursor(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursorEx_coursor, param);
+ return offset;
}
@@ -2620,9 +2609,9 @@ drsuapi_dissect_NTTIME_1sec(tvbuff_t *tvb, int offset, packet_info *pinfo, proto
static int
drsuapi_dissect_DsReplicaCoursorEx_time1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_NTTIME_1sec(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursorEx_time1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_NTTIME_1sec(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursorEx_time1, param);
+ return offset;
}
@@ -2637,8 +2626,8 @@ drsuapi_dissect_DsReplicaCoursorEx(tvbuff_t *tvb, int offset, packet_info *pinfo
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaCoursorEx);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaCoursorEx);
}
offset=drsuapi_dissect_DsReplicaCoursorEx_coursor(tvb, offset, pinfo, tree, drep);
@@ -2652,48 +2641,48 @@ drsuapi_dissect_DsReplicaCoursorEx(tvbuff_t *tvb, int offset, packet_info *pinfo
static int
drsuapi_dissect_DsReplicaCoursorEx05Ctr_u1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursorEx05Ctr_u1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursorEx05Ctr_u1, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaCoursorEx05Ctr_u2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursorEx05Ctr_u2, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursorEx05Ctr_u2, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaCoursorEx05Ctr_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursorEx05Ctr_count, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursorEx05Ctr_count, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaCoursorEx05Ctr_u3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursorEx05Ctr_u3, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursorEx05Ctr_u3, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaCoursorEx05Ctr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaCoursorEx(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursorEx05Ctr_array, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaCoursorEx(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursorEx05Ctr_array, param);
+ return offset;
}
static int
ucarray_drsuapi_dissect_DsReplicaCoursorEx05Ctr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaCoursorEx05Ctr_array);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaCoursorEx05Ctr_array);
+ return offset;
}
@@ -2708,8 +2697,8 @@ drsuapi_dissect_DsReplicaCoursorEx05Ctr(tvbuff_t *tvb, int offset, packet_info *
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaCoursorEx05Ctr);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaCoursorEx05Ctr);
}
offset=drsuapi_dissect_DsReplicaCoursorEx05Ctr_u1(tvb, offset, pinfo, tree, drep);
@@ -2729,141 +2718,141 @@ drsuapi_dissect_DsReplicaCoursorEx05Ctr(tvbuff_t *tvb, int offset, packet_info *
static int
drsuapi_dissect_DsGetNCChangesCtr6_guid1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_guid1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_guid1, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesCtr6_guid2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_guid2, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_guid2, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesCtr6_sync_req_info1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaSyncRequest1Info(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_sync_req_info1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaSyncRequest1Info(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_sync_req_info1, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsGetNCChangesCtr6_sync_req_info1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetNCChangesCtr6_sync_req_info1, NDR_POINTER_UNIQUE, "sync_req_info1", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetNCChangesCtr6_sync_req_info1, NDR_POINTER_UNIQUE, "sync_req_info1", -1);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesCtr6_usn1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsGetNCChangesUsnTriple(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_usn1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsGetNCChangesUsnTriple(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_usn1, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesCtr6_usn2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsGetNCChangesUsnTriple(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_usn2, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsGetNCChangesUsnTriple(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_usn2, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesCtr6_coursor_ex(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaCoursorEx05Ctr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_coursor_ex, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaCoursorEx05Ctr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_coursor_ex, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsGetNCChangesCtr6_coursor_ex(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetNCChangesCtr6_coursor_ex, NDR_POINTER_UNIQUE, "coursor_ex", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetNCChangesCtr6_coursor_ex, NDR_POINTER_UNIQUE, "coursor_ex", -1);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesCtr6_ctr12(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsGetNCChangesRequest_Ctr12(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_ctr12, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsGetNCChangesRequest_Ctr12(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_ctr12, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesCtr6_u1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_u1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_u1, param);
+ return offset;
}
static int
fixedarray_drsuapi_dissect_DsGetNCChangesCtr6_u1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- int count=3;
- while(count--){
- offset=drsuapi_dissect_DsGetNCChangesCtr6_u1(tvb, offset, pinfo, tree, drep);
- }
+ int count=3;
+ while(count--){
+ offset=drsuapi_dissect_DsGetNCChangesCtr6_u1(tvb, offset, pinfo, tree, drep);
+ }
- return offset;
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesCtr6_ptr1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_ptr1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_ptr1, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesCtr6_u2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_u2, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_u2, param);
+ return offset;
}
static int
fixedarray_drsuapi_dissect_DsGetNCChangesCtr6_u2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- int count=3;
- while(count--){
- offset=drsuapi_dissect_DsGetNCChangesCtr6_u2(tvb, offset, pinfo, tree, drep);
- }
+ int count=3;
+ while(count--){
+ offset=drsuapi_dissect_DsGetNCChangesCtr6_u2(tvb, offset, pinfo, tree, drep);
+ }
- return offset;
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesCtr6_len1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_len1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_len1, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesCtr6_array_ptr1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_array_ptr1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_array_ptr1, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetNCChangesCtr6_u3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_u3, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetNCChangesCtr6_u3, param);
+ return offset;
}
@@ -2878,8 +2867,8 @@ drsuapi_dissect_DsGetNCChangesCtr6(tvbuff_t *tvb, int offset, packet_info *pinfo
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsGetNCChangesCtr6);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsGetNCChangesCtr6);
}
offset=drsuapi_dissect_DsGetNCChangesCtr6_guid1(tvb, offset, pinfo, tree, drep);
@@ -2922,8 +2911,8 @@ drsuapi_dissect_DsGetNCChangesCtr7(tvbuff_t *tvb, int offset, packet_info *pinfo
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsGetNCChangesCtr7);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsGetNCChangesCtr7);
}
proto_item_set_len(item, offset-old_offset);
@@ -2959,22 +2948,22 @@ drsuapi_dissect_union_DsGetNCChangesCtr(tvbuff_t *tvb, int offset, packet_info *
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsGetNCChangesCtr");
- tree=proto_item_add_subtree(item, ett_drsuapi_DsGetNCChangesCtr);
+ item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsGetNCChangesCtr");
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsGetNCChangesCtr);
}
offset=dissect_ndr_uint32(tvb, offset, pinfo, tree,
- drep, hf_index, &level);
+ drep, hf_index, &level);
switch(level){
case 6:
- ALIGN_TO_8_BYTES;
- offset=drsuapi_dissect_union_DsGetNCChangesCtr_6_ctr6(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_8_BYTES;
+ offset=drsuapi_dissect_union_DsGetNCChangesCtr_6_ctr6(tvb, offset, pinfo, tree, drep);
+ break;
case 7:
- offset=drsuapi_dissect_union_DsGetNCChangesCtr_7_ctr7(tvb, offset, pinfo, tree, drep);
- break;
+ offset=drsuapi_dissect_union_DsGetNCChangesCtr_7_ctr7(tvb, offset, pinfo, tree, drep);
+ break;
}
@@ -3025,14 +3014,14 @@ drsuapi_dissect_DsGetNCChanges_ctr(tvbuff_t *tvb, int offset, packet_info *pinfo
static int
drsuapi_dissect_DsGetNCChanges_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_drsuapi_dissect_DsGetNCChanges_bind_handle(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_drsuapi_dissect_DsGetNCChanges_bind_handle(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=drsuapi_dissect_DsGetNCChanges_level(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=drsuapi_dissect_DsGetNCChanges_level(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=drsuapi_dissect_DsGetNCChanges_req(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=drsuapi_dissect_DsGetNCChanges_req(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -3041,11 +3030,11 @@ drsuapi_dissect_DsGetNCChanges_request(tvbuff_t *tvb _U_, int offset _U_, packet
static int
drsuapi_dissect_DsGetNCChanges_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=drsuapi_dissect_DsGetNCChanges_level(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=drsuapi_dissect_DsGetNCChanges_level(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=drsuapi_dissect_DsGetNCChanges_ctr(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=drsuapi_dissect_DsGetNCChanges_ctr(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_drsuapi_rc, NULL);
@@ -3088,8 +3077,8 @@ drsuapi_dissect_DsReplicaUpdateRefsOptions(tvbuff_t *tvb, int offset, packet_inf
ALIGN_TO_4_BYTES;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, 4, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaUpdateRefsOptions);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaUpdateRefsOptions);
}
offset=dissect_ndr_uint32(tvb, offset, pinfo, NULL, drep, -1, &flags);
@@ -3097,36 +3086,36 @@ drsuapi_dissect_DsReplicaUpdateRefsOptions(tvbuff_t *tvb, int offset, packet_inf
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaUpdateRefsOptions_DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION, tvb, offset-4, 4, flags);
if(flags&0x00000001){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION");
}
flags&=(~0x00000001);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaUpdateRefsOptions_DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE, tvb, offset-4, 4, flags);
if(flags&0x00000002){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE");
}
flags&=(~0x00000002);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaUpdateRefsOptions_DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE, tvb, offset-4, 4, flags);
if(flags&0x00000004){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE");
}
flags&=(~0x00000004);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaUpdateRefsOptions_DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE, tvb, offset-4, 4, flags);
if(flags&0x00000008){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE");
}
flags&=(~0x00000008);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaUpdateRefsOptions_DRSUAPI_DS_REPLICA_UPDATE_0x00000010, tvb, offset-4, 4, flags);
if(flags&0x00000010){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_UPDATE_0x00000010");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_UPDATE_0x00000010");
}
flags&=(~0x00000010);
if(flags){
- proto_item_append_text(item, "UNKNOWN-FLAGS");
+ proto_item_append_text(item, "UNKNOWN-FLAGS");
}
return offset;
@@ -3134,41 +3123,41 @@ drsuapi_dissect_DsReplicaUpdateRefsOptions(tvbuff_t *tvb, int offset, packet_inf
static int
drsuapi_dissect_DsReplicaUpdateRefsRequest1_unknown1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaUpdateRefsRequest1_unknown1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaUpdateRefsRequest1_unknown1, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaUpdateRefsRequest1_unknown2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaUpdateRefsRequest1_unknown2, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaUpdateRefsRequest1_unknown2, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaUpdateRefsRequest1_dest_dsa_guid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaUpdateRefsRequest1_dest_dsa_guid, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaUpdateRefsRequest1_dest_dsa_guid, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaUpdateRefsRequest1_options(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaUpdateRefsOptions(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaUpdateRefsRequest1_options, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaUpdateRefsOptions(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaUpdateRefsRequest1_options, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaUpdateRefsRequest1_sync_req_info1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaSyncRequest1Info(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaUpdateRefsRequest1_sync_req_info1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaSyncRequest1Info(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaUpdateRefsRequest1_sync_req_info1, param);
+ return offset;
}
@@ -3182,9 +3171,9 @@ drsuapi_dissect_ascstr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
static int
drsuapi_dissect_DsReplicaUpdateRefsRequest1_dest_dsa_dns_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_ascstr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaUpdateRefsRequest1_dest_dsa_dns_name, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_ascstr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaUpdateRefsRequest1_dest_dsa_dns_name, param);
+ return offset;
}
@@ -3199,8 +3188,8 @@ drsuapi_dissect_DsReplicaUpdateRefsRequest1(tvbuff_t *tvb, int offset, packet_in
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaUpdateRefsRequest1);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaUpdateRefsRequest1);
}
offset=drsuapi_dissect_DsReplicaUpdateRefsRequest1_unknown1(tvb, offset, pinfo, tree, drep);
@@ -3240,18 +3229,18 @@ drsuapi_dissect_union_DsReplicaUpdateRefsRequest(tvbuff_t *tvb, int offset, pack
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsReplicaUpdateRefsRequest");
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaUpdateRefsRequest);
+ item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsReplicaUpdateRefsRequest");
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaUpdateRefsRequest);
}
offset=dissect_ndr_uint32(tvb, offset, pinfo, tree,
- drep, hf_index, &level);
+ drep, hf_index, &level);
switch(level){
case 1:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsReplicaUpdateRefsRequest_1_req1(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsReplicaUpdateRefsRequest_1_req1(tvb, offset, pinfo, tree, drep);
+ break;
}
@@ -3294,14 +3283,14 @@ drsuapi_dissect_DsReplicaUpdateRefs_req(tvbuff_t *tvb, int offset, packet_info *
static int
drsuapi_dissect_DsReplicaUpdateRefs_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_drsuapi_dissect_DsReplicaUpdateRefs_bind_handle(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_drsuapi_dissect_DsReplicaUpdateRefs_bind_handle(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=drsuapi_dissect_DsReplicaUpdateRefs_level(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=drsuapi_dissect_DsReplicaUpdateRefs_level(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=drsuapi_dissect_DsReplicaUpdateRefs_req(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=drsuapi_dissect_DsReplicaUpdateRefs_req(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -3336,8 +3325,8 @@ drsuapi_dissect_DsReplicaAddOptions(tvbuff_t *tvb, int offset, packet_info *pinf
ALIGN_TO_4_BYTES;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, 4, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaAddOptions);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaAddOptions);
}
offset=dissect_ndr_uint32(tvb, offset, pinfo, NULL, drep, -1, &flags);
@@ -3345,18 +3334,18 @@ drsuapi_dissect_DsReplicaAddOptions(tvbuff_t *tvb, int offset, packet_info *pinf
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaAddOptions_DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION, tvb, offset-4, 4, flags);
if(flags&0x00000001){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION");
}
flags&=(~0x00000001);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaAddOptions_DRSUAPI_DS_REPLICA_ADD_WRITEABLE, tvb, offset-4, 4, flags);
if(flags&0x00000002){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_ADD_WRITEABLE");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_ADD_WRITEABLE");
}
flags&=(~0x00000002);
if(flags){
- proto_item_append_text(item, "UNKNOWN-FLAGS");
+ proto_item_append_text(item, "UNKNOWN-FLAGS");
}
return offset;
@@ -3398,8 +3387,8 @@ drsuapi_dissect_DsReplicaDeleteOptions(tvbuff_t *tvb, int offset, packet_info *p
ALIGN_TO_4_BYTES;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, 4, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaDeleteOptions);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaDeleteOptions);
}
offset=dissect_ndr_uint32(tvb, offset, pinfo, NULL, drep, -1, &flags);
@@ -3407,18 +3396,18 @@ drsuapi_dissect_DsReplicaDeleteOptions(tvbuff_t *tvb, int offset, packet_info *p
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaDeleteOptions_DRSUAPI_DS_REPLICA_DELETE_ASYNCHRONOUS_OPERATION, tvb, offset-4, 4, flags);
if(flags&0x00000001){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_DELETE_ASYNCHRONOUS_OPERATION");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_DELETE_ASYNCHRONOUS_OPERATION");
}
flags&=(~0x00000001);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaDeleteOptions_DRSUAPI_DS_REPLICA_DELETE_WRITEABLE, tvb, offset-4, 4, flags);
if(flags&0x00000002){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_DELETE_WRITEABLE");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_DELETE_WRITEABLE");
}
flags&=(~0x00000002);
if(flags){
- proto_item_append_text(item, "UNKNOWN-FLAGS");
+ proto_item_append_text(item, "UNKNOWN-FLAGS");
}
return offset;
@@ -3460,8 +3449,8 @@ drsuapi_dissect_DsReplicaModifyOptions(tvbuff_t *tvb, int offset, packet_info *p
ALIGN_TO_4_BYTES;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, 4, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaModifyOptions);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaModifyOptions);
}
offset=dissect_ndr_uint32(tvb, offset, pinfo, NULL, drep, -1, &flags);
@@ -3469,18 +3458,18 @@ drsuapi_dissect_DsReplicaModifyOptions(tvbuff_t *tvb, int offset, packet_info *p
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaModifyOptions_DRSUAPI_DS_REPLICA_MODIFY_ASYNCHRONOUS_OPERATION, tvb, offset-4, 4, flags);
if(flags&0x00000001){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_MODIFY_ASYNCHRONOUS_OPERATION");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_MODIFY_ASYNCHRONOUS_OPERATION");
}
flags&=(~0x00000001);
proto_tree_add_boolean(tree, hf_drsuapi_DsReplicaModifyOptions_DRSUAPI_DS_REPLICA_MODIFY_WRITEABLE, tvb, offset-4, 4, flags);
if(flags&0x00000002){
- proto_item_append_text(item, " DRSUAPI_DS_REPLICA_MODIFY_WRITEABLE");
+ proto_item_append_text(item, " DRSUAPI_DS_REPLICA_MODIFY_WRITEABLE");
}
flags&=(~0x00000002);
if(flags){
- proto_item_append_text(item, "UNKNOWN-FLAGS");
+ proto_item_append_text(item, "UNKNOWN-FLAGS");
}
return offset;
@@ -3636,16 +3625,16 @@ drsuapi_dissect_unistr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
static int
drsuapi_dissect_DsNameString_str(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameString_str, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameString_str, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsNameString_str(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsNameString_str, NDR_POINTER_UNIQUE, "str", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsNameString_str, NDR_POINTER_UNIQUE, "str", -1);
+ return offset;
}
@@ -3660,8 +3649,8 @@ drsuapi_dissect_DsNameString(tvbuff_t *tvb, int offset, packet_info *pinfo, prot
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsNameString);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsNameString);
}
offset=unique_drsuapi_dissect_DsNameString_str(tvb, offset, pinfo, tree, drep);
@@ -3673,71 +3662,71 @@ drsuapi_dissect_DsNameString(tvbuff_t *tvb, int offset, packet_info *pinfo, prot
static int
drsuapi_dissect_DsNameRequest1_unknown1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameRequest1_unknown1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameRequest1_unknown1, param);
+ return offset;
}
static int
drsuapi_dissect_DsNameRequest1_unknown2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameRequest1_unknown2, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameRequest1_unknown2, param);
+ return offset;
}
static int
drsuapi_dissect_DsNameRequest1_format_flags(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsNameFlags(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameRequest1_format_flags, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsNameFlags(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameRequest1_format_flags, param);
+ return offset;
}
static int
drsuapi_dissect_DsNameRequest1_format_offered(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsNameFormat(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameRequest1_format_offered, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsNameFormat(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameRequest1_format_offered, param);
+ return offset;
}
static int
drsuapi_dissect_DsNameRequest1_format_desired(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsNameFormat(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameRequest1_format_desired, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsNameFormat(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameRequest1_format_desired, param);
+ return offset;
}
static int
drsuapi_dissect_DsNameRequest1_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameRequest1_count, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameRequest1_count, param);
+ return offset;
}
static int
drsuapi_dissect_DsNameRequest1_names(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsNameString(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameRequest1_names, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsNameString(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameRequest1_names, param);
+ return offset;
}
static int
ucarray_drsuapi_dissect_DsNameRequest1_names(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsNameRequest1_names);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsNameRequest1_names);
+ return offset;
}
static int
unique_ucarray_drsuapi_dissect_DsNameRequest1_names(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, ucarray_drsuapi_dissect_DsNameRequest1_names, NDR_POINTER_UNIQUE, "names", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, ucarray_drsuapi_dissect_DsNameRequest1_names, NDR_POINTER_UNIQUE, "names", -1);
+ return offset;
}
@@ -3752,8 +3741,8 @@ drsuapi_dissect_DsNameRequest1(tvbuff_t *tvb, int offset, packet_info *pinfo, pr
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsNameRequest1);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsNameRequest1);
}
offset=drsuapi_dissect_DsNameRequest1_unknown1(tvb, offset, pinfo, tree, drep);
@@ -3795,18 +3784,18 @@ drsuapi_dissect_union_DsNameRequest(tvbuff_t *tvb, int offset, packet_info *pinf
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsNameRequest");
- tree=proto_item_add_subtree(item, ett_drsuapi_DsNameRequest);
+ item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsNameRequest");
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsNameRequest);
}
offset=dissect_ndr_uint32(tvb, offset, pinfo, tree,
- drep, hf_index, &level);
+ drep, hf_index, &level);
switch(level){
case 1:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsNameRequest_1_req1(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsNameRequest_1_req1(tvb, offset, pinfo, tree, drep);
+ break;
}
@@ -3817,39 +3806,39 @@ drsuapi_dissect_union_DsNameRequest(tvbuff_t *tvb, int offset, packet_info *pinf
static int
drsuapi_dissect_DsNameInfo1_status(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsNameStatus(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameInfo1_status, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsNameStatus(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameInfo1_status, param);
+ return offset;
}
static int
drsuapi_dissect_DsNameInfo1_dns_domain_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameInfo1_dns_domain_name, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameInfo1_dns_domain_name, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsNameInfo1_dns_domain_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsNameInfo1_dns_domain_name, NDR_POINTER_UNIQUE, "dns_domain_name", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsNameInfo1_dns_domain_name, NDR_POINTER_UNIQUE, "dns_domain_name", -1);
+ return offset;
}
static int
drsuapi_dissect_DsNameInfo1_result_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameInfo1_result_name, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameInfo1_result_name, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsNameInfo1_result_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsNameInfo1_result_name, NDR_POINTER_UNIQUE, "result_name", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsNameInfo1_result_name, NDR_POINTER_UNIQUE, "result_name", -1);
+ return offset;
}
@@ -3864,8 +3853,8 @@ drsuapi_dissect_DsNameInfo1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsNameInfo1);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsNameInfo1);
}
offset=drsuapi_dissect_DsNameInfo1_status(tvb, offset, pinfo, tree, drep);
@@ -3881,31 +3870,31 @@ drsuapi_dissect_DsNameInfo1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto
static int
drsuapi_dissect_DsNameCtr1_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameCtr1_count, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameCtr1_count, param);
+ return offset;
}
static int
drsuapi_dissect_DsNameCtr1_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsNameInfo1(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameCtr1_array, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsNameInfo1(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsNameCtr1_array, param);
+ return offset;
}
static int
ucarray_drsuapi_dissect_DsNameCtr1_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsNameCtr1_array);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsNameCtr1_array);
+ return offset;
}
static int
unique_ucarray_drsuapi_dissect_DsNameCtr1_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, ucarray_drsuapi_dissect_DsNameCtr1_array, NDR_POINTER_UNIQUE, "array", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, ucarray_drsuapi_dissect_DsNameCtr1_array, NDR_POINTER_UNIQUE, "array", -1);
+ return offset;
}
@@ -3920,8 +3909,8 @@ drsuapi_dissect_DsNameCtr1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsNameCtr1);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsNameCtr1);
}
offset=drsuapi_dissect_DsNameCtr1_count(tvb, offset, pinfo, tree, drep);
@@ -3960,18 +3949,18 @@ drsuapi_dissect_union_DsNameCtr(tvbuff_t *tvb, int offset, packet_info *pinfo, p
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsNameCtr");
- tree=proto_item_add_subtree(item, ett_drsuapi_DsNameCtr);
+ item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsNameCtr");
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsNameCtr);
}
offset=dissect_ndr_uint32(tvb, offset, pinfo, tree,
- drep, hf_index, &level);
+ drep, hf_index, &level);
switch(level){
case 1:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsNameCtr_1_ctr1_unique(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsNameCtr_1_ctr1_unique(tvb, offset, pinfo, tree, drep);
+ break;
}
@@ -4022,14 +4011,14 @@ drsuapi_dissect_DsCrackNames_ctr(tvbuff_t *tvb, int offset, packet_info *pinfo,
static int
drsuapi_dissect_DsCrackNames_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_drsuapi_dissect_DsCrackNames_bind_handle(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_drsuapi_dissect_DsCrackNames_bind_handle(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=drsuapi_dissect_DsCrackNames_level(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=drsuapi_dissect_DsCrackNames_level(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=drsuapi_dissect_DsCrackNames_req(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=drsuapi_dissect_DsCrackNames_req(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -4038,11 +4027,11 @@ drsuapi_dissect_DsCrackNames_request(tvbuff_t *tvb _U_, int offset _U_, packet_i
static int
drsuapi_dissect_DsCrackNames_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=drsuapi_dissect_DsCrackNames_level(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=drsuapi_dissect_DsCrackNames_level(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=drsuapi_dissect_DsCrackNames_ctr(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=drsuapi_dissect_DsCrackNames_ctr(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_drsuapi_rc, NULL);
@@ -4067,62 +4056,62 @@ drsuapi_dissect_DsSpnOperation(tvbuff_t *tvb, int offset, packet_info *pinfo, pr
static int
drsuapi_dissect_DsWriteAccountSpnRequest1_operation(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsSpnOperation(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsWriteAccountSpnRequest1_operation, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsSpnOperation(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsWriteAccountSpnRequest1_operation, param);
+ return offset;
}
static int
drsuapi_dissect_DsWriteAccountSpnRequest1_unknown1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsWriteAccountSpnRequest1_unknown1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsWriteAccountSpnRequest1_unknown1, param);
+ return offset;
}
static int
drsuapi_dissect_DsWriteAccountSpnRequest1_object_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsWriteAccountSpnRequest1_object_dn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsWriteAccountSpnRequest1_object_dn, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsWriteAccountSpnRequest1_object_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsWriteAccountSpnRequest1_object_dn, NDR_POINTER_UNIQUE, "object_dn", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsWriteAccountSpnRequest1_object_dn, NDR_POINTER_UNIQUE, "object_dn", -1);
+ return offset;
}
static int
drsuapi_dissect_DsWriteAccountSpnRequest1_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsWriteAccountSpnRequest1_count, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsWriteAccountSpnRequest1_count, param);
+ return offset;
}
static int
drsuapi_dissect_DsWriteAccountSpnRequest1_spn_names(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsNameString(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsWriteAccountSpnRequest1_spn_names, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsNameString(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsWriteAccountSpnRequest1_spn_names, param);
+ return offset;
}
static int
ucarray_drsuapi_dissect_DsWriteAccountSpnRequest1_spn_names(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsWriteAccountSpnRequest1_spn_names);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsWriteAccountSpnRequest1_spn_names);
+ return offset;
}
static int
unique_ucarray_drsuapi_dissect_DsWriteAccountSpnRequest1_spn_names(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, ucarray_drsuapi_dissect_DsWriteAccountSpnRequest1_spn_names, NDR_POINTER_UNIQUE, "spn_names", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, ucarray_drsuapi_dissect_DsWriteAccountSpnRequest1_spn_names, NDR_POINTER_UNIQUE, "spn_names", -1);
+ return offset;
}
@@ -4137,8 +4126,8 @@ drsuapi_dissect_DsWriteAccountSpnRequest1(tvbuff_t *tvb, int offset, packet_info
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsWriteAccountSpnRequest1);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsWriteAccountSpnRequest1);
}
offset=drsuapi_dissect_DsWriteAccountSpnRequest1_operation(tvb, offset, pinfo, tree, drep);
@@ -4176,18 +4165,18 @@ drsuapi_dissect_union_DsWriteAccountSpnRequest(tvbuff_t *tvb, int offset, packet
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsWriteAccountSpnRequest");
- tree=proto_item_add_subtree(item, ett_drsuapi_DsWriteAccountSpnRequest);
+ item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsWriteAccountSpnRequest");
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsWriteAccountSpnRequest);
}
offset=dissect_ndr_uint32(tvb, offset, pinfo, tree,
- drep, hf_index, &level);
+ drep, hf_index, &level);
switch(level){
case 1:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsWriteAccountSpnRequest_1_req1(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsWriteAccountSpnRequest_1_req1(tvb, offset, pinfo, tree, drep);
+ break;
}
@@ -4199,7 +4188,7 @@ drsuapi_dissect_union_DsWriteAccountSpnRequest(tvbuff_t *tvb, int offset, packet
static int
drsuapi_dissect_WERROR(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep, int hf_index, guint32 param _U_)
{
-
+
offset=dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_index, NULL);
return offset;
@@ -4208,9 +4197,9 @@ drsuapi_dissect_WERROR(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
static int
drsuapi_dissect_DsWriteAccountSpnResult1_status(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_WERROR(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsWriteAccountSpnResult1_status, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_WERROR(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsWriteAccountSpnResult1_status, param);
+ return offset;
}
@@ -4225,8 +4214,8 @@ drsuapi_dissect_DsWriteAccountSpnResult1(tvbuff_t *tvb, int offset, packet_info
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsWriteAccountSpnResult1);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsWriteAccountSpnResult1);
}
offset=drsuapi_dissect_DsWriteAccountSpnResult1_status(tvb, offset, pinfo, tree, drep);
@@ -4256,18 +4245,18 @@ drsuapi_dissect_union_DsWriteAccountSpnResult(tvbuff_t *tvb, int offset, packet_
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsWriteAccountSpnResult");
- tree=proto_item_add_subtree(item, ett_drsuapi_DsWriteAccountSpnResult);
+ item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsWriteAccountSpnResult");
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsWriteAccountSpnResult);
}
offset=dissect_ndr_uint32(tvb, offset, pinfo, tree,
- drep, hf_index, &level);
+ drep, hf_index, &level);
switch(level){
case 1:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsWriteAccountSpnResult_1_res1(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsWriteAccountSpnResult_1_res1(tvb, offset, pinfo, tree, drep);
+ break;
}
@@ -4318,14 +4307,14 @@ drsuapi_dissect_DsWriteAccountSpn_res(tvbuff_t *tvb, int offset, packet_info *pi
static int
drsuapi_dissect_DsWriteAccountSpn_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_drsuapi_dissect_DsWriteAccountSpn_bind_handle(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_drsuapi_dissect_DsWriteAccountSpn_bind_handle(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=drsuapi_dissect_DsWriteAccountSpn_level(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=drsuapi_dissect_DsWriteAccountSpn_level(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=drsuapi_dissect_DsWriteAccountSpn_req(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=drsuapi_dissect_DsWriteAccountSpn_req(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -4334,11 +4323,11 @@ drsuapi_dissect_DsWriteAccountSpn_request(tvbuff_t *tvb _U_, int offset _U_, pac
static int
drsuapi_dissect_DsWriteAccountSpn_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=drsuapi_dissect_DsWriteAccountSpn_level(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=drsuapi_dissect_DsWriteAccountSpn_level(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=drsuapi_dissect_DsWriteAccountSpn_res(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=drsuapi_dissect_DsWriteAccountSpn_res(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_drsuapi_rc, NULL);
@@ -4380,24 +4369,24 @@ drsuapi_dissect_DRSUAPI_REMOVE_DS_DOMAIN_response(tvbuff_t *tvb _U_, int offset
static int
drsuapi_dissect_DsGetDCInfoRequest1_domain_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfoRequest1_domain_name, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfoRequest1_domain_name, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsGetDCInfoRequest1_domain_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfoRequest1_domain_name, NDR_POINTER_UNIQUE, "domain_name", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfoRequest1_domain_name, NDR_POINTER_UNIQUE, "domain_name", -1);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfoRequest1_level(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_int32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfoRequest1_level, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_int32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfoRequest1_level, param);
+ return offset;
}
@@ -4412,8 +4401,8 @@ drsuapi_dissect_DsGetDCInfoRequest1(tvbuff_t *tvb, int offset, packet_info *pinf
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsGetDCInfoRequest1);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsGetDCInfoRequest1);
}
offset=unique_drsuapi_dissect_DsGetDCInfoRequest1_domain_name(tvb, offset, pinfo, tree, drep);
@@ -4445,18 +4434,18 @@ drsuapi_dissect_union_DsGetDCInfoRequest(tvbuff_t *tvb, int offset, packet_info
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsGetDCInfoRequest");
- tree=proto_item_add_subtree(item, ett_drsuapi_DsGetDCInfoRequest);
+ item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsGetDCInfoRequest");
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsGetDCInfoRequest);
}
offset=dissect_ndr_uint32(tvb, offset, pinfo, tree,
- drep, hf_index, &level);
+ drep, hf_index, &level);
switch(level){
case 1:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsGetDCInfoRequest_1_req1(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsGetDCInfoRequest_1_req1(tvb, offset, pinfo, tree, drep);
+ break;
}
@@ -4467,92 +4456,92 @@ drsuapi_dissect_union_DsGetDCInfoRequest(tvbuff_t *tvb, int offset, packet_info
static int
drsuapi_dissect_DsGetDCInfo1_netbios_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo1_netbios_name, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo1_netbios_name, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsGetDCInfo1_netbios_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo1_netbios_name, NDR_POINTER_UNIQUE, "netbios_name", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo1_netbios_name, NDR_POINTER_UNIQUE, "netbios_name", -1);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfo1_dns_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo1_dns_name, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo1_dns_name, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsGetDCInfo1_dns_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo1_dns_name, NDR_POINTER_UNIQUE, "dns_name", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo1_dns_name, NDR_POINTER_UNIQUE, "dns_name", -1);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfo1_site_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo1_site_name, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo1_site_name, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsGetDCInfo1_site_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo1_site_name, NDR_POINTER_UNIQUE, "site_name", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo1_site_name, NDR_POINTER_UNIQUE, "site_name", -1);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfo1_computer_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo1_computer_dn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo1_computer_dn, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsGetDCInfo1_computer_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo1_computer_dn, NDR_POINTER_UNIQUE, "computer_dn", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo1_computer_dn, NDR_POINTER_UNIQUE, "computer_dn", -1);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfo1_server_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo1_server_dn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo1_server_dn, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsGetDCInfo1_server_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo1_server_dn, NDR_POINTER_UNIQUE, "server_dn", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo1_server_dn, NDR_POINTER_UNIQUE, "server_dn", -1);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfo1_is_pdc(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo1_is_pdc, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo1_is_pdc, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfo1_is_enabled(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo1_is_enabled, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo1_is_enabled, param);
+ return offset;
}
@@ -4567,8 +4556,8 @@ drsuapi_dissect_DsGetDCInfo1(tvbuff_t *tvb, int offset, packet_info *pinfo, prot
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsGetDCInfo1);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsGetDCInfo1);
}
offset=unique_drsuapi_dissect_DsGetDCInfo1_netbios_name(tvb, offset, pinfo, tree, drep);
@@ -4592,31 +4581,31 @@ drsuapi_dissect_DsGetDCInfo1(tvbuff_t *tvb, int offset, packet_info *pinfo, prot
static int
drsuapi_dissect_DsGetDCInfoCtr1_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfoCtr1_count, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfoCtr1_count, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfoCtr1_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsGetDCInfo1(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfoCtr1_array, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsGetDCInfo1(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfoCtr1_array, param);
+ return offset;
}
static int
ucarray_drsuapi_dissect_DsGetDCInfoCtr1_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfoCtr1_array);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfoCtr1_array);
+ return offset;
}
static int
unique_ucarray_drsuapi_dissect_DsGetDCInfoCtr1_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, ucarray_drsuapi_dissect_DsGetDCInfoCtr1_array, NDR_POINTER_UNIQUE, "array", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, ucarray_drsuapi_dissect_DsGetDCInfoCtr1_array, NDR_POINTER_UNIQUE, "array", -1);
+ return offset;
}
@@ -4631,8 +4620,8 @@ drsuapi_dissect_DsGetDCInfoCtr1(tvbuff_t *tvb, int offset, packet_info *pinfo, p
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsGetDCInfoCtr1);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsGetDCInfoCtr1);
}
offset=drsuapi_dissect_DsGetDCInfoCtr1_count(tvb, offset, pinfo, tree, drep);
@@ -4646,162 +4635,162 @@ drsuapi_dissect_DsGetDCInfoCtr1(tvbuff_t *tvb, int offset, packet_info *pinfo, p
static int
drsuapi_dissect_DsGetDCInfo2_netbios_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_netbios_name, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_netbios_name, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsGetDCInfo2_netbios_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo2_netbios_name, NDR_POINTER_UNIQUE, "netbios_name", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo2_netbios_name, NDR_POINTER_UNIQUE, "netbios_name", -1);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfo2_dns_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_dns_name, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_dns_name, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsGetDCInfo2_dns_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo2_dns_name, NDR_POINTER_UNIQUE, "dns_name", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo2_dns_name, NDR_POINTER_UNIQUE, "dns_name", -1);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfo2_site_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_site_name, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_site_name, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsGetDCInfo2_site_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo2_site_name, NDR_POINTER_UNIQUE, "site_name", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo2_site_name, NDR_POINTER_UNIQUE, "site_name", -1);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfo2_site_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_site_dn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_site_dn, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsGetDCInfo2_site_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo2_site_dn, NDR_POINTER_UNIQUE, "site_dn", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo2_site_dn, NDR_POINTER_UNIQUE, "site_dn", -1);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfo2_computer_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_computer_dn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_computer_dn, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsGetDCInfo2_computer_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo2_computer_dn, NDR_POINTER_UNIQUE, "computer_dn", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo2_computer_dn, NDR_POINTER_UNIQUE, "computer_dn", -1);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfo2_server_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_server_dn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_server_dn, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsGetDCInfo2_server_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo2_server_dn, NDR_POINTER_UNIQUE, "server_dn", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo2_server_dn, NDR_POINTER_UNIQUE, "server_dn", -1);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfo2_ntds_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_ntds_dn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_ntds_dn, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsGetDCInfo2_ntds_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo2_ntds_dn, NDR_POINTER_UNIQUE, "ntds_dn", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo2_ntds_dn, NDR_POINTER_UNIQUE, "ntds_dn", -1);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfo2_is_pdc(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_is_pdc, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_is_pdc, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfo2_is_enabled(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_is_enabled, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_is_enabled, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfo2_is_gc(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_is_gc, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_is_gc, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfo2_site_guid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_site_guid, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_site_guid, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfo2_computer_guid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_computer_guid, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_computer_guid, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfo2_server_guid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_server_guid, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_server_guid, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfo2_ntds_guid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_ntds_guid, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo2_ntds_guid, param);
+ return offset;
}
@@ -4816,8 +4805,8 @@ drsuapi_dissect_DsGetDCInfo2(tvbuff_t *tvb, int offset, packet_info *pinfo, prot
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsGetDCInfo2);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsGetDCInfo2);
}
offset=unique_drsuapi_dissect_DsGetDCInfo2_netbios_name(tvb, offset, pinfo, tree, drep);
@@ -4855,31 +4844,31 @@ drsuapi_dissect_DsGetDCInfo2(tvbuff_t *tvb, int offset, packet_info *pinfo, prot
static int
drsuapi_dissect_DsGetDCInfoCtr2_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfoCtr2_count, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfoCtr2_count, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfoCtr2_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsGetDCInfo2(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfoCtr2_array, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsGetDCInfo2(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfoCtr2_array, param);
+ return offset;
}
static int
ucarray_drsuapi_dissect_DsGetDCInfoCtr2_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfoCtr2_array);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfoCtr2_array);
+ return offset;
}
static int
unique_ucarray_drsuapi_dissect_DsGetDCInfoCtr2_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, ucarray_drsuapi_dissect_DsGetDCInfoCtr2_array, NDR_POINTER_UNIQUE, "array", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, ucarray_drsuapi_dissect_DsGetDCInfoCtr2_array, NDR_POINTER_UNIQUE, "array", -1);
+ return offset;
}
@@ -4894,8 +4883,8 @@ drsuapi_dissect_DsGetDCInfoCtr2(tvbuff_t *tvb, int offset, packet_info *pinfo, p
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsGetDCInfoCtr2);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsGetDCInfoCtr2);
}
offset=drsuapi_dissect_DsGetDCInfoCtr2_count(tvb, offset, pinfo, tree, drep);
@@ -4909,64 +4898,64 @@ drsuapi_dissect_DsGetDCInfoCtr2(tvbuff_t *tvb, int offset, packet_info *pinfo, p
static int
drsuapi_dissect_DsGetDCInfo01_unknown1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo01_unknown1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo01_unknown1, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfo01_unknown2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo01_unknown2, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo01_unknown2, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfo01_unknown3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo01_unknown3, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo01_unknown3, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfo01_unknown4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo01_unknown4, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo01_unknown4, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfo01_unknown5(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo01_unknown5, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo01_unknown5, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfo01_unknown6(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo01_unknown6, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo01_unknown6, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfo01_server_nt4_account(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo01_server_nt4_account, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfo01_server_nt4_account, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsGetDCInfo01_server_nt4_account(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo01_server_nt4_account, NDR_POINTER_UNIQUE, "server_nt4_account", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfo01_server_nt4_account, NDR_POINTER_UNIQUE, "server_nt4_account", -1);
+ return offset;
}
@@ -4981,8 +4970,8 @@ drsuapi_dissect_DsGetDCInfo01(tvbuff_t *tvb, int offset, packet_info *pinfo, pro
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsGetDCInfo01);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsGetDCInfo01);
}
offset=drsuapi_dissect_DsGetDCInfo01_unknown1(tvb, offset, pinfo, tree, drep);
@@ -5006,31 +4995,31 @@ drsuapi_dissect_DsGetDCInfo01(tvbuff_t *tvb, int offset, packet_info *pinfo, pro
static int
drsuapi_dissect_DsGetDCInfoCtr01_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfoCtr01_count, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfoCtr01_count, param);
+ return offset;
}
static int
drsuapi_dissect_DsGetDCInfoCtr01_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsGetDCInfo01(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfoCtr01_array, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsGetDCInfo01(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsGetDCInfoCtr01_array, param);
+ return offset;
}
static int
ucarray_drsuapi_dissect_DsGetDCInfoCtr01_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfoCtr01_array);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsGetDCInfoCtr01_array);
+ return offset;
}
static int
unique_ucarray_drsuapi_dissect_DsGetDCInfoCtr01_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, ucarray_drsuapi_dissect_DsGetDCInfoCtr01_array, NDR_POINTER_UNIQUE, "array", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, ucarray_drsuapi_dissect_DsGetDCInfoCtr01_array, NDR_POINTER_UNIQUE, "array", -1);
+ return offset;
}
@@ -5045,8 +5034,8 @@ drsuapi_dissect_DsGetDCInfoCtr01(tvbuff_t *tvb, int offset, packet_info *pinfo,
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsGetDCInfoCtr01);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsGetDCInfoCtr01);
}
offset=drsuapi_dissect_DsGetDCInfoCtr01_count(tvb, offset, pinfo, tree, drep);
@@ -5109,28 +5098,28 @@ drsuapi_dissect_union_DsGetDCInfoCtr(tvbuff_t *tvb, int offset, packet_info *pin
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsGetDCInfoCtr");
- tree=proto_item_add_subtree(item, ett_drsuapi_DsGetDCInfoCtr);
+ item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsGetDCInfoCtr");
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsGetDCInfoCtr);
}
offset=dissect_ndr_uint32(tvb, offset, pinfo, tree,
- drep, hf_index, &level);
+ drep, hf_index, &level);
switch(level){
case DRSUAPI_DC_INFO_CTR_1:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsGetDCInfoCtr_DRSUAPI_DC_INFO_CTR_1_ctr1(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsGetDCInfoCtr_DRSUAPI_DC_INFO_CTR_1_ctr1(tvb, offset, pinfo, tree, drep);
+ break;
case DRSUAPI_DC_INFO_CTR_2:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsGetDCInfoCtr_DRSUAPI_DC_INFO_CTR_2_ctr2(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsGetDCInfoCtr_DRSUAPI_DC_INFO_CTR_2_ctr2(tvb, offset, pinfo, tree, drep);
+ break;
case DRSUAPI_DC_INFO_CTR_01:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsGetDCInfoCtr_DRSUAPI_DC_INFO_CTR_01_ctr01(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsGetDCInfoCtr_DRSUAPI_DC_INFO_CTR_01_ctr01(tvb, offset, pinfo, tree, drep);
+ break;
}
@@ -5181,14 +5170,14 @@ drsuapi_dissect_DsGetDomainControllerInfo_ctr(tvbuff_t *tvb, int offset, packet_
static int
drsuapi_dissect_DsGetDomainControllerInfo_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_drsuapi_dissect_DsGetDomainControllerInfo_bind_handle(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_drsuapi_dissect_DsGetDomainControllerInfo_bind_handle(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=drsuapi_dissect_DsGetDomainControllerInfo_level(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=drsuapi_dissect_DsGetDomainControllerInfo_level(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=drsuapi_dissect_DsGetDomainControllerInfo_req(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=drsuapi_dissect_DsGetDomainControllerInfo_req(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -5197,11 +5186,11 @@ drsuapi_dissect_DsGetDomainControllerInfo_request(tvbuff_t *tvb _U_, int offset
static int
drsuapi_dissect_DsGetDomainControllerInfo_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=drsuapi_dissect_DsGetDomainControllerInfo_level(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=drsuapi_dissect_DsGetDomainControllerInfo_level(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=drsuapi_dissect_DsGetDomainControllerInfo_ctr(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=drsuapi_dissect_DsGetDomainControllerInfo_ctr(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_drsuapi_rc, NULL);
@@ -5284,32 +5273,32 @@ drsuapi_dissect_DsReplicaInfoType(tvbuff_t *tvb, int offset, packet_info *pinfo,
static int
drsuapi_dissect_DsReplicaGetInfoRequest1_info_type(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaInfoType(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaGetInfoRequest1_info_type, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaInfoType(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaGetInfoRequest1_info_type, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaGetInfoRequest1_object_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaGetInfoRequest1_object_dn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaGetInfoRequest1_object_dn, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsReplicaGetInfoRequest1_object_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaGetInfoRequest1_object_dn, NDR_POINTER_UNIQUE, "object_dn", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaGetInfoRequest1_object_dn, NDR_POINTER_UNIQUE, "object_dn", -1);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaGetInfoRequest1_guid1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaGetInfoRequest1_guid1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaGetInfoRequest1_guid1, param);
+ return offset;
}
@@ -5324,8 +5313,8 @@ drsuapi_dissect_DsReplicaGetInfoRequest1(tvbuff_t *tvb, int offset, packet_info
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaGetInfoRequest1);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaGetInfoRequest1);
}
offset=drsuapi_dissect_DsReplicaGetInfoRequest1_info_type(tvb, offset, pinfo, tree, drep);
@@ -5341,78 +5330,78 @@ drsuapi_dissect_DsReplicaGetInfoRequest1(tvbuff_t *tvb, int offset, packet_info
static int
drsuapi_dissect_DsReplicaGetInfoRequest2_info_type(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaInfoType(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaGetInfoRequest2_info_type, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaInfoType(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaGetInfoRequest2_info_type, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaGetInfoRequest2_object_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaGetInfoRequest2_object_dn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaGetInfoRequest2_object_dn, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsReplicaGetInfoRequest2_object_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaGetInfoRequest2_object_dn, NDR_POINTER_UNIQUE, "object_dn", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaGetInfoRequest2_object_dn, NDR_POINTER_UNIQUE, "object_dn", -1);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaGetInfoRequest2_guid1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaGetInfoRequest2_guid1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaGetInfoRequest2_guid1, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaGetInfoRequest2_unknown1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaGetInfoRequest2_unknown1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaGetInfoRequest2_unknown1, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaGetInfoRequest2_string1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaGetInfoRequest2_string1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaGetInfoRequest2_string1, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsReplicaGetInfoRequest2_string1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaGetInfoRequest2_string1, NDR_POINTER_UNIQUE, "string1", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaGetInfoRequest2_string1, NDR_POINTER_UNIQUE, "string1", -1);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaGetInfoRequest2_string2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaGetInfoRequest2_string2, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaGetInfoRequest2_string2, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsReplicaGetInfoRequest2_string2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaGetInfoRequest2_string2, NDR_POINTER_UNIQUE, "string2", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaGetInfoRequest2_string2, NDR_POINTER_UNIQUE, "string2", -1);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaGetInfoRequest2_unknown2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaGetInfoRequest2_unknown2, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaGetInfoRequest2_unknown2, param);
+ return offset;
}
@@ -5427,8 +5416,8 @@ drsuapi_dissect_DsReplicaGetInfoRequest2(tvbuff_t *tvb, int offset, packet_info
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaGetInfoRequest2);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaGetInfoRequest2);
}
offset=drsuapi_dissect_DsReplicaGetInfoRequest2_info_type(tvb, offset, pinfo, tree, drep);
@@ -5478,23 +5467,23 @@ drsuapi_dissect_union_DsReplicaGetInfoRequest(tvbuff_t *tvb, int offset, packet_
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsReplicaGetInfoRequest");
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaGetInfoRequest);
+ item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsReplicaGetInfoRequest");
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaGetInfoRequest);
}
offset=dissect_ndr_uint32(tvb, offset, pinfo, tree,
- drep, hf_index, &level);
+ drep, hf_index, &level);
switch(level){
case DRSUAPI_DS_REPLICA_GET_INFO:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsReplicaGetInfoRequest_DRSUAPI_DS_REPLICA_GET_INFO_req1(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsReplicaGetInfoRequest_DRSUAPI_DS_REPLICA_GET_INFO_req1(tvb, offset, pinfo, tree, drep);
+ break;
case DRSUAPI_DS_REPLICA_GET_INFO2:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsReplicaGetInfoRequest_DRSUAPI_DS_REPLICA_GET_INFO2_req2(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsReplicaGetInfoRequest_DRSUAPI_DS_REPLICA_GET_INFO2_req2(tvb, offset, pinfo, tree, drep);
+ break;
}
@@ -5505,125 +5494,125 @@ drsuapi_dissect_union_DsReplicaGetInfoRequest(tvbuff_t *tvb, int offset, packet_
static int
drsuapi_dissect_DsReplicaNeighbour_naming_context_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_naming_context_dn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_naming_context_dn, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsReplicaNeighbour_naming_context_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaNeighbour_naming_context_dn, NDR_POINTER_UNIQUE, "naming_context_dn", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaNeighbour_naming_context_dn, NDR_POINTER_UNIQUE, "naming_context_dn", -1);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaNeighbour_source_dsa_obj_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_source_dsa_obj_dn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_source_dsa_obj_dn, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsReplicaNeighbour_source_dsa_obj_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaNeighbour_source_dsa_obj_dn, NDR_POINTER_UNIQUE, "source_dsa_obj_dn", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaNeighbour_source_dsa_obj_dn, NDR_POINTER_UNIQUE, "source_dsa_obj_dn", -1);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaNeighbour_source_dsa_address(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_source_dsa_address, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_source_dsa_address, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsReplicaNeighbour_source_dsa_address(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaNeighbour_source_dsa_address, NDR_POINTER_UNIQUE, "source_dsa_address", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaNeighbour_source_dsa_address, NDR_POINTER_UNIQUE, "source_dsa_address", -1);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaNeighbour_transport_obj_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_transport_obj_dn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_transport_obj_dn, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsReplicaNeighbour_transport_obj_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaNeighbour_transport_obj_dn, NDR_POINTER_UNIQUE, "transport_obj_dn", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaNeighbour_transport_obj_dn, NDR_POINTER_UNIQUE, "transport_obj_dn", -1);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaNeighbour_replica_flags(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_replica_flags, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_replica_flags, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaNeighbour_reserved(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_reserved, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_reserved, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaNeighbour_naming_context_obj_guid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_naming_context_obj_guid, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_naming_context_obj_guid, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaNeighbour_source_dsa_obj_guid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_source_dsa_obj_guid, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_source_dsa_obj_guid, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaNeighbour_source_dsa_invocation_id(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_source_dsa_invocation_id, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_source_dsa_invocation_id, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaNeighbour_transport_obj_guid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_transport_obj_guid, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_transport_obj_guid, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaNeighbour_tmp_highest_usn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_tmp_highest_usn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_tmp_highest_usn, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaNeighbour_highest_usn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_highest_usn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_highest_usn, param);
+ return offset;
}
@@ -5638,33 +5627,33 @@ drsuapi_dissect_NTTIME(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
static int
drsuapi_dissect_DsReplicaNeighbour_last_success(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_last_success, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_last_success, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaNeighbour_last_attempt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_last_attempt, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_last_attempt, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaNeighbour_result_last_attempt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_WERROR(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_result_last_attempt, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_WERROR(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_result_last_attempt, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaNeighbour_consecutive_sync_failures(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_consecutive_sync_failures, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_consecutive_sync_failures, param);
+ return offset;
}
@@ -5679,8 +5668,8 @@ drsuapi_dissect_DsReplicaNeighbour(tvbuff_t *tvb, int offset, packet_info *pinfo
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaNeighbour);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaNeighbour);
}
offset=unique_drsuapi_dissect_DsReplicaNeighbour_naming_context_dn(tvb, offset, pinfo, tree, drep);
@@ -5722,32 +5711,32 @@ drsuapi_dissect_DsReplicaNeighbour(tvbuff_t *tvb, int offset, packet_info *pinfo
static int
drsuapi_dissect_DsReplicaNeighbourCtr_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbourCtr_count, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbourCtr_count, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaNeighbourCtr_reserved(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbourCtr_reserved, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbourCtr_reserved, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaNeighbourCtr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaNeighbour(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbourCtr_array, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaNeighbour(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbourCtr_array, param);
+ return offset;
}
static int
ucarray_drsuapi_dissect_DsReplicaNeighbourCtr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaNeighbourCtr_array);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaNeighbourCtr_array);
+ return offset;
}
@@ -5762,8 +5751,8 @@ drsuapi_dissect_DsReplicaNeighbourCtr(tvbuff_t *tvb, int offset, packet_info *pi
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaNeighbourCtr);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaNeighbourCtr);
}
offset=drsuapi_dissect_DsReplicaNeighbourCtr_count(tvb, offset, pinfo, tree, drep);
@@ -5779,32 +5768,32 @@ drsuapi_dissect_DsReplicaNeighbourCtr(tvbuff_t *tvb, int offset, packet_info *pi
static int
drsuapi_dissect_DsReplicaCoursorCtr_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursorCtr_count, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursorCtr_count, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaCoursorCtr_reserved(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursorCtr_reserved, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursorCtr_reserved, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaCoursorCtr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaCoursor(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursorCtr_array, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaCoursor(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursorCtr_array, param);
+ return offset;
}
static int
ucarray_drsuapi_dissect_DsReplicaCoursorCtr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaCoursorCtr_array);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaCoursorCtr_array);
+ return offset;
}
@@ -5819,8 +5808,8 @@ drsuapi_dissect_DsReplicaCoursorCtr(tvbuff_t *tvb, int offset, packet_info *pinf
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaCoursorCtr);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaCoursorCtr);
}
offset=drsuapi_dissect_DsReplicaCoursorCtr_count(tvb, offset, pinfo, tree, drep);
@@ -5836,56 +5825,56 @@ drsuapi_dissect_DsReplicaCoursorCtr(tvbuff_t *tvb, int offset, packet_info *pinf
static int
drsuapi_dissect_DsReplicaObjMetaData_attribute_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData_attribute_name, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData_attribute_name, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsReplicaObjMetaData_attribute_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaObjMetaData_attribute_name, NDR_POINTER_UNIQUE, "attribute_name", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaObjMetaData_attribute_name, NDR_POINTER_UNIQUE, "attribute_name", -1);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaObjMetaData_version(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData_version, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData_version, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaObjMetaData_originating_last_changed(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData_originating_last_changed, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData_originating_last_changed, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaObjMetaData_originating_dsa_invocation_id(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData_originating_dsa_invocation_id, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData_originating_dsa_invocation_id, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaObjMetaData_originating_usn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData_originating_usn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData_originating_usn, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaObjMetaData_local_usn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData_local_usn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData_local_usn, param);
+ return offset;
}
@@ -5900,8 +5889,8 @@ drsuapi_dissect_DsReplicaObjMetaData(tvbuff_t *tvb, int offset, packet_info *pin
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaObjMetaData);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaObjMetaData);
}
offset=unique_drsuapi_dissect_DsReplicaObjMetaData_attribute_name(tvb, offset, pinfo, tree, drep);
@@ -5923,32 +5912,32 @@ drsuapi_dissect_DsReplicaObjMetaData(tvbuff_t *tvb, int offset, packet_info *pin
static int
drsuapi_dissect_DsReplicaObjMetaDataCtr_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaDataCtr_count, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaDataCtr_count, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaObjMetaDataCtr_reserved(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaDataCtr_reserved, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaDataCtr_reserved, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaObjMetaDataCtr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaObjMetaData(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaDataCtr_array, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaObjMetaData(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaDataCtr_array, param);
+ return offset;
}
static int
ucarray_drsuapi_dissect_DsReplicaObjMetaDataCtr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaObjMetaDataCtr_array);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaObjMetaDataCtr_array);
+ return offset;
}
@@ -5963,8 +5952,8 @@ drsuapi_dissect_DsReplicaObjMetaDataCtr(tvbuff_t *tvb, int offset, packet_info *
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaObjMetaDataCtr);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaObjMetaDataCtr);
}
offset=drsuapi_dissect_DsReplicaObjMetaDataCtr_count(tvb, offset, pinfo, tree, drep);
@@ -5980,48 +5969,48 @@ drsuapi_dissect_DsReplicaObjMetaDataCtr(tvbuff_t *tvb, int offset, packet_info *
static int
drsuapi_dissect_DsReplicaKccDsaFailure_dsa_obj_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaKccDsaFailure_dsa_obj_dn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaKccDsaFailure_dsa_obj_dn, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsReplicaKccDsaFailure_dsa_obj_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaKccDsaFailure_dsa_obj_dn, NDR_POINTER_UNIQUE, "dsa_obj_dn", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaKccDsaFailure_dsa_obj_dn, NDR_POINTER_UNIQUE, "dsa_obj_dn", -1);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaKccDsaFailure_dsa_obj_guid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaKccDsaFailure_dsa_obj_guid, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaKccDsaFailure_dsa_obj_guid, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaKccDsaFailure_first_failure(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaKccDsaFailure_first_failure, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaKccDsaFailure_first_failure, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaKccDsaFailure_num_failures(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaKccDsaFailure_num_failures, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaKccDsaFailure_num_failures, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaKccDsaFailure_last_result(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_WERROR(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaKccDsaFailure_last_result, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_WERROR(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaKccDsaFailure_last_result, param);
+ return offset;
}
@@ -6036,8 +6025,8 @@ drsuapi_dissect_DsReplicaKccDsaFailure(tvbuff_t *tvb, int offset, packet_info *p
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaKccDsaFailure);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaKccDsaFailure);
}
offset=unique_drsuapi_dissect_DsReplicaKccDsaFailure_dsa_obj_dn(tvb, offset, pinfo, tree, drep);
@@ -6057,32 +6046,32 @@ drsuapi_dissect_DsReplicaKccDsaFailure(tvbuff_t *tvb, int offset, packet_info *p
static int
drsuapi_dissect_DsReplicaKccDsaFailuresCtr_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaKccDsaFailuresCtr_count, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaKccDsaFailuresCtr_count, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaKccDsaFailuresCtr_reserved(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaKccDsaFailuresCtr_reserved, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaKccDsaFailuresCtr_reserved, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaKccDsaFailuresCtr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaKccDsaFailure(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaKccDsaFailuresCtr_array, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaKccDsaFailure(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaKccDsaFailuresCtr_array, param);
+ return offset;
}
static int
ucarray_drsuapi_dissect_DsReplicaKccDsaFailuresCtr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaKccDsaFailuresCtr_array);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaKccDsaFailuresCtr_array);
+ return offset;
}
@@ -6097,8 +6086,8 @@ drsuapi_dissect_DsReplicaKccDsaFailuresCtr(tvbuff_t *tvb, int offset, packet_inf
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaKccDsaFailuresCtr);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaKccDsaFailuresCtr);
}
offset=drsuapi_dissect_DsReplicaKccDsaFailuresCtr_count(tvb, offset, pinfo, tree, drep);
@@ -6183,49 +6172,49 @@ drsuapi_dissect_union_DsRplicaOpOptions(tvbuff_t *tvb, int offset, packet_info *
proto_item *item=NULL;
proto_tree *tree=NULL;
int old_offset;
- guint16 level = 0;
+ guint16 level;
ALIGN_TO_2_BYTES;
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsRplicaOpOptions");
- tree=proto_item_add_subtree(item, ett_drsuapi_DsRplicaOpOptions);
+ item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsRplicaOpOptions");
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsRplicaOpOptions);
}
offset=dissect_ndr_uint16(tvb, offset, pinfo, tree,
- drep, hf_index, &level);
+ drep, hf_index, &level);
switch(level){
case DRSUAPI_DS_REPLICA_OP_TYPE_SYNC:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsRplicaOpOptions_DRSUAPI_DS_REPLICA_OP_TYPE_SYNC_sync(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsRplicaOpOptions_DRSUAPI_DS_REPLICA_OP_TYPE_SYNC_sync(tvb, offset, pinfo, tree, drep);
+ break;
case DRSUAPI_DS_REPLICA_OP_TYPE_ADD:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsRplicaOpOptions_DRSUAPI_DS_REPLICA_OP_TYPE_ADD_add(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsRplicaOpOptions_DRSUAPI_DS_REPLICA_OP_TYPE_ADD_add(tvb, offset, pinfo, tree, drep);
+ break;
case DRSUAPI_DS_REPLICA_OP_TYPE_DELETE:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsRplicaOpOptions_DRSUAPI_DS_REPLICA_OP_TYPE_DELETE_delete(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsRplicaOpOptions_DRSUAPI_DS_REPLICA_OP_TYPE_DELETE_delete(tvb, offset, pinfo, tree, drep);
+ break;
case DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsRplicaOpOptions_DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY_modify(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsRplicaOpOptions_DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY_modify(tvb, offset, pinfo, tree, drep);
+ break;
case DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsRplicaOpOptions_DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS_update_refs(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsRplicaOpOptions_DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS_update_refs(tvb, offset, pinfo, tree, drep);
+ break;
default:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsRplicaOpOptions_default_unknown(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsRplicaOpOptions_default_unknown(tvb, offset, pinfo, tree, drep);
+ break;
}
@@ -6236,102 +6225,102 @@ drsuapi_dissect_union_DsRplicaOpOptions(tvbuff_t *tvb, int offset, packet_info *
static int
drsuapi_dissect_DsReplicaOp_operation_start(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOp_operation_start, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOp_operation_start, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaOp_serial_num(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOp_serial_num, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOp_serial_num, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaOp_priority(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOp_priority, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOp_priority, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaOp_operation_type(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaOpType(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOp_operation_type, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaOpType(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOp_operation_type, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaOp_options(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_union_DsRplicaOpOptions(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOp_options, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_union_DsRplicaOpOptions(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOp_options, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaOp_nc_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOp_nc_dn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOp_nc_dn, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsReplicaOp_nc_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaOp_nc_dn, NDR_POINTER_UNIQUE, "nc_dn", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaOp_nc_dn, NDR_POINTER_UNIQUE, "nc_dn", -1);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaOp_remote_dsa_obj_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOp_remote_dsa_obj_dn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOp_remote_dsa_obj_dn, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsReplicaOp_remote_dsa_obj_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaOp_remote_dsa_obj_dn, NDR_POINTER_UNIQUE, "remote_dsa_obj_dn", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaOp_remote_dsa_obj_dn, NDR_POINTER_UNIQUE, "remote_dsa_obj_dn", -1);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaOp_remote_dsa_address(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOp_remote_dsa_address, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOp_remote_dsa_address, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsReplicaOp_remote_dsa_address(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaOp_remote_dsa_address, NDR_POINTER_UNIQUE, "remote_dsa_address", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaOp_remote_dsa_address, NDR_POINTER_UNIQUE, "remote_dsa_address", -1);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaOp_nc_obj_guid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOp_nc_obj_guid, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOp_nc_obj_guid, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaOp_remote_dsa_obj_guid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOp_remote_dsa_obj_guid, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOp_remote_dsa_obj_guid, param);
+ return offset;
}
@@ -6346,8 +6335,8 @@ drsuapi_dissect_DsReplicaOp(tvbuff_t *tvb, int offset, packet_info *pinfo, proto
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaOp);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaOp);
}
offset=drsuapi_dissect_DsReplicaOp_operation_start(tvb, offset, pinfo, tree, drep);
@@ -6377,32 +6366,32 @@ drsuapi_dissect_DsReplicaOp(tvbuff_t *tvb, int offset, packet_info *pinfo, proto
static int
drsuapi_dissect_DsReplicaOpCtr_time(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOpCtr_time, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOpCtr_time, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaOpCtr_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOpCtr_count, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOpCtr_count, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaOpCtr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaOp(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOpCtr_array, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaOp(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaOpCtr_array, param);
+ return offset;
}
static int
ucarray_drsuapi_dissect_DsReplicaOpCtr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaOpCtr_array);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaOpCtr_array);
+ return offset;
}
@@ -6417,8 +6406,8 @@ drsuapi_dissect_DsReplicaOpCtr(tvbuff_t *tvb, int offset, packet_info *pinfo, pr
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaOpCtr);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaOpCtr);
}
offset=drsuapi_dissect_DsReplicaOpCtr_time(tvb, offset, pinfo, tree, drep);
@@ -6434,117 +6423,117 @@ drsuapi_dissect_DsReplicaOpCtr(tvbuff_t *tvb, int offset, packet_info *pinfo, pr
static int
drsuapi_dissect_DsReplicaAttrValMetaData_attribute_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData_attribute_name, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData_attribute_name, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsReplicaAttrValMetaData_attribute_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaAttrValMetaData_attribute_name, NDR_POINTER_UNIQUE, "attribute_name", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaAttrValMetaData_attribute_name, NDR_POINTER_UNIQUE, "attribute_name", -1);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaAttrValMetaData_object_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData_object_dn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData_object_dn, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsReplicaAttrValMetaData_object_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaAttrValMetaData_object_dn, NDR_POINTER_UNIQUE, "object_dn", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaAttrValMetaData_object_dn, NDR_POINTER_UNIQUE, "object_dn", -1);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaAttrValMetaData_value_length(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData_value_length, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData_value_length, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaAttrValMetaData_value(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint8(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData_value, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint8(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData_value, param);
+ return offset;
}
static int
ucarray_drsuapi_dissect_DsReplicaAttrValMetaData_value(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaAttrValMetaData_value);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaAttrValMetaData_value);
+ return offset;
}
static int
unique_ucarray_drsuapi_dissect_DsReplicaAttrValMetaData_value(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, ucarray_drsuapi_dissect_DsReplicaAttrValMetaData_value, NDR_POINTER_UNIQUE, "value", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, ucarray_drsuapi_dissect_DsReplicaAttrValMetaData_value, NDR_POINTER_UNIQUE, "value", -1);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaAttrValMetaData_deleted(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData_deleted, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData_deleted, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaAttrValMetaData_created(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData_created, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData_created, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaAttrValMetaData_version(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData_version, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData_version, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaAttrValMetaData_originating_last_changed(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData_originating_last_changed, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData_originating_last_changed, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaAttrValMetaData_originating_dsa_invocation_id(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData_originating_dsa_invocation_id, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData_originating_dsa_invocation_id, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaAttrValMetaData_originating_usn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData_originating_usn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData_originating_usn, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaAttrValMetaData_local_usn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData_local_usn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData_local_usn, param);
+ return offset;
}
@@ -6559,8 +6548,8 @@ drsuapi_dissect_DsReplicaAttrValMetaData(tvbuff_t *tvb, int offset, packet_info
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaAttrValMetaData);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaAttrValMetaData);
}
offset=unique_drsuapi_dissect_DsReplicaAttrValMetaData_attribute_name(tvb, offset, pinfo, tree, drep);
@@ -6592,32 +6581,32 @@ drsuapi_dissect_DsReplicaAttrValMetaData(tvbuff_t *tvb, int offset, packet_info
static int
drsuapi_dissect_DsReplicaAttrValMetaDataCtr_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaDataCtr_count, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaDataCtr_count, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaAttrValMetaDataCtr_enumeration_context(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_int32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaDataCtr_enumeration_context, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_int32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaDataCtr_enumeration_context, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaAttrValMetaDataCtr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaAttrValMetaData(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaDataCtr_array, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaAttrValMetaData(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaDataCtr_array, param);
+ return offset;
}
static int
ucarray_drsuapi_dissect_DsReplicaAttrValMetaDataCtr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaAttrValMetaDataCtr_array);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaAttrValMetaDataCtr_array);
+ return offset;
}
@@ -6632,8 +6621,8 @@ drsuapi_dissect_DsReplicaAttrValMetaDataCtr(tvbuff_t *tvb, int offset, packet_in
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaAttrValMetaDataCtr);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaAttrValMetaDataCtr);
}
offset=drsuapi_dissect_DsReplicaAttrValMetaDataCtr_count(tvb, offset, pinfo, tree, drep);
@@ -6649,25 +6638,25 @@ drsuapi_dissect_DsReplicaAttrValMetaDataCtr(tvbuff_t *tvb, int offset, packet_in
static int
drsuapi_dissect_DsReplicaCoursor2_source_dsa_invocation_id(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor2_source_dsa_invocation_id, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor2_source_dsa_invocation_id, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaCoursor2_highest_usn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor2_highest_usn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor2_highest_usn, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaCoursor2_last_sync_success(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor2_last_sync_success, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor2_last_sync_success, param);
+ return offset;
}
@@ -6682,8 +6671,8 @@ drsuapi_dissect_DsReplicaCoursor2(tvbuff_t *tvb, int offset, packet_info *pinfo,
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaCoursor2);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaCoursor2);
}
offset=drsuapi_dissect_DsReplicaCoursor2_source_dsa_invocation_id(tvb, offset, pinfo, tree, drep);
@@ -6699,32 +6688,32 @@ drsuapi_dissect_DsReplicaCoursor2(tvbuff_t *tvb, int offset, packet_info *pinfo,
static int
drsuapi_dissect_DsReplicaCoursor2Ctr_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor2Ctr_count, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor2Ctr_count, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaCoursor2Ctr_enumeration_context(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_int32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor2Ctr_enumeration_context, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_int32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor2Ctr_enumeration_context, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaCoursor2Ctr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaCoursor2(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor2Ctr_array, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaCoursor2(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor2Ctr_array, param);
+ return offset;
}
static int
ucarray_drsuapi_dissect_DsReplicaCoursor2Ctr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaCoursor2Ctr_array);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaCoursor2Ctr_array);
+ return offset;
}
@@ -6739,8 +6728,8 @@ drsuapi_dissect_DsReplicaCoursor2Ctr(tvbuff_t *tvb, int offset, packet_info *pin
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaCoursor2Ctr);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaCoursor2Ctr);
}
offset=drsuapi_dissect_DsReplicaCoursor2Ctr_count(tvb, offset, pinfo, tree, drep);
@@ -6756,40 +6745,40 @@ drsuapi_dissect_DsReplicaCoursor2Ctr(tvbuff_t *tvb, int offset, packet_info *pin
static int
drsuapi_dissect_DsReplicaCoursor3_source_dsa_invocation_id(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor3_source_dsa_invocation_id, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor3_source_dsa_invocation_id, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaCoursor3_highest_usn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor3_highest_usn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor3_highest_usn, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaCoursor3_last_sync_success(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor3_last_sync_success, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor3_last_sync_success, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaCoursor3_source_dsa_obj_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor3_source_dsa_obj_dn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor3_source_dsa_obj_dn, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsReplicaCoursor3_source_dsa_obj_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaCoursor3_source_dsa_obj_dn, NDR_POINTER_UNIQUE, "source_dsa_obj_dn", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaCoursor3_source_dsa_obj_dn, NDR_POINTER_UNIQUE, "source_dsa_obj_dn", -1);
+ return offset;
}
@@ -6804,8 +6793,8 @@ drsuapi_dissect_DsReplicaCoursor3(tvbuff_t *tvb, int offset, packet_info *pinfo,
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaCoursor3);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaCoursor3);
}
offset=drsuapi_dissect_DsReplicaCoursor3_source_dsa_invocation_id(tvb, offset, pinfo, tree, drep);
@@ -6823,32 +6812,32 @@ drsuapi_dissect_DsReplicaCoursor3(tvbuff_t *tvb, int offset, packet_info *pinfo,
static int
drsuapi_dissect_DsReplicaCoursor3Ctr_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor3Ctr_count, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor3Ctr_count, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaCoursor3Ctr_enumeration_context(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_int32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor3Ctr_enumeration_context, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_int32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor3Ctr_enumeration_context, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaCoursor3Ctr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaCoursor3(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor3Ctr_array, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaCoursor3(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaCoursor3Ctr_array, param);
+ return offset;
}
static int
ucarray_drsuapi_dissect_DsReplicaCoursor3Ctr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaCoursor3Ctr_array);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaCoursor3Ctr_array);
+ return offset;
}
@@ -6863,8 +6852,8 @@ drsuapi_dissect_DsReplicaCoursor3Ctr(tvbuff_t *tvb, int offset, packet_info *pin
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaCoursor3Ctr);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaCoursor3Ctr);
}
offset=drsuapi_dissect_DsReplicaCoursor3Ctr_count(tvb, offset, pinfo, tree, drep);
@@ -6880,71 +6869,71 @@ drsuapi_dissect_DsReplicaCoursor3Ctr(tvbuff_t *tvb, int offset, packet_info *pin
static int
drsuapi_dissect_DsReplicaObjMetaData2_attribute_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData2_attribute_name, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData2_attribute_name, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsReplicaObjMetaData2_attribute_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaObjMetaData2_attribute_name, NDR_POINTER_UNIQUE, "attribute_name", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaObjMetaData2_attribute_name, NDR_POINTER_UNIQUE, "attribute_name", -1);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaObjMetaData2_version(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData2_version, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData2_version, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaObjMetaData2_originating_last_changed(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData2_originating_last_changed, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData2_originating_last_changed, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaObjMetaData2_originating_dsa_invocation_id(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData2_originating_dsa_invocation_id, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData2_originating_dsa_invocation_id, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaObjMetaData2_originating_usn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData2_originating_usn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData2_originating_usn, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaObjMetaData2_local_usn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData2_local_usn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData2_local_usn, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaObjMetaData2_originating_dsa_obj_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData2_originating_dsa_obj_dn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData2_originating_dsa_obj_dn, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsReplicaObjMetaData2_originating_dsa_obj_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaObjMetaData2_originating_dsa_obj_dn, NDR_POINTER_UNIQUE, "originating_dsa_obj_dn", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaObjMetaData2_originating_dsa_obj_dn, NDR_POINTER_UNIQUE, "originating_dsa_obj_dn", -1);
+ return offset;
}
@@ -6959,8 +6948,8 @@ drsuapi_dissect_DsReplicaObjMetaData2(tvbuff_t *tvb, int offset, packet_info *pi
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaObjMetaData2);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaObjMetaData2);
}
offset=unique_drsuapi_dissect_DsReplicaObjMetaData2_attribute_name(tvb, offset, pinfo, tree, drep);
@@ -6984,32 +6973,32 @@ drsuapi_dissect_DsReplicaObjMetaData2(tvbuff_t *tvb, int offset, packet_info *pi
static int
drsuapi_dissect_DsReplicaObjMetaData2Ctr_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData2Ctr_count, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData2Ctr_count, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaObjMetaData2Ctr_enumeration_context(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_int32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData2Ctr_enumeration_context, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_int32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData2Ctr_enumeration_context, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaObjMetaData2Ctr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaObjMetaData2(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData2Ctr_array, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaObjMetaData2(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaObjMetaData2Ctr_array, param);
+ return offset;
}
static int
ucarray_drsuapi_dissect_DsReplicaObjMetaData2Ctr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaObjMetaData2Ctr_array);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaObjMetaData2Ctr_array);
+ return offset;
}
@@ -7024,8 +7013,8 @@ drsuapi_dissect_DsReplicaObjMetaData2Ctr(tvbuff_t *tvb, int offset, packet_info
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaObjMetaData2Ctr);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaObjMetaData2Ctr);
}
offset=drsuapi_dissect_DsReplicaObjMetaData2Ctr_count(tvb, offset, pinfo, tree, drep);
@@ -7041,132 +7030,132 @@ drsuapi_dissect_DsReplicaObjMetaData2Ctr(tvbuff_t *tvb, int offset, packet_info
static int
drsuapi_dissect_DsReplicaAttrValMetaData2_attribute_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2_attribute_name, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2_attribute_name, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsReplicaAttrValMetaData2_attribute_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaAttrValMetaData2_attribute_name, NDR_POINTER_UNIQUE, "attribute_name", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaAttrValMetaData2_attribute_name, NDR_POINTER_UNIQUE, "attribute_name", -1);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaAttrValMetaData2_object_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2_object_dn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2_object_dn, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsReplicaAttrValMetaData2_object_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaAttrValMetaData2_object_dn, NDR_POINTER_UNIQUE, "object_dn", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaAttrValMetaData2_object_dn, NDR_POINTER_UNIQUE, "object_dn", -1);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaAttrValMetaData2_value_length(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2_value_length, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2_value_length, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaAttrValMetaData2_value(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint8(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2_value, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint8(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2_value, param);
+ return offset;
}
static int
ucarray_drsuapi_dissect_DsReplicaAttrValMetaData2_value(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaAttrValMetaData2_value);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaAttrValMetaData2_value);
+ return offset;
}
static int
unique_ucarray_drsuapi_dissect_DsReplicaAttrValMetaData2_value(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, ucarray_drsuapi_dissect_DsReplicaAttrValMetaData2_value, NDR_POINTER_UNIQUE, "value", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, ucarray_drsuapi_dissect_DsReplicaAttrValMetaData2_value, NDR_POINTER_UNIQUE, "value", -1);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaAttrValMetaData2_deleted(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2_deleted, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2_deleted, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaAttrValMetaData2_created(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2_created, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2_created, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaAttrValMetaData2_version(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2_version, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2_version, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaAttrValMetaData2_originating_last_changed(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2_originating_last_changed, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_NTTIME(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2_originating_last_changed, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaAttrValMetaData2_originating_dsa_invocation_id(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2_originating_dsa_invocation_id, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2_originating_dsa_invocation_id, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaAttrValMetaData2_originating_usn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2_originating_usn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2_originating_usn, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaAttrValMetaData2_local_usn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2_local_usn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2_local_usn, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaAttrValMetaData2_originating_dsa_obj_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2_originating_dsa_obj_dn, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2_originating_dsa_obj_dn, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsReplicaAttrValMetaData2_originating_dsa_obj_dn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaAttrValMetaData2_originating_dsa_obj_dn, NDR_POINTER_UNIQUE, "originating_dsa_obj_dn", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaAttrValMetaData2_originating_dsa_obj_dn, NDR_POINTER_UNIQUE, "originating_dsa_obj_dn", -1);
+ return offset;
}
@@ -7181,8 +7170,8 @@ drsuapi_dissect_DsReplicaAttrValMetaData2(tvbuff_t *tvb, int offset, packet_info
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaAttrValMetaData2);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaAttrValMetaData2);
}
offset=unique_drsuapi_dissect_DsReplicaAttrValMetaData2_attribute_name(tvb, offset, pinfo, tree, drep);
@@ -7216,32 +7205,32 @@ drsuapi_dissect_DsReplicaAttrValMetaData2(tvbuff_t *tvb, int offset, packet_info
static int
drsuapi_dissect_DsReplicaAttrValMetaData2Ctr_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2Ctr_count, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2Ctr_count, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaAttrValMetaData2Ctr_enumeration_context(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_int32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2Ctr_enumeration_context, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_int32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2Ctr_enumeration_context, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaAttrValMetaData2Ctr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaAttrValMetaData2(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2Ctr_array, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaAttrValMetaData2(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaAttrValMetaData2Ctr_array, param);
+ return offset;
}
static int
ucarray_drsuapi_dissect_DsReplicaAttrValMetaData2Ctr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaAttrValMetaData2Ctr_array);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaAttrValMetaData2Ctr_array);
+ return offset;
}
@@ -7256,8 +7245,8 @@ drsuapi_dissect_DsReplicaAttrValMetaData2Ctr(tvbuff_t *tvb, int offset, packet_i
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaAttrValMetaData2Ctr);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaAttrValMetaData2Ctr);
}
offset=drsuapi_dissect_DsReplicaAttrValMetaData2Ctr_count(tvb, offset, pinfo, tree, drep);
@@ -7273,57 +7262,57 @@ drsuapi_dissect_DsReplicaAttrValMetaData2Ctr(tvbuff_t *tvb, int offset, packet_i
static int
drsuapi_dissect_DsReplicaConnection04_u1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaConnection04_u1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaConnection04_u1, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaConnection04_u2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaConnection04_u2, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaConnection04_u2, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaConnection04_u3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaConnection04_u3, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaConnection04_u3, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaConnection04_bind_guid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaConnection04_bind_guid, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_GUID(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaConnection04_bind_guid, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaConnection04_bind_time(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_NTTIME_1sec(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaConnection04_bind_time, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_NTTIME_1sec(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaConnection04_bind_time, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaConnection04_u4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaConnection04_u4, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaConnection04_u4, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaConnection04_u5(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaConnection04_u5, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaConnection04_u5, param);
+ return offset;
}
@@ -7338,8 +7327,8 @@ drsuapi_dissect_DsReplicaConnection04(tvbuff_t *tvb, int offset, packet_info *pi
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaConnection04);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaConnection04);
}
offset=drsuapi_dissect_DsReplicaConnection04_u1(tvb, offset, pinfo, tree, drep);
@@ -7363,32 +7352,32 @@ drsuapi_dissect_DsReplicaConnection04(tvbuff_t *tvb, int offset, packet_info *pi
static int
drsuapi_dissect_DsReplicaConnection04Ctr_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaConnection04Ctr_count, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaConnection04Ctr_count, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaConnection04Ctr_reserved(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaConnection04Ctr_reserved, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaConnection04Ctr_reserved, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplicaConnection04Ctr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplicaConnection04(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaConnection04Ctr_array, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplicaConnection04(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaConnection04Ctr_array, param);
+ return offset;
}
static int
ucarray_drsuapi_dissect_DsReplicaConnection04Ctr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaConnection04Ctr_array);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplicaConnection04Ctr_array);
+ return offset;
}
@@ -7403,8 +7392,8 @@ drsuapi_dissect_DsReplicaConnection04Ctr(tvbuff_t *tvb, int offset, packet_info
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaConnection04Ctr);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaConnection04Ctr);
}
offset=drsuapi_dissect_DsReplicaConnection04Ctr_count(tvb, offset, pinfo, tree, drep);
@@ -7420,72 +7409,72 @@ drsuapi_dissect_DsReplicaConnection04Ctr(tvbuff_t *tvb, int offset, packet_info
static int
drsuapi_dissect_DsReplica06_str1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplica06_str1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_unistr(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplica06_str1, param);
+ return offset;
}
static int
unique_drsuapi_dissect_DsReplica06_str1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplica06_str1, NDR_POINTER_UNIQUE, "str1", -1);
- return offset;
+ offset=dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplica06_str1, NDR_POINTER_UNIQUE, "str1", -1);
+ return offset;
}
static int
drsuapi_dissect_DsReplica06_u1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplica06_u1, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplica06_u1, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplica06_u2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplica06_u2, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplica06_u2, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplica06_u3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplica06_u3, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplica06_u3, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplica06_u4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplica06_u4, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplica06_u4, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplica06_u5(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplica06_u5, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplica06_u5, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplica06_u6(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplica06_u6, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint64(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplica06_u6, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplica06_u7(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplica06_u7, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplica06_u7, param);
+ return offset;
}
@@ -7500,8 +7489,8 @@ drsuapi_dissect_DsReplica06(tvbuff_t *tvb, int offset, packet_info *pinfo, proto
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplica06);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplica06);
}
offset=unique_drsuapi_dissect_DsReplica06_str1(tvb, offset, pinfo, tree, drep);
@@ -7527,32 +7516,32 @@ drsuapi_dissect_DsReplica06(tvbuff_t *tvb, int offset, packet_info *pinfo, proto
static int
drsuapi_dissect_DsReplica06Ctr_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplica06Ctr_count, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplica06Ctr_count, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplica06Ctr_reserved(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplica06Ctr_reserved, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplica06Ctr_reserved, param);
+ return offset;
}
static int
drsuapi_dissect_DsReplica06Ctr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 param=0;
- offset=drsuapi_dissect_DsReplica06(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplica06Ctr_array, param);
- return offset;
+ guint32 param=0;
+ offset=drsuapi_dissect_DsReplica06(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplica06Ctr_array, param);
+ return offset;
}
static int
ucarray_drsuapi_dissect_DsReplica06Ctr_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplica06Ctr_array);
- return offset;
+ offset=dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, drsuapi_dissect_DsReplica06Ctr_array);
+ return offset;
}
@@ -7567,8 +7556,8 @@ drsuapi_dissect_DsReplica06Ctr(tvbuff_t *tvb, int offset, packet_info *pinfo, pr
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplica06Ctr);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplica06Ctr);
}
offset=drsuapi_dissect_DsReplica06Ctr_count(tvb, offset, pinfo, tree, drep);
@@ -7819,88 +7808,88 @@ drsuapi_dissect_union_DsReplicaInfo(tvbuff_t *tvb, int offset, packet_info *pinf
old_offset=offset;
if(parent_tree){
- item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsReplicaInfo");
- tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaInfo);
+ item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DsReplicaInfo");
+ tree=proto_item_add_subtree(item, ett_drsuapi_DsReplicaInfo);
}
offset=dissect_ndr_uint32(tvb, offset, pinfo, tree,
- drep, hf_index, &level);
+ drep, hf_index, &level);
switch(level){
case DRSUAPI_DS_REPLICA_INFO_NEIGHBORS:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_NEIGHBORS_neighbours_unique(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_NEIGHBORS_neighbours_unique(tvb, offset, pinfo, tree, drep);
+ break;
case DRSUAPI_DS_REPLICA_INFO_CURSORS:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_CURSORS_coursors_unique(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_CURSORS_coursors_unique(tvb, offset, pinfo, tree, drep);
+ break;
case DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA_objmetadata_unique(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA_objmetadata_unique(tvb, offset, pinfo, tree, drep);
+ break;
case DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES_connectfailures_unique(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES_connectfailures_unique(tvb, offset, pinfo, tree, drep);
+ break;
case DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES_linkfailures_unique(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES_linkfailures_unique(tvb, offset, pinfo, tree, drep);
+ break;
case DRSUAPI_DS_REPLICA_INFO_PENDING_OPS:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_PENDING_OPS_pendingops_unique(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_PENDING_OPS_pendingops_unique(tvb, offset, pinfo, tree, drep);
+ break;
case DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA_attrvalmetadata_unique(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA_attrvalmetadata_unique(tvb, offset, pinfo, tree, drep);
+ break;
case DRSUAPI_DS_REPLICA_INFO_CURSORS2:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_CURSORS2_coursors2_unique(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_CURSORS2_coursors2_unique(tvb, offset, pinfo, tree, drep);
+ break;
case DRSUAPI_DS_REPLICA_INFO_CURSORS3:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_CURSORS3_coursors3_unique(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_CURSORS3_coursors3_unique(tvb, offset, pinfo, tree, drep);
+ break;
case DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2_objmetadata2_unique(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2_objmetadata2_unique(tvb, offset, pinfo, tree, drep);
+ break;
case DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2_attrvalmetadata2_unique(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2_attrvalmetadata2_unique(tvb, offset, pinfo, tree, drep);
+ break;
case DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02_neighbours02_unique(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02_neighbours02_unique(tvb, offset, pinfo, tree, drep);
+ break;
case DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04_connections04_unique(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04_connections04_unique(tvb, offset, pinfo, tree, drep);
+ break;
case DRSUAPI_DS_REPLICA_INFO_CURSURS05:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_CURSURS05_coursors05_unique(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_CURSURS05_coursors05_unique(tvb, offset, pinfo, tree, drep);
+ break;
case DRSUAPI_DS_REPLICA_INFO_06:
- ALIGN_TO_4_BYTES;
- offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_06_i06_unique(tvb, offset, pinfo, tree, drep);
- break;
+ ALIGN_TO_4_BYTES;
+ offset=drsuapi_dissect_union_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_06_i06_unique(tvb, offset, pinfo, tree, drep);
+ break;
}
@@ -7959,14 +7948,14 @@ drsuapi_dissect_DsReplicaGetInfo_info(tvbuff_t *tvb, int offset, packet_info *pi
static int
drsuapi_dissect_DsReplicaGetInfo_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=ref_drsuapi_dissect_DsReplicaGetInfo_bind_handle(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=ref_drsuapi_dissect_DsReplicaGetInfo_bind_handle(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=drsuapi_dissect_DsReplicaGetInfo_level(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=drsuapi_dissect_DsReplicaGetInfo_level(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=drsuapi_dissect_DsReplicaGetInfo_req(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=drsuapi_dissect_DsReplicaGetInfo_req(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
return offset;
@@ -7975,11 +7964,11 @@ drsuapi_dissect_DsReplicaGetInfo_request(tvbuff_t *tvb _U_, int offset _U_, pack
static int
drsuapi_dissect_DsReplicaGetInfo_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
{
- offset=drsuapi_dissect_DsReplicaGetInfo_info_type(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=drsuapi_dissect_DsReplicaGetInfo_info_type(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
- offset=drsuapi_dissect_DsReplicaGetInfo_info(tvb, offset, pinfo, tree, drep);
- offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
+ offset=drsuapi_dissect_DsReplicaGetInfo_info(tvb, offset, pinfo, tree, drep);
+ offset=dissect_deferred_pointers(pinfo, tvb, offset, drep);
offset=dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_drsuapi_rc, NULL);
@@ -8082,2075 +8071,2075 @@ proto_register_drsuapi(void)
/* INCLUDED FILE : ETH_HFARR */
- { &hf_drsuapi_opnum,
- { "Operation", "drsuapi.opnum", FT_UINT16, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_rc,
- { "Return code", "drsuapi.rc", FT_UINT32, BASE_HEX,
- VALS(NT_errors), 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_BASE,
- { "DRSUAPI_SUPPORTED_EXTENSION_BASE", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_BASE", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_BASE_tfs), 0x00000001,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION,
- { "DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION_tfs), 0x00000002,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI,
- { "DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI_tfs), 0x00000004,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2,
- { "DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2_tfs), 0x00000008,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS,
- { "DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS_tfs), 0x00000010,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1,
- { "DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1_tfs), 0x00000020,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION,
- { "DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION_tfs), 0x00000040,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_00000080,
- { "DRSUAPI_SUPPORTED_EXTENSION_00000080", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_00000080", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_00000080_tfs), 0x00000080,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE,
- { "DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE_tfs), 0x00000100,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2,
- { "DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2_tfs), 0x00000200,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION,
- { "DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION_tfs), 0x00000400,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2,
- { "DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2_tfs), 0x00000800,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD,
- { "DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD_tfs), 0x00001000,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND,
- { "DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND_tfs), 0x00002000,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO,
- { "DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO_tfs), 0x00004000,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION,
- { "DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION_tfs), 0x00008000,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01,
- { "DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01_tfs), 0x00010000,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP,
- { "DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP_tfs), 0x00020000,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY,
- { "DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY_tfs), 0x00040000,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3,
- { "DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3_tfs), 0x00080000,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_00100000,
- { "DRSUAPI_SUPPORTED_EXTENSION_00100000", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_00100000", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_00100000_tfs), 0x00100000,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2,
- { "DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2_tfs), 0x00200000,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6,
- { "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6_tfs), 0x00400000,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS,
- { "DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS_tfs), 0x00800000,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8,
- { "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8_tfs), 0x01000000,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5,
- { "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5_tfs), 0x02000000,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6,
- { "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6_tfs), 0x04000000,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3,
- { "DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3_tfs), 0x08000000,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7,
- { "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7_tfs), 0x08000000,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT,
- { "DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT_tfs), 0x08000000,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS,
- { "DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS_tfs), 0x10000000,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_20000000,
- { "DRSUAPI_SUPPORTED_EXTENSION_20000000", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_20000000", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_20000000_tfs), 0x20000000,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_40000000,
- { "DRSUAPI_SUPPORTED_EXTENSION_40000000", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_40000000", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_40000000_tfs), 0x40000000,
- NULL, HFILL }},
-
- { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_80000000,
- { "DRSUAPI_SUPPORTED_EXTENSION_80000000", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_80000000", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_SUPPORTED_EXTENSION_80000000_tfs), 0x80000000,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsBindInfo24_supported_extensions,
- { "supported_extensions", "drsuapi.DsBindInfo24.supported_extensions", FT_UINT32, BASE_HEX,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsBindInfo24_site_guid,
- { "site_guid", "drsuapi.DsBindInfo24.site_guid", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsBindInfo24_u1,
- { "u1", "drsuapi.DsBindInfo24.u1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsBindInfo28_supported_extensions,
- { "supported_extensions", "drsuapi.DsBindInfo28.supported_extensions", FT_UINT32, BASE_HEX,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsBindInfo28_site_guid,
- { "site_guid", "drsuapi.DsBindInfo28.site_guid", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsBindInfo28_u1,
- { "u1", "drsuapi.DsBindInfo28.u1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsBindInfo28_repl_epoch,
- { "repl_epoch", "drsuapi.DsBindInfo28.repl_epoch", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsBindInfo_24_info24,
- { "info24", "drsuapi.DsBindInfo.info24", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsBindInfo_28_info28,
- { "info28", "drsuapi.DsBindInfo.info28", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsBindInfoCtr_length,
- { "length", "drsuapi.DsBindInfoCtr.length", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsBindInfoCtr_info,
- { "info", "drsuapi.DsBindInfoCtr.info", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsBind_bind_guid,
- { "bind_guid", "drsuapi.DsBind.bind_guid", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsBind_bind_info,
- { "bind_info", "drsuapi.DsBind.bind_info", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsBind_bind_handle,
- { "bind_handle", "drsuapi.DsBind.bind_handle", FT_BYTES, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsUnbind_bind_handle,
- { "bind_handle", "drsuapi.DsUnbind.bind_handle", FT_BYTES, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncRequest1Info_unknown1,
- { "unknown1", "drsuapi.DsReplicaSyncRequest1Info.unknown1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncRequest1Info_unknown2,
- { "unknown2", "drsuapi.DsReplicaSyncRequest1Info.unknown2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncRequest1Info_guid1,
- { "guid1", "drsuapi.DsReplicaSyncRequest1Info.guid1", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncRequest1Info_byte_array,
- { "byte_array", "drsuapi.DsReplicaSyncRequest1Info.byte_array", FT_UINT8, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncRequest1Info_str_len,
- { "str_len", "drsuapi.DsReplicaSyncRequest1Info.str_len", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_OPERATION,
- { "DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_OPERATION", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_OPERATION", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_OPERATION_tfs), 0x00000001,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_WRITEABLE,
- { "DRSUAPI_DS_REPLICA_SYNC_WRITEABLE", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_WRITEABLE", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_SYNC_WRITEABLE_tfs), 0x00000002,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_PERIODIC,
- { "DRSUAPI_DS_REPLICA_SYNC_PERIODIC", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_PERIODIC", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_SYNC_PERIODIC_tfs), 0x00000004,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_INTERSITE_MESSAGING,
- { "DRSUAPI_DS_REPLICA_SYNC_INTERSITE_MESSAGING", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_INTERSITE_MESSAGING", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_SYNC_INTERSITE_MESSAGING_tfs), 0x00000008,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_ALL_SOURCES,
- { "DRSUAPI_DS_REPLICA_SYNC_ALL_SOURCES", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_ALL_SOURCES", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_SYNC_ALL_SOURCES_tfs), 0x00000010,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_FULL,
- { "DRSUAPI_DS_REPLICA_SYNC_FULL", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_FULL", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_SYNC_FULL_tfs), 0x00000020,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_URGENT,
- { "DRSUAPI_DS_REPLICA_SYNC_URGENT", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_URGENT", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_SYNC_URGENT_tfs), 0x00000040,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_NO_DISCARD,
- { "DRSUAPI_DS_REPLICA_SYNC_NO_DISCARD", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_NO_DISCARD", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_SYNC_NO_DISCARD_tfs), 0x00000080,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_FORCE,
- { "DRSUAPI_DS_REPLICA_SYNC_FORCE", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_FORCE", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_SYNC_FORCE_tfs), 0x00000100,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_ADD_REFERENCE,
- { "DRSUAPI_DS_REPLICA_SYNC_ADD_REFERENCE", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_ADD_REFERENCE", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_SYNC_ADD_REFERENCE_tfs), 0x00000200,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_NEVER_COMPLETED,
- { "DRSUAPI_DS_REPLICA_SYNC_NEVER_COMPLETED", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_NEVER_COMPLETED", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_SYNC_NEVER_COMPLETED_tfs), 0x00000400,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_TWO_WAY,
- { "DRSUAPI_DS_REPLICA_SYNC_TWO_WAY", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_TWO_WAY", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_SYNC_TWO_WAY_tfs), 0x00000800,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_NEVER_NOTIFY,
- { "DRSUAPI_DS_REPLICA_SYNC_NEVER_NOTIFY", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_NEVER_NOTIFY", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_SYNC_NEVER_NOTIFY_tfs), 0x00001000,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_INITIAL,
- { "DRSUAPI_DS_REPLICA_SYNC_INITIAL", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_INITIAL", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_SYNC_INITIAL_tfs), 0x00002000,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_USE_COMPRESSION,
- { "DRSUAPI_DS_REPLICA_SYNC_USE_COMPRESSION", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_USE_COMPRESSION", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_SYNC_USE_COMPRESSION_tfs), 0x00004000,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_ABANDONED,
- { "DRSUAPI_DS_REPLICA_SYNC_ABANDONED", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_ABANDONED", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_SYNC_ABANDONED_tfs), 0x00008000,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_INITIAL_IN_PROGRESS,
- { "DRSUAPI_DS_REPLICA_SYNC_INITIAL_IN_PROGRESS", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_INITIAL_IN_PROGRESS", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_SYNC_INITIAL_IN_PROGRESS_tfs), 0x00010000,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_PARTIAL_ATTRIBUTE_SET,
- { "DRSUAPI_DS_REPLICA_SYNC_PARTIAL_ATTRIBUTE_SET", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_PARTIAL_ATTRIBUTE_SET", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_SYNC_PARTIAL_ATTRIBUTE_SET_tfs), 0x00020000,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_REQUEUE,
- { "DRSUAPI_DS_REPLICA_SYNC_REQUEUE", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_REQUEUE", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_SYNC_REQUEUE_tfs), 0x00040000,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_NOTIFICATION,
- { "DRSUAPI_DS_REPLICA_SYNC_NOTIFICATION", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_NOTIFICATION", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_SYNC_NOTIFICATION_tfs), 0x00080000,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_REPLICA,
- { "DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_REPLICA", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_REPLICA", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_REPLICA_tfs), 0x00100000,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_CRITICAL,
- { "DRSUAPI_DS_REPLICA_SYNC_CRITICAL", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_CRITICAL", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_SYNC_CRITICAL_tfs), 0x00200000,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_FULL_IN_PROGRESS,
- { "DRSUAPI_DS_REPLICA_SYNC_FULL_IN_PROGRESS", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_FULL_IN_PROGRESS", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_SYNC_FULL_IN_PROGRESS_tfs), 0x00400000,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_PREEMPTED,
- { "DRSUAPI_DS_REPLICA_SYNC_PREEMPTED", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_PREEMPTED", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_SYNC_PREEMPTED_tfs), 0x00800000,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncRequest1_info,
- { "info", "drsuapi.DsReplicaSyncRequest1.info", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncRequest1_guid1,
- { "guid1", "drsuapi.DsReplicaSyncRequest1.guid1", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncRequest1_string1,
- { "string1", "drsuapi.DsReplicaSyncRequest1.string1", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncRequest1_options,
- { "options", "drsuapi.DsReplicaSyncRequest1.options", FT_UINT32, BASE_HEX,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSyncRequest_1_req1,
- { "req1", "drsuapi.DsReplicaSyncRequest.req1", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSync_bind_handle,
- { "bind_handle", "drsuapi.DsReplicaSync.bind_handle", FT_BYTES, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSync_level,
- { "level", "drsuapi.DsReplicaSync.level", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaSync_req,
- { "req", "drsuapi.DsReplicaSync.req", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesUsnTriple_usn1,
- { "usn1", "drsuapi.DsGetNCChangesUsnTriple.usn1", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesUsnTriple_usn2,
- { "usn2", "drsuapi.DsGetNCChangesUsnTriple.usn2", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesUsnTriple_usn3,
- { "usn3", "drsuapi.DsGetNCChangesUsnTriple.usn3", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursor_source_dsa_invocation_id,
- { "source_dsa_invocation_id", "drsuapi.DsReplicaCoursor.source_dsa_invocation_id", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursor_highest_usn,
- { "highest_usn", "drsuapi.DsReplicaCoursor.highest_usn", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursor05Ctr_u1,
- { "u1", "drsuapi.DsReplicaCoursor05Ctr.u1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursor05Ctr_u2,
- { "u2", "drsuapi.DsReplicaCoursor05Ctr.u2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursor05Ctr_count,
- { "count", "drsuapi.DsReplicaCoursor05Ctr.count", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursor05Ctr_u3,
- { "u3", "drsuapi.DsReplicaCoursor05Ctr.u3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursor05Ctr_array,
- { "array", "drsuapi.DsReplicaCoursor05Ctr.array", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest5_guid1,
- { "guid1", "drsuapi.DsGetNCChangesRequest5.guid1", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest5_guid2,
- { "guid2", "drsuapi.DsGetNCChangesRequest5.guid2", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest5_sync_req_info1,
- { "sync_req_info1", "drsuapi.DsGetNCChangesRequest5.sync_req_info1", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest5_usn1,
- { "usn1", "drsuapi.DsGetNCChangesRequest5.usn1", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest5_coursor,
- { "coursor", "drsuapi.DsGetNCChangesRequest5.coursor", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest5_unknown1,
- { "unknown1", "drsuapi.DsGetNCChangesRequest5.unknown1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest5_unknown2,
- { "unknown2", "drsuapi.DsGetNCChangesRequest5.unknown2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest5_unknown3,
- { "unknown3", "drsuapi.DsGetNCChangesRequest5.unknown3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest5_unknown4,
- { "unknown4", "drsuapi.DsGetNCChangesRequest5.unknown4", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest5_h1,
- { "h1", "drsuapi.DsGetNCChangesRequest5.h1", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest_Ctr14_length,
- { "length", "drsuapi.DsGetNCChangesRequest_Ctr14.length", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest_Ctr14_byte_array,
- { "byte_array", "drsuapi.DsGetNCChangesRequest_Ctr14.byte_array", FT_UINT8, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest_Ctr13_unknown1,
- { "unknown1", "drsuapi.DsGetNCChangesRequest_Ctr13.unknown1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest_Ctr13_data,
- { "data", "drsuapi.DsGetNCChangesRequest_Ctr13.data", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest_Ctr12_count,
- { "count", "drsuapi.DsGetNCChangesRequest_Ctr12.count", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest_Ctr12_array,
- { "array", "drsuapi.DsGetNCChangesRequest_Ctr12.array", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest8_guid1,
- { "guid1", "drsuapi.DsGetNCChangesRequest8.guid1", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest8_guid2,
- { "guid2", "drsuapi.DsGetNCChangesRequest8.guid2", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest8_sync_req_info1,
- { "sync_req_info1", "drsuapi.DsGetNCChangesRequest8.sync_req_info1", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest8_usn1,
- { "usn1", "drsuapi.DsGetNCChangesRequest8.usn1", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest8_coursor,
- { "coursor", "drsuapi.DsGetNCChangesRequest8.coursor", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest8_unknown1,
- { "unknown1", "drsuapi.DsGetNCChangesRequest8.unknown1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest8_unknown2,
- { "unknown2", "drsuapi.DsGetNCChangesRequest8.unknown2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest8_unknown3,
- { "unknown3", "drsuapi.DsGetNCChangesRequest8.unknown3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest8_unknown4,
- { "unknown4", "drsuapi.DsGetNCChangesRequest8.unknown4", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest8_h1,
- { "h1", "drsuapi.DsGetNCChangesRequest8.h1", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest8_unique_ptr1,
- { "unique_ptr1", "drsuapi.DsGetNCChangesRequest8.unique_ptr1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest8_unique_ptr2,
- { "unique_ptr2", "drsuapi.DsGetNCChangesRequest8.unique_ptr2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest8_ctr12,
- { "ctr12", "drsuapi.DsGetNCChangesRequest8.ctr12", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest_5_req5,
- { "req5", "drsuapi.DsGetNCChangesRequest.req5", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesRequest_8_req8,
- { "req8", "drsuapi.DsGetNCChangesRequest.req8", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursorEx_coursor,
- { "coursor", "drsuapi.DsReplicaCoursorEx.coursor", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursorEx_time1,
- { "time1", "drsuapi.DsReplicaCoursorEx.time1", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursorEx05Ctr_u1,
- { "u1", "drsuapi.DsReplicaCoursorEx05Ctr.u1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursorEx05Ctr_u2,
- { "u2", "drsuapi.DsReplicaCoursorEx05Ctr.u2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursorEx05Ctr_count,
- { "count", "drsuapi.DsReplicaCoursorEx05Ctr.count", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursorEx05Ctr_u3,
- { "u3", "drsuapi.DsReplicaCoursorEx05Ctr.u3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursorEx05Ctr_array,
- { "array", "drsuapi.DsReplicaCoursorEx05Ctr.array", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesCtr6_guid1,
- { "guid1", "drsuapi.DsGetNCChangesCtr6.guid1", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesCtr6_guid2,
- { "guid2", "drsuapi.DsGetNCChangesCtr6.guid2", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesCtr6_sync_req_info1,
- { "sync_req_info1", "drsuapi.DsGetNCChangesCtr6.sync_req_info1", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesCtr6_usn1,
- { "usn1", "drsuapi.DsGetNCChangesCtr6.usn1", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesCtr6_usn2,
- { "usn2", "drsuapi.DsGetNCChangesCtr6.usn2", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesCtr6_coursor_ex,
- { "coursor_ex", "drsuapi.DsGetNCChangesCtr6.coursor_ex", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesCtr6_ctr12,
- { "ctr12", "drsuapi.DsGetNCChangesCtr6.ctr12", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesCtr6_u1,
- { "u1", "drsuapi.DsGetNCChangesCtr6.u1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesCtr6_ptr1,
- { "ptr1", "drsuapi.DsGetNCChangesCtr6.ptr1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesCtr6_u2,
- { "u2", "drsuapi.DsGetNCChangesCtr6.u2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesCtr6_len1,
- { "len1", "drsuapi.DsGetNCChangesCtr6.len1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesCtr6_array_ptr1,
- { "array_ptr1", "drsuapi.DsGetNCChangesCtr6.array_ptr1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesCtr6_u3,
- { "u3", "drsuapi.DsGetNCChangesCtr6.u3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesCtr_6_ctr6,
- { "ctr6", "drsuapi.DsGetNCChangesCtr.ctr6", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChangesCtr_7_ctr7,
- { "ctr7", "drsuapi.DsGetNCChangesCtr.ctr7", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChanges_bind_handle,
- { "bind_handle", "drsuapi.DsGetNCChanges.bind_handle", FT_BYTES, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChanges_level,
- { "level", "drsuapi.DsGetNCChanges.level", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChanges_req,
- { "req", "drsuapi.DsGetNCChanges.req", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetNCChanges_ctr,
- { "ctr", "drsuapi.DsGetNCChanges.ctr", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaUpdateRefsOptions_DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION,
- { "DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION", "drsuapi.DsReplicaUpdateRefsOptions.DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION_tfs), 0x00000001,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaUpdateRefsOptions_DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE,
- { "DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE", "drsuapi.DsReplicaUpdateRefsOptions.DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE_tfs), 0x00000002,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaUpdateRefsOptions_DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE,
- { "DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE", "drsuapi.DsReplicaUpdateRefsOptions.DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE_tfs), 0x00000004,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaUpdateRefsOptions_DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE,
- { "DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE", "drsuapi.DsReplicaUpdateRefsOptions.DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE_tfs), 0x00000008,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaUpdateRefsOptions_DRSUAPI_DS_REPLICA_UPDATE_0x00000010,
- { "DRSUAPI_DS_REPLICA_UPDATE_0x00000010", "drsuapi.DsReplicaUpdateRefsOptions.DRSUAPI_DS_REPLICA_UPDATE_0x00000010", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_UPDATE_0x00000010_tfs), 0x00000010,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaUpdateRefsRequest1_unknown1,
- { "unknown1", "drsuapi.DsReplicaUpdateRefsRequest1.unknown1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaUpdateRefsRequest1_unknown2,
- { "unknown2", "drsuapi.DsReplicaUpdateRefsRequest1.unknown2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaUpdateRefsRequest1_dest_dsa_guid,
- { "dest_dsa_guid", "drsuapi.DsReplicaUpdateRefsRequest1.dest_dsa_guid", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaUpdateRefsRequest1_options,
- { "options", "drsuapi.DsReplicaUpdateRefsRequest1.options", FT_UINT32, BASE_HEX,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaUpdateRefsRequest1_sync_req_info1,
- { "sync_req_info1", "drsuapi.DsReplicaUpdateRefsRequest1.sync_req_info1", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaUpdateRefsRequest1_dest_dsa_dns_name,
- { "dest_dsa_dns_name", "drsuapi.DsReplicaUpdateRefsRequest1.dest_dsa_dns_name", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaUpdateRefsRequest_1_req1,
- { "req1", "drsuapi.DsReplicaUpdateRefsRequest.req1", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaUpdateRefs_bind_handle,
- { "bind_handle", "drsuapi.DsReplicaUpdateRefs.bind_handle", FT_BYTES, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaUpdateRefs_level,
- { "level", "drsuapi.DsReplicaUpdateRefs.level", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaUpdateRefs_req,
- { "req", "drsuapi.DsReplicaUpdateRefs.req", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAddOptions_DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION,
- { "DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION", "drsuapi.DsReplicaAddOptions.DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION_tfs), 0x00000001,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAddOptions_DRSUAPI_DS_REPLICA_ADD_WRITEABLE,
- { "DRSUAPI_DS_REPLICA_ADD_WRITEABLE", "drsuapi.DsReplicaAddOptions.DRSUAPI_DS_REPLICA_ADD_WRITEABLE", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_ADD_WRITEABLE_tfs), 0x00000002,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaDeleteOptions_DRSUAPI_DS_REPLICA_DELETE_ASYNCHRONOUS_OPERATION,
- { "DRSUAPI_DS_REPLICA_DELETE_ASYNCHRONOUS_OPERATION", "drsuapi.DsReplicaDeleteOptions.DRSUAPI_DS_REPLICA_DELETE_ASYNCHRONOUS_OPERATION", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_DELETE_ASYNCHRONOUS_OPERATION_tfs), 0x00000001,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaDeleteOptions_DRSUAPI_DS_REPLICA_DELETE_WRITEABLE,
- { "DRSUAPI_DS_REPLICA_DELETE_WRITEABLE", "drsuapi.DsReplicaDeleteOptions.DRSUAPI_DS_REPLICA_DELETE_WRITEABLE", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_DELETE_WRITEABLE_tfs), 0x00000002,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaModifyOptions_DRSUAPI_DS_REPLICA_MODIFY_ASYNCHRONOUS_OPERATION,
- { "DRSUAPI_DS_REPLICA_MODIFY_ASYNCHRONOUS_OPERATION", "drsuapi.DsReplicaModifyOptions.DRSUAPI_DS_REPLICA_MODIFY_ASYNCHRONOUS_OPERATION", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_MODIFY_ASYNCHRONOUS_OPERATION_tfs), 0x00000001,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaModifyOptions_DRSUAPI_DS_REPLICA_MODIFY_WRITEABLE,
- { "DRSUAPI_DS_REPLICA_MODIFY_WRITEABLE", "drsuapi.DsReplicaModifyOptions.DRSUAPI_DS_REPLICA_MODIFY_WRITEABLE", FT_BOOLEAN, 32,
- TFS(&DRSUAPI_DS_REPLICA_MODIFY_WRITEABLE_tfs), 0x00000002,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsNameString_str,
- { "str", "drsuapi.DsNameString.str", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsNameRequest1_unknown1,
- { "unknown1", "drsuapi.DsNameRequest1.unknown1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsNameRequest1_unknown2,
- { "unknown2", "drsuapi.DsNameRequest1.unknown2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsNameRequest1_format_flags,
- { "format_flags", "drsuapi.DsNameRequest1.format_flags", FT_INT32, BASE_DEC,
- VALS(drsuapi_DsNameFlags_vals), 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsNameRequest1_format_offered,
- { "format_offered", "drsuapi.DsNameRequest1.format_offered", FT_INT32, BASE_DEC,
- VALS(drsuapi_DsNameFormat_vals), 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsNameRequest1_format_desired,
- { "format_desired", "drsuapi.DsNameRequest1.format_desired", FT_INT32, BASE_DEC,
- VALS(drsuapi_DsNameFormat_vals), 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsNameRequest1_count,
- { "count", "drsuapi.DsNameRequest1.count", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsNameRequest1_names,
- { "names", "drsuapi.DsNameRequest1.names", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsNameRequest_1_req1,
- { "req1", "drsuapi.DsNameRequest.req1", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsNameInfo1_status,
- { "status", "drsuapi.DsNameInfo1.status", FT_INT32, BASE_DEC,
- VALS(drsuapi_DsNameStatus_vals), 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsNameInfo1_dns_domain_name,
- { "dns_domain_name", "drsuapi.DsNameInfo1.dns_domain_name", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsNameInfo1_result_name,
- { "result_name", "drsuapi.DsNameInfo1.result_name", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsNameCtr1_count,
- { "count", "drsuapi.DsNameCtr1.count", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsNameCtr1_array,
- { "array", "drsuapi.DsNameCtr1.array", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsNameCtr_1_ctr1,
- { "ctr1", "drsuapi.DsNameCtr.ctr1", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsCrackNames_bind_handle,
- { "bind_handle", "drsuapi.DsCrackNames.bind_handle", FT_BYTES, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsCrackNames_level,
- { "level", "drsuapi.DsCrackNames.level", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsCrackNames_req,
- { "req", "drsuapi.DsCrackNames.req", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsCrackNames_ctr,
- { "ctr", "drsuapi.DsCrackNames.ctr", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsWriteAccountSpnRequest1_operation,
- { "operation", "drsuapi.DsWriteAccountSpnRequest1.operation", FT_INT32, BASE_DEC,
- VALS(drsuapi_DsSpnOperation_vals), 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsWriteAccountSpnRequest1_unknown1,
- { "unknown1", "drsuapi.DsWriteAccountSpnRequest1.unknown1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsWriteAccountSpnRequest1_object_dn,
- { "object_dn", "drsuapi.DsWriteAccountSpnRequest1.object_dn", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsWriteAccountSpnRequest1_count,
- { "count", "drsuapi.DsWriteAccountSpnRequest1.count", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsWriteAccountSpnRequest1_spn_names,
- { "spn_names", "drsuapi.DsWriteAccountSpnRequest1.spn_names", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsWriteAccountSpnRequest_1_req1,
- { "req1", "drsuapi.DsWriteAccountSpnRequest.req1", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsWriteAccountSpnResult1_status,
- { "status", "drsuapi.DsWriteAccountSpnResult1.status", FT_UINT32, BASE_DEC,
- VALS(NT_errors), 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsWriteAccountSpnResult_1_res1,
- { "res1", "drsuapi.DsWriteAccountSpnResult.res1", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsWriteAccountSpn_bind_handle,
- { "bind_handle", "drsuapi.DsWriteAccountSpn.bind_handle", FT_BYTES, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsWriteAccountSpn_level,
- { "level", "drsuapi.DsWriteAccountSpn.level", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsWriteAccountSpn_req,
- { "req", "drsuapi.DsWriteAccountSpn.req", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsWriteAccountSpn_res,
- { "res", "drsuapi.DsWriteAccountSpn.res", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfoRequest1_domain_name,
- { "domain_name", "drsuapi.DsGetDCInfoRequest1.domain_name", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfoRequest1_level,
- { "level", "drsuapi.DsGetDCInfoRequest1.level", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfoRequest_1_req1,
- { "req1", "drsuapi.DsGetDCInfoRequest.req1", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo1_netbios_name,
- { "netbios_name", "drsuapi.DsGetDCInfo1.netbios_name", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo1_dns_name,
- { "dns_name", "drsuapi.DsGetDCInfo1.dns_name", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo1_site_name,
- { "site_name", "drsuapi.DsGetDCInfo1.site_name", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo1_computer_dn,
- { "computer_dn", "drsuapi.DsGetDCInfo1.computer_dn", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo1_server_dn,
- { "server_dn", "drsuapi.DsGetDCInfo1.server_dn", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo1_is_pdc,
- { "is_pdc", "drsuapi.DsGetDCInfo1.is_pdc", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo1_is_enabled,
- { "is_enabled", "drsuapi.DsGetDCInfo1.is_enabled", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfoCtr1_count,
- { "count", "drsuapi.DsGetDCInfoCtr1.count", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfoCtr1_array,
- { "array", "drsuapi.DsGetDCInfoCtr1.array", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo2_netbios_name,
- { "netbios_name", "drsuapi.DsGetDCInfo2.netbios_name", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo2_dns_name,
- { "dns_name", "drsuapi.DsGetDCInfo2.dns_name", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo2_site_name,
- { "site_name", "drsuapi.DsGetDCInfo2.site_name", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo2_site_dn,
- { "site_dn", "drsuapi.DsGetDCInfo2.site_dn", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo2_computer_dn,
- { "computer_dn", "drsuapi.DsGetDCInfo2.computer_dn", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo2_server_dn,
- { "server_dn", "drsuapi.DsGetDCInfo2.server_dn", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo2_ntds_dn,
- { "ntds_dn", "drsuapi.DsGetDCInfo2.ntds_dn", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo2_is_pdc,
- { "is_pdc", "drsuapi.DsGetDCInfo2.is_pdc", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo2_is_enabled,
- { "is_enabled", "drsuapi.DsGetDCInfo2.is_enabled", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo2_is_gc,
- { "is_gc", "drsuapi.DsGetDCInfo2.is_gc", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo2_site_guid,
- { "site_guid", "drsuapi.DsGetDCInfo2.site_guid", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo2_computer_guid,
- { "computer_guid", "drsuapi.DsGetDCInfo2.computer_guid", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo2_server_guid,
- { "server_guid", "drsuapi.DsGetDCInfo2.server_guid", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo2_ntds_guid,
- { "ntds_guid", "drsuapi.DsGetDCInfo2.ntds_guid", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfoCtr2_count,
- { "count", "drsuapi.DsGetDCInfoCtr2.count", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfoCtr2_array,
- { "array", "drsuapi.DsGetDCInfoCtr2.array", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo01_unknown1,
- { "unknown1", "drsuapi.DsGetDCInfo01.unknown1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo01_unknown2,
- { "unknown2", "drsuapi.DsGetDCInfo01.unknown2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo01_unknown3,
- { "unknown3", "drsuapi.DsGetDCInfo01.unknown3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo01_unknown4,
- { "unknown4", "drsuapi.DsGetDCInfo01.unknown4", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo01_unknown5,
- { "unknown5", "drsuapi.DsGetDCInfo01.unknown5", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo01_unknown6,
- { "unknown6", "drsuapi.DsGetDCInfo01.unknown6", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfo01_server_nt4_account,
- { "server_nt4_account", "drsuapi.DsGetDCInfo01.server_nt4_account", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfoCtr01_count,
- { "count", "drsuapi.DsGetDCInfoCtr01.count", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfoCtr01_array,
- { "array", "drsuapi.DsGetDCInfoCtr01.array", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfoCtr_DRSUAPI_DC_INFO_CTR_1_ctr1,
- { "ctr1", "drsuapi.DsGetDCInfoCtr.ctr1", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfoCtr_DRSUAPI_DC_INFO_CTR_2_ctr2,
- { "ctr2", "drsuapi.DsGetDCInfoCtr.ctr2", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDCInfoCtr_DRSUAPI_DC_INFO_CTR_01_ctr01,
- { "ctr01", "drsuapi.DsGetDCInfoCtr.ctr01", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDomainControllerInfo_bind_handle,
- { "bind_handle", "drsuapi.DsGetDomainControllerInfo.bind_handle", FT_BYTES, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDomainControllerInfo_level,
- { "level", "drsuapi.DsGetDomainControllerInfo.level", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDomainControllerInfo_req,
- { "req", "drsuapi.DsGetDomainControllerInfo.req", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsGetDomainControllerInfo_ctr,
- { "ctr", "drsuapi.DsGetDomainControllerInfo.ctr", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaGetInfoRequest1_info_type,
- { "info_type", "drsuapi.DsReplicaGetInfoRequest1.info_type", FT_INT32, BASE_DEC,
- VALS(drsuapi_DsReplicaInfoType_vals), 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaGetInfoRequest1_object_dn,
- { "object_dn", "drsuapi.DsReplicaGetInfoRequest1.object_dn", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaGetInfoRequest1_guid1,
- { "guid1", "drsuapi.DsReplicaGetInfoRequest1.guid1", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaGetInfoRequest2_info_type,
- { "info_type", "drsuapi.DsReplicaGetInfoRequest2.info_type", FT_INT32, BASE_DEC,
- VALS(drsuapi_DsReplicaInfoType_vals), 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaGetInfoRequest2_object_dn,
- { "object_dn", "drsuapi.DsReplicaGetInfoRequest2.object_dn", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaGetInfoRequest2_guid1,
- { "guid1", "drsuapi.DsReplicaGetInfoRequest2.guid1", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaGetInfoRequest2_unknown1,
- { "unknown1", "drsuapi.DsReplicaGetInfoRequest2.unknown1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaGetInfoRequest2_string1,
- { "string1", "drsuapi.DsReplicaGetInfoRequest2.string1", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaGetInfoRequest2_string2,
- { "string2", "drsuapi.DsReplicaGetInfoRequest2.string2", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaGetInfoRequest2_unknown2,
- { "unknown2", "drsuapi.DsReplicaGetInfoRequest2.unknown2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaGetInfoRequest_DRSUAPI_DS_REPLICA_GET_INFO_req1,
- { "req1", "drsuapi.DsReplicaGetInfoRequest.req1", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaGetInfoRequest_DRSUAPI_DS_REPLICA_GET_INFO2_req2,
- { "req2", "drsuapi.DsReplicaGetInfoRequest.req2", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaNeighbour_naming_context_dn,
- { "naming_context_dn", "drsuapi.DsReplicaNeighbour.naming_context_dn", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaNeighbour_source_dsa_obj_dn,
- { "source_dsa_obj_dn", "drsuapi.DsReplicaNeighbour.source_dsa_obj_dn", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaNeighbour_source_dsa_address,
- { "source_dsa_address", "drsuapi.DsReplicaNeighbour.source_dsa_address", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaNeighbour_transport_obj_dn,
- { "transport_obj_dn", "drsuapi.DsReplicaNeighbour.transport_obj_dn", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaNeighbour_replica_flags,
- { "replica_flags", "drsuapi.DsReplicaNeighbour.replica_flags", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaNeighbour_reserved,
- { "reserved", "drsuapi.DsReplicaNeighbour.reserved", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaNeighbour_naming_context_obj_guid,
- { "naming_context_obj_guid", "drsuapi.DsReplicaNeighbour.naming_context_obj_guid", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaNeighbour_source_dsa_obj_guid,
- { "source_dsa_obj_guid", "drsuapi.DsReplicaNeighbour.source_dsa_obj_guid", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaNeighbour_source_dsa_invocation_id,
- { "source_dsa_invocation_id", "drsuapi.DsReplicaNeighbour.source_dsa_invocation_id", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaNeighbour_transport_obj_guid,
- { "transport_obj_guid", "drsuapi.DsReplicaNeighbour.transport_obj_guid", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaNeighbour_tmp_highest_usn,
- { "tmp_highest_usn", "drsuapi.DsReplicaNeighbour.tmp_highest_usn", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaNeighbour_highest_usn,
- { "highest_usn", "drsuapi.DsReplicaNeighbour.highest_usn", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaNeighbour_last_success,
- { "last_success", "drsuapi.DsReplicaNeighbour.last_success", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaNeighbour_last_attempt,
- { "last_attempt", "drsuapi.DsReplicaNeighbour.last_attempt", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaNeighbour_result_last_attempt,
- { "result_last_attempt", "drsuapi.DsReplicaNeighbour.result_last_attempt", FT_UINT32, BASE_DEC,
- VALS(NT_errors), 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaNeighbour_consecutive_sync_failures,
- { "consecutive_sync_failures", "drsuapi.DsReplicaNeighbour.consecutive_sync_failures", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaNeighbourCtr_count,
- { "count", "drsuapi.DsReplicaNeighbourCtr.count", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaNeighbourCtr_reserved,
- { "reserved", "drsuapi.DsReplicaNeighbourCtr.reserved", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaNeighbourCtr_array,
- { "array", "drsuapi.DsReplicaNeighbourCtr.array", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursorCtr_count,
- { "count", "drsuapi.DsReplicaCoursorCtr.count", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursorCtr_reserved,
- { "reserved", "drsuapi.DsReplicaCoursorCtr.reserved", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursorCtr_array,
- { "array", "drsuapi.DsReplicaCoursorCtr.array", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaObjMetaData_attribute_name,
- { "attribute_name", "drsuapi.DsReplicaObjMetaData.attribute_name", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaObjMetaData_version,
- { "version", "drsuapi.DsReplicaObjMetaData.version", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaObjMetaData_originating_last_changed,
- { "originating_last_changed", "drsuapi.DsReplicaObjMetaData.originating_last_changed", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaObjMetaData_originating_dsa_invocation_id,
- { "originating_dsa_invocation_id", "drsuapi.DsReplicaObjMetaData.originating_dsa_invocation_id", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaObjMetaData_originating_usn,
- { "originating_usn", "drsuapi.DsReplicaObjMetaData.originating_usn", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaObjMetaData_local_usn,
- { "local_usn", "drsuapi.DsReplicaObjMetaData.local_usn", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaObjMetaDataCtr_count,
- { "count", "drsuapi.DsReplicaObjMetaDataCtr.count", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaObjMetaDataCtr_reserved,
- { "reserved", "drsuapi.DsReplicaObjMetaDataCtr.reserved", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaObjMetaDataCtr_array,
- { "array", "drsuapi.DsReplicaObjMetaDataCtr.array", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaKccDsaFailure_dsa_obj_dn,
- { "dsa_obj_dn", "drsuapi.DsReplicaKccDsaFailure.dsa_obj_dn", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaKccDsaFailure_dsa_obj_guid,
- { "dsa_obj_guid", "drsuapi.DsReplicaKccDsaFailure.dsa_obj_guid", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaKccDsaFailure_first_failure,
- { "first_failure", "drsuapi.DsReplicaKccDsaFailure.first_failure", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaKccDsaFailure_num_failures,
- { "num_failures", "drsuapi.DsReplicaKccDsaFailure.num_failures", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaKccDsaFailure_last_result,
- { "last_result", "drsuapi.DsReplicaKccDsaFailure.last_result", FT_UINT32, BASE_DEC,
- VALS(NT_errors), 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaKccDsaFailuresCtr_count,
- { "count", "drsuapi.DsReplicaKccDsaFailuresCtr.count", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaKccDsaFailuresCtr_reserved,
- { "reserved", "drsuapi.DsReplicaKccDsaFailuresCtr.reserved", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaKccDsaFailuresCtr_array,
- { "array", "drsuapi.DsReplicaKccDsaFailuresCtr.array", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsRplicaOpOptions_DRSUAPI_DS_REPLICA_OP_TYPE_SYNC_sync,
- { "sync", "drsuapi.DsRplicaOpOptions.sync", FT_UINT32, BASE_HEX,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsRplicaOpOptions_DRSUAPI_DS_REPLICA_OP_TYPE_ADD_add,
- { "add", "drsuapi.DsRplicaOpOptions.add", FT_UINT32, BASE_HEX,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsRplicaOpOptions_DRSUAPI_DS_REPLICA_OP_TYPE_DELETE_delete,
- { "delete", "drsuapi.DsRplicaOpOptions.delete", FT_UINT32, BASE_HEX,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsRplicaOpOptions_DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY_modify,
- { "modify", "drsuapi.DsRplicaOpOptions.modify", FT_UINT32, BASE_HEX,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsRplicaOpOptions_DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS_update_refs,
- { "update_refs", "drsuapi.DsRplicaOpOptions.update_refs", FT_UINT32, BASE_HEX,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsRplicaOpOptions_default_unknown,
- { "unknown", "drsuapi.DsRplicaOpOptions.unknown", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaOp_operation_start,
- { "operation_start", "drsuapi.DsReplicaOp.operation_start", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaOp_serial_num,
- { "serial_num", "drsuapi.DsReplicaOp.serial_num", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaOp_priority,
- { "priority", "drsuapi.DsReplicaOp.priority", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaOp_operation_type,
- { "operation_type", "drsuapi.DsReplicaOp.operation_type", FT_INT16, BASE_DEC,
- VALS(drsuapi_DsReplicaOpType_vals), 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaOp_options,
- { "options", "drsuapi.DsReplicaOp.options", FT_UINT16, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaOp_nc_dn,
- { "nc_dn", "drsuapi.DsReplicaOp.nc_dn", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaOp_remote_dsa_obj_dn,
- { "remote_dsa_obj_dn", "drsuapi.DsReplicaOp.remote_dsa_obj_dn", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaOp_remote_dsa_address,
- { "remote_dsa_address", "drsuapi.DsReplicaOp.remote_dsa_address", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaOp_nc_obj_guid,
- { "nc_obj_guid", "drsuapi.DsReplicaOp.nc_obj_guid", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaOp_remote_dsa_obj_guid,
- { "remote_dsa_obj_guid", "drsuapi.DsReplicaOp.remote_dsa_obj_guid", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaOpCtr_time,
- { "time", "drsuapi.DsReplicaOpCtr.time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaOpCtr_count,
- { "count", "drsuapi.DsReplicaOpCtr.count", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaOpCtr_array,
- { "array", "drsuapi.DsReplicaOpCtr.array", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData_attribute_name,
- { "attribute_name", "drsuapi.DsReplicaAttrValMetaData.attribute_name", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData_object_dn,
- { "object_dn", "drsuapi.DsReplicaAttrValMetaData.object_dn", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData_value_length,
- { "value_length", "drsuapi.DsReplicaAttrValMetaData.value_length", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData_value,
- { "value", "drsuapi.DsReplicaAttrValMetaData.value", FT_UINT8, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData_deleted,
- { "deleted", "drsuapi.DsReplicaAttrValMetaData.deleted", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData_created,
- { "created", "drsuapi.DsReplicaAttrValMetaData.created", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData_version,
- { "version", "drsuapi.DsReplicaAttrValMetaData.version", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData_originating_last_changed,
- { "originating_last_changed", "drsuapi.DsReplicaAttrValMetaData.originating_last_changed", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData_originating_dsa_invocation_id,
- { "originating_dsa_invocation_id", "drsuapi.DsReplicaAttrValMetaData.originating_dsa_invocation_id", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData_originating_usn,
- { "originating_usn", "drsuapi.DsReplicaAttrValMetaData.originating_usn", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData_local_usn,
- { "local_usn", "drsuapi.DsReplicaAttrValMetaData.local_usn", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaDataCtr_count,
- { "count", "drsuapi.DsReplicaAttrValMetaDataCtr.count", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaDataCtr_enumeration_context,
- { "enumeration_context", "drsuapi.DsReplicaAttrValMetaDataCtr.enumeration_context", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaDataCtr_array,
- { "array", "drsuapi.DsReplicaAttrValMetaDataCtr.array", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursor2_source_dsa_invocation_id,
- { "source_dsa_invocation_id", "drsuapi.DsReplicaCoursor2.source_dsa_invocation_id", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursor2_highest_usn,
- { "highest_usn", "drsuapi.DsReplicaCoursor2.highest_usn", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursor2_last_sync_success,
- { "last_sync_success", "drsuapi.DsReplicaCoursor2.last_sync_success", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursor2Ctr_count,
- { "count", "drsuapi.DsReplicaCoursor2Ctr.count", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursor2Ctr_enumeration_context,
- { "enumeration_context", "drsuapi.DsReplicaCoursor2Ctr.enumeration_context", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursor2Ctr_array,
- { "array", "drsuapi.DsReplicaCoursor2Ctr.array", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursor3_source_dsa_invocation_id,
- { "source_dsa_invocation_id", "drsuapi.DsReplicaCoursor3.source_dsa_invocation_id", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursor3_highest_usn,
- { "highest_usn", "drsuapi.DsReplicaCoursor3.highest_usn", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursor3_last_sync_success,
- { "last_sync_success", "drsuapi.DsReplicaCoursor3.last_sync_success", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursor3_source_dsa_obj_dn,
- { "source_dsa_obj_dn", "drsuapi.DsReplicaCoursor3.source_dsa_obj_dn", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursor3Ctr_count,
- { "count", "drsuapi.DsReplicaCoursor3Ctr.count", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursor3Ctr_enumeration_context,
- { "enumeration_context", "drsuapi.DsReplicaCoursor3Ctr.enumeration_context", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaCoursor3Ctr_array,
- { "array", "drsuapi.DsReplicaCoursor3Ctr.array", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaObjMetaData2_attribute_name,
- { "attribute_name", "drsuapi.DsReplicaObjMetaData2.attribute_name", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaObjMetaData2_version,
- { "version", "drsuapi.DsReplicaObjMetaData2.version", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaObjMetaData2_originating_last_changed,
- { "originating_last_changed", "drsuapi.DsReplicaObjMetaData2.originating_last_changed", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaObjMetaData2_originating_dsa_invocation_id,
- { "originating_dsa_invocation_id", "drsuapi.DsReplicaObjMetaData2.originating_dsa_invocation_id", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaObjMetaData2_originating_usn,
- { "originating_usn", "drsuapi.DsReplicaObjMetaData2.originating_usn", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaObjMetaData2_local_usn,
- { "local_usn", "drsuapi.DsReplicaObjMetaData2.local_usn", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaObjMetaData2_originating_dsa_obj_dn,
- { "originating_dsa_obj_dn", "drsuapi.DsReplicaObjMetaData2.originating_dsa_obj_dn", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaObjMetaData2Ctr_count,
- { "count", "drsuapi.DsReplicaObjMetaData2Ctr.count", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaObjMetaData2Ctr_enumeration_context,
- { "enumeration_context", "drsuapi.DsReplicaObjMetaData2Ctr.enumeration_context", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaObjMetaData2Ctr_array,
- { "array", "drsuapi.DsReplicaObjMetaData2Ctr.array", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData2_attribute_name,
- { "attribute_name", "drsuapi.DsReplicaAttrValMetaData2.attribute_name", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData2_object_dn,
- { "object_dn", "drsuapi.DsReplicaAttrValMetaData2.object_dn", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData2_value_length,
- { "value_length", "drsuapi.DsReplicaAttrValMetaData2.value_length", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData2_value,
- { "value", "drsuapi.DsReplicaAttrValMetaData2.value", FT_UINT8, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData2_deleted,
- { "deleted", "drsuapi.DsReplicaAttrValMetaData2.deleted", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData2_created,
- { "created", "drsuapi.DsReplicaAttrValMetaData2.created", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData2_version,
- { "version", "drsuapi.DsReplicaAttrValMetaData2.version", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData2_originating_last_changed,
- { "originating_last_changed", "drsuapi.DsReplicaAttrValMetaData2.originating_last_changed", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData2_originating_dsa_invocation_id,
- { "originating_dsa_invocation_id", "drsuapi.DsReplicaAttrValMetaData2.originating_dsa_invocation_id", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData2_originating_usn,
- { "originating_usn", "drsuapi.DsReplicaAttrValMetaData2.originating_usn", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData2_local_usn,
- { "local_usn", "drsuapi.DsReplicaAttrValMetaData2.local_usn", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData2_originating_dsa_obj_dn,
- { "originating_dsa_obj_dn", "drsuapi.DsReplicaAttrValMetaData2.originating_dsa_obj_dn", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData2Ctr_count,
- { "count", "drsuapi.DsReplicaAttrValMetaData2Ctr.count", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData2Ctr_enumeration_context,
- { "enumeration_context", "drsuapi.DsReplicaAttrValMetaData2Ctr.enumeration_context", FT_INT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaAttrValMetaData2Ctr_array,
- { "array", "drsuapi.DsReplicaAttrValMetaData2Ctr.array", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaConnection04_u1,
- { "u1", "drsuapi.DsReplicaConnection04.u1", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaConnection04_u2,
- { "u2", "drsuapi.DsReplicaConnection04.u2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaConnection04_u3,
- { "u3", "drsuapi.DsReplicaConnection04.u3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaConnection04_bind_guid,
- { "bind_guid", "drsuapi.DsReplicaConnection04.bind_guid", FT_GUID, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaConnection04_bind_time,
- { "bind_time", "drsuapi.DsReplicaConnection04.bind_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaConnection04_u4,
- { "u4", "drsuapi.DsReplicaConnection04.u4", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaConnection04_u5,
- { "u5", "drsuapi.DsReplicaConnection04.u5", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaConnection04Ctr_count,
- { "count", "drsuapi.DsReplicaConnection04Ctr.count", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaConnection04Ctr_reserved,
- { "reserved", "drsuapi.DsReplicaConnection04Ctr.reserved", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaConnection04Ctr_array,
- { "array", "drsuapi.DsReplicaConnection04Ctr.array", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplica06_str1,
- { "str1", "drsuapi.DsReplica06.str1", FT_STRING, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplica06_u1,
- { "u1", "drsuapi.DsReplica06.u1", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplica06_u2,
- { "u2", "drsuapi.DsReplica06.u2", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplica06_u3,
- { "u3", "drsuapi.DsReplica06.u3", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplica06_u4,
- { "u4", "drsuapi.DsReplica06.u4", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplica06_u5,
- { "u5", "drsuapi.DsReplica06.u5", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplica06_u6,
- { "u6", "drsuapi.DsReplica06.u6", FT_UINT64, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplica06_u7,
- { "u7", "drsuapi.DsReplica06.u7", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplica06Ctr_count,
- { "count", "drsuapi.DsReplica06Ctr.count", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplica06Ctr_reserved,
- { "reserved", "drsuapi.DsReplica06Ctr.reserved", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplica06Ctr_array,
- { "array", "drsuapi.DsReplica06Ctr.array", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_NEIGHBORS_neighbours,
- { "neighbours", "drsuapi.DsReplicaInfo.neighbours", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_CURSORS_coursors,
- { "coursors", "drsuapi.DsReplicaInfo.coursors", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA_objmetadata,
- { "objmetadata", "drsuapi.DsReplicaInfo.objmetadata", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES_connectfailures,
- { "connectfailures", "drsuapi.DsReplicaInfo.connectfailures", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES_linkfailures,
- { "linkfailures", "drsuapi.DsReplicaInfo.linkfailures", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_PENDING_OPS_pendingops,
- { "pendingops", "drsuapi.DsReplicaInfo.pendingops", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA_attrvalmetadata,
- { "attrvalmetadata", "drsuapi.DsReplicaInfo.attrvalmetadata", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_CURSORS2_coursors2,
- { "coursors2", "drsuapi.DsReplicaInfo.coursors2", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_CURSORS3_coursors3,
- { "coursors3", "drsuapi.DsReplicaInfo.coursors3", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2_objmetadata2,
- { "objmetadata2", "drsuapi.DsReplicaInfo.objmetadata2", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2_attrvalmetadata2,
- { "attrvalmetadata2", "drsuapi.DsReplicaInfo.attrvalmetadata2", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02_neighbours02,
- { "neighbours02", "drsuapi.DsReplicaInfo.neighbours02", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04_connections04,
- { "connections04", "drsuapi.DsReplicaInfo.connections04", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_CURSURS05_coursors05,
- { "coursors05", "drsuapi.DsReplicaInfo.coursors05", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_06_i06,
- { "i06", "drsuapi.DsReplicaInfo.i06", FT_NONE, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaGetInfo_bind_handle,
- { "bind_handle", "drsuapi.DsReplicaGetInfo.bind_handle", FT_BYTES, BASE_NONE,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaGetInfo_level,
- { "level", "drsuapi.DsReplicaGetInfo.level", FT_INT32, BASE_DEC,
- VALS(drsuapi_DsReplicaGetInfoLevel_vals), 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaGetInfo_req,
- { "req", "drsuapi.DsReplicaGetInfo.req", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaGetInfo_info_type,
- { "info_type", "drsuapi.DsReplicaGetInfo.info_type", FT_INT32, BASE_DEC,
- VALS(drsuapi_DsReplicaInfoType_vals), 0,
- NULL, HFILL }},
-
- { &hf_drsuapi_DsReplicaGetInfo_info,
- { "info", "drsuapi.DsReplicaGetInfo.info", FT_UINT32, BASE_DEC,
- NULL, 0,
- NULL, HFILL }},
+ { &hf_drsuapi_opnum,
+ { "Operation", "drsuapi.opnum", FT_UINT16, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_rc,
+ { "Return code", "drsuapi.rc", FT_UINT32, BASE_HEX,
+ VALS(NT_errors), 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_BASE,
+ { "DRSUAPI_SUPPORTED_EXTENSION_BASE", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_BASE", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_BASE_tfs), 0x00000001,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION,
+ { "DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION_tfs), 0x00000002,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI,
+ { "DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI_tfs), 0x00000004,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2,
+ { "DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2_tfs), 0x00000008,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS,
+ { "DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS_tfs), 0x00000010,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1,
+ { "DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1_tfs), 0x00000020,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION,
+ { "DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION_tfs), 0x00000040,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_00000080,
+ { "DRSUAPI_SUPPORTED_EXTENSION_00000080", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_00000080", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_00000080_tfs), 0x00000080,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE,
+ { "DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE_tfs), 0x00000100,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2,
+ { "DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2_tfs), 0x00000200,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION,
+ { "DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION_tfs), 0x00000400,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2,
+ { "DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2_tfs), 0x00000800,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD,
+ { "DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD_tfs), 0x00001000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND,
+ { "DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND_tfs), 0x00002000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO,
+ { "DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO_tfs), 0x00004000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION,
+ { "DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION_tfs), 0x00008000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01,
+ { "DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01_tfs), 0x00010000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP,
+ { "DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP_tfs), 0x00020000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY,
+ { "DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY_tfs), 0x00040000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3,
+ { "DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3_tfs), 0x00080000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_00100000,
+ { "DRSUAPI_SUPPORTED_EXTENSION_00100000", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_00100000", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_00100000_tfs), 0x00100000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2,
+ { "DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2_tfs), 0x00200000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6,
+ { "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6_tfs), 0x00400000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS,
+ { "DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS_tfs), 0x00800000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8,
+ { "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8_tfs), 0x01000000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5,
+ { "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5_tfs), 0x02000000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6,
+ { "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6_tfs), 0x04000000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3,
+ { "DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3_tfs), 0x08000000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7,
+ { "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7_tfs), 0x08000000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT,
+ { "DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT_tfs), 0x08000000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS,
+ { "DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS_tfs), 0x10000000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_20000000,
+ { "DRSUAPI_SUPPORTED_EXTENSION_20000000", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_20000000", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_20000000_tfs), 0x20000000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_40000000,
+ { "DRSUAPI_SUPPORTED_EXTENSION_40000000", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_40000000", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_40000000_tfs), 0x40000000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_80000000,
+ { "DRSUAPI_SUPPORTED_EXTENSION_80000000", "drsuapi.SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_80000000", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_SUPPORTED_EXTENSION_80000000_tfs), 0x80000000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsBindInfo24_supported_extensions,
+ { "supported_extensions", "drsuapi.DsBindInfo24.supported_extensions", FT_UINT32, BASE_HEX,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsBindInfo24_site_guid,
+ { "site_guid", "drsuapi.DsBindInfo24.site_guid", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsBindInfo24_u1,
+ { "u1", "drsuapi.DsBindInfo24.u1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsBindInfo28_supported_extensions,
+ { "supported_extensions", "drsuapi.DsBindInfo28.supported_extensions", FT_UINT32, BASE_HEX,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsBindInfo28_site_guid,
+ { "site_guid", "drsuapi.DsBindInfo28.site_guid", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsBindInfo28_u1,
+ { "u1", "drsuapi.DsBindInfo28.u1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsBindInfo28_repl_epoch,
+ { "repl_epoch", "drsuapi.DsBindInfo28.repl_epoch", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsBindInfo_24_info24,
+ { "info24", "drsuapi.DsBindInfo.info24", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsBindInfo_28_info28,
+ { "info28", "drsuapi.DsBindInfo.info28", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsBindInfoCtr_length,
+ { "length", "drsuapi.DsBindInfoCtr.length", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsBindInfoCtr_info,
+ { "info", "drsuapi.DsBindInfoCtr.info", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsBind_bind_guid,
+ { "bind_guid", "drsuapi.DsBind.bind_guid", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsBind_bind_info,
+ { "bind_info", "drsuapi.DsBind.bind_info", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsBind_bind_handle,
+ { "bind_handle", "drsuapi.DsBind.bind_handle", FT_BYTES, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsUnbind_bind_handle,
+ { "bind_handle", "drsuapi.DsUnbind.bind_handle", FT_BYTES, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncRequest1Info_unknown1,
+ { "unknown1", "drsuapi.DsReplicaSyncRequest1Info.unknown1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncRequest1Info_unknown2,
+ { "unknown2", "drsuapi.DsReplicaSyncRequest1Info.unknown2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncRequest1Info_guid1,
+ { "guid1", "drsuapi.DsReplicaSyncRequest1Info.guid1", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncRequest1Info_byte_array,
+ { "byte_array", "drsuapi.DsReplicaSyncRequest1Info.byte_array", FT_UINT8, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncRequest1Info_str_len,
+ { "str_len", "drsuapi.DsReplicaSyncRequest1Info.str_len", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_OPERATION,
+ { "DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_OPERATION", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_OPERATION", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_OPERATION_tfs), 0x00000001,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_WRITEABLE,
+ { "DRSUAPI_DS_REPLICA_SYNC_WRITEABLE", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_WRITEABLE", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_SYNC_WRITEABLE_tfs), 0x00000002,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_PERIODIC,
+ { "DRSUAPI_DS_REPLICA_SYNC_PERIODIC", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_PERIODIC", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_SYNC_PERIODIC_tfs), 0x00000004,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_INTERSITE_MESSAGING,
+ { "DRSUAPI_DS_REPLICA_SYNC_INTERSITE_MESSAGING", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_INTERSITE_MESSAGING", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_SYNC_INTERSITE_MESSAGING_tfs), 0x00000008,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_ALL_SOURCES,
+ { "DRSUAPI_DS_REPLICA_SYNC_ALL_SOURCES", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_ALL_SOURCES", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_SYNC_ALL_SOURCES_tfs), 0x00000010,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_FULL,
+ { "DRSUAPI_DS_REPLICA_SYNC_FULL", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_FULL", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_SYNC_FULL_tfs), 0x00000020,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_URGENT,
+ { "DRSUAPI_DS_REPLICA_SYNC_URGENT", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_URGENT", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_SYNC_URGENT_tfs), 0x00000040,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_NO_DISCARD,
+ { "DRSUAPI_DS_REPLICA_SYNC_NO_DISCARD", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_NO_DISCARD", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_SYNC_NO_DISCARD_tfs), 0x00000080,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_FORCE,
+ { "DRSUAPI_DS_REPLICA_SYNC_FORCE", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_FORCE", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_SYNC_FORCE_tfs), 0x00000100,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_ADD_REFERENCE,
+ { "DRSUAPI_DS_REPLICA_SYNC_ADD_REFERENCE", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_ADD_REFERENCE", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_SYNC_ADD_REFERENCE_tfs), 0x00000200,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_NEVER_COMPLETED,
+ { "DRSUAPI_DS_REPLICA_SYNC_NEVER_COMPLETED", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_NEVER_COMPLETED", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_SYNC_NEVER_COMPLETED_tfs), 0x00000400,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_TWO_WAY,
+ { "DRSUAPI_DS_REPLICA_SYNC_TWO_WAY", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_TWO_WAY", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_SYNC_TWO_WAY_tfs), 0x00000800,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_NEVER_NOTIFY,
+ { "DRSUAPI_DS_REPLICA_SYNC_NEVER_NOTIFY", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_NEVER_NOTIFY", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_SYNC_NEVER_NOTIFY_tfs), 0x00001000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_INITIAL,
+ { "DRSUAPI_DS_REPLICA_SYNC_INITIAL", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_INITIAL", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_SYNC_INITIAL_tfs), 0x00002000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_USE_COMPRESSION,
+ { "DRSUAPI_DS_REPLICA_SYNC_USE_COMPRESSION", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_USE_COMPRESSION", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_SYNC_USE_COMPRESSION_tfs), 0x00004000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_ABANDONED,
+ { "DRSUAPI_DS_REPLICA_SYNC_ABANDONED", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_ABANDONED", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_SYNC_ABANDONED_tfs), 0x00008000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_INITIAL_IN_PROGRESS,
+ { "DRSUAPI_DS_REPLICA_SYNC_INITIAL_IN_PROGRESS", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_INITIAL_IN_PROGRESS", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_SYNC_INITIAL_IN_PROGRESS_tfs), 0x00010000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_PARTIAL_ATTRIBUTE_SET,
+ { "DRSUAPI_DS_REPLICA_SYNC_PARTIAL_ATTRIBUTE_SET", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_PARTIAL_ATTRIBUTE_SET", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_SYNC_PARTIAL_ATTRIBUTE_SET_tfs), 0x00020000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_REQUEUE,
+ { "DRSUAPI_DS_REPLICA_SYNC_REQUEUE", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_REQUEUE", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_SYNC_REQUEUE_tfs), 0x00040000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_NOTIFICATION,
+ { "DRSUAPI_DS_REPLICA_SYNC_NOTIFICATION", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_NOTIFICATION", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_SYNC_NOTIFICATION_tfs), 0x00080000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_REPLICA,
+ { "DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_REPLICA", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_REPLICA", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_REPLICA_tfs), 0x00100000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_CRITICAL,
+ { "DRSUAPI_DS_REPLICA_SYNC_CRITICAL", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_CRITICAL", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_SYNC_CRITICAL_tfs), 0x00200000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_FULL_IN_PROGRESS,
+ { "DRSUAPI_DS_REPLICA_SYNC_FULL_IN_PROGRESS", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_FULL_IN_PROGRESS", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_SYNC_FULL_IN_PROGRESS_tfs), 0x00400000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncOptions_DRSUAPI_DS_REPLICA_SYNC_PREEMPTED,
+ { "DRSUAPI_DS_REPLICA_SYNC_PREEMPTED", "drsuapi.DsReplicaSyncOptions.DRSUAPI_DS_REPLICA_SYNC_PREEMPTED", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_SYNC_PREEMPTED_tfs), 0x00800000,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncRequest1_info,
+ { "info", "drsuapi.DsReplicaSyncRequest1.info", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncRequest1_guid1,
+ { "guid1", "drsuapi.DsReplicaSyncRequest1.guid1", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncRequest1_string1,
+ { "string1", "drsuapi.DsReplicaSyncRequest1.string1", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncRequest1_options,
+ { "options", "drsuapi.DsReplicaSyncRequest1.options", FT_UINT32, BASE_HEX,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSyncRequest_1_req1,
+ { "req1", "drsuapi.DsReplicaSyncRequest.req1", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSync_bind_handle,
+ { "bind_handle", "drsuapi.DsReplicaSync.bind_handle", FT_BYTES, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSync_level,
+ { "level", "drsuapi.DsReplicaSync.level", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaSync_req,
+ { "req", "drsuapi.DsReplicaSync.req", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesUsnTriple_usn1,
+ { "usn1", "drsuapi.DsGetNCChangesUsnTriple.usn1", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesUsnTriple_usn2,
+ { "usn2", "drsuapi.DsGetNCChangesUsnTriple.usn2", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesUsnTriple_usn3,
+ { "usn3", "drsuapi.DsGetNCChangesUsnTriple.usn3", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursor_source_dsa_invocation_id,
+ { "source_dsa_invocation_id", "drsuapi.DsReplicaCoursor.source_dsa_invocation_id", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursor_highest_usn,
+ { "highest_usn", "drsuapi.DsReplicaCoursor.highest_usn", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursor05Ctr_u1,
+ { "u1", "drsuapi.DsReplicaCoursor05Ctr.u1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursor05Ctr_u2,
+ { "u2", "drsuapi.DsReplicaCoursor05Ctr.u2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursor05Ctr_count,
+ { "count", "drsuapi.DsReplicaCoursor05Ctr.count", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursor05Ctr_u3,
+ { "u3", "drsuapi.DsReplicaCoursor05Ctr.u3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursor05Ctr_array,
+ { "array", "drsuapi.DsReplicaCoursor05Ctr.array", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest5_guid1,
+ { "guid1", "drsuapi.DsGetNCChangesRequest5.guid1", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest5_guid2,
+ { "guid2", "drsuapi.DsGetNCChangesRequest5.guid2", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest5_sync_req_info1,
+ { "sync_req_info1", "drsuapi.DsGetNCChangesRequest5.sync_req_info1", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest5_usn1,
+ { "usn1", "drsuapi.DsGetNCChangesRequest5.usn1", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest5_coursor,
+ { "coursor", "drsuapi.DsGetNCChangesRequest5.coursor", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest5_unknown1,
+ { "unknown1", "drsuapi.DsGetNCChangesRequest5.unknown1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest5_unknown2,
+ { "unknown2", "drsuapi.DsGetNCChangesRequest5.unknown2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest5_unknown3,
+ { "unknown3", "drsuapi.DsGetNCChangesRequest5.unknown3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest5_unknown4,
+ { "unknown4", "drsuapi.DsGetNCChangesRequest5.unknown4", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest5_h1,
+ { "h1", "drsuapi.DsGetNCChangesRequest5.h1", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest_Ctr14_length,
+ { "length", "drsuapi.DsGetNCChangesRequest_Ctr14.length", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest_Ctr14_byte_array,
+ { "byte_array", "drsuapi.DsGetNCChangesRequest_Ctr14.byte_array", FT_UINT8, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest_Ctr13_unknown1,
+ { "unknown1", "drsuapi.DsGetNCChangesRequest_Ctr13.unknown1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest_Ctr13_data,
+ { "data", "drsuapi.DsGetNCChangesRequest_Ctr13.data", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest_Ctr12_count,
+ { "count", "drsuapi.DsGetNCChangesRequest_Ctr12.count", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest_Ctr12_array,
+ { "array", "drsuapi.DsGetNCChangesRequest_Ctr12.array", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest8_guid1,
+ { "guid1", "drsuapi.DsGetNCChangesRequest8.guid1", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest8_guid2,
+ { "guid2", "drsuapi.DsGetNCChangesRequest8.guid2", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest8_sync_req_info1,
+ { "sync_req_info1", "drsuapi.DsGetNCChangesRequest8.sync_req_info1", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest8_usn1,
+ { "usn1", "drsuapi.DsGetNCChangesRequest8.usn1", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest8_coursor,
+ { "coursor", "drsuapi.DsGetNCChangesRequest8.coursor", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest8_unknown1,
+ { "unknown1", "drsuapi.DsGetNCChangesRequest8.unknown1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest8_unknown2,
+ { "unknown2", "drsuapi.DsGetNCChangesRequest8.unknown2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest8_unknown3,
+ { "unknown3", "drsuapi.DsGetNCChangesRequest8.unknown3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest8_unknown4,
+ { "unknown4", "drsuapi.DsGetNCChangesRequest8.unknown4", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest8_h1,
+ { "h1", "drsuapi.DsGetNCChangesRequest8.h1", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest8_unique_ptr1,
+ { "unique_ptr1", "drsuapi.DsGetNCChangesRequest8.unique_ptr1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest8_unique_ptr2,
+ { "unique_ptr2", "drsuapi.DsGetNCChangesRequest8.unique_ptr2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest8_ctr12,
+ { "ctr12", "drsuapi.DsGetNCChangesRequest8.ctr12", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest_5_req5,
+ { "req5", "drsuapi.DsGetNCChangesRequest.req5", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesRequest_8_req8,
+ { "req8", "drsuapi.DsGetNCChangesRequest.req8", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursorEx_coursor,
+ { "coursor", "drsuapi.DsReplicaCoursorEx.coursor", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursorEx_time1,
+ { "time1", "drsuapi.DsReplicaCoursorEx.time1", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursorEx05Ctr_u1,
+ { "u1", "drsuapi.DsReplicaCoursorEx05Ctr.u1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursorEx05Ctr_u2,
+ { "u2", "drsuapi.DsReplicaCoursorEx05Ctr.u2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursorEx05Ctr_count,
+ { "count", "drsuapi.DsReplicaCoursorEx05Ctr.count", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursorEx05Ctr_u3,
+ { "u3", "drsuapi.DsReplicaCoursorEx05Ctr.u3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursorEx05Ctr_array,
+ { "array", "drsuapi.DsReplicaCoursorEx05Ctr.array", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesCtr6_guid1,
+ { "guid1", "drsuapi.DsGetNCChangesCtr6.guid1", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesCtr6_guid2,
+ { "guid2", "drsuapi.DsGetNCChangesCtr6.guid2", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesCtr6_sync_req_info1,
+ { "sync_req_info1", "drsuapi.DsGetNCChangesCtr6.sync_req_info1", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesCtr6_usn1,
+ { "usn1", "drsuapi.DsGetNCChangesCtr6.usn1", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesCtr6_usn2,
+ { "usn2", "drsuapi.DsGetNCChangesCtr6.usn2", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesCtr6_coursor_ex,
+ { "coursor_ex", "drsuapi.DsGetNCChangesCtr6.coursor_ex", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesCtr6_ctr12,
+ { "ctr12", "drsuapi.DsGetNCChangesCtr6.ctr12", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesCtr6_u1,
+ { "u1", "drsuapi.DsGetNCChangesCtr6.u1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesCtr6_ptr1,
+ { "ptr1", "drsuapi.DsGetNCChangesCtr6.ptr1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesCtr6_u2,
+ { "u2", "drsuapi.DsGetNCChangesCtr6.u2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesCtr6_len1,
+ { "len1", "drsuapi.DsGetNCChangesCtr6.len1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesCtr6_array_ptr1,
+ { "array_ptr1", "drsuapi.DsGetNCChangesCtr6.array_ptr1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesCtr6_u3,
+ { "u3", "drsuapi.DsGetNCChangesCtr6.u3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesCtr_6_ctr6,
+ { "ctr6", "drsuapi.DsGetNCChangesCtr.ctr6", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChangesCtr_7_ctr7,
+ { "ctr7", "drsuapi.DsGetNCChangesCtr.ctr7", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChanges_bind_handle,
+ { "bind_handle", "drsuapi.DsGetNCChanges.bind_handle", FT_BYTES, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChanges_level,
+ { "level", "drsuapi.DsGetNCChanges.level", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChanges_req,
+ { "req", "drsuapi.DsGetNCChanges.req", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetNCChanges_ctr,
+ { "ctr", "drsuapi.DsGetNCChanges.ctr", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaUpdateRefsOptions_DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION,
+ { "DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION", "drsuapi.DsReplicaUpdateRefsOptions.DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION_tfs), 0x00000001,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaUpdateRefsOptions_DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE,
+ { "DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE", "drsuapi.DsReplicaUpdateRefsOptions.DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE_tfs), 0x00000002,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaUpdateRefsOptions_DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE,
+ { "DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE", "drsuapi.DsReplicaUpdateRefsOptions.DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE_tfs), 0x00000004,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaUpdateRefsOptions_DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE,
+ { "DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE", "drsuapi.DsReplicaUpdateRefsOptions.DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE_tfs), 0x00000008,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaUpdateRefsOptions_DRSUAPI_DS_REPLICA_UPDATE_0x00000010,
+ { "DRSUAPI_DS_REPLICA_UPDATE_0x00000010", "drsuapi.DsReplicaUpdateRefsOptions.DRSUAPI_DS_REPLICA_UPDATE_0x00000010", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_UPDATE_0x00000010_tfs), 0x00000010,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaUpdateRefsRequest1_unknown1,
+ { "unknown1", "drsuapi.DsReplicaUpdateRefsRequest1.unknown1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaUpdateRefsRequest1_unknown2,
+ { "unknown2", "drsuapi.DsReplicaUpdateRefsRequest1.unknown2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaUpdateRefsRequest1_dest_dsa_guid,
+ { "dest_dsa_guid", "drsuapi.DsReplicaUpdateRefsRequest1.dest_dsa_guid", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaUpdateRefsRequest1_options,
+ { "options", "drsuapi.DsReplicaUpdateRefsRequest1.options", FT_UINT32, BASE_HEX,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaUpdateRefsRequest1_sync_req_info1,
+ { "sync_req_info1", "drsuapi.DsReplicaUpdateRefsRequest1.sync_req_info1", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaUpdateRefsRequest1_dest_dsa_dns_name,
+ { "dest_dsa_dns_name", "drsuapi.DsReplicaUpdateRefsRequest1.dest_dsa_dns_name", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaUpdateRefsRequest_1_req1,
+ { "req1", "drsuapi.DsReplicaUpdateRefsRequest.req1", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaUpdateRefs_bind_handle,
+ { "bind_handle", "drsuapi.DsReplicaUpdateRefs.bind_handle", FT_BYTES, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaUpdateRefs_level,
+ { "level", "drsuapi.DsReplicaUpdateRefs.level", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaUpdateRefs_req,
+ { "req", "drsuapi.DsReplicaUpdateRefs.req", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAddOptions_DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION,
+ { "DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION", "drsuapi.DsReplicaAddOptions.DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION_tfs), 0x00000001,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAddOptions_DRSUAPI_DS_REPLICA_ADD_WRITEABLE,
+ { "DRSUAPI_DS_REPLICA_ADD_WRITEABLE", "drsuapi.DsReplicaAddOptions.DRSUAPI_DS_REPLICA_ADD_WRITEABLE", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_ADD_WRITEABLE_tfs), 0x00000002,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaDeleteOptions_DRSUAPI_DS_REPLICA_DELETE_ASYNCHRONOUS_OPERATION,
+ { "DRSUAPI_DS_REPLICA_DELETE_ASYNCHRONOUS_OPERATION", "drsuapi.DsReplicaDeleteOptions.DRSUAPI_DS_REPLICA_DELETE_ASYNCHRONOUS_OPERATION", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_DELETE_ASYNCHRONOUS_OPERATION_tfs), 0x00000001,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaDeleteOptions_DRSUAPI_DS_REPLICA_DELETE_WRITEABLE,
+ { "DRSUAPI_DS_REPLICA_DELETE_WRITEABLE", "drsuapi.DsReplicaDeleteOptions.DRSUAPI_DS_REPLICA_DELETE_WRITEABLE", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_DELETE_WRITEABLE_tfs), 0x00000002,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaModifyOptions_DRSUAPI_DS_REPLICA_MODIFY_ASYNCHRONOUS_OPERATION,
+ { "DRSUAPI_DS_REPLICA_MODIFY_ASYNCHRONOUS_OPERATION", "drsuapi.DsReplicaModifyOptions.DRSUAPI_DS_REPLICA_MODIFY_ASYNCHRONOUS_OPERATION", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_MODIFY_ASYNCHRONOUS_OPERATION_tfs), 0x00000001,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaModifyOptions_DRSUAPI_DS_REPLICA_MODIFY_WRITEABLE,
+ { "DRSUAPI_DS_REPLICA_MODIFY_WRITEABLE", "drsuapi.DsReplicaModifyOptions.DRSUAPI_DS_REPLICA_MODIFY_WRITEABLE", FT_BOOLEAN, 32,
+ TFS(&DRSUAPI_DS_REPLICA_MODIFY_WRITEABLE_tfs), 0x00000002,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsNameString_str,
+ { "str", "drsuapi.DsNameString.str", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsNameRequest1_unknown1,
+ { "unknown1", "drsuapi.DsNameRequest1.unknown1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsNameRequest1_unknown2,
+ { "unknown2", "drsuapi.DsNameRequest1.unknown2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsNameRequest1_format_flags,
+ { "format_flags", "drsuapi.DsNameRequest1.format_flags", FT_INT32, BASE_DEC,
+ VALS(drsuapi_DsNameFlags_vals), 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsNameRequest1_format_offered,
+ { "format_offered", "drsuapi.DsNameRequest1.format_offered", FT_INT32, BASE_DEC,
+ VALS(drsuapi_DsNameFormat_vals), 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsNameRequest1_format_desired,
+ { "format_desired", "drsuapi.DsNameRequest1.format_desired", FT_INT32, BASE_DEC,
+ VALS(drsuapi_DsNameFormat_vals), 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsNameRequest1_count,
+ { "count", "drsuapi.DsNameRequest1.count", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsNameRequest1_names,
+ { "names", "drsuapi.DsNameRequest1.names", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsNameRequest_1_req1,
+ { "req1", "drsuapi.DsNameRequest.req1", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsNameInfo1_status,
+ { "status", "drsuapi.DsNameInfo1.status", FT_INT32, BASE_DEC,
+ VALS(drsuapi_DsNameStatus_vals), 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsNameInfo1_dns_domain_name,
+ { "dns_domain_name", "drsuapi.DsNameInfo1.dns_domain_name", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsNameInfo1_result_name,
+ { "result_name", "drsuapi.DsNameInfo1.result_name", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsNameCtr1_count,
+ { "count", "drsuapi.DsNameCtr1.count", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsNameCtr1_array,
+ { "array", "drsuapi.DsNameCtr1.array", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsNameCtr_1_ctr1,
+ { "ctr1", "drsuapi.DsNameCtr.ctr1", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsCrackNames_bind_handle,
+ { "bind_handle", "drsuapi.DsCrackNames.bind_handle", FT_BYTES, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsCrackNames_level,
+ { "level", "drsuapi.DsCrackNames.level", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsCrackNames_req,
+ { "req", "drsuapi.DsCrackNames.req", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsCrackNames_ctr,
+ { "ctr", "drsuapi.DsCrackNames.ctr", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsWriteAccountSpnRequest1_operation,
+ { "operation", "drsuapi.DsWriteAccountSpnRequest1.operation", FT_INT32, BASE_DEC,
+ VALS(drsuapi_DsSpnOperation_vals), 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsWriteAccountSpnRequest1_unknown1,
+ { "unknown1", "drsuapi.DsWriteAccountSpnRequest1.unknown1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsWriteAccountSpnRequest1_object_dn,
+ { "object_dn", "drsuapi.DsWriteAccountSpnRequest1.object_dn", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsWriteAccountSpnRequest1_count,
+ { "count", "drsuapi.DsWriteAccountSpnRequest1.count", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsWriteAccountSpnRequest1_spn_names,
+ { "spn_names", "drsuapi.DsWriteAccountSpnRequest1.spn_names", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsWriteAccountSpnRequest_1_req1,
+ { "req1", "drsuapi.DsWriteAccountSpnRequest.req1", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsWriteAccountSpnResult1_status,
+ { "status", "drsuapi.DsWriteAccountSpnResult1.status", FT_UINT32, BASE_DEC,
+ VALS(NT_errors), 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsWriteAccountSpnResult_1_res1,
+ { "res1", "drsuapi.DsWriteAccountSpnResult.res1", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsWriteAccountSpn_bind_handle,
+ { "bind_handle", "drsuapi.DsWriteAccountSpn.bind_handle", FT_BYTES, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsWriteAccountSpn_level,
+ { "level", "drsuapi.DsWriteAccountSpn.level", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsWriteAccountSpn_req,
+ { "req", "drsuapi.DsWriteAccountSpn.req", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsWriteAccountSpn_res,
+ { "res", "drsuapi.DsWriteAccountSpn.res", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfoRequest1_domain_name,
+ { "domain_name", "drsuapi.DsGetDCInfoRequest1.domain_name", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfoRequest1_level,
+ { "level", "drsuapi.DsGetDCInfoRequest1.level", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfoRequest_1_req1,
+ { "req1", "drsuapi.DsGetDCInfoRequest.req1", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo1_netbios_name,
+ { "netbios_name", "drsuapi.DsGetDCInfo1.netbios_name", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo1_dns_name,
+ { "dns_name", "drsuapi.DsGetDCInfo1.dns_name", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo1_site_name,
+ { "site_name", "drsuapi.DsGetDCInfo1.site_name", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo1_computer_dn,
+ { "computer_dn", "drsuapi.DsGetDCInfo1.computer_dn", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo1_server_dn,
+ { "server_dn", "drsuapi.DsGetDCInfo1.server_dn", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo1_is_pdc,
+ { "is_pdc", "drsuapi.DsGetDCInfo1.is_pdc", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo1_is_enabled,
+ { "is_enabled", "drsuapi.DsGetDCInfo1.is_enabled", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfoCtr1_count,
+ { "count", "drsuapi.DsGetDCInfoCtr1.count", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfoCtr1_array,
+ { "array", "drsuapi.DsGetDCInfoCtr1.array", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo2_netbios_name,
+ { "netbios_name", "drsuapi.DsGetDCInfo2.netbios_name", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo2_dns_name,
+ { "dns_name", "drsuapi.DsGetDCInfo2.dns_name", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo2_site_name,
+ { "site_name", "drsuapi.DsGetDCInfo2.site_name", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo2_site_dn,
+ { "site_dn", "drsuapi.DsGetDCInfo2.site_dn", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo2_computer_dn,
+ { "computer_dn", "drsuapi.DsGetDCInfo2.computer_dn", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo2_server_dn,
+ { "server_dn", "drsuapi.DsGetDCInfo2.server_dn", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo2_ntds_dn,
+ { "ntds_dn", "drsuapi.DsGetDCInfo2.ntds_dn", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo2_is_pdc,
+ { "is_pdc", "drsuapi.DsGetDCInfo2.is_pdc", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo2_is_enabled,
+ { "is_enabled", "drsuapi.DsGetDCInfo2.is_enabled", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo2_is_gc,
+ { "is_gc", "drsuapi.DsGetDCInfo2.is_gc", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo2_site_guid,
+ { "site_guid", "drsuapi.DsGetDCInfo2.site_guid", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo2_computer_guid,
+ { "computer_guid", "drsuapi.DsGetDCInfo2.computer_guid", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo2_server_guid,
+ { "server_guid", "drsuapi.DsGetDCInfo2.server_guid", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo2_ntds_guid,
+ { "ntds_guid", "drsuapi.DsGetDCInfo2.ntds_guid", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfoCtr2_count,
+ { "count", "drsuapi.DsGetDCInfoCtr2.count", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfoCtr2_array,
+ { "array", "drsuapi.DsGetDCInfoCtr2.array", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo01_unknown1,
+ { "unknown1", "drsuapi.DsGetDCInfo01.unknown1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo01_unknown2,
+ { "unknown2", "drsuapi.DsGetDCInfo01.unknown2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo01_unknown3,
+ { "unknown3", "drsuapi.DsGetDCInfo01.unknown3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo01_unknown4,
+ { "unknown4", "drsuapi.DsGetDCInfo01.unknown4", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo01_unknown5,
+ { "unknown5", "drsuapi.DsGetDCInfo01.unknown5", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo01_unknown6,
+ { "unknown6", "drsuapi.DsGetDCInfo01.unknown6", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfo01_server_nt4_account,
+ { "server_nt4_account", "drsuapi.DsGetDCInfo01.server_nt4_account", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfoCtr01_count,
+ { "count", "drsuapi.DsGetDCInfoCtr01.count", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfoCtr01_array,
+ { "array", "drsuapi.DsGetDCInfoCtr01.array", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfoCtr_DRSUAPI_DC_INFO_CTR_1_ctr1,
+ { "ctr1", "drsuapi.DsGetDCInfoCtr.ctr1", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfoCtr_DRSUAPI_DC_INFO_CTR_2_ctr2,
+ { "ctr2", "drsuapi.DsGetDCInfoCtr.ctr2", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDCInfoCtr_DRSUAPI_DC_INFO_CTR_01_ctr01,
+ { "ctr01", "drsuapi.DsGetDCInfoCtr.ctr01", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDomainControllerInfo_bind_handle,
+ { "bind_handle", "drsuapi.DsGetDomainControllerInfo.bind_handle", FT_BYTES, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDomainControllerInfo_level,
+ { "level", "drsuapi.DsGetDomainControllerInfo.level", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDomainControllerInfo_req,
+ { "req", "drsuapi.DsGetDomainControllerInfo.req", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsGetDomainControllerInfo_ctr,
+ { "ctr", "drsuapi.DsGetDomainControllerInfo.ctr", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaGetInfoRequest1_info_type,
+ { "info_type", "drsuapi.DsReplicaGetInfoRequest1.info_type", FT_INT32, BASE_DEC,
+ VALS(drsuapi_DsReplicaInfoType_vals), 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaGetInfoRequest1_object_dn,
+ { "object_dn", "drsuapi.DsReplicaGetInfoRequest1.object_dn", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaGetInfoRequest1_guid1,
+ { "guid1", "drsuapi.DsReplicaGetInfoRequest1.guid1", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaGetInfoRequest2_info_type,
+ { "info_type", "drsuapi.DsReplicaGetInfoRequest2.info_type", FT_INT32, BASE_DEC,
+ VALS(drsuapi_DsReplicaInfoType_vals), 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaGetInfoRequest2_object_dn,
+ { "object_dn", "drsuapi.DsReplicaGetInfoRequest2.object_dn", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaGetInfoRequest2_guid1,
+ { "guid1", "drsuapi.DsReplicaGetInfoRequest2.guid1", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaGetInfoRequest2_unknown1,
+ { "unknown1", "drsuapi.DsReplicaGetInfoRequest2.unknown1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaGetInfoRequest2_string1,
+ { "string1", "drsuapi.DsReplicaGetInfoRequest2.string1", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaGetInfoRequest2_string2,
+ { "string2", "drsuapi.DsReplicaGetInfoRequest2.string2", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaGetInfoRequest2_unknown2,
+ { "unknown2", "drsuapi.DsReplicaGetInfoRequest2.unknown2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaGetInfoRequest_DRSUAPI_DS_REPLICA_GET_INFO_req1,
+ { "req1", "drsuapi.DsReplicaGetInfoRequest.req1", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaGetInfoRequest_DRSUAPI_DS_REPLICA_GET_INFO2_req2,
+ { "req2", "drsuapi.DsReplicaGetInfoRequest.req2", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaNeighbour_naming_context_dn,
+ { "naming_context_dn", "drsuapi.DsReplicaNeighbour.naming_context_dn", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaNeighbour_source_dsa_obj_dn,
+ { "source_dsa_obj_dn", "drsuapi.DsReplicaNeighbour.source_dsa_obj_dn", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaNeighbour_source_dsa_address,
+ { "source_dsa_address", "drsuapi.DsReplicaNeighbour.source_dsa_address", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaNeighbour_transport_obj_dn,
+ { "transport_obj_dn", "drsuapi.DsReplicaNeighbour.transport_obj_dn", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaNeighbour_replica_flags,
+ { "replica_flags", "drsuapi.DsReplicaNeighbour.replica_flags", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaNeighbour_reserved,
+ { "reserved", "drsuapi.DsReplicaNeighbour.reserved", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaNeighbour_naming_context_obj_guid,
+ { "naming_context_obj_guid", "drsuapi.DsReplicaNeighbour.naming_context_obj_guid", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaNeighbour_source_dsa_obj_guid,
+ { "source_dsa_obj_guid", "drsuapi.DsReplicaNeighbour.source_dsa_obj_guid", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaNeighbour_source_dsa_invocation_id,
+ { "source_dsa_invocation_id", "drsuapi.DsReplicaNeighbour.source_dsa_invocation_id", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaNeighbour_transport_obj_guid,
+ { "transport_obj_guid", "drsuapi.DsReplicaNeighbour.transport_obj_guid", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaNeighbour_tmp_highest_usn,
+ { "tmp_highest_usn", "drsuapi.DsReplicaNeighbour.tmp_highest_usn", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaNeighbour_highest_usn,
+ { "highest_usn", "drsuapi.DsReplicaNeighbour.highest_usn", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaNeighbour_last_success,
+ { "last_success", "drsuapi.DsReplicaNeighbour.last_success", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaNeighbour_last_attempt,
+ { "last_attempt", "drsuapi.DsReplicaNeighbour.last_attempt", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaNeighbour_result_last_attempt,
+ { "result_last_attempt", "drsuapi.DsReplicaNeighbour.result_last_attempt", FT_UINT32, BASE_DEC,
+ VALS(NT_errors), 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaNeighbour_consecutive_sync_failures,
+ { "consecutive_sync_failures", "drsuapi.DsReplicaNeighbour.consecutive_sync_failures", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaNeighbourCtr_count,
+ { "count", "drsuapi.DsReplicaNeighbourCtr.count", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaNeighbourCtr_reserved,
+ { "reserved", "drsuapi.DsReplicaNeighbourCtr.reserved", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaNeighbourCtr_array,
+ { "array", "drsuapi.DsReplicaNeighbourCtr.array", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursorCtr_count,
+ { "count", "drsuapi.DsReplicaCoursorCtr.count", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursorCtr_reserved,
+ { "reserved", "drsuapi.DsReplicaCoursorCtr.reserved", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursorCtr_array,
+ { "array", "drsuapi.DsReplicaCoursorCtr.array", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaObjMetaData_attribute_name,
+ { "attribute_name", "drsuapi.DsReplicaObjMetaData.attribute_name", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaObjMetaData_version,
+ { "version", "drsuapi.DsReplicaObjMetaData.version", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaObjMetaData_originating_last_changed,
+ { "originating_last_changed", "drsuapi.DsReplicaObjMetaData.originating_last_changed", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaObjMetaData_originating_dsa_invocation_id,
+ { "originating_dsa_invocation_id", "drsuapi.DsReplicaObjMetaData.originating_dsa_invocation_id", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaObjMetaData_originating_usn,
+ { "originating_usn", "drsuapi.DsReplicaObjMetaData.originating_usn", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaObjMetaData_local_usn,
+ { "local_usn", "drsuapi.DsReplicaObjMetaData.local_usn", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaObjMetaDataCtr_count,
+ { "count", "drsuapi.DsReplicaObjMetaDataCtr.count", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaObjMetaDataCtr_reserved,
+ { "reserved", "drsuapi.DsReplicaObjMetaDataCtr.reserved", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaObjMetaDataCtr_array,
+ { "array", "drsuapi.DsReplicaObjMetaDataCtr.array", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaKccDsaFailure_dsa_obj_dn,
+ { "dsa_obj_dn", "drsuapi.DsReplicaKccDsaFailure.dsa_obj_dn", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaKccDsaFailure_dsa_obj_guid,
+ { "dsa_obj_guid", "drsuapi.DsReplicaKccDsaFailure.dsa_obj_guid", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaKccDsaFailure_first_failure,
+ { "first_failure", "drsuapi.DsReplicaKccDsaFailure.first_failure", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaKccDsaFailure_num_failures,
+ { "num_failures", "drsuapi.DsReplicaKccDsaFailure.num_failures", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaKccDsaFailure_last_result,
+ { "last_result", "drsuapi.DsReplicaKccDsaFailure.last_result", FT_UINT32, BASE_DEC,
+ VALS(NT_errors), 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaKccDsaFailuresCtr_count,
+ { "count", "drsuapi.DsReplicaKccDsaFailuresCtr.count", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaKccDsaFailuresCtr_reserved,
+ { "reserved", "drsuapi.DsReplicaKccDsaFailuresCtr.reserved", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaKccDsaFailuresCtr_array,
+ { "array", "drsuapi.DsReplicaKccDsaFailuresCtr.array", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsRplicaOpOptions_DRSUAPI_DS_REPLICA_OP_TYPE_SYNC_sync,
+ { "sync", "drsuapi.DsRplicaOpOptions.sync", FT_UINT32, BASE_HEX,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsRplicaOpOptions_DRSUAPI_DS_REPLICA_OP_TYPE_ADD_add,
+ { "add", "drsuapi.DsRplicaOpOptions.add", FT_UINT32, BASE_HEX,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsRplicaOpOptions_DRSUAPI_DS_REPLICA_OP_TYPE_DELETE_delete,
+ { "delete", "drsuapi.DsRplicaOpOptions.delete", FT_UINT32, BASE_HEX,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsRplicaOpOptions_DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY_modify,
+ { "modify", "drsuapi.DsRplicaOpOptions.modify", FT_UINT32, BASE_HEX,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsRplicaOpOptions_DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS_update_refs,
+ { "update_refs", "drsuapi.DsRplicaOpOptions.update_refs", FT_UINT32, BASE_HEX,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsRplicaOpOptions_default_unknown,
+ { "unknown", "drsuapi.DsRplicaOpOptions.unknown", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaOp_operation_start,
+ { "operation_start", "drsuapi.DsReplicaOp.operation_start", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaOp_serial_num,
+ { "serial_num", "drsuapi.DsReplicaOp.serial_num", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaOp_priority,
+ { "priority", "drsuapi.DsReplicaOp.priority", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaOp_operation_type,
+ { "operation_type", "drsuapi.DsReplicaOp.operation_type", FT_INT16, BASE_DEC,
+ VALS(drsuapi_DsReplicaOpType_vals), 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaOp_options,
+ { "options", "drsuapi.DsReplicaOp.options", FT_UINT16, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaOp_nc_dn,
+ { "nc_dn", "drsuapi.DsReplicaOp.nc_dn", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaOp_remote_dsa_obj_dn,
+ { "remote_dsa_obj_dn", "drsuapi.DsReplicaOp.remote_dsa_obj_dn", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaOp_remote_dsa_address,
+ { "remote_dsa_address", "drsuapi.DsReplicaOp.remote_dsa_address", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaOp_nc_obj_guid,
+ { "nc_obj_guid", "drsuapi.DsReplicaOp.nc_obj_guid", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaOp_remote_dsa_obj_guid,
+ { "remote_dsa_obj_guid", "drsuapi.DsReplicaOp.remote_dsa_obj_guid", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaOpCtr_time,
+ { "time", "drsuapi.DsReplicaOpCtr.time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaOpCtr_count,
+ { "count", "drsuapi.DsReplicaOpCtr.count", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaOpCtr_array,
+ { "array", "drsuapi.DsReplicaOpCtr.array", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData_attribute_name,
+ { "attribute_name", "drsuapi.DsReplicaAttrValMetaData.attribute_name", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData_object_dn,
+ { "object_dn", "drsuapi.DsReplicaAttrValMetaData.object_dn", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData_value_length,
+ { "value_length", "drsuapi.DsReplicaAttrValMetaData.value_length", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData_value,
+ { "value", "drsuapi.DsReplicaAttrValMetaData.value", FT_UINT8, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData_deleted,
+ { "deleted", "drsuapi.DsReplicaAttrValMetaData.deleted", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData_created,
+ { "created", "drsuapi.DsReplicaAttrValMetaData.created", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData_version,
+ { "version", "drsuapi.DsReplicaAttrValMetaData.version", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData_originating_last_changed,
+ { "originating_last_changed", "drsuapi.DsReplicaAttrValMetaData.originating_last_changed", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData_originating_dsa_invocation_id,
+ { "originating_dsa_invocation_id", "drsuapi.DsReplicaAttrValMetaData.originating_dsa_invocation_id", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData_originating_usn,
+ { "originating_usn", "drsuapi.DsReplicaAttrValMetaData.originating_usn", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData_local_usn,
+ { "local_usn", "drsuapi.DsReplicaAttrValMetaData.local_usn", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaDataCtr_count,
+ { "count", "drsuapi.DsReplicaAttrValMetaDataCtr.count", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaDataCtr_enumeration_context,
+ { "enumeration_context", "drsuapi.DsReplicaAttrValMetaDataCtr.enumeration_context", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaDataCtr_array,
+ { "array", "drsuapi.DsReplicaAttrValMetaDataCtr.array", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursor2_source_dsa_invocation_id,
+ { "source_dsa_invocation_id", "drsuapi.DsReplicaCoursor2.source_dsa_invocation_id", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursor2_highest_usn,
+ { "highest_usn", "drsuapi.DsReplicaCoursor2.highest_usn", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursor2_last_sync_success,
+ { "last_sync_success", "drsuapi.DsReplicaCoursor2.last_sync_success", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursor2Ctr_count,
+ { "count", "drsuapi.DsReplicaCoursor2Ctr.count", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursor2Ctr_enumeration_context,
+ { "enumeration_context", "drsuapi.DsReplicaCoursor2Ctr.enumeration_context", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursor2Ctr_array,
+ { "array", "drsuapi.DsReplicaCoursor2Ctr.array", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursor3_source_dsa_invocation_id,
+ { "source_dsa_invocation_id", "drsuapi.DsReplicaCoursor3.source_dsa_invocation_id", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursor3_highest_usn,
+ { "highest_usn", "drsuapi.DsReplicaCoursor3.highest_usn", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursor3_last_sync_success,
+ { "last_sync_success", "drsuapi.DsReplicaCoursor3.last_sync_success", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursor3_source_dsa_obj_dn,
+ { "source_dsa_obj_dn", "drsuapi.DsReplicaCoursor3.source_dsa_obj_dn", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursor3Ctr_count,
+ { "count", "drsuapi.DsReplicaCoursor3Ctr.count", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursor3Ctr_enumeration_context,
+ { "enumeration_context", "drsuapi.DsReplicaCoursor3Ctr.enumeration_context", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaCoursor3Ctr_array,
+ { "array", "drsuapi.DsReplicaCoursor3Ctr.array", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaObjMetaData2_attribute_name,
+ { "attribute_name", "drsuapi.DsReplicaObjMetaData2.attribute_name", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaObjMetaData2_version,
+ { "version", "drsuapi.DsReplicaObjMetaData2.version", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaObjMetaData2_originating_last_changed,
+ { "originating_last_changed", "drsuapi.DsReplicaObjMetaData2.originating_last_changed", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaObjMetaData2_originating_dsa_invocation_id,
+ { "originating_dsa_invocation_id", "drsuapi.DsReplicaObjMetaData2.originating_dsa_invocation_id", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaObjMetaData2_originating_usn,
+ { "originating_usn", "drsuapi.DsReplicaObjMetaData2.originating_usn", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaObjMetaData2_local_usn,
+ { "local_usn", "drsuapi.DsReplicaObjMetaData2.local_usn", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaObjMetaData2_originating_dsa_obj_dn,
+ { "originating_dsa_obj_dn", "drsuapi.DsReplicaObjMetaData2.originating_dsa_obj_dn", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaObjMetaData2Ctr_count,
+ { "count", "drsuapi.DsReplicaObjMetaData2Ctr.count", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaObjMetaData2Ctr_enumeration_context,
+ { "enumeration_context", "drsuapi.DsReplicaObjMetaData2Ctr.enumeration_context", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaObjMetaData2Ctr_array,
+ { "array", "drsuapi.DsReplicaObjMetaData2Ctr.array", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData2_attribute_name,
+ { "attribute_name", "drsuapi.DsReplicaAttrValMetaData2.attribute_name", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData2_object_dn,
+ { "object_dn", "drsuapi.DsReplicaAttrValMetaData2.object_dn", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData2_value_length,
+ { "value_length", "drsuapi.DsReplicaAttrValMetaData2.value_length", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData2_value,
+ { "value", "drsuapi.DsReplicaAttrValMetaData2.value", FT_UINT8, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData2_deleted,
+ { "deleted", "drsuapi.DsReplicaAttrValMetaData2.deleted", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData2_created,
+ { "created", "drsuapi.DsReplicaAttrValMetaData2.created", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData2_version,
+ { "version", "drsuapi.DsReplicaAttrValMetaData2.version", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData2_originating_last_changed,
+ { "originating_last_changed", "drsuapi.DsReplicaAttrValMetaData2.originating_last_changed", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData2_originating_dsa_invocation_id,
+ { "originating_dsa_invocation_id", "drsuapi.DsReplicaAttrValMetaData2.originating_dsa_invocation_id", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData2_originating_usn,
+ { "originating_usn", "drsuapi.DsReplicaAttrValMetaData2.originating_usn", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData2_local_usn,
+ { "local_usn", "drsuapi.DsReplicaAttrValMetaData2.local_usn", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData2_originating_dsa_obj_dn,
+ { "originating_dsa_obj_dn", "drsuapi.DsReplicaAttrValMetaData2.originating_dsa_obj_dn", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData2Ctr_count,
+ { "count", "drsuapi.DsReplicaAttrValMetaData2Ctr.count", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData2Ctr_enumeration_context,
+ { "enumeration_context", "drsuapi.DsReplicaAttrValMetaData2Ctr.enumeration_context", FT_INT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaAttrValMetaData2Ctr_array,
+ { "array", "drsuapi.DsReplicaAttrValMetaData2Ctr.array", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaConnection04_u1,
+ { "u1", "drsuapi.DsReplicaConnection04.u1", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaConnection04_u2,
+ { "u2", "drsuapi.DsReplicaConnection04.u2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaConnection04_u3,
+ { "u3", "drsuapi.DsReplicaConnection04.u3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaConnection04_bind_guid,
+ { "bind_guid", "drsuapi.DsReplicaConnection04.bind_guid", FT_GUID, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaConnection04_bind_time,
+ { "bind_time", "drsuapi.DsReplicaConnection04.bind_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaConnection04_u4,
+ { "u4", "drsuapi.DsReplicaConnection04.u4", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaConnection04_u5,
+ { "u5", "drsuapi.DsReplicaConnection04.u5", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaConnection04Ctr_count,
+ { "count", "drsuapi.DsReplicaConnection04Ctr.count", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaConnection04Ctr_reserved,
+ { "reserved", "drsuapi.DsReplicaConnection04Ctr.reserved", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaConnection04Ctr_array,
+ { "array", "drsuapi.DsReplicaConnection04Ctr.array", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplica06_str1,
+ { "str1", "drsuapi.DsReplica06.str1", FT_STRING, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplica06_u1,
+ { "u1", "drsuapi.DsReplica06.u1", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplica06_u2,
+ { "u2", "drsuapi.DsReplica06.u2", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplica06_u3,
+ { "u3", "drsuapi.DsReplica06.u3", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplica06_u4,
+ { "u4", "drsuapi.DsReplica06.u4", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplica06_u5,
+ { "u5", "drsuapi.DsReplica06.u5", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplica06_u6,
+ { "u6", "drsuapi.DsReplica06.u6", FT_UINT64, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplica06_u7,
+ { "u7", "drsuapi.DsReplica06.u7", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplica06Ctr_count,
+ { "count", "drsuapi.DsReplica06Ctr.count", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplica06Ctr_reserved,
+ { "reserved", "drsuapi.DsReplica06Ctr.reserved", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplica06Ctr_array,
+ { "array", "drsuapi.DsReplica06Ctr.array", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_NEIGHBORS_neighbours,
+ { "neighbours", "drsuapi.DsReplicaInfo.neighbours", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_CURSORS_coursors,
+ { "coursors", "drsuapi.DsReplicaInfo.coursors", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA_objmetadata,
+ { "objmetadata", "drsuapi.DsReplicaInfo.objmetadata", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES_connectfailures,
+ { "connectfailures", "drsuapi.DsReplicaInfo.connectfailures", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES_linkfailures,
+ { "linkfailures", "drsuapi.DsReplicaInfo.linkfailures", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_PENDING_OPS_pendingops,
+ { "pendingops", "drsuapi.DsReplicaInfo.pendingops", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA_attrvalmetadata,
+ { "attrvalmetadata", "drsuapi.DsReplicaInfo.attrvalmetadata", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_CURSORS2_coursors2,
+ { "coursors2", "drsuapi.DsReplicaInfo.coursors2", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_CURSORS3_coursors3,
+ { "coursors3", "drsuapi.DsReplicaInfo.coursors3", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2_objmetadata2,
+ { "objmetadata2", "drsuapi.DsReplicaInfo.objmetadata2", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2_attrvalmetadata2,
+ { "attrvalmetadata2", "drsuapi.DsReplicaInfo.attrvalmetadata2", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02_neighbours02,
+ { "neighbours02", "drsuapi.DsReplicaInfo.neighbours02", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04_connections04,
+ { "connections04", "drsuapi.DsReplicaInfo.connections04", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_CURSURS05_coursors05,
+ { "coursors05", "drsuapi.DsReplicaInfo.coursors05", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaInfo_DRSUAPI_DS_REPLICA_INFO_06_i06,
+ { "i06", "drsuapi.DsReplicaInfo.i06", FT_NONE, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaGetInfo_bind_handle,
+ { "bind_handle", "drsuapi.DsReplicaGetInfo.bind_handle", FT_BYTES, BASE_NONE,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaGetInfo_level,
+ { "level", "drsuapi.DsReplicaGetInfo.level", FT_INT32, BASE_DEC,
+ VALS(drsuapi_DsReplicaGetInfoLevel_vals), 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaGetInfo_req,
+ { "req", "drsuapi.DsReplicaGetInfo.req", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaGetInfo_info_type,
+ { "info_type", "drsuapi.DsReplicaGetInfo.info_type", FT_INT32, BASE_DEC,
+ VALS(drsuapi_DsReplicaInfoType_vals), 0,
+ NULL, HFILL }},
+
+ { &hf_drsuapi_DsReplicaGetInfo_info,
+ { "info", "drsuapi.DsReplicaGetInfo.info", FT_UINT32, BASE_DEC,
+ NULL, 0,
+ NULL, HFILL }},
/* END OF INCLUDED FILE : ETH_HFARR */
@@ -10161,90 +10150,90 @@ proto_register_drsuapi(void)
/* INCLUDED FILE : ETH_ETTARR */
- &ett_drsuapi,
- &ett_drsuapi_SupportedExtensions,
- &ett_drsuapi_DsBindInfo24,
- &ett_drsuapi_DsBindInfo28,
- &ett_drsuapi_DsBindInfo,
- &ett_drsuapi_DsBindInfoCtr,
- &ett_drsuapi_DsReplicaSyncRequest1Info,
- &ett_drsuapi_DsReplicaSyncOptions,
- &ett_drsuapi_DsReplicaSyncRequest1,
- &ett_drsuapi_DsReplicaSyncRequest,
- &ett_drsuapi_DsGetNCChangesUsnTriple,
- &ett_drsuapi_DsReplicaCoursor,
- &ett_drsuapi_DsReplicaCoursor05Ctr,
- &ett_drsuapi_DsGetNCChangesRequest5,
- &ett_drsuapi_DsGetNCChangesRequest_Ctr14,
- &ett_drsuapi_DsGetNCChangesRequest_Ctr13,
- &ett_drsuapi_DsGetNCChangesRequest_Ctr12,
- &ett_drsuapi_DsGetNCChangesRequest8,
- &ett_drsuapi_DsGetNCChangesRequest,
- &ett_drsuapi_DsReplicaCoursorEx,
- &ett_drsuapi_DsReplicaCoursorEx05Ctr,
- &ett_drsuapi_DsGetNCChangesCtr6,
- &ett_drsuapi_DsGetNCChangesCtr7,
- &ett_drsuapi_DsGetNCChangesCtr,
- &ett_drsuapi_DsReplicaUpdateRefsOptions,
- &ett_drsuapi_DsReplicaUpdateRefsRequest1,
- &ett_drsuapi_DsReplicaUpdateRefsRequest,
- &ett_drsuapi_DsReplicaAddOptions,
- &ett_drsuapi_DsReplicaDeleteOptions,
- &ett_drsuapi_DsReplicaModifyOptions,
- &ett_drsuapi_DsNameString,
- &ett_drsuapi_DsNameRequest1,
- &ett_drsuapi_DsNameRequest,
- &ett_drsuapi_DsNameInfo1,
- &ett_drsuapi_DsNameCtr1,
- &ett_drsuapi_DsNameCtr,
- &ett_drsuapi_DsWriteAccountSpnRequest1,
- &ett_drsuapi_DsWriteAccountSpnRequest,
- &ett_drsuapi_DsWriteAccountSpnResult1,
- &ett_drsuapi_DsWriteAccountSpnResult,
- &ett_drsuapi_DsGetDCInfoRequest1,
- &ett_drsuapi_DsGetDCInfoRequest,
- &ett_drsuapi_DsGetDCInfo1,
- &ett_drsuapi_DsGetDCInfoCtr1,
- &ett_drsuapi_DsGetDCInfo2,
- &ett_drsuapi_DsGetDCInfoCtr2,
- &ett_drsuapi_DsGetDCInfo01,
- &ett_drsuapi_DsGetDCInfoCtr01,
- &ett_drsuapi_DsGetDCInfoCtr,
- &ett_drsuapi_DsReplicaGetInfoRequest1,
- &ett_drsuapi_DsReplicaGetInfoRequest2,
- &ett_drsuapi_DsReplicaGetInfoRequest,
- &ett_drsuapi_DsReplicaNeighbour,
- &ett_drsuapi_DsReplicaNeighbourCtr,
- &ett_drsuapi_DsReplicaCoursorCtr,
- &ett_drsuapi_DsReplicaObjMetaData,
- &ett_drsuapi_DsReplicaObjMetaDataCtr,
- &ett_drsuapi_DsReplicaKccDsaFailure,
- &ett_drsuapi_DsReplicaKccDsaFailuresCtr,
- &ett_drsuapi_DsRplicaOpOptions,
- &ett_drsuapi_DsReplicaOp,
- &ett_drsuapi_DsReplicaOpCtr,
- &ett_drsuapi_DsReplicaAttrValMetaData,
- &ett_drsuapi_DsReplicaAttrValMetaDataCtr,
- &ett_drsuapi_DsReplicaCoursor2,
- &ett_drsuapi_DsReplicaCoursor2Ctr,
- &ett_drsuapi_DsReplicaCoursor3,
- &ett_drsuapi_DsReplicaCoursor3Ctr,
- &ett_drsuapi_DsReplicaObjMetaData2,
- &ett_drsuapi_DsReplicaObjMetaData2Ctr,
- &ett_drsuapi_DsReplicaAttrValMetaData2,
- &ett_drsuapi_DsReplicaAttrValMetaData2Ctr,
- &ett_drsuapi_DsReplicaConnection04,
- &ett_drsuapi_DsReplicaConnection04Ctr,
- &ett_drsuapi_DsReplica06,
- &ett_drsuapi_DsReplica06Ctr,
- &ett_drsuapi_DsReplicaInfo,
+ &ett_drsuapi,
+ &ett_drsuapi_SupportedExtensions,
+ &ett_drsuapi_DsBindInfo24,
+ &ett_drsuapi_DsBindInfo28,
+ &ett_drsuapi_DsBindInfo,
+ &ett_drsuapi_DsBindInfoCtr,
+ &ett_drsuapi_DsReplicaSyncRequest1Info,
+ &ett_drsuapi_DsReplicaSyncOptions,
+ &ett_drsuapi_DsReplicaSyncRequest1,
+ &ett_drsuapi_DsReplicaSyncRequest,
+ &ett_drsuapi_DsGetNCChangesUsnTriple,
+ &ett_drsuapi_DsReplicaCoursor,
+ &ett_drsuapi_DsReplicaCoursor05Ctr,
+ &ett_drsuapi_DsGetNCChangesRequest5,
+ &ett_drsuapi_DsGetNCChangesRequest_Ctr14,
+ &ett_drsuapi_DsGetNCChangesRequest_Ctr13,
+ &ett_drsuapi_DsGetNCChangesRequest_Ctr12,
+ &ett_drsuapi_DsGetNCChangesRequest8,
+ &ett_drsuapi_DsGetNCChangesRequest,
+ &ett_drsuapi_DsReplicaCoursorEx,
+ &ett_drsuapi_DsReplicaCoursorEx05Ctr,
+ &ett_drsuapi_DsGetNCChangesCtr6,
+ &ett_drsuapi_DsGetNCChangesCtr7,
+ &ett_drsuapi_DsGetNCChangesCtr,
+ &ett_drsuapi_DsReplicaUpdateRefsOptions,
+ &ett_drsuapi_DsReplicaUpdateRefsRequest1,
+ &ett_drsuapi_DsReplicaUpdateRefsRequest,
+ &ett_drsuapi_DsReplicaAddOptions,
+ &ett_drsuapi_DsReplicaDeleteOptions,
+ &ett_drsuapi_DsReplicaModifyOptions,
+ &ett_drsuapi_DsNameString,
+ &ett_drsuapi_DsNameRequest1,
+ &ett_drsuapi_DsNameRequest,
+ &ett_drsuapi_DsNameInfo1,
+ &ett_drsuapi_DsNameCtr1,
+ &ett_drsuapi_DsNameCtr,
+ &ett_drsuapi_DsWriteAccountSpnRequest1,
+ &ett_drsuapi_DsWriteAccountSpnRequest,
+ &ett_drsuapi_DsWriteAccountSpnResult1,
+ &ett_drsuapi_DsWriteAccountSpnResult,
+ &ett_drsuapi_DsGetDCInfoRequest1,
+ &ett_drsuapi_DsGetDCInfoRequest,
+ &ett_drsuapi_DsGetDCInfo1,
+ &ett_drsuapi_DsGetDCInfoCtr1,
+ &ett_drsuapi_DsGetDCInfo2,
+ &ett_drsuapi_DsGetDCInfoCtr2,
+ &ett_drsuapi_DsGetDCInfo01,
+ &ett_drsuapi_DsGetDCInfoCtr01,
+ &ett_drsuapi_DsGetDCInfoCtr,
+ &ett_drsuapi_DsReplicaGetInfoRequest1,
+ &ett_drsuapi_DsReplicaGetInfoRequest2,
+ &ett_drsuapi_DsReplicaGetInfoRequest,
+ &ett_drsuapi_DsReplicaNeighbour,
+ &ett_drsuapi_DsReplicaNeighbourCtr,
+ &ett_drsuapi_DsReplicaCoursorCtr,
+ &ett_drsuapi_DsReplicaObjMetaData,
+ &ett_drsuapi_DsReplicaObjMetaDataCtr,
+ &ett_drsuapi_DsReplicaKccDsaFailure,
+ &ett_drsuapi_DsReplicaKccDsaFailuresCtr,
+ &ett_drsuapi_DsRplicaOpOptions,
+ &ett_drsuapi_DsReplicaOp,
+ &ett_drsuapi_DsReplicaOpCtr,
+ &ett_drsuapi_DsReplicaAttrValMetaData,
+ &ett_drsuapi_DsReplicaAttrValMetaDataCtr,
+ &ett_drsuapi_DsReplicaCoursor2,
+ &ett_drsuapi_DsReplicaCoursor2Ctr,
+ &ett_drsuapi_DsReplicaCoursor3,
+ &ett_drsuapi_DsReplicaCoursor3Ctr,
+ &ett_drsuapi_DsReplicaObjMetaData2,
+ &ett_drsuapi_DsReplicaObjMetaData2Ctr,
+ &ett_drsuapi_DsReplicaAttrValMetaData2,
+ &ett_drsuapi_DsReplicaAttrValMetaData2Ctr,
+ &ett_drsuapi_DsReplicaConnection04,
+ &ett_drsuapi_DsReplicaConnection04Ctr,
+ &ett_drsuapi_DsReplica06,
+ &ett_drsuapi_DsReplica06Ctr,
+ &ett_drsuapi_DsReplicaInfo,
/* END OF INCLUDED FILE : ETH_ETTARR */
};
proto_drsuapi = proto_register_protocol(
- "DRSUAPI",
+ "DRSUAPI",
"DRSUAPI", "drsuapi");
proto_register_field_array(proto_drsuapi, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
@@ -10254,81 +10243,81 @@ static dcerpc_sub_dissector function_dissectors[] = {
/* INCLUDED FILE : ETH_FT */
- { 0, "DsBind",
- drsuapi_dissect_DsBind_request,
- drsuapi_dissect_DsBind_response },
- { 1, "DsUnbind",
- drsuapi_dissect_DsUnbind_request,
- drsuapi_dissect_DsUnbind_response },
- { 2, "DsReplicaSync",
- drsuapi_dissect_DsReplicaSync_request,
- drsuapi_dissect_DsReplicaSync_response },
- { 3, "DsGetNCChanges",
- drsuapi_dissect_DsGetNCChanges_request,
- drsuapi_dissect_DsGetNCChanges_response },
- { 4, "DsReplicaUpdateRefs",
- drsuapi_dissect_DsReplicaUpdateRefs_request,
- drsuapi_dissect_DsReplicaUpdateRefs_response },
- { 5, "DRSUAPI_REPLICA_ADD",
- drsuapi_dissect_DRSUAPI_REPLICA_ADD_request,
- drsuapi_dissect_DRSUAPI_REPLICA_ADD_response },
- { 6, "DRSUAPI_REPLICA_DEL",
- drsuapi_dissect_DRSUAPI_REPLICA_DEL_request,
- drsuapi_dissect_DRSUAPI_REPLICA_DEL_response },
- { 7, "DRSUAPI_REPLICA_MODIFY",
- drsuapi_dissect_DRSUAPI_REPLICA_MODIFY_request,
- drsuapi_dissect_DRSUAPI_REPLICA_MODIFY_response },
- { 8, "DRSUAPI_VERIFY_NAMES",
- drsuapi_dissect_DRSUAPI_VERIFY_NAMES_request,
- drsuapi_dissect_DRSUAPI_VERIFY_NAMES_response },
- { 9, "DRSUAPI_GET_MEMBERSHIPS",
- drsuapi_dissect_DRSUAPI_GET_MEMBERSHIPS_request,
- drsuapi_dissect_DRSUAPI_GET_MEMBERSHIPS_response },
- { 10, "DRSUAPI_INTER_DOMAIN_MOVE",
- drsuapi_dissect_DRSUAPI_INTER_DOMAIN_MOVE_request,
- drsuapi_dissect_DRSUAPI_INTER_DOMAIN_MOVE_response },
- { 11, "DRSUAPI_GET_NT4_CHANGELOG",
- drsuapi_dissect_DRSUAPI_GET_NT4_CHANGELOG_request,
- drsuapi_dissect_DRSUAPI_GET_NT4_CHANGELOG_response },
- { 12, "DsCrackNames",
- drsuapi_dissect_DsCrackNames_request,
- drsuapi_dissect_DsCrackNames_response },
- { 13, "DsWriteAccountSpn",
- drsuapi_dissect_DsWriteAccountSpn_request,
- drsuapi_dissect_DsWriteAccountSpn_response },
- { 14, "DRSUAPI_REMOVE_DS_SERVER",
- drsuapi_dissect_DRSUAPI_REMOVE_DS_SERVER_request,
- drsuapi_dissect_DRSUAPI_REMOVE_DS_SERVER_response },
- { 15, "DRSUAPI_REMOVE_DS_DOMAIN",
- drsuapi_dissect_DRSUAPI_REMOVE_DS_DOMAIN_request,
- drsuapi_dissect_DRSUAPI_REMOVE_DS_DOMAIN_response },
- { 16, "DsGetDomainControllerInfo",
- drsuapi_dissect_DsGetDomainControllerInfo_request,
- drsuapi_dissect_DsGetDomainControllerInfo_response },
- { 17, "DsAddEntry",
- drsuapi_dissect_DsAddEntry_request,
- drsuapi_dissect_DsAddEntry_response },
- { 18, "DRSUAPI_EXECUTE_KCC",
- drsuapi_dissect_DRSUAPI_EXECUTE_KCC_request,
- drsuapi_dissect_DRSUAPI_EXECUTE_KCC_response },
- { 19, "DsReplicaGetInfo",
- drsuapi_dissect_DsReplicaGetInfo_request,
- drsuapi_dissect_DsReplicaGetInfo_response },
- { 20, "DRSUAPI_ADD_SID_HISTORY",
- drsuapi_dissect_DRSUAPI_ADD_SID_HISTORY_request,
- drsuapi_dissect_DRSUAPI_ADD_SID_HISTORY_response },
- { 21, "DRSUAPI_GET_MEMBERSHIPS2",
- drsuapi_dissect_DRSUAPI_GET_MEMBERSHIPS2_request,
- drsuapi_dissect_DRSUAPI_GET_MEMBERSHIPS2_response },
- { 22, "DRSUAPI_REPLICA_VERIFY_OBJECTS",
- drsuapi_dissect_DRSUAPI_REPLICA_VERIFY_OBJECTS_request,
- drsuapi_dissect_DRSUAPI_REPLICA_VERIFY_OBJECTS_response },
- { 23, "DRSUAPI_GET_OBJECT_EXISTENCE",
- drsuapi_dissect_DRSUAPI_GET_OBJECT_EXISTENCE_request,
- drsuapi_dissect_DRSUAPI_GET_OBJECT_EXISTENCE_response },
- { 24, "DRSUAPI_QUERY_SITES_BY_COST",
- drsuapi_dissect_DRSUAPI_QUERY_SITES_BY_COST_request,
- drsuapi_dissect_DRSUAPI_QUERY_SITES_BY_COST_response },
+ { 0, "DsBind",
+ drsuapi_dissect_DsBind_request,
+ drsuapi_dissect_DsBind_response },
+ { 1, "DsUnbind",
+ drsuapi_dissect_DsUnbind_request,
+ drsuapi_dissect_DsUnbind_response },
+ { 2, "DsReplicaSync",
+ drsuapi_dissect_DsReplicaSync_request,
+ drsuapi_dissect_DsReplicaSync_response },
+ { 3, "DsGetNCChanges",
+ drsuapi_dissect_DsGetNCChanges_request,
+ drsuapi_dissect_DsGetNCChanges_response },
+ { 4, "DsReplicaUpdateRefs",
+ drsuapi_dissect_DsReplicaUpdateRefs_request,
+ drsuapi_dissect_DsReplicaUpdateRefs_response },
+ { 5, "DRSUAPI_REPLICA_ADD",
+ drsuapi_dissect_DRSUAPI_REPLICA_ADD_request,
+ drsuapi_dissect_DRSUAPI_REPLICA_ADD_response },
+ { 6, "DRSUAPI_REPLICA_DEL",
+ drsuapi_dissect_DRSUAPI_REPLICA_DEL_request,
+ drsuapi_dissect_DRSUAPI_REPLICA_DEL_response },
+ { 7, "DRSUAPI_REPLICA_MODIFY",
+ drsuapi_dissect_DRSUAPI_REPLICA_MODIFY_request,
+ drsuapi_dissect_DRSUAPI_REPLICA_MODIFY_response },
+ { 8, "DRSUAPI_VERIFY_NAMES",
+ drsuapi_dissect_DRSUAPI_VERIFY_NAMES_request,
+ drsuapi_dissect_DRSUAPI_VERIFY_NAMES_response },
+ { 9, "DRSUAPI_GET_MEMBERSHIPS",
+ drsuapi_dissect_DRSUAPI_GET_MEMBERSHIPS_request,
+ drsuapi_dissect_DRSUAPI_GET_MEMBERSHIPS_response },
+ { 10, "DRSUAPI_INTER_DOMAIN_MOVE",
+ drsuapi_dissect_DRSUAPI_INTER_DOMAIN_MOVE_request,
+ drsuapi_dissect_DRSUAPI_INTER_DOMAIN_MOVE_response },
+ { 11, "DRSUAPI_GET_NT4_CHANGELOG",
+ drsuapi_dissect_DRSUAPI_GET_NT4_CHANGELOG_request,
+ drsuapi_dissect_DRSUAPI_GET_NT4_CHANGELOG_response },
+ { 12, "DsCrackNames",
+ drsuapi_dissect_DsCrackNames_request,
+ drsuapi_dissect_DsCrackNames_response },
+ { 13, "DsWriteAccountSpn",
+ drsuapi_dissect_DsWriteAccountSpn_request,
+ drsuapi_dissect_DsWriteAccountSpn_response },
+ { 14, "DRSUAPI_REMOVE_DS_SERVER",
+ drsuapi_dissect_DRSUAPI_REMOVE_DS_SERVER_request,
+ drsuapi_dissect_DRSUAPI_REMOVE_DS_SERVER_response },
+ { 15, "DRSUAPI_REMOVE_DS_DOMAIN",
+ drsuapi_dissect_DRSUAPI_REMOVE_DS_DOMAIN_request,
+ drsuapi_dissect_DRSUAPI_REMOVE_DS_DOMAIN_response },
+ { 16, "DsGetDomainControllerInfo",
+ drsuapi_dissect_DsGetDomainControllerInfo_request,
+ drsuapi_dissect_DsGetDomainControllerInfo_response },
+ { 17, "DsAddEntry",
+ drsuapi_dissect_DsAddEntry_request,
+ drsuapi_dissect_DsAddEntry_response },
+ { 18, "DRSUAPI_EXECUTE_KCC",
+ drsuapi_dissect_DRSUAPI_EXECUTE_KCC_request,
+ drsuapi_dissect_DRSUAPI_EXECUTE_KCC_response },
+ { 19, "DsReplicaGetInfo",
+ drsuapi_dissect_DsReplicaGetInfo_request,
+ drsuapi_dissect_DsReplicaGetInfo_response },
+ { 20, "DRSUAPI_ADD_SID_HISTORY",
+ drsuapi_dissect_DRSUAPI_ADD_SID_HISTORY_request,
+ drsuapi_dissect_DRSUAPI_ADD_SID_HISTORY_response },
+ { 21, "DRSUAPI_GET_MEMBERSHIPS2",
+ drsuapi_dissect_DRSUAPI_GET_MEMBERSHIPS2_request,
+ drsuapi_dissect_DRSUAPI_GET_MEMBERSHIPS2_response },
+ { 22, "DRSUAPI_REPLICA_VERIFY_OBJECTS",
+ drsuapi_dissect_DRSUAPI_REPLICA_VERIFY_OBJECTS_request,
+ drsuapi_dissect_DRSUAPI_REPLICA_VERIFY_OBJECTS_response },
+ { 23, "DRSUAPI_GET_OBJECT_EXISTENCE",
+ drsuapi_dissect_DRSUAPI_GET_OBJECT_EXISTENCE_request,
+ drsuapi_dissect_DRSUAPI_GET_OBJECT_EXISTENCE_response },
+ { 24, "DRSUAPI_QUERY_SITES_BY_COST",
+ drsuapi_dissect_DRSUAPI_QUERY_SITES_BY_COST_request,
+ drsuapi_dissect_DRSUAPI_QUERY_SITES_BY_COST_response },
/* END OF INCLUDED FILE : ETH_FT */
@@ -10341,9 +10330,9 @@ proto_reg_handoff_drsuapi(void)
/* INCLUDED FILE : ETH_HANDOFF */
- dcerpc_init_uuid(proto_drsuapi, ett_drsuapi,
- &uuid_dcerpc_drsuapi, ver_drsuapi,
- function_dissectors, hf_drsuapi_opnum);
+ dcerpc_init_uuid(proto_drsuapi, ett_drsuapi,
+ &uuid_dcerpc_drsuapi, ver_drsuapi,
+ function_dissectors, hf_drsuapi_opnum);
/* END OF INCLUDED FILE : ETH_HANDOFF */
diff --git a/epan/dissectors/packet-dcerpc-drsuapi.h b/epan/dissectors/packet-dcerpc-drsuapi.h
index 31cffbb2a3..c3cea83e6f 100644
--- a/epan/dissectors/packet-dcerpc-drsuapi.h
+++ b/epan/dissectors/packet-dcerpc-drsuapi.h
@@ -70,10 +70,10 @@ extern const value_string drsuapi_DsNameStatus_vals[];
int drsuapi_dissect_DsNameStatus(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep, int hf_index, guint32 param);
#define DRSUAPI_DS_NAME_FLAG_NO_FLAGS 0
-#define DRSUAPI_DS_NAME_FLAG_SYNTACTICAL_ONLY 0
-#define DRSUAPI_DS_NAME_FLAG_EVAL_AT_DC 0
-#define DRSUAPI_DS_NAME_FLAG_GCVERIFY 0
-#define DRSUAPI_DS_NAME_FLAG_TRUST_REFERRAL 0
+#define DRSUAPI_DS_NAME_FLAG_SYNTACTICAL_ONLY 1
+#define DRSUAPI_DS_NAME_FLAG_EVAL_AT_DC 2
+#define DRSUAPI_DS_NAME_FLAG_GCVERIFY 4
+#define DRSUAPI_DS_NAME_FLAG_TRUST_REFERRAL 8
extern const value_string drsuapi_DsNameFlags_vals[];
int drsuapi_dissect_DsNameFlags(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep, int hf_index, guint32 param);
diff --git a/epan/dissectors/packet-dcerpc-dtsprovider.c b/epan/dissectors/packet-dcerpc-dtsprovider.c
index 982227a5e1..b5bcc945cc 100644
--- a/epan/dissectors/packet-dcerpc-dtsprovider.c
+++ b/epan/dissectors/packet-dcerpc-dtsprovider.c
@@ -30,10 +30,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-dtsstime_req.c b/epan/dissectors/packet-dcerpc-dtsstime_req.c
index b4a524e03b..68894171b2 100644
--- a/epan/dissectors/packet-dcerpc-dtsstime_req.c
+++ b/epan/dissectors/packet-dcerpc-dtsstime_req.c
@@ -1,9 +1,9 @@
/* packet-dcerpc-dtsstime_req.c
- * Routines for Time services stuff.
+ * Routines for Time services stuff.
* Copyright 2002, Jaime Fournier <Jaime.Fournier@hush.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/time.tar.gz time/service/dtsstime_req.idl
- *
+ *
* $Id$
*
* Wireshark - Network traffic analyzer
@@ -30,10 +30,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-fileexp.c b/epan/dissectors/packet-dcerpc-fileexp.c
index 1afe740ce6..b86cacbf32 100644
--- a/epan/dissectors/packet-dcerpc-fileexp.c
+++ b/epan/dissectors/packet-dcerpc-fileexp.c
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-fldb.c b/epan/dissectors/packet-dcerpc-fldb.c
index 248c2cf078..0aaa2a03b0 100644
--- a/epan/dissectors/packet-dcerpc-fldb.c
+++ b/epan/dissectors/packet-dcerpc-fldb.c
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-frsrpc.c b/epan/dissectors/packet-dcerpc-frsrpc.c
index 5d7ca529ad..57a61a0e27 100644
--- a/epan/dissectors/packet-dcerpc-frsrpc.c
+++ b/epan/dissectors/packet-dcerpc-frsrpc.c
@@ -661,7 +661,7 @@ frsrpc_dissect_element_CommPktChangeOrderCommand_file_name(tvbuff_t *tvb _U_, in
int
frsrpc_dissect_struct_CommPktChunk(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
{
- guint1632 type;
+ guint1632 type = 0;
int i = 0;
const char *s = NULL;
proto_item *item = NULL;
diff --git a/epan/dissectors/packet-dcerpc-ftserver.c b/epan/dissectors/packet-dcerpc-ftserver.c
index ea9bf8ef4a..1cfeb09959 100644
--- a/epan/dissectors/packet-dcerpc-ftserver.c
+++ b/epan/dissectors/packet-dcerpc-ftserver.c
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-icl_rpc.c b/epan/dissectors/packet-dcerpc-icl_rpc.c
index e9c1861e07..063306903d 100644
--- a/epan/dissectors/packet-dcerpc-icl_rpc.c
+++ b/epan/dissectors/packet-dcerpc-icl_rpc.c
@@ -5,7 +5,7 @@
* ftp://ftp.opengroup.org/pub/dce122/dce/src/file.tar.gz icl_rpc.idl
*
* $Id$
- *
+ *
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
@@ -30,10 +30,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-krb5rpc.c b/epan/dissectors/packet-dcerpc-krb5rpc.c
index b1940a6bd6..4e4277d127 100644
--- a/epan/dissectors/packet-dcerpc-krb5rpc.c
+++ b/epan/dissectors/packet-dcerpc-krb5rpc.c
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include <epan/asn1.h>
diff --git a/epan/dissectors/packet-dcerpc-llb.c b/epan/dissectors/packet-dcerpc-llb.c
index 5c439cf0bd..de059246f6 100644
--- a/epan/dissectors/packet-dcerpc-llb.c
+++ b/epan/dissectors/packet-dcerpc-llb.c
@@ -4,7 +4,7 @@
* Copyright 2004, Jaime Fournier <jaime.fournier@hush.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/admin.tar.gz ./admin/dced/idl/llb.idl
- *
+ *
* $Id$
*
* Wireshark - Network traffic analyzer
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-ndr.c b/epan/dissectors/packet-dcerpc-ndr.c
index 44867f08a5..16996e469f 100644
--- a/epan/dissectors/packet-dcerpc-ndr.c
+++ b/epan/dissectors/packet-dcerpc-ndr.c
@@ -27,9 +27,8 @@
#include "config.h"
#endif
-#include <ctype.h>
-
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/emem.h>
#include "packet-dcerpc.h"
@@ -42,60 +41,60 @@
*/
int
-dissect_ndr_uint8 (tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep,
- int hfindex, guint8 *pdata)
+dissect_ndr_uint8(tvbuff_t *tvb, gint offset, packet_info *pinfo,
+ proto_tree *tree, guint8 *drep,
+ int hfindex, guint8 *pdata)
{
dcerpc_info *di;
- di=pinfo->private_data;
- if(di->conformant_run){
- /* just a run to handle conformant arrays, no scalars to dissect */
- return offset;
+ di = pinfo->private_data;
+ if (di->conformant_run) {
+ /* just a run to handle conformant arrays, no scalars to dissect */
+ return offset;
}
/* no alignment needed */
- return dissect_dcerpc_uint8 (tvb, offset, pinfo,
- tree, drep, hfindex, pdata);
+ return dissect_dcerpc_uint8(tvb, offset, pinfo,
+ tree, drep, hfindex, pdata);
}
int
-PIDL_dissect_uint8 (tvbuff_t *tvb, gint offset, packet_info *pinfo,
+PIDL_dissect_uint8(tvbuff_t *tvb, gint offset, packet_info *pinfo,
proto_tree *tree, guint8 *drep,
int hfindex, guint32 param _U_)
{
dcerpc_info *di;
- guint8 val;
+ guint8 val;
- di=pinfo->private_data;
- if(di->conformant_run){
- /* just a run to handle conformant arrays, no scalars to dissect */
- return offset;
+ di = pinfo->private_data;
+ if (di->conformant_run) {
+ /* just a run to handle conformant arrays, no scalars to dissect */
+ return offset;
}
/* no alignment needed */
- offset=dissect_dcerpc_uint8 (tvb, offset, pinfo,
- tree, drep, hfindex, &val);
+ offset = dissect_dcerpc_uint8(tvb, offset, pinfo,
+ tree, drep, hfindex, &val);
- if(param&PIDL_SET_COL_INFO){
+ if (param&PIDL_SET_COL_INFO) {
header_field_info *hf_info;
char *valstr;
- hf_info=proto_registrar_get_nth(hfindex);
+ hf_info = proto_registrar_get_nth(hfindex);
- valstr=ep_alloc(64);
+ valstr = ep_alloc(64);
valstr[0]=0;
- switch(hf_info->display){
+ switch (hf_info->display) {
case BASE_DEC:
- if(hf_info->strings){
+ if (hf_info->strings) {
g_snprintf(valstr, 64, "%s(%d)",val_to_str(val, hf_info->strings, "Unknown:%u"), val);
} else {
g_snprintf(valstr, 64, "%d", val);
}
break;
case BASE_HEX:
- if(hf_info->strings){
+ if (hf_info->strings) {
g_snprintf(valstr, 64, "%s(0x%02x)",val_to_str(val, hf_info->strings, "Unknown:%u"), val);
} else {
g_snprintf(valstr, 64, "0x%02x", val);
@@ -115,66 +114,66 @@ PIDL_dissect_uint8 (tvbuff_t *tvb, gint offset, packet_info *pinfo,
int
-dissect_ndr_uint16 (tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep,
- int hfindex, guint16 *pdata)
+dissect_ndr_uint16(tvbuff_t *tvb, gint offset, packet_info *pinfo,
+ proto_tree *tree, guint8 *drep,
+ int hfindex, guint16 *pdata)
{
dcerpc_info *di;
- di=pinfo->private_data;
- if(di->conformant_run){
- /* just a run to handle conformant arrays, no scalars to dissect */
- return offset;
+ di = pinfo->private_data;
+ if (di->conformant_run) {
+ /* just a run to handle conformant arrays, no scalars to dissect */
+ return offset;
}
if (!di->no_align && (offset % 2)) {
offset++;
}
- return dissect_dcerpc_uint16 (tvb, offset, pinfo,
- tree, drep, hfindex, pdata);
+ return dissect_dcerpc_uint16(tvb, offset, pinfo,
+ tree, drep, hfindex, pdata);
}
int
-PIDL_dissect_uint16 (tvbuff_t *tvb, gint offset, packet_info *pinfo,
+PIDL_dissect_uint16(tvbuff_t *tvb, gint offset, packet_info *pinfo,
proto_tree *tree, guint8 *drep,
int hfindex, guint32 param _U_)
{
dcerpc_info *di;
- guint16 val;
+ guint16 val;
- di=pinfo->private_data;
- if(di->conformant_run){
- /* just a run to handle conformant arrays, no scalars to dissect */
- return offset;
+ di = pinfo->private_data;
+ if (di->conformant_run) {
+ /* just a run to handle conformant arrays, no scalars to dissect */
+ return offset;
}
if (!di->no_align && (offset % 2)) {
offset++;
}
- offset=dissect_dcerpc_uint16 (tvb, offset, pinfo,
- tree, drep, hfindex, &val);
+ offset = dissect_dcerpc_uint16(tvb, offset, pinfo,
+ tree, drep, hfindex, &val);
- if(param&PIDL_SET_COL_INFO){
+ if (param&PIDL_SET_COL_INFO) {
header_field_info *hf_info;
char *valstr;
- hf_info=proto_registrar_get_nth(hfindex);
+ hf_info = proto_registrar_get_nth(hfindex);
- valstr=ep_alloc(64);
+ valstr = ep_alloc(64);
valstr[0]=0;
- switch(hf_info->display){
+ switch (hf_info->display) {
case BASE_DEC:
- if(hf_info->strings){
+ if (hf_info->strings) {
g_snprintf(valstr, 64, "%s(%d)",val_to_str(val, hf_info->strings, "Unknown:%u"), val);
} else {
g_snprintf(valstr, 64, "%d", val);
}
break;
case BASE_HEX:
- if(hf_info->strings){
+ if (hf_info->strings) {
g_snprintf(valstr, 64, "%s(0x%04x)",val_to_str(val, hf_info->strings, "Unknown:%u"), val);
} else {
g_snprintf(valstr, 64, "0x%04x", val);
@@ -193,42 +192,42 @@ PIDL_dissect_uint16 (tvbuff_t *tvb, gint offset, packet_info *pinfo,
}
int
-dissect_ndr_uint32 (tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep,
- int hfindex, guint32 *pdata)
+dissect_ndr_uint32(tvbuff_t *tvb, gint offset, packet_info *pinfo,
+ proto_tree *tree, guint8 *drep,
+ int hfindex, guint32 *pdata)
{
dcerpc_info *di;
- di=pinfo->private_data;
- if(di->conformant_run){
- /* just a run to handle conformant arrays, no scalars to dissect */
- return offset;
+ di = pinfo->private_data;
+ if (di->conformant_run) {
+ /* just a run to handle conformant arrays, no scalars to dissect */
+ return offset;
}
if (!di->no_align && (offset % 4)) {
offset += 4 - (offset % 4);
}
- return dissect_dcerpc_uint32 (tvb, offset, pinfo,
- tree, drep, hfindex, pdata);
+ return dissect_dcerpc_uint32(tvb, offset, pinfo,
+ tree, drep, hfindex, pdata);
}
/* This is used to dissect the new datatypes, such as pointers and conformance
data, which is 4 bytes in size in NDR but 8 bytes in NDR64.
*/
int
-dissect_ndr_uint3264 (tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep,
- int hfindex, guint3264 *pdata)
+dissect_ndr_uint3264(tvbuff_t *tvb, gint offset, packet_info *pinfo,
+ proto_tree *tree, guint8 *drep,
+ int hfindex, guint3264 *pdata)
{
dcerpc_info *di;
- di=pinfo->private_data;
+ di = pinfo->private_data;
if (di->call_data->flags & DCERPC_IS_NDR64) {
return dissect_ndr_uint64(tvb, offset, pinfo, tree, drep, hfindex, pdata);
} else {
- guint32 val;
+ guint32 val = 0;
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hfindex, &val);
if (pdata) {
*pdata = val;
@@ -241,18 +240,18 @@ dissect_ndr_uint3264 (tvbuff_t *tvb, gint offset, packet_info *pinfo,
that are 2 bytes in size in NDR but 4 bytes in NDR64.
*/
int
-dissect_ndr_uint1632 (tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep,
- int hfindex, guint1632 *pdata)
+dissect_ndr_uint1632(tvbuff_t *tvb, gint offset, packet_info *pinfo,
+ proto_tree *tree, guint8 *drep,
+ int hfindex, guint1632 *pdata)
{
dcerpc_info *di;
- di=pinfo->private_data;
+ di = pinfo->private_data;
if (di->call_data->flags & DCERPC_IS_NDR64) {
return dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hfindex, pdata);
} else {
- guint16 val;
+ guint16 val = 0;
offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep, hfindex, &val);
if (pdata) {
*pdata = val;
@@ -262,45 +261,45 @@ dissect_ndr_uint1632 (tvbuff_t *tvb, gint offset, packet_info *pinfo,
}
int
-PIDL_dissect_uint32 (tvbuff_t *tvb, gint offset, packet_info *pinfo,
+PIDL_dissect_uint32(tvbuff_t *tvb, gint offset, packet_info *pinfo,
proto_tree *tree, guint8 *drep,
int hfindex, guint32 param)
{
dcerpc_info *di;
- guint32 val;
+ guint32 val;
- di=pinfo->private_data;
- if(di->conformant_run){
- /* just a run to handle conformant arrays, no scalars to dissect */
- return offset;
+ di = pinfo->private_data;
+ if (di->conformant_run) {
+ /* just a run to handle conformant arrays, no scalars to dissect */
+ return offset;
}
if (!di->no_align && (offset % 4)) {
offset += 4 - (offset % 4);
}
- offset=dissect_dcerpc_uint32 (tvb, offset, pinfo,
- tree, drep, hfindex, &val);
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo,
+ tree, drep, hfindex, &val);
- if(param&PIDL_SET_COL_INFO){
+ if (param&PIDL_SET_COL_INFO) {
header_field_info *hf_info;
char *valstr;
- hf_info=proto_registrar_get_nth(hfindex);
+ hf_info = proto_registrar_get_nth(hfindex);
- valstr=ep_alloc(64);
+ valstr = ep_alloc(64);
valstr[0]=0;
- switch(hf_info->display){
+ switch (hf_info->display) {
case BASE_DEC:
- if(hf_info->strings){
+ if (hf_info->strings) {
g_snprintf(valstr, 64, "%s(%d)",val_to_str(val, hf_info->strings, "Unknown:%u"), val);
} else {
g_snprintf(valstr, 64, "%d", val);
}
break;
case BASE_HEX:
- if(hf_info->strings){
+ if (hf_info->strings) {
g_snprintf(valstr, 64, "%s(0x%08x)",val_to_str(val, hf_info->strings, "Unknown:%u"), val);
} else {
g_snprintf(valstr, 64, "0x%08x", val);
@@ -324,87 +323,87 @@ PIDL_dissect_uint32 (tvbuff_t *tvb, gint offset, packet_info *pinfo,
It is really just 2 uint32's
*/
int
-dissect_ndr_duint32 (tvbuff_t *tvb, gint offset, packet_info *pinfo,
+dissect_ndr_duint32(tvbuff_t *tvb, gint offset, packet_info *pinfo,
proto_tree *tree, guint8 *drep,
int hfindex, guint64 *pdata)
{
dcerpc_info *di;
- di=pinfo->private_data;
- if(di->conformant_run){
- /* just a run to handle conformant arrays, no scalars to dissect */
- return offset;
+ di = pinfo->private_data;
+ if (di->conformant_run) {
+ /* just a run to handle conformant arrays, no scalars to dissect */
+ return offset;
}
if (!di->no_align && (offset % 4)) {
offset += 4 - (offset % 4);
}
- return dissect_dcerpc_uint64 (tvb, offset, pinfo,
- tree, drep, hfindex, pdata);
+ return dissect_dcerpc_uint64(tvb, offset, pinfo,
+ tree, drep, hfindex, pdata);
}
/* uint64 : hyper
a 64 bit integer aligned to proper 8 byte boundaries
*/
int
-dissect_ndr_uint64 (tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep,
- int hfindex, guint64 *pdata)
+dissect_ndr_uint64(tvbuff_t *tvb, gint offset, packet_info *pinfo,
+ proto_tree *tree, guint8 *drep,
+ int hfindex, guint64 *pdata)
{
dcerpc_info *di;
- di=pinfo->private_data;
- if(di->conformant_run){
- /* just a run to handle conformant arrays, no scalars to dissect */
- return offset;
+ di = pinfo->private_data;
+ if (di->conformant_run) {
+ /* just a run to handle conformant arrays, no scalars to dissect */
+ return offset;
}
if (!di->no_align && (offset % 8)) {
offset += 8 - (offset % 8);
}
- return dissect_dcerpc_uint64 (tvb, offset, pinfo,
- tree, drep, hfindex, pdata);
+ return dissect_dcerpc_uint64(tvb, offset, pinfo,
+ tree, drep, hfindex, pdata);
}
int
-PIDL_dissect_uint64 (tvbuff_t *tvb, gint offset, packet_info *pinfo,
+PIDL_dissect_uint64(tvbuff_t *tvb, gint offset, packet_info *pinfo,
proto_tree *tree, guint8 *drep,
int hfindex, guint32 param _U_)
{
dcerpc_info *di;
- guint64 val;
+ guint64 val;
- di=pinfo->private_data;
- if(di->conformant_run){
- /* just a run to handle conformant arrays, no scalars to dissect */
- return offset;
+ di = pinfo->private_data;
+ if (di->conformant_run) {
+ /* just a run to handle conformant arrays, no scalars to dissect */
+ return offset;
}
if (!di->no_align && (offset % 8)) {
offset += 8 - (offset % 8);
}
- offset=dissect_dcerpc_uint64 (tvb, offset, pinfo,
- tree, drep, hfindex, &val);
+ offset = dissect_dcerpc_uint64(tvb, offset, pinfo,
+ tree, drep, hfindex, &val);
- if(param&PIDL_SET_COL_INFO){
+ if (param&PIDL_SET_COL_INFO) {
header_field_info *hf_info;
char *valstr;
- hf_info=proto_registrar_get_nth(hfindex);
+ hf_info = proto_registrar_get_nth(hfindex);
- valstr=ep_alloc(64);
+ valstr = ep_alloc(64);
valstr[0]=0;
- switch(hf_info->display){
+ switch (hf_info->display) {
case BASE_DEC:
- if(hf_info->strings){
+ if (hf_info->strings) {
g_snprintf(valstr, 64, "%s(%" G_GINT64_MODIFIER "u)",val_to_str( (guint32) val, hf_info->strings, "Unknown:%u"), val);
} else {
g_snprintf(valstr, 64, "%" G_GINT64_MODIFIER "u", val);
}
break;
case BASE_HEX:
- if(hf_info->strings){
+ if (hf_info->strings) {
g_snprintf(valstr, 64, "%s(0x%" G_GINT64_MODIFIER "x)",val_to_str( (guint32) val, hf_info->strings, "Unknown:%u"), val);
} else {
g_snprintf(valstr, 64, "0x%" G_GINT64_MODIFIER "x", val);
@@ -424,88 +423,88 @@ PIDL_dissect_uint64 (tvbuff_t *tvb, gint offset, packet_info *pinfo,
int
dissect_ndr_float(tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep,
- int hfindex, gfloat *pdata)
+ proto_tree *tree, guint8 *drep,
+ int hfindex, gfloat *pdata)
{
dcerpc_info *di;
- di=pinfo->private_data;
- if(di->conformant_run){
- /* just a run to handle conformant arrays, no scalars to dissect */
- return offset;
+ di = pinfo->private_data;
+ if (di->conformant_run) {
+ /* just a run to handle conformant arrays, no scalars to dissect */
+ return offset;
}
if (!di->no_align && (offset % 4)) {
offset += 4 - (offset % 4);
}
return dissect_dcerpc_float(tvb, offset, pinfo,
- tree, drep, hfindex, pdata);
+ tree, drep, hfindex, pdata);
}
int
dissect_ndr_double(tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep,
- int hfindex, gdouble *pdata)
+ proto_tree *tree, guint8 *drep,
+ int hfindex, gdouble *pdata)
{
dcerpc_info *di;
- di=pinfo->private_data;
- if(di->conformant_run){
- /* just a run to handle conformant arrays, no scalars to dissect */
- return offset;
+ di = pinfo->private_data;
+ if (di->conformant_run) {
+ /* just a run to handle conformant arrays, no scalars to dissect */
+ return offset;
}
if (!di->no_align && (offset % 8)) {
offset += 8 - (offset % 8);
}
return dissect_dcerpc_double(tvb, offset, pinfo,
- tree, drep, hfindex, pdata);
+ tree, drep, hfindex, pdata);
}
/* handles unix 32 bit time_t */
int
-dissect_ndr_time_t (tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep,
- int hfindex, guint32 *pdata)
+dissect_ndr_time_t(tvbuff_t *tvb, gint offset, packet_info *pinfo,
+ proto_tree *tree, guint8 *drep,
+ int hfindex, guint32 *pdata)
{
dcerpc_info *di;
- di=pinfo->private_data;
- if(di->conformant_run){
- /* just a run to handle conformant arrays, no scalars to dissect */
- return offset;
+ di = pinfo->private_data;
+ if (di->conformant_run) {
+ /* just a run to handle conformant arrays, no scalars to dissect */
+ return offset;
}
if (!di->no_align && (offset % 4)) {
offset += 4 - (offset % 4);
}
- return dissect_dcerpc_time_t (tvb, offset, pinfo,
- tree, drep, hfindex, pdata);
+ return dissect_dcerpc_time_t(tvb, offset, pinfo,
+ tree, drep, hfindex, pdata);
}
int
-dissect_ndr_uuid_t (tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep,
- int hfindex, e_uuid_t *pdata)
+dissect_ndr_uuid_t(tvbuff_t *tvb, gint offset, packet_info *pinfo,
+ proto_tree *tree, guint8 *drep,
+ int hfindex, e_uuid_t *pdata)
{
dcerpc_info *di;
- di=pinfo->private_data;
- if(di->conformant_run){
- /* just a run to handle conformant arrays, no scalars to dissect */
- return offset;
+ di = pinfo->private_data;
+ if (di->conformant_run) {
+ /* just a run to handle conformant arrays, no scalars to dissect */
+ return offset;
}
/* uuid's are aligned to 4 bytes, due to initial uint32 in struct */
if (!di->no_align && (offset % 4)) {
offset += 4 - (offset % 4);
}
- return dissect_dcerpc_uuid_t (tvb, offset, pinfo,
- tree, drep, hfindex, pdata);
+ return dissect_dcerpc_uuid_t(tvb, offset, pinfo,
+ tree, drep, hfindex, pdata);
}
/*
@@ -518,27 +517,27 @@ dissect_ndr_uuid_t (tvbuff_t *tvb, gint offset, packet_info *pinfo,
* attributes and the uuid_t?
*/
int
-dissect_ndr_ctx_hnd (tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep,
- int hfindex, e_ctx_hnd *pdata)
+dissect_ndr_ctx_hnd(tvbuff_t *tvb, gint offset, packet_info *pinfo,
+ proto_tree *tree, guint8 *drep,
+ int hfindex, e_ctx_hnd *pdata)
{
static e_ctx_hnd ctx_hnd;
dcerpc_info *di;
- di=pinfo->private_data;
- if(di->conformant_run){
- /* just a run to handle conformant arrays, no scalars to dissect */
- return offset;
+ di = pinfo->private_data;
+ if (di->conformant_run) {
+ /* just a run to handle conformant arrays, no scalars to dissect */
+ return offset;
}
if (!di->no_align && (offset % 2)) {
offset += 4 - (offset % 4);
}
- ctx_hnd.attributes = dcerpc_tvb_get_ntohl (tvb, offset, drep);
- dcerpc_tvb_get_uuid (tvb, offset+4, drep, &ctx_hnd.uuid);
+ ctx_hnd.attributes = dcerpc_tvb_get_ntohl(tvb, offset, drep);
+ dcerpc_tvb_get_uuid(tvb, offset+4, drep, &ctx_hnd.uuid);
if (tree) {
/* Bytes is bytes - don't worry about the data representation */
- proto_tree_add_item (tree, hfindex, tvb, offset, 20, ENC_NA);
+ proto_tree_add_item(tree, hfindex, tvb, offset, 20, ENC_NA);
}
if (pdata) {
*pdata = ctx_hnd;
diff --git a/epan/dissectors/packet-dcerpc-netlogon.c b/epan/dissectors/packet-dcerpc-netlogon.c
index 04d494fa1d..43ff4cbad7 100644
--- a/epan/dissectors/packet-dcerpc-netlogon.c
+++ b/epan/dissectors/packet-dcerpc-netlogon.c
@@ -59,7 +59,7 @@ static void printnbyte(const guint8* tab,int nb,const char* txt,const char* txt2
debugprintf("%s ",txt);
for(i=0;i<nb;i++)
{
- debugprintf("%02hhX ",*(tab+i));
+ debugprintf("%02X ",*(tab+i));
}
debugprintf("%s",txt2);
}
@@ -472,8 +472,7 @@ typedef struct _seen_packet {
} seen_packet;
static seen_packet seen;
-guint
-netlogon_auth_hash (gconstpointer k);
+
static e_uuid_t uuid_dcerpc_netlogon = {
0x12345678, 0x1234, 0xabcd,
{ 0xef, 0x00, 0x01, 0x23, 0x45, 0x67, 0xcf, 0xfb }
@@ -590,7 +589,7 @@ netlogon_auth_equal (gconstpointer k1, gconstpointer k2)
ADDRESSES_EQUAL(&key1->dst,&key2->dst));
}
-guint
+static guint
netlogon_auth_hash (gconstpointer k)
{
const netlogon_auth_key *key1 = (const netlogon_auth_key *)k;
@@ -602,7 +601,7 @@ netlogon_auth_hash (gconstpointer k)
else {
unsigned int i = 0;
hash_val1 = 0;
- for(i=0; i<strlen(key1->name);i++) {
+ for(i=0; key1->name[i]; i++) {
hash_val1 += key1->name[i];
}
}
diff --git a/epan/dissectors/packet-dcerpc-nt.c b/epan/dissectors/packet-dcerpc-nt.c
index fbfe051847..4180db3fa6 100644
--- a/epan/dissectors/packet-dcerpc-nt.c
+++ b/epan/dissectors/packet-dcerpc-nt.c
@@ -19,7 +19,7 @@
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
@@ -112,7 +112,7 @@ dissect_null_term_string(tvbuff_t *tvb, int offset,
int tmp_offset = offset;
guint32 len = 0;
char *s;
-
+
data = tvb_get_guint8 (tvb, tmp_offset);
for ( ;tvb_length_remaining (tvb, tmp_offset) > 0 && data; tmp_offset++) {
data = tvb_get_guint8 (tvb, tmp_offset);
@@ -121,7 +121,7 @@ dissect_null_term_string(tvbuff_t *tvb, int offset,
/* Let's try to the terminator on the last char ...*/
if (data) {
tmp_offset++;
- data = tvb_get_guint8 (tvb, tmp_offset);
+ data = tvb_get_guint8 (tvb, tmp_offset);
}
if (data) {
@@ -147,7 +147,7 @@ dissect_null_term_wstring(tvbuff_t *tvb, int offset,
int tmp_offset = offset;
guint32 len = 0;
char *s;
-
+
data = dcerpc_tvb_get_ntohs(tvb, tmp_offset, drep);
for ( ; tvb_length_remaining (tvb, tmp_offset) > 1 && data; tmp_offset +=2) {
data = dcerpc_tvb_get_ntohs(tvb, tmp_offset, drep);
@@ -188,7 +188,7 @@ dissect_ndr_counted_string_cb(tvbuff_t *tvb, int offset,
dcerpc_info *di = pinfo->private_data;
guint16 len, size;
- /* Structure starts with short, but is aligned for pointer */
+ /* Structure starts with short, but is aligned for pointer */
ALIGN_TO_5_BYTES;
@@ -196,13 +196,13 @@ dissect_ndr_counted_string_cb(tvbuff_t *tvb, int offset,
return offset;
/*
- struct {
- short len;
- short size;
- [size_is(size/2), length_is(len/2), ptr] unsigned short *string;
- } UNICODE_STRING;
+ struct {
+ short len;
+ short size;
+ [size_is(size/2), length_is(len/2), ptr] unsigned short *string;
+ } UNICODE_STRING;
- */
+ */
offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
hf_nt_cs_len, &len);
@@ -295,7 +295,7 @@ dissect_ndr_counted_byte_array_cb(tvbuff_t *tvb, int offset,
proto_tree *subtree;
guint16 len, size;
- /* Structure starts with short, but is aligned for pointer */
+ /* Structure starts with short, but is aligned for pointer */
ALIGN_TO_5_BYTES;
@@ -308,13 +308,13 @@ dissect_ndr_counted_byte_array_cb(tvbuff_t *tvb, int offset,
subtree = proto_item_add_subtree(item, ett_nt_counted_byte_array);
/*
- struct {
- short len;
- short size;
- [size_is(size), length_is(len), ptr] unsigned char *string;
- } WHATEVER_THIS_IS_CALLED;
+ struct {
+ short len;
+ short size;
+ [size_is(size), length_is(len), ptr] unsigned char *string;
+ } WHATEVER_THIS_IS_CALLED;
- */
+ */
offset = dissect_ndr_uint16(tvb, offset, pinfo, subtree, drep,
hf_nt_cs_len, &len);
@@ -405,7 +405,7 @@ dissect_ndr_counted_ascii_string_cb(tvbuff_t *tvb, int offset,
proto_tree *subtree;
guint16 len, size;
- /* Structure starts with short, but is aligned for pointer */
+ /* Structure starts with short, but is aligned for pointer */
ALIGN_TO_5_BYTES;
@@ -418,13 +418,13 @@ dissect_ndr_counted_ascii_string_cb(tvbuff_t *tvb, int offset,
subtree = proto_item_add_subtree(item, ett_nt_counted_ascii_string);
/*
- struct {
- short len;
- short size;
- [size_is(size), length_is(len), ptr] unsigned char *string;
- } WHATEVER_THIS_IS_CALLED;
+ struct {
+ short len;
+ short size;
+ [size_is(size), length_is(len), ptr] unsigned char *string;
+ } WHATEVER_THIS_IS_CALLED;
- */
+ */
offset = dissect_ndr_uint16(tvb, offset, pinfo, subtree, drep,
hf_nt_cs_len, &len);
@@ -533,7 +533,7 @@ dissect_ndr_nt_NTTIME (tvbuff_t *tvb, int offset,
}
/* Define this symbol to display warnings about request/response and
- policy handle hash table collisions. This happens when a packet with
+ policy handle hash table collisions. This happens when a packet with
the same conversation, smb fid and dcerpc call id occurs. I think this
is due to a bug in the dcerpc/smb fragment reassembly code. */
@@ -571,7 +571,7 @@ typedef struct {
} pol_hash_key;
typedef struct {
- pol_value *list; /* List of policy handle entries */
+ pol_value *list; /* List of policy handle entries */
} pol_hash_value;
static GHashTable *pol_hash = NULL;
@@ -1186,84 +1186,84 @@ dissect_nt_guid_hnd(tvbuff_t *tvb, gint offset, packet_info *pinfo,
return offset;
}
-/* Some helper routines to dissect a range of uint8 characters. I don't
+/* Some helper routines to dissect a range of uint8 characters. I don't
think these are "official" NDR representations and are probably specific
to NT so for the moment they're put here instead of in packet-dcerpc.c
and packet-dcerpc-ndr.c. */
int
dissect_dcerpc_uint8s(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
- proto_tree *tree, guint8 *drep _U_, int hfindex,
+ proto_tree *tree, guint8 *drep _U_, int hfindex,
int length, const guint8 **pdata)
{
- const guint8 *data;
+ const guint8 *data;
- data = (const guint8 *)tvb_get_ptr(tvb, offset, length);
+ data = (const guint8 *)tvb_get_ptr(tvb, offset, length);
- if (tree) {
- /* This should be an FT_BYTES, so the byte order should not matter */
- proto_tree_add_item (tree, hfindex, tvb, offset, length, ENC_NA);
- }
+ if (tree) {
+ /* This should be an FT_BYTES, so the byte order should not matter */
+ proto_tree_add_item (tree, hfindex, tvb, offset, length, ENC_NA);
+ }
- if (pdata)
- *pdata = data;
+ if (pdata)
+ *pdata = data;
- return offset + length;
+ return offset + length;
}
int
dissect_ndr_uint8s(tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep,
- int hfindex, int length, const guint8 **pdata)
+ proto_tree *tree, guint8 *drep,
+ int hfindex, int length, const guint8 **pdata)
{
- dcerpc_info *di;
+ dcerpc_info *di;
- di=pinfo->private_data;
- if(di->conformant_run){
- /* just a run to handle conformant arrays, no scalars to dissect */
- return offset;
- }
+ di=pinfo->private_data;
+ if(di->conformant_run){
+ /* just a run to handle conformant arrays, no scalars to dissect */
+ return offset;
+ }
- /* no alignment needed */
- return dissect_dcerpc_uint8s(tvb, offset, pinfo,
- tree, drep, hfindex, length, pdata);
+ /* no alignment needed */
+ return dissect_dcerpc_uint8s(tvb, offset, pinfo,
+ tree, drep, hfindex, length, pdata);
}
int
dissect_dcerpc_uint16s(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
- proto_tree *tree, guint8 *drep, int hfindex,
- int length)
+ proto_tree *tree, guint8 *drep, int hfindex,
+ int length)
{
- if (tree) {
- /* These are FT_BYTES fields, so the byte order should not matter;
- however, perhaps there should be an FT_HEXADECTETS type,
- or something such as that, with each pair of octets
- displayed as a single unit, in which case the byte order
- would matter, so we'll calculate the byte order here. */
- proto_tree_add_item (tree, hfindex, tvb, offset, length * 2, DREP_ENC_INTEGER(drep));
- }
-
- return offset + length * 2;
+ if (tree) {
+ /* These are FT_BYTES fields, so the byte order should not matter;
+ however, perhaps there should be an FT_HEXADECTETS type,
+ or something such as that, with each pair of octets
+ displayed as a single unit, in which case the byte order
+ would matter, so we'll calculate the byte order here. */
+ proto_tree_add_item (tree, hfindex, tvb, offset, length * 2, DREP_ENC_INTEGER(drep));
+ }
+
+ return offset + length * 2;
}
int
dissect_ndr_uint16s(tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep,
- int hfindex, int length)
+ proto_tree *tree, guint8 *drep,
+ int hfindex, int length)
{
- dcerpc_info *di;
+ dcerpc_info *di;
- di=pinfo->private_data;
- if(di->conformant_run){
- /* just a run to handle conformant arrays, no scalars to dissect */
- return offset;
- }
+ di=pinfo->private_data;
+ if(di->conformant_run){
+ /* just a run to handle conformant arrays, no scalars to dissect */
+ return offset;
+ }
- if (offset % 2)
- offset++;
+ if (offset % 2)
+ offset++;
- return dissect_dcerpc_uint16s(tvb, offset, pinfo,
- tree, drep, hfindex, length);
+ return dissect_dcerpc_uint16s(tvb, offset, pinfo,
+ tree, drep, hfindex, length);
}
/*
@@ -1481,7 +1481,7 @@ dissect_ndr_nt_SID_with_options(tvbuff_t *tvb, int offset, packet_info *pinfo, p
and putting the sid twice on the summary line
looks even worse.
Real solution would be to block updates to col_info
- while we just do a conformance run, this might
+ while we just do a conformance run, this might
have sideeffects so it needs some more thoughts first.
*/
if (check_col(pinfo->cinfo, COL_INFO))
@@ -1708,7 +1708,7 @@ dissect_ndr_nt_LOGON_HOURS(tvbuff_t *tvb, int offset,
/* XXX - is this a bitmask like the "logon hours" field in the
Remote API call "NetUserGetInfo()" with an information level
of 11? */
- offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
+ offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
dissect_LOGON_HOURS_hours, NDR_POINTER_UNIQUE,
"LOGON_HOURS", -1);
@@ -1718,8 +1718,8 @@ dissect_ndr_nt_LOGON_HOURS(tvbuff_t *tvb, int offset,
static int
dissect_ndr_nt_PSID_no_hf(tvbuff_t *tvb, int offset,
- packet_info *pinfo, proto_tree *parent_tree,
- guint8 *drep)
+ packet_info *pinfo, proto_tree *parent_tree,
+ guint8 *drep)
{
offset=dissect_ndr_nt_PSID(tvb, offset, pinfo, parent_tree, drep);
return offset;
@@ -1727,8 +1727,8 @@ dissect_ndr_nt_PSID_no_hf(tvbuff_t *tvb, int offset,
static int
dissect_ndr_nt_PSID_ARRAY_sids (tvbuff_t *tvb, int offset,
- packet_info *pinfo, proto_tree *tree,
- guint8 *drep)
+ packet_info *pinfo, proto_tree *tree,
+ guint8 *drep)
{
offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
dissect_ndr_nt_PSID_no_hf);
@@ -1759,7 +1759,7 @@ dissect_ndr_nt_PSID_ARRAY(tvbuff_t *tvb, int offset,
offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
hf_nt_count, &count);
- offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
+ offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
dissect_ndr_nt_PSID_ARRAY_sids, NDR_POINTER_UNIQUE,
"PSID_ARRAY", -1);
@@ -1791,8 +1791,8 @@ dissect_ndr_nt_SID_AND_ATTRIBUTES(tvbuff_t *tvb, int offset,
offset = dissect_ndr_nt_PSID(tvb, offset, pinfo, tree, drep);
- offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
- hf_nt_attrib, NULL);
+ offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
+ hf_nt_attrib, NULL);
return offset;
}
@@ -1952,7 +1952,7 @@ void dcerpc_smb_init(int proto_dcerpc)
/* Misc */
- { &hf_nt_attrib,
+ { &hf_nt_attrib,
{ "Attributes", "dcerpc.nt.attr",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
@@ -1975,13 +1975,13 @@ void dcerpc_smb_init(int proto_dcerpc)
&ett_nt_counted_string,
&ett_nt_counted_byte_array,
&ett_nt_policy_hnd,
- &ett_nt_sid_pointer,
- &ett_nt_acct_ctrl,
- &ett_nt_logon_hours,
- &ett_nt_logon_hours_hours,
- &ett_nt_sid_array,
- &ett_nt_sid_and_attributes_array,
- &ett_nt_sid_and_attributes,
+ &ett_nt_sid_pointer,
+ &ett_nt_acct_ctrl,
+ &ett_nt_logon_hours,
+ &ett_nt_logon_hours_hours,
+ &ett_nt_sid_array,
+ &ett_nt_sid_and_attributes_array,
+ &ett_nt_sid_and_attributes,
&ett_nt_counted_ascii_string,
&ett_lsa_String,
};
diff --git a/epan/dissectors/packet-dcerpc-rdaclif.c b/epan/dissectors/packet-dcerpc-rdaclif.c
index 993f897fc8..6058cde0b2 100644
--- a/epan/dissectors/packet-dcerpc-rdaclif.c
+++ b/epan/dissectors/packet-dcerpc-rdaclif.c
@@ -6,7 +6,7 @@
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz ../security/idl/rdaclif.idl
*
* $Id$
- *
+ *
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-rep_proc.c b/epan/dissectors/packet-dcerpc-rep_proc.c
index b5fec00b2c..118132b640 100644
--- a/epan/dissectors/packet-dcerpc-rep_proc.c
+++ b/epan/dissectors/packet-dcerpc-rep_proc.c
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-roverride.c b/epan/dissectors/packet-dcerpc-roverride.c
index 3beabc303c..8d280e93b5 100644
--- a/epan/dissectors/packet-dcerpc-roverride.c
+++ b/epan/dissectors/packet-dcerpc-roverride.c
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-rpriv.c b/epan/dissectors/packet-dcerpc-rpriv.c
index d13c29005d..518a1ac4d5 100644
--- a/epan/dissectors/packet-dcerpc-rpriv.c
+++ b/epan/dissectors/packet-dcerpc-rpriv.c
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-rs_acct.c b/epan/dissectors/packet-dcerpc-rs_acct.c
index 82fd1489cf..7e2447c374 100644
--- a/epan/dissectors/packet-dcerpc-rs_acct.c
+++ b/epan/dissectors/packet-dcerpc-rs_acct.c
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-rs_attr.c b/epan/dissectors/packet-dcerpc-rs_attr.c
index 2ae3e8eb5b..5e9273d572 100644
--- a/epan/dissectors/packet-dcerpc-rs_attr.c
+++ b/epan/dissectors/packet-dcerpc-rs_attr.c
@@ -4,7 +4,7 @@
* Copyright 2002, Jaime Fournier <Jaime.Fournier@hush.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rs_attr.idl
- *
+ *
* $Id$
*
* Wireshark - Network traffic analyzer
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-rs_attr_schema.c b/epan/dissectors/packet-dcerpc-rs_attr_schema.c
index 758dc6c302..85463b042c 100644
--- a/epan/dissectors/packet-dcerpc-rs_attr_schema.c
+++ b/epan/dissectors/packet-dcerpc-rs_attr_schema.c
@@ -6,7 +6,7 @@
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rs_attr_schema.idl
*
* $Id$
- *
+ *
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-rs_bind.c b/epan/dissectors/packet-dcerpc-rs_bind.c
index b281e62d19..8b97791e03 100644
--- a/epan/dissectors/packet-dcerpc-rs_bind.c
+++ b/epan/dissectors/packet-dcerpc-rs_bind.c
@@ -4,7 +4,7 @@
* Copyright 2003, Jaime Fournier <Jaime.Fournier@hush.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rs_bind.idl
- *
+ *
* $Id$
*
* Wireshark - Network traffic analyzer
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
@@ -50,7 +46,7 @@ static gint ett_rs_bind = -1;
static e_uuid_t uuid_rs_bind =
{ 0xd46113d0, 0xa848, 0x11cb, {0xb8, 0x63, 0x08, 0x00, 0x1e, 0x04, 0x6a,
0xa5}
-
+
};
static guint16 ver_rs_bind = 2;
diff --git a/epan/dissectors/packet-dcerpc-rs_misc.c b/epan/dissectors/packet-dcerpc-rs_misc.c
index 94e5c48e91..17b85693cf 100644
--- a/epan/dissectors/packet-dcerpc-rs_misc.c
+++ b/epan/dissectors/packet-dcerpc-rs_misc.c
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-rs_pgo.c b/epan/dissectors/packet-dcerpc-rs_pgo.c
index a9049632bf..f34f398a1c 100644
--- a/epan/dissectors/packet-dcerpc-rs_pgo.c
+++ b/epan/dissectors/packet-dcerpc-rs_pgo.c
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-rs_prop_acct.c b/epan/dissectors/packet-dcerpc-rs_prop_acct.c
index a3788506a7..5a8977376f 100644
--- a/epan/dissectors/packet-dcerpc-rs_prop_acct.c
+++ b/epan/dissectors/packet-dcerpc-rs_prop_acct.c
@@ -5,7 +5,7 @@
* ftp://ftp.opengroup.org/pub/dce122/dce/src/file.tar.gz bubasics/rs_prop_acct.idl
*
* $Id$
- *
+ *
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
@@ -30,10 +30,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-rs_prop_acl.c b/epan/dissectors/packet-dcerpc-rs_prop_acl.c
index e0bee0e2b3..c75a282ba3 100644
--- a/epan/dissectors/packet-dcerpc-rs_prop_acl.c
+++ b/epan/dissectors/packet-dcerpc-rs_prop_acl.c
@@ -6,7 +6,7 @@
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rs_prop_acl.idl
*
* $Id$
- *
+ *
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-rs_prop_attr.c b/epan/dissectors/packet-dcerpc-rs_prop_attr.c
index 1e3482b225..eecadf3b37 100644
--- a/epan/dissectors/packet-dcerpc-rs_prop_attr.c
+++ b/epan/dissectors/packet-dcerpc-rs_prop_attr.c
@@ -6,7 +6,7 @@
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rs_prop_attr.idl
*
* $Id$
- *
+ *
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-rs_prop_pgo.c b/epan/dissectors/packet-dcerpc-rs_prop_pgo.c
index 6fdcaaeba3..5b9cfe2e16 100644
--- a/epan/dissectors/packet-dcerpc-rs_prop_pgo.c
+++ b/epan/dissectors/packet-dcerpc-rs_prop_pgo.c
@@ -1,12 +1,12 @@
/* packet-dcerpc-rs_prop_pgo.c
- *
+ *
* Routines for rs_prop_pgo dissection
* Copyright 2004, Jaime Fournier <jaime.fournier@hush.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rs_prop_pgo.idl
*
* $Id$
- *
+ *
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-rs_prop_plcy.c b/epan/dissectors/packet-dcerpc-rs_prop_plcy.c
index 7118ddaa8d..66891d8c73 100644
--- a/epan/dissectors/packet-dcerpc-rs_prop_plcy.c
+++ b/epan/dissectors/packet-dcerpc-rs_prop_plcy.c
@@ -6,7 +6,7 @@
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rs_prop_plcy.idl
*
* $Id$
- *
+ *
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-rs_pwd_mgmt.c b/epan/dissectors/packet-dcerpc-rs_pwd_mgmt.c
index bc5731b579..af0f80dc2c 100644
--- a/epan/dissectors/packet-dcerpc-rs_pwd_mgmt.c
+++ b/epan/dissectors/packet-dcerpc-rs_pwd_mgmt.c
@@ -6,7 +6,7 @@
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rs_pwd_mgmt.idl
*
* $Id$
- *
+ *
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-rs_repadm.c b/epan/dissectors/packet-dcerpc-rs_repadm.c
index 08ecb2474d..044a04ba28 100644
--- a/epan/dissectors/packet-dcerpc-rs_repadm.c
+++ b/epan/dissectors/packet-dcerpc-rs_repadm.c
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-rs_replist.c b/epan/dissectors/packet-dcerpc-rs_replist.c
index 870f49dcde..b924b22262 100644
--- a/epan/dissectors/packet-dcerpc-rs_replist.c
+++ b/epan/dissectors/packet-dcerpc-rs_replist.c
@@ -4,7 +4,7 @@
* Copyright 2002, Jaime Fournier <Jaime.Fournier@hush.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rs_repadm.idl
- *
+ *
* $Id$
*
* Wireshark - Network traffic analyzer
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-rs_repmgr.c b/epan/dissectors/packet-dcerpc-rs_repmgr.c
index 21b5681640..bf74b67207 100644
--- a/epan/dissectors/packet-dcerpc-rs_repmgr.c
+++ b/epan/dissectors/packet-dcerpc-rs_repmgr.c
@@ -6,7 +6,7 @@
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rs_repmgr.idl
*
* $Id$
- *
+ *
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-rs_unix.c b/epan/dissectors/packet-dcerpc-rs_unix.c
index 0c9271f82c..8a8aa1b968 100644
--- a/epan/dissectors/packet-dcerpc-rs_unix.c
+++ b/epan/dissectors/packet-dcerpc-rs_unix.c
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-rsec_login.c b/epan/dissectors/packet-dcerpc-rsec_login.c
index f7b3d88089..69cfffb96f 100644
--- a/epan/dissectors/packet-dcerpc-rsec_login.c
+++ b/epan/dissectors/packet-dcerpc-rsec_login.c
@@ -4,7 +4,7 @@
* Copyright 2002, Jaime Fournier <Jaime.Fournier@hush.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rsec_login.idl
- *
+ *
* $Id$
*
* Wireshark - Network traffic analyzer
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-secidmap.c b/epan/dissectors/packet-dcerpc-secidmap.c
index f3b7c641d0..9a6d726660 100644
--- a/epan/dissectors/packet-dcerpc-secidmap.c
+++ b/epan/dissectors/packet-dcerpc-secidmap.c
@@ -4,7 +4,7 @@
* Copyright 2002, Jaime Fournier <Jaime.Fournier@hush.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rsecidmap.idl
- *
+ *
* $Id$
*
* Wireshark - Network traffic analyzer
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
@@ -56,7 +52,7 @@ static dcerpc_sub_dissector secidmap_dissectors[] = {
{ 2, "avoid_cn_bug", NULL, NULL},
{ 3, "parse_name_cache", NULL, NULL},
{ 4, "gen_name_cache", NULL, NULL},
-
+
{ 0, NULL, NULL, NULL },
};
@@ -83,4 +79,3 @@ proto_reg_handoff_secidmap (void)
/* Register the protocol as dcerpc */
dcerpc_init_uuid (proto_secidmap, ett_secidmap, &uuid_secidmap, ver_secidmap, secidmap_dissectors, hf_secidmap_opnum);
}
-
diff --git a/epan/dissectors/packet-dcerpc-spoolss.c b/epan/dissectors/packet-dcerpc-spoolss.c
index 547c3189a3..687d4b1b21 100644
--- a/epan/dissectors/packet-dcerpc-spoolss.c
+++ b/epan/dissectors/packet-dcerpc-spoolss.c
@@ -89,6 +89,8 @@ static int hf_needed = -1;
static int hf_returned = -1;
static int hf_buffer_size = -1;
static int hf_buffer_data = -1;
+static int hf_string_parm_size = -1;
+static int hf_string_parm_data= -1;
static int hf_offset = -1;
static int hf_level = -1;
static int hf_access_required = -1;
@@ -103,7 +105,7 @@ static int hf_sharename = -1;
static int hf_portname = -1;
static int hf_printerlocation = -1;
static int hf_drivername = -1;
-static int hf_architecture = -1;
+static int hf_environment = -1;
static int hf_username = -1;
static int hf_documentname = -1;
static int hf_outputfile = -1;
@@ -485,6 +487,59 @@ dissect_spoolss_buffer(tvbuff_t *tvb, gint offset, packet_info *pinfo,
return offset;
}
+static int
+dissect_spoolss_string_parm_data(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree, guint8 *drep)
+{
+ dcerpc_info *di = pinfo->private_data;
+ guint32 buffer_len, len;
+ gchar *s;
+ proto_item *item = NULL;
+
+ if (di->conformant_run)
+ return offset;
+
+ /* Dissect size and data */
+
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
+ hf_string_parm_size, &buffer_len);
+
+ s = tvb_get_ephemeral_unicode_stringz(tvb, offset, &len, ENC_LITTLE_ENDIAN);
+
+ if (tree && buffer_len) {
+ tvb_ensure_bytes_exist(tvb, offset, buffer_len);
+
+ item = proto_tree_add_string(
+ tree, hf_string_parm_data, tvb, offset, len, s);
+ }
+ offset += buffer_len;
+
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", %s", s);
+
+ /* Append string to upper level item */
+ if (tree && item) {
+ item = item->parent != NULL ? item->parent : item;
+ proto_item_append_text(item, ": %s", s);
+ }
+
+ return offset;
+}
+
+/* Dissect a spoolss string parameter */
+
+static int
+dissect_spoolss_string_parm(tvbuff_t *tvb, gint offset, packet_info *pinfo,
+ proto_tree *tree, guint8 *drep, const char *text)
+{
+ offset = dissect_ndr_pointer(
+ tvb, offset, pinfo, tree, drep,
+ dissect_spoolss_string_parm_data, NDR_POINTER_UNIQUE,
+ text, -1);
+
+ return offset;
+}
+
/*
* SYSTEM_TIME
*/
@@ -5332,7 +5387,6 @@ SpoolssDeletePrinterData_r(tvbuff_t *tvb, int offset,
return offset;
}
-
/*
* DRIVER_INFO_1
*/
@@ -5396,7 +5450,7 @@ dissect_DRIVER_INFO_2(tvbuff_t *tvb, int offset,
struct_start, NULL);
offset = dissect_spoolss_relstr(
- tvb, offset, pinfo, subtree, drep, hf_architecture,
+ tvb, offset, pinfo, subtree, drep, hf_environment,
struct_start, NULL);
offset = dissect_spoolss_relstr(
@@ -5442,7 +5496,7 @@ dissect_DRIVER_INFO_3(tvbuff_t *tvb, int offset,
struct_start, NULL);
offset = dissect_spoolss_relstr(
- tvb, offset, pinfo, subtree, drep, hf_architecture,
+ tvb, offset, pinfo, subtree, drep, hf_environment,
struct_start, NULL);
offset = dissect_spoolss_relstr(
@@ -5505,7 +5559,7 @@ dissect_DRIVER_INFO_6(tvbuff_t *tvb, int offset,
struct_start, NULL);
offset = dissect_spoolss_relstr(
- tvb, offset, pinfo, subtree, drep, hf_architecture,
+ tvb, offset, pinfo, subtree, drep, hf_environment,
struct_start, NULL);
offset = dissect_spoolss_relstr(
@@ -5600,7 +5654,7 @@ dissect_DRIVER_INFO_101(tvbuff_t *tvb, int offset,
struct_start, NULL);
offset = dissect_spoolss_relstr(
- tvb, offset, pinfo, subtree, drep, hf_architecture,
+ tvb, offset, pinfo, subtree, drep, hf_environment,
struct_start, NULL);
proto_tree_add_text(subtree,tvb,offset,0,"Unknown Data Follows");
@@ -5628,7 +5682,7 @@ SpoolssEnumPrinterDrivers_q(tvbuff_t *tvb, int offset,
offset = dissect_ndr_str_pointer_item(
tvb, offset, pinfo, tree, drep, NDR_POINTER_UNIQUE,
- "Environment", hf_servername, 0);
+ "Environment", hf_environment, 0);
offset = dissect_ndr_uint32(
tvb, offset, pinfo, tree, drep, hf_level, &level);
@@ -5747,7 +5801,7 @@ SpoolssGetPrinterDriver2_q(tvbuff_t *tvb, int offset,
offset = dissect_ndr_str_pointer_item(
tvb, offset, pinfo, tree, drep, NDR_POINTER_UNIQUE,
- "Architecture", hf_architecture, 0);
+ "Environment", hf_environment, 0);
offset = dissect_ndr_uint32(
tvb, offset, pinfo, tree, drep, hf_level, &level);
@@ -6878,6 +6932,54 @@ SpoolssEnumPrinterDataEx_r(tvbuff_t *tvb, int offset,
return offset;
}
+static int
+SpoolssGetPrinterDriverDirectory_q(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree,
+ guint8 *drep)
+{
+ guint32 level;
+
+ /* Parse packet */
+
+ offset = dissect_ndr_str_pointer_item(
+ tvb, offset, pinfo, tree, drep, NDR_POINTER_UNIQUE,
+ "Name", hf_servername, 0);
+
+ offset = dissect_ndr_str_pointer_item(
+ tvb, offset, pinfo, tree, drep, NDR_POINTER_UNIQUE,
+ "Environment", hf_environment, 0);
+
+ offset = dissect_ndr_uint32(
+ tvb, offset, pinfo, tree, drep, hf_level, &level);
+
+ offset = dissect_spoolss_buffer(
+ tvb, offset, pinfo, tree, drep, NULL);
+
+ offset = dissect_ndr_uint32(
+ tvb, offset, pinfo, tree, drep, hf_offered, NULL);
+
+ return offset;
+}
+
+static int
+SpoolssGetPrinterDriverDirectory_r(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree,
+ guint8 *drep)
+{
+ /* Parse packet */
+
+ offset = dissect_spoolss_string_parm(
+ tvb, offset, pinfo, tree, drep, "Directory");
+
+ offset = dissect_ndr_uint32(
+ tvb, offset, pinfo, tree, drep, hf_needed, NULL);
+
+ offset = dissect_doserror(
+ tvb, offset, pinfo, tree, drep, hf_rc, NULL);
+
+ return offset;
+}
+
/*
* List of subdissectors for this pipe.
*/
@@ -6908,7 +7010,7 @@ static dcerpc_sub_dissector dcerpc_spoolss_dissectors[] = {
{ SPOOLSS_GETPRINTERDRIVER, "GetPrinterDriver",
NULL, SpoolssGeneric_r },
{ SPOOLSS_GETPRINTERDRIVERDIRECTORY, "GetPrinterDriverDirectory",
- NULL, SpoolssGeneric_r },
+ SpoolssGetPrinterDriverDirectory_q, SpoolssGetPrinterDriverDirectory_r },
{ SPOOLSS_DELETEPRINTERDRIVER, "DeletePrinterDriver",
NULL, SpoolssGeneric_r },
{ SPOOLSS_ADDPRINTPROCESSOR, "AddPrintProcessor",
@@ -7240,6 +7342,14 @@ proto_register_dcerpc_spoolss(void)
{ "Buffer data", "spoolss.buffer.data", FT_BYTES, BASE_NONE,
NULL, 0x0, "Contents of buffer", HFILL }},
+ { &hf_string_parm_size,
+ { "String buffer size", "spoolss.string.buffersize", FT_UINT32, BASE_DEC,
+ NULL, 0x0, "Size of string buffer", HFILL }},
+
+ { &hf_string_parm_data,
+ { "String data", "spoolss.string.data", FT_STRINGZ, BASE_NONE,
+ NULL, 0x0, "Contents of string", HFILL }},
+
{ &hf_offset,
{ "Offset", "spoolss.offset", FT_UINT32, BASE_DEC,
NULL, 0x0, "Offset of data", HFILL }},
@@ -7285,8 +7395,8 @@ proto_register_dcerpc_spoolss(void)
{ "Printer location", "spoolss.printerlocation", FT_STRING,
BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_architecture,
- { "Architecture name", "spoolss.architecture", FT_STRING,
+ { &hf_environment,
+ { "Environment name", "spoolss.environment", FT_STRING,
BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_drivername,
diff --git a/epan/dissectors/packet-dcerpc-tkn4int.c b/epan/dissectors/packet-dcerpc-tkn4int.c
index 8267b2b792..68e6b62b50 100644
--- a/epan/dissectors/packet-dcerpc-tkn4int.c
+++ b/epan/dissectors/packet-dcerpc-tkn4int.c
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-ubikdisk.c b/epan/dissectors/packet-dcerpc-ubikdisk.c
index f574b63d3f..337af62c89 100644
--- a/epan/dissectors/packet-dcerpc-ubikdisk.c
+++ b/epan/dissectors/packet-dcerpc-ubikdisk.c
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-ubikvote.c b/epan/dissectors/packet-dcerpc-ubikvote.c
index 1cc5e77e55..21523d95a0 100644
--- a/epan/dissectors/packet-dcerpc-ubikvote.c
+++ b/epan/dissectors/packet-dcerpc-ubikvote.c
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc-update.c b/epan/dissectors/packet-dcerpc-update.c
index ac3d76314d..59c1a5229f 100644
--- a/epan/dissectors/packet-dcerpc-update.c
+++ b/epan/dissectors/packet-dcerpc-update.c
@@ -31,10 +31,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
diff --git a/epan/dissectors/packet-dcerpc.c b/epan/dissectors/packet-dcerpc.c
index e577a00d4e..c7e732bbe1 100644
--- a/epan/dissectors/packet-dcerpc.c
+++ b/epan/dissectors/packet-dcerpc.c
@@ -34,32 +34,39 @@
#endif
#include <string.h>
-#include <ctype.h>
#include <glib.h>
+
#include <epan/packet.h>
-#include <epan/dissectors/packet-dcerpc.h>
#include <epan/conversation.h>
#include <epan/prefs.h>
#include <epan/reassemble.h>
#include <epan/tap.h>
#include <epan/emem.h>
-#include <epan/dissectors/packet-frame.h>
-#include <epan/dissectors/packet-dcerpc-nt.h>
#include <epan/expert.h>
#include <epan/strutil.h>
#include <epan/addr_resolv.h>
+#include <epan/dissectors/packet-frame.h>
+#include <epan/dissectors/packet-dcerpc.h>
+#include <epan/dissectors/packet-dcerpc-nt.h>
static int dcerpc_tap = -1;
/* 32bit Network Data Representation, see DCE/RPC Appendix I */
-static e_uuid_t uuid_data_repr_proto = { 0x8a885d04, 0x1ceb, 0x11c9, { 0x9f, 0xe8, 0x08, 0x00, 0x2b, 0x10, 0x48, 0x60 } };
+static e_uuid_t uuid_data_repr_proto = { 0x8a885d04, 0x1ceb, 0x11c9,
+ { 0x9f, 0xe8, 0x08, 0x00, 0x2b, 0x10, 0x48, 0x60 } };
+
/* 64bit Network Data Representation, introduced in Windows Server 2008 */
-static e_uuid_t uuid_ndr64 = { 0x71710533, 0xbeba, 0x4937, { 0x83, 0x19, 0xb5, 0xdb, 0xef, 0x9c, 0xcc, 0x36 } };
+static e_uuid_t uuid_ndr64 = { 0x71710533, 0xbeba, 0x4937,
+ { 0x83, 0x19, 0xb5, 0xdb, 0xef, 0x9c, 0xcc, 0x36 } };
+
/* Bind Time Feature Negotiation, see [MS-RPCE] 3.3.1.5.3 */
-static e_uuid_t uuid_bind_time_feature_nego = { 0x6cb71c2c, 0x9812, 0x4540, { 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } };
+static e_uuid_t uuid_bind_time_feature_nego = { 0x6cb71c2c, 0x9812, 0x4540,
+ { 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } };
+
/* see [MS-OXRPC] Appendix A: Full IDL, http://msdn.microsoft.com/en-us/library/ee217991%28v=exchg.80%29.aspx */
-static e_uuid_t uuid_asyncemsmdb = { 0x5261574a, 0x4572, 0x206e, { 0xb2, 0x68, 0x6b, 0x19, 0x92, 0x13, 0xb4, 0xe4 } };
+static e_uuid_t uuid_asyncemsmdb = { 0x5261574a, 0x4572, 0x206e,
+ { 0xb2, 0x68, 0x6b, 0x19, 0x92, 0x13, 0xb4, 0xe4 } };
static const value_string pckt_vals[] = {
{ PDU_REQ, "Request"},
@@ -200,7 +207,7 @@ static const value_string authn_level_vals[] = {
* and FALSE otherwise.
*/
#define PFC_NOT_FRAGMENTED(hdr) \
- ((hdr->flags&(PFC_FIRST_FRAG|PFC_LAST_FRAG))==(PFC_FIRST_FRAG|PFC_LAST_FRAG))
+ ((hdr->flags&(PFC_FIRST_FRAG|PFC_LAST_FRAG)) == (PFC_FIRST_FRAG|PFC_LAST_FRAG))
/*
* Presentation context negotiation result.
@@ -613,11 +620,11 @@ static dcerpc_info *
get_next_di(void)
{
static dcerpc_info di[20];
- static int di_counter=0;
+ static int di_counter = 0;
di_counter++;
- if(di_counter>=20){
- di_counter=0;
+ if (di_counter >= 20) {
+ di_counter = 0;
}
memset(&di[di_counter], 0, sizeof(dcerpc_info));
@@ -667,13 +674,13 @@ static dcerpc_auth_subdissector_fns *get_auth_subdissector_fns(
guint8 auth_level, guint8 auth_type)
{
gpointer data;
- int i;
+ int i;
for (i = 0; (data = g_slist_nth_data(dcerpc_auth_subdissector_list, i)); i++) {
dcerpc_auth_subdissector *asd = (dcerpc_auth_subdissector *)data;
- if (asd->auth_level == auth_level &&
- asd->auth_type == auth_type)
+ if ((asd->auth_level == auth_level) &&
+ (asd->auth_type == auth_type))
return &asd->auth_fns;
}
@@ -774,19 +781,19 @@ static tvbuff_t *decode_encrypted_data(tvbuff_t *data_tvb,
*/
/* the registered subdissectors */
-GHashTable *dcerpc_uuids=NULL;
+GHashTable *dcerpc_uuids = NULL;
static gint
-dcerpc_uuid_equal (gconstpointer k1, gconstpointer k2)
+dcerpc_uuid_equal(gconstpointer k1, gconstpointer k2)
{
const dcerpc_uuid_key *key1 = (const dcerpc_uuid_key *)k1;
const dcerpc_uuid_key *key2 = (const dcerpc_uuid_key *)k2;
- return ((memcmp (&key1->uuid, &key2->uuid, sizeof (e_uuid_t)) == 0)
+ return ((memcmp(&key1->uuid, &key2->uuid, sizeof (e_uuid_t)) == 0)
&& (key1->ver == key2->ver));
}
static guint
-dcerpc_uuid_hash (gconstpointer k)
+dcerpc_uuid_hash(gconstpointer k)
{
const dcerpc_uuid_key *key = (const dcerpc_uuid_key *)k;
/* This isn't perfect, but the Data1 part of these is almost always
@@ -795,37 +802,37 @@ dcerpc_uuid_hash (gconstpointer k)
}
void
-dcerpc_init_uuid (int proto, int ett, e_uuid_t *uuid, guint16 ver,
- dcerpc_sub_dissector *procs, int opnum_hf)
+dcerpc_init_uuid(int proto, int ett, e_uuid_t *uuid, guint16 ver,
+ dcerpc_sub_dissector *procs, int opnum_hf)
{
- dcerpc_uuid_key *key = g_malloc (sizeof (*key));
- dcerpc_uuid_value *value = g_malloc (sizeof (*value));
+ dcerpc_uuid_key *key = g_malloc(sizeof (*key));
+ dcerpc_uuid_value *value = g_malloc(sizeof (*value));
header_field_info *hf_info;
- module_t *samr_module;
- const char *filter_name = proto_get_protocol_filter_name(proto);
+ module_t *samr_module;
+ const char *filter_name = proto_get_protocol_filter_name(proto);
key->uuid = *uuid;
key->ver = ver;
- value->proto = find_protocol_by_id(proto);
+ value->proto = find_protocol_by_id(proto);
value->proto_id = proto;
- value->ett = ett;
- value->name = proto_get_protocol_short_name (value->proto);
- value->procs = procs;
+ value->ett = ett;
+ value->name = proto_get_protocol_short_name(value->proto);
+ value->procs = procs;
value->opnum_hf = opnum_hf;
- g_hash_table_insert (dcerpc_uuids, key, value);
+ g_hash_table_insert(dcerpc_uuids, key, value);
hf_info = proto_registrar_get_nth(opnum_hf);
hf_info->strings = value_string_from_subdissectors(procs);
/* add this GUID to the global name resolving */
- guids_add_uuid(uuid, proto_get_protocol_short_name (value->proto));
+ guids_add_uuid(uuid, proto_get_protocol_short_name(value->proto));
/* Register the samr.nt_password preference as obsolete */
/* This should be in packet-dcerpc-samr.c */
if (strcmp(filter_name, "samr") == 0) {
- samr_module = prefs_register_protocol (proto, NULL);
+ samr_module = prefs_register_protocol(proto, NULL);
prefs_register_obsolete_preference(samr_module, "nt_password");
}
}
@@ -836,12 +843,12 @@ dcerpc_init_uuid (int proto, int ett, e_uuid_t *uuid, guint16 ver,
const char *
dcerpc_get_proto_name(e_uuid_t *uuid, guint16 ver)
{
- dcerpc_uuid_key key;
+ dcerpc_uuid_key key;
dcerpc_uuid_value *sub_proto;
key.uuid = *uuid;
key.ver = ver;
- if(!(sub_proto = g_hash_table_lookup (dcerpc_uuids, &key))){
+ if (!(sub_proto = g_hash_table_lookup(dcerpc_uuids, &key))) {
return NULL;
}
return sub_proto->name;
@@ -853,12 +860,12 @@ dcerpc_get_proto_name(e_uuid_t *uuid, guint16 ver)
int
dcerpc_get_proto_hf_opnum(e_uuid_t *uuid, guint16 ver)
{
- dcerpc_uuid_key key;
+ dcerpc_uuid_key key;
dcerpc_uuid_value *sub_proto;
key.uuid = *uuid;
key.ver = ver;
- if(!(sub_proto = g_hash_table_lookup (dcerpc_uuids, &key))){
+ if (!(sub_proto = g_hash_table_lookup(dcerpc_uuids, &key))) {
return -1;
}
return sub_proto->opnum_hf;
@@ -869,8 +876,9 @@ dcerpc_get_proto_hf_opnum(e_uuid_t *uuid, guint16 ver)
value_string *value_string_from_subdissectors(dcerpc_sub_dissector *sd)
{
- value_string *vs = NULL;
- int i, num_sd = 0;
+ value_string *vs = NULL;
+ int i;
+ int num_sd = 0;
again:
for (i = 0; sd[i].name; i++) {
@@ -898,12 +906,12 @@ again:
dcerpc_sub_dissector *
dcerpc_get_proto_sub_dissector(e_uuid_t *uuid, guint16 ver)
{
- dcerpc_uuid_key key;
+ dcerpc_uuid_key key;
dcerpc_uuid_value *sub_proto;
key.uuid = *uuid;
key.ver = ver;
- if(!(sub_proto = g_hash_table_lookup (dcerpc_uuids, &key))){
+ if (!(sub_proto = g_hash_table_lookup(dcerpc_uuids, &key))) {
return NULL;
}
return sub_proto->procs;
@@ -917,37 +925,37 @@ dcerpc_get_proto_sub_dissector(e_uuid_t *uuid, guint16 ver)
* Note that we always specify a SMB FID. For non-SMB transports this
* value is 0.
*/
-static GHashTable *dcerpc_binds=NULL;
+static GHashTable *dcerpc_binds = NULL;
typedef struct _dcerpc_bind_key {
conversation_t *conv;
- guint16 ctx_id;
- guint16 smb_fid;
+ guint16 ctx_id;
+ guint16 smb_fid;
} dcerpc_bind_key;
typedef struct _dcerpc_bind_value {
e_uuid_t uuid;
- guint16 ver;
+ guint16 ver;
e_uuid_t transport;
} dcerpc_bind_value;
static gint
-dcerpc_bind_equal (gconstpointer k1, gconstpointer k2)
+dcerpc_bind_equal(gconstpointer k1, gconstpointer k2)
{
const dcerpc_bind_key *key1 = (const dcerpc_bind_key *)k1;
const dcerpc_bind_key *key2 = (const dcerpc_bind_key *)k2;
- return (key1->conv == key2->conv
- && key1->ctx_id == key2->ctx_id
- && key1->smb_fid == key2->smb_fid);
+ return ((key1->conv == key2->conv)
+ && (key1->ctx_id == key2->ctx_id)
+ && (key1->smb_fid == key2->smb_fid));
}
static guint
-dcerpc_bind_hash (gconstpointer k)
+dcerpc_bind_hash(gconstpointer k)
{
const dcerpc_bind_key *key = (const dcerpc_bind_key *)k;
guint hash;
- hash=GPOINTER_TO_UINT(key->conv) + key->ctx_id + key->smb_fid;
+ hash = GPOINTER_TO_UINT(key->conv) + key->ctx_id + key->smb_fid;
return hash;
}
@@ -956,8 +964,8 @@ dcerpc_bind_hash (gconstpointer k)
* To keep track of callid mappings. Should really use some generic
* conversation support instead.
*/
-static GHashTable *dcerpc_cn_calls=NULL;
-static GHashTable *dcerpc_dg_calls=NULL;
+static GHashTable *dcerpc_cn_calls = NULL;
+static GHashTable *dcerpc_dg_calls = NULL;
typedef struct _dcerpc_cn_call_key {
conversation_t *conv;
@@ -967,48 +975,48 @@ typedef struct _dcerpc_cn_call_key {
typedef struct _dcerpc_dg_call_key {
conversation_t *conv;
- guint32 seqnum;
- e_uuid_t act_id ;
+ guint32 seqnum;
+ e_uuid_t act_id ;
} dcerpc_dg_call_key;
static gint
-dcerpc_cn_call_equal (gconstpointer k1, gconstpointer k2)
+dcerpc_cn_call_equal(gconstpointer k1, gconstpointer k2)
{
const dcerpc_cn_call_key *key1 = (const dcerpc_cn_call_key *)k1;
const dcerpc_cn_call_key *key2 = (const dcerpc_cn_call_key *)k2;
- return (key1->conv == key2->conv
- && key1->call_id == key2->call_id
- && key1->smb_fid == key2->smb_fid);
+ return ((key1->conv == key2->conv)
+ && (key1->call_id == key2->call_id)
+ && (key1->smb_fid == key2->smb_fid));
}
static gint
-dcerpc_dg_call_equal (gconstpointer k1, gconstpointer k2)
+dcerpc_dg_call_equal(gconstpointer k1, gconstpointer k2)
{
const dcerpc_dg_call_key *key1 = (const dcerpc_dg_call_key *)k1;
const dcerpc_dg_call_key *key2 = (const dcerpc_dg_call_key *)k2;
- return (key1->conv == key2->conv
- && key1->seqnum == key2->seqnum
- && (memcmp (&key1->act_id, &key2->act_id, sizeof (e_uuid_t)) == 0));
+ return ((key1->conv == key2->conv)
+ && (key1->seqnum == key2->seqnum)
+ && ((memcmp(&key1->act_id, &key2->act_id, sizeof (e_uuid_t)) == 0)));
}
static guint
-dcerpc_cn_call_hash (gconstpointer k)
+dcerpc_cn_call_hash(gconstpointer k)
{
const dcerpc_cn_call_key *key = (const dcerpc_cn_call_key *)k;
return GPOINTER_TO_UINT(key->conv) + key->call_id + key->smb_fid;
}
static guint
-dcerpc_dg_call_hash (gconstpointer k)
+dcerpc_dg_call_hash(gconstpointer k)
{
const dcerpc_dg_call_key *key = (const dcerpc_dg_call_key *)k;
return (GPOINTER_TO_UINT(key->conv) + key->seqnum + key->act_id.Data1
- + (key->act_id.Data2 << 16) + key->act_id.Data3
+ + (key->act_id.Data2 << 16) + key->act_id.Data3
+ (key->act_id.Data4[0] << 24) + (key->act_id.Data4[1] << 16)
- + (key->act_id.Data4[2] << 8) + (key->act_id.Data4[3] << 0)
+ + (key->act_id.Data4[2] << 8) + (key->act_id.Data4[3] << 0)
+ (key->act_id.Data4[4] << 24) + (key->act_id.Data4[5] << 16)
- + (key->act_id.Data4[6] << 8) + (key->act_id.Data4[7] << 0));
+ + (key->act_id.Data4[6] << 8) + (key->act_id.Data4[7] << 0));
}
/* to keep track of matched calls/responses
@@ -1018,7 +1026,7 @@ dcerpc_dg_call_hash (gconstpointer k)
XXX - why not just use the same keys as are used for calls?
*/
-static GHashTable *dcerpc_matched=NULL;
+static GHashTable *dcerpc_matched = NULL;
typedef struct _dcerpc_matched_key {
guint32 frame;
@@ -1026,16 +1034,16 @@ typedef struct _dcerpc_matched_key {
} dcerpc_matched_key;
static gint
-dcerpc_matched_equal (gconstpointer k1, gconstpointer k2)
+dcerpc_matched_equal(gconstpointer k1, gconstpointer k2)
{
const dcerpc_matched_key *key1 = (const dcerpc_matched_key *)k1;
const dcerpc_matched_key *key2 = (const dcerpc_matched_key *)k2;
- return (key1->frame == key2->frame
- && key1->call_id == key2->call_id);
+ return ((key1->frame == key2->frame)
+ && (key1->call_id == key2->call_id));
}
static guint
-dcerpc_matched_hash (gconstpointer k)
+dcerpc_matched_hash(gconstpointer k)
{
const dcerpc_matched_key *key = (const dcerpc_matched_key *)k;
return key->frame;
@@ -1048,15 +1056,15 @@ dcerpc_matched_hash (gconstpointer k)
*/
int
-dissect_dcerpc_uint8 (tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
- proto_tree *tree, guint8 *drep,
- int hfindex, guint8 *pdata)
+dissect_dcerpc_uint8(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
+ proto_tree *tree, guint8 *drep,
+ int hfindex, guint8 *pdata)
{
guint8 data;
- data = tvb_get_guint8 (tvb, offset);
+ data = tvb_get_guint8(tvb, offset);
if (tree) {
- proto_tree_add_item (tree, hfindex, tvb, offset, 1, DREP_ENC_INTEGER(drep));
+ proto_tree_add_item(tree, hfindex, tvb, offset, 1, DREP_ENC_INTEGER(drep));
}
if (pdata)
*pdata = data;
@@ -1064,18 +1072,18 @@ dissect_dcerpc_uint8 (tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
}
int
-dissect_dcerpc_uint16 (tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
- proto_tree *tree, guint8 *drep,
- int hfindex, guint16 *pdata)
+dissect_dcerpc_uint16(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
+ proto_tree *tree, guint8 *drep,
+ int hfindex, guint16 *pdata)
{
guint16 data;
data = ((drep[0] & DREP_LITTLE_ENDIAN)
- ? tvb_get_letohs (tvb, offset)
- : tvb_get_ntohs (tvb, offset));
+ ? tvb_get_letohs(tvb, offset)
+ : tvb_get_ntohs(tvb, offset));
if (tree) {
- proto_tree_add_item (tree, hfindex, tvb, offset, 2, DREP_ENC_INTEGER(drep));
+ proto_tree_add_item(tree, hfindex, tvb, offset, 2, DREP_ENC_INTEGER(drep));
}
if (pdata)
*pdata = data;
@@ -1083,18 +1091,18 @@ dissect_dcerpc_uint16 (tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
}
int
-dissect_dcerpc_uint32 (tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
- proto_tree *tree, guint8 *drep,
- int hfindex, guint32 *pdata)
+dissect_dcerpc_uint32(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
+ proto_tree *tree, guint8 *drep,
+ int hfindex, guint32 *pdata)
{
guint32 data;
data = ((drep[0] & DREP_LITTLE_ENDIAN)
- ? tvb_get_letohl (tvb, offset)
- : tvb_get_ntohl (tvb, offset));
+ ? tvb_get_letohl(tvb, offset)
+ : tvb_get_ntohl(tvb, offset));
if (tree) {
- proto_tree_add_item (tree, hfindex, tvb, offset, 4, DREP_ENC_INTEGER(drep));
+ proto_tree_add_item(tree, hfindex, tvb, offset, 4, DREP_ENC_INTEGER(drep));
}
if (pdata)
*pdata = data;
@@ -1103,25 +1111,25 @@ dissect_dcerpc_uint32 (tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
/* handles 32 bit unix time_t */
int
-dissect_dcerpc_time_t (tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
- proto_tree *tree, guint8 *drep,
- int hfindex, guint32 *pdata)
+dissect_dcerpc_time_t(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
+ proto_tree *tree, guint8 *drep,
+ int hfindex, guint32 *pdata)
{
guint32 data;
nstime_t tv;
data = ((drep[0] & DREP_LITTLE_ENDIAN)
- ? tvb_get_letohl (tvb, offset)
- : tvb_get_ntohl (tvb, offset));
+ ? tvb_get_letohl(tvb, offset)
+ : tvb_get_ntohl(tvb, offset));
- tv.secs=data;
- tv.nsecs=0;
+ tv.secs = data;
+ tv.nsecs = 0;
if (tree) {
- if(data==0xffffffff){
+ if (data == 0xffffffff) {
/* special case, no time specified */
proto_tree_add_time_format_value(tree, hfindex, tvb, offset, 4, &tv, "No time specified");
} else {
- proto_tree_add_time (tree, hfindex, tvb, offset, 4, &tv);
+ proto_tree_add_time(tree, hfindex, tvb, offset, 4, &tv);
}
}
if (pdata)
@@ -1131,15 +1139,15 @@ dissect_dcerpc_time_t (tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
}
int
-dissect_dcerpc_uint64 (tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
- proto_tree *tree, guint8 *drep,
- int hfindex, guint64 *pdata)
+dissect_dcerpc_uint64(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
+ proto_tree *tree, guint8 *drep,
+ int hfindex, guint64 *pdata)
{
guint64 data;
data = ((drep[0] & DREP_LITTLE_ENDIAN)
- ? tvb_get_letoh64 (tvb, offset)
- : tvb_get_ntoh64 (tvb, offset));
+ ? tvb_get_letoh64(tvb, offset)
+ : tvb_get_ntoh64(tvb, offset));
if (tree) {
header_field_info *hfinfo;
@@ -1150,7 +1158,7 @@ dissect_dcerpc_uint64 (tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
*/
hfinfo = proto_registrar_get_nth(hfindex);
- switch(hfinfo->type) {
+ switch (hfinfo->type) {
case FT_UINT64:
proto_tree_add_uint64(tree, hfindex, tvb, offset, 8, data);
break;
@@ -1158,7 +1166,7 @@ dissect_dcerpc_uint64 (tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
proto_tree_add_int64(tree, hfindex, tvb, offset, 8, data);
break;
default:
- DISSECTOR_ASSERT(data<=G_MAXUINT32);
+ DISSECTOR_ASSERT(data <= G_MAXUINT32);
proto_tree_add_uint(tree, hfindex, tvb, offset, 8, (guint32)data);
}
}
@@ -1176,7 +1184,7 @@ dissect_dcerpc_float(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
gfloat data;
- switch(drep[1]) {
+ switch (drep[1]) {
case(DCE_RPC_DREP_FP_IEEE):
data = ((drep[0] & DREP_LITTLE_ENDIAN)
? tvb_get_letohieee_float(tvb, offset)
@@ -1210,7 +1218,7 @@ dissect_dcerpc_double(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
gdouble data;
- switch(drep[1]) {
+ switch (drep[1]) {
case(DCE_RPC_DREP_FP_IEEE):
data = ((drep[0] & DREP_LITTLE_ENDIAN)
? tvb_get_letohieee_double(tvb, offset)
@@ -1237,17 +1245,17 @@ dissect_dcerpc_double(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
int
-dissect_dcerpc_uuid_t (tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
- proto_tree *tree, guint8 *drep,
- int hfindex, e_uuid_t *pdata)
+dissect_dcerpc_uuid_t(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
+ proto_tree *tree, guint8 *drep,
+ int hfindex, e_uuid_t *pdata)
{
e_uuid_t uuid;
if (drep[0] & DREP_LITTLE_ENDIAN) {
- tvb_get_letohguid (tvb, offset, (e_guid_t *) &uuid);
+ tvb_get_letohguid(tvb, offset, (e_guid_t *) &uuid);
} else {
- tvb_get_ntohguid (tvb, offset, (e_guid_t *) &uuid);
+ tvb_get_ntohguid(tvb, offset, (e_guid_t *) &uuid);
}
if (tree) {
proto_tree_add_guid(tree, hfindex, tvb, offset, 16, (e_guid_t *) &uuid);
@@ -1263,32 +1271,32 @@ dissect_dcerpc_uuid_t (tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
* a couple simpler things
*/
guint16
-dcerpc_tvb_get_ntohs (tvbuff_t *tvb, gint offset, guint8 *drep)
+dcerpc_tvb_get_ntohs(tvbuff_t *tvb, gint offset, guint8 *drep)
{
if (drep[0] & DREP_LITTLE_ENDIAN) {
- return tvb_get_letohs (tvb, offset);
+ return tvb_get_letohs(tvb, offset);
} else {
- return tvb_get_ntohs (tvb, offset);
+ return tvb_get_ntohs(tvb, offset);
}
}
guint32
-dcerpc_tvb_get_ntohl (tvbuff_t *tvb, gint offset, guint8 *drep)
+dcerpc_tvb_get_ntohl(tvbuff_t *tvb, gint offset, guint8 *drep)
{
if (drep[0] & DREP_LITTLE_ENDIAN) {
- return tvb_get_letohl (tvb, offset);
+ return tvb_get_letohl(tvb, offset);
} else {
- return tvb_get_ntohl (tvb, offset);
+ return tvb_get_ntohl(tvb, offset);
}
}
void
-dcerpc_tvb_get_uuid (tvbuff_t *tvb, gint offset, guint8 *drep, e_uuid_t *uuid)
+dcerpc_tvb_get_uuid(tvbuff_t *tvb, gint offset, guint8 *drep, e_uuid_t *uuid)
{
if (drep[0] & DREP_LITTLE_ENDIAN) {
- tvb_get_letohguid (tvb, offset, (e_guid_t *) uuid);
+ tvb_get_letohguid(tvb, offset, (e_guid_t *) uuid);
} else {
- tvb_get_ntohguid (tvb, offset, (e_guid_t *) uuid);
+ tvb_get_ntohguid(tvb, offset, (e_guid_t *) uuid);
}
}
@@ -1300,35 +1308,35 @@ dissect_ndr_ucarray(tvbuff_t *tvb, gint offset, packet_info *pinfo,
proto_tree *tree, guint8 *drep,
dcerpc_dissect_fnct_t *fnct)
{
- guint32 i;
+ guint32 i;
dcerpc_info *di;
- int old_offset;
- int conformance_size = 4;
+ int old_offset;
+ int conformance_size = 4;
- di=pinfo->private_data;
+ di = pinfo->private_data;
if (di->call_data->flags & DCERPC_IS_NDR64) {
conformance_size = 8;
}
- if(di->conformant_run){
+ if (di->conformant_run) {
guint64 val;
/* conformant run, just dissect the max_count header */
- old_offset=offset;
- di->conformant_run=0;
- offset = dissect_ndr_uint3264 (tvb, offset, pinfo, tree, drep,
+ old_offset = offset;
+ di->conformant_run = 0;
+ offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, drep,
hf_dcerpc_array_max_count, &val);
di->array_max_count = (gint32)val;
- di->array_max_count_offset=offset-conformance_size;
- di->conformant_run=1;
- di->conformant_eaten=offset-old_offset;
+ di->array_max_count_offset = offset-conformance_size;
+ di->conformant_run = 1;
+ di->conformant_eaten = offset-old_offset;
} else {
/* we don't remember where in the bytestream this field was */
proto_tree_add_uint(tree, hf_dcerpc_array_max_count, tvb, di->array_max_count_offset, conformance_size, di->array_max_count);
/* real run, dissect the elements */
- for(i=0;i<di->array_max_count;i++){
+ for(i=0; i<di->array_max_count; i++) {
offset = (*fnct)(tvb, offset, pinfo, tree, drep);
}
}
@@ -1341,40 +1349,40 @@ dissect_ndr_ucvarray(tvbuff_t *tvb, gint offset, packet_info *pinfo,
proto_tree *tree, guint8 *drep,
dcerpc_dissect_fnct_t *fnct)
{
- guint32 i;
+ guint32 i;
dcerpc_info *di;
- int old_offset;
- int conformance_size = 4;
+ int old_offset;
+ int conformance_size = 4;
- di=pinfo->private_data;
+ di = pinfo->private_data;
if (di->call_data->flags & DCERPC_IS_NDR64) {
conformance_size = 8;
}
- if(di->conformant_run){
+ if (di->conformant_run) {
guint64 val;
/* conformant run, just dissect the max_count header */
- old_offset=offset;
- di->conformant_run=0;
- offset = dissect_ndr_uint3264 (tvb, offset, pinfo, tree, drep,
+ old_offset = offset;
+ di->conformant_run = 0;
+ offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, drep,
hf_dcerpc_array_max_count, &val);
- DISSECTOR_ASSERT(val<=G_MAXUINT32);
+ DISSECTOR_ASSERT(val <= G_MAXUINT32);
di->array_max_count = (guint32)val;
- di->array_max_count_offset=offset-conformance_size;
- offset = dissect_ndr_uint3264 (tvb, offset, pinfo, tree, drep,
+ di->array_max_count_offset = offset-conformance_size;
+ offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, drep,
hf_dcerpc_array_offset, &val);
- DISSECTOR_ASSERT(val<=G_MAXUINT32);
+ DISSECTOR_ASSERT(val <= G_MAXUINT32);
di->array_offset = (guint32)val;
- di->array_offset_offset=offset-conformance_size;
- offset = dissect_ndr_uint3264 (tvb, offset, pinfo, tree, drep,
+ di->array_offset_offset = offset-conformance_size;
+ offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, drep,
hf_dcerpc_array_actual_count, &val);
- DISSECTOR_ASSERT(val<=G_MAXUINT32);
- di->array_actual_count=(guint32)val;
- di->array_actual_count_offset=offset-conformance_size;
- di->conformant_run=1;
- di->conformant_eaten=offset-old_offset;
+ DISSECTOR_ASSERT(val <= G_MAXUINT32);
+ di->array_actual_count = (guint32)val;
+ di->array_actual_count_offset = offset-conformance_size;
+ di->conformant_run = 1;
+ di->conformant_eaten = offset-old_offset;
} else {
/* we don't remember where in the bytestream these fields were */
proto_tree_add_uint(tree, hf_dcerpc_array_max_count, tvb, di->array_max_count_offset, conformance_size, di->array_max_count);
@@ -1382,7 +1390,7 @@ dissect_ndr_ucvarray(tvbuff_t *tvb, gint offset, packet_info *pinfo,
proto_tree_add_uint(tree, hf_dcerpc_array_actual_count, tvb, di->array_actual_count_offset, conformance_size, di->array_actual_count);
/* real run, dissect the elements */
- for(i=0;i<di->array_actual_count;i++){
+ for(i=0 ;i<di->array_actual_count; i++) {
old_offset = offset;
offset = (*fnct)(tvb, offset, pinfo, tree, drep);
if (offset <= old_offset)
@@ -1398,42 +1406,42 @@ dissect_ndr_uvarray(tvbuff_t *tvb, gint offset, packet_info *pinfo,
proto_tree *tree, guint8 *drep,
dcerpc_dissect_fnct_t *fnct)
{
- guint32 i;
+ guint32 i;
dcerpc_info *di;
- int old_offset;
- int conformance_size = 4;
+ int old_offset;
+ int conformance_size = 4;
- di=pinfo->private_data;
+ di = pinfo->private_data;
if (di->call_data->flags & DCERPC_IS_NDR64) {
conformance_size = 8;
}
- if(di->conformant_run){
+ if (di->conformant_run) {
guint64 val;
/* conformant run, just dissect the max_count header */
- old_offset=offset;
- di->conformant_run=0;
- offset = dissect_ndr_uint3264 (tvb, offset, pinfo, tree, drep,
+ old_offset = offset;
+ di->conformant_run = 0;
+ offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, drep,
hf_dcerpc_array_offset, &val);
- DISSECTOR_ASSERT(val<=G_MAXUINT32);
- di->array_offset=(guint32)val;
- di->array_offset_offset=offset-conformance_size;
- offset = dissect_ndr_uint3264 (tvb, offset, pinfo, tree, drep,
+ DISSECTOR_ASSERT(val <= G_MAXUINT32);
+ di->array_offset = (guint32)val;
+ di->array_offset_offset = offset-conformance_size;
+ offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, drep,
hf_dcerpc_array_actual_count, &val);
- DISSECTOR_ASSERT(val<=G_MAXUINT32);
- di->array_actual_count=(guint32)val;
- di->array_actual_count_offset=offset-conformance_size;
- di->conformant_run=1;
- di->conformant_eaten=offset-old_offset;
+ DISSECTOR_ASSERT(val <= G_MAXUINT32);
+ di->array_actual_count = (guint32)val;
+ di->array_actual_count_offset = offset-conformance_size;
+ di->conformant_run = 1;
+ di->conformant_eaten = offset-old_offset;
} else {
/* we don't remember where in the bytestream these fields were */
proto_tree_add_uint(tree, hf_dcerpc_array_offset, tvb, di->array_offset_offset, conformance_size, di->array_offset);
proto_tree_add_uint(tree, hf_dcerpc_array_actual_count, tvb, di->array_actual_count_offset, conformance_size, di->array_actual_count);
/* real run, dissect the elements */
- for(i=0;i<di->array_actual_count;i++){
+ for(i=0; i<di->array_actual_count; i++) {
offset = (*fnct)(tvb, offset, pinfo, tree, drep);
}
}
@@ -1449,7 +1457,7 @@ dissect_ndr_uvarray(tvbuff_t *tvb, gint offset, packet_info *pinfo,
than showing each byte as an individual element.
XXX - which of those is really the IDL type for, for example,
- the encrypted data in some MAPI packets? (Microsoft haven't
+ the encrypted data in some MAPI packets? (Microsoft hasn't
released that IDL.)
XXX - does this need to do all the conformant array stuff that
@@ -1461,10 +1469,10 @@ dissect_ndr_byte_array(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree, guint8 *drep)
{
dcerpc_info *di;
- guint64 len;
+ guint64 len;
- di=pinfo->private_data;
- if(di->conformant_run){
+ di = pinfo->private_data;
+ if (di->conformant_run) {
/* just a run to handle conformant arrays, no scalars to dissect */
return offset;
}
@@ -1480,7 +1488,7 @@ dissect_ndr_byte_array(tvbuff_t *tvb, int offset, packet_info *pinfo,
offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, drep,
hf_dcerpc_array_actual_count, &len);
- DISSECTOR_ASSERT(len<=G_MAXUINT32);
+ DISSECTOR_ASSERT(len <= G_MAXUINT32);
if (tree && len) {
tvb_ensure_bytes_exist(tvb, offset, (guint32)len);
proto_tree_add_item(tree, hf_dcerpc_array_buffer,
@@ -1505,16 +1513,16 @@ dissect_ndr_cvstring(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree, guint8 *drep, int size_is,
int hfindex, gboolean add_subtree, char **data)
{
- dcerpc_info *di;
- proto_item *string_item;
- proto_tree *string_tree;
- guint64 len;
- guint32 buffer_len;
- char *s;
+ dcerpc_info *di;
+ proto_item *string_item;
+ proto_tree *string_tree;
+ guint64 len;
+ guint32 buffer_len;
+ char *s;
header_field_info *hfinfo;
- di=pinfo->private_data;
- if(di->conformant_run){
+ di = pinfo->private_data;
+ if (di->conformant_run) {
/* just a run to handle conformant arrays, no scalars to dissect */
return offset;
}
@@ -1539,7 +1547,7 @@ dissect_ndr_cvstring(tvbuff_t *tvb, int offset, packet_info *pinfo,
offset = dissect_ndr_uint3264(tvb, offset, pinfo, string_tree, drep,
hf_dcerpc_array_actual_count, &len);
- DISSECTOR_ASSERT(len<=G_MAXUINT32);
+ DISSECTOR_ASSERT(len <= G_MAXUINT32);
buffer_len = size_is * (guint32)len;
/* Adjust offset */
@@ -1576,7 +1584,7 @@ dissect_ndr_cvstring(tvbuff_t *tvb, int offset, packet_info *pinfo,
*
* XXX - if this is an octet string, does the byte order
* matter? Will this ever be anything *other* than an
- * octet string? What if size_is is neither 1 nor 2?
+ * octet string? What if size_is is neither 1 nor 2?
*/
tvb_ensure_bytes_exist(tvb, offset, buffer_len);
s = tvb_get_ephemeral_string(tvb, offset, buffer_len);
@@ -1612,7 +1620,7 @@ dissect_ndr_char_cvstring(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree, guint8 *drep)
{
dcerpc_info *di;
- di=pinfo->private_data;
+ di = pinfo->private_data;
return dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep,
sizeof(guint8), di->hf_index,
@@ -1633,7 +1641,7 @@ dissect_ndr_wchar_cvstring(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree, guint8 *drep)
{
dcerpc_info *di;
- di=pinfo->private_data;
+ di = pinfo->private_data;
return dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep,
sizeof(guint16), di->hf_index,
@@ -1647,28 +1655,28 @@ int
PIDL_dissect_cvstring(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep, int chsize, int hfindex, guint32 param)
{
dcerpc_info *di;
- char *s = NULL;
- gint levels = CB_STR_ITEM_LEVELS(param);
+ char *s = NULL;
+ gint levels = CB_STR_ITEM_LEVELS(param);
- di=pinfo->private_data;
+ di = pinfo->private_data;
offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep,
chsize, hfindex,
FALSE, &s);
- if(!di->conformant_run){
+ if (!di->conformant_run) {
/* Append string to COL_INFO */
if (param & PIDL_SET_COL_INFO) {
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s", s);
}
/* Save string to dcv->private_data */
- if((param & PIDL_STR_SAVE)
- && (!pinfo->fd->flags.visited)){
+ if ((param & PIDL_STR_SAVE)
+ && (!pinfo->fd->flags.visited)) {
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
dcv->private_data = se_strdup(s);
}
/* Append string to upper-level proto_items */
- if (levels > 0 && tree && s && s[0]) {
+ if ((levels > 0) && tree && s && s[0]) {
proto_item_append_text(tree, ": %s", s);
tree = tree->parent;
levels--;
@@ -1699,16 +1707,16 @@ dissect_ndr_vstring(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree, guint8 *drep, int size_is,
int hfindex, gboolean add_subtree, char **data)
{
- dcerpc_info *di;
- proto_item *string_item;
- proto_tree *string_tree;
- guint64 len;
- guint32 buffer_len;
- char *s;
+ dcerpc_info *di;
+ proto_item *string_item;
+ proto_tree *string_tree;
+ guint64 len;
+ guint32 buffer_len;
+ char *s;
header_field_info *hfinfo;
- di=pinfo->private_data;
- if(di->conformant_run){
+ di = pinfo->private_data;
+ if (di->conformant_run) {
/* just a run to handle conformant arrays, no scalars to dissect */
return offset;
}
@@ -1729,7 +1737,7 @@ dissect_ndr_vstring(tvbuff_t *tvb, int offset, packet_info *pinfo,
offset = dissect_ndr_uint3264(tvb, offset, pinfo, string_tree, drep,
hf_dcerpc_array_actual_count, &len);
- DISSECTOR_ASSERT(len<=G_MAXUINT32);
+ DISSECTOR_ASSERT(len <= G_MAXUINT32);
buffer_len = size_is * (guint32)len;
/* Adjust offset */
@@ -1766,7 +1774,7 @@ dissect_ndr_vstring(tvbuff_t *tvb, int offset, packet_info *pinfo,
*
* XXX - if this is an octet string, does the byte order
* matter? Will this ever be anything *other* than an
- * octet string? What if size_is is neither 1 nor 2?
+ * octet string? What if size_is is neither 1 nor 2?
*/
tvb_ensure_bytes_exist(tvb, offset, buffer_len);
s = tvb_get_ephemeral_string(tvb, offset, buffer_len);
@@ -1802,7 +1810,7 @@ dissect_ndr_char_vstring(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree, guint8 *drep)
{
dcerpc_info *di;
- di=pinfo->private_data;
+ di = pinfo->private_data;
return dissect_ndr_vstring(tvb, offset, pinfo, tree, drep,
sizeof(guint8), di->hf_index,
@@ -1823,7 +1831,7 @@ dissect_ndr_wchar_vstring(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree, guint8 *drep)
{
dcerpc_info *di;
- di=pinfo->private_data;
+ di = pinfo->private_data;
return dissect_ndr_vstring(tvb, offset, pinfo, tree, drep,
sizeof(guint16), di->hf_index,
@@ -1836,21 +1844,21 @@ dissect_ndr_wchar_vstring(tvbuff_t *tvb, int offset, packet_info *pinfo,
static GSList *ndr_pointer_list = NULL;
/* position where in the list to insert newly encountered pointers */
-static int ndr_pointer_list_pos=0;
+static int ndr_pointer_list_pos = 0;
/* Boolean controlling whether pointers are top-level or embedded */
static gboolean pointers_are_top_level = TRUE;
-/* as a kludge, we represent all embedded reference pointers as id==-1
+/* as a kludge, we represent all embedded reference pointers as id == -1
hoping that his will not collide with any non-ref pointers */
typedef struct ndr_pointer_data {
- guint32 id;
- proto_item *item; /* proto_item for pointer */
- proto_tree *tree; /* subtree of above item */
- dcerpc_dissect_fnct_t *fnct; /*if non-NULL, we have not called it yet*/
- int hf_index;
+ guint32 id;
+ proto_item *item; /* proto_item for pointer */
+ proto_tree *tree; /* subtree of above item */
+ dcerpc_dissect_fnct_t *fnct; /*if non-NULL, we have not called it yet*/
+ int hf_index;
dcerpc_callback_fnct_t *callback;
- void *callback_args;
+ void *callback_args;
} ndr_pointer_data_t;
void
@@ -1858,57 +1866,57 @@ init_ndr_pointer_list(packet_info *pinfo)
{
dcerpc_info *di;
- di=pinfo->private_data;
- di->conformant_run=0;
+ di = pinfo->private_data;
+ di->conformant_run = 0;
- while(ndr_pointer_list){
+ while (ndr_pointer_list) {
ndr_pointer_data_t *npd;
- npd=g_slist_nth_data(ndr_pointer_list, 0);
- ndr_pointer_list=g_slist_remove(ndr_pointer_list, npd);
+ npd = g_slist_nth_data(ndr_pointer_list, 0);
+ ndr_pointer_list = g_slist_remove(ndr_pointer_list, npd);
g_free(npd);
}
- ndr_pointer_list=NULL;
- ndr_pointer_list_pos=0;
- pointers_are_top_level=TRUE;
+ ndr_pointer_list = NULL;
+ ndr_pointer_list_pos = 0;
+ pointers_are_top_level = TRUE;
}
int
dissect_deferred_pointers(packet_info *pinfo, tvbuff_t *tvb, int offset, guint8 *drep)
{
- int found_new_pointer;
+ int found_new_pointer;
dcerpc_info *di;
- int old_offset;
- int next_pointer;
+ int old_offset;
+ int next_pointer;
- next_pointer=0;
- di=pinfo->private_data;
+ next_pointer = 0;
+ di = pinfo->private_data;
do{
int i, len;
- found_new_pointer=0;
- len=g_slist_length(ndr_pointer_list);
- for(i=next_pointer;i<len;i++){
+ found_new_pointer = 0;
+ len = g_slist_length(ndr_pointer_list);
+ for(i=next_pointer; i<len; i++) {
ndr_pointer_data_t *tnpd;
- tnpd=g_slist_nth_data(ndr_pointer_list, i);
- if(tnpd->fnct){
+ tnpd = g_slist_nth_data(ndr_pointer_list, i);
+ if (tnpd->fnct) {
dcerpc_dissect_fnct_t *fnct;
- next_pointer=i+1;
- found_new_pointer=1;
- fnct=tnpd->fnct;
- tnpd->fnct=NULL;
- ndr_pointer_list_pos=i+1;
- di->hf_index=tnpd->hf_index;
+ next_pointer = i+1;
+ found_new_pointer = 1;
+ fnct = tnpd->fnct;
+ tnpd->fnct = NULL;
+ ndr_pointer_list_pos = i+1;
+ di->hf_index = tnpd->hf_index;
/* first a run to handle any conformant
array headers */
- di->conformant_run=1;
- di->conformant_eaten=0;
+ di->conformant_run = 1;
+ di->conformant_eaten = 0;
old_offset = offset;
offset = (*(fnct))(tvb, offset, pinfo, NULL, drep);
- DISSECTOR_ASSERT((offset-old_offset)==di->conformant_eaten);
+ DISSECTOR_ASSERT((offset-old_offset) == di->conformant_eaten);
/* This is to check for any bugs in the dissectors.
*
* Basically, the NDR representation will store all
@@ -1924,12 +1932,12 @@ dissect_deferred_pointers(packet_info *pinfo, tvbuff_t *tvb, int offset, guint8
* For this reason, all pointers to types (both aggregate
* and scalar, for simplicity no distinction is made)
* will have its dissector called twice.
- * The dissector will first be called with conformant_run==1
+ * The dissector will first be called with conformant_run == 1
* in which mode the dissector MUST NOT consume any data from
* the tvbuff (i.e. may not dissect anything) except the
* initial control block for arrays.
* The second time the dissector is called, with
- * conformant_run==0, all other data for the type will be
+ * conformant_run == 0, all other data for the type will be
* dissected.
*
* All dissect_ndr_<type> dissectors are already prepared
@@ -1945,8 +1953,8 @@ dissect_deferred_pointers(packet_info *pinfo, tvbuff_t *tvb, int offset, guint8
*
* dcerpc_info *di;
*
- * di=pinfo->private_data;
- * if(di->conformant_run){
+ * di = pinfo->private_data;
+ * if (di->conformant_run) {
* return offset;
* }
*
@@ -1956,7 +1964,7 @@ dissect_deferred_pointers(packet_info *pinfo, tvbuff_t *tvb, int offset, guint8
*/
/* now we dissect the actual pointer */
- di->conformant_run=0;
+ di->conformant_run = 0;
old_offset = offset;
offset = (*(fnct))(tvb, offset, pinfo, tnpd->tree, drep);
if (tnpd->callback)
@@ -1964,7 +1972,7 @@ dissect_deferred_pointers(packet_info *pinfo, tvbuff_t *tvb, int offset, guint8
break;
}
}
- } while(found_new_pointer);
+ } while (found_new_pointer);
return offset;
}
@@ -1978,43 +1986,43 @@ add_pointer_to_list(packet_info *pinfo, proto_tree *tree, proto_item *item,
ndr_pointer_data_t *npd;
/* check if this pointer is valid */
- if(id!=0xffffffff){
+ if (id != 0xffffffff) {
dcerpc_info *di;
dcerpc_call_value *value;
- di=pinfo->private_data;
- value=di->call_data;
+ di = pinfo->private_data;
+ value = di->call_data;
- if(di->ptype == PDU_REQ){
- if(!(pinfo->fd->flags.visited)){
- if(id>value->max_ptr){
- value->max_ptr=id;
+ if (di->ptype == PDU_REQ) {
+ if (!(pinfo->fd->flags.visited)) {
+ if (id > value->max_ptr) {
+ value->max_ptr = id;
}
}
} else {
/* if we haven't seen the request bail out since we cant
know whether this is the first non-NULL instance
or not */
- if(value->req_frame==0){
+ if (value->req_frame == 0) {
/* XXX THROW EXCEPTION */
}
/* We saw this one in the request frame, nothing to
dissect later */
- if(id<=value->max_ptr){
+ if (id <= value->max_ptr) {
return;
}
}
}
- npd=g_malloc(sizeof(ndr_pointer_data_t));
- npd->id=id;
- npd->tree=tree;
- npd->item=item;
- npd->fnct=fnct;
- npd->hf_index=hf_index;
- npd->callback=callback;
- npd->callback_args=callback_args;
+ npd = g_malloc(sizeof(ndr_pointer_data_t));
+ npd->id = id;
+ npd->tree = tree;
+ npd->item = item;
+ npd->fnct = fnct;
+ npd->hf_index = hf_index;
+ npd->callback = callback;
+ npd->callback_args = callback_args;
ndr_pointer_list = g_slist_insert(ndr_pointer_list, npd,
ndr_pointer_list_pos);
ndr_pointer_list_pos++;
@@ -2025,13 +2033,13 @@ static int
find_pointer_index(guint32 id)
{
ndr_pointer_data_t *npd;
- int i,len;
+ int i,len;
- len=g_slist_length(ndr_pointer_list);
- for(i=0;i<len;i++){
- npd=g_slist_nth_data(ndr_pointer_list, i);
- if(npd){
- if(npd->id==id){
+ len = g_slist_length(ndr_pointer_list);
+ for(i=0; i<len; i++) {
+ npd = g_slist_nth_data(ndr_pointer_list, i);
+ if (npd) {
+ if (npd->id == id) {
return i;
}
}
@@ -2066,12 +2074,12 @@ dissect_ndr_pointer_cb(tvbuff_t *tvb, gint offset, packet_info *pinfo,
dcerpc_callback_fnct_t *callback, void *callback_args)
{
dcerpc_info *di;
- proto_tree *tr = NULL;
- gint start_offset = offset;
- int pointer_size = 4;
+ proto_tree *tr = NULL;
+ gint start_offset = offset;
+ int pointer_size = 4;
- di=pinfo->private_data;
- if(di->conformant_run){
+ di = pinfo->private_data;
+ if (di->conformant_run) {
/* this call was only for dissecting the header for any
embedded conformant array. we will not parse any
pointers in this mode.
@@ -2084,14 +2092,14 @@ dissect_ndr_pointer_cb(tvbuff_t *tvb, gint offset, packet_info *pinfo,
/*TOP LEVEL REFERENCE POINTER*/
- if( pointers_are_top_level
- &&(type==NDR_POINTER_REF) ){
+ if ( pointers_are_top_level
+ && (type == NDR_POINTER_REF) ) {
proto_item *item;
/* we must find out a nice way to do the length here */
- item=proto_tree_add_text(tree, tvb, offset, 0,
- "%s", text);
- tr=proto_item_add_subtree(item,ett_dcerpc_pointer_data);
+ item = proto_tree_add_text(tree, tvb, offset, 0,
+ "%s", text);
+ tr = proto_item_add_subtree(item,ett_dcerpc_pointer_data);
add_pointer_to_list(pinfo, tr, item, fnct, 0xffffffff,
hf_index, callback, callback_args);
@@ -2099,8 +2107,8 @@ dissect_ndr_pointer_cb(tvbuff_t *tvb, gint offset, packet_info *pinfo,
}
/*TOP LEVEL FULL POINTER*/
- if( pointers_are_top_level
- && (type==NDR_POINTER_PTR) ){
+ if ( pointers_are_top_level
+ && (type == NDR_POINTER_PTR) ) {
int idx;
guint64 id;
proto_item *item;
@@ -2110,7 +2118,7 @@ dissect_ndr_pointer_cb(tvbuff_t *tvb, gint offset, packet_info *pinfo,
tvb_ensure_bytes_exist(tvb, offset-pointer_size, pointer_size);
/* we got a NULL pointer */
- if(id==0){
+ if (id == 0) {
proto_tree_add_text(tree, tvb, offset-pointer_size,
pointer_size,
"(NULL pointer) %s",text);
@@ -2118,11 +2126,11 @@ dissect_ndr_pointer_cb(tvbuff_t *tvb, gint offset, packet_info *pinfo,
}
/* see if we have seen this pointer before */
- DISSECTOR_ASSERT(id<=G_MAXUINT32);
- idx=find_pointer_index((guint32)id);
+ DISSECTOR_ASSERT(id <= G_MAXUINT32);
+ idx = find_pointer_index((guint32)id);
/* we have seen this pointer before */
- if(idx>=0){
+ if (idx >= 0) {
proto_tree_add_text(tree, tvb, offset-pointer_size,
pointer_size,
"(duplicate PTR) %s",text);
@@ -2130,10 +2138,10 @@ dissect_ndr_pointer_cb(tvbuff_t *tvb, gint offset, packet_info *pinfo,
}
/* new pointer */
- item=proto_tree_add_text(tree, tvb, offset-pointer_size,
- pointer_size,
- "%s", text);
- tr=proto_item_add_subtree(item,ett_dcerpc_pointer_data);
+ item = proto_tree_add_text(tree, tvb, offset-pointer_size,
+ pointer_size,
+ "%s", text);
+ tr = proto_item_add_subtree(item,ett_dcerpc_pointer_data);
proto_tree_add_uint(tr, hf_dcerpc_referent_id, tvb,
offset-pointer_size, pointer_size, (guint32)id);
add_pointer_to_list(pinfo, tr, item, fnct, (guint32)id, hf_index,
@@ -2141,8 +2149,8 @@ dissect_ndr_pointer_cb(tvbuff_t *tvb, gint offset, packet_info *pinfo,
goto after_ref_id;
}
/*TOP LEVEL UNIQUE POINTER*/
- if( pointers_are_top_level
- && (type==NDR_POINTER_UNIQUE) ){
+ if ( pointers_are_top_level
+ && (type == NDR_POINTER_UNIQUE) ) {
guint64 id;
proto_item *item;
@@ -2151,7 +2159,7 @@ dissect_ndr_pointer_cb(tvbuff_t *tvb, gint offset, packet_info *pinfo,
tvb_ensure_bytes_exist(tvb, offset-pointer_size, pointer_size);
/* we got a NULL pointer */
- if(id==0){
+ if (id == 0) {
proto_tree_add_text(tree, tvb, offset-pointer_size,
pointer_size,
"(NULL pointer) %s",text);
@@ -2159,11 +2167,11 @@ dissect_ndr_pointer_cb(tvbuff_t *tvb, gint offset, packet_info *pinfo,
}
/* new pointer */
- DISSECTOR_ASSERT(id<=G_MAXUINT32);
- item=proto_tree_add_text(tree, tvb, offset-pointer_size,
- pointer_size,
- "%s", text);
- tr=proto_item_add_subtree(item,ett_dcerpc_pointer_data);
+ DISSECTOR_ASSERT(id <= G_MAXUINT32);
+ item = proto_tree_add_text(tree, tvb, offset-pointer_size,
+ pointer_size,
+ "%s", text);
+ tr = proto_item_add_subtree(item,ett_dcerpc_pointer_data);
proto_tree_add_uint(tr, hf_dcerpc_referent_id, tvb,
offset-pointer_size, pointer_size, (guint32)id);
add_pointer_to_list(pinfo, tr, item, fnct, 0xffffffff,
@@ -2172,8 +2180,8 @@ dissect_ndr_pointer_cb(tvbuff_t *tvb, gint offset, packet_info *pinfo,
}
/*EMBEDDED REFERENCE POINTER*/
- if( (!pointers_are_top_level)
- && (type==NDR_POINTER_REF) ){
+ if ( (!pointers_are_top_level)
+ && (type == NDR_POINTER_REF) ) {
guint64 id;
proto_item *item;
@@ -2182,11 +2190,11 @@ dissect_ndr_pointer_cb(tvbuff_t *tvb, gint offset, packet_info *pinfo,
tvb_ensure_bytes_exist(tvb, offset-pointer_size, pointer_size);
/* new pointer */
- item=proto_tree_add_text(tree, tvb, offset-pointer_size,
+ item = proto_tree_add_text(tree, tvb, offset-pointer_size,
pointer_size,
"%s",text);
- tr=proto_item_add_subtree(item,ett_dcerpc_pointer_data);
- DISSECTOR_ASSERT(id<=G_MAXUINT32);
+ tr = proto_item_add_subtree(item,ett_dcerpc_pointer_data);
+ DISSECTOR_ASSERT(id <= G_MAXUINT32);
proto_tree_add_uint(tr, hf_dcerpc_referent_id, tvb,
offset-pointer_size, pointer_size, (guint32)id);
add_pointer_to_list(pinfo, tr, item, fnct, 0xffffffff,
@@ -2195,8 +2203,8 @@ dissect_ndr_pointer_cb(tvbuff_t *tvb, gint offset, packet_info *pinfo,
}
/*EMBEDDED UNIQUE POINTER*/
- if( (!pointers_are_top_level)
- && (type==NDR_POINTER_UNIQUE) ){
+ if ( (!pointers_are_top_level)
+ && (type == NDR_POINTER_UNIQUE) ) {
guint64 id;
proto_item *item;
@@ -2205,7 +2213,7 @@ dissect_ndr_pointer_cb(tvbuff_t *tvb, gint offset, packet_info *pinfo,
tvb_ensure_bytes_exist(tvb, offset-pointer_size, pointer_size);
/* we got a NULL pointer */
- if(id==0){
+ if (id == 0) {
proto_tree_add_text(tree, tvb, offset-pointer_size,
pointer_size,
"(NULL pointer) %s", text);
@@ -2213,11 +2221,11 @@ dissect_ndr_pointer_cb(tvbuff_t *tvb, gint offset, packet_info *pinfo,
}
/* new pointer */
- item=proto_tree_add_text(tree, tvb, offset-pointer_size,
- pointer_size,
- "%s",text);
- tr=proto_item_add_subtree(item,ett_dcerpc_pointer_data);
- DISSECTOR_ASSERT(id<=G_MAXUINT32);
+ item = proto_tree_add_text(tree, tvb, offset-pointer_size,
+ pointer_size,
+ "%s",text);
+ tr = proto_item_add_subtree(item,ett_dcerpc_pointer_data);
+ DISSECTOR_ASSERT(id <= G_MAXUINT32);
proto_tree_add_uint(tr, hf_dcerpc_referent_id, tvb,
offset-pointer_size, pointer_size, (guint32)id);
add_pointer_to_list(pinfo, tr, item, fnct, 0xffffffff,
@@ -2226,8 +2234,8 @@ dissect_ndr_pointer_cb(tvbuff_t *tvb, gint offset, packet_info *pinfo,
}
/*EMBEDDED FULL POINTER*/
- if( (!pointers_are_top_level)
- && (type==NDR_POINTER_PTR) ){
+ if ( (!pointers_are_top_level)
+ && (type == NDR_POINTER_PTR) ) {
int idx;
guint64 id;
proto_item *item;
@@ -2237,7 +2245,7 @@ dissect_ndr_pointer_cb(tvbuff_t *tvb, gint offset, packet_info *pinfo,
tvb_ensure_bytes_exist(tvb, offset-pointer_size, pointer_size);
/* we got a NULL pointer */
- if(id==0){
+ if (id == 0) {
proto_tree_add_text(tree, tvb, offset-pointer_size,
pointer_size,
"(NULL pointer) %s",text);
@@ -2245,11 +2253,11 @@ dissect_ndr_pointer_cb(tvbuff_t *tvb, gint offset, packet_info *pinfo,
}
/* see if we have seen this pointer before */
- DISSECTOR_ASSERT(id<=G_MAXUINT32);
- idx=find_pointer_index((guint32)id);
+ DISSECTOR_ASSERT(id <= G_MAXUINT32);
+ idx = find_pointer_index((guint32)id);
/* we have seen this pointer before */
- if(idx>=0){
+ if (idx >= 0) {
proto_tree_add_text(tree, tvb, offset-pointer_size,
pointer_size,
"(duplicate PTR) %s",text);
@@ -2257,10 +2265,10 @@ dissect_ndr_pointer_cb(tvbuff_t *tvb, gint offset, packet_info *pinfo,
}
/* new pointer */
- item=proto_tree_add_text(tree, tvb, offset-pointer_size,
- pointer_size,
- "%s", text);
- tr=proto_item_add_subtree(item,ett_dcerpc_pointer_data);
+ item = proto_tree_add_text(tree, tvb, offset-pointer_size,
+ pointer_size,
+ "%s", text);
+ tr = proto_item_add_subtree(item,ett_dcerpc_pointer_data);
proto_tree_add_uint(tr, hf_dcerpc_referent_id, tvb,
offset-pointer_size, pointer_size, (guint32)id);
add_pointer_to_list(pinfo, tr, item, fnct, (guint32)id, hf_index,
@@ -2273,14 +2281,14 @@ after_ref_id:
/* After each top level pointer we have dissected we have to
dissect all deferrals before we move on to the next top level
argument */
- if(pointers_are_top_level==TRUE){
- pointers_are_top_level=FALSE;
+ if (pointers_are_top_level == TRUE) {
+ pointers_are_top_level = FALSE;
offset = dissect_deferred_pointers(pinfo, tvb, offset, drep);
- pointers_are_top_level=TRUE;
+ pointers_are_top_level = TRUE;
}
/* Set the length for the new subtree */
- if (tr){
+ if (tr) {
proto_item_set_len(tr, offset-start_offset);
}
return offset;
@@ -2302,8 +2310,8 @@ dissect_ndr_toplevel_pointer(tvbuff_t *tvb, gint offset, packet_info *pinfo,
{
int ret;
- pointers_are_top_level=TRUE;
- ret=dissect_ndr_pointer_cb(
+ pointers_are_top_level = TRUE;
+ ret = dissect_ndr_pointer_cb(
tvb, offset, pinfo, tree, drep, fnct, type, text, hf_index,
NULL, NULL);
return ret;
@@ -2315,18 +2323,18 @@ dissect_ndr_embedded_pointer(tvbuff_t *tvb, gint offset, packet_info *pinfo,
{
int ret;
- pointers_are_top_level=FALSE;
- ret=dissect_ndr_pointer_cb(
+ pointers_are_top_level = FALSE;
+ ret = dissect_ndr_pointer_cb(
tvb, offset, pinfo, tree, drep, fnct, type, text, hf_index,
NULL, NULL);
return ret;
}
static void
-show_stub_data (tvbuff_t *tvb, gint offset, proto_tree *dcerpc_tree,
- dcerpc_auth_info *auth_info, gboolean is_encrypted)
+show_stub_data(tvbuff_t *tvb, gint offset, proto_tree *dcerpc_tree,
+ dcerpc_auth_info *auth_info, gboolean is_encrypted)
{
- int length, plain_length, auth_pad_len;
+ int length, plain_length, auth_pad_len;
guint auth_pad_offset;
/*
@@ -2335,9 +2343,9 @@ show_stub_data (tvbuff_t *tvb, gint offset, proto_tree *dcerpc_tree,
* bytes, the reported number of bytes, not the number of bytes
* that happen to be in the tvbuff.
*/
- if (tvb_length_remaining (tvb, offset) > 0) {
+ if (tvb_length_remaining(tvb, offset) > 0) {
auth_pad_len = auth_info?auth_info->auth_pad_len:0;
- length = tvb_reported_length_remaining (tvb, offset);
+ length = tvb_reported_length_remaining(tvb, offset);
/* if auth_pad_len is larger than length then we ignore auth_pad_len totally */
plain_length = length - auth_pad_len;
@@ -2347,8 +2355,8 @@ show_stub_data (tvbuff_t *tvb, gint offset, proto_tree *dcerpc_tree,
}
auth_pad_offset = offset + plain_length;
- if (auth_info != NULL &&
- auth_info->auth_level == DCE_C_AUTHN_LEVEL_PKT_PRIVACY) {
+ if ((auth_info != NULL) &&
+ (auth_info->auth_level == DCE_C_AUTHN_LEVEL_PKT_PRIVACY)) {
if (is_encrypted) {
tvb_ensure_bytes_exist(tvb, offset, length);
proto_tree_add_text(dcerpc_tree, tvb, offset, length,
@@ -2364,49 +2372,50 @@ show_stub_data (tvbuff_t *tvb, gint offset, proto_tree *dcerpc_tree,
}
} else {
tvb_ensure_bytes_exist(tvb, offset, plain_length);
- proto_tree_add_text (dcerpc_tree, tvb, offset, plain_length,
- "Stub data (%d byte%s)", plain_length,
- plurality(plain_length, "", "s"));
+ proto_tree_add_text(dcerpc_tree, tvb, offset, plain_length,
+ "Stub data (%d byte%s)", plain_length,
+ plurality(plain_length, "", "s"));
}
/* If there is auth padding at the end of the stub, display it */
if (auth_pad_len != 0) {
tvb_ensure_bytes_exist(tvb, auth_pad_offset, auth_pad_len);
- proto_tree_add_text (dcerpc_tree, tvb, auth_pad_offset,
- auth_pad_len,
- "Auth Padding (%u byte%s)",
- auth_pad_len,
- plurality(auth_pad_len, "", "s"));
+ proto_tree_add_text(dcerpc_tree, tvb, auth_pad_offset,
+ auth_pad_len,
+ "Auth Padding (%u byte%s)",
+ auth_pad_len,
+ plurality(auth_pad_len, "", "s"));
}
}
}
static int
-dcerpc_try_handoff (packet_info *pinfo, proto_tree *tree,
- proto_tree *dcerpc_tree,
- tvbuff_t *volatile tvb, tvbuff_t *decrypted_tvb,
- guint8 *drep, dcerpc_info *info,
- dcerpc_auth_info *auth_info)
+dcerpc_try_handoff(packet_info *pinfo, proto_tree *tree,
+ proto_tree *dcerpc_tree,
+ tvbuff_t *volatile tvb, tvbuff_t *decrypted_tvb,
+ guint8 *drep, dcerpc_info *info,
+ dcerpc_auth_info *auth_info)
{
- volatile gint offset = 0;
- dcerpc_uuid_key key;
- dcerpc_uuid_value *sub_proto;
- proto_tree *volatile sub_tree = NULL;
+ volatile gint offset = 0;
+ dcerpc_uuid_key key;
+ dcerpc_uuid_value *sub_proto;
+ proto_tree *volatile sub_tree = NULL;
dcerpc_sub_dissector *proc;
- const gchar *name = NULL;
+ const gchar *name = NULL;
+ const char *volatile saved_proto;
+ void *volatile saved_private_data;
+ guint length = 0, reported_length = 0;
+ tvbuff_t *volatile stub_tvb;
+ volatile guint auth_pad_len;
+ volatile int auth_pad_offset;
+ proto_item *sub_item = NULL;
+ proto_item *pi, *hidden_item;
+
dcerpc_dissect_fnct_t *volatile sub_dissect;
- const char *volatile saved_proto;
- void *volatile saved_private_data;
- guint length = 0, reported_length = 0;
- tvbuff_t *volatile stub_tvb;
- volatile guint auth_pad_len;
- volatile int auth_pad_offset;
- proto_item *sub_item=NULL;
- proto_item *pi, *hidden_item;
key.uuid = info->call_data->uuid;
key.ver = info->call_data->ver;
- if ((sub_proto = g_hash_table_lookup (dcerpc_uuids, &key)) == NULL
+ if ((sub_proto = g_hash_table_lookup(dcerpc_uuids, &key)) == NULL
|| !proto_is_protocol_enabled(sub_proto->proto)) {
/*
* We don't have a dissector for this UUID, or the protocol
@@ -2416,14 +2425,14 @@ dcerpc_try_handoff (packet_info *pinfo, proto_tree *tree,
hidden_item = proto_tree_add_boolean(dcerpc_tree, hf_dcerpc_unknown_if_id,
tvb, offset, 0, TRUE);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- col_append_fstr (pinfo->cinfo, COL_INFO, " %s V%u",
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s V%u",
guids_resolve_uuid_to_str(&info->call_data->uuid), info->call_data->ver);
if (decrypted_tvb != NULL) {
- show_stub_data (decrypted_tvb, 0, dcerpc_tree, auth_info,
- FALSE);
+ show_stub_data(decrypted_tvb, 0, dcerpc_tree, auth_info,
+ FALSE);
} else
- show_stub_data (tvb, 0, dcerpc_tree, auth_info, TRUE);
+ show_stub_data(tvb, 0, dcerpc_tree, auth_info, TRUE);
return -1;
}
@@ -2437,21 +2446,21 @@ dcerpc_try_handoff (packet_info *pinfo, proto_tree *tree,
if (!name)
name = "Unknown?!";
- col_set_str (pinfo->cinfo, COL_PROTOCOL, sub_proto->name);
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, sub_proto->name);
- col_add_fstr (pinfo->cinfo, COL_INFO, "%s %s",
- name, (info->ptype == PDU_REQ) ? "request" : "response");
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s %s",
+ name, (info->ptype == PDU_REQ) ? "request" : "response");
sub_dissect = (info->ptype == PDU_REQ) ?
proc->dissect_rqst : proc->dissect_resp;
if (tree) {
- sub_item = proto_tree_add_item (tree, sub_proto->proto_id,
- (decrypted_tvb != NULL)?decrypted_tvb:tvb,
- 0, -1, ENC_NA);
+ sub_item = proto_tree_add_item(tree, sub_proto->proto_id,
+ (decrypted_tvb != NULL)?decrypted_tvb:tvb,
+ 0, -1, ENC_NA);
if (sub_item) {
- sub_tree = proto_item_add_subtree (sub_item, sub_proto->ett);
+ sub_tree = proto_item_add_subtree(sub_item, sub_proto->ett);
proto_item_append_text(sub_item, ", %s", name);
}
@@ -2470,12 +2479,12 @@ dcerpc_try_handoff (packet_info *pinfo, proto_tree *tree,
"Operation: %s (%u)",
name, info->call_data->opnum);
- if(info->ptype == PDU_REQ && info->call_data->rep_frame!=0) {
+ if ((info->ptype == PDU_REQ) && (info->call_data->rep_frame != 0)) {
pi = proto_tree_add_uint(sub_tree, hf_dcerpc_response_in,
tvb, 0, 0, info->call_data->rep_frame);
PROTO_ITEM_SET_GENERATED(pi);
}
- if(info->ptype == PDU_RESP && info->call_data->req_frame!=0) {
+ if ((info->ptype == PDU_RESP) && (info->call_data->req_frame != 0)) {
pi = proto_tree_add_uint(sub_tree, hf_dcerpc_request_in,
tvb, 0, 0, info->call_data->req_frame);
PROTO_ITEM_SET_GENERATED(pi);
@@ -2487,10 +2496,10 @@ dcerpc_try_handoff (packet_info *pinfo, proto_tree *tree,
the encrypted payload. */
if (sub_dissect) {
/* We have a subdissector - call it. */
- saved_proto = pinfo->current_proto;
- saved_private_data = pinfo->private_data;
+ saved_proto = pinfo->current_proto;
+ saved_private_data = pinfo->private_data;
pinfo->current_proto = sub_proto->name;
- pinfo->private_data = (void *)info;
+ pinfo->private_data = (void *)info;
init_ndr_pointer_list(pinfo);
@@ -2500,7 +2509,7 @@ dcerpc_try_handoff (packet_info *pinfo, proto_tree *tree,
/*
* Remove the authentication padding from the stub data.
*/
- if (auth_info != NULL && auth_info->auth_pad_len != 0) {
+ if ((auth_info != NULL) && (auth_info->auth_pad_len != 0)) {
if (reported_length >= auth_info->auth_pad_len) {
/*
* OK, the padding length isn't so big that it
@@ -2560,7 +2569,7 @@ dcerpc_try_handoff (packet_info *pinfo, proto_tree *tree,
TRY {
int remaining;
- offset = sub_dissect (stub_tvb, 0, pinfo, sub_tree,
+ offset = sub_dissect(stub_tvb, 0, pinfo, sub_tree,
drep);
/* If we have a subdissector and it didn't dissect all
@@ -2588,34 +2597,34 @@ dcerpc_try_handoff (packet_info *pinfo, proto_tree *tree,
/* If there is auth padding at the end of the stub, display it */
if (auth_pad_len != 0) {
tvb_ensure_bytes_exist(tvb, auth_pad_offset, auth_pad_len);
- proto_tree_add_text (sub_tree, decrypted_tvb, auth_pad_offset,
- auth_pad_len,
- "Auth Padding (%u byte%s)",
- auth_pad_len,
- plurality(auth_pad_len, "", "s"));
+ proto_tree_add_text(sub_tree, decrypted_tvb, auth_pad_offset,
+ auth_pad_len,
+ "Auth Padding (%u byte%s)",
+ auth_pad_len,
+ plurality(auth_pad_len, "", "s"));
}
pinfo->current_proto = saved_proto;
- pinfo->private_data = saved_private_data;
+ pinfo->private_data = saved_private_data;
} else {
/* No subdissector - show it as stub data. */
- if(decrypted_tvb){
- show_stub_data (decrypted_tvb, 0, sub_tree, auth_info, FALSE);
+ if (decrypted_tvb) {
+ show_stub_data(decrypted_tvb, 0, sub_tree, auth_info, FALSE);
} else {
- show_stub_data (tvb, 0, sub_tree, auth_info, TRUE);
+ show_stub_data(tvb, 0, sub_tree, auth_info, TRUE);
}
}
} else
- show_stub_data (tvb, 0, sub_tree, auth_info, TRUE);
+ show_stub_data(tvb, 0, sub_tree, auth_info, TRUE);
tap_queue_packet(dcerpc_tap, pinfo, info);
return 0;
}
static int
-dissect_dcerpc_verifier (tvbuff_t *tvb, packet_info *pinfo,
- proto_tree *dcerpc_tree, e_dce_cn_common_hdr_t *hdr,
- dcerpc_auth_info *auth_info)
+dissect_dcerpc_verifier(tvbuff_t *tvb, packet_info *pinfo,
+ proto_tree *dcerpc_tree, e_dce_cn_common_hdr_t *hdr,
+ dcerpc_auth_info *auth_info)
{
int auth_offset;
@@ -2646,8 +2655,8 @@ dissect_dcerpc_verifier (tvbuff_t *tvb, packet_info *pinfo,
} ENDTRY;
} else {
tvb_ensure_bytes_exist(tvb, 0, hdr->auth_len);
- proto_tree_add_text (dcerpc_tree, auth_tvb, 0, hdr->auth_len,
- "Auth Verifier");
+ proto_tree_add_text(dcerpc_tree, auth_tvb, 0, hdr->auth_len,
+ "Auth Verifier");
}
}
@@ -2655,9 +2664,9 @@ dissect_dcerpc_verifier (tvbuff_t *tvb, packet_info *pinfo,
}
static void
-dissect_dcerpc_cn_auth (tvbuff_t *tvb, int stub_offset, packet_info *pinfo,
- proto_tree *dcerpc_tree, e_dce_cn_common_hdr_t *hdr,
- gboolean are_credentials, dcerpc_auth_info *auth_info)
+dissect_dcerpc_cn_auth(tvbuff_t *tvb, int stub_offset, packet_info *pinfo,
+ proto_tree *dcerpc_tree, e_dce_cn_common_hdr_t *hdr,
+ gboolean are_credentials, dcerpc_auth_info *auth_info)
{
volatile int offset;
@@ -2665,9 +2674,9 @@ dissect_dcerpc_cn_auth (tvbuff_t *tvb, int stub_offset, packet_info *pinfo,
* Initially set auth_level and auth_type to zero to indicate that we
* haven't yet seen any authentication level information.
*/
- auth_info->auth_level = 0;
- auth_info->auth_type = 0;
- auth_info->auth_size = 0;
+ auth_info->auth_level = 0;
+ auth_info->auth_type = 0;
+ auth_info->auth_size = 0;
auth_info->auth_pad_len = 0;
/*
@@ -2683,7 +2692,7 @@ dissect_dcerpc_cn_auth (tvbuff_t *tvb, int stub_offset, packet_info *pinfo,
*/
if (hdr->auth_len
- && (hdr->auth_len + 8 <= hdr->frag_len - stub_offset)) {
+ && ((hdr->auth_len + 8) <= (hdr->frag_len - stub_offset))) {
/*
* Yes, there is authentication data, and the length is valid.
@@ -2705,20 +2714,20 @@ dissect_dcerpc_cn_auth (tvbuff_t *tvb, int stub_offset, packet_info *pinfo,
* dissect after this, such as stub data.
*/
TRY {
- offset = dissect_dcerpc_uint8 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_auth_type,
- &auth_info->auth_type);
- offset = dissect_dcerpc_uint8 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_auth_level,
- &auth_info->auth_level);
-
- offset = dissect_dcerpc_uint8 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_auth_pad_len,
- &auth_info->auth_pad_len);
- offset = dissect_dcerpc_uint8 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_auth_rsrvd, NULL);
- offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_auth_ctx_id, NULL);
+ offset = dissect_dcerpc_uint8(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_auth_type,
+ &auth_info->auth_type);
+ offset = dissect_dcerpc_uint8(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_auth_level,
+ &auth_info->auth_level);
+
+ offset = dissect_dcerpc_uint8(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_auth_pad_len,
+ &auth_info->auth_pad_len);
+ offset = dissect_dcerpc_uint8(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_auth_rsrvd, NULL);
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_auth_ctx_id, NULL);
/*
* Dissect the authentication data.
@@ -2736,7 +2745,7 @@ dissect_dcerpc_cn_auth (tvbuff_t *tvb, int stub_offset, packet_info *pinfo,
dissect_auth_verf(auth_tvb, pinfo, dcerpc_tree, auth_fns,
hdr, auth_info);
else
- proto_tree_add_text (dcerpc_tree, tvb, offset, hdr->auth_len,
+ proto_tree_add_text(dcerpc_tree, tvb, offset, hdr->auth_len,
"Auth Credentials");
}
@@ -2761,9 +2770,9 @@ dissect_dcerpc_cn_auth (tvbuff_t *tvb, int stub_offset, packet_info *pinfo,
* as well in the future.
*/
-guint16 dcerpc_get_transport_salt (packet_info *pinfo)
+guint16 dcerpc_get_transport_salt(packet_info *pinfo)
{
- switch(pinfo->dcetransporttype){
+ switch (pinfo->dcetransporttype) {
case DCE_CN_TRANSPORT_SMBPIPE:
/* DCERPC over smb */
return pinfo->dcetransportsalt;
@@ -2778,35 +2787,35 @@ guint16 dcerpc_get_transport_salt (packet_info *pinfo)
*/
static void
-dissect_dcerpc_cn_bind (tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *dcerpc_tree, e_dce_cn_common_hdr_t *hdr)
+dissect_dcerpc_cn_bind(tvbuff_t *tvb, gint offset, packet_info *pinfo,
+ proto_tree *dcerpc_tree, e_dce_cn_common_hdr_t *hdr)
{
- conversation_t *conv = find_or_create_conversation(pinfo);
- guint8 num_ctx_items = 0;
- guint i;
- guint16 ctx_id;
- guint8 num_trans_items;
- guint j;
- e_uuid_t if_id;
- e_uuid_t trans_id;
- guint32 trans_ver;
- guint16 if_ver, if_ver_minor;
- dcerpc_auth_info auth_info;
- char *uuid_str;
- const char *uuid_name = NULL;
- proto_item *iface_item = NULL;
-
- offset = dissect_dcerpc_uint16 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_cn_max_xmit, NULL);
-
- offset = dissect_dcerpc_uint16 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_cn_max_recv, NULL);
-
- offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_cn_assoc_group, NULL);
-
- offset = dissect_dcerpc_uint8 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_cn_num_ctx_items, &num_ctx_items);
+ conversation_t *conv = find_or_create_conversation(pinfo);
+ guint8 num_ctx_items = 0;
+ guint i;
+ guint16 ctx_id;
+ guint8 num_trans_items;
+ guint j;
+ e_uuid_t if_id;
+ e_uuid_t trans_id;
+ guint32 trans_ver;
+ guint16 if_ver, if_ver_minor;
+ dcerpc_auth_info auth_info;
+ char *uuid_str;
+ const char *uuid_name = NULL;
+ proto_item *iface_item = NULL;
+
+ offset = dissect_dcerpc_uint16(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_cn_max_xmit, NULL);
+
+ offset = dissect_dcerpc_uint16(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_cn_max_recv, NULL);
+
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_cn_assoc_group, NULL);
+
+ offset = dissect_dcerpc_uint8(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_cn_num_ctx_items, &num_ctx_items);
/* padding */
offset += 3;
@@ -2818,8 +2827,8 @@ dissect_dcerpc_cn_bind (tvbuff_t *tvb, gint offset, packet_info *pinfo,
proto_tree *ctx_tree = NULL, *iface_tree = NULL;
gint ctx_offset = offset;
- dissect_dcerpc_uint16 (tvb, offset, pinfo, NULL, hdr->drep,
- hf_dcerpc_cn_ctx_id, &ctx_id);
+ dissect_dcerpc_uint16(tvb, offset, pinfo, NULL, hdr->drep,
+ hf_dcerpc_cn_ctx_id, &ctx_id);
/* save context ID for use with dcerpc_add_conv_to_bind_table() */
/* (if we have multiple contexts, this might cause "decode as"
@@ -2833,19 +2842,19 @@ dissect_dcerpc_cn_bind (tvbuff_t *tvb, gint offset, packet_info *pinfo,
ctx_tree = proto_item_add_subtree(ctx_item, ett_dcerpc_cn_ctx);
}
- offset = dissect_dcerpc_uint16 (tvb, offset, pinfo, ctx_tree, hdr->drep,
- hf_dcerpc_cn_ctx_id, &ctx_id);
- offset = dissect_dcerpc_uint8 (tvb, offset, pinfo, ctx_tree, hdr->drep,
- hf_dcerpc_cn_num_trans_items, &num_trans_items);
+ offset = dissect_dcerpc_uint16(tvb, offset, pinfo, ctx_tree, hdr->drep,
+ hf_dcerpc_cn_ctx_id, &ctx_id);
+ offset = dissect_dcerpc_uint8(tvb, offset, pinfo, ctx_tree, hdr->drep,
+ hf_dcerpc_cn_num_trans_items, &num_trans_items);
- if(dcerpc_tree) {
+ if (dcerpc_tree) {
proto_item_append_text(ctx_item, "[%u]: ID:%u", i+1, ctx_id);
}
/* padding */
offset += 1;
- dcerpc_tvb_get_uuid (tvb, offset, hdr->drep, &if_id);
+ dcerpc_tvb_get_uuid(tvb, offset, hdr->drep, &if_id);
if (ctx_tree) {
iface_item = proto_tree_add_item(ctx_tree, hf_dcerpc_cn_bind_abstract_syntax, tvb, offset, 0, ENC_NA);
@@ -2853,28 +2862,28 @@ dissect_dcerpc_cn_bind (tvbuff_t *tvb, gint offset, packet_info *pinfo,
uuid_str = guid_to_str((e_guid_t*)&if_id);
uuid_name = guids_get_uuid_name(&if_id);
- if(uuid_name) {
- proto_tree_add_guid_format (iface_tree, hf_dcerpc_cn_bind_if_id, tvb,
- offset, 16, (e_guid_t *) &if_id, "Interface: %s UUID: %s", uuid_name, uuid_str);
+ if (uuid_name) {
+ proto_tree_add_guid_format(iface_tree, hf_dcerpc_cn_bind_if_id, tvb,
+ offset, 16, (e_guid_t *) &if_id, "Interface: %s UUID: %s", uuid_name, uuid_str);
proto_item_append_text(iface_item, ": %s", uuid_name);
} else {
- proto_tree_add_guid_format (iface_tree, hf_dcerpc_cn_bind_if_id, tvb,
- offset, 16, (e_guid_t *) &if_id, "Interface UUID: %s", uuid_str);
+ proto_tree_add_guid_format(iface_tree, hf_dcerpc_cn_bind_if_id, tvb,
+ offset, 16, (e_guid_t *) &if_id, "Interface UUID: %s", uuid_str);
proto_item_append_text(iface_item, ": %s", uuid_str);
}
}
offset += 16;
if (hdr->drep[0] & DREP_LITTLE_ENDIAN) {
- offset = dissect_dcerpc_uint16 (tvb, offset, pinfo, iface_tree, hdr->drep,
- hf_dcerpc_cn_bind_if_ver, &if_ver);
- offset = dissect_dcerpc_uint16 (tvb, offset, pinfo, iface_tree, hdr->drep,
- hf_dcerpc_cn_bind_if_ver_minor, &if_ver_minor);
+ offset = dissect_dcerpc_uint16(tvb, offset, pinfo, iface_tree, hdr->drep,
+ hf_dcerpc_cn_bind_if_ver, &if_ver);
+ offset = dissect_dcerpc_uint16(tvb, offset, pinfo, iface_tree, hdr->drep,
+ hf_dcerpc_cn_bind_if_ver_minor, &if_ver_minor);
} else {
- offset = dissect_dcerpc_uint16 (tvb, offset, pinfo, iface_tree, hdr->drep,
- hf_dcerpc_cn_bind_if_ver_minor, &if_ver_minor);
- offset = dissect_dcerpc_uint16 (tvb, offset, pinfo, iface_tree, hdr->drep,
- hf_dcerpc_cn_bind_if_ver, &if_ver);
+ offset = dissect_dcerpc_uint16(tvb, offset, pinfo, iface_tree, hdr->drep,
+ hf_dcerpc_cn_bind_if_ver_minor, &if_ver_minor);
+ offset = dissect_dcerpc_uint16(tvb, offset, pinfo, iface_tree, hdr->drep,
+ hf_dcerpc_cn_bind_if_ver, &if_ver);
}
if (ctx_tree) {
@@ -2887,7 +2896,7 @@ dissect_dcerpc_cn_bind (tvbuff_t *tvb, gint offset, packet_info *pinfo,
proto_tree *trans_tree = NULL;
proto_item *trans_item = NULL;
- dcerpc_tvb_get_uuid (tvb, offset, hdr->drep, &trans_id);
+ dcerpc_tvb_get_uuid(tvb, offset, hdr->drep, &trans_id);
if (ctx_tree) {
trans_item = proto_tree_add_item(ctx_tree, hf_dcerpc_cn_bind_trans_syntax, tvb, offset, 0, ENC_NA);
@@ -2896,56 +2905,57 @@ dissect_dcerpc_cn_bind (tvbuff_t *tvb, gint offset, packet_info *pinfo,
uuid_str = guid_to_str((e_guid_t *) &trans_id);
uuid_name = guids_get_uuid_name(&trans_id);
- if(uuid_name) {
- proto_tree_add_guid_format (trans_tree, hf_dcerpc_cn_bind_trans_id, tvb,
- offset, 16, (e_guid_t *) &trans_id, "Transport Syntax: %s UUID:%s", uuid_name, uuid_str);
+ if (uuid_name) {
+ proto_tree_add_guid_format(trans_tree, hf_dcerpc_cn_bind_trans_id, tvb,
+ offset, 16, (e_guid_t *) &trans_id,
+ "Transport Syntax: %s UUID:%s", uuid_name, uuid_str);
proto_item_append_text(trans_item, "[%u]: %s", j+1, uuid_name);
} else {
- proto_tree_add_guid_format (trans_tree, hf_dcerpc_cn_bind_trans_id, tvb,
- offset, 16, (e_guid_t *) &trans_id, "Transport Syntax: %s", uuid_str);
+ proto_tree_add_guid_format(trans_tree, hf_dcerpc_cn_bind_trans_id, tvb,
+ offset, 16, (e_guid_t *) &trans_id, "Transport Syntax: %s", uuid_str);
proto_item_append_text(trans_item, "[%u]: %s", j+1, uuid_str);
}
}
offset += 16;
- offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, trans_tree, hdr->drep,
- hf_dcerpc_cn_bind_trans_ver, &trans_ver);
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, trans_tree, hdr->drep,
+ hf_dcerpc_cn_bind_trans_ver, &trans_ver);
if (ctx_tree) {
proto_item_set_len(trans_item, 20);
proto_item_append_text(trans_item, " V%u", trans_ver);
}
}
- /* if this is the first time we see this packet, we need to
+ /* if this is the first time we've seen this packet, we need to
update the dcerpc_binds table so that any later calls can
match to the interface.
XXX We assume that BINDs will NEVER be fragmented.
*/
- if(!(pinfo->fd->flags.visited)){
- dcerpc_bind_key *key;
+ if (!(pinfo->fd->flags.visited)) {
+ dcerpc_bind_key *key;
dcerpc_bind_value *value;
- key = se_alloc (sizeof (dcerpc_bind_key));
+ key = se_alloc(sizeof (dcerpc_bind_key));
key->conv = conv;
key->ctx_id = ctx_id;
key->smb_fid = dcerpc_get_transport_salt(pinfo);
- value = se_alloc (sizeof (dcerpc_bind_value));
+ value = se_alloc(sizeof (dcerpc_bind_value));
value->uuid = if_id;
value->ver = if_ver;
- value->transport=trans_id;
+ value->transport = trans_id;
/* add this entry to the bind table */
- g_hash_table_insert (dcerpc_binds, key, value);
+ g_hash_table_insert(dcerpc_binds, key, value);
}
- if (i > 0)
- col_append_fstr(pinfo->cinfo, COL_INFO, ",");
- col_append_fstr(pinfo->cinfo, COL_INFO, " %s V%u.%u (%s)",
- guids_resolve_uuid_to_str(&if_id), if_ver, if_ver_minor,
- guids_resolve_uuid_to_str(&trans_id));
+ if (i > 0)
+ col_append_fstr(pinfo->cinfo, COL_INFO, ",");
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s V%u.%u (%s)",
+ guids_resolve_uuid_to_str(&if_id), if_ver, if_ver_minor,
+ guids_resolve_uuid_to_str(&trans_id));
- if(ctx_tree) {
+ if (ctx_tree) {
proto_item_set_len(ctx_item, offset - ctx_offset);
}
}
@@ -2955,39 +2965,39 @@ dissect_dcerpc_cn_bind (tvbuff_t *tvb, gint offset, packet_info *pinfo,
* an authentication header, and associate it with an authentication
* context, so subsequent PDUs can use that context.
*/
- dissect_dcerpc_cn_auth (tvb, offset, pinfo, dcerpc_tree, hdr, TRUE, &auth_info);
+ dissect_dcerpc_cn_auth(tvb, offset, pinfo, dcerpc_tree, hdr, TRUE, &auth_info);
}
static void
-dissect_dcerpc_cn_bind_ack (tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *dcerpc_tree, e_dce_cn_common_hdr_t *hdr)
+dissect_dcerpc_cn_bind_ack(tvbuff_t *tvb, gint offset, packet_info *pinfo,
+ proto_tree *dcerpc_tree, e_dce_cn_common_hdr_t *hdr)
{
- guint16 max_xmit, max_recv;
- guint16 sec_addr_len;
- guint8 num_results;
- guint i;
- guint16 result = 0;
- guint16 reason = 0;
- e_uuid_t trans_id;
- guint32 trans_ver;
- dcerpc_auth_info auth_info;
- const char *uuid_name = NULL;
-
- offset = dissect_dcerpc_uint16 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_cn_max_xmit, &max_xmit);
-
- offset = dissect_dcerpc_uint16 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_cn_max_recv, &max_recv);
-
- offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_cn_assoc_group, NULL);
-
- offset = dissect_dcerpc_uint16 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_cn_sec_addr_len, &sec_addr_len);
+ guint16 max_xmit, max_recv;
+ guint16 sec_addr_len;
+ guint8 num_results;
+ guint i;
+ guint16 result = 0;
+ guint16 reason = 0;
+ e_uuid_t trans_id;
+ guint32 trans_ver;
+ dcerpc_auth_info auth_info;
+ const char *uuid_name = NULL;
+
+ offset = dissect_dcerpc_uint16(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_cn_max_xmit, &max_xmit);
+
+ offset = dissect_dcerpc_uint16(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_cn_max_recv, &max_recv);
+
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_cn_assoc_group, NULL);
+
+ offset = dissect_dcerpc_uint16(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_cn_sec_addr_len, &sec_addr_len);
if (sec_addr_len != 0) {
tvb_ensure_bytes_exist(tvb, offset, sec_addr_len);
- proto_tree_add_item (dcerpc_tree, hf_dcerpc_cn_sec_addr, tvb, offset,
- sec_addr_len, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(dcerpc_tree, hf_dcerpc_cn_sec_addr, tvb, offset,
+ sec_addr_len, ENC_ASCII|ENC_NA);
offset += sec_addr_len;
}
@@ -2995,31 +3005,31 @@ dissect_dcerpc_cn_bind_ack (tvbuff_t *tvb, gint offset, packet_info *pinfo,
offset += 4 - offset % 4;
}
- offset = dissect_dcerpc_uint8 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_cn_num_results, &num_results);
+ offset = dissect_dcerpc_uint8(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_cn_num_results, &num_results);
/* padding */
offset += 3;
col_append_fstr(pinfo->cinfo, COL_INFO, ", max_xmit: %u max_recv: %u, %u results:",
- max_xmit, max_recv, num_results);
+ max_xmit, max_recv, num_results);
for (i = 0; i < num_results; i++) {
proto_tree *ctx_tree = NULL;
- if(dcerpc_tree){
+ if (dcerpc_tree) {
proto_item *ctx_item;
ctx_item = proto_tree_add_text(dcerpc_tree, tvb, offset, 24, "Context ID[%u]", i+1);
ctx_tree = proto_item_add_subtree(ctx_item, ett_dcerpc_cn_ctx);
}
- offset = dissect_dcerpc_uint16 (tvb, offset, pinfo, ctx_tree,
- hdr->drep, hf_dcerpc_cn_ack_result,
- &result);
+ offset = dissect_dcerpc_uint16(tvb, offset, pinfo, ctx_tree,
+ hdr->drep, hf_dcerpc_cn_ack_result,
+ &result);
if (result != 0) {
- offset = dissect_dcerpc_uint16 (tvb, offset, pinfo, ctx_tree,
- hdr->drep, hf_dcerpc_cn_ack_reason,
- &reason);
+ offset = dissect_dcerpc_uint16(tvb, offset, pinfo, ctx_tree,
+ hdr->drep, hf_dcerpc_cn_ack_reason,
+ &reason);
} else {
/*
* The reason for rejection isn't meaningful, and often isn't
@@ -3028,59 +3038,59 @@ dissect_dcerpc_cn_bind_ack (tvbuff_t *tvb, gint offset, packet_info *pinfo,
offset += 2;
}
- dcerpc_tvb_get_uuid (tvb, offset, hdr->drep, &trans_id);
+ dcerpc_tvb_get_uuid(tvb, offset, hdr->drep, &trans_id);
uuid_name = guids_get_uuid_name(&trans_id);
if (ctx_tree) {
- proto_tree_add_guid_format (ctx_tree, hf_dcerpc_cn_ack_trans_id, tvb,
- offset, 16, (e_guid_t *) &trans_id, "Transfer Syntax: %s",
- uuid_name?uuid_name:guid_to_str((e_guid_t *) &trans_id));
+ proto_tree_add_guid_format(ctx_tree, hf_dcerpc_cn_ack_trans_id, tvb,
+ offset, 16, (e_guid_t *) &trans_id, "Transfer Syntax: %s",
+ uuid_name?uuid_name:guid_to_str((e_guid_t *) &trans_id));
}
offset += 16;
- offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, ctx_tree, hdr->drep,
- hf_dcerpc_cn_ack_trans_ver, &trans_ver);
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, ctx_tree, hdr->drep,
+ hf_dcerpc_cn_ack_trans_ver, &trans_ver);
- if (i > 0)
- col_append_fstr(pinfo->cinfo, COL_INFO, ",");
- col_append_fstr(pinfo->cinfo, COL_INFO, " %s",
- val_to_str(result, p_cont_result_vals, "Unknown result (%u)"));
+ if (i > 0)
+ col_append_fstr(pinfo->cinfo, COL_INFO, ",");
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s",
+ val_to_str(result, p_cont_result_vals, "Unknown result (%u)"));
}
/*
* XXX - do we need to do anything with the authentication level
* we get back from this?
*/
- dissect_dcerpc_cn_auth (tvb, offset, pinfo, dcerpc_tree, hdr, TRUE, &auth_info);
+ dissect_dcerpc_cn_auth(tvb, offset, pinfo, dcerpc_tree, hdr, TRUE, &auth_info);
}
static void
-dissect_dcerpc_cn_bind_nak (tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *dcerpc_tree, e_dce_cn_common_hdr_t *hdr)
+dissect_dcerpc_cn_bind_nak(tvbuff_t *tvb, gint offset, packet_info *pinfo,
+ proto_tree *dcerpc_tree, e_dce_cn_common_hdr_t *hdr)
{
guint16 reason;
- guint8 num_protocols;
- guint i;
+ guint8 num_protocols;
+ guint i;
- offset = dissect_dcerpc_uint16 (tvb, offset, pinfo, dcerpc_tree,
- hdr->drep, hf_dcerpc_cn_reject_reason,
- &reason);
+ offset = dissect_dcerpc_uint16(tvb, offset, pinfo, dcerpc_tree,
+ hdr->drep, hf_dcerpc_cn_reject_reason,
+ &reason);
- col_append_fstr (pinfo->cinfo, COL_INFO, " reason: %s",
- val_to_str(reason, reject_reason_vals, "Unknown (%u)"));
+ col_append_fstr(pinfo->cinfo, COL_INFO, " reason: %s",
+ val_to_str(reason, reject_reason_vals, "Unknown (%u)"));
if (reason == PROTOCOL_VERSION_NOT_SUPPORTED) {
- offset = dissect_dcerpc_uint8 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_cn_num_protocols,
- &num_protocols);
+ offset = dissect_dcerpc_uint8(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_cn_num_protocols,
+ &num_protocols);
for (i = 0; i < num_protocols; i++) {
- offset = dissect_dcerpc_uint8 (tvb, offset, pinfo, dcerpc_tree,
- hdr->drep, hf_dcerpc_cn_protocol_ver_major,
- NULL);
- offset = dissect_dcerpc_uint8 (tvb, offset, pinfo, dcerpc_tree,
- hdr->drep, hf_dcerpc_cn_protocol_ver_minor,
- NULL);
+ offset = dissect_dcerpc_uint8(tvb, offset, pinfo, dcerpc_tree,
+ hdr->drep, hf_dcerpc_cn_protocol_ver_major,
+ NULL);
+ offset = dissect_dcerpc_uint8(tvb, offset, pinfo, dcerpc_tree,
+ hdr->drep, hf_dcerpc_cn_protocol_ver_minor,
+ NULL);
}
}
}
@@ -3094,10 +3104,10 @@ static const char *
fragment_type(guint8 flags)
{
static const char* t[4] = {
- "Mid",
- "1st",
- "Last",
- "Single"
+ "Mid",
+ "1st",
+ "Last",
+ "Single"
};
return t[flags & PFC_FRAG_MASK];
}
@@ -3105,15 +3115,15 @@ fragment_type(guint8 flags)
/* Dissect stub data (payload) of a DCERPC packet. */
static void
-dissect_dcerpc_cn_stub (tvbuff_t *tvb, int offset, packet_info *pinfo,
- proto_tree *dcerpc_tree, proto_tree *tree,
- e_dce_cn_common_hdr_t *hdr, dcerpc_info *di,
- dcerpc_auth_info *auth_info, guint32 alloc_hint _U_,
- guint32 frame)
+dissect_dcerpc_cn_stub(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *dcerpc_tree, proto_tree *tree,
+ e_dce_cn_common_hdr_t *hdr, dcerpc_info *di,
+ dcerpc_auth_info *auth_info, guint32 alloc_hint _U_,
+ guint32 frame)
{
- gint length, reported_length;
- gboolean save_fragmented;
- fragment_data *fd_head=NULL;
+ gint length, reported_length;
+ gboolean save_fragmented;
+ fragment_data *fd_head = NULL;
tvbuff_t *auth_tvb, *payload_tvb, *decrypted_tvb;
proto_item *pi;
@@ -3135,13 +3145,13 @@ dissect_dcerpc_cn_stub (tvbuff_t *tvb, int offset, packet_info *pinfo,
length = reported_length;
payload_tvb = tvb_new_subset(tvb, offset, length, reported_length);
- auth_tvb=NULL;
+ auth_tvb = NULL;
/*don't bother if we don't have the entire tvb */
/*XXX we should really make sure we calculate auth_info->auth_data
and use that one instead of this auth_tvb hack
*/
- if(tvb_length(tvb)==tvb_reported_length(tvb)){
- if(tvb_length_remaining(tvb, offset+length)>8){
+ if (tvb_length(tvb) == tvb_reported_length(tvb)) {
+ if (tvb_length_remaining(tvb, offset+length) > 8) {
auth_tvb = tvb_new_subset_remaining(tvb, offset+length+8);
}
}
@@ -3149,7 +3159,7 @@ dissect_dcerpc_cn_stub (tvbuff_t *tvb, int offset, packet_info *pinfo,
/* Decrypt the PDU if it is encrypted */
if (auth_info->auth_type &&
- auth_info->auth_level == DCE_C_AUTHN_LEVEL_PKT_PRIVACY) {
+ (auth_info->auth_level == DCE_C_AUTHN_LEVEL_PKT_PRIVACY)) {
/*
* We know the authentication type, and the authentication
* level is "Packet privacy", meaning the payload is
@@ -3163,7 +3173,7 @@ dissect_dcerpc_cn_stub (tvbuff_t *tvb, int offset, packet_info *pinfo,
* so we call it in order to have a chance to decipher the data
*/
if (DCE_C_RPC_AUTHN_PROTOCOL_SEC_CHAN == auth_info->auth_type) {
- dissect_dcerpc_cn_auth (tvb, offset, pinfo, dcerpc_tree, hdr, TRUE, auth_info);
+ dissect_dcerpc_cn_auth(tvb, offset, pinfo, dcerpc_tree, hdr, TRUE, auth_info);
}
if ((auth_fns = get_auth_subdissector_fns(
@@ -3194,7 +3204,7 @@ dissect_dcerpc_cn_stub (tvbuff_t *tvb, int offset, packet_info *pinfo,
decrypted_tvb = payload_tvb;
/* if this packet is not fragmented, just dissect it and exit */
- if(PFC_NOT_FRAGMENTED(hdr)){
+ if (PFC_NOT_FRAGMENTED(hdr)) {
pinfo->fragmented = FALSE;
dcerpc_try_handoff(
@@ -3218,14 +3228,14 @@ dissect_dcerpc_cn_stub (tvbuff_t *tvb, int offset, packet_info *pinfo,
XXX - if we're not doing reassembly, can we decrypt an
encrypted stub?
*/
- if( (!dcerpc_reassemble) && hdr->flags&PFC_FIRST_FRAG ){
+ if ( (!dcerpc_reassemble) && (hdr->flags & PFC_FIRST_FRAG) ) {
dcerpc_try_handoff(
pinfo, tree, dcerpc_tree, payload_tvb, decrypted_tvb,
hdr->drep, di, auth_info);
- expert_add_info_format(pinfo, NULL, PI_REASSEMBLE, PI_CHAT,
- "%s fragment", fragment_type(hdr->flags));
+ expert_add_info_format(pinfo, NULL, PI_REASSEMBLE, PI_CHAT,
+ "%s fragment", fragment_type(hdr->flags));
pinfo->fragmented = save_fragmented;
return;
@@ -3235,8 +3245,8 @@ dissect_dcerpc_cn_stub (tvbuff_t *tvb, int offset, packet_info *pinfo,
and if so dissect the full pdu.
then exit
*/
- if(pinfo->fd->flags.visited){
- fd_head=fragment_get_reassembled(frame, dcerpc_co_reassemble_table);
+ if (pinfo->fd->flags.visited) {
+ fd_head = fragment_get_reassembled(frame, dcerpc_co_reassemble_table);
goto end_cn_stub;
}
@@ -3244,13 +3254,13 @@ dissect_dcerpc_cn_stub (tvbuff_t *tvb, int offset, packet_info *pinfo,
nor the first fragment then there is nothing more we can do
so we just have to exit
*/
- if( !dcerpc_reassemble || (tvb_length(tvb)!=tvb_reported_length(tvb)) )
+ if ( !dcerpc_reassemble || (tvb_length(tvb) != tvb_reported_length(tvb)) )
goto end_cn_stub;
/* if we didn't get 'frame' we don't know where the PDU started and thus
it is pointless to continue
*/
- if(!frame)
+ if (!frame)
goto end_cn_stub;
/* from now on we must attempt to reassemble the PDU
@@ -3284,9 +3294,9 @@ end_cn_stub:
* (multiple fragments in one PDU are possible!)
* dissect the full PDU
*/
- if(fd_head && (fd_head->flags&FD_DEFRAGMENTED) ){
+ if (fd_head && (fd_head->flags & FD_DEFRAGMENTED) ) {
- if(pinfo->fd->num==fd_head->reassembled_in && (hdr->flags&PFC_LAST_FRAG) ){
+ if ((pinfo->fd->num == fd_head->reassembled_in) && (hdr->flags & PFC_LAST_FRAG) ) {
tvbuff_t *next_tvb;
proto_item *frag_tree_item;
@@ -3299,7 +3309,7 @@ end_cn_stub:
/* the toplevel fragment subtree is now behind all desegmented data,
* move it right behind the DCE/RPC tree */
dcerpc_tree_item = proto_tree_get_parent(dcerpc_tree);
- if(frag_tree_item && dcerpc_tree_item) {
+ if (frag_tree_item && dcerpc_tree_item) {
proto_tree_move_item(tree, dcerpc_tree_item, frag_tree_item);
}
@@ -3309,11 +3319,11 @@ end_cn_stub:
"%s fragment, reassembled",
fragment_type(hdr->flags));
- dcerpc_try_handoff (pinfo, tree, dcerpc_tree, next_tvb,
- next_tvb, hdr->drep, di, auth_info);
+ dcerpc_try_handoff(pinfo, tree, dcerpc_tree, next_tvb,
+ next_tvb, hdr->drep, di, auth_info);
} else {
- if(decrypted_tvb){
+ if (decrypted_tvb) {
pi = proto_tree_add_uint(dcerpc_tree, hf_dcerpc_reassembled_in,
decrypted_tvb, 0, 0, fd_head->reassembled_in);
} else {
@@ -3322,7 +3332,7 @@ end_cn_stub:
}
PROTO_ITEM_SET_GENERATED(pi);
parent_pi = proto_tree_get_parent(dcerpc_tree);
- if(parent_pi != NULL) {
+ if (parent_pi != NULL) {
proto_item_append_text(parent_pi, ", [Reas: #%u]", fd_head->reassembled_in);
}
col_append_fstr(pinfo->cinfo, COL_INFO,
@@ -3336,10 +3346,10 @@ end_cn_stub:
expert_add_info_format(pinfo, NULL, PI_REASSEMBLE, PI_CHAT,
"%s fragment", fragment_type(hdr->flags));
- if(decrypted_tvb){
- show_stub_data (decrypted_tvb, 0, tree, auth_info, FALSE);
+ if (decrypted_tvb) {
+ show_stub_data(decrypted_tvb, 0, tree, auth_info, FALSE);
} else {
- show_stub_data (payload_tvb, 0, tree, auth_info, TRUE);
+ show_stub_data(payload_tvb, 0, tree, auth_info, TRUE);
}
}
@@ -3359,10 +3369,10 @@ struct _dcerpc_bind_value *
dcerpc_add_conv_to_bind_table(decode_dcerpc_bind_values_t *binding)
{
dcerpc_bind_value *bind_value;
- dcerpc_bind_key *key;
- conversation_t *conv;
+ dcerpc_bind_key *key;
+ conversation_t *conv;
- conv = find_conversation (
+ conv = find_conversation(
0,
&binding->addr_a,
&binding->addr_b,
@@ -3372,7 +3382,7 @@ dcerpc_add_conv_to_bind_table(decode_dcerpc_bind_values_t *binding)
0);
if (!conv) {
- conv = conversation_new (
+ conv = conversation_new(
0,
&binding->addr_a,
&binding->addr_b,
@@ -3382,14 +3392,14 @@ dcerpc_add_conv_to_bind_table(decode_dcerpc_bind_values_t *binding)
0);
}
- bind_value = se_alloc (sizeof (dcerpc_bind_value));
+ bind_value = se_alloc(sizeof (dcerpc_bind_value));
bind_value->uuid = binding->uuid;
bind_value->ver = binding->ver;
/* For now, assume all DCE/RPC we pick from "decode as" is using
standard ndr and not ndr64.
We should make this selectable from the dialog in the future
*/
- bind_value->transport=uuid_data_repr_proto;
+ bind_value->transport = uuid_data_repr_proto;
key = se_alloc(sizeof (dcerpc_bind_key));
key->conv = conv;
@@ -3404,44 +3414,44 @@ dcerpc_add_conv_to_bind_table(decode_dcerpc_bind_values_t *binding)
}
static void
-dissect_dcerpc_cn_rqst (tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *dcerpc_tree, proto_tree *tree,
- e_dce_cn_common_hdr_t *hdr)
+dissect_dcerpc_cn_rqst(tvbuff_t *tvb, gint offset, packet_info *pinfo,
+ proto_tree *dcerpc_tree, proto_tree *tree,
+ e_dce_cn_common_hdr_t *hdr)
{
- conversation_t *conv;
- guint16 ctx_id;
- guint16 opnum;
- e_uuid_t obj_id = DCERPC_UUID_NULL;
- dcerpc_auth_info auth_info;
- guint32 alloc_hint;
- proto_item *pi;
- proto_item *parent_pi;
-
- offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_cn_alloc_hint, &alloc_hint);
-
- offset = dissect_dcerpc_uint16 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_cn_ctx_id, &ctx_id);
+ conversation_t *conv;
+ guint16 ctx_id;
+ guint16 opnum;
+ e_uuid_t obj_id = DCERPC_UUID_NULL;
+ dcerpc_auth_info auth_info;
+ guint32 alloc_hint;
+ proto_item *pi;
+ proto_item *parent_pi;
+
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_cn_alloc_hint, &alloc_hint);
+
+ offset = dissect_dcerpc_uint16(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_cn_ctx_id, &ctx_id);
parent_pi = proto_tree_get_parent(dcerpc_tree);
- if(parent_pi != NULL) {
+ if (parent_pi != NULL) {
proto_item_append_text(parent_pi, " Ctx: %u", ctx_id);
}
- offset = dissect_dcerpc_uint16 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_opnum, &opnum);
+ offset = dissect_dcerpc_uint16(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_opnum, &opnum);
/* save context ID for use with dcerpc_add_conv_to_bind_table() */
pinfo->dcectxid = ctx_id;
- col_append_fstr (pinfo->cinfo, COL_INFO, " opnum: %u ctx_id: %u",
- opnum, ctx_id);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " opnum: %u ctx_id: %u",
+ opnum, ctx_id);
if (hdr->flags & PFC_OBJECT_UUID) {
- dcerpc_tvb_get_uuid (tvb, offset, hdr->drep, &obj_id);
+ dcerpc_tvb_get_uuid(tvb, offset, hdr->drep, &obj_id);
if (dcerpc_tree) {
- proto_tree_add_guid_format (dcerpc_tree, hf_dcerpc_obj_id, tvb,
- offset, 16, (e_guid_t *) &obj_id, "Object UUID: %s",
- guid_to_str((e_guid_t *) &obj_id));
+ proto_tree_add_guid_format(dcerpc_tree, hf_dcerpc_obj_id, tvb,
+ offset, 16, (e_guid_t *) &obj_id, "Object UUID: %s",
+ guid_to_str((e_guid_t *) &obj_id));
}
offset += 16;
}
@@ -3450,12 +3460,12 @@ dissect_dcerpc_cn_rqst (tvbuff_t *tvb, gint offset, packet_info *pinfo,
* XXX - what if this was set when the connection was set up,
* and we just have a security context?
*/
- dissect_dcerpc_cn_auth (tvb, offset, pinfo, dcerpc_tree, hdr, FALSE, &auth_info);
+ dissect_dcerpc_cn_auth(tvb, offset, pinfo, dcerpc_tree, hdr, FALSE, &auth_info);
- conv = find_conversation (pinfo->fd->num, &pinfo->src, &pinfo->dst, pinfo->ptype,
- pinfo->srcport, pinfo->destport, 0);
+ conv = find_conversation(pinfo->fd->num, &pinfo->src, &pinfo->dst, pinfo->ptype,
+ pinfo->srcport, pinfo->destport, 0);
if (!conv)
- show_stub_data (tvb, offset, dcerpc_tree, &auth_info, TRUE);
+ show_stub_data(tvb, offset, dcerpc_tree, &auth_info, TRUE);
else {
dcerpc_matched_key matched_key, *new_matched_key;
dcerpc_call_value *value;
@@ -3468,26 +3478,26 @@ dissect_dcerpc_cn_rqst (tvbuff_t *tvb, gint offset, packet_info *pinfo,
matched_key.frame = pinfo->fd->num;
matched_key.call_id = hdr->call_id;
value = g_hash_table_lookup(dcerpc_matched, &matched_key);
- if(!value){
+ if (!value) {
dcerpc_bind_key bind_key;
dcerpc_bind_value *bind_value;
- bind_key.conv=conv;
- bind_key.ctx_id=ctx_id;
- bind_key.smb_fid=dcerpc_get_transport_salt(pinfo);
+ bind_key.conv = conv;
+ bind_key.ctx_id = ctx_id;
+ bind_key.smb_fid = dcerpc_get_transport_salt(pinfo);
- if((bind_value=g_hash_table_lookup(dcerpc_binds, &bind_key)) ){
- if(!(hdr->flags&PFC_FIRST_FRAG)){
+ if ((bind_value = g_hash_table_lookup(dcerpc_binds, &bind_key)) ) {
+ if (!(hdr->flags&PFC_FIRST_FRAG)) {
dcerpc_cn_call_key call_key;
dcerpc_call_value *call_value;
- call_key.conv=conv;
- call_key.call_id=hdr->call_id;
- call_key.smb_fid=dcerpc_get_transport_salt(pinfo);
- if((call_value=g_hash_table_lookup(dcerpc_cn_calls, &call_key))){
+ call_key.conv = conv;
+ call_key.call_id = hdr->call_id;
+ call_key.smb_fid = dcerpc_get_transport_salt(pinfo);
+ if ((call_value = g_hash_table_lookup(dcerpc_cn_calls, &call_key))) {
new_matched_key = se_alloc(sizeof (dcerpc_matched_key));
*new_matched_key = matched_key;
- g_hash_table_insert (dcerpc_matched, new_matched_key, call_value);
+ g_hash_table_insert(dcerpc_matched, new_matched_key, call_value);
value = call_value;
}
} else {
@@ -3499,26 +3509,26 @@ dissect_dcerpc_cn_rqst (tvbuff_t *tvb, gint offset, packet_info *pinfo,
the call to both the call table and the
matched table
*/
- call_key=se_alloc (sizeof (dcerpc_cn_call_key));
- call_key->conv=conv;
- call_key->call_id=hdr->call_id;
- call_key->smb_fid=dcerpc_get_transport_salt(pinfo);
+ call_key = se_alloc(sizeof (dcerpc_cn_call_key));
+ call_key->conv = conv;
+ call_key->call_id = hdr->call_id;
+ call_key->smb_fid = dcerpc_get_transport_salt(pinfo);
/* if there is already a matching call in the table
remove it so it is replaced with the new one */
- if(g_hash_table_lookup(dcerpc_cn_calls, call_key)){
+ if (g_hash_table_lookup(dcerpc_cn_calls, call_key)) {
g_hash_table_remove(dcerpc_cn_calls, call_key);
}
- call_value=se_alloc (sizeof (dcerpc_call_value));
+ call_value = se_alloc(sizeof (dcerpc_call_value));
call_value->uuid = bind_value->uuid;
call_value->ver = bind_value->ver;
call_value->object_uuid = obj_id;
call_value->opnum = opnum;
- call_value->req_frame=pinfo->fd->num;
- call_value->req_time=pinfo->fd->abs_ts;
- call_value->rep_frame=0;
- call_value->max_ptr=0;
+ call_value->req_frame = pinfo->fd->num;
+ call_value->req_time = pinfo->fd->abs_ts;
+ call_value->rep_frame = 0;
+ call_value->max_ptr = 0;
call_value->se_data = NULL;
call_value->private_data = NULL;
call_value->pol = NULL;
@@ -3527,11 +3537,11 @@ dissect_dcerpc_cn_rqst (tvbuff_t *tvb, gint offset, packet_info *pinfo,
call_value->flags |= DCERPC_IS_NDR64;
}
- g_hash_table_insert (dcerpc_cn_calls, call_key, call_value);
+ g_hash_table_insert(dcerpc_cn_calls, call_key, call_value);
new_matched_key = se_alloc(sizeof (dcerpc_matched_key));
*new_matched_key = matched_key;
- g_hash_table_insert (dcerpc_matched, new_matched_key, call_value);
+ g_hash_table_insert(dcerpc_matched, new_matched_key, call_value);
value = call_value;
}
}
@@ -3540,7 +3550,7 @@ dissect_dcerpc_cn_rqst (tvbuff_t *tvb, gint offset, packet_info *pinfo,
if (value) {
dcerpc_info *di;
- di=get_next_di();
+ di = get_next_di();
/* handoff this call */
di->conv = conv;
di->call_id = hdr->call_id;
@@ -3549,16 +3559,16 @@ dissect_dcerpc_cn_rqst (tvbuff_t *tvb, gint offset, packet_info *pinfo,
di->call_data = value;
di->hf_index = -1;
- if(value->rep_frame!=0){
+ if (value->rep_frame != 0) {
pi = proto_tree_add_uint(dcerpc_tree, hf_dcerpc_response_in,
tvb, 0, 0, value->rep_frame);
PROTO_ITEM_SET_GENERATED(pi);
- if(parent_pi != NULL) {
+ if (parent_pi != NULL) {
proto_item_append_text(parent_pi, ", [Resp: #%u]", value->rep_frame);
}
}
- dissect_dcerpc_cn_stub (tvb, offset, pinfo, dcerpc_tree, tree,
+ dissect_dcerpc_cn_stub(tvb, offset, pinfo, dcerpc_tree, tree,
hdr, di, &auth_info, alloc_hint,
value->req_frame);
} else {
@@ -3567,46 +3577,46 @@ dissect_dcerpc_cn_rqst (tvbuff_t *tvb, gint offset, packet_info *pinfo,
PROTO_ITEM_SET_GENERATED(pi);
expert_add_info_format(pinfo, pi, PI_UNDECODED, PI_NOTE, "No bind info for interface Context ID:%u",
ctx_id);
- show_stub_data (tvb, offset, dcerpc_tree, &auth_info, TRUE);
+ show_stub_data(tvb, offset, dcerpc_tree, &auth_info, TRUE);
}
}
/* Dissect the verifier */
- dissect_dcerpc_verifier (tvb, pinfo, dcerpc_tree, hdr, &auth_info);
+ dissect_dcerpc_verifier(tvb, pinfo, dcerpc_tree, hdr, &auth_info);
}
static void
-dissect_dcerpc_cn_resp (tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *dcerpc_tree, proto_tree *tree,
- e_dce_cn_common_hdr_t *hdr)
+dissect_dcerpc_cn_resp(tvbuff_t *tvb, gint offset, packet_info *pinfo,
+ proto_tree *dcerpc_tree, proto_tree *tree,
+ e_dce_cn_common_hdr_t *hdr)
{
- dcerpc_call_value *value = NULL;
- conversation_t *conv;
- guint16 ctx_id;
- dcerpc_auth_info auth_info;
- guint32 alloc_hint;
- proto_item *pi;
- proto_item *parent_pi;
- e_uuid_t obj_id_null = DCERPC_UUID_NULL;
-
- offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_cn_alloc_hint, &alloc_hint);
-
- offset = dissect_dcerpc_uint16 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_cn_ctx_id, &ctx_id);
+ dcerpc_call_value *value = NULL;
+ conversation_t *conv;
+ guint16 ctx_id;
+ dcerpc_auth_info auth_info;
+ guint32 alloc_hint;
+ proto_item *pi;
+ proto_item *parent_pi;
+ e_uuid_t obj_id_null = DCERPC_UUID_NULL;
+
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_cn_alloc_hint, &alloc_hint);
+
+ offset = dissect_dcerpc_uint16(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_cn_ctx_id, &ctx_id);
parent_pi = proto_tree_get_parent(dcerpc_tree);
- if(parent_pi != NULL) {
+ if (parent_pi != NULL) {
proto_item_append_text(parent_pi, " Ctx: %u", ctx_id);
}
/* save context ID for use with dcerpc_add_conv_to_bind_table() */
pinfo->dcectxid = ctx_id;
- col_append_fstr (pinfo->cinfo, COL_INFO, " ctx_id: %u", ctx_id);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " ctx_id: %u", ctx_id);
- offset = dissect_dcerpc_uint8 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_cn_cancel_count, NULL);
+ offset = dissect_dcerpc_uint8(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_cn_cancel_count, NULL);
/* padding */
offset++;
@@ -3614,14 +3624,14 @@ dissect_dcerpc_cn_resp (tvbuff_t *tvb, gint offset, packet_info *pinfo,
* XXX - what if this was set when the connection was set up,
* and we just have a security context?
*/
- dissect_dcerpc_cn_auth (tvb, offset, pinfo, dcerpc_tree, hdr, FALSE, &auth_info);
+ dissect_dcerpc_cn_auth(tvb, offset, pinfo, dcerpc_tree, hdr, FALSE, &auth_info);
- conv = find_conversation (pinfo->fd->num, &pinfo->src, &pinfo->dst, pinfo->ptype,
- pinfo->srcport, pinfo->destport, 0);
+ conv = find_conversation(pinfo->fd->num, &pinfo->src, &pinfo->dst, pinfo->ptype,
+ pinfo->srcport, pinfo->destport, 0);
if (!conv) {
/* no point in creating one here, really */
- show_stub_data (tvb, offset, dcerpc_tree, &auth_info, TRUE);
+ show_stub_data(tvb, offset, dcerpc_tree, &auth_info, TRUE);
} else {
dcerpc_matched_key matched_key, *new_matched_key;
@@ -3632,25 +3642,25 @@ dissect_dcerpc_cn_resp (tvbuff_t *tvb, gint offset, packet_info *pinfo,
*/
matched_key.frame = pinfo->fd->num;
matched_key.call_id = hdr->call_id;
- value=g_hash_table_lookup(dcerpc_matched, &matched_key);
- if(!value){
+ value = g_hash_table_lookup(dcerpc_matched, &matched_key);
+ if (!value) {
dcerpc_cn_call_key call_key;
dcerpc_call_value *call_value;
- call_key.conv=conv;
- call_key.call_id=hdr->call_id;
- call_key.smb_fid=dcerpc_get_transport_salt(pinfo);
+ call_key.conv = conv;
+ call_key.call_id = hdr->call_id;
+ call_key.smb_fid = dcerpc_get_transport_salt(pinfo);
- if((call_value=g_hash_table_lookup(dcerpc_cn_calls, &call_key))){
+ if ((call_value = g_hash_table_lookup(dcerpc_cn_calls, &call_key))) {
/* extra sanity check, only match them if the reply
came after the request */
- if(call_value->req_frame<pinfo->fd->num){
+ if (call_value->req_frame<pinfo->fd->num) {
new_matched_key = se_alloc(sizeof (dcerpc_matched_key));
*new_matched_key = matched_key;
- g_hash_table_insert (dcerpc_matched, new_matched_key, call_value);
+ g_hash_table_insert(dcerpc_matched, new_matched_key, call_value);
value = call_value;
- if(call_value->rep_frame==0){
- call_value->rep_frame=pinfo->fd->num;
+ if (call_value->rep_frame == 0) {
+ call_value->rep_frame = pinfo->fd->num;
}
}
}
@@ -3659,7 +3669,7 @@ dissect_dcerpc_cn_resp (tvbuff_t *tvb, gint offset, packet_info *pinfo,
if (value) {
dcerpc_info *di;
- di=get_next_di();
+ di = get_next_di();
/* handoff this call */
di->conv = conv;
di->call_id = hdr->call_id;
@@ -3667,23 +3677,23 @@ dissect_dcerpc_cn_resp (tvbuff_t *tvb, gint offset, packet_info *pinfo,
di->ptype = PDU_RESP;
di->call_data = value;
- proto_tree_add_uint (dcerpc_tree, hf_dcerpc_opnum, tvb, 0, 0, value->opnum);
+ proto_tree_add_uint(dcerpc_tree, hf_dcerpc_opnum, tvb, 0, 0, value->opnum);
/* (optional) "Object UUID" from request */
- if (value && dcerpc_tree && memcmp(&value->object_uuid, &obj_id_null, sizeof(obj_id_null)) != 0) {
- pi = proto_tree_add_guid_format (dcerpc_tree, hf_dcerpc_obj_id, tvb,
- offset, 0, (e_guid_t *) &value->object_uuid, "Object UUID: %s",
- guid_to_str((e_guid_t *) &value->object_uuid));
+ if (value && dcerpc_tree && (memcmp(&value->object_uuid, &obj_id_null, sizeof(obj_id_null)) != 0)) {
+ pi = proto_tree_add_guid_format(dcerpc_tree, hf_dcerpc_obj_id, tvb,
+ offset, 0, (e_guid_t *) &value->object_uuid, "Object UUID: %s",
+ guid_to_str((e_guid_t *) &value->object_uuid));
PROTO_ITEM_SET_GENERATED(pi);
}
/* request in */
- if(value->req_frame!=0){
+ if (value->req_frame != 0) {
nstime_t delta_ts;
pi = proto_tree_add_uint(dcerpc_tree, hf_dcerpc_request_in,
tvb, 0, 0, value->req_frame);
PROTO_ITEM_SET_GENERATED(pi);
- if(parent_pi != NULL) {
+ if (parent_pi != NULL) {
proto_item_append_text(parent_pi, ", [Req: #%u]", value->req_frame);
}
nstime_delta(&delta_ts, &pinfo->fd->abs_ts, &value->req_time);
@@ -3696,54 +3706,56 @@ dissect_dcerpc_cn_resp (tvbuff_t *tvb, gint offset, packet_info *pinfo,
"No request to this DCE/RPC call found");
}
- dissect_dcerpc_cn_stub (tvb, offset, pinfo, dcerpc_tree, tree,
- hdr, di, &auth_info, alloc_hint,
- value->rep_frame);
+ dissect_dcerpc_cn_stub(tvb, offset, pinfo, dcerpc_tree, tree,
+ hdr, di, &auth_info, alloc_hint,
+ value->rep_frame);
} else {
/* no bind information, simply show stub data */
pi = proto_tree_add_text(dcerpc_tree, tvb, offset, 0, "No bind info for this interface Context ID - capture start too late?");
PROTO_ITEM_SET_GENERATED(pi);
expert_add_info_format(pinfo, pi, PI_UNDECODED, PI_NOTE, "No bind info for interface Context ID:%u",
ctx_id);
- show_stub_data (tvb, offset, dcerpc_tree, &auth_info, TRUE);
+ show_stub_data(tvb, offset, dcerpc_tree, &auth_info, TRUE);
}
}
/* Dissect the verifier */
- dissect_dcerpc_verifier (tvb, pinfo, dcerpc_tree, hdr, &auth_info);
+ dissect_dcerpc_verifier(tvb, pinfo, dcerpc_tree, hdr, &auth_info);
}
static void
-dissect_dcerpc_cn_fault (tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *dcerpc_tree, e_dce_cn_common_hdr_t *hdr)
+dissect_dcerpc_cn_fault(tvbuff_t *tvb, gint offset, packet_info *pinfo,
+ proto_tree *dcerpc_tree, e_dce_cn_common_hdr_t *hdr)
{
dcerpc_call_value *value = NULL;
- conversation_t *conv;
- guint16 ctx_id;
- guint32 status;
- guint32 alloc_hint;
- dcerpc_auth_info auth_info;
- proto_item *pi = NULL;
+ conversation_t *conv;
+ guint16 ctx_id;
+ guint32 status;
+ guint32 alloc_hint;
+ dcerpc_auth_info auth_info;
+ proto_item *pi = NULL;
- offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_cn_alloc_hint, &alloc_hint);
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_cn_alloc_hint, &alloc_hint);
- offset = dissect_dcerpc_uint16 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_cn_ctx_id, &ctx_id);
+ offset = dissect_dcerpc_uint16(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_cn_ctx_id, &ctx_id);
- offset = dissect_dcerpc_uint8 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_cn_cancel_count, NULL);
+ offset = dissect_dcerpc_uint8(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_cn_cancel_count, NULL);
/* padding */
offset++;
- /*offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_cn_status, &status);*/
+#if 0
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_cn_status, &status);
+#endif
status = ((hdr->drep[0] & DREP_LITTLE_ENDIAN)
- ? tvb_get_letohl (tvb, offset)
- : tvb_get_ntohl (tvb, offset));
+ ? tvb_get_letohl(tvb, offset)
+ : tvb_get_ntohl(tvb, offset));
if (dcerpc_tree) {
- pi = proto_tree_add_item (dcerpc_tree, hf_dcerpc_cn_status, tvb, offset, 4, DREP_ENC_INTEGER(hdr->drep));
+ pi = proto_tree_add_item(dcerpc_tree, hf_dcerpc_cn_status, tvb, offset, 4, DREP_ENC_INTEGER(hdr->drep));
}
offset+=4;
@@ -3753,10 +3765,10 @@ dissect_dcerpc_cn_fault (tvbuff_t *tvb, gint offset, packet_info *pinfo,
/* save context ID for use with dcerpc_add_conv_to_bind_table() */
pinfo->dcectxid = ctx_id;
- col_append_fstr (pinfo->cinfo, COL_INFO,
- " ctx_id: %u status: %s", ctx_id,
- val_to_str(status, reject_status_vals,
- "Unknown (0x%08x)"));
+ col_append_fstr(pinfo->cinfo, COL_INFO,
+ " ctx_id: %u status: %s", ctx_id,
+ val_to_str(status, reject_status_vals,
+ "Unknown (0x%08x)"));
/* padding */
offset += 4;
@@ -3765,10 +3777,10 @@ dissect_dcerpc_cn_fault (tvbuff_t *tvb, gint offset, packet_info *pinfo,
* XXX - what if this was set when the connection was set up,
* and we just have a security context?
*/
- dissect_dcerpc_cn_auth (tvb, offset, pinfo, dcerpc_tree, hdr, FALSE, &auth_info);
+ dissect_dcerpc_cn_auth(tvb, offset, pinfo, dcerpc_tree, hdr, FALSE, &auth_info);
- conv = find_conversation (pinfo->fd->num, &pinfo->src, &pinfo->dst, pinfo->ptype,
- pinfo->srcport, pinfo->destport, 0);
+ conv = find_conversation(pinfo->fd->num, &pinfo->src, &pinfo->dst, pinfo->ptype,
+ pinfo->srcport, pinfo->destport, 0);
if (!conv) {
/* no point in creating one here, really */
} else {
@@ -3781,23 +3793,23 @@ dissect_dcerpc_cn_fault (tvbuff_t *tvb, gint offset, packet_info *pinfo,
*/
matched_key.frame = pinfo->fd->num;
matched_key.call_id = hdr->call_id;
- value=g_hash_table_lookup(dcerpc_matched, &matched_key);
- if(!value){
+ value = g_hash_table_lookup(dcerpc_matched, &matched_key);
+ if (!value) {
dcerpc_cn_call_key call_key;
dcerpc_call_value *call_value;
- call_key.conv=conv;
- call_key.call_id=hdr->call_id;
- call_key.smb_fid=dcerpc_get_transport_salt(pinfo);
+ call_key.conv = conv;
+ call_key.call_id = hdr->call_id;
+ call_key.smb_fid = dcerpc_get_transport_salt(pinfo);
- if((call_value=g_hash_table_lookup(dcerpc_cn_calls, &call_key))){
+ if ((call_value = g_hash_table_lookup(dcerpc_cn_calls, &call_key))) {
new_matched_key = se_alloc(sizeof (dcerpc_matched_key));
*new_matched_key = matched_key;
- g_hash_table_insert (dcerpc_matched, new_matched_key, call_value);
+ g_hash_table_insert(dcerpc_matched, new_matched_key, call_value);
value = call_value;
- if(call_value->rep_frame==0){
- call_value->rep_frame=pinfo->fd->num;
+ if (call_value->rep_frame == 0) {
+ call_value->rep_frame = pinfo->fd->num;
}
}
@@ -3808,7 +3820,7 @@ dissect_dcerpc_cn_fault (tvbuff_t *tvb, gint offset, packet_info *pinfo,
dcerpc_info *di;
proto_item *parent_pi;
- di=get_next_di();
+ di = get_next_di();
/* handoff this call */
di->conv = conv;
di->call_id = hdr->call_id;
@@ -3816,14 +3828,14 @@ dissect_dcerpc_cn_fault (tvbuff_t *tvb, gint offset, packet_info *pinfo,
di->ptype = PDU_FAULT;
di->call_data = value;
- proto_tree_add_uint (dcerpc_tree, hf_dcerpc_opnum, tvb, 0, 0, value->opnum);
- if(value->req_frame!=0){
+ proto_tree_add_uint(dcerpc_tree, hf_dcerpc_opnum, tvb, 0, 0, value->opnum);
+ if (value->req_frame != 0) {
nstime_t delta_ts;
pi = proto_tree_add_uint(dcerpc_tree, hf_dcerpc_request_in,
tvb, 0, 0, value->req_frame);
PROTO_ITEM_SET_GENERATED(pi);
parent_pi = proto_tree_get_parent(dcerpc_tree);
- if(parent_pi != NULL) {
+ if (parent_pi != NULL) {
proto_item_append_text(parent_pi, ", [Req: #%u]", value->req_frame);
}
nstime_delta(&delta_ts, &pinfo->fd->abs_ts, &value->req_time);
@@ -3854,9 +3866,9 @@ dissect_dcerpc_cn_fault (tvbuff_t *tvb, gint offset, packet_info *pinfo,
the entire PDU, or if we don't have all the data in this
fragment, just call the handoff directly if this is the
first fragment or the PDU isn't fragmented. */
- if( (!dcerpc_reassemble) || PFC_NOT_FRAGMENTED(hdr) ||
- !tvb_bytes_exist(tvb, offset, stub_length) ){
- if(hdr->flags&PFC_FIRST_FRAG){
+ if ( (!dcerpc_reassemble) || PFC_NOT_FRAGMENTED(hdr) ||
+ !tvb_bytes_exist(tvb, offset, stub_length) ) {
+ if (hdr->flags&PFC_FIRST_FRAG) {
/* First fragment, possibly the only fragment */
/*
* XXX - should there be a third routine for each
@@ -3871,10 +3883,10 @@ dissect_dcerpc_cn_fault (tvbuff_t *tvb, gint offset, packet_info *pinfo,
if (dcerpc_tree) {
if (stub_length > 0) {
tvb_ensure_bytes_exist(tvb, offset, stub_length);
- proto_tree_add_text (dcerpc_tree, tvb, offset, stub_length,
- "Fault stub data (%d byte%s)",
- stub_length,
- plurality(stub_length, "", "s"));
+ proto_tree_add_text(dcerpc_tree, tvb, offset, stub_length,
+ "Fault stub data (%d byte%s)",
+ stub_length,
+ plurality(stub_length, "", "s"));
}
}
} else {
@@ -3882,10 +3894,10 @@ dissect_dcerpc_cn_fault (tvbuff_t *tvb, gint offset, packet_info *pinfo,
if (dcerpc_tree) {
if (stub_length > 0) {
tvb_ensure_bytes_exist(tvb, offset, stub_length);
- proto_tree_add_text (dcerpc_tree, tvb, offset, stub_length,
- "Fragment data (%d byte%s)",
- stub_length,
- plurality(stub_length, "", "s"));
+ proto_tree_add_text(dcerpc_tree, tvb, offset, stub_length,
+ "Fragment data (%d byte%s)",
+ stub_length,
+ plurality(stub_length, "", "s"));
}
}
}
@@ -3897,21 +3909,21 @@ dissect_dcerpc_cn_fault (tvbuff_t *tvb, gint offset, packet_info *pinfo,
if (dcerpc_tree) {
if (length > 0) {
tvb_ensure_bytes_exist(tvb, offset, stub_length);
- proto_tree_add_text (dcerpc_tree, tvb, offset, stub_length,
- "Fragment data (%d byte%s)",
- stub_length,
- plurality(stub_length, "", "s"));
+ proto_tree_add_text(dcerpc_tree, tvb, offset, stub_length,
+ "Fragment data (%d byte%s)",
+ stub_length,
+ plurality(stub_length, "", "s"));
}
}
- if(hdr->flags&PFC_FIRST_FRAG){ /* FIRST fragment */
- if( (!pinfo->fd->flags.visited) && value->rep_frame ){
+ if (hdr->flags&PFC_FIRST_FRAG) { /* FIRST fragment */
+ if ( (!pinfo->fd->flags.visited) && value->rep_frame ) {
fragment_add_seq_next(tvb, offset, pinfo, value->rep_frame,
dcerpc_co_fragment_table, dcerpc_co_reassemble_table,
stub_length,
TRUE);
}
- } else if(hdr->flags&PFC_LAST_FRAG){ /* LAST fragment */
- if( value->rep_frame ){
+ } else if (hdr->flags&PFC_LAST_FRAG) { /* LAST fragment */
+ if ( value->rep_frame ) {
fragment_data *fd_head;
fd_head = fragment_add_seq_next(tvb, offset, pinfo,
@@ -3920,7 +3932,7 @@ dissect_dcerpc_cn_fault (tvbuff_t *tvb, gint offset, packet_info *pinfo,
stub_length,
TRUE);
- if(fd_head){
+ if (fd_head) {
/* We completed reassembly */
tvbuff_t *next_tvb;
proto_item *frag_tree_item;
@@ -3943,16 +3955,16 @@ dissect_dcerpc_cn_fault (tvbuff_t *tvb, gint offset, packet_info *pinfo,
if (dcerpc_tree) {
if (length > 0) {
tvb_ensure_bytes_exist(tvb, offset, stub_length);
- proto_tree_add_text (dcerpc_tree, tvb, offset, stub_length,
- "Fault stub data (%d byte%s)",
- stub_length,
- plurality(stub_length, "", "s"));
+ proto_tree_add_text(dcerpc_tree, tvb, offset, stub_length,
+ "Fault stub data (%d byte%s)",
+ stub_length,
+ plurality(stub_length, "", "s"));
}
}
}
}
} else { /* MIDDLE fragment(s) */
- if( (!pinfo->fd->flags.visited) && value->rep_frame ){
+ if ( (!pinfo->fd->flags.visited) && value->rep_frame ) {
fragment_add_seq_next(tvb, offset, pinfo, value->rep_frame,
dcerpc_co_fragment_table, dcerpc_co_reassemble_table,
stub_length,
@@ -3965,36 +3977,36 @@ dissect_dcerpc_cn_fault (tvbuff_t *tvb, gint offset, packet_info *pinfo,
}
static void
-dissect_dcerpc_cn_rts (tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *dcerpc_tree, e_dce_cn_common_hdr_t *hdr)
+dissect_dcerpc_cn_rts(tvbuff_t *tvb, gint offset, packet_info *pinfo,
+ proto_tree *dcerpc_tree, e_dce_cn_common_hdr_t *hdr)
{
- proto_item *tf = NULL;
+ proto_item *tf = NULL;
proto_tree *cn_rts_pdu_tree = NULL;
- guint16 rts_flags;
- guint16 commands_nb = 0;
- guint32 *cmd;
- guint32 i;
- const char *info_str = NULL;
+ guint16 rts_flags;
+ guint16 commands_nb = 0;
+ guint32 *cmd;
+ guint32 i;
+ const char *info_str = NULL;
/* Dissect specific RTS header */
- rts_flags = dcerpc_tvb_get_ntohs (tvb, offset, hdr->drep);
+ rts_flags = dcerpc_tvb_get_ntohs(tvb, offset, hdr->drep);
if (dcerpc_tree) {
proto_tree *cn_rts_flags_tree;
- tf = proto_tree_add_uint (dcerpc_tree, hf_dcerpc_cn_rts_flags, tvb, offset, 2, rts_flags);
+ tf = proto_tree_add_uint(dcerpc_tree, hf_dcerpc_cn_rts_flags, tvb, offset, 2, rts_flags);
cn_rts_flags_tree = proto_item_add_subtree(tf, ett_dcerpc_cn_rts_flags);
- proto_tree_add_boolean (cn_rts_flags_tree, hf_dcerpc_cn_rts_flags_none, tvb, offset, 1, rts_flags);
- proto_tree_add_boolean (cn_rts_flags_tree, hf_dcerpc_cn_rts_flags_ping, tvb, offset, 1, rts_flags);
- proto_tree_add_boolean (cn_rts_flags_tree, hf_dcerpc_cn_rts_flags_other_cmd, tvb, offset, 1, rts_flags);
- proto_tree_add_boolean (cn_rts_flags_tree, hf_dcerpc_cn_rts_flags_recycle_channel, tvb, offset, 1, rts_flags);
- proto_tree_add_boolean (cn_rts_flags_tree, hf_dcerpc_cn_rts_flags_in_channel, tvb, offset, 1, rts_flags);
- proto_tree_add_boolean (cn_rts_flags_tree, hf_dcerpc_cn_rts_flags_out_channel, tvb, offset, 1, rts_flags);
- proto_tree_add_boolean (cn_rts_flags_tree, hf_dcerpc_cn_rts_flags_eof, tvb, offset, 1, rts_flags);
+ proto_tree_add_boolean(cn_rts_flags_tree, hf_dcerpc_cn_rts_flags_none, tvb, offset, 1, rts_flags);
+ proto_tree_add_boolean(cn_rts_flags_tree, hf_dcerpc_cn_rts_flags_ping, tvb, offset, 1, rts_flags);
+ proto_tree_add_boolean(cn_rts_flags_tree, hf_dcerpc_cn_rts_flags_other_cmd, tvb, offset, 1, rts_flags);
+ proto_tree_add_boolean(cn_rts_flags_tree, hf_dcerpc_cn_rts_flags_recycle_channel, tvb, offset, 1, rts_flags);
+ proto_tree_add_boolean(cn_rts_flags_tree, hf_dcerpc_cn_rts_flags_in_channel, tvb, offset, 1, rts_flags);
+ proto_tree_add_boolean(cn_rts_flags_tree, hf_dcerpc_cn_rts_flags_out_channel, tvb, offset, 1, rts_flags);
+ proto_tree_add_boolean(cn_rts_flags_tree, hf_dcerpc_cn_rts_flags_eof, tvb, offset, 1, rts_flags);
}
offset += 2;
- offset = dissect_dcerpc_uint16 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
- hf_dcerpc_cn_rts_commands_nb, &commands_nb);
+ offset = dissect_dcerpc_uint16(tvb, offset, pinfo, dcerpc_tree, hdr->drep,
+ hf_dcerpc_cn_rts_commands_nb, &commands_nb);
/* Create the RTS PDU tree - we do not yet know its name */
tf = proto_tree_add_text(dcerpc_tree, tvb, offset, tvb_length_remaining(tvb, offset), "RTS PDU: %u commands", commands_nb);
@@ -4005,44 +4017,44 @@ dissect_dcerpc_cn_rts (tvbuff_t *tvb, gint offset, packet_info *pinfo,
/* Dissect commands */
for (i = 0; i < commands_nb; ++i) {
proto_tree *cn_rts_command_tree = NULL;
- const guint32 command = dcerpc_tvb_get_ntohl (tvb, offset, hdr->drep);
+ const guint32 command = dcerpc_tvb_get_ntohl(tvb, offset, hdr->drep);
cmd[i] = command;
- tf = proto_tree_add_uint (cn_rts_pdu_tree, hf_dcerpc_cn_rts_command, tvb, offset, 4, command);
+ tf = proto_tree_add_uint(cn_rts_pdu_tree, hf_dcerpc_cn_rts_command, tvb, offset, 4, command);
cn_rts_command_tree = proto_item_add_subtree(tf, ett_dcerpc_cn_rts_command);
offset += 4;
switch (command) {
case RTS_CMD_RECEIVEWINDOWSIZE:
- offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, cn_rts_command_tree, hdr->drep, hf_dcerpc_cn_rts_command_receivewindowsize, NULL);
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, cn_rts_command_tree, hdr->drep, hf_dcerpc_cn_rts_command_receivewindowsize, NULL);
break;
case RTS_CMD_FLOWCONTROLACK:
- offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, cn_rts_command_tree, hdr->drep, hf_dcerpc_cn_rts_command_fack_bytesreceived, NULL);
- offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, cn_rts_command_tree, hdr->drep, hf_dcerpc_cn_rts_command_fack_availablewindow, NULL);
- offset = dissect_dcerpc_uuid_t (tvb, offset, pinfo, cn_rts_command_tree, hdr->drep, hf_dcerpc_cn_rts_command_fack_channelcookie, NULL);
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, cn_rts_command_tree, hdr->drep, hf_dcerpc_cn_rts_command_fack_bytesreceived, NULL);
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, cn_rts_command_tree, hdr->drep, hf_dcerpc_cn_rts_command_fack_availablewindow, NULL);
+ offset = dissect_dcerpc_uuid_t(tvb, offset, pinfo, cn_rts_command_tree, hdr->drep, hf_dcerpc_cn_rts_command_fack_channelcookie, NULL);
break;
case RTS_CMD_CONNECTIONTIMEOUT:
- offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, cn_rts_command_tree, hdr->drep, hf_dcerpc_cn_rts_command_connectiontimeout, NULL);
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, cn_rts_command_tree, hdr->drep, hf_dcerpc_cn_rts_command_connectiontimeout, NULL);
break;
case RTS_CMD_COOKIE:
- offset = dissect_dcerpc_uuid_t (tvb, offset, pinfo, cn_rts_command_tree, hdr->drep, hf_dcerpc_cn_rts_command_cookie, NULL);
+ offset = dissect_dcerpc_uuid_t(tvb, offset, pinfo, cn_rts_command_tree, hdr->drep, hf_dcerpc_cn_rts_command_cookie, NULL);
break;
case RTS_CMD_CHANNELLIFETIME:
- offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, cn_rts_command_tree, hdr->drep, hf_dcerpc_cn_rts_command_channellifetime, NULL);
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, cn_rts_command_tree, hdr->drep, hf_dcerpc_cn_rts_command_channellifetime, NULL);
break;
case RTS_CMD_CLIENTKEEPALIVE:
- offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, cn_rts_command_tree, hdr->drep, hf_dcerpc_cn_rts_command_clientkeepalive, NULL);
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, cn_rts_command_tree, hdr->drep, hf_dcerpc_cn_rts_command_clientkeepalive, NULL);
break;
case RTS_CMD_VERSION:
- offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, cn_rts_command_tree, hdr->drep, hf_dcerpc_cn_rts_command_version, NULL);
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, cn_rts_command_tree, hdr->drep, hf_dcerpc_cn_rts_command_version, NULL);
break;
case RTS_CMD_EMPTY:
break;
case RTS_CMD_PADDING: {
guint8 *padding;
- const guint32 conformance_count = dcerpc_tvb_get_ntohl (tvb, offset, hdr->drep);
- proto_tree_add_uint (cn_rts_command_tree, hf_dcerpc_cn_rts_command_conformancecount, tvb, offset, 4, conformance_count);
+ const guint32 conformance_count = dcerpc_tvb_get_ntohl(tvb, offset, hdr->drep);
+ proto_tree_add_uint(cn_rts_command_tree, hf_dcerpc_cn_rts_command_conformancecount, tvb, offset, 4, conformance_count);
offset += 4;
padding = tvb_memdup(tvb, offset, conformance_count);
- proto_tree_add_bytes (cn_rts_command_tree, hf_dcerpc_cn_rts_command_padding, tvb, offset, conformance_count, padding);
+ proto_tree_add_bytes(cn_rts_command_tree, hf_dcerpc_cn_rts_command_padding, tvb, offset, conformance_count, padding);
offset += conformance_count;
} break;
case RTS_CMD_NEGATIVEANCE:
@@ -4051,34 +4063,34 @@ dissect_dcerpc_cn_rts (tvbuff_t *tvb, gint offset, packet_info *pinfo,
break;
case RTS_CMD_CLIENTADDRESS: {
guint8 *padding;
- const guint32 addrtype = dcerpc_tvb_get_ntohl (tvb, offset, hdr->drep);
- proto_tree_add_uint (cn_rts_command_tree, hf_dcerpc_cn_rts_command_addrtype, tvb, offset, 4, addrtype);
+ const guint32 addrtype = dcerpc_tvb_get_ntohl(tvb, offset, hdr->drep);
+ proto_tree_add_uint(cn_rts_command_tree, hf_dcerpc_cn_rts_command_addrtype, tvb, offset, 4, addrtype);
offset += 4;
switch (addrtype) {
case RTS_IPV4: {
const guint32 addr4 = tvb_get_ipv4(tvb, offset);
- proto_tree_add_text(cn_rts_command_tree, tvb, offset, 4, "%s", (const char *)get_hostname(addr4));
+ proto_tree_add_text(cn_rts_command_tree, tvb, offset, 4, "%s", get_hostname(addr4));
offset += 4;
} break;
case RTS_IPV6: {
struct e_in6_addr addr6;
tvb_get_ipv6(tvb, offset, &addr6);
- proto_tree_add_text(cn_rts_command_tree, tvb, offset, 16, "%s", (const char *)get_hostname6(&addr6));
+ proto_tree_add_text(cn_rts_command_tree, tvb, offset, 16, "%s", get_hostname6(&addr6));
offset += 16;
} break;
}
padding = tvb_memdup(tvb, offset, 12);
- proto_tree_add_bytes (cn_rts_command_tree, hf_dcerpc_cn_rts_command_padding, tvb, offset, 12, padding);
+ proto_tree_add_bytes(cn_rts_command_tree, hf_dcerpc_cn_rts_command_padding, tvb, offset, 12, padding);
offset += 12;
} break;
case RTS_CMD_ASSOCIATIONGROUPID:
- offset = dissect_dcerpc_uuid_t (tvb, offset, pinfo, cn_rts_command_tree, hdr->drep, hf_dcerpc_cn_rts_command_associationgroupid, NULL);
+ offset = dissect_dcerpc_uuid_t(tvb, offset, pinfo, cn_rts_command_tree, hdr->drep, hf_dcerpc_cn_rts_command_associationgroupid, NULL);
break;
case RTS_CMD_DESTINATION:
- offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, cn_rts_command_tree, hdr->drep, hf_dcerpc_cn_rts_command_forwarddestination, NULL);
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, cn_rts_command_tree, hdr->drep, hf_dcerpc_cn_rts_command_forwarddestination, NULL);
break;
case RTS_CMD_PINGTRAFFICSENTNOTIFY:
- offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, cn_rts_command_tree, hdr->drep, hf_dcerpc_cn_rts_command_pingtrafficsentnotify, NULL);
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, cn_rts_command_tree, hdr->drep, hf_dcerpc_cn_rts_command_pingtrafficsentnotify, NULL);
break;
default:
proto_tree_add_text(cn_rts_command_tree, tvb, offset, 0, "unknown RTS command number");
@@ -4175,7 +4187,7 @@ dissect_dcerpc_cn_rts (tvbuff_t *tvb, gint offset, packet_info *pinfo,
}
break;
case RTS_FLAG_RECYCLE_CHANNEL:
- switch(commands_nb) {
+ switch (commands_nb) {
case 1:
if (cmd[0] == 0xD) {
info_str = "OUT_R1/A1,OUT_R1/A2,OUT_R2/A1,OUT_R2/A2";
@@ -4282,20 +4294,20 @@ dissect_dcerpc_cn_rts (tvbuff_t *tvb, gint offset, packet_info *pinfo,
* pinfo->private_data structure to expect.
*/
static gboolean
-dissect_dcerpc_cn (tvbuff_t *tvb, int offset, packet_info *pinfo,
- proto_tree *tree, gboolean can_desegment, int *pkt_len)
+dissect_dcerpc_cn(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree, gboolean can_desegment, int *pkt_len)
{
- static const guint8 nulls[4] = { 0 };
- int start_offset;
- int padding = 0;
- proto_item *ti = NULL;
- proto_item *tf = NULL;
- proto_tree *dcerpc_tree = NULL;
- proto_tree *cn_flags_tree = NULL;
- proto_tree *drep_tree = NULL;
- e_dce_cn_common_hdr_t hdr;
- dcerpc_auth_info auth_info;
- tvbuff_t *fragment_tvb;
+ static const guint8 nulls[4] = { 0 };
+ int start_offset;
+ int padding = 0;
+ proto_item *ti = NULL;
+ proto_item *tf = NULL;
+ proto_tree *dcerpc_tree = NULL;
+ proto_tree *cn_flags_tree = NULL;
+ proto_tree *drep_tree = NULL;
+ e_dce_cn_common_hdr_t hdr;
+ dcerpc_auth_info auth_info;
+ tvbuff_t *fragment_tvb;
/*
* when done over nbt, dcerpc requests are padded with 4 bytes of null
@@ -4306,7 +4318,7 @@ dissect_dcerpc_cn (tvbuff_t *tvb, int offset, packet_info *pinfo,
* the 4 bytes of null padding, and make that the dissector
* used for "netbios".
*/
- if (tvb_memeql (tvb, offset, nulls, 4) == 0) {
+ if (tvb_memeql(tvb, offset, nulls, 4) == 0) {
/*
* Skip the padding.
@@ -4317,59 +4329,59 @@ dissect_dcerpc_cn (tvbuff_t *tvb, int offset, packet_info *pinfo,
/*
* Check if this looks like a C/O DCERPC call
*/
- if (!tvb_bytes_exist (tvb, offset, sizeof (hdr))) {
+ if (!tvb_bytes_exist(tvb, offset, sizeof (hdr))) {
return FALSE; /* not enough information to check */
}
start_offset = offset;
- hdr.rpc_ver = tvb_get_guint8 (tvb, offset++);
+ hdr.rpc_ver = tvb_get_guint8(tvb, offset++);
if (hdr.rpc_ver != 5)
return FALSE;
- hdr.rpc_ver_minor = tvb_get_guint8 (tvb, offset++);
- if (hdr.rpc_ver_minor != 0 && hdr.rpc_ver_minor != 1)
+ hdr.rpc_ver_minor = tvb_get_guint8(tvb, offset++);
+ if ((hdr.rpc_ver_minor != 0) && (hdr.rpc_ver_minor != 1))
return FALSE;
- hdr.ptype = tvb_get_guint8 (tvb, offset++);
+ hdr.ptype = tvb_get_guint8(tvb, offset++);
if (hdr.ptype > PDU_RTS)
return FALSE;
- hdr.flags = tvb_get_guint8 (tvb, offset++);
- tvb_memcpy (tvb, (guint8 *)hdr.drep, offset, sizeof (hdr.drep));
+ hdr.flags = tvb_get_guint8(tvb, offset++);
+ tvb_memcpy(tvb, (guint8 *)hdr.drep, offset, sizeof (hdr.drep));
offset += sizeof (hdr.drep);
- hdr.frag_len = dcerpc_tvb_get_ntohs (tvb, offset, hdr.drep);
+ hdr.frag_len = dcerpc_tvb_get_ntohs(tvb, offset, hdr.drep);
offset += 2;
- hdr.auth_len = dcerpc_tvb_get_ntohs (tvb, offset, hdr.drep);
+ hdr.auth_len = dcerpc_tvb_get_ntohs(tvb, offset, hdr.drep);
offset += 2;
- hdr.call_id = dcerpc_tvb_get_ntohl (tvb, offset, hdr.drep);
+ hdr.call_id = dcerpc_tvb_get_ntohl(tvb, offset, hdr.drep);
offset += 4;
- if(pinfo->dcectxid == 0) {
- col_append_fstr (pinfo->cinfo, COL_DCE_CALL, "%u", hdr.call_id);
+ if (pinfo->dcectxid == 0) {
+ col_append_fstr(pinfo->cinfo, COL_DCE_CALL, "%u", hdr.call_id);
} else {
/* this is not the first DCE-RPC request/response in this (TCP?-)PDU,
* prepend a delimiter */
- col_append_fstr (pinfo->cinfo, COL_DCE_CALL, "#%u", hdr.call_id);
+ col_append_fstr(pinfo->cinfo, COL_DCE_CALL, "#%u", hdr.call_id);
}
if (can_desegment && pinfo->can_desegment
&& !tvb_bytes_exist(tvb, start_offset, hdr.frag_len)) {
pinfo->desegment_offset = start_offset;
- pinfo->desegment_len = hdr.frag_len - tvb_length_remaining (tvb, start_offset);
+ pinfo->desegment_len = hdr.frag_len - tvb_length_remaining(tvb, start_offset);
*pkt_len = 0; /* desegmentation required */
return TRUE;
}
- col_set_str (pinfo->cinfo, COL_PROTOCOL, "DCERPC");
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "DCERPC");
- if(pinfo->dcectxid != 0) {
+ if (pinfo->dcectxid != 0) {
/* this is not the first DCE-RPC request/response in this (TCP?-)PDU,
* append a delimiter and set a column fence */
- col_append_str (pinfo->cinfo, COL_INFO, " # ");
+ col_append_str(pinfo->cinfo, COL_INFO, " # ");
col_set_fence(pinfo->cinfo,COL_INFO);
}
- col_add_fstr (pinfo->cinfo, COL_INFO, "%s: call_id: %u",
- pckt_vals[hdr.ptype].strptr, hdr.call_id);
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s: call_id: %u",
+ pckt_vals[hdr.ptype].strptr, hdr.call_id);
- if(pinfo->dcectxid != 0) {
+ if (pinfo->dcectxid != 0) {
/* this is not the first DCE-RPC request/response in this (TCP?-)PDU */
expert_add_info_format(pinfo, NULL, PI_SEQUENCE, PI_CHAT, "Multiple DCE/RPC fragments/PDU's in one packet");
}
@@ -4377,66 +4389,67 @@ dissect_dcerpc_cn (tvbuff_t *tvb, int offset, packet_info *pinfo,
offset = start_offset;
tvb_ensure_bytes_exist(tvb, offset, 16);
if (tree) {
- ti = proto_tree_add_item (tree, proto_dcerpc, tvb, offset, hdr.frag_len, ENC_NA);
- dcerpc_tree = proto_item_add_subtree (ti, ett_dcerpc);
+ ti = proto_tree_add_item(tree, proto_dcerpc, tvb, offset, hdr.frag_len, ENC_NA);
+ dcerpc_tree = proto_item_add_subtree(ti, ett_dcerpc);
}
- proto_tree_add_uint (dcerpc_tree, hf_dcerpc_ver, tvb, offset, 1, hdr.rpc_ver);
+ proto_tree_add_uint(dcerpc_tree, hf_dcerpc_ver, tvb, offset, 1, hdr.rpc_ver);
offset++;
- proto_tree_add_uint (dcerpc_tree, hf_dcerpc_ver_minor, tvb, offset, 1, hdr.rpc_ver_minor);
+ proto_tree_add_uint(dcerpc_tree, hf_dcerpc_ver_minor, tvb, offset, 1, hdr.rpc_ver_minor);
offset++;
- tf = proto_tree_add_uint (dcerpc_tree, hf_dcerpc_packet_type, tvb, offset, 1, hdr.ptype);
+ tf = proto_tree_add_uint(dcerpc_tree, hf_dcerpc_packet_type, tvb, offset, 1, hdr.ptype);
offset++;
- /* XXX - too much "output noise", removed for now
- if(hdr.ptype == PDU_BIND || hdr.ptype == PDU_ALTER ||
+#if 0 /* XXX - too much "output noise", removed for now */
+ if (hdr.ptype == PDU_BIND || hdr.ptype == PDU_ALTER ||
hdr.ptype == PDU_BIND_ACK || hdr.ptype == PDU_ALTER_ACK)
expert_add_info_format(pinfo, tf, PI_SEQUENCE, PI_CHAT, "Context change: %s",
- val_to_str(hdr.ptype, pckt_vals, "(0x%x)"));*/
- if(hdr.ptype == PDU_BIND_NAK)
+ val_to_str(hdr.ptype, pckt_vals, "(0x%x)"));
+#endif
+ if (hdr.ptype == PDU_BIND_NAK)
expert_add_info_format(pinfo, tf, PI_SEQUENCE, PI_WARN, "Bind not acknowledged");
if (tree) {
proto_item_append_text(ti, " %s, Fragment: %s",
- val_to_str(hdr.ptype, pckt_vals, "Unknown (0x%02x)"),
- fragment_type(hdr.flags));
+ val_to_str(hdr.ptype, pckt_vals, "Unknown (0x%02x)"),
+ fragment_type(hdr.flags));
- tf = proto_tree_add_uint (dcerpc_tree, hf_dcerpc_cn_flags, tvb, offset, 1, hdr.flags);
- cn_flags_tree = proto_item_add_subtree (tf, ett_dcerpc_cn_flags);
+ tf = proto_tree_add_uint(dcerpc_tree, hf_dcerpc_cn_flags, tvb, offset, 1, hdr.flags);
+ cn_flags_tree = proto_item_add_subtree(tf, ett_dcerpc_cn_flags);
}
- proto_tree_add_boolean (cn_flags_tree, hf_dcerpc_cn_flags_object, tvb, offset, 1, hdr.flags);
- proto_tree_add_boolean (cn_flags_tree, hf_dcerpc_cn_flags_maybe, tvb, offset, 1, hdr.flags);
- proto_tree_add_boolean (cn_flags_tree, hf_dcerpc_cn_flags_dne, tvb, offset, 1, hdr.flags);
- proto_tree_add_boolean (cn_flags_tree, hf_dcerpc_cn_flags_mpx, tvb, offset, 1, hdr.flags);
- proto_tree_add_boolean (cn_flags_tree, hf_dcerpc_cn_flags_reserved, tvb, offset, 1, hdr.flags);
- proto_tree_add_boolean (cn_flags_tree, hf_dcerpc_cn_flags_cancel_pending, tvb, offset, 1, hdr.flags);
- proto_tree_add_boolean (cn_flags_tree, hf_dcerpc_cn_flags_last_frag, tvb, offset, 1, hdr.flags);
- proto_tree_add_boolean (cn_flags_tree, hf_dcerpc_cn_flags_first_frag, tvb, offset, 1, hdr.flags);
+ proto_tree_add_boolean(cn_flags_tree, hf_dcerpc_cn_flags_object, tvb, offset, 1, hdr.flags);
+ proto_tree_add_boolean(cn_flags_tree, hf_dcerpc_cn_flags_maybe, tvb, offset, 1, hdr.flags);
+ proto_tree_add_boolean(cn_flags_tree, hf_dcerpc_cn_flags_dne, tvb, offset, 1, hdr.flags);
+ proto_tree_add_boolean(cn_flags_tree, hf_dcerpc_cn_flags_mpx, tvb, offset, 1, hdr.flags);
+ proto_tree_add_boolean(cn_flags_tree, hf_dcerpc_cn_flags_reserved, tvb, offset, 1, hdr.flags);
+ proto_tree_add_boolean(cn_flags_tree, hf_dcerpc_cn_flags_cancel_pending, tvb, offset, 1, hdr.flags);
+ proto_tree_add_boolean(cn_flags_tree, hf_dcerpc_cn_flags_last_frag, tvb, offset, 1, hdr.flags);
+ proto_tree_add_boolean(cn_flags_tree, hf_dcerpc_cn_flags_first_frag, tvb, offset, 1, hdr.flags);
offset++;
col_append_fstr(pinfo->cinfo, COL_INFO, " Fragment: %s", fragment_type(hdr.flags));
- if(dcerpc_tree){
- tf = proto_tree_add_bytes (dcerpc_tree, hf_dcerpc_drep, tvb, offset, 4, hdr.drep);
- drep_tree = proto_item_add_subtree (tf, ett_dcerpc_drep);
+ if (dcerpc_tree) {
+ tf = proto_tree_add_bytes(dcerpc_tree, hf_dcerpc_drep, tvb, offset, 4, hdr.drep);
+ drep_tree = proto_item_add_subtree(tf, ett_dcerpc_drep);
}
proto_tree_add_uint(drep_tree, hf_dcerpc_drep_byteorder, tvb, offset, 1, hdr.drep[0] >> 4);
proto_tree_add_uint(drep_tree, hf_dcerpc_drep_character, tvb, offset, 1, hdr.drep[0] & 0x0f);
proto_tree_add_uint(drep_tree, hf_dcerpc_drep_fp, tvb, offset+1, 1, hdr.drep[1]);
offset += sizeof (hdr.drep);
- proto_tree_add_uint (dcerpc_tree, hf_dcerpc_cn_frag_len, tvb, offset, 2, hdr.frag_len);
+ proto_tree_add_uint(dcerpc_tree, hf_dcerpc_cn_frag_len, tvb, offset, 2, hdr.frag_len);
offset += 2;
- proto_tree_add_uint (dcerpc_tree, hf_dcerpc_cn_auth_len, tvb, offset, 2, hdr.auth_len);
+ proto_tree_add_uint(dcerpc_tree, hf_dcerpc_cn_auth_len, tvb, offset, 2, hdr.auth_len);
offset += 2;
- proto_tree_add_uint (dcerpc_tree, hf_dcerpc_cn_call_id, tvb, offset, 4, hdr.call_id);
+ proto_tree_add_uint(dcerpc_tree, hf_dcerpc_cn_call_id, tvb, offset, 4, hdr.call_id);
offset += 4;
- if(ti){
+ if (ti) {
proto_item_append_text(ti, ", FragLen: %u, Call: %u", hdr.frag_len, hdr.call_id);
}
@@ -4474,36 +4487,36 @@ dissect_dcerpc_cn (tvbuff_t *tvb, int offset, packet_info *pinfo,
switch (hdr.ptype) {
case PDU_BIND:
case PDU_ALTER:
- dissect_dcerpc_cn_bind (fragment_tvb, offset, pinfo, dcerpc_tree, &hdr);
+ dissect_dcerpc_cn_bind(fragment_tvb, offset, pinfo, dcerpc_tree, &hdr);
break;
case PDU_BIND_ACK:
case PDU_ALTER_ACK:
- dissect_dcerpc_cn_bind_ack (fragment_tvb, offset, pinfo, dcerpc_tree, &hdr);
+ dissect_dcerpc_cn_bind_ack(fragment_tvb, offset, pinfo, dcerpc_tree, &hdr);
break;
case PDU_AUTH3:
/*
* Nothing after the common header other than credentials.
*/
- dissect_dcerpc_cn_auth (fragment_tvb, offset, pinfo, dcerpc_tree, &hdr, TRUE,
- &auth_info);
+ dissect_dcerpc_cn_auth(fragment_tvb, offset, pinfo, dcerpc_tree, &hdr, TRUE,
+ &auth_info);
break;
case PDU_REQ:
- dissect_dcerpc_cn_rqst (fragment_tvb, offset, pinfo, dcerpc_tree, tree, &hdr);
+ dissect_dcerpc_cn_rqst(fragment_tvb, offset, pinfo, dcerpc_tree, tree, &hdr);
break;
case PDU_RESP:
- dissect_dcerpc_cn_resp (fragment_tvb, offset, pinfo, dcerpc_tree, tree, &hdr);
+ dissect_dcerpc_cn_resp(fragment_tvb, offset, pinfo, dcerpc_tree, tree, &hdr);
break;
case PDU_FAULT:
- dissect_dcerpc_cn_fault (fragment_tvb, offset, pinfo, dcerpc_tree, &hdr);
+ dissect_dcerpc_cn_fault(fragment_tvb, offset, pinfo, dcerpc_tree, &hdr);
break;
case PDU_BIND_NAK:
- dissect_dcerpc_cn_bind_nak (fragment_tvb, offset, pinfo, dcerpc_tree, &hdr);
+ dissect_dcerpc_cn_bind_nak(fragment_tvb, offset, pinfo, dcerpc_tree, &hdr);
break;
case PDU_CO_CANCEL:
@@ -4512,8 +4525,8 @@ dissect_dcerpc_cn (tvbuff_t *tvb, int offset, packet_info *pinfo,
* Nothing after the common header other than an authentication
* verifier.
*/
- dissect_dcerpc_cn_auth (fragment_tvb, offset, pinfo, dcerpc_tree, &hdr, FALSE,
- &auth_info);
+ dissect_dcerpc_cn_auth(fragment_tvb, offset, pinfo, dcerpc_tree, &hdr, FALSE,
+ &auth_info);
break;
case PDU_SHUTDOWN:
@@ -4523,13 +4536,13 @@ dissect_dcerpc_cn (tvbuff_t *tvb, int offset, packet_info *pinfo,
*/
break;
case PDU_RTS:
- dissect_dcerpc_cn_rts (fragment_tvb, offset, pinfo, dcerpc_tree, &hdr);
+ dissect_dcerpc_cn_rts(fragment_tvb, offset, pinfo, dcerpc_tree, &hdr);
break;
default:
/* might as well dissect the auth info */
- dissect_dcerpc_cn_auth (fragment_tvb, offset, pinfo, dcerpc_tree, &hdr, FALSE,
- &auth_info);
+ dissect_dcerpc_cn_auth(fragment_tvb, offset, pinfo, dcerpc_tree, &hdr, FALSE,
+ &auth_info);
break;
}
return TRUE;
@@ -4540,14 +4553,14 @@ dissect_dcerpc_cn (tvbuff_t *tvb, int offset, packet_info *pinfo,
* transports
*/
static gboolean
-dissect_dcerpc_cn_pk (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+dissect_dcerpc_cn_pk(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
/*
* Only one PDU per transport packet, and only one transport
* packet per PDU.
*/
- pinfo->dcetransporttype=DCE_TRANSPORT_UNKNOWN;
- if (!dissect_dcerpc_cn (tvb, 0, pinfo, tree, FALSE, NULL)) {
+ pinfo->dcetransporttype = DCE_TRANSPORT_UNKNOWN;
+ if (!dissect_dcerpc_cn(tvb, 0, pinfo, tree, FALSE, NULL)) {
/*
* It wasn't a DCERPC PDU.
*/
@@ -4567,12 +4580,12 @@ dissect_dcerpc_cn_pk (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
* to be able to know what kind of private_data structure to expect.
*/
static gboolean
-dissect_dcerpc_cn_bs_body (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+dissect_dcerpc_cn_bs_body(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- volatile int offset = 0;
- int pdu_len = 0;
+ volatile int offset = 0;
+ int pdu_len = 0;
volatile gboolean dcerpc_pdus = 0;
- volatile gboolean ret = FALSE;
+ volatile gboolean ret = FALSE;
/*
* There may be multiple PDUs per transport packet; keep
@@ -4590,7 +4603,7 @@ dissect_dcerpc_cn_bs_body (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
*/
TRY {
pdu_len = 0;
- if(dissect_dcerpc_cn (tvb, offset, pinfo, tree,
+ if (dissect_dcerpc_cn(tvb, offset, pinfo, tree,
dcerpc_cn_desegment, &pdu_len)) {
dcerpc_pdus++;
}
@@ -4644,35 +4657,35 @@ dissect_dcerpc_cn_bs_body (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
static gboolean
-dissect_dcerpc_cn_bs (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+dissect_dcerpc_cn_bs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- pinfo->dcetransporttype=DCE_TRANSPORT_UNKNOWN;
+ pinfo->dcetransporttype = DCE_TRANSPORT_UNKNOWN;
return dissect_dcerpc_cn_bs_body(tvb, pinfo, tree);
}
static gboolean
-dissect_dcerpc_cn_smbpipe (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+dissect_dcerpc_cn_smbpipe(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- pinfo->dcetransporttype=DCE_CN_TRANSPORT_SMBPIPE;
+ pinfo->dcetransporttype = DCE_CN_TRANSPORT_SMBPIPE;
return dissect_dcerpc_cn_bs_body(tvb, pinfo, tree);
}
static gboolean
-dissect_dcerpc_cn_smb2 (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+dissect_dcerpc_cn_smb2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- pinfo->dcetransporttype=DCE_TRANSPORT_UNKNOWN;
+ pinfo->dcetransporttype = DCE_TRANSPORT_UNKNOWN;
return dissect_dcerpc_cn_bs_body(tvb, pinfo, tree);
}
static void
-dissect_dcerpc_dg_auth (tvbuff_t *tvb, int offset, proto_tree *dcerpc_tree,
- e_dce_dg_common_hdr_t *hdr, int *auth_level_p)
+dissect_dcerpc_dg_auth(tvbuff_t *tvb, int offset, proto_tree *dcerpc_tree,
+ e_dce_dg_common_hdr_t *hdr, int *auth_level_p)
{
- proto_item *ti = NULL;
+ proto_item *ti = NULL;
proto_tree *auth_tree = NULL;
- guint8 protection_level;
+ guint8 protection_level;
/*
* Initially set "*auth_level_p" to -1 to indicate that we haven't
@@ -4694,73 +4707,73 @@ dissect_dcerpc_dg_auth (tvbuff_t *tvb, int offset, proto_tree *dcerpc_tree,
switch (hdr->auth_proto) {
case DCE_C_RPC_AUTHN_PROTOCOL_KRB5:
- ti = proto_tree_add_text (dcerpc_tree, tvb, offset, -1, "Kerberos authentication verifier");
- auth_tree = proto_item_add_subtree (ti, ett_dcerpc_krb5_auth_verf);
- protection_level = tvb_get_guint8 (tvb, offset);
+ ti = proto_tree_add_text(dcerpc_tree, tvb, offset, -1, "Kerberos authentication verifier");
+ auth_tree = proto_item_add_subtree(ti, ett_dcerpc_krb5_auth_verf);
+ protection_level = tvb_get_guint8(tvb, offset);
if (auth_level_p != NULL)
*auth_level_p = protection_level;
- proto_tree_add_uint (auth_tree, hf_dcerpc_krb5_av_prot_level, tvb, offset, 1, protection_level);
+ proto_tree_add_uint(auth_tree, hf_dcerpc_krb5_av_prot_level, tvb, offset, 1, protection_level);
offset++;
- proto_tree_add_item (auth_tree, hf_dcerpc_krb5_av_key_vers_num, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(auth_tree, hf_dcerpc_krb5_av_key_vers_num, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
if (protection_level == DCE_C_AUTHN_LEVEL_PKT_PRIVACY)
offset += 6; /* 6 bytes of padding */
else
offset += 2; /* 2 bytes of padding */
- proto_tree_add_item (auth_tree, hf_dcerpc_krb5_av_key_auth_verifier, tvb, offset, 16, ENC_NA);
+ proto_tree_add_item(auth_tree, hf_dcerpc_krb5_av_key_auth_verifier, tvb, offset, 16, ENC_NA);
offset += 16;
break;
default:
- proto_tree_add_text (dcerpc_tree, tvb, offset, -1, "Authentication verifier");
+ proto_tree_add_text(dcerpc_tree, tvb, offset, -1, "Authentication verifier");
break;
}
}
}
static void
-dissect_dcerpc_dg_cancel_ack (tvbuff_t *tvb, int offset, packet_info *pinfo,
- proto_tree *dcerpc_tree,
- e_dce_dg_common_hdr_t *hdr)
+dissect_dcerpc_dg_cancel_ack(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *dcerpc_tree,
+ e_dce_dg_common_hdr_t *hdr)
{
guint32 version;
- offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, dcerpc_tree,
- hdr->drep, hf_dcerpc_dg_cancel_vers,
- &version);
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, dcerpc_tree,
+ hdr->drep, hf_dcerpc_dg_cancel_vers,
+ &version);
switch (version) {
case 0:
/* The only version we know about */
- offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, dcerpc_tree,
- hdr->drep, hf_dcerpc_dg_cancel_id,
- NULL);
- offset = dissect_dcerpc_uint8 (tvb, offset, pinfo, dcerpc_tree,
- hdr->drep, hf_dcerpc_dg_server_accepting_cancels,
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, dcerpc_tree,
+ hdr->drep, hf_dcerpc_dg_cancel_id,
NULL);
+ offset = dissect_dcerpc_uint8(tvb, offset, pinfo, dcerpc_tree,
+ hdr->drep, hf_dcerpc_dg_server_accepting_cancels,
+ NULL);
break;
}
}
static void
-dissect_dcerpc_dg_cancel (tvbuff_t *tvb, int offset, packet_info *pinfo,
- proto_tree *dcerpc_tree,
- e_dce_dg_common_hdr_t *hdr)
+dissect_dcerpc_dg_cancel(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *dcerpc_tree,
+ e_dce_dg_common_hdr_t *hdr)
{
guint32 version;
- offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, dcerpc_tree,
- hdr->drep, hf_dcerpc_dg_cancel_vers,
- &version);
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, dcerpc_tree,
+ hdr->drep, hf_dcerpc_dg_cancel_vers,
+ &version);
switch (version) {
case 0:
/* The only version we know about */
- offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, dcerpc_tree,
- hdr->drep, hf_dcerpc_dg_cancel_id,
- NULL);
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, dcerpc_tree,
+ hdr->drep, hf_dcerpc_dg_cancel_id,
+ NULL);
/* XXX - are NDR Booleans 32 bits? */
/* XXX - the RPC reference in chapter: "the cancel PDU" doesn't mention
@@ -4773,18 +4786,18 @@ dissect_dcerpc_dg_cancel (tvbuff_t *tvb, int offset, packet_info *pinfo,
}
static void
-dissect_dcerpc_dg_fack (tvbuff_t *tvb, int offset, packet_info *pinfo,
- proto_tree *dcerpc_tree,
- e_dce_dg_common_hdr_t *hdr)
+dissect_dcerpc_dg_fack(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *dcerpc_tree,
+ e_dce_dg_common_hdr_t *hdr)
{
- guint8 version;
+ guint8 version;
guint16 serial_num;
guint16 selack_len;
- guint i;
+ guint i;
- offset = dissect_dcerpc_uint8 (tvb, offset, pinfo, dcerpc_tree,
- hdr->drep, hf_dcerpc_dg_fack_vers,
- &version);
+ offset = dissect_dcerpc_uint8(tvb, offset, pinfo, dcerpc_tree,
+ hdr->drep, hf_dcerpc_dg_fack_vers,
+ &version);
/* padding */
offset++;
@@ -4792,27 +4805,27 @@ dissect_dcerpc_dg_fack (tvbuff_t *tvb, int offset, packet_info *pinfo,
case 0: /* The only version documented in the DCE RPC 1.1 spec */
case 1: /* This appears to be the same */
- offset = dissect_dcerpc_uint16 (tvb, offset, pinfo, dcerpc_tree,
- hdr->drep, hf_dcerpc_dg_fack_window_size,
- NULL);
- offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, dcerpc_tree,
- hdr->drep, hf_dcerpc_dg_fack_max_tsdu,
- NULL);
- offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, dcerpc_tree,
- hdr->drep, hf_dcerpc_dg_fack_max_frag_size,
- NULL);
- offset = dissect_dcerpc_uint16 (tvb, offset, pinfo, dcerpc_tree,
- hdr->drep, hf_dcerpc_dg_fack_serial_num,
- &serial_num);
- col_append_fstr (pinfo->cinfo, COL_INFO, " serial: %u",
+ offset = dissect_dcerpc_uint16(tvb, offset, pinfo, dcerpc_tree,
+ hdr->drep, hf_dcerpc_dg_fack_window_size,
+ NULL);
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, dcerpc_tree,
+ hdr->drep, hf_dcerpc_dg_fack_max_tsdu,
+ NULL);
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, dcerpc_tree,
+ hdr->drep, hf_dcerpc_dg_fack_max_frag_size,
+ NULL);
+ offset = dissect_dcerpc_uint16(tvb, offset, pinfo, dcerpc_tree,
+ hdr->drep, hf_dcerpc_dg_fack_serial_num,
+ &serial_num);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " serial: %u",
serial_num);
- offset = dissect_dcerpc_uint16 (tvb, offset, pinfo, dcerpc_tree,
- hdr->drep, hf_dcerpc_dg_fack_selack_len,
- &selack_len);
+ offset = dissect_dcerpc_uint16(tvb, offset, pinfo, dcerpc_tree,
+ hdr->drep, hf_dcerpc_dg_fack_selack_len,
+ &selack_len);
for (i = 0; i < selack_len; i++) {
- offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, dcerpc_tree,
- hdr->drep, hf_dcerpc_dg_fack_selack,
- NULL);
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, dcerpc_tree,
+ hdr->drep, hf_dcerpc_dg_fack_selack,
+ NULL);
}
break;
@@ -4820,15 +4833,15 @@ dissect_dcerpc_dg_fack (tvbuff_t *tvb, int offset, packet_info *pinfo,
}
static void
-dissect_dcerpc_dg_reject_fault (tvbuff_t *tvb, int offset, packet_info *pinfo,
- proto_tree *dcerpc_tree,
- e_dce_dg_common_hdr_t *hdr)
+dissect_dcerpc_dg_reject_fault(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *dcerpc_tree,
+ e_dce_dg_common_hdr_t *hdr)
{
guint32 status;
- offset = dissect_dcerpc_uint32 (tvb, offset, pinfo, dcerpc_tree,
- hdr->drep, hf_dcerpc_dg_status,
- &status);
+ offset = dissect_dcerpc_uint32(tvb, offset, pinfo, dcerpc_tree,
+ hdr->drep, hf_dcerpc_dg_status,
+ &status);
col_append_fstr (pinfo->cinfo, COL_INFO,
": status: %s",
@@ -4836,22 +4849,22 @@ dissect_dcerpc_dg_reject_fault (tvbuff_t *tvb, int offset, packet_info *pinfo,
}
static void
-dissect_dcerpc_dg_stub (tvbuff_t *tvb, int offset, packet_info *pinfo,
- proto_tree *dcerpc_tree, proto_tree *tree,
- e_dce_dg_common_hdr_t *hdr, dcerpc_info *di)
+dissect_dcerpc_dg_stub(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *dcerpc_tree, proto_tree *tree,
+ e_dce_dg_common_hdr_t *hdr, dcerpc_info *di)
{
- int length, reported_length, stub_length;
- gboolean save_fragmented;
+ int length, reported_length, stub_length;
+ gboolean save_fragmented;
fragment_data *fd_head;
- tvbuff_t *next_tvb;
- proto_item *pi;
- proto_item *parent_pi;
+ tvbuff_t *next_tvb;
+ proto_item *pi;
+ proto_item *parent_pi;
- col_append_fstr (pinfo->cinfo, COL_INFO, " opnum: %u len: %u",
- di->call_data->opnum, hdr->frag_len );
+ col_append_fstr(pinfo->cinfo, COL_INFO, " opnum: %u len: %u",
+ di->call_data->opnum, hdr->frag_len );
- length = tvb_length_remaining (tvb, offset);
- reported_length = tvb_reported_length_remaining (tvb, offset);
+ length = tvb_length_remaining(tvb, offset);
+ reported_length = tvb_reported_length_remaining(tvb, offset);
stub_length = hdr->frag_len;
if (length > stub_length)
length = stub_length;
@@ -4865,9 +4878,9 @@ dissect_dcerpc_dg_stub (tvbuff_t *tvb, int offset, packet_info *pinfo,
not reassembled at a lower layer) that doesn't include all
the data in the fragment, just call the handoff directly if
this is the first fragment or the PDU isn't fragmented. */
- if( (!dcerpc_reassemble) || !(hdr->flags1 & PFCL1_FRAG) ||
- !tvb_bytes_exist(tvb, offset, stub_length) ){
- if(hdr->frag_num == 0) {
+ if ( (!dcerpc_reassemble) || !(hdr->flags1 & PFCL1_FRAG) ||
+ !tvb_bytes_exist(tvb, offset, stub_length) ) {
+ if (hdr->frag_num == 0) {
/* First fragment, possibly the only fragment */
@@ -4876,19 +4889,19 @@ dissect_dcerpc_dg_stub (tvbuff_t *tvb, int offset, packet_info *pinfo,
* XXX - authentication info?
*/
pinfo->fragmented = (hdr->flags1 & PFCL1_FRAG);
- next_tvb = tvb_new_subset (tvb, offset, length,
- reported_length);
- dcerpc_try_handoff (pinfo, tree, dcerpc_tree, next_tvb,
- next_tvb, hdr->drep, di, NULL);
+ next_tvb = tvb_new_subset(tvb, offset, length,
+ reported_length);
+ dcerpc_try_handoff(pinfo, tree, dcerpc_tree, next_tvb,
+ next_tvb, hdr->drep, di, NULL);
} else {
/* PDU is fragmented and this isn't the first fragment */
if (dcerpc_tree) {
if (length > 0) {
tvb_ensure_bytes_exist(tvb, offset, stub_length);
- proto_tree_add_text (dcerpc_tree, tvb, offset, stub_length,
- "Fragment data (%d byte%s)",
- stub_length,
- plurality(stub_length, "", "s"));
+ proto_tree_add_text(dcerpc_tree, tvb, offset, stub_length,
+ "Fragment data (%d byte%s)",
+ stub_length,
+ plurality(stub_length, "", "s"));
}
}
}
@@ -4900,9 +4913,9 @@ dissect_dcerpc_dg_stub (tvbuff_t *tvb, int offset, packet_info *pinfo,
if (dcerpc_tree) {
if (length > 0) {
tvb_ensure_bytes_exist(tvb, offset, stub_length);
- proto_tree_add_text (dcerpc_tree, tvb, offset, stub_length,
- "Fragment data (%d byte%s)", stub_length,
- plurality(stub_length, "", "s"));
+ proto_tree_add_text(dcerpc_tree, tvb, offset, stub_length,
+ "Fragment data (%d byte%s)", stub_length,
+ plurality(stub_length, "", "s"));
}
}
@@ -4912,7 +4925,7 @@ dissect_dcerpc_dg_stub (tvbuff_t *tvb, int offset, packet_info *pinfo,
!(hdr->flags1 & PFCL1_LASTFRAG));
if (fd_head != NULL) {
/* We completed reassembly... */
- if(pinfo->fd->num==fd_head->reassembled_in) {
+ if (pinfo->fd->num == fd_head->reassembled_in) {
/* ...and this is the reassembled RPC PDU */
next_tvb = tvb_new_child_real_data(tvb, fd_head->data, fd_head->len, fd_head->len);
add_new_data_source(pinfo, next_tvb, "Reassembled DCE/RPC");
@@ -4923,15 +4936,15 @@ dissect_dcerpc_dg_stub (tvbuff_t *tvb, int offset, packet_info *pinfo,
* XXX - authentication info?
*/
pinfo->fragmented = FALSE;
- dcerpc_try_handoff (pinfo, tree, dcerpc_tree, next_tvb,
- next_tvb, hdr->drep, di, NULL);
+ dcerpc_try_handoff(pinfo, tree, dcerpc_tree, next_tvb,
+ next_tvb, hdr->drep, di, NULL);
} else {
/* ...and this isn't the reassembled RPC PDU */
pi = proto_tree_add_uint(dcerpc_tree, hf_dcerpc_reassembled_in,
tvb, 0, 0, fd_head->reassembled_in);
PROTO_ITEM_SET_GENERATED(pi);
parent_pi = proto_tree_get_parent(dcerpc_tree);
- if(parent_pi != NULL) {
+ if (parent_pi != NULL) {
proto_item_append_text(parent_pi, ", [Reas: #%u]", fd_head->reassembled_in);
}
col_append_fstr(pinfo->cinfo, COL_INFO,
@@ -4943,52 +4956,52 @@ dissect_dcerpc_dg_stub (tvbuff_t *tvb, int offset, packet_info *pinfo,
}
static void
-dissect_dcerpc_dg_rqst (tvbuff_t *tvb, int offset, packet_info *pinfo,
- proto_tree *dcerpc_tree, proto_tree *tree,
- e_dce_dg_common_hdr_t *hdr, conversation_t *conv)
+dissect_dcerpc_dg_rqst(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *dcerpc_tree, proto_tree *tree,
+ e_dce_dg_common_hdr_t *hdr, conversation_t *conv)
{
- dcerpc_info *di;
- dcerpc_call_value *value, v;
- dcerpc_matched_key matched_key, *new_matched_key;
- proto_item *pi;
- proto_item *parent_pi;
-
- di=get_next_di();
- if(!(pinfo->fd->flags.visited)){
+ dcerpc_info *di;
+ dcerpc_call_value *value, v;
+ dcerpc_matched_key matched_key, *new_matched_key;
+ proto_item *pi;
+ proto_item *parent_pi;
+
+ di = get_next_di();
+ if (!(pinfo->fd->flags.visited)) {
dcerpc_call_value *call_value;
dcerpc_dg_call_key *call_key;
- call_key=se_alloc (sizeof (dcerpc_dg_call_key));
- call_key->conv=conv;
- call_key->seqnum=hdr->seqnum;
- call_key->act_id=hdr->act_id;
+ call_key = se_alloc(sizeof (dcerpc_dg_call_key));
+ call_key->conv = conv;
+ call_key->seqnum = hdr->seqnum;
+ call_key->act_id = hdr->act_id;
- call_value=se_alloc (sizeof (dcerpc_call_value));
+ call_value = se_alloc(sizeof (dcerpc_call_value));
call_value->uuid = hdr->if_id;
call_value->ver = hdr->if_ver;
call_value->object_uuid = hdr->obj_id;
call_value->opnum = hdr->opnum;
- call_value->req_frame=pinfo->fd->num;
- call_value->req_time=pinfo->fd->abs_ts;
- call_value->rep_frame=0;
- call_value->max_ptr=0;
+ call_value->req_frame = pinfo->fd->num;
+ call_value->req_time = pinfo->fd->abs_ts;
+ call_value->rep_frame = 0;
+ call_value->max_ptr = 0;
call_value->se_data = NULL;
call_value->private_data = NULL;
call_value->pol = NULL;
/* NDR64 is not available on dg transports ?*/
call_value->flags = 0;
- g_hash_table_insert (dcerpc_dg_calls, call_key, call_value);
+ g_hash_table_insert(dcerpc_dg_calls, call_key, call_value);
- new_matched_key = se_alloc(sizeof (dcerpc_matched_key));
+ new_matched_key = se_alloc(sizeof(dcerpc_matched_key));
new_matched_key->frame = pinfo->fd->num;
new_matched_key->call_id = hdr->seqnum;
- g_hash_table_insert (dcerpc_matched, new_matched_key, call_value);
+ g_hash_table_insert(dcerpc_matched, new_matched_key, call_value);
}
matched_key.frame = pinfo->fd->num;
matched_key.call_id = hdr->seqnum;
- value=g_hash_table_lookup(dcerpc_matched, &matched_key);
+ value = g_hash_table_lookup(dcerpc_matched, &matched_key);
if (!value) {
v.uuid = hdr->if_id;
v.ver = hdr->if_ver;
@@ -4997,8 +5010,8 @@ dissect_dcerpc_dg_rqst (tvbuff_t *tvb, int offset, packet_info *pinfo,
v.req_frame = pinfo->fd->num;
v.rep_frame = 0;
v.max_ptr = 0;
- v.se_data=NULL;
- v.private_data=NULL;
+ v.se_data = NULL;
+ v.private_data = NULL;
value = &v;
}
@@ -5008,61 +5021,61 @@ dissect_dcerpc_dg_rqst (tvbuff_t *tvb, int offset, packet_info *pinfo,
di->ptype = PDU_REQ;
di->call_data = value;
- if(value->rep_frame!=0){
+ if (value->rep_frame != 0) {
pi = proto_tree_add_uint(dcerpc_tree, hf_dcerpc_response_in,
tvb, 0, 0, value->rep_frame);
PROTO_ITEM_SET_GENERATED(pi);
parent_pi = proto_tree_get_parent(dcerpc_tree);
- if(parent_pi != NULL) {
+ if (parent_pi != NULL) {
proto_item_append_text(parent_pi, ", [Resp: #%u]", value->rep_frame);
}
}
- dissect_dcerpc_dg_stub (tvb, offset, pinfo, dcerpc_tree, tree, hdr, di);
+ dissect_dcerpc_dg_stub(tvb, offset, pinfo, dcerpc_tree, tree, hdr, di);
}
static void
-dissect_dcerpc_dg_resp (tvbuff_t *tvb, int offset, packet_info *pinfo,
- proto_tree *dcerpc_tree, proto_tree *tree,
- e_dce_dg_common_hdr_t *hdr, conversation_t *conv)
+dissect_dcerpc_dg_resp(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *dcerpc_tree, proto_tree *tree,
+ e_dce_dg_common_hdr_t *hdr, conversation_t *conv)
{
- dcerpc_info *di;
- dcerpc_call_value *value, v;
- dcerpc_matched_key matched_key, *new_matched_key;
- proto_item *pi;
- proto_item *parent_pi;
-
- di=get_next_di();
- if(!(pinfo->fd->flags.visited)){
+ dcerpc_info *di;
+ dcerpc_call_value *value, v;
+ dcerpc_matched_key matched_key, *new_matched_key;
+ proto_item *pi;
+ proto_item *parent_pi;
+
+ di = get_next_di();
+ if (!(pinfo->fd->flags.visited)) {
dcerpc_call_value *call_value;
dcerpc_dg_call_key call_key;
- call_key.conv=conv;
- call_key.seqnum=hdr->seqnum;
- call_key.act_id=hdr->act_id;
+ call_key.conv = conv;
+ call_key.seqnum = hdr->seqnum;
+ call_key.act_id = hdr->act_id;
- if((call_value=g_hash_table_lookup(dcerpc_dg_calls, &call_key))){
+ if ((call_value = g_hash_table_lookup(dcerpc_dg_calls, &call_key))) {
new_matched_key = se_alloc(sizeof (dcerpc_matched_key));
new_matched_key->frame = pinfo->fd->num;
new_matched_key->call_id = hdr->seqnum;
- g_hash_table_insert (dcerpc_matched, new_matched_key, call_value);
- if(call_value->rep_frame==0){
- call_value->rep_frame=pinfo->fd->num;
+ g_hash_table_insert(dcerpc_matched, new_matched_key, call_value);
+ if (call_value->rep_frame == 0) {
+ call_value->rep_frame = pinfo->fd->num;
}
}
}
matched_key.frame = pinfo->fd->num;
matched_key.call_id = hdr->seqnum;
- value=g_hash_table_lookup(dcerpc_matched, &matched_key);
+ value = g_hash_table_lookup(dcerpc_matched, &matched_key);
if (!value) {
v.uuid = hdr->if_id;
v.ver = hdr->if_ver;
v.object_uuid = hdr->obj_id;
v.opnum = hdr->opnum;
- v.req_frame=0;
- v.rep_frame=pinfo->fd->num;
- v.se_data=NULL;
- v.private_data=NULL;
+ v.req_frame = 0;
+ v.rep_frame = pinfo->fd->num;
+ v.se_data = NULL;
+ v.private_data = NULL;
value = &v;
}
@@ -5072,13 +5085,13 @@ dissect_dcerpc_dg_resp (tvbuff_t *tvb, int offset, packet_info *pinfo,
di->ptype = PDU_RESP;
di->call_data = value;
- if(value->req_frame!=0){
+ if (value->req_frame != 0) {
nstime_t delta_ts;
pi = proto_tree_add_uint(dcerpc_tree, hf_dcerpc_request_in,
tvb, 0, 0, value->req_frame);
PROTO_ITEM_SET_GENERATED(pi);
parent_pi = proto_tree_get_parent(dcerpc_tree);
- if(parent_pi != NULL) {
+ if (parent_pi != NULL) {
proto_item_append_text(parent_pi, ", [Req: #%u]", value->req_frame);
}
nstime_delta(&delta_ts, &pinfo->fd->abs_ts, &value->req_time);
@@ -5090,24 +5103,24 @@ dissect_dcerpc_dg_resp (tvbuff_t *tvb, int offset, packet_info *pinfo,
expert_add_info_format(pinfo, pi, PI_SEQUENCE, PI_NOTE,
"No request to this DCE/RPC call found");
}
- dissect_dcerpc_dg_stub (tvb, offset, pinfo, dcerpc_tree, tree, hdr, di);
+ dissect_dcerpc_dg_stub(tvb, offset, pinfo, dcerpc_tree, tree, hdr, di);
}
static void
-dissect_dcerpc_dg_ping_ack (tvbuff_t *tvb, int offset, packet_info *pinfo,
- proto_tree *dcerpc_tree,
- e_dce_dg_common_hdr_t *hdr, conversation_t *conv)
+dissect_dcerpc_dg_ping_ack(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *dcerpc_tree,
+ e_dce_dg_common_hdr_t *hdr, conversation_t *conv)
{
- proto_item *parent_pi;
-/* if(!(pinfo->fd->flags.visited)){*/
- dcerpc_call_value *call_value;
- dcerpc_dg_call_key call_key;
+ proto_item *parent_pi;
+/* if (!(pinfo->fd->flags.visited)) {*/
+ dcerpc_call_value *call_value;
+ dcerpc_dg_call_key call_key;
- call_key.conv=conv;
- call_key.seqnum=hdr->seqnum;
- call_key.act_id=hdr->act_id;
+ call_key.conv = conv;
+ call_key.seqnum = hdr->seqnum;
+ call_key.act_id = hdr->act_id;
- if((call_value=g_hash_table_lookup(dcerpc_dg_calls, &call_key))){
+ if ((call_value = g_hash_table_lookup(dcerpc_dg_calls, &call_key))) {
proto_item *pi;
nstime_t delta_ts;
@@ -5115,7 +5128,7 @@ dissect_dcerpc_dg_ping_ack (tvbuff_t *tvb, int offset, packet_info *pinfo,
tvb, 0, 0, call_value->req_frame);
PROTO_ITEM_SET_GENERATED(pi);
parent_pi = proto_tree_get_parent(dcerpc_tree);
- if(parent_pi != NULL) {
+ if (parent_pi != NULL) {
proto_item_append_text(parent_pi, ", [Req: #%u]", call_value->req_frame);
}
@@ -5132,88 +5145,88 @@ dissect_dcerpc_dg_ping_ack (tvbuff_t *tvb, int offset, packet_info *pinfo,
* DCERPC dissector for connectionless calls
*/
static gboolean
-dissect_dcerpc_dg (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+dissect_dcerpc_dg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti = NULL;
- proto_item *tf = NULL;
- proto_tree *dcerpc_tree = NULL;
- proto_tree *dg_flags1_tree = NULL;
- proto_tree *dg_flags2_tree = NULL;
- proto_tree *drep_tree = NULL;
- e_dce_dg_common_hdr_t hdr;
- int offset = 0;
- conversation_t *conv;
- int auth_level;
- char *uuid_str;
- const char *uuid_name = NULL;
+ proto_item *ti = NULL;
+ proto_item *tf = NULL;
+ proto_tree *dcerpc_tree = NULL;
+ proto_tree *dg_flags1_tree = NULL;
+ proto_tree *dg_flags2_tree = NULL;
+ proto_tree *drep_tree = NULL;
+ e_dce_dg_common_hdr_t hdr;
+ int offset = 0;
+ conversation_t *conv;
+ int auth_level;
+ char *uuid_str;
+ const char *uuid_name = NULL;
/*
* Check if this looks like a CL DCERPC call. All dg packets
* have an 80 byte header on them. Which starts with
* version (4), pkt_type.
*/
- if (tvb_length (tvb) < sizeof (hdr)) {
+ if (tvb_length(tvb) < sizeof (hdr)) {
return FALSE;
}
/* Version must be 4 */
- hdr.rpc_ver = tvb_get_guint8 (tvb, offset++);
+ hdr.rpc_ver = tvb_get_guint8(tvb, offset++);
if (hdr.rpc_ver != 4)
return FALSE;
- /* Type must be <=19 or its not DCE/RPC */
- hdr.ptype = tvb_get_guint8 (tvb, offset++);
+ /* Type must be <= 19 or its not DCE/RPC */
+ hdr.ptype = tvb_get_guint8(tvb, offset++);
if (hdr.ptype > 19)
return FALSE;
/* flags1 has bit 1 and 8 as reserved so if any of them are set, it is
probably not a DCE/RPC packet
*/
- hdr.flags1 = tvb_get_guint8 (tvb, offset++);
- if(hdr.flags1&0x81)
+ hdr.flags1 = tvb_get_guint8(tvb, offset++);
+ if (hdr.flags1&0x81)
return FALSE;
/* flags2 has all bits except bit 2 as reserved so if any of them are set
it is probably not DCE/RPC.
*/
- hdr.flags2 = tvb_get_guint8 (tvb, offset++);
- if(hdr.flags2&0xfd)
+ hdr.flags2 = tvb_get_guint8(tvb, offset++);
+ if (hdr.flags2&0xfd)
return FALSE;
- col_set_str (pinfo->cinfo, COL_PROTOCOL, "DCERPC");
- col_add_str (pinfo->cinfo, COL_INFO, pckt_vals[hdr.ptype].strptr);
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "DCERPC");
+ col_add_str(pinfo->cinfo, COL_INFO, pckt_vals[hdr.ptype].strptr);
- tvb_memcpy (tvb, (guint8 *)hdr.drep, offset, sizeof (hdr.drep));
+ tvb_memcpy(tvb, (guint8 *)hdr.drep, offset, sizeof (hdr.drep));
offset += sizeof (hdr.drep);
- hdr.serial_hi = tvb_get_guint8 (tvb, offset++);
- dcerpc_tvb_get_uuid (tvb, offset, hdr.drep, &hdr.obj_id);
+ hdr.serial_hi = tvb_get_guint8(tvb, offset++);
+ dcerpc_tvb_get_uuid(tvb, offset, hdr.drep, &hdr.obj_id);
offset += 16;
- dcerpc_tvb_get_uuid (tvb, offset, hdr.drep, &hdr.if_id);
+ dcerpc_tvb_get_uuid(tvb, offset, hdr.drep, &hdr.if_id);
offset += 16;
- dcerpc_tvb_get_uuid (tvb, offset, hdr.drep, &hdr.act_id);
+ dcerpc_tvb_get_uuid(tvb, offset, hdr.drep, &hdr.act_id);
offset += 16;
- hdr.server_boot = dcerpc_tvb_get_ntohl (tvb, offset, hdr.drep);
+ hdr.server_boot = dcerpc_tvb_get_ntohl(tvb, offset, hdr.drep);
offset += 4;
- hdr.if_ver = dcerpc_tvb_get_ntohl (tvb, offset, hdr.drep);
+ hdr.if_ver = dcerpc_tvb_get_ntohl(tvb, offset, hdr.drep);
offset += 4;
- hdr.seqnum = dcerpc_tvb_get_ntohl (tvb, offset, hdr.drep);
+ hdr.seqnum = dcerpc_tvb_get_ntohl(tvb, offset, hdr.drep);
offset += 4;
- hdr.opnum = dcerpc_tvb_get_ntohs (tvb, offset, hdr.drep);
+ hdr.opnum = dcerpc_tvb_get_ntohs(tvb, offset, hdr.drep);
offset += 2;
- hdr.ihint = dcerpc_tvb_get_ntohs (tvb, offset, hdr.drep);
+ hdr.ihint = dcerpc_tvb_get_ntohs(tvb, offset, hdr.drep);
offset += 2;
- hdr.ahint = dcerpc_tvb_get_ntohs (tvb, offset, hdr.drep);
+ hdr.ahint = dcerpc_tvb_get_ntohs(tvb, offset, hdr.drep);
offset += 2;
- hdr.frag_len = dcerpc_tvb_get_ntohs (tvb, offset, hdr.drep);
+ hdr.frag_len = dcerpc_tvb_get_ntohs(tvb, offset, hdr.drep);
offset += 2;
- hdr.frag_num = dcerpc_tvb_get_ntohs (tvb, offset, hdr.drep);
+ hdr.frag_num = dcerpc_tvb_get_ntohs(tvb, offset, hdr.drep);
offset += 2;
- hdr.auth_proto = tvb_get_guint8 (tvb, offset++);
- hdr.serial_lo = tvb_get_guint8 (tvb, offset++);
+ hdr.auth_proto = tvb_get_guint8(tvb, offset++);
+ hdr.serial_lo = tvb_get_guint8(tvb, offset++);
if (tree) {
- ti = proto_tree_add_item (tree, proto_dcerpc, tvb, 0, -1, ENC_NA);
+ ti = proto_tree_add_item(tree, proto_dcerpc, tvb, 0, -1, ENC_NA);
if (ti) {
dcerpc_tree = proto_item_add_subtree(ti, ett_dcerpc);
proto_item_append_text(ti, " %s, Seq: %u, Serial: %u, Frag: %u, FragLen: %u",
@@ -5225,26 +5238,26 @@ dissect_dcerpc_dg (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset = 0;
if (tree)
- proto_tree_add_uint (dcerpc_tree, hf_dcerpc_ver, tvb, offset, 1, hdr.rpc_ver);
+ proto_tree_add_uint(dcerpc_tree, hf_dcerpc_ver, tvb, offset, 1, hdr.rpc_ver);
offset++;
if (tree)
- proto_tree_add_uint (dcerpc_tree, hf_dcerpc_packet_type, tvb, offset, 1, hdr.ptype);
+ proto_tree_add_uint(dcerpc_tree, hf_dcerpc_packet_type, tvb, offset, 1, hdr.ptype);
offset++;
if (tree) {
- tf = proto_tree_add_uint (dcerpc_tree, hf_dcerpc_dg_flags1, tvb, offset, 1, hdr.flags1);
- dg_flags1_tree = proto_item_add_subtree (tf, ett_dcerpc_dg_flags1);
+ tf = proto_tree_add_uint(dcerpc_tree, hf_dcerpc_dg_flags1, tvb, offset, 1, hdr.flags1);
+ dg_flags1_tree = proto_item_add_subtree(tf, ett_dcerpc_dg_flags1);
if (dg_flags1_tree) {
- proto_tree_add_boolean (dg_flags1_tree, hf_dcerpc_dg_flags1_rsrvd_80, tvb, offset, 1, hdr.flags1);
- proto_tree_add_boolean (dg_flags1_tree, hf_dcerpc_dg_flags1_broadcast, tvb, offset, 1, hdr.flags1);
- proto_tree_add_boolean (dg_flags1_tree, hf_dcerpc_dg_flags1_idempotent, tvb, offset, 1, hdr.flags1);
- proto_tree_add_boolean (dg_flags1_tree, hf_dcerpc_dg_flags1_maybe, tvb, offset, 1, hdr.flags1);
- proto_tree_add_boolean (dg_flags1_tree, hf_dcerpc_dg_flags1_nofack, tvb, offset, 1, hdr.flags1);
- proto_tree_add_boolean (dg_flags1_tree, hf_dcerpc_dg_flags1_frag, tvb, offset, 1, hdr.flags1);
- proto_tree_add_boolean (dg_flags1_tree, hf_dcerpc_dg_flags1_last_frag, tvb, offset, 1, hdr.flags1);
- proto_tree_add_boolean (dg_flags1_tree, hf_dcerpc_dg_flags1_rsrvd_01, tvb, offset, 1, hdr.flags1);
- if(hdr.flags1) {
+ proto_tree_add_boolean(dg_flags1_tree, hf_dcerpc_dg_flags1_rsrvd_80, tvb, offset, 1, hdr.flags1);
+ proto_tree_add_boolean(dg_flags1_tree, hf_dcerpc_dg_flags1_broadcast, tvb, offset, 1, hdr.flags1);
+ proto_tree_add_boolean(dg_flags1_tree, hf_dcerpc_dg_flags1_idempotent, tvb, offset, 1, hdr.flags1);
+ proto_tree_add_boolean(dg_flags1_tree, hf_dcerpc_dg_flags1_maybe, tvb, offset, 1, hdr.flags1);
+ proto_tree_add_boolean(dg_flags1_tree, hf_dcerpc_dg_flags1_nofack, tvb, offset, 1, hdr.flags1);
+ proto_tree_add_boolean(dg_flags1_tree, hf_dcerpc_dg_flags1_frag, tvb, offset, 1, hdr.flags1);
+ proto_tree_add_boolean(dg_flags1_tree, hf_dcerpc_dg_flags1_last_frag, tvb, offset, 1, hdr.flags1);
+ proto_tree_add_boolean(dg_flags1_tree, hf_dcerpc_dg_flags1_rsrvd_01, tvb, offset, 1, hdr.flags1);
+ if (hdr.flags1) {
proto_item_append_text(tf, " %s%s%s%s%s%s",
(hdr.flags1 & PFCL1_BROADCAST) ? "\"Broadcast\" " : "",
(hdr.flags1 & PFCL1_IDEMPOTENT) ? "\"Idempotent\" " : "",
@@ -5258,18 +5271,18 @@ dissect_dcerpc_dg (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset++;
if (tree) {
- tf = proto_tree_add_uint (dcerpc_tree, hf_dcerpc_dg_flags2, tvb, offset, 1, hdr.flags2);
- dg_flags2_tree = proto_item_add_subtree (tf, ett_dcerpc_dg_flags2);
+ tf = proto_tree_add_uint(dcerpc_tree, hf_dcerpc_dg_flags2, tvb, offset, 1, hdr.flags2);
+ dg_flags2_tree = proto_item_add_subtree(tf, ett_dcerpc_dg_flags2);
if (dg_flags2_tree) {
- proto_tree_add_boolean (dg_flags2_tree, hf_dcerpc_dg_flags2_rsrvd_80, tvb, offset, 1, hdr.flags2);
- proto_tree_add_boolean (dg_flags2_tree, hf_dcerpc_dg_flags2_rsrvd_40, tvb, offset, 1, hdr.flags2);
- proto_tree_add_boolean (dg_flags2_tree, hf_dcerpc_dg_flags2_rsrvd_20, tvb, offset, 1, hdr.flags2);
- proto_tree_add_boolean (dg_flags2_tree, hf_dcerpc_dg_flags2_rsrvd_10, tvb, offset, 1, hdr.flags2);
- proto_tree_add_boolean (dg_flags2_tree, hf_dcerpc_dg_flags2_rsrvd_08, tvb, offset, 1, hdr.flags2);
- proto_tree_add_boolean (dg_flags2_tree, hf_dcerpc_dg_flags2_rsrvd_04, tvb, offset, 1, hdr.flags2);
- proto_tree_add_boolean (dg_flags2_tree, hf_dcerpc_dg_flags2_cancel_pending, tvb, offset, 1, hdr.flags2);
- proto_tree_add_boolean (dg_flags2_tree, hf_dcerpc_dg_flags2_rsrvd_01, tvb, offset, 1, hdr.flags2);
- if(hdr.flags2) {
+ proto_tree_add_boolean(dg_flags2_tree, hf_dcerpc_dg_flags2_rsrvd_80, tvb, offset, 1, hdr.flags2);
+ proto_tree_add_boolean(dg_flags2_tree, hf_dcerpc_dg_flags2_rsrvd_40, tvb, offset, 1, hdr.flags2);
+ proto_tree_add_boolean(dg_flags2_tree, hf_dcerpc_dg_flags2_rsrvd_20, tvb, offset, 1, hdr.flags2);
+ proto_tree_add_boolean(dg_flags2_tree, hf_dcerpc_dg_flags2_rsrvd_10, tvb, offset, 1, hdr.flags2);
+ proto_tree_add_boolean(dg_flags2_tree, hf_dcerpc_dg_flags2_rsrvd_08, tvb, offset, 1, hdr.flags2);
+ proto_tree_add_boolean(dg_flags2_tree, hf_dcerpc_dg_flags2_rsrvd_04, tvb, offset, 1, hdr.flags2);
+ proto_tree_add_boolean(dg_flags2_tree, hf_dcerpc_dg_flags2_cancel_pending, tvb, offset, 1, hdr.flags2);
+ proto_tree_add_boolean(dg_flags2_tree, hf_dcerpc_dg_flags2_rsrvd_01, tvb, offset, 1, hdr.flags2);
+ if (hdr.flags2) {
proto_item_append_text(tf, " %s",
(hdr.flags2 & PFCL2_CANCEL_PENDING) ? "\"Cancel Pending\" " : "");
}
@@ -5278,48 +5291,48 @@ dissect_dcerpc_dg (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset++;
if (tree) {
- tf = proto_tree_add_bytes (dcerpc_tree, hf_dcerpc_drep, tvb, offset, sizeof (hdr.drep), hdr.drep);
- drep_tree = proto_item_add_subtree (tf, ett_dcerpc_drep);
+ tf = proto_tree_add_bytes(dcerpc_tree, hf_dcerpc_drep, tvb, offset, sizeof (hdr.drep), hdr.drep);
+ drep_tree = proto_item_add_subtree(tf, ett_dcerpc_drep);
if (drep_tree) {
proto_tree_add_uint(drep_tree, hf_dcerpc_drep_byteorder, tvb, offset, 1, hdr.drep[0] >> 4);
proto_tree_add_uint(drep_tree, hf_dcerpc_drep_character, tvb, offset, 1, hdr.drep[0] & 0x0f);
proto_tree_add_uint(drep_tree, hf_dcerpc_drep_fp, tvb, offset+1, 1, hdr.drep[1]);
proto_item_append_text(tf, " (Order: %s, Char: %s, Float: %s)",
- val_to_str(hdr.drep[0] >> 4, drep_byteorder_vals, "Unknown"),
- val_to_str(hdr.drep[0] & 0x0f, drep_character_vals, "Unknown"),
- val_to_str(hdr.drep[1], drep_fp_vals, "Unknown"));
+ val_to_str_const(hdr.drep[0] >> 4, drep_byteorder_vals, "Unknown"),
+ val_to_str_const(hdr.drep[0] & 0x0f, drep_character_vals, "Unknown"),
+ val_to_str_const(hdr.drep[1], drep_fp_vals, "Unknown"));
}
}
offset += sizeof (hdr.drep);
if (tree)
- proto_tree_add_uint (dcerpc_tree, hf_dcerpc_dg_serial_hi, tvb, offset, 1, hdr.serial_hi);
+ proto_tree_add_uint(dcerpc_tree, hf_dcerpc_dg_serial_hi, tvb, offset, 1, hdr.serial_hi);
offset++;
if (tree) {
- proto_tree_add_guid_format (dcerpc_tree, hf_dcerpc_obj_id, tvb,
- offset, 16, (e_guid_t *) &hdr.obj_id, "Object UUID: %s",
- guid_to_str((e_guid_t *) &hdr.obj_id));
+ proto_tree_add_guid_format(dcerpc_tree, hf_dcerpc_obj_id, tvb,
+ offset, 16, (e_guid_t *) &hdr.obj_id, "Object UUID: %s",
+ guid_to_str((e_guid_t *) &hdr.obj_id));
}
offset += 16;
if (tree) {
uuid_str = guid_to_str((e_guid_t*)&hdr.if_id);
uuid_name = guids_get_uuid_name(&hdr.if_id);
- if(uuid_name) {
- proto_tree_add_guid_format (dcerpc_tree, hf_dcerpc_dg_if_id, tvb,
- offset, 16, (e_guid_t *) &hdr.if_id, "Interface: %s UUID: %s", uuid_name, uuid_str);
+ if (uuid_name) {
+ proto_tree_add_guid_format(dcerpc_tree, hf_dcerpc_dg_if_id, tvb,
+ offset, 16, (e_guid_t *) &hdr.if_id, "Interface: %s UUID: %s", uuid_name, uuid_str);
} else {
- proto_tree_add_guid_format (dcerpc_tree, hf_dcerpc_dg_if_id, tvb,
- offset, 16, (e_guid_t *) &hdr.if_id, "Interface UUID: %s", uuid_str);
+ proto_tree_add_guid_format(dcerpc_tree, hf_dcerpc_dg_if_id, tvb,
+ offset, 16, (e_guid_t *) &hdr.if_id, "Interface UUID: %s", uuid_str);
}
}
offset += 16;
if (tree) {
- proto_tree_add_guid_format (dcerpc_tree, hf_dcerpc_dg_act_id, tvb,
- offset, 16, (e_guid_t *) &hdr.act_id, "Activity: %s",
- guid_to_str((e_guid_t *) &hdr.act_id));
+ proto_tree_add_guid_format(dcerpc_tree, hf_dcerpc_dg_act_id, tvb,
+ offset, 16, (e_guid_t *) &hdr.act_id, "Activity: %s",
+ guid_to_str((e_guid_t *) &hdr.act_id));
}
offset += 16;
@@ -5330,60 +5343,60 @@ dissect_dcerpc_dg (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
server_boot.nsecs = 0;
if (hdr.server_boot == 0)
- proto_tree_add_time_format (dcerpc_tree, hf_dcerpc_dg_server_boot,
- tvb, offset, 4, &server_boot,
- "Server boot time: Unknown (0)");
+ proto_tree_add_time_format(dcerpc_tree, hf_dcerpc_dg_server_boot,
+ tvb, offset, 4, &server_boot,
+ "Server boot time: Unknown (0)");
else
- proto_tree_add_time (dcerpc_tree, hf_dcerpc_dg_server_boot,
- tvb, offset, 4, &server_boot);
+ proto_tree_add_time(dcerpc_tree, hf_dcerpc_dg_server_boot,
+ tvb, offset, 4, &server_boot);
}
offset += 4;
if (tree)
- proto_tree_add_uint (dcerpc_tree, hf_dcerpc_dg_if_ver, tvb, offset, 4, hdr.if_ver);
+ proto_tree_add_uint(dcerpc_tree, hf_dcerpc_dg_if_ver, tvb, offset, 4, hdr.if_ver);
offset += 4;
if (tree)
- proto_tree_add_uint (dcerpc_tree, hf_dcerpc_dg_seqnum, tvb, offset, 4, hdr.seqnum);
- col_append_fstr (pinfo->cinfo, COL_INFO, ": seq: %u", hdr.seqnum);
- col_append_fstr (pinfo->cinfo, COL_DCE_CALL, "%u", hdr.seqnum);
+ proto_tree_add_uint(dcerpc_tree, hf_dcerpc_dg_seqnum, tvb, offset, 4, hdr.seqnum);
+ col_append_fstr(pinfo->cinfo, COL_INFO, ": seq: %u", hdr.seqnum);
+ col_append_fstr(pinfo->cinfo, COL_DCE_CALL, "%u", hdr.seqnum);
offset += 4;
if (tree)
- proto_tree_add_uint (dcerpc_tree, hf_dcerpc_opnum, tvb, offset, 2, hdr.opnum);
+ proto_tree_add_uint(dcerpc_tree, hf_dcerpc_opnum, tvb, offset, 2, hdr.opnum);
offset += 2;
if (tree)
- proto_tree_add_uint (dcerpc_tree, hf_dcerpc_dg_ihint, tvb, offset, 2, hdr.ihint);
+ proto_tree_add_uint(dcerpc_tree, hf_dcerpc_dg_ihint, tvb, offset, 2, hdr.ihint);
offset += 2;
if (tree)
- proto_tree_add_uint (dcerpc_tree, hf_dcerpc_dg_ahint, tvb, offset, 2, hdr.ahint);
+ proto_tree_add_uint(dcerpc_tree, hf_dcerpc_dg_ahint, tvb, offset, 2, hdr.ahint);
offset += 2;
if (tree)
- proto_tree_add_uint (dcerpc_tree, hf_dcerpc_dg_frag_len, tvb, offset, 2, hdr.frag_len);
+ proto_tree_add_uint(dcerpc_tree, hf_dcerpc_dg_frag_len, tvb, offset, 2, hdr.frag_len);
offset += 2;
if (tree)
- proto_tree_add_uint (dcerpc_tree, hf_dcerpc_dg_frag_num, tvb, offset, 2, hdr.frag_num);
+ proto_tree_add_uint(dcerpc_tree, hf_dcerpc_dg_frag_num, tvb, offset, 2, hdr.frag_num);
if (hdr.flags1 & PFCL1_FRAG) {
/* Fragmented - put the fragment number into the Info column */
- col_append_fstr (pinfo->cinfo, COL_INFO, " frag: %u",
+ col_append_fstr(pinfo->cinfo, COL_INFO, " frag: %u",
hdr.frag_num);
}
offset += 2;
if (tree)
- proto_tree_add_uint (dcerpc_tree, hf_dcerpc_dg_auth_proto, tvb, offset, 1, hdr.auth_proto);
+ proto_tree_add_uint(dcerpc_tree, hf_dcerpc_dg_auth_proto, tvb, offset, 1, hdr.auth_proto);
offset++;
if (tree)
- proto_tree_add_uint (dcerpc_tree, hf_dcerpc_dg_serial_lo, tvb, offset, 1, hdr.serial_lo);
+ proto_tree_add_uint(dcerpc_tree, hf_dcerpc_dg_serial_lo, tvb, offset, 1, hdr.serial_lo);
if (hdr.flags1 & PFCL1_FRAG) {
/* Fragmented - put the serial number into the Info column */
- col_append_fstr (pinfo->cinfo, COL_INFO, " serial: %u",
- (hdr.serial_hi << 8) | hdr.serial_lo);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " serial: %u",
+ (hdr.serial_hi << 8) | hdr.serial_lo);
}
offset++;
@@ -5393,8 +5406,8 @@ dissect_dcerpc_dg (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
* DCE_C_AUTHN_LEVEL_PKT_PRIVACY, we can't dissect the
* stub data.
*/
- dissect_dcerpc_dg_auth (tvb, offset, dcerpc_tree, &hdr,
- &auth_level);
+ dissect_dcerpc_dg_auth(tvb, offset, dcerpc_tree, &hdr,
+ &auth_level);
}
/*
@@ -5420,7 +5433,7 @@ dissect_dcerpc_dg (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Body is optional */
/* XXX - we assume "frag_len" is the length of the body */
if (hdr.frag_len != 0)
- dissect_dcerpc_dg_cancel_ack (tvb, offset, pinfo, dcerpc_tree, &hdr);
+ dissect_dcerpc_dg_cancel_ack(tvb, offset, pinfo, dcerpc_tree, &hdr);
break;
case PDU_CL_CANCEL:
@@ -5431,40 +5444,40 @@ dissect_dcerpc_dg (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
*/
/* XXX - we assume "frag_len" is the length of the body */
if (hdr.frag_len != 0)
- dissect_dcerpc_dg_cancel (tvb, offset, pinfo, dcerpc_tree, &hdr);
+ dissect_dcerpc_dg_cancel(tvb, offset, pinfo, dcerpc_tree, &hdr);
break;
case PDU_NOCALL:
/* Body is optional; if present, it's the same as PDU_FACK */
/* XXX - we assume "frag_len" is the length of the body */
if (hdr.frag_len != 0)
- dissect_dcerpc_dg_fack (tvb, offset, pinfo, dcerpc_tree, &hdr);
+ dissect_dcerpc_dg_fack(tvb, offset, pinfo, dcerpc_tree, &hdr);
break;
case PDU_FACK:
/* Body is optional */
/* XXX - we assume "frag_len" is the length of the body */
if (hdr.frag_len != 0)
- dissect_dcerpc_dg_fack (tvb, offset, pinfo, dcerpc_tree, &hdr);
+ dissect_dcerpc_dg_fack(tvb, offset, pinfo, dcerpc_tree, &hdr);
break;
case PDU_REJECT:
case PDU_FAULT:
- dissect_dcerpc_dg_reject_fault (tvb, offset, pinfo, dcerpc_tree, &hdr);
+ dissect_dcerpc_dg_reject_fault(tvb, offset, pinfo, dcerpc_tree, &hdr);
break;
case PDU_REQ:
- dissect_dcerpc_dg_rqst (tvb, offset, pinfo, dcerpc_tree, tree, &hdr, conv);
+ dissect_dcerpc_dg_rqst(tvb, offset, pinfo, dcerpc_tree, tree, &hdr, conv);
break;
case PDU_RESP:
- dissect_dcerpc_dg_resp (tvb, offset, pinfo, dcerpc_tree, tree, &hdr, conv);
+ dissect_dcerpc_dg_resp(tvb, offset, pinfo, dcerpc_tree, tree, &hdr, conv);
break;
/* these requests have no body */
case PDU_ACK:
case PDU_PING:
- dissect_dcerpc_dg_ping_ack (tvb, offset, pinfo, dcerpc_tree, &hdr, conv);
+ dissect_dcerpc_dg_ping_ack(tvb, offset, pinfo, dcerpc_tree, &hdr, conv);
break;
case PDU_WORKING:
default:
@@ -5475,39 +5488,39 @@ dissect_dcerpc_dg (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
static void
-dcerpc_init_protocol (void)
+dcerpc_init_protocol(void)
{
/* structures and data for BIND */
- if (dcerpc_binds){
- g_hash_table_destroy (dcerpc_binds);
- dcerpc_binds=NULL;
+ if (dcerpc_binds) {
+ g_hash_table_destroy(dcerpc_binds);
+ dcerpc_binds = NULL;
}
- if(!dcerpc_binds){
- dcerpc_binds = g_hash_table_new (dcerpc_bind_hash, dcerpc_bind_equal);
+ if (!dcerpc_binds) {
+ dcerpc_binds = g_hash_table_new(dcerpc_bind_hash, dcerpc_bind_equal);
}
/* structures and data for CALL */
- if (dcerpc_cn_calls){
- g_hash_table_destroy (dcerpc_cn_calls);
+ if (dcerpc_cn_calls) {
+ g_hash_table_destroy(dcerpc_cn_calls);
}
- dcerpc_cn_calls = g_hash_table_new (dcerpc_cn_call_hash, dcerpc_cn_call_equal);
- if (dcerpc_dg_calls){
- g_hash_table_destroy (dcerpc_dg_calls);
+ dcerpc_cn_calls = g_hash_table_new(dcerpc_cn_call_hash, dcerpc_cn_call_equal);
+ if (dcerpc_dg_calls) {
+ g_hash_table_destroy(dcerpc_dg_calls);
}
- dcerpc_dg_calls = g_hash_table_new (dcerpc_dg_call_hash, dcerpc_dg_call_equal);
+ dcerpc_dg_calls = g_hash_table_new(dcerpc_dg_call_hash, dcerpc_dg_call_equal);
/* structure and data for MATCHED */
- if (dcerpc_matched){
- g_hash_table_destroy (dcerpc_matched);
+ if (dcerpc_matched) {
+ g_hash_table_destroy(dcerpc_matched);
}
- dcerpc_matched = g_hash_table_new (dcerpc_matched_hash, dcerpc_matched_equal);
+ dcerpc_matched = g_hash_table_new(dcerpc_matched_hash, dcerpc_matched_equal);
/* call the registered hooks */
g_hook_list_invoke(&dcerpc_hooks_init_protos, FALSE /* not may_recurse */);
}
void
-proto_register_dcerpc (void)
+proto_register_dcerpc(void)
{
static hf_register_info hf[] = {
{ &hf_dcerpc_request_in,
@@ -5524,33 +5537,33 @@ proto_register_dcerpc (void)
{ &hf_dcerpc_ver_minor,
{ "Version (minor)", "dcerpc.ver_minor", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_dcerpc_packet_type,
- { "Packet type", "dcerpc.pkt_type", FT_UINT8, BASE_DEC, VALS (pckt_vals), 0x0, NULL, HFILL }},
+ { "Packet type", "dcerpc.pkt_type", FT_UINT8, BASE_DEC, VALS(pckt_vals), 0x0, NULL, HFILL }},
{ &hf_dcerpc_cn_flags,
{ "Packet Flags", "dcerpc.cn_flags", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_dcerpc_cn_flags_first_frag,
- { "First Frag", "dcerpc.cn_flags.first_frag", FT_BOOLEAN, 8, TFS (&tfs_set_notset), PFC_FIRST_FRAG, NULL, HFILL }},
+ { "First Frag", "dcerpc.cn_flags.first_frag", FT_BOOLEAN, 8, TFS(&tfs_set_notset), PFC_FIRST_FRAG, NULL, HFILL }},
{ &hf_dcerpc_cn_flags_last_frag,
- { "Last Frag", "dcerpc.cn_flags.last_frag", FT_BOOLEAN, 8, TFS (&tfs_set_notset), PFC_LAST_FRAG, NULL, HFILL }},
+ { "Last Frag", "dcerpc.cn_flags.last_frag", FT_BOOLEAN, 8, TFS(&tfs_set_notset), PFC_LAST_FRAG, NULL, HFILL }},
{ &hf_dcerpc_cn_flags_cancel_pending,
- { "Cancel Pending", "dcerpc.cn_flags.cancel_pending", FT_BOOLEAN, 8, TFS (&tfs_set_notset), PFC_PENDING_CANCEL, NULL, HFILL }},
+ { "Cancel Pending", "dcerpc.cn_flags.cancel_pending", FT_BOOLEAN, 8, TFS(&tfs_set_notset), PFC_PENDING_CANCEL, NULL, HFILL }},
{ &hf_dcerpc_cn_flags_reserved,
- { "Reserved", "dcerpc.cn_flags.reserved", FT_BOOLEAN, 8, TFS (&tfs_set_notset), PFC_RESERVED_1, NULL, HFILL }},
+ { "Reserved", "dcerpc.cn_flags.reserved", FT_BOOLEAN, 8, TFS(&tfs_set_notset), PFC_RESERVED_1, NULL, HFILL }},
{ &hf_dcerpc_cn_flags_mpx,
- { "Multiplex", "dcerpc.cn_flags.mpx", FT_BOOLEAN, 8, TFS (&tfs_set_notset), PFC_CONC_MPX, NULL, HFILL }},
+ { "Multiplex", "dcerpc.cn_flags.mpx", FT_BOOLEAN, 8, TFS(&tfs_set_notset), PFC_CONC_MPX, NULL, HFILL }},
{ &hf_dcerpc_cn_flags_dne,
- { "Did Not Execute", "dcerpc.cn_flags.dne", FT_BOOLEAN, 8, TFS (&tfs_set_notset), PFC_DID_NOT_EXECUTE, NULL, HFILL }},
+ { "Did Not Execute", "dcerpc.cn_flags.dne", FT_BOOLEAN, 8, TFS(&tfs_set_notset), PFC_DID_NOT_EXECUTE, NULL, HFILL }},
{ &hf_dcerpc_cn_flags_maybe,
- { "Maybe", "dcerpc.cn_flags.maybe", FT_BOOLEAN, 8, TFS (&tfs_set_notset), PFC_MAYBE, NULL, HFILL }},
+ { "Maybe", "dcerpc.cn_flags.maybe", FT_BOOLEAN, 8, TFS(&tfs_set_notset), PFC_MAYBE, NULL, HFILL }},
{ &hf_dcerpc_cn_flags_object,
- { "Object", "dcerpc.cn_flags.object", FT_BOOLEAN, 8, TFS (&tfs_set_notset), PFC_OBJECT_UUID, NULL, HFILL }},
+ { "Object", "dcerpc.cn_flags.object", FT_BOOLEAN, 8, TFS(&tfs_set_notset), PFC_OBJECT_UUID, NULL, HFILL }},
{ &hf_dcerpc_drep,
{ "Data Representation", "dcerpc.drep", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_dcerpc_drep_byteorder,
- { "Byte order", "dcerpc.drep.byteorder", FT_UINT8, BASE_DEC, VALS (drep_byteorder_vals), 0x0, NULL, HFILL }},
+ { "Byte order", "dcerpc.drep.byteorder", FT_UINT8, BASE_DEC, VALS(drep_byteorder_vals), 0x0, NULL, HFILL }},
{ &hf_dcerpc_drep_character,
- { "Character", "dcerpc.drep.character", FT_UINT8, BASE_DEC, VALS (drep_character_vals), 0x0, NULL, HFILL }},
+ { "Character", "dcerpc.drep.character", FT_UINT8, BASE_DEC, VALS(drep_character_vals), 0x0, NULL, HFILL }},
{ &hf_dcerpc_drep_fp,
- { "Floating-point", "dcerpc.drep.fp", FT_UINT8, BASE_DEC, VALS (drep_fp_vals), 0x0, NULL, HFILL }},
+ { "Floating-point", "dcerpc.drep.fp", FT_UINT8, BASE_DEC, VALS(drep_fp_vals), 0x0, NULL, HFILL }},
{ &hf_dcerpc_cn_frag_len,
{ "Frag Length", "dcerpc.cn_frag_len", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_dcerpc_cn_auth_len,
@@ -5616,9 +5629,9 @@ proto_register_dcerpc (void)
{ &hf_dcerpc_cn_deseg_req,
{ "Desegmentation Required", "dcerpc.cn_deseg_req", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_dcerpc_auth_type,
- { "Auth type", "dcerpc.auth_type", FT_UINT8, BASE_DEC, VALS (authn_protocol_vals), 0x0, NULL, HFILL }},
+ { "Auth type", "dcerpc.auth_type", FT_UINT8, BASE_DEC, VALS(authn_protocol_vals), 0x0, NULL, HFILL }},
{ &hf_dcerpc_auth_level,
- { "Auth level", "dcerpc.auth_level", FT_UINT8, BASE_DEC, VALS (authn_level_vals), 0x0, NULL, HFILL }},
+ { "Auth level", "dcerpc.auth_level", FT_UINT8, BASE_DEC, VALS(authn_level_vals), 0x0, NULL, HFILL }},
{ &hf_dcerpc_auth_pad_len,
{ "Auth pad len", "dcerpc.auth_pad_len", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_dcerpc_auth_rsrvd,
@@ -5628,39 +5641,39 @@ proto_register_dcerpc (void)
{ &hf_dcerpc_dg_flags1,
{ "Flags1", "dcerpc.dg_flags1", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_dcerpc_dg_flags1_rsrvd_01,
- { "Reserved", "dcerpc.dg_flags1_rsrvd_01", FT_BOOLEAN, 8, TFS (&tfs_set_notset), PFCL1_RESERVED_01, NULL, HFILL }},
+ { "Reserved", "dcerpc.dg_flags1_rsrvd_01", FT_BOOLEAN, 8, TFS(&tfs_set_notset), PFCL1_RESERVED_01, NULL, HFILL }},
{ &hf_dcerpc_dg_flags1_last_frag,
- { "Last Fragment", "dcerpc.dg_flags1_last_frag", FT_BOOLEAN, 8, TFS (&tfs_set_notset), PFCL1_LASTFRAG, NULL, HFILL }},
+ { "Last Fragment", "dcerpc.dg_flags1_last_frag", FT_BOOLEAN, 8, TFS(&tfs_set_notset), PFCL1_LASTFRAG, NULL, HFILL }},
{ &hf_dcerpc_dg_flags1_frag,
- { "Fragment", "dcerpc.dg_flags1_frag", FT_BOOLEAN, 8, TFS (&tfs_set_notset), PFCL1_FRAG, NULL, HFILL }},
+ { "Fragment", "dcerpc.dg_flags1_frag", FT_BOOLEAN, 8, TFS(&tfs_set_notset), PFCL1_FRAG, NULL, HFILL }},
{ &hf_dcerpc_dg_flags1_nofack,
- { "No Fack", "dcerpc.dg_flags1_nofack", FT_BOOLEAN, 8, TFS (&tfs_set_notset), PFCL1_NOFACK, NULL, HFILL }},
+ { "No Fack", "dcerpc.dg_flags1_nofack", FT_BOOLEAN, 8, TFS(&tfs_set_notset), PFCL1_NOFACK, NULL, HFILL }},
{ &hf_dcerpc_dg_flags1_maybe,
- { "Maybe", "dcerpc.dg_flags1_maybe", FT_BOOLEAN, 8, TFS (&tfs_set_notset), PFCL1_MAYBE, NULL, HFILL }},
+ { "Maybe", "dcerpc.dg_flags1_maybe", FT_BOOLEAN, 8, TFS(&tfs_set_notset), PFCL1_MAYBE, NULL, HFILL }},
{ &hf_dcerpc_dg_flags1_idempotent,
- { "Idempotent", "dcerpc.dg_flags1_idempotent", FT_BOOLEAN, 8, TFS (&tfs_set_notset), PFCL1_IDEMPOTENT, NULL, HFILL }},
+ { "Idempotent", "dcerpc.dg_flags1_idempotent", FT_BOOLEAN, 8, TFS(&tfs_set_notset), PFCL1_IDEMPOTENT, NULL, HFILL }},
{ &hf_dcerpc_dg_flags1_broadcast,
- { "Broadcast", "dcerpc.dg_flags1_broadcast", FT_BOOLEAN, 8, TFS (&tfs_set_notset), PFCL1_BROADCAST, NULL, HFILL }},
+ { "Broadcast", "dcerpc.dg_flags1_broadcast", FT_BOOLEAN, 8, TFS(&tfs_set_notset), PFCL1_BROADCAST, NULL, HFILL }},
{ &hf_dcerpc_dg_flags1_rsrvd_80,
- { "Reserved", "dcerpc.dg_flags1_rsrvd_80", FT_BOOLEAN, 8, TFS (&tfs_set_notset), PFCL1_RESERVED_80, NULL, HFILL }},
+ { "Reserved", "dcerpc.dg_flags1_rsrvd_80", FT_BOOLEAN, 8, TFS(&tfs_set_notset), PFCL1_RESERVED_80, NULL, HFILL }},
{ &hf_dcerpc_dg_flags2,
{ "Flags2", "dcerpc.dg_flags2", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_dcerpc_dg_flags2_rsrvd_01,
- { "Reserved", "dcerpc.dg_flags2_rsrvd_01", FT_BOOLEAN, 8, TFS (&tfs_set_notset), PFCL2_RESERVED_01, NULL, HFILL }},
+ { "Reserved", "dcerpc.dg_flags2_rsrvd_01", FT_BOOLEAN, 8, TFS(&tfs_set_notset), PFCL2_RESERVED_01, NULL, HFILL }},
{ &hf_dcerpc_dg_flags2_cancel_pending,
- { "Cancel Pending", "dcerpc.dg_flags2_cancel_pending", FT_BOOLEAN, 8, TFS (&tfs_set_notset), PFCL2_CANCEL_PENDING, NULL, HFILL }},
+ { "Cancel Pending", "dcerpc.dg_flags2_cancel_pending", FT_BOOLEAN, 8, TFS(&tfs_set_notset), PFCL2_CANCEL_PENDING, NULL, HFILL }},
{ &hf_dcerpc_dg_flags2_rsrvd_04,
- { "Reserved", "dcerpc.dg_flags2_rsrvd_04", FT_BOOLEAN, 8, TFS (&tfs_set_notset), PFCL2_RESERVED_04, NULL, HFILL }},
+ { "Reserved", "dcerpc.dg_flags2_rsrvd_04", FT_BOOLEAN, 8, TFS(&tfs_set_notset), PFCL2_RESERVED_04, NULL, HFILL }},
{ &hf_dcerpc_dg_flags2_rsrvd_08,
- { "Reserved", "dcerpc.dg_flags2_rsrvd_08", FT_BOOLEAN, 8, TFS (&tfs_set_notset), PFCL2_RESERVED_08, NULL, HFILL }},
+ { "Reserved", "dcerpc.dg_flags2_rsrvd_08", FT_BOOLEAN, 8, TFS(&tfs_set_notset), PFCL2_RESERVED_08, NULL, HFILL }},
{ &hf_dcerpc_dg_flags2_rsrvd_10,
- { "Reserved", "dcerpc.dg_flags2_rsrvd_10", FT_BOOLEAN, 8, TFS (&tfs_set_notset), PFCL2_RESERVED_10, NULL, HFILL }},
+ { "Reserved", "dcerpc.dg_flags2_rsrvd_10", FT_BOOLEAN, 8, TFS(&tfs_set_notset), PFCL2_RESERVED_10, NULL, HFILL }},
{ &hf_dcerpc_dg_flags2_rsrvd_20,
- { "Reserved", "dcerpc.dg_flags2_rsrvd_20", FT_BOOLEAN, 8, TFS (&tfs_set_notset), PFCL2_RESERVED_20, NULL, HFILL }},
+ { "Reserved", "dcerpc.dg_flags2_rsrvd_20", FT_BOOLEAN, 8, TFS(&tfs_set_notset), PFCL2_RESERVED_20, NULL, HFILL }},
{ &hf_dcerpc_dg_flags2_rsrvd_40,
- { "Reserved", "dcerpc.dg_flags2_rsrvd_40", FT_BOOLEAN, 8, TFS (&tfs_set_notset), PFCL2_RESERVED_40, NULL, HFILL }},
+ { "Reserved", "dcerpc.dg_flags2_rsrvd_40", FT_BOOLEAN, 8, TFS(&tfs_set_notset), PFCL2_RESERVED_40, NULL, HFILL }},
{ &hf_dcerpc_dg_flags2_rsrvd_80,
- { "Reserved", "dcerpc.dg_flags2_rsrvd_80", FT_BOOLEAN, 8, TFS (&tfs_set_notset), PFCL2_RESERVED_80, NULL, HFILL }},
+ { "Reserved", "dcerpc.dg_flags2_rsrvd_80", FT_BOOLEAN, 8, TFS(&tfs_set_notset), PFCL2_RESERVED_80, NULL, HFILL }},
{ &hf_dcerpc_dg_serial_lo,
{ "Serial Low", "dcerpc.dg_serial_lo", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_dcerpc_dg_serial_hi,
@@ -5674,7 +5687,7 @@ proto_register_dcerpc (void)
{ &hf_dcerpc_dg_frag_num,
{ "Fragment num", "dcerpc.dg_frag_num", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_dcerpc_dg_auth_proto,
- { "Auth proto", "dcerpc.dg_auth_proto", FT_UINT8, BASE_DEC, VALS (authn_protocol_vals), 0x0, NULL, HFILL }},
+ { "Auth proto", "dcerpc.dg_auth_proto", FT_UINT8, BASE_DEC, VALS(authn_protocol_vals), 0x0, NULL, HFILL }},
{ &hf_dcerpc_dg_seqnum,
{ "Sequence num", "dcerpc.dg_seqnum", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_dcerpc_dg_server_boot,
@@ -5862,38 +5875,40 @@ proto_register_dcerpc (void)
};
module_t *dcerpc_module;
- proto_dcerpc = proto_register_protocol ("Distributed Computing Environment / Remote Procedure Call (DCE/RPC)", "DCERPC", "dcerpc");
- proto_register_field_array (proto_dcerpc, hf, array_length (hf));
- proto_register_subtree_array (ett, array_length (ett));
- register_init_routine (dcerpc_init_protocol);
- dcerpc_module = prefs_register_protocol (proto_dcerpc, NULL);
- prefs_register_bool_preference (dcerpc_module,
- "desegment_dcerpc",
- "Reassemble DCE/RPC messages spanning multiple TCP segments",
- "Whether the DCE/RPC dissector should reassemble messages spanning multiple TCP segments."
- " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
- &dcerpc_cn_desegment);
- prefs_register_bool_preference (dcerpc_module,
- "reassemble_dcerpc",
- "Reassemble DCE/RPC fragments",
- "Whether the DCE/RPC dissector should reassemble fragmented DCE/RPC PDUs",
- &dcerpc_reassemble);
+ proto_dcerpc = proto_register_protocol("Distributed Computing Environment / Remote Procedure Call (DCE/RPC)", "DCERPC", "dcerpc");
+ proto_register_field_array(proto_dcerpc, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+ register_init_routine(dcerpc_init_protocol);
+ dcerpc_module = prefs_register_protocol(proto_dcerpc, NULL);
+ prefs_register_bool_preference(dcerpc_module,
+ "desegment_dcerpc",
+ "Reassemble DCE/RPC messages spanning multiple TCP segments",
+ "Whether the DCE/RPC dissector should reassemble messages"
+ " spanning multiple TCP segments."
+ " To use this option, you must also enable"
+ " \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
+ &dcerpc_cn_desegment);
+ prefs_register_bool_preference(dcerpc_module,
+ "reassemble_dcerpc",
+ "Reassemble DCE/RPC fragments",
+ "Whether the DCE/RPC dissector should reassemble fragmented DCE/RPC PDUs",
+ &dcerpc_reassemble);
register_init_routine(dcerpc_reassemble_init);
- dcerpc_uuids = g_hash_table_new (dcerpc_uuid_hash, dcerpc_uuid_equal);
- dcerpc_tap=register_tap("dcerpc");
+ dcerpc_uuids = g_hash_table_new(dcerpc_uuid_hash, dcerpc_uuid_equal);
+ dcerpc_tap = register_tap("dcerpc");
g_hook_list_init(&dcerpc_hooks_init_protos, sizeof(GHook));
}
void
-proto_reg_handoff_dcerpc (void)
+proto_reg_handoff_dcerpc(void)
{
- heur_dissector_add ("tcp", dissect_dcerpc_cn_bs, proto_dcerpc);
- heur_dissector_add ("netbios", dissect_dcerpc_cn_pk, proto_dcerpc);
- heur_dissector_add ("udp", dissect_dcerpc_dg, proto_dcerpc);
- heur_dissector_add ("smb_transact", dissect_dcerpc_cn_smbpipe, proto_dcerpc);
- heur_dissector_add ("smb2_heur_subdissectors", dissect_dcerpc_cn_smb2, proto_dcerpc);
- heur_dissector_add ("http", dissect_dcerpc_cn_bs, proto_dcerpc);
+ heur_dissector_add("tcp", dissect_dcerpc_cn_bs, proto_dcerpc);
+ heur_dissector_add("netbios", dissect_dcerpc_cn_pk, proto_dcerpc);
+ heur_dissector_add("udp", dissect_dcerpc_dg, proto_dcerpc);
+ heur_dissector_add("smb_transact", dissect_dcerpc_cn_smbpipe, proto_dcerpc);
+ heur_dissector_add("smb2_heur_subdissectors", dissect_dcerpc_cn_smb2, proto_dcerpc);
+ heur_dissector_add("http", dissect_dcerpc_cn_bs, proto_dcerpc);
dcerpc_smb_init(proto_dcerpc);
guids_add_uuid(&uuid_data_repr_proto, "32bit NDR");
diff --git a/epan/dissectors/packet-dcm.c b/epan/dissectors/packet-dcm.c
index fe4da5da20..32f813416c 100644
--- a/epan/dissectors/packet-dcm.c
+++ b/epan/dissectors/packet-dcm.c
@@ -206,14 +206,12 @@
# include "config.h"
#endif
-#include <stdlib.h>
#include <string.h>
-#include <ctype.h>
#include <glib.h>
-#include <epan/prefs.h>
#include <epan/packet.h>
+#include <epan/prefs.h>
#include <epan/emem.h>
#include <epan/strutil.h>
#include <epan/conversation.h>
@@ -5813,7 +5811,6 @@ dissect_dcm_tag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
if (len_decoded_remaing >= 2) {
vl_2 = pdv->prev->open_tag.vl_2;
- len_decoded_remaing -= 2;
}
else {
@@ -6131,7 +6128,6 @@ dissect_dcm_pdv_body(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
proto_tree_add_bytes_format(tree, hf_dcm_data_tag, tvb,
offset, pdv_body_len, NULL,
"(%04x,%04x) %-8x Unparsed data", 0, 0, pdv_body_len);
- offset = endpos;
}
else {
diff --git a/epan/dissectors/packet-dcom-oxid.c b/epan/dissectors/packet-dcom-oxid.c
index 74758f8f82..5af5d77f9e 100644
--- a/epan/dissectors/packet-dcom-oxid.c
+++ b/epan/dissectors/packet-dcom-oxid.c
@@ -63,198 +63,198 @@ static guint16 ver_oxid = 0;
static int
dissect_oxid_simple_ping_rqst(tvbuff_t *tvb, int offset,
- packet_info *pinfo, proto_tree *tree, guint8 *drep)
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- offset = dissect_dcom_ID(tvb, offset, pinfo, tree, drep,
- hf_oxid_setid, NULL);
+ offset = dissect_dcom_ID(tvb, offset, pinfo, tree, drep,
+ hf_oxid_setid, NULL);
- return offset;
+ return offset;
}
static int
dissect_oxid_simple_ping_resp(tvbuff_t *tvb, int offset,
- packet_info *pinfo, proto_tree *tree, guint8 *drep)
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 u32HResult;
+ guint32 u32HResult;
- offset = dissect_dcom_HRESULT(tvb, offset, pinfo, tree, drep,
- &u32HResult);
+ offset = dissect_dcom_HRESULT(tvb, offset, pinfo, tree, drep,
+ &u32HResult);
col_append_fstr(pinfo->cinfo, COL_INFO, " -> %s",
- val_to_str(u32HResult, dcom_hresult_vals, "Unknown (0x%08x)") );
+ val_to_str(u32HResult, dcom_hresult_vals, "Unknown (0x%08x)") );
- return offset;
+ return offset;
}
static int
dissect_oxid_server_alive_resp(tvbuff_t *tvb, int offset,
- packet_info *pinfo, proto_tree *tree, guint8 *drep)
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 u32HResult;
+ guint32 u32HResult;
- offset = dissect_dcom_HRESULT(tvb, offset, pinfo, tree, drep,
- &u32HResult);
+ offset = dissect_dcom_HRESULT(tvb, offset, pinfo, tree, drep,
+ &u32HResult);
col_append_fstr(pinfo->cinfo, COL_INFO, " -> %s",
- val_to_str(u32HResult, dcom_hresult_vals, "Unknown (0x%08x)") );
+ val_to_str(u32HResult, dcom_hresult_vals, "Unknown (0x%08x)") );
- return offset;
+ return offset;
}
static int
dissect_oxid_complex_ping_rqst(tvbuff_t *tvb, int offset,
- packet_info *pinfo, proto_tree *tree, guint8 *drep)
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint16 u16SeqNum;
- guint16 u16AddToSet;
- guint16 u16DelFromSet;
- guint32 u32Pointer;
- guint32 u32ArraySize;
-
- offset = dissect_dcom_ID(tvb, offset, pinfo, tree, drep,
- hf_oxid_setid, NULL);
-
- offset = dissect_dcom_WORD(tvb, offset, pinfo, tree, drep,
- hf_oxid_seqnum, &u16SeqNum);
- offset = dissect_dcom_WORD(tvb, offset, pinfo, tree, drep,
- hf_oxid_addtoset, &u16AddToSet);
- offset = dissect_dcom_WORD(tvb, offset, pinfo, tree, drep,
- hf_oxid_delfromset, &u16DelFromSet);
-
- col_append_fstr(pinfo->cinfo, COL_INFO, " AddToSet=%u DelFromSet=%u",
- u16AddToSet, u16DelFromSet);
-
- offset = dissect_dcom_dcerpc_pointer(tvb, offset, pinfo, tree, drep,
- &u32Pointer);
- if (u32Pointer) {
- offset = dissect_dcom_dcerpc_array_size(tvb, offset, pinfo, tree, drep,
- &u32ArraySize);
-
- while (u16AddToSet--) {
- offset = dissect_dcom_ID(tvb, offset, pinfo, tree, drep,
- hf_oxid_oid, NULL);
- }
- }
-
- offset = dissect_dcom_dcerpc_pointer(tvb, offset, pinfo, tree, drep,
- &u32Pointer);
+ guint16 u16SeqNum;
+ guint16 u16AddToSet;
+ guint16 u16DelFromSet;
+ guint32 u32Pointer;
+ guint32 u32ArraySize;
+
+ offset = dissect_dcom_ID(tvb, offset, pinfo, tree, drep,
+ hf_oxid_setid, NULL);
+
+ offset = dissect_dcom_WORD(tvb, offset, pinfo, tree, drep,
+ hf_oxid_seqnum, &u16SeqNum);
+ offset = dissect_dcom_WORD(tvb, offset, pinfo, tree, drep,
+ hf_oxid_addtoset, &u16AddToSet);
+ offset = dissect_dcom_WORD(tvb, offset, pinfo, tree, drep,
+ hf_oxid_delfromset, &u16DelFromSet);
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, " AddToSet=%u DelFromSet=%u",
+ u16AddToSet, u16DelFromSet);
+
+ offset = dissect_dcom_dcerpc_pointer(tvb, offset, pinfo, tree, drep,
+ &u32Pointer);
+ if (u32Pointer) {
+ offset = dissect_dcom_dcerpc_array_size(tvb, offset, pinfo, tree, drep,
+ &u32ArraySize);
+
+ while (u16AddToSet--) {
+ offset = dissect_dcom_ID(tvb, offset, pinfo, tree, drep,
+ hf_oxid_oid, NULL);
+ }
+ }
+
+ offset = dissect_dcom_dcerpc_pointer(tvb, offset, pinfo, tree, drep,
+ &u32Pointer);
if (u32Pointer) {
- offset = dissect_dcom_dcerpc_array_size(tvb, offset, pinfo, tree, drep,
- &u32ArraySize);
+ offset = dissect_dcom_dcerpc_array_size(tvb, offset, pinfo, tree, drep,
+ &u32ArraySize);
- while (u16DelFromSet--) {
- offset = dissect_dcom_ID(tvb, offset, pinfo, tree, drep,
- hf_oxid_oid, NULL);
- }
- }
+ while (u16DelFromSet--) {
+ offset = dissect_dcom_ID(tvb, offset, pinfo, tree, drep,
+ hf_oxid_oid, NULL);
+ }
+ }
- return offset;
+ return offset;
}
static int
dissect_oxid_complex_ping_resp(tvbuff_t *tvb, int offset,
- packet_info *pinfo, proto_tree *tree, guint8 *drep)
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint16 u16PingBackoffFactor;
- guint32 u32HResult;
+ guint16 u16PingBackoffFactor;
+ guint32 u32HResult;
- offset = dissect_dcom_ID(tvb, offset, pinfo, tree, drep,
- hf_oxid_setid, NULL);
- offset = dissect_dcom_WORD(tvb, offset, pinfo, tree, drep,
- hf_oxid_ping_backoff_factor, &u16PingBackoffFactor);
+ offset = dissect_dcom_ID(tvb, offset, pinfo, tree, drep,
+ hf_oxid_setid, NULL);
+ offset = dissect_dcom_WORD(tvb, offset, pinfo, tree, drep,
+ hf_oxid_ping_backoff_factor, &u16PingBackoffFactor);
- offset = dissect_dcom_HRESULT(tvb, offset, pinfo, tree, drep,
- &u32HResult);
+ offset = dissect_dcom_HRESULT(tvb, offset, pinfo, tree, drep,
+ &u32HResult);
col_append_fstr(pinfo->cinfo, COL_INFO, " -> %s",
- val_to_str(u32HResult, dcom_hresult_vals, "Unknown (0x%08x)") );
+ val_to_str(u32HResult, dcom_hresult_vals, "Unknown (0x%08x)") );
- return offset;
+ return offset;
}
static int
dissect_oxid_resolve_oxid2_rqst(tvbuff_t *tvb, int offset,
- packet_info *pinfo, proto_tree *tree, guint8 *drep)
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint16 u16ProtSeqs;
- guint32 u32ArraySize;
- guint32 u32ItemIdx;
+ guint16 u16ProtSeqs;
+ guint32 u32ArraySize;
+ guint32 u32ItemIdx;
- offset = dissect_dcom_ID(tvb, offset, pinfo, tree, drep,
- hf_oxid_oxid, NULL);
+ offset = dissect_dcom_ID(tvb, offset, pinfo, tree, drep,
+ hf_oxid_oxid, NULL);
- offset = dissect_dcom_WORD(tvb, offset, pinfo, tree, drep,
+ offset = dissect_dcom_WORD(tvb, offset, pinfo, tree, drep,
hf_oxid_requested_protseqs, &u16ProtSeqs);
- offset = dissect_dcom_dcerpc_array_size(tvb, offset, pinfo, tree, drep,
- &u32ArraySize);
+ offset = dissect_dcom_dcerpc_array_size(tvb, offset, pinfo, tree, drep,
+ &u32ArraySize);
- u32ItemIdx = 1;
- while (u32ArraySize--) {
- offset = dissect_dcom_WORD(tvb, offset, pinfo, tree, drep,
- hf_oxid_protseqs, &u16ProtSeqs);
- u32ItemIdx++;
- }
+ u32ItemIdx = 1;
+ while (u32ArraySize--) {
+ offset = dissect_dcom_WORD(tvb, offset, pinfo, tree, drep,
+ hf_oxid_protseqs, &u16ProtSeqs);
+ u32ItemIdx++;
+ }
- return offset;
+ return offset;
}
static int
dissect_oxid_resolve_oxid2_resp(tvbuff_t *tvb, int offset,
- packet_info *pinfo, proto_tree *tree, guint8 *drep)
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
- guint32 u32Pointer;
- guint32 u32ArraySize;
- e_uuid_t ipid;
- guint32 u32AuthnHint;
- guint16 u16VersionMajor;
- guint16 u16VersionMinor;
- guint32 u32HResult;
+ guint32 u32Pointer;
+ guint32 u32ArraySize;
+ e_uuid_t ipid;
+ guint32 u32AuthnHint;
+ guint16 u16VersionMajor;
+ guint16 u16VersionMinor;
+ guint32 u32HResult;
- offset = dissect_dcom_dcerpc_pointer(tvb, offset, pinfo, tree, drep,
- &u32Pointer);
- if (u32Pointer) {
- offset = dissect_dcom_dcerpc_array_size(tvb, offset, pinfo, tree, drep,
- &u32ArraySize);
+ offset = dissect_dcom_dcerpc_pointer(tvb, offset, pinfo, tree, drep,
+ &u32Pointer);
+ if (u32Pointer) {
+ offset = dissect_dcom_dcerpc_array_size(tvb, offset, pinfo, tree, drep,
+ &u32ArraySize);
- offset = dissect_dcom_DUALSTRINGARRAY(tvb, offset, pinfo, tree, drep,
- hf_oxid_bindings, NULL);
+ offset = dissect_dcom_DUALSTRINGARRAY(tvb, offset, pinfo, tree, drep,
+ hf_oxid_bindings, NULL);
- offset = dissect_dcom_UUID(tvb, offset, pinfo, tree, drep,
- hf_oxid_ipid, &ipid);
+ offset = dissect_dcom_UUID(tvb, offset, pinfo, tree, drep,
+ hf_oxid_ipid, &ipid);
- offset = dissect_dcom_DWORD(tvb, offset, pinfo, tree, drep,
- hf_oxid_authn_hint, &u32AuthnHint);
+ offset = dissect_dcom_DWORD(tvb, offset, pinfo, tree, drep,
+ hf_oxid_authn_hint, &u32AuthnHint);
- offset = dissect_dcom_COMVERSION(tvb, offset, pinfo, tree, drep,
- &u16VersionMajor, &u16VersionMinor);
- }
+ offset = dissect_dcom_COMVERSION(tvb, offset, pinfo, tree, drep,
+ &u16VersionMajor, &u16VersionMinor);
+ }
- offset = dissect_dcom_HRESULT(tvb, offset, pinfo, tree, drep,
- &u32HResult);
+ offset = dissect_dcom_HRESULT(tvb, offset, pinfo, tree, drep,
+ &u32HResult);
col_append_fstr(pinfo->cinfo, COL_INFO, " -> %s",
- val_to_str(u32HResult, dcom_hresult_vals, "Unknown (0x%08x)") );
+ val_to_str(u32HResult, dcom_hresult_vals, "Unknown (0x%08x)") );
- return offset;
+ return offset;
}
static int
dissect_oxid_server_alive2_resp(tvbuff_t *tvb, int offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep) {
- guint16 u16VersionMajor;
+ proto_tree *tree, guint8 *drep) {
+ guint16 u16VersionMajor;
guint16 u16VersionMinor;
offset = dissect_dcom_COMVERSION(tvb, offset, pinfo, tree, drep, &u16VersionMajor, &u16VersionMinor);
@@ -287,55 +287,55 @@ static dcerpc_sub_dissector oxid_dissectors[] = {
void
proto_register_oxid (void)
{
- static hf_register_info hf[] = {
- { &hf_oxid_opnum,
- { "Operation", "oxid.opnum", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
-
- { &hf_oxid_setid,
- { "SetId", "oxid.setid", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }},
- { &hf_oxid_seqnum,
- { "SeqNum", "oxid.seqnum", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_oxid_addtoset,
- { "AddToSet", "oxid.addtoset", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_oxid_delfromset,
- { "DelFromSet", "oxid.delfromset", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_oxid_oid,
- { "OID", "oxid.oid", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }},
- { &hf_oxid_ping_backoff_factor,
- { "PingBackoffFactor", "oxid.ping_backoff_factor", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_oxid_oxid,
- { "OXID", "oxid.oxid", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }},
-
- { &hf_oxid_requested_protseqs,
- { "RequestedProtSeq", "oxid.requested_protseqs", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_oxid_protseqs,
- { "ProtSeq", "oxid.protseqs", FT_UINT16, BASE_DEC, VALS(dcom_protseq_vals), 0x0, NULL, HFILL }},
-
- { &hf_oxid_bindings,
- { "OxidBindings", "oxid.bindings", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_oxid_ipid,
- { "IPID", "oxid.ipid", FT_GUID, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_oxid_authn_hint,
- { "AuthnHint", "oxid.authn_hint", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
-
- { &hf_oxid_ds_array,
- { "Address", "dcom.oxid.address", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_oxid_Unknown1,
- { "unknown 8 bytes 1", "oxid.unknown1", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }},
- { &hf_oxid_Unknown2,
+ static hf_register_info hf[] = {
+ { &hf_oxid_opnum,
+ { "Operation", "oxid.opnum", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
+
+ { &hf_oxid_setid,
+ { "SetId", "oxid.setid", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_oxid_seqnum,
+ { "SeqNum", "oxid.seqnum", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
+ { &hf_oxid_addtoset,
+ { "AddToSet", "oxid.addtoset", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
+ { &hf_oxid_delfromset,
+ { "DelFromSet", "oxid.delfromset", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
+ { &hf_oxid_oid,
+ { "OID", "oxid.oid", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_oxid_ping_backoff_factor,
+ { "PingBackoffFactor", "oxid.ping_backoff_factor", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
+ { &hf_oxid_oxid,
+ { "OXID", "oxid.oxid", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+
+ { &hf_oxid_requested_protseqs,
+ { "RequestedProtSeq", "oxid.requested_protseqs", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
+ { &hf_oxid_protseqs,
+ { "ProtSeq", "oxid.protseqs", FT_UINT16, BASE_DEC, VALS(dcom_protseq_vals), 0x0, NULL, HFILL }},
+
+ { &hf_oxid_bindings,
+ { "OxidBindings", "oxid.bindings", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_oxid_ipid,
+ { "IPID", "oxid.ipid", FT_GUID, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_oxid_authn_hint,
+ { "AuthnHint", "oxid.authn_hint", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
+
+ { &hf_oxid_ds_array,
+ { "Address", "dcom.oxid.address", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_oxid_Unknown1,
+ { "unknown 8 bytes 1", "oxid.unknown1", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_oxid_Unknown2,
{ "unknown 8 bytes 2", "oxid.unknown2", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }}
- };
- static gint *ett[] = {
- &ett_oxid
- };
- proto_oxid = proto_register_protocol ("DCOM OXID Resolver", "IOXIDResolver", "oxid");
- proto_register_field_array (proto_oxid, hf, array_length (hf));
- proto_register_subtree_array (ett, array_length (ett));
+ };
+ static gint *ett[] = {
+ &ett_oxid
+ };
+ proto_oxid = proto_register_protocol ("DCOM OXID Resolver", "IOXIDResolver", "oxid");
+ proto_register_field_array (proto_oxid, hf, array_length (hf));
+ proto_register_subtree_array (ett, array_length (ett));
}
void
proto_reg_handoff_oxid (void)
{
- /* Register the protocol as dcerpc */
- dcerpc_init_uuid (proto_oxid, ett_oxid, &uuid_oxid, ver_oxid, oxid_dissectors, hf_oxid_opnum);
+ /* Register the protocol as dcerpc */
+ dcerpc_init_uuid (proto_oxid, ett_oxid, &uuid_oxid, ver_oxid, oxid_dissectors, hf_oxid_opnum);
}
diff --git a/epan/dissectors/packet-dcom-sysact.c b/epan/dissectors/packet-dcom-sysact.c
index 1c771d4b0c..d4a223a492 100644
--- a/epan/dissectors/packet-dcom-sysact.c
+++ b/epan/dissectors/packet-dcom-sysact.c
@@ -46,36 +46,35 @@ static guint16 ver_ISystemActivator = 0;
static int
dissect_remsysact_remotecreateinstance_rqst(tvbuff_t *tvb, int offset,
- packet_info *pinfo, proto_tree *tree, guint8 *drep)
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
offset = dissect_dcom_this(tvb, offset, pinfo, tree, drep);
/* XXX - what is this? */
- offset = dissect_dcom_nospec_data(tvb, offset, pinfo, tree, drep,
- 4);
+ offset = dissect_dcom_nospec_data(tvb, offset, pinfo, tree, drep, 4);
- offset = dissect_dcom_PMInterfacePointer(tvb, offset, pinfo, tree, drep,
- hf_sysact_unknown, NULL /* XXX */);
+ offset = dissect_dcom_PMInterfacePointer(tvb, offset, pinfo, tree, drep,
+ hf_sysact_unknown, NULL /* XXX */);
- return offset;
+ return offset;
}
static int
dissect_remsysact_remotecreateinstance_resp(tvbuff_t *tvb, int offset,
- packet_info *pinfo, proto_tree *tree, guint8 *drep)
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
{
offset = dissect_dcom_that(tvb, offset, pinfo, tree, drep);
- offset = dissect_dcom_PMInterfacePointer(tvb, offset, pinfo, tree, drep,
- hf_sysact_unknown, NULL /* XXX */);
+ offset = dissect_dcom_PMInterfacePointer(tvb, offset, pinfo, tree, drep,
+ hf_sysact_unknown, NULL /* XXX */);
- offset = dissect_dcom_HRESULT(tvb, offset, pinfo, tree, drep,
- NULL /* pu32HResult */);
+ offset = dissect_dcom_HRESULT(tvb, offset, pinfo, tree, drep,
+ NULL /* pu32HResult */);
- return offset;
+ return offset;
}
@@ -93,23 +92,27 @@ static dcerpc_sub_dissector ISystemActivator_dissectors[] = {
void
proto_register_ISystemActivator (void)
{
- static hf_register_info hf[] = {
- { &hf_opnum,
- { "Operation", "isystemactivator.opnum", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_sysact_unknown,
- { "IUnknown", "isystemactivator.unknown", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- };
- static gint *ett[] = {
- &ett_ISystemActivator
- };
- proto_ISystemActivator = proto_register_protocol ("ISystemActivator ISystemActivator Resolver", "ISystemActivator", "isystemactivator");
- proto_register_field_array (proto_ISystemActivator, hf, array_length (hf));
- proto_register_subtree_array (ett, array_length (ett));
+ static hf_register_info hf[] = {
+ { &hf_opnum,
+ { "Operation", "isystemactivator.opnum", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
+ { &hf_sysact_unknown,
+ { "IUnknown", "isystemactivator.unknown", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ };
+ static gint *ett[] = {
+ &ett_ISystemActivator
+ };
+ proto_ISystemActivator = proto_register_protocol ("ISystemActivator ISystemActivator Resolver",
+ "ISystemActivator",
+ "isystemactivator");
+ proto_register_field_array (proto_ISystemActivator, hf, array_length (hf));
+ proto_register_subtree_array (ett, array_length (ett));
}
void
proto_reg_handoff_ISystemActivator (void)
{
- /* Register the protocol as dcerpc */
- dcerpc_init_uuid (proto_ISystemActivator, ett_ISystemActivator, &uuid_ISystemActivator, ver_ISystemActivator, ISystemActivator_dissectors, hf_opnum);
+ /* Register the protocol as dcerpc */
+ dcerpc_init_uuid (proto_ISystemActivator, ett_ISystemActivator,
+ &uuid_ISystemActivator, ver_ISystemActivator,
+ ISystemActivator_dissectors, hf_opnum);
}
diff --git a/epan/dissectors/packet-dcom.c b/epan/dissectors/packet-dcom.c
index 51f5fbbacd..89b90c2389 100644
--- a/epan/dissectors/packet-dcom.c
+++ b/epan/dissectors/packet-dcom.c
@@ -14,7 +14,7 @@
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
@@ -58,7 +58,7 @@
* generic DCOM datatype (DWORD, VARIANT, ...)
*
* DCOM common Interfaces:
- * packet-dcom-oxid.c: IOXIDResolver
+ * packet-dcom-oxid.c: IOXIDResolver
* packet-dcom-remact.c: IRemoteActivation
* packet-dcom-remunk.c: IRemUnknown, IRemUnknown2
* packet-dcom-dispatch.c: IDispatch
@@ -225,17 +225,17 @@ static e_uuid_t uuid_ext_error_ext ={ 0xf1f19681, 0x4d2a, 0x11ce, { 0xa6, 0x6a,
/* general DCOM UUIDs */
static const e_uuid_t ipid_rem_unknown = { 0x00000131, 0x1234, 0x5678, { 0xCA, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} };
-static const e_uuid_t iid_unknown = { 0x00000000, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} };
-static const e_uuid_t uuid_null = { 0x00000000, 0x0000, 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} };
+static const e_uuid_t iid_unknown = { 0x00000000, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} };
+static const e_uuid_t uuid_null = { 0x00000000, 0x0000, 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} };
static const e_uuid_t iid_class_factory = { 0x00000001, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} };
static GList *dcom_machines = NULL;
static GList *dcom_interfaces = NULL;
static const value_string dcom_thisthat_flag_vals[] = {
- { 0, "INFO_NULL" },
- { 1, "INFO_LOCAL" },
- { 0, NULL }
+ { 0, "INFO_NULL" },
+ { 1, "INFO_LOCAL" },
+ { 0, NULL }
};
@@ -261,7 +261,7 @@ void dcom_interface_dump(void) {
interf = interfaces->data;
g_warning(" Interface(#%4u): iid:%s",
interf->first_packet, guids_resolve_uuid_to_str(&interf->iid));
- g_warning(" ipid:%s", guids_resolve_uuid_to_str(&interf->ipid));
+ g_warning(" ipid:%s", guids_resolve_uuid_to_str(&interf->ipid));
}
}
}
@@ -405,58 +405,58 @@ dcom_interface_t *dcom_interface_new(packet_info *pinfo, const guint8 *ip, e_uui
typedef enum {
- WIRESHARK_VT_EMPTY = 0,
- WIRESHARK_VT_NULL = 1,
- WIRESHARK_VT_I2 = 2,
- WIRESHARK_VT_I4 = 3,
- WIRESHARK_VT_R4 = 4,
- WIRESHARK_VT_R8 = 5,
- WIRESHARK_VT_CY = 6,
- WIRESHARK_VT_DATE = 7,
- WIRESHARK_VT_BSTR = 8,
- WIRESHARK_VT_DISPATCH = 9,
- WIRESHARK_VT_ERROR = 10,
- WIRESHARK_VT_BOOL = 11,
- WIRESHARK_VT_VARIANT = 12,
- WIRESHARK_VT_UNKNOWN = 13,
- WIRESHARK_VT_DECIMAL = 14,
- WIRESHARK_VT_I1 = 16,
- WIRESHARK_VT_UI1 = 17,
- WIRESHARK_VT_UI2 = 18,
- WIRESHARK_VT_UI4 = 19,
- WIRESHARK_VT_I8 = 20,
- WIRESHARK_VT_UI8 = 21,
- WIRESHARK_VT_INT = 22,
- WIRESHARK_VT_UINT = 23,
- WIRESHARK_VT_VOID = 24,
- WIRESHARK_VT_HRESULT = 25,
- WIRESHARK_VT_PTR = 26,
- WIRESHARK_VT_SAFEARRAY = 27,
- WIRESHARK_VT_CARRAY = 28,
+ WIRESHARK_VT_EMPTY = 0,
+ WIRESHARK_VT_NULL = 1,
+ WIRESHARK_VT_I2 = 2,
+ WIRESHARK_VT_I4 = 3,
+ WIRESHARK_VT_R4 = 4,
+ WIRESHARK_VT_R8 = 5,
+ WIRESHARK_VT_CY = 6,
+ WIRESHARK_VT_DATE = 7,
+ WIRESHARK_VT_BSTR = 8,
+ WIRESHARK_VT_DISPATCH = 9,
+ WIRESHARK_VT_ERROR = 10,
+ WIRESHARK_VT_BOOL = 11,
+ WIRESHARK_VT_VARIANT = 12,
+ WIRESHARK_VT_UNKNOWN = 13,
+ WIRESHARK_VT_DECIMAL = 14,
+ WIRESHARK_VT_I1 = 16,
+ WIRESHARK_VT_UI1 = 17,
+ WIRESHARK_VT_UI2 = 18,
+ WIRESHARK_VT_UI4 = 19,
+ WIRESHARK_VT_I8 = 20,
+ WIRESHARK_VT_UI8 = 21,
+ WIRESHARK_VT_INT = 22,
+ WIRESHARK_VT_UINT = 23,
+ WIRESHARK_VT_VOID = 24,
+ WIRESHARK_VT_HRESULT = 25,
+ WIRESHARK_VT_PTR = 26,
+ WIRESHARK_VT_SAFEARRAY = 27,
+ WIRESHARK_VT_CARRAY = 28,
WIRESHARK_VT_USERDEFINED = 29,
- WIRESHARK_VT_LPSTR = 30,
- WIRESHARK_VT_LPWSTR = 31,
- WIRESHARK_VT_RECORD = 36,
- WIRESHARK_VT_FILETIME = 64,
- WIRESHARK_VT_BLOB = 65,
- WIRESHARK_VT_STREAM = 66,
- WIRESHARK_VT_STORAGE = 67,
+ WIRESHARK_VT_LPSTR = 30,
+ WIRESHARK_VT_LPWSTR = 31,
+ WIRESHARK_VT_RECORD = 36,
+ WIRESHARK_VT_FILETIME = 64,
+ WIRESHARK_VT_BLOB = 65,
+ WIRESHARK_VT_STREAM = 66,
+ WIRESHARK_VT_STORAGE = 67,
WIRESHARK_VT_STREAMED_OBJECT = 68,
WIRESHARK_VT_STORED_OBJECT = 69,
WIRESHARK_VT_BLOB_OBJECT = 70,
- WIRESHARK_VT_CF = 71,
- WIRESHARK_VT_CLSID = 72,
+ WIRESHARK_VT_CF = 71,
+ WIRESHARK_VT_CLSID = 72,
- WIRESHARK_VT_BSTR_BLOB = 0x0fff,
+ WIRESHARK_VT_BSTR_BLOB = 0x0fff,
- WIRESHARK_VT_VECTOR = 0x1000,
- WIRESHARK_VT_ARRAY = 0x2000,
- WIRESHARK_VT_BYREF = 0x4000,
- WIRESHARK_VT_RESERVED = 0x8000,
+ WIRESHARK_VT_VECTOR = 0x1000,
+ WIRESHARK_VT_ARRAY = 0x2000,
+ WIRESHARK_VT_BYREF = 0x4000,
+ WIRESHARK_VT_RESERVED = 0x8000,
- WIRESHARK_VT_ILLEGAL = 0xffff,
+ WIRESHARK_VT_ILLEGAL = 0xffff,
WIRESHARK_VT_ILLEGALMASKED = 0x0fff,
- WIRESHARK_VT_TYPEMASK = 0x0fff
+ WIRESHARK_VT_TYPEMASK = 0x0fff
} dcom_vartype_t;
const value_string dcom_variant_type_vals[] = {
@@ -483,25 +483,25 @@ const value_string dcom_variant_type_vals[] = {
{ WIRESHARK_VT_USERDEFINED, "VT_USERDEFINED"},
/* XXX: this could be done better */
- { WIRESHARK_VT_ARRAY | WIRESHARK_VT_I2, "VT_ARRAY|VT_I2"},
- { WIRESHARK_VT_ARRAY | WIRESHARK_VT_I4, "VT_ARRAY|VT_I4"},
+ { WIRESHARK_VT_ARRAY | WIRESHARK_VT_I2, "VT_ARRAY|VT_I2"},
+ { WIRESHARK_VT_ARRAY | WIRESHARK_VT_I4, "VT_ARRAY|VT_I4"},
{ WIRESHARK_VT_ARRAY | WIRESHARK_VT_R4, "VT_ARRAY|VT_R4"},
{ WIRESHARK_VT_ARRAY | WIRESHARK_VT_R8, "VT_ARRAY|VT_R8"},
{ WIRESHARK_VT_ARRAY | WIRESHARK_VT_DATE, "VT_ARRAY|VT_DATE"},
{ WIRESHARK_VT_ARRAY | WIRESHARK_VT_BSTR, "VT_ARRAY|VT_BSTR"},
{ WIRESHARK_VT_ARRAY | WIRESHARK_VT_ERROR, "VT_ARRAY|VT_ERROR"},
{ WIRESHARK_VT_ARRAY | WIRESHARK_VT_BOOL, "VT_ARRAY|VT_BOOL"},
- { WIRESHARK_VT_ARRAY | WIRESHARK_VT_I1, "VT_ARRAY|VT_I1"},
+ { WIRESHARK_VT_ARRAY | WIRESHARK_VT_I1, "VT_ARRAY|VT_I1"},
{ WIRESHARK_VT_ARRAY | WIRESHARK_VT_UI1, "VT_ARRAY|VT_UI1"},
{ WIRESHARK_VT_ARRAY | WIRESHARK_VT_UI2, "VT_ARRAY|VT_UI2"},
{ WIRESHARK_VT_ARRAY | WIRESHARK_VT_UI4, "VT_ARRAY|VT_UI4"},
- { WIRESHARK_VT_ARRAY | WIRESHARK_VT_I8, "VT_ARRAY|VT_I8"},
+ { WIRESHARK_VT_ARRAY | WIRESHARK_VT_I8, "VT_ARRAY|VT_I8"},
{ WIRESHARK_VT_ARRAY | WIRESHARK_VT_UI8, "VT_ARRAY|VT_UI8"},
- { WIRESHARK_VT_BYREF | WIRESHARK_VT_I2, "VT_BYREF|VT_I2"},
+ { WIRESHARK_VT_BYREF | WIRESHARK_VT_I2, "VT_BYREF|VT_I2"},
{ WIRESHARK_VT_BYREF | WIRESHARK_VT_BSTR, "VT_BYREF|VT_BSTR"},
{ WIRESHARK_VT_BYREF | WIRESHARK_VT_VARIANT, "VT_BYREF|VT_VARIANT"},
- { 0, NULL }
+ { 0, NULL }
/* XXX: append more types here */
};
@@ -589,7 +589,7 @@ const value_string dcom_hresult_vals[] = {
{ 0x80080004, "CO_E_BAD_PATH" },
- { 0, NULL }
+ { 0, NULL }
};
static const value_string dcom_objref_flag_vals[] = {
@@ -601,7 +601,7 @@ static const value_string dcom_objref_flag_vals[] = {
static const value_string dcom_objref_signature_vals[] = {
{ 0x574f454d, "MEOW" },
- { 0, NULL }
+ { 0, NULL }
};
/* although flags, they doesn't seem to be used as such */
@@ -616,14 +616,14 @@ static const value_string dcom_stdobjref_flag_vals[] = {
{ 0x0400, "SORF_OXRES7" },
{ 0x0800, "SORF_OXRES8" },
{ 0x1000, "SORF_NOPING" },
- { 0, NULL }
+ { 0, NULL }
};
static const value_string dcom_dcerpc_pointer_vals[] = {
{ 0x72657355, "User" },
{ 0x42535452, "BSTR" },
{ 0x00000000, "NULL" },
- { 0, NULL }
+ { 0, NULL }
};
static const value_string dcom_dualstringarray_authz[] = {
@@ -631,7 +631,7 @@ static const value_string dcom_dualstringarray_authz[] = {
{ 0x0001, "RPC_C_AUTHZ_NAME"},
{ 0x0002, "RPC_C_AUTHZ_DCE"},
{ 0xffff, "Default"},
- { 0, NULL}
+ { 0, NULL}
};
static const value_string dcom_dualstringarray_authn[] = {
@@ -660,13 +660,13 @@ const value_string dcom_protseq_vals[] = {
{ 0x0E, "NCADG_IPX" },
{ 0x12, "NCACN_NB_NB" },
{ 0x1F, "NCACN_HTTP" },
- { 0, NULL }
+ { 0, NULL }
};
static const value_string dcom_vt_bool_vals[] = {
{ 0x0000, "FALSE" },
{ 0xFFFF, "TRUE" },
- { 0, NULL }
+ { 0, NULL }
};
@@ -700,9 +700,9 @@ dissect_dcom_extent(tvbuff_t *tvb, int offset,
}
offset = dissect_dcom_DWORD(tvb, offset, pinfo, tree, drep,
- hf_dcom_extent_array_count, &u32ArrayCount);
+ hf_dcom_extent_array_count, &u32ArrayCount);
offset = dissect_dcom_DWORD(tvb, offset, pinfo, tree, drep,
- hf_dcom_extent_array_res, &u32ArrayRes);
+ hf_dcom_extent_array_res, &u32ArrayRes);
offset = dissect_dcom_dcerpc_pointer(tvb, offset, pinfo, tree, drep, &u32Pointer);
@@ -800,12 +800,12 @@ dissect_dcom_this(tvbuff_t *tvb, int offset,
u32SubStart = offset - 4;
offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_this_flags, &u32Flags);
+ hf_dcom_this_flags, &u32Flags);
offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_this_res, &u32Res);
+ hf_dcom_this_res, &u32Res);
offset = dissect_dcom_UUID(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_this_cid, &uuidCausality);
+ hf_dcom_this_cid, &uuidCausality);
offset = dissect_dcom_extent(tvb, offset, pinfo, sub_tree, drep);
@@ -816,8 +816,8 @@ dissect_dcom_this(tvbuff_t *tvb, int offset,
if(memcmp(&info->call_data->object_uuid, &uuid_null, sizeof(uuid_null)) != 0) {
pi = proto_tree_add_guid_format(tree, hf_dcom_ipid, tvb, offset, 0,
- (e_guid_t *) &info->call_data->object_uuid,
- "Object UUID/IPID: %s", guids_resolve_uuid_to_str(&info->call_data->object_uuid));
+ (e_guid_t *) &info->call_data->object_uuid,
+ "Object UUID/IPID: %s", guids_resolve_uuid_to_str(&info->call_data->object_uuid));
PROTO_ITEM_SET_GENERATED(pi);
}
@@ -851,9 +851,9 @@ dissect_dcom_that(tvbuff_t *tvb, int offset,
proto_item_set_len(sub_item, offset - u32SubStart);
if(memcmp(&info->call_data->object_uuid, &uuid_null, sizeof(uuid_null)) != 0) {
- pi = proto_tree_add_guid_format(tree, hf_dcom_ipid, tvb, offset, 0,
- (e_guid_t *) &info->call_data->object_uuid,
- "Object UUID/IPID: %s", guids_resolve_uuid_to_str(&info->call_data->object_uuid));
+ pi = proto_tree_add_guid_format(tree, hf_dcom_ipid, tvb, offset, 0,
+ (e_guid_t *) &info->call_data->object_uuid,
+ "Object UUID/IPID: %s", guids_resolve_uuid_to_str(&info->call_data->object_uuid));
PROTO_ITEM_SET_GENERATED(pi);
}
@@ -897,7 +897,7 @@ dissect_dcom_simple_resp(tvbuff_t *tvb, int offset,
/* dissect a dcerpc array size */
int
dissect_dcom_dcerpc_array_size(tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep, guint32 *pu32ArraySize)
+ proto_tree *tree, guint8 *drep, guint32 *pu32ArraySize)
{
@@ -917,7 +917,7 @@ dissect_dcom_dcerpc_array_size(tvbuff_t *tvb, gint offset, packet_info *pinfo,
/* dissect a dcerpc pointer value */
int
dissect_dcom_dcerpc_pointer(tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep, guint32 *pu32Pointer)
+ proto_tree *tree, guint8 *drep, guint32 *pu32Pointer)
{
/* en-/disable this by preference setting */
@@ -943,7 +943,7 @@ dissect_dcom_tobedone_data(tvbuff_t *tvb, int offset,
item = proto_tree_add_item(tree, hf_dcom_tobedone, tvb, offset, length, ENC_NA);
- PROTO_ITEM_SET_GENERATED(item);
+ PROTO_ITEM_SET_GENERATED(item);
expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, "Dissection incomplete");
offset += length;
@@ -962,7 +962,7 @@ dissect_dcom_nospec_data(tvbuff_t *tvb, int offset,
item = proto_tree_add_item(tree, hf_dcom_nospec, tvb, offset, length, ENC_NA);
- PROTO_ITEM_SET_GENERATED(item);
+ PROTO_ITEM_SET_GENERATED(item);
expert_add_info_format(pinfo, item, PI_UNDECODED, PI_NOTE, "No specification available, dissection not possible");
offset += length;
@@ -1041,7 +1041,7 @@ dissect_dcom_HRESULT_item(tvbuff_t *tvb, int offset, packet_info *pinfo,
/* dissect the DWORD, but don't add to tree */
offset = dissect_dcom_DWORD(tvb, offset, pinfo, NULL /*tree*/, drep,
- field_index, &u32HResult);
+ field_index, &u32HResult);
if (tree) {
/* special formatted output of indexed value */
@@ -1066,7 +1066,7 @@ dissect_dcom_HRESULT(tvbuff_t *tvb, int offset, packet_info *pinfo,
/* dissect the DWORD, but don't add to tree */
offset = dissect_dcom_DWORD(tvb, offset, pinfo, NULL /*tree*/, drep,
- hf_dcom_hresult, &u32HResult);
+ hf_dcom_hresult, &u32HResult);
if (tree) {
/* special formatted output of indexed value */
@@ -1098,7 +1098,7 @@ dissect_dcom_indexed_HRESULT(tvbuff_t *tvb, int offset, packet_info *pinfo,
/* dissect the DWORD, but don't add to tree */
offset = dissect_dcom_DWORD(tvb, offset, pinfo, NULL /*tree*/, drep,
- hf_dcom_hresult, &u32HResult);
+ hf_dcom_hresult, &u32HResult);
if (tree) {
/* special formatted output of indexed value */
@@ -1128,9 +1128,9 @@ dissect_dcom_COMVERSION(tvbuff_t *tvb, int offset, packet_info *pinfo,
{
offset = dissect_dcom_WORD(tvb, offset, pinfo, tree, drep,
- hf_dcom_version_major, pu16VersionMajor);
+ hf_dcom_version_major, pu16VersionMajor);
offset = dissect_dcom_WORD(tvb, offset, pinfo, tree, drep,
- hf_dcom_version_minor, pu16VersionMinor);
+ hf_dcom_version_minor, pu16VersionMinor);
return offset;
}
@@ -1154,7 +1154,7 @@ dissect_dcom_SAFEARRAY(tvbuff_t *tvb, int offset, packet_info *pinfo,
guint32 u32VariableOffset;
guint32 u32Data;
guint16 u16Data;
- guint8 u8Data;
+ guint8 u8Data;
guint16 u16Locks;
guint16 u16VarType;
proto_item *sub_item;
@@ -1176,13 +1176,13 @@ dissect_dcom_SAFEARRAY(tvbuff_t *tvb, int offset, packet_info *pinfo,
offset = dissect_dcom_dcerpc_pointer(tvb, offset, pinfo, sub_tree, drep, &u32Pointer);
offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_sa_dims32, &u32Dims);
+ hf_dcom_sa_dims32, &u32Dims);
offset = dissect_dcom_WORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_sa_dims16, &u16Dims);
+ hf_dcom_sa_dims16, &u16Dims);
/* feature flags */
u32TmpOffset = dissect_dcom_WORD(tvb, offset, pinfo, NULL, drep,
- hf_dcom_sa_features, &u16Features);
+ hf_dcom_sa_features, &u16Features);
feature_item = proto_tree_add_uint (sub_tree, hf_dcom_sa_features, tvb, offset, 2, u16Features);
feature_tree = proto_item_add_subtree (feature_item, ett_dcom_sa_features);
if (feature_tree) {
@@ -1201,15 +1201,15 @@ dissect_dcom_SAFEARRAY(tvbuff_t *tvb, int offset, packet_info *pinfo,
offset = u32TmpOffset;
offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_sa_element_size, &u32ElementSize);
+ hf_dcom_sa_element_size, &u32ElementSize);
offset = dissect_dcom_WORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_sa_locks, &u16Locks);
+ hf_dcom_sa_locks, &u16Locks);
offset = dissect_dcom_WORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_sa_vartype16, &u16VarType);
+ hf_dcom_sa_vartype16, &u16VarType);
offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_sa_vartype32, &u32VarType);
+ hf_dcom_sa_vartype32, &u32VarType);
offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_sa_elements, &u32Elements);
+ hf_dcom_sa_elements, &u32Elements);
offset = dissect_dcom_dcerpc_pointer(tvb, offset, pinfo, sub_tree, drep, &u32Pointer);
u32BoundElements = 0;
@@ -1225,9 +1225,9 @@ dissect_dcom_SAFEARRAY(tvbuff_t *tvb, int offset, packet_info *pinfo,
tvb_ensure_bytes_exist(tvb, offset, u32ArraySize * u32ElementSize);
u32VariableOffset = offset + u32ArraySize * u32ElementSize;
- if(sacb) {
+ if(sacb) {
sacb(tvb, offset, pinfo, tree, drep, u32VarType, u32ArraySize);
- }
+ }
while(u32ArraySize--) {
switch(u32VarType) {
@@ -1292,7 +1292,7 @@ dissect_dcom_VARTYPE(tvbuff_t *tvb, int offset, packet_info *pinfo,
{
offset = dissect_dcom_WORD(tvb, offset, pinfo, tree, drep,
- hf_dcom_variant_type, pu16VarType);
+ hf_dcom_variant_type, pu16VarType);
return offset;
}
@@ -1311,12 +1311,12 @@ dissect_dcom_VARIANT(tvbuff_t *tvb, int offset, packet_info *pinfo,
guint16 u16VarType;
guint32 u32VarType;
- guint8 u8Data;
+ guint8 u8Data;
guint16 u16Data;
guint32 u32Data;
gchar cData[500];
guint32 u32Pointer;
- gfloat f32Data;
+ gfloat f32Data;
gdouble f64Data;
@@ -1336,21 +1336,21 @@ dissect_dcom_VARIANT(tvbuff_t *tvb, int offset, packet_info *pinfo,
* it starts just after the variant-data (without padding)!!! */
/* Conclusion: the size given here can be LONGER than the actual size */
offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_variant_size, &u32Size);
+ hf_dcom_variant_size, &u32Size);
offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_variant_rpc_res, &u32RPCRes);
+ hf_dcom_variant_rpc_res, &u32RPCRes);
offset = dissect_dcom_VARTYPE(tvb, offset, pinfo, sub_tree, drep,
&u16VarType);
offset = dissect_dcom_WORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_variant_wres, &u16Res);
+ hf_dcom_variant_wres, &u16Res);
offset = dissect_dcom_WORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_variant_wres, &u16Res);
+ hf_dcom_variant_wres, &u16Res);
offset = dissect_dcom_WORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_variant_wres, &u16Res);
+ hf_dcom_variant_wres, &u16Res);
/* 32 bit VarType (slightly different to the 16 bit one) */
offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_variant_type32, &u32VarType);
+ hf_dcom_variant_type32, &u32VarType);
if (u32VarType & WIRESHARK_VT_BYREF) {
u32VarType &=~WIRESHARK_VT_BYREF;
@@ -1467,22 +1467,22 @@ dissect_dcom_UUID(tvbuff_t *tvb, int offset,
uuid_name = guids_get_uuid_name(&uuid);
if(uuid_name) {
proto_tree_add_guid_format(tree, hfindex, tvb, offset-16, 16, (e_guid_t *) &uuid,
- "%s: %s (%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x)",
- hfi->name, uuid_name,
- uuid.Data1, uuid.Data2, uuid.Data3,
- uuid.Data4[0], uuid.Data4[1],
- uuid.Data4[2], uuid.Data4[3],
- uuid.Data4[4], uuid.Data4[5],
- uuid.Data4[6], uuid.Data4[7]);
+ "%s: %s (%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x)",
+ hfi->name, uuid_name,
+ uuid.Data1, uuid.Data2, uuid.Data3,
+ uuid.Data4[0], uuid.Data4[1],
+ uuid.Data4[2], uuid.Data4[3],
+ uuid.Data4[4], uuid.Data4[5],
+ uuid.Data4[6], uuid.Data4[7]);
} else {
proto_tree_add_guid_format(tree, hfindex, tvb, offset-16, 16, (e_guid_t *) &uuid,
- "%s: %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
- hfi->name,
- uuid.Data1, uuid.Data2, uuid.Data3,
- uuid.Data4[0], uuid.Data4[1],
- uuid.Data4[2], uuid.Data4[3],
- uuid.Data4[4], uuid.Data4[5],
- uuid.Data4[6], uuid.Data4[7]);
+ "%s: %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
+ hfi->name,
+ uuid.Data1, uuid.Data2, uuid.Data3,
+ uuid.Data4[0], uuid.Data4[1],
+ uuid.Data4[2], uuid.Data4[3],
+ uuid.Data4[4], uuid.Data4[5],
+ uuid.Data4[6], uuid.Data4[7]);
}
if(pdata != NULL) {
@@ -1527,11 +1527,11 @@ dissect_dcom_append_UUID(tvbuff_t *tvb, int offset,
}
proto_item_append_text(pi, "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
- uuid->Data1, uuid->Data2, uuid->Data3,
- uuid->Data4[0], uuid->Data4[1],
- uuid->Data4[2], uuid->Data4[3],
- uuid->Data4[4], uuid->Data4[5],
- uuid->Data4[6], uuid->Data4[7]);
+ uuid->Data1, uuid->Data2, uuid->Data3,
+ uuid->Data4[0], uuid->Data4[1],
+ uuid->Data4[2], uuid->Data4[3],
+ uuid->Data4[4], uuid->Data4[5],
+ uuid->Data4[6], uuid->Data4[7]);
if(uuid_name) {
proto_item_append_text(pi, ")");
@@ -1560,8 +1560,8 @@ dcom_tvb_get_nwstringz0(tvbuff_t *tvb, gint offset, guint32 inLength, gchar *psz
guint32 u32IdxA;
guint32 u32IdxW;
- guint8 u8Tmp1;
- guint8 u8Tmp2;
+ guint8 u8Tmp1;
+ guint8 u8Tmp2;
*isPrintable = TRUE;
@@ -1622,7 +1622,7 @@ dcom_tvb_get_nwstringz0(tvbuff_t *tvb, gint offset, guint32 inLength, gchar *psz
/* u32MaxStr is maximum length of string (including trailing zero) */
int
dissect_dcom_indexed_LPWSTR(tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep, int hfindex,
+ proto_tree *tree, guint8 *drep, int hfindex,
gchar *pszStr, guint32 u32MaxStr, int field_index)
{
guint32 u32MaxCount;
@@ -1646,11 +1646,11 @@ dissect_dcom_indexed_LPWSTR(tvbuff_t *tvb, gint offset, packet_info *pinfo,
u32SubStart = offset;
offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_max_count, &u32MaxCount);
+ hf_dcom_max_count, &u32MaxCount);
offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_offset, &u32Offset);
+ hf_dcom_offset, &u32Offset);
offset = dissect_dcom_dcerpc_array_size(tvb, offset, pinfo, sub_tree, drep,
- &u32ArraySize);
+ &u32ArraySize);
u32StrStart = offset;
offset = dcom_tvb_get_nwstringz0(tvb, offset, u32ArraySize*2, pszStr, u32MaxStr, &isPrintable);
@@ -1675,7 +1675,7 @@ dissect_dcom_indexed_LPWSTR(tvbuff_t *tvb, gint offset, packet_info *pinfo,
int
dissect_dcom_LPWSTR(tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep, int hfindex,
+ proto_tree *tree, guint8 *drep, int hfindex,
gchar *pszStr, guint32 u32MaxStr)
{
@@ -1690,7 +1690,7 @@ dissect_dcom_LPWSTR(tvbuff_t *tvb, gint offset, packet_info *pinfo,
/* (Hint: the BSTR space is always as long as the maximum size) */
int
dissect_dcom_BSTR(tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep, int hfindex,
+ proto_tree *tree, guint8 *drep, int hfindex,
gchar *pszStr, guint32 u32MaxStr)
{
guint32 u32MaxCount;
@@ -1708,17 +1708,17 @@ dissect_dcom_BSTR(tvbuff_t *tvb, gint offset, packet_info *pinfo,
offset += 4 - (offset % 4);
}
- /* add subtree item */
+ /* add subtree item */
sub_item = proto_tree_add_string(tree, hfindex, tvb, offset, 0, "");
sub_tree = proto_item_add_subtree(sub_item, ett_dcom_lpwstr);
u32SubStart = offset;
offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_max_count, &u32MaxCount);
+ hf_dcom_max_count, &u32MaxCount);
offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_byte_length, &u32ByteLength);
+ hf_dcom_byte_length, &u32ByteLength);
offset = dissect_dcom_dcerpc_array_size(tvb, offset, pinfo, sub_tree, drep,
- &u32ArraySize);
+ &u32ArraySize);
u32RealOffset = offset + u32ArraySize*2;
@@ -1729,7 +1729,7 @@ dissect_dcom_BSTR(tvbuff_t *tvb, gint offset, packet_info *pinfo,
/* update subtree header */
proto_item_append_text(sub_item, "%s%s%s",
- isPrintable ? "\"" : "", pszStr, isPrintable ? "\"" : "");
+ isPrintable ? "\"" : "", pszStr, isPrintable ? "\"" : "");
if ((int) (u32RealOffset - u32SubStart) <= 0)
THROW(ReportedBoundsError);
proto_item_set_len(sub_item, u32RealOffset - u32SubStart);
@@ -1741,11 +1741,11 @@ dissect_dcom_BSTR(tvbuff_t *tvb, gint offset, packet_info *pinfo,
/* dissect an DUALSTRINGARRAY */
int
dissect_dcom_DUALSTRINGARRAY(tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep, int hfindex, gchar *ip)
+ proto_tree *tree, guint8 *drep, int hfindex, gchar *ip)
{
guint16 u16NumEntries;
guint16 u16SecurityOffset;
- gchar szStr[1000];
+ gchar szStr[1000];
guint32 u32MaxStr = sizeof(szStr);
guint32 u32Start;
guint16 u16TowerId;
@@ -1771,11 +1771,11 @@ dissect_dcom_DUALSTRINGARRAY(tvbuff_t *tvb, gint offset, packet_info *pinfo,
sub_tree = proto_item_add_subtree(sub_item, ett_dcom_dualstringarray);
offset = dissect_dcom_WORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_dualstringarray_num_entries, &u16NumEntries);
+ hf_dcom_dualstringarray_num_entries, &u16NumEntries);
/* from here, alignment is ok */
u32SubStart = offset - 2;
offset = dissect_dcom_WORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_dualstringarray_security_offset, &u16SecurityOffset);
+ hf_dcom_dualstringarray_security_offset, &u16SecurityOffset);
/* STRINGBINDINGs until first wchar zero */
while ( tvb_get_ntohs(tvb, offset) ) {
@@ -1788,13 +1788,13 @@ dissect_dcom_DUALSTRINGARRAY(tvbuff_t *tvb, gint offset, packet_info *pinfo,
offset = dissect_dcom_WORD(tvb, offset, pinfo, subsub_tree, drep,
hf_dcom_dualstringarray_string_tower_id, &u16TowerId);
u32Start = offset;
- /* we don't know the (zero terminated) input length, use the buffer length instead */
+ /* we don't know the (zero terminated) input length, use the buffer length instead */
offset = dcom_tvb_get_nwstringz0(tvb, offset, u32MaxStr, szStr, u32MaxStr, &isPrintable);
pi = proto_tree_add_string(subsub_tree, hf_dcom_dualstringarray_string_network_addr,
tvb, u32Start, offset - u32Start, szStr);
- /* convert ip address (if it is dotted decimal) */
- /* XXX - this conversion is ugly */
+ /* convert ip address (if it is dotted decimal) */
+ /* XXX - this conversion is ugly */
if (inet_aton(szStr, &ipaddr)) {
if(get_host_ipaddr(szStr, &curr_ip)) {
@@ -1833,14 +1833,14 @@ dissect_dcom_DUALSTRINGARRAY(tvbuff_t *tvb, gint offset, packet_info *pinfo,
u32SubSubStart = offset;
offset = dissect_dcom_WORD(tvb, offset, pinfo, subsub_tree, drep,
- hf_dcom_dualstringarray_security_authn_svc,
+ hf_dcom_dualstringarray_security_authn_svc,
&u16SecurityAuthnSvc);
offset = dissect_dcom_WORD(tvb, offset, pinfo, subsub_tree, drep,
- hf_dcom_dualstringarray_security_authz_svc,
+ hf_dcom_dualstringarray_security_authz_svc,
&u16SecurityAuthzSvc);
u32Start = offset;
- /* we don't know the (zero terminated) input length, use the buffer length instead */
+ /* we don't know the (zero terminated) input length, use the buffer length instead */
offset = dcom_tvb_get_nwstringz0(tvb, offset, u32MaxStr, szStr, u32MaxStr, &isPrintable);
proto_tree_add_string(subsub_tree, hf_dcom_dualstringarray_security_princ_name,
tvb, u32Start, offset - u32Start, szStr);
@@ -1863,8 +1863,8 @@ dissect_dcom_DUALSTRINGARRAY(tvbuff_t *tvb, gint offset, packet_info *pinfo,
/* dissect an STDOBJREF */
int
dissect_dcom_STDOBJREF(tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep, int hfindex _U_,
- guint64 *oxid, guint64 *oid, e_uuid_t *ipid)
+ proto_tree *tree, guint8 *drep, int hfindex _U_,
+ guint64 *oxid, guint64 *oid, e_uuid_t *ipid)
{
guint32 u32Flags;
guint32 u32PublicRefs;
@@ -1878,17 +1878,17 @@ dissect_dcom_STDOBJREF(tvbuff_t *tvb, gint offset, packet_info *pinfo,
sub_tree = proto_item_add_subtree(sub_item, ett_dcom_stdobjref);
offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_stdobjref_flags, &u32Flags);
+ hf_dcom_stdobjref_flags, &u32Flags);
/* from here, alignment is ok */
u32SubStart = offset - 4;
offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_stdobjref_public_refs, &u32PublicRefs);
+ hf_dcom_stdobjref_public_refs, &u32PublicRefs);
offset = dissect_dcom_ID(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_oxid, oxid);
+ hf_dcom_oxid, oxid);
offset = dissect_dcom_ID(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_oid, oid);
+ hf_dcom_oid, oid);
offset = dissect_dcom_UUID(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_ipid, ipid);
+ hf_dcom_ipid, ipid);
/* append info to subtree header */
proto_item_append_text(sub_item, ": PublicRefs=%u IPID=%s",
@@ -1902,7 +1902,7 @@ dissect_dcom_STDOBJREF(tvbuff_t *tvb, gint offset, packet_info *pinfo,
/* dissect an OBJREF */
int
dissect_dcom_OBJREF(tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep, int hfindex, dcom_interface_t **interf)
+ proto_tree *tree, guint8 *drep, int hfindex, dcom_interface_t **interf)
{
guint32 u32Signature;
guint32 u32Flags;
@@ -1919,19 +1919,20 @@ dissect_dcom_OBJREF(tvbuff_t *tvb, gint offset, packet_info *pinfo,
dcom_interface_t *dcom_if = NULL;
gchar ip[4];
+ memset(&ipid, 0, sizeof(ipid));
/* add subtree header */
sub_item = proto_tree_add_item(tree, hf_dcom_objref, tvb, offset, 0, ENC_NA);
sub_tree = proto_item_add_subtree(sub_item, ett_dcom_objref);
offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_objref_signature, &u32Signature);
+ hf_dcom_objref_signature, &u32Signature);
/* from here, alignment is ok */
u32SubStart = offset - 4;
offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_objref_flags, &u32Flags);
+ hf_dcom_objref_flags, &u32Flags);
offset = dissect_dcom_UUID(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_iid, &iid);
+ hf_dcom_iid, &iid);
switch(u32Flags) {
case(0x1): /* standard */
@@ -1951,9 +1952,9 @@ dissect_dcom_OBJREF(tvbuff_t *tvb, gint offset, packet_info *pinfo,
case(0x4): /* custom */
offset = dissect_dcom_UUID(tvb, offset, pinfo, sub_tree, drep,
hf_dcom_clsid, &clsid);
- offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep,
+ offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep,
hf_dcom_objref_cbextension, &u32CBExtension);
- offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep,
+ offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep,
hf_dcom_objref_size, &u32Size);
/* the following data depends on the CLSID, no docs available on this */
offset = dissect_dcom_nospec_data(tvb, offset, pinfo, sub_tree, drep, u32Size);
@@ -1984,7 +1985,7 @@ dissect_dcom_OBJREF(tvbuff_t *tvb, gint offset, packet_info *pinfo,
/* dissect an MInterfacePointer */
int
dissect_dcom_MInterfacePointer(tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep, int hfindex, dcom_interface_t **interf)
+ proto_tree *tree, guint8 *drep, int hfindex, dcom_interface_t **interf)
{
guint32 u32CntData;
guint32 u32ArraySize;
@@ -2002,7 +2003,7 @@ dissect_dcom_MInterfacePointer(tvbuff_t *tvb, gint offset, packet_info *pinfo,
sub_tree = proto_item_add_subtree(sub_item, ett_dcom_interface_pointer);
offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep,
- hf_dcom_ip_cnt_data, &u32CntData);
+ hf_dcom_ip_cnt_data, &u32CntData);
u32SubStart = offset - 4;
offset = dissect_dcom_dcerpc_array_size(tvb, offset, pinfo, sub_tree, drep, &u32ArraySize);
@@ -2019,7 +2020,7 @@ dissect_dcom_MInterfacePointer(tvbuff_t *tvb, gint offset, packet_info *pinfo,
/* dissect a pointer to a MInterfacePointer */
int
dissect_dcom_PMInterfacePointer(tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree, guint8 *drep, int hfindex, dcom_interface_t **interf)
+ proto_tree *tree, guint8 *drep, int hfindex, dcom_interface_t **interf)
{
guint32 u32Pointer;
@@ -2097,8 +2098,8 @@ proto_register_dcom (void)
{ "Flags", "dcom.this.flags", FT_UINT32, BASE_HEX, VALS(dcom_thisthat_flag_vals), 0x0, NULL, HFILL }},
{ &hf_dcom_this_res,
{ "Reserved", "dcom.this.res", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
- { &hf_dcom_this_cid,
- { "Causality ID", "dcom.this.uuid", FT_GUID, BASE_NONE, NULL, 0x0, NULL, HFILL }}
+ { &hf_dcom_this_cid,
+ { "Causality ID", "dcom.this.uuid", FT_GUID, BASE_NONE, NULL, 0x0, NULL, HFILL }}
};
static hf_register_info hf_dcom_that_array[] = {
diff --git a/epan/dissectors/packet-dec-bpdu.c b/epan/dissectors/packet-dec-bpdu.c
index 1581b8c753..00f6931275 100644
--- a/epan/dissectors/packet-dec-bpdu.c
+++ b/epan/dissectors/packet-dec-bpdu.c
@@ -38,7 +38,7 @@
#define BPDU_DEC_CODE 0
#define BPDU_TYPE 1
-#define BPDU_VERSION 2
+#define BPDU_VERSION 2
#define BPDU_FLAGS 3
#define BPDU_ROOT_PRI 4
#define BPDU_ROOT_MAC 6
@@ -51,13 +51,13 @@
#define BPDU_MAX_AGE 25
#define BPDU_FORWARD_DELAY 26
-#define DEC_BPDU_SIZE 27
+#define DEC_BPDU_SIZE 27
/* Flag bits */
-#define BPDU_FLAGS_SHORT_TIMERS 0x80
-#define BPDU_FLAGS_TCACK 0x02
-#define BPDU_FLAGS_TC 0x01
+#define BPDU_FLAGS_SHORT_TIMERS 0x80
+#define BPDU_FLAGS_TCACK 0x02
+#define BPDU_FLAGS_TC 0x01
static int proto_dec_bpdu = -1;
static int hf_dec_bpdu_proto_id = -1;
@@ -82,203 +82,203 @@ static gint ett_dec_bpdu = -1;
static gint ett_dec_bpdu_flags = -1;
static const value_string protocol_id_vals[] = {
- { 0xe1, "DEC Spanning Tree Protocol" },
- { 0, NULL }
+ { 0xe1, "DEC Spanning Tree Protocol" },
+ { 0, NULL }
};
-#define BPDU_TYPE_TOPOLOGY_CHANGE 2
-#define BPDU_TYPE_HELLO 25
+#define BPDU_TYPE_TOPOLOGY_CHANGE 2
+#define BPDU_TYPE_HELLO 25
static const value_string bpdu_type_vals[] = {
- { BPDU_TYPE_TOPOLOGY_CHANGE, "Topology Change Notification" },
- { BPDU_TYPE_HELLO, "Hello Packet" },
- { 0, NULL }
+ { BPDU_TYPE_TOPOLOGY_CHANGE, "Topology Change Notification" },
+ { BPDU_TYPE_HELLO, "Hello Packet" },
+ { 0, NULL }
};
static const char initial_sep[] = " (";
static const char cont_sep[] = ", ";
-#define APPEND_BOOLEAN_FLAG(flag, item, string) \
- if(flag){ \
- if(item) \
- proto_item_append_text(item, string, sep); \
- sep = cont_sep; \
- }
+#define APPEND_BOOLEAN_FLAG(flag, item, string) \
+ if(flag){ \
+ if(item) \
+ proto_item_append_text(item, string, sep); \
+ sep = cont_sep; \
+ }
static void
dissect_dec_bpdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- guint8 bpdu_type;
- guint8 flags;
- proto_tree *bpdu_tree;
- proto_tree *flags_tree;
- proto_item *ti;
- const char *sep;
+ guint8 bpdu_type;
+ guint8 flags;
+ proto_tree *bpdu_tree;
+ proto_tree *flags_tree;
+ proto_item *ti;
+ const char *sep;
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "DEC_STP");
- col_clear(pinfo->cinfo, COL_INFO);
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "DEC_STP");
+ col_clear(pinfo->cinfo, COL_INFO);
- bpdu_type = tvb_get_guint8(tvb, BPDU_TYPE);
+ bpdu_type = tvb_get_guint8(tvb, BPDU_TYPE);
- col_add_str(pinfo->cinfo, COL_INFO,
- val_to_str(bpdu_type, bpdu_type_vals,
- "Unknown BPDU type (%u)"));
+ col_add_str(pinfo->cinfo, COL_INFO,
+ val_to_str(bpdu_type, bpdu_type_vals,
+ "Unknown BPDU type (%u)"));
- set_actual_length(tvb, DEC_BPDU_SIZE);
+ set_actual_length(tvb, DEC_BPDU_SIZE);
- if (tree) {
- ti = proto_tree_add_item(tree, proto_dec_bpdu, tvb, 0, DEC_BPDU_SIZE,
- ENC_NA);
- bpdu_tree = proto_item_add_subtree(ti, ett_dec_bpdu);
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_dec_bpdu, tvb, 0, DEC_BPDU_SIZE,
+ ENC_NA);
+ bpdu_tree = proto_item_add_subtree(ti, ett_dec_bpdu);
- proto_tree_add_item(bpdu_tree, hf_dec_bpdu_proto_id, tvb,
- BPDU_DEC_CODE, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(bpdu_tree, hf_dec_bpdu_proto_id, tvb,
+ BPDU_DEC_CODE, 1, ENC_BIG_ENDIAN);
- proto_tree_add_uint(bpdu_tree, hf_dec_bpdu_type, tvb,
- BPDU_TYPE, 1, bpdu_type);
+ proto_tree_add_uint(bpdu_tree, hf_dec_bpdu_type, tvb,
+ BPDU_TYPE, 1, bpdu_type);
- proto_tree_add_item(bpdu_tree, hf_dec_bpdu_version_id, tvb,
- BPDU_VERSION, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(bpdu_tree, hf_dec_bpdu_version_id, tvb,
+ BPDU_VERSION, 1, ENC_BIG_ENDIAN);
- flags = tvb_get_guint8(tvb, BPDU_FLAGS);
- ti = proto_tree_add_uint(bpdu_tree, hf_dec_bpdu_flags, tvb,
- BPDU_FLAGS, 1, flags);
- flags_tree = proto_item_add_subtree(ti, ett_dec_bpdu_flags);
- sep = initial_sep;
- APPEND_BOOLEAN_FLAG(flags & BPDU_FLAGS_SHORT_TIMERS, ti,
- "%sUse short timers");
- proto_tree_add_boolean(flags_tree, hf_dec_bpdu_flags_short_timers, tvb,
- BPDU_FLAGS, 1, flags);
- APPEND_BOOLEAN_FLAG(flags & BPDU_FLAGS_TCACK, ti,
- "%sTopology Change Acknowledgment");
- proto_tree_add_boolean(flags_tree, hf_dec_bpdu_flags_tcack, tvb,
- BPDU_FLAGS, 1, flags);
- APPEND_BOOLEAN_FLAG(flags & BPDU_FLAGS_TC, ti,
- "%sTopology Change");
- proto_tree_add_boolean(flags_tree, hf_dec_bpdu_flags_tc, tvb,
- BPDU_FLAGS, 1, flags);
- if (sep != initial_sep) {
- /* We put something in; put in the terminating ")" */
- proto_item_append_text(ti, ")");
- }
+ flags = tvb_get_guint8(tvb, BPDU_FLAGS);
+ ti = proto_tree_add_uint(bpdu_tree, hf_dec_bpdu_flags, tvb,
+ BPDU_FLAGS, 1, flags);
+ flags_tree = proto_item_add_subtree(ti, ett_dec_bpdu_flags);
+ sep = initial_sep;
+ APPEND_BOOLEAN_FLAG(flags & BPDU_FLAGS_SHORT_TIMERS, ti,
+ "%sUse short timers");
+ proto_tree_add_boolean(flags_tree, hf_dec_bpdu_flags_short_timers, tvb,
+ BPDU_FLAGS, 1, flags);
+ APPEND_BOOLEAN_FLAG(flags & BPDU_FLAGS_TCACK, ti,
+ "%sTopology Change Acknowledgment");
+ proto_tree_add_boolean(flags_tree, hf_dec_bpdu_flags_tcack, tvb,
+ BPDU_FLAGS, 1, flags);
+ APPEND_BOOLEAN_FLAG(flags & BPDU_FLAGS_TC, ti,
+ "%sTopology Change");
+ proto_tree_add_boolean(flags_tree, hf_dec_bpdu_flags_tc, tvb,
+ BPDU_FLAGS, 1, flags);
+ if (sep != initial_sep) {
+ /* We put something in; put in the terminating ")" */
+ proto_item_append_text(ti, ")");
+ }
- proto_tree_add_item(bpdu_tree, hf_dec_bpdu_root_pri, tvb,
- BPDU_ROOT_PRI, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(bpdu_tree, hf_dec_bpdu_root_mac, tvb,
- BPDU_ROOT_MAC, 6, ENC_NA);
- proto_tree_add_item(bpdu_tree, hf_dec_bpdu_root_cost, tvb,
- BPDU_ROOT_PATH_COST, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(bpdu_tree, hf_dec_bpdu_bridge_pri, tvb,
- BPDU_BRIDGE_PRI, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(bpdu_tree, hf_dec_bpdu_bridge_mac, tvb,
- BPDU_BRIDGE_MAC, 6, ENC_NA);
- proto_tree_add_item(bpdu_tree, hf_dec_bpdu_port_id, tvb,
- BPDU_PORT_IDENTIFIER, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(bpdu_tree, hf_dec_bpdu_msg_age, tvb,
- BPDU_MESSAGE_AGE, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(bpdu_tree, hf_dec_bpdu_hello_time, tvb,
- BPDU_HELLO_TIME, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(bpdu_tree, hf_dec_bpdu_max_age, tvb,
- BPDU_MAX_AGE, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(bpdu_tree, hf_dec_bpdu_forward_delay, tvb,
- BPDU_FORWARD_DELAY, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(bpdu_tree, hf_dec_bpdu_root_pri, tvb,
+ BPDU_ROOT_PRI, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(bpdu_tree, hf_dec_bpdu_root_mac, tvb,
+ BPDU_ROOT_MAC, 6, ENC_NA);
+ proto_tree_add_item(bpdu_tree, hf_dec_bpdu_root_cost, tvb,
+ BPDU_ROOT_PATH_COST, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(bpdu_tree, hf_dec_bpdu_bridge_pri, tvb,
+ BPDU_BRIDGE_PRI, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(bpdu_tree, hf_dec_bpdu_bridge_mac, tvb,
+ BPDU_BRIDGE_MAC, 6, ENC_NA);
+ proto_tree_add_item(bpdu_tree, hf_dec_bpdu_port_id, tvb,
+ BPDU_PORT_IDENTIFIER, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(bpdu_tree, hf_dec_bpdu_msg_age, tvb,
+ BPDU_MESSAGE_AGE, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(bpdu_tree, hf_dec_bpdu_hello_time, tvb,
+ BPDU_HELLO_TIME, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(bpdu_tree, hf_dec_bpdu_max_age, tvb,
+ BPDU_MAX_AGE, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(bpdu_tree, hf_dec_bpdu_forward_delay, tvb,
+ BPDU_FORWARD_DELAY, 1, ENC_BIG_ENDIAN);
- }
+ }
}
void
proto_register_dec_bpdu(void)
{
- static hf_register_info hf[] = {
- { &hf_dec_bpdu_proto_id,
- { "Protocol Identifier", "dec_stp.protocol",
- FT_UINT8, BASE_HEX, VALS(protocol_id_vals), 0x0,
- NULL, HFILL }},
- { &hf_dec_bpdu_type,
- { "BPDU Type", "dec_stp.type",
- FT_UINT8, BASE_DEC, VALS(bpdu_type_vals), 0x0,
- NULL, HFILL }},
- { &hf_dec_bpdu_version_id,
- { "BPDU Version", "dec_stp.version",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dec_bpdu_flags,
- { "BPDU flags", "dec_stp.flags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dec_bpdu_flags_short_timers,
- { "Use short timers", "dec_stp.flags.short_timers",
- FT_BOOLEAN, 8, TFS(&tfs_yes_no), BPDU_FLAGS_SHORT_TIMERS,
- NULL, HFILL }},
- { &hf_dec_bpdu_flags_tcack,
- { "Topology Change Acknowledgment", "dec_stp.flags.tcack",
- FT_BOOLEAN, 8, TFS(&tfs_yes_no), BPDU_FLAGS_TCACK,
- NULL, HFILL }},
- { &hf_dec_bpdu_flags_tc,
- { "Topology Change", "dec_stp.flags.tc",
- FT_BOOLEAN, 8, TFS(&tfs_yes_no), BPDU_FLAGS_TC,
- NULL, HFILL }},
- { &hf_dec_bpdu_root_pri,
- { "Root Priority", "dec_stp.root.pri",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dec_bpdu_root_mac,
- { "Root MAC", "dec_stp.root.mac",
- FT_ETHER, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dec_bpdu_root_cost,
- { "Root Path Cost", "dec_stp.root.cost",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dec_bpdu_bridge_pri,
- { "Bridge Priority", "dec_stp.bridge.pri",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dec_bpdu_bridge_mac,
- { "Bridge MAC", "dec_stp.bridge.mac",
- FT_ETHER, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dec_bpdu_port_id,
- { "Port identifier", "dec_stp.port",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dec_bpdu_msg_age,
- { "Message Age", "dec_stp.msg_age",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dec_bpdu_hello_time,
- { "Hello Time", "dec_stp.hello",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dec_bpdu_max_age,
- { "Max Age", "dec_stp.max_age",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dec_bpdu_forward_delay,
- { "Forward Delay", "dec_stp.forward",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
- };
- static gint *ett[] = {
- &ett_dec_bpdu,
- &ett_dec_bpdu_flags,
- };
+ static hf_register_info hf[] = {
+ { &hf_dec_bpdu_proto_id,
+ { "Protocol Identifier", "dec_stp.protocol",
+ FT_UINT8, BASE_HEX, VALS(protocol_id_vals), 0x0,
+ NULL, HFILL }},
+ { &hf_dec_bpdu_type,
+ { "BPDU Type", "dec_stp.type",
+ FT_UINT8, BASE_DEC, VALS(bpdu_type_vals), 0x0,
+ NULL, HFILL }},
+ { &hf_dec_bpdu_version_id,
+ { "BPDU Version", "dec_stp.version",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_dec_bpdu_flags,
+ { "BPDU flags", "dec_stp.flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_dec_bpdu_flags_short_timers,
+ { "Use short timers", "dec_stp.flags.short_timers",
+ FT_BOOLEAN, 8, TFS(&tfs_yes_no), BPDU_FLAGS_SHORT_TIMERS,
+ NULL, HFILL }},
+ { &hf_dec_bpdu_flags_tcack,
+ { "Topology Change Acknowledgment", "dec_stp.flags.tcack",
+ FT_BOOLEAN, 8, TFS(&tfs_yes_no), BPDU_FLAGS_TCACK,
+ NULL, HFILL }},
+ { &hf_dec_bpdu_flags_tc,
+ { "Topology Change", "dec_stp.flags.tc",
+ FT_BOOLEAN, 8, TFS(&tfs_yes_no), BPDU_FLAGS_TC,
+ NULL, HFILL }},
+ { &hf_dec_bpdu_root_pri,
+ { "Root Priority", "dec_stp.root.pri",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_dec_bpdu_root_mac,
+ { "Root MAC", "dec_stp.root.mac",
+ FT_ETHER, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_dec_bpdu_root_cost,
+ { "Root Path Cost", "dec_stp.root.cost",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_dec_bpdu_bridge_pri,
+ { "Bridge Priority", "dec_stp.bridge.pri",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_dec_bpdu_bridge_mac,
+ { "Bridge MAC", "dec_stp.bridge.mac",
+ FT_ETHER, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_dec_bpdu_port_id,
+ { "Port identifier", "dec_stp.port",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_dec_bpdu_msg_age,
+ { "Message Age", "dec_stp.msg_age",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_dec_bpdu_hello_time,
+ { "Hello Time", "dec_stp.hello",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_dec_bpdu_max_age,
+ { "Max Age", "dec_stp.max_age",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_dec_bpdu_forward_delay,
+ { "Forward Delay", "dec_stp.forward",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+ };
+ static gint *ett[] = {
+ &ett_dec_bpdu,
+ &ett_dec_bpdu_flags,
+ };
- proto_dec_bpdu = proto_register_protocol("DEC Spanning Tree Protocol",
- "DEC_STP", "dec_stp");
- proto_register_field_array(proto_dec_bpdu, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ proto_dec_bpdu = proto_register_protocol("DEC Spanning Tree Protocol",
+ "DEC_STP", "dec_stp");
+ proto_register_field_array(proto_dec_bpdu, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_dec_bpdu(void)
{
- dissector_handle_t dec_bpdu_handle;
+ dissector_handle_t dec_bpdu_handle;
- dec_bpdu_handle = create_dissector_handle(dissect_dec_bpdu,
- proto_dec_bpdu);
- dissector_add_uint("ethertype", ETHERTYPE_DEC_LB, dec_bpdu_handle);
- dissector_add_uint("chdlctype", ETHERTYPE_DEC_LB, dec_bpdu_handle);
- dissector_add_uint("ppp.protocol", PPP_DEC_LB, dec_bpdu_handle);
+ dec_bpdu_handle = create_dissector_handle(dissect_dec_bpdu,
+ proto_dec_bpdu);
+ dissector_add_uint("ethertype", ETHERTYPE_DEC_LB, dec_bpdu_handle);
+ dissector_add_uint("chdlctype", ETHERTYPE_DEC_LB, dec_bpdu_handle);
+ dissector_add_uint("ppp.protocol", PPP_DEC_LB, dec_bpdu_handle);
}
diff --git a/epan/dissectors/packet-dect.c b/epan/dissectors/packet-dect.c
index cf85f53d64..d002af43d0 100644
--- a/epan/dissectors/packet-dect.c
+++ b/epan/dissectors/packet-dect.c
@@ -1174,6 +1174,7 @@ calc_xcrc(guint8* data, guint8 length)
guint8 next;
int y, x;
+ memset(bits, 0, sizeof(bits));
for(y=0;y<=length-4;y++)
{
dect_setbit(bits, y, dect_getbit(data, y+48*(1+(int)(y/16))));
@@ -1261,8 +1262,8 @@ dissect_bfield(gboolean dect_packet_type _U_, guint8 ba,
guint8 xcrc/*, xcrclen*/;
guint16 blen;
gint start_offset;
- char *bfield_str;
- char *bfield_short_str;
+ const char *bfield_str;
+ const char *bfield_short_str;
proto_item *bfieldti = NULL;
proto_tree *BField = NULL;
diff --git a/epan/dissectors/packet-dhcp-failover.c b/epan/dissectors/packet-dhcp-failover.c
index 41ad1b1f6b..37a4d74975 100644
--- a/epan/dissectors/packet-dhcp-failover.c
+++ b/epan/dissectors/packet-dhcp-failover.c
@@ -39,8 +39,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-dhcpv6.c b/epan/dissectors/packet-dhcpv6.c
index 8bebe7d1ce..89bc9ebf44 100644
--- a/epan/dissectors/packet-dhcpv6.c
+++ b/epan/dissectors/packet-dhcpv6.c
@@ -54,7 +54,7 @@
#include <epan/strutil.h>
#include <epan/arptypes.h>
#include "packet-arp.h"
-#include "packet-dns.h" /* for get_dns_name() */
+#include "packet-dns.h" /* for get_dns_name() */
static int proto_dhcpv6 = -1;
static int hf_dhcpv6_msgtype = -1;
@@ -80,86 +80,86 @@ static gint ett_dhcpv6_option_vsoption = -1;
static gint ett_dhcpv6_vendor_option = -1;
static gint ett_dhcpv6_pkt_option = -1;
-#define UDP_PORT_DHCPV6_DOWNSTREAM 546
-#define UDP_PORT_DHCPV6_UPSTREAM 547
-
-#define DHCPV6_LEASEDURATION_INFINITY 0xffffffff
-
-#define SOLICIT 1
-#define ADVERTISE 2
-#define REQUEST 3
-#define CONFIRM 4
-#define RENEW 5
-#define REBIND 6
-#define REPLY 7
-#define RELEASE 8
-#define DECLINE 9
-#define RECONFIGURE 10
-#define INFORMATION_REQUEST 11
-#define RELAY_FORW 12
-#define RELAY_REPLY 13
-#define LEASEQUERY 14
-#define LEASEQUERY_REPLY 15
-
-#define OPTION_CLIENTID 1
-#define OPTION_SERVERID 2
-#define OPTION_IA_NA 3
-#define OPTION_IA_TA 4
-#define OPTION_IAADDR 5
-#define OPTION_ORO 6
-#define OPTION_PREFERENCE 7
-#define OPTION_ELAPSED_TIME 8
-#define OPTION_RELAY_MSG 9
-/* #define OPTION_SERVER_MSG 10 */
-#define OPTION_AUTH 11
-#define OPTION_UNICAST 12
-#define OPTION_STATUS_CODE 13
-#define OPTION_RAPID_COMMIT 14
-#define OPTION_USER_CLASS 15
-#define OPTION_VENDOR_CLASS 16
-#define OPTION_VENDOR_OPTS 17
-#define OPTION_INTERFACE_ID 18
-#define OPTION_RECONF_MSG 19
-#define OPTION_RECONF_ACCEPT 20
-#define OPTION_SIP_SERVER_D 21
-#define OPTION_SIP_SERVER_A 22
-#define OPTION_DNS_SERVERS 23
-#define OPTION_DOMAIN_LIST 24
-#define OPTION_IA_PD 25
-#define OPTION_IAPREFIX 26
-#define OPTION_NIS_SERVERS 27
-#define OPTION_NISP_SERVERS 28
-#define OPTION_NIS_DOMAIN_NAME 29
-#define OPTION_NISP_DOMAIN_NAME 30
-#define OPTION_SNTP_SERVERS 31
-#define OPTION_LIFETIME 32
-#define OPTION_BCMCS_SERVER_D 33
-#define OPTION_BCMCS_SERVER_A 34
-#define OPTION_GEOCONF_CIVIC 36
-#define OPTION_REMOTE_ID 37
-#define OPTION_SUBSCRIBER_ID 38
-#define OPTION_CLIENT_FQDN 39
-#define OPTION_PANA_AGENT 40
-#define OPTION_TIME_ZONE 41
-#define OPTION_TZDB 42
-#define OPTION_ERO 43
-#define OPTION_LQ_QUERY 44
-#define OPTION_CLIENT_DATA 45
-#define OPTION_CLT_TIME 46
-#define OPTION_LQ_RELAY_DATA 47
-#define OPTION_LQ_CLIENT_LINK 48
-#define OPTION_CAPWAP_AC_V6 52
-#define OPTION_AFTR_NAME 64
+#define UDP_PORT_DHCPV6_DOWNSTREAM 546
+#define UDP_PORT_DHCPV6_UPSTREAM 547
+
+#define DHCPV6_LEASEDURATION_INFINITY 0xffffffff
+
+#define SOLICIT 1
+#define ADVERTISE 2
+#define REQUEST 3
+#define CONFIRM 4
+#define RENEW 5
+#define REBIND 6
+#define REPLY 7
+#define RELEASE 8
+#define DECLINE 9
+#define RECONFIGURE 10
+#define INFORMATION_REQUEST 11
+#define RELAY_FORW 12
+#define RELAY_REPLY 13
+#define LEASEQUERY 14
+#define LEASEQUERY_REPLY 15
+
+#define OPTION_CLIENTID 1
+#define OPTION_SERVERID 2
+#define OPTION_IA_NA 3
+#define OPTION_IA_TA 4
+#define OPTION_IAADDR 5
+#define OPTION_ORO 6
+#define OPTION_PREFERENCE 7
+#define OPTION_ELAPSED_TIME 8
+#define OPTION_RELAY_MSG 9
+/* #define OPTION_SERVER_MSG 10 */
+#define OPTION_AUTH 11
+#define OPTION_UNICAST 12
+#define OPTION_STATUS_CODE 13
+#define OPTION_RAPID_COMMIT 14
+#define OPTION_USER_CLASS 15
+#define OPTION_VENDOR_CLASS 16
+#define OPTION_VENDOR_OPTS 17
+#define OPTION_INTERFACE_ID 18
+#define OPTION_RECONF_MSG 19
+#define OPTION_RECONF_ACCEPT 20
+#define OPTION_SIP_SERVER_D 21
+#define OPTION_SIP_SERVER_A 22
+#define OPTION_DNS_SERVERS 23
+#define OPTION_DOMAIN_LIST 24
+#define OPTION_IA_PD 25
+#define OPTION_IAPREFIX 26
+#define OPTION_NIS_SERVERS 27
+#define OPTION_NISP_SERVERS 28
+#define OPTION_NIS_DOMAIN_NAME 29
+#define OPTION_NISP_DOMAIN_NAME 30
+#define OPTION_SNTP_SERVERS 31
+#define OPTION_LIFETIME 32
+#define OPTION_BCMCS_SERVER_D 33
+#define OPTION_BCMCS_SERVER_A 34
+#define OPTION_GEOCONF_CIVIC 36
+#define OPTION_REMOTE_ID 37
+#define OPTION_SUBSCRIBER_ID 38
+#define OPTION_CLIENT_FQDN 39
+#define OPTION_PANA_AGENT 40
+#define OPTION_TIME_ZONE 41
+#define OPTION_TZDB 42
+#define OPTION_ERO 43
+#define OPTION_LQ_QUERY 44
+#define OPTION_CLIENT_DATA 45
+#define OPTION_CLT_TIME 46
+#define OPTION_LQ_RELAY_DATA 47
+#define OPTION_LQ_CLIENT_LINK 48
+#define OPTION_CAPWAP_AC_V6 52
+#define OPTION_AFTR_NAME 64
/* temporary value until defined by IETF */
-#define OPTION_MIP6_HA 165
-#define OPTION_MIP6_HOA 166
-#define OPTION_NAI 167
+#define OPTION_MIP6_HA 165
+#define OPTION_MIP6_HOA 166
+#define OPTION_NAI 167
-#define DUID_LLT 1
-#define DUID_EN 2
-#define DUID_LL 3
-#define DUID_LL_OLD 4
+#define DUID_LLT 1
+#define DUID_EN 2
+#define DUID_LL 3
+#define DUID_LL_OLD 4
static const value_string msgtype_vals[] = {
{ SOLICIT, "Solicit" },
@@ -262,18 +262,18 @@ static const value_string duidtype_vals[] =
};
static const true_false_string fqdn_n = {
- "Server should not perform DNS updates",
- "Server should perform DNS updates"
+ "Server should not perform DNS updates",
+ "Server should perform DNS updates"
};
static const true_false_string fqdn_o = {
- "Server has overridden client's S bit preference",
- "Server has not overridden client's S bit preference"
+ "Server has overridden client's S bit preference",
+ "Server has not overridden client's S bit preference"
};
static const true_false_string fqdn_s = {
- "Server should perform forward DNS updates",
- "Server should not perform forward DNS updates"
+ "Server should perform forward DNS updates",
+ "Server should not perform forward DNS updates"
};
/* CableLabs Common Vendor Specific Options */
@@ -395,11 +395,11 @@ static const value_string sec_tcm_vals[] = {
/* May be called recursively */
static void
dissect_dhcpv6(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- gboolean downstream, int off, int eoff);
+ gboolean downstream, int off, int eoff);
static int
dissect_packetcable_ccc_option(proto_tree *v_tree, tvbuff_t *tvb, int optoff,
- int optend)
+ int optend)
{
/** THE ENCODING OF THIS SUBOPTION HAS CHANGED FROM DHCPv4
the code and length fields have grown from a single octet to
@@ -437,7 +437,7 @@ dissect_packetcable_ccc_option(proto_tree *v_tree, tvbuff_t *tvb, int optoff,
val_to_str(subopt, pkt_ccc_opt_vals, "unknown/reserved") );
switch (subopt) {
- case PKT_CCC_PRI_DHCP: /* IPv4 address values */
+ case PKT_CCC_PRI_DHCP: /* IPv4 address values */
case PKT_CCC_SEC_DHCP:
if (subopt_len == 4) {
ipv4_address = tvb_get_ipv4(tvb, suboptoff);
@@ -1035,7 +1035,7 @@ dhcpv6_domain(proto_tree * subtree, tvbuff_t *tvb, int offset, guint16 optlen)
/* read length of the next substring */
len = tvb_get_guint8(tvb, offset);
- /* Microsoft dhcpv6 clients aren't currently RFC 4704 conform: They send an
+ /* Microsoft dhcpv6 clients aren't currently RFC 4704 conformant: They send an
* ASCII string instead of a DNS record encoded domain name. Catch that case
* to allow us to continue after such a malformed record.
*/
@@ -1083,13 +1083,13 @@ dhcpv6_domain(proto_tree * subtree, tvbuff_t *tvb, int offset, guint16 optlen)
/* Returns the number of bytes consumed by this option. */
static int
dhcpv6_option(tvbuff_t *tvb, packet_info *pinfo, proto_tree *bp_tree,
- gboolean downstream, int off, int eoff, gboolean *at_end)
+ gboolean downstream, int off, int eoff, gboolean *at_end)
{
guint8 *buf;
- guint16 opttype;
- guint16 optlen;
- guint16 hwtype;
- guint16 temp_optlen = 0;
+ guint16 opttype;
+ guint16 optlen;
+ guint16 hwtype;
+ guint16 temp_optlen = 0;
proto_item *ti;
proto_tree *subtree;
proto_tree *subtree_2;
@@ -1858,7 +1858,7 @@ dhcpv6_option(tvbuff_t *tvb, packet_info *pinfo, proto_tree *bp_tree,
static void
dissect_dhcpv6(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- gboolean downstream, int off, int eoff)
+ gboolean downstream, int off, int eoff)
{
proto_tree *bp_tree = NULL;
proto_item *ti;
diff --git a/epan/dissectors/packet-diameter.c b/epan/dissectors/packet-diameter.c
index 3dbf765fa6..e18021f32c 100644
--- a/epan/dissectors/packet-diameter.c
+++ b/epan/dissectors/packet-diameter.c
@@ -180,9 +180,7 @@ typedef struct _proto_avp_t {
static const char* simple_avp(diam_ctx_t*, diam_avp_t*, tvbuff_t*);
-static const value_string no_vs[] = {{0, NULL} };
-static GArray no_garr = { (void*)no_vs, 0 };
-static diam_vnd_t unknown_vendor = { 0xffffffff, &no_garr, NULL, &no_garr };
+static diam_vnd_t unknown_vendor = { 0xffffffff, NULL, NULL, NULL };
static diam_vnd_t no_vnd = { 0, NULL, NULL, NULL };
static diam_avp_t unknown_avp = {0, &unknown_vendor, simple_avp, simple_avp, -1, -1, NULL };
static GArray* all_cmds;
@@ -258,6 +256,12 @@ static int hf_diameter_answer_in = -1;
static int hf_diameter_answer_to = -1;
static int hf_diameter_answer_time = -1;
+/* AVPs with special/extra decoding */
+static int hf_framed_ipv6_prefix_reserved = -1;
+static int hf_framed_ipv6_prefix_length = -1;
+static int hf_framed_ipv6_prefix_bytes = -1;
+static int hf_framed_ipv6_prefix_ipv6 = -1;
+
static gint ett_diameter = -1;
static gint ett_diameter_flags = -1;
static gint ett_diameter_avp_flags = -1;
@@ -314,20 +318,18 @@ compare_avps (gconstpointer a, gconstpointer b)
/* Special decoding of some AVP:s */
static int
-dissect_diameter_vedor_id(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+dissect_diameter_vendor_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
{
-
int offset = 0;
proto_tree_add_item(tree, hf_diameter_vendor_id, tvb, 0, 4, ENC_BIG_ENDIAN);
offset++;
return offset;
-
}
static int
-dissect_diameter_eap_payload(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+dissect_diameter_eap_payload(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
gboolean save_writable;
@@ -341,6 +343,29 @@ dissect_diameter_eap_payload(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tr
return tvb_length(tvb);
}
+/* From RFC 3162 section 2.3 */
+static int
+dissect_diameter_base_framed_ipv6_prefix(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
+{
+ guint8 prefix_len, prefix_len_bytes;
+
+ proto_tree_add_item(tree, hf_framed_ipv6_prefix_reserved, tvb, 0, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_framed_ipv6_prefix_length, tvb, 1, 1, ENC_BIG_ENDIAN);
+
+ prefix_len = tvb_get_guint8(tvb, 1);
+ prefix_len_bytes = prefix_len / 8;
+ if (prefix_len % 8)
+ prefix_len_bytes++;
+
+ proto_tree_add_item(tree, hf_framed_ipv6_prefix_bytes, tvb, 2, prefix_len_bytes, ENC_NA);
+
+ /* If we have a fully IPv6 address, display it as such */
+ if (prefix_len_bytes == 16)
+ proto_tree_add_item(tree, hf_framed_ipv6_prefix_ipv6, tvb, 2, prefix_len_bytes, ENC_NA);
+
+ return(prefix_len_bytes+2);
+}
+
/* Dissect an AVP at offset */
static int
dissect_diameter_avp(diam_ctx_t* c, tvbuff_t* tvb, int offset)
@@ -386,7 +411,7 @@ dissect_diameter_avp(diam_ctx_t* c, tvbuff_t* tvb, int offset)
{ /* Debug code */
value_string* vendor_avp_vs=VALUE_STRING_EXT_VS_P(vendor->vs_avps_ext);
gint i = 0;
- while(vendor_avp_vs[i].strptr!=NULL){
+ while(vendor_avp_vs[i].strptr!=NULL) {
g_warning("%u %s",vendor_avp_vs[i].value,vendor_avp_vs[i].strptr);
i++;
}
@@ -477,7 +502,7 @@ dissect_diameter_avp(diam_ctx_t* c, tvbuff_t* tvb, int offset)
if (avp_str) proto_item_append_text(avp_item," val=%s", avp_str);
/* Call subdissectors for AVP:s */
- switch (vendorid){
+ switch (vendorid) {
case 0:
dissector_try_uint(diameter_dissector_table, code, subtvb, c->pinfo, avp_tree);
break;
@@ -812,11 +837,11 @@ dissect_diameter_common(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree)
guint32 flags_bits = (tvb_get_ntohl(tvb,4) & 0xff000000) >> 24;
int packet_len = first_word & 0x00ffffff;
proto_item *pi, *cmd_item, *app_item, *version_item;
- proto_tree* diam_tree;
- diam_ctx_t* c = ep_alloc0(sizeof(diam_ctx_t));
+ proto_tree *diam_tree;
+ diam_ctx_t *c = ep_alloc0(sizeof(diam_ctx_t));
int offset;
- value_string* cmd_vs;
- const char* cmd_str;
+ value_string *cmd_vs;
+ const char *cmd_str;
guint32 cmd = tvb_get_ntoh24(tvb,5);
guint32 fourth = tvb_get_ntohl(tvb,8);
guint32 hop_by_hop_id = 0;
@@ -825,7 +850,7 @@ dissect_diameter_common(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree)
diameter_req_ans_pair_t *diameter_pair;
proto_item *it;
nstime_t ns;
- void* pd_save;
+ void *pd_save;
pd_save = pinfo->private_data;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "DIAMETER");
@@ -874,24 +899,21 @@ dissect_diameter_common(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree)
break;
}
case DIAMETER_RFC: {
- guint32 application_id;
- application_id = tvb_get_ntohl(tvb,8);
- cmd_vs = (value_string*)(void*)all_cmds->data;
/* Store the application id to be used by subdissectors */
- pinfo->private_data = &application_id;
- app_item = proto_tree_add_item(diam_tree, hf_diameter_application_id,tvb,8,4,ENC_BIG_ENDIAN);
- if (strcmp(val_to_str(tvb_get_ntohl(tvb, 8), dictionary.applications,
- "Unknown"), "Unknown") == 0) {
- proto_tree* tu = proto_item_add_subtree(app_item,ett_unknown);
- proto_item* iu = proto_tree_add_text(tu,tvb, 8 ,4,"Unknown Application Id, "
+ pinfo->private_data = &fourth;
+
+ cmd_vs = (value_string*)(void*)all_cmds->data;
+
+ app_item = proto_tree_add_item(diam_tree, hf_diameter_application_id, tvb, 8, 4, ENC_BIG_ENDIAN);
+ if (match_strval(fourth, dictionary.applications) == NULL) {
+ proto_tree *tu = proto_item_add_subtree(app_item,ett_unknown);
+ proto_item *iu = proto_tree_add_text(tu, tvb, 8, 4, "Unknown Application Id, "
"if you know what this is you can add it to dictionary.xml");
expert_add_info_format(c->pinfo, iu, PI_UNDECODED, PI_WARN,
- "Unknown Application Id (%u)",
- tvb_get_ntohl(tvb, 8));
+ "Unknown Application Id (%u)", fourth);
PROTO_ITEM_SET_GENERATED(iu);
}
-
c->version_rfc = TRUE;
break;
}
@@ -1073,11 +1095,11 @@ static void
dissect_diameter_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
/* Check if we have the start of a PDU or if this is segment */
- if (!check_diameter(tvb)){
+ if (!check_diameter(tvb)) {
col_set_str(pinfo->cinfo, COL_PROTOCOL, "DIAMETER");
col_set_str(pinfo->cinfo, COL_INFO, "Continuation");
call_dissector(data_handle, tvb, pinfo, tree);
- }else{
+ } else {
tcp_dissect_pdus(tvb, pinfo, tree, gbl_diameter_desegment, 4,
get_diameter_pdu_len, dissect_diameter_common);
}
@@ -1118,7 +1140,7 @@ reginfo(int* hf_ptr, const char* name, const char* abbr, const char* desc,
g_strdup(desc),
HFILL }};
- if(vs_ext){
+ if(vs_ext) {
hf.hfinfo.strings = vs_ext;
}
@@ -1141,7 +1163,7 @@ basic_avp_reginfo(diam_avp_t* a, const char* name, enum ftenum ft,
hf->hfinfo.name = g_strdup_printf("%s",name);
hf->hfinfo.abbrev = alnumerize(g_strdup_printf("diameter.%s",name));
- if(vs_ext){
+ if(vs_ext) {
hf->hfinfo.strings = vs_ext;
}
@@ -1206,15 +1228,15 @@ RFC3588
NULL, FT_UINT16, BASE_DEC|BASE_EXT_STRING, &diameter_avp_data_addrfamily_vals_ext, 0);
reginfo(&(t->hf_ipv4), ep_strdup_printf("%s Address",name),
- alnumerize(ep_strdup_printf("diameter.%s",name)),
+ alnumerize(ep_strdup_printf("diameter.%s.IPv4",name)),
NULL, FT_IPv4, BASE_NONE, NULL, 0);
reginfo(&(t->hf_ipv6), ep_strdup_printf("%s Address",name),
- alnumerize(ep_strdup_printf("diameter.%s",name)),
+ alnumerize(ep_strdup_printf("diameter.%s.IPv6",name)),
NULL, FT_IPv6, BASE_NONE, NULL, 0);
reginfo(&(t->hf_other), ep_strdup_printf("%s Address",name),
- alnumerize(ep_strdup_printf("diameter.%s",name)),
+ alnumerize(ep_strdup_printf("diameter.%s.Bytes",name)),
NULL, FT_BYTES, BASE_NONE, NULL, 0);
g_ptr_array_add(build_dict.ett,ettp);
@@ -1273,7 +1295,7 @@ build_simple_avp(const avp_type_t* type, guint32 code, const diam_vnd_t* vendor,
break;
default:
- fprintf(stderr,"Diameter Dictionary: AVP %s has a list of values but isn't of a 32-bit or shorter integral type\n",
+ fprintf(stderr,"Diameter Dictionary: AVP '%s' has a list of values but isn't of a 32-bit or shorter integral type\n",
name);
return NULL;
}
@@ -1300,21 +1322,21 @@ build_simple_avp(const avp_type_t* type, guint32 code, const diam_vnd_t* vendor,
static const avp_type_t basic_types[] = {
- {"octetstring" , simple_avp , simple_avp , FT_BYTES , BASE_NONE , build_simple_avp },
- {"utf8string" , utf8_avp , utf8_avp , FT_STRING , BASE_NONE , build_simple_avp },
- {"grouped" , grouped_avp , grouped_avp , FT_BYTES , BASE_NONE , build_simple_avp },
- {"integer32" , integer32_avp , integer32_avp , FT_INT32 , BASE_DEC , build_simple_avp },
- {"unsigned32" , unsigned32_avp, unsigned32_avp, FT_UINT32 , BASE_DEC , build_simple_avp },
- {"integer64" , integer64_avp , integer64_avp , FT_INT64 , BASE_DEC , build_simple_avp },
- {"unsigned64" , unsigned64_avp, unsigned64_avp, FT_UINT64 , BASE_DEC , build_simple_avp },
- {"float32" , float32_avp , float32_avp , FT_FLOAT , BASE_NONE , build_simple_avp },
- {"float64" , float64_avp , float64_avp , FT_DOUBLE , BASE_NONE , build_simple_avp },
- {"ipaddress" , NULL , NULL , FT_NONE , BASE_NONE , build_address_avp },
- {"diameteruri" , utf8_avp , utf8_avp , FT_STRING , BASE_NONE , build_simple_avp },
- {"diameteridentity" , utf8_avp , utf8_avp , FT_STRING , BASE_NONE , build_simple_avp },
- {"ipfilterrule" , utf8_avp , utf8_avp , FT_STRING , BASE_NONE , build_simple_avp },
- {"qosfilterrule" , utf8_avp , utf8_avp , FT_STRING , BASE_NONE , build_simple_avp },
- {"time" , time_avp , time_avp , FT_ABSOLUTE_TIME , ABSOLUTE_TIME_UTC , build_simple_avp },
+ {"octetstring" , simple_avp , simple_avp , FT_BYTES , BASE_NONE , build_simple_avp },
+ {"utf8string" , utf8_avp , utf8_avp , FT_STRING , BASE_NONE , build_simple_avp },
+ {"grouped" , grouped_avp , grouped_avp , FT_BYTES , BASE_NONE , build_simple_avp },
+ {"integer32" , integer32_avp , integer32_avp , FT_INT32 , BASE_DEC , build_simple_avp },
+ {"unsigned32" , unsigned32_avp , unsigned32_avp, FT_UINT32 , BASE_DEC , build_simple_avp },
+ {"integer64" , integer64_avp , integer64_avp , FT_INT64 , BASE_DEC , build_simple_avp },
+ {"unsigned64" , unsigned64_avp , unsigned64_avp, FT_UINT64 , BASE_DEC , build_simple_avp },
+ {"float32" , float32_avp , float32_avp , FT_FLOAT , BASE_NONE , build_simple_avp },
+ {"float64" , float64_avp , float64_avp , FT_DOUBLE , BASE_NONE , build_simple_avp },
+ {"ipaddress" , NULL , NULL , FT_NONE , BASE_NONE , build_address_avp },
+ {"diameteruri" , utf8_avp , utf8_avp , FT_STRING , BASE_NONE , build_simple_avp },
+ {"diameteridentity" , utf8_avp , utf8_avp , FT_STRING , BASE_NONE , build_simple_avp },
+ {"ipfilterrule" , utf8_avp , utf8_avp , FT_STRING , BASE_NONE , build_simple_avp },
+ {"qosfilterrule" , utf8_avp , utf8_avp , FT_STRING , BASE_NONE , build_simple_avp },
+ {"time" , time_avp , time_avp , FT_ABSOLUTE_TIME , ABSOLUTE_TIME_UTC , build_simple_avp },
{NULL, NULL, NULL, FT_NONE, BASE_NONE, NULL }
};
@@ -1364,6 +1386,11 @@ strcase_equal(gconstpointer ka, gconstpointer kb)
}
+/* Note: Dynamic "value string arrays" (e.g., vs_cmds, vs_avps, ...) are constructed using */
+/* "zero-terminated" GArrays so that they will have the same form as standard */
+/* value_string arrays created at compile time. Since the last entry in a */
+/* value_string array must be {0, NULL}, we are assuming that NULL == 0 (hackish). */
+
static int
dictionary_load(void)
{
@@ -1391,6 +1418,8 @@ dictionary_load(void)
dictionary.vnds = pe_tree_create(EMEM_TREE_TYPE_RED_BLACK,"diameter_vnds");
dictionary.avps = pe_tree_create(EMEM_TREE_TYPE_RED_BLACK,"diameter_avps");
+ unknown_vendor.vs_cmds = g_array_new(TRUE,TRUE,sizeof(value_string));
+ unknown_vendor.vs_avps = g_array_new(TRUE,TRUE,sizeof(value_string));
no_vnd.vs_cmds = g_array_new(TRUE,TRUE,sizeof(value_string));
no_vnd.vs_avps = g_array_new(TRUE,TRUE,sizeof(value_string));
@@ -1417,6 +1446,13 @@ dictionary_load(void)
const avp_type_t* parent = NULL;
/* try to get the parent type */
+ if (t->name == NULL) {
+ fprintf(stderr,"Diameter Dictionary: Invalid Type (empty name): parent==%s\n",
+ t->parent ? t->parent : "(null)");
+ continue;
+ }
+
+
if (g_hash_table_lookup(build_dict.types,t->name))
continue;
@@ -1447,6 +1483,11 @@ dictionary_load(void)
for ( ; v; v = v->next) {
value_string item = {v->code,v->name};
+ if (v->name == NULL) {
+ fprintf(stderr,"Diameter Dictionary: Invalid Vendor (empty name): code==%d\n",v->code);
+ continue;
+ }
+
if (g_hash_table_lookup(vendors,v->name))
continue;
@@ -1467,13 +1508,19 @@ dictionary_load(void)
if ((c = d->cmds)) {
for (; c; c = c->next) {
+ if (c->vendor == NULL) {
+ fprintf(stderr,"Diameter Dictionary: Invalid Vendor (empty name) for command %s\n",
+ c->name ? c->name : "(null)");
+ continue;
+ }
+
if ((vnd = g_hash_table_lookup(vendors,c->vendor))) {
value_string item = {c->code,c->name};
g_array_append_val(vnd->vs_cmds,item);
/* Also add to all_cmds as used by RFC version */
g_array_append_val(all_cmds,item);
} else {
- fprintf(stderr,"Diameter Dictionary: No Vendor: %s",c->vendor);
+ fprintf(stderr,"Diameter Dictionary: No Vendor: %s\n",c->vendor);
}
}
}
@@ -1486,11 +1533,16 @@ dictionary_load(void)
ddict_xmlpi_t* x;
void* avp_data = NULL;
+ if (a->name == NULL) {
+ fprintf(stderr,"Diameter Dictionary: Invalid AVP (empty name)\n");
+ continue;
+ }
+
if ((vnd = g_hash_table_lookup(vendors,vend))) {
value_string vndvs = {a->code,a->name};
g_array_append_val(vnd->vs_avps,vndvs);
} else {
- fprintf(stderr,"Diameter Dictionary: No Vendor: %s",vend);
+ fprintf(stderr,"Diameter Dictionary: No Vendor: %s\n",vend);
vnd = &unknown_vendor;
}
@@ -1511,7 +1563,7 @@ dictionary_load(void)
if ( (strcase_equal(x->name,"avp-proto") && strcase_equal(x->key,a->name))
|| (a->type && strcase_equal(x->name,"type-proto") && strcase_equal(x->key,a->type))
) {
- static avp_type_t proto_type = {"proto", proto_avp, proto_avp, FT_UINT32, BASE_NONE, build_proto_avp};
+ static avp_type_t proto_type = {"proto", proto_avp, proto_avp, FT_UINT32, BASE_HEX, build_proto_avp};
type = &proto_type;
avp_data = x->value;
@@ -1679,7 +1731,22 @@ proto_register_diameter(void)
{ &hf_diameter_answer_time,
{ "Response Time", "diameter.resp_time", FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
"The time between the request and the answer", HFILL }},
-
+ { &hf_framed_ipv6_prefix_reserved,
+ { "Framed IPv6 Prefix Reserved byte", "diameter.framed_ipv6_prefix_reserved",
+ FT_UINT8, BASE_HEX, NULL, 0,
+ NULL, HFILL }},
+ { &hf_framed_ipv6_prefix_length,
+ { "Framed IPv6 Prefix length (in bits)", "diameter.framed_ipv6_prefix_length",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_framed_ipv6_prefix_bytes,
+ { "Framed IPv6 Prefix as a bytestring", "diameter.framed_ipv6_prefix_bytes",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_framed_ipv6_prefix_ipv6,
+ { "Framed IPv6 Prefix as an IPv6 address", "diameter.framed_ipv6_prefix_ipv6",
+ FT_IPv6, BASE_NONE, NULL, 0,
+ "This field is present only if the prefix length is 128", HFILL }}
};
gint *ett_base[] = {
@@ -1774,10 +1841,14 @@ proto_reg_handoff_diameter(void)
proto_diameter);
data_handle = find_dissector("data");
eap_handle = find_dissector("eap");
+
/* Register special decoding for some AVP:s */
+ /* AVP Code: 97 Framed-IPv6-Address */
+ dissector_add_uint("diameter.base", 97,
+ new_create_dissector_handle(dissect_diameter_base_framed_ipv6_prefix, proto_diameter));
/* AVP Code: 266 Vendor-Id */
dissector_add_uint("diameter.base", 266,
- new_create_dissector_handle(dissect_diameter_vedor_id, proto_diameter));
+ new_create_dissector_handle(dissect_diameter_vendor_id, proto_diameter));
/* AVP Code: 462 EAP-Payload */
dissector_add_uint("diameter.base", 462,
new_create_dissector_handle(dissect_diameter_eap_payload, proto_diameter));
diff --git a/epan/dissectors/packet-diameter_3gpp.c b/epan/dissectors/packet-diameter_3gpp.c
index af34d90078..3ec6200828 100644
--- a/epan/dissectors/packet-diameter_3gpp.c
+++ b/epan/dissectors/packet-diameter_3gpp.c
@@ -41,6 +41,7 @@
#include "packet-gsm_a_common.h"
#include "packet-e164.h"
#include "packet-e212.h"
+#include "packet-ntp.h"
/* Initialize the protocol and registered fields */
static int proto_diameter_3gpp = -1;
@@ -105,6 +106,9 @@ static int hf_diameter_3gpp_idr_flags_bit1 = -1;
static int hf_diameter_3gpp_idr_flags_bit2 = -1;
static int hf_diameter_3gpp_idr_flags_bit3 = -1;
static int hf_diameter_3gpp_idr_flags_bit4 = -1;
+static int hf_diameter_3gpp_ipv6addr = -1;
+static int hf_diameter_3gpp_mbms_abs_time_ofmbms_data_tfer = -1;
+static int hf_diameter_3gpp_udp_port = -1;
static gint diameter_3gpp_path_ett = -1;
static gint diameter_3gpp_msisdn_ett = -1;
static gint diameter_3gpp_feature_list_ett = -1;
@@ -121,7 +125,19 @@ static gint diameter_3gpp_idr_flags_ett = -1;
/* Dissector handles */
static dissector_handle_t xml_handle;
+/* AVP Code: 15 3GPP-SGSN-IPv6-Address */
+/* AVP Code: 917 MBMS-GGSN-IPv6-Address */
+static int
+dissect_diameter_3gpp_ipv6addr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
+{
+ int offset = 0;
+
+ proto_tree_add_item(tree, hf_diameter_3gpp_ipv6addr, tvb, offset, 16, ENC_BIG_ENDIAN);
+
+ offset += 16;
+ return offset;
+}
/* AVP Code: 600 Visited-Network-Identifier
@@ -365,6 +381,35 @@ dissect_diameter_3gpp_mbms_required_qos(tvbuff_t *tvb, packet_info *pinfo, proto
}
+/* AVP Code: 926 MBMS-BMSC-SSM-UDP-Port */
+/* AVP Code: 927 MBMS-GW-UDP-Port */
+static int
+dissect_diameter_3gpp_udp_port(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
+{
+ int offset = 0;
+
+ proto_tree_add_item(tree, hf_diameter_3gpp_udp_port, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset += 1;
+
+ return offset;
+}
+
+/* AVP Code: 929 MBMS-Data-Transfer-Start */
+/* AVP Code: 930 MBMS-Data-Transfer-Stop */
+static int
+dissect_diameter_3gpp_mbms_abs_time_ofmbms_data_tfer(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
+{
+ int offset = 0;
+ const gchar *time_str;
+
+ time_str = tvb_ntp_fmt_ts(tvb, offset);
+ proto_tree_add_string(tree, hf_diameter_3gpp_mbms_abs_time_ofmbms_data_tfer, tvb, offset, 8, time_str);
+ offset+=8;
+
+ return offset;
+}
+
/* AVP Code: 1405 ULR-Flags */
static int
dissect_diameter_3gpp_ulr_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) {
@@ -605,6 +650,9 @@ proto_reg_handoff_diameter_3gpp(void)
/* AVP Code: 5 3GPP-GPRS Negotiated QoS profile */
/* Registered by packet-gtp.c */
+ /* AVP Code: 15 3GPP-SGSN-IPv6-Address */
+ dissector_add_uint("diameter.3gpp", 15, new_create_dissector_handle(dissect_diameter_3gpp_ipv6addr, proto_diameter_3gpp));
+
/* AVP Code: 22 3GPP-User-Location-Info
* Registered by packet-gtpv2.c
*/
@@ -645,9 +693,23 @@ proto_reg_handoff_diameter_3gpp(void)
/* AVP Code: 913 MBMS-Required-QoS */
dissector_add_uint("diameter.3gpp", 913, new_create_dissector_handle(dissect_diameter_3gpp_mbms_required_qos, proto_diameter_3gpp));
+ /* AVP Code: 917 MBMS-GGSN-IPv6-Address */
+ dissector_add_uint("diameter.3gpp", 917, new_create_dissector_handle(dissect_diameter_3gpp_ipv6addr, proto_diameter_3gpp));
+
/* AVP Code: 918 MBMS-BMSC-SSM-IP-Address */
dissector_add_uint("diameter.3gpp", 918, new_create_dissector_handle(dissect_diameter_3gpp_ipaddr, proto_diameter_3gpp));
+ /* AVP Code: 926 MBMS-BMSC-SSM-UDP-Port */
+ /* AVP Code: 927 MBMS-GW-UDP-Port */
+ dissector_add_uint("diameter.3gpp", 926, new_create_dissector_handle(dissect_diameter_3gpp_udp_port, proto_diameter_3gpp));
+ dissector_add_uint("diameter.3gpp", 927, new_create_dissector_handle(dissect_diameter_3gpp_udp_port, proto_diameter_3gpp));
+
+ /* AVP Code: 929 MBMS-Data-Transfer-Start */
+ dissector_add_uint("diameter.3gpp", 929, new_create_dissector_handle(dissect_diameter_3gpp_mbms_abs_time_ofmbms_data_tfer, proto_diameter_3gpp));
+
+ /* AVP Code: 930 MBMS-Data-Transfer-Stop */
+ dissector_add_uint("diameter.3gpp", 930, new_create_dissector_handle(dissect_diameter_3gpp_mbms_abs_time_ofmbms_data_tfer, proto_diameter_3gpp));
+
/* AVP Code: 1405 ULR-Flags */
dissector_add_uint("diameter.3gpp", 1405, new_create_dissector_handle(dissect_diameter_3gpp_ulr_flags, proto_diameter_3gpp));
@@ -981,6 +1043,21 @@ proto_register_diameter_3gpp(void)
FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
NULL, HFILL }
},
+ { &hf_diameter_3gpp_ipv6addr,
+ { "IPv6 Address", "diameter.3gpp.ipv6addr",
+ FT_IPv6, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_mbms_abs_time_ofmbms_data_tfer,
+ { "Absolute Time of MBMS Data Transfer", "diameter.3gpp.mbms_abs_time_ofmbms_data_tfer",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_udp_port ,
+ { "UDP Port", "diameter.3gpp.udp_port",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
};
/* Setup protocol subtree array */
diff --git a/epan/dissectors/packet-dis-pdus.c b/epan/dissectors/packet-dis-pdus.c
index 242faf6caf..cfbd71b303 100644
--- a/epan/dissectors/packet-dis-pdus.c
+++ b/epan/dissectors/packet-dis-pdus.c
@@ -747,66 +747,66 @@ gint parseFields(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode pa
parserNodes[fieldIndex]);
break;
case DIS_FIELDTYPE_EXERCISE_ID:
- proto_tree_add_item(tree, hf_dis_exercise_id, tvb, offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_dis_exercise_id, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
break;
case DIS_FIELDTYPE_NUM_ARTICULATION_PARAMS:
uintVal = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(tree, hf_dis_num_art_params, tvb, offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_dis_num_art_params, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
*(parserNodes[fieldIndex].outputVar) = (guint32)uintVal;
break;
case DIS_FIELDTYPE_PDU_LENGTH:
uintVal = tvb_get_ntohs(tvb, offset);
- proto_tree_add_item(tree, hf_dis_pdu_length, tvb, offset, 2, FALSE);
+ proto_tree_add_item(tree, hf_dis_pdu_length, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
break;
case DIS_FIELDTYPE_SITE:
uintVal = tvb_get_ntohs(tvb, offset);
- proto_tree_add_item(tree, hf_dis_entity_id_site, tvb, offset, 2, FALSE);
+ proto_tree_add_item(tree, hf_dis_entity_id_site, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
break;
case DIS_FIELDTYPE_APPLICATION:
uintVal = tvb_get_ntohs(tvb, offset);
- proto_tree_add_item(tree, hf_dis_entity_id_application, tvb, offset, 2, FALSE);
+ proto_tree_add_item(tree, hf_dis_entity_id_application, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
break;
case DIS_FIELDTYPE_ENTITY:
uintVal = tvb_get_ntohs(tvb, offset);
- proto_tree_add_item(tree, hf_dis_entity_id_entity, tvb, offset, 2, FALSE);
+ proto_tree_add_item(tree, hf_dis_entity_id_entity, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
break;
case DIS_FIELDTYPE_RADIO_ID:
uintVal = tvb_get_ntohs(tvb, offset);
- proto_tree_add_item(tree, hf_dis_radio_id, tvb, offset, 2, FALSE);
+ proto_tree_add_item(tree, hf_dis_radio_id, tvb, offset, 2, ENC_BIG_ENDIAN);
*(parserNodes[fieldIndex].outputVar) = (guint32)uintVal;
offset += 2;
break;
case DIS_FIELDTYPE_ENCODING_SCHEME:
uintVal = tvb_get_ntohs(tvb, offset);
- pi = proto_tree_add_item(tree, hf_dis_ens, tvb, offset, 2, FALSE);
+ pi = proto_tree_add_item(tree, hf_dis_ens, tvb, offset, 2, ENC_BIG_ENDIAN);
sub_tree = proto_item_add_subtree(pi, ett_dis_ens);
- proto_tree_add_item(sub_tree, hf_dis_ens_class, tvb, offset, 2, FALSE);
- proto_tree_add_item(sub_tree, hf_dis_ens_type, tvb, offset, 2, FALSE);
+ proto_tree_add_item(sub_tree, hf_dis_ens_class, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(sub_tree, hf_dis_ens_type, tvb, offset, 2, ENC_BIG_ENDIAN);
proto_item_set_end(pi, tvb, offset);
*(parserNodes[fieldIndex].outputVar) = (guint32)uintVal;
offset += 2;
break;
case DIS_FIELDTYPE_TDL_TYPE:
- proto_tree_add_item(tree, hf_dis_tdl_type, tvb, offset, 2, FALSE);
+ proto_tree_add_item(tree, hf_dis_tdl_type, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
break;
case DIS_FIELDTYPE_SAMPLE_RATE:
- proto_tree_add_item(tree, hf_dis_sample_rate, tvb, offset, 4, FALSE);
+ proto_tree_add_item(tree, hf_dis_sample_rate, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
break;
case DIS_FIELDTYPE_DATA_LENGTH:
- proto_tree_add_item(tree, hf_dis_data_length, tvb, offset, 2, FALSE);
+ proto_tree_add_item(tree, hf_dis_data_length, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
break;
case DIS_FIELDTYPE_NUMBER_OF_SAMPLES:
uintVal = tvb_get_ntohs(tvb, offset);
- proto_tree_add_item(tree, hf_dis_num_of_samples, tvb, offset, 2, FALSE);
+ proto_tree_add_item(tree, hf_dis_num_of_samples, tvb, offset, 2, ENC_BIG_ENDIAN);
*(parserNodes[fieldIndex].outputVar) = (guint32)uintVal;
offset += 2;
break;
@@ -816,43 +816,43 @@ gint parseFields(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode pa
tvb_length_remaining(tvb, offset),
tvb_reported_length_remaining(tvb, offset)
);
- proto_tree_add_item(tree, hf_dis_signal_data, newtvb, 0, -1, FALSE );
+ proto_tree_add_item(tree, hf_dis_signal_data, newtvb, 0, -1, ENC_NA );
/* ****ck******* need to look for padding bytes */
break;
case DIS_FIELDTYPE_RADIO_CATEGORY:
- proto_tree_add_item(tree, hf_dis_radio_category, tvb, offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_dis_radio_category, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
break;
case DIS_FIELDTYPE_NOMENCLATURE_VERSION:
- proto_tree_add_item(tree, hf_dis_nomenclature_version, tvb, offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_dis_nomenclature_version, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
break;
case DIS_FIELDTYPE_NOMENCLATURE:
- proto_tree_add_item(tree, hf_dis_nomenclature, tvb, offset, 2, FALSE);
+ proto_tree_add_item(tree, hf_dis_nomenclature, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
break;
case DIS_FIELDTYPE_RADIO_TRANSMIT_STATE:
uintVal = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(tree, hf_dis_radio_transmit_state, tvb, offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_dis_radio_transmit_state, tvb, offset, 1, ENC_BIG_ENDIAN);
*(parserNodes[fieldIndex].outputVar) = (guint32)uintVal;
offset += 1;
break;
case DIS_FIELDTYPE_RADIO_INPUT_SOURCE:
- proto_tree_add_item(tree, hf_dis_radio_input_source, tvb, offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_dis_radio_input_source, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
break;
case DIS_FIELDTYPE_ANTENNA_PATTERN_TYPE:
uintVal = tvb_get_ntohs(tvb, offset);
- proto_tree_add_item(tree, hf_dis_antenna_pattern_type, tvb, offset, 2, FALSE);
+ proto_tree_add_item(tree, hf_dis_antenna_pattern_type, tvb, offset, 2, ENC_BIG_ENDIAN);
*(parserNodes[fieldIndex].outputVar) = (guint32)uintVal;
offset += 2;
break;
case DIS_FIELDTYPE_ANTENNA_PATTERN_LENGTH:
- proto_tree_add_item(tree, hf_dis_antenna_pattern_length, tvb, offset, 2, FALSE);
+ proto_tree_add_item(tree, hf_dis_antenna_pattern_length, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
break;
case DIS_FIELDTYPE_TRANSMIT_FREQUENCY:
- proto_tree_add_item(tree, hf_dis_transmit_frequency, tvb, offset, 8, FALSE);
+ proto_tree_add_item(tree, hf_dis_transmit_frequency, tvb, offset, 8, ENC_BIG_ENDIAN);
offset += 8;
break;
case DIS_FIELDTYPE_SPREAD_SPECTRUM:
@@ -865,84 +865,84 @@ gint parseFields(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode pa
break;
case DIS_FIELDTYPE_MODULATION_MAJOR:
uintVal = tvb_get_ntohs(tvb, offset);
- proto_tree_add_item(tree, hf_dis_modulation_major, tvb, offset, 2, FALSE);
+ proto_tree_add_item(tree, hf_dis_modulation_major, tvb, offset, 2, ENC_BIG_ENDIAN);
*(parserNodes[fieldIndex].outputVar) = (guint32)uintVal;
offset += 2;
break;
case DIS_FIELDTYPE_MODULATION_SYSTEM:
uintVal = tvb_get_ntohs(tvb, offset);
- proto_tree_add_item(tree, hf_dis_modulation_system, tvb, offset, 2, FALSE);
+ proto_tree_add_item(tree, hf_dis_modulation_system, tvb, offset, 2, ENC_BIG_ENDIAN);
*(parserNodes[fieldIndex].outputVar) = (guint32)uintVal;
offset += 2;
break;
case DIS_FIELDTYPE_CRYPTO_SYSTEM:
- proto_tree_add_item(tree, hf_dis_crypto_system, tvb, offset, 2, FALSE);
+ proto_tree_add_item(tree, hf_dis_crypto_system, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
break;
case DIS_FIELDTYPE_CRYPTO_KEY_ID:
- pi = proto_tree_add_item(tree, hf_dis_crypto_key, tvb, offset, 2, FALSE);
+ pi = proto_tree_add_item(tree, hf_dis_crypto_key, tvb, offset, 2, ENC_BIG_ENDIAN);
sub_tree = proto_item_add_subtree(pi, ett_dis_crypto_key);
- proto_tree_add_item(sub_tree, hf_dis_encryption_mode, tvb, offset, 2, FALSE);
- proto_tree_add_item(sub_tree, hf_dis_key_identifier, tvb, offset, 2, FALSE);
+ proto_tree_add_item(sub_tree, hf_dis_encryption_mode, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(sub_tree, hf_dis_key_identifier, tvb, offset, 2, ENC_BIG_ENDIAN);
proto_item_set_end(pi, tvb, offset);
offset += 2;
break;
case DIS_FIELDTYPE_MODULATION_PARAMETER_LENGTH:
uintVal = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(tree, hf_dis_modulation_parameter_length, tvb, offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_dis_modulation_parameter_length, tvb, offset, 1, ENC_BIG_ENDIAN);
*(parserNodes[fieldIndex].outputVar) = (guint32)uintVal;
offset += 1;
break;
case DIS_FIELDTYPE_FH_NETWORK_ID:
- proto_tree_add_item(tree, hf_dis_mod_param_fh_net_id, tvb, offset, 2, FALSE);
+ proto_tree_add_item(tree, hf_dis_mod_param_fh_net_id, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
break;
case DIS_FIELDTYPE_FH_SET_ID:
- proto_tree_add_item(tree, hf_dis_mod_param_fh_set_id, tvb, offset, 2, FALSE);
+ proto_tree_add_item(tree, hf_dis_mod_param_fh_set_id, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
break;
case DIS_FIELDTYPE_LO_SET_ID:
- proto_tree_add_item(tree, hf_dis_mod_param_fh_lo_set_id, tvb, offset, 2, FALSE);
+ proto_tree_add_item(tree, hf_dis_mod_param_fh_lo_set_id, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
break;
case DIS_FIELDTYPE_FH_MSG_START:
- proto_tree_add_item(tree, hf_dis_mod_param_fh_msg_start, tvb, offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_dis_mod_param_fh_msg_start, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
break;
case DIS_FIELDTYPE_RESERVED:
- proto_tree_add_item(tree, hf_dis_mod_param_fh_reserved, tvb, offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_dis_mod_param_fh_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
break;
case DIS_FIELDTYPE_FH_SYNC_TIME_OFFSET:
- proto_tree_add_item(tree, hf_dis_mod_param_fh_sync_time_offset, tvb, offset, 4, FALSE);
+ proto_tree_add_item(tree, hf_dis_mod_param_fh_sync_time_offset, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
break;
case DIS_FIELDTYPE_FH_SECURITY_KEY:
- proto_tree_add_item(tree, hf_dis_mod_param_fh_security_key, tvb, offset, 2, FALSE);
+ proto_tree_add_item(tree, hf_dis_mod_param_fh_security_key, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
break;
case DIS_FIELDTYPE_FH_CLEAR_CHANNEL:
- proto_tree_add_item(tree, hf_dis_mod_param_fh_clear_channel, tvb, offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_dis_mod_param_fh_clear_channel, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
break;
case DIS_FIELDTYPE_TS_ALLOCATION_MODE:
- proto_tree_add_item(tree, hf_dis_mod_param_ts_allocation_mode, tvb, offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_dis_mod_param_ts_allocation_mode, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
break;
case DIS_FIELDTYPE_TRANSMITTER_PRIMARY_MODE:
- proto_tree_add_item(tree, hf_dis_mod_param_transmitter_prim_mode, tvb, offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_dis_mod_param_transmitter_prim_mode, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
break;
case DIS_FIELDTYPE_TRANSMITTER_SECONDARY_MODE:
- proto_tree_add_item(tree, hf_dis_mod_param_transmitter_second_mode, tvb, offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_dis_mod_param_transmitter_second_mode, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
break;
case DIS_FIELDTYPE_JTIDS_SYNC_STATE:
- proto_tree_add_item(tree, hf_dis_mod_param_sync_state, tvb, offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_dis_mod_param_sync_state, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
break;
case DIS_FIELDTYPE_NETWORK_SYNC_ID:
- proto_tree_add_item(tree, hf_dis_mod_param_network_sync_id, tvb, offset, 4, FALSE);
+ proto_tree_add_item(tree, hf_dis_mod_param_network_sync_id, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
break;
case DIS_FIELDTYPE_MODULATION_PARAMETERS:
@@ -968,7 +968,7 @@ gint parseFields(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode pa
}
else { /* just dump what is available */
newtvb = tvb_new_subset(tvb, offset,modulationParamLength, modulationParamLength);
- proto_tree_add_item(tree, hf_dis_mod_param_dump, newtvb, 0, -1, FALSE );
+ proto_tree_add_item(tree, hf_dis_mod_param_dump, newtvb, 0, -1, ENC_NA );
offset += modulationParamLength;
break;
}
@@ -980,7 +980,7 @@ gint parseFields(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode pa
tvb_length_remaining(tvb, offset),
tvb_reported_length_remaining(tvb, offset)
);
- proto_tree_add_item(tree, hf_dis_antenna_pattern_parameter_dump, newtvb, 0, -1, FALSE );
+ proto_tree_add_item(tree, hf_dis_antenna_pattern_parameter_dump, newtvb, 0, -1, ENC_NA );
break;
@@ -1390,7 +1390,7 @@ gint parseFields(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode pa
break;
case DIS_FIELDTYPE_NUM_ELECTROMAGNETIC_EMISSION_SYSTEMS:
uintVal = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(tree, hf_dis_num_electromagnetic_emission_systems, tvb, offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_dis_num_electromagnetic_emission_systems, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
*(parserNodes[fieldIndex].outputVar) = (guint32)uintVal;
break;
diff --git a/epan/dissectors/packet-distcc.c b/epan/dissectors/packet-distcc.c
index 9a0182d5be..c46a85f39e 100644
--- a/epan/dissectors/packet-distcc.c
+++ b/epan/dissectors/packet-distcc.c
@@ -30,10 +30,9 @@
#endif
#include <stdio.h>
-#include <stdlib.h>
-
#include <string.h>
#include <time.h>
+
#include <glib.h>
#include <epan/packet.h>
@@ -61,32 +60,32 @@ static dissector_handle_t data_handle;
static gboolean distcc_desegment = TRUE;
-#define TCP_PORT_DISTCC 3632
+#define TCP_PORT_DISTCC 3632
static guint glb_distcc_tcp_port = TCP_PORT_DISTCC;
extern void proto_reg_handoff_distcc(void);
#define CHECK_PDU_LEN(x) \
- if(parameter>tvb_length_remaining(tvb, offset) || parameter < 1){\
- len=tvb_length_remaining(tvb, offset);\
- col_append_str(pinfo->cinfo, COL_INFO, "[Short" x " PDU]");\
- } \
- tvb_ensure_bytes_exist(tvb, offset, len);
+ if(parameter>tvb_length_remaining(tvb, offset) || parameter < 1){\
+ len=tvb_length_remaining(tvb, offset);\
+ col_append_str(pinfo->cinfo, COL_INFO, "[Short" x " PDU]");\
+ } \
+ tvb_ensure_bytes_exist(tvb, offset, len);
#define DESEGMENT_TCP(x) \
- if(distcc_desegment && pinfo->can_desegment){\
- /* only attempt reassembly if whe have the full segment */\
- if(tvb_length_remaining(tvb, offset)==tvb_reported_length_remaining(tvb, offset)){\
- if(parameter>tvb_length_remaining(tvb, offset)){\
- proto_tree_add_text(tree, tvb, offset-12, -1, "[Short " x " PDU]");\
- pinfo->desegment_offset=offset-12;\
- pinfo->desegment_len=parameter-tvb_length_remaining(tvb, offset);\
- return offset+len;\
- }\
- }\
- }
+ if(distcc_desegment && pinfo->can_desegment){\
+ /* only attempt reassembly if whe have the full segment */\
+ if(tvb_length_remaining(tvb, offset)==tvb_reported_length_remaining(tvb, offset)){\
+ if(parameter>tvb_length_remaining(tvb, offset)){\
+ proto_tree_add_text(tree, tvb, offset-12, -1, "[Short " x " PDU]");\
+ pinfo->desegment_offset=offset-12;\
+ pinfo->desegment_len=parameter-tvb_length_remaining(tvb, offset);\
+ return offset+len;\
+ }\
+ }\
+ }
@@ -95,169 +94,169 @@ extern void proto_reg_handoff_distcc(void);
static int
dissect_distcc_dist(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, guint32 parameter)
{
- proto_tree_add_uint_format(tree, hf_distcc_version, tvb, offset-12, 12, parameter, "DIST: %d", parameter);
+ proto_tree_add_uint_format(tree, hf_distcc_version, tvb, offset-12, 12, parameter, "DIST: %d", parameter);
- col_append_fstr(pinfo->cinfo, COL_INFO, "DIST:%d ", parameter);
+ col_append_fstr(pinfo->cinfo, COL_INFO, "DIST:%d ", parameter);
- return offset;
+ return offset;
}
static int
dissect_distcc_done(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, guint32 parameter)
{
- proto_tree_add_uint_format(tree, hf_distcc_version, tvb, offset-12, 12, parameter, "DONE: %d", parameter);
+ proto_tree_add_uint_format(tree, hf_distcc_version, tvb, offset-12, 12, parameter, "DONE: %d", parameter);
- col_append_fstr(pinfo->cinfo, COL_INFO, "DONE:%d ", parameter);
+ col_append_fstr(pinfo->cinfo, COL_INFO, "DONE:%d ", parameter);
- return offset;
+ return offset;
}
static int
dissect_distcc_stat(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, guint32 parameter)
{
- proto_tree_add_uint_format(tree, hf_distcc_stat, tvb, offset-12, 12, parameter, "STAT: %d", parameter);
+ proto_tree_add_uint_format(tree, hf_distcc_stat, tvb, offset-12, 12, parameter, "STAT: %d", parameter);
- col_append_fstr(pinfo->cinfo, COL_INFO, "STAT:%d ", parameter);
+ col_append_fstr(pinfo->cinfo, COL_INFO, "STAT:%d ", parameter);
- return offset;
+ return offset;
}
static int
dissect_distcc_argc(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint32 parameter)
{
- proto_tree_add_uint_format(tree, hf_distcc_argc, tvb, offset-12, 12, parameter, "ARGC: %d", parameter);
+ proto_tree_add_uint_format(tree, hf_distcc_argc, tvb, offset-12, 12, parameter, "ARGC: %d", parameter);
- col_append_fstr(pinfo->cinfo, COL_INFO, "ARGC:%d ", parameter);
+ col_append_fstr(pinfo->cinfo, COL_INFO, "ARGC:%d ", parameter);
- return offset;
+ return offset;
}
static int
dissect_distcc_argv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gint parameter)
{
- char argv[256];
- int argv_len;
- gint len=parameter;
+ char argv[256];
+ int argv_len;
+ gint len=parameter;
- CHECK_PDU_LEN("ARGV");
+ CHECK_PDU_LEN("ARGV");
- /* see if we need to desegment the PDU */
- DESEGMENT_TCP("ARGV");
+ /* see if we need to desegment the PDU */
+ DESEGMENT_TCP("ARGV");
- argv_len=len>255?255:len;
- tvb_memcpy(tvb, argv, offset, argv_len);
- argv[argv_len]=0;
+ argv_len=len>255?255:len;
+ tvb_memcpy(tvb, argv, offset, argv_len);
+ argv[argv_len]=0;
- proto_tree_add_item(tree, hf_distcc_argv, tvb, offset, len, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(tree, hf_distcc_argv, tvb, offset, len, ENC_ASCII|ENC_NA);
- col_append_fstr(pinfo->cinfo, COL_INFO, "%s ", argv);
+ col_append_fstr(pinfo->cinfo, COL_INFO, "%s ", argv);
- if(len!=parameter){
- proto_tree_add_text(tree, tvb, 0, 0, "[Short ARGV PDU]");
- }
- return offset+len;
+ if(len!=parameter){
+ proto_tree_add_text(tree, tvb, 0, 0, "[Short ARGV PDU]");
+ }
+ return offset+len;
}
static int
dissect_distcc_serr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gint parameter)
{
- char argv[256];
- int argv_len;
- gint len=parameter;
+ char argv[256];
+ int argv_len;
+ gint len=parameter;
- CHECK_PDU_LEN("SERR");
+ CHECK_PDU_LEN("SERR");
- /* see if we need to desegment the PDU */
- DESEGMENT_TCP("SERR");
+ /* see if we need to desegment the PDU */
+ DESEGMENT_TCP("SERR");
- argv_len=len>255?255:len;
- tvb_memcpy(tvb, argv, offset, argv_len);
- argv[argv_len]=0;
+ argv_len=len>255?255:len;
+ tvb_memcpy(tvb, argv, offset, argv_len);
+ argv[argv_len]=0;
- proto_tree_add_item(tree, hf_distcc_serr, tvb, offset, len, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(tree, hf_distcc_serr, tvb, offset, len, ENC_ASCII|ENC_NA);
- col_append_fstr(pinfo->cinfo, COL_INFO, "SERR:%s ", argv);
+ col_append_fstr(pinfo->cinfo, COL_INFO, "SERR:%s ", argv);
- if(len!=parameter){
- proto_tree_add_text(tree, tvb, 0, 0, "[Short SERR PDU]");
- }
- return offset+len;
+ if(len!=parameter){
+ proto_tree_add_text(tree, tvb, 0, 0, "[Short SERR PDU]");
+ }
+ return offset+len;
}
static int
dissect_distcc_sout(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gint parameter)
{
- char argv[256];
- int argv_len;
- gint len=parameter;
+ char argv[256];
+ int argv_len;
+ gint len=parameter;
- CHECK_PDU_LEN("SOUT");
+ CHECK_PDU_LEN("SOUT");
- /* see if we need to desegment the PDU */
- DESEGMENT_TCP("SOUT");
+ /* see if we need to desegment the PDU */
+ DESEGMENT_TCP("SOUT");
- argv_len=len>255?255:len;
- tvb_memcpy(tvb, argv, offset, argv_len);
- argv[argv_len]=0;
+ argv_len=len>255?255:len;
+ tvb_memcpy(tvb, argv, offset, argv_len);
+ argv[argv_len]=0;
- proto_tree_add_item(tree, hf_distcc_sout, tvb, offset, len, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(tree, hf_distcc_sout, tvb, offset, len, ENC_ASCII|ENC_NA);
- col_append_fstr(pinfo->cinfo, COL_INFO, "SOUT:%s ", argv);
+ col_append_fstr(pinfo->cinfo, COL_INFO, "SOUT:%s ", argv);
- if(len!=parameter){
- proto_tree_add_text(tree, tvb, 0, 0, "[Short SOUT PDU]");
- }
- return offset+len;
+ if(len!=parameter){
+ proto_tree_add_text(tree, tvb, 0, 0, "[Short SOUT PDU]");
+ }
+ return offset+len;
}
static int
dissect_distcc_doti(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, gint parameter)
{
- gint len=parameter;
+ gint len=parameter;
- CHECK_PDU_LEN("DOTI");
+ CHECK_PDU_LEN("DOTI");
- /* see if we need to desegment the PDU */
- DESEGMENT_TCP("DOTI");
+ /* see if we need to desegment the PDU */
+ DESEGMENT_TCP("DOTI");
- col_append_str(pinfo->cinfo, COL_INFO, "DOTI source ");
+ col_append_str(pinfo->cinfo, COL_INFO, "DOTI source ");
- proto_tree_add_item(tree, hf_distcc_doti_source, tvb, offset, len, ENC_ASCII|ENC_NA);
- if(len!=parameter){
- proto_tree_add_text(tree, tvb, 0, 0, "[Short DOTI PDU]");
- }
- return offset+len;
+ proto_tree_add_item(tree, hf_distcc_doti_source, tvb, offset, len, ENC_ASCII|ENC_NA);
+ if(len!=parameter){
+ proto_tree_add_text(tree, tvb, 0, 0, "[Short DOTI PDU]");
+ }
+ return offset+len;
}
static int
dissect_distcc_doto(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, gint parameter)
{
- gint len=parameter;
+ gint len=parameter;
- CHECK_PDU_LEN("DOTO");
+ CHECK_PDU_LEN("DOTO");
- /* see if we need to desegment the PDU */
- DESEGMENT_TCP("DOTO");
+ /* see if we need to desegment the PDU */
+ DESEGMENT_TCP("DOTO");
- col_append_str(pinfo->cinfo, COL_INFO, "DOTO object ");
+ col_append_str(pinfo->cinfo, COL_INFO, "DOTO object ");
- proto_tree_add_item(tree, hf_distcc_doto_object, tvb, offset, len, ENC_NA);
- if(len!=parameter){
- proto_tree_add_text(tree, tvb, 0, 0, "[Short DOTO PDU]");
- }
- return offset+len;
+ proto_tree_add_item(tree, hf_distcc_doto_object, tvb, offset, len, ENC_NA);
+ if(len!=parameter){
+ proto_tree_add_text(tree, tvb, 0, 0, "[Short DOTO PDU]");
+ }
+ return offset+len;
}
@@ -266,62 +265,62 @@ dissect_distcc_doto(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int off
static void
dissect_distcc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
{
- int offset=0;
- proto_tree *tree=NULL;
- proto_item *item=NULL;
- char token[4];
- guint32 parameter;
-
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "DISTCC ");
-
- col_clear(pinfo->cinfo, COL_INFO);
-
- if (parent_tree) {
- item = proto_tree_add_item(parent_tree, proto_distcc, tvb, offset,
- -1, ENC_NA);
- tree = proto_item_add_subtree(item, ett_distcc);
- }
-
- while(1){
- /* we must have at least 12 bytes so we can read the
- token and the parameter */
- if(tvb_length_remaining(tvb, offset)<12){
- return;
- }
-
- /* read the token */
- tvb_memcpy(tvb, token, offset, 4);
- offset+=4;
-
- /* read the parameter */
- if (sscanf(tvb_get_ptr(tvb, offset, 8), "%08x", &parameter) != 1)
- return;
- offset+=8;
-
- if(!strncmp(token, "DIST", 4)){
- offset=dissect_distcc_dist(tvb, pinfo, tree, offset, parameter);
- } else if(!strncmp(token, "ARGC", 4)){
- offset=dissect_distcc_argc(tvb, pinfo, tree, offset, parameter);
- } else if(!strncmp(token, "ARGV", 4)){
- offset=dissect_distcc_argv(tvb, pinfo, tree, offset, parameter);
- } else if(!strncmp(token, "DOTI", 4)){
- offset=dissect_distcc_doti(tvb, pinfo, tree, offset, parameter);
- } else if(!strncmp(token, "DONE", 4)){
- offset=dissect_distcc_done(tvb, pinfo, tree, offset, parameter);
- } else if(!strncmp(token, "STAT", 4)){
- offset=dissect_distcc_stat(tvb, pinfo, tree, offset, parameter);
- } else if(!strncmp(token, "SERR", 4)){
- offset=dissect_distcc_serr(tvb, pinfo, tree, offset, parameter);
- } else if(!strncmp(token, "SOUT", 4)){
- offset=dissect_distcc_sout(tvb, pinfo, tree, offset, parameter);
- } else if(!strncmp(token, "DOTO", 4)){
- offset=dissect_distcc_doto(tvb, pinfo, tree, offset, parameter);
- } else {
- call_dissector(data_handle, tvb, pinfo, tree);
- return;
- }
- }
+ int offset=0;
+ proto_tree *tree=NULL;
+ proto_item *item=NULL;
+ char token[4];
+ guint32 parameter;
+
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "DISTCC ");
+
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, proto_distcc, tvb, offset,
+ -1, ENC_NA);
+ tree = proto_item_add_subtree(item, ett_distcc);
+ }
+
+ while(1){
+ /* we must have at least 12 bytes so we can read the
+ token and the parameter */
+ if(tvb_length_remaining(tvb, offset)<12){
+ return;
+ }
+
+ /* read the token */
+ tvb_memcpy(tvb, token, offset, 4);
+ offset+=4;
+
+ /* read the parameter */
+ if (sscanf(tvb_get_ptr(tvb, offset, 8), "%08x", &parameter) != 1)
+ return;
+ offset+=8;
+
+ if(!strncmp(token, "DIST", 4)){
+ offset=dissect_distcc_dist(tvb, pinfo, tree, offset, parameter);
+ } else if(!strncmp(token, "ARGC", 4)){
+ offset=dissect_distcc_argc(tvb, pinfo, tree, offset, parameter);
+ } else if(!strncmp(token, "ARGV", 4)){
+ offset=dissect_distcc_argv(tvb, pinfo, tree, offset, parameter);
+ } else if(!strncmp(token, "DOTI", 4)){
+ offset=dissect_distcc_doti(tvb, pinfo, tree, offset, parameter);
+ } else if(!strncmp(token, "DONE", 4)){
+ offset=dissect_distcc_done(tvb, pinfo, tree, offset, parameter);
+ } else if(!strncmp(token, "STAT", 4)){
+ offset=dissect_distcc_stat(tvb, pinfo, tree, offset, parameter);
+ } else if(!strncmp(token, "SERR", 4)){
+ offset=dissect_distcc_serr(tvb, pinfo, tree, offset, parameter);
+ } else if(!strncmp(token, "SOUT", 4)){
+ offset=dissect_distcc_sout(tvb, pinfo, tree, offset, parameter);
+ } else if(!strncmp(token, "DOTO", 4)){
+ offset=dissect_distcc_doto(tvb, pinfo, tree, offset, parameter);
+ } else {
+ call_dissector(data_handle, tvb, pinfo, tree);
+ return;
+ }
+ }
}
@@ -331,90 +330,90 @@ void
proto_register_distcc(void)
{
static hf_register_info hf[] = {
- {&hf_distcc_version,
- {"DISTCC Version", "distcc.version",
- FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
- },
- {&hf_distcc_argc,
- {"ARGC", "distcc.argc",
- FT_UINT32, BASE_DEC, NULL, 0x0, "Number of arguments", HFILL }
- },
- {&hf_distcc_argv,
- {"ARGV", "distcc.argv",
- FT_STRING, BASE_NONE, NULL, 0x0, "ARGV argument", HFILL }
- },
- {&hf_distcc_doti_source,
- {"Source", "distcc.doti_source",
- FT_STRING, BASE_NONE, NULL, 0x0, "DOTI Preprocessed Source File (.i)", HFILL }
- },
- {&hf_distcc_stat,
- {"Status", "distcc.status",
- FT_UINT32, BASE_DEC, NULL, 0x0, "Unix wait status for command completion", HFILL }
- },
- {&hf_distcc_serr,
- {"SERR", "distcc.serr",
- FT_STRING, BASE_NONE, NULL, 0x0, "STDERR output", HFILL }
- },
- {&hf_distcc_sout,
- {"SOUT", "distcc.sout",
- FT_STRING, BASE_NONE, NULL, 0x0, "STDOUT output", HFILL }
- },
- {&hf_distcc_doto_object,
- {"Object", "distcc.doto_object",
- FT_BYTES, BASE_NONE, NULL, 0x0, "DOTO Compiled object file (.o)", HFILL }
- }
-
- };
-
- static gint *ett[] = {
- &ett_distcc,
- };
-
- module_t *distcc_module;
-
- proto_distcc = proto_register_protocol("Distcc Distributed Compiler",
- "DISTCC", "distcc");
- proto_register_field_array(proto_distcc, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
-
- distcc_module = prefs_register_protocol(proto_distcc,
- proto_reg_handoff_distcc);
- prefs_register_uint_preference(distcc_module, "tcp.port",
- "DISTCC TCP Port",
- "Set the TCP port for DISTCC messages",
- 10,
- &glb_distcc_tcp_port);
- prefs_register_bool_preference(distcc_module, "desegment_distcc_over_tcp",
+ {&hf_distcc_version,
+ {"DISTCC Version", "distcc.version",
+ FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
+ },
+ {&hf_distcc_argc,
+ {"ARGC", "distcc.argc",
+ FT_UINT32, BASE_DEC, NULL, 0x0, "Number of arguments", HFILL }
+ },
+ {&hf_distcc_argv,
+ {"ARGV", "distcc.argv",
+ FT_STRING, BASE_NONE, NULL, 0x0, "ARGV argument", HFILL }
+ },
+ {&hf_distcc_doti_source,
+ {"Source", "distcc.doti_source",
+ FT_STRING, BASE_NONE, NULL, 0x0, "DOTI Preprocessed Source File (.i)", HFILL }
+ },
+ {&hf_distcc_stat,
+ {"Status", "distcc.status",
+ FT_UINT32, BASE_DEC, NULL, 0x0, "Unix wait status for command completion", HFILL }
+ },
+ {&hf_distcc_serr,
+ {"SERR", "distcc.serr",
+ FT_STRING, BASE_NONE, NULL, 0x0, "STDERR output", HFILL }
+ },
+ {&hf_distcc_sout,
+ {"SOUT", "distcc.sout",
+ FT_STRING, BASE_NONE, NULL, 0x0, "STDOUT output", HFILL }
+ },
+ {&hf_distcc_doto_object,
+ {"Object", "distcc.doto_object",
+ FT_BYTES, BASE_NONE, NULL, 0x0, "DOTO Compiled object file (.o)", HFILL }
+ }
+
+ };
+
+ static gint *ett[] = {
+ &ett_distcc,
+ };
+
+ module_t *distcc_module;
+
+ proto_distcc = proto_register_protocol("Distcc Distributed Compiler",
+ "DISTCC", "distcc");
+ proto_register_field_array(proto_distcc, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ distcc_module = prefs_register_protocol(proto_distcc,
+ proto_reg_handoff_distcc);
+ prefs_register_uint_preference(distcc_module, "tcp.port",
+ "DISTCC TCP Port",
+ "Set the TCP port for DISTCC messages",
+ 10,
+ &glb_distcc_tcp_port);
+ prefs_register_bool_preference(distcc_module, "desegment_distcc_over_tcp",
"Reassemble DISTCC-over-TCP messages\nspanning multiple TCP segments",
- "Whether the DISTCC dissector should reassemble messages spanning multiple TCP segments."
- " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
- &distcc_desegment);
+ "Whether the DISTCC dissector should reassemble messages spanning multiple TCP segments."
+ " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
+ &distcc_desegment);
}
void
proto_reg_handoff_distcc(void)
{
- static gboolean registered_dissector = FALSE;
- static int distcc_tcp_port;
- static dissector_handle_t distcc_handle;
-
- if (!registered_dissector) {
- /*
- * We haven't registered the dissector yet; get a handle
- * for it.
- */
- distcc_handle = create_dissector_handle(dissect_distcc,
- proto_distcc);
- data_handle = find_dissector("data");
- registered_dissector = TRUE;
- } else {
- /*
- * We've registered the dissector with a TCP port number
- * of "distcc_tcp_port"; we might be changing the TCP port
- * number, so remove that registration.
- */
- dissector_delete_uint("tcp.port", distcc_tcp_port, distcc_handle);
- }
- distcc_tcp_port = glb_distcc_tcp_port;
- dissector_add_uint("tcp.port", distcc_tcp_port, distcc_handle);
+ static gboolean registered_dissector = FALSE;
+ static int distcc_tcp_port;
+ static dissector_handle_t distcc_handle;
+
+ if (!registered_dissector) {
+ /*
+ * We haven't registered the dissector yet; get a handle
+ * for it.
+ */
+ distcc_handle = create_dissector_handle(dissect_distcc,
+ proto_distcc);
+ data_handle = find_dissector("data");
+ registered_dissector = TRUE;
+ } else {
+ /*
+ * We've registered the dissector with a TCP port number
+ * of "distcc_tcp_port"; we might be changing the TCP port
+ * number, so remove that registration.
+ */
+ dissector_delete_uint("tcp.port", distcc_tcp_port, distcc_handle);
+ }
+ distcc_tcp_port = glb_distcc_tcp_port;
+ dissector_add_uint("tcp.port", distcc_tcp_port, distcc_handle);
}
diff --git a/epan/dissectors/packet-dlm3.c b/epan/dissectors/packet-dlm3.c
index b8fda239a2..b2f39e3d31 100644
--- a/epan/dissectors/packet-dlm3.c
+++ b/epan/dissectors/packet-dlm3.c
@@ -1133,7 +1133,7 @@ proto_register_dlm3(void)
DLM3_REGISTER_HF_EXFLAGS(rf_lsflags, "rf.lsflags"),
{ &hf_dlm3_rf_unused,
- { "Unsed area", "dlm3.rf.lsflags.unused",
+ { "Unused area", "dlm3.rf.lsflags.unused",
FT_UINT64, BASE_HEX, NULL, 0x0,
NULL, HFILL}},
diff --git a/epan/dissectors/packet-dlsw.c b/epan/dissectors/packet-dlsw.c
index 7e61d1c92e..807e542eef 100644
--- a/epan/dissectors/packet-dlsw.c
+++ b/epan/dissectors/packet-dlsw.c
@@ -69,147 +69,147 @@ static gint ett_dlsw_vector = -1;
#define TEST_CIRCUIT_RSP 0x7B
static const value_string dlsw_type_vals[] = {
- { CANUREACH , "Can U Reach Station-circuit start" },
- { ICANREACH , "I Can Reach Station-circuit start" },
- { REACH_ACK , "Reach Acknowledgment" },
- { DGRMFRAME , "Datagram Frame" },
- { XIDFRAME , "XID Frame" },
- { CONTACT , "Contact Remote Station" },
- { CONTACTED , "Remote Station Contacted" },
- { RESTART_DL , "Restart Data Link" },
- { DL_RESTARTED , "Data Link Restarted" },
- { ENTER_BUSY , "Enter Busy" },
- { EXIT_BUSY , "Exit Busy" },
- { INFOFRAME , "Information (I) Frame" },
- { HALT_DL , "Halt Data Link" },
- { DL_HALTED , "Data Link Halted" },
- { NETBIOS_NQ , "NETBIOS Name Query-circuit setup" },
- { NETBIOS_NR , "NETBIOS Name Recog-circuit setup" },
- { DATAFRAME , "Data Frame" },
- { HALT_DL_NOACK , "Halt Data Link with no Ack" },
- { NETBIOS_ANQ , "NETBIOS Add Name Query" },
- { NETBIOS_ANR , "NETBIOS Add Name Response" },
- { KEEPALIVE , "Transport Keepalive Message" },
- { CAP_EXCHANGE , "Capabilities Exchange" },
- { IFCM , "Independent Flow Control Message" },
- { TEST_CIRCUIT_REQ , "Test Circuit Request" },
- { TEST_CIRCUIT_RSP , "Test Circuit Response" },
- { 0 , NULL }
+ { CANUREACH , "Can U Reach Station-circuit start" },
+ { ICANREACH , "I Can Reach Station-circuit start" },
+ { REACH_ACK , "Reach Acknowledgment" },
+ { DGRMFRAME , "Datagram Frame" },
+ { XIDFRAME , "XID Frame" },
+ { CONTACT , "Contact Remote Station" },
+ { CONTACTED , "Remote Station Contacted" },
+ { RESTART_DL , "Restart Data Link" },
+ { DL_RESTARTED , "Data Link Restarted" },
+ { ENTER_BUSY , "Enter Busy" },
+ { EXIT_BUSY , "Exit Busy" },
+ { INFOFRAME , "Information (I) Frame" },
+ { HALT_DL , "Halt Data Link" },
+ { DL_HALTED , "Data Link Halted" },
+ { NETBIOS_NQ , "NETBIOS Name Query-circuit setup" },
+ { NETBIOS_NR , "NETBIOS Name Recog-circuit setup" },
+ { DATAFRAME , "Data Frame" },
+ { HALT_DL_NOACK , "Halt Data Link with no Ack" },
+ { NETBIOS_ANQ , "NETBIOS Add Name Query" },
+ { NETBIOS_ANR , "NETBIOS Add Name Response" },
+ { KEEPALIVE , "Transport Keepalive Message" },
+ { CAP_EXCHANGE , "Capabilities Exchange" },
+ { IFCM , "Independent Flow Control Message" },
+ { TEST_CIRCUIT_REQ , "Test Circuit Request" },
+ { TEST_CIRCUIT_RSP , "Test Circuit Response" },
+ { 0 , NULL }
};
static const value_string dlsw_version_vals[] = {
- { 0x31 , "Version 1 (RFC 1795)" },
- { 0x32 , "Version 2 (RFC 2166)" },
- { 0x33 , "Vendor Specific" },
- { 0x34 , "Vendor Specific" },
- { 0x35 , "Vendor Specific" },
- { 0x36 , "Vendor Specific" },
- { 0x37 , "Vendor Specific" },
- { 0x38 , "Vendor Specific" },
- { 0x39 , "Vendor Specific" },
- { 0x3A , "Vendor Specific" },
- { 0x3B , "Vendor Specific" },
- { 0x3C , "Vendor Specific" },
- { 0x3D , "Vendor Specific" },
- { 0x3E , "Vendor Specific" },
- { 0x3F , "Vendor Specific" },
- { 0x4B , "Pre 1 (RFC 1434)" },
- { 0x00 , NULL }
+ { 0x31 , "Version 1 (RFC 1795)" },
+ { 0x32 , "Version 2 (RFC 2166)" },
+ { 0x33 , "Vendor Specific" },
+ { 0x34 , "Vendor Specific" },
+ { 0x35 , "Vendor Specific" },
+ { 0x36 , "Vendor Specific" },
+ { 0x37 , "Vendor Specific" },
+ { 0x38 , "Vendor Specific" },
+ { 0x39 , "Vendor Specific" },
+ { 0x3A , "Vendor Specific" },
+ { 0x3B , "Vendor Specific" },
+ { 0x3C , "Vendor Specific" },
+ { 0x3D , "Vendor Specific" },
+ { 0x3E , "Vendor Specific" },
+ { 0x3F , "Vendor Specific" },
+ { 0x4B , "Pre 1 (RFC 1434)" },
+ { 0x00 , NULL }
};
static const value_string dlsw_fc_cmd_vals[] = {
- { 0x00 , "Repeat Window" },
- { 0x01 , "Increment Window" },
- { 0x02 , "Decrement Window" },
- { 0x03 , "Reset Window" },
- { 0x04 , "Halve Window" },
- { 0x00 , NULL }
+ { 0x00 , "Repeat Window" },
+ { 0x01 , "Increment Window" },
+ { 0x02 , "Decrement Window" },
+ { 0x03 , "Reset Window" },
+ { 0x04 , "Halve Window" },
+ { 0x00 , NULL }
};
static const value_string dlsw_capex_type_vals[] = {
- { 0x01 , "Capabilities request" },
- { 0x02 , "Capabilities response" },
- { 0x00 , NULL }
+ { 0x01 , "Capabilities request" },
+ { 0x02 , "Capabilities response" },
+ { 0x00 , NULL }
};
static const value_string dlsw_frame_direction_vals[] = {
- { 0x01 , "Origin DLSw to target DLSw" },
- { 0x02 , "Target DLSw to origin DLSw" },
- { 0x00 , NULL }
+ { 0x01 , "Origin DLSw to target DLSw" },
+ { 0x02 , "Target DLSw to origin DLSw" },
+ { 0x00 , NULL }
};
static const value_string dlsw_vector_vals[] = {
- { 0x81 , "Vendor ID Control Vector" },
- { 0x82 , "DLSw Version Control Vector" },
- { 0x83 , "Initial Pacing Window Control Vector" },
- { 0x84 , "Version String Control Vector" },
- { 0x85 , "Mac Address Exclusivity Control Vector" },
- { 0x86 , "Supported SAP List Control Vector" },
- { 0x87 , "TCP Connections Control Vector" },
- { 0x88 , "NetBIOS Name Exclusivity Control Vector" },
- { 0x89 , "MAC Address List Control Vector" },
- { 0x8a , "NetBIOS Name List Control Vector" },
- { 0x8b , "Vendor Context Control Vector" },
- { 0x8c , "Multicast Capabilities Control Vector" },
- { 0x8d , "Reserved for future use" },
- { 0x8e , "Reserved for future use" },
- { 0x8f , "Reserved for future use" },
- { 0x90 , "Reserved for future use" },
- { 0x91 , " Control Vector" },
- { 0x92 , " Control Vector" },
- { 0x93 , " Control Vector" },
- { 0x94 , " Control Vector" },
- { 0x95 , " Control Vector" },
- { 0x96 , " Control Vector" },
- { 0x00 , NULL }
+ { 0x81 , "Vendor ID Control Vector" },
+ { 0x82 , "DLSw Version Control Vector" },
+ { 0x83 , "Initial Pacing Window Control Vector" },
+ { 0x84 , "Version String Control Vector" },
+ { 0x85 , "Mac Address Exclusivity Control Vector" },
+ { 0x86 , "Supported SAP List Control Vector" },
+ { 0x87 , "TCP Connections Control Vector" },
+ { 0x88 , "NetBIOS Name Exclusivity Control Vector" },
+ { 0x89 , "MAC Address List Control Vector" },
+ { 0x8a , "NetBIOS Name List Control Vector" },
+ { 0x8b , "Vendor Context Control Vector" },
+ { 0x8c , "Multicast Capabilities Control Vector" },
+ { 0x8d , "Reserved for future use" },
+ { 0x8e , "Reserved for future use" },
+ { 0x8f , "Reserved for future use" },
+ { 0x90 , "Reserved for future use" },
+ { 0x91 , " Control Vector" },
+ { 0x92 , " Control Vector" },
+ { 0x93 , " Control Vector" },
+ { 0x94 , " Control Vector" },
+ { 0x95 , " Control Vector" },
+ { 0x96 , " Control Vector" },
+ { 0x00 , NULL }
};
static const value_string dlsw_pri_vals[] = {
- { 0 , "Unsupported" },
- { 1 , "Low Priority" },
- { 2 , "Medium Priority" },
- { 3 , "High Priority" },
- { 4 , "Highest Priority" },
- { 5 , "Reserved" },
- { 6 , "Reserved" },
- { 7 , "Reserved" },
- { 0, NULL }
+ { 0 , "Unsupported" },
+ { 1 , "Low Priority" },
+ { 2 , "Medium Priority" },
+ { 3 , "High Priority" },
+ { 4 , "Highest Priority" },
+ { 5 , "Reserved" },
+ { 6 , "Reserved" },
+ { 7 , "Reserved" },
+ { 0, NULL }
};
-#define DLSW_GDSID_SEND 0x1520
-#define DLSW_GDSID_ACK 0x1521
-#define DLSW_GDSID_REF 0x1522
+#define DLSW_GDSID_SEND 0x1520
+#define DLSW_GDSID_ACK 0x1521
+#define DLSW_GDSID_REF 0x1522
static const value_string dlsw_gds_vals[] = {
- { DLSW_GDSID_SEND , "Request Capabilities GDS" },
- { DLSW_GDSID_ACK , "Response Capabilities GDS" },
- { DLSW_GDSID_REF , "Refuse Capabilities GDS" },
- { 0 , NULL }
+ { DLSW_GDSID_SEND , "Request Capabilities GDS" },
+ { DLSW_GDSID_ACK , "Response Capabilities GDS" },
+ { DLSW_GDSID_REF , "Refuse Capabilities GDS" },
+ { 0 , NULL }
};
static const value_string dlsw_refuse_vals[] = {
- { 0x1 , "invalid GDS length for a DLWs Capabilities Exchange Request"},
- { 0x2 , "invalid GDS id for a DLSw Capabilities Exchange Request"},
- { 0x3 , "vendor Id control vector is missing"},
- { 0x4 , "DLSw Version control vector is missing"},
- { 0x5 , "initial Pacing Window control vector is missing"},
- { 0x6 , "length of control vectors doesn't correlate to the length of the GDS variable"},
- { 0x7 , "invalid control vector id"},
- { 0x8 , "length of control vector invalid"},
- { 0x9 , "invalid control vector data value"},
- { 0xa , "duplicate control vector"},
- { 0xb , "out-of-sequence control vector"},
- { 0xc , "DLSw Supported SAP List control vector is missing"},
- { 0xd , "inconsistent DLSw Version, Multicast Capabilities, and TCP Connections CV received on the inbound Capabilities exchange"},
- { 0x0 , NULL }
+ { 0x1 , "invalid GDS length for a DLWs Capabilities Exchange Request"},
+ { 0x2 , "invalid GDS id for a DLSw Capabilities Exchange Request"},
+ { 0x3 , "vendor Id control vector is missing"},
+ { 0x4 , "DLSw Version control vector is missing"},
+ { 0x5 , "initial Pacing Window control vector is missing"},
+ { 0x6 , "length of control vectors doesn't correlate to the length of the GDS variable"},
+ { 0x7 , "invalid control vector id"},
+ { 0x8 , "length of control vector invalid"},
+ { 0x9 , "invalid control vector data value"},
+ { 0xa , "duplicate control vector"},
+ { 0xb , "out-of-sequence control vector"},
+ { 0xc , "DLSw Supported SAP List control vector is missing"},
+ { 0xd , "inconsistent DLSw Version, Multicast Capabilities, and TCP Connections CV received on the inbound Capabilities exchange"},
+ { 0x0 , NULL }
};
-#define UDP_PORT_DLSW 2067
-#define TCP_PORT_DLSW 2065
-#define DLSW_INFO_HEADER 16
-#define DLSW_CMD_HEADER 72
+#define UDP_PORT_DLSW 2067
+#define TCP_PORT_DLSW 2065
+#define DLSW_INFO_HEADER 16
+#define DLSW_CMD_HEADER 72
static void
dissect_dlsw_capex(tvbuff_t *tvb, proto_tree *tree, proto_tree *ti);
@@ -217,126 +217,127 @@ dissect_dlsw_capex(tvbuff_t *tvb, proto_tree *tree, proto_tree *ti);
static void
dissect_dlsw_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- guint version,hlen = 0,mlen = 0,mtype,dlchlen = 0,direction,flags;
- proto_tree *dlsw_tree = NULL, *ti,*ti2, *dlsw_header_tree = NULL;
- proto_tree *dlsw_flags_tree,*dlsw_data_tree;
+ guint version,hlen = 0,mlen = 0,mtype,dlchlen = 0,direction,flags;
+ proto_tree *dlsw_tree = NULL, *ti,*ti2, *dlsw_header_tree = NULL;
+ proto_tree *dlsw_flags_tree,*dlsw_data_tree;
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "DLSw");
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "DLSw");
- version=tvb_get_guint8(tvb,0);
+ version=tvb_get_guint8(tvb,0);
- col_add_fstr(pinfo->cinfo, COL_INFO, "DLSw %s",val_to_str(version , dlsw_version_vals, "Unknown Version"));
+ col_add_fstr(pinfo->cinfo, COL_INFO, "DLSw %s",val_to_str_const(version , dlsw_version_vals, "Unknown Version"));
- if (tree)
- {
- ti = proto_tree_add_item(tree, proto_dlsw, tvb, 0, -1, ENC_NA);
- dlsw_tree = proto_item_add_subtree(ti, ett_dlsw);
-
- hlen=tvb_get_guint8(tvb,1);
-
- ti2 = proto_tree_add_text (dlsw_tree, tvb, 0, hlen,"DLSw header, %s",
- val_to_str(version , dlsw_version_vals, "Unknown Version"));
-
- dlsw_header_tree = proto_item_add_subtree(ti2, ett_dlsw_header);
- proto_tree_add_text (dlsw_header_tree,tvb,0 ,1,"Version = %s",
- val_to_str(version , dlsw_version_vals, "Unknown Version, dissection may be inaccurate"));
- proto_tree_add_text (dlsw_header_tree,tvb,1 ,1,"Header Length = %u",hlen) ;
- mlen=tvb_get_ntohs(tvb,2);
- proto_tree_add_text (dlsw_header_tree,tvb,2 ,2,"Message Length = %u",mlen);
- proto_tree_add_text (dlsw_header_tree,tvb,4 ,4,"Remote DLC = %u",tvb_get_ntohl(tvb,4)) ;
- proto_tree_add_text (dlsw_header_tree,tvb,8 ,4,"Remote DLC PID = %u",tvb_get_ntohl(tvb,8)) ;
- proto_tree_add_text (dlsw_header_tree,tvb,12,2,"Reserved") ;
+ if (tree)
+ {
+ ti = proto_tree_add_item(tree, proto_dlsw, tvb, 0, -1, ENC_NA);
+ dlsw_tree = proto_item_add_subtree(ti, ett_dlsw);
+
+ hlen=tvb_get_guint8(tvb,1);
+
+ ti2 = proto_tree_add_text (dlsw_tree, tvb, 0, hlen,"DLSw header, %s",
+ val_to_str_const(version , dlsw_version_vals, "Unknown Version"));
+
+ dlsw_header_tree = proto_item_add_subtree(ti2, ett_dlsw_header);
+ proto_tree_add_text (dlsw_header_tree,tvb,0 ,1,"Version = %s",
+ val_to_str_const(version , dlsw_version_vals, "Unknown Version, dissection may be inaccurate"));
+ proto_tree_add_text (dlsw_header_tree,tvb,1 ,1,"Header Length = %u",hlen) ;
+ mlen=tvb_get_ntohs(tvb,2);
+ proto_tree_add_text (dlsw_header_tree,tvb,2 ,2,"Message Length = %u",mlen);
+ proto_tree_add_text (dlsw_header_tree,tvb,4 ,4,"Remote DLC = %u",tvb_get_ntohl(tvb,4)) ;
+ proto_tree_add_text (dlsw_header_tree,tvb,8 ,4,"Remote DLC PID = %u",tvb_get_ntohl(tvb,8)) ;
+ proto_tree_add_text (dlsw_header_tree,tvb,12,2,"Reserved") ;
} ;
mtype=tvb_get_guint8(tvb,14);
- col_append_fstr(pinfo->cinfo, COL_INFO, ", %s",val_to_str(mtype , dlsw_type_vals, "Unknown message Type"));
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", %s",val_to_str_const(mtype , dlsw_type_vals, "Unknown message Type"));
if (tree)
{
- proto_tree_add_text (dlsw_header_tree,tvb,14,1,"Message Type = %s (0x%02x)",
- val_to_str(mtype , dlsw_type_vals, "Unknown Type"),mtype);
- if (mtype==CAP_EXCHANGE)
+ proto_tree_add_text (dlsw_header_tree,tvb,14,1,"Message Type = %s (0x%02x)",
+ val_to_str_const(mtype , dlsw_type_vals, "Unknown Type"),mtype);
+ if (mtype==CAP_EXCHANGE)
{
- proto_tree_add_text (dlsw_header_tree,tvb, 15,1,"Not used for CapEx") ;
+ proto_tree_add_text (dlsw_header_tree,tvb, 15,1,"Not used for CapEx") ;
}
- else
+ else
{
- flags = tvb_get_guint8(tvb,15);
- ti2 = proto_tree_add_text (dlsw_header_tree, tvb, 15,1,"Flow ctrl byte = 0x%02x",flags);
- dlsw_flags_tree = proto_item_add_subtree(ti2, ett_dlsw_fc);
- proto_tree_add_text (dlsw_flags_tree, tvb, 15, 1, "%s",
- decode_boolean_bitfield(flags, 0x80, 8,
- "Flow Control Indication: yes",
- "Flow Control Indication: no"));
- if (flags & 0x80)
- {
- proto_tree_add_text (dlsw_flags_tree, tvb, 15, 1, "%s",
- decode_boolean_bitfield(flags, 0x40, 8,
- "Flow Control Acknowledgment: yes",
- "Flow Control Acknowledgment: no"));
- proto_tree_add_text (dlsw_flags_tree, tvb, 15, 1, "%s",
- decode_enumerated_bitfield(flags, 0x07, 8,
- dlsw_fc_cmd_vals, "Flow Control Operator: %s"));
- }
+ flags = tvb_get_guint8(tvb,15);
+ ti2 = proto_tree_add_text (dlsw_header_tree, tvb, 15,1,"Flow ctrl byte = 0x%02x",flags);
+ dlsw_flags_tree = proto_item_add_subtree(ti2, ett_dlsw_fc);
+ proto_tree_add_text (dlsw_flags_tree, tvb, 15, 1, "%s",
+ decode_boolean_bitfield(flags, 0x80, 8,
+ "Flow Control Indication: yes",
+ "Flow Control Indication: no"));
+ if (flags & 0x80)
+ {
+ proto_tree_add_text (dlsw_flags_tree, tvb, 15, 1, "%s",
+ decode_boolean_bitfield(flags, 0x40, 8,
+ "Flow Control Acknowledgment: yes",
+ "Flow Control Acknowledgment: no"));
+ proto_tree_add_text (dlsw_flags_tree, tvb, 15, 1, "%s",
+ decode_enumerated_bitfield(flags, 0x07, 8,
+ dlsw_fc_cmd_vals,
+ "Flow Control Operator: %s"));
+ }
}
- if (hlen != DLSW_INFO_HEADER)
+ if (hlen != DLSW_INFO_HEADER)
{
- if (mtype==CAP_EXCHANGE)
- {
- proto_tree_add_text (dlsw_header_tree,tvb, 16,1,"Protocol ID = 0x%02x",tvb_get_guint8(tvb,16)) ;
- proto_tree_add_text (dlsw_header_tree,tvb, 17,1,"Header Number = 0x%02x",tvb_get_guint8(tvb,17)) ;
- proto_tree_add_text (dlsw_header_tree,tvb, 18,5,"Not used for CapEx") ;
- proto_tree_add_text (dlsw_header_tree,tvb, 23,1,"Old message type = %s (0x%02x)",
- val_to_str(tvb_get_guint8(tvb,23) , dlsw_type_vals, "Unknown Type"),
- tvb_get_guint8(tvb,23));
- direction=tvb_get_guint8(tvb,38);
- proto_tree_add_text (dlsw_header_tree,tvb, 24,14,"Not used for CapEx") ;
- proto_tree_add_text (dlsw_header_tree,tvb, 38,1,"Frame direction = %s (0x%02x)",
- val_to_str(direction , dlsw_capex_type_vals, "Unknown Direction"),
- direction);
- proto_tree_add_text (dlsw_header_tree,tvb, 39,33,"Not used for CapEx") ;
- }
- else
- {
- proto_tree_add_text (dlsw_header_tree,tvb, 16,1,"Protocol ID = 0x%02x",tvb_get_guint8(tvb,16)) ;
- proto_tree_add_text (dlsw_header_tree,tvb, 17,1,"Header Number = 0x%02x",tvb_get_guint8(tvb,17)) ;
- proto_tree_add_text (dlsw_header_tree,tvb, 18,2,"Reserved") ;
- proto_tree_add_text (dlsw_header_tree,tvb, 20,1,"Largest Frame size = %u",tvb_get_guint8(tvb,20)) ;
- flags = tvb_get_guint8(tvb,21);
- ti2 = proto_tree_add_text (dlsw_header_tree,tvb, 21,1,"SSP Flags = 0x%02x",flags) ;
- dlsw_flags_tree = proto_item_add_subtree(ti2, ett_dlsw_sspflags);
- proto_tree_add_text (dlsw_flags_tree, tvb, 21, 1, "%s",
- decode_boolean_bitfield(flags, 0x80, 8,
- "Explorer message: yes",
- "Explorer message: no"));
- proto_tree_add_text (dlsw_header_tree,tvb, 22,1,"Circuit priority = %s",
- val_to_str((tvb_get_guint8(tvb,22)&7),dlsw_pri_vals, "Unknown (%d)")) ;
- proto_tree_add_text (dlsw_header_tree,tvb, 23,1,"Old message type = %s (0x%02x)",
- val_to_str(tvb_get_guint8(tvb,23) , dlsw_type_vals, "Unknown Type"),
- tvb_get_guint8(tvb,23));
- proto_tree_add_text (dlsw_header_tree,tvb, 24,6,"Target MAC Address = %s",tvb_bytes_to_str(tvb,24,6)) ;
- proto_tree_add_text (dlsw_header_tree,tvb, 30,6,"Origin MAC Address = %s",tvb_bytes_to_str(tvb,30,6)) ;
- proto_tree_add_text (dlsw_header_tree,tvb, 36,1,"Origin Link SAP = 0x%02x",tvb_get_guint8(tvb,36)) ;
- proto_tree_add_text (dlsw_header_tree,tvb, 37,1,"Target Link SAP = 0x%02x",tvb_get_guint8(tvb,37)) ;
- direction=tvb_get_guint8(tvb,38);
- proto_tree_add_text (dlsw_header_tree,tvb, 38,1,"Frame direction = %s (0x%02x)",
- val_to_str(direction , dlsw_frame_direction_vals, "Unknown Direction"),
- direction);
- proto_tree_add_text (dlsw_header_tree,tvb, 39,3,"Reserved") ;
- dlchlen=tvb_get_ntohs(tvb,42);
- if ( dlchlen > mlen )
+ if (mtype==CAP_EXCHANGE)
+ {
+ proto_tree_add_text (dlsw_header_tree,tvb, 16,1,"Protocol ID = 0x%02x",tvb_get_guint8(tvb,16)) ;
+ proto_tree_add_text (dlsw_header_tree,tvb, 17,1,"Header Number = 0x%02x",tvb_get_guint8(tvb,17)) ;
+ proto_tree_add_text (dlsw_header_tree,tvb, 18,5,"Not used for CapEx") ;
+ proto_tree_add_text (dlsw_header_tree,tvb, 23,1,"Old message type = %s (0x%02x)",
+ val_to_str_const(tvb_get_guint8(tvb,23) , dlsw_type_vals, "Unknown Type"),
+ tvb_get_guint8(tvb,23));
+ direction=tvb_get_guint8(tvb,38);
+ proto_tree_add_text (dlsw_header_tree,tvb, 24,14,"Not used for CapEx") ;
+ proto_tree_add_text (dlsw_header_tree,tvb, 38,1,"Frame direction = %s (0x%02x)",
+ val_to_str_const(direction , dlsw_capex_type_vals, "Unknown Direction"),
+ direction);
+ proto_tree_add_text (dlsw_header_tree,tvb, 39,33,"Not used for CapEx") ;
+ }
+ else
{
- proto_tree_add_text (dlsw_header_tree,tvb, 42,2,"DLC Header Length = %u (bogus, must be <= message length %u)",dlchlen, mlen) ;
- return;
+ proto_tree_add_text (dlsw_header_tree,tvb, 16,1,"Protocol ID = 0x%02x",tvb_get_guint8(tvb,16)) ;
+ proto_tree_add_text (dlsw_header_tree,tvb, 17,1,"Header Number = 0x%02x",tvb_get_guint8(tvb,17)) ;
+ proto_tree_add_text (dlsw_header_tree,tvb, 18,2,"Reserved") ;
+ proto_tree_add_text (dlsw_header_tree,tvb, 20,1,"Largest Frame size = %u",tvb_get_guint8(tvb,20)) ;
+ flags = tvb_get_guint8(tvb,21);
+ ti2 = proto_tree_add_text (dlsw_header_tree,tvb, 21,1,"SSP Flags = 0x%02x",flags) ;
+ dlsw_flags_tree = proto_item_add_subtree(ti2, ett_dlsw_sspflags);
+ proto_tree_add_text (dlsw_flags_tree, tvb, 21, 1, "%s",
+ decode_boolean_bitfield(flags, 0x80, 8,
+ "Explorer message: yes",
+ "Explorer message: no"));
+ proto_tree_add_text (dlsw_header_tree,tvb, 22,1,"Circuit priority = %s",
+ val_to_str((tvb_get_guint8(tvb,22)&7),dlsw_pri_vals, "Unknown (%d)")) ;
+ proto_tree_add_text (dlsw_header_tree,tvb, 23,1,"Old message type = %s (0x%02x)",
+ val_to_str_const(tvb_get_guint8(tvb,23) , dlsw_type_vals, "Unknown Type"),
+ tvb_get_guint8(tvb,23));
+ proto_tree_add_text (dlsw_header_tree,tvb, 24,6,"Target MAC Address = %s",tvb_bytes_to_str(tvb,24,6)) ;
+ proto_tree_add_text (dlsw_header_tree,tvb, 30,6,"Origin MAC Address = %s",tvb_bytes_to_str(tvb,30,6)) ;
+ proto_tree_add_text (dlsw_header_tree,tvb, 36,1,"Origin Link SAP = 0x%02x",tvb_get_guint8(tvb,36)) ;
+ proto_tree_add_text (dlsw_header_tree,tvb, 37,1,"Target Link SAP = 0x%02x",tvb_get_guint8(tvb,37)) ;
+ direction=tvb_get_guint8(tvb,38);
+ proto_tree_add_text (dlsw_header_tree,tvb, 38,1,"Frame direction = %s (0x%02x)",
+ val_to_str_const(direction , dlsw_frame_direction_vals, "Unknown Direction"),
+ direction);
+ proto_tree_add_text (dlsw_header_tree,tvb, 39,3,"Reserved") ;
+ dlchlen=tvb_get_ntohs(tvb,42);
+ if ( dlchlen > mlen )
+ {
+ proto_tree_add_text (dlsw_header_tree,tvb, 42,2,"DLC Header Length = %u (bogus, must be <= message length %u)",dlchlen, mlen) ;
+ return;
+ }
+ proto_tree_add_text (dlsw_header_tree,tvb, 42,2,"DLC Header Length = %u",dlchlen) ;
+ proto_tree_add_text (dlsw_header_tree,tvb, 44,4,"Origin DLC Port ID = %u",tvb_get_ntohl(tvb,44)) ;
+ proto_tree_add_text (dlsw_header_tree,tvb, 48,4,"Origin DLC = %u",tvb_get_ntohl(tvb,48)) ;
+ proto_tree_add_text (dlsw_header_tree,tvb, 52,4,"Origin Transport ID = %u",tvb_get_ntohl(tvb,52)) ;
+ proto_tree_add_text (dlsw_header_tree,tvb, 56,4,"Target DLC Port ID = %u",tvb_get_ntohl(tvb,56)) ;
+ proto_tree_add_text (dlsw_header_tree,tvb, 60,4,"Target DLC = %u",tvb_get_ntohl(tvb,60)) ;
+ proto_tree_add_text (dlsw_header_tree,tvb, 64,4,"Target Transport ID = %u",tvb_get_ntohl(tvb,64)) ;
+ proto_tree_add_text (dlsw_header_tree,tvb, 68,4,"Reserved") ;
}
- proto_tree_add_text (dlsw_header_tree,tvb, 42,2,"DLC Header Length = %u",dlchlen) ;
- proto_tree_add_text (dlsw_header_tree,tvb, 44,4,"Origin DLC Port ID = %u",tvb_get_ntohl(tvb,44)) ;
- proto_tree_add_text (dlsw_header_tree,tvb, 48,4,"Origin DLC = %u",tvb_get_ntohl(tvb,48)) ;
- proto_tree_add_text (dlsw_header_tree,tvb, 52,4,"Origin Transport ID = %u",tvb_get_ntohl(tvb,52)) ;
- proto_tree_add_text (dlsw_header_tree,tvb, 56,4,"Target DLC Port ID = %u",tvb_get_ntohl(tvb,56)) ;
- proto_tree_add_text (dlsw_header_tree,tvb, 60,4,"Target DLC = %u",tvb_get_ntohl(tvb,60)) ;
- proto_tree_add_text (dlsw_header_tree,tvb, 64,4,"Target Transport ID = %u",tvb_get_ntohl(tvb,64)) ;
- proto_tree_add_text (dlsw_header_tree,tvb, 68,4,"Reserved") ;
- }
}
/* end of header dissector */
@@ -345,7 +346,7 @@ dissect_dlsw_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
dlsw_data_tree = proto_item_add_subtree(ti2, ett_dlsw_data);
switch (mtype)
- {
+ {
case CAP_EXCHANGE:
dissect_dlsw_capex(tvb_new_subset(tvb, hlen, mlen, -1), dlsw_data_tree,ti2);
break;
@@ -357,117 +358,117 @@ dissect_dlsw_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
default:
if (dlchlen!=0)
- {
- proto_tree_add_text (dlsw_data_tree,tvb,hlen,1,"DLC Header - AC byte : 0x%02x",tvb_get_guint8(tvb,hlen)) ;
- proto_tree_add_text (dlsw_data_tree,tvb,hlen+1,1,"DLC Header - FC byte : 0x%02x",tvb_get_guint8(tvb,hlen+1)) ;
- proto_tree_add_text (dlsw_data_tree,tvb,hlen+2,6,"DLC Header - DA : %s",tvb_bytes_to_str(tvb,hlen+2,6)) ;
- proto_tree_add_text (dlsw_data_tree,tvb,hlen+8,6,"DLC Header - SA : %s",tvb_bytes_to_str(tvb,hlen+8,6)) ;
- proto_tree_add_text (dlsw_data_tree,tvb,hlen+14,18,"DLC Header - RIF : %s",tvb_bytes_to_str(tvb,hlen+14,18)) ;
- proto_tree_add_text (dlsw_data_tree,tvb,hlen+32,1,"DLC Header - DSAP : 0x%02x",tvb_get_guint8(tvb,hlen+32)) ;
- proto_tree_add_text (dlsw_data_tree,tvb,hlen+33,1,"DLC Header - SSAP : 0x%02x",tvb_get_guint8(tvb,hlen+33)) ;
- proto_tree_add_text (dlsw_data_tree,tvb,hlen+34,1,"DLC Header - Ctrl : 0x%02x",tvb_get_guint8(tvb,hlen+34)) ;
- }
- proto_tree_add_text (dlsw_data_tree,tvb,hlen+dlchlen,mlen-dlchlen,"Data") ;
- }
+ {
+ proto_tree_add_text (dlsw_data_tree,tvb,hlen,1,"DLC Header - AC byte : 0x%02x",tvb_get_guint8(tvb,hlen)) ;
+ proto_tree_add_text (dlsw_data_tree,tvb,hlen+1,1,"DLC Header - FC byte : 0x%02x",tvb_get_guint8(tvb,hlen+1)) ;
+ proto_tree_add_text (dlsw_data_tree,tvb,hlen+2,6,"DLC Header - DA : %s",tvb_bytes_to_str(tvb,hlen+2,6)) ;
+ proto_tree_add_text (dlsw_data_tree,tvb,hlen+8,6,"DLC Header - SA : %s",tvb_bytes_to_str(tvb,hlen+8,6)) ;
+ proto_tree_add_text (dlsw_data_tree,tvb,hlen+14,18,"DLC Header - RIF : %s",tvb_bytes_to_str(tvb,hlen+14,18)) ;
+ proto_tree_add_text (dlsw_data_tree,tvb,hlen+32,1,"DLC Header - DSAP : 0x%02x",tvb_get_guint8(tvb,hlen+32)) ;
+ proto_tree_add_text (dlsw_data_tree,tvb,hlen+33,1,"DLC Header - SSAP : 0x%02x",tvb_get_guint8(tvb,hlen+33)) ;
+ proto_tree_add_text (dlsw_data_tree,tvb,hlen+34,1,"DLC Header - Ctrl : 0x%02x",tvb_get_guint8(tvb,hlen+34)) ;
+ }
+ proto_tree_add_text (dlsw_data_tree,tvb,hlen+dlchlen,mlen-dlchlen,"Data") ;
+ }
- }
+ }
}
static void
dissect_dlsw_capex(tvbuff_t *tvb, proto_tree *tree, proto_tree *ti2)
{
- int mlen,vlen,vtype,offset=4,gdsid,sap,i=0;
- proto_tree *ti,*dlsw_vector_tree;
- mlen=tvb_get_ntohs(tvb,0);
- gdsid=tvb_get_ntohs(tvb,2);
- proto_tree_add_text (tree,tvb,0,2,"Capabilities Length = %d",mlen) ;
- proto_tree_add_text (tree,tvb,2,2,"%s",val_to_str( gdsid, dlsw_gds_vals, "Invalid GDS ID"));
- proto_item_append_text(ti2," - %s",val_to_str( gdsid, dlsw_gds_vals, "Invalid GDS ID"));
- switch (gdsid) {
- case DLSW_GDSID_ACK:
- break;
- case DLSW_GDSID_REF:
- proto_tree_add_text (tree,tvb,4,2,"Error pointer = %d",tvb_get_ntohs(tvb,4));
- proto_tree_add_text (tree,tvb,6,2,"Error cause = %s",
- val_to_str(tvb_get_ntohs(tvb,6), dlsw_refuse_vals, "Unknown refuse cause"));
- break;
- case DLSW_GDSID_SEND:
- while (offset < mlen){
- vlen=tvb_get_guint8(tvb,offset);
- if (vlen < 3) THROW(ReportedBoundsError);
- vtype=tvb_get_guint8(tvb,offset+1);
- ti=proto_tree_add_text (tree,tvb,offset,vlen,"%s",
- val_to_str(vtype,dlsw_vector_vals,"Unknown vector type"));
- dlsw_vector_tree = proto_item_add_subtree(ti, ett_dlsw_vector);
- proto_tree_add_text (dlsw_vector_tree,tvb,offset,1, "Vector Length = %d",vlen);
- proto_tree_add_text (dlsw_vector_tree,tvb,offset+1,1,"Vector Type = %s (0x%02x)",
- val_to_str(vtype,dlsw_vector_vals,"Unknown vector type"),vtype);
- switch (vtype){
- case 0x81:
- proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,
- "OUI = 0x%06x",tvb_get_ntoh24(tvb,offset+2));
- break;
- case 0x82:
- proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,
- "DLSw Version = %d.%d",tvb_get_guint8(tvb,offset+2),tvb_get_guint8(tvb,offset+3));
- break;
- case 0x83:
- proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,
- "Initial Pacing Window = %d",tvb_get_ntohs(tvb,offset+2));
- break;
- case 0x84:
- proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,
- "Version String = %s",tvb_format_text(tvb,offset+2,vlen-2));
- break;
- case 0x85:
- proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,
- "MAC Address Exclusivity = %s",tvb_get_guint8(tvb,offset+2)==1?"On":"Off");
- break;
- case 0x86:
- while (i<vlen-2)
- {
- sap=tvb_get_guint8(tvb,offset+2+i);
- proto_tree_add_text (dlsw_vector_tree,tvb,offset+2+i,1,
- "SAP List Support = 0x%x0=%s 0x%x2=%s 0x%x4=%s 0x%x6=%s 0x%x8=%s 0x%xa=%s 0x%xc=%s 0x%xe=%s",
- i,sap&0x80?"on ":"off",i,sap&0x40?"on ":"off",i,sap&0x20?"on ":"off",i,sap&0x10?"on ":"off",
- i,sap&0x08?"on ":"off",i,sap&0x04?"on ":"off",i,sap&0x02?"on ":"off",i,sap&0x01?"on ":"off");
- i++;
- }
- break;
- case 0x87:
- proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,
- "TCP connections = %d",tvb_get_guint8(tvb,offset+2));
- break;
- case 0x88:
- proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,
- "NetBIOS Name Exclusivity = %s",tvb_get_guint8(tvb,offset+2)==1?"On":"Off");
- break;
- case 0x89:
- proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,
- "MAC Address List = %s / %s",tvb_bytes_to_str(tvb,offset+2,6)
- ,tvb_bytes_to_str(tvb,offset+8,6));
- break;
- case 0x8a:
- proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,
-/* %s */ "NetBIOS name = %s",/* tvb_get_guint8(tvb,offset+2)==0?"Individual":"Group",*/
- tvb_format_text(tvb,offset+2,vlen-2));
- break;
- case 0x8b:
- proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,
- "Vendor OUI = 0x%06x",tvb_get_ntoh24(tvb,offset+2));
- break;
- case 0x8c:
- proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,
- "Multicast Version Number = %d",tvb_get_guint8(tvb,offset+2));
- break;
- default:
- proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,"Vector Data = ???");
+ int mlen,vlen,vtype,offset=4,gdsid,sap,i=0;
+ proto_tree *ti,*dlsw_vector_tree;
+ mlen=tvb_get_ntohs(tvb,0);
+ gdsid=tvb_get_ntohs(tvb,2);
+ proto_tree_add_text (tree,tvb,0,2,"Capabilities Length = %d",mlen) ;
+ proto_tree_add_text (tree,tvb,2,2,"%s",val_to_str_const( gdsid, dlsw_gds_vals, "Invalid GDS ID"));
+ proto_item_append_text(ti2," - %s",val_to_str_const( gdsid, dlsw_gds_vals, "Invalid GDS ID"));
+ switch (gdsid) {
+ case DLSW_GDSID_ACK:
+ break;
+ case DLSW_GDSID_REF:
+ proto_tree_add_text (tree,tvb,4,2,"Error pointer = %d",tvb_get_ntohs(tvb,4));
+ proto_tree_add_text (tree,tvb,6,2,"Error cause = %s",
+ val_to_str_const(tvb_get_ntohs(tvb,6), dlsw_refuse_vals, "Unknown refuse cause"));
+ break;
+ case DLSW_GDSID_SEND:
+ while (offset < mlen){
+ vlen=tvb_get_guint8(tvb,offset);
+ if (vlen < 3) THROW(ReportedBoundsError);
+ vtype=tvb_get_guint8(tvb,offset+1);
+ ti=proto_tree_add_text (tree,tvb,offset,vlen,"%s",
+ val_to_str_const(vtype,dlsw_vector_vals,"Unknown vector type"));
+ dlsw_vector_tree = proto_item_add_subtree(ti, ett_dlsw_vector);
+ proto_tree_add_text (dlsw_vector_tree,tvb,offset,1, "Vector Length = %d",vlen);
+ proto_tree_add_text (dlsw_vector_tree,tvb,offset+1,1,"Vector Type = %s (0x%02x)",
+ val_to_str_const(vtype,dlsw_vector_vals,"Unknown vector type"), vtype);
+ switch (vtype){
+ case 0x81:
+ proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,
+ "OUI = 0x%06x",tvb_get_ntoh24(tvb,offset+2));
+ break;
+ case 0x82:
+ proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,
+ "DLSw Version = %d.%d",tvb_get_guint8(tvb,offset+2),tvb_get_guint8(tvb,offset+3));
+ break;
+ case 0x83:
+ proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,
+ "Initial Pacing Window = %d",tvb_get_ntohs(tvb,offset+2));
+ break;
+ case 0x84:
+ proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,
+ "Version String = %s",tvb_format_text(tvb,offset+2,vlen-2));
+ break;
+ case 0x85:
+ proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,
+ "MAC Address Exclusivity = %s",tvb_get_guint8(tvb,offset+2)==1?"On":"Off");
+ break;
+ case 0x86:
+ while (i<vlen-2)
+ {
+ sap=tvb_get_guint8(tvb,offset+2+i);
+ proto_tree_add_text (dlsw_vector_tree,tvb,offset+2+i,1,
+ "SAP List Support = 0x%x0=%s 0x%x2=%s 0x%x4=%s 0x%x6=%s 0x%x8=%s 0x%xa=%s 0x%xc=%s 0x%xe=%s",
+ i,sap&0x80?"on ":"off",i,sap&0x40?"on ":"off",i,sap&0x20?"on ":"off",i,sap&0x10?"on ":"off",
+ i,sap&0x08?"on ":"off",i,sap&0x04?"on ":"off",i,sap&0x02?"on ":"off",i,sap&0x01?"on ":"off");
+ i++;
+ }
+ break;
+ case 0x87:
+ proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,
+ "TCP connections = %d",tvb_get_guint8(tvb,offset+2));
+ break;
+ case 0x88:
+ proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,
+ "NetBIOS Name Exclusivity = %s",tvb_get_guint8(tvb,offset+2)==1?"On":"Off");
+ break;
+ case 0x89:
+ proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,
+ "MAC Address List = %s / %s",tvb_bytes_to_str(tvb,offset+2,6)
+ ,tvb_bytes_to_str(tvb,offset+8,6));
+ break;
+ case 0x8a:
+ proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,
+ /* %s */ "NetBIOS name = %s",/* tvb_get_guint8(tvb,offset+2)==0?"Individual":"Group",*/
+ tvb_format_text(tvb,offset+2,vlen-2));
+ break;
+ case 0x8b:
+ proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,
+ "Vendor OUI = 0x%06x",tvb_get_ntoh24(tvb,offset+2));
+ break;
+ case 0x8c:
+ proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,
+ "Multicast Version Number = %d",tvb_get_guint8(tvb,offset+2));
+ break;
+ default:
+ proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,"Vector Data = ???");
}
- offset+=vlen;
+ offset+=vlen;
};
- break;
- default:
- proto_tree_add_text (tree,tvb,4,mlen - 4,"Unknown data");
+ break;
+ default:
+ proto_tree_add_text (tree,tvb,4,mlen - 4,"Unknown data");
}
}
@@ -475,14 +476,14 @@ dissect_dlsw_capex(tvbuff_t *tvb, proto_tree *tree, proto_tree *ti2)
static int
dissect_dlsw_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- if (match_strval(tvb_get_guint8(tvb, 0), dlsw_version_vals) == NULL)
- {
- /* Probably not a DLSw packet. */
- return 0;
- }
-
- dissect_dlsw_pdu(tvb, pinfo, tree);
- return tvb_length(tvb);
+ if (match_strval(tvb_get_guint8(tvb, 0), dlsw_version_vals) == NULL)
+ {
+ /* Probably not a DLSw packet. */
+ return 0;
+ }
+
+ dissect_dlsw_pdu(tvb, pinfo, tree);
+ return tvb_length(tvb);
}
static guint
@@ -509,15 +510,14 @@ get_dlsw_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
static int
dissect_dlsw_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- if (match_strval(tvb_get_guint8(tvb, 0), dlsw_version_vals) == NULL)
- {
- /* Probably not a DLSw packet. */
- return 0;
- }
-
- tcp_dissect_pdus(tvb, pinfo, tree, TRUE, 4, get_dlsw_pdu_len,
- dissect_dlsw_pdu);
- return tvb_length(tvb);
+ if (match_strval(tvb_get_guint8(tvb, 0), dlsw_version_vals) == NULL)
+ {
+ /* Probably not a DLSw packet. */
+ return 0;
+ }
+
+ tcp_dissect_pdus(tvb, pinfo, tree, TRUE, 4, get_dlsw_pdu_len, dissect_dlsw_pdu);
+ return tvb_length(tvb);
}
void
diff --git a/epan/dissectors/packet-dmp.c b/epan/dissectors/packet-dmp.c
index 06cacaa735..6485f69aba 100644
--- a/epan/dissectors/packet-dmp.c
+++ b/epan/dissectors/packet-dmp.c
@@ -547,7 +547,7 @@ static guint dmp_struct_length = 1;
typedef struct _dmp_security_class_t {
guint nation;
- guint dmp_class;
+ guint sec_class;
char *name;
} dmp_security_class_t;
@@ -1003,9 +1003,9 @@ static const value_string thales_ipm_id_modifier[] = {
{ 0, NULL }
};
-UAT_VS_DEF(dmp_security_class, nation, dmp_security_class_t, 0, "None");
-UAT_DEC_CB_DEF(dmp_security_class, dmp_class, dmp_security_class_t);
-UAT_CSTRING_CB_DEF(dmp_security_class, name, dmp_security_class_t);
+UAT_VS_DEF(dmp_security_class, nation, dmp_security_class_t, 0, "None")
+UAT_DEC_CB_DEF(dmp_security_class, sec_class, dmp_security_class_t)
+UAT_CSTRING_CB_DEF(dmp_security_class, name, dmp_security_class_t)
static void *
dmp_class_copy_cb(void *dest, const void *orig, size_t len _U_)
@@ -1014,7 +1014,7 @@ dmp_class_copy_cb(void *dest, const void *orig, size_t len _U_)
const dmp_security_class_t *o = (const dmp_security_class_t *)orig;
u->nation = o->nation;
- u->dmp_class = o->dmp_class;
+ u->sec_class = o->sec_class;
u->name = g_strdup(o->name);
return dest;
@@ -1035,7 +1035,7 @@ static gchar *dmp_national_sec_class (guint nation, guint dmp_sec_class)
for (i = 0; i < num_dmp_security_classes; i++) {
dmp_security_class_t *u = &(dmp_security_classes[i]);
- if (u->nation == nation && u->dmp_class == dmp_sec_class) {
+ if (u->nation == nation && u->sec_class == dmp_sec_class) {
return u->name;
}
}
@@ -4289,10 +4289,10 @@ void proto_register_dmp (void)
{ "Reporting Name Number", "dmp.reporting_name", FT_NONE,
BASE_NONE, NULL, 0x0, "Reporting Name", HFILL } },
{ &hf_addr_dl_expanded,
- { "DL Expanded", "dmp.dl_expanded", FT_BOOLEAN, 8,
+ { "DL Expanded", "dmp.dl_expanded", FT_BOOLEAN, BASE_NONE,
NULL, 0x0, "Message has been DL expanded", HFILL } },
{ &hf_addr_int_rec,
- { "Intended Recipient", "dmp.int_rec", FT_BOOLEAN, 8,
+ { "Intended Recipient", "dmp.int_rec", FT_BOOLEAN, BASE_NONE,
NULL, 0x0, "Message has an intended recipient", HFILL } },
/*
@@ -4964,7 +4964,7 @@ void proto_register_dmp (void)
static uat_field_t attributes_flds[] = {
UAT_FLD_VS(dmp_security_class,nation, "Nation", nat_pol_id, 0),
- UAT_FLD_DEC(dmp_security_class,dmp_class, "Classification", "Security Classification"),
+ UAT_FLD_DEC(dmp_security_class,sec_class, "Classification", "Security Classification"),
UAT_FLD_CSTRING(dmp_security_class,name, "Name", "Classification Name"),
UAT_END_FIELDS
};
diff --git a/epan/dissectors/packet-dmx-chan.c b/epan/dissectors/packet-dmx-chan.c
new file mode 100644
index 0000000000..2d9c6290e5
--- /dev/null
+++ b/epan/dissectors/packet-dmx-chan.c
@@ -0,0 +1,204 @@
+/* packet-dmx-chan.c
+ * DMX Channel Data packet disassembly.
+ *
+ * $Id$
+ *
+ * This dissector is written by
+ *
+ * Erwin Rol <erwin@erwinrol.com>
+ * Copyright 2011 Erwin Rol
+ *
+ * Wireshark - Network traffic analyzer
+ * Gerald Combs <gerald@wireshark.org>
+ * Copyright 1999 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301, USA.
+ */
+
+/*
+ * This dissector is based on;
+ * American National Standard E1.11 - 2004
+ * Entertainment Technology USITT DMX512-A
+ * Asynchronous Serial Digital Data Transmission Standard
+ * for Controlling Lighting Equipment and Accessories
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdlib.h>
+#include <ctype.h>
+#include <time.h>
+#include <string.h>
+#include <epan/packet.h>
+#include <epan/addr_resolv.h>
+#include <epan/prefs.h>
+#include <epan/strutil.h>
+
+void proto_reg_handoff_dmx_chan(void);
+
+static int proto_dmx_chan = -1;
+
+static int hf_dmx_chan_output_dmx_data = -1;
+static int hf_dmx_chan_output_data_filter = -1;
+
+static int ett_dmx_chan = -1;
+
+/*
+ * Here are the global variables associated with the preferences for DMX
+ */
+static gint global_disp_chan_val_type = 0;
+static gint global_disp_col_count = 16;
+static gint global_disp_chan_nr_type = 0;
+
+static void
+dissect_dmx_chan(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "DMX Channels");
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ if (tree != NULL) {
+ const char* chan_format[] = {
+ "%2u%% ",
+ "0x%02x ",
+ "%3u "
+ };
+ const char* string_format[] = {
+ "0x%03x: %s",
+ "%3u: %s"
+ };
+ emem_strbuf_t *chan_str = ep_strbuf_new_label("");
+ proto_item *item;
+ guint16 length,r,c,row_count;
+ guint8 v;
+ unsigned offset = 0;
+
+ proto_tree *ti = proto_tree_add_item(tree, proto_dmx_chan, tvb,
+ offset, -1, FALSE);
+ proto_tree *dmx_chan_tree = proto_item_add_subtree(ti, ett_dmx_chan);
+
+ length = tvb_reported_length_remaining(tvb, offset);
+
+ row_count = (length / global_disp_col_count) + ((length % global_disp_col_count) == 0 ? 0 : 1);
+ for (r = 0; r < row_count;r++) {
+ for (c = 0;(c < global_disp_col_count) && (((r * global_disp_col_count) + c) < length);c++) {
+ if ((global_disp_col_count >= 2) && ((c % (global_disp_col_count / 2)) == 0)) {
+ ep_strbuf_append(chan_str, " ");
+ }
+
+ v = tvb_get_guint8(tvb, (offset + (r * global_disp_col_count) + c));
+ if (global_disp_chan_val_type == 0) {
+ v = (v * 100) / 255;
+ if (v == 100) {
+ ep_strbuf_append(chan_str, "FL ");
+ } else {
+ ep_strbuf_append_printf(chan_str, chan_format[global_disp_chan_val_type], v);
+ }
+ } else {
+ ep_strbuf_append_printf(chan_str, chan_format[global_disp_chan_val_type], v);
+ }
+ }
+
+ proto_tree_add_none_format(dmx_chan_tree, hf_dmx_chan_output_dmx_data, tvb,
+ offset+(r * global_disp_col_count), c,
+ string_format[global_disp_chan_nr_type],
+ (r * global_disp_col_count) + 1, chan_str->str);
+ }
+
+ /* Add the real type hidden */
+ item = proto_tree_add_item(dmx_chan_tree, hf_dmx_chan_output_data_filter, tvb,
+ offset, length, ENC_NA );
+ PROTO_ITEM_SET_HIDDEN(item);
+ offset += length;
+ }
+}
+
+void
+proto_register_dmx_chan(void)
+{
+ static hf_register_info hf[] = {
+ { &hf_dmx_chan_output_data_filter,
+ { "DMX data filter",
+ "dmx_chan.data_filter",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dmx_chan_output_dmx_data,
+ { "DMX data",
+ "dmx_chan.dmx_data",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+ };
+
+ static gint *ett[] = {
+ &ett_dmx_chan
+ };
+
+ module_t *dmx_chan_module;
+
+ static enum_val_t disp_chan_val_types[] = {
+ { "pro", "Percent", 0 },
+ { "hex", "Hexadecimal", 1 },
+ { "dec", "Decimal", 2 },
+ { NULL, NULL, 0 }
+ };
+
+ static enum_val_t disp_chan_nr_types[] = {
+ { "hex", "Hexadecimal", 0 },
+ { "dec", "Decimal", 1 },
+ { NULL, NULL, 0 }
+ };
+
+ static enum_val_t col_count[] = {
+ { "6", "6", 6 },
+ { "10", "10", 10 },
+ { "12", "12", 12 },
+ { "16", "16", 16 },
+ { "24", "24", 24 },
+ { NULL, NULL, 0 }
+ };
+
+ proto_dmx_chan = proto_register_protocol("DMX Channels","DMX Channels", "dmx-chan");
+ proto_register_field_array(proto_dmx_chan, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+ register_dissector("dmx-chan", dissect_dmx_chan, proto_dmx_chan);
+
+ dmx_chan_module = prefs_register_protocol(proto_dmx_chan, NULL);
+
+ prefs_register_enum_preference(dmx_chan_module, "dmx_disp_chan_val_type",
+ "DMX Display channel value type",
+ "The way DMX values are displayed",
+ &global_disp_chan_val_type,
+ disp_chan_val_types, ENC_BIG_ENDIAN);
+
+ prefs_register_enum_preference(dmx_chan_module, "dmx_disp_chan_nr_type",
+ "DMX Display channel nr. type",
+ "The way DMX channel numbers are displayed",
+ &global_disp_chan_nr_type,
+ disp_chan_nr_types, ENC_BIG_ENDIAN);
+
+ prefs_register_enum_preference(dmx_chan_module, "dmx_disp_col_count",
+ "DMX Display Column Count",
+ "The number of columns for the DMX display",
+ &global_disp_col_count,
+ col_count, ENC_BIG_ENDIAN);
+}
+
+void
+proto_reg_handoff_dmx_chan(void)
+{
+}
diff --git a/epan/dissectors/packet-dmx-sip.c b/epan/dissectors/packet-dmx-sip.c
new file mode 100644
index 0000000000..0be11d0fda
--- /dev/null
+++ b/epan/dissectors/packet-dmx-sip.c
@@ -0,0 +1,320 @@
+/* packet-dmx-sip.c
+ * DMX SIP packet disassembly.
+ *
+ * $Id$
+ *
+ * This dissector is written by
+ *
+ * Erwin Rol <erwin@erwinrol.com>
+ * Copyright 2011 Erwin Rol
+ *
+ * Wireshark - Network traffic analyzer
+ * Gerald Combs <gerald@wireshark.org>
+ * Copyright 1999 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301, USA.
+ */
+
+/*
+ * This dissector is based on;
+ * American National Standard E1.11 - 2004
+ * Entertainment Technology USITT DMX512-A
+ * Asynchronous Serial Digital Data Transmission Standard
+ * for Controlling Lighting Equipment and Accessories
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdlib.h>
+#include <ctype.h>
+#include <time.h>
+#include <string.h>
+#include <epan/packet.h>
+#include <epan/addr_resolv.h>
+#include <epan/prefs.h>
+#include <epan/strutil.h>
+
+#define DMX_SC_SIP 0xCF
+
+void proto_reg_handoff_dmx_sip(void);
+
+static int proto_dmx_sip = -1;
+
+static int hf_dmx_sip_byte_count = -1;
+static int hf_dmx_sip_control_bit_field = -1;
+static int hf_dmx_sip_prev_packet_checksum = -1;
+static int hf_dmx_sip_seq_nr = -1;
+static int hf_dmx_sip_dmx_universe_nr = -1;
+static int hf_dmx_sip_dmx_proc_level = -1;
+static int hf_dmx_sip_dmx_software_version = -1;
+static int hf_dmx_sip_dmx_packet_len = -1;
+static int hf_dmx_sip_dmx_nr_packets = -1;
+static int hf_dmx_sip_orig_dev_id = -1;
+static int hf_dmx_sip_sec_dev_id = -1;
+static int hf_dmx_sip_third_dev_id = -1;
+static int hf_dmx_sip_fourth_dev_id = -1;
+static int hf_dmx_sip_fifth_dev_id = -1;
+static int hf_dmx_sip_reserved = -1;
+static int hf_dmx_sip_checksum = -1;
+static int hf_dmx_sip_checksum_good = -1;
+static int hf_dmx_sip_checksum_bad = -1;
+static int hf_dmx_sip_trailer = -1;
+
+static int ett_dmx_sip = -1;
+
+static guint8
+dmx_sip_checksum(tvbuff_t *tvb, unsigned length)
+{
+ guint8 sum = DMX_SC_SIP;
+ unsigned i;
+ for (i = 0; i < length; i++)
+ sum += tvb_get_guint8(tvb, i);
+ return sum;
+}
+
+static void
+dissect_dmx_sip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "DMX SIP");
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ if (tree != NULL) {
+ unsigned offset = 0;
+ unsigned byte_count;
+ unsigned checksum, checksum_shouldbe;
+ proto_item *item;
+ proto_tree *checksum_tree;
+
+ proto_tree *ti = proto_tree_add_item(tree, proto_dmx_sip, tvb,
+ offset, -1, FALSE);
+ proto_tree *dmx_sip_tree = proto_item_add_subtree(ti, ett_dmx_sip);
+
+
+ byte_count = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(dmx_sip_tree, hf_dmx_sip_byte_count, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(dmx_sip_tree, hf_dmx_sip_control_bit_field, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(dmx_sip_tree, hf_dmx_sip_prev_packet_checksum, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(dmx_sip_tree, hf_dmx_sip_seq_nr, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(dmx_sip_tree, hf_dmx_sip_dmx_universe_nr, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(dmx_sip_tree, hf_dmx_sip_dmx_proc_level, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(dmx_sip_tree, hf_dmx_sip_dmx_software_version, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(dmx_sip_tree, hf_dmx_sip_dmx_packet_len, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(dmx_sip_tree, hf_dmx_sip_dmx_nr_packets, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(dmx_sip_tree, hf_dmx_sip_orig_dev_id, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(dmx_sip_tree, hf_dmx_sip_sec_dev_id, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(dmx_sip_tree, hf_dmx_sip_third_dev_id, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(dmx_sip_tree, hf_dmx_sip_fourth_dev_id, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(dmx_sip_tree, hf_dmx_sip_fifth_dev_id, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ if (offset < byte_count) {
+ proto_tree_add_item(dmx_sip_tree, hf_dmx_sip_reserved, tvb,
+ offset, byte_count - offset, ENC_BIG_ENDIAN);
+ offset += (byte_count - offset);
+ }
+
+ dmx_sip_checksum(tvb, offset);
+
+ checksum_shouldbe = dmx_sip_checksum(tvb, offset);
+ checksum = tvb_get_guint8(tvb, offset);
+ item = proto_tree_add_item(dmx_sip_tree, hf_dmx_sip_checksum, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ if (checksum == checksum_shouldbe) {
+ proto_item_append_text(item, " [correct]");
+
+ checksum_tree = proto_item_add_subtree(item, ett_dmx_sip);
+ item = proto_tree_add_boolean(checksum_tree, hf_dmx_sip_checksum_good, tvb,
+ offset, 1, TRUE);
+ PROTO_ITEM_SET_GENERATED(item);
+ item = proto_tree_add_boolean(checksum_tree, hf_dmx_sip_checksum_bad, tvb,
+ offset, 1, FALSE);
+ PROTO_ITEM_SET_GENERATED(item);
+ } else {
+ proto_item_append_text(item, " [incorrect, should be 0x%02x]", checksum_shouldbe);
+
+ checksum_tree = proto_item_add_subtree(item, ett_dmx_sip);
+ item = proto_tree_add_boolean(checksum_tree, hf_dmx_sip_checksum_good, tvb,
+ offset, 1, FALSE);
+ PROTO_ITEM_SET_GENERATED(item);
+ item = proto_tree_add_boolean(checksum_tree, hf_dmx_sip_checksum_bad, tvb,
+ offset, 1, TRUE);
+ PROTO_ITEM_SET_GENERATED(item);
+ }
+
+ offset += 1;
+
+ if (offset < tvb_length(tvb))
+ proto_tree_add_item(dmx_sip_tree, hf_dmx_sip_trailer, tvb,
+ offset, -1, ENC_NA);
+ }
+}
+
+void
+proto_register_dmx_sip(void)
+{
+ static hf_register_info hf[] = {
+ { &hf_dmx_sip_byte_count,
+ { "Byte Count", "dmx_sip.byte_count",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dmx_sip_control_bit_field,
+ { "Control Bit Field", "dmx_sip.control_bit_field",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dmx_sip_prev_packet_checksum,
+ { "Checksum of prev. packet", "dmx_sip.prev_packet_checksum",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dmx_sip_seq_nr,
+ { "SIP sequence nr.", "dmx_sip.seq_nr",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dmx_sip_dmx_universe_nr,
+ { "DMX512 universe nr.", "dmx_sip.dmx_universe_nr",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dmx_sip_dmx_proc_level,
+ { "DMX512 processing level", "dmx_sip.dmx_proc_level",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dmx_sip_dmx_software_version,
+ { "Software Version", "dmx_sip.dmx_software_version",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dmx_sip_dmx_packet_len,
+ { "Standard Packet Len", "dmx_sip.dmx_packet_len",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dmx_sip_dmx_nr_packets,
+ { "Number of Packets", "dmx_sip.dmx_nr_packets",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dmx_sip_orig_dev_id,
+ { "1st Device's ID", "dmx_sip.orig_dev_id",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dmx_sip_sec_dev_id,
+ { "2nd Device's ID", "dmx_sip.sec_dev_id",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dmx_sip_third_dev_id,
+ { "3rd Device's ID", "dmx_sip.third_dev_id",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dmx_sip_fourth_dev_id,
+ { "4th Device's ID", "dmx_sip.fourth_dev_id",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dmx_sip_fifth_dev_id,
+ { "5th Device's ID", "dmx_sip.fifth_dev_id",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dmx_sip_reserved,
+ { "Reserved", "dmx_sip.reserved",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dmx_sip_checksum,
+ { "Checksum", "dmx_sip.checksum",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dmx_sip_checksum_good,
+ { "Good Checksum", "dmx_sip.checksum_good",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "True: checksum matches packet content; False: doesn't match content", HFILL }},
+
+ { &hf_dmx_sip_checksum_bad,
+ { "Bad Checksum", "dmx_sip.checksum_bad",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "True: checksum doesn't match packet content; False: matches content", HFILL }},
+
+ { &hf_dmx_sip_trailer,
+ { "Trailer", "dmx_sip.trailer",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+ };
+
+ static gint *ett[] = {
+ &ett_dmx_sip
+ };
+
+ proto_dmx_sip = proto_register_protocol("DMX SIP", "DMX SIP", "dmx-sip");
+ proto_register_field_array(proto_dmx_sip, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+ register_dissector("dmx-sip", dissect_dmx_sip, proto_dmx_sip);
+}
+
+void
+proto_reg_handoff_dmx_sip(void)
+{
+}
diff --git a/epan/dissectors/packet-dmx-test.c b/epan/dissectors/packet-dmx-test.c
new file mode 100644
index 0000000000..48f5fbb768
--- /dev/null
+++ b/epan/dissectors/packet-dmx-test.c
@@ -0,0 +1,158 @@
+/* packet-dmx-test.c
+ * DMX Test packet disassembly.
+ *
+ * $Id$
+ *
+ * This dissector is written by
+ *
+ * Erwin Rol <erwin@erwinrol.com>
+ * Copyright 2011 Erwin Rol
+ *
+ * Wireshark - Network traffic analyzer
+ * Gerald Combs <gerald@wireshark.org>
+ * Copyright 1999 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301, USA.
+ */
+
+/*
+ * This dissector is based on;
+ * American National Standard E1.11 - 2004
+ * Entertainment Technology USITT DMX512-A
+ * Asynchronous Serial Digital Data Transmission Standard
+ * for Controlling Lighting Equipment and Accessories
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdlib.h>
+#include <ctype.h>
+#include <time.h>
+#include <string.h>
+#include <epan/packet.h>
+#include <epan/addr_resolv.h>
+#include <epan/prefs.h>
+#include <epan/strutil.h>
+
+#define DMX_TEST_PACKET_SIZE 512
+#define DMX_TEST_VALUE 0x55
+
+void proto_reg_handoff_dmx_test(void);
+
+static int proto_dmx_test = -1;
+
+static int hf_dmx_test_data = -1;
+static int hf_dmx_test_data_good = -1;
+static int hf_dmx_test_data_bad = -1;
+
+static int ett_dmx_test = -1;
+
+static void
+dissect_dmx_test(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "DMX Test Frame");
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ if (tree != NULL) {
+ unsigned offset = 0;
+ unsigned size, i, test_data_is_ok;
+ proto_tree* test_data_tree;
+ proto_item *item;
+
+ proto_tree *ti = proto_tree_add_item(tree, proto_dmx_test, tvb,
+ offset, -1, FALSE);
+ proto_tree *dmx_test_tree = proto_item_add_subtree(ti, ett_dmx_test);
+
+ size = tvb_reported_length_remaining(tvb, offset);
+
+ item = proto_tree_add_item(dmx_test_tree, hf_dmx_test_data, tvb,
+ offset, size, ENC_BIG_ENDIAN);
+ offset += size;
+
+ if (size == DMX_TEST_PACKET_SIZE) {
+ test_data_is_ok = TRUE;
+ for (i = 0; i < DMX_TEST_PACKET_SIZE; i++) {
+ if (tvb_get_guint8(tvb, i) != DMX_TEST_VALUE) {
+ test_data_is_ok = FALSE;
+ break;
+ }
+ }
+ } else {
+ test_data_is_ok = FALSE;
+ }
+
+ if (test_data_is_ok) {
+ proto_item_append_text(ti, ", Data correct");
+ proto_item_append_text(item, " [correct]");
+
+ test_data_tree = proto_item_add_subtree(item, ett_dmx_test);
+ item = proto_tree_add_boolean(test_data_tree, hf_dmx_test_data_good, tvb,
+ offset, size, TRUE);
+ PROTO_ITEM_SET_GENERATED(item);
+ item = proto_tree_add_boolean(test_data_tree, hf_dmx_test_data_bad, tvb,
+ offset, size, FALSE);
+ PROTO_ITEM_SET_GENERATED(item);
+ } else {
+ proto_item_append_text(ti, ", Data incorrect");
+ proto_item_append_text(item, " [incorrect]");
+
+ test_data_tree = proto_item_add_subtree(item, ett_dmx_test);
+ item = proto_tree_add_boolean(test_data_tree, hf_dmx_test_data_good, tvb,
+ offset, size, FALSE);
+ PROTO_ITEM_SET_GENERATED(item);
+ item = proto_tree_add_boolean(test_data_tree, hf_dmx_test_data_bad, tvb,
+ offset, size, TRUE);
+ PROTO_ITEM_SET_GENERATED(item);
+ }
+ }
+}
+
+void
+proto_register_dmx_test(void)
+{
+ static hf_register_info hf[] = {
+ { &hf_dmx_test_data,
+ { "Test Data", "dmx_test.data",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dmx_test_data_good,
+ { "Data Good", "dmx_test.data_good",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "True: test data is correct; False: test data is incorrect", HFILL }},
+
+ { &hf_dmx_test_data_bad,
+ { "Data Bad", "dmx_test.data_bad",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "True: test data is incorrect; False: test data is correct", HFILL }},
+ };
+
+ static gint *ett[] = {
+ &ett_dmx_test
+ };
+
+ proto_dmx_test = proto_register_protocol("DMX Test Frame", "DMX Test Frame", "dmx-test");
+ proto_register_field_array(proto_dmx_test, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+ register_dissector("dmx-test", dissect_dmx_test, proto_dmx_test);
+}
+
+void
+proto_reg_handoff_dmx_test(void)
+{
+}
diff --git a/epan/dissectors/packet-dmx-text.c b/epan/dissectors/packet-dmx-text.c
new file mode 100644
index 0000000000..aa068e3068
--- /dev/null
+++ b/epan/dissectors/packet-dmx-text.c
@@ -0,0 +1,126 @@
+/* packet-dmx-text.c
+ * DMX Text packet disassembly.
+ *
+ * $Id$
+ *
+ * This dissector is written by
+ *
+ * Erwin Rol <erwin@erwinrol.com>
+ * Copyright 2011 Erwin Rol
+ *
+ * Wireshark - Network traffic analyzer
+ * Gerald Combs <gerald@wireshark.org>
+ * Copyright 1999 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301, USA.
+ */
+
+/*
+ * This dissector is based on;
+ * American National Standard E1.11 - 2004
+ * Entertainment Technology USITT DMX512-A
+ * Asynchronous Serial Digital Data Transmission Standard
+ * for Controlling Lighting Equipment and Accessories
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdlib.h>
+#include <ctype.h>
+#include <time.h>
+#include <string.h>
+#include <epan/packet.h>
+#include <epan/addr_resolv.h>
+#include <epan/prefs.h>
+#include <epan/strutil.h>
+
+void proto_reg_handoff_dmx_text(void);
+
+static int proto_dmx_text = -1;
+
+static int hf_dmx_text_page_nr = -1;
+static int hf_dmx_text_line_len = -1;
+static int hf_dmx_text_string = -1;
+
+static int ett_dmx_text = -1;
+
+static void
+dissect_dmx_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "DMX Text");
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ if (tree != NULL) {
+ unsigned offset = 0;
+ unsigned size;
+
+ proto_tree *ti = proto_tree_add_item(tree, proto_dmx_text, tvb,
+ offset, -1, FALSE);
+ proto_tree *dmx_text_tree = proto_item_add_subtree(ti, ett_dmx_text);
+
+ proto_tree_add_item(dmx_text_tree, hf_dmx_text_page_nr, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(dmx_text_tree, hf_dmx_text_line_len, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ size = tvb_reported_length_remaining(tvb, offset);
+
+ proto_tree_add_item(dmx_text_tree, hf_dmx_text_string, tvb,
+ offset, size, ENC_BIG_ENDIAN);
+ offset += size;
+ }
+}
+
+void
+proto_register_dmx_text(void)
+{
+ static hf_register_info hf[] = {
+ { &hf_dmx_text_page_nr,
+ { "Page Number",
+ "dmx_text.page_nr",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_dmx_text_line_len,
+ { "Line Length",
+ "dmx_text.line_length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_dmx_text_string,
+ { "Text String",
+ "dmx_text.string",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+ };
+
+ static gint *ett[] = {
+ &ett_dmx_text
+ };
+
+ proto_dmx_text = proto_register_protocol("DMX Text Frame", "DMX Text Frame", "dmx-text");
+ proto_register_field_array(proto_dmx_text, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+ register_dissector("dmx-text", dissect_dmx_text, proto_dmx_text);
+}
+
+void
+proto_reg_handoff_dmx_text(void)
+{
+}
diff --git a/epan/dissectors/packet-dmx.c b/epan/dissectors/packet-dmx.c
new file mode 100644
index 0000000000..429936a7c1
--- /dev/null
+++ b/epan/dissectors/packet-dmx.c
@@ -0,0 +1,165 @@
+/* packet-dmx.c
+ * DMX packet disassembly.
+ *
+ * $Id$
+ *
+ * This dissector is written by
+ *
+ * Erwin Rol <erwin@erwinrol.com>
+ * Copyright 2012 Erwin Rol
+ *
+ * Wireshark - Network traffic analyzer
+ * Gerald Combs <gerald@wireshark.org>
+ * Copyright 1999 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301, USA.
+ */
+
+/*
+ * This dissector is based on;
+ * American National Standard E1.11 - 2004
+ * Entertainment Technology USITT DMX512-A
+ * Asynchronous Serial Digital Data Transmission Standard
+ * for Controlling Lighting Equipment and Accessories
+ */
+
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdlib.h>
+#include <ctype.h>
+#include <time.h>
+#include <string.h>
+#include <epan/packet.h>
+#include <epan/addr_resolv.h>
+#include <epan/prefs.h>
+#include <epan/strutil.h>
+
+#define DMX_SC_DMX 0x00
+#define DMX_SC_TEXT 0x17
+#define DMX_SC_TEST 0x55
+#define DMX_SC_RDM 0xCC
+#define DMX_SC_SIP 0xCF
+
+static const value_string dmx_sc_vals[] = {
+ { DMX_SC_DMX, "DMX" },
+ { DMX_SC_TEXT, "Text" },
+ { DMX_SC_TEST, "Test" },
+ { DMX_SC_RDM, "RDM" },
+ { DMX_SC_SIP, "SIP" },
+ { 0, NULL },
+};
+
+void proto_reg_handoff_dmx(void);
+
+static int proto_dmx = -1;
+
+static int hf_dmx_start_code = -1;
+static int hf_dmx_frame_data = -1;
+
+static int ett_dmx = -1;
+
+static dissector_handle_t rdm_handle;
+static dissector_handle_t dmx_chan_handle;
+static dissector_handle_t dmx_test_handle;
+static dissector_handle_t dmx_text_handle;
+static dissector_handle_t dmx_sip_handle;
+
+
+static void
+dissect_dmx(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ tvbuff_t *next_tvb = NULL;
+ unsigned offset = 0;
+ guint8 start_code;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "DMX");
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ start_code = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_dmx_start_code, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ switch (start_code) {
+ case DMX_SC_DMX:
+ next_tvb = tvb_new_subset_remaining(tvb, offset);
+ call_dissector(dmx_chan_handle, next_tvb, pinfo, tree);
+ break;
+ case DMX_SC_TEXT:
+ next_tvb = tvb_new_subset_remaining(tvb, offset);
+ call_dissector(dmx_text_handle, next_tvb, pinfo, tree);
+ break;
+ case DMX_SC_TEST:
+ next_tvb = tvb_new_subset_remaining(tvb, offset);
+ call_dissector(dmx_test_handle, next_tvb, pinfo, tree);
+ break;
+ case DMX_SC_RDM:
+ next_tvb = tvb_new_subset_remaining(tvb, offset);
+ call_dissector(rdm_handle, next_tvb, pinfo, tree);
+ break;
+ case DMX_SC_SIP:
+ next_tvb = tvb_new_subset_remaining(tvb, offset);
+ call_dissector(dmx_sip_handle, next_tvb, pinfo, tree);
+ break;
+ default:
+ if (offset < tvb_length(tvb))
+ proto_tree_add_item(tree, hf_dmx_frame_data, tvb,
+ offset, -1, ENC_NA);
+ break;
+ }
+}
+
+void
+proto_register_dmx(void)
+{
+ static hf_register_info hf[] = {
+ { &hf_dmx_start_code,
+ { "Start Code", "dmx.start_code",
+ FT_UINT8, BASE_HEX, VALS(dmx_sc_vals), 0x0,
+ NULL, HFILL }},
+ { &hf_dmx_frame_data,
+ { "Frame Data", "dmx.frame_data",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+ };
+
+ static gint *ett[] = {
+ &ett_dmx
+ };
+
+ proto_dmx = proto_register_protocol("DMX", "DMX", "dmx");
+ proto_register_field_array(proto_dmx, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+ register_dissector("dmx", dissect_dmx, proto_dmx);
+}
+
+void
+proto_reg_handoff_dmx(void)
+{
+ static gboolean dmx_initialized = FALSE;
+
+ if (!dmx_initialized) {
+ rdm_handle = find_dissector("rdm");
+ dmx_chan_handle = find_dissector("dmx-chan");
+ dmx_test_handle = find_dissector("dmx-test");
+ dmx_text_handle = find_dissector("dmx-text");
+ dmx_sip_handle = find_dissector("dmx-sip");
+ dmx_initialized = TRUE;
+ }
+}
diff --git a/epan/dissectors/packet-dnp.c b/epan/dissectors/packet-dnp.c
index 1cb80a2387..2a2e538e31 100644
--- a/epan/dissectors/packet-dnp.c
+++ b/epan/dissectors/packet-dnp.c
@@ -1236,7 +1236,7 @@ dnp3_al_process_iin(tvbuff_t *tvb, int offset, proto_tree *al_tree)
if (al_iin & AL_IIN_EBO) comma_needed = add_item_text(tiin, "Event Buffer Overflow", comma_needed);
if (al_iin & AL_IIN_PIOOR) comma_needed = add_item_text(tiin, "Parameters Invalid or Out of Range", comma_needed);
if (al_iin & AL_IIN_OBJU) comma_needed = add_item_text(tiin, "Requested Objects Unknown", comma_needed);
- if (al_iin & AL_IIN_FCNI) comma_needed = add_item_text(tiin, "Function code not implemented", comma_needed);
+ if (al_iin & AL_IIN_FCNI) /*comma_needed = */add_item_text(tiin, "Function code not implemented", comma_needed);
proto_item_append_text(tiin, " (0x%04x)", al_iin);
iin_tree = proto_item_add_subtree(tiin, ett_dnp3_al_iin);
@@ -2916,7 +2916,6 @@ dissect_dnp3_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_text(al_tree, tvb, offset - (chk_size + 2), chk_size + 2,
"Application Chunk %u Len: %u Bad CRC got 0x%04x expected 0x%04x",
i, chk_size, act_crc, calc_crc);
- data_len = 0;
break;
}
i++;
diff --git a/epan/dissectors/packet-dns.c b/epan/dissectors/packet-dns.c
index e5d6e2d42f..76b9d15d0e 100644
--- a/epan/dissectors/packet-dns.c
+++ b/epan/dissectors/packet-dns.c
@@ -141,22 +141,22 @@ static dissector_handle_t ntlmssp_handle;
/* Structure containing transaction specific information */
typedef struct _dns_transaction_t {
- guint32 req_frame;
- guint32 rep_frame;
- nstime_t req_time;
+ guint32 req_frame;
+ guint32 rep_frame;
+ nstime_t req_time;
} dns_transaction_t;
/* Structure containing conversation specific information */
typedef struct _dns_conv_info_t {
- emem_tree_t *pdus;
+ emem_tree_t *pdus;
} dns_conv_info_t;
/* DNS structs and definitions */
/* Ports used for DNS. */
-#define UDP_PORT_DNS 53
-#define TCP_PORT_DNS 53
-#define SCTP_PORT_DNS 53
+#define UDP_PORT_DNS 53
+#define TCP_PORT_DNS 53
+#define SCTP_PORT_DNS 53
#define UDP_PORT_MDNS 5353
#define TCP_PORT_MDNS 5353
#define UDP_PORT_LLMNR 5355
@@ -166,26 +166,26 @@ typedef struct _dns_conv_info_t {
#endif
/* Offsets of fields in the DNS header. */
-#define DNS_ID 0
-#define DNS_FLAGS 2
-#define DNS_QUEST 4
-#define DNS_ANS 6
-#define DNS_AUTH 8
-#define DNS_ADD 10
+#define DNS_ID 0
+#define DNS_FLAGS 2
+#define DNS_QUEST 4
+#define DNS_ANS 6
+#define DNS_AUTH 8
+#define DNS_ADD 10
/* Length of DNS header. */
-#define DNS_HDRLEN 12
+#define DNS_HDRLEN 12
/* type values */
-#define T_A 1 /* host address */
-#define T_NS 2 /* authoritative name server */
-#define T_MD 3 /* mail destination (obsolete) */
-#define T_MF 4 /* mail forwarder (obsolete) */
-#define T_CNAME 5 /* canonical name */
-#define T_SOA 6 /* start of authority zone */
-#define T_MB 7 /* mailbox domain name (experimental) */
-#define T_MG 8 /* mail group member (experimental) */
-#define T_MR 9 /* mail rename domain name (experimental) */
+#define T_A 1 /* host address */
+#define T_NS 2 /* authoritative name server */
+#define T_MD 3 /* mail destination (obsolete) */
+#define T_MF 4 /* mail forwarder (obsolete) */
+#define T_CNAME 5 /* canonical name */
+#define T_SOA 6 /* start of authority zone */
+#define T_MB 7 /* mailbox domain name (experimental) */
+#define T_MG 8 /* mail group member (experimental) */
+#define T_MR 9 /* mail rename domain name (experimental) */
#define T_NULL 10 /* null RR (experimental) */
#define T_WKS 11 /* well known service */
#define T_PTR 12 /* domain name pointer */
@@ -212,13 +212,13 @@ typedef struct _dns_conv_info_t {
#define T_SRV 33 /* service location (RFC 2052) */
#define T_ATMA 34 /* ??? */
#define T_NAPTR 35 /* naming authority pointer (RFC 3403) */
-#define T_KX 36 /* Key Exchange (RFC 2230) */
-#define T_CERT 37 /* Certificate (RFC 2538) */
-#define T_A6 38 /* IPv6 address with indirection (RFC 2874) */
+#define T_KX 36 /* Key Exchange (RFC 2230) */
+#define T_CERT 37 /* Certificate (RFC 4398) */
+#define T_A6 38 /* IPv6 address with indirection (RFC 2874) */
#define T_DNAME 39 /* Non-terminal DNS name redirection (RFC 2672) */
-#define T_OPT 41 /* OPT pseudo-RR (RFC 2671) */
+#define T_OPT 41 /* OPT pseudo-RR (RFC 2671) */
#define T_APL 42 /* Lists of Address Prefixes (APL RR) (RFC 3123) */
-#define T_DS 43 /* Delegation Signature(RFC 3658) */
+#define T_DS 43 /* Delegation Signature(RFC 3658) */
#define T_SSHFP 44 /* Using DNS to Securely Publish SSH Key Fingerprints (RFC 4255) */
#define T_IPSECKEY 45 /* draft-ietf-ipseckey-rr */
#define T_RRSIG 46 /* future RFC 2535bis */
@@ -229,27 +229,27 @@ typedef struct _dns_conv_info_t {
#define T_NSEC3PARAM 51 /* NSEC3 parameters (RFC 5155) */
#define T_HIP 55 /* Host Identity Protocol (HIP) RR (RFC 5205) */
#define T_SPF 99 /* SPF RR (RFC 4408) section 3 */
-#define T_TKEY 249 /* Transaction Key (RFC 2930) */
-#define T_TSIG 250 /* Transaction Signature (RFC 2845) */
-#define T_WINS 65281 /* Microsoft's WINS RR */
-#define T_WINS_R 65282 /* Microsoft's WINS-R RR */
-#define T_DLV 32769 /* DNSSEC Lookaside Validation (DLV) DNS Resource Record (RFC 4431) */
+#define T_TKEY 249 /* Transaction Key (RFC 2930) */
+#define T_TSIG 250 /* Transaction Signature (RFC 2845) */
+#define T_WINS 65281 /* Microsoft's WINS RR */
+#define T_WINS_R 65282 /* Microsoft's WINS-R RR */
+#define T_DLV 32769 /* DNSSEC Lookaside Validation (DLV) DNS Resource Record (RFC 4431) */
/* Class values */
-#define C_IN 1 /* the Internet */
-#define C_CS 2 /* CSNET (obsolete) */
-#define C_CH 3 /* CHAOS */
-#define C_HS 4 /* Hesiod */
-#define C_NONE 254 /* none */
-#define C_ANY 255 /* any */
-
-#define C_QU (1<<15) /* High bit is set in queries for unicast queries */
+#define C_IN 1 /* the Internet */
+#define C_CS 2 /* CSNET (obsolete) */
+#define C_CH 3 /* CHAOS */
+#define C_HS 4 /* Hesiod */
+#define C_NONE 254 /* none */
+#define C_ANY 255 /* any */
+
+#define C_QU (1<<15) /* High bit is set in queries for unicast queries */
#define C_FLUSH (1<<15) /* High bit is set for MDNS cache flush */
/* Bit fields in the flags */
#define F_RESPONSE (1<<15) /* packet is response */
#define F_OPCODE (0xF<<11) /* query opcode */
-#define OPCODE_SHIFT 11
+#define OPCODE_SHIFT 11
#define F_AUTHORITATIVE (1<<10) /* response is authoritative */
#define F_CONFLICT (1<<10) /* conflict detected */
#define F_TRUNCATED (1<<9) /* response is truncated */
@@ -262,58 +262,58 @@ typedef struct _dns_conv_info_t {
#define F_RCODE (0xF<<0) /* reply code */
static const true_false_string tfs_flags_response = {
- "Message is a response",
- "Message is a query"
+ "Message is a response",
+ "Message is a query"
};
static const true_false_string tfs_flags_authoritative = {
- "Server is an authority for domain",
- "Server is not an authority for domain"
+ "Server is an authority for domain",
+ "Server is not an authority for domain"
};
static const true_false_string tfs_flags_conflict_query = {
- "The sender received multiple responses",
- "None"
+ "The sender received multiple responses",
+ "None"
};
static const true_false_string tfs_flags_conflict_response = {
- "The name is not considered unique",
- "The name is considered unique"
+ "The name is not considered unique",
+ "The name is considered unique"
};
static const true_false_string tfs_flags_truncated = {
- "Message is truncated",
- "Message is not truncated"
+ "Message is truncated",
+ "Message is not truncated"
};
static const true_false_string tfs_flags_recdesired = {
- "Do query recursively",
- "Don't do query recursively"
+ "Do query recursively",
+ "Don't do query recursively"
};
static const true_false_string tfs_flags_tentative = {
- "Tentative",
- "Not tentative"
+ "Tentative",
+ "Not tentative"
};
static const true_false_string tfs_flags_recavail = {
- "Server can do recursive queries",
- "Server can't do recursive queries"
+ "Server can do recursive queries",
+ "Server can't do recursive queries"
};
static const true_false_string tfs_flags_z = {
- "reserved - incorrect!",
- "reserved (0)"
+ "reserved - incorrect!",
+ "reserved (0)"
};
static const true_false_string tfs_flags_authenticated = {
- "Answer/authority portion was authenticated by the server",
- "Answer/authority portion was not authenticated by the server"
+ "Answer/authority portion was authenticated by the server",
+ "Answer/authority portion was not authenticated by the server"
};
static const true_false_string tfs_flags_checkdisable = {
- "Acceptable",
- "Unacceptable"
+ "Acceptable",
+ "Unacceptable"
};
/* Opcodes */
@@ -324,53 +324,53 @@ static const true_false_string tfs_flags_checkdisable = {
#define OPCODE_UPDATE 5 /* dynamic update */
static const value_string opcode_vals[] = {
- { OPCODE_QUERY, "Standard query" },
- { OPCODE_IQUERY, "Inverse query" },
- { OPCODE_STATUS, "Server status request" },
- { OPCODE_NOTIFY, "Zone change notification" },
- { OPCODE_UPDATE, "Dynamic update" },
- { 0, NULL } };
+ { OPCODE_QUERY, "Standard query" },
+ { OPCODE_IQUERY, "Inverse query" },
+ { OPCODE_STATUS, "Server status request" },
+ { OPCODE_NOTIFY, "Zone change notification" },
+ { OPCODE_UPDATE, "Dynamic update" },
+ { 0, NULL } };
/* Reply codes */
-#define RCODE_NOERROR 0
-#define RCODE_FORMERR 1
-#define RCODE_SERVFAIL 2
-#define RCODE_NXDOMAIN 3
-#define RCODE_NOTIMPL 4
-#define RCODE_REFUSED 5
-#define RCODE_YXDOMAIN 6
-#define RCODE_YXRRSET 7
-#define RCODE_NXRRSET 8
-#define RCODE_NOTAUTH 9
+#define RCODE_NOERROR 0
+#define RCODE_FORMERR 1
+#define RCODE_SERVFAIL 2
+#define RCODE_NXDOMAIN 3
+#define RCODE_NOTIMPL 4
+#define RCODE_REFUSED 5
+#define RCODE_YXDOMAIN 6
+#define RCODE_YXRRSET 7
+#define RCODE_NXRRSET 8
+#define RCODE_NOTAUTH 9
#define RCODE_NOTZONE 10
static const value_string rcode_vals[] = {
- { RCODE_NOERROR, "No error" },
- { RCODE_FORMERR, "Format error" },
- { RCODE_SERVFAIL, "Server failure" },
- { RCODE_NXDOMAIN, "No such name" },
- { RCODE_NOTIMPL, "Not implemented" },
- { RCODE_REFUSED, "Refused" },
- { RCODE_YXDOMAIN, "Name exists" },
- { RCODE_YXRRSET, "RRset exists" },
- { RCODE_NXRRSET, "RRset does not exist" },
- { RCODE_NOTAUTH, "Not authoritative" },
- { RCODE_NOTZONE, "Name out of zone" },
- { 0, NULL } };
-
-#define NSEC3_HASH_RESERVED 0
-#define NSEC3_HASH_SHA1 1
+ { RCODE_NOERROR, "No error" },
+ { RCODE_FORMERR, "Format error" },
+ { RCODE_SERVFAIL, "Server failure" },
+ { RCODE_NXDOMAIN, "No such name" },
+ { RCODE_NOTIMPL, "Not implemented" },
+ { RCODE_REFUSED, "Refused" },
+ { RCODE_YXDOMAIN, "Name exists" },
+ { RCODE_YXRRSET, "RRset exists" },
+ { RCODE_NXRRSET, "RRset does not exist" },
+ { RCODE_NOTAUTH, "Not authoritative" },
+ { RCODE_NOTZONE, "Name out of zone" },
+ { 0, NULL } };
+
+#define NSEC3_HASH_RESERVED 0
+#define NSEC3_HASH_SHA1 1
#define NSEC3_FLAG_OPTOUT 1
static const value_string hash_algorithms[] = {
- { NSEC3_HASH_RESERVED, "Reserved" },
- { NSEC3_HASH_SHA1, "SHA-1" },
- { 0, NULL } };
+ { NSEC3_HASH_RESERVED, "Reserved" },
+ { NSEC3_HASH_SHA1, "SHA-1" },
+ { 0, NULL } };
static const true_false_string tfs_flags_nsec3_optout = {
- "Additional insecure delegations allowed",
- "Additional insecure delegations forbidden"
+ "Additional insecure delegations allowed",
+ "Additional insecure delegations forbidden"
};
/* TSIG/TKEY extended errors */
@@ -382,13 +382,13 @@ static const true_false_string tfs_flags_nsec3_optout = {
#define TSIGERROR_BADALG (21)
static const value_string tsigerror_vals[] = {
- { TSIGERROR_BADSIG, "Bad signature" },
- { TSIGERROR_BADKEY, "Bad key" },
- { TSIGERROR_BADTIME, "Bad time failure" },
- { TSIGERROR_BADMODE, "Bad mode such name" },
- { TSIGERROR_BADNAME, "Bad name implemented" },
- { TSIGERROR_BADALG, "Bad algorithm" },
- { 0, NULL } };
+ { TSIGERROR_BADSIG, "Bad signature" },
+ { TSIGERROR_BADKEY, "Bad key" },
+ { TSIGERROR_BADTIME, "Bad time failure" },
+ { TSIGERROR_BADMODE, "Bad mode such name" },
+ { TSIGERROR_BADNAME, "Bad name implemented" },
+ { TSIGERROR_BADALG, "Bad algorithm" },
+ { 0, NULL } };
#define TKEYMODE_SERVERASSIGNED (1)
#define TKEYMODE_DIFFIEHELLMAN (2)
@@ -399,7 +399,8 @@ static const value_string tsigerror_vals[] = {
#define TDSDIGEST_RESERVED (0)
#define TDSDIGEST_SHA1 (1)
#define TDSDIGEST_SHA256 (2)
-
+#define TDSDIGEST_GOST (3)
+#define TDSDIGEST_SHA384 (4)
/*
* SSHFP (RFC 4255) algorithm number and fingerprint types
*/
@@ -421,8 +422,8 @@ static const value_string tsigerror_vals[] = {
#define DNS_APL_AFDLENGTH (0x7F<<0)
static const true_false_string tfs_dns_apl_negation = {
- "Yes (!)",
- "No (0)"
+ "Yes (!)",
+ "No (0)"
};
/* See RFC 1035 for all RR types for which no RFC is listed, except for
@@ -439,84 +440,84 @@ http://www.microsoft.com/windows2000/library/resources/reskit/samplechapters/cnc
/* http://www.iana.org/assignments/dns-parameters */
static const value_string dns_types[] = {
- { 0, "Unused" },
- { T_A, "A" },
- { T_NS, "NS" },
- { T_MD, "MD" },
- { T_MF, "MF" },
- { T_CNAME, "CNAME" },
- { T_SOA, "SOA" },
- { T_MB, "MB" },
- { T_MG, "MG" },
- { T_MR, "MR" },
- { T_NULL, "NULL" },
- { T_WKS, "WKS" },
- { T_PTR, "PTR" },
- { T_HINFO, "HINFO" },
- { T_MINFO, "MINFO" },
- { T_MX, "MX" },
- { T_TXT, "TXT" },
- { T_RP, "RP" }, /* RFC 1183 */
- { T_AFSDB, "AFSDB" }, /* RFC 1183 */
- { T_X25, "X25" }, /* RFC 1183 */
- { T_ISDN, "ISDN" }, /* RFC 1183 */
- { T_RT, "RT" }, /* RFC 1183 */
- { T_NSAP, "NSAP" }, /* RFC 1706 */
- { T_NSAP_PTR, "NSAP-PTR" }, /* RFC 1348 */
- { T_SIG, "SIG" }, /* RFC 2535 */
- { T_KEY, "KEY" }, /* RFC 2535 */
- { T_PX, "PX" }, /* RFC 1664 */
- { T_GPOS, "GPOS" }, /* RFC 1712 */
- { T_AAAA, "AAAA" }, /* RFC 1886 */
- { T_LOC, "LOC" }, /* RFC 1886 */
- { T_NXT, "NXT" }, /* RFC 1876 */
- { T_EID, "EID" },
- { T_NIMLOC, "NIMLOC" },
- { T_SRV, "SRV" }, /* RFC 2052 */
- { T_ATMA, "ATMA" },
- { T_NAPTR, "NAPTR" }, /* RFC 3403 */
- { T_KX, "KX" }, /* RFC 2230 */
- { T_CERT, "CERT" }, /* RFC 2538 */
- { T_A6, "A6" }, /* RFC 2874 */
- { T_DNAME, "DNAME" }, /* RFC 2672 */
-
- { T_OPT, "OPT" }, /* RFC 2671 */
- { T_APL, "APL" }, /* RFC 3123 */
- { T_DS, "DS" }, /* RFC 3658 */
- { T_SSHFP, "SSHFP" }, /* Using DNS to Securely Publish SSH Key Fingerprints (RFC 4255) */
- { T_IPSECKEY, "IPSECKEY" }, /* draft-ietf-ipseckey-rr */
- { T_RRSIG, "RRSIG" }, /* future RFC 2535bis */
- { T_NSEC, "NSEC" }, /* future RFC 2535bis */
- { T_DNSKEY, "DNSKEY" }, /* future RFC 2535bis */
- { T_DHCID, "DHCID" }, /* DHCID RR (RFC 4701) */
- { T_NSEC3, "NSEC3" }, /* Next secure hash (RFC 5155) */
- { T_NSEC3PARAM, "NSEC3PARAM" }, /* Next secure hash (RFC 5155) */
-
- { T_HIP, "HIP" }, /* Host Identity Protocol (HIP) RR (RFC 5205) */
-
-
-
- { T_SPF, "SPF" }, /* SPF RR (RFC 4408) section 3 */
- { 100, "UINFO" },
- { 101, "UID" },
- { 102, "GID" },
- { 103, "UNSPEC" },
-
- { T_TKEY, "TKEY"},
- { T_TSIG, "TSIG"},
-
- { T_WINS, "WINS"},
- { T_WINS_R, "WINS-R"},
-
- { 251, "IXFR"},
- { 252, "AXFR"},
- { 253, "MAILB"},
- { 254, "MAILA"},
- { 255, "ANY"},
-
-
- { T_DLV, "DLV" }, /* Domain Lookaside Validation DNS Resource Record (RFC 4431) */
- {0, NULL}
+ { 0, "Unused" },
+ { T_A, "A" },
+ { T_NS, "NS" },
+ { T_MD, "MD" },
+ { T_MF, "MF" },
+ { T_CNAME, "CNAME" },
+ { T_SOA, "SOA" },
+ { T_MB, "MB" },
+ { T_MG, "MG" },
+ { T_MR, "MR" },
+ { T_NULL, "NULL" },
+ { T_WKS, "WKS" },
+ { T_PTR, "PTR" },
+ { T_HINFO, "HINFO" },
+ { T_MINFO, "MINFO" },
+ { T_MX, "MX" },
+ { T_TXT, "TXT" },
+ { T_RP, "RP" }, /* RFC 1183 */
+ { T_AFSDB, "AFSDB" }, /* RFC 1183 */
+ { T_X25, "X25" }, /* RFC 1183 */
+ { T_ISDN, "ISDN" }, /* RFC 1183 */
+ { T_RT, "RT" }, /* RFC 1183 */
+ { T_NSAP, "NSAP" }, /* RFC 1706 */
+ { T_NSAP_PTR, "NSAP-PTR" }, /* RFC 1348 */
+ { T_SIG, "SIG" }, /* RFC 2535 */
+ { T_KEY, "KEY" }, /* RFC 2535 */
+ { T_PX, "PX" }, /* RFC 1664 */
+ { T_GPOS, "GPOS" }, /* RFC 1712 */
+ { T_AAAA, "AAAA" }, /* RFC 1886 */
+ { T_LOC, "LOC" }, /* RFC 1886 */
+ { T_NXT, "NXT" }, /* RFC 1876 */
+ { T_EID, "EID" },
+ { T_NIMLOC, "NIMLOC" },
+ { T_SRV, "SRV" }, /* RFC 2052 */
+ { T_ATMA, "ATMA" },
+ { T_NAPTR, "NAPTR" }, /* RFC 3403 */
+ { T_KX, "KX" }, /* RFC 2230 */
+ { T_CERT, "CERT" }, /* RFC 4398 */
+ { T_A6, "A6" }, /* RFC 2874 */
+ { T_DNAME, "DNAME" }, /* RFC 2672 */
+
+ { T_OPT, "OPT" }, /* RFC 2671 */
+ { T_APL, "APL" }, /* RFC 3123 */
+ { T_DS, "DS" }, /* RFC 3658 */
+ { T_SSHFP, "SSHFP" }, /* Using DNS to Securely Publish SSH Key Fingerprints (RFC 4255) */
+ { T_IPSECKEY, "IPSECKEY" }, /* draft-ietf-ipseckey-rr */
+ { T_RRSIG, "RRSIG" }, /* future RFC 2535bis */
+ { T_NSEC, "NSEC" }, /* future RFC 2535bis */
+ { T_DNSKEY, "DNSKEY" }, /* future RFC 2535bis */
+ { T_DHCID, "DHCID" }, /* DHCID RR (RFC 4701) */
+ { T_NSEC3, "NSEC3" }, /* Next secure hash (RFC 5155) */
+ { T_NSEC3PARAM, "NSEC3PARAM" }, /* Next secure hash (RFC 5155) */
+
+ { T_HIP, "HIP" }, /* Host Identity Protocol (HIP) RR (RFC 5205) */
+
+
+
+ { T_SPF, "SPF" }, /* SPF RR (RFC 4408) section 3 */
+ { 100, "UINFO" },
+ { 101, "UID" },
+ { 102, "GID" },
+ { 103, "UNSPEC" },
+
+ { T_TKEY, "TKEY" },
+ { T_TSIG, "TSIG" },
+
+ { T_WINS, "WINS" },
+ { T_WINS_R, "WINS-R" },
+
+ { 251, "IXFR" },
+ { 252, "AXFR" },
+ { 253, "MAILB" },
+ { 254, "MAILA" },
+ { 255, "ANY" },
+
+
+ { T_DLV, "DLV" }, /* Domain Lookaside Validation DNS Resource Record (RFC 4431) */
+ {0, NULL}
};
static const char *
@@ -546,41 +547,41 @@ dns_type_description (guint type)
"Mailbox or mail list information",
"Mail exchange",
"Text strings",
- "Responsible person", /* RFC 1183 */
- "AFS data base location", /* RFC 1183 */
- "X.25 address", /* RFC 1183 */
- "ISDN number", /* RFC 1183 */
- "Route through", /* RFC 1183 */
- "OSI NSAP", /* RFC 1706 */
- "OSI NSAP name pointer", /* RFC 1348 */
- "Signature", /* RFC 2535 */
- "Public key", /* RFC 2535 */
+ "Responsible person", /* RFC 1183 */
+ "AFS data base location", /* RFC 1183 */
+ "X.25 address", /* RFC 1183 */
+ "ISDN number", /* RFC 1183 */
+ "Route through", /* RFC 1183 */
+ "OSI NSAP", /* RFC 1706 */
+ "OSI NSAP name pointer", /* RFC 1348 */
+ "Signature", /* RFC 2535 */
+ "Public key", /* RFC 2535 */
"Pointer to X.400/RFC822 mapping info", /* RFC 1664 */
- "Geographical position", /* RFC 1712 */
- "IPv6 address", /* RFC 1886 */
- "Location", /* RFC 1876 */
- "Next", /* RFC 2535 */
+ "Geographical position", /* RFC 1712 */
+ "IPv6 address", /* RFC 1886 */
+ "Location", /* RFC 1876 */
+ "Next", /* RFC 2535 */
"EID",
"NIMLOC",
- "Service location", /* RFC 2052 */
+ "Service location", /* RFC 2052 */
"ATMA",
- "Naming authority pointer", /* RFC 2168 */
- "Key Exchange", /* RFC 2230 */
- "Certificate", /* RFC 2538 */
- "IPv6 address with indirection", /* RFC 2874 */
- "Non-terminal DNS name redirection", /* RFC 2672 */
+ "Naming authority pointer", /* RFC 2168 */
+ "Key Exchange", /* RFC 2230 */
+ "Certificate", /* RFC 4398 */
+ "IPv6 address with indirection", /* RFC 2874 */
+ "Non-terminal DNS name redirection", /* RFC 2672 */
NULL,
- "EDNS0 option", /* RFC 2671 */
- "Lists of Address Prefixes", /* RFC 3123 */
- "Delegation Signer", /* RFC 3658 */
- "SSH public host key fingerprint", /* RFC 4255 */
- "key to use with IPSEC", /* draft-ietf-ipseckey-rr */
- "RR signature", /* future RFC 2535bis */
- "Next secured", /* future RFC 2535bis */
- "DNS public key", /* future RFC 2535bis */
- "DHCP Information", /* RFC 4701 */
- "Next secured hash", /* RFC 5155 */
- "NSEC3 parameters", /* RFC 5155 */
+ "EDNS0 option", /* RFC 2671 */
+ "Lists of Address Prefixes", /* RFC 3123 */
+ "Delegation Signer", /* RFC 3658 */
+ "SSH public host key fingerprint", /* RFC 4255 */
+ "key to use with IPSEC", /* draft-ietf-ipseckey-rr */
+ "RR signature", /* future RFC 2535bis */
+ "Next secured", /* future RFC 2535bis */
+ "DNS public key", /* future RFC 2535bis */
+ "DHCP Information", /* RFC 4701 */
+ "Next secured hash", /* RFC 5155 */
+ "NSEC3 parameters", /* RFC 5155 */
NULL,
NULL,
NULL,
@@ -593,9 +594,9 @@ dns_type_description (guint type)
if (short_name == NULL) {
return ep_strdup_printf("Unknown (%u)", type);
}
- if (type < array_length(type_names))
+ if (type < array_length(type_names)) {
long_name = type_names[type];
- else {
+ } else {
/* special cases */
switch (type) {
/* meta */
@@ -608,7 +609,7 @@ dns_type_description (guint type)
/* queries */
case 251:
- long_name = "Request for incremental zone transfer"; /* RFC 1995 */
+ long_name = "Request for incremental zone transfer"; /* RFC 1995 */
break;
case 252:
long_name = "Request for full zone transfer";
@@ -628,20 +629,21 @@ dns_type_description (guint type)
}
}
- if (long_name != NULL)
+ if (long_name != NULL) {
return ep_strdup_printf("%s (%s)", short_name, long_name);
- else
+ } else {
return ep_strdup(short_name);
+ }
}
static const value_string dns_classes[] = {
- {C_IN, "IN"},
- {C_CS, "CS"},
- {C_CH, "CH"},
- {C_HS, "HS"},
- {C_NONE, "NONE"},
- {C_ANY, "ANY"},
- {0,NULL}
+ {C_IN, "IN"},
+ {C_CS, "CS"},
+ {C_CH, "CH"},
+ {C_HS, "HS"},
+ {C_NONE, "NONE"},
+ {C_ANY, "ANY"},
+ {0,NULL}
};
const char *
@@ -659,167 +661,174 @@ int
expand_dns_name(tvbuff_t *tvb, int offset, int max_len, int dns_data_offset,
const guchar **name)
{
- int start_offset = offset;
+ int start_offset = offset;
guchar *np;
- int len = -1;
- int chars_processed = 0;
- int data_size = tvb_reported_length_remaining(tvb, dns_data_offset);
- int component_len;
- int indir_offset;
- int maxname;
-
- const int min_len = 1; /* Minimum length of encoded name (for root) */
- /* If we're about to return a value (probably negative) which is less
- * than the minimum length, we're looking at bad data and we're liable
- * to put the dissector into a loop. Instead we throw an exception */
+ int len = -1;
+ int chars_processed = 0;
+ int data_size = tvb_reported_length_remaining(tvb, dns_data_offset);
+ int component_len;
+ int indir_offset;
+ int maxname;
+
+ const int min_len = 1; /* Minimum length of encoded name (for root) */
+ /* If we're about to return a value (probably negative) which is less
+ * than the minimum length, we're looking at bad data and we're liable
+ * to put the dissector into a loop. Instead we throw an exception */
maxname=MAXDNAME;
np=ep_alloc(maxname);
*name=np;
- maxname--; /* reserve space for the trailing '\0' */
+ maxname--; /* reserve space for the trailing '\0' */
for (;;) {
- if (max_len && offset - start_offset > max_len - 1)
+ if (max_len && offset - start_offset > max_len - 1) {
break;
+ }
component_len = tvb_get_guint8(tvb, offset);
offset++;
- if (component_len == 0)
+ if (component_len == 0) {
break;
+ }
chars_processed++;
switch (component_len & 0xc0) {
- case 0x00:
- /* Label */
- if (np != *name) {
- /* Not the first component - put in a '.'. */
- if (maxname > 0) {
- *np++ = '.';
- maxname--;
+ case 0x00:
+ /* Label */
+ if (np != *name) {
+ /* Not the first component - put in a '.'. */
+ if (maxname > 0) {
+ *np++ = '.';
+ maxname--;
+ }
}
- }
- while (component_len > 0) {
- if (max_len && offset - start_offset > max_len - 1)
- THROW(ReportedBoundsError);
- if (maxname > 0) {
- *np++ = tvb_get_guint8(tvb, offset);
- maxname--;
+ while (component_len > 0) {
+ if (max_len && offset - start_offset > max_len - 1) {
+ THROW(ReportedBoundsError);
+ }
+ if (maxname > 0) {
+ *np++ = tvb_get_guint8(tvb, offset);
+ maxname--;
+ }
+ component_len--;
+ offset++;
+ chars_processed++;
}
- component_len--;
- offset++;
- chars_processed++;
- }
- break;
-
- case 0x40:
- /* Extended label (RFC 2673) */
- switch (component_len & 0x3f) {
-
- case 0x01:
- /* Bitstring label */
- {
- int bit_count;
- int label_len;
- int print_len;
-
- bit_count = tvb_get_guint8(tvb, offset);
- offset++;
- label_len = (bit_count - 1) / 8 + 1;
-
- if (maxname > 0) {
- print_len = g_snprintf(np, maxname + 1, "\\[x");
- if (print_len != -1 && print_len <= maxname) {
- /* Some versions of g_snprintf return -1 if they'd truncate
- the output. Others return <buf_size> or greater. */
- np += print_len;
- maxname -= print_len;
- } else {
- /* Nothing printed, as there's no room.
- Suppress all subsequent printing. */
- maxname = 0;
- }
- }
- while(label_len--) {
- if (maxname > 0) {
- print_len = g_snprintf(np, maxname + 1, "%02x",
- tvb_get_guint8(tvb, offset));
- if (print_len != -1 && print_len <= maxname) {
- /* Some versions of g_snprintf return -1 if they'd truncate
- the output. Others return <buf_size> or greater. */
- np += print_len;
- maxname -= print_len;
- } else {
- /* Nothing printed, as there's no room.
- Suppress all subsequent printing. */
- maxname = 0;
- }
- }
- offset++;
- }
- if (maxname > 0) {
- print_len = g_snprintf(np, maxname + 1, "/%d]", bit_count);
- if (print_len != -1 && print_len <= maxname) {
- /* Some versions of g_snprintf return -1 if they'd truncate
- the output. Others return <buf_size> or greater. */
- np += print_len;
- maxname -= print_len;
- } else {
- /* Nothing printed, as there's no room.
- Suppress all subsequent printing. */
- maxname = 0;
- }
- }
- }
- break;
+ break;
- default:
- *name="<Unknown extended label>";
- /* Parsing will probably fail from here on, since the */
- /* label length is unknown... */
- len = offset - start_offset;
- if (len < min_len)
- THROW(ReportedBoundsError);
- return len;
- }
- break;
+ case 0x40:
+ /* Extended label (RFC 2673) */
+ switch (component_len & 0x3f) {
+
+ case 0x01:
+ /* Bitstring label */
+ {
+ int bit_count;
+ int label_len;
+ int print_len;
+
+ bit_count = tvb_get_guint8(tvb, offset);
+ offset++;
+ label_len = (bit_count - 1) / 8 + 1;
+
+ if (maxname > 0) {
+ print_len = g_snprintf(np, maxname + 1, "\\[x");
+ if (print_len != -1 && print_len <= maxname) {
+ /* Some versions of g_snprintf return -1 if they'd truncate
+ the output. Others return <buf_size> or greater. */
+ np += print_len;
+ maxname -= print_len;
+ } else {
+ /* Nothing printed, as there's no room.
+ Suppress all subsequent printing. */
+ maxname = 0;
+ }
+ }
+ while (label_len--) {
+ if (maxname > 0) {
+ print_len = g_snprintf(np, maxname + 1, "%02x",
+ tvb_get_guint8(tvb, offset));
+ if (print_len != -1 && print_len <= maxname) {
+ /* Some versions of g_snprintf return -1 if they'd truncate
+ the output. Others return <buf_size> or greater. */
+ np += print_len;
+ maxname -= print_len;
+ } else {
+ /* Nothing printed, as there's no room.
+ Suppress all subsequent printing. */
+ maxname = 0;
+ }
+ }
+ offset++;
+ }
+ if (maxname > 0) {
+ print_len = g_snprintf(np, maxname + 1, "/%d]", bit_count);
+ if (print_len != -1 && print_len <= maxname) {
+ /* Some versions of g_snprintf return -1 if they'd truncate
+ the output. Others return <buf_size> or greater. */
+ np += print_len;
+ maxname -= print_len;
+ } else {
+ /* Nothing printed, as there's no room.
+ Suppress all subsequent printing. */
+ maxname = 0;
+ }
+ }
+ }
+ break;
+
+ default:
+ *name="<Unknown extended label>";
+ /* Parsing will probably fail from here on, since the */
+ /* label length is unknown... */
+ len = offset - start_offset;
+ if (len < min_len) {
+ THROW(ReportedBoundsError);
+ }
+ return len;
+ }
+ break;
- case 0x80:
- THROW(ReportedBoundsError);
+ case 0x80:
+ THROW(ReportedBoundsError);
- case 0xc0:
- /* Pointer. */
- indir_offset = dns_data_offset +
+ case 0xc0:
+ /* Pointer. */
+ indir_offset = dns_data_offset +
(((component_len & ~0xc0) << 8) | tvb_get_guint8(tvb, offset));
- offset++;
- chars_processed++;
-
- /* If "len" is negative, we are still working on the original name,
- not something pointed to by a pointer, and so we should set "len"
- to the length of the original name. */
- if (len < 0)
- len = offset - start_offset;
+ offset++;
+ chars_processed++;
- /* If we've looked at every character in the message, this pointer
- will make us look at some character again, which means we're
- looping. */
- if (chars_processed >= data_size) {
- *name="<Name contains a pointer that loops>";
- if (len < min_len)
- THROW(ReportedBoundsError);
- return len;
- }
+ /* If "len" is negative, we are still working on the original name,
+ not something pointed to by a pointer, and so we should set "len"
+ to the length of the original name. */
+ if (len < 0) {
+ len = offset - start_offset;
+ }
+ /* If we've looked at every character in the message, this pointer
+ will make us look at some character again, which means we're
+ looping. */
+ if (chars_processed >= data_size) {
+ *name="<Name contains a pointer that loops>";
+ if (len < min_len) {
+ THROW(ReportedBoundsError);
+ }
+ return len;
+ }
- offset = indir_offset;
- break; /* now continue processing from there */
+ offset = indir_offset;
+ break; /* now continue processing from there */
}
}
*np = '\0';
/* If "len" is negative, we haven't seen a pointer, and thus haven't
set the length, so set it. */
- if (len < 0)
+ if (len < 0) {
len = offset - start_offset;
- if (len < min_len)
+ }
+ if (len < min_len) {
THROW(ReportedBoundsError);
+ }
return len;
}
@@ -832,8 +841,9 @@ get_dns_name(tvbuff_t *tvb, int offset, int max_len, int dns_data_offset,
len = expand_dns_name(tvb, offset, max_len, dns_data_offset, name);
/* Zero-length name means "root server" */
- if (**name == '\0')
+ if (**name == '\0') {
*name="<Root>";
+ }
return len;
}
@@ -869,8 +879,8 @@ get_dns_name_type_class(tvbuff_t *tvb, int offset, int dns_data_offset,
static double
rfc1867_size(tvbuff_t *tvb, int offset)
{
- guint8 val;
- double size;
+ guint8 val;
+ double size;
guint32 exponent;
val = tvb_get_guint8(tvb, offset);
@@ -880,16 +890,16 @@ rfc1867_size(tvbuff_t *tvb, int offset)
size *= 10;
exponent--;
}
- return size / 100; /* return size in meters, not cm */
+ return size / 100; /* return size in meters, not cm */
}
static char *
rfc1867_angle(tvbuff_t *tvb, int offset, const char *nsew)
{
- guint32 angle;
- char direction;
- guint32 degrees, minutes, secs, tsecs;
- /* "%u deg %u min %u.%03u sec %c" */
+ guint32 angle;
+ char direction;
+ guint32 degrees, minutes, secs, tsecs;
+ /* "%u deg %u min %u.%03u sec %c" */
static char buf[10+1+3+1 + 2+1+3+1 + 2+1+3+1+3+1 + 1 + 1];
angle = tvb_get_ntohl(tvb, offset);
@@ -908,7 +918,7 @@ rfc1867_angle(tvbuff_t *tvb, int offset, const char *nsew)
minutes = angle % 60;
degrees = angle / 60;
g_snprintf(buf, sizeof(buf), "%u deg %u min %u.%03u sec %c", degrees, minutes, secs,
- tsecs, direction);
+ tsecs, direction);
return buf;
}
@@ -916,17 +926,17 @@ static int
dissect_dns_query(tvbuff_t *tvb, int offset, int dns_data_offset,
column_info *cinfo, proto_tree *dns_tree, gboolean is_mdns)
{
- int len;
+ int len;
const guchar *name;
- gchar *name_out;
- int name_len;
- int type;
- int dns_class;
- int qu;
- const char *type_name;
- int data_start;
- proto_tree *q_tree;
- proto_item *tq;
+ gchar *name_out;
+ int name_len;
+ int type;
+ int dns_class;
+ int qu;
+ const char *type_name;
+ int data_start;
+ proto_tree *q_tree;
+ proto_item *tq;
data_start = offset;
@@ -936,8 +946,9 @@ dissect_dns_query(tvbuff_t *tvb, int offset, int dns_data_offset,
/* Split the QU flag and the class */
qu = dns_class & C_QU;
dns_class &= ~C_QU;
- } else
+ } else {
qu = 0;
+ }
type_name = dns_type_name(type);
@@ -949,33 +960,36 @@ dissect_dns_query(tvbuff_t *tvb, int offset, int dns_data_offset,
if (cinfo != NULL) {
col_append_fstr(cinfo, COL_INFO, " %s %s", type_name, name_out);
- if (is_mdns)
+ if (is_mdns) {
col_append_fstr(cinfo, COL_INFO, ", \"%s\" question", qu ? "QU" : "QM");
+ }
}
if (dns_tree != NULL) {
tq = proto_tree_add_text(dns_tree, tvb, offset, len, "%s: type %s, class %s",
- name_out, type_name, dns_class_name(dns_class));
- if (is_mdns)
+ name_out, type_name, dns_class_name(dns_class));
+ if (is_mdns) {
proto_item_append_text(tq, ", \"%s\" question", qu ? "QU" : "QM");
+ }
q_tree = proto_item_add_subtree(tq, ett_dns_qd);
proto_tree_add_string(q_tree, hf_dns_qry_name, tvb, offset, name_len, name);
offset += name_len;
proto_tree_add_uint_format(q_tree, hf_dns_qry_type, tvb, offset, 2, type,
- "Type: %s", dns_type_description(type));
+ "Type: %s", dns_type_description(type));
offset += 2;
if (is_mdns) {
proto_tree_add_uint(q_tree, hf_dns_qry_class_mdns, tvb, offset, 2, dns_class);
proto_tree_add_boolean(q_tree, hf_dns_qry_qu, tvb, offset, 2, qu);
- } else
+ } else {
proto_tree_add_uint(q_tree, hf_dns_qry_class, tvb, offset, 2, dns_class);
+ }
offset += 2;
}
- if(data_start + len != offset) {
+ if (data_start + len != offset) {
/* Add expert info ? (about incorrect len...)*/
}
return len;
@@ -987,26 +1001,27 @@ add_rr_to_tree(proto_item *trr, int rr_type, tvbuff_t *tvb, int offset,
const guchar *name, int namelen, int type, int dns_class, int flush,
guint ttl, gushort data_len, gboolean is_mdns)
{
- proto_tree *rr_tree;
- gchar **srv_rr_info;
+ proto_tree *rr_tree;
+ gchar **srv_rr_info;
rr_tree = proto_item_add_subtree(trr, rr_type);
- if(type == T_SRV) {
+ if (type == T_SRV) {
srv_rr_info = g_strsplit(name, ".", 3);
/* The + 1 on the strings is to skip the leading '_' */
proto_tree_add_string(rr_tree, hf_dns_srv_service, tvb, offset,
- namelen, srv_rr_info[0]+1);
+ namelen, srv_rr_info[0]+1);
if (srv_rr_info[1]) {
proto_tree_add_string(rr_tree, hf_dns_srv_proto, tvb, offset,
- namelen, srv_rr_info[1]+1);
+ namelen, srv_rr_info[1]+1);
- if (srv_rr_info[2])
- proto_tree_add_string(rr_tree, hf_dns_srv_name, tvb, offset,
- namelen, srv_rr_info[2]);
+ if (srv_rr_info[2]) {
+ proto_tree_add_string(rr_tree, hf_dns_srv_name, tvb, offset,
+ namelen, srv_rr_info[2]);
+ }
}
g_strfreev(srv_rr_info);
@@ -1017,16 +1032,17 @@ add_rr_to_tree(proto_item *trr, int rr_type, tvbuff_t *tvb, int offset,
offset += namelen;
proto_tree_add_uint_format(rr_tree, hf_dns_rr_type, tvb, offset, 2, type,
- "Type: %s", dns_type_description(type));
+ "Type: %s", dns_type_description(type));
offset += 2;
if (is_mdns) {
proto_tree_add_uint(rr_tree, hf_dns_rr_class_mdns, tvb, offset, 2, dns_class);
proto_tree_add_boolean(rr_tree, hf_dns_rr_cache_flush, tvb, offset, 2, flush);
- } else
+ } else {
proto_tree_add_uint(rr_tree, hf_dns_rr_class, tvb, offset, 2, dns_class);
+ }
offset += 2;
proto_tree_add_uint_format(rr_tree, hf_dns_rr_ttl, tvb, offset, 4, ttl,
- "Time to live: %s", time_secs_to_str(ttl));
+ "Time to live: %s", time_secs_to_str(ttl));
offset += 4;
proto_tree_add_uint(rr_tree, hf_dns_rr_len, tvb, offset, 2, data_len);
return rr_tree;
@@ -1045,7 +1061,7 @@ add_opt_rr_to_tree(proto_item *trr, int rr_type, tvbuff_t *tvb, int offset,
proto_tree_add_string(rr_tree, hf_dns_rr_name, tvb, offset, namelen, name);
offset += namelen;
proto_tree_add_uint_format(rr_tree, hf_dns_rr_type, tvb, offset, 2, type,
- "Type: %s", dns_type_description(type));
+ "Type: %s", dns_type_description(type));
offset += 2;
if (is_mdns) {
proto_tree_add_text(rr_tree, tvb, offset, 2, "%s",
@@ -1054,8 +1070,7 @@ add_opt_rr_to_tree(proto_item *trr, int rr_type, tvbuff_t *tvb, int offset,
proto_tree_add_boolean(rr_tree, hf_dns_rr_cache_flush, tvb, offset, 2,
flush);
} else {
- proto_tree_add_text(rr_tree, tvb, offset, 2, "UDP payload size: %u",
- dns_class & 0xffff);
+ proto_tree_add_text(rr_tree, tvb, offset, 2, "UDP payload size: %u", dns_class & 0xffff);
}
offset += 2;
proto_tree_add_text(rr_tree, tvb, offset, 1, "Higher bits in extended RCODE: 0x%x",
@@ -1068,7 +1083,7 @@ add_opt_rr_to_tree(proto_item *trr, int rr_type, tvbuff_t *tvb, int offset,
if (ttl & 0x8000) {
Z_tree = proto_item_add_subtree(Z_item, rr_type);
proto_tree_add_text(Z_tree, tvb, offset, 2, "Bit 0 (DO bit): 1 (Accepts DNSSEC security RRs)");
- proto_tree_add_text(Z_tree, tvb, offset, 2, "Bits 1-15: 0x%x (reserved)", (ttl >> 17) & 0xff);
+ proto_tree_add_text(Z_tree, tvb, offset, 2, "Bits 1-15: 0x%x (reserved)", ttl & 0x7fff);
}
offset += 2;
proto_tree_add_uint(rr_tree, hf_dns_rr_len, tvb, offset, 2, data_len);
@@ -1078,8 +1093,8 @@ add_opt_rr_to_tree(proto_item *trr, int rr_type, tvbuff_t *tvb, int offset,
static int
dissect_type_bitmap(proto_tree *rr_tree, tvbuff_t *tvb, int cur_offset, int rr_len)
{
- int mask, blockbase, blocksize;
- int i, initial_offset, rr_type;
+ int mask, blockbase, blocksize;
+ int i, initial_offset, rr_type;
guint8 bits;
initial_offset = cur_offset;
@@ -1087,7 +1102,7 @@ dissect_type_bitmap(proto_tree *rr_tree, tvbuff_t *tvb, int cur_offset, int rr_l
blockbase = tvb_get_guint8(tvb, cur_offset);
blocksize = tvb_get_guint8(tvb, cur_offset + 1);
cur_offset += 2;
- rr_len -= 2;
+ rr_len -= 2;
rr_type = blockbase * 256;
for( ; blocksize; blocksize-- ) {
bits = tvb_get_guint8(tvb, cur_offset);
@@ -1102,7 +1117,7 @@ dissect_type_bitmap(proto_tree *rr_tree, tvbuff_t *tvb, int cur_offset, int rr_l
rr_type++;
}
cur_offset += 1;
- rr_len -= 1;
+ rr_len -= 1;
}
}
return(initial_offset - cur_offset);
@@ -1110,54 +1125,69 @@ dissect_type_bitmap(proto_tree *rr_tree, tvbuff_t *tvb, int cur_offset, int rr_l
/*
* SIG, KEY, and CERT RR algorithms.
- * http://www.iana.org/assignments/dns-sec-alg-numbers/dns-sec-alg-numbers.txt
+ * http://www.iana.org/assignments/dns-sec-alg-numbers/dns-sec-alg-numbers.txt (last updated 2012-04-13)
*/
-#define DNS_ALGO_RSAMD5 1 /* RSA/MD5 */
-#define DNS_ALGO_DH 2 /* Diffie-Hellman */
-#define DNS_ALGO_DSA 3 /* DSA */
-#define DNS_ALGO_ECC 4 /* Elliptic curve crypto */
-#define DNS_ALGO_RSASHA1 5 /* RSA/SHA1 */
-#define DNS_ALGO_DSA_NSEC3_SHA1 6 /* DSA + NSEC3/SHA1 */
-#define DNS_ALGO_RSASHA1_NSEC3_SHA1 7 /* RSA/SHA1 + NSEC3/SHA1 */
-#define DNS_ALGO_RSASHA256 8 /* RSA/SHA-256 */
-#define DNS_ALGO_RSASHA512 10 /* RSA/SHA-512 */
-#define DNS_ALGO_ECCGOST 12 /* GOST R 34.10-2001 */
-#define DNS_ALGO_HMACMD5 157 /* HMAC/MD5 */
-#define DNS_ALGO_INDIRECT 252 /* Indirect key */
-#define DNS_ALGO_PRIVATEDNS 253 /* Private, domain name */
-#define DNS_ALGO_PRIVATEOID 254 /* Private, OID */
+#define DNS_ALGO_RSAMD5 1 /* RSA/MD5 */
+#define DNS_ALGO_DH 2 /* Diffie-Hellman */
+#define DNS_ALGO_DSA 3 /* DSA */
+#define DNS_ALGO_ECC 4 /* Elliptic curve crypto */
+#define DNS_ALGO_RSASHA1 5 /* RSA/SHA1 */
+#define DNS_ALGO_DSA_NSEC3_SHA1 6 /* DSA + NSEC3/SHA1 */
+#define DNS_ALGO_RSASHA1_NSEC3_SHA1 7 /* RSA/SHA1 + NSEC3/SHA1 */
+#define DNS_ALGO_RSASHA256 8 /* RSA/SHA-256 */
+#define DNS_ALGO_RSASHA512 10 /* RSA/SHA-512 */
+#define DNS_ALGO_ECCGOST 12 /* GOST R 34.10-2001 */
+#define DNS_ALGO_ECDSAP256SHA256 13 /* ECDSA Curve P-256 with SHA-256 */
+#define DNS_ALGO_ECDSAP386SHA386 14 /* ECDSA Curve P-386 with SHA-386 */
+#define DNS_ALGO_HMACMD5 157 /* HMAC/MD5 */
+#define DNS_ALGO_INDIRECT 252 /* Indirect key */
+#define DNS_ALGO_PRIVATEDNS 253 /* Private, domain name */
+#define DNS_ALGO_PRIVATEOID 254 /* Private, OID */
static const value_string algo_vals[] = {
- { DNS_ALGO_RSAMD5, "RSA/MD5" },
- { DNS_ALGO_DH, "Diffie-Hellman" },
- { DNS_ALGO_DSA, "DSA" },
- { DNS_ALGO_ECC, "Elliptic curve crypto" },
- { DNS_ALGO_RSASHA1, "RSA/SHA1" },
- { DNS_ALGO_DSA_NSEC3_SHA1, "DSA + NSEC3/SHA1" },
- { DNS_ALGO_RSASHA1_NSEC3_SHA1,"RSA/SHA1 + NSEC3/SHA1" },
- { DNS_ALGO_RSASHA256, "RSA/SHA-256" },
- { DNS_ALGO_RSASHA512, "RSA/SHA-512" },
- { DNS_ALGO_ECCGOST, "GOST R 34.10-2001" },
- { DNS_ALGO_HMACMD5, "HMAC/MD5" },
- { DNS_ALGO_INDIRECT, "Indirect key" },
- { DNS_ALGO_PRIVATEDNS, "Private, domain name" },
- { DNS_ALGO_PRIVATEOID, "Private, OID" },
- { 0, NULL }
+ { DNS_ALGO_RSAMD5, "RSA/MD5" },
+ { DNS_ALGO_DH, "Diffie-Hellman" },
+ { DNS_ALGO_DSA, "DSA" },
+ { DNS_ALGO_ECC, "Elliptic curve crypto" },
+ { DNS_ALGO_RSASHA1, "RSA/SHA1" },
+ { DNS_ALGO_DSA_NSEC3_SHA1, "DSA + NSEC3/SHA1" },
+ { DNS_ALGO_RSASHA1_NSEC3_SHA1,"RSA/SHA1 + NSEC3/SHA1" },
+ { DNS_ALGO_RSASHA256, "RSA/SHA-256" },
+ { DNS_ALGO_RSASHA512, "RSA/SHA-512" },
+ { DNS_ALGO_ECCGOST, "GOST R 34.10-2001" },
+ { DNS_ALGO_ECDSAP256SHA256, "ECDSA Curve P-256 with SHA-256" },
+ { DNS_ALGO_ECDSAP386SHA386, "ECDSA Curve P-386 with SHA-386" },
+ { DNS_ALGO_HMACMD5, "HMAC/MD5" },
+ { DNS_ALGO_INDIRECT, "Indirect key" },
+ { DNS_ALGO_PRIVATEDNS, "Private, domain name" },
+ { DNS_ALGO_PRIVATEOID, "Private, OID" },
+ { 0, NULL }
};
-#define DNS_CERT_PGP 1 /* PGP */
-#define DNS_CERT_PKIX 2 /* PKIX */
-#define DNS_CERT_SPKI 3 /* SPKI */
-#define DNS_CERT_PRIVATEURI 253 /* Private, URI */
-#define DNS_CERT_PRIVATEOID 254 /* Private, OID */
+/* See RFC 4398 */
+#define DNS_CERT_PKIX 1 /* X509 certificate */
+#define DNS_CERT_SPKI 2 /* Simple public key certificate */
+#define DNS_CERT_PGP 3 /* OpenPGP packet */
+#define DNS_CERT_IPKIX 4 /* Indirect PKIX */
+#define DNS_CERT_ISPKI 5 /* Indirect SPKI */
+#define DNS_CERT_IPGP 6 /* Indirect PGP */
+#define DNS_CERT_ACPKIX 7 /* Attribute certificate */
+#define DNS_CERT_IACPKIX 8 /* Indirect ACPKIX */
+#define DNS_CERT_PRIVATEURI 253 /* Private, URI */
+#define DNS_CERT_PRIVATEOID 254 /* Private, OID */
static const value_string cert_vals[] = {
- { DNS_CERT_PGP, "PGP" },
- { DNS_CERT_PKIX, "PKIX" },
- { DNS_CERT_SPKI, "SPKI" },
- { DNS_CERT_PRIVATEURI, "Private, URI" },
- { DNS_CERT_PRIVATEOID, "Private, OID" },
- { 0, NULL }
+ { DNS_CERT_PKIX, "PKIX" },
+ { DNS_CERT_SPKI, "SPKI" },
+ { DNS_CERT_PGP, "PGP" },
+ { DNS_CERT_IPKIX, "IPKIX" },
+ { DNS_CERT_ISPKI, "ISPKI" },
+ { DNS_CERT_IPGP, "IPGP" },
+ { DNS_CERT_ACPKIX, "ACPKIX" },
+ { DNS_CERT_IACPKIX, "IACPKIX" },
+ { DNS_CERT_PRIVATEURI, "Private, URI" },
+ { DNS_CERT_PRIVATEOID, "Private, OID" },
+ { 0, NULL }
};
/**
@@ -1167,7 +1197,7 @@ static guint16
compute_key_id(tvbuff_t *tvb, int offset, int size, guint8 algo)
{
guint32 ac;
- guint8 c1, c2;
+ guint8 c1, c2;
DISSECTOR_ASSERT(size >= 4);
@@ -1176,13 +1206,13 @@ compute_key_id(tvbuff_t *tvb, int offset, int size, guint8 algo)
return (guint16)(tvb_get_guint8(tvb, offset + size - 3) << 8) + tvb_get_guint8( tvb, offset + size - 2 );
default:
for (ac = 0; size > 1; size -= 2, offset += 2) {
- c1 = tvb_get_guint8( tvb, offset );
- c2 = tvb_get_guint8( tvb, offset + 1 );
- ac += (c1 << 8) + c2 ;
+ c1 = tvb_get_guint8( tvb, offset );
+ c2 = tvb_get_guint8( tvb, offset + 1 );
+ ac += (c1 << 8) + c2 ;
}
if (size > 0) {
- c1 = tvb_get_guint8( tvb, offset );
- ac += c1 << 8;
+ c1 = tvb_get_guint8( tvb, offset );
+ ac += c1 << 8;
}
ac += (ac >> 16) & 0xffff;
return (guint16)(ac & 0xffff);
@@ -1195,37 +1225,37 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset,
column_info *cinfo, proto_tree *dns_tree, packet_info *pinfo,
gboolean is_mdns)
{
- int len;
+ int len;
const guchar *name;
- gchar *name_out;
- int name_len;
- int type;
- int dns_class;
- int flush;
- const char *class_name;
- const char *type_name;
- int data_offset;
- int cur_offset;
- int data_start;
- guint ttl;
- gushort data_len;
- proto_tree *rr_tree = NULL;
- proto_item *trr = NULL;
+ gchar *name_out;
+ int name_len;
+ int type;
+ int dns_class;
+ int flush;
+ const char *class_name;
+ const char *type_name;
+ int data_offset;
+ int cur_offset;
+ int data_start;
+ guint ttl;
+ gushort data_len;
+ proto_tree *rr_tree = NULL;
+ proto_item *trr = NULL;
data_start = data_offset = offsetx;
cur_offset = offsetx;
len = get_dns_name_type_class(tvb, offsetx, dns_data_offset, &name, &name_len,
- &type, &dns_class);
+ &type, &dns_class);
data_offset += len;
cur_offset += len;
if (is_mdns) {
/* Split the FLUSH flag and the class */
flush = dns_class & C_FLUSH;
dns_class &= ~C_FLUSH;
- } else
+ } else {
flush = 0;
-
+ }
type_name = dns_type_name(type);
class_name = dns_class_name(dns_class);
@@ -1235,12 +1265,13 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset,
data_len = tvb_get_ntohs(tvb, data_offset);
data_offset += 2;
- cur_offset += 2;
+ cur_offset += 2;
if (cinfo != NULL) {
col_append_fstr(cinfo, COL_INFO, " %s", type_name);
- if (is_mdns && flush)
+ if (is_mdns && flush) {
col_append_str(cinfo, COL_INFO, ", cache flush");
+ }
}
if (dns_tree != NULL) {
/*
@@ -1250,233 +1281,236 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset,
name_out = format_text(name, strlen(name));
if (type != T_OPT) {
trr = proto_tree_add_text(dns_tree, tvb, offsetx,
- (data_offset - data_start) + data_len,
- "%s: type %s, class %s",
- name_out, type_name, class_name);
+ (data_offset - data_start) + data_len,
+ "%s: type %s, class %s",
+ name_out, type_name, class_name);
rr_tree = add_rr_to_tree(trr, ett_dns_rr, tvb, offsetx, name, name_len,
- type, dns_class, flush, ttl, data_len, is_mdns);
+ type, dns_class, flush, ttl, data_len, is_mdns);
} else {
trr = proto_tree_add_text(dns_tree, tvb, offsetx,
- (data_offset - data_start) + data_len,
- "%s: type %s", name_out, type_name);
+ (data_offset - data_start) + data_len,
+ "%s: type %s", name_out, type_name);
rr_tree = add_opt_rr_to_tree(trr, ett_dns_rr, tvb, offsetx, name, name_len,
- type, dns_class, flush, ttl, data_len, is_mdns);
+ type, dns_class, flush, ttl, data_len, is_mdns);
}
- if (is_mdns && flush)
+ if (is_mdns && flush) {
proto_item_append_text(trr, ", cache flush");
+ }
}
- if (data_len == 0)
+ if (data_len == 0) {
return data_offset - data_start;
+ }
switch (type) {
- case T_A:
+ case T_A:
{
const char *addr;
guint32 addr_int;
addr = tvb_ip_to_str(tvb, cur_offset);
- if (cinfo != NULL)
- col_append_fstr(cinfo, COL_INFO, " %s", addr);
+ if (cinfo != NULL) {
+ col_append_fstr(cinfo, COL_INFO, " %s", addr);
+ }
- proto_item_append_text(trr, ", addr %s", addr);
- proto_tree_add_item(rr_tree, hf_dns_rr_addr, tvb, cur_offset, 4, ENC_BIG_ENDIAN);
+ proto_item_append_text(trr, ", addr %s", addr);
+ proto_tree_add_item(rr_tree, hf_dns_rr_addr, tvb, cur_offset, 4, ENC_BIG_ENDIAN);
if ((dns_class & 0x7f) == C_IN) {
- tvb_memcpy(tvb, &addr_int, cur_offset, sizeof(addr_int));
+ tvb_memcpy(tvb, &addr_int, cur_offset, sizeof(addr_int));
add_ipv4_name(addr_int, name);
}
}
break;
- case T_NS:
+ case T_NS:
{
const guchar *ns_name;
int ns_name_len;
ns_name_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &ns_name);
name_out = format_text(ns_name, strlen(ns_name));
- if (cinfo != NULL)
+ if (cinfo != NULL) {
col_append_fstr(cinfo, COL_INFO, " %s", name_out);
-
- proto_item_append_text(trr, ", ns %s", name_out);
- proto_tree_add_string(rr_tree, hf_dns_rr_ns, tvb, cur_offset, ns_name_len, name_out);
+ }
+ proto_item_append_text(trr, ", ns %s", name_out);
+ proto_tree_add_string(rr_tree, hf_dns_rr_ns, tvb, cur_offset, ns_name_len, name_out);
}
break;
- case T_CNAME:
+ case T_CNAME:
{
const guchar *cname;
int cname_len;
cname_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &cname);
name_out = format_text(cname, strlen(cname));
- if (cinfo != NULL)
+ if (cinfo != NULL) {
col_append_fstr(cinfo, COL_INFO, " %s", name_out);
-
- proto_item_append_text(trr, ", cname %s", name_out);
- proto_tree_add_string(rr_tree, hf_dns_rr_primaryname, tvb, cur_offset, cname_len, name_out);
+ }
+ proto_item_append_text(trr, ", cname %s", name_out);
+ proto_tree_add_string(rr_tree, hf_dns_rr_primaryname, tvb, cur_offset, cname_len, name_out);
}
break;
- case T_SOA:
+ case T_SOA:
{
const guchar *mname;
- int mname_len;
+ int mname_len;
const guchar *rname;
- int rname_len;
- guint32 serial;
- guint32 refresh;
- guint32 retry;
- guint32 expire;
- guint32 minimum;
+ int rname_len;
+ guint32 serial;
+ guint32 refresh;
+ guint32 retry;
+ guint32 expire;
+ guint32 minimum;
/* XXX Fix data length */
mname_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &mname);
name_out = format_text(mname, strlen(mname));
- if (cinfo != NULL)
+ if (cinfo != NULL) {
col_append_fstr(cinfo, COL_INFO, " %s", name_out);
+ }
+ proto_item_append_text(trr, ", mname %s", name_out);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, mname_len, "Primary name server: %s",
+ name_out);
+ cur_offset += mname_len;
- proto_item_append_text(trr, ", mname %s", name_out);
- proto_tree_add_text(rr_tree, tvb, cur_offset, mname_len, "Primary name server: %s",
- name_out);
- cur_offset += mname_len;
-
- /* XXX Fix data length */
- rname_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &rname);
- name_out = format_text(rname, strlen(rname));
- proto_tree_add_text(rr_tree, tvb, cur_offset, rname_len, "Responsible authority's mailbox: %s",
- name_out);
- cur_offset += rname_len;
-
- serial = tvb_get_ntohl(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Serial number: %u",
- serial);
- cur_offset += 4;
+ /* XXX Fix data length */
+ rname_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &rname);
+ name_out = format_text(rname, strlen(rname));
+ proto_tree_add_text(rr_tree, tvb, cur_offset, rname_len, "Responsible authority's mailbox: %s",
+ name_out);
+ cur_offset += rname_len;
+
+ serial = tvb_get_ntohl(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Serial number: %u",
+ serial);
+ cur_offset += 4;
- refresh = tvb_get_ntohl(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Refresh interval: %s",
- time_secs_to_str(refresh));
- cur_offset += 4;
+ refresh = tvb_get_ntohl(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Refresh interval: %s",
+ time_secs_to_str(refresh));
+ cur_offset += 4;
- retry = tvb_get_ntohl(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Retry interval: %s",
- time_secs_to_str(retry));
- cur_offset += 4;
+ retry = tvb_get_ntohl(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Retry interval: %s",
+ time_secs_to_str(retry));
+ cur_offset += 4;
- expire = tvb_get_ntohl(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Expiration limit: %s",
- time_secs_to_str(expire));
- cur_offset += 4;
+ expire = tvb_get_ntohl(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Expiration limit: %s",
+ time_secs_to_str(expire));
+ cur_offset += 4;
- minimum = tvb_get_ntohl(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Minimum TTL: %s",
- time_secs_to_str(minimum));
+ minimum = tvb_get_ntohl(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Minimum TTL: %s",
+ time_secs_to_str(minimum));
}
break;
- case T_PTR:
+ case T_PTR:
{
const guchar *pname;
- int pname_len;
+ int pname_len;
/* XXX Fix data length */
pname_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &pname);
name_out = format_text(pname, strlen(pname));
- if (cinfo != NULL)
+ if (cinfo != NULL) {
col_append_fstr(cinfo, COL_INFO, " %s", name_out);
-
- proto_item_append_text(trr, ", %s", name_out);
- proto_tree_add_text(rr_tree, tvb, cur_offset, pname_len, "Domain name: %s",
- name_out);
+ }
+ proto_item_append_text(trr, ", %s", name_out);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, pname_len, "Domain name: %s",
+ name_out);
}
break;
- case T_WKS:
+ case T_WKS:
{
- int rr_len = data_len;
- const char *wks_addr;
- guint8 protocol;
- guint8 bits;
- int mask;
- int port_num;
- int i;
+ int rr_len = data_len;
+ const char *wks_addr;
+ guint8 protocol;
+ guint8 bits;
+ int mask;
+ int port_num;
+ int i;
emem_strbuf_t *bitnames = ep_strbuf_new_label(NULL);
if (rr_len < 4) {
-
- goto bad_rr;
- break;
+ goto bad_rr;
}
wks_addr = tvb_ip_to_str(tvb, cur_offset);
- if (cinfo != NULL)
+ if (cinfo != NULL) {
col_append_fstr(cinfo, COL_INFO, " %s", wks_addr);
+ }
+ proto_item_append_text(trr, ", addr %s", wks_addr);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Addr: %s", wks_addr);
+ cur_offset += 4;
+ rr_len -= 4;
- proto_item_append_text(trr, ", addr %s", wks_addr);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Addr: %s", wks_addr);
- cur_offset += 4;
- rr_len -= 4;
-
- if (rr_len < 1)
- goto bad_rr;
- protocol = tvb_get_guint8(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Protocol: %s",
- ipprotostr(protocol));
- cur_offset += 1;
- rr_len -= 1;
-
- port_num = 0;
- while (rr_len != 0) {
- bits = tvb_get_guint8(tvb, cur_offset);
- if (bits != 0) {
- mask = 1<<7;
- ep_strbuf_truncate(bitnames, 0);
- for (i = 0; i < 8; i++) {
- if (bits & mask) {
- if (bitnames->len > 0) {
- ep_strbuf_append(bitnames, ", ");
- }
- switch (protocol) {
-
- case IP_PROTO_TCP:
- ep_strbuf_append(bitnames, get_tcp_port(port_num));
- break;
-
- case IP_PROTO_UDP:
- ep_strbuf_append(bitnames, get_udp_port(port_num));
- break;
-
- default:
- ep_strbuf_append_printf(bitnames, "%u", port_num);
- break;
- }
- }
- mask >>= 1;
- port_num++;
- }
- proto_tree_add_text(rr_tree, tvb, cur_offset, 1,
- "Bits: 0x%02x (%s)", bits, bitnames->str);
- } else
- port_num += 8;
- cur_offset += 1;
- rr_len -= 1;
- }
+ if (rr_len < 1) {
+ goto bad_rr;
+ }
+ protocol = tvb_get_guint8(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Protocol: %s",
+ ipprotostr(protocol));
+ cur_offset += 1;
+ rr_len -= 1;
+
+ port_num = 0;
+ while (rr_len != 0) {
+ bits = tvb_get_guint8(tvb, cur_offset);
+ if (bits != 0) {
+ mask = 1<<7;
+ ep_strbuf_truncate(bitnames, 0);
+ for (i = 0; i < 8; i++) {
+ if (bits & mask) {
+ if (bitnames->len > 0) {
+ ep_strbuf_append(bitnames, ", ");
+ }
+ switch (protocol) {
+
+ case IP_PROTO_TCP:
+ ep_strbuf_append(bitnames, get_tcp_port(port_num));
+ break;
+
+ case IP_PROTO_UDP:
+ ep_strbuf_append(bitnames, get_udp_port(port_num));
+ break;
+
+ default:
+ ep_strbuf_append_printf(bitnames, "%u", port_num);
+ break;
+ }
+ }
+ mask >>= 1;
+ port_num++;
+ }
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 1,
+ "Bits: 0x%02x (%s)", bits, bitnames->str);
+ } else {
+ port_num += 8;
+ }
+ cur_offset += 1;
+ rr_len -= 1;
+ }
}
break;
- case T_HINFO:
+ case T_HINFO:
{
- int cpu_offset;
- int cpu_len;
+ int cpu_offset;
+ int cpu_len;
const char *cpu;
- int os_offset;
- int os_len;
+ int os_offset;
+ int os_len;
const char *os;
cpu_offset = cur_offset;
@@ -1485,353 +1519,368 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset,
os_offset = cpu_offset + 1 + cpu_len;
os_len = tvb_get_guint8(tvb, os_offset);
os = tvb_get_ephemeral_string(tvb, os_offset + 1, os_len);
- if (cinfo != NULL)
+ if (cinfo != NULL) {
col_append_fstr(cinfo, COL_INFO, " %.*s %.*s", cpu_len, cpu,
- os_len, os);
-
- proto_item_append_text(trr, ", CPU %.*s, OS %.*s",
- cpu_len, cpu, os_len, os);
- proto_tree_add_text(rr_tree, tvb, cpu_offset, 1 + cpu_len, "CPU: %.*s",
- cpu_len, cpu);
- proto_tree_add_text(rr_tree, tvb, os_offset, 1 + os_len, "OS: %.*s",
- os_len, os);
+ os_len, os);
+ }
+ proto_item_append_text(trr, ", CPU %.*s, OS %.*s",
+ cpu_len, cpu, os_len, os);
+ proto_tree_add_text(rr_tree, tvb, cpu_offset, 1 + cpu_len, "CPU: %.*s",
+ cpu_len, cpu);
+ proto_tree_add_text(rr_tree, tvb, os_offset, 1 + os_len, "OS: %.*s",
+ os_len, os);
}
break;
- case T_MX:
+ case T_MX:
{
- guint16 preference = 0;
+ guint16 preference = 0;
const guchar *mx_name;
- int mx_name_len;
+ int mx_name_len;
preference = tvb_get_ntohs(tvb, cur_offset);
/* XXX Fix data length */
mx_name_len = get_dns_name(tvb, cur_offset + 2, 0, dns_data_offset, &mx_name);
name_out = format_text(mx_name, strlen(mx_name));
- if (cinfo != NULL)
+ if (cinfo != NULL) {
col_append_fstr(cinfo, COL_INFO, " %u %s", preference, name_out);
-
- proto_item_append_text(trr, ", preference %u, mx %s",
- preference, name_out);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Preference: %u", preference);
- proto_tree_add_text(rr_tree, tvb, cur_offset + 2, mx_name_len, "Mail exchange: %s",
- name_out);
+ }
+ proto_item_append_text(trr, ", preference %u, mx %s",
+ preference, name_out);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Preference: %u", preference);
+ proto_tree_add_text(rr_tree, tvb, cur_offset + 2, mx_name_len, "Mail exchange: %s",
+ name_out);
}
break;
- case T_TXT:
- case T_SPF:
+ case T_TXT:
+ case T_SPF:
{
int rr_len = data_len;
int txt_offset;
int txt_len;
- txt_offset = cur_offset;
- while (rr_len != 0) {
- txt_len = tvb_get_guint8(tvb, txt_offset);
- proto_tree_add_text(rr_tree, tvb, txt_offset, 1 + txt_len,
- "Text: %.*s", txt_len, tvb_get_ephemeral_string(tvb, txt_offset + 1, txt_len));
- txt_offset += 1 + txt_len;
- rr_len -= 1 + txt_len;
- }
+ txt_offset = cur_offset;
+ while (rr_len != 0) {
+ txt_len = tvb_get_guint8(tvb, txt_offset);
+ proto_tree_add_text(rr_tree, tvb, txt_offset, 1 + txt_len,
+ "Text: %.*s", txt_len, tvb_get_ephemeral_string(tvb, txt_offset + 1, txt_len));
+ txt_offset += 1 + txt_len;
+ rr_len -= 1 + txt_len;
+ }
}
break;
- case T_RRSIG:
- case T_SIG:
+ case T_RRSIG:
+ case T_SIG:
{
- int rr_len = data_len;
- guint16 type_covered;
- nstime_t nstime;
+ int rr_len = data_len;
+ guint16 type_covered;
+ nstime_t nstime;
const guchar *signer_name;
- int signer_name_len;
-
-
- if (rr_len < 2)
- goto bad_rr;
- type_covered = tvb_get_ntohs(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Type covered: %s",
- dns_type_description(type_covered));
- cur_offset += 2;
- rr_len -= 2;
-
- if (rr_len < 1)
- goto bad_rr;
- proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Algorithm: %s",
- val_to_str(tvb_get_guint8(tvb, cur_offset), algo_vals,
- "Unknown (0x%02X)"));
- cur_offset += 1;
- rr_len -= 1;
-
- if (rr_len < 1)
- goto bad_rr;
- proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Labels: %u",
- tvb_get_guint8(tvb, cur_offset));
- cur_offset += 1;
- rr_len -= 1;
-
- if (rr_len < 4)
- goto bad_rr;
- proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Original TTL: %s",
- time_secs_to_str(tvb_get_ntohl(tvb, cur_offset)));
- cur_offset += 4;
- rr_len -= 4;
-
- if (rr_len < 4)
- goto bad_rr;
- nstime.secs = tvb_get_ntohl(tvb, cur_offset);
- nstime.nsecs = 0;
- proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Signature expiration: %s",
- abs_time_to_str(&nstime, ABSOLUTE_TIME_LOCAL, TRUE));
- cur_offset += 4;
- rr_len -= 4;
-
- if (rr_len < 4)
- goto bad_rr;
- nstime.secs = tvb_get_ntohl(tvb, cur_offset);
- nstime.nsecs = 0;
- proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Time signed: %s",
- abs_time_to_str(&nstime, ABSOLUTE_TIME_LOCAL, TRUE));
- cur_offset += 4;
- rr_len -= 4;
-
- if (rr_len < 2)
- goto bad_rr;
- proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Id of signing key(footprint): %u",
- tvb_get_ntohs(tvb, cur_offset));
- cur_offset += 2;
- rr_len -= 2;
+ int signer_name_len;
- /* XXX Fix data length */
- signer_name_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &signer_name);
- proto_tree_add_text(rr_tree, tvb, cur_offset, signer_name_len,
- "Signer's name: %s",
- format_text(signer_name, strlen(signer_name)));
- cur_offset += signer_name_len;
- rr_len -= signer_name_len;
- if (rr_len != 0)
- proto_tree_add_text(rr_tree, tvb, cur_offset, rr_len, "Signature");
+ if (rr_len < 2) {
+ goto bad_rr;
+ }
+ type_covered = tvb_get_ntohs(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Type covered: %s",
+ dns_type_description(type_covered));
+ cur_offset += 2;
+ rr_len -= 2;
+
+ if (rr_len < 1) {
+ goto bad_rr;
+ }
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Algorithm: %s",
+ val_to_str(tvb_get_guint8(tvb, cur_offset), algo_vals,
+ "Unknown (0x%02X)"));
+ cur_offset += 1;
+ rr_len -= 1;
+
+ if (rr_len < 1) {
+ goto bad_rr;
+ }
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Labels: %u",
+ tvb_get_guint8(tvb, cur_offset));
+ cur_offset += 1;
+ rr_len -= 1;
+ if (rr_len < 4) {
+ goto bad_rr;
+ }
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Original TTL: %s",
+ time_secs_to_str(tvb_get_ntohl(tvb, cur_offset)));
+ cur_offset += 4;
+ rr_len -= 4;
+
+ if (rr_len < 4) {
+ goto bad_rr;
+ }
+ nstime.secs = tvb_get_ntohl(tvb, cur_offset);
+ nstime.nsecs = 0;
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Signature expiration: %s",
+ abs_time_to_str(&nstime, ABSOLUTE_TIME_LOCAL, TRUE));
+ cur_offset += 4;
+ rr_len -= 4;
+
+ if (rr_len < 4) {
+ goto bad_rr;
+ }
+ nstime.secs = tvb_get_ntohl(tvb, cur_offset);
+ nstime.nsecs = 0;
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Time signed: %s",
+ abs_time_to_str(&nstime, ABSOLUTE_TIME_LOCAL, TRUE));
+ cur_offset += 4;
+ rr_len -= 4;
+
+ if (rr_len < 2) {
+ goto bad_rr;
+ }
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Id of signing key(footprint): %u",
+ tvb_get_ntohs(tvb, cur_offset));
+ cur_offset += 2;
+ rr_len -= 2;
+
+ /* XXX Fix data length */
+ signer_name_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &signer_name);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, signer_name_len,
+ "Signer's name: %s",
+ format_text(signer_name, strlen(signer_name)));
+ cur_offset += signer_name_len;
+ rr_len -= signer_name_len;
+
+ if (rr_len != 0) {
+ proto_tree_add_text(rr_tree, tvb, cur_offset, rr_len, "Signature");
+ }
}
break;
- case T_DNSKEY:
+ case T_DNSKEY:
{
- int rr_len = data_len;
- guint16 flags;
+ int rr_len = data_len;
+ guint16 flags;
proto_item *tf, *ti_gen;
proto_tree *flags_tree;
- guint8 algo;
- guint16 key_id;
-
-
- if (rr_len < 2)
- goto bad_rr;
- flags = tvb_get_ntohs(tvb, cur_offset);
- tf = proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Flags: 0x%04X", flags);
- flags_tree = proto_item_add_subtree(tf, ett_t_key_flags);
- proto_tree_add_text(flags_tree, tvb, cur_offset, 2, "%s",
- decode_boolean_bitfield(flags, 0x0100,
- 2*8, "This is the zone key for the specified zone",
- "This is not a zone key"));
- proto_tree_add_text(flags_tree, tvb, cur_offset, 2, "%s",
- decode_boolean_bitfield(flags, 0x0080,
- 2*8, "Key is revoked",
- "Key is not revoked"));
- proto_tree_add_text(flags_tree, tvb, cur_offset, 2, "%s",
- decode_boolean_bitfield(flags, 0x0001,
- 2*8, "Key is a Key Signing Key",
- "Key is a Zone Signing Key"));
-
- cur_offset += 2;
- rr_len -= 2;
-
- if (rr_len < 1)
- goto bad_rr;
- proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Protocol: %u",
- tvb_get_guint8(tvb, cur_offset));
- cur_offset += 1;
- rr_len -= 1;
-
- if (rr_len < 1)
- goto bad_rr;
- algo = tvb_get_guint8(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Algorithm: %s",
- val_to_str(algo, algo_vals, "Unknown (0x%02X)"));
- cur_offset += 1;
- rr_len -= 1;
-
- key_id = compute_key_id(tvb, cur_offset-4, rr_len+4, algo);
- ti_gen = proto_tree_add_text(rr_tree, tvb, 0, 0, "Key id: %u", key_id);
- PROTO_ITEM_SET_GENERATED(ti_gen);
-
- if (rr_len != 0)
- proto_tree_add_text(rr_tree, tvb, cur_offset, rr_len, "Public key");
+ guint8 algo;
+ guint16 key_id;
+
+
+ if (rr_len < 2) {
+ goto bad_rr;
+ }
+ flags = tvb_get_ntohs(tvb, cur_offset);
+ tf = proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Flags: 0x%04X", flags);
+ flags_tree = proto_item_add_subtree(tf, ett_t_key_flags);
+ proto_tree_add_text(flags_tree, tvb, cur_offset, 2, "%s",
+ decode_boolean_bitfield(flags, 0x0100,
+ 2*8, "This is the zone key for the specified zone",
+ "This is not a zone key"));
+ proto_tree_add_text(flags_tree, tvb, cur_offset, 2, "%s",
+ decode_boolean_bitfield(flags, 0x0080,
+ 2*8, "Key is revoked",
+ "Key is not revoked"));
+ proto_tree_add_text(flags_tree, tvb, cur_offset, 2, "%s",
+ decode_boolean_bitfield(flags, 0x0001,
+ 2*8, "Key is a Key Signing Key",
+ "Key is a Zone Signing Key"));
+
+ cur_offset += 2;
+ rr_len -= 2;
+
+ if (rr_len < 1) {
+ goto bad_rr;
+ }
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Protocol: %u",
+ tvb_get_guint8(tvb, cur_offset));
+ cur_offset += 1;
+ rr_len -= 1;
+
+ if (rr_len < 1) {
+ goto bad_rr;
+ }
+ algo = tvb_get_guint8(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Algorithm: %s",
+ val_to_str(algo, algo_vals, "Unknown (0x%02X)"));
+ cur_offset += 1;
+ rr_len -= 1;
+
+ key_id = compute_key_id(tvb, cur_offset-4, rr_len+4, algo);
+ ti_gen = proto_tree_add_text(rr_tree, tvb, 0, 0, "Key id: %u", key_id);
+ PROTO_ITEM_SET_GENERATED(ti_gen);
+ if (rr_len != 0) {
+ proto_tree_add_text(rr_tree, tvb, cur_offset, rr_len, "Public key");
+ }
}
break;
- case T_KEY:
+ case T_KEY:
{
- int rr_len = data_len;
- guint16 flags;
+ int rr_len = data_len;
+ guint16 flags;
proto_item *tf, *ti_gen;
proto_tree *flags_tree;
- guint8 algo;
- guint16 key_id;
-
-
- if (rr_len < 2)
- goto bad_rr;
- flags = tvb_get_ntohs(tvb, cur_offset);
- tf = proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Flags: 0x%04X", flags);
- flags_tree = proto_item_add_subtree(tf, ett_t_key_flags);
- proto_tree_add_text(flags_tree, tvb, cur_offset, 2, "%s",
- decode_boolean_bitfield(flags, 0x8000,
- 2*8, "Key prohibited for authentication",
- "Key allowed for authentication"));
- proto_tree_add_text(flags_tree, tvb, cur_offset, 2, "%s",
- decode_boolean_bitfield(flags, 0x4000,
- 2*8, "Key prohibited for confidentiality",
- "Key allowed for confidentiality"));
- if ((flags & 0xC000) != 0xC000) {
- /* We have a key */
- proto_tree_add_text(flags_tree, tvb, cur_offset, 2, "%s",
- decode_boolean_bitfield(flags, 0x2000,
- 2*8, "Key is experimental or optional",
- "Key is required"));
- proto_tree_add_text(flags_tree, tvb, cur_offset, 2, "%s",
- decode_boolean_bitfield(flags, 0x0400,
- 2*8, "Key is associated with a user",
- "Key is not associated with a user"));
- proto_tree_add_text(flags_tree, tvb, cur_offset, 2, "%s",
- decode_boolean_bitfield(flags, 0x0200,
- 2*8, "Key is associated with the named entity",
- "Key is not associated with the named entity"));
- proto_tree_add_text(flags_tree, tvb, cur_offset, 2, "%s",
- decode_boolean_bitfield(flags, 0x0080,
- 2*8, "Key is valid for use with IPSEC",
- "Key is not valid for use with IPSEC"));
- proto_tree_add_text(flags_tree, tvb, cur_offset, 2, "%s",
- decode_boolean_bitfield(flags, 0x0040,
- 2*8, "Key is valid for use with MIME security multiparts",
- "Key is not valid for use with MIME security multiparts"));
- proto_tree_add_text(flags_tree, tvb, cur_offset, 2, "%s",
- decode_numeric_bitfield(flags, 0x000F,
- 2*8, "Signatory = %u"));
- }
- cur_offset += 2;
- rr_len -= 2;
-
- if (rr_len < 1)
- goto bad_rr;
- proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Protocol: %u",
- tvb_get_guint8(tvb, cur_offset));
- cur_offset += 1;
- rr_len -= 1;
-
- if (rr_len < 1)
- goto bad_rr;
- algo = tvb_get_guint8(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Algorithm: %s",
- val_to_str(algo, algo_vals, "Unknown (0x%02X)"));
- cur_offset += 1;
- rr_len -= 1;
-
- key_id = compute_key_id(tvb, cur_offset-4, rr_len+4, algo);
- ti_gen = proto_tree_add_text(rr_tree, tvb, 0, 0, "Key id: %u", key_id);
- PROTO_ITEM_SET_GENERATED(ti_gen);
-
- if (rr_len != 0)
- proto_tree_add_text(rr_tree, tvb, cur_offset, rr_len, "Public key");
+ guint8 algo;
+ guint16 key_id;
+
+
+ if (rr_len < 2) {
+ goto bad_rr;
+ }
+ flags = tvb_get_ntohs(tvb, cur_offset);
+ tf = proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Flags: 0x%04X", flags);
+ flags_tree = proto_item_add_subtree(tf, ett_t_key_flags);
+ proto_tree_add_text(flags_tree, tvb, cur_offset, 2, "%s",
+ decode_boolean_bitfield(flags, 0x8000,
+ 2*8, "Key prohibited for authentication",
+ "Key allowed for authentication"));
+ proto_tree_add_text(flags_tree, tvb, cur_offset, 2, "%s",
+ decode_boolean_bitfield(flags, 0x4000,
+ 2*8, "Key prohibited for confidentiality",
+ "Key allowed for confidentiality"));
+ if ((flags & 0xC000) != 0xC000) {
+ /* We have a key */
+ proto_tree_add_text(flags_tree, tvb, cur_offset, 2, "%s",
+ decode_boolean_bitfield(flags, 0x2000,
+ 2*8, "Key is experimental or optional",
+ "Key is required"));
+ proto_tree_add_text(flags_tree, tvb, cur_offset, 2, "%s",
+ decode_boolean_bitfield(flags, 0x0400,
+ 2*8, "Key is associated with a user",
+ "Key is not associated with a user"));
+ proto_tree_add_text(flags_tree, tvb, cur_offset, 2, "%s",
+ decode_boolean_bitfield(flags, 0x0200,
+ 2*8, "Key is associated with the named entity",
+ "Key is not associated with the named entity"));
+ proto_tree_add_text(flags_tree, tvb, cur_offset, 2, "%s",
+ decode_boolean_bitfield(flags, 0x0080,
+ 2*8, "Key is valid for use with IPSEC",
+ "Key is not valid for use with IPSEC"));
+ proto_tree_add_text(flags_tree, tvb, cur_offset, 2, "%s",
+ decode_boolean_bitfield(flags, 0x0040,
+ 2*8, "Key is valid for use with MIME security multiparts",
+ "Key is not valid for use with MIME security multiparts"));
+ proto_tree_add_text(flags_tree, tvb, cur_offset, 2, "%s",
+ decode_numeric_bitfield(flags, 0x000F,
+ 2*8, "Signatory = %u"));
+ }
+ cur_offset += 2;
+ rr_len -= 2;
+
+ if (rr_len < 1) {
+ goto bad_rr;
+ }
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Protocol: %u",
+ tvb_get_guint8(tvb, cur_offset));
+ cur_offset += 1;
+ rr_len -= 1;
+
+ if (rr_len < 1) {
+ goto bad_rr;
+ }
+ algo = tvb_get_guint8(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Algorithm: %s",
+ val_to_str(algo, algo_vals, "Unknown (0x%02X)"));
+ cur_offset += 1;
+ rr_len -= 1;
+
+ key_id = compute_key_id(tvb, cur_offset-4, rr_len+4, algo);
+ ti_gen = proto_tree_add_text(rr_tree, tvb, 0, 0, "Key id: %u", key_id);
+ PROTO_ITEM_SET_GENERATED(ti_gen);
+
+ if (rr_len != 0) {
+ proto_tree_add_text(rr_tree, tvb, cur_offset, rr_len, "Public key");
+ }
}
break;
- case T_IPSECKEY:
+ case T_IPSECKEY:
{
- int rr_len = data_len;
- guint8 gw_type, algo;
+ int rr_len = data_len;
+ guint8 gw_type, algo;
const guchar *gw;
- int gw_name_len;
+ int gw_name_len;
+
static const value_string gw_algo[] = {
- { 1, "DSA" },
- { 2, "RSA" },
- { 0, NULL }
+ { 1, "DSA" },
+ { 2, "RSA" },
+ { 0, NULL }
};
- if(rr_len < 3)
- goto bad_rr;
-
- proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Gateway precedence: %u",
- tvb_get_guint8(tvb, cur_offset));
- cur_offset += 1;
- rr_len -= 1;
-
- gw_type = tvb_get_guint8(tvb, cur_offset);
- cur_offset += 1;
- rr_len -= 1;
-
- algo = tvb_get_guint8(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Algorithm: %s",
- val_to_str(algo, gw_algo, "Unknown (0x%02X)"));
- cur_offset += 1;
- rr_len -= 1;
- switch( gw_type ) {
- case 0:
- proto_tree_add_text(rr_tree, tvb, cur_offset, 0, "Gateway: no gateway");
- break;
- case 1:
- proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Gateway: %s",
- tvb_ip_to_str(tvb, cur_offset) );
-
- cur_offset += 4;
- rr_len -= 4;
- break;
- case 2:
- proto_tree_add_text(rr_tree, tvb, cur_offset, 16, "Gateway: %s",
- tvb_ip6_to_str(tvb, cur_offset));
-
- cur_offset += 16;
- rr_len -= 16;
- break;
- case 3:
- /* XXX Fix data length */
- gw_name_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &gw);
- proto_tree_add_text(rr_tree, tvb, cur_offset, gw_name_len,
- "Gateway: %s", format_text(gw, strlen(gw)));
-
- cur_offset += gw_name_len;
- rr_len -= gw_name_len;
- break;
- default:
- proto_tree_add_text(rr_tree, tvb, cur_offset, 0, "Gateway: Unknown gateway type(%u)", gw_type);
- break;
- }
- if (rr_len != 0)
- proto_tree_add_text(rr_tree, tvb, cur_offset, rr_len, "Public key");
+ if (rr_len < 3) {
+ goto bad_rr;
+ }
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Gateway precedence: %u",
+ tvb_get_guint8(tvb, cur_offset));
+ cur_offset += 1;
+ rr_len -= 1;
+
+ gw_type = tvb_get_guint8(tvb, cur_offset);
+ cur_offset += 1;
+ rr_len -= 1;
+ algo = tvb_get_guint8(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Algorithm: %s",
+ val_to_str(algo, gw_algo, "Unknown (0x%02X)"));
+ cur_offset += 1;
+ rr_len -= 1;
+ switch( gw_type ) {
+ case 0:
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 0, "Gateway: no gateway");
+ break;
+ case 1:
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Gateway: %s",
+ tvb_ip_to_str(tvb, cur_offset) );
+
+ cur_offset += 4;
+ rr_len -= 4;
+ break;
+ case 2:
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 16, "Gateway: %s",
+ tvb_ip6_to_str(tvb, cur_offset));
+
+ cur_offset += 16;
+ rr_len -= 16;
+ break;
+ case 3:
+ /* XXX Fix data length */
+ gw_name_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &gw);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, gw_name_len,
+ "Gateway: %s", format_text(gw, strlen(gw)));
+
+ cur_offset += gw_name_len;
+ rr_len -= gw_name_len;
+ break;
+ default:
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 0, "Gateway: Unknown gateway type(%u)", gw_type);
+ break;
+ }
+ if (rr_len != 0) {
+ proto_tree_add_text(rr_tree, tvb, cur_offset, rr_len, "Public key");
+ }
}
break;
- case T_AAAA:
+ case T_AAAA:
{
- const char *addr6;
- struct e_in6_addr addr_in6;
+ const char *addr6;
+ struct e_in6_addr addr_in6;
addr6 = tvb_ip6_to_str(tvb, cur_offset);
if (cinfo != NULL) {
col_append_fstr(cinfo, COL_INFO, " %s", addr6);
}
- proto_item_append_text(trr, ", addr %s", addr6);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 16, "Addr: %s", addr6);
+ proto_item_append_text(trr, ", addr %s", addr6);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 16, "Addr: %s", addr6);
if ((dns_class & 0x7f) == C_IN) {
tvb_memcpy(tvb, &addr_in6, cur_offset, sizeof(addr_in6));
@@ -1840,16 +1889,16 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset,
}
break;
- case T_A6:
+ case T_A6:
{
- unsigned short pre_len;
- unsigned short suf_len;
- unsigned short suf_octet_count;
- const guchar *pname;
- int pname_len;
- int a6_offset;
- int suf_offset;
- struct e_in6_addr suffix;
+ unsigned short pre_len;
+ unsigned short suf_len;
+ unsigned short suf_octet_count;
+ const guchar *pname;
+ int pname_len;
+ int a6_offset;
+ int suf_offset;
+ struct e_in6_addr suffix;
a6_offset = cur_offset;
pre_len = tvb_get_guint8(tvb, cur_offset);
@@ -1882,667 +1931,717 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset,
name_out);
}
- proto_tree_add_text(rr_tree, tvb, a6_offset, 1,
- "Prefix len: %u", pre_len);
- a6_offset++;
- if (suf_len) {
- proto_tree_add_text(rr_tree, tvb, a6_offset, suf_octet_count,
- "Address suffix: %s",
- ip6_to_str(&suffix));
- a6_offset += suf_octet_count;
- }
- if (pre_len > 0) {
- proto_tree_add_text(rr_tree, tvb, a6_offset, pname_len,
- "Prefix name: %s", name_out);
- }
- proto_item_append_text(trr, ", addr %d %s %s",
- pre_len,
- ip6_to_str(&suffix),
- name_out);
+ proto_tree_add_text(rr_tree, tvb, a6_offset, 1,
+ "Prefix len: %u", pre_len);
+ a6_offset++;
+ if (suf_len) {
+ proto_tree_add_text(rr_tree, tvb, a6_offset, suf_octet_count,
+ "Address suffix: %s",
+ ip6_to_str(&suffix));
+ a6_offset += suf_octet_count;
+ }
+ if (pre_len > 0) {
+ proto_tree_add_text(rr_tree, tvb, a6_offset, pname_len,
+ "Prefix name: %s", name_out);
+ }
+ proto_item_append_text(trr, ", addr %d %s %s",
+ pre_len,
+ ip6_to_str(&suffix),
+ name_out);
}
break;
- case T_DNAME:
+ case T_DNAME:
{
const guchar *dname;
- int dname_len;
+ int dname_len;
/* XXX Fix data length */
dname_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset,
- &dname);
+ &dname);
name_out = format_text(dname, strlen(dname));
- if (cinfo != NULL)
+ if (cinfo != NULL) {
col_append_fstr(cinfo, COL_INFO, " %s", name_out);
-
- proto_item_append_text(trr, ", dname %s", name_out);
- proto_tree_add_text(rr_tree, tvb, cur_offset,
- dname_len, "Target name: %s", name_out);
+ }
+ proto_item_append_text(trr, ", dname %s", name_out);
+ proto_tree_add_text(rr_tree, tvb, cur_offset,
+ dname_len, "Target name: %s", name_out);
}
break;
- case T_LOC:
+ case T_LOC:
{
guint8 version;
- version = tvb_get_guint8(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Version: %u", version);
- if (version == 0) {
- /* Version 0, the only version RFC 1876 discusses. */
- cur_offset++;
-
- proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Size: %g m",
- rfc1867_size(tvb, cur_offset));
- cur_offset++;
+ version = tvb_get_guint8(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Version: %u", version);
+ if (version == 0) {
+ /* Version 0, the only version RFC 1876 discusses. */
+ cur_offset++;
- proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Horizontal precision: %g m",
- rfc1867_size(tvb, cur_offset));
- cur_offset++;
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Size: %g m",
+ rfc1867_size(tvb, cur_offset));
+ cur_offset++;
- proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Vertical precision: %g m",
- rfc1867_size(tvb, cur_offset));
- cur_offset++;
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Horizontal precision: %g m",
+ rfc1867_size(tvb, cur_offset));
+ cur_offset++;
- proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Latitude: %s",
- rfc1867_angle(tvb, cur_offset, "NS"));
- cur_offset += 4;
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Vertical precision: %g m",
+ rfc1867_size(tvb, cur_offset));
+ cur_offset++;
- proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Longitude: %s",
- rfc1867_angle(tvb, cur_offset, "EW"));
- cur_offset += 4;
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Latitude: %s",
+ rfc1867_angle(tvb, cur_offset, "NS"));
+ cur_offset += 4;
- proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Altitude: %g m",
- ((gint32)tvb_get_ntohl(tvb, cur_offset) - 10000000)/100.0);
- } else
- proto_tree_add_text(rr_tree, tvb, cur_offset, data_len, "Data");
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Longitude: %s",
+ rfc1867_angle(tvb, cur_offset, "EW"));
+ cur_offset += 4;
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Altitude: %g m",
+ ((gint32)tvb_get_ntohl(tvb, cur_offset) - 10000000)/100.0);
+ } else {
+ proto_tree_add_text(rr_tree, tvb, cur_offset, data_len, "Data");
+ }
}
break;
- case T_NSEC:
+ case T_NSEC:
{
- int rr_len = data_len;
+ int rr_len = data_len;
const guchar *next_domain_name;
- int next_domain_name_len;
+ int next_domain_name_len;
/* XXX Fix data length */
next_domain_name_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset,
- &next_domain_name);
+ &next_domain_name);
name_out = format_text(next_domain_name, strlen(next_domain_name));
- if (cinfo != NULL)
+ if (cinfo != NULL) {
col_append_fstr(cinfo, COL_INFO, " %s", name_out);
-
- proto_item_append_text(trr, ", next domain name %s", name_out);
- proto_tree_add_text(rr_tree, tvb, cur_offset, next_domain_name_len,
- "Next domain name: %s", name_out);
- cur_offset += next_domain_name_len;
- rr_len -= next_domain_name_len;
- dissect_type_bitmap(rr_tree, tvb, cur_offset, rr_len);
+ }
+ proto_item_append_text(trr, ", next domain name %s", name_out);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, next_domain_name_len,
+ "Next domain name: %s", name_out);
+ cur_offset += next_domain_name_len;
+ rr_len -= next_domain_name_len;
+ dissect_type_bitmap(rr_tree, tvb, cur_offset, rr_len);
}
break;
- case T_NSEC3:
+ case T_NSEC3:
{
- int rr_len, initial_offset = cur_offset;
- guint8 salt_len, hash_len;
+ int rr_len, initial_offset = cur_offset;
+ guint8 salt_len, hash_len;
proto_item *flags_item;
proto_tree *flags_tree;
- proto_tree_add_item(rr_tree, hf_dns_nsec3_algo, tvb, cur_offset++, 1, ENC_BIG_ENDIAN);
- flags_item = proto_tree_add_item(rr_tree, hf_dns_nsec3_flags, tvb, cur_offset, 1, ENC_BIG_ENDIAN);
- flags_tree = proto_item_add_subtree(flags_item, ett_nsec3_flags);
- proto_tree_add_item(flags_tree, hf_dns_nsec3_flag_optout, tvb, cur_offset, 1, ENC_BIG_ENDIAN);
- cur_offset++;
- proto_tree_add_item(rr_tree, hf_dns_nsec3_iterations, tvb, cur_offset, 2, ENC_BIG_ENDIAN);
- cur_offset += 2;
- salt_len = tvb_get_guint8(tvb, cur_offset);
- proto_tree_add_item(rr_tree, hf_dns_nsec3_salt_length, tvb, cur_offset++, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(rr_tree, hf_dns_nsec3_salt_value, tvb, cur_offset, salt_len, ENC_NA);
- cur_offset += salt_len;
- hash_len = tvb_get_guint8(tvb, cur_offset);
- proto_tree_add_item(rr_tree, hf_dns_nsec3_hash_length, tvb, cur_offset++, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(rr_tree, hf_dns_nsec3_hash_value, tvb, cur_offset, hash_len, ENC_NA);
- cur_offset += hash_len;
- rr_len = data_len - (cur_offset - initial_offset);
- dissect_type_bitmap(rr_tree, tvb, cur_offset, rr_len);
+ proto_tree_add_item(rr_tree, hf_dns_nsec3_algo, tvb, cur_offset++, 1, ENC_BIG_ENDIAN);
+ flags_item = proto_tree_add_item(rr_tree, hf_dns_nsec3_flags, tvb, cur_offset, 1, ENC_BIG_ENDIAN);
+ flags_tree = proto_item_add_subtree(flags_item, ett_nsec3_flags);
+ proto_tree_add_item(flags_tree, hf_dns_nsec3_flag_optout, tvb, cur_offset, 1, ENC_BIG_ENDIAN);
+ cur_offset++;
+ proto_tree_add_item(rr_tree, hf_dns_nsec3_iterations, tvb, cur_offset, 2, ENC_BIG_ENDIAN);
+ cur_offset += 2;
+ salt_len = tvb_get_guint8(tvb, cur_offset);
+ proto_tree_add_item(rr_tree, hf_dns_nsec3_salt_length, tvb, cur_offset++, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(rr_tree, hf_dns_nsec3_salt_value, tvb, cur_offset, salt_len, ENC_NA);
+ cur_offset += salt_len;
+ hash_len = tvb_get_guint8(tvb, cur_offset);
+ proto_tree_add_item(rr_tree, hf_dns_nsec3_hash_length, tvb, cur_offset++, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(rr_tree, hf_dns_nsec3_hash_value, tvb, cur_offset, hash_len, ENC_NA);
+ cur_offset += hash_len;
+ rr_len = data_len - (cur_offset - initial_offset);
+ dissect_type_bitmap(rr_tree, tvb, cur_offset, rr_len);
}
break;
- case T_NSEC3PARAM:
+ case T_NSEC3PARAM:
{
- int salt_len;
- if (cinfo != NULL)
+ int salt_len;
+ if (cinfo != NULL) {
col_append_fstr(cinfo, COL_INFO, " %s", name);
+ }
-
- proto_tree_add_item(rr_tree, hf_dns_nsec3_algo, tvb, cur_offset, 1, ENC_BIG_ENDIAN);
- cur_offset ++;
- proto_tree_add_item(rr_tree, hf_dns_nsec3_flags, tvb, cur_offset, 1, ENC_BIG_ENDIAN);
- cur_offset ++;
- proto_tree_add_item(rr_tree, hf_dns_nsec3_iterations, tvb, cur_offset, 2, ENC_BIG_ENDIAN);
- cur_offset += 2;
- salt_len = tvb_get_guint8(tvb, cur_offset);
- proto_tree_add_item(rr_tree, hf_dns_nsec3_salt_length, tvb, cur_offset, 1, ENC_BIG_ENDIAN);
- cur_offset ++;
- proto_tree_add_item(rr_tree, hf_dns_nsec3_salt_value, tvb, cur_offset, salt_len, ENC_NA);
+ proto_tree_add_item(rr_tree, hf_dns_nsec3_algo, tvb, cur_offset, 1, ENC_BIG_ENDIAN);
+ cur_offset ++;
+ proto_tree_add_item(rr_tree, hf_dns_nsec3_flags, tvb, cur_offset, 1, ENC_BIG_ENDIAN);
+ cur_offset ++;
+ proto_tree_add_item(rr_tree, hf_dns_nsec3_iterations, tvb, cur_offset, 2, ENC_BIG_ENDIAN);
+ cur_offset += 2;
+ salt_len = tvb_get_guint8(tvb, cur_offset);
+ proto_tree_add_item(rr_tree, hf_dns_nsec3_salt_length, tvb, cur_offset, 1, ENC_BIG_ENDIAN);
+ cur_offset ++;
+ proto_tree_add_item(rr_tree, hf_dns_nsec3_salt_value, tvb, cur_offset, salt_len, ENC_NA);
}
break;
- case T_NXT:
+ case T_NXT:
{
- int rr_len = data_len;
+ int rr_len = data_len;
const guchar *next_domain_name;
- int next_domain_name_len;
- int rr_type;
- guint8 bits;
- int mask;
- int i;
+ int next_domain_name_len;
+ int rr_type;
+ guint8 bits;
+ int mask;
+ int i;
/* XXX Fix data length */
next_domain_name_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset,
- &next_domain_name);
+ &next_domain_name);
name_out = format_text(next_domain_name, strlen(next_domain_name));
- if (cinfo != NULL)
+ if (cinfo != NULL) {
col_append_fstr(cinfo, COL_INFO, " %s", name_out);
-
- proto_item_append_text(trr, ", next domain name %s", name_out);
- proto_tree_add_text(rr_tree, tvb, cur_offset, next_domain_name_len,
- "Next domain name: %s", name_out);
- cur_offset += next_domain_name_len;
- rr_len -= next_domain_name_len;
- rr_type = 0;
- while (rr_len != 0) {
- bits = tvb_get_guint8(tvb, cur_offset);
- mask = 1<<7;
- for (i = 0; i < 8; i++) {
- if (bits & mask) {
- proto_tree_add_text(rr_tree, tvb, cur_offset, 1,
- "RR type in bit map: %s",
- dns_type_description(rr_type));
- }
- mask >>= 1;
- rr_type++;
- }
- cur_offset += 1;
- rr_len -= 1;
- }
+ }
+ proto_item_append_text(trr, ", next domain name %s", name_out);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, next_domain_name_len,
+ "Next domain name: %s", name_out);
+ cur_offset += next_domain_name_len;
+ rr_len -= next_domain_name_len;
+ rr_type = 0;
+ while (rr_len != 0) {
+ bits = tvb_get_guint8(tvb, cur_offset);
+ mask = 1<<7;
+ for (i = 0; i < 8; i++) {
+ if (bits & mask) {
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 1,
+ "RR type in bit map: %s",
+ dns_type_description(rr_type));
+ }
+ mask >>= 1;
+ rr_type++;
+ }
+ cur_offset += 1;
+ rr_len -= 1;
+ }
}
break;
- case T_KX:
+ case T_KX:
{
- guint16 preference = 0;
+ guint16 preference = 0;
const guchar *kx_name;
- int kx_name_len;
+ int kx_name_len;
/* XXX Fix data length */
kx_name_len = get_dns_name(tvb, cur_offset + 2, 0, dns_data_offset, &kx_name);
name_out = format_text(kx_name, strlen(kx_name));
- if (cinfo != NULL)
+ if (cinfo != NULL) {
col_append_fstr(cinfo, COL_INFO, " %u %s", preference, name_out);
-
- proto_item_append_text(trr, ", preference %u, kx %s",
- preference, name_out);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Preference: %u", preference);
- proto_tree_add_text(rr_tree, tvb, cur_offset + 2, kx_name_len, "Key exchange: %s",
- name_out);
+ }
+ proto_item_append_text(trr, ", preference %u, kx %s",
+ preference, name_out);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Preference: %u", preference);
+ proto_tree_add_text(rr_tree, tvb, cur_offset + 2, kx_name_len, "Key exchange: %s",
+ name_out);
}
break;
- case T_CERT:
+ case T_CERT:
{
guint16 cert_type, cert_keytag;
- guint8 cert_keyalg;
- int rr_len = data_len;
+ guint8 cert_keyalg;
+ int rr_len = data_len;
- if (rr_len < 2)
- goto bad_rr;
- cert_type = tvb_get_ntohs(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Type: %s",
- val_to_str(cert_type, cert_vals,
- "Unknown (0x%02X)"));
- cur_offset += 2;
- rr_len -= 2;
-
- if (rr_len < 2)
- goto bad_rr;
- cert_keytag = tvb_get_ntohs(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Key footprint: 0x%04x",
- cert_keytag);
- cur_offset += 2;
- rr_len -= 2;
-
- if (rr_len < 1)
- goto bad_rr;
- cert_keyalg = tvb_get_guint8(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Algorithm: %s",
- val_to_str(cert_keyalg, algo_vals,
- "Unknown (0x%02X)"));
- cur_offset += 1;
- rr_len -= 1;
-
- if (rr_len != 0)
- proto_tree_add_text(rr_tree, tvb, cur_offset, rr_len, "Public key");
+ if (rr_len < 2) {
+ goto bad_rr;
+ }
+ cert_type = tvb_get_ntohs(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Type: %s",
+ val_to_str(cert_type, cert_vals,
+ "Unknown (0x%02X)"));
+ cur_offset += 2;
+ rr_len -= 2;
+
+ if (rr_len < 2) {
+ goto bad_rr;
+ }
+ cert_keytag = tvb_get_ntohs(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Key tag: 0x%04x",
+ cert_keytag);
+ cur_offset += 2;
+ rr_len -= 2;
+
+ if (rr_len < 1) {
+ goto bad_rr;
+ }
+ cert_keyalg = tvb_get_guint8(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Algorithm: %s",
+ val_to_str(cert_keyalg, algo_vals,
+ "Unknown (0x%02X)"));
+ cur_offset += 1;
+ rr_len -= 1;
+
+ if (rr_len != 0) {
+ proto_tree_add_text(rr_tree, tvb, cur_offset, rr_len, "Certificate or CRL");
}
+ }
break;
- case T_OPT:
+ case T_OPT:
proto_tree_add_text(rr_tree, tvb, cur_offset, data_len, "Data");
- break;
+ break;
- case T_DS:
- case T_DLV:
+ case T_DS:
+ case T_DLV:
{
guint16 keytag, digest_data_size;
guint8 ds_algorithm, ds_digest;
- int rr_len = data_len;
+ int rr_len = data_len;
static const value_string tds_digests[] = {
{ TDSDIGEST_RESERVED, "Reserved digest" },
{ TDSDIGEST_SHA1, "SHA-1" },
{ TDSDIGEST_SHA256, "SHA-256" },
+ { TDSDIGEST_GOST, "GOST R 34.11-94" },
+ { TDSDIGEST_SHA384, "SHA-384" },
{ 0, NULL }
};
- if (rr_len < 2)
- goto bad_rr;
- keytag = tvb_get_ntohs(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Key id: %04u", keytag);
- cur_offset += 2;
- rr_len -= 2;
-
- if (rr_len < 1)
- goto bad_rr;
- ds_algorithm = tvb_get_guint8(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Algorithm: %s", val_to_str(ds_algorithm, algo_vals,"Unknown (0x%02X)") );
- cur_offset += 1;
- rr_len -= 1;
-
- if (rr_len < 1)
- goto bad_rr;
- ds_digest = tvb_get_guint8(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Digest type: %s", val_to_str(ds_digest, tds_digests, "Unknown (0x%02X)"));
- cur_offset += 1;
- rr_len -= 1;
-
- if (ds_digest == TDSDIGEST_SHA1) {
- digest_data_size = 20; /* SHA1 key is always 20 bytes long */
- if (rr_len < digest_data_size)
- goto bad_rr;
- proto_tree_add_text(rr_tree, tvb, cur_offset, digest_data_size, "Public key");
- }
-
- if (ds_digest == TDSDIGEST_SHA256) {
- digest_data_size = 32; /* SHA256 key is always 32 bytes long */
- if (rr_len < digest_data_size)
- goto bad_rr;
- proto_tree_add_text(rr_tree, tvb, cur_offset, digest_data_size, "Public key");
- }
+ if (rr_len < 2) {
+ goto bad_rr;
+ }
+ keytag = tvb_get_ntohs(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Key id: %04u", keytag);
+ cur_offset += 2;
+ rr_len -= 2;
+ if (rr_len < 1) {
+ goto bad_rr;
+ }
+ ds_algorithm = tvb_get_guint8(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 1,
+ "Algorithm: %s", val_to_str(ds_algorithm, algo_vals,"Unknown (0x%02X)") );
+ cur_offset += 1;
+ rr_len -= 1;
+
+ if (rr_len < 1) {
+ goto bad_rr;
+ }
+ ds_digest = tvb_get_guint8(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 1,
+ "Digest type: %s", val_to_str(ds_digest, tds_digests, "Unknown (0x%02X)"));
+ cur_offset += 1;
+ rr_len -= 1;
+
+ if (ds_digest == TDSDIGEST_SHA1) {
+ digest_data_size = 20; /* SHA1 key is always 20 bytes long */
+ if (rr_len < digest_data_size) {
+ goto bad_rr;
+ }
+ proto_tree_add_text(rr_tree, tvb, cur_offset, digest_data_size, "Public key");
+ }
+
+ if (ds_digest == TDSDIGEST_SHA256) {
+ digest_data_size = 32; /* SHA256 key is always 32 bytes long */
+ if (rr_len < digest_data_size) {
+ goto bad_rr;
+ }
+ proto_tree_add_text(rr_tree, tvb, cur_offset, digest_data_size, "Public key");
+ }
+
+ if (ds_digest == TDSDIGEST_GOST) {
+ digest_data_size = 64; /* GOST key is always 64 bytes long */
+ if (rr_len < digest_data_size) {
+ goto bad_rr;
+ }
+ proto_tree_add_text(rr_tree, tvb, cur_offset, digest_data_size, "Public key");
+ }
+
+ if (ds_digest == TDSDIGEST_SHA384) {
+ digest_data_size = 48; /* SHA384 key is always 48 bytes long */
+ if (rr_len < digest_data_size) {
+ goto bad_rr;
+ }
+ proto_tree_add_text(rr_tree, tvb, cur_offset, digest_data_size, "Public key");
+ }
}
break;
- case T_TKEY:
+ case T_TKEY:
{
const guchar *tkey_algname;
- int tkey_algname_len;
- guint16 tkey_mode, tkey_error, tkey_keylen, tkey_otherlen;
- int rr_len = data_len;
- nstime_t nstime;
+ int tkey_algname_len;
+ guint16 tkey_mode, tkey_error, tkey_keylen, tkey_otherlen;
+ int rr_len = data_len;
+ nstime_t nstime;
+
static const value_string tkey_modes[] = {
- { TKEYMODE_SERVERASSIGNED, "Server assigned" },
- { TKEYMODE_DIFFIEHELLMAN, "Diffie Hellman" },
- { TKEYMODE_GSSAPI, "GSSAPI" },
- { TKEYMODE_RESOLVERASSIGNED, "Resolver assigned" },
- { TKEYMODE_DELETE, "Delete" },
- { 0, NULL } };
+ { TKEYMODE_SERVERASSIGNED, "Server assigned" },
+ { TKEYMODE_DIFFIEHELLMAN, "Diffie Hellman" },
+ { TKEYMODE_GSSAPI, "GSSAPI" },
+ { TKEYMODE_RESOLVERASSIGNED, "Resolver assigned" },
+ { TKEYMODE_DELETE, "Delete" },
+ { 0, NULL } };
- proto_tree *key_tree;
- proto_item *key_item;
+ proto_tree *key_tree;
+ proto_item *key_item;
- /* XXX Fix data length */
- tkey_algname_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &tkey_algname);
- proto_tree_add_text(rr_tree, tvb, cur_offset, tkey_algname_len,
- "Algorithm name: %s",
- format_text(tkey_algname, strlen(tkey_algname)));
- cur_offset += tkey_algname_len;
- rr_len -= tkey_algname_len;
-
- if (rr_len < 4)
- goto bad_rr;
- nstime.secs = tvb_get_ntohl(tvb, cur_offset);
- nstime.nsecs = 0;
- proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Signature inception: %s",
- abs_time_to_str(&nstime, ABSOLUTE_TIME_LOCAL, TRUE));
- cur_offset += 4;
- rr_len -= 4;
-
- if (rr_len < 4)
- goto bad_rr;
- nstime.secs = tvb_get_ntohl(tvb, cur_offset);
- nstime.nsecs = 0;
- proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Signature expiration: %s",
- abs_time_to_str(&nstime, ABSOLUTE_TIME_LOCAL, TRUE));
- cur_offset += 4;
- rr_len -= 4;
-
- if (rr_len < 2)
- goto bad_rr;
- tkey_mode = tvb_get_ntohs(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Mode: %s",
- val_to_str(tkey_mode, tkey_modes,
- "Unknown (0x%04X)"));
- cur_offset += 2;
- rr_len -= 2;
-
- if (rr_len < 2)
- goto bad_rr;
- tkey_error = tvb_get_ntohs(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Error: %s",
- val_to_str(tkey_error, rcode_vals,
- val_to_str(tkey_error, tsigerror_vals, "Unknown error (%x)")));
- cur_offset += 2;
- rr_len -= 2;
-
- tkey_keylen = tvb_get_ntohs(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Key Size: %u",
- tkey_keylen);
- cur_offset += 2;
- rr_len -= 2;
-
- if (tkey_keylen != 0) {
- key_item = proto_tree_add_text(
- rr_tree, tvb, cur_offset, tkey_keylen, "Key Data");
-
- key_tree = proto_item_add_subtree(key_item, ett_t_key);
-
- switch(tkey_mode) {
- case TKEYMODE_GSSAPI: {
- tvbuff_t *gssapi_tvb;
-
- /*
- * XXX - in at least one capture, this appears to
- * be an NTLMSSP blob, with no ASN.1 in it, in
- * a query.
- *
- * See RFC 3645 which might indicate what's going
- * on here. (The key is an output_token from
- * GSS_Init_sec_context.)
- *
- * How the heck do we know what method is being
- * used, so we know how to decode the key? Do we
- * have to look at the algorithm name, e.g.
- * "gss.microsoft.com"? We currently do as the
- * the SMB dissector does in some cases, and check
- * whether the security blob begins with "NTLMSSP".
- */
- gssapi_tvb = tvb_new_subset(
- tvb, cur_offset, tkey_keylen, tkey_keylen);
- if(tvb_strneql(gssapi_tvb, 0, "NTLMSSP", 7) == 0)
- call_dissector(ntlmssp_handle, gssapi_tvb, pinfo, key_tree);
- else
- call_dissector(gssapi_handle, gssapi_tvb, pinfo,
- key_tree);
-
- break;
- }
- default:
-
- /* No dissector for this key mode */
-
- break;
- }
-
- cur_offset += tkey_keylen;
- rr_len -= tkey_keylen;
- }
-
- if (rr_len < 2)
- goto bad_rr;
- tkey_otherlen = tvb_get_ntohs(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Other Size: %u",
- tkey_otherlen);
- cur_offset += 2;
- rr_len -= 2;
-
- if (tkey_otherlen != 0) {
- if (rr_len < tkey_otherlen)
- goto bad_rr;
- proto_tree_add_text(rr_tree, tvb, cur_offset, tkey_otherlen, "Other Data");
- }
+ /* XXX Fix data length */
+ tkey_algname_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &tkey_algname);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, tkey_algname_len,
+ "Algorithm name: %s",
+ format_text(tkey_algname, strlen(tkey_algname)));
+ cur_offset += tkey_algname_len;
+ rr_len -= tkey_algname_len;
+
+ if (rr_len < 4) {
+ goto bad_rr;
+ }
+ nstime.secs = tvb_get_ntohl(tvb, cur_offset);
+ nstime.nsecs = 0;
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Signature inception: %s",
+ abs_time_to_str(&nstime, ABSOLUTE_TIME_LOCAL, TRUE));
+ cur_offset += 4;
+ rr_len -= 4;
+
+ if (rr_len < 4) {
+ goto bad_rr;
+ }
+ nstime.secs = tvb_get_ntohl(tvb, cur_offset);
+ nstime.nsecs = 0;
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Signature expiration: %s",
+ abs_time_to_str(&nstime, ABSOLUTE_TIME_LOCAL, TRUE));
+ cur_offset += 4;
+ rr_len -= 4;
+
+ if (rr_len < 2) {
+ goto bad_rr;
+ }
+ tkey_mode = tvb_get_ntohs(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Mode: %s",
+ val_to_str(tkey_mode, tkey_modes,
+ "Unknown (0x%04X)"));
+ cur_offset += 2;
+ rr_len -= 2;
+
+ if (rr_len < 2) {
+ goto bad_rr;
+ }
+ tkey_error = tvb_get_ntohs(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Error: %s",
+ val_to_str(tkey_error, rcode_vals,
+ val_to_str(tkey_error, tsigerror_vals, "Unknown error (%x)")));
+ cur_offset += 2;
+ rr_len -= 2;
+
+ tkey_keylen = tvb_get_ntohs(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Key Size: %u",
+ tkey_keylen);
+ cur_offset += 2;
+ rr_len -= 2;
+
+ if (tkey_keylen != 0) {
+ key_item = proto_tree_add_text(
+ rr_tree, tvb, cur_offset, tkey_keylen, "Key Data");
+
+ key_tree = proto_item_add_subtree(key_item, ett_t_key);
+
+ switch(tkey_mode) {
+ case TKEYMODE_GSSAPI: {
+ tvbuff_t *gssapi_tvb;
+
+ /*
+ * XXX - in at least one capture, this appears to
+ * be an NTLMSSP blob, with no ASN.1 in it, in
+ * a query.
+ *
+ * See RFC 3645 which might indicate what's going
+ * on here. (The key is an output_token from
+ * GSS_Init_sec_context.)
+ *
+ * How the heck do we know what method is being
+ * used, so we know how to decode the key? Do we
+ * have to look at the algorithm name, e.g.
+ * "gss.microsoft.com"? We currently do as the
+ * the SMB dissector does in some cases, and check
+ * whether the security blob begins with "NTLMSSP".
+ */
+ gssapi_tvb = tvb_new_subset(
+ tvb, cur_offset, tkey_keylen, tkey_keylen);
+ if (tvb_strneql(gssapi_tvb, 0, "NTLMSSP", 7) == 0) {
+ call_dissector(ntlmssp_handle, gssapi_tvb, pinfo, key_tree);
+ } else {
+ call_dissector(gssapi_handle, gssapi_tvb, pinfo, key_tree);
+ }
+ break;
+ }
+ default:
+
+ /* No dissector for this key mode */
+
+ break;
+ }
+
+ cur_offset += tkey_keylen;
+ rr_len -= tkey_keylen;
+ }
+
+ if (rr_len < 2) {
+ goto bad_rr;
+ }
+ tkey_otherlen = tvb_get_ntohs(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Other Size: %u",
+ tkey_otherlen);
+ cur_offset += 2;
+ rr_len -= 2;
+
+ if (tkey_otherlen != 0) {
+ if (rr_len < tkey_otherlen) {
+ goto bad_rr;
+ }
+ proto_tree_add_text(rr_tree, tvb, cur_offset, tkey_otherlen, "Other Data");
+ }
}
break;
- case T_TSIG:
+ case T_TSIG:
{
- guint16 tsig_error, tsig_timehi, tsig_siglen, tsig_otherlen;
- guint32 tsig_timelo;
+ guint16 tsig_error, tsig_timehi, tsig_siglen, tsig_otherlen;
+ guint32 tsig_timelo;
const guchar *tsig_raw_algname;
- char *tsig_algname;
- int tsig_algname_len;
- nstime_t nstime;
- int rr_len = data_len;
+ char *tsig_algname;
+ int tsig_algname_len;
+ nstime_t nstime;
+ int rr_len = data_len;
- /* XXX Fix data length */
- tsig_algname_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &tsig_raw_algname);
- tsig_algname=format_text(tsig_raw_algname, strlen(tsig_raw_algname));
- proto_tree_add_string(rr_tree, hf_dns_tsig_algorithm_name, tvb, cur_offset, tsig_algname_len, tsig_algname);
- cur_offset += tsig_algname_len;
- rr_len -= tsig_algname_len;
-
- if (rr_len < 6)
- goto bad_rr;
- tsig_timehi = tvb_get_ntohs(tvb, cur_offset);
- tsig_timelo = tvb_get_ntohl(tvb, cur_offset + 2);
- nstime.secs = tsig_timelo;
- nstime.nsecs = 0;
- proto_tree_add_text(rr_tree, tvb, cur_offset, 6, "Time signed: %s%s",
- abs_time_to_str(&nstime, ABSOLUTE_TIME_LOCAL, TRUE),
- tsig_timehi == 0 ? "" : "(high bits set)");
- cur_offset += 6;
- rr_len -= 6;
-
- if (rr_len < 2)
- goto bad_rr;
-
- proto_tree_add_item(rr_tree, hf_dns_tsig_fudge, tvb, cur_offset, 2, ENC_BIG_ENDIAN);
- cur_offset += 2;
- rr_len -= 2;
-
- if (rr_len < 2)
- goto bad_rr;
- tsig_siglen = tvb_get_ntohs(tvb, cur_offset);
- proto_tree_add_item(rr_tree, hf_dns_tsig_mac_size, tvb, cur_offset, 2, ENC_BIG_ENDIAN);
- cur_offset += 2;
- rr_len -= 2;
-
- if (tsig_siglen != 0) {
- proto_item *mac_item;
- proto_tree *mac_tree;
- tvbuff_t *sub_tvb;
-
- if (rr_len < tsig_siglen)
- goto bad_rr;
-
- mac_item = proto_tree_add_item(rr_tree, hf_dns_tsig_mac, tvb, cur_offset, tsig_siglen, ENC_NA);
- mac_tree = proto_item_add_subtree(mac_item, ett_dns_mac);
-
- sub_tvb=tvb_new_subset(tvb, cur_offset, tsig_siglen, tsig_siglen);
-
- if(!dissector_try_string(dns_tsig_dissector_table, tsig_algname, sub_tvb, pinfo, mac_tree)){
- proto_tree_add_text(mac_tree, sub_tvb, 0, tvb_length(sub_tvb), "No dissector for algorithm:%s", tsig_algname);
- }
-
- cur_offset += tsig_siglen;
- rr_len -= tsig_siglen;
- }
-
- if (rr_len < 2)
- goto bad_rr;
- proto_tree_add_item(rr_tree, hf_dns_tsig_original_id, tvb, cur_offset, 2, ENC_BIG_ENDIAN);
- cur_offset += 2;
- rr_len -= 2;
-
- if (rr_len < 2)
- goto bad_rr;
- tsig_error = tvb_get_ntohs(tvb, cur_offset);
- proto_tree_add_uint_format(rr_tree, hf_dns_tsig_error, tvb, cur_offset, 2, tsig_error, "Error: %s (%d)",
- val_to_str(tsig_error, rcode_vals,val_to_str(tsig_error, tsigerror_vals, "Unknown error")),
- tsig_error);
- cur_offset += 2;
- rr_len -= 2;
-
- if (rr_len < 2)
- goto bad_rr;
- tsig_otherlen = tvb_get_ntohs(tvb, cur_offset);
- proto_tree_add_item(rr_tree, hf_dns_tsig_other_len, tvb, cur_offset, 2, ENC_BIG_ENDIAN);
- cur_offset += 2;
- rr_len -= 2;
-
- if (tsig_otherlen != 0) {
- if (rr_len < tsig_otherlen)
- goto bad_rr;
- proto_tree_add_item(rr_tree, hf_dns_tsig_other_data, tvb, cur_offset, tsig_otherlen, ENC_NA);
- }
+ /* XXX Fix data length */
+ tsig_algname_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &tsig_raw_algname);
+ tsig_algname=format_text(tsig_raw_algname, strlen(tsig_raw_algname));
+ proto_tree_add_string(rr_tree, hf_dns_tsig_algorithm_name, tvb, cur_offset, tsig_algname_len, tsig_algname);
+ cur_offset += tsig_algname_len;
+ rr_len -= tsig_algname_len;
+
+ if (rr_len < 6) {
+ goto bad_rr;
+ }
+ tsig_timehi = tvb_get_ntohs(tvb, cur_offset);
+ tsig_timelo = tvb_get_ntohl(tvb, cur_offset + 2);
+ nstime.secs = tsig_timelo;
+ nstime.nsecs = 0;
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 6, "Time signed: %s%s",
+ abs_time_to_str(&nstime, ABSOLUTE_TIME_LOCAL, TRUE),
+ tsig_timehi == 0 ? "" : "(high bits set)");
+ cur_offset += 6;
+ rr_len -= 6;
+
+ if (rr_len < 2) {
+ goto bad_rr;
+ }
+ proto_tree_add_item(rr_tree, hf_dns_tsig_fudge, tvb, cur_offset, 2, ENC_BIG_ENDIAN);
+ cur_offset += 2;
+ rr_len -= 2;
+
+ if (rr_len < 2) {
+ goto bad_rr;
+ }
+ tsig_siglen = tvb_get_ntohs(tvb, cur_offset);
+ proto_tree_add_item(rr_tree, hf_dns_tsig_mac_size, tvb, cur_offset, 2, ENC_BIG_ENDIAN);
+ cur_offset += 2;
+ rr_len -= 2;
+
+ if (tsig_siglen != 0) {
+ proto_item *mac_item;
+ proto_tree *mac_tree;
+ tvbuff_t *sub_tvb;
+
+ if (rr_len < tsig_siglen) {
+ goto bad_rr;
+ }
+ mac_item = proto_tree_add_item(rr_tree, hf_dns_tsig_mac, tvb, cur_offset, tsig_siglen, ENC_NA);
+ mac_tree = proto_item_add_subtree(mac_item, ett_dns_mac);
+
+ sub_tvb=tvb_new_subset(tvb, cur_offset, tsig_siglen, tsig_siglen);
+
+ if (!dissector_try_string(dns_tsig_dissector_table, tsig_algname, sub_tvb, pinfo, mac_tree)) {
+ proto_tree_add_text(mac_tree, sub_tvb, 0, tvb_length(sub_tvb),
+ "No dissector for algorithm:%s", tsig_algname);
+ }
+
+ cur_offset += tsig_siglen;
+ rr_len -= tsig_siglen;
+ }
+
+ if (rr_len < 2) {
+ goto bad_rr;
+ }
+ proto_tree_add_item(rr_tree, hf_dns_tsig_original_id, tvb, cur_offset, 2, ENC_BIG_ENDIAN);
+ cur_offset += 2;
+ rr_len -= 2;
+
+ if (rr_len < 2) {
+ goto bad_rr;
+ }
+ tsig_error = tvb_get_ntohs(tvb, cur_offset);
+ proto_tree_add_uint_format(rr_tree, hf_dns_tsig_error, tvb, cur_offset, 2, tsig_error, "Error: %s (%d)",
+ val_to_str_const(tsig_error, rcode_vals,
+ val_to_str_const(tsig_error, tsigerror_vals, "Unknown error")),
+ tsig_error);
+ cur_offset += 2;
+ rr_len -= 2;
+
+ if (rr_len < 2) {
+ goto bad_rr;
+ }
+ tsig_otherlen = tvb_get_ntohs(tvb, cur_offset);
+ proto_tree_add_item(rr_tree, hf_dns_tsig_other_len, tvb, cur_offset, 2, ENC_BIG_ENDIAN);
+ cur_offset += 2;
+ rr_len -= 2;
+
+ if (tsig_otherlen != 0) {
+ if (rr_len < tsig_otherlen) {
+ goto bad_rr;
+ }
+ proto_tree_add_item(rr_tree, hf_dns_tsig_other_data, tvb, cur_offset, tsig_otherlen, ENC_NA);
+ }
}
break;
- case T_WINS:
+ case T_WINS:
{
- int rr_len = data_len;
+ int rr_len = data_len;
guint32 local_flag;
guint32 lookup_timeout;
guint32 cache_timeout;
guint32 nservers;
- if (rr_len < 4)
- goto bad_rr;
- local_flag = tvb_get_ntohl(tvb, cur_offset);
-
- proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Local flag: %s",
- local_flag ? "true" : "false");
+ if (rr_len < 4) {
+ goto bad_rr;
+ }
+ local_flag = tvb_get_ntohl(tvb, cur_offset);
- cur_offset += 4;
- rr_len -= 4;
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Local flag: %s",
+ local_flag ? "true" : "false");
- if (rr_len < 4)
- goto bad_rr;
- lookup_timeout = tvb_get_ntohl(tvb, cur_offset);
+ cur_offset += 4;
+ rr_len -= 4;
- proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Lookup timeout: %u seconds",
- lookup_timeout);
+ if (rr_len < 4) {
+ goto bad_rr;
+ }
+ lookup_timeout = tvb_get_ntohl(tvb, cur_offset);
- cur_offset += 4;
- rr_len -= 4;
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Lookup timeout: %u seconds",
+ lookup_timeout);
- if (rr_len < 4)
- goto bad_rr;
- cache_timeout = tvb_get_ntohl(tvb, cur_offset);
+ cur_offset += 4;
+ rr_len -= 4;
- proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Cache timeout: %u seconds",
- cache_timeout);
+ if (rr_len < 4) {
+ goto bad_rr;
+ }
+ cache_timeout = tvb_get_ntohl(tvb, cur_offset);
- cur_offset += 4;
- rr_len -= 4;
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Cache timeout: %u seconds",
+ cache_timeout);
- if (rr_len < 4)
- goto bad_rr;
- nservers = tvb_get_ntohl(tvb, cur_offset);
+ cur_offset += 4;
+ rr_len -= 4;
- proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Number of WINS servers: %u",
- nservers);
+ if (rr_len < 4) {
+ goto bad_rr;
+ }
+ nservers = tvb_get_ntohl(tvb, cur_offset);
- cur_offset += 4;
- rr_len -= 4;
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Number of WINS servers: %u",
+ nservers);
- while (rr_len != 0 && nservers != 0) {
- if (rr_len < 4)
- goto bad_rr;
+ cur_offset += 4;
+ rr_len -= 4;
- proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "WINS server address: %s",
- tvb_ip_to_str(tvb, cur_offset));
+ while (rr_len != 0 && nservers != 0) {
+ if (rr_len < 4) {
+ goto bad_rr;
+ }
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "WINS server address: %s",
+ tvb_ip_to_str(tvb, cur_offset));
- cur_offset += 4;
- rr_len -= 4;
- nservers--;
- }
+ cur_offset += 4;
+ rr_len -= 4;
+ nservers--;
+ }
}
break;
- case T_WINS_R:
+ case T_WINS_R:
{
- int rr_len = data_len;
- guint32 local_flag;
- guint32 lookup_timeout;
- guint32 cache_timeout;
+ int rr_len = data_len;
+ guint32 local_flag;
+ guint32 lookup_timeout;
+ guint32 cache_timeout;
const guchar *dname;
- int dname_len;
+ int dname_len;
- if (rr_len < 4)
+ if (rr_len < 4) {
goto bad_rr;
+ }
local_flag = tvb_get_ntohl(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Local flag: %s",
- local_flag ? "true" : "false");
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Local flag: %s",
+ local_flag ? "true" : "false");
cur_offset += 4;
- rr_len -= 4;
+ rr_len -= 4;
- if (rr_len < 4)
+ if (rr_len < 4) {
goto bad_rr;
+ }
lookup_timeout = tvb_get_ntohl(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Lookup timeout: %u seconds",
- lookup_timeout);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Lookup timeout: %u seconds",
+ lookup_timeout);
cur_offset += 4;
- rr_len -= 4;
+ rr_len -= 4;
- if (rr_len < 4)
+ if (rr_len < 4) {
goto bad_rr;
+ }
cache_timeout = tvb_get_ntohl(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Cache timeout: %u seconds",
- cache_timeout);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Cache timeout: %u seconds",
+ cache_timeout);
cur_offset += 4;
- /* rr_len -= 4; */
+ /* rr_len -= 4; */
/* XXX Fix data length */
dname_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &dname);
name_out = format_text(dname, strlen(dname));
- if (cinfo != NULL)
+ if (cinfo != NULL) {
col_append_fstr(cinfo, COL_INFO, " %s", name_out);
- proto_item_append_text(trr, ", name result domain %s", name_out);
- proto_tree_add_text(rr_tree, tvb, cur_offset, dname_len, "Name result domain: %s",
- name_out);
+ }
+ proto_item_append_text(trr, ", name result domain %s", name_out);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, dname_len, "Name result domain: %s",
+ name_out);
}
break;
- case T_SRV:
+ case T_SRV:
{
- guint16 priority = 0;
- guint16 weight = 0;
- guint16 port = 0;
+ guint16 priority = 0;
+ guint16 weight = 0;
+ guint16 port = 0;
const guchar *target;
- int target_len;
+ int target_len;
priority = tvb_get_ntohs(tvb, cur_offset);
weight = tvb_get_ntohs(tvb, cur_offset+2);
@@ -2551,34 +2650,34 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset,
/* XXX Fix data length */
target_len = get_dns_name(tvb, cur_offset + 6, 0, dns_data_offset, &target);
name_out = format_text(target, strlen(target));
- if (cinfo != NULL)
+ if (cinfo != NULL) {
col_append_fstr(cinfo, COL_INFO, " %u %u %u %s", priority, weight, port, name_out);
-
- proto_item_append_text(trr,
- ", priority %u, weight %u, port %u, target %s",
- priority, weight, port, name_out);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Priority: %u", priority);
- proto_tree_add_text(rr_tree, tvb, cur_offset + 2, 2, "Weight: %u", weight);
- proto_tree_add_text(rr_tree, tvb, cur_offset + 4, 2, "Port: %u", port);
- proto_tree_add_text(rr_tree, tvb, cur_offset + 6, target_len, "Target: %s",
- name_out);
+ }
+ proto_item_append_text(trr,
+ ", priority %u, weight %u, port %u, target %s",
+ priority, weight, port, name_out);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Priority: %u", priority);
+ proto_tree_add_text(rr_tree, tvb, cur_offset + 2, 2, "Weight: %u", weight);
+ proto_tree_add_text(rr_tree, tvb, cur_offset + 4, 2, "Port: %u", port);
+ proto_tree_add_text(rr_tree, tvb, cur_offset + 6, target_len, "Target: %s",
+ name_out);
}
break;
case T_NAPTR:
{
- int offset = cur_offset;
- guint16 order;
- guint16 preference;
- gchar *flags;
- guint8 flags_len;
- guchar *service;
- guint8 service_len;
- guchar *regex;
- guint8 regex_len;
+ int offset = cur_offset;
+ guint16 order;
+ guint16 preference;
+ gchar *flags;
+ guint8 flags_len;
+ guchar *service;
+ guint8 service_len;
+ guchar *regex;
+ guint8 regex_len;
const guchar *replacement;
- int replacement_len;
+ int replacement_len;
order = tvb_get_ntohs(tvb, offset);
offset += 2;
@@ -2599,32 +2698,32 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset,
replacement_len = get_dns_name(tvb, offset, 0, dns_data_offset, &replacement);
name_out = format_text(replacement, strlen(replacement));
- if (cinfo != NULL)
+ if (cinfo != NULL) {
col_append_fstr(cinfo, COL_INFO, " %u %u %s", order, preference, flags);
+ }
-
- proto_item_append_text(trr, ", order %u, preference %u, flags %s",
- order, preference, flags);
- offset = cur_offset;
- proto_tree_add_text(rr_tree, tvb, offset, 2, "Order: %u", order);
- offset += 2;
- proto_tree_add_text(rr_tree, tvb, offset, 2, "Preference: %u", preference);
- offset += 2;
- proto_tree_add_text(rr_tree, tvb, offset, 1, "Flags length: %u", flags_len);
- offset++;
- proto_tree_add_text(rr_tree, tvb, offset, flags_len, "Flags: \"%s\"", flags);
- offset += flags_len;
- proto_tree_add_text(rr_tree, tvb, offset, 1, "Service length: %u", service_len);
- offset++;
- proto_tree_add_text(rr_tree, tvb, offset, service_len, "Service: \"%s\"", service);
- offset += service_len;
- proto_tree_add_text(rr_tree, tvb, offset, 1, "Regex length: %u", regex_len);
- offset++;
- proto_tree_add_text(rr_tree, tvb, offset, regex_len, "Regex: \"%s\"", regex);
- offset += regex_len;
- proto_tree_add_text(rr_tree, tvb, offset, 1, "Replacement length: %u", replacement_len);
- offset++;
- proto_tree_add_text(rr_tree, tvb, offset, replacement_len, "Replacement: %s", name_out);
+ proto_item_append_text(trr, ", order %u, preference %u, flags %s",
+ order, preference, flags);
+ offset = cur_offset;
+ proto_tree_add_text(rr_tree, tvb, offset, 2, "Order: %u", order);
+ offset += 2;
+ proto_tree_add_text(rr_tree, tvb, offset, 2, "Preference: %u", preference);
+ offset += 2;
+ proto_tree_add_text(rr_tree, tvb, offset, 1, "Flags length: %u", flags_len);
+ offset++;
+ proto_tree_add_text(rr_tree, tvb, offset, flags_len, "Flags: \"%s\"", flags);
+ offset += flags_len;
+ proto_tree_add_text(rr_tree, tvb, offset, 1, "Service length: %u", service_len);
+ offset++;
+ proto_tree_add_text(rr_tree, tvb, offset, service_len, "Service: \"%s\"", service);
+ offset += service_len;
+ proto_tree_add_text(rr_tree, tvb, offset, 1, "Regex length: %u", regex_len);
+ offset++;
+ proto_tree_add_text(rr_tree, tvb, offset, regex_len, "Regex: \"%s\"", regex);
+ offset += regex_len;
+ proto_tree_add_text(rr_tree, tvb, offset, 1, "Replacement length: %u", replacement_len);
+ offset++;
+ proto_tree_add_text(rr_tree, tvb, offset, replacement_len, "Replacement: %s", name_out);
}
break;
@@ -2632,7 +2731,7 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset,
case T_SSHFP:
{
guint8 sshfp_algorithm, sshfp_type;
- int rr_len = data_len;
+ int rr_len = data_len;
static const value_string sshfp_algo[] = {
{ TSSHFP_ALGO_RESERVED, "Reserved" },
@@ -2648,34 +2747,39 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset,
};
- if (rr_len < 1)
- goto bad_rr;
- sshfp_algorithm = tvb_get_guint8(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Algorithm: %s", val_to_str(sshfp_algorithm, sshfp_algo, "Unknown (0x%02X)"));
- cur_offset += 1;
- rr_len -= 1;
+ if (rr_len < 1) {
+ goto bad_rr;
+ }
+ sshfp_algorithm = tvb_get_guint8(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 1,
+ "Algorithm: %s", val_to_str(sshfp_algorithm, sshfp_algo, "Unknown (0x%02X)"));
+ cur_offset += 1;
+ rr_len -= 1;
- if (rr_len < 1)
- goto bad_rr;
- sshfp_type = tvb_get_guint8(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "Fingerprint type: %s", val_to_str(sshfp_type, sshfp_fingertype, "Unknown (0x%02X)"));
- cur_offset += 1;
- rr_len -= 1;
+ if (rr_len < 1) {
+ goto bad_rr;
+ }
+ sshfp_type = tvb_get_guint8(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 1,
+ "Fingerprint type: %s", val_to_str(sshfp_type, sshfp_fingertype, "Unknown (0x%02X)"));
+ cur_offset += 1;
+ rr_len -= 1;
- if (rr_len < 1)
- goto bad_rr;
- if (rr_len != 0)
+ if (rr_len < 1) {
+ goto bad_rr;
+ }
+ if (rr_len != 0) {
proto_tree_add_item(rr_tree, hf_dns_sshfp_fingerprint, tvb, cur_offset, rr_len, ENC_NA);
-
+ }
}
break;
case T_HIP:
{
- guint8 hit_len, algo;
- guint16 pk_len;
- int rr_len = data_len;
- int rendezvous_len;
+ guint8 hit_len, algo;
+ guint16 pk_len;
+ int rr_len = data_len;
+ int rendezvous_len;
const guchar *rend_server_dns_name;
static const value_string hip_algo_vals[] = {
@@ -2685,264 +2789,310 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset,
{ 0, NULL }
};
- if (cinfo != NULL)
- col_append_fstr(cinfo, COL_INFO, " %s", name);
-
-
- if (rr_len < 1)
- goto bad_rr;
- hit_len = tvb_get_guint8(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "HIT length: %u", hit_len);
- cur_offset += 1;
- rr_len -= 1;
-
- if (rr_len < 1)
- goto bad_rr;
- algo = tvb_get_guint8(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "PK algorithm: %s", val_to_str(algo, hip_algo_vals, "Unknown (0x%02X)"));
- cur_offset += 1;
- rr_len -= 1;
-
- if (rr_len < 1)
- goto bad_rr;
- pk_len = tvb_get_ntohs(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "PK length: %u", pk_len);
- cur_offset += 2;
- rr_len -= 2;
-
- if (rr_len < 1)
- goto bad_rr;
- proto_tree_add_item(rr_tree, hf_dns_hip_hit, tvb, cur_offset, hit_len, ENC_NA);
- cur_offset += hit_len;
- rr_len -= hit_len;
-
- if (rr_len < 1)
- goto bad_rr;
- proto_tree_add_item(rr_tree, hf_dns_hip_pk, tvb, cur_offset, pk_len, ENC_NA);
- cur_offset += pk_len;
- rr_len -= pk_len;
-
- if (rr_len < 1)
- goto bad_rr;
-
- while (rr_len > 1) {
- rendezvous_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &rend_server_dns_name);
- proto_tree_add_text(rr_tree, tvb, cur_offset, rendezvous_len, "Rendezvous Server: %s",
- format_text(rend_server_dns_name, strlen(rend_server_dns_name)));
- cur_offset += rendezvous_len;
- rr_len -= rendezvous_len;
- }
+ if (cinfo != NULL) {
+ col_append_fstr(cinfo, COL_INFO, " %s", name);
+ }
+
+ if (rr_len < 1) {
+ goto bad_rr;
+ }
+ hit_len = tvb_get_guint8(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 1, "HIT length: %u", hit_len);
+ cur_offset += 1;
+ rr_len -= 1;
+
+ if (rr_len < 1) {
+ goto bad_rr;
+ }
+ algo = tvb_get_guint8(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 1,
+ "PK algorithm: %s", val_to_str(algo, hip_algo_vals, "Unknown (0x%02X)"));
+ cur_offset += 1;
+ rr_len -= 1;
+
+ if (rr_len < 1) {
+ goto bad_rr;
+ }
+ pk_len = tvb_get_ntohs(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "PK length: %u", pk_len);
+ cur_offset += 2;
+ rr_len -= 2;
+
+ if (rr_len < 1) {
+ goto bad_rr;
+ }
+ proto_tree_add_item(rr_tree, hf_dns_hip_hit, tvb, cur_offset, hit_len, ENC_NA);
+ cur_offset += hit_len;
+ rr_len -= hit_len;
+
+ if (rr_len < 1) {
+ goto bad_rr;
+ }
+ proto_tree_add_item(rr_tree, hf_dns_hip_pk, tvb, cur_offset, pk_len, ENC_NA);
+ cur_offset += pk_len;
+ rr_len -= pk_len;
+
+ if (rr_len < 1) {
+ goto bad_rr;
+ }
+ while (rr_len > 1) {
+ rendezvous_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &rend_server_dns_name);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, rendezvous_len, "Rendezvous Server: %s",
+ format_text(rend_server_dns_name, strlen(rend_server_dns_name)));
+ cur_offset += rendezvous_len;
+ rr_len -= rendezvous_len;
+ }
}
break;
case T_DHCID:
{
- if (cinfo != NULL)
- col_append_fstr(cinfo, COL_INFO, " %s", name);
-
+ if (cinfo != NULL) {
+ col_append_fstr(cinfo, COL_INFO, " %s", name);
+ }
- if (data_len < 1)
- goto bad_rr;
- proto_tree_add_item(rr_tree, hf_dns_dhcid_rdata, tvb, cur_offset, data_len, ENC_NA);
+ if (data_len < 1) {
+ goto bad_rr;
+ }
+ proto_tree_add_item(rr_tree, hf_dns_dhcid_rdata, tvb, cur_offset, data_len, ENC_NA);
}
break;
case T_APL:
- {
- int rr_len = data_len;
- guint16 afamily;
- guint8 afdpart_len;
- guint8 *addr_copy;
+ {
+ int rr_len = data_len;
+ guint16 afamily;
+ guint8 afdpart_len;
+ guint8 *addr_copy;
- static const value_string apl_afamily_vals[] = {
+ static const value_string apl_afamily_vals[] = {
{ TAPL_ADDR_FAMILY_IPV4, "IPv4" },
{ TAPL_ADDR_FAMILY_IPV6, "IPv6" },
{ 0, NULL }};
- if (cinfo != NULL)
- col_append_fstr(cinfo, COL_INFO, " %s", name);
-
- while (rr_len > 1) {
-
- if (rr_len < 1)
- goto bad_rr;
- afamily = tvb_get_ntohs(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Address Family: %s", val_to_str(afamily, apl_afamily_vals, "Unknown (0x%02X)"));
- cur_offset += 2;
- rr_len -= 2;
-
- if (rr_len < 1)
- goto bad_rr;
- proto_tree_add_item(rr_tree, hf_dns_apl_coded_prefix, tvb, cur_offset, 1, ENC_BIG_ENDIAN);
- cur_offset += 1;
- rr_len -= 1;
-
- if (rr_len < 1)
- goto bad_rr;
- afdpart_len = tvb_get_guint8(tvb, cur_offset) & DNS_APL_AFDLENGTH;
- proto_tree_add_item(rr_tree, hf_dns_apl_negation, tvb, cur_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(rr_tree, hf_dns_apl_afdlength, tvb, cur_offset, 1, ENC_BIG_ENDIAN);
- cur_offset += 1;
- rr_len -= 1;
-
- if (rr_len < 1)
- goto bad_rr;
- if (afamily == 1 && afdpart_len <= 4) {
- addr_copy = se_alloc0(4);
- } else if (afamily == 2 && afdpart_len <= 16) {
- addr_copy = se_alloc0(16);
- } else {
- goto bad_rr;
- }
- tvb_memcpy(tvb, (guint8 *)addr_copy, cur_offset, afdpart_len);
- proto_tree_add_text(rr_tree, tvb, cur_offset, afdpart_len, "%s address: %s", val_to_str(afamily, apl_afamily_vals, "Unknown"),
- (afamily == 0x02) ? ip6_to_str((const struct e_in6_addr *)addr_copy)
- : ip_to_str(addr_copy) );
- cur_offset += afdpart_len;
- rr_len -= afdpart_len;
- }
+ if (cinfo != NULL) {
+ col_append_fstr(cinfo, COL_INFO, " %s", name);
}
- break;
- case T_GPOS:
- {
- guint8 long_len, lat_len, alt_len;
+ while (rr_len > 1) {
- if (cinfo != NULL)
- col_append_fstr(cinfo, COL_INFO, " %s", name);
- if (data_len < 1)
- goto bad_rr;
- long_len = tvb_get_guint8(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset + 1, long_len, "Longitude: %.*s", long_len, tvb_get_ephemeral_string(tvb, cur_offset +1 , long_len));
- cur_offset += 1 + long_len;
+ if (rr_len < 1) {
+ goto bad_rr;
+ }
+ afamily = tvb_get_ntohs(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 2,
+ "Address Family: %s", val_to_str(afamily, apl_afamily_vals, "Unknown (0x%02X)"));
+ cur_offset += 2;
+ rr_len -= 2;
- lat_len = tvb_get_guint8(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset + 1, lat_len, "Latitude: %.*s", lat_len, tvb_get_ephemeral_string(tvb, cur_offset + 1, lat_len));
- cur_offset += 1 + lat_len;
+ if (rr_len < 1) {
+ goto bad_rr;
+ }
+ proto_tree_add_item(rr_tree, hf_dns_apl_coded_prefix, tvb, cur_offset, 1, ENC_BIG_ENDIAN);
+ cur_offset += 1;
+ rr_len -= 1;
- alt_len = tvb_get_guint8(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset + 1, alt_len, "Altitude: %.*s", alt_len, tvb_get_ephemeral_string(tvb, cur_offset + 1, alt_len));
+ if (rr_len < 1) {
+ goto bad_rr;
+ }
+ afdpart_len = tvb_get_guint8(tvb, cur_offset) & DNS_APL_AFDLENGTH;
+ proto_tree_add_item(rr_tree, hf_dns_apl_negation, tvb, cur_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(rr_tree, hf_dns_apl_afdlength, tvb, cur_offset, 1, ENC_BIG_ENDIAN);
+ cur_offset += 1;
+ rr_len -= 1;
+
+ if (rr_len < 1) {
+ goto bad_rr;
+ }
+ if (afamily == 1 && afdpart_len <= 4) {
+ addr_copy = se_alloc0(4);
+ } else if (afamily == 2 && afdpart_len <= 16) {
+ addr_copy = se_alloc0(16);
+ } else {
+ goto bad_rr;
+ }
+ tvb_memcpy(tvb, (guint8 *)addr_copy, cur_offset, afdpart_len);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, afdpart_len,
+ "%s address: %s", val_to_str_const(afamily, apl_afamily_vals, "Unknown"),
+ (afamily == 0x02) ? ip6_to_str((const struct e_in6_addr *)addr_copy)
+ : ip_to_str(addr_copy) );
+ cur_offset += afdpart_len;
+ rr_len -= afdpart_len;
}
+ }
break;
- case T_RP:
- {
- int mbox_dname_len, txt_dname_len;
- const guchar *mbox_dname, *txt_dname;
+ case T_GPOS:
+ {
+ guint8 long_len, lat_len, alt_len;
+
+ if (cinfo != NULL) {
+ col_append_fstr(cinfo, COL_INFO, " %s", name);
+ }
+ if (data_len < 1) {
+ goto bad_rr;
+ }
+ long_len = tvb_get_guint8(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset + 1, long_len,
+ "Longitude: %.*s", long_len, tvb_get_ephemeral_string(tvb, cur_offset +1 , long_len));
+ cur_offset += 1 + long_len;
+
+ lat_len = tvb_get_guint8(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset + 1, lat_len,
+ "Latitude: %.*s", lat_len, tvb_get_ephemeral_string(tvb, cur_offset + 1, lat_len));
+ cur_offset += 1 + lat_len;
+
+ alt_len = tvb_get_guint8(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset + 1, alt_len,
+ "Altitude: %.*s", alt_len, tvb_get_ephemeral_string(tvb, cur_offset + 1, alt_len));
+ }
+ break;
- if (cinfo != NULL)
- col_append_fstr(cinfo, COL_INFO, " %s", name);
+ case T_RP:
+ {
+ int mbox_dname_len, txt_dname_len;
+ const guchar *mbox_dname, *txt_dname;
- if (data_len < 1)
- goto bad_rr;
- mbox_dname_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &mbox_dname);
- proto_tree_add_text(rr_tree, tvb, cur_offset, mbox_dname_len, "Mailbox: %s", format_text(mbox_dname, strlen(mbox_dname)));
- cur_offset += mbox_dname_len;
- txt_dname_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &txt_dname);
- proto_tree_add_text(rr_tree, tvb, cur_offset, txt_dname_len, "TXT RR: %s", format_text(txt_dname, strlen(txt_dname)));
+ if (cinfo != NULL) {
+ col_append_fstr(cinfo, COL_INFO, " %s", name);
}
+ if (data_len < 1) {
+ goto bad_rr;
+ }
+ mbox_dname_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &mbox_dname);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, mbox_dname_len,
+ "Mailbox: %s", format_text(mbox_dname, strlen(mbox_dname)));
+ cur_offset += mbox_dname_len;
+ txt_dname_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &txt_dname);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, txt_dname_len,
+ "TXT RR: %s", format_text(txt_dname, strlen(txt_dname)));
+ }
break;
case T_AFSDB:
case T_RT:
- {
- guint16 subtype = 0;
- const guchar *host_name;
- int host_name_len;
+ {
+ guint16 subtype = 0;
+ const guchar *host_name;
+ int host_name_len;
- if (cinfo != NULL)
- col_append_fstr(cinfo, COL_INFO, " %s", name);
- subtype = tvb_get_ntohs(tvb, cur_offset);
- host_name_len = get_dns_name(tvb, cur_offset + 2, 0, dns_data_offset, &host_name);
+ if (cinfo != NULL) {
+ col_append_fstr(cinfo, COL_INFO, " %s", name);
+ }
+ subtype = tvb_get_ntohs(tvb, cur_offset);
+ host_name_len = get_dns_name(tvb, cur_offset + 2, 0, dns_data_offset, &host_name);
- if (data_len < 1)
- goto bad_rr;
- proto_tree_add_text(rr_tree, tvb, cur_offset, 2, (type == T_AFSDB) ? "Subtype: %u" : "Preference: %u", subtype);
- proto_tree_add_text(rr_tree, tvb, cur_offset + 2, host_name_len, (type == T_AFSDB) ? "Hostname: %s" : "Intermediate-Host: %s",format_text(host_name, strlen(host_name)));
+ if (data_len < 1) {
+ goto bad_rr;
+ }
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 2,
+ (type == T_AFSDB) ? "Subtype: %u" : "Preference: %u", subtype);
+ proto_tree_add_text(rr_tree, tvb, cur_offset + 2, host_name_len,
+ (type == T_AFSDB) ? "Hostname: %s" : "Intermediate-Host: %s",
+ format_text(host_name, strlen(host_name)));
- }
+ }
break;
case T_X25:
- {
- guint8 x25_len;
+ {
+ guint8 x25_len;
- if (cinfo != NULL)
- col_append_fstr(cinfo, COL_INFO, " %s", name);
- if (data_len < 1)
- goto bad_rr;
- x25_len = tvb_get_guint8(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, x25_len + 1, "PSDN-Address: %.*s", x25_len, tvb_get_ephemeral_string(tvb, cur_offset +1, x25_len));
+ if (cinfo != NULL) {
+ col_append_fstr(cinfo, COL_INFO, " %s", name);
}
+ if (data_len < 1) {
+ goto bad_rr;
+ }
+ x25_len = tvb_get_guint8(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, x25_len + 1,
+ "PSDN-Address: %.*s", x25_len,
+ tvb_get_ephemeral_string(tvb, cur_offset +1, x25_len));
+ }
break;
case T_ISDN:
- {
- guint8 isdn_address_len, isdn_sa_len;
- int rr_len = data_len;
-
- if (cinfo != NULL)
- col_append_fstr(cinfo, COL_INFO, " %s", name);
- if (rr_len < 1)
- goto bad_rr;
- isdn_address_len = tvb_get_guint8(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, isdn_address_len + 1, "ISDN Address: %.*s", isdn_address_len, tvb_get_ephemeral_string(tvb, cur_offset +1, isdn_address_len));
- cur_offset += 1 + isdn_address_len;
- rr_len -= 1 + isdn_address_len;
-
- if (rr_len > 1) /* ISDN SA is optional */ {
- isdn_sa_len = tvb_get_guint8(tvb, cur_offset);
- proto_tree_add_text(rr_tree, tvb, cur_offset, isdn_sa_len + 1, "Subaddress: %.*s", isdn_sa_len, tvb_get_ephemeral_string(tvb, cur_offset +1, isdn_sa_len));
- }
+ {
+ guint8 isdn_address_len, isdn_sa_len;
+ int rr_len = data_len;
+
+ if (cinfo != NULL) {
+ col_append_fstr(cinfo, COL_INFO, " %s", name);
+ }
+ if (rr_len < 1) {
+ goto bad_rr;
}
+ isdn_address_len = tvb_get_guint8(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, isdn_address_len + 1,
+ "ISDN Address: %.*s", isdn_address_len,
+ tvb_get_ephemeral_string(tvb, cur_offset +1, isdn_address_len));
+ cur_offset += 1 + isdn_address_len;
+ rr_len -= 1 + isdn_address_len;
+
+ if (rr_len > 1) /* ISDN SA is optional */ {
+ isdn_sa_len = tvb_get_guint8(tvb, cur_offset);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, isdn_sa_len + 1,
+ "Subaddress: %.*s", isdn_sa_len,
+ tvb_get_ephemeral_string(tvb, cur_offset +1, isdn_sa_len));
+ }
+ }
break;
case T_PX:
- {
- int px_map822_len, px_mapx400_len;
- const guchar *px_map822_dnsname, *px_mapx400_dnsname;
-
- if (cinfo != NULL)
- col_append_fstr(cinfo, COL_INFO, " %s", name);
- if (data_len < 1)
- goto bad_rr;
- proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Preference: %u", tvb_get_ntohs(tvb, cur_offset));
- cur_offset += 2;
- px_map822_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &px_map822_dnsname);
- proto_tree_add_text(rr_tree, tvb, cur_offset, px_map822_len, "MAP822: %s", format_text(px_map822_dnsname, strlen(px_map822_dnsname)));
- cur_offset += px_map822_len;
- px_mapx400_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &px_mapx400_dnsname);
- proto_tree_add_text(rr_tree, tvb, cur_offset, px_mapx400_len, "MAPX400: %s", format_text(px_mapx400_dnsname, strlen(px_mapx400_dnsname)) );
- /*cur_offset += px_mapx400_len;*/
+ {
+ int px_map822_len, px_mapx400_len;
+ const guchar *px_map822_dnsname, *px_mapx400_dnsname;
+
+ if (cinfo != NULL) {
+ col_append_fstr(cinfo, COL_INFO, " %s", name);
+ }
+ if (data_len < 1) {
+ goto bad_rr;
}
+ proto_tree_add_text(rr_tree, tvb, cur_offset, 2, "Preference: %u", tvb_get_ntohs(tvb, cur_offset));
+ cur_offset += 2;
+ px_map822_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &px_map822_dnsname);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, px_map822_len,
+ "MAP822: %s", format_text(px_map822_dnsname, strlen(px_map822_dnsname)));
+ cur_offset += px_map822_len;
+ px_mapx400_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &px_mapx400_dnsname);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, px_mapx400_len,
+ "MAPX400: %s", format_text(px_mapx400_dnsname, strlen(px_mapx400_dnsname)) );
+ /*cur_offset += px_mapx400_len;*/
+ }
break;
case T_NSAP:
- {
- if (cinfo != NULL)
- col_append_fstr(cinfo, COL_INFO, " %s", name);
- if (data_len < 1)
- goto bad_rr;
- proto_tree_add_item(rr_tree, hf_dns_nsap_rdata, tvb, cur_offset, data_len, ENC_NA);
+ {
+ if (cinfo != NULL) {
+ col_append_fstr(cinfo, COL_INFO, " %s", name);
}
+ if (data_len < 1) {
+ goto bad_rr;
+ }
+ proto_tree_add_item(rr_tree, hf_dns_nsap_rdata, tvb, cur_offset, data_len, ENC_NA);
+ }
break;
case T_NSAP_PTR:
- {
- int nsap_ptr_owner_len;
- const guchar *nsap_ptr_owner;
+ {
+ int nsap_ptr_owner_len;
+ const guchar *nsap_ptr_owner;
- if (cinfo != NULL)
- col_append_fstr(cinfo, COL_INFO, " %s", name);
- if (data_len < 1)
- goto bad_rr;
- nsap_ptr_owner_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &nsap_ptr_owner);
- proto_tree_add_text(rr_tree, tvb, cur_offset, nsap_ptr_owner_len, "Owner: %s", format_text(nsap_ptr_owner, strlen(nsap_ptr_owner)) );
+ if (cinfo != NULL) {
+ col_append_fstr(cinfo, COL_INFO, " %s", name);
}
+ if (data_len < 1) {
+ goto bad_rr;
+ }
+ nsap_ptr_owner_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &nsap_ptr_owner);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, nsap_ptr_owner_len,
+ "Owner: %s", format_text(nsap_ptr_owner, strlen(nsap_ptr_owner)) );
+ }
break;
case T_MB:
@@ -2950,50 +3100,57 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset,
case T_MD:
case T_MG:
case T_MR:
- {
- int hostname_len;
- const guchar *hostname_str;
+ {
+ int hostname_len;
+ const guchar *hostname_str;
- if (cinfo != NULL)
- col_append_fstr(cinfo, COL_INFO, " %s", name);
- if (data_len < 1)
- goto bad_rr;
- hostname_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &hostname_str);
- proto_tree_add_text(rr_tree, tvb, cur_offset, hostname_len, "Host: %s", format_text(hostname_str, strlen(hostname_str)));
+ if (cinfo != NULL) {
+ col_append_fstr(cinfo, COL_INFO, " %s", name);
+ }
+ if (data_len < 1) {
+ goto bad_rr;
}
+ hostname_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &hostname_str);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, hostname_len, "Host: %s", format_text(hostname_str, strlen(hostname_str)));
+ }
break;
case T_MINFO:
- {
- int rmailbx_len, emailbx_len;
- const guchar *rmailbx_str, *emailbx_str;
-
- if (cinfo != NULL)
- col_append_fstr(cinfo, COL_INFO, " %s", name);
- if (data_len < 1)
- goto bad_rr;
- rmailbx_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &rmailbx_str);
- proto_tree_add_text(rr_tree, tvb, cur_offset, rmailbx_len, "Responsible Mailbox: %s", format_text(rmailbx_str, strlen(rmailbx_str)));
- cur_offset += rmailbx_len;
- emailbx_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &emailbx_str);
- proto_tree_add_text(rr_tree, tvb, cur_offset, emailbx_len, "Error Mailbox: %s", format_text(emailbx_str, strlen(emailbx_str)));
+ {
+ int rmailbx_len, emailbx_len;
+ const guchar *rmailbx_str, *emailbx_str;
+
+ if (cinfo != NULL) {
+ col_append_fstr(cinfo, COL_INFO, " %s", name);
+ }
+ if (data_len < 1) {
+ goto bad_rr;
}
+ rmailbx_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &rmailbx_str);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, rmailbx_len,
+ "Responsible Mailbox: %s", format_text(rmailbx_str, strlen(rmailbx_str)));
+ cur_offset += rmailbx_len;
+ emailbx_len = get_dns_name(tvb, cur_offset, 0, dns_data_offset, &emailbx_str);
+ proto_tree_add_text(rr_tree, tvb, cur_offset, emailbx_len,
+ "Error Mailbox: %s", format_text(emailbx_str, strlen(emailbx_str)));
+ }
break;
case T_NULL:
- {
- if (cinfo != NULL)
- col_append_fstr(cinfo, COL_INFO, " %s", name);
- proto_tree_add_text(rr_tree, tvb, cur_offset, data_len, "Data");
+ {
+ if (cinfo != NULL) {
+ col_append_fstr(cinfo, COL_INFO, " %s", name);
}
+ proto_tree_add_text(rr_tree, tvb, cur_offset, data_len, "Data");
+ }
break;
/* TODO: parse more record types */
- default:
+ default:
proto_tree_add_text(rr_tree, tvb, cur_offset, data_len, "Data");
- break;
+ break;
}
data_offset += data_len;
@@ -3002,8 +3159,8 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset,
bad_rr:
- proto_item_append_text(trr, ", bad RR length %d, too short",
- data_len);
+ proto_item_append_text(trr, ", bad RR length %d, too short",
+ data_len);
data_offset += data_len;
@@ -3016,9 +3173,9 @@ dissect_query_records(tvbuff_t *tvb, int cur_off, int dns_data_offset,
int count, column_info *cinfo, proto_tree *dns_tree, gboolean isupdate,
gboolean is_mdns)
{
- int start_off, add_off;
+ int start_off, add_off;
proto_tree *qatree = NULL;
- proto_item *ti = NULL;
+ proto_item *ti = NULL;
start_off = cur_off;
if (dns_tree) {
@@ -3031,9 +3188,9 @@ dissect_query_records(tvbuff_t *tvb, int cur_off, int dns_data_offset,
is_mdns);
cur_off += add_off;
}
- if (ti)
+ if (ti) {
proto_item_set_len(ti, cur_off - start_off);
-
+ }
return cur_off - start_off;
}
@@ -3042,9 +3199,9 @@ dissect_answer_records(tvbuff_t *tvb, int cur_off, int dns_data_offset,
int count, column_info *cinfo, proto_tree *dns_tree, const char *name,
packet_info *pinfo, gboolean is_mdns)
{
- int start_off, add_off;
+ int start_off, add_off;
proto_tree *qatree = NULL;
- proto_item *ti = NULL;
+ proto_item *ti = NULL;
start_off = cur_off;
if (dns_tree) {
@@ -3053,12 +3210,12 @@ dissect_answer_records(tvbuff_t *tvb, int cur_off, int dns_data_offset,
}
while (count-- > 0) {
add_off = dissect_dns_answer(
- tvb, cur_off, dns_data_offset, cinfo, qatree, pinfo, is_mdns);
+ tvb, cur_off, dns_data_offset, cinfo, qatree, pinfo, is_mdns);
cur_off += add_off;
}
- if (ti)
+ if (ti) {
proto_item_set_len(ti, cur_off - start_off);
-
+ }
return cur_off - start_off;
}
@@ -3066,16 +3223,16 @@ static void
dissect_dns_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
gboolean is_tcp, gboolean is_mdns, gboolean is_llmnr)
{
- int offset = is_tcp ? 2 : 0;
- int dns_data_offset;
- column_info *cinfo;
- proto_tree *dns_tree = NULL, *field_tree;
- proto_item *ti, *tf;
- guint16 id, flags, opcode, rcode, quest, ans, auth, add;
- int cur_off;
- gboolean isupdate;
- conversation_t *conversation;
- dns_conv_info_t *dns_info;
+ int offset = is_tcp ? 2 : 0;
+ int dns_data_offset;
+ column_info *cinfo;
+ proto_tree *dns_tree = NULL, *field_tree;
+ proto_item *ti, *tf;
+ guint16 id, flags, opcode, rcode, quest, ans, auth, add;
+ int cur_off;
+ gboolean isupdate;
+ conversation_t *conversation;
+ dns_conv_info_t *dns_info;
dns_transaction_t *dns_trans;
dns_data_offset = offset;
@@ -3090,7 +3247,7 @@ dissect_dns_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
rcode = (guint16) (flags & F_RCODE);
if (check_col(pinfo->cinfo, COL_INFO)) {
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s%s 0x%04x ",
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s%s 0x%04x ",
val_to_str(opcode, opcode_vals, "Unknown operation (%u)"),
(flags&F_RESPONSE)?" response":"", id);
@@ -3108,11 +3265,11 @@ dissect_dns_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
is more expensive than a check that a pointer isn't NULL). */
cinfo = NULL;
}
- if (opcode == OPCODE_UPDATE)
+ if (opcode == OPCODE_UPDATE) {
isupdate = TRUE;
- else
+ } else {
isupdate = FALSE;
-
+ }
if (tree) {
if (is_llmnr) {
ti = proto_tree_add_protocol_format(tree, proto_dns, tvb, 0, -1,
@@ -3142,8 +3299,8 @@ dissect_dns_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
dns_info->pdus=se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "dns_pdus");
conversation_add_proto_data(conversation, proto_dns, dns_info);
}
- if(!pinfo->fd->flags.visited){
- if(!(flags&F_RESPONSE)){
+ if (!pinfo->fd->flags.visited) {
+ if (!(flags&F_RESPONSE)) {
/* This is a request */
dns_trans=se_new(dns_transaction_t);
dns_trans->req_frame=pinfo->fd->num;
@@ -3152,14 +3309,14 @@ dissect_dns_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
se_tree_insert32(dns_info->pdus, id, (void *)dns_trans);
} else {
dns_trans=(dns_transaction_t *)se_tree_lookup32(dns_info->pdus, id);
- if(dns_trans){
+ if (dns_trans) {
dns_trans->rep_frame=pinfo->fd->num;
}
}
} else {
dns_trans=(dns_transaction_t *)se_tree_lookup32(dns_info->pdus, id);
}
- if(!dns_trans){
+ if (!dns_trans) {
/* create a "fake" pana_trans structure */
dns_trans=ep_new(dns_transaction_t);
dns_trans->req_frame=0;
@@ -3168,9 +3325,9 @@ dissect_dns_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
}
/* print state tracking in the tree */
- if(!(flags&F_RESPONSE)){
+ if (!(flags&F_RESPONSE)) {
/* This is a request */
- if(dns_trans->rep_frame){
+ if (dns_trans->rep_frame) {
proto_item *it;
it=proto_tree_add_uint(dns_tree, hf_dns_response_in, tvb, 0, 0, dns_trans->rep_frame);
@@ -3178,7 +3335,7 @@ dissect_dns_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
}
} else {
/* This is a reply */
- if(dns_trans->req_frame){
+ if (dns_trans->req_frame) {
proto_item *it;
nstime_t ns;
@@ -3197,61 +3354,61 @@ dissect_dns_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
}
proto_tree_add_uint(dns_tree, hf_dns_transaction_id, tvb,
- offset + DNS_ID, 2, id);
+ offset + DNS_ID, 2, id);
tf = proto_tree_add_item(dns_tree, hf_dns_flags, tvb,
offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
proto_item_append_text(tf, " %s",
- val_to_str(opcode, opcode_vals, "Unknown operation"));
+ val_to_str_const(opcode, opcode_vals, "Unknown operation"));
if (flags & F_RESPONSE) {
proto_item_append_text(tf, " response, %s",
- val_to_str(rcode, rcode_vals, "Unknown error"));
+ val_to_str_const(rcode, rcode_vals, "Unknown error"));
}
field_tree = proto_item_add_subtree(tf, ett_dns_flags);
proto_tree_add_item(field_tree, hf_dns_flags_response,
- tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
+ tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(field_tree, hf_dns_flags_opcode,
- tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
+ tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
if (is_llmnr) {
if (flags & F_RESPONSE) {
proto_tree_add_item(field_tree, hf_dns_flags_conflict_response,
- tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
+ tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
} else {
proto_tree_add_item(field_tree, hf_dns_flags_conflict_query,
- tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
+ tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
}
proto_tree_add_item(field_tree, hf_dns_flags_truncated,
- tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
+ tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(field_tree, hf_dns_flags_tentative,
- tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
+ tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
if (flags & F_RESPONSE) {
proto_tree_add_item(field_tree, hf_dns_flags_rcode,
- tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
+ tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
}
} else {
if (flags & F_RESPONSE) {
proto_tree_add_item(field_tree, hf_dns_flags_authoritative,
- tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
+ tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
}
proto_tree_add_item(field_tree, hf_dns_flags_truncated,
- tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
+ tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(field_tree, hf_dns_flags_recdesired,
- tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
+ tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
if (flags & F_RESPONSE) {
proto_tree_add_item(field_tree, hf_dns_flags_recavail,
- tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
+ tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
}
proto_tree_add_item(field_tree, hf_dns_flags_z,
- tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
+ tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
if (flags & F_RESPONSE) {
proto_tree_add_item(field_tree, hf_dns_flags_authenticated,
- tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
+ tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
}
proto_tree_add_item(field_tree, hf_dns_flags_checkdisable,
tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
if (flags & F_RESPONSE) {
proto_tree_add_item(field_tree, hf_dns_flags_rcode,
- tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
+ tvb, offset + DNS_FLAGS, 2, ENC_BIG_ENDIAN);
}
}
@@ -3259,36 +3416,36 @@ dissect_dns_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
if (tree) {
if (isupdate) {
proto_tree_add_uint(dns_tree, hf_dns_count_zones, tvb,
- offset + DNS_QUEST, 2, quest);
+ offset + DNS_QUEST, 2, quest);
} else {
proto_tree_add_uint(dns_tree, hf_dns_count_questions, tvb,
- offset + DNS_QUEST, 2, quest);
+ offset + DNS_QUEST, 2, quest);
}
}
ans = tvb_get_ntohs(tvb, offset + DNS_ANS);
if (tree) {
if (isupdate) {
proto_tree_add_uint(dns_tree, hf_dns_count_prerequisites, tvb,
- offset + DNS_ANS, 2, ans);
+ offset + DNS_ANS, 2, ans);
} else {
proto_tree_add_uint(dns_tree, hf_dns_count_answers, tvb,
- offset + DNS_ANS, 2, ans);
+ offset + DNS_ANS, 2, ans);
}
}
auth = tvb_get_ntohs(tvb, offset + DNS_AUTH);
if (tree) {
if (isupdate) {
proto_tree_add_uint(dns_tree, hf_dns_count_updates, tvb,
- offset + DNS_AUTH, 2, auth);
+ offset + DNS_AUTH, 2, auth);
} else {
proto_tree_add_uint(dns_tree, hf_dns_count_auth_rr, tvb,
- offset + DNS_AUTH, 2, auth);
+ offset + DNS_AUTH, 2, auth);
}
}
add = tvb_get_ntohs(tvb, offset + DNS_ADD);
if (tree) {
proto_tree_add_uint(dns_tree, hf_dns_count_add_rr, tvb,
- offset + DNS_ADD, 2, add);
+ offset + DNS_ADD, 2, add);
}
cur_off = offset + DNS_HDRLEN;
@@ -3297,34 +3454,34 @@ dissect_dns_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
/* If this is a response, don't add information about the queries
to the summary, just add information about the answers. */
cur_off += dissect_query_records(tvb, cur_off, dns_data_offset, quest,
- (!(flags & F_RESPONSE) ? cinfo : NULL),
- dns_tree, isupdate, is_mdns);
+ (!(flags & F_RESPONSE) ? cinfo : NULL),
+ dns_tree, isupdate, is_mdns);
}
if (ans > 0) {
/* If this is a request, don't add information about the answers
to the summary, just add information about the queries. */
cur_off += dissect_answer_records(tvb, cur_off, dns_data_offset, ans,
- ((flags & F_RESPONSE) ? cinfo : NULL),
- dns_tree, (isupdate ?
- "Prerequisites" : "Answers"),
- pinfo, is_mdns);
+ ((flags & F_RESPONSE) ? cinfo : NULL),
+ dns_tree, (isupdate ?
+ "Prerequisites" : "Answers"),
+ pinfo, is_mdns);
}
/* Don't add information about the authoritative name servers, or the
additional records, to the summary. */
if (auth > 0) {
cur_off += dissect_answer_records(tvb, cur_off, dns_data_offset, auth,
- NULL, dns_tree,
- (isupdate ? "Updates" :
- "Authoritative nameservers"),
- pinfo, is_mdns);
+ NULL, dns_tree,
+ (isupdate ? "Updates" :
+ "Authoritative nameservers"),
+ pinfo, is_mdns);
}
if (add > 0) {
dissect_answer_records(tvb, cur_off, dns_data_offset, add,
- NULL, dns_tree, "Additional records",
- pinfo, is_mdns);
+ NULL, dns_tree, "Additional records",
+ pinfo, is_mdns);
}
}
@@ -3388,7 +3545,7 @@ static void
dissect_dns_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
tcp_dissect_pdus(tvb, pinfo, tree, dns_desegment, 2, get_dns_pdu_len,
- dissect_dns_tcp_pdu);
+ dissect_dns_tcp_pdu);
}
void
@@ -3396,277 +3553,345 @@ proto_register_dns(void)
{
static hf_register_info hf[] = {
{ &hf_dns_length,
- { "Length", "dns.length",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Length of DNS-over-TCP request or response", HFILL }},
+ { "Length", "dns.length",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Length of DNS-over-TCP request or response", HFILL }},
+
{ &hf_dns_flags,
- { "Flags", "dns.flags",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags", "dns.flags",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
{ &hf_dns_flags_response,
- { "Response", "dns.flags.response",
- FT_BOOLEAN, 16, TFS(&tfs_flags_response), F_RESPONSE,
- "Is the message a response?", HFILL }},
+ { "Response", "dns.flags.response",
+ FT_BOOLEAN, 16, TFS(&tfs_flags_response), F_RESPONSE,
+ "Is the message a response?", HFILL }},
+
{ &hf_dns_flags_opcode,
- { "Opcode", "dns.flags.opcode",
- FT_UINT16, BASE_DEC, VALS(opcode_vals), F_OPCODE,
- "Operation code", HFILL }},
+ { "Opcode", "dns.flags.opcode",
+ FT_UINT16, BASE_DEC, VALS(opcode_vals), F_OPCODE,
+ "Operation code", HFILL }},
+
{ &hf_dns_flags_authoritative,
- { "Authoritative", "dns.flags.authoritative",
- FT_BOOLEAN, 16, TFS(&tfs_flags_authoritative), F_AUTHORITATIVE,
- "Is the server is an authority for the domain?", HFILL }},
+ { "Authoritative", "dns.flags.authoritative",
+ FT_BOOLEAN, 16, TFS(&tfs_flags_authoritative), F_AUTHORITATIVE,
+ "Is the server is an authority for the domain?", HFILL }},
+
{ &hf_dns_flags_conflict_query,
- { "Conflict", "dns.flags.conflict",
- FT_BOOLEAN, 16, TFS(&tfs_flags_conflict_query), F_CONFLICT,
- "Did we receive multiple responses to a query?", HFILL }},
+ { "Conflict", "dns.flags.conflict",
+ FT_BOOLEAN, 16, TFS(&tfs_flags_conflict_query), F_CONFLICT,
+ "Did we receive multiple responses to a query?", HFILL }},
+
{ &hf_dns_flags_conflict_response,
- { "Conflict", "dns.flags.conflict",
- FT_BOOLEAN, 16, TFS(&tfs_flags_conflict_response), F_CONFLICT,
- "Is the name considered unique?", HFILL }},
+ { "Conflict", "dns.flags.conflict",
+ FT_BOOLEAN, 16, TFS(&tfs_flags_conflict_response), F_CONFLICT,
+ "Is the name considered unique?", HFILL }},
+
{ &hf_dns_flags_truncated,
- { "Truncated", "dns.flags.truncated",
- FT_BOOLEAN, 16, TFS(&tfs_flags_truncated), F_TRUNCATED,
- "Is the message truncated?", HFILL }},
+ { "Truncated", "dns.flags.truncated",
+ FT_BOOLEAN, 16, TFS(&tfs_flags_truncated), F_TRUNCATED,
+ "Is the message truncated?", HFILL }},
+
{ &hf_dns_flags_recdesired,
- { "Recursion desired", "dns.flags.recdesired",
- FT_BOOLEAN, 16, TFS(&tfs_flags_recdesired), F_RECDESIRED,
- "Do query recursively?", HFILL }},
+ { "Recursion desired", "dns.flags.recdesired",
+ FT_BOOLEAN, 16, TFS(&tfs_flags_recdesired), F_RECDESIRED,
+ "Do query recursively?", HFILL }},
+
{ &hf_dns_flags_tentative,
- { "Tentative", "dns.flags.tentative",
- FT_BOOLEAN, 16, TFS(&tfs_flags_tentative), F_TENTATIVE,
- "Is the responder authoritative for the name, but not yet verified the uniqueness?", HFILL }},
+ { "Tentative", "dns.flags.tentative",
+ FT_BOOLEAN, 16, TFS(&tfs_flags_tentative), F_TENTATIVE,
+ "Is the responder authoritative for the name, but not yet verified the uniqueness?", HFILL }},
+
{ &hf_dns_flags_recavail,
- { "Recursion available", "dns.flags.recavail",
- FT_BOOLEAN, 16, TFS(&tfs_flags_recavail), F_RECAVAIL,
- "Can the server do recursive queries?", HFILL }},
+ { "Recursion available", "dns.flags.recavail",
+ FT_BOOLEAN, 16, TFS(&tfs_flags_recavail), F_RECAVAIL,
+ "Can the server do recursive queries?", HFILL }},
+
{ &hf_dns_flags_z,
{ "Z", "dns.flags.z",
- FT_BOOLEAN, 16, TFS(&tfs_flags_z), F_Z,
- "Z flag", HFILL }},
+ FT_BOOLEAN, 16, TFS(&tfs_flags_z), F_Z,
+ "Z flag", HFILL }},
+
{ &hf_dns_flags_authenticated,
- { "Answer authenticated", "dns.flags.authenticated",
- FT_BOOLEAN, 16, TFS(&tfs_flags_authenticated), F_AUTHENTIC,
- "Was the reply data authenticated by the server?", HFILL }},
+ { "Answer authenticated", "dns.flags.authenticated",
+ FT_BOOLEAN, 16, TFS(&tfs_flags_authenticated), F_AUTHENTIC,
+ "Was the reply data authenticated by the server?", HFILL }},
+
{ &hf_dns_flags_checkdisable,
- { "Non-authenticated data", "dns.flags.checkdisable",
- FT_BOOLEAN, 16, TFS(&tfs_flags_checkdisable), F_CHECKDISABLE,
- "Is non-authenticated data acceptable?", HFILL }},
+ { "Non-authenticated data", "dns.flags.checkdisable",
+ FT_BOOLEAN, 16, TFS(&tfs_flags_checkdisable), F_CHECKDISABLE,
+ "Is non-authenticated data acceptable?", HFILL }},
+
{ &hf_dns_flags_rcode,
- { "Reply code", "dns.flags.rcode",
- FT_UINT16, BASE_DEC, VALS(rcode_vals), F_RCODE,
- NULL, HFILL }},
+ { "Reply code", "dns.flags.rcode",
+ FT_UINT16, BASE_DEC, VALS(rcode_vals), F_RCODE,
+ NULL, HFILL }},
+
{ &hf_dns_transaction_id,
- { "Transaction ID", "dns.id",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- "Identification of transaction", HFILL }},
+ { "Transaction ID", "dns.id",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ "Identification of transaction", HFILL }},
+
{ &hf_dns_qry_type,
- { "Type", "dns.qry.type",
- FT_UINT16, BASE_HEX, VALS(dns_types), 0x0,
- "Query Type", HFILL }},
+ { "Type", "dns.qry.type",
+ FT_UINT16, BASE_HEX, VALS(dns_types), 0x0,
+ "Query Type", HFILL }},
+
{ &hf_dns_qry_class,
- { "Class", "dns.qry.class",
- FT_UINT16, BASE_HEX, VALS(dns_classes), 0x0,
- "Query Class", HFILL }},
+ { "Class", "dns.qry.class",
+ FT_UINT16, BASE_HEX, VALS(dns_classes), 0x0,
+ "Query Class", HFILL }},
+
{ &hf_dns_qry_class_mdns,
- { "Class", "dns.qry.class",
- FT_UINT16, BASE_HEX, VALS(dns_classes), 0x7FFF,
- "Query Class", HFILL }},
+ { "Class", "dns.qry.class",
+ FT_UINT16, BASE_HEX, VALS(dns_classes), 0x7FFF,
+ "Query Class", HFILL }},
+
{ &hf_dns_qry_qu,
- { "\"QU\" question", "dns.qry.qu",
- FT_BOOLEAN, 16, NULL, C_QU,
- "QU flag", HFILL }},
+ { "\"QU\" question", "dns.qry.qu",
+ FT_BOOLEAN, 16, NULL, C_QU,
+ "QU flag", HFILL }},
+
{ &hf_dns_qry_name,
- { "Name", "dns.qry.name",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "Query Name", HFILL }},
+ { "Name", "dns.qry.name",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "Query Name", HFILL }},
+
{ &hf_dns_rr_type,
- { "Type", "dns.resp.type",
- FT_UINT16, BASE_HEX, VALS(dns_types), 0x0,
- "Response Type", HFILL }},
+ { "Type", "dns.resp.type",
+ FT_UINT16, BASE_HEX, VALS(dns_types), 0x0,
+ "Response Type", HFILL }},
+
{ &hf_dns_rr_class,
- { "Class", "dns.resp.class",
- FT_UINT16, BASE_HEX, VALS(dns_classes), 0x0,
- "Response Class", HFILL }},
+ { "Class", "dns.resp.class",
+ FT_UINT16, BASE_HEX, VALS(dns_classes), 0x0,
+ "Response Class", HFILL }},
+
{ &hf_dns_rr_class_mdns,
- { "Class", "dns.resp.class",
- FT_UINT16, BASE_HEX, VALS(dns_classes), 0x7FFF,
- "Response Class", HFILL }},
+ { "Class", "dns.resp.class",
+ FT_UINT16, BASE_HEX, VALS(dns_classes), 0x7FFF,
+ "Response Class", HFILL }},
+
{ &hf_dns_rr_cache_flush,
- { "Cache flush", "dns.resp.cache_flush",
- FT_BOOLEAN, 16, NULL, C_FLUSH,
- "Cache flush flag", HFILL }},
+ { "Cache flush", "dns.resp.cache_flush",
+ FT_BOOLEAN, 16, NULL, C_FLUSH,
+ "Cache flush flag", HFILL }},
+
{ &hf_dns_srv_service,
{ "Service", "dns.srv.service",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "Desired service", HFILL }},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "Desired service", HFILL }},
+
{ &hf_dns_srv_proto,
{ "Protocol", "dns.srv.proto",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "Desired protocol", HFILL }},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "Desired protocol", HFILL }},
+
{ &hf_dns_srv_name,
{ "Name", "dns.srv.name",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "Domain this resource record refers to", HFILL }},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "Domain this resource record refers to", HFILL }},
+
{ &hf_dns_rr_name,
- { "Name", "dns.resp.name",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "Response Name", HFILL }},
+ { "Name", "dns.resp.name",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "Response Name", HFILL }},
+
{ &hf_dns_rr_ttl,
{ "Time to live", "dns.resp.ttl",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Response TTL", HFILL }},
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Response TTL", HFILL }},
+
{ &hf_dns_rr_len,
- { "Data length", "dns.resp.len",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Response Length", HFILL }},
+ { "Data length", "dns.resp.len",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Response Length", HFILL }},
+
{ &hf_dns_rr_addr,
- { "Addr", "dns.resp.addr",
- FT_IPv4, BASE_NONE, NULL, 0x0,
- "Response Address", HFILL }},
+ { "Addr", "dns.resp.addr",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ "Response Address", HFILL }},
+
{ &hf_dns_rr_primaryname,
- { "Primaryname", "dns.resp.primaryname",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "Response Primary Name", HFILL }},
+ { "Primaryname", "dns.resp.primaryname",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "Response Primary Name", HFILL }},
+
{ &hf_dns_rr_ns,
- { "Name Server", "dns.resp.ns",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Name Server", "dns.resp.ns",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
{ &hf_dns_count_questions,
- { "Questions", "dns.count.queries",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Number of queries in packet", HFILL }},
+ { "Questions", "dns.count.queries",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Number of queries in packet", HFILL }},
+
{ &hf_dns_count_zones,
- { "Zones", "dns.count.zones",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Number of zones in packet", HFILL }},
+ { "Zones", "dns.count.zones",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Number of zones in packet", HFILL }},
+
{ &hf_dns_count_answers,
- { "Answer RRs", "dns.count.answers",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Number of answers in packet", HFILL }},
+ { "Answer RRs", "dns.count.answers",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Number of answers in packet", HFILL }},
+
{ &hf_dns_count_prerequisites,
- { "Prerequisites", "dns.count.prerequisites",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Number of prerequisites in packet", HFILL }},
+ { "Prerequisites", "dns.count.prerequisites",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Number of prerequisites in packet", HFILL }},
+
{ &hf_dns_count_auth_rr,
- { "Authority RRs", "dns.count.auth_rr",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Number of authoritative records in packet", HFILL }},
+ { "Authority RRs", "dns.count.auth_rr",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Number of authoritative records in packet", HFILL }},
+
{ &hf_dns_count_updates,
- { "Updates", "dns.count.updates",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Number of updates records in packet", HFILL }},
+ { "Updates", "dns.count.updates",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Number of updates records in packet", HFILL }},
+
{ &hf_dns_nsec3_algo,
{ "Hash algorithm", "dns.nsec3.algo",
FT_UINT8, BASE_DEC, VALS(hash_algorithms), 0,
NULL, HFILL }},
+
{ &hf_dns_nsec3_flags,
{ "NSEC3 flags", "dns.nsec3.flags",
FT_UINT8, BASE_DEC, NULL, 0,
NULL, HFILL }},
+
{ &hf_dns_nsec3_flag_optout,
{ "NSEC3 Opt-out flag", "dns.nsec3.flags.opt_out",
FT_BOOLEAN, 8, TFS(&tfs_flags_nsec3_optout), NSEC3_FLAG_OPTOUT,
NULL, HFILL }},
+
{ &hf_dns_nsec3_iterations,
{ "NSEC3 iterations", "dns.nsec3.iterations",
FT_UINT16, BASE_DEC, NULL, 0,
"Number of hashing iterations", HFILL }},
+
{ &hf_dns_nsec3_salt_length,
{ "Salt length", "dns.nsec3.salt_length",
FT_UINT8, BASE_DEC, NULL, 0,
"Length of salt in bytes", HFILL }},
+
{ &hf_dns_nsec3_salt_value,
{ "Salt value", "dns.nsec3.salt_value",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
+
{ &hf_dns_nsec3_hash_length,
{ "Hash length", "dns.nsec3.hash_length",
FT_UINT8, BASE_DEC, NULL, 0,
"Length in bytes of next hashed owner", HFILL }},
+
{ &hf_dns_nsec3_hash_value,
{ "Next hashed owner", "dns.nsec3.hash_value",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
+
{ &hf_dns_tsig_original_id,
- { "Original Id", "dns.tsig.original_id",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Original Id", "dns.tsig.original_id",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
{ &hf_dns_tsig_error,
- { "Error", "dns.tsig.error",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Expanded RCODE for TSIG", HFILL }},
+ { "Error", "dns.tsig.error",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Expanded RCODE for TSIG", HFILL }},
+
{ &hf_dns_tsig_fudge,
- { "Fudge", "dns.tsig.fudge",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Number of bytes for the MAC", HFILL }},
+ { "Fudge", "dns.tsig.fudge",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Number of bytes for the MAC", HFILL }},
+
{ &hf_dns_tsig_mac_size,
- { "MAC Size", "dns.tsig.mac_size",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Number of bytes for the MAC", HFILL }},
+ { "MAC Size", "dns.tsig.mac_size",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Number of bytes for the MAC", HFILL }},
+
{ &hf_dns_tsig_other_len,
- { "Other Len", "dns.tsig.other_len",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Number of bytes for Other Data", HFILL }},
+ { "Other Len", "dns.tsig.other_len",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Number of bytes for Other Data", HFILL }},
+
{ &hf_dns_tsig_mac,
- { "MAC", "dns.tsig.mac",
- FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "MAC", "dns.tsig.mac",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
{ &hf_dns_tsig_other_data,
- { "Other Data", "dns.tsig.other_data",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Other Data", "dns.tsig.other_data",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
{ &hf_dns_tsig_algorithm_name,
- { "Algorithm Name", "dns.tsig.algorithm_name",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "Name of algorithm used for the MAC", HFILL }},
+ { "Algorithm Name", "dns.tsig.algorithm_name",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "Name of algorithm used for the MAC", HFILL }},
+
{ &hf_dns_response_in,
{ "Response In", "dns.response_in",
FT_FRAMENUM, BASE_NONE, NULL, 0x0,
"The response to this DNS query is in this frame", HFILL }},
+
{ &hf_dns_response_to,
{ "Request In", "dns.response_to",
FT_FRAMENUM, BASE_NONE, NULL, 0x0,
"This is a response to the DNS query in this frame", HFILL }},
+
{ &hf_dns_time,
{ "Time", "dns.time",
FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
"The time between the Query and the Response", HFILL }},
+
{ &hf_dns_count_add_rr,
- { "Additional RRs", "dns.count.add_rr",
+ { "Additional RRs", "dns.count.add_rr",
FT_UINT16, BASE_DEC, NULL, 0x0,
"Number of additional records in packet", HFILL }},
+
{ &hf_dns_sshfp_fingerprint,
- { "Fingerprint", "dns.sshfp.fingerprint",
+ { "Fingerprint", "dns.sshfp.fingerprint",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
+
{ &hf_dns_hip_hit,
- { "Host Identity Tag", "dns.hip.hit",
+ { "Host Identity Tag", "dns.hip.hit",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
+
{ &hf_dns_hip_pk,
{ "HIP Public Key", "dns.hip.pk",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
+
{ &hf_dns_dhcid_rdata,
{ "DHCID Data", "dns.dhcid.rdata",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
+
{ &hf_dns_apl_coded_prefix,
{ "Prefix Length", "dns.apl.coded.prefix",
FT_UINT8, BASE_DEC, NULL, 0,
NULL, HFILL }},
+
{ &hf_dns_apl_negation,
{ "Negation Flag", "dns.apl.negation",
FT_BOOLEAN, 8, TFS(&tfs_dns_apl_negation), DNS_APL_NEGATION,
NULL, HFILL }},
+
{ &hf_dns_apl_afdlength,
{ "Address Length, in octets","dns.apl.afdlength",
FT_UINT8, BASE_DEC, NULL, DNS_APL_AFDLENGTH,
NULL, HFILL }},
+
{ &hf_dns_nsap_rdata,
{ "NSAP Data", "dns.nsap.rdata",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }}
+
};
static gint *ett[] = {
&ett_dns,
diff --git a/epan/dissectors/packet-dpnss-link.c b/epan/dissectors/packet-dpnss-link.c
index afcd3a1037..a556403eac 100644
--- a/epan/dissectors/packet-dpnss-link.c
+++ b/epan/dissectors/packet-dpnss-link.c
@@ -50,33 +50,33 @@ static int hf_dpnss_link_address2_extension = -1;
static int hf_dpnss_link_control_frameType = -1;
static const value_string dpnss_link_framegroup_vals[] = {
- { 0x11, "Information Frame" },
- { 0x03, "Control Frame" },
- { 0, NULL }
+ { 0x11, "Information Frame" },
+ { 0x03, "Control Frame" },
+ { 0, NULL }
};
static const value_string dpnss_link_crbit_vals[] = {
- { 0x0, "Command/Response Bit Cleared" },
- { 0x1, "Command/Response Bit Set" },
- { 0, NULL }
+ { 0x0, "Command/Response Bit Cleared" },
+ { 0x1, "Command/Response Bit Set" },
+ { 0, NULL }
};
static const value_string dpnss_link_extend_vals[] = {
- { 0x0, "Extended to next octet" },
- { 0x1, "Final octet" },
- { 0, NULL }
+ { 0x0, "Extended to next octet" },
+ { 0x1, "Final octet" },
+ { 0, NULL }
};
static const value_string dpnss_link_reserved_vals[] = {
- { 0x0, "Reserved" },
- { 0x1, "Reserved" },
- { 0, NULL }
+ { 0x0, "Reserved" },
+ { 0x1, "Reserved" },
+ { 0, NULL }
};
static const value_string dpnss_link_dlcId_vals[] = {
- { 0x0, "Real Channel" },
- { 0x1, "Virtual Channel" },
- { 0, NULL }
+ { 0x0, "Real Channel" },
+ { 0x1, "Virtual Channel" },
+ { 0, NULL }
};
#define FRAME_TYPE_UI_EVEN 0x03
@@ -85,11 +85,11 @@ static const value_string dpnss_link_dlcId_vals[] = {
#define FRAME_TYPE_UA 0x63
static const value_string dpnss_link_frameType_vals[] = {
- { FRAME_TYPE_UI_EVEN, "UI (even)" },
- { FRAME_TYPE_UI_ODD, "UI (odd)" },
- { FRAME_TYPE_SABMR, "SABMR" },
- { FRAME_TYPE_UA, "UA" },
- { 0, NULL }
+ { FRAME_TYPE_UI_EVEN, "UI (even)" },
+ { FRAME_TYPE_UI_ODD, "UI (odd)" },
+ { FRAME_TYPE_SABMR, "SABMR" },
+ { FRAME_TYPE_UA, "UA" },
+ { 0, NULL }
};
static int ett_dpnss_link = -1;
@@ -100,10 +100,10 @@ dissect_dpnss_link(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_item *item;
proto_tree *dpnss_link_tree;
- guint8 octet;
- tvbuff_t *protocol_data_tvb;
- guint16 protocol_data_length;
- gboolean uton;
+ guint8 octet;
+ tvbuff_t *protocol_data_tvb;
+ guint16 protocol_data_length;
+ gboolean uton;
uton = pinfo->pseudo_header->l1event.uton;
/* Make entries in src and dst column */
@@ -111,7 +111,7 @@ dissect_dpnss_link(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
col_set_str(pinfo->cinfo, COL_DEF_SRC, uton?"TE":"NT");
col_set_str(pinfo->cinfo, COL_DEF_DST, uton?"NT":"TE");
-/* Make entries in Protocol column and Info column on summary display */
+ /* Make entries in Protocol column and Info column on summary display */
col_set_str(pinfo->cinfo, COL_PROTOCOL, "DPNSS");
item = proto_tree_add_item(tree, proto_dpnss_link, tvb, 0, -1, ENC_NA);
@@ -156,67 +156,63 @@ dissect_dpnss_link(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Register the protocol with Wireshark */
-/* If this dissector uses sub-dissector registration add a registration routine.
- This format is required because a script is used to find these routines and
- create the code that calls these routines.
-*/
-
void
proto_register_dpnss_link(void)
{
- static hf_register_info hf[] = {
- { &hf_dpnss_link_address_framegroup,
- { "Frame Group", "dpnss_link.framegroup",
- FT_UINT8, BASE_DEC, VALS(dpnss_link_framegroup_vals), 0xfc,
- NULL, HFILL }
- },
- { &hf_dpnss_link_address_crbit,
- { "C/R Bit", "dpnss_link.crbit",
- FT_UINT8, BASE_DEC, VALS(dpnss_link_crbit_vals), 0x02,
- NULL, HFILL }
- },
- { &hf_dpnss_link_address_extension,
- { "Extension", "dpnss_link.extension",
- FT_UINT8, BASE_DEC, VALS(dpnss_link_extend_vals), 0x01,
- NULL, HFILL }
- },
- { &hf_dpnss_link_address2_reserved,
- { "Reserved", "dpnss_link.reserved",
- FT_UINT8, BASE_DEC, VALS(dpnss_link_reserved_vals), 0x80,
- NULL, HFILL }
- },
- { &hf_dpnss_link_address2_dlcId,
- { "DLC ID", "dpnss_link.dlcId",
- FT_UINT8, BASE_DEC, VALS(dpnss_link_dlcId_vals), 0x40,
- NULL, HFILL }
- },
- { &hf_dpnss_link_address2_dlcIdNr,
- { "DLC ID Number", "dpnss_link.dlcIdNr",
- FT_UINT8, BASE_DEC, NULL, 0x3e,
- NULL, HFILL }
- },
- { &hf_dpnss_link_address2_extension,
- { "Extension", "dpnss_link.extension2",
- FT_UINT8, BASE_DEC, VALS(dpnss_link_extend_vals), 0x01,
- NULL, HFILL }
- },
- { &hf_dpnss_link_control_frameType,
- { "Frame Type", "dpnss_link.frameType",
- FT_UINT8, BASE_DEC, VALS(dpnss_link_frameType_vals), 0xff,
- NULL, HFILL }
- }
- };
-
- static gint *ett[] = { &ett_dpnss_link };
-
-
- /* Register the protocol name and description */
- proto_dpnss_link = proto_register_protocol("Digital Private Signalling System No 1 Link Layer", "DPNSS Link", "dpnss_link");
- register_dissector("dpnss_link", dissect_dpnss_link, proto_dpnss_link);
-
- /* Required function calls to register the header fields and subtrees used */
- proto_register_field_array(proto_dpnss_link, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ static hf_register_info hf[] = {
+ { &hf_dpnss_link_address_framegroup,
+ { "Frame Group", "dpnss_link.framegroup",
+ FT_UINT8, BASE_DEC, VALS(dpnss_link_framegroup_vals), 0xfc,
+ NULL, HFILL }
+ },
+ { &hf_dpnss_link_address_crbit,
+ { "C/R Bit", "dpnss_link.crbit",
+ FT_UINT8, BASE_DEC, VALS(dpnss_link_crbit_vals), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_dpnss_link_address_extension,
+ { "Extension", "dpnss_link.extension",
+ FT_UINT8, BASE_DEC, VALS(dpnss_link_extend_vals), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_dpnss_link_address2_reserved,
+ { "Reserved", "dpnss_link.reserved",
+ FT_UINT8, BASE_DEC, VALS(dpnss_link_reserved_vals), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_dpnss_link_address2_dlcId,
+ { "DLC ID", "dpnss_link.dlcId",
+ FT_UINT8, BASE_DEC, VALS(dpnss_link_dlcId_vals), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_dpnss_link_address2_dlcIdNr,
+ { "DLC ID Number", "dpnss_link.dlcIdNr",
+ FT_UINT8, BASE_DEC, NULL, 0x3e,
+ NULL, HFILL }
+ },
+ { &hf_dpnss_link_address2_extension,
+ { "Extension", "dpnss_link.extension2",
+ FT_UINT8, BASE_DEC, VALS(dpnss_link_extend_vals), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_dpnss_link_control_frameType,
+ { "Frame Type", "dpnss_link.frameType",
+ FT_UINT8, BASE_DEC, VALS(dpnss_link_frameType_vals), 0xff,
+ NULL, HFILL }
+ }
+ };
+
+ static gint *ett[] = { &ett_dpnss_link };
+
+
+ /* Register the protocol name and description */
+ proto_dpnss_link = proto_register_protocol("Digital Private Signalling System No 1 Link Layer",
+ "DPNSS Link", "dpnss_link");
+ register_dissector("dpnss_link", dissect_dpnss_link, proto_dpnss_link);
+
+ /* Required function calls to register the header fields and subtrees used */
+ proto_register_field_array(proto_dpnss_link, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
void
diff --git a/epan/dissectors/packet-dpnss.c b/epan/dissectors/packet-dpnss.c
index 64697791a1..b43418c12b 100644
--- a/epan/dissectors/packet-dpnss.c
+++ b/epan/dissectors/packet-dpnss.c
@@ -1,4 +1,4 @@
-/* packet-dpnss_dass2.c
+/* packet-dpnss.c
* Routines for DPNSS/DASS2 dissection
* Copyright 2007, Anders Broman <anders.broman[at]ericsson.com>
*
@@ -40,49 +40,49 @@
#include <epan/packet.h>
/* Initialize the protocol and registered fields */
-static int proto_dpnss = -1;
-static int hf_dpnss_msg_grp_id = -1;
-static int hf_dpnss_cc_msg_type = -1;
-static int hf_dpnss_e2e_msg_type = -1;
-static int hf_dpnss_LbL_msg_type = -1;
-static int hf_dpnss_ext_bit = -1;
-static int hf_dpnss_ext_bit_notall = -1;
-static int hf_dpnss_sic_type = -1;
-static int hf_dpnss_sic_details_for_speech = -1;
-static int hf_dpnss_sic_details_for_data1 = -1;
-static int hf_dpnss_sic_details_for_data2 = -1;
-static int hf_dpnss_dest_addr = -1;
-static int hf_dpnss_sic_oct2_data_type = -1;
-static int hf_dpnss_sic_oct2_duplex = -1;
+static int proto_dpnss = -1;
+static int hf_dpnss_msg_grp_id = -1;
+static int hf_dpnss_cc_msg_type = -1;
+static int hf_dpnss_e2e_msg_type = -1;
+static int hf_dpnss_LbL_msg_type = -1;
+static int hf_dpnss_ext_bit = -1;
+static int hf_dpnss_ext_bit_notall = -1;
+static int hf_dpnss_sic_type = -1;
+static int hf_dpnss_sic_details_for_speech = -1;
+static int hf_dpnss_sic_details_for_data1 = -1;
+static int hf_dpnss_sic_details_for_data2 = -1;
+static int hf_dpnss_dest_addr = -1;
+static int hf_dpnss_sic_oct2_data_type = -1;
+static int hf_dpnss_sic_oct2_duplex = -1;
static int hf_dpnss_sic_oct2_sync_data_format = -1;
static int hf_dpnss_sic_oct2_sync_byte_timing = -1;
-static int hf_dpnss_sic_oct2_net_ind_clk = -1;
-static int hf_dpnss_sic_oct2_async_data = -1;
-static int hf_dpnss_sic_oct2_async_flow_ctrl = -1;
-static int hf_dpnss_clearing_cause = -1;
-static int hf_dpnss_rejection_cause = -1;
-static int hf_dpnss_man_code = -1;
-static int hf_dpnss_subcode = -1;
-static int hf_dpnss_maintenance_action = -1;
+static int hf_dpnss_sic_oct2_net_ind_clk = -1;
+static int hf_dpnss_sic_oct2_async_data = -1;
+static int hf_dpnss_sic_oct2_async_flow_ctrl = -1;
+static int hf_dpnss_clearing_cause = -1;
+static int hf_dpnss_rejection_cause = -1;
+static int hf_dpnss_man_code = -1;
+static int hf_dpnss_subcode = -1;
+static int hf_dpnss_maintenance_action = -1;
/* parameters */
-static int hf_dpnss_a_b_party_addr = -1;
-static int hf_dpnss_call_idx = -1;
-
-#define DPNNS_MESSAGE_GROUP_CC 0
-#define DPNNS_MESSAGE_GROUP_E2E 2
-#define DPNNS_MESSAGE_GROUP_LbL 4
-
-#define DPNSS_CC_MSG_ISRM_C 0
-#define DPNSS_CC_MSG_ISRM_I 1
-#define DPNSS_CC_MSG_RM_C 2
-#define DPNSS_CC_MSG_RM_I 3
-#define DPNSS_CC_MSG_CS 4
-#define DPNSS_CC_MSG_CCM 5
-#define DPNSS_CC_MSG_NIM 6
-#define DPNSS_CC_MSG_CA 7
-#define DPNSS_CC_MSG_CRM 8
-#define DPNSS_CC_MSG_NAM 9
+static int hf_dpnss_a_b_party_addr = -1;
+static int hf_dpnss_call_idx = -1;
+
+#define DPNNS_MESSAGE_GROUP_CC 0
+#define DPNNS_MESSAGE_GROUP_E2E 2
+#define DPNNS_MESSAGE_GROUP_LbL 4
+
+#define DPNSS_CC_MSG_ISRM_C 0
+#define DPNSS_CC_MSG_ISRM_I 1
+#define DPNSS_CC_MSG_RM_C 2
+#define DPNSS_CC_MSG_RM_I 3
+#define DPNSS_CC_MSG_CS 4
+#define DPNSS_CC_MSG_CCM 5
+#define DPNSS_CC_MSG_NIM 6
+#define DPNSS_CC_MSG_CA 7
+#define DPNSS_CC_MSG_CRM 8
+#define DPNSS_CC_MSG_NAM 9
#define DPNSS_CC_MSG_RRM 10
#define DPNSS_CC_MSG_SSRM_I 11
#define DPNSS_CC_MSG_SSRM_C 12
@@ -382,16 +382,16 @@ static const value_string dpnss_man_code_vals[] = {
-#define DPNSS_NONE 0
-#define DPNSS_SERV_MAR 1
-#define DPNSS_STATUS 2
-#define DPNSS_ROUTE_RES_CLASS 3
-#define DPNSS_CBR_GRP 4
-#define DPNSS_FAC_LST_CODE 5
-#define DPNSS_NO_OF_FUR_TRANS 6
-#define DPNSS_NO_OF_FUR_ALT_R 7
-#define DPNSS_INT_CAP_LEV 8
-#define DPNSS_NESTING_LEVEL 9
+#define DPNSS_NONE 0
+#define DPNSS_SERV_MAR 1
+#define DPNSS_STATUS 2
+#define DPNSS_ROUTE_RES_CLASS 3
+#define DPNSS_CBR_GRP 4
+#define DPNSS_FAC_LST_CODE 5
+#define DPNSS_NO_OF_FUR_TRANS 6
+#define DPNSS_NO_OF_FUR_ALT_R 7
+#define DPNSS_INT_CAP_LEV 8
+#define DPNSS_NESTING_LEVEL 9
#define DPNSS_C_PARTY_ADDR 10
#define DPNSS_B_PARTY_ADDR 11
#define DPNSS_SIC 12
@@ -469,8 +469,8 @@ static const value_string dpnss_man_code_vals[] = {
typedef struct {
gint id_code_no;
- const char *compact_name;
- const char *name;
+ const char *compact_name;
+ const char *name;
gint par1_num;
gint par2_num;
gint par3_num;
@@ -744,7 +744,7 @@ dissect_dpnss_sic(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int o
type_of_data = (octet & 0x70)>>4;
proto_tree_add_item(tree, hf_dpnss_ext_bit, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_dpnss_sic_type, tvb, offset, 1, ENC_BIG_ENDIAN);
- switch(type_of_data){
+ switch (type_of_data) {
case 1:
/* Type of Data (001) : Details for Speech */
proto_tree_add_item(tree, hf_dpnss_sic_details_for_speech, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -762,14 +762,14 @@ dissect_dpnss_sic(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int o
break;
}
offset++;
- if((octet&0x80)==0x80){
+ if ((octet&0x80)==0x80) {
/* Extension bit set
* Synch/Asynchronous Information
*/
octet = tvb_get_guint8(tvb,offset);
type_of_data = octet&0x3;
proto_tree_add_item(tree, hf_dpnss_ext_bit_notall, tvb, offset, 1, ENC_BIG_ENDIAN);
- switch(type_of_data){
+ switch (type_of_data) {
case 3:
/* Synchronous */
case 4:
@@ -905,10 +905,10 @@ dissect_dpnns_sup_str_par(tvbuff_t *tvb, proto_tree * tree, int par_type_num, in
int par_len;
par_len = par_end_offset - par_start_offset;
- if(par_len==0){
+ if (par_len==0) {
par_type_num = DPNSS_NONE;
}
- switch (par_type_num){
+ switch (par_type_num) {
case DPNSS_NONE:
proto_tree_add_text(tree, tvb, par_start_offset, par_len,"Par: None");
break;
@@ -1082,9 +1082,9 @@ dissect_dpnss_sup_info_str(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
tvb_end_offset = tvb_length(tvb);
str_no = 1;
- while((offset<tvb_end_offset)&&(last_string == FALSE)){
+ while ((offset<tvb_end_offset)&&(last_string == FALSE)) {
octet = tvb_get_guint8(tvb,offset);
- if (octet == '*'){
+ if (octet == '*') {
/* Supplementary Information String */
start_offset = offset;
has_par = TRUE;
@@ -1101,29 +1101,29 @@ dissect_dpnss_sup_info_str(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
* The number may have a trailing alpha character at the end.
*/
sup_inf_str_end_offset = tvb_find_guint8(tvb, offset, hash_offset-offset, '*');
- if(sup_inf_str_end_offset==-1){
+ if (sup_inf_str_end_offset==-1) {
/* no parameters */
has_par = FALSE;
sup_inf_str_end_offset = hash_offset;
}
sup_inf_str_len = sup_inf_str_end_offset - offset;
sup_str_num = atoi(tvb_format_text(tvb, offset, sup_inf_str_len));
- if((sup_str_num != 0) && (sup_str_num < array_length(dpnns_sup_serv_set))){
+ if ((sup_str_num != 0) && (sup_str_num < array_length(dpnns_sup_serv_set))) {
proto_tree_add_text(sup_str_tree, tvb,offset,sup_inf_str_len,
"Sup str:%s ", dpnns_sup_serv_set[sup_str_num].compact_name);
offset = sup_inf_str_end_offset+1;
/* Find parameter(s) */
- while(has_par){
+ while (has_par) {
number_of_found_par++;
/* 1:st Parameter */
par_start_offset = offset;
par_end_offset = tvb_find_guint8(tvb, offset, -1, '*');
- if(par_end_offset == -1){
+ if (par_end_offset == -1) {
/* last parameter */
par_end_offset = hash_offset;
has_par = FALSE;
}
- switch(number_of_found_par){
+ switch (number_of_found_par) {
case 1:
par_type_num = dpnns_sup_serv_set[sup_str_num].par1_num;
dissect_dpnns_sup_str_par(tvb,sup_str_tree, par_type_num, par_start_offset, par_end_offset);
@@ -1150,7 +1150,7 @@ dissect_dpnss_sup_info_str(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
}
offset = hash_offset+1;
str_no++;
- }else{
+ } else {
last_string = TRUE;
proto_tree_add_item(tree, hf_dpnss_dest_addr, tvb, offset, -1, ENC_ASCII|ENC_NA);
}
@@ -1164,20 +1164,20 @@ dissect_dpnss_LbL_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_item *sic_field_item, *ind_field_item;
proto_tree *sic_field_tree, *ind_field_tree;
- int offset = 0;
- int tvb_end_offset;
- guint8 octet;
+ int offset = 0;
+ int tvb_end_offset;
+ guint8 octet;
tvb_end_offset = tvb_length(tvb);
proto_tree_add_item(tree, hf_dpnss_LbL_msg_type, tvb, offset, 1, ENC_BIG_ENDIAN);
octet = tvb_get_guint8(tvb,offset)&0x0f;
offset++;
- if(check_col(pinfo->cinfo, COL_INFO))
+ if (check_col(pinfo->cinfo, COL_INFO))
col_add_fstr(pinfo->cinfo, COL_INFO, "%s ",
val_to_str(octet, dpnss_LbL_msg_short_type_vals, "Unknown (%d)" ));
- if(tree){
- switch (octet){
+ if (tree) {
+ switch (octet) {
case DPNSS_LbL_MSG_LLM_C:
/* 2.3.1 LINK-by-LINK Message (COMPLETE) - LLM(C)*/
case DPNSS_LbL_MSG_LLM_I:
@@ -1194,7 +1194,7 @@ dissect_dpnss_LbL_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Rejection Cause */
proto_tree_add_item(tree, hf_dpnss_rejection_cause, tvb, offset, 1, ENC_BIG_ENDIAN);
/* Indication Field (Optional) */
- if(tvb_end_offset>offset){
+ if (tvb_end_offset>offset) {
ind_field_item = proto_tree_add_text(tree, tvb, offset, -1,
"Indication Field: %s",
tvb_format_text(tvb,offset,tvb_length_remaining(tvb, offset)));
@@ -1251,7 +1251,7 @@ dissect_dpnss_LbL_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
break;
}
}
- return offset;
+ return offset;
}
@@ -1260,20 +1260,20 @@ dissect_dpnss_e2e_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_item *sel_field_item, *sic_field_item, *ind_field_item;
proto_tree *sel_field_tree, *sic_field_tree, *ind_field_tree;
- int offset = 0;
- int tvb_end_offset;
- guint8 octet;
+ int offset = 0;
+ int tvb_end_offset;
+ guint8 octet;
tvb_end_offset = tvb_length(tvb);
proto_tree_add_item(tree, hf_dpnss_e2e_msg_type, tvb, offset, 1, ENC_BIG_ENDIAN);
octet = tvb_get_guint8(tvb,offset)&0x0f;
offset++;
- if(check_col(pinfo->cinfo, COL_INFO))
+ if (check_col(pinfo->cinfo, COL_INFO))
col_add_fstr(pinfo->cinfo, COL_INFO, "%s ",
val_to_str(octet, dpnss_e2e_msg_short_type_vals, "Unknown (%d)" ));
- if(tree){
- switch (octet){
+ if (tree) {
+ switch (octet) {
case DPNSS_E2E_MSG_EEM_C:
/* 2.2.1 END-to-END Message (COMPLETE) - EEM(C) */
case DPNSS_E2E_MSG_EEM_I:
@@ -1293,7 +1293,7 @@ dissect_dpnss_e2e_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(tree, hf_dpnss_clearing_cause, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
/* Indication Field (Optional) */
- if(tvb_end_offset>offset){
+ if (tvb_end_offset>offset) {
ind_field_item = proto_tree_add_text(tree, tvb, offset, -1,
"Indication Field: %s",
tvb_format_text(tvb,offset,tvb_length_remaining(tvb, offset)));
@@ -1337,7 +1337,7 @@ dissect_dpnss_e2e_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(tree, hf_dpnss_man_code, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_dpnss_subcode, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
- if((octet&0x80)==0x80){
+ if ((octet&0x80)==0x80) {
/* Extension bit set */
offset++;
}
@@ -1358,20 +1358,20 @@ dissect_dpnss_cc_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_item *sel_field_item, *sic_field_item, *ind_field_item;
proto_tree *sel_field_tree, *sic_field_tree, *ind_field_tree;
- int offset = 0;
- int tvb_end_offset;
- guint8 octet;
+ int offset = 0;
+ int tvb_end_offset;
+ guint8 octet;
tvb_end_offset = tvb_length(tvb);
proto_tree_add_item(tree, hf_dpnss_cc_msg_type, tvb, offset, 1, ENC_BIG_ENDIAN);
octet = tvb_get_guint8(tvb,offset)&0x0f;
offset++;
- if(check_col(pinfo->cinfo, COL_INFO))
+ if (check_col(pinfo->cinfo, COL_INFO))
col_add_fstr(pinfo->cinfo, COL_INFO, "%s ",
val_to_str(octet, dpnss_cc_msg_short_type_vals, "Unknown (%d)" ));
- if(tree){
- switch (octet){
+ if (tree) {
+ switch (octet) {
case DPNSS_CC_MSG_ISRM_C:
/* 2.1.1 INITIAL SERVICE REQUEST Message (COMPLETE) - ISRM (C) */
/* fall trough */
@@ -1404,7 +1404,7 @@ dissect_dpnss_cc_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
break;
case DPNSS_CC_MSG_CCM:
/* 2.1.5 CALL CONNECTED Message - CCM */
- if(tvb_end_offset>offset){
+ if (tvb_end_offset>offset) {
/* Indication Field (Optional) */
ind_field_item = proto_tree_add_text(tree, tvb, offset, -1,
"Indication Field: %s",
@@ -1432,7 +1432,7 @@ dissect_dpnss_cc_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(tree, hf_dpnss_clearing_cause, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
/* Indication Field (Optional) */
- if(tvb_end_offset>offset){
+ if (tvb_end_offset>offset) {
ind_field_item = proto_tree_add_text(tree, tvb, offset, -1,
"Indication Field: %s",
tvb_format_text(tvb,offset,tvb_length_remaining(tvb, offset)));
@@ -1445,7 +1445,7 @@ dissect_dpnss_cc_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Rejection Cause */
proto_tree_add_item(tree, hf_dpnss_rejection_cause, tvb, offset, 1, ENC_BIG_ENDIAN);
/* Indication Field (Optional) */
- if(tvb_end_offset>offset){
+ if (tvb_end_offset>offset) {
ind_field_item = proto_tree_add_text(tree, tvb, offset, -1,
"Indication Field: %s",
tvb_format_text(tvb,offset,tvb_length_remaining(tvb, offset)));
@@ -1465,7 +1465,7 @@ dissect_dpnss_cc_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case DPNSS_CC_MSG_SSRM_C:
/* 2.1.12 SUBSEQUENT SERVICE REQUEST Message (COMPLETE) - SSRM(C) */
/* Selection Field (Optional) */
- if(tvb_end_offset>offset){
+ if (tvb_end_offset>offset) {
sel_field_item = proto_tree_add_text(tree, tvb, offset, -1,
"Selection Field: %s",
tvb_format_text(tvb,offset,tvb_length_remaining(tvb, offset)));
@@ -1487,10 +1487,10 @@ dissect_dpnss_cc_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
dissect_dpnss(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- int offset = 0;
+ int offset = 0;
proto_item *item;
proto_tree *dpnss_tree;
- guint8 octet;
+ guint8 octet;
/* Make entries in Protocol column and Info column on summary display */
col_set_str(pinfo->cinfo, COL_PROTOCOL, "DPNSS");
@@ -1499,7 +1499,7 @@ dissect_dpnss(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
dpnss_tree = proto_item_add_subtree(item, ett_dpnss);
proto_tree_add_item(dpnss_tree, hf_dpnss_msg_grp_id, tvb, offset, 1, ENC_BIG_ENDIAN);
octet = tvb_get_guint8(tvb,offset)>>4;
- switch (octet){
+ switch (octet) {
case DPNNS_MESSAGE_GROUP_CC:
/* Call Control Message Group */
dissect_dpnss_cc_msg(tvb, pinfo, dpnss_tree);
@@ -1521,8 +1521,6 @@ dissect_dpnss(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
void
proto_register_dpnss(void)
{
-
-
/* Setup list of header fields See Section 1.6.1 for details*/
static hf_register_info hf[] = {
{ &hf_dpnss_msg_grp_id,
@@ -1665,7 +1663,7 @@ proto_register_dpnss(void)
proto_dpnss = proto_register_protocol("Digital Private Signalling System No 1","DPNSS", "dpnss");
register_dissector("dpnss", dissect_dpnss, proto_dpnss);
- /* Required function calls to register the header fields and subtrees used */
+/* Required function calls to register the header fields and subtrees used */
proto_register_field_array(proto_dpnss, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
diff --git a/epan/dissectors/packet-drda.c b/epan/dissectors/packet-drda.c
index 5fe95ceb0c..b5f37ee501 100644
--- a/epan/dissectors/packet-drda.c
+++ b/epan/dissectors/packet-drda.c
@@ -36,15 +36,15 @@
* of the DDM commands and reply messages are in EBCDIC.
*
* Documentation:
-* DRDA Version 3 Vol. 3: Distributed Relational Database Architecture,
-* Open Group.
-* Version 3 is no longer available; for the latest version, see
+* DRDA Version 3 Vol. 3: Distributed Relational Database Architecture,
+* Open Group.
+* Version 3 is no longer available; for the latest version, see
*
-* http://www.opengroup.org/dbiop/
+* http://www.opengroup.org/dbiop/
*
-* Reference for Remote DRDA Requesters and Servers, IBM.
+* Reference for Remote DRDA Requesters and Servers, IBM.
*
-* https://www-304.ibm.com/support/docview.wss?uid=pub1sc18985301
+* https://www-304.ibm.com/support/docview.wss?uid=pub1sc18985301
*/
#ifdef HAVE_CONFIG_H
@@ -85,580 +85,578 @@ static dissector_handle_t drda_tcp_handle;
static gboolean drda_desegment = TRUE;
-#define DRDA_MAGIC 0xD0
-
-#define DRDA_CP_DATA 0x0000
-#define DRDA_CP_CODPNT 0x000C
-#define DRDA_CP_FDODSC 0x0010
-#define DRDA_CP_TYPDEFNAM 0x002F
-#define DRDA_CP_TYPDEFOVR 0x0035
-#define DRDA_CP_CODPNTDR 0x0064
-#define DRDA_CP_EXCSAT 0x1041
-#define DRDA_CP_SYNCCTL 0x1055
-#define DRDA_CP_SYNCRSY 0x1069
-#define DRDA_CP_ACCSEC 0x106D
-#define DRDA_CP_SECCHK 0x106E
-#define DRDA_CP_SYNCLOG 0x106F
-#define DRDA_CP_RSCTYP 0x111F
-#define DRDA_CP_RSNCOD 0x1127
-#define DRDA_CP_RSCNAM 0x112D
-#define DRDA_CP_PRDID 0x112E
-#define DRDA_CP_PRCCNVCD 0x113F
-#define DRDA_CP_VRSNAM 0x1144
-#define DRDA_CP_SRVCLSNM 0x1147
-#define DRDA_CP_SVRCOD 0x1149
-#define DRDA_CP_SYNERRCD 0x114A
-#define DRDA_CP_SRVDGN 0x1153
-#define DRDA_CP_SRVRLSLV 0x115A
-#define DRDA_CP_SPVNAM 0x115D
-#define DRDA_CP_EXTNAM 0x115E
-#define DRDA_CP_SRVNAM 0x116D
-#define DRDA_CP_SECMGRNM 0x1196
-#define DRDA_CP_DEPERRCD 0x119B
-#define DRDA_CP_CCSIDSBC 0x119C
-#define DRDA_CP_CCSIDDBC 0x119D
-#define DRDA_CP_CCSIDMBC 0x119E
-#define DRDA_CP_USRID 0x11A0
-#define DRDA_CP_PASSWORD 0x11A1
-#define DRDA_CP_SECMEC 0x11A2
-#define DRDA_CP_SECCHKCD 0x11A4
-#define DRDA_CP_SVCERRNO 0x11B4
-#define DRDA_CP_SECTKN 0x11DC
-#define DRDA_CP_NEWPASSWORD 0x11DE
-#define DRDA_CP_MGRLVLRM 0x1210
-#define DRDA_CP_MGRDEPRM 0x1218
-#define DRDA_CP_SECCHKRM 0x1219
-#define DRDA_CP_CMDATHRM 0x121C
-#define DRDA_CP_AGNPRMRM 0x1232
-#define DRDA_CP_RSCLMTRM 0x1233
-#define DRDA_CP_PRCCNVRM 0x1245
-#define DRDA_CP_CMDCMPRM 0x124B
-#define DRDA_CP_SYNTAXRM 0x124C
-#define DRDA_CP_CMDNSPRM 0x1250
-#define DRDA_CP_PRMNSPRM 0x1251
-#define DRDA_CP_VALNSPRM 0x1252
-#define DRDA_CP_OBJNSPRM 0x1253
-#define DRDA_CP_CMDCHKRM 0x1254
-#define DRDA_CP_TRGNSPRM 0x125F
-#define DRDA_CP_AGENT 0x1403
-#define DRDA_CP_MGRLVLLS 0x1404
-#define DRDA_CP_SUPERVISOR 0x143C
-#define DRDA_CP_SECMGR 0x1440
-#define DRDA_CP_EXCSATRD 0x1443
-#define DRDA_CP_CMNAPPC 0x1444
-#define DRDA_CP_DICTIONARY 0x1458
-#define DRDA_CP_MGRLVLN 0x1473
-#define DRDA_CP_CMNTCPIP 0x1474
-#define DRDA_CP_FDODTA 0x147A
-#define DRDA_CP_CMNSYNCPT 0x147C
-#define DRDA_CP_ACCSECRD 0x14AC
-#define DRDA_CP_SYNCPTMGR 0x14C0
-#define DRDA_CP_RSYNCMGR 0x14C1
-#define DRDA_CP_CCSIDMGR 0x14CC
-#define DRDA_CP_MONITOR 0x1900
-#define DRDA_CP_MONITORRD 0x1C00
-#define DRDA_CP_XAMGR 0x1C01
-#define DRDA_CP_ACCRDB 0x2001
-#define DRDA_CP_BGNBND 0x2002
-#define DRDA_CP_BNDSQLSTT 0x2004
-#define DRDA_CP_CLSQRY 0x2005
-#define DRDA_CP_CNTQRY 0x2006
-#define DRDA_CP_DRPPKG 0x2007
-#define DRDA_CP_DSCSQLSTT 0x2008
-#define DRDA_CP_ENDBND 0x2009
-#define DRDA_CP_EXCSQLIMM 0x200A
-#define DRDA_CP_EXCSQLSTT 0x200B
-#define DRDA_CP_OPNQRY 0x200C
-#define DRDA_CP_PRPSQLSTT 0x200D
-#define DRDA_CP_RDBCMM 0x200E
-#define DRDA_CP_RDBRLLBCK 0x200F
-#define DRDA_CP_REBIND 0x2010
-#define DRDA_CP_DSCRDBTBL 0x2012
-#define DRDA_CP_EXCSQLSET 0x2014
-#define DRDA_CP_DSCERRCD 0x2101
-#define DRDA_CP_QRYPRCTYP 0x2102
-#define DRDA_CP_RDBINTTKN 0x2103
-#define DRDA_CP_PRDDTA 0x2104
-#define DRDA_CP_RDBCMTOK 0x2105
-#define DRDA_CP_RDBCOLID 0x2108
-#define DRDA_CP_PKGID 0x2109
-#define DRDA_CP_PKGCNSTKN 0x210D
-#define DRDA_CP_RTNSETSTT 0x210E
-#define DRDA_CP_RDBACCCL 0x210F
-#define DRDA_CP_RDBNAM 0x2110
-#define DRDA_CP_OUTEXP 0x2111
-#define DRDA_CP_PKGNAMCT 0x2112
-#define DRDA_CP_PKGNAMCSN 0x2113
-#define DRDA_CP_QRYBLKSZ 0x2114
-#define DRDA_CP_UOWDSP 0x2115
-#define DRDA_CP_RTNSQLDA 0x2116
-#define DRDA_CP_RDBALWUPD 0x211A
-#define DRDA_CP_SQLCSRHLD 0x211F
-#define DRDA_CP_STTSTRDEL 0x2120
-#define DRDA_CP_STTDECDEL 0x2121
-#define DRDA_CP_PKGDFTCST 0x2125
-#define DRDA_CP_QRYBLKCTL 0x2132
-#define DRDA_CP_CRRTKN 0x2135
-#define DRDA_CP_PRCNAM 0x2138
-#define DRDA_CP_PKGSNLST 0x2139
-#define DRDA_CP_NBRROW 0x213A
-#define DRDA_CP_TRGDFTRT 0x213B
-#define DRDA_CP_QRYRELSCR 0x213C
-#define DRDA_CP_QRYROWNBR 0x213D
-#define DRDA_CP_QRYRFRTBL 0x213E
-#define DRDA_CP_MAXRSLCNT 0x2140
-#define DRDA_CP_MAXBLKEXT 0x2141
-#define DRDA_CP_RSLSETFLG 0x2142
-#define DRDA_CP_TYPSQLDA 0x2146
-#define DRDA_CP_OUTOVROPT 0x2147
-#define DRDA_CP_RTNEXTDTA 0x2148
-#define DRDA_CP_QRYATTSCR 0x2149
-#define DRDA_CP_QRYATTUPD 0x2150
-#define DRDA_CP_QRYSCRORN 0x2152
-#define DRDA_CP_QRYROWSNS 0x2153
-#define DRDA_CP_QRYBLKRST 0x2154
-#define DRDA_CP_QRYRTNDTA 0x2155
-#define DRDA_CP_QRYROWSET 0x2156
-#define DRDA_CP_QRYATTSNS 0x2157
-#define DRDA_CP_QRYINSID 0x215B
-#define DRDA_CP_QRYCLSIMP 0x215D
-#define DRDA_CP_QRYCLSRLS 0x215E
-#define DRDA_CP_QRYOPTVAL 0x215F
-#define DRDA_CP_DIAGLVL 0x2160
-#define DRDA_CP_ACCRDBRM 0x2201
-#define DRDA_CP_QRYNOPRM 0x2202
-#define DRDA_CP_RDBNACRM 0x2204
-#define DRDA_CP_OPNQRYRM 0x2205
-#define DRDA_CP_PKGBNARM 0x2206
-#define DRDA_CP_RDBACCRM 0x2207
-#define DRDA_CP_BGNBNDRM 0x2208
-#define DRDA_CP_PKGBPARM 0x2209
-#define DRDA_CP_DSCINVRM 0x220A
-#define DRDA_CP_ENDQRYRM 0x220B
-#define DRDA_CP_ENDUOWRM 0x220C
-#define DRDA_CP_ABNUOWRM 0x220D
-#define DRDA_CP_DTAMCHRM 0x220E
-#define DRDA_CP_QRYPOPRM 0x220F
-#define DRDA_CP_RDBNFNRM 0x2211
-#define DRDA_CP_OPNQFLRM 0x2212
-#define DRDA_CP_SQLERRRM 0x2213
-#define DRDA_CP_RDBUPDRM 0x2218
-#define DRDA_CP_RSLSETRM 0x2219
-#define DRDA_CP_RDBAFLRM 0x221A
-#define DRDA_CP_CMDVLTRM 0x221D
-#define DRDA_CP_CMMRQSRM 0x2225
-#define DRDA_CP_RDBATHRM 0x22CB
-#define DRDA_CP_SQLAM 0x2407
-#define DRDA_CP_SQLCARD 0x2408
-#define DRDA_CP_SQLCINRD 0x240B
-#define DRDA_CP_SQLRSLRD 0x240E
-#define DRDA_CP_RDB 0x240F
-#define DRDA_CP_FRCFIXROW 0x2410
-#define DRDA_CP_SQLDARD 0x2411
-#define DRDA_CP_SQLDTA 0x2412
-#define DRDA_CP_SQLDTARD 0x2413
-#define DRDA_CP_SQLSTT 0x2414
-#define DRDA_CP_OUTOVR 0x2415
-#define DRDA_CP_LMTBLKPRC 0x2417
-#define DRDA_CP_FIXROWPRC 0x2418
-#define DRDA_CP_SQLSTTVRB 0x2419
-#define DRDA_CP_QRYDSC 0x241A
-#define DRDA_CP_QRYDTA 0x241B
-#define DRDA_CP_CSTMBCS 0x2435
-#define DRDA_CP_SRVLST 0x244E
-#define DRDA_CP_SQLATTR 0x2450
-
-#define DRDA_DSSFMT_SAME_CORR 0x01
-#define DRDA_DSSFMT_CONTINUE 0x02
-#define DRDA_DSSFMT_CHAINED 0x04
-#define DRDA_DSSFMT_RESERVED 0x08
-
-#define DRDA_DSSFMT_RQSDSS 0x01
-#define DRDA_DSSFMT_RPYDSS 0x02
-#define DRDA_DSSFMT_OBJDSS 0x03
-#define DRDA_DSSFMT_CMNDSS 0x04
-#define DRDA_DSSFMT_NORPYDSS 0x05
+#define DRDA_MAGIC 0xD0
+
+#define DRDA_CP_DATA 0x0000
+#define DRDA_CP_CODPNT 0x000C
+#define DRDA_CP_FDODSC 0x0010
+#define DRDA_CP_TYPDEFNAM 0x002F
+#define DRDA_CP_TYPDEFOVR 0x0035
+#define DRDA_CP_CODPNTDR 0x0064
+#define DRDA_CP_EXCSAT 0x1041
+#define DRDA_CP_SYNCCTL 0x1055
+#define DRDA_CP_SYNCRSY 0x1069
+#define DRDA_CP_ACCSEC 0x106D
+#define DRDA_CP_SECCHK 0x106E
+#define DRDA_CP_SYNCLOG 0x106F
+#define DRDA_CP_RSCTYP 0x111F
+#define DRDA_CP_RSNCOD 0x1127
+#define DRDA_CP_RSCNAM 0x112D
+#define DRDA_CP_PRDID 0x112E
+#define DRDA_CP_PRCCNVCD 0x113F
+#define DRDA_CP_VRSNAM 0x1144
+#define DRDA_CP_SRVCLSNM 0x1147
+#define DRDA_CP_SVRCOD 0x1149
+#define DRDA_CP_SYNERRCD 0x114A
+#define DRDA_CP_SRVDGN 0x1153
+#define DRDA_CP_SRVRLSLV 0x115A
+#define DRDA_CP_SPVNAM 0x115D
+#define DRDA_CP_EXTNAM 0x115E
+#define DRDA_CP_SRVNAM 0x116D
+#define DRDA_CP_SECMGRNM 0x1196
+#define DRDA_CP_DEPERRCD 0x119B
+#define DRDA_CP_CCSIDSBC 0x119C
+#define DRDA_CP_CCSIDDBC 0x119D
+#define DRDA_CP_CCSIDMBC 0x119E
+#define DRDA_CP_USRID 0x11A0
+#define DRDA_CP_PASSWORD 0x11A1
+#define DRDA_CP_SECMEC 0x11A2
+#define DRDA_CP_SECCHKCD 0x11A4
+#define DRDA_CP_SVCERRNO 0x11B4
+#define DRDA_CP_SECTKN 0x11DC
+#define DRDA_CP_NEWPASSWORD 0x11DE
+#define DRDA_CP_MGRLVLRM 0x1210
+#define DRDA_CP_MGRDEPRM 0x1218
+#define DRDA_CP_SECCHKRM 0x1219
+#define DRDA_CP_CMDATHRM 0x121C
+#define DRDA_CP_AGNPRMRM 0x1232
+#define DRDA_CP_RSCLMTRM 0x1233
+#define DRDA_CP_PRCCNVRM 0x1245
+#define DRDA_CP_CMDCMPRM 0x124B
+#define DRDA_CP_SYNTAXRM 0x124C
+#define DRDA_CP_CMDNSPRM 0x1250
+#define DRDA_CP_PRMNSPRM 0x1251
+#define DRDA_CP_VALNSPRM 0x1252
+#define DRDA_CP_OBJNSPRM 0x1253
+#define DRDA_CP_CMDCHKRM 0x1254
+#define DRDA_CP_TRGNSPRM 0x125F
+#define DRDA_CP_AGENT 0x1403
+#define DRDA_CP_MGRLVLLS 0x1404
+#define DRDA_CP_SUPERVISOR 0x143C
+#define DRDA_CP_SECMGR 0x1440
+#define DRDA_CP_EXCSATRD 0x1443
+#define DRDA_CP_CMNAPPC 0x1444
+#define DRDA_CP_DICTIONARY 0x1458
+#define DRDA_CP_MGRLVLN 0x1473
+#define DRDA_CP_CMNTCPIP 0x1474
+#define DRDA_CP_FDODTA 0x147A
+#define DRDA_CP_CMNSYNCPT 0x147C
+#define DRDA_CP_ACCSECRD 0x14AC
+#define DRDA_CP_SYNCPTMGR 0x14C0
+#define DRDA_CP_RSYNCMGR 0x14C1
+#define DRDA_CP_CCSIDMGR 0x14CC
+#define DRDA_CP_MONITOR 0x1900
+#define DRDA_CP_MONITORRD 0x1C00
+#define DRDA_CP_XAMGR 0x1C01
+#define DRDA_CP_ACCRDB 0x2001
+#define DRDA_CP_BGNBND 0x2002
+#define DRDA_CP_BNDSQLSTT 0x2004
+#define DRDA_CP_CLSQRY 0x2005
+#define DRDA_CP_CNTQRY 0x2006
+#define DRDA_CP_DRPPKG 0x2007
+#define DRDA_CP_DSCSQLSTT 0x2008
+#define DRDA_CP_ENDBND 0x2009
+#define DRDA_CP_EXCSQLIMM 0x200A
+#define DRDA_CP_EXCSQLSTT 0x200B
+#define DRDA_CP_OPNQRY 0x200C
+#define DRDA_CP_PRPSQLSTT 0x200D
+#define DRDA_CP_RDBCMM 0x200E
+#define DRDA_CP_RDBRLLBCK 0x200F
+#define DRDA_CP_REBIND 0x2010
+#define DRDA_CP_DSCRDBTBL 0x2012
+#define DRDA_CP_EXCSQLSET 0x2014
+#define DRDA_CP_DSCERRCD 0x2101
+#define DRDA_CP_QRYPRCTYP 0x2102
+#define DRDA_CP_RDBINTTKN 0x2103
+#define DRDA_CP_PRDDTA 0x2104
+#define DRDA_CP_RDBCMTOK 0x2105
+#define DRDA_CP_RDBCOLID 0x2108
+#define DRDA_CP_PKGID 0x2109
+#define DRDA_CP_PKGCNSTKN 0x210D
+#define DRDA_CP_RTNSETSTT 0x210E
+#define DRDA_CP_RDBACCCL 0x210F
+#define DRDA_CP_RDBNAM 0x2110
+#define DRDA_CP_OUTEXP 0x2111
+#define DRDA_CP_PKGNAMCT 0x2112
+#define DRDA_CP_PKGNAMCSN 0x2113
+#define DRDA_CP_QRYBLKSZ 0x2114
+#define DRDA_CP_UOWDSP 0x2115
+#define DRDA_CP_RTNSQLDA 0x2116
+#define DRDA_CP_RDBALWUPD 0x211A
+#define DRDA_CP_SQLCSRHLD 0x211F
+#define DRDA_CP_STTSTRDEL 0x2120
+#define DRDA_CP_STTDECDEL 0x2121
+#define DRDA_CP_PKGDFTCST 0x2125
+#define DRDA_CP_QRYBLKCTL 0x2132
+#define DRDA_CP_CRRTKN 0x2135
+#define DRDA_CP_PRCNAM 0x2138
+#define DRDA_CP_PKGSNLST 0x2139
+#define DRDA_CP_NBRROW 0x213A
+#define DRDA_CP_TRGDFTRT 0x213B
+#define DRDA_CP_QRYRELSCR 0x213C
+#define DRDA_CP_QRYROWNBR 0x213D
+#define DRDA_CP_QRYRFRTBL 0x213E
+#define DRDA_CP_MAXRSLCNT 0x2140
+#define DRDA_CP_MAXBLKEXT 0x2141
+#define DRDA_CP_RSLSETFLG 0x2142
+#define DRDA_CP_TYPSQLDA 0x2146
+#define DRDA_CP_OUTOVROPT 0x2147
+#define DRDA_CP_RTNEXTDTA 0x2148
+#define DRDA_CP_QRYATTSCR 0x2149
+#define DRDA_CP_QRYATTUPD 0x2150
+#define DRDA_CP_QRYSCRORN 0x2152
+#define DRDA_CP_QRYROWSNS 0x2153
+#define DRDA_CP_QRYBLKRST 0x2154
+#define DRDA_CP_QRYRTNDTA 0x2155
+#define DRDA_CP_QRYROWSET 0x2156
+#define DRDA_CP_QRYATTSNS 0x2157
+#define DRDA_CP_QRYINSID 0x215B
+#define DRDA_CP_QRYCLSIMP 0x215D
+#define DRDA_CP_QRYCLSRLS 0x215E
+#define DRDA_CP_QRYOPTVAL 0x215F
+#define DRDA_CP_DIAGLVL 0x2160
+#define DRDA_CP_ACCRDBRM 0x2201
+#define DRDA_CP_QRYNOPRM 0x2202
+#define DRDA_CP_RDBNACRM 0x2204
+#define DRDA_CP_OPNQRYRM 0x2205
+#define DRDA_CP_PKGBNARM 0x2206
+#define DRDA_CP_RDBACCRM 0x2207
+#define DRDA_CP_BGNBNDRM 0x2208
+#define DRDA_CP_PKGBPARM 0x2209
+#define DRDA_CP_DSCINVRM 0x220A
+#define DRDA_CP_ENDQRYRM 0x220B
+#define DRDA_CP_ENDUOWRM 0x220C
+#define DRDA_CP_ABNUOWRM 0x220D
+#define DRDA_CP_DTAMCHRM 0x220E
+#define DRDA_CP_QRYPOPRM 0x220F
+#define DRDA_CP_RDBNFNRM 0x2211
+#define DRDA_CP_OPNQFLRM 0x2212
+#define DRDA_CP_SQLERRRM 0x2213
+#define DRDA_CP_RDBUPDRM 0x2218
+#define DRDA_CP_RSLSETRM 0x2219
+#define DRDA_CP_RDBAFLRM 0x221A
+#define DRDA_CP_CMDVLTRM 0x221D
+#define DRDA_CP_CMMRQSRM 0x2225
+#define DRDA_CP_RDBATHRM 0x22CB
+#define DRDA_CP_SQLAM 0x2407
+#define DRDA_CP_SQLCARD 0x2408
+#define DRDA_CP_SQLCINRD 0x240B
+#define DRDA_CP_SQLRSLRD 0x240E
+#define DRDA_CP_RDB 0x240F
+#define DRDA_CP_FRCFIXROW 0x2410
+#define DRDA_CP_SQLDARD 0x2411
+#define DRDA_CP_SQLDTA 0x2412
+#define DRDA_CP_SQLDTARD 0x2413
+#define DRDA_CP_SQLSTT 0x2414
+#define DRDA_CP_OUTOVR 0x2415
+#define DRDA_CP_LMTBLKPRC 0x2417
+#define DRDA_CP_FIXROWPRC 0x2418
+#define DRDA_CP_SQLSTTVRB 0x2419
+#define DRDA_CP_QRYDSC 0x241A
+#define DRDA_CP_QRYDTA 0x241B
+#define DRDA_CP_CSTMBCS 0x2435
+#define DRDA_CP_SRVLST 0x244E
+#define DRDA_CP_SQLATTR 0x2450
+
+#define DRDA_DSSFMT_SAME_CORR 0x01
+#define DRDA_DSSFMT_CONTINUE 0x02
+#define DRDA_DSSFMT_CHAINED 0x04
+#define DRDA_DSSFMT_RESERVED 0x08
+
+#define DRDA_DSSFMT_RQSDSS 0x01
+#define DRDA_DSSFMT_RPYDSS 0x02
+#define DRDA_DSSFMT_OBJDSS 0x03
+#define DRDA_DSSFMT_CMNDSS 0x04
+#define DRDA_DSSFMT_NORPYDSS 0x05
#define DRDA_TEXT_DDM "DDM"
#define DRDA_TEXT_PARAM "Parameter"
static const value_string drda_opcode_vals[] = {
- { DRDA_CP_DATA, "Data" },
- { DRDA_CP_CODPNT, "Code Point" },
- { DRDA_CP_FDODSC, "FD:OCA Data Descriptor" },
- { DRDA_CP_TYPDEFNAM, "Data Type Definition Name" },
- { DRDA_CP_TYPDEFOVR, "TYPDEF Overrides" },
- { DRDA_CP_CODPNTDR, "Code Point Data Representation" },
- { DRDA_CP_EXCSAT, "Exchange Server Attributes" },
- { DRDA_CP_SYNCCTL, "Sync Point Control Request" },
- { DRDA_CP_SYNCRSY, "Sync Point Resync Command" },
- { DRDA_CP_ACCSEC, "Access Security" },
- { DRDA_CP_SECCHK, "Security Check" },
- { DRDA_CP_SYNCLOG, "Sync Point Log" },
- { DRDA_CP_RSCTYP, "Resource Type Information" },
- { DRDA_CP_RSNCOD, "Reason Code Information" },
- { DRDA_CP_RSCNAM, "Resource Name Information" },
- { DRDA_CP_PRDID, "Product-Specific Identifier" },
- { DRDA_CP_PRCCNVCD, "Conversation Protocol Error Code" },
- { DRDA_CP_VRSNAM, "Version Name" },
- { DRDA_CP_SRVCLSNM, "Server Class Name" },
- { DRDA_CP_SVRCOD, "Severity Code" },
- { DRDA_CP_SYNERRCD, "Syntax Error Code" },
- { DRDA_CP_SRVDGN, "Server Diagnostic Information" },
- { DRDA_CP_SRVRLSLV, "Server Product Release Level" },
- { DRDA_CP_SPVNAM, "Supervisor Name" },
- { DRDA_CP_EXTNAM, "External Name" },
- { DRDA_CP_SRVNAM, "Server Name" },
- { DRDA_CP_SECMGRNM, "Security Manager Name" },
- { DRDA_CP_DEPERRCD, "Manager Dependency Error Code" },
- { DRDA_CP_CCSIDSBC, "CCSID for Single-Byte Characters" },
- { DRDA_CP_CCSIDDBC, "CCSID for Double-byte Characters" },
- { DRDA_CP_CCSIDMBC, "CCSID for Mixed-byte Characters" },
- { DRDA_CP_USRID, "User ID at the Target System" },
- { DRDA_CP_PASSWORD, "Password" },
- { DRDA_CP_SECMEC, "Security Mechanism" },
- { DRDA_CP_SECCHKCD, "Security Check Code" },
- { DRDA_CP_SVCERRNO, "Security Service ErrorNumber" },
- { DRDA_CP_SECTKN, "Security Token" },
- { DRDA_CP_NEWPASSWORD, "New Password" },
- { DRDA_CP_MGRLVLRM, "Manager-Level Conflict" },
- { DRDA_CP_MGRDEPRM, "Manager Dependency Error" },
- { DRDA_CP_SECCHKRM, "Security Check" },
- { DRDA_CP_CMDATHRM, "Not Authorized to Command" },
- { DRDA_CP_AGNPRMRM, "Permanent Agent Error" },
- { DRDA_CP_RSCLMTRM, "Resource Limits Reached" },
- { DRDA_CP_PRCCNVRM, "Conversational Protocol Error" },
- { DRDA_CP_CMDCMPRM, "Command Processing Completed" },
- { DRDA_CP_SYNTAXRM, "Data Stream Syntax Error" },
- { DRDA_CP_CMDNSPRM, "Command Not Supported" },
- { DRDA_CP_PRMNSPRM, "Parameter Not Supported" },
- { DRDA_CP_VALNSPRM, "Parameter Value Not Supported" },
- { DRDA_CP_OBJNSPRM, "Object Not Supported" },
- { DRDA_CP_CMDCHKRM, "Command Check" },
- { DRDA_CP_TRGNSPRM, "Target Not Supported" },
- { DRDA_CP_AGENT, "Agent" },
- { DRDA_CP_MGRLVLLS, "Manager-Level List" },
- { DRDA_CP_SUPERVISOR, "Supervisor" },
- { DRDA_CP_SECMGR, "Security Manager" },
- { DRDA_CP_EXCSATRD, "Server Attributes Reply Data" },
- { DRDA_CP_CMNAPPC, "LU 6.2 Conversational Communications Manager" },
- { DRDA_CP_DICTIONARY, "Dictionary" },
- { DRDA_CP_MGRLVLN, "Manager-Level Number Attribute" },
- { DRDA_CP_CMNTCPIP, "TCP/IP CommunicationManager" },
- { DRDA_CP_FDODTA, "FD:OCA Data" },
- { DRDA_CP_CMNSYNCPT,
- "SNA LU 6.2 Sync Point Conversational Communications Manager" },
- { DRDA_CP_ACCSECRD, "Access Security Reply Data" },
- { DRDA_CP_SYNCPTMGR, "Sync Point Manager" },
- { DRDA_CP_RSYNCMGR, "ResynchronizationManager" },
- { DRDA_CP_CCSIDMGR, "CCSID Manager" },
- { DRDA_CP_MONITOR, "Monitor Events" },
- { DRDA_CP_MONITORRD, "Monitor Reply Data" },
- { DRDA_CP_XAMGR, "XAManager" },
- { DRDA_CP_ACCRDB, "Access RDB" },
- { DRDA_CP_BGNBND, "Begin Binding a Package to an RDB" },
- { DRDA_CP_BNDSQLSTT, "Bind SQL Statement to an RDB Package" },
- { DRDA_CP_CLSQRY, "Close Query" },
- { DRDA_CP_CNTQRY, "Continue Query" },
- { DRDA_CP_DRPPKG, "Drop RDB Package" },
- { DRDA_CP_DSCSQLSTT, "Describe SQL Statement" },
- { DRDA_CP_ENDBND, "End Binding a Package to an RDB" },
- { DRDA_CP_EXCSQLIMM, "Execute Immediate SQL Statement" },
- { DRDA_CP_EXCSQLSTT, "Execute SQL Statement" },
- { DRDA_CP_OPNQRY, "Open Query" },
- { DRDA_CP_PRPSQLSTT, "Prepare SQL Statement" },
- { DRDA_CP_RDBCMM, "RDB Commit Unit of Work" },
- { DRDA_CP_RDBRLLBCK, "RDB Rollback Unit of Work" },
- { DRDA_CP_REBIND, "Rebind an Existing RDB Package" },
- { DRDA_CP_DSCRDBTBL, "Describe RDB Table" },
- { DRDA_CP_EXCSQLSET, "Set SQL Environment" },
- { DRDA_CP_DSCERRCD, "Description Error Code" },
- { DRDA_CP_QRYPRCTYP, "Query Protocol Type" },
- { DRDA_CP_RDBINTTKN, "RDB Interrupt Token" },
- { DRDA_CP_PRDDTA, "Product-Specific Data" },
- { DRDA_CP_RDBCMTOK, "RDB Commit Allowed" },
- { DRDA_CP_RDBCOLID, "RDB Collection Identifier" },
- { DRDA_CP_PKGID, "RDB Package Identifier" },
- { DRDA_CP_PKGCNSTKN, "RDB Package Consistency Token" },
- { DRDA_CP_RTNSETSTT, "Return SET Statement" },
- { DRDA_CP_RDBACCCL, "RDB Access Manager Class" },
- { DRDA_CP_RDBNAM, "Relational Database Name" },
- { DRDA_CP_OUTEXP, "Output Expected" },
- { DRDA_CP_PKGNAMCT, "RDB Package Name and Consistency Token" },
- { DRDA_CP_PKGNAMCSN,
- "RDB Package Name, Consistency Token, and Section Number" },
- { DRDA_CP_QRYBLKSZ, "Query Block Size" },
- { DRDA_CP_UOWDSP, "Unit of Work Disposition" },
- { DRDA_CP_RTNSQLDA, "Maximum Result Set Count" },
- { DRDA_CP_RDBALWUPD, "RDB Allow Updates" },
- { DRDA_CP_SQLCSRHLD, "Hold Cursor Position" },
- { DRDA_CP_STTSTRDEL, "Statement String Delimiter" },
- { DRDA_CP_STTDECDEL, "Statement Decimal Delimiter" },
- { DRDA_CP_PKGDFTCST, "Package Default Character Subtype" },
- { DRDA_CP_QRYBLKCTL, "Query Block Protocol Control" },
- { DRDA_CP_CRRTKN, "Correlation Token" },
- { DRDA_CP_PRCNAM, "Procedure Name" },
- { DRDA_CP_PKGSNLST, "RDB Result Set Reply Message" },
- { DRDA_CP_NBRROW, "Number of Fetch or Insert Rows" },
- { DRDA_CP_TRGDFTRT, "Target Default Value Return" },
- { DRDA_CP_QRYRELSCR, "Query Relative Scrolling Action" },
- { DRDA_CP_QRYROWNBR, "Query Row Number" },
- { DRDA_CP_QRYRFRTBL, "Query Refresh Answer Set Table" },
- { DRDA_CP_MAXRSLCNT, "Maximum Result Set Count" },
- { DRDA_CP_MAXBLKEXT, "Maximum Number of Extra Blocks" },
- { DRDA_CP_RSLSETFLG, "Result Set Flags" },
- { DRDA_CP_TYPSQLDA, "Type of SQL Descriptor Area" },
- { DRDA_CP_OUTOVROPT, "Output Override Option" },
- { DRDA_CP_RTNEXTDTA, "Return of EXTDTA Option" },
- { DRDA_CP_QRYATTSCR, "Query Attribute for Scrollability" },
- { DRDA_CP_QRYATTUPD, "Query Attribute for Updatability" },
- { DRDA_CP_QRYSCRORN, "Query Scroll Orientation" },
- { DRDA_CP_QRYROWSNS, "Query Row Sensitivity" },
- { DRDA_CP_QRYBLKRST, "Query Block Reset" },
- { DRDA_CP_QRYRTNDTA, "Query Returns Datat" },
- { DRDA_CP_QRYROWSET, "Query Rowset Size" },
- { DRDA_CP_QRYATTSNS, "Query Attribute for Sensitivity" },
- { DRDA_CP_QRYINSID, "Query Instance Identifier" },
- { DRDA_CP_QRYCLSIMP, "Query Close Implicit" },
- { DRDA_CP_QRYCLSRLS, "Query Close Lock Release" },
- { DRDA_CP_QRYOPTVAL, "QRYOPTVAL" },
- { DRDA_CP_DIAGLVL, "SQL Error Diagnostic Level" },
- { DRDA_CP_ACCRDBRM, "Access to RDB Completed" },
- { DRDA_CP_QRYNOPRM, "Query Not Open" },
- { DRDA_CP_RDBNACRM, "RDB Not Accessed" },
- { DRDA_CP_OPNQRYRM, "Open Query Complete" },
- { DRDA_CP_PKGBNARM, "RDB Package Binding Not Active" },
- { DRDA_CP_RDBACCRM, "RDB Currently Accessed" },
- { DRDA_CP_BGNBNDRM, "Begin Bind Error" },
- { DRDA_CP_PKGBPARM, "RDB Package Binding Process Active" },
- { DRDA_CP_DSCINVRM, "Invalid Description" },
- { DRDA_CP_ENDQRYRM, "End of Query" },
- { DRDA_CP_ENDUOWRM, "End Unit of Work Condition" },
- { DRDA_CP_ABNUOWRM, "Abnormal End Unit ofWork Condition" },
- { DRDA_CP_DTAMCHRM, "Data Descriptor Mismatch" },
- { DRDA_CP_QRYPOPRM, "Query Previously Opened" },
- { DRDA_CP_RDBNFNRM, "RDB Not Found" },
- { DRDA_CP_OPNQFLRM, "Open Query Failure" },
- { DRDA_CP_SQLERRRM, "SQL Error Condition" },
- { DRDA_CP_RDBUPDRM, "RDB Update Reply Message" },
- { DRDA_CP_RSLSETRM, "RDB Result Set Reply Message" },
- { DRDA_CP_RDBAFLRM, "RDB Access Failed Reply Message" },
- { DRDA_CP_CMDVLTRM, "Command Violation" },
- { DRDA_CP_CMMRQSRM, "Commitment Request" },
- { DRDA_CP_RDBATHRM, "Not Authorized to RDB" },
- { DRDA_CP_SQLAM, "SQL Application Manager" },
- { DRDA_CP_SQLCARD, "SQL Communications Area Reply Data" },
- { DRDA_CP_SQLCINRD, "SQL Result Set Column Information Reply Data" },
- { DRDA_CP_SQLRSLRD, "SQL Result Set Reply Data" },
- { DRDA_CP_RDB, "Relational Database" },
- { DRDA_CP_FRCFIXROW, "Force Fixed Row Query Protocol" },
- { DRDA_CP_SQLDARD, "SQLDA Reply Data" },
- { DRDA_CP_SQLDTA, "SQL Program Variable Data" },
- { DRDA_CP_SQLDTARD, "SQL Data Reply Data" },
- { DRDA_CP_SQLSTT, "SQL Statement" },
- { DRDA_CP_OUTOVR, "Output Override Descriptor" },
- { DRDA_CP_LMTBLKPRC, "Limited Block Protocol" },
- { DRDA_CP_FIXROWPRC, "Fixed Row Query Protocol" },
- { DRDA_CP_SQLSTTVRB, "SQL Statement Variable Descriptions" },
- { DRDA_CP_QRYDSC, "Query Answer Set Description" },
- { DRDA_CP_QRYDTA, "Query Answer Set Data" },
- { DRDA_CP_SQLATTR, "SQL Statement Attributes" },
- { 0, NULL }
+ { DRDA_CP_DATA, "Data" },
+ { DRDA_CP_CODPNT, "Code Point" },
+ { DRDA_CP_FDODSC, "FD:OCA Data Descriptor" },
+ { DRDA_CP_TYPDEFNAM, "Data Type Definition Name" },
+ { DRDA_CP_TYPDEFOVR, "TYPDEF Overrides" },
+ { DRDA_CP_CODPNTDR, "Code Point Data Representation" },
+ { DRDA_CP_EXCSAT, "Exchange Server Attributes" },
+ { DRDA_CP_SYNCCTL, "Sync Point Control Request" },
+ { DRDA_CP_SYNCRSY, "Sync Point Resync Command" },
+ { DRDA_CP_ACCSEC, "Access Security" },
+ { DRDA_CP_SECCHK, "Security Check" },
+ { DRDA_CP_SYNCLOG, "Sync Point Log" },
+ { DRDA_CP_RSCTYP, "Resource Type Information" },
+ { DRDA_CP_RSNCOD, "Reason Code Information" },
+ { DRDA_CP_RSCNAM, "Resource Name Information" },
+ { DRDA_CP_PRDID, "Product-Specific Identifier" },
+ { DRDA_CP_PRCCNVCD, "Conversation Protocol Error Code" },
+ { DRDA_CP_VRSNAM, "Version Name" },
+ { DRDA_CP_SRVCLSNM, "Server Class Name" },
+ { DRDA_CP_SVRCOD, "Severity Code" },
+ { DRDA_CP_SYNERRCD, "Syntax Error Code" },
+ { DRDA_CP_SRVDGN, "Server Diagnostic Information" },
+ { DRDA_CP_SRVRLSLV, "Server Product Release Level" },
+ { DRDA_CP_SPVNAM, "Supervisor Name" },
+ { DRDA_CP_EXTNAM, "External Name" },
+ { DRDA_CP_SRVNAM, "Server Name" },
+ { DRDA_CP_SECMGRNM, "Security Manager Name" },
+ { DRDA_CP_DEPERRCD, "Manager Dependency Error Code" },
+ { DRDA_CP_CCSIDSBC, "CCSID for Single-Byte Characters" },
+ { DRDA_CP_CCSIDDBC, "CCSID for Double-byte Characters" },
+ { DRDA_CP_CCSIDMBC, "CCSID for Mixed-byte Characters" },
+ { DRDA_CP_USRID, "User ID at the Target System" },
+ { DRDA_CP_PASSWORD, "Password" },
+ { DRDA_CP_SECMEC, "Security Mechanism" },
+ { DRDA_CP_SECCHKCD, "Security Check Code" },
+ { DRDA_CP_SVCERRNO, "Security Service ErrorNumber" },
+ { DRDA_CP_SECTKN, "Security Token" },
+ { DRDA_CP_NEWPASSWORD, "New Password" },
+ { DRDA_CP_MGRLVLRM, "Manager-Level Conflict" },
+ { DRDA_CP_MGRDEPRM, "Manager Dependency Error" },
+ { DRDA_CP_SECCHKRM, "Security Check" },
+ { DRDA_CP_CMDATHRM, "Not Authorized to Command" },
+ { DRDA_CP_AGNPRMRM, "Permanent Agent Error" },
+ { DRDA_CP_RSCLMTRM, "Resource Limits Reached" },
+ { DRDA_CP_PRCCNVRM, "Conversational Protocol Error" },
+ { DRDA_CP_CMDCMPRM, "Command Processing Completed" },
+ { DRDA_CP_SYNTAXRM, "Data Stream Syntax Error" },
+ { DRDA_CP_CMDNSPRM, "Command Not Supported" },
+ { DRDA_CP_PRMNSPRM, "Parameter Not Supported" },
+ { DRDA_CP_VALNSPRM, "Parameter Value Not Supported" },
+ { DRDA_CP_OBJNSPRM, "Object Not Supported" },
+ { DRDA_CP_CMDCHKRM, "Command Check" },
+ { DRDA_CP_TRGNSPRM, "Target Not Supported" },
+ { DRDA_CP_AGENT, "Agent" },
+ { DRDA_CP_MGRLVLLS, "Manager-Level List" },
+ { DRDA_CP_SUPERVISOR, "Supervisor" },
+ { DRDA_CP_SECMGR, "Security Manager" },
+ { DRDA_CP_EXCSATRD, "Server Attributes Reply Data" },
+ { DRDA_CP_CMNAPPC, "LU 6.2 Conversational Communications Manager" },
+ { DRDA_CP_DICTIONARY, "Dictionary" },
+ { DRDA_CP_MGRLVLN, "Manager-Level Number Attribute" },
+ { DRDA_CP_CMNTCPIP, "TCP/IP CommunicationManager" },
+ { DRDA_CP_FDODTA, "FD:OCA Data" },
+ { DRDA_CP_CMNSYNCPT,
+ "SNA LU 6.2 Sync Point Conversational Communications Manager" },
+ { DRDA_CP_ACCSECRD, "Access Security Reply Data" },
+ { DRDA_CP_SYNCPTMGR, "Sync Point Manager" },
+ { DRDA_CP_RSYNCMGR, "ResynchronizationManager" },
+ { DRDA_CP_CCSIDMGR, "CCSID Manager" },
+ { DRDA_CP_MONITOR, "Monitor Events" },
+ { DRDA_CP_MONITORRD, "Monitor Reply Data" },
+ { DRDA_CP_XAMGR, "XAManager" },
+ { DRDA_CP_ACCRDB, "Access RDB" },
+ { DRDA_CP_BGNBND, "Begin Binding a Package to an RDB" },
+ { DRDA_CP_BNDSQLSTT, "Bind SQL Statement to an RDB Package" },
+ { DRDA_CP_CLSQRY, "Close Query" },
+ { DRDA_CP_CNTQRY, "Continue Query" },
+ { DRDA_CP_DRPPKG, "Drop RDB Package" },
+ { DRDA_CP_DSCSQLSTT, "Describe SQL Statement" },
+ { DRDA_CP_ENDBND, "End Binding a Package to an RDB" },
+ { DRDA_CP_EXCSQLIMM, "Execute Immediate SQL Statement" },
+ { DRDA_CP_EXCSQLSTT, "Execute SQL Statement" },
+ { DRDA_CP_OPNQRY, "Open Query" },
+ { DRDA_CP_PRPSQLSTT, "Prepare SQL Statement" },
+ { DRDA_CP_RDBCMM, "RDB Commit Unit of Work" },
+ { DRDA_CP_RDBRLLBCK, "RDB Rollback Unit of Work" },
+ { DRDA_CP_REBIND, "Rebind an Existing RDB Package" },
+ { DRDA_CP_DSCRDBTBL, "Describe RDB Table" },
+ { DRDA_CP_EXCSQLSET, "Set SQL Environment" },
+ { DRDA_CP_DSCERRCD, "Description Error Code" },
+ { DRDA_CP_QRYPRCTYP, "Query Protocol Type" },
+ { DRDA_CP_RDBINTTKN, "RDB Interrupt Token" },
+ { DRDA_CP_PRDDTA, "Product-Specific Data" },
+ { DRDA_CP_RDBCMTOK, "RDB Commit Allowed" },
+ { DRDA_CP_RDBCOLID, "RDB Collection Identifier" },
+ { DRDA_CP_PKGID, "RDB Package Identifier" },
+ { DRDA_CP_PKGCNSTKN, "RDB Package Consistency Token" },
+ { DRDA_CP_RTNSETSTT, "Return SET Statement" },
+ { DRDA_CP_RDBACCCL, "RDB Access Manager Class" },
+ { DRDA_CP_RDBNAM, "Relational Database Name" },
+ { DRDA_CP_OUTEXP, "Output Expected" },
+ { DRDA_CP_PKGNAMCT, "RDB Package Name and Consistency Token" },
+ { DRDA_CP_PKGNAMCSN,
+ "RDB Package Name, Consistency Token, and Section Number" },
+ { DRDA_CP_QRYBLKSZ, "Query Block Size" },
+ { DRDA_CP_UOWDSP, "Unit of Work Disposition" },
+ { DRDA_CP_RTNSQLDA, "Maximum Result Set Count" },
+ { DRDA_CP_RDBALWUPD, "RDB Allow Updates" },
+ { DRDA_CP_SQLCSRHLD, "Hold Cursor Position" },
+ { DRDA_CP_STTSTRDEL, "Statement String Delimiter" },
+ { DRDA_CP_STTDECDEL, "Statement Decimal Delimiter" },
+ { DRDA_CP_PKGDFTCST, "Package Default Character Subtype" },
+ { DRDA_CP_QRYBLKCTL, "Query Block Protocol Control" },
+ { DRDA_CP_CRRTKN, "Correlation Token" },
+ { DRDA_CP_PRCNAM, "Procedure Name" },
+ { DRDA_CP_PKGSNLST, "RDB Result Set Reply Message" },
+ { DRDA_CP_NBRROW, "Number of Fetch or Insert Rows" },
+ { DRDA_CP_TRGDFTRT, "Target Default Value Return" },
+ { DRDA_CP_QRYRELSCR, "Query Relative Scrolling Action" },
+ { DRDA_CP_QRYROWNBR, "Query Row Number" },
+ { DRDA_CP_QRYRFRTBL, "Query Refresh Answer Set Table" },
+ { DRDA_CP_MAXRSLCNT, "Maximum Result Set Count" },
+ { DRDA_CP_MAXBLKEXT, "Maximum Number of Extra Blocks" },
+ { DRDA_CP_RSLSETFLG, "Result Set Flags" },
+ { DRDA_CP_TYPSQLDA, "Type of SQL Descriptor Area" },
+ { DRDA_CP_OUTOVROPT, "Output Override Option" },
+ { DRDA_CP_RTNEXTDTA, "Return of EXTDTA Option" },
+ { DRDA_CP_QRYATTSCR, "Query Attribute for Scrollability" },
+ { DRDA_CP_QRYATTUPD, "Query Attribute for Updatability" },
+ { DRDA_CP_QRYSCRORN, "Query Scroll Orientation" },
+ { DRDA_CP_QRYROWSNS, "Query Row Sensitivity" },
+ { DRDA_CP_QRYBLKRST, "Query Block Reset" },
+ { DRDA_CP_QRYRTNDTA, "Query Returns Datat" },
+ { DRDA_CP_QRYROWSET, "Query Rowset Size" },
+ { DRDA_CP_QRYATTSNS, "Query Attribute for Sensitivity" },
+ { DRDA_CP_QRYINSID, "Query Instance Identifier" },
+ { DRDA_CP_QRYCLSIMP, "Query Close Implicit" },
+ { DRDA_CP_QRYCLSRLS, "Query Close Lock Release" },
+ { DRDA_CP_QRYOPTVAL, "QRYOPTVAL" },
+ { DRDA_CP_DIAGLVL, "SQL Error Diagnostic Level" },
+ { DRDA_CP_ACCRDBRM, "Access to RDB Completed" },
+ { DRDA_CP_QRYNOPRM, "Query Not Open" },
+ { DRDA_CP_RDBNACRM, "RDB Not Accessed" },
+ { DRDA_CP_OPNQRYRM, "Open Query Complete" },
+ { DRDA_CP_PKGBNARM, "RDB Package Binding Not Active" },
+ { DRDA_CP_RDBACCRM, "RDB Currently Accessed" },
+ { DRDA_CP_BGNBNDRM, "Begin Bind Error" },
+ { DRDA_CP_PKGBPARM, "RDB Package Binding Process Active" },
+ { DRDA_CP_DSCINVRM, "Invalid Description" },
+ { DRDA_CP_ENDQRYRM, "End of Query" },
+ { DRDA_CP_ENDUOWRM, "End Unit of Work Condition" },
+ { DRDA_CP_ABNUOWRM, "Abnormal End Unit ofWork Condition" },
+ { DRDA_CP_DTAMCHRM, "Data Descriptor Mismatch" },
+ { DRDA_CP_QRYPOPRM, "Query Previously Opened" },
+ { DRDA_CP_RDBNFNRM, "RDB Not Found" },
+ { DRDA_CP_OPNQFLRM, "Open Query Failure" },
+ { DRDA_CP_SQLERRRM, "SQL Error Condition" },
+ { DRDA_CP_RDBUPDRM, "RDB Update Reply Message" },
+ { DRDA_CP_RSLSETRM, "RDB Result Set Reply Message" },
+ { DRDA_CP_RDBAFLRM, "RDB Access Failed Reply Message" },
+ { DRDA_CP_CMDVLTRM, "Command Violation" },
+ { DRDA_CP_CMMRQSRM, "Commitment Request" },
+ { DRDA_CP_RDBATHRM, "Not Authorized to RDB" },
+ { DRDA_CP_SQLAM, "SQL Application Manager" },
+ { DRDA_CP_SQLCARD, "SQL Communications Area Reply Data" },
+ { DRDA_CP_SQLCINRD, "SQL Result Set Column Information Reply Data" },
+ { DRDA_CP_SQLRSLRD, "SQL Result Set Reply Data" },
+ { DRDA_CP_RDB, "Relational Database" },
+ { DRDA_CP_FRCFIXROW, "Force Fixed Row Query Protocol" },
+ { DRDA_CP_SQLDARD, "SQLDA Reply Data" },
+ { DRDA_CP_SQLDTA, "SQL Program Variable Data" },
+ { DRDA_CP_SQLDTARD, "SQL Data Reply Data" },
+ { DRDA_CP_SQLSTT, "SQL Statement" },
+ { DRDA_CP_OUTOVR, "Output Override Descriptor" },
+ { DRDA_CP_LMTBLKPRC, "Limited Block Protocol" },
+ { DRDA_CP_FIXROWPRC, "Fixed Row Query Protocol" },
+ { DRDA_CP_SQLSTTVRB, "SQL Statement Variable Descriptions" },
+ { DRDA_CP_QRYDSC, "Query Answer Set Description" },
+ { DRDA_CP_QRYDTA, "Query Answer Set Data" },
+ { DRDA_CP_SQLATTR, "SQL Statement Attributes" },
+ { 0, NULL }
};
-
static value_string_ext drda_opcode_vals_ext = VALUE_STRING_EXT_INIT(drda_opcode_vals);
static const value_string drda_opcode_abbr[] = {
- { DRDA_CP_DATA, "DATA" },
- { DRDA_CP_CODPNT, "CODPNT" },
- { DRDA_CP_FDODSC, "FDODSC" },
- { DRDA_CP_TYPDEFNAM, "TYPDEFNAM" },
- { DRDA_CP_TYPDEFOVR, "TYPDEFOVR" },
- { DRDA_CP_CODPNTDR, "CODPNTDR" },
- { DRDA_CP_EXCSAT, "EXCSAT" },
- { DRDA_CP_SYNCCTL, "SYNCCTL" },
- { DRDA_CP_SYNCRSY, "SYNCRSY" },
- { DRDA_CP_ACCSEC, "ACCSEC" },
- { DRDA_CP_SECCHK, "SECCHK" },
- { DRDA_CP_SYNCLOG, "SYNCLOG" },
- { DRDA_CP_RSCTYP, "RSCTYP" },
- { DRDA_CP_RSNCOD, "RSNCOD" },
- { DRDA_CP_RSCNAM, "RSCNAM" },
- { DRDA_CP_PRDID, "PRDID" },
- { DRDA_CP_PRCCNVCD, "PRCCNVCD" },
- { DRDA_CP_VRSNAM, "VRSNAM" },
- { DRDA_CP_SRVCLSNM, "SRVCLSNM" },
- { DRDA_CP_SVRCOD, "SVRCOD" },
- { DRDA_CP_SYNERRCD, "SYNERRCD" },
- { DRDA_CP_SRVDGN, "SRVDGN" },
- { DRDA_CP_SRVRLSLV, "SRVRLSLV" },
- { DRDA_CP_SPVNAM, "SPVNAM" },
- { DRDA_CP_EXTNAM, "EXTNAM" },
- { DRDA_CP_SRVNAM, "SRVNAM" },
- { DRDA_CP_SECMGRNM, "SECMGRNM" },
- { DRDA_CP_DEPERRCD, "DEPERRCD" },
- { DRDA_CP_CCSIDSBC, "CCSIDSBC" },
- { DRDA_CP_CCSIDDBC, "CCSIDDBC" },
- { DRDA_CP_CCSIDMBC, "CCSIDMBC" },
- { DRDA_CP_USRID, "USRID" },
- { DRDA_CP_PASSWORD, "PASSWORD" },
- { DRDA_CP_SECMEC, "SECMEC" },
- { DRDA_CP_SECCHKCD, "SECCHKCD" },
- { DRDA_CP_SVCERRNO, "SVCERRNO" },
- { DRDA_CP_SECTKN, "SECTKN" },
- { DRDA_CP_NEWPASSWORD, "NEWPASSWORD" },
- { DRDA_CP_MGRLVLRM, "MGRLVLRM" },
- { DRDA_CP_MGRDEPRM, "MGRDEPRM" },
- { DRDA_CP_SECCHKRM, "SECCHKRM" },
- { DRDA_CP_CMDATHRM, "CMDATHRM" },
- { DRDA_CP_AGNPRMRM, "AGNPRMRM" },
- { DRDA_CP_RSCLMTRM, "RSCLMTRM" },
- { DRDA_CP_PRCCNVRM, "PRCCNVRM" },
- { DRDA_CP_CMDCMPRM, "CMDCMPRM" },
- { DRDA_CP_SYNTAXRM, "SYNTAXRM" },
- { DRDA_CP_CMDNSPRM, "CMDNSPRM" },
- { DRDA_CP_PRMNSPRM, "PRMNSPRM" },
- { DRDA_CP_VALNSPRM, "VALNSPRM" },
- { DRDA_CP_OBJNSPRM, "OBJNSPRM" },
- { DRDA_CP_CMDCHKRM, "CMDCHKRM" },
- { DRDA_CP_TRGNSPRM, "TRGNSPRM" },
- { DRDA_CP_AGENT, "AGENT" },
- { DRDA_CP_MGRLVLLS, "MGRLVLLS" },
- { DRDA_CP_SUPERVISOR, "SUPERVISOR" },
- { DRDA_CP_SECMGR, "SECMGR" },
- { DRDA_CP_EXCSATRD, "EXCSATRD" },
- { DRDA_CP_CMNAPPC, "CMNAPPC" },
- { DRDA_CP_DICTIONARY, "DICTIONARY" },
- { DRDA_CP_MGRLVLN, "MGRLVLN" },
- { DRDA_CP_CMNTCPIP, "CMNTCPIP" },
- { DRDA_CP_FDODTA, "FDODTA" },
- { DRDA_CP_CMNSYNCPT, "CMNSYNCPT" },
- { DRDA_CP_ACCSECRD, "ACCSECRD" },
- { DRDA_CP_SYNCPTMGR, "SYNCPTMGR" },
- { DRDA_CP_RSYNCMGR, "RSYNCMGR" },
- { DRDA_CP_CCSIDMGR, "CCSIDMGR" },
- { DRDA_CP_MONITOR, "MONITOR" },
- { DRDA_CP_MONITORRD, "MONITORRD" },
- { DRDA_CP_XAMGR, "XAMGR" },
- { DRDA_CP_ACCRDB, "ACCRDB" },
- { DRDA_CP_BGNBND, "BGNBND" },
- { DRDA_CP_BNDSQLSTT, "BNDSQLSTT" },
- { DRDA_CP_CLSQRY, "CLSQRY" },
- { DRDA_CP_CNTQRY, "CNTQRY" },
- { DRDA_CP_DRPPKG, "DRPPKG" },
- { DRDA_CP_DSCSQLSTT, "DSCSQLSTT" },
- { DRDA_CP_ENDBND, "ENDBND" },
- { DRDA_CP_EXCSQLIMM, "EXCSQLIMM" },
- { DRDA_CP_EXCSQLSTT, "EXCSQLSTT" },
- { DRDA_CP_OPNQRY, "OPNQRY" },
- { DRDA_CP_PRPSQLSTT, "PRPSQLSTT" },
- { DRDA_CP_RDBCMM, "RDBCMM" },
- { DRDA_CP_RDBRLLBCK, "RDBRLLBCK" },
- { DRDA_CP_REBIND, "REBIND" },
- { DRDA_CP_DSCRDBTBL, "DSCRDBTBL" },
- { DRDA_CP_EXCSQLSET, "EXCSQLSET" },
- { DRDA_CP_DSCERRCD, "DSCERRCD" },
- { DRDA_CP_QRYPRCTYP, "QRYPRCTYP" },
- { DRDA_CP_RDBINTTKN, "RDBINTTKN" },
- { DRDA_CP_PRDDTA, "PRDDTA" },
- { DRDA_CP_RDBCMTOK, "RDBCMTOK" },
- { DRDA_CP_RDBCOLID, "RDBCOLID" },
- { DRDA_CP_PKGID, "PKGID" },
- { DRDA_CP_PKGCNSTKN, "PKGCNSTKN" },
- { DRDA_CP_RTNSETSTT, "RTNSETSTT" },
- { DRDA_CP_RDBACCCL, "RDBACCCL" },
- { DRDA_CP_RDBNAM, "RDBNAM" },
- { DRDA_CP_OUTEXP, "OUTEXP" },
- { DRDA_CP_PKGNAMCT, "PKGNAMCT" },
- { DRDA_CP_PKGNAMCSN, "PKGNAMCSN" },
- { DRDA_CP_QRYBLKSZ, "QRYBLKSZ" },
- { DRDA_CP_UOWDSP, "UOWDSP" },
- { DRDA_CP_RTNSQLDA, "RTNSQLDA" },
- { DRDA_CP_RDBALWUPD, "RDBALWUPD" },
- { DRDA_CP_SQLCSRHLD, "SQLCSRHLD" },
- { DRDA_CP_STTSTRDEL, "STTSTRDEL" },
- { DRDA_CP_STTDECDEL, "STTDECDEL" },
- { DRDA_CP_PKGDFTCST, "PKGDFTCST" },
- { DRDA_CP_QRYBLKCTL, "QRYBLKCTL" },
- { DRDA_CP_CRRTKN, "CRRTKN" },
- { DRDA_CP_PRCNAM, "PRCNAM" },
- { DRDA_CP_PKGSNLST, "PKGSNLST" },
- { DRDA_CP_NBRROW, "NBRROW" },
- { DRDA_CP_TRGDFTRT, "TRGDFTRT" },
- { DRDA_CP_QRYRELSCR, "QRYRELSCR" },
- { DRDA_CP_QRYROWNBR, "QRYROWNBR" },
- { DRDA_CP_QRYRFRTBL, "QRYRFRTBL" },
- { DRDA_CP_MAXRSLCNT, "MAXRSLCNT" },
- { DRDA_CP_MAXBLKEXT, "MAXBLKEXT" },
- { DRDA_CP_RSLSETFLG, "RSLSETFLG" },
- { DRDA_CP_TYPSQLDA, "TYPSQLDA" },
- { DRDA_CP_OUTOVROPT, "OUTOVROPT" },
- { DRDA_CP_RTNEXTDTA, "RTNEXTDTA" },
- { DRDA_CP_QRYATTSCR, "QRYATTSCR" },
- { DRDA_CP_QRYATTUPD, "QRYATTUPD" },
- { DRDA_CP_QRYSCRORN, "QRYSCRORN" },
- { DRDA_CP_QRYROWSNS, "QRYROWSNS" },
- { DRDA_CP_QRYBLKRST, "QRYBLKRST" },
- { DRDA_CP_QRYRTNDTA, "QRYRTNDTA" },
- { DRDA_CP_QRYROWSET, "QRYROWSET" },
- { DRDA_CP_QRYATTSNS, "QRYATTSNS" },
- { DRDA_CP_QRYINSID, "QRYINSID" },
- { DRDA_CP_QRYCLSIMP, "QRYCLSIMP" },
- { DRDA_CP_QRYCLSRLS, "QRYCLSRLS" },
- { DRDA_CP_QRYOPTVAL, "QRYOPTVAL" },
- { DRDA_CP_DIAGLVL, "DIAGLVL" },
- { DRDA_CP_ACCRDBRM, "ACCRDBRM" },
- { DRDA_CP_QRYNOPRM, "QRYNOPRM" },
- { DRDA_CP_RDBNACRM, "RDBNACRM" },
- { DRDA_CP_OPNQRYRM, "OPNQRYRM" },
- { DRDA_CP_PKGBNARM, "PKGBNARM" },
- { DRDA_CP_RDBACCRM, "RDBACCRM" },
- { DRDA_CP_BGNBNDRM, "BGNBNDRM" },
- { DRDA_CP_PKGBPARM, "PKGBPARM" },
- { DRDA_CP_DSCINVRM, "DSCINVRM" },
- { DRDA_CP_ENDQRYRM, "ENDQRYRM" },
- { DRDA_CP_ENDUOWRM, "ENDUOWRM" },
- { DRDA_CP_ABNUOWRM, "ABNUOWRM" },
- { DRDA_CP_DTAMCHRM, "DTAMCHRM" },
- { DRDA_CP_QRYPOPRM, "QRYPOPRM" },
- { DRDA_CP_RDBNFNRM, "RDBNFNRM" },
- { DRDA_CP_OPNQFLRM, "OPNQFLRM" },
- { DRDA_CP_SQLERRRM, "SQLERRRM" },
- { DRDA_CP_RDBUPDRM, "RDBUPDRM" },
- { DRDA_CP_RSLSETRM, "RSLSETRM" },
- { DRDA_CP_RDBAFLRM, "RDBAFLRM" },
- { DRDA_CP_CMDVLTRM, "CMDVLTRM" },
- { DRDA_CP_CMMRQSRM, "CMMRQSRM" },
- { DRDA_CP_RDBATHRM, "RDBATHRM" },
- { DRDA_CP_SQLAM, "SQLAM" },
- { DRDA_CP_SQLCARD, "SQLCARD" },
- { DRDA_CP_SQLCINRD, "SQLCINRD" },
- { DRDA_CP_SQLRSLRD, "SQLRSLRD" },
- { DRDA_CP_RDB, "RDB" },
- { DRDA_CP_FRCFIXROW, "FRCFIXROW" },
- { DRDA_CP_SQLDARD, "SQLDARD" },
- { DRDA_CP_SQLDTA, "SQLDTA" },
- { DRDA_CP_SQLDTARD, "SQLDTARD" },
- { DRDA_CP_SQLSTT, "SQLSTT" },
- { DRDA_CP_OUTOVR, "OUTOVR" },
- { DRDA_CP_LMTBLKPRC, "LMTBLKPRC" },
- { DRDA_CP_FIXROWPRC, "FIXROWPRC" },
- { DRDA_CP_SQLSTTVRB, "SQLSTTVRB" },
- { DRDA_CP_QRYDSC, "QRYDSC" },
- { DRDA_CP_QRYDTA, "QRYDTA" },
- { DRDA_CP_SQLATTR, "SQLATTR" },
- { 0, NULL }
+ { DRDA_CP_DATA, "DATA" },
+ { DRDA_CP_CODPNT, "CODPNT" },
+ { DRDA_CP_FDODSC, "FDODSC" },
+ { DRDA_CP_TYPDEFNAM, "TYPDEFNAM" },
+ { DRDA_CP_TYPDEFOVR, "TYPDEFOVR" },
+ { DRDA_CP_CODPNTDR, "CODPNTDR" },
+ { DRDA_CP_EXCSAT, "EXCSAT" },
+ { DRDA_CP_SYNCCTL, "SYNCCTL" },
+ { DRDA_CP_SYNCRSY, "SYNCRSY" },
+ { DRDA_CP_ACCSEC, "ACCSEC" },
+ { DRDA_CP_SECCHK, "SECCHK" },
+ { DRDA_CP_SYNCLOG, "SYNCLOG" },
+ { DRDA_CP_RSCTYP, "RSCTYP" },
+ { DRDA_CP_RSNCOD, "RSNCOD" },
+ { DRDA_CP_RSCNAM, "RSCNAM" },
+ { DRDA_CP_PRDID, "PRDID" },
+ { DRDA_CP_PRCCNVCD, "PRCCNVCD" },
+ { DRDA_CP_VRSNAM, "VRSNAM" },
+ { DRDA_CP_SRVCLSNM, "SRVCLSNM" },
+ { DRDA_CP_SVRCOD, "SVRCOD" },
+ { DRDA_CP_SYNERRCD, "SYNERRCD" },
+ { DRDA_CP_SRVDGN, "SRVDGN" },
+ { DRDA_CP_SRVRLSLV, "SRVRLSLV" },
+ { DRDA_CP_SPVNAM, "SPVNAM" },
+ { DRDA_CP_EXTNAM, "EXTNAM" },
+ { DRDA_CP_SRVNAM, "SRVNAM" },
+ { DRDA_CP_SECMGRNM, "SECMGRNM" },
+ { DRDA_CP_DEPERRCD, "DEPERRCD" },
+ { DRDA_CP_CCSIDSBC, "CCSIDSBC" },
+ { DRDA_CP_CCSIDDBC, "CCSIDDBC" },
+ { DRDA_CP_CCSIDMBC, "CCSIDMBC" },
+ { DRDA_CP_USRID, "USRID" },
+ { DRDA_CP_PASSWORD, "PASSWORD" },
+ { DRDA_CP_SECMEC, "SECMEC" },
+ { DRDA_CP_SECCHKCD, "SECCHKCD" },
+ { DRDA_CP_SVCERRNO, "SVCERRNO" },
+ { DRDA_CP_SECTKN, "SECTKN" },
+ { DRDA_CP_NEWPASSWORD, "NEWPASSWORD" },
+ { DRDA_CP_MGRLVLRM, "MGRLVLRM" },
+ { DRDA_CP_MGRDEPRM, "MGRDEPRM" },
+ { DRDA_CP_SECCHKRM, "SECCHKRM" },
+ { DRDA_CP_CMDATHRM, "CMDATHRM" },
+ { DRDA_CP_AGNPRMRM, "AGNPRMRM" },
+ { DRDA_CP_RSCLMTRM, "RSCLMTRM" },
+ { DRDA_CP_PRCCNVRM, "PRCCNVRM" },
+ { DRDA_CP_CMDCMPRM, "CMDCMPRM" },
+ { DRDA_CP_SYNTAXRM, "SYNTAXRM" },
+ { DRDA_CP_CMDNSPRM, "CMDNSPRM" },
+ { DRDA_CP_PRMNSPRM, "PRMNSPRM" },
+ { DRDA_CP_VALNSPRM, "VALNSPRM" },
+ { DRDA_CP_OBJNSPRM, "OBJNSPRM" },
+ { DRDA_CP_CMDCHKRM, "CMDCHKRM" },
+ { DRDA_CP_TRGNSPRM, "TRGNSPRM" },
+ { DRDA_CP_AGENT, "AGENT" },
+ { DRDA_CP_MGRLVLLS, "MGRLVLLS" },
+ { DRDA_CP_SUPERVISOR, "SUPERVISOR" },
+ { DRDA_CP_SECMGR, "SECMGR" },
+ { DRDA_CP_EXCSATRD, "EXCSATRD" },
+ { DRDA_CP_CMNAPPC, "CMNAPPC" },
+ { DRDA_CP_DICTIONARY, "DICTIONARY" },
+ { DRDA_CP_MGRLVLN, "MGRLVLN" },
+ { DRDA_CP_CMNTCPIP, "CMNTCPIP" },
+ { DRDA_CP_FDODTA, "FDODTA" },
+ { DRDA_CP_CMNSYNCPT, "CMNSYNCPT" },
+ { DRDA_CP_ACCSECRD, "ACCSECRD" },
+ { DRDA_CP_SYNCPTMGR, "SYNCPTMGR" },
+ { DRDA_CP_RSYNCMGR, "RSYNCMGR" },
+ { DRDA_CP_CCSIDMGR, "CCSIDMGR" },
+ { DRDA_CP_MONITOR, "MONITOR" },
+ { DRDA_CP_MONITORRD, "MONITORRD" },
+ { DRDA_CP_XAMGR, "XAMGR" },
+ { DRDA_CP_ACCRDB, "ACCRDB" },
+ { DRDA_CP_BGNBND, "BGNBND" },
+ { DRDA_CP_BNDSQLSTT, "BNDSQLSTT" },
+ { DRDA_CP_CLSQRY, "CLSQRY" },
+ { DRDA_CP_CNTQRY, "CNTQRY" },
+ { DRDA_CP_DRPPKG, "DRPPKG" },
+ { DRDA_CP_DSCSQLSTT, "DSCSQLSTT" },
+ { DRDA_CP_ENDBND, "ENDBND" },
+ { DRDA_CP_EXCSQLIMM, "EXCSQLIMM" },
+ { DRDA_CP_EXCSQLSTT, "EXCSQLSTT" },
+ { DRDA_CP_OPNQRY, "OPNQRY" },
+ { DRDA_CP_PRPSQLSTT, "PRPSQLSTT" },
+ { DRDA_CP_RDBCMM, "RDBCMM" },
+ { DRDA_CP_RDBRLLBCK, "RDBRLLBCK" },
+ { DRDA_CP_REBIND, "REBIND" },
+ { DRDA_CP_DSCRDBTBL, "DSCRDBTBL" },
+ { DRDA_CP_EXCSQLSET, "EXCSQLSET" },
+ { DRDA_CP_DSCERRCD, "DSCERRCD" },
+ { DRDA_CP_QRYPRCTYP, "QRYPRCTYP" },
+ { DRDA_CP_RDBINTTKN, "RDBINTTKN" },
+ { DRDA_CP_PRDDTA, "PRDDTA" },
+ { DRDA_CP_RDBCMTOK, "RDBCMTOK" },
+ { DRDA_CP_RDBCOLID, "RDBCOLID" },
+ { DRDA_CP_PKGID, "PKGID" },
+ { DRDA_CP_PKGCNSTKN, "PKGCNSTKN" },
+ { DRDA_CP_RTNSETSTT, "RTNSETSTT" },
+ { DRDA_CP_RDBACCCL, "RDBACCCL" },
+ { DRDA_CP_RDBNAM, "RDBNAM" },
+ { DRDA_CP_OUTEXP, "OUTEXP" },
+ { DRDA_CP_PKGNAMCT, "PKGNAMCT" },
+ { DRDA_CP_PKGNAMCSN, "PKGNAMCSN" },
+ { DRDA_CP_QRYBLKSZ, "QRYBLKSZ" },
+ { DRDA_CP_UOWDSP, "UOWDSP" },
+ { DRDA_CP_RTNSQLDA, "RTNSQLDA" },
+ { DRDA_CP_RDBALWUPD, "RDBALWUPD" },
+ { DRDA_CP_SQLCSRHLD, "SQLCSRHLD" },
+ { DRDA_CP_STTSTRDEL, "STTSTRDEL" },
+ { DRDA_CP_STTDECDEL, "STTDECDEL" },
+ { DRDA_CP_PKGDFTCST, "PKGDFTCST" },
+ { DRDA_CP_QRYBLKCTL, "QRYBLKCTL" },
+ { DRDA_CP_CRRTKN, "CRRTKN" },
+ { DRDA_CP_PRCNAM, "PRCNAM" },
+ { DRDA_CP_PKGSNLST, "PKGSNLST" },
+ { DRDA_CP_NBRROW, "NBRROW" },
+ { DRDA_CP_TRGDFTRT, "TRGDFTRT" },
+ { DRDA_CP_QRYRELSCR, "QRYRELSCR" },
+ { DRDA_CP_QRYROWNBR, "QRYROWNBR" },
+ { DRDA_CP_QRYRFRTBL, "QRYRFRTBL" },
+ { DRDA_CP_MAXRSLCNT, "MAXRSLCNT" },
+ { DRDA_CP_MAXBLKEXT, "MAXBLKEXT" },
+ { DRDA_CP_RSLSETFLG, "RSLSETFLG" },
+ { DRDA_CP_TYPSQLDA, "TYPSQLDA" },
+ { DRDA_CP_OUTOVROPT, "OUTOVROPT" },
+ { DRDA_CP_RTNEXTDTA, "RTNEXTDTA" },
+ { DRDA_CP_QRYATTSCR, "QRYATTSCR" },
+ { DRDA_CP_QRYATTUPD, "QRYATTUPD" },
+ { DRDA_CP_QRYSCRORN, "QRYSCRORN" },
+ { DRDA_CP_QRYROWSNS, "QRYROWSNS" },
+ { DRDA_CP_QRYBLKRST, "QRYBLKRST" },
+ { DRDA_CP_QRYRTNDTA, "QRYRTNDTA" },
+ { DRDA_CP_QRYROWSET, "QRYROWSET" },
+ { DRDA_CP_QRYATTSNS, "QRYATTSNS" },
+ { DRDA_CP_QRYINSID, "QRYINSID" },
+ { DRDA_CP_QRYCLSIMP, "QRYCLSIMP" },
+ { DRDA_CP_QRYCLSRLS, "QRYCLSRLS" },
+ { DRDA_CP_QRYOPTVAL, "QRYOPTVAL" },
+ { DRDA_CP_DIAGLVL, "DIAGLVL" },
+ { DRDA_CP_ACCRDBRM, "ACCRDBRM" },
+ { DRDA_CP_QRYNOPRM, "QRYNOPRM" },
+ { DRDA_CP_RDBNACRM, "RDBNACRM" },
+ { DRDA_CP_OPNQRYRM, "OPNQRYRM" },
+ { DRDA_CP_PKGBNARM, "PKGBNARM" },
+ { DRDA_CP_RDBACCRM, "RDBACCRM" },
+ { DRDA_CP_BGNBNDRM, "BGNBNDRM" },
+ { DRDA_CP_PKGBPARM, "PKGBPARM" },
+ { DRDA_CP_DSCINVRM, "DSCINVRM" },
+ { DRDA_CP_ENDQRYRM, "ENDQRYRM" },
+ { DRDA_CP_ENDUOWRM, "ENDUOWRM" },
+ { DRDA_CP_ABNUOWRM, "ABNUOWRM" },
+ { DRDA_CP_DTAMCHRM, "DTAMCHRM" },
+ { DRDA_CP_QRYPOPRM, "QRYPOPRM" },
+ { DRDA_CP_RDBNFNRM, "RDBNFNRM" },
+ { DRDA_CP_OPNQFLRM, "OPNQFLRM" },
+ { DRDA_CP_SQLERRRM, "SQLERRRM" },
+ { DRDA_CP_RDBUPDRM, "RDBUPDRM" },
+ { DRDA_CP_RSLSETRM, "RSLSETRM" },
+ { DRDA_CP_RDBAFLRM, "RDBAFLRM" },
+ { DRDA_CP_CMDVLTRM, "CMDVLTRM" },
+ { DRDA_CP_CMMRQSRM, "CMMRQSRM" },
+ { DRDA_CP_RDBATHRM, "RDBATHRM" },
+ { DRDA_CP_SQLAM, "SQLAM" },
+ { DRDA_CP_SQLCARD, "SQLCARD" },
+ { DRDA_CP_SQLCINRD, "SQLCINRD" },
+ { DRDA_CP_SQLRSLRD, "SQLRSLRD" },
+ { DRDA_CP_RDB, "RDB" },
+ { DRDA_CP_FRCFIXROW, "FRCFIXROW" },
+ { DRDA_CP_SQLDARD, "SQLDARD" },
+ { DRDA_CP_SQLDTA, "SQLDTA" },
+ { DRDA_CP_SQLDTARD, "SQLDTARD" },
+ { DRDA_CP_SQLSTT, "SQLSTT" },
+ { DRDA_CP_OUTOVR, "OUTOVR" },
+ { DRDA_CP_LMTBLKPRC, "LMTBLKPRC" },
+ { DRDA_CP_FIXROWPRC, "FIXROWPRC" },
+ { DRDA_CP_SQLSTTVRB, "SQLSTTVRB" },
+ { DRDA_CP_QRYDSC, "QRYDSC" },
+ { DRDA_CP_QRYDTA, "QRYDTA" },
+ { DRDA_CP_SQLATTR, "SQLATTR" },
+ { 0, NULL }
};
-
static value_string_ext drda_opcode_abbr_ext = VALUE_STRING_EXT_INIT(drda_opcode_abbr);
static const value_string drda_dsstyp_abbr[] = {
- { DRDA_DSSFMT_RQSDSS, "RQSDSS" },
- { DRDA_DSSFMT_RPYDSS, "RPYDSS" },
- { DRDA_DSSFMT_OBJDSS, "OBJDSS" },
- { DRDA_DSSFMT_CMNDSS, "CMNDSS" },
- { DRDA_DSSFMT_NORPYDSS, "NORPYDSS" },
- { 0, NULL }
+ { DRDA_DSSFMT_RQSDSS, "RQSDSS" },
+ { DRDA_DSSFMT_RPYDSS, "RPYDSS" },
+ { DRDA_DSSFMT_OBJDSS, "OBJDSS" },
+ { DRDA_DSSFMT_CMNDSS, "CMNDSS" },
+ { DRDA_DSSFMT_NORPYDSS, "NORPYDSS" },
+ { 0, NULL }
};
static guint iPreviousFrameNumber = 0;
@@ -666,245 +664,283 @@ static guint iPreviousFrameNumber = 0;
static void
drda_init(void)
{
- iPreviousFrameNumber = 0;
+ iPreviousFrameNumber = 0;
}
static void
dissect_drda(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- gint offset = 0;
-
- guint16 iCommand;
- guint16 iLength;
- guint16 iCommandEnd = 0;
-
- guint8 iFormatFlags;
- guint8 iDSSType;
- guint8 iDSSFlags;
-
- guint16 iParameterCP;
- gint iLengthParam;
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "DRDA");
- /* This is a trick to know whether this is the first PDU in this packet or not */
- if (iPreviousFrameNumber != pinfo->fd->num)
- col_clear(pinfo->cinfo, COL_INFO);
- else
- col_append_str(pinfo->cinfo, COL_INFO, " | ");
-
- iPreviousFrameNumber = pinfo->fd->num;
- /* There may be multiple DRDA commands in one frame */
- while ((guint) (offset + 10) <= tvb_length(tvb))
- {
- iCommand = tvb_get_ntohs(tvb, offset + 8);
- iLength = tvb_get_ntohs(tvb, offset + 0);
- /* iCommandEnd is the length of the packet up to the end of the current command */
- iCommandEnd += iLength;
-
- if (offset > 0)
- col_append_str(pinfo->cinfo, COL_INFO, " | ");
- col_append_str(pinfo->cinfo, COL_INFO, val_to_str_ext(iCommand, &drda_opcode_abbr_ext, "Unknown (0x%02x)"));
-
- if (tree)
- {
- proto_tree *drda_tree;
- proto_tree *drdaroot_tree;
- proto_tree *drda_tree_sub;
- proto_item *ti;
-
- ti = proto_tree_add_item(tree, proto_drda, tvb, offset, -1, ENC_NA);
- proto_item_append_text(ti, " (%s)", val_to_str_ext(iCommand, &drda_opcode_vals_ext, "Unknown (0x%02x)"));
- drdaroot_tree = proto_item_add_subtree(ti, ett_drda);
-
- ti = proto_tree_add_text(drdaroot_tree, tvb, offset, 10, DRDA_TEXT_DDM);
- proto_item_append_text(ti, " (%s)", val_to_str_ext(iCommand, &drda_opcode_abbr_ext, "Unknown (0x%02x)"));
- drda_tree = proto_item_add_subtree(ti, ett_drda_ddm);
-
- proto_tree_add_item(drda_tree, hf_drda_ddm_length, tvb, offset + 0, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(drda_tree, hf_drda_ddm_magic, tvb, offset + 2, 1, ENC_BIG_ENDIAN);
-
- iFormatFlags = tvb_get_guint8(tvb, offset + 3);
- iDSSType = iFormatFlags & 0x0F;
- iDSSFlags = iFormatFlags >> 4;
-
- ti = proto_tree_add_item(drda_tree, hf_drda_ddm_format, tvb, offset + 3, 1, ENC_BIG_ENDIAN);
- drda_tree_sub = proto_item_add_subtree(ti, ett_drda_ddm_format);
-
- proto_tree_add_boolean(drda_tree_sub, hf_drda_ddm_fmt_reserved, tvb, offset + 3, 1, iDSSFlags);
- proto_tree_add_boolean(drda_tree_sub, hf_drda_ddm_fmt_chained, tvb, offset + 3, 1, iDSSFlags);
- proto_tree_add_boolean(drda_tree_sub, hf_drda_ddm_fmt_errcont, tvb, offset + 3, 1, iDSSFlags);
- proto_tree_add_boolean(drda_tree_sub, hf_drda_ddm_fmt_samecorr, tvb, offset + 3, 1, iDSSFlags);
- proto_tree_add_uint(drda_tree_sub, hf_drda_ddm_fmt_dsstyp, tvb, offset + 3, 1, iDSSType);
-
- proto_tree_add_item(drda_tree, hf_drda_ddm_rc, tvb, offset + 4, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(drda_tree, hf_drda_ddm_length2, tvb, offset + 6, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(drda_tree, hf_drda_ddm_codepoint, tvb, offset + 8, 2, ENC_BIG_ENDIAN);
-
- /* The number of attributes is variable */
- for (offset += 10; offset < iCommandEnd; )
- {
- if (tvb_length_remaining(tvb, offset) >= 2)
- {
- iLengthParam = tvb_get_ntohs(tvb, offset + 0);
- if (iLengthParam == 0 || iLengthParam == 1) iLengthParam = iLength - 10;
- if (tvb_length_remaining(tvb, offset) >= iLengthParam)
- {
- iParameterCP = tvb_get_ntohs(tvb, offset + 2);
- ti = proto_tree_add_text(drdaroot_tree, tvb, offset, iLengthParam, DRDA_TEXT_PARAM);
- proto_item_append_text(ti, " (%s)", val_to_str_ext(iParameterCP, &drda_opcode_vals_ext, "Unknown (0x%02x)"));
- drda_tree_sub = proto_item_add_subtree(ti, ett_drda_param);
- proto_tree_add_item(drda_tree_sub, hf_drda_param_length, tvb, offset, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(drda_tree_sub, hf_drda_param_codepoint, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(drda_tree_sub, hf_drda_param_data, tvb, offset + 4, iLengthParam - 4, ENC_UTF_8|ENC_NA);
- proto_tree_add_item(drda_tree_sub, hf_drda_param_data_ebcdic, tvb, offset + 4, iLengthParam - 4, ENC_EBCDIC|ENC_NA);
- if (iCommand == DRDA_CP_SQLSTT)
- {
- /* Extract SQL statement from packet */
- tvbuff_t* next_tvb = NULL;
- next_tvb = tvb_new_subset(tvb, offset + 4, iLengthParam - 4, iLengthParam - 4);
- add_new_data_source(pinfo, next_tvb, "SQL statement");
- proto_tree_add_item(drdaroot_tree, hf_drda_sqlstatement, next_tvb, 0, iLengthParam - 5, ENC_UTF_8|ENC_NA);
- proto_tree_add_item(drdaroot_tree, hf_drda_sqlstatement_ebcdic, next_tvb, 0, iLengthParam - 4, ENC_EBCDIC|ENC_NA);
- }
- }
- offset += iLengthParam;
- }
- else
- {
- break;
- }
- }
- }
- else
- {
- /* No tree, advance directly to next command */
- offset += iLength;
- }
- }
+ gint offset = 0;
+
+ guint16 iCommand;
+ guint16 iLength;
+ guint16 iCommandEnd = 0;
+
+ guint8 iFormatFlags;
+ guint8 iDSSType;
+ guint8 iDSSFlags;
+
+ guint16 iParameterCP;
+ gint iLengthParam;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "DRDA");
+ /* This is a trick to know whether this is the first PDU in this packet or not */
+ if (iPreviousFrameNumber != pinfo->fd->num)
+ col_clear(pinfo->cinfo, COL_INFO);
+ else
+ col_append_str(pinfo->cinfo, COL_INFO, " | ");
+
+ iPreviousFrameNumber = pinfo->fd->num;
+ /* There may be multiple DRDA commands in one frame */
+ while ((guint) (offset + 10) <= tvb_length(tvb))
+ {
+ iCommand = tvb_get_ntohs(tvb, offset + 8);
+ iLength = tvb_get_ntohs(tvb, offset + 0);
+ /* iCommandEnd is the length of the packet up to the end of the current command */
+ iCommandEnd += iLength;
+
+ if (offset > 0)
+ col_append_str(pinfo->cinfo, COL_INFO, " | ");
+ col_append_str(pinfo->cinfo, COL_INFO, val_to_str_ext(iCommand, &drda_opcode_abbr_ext, "Unknown (0x%02x)"));
+
+ if (tree)
+ {
+ proto_tree *drda_tree;
+ proto_tree *drdaroot_tree;
+ proto_tree *drda_tree_sub;
+ proto_item *ti;
+
+ ti = proto_tree_add_item(tree, proto_drda, tvb, offset, -1, ENC_NA);
+ proto_item_append_text(ti, " (%s)", val_to_str_ext(iCommand, &drda_opcode_vals_ext, "Unknown (0x%02x)"));
+ drdaroot_tree = proto_item_add_subtree(ti, ett_drda);
+
+ ti = proto_tree_add_text(drdaroot_tree, tvb, offset, 10, DRDA_TEXT_DDM);
+ proto_item_append_text(ti, " (%s)", val_to_str_ext(iCommand, &drda_opcode_abbr_ext, "Unknown (0x%02x)"));
+ drda_tree = proto_item_add_subtree(ti, ett_drda_ddm);
+
+ proto_tree_add_item(drda_tree, hf_drda_ddm_length, tvb, offset + 0, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(drda_tree, hf_drda_ddm_magic, tvb, offset + 2, 1, ENC_BIG_ENDIAN);
+
+ iFormatFlags = tvb_get_guint8(tvb, offset + 3);
+ iDSSType = iFormatFlags & 0x0F;
+ iDSSFlags = iFormatFlags >> 4;
+
+ ti = proto_tree_add_item(drda_tree, hf_drda_ddm_format, tvb, offset + 3, 1, ENC_BIG_ENDIAN);
+ drda_tree_sub = proto_item_add_subtree(ti, ett_drda_ddm_format);
+
+ proto_tree_add_boolean(drda_tree_sub, hf_drda_ddm_fmt_reserved, tvb, offset + 3, 1, iDSSFlags);
+ proto_tree_add_boolean(drda_tree_sub, hf_drda_ddm_fmt_chained, tvb, offset + 3, 1, iDSSFlags);
+ proto_tree_add_boolean(drda_tree_sub, hf_drda_ddm_fmt_errcont, tvb, offset + 3, 1, iDSSFlags);
+ proto_tree_add_boolean(drda_tree_sub, hf_drda_ddm_fmt_samecorr, tvb, offset + 3, 1, iDSSFlags);
+ proto_tree_add_uint(drda_tree_sub, hf_drda_ddm_fmt_dsstyp, tvb, offset + 3, 1, iDSSType);
+
+ proto_tree_add_item(drda_tree, hf_drda_ddm_rc, tvb, offset + 4, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(drda_tree, hf_drda_ddm_length2, tvb, offset + 6, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(drda_tree, hf_drda_ddm_codepoint, tvb, offset + 8, 2, ENC_BIG_ENDIAN);
+
+ /* The number of attributes is variable */
+ for (offset += 10; offset < iCommandEnd; )
+ {
+ if (tvb_length_remaining(tvb, offset) >= 2)
+ {
+ iLengthParam = tvb_get_ntohs(tvb, offset + 0);
+ if (iLengthParam == 0 || iLengthParam == 1) iLengthParam = iLength - 10;
+ if (tvb_length_remaining(tvb, offset) >= iLengthParam)
+ {
+ iParameterCP = tvb_get_ntohs(tvb, offset + 2);
+ ti = proto_tree_add_text(drdaroot_tree, tvb, offset, iLengthParam,
+ DRDA_TEXT_PARAM);
+ proto_item_append_text(ti, " (%s)", val_to_str_ext(iParameterCP, &drda_opcode_vals_ext, "Unknown (0x%02x)"));
+ drda_tree_sub = proto_item_add_subtree(ti, ett_drda_param);
+ proto_tree_add_item(drda_tree_sub, hf_drda_param_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(drda_tree_sub, hf_drda_param_codepoint, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(drda_tree_sub, hf_drda_param_data, tvb, offset + 4, iLengthParam - 4, ENC_UTF_8|ENC_NA);
+ proto_tree_add_item(drda_tree_sub, hf_drda_param_data_ebcdic, tvb, offset + 4, iLengthParam - 4, ENC_EBCDIC|ENC_NA);
+ if (iCommand == DRDA_CP_SQLSTT)
+ {
+ /* Extract SQL statement from packet */
+ tvbuff_t* next_tvb = NULL;
+ next_tvb = tvb_new_subset(tvb, offset + 4, iLengthParam - 4, iLengthParam - 4);
+ add_new_data_source(pinfo, next_tvb, "SQL statement");
+ proto_tree_add_item(drdaroot_tree, hf_drda_sqlstatement, next_tvb, 0, iLengthParam - 5, ENC_UTF_8|ENC_NA);
+ proto_tree_add_item(drdaroot_tree, hf_drda_sqlstatement_ebcdic, next_tvb, 0, iLengthParam - 4, ENC_EBCDIC|ENC_NA);
+ }
+ }
+ offset += iLengthParam;
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+ else
+ {
+ /* No tree, advance directly to next command */
+ offset += iLength;
+ }
+ }
}
static guint
get_drda_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
{
- if (tvb_length_remaining(tvb, offset) >= 10)
- {
- return (tvb_get_ntohs(tvb, offset));
- }
- return 0;
+ if (tvb_length_remaining(tvb, offset) >= 10)
+ {
+ return (tvb_get_ntohs(tvb, offset));
+ }
+ return 0;
}
static void
dissect_drda_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- tcp_dissect_pdus(tvb, pinfo, tree, drda_desegment, 10, get_drda_pdu_len, dissect_drda);
+ tcp_dissect_pdus(tvb, pinfo, tree, drda_desegment, 10, get_drda_pdu_len, dissect_drda);
}
static gboolean
dissect_drda_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- conversation_t * conversation;
- if (tvb_length(tvb) >= 10)
- {
- /* The first header is 6 bytes long, so the length in the second header should 6 bytes less */
- guint16 cOuterLength, cInnerLength;
- cOuterLength = tvb_get_ntohs(tvb, 0);
- cInnerLength = tvb_get_ntohs(tvb, 6);
- if ((tvb_get_guint8(tvb, 2) == DRDA_MAGIC) && ((cOuterLength - cInnerLength) == 6))
- {
- /* Register this dissector for this conversation */
- conversation = find_or_create_conversation(pinfo);
- conversation_set_dissector(conversation, drda_tcp_handle);
-
- /* Dissect the packet */
- dissect_drda(tvb, pinfo, tree);
- return TRUE;
- }
- }
- return FALSE;
+ conversation_t * conversation;
+ if (tvb_length(tvb) >= 10)
+ {
+ /* The first header is 6 bytes long, so the length in the second header should 6 bytes less */
+ guint16 cOuterLength, cInnerLength;
+ cOuterLength = tvb_get_ntohs(tvb, 0);
+ cInnerLength = tvb_get_ntohs(tvb, 6);
+ if ((tvb_get_guint8(tvb, 2) == DRDA_MAGIC) && ((cOuterLength - cInnerLength) == 6))
+ {
+ /* Register this dissector for this conversation */
+ conversation = find_or_create_conversation(pinfo);
+ conversation_set_dissector(conversation, drda_tcp_handle);
+
+ /* Dissect the packet */
+ dissect_drda(tvb, pinfo, tree);
+ return TRUE;
+ }
+ }
+ return FALSE;
}
void
proto_register_drda(void)
{
- static hf_register_info hf[] = {
- { &hf_drda_ddm_length,
- { "Length", "drda.ddm.length", FT_UINT16, BASE_DEC, NULL, 0x0, "DDM length", HFILL }},
-
- { &hf_drda_ddm_magic,
- { "Magic", "drda.ddm.ddmid", FT_UINT8, BASE_HEX, NULL, 0x0, "DDM magic", HFILL }},
-
- { &hf_drda_ddm_format,
- { "Format", "drda.ddm.format", FT_UINT8, BASE_HEX, NULL, 0x0, "DDM format", HFILL }},
-
- { &hf_drda_ddm_fmt_reserved,
- { "Reserved", "drda.ddm.fmt.bit0", FT_BOOLEAN, 4, TFS(&tfs_set_notset), DRDA_DSSFMT_RESERVED, "DSSFMT reserved", HFILL }},
-
- { &hf_drda_ddm_fmt_chained,
- { "Chained", "drda.ddm.fmt.bit1", FT_BOOLEAN, 4, TFS(&tfs_set_notset), DRDA_DSSFMT_CHAINED, "DSSFMT chained", HFILL }},
-
- { &hf_drda_ddm_fmt_errcont,
- { "Continue", "drda.ddm.fmt.bit2", FT_BOOLEAN, 4, TFS(&tfs_set_notset), DRDA_DSSFMT_CONTINUE, "DSSFMT continue on error", HFILL }},
-
- { &hf_drda_ddm_fmt_samecorr,
- { "Same correlation", "drda.ddm.fmt.bit3", FT_BOOLEAN, 4, TFS(&tfs_set_notset), DRDA_DSSFMT_SAME_CORR, "DSSFMT same correlation", HFILL }},
-
- { &hf_drda_ddm_fmt_dsstyp,
- { "DSS type", "drda.ddm.fmt.dsstyp", FT_UINT8, BASE_DEC, VALS(drda_dsstyp_abbr), 0x0, "DSSFMT type", HFILL }},
-
- { &hf_drda_ddm_rc,
- { "CorrelId", "drda.ddm.rqscrr", FT_UINT16, BASE_DEC, NULL, 0x0, "DDM correlation identifier", HFILL }},
-
- { &hf_drda_ddm_length2,
- { "Length2", "drda.ddm.length2", FT_UINT16, BASE_DEC, NULL, 0x0, "DDM length2", HFILL }},
-
- { &hf_drda_ddm_codepoint,
- { "Code point", "drda.ddm.codepoint", FT_UINT16, BASE_HEX|BASE_EXT_STRING, &drda_opcode_abbr_ext, 0x0, "DDM code point", HFILL }},
-
- { &hf_drda_param_length,
- { "Length", "drda.param.length", FT_UINT16, BASE_DEC, NULL, 0x0, "Param length", HFILL }},
-
- { &hf_drda_param_codepoint,
- { "Code point", "drda.param.codepoint", FT_UINT16, BASE_HEX|BASE_EXT_STRING, &drda_opcode_abbr_ext, 0x0, "Param code point", HFILL }},
-
- { &hf_drda_param_data,
- { "Data (ASCII)", "drda.param.data", FT_STRING, BASE_NONE, NULL, 0x0, "Param data left as ASCII for display", HFILL }},
-
- { &hf_drda_param_data_ebcdic,
- { "Data (EBCDIC)", "drda.param.data.ebcdic", FT_STRING, BASE_NONE, NULL, 0x0, "Param data converted from EBCDIC to ASCII for display", HFILL }},
-
- { &hf_drda_sqlstatement,
- { "SQL statement (ASCII)", "drda.sqlstatement", FT_STRING, BASE_NONE, NULL, 0x0, "SQL statement left as ASCII for display", HFILL }},
-
- { &hf_drda_sqlstatement_ebcdic,
- { "SQL statement (EBCDIC)", "drda.sqlstatement.ebcdic", FT_STRING, BASE_NONE, NULL, 0x0, "SQL statement converted from EBCDIC to ASCII for display", HFILL }}
-
- };
- static gint *ett[] = {
- &ett_drda,
- &ett_drda_ddm,
- &ett_drda_ddm_format,
- &ett_drda_param
- };
-
- module_t *drda_module;
-
- proto_drda = proto_register_protocol("DRDA", "DRDA", "drda");
- proto_register_field_array(proto_drda, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
-
- drda_module = prefs_register_protocol(proto_drda, NULL);
- prefs_register_bool_preference(drda_module, "desegment",
- "Reassemble DRDA messages spanning multiple TCP segments",
- "Whether the DRDA dissector should reassemble messages spanning multiple TCP segments."
- " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
- &drda_desegment);
- register_init_routine(&drda_init);
+ static hf_register_info hf[] = {
+ { &hf_drda_ddm_length,
+ { "Length", "drda.ddm.length",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "DDM length", HFILL }},
+
+ { &hf_drda_ddm_magic,
+ { "Magic", "drda.ddm.ddmid",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ "DDM magic", HFILL }},
+
+ { &hf_drda_ddm_format,
+ { "Format", "drda.ddm.format",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ "DDM format", HFILL }},
+
+ { &hf_drda_ddm_fmt_reserved,
+ { "Reserved", "drda.ddm.fmt.bit0",
+ FT_BOOLEAN, 4, TFS(&tfs_set_notset), DRDA_DSSFMT_RESERVED,
+ "DSSFMT reserved", HFILL }},
+
+ { &hf_drda_ddm_fmt_chained,
+ { "Chained", "drda.ddm.fmt.bit1",
+ FT_BOOLEAN, 4, TFS(&tfs_set_notset), DRDA_DSSFMT_CHAINED,
+ "DSSFMT chained", HFILL }},
+
+ { &hf_drda_ddm_fmt_errcont,
+ { "Continue", "drda.ddm.fmt.bit2",
+ FT_BOOLEAN, 4, TFS(&tfs_set_notset), DRDA_DSSFMT_CONTINUE,
+ "DSSFMT continue on error", HFILL }},
+
+ { &hf_drda_ddm_fmt_samecorr,
+ { "Same correlation", "drda.ddm.fmt.bit3",
+ FT_BOOLEAN, 4, TFS(&tfs_set_notset), DRDA_DSSFMT_SAME_CORR,
+ "DSSFMT same correlation", HFILL }},
+
+ { &hf_drda_ddm_fmt_dsstyp,
+ { "DSS type", "drda.ddm.fmt.dsstyp",
+ FT_UINT8, BASE_DEC, VALS(drda_dsstyp_abbr), 0x0,
+ "DSSFMT type", HFILL }},
+
+ { &hf_drda_ddm_rc,
+ { "CorrelId", "drda.ddm.rqscrr",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "DDM correlation identifier", HFILL }},
+
+ { &hf_drda_ddm_length2,
+ { "Length2", "drda.ddm.length2",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "DDM length2", HFILL }},
+
+ { &hf_drda_ddm_codepoint,
+ { "Code point", "drda.ddm.codepoint",
+ FT_UINT16, BASE_HEX|BASE_EXT_STRING, &drda_opcode_abbr_ext, 0x0,
+ "DDM code point", HFILL }},
+
+ { &hf_drda_param_length,
+ { "Length", "drda.param.length",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Param length", HFILL }},
+
+ { &hf_drda_param_codepoint,
+ { "Code point", "drda.param.codepoint",
+ FT_UINT16, BASE_HEX|BASE_EXT_STRING, &drda_opcode_abbr_ext, 0x0,
+ "Param code point", HFILL }},
+
+ { &hf_drda_param_data,
+ { "Data (ASCII)", "drda.param.data",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "Param data left as ASCII for display", HFILL }},
+
+ { &hf_drda_param_data_ebcdic,
+ { "Data (EBCDIC)", "drda.param.data.ebcdic",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "Param data converted from EBCDIC to ASCII for display", HFILL }},
+
+ { &hf_drda_sqlstatement,
+ { "SQL statement (ASCII)", "drda.sqlstatement",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "SQL statement left as ASCII for display", HFILL }},
+
+ { &hf_drda_sqlstatement_ebcdic,
+ { "SQL statement (EBCDIC)", "drda.sqlstatement.ebcdic",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "SQL statement converted from EBCDIC to ASCII for display", HFILL }}
+
+ };
+ static gint *ett[] = {
+ &ett_drda,
+ &ett_drda_ddm,
+ &ett_drda_ddm_format,
+ &ett_drda_param
+ };
+
+ module_t *drda_module;
+
+ proto_drda = proto_register_protocol("DRDA", "DRDA", "drda");
+ proto_register_field_array(proto_drda, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ drda_module = prefs_register_protocol(proto_drda, NULL);
+ prefs_register_bool_preference(drda_module, "desegment",
+ "Reassemble DRDA messages spanning multiple TCP segments",
+ "Whether the DRDA dissector should reassemble messages spanning"
+ " multiple TCP segments."
+ " To use this option, you must also enable"
+ " \"Allow subdissectors to reassemble TCP streams\""
+ " in the TCP protocol settings.",
+ &drda_desegment);
+ register_init_routine(&drda_init);
}
void
proto_reg_handoff_drda(void)
{
- heur_dissector_add("tcp", dissect_drda_heur, proto_drda);
- drda_tcp_handle = create_dissector_handle(dissect_drda_tcp, proto_drda);
+ heur_dissector_add("tcp", dissect_drda_heur, proto_drda);
+ drda_tcp_handle = create_dissector_handle(dissect_drda_tcp, proto_drda);
}
diff --git a/epan/dissectors/packet-dsi.c b/epan/dissectors/packet-dsi.c
index b90706d5e7..17e10bbacf 100644
--- a/epan/dissectors/packet-dsi.c
+++ b/epan/dissectors/packet-dsi.c
@@ -331,7 +331,7 @@ dissect_dsi_reply_get_status(tvbuff_t *tvb, proto_tree *tree, gint offset)
proto_tree_add_item(sub_tree, hf_dsi_server_flag_ext_sleep , tvb, ofs, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(sub_tree, hf_dsi_server_flag_fast_copy , tvb, ofs, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_dsi_server_name, tvb, offset +AFPSTATUS_PRELEN, 1, ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_dsi_server_name, tvb, offset +AFPSTATUS_PRELEN, 1, ENC_ASCII|ENC_NA);
flag = tvb_get_ntohs(tvb, ofs);
if ((flag & AFPSRVRINFO_SRVSIGNATURE)) {
@@ -366,7 +366,7 @@ dissect_dsi_reply_get_status(tvbuff_t *tvb, proto_tree *tree, gint offset)
ofs = offset +tvb_get_ntohs(tvb, offset +AFPSTATUS_MACHOFF);
if (ofs)
- proto_tree_add_item(tree, hf_dsi_server_type, tvb, ofs, 1, ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_dsi_server_type, tvb, ofs, 1, ENC_ASCII|ENC_NA);
ofs = offset +tvb_get_ntohs(tvb, offset +AFPSTATUS_VERSOFF);
if (ofs) {
@@ -376,7 +376,7 @@ dissect_dsi_reply_get_status(tvbuff_t *tvb, proto_tree *tree, gint offset)
sub_tree = proto_item_add_subtree(ti, ett_dsi_vers);
for (i = 0; i < nbe; i++) {
len = tvb_get_guint8(tvb, ofs);
- proto_tree_add_item(sub_tree, hf_dsi_server_vers, tvb, ofs, 1, ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(sub_tree, hf_dsi_server_vers, tvb, ofs, 1, ENC_ASCII|ENC_NA);
ofs += len + 1;
}
}
@@ -389,7 +389,7 @@ dissect_dsi_reply_get_status(tvbuff_t *tvb, proto_tree *tree, gint offset)
sub_tree = proto_item_add_subtree(ti, ett_dsi_uams);
for (i = 0; i < nbe; i++) {
len = tvb_get_guint8(tvb, ofs);
- proto_tree_add_item(sub_tree, hf_dsi_server_uams, tvb, ofs, 1, ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(sub_tree, hf_dsi_server_uams, tvb, ofs, 1, ENC_ASCII|ENC_NA);
ofs += len + 1;
}
}
@@ -478,7 +478,7 @@ dissect_dsi_reply_get_status(tvbuff_t *tvb, proto_tree *tree, gint offset)
sub_tree = proto_item_add_subtree(ti, ett_dsi_directory);
for (i = 0; i < nbe; i++) {
len = tvb_get_guint8(tvb, ofs);
- proto_tree_add_item(sub_tree, hf_dsi_server_directory, tvb, ofs, 1, ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(sub_tree, hf_dsi_server_directory, tvb, ofs, 1, ENC_ASCII|ENC_NA);
ofs += len + 1;
}
}
@@ -497,7 +497,7 @@ dissect_dsi_reply_get_status(tvbuff_t *tvb, proto_tree *tree, gint offset)
ofs += ulen;
}
- return offset;
+ return ofs;
}
static void
diff --git a/epan/dissectors/packet-dtls.c b/epan/dissectors/packet-dtls.c
index ea0dfaf1ae..f1baf6e175 100644
--- a/epan/dissectors/packet-dtls.c
+++ b/epan/dissectors/packet-dtls.c
@@ -117,6 +117,9 @@ static gint hf_dtls_handshake_extensions_len = -1;
static gint hf_dtls_handshake_extension_type = -1;
static gint hf_dtls_handshake_extension_len = -1;
static gint hf_dtls_handshake_extension_data = -1;
+static gint hf_dtls_handshake_session_ticket_lifetime_hint = -1;
+static gint hf_dtls_handshake_session_ticket_len = -1;
+static gint hf_dtls_handshake_session_ticket = -1;
static gint hf_dtls_handshake_certificates_len = -1;
static gint hf_dtls_handshake_certificates = -1;
static gint hf_dtls_handshake_certificate = -1;
@@ -160,6 +163,7 @@ static gint ett_dtls_heartbeat = -1;
static gint ett_dtls_cipher_suites = -1;
static gint ett_dtls_comp_methods = -1;
static gint ett_dtls_extension = -1;
+static gint ett_dtls_new_ses_ticket = -1;
static gint ett_dtls_certs = -1;
static gint ett_dtls_cert_types = -1;
static gint ett_dtls_dnames = -1;
@@ -177,9 +181,9 @@ static StringInfo dtls_decrypted_data = {NULL, 0};
static gint dtls_decrypted_data_avail = 0;
static uat_t *dtlsdecrypt_uat = NULL;
-static gchar *dtls_keys_list = NULL;
+static const gchar *dtls_keys_list = NULL;
#ifdef HAVE_LIBGNUTLS
-static gchar *dtls_debug_file_name = NULL;
+static const gchar *dtls_debug_file_name = NULL;
#endif
static heur_dissector_list_t heur_subdissector_list;
@@ -331,15 +335,19 @@ static void dissect_dtls_hnd_cli_hello(tvbuff_t *tvb,
guint32 offset, guint32 length,
SslDecryptSession* ssl);
+static int dissect_dtls_hnd_srv_hello(tvbuff_t *tvb,
+ proto_tree *tree,
+ guint32 offset, guint32 length,
+ SslDecryptSession* ssl);
+
static int dissect_dtls_hnd_hello_verify_request(tvbuff_t *tvb,
proto_tree *tree,
guint32 offset,
SslDecryptSession* ssl);
-static int dissect_dtls_hnd_srv_hello(tvbuff_t *tvb,
+static void dissect_dtls_hnd_new_ses_ticket(tvbuff_t *tvb,
proto_tree *tree,
- guint32 offset, guint32 length,
- SslDecryptSession* ssl);
+ guint32 offset, guint32 length);
static void dissect_dtls_hnd_cert(tvbuff_t *tvb,
proto_tree *tree, guint32 offset, packet_info *pinfo);
@@ -484,6 +492,11 @@ dissect_dtls(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset, conv_version,
ssl_session);
break;
+ case SSL_VER_DTLS1DOT2:
+ offset = dissect_dtls_record(tvb, pinfo, dtls_tree,
+ offset, conv_version,
+ ssl_session);
+ break;
/* that failed, so apply some heuristics based
* on this individual packet
@@ -592,7 +605,7 @@ decrypt_dtls_record(tvbuff_t *tvb, packet_info *pinfo, guint32 offset,
return ret;
}
- /* retrive decoder for this packet direction */
+ /* retrieve decoder for this packet direction */
if (ssl_packet_from_server(ssl, dtls_associations, pinfo) != 0) {
ssl_debug_printf("decrypt_dtls_record: using server decoder\n");
decoder = ssl->server;
@@ -602,7 +615,7 @@ decrypt_dtls_record(tvbuff_t *tvb, packet_info *pinfo, guint32 offset,
decoder = ssl->client;
}
- if (!decoder) {
+ if (!decoder && ssl->cipher != 0x0001 && ssl->cipher != 0x0002) {
ssl_debug_printf("decrypt_dtls_record: no decoder available\n");
return ret;
}
@@ -622,6 +635,10 @@ decrypt_dtls_record(tvbuff_t *tvb, packet_info *pinfo, guint32 offset,
* is successful*/
dtls_decrypted_data_avail = dtls_decrypted_data.data_len;
if (ssl->state & SSL_HAVE_SESSION_KEY) {
+ if (!decoder) {
+ ssl_debug_printf("decrypt_dtls_record: no decoder available\n");
+ return ret;
+ }
if (ssl_decrypt_record(ssl, decoder, content_type, tvb_get_ptr(tvb, offset, record_length), record_length,
&dtls_compressed_data, &dtls_decrypted_data, &dtls_decrypted_data_avail) == 0)
ret = 1;
@@ -802,6 +819,16 @@ dissect_dtls_record(tvbuff_t *tvb, packet_info *pinfo,
}
/*ssl_set_conv_version(pinfo, ssl->version);*/
}
+ if (version == DTLSV1DOT2_VERSION)
+ {
+
+ *conv_version = SSL_VER_DTLS1DOT2;
+ if (ssl) {
+ ssl->version_netorder = version;
+ ssl->state |= SSL_VERSION;
+ }
+ /*ssl_set_conv_version(pinfo, ssl->version);*/
+ }
}
if (check_col(pinfo->cinfo, COL_PROTOCOL))
{
@@ -810,6 +837,11 @@ dissect_dtls_record(tvbuff_t *tvb, packet_info *pinfo,
col_set_str(pinfo->cinfo, COL_PROTOCOL,
val_to_str_const(SSL_VER_DTLS, ssl_version_short_names, "SSL"));
}
+ else if (version == DTLSV1DOT2_VERSION)
+ {
+ col_set_str(pinfo->cinfo, COL_PROTOCOL,
+ val_to_str_const(SSL_VER_DTLS1DOT2, ssl_version_short_names, "SSL"));
+ }
else
{
col_set_str(pinfo->cinfo, COL_PROTOCOL,"DTLS");
@@ -1312,16 +1344,16 @@ dissect_dtls_handshake(tvbuff_t *tvb, packet_info *pinfo,
dissect_dtls_hnd_cli_hello(sub_tvb, ssl_hand_tree, 0, length, ssl);
break;
+ case SSL_HND_SERVER_HELLO:
+ dissect_dtls_hnd_srv_hello(sub_tvb, ssl_hand_tree, 0, length, ssl);
+ break;
+
case SSL_HND_HELLO_VERIFY_REQUEST:
dissect_dtls_hnd_hello_verify_request(sub_tvb, ssl_hand_tree, 0, ssl);
break;
case SSL_HND_NEWSESSION_TICKET:
- /* Content depends on implementation, so nothing to do! */
- break;
-
- case SSL_HND_SERVER_HELLO:
- dissect_dtls_hnd_srv_hello(sub_tvb, ssl_hand_tree, 0, length, ssl);
+ dissect_dtls_hnd_new_ses_ticket(sub_tvb, ssl_hand_tree, 0, length);
break;
case SSL_HND_CERTIFICATE:
@@ -1505,71 +1537,71 @@ dissect_dtls_hnd_hello_common(tvbuff_t *tvb, proto_tree *tree,
guint8 session_id_length;
if (tree || ssl)
+ {
+ if (ssl)
{
- if (ssl)
- {
- /* get proper peer information*/
- StringInfo* rnd;
- if (from_server)
- rnd = &ssl->server_random;
- else
- rnd = &ssl->client_random;
-
- /* get provided random for keyring generation*/
- tvb_memcpy(tvb, rnd->data, offset, 32);
- rnd->data_len = 32;
- if (from_server)
- ssl->state |= SSL_SERVER_RANDOM;
- else
- ssl->state |= SSL_CLIENT_RANDOM;
- ssl_debug_printf("dissect_dtls_hnd_hello_common found random state %X\n",
- ssl->state);
- }
-
- /* show the time */
- if (tree)
- {
- gmt_unix_time.secs = tvb_get_ntohl(tvb, offset);
- gmt_unix_time.nsecs = 0;
- proto_tree_add_time(tree, hf_dtls_handshake_random_time,
- tvb, offset, 4, &gmt_unix_time);
- }
- offset += 4;
+ /* get proper peer information*/
+ StringInfo* rnd;
+ if (from_server)
+ rnd = &ssl->server_random;
+ else
+ rnd = &ssl->client_random;
- /* show the random bytes */
- if (tree)
- proto_tree_add_item(tree, hf_dtls_handshake_random_bytes,
- tvb, offset, 28, ENC_NA);
- offset += 28;
+ /* get provided random for keyring generation*/
+ tvb_memcpy(tvb, rnd->data, offset, 32);
+ rnd->data_len = 32;
+ if (from_server)
+ ssl->state |= SSL_SERVER_RANDOM;
+ else
+ ssl->state |= SSL_CLIENT_RANDOM;
+ ssl_debug_printf("dissect_dtls_hnd_hello_common found random state %X\n",
+ ssl->state);
+ }
- /* show the session id */
- session_id_length = tvb_get_guint8(tvb, offset);
- if (tree)
- proto_tree_add_item(tree, hf_dtls_handshake_session_id_len,
- tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
- if (ssl)
- {
- /* check stored session id info */
- if (from_server && (session_id_length == ssl->session_id.data_len) &&
- (tvb_memeql(tvb, offset, ssl->session_id.data, session_id_length) == 0))
- {
- /* clinet/server id match: try to restore a previous cached session*/
- ssl_restore_session(ssl, dtls_session_hash);
- }
- else {
- tvb_memcpy(tvb,ssl->session_id.data, offset, session_id_length);
- ssl->session_id.data_len = session_id_length;
- }
- }
- if (tree && session_id_length > 0)
- proto_tree_add_bytes_format(tree, hf_dtls_handshake_session_id,
- tvb, offset, session_id_length,
- NULL, "Session ID (%u byte%s)",
- session_id_length,
- plurality(session_id_length, "", "s"));
- offset += session_id_length;
+ /* show the time */
+ if (tree)
+ {
+ gmt_unix_time.secs = tvb_get_ntohl(tvb, offset);
+ gmt_unix_time.nsecs = 0;
+ proto_tree_add_time(tree, hf_dtls_handshake_random_time,
+ tvb, offset, 4, &gmt_unix_time);
}
+ offset += 4;
+
+ /* show the random bytes */
+ if (tree)
+ proto_tree_add_item(tree, hf_dtls_handshake_random_bytes,
+ tvb, offset, 28, ENC_NA);
+ offset += 28;
+
+ /* show the session id */
+ session_id_length = tvb_get_guint8(tvb, offset);
+ if (tree)
+ proto_tree_add_item(tree, hf_dtls_handshake_session_id_len,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ if (ssl)
+ {
+ /* check stored session id info */
+ if (from_server && (session_id_length == ssl->session_id.data_len) &&
+ (tvb_memeql(tvb, offset, ssl->session_id.data, session_id_length) == 0))
+ {
+ /* clinet/server id match: try to restore a previous cached session*/
+ ssl_restore_session(ssl, dtls_session_hash);
+ }
+ else {
+ tvb_memcpy(tvb,ssl->session_id.data, offset, session_id_length);
+ ssl->session_id.data_len = session_id_length;
+ }
+ }
+ if (tree && session_id_length > 0)
+ proto_tree_add_bytes_format(tree, hf_dtls_handshake_session_id,
+ tvb, offset, session_id_length,
+ NULL, "Session ID (%u byte%s)",
+ session_id_length,
+ plurality(session_id_length, "", "s"));
+ offset += session_id_length;
+ }
/* XXXX */
return offset;
@@ -1620,6 +1652,7 @@ dissect_dtls_hnd_hello_ext(tvbuff_t *tvb,
case SSL_HND_HELLO_EXT_HEARTBEAT:
proto_tree_add_item(ext_tree, hf_dtls_heartbeat_extension_mode,
tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += ext_len;
break;
default:
proto_tree_add_bytes_format(ext_tree, hf_dtls_handshake_extension_data,
@@ -1776,52 +1809,6 @@ dissect_dtls_hnd_cli_hello(tvbuff_t *tvb,
}
}
-
-static int
-dissect_dtls_hnd_hello_verify_request(tvbuff_t *tvb, proto_tree *tree,
- guint32 offset, SslDecryptSession* ssl)
-{
- /*
- * struct {
- * ProtocolVersion server_version;
- * opaque cookie<0..32>;
- * } HelloVerifyRequest;
- */
-
- guint8 cookie_length;
-
-
- if (tree || ssl)
- {
- /* show the client version */
- if (tree)
- proto_tree_add_item(tree, hf_dtls_handshake_server_version, tvb,
- offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
-
-
- /* look for a cookie */
- cookie_length = tvb_get_guint8(tvb, offset);
- if (!tree)
- return offset;
-
- proto_tree_add_uint(tree, hf_dtls_handshake_cookie_len,
- tvb, offset, 1, cookie_length);
- offset ++; /* skip opaque length */
-
- if (cookie_length > 0)
- {
- proto_tree_add_bytes_format(tree, hf_dtls_handshake_cookie,
- tvb, offset, cookie_length,
- NULL, "Cookie (%u byte%s)",
- cookie_length,
- plurality(cookie_length, "", "s"));
- offset += cookie_length;
- }
- }
- return offset;
-}
-
static int
dissect_dtls_hnd_srv_hello(tvbuff_t *tvb,
proto_tree *tree, guint32 offset, guint32 length, SslDecryptSession* ssl)
@@ -1911,6 +1898,79 @@ dissect_dtls_hnd_srv_hello(tvbuff_t *tvb,
return offset;
}
+static int
+dissect_dtls_hnd_hello_verify_request(tvbuff_t *tvb, proto_tree *tree,
+ guint32 offset, SslDecryptSession* ssl)
+{
+ /*
+ * struct {
+ * ProtocolVersion server_version;
+ * opaque cookie<0..32>;
+ * } HelloVerifyRequest;
+ */
+
+ guint8 cookie_length;
+
+
+ if (tree || ssl)
+ {
+ /* show the client version */
+ if (tree)
+ proto_tree_add_item(tree, hf_dtls_handshake_server_version, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+
+ /* look for a cookie */
+ cookie_length = tvb_get_guint8(tvb, offset);
+ if (!tree)
+ return offset;
+
+ proto_tree_add_uint(tree, hf_dtls_handshake_cookie_len,
+ tvb, offset, 1, cookie_length);
+ offset ++; /* skip opaque length */
+
+ if (cookie_length > 0)
+ {
+ proto_tree_add_bytes_format(tree, hf_dtls_handshake_cookie,
+ tvb, offset, cookie_length,
+ NULL, "Cookie (%u byte%s)",
+ cookie_length,
+ plurality(cookie_length, "", "s"));
+ offset += cookie_length;
+ }
+ }
+ return offset;
+}
+
+static void
+dissect_dtls_hnd_new_ses_ticket(tvbuff_t *tvb,
+ proto_tree *tree, guint32 offset, guint32 length)
+{
+ guint nst_len;
+ proto_item *ti;
+ proto_tree *subtree;
+
+
+ nst_len = tvb_get_ntohs(tvb, offset+4);
+ if (6 + nst_len != length) {
+ return;
+ }
+
+ ti = proto_tree_add_text(tree, tvb, offset, 6+nst_len, "TLS Session Ticket");
+ subtree = proto_item_add_subtree(ti, ett_dtls_new_ses_ticket);
+
+ proto_tree_add_item(subtree, hf_dtls_handshake_session_ticket_lifetime_hint,
+ tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_uint(subtree, hf_dtls_handshake_session_ticket_len,
+ tvb, offset, 2, nst_len);
+ /* Content depends on implementation, so just show data! */
+ proto_tree_add_item(subtree, hf_dtls_handshake_session_ticket,
+ tvb, offset + 2, nst_len, ENC_NA);
+}
+
static void
dissect_dtls_hnd_cert(tvbuff_t *tvb,
proto_tree *tree, guint32 offset, packet_info *pinfo)
@@ -2092,6 +2152,10 @@ dissect_dtls_hnd_finished(tvbuff_t *tvb, proto_tree *tree, guint32 offset,
proto_tree_add_item(tree, hf_dtls_handshake_finished,
tvb, offset, 12, ENC_NA);
break;
+ case SSL_VER_DTLS1DOT2:
+ proto_tree_add_item(tree, hf_dtls_handshake_finished,
+ tvb, offset, 12, ENC_NA);
+ break;
}
}
@@ -2185,7 +2249,8 @@ looks_like_dtls(tvbuff_t *tvb, guint32 offset)
/* now check to see if the version byte appears valid */
version = tvb_get_ntohs(tvb, offset + 1);
- if (version != DTLSV1DOT0_VERSION && version != DTLSV1DOT0_VERSION_NOT)
+ if (version != DTLSV1DOT0_VERSION && version != DTLSV1DOT2_VERSION &&
+ version != DTLSV1DOT0_VERSION_NOT)
{
return 0;
}
@@ -2423,6 +2488,21 @@ proto_register_dtls(void)
FT_BYTES, BASE_NONE, NULL, 0x0,
"Hello Extension data", HFILL }
},
+ { &hf_dtls_handshake_session_ticket_lifetime_hint,
+ { "Session Ticket Lifetime Hint", "dtls.handshake.session_ticket_lifetime_hint",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "New DTLS Session Ticket Lifetime Hint", HFILL }
+ },
+ { &hf_dtls_handshake_session_ticket_len,
+ { "Session Ticket Length", "dtls.handshake.session_ticket_length",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "New DTLS Session Ticket Length", HFILL }
+ },
+ { &hf_dtls_handshake_session_ticket,
+ { "Session Ticket", "dtls.handshake.session_ticket",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "New DTLS Session Ticket", HFILL }
+ },
{ &hf_dtls_handshake_certificates_len,
{ "Certificates Length", "dtls.handshake.certificates_length",
FT_UINT24, BASE_DEC, NULL, 0x0,
@@ -2579,6 +2659,7 @@ proto_register_dtls(void)
&ett_dtls_cipher_suites,
&ett_dtls_comp_methods,
&ett_dtls_extension,
+ &ett_dtls_new_ses_ticket,
&ett_dtls_certs,
&ett_dtls_cert_types,
&ett_dtls_dnames,
@@ -2627,15 +2708,15 @@ proto_register_dtls(void)
"A table of RSA keys for DTLS decryption",
dtlsdecrypt_uat);
- prefs_register_string_preference(dtls_module, "debug_file", "DTLS debug file",
- "redirect dtls debug to file name; leave empty to disable debug, "
- "use \"" SSL_DEBUG_USE_STDERR "\" to redirect output to stderr\n",
- (const gchar **)&dtls_debug_file_name);
+ prefs_register_filename_preference(dtls_module, "debug_file", "DTLS debug file",
+ "redirect dtls debug to file name; leave empty to disable debug, "
+ "use \"" SSL_DEBUG_USE_STDERR "\" to redirect output to stderr\n",
+ &dtls_debug_file_name);
prefs_register_string_preference(dtls_module, "keys_list", "RSA keys list (deprecated)",
"Semicolon-separated list of private RSA keys used for DTLS decryption. "
"Used by versions of Wireshark prior to 1.6",
- (const gchar **)&dtls_keys_list);
+ &dtls_keys_list);
}
#endif
diff --git a/epan/dissectors/packet-dtn.c b/epan/dissectors/packet-dtn.c
index db97ce2060..422956c00b 100644
--- a/epan/dissectors/packet-dtn.c
+++ b/epan/dissectors/packet-dtn.c
@@ -47,7 +47,7 @@
void proto_reg_handoff_bundle(void);
static int dissect_primary_header(packet_info *pinfo, proto_tree *primary_tree, tvbuff_t *tvb);
-static int dissect_admin_record(proto_tree *primary_tree, tvbuff_t *tvb, int offset);
+static int dissect_admin_record(proto_tree *primary_tree, tvbuff_t *tvb, int offset, int payload_length);
static int dissect_payload_header(proto_tree *tree, tvbuff_t *tvb, int bundle_offset, gboolean *lastheader);
static int display_metadata_block(proto_tree *tree, tvbuff_t *tvb, int bundle_offset, gboolean *lastheader);
static int dissect_contact_header(tvbuff_t *tvb, packet_info *pinfo,
@@ -71,6 +71,9 @@ static int proto_bundle = -1;
static int proto_tcp_conv = -1;
static int hf_bundle_pdu_version = -1;
+/* Custodian from Primary Block, used to validate CTEB */
+static gchar *bundle_custodian = NULL;
+
/* TCP Convergence Header Variables */
static int hf_contact_hdr_version = -1;
static int hf_contact_hdr_flags = -1;
@@ -175,6 +178,17 @@ static int hf_block_control_discard_block = -1;
static int hf_block_control_not_processed = -1;
static int hf_block_control_eid_reference = -1;
+/* Non-Primary Block Type Code Variable */
+static int hf_bundle_block_type_code = -1;
+
+/* ECOS Flag Variables */
+static int hf_ecos_flags = -1;
+static int hf_ecos_flags_critical = -1;
+static int hf_ecos_flags_streaming = -1;
+static int hf_ecos_flags_ordinal = -1;
+
+static int hf_ecos_ordinal = -1;
+
/* Administrative Record Variables */
static int hf_bundle_admin_statflags = -1;
static int hf_bundle_admin_rcvd = -1;
@@ -191,6 +205,9 @@ static int hf_bundle_admin_delete_time = -1;
static int hf_bundle_admin_ack_time = -1;
static int hf_bundle_admin_timestamp_copy = -1;
static int hf_bundle_admin_signal_time = -1;
+static int hf_bundle_status_report_reason_code = -1;
+static int hf_bundle_custody_trf_succ_flg = -1;
+static int hf_bundle_custody_signal_reason = -1;
/* Tree Node Variables */
static gint ett_bundle = -1;
@@ -219,6 +236,7 @@ static guint bundle_tcp_port = 4556;
static guint bundle_udp_port = 4556;
static const value_string custody_signal_reason_codes[] = {
+ {0x0, "No Additional Information"},
{0x3, "Redundant Reception"},
{0x4, "Depleted Storage"},
{0x5, "Destination Endpoint ID Unintelligible"},
@@ -229,6 +247,7 @@ static const value_string custody_signal_reason_codes[] = {
};
static const value_string status_report_reason_codes[] = {
+ {0x0, "No Additional Information"},
{0x1, "Lifetime Expired"},
{0x2, "Forwarded over Unidirectional Link"},
{0x3, "Transmission Cancelled"},
@@ -240,6 +259,31 @@ static const value_string status_report_reason_codes[] = {
{0, NULL}
};
+static const value_string bundle_block_type_codes[] = {
+ {0x01, "Bundle Payload Block"},
+ {0x02, "Bundle Authentication Block"},
+ {0x03, "Payload Integrity Block"},
+ {0x04, "Payload Confidentiality Block"},
+ {0x05, "Previous-Hop Insertion Block"},
+ {0x08, "Metadata Extension Block"},
+ {0x09, "Extension Security Block"},
+ {0x0a, "Custody Transfer Enhancement Block"},
+ {0x13, "Extended Class of Service Block"},
+ {0, NULL}
+};
+
+static const value_string ecos_flags[] = {
+ {0x00, "None"},
+ {0x01, "ECOS Critical"},
+ {0x02, "ECOS Streaming"},
+ {0x03, "ECOS Critical+Streaming"},
+ {0x04, "ECOS Ordinal"},
+ {0x05, "ECOS Critical+Ordinal"},
+ {0x06, "ECOS Streaming+Ordinal"},
+ {0x07, "ECOS Critical+Streaming+Ordinal"},
+ {0, NULL}
+};
+
static const fragment_items msg_frag_items = {
/*Fragment subtrees*/
&ett_msg_fragment,
@@ -541,7 +585,7 @@ dissect_udp_bundle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
gint payload_size;
next_header_type = tvb_get_guint8(tvb, hdr_offset);
- if(next_header_type == PAYLOAD_HEADER_TYPE) {
+ if(next_header_type == BUNDLE_BLOCK_TYPE_PAYLOAD) {
payload_size =
dissect_payload_header(bundle_tree, tvb, hdr_offset, &lasthdrflag);
}
@@ -628,7 +672,7 @@ dissect_complete_bundle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
int payload_size;
next_header_type = tvb_get_guint8(tvb, offset);
- if(next_header_type == PAYLOAD_HEADER_TYPE) {
+ if(next_header_type == BUNDLE_BLOCK_TYPE_PAYLOAD) {
/*
* Returns payload size or 0 if can't parse payload
@@ -850,7 +894,7 @@ dissect_version_4_primary_header(packet_info *pinfo, proto_tree *primary_tree, t
dict_tree = proto_item_add_subtree(dict_item, ett_dictionary);
/*
- * If the dictionary length is 0, then the CBHE block compression method is applied.
+ * If the dictionary length is 0, then the CBHE block compression method is applied. (RFC6260)
* So the scheme offset is the node number and the ssp offset is the service number.
* If destination scheme offset is 2 and destination ssp offset is 1, then the EID is
* ipn:2.1
@@ -943,6 +987,8 @@ dissect_version_4_primary_header(packet_info *pinfo, proto_tree *primary_tree, t
}
col_add_fstr(pinfo->cinfo, COL_INFO, "%s > %s", src_node,dst_node);
+ /* remember custodian, for use in checking cteb validity */
+ bundle_custodian = ep_strdup_printf("%s:%d.%d", IPN_SCHEME_STR, cust_scheme_offset, cust_ssp_offset);
}
/*
@@ -989,9 +1035,11 @@ dissect_version_4_primary_header(packet_info *pinfo, proto_tree *primary_tree, t
col_add_fstr(pinfo->cinfo, COL_INFO, "%s:%s > %s:%s",
dict_ptr + source_scheme_offset, dict_ptr + source_ssp_offset,
dict_ptr + dest_scheme_offset, dict_ptr + dest_ssp_offset);
-
+ /* remember custodian, for use in checking cteb validity */
+ bundle_custodian = ep_strdup_printf("%s:%s", dict_ptr + cust_scheme_offset, dict_ptr + cust_ssp_offset);
}
offset += bundle_header_dict_length; /*Skip over dictionary*/
+
/*
* Do this only if Fragment Flag is set
*/
@@ -1328,6 +1376,12 @@ dissect_version_5_and_6_primary_header(packet_info *pinfo,
"Dictionary");
dict_tree = proto_item_add_subtree(dict_item, ett_dictionary);
+ /*
+ * If the dictionary length is 0, then the CBHE block compression method is applied. (RFC6260)
+ * So the scheme offset is the node number and the ssp offset is the service number.
+ * If destination scheme offset is 2 and destination ssp offset is 1, then the EID is
+ * ipn:2.1
+ */
if(bundle_header_dict_length == 0)
{
/*
@@ -1423,6 +1477,8 @@ dissect_version_5_and_6_primary_header(packet_info *pinfo,
}
col_add_fstr(pinfo->cinfo, COL_INFO, "%s > %s", src_node, dst_node);
+ /* remember custodian, for use in checking cteb validity */
+ bundle_custodian = ep_strdup_printf("%s:%d.%d", IPN_SCHEME_STR, cust_scheme_offset, cust_ssp_offset);
}
else
{
@@ -1468,6 +1524,8 @@ dissect_version_5_and_6_primary_header(packet_info *pinfo,
col_add_fstr(pinfo->cinfo, COL_INFO, "%s:%s > %s:%s",
dict_ptr + source_scheme_offset, dict_ptr + source_ssp_offset,
dict_ptr + dest_scheme_offset, dict_ptr + dest_ssp_offset);
+ /* remember custodian, for use in checking cteb validity */
+ bundle_custodian = ep_strdup_printf("%s:%s", dict_ptr + cust_scheme_offset, dict_ptr + cust_ssp_offset);
}
offset += bundle_header_dict_length; /*Skip over dictionary*/
@@ -1594,7 +1652,7 @@ dissect_payload_header(proto_tree *tree, tvbuff_t *tvb, int offset, gboolean *la
* XXXX - Have not allowed for admin record spanning multiple segments!
*/
- admin_size = dissect_admin_record(payload_tree, tvb, offset);
+ admin_size = dissect_admin_record(payload_tree, tvb, offset, payload_length);
if(admin_size == 0) {
return 0;
}
@@ -1607,14 +1665,13 @@ dissect_payload_header(proto_tree *tree, tvbuff_t *tvb, int offset, gboolean *la
*/
static int
-dissect_admin_record(proto_tree *primary_tree, tvbuff_t *tvb, int offset)
+dissect_admin_record(proto_tree *primary_tree, tvbuff_t *tvb, int offset, int payload_length)
{
proto_item *admin_record_item;
proto_tree *admin_record_tree;
proto_item *timestamp_sequence_item;
guint8 record_type;
guint8 status;
- guint8 reason;
int start_offset = offset;
int sdnv_length;
int timestamp_sequence;
@@ -1626,21 +1683,9 @@ dissect_admin_record(proto_tree *primary_tree, tvbuff_t *tvb, int offset)
admin_record_tree = proto_item_add_subtree(admin_record_item, ett_admin_record);
record_type = tvb_get_guint8(tvb, offset);
- if(record_type == (0x05 << 4)) {
- proto_tree_add_text(admin_record_tree, tvb, offset, 1, "Announce Record (Contact)");
- return 1; /*Special case for poxy TCP Convergence Layer Announce Bundle*/
- }
- if(record_type & ADMIN_REC_FLAGS_FRAGMENT) {
- proto_tree_add_text(admin_record_tree, tvb, offset, 1, "Record is for a Fragment");
- }
- else {
- proto_tree_add_text(admin_record_tree,
- tvb, offset, 1, "Record is not for a Fragment");
- }
switch((record_type >> 4) & 0xf)
{
-
case ADMIN_REC_TYPE_STATUS_REPORT:
{
proto_item *status_flag_item;
@@ -1648,6 +1693,13 @@ dissect_admin_record(proto_tree *primary_tree, tvbuff_t *tvb, int offset)
proto_tree_add_text(admin_record_tree, tvb, offset, 1,
"Administrative Record Type: Bundle Status Report");
+ if(record_type & ADMIN_REC_FLAGS_FRAGMENT) {
+ proto_tree_add_text(admin_record_tree, tvb, offset, 1, "Record is for a Fragment");
+ }
+ else {
+ proto_tree_add_text(admin_record_tree,
+ tvb, offset, 1, "Record is not for a Fragment");
+ }
++offset;
/* Decode Bundle Status Report Flags */
@@ -1670,18 +1722,9 @@ dissect_admin_record(proto_tree *primary_tree, tvbuff_t *tvb, int offset)
tvb, offset, 1, status);
++offset;
- reason = tvb_get_guint8(tvb, offset);
- if(reason == 0) {
- proto_tree_add_text(admin_record_tree, tvb, offset, 1,
- "Reason Code: 0 (No Additional Information)");
- }
- else {
- proto_tree_add_text(admin_record_tree, tvb, offset, 1,
- "Reason Code: 0x%x (%s)", reason,
- val_to_str(reason, status_report_reason_codes,
- "Invalid"));
- }
+ proto_tree_add_item(admin_record_tree, hf_bundle_status_report_reason_code, tvb, offset, 1, ENC_BIG_ENDIAN);
++offset;
+
if(record_type & ADMIN_REC_FLAGS_FRAGMENT) {
sdnv_length = add_sdnv_to_tree(admin_record_tree, tvb, offset,
"Fragment Offset");
@@ -1791,27 +1834,24 @@ dissect_admin_record(proto_tree *primary_tree, tvbuff_t *tvb, int offset)
offset += endpoint_length;
return offset - start_offset;
- }
+ } /* case ADMIN_REC_TYPE_STATUS_REPORT */
case ADMIN_REC_TYPE_CUSTODY_SIGNAL:
+ {
proto_tree_add_text(admin_record_tree, tvb, offset, 1,
"Administrative Record Type: Custody Signal");
- ++offset;
-
- status = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(admin_record_tree, tvb, offset, 1,
- "Custody Transfer Succeeded Flag: %d", (status >> 7) & 0x01);
- if((status & ADMIN_REC_CUSTODY_REASON_MASK) == 0) {
- proto_tree_add_text(admin_record_tree, tvb, offset, 1,
- "Reason Code: 0 (No Additional Information)");
+ if(record_type & ADMIN_REC_FLAGS_FRAGMENT) {
+ proto_tree_add_text(admin_record_tree, tvb, offset, 1, "Record is for a Fragment");
}
else {
- proto_tree_add_text(admin_record_tree, tvb, offset, 1,
- "Reason Code: 0x%x (%s)",
- status & ADMIN_REC_CUSTODY_REASON_MASK,
- val_to_str(status & ADMIN_REC_CUSTODY_REASON_MASK,
- custody_signal_reason_codes, "Invalid"));
+ proto_tree_add_text(admin_record_tree,
+ tvb, offset, 1, "Record is not for a Fragment");
}
++offset;
+
+ proto_tree_add_item(admin_record_tree, hf_bundle_custody_trf_succ_flg, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(admin_record_tree, hf_bundle_custody_signal_reason, tvb, offset, 1, ENC_BIG_ENDIAN);
+ ++offset;
+
if(record_type & ADMIN_REC_FLAGS_FRAGMENT) {
sdnv_length = add_sdnv_to_tree(admin_record_tree, tvb, offset,
"Fragment Offset");
@@ -1876,7 +1916,105 @@ dissect_admin_record(proto_tree *primary_tree, tvbuff_t *tvb, int offset)
"Bundle Endpoint ID: %s", string_ptr);
offset += endpoint_length;
return offset - start_offset;
+ } /* case ADMIN_REC_TYPE_CUSTODY_SIGNAL */
+ case ADMIN_REC_TYPE_AGGREGATE_CUSTODY_SIGNAL:
+ {
+ int payload_bytes_processed = 0;
+ int right_edge = -1;
+ int fill_start = -1;
+ int fill_gap = -1;
+ int fill_length = -1;
+ int sdnv_length_start = -1;
+ int sdnv_length_gap = -1;
+ int sdnv_length_length = -1;
+
+ proto_tree_add_text(admin_record_tree, tvb, offset, 1,
+ "Administrative Record Type: Aggregate Custody Signal");
+ if(record_type & ADMIN_REC_FLAGS_FRAGMENT) {
+ proto_tree_add_text(admin_record_tree, tvb, offset, 1, "Record is for a Fragment");
+ }
+ else {
+ proto_tree_add_text(admin_record_tree,
+ tvb, offset, 1, "Record is not for a Fragment");
+ }
+ ++offset;
+ ++payload_bytes_processed;
+
+ proto_tree_add_item(admin_record_tree, hf_bundle_custody_trf_succ_flg, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(admin_record_tree, hf_bundle_custody_signal_reason, tvb, offset, 1, ENC_BIG_ENDIAN);
+ ++offset;
+ ++payload_bytes_processed;
+
+ /* process the first fill */
+ fill_start = evaluate_sdnv(tvb, offset, &sdnv_length_start);
+ if (fill_start < 0 || sdnv_length_start < 0) {
+ proto_tree_add_text(admin_record_tree, tvb, offset, 0,
+ "ACS: Unable to process CTEB Custody ID Range start SDNV");
+ return 0;
+ }
+ fill_length = evaluate_sdnv(tvb, offset + sdnv_length_start, &sdnv_length_length);
+ if (fill_length < 0 || sdnv_length_length < 0) {
+ proto_tree_add_text(admin_record_tree, tvb, offset, 0,
+ "ACS: Unable to process CTEB Custody ID Range length SDNV");
+ return 0;
+ }
+ if (fill_length == 1) {
+ proto_tree_add_text(admin_record_tree, tvb, offset, sdnv_length_start + sdnv_length_length,
+ "CTEB Custody ID Range: %d", fill_start);
+ }
+ else {
+ proto_tree_add_text(admin_record_tree, tvb, offset, sdnv_length_start + sdnv_length_length,
+ "CTEB Custody ID Range: %d-%d", fill_start, fill_start + fill_length - 1);
+ }
+ right_edge = fill_start + fill_length;
+ offset += sdnv_length_start + sdnv_length_length;
+ payload_bytes_processed += sdnv_length_start + sdnv_length_length;
+
+ /* now attempt to consume all the rest of the data in the
+ * payload as additional fills */
+ while (payload_bytes_processed < payload_length) {
+ fill_gap = evaluate_sdnv(tvb, offset, &sdnv_length_gap);
+ if (fill_gap < 0 || sdnv_length_gap < 0) {
+ proto_tree_add_text(admin_record_tree, tvb, offset, 0,
+ "ACS: Unable to process CTEB Custody ID Range gap SDNV");
+ return 0;
+ }
+ fill_length = evaluate_sdnv(tvb, offset + sdnv_length_gap, &sdnv_length_length);
+ if (fill_length < 0 || sdnv_length_length < 0) {
+ proto_tree_add_text(admin_record_tree, tvb, offset, 0,
+ "ACS: Unable to process CTEB Custody ID Range length SDNV");
+ return 0;
+ }
+ if (fill_length == 1) {
+ proto_tree_add_text(admin_record_tree, tvb, offset, sdnv_length_gap + sdnv_length_length,
+ "CTEB Custody ID Range: %d", right_edge + fill_gap);
+ }
+ else {
+ proto_tree_add_text(admin_record_tree, tvb, offset, sdnv_length_gap + sdnv_length_length,
+ "CTEB Custody ID Range: %d-%d", right_edge + fill_gap, right_edge + fill_gap + fill_length - 1);
+ }
+ right_edge += fill_gap + fill_length;
+ offset += sdnv_length_gap + sdnv_length_length;
+ payload_bytes_processed += sdnv_length_gap + sdnv_length_length;
+ }
+ if (payload_bytes_processed > payload_length) {
+ proto_tree_add_text(admin_record_tree, tvb, offset, 0,
+ "ACS: CTEB Custody ID Range data extends past payload length");
+ return 0;
+ }
+
+ return offset - start_offset;
+ } /* case ADMIN_REC_TYPE_AGGREGATE_CUSTODY_SIGNAL */
+ case ADMIN_REC_TYPE_ANNOUNCE_BUNDLE:
+ {
+ proto_tree_add_text(admin_record_tree, tvb, offset, 1, "Announce Record (Contact)");
+ return 1; /*Special case for poxy TCP Convergence Layer Announce Bundle*/
+ }
+ default:
+ {
+ /* do nothing, fall through and fail */
+ }
} /* End Switch */
proto_tree_add_text(admin_record_tree, tvb, offset, 1,
@@ -1951,7 +2089,10 @@ display_metadata_block(proto_tree *tree, tvbuff_t *tvb, int offset, gboolean *la
int block_length;
guint8 type;
int control_flags;
+ int control_flags_offset;
+ int control_flags_length;
proto_tree *block_flag_tree = NULL;
+ proto_item *block_flag_item = NULL;
int num_eid_ref = 0;
int i = 0;
@@ -1961,7 +2102,7 @@ display_metadata_block(proto_tree *tree, tvbuff_t *tvb, int offset, gboolean *la
block_item = proto_tree_add_text(tree, tvb, header_start + offset, -1, "Metadata Block");
block_tree = proto_item_add_subtree(block_item, ett_metadata_hdr);
- proto_tree_add_text(block_tree, tvb, header_start + offset, 1, "Block Type: %d", type);
+ proto_tree_add_item(block_tree, hf_bundle_block_type_code, tvb, header_start + offset, 1, ENC_BIG_ENDIAN);
++offset;
control_flags = evaluate_sdnv(tvb, header_start + offset, &sdnv_length);
@@ -1970,26 +2111,28 @@ display_metadata_block(proto_tree *tree, tvbuff_t *tvb, int offset, gboolean *la
} else {
*lastheader = FALSE;
}
- proto_tree_add_text(block_tree, tvb, header_start + offset, 1, "Block Flags: 0x%x", control_flags);
- offset += sdnv_length;
-
- block_flag_tree = proto_item_add_subtree(block_item, ett_block_flags);
-
+ block_flag_item = proto_tree_add_item(block_tree, hf_block_control_flags, tvb,
+ header_start + offset, sdnv_length, ENC_BIG_ENDIAN);
+ block_flag_tree = proto_item_add_subtree(block_flag_item, ett_block_flags);
proto_tree_add_boolean(block_flag_tree, hf_block_control_replicate,
- tvb, offset, sdnv_length, control_flags);
+ tvb, header_start + offset, sdnv_length, control_flags);
proto_tree_add_boolean(block_flag_tree, hf_block_control_transmit_status,
- tvb, offset, sdnv_length, control_flags);
+ tvb, header_start + offset, sdnv_length, control_flags);
proto_tree_add_boolean(block_flag_tree, hf_block_control_delete_bundle,
- tvb, offset, sdnv_length, control_flags);
+ tvb, header_start + offset, sdnv_length, control_flags);
proto_tree_add_boolean(block_flag_tree, hf_block_control_last_block,
- tvb, offset, sdnv_length, control_flags);
+ tvb, header_start + offset, sdnv_length, control_flags);
proto_tree_add_boolean(block_flag_tree, hf_block_control_discard_block,
- tvb, offset, sdnv_length, control_flags);
+ tvb, header_start + offset, sdnv_length, control_flags);
proto_tree_add_boolean(block_flag_tree, hf_block_control_not_processed,
- tvb, offset, sdnv_length, control_flags);
+ tvb, header_start + offset, sdnv_length, control_flags);
proto_tree_add_boolean(block_flag_tree, hf_block_control_eid_reference,
- tvb, offset, sdnv_length, control_flags);
+ tvb, header_start + offset, sdnv_length, control_flags);
+ control_flags_offset = header_start + offset;
+ control_flags_length = sdnv_length;
+ offset += sdnv_length;
+ /* TODO: if this block has EID references, add them to display tree */
if (control_flags & BLOCK_CONTROL_EID_REFERENCE) {
num_eid_ref = evaluate_sdnv(tvb, header_start + offset, &sdnv_length);
offset += sdnv_length;
@@ -2005,13 +2148,132 @@ display_metadata_block(proto_tree *tree, tvbuff_t *tvb, int offset, gboolean *la
}
block_length = evaluate_sdnv(tvb, header_start + offset, &sdnv_length);
- proto_item_set_len(block_item, offset + sdnv_length + block_length);
if(block_length < 0) {
proto_tree_add_text(block_tree, tvb, header_start + offset, sdnv_length, "Metadata Block Length: Error");
return 0;
}
proto_tree_add_text(block_tree, tvb, header_start + offset, sdnv_length, "Block Length: %d", block_length);
- offset += (sdnv_length + block_length);
+ offset += sdnv_length;
+ /* now we have enough info to know total length of metadata block */
+ proto_item_set_len(block_item, offset + block_length);
+
+ switch (type)
+ {
+ case BUNDLE_BLOCK_TYPE_AUTHENTICATION:
+ case BUNDLE_BLOCK_TYPE_INTEGRITY:
+ case BUNDLE_BLOCK_TYPE_CONFIDENTIALITY:
+ case BUNDLE_BLOCK_TYPE_PREVIOUS_HOP_INSERT:
+ case BUNDLE_BLOCK_TYPE_METADATA_EXTENSION:
+ case BUNDLE_BLOCK_TYPE_EXTENSION_SECURITY:
+ {
+ /* not yet dissected, skip past data */
+ offset += block_length;
+ break;
+ }
+ case BUNDLE_BLOCK_TYPE_CUSTODY_TRANSFER:
+ {
+ int custody_id = -1;
+ const char *cteb_creator_custodian_eid = NULL;
+ int cteb_creator_custodian_eid_length = -1;
+
+ /* check requirements for Block Processing Control Flags */
+ if ((control_flags & BLOCK_CONTROL_REPLICATE) != 0) {
+ proto_tree_add_text(block_tree, tvb, control_flags_offset, control_flags_length, "Block Processing Control Flags: ERROR: Replicate must be clear for CTEB");
+ }
+ if ((control_flags & BLOCK_CONTROL_EID_REFERENCE) != 0) {
+ proto_tree_add_text(block_tree, tvb, control_flags_offset, control_flags_length, "Block Processing Control Flags: ERROR: EID-Reference must be clear for CTEB");
+ }
+
+ /* there are two elements in a CTEB, first is the custody ID */
+ custody_id = evaluate_sdnv(tvb, header_start + offset, &sdnv_length);
+ proto_tree_add_text(block_tree, tvb, header_start + offset, sdnv_length, "CTEB Custody ID: %d", custody_id);
+ offset += sdnv_length;
+
+ /* and second is the creator custodian EID */
+ cteb_creator_custodian_eid_length = block_length - sdnv_length;
+ cteb_creator_custodian_eid = (char *) tvb_get_ephemeral_string(tvb, header_start + offset, cteb_creator_custodian_eid_length);
+ proto_tree_add_text(block_tree, tvb, header_start + offset, cteb_creator_custodian_eid_length,
+ "CTEB Creator Custodian EID: %s", cteb_creator_custodian_eid);
+ /* also check if CTEB is valid, i.e. custodians match */
+ if (cteb_creator_custodian_eid == NULL) {
+ proto_tree_add_text(block_tree, tvb, header_start + offset,
+ cteb_creator_custodian_eid_length,
+ "CTEB Is NOT Valid (CTEB Custodian NULL)");
+ }
+ else if (bundle_custodian == NULL) {
+ proto_tree_add_text(block_tree, tvb, header_start + offset,
+ cteb_creator_custodian_eid_length,
+ "CTEB Is NOT Valid (Bundle Custodian NULL)");
+ }
+ else if (strlen(cteb_creator_custodian_eid) != strlen(bundle_custodian)) {
+ proto_tree_add_text(block_tree, tvb, header_start + offset,
+ cteb_creator_custodian_eid_length,
+ "CTEB Is NOT Valid (Bundle Custodian [%s] != CTEB Custodian [%s])",
+ bundle_custodian, cteb_creator_custodian_eid);
+ }
+ else if (memcmp(cteb_creator_custodian_eid, bundle_custodian, strlen(bundle_custodian)) != 0) {
+ proto_tree_add_text(block_tree, tvb, header_start + offset,
+ cteb_creator_custodian_eid_length,
+ "CTEB Is NOT Valid (Bundle Custodian [%s] != CTEB Custodian [%s])",
+ bundle_custodian, cteb_creator_custodian_eid);
+ }
+ else {
+ proto_tree_add_text(block_tree, tvb, header_start + offset,
+ cteb_creator_custodian_eid_length,
+ "CTEB Is Valid");
+ }
+ offset += cteb_creator_custodian_eid_length;
+
+ break;
+ }
+ case BUNDLE_BLOCK_TYPE_EXTENDED_COS:
+ {
+ proto_item *ecos_flag_item;
+ proto_tree *ecos_flag_tree;
+ int flags;
+ int flow_label;
+
+ /* check requirements for Block Processing Control Flags */
+ if ((control_flags & BLOCK_CONTROL_REPLICATE) == 0) {
+ proto_tree_add_text(block_tree, tvb, control_flags_offset, control_flags_length, "Block Processing Control Flags: ERROR: Replicate must be set for ECOS");
+ }
+ if ((control_flags & BLOCK_CONTROL_EID_REFERENCE) != 0) {
+ proto_tree_add_text(block_tree, tvb, control_flags_offset, control_flags_length, "Block Processing Control Flags: ERROR: EID-Reference must be clear for ECOS");
+ }
+
+ /* flags byte */
+ flags = (int)tvb_get_guint8(tvb, header_start + offset);
+ ecos_flag_item = proto_tree_add_item(block_tree, hf_ecos_flags, tvb, header_start + offset, 1, ENC_BIG_ENDIAN);
+ ecos_flag_tree = proto_item_add_subtree(ecos_flag_item, ett_block_flags);
+ proto_tree_add_boolean(ecos_flag_tree, hf_ecos_flags_critical, tvb, header_start + offset, 1, flags);
+ proto_tree_add_boolean(ecos_flag_tree, hf_ecos_flags_streaming, tvb, header_start + offset, 1, flags);
+ proto_tree_add_boolean(ecos_flag_tree, hf_ecos_flags_ordinal, tvb, header_start + offset, 1, flags);
+ offset += 1;
+
+ /* ordinal byte */
+ proto_tree_add_item(block_tree, hf_ecos_ordinal, tvb, header_start + offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+
+ /* optional flow label sdnv */
+ if ((flags & ECOS_FLAGS_ORDINAL) != 0) {
+ flow_label = evaluate_sdnv(tvb, header_start + offset, &sdnv_length);
+ if(flow_label < 0) {
+ proto_tree_add_text(block_tree, tvb, header_start + offset, sdnv_length, "ECOS Flow Label: Error");
+ return 0;
+ }
+ proto_tree_add_text(block_tree, tvb, header_start + offset, sdnv_length, "ECOS Flow Label: %d", flow_label);
+ offset += sdnv_length;
+ }
+
+ break;
+ }
+ default:
+ {
+ /* unknown bundle type, skip past data */
+ offset += block_length;
+ break;
+ }
+ }
return offset;
}
@@ -2542,7 +2804,43 @@ proto_register_bundle(void)
{&hf_block_control_eid_reference,
{"Block Contains an EID-reference Field", "bundle.block.control.eid",
FT_BOOLEAN, 8, NULL, BLOCK_CONTROL_EID_REFERENCE, NULL, HFILL}
- }
+ },
+ {&hf_bundle_status_report_reason_code,
+ {"Status Report Reason Code", "bundle.status_report_reason_code",
+ FT_UINT8, BASE_DEC, VALS(status_report_reason_codes), 0x0, NULL, HFILL}
+ },
+ {&hf_bundle_custody_trf_succ_flg,
+ {"Custody Transfer Succeeded Flag", "bundle.custody_trf_succ_flg",
+ FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL}
+ },
+ {&hf_bundle_custody_signal_reason,
+ {"Custody Signal Reason Code", "bundle.custody_signal_reason_code",
+ FT_UINT8, BASE_DEC, VALS(custody_signal_reason_codes), ADMIN_REC_CUSTODY_REASON_MASK, NULL, HFILL}
+ },
+ {&hf_bundle_block_type_code,
+ {"Non-Primary Bundle Block Type Code", "bundle.block_type_code",
+ FT_UINT8, BASE_DEC, VALS(bundle_block_type_codes), 0x0, NULL, HFILL}
+ },
+ {&hf_ecos_flags,
+ {"ECOS Flags", "bundle.block.ecos.flags",
+ FT_UINT8, BASE_HEX, VALS(ecos_flags), 0x0, NULL, HFILL}
+ },
+ {&hf_ecos_flags_critical,
+ {"ECOS Critical Flag", "bundle.block.ecos.flags.critical",
+ FT_BOOLEAN, 8, NULL, ECOS_FLAGS_CRITICAL, NULL, HFILL}
+ },
+ {&hf_ecos_flags_streaming,
+ {"ECOS Streaming Flag", "bundle.block.ecos.flags.streaming",
+ FT_BOOLEAN, 8, NULL, ECOS_FLAGS_STREAMING, NULL, HFILL}
+ },
+ {&hf_ecos_flags_ordinal,
+ {"ECOS Ordinal Flag", "bundle.block.ecos.flags.ordinal",
+ FT_BOOLEAN, 8, NULL, ECOS_FLAGS_ORDINAL, NULL, HFILL}
+ },
+ {&hf_ecos_ordinal,
+ {"ECOS Ordinal", "bundle.block.ecos.ordinal",
+ FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}
+ },
};
static gint *ett[] = {
diff --git a/epan/dissectors/packet-dtn.h b/epan/dissectors/packet-dtn.h
index 73b7d4dabf..5d42ea0009 100644
--- a/epan/dissectors/packet-dtn.h
+++ b/epan/dissectors/packet-dtn.h
@@ -94,7 +94,15 @@
#define HEADER_PROCFLAGS_LAST_HEADER 0x08
/* Header Types (excluding Primary Header) */
-#define PAYLOAD_HEADER_TYPE 0x01
+#define BUNDLE_BLOCK_TYPE_PAYLOAD 0x01 /* RFC5050 */
+#define BUNDLE_BLOCK_TYPE_AUTHENTICATION 0x02 /* RFC6257 */
+#define BUNDLE_BLOCK_TYPE_INTEGRITY 0x03 /* RFC6257 */
+#define BUNDLE_BLOCK_TYPE_CONFIDENTIALITY 0x04 /* RFC6257 */
+#define BUNDLE_BLOCK_TYPE_PREVIOUS_HOP_INSERT 0x05 /* RFC6259 */
+#define BUNDLE_BLOCK_TYPE_METADATA_EXTENSION 0x08 /* RFC6258 */
+#define BUNDLE_BLOCK_TYPE_EXTENSION_SECURITY 0x09 /* RFC6257 */
+#define BUNDLE_BLOCK_TYPE_CUSTODY_TRANSFER 0x0a /* http://bioserve.colorado.edu/bp-acs/ */
+#define BUNDLE_BLOCK_TYPE_EXTENDED_COS 0x13 /* http://tools.ietf.org/html/draft-irtf-dtnrg-ecos-02 */
/* Payload Header Processing Flags */
#define PAYLOAD_PROCFLAGS_REPLICATE_MASK 0x01
@@ -109,8 +117,10 @@
#define TCP_CONV_HDR_SHUTDOWN_LENGTH 1
/* Administrative Record Definitions */
-#define ADMIN_REC_TYPE_STATUS_REPORT 0x01
-#define ADMIN_REC_TYPE_CUSTODY_SIGNAL 0x02
+#define ADMIN_REC_TYPE_STATUS_REPORT 0x01
+#define ADMIN_REC_TYPE_CUSTODY_SIGNAL 0x02
+#define ADMIN_REC_TYPE_AGGREGATE_CUSTODY_SIGNAL 0x04
+#define ADMIN_REC_TYPE_ANNOUNCE_BUNDLE 0x05
#define ADMIN_REC_FLAGS_FRAGMENT 0x01
#define ADMIN_REC_CUSTODY_REASON_MASK 0x7f
@@ -132,6 +142,11 @@
#define BLOCK_CONTROL_NOT_PROCESSED 0x20
#define BLOCK_CONTROL_EID_REFERENCE 0x40
+/* ECOS Flags */
+#define ECOS_FLAGS_CRITICAL 0x01
+#define ECOS_FLAGS_STREAMING 0x02
+#define ECOS_FLAGS_ORDINAL 0x04
+
#define IPN_SCHEME_STR "ipn"
int evaluate_sdnv(tvbuff_t *tvb, int offset, int *bytecount);
diff --git a/epan/dissectors/packet-dtp.c b/epan/dissectors/packet-dtp.c
index 43030b13ec..ff90bc5693 100644
--- a/epan/dissectors/packet-dtp.c
+++ b/epan/dissectors/packet-dtp.c
@@ -28,11 +28,12 @@
*
*/
+#ifdef HAVE_CONFIG_H
#include "config.h"
-
-#include <stdlib.h>
+#endif
#include <glib.h>
+
#include <epan/packet.h>
/*
@@ -85,7 +86,7 @@ dissect_dtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
dtp_tree = proto_item_add_subtree(ti, ett_dtp);
}
- /* We assume version */
+ /* We assume version */
proto_tree_add_item(dtp_tree, hf_dtp_version, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
@@ -101,7 +102,7 @@ dissect_dtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
break;
ti = proto_tree_add_text(dtp_tree, tvb, offset, length, "%s",
- val_to_str(type, dtp_tlv_type_vals, "Unknown TLV type: 0x%02x"));
+ val_to_str(type, dtp_tlv_type_vals, "Unknown TLV type: 0x%02x"));
tlv_tree = proto_item_add_subtree(ti, ett_dtp_tlv);
proto_tree_add_uint(tlv_tree, hf_dtp_tlvtype, tvb, offset, 2, type);
@@ -116,12 +117,12 @@ dissect_dtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
offset += valuelength;
- }
+ }
}
static void
dissect_dtp_tlv(tvbuff_t *tvb, int offset, int length,
- proto_tree *tree, proto_item *ti, guint8 type)
+ proto_tree *tree, proto_item *ti, guint8 type)
{
switch (type) {
@@ -176,7 +177,7 @@ dissect_dtp_tlv(tvbuff_t *tvb, int offset, int length,
if (length == 6) {
proto_item_set_text(ti, "Neighbor: %s",
tvb_ether_to_str(tvb, offset)); /* XXX - resolve? */
- proto_tree_add_item(tree, hf_dtp_some_mac, tvb, offset, length, ENC_NA);
+ proto_tree_add_item(tree, hf_dtp_some_mac, tvb, offset, length, ENC_NA);
} else {
proto_item_set_text(ti,
"Neighbor: Bad length %u",
@@ -213,7 +214,7 @@ proto_register_dtp(void)
{ "Neighbor", "dtp.neighbor", FT_ETHER, BASE_NONE,
NULL, 0x0, "MAC Address of neighbor", HFILL }},
- };
+ };
static gint *ett[] = {
&ett_dtp,
diff --git a/epan/dissectors/packet-dtpt.c b/epan/dissectors/packet-dtpt.c
index d002d61f2b..cf2c694cf2 100644
--- a/epan/dissectors/packet-dtpt.c
+++ b/epan/dissectors/packet-dtpt.c
@@ -162,7 +162,7 @@ static const value_string names_message_type[] = {
};
static const value_string names_error[] = {
- { 0, "OK" },
+ { 0, "OK" },
{ 10014, "WSAEFAULT" },
{ 10060, "WSAETIMEDOUT" },
{ 10108, "WSASERVICE_NOT_FOUND" },
@@ -171,7 +171,7 @@ static const value_string names_error[] = {
};
static const value_string names_family[] = {
- { WINSOCK_AF_INET, "AF_INET" },
+ { WINSOCK_AF_INET, "AF_INET" },
{ 0, NULL }
};
@@ -275,7 +275,7 @@ dissect_dtpt_guid(tvbuff_t *tvb, guint offset, proto_tree *tree, int hfindex)
const gchar *guid_name = NULL;
if (guid_length) {
- tvb_get_guid(tvb, offset+4, &guid, 1);
+ tvb_get_guid(tvb, offset+4, &guid, ENC_LITTLE_ENDIAN);
}
else {
memset(&guid, 0, sizeof(guid));
@@ -834,300 +834,372 @@ void proto_reg_handoff_dtpt(void);
void
proto_register_dtpt(void)
{
- static hf_register_info hf[] = {
- { &hf_dtpt_version,
- { "Version", "dtpt.version",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Protocol Version", HFILL }},
- { &hf_dtpt_message_type,
- { "Message Type", "dtpt.message_type",
- FT_UINT8, BASE_DEC, VALS(names_message_type), 0x0,
- "Packet Message Type", HFILL }},
- { &hf_dtpt_flags,
- { "ControlFlags", "dtpt.flags",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- "ControlFlags as documented for WSALookupServiceBegin", HFILL }},
- { &hf_dtpt_flags_deep,
- { "DEEP", "dtpt.flags.deep",
- FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_DEEP,
- NULL, HFILL }},
- { &hf_dtpt_flags_containers,
- { "CONTAINERS", "dtpt.flags.containers",
- FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_CONTAINERS,
- NULL, HFILL }},
- { &hf_dtpt_flags_nocontainers,
- { "NOCONTAINERS", "dtpt.flags.nocontainers",
- FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_NOCONTAINERS,
- NULL, HFILL }},
- { &hf_dtpt_flags_nearest,
- { "NEAREST", "dtpt.flags.nearest",
- FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_NEAREST,
- NULL, HFILL }},
- { &hf_dtpt_flags_return_name,
- { "RETURN_NAME", "dtpt.flags.return_name",
- FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_RETURN_NAME,
- NULL, HFILL }},
- { &hf_dtpt_flags_return_type,
- { "RETURN_TYPE", "dtpt.flags.return_type",
- FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_RETURN_TYPE,
- NULL, HFILL }},
- { &hf_dtpt_flags_return_version,
- { "RETURN_VERSION", "dtpt.flags.return_version",
- FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_RETURN_VERSION,
- NULL, HFILL }},
- { &hf_dtpt_flags_return_comment,
- { "RETURN_COMMENT", "dtpt.flags.return_comment",
- FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_RETURN_COMMENT,
- NULL, HFILL }},
- { &hf_dtpt_flags_return_addr,
- { "RETURN_ADDR", "dtpt.flags.return_addr",
- FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_RETURN_ADDR,
- NULL, HFILL }},
- { &hf_dtpt_flags_return_blob,
- { "RETURN_BLOB", "dtpt.flags.return_blob",
- FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_RETURN_BLOB,
- NULL, HFILL }},
- { &hf_dtpt_flags_return_aliases,
- { "RETURN_ALIASES", "dtpt.flags.return_aliases",
- FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_RETURN_ALIASES,
- NULL, HFILL }},
- { &hf_dtpt_flags_return_query_string,
- { "RETURN_QUERY_STRING", "dtpt.flags.return_query_string",
- FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_RETURN_QUERY_STRING,
- NULL, HFILL }},
- { &hf_dtpt_flags_flushcache,
- { "FLUSHCACHE", "dtpt.flags.flushcache",
- FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_FLUSHCACHE,
- NULL, HFILL }},
- { &hf_dtpt_flags_flushprevious,
- { "FLUSHPREVIOUS", "dtpt.flags.flushprevious",
- FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_FLUSHPREVIOUS,
- NULL, HFILL }},
- { &hf_dtpt_flags_res_service,
- { "RES_SERVICE", "dtpt.flags.res_service",
- FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_RES_SERVICE,
- NULL, HFILL }},
- { &hf_dtpt_payload_size,
- { "Payload Size", "dtpt.payload_size",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Payload Size of the following packet containing a serialized WSAQUERYSET", HFILL }},
- { &hf_dtpt_handle,
- { "Handle", "dtpt.handle",
- FT_UINT64, BASE_HEX, NULL, 0x0,
- "Lookup handle", HFILL }},
- { &hf_dtpt_error,
- { "Last Error", "dtpt.error",
- FT_UINT32, BASE_DEC, VALS(names_error), 0x0,
- NULL, HFILL }},
- { &hf_dtpt_buffer_size,
- { "Buffer Size", "dtpt.buffer_size",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dtpt_data_size,
- { "Data Size", "dtpt.data_size",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dtpt_queryset_rawsize,
- { "QuerySet Size", "dtpt.queryset_size",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Size of the binary WSAQUERYSET", HFILL }},
- { &hf_dtpt_queryset_size,
- { "dwSize", "dtpt.queryset.dwSize",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "dwSize field in WSAQUERYSET", HFILL }},
- { &hf_dtpt_queryset_service_instance_name_pointer,
- { "lpszServiceInstanceName", "dtpt.queryset.lpszServiceInstanceName",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- "lpszServiceInstanceName field in WSAQUERYSET", HFILL }},
- { &hf_dtpt_queryset_service_class_id_pointer,
- { "lpServiceClassId", "dtpt.queryset.lpServiceClassId",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- "lpServiceClassId in the WSAQUERYSET", HFILL }},
- { &hf_dtpt_queryset_version,
- { "lpVersion", "dtpt.queryset.lpVersion",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "lpVersion in WSAQUERYSET", HFILL }},
- { &hf_dtpt_queryset_comment_pointer,
- { "lpszComment", "dtpt.lpszComment",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- "lpszComment field in WSAQUERYSET", HFILL }},
- { &hf_dtpt_queryset_namespace,
- { "dwNameSpace", "dtpt.queryset.dwNameSpace",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "dwNameSpace field in WSAQUERYSE", HFILL }},
- { &hf_dtpt_queryset_provider_id_pointer,
- { "lpNSProviderId", "dtpt.queryset.lpNSProviderId",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- "lpNSProviderId field in WSAQUERYSET", HFILL }},
- { &hf_dtpt_queryset_context_pointer,
- { "lpszContext", "dtpt.queryset.lpszContext",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- "lpszContext field in WSAQUERYSET", HFILL }},
- { &hf_dtpt_queryset_protocols_number,
- { "dwNumberOfProtocols", "dtpt.queryset.dwNumberOfProtocols",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "dwNumberOfProtocols field in WSAQUERYSET", HFILL }},
- { &hf_dtpt_queryset_protocols_pointer,
- { "lpafpProtocols", "dtpt.queryset.lpafpProtocols",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- "lpafpProtocols field in WSAQUERYSET", HFILL }},
- { &hf_dtpt_queryset_query_string_pointer,
- { "lpszQueryString", "dtpt.queryset.lpszQueryString",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- "lpszQueryString field in WSAQUERYSET", HFILL }},
- { &hf_dtpt_queryset_cs_addrs_number,
- { "dwNumberOfCsAddrs", "dtpt.queryset.dwNumberOfCsAddrs",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "dwNumberOfCsAddrs field in WSAQUERYSET", HFILL }},
- { &hf_dtpt_queryset_cs_addrs_pointer,
- { "lpcsaBuffer", "dtpt.queryset.lpcsaBuffer",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- "lpcsaBuffer field in WSAQUERYSET", HFILL }},
- { &hf_dtpt_queryset_output_flags,
- { "dwOutputFlags", "dtpt.queryset.dwOutputFlags",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- "dwOutputFlags field in WSAQUERYSET", HFILL }},
- { &hf_dtpt_queryset_blob_pointer,
- { "lpBlob", "dtpt.queryset.lpBlob",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- "lpBlob field in WSAQUERYSET", HFILL }},
- { &hf_dtpt_wstring_length,
- { "Length", "dtpt.wstring.length",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "String Length", HFILL }},
- { &hf_dtpt_wstring_data,
- { "Data", "dtpt.wstring.data",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "String Data", HFILL }},
- { &hf_dtpt_guid_length,
- { "Length", "dtpt.guid.length",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "GUID Length", HFILL }},
- { &hf_dtpt_guid_data,
- { "Data", "dtpt.guid.data",
- FT_GUID, BASE_NONE, NULL, 0x0,
- "GUID Data", HFILL }},
- { &hf_dtpt_service_instance_name,
- { "Service Instance Name", "dtpt.service_instance_name",
- FT_STRINGZ, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dtpt_service_class_id,
- { "Service Class ID", "dtpt.service_class_id",
- FT_GUID, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dtpt_comment,
- { "Comment", "dtpt.comment",
- FT_STRINGZ, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dtpt_ns_provider_id,
- { "NS Provider ID", "dtpt.ns_provider_id",
- FT_GUID, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dtpt_context,
- { "Context", "dtpt.context",
- FT_STRINGZ, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dtpt_protocols_number,
- { "Number of Protocols", "dtpt.protocols.number",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dtpt_protocols_length,
- { "Length of Protocols", "dtpt.protocols.length",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dtpt_protocol_family,
- { "Family", "dtpt.protocol.family",
- FT_UINT32, BASE_DEC, VALS(names_family), 0x0,
- "Protocol Family", HFILL }},
- { &hf_dtpt_protocol_protocol,
- { "Protocol", "dtpt.protocol.protocol",
- FT_UINT32, BASE_DEC, VALS(names_protocol), 0x0,
- "Protocol Protocol", HFILL }},
- { &hf_dtpt_query_string,
- { "Query String", "dtpt.query_string",
- FT_STRINGZ, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dtpt_cs_addrs_number,
- { "Number of CS Addresses", "dtpt.cs_addrs.number",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dtpt_cs_addrs_length1,
- { "Length of CS Addresses Part 1", "dtpt.cs_addrs.length1",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dtpt_cs_addr_socket_type,
- { "Socket Type", "dtpt.cs_addrs.socket_type",
- FT_UINT32, BASE_DEC, VALS(names_socket_type), 0x0,
- NULL, HFILL }},
- { &hf_dtpt_cs_addr_protocol,
- { "Protocol", "dtpt.cs_addrs.protocol",
- FT_UINT32, BASE_DEC, VALS(names_protocol), 0x0,
- NULL, HFILL }},
- { &hf_dtpt_cs_addr_local_pointer,
- { "Local Address Pointer", "dtpt.cs_addr.local_pointer",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dtpt_cs_addr_local_length,
- { "Local Address Length", "dtpt.cs_addr.local_length",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Local Address Pointer", HFILL }},
- { &hf_dtpt_cs_addr_local,
- { "Local Address", "dtpt.cs_addr.local",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dtpt_cs_addr_remote_pointer,
- { "Remote Address Pointer", "dtpt.cs_addr.remote_pointer",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dtpt_cs_addr_remote_length,
- { "Remote Address Length", "dtpt.cs_addr.remote_length",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Remote Address Pointer", HFILL }},
- { &hf_dtpt_cs_addr_remote,
- { "Remote Address", "dtpt.cs_addr.remote",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
- { &hf_dtpt_sockaddr_length,
- { "Length", "dtpt.sockaddr.length",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Socket Address Length", HFILL }},
- { &hf_dtpt_sockaddr_family,
- { "Family", "dtpt.sockaddr.family",
- FT_UINT16, BASE_DEC, VALS(names_family), 0x0,
- "Socket Address Family", HFILL }},
- { &hf_dtpt_sockaddr_port,
- { "Port", "dtpt.sockaddr.port",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Socket Address Port", HFILL }},
- { &hf_dtpt_sockaddr_address,
- { "Address", "dtpt.sockaddr.address",
- FT_IPv4, BASE_NONE, NULL, 0x0,
- "Socket Address Address", HFILL }},
- { &hf_dtpt_blob_rawsize,
- { "Blob Size", "dtpt.blob_size",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Size of the binary BLOB", HFILL }},
- { &hf_dtpt_blob_size,
- { "cbSize", "dtpt.blob.cbSize",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "cbSize field in BLOB", HFILL }},
- { &hf_dtpt_blob_data_pointer,
- { "pBlobData", "dtpt.blob.pBlobData",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- "pBlobData field in BLOB", HFILL }},
- { &hf_dtpt_blob_data_length,
- { "Length", "dtpt.blob.data_length",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Length of the Blob Data Block", HFILL }},
- { &hf_dtpt_blob_data,
- { "Data", "dtpt.blob.data",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- "Blob Data Block", HFILL }},
- { &hf_dtpt_connect_addr,
- { "Address", "dtpt.connect_addr",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Connect to Address", HFILL }},
- };
+ static hf_register_info hf[] = {
+ { &hf_dtpt_version,
+ { "Version", "dtpt.version",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Protocol Version", HFILL }},
+
+ { &hf_dtpt_message_type,
+ { "Message Type", "dtpt.message_type",
+ FT_UINT8, BASE_DEC, VALS(names_message_type), 0x0,
+ "Packet Message Type", HFILL }},
+
+ { &hf_dtpt_flags,
+ { "ControlFlags", "dtpt.flags",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "ControlFlags as documented for WSALookupServiceBegin", HFILL }},
+
+ { &hf_dtpt_flags_deep,
+ { "DEEP", "dtpt.flags.deep",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_DEEP,
+ NULL, HFILL }},
+
+ { &hf_dtpt_flags_containers,
+ { "CONTAINERS", "dtpt.flags.containers",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_CONTAINERS,
+ NULL, HFILL }},
+
+ { &hf_dtpt_flags_nocontainers,
+ { "NOCONTAINERS", "dtpt.flags.nocontainers",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_NOCONTAINERS,
+ NULL, HFILL }},
+
+ { &hf_dtpt_flags_nearest,
+ { "NEAREST", "dtpt.flags.nearest",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_NEAREST,
+ NULL, HFILL }},
+
+ { &hf_dtpt_flags_return_name,
+ { "RETURN_NAME", "dtpt.flags.return_name",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_RETURN_NAME,
+ NULL, HFILL }},
+
+ { &hf_dtpt_flags_return_type,
+ { "RETURN_TYPE", "dtpt.flags.return_type",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_RETURN_TYPE,
+ NULL, HFILL }},
+
+ { &hf_dtpt_flags_return_version,
+ { "RETURN_VERSION", "dtpt.flags.return_version",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_RETURN_VERSION,
+ NULL, HFILL }},
+
+ { &hf_dtpt_flags_return_comment,
+ { "RETURN_COMMENT", "dtpt.flags.return_comment",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_RETURN_COMMENT,
+ NULL, HFILL }},
+
+ { &hf_dtpt_flags_return_addr,
+ { "RETURN_ADDR", "dtpt.flags.return_addr",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_RETURN_ADDR,
+ NULL, HFILL }},
+
+ { &hf_dtpt_flags_return_blob,
+ { "RETURN_BLOB", "dtpt.flags.return_blob",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_RETURN_BLOB,
+ NULL, HFILL }},
+
+ { &hf_dtpt_flags_return_aliases,
+ { "RETURN_ALIASES", "dtpt.flags.return_aliases",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_RETURN_ALIASES,
+ NULL, HFILL }},
+
+ { &hf_dtpt_flags_return_query_string,
+ { "RETURN_QUERY_STRING", "dtpt.flags.return_query_string",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_RETURN_QUERY_STRING,
+ NULL, HFILL }},
+
+ { &hf_dtpt_flags_flushcache,
+ { "FLUSHCACHE", "dtpt.flags.flushcache",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_FLUSHCACHE,
+ NULL, HFILL }},
+
+ { &hf_dtpt_flags_flushprevious,
+ { "FLUSHPREVIOUS", "dtpt.flags.flushprevious",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_FLUSHPREVIOUS,
+ NULL, HFILL }},
+
+ { &hf_dtpt_flags_res_service,
+ { "RES_SERVICE", "dtpt.flags.res_service",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), LUP_RES_SERVICE,
+ NULL, HFILL }},
+
+ { &hf_dtpt_payload_size,
+ { "Payload Size", "dtpt.payload_size",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Payload Size of the following packet containing a serialized WSAQUERYSET", HFILL }},
+
+ { &hf_dtpt_handle,
+ { "Handle", "dtpt.handle",
+ FT_UINT64, BASE_HEX, NULL, 0x0,
+ "Lookup handle", HFILL }},
+
+ { &hf_dtpt_error,
+ { "Last Error", "dtpt.error",
+ FT_UINT32, BASE_DEC, VALS(names_error), 0x0,
+ NULL, HFILL }},
+
+ { &hf_dtpt_buffer_size,
+ { "Buffer Size", "dtpt.buffer_size",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dtpt_data_size,
+ { "Data Size", "dtpt.data_size",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dtpt_queryset_rawsize,
+ { "QuerySet Size", "dtpt.queryset_size",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Size of the binary WSAQUERYSET", HFILL }},
+
+ { &hf_dtpt_queryset_size,
+ { "dwSize", "dtpt.queryset.dwSize",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "dwSize field in WSAQUERYSET", HFILL }},
+
+ { &hf_dtpt_queryset_service_instance_name_pointer,
+ { "lpszServiceInstanceName", "dtpt.queryset.lpszServiceInstanceName",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "lpszServiceInstanceName field in WSAQUERYSET", HFILL }},
+
+ { &hf_dtpt_queryset_service_class_id_pointer,
+ { "lpServiceClassId", "dtpt.queryset.lpServiceClassId",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "lpServiceClassId in the WSAQUERYSET", HFILL }},
+
+ { &hf_dtpt_queryset_version,
+ { "lpVersion", "dtpt.queryset.lpVersion",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "lpVersion in WSAQUERYSET", HFILL }},
+
+ { &hf_dtpt_queryset_comment_pointer,
+ { "lpszComment", "dtpt.lpszComment",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "lpszComment field in WSAQUERYSET", HFILL }},
+
+ { &hf_dtpt_queryset_namespace,
+ { "dwNameSpace", "dtpt.queryset.dwNameSpace",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "dwNameSpace field in WSAQUERYSE", HFILL }},
+
+ { &hf_dtpt_queryset_provider_id_pointer,
+ { "lpNSProviderId", "dtpt.queryset.lpNSProviderId",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "lpNSProviderId field in WSAQUERYSET", HFILL }},
+
+ { &hf_dtpt_queryset_context_pointer,
+ { "lpszContext", "dtpt.queryset.lpszContext",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "lpszContext field in WSAQUERYSET", HFILL }},
+
+ { &hf_dtpt_queryset_protocols_number,
+ { "dwNumberOfProtocols", "dtpt.queryset.dwNumberOfProtocols",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "dwNumberOfProtocols field in WSAQUERYSET", HFILL }},
+
+ { &hf_dtpt_queryset_protocols_pointer,
+ { "lpafpProtocols", "dtpt.queryset.lpafpProtocols",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "lpafpProtocols field in WSAQUERYSET", HFILL }},
+
+ { &hf_dtpt_queryset_query_string_pointer,
+ { "lpszQueryString", "dtpt.queryset.lpszQueryString",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "lpszQueryString field in WSAQUERYSET", HFILL }},
+
+ { &hf_dtpt_queryset_cs_addrs_number,
+ { "dwNumberOfCsAddrs", "dtpt.queryset.dwNumberOfCsAddrs",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "dwNumberOfCsAddrs field in WSAQUERYSET", HFILL }},
+
+ { &hf_dtpt_queryset_cs_addrs_pointer,
+ { "lpcsaBuffer", "dtpt.queryset.lpcsaBuffer",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "lpcsaBuffer field in WSAQUERYSET", HFILL }},
+
+ { &hf_dtpt_queryset_output_flags,
+ { "dwOutputFlags", "dtpt.queryset.dwOutputFlags",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "dwOutputFlags field in WSAQUERYSET", HFILL }},
+
+ { &hf_dtpt_queryset_blob_pointer,
+ { "lpBlob", "dtpt.queryset.lpBlob",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "lpBlob field in WSAQUERYSET", HFILL }},
+
+ { &hf_dtpt_wstring_length,
+ { "Length", "dtpt.wstring.length",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "String Length", HFILL }},
+
+ { &hf_dtpt_wstring_data,
+ { "Data", "dtpt.wstring.data",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "String Data", HFILL }},
+
+ { &hf_dtpt_guid_length,
+ { "Length", "dtpt.guid.length",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "GUID Length", HFILL }},
+
+ { &hf_dtpt_guid_data,
+ { "Data", "dtpt.guid.data",
+ FT_GUID, BASE_NONE, NULL, 0x0,
+ "GUID Data", HFILL }},
+
+ { &hf_dtpt_service_instance_name,
+ { "Service Instance Name", "dtpt.service_instance_name",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dtpt_service_class_id,
+ { "Service Class ID", "dtpt.service_class_id",
+ FT_GUID, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dtpt_comment,
+ { "Comment", "dtpt.comment",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dtpt_ns_provider_id,
+ { "NS Provider ID", "dtpt.ns_provider_id",
+ FT_GUID, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dtpt_context,
+ { "Context", "dtpt.context",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dtpt_protocols_number,
+ { "Number of Protocols", "dtpt.protocols.number",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dtpt_protocols_length,
+ { "Length of Protocols", "dtpt.protocols.length",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dtpt_protocol_family,
+ { "Family", "dtpt.protocol.family",
+ FT_UINT32, BASE_DEC, VALS(names_family), 0x0,
+ "Protocol Family", HFILL }},
+
+ { &hf_dtpt_protocol_protocol,
+ { "Protocol", "dtpt.protocol.protocol",
+ FT_UINT32, BASE_DEC, VALS(names_protocol), 0x0,
+ "Protocol Protocol", HFILL }},
+
+ { &hf_dtpt_query_string,
+ { "Query String", "dtpt.query_string",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dtpt_cs_addrs_number,
+ { "Number of CS Addresses", "dtpt.cs_addrs.number",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dtpt_cs_addrs_length1,
+ { "Length of CS Addresses Part 1", "dtpt.cs_addrs.length1",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dtpt_cs_addr_socket_type,
+ { "Socket Type", "dtpt.cs_addrs.socket_type",
+ FT_UINT32, BASE_DEC, VALS(names_socket_type), 0x0,
+ NULL, HFILL }},
+
+ { &hf_dtpt_cs_addr_protocol,
+ { "Protocol", "dtpt.cs_addrs.protocol",
+ FT_UINT32, BASE_DEC, VALS(names_protocol), 0x0,
+ NULL, HFILL }},
+
+ { &hf_dtpt_cs_addr_local_pointer,
+ { "Local Address Pointer", "dtpt.cs_addr.local_pointer",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dtpt_cs_addr_local_length,
+ { "Local Address Length", "dtpt.cs_addr.local_length",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Local Address Pointer", HFILL }},
+
+ { &hf_dtpt_cs_addr_local,
+ { "Local Address", "dtpt.cs_addr.local",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dtpt_cs_addr_remote_pointer,
+ { "Remote Address Pointer", "dtpt.cs_addr.remote_pointer",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dtpt_cs_addr_remote_length,
+ { "Remote Address Length", "dtpt.cs_addr.remote_length",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Remote Address Pointer", HFILL }},
+
+ { &hf_dtpt_cs_addr_remote,
+ { "Remote Address", "dtpt.cs_addr.remote",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_dtpt_sockaddr_length,
+ { "Length", "dtpt.sockaddr.length",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Socket Address Length", HFILL }},
+
+ { &hf_dtpt_sockaddr_family,
+ { "Family", "dtpt.sockaddr.family",
+ FT_UINT16, BASE_DEC, VALS(names_family), 0x0,
+ "Socket Address Family", HFILL }},
+
+ { &hf_dtpt_sockaddr_port,
+ { "Port", "dtpt.sockaddr.port",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Socket Address Port", HFILL }},
+
+ { &hf_dtpt_sockaddr_address,
+ { "Address", "dtpt.sockaddr.address",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ "Socket Address Address", HFILL }},
+
+ { &hf_dtpt_blob_rawsize,
+ { "Blob Size", "dtpt.blob_size",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Size of the binary BLOB", HFILL }},
+
+ { &hf_dtpt_blob_size,
+ { "cbSize", "dtpt.blob.cbSize",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "cbSize field in BLOB", HFILL }},
+
+ { &hf_dtpt_blob_data_pointer,
+ { "pBlobData", "dtpt.blob.pBlobData",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "pBlobData field in BLOB", HFILL }},
+
+ { &hf_dtpt_blob_data_length,
+ { "Length", "dtpt.blob.data_length",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Length of the Blob Data Block", HFILL }},
+
+ { &hf_dtpt_blob_data,
+ { "Data", "dtpt.blob.data",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Blob Data Block", HFILL }},
+
+ { &hf_dtpt_connect_addr,
+ { "Address", "dtpt.connect_addr",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Connect to Address", HFILL }},
+ };
static gint *ett[] = {
&ett_dtpt,
&ett_dtpt_flags,
@@ -1150,17 +1222,17 @@ proto_register_dtpt(void)
guids_add_guid(&guid_svcid_inet_hostaddrbyinetstring, "SVCID_INET_HOSTADDRBYINETSTRING");
proto_dtpt = proto_register_protocol("DeskTop PassThrough Protocol",
- "DTPT", "dtpt");
+ "DTPT", "dtpt");
proto_register_field_array(proto_dtpt, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
/* Register a configuration option for port */
dtpt_module = prefs_register_protocol(proto_dtpt,
- proto_reg_handoff_dtpt);
+ proto_reg_handoff_dtpt);
prefs_register_uint_preference(dtpt_module, "tcp.port",
- "DTPT Server TCP Port",
- "Set the TDP port for the DTPT Server",
- 10, &gbl_dtptServerPort);
+ "DTPT Server TCP Port",
+ "Set the TDP port for the DTPT Server",
+ 10, &gbl_dtptServerPort);
}
diff --git a/epan/dissectors/packet-dua.c b/epan/dissectors/packet-dua.c
index 6b6bc7caad..9bbfd7e8f5 100644
--- a/epan/dissectors/packet-dua.c
+++ b/epan/dissectors/packet-dua.c
@@ -96,7 +96,8 @@ static dissector_handle_t dpnss_handle;
static void
dissect_int_interface_identifier_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- proto_tree_add_item(parameter_tree, hf_int_interface_id, parameter_tvb, INT_INTERFACE_ID_OFFSET, INT_INTERFACE_ID_LENGTH, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_int_interface_id,
+ parameter_tvb, INT_INTERFACE_ID_OFFSET, INT_INTERFACE_ID_LENGTH, ENC_BIG_ENDIAN);
proto_item_append_text(parameter_item, " (%d)", tvb_get_ntohl(parameter_tvb, INT_INTERFACE_ID_OFFSET));
}
@@ -109,7 +110,8 @@ dissect_text_interface_identifier_parameter(tvbuff_t *parameter_tvb, proto_tree
interface_id_length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET) - PARAMETER_HEADER_LENGTH;
- proto_tree_add_item(parameter_tree, hf_text_interface_id, parameter_tvb, TEXT_INTERFACE_ID_OFFSET, interface_id_length, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(parameter_tree, hf_text_interface_id,
+ parameter_tvb, TEXT_INTERFACE_ID_OFFSET, interface_id_length, ENC_ASCII|ENC_NA);
proto_item_append_text(parameter_item, " (%.*s)", interface_id_length,
tvb_get_ephemeral_string(parameter_tvb, TEXT_INTERFACE_ID_OFFSET, interface_id_length));
}
@@ -122,7 +124,8 @@ dissect_info_string_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tre
guint16 info_string_length;
info_string_length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET) - PARAMETER_HEADER_LENGTH;
- proto_tree_add_item(parameter_tree, hf_info_string, parameter_tvb, INFO_STRING_OFFSET, info_string_length, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(parameter_tree, hf_info_string,
+ parameter_tvb, INFO_STRING_OFFSET, info_string_length, ENC_ASCII|ENC_NA);
proto_item_append_text(parameter_item, " (%.*s)", info_string_length,
tvb_get_ephemeral_string(parameter_tvb, INFO_STRING_OFFSET, info_string_length));
}
@@ -176,8 +179,10 @@ dissect_integer_range_interface_identifier_parameter(tvbuff_t *parameter_tvb, pr
number_of_ranges = (tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET) - PARAMETER_HEADER_LENGTH) / INTERVAL_LENGTH;
offset = PARAMETER_VALUE_OFFSET;
for(range_number = 1; range_number <= number_of_ranges; range_number++) {
- proto_tree_add_item(parameter_tree, hf_interface_range_start, parameter_tvb, offset + START_OFFSET, START_LENGTH, ENC_BIG_ENDIAN);
- proto_tree_add_item(parameter_tree, hf_interface_range_end, parameter_tvb, offset + END_OFFSET, END_LENGTH, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_interface_range_start,
+ parameter_tvb, offset + START_OFFSET, START_LENGTH, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_interface_range_end,
+ parameter_tvb, offset + END_OFFSET, END_LENGTH, ENC_BIG_ENDIAN);
offset += INTERVAL_LENGTH;
};
@@ -192,7 +197,8 @@ dissect_heartbeat_data_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_
guint16 heartbeat_data_length;
heartbeat_data_length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET) - PARAMETER_HEADER_LENGTH;
- proto_tree_add_item(parameter_tree, hf_heartbeat_data, parameter_tvb, HEARTBEAT_DATA_OFFSET, heartbeat_data_length, ENC_NA);
+ proto_tree_add_item(parameter_tree, hf_heartbeat_data,
+ parameter_tvb, HEARTBEAT_DATA_OFFSET, heartbeat_data_length, ENC_NA);
proto_item_append_text(parameter_item, " (%u byte%s)", heartbeat_data_length, plurality(heartbeat_data_length, "", "s"));
}
@@ -210,9 +216,11 @@ static const value_string traffic_mode_type_values[] = {
static void
dissect_traffic_mode_type_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- proto_tree_add_item(parameter_tree, hf_traffic_mode_type, parameter_tvb, TRAFFIC_MODE_TYPE_OFFSET, TRAFFIC_MODE_TYPE_LENGTH, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_traffic_mode_type,
+ parameter_tvb, TRAFFIC_MODE_TYPE_OFFSET, TRAFFIC_MODE_TYPE_LENGTH, ENC_BIG_ENDIAN);
proto_item_append_text(parameter_item, " (%s)",
- val_to_str(tvb_get_ntohl(parameter_tvb, TRAFFIC_MODE_TYPE_OFFSET), traffic_mode_type_values, "unknown"));
+ val_to_str_const(tvb_get_ntohl(parameter_tvb, TRAFFIC_MODE_TYPE_OFFSET),
+ traffic_mode_type_values, "unknown"));
}
#define INVALID_VERSION_ERROR 0x01
@@ -253,9 +261,12 @@ static const value_string error_code_values[] = {
static void
dissect_error_code_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- proto_tree_add_item(parameter_tree, hf_error_code, parameter_tvb, ERROR_CODE_OFFSET, ERROR_CODE_LENGTH, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_error_code,
+ parameter_tvb, ERROR_CODE_OFFSET, ERROR_CODE_LENGTH, ENC_BIG_ENDIAN);
proto_item_append_text(parameter_item, " (%s)",
- val_to_str(tvb_get_ntohl(parameter_tvb, ERROR_CODE_OFFSET), error_code_values, "unknown"));
+ val_to_str_const(tvb_get_ntohl(parameter_tvb, ERROR_CODE_OFFSET),
+ error_code_values,
+ "unknown"));
}
#define ASP_STATE_CHANGE_STATUS_TYPE 0x01
@@ -296,13 +307,16 @@ dissect_status_type_identification_parameter(tvbuff_t *parameter_tvb, proto_tree
status_type = tvb_get_ntohs(parameter_tvb, STATUS_TYPE_OFFSET);
status_id = tvb_get_ntohs(parameter_tvb, STATUS_IDENT_OFFSET);
- proto_tree_add_item(parameter_tree, hf_status_type, parameter_tvb, STATUS_TYPE_OFFSET, STATUS_TYPE_LENGTH, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_status_type,
+ parameter_tvb, STATUS_TYPE_OFFSET, STATUS_TYPE_LENGTH, ENC_BIG_ENDIAN);
proto_tree_add_uint_format(parameter_tree, hf_status_id, parameter_tvb, STATUS_IDENT_OFFSET, STATUS_IDENT_LENGTH,
status_id, "Status identification: %u (%s)", status_id,
- val_to_str(status_type * 256 * 256 + status_id, status_type_id_values, "unknown"));
+ val_to_str_const(status_type * 256 * 256 + status_id, status_type_id_values, "unknown"));
proto_item_append_text(parameter_item, " (%s)",
- val_to_str(status_type * 256 * 256 + status_id, status_type_id_values, "unknown status information"));
+ val_to_str_const(status_type * 256 * 256 + status_id,
+ status_type_id_values,
+ "unknown status information"));
}
#define PROTOCOL_DATA_OFFSET PARAMETER_VALUE_OFFSET
@@ -316,8 +330,8 @@ dissect_protocol_data_parameter(tvbuff_t *parameter_tvb, proto_item *parameter_i
protocol_data_length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET) - PARAMETER_HEADER_LENGTH;
protocol_data_tvb = tvb_new_subset(parameter_tvb, PROTOCOL_DATA_OFFSET, protocol_data_length, protocol_data_length);
if(dpnss_handle){
- call_dissector(dpnss_handle, protocol_data_tvb, pinfo, tree);
- return;
+ call_dissector(dpnss_handle, protocol_data_tvb, pinfo, tree);
+ return;
}
call_dissector(data_handle, protocol_data_tvb, pinfo, tree);
@@ -343,9 +357,12 @@ static const value_string release_reason_values[] = {
static void
dissect_release_reason_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- proto_tree_add_item(parameter_tree, hf_release_reason, parameter_tvb, RELEASE_REASON_OFFSET, RELEASE_REASON_LENGTH, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_release_reason,
+ parameter_tvb, RELEASE_REASON_OFFSET, RELEASE_REASON_LENGTH, ENC_BIG_ENDIAN);
proto_item_append_text(parameter_item, " (%s)",
- val_to_str(tvb_get_ntohl(parameter_tvb, RELEASE_REASON_OFFSET), release_reason_values, "unknown"));
+ val_to_str_const(tvb_get_ntohl(parameter_tvb, RELEASE_REASON_OFFSET),
+ release_reason_values,
+ "unknown"));
}
#define TEI_STATUS_ASSIGNED 0
@@ -362,9 +379,12 @@ static const value_string tei_status_values[] = {
static void
dissect_tei_status_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- proto_tree_add_item(parameter_tree, hf_tei_status, parameter_tvb, TEI_STATUS_OFFSET, TEI_STATUS_LENGTH, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_tei_status,
+ parameter_tvb, TEI_STATUS_OFFSET, TEI_STATUS_LENGTH, ENC_BIG_ENDIAN);
proto_item_append_text(parameter_item, " (%s)",
- val_to_str(tvb_get_ntohl(parameter_tvb, TEI_STATUS_OFFSET), tei_status_values, "unknown"));
+ val_to_str_const(tvb_get_ntohl(parameter_tvb, TEI_STATUS_OFFSET),
+ tei_status_values,
+ "unknown"));
}
#define ASP_ID_LENGTH 4
@@ -385,7 +405,8 @@ dissect_dlc_status_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree
/* FIXME: This can be done better */
parameter_value_length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET) - PARAMETER_HEADER_LENGTH;
if (parameter_value_length > 0)
- proto_tree_add_item(parameter_tree, hf_states, parameter_tvb, PARAMETER_VALUE_OFFSET, parameter_value_length, ENC_NA);
+ proto_tree_add_item(parameter_tree,
+ hf_states, parameter_tvb, PARAMETER_VALUE_OFFSET, parameter_value_length, ENC_NA);
}
static void
@@ -395,9 +416,11 @@ dissect_unknown_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, p
parameter_value_length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET) - PARAMETER_HEADER_LENGTH;
if (parameter_value_length > 0)
- proto_tree_add_item(parameter_tree, hf_parameter_value, parameter_tvb, PARAMETER_VALUE_OFFSET, parameter_value_length, ENC_NA);
+ proto_tree_add_item(parameter_tree, hf_parameter_value,
+ parameter_tvb, PARAMETER_VALUE_OFFSET, parameter_value_length, ENC_NA);
proto_item_append_text(parameter_item, " with tag %u and %u byte%s value",
- tvb_get_ntohs(parameter_tvb, PARAMETER_TAG_OFFSET), parameter_value_length, plurality(parameter_value_length, "", "s"));
+ tvb_get_ntohs(parameter_tvb, PARAMETER_TAG_OFFSET),
+ parameter_value_length, plurality(parameter_value_length, "", "s"));
}
#define INT_INTERFACE_IDENTIFIER_PARAMETER_TAG 0x01
@@ -447,13 +470,16 @@ dissect_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tree,
padding_length = tvb_length(parameter_tvb) - length;
/* create proto_tree stuff */
- parameter_item = proto_tree_add_text(dua_tree, parameter_tvb, PARAMETER_HEADER_OFFSET, tvb_length(parameter_tvb), "%s",
- val_to_str(tag, parameter_tag_values, "Unknown parameter"));
+ parameter_item = proto_tree_add_text(dua_tree, parameter_tvb, PARAMETER_HEADER_OFFSET,
+ tvb_length(parameter_tvb), "%s",
+ val_to_str_const(tag, parameter_tag_values, "Unknown parameter"));
parameter_tree = proto_item_add_subtree(parameter_item, ett_dua_parameter);
/* add tag and length to the dua tree */
- proto_tree_add_item(parameter_tree, hf_parameter_tag, parameter_tvb, PARAMETER_TAG_OFFSET, PARAMETER_TAG_LENGTH, ENC_BIG_ENDIAN);
- proto_tree_add_item(parameter_tree, hf_parameter_length, parameter_tvb, PARAMETER_LENGTH_OFFSET, PARAMETER_LENGTH_LENGTH, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_parameter_tag,
+ parameter_tvb, PARAMETER_TAG_OFFSET, PARAMETER_TAG_LENGTH, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_parameter_length,
+ parameter_tvb, PARAMETER_LENGTH_OFFSET, PARAMETER_LENGTH_LENGTH, ENC_BIG_ENDIAN);
switch(tag) {
case INT_INTERFACE_IDENTIFIER_PARAMETER_TAG:
@@ -507,7 +533,8 @@ dissect_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tree,
};
if (padding_length > 0)
- proto_tree_add_item(parameter_tree, hf_parameter_padding, parameter_tvb, PARAMETER_HEADER_OFFSET + length, padding_length, ENC_NA);
+ proto_tree_add_item(parameter_tree, hf_parameter_padding,
+ parameter_tvb, PARAMETER_HEADER_OFFSET + length, padding_length, ENC_NA);
}
static void
@@ -657,18 +684,24 @@ dissect_common_header(tvbuff_t *common_header_tvb, packet_info *pinfo, proto_tre
message_type = tvb_get_guint8(common_header_tvb, MESSAGE_TYPE_OFFSET);
if (check_col(pinfo->cinfo, COL_INFO))
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s ", val_to_str(message_class * 256 + message_type, message_class_type_acro_values, "UNKNOWN"));
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s ", val_to_str_const(message_class * 256 + message_type,
+ message_class_type_acro_values,
+ "Unknown"));
if (dua_tree) {
/* add the components of the common header to the protocol tree */
proto_tree_add_item(dua_tree, hf_version, common_header_tvb, VERSION_OFFSET, VERSION_LENGTH, ENC_BIG_ENDIAN);
proto_tree_add_item(dua_tree, hf_reserved, common_header_tvb, RESERVED_OFFSET, RESERVED_LENGTH, ENC_BIG_ENDIAN);
- proto_tree_add_item(dua_tree, hf_message_class, common_header_tvb, MESSAGE_CLASS_OFFSET, MESSAGE_CLASS_LENGTH, ENC_BIG_ENDIAN);
+ proto_tree_add_item(dua_tree, hf_message_class,
+ common_header_tvb, MESSAGE_CLASS_OFFSET, MESSAGE_CLASS_LENGTH, ENC_BIG_ENDIAN);
proto_tree_add_uint_format(dua_tree, hf_message_type,
common_header_tvb, MESSAGE_TYPE_OFFSET, MESSAGE_TYPE_LENGTH,
message_type, "Message type: %u (%s)",
- message_type, val_to_str(message_class * 256 + message_type, message_class_type_values, "reserved"));
- proto_tree_add_item(dua_tree, hf_message_length, common_header_tvb, MESSAGE_LENGTH_OFFSET, MESSAGE_LENGTH_LENGTH, ENC_BIG_ENDIAN);
+ message_type, val_to_str_const(message_class * 256 + message_type,
+ message_class_type_values,
+ "reserved"));
+ proto_tree_add_item(dua_tree, hf_message_length,
+ common_header_tvb, MESSAGE_LENGTH_OFFSET, MESSAGE_LENGTH_LENGTH, ENC_BIG_ENDIAN);
}
}
@@ -712,36 +745,156 @@ proto_register_dua(void)
/* Setup list of header fields */
static hf_register_info hf[] = {
- { &hf_int_interface_id, { "Integer interface identifier", "dua.int_interface_identifier", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } },
- { &hf_text_interface_id, { "Text interface identifier", "dua.text_interface_identifier", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
- { &hf_info_string, { "Info string", "dua.info_string", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
- { &hf_dlci_reserved, { "Reserved", "dua.dlci_reserved", FT_UINT16, BASE_DEC, NULL, RESERVED_BIT_MASK, NULL, HFILL } },
- { &hf_dlci_v_bit, { "V-bit", "dua.dlci_v_bit", FT_BOOLEAN, 16, NULL, V_BIT_MASK, NULL, HFILL } },
- { &hf_dlci_zero_bit, { "Zero bit", "dua.dlci_zero_bit", FT_BOOLEAN, 16, NULL, ZERO_BIT_MASK, NULL, HFILL } },
- { &hf_dlci_channel, { "Channel", "dua.dlci_channel", FT_UINT16, BASE_DEC, NULL, CHANNEL_BIT_MASK, NULL, HFILL } },
- { &hf_dlci_one_bit, { "One bit", "dua.dlci_one_bit", FT_BOOLEAN, 16, NULL, ONE_BIT_MASK, NULL, HFILL } },
- { &hf_dlci_spare, { "Spare", "dua.dlci_spare", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
- { &hf_diag_info, { "Diagnostic information", "dua.diagnostic_information", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
- { &hf_interface_range_start, { "Start", "dua.interface_range_start", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
- { &hf_interface_range_end, { "End", "dua.interface_range_end", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
- { &hf_heartbeat_data, { "Heartbeat data", "dua.heartbeat_data", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
- { &hf_traffic_mode_type, { "Traffic mode type", "dua.traffic_mode_type", FT_UINT32, BASE_HEX, VALS(traffic_mode_type_values), 0x0, NULL, HFILL } },
- { &hf_error_code, { "Error code", "dua.error_code", FT_UINT32, BASE_DEC, VALS(error_code_values), 0x0, NULL, HFILL } },
- { &hf_status_type, { "Status type", "dua.status_type", FT_UINT16, BASE_DEC, VALS(status_type_values), 0x0, NULL, HFILL } },
- { &hf_status_id, { "Status identification", "dua.status_identification", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
- { &hf_release_reason, { "Reason", "dua.release_reason", FT_UINT32, BASE_HEX, VALS(release_reason_values), 0x0, NULL, HFILL } },
- { &hf_tei_status, { "TEI status", "dua.tei_status", FT_UINT32, BASE_HEX, VALS(tei_status_values), 0x0, NULL, HFILL } },
- { &hf_asp_id, { "ASP identifier", "dua.asp_identifier", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } },
- { &hf_states, { "States", "dua.states", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
- { &hf_parameter_tag, { "Parameter Tag", "dua.parameter_tag", FT_UINT16, BASE_DEC, VALS(parameter_tag_values), 0x0, NULL, HFILL } },
- { &hf_parameter_length, { "Parameter length", "dua.parameter_length", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
- { &hf_parameter_value, { "Parameter value", "dua.parameter_value", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
- { &hf_parameter_padding, { "Parameter padding", "dua.parameter_padding", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
- { &hf_version, { "Version", "dua.version", FT_UINT8, BASE_DEC, VALS(protocol_version_values), 0x0, NULL, HFILL } },
- { &hf_reserved, { "Reserved", "dua.reserved", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
- { &hf_message_class, { "Message class", "dua.message_class", FT_UINT8, BASE_DEC, VALS(message_class_values), 0x0, NULL, HFILL } },
- { &hf_message_type, { "Message Type", "dua.message_type", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
- { &hf_message_length, { "Message length", "dua.message_length", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_int_interface_id,
+ { "Integer interface identifier", "dua.int_interface_identifier",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_text_interface_id,
+ { "Text interface identifier", "dua.text_interface_identifier",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_info_string,
+ { "Info string", "dua.info_string",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_dlci_reserved,
+ { "Reserved", "dua.dlci_reserved",
+ FT_UINT16, BASE_DEC, NULL, RESERVED_BIT_MASK,
+ NULL, HFILL } },
+
+ { &hf_dlci_v_bit,
+ { "V-bit", "dua.dlci_v_bit",
+ FT_BOOLEAN, 16, NULL, V_BIT_MASK,
+ NULL, HFILL } },
+
+ { &hf_dlci_zero_bit,
+ { "Zero bit", "dua.dlci_zero_bit",
+ FT_BOOLEAN, 16, NULL, ZERO_BIT_MASK,
+ NULL, HFILL } },
+
+ { &hf_dlci_channel,
+ { "Channel", "dua.dlci_channel",
+ FT_UINT16, BASE_DEC, NULL, CHANNEL_BIT_MASK,
+ NULL, HFILL } },
+
+ { &hf_dlci_one_bit,
+ { "One bit", "dua.dlci_one_bit",
+ FT_BOOLEAN, 16, NULL, ONE_BIT_MASK,
+ NULL, HFILL } },
+
+ { &hf_dlci_spare,
+ { "Spare", "dua.dlci_spare",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_diag_info,
+ { "Diagnostic information", "dua.diagnostic_information",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_interface_range_start,
+ { "Start", "dua.interface_range_start",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_interface_range_end,
+ { "End", "dua.interface_range_end",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_heartbeat_data,
+ { "Heartbeat data", "dua.heartbeat_data",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_traffic_mode_type,
+ { "Traffic mode type", "dua.traffic_mode_type",
+ FT_UINT32, BASE_HEX, VALS(traffic_mode_type_values), 0x0,
+ NULL, HFILL } },
+
+ { &hf_error_code,
+ { "Error code", "dua.error_code",
+ FT_UINT32, BASE_DEC, VALS(error_code_values), 0x0,
+ NULL, HFILL } },
+
+ { &hf_status_type,
+ { "Status type", "dua.status_type",
+ FT_UINT16, BASE_DEC, VALS(status_type_values), 0x0,
+ NULL, HFILL } },
+
+ { &hf_status_id,
+ { "Status identification", "dua.status_identification",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_release_reason,
+ { "Reason", "dua.release_reason",
+ FT_UINT32, BASE_HEX, VALS(release_reason_values), 0x0,
+ NULL, HFILL } },
+
+ { &hf_tei_status,
+ { "TEI status", "dua.tei_status",
+ FT_UINT32, BASE_HEX, VALS(tei_status_values), 0x0,
+ NULL, HFILL } },
+
+ { &hf_asp_id,
+ { "ASP identifier", "dua.asp_identifier",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_states,
+ { "States", "dua.states",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_parameter_tag,
+ { "Parameter Tag", "dua.parameter_tag",
+ FT_UINT16, BASE_DEC, VALS(parameter_tag_values), 0x0,
+ NULL, HFILL } },
+
+ { &hf_parameter_length,
+ { "Parameter length", "dua.parameter_length",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_parameter_value,
+ { "Parameter value", "dua.parameter_value",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_parameter_padding,
+ { "Parameter padding", "dua.parameter_padding",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_version,
+ { "Version", "dua.version",
+ FT_UINT8, BASE_DEC, VALS(protocol_version_values), 0x0,
+ NULL, HFILL } },
+
+ { &hf_reserved,
+ { "Reserved", "dua.reserved",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_message_class,
+ { "Message class", "dua.message_class",
+ FT_UINT8, BASE_DEC, VALS(message_class_values), 0x0,
+ NULL, HFILL } },
+
+ { &hf_message_type,
+ { "Message Type", "dua.message_type",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_message_length,
+ { "Message length", "dua.message_length",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
};
/* Setup protocol subtree array */
static gint *ett[] = {
@@ -765,8 +918,8 @@ proto_reg_handoff_dua(void)
{
dissector_handle_t dua_handle;
- dua_handle = find_dissector("dua");
- data_handle = find_dissector("data");
+ dua_handle = find_dissector("dua");
+ data_handle = find_dissector("data");
dpnss_handle = find_dissector("dpnss");
dissector_add_uint("sctp.ppi", DUA_PAYLOAD_PROTOCOL_ID, dua_handle);
}
diff --git a/epan/dissectors/packet-dvb-ait.c b/epan/dissectors/packet-dvb-ait.c
new file mode 100644
index 0000000000..f5a0916a80
--- /dev/null
+++ b/epan/dissectors/packet-dvb-ait.c
@@ -0,0 +1,316 @@
+/* packet-dvb-ait.c
+ * Routines for DVB Application Information Table (AIT) dissection
+ * Copyright 2012, Martin Kaiser <martin@kaiser.cx>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+/* This dissector processes a DVB Application Information Table (AIT) as
+ * defined in ETSI TS 102 809. */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+#include <epan/packet.h>
+
+#include "packet-mpeg-sect.h"
+#include "packet-mpeg-descriptor.h"
+
+static int proto_dvb_ait = -1;
+
+static gint ett_dvb_ait = -1;
+static gint ett_dvb_ait_descr = -1;
+static gint ett_dvb_ait_app = -1;
+
+static int hf_dvb_ait_test_app_flag = -1;
+static int hf_dvb_ait_app_type = -1;
+static int hf_dvb_ait_version_number = -1;
+static int hf_dvb_ait_current_next_indicator = -1;
+static int hf_dvb_ait_section_number = -1;
+static int hf_dvb_ait_last_section_number = -1;
+static int hf_dvb_ait_descr_loop_len = -1;
+static int hf_dvb_ait_descr_tag = -1;
+static int hf_dvb_ait_descr_len = -1;
+static int hf_dvb_ait_descr_data = -1;
+static int hf_dvb_ait_app_loop_len = -1;
+static int hf_dvb_ait_org_id = -1;
+static int hf_dvb_ait_app_id = -1;
+static int hf_dvb_ait_app_ctrl_code = -1;
+
+#define DVB_AIT_TID 0x74
+
+static const value_string app_ctrl_code[] = {
+ { 0x01, "Autostart" },
+ { 0x02, "Present" },
+ { 0x03, "Destroy" },
+ { 0x04, "Kill" },
+ { 0x05, "Prefetch" },
+ { 0x06, "Remote" },
+ { 0x07, "Disabled" },
+ { 0x08, "Playback autostart" },
+ { 0, NULL }
+};
+
+/* tags of the descriptors defined in ETSI TS 102 809
+ some of these tags are conflicting with MPEG2 or DVB-SI definitions,
+ therefore these descriptors aren't supported by packet-mpeg-descriptor.c */
+static const value_string ait_descr_tag[] = {
+ { 0x00, "Application descriptor" },
+ { 0x01, "Application name descriptor" },
+ { 0x02, "Transport protocol descriptor" },
+ { 0x05, "External application authorization descriptor" },
+ { 0x06, "Application recording descriptor" },
+ { 0x0B, "Application icons descriptor" },
+ { 0x10, "Application storage descriptor" },
+ { 0x14, "Graphics constraints descriptor" },
+ { 0x15, "Simple application location descriptor" },
+ { 0x17, "Simple application boundary descriptor" },
+ { 0x6F, "Application signalling descriptor" },
+ { 0, NULL }
+};
+
+static gint
+dissect_dvb_ait_descriptor(tvbuff_t *tvb, guint offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gint ret = 0;
+ guint offset_start;
+ guint8 tag, len;
+ proto_item *descr_tree_ti = NULL;
+ proto_tree *descr_tree = NULL;
+
+ tag = tvb_get_guint8(tvb, offset);
+ len = tvb_get_guint8(tvb, offset+1);
+
+ /* if the descriptor is a special one that's defined in ETSI TS 102 809,
+ we dissect it ourselves
+ otherwise, we assume it's a generic DVB-SI descriptor and pass it
+ on to packet-mpeg-descriptor */
+ if (match_strval(tag, ait_descr_tag)) {
+
+ offset_start = offset;
+ descr_tree_ti = proto_tree_add_text(tree, tvb, offset_start, len+2,
+ "Descriptor Tag=0x%02x", tag);
+ descr_tree = proto_item_add_subtree(descr_tree_ti, ett_dvb_ait_descr);
+
+ proto_tree_add_item(descr_tree, hf_dvb_ait_descr_tag,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(descr_tree, hf_dvb_ait_descr_len,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(descr_tree, hf_dvb_ait_descr_data,
+ tvb, offset, len, ENC_NA);
+ offset += len;
+
+ ret = (gint)(offset-offset_start);
+ }
+ else
+ ret = (gint)proto_mpeg_descriptor_dissect(tvb, offset, tree);
+
+ return ret;
+}
+
+
+static int
+dissect_dvb_ait(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ gint offset=0;
+ proto_item *ait_tree_ti = NULL, *app_tree_ti = NULL;
+ proto_tree *ait_tree = NULL, *ait_app_tree = NULL;
+ gint offset_loop_start, offset_inner_loop_start, offset_app_start;
+ guint16 descr_loop_len, app_loop_len;
+ gint ret;
+ guint32 org_id;
+ guint16 app_id;
+
+ col_clear(pinfo->cinfo, COL_INFO);
+ col_set_str(pinfo->cinfo, COL_INFO, "Application Information Table (AIT)");
+
+ if (tree) {
+ ait_tree_ti = proto_tree_add_protocol_format(tree, proto_dvb_ait,
+ tvb, 0, -1, "Application Information Table (AIT)");
+ ait_tree = proto_item_add_subtree(ait_tree_ti, ett_dvb_ait);
+ }
+
+ offset += packet_mpeg_sect_header(tvb, offset, ait_tree, NULL, NULL);
+
+ proto_tree_add_item(ait_tree, hf_dvb_ait_test_app_flag,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ait_tree, hf_dvb_ait_app_type,
+ tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ /* no hf for reserved bits */
+ proto_tree_add_item(ait_tree, hf_dvb_ait_version_number,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ait_tree, hf_dvb_ait_current_next_indicator,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(ait_tree, hf_dvb_ait_section_number,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(ait_tree, hf_dvb_ait_last_section_number,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ descr_loop_len = tvb_get_ntohs(tvb, offset) & 0x0FFF;
+ proto_tree_add_item(ait_tree, hf_dvb_ait_descr_loop_len,
+ tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ offset_loop_start = offset;
+ while (offset-offset_loop_start < descr_loop_len) {
+ ret = dissect_dvb_ait_descriptor(tvb, offset, pinfo, ait_tree);
+ if (ret<=0)
+ break;
+ offset += ret;
+ }
+
+ app_loop_len = tvb_get_ntohs(tvb, offset) & 0x0FFF;
+ proto_tree_add_item(ait_tree, hf_dvb_ait_app_loop_len,
+ tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ offset_loop_start = offset;
+ while (offset-offset_loop_start < app_loop_len) {
+ offset_app_start = offset;
+ org_id = tvb_get_ntohl(tvb, offset);
+ app_id = tvb_get_ntohs(tvb, offset+4);
+ app_tree_ti = proto_tree_add_text(ait_tree, tvb, offset, -1,
+ "Application: Org 0x%x, App 0x%x", org_id, app_id);
+ ait_app_tree = proto_item_add_subtree(app_tree_ti, ett_dvb_ait_app);
+
+ proto_tree_add_item(ait_app_tree, hf_dvb_ait_org_id,
+ tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ proto_tree_add_item(ait_app_tree, hf_dvb_ait_app_id,
+ tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(ait_app_tree, hf_dvb_ait_app_ctrl_code,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ descr_loop_len = tvb_get_ntohs(tvb, offset) & 0x0FFF;
+ proto_tree_add_item(ait_app_tree, hf_dvb_ait_descr_loop_len,
+ tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ offset_inner_loop_start = offset;
+ while (offset-offset_inner_loop_start < descr_loop_len) {
+ ret = dissect_dvb_ait_descriptor(tvb, offset, pinfo, ait_app_tree);
+ if (ret<=0)
+ break;
+ offset += ret;
+ }
+ proto_item_set_len(app_tree_ti, offset-offset_app_start);
+ }
+
+ offset += packet_mpeg_sect_crc(tvb, pinfo, ait_tree, 0, offset);
+
+ proto_item_set_len(ait_tree_ti, offset);
+
+ return offset;
+}
+
+void
+proto_register_dvb_ait(void)
+{
+ static gint *ett[] = {
+ &ett_dvb_ait,
+ &ett_dvb_ait_descr,
+ &ett_dvb_ait_app
+ };
+
+ static hf_register_info hf[] = {
+ { &hf_dvb_ait_test_app_flag,
+ { "Test application flag", "dvb_ait.test_app_flag",
+ FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL } },
+ { &hf_dvb_ait_app_type,
+ { "Application type", "dvb_ait.app_type",
+ FT_UINT16, BASE_HEX, NULL, 0x7FFF, NULL, HFILL } },
+ { &hf_dvb_ait_version_number,
+ { "Version Number", "dvb_ait.version",
+ FT_UINT8, BASE_HEX, NULL, 0x3E, NULL, HFILL } },
+ { &hf_dvb_ait_current_next_indicator,
+ { "Current/Next Indicator", "dvb_ait.cur_next_ind",
+ FT_UINT8, BASE_DEC, NULL, 0x01, NULL, HFILL } },
+ { &hf_dvb_ait_section_number,
+ { "Section Number", "dvb_ait.sect_num",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } },
+ { &hf_dvb_ait_last_section_number,
+ { "Last Section Number", "dvb_ait.last_sect_num",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } },
+ { &hf_dvb_ait_descr_loop_len,
+ { "Descriptor loop length", "dvb_ait.descr_loop_len",
+ FT_UINT16, BASE_DEC, NULL, 0x0FFF, NULL, HFILL } },
+ { &hf_dvb_ait_descr_tag,
+ { "Descriptor Tag", "dvb_ait.descr.tag",
+ FT_UINT8, BASE_HEX, VALS(ait_descr_tag), 0, NULL, HFILL } },
+ { &hf_dvb_ait_descr_len,
+ { "Descriptor Length", "dvb_ait.descr.len",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } },
+ { &hf_dvb_ait_descr_data,
+ { "Descriptor Data", "dvb_ait.descr.data",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL } },
+ { &hf_dvb_ait_app_loop_len,
+ { "Application loop length", "dvb_ait.app_loop_len",
+ FT_UINT16, BASE_DEC, NULL, 0x0FFF, NULL, HFILL } },
+ { &hf_dvb_ait_org_id,
+ { "Organisation ID", "dvb_ait.app.org_id",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL } },
+ { &hf_dvb_ait_app_id,
+ { "Application ID", "dvb_ait.app.app_id",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } },
+ { &hf_dvb_ait_app_ctrl_code,
+ { "Application control code", "dvb_ait.app.ctrl_code",
+ FT_UINT8, BASE_HEX, VALS(app_ctrl_code), 0, NULL, HFILL } }
+ };
+
+ proto_dvb_ait = proto_register_protocol(
+ "DVB Application Information Table", "DVB AIT", "dvb_ait");
+
+ proto_register_field_array(proto_dvb_ait, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+}
+
+
+void
+proto_reg_handoff_dvb_ait(void)
+{
+ dissector_handle_t dvb_ait_handle;
+
+ dvb_ait_handle = new_create_dissector_handle(dissect_dvb_ait, proto_dvb_ait);
+ dissector_add_uint("mpeg_sect.tid", DVB_AIT_TID, dvb_ait_handle);
+}
+
+/*
+ * Editor modelines - http://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vi: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
+ */
diff --git a/epan/dissectors/packet-dvb-bat.c b/epan/dissectors/packet-dvb-bat.c
new file mode 100644
index 0000000000..15521c63c7
--- /dev/null
+++ b/epan/dissectors/packet-dvb-bat.c
@@ -0,0 +1,277 @@
+/* packet-dvb-bat.c
+ * Routines for DVB (ETSI EN 300 468) Bouquet Association Table (BAT) dissection
+ * Copyright 2012, Guy Martin <gmsoft@tuxicoman.be>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; bather version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+#include <epan/dissectors/packet-mpeg-sect.h>
+
+#include "packet-mpeg-descriptor.h"
+
+static int proto_dvb_bat = -1;
+static int hf_dvb_bat_bouquet_id = -1;
+static int hf_dvb_bat_reserved1 = -1;
+static int hf_dvb_bat_version_number = -1;
+static int hf_dvb_bat_current_next_indicator = -1;
+static int hf_dvb_bat_section_number = -1;
+static int hf_dvb_bat_last_section_number = -1;
+
+static int hf_dvb_bat_reserved2 = -1;
+static int hf_dvb_bat_bouquet_descriptors_length = -1;
+
+static int hf_dvb_bat_reserved3 = -1;
+static int hf_dvb_bat_transport_stream_loop_length = -1;
+
+static int hf_dvb_bat_transport_stream_id = -1;
+static int hf_dvb_bat_original_network_id = -1;
+static int hf_dvb_bat_reserved4 = -1;
+static int hf_dvb_bat_transport_descriptors_length = -1;
+
+static gint ett_dvb_bat = -1;
+static gint ett_dvb_bat_transport_stream = -1;
+
+
+#define DVB_BAT_TID 0x4A
+
+#define DVB_BAT_RESERVED1_MASK 0xC0
+#define DVB_BAT_VERSION_NUMBER_MASK 0x3E
+#define DVB_BAT_CURRENT_NEXT_INDICATOR_MASK 0x01
+
+#define DVB_BAT_RESERVED2_MASK 0xF000
+#define DVB_BAT_BOUQUET_DESCRIPTORS_LENGTH_MASK 0x0FFF
+
+#define DVB_BAT_RESERVED3_MASK 0xF000
+#define DVB_BAT_TRANSPORT_STREAM_LOOP_LENGTH_MASK 0x0FFF
+
+#define DVB_BAT_RESERVED4_MASK 0xF000
+#define DVB_BAT_TRANSPORT_DESCRIPTORS_LENGTH_MASK 0x0FFF
+
+static const value_string dvb_bat_cur_next_vals[] = {
+ { 0, "Not yet applicable" },
+ { 1, "Currently applicable" },
+
+ { 0, NULL }
+};
+
+static const value_string dvb_bat_running_status_vals[] = {
+ { 0, "Undefined" },
+ { 1, "Not Running" },
+ { 2, "Starts in a few seconds" },
+ { 3, "Pausing" },
+ { 4, "Running" },
+ { 5, "Service off-air" },
+
+ { 0, NULL }
+};
+
+static const value_string dvb_bat_free_ca_mode_vals[] = {
+ { 0, "Not Scrambled" },
+ { 1, "One or more component scrambled" },
+
+ { 0, NULL }
+};
+
+static void
+dissect_dvb_bat(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+
+ guint offset = 0, length = 0, descriptor_end = 0, ts_loop_end = 0;
+ guint16 ts_id = 0, descriptor_len = 0, ts_loop_len = 0;
+
+ proto_item *ti = NULL;
+ proto_tree *dvb_bat_tree = NULL;
+ proto_item *tsi = NULL;
+ proto_tree *transport_stream_tree = NULL;
+
+ col_clear(pinfo->cinfo, COL_INFO);
+ col_set_str(pinfo->cinfo, COL_INFO, "Bouquet Association Table (BAT)");
+
+ if (!tree)
+ return;
+
+ ti = proto_tree_add_item(tree, proto_dvb_bat, tvb, offset, -1, ENC_NA);
+ dvb_bat_tree = proto_item_add_subtree(ti, ett_dvb_bat);
+
+ offset += packet_mpeg_sect_header(tvb, offset, dvb_bat_tree, &length, NULL);
+ length -= 4;
+
+ proto_tree_add_item(dvb_bat_tree, hf_dvb_bat_bouquet_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(dvb_bat_tree, hf_dvb_bat_reserved1, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(dvb_bat_tree, hf_dvb_bat_version_number, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(dvb_bat_tree, hf_dvb_bat_current_next_indicator, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(dvb_bat_tree, hf_dvb_bat_section_number, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(dvb_bat_tree, hf_dvb_bat_last_section_number, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ descriptor_len = tvb_get_ntohs(tvb, offset) & DVB_BAT_BOUQUET_DESCRIPTORS_LENGTH_MASK;
+ proto_tree_add_item(dvb_bat_tree, hf_dvb_bat_reserved2, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(dvb_bat_tree, hf_dvb_bat_bouquet_descriptors_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ descriptor_end = offset + descriptor_len;
+ while (offset < descriptor_end)
+ offset += proto_mpeg_descriptor_dissect(tvb, offset, dvb_bat_tree);
+
+ ts_loop_len = tvb_get_ntohs(tvb, offset) & DVB_BAT_TRANSPORT_STREAM_LOOP_LENGTH_MASK;
+ proto_tree_add_item(dvb_bat_tree, hf_dvb_bat_reserved3, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(dvb_bat_tree, hf_dvb_bat_transport_stream_loop_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ ts_loop_end = offset + ts_loop_len;
+ while (offset < ts_loop_end) {
+ ts_id = tvb_get_ntohs(tvb, offset);
+ descriptor_len = tvb_get_ntohs(tvb, offset + 4) & DVB_BAT_TRANSPORT_DESCRIPTORS_LENGTH_MASK;
+
+ tsi = proto_tree_add_text(dvb_bat_tree, tvb, offset, 6 + descriptor_len, "Transport Stream 0x%04x", ts_id);
+ transport_stream_tree = proto_item_add_subtree(tsi, ett_dvb_bat_transport_stream);
+
+ proto_tree_add_item(transport_stream_tree, hf_dvb_bat_transport_stream_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(transport_stream_tree, hf_dvb_bat_original_network_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(transport_stream_tree, hf_dvb_bat_reserved4, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(transport_stream_tree, hf_dvb_bat_transport_descriptors_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ descriptor_end = offset + descriptor_len;
+ while (offset < descriptor_end)
+ offset += proto_mpeg_descriptor_dissect(tvb, offset, transport_stream_tree);
+ }
+
+ packet_mpeg_sect_crc(tvb, pinfo, dvb_bat_tree, 0, offset);
+}
+
+
+void
+proto_register_dvb_bat(void)
+{
+
+ static hf_register_info hf[] = {
+
+ { &hf_dvb_bat_bouquet_id, {
+ "Service ID", "dvb_bat.sid",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_bat_reserved1, {
+ "Reserved", "dvb_bat.reserved1",
+ FT_UINT8, BASE_HEX, NULL, DVB_BAT_RESERVED1_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_bat_version_number, {
+ "Version Number", "dvb_bat.version",
+ FT_UINT8, BASE_HEX, NULL, DVB_BAT_VERSION_NUMBER_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_bat_current_next_indicator, {
+ "Current/Next Indicator", "dvb_bat.cur_next_ind",
+ FT_UINT8, BASE_DEC, VALS(dvb_bat_cur_next_vals), DVB_BAT_CURRENT_NEXT_INDICATOR_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_bat_section_number, {
+ "Section Number", "dvb_bat.sect_num",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_bat_last_section_number, {
+ "Last Section Number", "dvb_bat.last_sect_num",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_bat_reserved2, {
+ "Reserved", "dvb_bat.reserved2",
+ FT_UINT16, BASE_HEX, NULL, DVB_BAT_RESERVED2_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_bat_bouquet_descriptors_length, {
+ "Bouquet Descriptors Length", "dvb_bat.bouquet_desc_len",
+ FT_UINT16, BASE_DEC, NULL, DVB_BAT_BOUQUET_DESCRIPTORS_LENGTH_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_bat_reserved3, {
+ "Reserved", "dvb_bat.reserved3",
+ FT_UINT16, BASE_HEX, NULL, DVB_BAT_RESERVED3_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_bat_transport_stream_loop_length, {
+ "Transport Stream Loop Length", "dvb_bat.ts_loop_len",
+ FT_UINT16, BASE_DEC, NULL, DVB_BAT_TRANSPORT_STREAM_LOOP_LENGTH_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_bat_transport_stream_id, {
+ "Transport Stream ID", "dvb_bat.ts.id",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_bat_original_network_id, {
+ "Original Network ID", "dvb_bat.ts.original_nid",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_bat_reserved4, {
+ "Reserved", "dvb_bat.ts.reserved",
+ FT_UINT16, BASE_HEX, NULL, DVB_BAT_RESERVED4_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_bat_transport_descriptors_length, {
+ "Bouquet Descriptors Length", "dvb_bat.ts.desc_len",
+ FT_UINT16, BASE_DEC, NULL, DVB_BAT_BOUQUET_DESCRIPTORS_LENGTH_MASK, NULL, HFILL
+ } },
+
+ };
+
+ static gint *ett[] = {
+ &ett_dvb_bat,
+ &ett_dvb_bat_transport_stream
+ };
+
+ proto_dvb_bat = proto_register_protocol("DVB Bouquet Association Table", "DVB BAT", "dvb_bat");
+
+ proto_register_field_array(proto_dvb_bat, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+}
+
+
+void proto_reg_handoff_dvb_bat(void)
+{
+ dissector_handle_t dvb_bat_handle;
+
+ dvb_bat_handle = create_dissector_handle(dissect_dvb_bat, proto_dvb_bat);
+
+ dissector_add_uint("mpeg_sect.tid", DVB_BAT_TID, dvb_bat_handle);
+}
diff --git a/epan/dissectors/packet-dvb-data-mpe.c b/epan/dissectors/packet-dvb-data-mpe.c
index ad947838ac..21ef8b3e8e 100644
--- a/epan/dissectors/packet-dvb-data-mpe.c
+++ b/epan/dissectors/packet-dvb-data-mpe.c
@@ -30,7 +30,7 @@
#include <glib.h>
#include <epan/packet.h>
-#include <epan/prefs.h>
+#include <epan/dissectors/packet-mpeg-sect.h>
static int proto_dvb_data_mpe = -1;
static int hf_dvb_data_mpe_reserved = -1;
@@ -47,7 +47,7 @@ static gint ett_dvb_data_mpe = -1;
static dissector_handle_t ip_handle;
static dissector_handle_t llc_handle;
-#define DVB_DATA_MPE_TID 0x3E
+#define DVB_DATA_MPE_TID 0x3E
#define DVB_DATA_MPE_RESERVED_MASK 0xC0
@@ -57,7 +57,7 @@ static dissector_handle_t llc_handle;
#define DVB_DATA_MPE_CURRENT_NEXT_INDICATOR_MASK 0x01
static const value_string dvb_rcs_cur_next_vals[] = {
-
+
{ 0x0, "Not yet applicable" },
{ 0x1, "Currently applicable" },
{ 0, NULL },
@@ -65,33 +65,31 @@ static const value_string dvb_rcs_cur_next_vals[] = {
};
-void
+static void
dissect_dvb_data_mpe(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- guint offset = 0;
- guint8 llc_snap_flag = 0;
- int i;
+ guint offset = 0, tot_len = 0;
+ guint8 llc_snap_flag = 0;
+ int i;
- proto_item *ti = NULL;
+ proto_item *ti = NULL;
proto_tree *dvb_data_mpe_tree = NULL;
- tvbuff_t *mac_tvb = NULL;
- tvbuff_t *mac_bytes_tvb[6] = {0};
- tvbuff_t *data_tvb = NULL;
+ tvbuff_t *mac_tvb = NULL;
+ tvbuff_t *mac_bytes_tvb[6];
+ tvbuff_t *data_tvb = NULL;
/* The TVB should start right after the section_length in the Section packet */
- col_clear(pinfo->cinfo, COL_PROTOCOL);
col_set_str(pinfo->cinfo, COL_PROTOCOL, "DVB-DATA");
- col_clear(pinfo->cinfo, COL_INFO);
col_set_str(pinfo->cinfo, COL_INFO, "MultiProtocol Encapsulation");
- if (!tree)
- return;
-
ti = proto_tree_add_item(tree, proto_dvb_data_mpe, tvb, offset, -1, ENC_NA);
dvb_data_mpe_tree = proto_item_add_subtree(ti, ett_dvb_data_mpe);
+ offset += packet_mpeg_sect_header(tvb, offset, dvb_data_mpe_tree, &tot_len, NULL);
+
+
/* Parse the DMC-CC private section header */
mac_bytes_tvb[5] = tvb_new_subset(tvb, offset, 1, 1);
@@ -126,10 +124,9 @@ dissect_dvb_data_mpe(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
tvb_composite_finalize(mac_tvb);
proto_tree_add_item(dvb_data_mpe_tree, hf_dvb_data_mpe_dst_mac, mac_tvb, 0 , 6, ENC_NA);
- col_clear(pinfo->cinfo, COL_RES_DL_DST);
col_add_str(pinfo->cinfo, COL_RES_DL_DST, tvb_ether_to_str(mac_tvb, 0));
- data_tvb = tvb_new_subset(tvb, offset, -1, -1);
+ data_tvb = tvb_new_subset_remaining(tvb, offset);
if (llc_snap_flag) {
call_dissector(llc_handle, data_tvb, pinfo, tree);
@@ -137,8 +134,7 @@ dissect_dvb_data_mpe(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
call_dissector(ip_handle, data_tvb, pinfo, tree);
}
-
-
+ packet_mpeg_sect_crc(tvb, pinfo, dvb_data_mpe_tree, 0, tot_len - 1);
return;
}
@@ -148,7 +144,7 @@ proto_register_dvb_data_mpe(void)
{
static hf_register_info hf[] = {
-
+
/* DSM-CC common fields */
{ &hf_dvb_data_mpe_reserved, {
"Reserved", "dvb_data_mpe.reserved",
@@ -164,7 +160,7 @@ proto_register_dvb_data_mpe(void)
"Address Scrambling Control", "dvb_data_mpe.addr_scrambling",
FT_UINT8, BASE_HEX, NULL, DVB_DATA_MPE_ADDRESS_SCRAMBLING_MASK, NULL, HFILL
} },
-
+
{ &hf_dvb_data_mpe_llc_snap_flag, {
"LLC SNAP Flag", "dvb_data_mpe.llc_snap_flag",
FT_UINT8, BASE_HEX, NULL, DVB_DATA_MPE_LLC_SNAP_FLAG_MASK, NULL, HFILL
@@ -179,7 +175,7 @@ proto_register_dvb_data_mpe(void)
"Section Number", "dvb_data_mpe.sect_num",
FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
} },
-
+
{ &hf_dvb_data_mpe_last_section_number, {
"Last Section Number", "dvb_data_mpe.last_sect_num",
FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
@@ -201,19 +197,20 @@ proto_register_dvb_data_mpe(void)
proto_register_field_array(proto_dvb_data_mpe, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
-
+
}
void
proto_reg_handoff_dvb_data_mpe(void)
{
+
dissector_handle_t dvb_data_mpe_handle;
dvb_data_mpe_handle = create_dissector_handle(dissect_dvb_data_mpe, proto_dvb_data_mpe);
dissector_add_uint("mpeg_sect.tid", DVB_DATA_MPE_TID, dvb_data_mpe_handle);
- ip_handle = find_dissector("ip");
+ ip_handle = find_dissector("ip");
llc_handle = find_dissector("llc");
}
diff --git a/epan/dissectors/packet-dvb-eit.c b/epan/dissectors/packet-dvb-eit.c
new file mode 100644
index 0000000000..0f3086bde3
--- /dev/null
+++ b/epan/dissectors/packet-dvb-eit.c
@@ -0,0 +1,308 @@
+/* packet-dvb-eit.c
+ * Routines for DVB (ETSI EN 300 468) Event Information Table (EIT) dissection
+ * Copyright 2012, Guy Martin <gmsoft@tuxicoman.be>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+#include <epan/dissectors/packet-mpeg-sect.h>
+
+#include "packet-mpeg-descriptor.h"
+
+static int proto_dvb_eit = -1;
+static int hf_dvb_eit_service_id = -1;
+static int hf_dvb_eit_reserved = -1;
+static int hf_dvb_eit_version_number = -1;
+static int hf_dvb_eit_current_next_indicator = -1;
+static int hf_dvb_eit_section_number = -1;
+static int hf_dvb_eit_last_section_number = -1;
+
+static int hf_dvb_eit_transport_stream_id = -1;
+static int hf_dvb_eit_original_network_id = -1;
+static int hf_dvb_eit_segment_last_section_number = -1;
+static int hf_dvb_eit_last_table_id = -1;
+
+static int hf_dvb_eit_event_id = -1;
+static int hf_dvb_eit_start_time = -1;
+static int hf_dvb_eit_duration = -1;
+static int hf_dvb_eit_running_status = -1;
+static int hf_dvb_eit_free_ca_mode = -1;
+static int hf_dvb_eit_descriptors_loop_length = -1;
+
+static gint ett_dvb_eit = -1;
+static gint ett_dvb_eit_event = -1;
+
+
+#define DVB_EIT_TID_MIN 0x4E
+#define DVB_EIT_TID_MAX 0x6F
+
+#define DVB_EIT_RESERVED_MASK 0xC0
+#define DVB_EIT_VERSION_NUMBER_MASK 0x3E
+#define DVB_EIT_CURRENT_NEXT_INDICATOR_MASK 0x01
+
+#define DVB_EIT_RUNNING_STATUS_MASK 0xE000
+#define DVB_EIT_FREE_CA_MODE_MASK 0x1000
+#define DVB_EIT_DESCRIPTORS_LOOP_LENGTH_MASK 0x0FFF
+
+static const value_string dvb_eit_cur_next_vals[] = {
+ { 0, "Not yet applicable" },
+ { 1, "Currently applicable" },
+
+ { 0, NULL }
+};
+
+static const value_string dvb_eit_running_status_vals[] = {
+ { 0, "Undefined" },
+ { 1, "Not Running" },
+ { 2, "Starts in a few seconds" },
+ { 3, "Pausing" },
+ { 4, "Running" },
+ { 5, "Service off-air" },
+
+ { 0, NULL }
+};
+
+static const value_string dvb_eit_free_ca_mode_vals[] = {
+ { 0, "Not Scrambled" },
+ { 1, "One or more component scrambled" },
+
+ { 0, NULL }
+};
+
+static void
+dissect_dvb_eit(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+
+ guint offset = 0, length = 0, descriptor_end = 0;
+ guint16 evt_id = 0, descriptor_len = 0;
+
+ proto_item *ti = NULL;
+ proto_tree *dvb_eit_tree = NULL;
+ proto_item *ei = NULL;
+ proto_tree *dvb_eit_event_tree = NULL;
+ proto_item *duration_item = NULL;
+
+ nstime_t start_time;
+
+ col_clear(pinfo->cinfo, COL_INFO);
+ col_set_str(pinfo->cinfo, COL_INFO, "Event Information Table (EIT)");
+
+ if (!tree)
+ return;
+
+ ti = proto_tree_add_item(tree, proto_dvb_eit, tvb, offset, -1, ENC_NA);
+ dvb_eit_tree = proto_item_add_subtree(ti, ett_dvb_eit);
+
+ offset += packet_mpeg_sect_header(tvb, offset, dvb_eit_tree, &length, NULL);
+ length -= 4;
+
+ proto_tree_add_item(dvb_eit_tree, hf_dvb_eit_service_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(dvb_eit_tree, hf_dvb_eit_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(dvb_eit_tree, hf_dvb_eit_version_number, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(dvb_eit_tree, hf_dvb_eit_current_next_indicator, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(dvb_eit_tree, hf_dvb_eit_section_number, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(dvb_eit_tree, hf_dvb_eit_last_section_number, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(dvb_eit_tree, hf_dvb_eit_transport_stream_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(dvb_eit_tree, hf_dvb_eit_original_network_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(dvb_eit_tree, hf_dvb_eit_segment_last_section_number, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(dvb_eit_tree, hf_dvb_eit_last_table_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ if (offset >= length) {
+ packet_mpeg_sect_crc(tvb, pinfo, dvb_eit_tree, 0, offset);
+ return;
+ }
+
+ /* Parse all the events */
+ while (offset < length) {
+
+ evt_id = tvb_get_ntohs(tvb, offset);
+ ei = proto_tree_add_text(dvb_eit_tree, tvb, offset, 12, "Event 0x%04hx", evt_id);
+ dvb_eit_event_tree = proto_item_add_subtree(ei, ett_dvb_eit_event);
+
+ proto_tree_add_item(dvb_eit_event_tree, hf_dvb_eit_event_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ if (tvb_memeql(tvb, offset, "\xFF\xFF\xFF\xFF\xFF", 5)) {
+ if (packet_mpeg_sect_mjd_to_utc_time(tvb, offset, &start_time) < 0) {
+ proto_tree_add_text(tree, tvb, offset, 5, "Unparseable time");
+ } else {
+ proto_tree_add_time_format(dvb_eit_event_tree, hf_dvb_eit_start_time, tvb, offset, 5, &start_time, "Start Time: %s UTC", abs_time_to_str(&start_time, ABSOLUTE_TIME_UTC, FALSE));
+ }
+ } else {
+ proto_tree_add_text(tree, tvb, offset, 5, "Start Time: Undefined (0xFFFFFFFFFF)");
+ }
+ offset += 5;
+
+ duration_item = proto_tree_add_item(dvb_eit_event_tree, hf_dvb_eit_duration, tvb, offset, 3, ENC_BIG_ENDIAN);
+ proto_item_append_text(duration_item, " (%02u:%02u:%02u)",
+ MPEG_SECT_BCD44_TO_DEC(tvb_get_guint8(tvb, offset)),
+ MPEG_SECT_BCD44_TO_DEC(tvb_get_guint8(tvb, offset + 1)),
+ MPEG_SECT_BCD44_TO_DEC(tvb_get_guint8(tvb, offset + 2)));
+ offset += 3;
+
+ proto_tree_add_item(dvb_eit_event_tree, hf_dvb_eit_running_status, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(dvb_eit_event_tree, hf_dvb_eit_free_ca_mode, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(dvb_eit_event_tree, hf_dvb_eit_descriptors_loop_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ descriptor_len = tvb_get_ntohs(tvb, offset) & DVB_EIT_DESCRIPTORS_LOOP_LENGTH_MASK;
+ offset += 2;
+
+ descriptor_end = offset + descriptor_len;
+ while (offset < descriptor_end)
+ offset += proto_mpeg_descriptor_dissect(tvb, offset, dvb_eit_event_tree);
+
+ }
+
+ packet_mpeg_sect_crc(tvb, pinfo, dvb_eit_tree, 0, offset);
+}
+
+
+void
+proto_register_dvb_eit(void)
+{
+
+ static hf_register_info hf[] = {
+
+ { &hf_dvb_eit_service_id, {
+ "Service ID", "dvb_eit.sid",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_eit_reserved, {
+ "Reserved", "dvb_eit.reserved",
+ FT_UINT8, BASE_HEX, NULL, DVB_EIT_RESERVED_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_eit_version_number, {
+ "Version Number", "dvb_eit.version",
+ FT_UINT8, BASE_HEX, NULL, DVB_EIT_VERSION_NUMBER_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_eit_current_next_indicator, {
+ "Current/Next Indicator", "dvb_eit.cur_next_ind",
+ FT_UINT8, BASE_DEC, VALS(dvb_eit_cur_next_vals), DVB_EIT_CURRENT_NEXT_INDICATOR_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_eit_section_number, {
+ "Section Number", "dvb_eit.sect_num",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_eit_last_section_number, {
+ "Last Section Number", "dvb_eit.last_sect_num",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_eit_transport_stream_id, {
+ "Transport Stream ID", "dvb_eit.tsid",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_eit_original_network_id, {
+ "Original Network ID", "dvb_eit.original_nid",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_eit_segment_last_section_number, {
+ "Segment Last Section Number", "dvb_eit.segment_last_sect_num",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_eit_last_table_id, {
+ "Last Table ID", "dvb_eit.last_tid",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_eit_event_id, {
+ "Event ID", "dvb_eit.evt.id",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_eit_start_time, {
+ "UTC Start Time", "dvb_eit.evt.start_time",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_eit_duration, {
+ "Duration", "dvb_eit.evt.duration",
+ FT_UINT24, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_eit_running_status, {
+ "Running Status", "dvb_eit.evt.running_status",
+ FT_UINT16, BASE_HEX, VALS(dvb_eit_running_status_vals), DVB_EIT_RUNNING_STATUS_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_eit_free_ca_mode, {
+ "Free CA Mode", "dvb_eit.evt.free_ca_mode",
+ FT_UINT16, BASE_HEX, VALS(dvb_eit_free_ca_mode_vals), DVB_EIT_FREE_CA_MODE_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_eit_descriptors_loop_length, {
+ "Descriptors Loop Length", "dvb_eit.evt.descr_loop_len",
+ FT_UINT16, BASE_HEX, NULL, DVB_EIT_DESCRIPTORS_LOOP_LENGTH_MASK, NULL, HFILL
+ } }
+ };
+
+ static gint *ett[] = {
+ &ett_dvb_eit,
+ &ett_dvb_eit_event
+ };
+
+ proto_dvb_eit = proto_register_protocol("DVB Event Information Table", "DVB EIT", "dvb_eit");
+
+ proto_register_field_array(proto_dvb_eit, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+}
+
+
+void proto_reg_handoff_dvb_eit(void)
+{
+ int tid;
+ dissector_handle_t dvb_eit_handle;
+
+ dvb_eit_handle = create_dissector_handle(dissect_dvb_eit, proto_dvb_eit);
+
+ for (tid = DVB_EIT_TID_MIN; tid <= DVB_EIT_TID_MAX; tid++)
+ dissector_add_uint("mpeg_sect.tid", tid, dvb_eit_handle);
+}
diff --git a/epan/dissectors/packet-dvb-ipdc.c b/epan/dissectors/packet-dvb-ipdc.c
index de78e5c342..300455f824 100644
--- a/epan/dissectors/packet-dvb-ipdc.c
+++ b/epan/dissectors/packet-dvb-ipdc.c
@@ -111,11 +111,11 @@ proto_reg_handoff_dvb_ipdc(void)
*
* Local variables:
* c-basic-offset: 4
- * tab-width: 4
+ * tab-width: 8
* indent-tabs-mode: nil
* End:
*
- * vi: set shiftwidth=4 tabstop=4 expandtab:
- * :indentSize=4:tabSize=4:noTabs=true:
+ * vi: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
*/
diff --git a/epan/dissectors/packet-dvb-nit.c b/epan/dissectors/packet-dvb-nit.c
new file mode 100644
index 0000000000..4ce41e4c2f
--- /dev/null
+++ b/epan/dissectors/packet-dvb-nit.c
@@ -0,0 +1,257 @@
+/* packet-dvb-nit.c
+ * Routines for DVB (ETSI EN 300 468) Network Information Table (NIT) dissection
+ * Copyright 2012, Guy Martin <gmsoft@tuxicoman.be>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+#include <epan/dissectors/packet-mpeg-sect.h>
+
+#include "packet-mpeg-descriptor.h"
+
+static int proto_dvb_nit = -1;
+static int hf_dvb_nit_network_id = -1;
+static int hf_dvb_nit_reserved1 = -1;
+static int hf_dvb_nit_version_number = -1;
+static int hf_dvb_nit_current_next_indicator = -1;
+static int hf_dvb_nit_section_number = -1;
+static int hf_dvb_nit_last_section_number = -1;
+static int hf_dvb_nit_reserved2 = -1;
+
+static int hf_dvb_nit_network_descriptors_length = -1;
+static int hf_dvb_nit_reserved3 = -1;
+static int hf_dvb_nit_transport_stream_loop_length = -1;
+
+static int hf_dvb_nit_transport_stream_id = -1;
+static int hf_dvb_nit_original_network_id = -1;
+static int hf_dvb_nit_reserved4 = -1;
+static int hf_dvb_nit_transport_descriptors_length = -1;
+
+static gint ett_dvb_nit = -1;
+static gint ett_dvb_nit_ts = -1;
+
+
+#define DVB_NIT_TID 0x40
+#define DVB_NIT_TID_OTHER 0x41
+
+#define DVB_NIT_RESERVED1_MASK 0xC0
+#define DVB_NIT_VERSION_NUMBER_MASK 0x3E
+#define DVB_NIT_CURRENT_NEXT_INDICATOR_MASK 0x01
+#define DVB_NIT_RESERVED2_MASK 0xF000
+#define DVB_NIT_NETWORK_DESCRIPTORS_LENGTH_MASK 0x0FFF
+#define DVB_NIT_RESERVED3_MASK 0xF000
+#define DVB_NIT_TRANSPORT_STREAM_LOOP_LENGTH_MASK 0x0FFF
+#define DVB_NIT_RESERVED4_MASK 0xF000
+#define DVB_NIT_TRANSPORT_DESCRIPTORS_LENGTH_MASK 0x0FFF
+
+static const value_string dvb_nit_cur_next_vals[] = {
+ { 0, "Not yet applicable" },
+ { 1, "Currently applicable" },
+
+ { 0, NULL }
+};
+
+
+static void
+dissect_dvb_nit(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+
+ guint offset = 0, descriptor_end = 0, ts_end = 0;
+
+ guint16 tsid = 0, ts_desc_len = 0;
+
+ proto_item *ti = NULL;
+ proto_tree *dvb_nit_tree = NULL;
+ proto_item *tsi = NULL;
+ proto_tree *dvb_nit_ts_tree = NULL;
+
+ col_clear(pinfo->cinfo, COL_INFO);
+ col_set_str(pinfo->cinfo, COL_INFO, "Network Information Table (NIT)");
+
+ if (!tree)
+ return;
+
+ ti = proto_tree_add_item(tree, proto_dvb_nit, tvb, offset, -1, ENC_NA);
+ dvb_nit_tree = proto_item_add_subtree(ti, ett_dvb_nit);
+
+ offset += packet_mpeg_sect_header(tvb, offset, dvb_nit_tree, NULL, NULL);
+
+ proto_tree_add_item(dvb_nit_tree, hf_dvb_nit_network_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(dvb_nit_tree, hf_dvb_nit_reserved1, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(dvb_nit_tree, hf_dvb_nit_version_number, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(dvb_nit_tree, hf_dvb_nit_current_next_indicator, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(dvb_nit_tree, hf_dvb_nit_section_number, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(dvb_nit_tree, hf_dvb_nit_last_section_number, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(dvb_nit_tree, hf_dvb_nit_reserved2, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(dvb_nit_tree, hf_dvb_nit_network_descriptors_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ descriptor_end = offset + (tvb_get_ntohs(tvb, offset) & DVB_NIT_NETWORK_DESCRIPTORS_LENGTH_MASK);
+ offset += 2;
+
+ while (offset < descriptor_end)
+ offset += proto_mpeg_descriptor_dissect(tvb, offset, dvb_nit_tree);
+
+ proto_tree_add_item(dvb_nit_tree, hf_dvb_nit_reserved3, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(dvb_nit_tree, hf_dvb_nit_transport_stream_loop_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ ts_end = offset + (tvb_get_ntohs(tvb, offset) & DVB_NIT_TRANSPORT_STREAM_LOOP_LENGTH_MASK);
+ offset += 2;
+
+ while (offset < ts_end) {
+ tsid = tvb_get_ntohs(tvb, offset);
+ ts_desc_len = 3 + (tvb_get_ntohs(tvb, offset + 4) & DVB_NIT_TRANSPORT_DESCRIPTORS_LENGTH_MASK);
+
+ tsi = proto_tree_add_text(dvb_nit_tree, tvb, offset, ts_desc_len, "Stream ID=0x%04hx", tsid);
+ dvb_nit_ts_tree = proto_item_add_subtree(tsi, ett_dvb_nit_ts);
+
+ proto_tree_add_item(dvb_nit_ts_tree, hf_dvb_nit_transport_stream_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(dvb_nit_ts_tree, hf_dvb_nit_original_network_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(dvb_nit_ts_tree, hf_dvb_nit_reserved4, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(dvb_nit_ts_tree, hf_dvb_nit_transport_descriptors_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ descriptor_end = offset + (tvb_get_ntohs(tvb, offset) & DVB_NIT_TRANSPORT_DESCRIPTORS_LENGTH_MASK);
+ offset += 2;
+
+ while (offset < descriptor_end)
+ offset += proto_mpeg_descriptor_dissect(tvb, offset, dvb_nit_ts_tree);
+
+ }
+
+ packet_mpeg_sect_crc(tvb, pinfo, dvb_nit_tree, 0, offset);
+}
+
+
+void
+proto_register_dvb_nit(void)
+{
+
+ static hf_register_info hf[] = {
+
+ { &hf_dvb_nit_network_id, {
+ "Network ID", "dvb_nit.sid",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_nit_reserved1, {
+ "Reserved", "dvb_nit.reserved1",
+ FT_UINT8, BASE_HEX, NULL, DVB_NIT_RESERVED1_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_nit_version_number, {
+ "Version Number", "dvb_nit.version",
+ FT_UINT8, BASE_HEX, NULL, DVB_NIT_VERSION_NUMBER_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_nit_current_next_indicator, {
+ "Current/Next Indicator", "dvb_nit.cur_next_ind",
+ FT_UINT8, BASE_DEC, VALS(dvb_nit_cur_next_vals), DVB_NIT_CURRENT_NEXT_INDICATOR_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_nit_section_number, {
+ "Section Number", "dvb_nit.sect_num",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_nit_last_section_number, {
+ "Last Section Number", "dvb_nit.last_sect_num",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_nit_reserved2, {
+ "Reserved", "dvb_nit.reserved2",
+ FT_UINT16, BASE_HEX, NULL, DVB_NIT_RESERVED2_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_nit_network_descriptors_length, {
+ "Network Descriptors Length", "dvb_nit.network_desc_len",
+ FT_UINT16, BASE_DEC, NULL, DVB_NIT_NETWORK_DESCRIPTORS_LENGTH_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_nit_reserved3, {
+ "Reserved", "dvb_nit.reserved3",
+ FT_UINT16, BASE_HEX, NULL, DVB_NIT_RESERVED3_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_nit_transport_stream_loop_length, {
+ "Transport Stream Loop Length", "dvb_nit.ts_loop_len",
+ FT_UINT16, BASE_DEC, NULL, DVB_NIT_TRANSPORT_STREAM_LOOP_LENGTH_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_nit_transport_stream_id, {
+ "Transport Stream ID", "dvb_nit.ts.id",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_nit_original_network_id, {
+ "Original Network ID", "dvb_nit.ts.original_network_id",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_nit_reserved4, {
+ "Reserved", "dvb_nit.ts.reserved",
+ FT_UINT16, BASE_HEX, NULL, DVB_NIT_RESERVED4_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_nit_transport_descriptors_length, {
+ "Transport Descriptors Length", "dvb_nit.ts.desc_len",
+ FT_UINT16, BASE_DEC, NULL, DVB_NIT_TRANSPORT_DESCRIPTORS_LENGTH_MASK, NULL, HFILL
+ } },
+
+ };
+
+ static gint *ett[] = {
+ &ett_dvb_nit,
+ &ett_dvb_nit_ts
+ };
+
+ proto_dvb_nit = proto_register_protocol("DVB Network Information Table", "DVB NIT", "dvb_nit");
+
+ proto_register_field_array(proto_dvb_nit, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+}
+
+
+void proto_reg_handoff_dvb_nit(void)
+{
+ dissector_handle_t dvb_nit_handle;
+
+ dvb_nit_handle = create_dissector_handle(dissect_dvb_nit, proto_dvb_nit);
+
+ dissector_add_uint("mpeg_sect.tid", DVB_NIT_TID, dvb_nit_handle);
+ dissector_add_uint("mpeg_sect.tid", DVB_NIT_TID_OTHER, dvb_nit_handle);
+}
diff --git a/epan/dissectors/packet-dvb-sdt.c b/epan/dissectors/packet-dvb-sdt.c
new file mode 100644
index 0000000000..eae8a341e4
--- /dev/null
+++ b/epan/dissectors/packet-dvb-sdt.c
@@ -0,0 +1,285 @@
+/* packet-mpeg-sdt.c
+ * Routines for DVB (ETSI EN 300 468) Servide Description Table (SDT) dissection
+ * Copyright 2012, Guy Martin <gmsoft@tuxicoman.be>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; sdther version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+#include <epan/dissectors/packet-mpeg-sect.h>
+
+#include "packet-mpeg-descriptor.h"
+
+static int proto_dvb_sdt = -1;
+static int hf_dvb_sdt_transport_stream_id = -1;
+static int hf_dvb_sdt_reserved1 = -1;
+static int hf_dvb_sdt_version_number = -1;
+static int hf_dvb_sdt_current_next_indicator = -1;
+static int hf_dvb_sdt_section_number = -1;
+static int hf_dvb_sdt_last_section_number = -1;
+
+static int hf_dvb_sdt_original_network_id = -1;
+static int hf_dvb_sdt_reserved2 = -1;
+
+static int hf_dvb_sdt_service_id = -1;
+static int hf_dvb_sdt_reserved3 = -1;
+static int hf_dvb_sdt_eit_schedule_flag = -1;
+static int hf_dvb_sdt_eit_present_following_flag = -1;
+static int hf_dvb_sdt_running_status = -1;
+static int hf_dvb_sdt_free_ca_mode = -1;
+static int hf_dvb_sdt_descriptors_loop_length = -1;
+
+static gint ett_dvb_sdt = -1;
+static gint ett_dvb_sdt_service = -1;
+
+#define DVB_SDT_TID_ACTUAL 0x42
+#define DVB_SDT_TID_OTHER 0x46
+
+#define DVB_SDT_RESERVED1_MASK 0xC0
+#define DVB_SDT_VERSION_NUMBER_MASK 0x3E
+#define DVB_SDT_CURRENT_NEXT_INDICATOR_MASK 0x01
+
+#define DVB_SDT_RESERVED3_MASK 0xFC
+#define DVB_SDT_EIT_SCHEDULE_FLAG_MASK 0x02
+#define DVB_SDT_EIT_PRESENT_FOLLOWING_FLAG_MASK 0x01
+
+#define DVB_SDT_RUNNING_STATUS_MASK 0xE000
+#define DVB_SDT_FREE_CA_MODE_MASK 0x1000
+#define DVB_SDT_DESCRIPTORS_LOOP_LENGTH_MASK 0x0FFF
+
+
+static const value_string dvb_sdt_cur_next_vals[] = {
+ { 0, "Not yet applicable" },
+ { 1, "Currently applicable" },
+
+ { 0, NULL }
+};
+
+static const value_string dvb_sdt_running_status_vals[] = {
+ { 0, "Undefined" },
+ { 1, "Not Running" },
+ { 2, "Starts in a few seconds" },
+ { 3, "Pausing" },
+ { 4, "Running" },
+ { 5, "Service off-air" },
+
+ { 0, NULL }
+};
+
+static const value_string dvb_sdt_free_ca_mode_vals[] = {
+ { 0, "Not Scrambled" },
+ { 1, "One or more component scrambled" },
+
+ { 0, NULL }
+};
+
+static void
+dissect_dvb_sdt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+
+ guint offset = 0, length = 0, descriptor_end = 0;
+ guint16 svc_id = 0, descriptor_len = 0;
+
+ proto_item *ti = NULL;
+ proto_tree *dvb_sdt_tree = NULL;
+ proto_item *si = NULL;
+ proto_tree *dvb_sdt_service_tree = NULL;
+
+ /* The TVB should start right after the section_length in the Section packet */
+
+ col_clear(pinfo->cinfo, COL_INFO);
+ col_set_str(pinfo->cinfo, COL_INFO, "Service Description Table (SDT)");
+
+ if (!tree)
+ return;
+
+ ti = proto_tree_add_item(tree, proto_dvb_sdt, tvb, offset, -1, ENC_NA);
+ dvb_sdt_tree = proto_item_add_subtree(ti, ett_dvb_sdt);
+
+ offset += packet_mpeg_sect_header(tvb, offset, dvb_sdt_tree, &length, NULL);
+ length -= 4;
+
+ proto_tree_add_item(dvb_sdt_tree, hf_dvb_sdt_transport_stream_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(dvb_sdt_tree, hf_dvb_sdt_reserved1, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(dvb_sdt_tree, hf_dvb_sdt_version_number, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(dvb_sdt_tree, hf_dvb_sdt_current_next_indicator, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(dvb_sdt_tree, hf_dvb_sdt_section_number, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(dvb_sdt_tree, hf_dvb_sdt_last_section_number, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(dvb_sdt_tree, hf_dvb_sdt_original_network_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(dvb_sdt_tree, hf_dvb_sdt_reserved2, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+
+ if (offset >= length)
+ return;
+
+ /* Parse all the services */
+ while (offset < length) {
+
+ svc_id = tvb_get_ntohs(tvb, offset);
+ si = proto_tree_add_text(dvb_sdt_tree, tvb, offset, 5, "Service 0x%04hx", svc_id);
+ dvb_sdt_service_tree = proto_item_add_subtree(si, ett_dvb_sdt_service);
+
+ proto_tree_add_item(dvb_sdt_service_tree, hf_dvb_sdt_service_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(dvb_sdt_service_tree, hf_dvb_sdt_reserved3, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(dvb_sdt_service_tree, hf_dvb_sdt_eit_schedule_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(dvb_sdt_service_tree, hf_dvb_sdt_eit_present_following_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(dvb_sdt_service_tree, hf_dvb_sdt_running_status, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(dvb_sdt_service_tree, hf_dvb_sdt_free_ca_mode, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(dvb_sdt_service_tree, hf_dvb_sdt_descriptors_loop_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ descriptor_len = tvb_get_ntohs(tvb, offset) & DVB_SDT_DESCRIPTORS_LOOP_LENGTH_MASK;
+ offset += 2;
+
+ descriptor_end = offset + descriptor_len;
+ while (offset < descriptor_end)
+ offset += proto_mpeg_descriptor_dissect(tvb, offset, dvb_sdt_service_tree);
+
+ }
+
+ packet_mpeg_sect_crc(tvb, pinfo, dvb_sdt_tree, 0, offset);
+}
+
+
+void
+proto_register_dvb_sdt(void)
+{
+
+ static hf_register_info hf[] = {
+
+ { &hf_dvb_sdt_transport_stream_id, {
+ "Transport Stream ID", "dvb_sdt.tsid",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_sdt_reserved1, {
+ "Reserved", "dvb_sdt.reserved1",
+ FT_UINT8, BASE_HEX, NULL, DVB_SDT_RESERVED1_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_sdt_version_number, {
+ "Version Number", "dvb_sdt.version",
+ FT_UINT8, BASE_HEX, NULL, DVB_SDT_VERSION_NUMBER_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_sdt_current_next_indicator, {
+ "Current/Next Indicator", "dvb_sdt.cur_next_ind",
+ FT_UINT8, BASE_DEC, VALS(dvb_sdt_cur_next_vals), DVB_SDT_CURRENT_NEXT_INDICATOR_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_sdt_section_number, {
+ "Section Number", "dvb_sdt.sect_num",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_sdt_last_section_number, {
+ "Last Section Number", "dvb_sdt.last_sect_num",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_sdt_original_network_id, {
+ "Original Network ID", "dvb_sdt.original_nid",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_sdt_reserved2, {
+ "Reserved", "dvb_sdt.reserved2",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+
+ { &hf_dvb_sdt_service_id, {
+ "Service ID", "dvb_sdt.svc.id",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_sdt_reserved3, {
+ "Reserved", "dvb_sdt.svc.reserved",
+ FT_UINT8, BASE_HEX, NULL, DVB_SDT_RESERVED3_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_sdt_eit_schedule_flag, {
+ "EIT Schedule Flag", "dvb_sdt.svc.eit_schedule_flag",
+ FT_UINT8, BASE_DEC, NULL, DVB_SDT_EIT_SCHEDULE_FLAG_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_sdt_eit_present_following_flag, {
+ "EIT Present Following Flag", "dvb_sdt.svc.eit_present_following_flag",
+ FT_UINT8, BASE_DEC, NULL, DVB_SDT_EIT_PRESENT_FOLLOWING_FLAG_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_sdt_running_status, {
+ "Running Status", "dvb_sdt.svc.running_status",
+ FT_UINT16, BASE_HEX, VALS(dvb_sdt_running_status_vals), DVB_SDT_RUNNING_STATUS_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_sdt_free_ca_mode, {
+ "Free CA Mode", "dvb_sdt.svc.free_ca_mode",
+ FT_UINT16, BASE_HEX, VALS(dvb_sdt_free_ca_mode_vals), DVB_SDT_FREE_CA_MODE_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_sdt_descriptors_loop_length, {
+ "Descriptors Loop Length", "dvb_sdt.svc.descr_loop_len",
+ FT_UINT16, BASE_HEX, NULL, DVB_SDT_DESCRIPTORS_LOOP_LENGTH_MASK, NULL, HFILL
+ } }
+
+ };
+
+ static gint *ett[] = {
+ &ett_dvb_sdt,
+ &ett_dvb_sdt_service
+ };
+
+ proto_dvb_sdt = proto_register_protocol("DVB Service Description Table", "DVB SDT", "dvb_sdt");
+
+ proto_register_field_array(proto_dvb_sdt, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+}
+
+
+void proto_reg_handoff_dvb_sdt(void)
+{
+ dissector_handle_t dvb_sdt_handle;
+
+ dvb_sdt_handle = create_dissector_handle(dissect_dvb_sdt, proto_dvb_sdt);
+ dissector_add_uint("mpeg_sect.tid", DVB_SDT_TID_ACTUAL, dvb_sdt_handle);
+ dissector_add_uint("mpeg_sect.tid", DVB_SDT_TID_OTHER, dvb_sdt_handle);
+}
diff --git a/epan/dissectors/packet-dvb-tdt.c b/epan/dissectors/packet-dvb-tdt.c
new file mode 100644
index 0000000000..cb05c59392
--- /dev/null
+++ b/epan/dissectors/packet-dvb-tdt.c
@@ -0,0 +1,104 @@
+/* packet-dvb-tdt.c
+ * Routines for DVB (ETSI EN 300 468) Time and Date Table (TDT) dissection
+ * Copyright 2012, Guy Martin <gmsoft@tuxicoman.be>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; tdther version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+#include <epan/dissectors/packet-mpeg-sect.h>
+
+static int proto_dvb_tdt = -1;
+static int hf_dvb_tdt_utc_time = -1;
+
+static gint ett_dvb_tdt = -1;
+
+#define DVB_TDT_TID 0x70
+
+static void
+dissect_dvb_tdt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+
+ guint offset = 0;
+
+ proto_item *ti = NULL;
+ proto_tree *dvb_tdt_tree = NULL;
+
+ nstime_t utc_time;
+
+ col_clear(pinfo->cinfo, COL_INFO);
+ col_set_str(pinfo->cinfo, COL_INFO, "Time and Date Table (TDT)");
+
+ if (!tree)
+ return;
+
+ ti = proto_tree_add_item(tree, proto_dvb_tdt, tvb, offset, -1, ENC_NA);
+ dvb_tdt_tree = proto_item_add_subtree(ti, ett_dvb_tdt);
+
+ offset += packet_mpeg_sect_header(tvb, offset, dvb_tdt_tree, NULL, NULL);
+
+ if (packet_mpeg_sect_mjd_to_utc_time(tvb, offset, &utc_time) < 0) {
+ proto_tree_add_text(dvb_tdt_tree, tvb, offset, 5, "Unparseable time");
+ } else {
+ proto_tree_add_time_format(dvb_tdt_tree, hf_dvb_tdt_utc_time, tvb, offset, 5, &utc_time,
+ "UTC Time : %s UTC", abs_time_to_str(&utc_time, ABSOLUTE_TIME_UTC, FALSE));
+ }
+}
+
+
+void
+proto_register_dvb_tdt(void)
+{
+
+ static hf_register_info hf[] = {
+
+ { &hf_dvb_tdt_utc_time, {
+ "UTC Time", "dvb_tdt.utc_time",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL
+ } }
+ };
+
+ static gint *ett[] = {
+ &ett_dvb_tdt
+ };
+
+ proto_dvb_tdt = proto_register_protocol("DVB Time and Date Table", "DVB TDT", "dvb_tdt");
+
+ proto_register_field_array(proto_dvb_tdt, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+}
+
+
+void proto_reg_handoff_dvb_tdt(void)
+{
+ dissector_handle_t dvb_tdt_handle;
+
+ dvb_tdt_handle = create_dissector_handle(dissect_dvb_tdt, proto_dvb_tdt);
+
+ dissector_add_uint("mpeg_sect.tid", DVB_TDT_TID, dvb_tdt_handle);
+}
diff --git a/epan/dissectors/packet-dvb-tot.c b/epan/dissectors/packet-dvb-tot.c
new file mode 100644
index 0000000000..8b2905c66e
--- /dev/null
+++ b/epan/dissectors/packet-dvb-tot.c
@@ -0,0 +1,134 @@
+/* packet-dvb-tot.c
+ * Routines for DVB (ETSI EN 300 468) Time Offset Table (TOT) dissection
+ * Copyright 2012, Guy Martin <gmsoft@tuxicoman.be>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; tother version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+#include <epan/dissectors/packet-mpeg-sect.h>
+
+#include "packet-mpeg-descriptor.h"
+
+static int proto_dvb_tot = -1;
+static int hf_dvb_tot_utc_time = -1;
+static int hf_dvb_tot_reserved = -1;
+static int hf_dvb_tot_descriptors_loop_length = -1;
+
+static gint ett_dvb_tot = -1;
+
+#define DVB_TOT_TID 0x73
+
+#define DVB_TOT_RESERVED_MASK 0xF000
+#define DVB_TOT_DESCRIPTORS_LOOP_LENGTH_MASK 0x0FFF
+
+static void
+dissect_dvb_tot(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+
+ guint offset = 0, descriptor_len = 0, descriptor_end = 0;
+
+ proto_item *ti = NULL;
+ proto_tree *dvb_tot_tree = NULL;
+
+ nstime_t utc_time;
+
+ col_clear(pinfo->cinfo, COL_INFO);
+ col_set_str(pinfo->cinfo, COL_INFO, "Time Offset Table (TOT)");
+
+ if (!tree)
+ return;
+
+ ti = proto_tree_add_item(tree, proto_dvb_tot, tvb, offset, -1, ENC_NA);
+ dvb_tot_tree = proto_item_add_subtree(ti, ett_dvb_tot);
+
+ offset += packet_mpeg_sect_header(tvb, offset, dvb_tot_tree, NULL, NULL);
+
+ if (packet_mpeg_sect_mjd_to_utc_time(tvb, offset, &utc_time) < 0) {
+ proto_tree_add_text(dvb_tot_tree, tvb, offset, 5, "UTC Time : Unparseable time");
+ } else {
+ proto_tree_add_time_format(dvb_tot_tree, hf_dvb_tot_utc_time, tvb, offset, 5, &utc_time,
+ "UTC Time : %s UTC", abs_time_to_str(&utc_time, ABSOLUTE_TIME_UTC, FALSE));
+ }
+
+ offset += 5;
+
+ descriptor_len = tvb_get_ntohs(tvb, offset) & DVB_TOT_DESCRIPTORS_LOOP_LENGTH_MASK;
+ proto_tree_add_item(dvb_tot_tree, hf_dvb_tot_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(dvb_tot_tree, hf_dvb_tot_descriptors_loop_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ descriptor_end = offset + descriptor_len;
+ while (offset < descriptor_end)
+ offset += proto_mpeg_descriptor_dissect(tvb, offset, dvb_tot_tree);
+
+ packet_mpeg_sect_crc(tvb, pinfo, dvb_tot_tree, 0, offset);
+}
+
+
+void
+proto_register_dvb_tot(void)
+{
+
+ static hf_register_info hf[] = {
+
+ { &hf_dvb_tot_utc_time, {
+ "UTC Time", "dvb_tot.utc_time",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dvb_tot_reserved, {
+ "Reserved", "dvb_tot.reserved",
+ FT_UINT16, BASE_HEX, NULL, DVB_TOT_RESERVED_MASK, NULL, HFILL
+ } },
+
+ { &hf_dvb_tot_descriptors_loop_length, {
+ "Descriptors Loop Length", "dvb_tot.descr_loop_len",
+ FT_UINT16, BASE_DEC, NULL, DVB_TOT_DESCRIPTORS_LOOP_LENGTH_MASK, NULL, HFILL
+ } }
+ };
+
+ static gint *ett[] = {
+ &ett_dvb_tot
+ };
+
+ proto_dvb_tot = proto_register_protocol("DVB Time Offset Table", "DVB TOT", "dvb_tot");
+
+ proto_register_field_array(proto_dvb_tot, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+}
+
+
+void proto_reg_handoff_dvb_tot(void)
+{
+ dissector_handle_t dvb_tot_handle;
+
+ dvb_tot_handle = create_dissector_handle(dissect_dvb_tot, proto_dvb_tot);
+
+ dissector_add_uint("mpeg_sect.tid", DVB_TOT_TID, dvb_tot_handle);
+}
diff --git a/epan/dissectors/packet-dvbci.c b/epan/dissectors/packet-dvbci.c
index 18a324dfd5..11d921c010 100644
--- a/epan/dissectors/packet-dvbci.c
+++ b/epan/dissectors/packet-dvbci.c
@@ -43,6 +43,7 @@
#include <epan/prefs.h>
#include <epan/expert.h>
#include <epan/asn1.h>
+#include <epan/dissectors/packet-mpeg-descriptor.h>
#include <epan/dissectors/packet-x509af.h>
#include "packet-ber.h"
@@ -392,8 +393,10 @@ typedef struct _apdu_info_t {
* (otherwise, we set this to LEN_FIELD_ANY) */
guint32 len_field;
guint8 direction;
+ guint16 res_class;
+ guint8 res_min_ver;
void (*dissect_payload)(guint32, gint,
- tvbuff_t *, gint, packet_info *, proto_tree *);
+ tvbuff_t *, gint, circuit_t *, packet_info *, proto_tree *);
} apdu_info_t;
@@ -401,60 +404,60 @@ void proto_reg_handoff_dvbci(void);
static void
dissect_dvbci_payload_rm(guint32 tag, gint len_field,
- tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree);
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo, proto_tree *tree);
static void
dissect_dvbci_payload_ap(guint32 tag, gint len_field _U_,
- tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree);
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo, proto_tree *tree);
static void
dissect_dvbci_payload_ca(guint32 tag, gint len_field,
- tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree);
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo, proto_tree *tree);
static void
dissect_dvbci_payload_aut(guint32 tag, gint len_field _U_,
- tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
- proto_tree *tree);
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo _U_, proto_tree *tree);
static void
dissect_dvbci_payload_hc(guint32 tag, gint len_field _U_,
- tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree);
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo, proto_tree *tree);
static void
dissect_dvbci_payload_dt(guint32 tag, gint len_field,
- tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree);
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo, proto_tree *tree);
static void
dissect_dvbci_payload_mmi(guint32 tag, gint len_field,
- tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree);
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo, proto_tree *tree);
static void
dissect_dvbci_payload_hlc(guint32 tag, gint len_field _U_,
- tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree);
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo, proto_tree *tree);
static void
dissect_dvbci_payload_cup(guint32 tag, gint len_field _U_,
- tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree);
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo, proto_tree *tree);
static void
dissect_dvbci_payload_cc(guint32 tag, gint len_field _U_,
- tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree);
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo, proto_tree *tree);
static void
dissect_dvbci_payload_ami(guint32 tag, gint len_field _U_,
- tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree);
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo, proto_tree *tree);
static void
dissect_dvbci_payload_lsc(guint32 tag, gint len_field,
- tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree);
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo, proto_tree *tree);
static void
dissect_dvbci_payload_opp(guint32 tag, gint len_field _U_,
- tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree);
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo, proto_tree *tree);
static void
dissect_dvbci_payload_sas(guint32 tag, gint len_field _U_,
- tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree);
+ tvbuff_t *tvb, gint offset, circuit_t *circuit,
+ packet_info *pinfo, proto_tree *tree);
/* apdu defines */
@@ -554,105 +557,105 @@ dissect_dvbci_payload_sas(guint32 tag, gint len_field _U_,
static const apdu_info_t apdu_info[] = {
- {T_PROFILE_ENQ, 0, 0, DIRECTION_ANY, NULL},
- {T_PROFILE, 0, LEN_FIELD_ANY, DIRECTION_ANY, dissect_dvbci_payload_rm},
- {T_PROFILE_CHANGE, 0, 0, DIRECTION_ANY, NULL},
-
- {T_APP_INFO_ENQ, 0, 0, DATA_HOST_TO_CAM, NULL},
- {T_APP_INFO, 6, LEN_FIELD_ANY, DATA_CAM_TO_HOST, dissect_dvbci_payload_ap},
- {T_ENTER_MENU, 0, 0, DATA_HOST_TO_CAM, NULL},
- {T_REQUEST_CICAM_RESET, 0, 0, DATA_CAM_TO_HOST, NULL},
- {T_DATARATE_INFO, 0, 1, DATA_HOST_TO_CAM, dissect_dvbci_payload_ap},
-
- {T_CA_INFO_ENQ, 0, 0, DATA_HOST_TO_CAM, NULL},
- {T_CA_INFO, 0, LEN_FIELD_ANY, DATA_CAM_TO_HOST, dissect_dvbci_payload_ca},
- {T_CA_PMT, 6, LEN_FIELD_ANY, DATA_HOST_TO_CAM, dissect_dvbci_payload_ca},
- {T_CA_PMT_REPLY, 8, LEN_FIELD_ANY, DATA_CAM_TO_HOST, dissect_dvbci_payload_ca},
-
- {T_AUTH_REQ, 2, LEN_FIELD_ANY, DATA_CAM_TO_HOST, dissect_dvbci_payload_aut},
- {T_AUTH_RESP, 2, LEN_FIELD_ANY, DATA_HOST_TO_CAM, dissect_dvbci_payload_aut},
-
- {T_TUNE, 0, 8, DATA_CAM_TO_HOST, dissect_dvbci_payload_hc},
- {T_REPLACE, 0, 5, DATA_CAM_TO_HOST, dissect_dvbci_payload_hc},
- {T_CLEAR_REPLACE, 0, 1, DATA_CAM_TO_HOST, dissect_dvbci_payload_hc},
- {T_ASK_RELEASE, 0, 0, DATA_HOST_TO_CAM, NULL},
- {T_TUNE_BROADCAST_REQ, 5, LEN_FIELD_ANY, DATA_CAM_TO_HOST, dissect_dvbci_payload_hc},
- {T_TUNE_REPLY, 1, 1, DATA_HOST_TO_CAM, dissect_dvbci_payload_hc},
- {T_ASK_RELEASE_REPLY, 1, 1, DATA_CAM_TO_HOST, dissect_dvbci_payload_hc},
-
- {T_DATE_TIME_ENQ, 0, 1, DATA_CAM_TO_HOST, dissect_dvbci_payload_dt},
- {T_DATE_TIME, 5, LEN_FIELD_ANY, DATA_HOST_TO_CAM, dissect_dvbci_payload_dt},
-
- {T_CLOSE_MMI, 1, LEN_FIELD_ANY, DIRECTION_ANY, dissect_dvbci_payload_mmi},
- {T_DISPLAY_CONTROL, 1, LEN_FIELD_ANY, DATA_CAM_TO_HOST, dissect_dvbci_payload_mmi},
- {T_DISPLAY_REPLY, 1, LEN_FIELD_ANY, DATA_HOST_TO_CAM, dissect_dvbci_payload_mmi},
- {T_ENQ, 2, LEN_FIELD_ANY, DATA_CAM_TO_HOST, dissect_dvbci_payload_mmi},
- {T_ANSW, 1, LEN_FIELD_ANY, DATA_HOST_TO_CAM, dissect_dvbci_payload_mmi},
- {T_MENU_LAST, 13, LEN_FIELD_ANY, DATA_CAM_TO_HOST, dissect_dvbci_payload_mmi},
- {T_MENU_MORE, 13, LEN_FIELD_ANY, DATA_CAM_TO_HOST, dissect_dvbci_payload_mmi},
- {T_MENU_ANSW, 0, 1, DATA_HOST_TO_CAM, dissect_dvbci_payload_mmi},
- {T_LIST_LAST, 13, LEN_FIELD_ANY, DATA_CAM_TO_HOST, dissect_dvbci_payload_mmi},
- {T_LIST_MORE, 13, LEN_FIELD_ANY, DATA_CAM_TO_HOST, dissect_dvbci_payload_mmi},
-
- {T_HOST_COUNTRY_ENQ, 0, 0, DATA_CAM_TO_HOST, NULL},
- {T_HOST_COUNTRY, 0, 3, DATA_HOST_TO_CAM, dissect_dvbci_payload_hlc},
- {T_HOST_LANGUAGE_ENQ, 0, 0, DATA_CAM_TO_HOST, NULL},
- {T_HOST_LANGUAGE, 0, 3, DATA_HOST_TO_CAM, dissect_dvbci_payload_hlc},
-
- {T_CAM_FIRMWARE_UPGRADE, 0, 3, DATA_CAM_TO_HOST, dissect_dvbci_payload_cup},
- {T_CAM_FIRMWARE_UPGRADE_REPLY, 0, 1, DATA_HOST_TO_CAM, dissect_dvbci_payload_cup},
- {T_CAM_FIRMWARE_UPGRADE_PROGRESS, 0, 1, DATA_CAM_TO_HOST, dissect_dvbci_payload_cup},
- {T_CAM_FIRMWARE_UPGRADE_COMPLETE, 0, 1, DATA_CAM_TO_HOST, dissect_dvbci_payload_cup},
-
- {T_CC_OPEN_REQ, 0, 0, DATA_CAM_TO_HOST, NULL},
- {T_CC_OPEN_CNF, 0, 1, DATA_HOST_TO_CAM, dissect_dvbci_payload_cc},
- {T_CC_DATA_REQ, 3, LEN_FIELD_ANY, DATA_CAM_TO_HOST, dissect_dvbci_payload_cc},
- {T_CC_DATA_CNF, 2, LEN_FIELD_ANY, DATA_HOST_TO_CAM, dissect_dvbci_payload_cc},
- {T_CC_SYNC_REQ, 0, 0, DATA_CAM_TO_HOST, NULL},
- {T_CC_SYNC_CNF, 0, 1, DATA_HOST_TO_CAM, dissect_dvbci_payload_cc},
- {T_CC_SAC_DATA_REQ, 8, LEN_FIELD_ANY, DIRECTION_ANY, dissect_dvbci_payload_cc},
- {T_CC_SAC_DATA_CNF, 8, LEN_FIELD_ANY, DIRECTION_ANY, dissect_dvbci_payload_cc},
- {T_CC_SAC_SYNC_REQ, 8, LEN_FIELD_ANY, DATA_CAM_TO_HOST, dissect_dvbci_payload_cc},
- {T_CC_SAC_SYNC_CNF, 8, LEN_FIELD_ANY, DATA_HOST_TO_CAM, dissect_dvbci_payload_cc},
- {T_CC_PIN_CAPABILITIES_REQ, 0, 0, DATA_HOST_TO_CAM, NULL},
- {T_CC_PIN_CAPABILITIES_REPLY, 7, 7, DATA_CAM_TO_HOST, dissect_dvbci_payload_cc},
- {T_CC_PIN_CMD, 1, LEN_FIELD_ANY, DATA_HOST_TO_CAM, dissect_dvbci_payload_cc},
- {T_CC_PIN_REPLY, 1, 1, DATA_CAM_TO_HOST, dissect_dvbci_payload_cc},
- {T_CC_PIN_EVENT, 25, 25, DATA_CAM_TO_HOST, dissect_dvbci_payload_cc},
- {T_CC_PIN_PLAYBACK, 16, 16, DATA_HOST_TO_CAM, dissect_dvbci_payload_cc},
- {T_CC_PIN_MMI_REQ, 1, LEN_FIELD_ANY, DATA_HOST_TO_CAM, dissect_dvbci_payload_cc},
-
- {T_REQUEST_START, 2, LEN_FIELD_ANY, DATA_CAM_TO_HOST, dissect_dvbci_payload_ami},
- {T_REQUEST_START_ACK, 0, 1, DATA_HOST_TO_CAM, dissect_dvbci_payload_ami},
- {T_FILE_REQUEST, 1, LEN_FIELD_ANY, DATA_HOST_TO_CAM, dissect_dvbci_payload_ami},
- {T_FILE_ACKNOWLEDGE, 2, LEN_FIELD_ANY, DATA_CAM_TO_HOST, dissect_dvbci_payload_ami},
- {T_APP_ABORT_REQUEST, 0, LEN_FIELD_ANY, DIRECTION_ANY, dissect_dvbci_payload_ami},
- {T_APP_ABORT_ACK, 0, LEN_FIELD_ANY, DIRECTION_ANY, dissect_dvbci_payload_ami},
-
- {T_COMMS_CMD, 1, LEN_FIELD_ANY, DATA_CAM_TO_HOST, dissect_dvbci_payload_lsc},
- {T_COMMS_REPLY, 0, 2, DATA_HOST_TO_CAM, dissect_dvbci_payload_lsc},
- {T_COMMS_SEND_LAST, 2, LEN_FIELD_ANY, DATA_CAM_TO_HOST, dissect_dvbci_payload_lsc},
- {T_COMMS_SEND_MORE, 2, LEN_FIELD_ANY, DATA_CAM_TO_HOST, dissect_dvbci_payload_lsc},
- {T_COMMS_RCV_LAST, 2, LEN_FIELD_ANY, DATA_HOST_TO_CAM, dissect_dvbci_payload_lsc},
- {T_COMMS_RCV_MORE, 2, LEN_FIELD_ANY, DATA_HOST_TO_CAM, dissect_dvbci_payload_lsc},
-
- {T_OPERATOR_STATUS_REQ, 0, 0, DATA_HOST_TO_CAM, NULL},
- {T_OPERATOR_STATUS, 0, 6, DATA_CAM_TO_HOST, dissect_dvbci_payload_opp},
- {T_OPERATOR_NIT_REQ, 0, 0, DATA_HOST_TO_CAM, NULL},
- {T_OPERATOR_NIT, 2, LEN_FIELD_ANY, DATA_CAM_TO_HOST, dissect_dvbci_payload_opp},
- {T_OPERATOR_INFO_REQ, 0, 0, DATA_HOST_TO_CAM, NULL},
- {T_OPERATOR_INFO, 1, LEN_FIELD_ANY, DATA_CAM_TO_HOST, dissect_dvbci_payload_opp},
- {T_OPERATOR_SEARCH_START, 3, LEN_FIELD_ANY, DATA_HOST_TO_CAM, dissect_dvbci_payload_opp},
- {T_OPERATOR_SEARCH_STATUS, 0, 6, DATA_CAM_TO_HOST, dissect_dvbci_payload_opp},
- {T_OPERATOR_EXIT, 0, 0, DATA_HOST_TO_CAM, NULL},
- {T_OPERATOR_TUNE, 2, LEN_FIELD_ANY, DATA_CAM_TO_HOST, dissect_dvbci_payload_opp},
- {T_OPERATOR_TUNE_STATUS, 5, LEN_FIELD_ANY, DATA_HOST_TO_CAM, dissect_dvbci_payload_opp},
- {T_OPERATOR_ENTITLEMENT_ACK, 0, 0, DATA_HOST_TO_CAM, NULL},
- {T_OPERATOR_SEARCH_CANCEL, 0, 0, DATA_HOST_TO_CAM, NULL},
-
- {T_SAS_CONNECT_RQST, 0, 8, DATA_HOST_TO_CAM, dissect_dvbci_payload_sas},
- {T_SAS_CONNECT_CNF, 0, 9, DATA_CAM_TO_HOST, dissect_dvbci_payload_sas},
- {T_SAS_ASYNC_MSG, 3, LEN_FIELD_ANY, DIRECTION_ANY, dissect_dvbci_payload_sas}
+ {T_PROFILE_ENQ, 0, 0, DIRECTION_ANY, RES_CLASS_RM, 1, NULL},
+ {T_PROFILE, 0, LEN_FIELD_ANY, DIRECTION_ANY, RES_CLASS_RM, 1, dissect_dvbci_payload_rm},
+ {T_PROFILE_CHANGE, 0, 0, DIRECTION_ANY, RES_CLASS_RM, 1, NULL},
+
+ {T_APP_INFO_ENQ, 0, 0, DATA_HOST_TO_CAM, RES_CLASS_AP, 1, NULL},
+ {T_APP_INFO, 6, LEN_FIELD_ANY, DATA_CAM_TO_HOST, RES_CLASS_AP, 1, dissect_dvbci_payload_ap},
+ {T_ENTER_MENU, 0, 0, DATA_HOST_TO_CAM, RES_CLASS_AP, 1, NULL},
+ {T_REQUEST_CICAM_RESET, 0, 0, DATA_CAM_TO_HOST, RES_CLASS_AP, 3, NULL},
+ {T_DATARATE_INFO, 0, 1, DATA_HOST_TO_CAM, RES_CLASS_AP, 3, dissect_dvbci_payload_ap},
+
+ {T_CA_INFO_ENQ, 0, 0, DATA_HOST_TO_CAM, RES_CLASS_CA, 1, NULL},
+ {T_CA_INFO, 0, LEN_FIELD_ANY, DATA_CAM_TO_HOST, RES_CLASS_CA, 1, dissect_dvbci_payload_ca},
+ {T_CA_PMT, 6, LEN_FIELD_ANY, DATA_HOST_TO_CAM, RES_CLASS_CA, 1, dissect_dvbci_payload_ca},
+ {T_CA_PMT_REPLY, 8, LEN_FIELD_ANY, DATA_CAM_TO_HOST, RES_CLASS_CA, 1, dissect_dvbci_payload_ca},
+
+ {T_AUTH_REQ, 2, LEN_FIELD_ANY, DATA_CAM_TO_HOST, RES_CLASS_AUT, 1, dissect_dvbci_payload_aut},
+ {T_AUTH_RESP, 2, LEN_FIELD_ANY, DATA_HOST_TO_CAM, RES_CLASS_AUT, 1, dissect_dvbci_payload_aut},
+
+ {T_TUNE, 0, 8, DATA_CAM_TO_HOST, RES_CLASS_HC, 1, dissect_dvbci_payload_hc},
+ {T_REPLACE, 0, 5, DATA_CAM_TO_HOST, RES_CLASS_HC, 1, dissect_dvbci_payload_hc},
+ {T_CLEAR_REPLACE, 0, 1, DATA_CAM_TO_HOST, RES_CLASS_HC, 1, dissect_dvbci_payload_hc},
+ {T_ASK_RELEASE, 0, 0, DATA_HOST_TO_CAM, RES_CLASS_HC, 1, NULL},
+ {T_TUNE_BROADCAST_REQ, 5, LEN_FIELD_ANY, DATA_CAM_TO_HOST, RES_CLASS_HC, 2, dissect_dvbci_payload_hc},
+ {T_TUNE_REPLY, 1, 1, DATA_HOST_TO_CAM, RES_CLASS_HC, 2, dissect_dvbci_payload_hc},
+ {T_ASK_RELEASE_REPLY, 1, 1, DATA_CAM_TO_HOST, RES_CLASS_HC, 2, dissect_dvbci_payload_hc},
+
+ {T_DATE_TIME_ENQ, 0, 1, DATA_CAM_TO_HOST, RES_CLASS_DT, 1, dissect_dvbci_payload_dt},
+ {T_DATE_TIME, 5, LEN_FIELD_ANY, DATA_HOST_TO_CAM, RES_CLASS_DT, 1, dissect_dvbci_payload_dt},
+
+ {T_CLOSE_MMI, 1, LEN_FIELD_ANY, DIRECTION_ANY, RES_CLASS_MMI, 1, dissect_dvbci_payload_mmi},
+ {T_DISPLAY_CONTROL, 1, LEN_FIELD_ANY, DATA_CAM_TO_HOST, RES_CLASS_MMI, 1, dissect_dvbci_payload_mmi},
+ {T_DISPLAY_REPLY, 1, LEN_FIELD_ANY, DATA_HOST_TO_CAM, RES_CLASS_MMI, 1, dissect_dvbci_payload_mmi},
+ {T_ENQ, 2, LEN_FIELD_ANY, DATA_CAM_TO_HOST, RES_CLASS_MMI, 1, dissect_dvbci_payload_mmi},
+ {T_ANSW, 1, LEN_FIELD_ANY, DATA_HOST_TO_CAM, RES_CLASS_MMI, 1, dissect_dvbci_payload_mmi},
+ {T_MENU_LAST, 13, LEN_FIELD_ANY, DATA_CAM_TO_HOST, RES_CLASS_MMI, 1, dissect_dvbci_payload_mmi},
+ {T_MENU_MORE, 13, LEN_FIELD_ANY, DATA_CAM_TO_HOST, RES_CLASS_MMI, 1, dissect_dvbci_payload_mmi},
+ {T_MENU_ANSW, 0, 1, DATA_HOST_TO_CAM, RES_CLASS_MMI, 1, dissect_dvbci_payload_mmi},
+ {T_LIST_LAST, 13, LEN_FIELD_ANY, DATA_CAM_TO_HOST, RES_CLASS_MMI, 1, dissect_dvbci_payload_mmi},
+ {T_LIST_MORE, 13, LEN_FIELD_ANY, DATA_CAM_TO_HOST, RES_CLASS_MMI, 1, dissect_dvbci_payload_mmi},
+
+ {T_HOST_COUNTRY_ENQ, 0, 0, DATA_CAM_TO_HOST, RES_CLASS_HLC, 1, NULL},
+ {T_HOST_COUNTRY, 0, 3, DATA_HOST_TO_CAM, RES_CLASS_HLC, 1, dissect_dvbci_payload_hlc},
+ {T_HOST_LANGUAGE_ENQ, 0, 0, DATA_CAM_TO_HOST, RES_CLASS_HLC, 1, NULL},
+ {T_HOST_LANGUAGE, 0, 3, DATA_HOST_TO_CAM, RES_CLASS_HLC, 1, dissect_dvbci_payload_hlc},
+
+ {T_CAM_FIRMWARE_UPGRADE, 0, 3, DATA_CAM_TO_HOST, RES_CLASS_CUP, 1, dissect_dvbci_payload_cup},
+ {T_CAM_FIRMWARE_UPGRADE_REPLY, 0, 1, DATA_HOST_TO_CAM, RES_CLASS_CUP, 1, dissect_dvbci_payload_cup},
+ {T_CAM_FIRMWARE_UPGRADE_PROGRESS, 0, 1, DATA_CAM_TO_HOST, RES_CLASS_CUP, 1, dissect_dvbci_payload_cup},
+ {T_CAM_FIRMWARE_UPGRADE_COMPLETE, 0, 1, DATA_CAM_TO_HOST, RES_CLASS_CUP, 1, dissect_dvbci_payload_cup},
+
+ {T_CC_OPEN_REQ, 0, 0, DATA_CAM_TO_HOST, RES_CLASS_CC, 1, NULL},
+ {T_CC_OPEN_CNF, 0, 1, DATA_HOST_TO_CAM, RES_CLASS_CC, 1, dissect_dvbci_payload_cc},
+ {T_CC_DATA_REQ, 3, LEN_FIELD_ANY, DATA_CAM_TO_HOST, RES_CLASS_CC, 1, dissect_dvbci_payload_cc},
+ {T_CC_DATA_CNF, 2, LEN_FIELD_ANY, DATA_HOST_TO_CAM, RES_CLASS_CC, 1, dissect_dvbci_payload_cc},
+ {T_CC_SYNC_REQ, 0, 0, DATA_CAM_TO_HOST, RES_CLASS_CC, 1, NULL},
+ {T_CC_SYNC_CNF, 0, 1, DATA_HOST_TO_CAM, RES_CLASS_CC, 1, dissect_dvbci_payload_cc},
+ {T_CC_SAC_DATA_REQ, 8, LEN_FIELD_ANY, DIRECTION_ANY, RES_CLASS_CC, 1, dissect_dvbci_payload_cc},
+ {T_CC_SAC_DATA_CNF, 8, LEN_FIELD_ANY, DIRECTION_ANY, RES_CLASS_CC, 1, dissect_dvbci_payload_cc},
+ {T_CC_SAC_SYNC_REQ, 8, LEN_FIELD_ANY, DATA_CAM_TO_HOST, RES_CLASS_CC, 1, dissect_dvbci_payload_cc},
+ {T_CC_SAC_SYNC_CNF, 8, LEN_FIELD_ANY, DATA_HOST_TO_CAM, RES_CLASS_CC, 1, dissect_dvbci_payload_cc},
+ {T_CC_PIN_CAPABILITIES_REQ, 0, 0, DATA_HOST_TO_CAM, RES_CLASS_CC, 2, NULL},
+ {T_CC_PIN_CAPABILITIES_REPLY, 7, 7, DATA_CAM_TO_HOST, RES_CLASS_CC, 2, dissect_dvbci_payload_cc},
+ {T_CC_PIN_CMD, 1, LEN_FIELD_ANY, DATA_HOST_TO_CAM, RES_CLASS_CC, 2, dissect_dvbci_payload_cc},
+ {T_CC_PIN_REPLY, 1, 1, DATA_CAM_TO_HOST, RES_CLASS_CC, 2, dissect_dvbci_payload_cc},
+ {T_CC_PIN_EVENT, 25, 25, DATA_CAM_TO_HOST, RES_CLASS_CC, 2, dissect_dvbci_payload_cc},
+ {T_CC_PIN_PLAYBACK, 16, 16, DATA_HOST_TO_CAM, RES_CLASS_CC, 2, dissect_dvbci_payload_cc},
+ {T_CC_PIN_MMI_REQ, 1, LEN_FIELD_ANY, DATA_HOST_TO_CAM, RES_CLASS_CC, 2, dissect_dvbci_payload_cc},
+
+ {T_REQUEST_START, 2, LEN_FIELD_ANY, DATA_CAM_TO_HOST, RES_CLASS_AMI, 1, dissect_dvbci_payload_ami},
+ {T_REQUEST_START_ACK, 0, 1, DATA_HOST_TO_CAM, RES_CLASS_AMI, 1, dissect_dvbci_payload_ami},
+ {T_FILE_REQUEST, 1, LEN_FIELD_ANY, DATA_HOST_TO_CAM, RES_CLASS_AMI, 1, dissect_dvbci_payload_ami},
+ {T_FILE_ACKNOWLEDGE, 2, LEN_FIELD_ANY, DATA_CAM_TO_HOST, RES_CLASS_AMI, 1, dissect_dvbci_payload_ami},
+ {T_APP_ABORT_REQUEST, 0, LEN_FIELD_ANY, DIRECTION_ANY, RES_CLASS_AMI, 1, dissect_dvbci_payload_ami},
+ {T_APP_ABORT_ACK, 0, LEN_FIELD_ANY, DIRECTION_ANY, RES_CLASS_AMI, 1, dissect_dvbci_payload_ami},
+
+ {T_COMMS_CMD, 1, LEN_FIELD_ANY, DATA_CAM_TO_HOST, RES_CLASS_LSC, 1, dissect_dvbci_payload_lsc},
+ {T_COMMS_REPLY, 0, 2, DATA_HOST_TO_CAM, RES_CLASS_LSC, 1, dissect_dvbci_payload_lsc},
+ {T_COMMS_SEND_LAST, 2, LEN_FIELD_ANY, DATA_CAM_TO_HOST, RES_CLASS_LSC, 1, dissect_dvbci_payload_lsc},
+ {T_COMMS_SEND_MORE, 2, LEN_FIELD_ANY, DATA_CAM_TO_HOST, RES_CLASS_LSC, 1, dissect_dvbci_payload_lsc},
+ {T_COMMS_RCV_LAST, 2, LEN_FIELD_ANY, DATA_HOST_TO_CAM, RES_CLASS_LSC, 1, dissect_dvbci_payload_lsc},
+ {T_COMMS_RCV_MORE, 2, LEN_FIELD_ANY, DATA_HOST_TO_CAM, RES_CLASS_LSC, 1, dissect_dvbci_payload_lsc},
+
+ {T_OPERATOR_STATUS_REQ, 0, 0, DATA_HOST_TO_CAM, RES_CLASS_OPP, 1, NULL},
+ {T_OPERATOR_STATUS, 0, 6, DATA_CAM_TO_HOST, RES_CLASS_OPP, 1, dissect_dvbci_payload_opp},
+ {T_OPERATOR_NIT_REQ, 0, 0, DATA_HOST_TO_CAM, RES_CLASS_OPP, 1, NULL},
+ {T_OPERATOR_NIT, 2, LEN_FIELD_ANY, DATA_CAM_TO_HOST, RES_CLASS_OPP, 1, dissect_dvbci_payload_opp},
+ {T_OPERATOR_INFO_REQ, 0, 0, DATA_HOST_TO_CAM, RES_CLASS_OPP, 1, NULL},
+ {T_OPERATOR_INFO, 1, LEN_FIELD_ANY, DATA_CAM_TO_HOST, RES_CLASS_OPP, 1, dissect_dvbci_payload_opp},
+ {T_OPERATOR_SEARCH_START, 3, LEN_FIELD_ANY, DATA_HOST_TO_CAM, RES_CLASS_OPP, 1, dissect_dvbci_payload_opp},
+ {T_OPERATOR_SEARCH_STATUS, 0, 6, DATA_CAM_TO_HOST, RES_CLASS_OPP, 1, dissect_dvbci_payload_opp},
+ {T_OPERATOR_EXIT, 0, 0, DATA_HOST_TO_CAM, RES_CLASS_OPP, 1, NULL},
+ {T_OPERATOR_TUNE, 2, LEN_FIELD_ANY, DATA_CAM_TO_HOST, RES_CLASS_OPP, 1, dissect_dvbci_payload_opp},
+ {T_OPERATOR_TUNE_STATUS, 5, LEN_FIELD_ANY, DATA_HOST_TO_CAM, RES_CLASS_OPP, 1, dissect_dvbci_payload_opp},
+ {T_OPERATOR_ENTITLEMENT_ACK, 0, 0, DATA_HOST_TO_CAM, RES_CLASS_OPP, 1, NULL},
+ {T_OPERATOR_SEARCH_CANCEL, 0, 0, DATA_HOST_TO_CAM, RES_CLASS_OPP, 1, NULL},
+
+ {T_SAS_CONNECT_RQST, 0, 8, DATA_HOST_TO_CAM, RES_CLASS_SAS, 1, dissect_dvbci_payload_sas},
+ {T_SAS_CONNECT_CNF, 0, 9, DATA_CAM_TO_HOST, RES_CLASS_SAS, 1, dissect_dvbci_payload_sas},
+ {T_SAS_ASYNC_MSG, 3, LEN_FIELD_ANY, DIRECTION_ANY, RES_CLASS_SAS, 1, dissect_dvbci_payload_sas}
};
static const value_string dvbci_apdu_tag[] = {
@@ -753,8 +756,8 @@ static const value_string dvbci_apdu_tag[] = {
static int proto_dvbci = -1;
-static gchar* dvbci_sek = NULL;
-static gchar* dvbci_siv = NULL;
+static const gchar *dvbci_sek = NULL;
+static const gchar *dvbci_siv = NULL;
static gint ett_dvbci = -1;
static gint ett_dvbci_hdr = -1;
@@ -847,8 +850,6 @@ static int hf_dvbci_replaced_pid = -1;
static int hf_dvbci_replacement_pid = -1;
static int hf_dvbci_pmt_flag = -1;
static int hf_dvbci_hc_desc_loop_len = -1;
-static int hf_dvbci_hc_desc_loop = -1;
-static int hf_dvbci_hc_pmt = -1;
static int hf_dvbci_hc_status = -1;
static int hf_dvbci_resp_intv = -1;
static int hf_dvbci_utc_time = -1;
@@ -970,13 +971,12 @@ static int hf_dvbci_sig_strength = -1;
static int hf_dvbci_sig_qual = -1;
static int hf_dvbci_opp_tune_status = -1;
static int hf_dvbci_opp_desc_loop_len = -1;
-static int hf_dvbci_opp_desc_loop = -1;
static int hf_dvbci_sas_app_id = -1;
static int hf_dvbci_sas_sess_state = -1;
static int hf_dvbci_sas_msg_nb = -1;
static int hf_dvbci_sas_msg_len = -1;
-static int hf_dvbci_sas_msg = -1;
+static dissector_table_t sas_msg_dissector_table;
static GHashTable *tpdu_fragment_table = NULL;
static GHashTable *tpdu_reassembled_table = NULL;
@@ -1447,20 +1447,29 @@ dvbci_init(void)
/* dissect a delivery system descriptor loop
and the preceding length field
- (used for host control and operator profile) */
+ (used for host control and operator profile)
+ return the number of bytes dissected */
static gint
-dissect_desc_loop(int len_hf, int data_hf,
+dissect_desc_loop(int len_hf,
tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree)
{
+ gint offset_start;
guint16 desc_loop_len;
+ guint desc_len;
+
+ offset_start = offset;
desc_loop_len = tvb_get_ntohs(tvb, offset) & 0x0FFF;
proto_tree_add_item(tree, len_hf, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
- if (desc_loop_len>0)
- proto_tree_add_item(tree, data_hf, tvb, offset, desc_loop_len, ENC_NA);
+ while (offset-offset_start < 2+desc_loop_len) {
+ desc_len = proto_mpeg_descriptor_dissect(tvb, offset, tree);
+ if (desc_len==0)
+ break;
+ offset += desc_len;
+ }
- return 2+desc_loop_len;
+ return offset-offset_start;
}
@@ -1705,9 +1714,7 @@ dissect_conn_desc(tvbuff_t *tvb, gint offset,
offset += len_field-1;
}
- if (ti)
- proto_item_set_len(ti, offset-offset_start);
-
+ proto_item_set_len(ti, offset-offset_start);
return offset-offset_start;
}
@@ -1797,9 +1804,8 @@ dissect_cc_item(tvbuff_t *tvb, gint offset,
break;
}
offset += dat_len;
- if (ti)
- proto_item_set_len(ti, offset-offset_start);
+ proto_item_set_len(ti, offset-offset_start);
return offset-offset_start;
}
@@ -1913,7 +1919,7 @@ decrypt_sac_msg_body(
goto end;
clear_len = len;
- clear_data = g_malloc(clear_len);
+ clear_data = (unsigned char *)g_malloc(clear_len);
err = gcry_cipher_decrypt (cipher, clear_data, clear_len,
tvb_get_ephemeral_string(encrypted_tvb, offset, len), len);
@@ -1960,7 +1966,8 @@ dissect_si_string(tvbuff_t *tvb, gint offset, gint str_len,
if (!title) /* we always have a title for our strings */
return;
- if (str_len==0)
+ /* str_len==-1 is not supported, we need an actual length */
+ if (str_len<=0)
return;
byte0 = tvb_get_guint8(tvb, offset);
@@ -2069,8 +2076,7 @@ dissect_ca_desc(tvbuff_t *tvb, gint offset, packet_info *pinfo,
offset += (len_byte-4);
}
- if (ti)
- proto_item_set_len(ti, offset-offset_start);
+ proto_item_set_len(ti, offset-offset_start);
return offset-offset_start;
}
@@ -2122,8 +2128,7 @@ dissect_es(tvbuff_t *tvb, gint offset, packet_info *pinfo, proto_tree *tree)
"No CA descriptors for this elementary stream");
}
- if (ti)
- proto_item_set_len(ti, offset-offset_start);
+ proto_item_set_len(ti, offset-offset_start);
return offset-offset_start;
}
@@ -2158,8 +2163,7 @@ dissect_dvbci_text(const gchar *title, tvbuff_t *tvb, gint offset,
dissect_si_string(tvb, offset, len_field, pinfo, text_tree, "Text", FALSE);
offset += len_field;
- if (ti)
- proto_item_set_len(ti, offset-offset_start);
+ proto_item_set_len(ti, offset-offset_start);
return (offset-offset_start);
}
@@ -2233,8 +2237,8 @@ dissect_res_id(tvbuff_t *tvb, gint offset, packet_info *pinfo,
/* dissect the body of a resource manager apdu */
static void
dissect_dvbci_payload_rm(guint32 tag, gint len_field,
- tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree)
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo, proto_tree *tree)
{
const gchar *tag_str;
proto_item *pi;
@@ -2259,8 +2263,8 @@ dissect_dvbci_payload_rm(guint32 tag, gint len_field,
static void
dissect_dvbci_payload_ap(guint32 tag, gint len_field _U_,
- tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree)
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo, proto_tree *tree)
{
guint8 menu_str_len;
guint8 *menu_string;
@@ -2300,8 +2304,8 @@ dissect_dvbci_payload_ap(guint32 tag, gint len_field _U_,
static void
dissect_dvbci_payload_ca(guint32 tag, gint len_field,
- tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree)
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo, proto_tree *tree)
{
const gchar *tag_str;
proto_item *pi;
@@ -2411,8 +2415,8 @@ dissect_dvbci_payload_ca(guint32 tag, gint len_field,
static void
dissect_dvbci_payload_aut(guint32 tag, gint len_field _U_,
- tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
- proto_tree *tree)
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo _U_, proto_tree *tree)
{
gint bytes_len;
@@ -2426,27 +2430,30 @@ dissect_dvbci_payload_aut(guint32 tag, gint len_field _U_,
if (tag==T_AUTH_REQ) {
proto_tree_add_item(tree, hf_dvbci_auth_req_bytes,
- tvb, offset, bytes_len, ENC_BIG_ENDIAN);
+ tvb, offset, bytes_len, ENC_NA);
}
else if (tag==T_AUTH_RESP) {
proto_tree_add_item(tree, hf_dvbci_auth_resp_bytes,
- tvb, offset, bytes_len, ENC_BIG_ENDIAN);
+ tvb, offset, bytes_len, ENC_NA);
}
}
static void
dissect_dvbci_payload_hc(guint32 tag, gint len_field _U_,
- tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree)
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo, proto_tree *tree)
{
- proto_item *pi;
- guint16 nid, onid, tsid, svcid;
- guint8 ref;
- guint16 old_pid, new_pid;
- gboolean pmt_flag;
- gint desc_loop_len;
- guint8 status;
+ proto_item *pi;
+ guint16 nid, onid, tsid, svcid;
+ guint8 ref;
+ guint16 old_pid, new_pid;
+ gboolean pmt_flag;
+ gint desc_loop_len;
+ dissector_table_t mpeg_sect_tid_dissector_table = NULL;
+ guint8 table_id;
+ tvbuff_t *pmt_tvb = NULL;
+ guint8 status;
switch (tag) {
@@ -2503,16 +2510,25 @@ dissect_dvbci_payload_hc(guint32 tag, gint len_field _U_,
proto_tree_add_item(
tree, hf_dvbci_service_id, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
- desc_loop_len = dissect_desc_loop(
- hf_dvbci_hc_desc_loop_len, hf_dvbci_hc_desc_loop,
- tvb, offset, pinfo, tree);
+ desc_loop_len = dissect_desc_loop(hf_dvbci_hc_desc_loop_len,
+ tvb, offset, pinfo, tree);
if (desc_loop_len<0)
break;
offset += desc_loop_len;
if (pmt_flag) {
- /* no need for len check, missing field is handled internally */
- proto_tree_add_item(tree, hf_dvbci_hc_pmt, tvb, offset,
- tvb_reported_length_remaining(tvb, offset), ENC_NA);
+ table_id = tvb_get_guint8(tvb, offset);
+ mpeg_sect_tid_dissector_table =
+ find_dissector_table("mpeg_sect.tid");
+ pmt_tvb = tvb_new_subset(tvb, offset,
+ tvb_reported_length_remaining(tvb, offset),
+ tvb_reported_length_remaining(tvb, offset));
+ if (mpeg_sect_tid_dissector_table && pmt_tvb) {
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", ");
+ /* prevent mpeg_pmt dissector from clearing col_info */
+ col_set_fence(pinfo->cinfo, COL_INFO);
+ dissector_try_uint(mpeg_sect_tid_dissector_table,
+ (const guint32)table_id, pmt_tvb, pinfo, tree);
+ }
}
break;
case T_TUNE_REPLY:
@@ -2530,8 +2546,8 @@ dissect_dvbci_payload_hc(guint32 tag, gint len_field _U_,
static void
dissect_dvbci_payload_dt(guint32 tag, gint len_field,
- tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree)
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo, proto_tree *tree)
{
nstime_t resp_intv;
proto_item *pi = NULL;
@@ -2599,8 +2615,8 @@ dissect_dvbci_payload_dt(guint32 tag, gint len_field,
static void
dissect_dvbci_payload_mmi(guint32 tag, gint len_field,
- tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree)
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo, proto_tree *tree)
{
gint offset_start;
proto_item *pi;
@@ -2773,7 +2789,8 @@ dissect_dvbci_payload_mmi(guint32 tag, gint len_field,
static void
dissect_dvbci_payload_hlc(guint32 tag, gint len_field _U_,
- tvbuff_t *tvb, gint offset, packet_info *pinfo, proto_tree *tree)
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo, proto_tree *tree)
{
guint8 *str;
@@ -2796,8 +2813,8 @@ dissect_dvbci_payload_hlc(guint32 tag, gint len_field _U_,
static void
dissect_dvbci_payload_cup(guint32 tag, gint len_field _U_,
- tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree)
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo, proto_tree *tree)
{
guint8 upgrade_type;
guint16 download_time;
@@ -2856,8 +2873,8 @@ dissect_dvbci_payload_cup(guint32 tag, gint len_field _U_,
static void
dissect_dvbci_payload_cc(guint32 tag, gint len_field _U_,
- tvbuff_t *tvb, gint offset, packet_info *pinfo,
- proto_tree *tree)
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo, proto_tree *tree)
{
guint8 status;
guint32 msg_ctr;
@@ -2967,7 +2984,7 @@ dissect_dvbci_payload_cc(guint32 tag, gint len_field _U_,
proto_tree_add_item(tree, hf_dvbci_sac_signature,
clear_sac_body_tvb, sac_payload_len,
tvb_reported_length_remaining(clear_sac_body_tvb,
- sac_payload_len), ENC_BIG_ENDIAN);
+ sac_payload_len), ENC_NA);
break;
case T_CC_PIN_CAPABILITIES_REPLY:
proto_tree_add_item(tree, hf_dvbci_capability_field,
@@ -3062,7 +3079,8 @@ dissect_dvbci_payload_cc(guint32 tag, gint len_field _U_,
static void
dissect_dvbci_payload_ami(guint32 tag, gint len_field _U_,
- tvbuff_t *tvb, gint offset, packet_info *pinfo, proto_tree *tree)
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo, proto_tree *tree)
{
guint8 app_dom_id_len, init_obj_len;
guint8 *app_dom_id;
@@ -3081,7 +3099,7 @@ dissect_dvbci_payload_ami(guint32 tag, gint len_field _U_,
/* no filter for length items */
app_dom_id_len = tvb_get_guint8(tvb, offset);
proto_tree_add_text(tree, tvb, offset, 1,
- "Application Domain Indentifier length %d", app_dom_id_len);
+ "Application Domain Identifier length %d", app_dom_id_len);
offset++;
init_obj_len = tvb_get_guint8(tvb, offset);
proto_tree_add_text(tree, tvb, offset, 1,
@@ -3217,7 +3235,8 @@ dissect_dvbci_payload_ami(guint32 tag, gint len_field _U_,
static void
dissect_dvbci_payload_lsc(guint32 tag, gint len_field,
- tvbuff_t *tvb, gint offset, packet_info *pinfo, proto_tree *tree)
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo, proto_tree *tree)
{
gint offset_start;
guint8 id, timeout, ret_val, phase_id;
@@ -3362,7 +3381,8 @@ dissect_dvbci_payload_lsc(guint32 tag, gint len_field,
static void
dissect_dvbci_payload_opp(guint32 tag, gint len_field _U_,
- tvbuff_t *tvb, gint offset, packet_info *pinfo, proto_tree *tree)
+ tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
+ packet_info *pinfo, proto_tree *tree)
{
guint16 nit_loop_len;
guint8 cap_loop_len;
@@ -3382,7 +3402,7 @@ dissect_dvbci_payload_opp(guint32 tag, gint len_field _U_,
tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
proto_tree_add_item(tree, hf_dvbci_nit,
- tvb, offset, nit_loop_len, ENC_BIG_ENDIAN);
+ tvb, offset, nit_loop_len, ENC_NA);
break;
case T_OPERATOR_INFO:
info_valid = ((tvb_get_guint8(tvb, offset) & 0x08) == 0x08);
@@ -3492,13 +3512,11 @@ dissect_dvbci_payload_opp(guint32 tag, gint len_field _U_,
offset++;
proto_tree_add_item(tree, hf_dvbci_opp_tune_status,
tvb, offset, 1, ENC_BIG_ENDIAN);
- dissect_desc_loop(
- hf_dvbci_opp_desc_loop_len, hf_dvbci_opp_desc_loop,
+ dissect_desc_loop(hf_dvbci_opp_desc_loop_len,
tvb, offset, pinfo, tree);
break;
case T_OPERATOR_TUNE:
- dissect_desc_loop(
- hf_dvbci_opp_desc_loop_len, hf_dvbci_opp_desc_loop,
+ dissect_desc_loop(hf_dvbci_opp_desc_loop_len,
tvb, offset, pinfo, tree);
break;
default:
@@ -3509,19 +3527,22 @@ dissect_dvbci_payload_opp(guint32 tag, gint len_field _U_,
static void
dissect_dvbci_payload_sas(guint32 tag, gint len_field _U_,
- tvbuff_t *tvb, gint offset, packet_info *pinfo, proto_tree *tree)
+ tvbuff_t *tvb, gint offset, circuit_t *circuit,
+ packet_info *pinfo, proto_tree *tree)
{
- guint64 app_id;
+ gchar app_id_str[2+16+1]; /* "0x", string of 16 hex digits, trailing 0 */
guint8 sas_status;
+ dissector_handle_t msg_handle;
guint8 msg_nb;
guint16 msg_len;
+ tvbuff_t *msg_tvb;
switch(tag) {
case T_SAS_CONNECT_RQST:
case T_SAS_CONNECT_CNF:
- app_id = tvb_get_ntoh64(tvb, offset);
- col_append_sep_fstr(pinfo->cinfo, COL_INFO, ": ",
- "App ID 0x%016" G_GINT64_MODIFIER "x", app_id);
+ g_snprintf(app_id_str, sizeof(app_id_str),
+ "0x%016" G_GINT64_MODIFIER "x", tvb_get_ntoh64(tvb, offset));
+ col_append_sep_fstr(pinfo->cinfo, COL_INFO, ": ", "%s", app_id_str);
proto_tree_add_item(tree, hf_dvbci_sas_app_id,
tvb, offset, 8, ENC_BIG_ENDIAN);
offset += 8;
@@ -3532,6 +3553,16 @@ dissect_dvbci_payload_sas(guint32 tag, gint len_field _U_,
"Ok" : "Error"));
proto_tree_add_item(tree, hf_dvbci_sas_sess_state,
tvb, offset, 1, ENC_BIG_ENDIAN);
+ if (!circuit)
+ break;
+ if (sas_status == SAS_SESS_STATE_CONNECTED) {
+ msg_handle = dissector_get_string_handle(
+ sas_msg_dissector_table, app_id_str);
+ /* this clears the dissector for msg_handle==NULL */
+ circuit_set_dissector(circuit, msg_handle);
+ }
+ else
+ circuit_set_dissector(circuit, NULL);
}
break;
case T_SAS_ASYNC_MSG:
@@ -3545,8 +3576,11 @@ dissect_dvbci_payload_sas(guint32 tag, gint len_field _U_,
proto_tree_add_item(tree, hf_dvbci_sas_msg_len,
tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
- proto_tree_add_item(tree, hf_dvbci_sas_msg,
- tvb, offset, msg_len, ENC_NA);
+ msg_tvb = tvb_new_subset(tvb, offset, msg_len, msg_len);
+ msg_handle = (circuit && circuit->dissector_handle) ?
+ circuit->dissector_handle : find_dissector("data");
+ if (msg_handle)
+ call_dissector(msg_handle, msg_tvb, pinfo, tree);
break;
default:
break;
@@ -3555,8 +3589,8 @@ dissect_dvbci_payload_sas(guint32 tag, gint len_field _U_,
static void
-dissect_dvbci_apdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- guint8 direction)
+dissect_dvbci_apdu(tvbuff_t *tvb, circuit_t *circuit,
+ packet_info *pinfo, proto_tree *tree, guint8 direction)
{
proto_item *ti;
proto_tree *app_tree = NULL;
@@ -3565,6 +3599,8 @@ dissect_dvbci_apdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
gint offset;
proto_item *pi;
apdu_info_t *ai;
+ guint32 apdu_res_id;
+ const gchar *ai_res_class_str;
apdu_len = tvb_reported_length(tvb);
@@ -3639,13 +3675,36 @@ dissect_dvbci_apdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
"Length field for %s must be %d", tag_str, ai->len_field);
return;
}
+ if (circuit) {
+ apdu_res_id = GPOINTER_TO_UINT(
+ (gpointer)circuit_get_proto_data(circuit, proto_dvbci));
+
+ ai_res_class_str = val_to_str(ai->res_class, dvbci_res_class, "Unknown");
+
+ if(RES_CLASS(apdu_res_id) != ai->res_class) {
+ pi = proto_tree_add_text(app_tree, tvb, 0, APDU_TAG_SIZE,
+ "Invalid resource class for this apdu");
+ expert_add_info_format(pinfo, pi, PI_PROTOCOL, PI_WARN,
+ "%s can only be sent on a %s session",
+ tag_str, ai_res_class_str);
+ }
+ if(RES_VER(apdu_res_id) < ai->res_min_ver) {
+ pi = proto_tree_add_text(app_tree, tvb, 0, APDU_TAG_SIZE,
+ "Invalid resource version for this apdu");
+ expert_add_info_format(pinfo, pi, PI_PROTOCOL, PI_WARN,
+ "%s apdu requires at least %s version %d",
+ tag_str, ai_res_class_str, ai->res_min_ver);
+ }
+ /* don't return, we can continue dissecting the APDU */
+ }
if (ai->len_field!=0) {
if (!ai->dissect_payload) {
/* don't display an error, getting here means we have illegal
* data in apdu_info[] */
return;
}
- ai->dissect_payload(tag, len_field, tvb, offset, pinfo, app_tree);
+ ai->dissect_payload(
+ tag, len_field, tvb, offset, circuit, pinfo, app_tree);
}
}
@@ -3795,14 +3854,15 @@ dissect_dvbci_spdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
used for filtering */
if (circuit && !res_id_it) {
/* when a circuit is found, it always contains a valid resource id */
- res_id = GPOINTER_TO_UINT(circuit_get_proto_data(circuit, proto_dvbci));
+ res_id = GPOINTER_TO_UINT(
+ (gpointer)circuit_get_proto_data(circuit, proto_dvbci));
res_id_it = dissect_res_id(NULL, 0, pinfo, sess_tree, res_id, TRUE);
PROTO_ITEM_SET_GENERATED(res_id_it);
}
if (payload_tvb) {
proto_item_set_len(ti, spdu_len-tvb_reported_length(payload_tvb));
- dissect_dvbci_apdu(payload_tvb, pinfo, tree, direction);
+ dissect_dvbci_apdu(payload_tvb, circuit, pinfo, tree, direction);
}
else {
proto_item_set_len(ti, spdu_len);
@@ -4101,7 +4161,8 @@ dissect_dvbci_lpdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
"Second byte of an LPDU must be 0x80 or 0x00");
}
- if (payload_len > buf_size_host) {
+ /* buf_size_host==0 -> we did not capture the buffer size negotiation */
+ if (buf_size_host!=0 && payload_len>buf_size_host) {
pi = proto_tree_add_text(
link_tree, tvb, 2, payload_len, "Payload too large");
expert_add_info_format(pinfo, pi, PI_PROTOCOL, PI_WARN,
@@ -4222,8 +4283,7 @@ dissect_dvbci_cis(tvbuff_t *tvb, gint offset,
offset += tpl_len;
} while ((tvb_reported_length_remaining(tvb, offset) > 0) && (tpl_code != CISTPL_END));
- if (ti_main)
- proto_item_set_len(ti_main, offset-offset_start);
+ proto_item_set_len(ti_main, offset-offset_start);
}
@@ -4649,14 +4709,6 @@ proto_register_dvbci(void)
{ "Descriptor loop length", "dvb-ci.hc.desc_loop_len",
FT_UINT16, BASE_DEC, NULL, 0x0FFF, NULL, HFILL }
},
- { &hf_dvbci_hc_desc_loop,
- { "Descriptor loop", "dvb-ci.hc.desc_loop",
- FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
- },
- { &hf_dvbci_hc_pmt,
- { "Program map section", "dvb-ci.hc.pmt",
- FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
- },
{ &hf_dvbci_hc_status,
{ "Status field", "dvb-ci.hc.status_field",
FT_UINT8, BASE_HEX, VALS(dvbci_hc_status), 0, NULL, HFILL }
@@ -5150,10 +5202,6 @@ proto_register_dvbci(void)
{ "Descriptor loop length", "dvb-ci.opp.desc_loop_len",
FT_UINT16, BASE_DEC, NULL, 0x0FFF, NULL, HFILL }
},
- { &hf_dvbci_opp_desc_loop,
- { "Descriptor loop", "dvb-ci.opp.desc_loop",
- FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
- },
{ &hf_dvbci_sas_app_id,
{ "Application ID", "dvb-ci.sas.app_id",
FT_UINT64, BASE_HEX, NULL, 0, NULL, HFILL }
@@ -5169,10 +5217,6 @@ proto_register_dvbci(void)
{ &hf_dvbci_sas_msg_len,
{ "Message length", "dvb-ci.sas.msg_len",
FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
- },
- { &hf_dvbci_sas_msg,
- { "Message", "dvb-ci.sas.message",
- FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
}
};
@@ -5180,14 +5224,14 @@ proto_register_dvbci(void)
for(i=0; i<array_length(spdu_info); i++) {
g_hash_table_insert(spdu_table,
GUINT_TO_POINTER((guint)spdu_info[i].tag),
- (gpointer)(&spdu_info[i]));
+ (const gpointer)(&spdu_info[i]));
}
apdu_table = g_hash_table_new(g_direct_hash, g_direct_equal);
for(i=0; i<array_length(apdu_info); i++) {
g_hash_table_insert(apdu_table,
GUINT_TO_POINTER((guint)apdu_info[i].tag),
- (gpointer)(&apdu_info[i]));
+ (const gpointer)(&apdu_info[i]));
}
proto_dvbci = proto_register_protocol(
@@ -5198,11 +5242,14 @@ proto_register_dvbci(void)
dvbci_module = prefs_register_protocol(
proto_dvbci, proto_reg_handoff_dvbci);
prefs_register_string_preference(dvbci_module,
- "sek", "SAC Encryption Key", "SAC Encryption Key (16 hex bytes)",
- (const gchar **)&dvbci_sek);
+ "sek", "SAC Encryption Key", "SAC Encryption Key (16 hex bytes)",
+ &dvbci_sek);
prefs_register_string_preference(dvbci_module,
- "siv", "SAC Init Vector", "SAC Init Vector (16 hex bytes)",
- (const gchar **)&dvbci_siv);
+ "siv", "SAC Init Vector", "SAC Init Vector (16 hex bytes)",
+ &dvbci_siv);
+
+ sas_msg_dissector_table = register_dissector_table("dvb-ci.sas.app_id_str",
+ "SAS application id", FT_STRING, BASE_NONE);
register_init_routine(dvbci_init);
}
diff --git a/epan/dissectors/packet-eap.c b/epan/dissectors/packet-eap.c
index 9e95c779bc..d497bf9e9d 100644
--- a/epan/dissectors/packet-eap.c
+++ b/epan/dissectors/packet-eap.c
@@ -34,6 +34,7 @@
#include <epan/reassemble.h>
#include <epan/emem.h>
#include <epan/eap.h>
+#include <epan/expert.h>
#include "packet-wps.h"
@@ -44,89 +45,151 @@ static int hf_eap_len = -1;
static int hf_eap_type = -1;
static int hf_eap_type_nak = -1;
+static int hf_eap_identity = -1;
+
+static int hf_eap_notification = -1;
+
+static int hf_eap_md5_value_size = -1;
+static int hf_eap_md5_value = -1;
+static int hf_eap_md5_extra_data = -1;
+
+static int hf_eap_sim_subtype = -1;
+static int hf_eap_sim_reserved = -1;
+static int hf_eap_sim_subtype_attribute = -1;
+static int hf_eap_sim_subtype_type = -1;
+static int hf_eap_sim_subtype_length = -1;
+static int hf_eap_sim_subtype_value = -1;
+
+static int hf_eap_aka_subtype = -1;
+static int hf_eap_aka_reserved = -1;
+static int hf_eap_aka_subtype_attribute = -1;
+static int hf_eap_aka_subtype_type = -1;
+static int hf_eap_aka_subtype_length = -1;
+static int hf_eap_aka_subtype_value = -1;
+
+static int hf_eap_leap_version = -1;
+static int hf_eap_leap_reserved = -1;
+static int hf_eap_leap_count = -1;
+static int hf_eap_leap_peer_challenge = -1;
+static int hf_eap_leap_peer_response = -1;
+static int hf_eap_leap_ap_challenge = -1;
+static int hf_eap_leap_ap_response = -1;
+static int hf_eap_leap_name = -1;
+
+static int hf_eap_ms_chap_v2_opcode = -1;
+static int hf_eap_ms_chap_v2_id = -1;
+static int hf_eap_ms_chap_v2_length = -1;
+static int hf_eap_ms_chap_v2_value_size = -1;
+static int hf_eap_ms_chap_v2_challenge = -1;
+static int hf_eap_ms_chap_v2_name = -1;
+static int hf_eap_ms_chap_v2_peer_challenge = -1;
+static int hf_eap_ms_chap_v2_reserved = -1;
+static int hf_eap_ms_chap_v2_nt_response = -1;
+static int hf_eap_ms_chap_v2_flags = -1;
+static int hf_eap_ms_chap_v2_message = -1;
+static int hf_eap_ms_chap_v2_failure_request = -1;
+
static gint ett_eap = -1;
static dissector_handle_t ssl_handle;
-
-
const value_string eap_code_vals[] = {
- { EAP_REQUEST, "Request" },
- { EAP_RESPONSE, "Response" },
- { EAP_SUCCESS, "Success" },
- { EAP_FAILURE, "Failure" },
- { EAP_INITIATE, "Initiate" }, /* [RFC5296] */
- { EAP_FINISH, "Finish" }, /* [RFC5296] */
- { 0, NULL }
+ { EAP_REQUEST, "Request" },
+ { EAP_RESPONSE, "Response" },
+ { EAP_SUCCESS, "Success" },
+ { EAP_FAILURE, "Failure" },
+ { EAP_INITIATE, "Initiate" }, /* [RFC5296] */
+ { EAP_FINISH, "Finish" }, /* [RFC5296] */
+ { 0, NULL }
};
/*
References:
- 1) http://www.iana.org/assignments/ppp-numbers
- PPP EAP REQUEST/RESPONSE TYPES
+ 1) http://www.iana.org/assignments/ppp-numbers PPP EAP REQUEST/RESPONSE TYPES
2) http://www.ietf.org/internet-drafts/draft-ietf-pppext-rfc2284bis-02.txt
3) RFC2284
4) RFC3748
- 5) http://www.iana.org/assignments/eap-numbers EAP registry (updated 2009-02-25)
+ 5) http://www.iana.org/assignments/eap-numbers EAP registry (updated 2011-02-22)
+ 6) http://tools.ietf.org/html/draft-bersani-eap-synthesis-sharedkeymethods-00
*/
const value_string eap_type_vals[] = {
- { 1, "Identity [RFC3748]" },
- { 2, "Notification [RFC3748]" },
- { 3, "Legacy Nak (Response only) [RFC3748]" },
- { 4, "MD5-Challenge [RFC3748]" },
- { 5, "One Time Password (OTP) [RFC3748]" },
- { 6, "Generic Token Card [RFC3748]" },
- { 7, "Allocated" },
- { 8, "Allocated" },
- { 9, "RSA Public Key Authentication [Whelan]" },
- { 10, "DSS Unilateral [Nace]" },
- { 11, "KEA [Nace]" },
- { 12, "KEA-VALIDATE [Nace]" },
- { 13, "EAP-TLS [RFC5216] [Aboba]" },
- { 14, "Defender Token (AXENT) [Rosselli]" },
- { 15, "RSA Security SecurID EAP [Nystrom]" },
- { 16, "Arcot Systems EAP [Jerdonek]" },
- { 17, "EAP-Cisco Wireless (LEAP) [Norman]" },
- { 18, "GSM Subscriber Identity Modules (EAP-SIM) [RFC4186]" },
- { 19, "SRP-SHA1 Part 1 [Carlson]" },
- { 20, "Unassigned" },
- { 21, "EAP-TTLS [RFC5281]" },
- { 22, "Remote Access Service [Fields]" },
- { 23, "EAP-AKA Authentication [RFC4187]" },
- { 24, "EAP-3Com Wireless [Young]" },
- { 25, "PEAP [Palekar]" },
- { 26, "MS-EAP-Authentication [Palekar]" },
- { 27, "Mutual Authentication w/Key Exchange (MAKE)[Berrendonner]" },
- { 28, "CRYPTOCard [Webb]" },
- { 29, "EAP-MSCHAP-V2 [Potter]" },
- { 30, "DynamID [Merlin]" },
- { 31, "Rob EAP [Ullah]" },
- { 32, "Protected One-Time Password [RFC4793] [Nystrom]" },
- { 33, "MS-Authentication-TLV [Palekar]" },
- { 34, "SentriNET [Kelleher]" },
- { 35, "EAP-Actiontec Wireless [Chang]" },
- { 36, "Cogent Systems Biometrics Authentication EAP [Xiong]" },
- { 37, "AirFortress EAP [Hibbard]" },
- { 38, "EAP-HTTP Digest [Tavakoli]" },
- { 39, "SecureSuite EAP [Clements]" },
- { 40, "DeviceConnect EAP [Pitard]" },
- { 41, "EAP-SPEKE [Zick]" },
- { 42, "EAP-MOBAC [Rixom]" },
- { 43, "EAP-FAST [RFC4851]" },
- { 44, "ZoneLabs EAP (ZLXEAP) [Bogue]" },
- { 45, "EAP-Link [Zick]" },
- { 46, "EAP-PAX [Clancy]" },
- { 47, "EAP-PSK [RFC4764]" },
- { 48, "EAP-SAKE [RFC4763]" },
- { 49, "EAP-IKEv2 [RFC5106]" },
- { 50, "EAP-AKA' [RFC5448]" },
- { 51, "EAP-GPSK [RFC5433]" },
- { 53, "EAP-pwd [RFC-harkins-emu-eap-pwd-12.txt]" },
- { 254, "Expanded Type [RFC3748]" },
- { 255, "Experimental [RFC3748]" },
- { 0, NULL }
+ { 1, "Identity" },
+ { 2, "Notification" },
+ { 3, "Legacy Nak (Response Only)" },
+ { 4, "MD5-Challenge EAP (EAP-MD5-CHALLENGE)" },
+ { 5, "One-Time Password EAP (EAP-OTP)" },
+ { 6, "Generic Token Card EAP (EAP-GTC)" },
+ { 7, "Allocated" },
+ { 8, "Allocated" },
+ { 9, "RSA Public Key Authentication EAP (EAP-RSA-PKA)" },
+ { 10, "DSS Unilateral EAP (EAP-DSS)" },
+ { 11, "KEA EAP (EAP-KEA)" },
+ { 12, "KEA Validate EAP (EAP-KEA-VALIDATE)" },
+ { 13, "TLS EAP (EAP-TLS)" },
+ { 14, "Defender Token EAP (EAP-AXENT)" },
+ { 15, "RSA Security SecurID EAP (EAP-RSA-SECURID)" },
+ { 16, "Arcot Systems EAP (EAP-ARCOT-SYSTEMS)" },
+ { 17, "Cisco Wireless EAP / Lightweight EAP (EAP-LEAP)" },
+ { 18, "GSM Subscriber Identity Modules EAP (EAP-SIM)" },
+ { 19, "Secure Remote Password SHA1 Part 1 EAP (EAP-SRP-SHA1-PART1)" },
+ { 20, "Secure Remote Password SHA1 Part 2 EAP (EAP-SRP-SHA1-PART2)" },
+ { 21, "Tunneled TLS EAP (EAP-TTLS)" },
+ { 22, "Remote Access Service EAP (EAP-RAS)" },
+ { 23, "UMTS Authentication and Key Agreement EAP (EAP-AKA)" },
+ { 24, "3Com Wireless EAP (EAP-3COM-WIRELESS)" },
+ { 25, "Protected EAP (EAP-PEAP)" },
+ { 26, "MS-Authentication EAP (EAP-MS-AUTH)" },
+ { 27, "Mutual Authentication w/Key Exchange EAP (EAP-MAKE)" },
+ { 28, "CRYPTOCard EAP (EAP-CRYPTOCARD)" },
+ { 29, "MS-CHAP-v2 EAP (EAP-MS-CHAP-V2)" },
+ { 30, "DynamID EAP (EAP-DYNAMID)" },
+ { 31, "Rob EAP (EAP-ROB)" },
+ { 32, "Protected One-Time Password EAP (EAP-POTP)" },
+ { 33, "MS-Authentication TLV EAP (EAP-MS-AUTH-TLV)" },
+ { 34, "SentriNET (EAP-SENTRINET)" },
+ { 35, "Actiontec Wireless EAP (EAP-ACTIONTEC-WIRELESS)" },
+ { 36, "Cogent Systems Biometrics Authentication EAP (EAP-COGENT-BIOMETRIC)" },
+ { 37, "AirFortress EAP (EAP-AIRFORTRESS)" },
+ { 38, "HTTP Digest EAP (EAP-HTTP-DIGEST)" },
+ { 39, "SecureSuite EAP (EAP-SECURESUITE)" },
+ { 40, "DeviceConnect EAP (EAP-DEVICECONNECT)" },
+ { 41, "Simple Password Exponential Key Exchange EAP (EAP-SPEKE)" },
+ { 42, "MOBAC EAP (EAP-MOBAC)" },
+ { 43, "Flexible Authentication via Secure Tunneling EAP (EAP-FAST)" },
+ { 44, "ZoneLabs EAP (EAP-ZLXEAP)" },
+ { 45, "Link EAP (EAP-LINK)" },
+ { 46, "Password Authenticated eXchange EAP (EAP-PAX)" },
+ { 47, "Pre-Shared Key EAP (EAP-PSK)" },
+ { 48, "Shared-secret Authentication and Key Establishment EAP (EAP-SAKE)" },
+ { 49, "Internet Key Exchange v2 EAP (EAP-IKEv2)" },
+ { 50, "UMTS Authentication and Key Agreement' EAP (EAP-AKA')" },
+ { 51, "Generalized Pre-Shared Key EAP (EAP-GPSK)" },
+ { 52, "Password EAP (EAP-pwd)" },
+ { 53, "Encrypted Key Exchange v1 EAP (EAP-EKEv1)" },
+ { 254, "Expanded Type" },
+ { 255, "Experimental" },
+ { 0, NULL }
+};
+
+const value_string eap_sim_subtype_vals[] = {
+ { SIM_START, "Start" },
+ { SIM_CHALLENGE, "Challenge" },
+ { SIM_NOTIFICATION, "Notification" },
+ { SIM_RE_AUTHENTICATION, "Re-authentication" },
+ { SIM_CLIENT_ERROR, "Client-Error" },
+ { 0, NULL }
+};
+const value_string eap_aka_subtype_vals[] = {
+ { AKA_CHALLENGE, "AKA-Challenge" },
+ { AKA_AUTHENTICATION_REJECT, "AKA-Authentication-Reject" },
+ { AKA_SYNCHRONIZATION_FAILURE, "AKA-Synchronization-Failure" },
+ { AKA_IDENTITY, "AKA-Identity" },
+ { AKA_NOTIFICATION, "Notification" },
+ { AKA_REAUTHENTICATION, "Re-authentication" },
+ { AKA_CLIENT_ERROR, "Client-Error" },
+ { 0, NULL }
};
/*
@@ -138,59 +201,68 @@ References:
5) 3GPP TS 24.302
*/
-const value_string eap_sim_aka_attributes[] = {
- { 1, "AT_RAND" },
- { 2, "AT_AUTN" },
- { 3, "AT_RES" },
- { 4, "AT_AUTS" },
- { 6, "AT_PADDING" },
- { 7, "AT_NONCE_MT" },
- { 10, "AT_PERMANENT_ID_REQ" },
- { 11, "AT_MAC" },
- { 12, "AT_NOTIFICATION" },
- { 13, "AT_ANY_ID_REQ" },
- { 14, "AT_IDENTITY" },
- { 15, "AT_VERSION_LIST" },
- { 16, "AT_SELECTED_VERSION" },
- { 17, "AT_FULLAUTH_ID_REQ" },
- { 19, "AT_COUNTER" },
- { 20, "AT_COUNTER_TOO_SMALL" },
- { 21, "AT_NONCE_S" },
- { 22, "AT_CLIENT_ERROR_CODE" },
- { 23, "AT_KDF_INPUT"},
- { 24, "AT_KDF"},
- { 129, "AT_IV" },
- { 130, "AT_ENCR_DATA" },
- { 132, "AT_NEXT_PSEUDONYM" },
- { 133, "AT_NEXT_REAUTH_ID" },
- { 134, "AT_CHECKCODE" },
- { 135, "AT_RESULT_IND" },
- { 136, "AT_BIDDING" },
- { 137, "AT_IPMS_IND" },
- { 138, "AT_IPMS_RES" },
- { 139, "AT_TRUST_IND" },
- { 0, NULL }
+const value_string eap_sim_aka_attribute_vals[] = {
+ { 1, "AT_RAND" },
+ { 2, "AT_AUTN" },
+ { 3, "AT_RES" },
+ { 4, "AT_AUTS" },
+ { 6, "AT_PADDING" },
+ { 7, "AT_NONCE_MT" },
+ { 10, "AT_PERMANENT_ID_REQ" },
+ { 11, "AT_MAC" },
+ { 12, "AT_NOTIFICATION" },
+ { 13, "AT_ANY_ID_REQ" },
+ { 14, "AT_IDENTITY" },
+ { 15, "AT_VERSION_LIST" },
+ { 16, "AT_SELECTED_VERSION" },
+ { 17, "AT_FULLAUTH_ID_REQ" },
+ { 19, "AT_COUNTER" },
+ { 20, "AT_COUNTER_TOO_SMALL" },
+ { 21, "AT_NONCE_S" },
+ { 22, "AT_CLIENT_ERROR_CODE" },
+ { 23, "AT_KDF_INPUT"},
+ { 24, "AT_KDF"},
+ { 129, "AT_IV" },
+ { 130, "AT_ENCR_DATA" },
+ { 132, "AT_NEXT_PSEUDONYM" },
+ { 133, "AT_NEXT_REAUTH_ID" },
+ { 134, "AT_CHECKCODE" },
+ { 135, "AT_RESULT_IND" },
+ { 136, "AT_BIDDING" },
+ { 137, "AT_IPMS_IND" },
+ { 138, "AT_IPMS_RES" },
+ { 139, "AT_TRUST_IND" },
+ { 0, NULL }
+};
+
+const value_string eap_ms_chap_v2_opcode_vals[] = {
+ { MS_CHAP_V2_CHALLENGE, "Challenge" },
+ { MS_CHAP_V2_RESPONSE, "Response" },
+ { MS_CHAP_V2_SUCCESS, "Success" },
+ { MS_CHAP_V2_FAILURE, "Failure" },
+ { MS_CHAP_V2_CHANGE_PASSWORD, "Change-Password" },
+ { 0, NULL }
};
/*
* State information for EAP-TLS (RFC2716) and Lightweight EAP:
*
- * http://www.missl.cs.umd.edu/wireless/ethereal/leap.txt
+ * http://www.missl.cs.umd.edu/wireless/ethereal/leap.txt
*
* Attach to all conversations:
*
- * a sequence number to be handed to "fragment_add_seq()" as
- * the fragment sequence number - if it's -1, no reassembly
- * is in progress, but if it's not, it's the sequence number
- * to use for the current fragment;
+ * a sequence number to be handed to "fragment_add_seq()" as
+ * the fragment sequence number - if it's -1, no reassembly
+ * is in progress, but if it's not, it's the sequence number
+ * to use for the current fragment;
*
- * a value to be handed to "fragment_add_seq()" as the
- * reassembly ID - when a reassembly is started, it's set to
- * the frame number of the current frame, i.e. the frame
- * that starts the reassembly;
+ * a value to be handed to "fragment_add_seq()" as the
+ * reassembly ID - when a reassembly is started, it's set to
+ * the frame number of the current frame, i.e. the frame
+ * that starts the reassembly;
*
- * an indication of the current state of LEAP negotiation,
- * with -1 meaning no LEAP negotiation is in progress.
+ * an indication of the current state of LEAP negotiation,
+ * with -1 meaning no LEAP negotiation is in progress.
*
* Attach to frames containing fragments of EAP-TLS messages the
* reassembly ID for those fragments, so we can find the reassembled
@@ -205,13 +277,13 @@ const value_string eap_sim_aka_attributes[] = {
*/
typedef struct {
- int eap_tls_seq;
- guint32 eap_reass_cookie;
- int leap_state;
+ int eap_tls_seq;
+ guint32 eap_reass_cookie;
+ int leap_state;
} conv_state_t;
typedef struct {
- int info; /* interpretation depends on EAP message type */
+ int info; /* interpretation depends on EAP message type */
} frame_state_t;
/*********************************************************************
@@ -239,42 +311,50 @@ from RFC2716, pg 17
#define EAP_TLS_FLAG_L 0x80 /* Length included */
#define EAP_TLS_FLAG_M 0x40 /* More fragments */
#define EAP_TLS_FLAG_S 0x20 /* EAP-TLS start */
-#define EAP_PEAP_FLAG_VERSION 0x07 /* EAP-PEAP version */
+
+#define EAP_TLS_FLAGS_VERSION 0x07 /* Version mask for PEAP, TTLS, FAST */
/*
* reassembly of EAP-TLS
*/
-static GHashTable *eaptls_fragment_table = NULL;
-
-static int hf_eaptls_fragment = -1;
-static int hf_eaptls_fragments = -1;
-static int hf_eaptls_fragment_overlap = -1;
-static int hf_eaptls_fragment_overlap_conflict = -1;
-static int hf_eaptls_fragment_multiple_tails = -1;
-static int hf_eaptls_fragment_too_long_fragment = -1;
-static int hf_eaptls_fragment_error = -1;
-static int hf_eaptls_fragment_count = -1;
-static int hf_eaptls_reassembled_length = -1;
-static gint ett_eaptls_fragment = -1;
-static gint ett_eaptls_fragments = -1;
+static GHashTable *eap_tls_fragment_table = NULL;
+
+static int hf_eap_tls_flags = -1;
+static int hf_eap_tls_flag_l = -1;
+static int hf_eap_tls_flag_m = -1;
+static int hf_eap_tls_flag_s = -1;
+static int hf_eap_tls_flags_version = -1;
+static int hf_eap_tls_len = -1;
+static int hf_eap_tls_fragment = -1;
+static int hf_eap_tls_fragments = -1;
+static int hf_eap_tls_fragment_overlap = -1;
+static int hf_eap_tls_fragment_overlap_conflict = -1;
+static int hf_eap_tls_fragment_multiple_tails = -1;
+static int hf_eap_tls_fragment_too_long_fragment = -1;
+static int hf_eap_tls_fragment_error = -1;
+static int hf_eap_tls_fragment_count = -1;
+static int hf_eap_tls_reassembled_length = -1;
+static gint ett_eap_tls_fragment = -1;
+static gint ett_eap_tls_fragments = -1;
static gint ett_eap_sim_attr = -1;
static gint ett_eap_aka_attr = -1;
static gint ett_eap_exp_attr = -1;
-
-static const fragment_items eaptls_frag_items = {
- &ett_eaptls_fragment,
- &ett_eaptls_fragments,
- &hf_eaptls_fragments,
- &hf_eaptls_fragment,
- &hf_eaptls_fragment_overlap,
- &hf_eaptls_fragment_overlap_conflict,
- &hf_eaptls_fragment_multiple_tails,
- &hf_eaptls_fragment_too_long_fragment,
- &hf_eaptls_fragment_error,
- &hf_eaptls_fragment_count,
- NULL,
- &hf_eaptls_reassembled_length,
- "fragments"
+static gint ett_eap_tls_flags = -1;
+
+static const fragment_items eap_tls_frag_items = {
+ &ett_eap_tls_fragment,
+ &ett_eap_tls_fragments,
+ &hf_eap_tls_fragments,
+ &hf_eap_tls_fragment,
+ &hf_eap_tls_fragment_overlap,
+ &hf_eap_tls_fragment_overlap_conflict,
+ &hf_eap_tls_fragment_multiple_tails,
+ &hf_eap_tls_fragment_too_long_fragment,
+ &hf_eap_tls_fragment_error,
+ &hf_eap_tls_fragment_count,
+ NULL,
+ &hf_eap_tls_reassembled_length,
+ "fragments"
};
/**********************************************************************
@@ -283,32 +363,32 @@ static const fragment_items eaptls_frag_items = {
Currently this is limited to WifiProtectedSetup. Maybe we need
a generic method to support EAP extended types ?
*********************************************************************/
-static int hf_eapext_vendorid = -1;
-static int hf_eapext_vendortype = -1;
+static int hf_eap_ext_vendor_id = -1;
+static int hf_eap_ext_vendor_type = -1;
/* Vendor-Type and Vendor-id */
#define WFA_VENDOR_ID 0x00372A
#define WFA_SIMPLECONFIG_TYPE 0x1
-static const value_string eapext_vendorid_vals[] = {
+static const value_string eap_ext_vendor_id_vals[] = {
{ WFA_VENDOR_ID, "WFA" },
{ 0, NULL }
};
-static const value_string eapext_vendortype_vals[] = {
+static const value_string eap_ext_vendor_type_vals[] = {
{ WFA_SIMPLECONFIG_TYPE, "SimpleConfig" },
{ 0, NULL }
};
static void
dissect_exteap(proto_tree *eap_tree, tvbuff_t *tvb, int offset,
- gint size, packet_info* pinfo)
+ gint size, packet_info* pinfo)
{
- proto_tree_add_item(eap_tree, hf_eapext_vendorid, tvb, offset, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(eap_tree, hf_eap_ext_vendor_id, tvb, offset, 3, ENC_BIG_ENDIAN);
offset += 3; size -= 3;
- proto_tree_add_item(eap_tree, hf_eapext_vendortype, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(eap_tree, hf_eap_ext_vendor_type, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4; size -= 4;
/* Generic method to support multiple vendor-defined extended types goes here :-) */
@@ -324,289 +404,200 @@ test_flag(unsigned char flag, unsigned char mask)
}
static void
-eaptls_defragment_init(void)
+eap_tls_defragment_init(void)
{
- fragment_table_init(&eaptls_fragment_table);
+ fragment_table_init(&eap_tls_fragment_table);
}
static void
-dissect_eap_mschapv2(proto_tree *eap_tree, tvbuff_t *tvb, int offset,
- gint size)
+dissect_eap_mschapv2(proto_tree *eap_tree, tvbuff_t *tvb, packet_info *pinfo, int offset,
+ gint size)
{
- gint left = size;
- gint ms_len;
- guint8 value_size;
- enum {
- MS_CHAPv2_CHALLENGE = 1,
- MS_CHAPv2_RESPONSE = 2,
- MS_CHAPv2_SUCCESS = 3,
- MS_CHAPv2_FAILURE = 4,
- MS_CHAPv2_CHANGE_PASSWORD = 5
- } opcode;
- static const value_string opcodes[] = {
- { MS_CHAPv2_CHALLENGE, "Challenge" },
- { MS_CHAPv2_RESPONSE, "Response" },
- { MS_CHAPv2_SUCCESS, "Success" },
- { MS_CHAPv2_FAILURE, "Failure" },
- { MS_CHAPv2_CHANGE_PASSWORD, "Change-Password" },
- { 0, NULL }
- };
-
- /* OpCode (1 byte), MS-CHAPv2-ID (1 byte), MS-Length (2 bytes), Data */
- opcode = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(eap_tree, tvb, offset, 1,
- "OpCode: %d (%s)",
- opcode, val_to_str(opcode, opcodes, "Unknown"));
- offset++;
- left--;
- if (left <= 0)
- return;
-
- proto_tree_add_text(eap_tree, tvb, offset, 1, "MS-CHAPv2-ID: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- left--;
- if (left <= 0)
- return;
-
- ms_len = tvb_get_ntohs(tvb, offset);
- proto_tree_add_text(eap_tree, tvb, offset, 2, "MS-Length: %d%s",
- ms_len,
- ms_len != size ? " (invalid len)" : "");
- offset += 2;
- left -= 2;
-
- switch (opcode) {
- case MS_CHAPv2_CHALLENGE:
- if (left <= 0)
- break;
- value_size = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(eap_tree, tvb, offset, 1,
- "Value-Size: %d", value_size);
- offset++;
- left--;
- proto_tree_add_text(eap_tree, tvb, offset, value_size,
- "Challenge: %s",
- tvb_bytes_to_str(tvb, offset, value_size));
- offset += value_size;
- left -= value_size;
- if (left <= 0)
- break;
- proto_tree_add_text(eap_tree, tvb, offset, left,
- "Name: %s",
- tvb_format_text(tvb, offset, left));
- break;
- case MS_CHAPv2_RESPONSE:
- if (left <= 0)
- break;
- value_size = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(eap_tree, tvb, offset, 1,
- "Value-Size: %d", value_size);
- offset++;
- left--;
- if (value_size == 49) {
- proto_tree_add_text(eap_tree, tvb, offset, 16,
- "Peer-Challenge: %s",
- tvb_bytes_to_str(tvb, offset, 16));
- offset += 16;
- proto_tree_add_text(eap_tree, tvb, offset, 8,
- "Reserved, must be zero: %s",
- tvb_bytes_to_str(tvb, offset, 8));
- offset += 8;
- proto_tree_add_text(eap_tree, tvb, offset, 24,
- "NT-Response: %s",
- tvb_bytes_to_str(tvb, offset, 24));
- offset += 24;
- proto_tree_add_text(eap_tree, tvb, offset, 1,
- "Flags: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- left -= value_size;
- } else {
- proto_tree_add_text(eap_tree, tvb, offset, value_size,
- "Response (unknown length): %s",
- tvb_bytes_to_str(tvb, offset,
- value_size));
- offset += value_size;
- left -= value_size;
- }
- if (left <= 0)
- break;
- proto_tree_add_text(eap_tree, tvb, offset, left,
- "Name: %s",
- tvb_format_text(tvb, offset, left));
- break;
- case MS_CHAPv2_SUCCESS:
- if (left <= 0)
- break;
- proto_tree_add_text(eap_tree, tvb, offset, left,
- "Message: %s",
- tvb_format_text(tvb, offset, left));
- break;
- case MS_CHAPv2_FAILURE:
- if (left <= 0)
- break;
- proto_tree_add_text(eap_tree, tvb, offset, left,
- "Failure Request: %s",
- tvb_format_text(tvb, offset, left));
- break;
- default:
- proto_tree_add_text(eap_tree, tvb, offset, left,
- "Data (%d byte%s) Value: %s",
- left, plurality(left, "", "s"),
- tvb_bytes_to_str(tvb, offset, left));
- break;
- }
+ proto_item *item;
+ gint left = size;
+ gint ms_len;
+ guint8 value_size;
+ guint8 opcode;
+
+ /* OpCode (1 byte), MS-CHAPv2-ID (1 byte), MS-Length (2 bytes), Data */
+ opcode = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(eap_tree, hf_eap_ms_chap_v2_opcode, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ left--;
+ if (left <= 0)
+ return;
+
+ proto_tree_add_item(eap_tree, hf_eap_ms_chap_v2_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ left--;
+ if (left <= 0)
+ return;
+
+ item = proto_tree_add_item(eap_tree, hf_eap_ms_chap_v2_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ ms_len = tvb_get_ntohs(tvb, offset);
+ if (ms_len != size)
+ expert_add_info_format(pinfo, item, PI_PROTOCOL, PI_WARN, "Invalid Length");
+ offset += 2;
+ left -= 2;
+
+ switch (opcode) {
+ case MS_CHAP_V2_CHALLENGE:
+ if (left <= 0)
+ break;
+ value_size = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(eap_tree, hf_eap_ms_chap_v2_value_size,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ left--;
+ proto_tree_add_item(eap_tree, hf_eap_ms_chap_v2_challenge,
+ tvb, offset, value_size, ENC_NA);
+ offset += value_size;
+ left -= value_size;
+ if (left <= 0)
+ break;
+ proto_tree_add_item(eap_tree, hf_eap_ms_chap_v2_name,
+ tvb, offset, left, ENC_ASCII|ENC_NA);
+ break;
+ case MS_CHAP_V2_RESPONSE:
+ if (left <= 0)
+ break;
+ value_size = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(eap_tree, hf_eap_ms_chap_v2_value_size,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ left--;
+ if (value_size == 49) {
+ proto_tree_add_item(eap_tree, hf_eap_ms_chap_v2_peer_challenge,
+ tvb, offset, 16, ENC_NA);
+ offset += 16;
+ proto_tree_add_item(eap_tree, hf_eap_ms_chap_v2_reserved,
+ tvb, offset, 8, ENC_NA);
+ offset += 8;
+ proto_tree_add_item(eap_tree, hf_eap_ms_chap_v2_nt_response,
+ tvb, offset, 24, ENC_NA);
+ offset += 24;
+ proto_tree_add_item(eap_tree, hf_eap_ms_chap_v2_flags,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ left -= value_size;
+ } else {
+ proto_tree_add_text(eap_tree, tvb, offset, value_size,
+ "EAP-MS-CHAP-v2 Response (Unknown Length): %s",
+ tvb_bytes_to_str(tvb, offset, value_size));
+ offset += value_size;
+ left -= value_size;
+ }
+ if (left <= 0)
+ break;
+ proto_tree_add_item(eap_tree, hf_eap_ms_chap_v2_name, tvb, offset, left, ENC_ASCII|ENC_NA);
+ break;
+ case MS_CHAP_V2_SUCCESS:
+ if (left <= 0)
+ break;
+ proto_tree_add_item(eap_tree, hf_eap_ms_chap_v2_message,
+ tvb, offset, left, ENC_ASCII|ENC_NA);
+ break;
+ case MS_CHAP_V2_FAILURE:
+ if (left <= 0)
+ break;
+ proto_tree_add_item(eap_tree, hf_eap_ms_chap_v2_failure_request,
+ tvb, offset, left, ENC_ASCII|ENC_NA);
+ break;
+ default:
+ proto_tree_add_text(eap_tree, tvb, offset, left,
+ "EAP-MS-CHAP-v2 Data (%d byte%s): \"%s\"",
+ left, plurality(left, "", "s"),
+ tvb_bytes_to_str(tvb, offset, left));
+ break;
+ }
}
static void
dissect_eap_sim(proto_tree *eap_tree, tvbuff_t *tvb, int offset, gint size)
{
- gint left = size;
- enum {
- SIM_START = 10,
- SIM_CHALLENGE = 11,
- SIM_NOTIFICATION = 12,
- SIM_RE_AUTHENTICATION = 13,
- SIM_CLIENT_ERROR = 14
- } subtype;
- static const value_string subtypes[] = {
- { SIM_START, "Start" },
- { SIM_CHALLENGE, "Challenge" },
- { SIM_NOTIFICATION, "Notification" },
- { SIM_RE_AUTHENTICATION, "Re-authentication" },
- { SIM_CLIENT_ERROR, "Client-Error" },
- { 0, NULL }
- };
-
- subtype = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(eap_tree, tvb, offset, 1,
- "subtype: %d (%s)",
- subtype, val_to_str(subtype, subtypes, "Unknown"));
-
- offset++;
- left--;
-
- if (left < 2)
- return;
- proto_tree_add_text(eap_tree, tvb, offset, 2, "Reserved: %d",
- tvb_get_ntohs(tvb, offset));
- offset += 2;
- left -= 2;
-
- /* Rest of EAP-SIM data is in Type-Len-Value format. */
- while (left >= 2) {
- guint8 type, length;
- proto_item *pi;
- proto_tree *attr_tree;
- int aoffset;
- gint aleft;
- aoffset = offset;
- type = tvb_get_guint8(tvb, aoffset);
- length = tvb_get_guint8(tvb, aoffset + 1);
- aleft = 4 * length;
-
- pi = proto_tree_add_text(eap_tree, tvb, aoffset, aleft,
- "Attribute: %s",
- val_to_str(type, eap_sim_aka_attributes,
- "Unknown %u"));
- attr_tree = proto_item_add_subtree(pi, ett_eap_sim_attr);
- proto_tree_add_text(attr_tree, tvb, aoffset, 1,
- "Type: %u", type);
- aoffset++;
- aleft--;
-
- if (aleft <= 0)
- break;
- proto_tree_add_text(attr_tree, tvb, aoffset, 1,
- "Length: %d (%d bytes)",
- length, 4 * length);
- aoffset++;
- aleft--;
- proto_tree_add_text(attr_tree, tvb, aoffset, aleft,
- "Value: %s",
- tvb_bytes_to_str(tvb, aoffset, aleft));
-
- offset += 4 * length;
- left -= 4 * length;
- }
+ gint left = size;
+ proto_tree_add_item(eap_tree, hf_eap_sim_subtype, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ left--;
+
+ if (left < 2)
+ return;
+ proto_tree_add_item(eap_tree, hf_eap_sim_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ left -= 2;
+
+ /* Rest of EAP-SIM data is in Type-Len-Value format. */
+ while (left >= 2) {
+ guint8 length;
+ proto_item *pi;
+ proto_tree *attr_tree;
+ int aoffset;
+ gint aleft;
+ aoffset = offset;
+ length = tvb_get_guint8(tvb, aoffset + 1);
+ aleft = 4 * length;
+
+ pi = proto_tree_add_item(eap_tree, hf_eap_sim_subtype_attribute, tvb, aoffset, aleft, ENC_BIG_ENDIAN);
+ attr_tree = proto_item_add_subtree(pi, ett_eap_sim_attr);
+ proto_tree_add_item(attr_tree, hf_eap_sim_subtype_type, tvb, aoffset, 1, ENC_BIG_ENDIAN);
+ aoffset++;
+ aleft--;
+
+ if (aleft <= 0)
+ break;
+ proto_tree_add_item(attr_tree, hf_eap_sim_subtype_length, tvb, aoffset, 1, ENC_BIG_ENDIAN);
+ aoffset++;
+ aleft--;
+ proto_tree_add_item(attr_tree, hf_eap_sim_subtype_value, tvb, aoffset, aleft, ENC_NA);
+
+ offset += 4 * length;
+ left -= 4 * length;
+ }
}
static void
dissect_eap_aka(proto_tree *eap_tree, tvbuff_t *tvb, int offset, gint size)
{
- gint left = size;
- enum {
- AKA_CHALLENGE = 1,
- AKA_AUTHENTICATION_REJECT = 2,
- AKA_SYNCHRONIZATION_FAILURE = 4,
- AKA_IDENTITY = 5,
- AKA_NOTIFICATION = 12,
- AKA_REAUTHENTICATION = 13,
- AKA_CLIENT_ERROR = 14
- } subtype;
- static const value_string subtypes[] = {
- { AKA_CHALLENGE, "AKA-Challenge" },
- { AKA_AUTHENTICATION_REJECT, "AKA-Authentication-Reject" },
- { AKA_SYNCHRONIZATION_FAILURE, "AKA-Synchronization-Failure" },
- { AKA_IDENTITY, "AKA-Identity" },
- { AKA_NOTIFICATION, "Notification" },
- { AKA_REAUTHENTICATION, "Re-authentication" },
- { AKA_CLIENT_ERROR, "Client-Error" },
- { 0, NULL }
- };
-
- subtype = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(eap_tree, tvb, offset, 1,
- "subtype: %d (%s)",
- subtype, val_to_str(subtype, subtypes, "Unknown"));
-
- offset++;
- left--;
-
- if (left < 2)
- return;
- proto_tree_add_text(eap_tree, tvb, offset, 2, "Reserved: %d",
- tvb_get_ntohs(tvb, offset));
- offset += 2;
- left -= 2;
-
- /* Rest of EAP-AKA data is in Type-Len-Value format. */
- while (left >= 2) {
- guint8 type, length;
- proto_item *pi;
- proto_tree *attr_tree;
- int aoffset;
- gint aleft;
- aoffset = offset;
- type = tvb_get_guint8(tvb, aoffset);
- length = tvb_get_guint8(tvb, aoffset + 1);
- aleft = 4 * length;
-
- pi = proto_tree_add_text(eap_tree, tvb, aoffset, aleft,
- "Attribute: %s",
- val_to_str(type, eap_sim_aka_attributes,
- "Unknown %u"));
- attr_tree = proto_item_add_subtree(pi, ett_eap_aka_attr);
- proto_tree_add_text(attr_tree, tvb, aoffset, 1,
- "Type: %u", type);
- aoffset++;
- aleft--;
-
- if (aleft <= 0)
- break;
- proto_tree_add_text(attr_tree, tvb, aoffset, 1,
- "Length: %d (%d bytes)",
- length, 4 * length);
- aoffset++;
- aleft--;
- proto_tree_add_text(attr_tree, tvb, aoffset, aleft,
- "Value: %s",
- tvb_bytes_to_str(tvb, aoffset, aleft));
-
- offset += 4 * length;
- left -= 4 * length;
- }
+ gint left = size;
+ proto_tree_add_item(eap_tree, hf_eap_aka_subtype, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ left--;
+
+ if (left < 2)
+ return;
+ proto_tree_add_item(eap_tree, hf_eap_aka_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ left -= 2;
+
+ /* Rest of EAP-AKA data is in Type-Len-Value format. */
+ while (left >= 2) {
+ guint8 length;
+ proto_item *pi;
+ proto_tree *attr_tree;
+ int aoffset;
+ gint aleft;
+ aoffset = offset;
+ length = tvb_get_guint8(tvb, aoffset + 1);
+ aleft = 4 * length;
+
+ pi = proto_tree_add_item(eap_tree, hf_eap_aka_subtype_attribute, tvb, aoffset, aleft, ENC_BIG_ENDIAN);
+ attr_tree = proto_item_add_subtree(pi, ett_eap_aka_attr);
+ proto_tree_add_item(attr_tree, hf_eap_aka_subtype_type, tvb, aoffset, 1, ENC_BIG_ENDIAN);
+ aoffset++;
+ aleft--;
+
+ if (aleft <= 0)
+ break;
+ proto_tree_add_item(attr_tree, hf_eap_aka_subtype_length, tvb, aoffset, 1, ENC_BIG_ENDIAN);
+ aoffset++;
+ aleft--;
+ proto_tree_add_item(attr_tree, hf_eap_aka_subtype_value, tvb, aoffset, aleft, ENC_NA);
+
+ offset += 4 * length;
+ left -= 4 * length;
+ }
}
static int
@@ -620,8 +611,10 @@ dissect_eap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
conv_state_t *conversation_state;
frame_state_t *packet_state;
int leap_state;
- proto_tree *ti;
+ proto_tree *ti = NULL;
proto_tree *eap_tree = NULL;
+ proto_tree *eap_tls_flags_tree = NULL;
+ proto_item *eap_type_item = NULL;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "EAP");
col_clear(pinfo->cinfo, COL_INFO);
@@ -630,7 +623,7 @@ dissect_eap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (check_col(pinfo->cinfo, COL_INFO))
col_add_str(pinfo->cinfo, COL_INFO,
- val_to_str(eap_code, eap_code_vals, "Unknown code (0x%02X)"));
+ val_to_str(eap_code, eap_code_vals, "Unknown code (0x%02X)"));
/*
* Find a conversation to which we belong; create one if we don't find
@@ -657,22 +650,22 @@ dissect_eap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
*/
if (pinfo->destport == pinfo->match_uint) {
conversation = find_conversation(pinfo->fd->num, &pinfo->dst, &pinfo->src,
- pinfo->ptype, pinfo->destport,
- 0, NO_PORT_B);
+ pinfo->ptype, pinfo->destport,
+ 0, NO_PORT_B);
} else {
conversation = find_conversation(pinfo->fd->num, &pinfo->src, &pinfo->dst,
- pinfo->ptype, pinfo->srcport,
- 0, NO_PORT_B);
+ pinfo->ptype, pinfo->srcport,
+ 0, NO_PORT_B);
}
if (conversation == NULL) {
if (pinfo->destport == pinfo->match_uint) {
conversation = conversation_new(pinfo->fd->num, &pinfo->dst, &pinfo->src,
- pinfo->ptype, pinfo->destport,
- 0, NO_PORT2);
+ pinfo->ptype, pinfo->destport,
+ 0, NO_PORT2);
} else {
conversation = conversation_new(pinfo->fd->num, &pinfo->src, &pinfo->dst,
- pinfo->ptype, pinfo->srcport,
- 0, NO_PORT2);
+ pinfo->ptype, pinfo->srcport,
+ 0, NO_PORT2);
}
}
@@ -680,12 +673,12 @@ dissect_eap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
* Get the state information for the conversation; attach some if
* we don't find it.
*/
- conversation_state = conversation_get_proto_data(conversation, proto_eap);
+ conversation_state = (conv_state_t *)conversation_get_proto_data(conversation, proto_eap);
if (conversation_state == NULL) {
/*
* Attach state information to the conversation.
*/
- conversation_state = se_alloc(sizeof (conv_state_t));
+ conversation_state = se_new(conv_state_t);
conversation_state->eap_tls_seq = -1;
conversation_state->eap_reass_cookie = 0;
conversation_state->leap_state = -1;
@@ -699,496 +692,493 @@ dissect_eap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (eap_code == EAP_FAILURE)
conversation_state->leap_state = -1;
- eap_len = tvb_get_ntohs(tvb, 2);
- len = eap_len;
+ eap_len = tvb_get_ntohs(tvb, 2);
+ len = eap_len;
- if (tree) {
- ti = proto_tree_add_item(tree, proto_eap, tvb, 0, len, ENC_NA);
- eap_tree = proto_item_add_subtree(ti, ett_eap);
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_eap, tvb, 0, len, ENC_NA);
+ eap_tree = proto_item_add_subtree(ti, ett_eap);
- proto_tree_add_uint(eap_tree, hf_eap_code, tvb, 0, 1, eap_code);
- }
+ proto_tree_add_item(eap_tree, hf_eap_code, tvb, 0, 1, ENC_BIG_ENDIAN);
+ }
- if (tree)
- proto_tree_add_item(eap_tree, hf_eap_identifier, tvb, 1, 1, ENC_BIG_ENDIAN);
+ if (tree)
+ proto_tree_add_item(eap_tree, hf_eap_identifier, tvb, 1, 1, ENC_BIG_ENDIAN);
- if (tree)
- proto_tree_add_uint(eap_tree, hf_eap_len, tvb, 2, 2, eap_len);
+ if (tree)
+ proto_tree_add_item(eap_tree, hf_eap_len, tvb, 2, 2, ENC_BIG_ENDIAN);
+
+ switch (eap_code) {
+
+ case EAP_SUCCESS:
+ case EAP_FAILURE:
+ break;
+
+ case EAP_REQUEST:
+ case EAP_RESPONSE:
+ eap_type = tvb_get_guint8(tvb, 4);
+
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", %s",
+ val_to_str(eap_type, eap_type_vals,
+ "Unknown type (0x%02x)"));
+ if (tree)
+ eap_type_item = proto_tree_add_item(eap_tree, hf_eap_type, tvb, 4, 1, ENC_BIG_ENDIAN);
+
+ if (len > 5 || (len == 5 && eap_type == EAP_TYPE_ID)) {
+ int offset = 5;
+ gint size = len - offset;
+
+ switch (eap_type) {
+ /*********************************************************************
+ **********************************************************************/
+ case EAP_TYPE_ID:
+ if (tree) {
+ proto_tree_add_item(eap_tree, hf_eap_identity, tvb, offset, size, ENC_ASCII|ENC_NA);
+ }
+ if(!pinfo->fd->flags.visited) {
+ conversation_state->leap_state = 0;
+ conversation_state->eap_tls_seq = -1;
+ }
+ break;
- switch (eap_code) {
+ /*********************************************************************
+ **********************************************************************/
+ case EAP_TYPE_NOTIFY:
+ if (tree) {
+ proto_tree_add_item(eap_tree, hf_eap_notification, tvb,
+ offset, size, ENC_ASCII|ENC_NA);
+ }
+ break;
- case EAP_SUCCESS:
- case EAP_FAILURE:
+ /*********************************************************************
+ **********************************************************************/
+ case EAP_TYPE_NAK:
+ if (tree) {
+ proto_tree_add_item(eap_tree, hf_eap_type_nak, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ }
+ break;
+ /*********************************************************************
+ **********************************************************************/
+ case EAP_TYPE_MD5:
+ {
+ guint8 value_size = tvb_get_guint8(tvb, offset);
+ gint extra_len = size - 1 - value_size;
+ proto_item *item;
+
+ /* Warn that this is an insecure EAP type. */
+ expert_add_info_format(pinfo, eap_type_item, PI_SECURITY, PI_WARN, "Vulnerable to MITM attacks. If possible, change EAP type.");
+
+ item = proto_tree_add_item(eap_tree, hf_eap_md5_value_size, tvb, offset, 1, ENC_BIG_ENDIAN);
+ if (value_size > size - 1)
+ {
+ expert_add_info_format(pinfo, item, PI_PROTOCOL, PI_WARN, "Overflow");
+ value_size = size - 1;
+ }
+
+ offset++;
+ proto_tree_add_item(eap_tree, hf_eap_md5_value, tvb, offset, value_size, ENC_NA);
+ offset += value_size;
+ if (extra_len > 0) {
+ proto_tree_add_item(eap_tree, hf_eap_md5_extra_data, tvb, offset, extra_len, ENC_NA);
+ }
+ }
break;
- case EAP_REQUEST:
- case EAP_RESPONSE:
- eap_type = tvb_get_guint8(tvb, 4);
+ /*********************************************************************
+ EAP-TLS
+ **********************************************************************/
+ case EAP_TYPE_FAST:
+ case EAP_TYPE_PEAP:
+ case EAP_TYPE_TTLS:
+ case EAP_TYPE_TLS:
+ {
+ guint8 flags = tvb_get_guint8(tvb, offset);
+ gboolean more_fragments;
+ gboolean has_length;
+ gboolean is_start;
+ int eap_tls_seq = -1;
+ guint32 eap_reass_cookie = 0;
+ gboolean needs_reassembly = FALSE;
+
+ more_fragments = test_flag(flags,EAP_TLS_FLAG_M);
+ has_length = test_flag(flags,EAP_TLS_FLAG_L);
+ is_start = test_flag(flags,EAP_TLS_FLAG_S);
+
+ if (is_start)
+ conversation_state->eap_tls_seq = -1;
+
+ /* Flags field, 1 byte */
+ if (tree) {
+ ti = proto_tree_add_item(eap_tree, hf_eap_tls_flags, tvb, offset, 1, ENC_BIG_ENDIAN);
+ eap_tls_flags_tree = proto_item_add_subtree(ti, ett_eap_tls_flags);
+ proto_tree_add_item(eap_tls_flags_tree, hf_eap_tls_flag_l, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(eap_tls_flags_tree, hf_eap_tls_flag_m, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(eap_tls_flags_tree, hf_eap_tls_flag_s, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ if (eap_type == EAP_TYPE_PEAP || eap_type == EAP_TYPE_TTLS ||
+ eap_type == EAP_TYPE_FAST) {
+ proto_tree_add_item(eap_tls_flags_tree, hf_eap_tls_flags_version, tvb, offset, 1, ENC_BIG_ENDIAN);
+ }
+ }
+ size--;
+ offset++;
+
+ /* Length field, 4 bytes, OPTIONAL. */
+ if ( has_length ) {
+ if (tree)
+ proto_tree_add_item(eap_tree, hf_eap_tls_len, tvb, offset, 4, ENC_BIG_ENDIAN);
+ size -= 4;
+ offset += 4;
+ }
+
+ if (size>0) {
+
+ tvbuff_t *next_tvb;
+ gint tvb_len;
+ gboolean save_fragmented;
+
+ tvb_len = tvb_length_remaining(tvb, offset);
+ if (size < tvb_len)
+ tvb_len = size;
+
+ /*
+ EAP/TLS is weird protocol (it comes from
+ Microsoft after all).
+
+ If we have series of fragmented packets,
+ then there's no way of knowing that from
+ the packet itself, if it is the last packet
+ in series, that is that the packet part of
+ bigger fragmented set of data.
+
+ The only way to know is, by knowing
+ that we are already in defragmentation
+ "mode" and we are expecing packet
+ carrying fragment of data. (either
+ because we have not received expected
+ amount of data, or because the packet before
+ had "F"ragment flag set.)
+
+ The situation is alleviated by fact that it
+ is simple ack/nack protcol so there's no
+ place for out-of-order packets like it is
+ possible with IP.
+
+ Anyway, point of this lengthy essay is that
+ we have to keep state information in the
+ conversation, so that we can put ourselves in
+ defragmenting mode and wait for the last packet,
+ and have to attach state to frames as well, so
+ that we can handle defragmentation after the
+ first pass through the capture.
+ */
+ /* See if we have a remembered defragmentation EAP ID. */
+ packet_state = (frame_state_t *)p_get_proto_data(pinfo->fd, proto_eap);
+ if (packet_state == NULL) {
+ /*
+ * We haven't - does this message require reassembly?
+ */
+ if (!pinfo->fd->flags.visited) {
+ /*
+ * This is the first time we've looked at this frame,
+ * so it wouldn't have any remembered information.
+ *
+ * Therefore, we check whether this conversation has
+ * a reassembly operation in progress, or whether
+ * this frame has the Fragment flag set.
+ */
+ if (conversation_state->eap_tls_seq != -1) {
+ /*
+ * There's a reassembly in progress; the sequence number
+ * of the previous fragment is
+ * "conversation_state->eap_tls_seq", and the reassembly
+ * ID is "conversation_state->eap_reass_cookie".
+ *
+ * We must include this frame in the reassembly.
+ * We advance the sequence number, giving us the
+ * sequence number for this fragment.
+ */
+ needs_reassembly = TRUE;
+ conversation_state->eap_tls_seq++;
+
+ eap_reass_cookie = conversation_state->eap_reass_cookie;
+ eap_tls_seq = conversation_state->eap_tls_seq;
+ } else if (more_fragments && has_length) {
+ /*
+ * This message has the Fragment flag set, so it requires
+ * reassembly. It's the message containing the first
+ * fragment (if it's a later fragment, the sequence
+ * number in the conversation state would not be -1).
+ *
+ * If it doesn't include a length, however, we can't
+ * do reassembly (either the message is in error, as
+ * the first fragment *must* contain a length, or we
+ * didn't capture the first fragment, and this just
+ * happens to be the first fragment we saw), so we
+ * also check that we have a length;
+ */
+ needs_reassembly = TRUE;
+ conversation_state->eap_reass_cookie = pinfo->fd->num;
+
+ /*
+ * Start the reassembly sequence number at 0.
+ */
+ conversation_state->eap_tls_seq = 0;
+
+ eap_tls_seq = conversation_state->eap_tls_seq;
+ eap_reass_cookie = conversation_state->eap_reass_cookie;
+ }
+
+ if (needs_reassembly) {
+ /*
+ * This frame requires reassembly; remember the reassembly
+ * ID for subsequent accesses to it.
+ */
+ packet_state = se_new(frame_state_t);
+ packet_state->info = eap_reass_cookie;
+ p_add_proto_data(pinfo->fd, proto_eap, packet_state);
+ }
+ }
+ } else {
+ /*
+ * This frame has a reassembly cookie associated with it, so
+ * it requires reassembly. We've already done the
+ * reassembly in the first pass, so "fragment_add_seq()"
+ * won't look at the sequence number; set it to 0.
+ *
+ * XXX - a frame isn't supposed to have more than one
+ * EAP message in it, but if it includes both an EAP-TLS
+ * message and a LEAP message, we might be mistakenly
+ * concluding it requires reassembly because the "info"
+ * field isn't -1. We could, I guess, pack both EAP-TLS
+ * ID and LEAP state into the structure, but that doesn't
+ * work if you have multiple EAP-TLS or LEAP messages in
+ * the frame.
+ *
+ * But it's not clear how much work we should do to handle
+ * a bogus message such as that; as long as we don't crash
+ * or do something else equally horrible, we may not
+ * have to worry about this at all.
+ */
+ needs_reassembly = TRUE;
+ eap_reass_cookie = packet_state->info;
+ eap_tls_seq = 0;
+ }
+
+ /*
+ We test here to see whether EAP-TLS packet
+ carry fragmented of TLS data.
+
+ If this is the case, we do reasembly below,
+ otherwise we just call dissector.
+ */
+ if (needs_reassembly) {
+ fragment_data *fd_head = NULL;
+
+ /*
+ * Yes, this frame contains a fragment that requires
+ * reassembly.
+ */
+ save_fragmented = pinfo->fragmented;
+ pinfo->fragmented = TRUE;
+ fd_head = fragment_add_seq(tvb, offset, pinfo,
+ eap_reass_cookie,
+ eap_tls_fragment_table,
+ eap_tls_seq,
+ size,
+ more_fragments);
+
+ if (fd_head != NULL) /* Reassembled */
+ {
+ proto_item *frag_tree_item;
+
+ next_tvb = tvb_new_child_real_data(tvb, fd_head->data,
+ fd_head->len,
+ fd_head->len);
+ add_new_data_source(pinfo, next_tvb, "Reassembled EAP-TLS");
+
+ show_fragment_seq_tree(fd_head, &eap_tls_frag_items,
+ eap_tree, pinfo, next_tvb, &frag_tree_item);
+
+ call_dissector(ssl_handle, next_tvb, pinfo, eap_tree);
+
+ /*
+ * We're finished reassembing this frame.
+ * Reinitialize the reassembly state.
+ */
+ if (!pinfo->fd->flags.visited)
+ conversation_state->eap_tls_seq = -1;
+ }
+
+ pinfo->fragmented = save_fragmented;
+
+ } else { /* this data is NOT fragmented */
+ next_tvb = tvb_new_subset(tvb, offset, tvb_len, size);
+ call_dissector(ssl_handle, next_tvb, pinfo, eap_tree);
+ }
+ }
+ }
+ break; /* EAP_TYPE_TLS */
+
+ /*********************************************************************
+ Cisco's Lightweight EAP (LEAP)
+ http://www.missl.cs.umd.edu/wireless/ethereal/leap.txt
+ **********************************************************************/
+ case EAP_TYPE_LEAP:
+ {
+ guint8 count, namesize;
+
+ /* Warn that this is an insecure EAP type. */
+ expert_add_info_format(pinfo, eap_type_item, PI_SECURITY, PI_WARN, "Vulnerable to dictionary attacks. If possible, change EAP type. See http://www.cisco.com/warp/public/cc/pd/witc/ao350ap/prodlit/2331_pp.pdf");
+
+ /* Version (byte) */
+ if (tree) {
+ proto_tree_add_item(eap_tree, hf_eap_leap_version, tvb, offset, 1, ENC_BIG_ENDIAN);
+ }
+ offset++;
+
+ /* Unused (byte) */
+ if (tree) {
+ proto_tree_add_item(eap_tree, hf_eap_leap_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
+ }
+ offset++;
+
+ /* Count (byte) */
+ count = tvb_get_guint8(tvb, offset);
+ if (tree) {
+ proto_tree_add_item(eap_tree, hf_eap_leap_count, tvb, offset, 1, ENC_BIG_ENDIAN);
+ }
+ offset++;
+
+ /* Data (byte*Count) */
+ /* This part is state-dependent. */
+
+ /* See if we've already remembered the state. */
+ packet_state = (frame_state_t *)p_get_proto_data(pinfo->fd, proto_eap);
+ if (packet_state == NULL) {
+ /*
+ * We haven't - compute the state based on the current
+ * state in the conversation.
+ */
+ leap_state = conversation_state->leap_state;
+
+ /* Advance the state machine. */
+ if (leap_state==0) leap_state = 1; else
+ if (leap_state==1) leap_state = 2; else
+ if (leap_state==2) leap_state = 3; else
+ if (leap_state==3) leap_state = 4; else
+ if (leap_state==4) leap_state = -1;
+
+ /*
+ * Remember the state for subsequent accesses to this
+ * frame.
+ */
+ packet_state = se_new(frame_state_t);
+ packet_state->info = leap_state;
+ p_add_proto_data(pinfo->fd, proto_eap, packet_state);
+
+ /*
+ * Update the conversation's state.
+ */
+ conversation_state->leap_state = leap_state;
+ }
+
+ /* Get the remembered state. */
+ leap_state = packet_state->info;
+
+ if (tree) {
+ switch (leap_state) {
+ case 1:
+ proto_tree_add_item(eap_tree, hf_eap_leap_peer_challenge, tvb, offset, count, ENC_NA);
+ break;
+
+ case 2:
+ proto_tree_add_item(eap_tree, hf_eap_leap_peer_response, tvb, offset, count, ENC_NA);
+ break;
+
+ case 3:
+ proto_tree_add_item(eap_tree, hf_eap_leap_ap_challenge, tvb, offset, count, ENC_NA);
+ break;
+
+ case 4:
+ proto_tree_add_item(eap_tree, hf_eap_leap_ap_response, tvb, offset, count, ENC_NA);
+ break;
+
+ default:
+ proto_tree_add_text(eap_tree, tvb, offset, count,
+ "EAP-LEAP Data (%d byte%s): \"%s\"",
+ count, plurality(count, "", "s"),
+ tvb_bytes_to_str(tvb, offset, count));
+ break;
+ }
+ }
+
+ offset += count;
+
+ /* Name (Length-(8+Count)) */
+ namesize = eap_len - (8+count);
+ if (tree) {
+ proto_tree_add_item(eap_tree, hf_eap_leap_name, tvb, offset, namesize, ENC_ASCII|ENC_NA);
+ }
+ }
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, ", %s",
- val_to_str(eap_type, eap_type_vals,
- "Unknown type (0x%02x)"));
+ break; /* EAP_TYPE_LEAP */
+
+ /*********************************************************************
+ EAP-MSCHAPv2 - draft-kamath-pppext-eap-mschapv2-00.txt
+ **********************************************************************/
+ case EAP_TYPE_MSCHAPV2:
+ dissect_eap_mschapv2(eap_tree, tvb, pinfo, offset, size);
+ break; /* EAP_TYPE_MSCHAPV2 */
+
+ /*********************************************************************
+ EAP-SIM - draft-haverinen-pppext-eap-sim-13.txt
+ **********************************************************************/
+ case EAP_TYPE_SIM:
if (tree)
- proto_tree_add_uint(eap_tree, hf_eap_type, tvb, 4, 1, eap_type);
-
- if (len > 5 || (len == 5 && eap_type == EAP_TYPE_ID)) {
- int offset = 5;
- gint size = len - offset;
-
- switch (eap_type) {
- /*********************************************************************
- **********************************************************************/
- case EAP_TYPE_ID:
- if (tree) {
- proto_tree_add_text(eap_tree, tvb, offset, size,
- "Identity (%d byte%s): %s",
- size, plurality(size, "", "s"),
- tvb_format_text(tvb, offset, size));
- }
- if(!pinfo->fd->flags.visited) {
- conversation_state->leap_state = 0;
- conversation_state->eap_tls_seq = -1;
- }
- break;
-
- /*********************************************************************
- **********************************************************************/
- case EAP_TYPE_NOTIFY:
- if (tree) {
- proto_tree_add_text(eap_tree, tvb, offset, size,
- "Notification (%d byte%s): %s",
- size, plurality(size, "", "s"),
- tvb_format_text(tvb, offset, size));
- }
- break;
- /*********************************************************************
- **********************************************************************/
- case EAP_TYPE_NAK:
- if (tree) {
- proto_tree_add_item(eap_tree, hf_eap_type_nak, tvb,
- offset, 1, ENC_BIG_ENDIAN);
- }
- break;
- /*********************************************************************
- **********************************************************************/
- case EAP_TYPE_MD5:
- if (tree) {
- guint8 value_size = tvb_get_guint8(tvb, offset);
- gint extra_len = size - 1 - value_size;
- proto_tree_add_text(eap_tree, tvb, offset, 1, "Value-Size: %d%s",
- value_size,
- value_size > size - 1 ? " (overflow)": "");
- if (value_size > size - 1)
- value_size = size - 1;
- offset++;
- proto_tree_add_text(eap_tree, tvb, offset, value_size,
- "Value: %s",
- tvb_bytes_to_str(tvb, offset, value_size));
- offset += value_size;
- if (extra_len > 0) {
- proto_tree_add_text(eap_tree, tvb, offset, extra_len,
- "Extra data (%d byte%s): %s", extra_len,
- plurality(extra_len, "", "s"),
- tvb_bytes_to_str(tvb, offset, extra_len));
- }
- }
- break;
- /*********************************************************************
- EAP-TLS
- **********************************************************************/
- case EAP_TYPE_FAST:
- case EAP_TYPE_PEAP:
- case EAP_TYPE_TTLS:
- case EAP_TYPE_TLS:
- {
- guint8 flags = tvb_get_guint8(tvb, offset);
- gboolean more_fragments;
- gboolean has_length;
- guint32 length;
- int eap_tls_seq = -1;
- guint32 eap_reass_cookie = 0;
- gboolean needs_reassembly = FALSE;
-
- more_fragments = test_flag(flags,EAP_TLS_FLAG_M);
- has_length = test_flag(flags,EAP_TLS_FLAG_L);
- if (test_flag(flags,EAP_TLS_FLAG_S))
- conversation_state->eap_tls_seq = -1;
-
- /* Flags field, 1 byte */
- if (tree) {
- proto_tree_add_text(eap_tree, tvb, offset, 1, "Flags(0x%X): %s%s%s",
- flags,
- has_length ? "Length ":"",
- more_fragments ? "More " :"",
- test_flag(flags,EAP_TLS_FLAG_S) ? "Start " :"");
- if (eap_type == EAP_TYPE_PEAP || eap_type == EAP_TYPE_TTLS ||
- eap_type == EAP_TYPE_FAST) {
- proto_tree_add_text(eap_tree, tvb, offset, 1,
- "%s version %d",
- eap_type == EAP_TYPE_PEAP ? "PEAP" :
- (eap_type == EAP_TYPE_TTLS ? "TTLS" : "FAST"),
- flags & EAP_PEAP_FLAG_VERSION);
- }
- }
- size--;
- offset++;
-
- /* Length field, 4 bytes, OPTIONAL. */
- if ( has_length ) {
- length = tvb_get_ntohl(tvb, offset);
- if (tree)
- proto_tree_add_text(eap_tree, tvb, offset, 4, "Length: %i",length);
- size -= 4;
- offset += 4;
- }
-
- if (size>0) {
-
- tvbuff_t *next_tvb;
- gint tvb_len;
- gboolean save_fragmented;
-
- tvb_len = tvb_length_remaining(tvb, offset);
- if (size < tvb_len)
- tvb_len = size;
-
- /*
- EAP/TLS is weird protocol (it comes from
- Microsoft after all).
-
- If we have series of fragmented packets,
- then there's no way of knowing that from
- the packet itself, if it is the last packet
- in series, that is that the packet part of
- bigger fragmented set of data.
-
- The only way to know is, by knowing
- that we are already in defragmentation
- "mode" and we are expecing packet
- carrying fragment of data. (either
- because we have not received expected
- amount of data, or because the packet before
- had "F"ragment flag set.)
-
- The situation is alleviated by fact that it
- is simple ack/nack protcol so there's no
- place for out-of-order packets like it is
- possible with IP.
-
- Anyway, point of this lengthy essay is that
- we have to keep state information in the
- conversation, so that we can put ourselves in
- defragmenting mode and wait for the last packet,
- and have to attach state to frames as well, so
- that we can handle defragmentation after the
- first pass through the capture.
- */
- /* See if we have a remembered defragmentation EAP ID. */
- packet_state = p_get_proto_data(pinfo->fd, proto_eap);
- if (packet_state == NULL) {
- /*
- * We haven't - does this message require reassembly?
- */
- if (!pinfo->fd->flags.visited) {
- /*
- * This is the first time we've looked at this frame,
- * so it wouldn't have any remembered information.
- *
- * Therefore, we check whether this conversation has
- * a reassembly operation in progress, or whether
- * this frame has the Fragment flag set.
- */
- if (conversation_state->eap_tls_seq != -1) {
- /*
- * There's a reassembly in progress; the sequence number
- * of the previous fragment is
- * "conversation_state->eap_tls_seq", and the reassembly
- * ID is "conversation_state->eap_reass_cookie".
- *
- * We must include this frame in the reassembly.
- * We advance the sequence number, giving us the
- * sequence number for this fragment.
- */
- needs_reassembly = TRUE;
- conversation_state->eap_tls_seq++;
-
- eap_reass_cookie = conversation_state->eap_reass_cookie;
- eap_tls_seq = conversation_state->eap_tls_seq;
- } else if (more_fragments && has_length) {
- /*
- * This message has the Fragment flag set, so it requires
- * reassembly. It's the message containing the first
- * fragment (if it's a later fragment, the sequence
- * number in the conversation state would not be -1).
- *
- * If it doesn't include a length, however, we can't
- * do reassembly (either the message is in error, as
- * the first fragment *must* contain a length, or we
- * didn't capture the first fragment, and this just
- * happens to be the first fragment we saw), so we
- * also check that we have a length;
- */
- needs_reassembly = TRUE;
- conversation_state->eap_reass_cookie = pinfo->fd->num;
-
- /*
- * Start the reassembly sequence number at 0.
- */
- conversation_state->eap_tls_seq = 0;
-
- eap_tls_seq = conversation_state->eap_tls_seq;
- eap_reass_cookie = conversation_state->eap_reass_cookie;
- }
-
- if (needs_reassembly) {
- /*
- * This frame requires reassembly; remember the reassembly
- * ID for subsequent accesses to it.
- */
- packet_state = se_alloc(sizeof (frame_state_t));
- packet_state->info = eap_reass_cookie;
- p_add_proto_data(pinfo->fd, proto_eap, packet_state);
- }
- }
- } else {
- /*
- * This frame has a reassembly cookie associated with it, so
- * it requires reassembly. We've already done the
- * reassembly in the first pass, so "fragment_add_seq()"
- * won't look at the sequence number; set it to 0.
- *
- * XXX - a frame isn't supposed to have more than one
- * EAP message in it, but if it includes both an EAP-TLS
- * message and a LEAP message, we might be mistakenly
- * concluding it requires reassembly because the "info"
- * field isn't -1. We could, I guess, pack both EAP-TLS
- * ID and LEAP state into the structure, but that doesn't
- * work if you have multiple EAP-TLS or LEAP messages in
- * the frame.
- *
- * But it's not clear how much work we should do to handle
- * a bogus message such as that; as long as we don't crash
- * or do something else equally horrible, we may not
- * have to worry about this at all.
- */
- needs_reassembly = TRUE;
- eap_reass_cookie = packet_state->info;
- eap_tls_seq = 0;
- }
-
- /*
- We test here to see whether EAP-TLS packet
- carry fragmented of TLS data.
-
- If this is the case, we do reasembly below,
- otherwise we just call dissector.
- */
- if (needs_reassembly) {
- fragment_data *fd_head = NULL;
-
- /*
- * Yes, this frame contains a fragment that requires
- * reassembly.
- */
- save_fragmented = pinfo->fragmented;
- pinfo->fragmented = TRUE;
- fd_head = fragment_add_seq(tvb, offset, pinfo,
- eap_reass_cookie,
- eaptls_fragment_table,
- eap_tls_seq,
- size,
- more_fragments);
-
- if (fd_head != NULL) /* Reassembled */
- {
- proto_item *frag_tree_item;
-
- next_tvb = tvb_new_child_real_data(tvb, fd_head->data,
- fd_head->len,
- fd_head->len);
- add_new_data_source(pinfo, next_tvb, "Reassembled EAP-TLS");
-
- show_fragment_seq_tree(fd_head, &eaptls_frag_items,
- eap_tree, pinfo, next_tvb, &frag_tree_item);
-
- call_dissector(ssl_handle, next_tvb, pinfo, eap_tree);
-
- /*
- * We're finished reassembing this frame.
- * Reinitialize the reassembly state.
- */
- if (!pinfo->fd->flags.visited)
- conversation_state->eap_tls_seq = -1;
- }
-
- pinfo->fragmented = save_fragmented;
-
- } else { /* this data is NOT fragmented */
- next_tvb = tvb_new_subset(tvb, offset, tvb_len, size);
- call_dissector(ssl_handle, next_tvb, pinfo, eap_tree);
- }
- }
- }
- break; /* EAP_TYPE_TLS */
- /*********************************************************************
- Cisco's Lightweight EAP (LEAP)
- http://www.missl.cs.umd.edu/wireless/ethereal/leap.txt
- **********************************************************************/
- case EAP_TYPE_LEAP:
- {
- guint8 field,count,namesize;
-
- /* Version (byte) */
- if (tree) {
- field = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(eap_tree, tvb, offset, 1,
- "Version: %i",field);
- }
- offset++;
-
- /* Unused (byte) */
- if (tree) {
- field = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(eap_tree, tvb, offset, 1,
- "Reserved: %i",field);
- }
- offset++;
-
- /* Count (byte) */
- count = tvb_get_guint8(tvb, offset);
- if (tree) {
- proto_tree_add_text(eap_tree, tvb, offset, 1,
- "Count: %i",count);
- }
- offset++;
-
- /* Data (byte*Count) */
- /* This part is state-dependent. */
-
- /* See if we've already remembered the state. */
- packet_state = p_get_proto_data(pinfo->fd, proto_eap);
- if (packet_state == NULL) {
- /*
- * We haven't - compute the state based on the current
- * state in the conversation.
- */
- leap_state = conversation_state->leap_state;
-
- /* Advance the state machine. */
- if (leap_state==0) leap_state = 1; else
- if (leap_state==1) leap_state = 2; else
- if (leap_state==2) leap_state = 3; else
- if (leap_state==3) leap_state = 4; else
- if (leap_state==4) leap_state = -1;
-
- /*
- * Remember the state for subsequent accesses to this
- * frame.
- */
- packet_state = se_alloc(sizeof (frame_state_t));
- packet_state->info = leap_state;
- p_add_proto_data(pinfo->fd, proto_eap, packet_state);
-
- /*
- * Update the conversation's state.
- */
- conversation_state->leap_state = leap_state;
- }
-
- /* Get the remembered state. */
- leap_state = packet_state->info;
-
- if (tree) {
-
- if (leap_state==1) {
- proto_tree_add_text(eap_tree, tvb, offset, count,
- "Peer Challenge [8] Random Value:\"%s\"",
- tvb_bytes_to_str(tvb, offset, count));
- } else if (leap_state==2) {
- proto_tree_add_text(eap_tree, tvb, offset, count,
- "Peer Response [24] NtChallengeResponse(%s)",
- tvb_bytes_to_str(tvb, offset, count));
- } else if (leap_state==3) {
- proto_tree_add_text(eap_tree, tvb, offset, count,
- "AP Challenge [8] Random Value:\"%s\"",
- tvb_bytes_to_str(tvb, offset, count));
- } else if (leap_state==4) {
- proto_tree_add_text(eap_tree, tvb, offset, count,
- "AP Response [24] ChallengeResponse(%s)",
- tvb_bytes_to_str(tvb, offset, count));
- } else {
- proto_tree_add_text(eap_tree, tvb, offset, count,
- "Data (%d byte%s): \"%s\"",
- count, plurality(count, "", "s"),
- tvb_bytes_to_str(tvb, offset, count));
- }
-
- } /* END: if (tree) */
-
- offset += count;
-
- /* Name (Length-(8+Count)) */
- namesize = eap_len - (8+count);
- if (tree) {
- proto_tree_add_text(eap_tree, tvb, offset, namesize,
- "Name (%d byte%s): %s",
- namesize, plurality(count, "", "s"),
- tvb_format_text(tvb, offset, namesize));
- }
- }
-
- break; /* EAP_TYPE_LEAP */
- /*********************************************************************
- EAP-MSCHAPv2 - draft-kamath-pppext-eap-mschapv2-00.txt
- **********************************************************************/
- case EAP_TYPE_MSCHAPV2:
- if (tree)
- dissect_eap_mschapv2(eap_tree, tvb, offset, size);
- break; /* EAP_TYPE_MSCHAPV2 */
- /*********************************************************************
- EAP-SIM - draft-haverinen-pppext-eap-sim-13.txt
- **********************************************************************/
- case EAP_TYPE_SIM:
- if (tree)
- dissect_eap_sim(eap_tree, tvb, offset, size);
- break; /* EAP_TYPE_SIM */
- /*********************************************************************
- EAP-AKA - draft-arkko-pppext-eap-aka-12.txt
- **********************************************************************/
- case EAP_TYPE_AKA:
- case EAP_TYPE_AKA_PRIME:
- if (tree)
- dissect_eap_aka(eap_tree, tvb, offset, size);
- break; /* EAP_TYPE_AKA */
- /*********************************************************************
- EAP Expanded Type
- **********************************************************************/
- case EAP_TYPE_EXT:
- if (tree) {
- proto_item *expti = NULL;
- proto_tree *exptree = NULL;
-
- expti = proto_tree_add_text(eap_tree, tvb, offset, size, "Expanded Type");
- exptree = proto_item_add_subtree(expti, ett_eap_exp_attr);
- dissect_exteap(exptree, tvb, offset, size, pinfo);
- }
- break;
- /*********************************************************************
- **********************************************************************/
- default:
- if (tree) {
- proto_tree_add_text(eap_tree, tvb, offset, size,
- "Type-Data (%d byte%s) Value: %s",
- size, plurality(size, "", "s"),
- tvb_bytes_to_str(tvb, offset, size));
- }
- break;
- /*********************************************************************
- **********************************************************************/
- } /* switch (eap_type) */
+ dissect_eap_sim(eap_tree, tvb, offset, size);
+ break; /* EAP_TYPE_SIM */
+
+ /*********************************************************************
+ EAP-AKA - draft-arkko-pppext-eap-aka-12.txt
+ **********************************************************************/
+ case EAP_TYPE_AKA:
+ case EAP_TYPE_AKA_PRIME:
+ if (tree)
+ dissect_eap_aka(eap_tree, tvb, offset, size);
+ break; /* EAP_TYPE_AKA */
+
+ /*********************************************************************
+ EAP Expanded Type
+ **********************************************************************/
+ case EAP_TYPE_EXT:
+ {
+ proto_item *expti = NULL;
+ proto_tree *exptree = NULL;
+
+ expti = proto_tree_add_text(eap_tree, tvb, offset, size, "Expanded Type");
+ exptree = proto_item_add_subtree(expti, ett_eap_exp_attr);
+ dissect_exteap(exptree, tvb, offset, size, pinfo);
+ }
+ break;
+ /*********************************************************************
+ **********************************************************************/
+ default:
+ if (tree) {
+ proto_tree_add_text(eap_tree, tvb, offset, size,
+ "EAP Data (%d byte%s): \"%s\"",
+ size, plurality(size, "", "s"),
+ tvb_bytes_to_str(tvb, offset, size));
}
+ break;
+ /*********************************************************************
+ **********************************************************************/
+ } /* switch (eap_type) */
+
+ }
} /* switch (eap_code) */
@@ -1199,85 +1189,202 @@ void
proto_register_eap(void)
{
static hf_register_info hf[] = {
- { &hf_eap_code, {
- "Code", "eap.code", FT_UINT8, BASE_DEC,
- VALS(eap_code_vals), 0x0, NULL, HFILL }},
- { &hf_eap_identifier, {
- "Id", "eap.id", FT_UINT8, BASE_DEC,
- NULL, 0x0, NULL, HFILL }},
- { &hf_eap_len, {
- "Length", "eap.len", FT_UINT16, BASE_DEC,
- NULL, 0x0, NULL, HFILL }},
- { &hf_eap_type, {
- "Type", "eap.type", FT_UINT8, BASE_DEC,
- VALS(eap_type_vals), 0x0, NULL, HFILL }},
- { &hf_eap_type_nak, {
- "Desired Auth Type", "eap.desired_type", FT_UINT8, BASE_DEC,
- VALS(eap_type_vals), 0x0, NULL, HFILL }},
- { &hf_eaptls_fragment,
- { "EAP-TLS Fragment", "eaptls.fragment",
- FT_FRAMENUM, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
- { &hf_eaptls_fragments,
- { "EAP-TLS Fragments", "eaptls.fragments",
- FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
- { &hf_eaptls_fragment_overlap,
- { "Fragment overlap", "eaptls.fragment.overlap",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "Fragment overlaps with other fragments", HFILL }},
- { &hf_eaptls_fragment_overlap_conflict,
- { "Conflicting data in fragment overlap", "eaptls.fragment.overlap.conflict",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "Overlapping fragments contained conflicting data", HFILL }},
- { &hf_eaptls_fragment_multiple_tails,
- { "Multiple tail fragments found", "eaptls.fragment.multipletails",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "Several tails were found when defragmenting the packet", HFILL }},
- { &hf_eaptls_fragment_too_long_fragment,
- { "Fragment too long", "eaptls.fragment.toolongfragment",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "Fragment contained data past end of packet", HFILL }},
- { &hf_eaptls_fragment_error,
- { "Defragmentation error", "eaptls.fragment.error",
- FT_FRAMENUM, BASE_NONE, NULL, 0x0,
- "Defragmentation error due to illegal fragments", HFILL }},
- { &hf_eaptls_fragment_count,
- { "Fragment count", "eaptls.fragment.count",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The total length of the reassembled payload", HFILL }},
- { &hf_eaptls_reassembled_length,
- { "Reassembled EAP-TLS length", "eaptls.reassembled.length",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The total length of the reassembled payload", HFILL }},
-
- /* Expanded type fields */
- { &hf_eapext_vendorid,
- { "Vendor Id", "eap.ext.vendor_id",
- FT_UINT16, BASE_HEX, VALS(eapext_vendorid_vals), 0x0,
- NULL, HFILL }},
- { &hf_eapext_vendortype,
- { "Vendor Type", "eap.ext.vendor_type",
- FT_UINT8, BASE_HEX, VALS(eapext_vendortype_vals), 0x0,
- NULL, HFILL }}
-
+ { &hf_eap_code, {
+ "Code", "eap.code", FT_UINT8, BASE_DEC,
+ VALS(eap_code_vals), 0x0, NULL, HFILL }},
+ { &hf_eap_identifier, {
+ "Id", "eap.id", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_len, {
+ "Length", "eap.len", FT_UINT16, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_type, {
+ "Type", "eap.type", FT_UINT8, BASE_DEC,
+ VALS(eap_type_vals), 0x0, NULL, HFILL }},
+ { &hf_eap_type_nak, {
+ "Desired Auth Type", "eap.desired_type", FT_UINT8, BASE_DEC,
+ VALS(eap_type_vals), 0x0, NULL, HFILL }},
+ { &hf_eap_identity, {
+ "Identity", "eap.identity", FT_STRING, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_notification, {
+ "Notification", "eap.notification", FT_STRING, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_md5_value_size, {
+ "EAP-MD5 Value-Size", "eap.md5.value_size", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_md5_value, {
+ "EAP-MD5 Value", "eap.md5.value", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_md5_extra_data, {
+ "EAP-MD5 Extra Data", "eap.md5.extra_data", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_tls_flags, {
+ "EAP-TLS Flags", "eap.tls.flags", FT_UINT8, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_tls_flag_l, {
+ "Length Included", "eap.tls.flags.len_included", FT_BOOLEAN, 8,
+ NULL, EAP_TLS_FLAG_L, NULL, HFILL }},
+ { &hf_eap_tls_flag_m, {
+ "More Fragments", "eap.tls.flags.more_fragments", FT_BOOLEAN, 8,
+ NULL, EAP_TLS_FLAG_M, NULL, HFILL }},
+ { &hf_eap_tls_flag_s, {
+ "Start", "eap.tls.flags.start", FT_BOOLEAN, 8,
+ NULL, EAP_TLS_FLAG_S, NULL, HFILL }},
+ { &hf_eap_tls_flags_version, {
+ "Version", "eap.tls.flags.version", FT_UINT8, BASE_DEC,
+ NULL, EAP_TLS_FLAGS_VERSION, NULL, HFILL }},
+ { &hf_eap_tls_len, {
+ "EAP-TLS Length", "eap.tls.len", FT_UINT32, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_tls_fragment, {
+ "EAP-TLS Fragment", "eap.tls.fragment", FT_FRAMENUM, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_tls_fragments, {
+ "EAP-TLS Fragments", "eap.tls.fragments", FT_NONE, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_tls_fragment_overlap, {
+ "Fragment Overlap", "eap.tls.fragment.overlap", FT_BOOLEAN, BASE_NONE,
+ NULL, 0x0, "Fragment overlaps with other fragments", HFILL }},
+ { &hf_eap_tls_fragment_overlap_conflict, {
+ "Conflicting Data In Fragment Overlap", "eap.tls.fragment.overlap_conflict", FT_BOOLEAN, BASE_NONE,
+ NULL, 0x0, "Overlapping fragments contained conflicting data", HFILL }},
+ { &hf_eap_tls_fragment_multiple_tails, {
+ "Multiple Tail Fragments Found", "eap.tls.fragment.multiple_tails", FT_BOOLEAN, BASE_NONE,
+ NULL, 0x0, "Several tails were found when defragmenting the packet", HFILL }},
+ { &hf_eap_tls_fragment_too_long_fragment,{
+ "Fragment Too Long", "eap.tls.fragment.fragment.too_long", FT_BOOLEAN, BASE_NONE,
+ NULL, 0x0, "Fragment contained data past end of packet", HFILL }},
+ { &hf_eap_tls_fragment_error, {
+ "Defragmentation Error", "eap.tls.fragment.error", FT_FRAMENUM, BASE_NONE,
+ NULL, 0x0, "Defragmentation error due to illegal fragments", HFILL }},
+ { &hf_eap_tls_fragment_count, {
+ "Fragment Count", "eap.tls.fragment.count", FT_UINT32, BASE_DEC,
+ NULL, 0x0, "Total length of the reassembled payload", HFILL }},
+ { &hf_eap_tls_reassembled_length, {
+ "Reassembled EAP-TLS Length", "eap.tls.reassembled.len", FT_UINT32, BASE_DEC,
+ NULL, 0x0, "Total length of the reassembled payload", HFILL }},
+ { &hf_eap_sim_subtype, {
+ "EAP-SIM Subtype", "eap.sim.subtype", FT_UINT8, BASE_DEC,
+ VALS(eap_sim_subtype_vals), 0x0, NULL, HFILL }},
+ { &hf_eap_sim_reserved, {
+ "EAP-SIM Reserved", "eap.sim.reserved", FT_UINT16, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_sim_subtype_attribute, {
+ "EAP-SIM Attribute", "eap.sim.subtype.attribute", FT_UINT8, BASE_DEC,
+ VALS(eap_sim_aka_attribute_vals), 0x0, NULL, HFILL }},
+ { &hf_eap_sim_subtype_type, {
+ "EAP-SIM Type", "eap.sim.subtype.type", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_sim_subtype_length, {
+ "EAP-SIM Length", "eap.sim.subtype.len", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_sim_subtype_value, {
+ "EAP-SIM Value", "eap.sim.subtype.value", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_aka_subtype, {
+ "EAP-AKA Subtype", "eap.aka.subtype", FT_UINT8, BASE_DEC,
+ VALS(eap_aka_subtype_vals), 0x0, NULL, HFILL }},
+ { &hf_eap_aka_reserved, {
+ "EAP-AKA Reserved", "eap.aka.reserved", FT_UINT16, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_aka_subtype_attribute, {
+ "EAP-AKA Attribute", "eap.aka.subtype.attribute", FT_UINT8, BASE_DEC,
+ VALS(eap_sim_aka_attribute_vals), 0x0, NULL, HFILL }},
+ { &hf_eap_aka_subtype_type, {
+ "EAP-AKA Type", "eap.aka.subtype.type", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_aka_subtype_length, {
+ "EAP-AKA Length", "eap.aka.subtype.len", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_aka_subtype_value, {
+ "EAP-AKA Value", "eap.aka.subtype.value", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_leap_version, {
+ "EAP-LEAP Version", "eap.leap.version", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_leap_reserved, {
+ "EAP-LEAP Reserved", "eap.leap.reserved", FT_UINT8, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_leap_count, {
+ "EAP-LEAP Count", "eap.leap.count", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_leap_peer_challenge, {
+ "EAP-LEAP Peer-Challenge", "eap.leap.peer_challenge", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_leap_peer_response, {
+ "EAP-LEAP Peer-Response", "eap.leap.peer_response", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_leap_ap_challenge, {
+ "EAP-LEAP AP-Challenge", "eap.leap.ap_challenge", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_leap_ap_response, {
+ "EAP-LEAP AP-Response", "eap.leap.ap_response", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_leap_name, {
+ "EAP-LEAP Name", "eap.leap.name", FT_STRING, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_ms_chap_v2_opcode, {
+ "EAP-MS-CHAP-v2 OpCode", "eap.ms_chap_v2.opcode", FT_UINT8, BASE_DEC,
+ VALS(eap_ms_chap_v2_opcode_vals), 0x0, NULL, HFILL }},
+ { &hf_eap_ms_chap_v2_id, {
+ "EAP-MS-CHAP-v2 Id", "eap.ms_chap_v2.id", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_ms_chap_v2_length, {
+ "EAP-MS-CHAP-v2 Length", "eap.ms_chap_v2.length", FT_UINT16, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_ms_chap_v2_value_size, {
+ "EAP-MS-CHAP-v2 Value-Size", "eap.ms_chap_v2.value_size", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_ms_chap_v2_challenge, {
+ "EAP-MS-CHAP-v2 Challenge", "eap.ms_chap_v2.challenge", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_ms_chap_v2_name, {
+ "EAP-MS-CHAP-v2 Name", "eap.ms_chap_v2.name", FT_STRING, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_ms_chap_v2_peer_challenge, {
+ "EAP-MS-CHAP-v2 Peer-Challenge", "eap.ms_chap_v2.peer_challenge", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_ms_chap_v2_reserved, {
+ "EAP-MS-CHAP-v2 Reserved", "eap.ms_chap_v2.reserved", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_ms_chap_v2_nt_response, {
+ "EAP-MS-CHAP-v2 NT-Response", "eap.ms_chap_v2.nt_response", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_ms_chap_v2_flags, {
+ "EAP-MS-CHAP-v2 Flags", "eap.ms_chap_v2.flags", FT_UINT8, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_ms_chap_v2_message, {
+ "EAP-MS-CHAP-v2 Message", "eap.ms_chap_v2.message", FT_STRING, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_eap_ms_chap_v2_failure_request, {
+ "EAP-MS-CHAP-v2 Failure-Request", "eap.ms_chap_v2.failure_request", FT_STRING, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ /* Expanded type fields */
+ { &hf_eap_ext_vendor_id, {
+ "EAP-EXT Vendor Id", "eap.ext.vendor_id", FT_UINT16, BASE_HEX,
+ VALS(eap_ext_vendor_id_vals), 0x0, NULL, HFILL }},
+ { &hf_eap_ext_vendor_type, {
+ "EAP-EXT Vendor Type", "eap.ext.vendor_type", FT_UINT8, BASE_HEX,
+ VALS(eap_ext_vendor_type_vals), 0x0, NULL, HFILL }}
};
static gint *ett[] = {
- &ett_eap,
- &ett_eaptls_fragment,
- &ett_eaptls_fragments,
- &ett_eap_sim_attr,
- &ett_eap_aka_attr,
- &ett_eap_exp_attr
+ &ett_eap,
+ &ett_eap_tls_fragment,
+ &ett_eap_tls_fragments,
+ &ett_eap_sim_attr,
+ &ett_eap_aka_attr,
+ &ett_eap_exp_attr,
+ &ett_eap_tls_flags
};
proto_eap = proto_register_protocol("Extensible Authentication Protocol",
- "EAP", "eap");
+ "EAP", "eap");
proto_register_field_array(proto_eap, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
new_register_dissector("eap", dissect_eap, proto_eap);
- register_init_routine(eaptls_defragment_init);
+ register_init_routine(eap_tls_defragment_init);
}
void
@@ -1293,3 +1400,15 @@ proto_reg_handoff_eap(void)
eap_handle = find_dissector("eap");
dissector_add_uint("ppp.protocol", PPP_EAP, eap_handle);
}
+/*
+ * Editor modelines
+ *
+ * Local Variables:
+ * c-basic-offset: 2
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * ex: set shiftwidth=2 tabstop=8 expandtab:
+ * :indentSize=2:tabSize=8:noTabs=true:
+ */
diff --git a/epan/dissectors/packet-eapol.c b/epan/dissectors/packet-eapol.c
index 885a1fb71c..59e792e2f9 100644
--- a/epan/dissectors/packet-eapol.c
+++ b/epan/dissectors/packet-eapol.c
@@ -39,16 +39,18 @@ static int hf_eapol_version = -1;
static int hf_eapol_type = -1;
static int hf_eapol_len = -1;
static int hf_eapol_keydes_type = -1;
-static int hf_eapol_keydes_keylen = -1;
+static int hf_eapol_keydes_key_len = -1;
static int hf_eapol_keydes_replay_counter = -1;
static int hf_eapol_keydes_key_iv = -1;
-static int hf_eapol_keydes_key_index_keytype = -1;
-static int hf_eapol_keydes_key_index_indexnum = -1;
+static int hf_eapol_keydes_key_index = -1;
+static int hf_eapol_keydes_key_index_type = -1;
+static int hf_eapol_keydes_key_index_number = -1;
static int hf_eapol_keydes_key_signature = -1;
static int hf_eapol_keydes_key = -1;
+static int hf_eapol_keydes_key_generated_locally = -1;
static int hf_eapol_wpa_keydes_keyinfo = -1;
-static int hf_eapol_wpa_keydes_keyinfo_keydes_ver = -1;
+static int hf_eapol_wpa_keydes_keyinfo_keydes_version = -1;
static int hf_eapol_wpa_keydes_keyinfo_key_type = -1;
static int hf_eapol_wpa_keydes_keyinfo_key_index = -1;
static int hf_eapol_wpa_keydes_keyinfo_install = -1;
@@ -57,12 +59,12 @@ static int hf_eapol_wpa_keydes_keyinfo_key_mic = -1;
static int hf_eapol_wpa_keydes_keyinfo_secure = -1;
static int hf_eapol_wpa_keydes_keyinfo_error = -1;
static int hf_eapol_wpa_keydes_keyinfo_request = -1;
-static int hf_eapol_wpa_keydes_keyinfo_encr_key_data = -1;
+static int hf_eapol_wpa_keydes_keyinfo_encrypted_key_data = -1;
static int hf_eapol_wpa_keydes_nonce = -1;
static int hf_eapol_wpa_keydes_rsc = -1;
static int hf_eapol_wpa_keydes_id = -1;
static int hf_eapol_wpa_keydes_mic = -1;
-static int hf_eapol_wpa_keydes_datalen = -1;
+static int hf_eapol_wpa_keydes_data_len = -1;
static int hf_eapol_wpa_keydes_data = -1;
static gint ett_eapol = -1;
@@ -73,57 +75,72 @@ static gint ett_keyinfo = -1;
static dissector_handle_t eap_handle;
static dissector_handle_t data_handle;
-#define EAPOL_HDR_LEN 4
+#define EAPOL_HDR_LEN 4
-#define EAP_PACKET 0
-#define EAPOL_START 1
-#define EAPOL_LOGOFF 2
-#define EAPOL_KEY 3
-#define EAPOL_ENCAP_ASF_ALERT 4
+#define EAPOL_2001 1
+#define EAPOL_2004 2
+#define EAPOL_2010 3
-#define EAPOL_RSN_KEY 2 /* TBD, may change in final IEEE 802.1X-REV
- */
-#define EAPOL_WPA_KEY 254
+#define EAP_PACKET 0
+#define EAPOL_START 1
+#define EAPOL_LOGOFF 2
+#define EAPOL_KEY 3
+#define EAPOL_ENCAP_ASF_ALERT 4
+
+#define EAPOL_RSN_KEY 2 /* TBD, may change in final IEEE 802.1X-REV
+ */
+#define EAPOL_WPA_KEY 254
+
+static const value_string eapol_version_vals[] = {
+ { EAPOL_2001, "802.1X-2001" },
+ { EAPOL_2004, "802.1X-2004" },
+ { EAPOL_2010, "802.1X-2010" },
+ { 0, NULL }
+};
static const value_string eapol_type_vals[] = {
- { EAP_PACKET, "EAP Packet" },
- { EAPOL_START, "Start" },
- { EAPOL_LOGOFF, "Logoff" },
- { EAPOL_KEY, "Key" },
- { EAPOL_ENCAP_ASF_ALERT, "Encapsulated ASF Alert" },
- { 0, NULL }
+ { EAP_PACKET, "EAP Packet" },
+ { EAPOL_START, "Start" },
+ { EAPOL_LOGOFF, "Logoff" },
+ { EAPOL_KEY, "Key" },
+ { EAPOL_ENCAP_ASF_ALERT, "Encapsulated ASF Alert" },
+ { 0, NULL }
};
static const value_string eapol_keydes_type_vals[] = {
- { 1, "RC4 Descriptor" },
- { EAPOL_RSN_KEY, "EAPOL RSN key" },
- { EAPOL_WPA_KEY, "EAPOL WPA key" },
- { 0, NULL }
+ { 1, "RC4 Descriptor" },
+ { EAPOL_RSN_KEY, "EAPOL RSN Key" },
+ { EAPOL_WPA_KEY, "EAPOL WPA Key" },
+ { 0, NULL }
};
-#define KEY_INFO_KEYDES_VER_MASK 0x0007
-#define KEY_INFO_KEY_TYPE_MASK 0x0008
-#define KEY_INFO_KEY_INDEX_MASK 0x0030
-#define KEY_INFO_INSTALL_MASK 0x0040
-#define KEY_INFO_KEY_ACK_MASK 0x0080
-#define KEY_INFO_KEY_MIC_MASK 0x0100
-#define KEY_INFO_SECURE_MASK 0x0200
-#define KEY_INFO_ERROR_MASK 0x0400
-#define KEY_INFO_REQUEST_MASK 0x0800
-#define KEY_INFO_ENCR_KEY_DATA_MASK 0x1000
-
-static const true_false_string keytype_tfs =
- { "Unicast", "Broadcast" };
-static const true_false_string tfs_keyinfo_key_type =
- { "Pairwise key", "Group key" };
-#define KEYDES_VER_TYPE1 0x01
-#define KEYDES_VER_TYPE2 0x02
-#define KEYDES_VER_TYPE3 0x03
-static const value_string keydes_ver[] = {
- { KEYDES_VER_TYPE1, "HMAC-MD5 for MIC and RC4 for encryption" },
- { KEYDES_VER_TYPE2, "HMAC-SHA1 for MIC and AES key wrap for encryption" },
- { KEYDES_VER_TYPE3, "AES-128-CMAC for MIC and AES key wrap for encryption" },
- { 0, NULL }
+#define KEY_INFO_KEYDES_VERSION_MASK 0x0007
+#define KEY_INFO_KEY_TYPE_MASK 0x0008
+#define KEY_INFO_KEY_INDEX_MASK 0x0030
+#define KEY_INFO_INSTALL_MASK 0x0040
+#define KEY_INFO_KEY_ACK_MASK 0x0080
+#define KEY_INFO_KEY_MIC_MASK 0x0100
+#define KEY_INFO_SECURE_MASK 0x0200
+#define KEY_INFO_ERROR_MASK 0x0400
+#define KEY_INFO_REQUEST_MASK 0x0800
+#define KEY_INFO_ENCRYPTED_KEY_DATA_MASK 0x1000
+
+static const true_false_string keytype_tfs = { "Unicast", "Broadcast" };
+
+static const true_false_string keyinfo_key_type_tfs = { "Pairwise Key", "Group Key" };
+
+#define KEYDES_KEY_INDEX_TYPE_MASK 0x80
+#define KEYDES_KEY_INDEX_NUMBER_MASK 0x7F
+
+#define KEYDES_VER_TYPE1 0x01
+#define KEYDES_VER_TYPE2 0x02
+#define KEYDES_VER_TYPE3 0x03
+
+static const value_string keydes_version_vals[] = {
+ { KEYDES_VER_TYPE1, "RC4 Cipher, HMAC-MD5 MIC" },
+ { KEYDES_VER_TYPE2, "AES Cipher, HMAC-SHA1 MIC" },
+ { KEYDES_VER_TYPE3, "AES Cipher, AES-128-CMAC MIC" },
+ { 0, NULL }
};
static void
@@ -135,8 +152,8 @@ dissect_eapol(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
guint16 eapol_len;
guint len;
guint16 eapol_key_len, eapol_data_len;
- guint8 key_index;
guint16 keyinfo;
+ gboolean generated_locally;
proto_tree *ti = NULL;
proto_tree *eapol_tree = NULL;
proto_tree *keyinfo_item = NULL;
@@ -157,10 +174,10 @@ dissect_eapol(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
eapol_type = tvb_get_guint8(tvb, offset);
if (tree)
- proto_tree_add_uint(eapol_tree, hf_eapol_type, tvb, offset, 1, eapol_type);
+ proto_tree_add_item(eapol_tree, hf_eapol_type, tvb, offset, 1, ENC_BIG_ENDIAN);
if (check_col(pinfo->cinfo, COL_INFO))
col_add_str(pinfo->cinfo, COL_INFO,
- val_to_str(eapol_type, eapol_type_vals, "Unknown type (0x%02X)"));
+ val_to_str(eapol_type, eapol_type_vals, "Unknown Type (0x%02X)"));
offset++;
eapol_len = tvb_get_ntohs(tvb, offset);
@@ -168,7 +185,7 @@ dissect_eapol(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
set_actual_length(tvb, len);
if (tree) {
proto_item_set_len(ti, len);
- proto_tree_add_uint(eapol_tree, hf_eapol_len, tvb, offset, 2, eapol_len);
+ proto_tree_add_item(eapol_tree, hf_eapol_len, tvb, offset, 2, ENC_BIG_ENDIAN);
}
offset += 2;
@@ -185,8 +202,8 @@ dissect_eapol(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(eapol_tree, hf_eapol_keydes_type, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
if (keydesc_type == EAPOL_WPA_KEY || keydesc_type == EAPOL_RSN_KEY) {
- keyinfo = tvb_get_ntohs(tvb, offset);
- if (check_col(pinfo->cinfo, COL_INFO)) {
+ keyinfo = tvb_get_ntohs(tvb, offset);
+ if (check_col(pinfo->cinfo, COL_INFO)) {
if (keyinfo & KEY_INFO_REQUEST_MASK) {
col_set_str(pinfo->cinfo, COL_INFO, "Key (Request)");
if (keyinfo & KEY_INFO_ERROR_MASK)
@@ -198,122 +215,120 @@ dissect_eapol(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
KEY_INFO_KEY_MIC_MASK | KEY_INFO_SECURE_MASK);
switch (masked) {
case KEY_INFO_KEY_ACK_MASK:
- col_set_str(pinfo->cinfo, COL_INFO, "Key (msg 1/4)");
+ col_set_str(pinfo->cinfo, COL_INFO, "Key (Message 1 of 4)");
break;
case KEY_INFO_KEY_MIC_MASK:
- col_set_str(pinfo->cinfo, COL_INFO, "Key (msg 2/4)");
+ col_set_str(pinfo->cinfo, COL_INFO, "Key (Message 2 of 4)");
break;
case (KEY_INFO_INSTALL_MASK | KEY_INFO_KEY_ACK_MASK |
KEY_INFO_KEY_MIC_MASK | KEY_INFO_SECURE_MASK):
- col_set_str(pinfo->cinfo, COL_INFO, "Key (msg 3/4)");
+ col_set_str(pinfo->cinfo, COL_INFO, "Key (Message 3 of 4)");
break;
case (KEY_INFO_KEY_MIC_MASK | KEY_INFO_SECURE_MASK):
- col_set_str(pinfo->cinfo, COL_INFO, "Key (msg 4/4)");
+ col_set_str(pinfo->cinfo, COL_INFO, "Key (Message 4 of 4)");
break;
}
} else {
if (keyinfo & KEY_INFO_KEY_ACK_MASK)
- col_set_str(pinfo->cinfo, COL_INFO, "Key (Group msg 1/2)");
+ col_set_str(pinfo->cinfo, COL_INFO, "Key (Group Message 1 of 2)");
else
- col_set_str(pinfo->cinfo, COL_INFO, "Key (Group msg 2/2)");
+ col_set_str(pinfo->cinfo, COL_INFO, "Key (Group Message 2 of 2)");
}
}
- keyinfo_item =
- proto_tree_add_uint(eapol_tree, hf_eapol_wpa_keydes_keyinfo, tvb,
- offset, 2, keyinfo);
-
- keyinfo_tree = proto_item_add_subtree(keyinfo_item, ett_keyinfo);
- proto_tree_add_uint(keyinfo_tree, hf_eapol_wpa_keydes_keyinfo_keydes_ver, tvb, offset, 2, keyinfo);
- proto_tree_add_boolean(keyinfo_tree, hf_eapol_wpa_keydes_keyinfo_key_type, tvb, offset, 2, keyinfo);
- proto_tree_add_uint(keyinfo_tree, hf_eapol_wpa_keydes_keyinfo_key_index, tvb, offset, 2, keyinfo);
- proto_tree_add_boolean(keyinfo_tree, hf_eapol_wpa_keydes_keyinfo_install, tvb, offset, 2, keyinfo);
- proto_tree_add_boolean(keyinfo_tree, hf_eapol_wpa_keydes_keyinfo_key_ack, tvb, offset, 2, keyinfo);
- proto_tree_add_boolean(keyinfo_tree, hf_eapol_wpa_keydes_keyinfo_key_mic, tvb, offset, 2, keyinfo);
- proto_tree_add_boolean(keyinfo_tree, hf_eapol_wpa_keydes_keyinfo_secure, tvb, offset, 2, keyinfo);
- proto_tree_add_boolean(keyinfo_tree, hf_eapol_wpa_keydes_keyinfo_error, tvb, offset, 2, keyinfo);
- proto_tree_add_boolean(keyinfo_tree, hf_eapol_wpa_keydes_keyinfo_request, tvb, offset, 2, keyinfo);
- proto_tree_add_boolean(keyinfo_tree, hf_eapol_wpa_keydes_keyinfo_encr_key_data, tvb, offset, 2, keyinfo);
+ keyinfo_item =
+ proto_tree_add_item(eapol_tree, hf_eapol_wpa_keydes_keyinfo, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+
+ keyinfo_tree = proto_item_add_subtree(keyinfo_item, ett_keyinfo);
+ proto_tree_add_item(keyinfo_tree, hf_eapol_wpa_keydes_keyinfo_keydes_version, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(keyinfo_tree, hf_eapol_wpa_keydes_keyinfo_key_type, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(keyinfo_tree, hf_eapol_wpa_keydes_keyinfo_key_index, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(keyinfo_tree, hf_eapol_wpa_keydes_keyinfo_install, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(keyinfo_tree, hf_eapol_wpa_keydes_keyinfo_key_ack, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(keyinfo_tree, hf_eapol_wpa_keydes_keyinfo_key_mic, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(keyinfo_tree, hf_eapol_wpa_keydes_keyinfo_secure, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(keyinfo_tree, hf_eapol_wpa_keydes_keyinfo_error, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(keyinfo_tree, hf_eapol_wpa_keydes_keyinfo_request, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(keyinfo_tree, hf_eapol_wpa_keydes_keyinfo_encrypted_key_data, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
- proto_tree_add_uint(eapol_tree, hf_eapol_keydes_keylen, tvb, offset,
- 2, tvb_get_ntohs(tvb, offset));
+ proto_tree_add_item(eapol_tree, hf_eapol_keydes_key_len, tvb, offset,
+ 2, ENC_BIG_ENDIAN);
offset += 2;
proto_tree_add_item(eapol_tree, hf_eapol_keydes_replay_counter, tvb,
- offset, 8, ENC_BIG_ENDIAN);
+ offset, 8, ENC_BIG_ENDIAN);
offset += 8;
proto_tree_add_item(eapol_tree, hf_eapol_wpa_keydes_nonce, tvb, offset,
- 32, ENC_NA);
+ 32, ENC_BIG_ENDIAN);
offset += 32;
proto_tree_add_item(eapol_tree, hf_eapol_keydes_key_iv, tvb,
- offset, 16, ENC_NA);
+ offset, 16, ENC_BIG_ENDIAN);
offset += 16;
proto_tree_add_item(eapol_tree, hf_eapol_wpa_keydes_rsc, tvb, offset,
- 8, ENC_NA);
+ 8, ENC_BIG_ENDIAN);
offset += 8;
proto_tree_add_item(eapol_tree, hf_eapol_wpa_keydes_id, tvb, offset, 8,
- ENC_NA);
+ ENC_BIG_ENDIAN);
offset += 8;
proto_tree_add_item(eapol_tree, hf_eapol_wpa_keydes_mic, tvb, offset,
- 16, ENC_NA);
+ 16, ENC_BIG_ENDIAN);
offset += 16;
eapol_data_len = tvb_get_ntohs(tvb, offset);
- proto_tree_add_uint(eapol_tree, hf_eapol_wpa_keydes_datalen, tvb,
- offset, 2, eapol_data_len);
+ proto_tree_add_item(eapol_tree, hf_eapol_wpa_keydes_data_len, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
offset += 2;
if (eapol_data_len != 0) {
ti = proto_tree_add_item(eapol_tree, hf_eapol_wpa_keydes_data,
- tvb, offset, eapol_data_len, ENC_NA);
- if ((keyinfo & KEY_INFO_ENCR_KEY_DATA_MASK) ||
- !(keyinfo & KEY_INFO_KEY_TYPE_MASK)) {
- /* RSN: EAPOL-Key Key Data is encrypted.
- * WPA: Group Keys use encrypted Key Data.
- * Cannot parse this without knowing the key.
- * IEEE 802.11i-2004 8.5.2.
- */
- } else {
- keydes_tree = proto_item_add_subtree(ti, ett_eapol_keydes_data);
- ieee_80211_add_tagged_parameters(tvb, offset, pinfo, keydes_tree,
- eapol_data_len, -1);
- }
+ tvb, offset, eapol_data_len, ENC_BIG_ENDIAN);
+ if ((keyinfo & KEY_INFO_ENCRYPTED_KEY_DATA_MASK) ||
+ !(keyinfo & KEY_INFO_KEY_TYPE_MASK)) {
+ /* RSN: EAPOL-Key Key Data is encrypted.
+ * WPA: Group Keys use encrypted Key Data.
+ * Cannot parse this without knowing the key.
+ * IEEE 802.11i-2004 8.5.2.
+ */
+ } else {
+ keydes_tree = proto_item_add_subtree(ti, ett_eapol_keydes_data);
+ ieee_80211_add_tagged_parameters(tvb, offset, pinfo, keydes_tree,
+ eapol_data_len, -1);
+ }
}
} else {
eapol_key_len = tvb_get_ntohs(tvb, offset);
- proto_tree_add_uint(eapol_tree, hf_eapol_keydes_keylen, tvb, offset, 2, eapol_key_len);
+ proto_tree_add_item(eapol_tree, hf_eapol_keydes_key_len, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
proto_tree_add_item(eapol_tree, hf_eapol_keydes_replay_counter, tvb,
- offset, 8, ENC_BIG_ENDIAN);
+ offset, 8, ENC_BIG_ENDIAN);
offset += 8;
proto_tree_add_item(eapol_tree, hf_eapol_keydes_key_iv, tvb,
- offset, 16, ENC_NA);
+ offset, 16, ENC_NA);
offset += 16;
- key_index = tvb_get_guint8(tvb, offset);
- ti = proto_tree_add_text(eapol_tree, tvb, offset, 1,
- "Key Index: %s, index %u",
- (key_index & 0x80) ? "unicast" : "broadcast",
- key_index & 0x7F);
+ ti = proto_tree_add_item(eapol_tree, hf_eapol_keydes_key_index, tvb, offset, 1, ENC_BIG_ENDIAN);
key_index_tree = proto_item_add_subtree(ti, ett_eapol_key_index);
- proto_tree_add_boolean(key_index_tree, hf_eapol_keydes_key_index_keytype,
- tvb, offset, 1, key_index);
- proto_tree_add_uint(key_index_tree, hf_eapol_keydes_key_index_indexnum,
- tvb, offset, 1, key_index);
+ proto_tree_add_item(key_index_tree, hf_eapol_keydes_key_index_type,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(key_index_tree, hf_eapol_keydes_key_index_number,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
proto_tree_add_item(eapol_tree, hf_eapol_keydes_key_signature, tvb,
- offset, 16, ENC_NA);
+ offset, 16, ENC_NA);
offset += 16;
if (eapol_key_len != 0) {
- if (eapol_len > 44) { /* Size of rc4 key with no key content */
- proto_tree_add_item(eapol_tree, hf_eapol_keydes_key, tvb, offset,
- eapol_key_len, ENC_NA);
- } else {
- /* IEEE 802.1X-2004 7.6.3.6: If no bytes remain, then */
- proto_tree_add_text(eapol_tree, tvb, offset, 0, "Key: Use key locally generated by peer");
+ /* IEEE 802.1X-2004 7.6.3.6: If no bytes remain, then */
+ generated_locally = eapol_len <= 44; /* Size of rc4 key with no key content */
+ if (!generated_locally) {
+ proto_tree_add_item(eapol_tree, hf_eapol_keydes_key, tvb, offset,
+ eapol_key_len, ENC_BIG_ENDIAN);
}
+
+ proto_tree_add_boolean(eapol_tree, hf_eapol_keydes_key_generated_locally, tvb, offset,
+ 0, generated_locally);
}
}
}
break;
- case EAPOL_ENCAP_ASF_ALERT: /* XXX - is this an SNMP trap? */
+ case EAPOL_ENCAP_ASF_ALERT: /* XXX - is this an SNMP trap? */
default:
next_tvb = tvb_new_subset_remaining(tvb, offset);
call_dissector(data_handle, next_tvb, pinfo, eapol_tree);
@@ -325,128 +340,162 @@ void
proto_register_eapol(void)
{
static hf_register_info hf[] = {
- { &hf_eapol_version, {
- "Version", "eapol.version", FT_UINT8, BASE_DEC,
- NULL, 0x0, NULL, HFILL }},
- { &hf_eapol_type, {
- "Type", "eapol.type", FT_UINT8, BASE_DEC,
- VALS(eapol_type_vals), 0x0, NULL, HFILL }},
- { &hf_eapol_len, {
- "Length", "eapol.len", FT_UINT16, BASE_DEC,
- NULL, 0x0, NULL, HFILL }},
- { &hf_eapol_keydes_type, {
- "Descriptor Type", "eapol.keydes.type", FT_UINT8, BASE_DEC,
- VALS(eapol_keydes_type_vals), 0x0, "Key Descriptor Type", HFILL }},
- { &hf_eapol_keydes_keylen, {
- "Key Length", "eapol.keydes.keylen", FT_UINT16, BASE_DEC,
- NULL, 0x0, NULL, HFILL }},
- { &hf_eapol_keydes_replay_counter, {
- "Replay Counter", "eapol.keydes.replay_counter", FT_UINT64, BASE_DEC,
- NULL, 0x0, NULL, HFILL }},
- { &hf_eapol_keydes_key_iv, {
- "Key IV", "eapol.keydes.key_iv", FT_BYTES, BASE_NONE,
- NULL, 0x0, "Key Initialization Vector", HFILL }},
- { &hf_eapol_keydes_key_index_keytype, {
- "Key Type", "eapol.keydes.index.keytype", FT_BOOLEAN, 8,
- TFS(&keytype_tfs), 0x80, "Key Type (unicast/broadcast)", HFILL }},
- { &hf_eapol_keydes_key_index_indexnum, {
- "Index Number", "eapol.keydes.index.indexnum", FT_UINT8, BASE_DEC,
- NULL, 0x7F, "Key Index number", HFILL }},
- { &hf_eapol_keydes_key_signature, {
- "Key Signature", "eapol.keydes.key_signature", FT_BYTES, BASE_NONE,
- NULL, 0x0, NULL, HFILL }},
- { &hf_eapol_keydes_key, {
- "Key", "eapol.keydes.key", FT_BYTES, BASE_NONE,
- NULL, 0x0, NULL, HFILL }},
-
- { &hf_eapol_wpa_keydes_keyinfo, {
- "Key Information", "eapol.keydes.key_info", FT_UINT16,
- BASE_HEX, NULL, 0x0, "WPA key info", HFILL }},
-
- { &hf_eapol_wpa_keydes_keyinfo_keydes_ver, {
- "Key Descriptor Version",
- "eapol.keydes.key_info.keydes_ver",
- FT_UINT16, BASE_DEC, VALS(keydes_ver),
- KEY_INFO_KEYDES_VER_MASK,
- "Key Descriptor Version Type", HFILL }},
- { &hf_eapol_wpa_keydes_keyinfo_key_type, {
- "Key Type",
- "eapol.keydes.key_info.key_type",
- FT_BOOLEAN, 16, TFS(&tfs_keyinfo_key_type),
- KEY_INFO_KEY_TYPE_MASK,
- "Key Type (Pairwise or Group)", HFILL }},
- { &hf_eapol_wpa_keydes_keyinfo_key_index, {
- "Key Index",
- "eapol.keydes.key_info.key_index",
- FT_UINT16, BASE_DEC, NULL,
- KEY_INFO_KEY_INDEX_MASK,
- "Key Index (0-3) (RSN: Reserved)", HFILL }},
- { &hf_eapol_wpa_keydes_keyinfo_install, {
- "Install flag",
- "eapol.keydes.key_info.install",
- FT_BOOLEAN, 16, TFS(&tfs_set_notset),
- KEY_INFO_INSTALL_MASK,
- NULL, HFILL }},
- { &hf_eapol_wpa_keydes_keyinfo_key_ack, {
- "Key Ack flag",
- "eapol.keydes.key_info.key_ack",
- FT_BOOLEAN, 16, TFS(&tfs_set_notset),
- KEY_INFO_KEY_ACK_MASK,
- NULL, HFILL }},
- { &hf_eapol_wpa_keydes_keyinfo_key_mic, {
- "Key MIC flag",
- "eapol.keydes.key_info.key_mic",
- FT_BOOLEAN, 16, TFS(&tfs_set_notset),
- KEY_INFO_KEY_MIC_MASK,
- NULL, HFILL }},
- { &hf_eapol_wpa_keydes_keyinfo_secure, {
- "Secure flag",
- "eapol.keydes.key_info.secure",
- FT_BOOLEAN, 16, TFS(&tfs_set_notset),
- KEY_INFO_SECURE_MASK,
- NULL, HFILL }},
- { &hf_eapol_wpa_keydes_keyinfo_error, {
- "Error flag",
- "eapol.keydes.key_info.error",
- FT_BOOLEAN, 16, TFS(&tfs_set_notset),
- KEY_INFO_ERROR_MASK,
- NULL, HFILL }},
- { &hf_eapol_wpa_keydes_keyinfo_request, {
- "Request flag",
- "eapol.keydes.key_info.request",
- FT_BOOLEAN, 16, TFS(&tfs_set_notset),
- KEY_INFO_REQUEST_MASK,
- NULL, HFILL }},
- { &hf_eapol_wpa_keydes_keyinfo_encr_key_data, {
- "Encrypted Key Data flag",
- "eapol.keydes.key_info.encr_key_data",
- FT_BOOLEAN, 16, TFS(&tfs_set_notset),
- KEY_INFO_ENCR_KEY_DATA_MASK,
- NULL, HFILL }},
- { &hf_eapol_wpa_keydes_nonce, {
- "Nonce", "eapol.keydes.nonce", FT_BYTES, BASE_NONE,
- NULL, 0x0, "WPA Key Nonce", HFILL }},
- { &hf_eapol_wpa_keydes_rsc, {
- "WPA Key RSC", "eapol.keydes.rsc", FT_BYTES, BASE_NONE, NULL,
- 0x0, "WPA Key Receive Sequence Counter", HFILL }},
- { &hf_eapol_wpa_keydes_id, {
- "WPA Key ID", "eapol.keydes.id", FT_BYTES, BASE_NONE, NULL,
- 0x0, "WPA Key ID(RSN Reserved)", HFILL }},
- { &hf_eapol_wpa_keydes_mic, {
- "WPA Key MIC", "eapol.keydes.mic", FT_BYTES, BASE_NONE, NULL,
- 0x0, "WPA Key Message Integrity Check", HFILL }},
- { &hf_eapol_wpa_keydes_datalen, {
- "WPA Key Length", "eapol.keydes.datalen", FT_UINT16, BASE_DEC,
- NULL, 0x0, "WPA Key Data Length", HFILL }},
- { &hf_eapol_wpa_keydes_data, {
- "WPA Key", "eapol.keydes.data", FT_BYTES, BASE_NONE,
- NULL, 0x0, "WPA Key Data", HFILL }},
+ { &hf_eapol_version, {
+ "Version", "eapol.version",
+ FT_UINT8, BASE_DEC, VALS(eapol_version_vals), 0x0,
+ NULL, HFILL }},
+
+ { &hf_eapol_type, {
+ "Type", "eapol.type",
+ FT_UINT8, BASE_DEC, VALS(eapol_type_vals), 0x0,
+ NULL, HFILL }},
+
+ { &hf_eapol_len, {
+ "Length", "eapol.len",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_eapol_keydes_type, {
+ "Key Descriptor Type", "eapol.keydes.type",
+ FT_UINT8, BASE_DEC, VALS(eapol_keydes_type_vals), 0x0,
+ NULL, HFILL }},
+
+ { &hf_eapol_keydes_key_len, {
+ "Key Length", "eapol.keydes.key_len",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_eapol_keydes_replay_counter, {
+ "Replay Counter", "eapol.keydes.replay_counter",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_eapol_keydes_key_iv, {
+ "Key IV", "eapol.keydes.key_iv",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_eapol_keydes_key_index, {
+ "Key Index", "eapol.keydes.key_index",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_eapol_keydes_key_index_type, {
+ "Type", "eapol.keydes.key_index.type",
+ FT_BOOLEAN, 8, TFS(&keytype_tfs), KEYDES_KEY_INDEX_TYPE_MASK ,
+ NULL, HFILL }},
+
+ { &hf_eapol_keydes_key_index_number, {
+ "Number", "eapol.keydes.key_index.number",
+ FT_UINT8, BASE_DEC, NULL, KEYDES_KEY_INDEX_NUMBER_MASK,
+ NULL, HFILL }},
+
+ { &hf_eapol_keydes_key_signature, {
+ "Key Signature", "eapol.keydes.key_signature",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_eapol_keydes_key, {
+ "Key", "eapol.keydes.key",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_eapol_keydes_key_generated_locally, {
+ "Key Generated Locally", "eapol.keydes.key.generated_locally",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_eapol_wpa_keydes_keyinfo, {
+ "Key Information", "eapol.keydes.key_info",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_eapol_wpa_keydes_keyinfo_keydes_version, {
+ "Key Descriptor Version", "eapol.keydes.key_info.keydes_version",
+ FT_UINT16, BASE_DEC, VALS(keydes_version_vals), KEY_INFO_KEYDES_VERSION_MASK,
+ NULL, HFILL }},
+
+ { &hf_eapol_wpa_keydes_keyinfo_key_type, {
+ "Key Type", "eapol.keydes.key_info.key_type",
+ FT_BOOLEAN, 16, TFS(&keyinfo_key_type_tfs), KEY_INFO_KEY_TYPE_MASK,
+ NULL, HFILL }},
+
+ { &hf_eapol_wpa_keydes_keyinfo_key_index, {
+ "Key Index", "eapol.keydes.key_info.key_index",
+ FT_UINT16, BASE_DEC, NULL, KEY_INFO_KEY_INDEX_MASK,
+ NULL, HFILL }},
+
+ { &hf_eapol_wpa_keydes_keyinfo_install, {
+ "Install", "eapol.keydes.key_info.install",
+ FT_BOOLEAN, 16, TFS(&tfs_set_notset), KEY_INFO_INSTALL_MASK,
+ NULL, HFILL }},
+
+ { &hf_eapol_wpa_keydes_keyinfo_key_ack, {
+ "Key ACK", "eapol.keydes.key_info.key_ack",
+ FT_BOOLEAN, 16, TFS(&tfs_set_notset), KEY_INFO_KEY_ACK_MASK,
+ NULL, HFILL }},
+
+ { &hf_eapol_wpa_keydes_keyinfo_key_mic, {
+ "Key MIC", "eapol.keydes.key_info.key_mic",
+ FT_BOOLEAN, 16, TFS(&tfs_set_notset), KEY_INFO_KEY_MIC_MASK,
+ NULL, HFILL }},
+
+ { &hf_eapol_wpa_keydes_keyinfo_secure, {
+ "Secure", "eapol.keydes.key_info.secure",
+ FT_BOOLEAN, 16, TFS(&tfs_set_notset), KEY_INFO_SECURE_MASK,
+ NULL, HFILL }},
+
+ { &hf_eapol_wpa_keydes_keyinfo_error, {
+ "Error", "eapol.keydes.key_info.error",
+ FT_BOOLEAN, 16, TFS(&tfs_set_notset), KEY_INFO_ERROR_MASK,
+ NULL, HFILL }},
+
+ { &hf_eapol_wpa_keydes_keyinfo_request, {
+ "Request", "eapol.keydes.key_info.request",
+ FT_BOOLEAN, 16, TFS(&tfs_set_notset), KEY_INFO_REQUEST_MASK,
+ NULL, HFILL }},
+
+ { &hf_eapol_wpa_keydes_keyinfo_encrypted_key_data, {
+ "Encrypted Key Data", "eapol.keydes.key_info.encrypted_key_data",
+ FT_BOOLEAN, 16, TFS(&tfs_set_notset), KEY_INFO_ENCRYPTED_KEY_DATA_MASK,
+ NULL, HFILL }},
+
+ { &hf_eapol_wpa_keydes_nonce, {
+ "WPA Key Nonce", "eapol.keydes.nonce",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_eapol_wpa_keydes_rsc, {
+ "WPA Key RSC", "eapol.keydes.rsc",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_eapol_wpa_keydes_id, {
+ "WPA Key ID", "eapol.keydes.id",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_eapol_wpa_keydes_mic, {
+ "WPA Key MIC", "eapol.keydes.mic",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_eapol_wpa_keydes_data_len, {
+ "WPA Key Data Length", "eapol.keydes.data_len",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_eapol_wpa_keydes_data, {
+ "WPA Key Data", "eapol.keydes.data",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
};
+
static gint *ett[] = {
- &ett_eapol,
- &ett_eapol_keydes_data,
- &ett_keyinfo,
- &ett_eapol_key_index
+ &ett_eapol,
+ &ett_eapol_keydes_data,
+ &ett_keyinfo,
+ &ett_eapol_key_index
};
proto_eapol = proto_register_protocol("802.1X Authentication", "EAPOL", "eapol");
@@ -462,7 +511,7 @@ proto_reg_handoff_eapol(void)
/*
* Get handles for the EAP and raw data dissectors.
*/
- eap_handle = find_dissector("eap");
+ eap_handle = find_dissector("eap");
data_handle = find_dissector("data");
eapol_handle = create_dissector_handle(dissect_eapol, proto_eapol);
diff --git a/epan/dissectors/packet-echo.c b/epan/dissectors/packet-echo.c
index 24b066cfd2..82b8f5d899 100644
--- a/epan/dissectors/packet-echo.c
+++ b/epan/dissectors/packet-echo.c
@@ -34,7 +34,7 @@
#include <glib.h>
#include <epan/packet.h>
-#define ECHO_PORT 7
+#define ECHO_PORT 7
static int proto_echo = -1;
@@ -47,10 +47,8 @@ static gint ett_echo = -1;
static void dissect_echo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *echo_tree = NULL;
- proto_item *ti, *hidden_item;
- int offset = 0;
- gboolean request = FALSE;
+ int offset = 0;
+ gboolean request = FALSE;
if (pinfo->destport == ECHO_PORT) {
request = TRUE;
@@ -60,10 +58,12 @@ static void dissect_echo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (check_col(pinfo->cinfo, COL_INFO)) {
col_set_str(pinfo->cinfo, COL_INFO,
- (request) ? "Request" : "Response");
+ (request) ? "Request" : "Response");
}
if (tree) {
+ proto_tree *echo_tree;
+ proto_item *ti, *hidden_item;
ti = proto_tree_add_item(tree, proto_echo, tvb, offset, -1, ENC_NA);
echo_tree = proto_item_add_subtree(ti, ett_echo);
@@ -86,17 +86,17 @@ void proto_register_echo(void)
static hf_register_info hf[] = {
{ &hf_echo_data,
- { "Echo data", "echo.data",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Echo data", "echo.data",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_echo_request,
- { "Echo request", "echo.request",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "Echo data", HFILL }},
+ { "Echo request", "echo.request",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "Echo data", HFILL }},
{ &hf_echo_response,
{ "Echo response","echo.response",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "Echo data", HFILL }}
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "Echo data", HFILL }}
};
static gint *ett[] = {
diff --git a/epan/dissectors/packet-ecp-oui.c b/epan/dissectors/packet-ecp-oui.c
index 11bd895f10..9c0e322990 100644
--- a/epan/dissectors/packet-ecp-oui.c
+++ b/epan/dissectors/packet-ecp-oui.c
@@ -32,6 +32,7 @@
#include <glib.h>
#include <epan/packet.h>
#include <epan/oui.h>
+#include <epan/addr_resolv.h>
#include "packet-ieee802a.h"
#include "packet-lldp.h"
@@ -203,7 +204,12 @@ dissect_vdp_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32
tempOffset += 2;
oui = tvb_get_ntoh24(tvb, (tempOffset));
+ /* maintain previous OUI names. If not included, look in manuf database for OUI */
ouiStr = val_to_str(oui, tlv_oui_subtype_vals, "Unknown");
+ if (strcmp(ouiStr, "Unknown")==0) {
+ ouiStr = uint_get_manuf_name_if_known(oui);
+ if(ouiStr==NULL) ouiStr="Unknown";
+ }
tempOffset += 3;
diff --git a/epan/dissectors/packet-edonkey.c b/epan/dissectors/packet-edonkey.c
index d1b3bab466..02348303dc 100644
--- a/epan/dissectors/packet-edonkey.c
+++ b/epan/dissectors/packet-edonkey.c
@@ -1020,7 +1020,7 @@ static int dissect_kademlia_hash_hidden(tvbuff_t *tvb, packet_info *pinfo _U_,
hash = kademlia_hash(tvb, offset);
/* <File hash> ::= HASH (16 word MD4 digest) */
- hidden_item = proto_tree_add_string_format_value(tree, hf_kademlia_hash, tvb, offset, 16, hash, "%s", hash);
+ hidden_item = proto_tree_add_string(tree, hf_kademlia_hash, tvb, offset, 16, hash);
PROTO_ITEM_SET_HIDDEN(hidden_item);
return offset+16;
@@ -1034,7 +1034,7 @@ static int dissect_kademlia_hash(tvbuff_t *tvb, packet_info *pinfo _U_,
hash = kademlia_hash(tvb, offset);
/* <File hash> ::= HASH (16 word MD4 digest) */
- proto_tree_add_string_format_value(tree, *value_ptr, tvb, offset, 16, hash, "%s", hash);
+ proto_tree_add_string(tree, *value_ptr, tvb, offset, 16, hash);
return dissect_kademlia_hash_hidden(tvb, pinfo, offset, tree);
}
@@ -1047,7 +1047,7 @@ static int dissect_kademlia_tag_hash_hidden(tvbuff_t *tvb, packet_info *pinfo _U
hash = kademlia_hash(tvb, offset);
/* <File hash> ::= HASH (16 word MD4 digest) */
- hidden_item = proto_tree_add_string_format_value(tree, hf_kademlia_tag_hash, tvb, offset, 16, hash, "%s", hash);
+ hidden_item = proto_tree_add_string(tree, hf_kademlia_tag_hash, tvb, offset, 16, hash);
PROTO_ITEM_SET_HIDDEN(hidden_item);
return offset+16;
@@ -1060,7 +1060,7 @@ static int dissect_kademlia_tag_hash(tvbuff_t *tvb, packet_info *pinfo _U_,
hash = kademlia_hash(tvb, offset);
/* <File hash> ::= HASH (16 word MD4 digest) */
- proto_tree_add_string_format_value(tree, hf_kademlia_hash, tvb, offset, 16, hash, "%s", hash);
+ proto_tree_add_string(tree, hf_kademlia_hash, tvb, offset, 16, hash);
return dissect_kademlia_tag_hash_hidden( tvb, pinfo, offset, tree );
}
@@ -1940,7 +1940,7 @@ static void dissect_emule_tcp_message(guint8 msg_type,
case EMULE_MSG_HELLO_ANSWER: /* eMule Info Answer: <eMule Version> <Meta tag list> */
version = tvb_get_letohs(tvb, offset);
proto_tree_add_text(tree, tvb, offset, 2, "Version: %u", version);
- offset = dissect_edonkey_metatag_list(tvb, pinfo, offset+2, tree);
+ dissect_edonkey_metatag_list(tvb, pinfo, offset+2, tree);
break;
case EMULE_MSG_QUEUE_RANKING: /* eMule Queue Ranking: <eMule Rank (guint16)> */
@@ -1949,12 +1949,12 @@ static void dissect_emule_tcp_message(guint8 msg_type,
break;
case EMULE_MSG_SOURCES_REQUEST: /* Sources Request: <File Hash> */
- offset = dissect_edonkey_file_hash(tvb, pinfo, offset, tree);
+ dissect_edonkey_file_hash(tvb, pinfo, offset, tree);
break;
case EMULE_MSG_SOURCES_ANSWER: /* Sources Answer: <File Hash> <Address List> */
offset = dissect_edonkey_file_hash(tvb, pinfo, offset, tree);
- offset = dissect_emule_address_list(tvb, pinfo, offset, tree);
+ dissect_emule_address_list(tvb, pinfo, offset, tree);
break;
case EMULE_MSG_SEC_IDENT_STATE: {
@@ -1964,13 +1964,12 @@ static void dissect_emule_tcp_message(guint8 msg_type,
offset++;
rndchallenge = tvb_get_letohl(tvb, offset);
proto_tree_add_text(tree, tvb, offset, 4, "Rndchallenge: %u", rndchallenge);
- offset += 4;
break;
}
case EMULE_MSG_PUBLIC_KEY: /* Public Key: <1byte : len> <len bytes: pubkey> */
- offset = dissect_edonkey_public_key(tvb, pinfo, offset, tree);
+ /* offset =*/ dissect_edonkey_public_key(tvb, pinfo, offset, tree);
/* offset = dissect_emule_publickey(tvb, pinfo, offset, tree); */
break;
@@ -1979,7 +1978,6 @@ static void dissect_emule_tcp_message(guint8 msg_type,
if (msg_end != offset) {
guint8 sigIPused = tvb_get_guint8(tvb, offset);
proto_tree_add_text(tree, tvb, offset, 1, "Sig IP Used: %u", sigIPused);
- offset++;
}
break;
@@ -2026,7 +2024,7 @@ static void dissect_emule_tcp_message(guint8 msg_type,
offset = dissect_edonkey_start_offset_64(tvb, pinfo, offset, tree);
offset = dissect_edonkey_end_offset_64(tvb, pinfo, offset, tree);
offset = dissect_edonkey_end_offset_64(tvb, pinfo, offset, tree);
- offset = dissect_edonkey_end_offset_64(tvb, pinfo, offset, tree);
+ dissect_edonkey_end_offset_64(tvb, pinfo, offset, tree);
break;
case EMULE_MSG_SENDING_PART_64: /* Sending Part: <File hash> <Start offset> <End offset> DATA */
@@ -2041,7 +2039,7 @@ static void dissect_emule_tcp_message(guint8 msg_type,
case EMULE_MSG_CALLBACK: /* Callback: < hash ><hash> <uint16> */
offset = dissect_edonkey_file_hash(tvb, pinfo, offset, tree);
- offset = dissect_edonkey_file_hash(tvb, pinfo, offset, tree);
+ /*offset = */dissect_edonkey_file_hash(tvb, pinfo, offset, tree);
/* offset = dissect_edonkey_generic_uint16(tvb, pinfo, offset, tree, "uint16" ); */
break;
@@ -2050,7 +2048,7 @@ static void dissect_emule_tcp_message(guint8 msg_type,
partnum = tvb_get_letohs(tvb, offset);
proto_tree_add_uint(tree, hf_emule_aich_partnum, tvb, offset, 2, partnum);
offset += 2;
- offset = dissect_emule_aich_root_hash(tvb, pinfo, offset, tree);
+ dissect_emule_aich_root_hash(tvb, pinfo, offset, tree);
break;
case EMULE_MSG_AICH_ANSWER: /* AICH Answer: <File Hash> <PartNum> <AICH Hash> <AICH Hash List> */
@@ -2059,13 +2057,13 @@ static void dissect_emule_tcp_message(guint8 msg_type,
proto_tree_add_uint(tree, hf_emule_aich_partnum, tvb, offset, 2, partnum);
offset += 2;
offset = dissect_emule_aich_root_hash(tvb, pinfo, offset, tree);
- offset = dissect_emule_aich_hash_list(tvb, pinfo, offset, tree);
+ dissect_emule_aich_hash_list(tvb, pinfo, offset, tree);
break;
case EMULE_MSG_MULTIPACKET: /* MultiPacket: <Hash> <Opcodes> */
case EMULE_MSG_MULTIPACKET_ANSWER:
case EMULE_MSG_MULTIPACKET_EXT: /* MultiPacketExt: <Hash> <FileLength> <Opcodes> */
- offset = dissect_emule_multipacket(tvb, pinfo, offset, offset+length, tree, msg_type==EMULE_MSG_MULTIPACKET_EXT);
+ dissect_emule_multipacket(tvb, pinfo, offset, offset+length, tree, msg_type==EMULE_MSG_MULTIPACKET_EXT);
break;
default:
@@ -2754,7 +2752,7 @@ static int dissect_kademlia_udp_message(guint8 msg_type,
}
}
binarray[128] = '\0';
- proto_tree_add_string_format_value(tree, hf_kademlia_distance, tvb, offset, 0, binarray, "%s", binarray);
+ proto_tree_add_string(tree, hf_kademlia_distance, tvb, offset, 0, binarray);
}
break;
diff --git a/epan/dissectors/packet-ehs.c b/epan/dissectors/packet-ehs.c
index d53fd5214b..d01a66a675 100644
--- a/epan/dissectors/packet-ehs.c
+++ b/epan/dissectors/packet-ehs.c
@@ -28,8 +28,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
@@ -240,15 +238,15 @@ typedef enum EHS_Protocol_Type
/* some basic sizing parameters */
enum
{
- IP_HEADER_LENGTH = 48,
- CCSDS_PRIMARY_HEADER_LENGTH = 6,
+ IP_HEADER_LENGTH = 48,
+ CCSDS_PRIMARY_HEADER_LENGTH = 6,
CCSDS_SECONDARY_HEADER_LENGTH = 10,
- EHS_PRIMARY_HEADER_SIZE = 16,
- EHS_SECONDARY_HEADER_SIZE = 12
+ EHS_PRIMARY_HEADER_SIZE = 16,
+ EHS_SECONDARY_HEADER_SIZE = 12
};
/* determine if a ccsds primary header indicates a secondary exists */
-#define HDR_SECHDR 0x0800
+#define HDR_SECHDR 0x0800
static const value_string ehs_primary_header_project[] =
@@ -401,7 +399,8 @@ static const value_string ehs_data_zone_udsm_event[] =
* header, and the offset should be set to the start of the ehs secondary
* header on input.
*/
-static int ehs_secondary_header_size ( int protocol, tvbuff_t* tvb, int offset )
+static int
+ehs_secondary_header_size ( int protocol, tvbuff_t* tvb, int offset )
{
/* for most protocols the ehs secondary header is a standard size */
int size = EHS_SECONDARY_HEADER_SIZE;
@@ -409,7 +408,7 @@ static int ehs_secondary_header_size ( int protocol, tvbuff_t* tvb, int offset )
switch ( protocol )
{
case EHS_PROTOCOL__TDM_TELEMETRY:
- /* the TDM secondary header size is variable. it's value is actually
+ /* the TDM secondary header size is variable. its value is actually
* contained in the first two bytes of the secondary header itself.
*/
size = tvb_get_ntohs ( tvb, offset );
@@ -469,7 +468,8 @@ static int ehs_secondary_header_size ( int protocol, tvbuff_t* tvb, int offset )
/* common EHS secondary header dissector */
-static void common_secondary_header_dissector ( proto_tree* ehs_secondary_header_tree, tvbuff_t* tvb, int* offset )
+static void
+common_secondary_header_dissector ( proto_tree* ehs_secondary_header_tree, tvbuff_t* tvb, int* offset )
{
proto_tree_add_item ( ehs_secondary_header_tree, hf_ehs_sh_vcdu_sequence_number, tvb, *offset, 3, ENC_BIG_ENDIAN );
*offset += 3;
@@ -497,7 +497,8 @@ static void common_secondary_header_dissector ( proto_tree* ehs_secondary_header
/* AOS/LOS EHS secondary header dissector */
-static void aoslos_secondary_header_dissector ( proto_tree* ehs_secondary_header_tree, tvbuff_t* tvb, int* offset )
+static void
+aoslos_secondary_header_dissector ( proto_tree* ehs_secondary_header_tree, tvbuff_t* tvb, int* offset )
{
proto_tree_add_item ( ehs_secondary_header_tree, hf_ehs_sh_version, tvb, *offset, 1, ENC_BIG_ENDIAN );
proto_tree_add_item ( ehs_secondary_header_tree, hf_ehs_sh_data_status_bit_5, tvb, *offset, 1, ENC_BIG_ENDIAN );
@@ -513,7 +514,8 @@ static void aoslos_secondary_header_dissector ( proto_tree* ehs_secondary_header
/* payload ccsds secondary header dissector */
-static void payload_ccsds_secondary_header_dissector ( proto_tree* ehs_secondary_header_tree, tvbuff_t* tvb, int* offset )
+static void
+payload_ccsds_secondary_header_dissector ( proto_tree* ehs_secondary_header_tree, tvbuff_t* tvb, int* offset )
{
proto_tree_add_item ( ehs_secondary_header_tree, hf_ehs_sh_version, tvb, *offset, 1, ENC_BIG_ENDIAN );
proto_tree_add_item ( ehs_secondary_header_tree, hf_ehs_sh_data_status_bit_5, tvb, *offset, 1, ENC_BIG_ENDIAN );
@@ -529,7 +531,8 @@ static void payload_ccsds_secondary_header_dissector ( proto_tree* ehs_secondary
/* core ccsds secondary header dissector */
-static void core_ccsds_secondary_header_dissector ( proto_tree* ehs_secondary_header_tree, tvbuff_t* tvb, int* offset )
+static void
+core_ccsds_secondary_header_dissector ( proto_tree* ehs_secondary_header_tree, tvbuff_t* tvb, int* offset )
{
proto_tree_add_item ( ehs_secondary_header_tree, hf_ehs_sh_version, tvb, *offset, 1, ENC_BIG_ENDIAN );
proto_tree_add_item ( ehs_secondary_header_tree, hf_ehs_sh_data_status_bit_5, tvb, *offset, 1, ENC_BIG_ENDIAN );
@@ -545,7 +548,8 @@ static void core_ccsds_secondary_header_dissector ( proto_tree* ehs_secondary_he
/* payload bpdu secondary header dissector */
-static void payload_bpdu_secondary_header_dissector ( proto_tree* ehs_secondary_header_tree, tvbuff_t* tvb, int* offset )
+static void
+payload_bpdu_secondary_header_dissector ( proto_tree* ehs_secondary_header_tree, tvbuff_t* tvb, int* offset )
{
proto_tree_add_item ( ehs_secondary_header_tree, hf_ehs_sh_version, tvb, *offset, 1, ENC_BIG_ENDIAN );
proto_tree_add_item ( ehs_secondary_header_tree, hf_ehs_sh_data_status_bit_5, tvb, *offset, 1, ENC_BIG_ENDIAN );
@@ -561,7 +565,8 @@ static void payload_bpdu_secondary_header_dissector ( proto_tree* ehs_secondary_
/* udsm secondary header dissector */
-static void udsm_secondary_header_dissector ( proto_tree* ehs_secondary_header_tree, tvbuff_t* tvb, int* offset )
+static void
+udsm_secondary_header_dissector ( proto_tree* ehs_secondary_header_tree, tvbuff_t* tvb, int* offset )
{
proto_tree_add_item ( ehs_secondary_header_tree, hf_ehs_sh_version, tvb, *offset, 1, ENC_BIG_ENDIAN );
proto_tree_add_item ( ehs_secondary_header_tree, hf_ehs_sh_data_status_bit_5, tvb, *offset, 1, ENC_BIG_ENDIAN );
@@ -577,14 +582,15 @@ static void udsm_secondary_header_dissector ( proto_tree* ehs_secondary_header_t
/* tdm secondary header dissector */
-static void tdm_secondary_header_dissector ( proto_tree* ehs_secondary_header_tree, tvbuff_t* tvb, int* offset )
+static void
+tdm_secondary_header_dissector ( proto_tree* ehs_secondary_header_tree, tvbuff_t* tvb, int* offset )
{
int j;
int num_major_frames = 0;
int num_minor_frames = 0;
- int cntmet_present = 0;
- int obt_present = 0;
- int mjfs_present = 0;
+ int cntmet_present = 0;
+ int obt_present = 0;
+ int mjfs_present = 0;
int year, jday, hour, minute, second, tenths;
@@ -753,7 +759,8 @@ static void tdm_secondary_header_dissector ( proto_tree* ehs_secondary_header_tr
/* pseudo secondary header dissector */
-static void pseudo_secondary_header_dissector ( proto_tree* ehs_secondary_header_tree, tvbuff_t* tvb, int* offset )
+static void
+pseudo_secondary_header_dissector ( proto_tree* ehs_secondary_header_tree, tvbuff_t* tvb, int* offset )
{
/* proto_tree_add_item ( ehs_secondary_header_tree, hf_ehs_sh_pseudo_unused, tvb, *offset, 2, ENC_BIG_ENDIAN ); */
*offset += 2;
@@ -773,10 +780,11 @@ static void pseudo_secondary_header_dissector ( proto_tree* ehs_secondary_header
/* EHS secondary header dissector */
-static void ehs_secondary_header_dissector ( int protocol, proto_tree* ehs_secondary_header_tree, tvbuff_t* tvb, int* offset )
+static void
+ehs_secondary_header_dissector ( int protocol, proto_tree* ehs_secondary_header_tree, tvbuff_t* tvb, int* offset )
{
/* the ehs secondary header structure is potentially different for each and every
- * protocol type, including it's size. we support certain protocols but not all.
+ * protocol type, including its size. we support certain protocols but not all.
* for those protocols which are not supported we simply increment the offset
* and return. support for these other protocols can easily be added at a later
* time if and when it becomes necessary to do so. but for right now, we're only
@@ -852,7 +860,8 @@ static void ehs_secondary_header_dissector ( int protocol, proto_tree* ehs_secon
/* AOS/LOS data zone dissector */
-static void aoslos_data_zone_dissector ( proto_tree* ehs_tree, tvbuff_t* tvb, int* offset, packet_info* pinfo )
+static void
+aoslos_data_zone_dissector ( proto_tree* ehs_tree, tvbuff_t* tvb, int* offset, packet_info* pinfo )
{
proto_item *ehs_data_zone;
proto_tree *ehs_data_zone_tree;
@@ -884,7 +893,8 @@ static void aoslos_data_zone_dissector ( proto_tree* ehs_tree, tvbuff_t* tvb, in
/* UDSM data zone dissector */
-static void udsm_data_zone_dissector ( proto_tree* ehs_tree, tvbuff_t* tvb, int* offset, packet_info* pinfo )
+static void
+udsm_data_zone_dissector ( proto_tree* ehs_tree, tvbuff_t* tvb, int* offset, packet_info* pinfo )
{
proto_item *ehs_data_zone;
proto_tree *ehs_data_zone_tree;
@@ -981,7 +991,8 @@ static void udsm_data_zone_dissector ( proto_tree* ehs_tree, tvbuff_t* tvb, int*
/* data zone dissector */
-static void ehs_data_zone_dissector ( int protocol, proto_tree* ehs_tree, tvbuff_t* tvb, int* offset, packet_info* pinfo )
+static void
+ehs_data_zone_dissector ( int protocol, proto_tree* ehs_tree, tvbuff_t* tvb, int* offset, packet_info* pinfo )
{
/* the data zone of certain protocols such as AOS/LOS and UDSM is well known.
*/
@@ -1044,129 +1055,129 @@ static void ehs_data_zone_dissector ( int protocol, proto_tree* ehs_tree, tvbuff
static void
dissect_ehs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- int offset = 0;
- guint16 first_word;
+ int offset = 0;
+ guint16 first_word;
+
+ tvbuff_t *new_tvb;
+
+ proto_item *ehs_packet;
+ proto_tree *ehs_tree;
- tvbuff_t *new_tvb;
-
- proto_item *ehs_packet;
- proto_tree *ehs_tree;
-
- proto_item *ehs_primary_header;
- proto_tree *ehs_primary_header_tree;
-
- proto_item *ehs_secondary_header;
- proto_tree *ehs_secondary_header_tree;
-
- int protocol;
- int year, jday, hour, minute, second, tenths;
+ proto_item *ehs_primary_header;
+ proto_tree *ehs_primary_header_tree;
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "EHS");
- col_set_str(pinfo->cinfo, COL_INFO, "EHS");
-
- ehs_packet = proto_tree_add_item ( tree, proto_ehs, tvb, 0, -1, ENC_NA );
- ehs_tree = proto_item_add_subtree ( ehs_packet, ett_ehs );
+ proto_item *ehs_secondary_header;
+ proto_tree *ehs_secondary_header_tree;
- /* build the ehs primary header tree */
- ehs_primary_header = proto_tree_add_text ( ehs_tree, tvb, offset, EHS_PRIMARY_HEADER_SIZE, "Primary EHS Header" );
- ehs_primary_header_tree = proto_item_add_subtree ( ehs_primary_header, ett_ehs_primary_header );
+ int protocol;
+ int year, jday, hour, minute, second, tenths;
- proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_version, tvb, offset, 1, ENC_BIG_ENDIAN );
- proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_project, tvb, offset, 1, ENC_BIG_ENDIAN );
- ++offset;
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "EHS");
+ col_set_str(pinfo->cinfo, COL_INFO, "EHS");
- proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_support_mode, tvb, offset, 1, ENC_BIG_ENDIAN );
- proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_data_mode, tvb, offset, 1, ENC_BIG_ENDIAN );
- ++offset;
+ ehs_packet = proto_tree_add_item ( tree, proto_ehs, tvb, 0, -1, ENC_NA );
+ ehs_tree = proto_item_add_subtree ( ehs_packet, ett_ehs );
- proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_mission, tvb, offset, 1, ENC_BIG_ENDIAN );
- ++offset;
+ /* build the ehs primary header tree */
+ ehs_primary_header = proto_tree_add_text ( ehs_tree, tvb, offset, EHS_PRIMARY_HEADER_SIZE, "Primary EHS Header" );
+ ehs_primary_header_tree = proto_item_add_subtree ( ehs_primary_header, ett_ehs_primary_header );
- /* save protocol for use later on */
- protocol = tvb_get_guint8 ( tvb, offset );
- proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_protocol, tvb, offset, 1, ENC_BIG_ENDIAN );
- ++offset;
+ proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_version, tvb, offset, 1, ENC_BIG_ENDIAN );
+ proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_project, tvb, offset, 1, ENC_BIG_ENDIAN );
+ ++offset;
- year = tvb_get_guint8 ( tvb, offset );
- proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_year, tvb, offset, 1, ENC_BIG_ENDIAN );
- ++offset;
+ proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_support_mode, tvb, offset, 1, ENC_BIG_ENDIAN );
+ proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_data_mode, tvb, offset, 1, ENC_BIG_ENDIAN );
+ ++offset;
- jday = tvb_get_ntohs ( tvb, offset );
- proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_jday, tvb, offset, 2, ENC_BIG_ENDIAN );
- offset += 2;
+ proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_mission, tvb, offset, 1, ENC_BIG_ENDIAN );
+ ++offset;
- hour = tvb_get_guint8 ( tvb, offset );
- proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_hour, tvb, offset, 1, ENC_BIG_ENDIAN );
- ++offset;
+ /* save protocol for use later on */
+ protocol = tvb_get_guint8 ( tvb, offset );
+ proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_protocol, tvb, offset, 1, ENC_BIG_ENDIAN );
+ ++offset;
- minute = tvb_get_guint8 ( tvb, offset );
- proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_minute, tvb, offset, 1, ENC_BIG_ENDIAN );
- ++offset;
+ year = tvb_get_guint8 ( tvb, offset );
+ proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_year, tvb, offset, 1, ENC_BIG_ENDIAN );
+ ++offset;
- second = tvb_get_guint8 ( tvb, offset );
- proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_second, tvb, offset, 1, ENC_BIG_ENDIAN );
- ++offset;
+ jday = tvb_get_ntohs ( tvb, offset );
+ proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_jday, tvb, offset, 2, ENC_BIG_ENDIAN );
+ offset += 2;
- tenths = tvb_get_guint8 ( tvb, offset ) >> 4;
- proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_tenths, tvb, offset, 1, ENC_BIG_ENDIAN );
+ hour = tvb_get_guint8 ( tvb, offset );
+ proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_hour, tvb, offset, 1, ENC_BIG_ENDIAN );
+ ++offset;
- /* format a more readable ground receipt time string */
- proto_tree_add_text ( ehs_primary_header_tree, tvb, offset-7, 7,
- "%04d/%03d:%02d:%02d:%02d.%1d = EHS Ground Receipt Time", year + 1900, jday, hour, minute, second, tenths );
+ minute = tvb_get_guint8 ( tvb, offset );
+ proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_minute, tvb, offset, 1, ENC_BIG_ENDIAN );
+ ++offset;
- proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_new_data_flag, tvb, offset, 1, ENC_BIG_ENDIAN );
- /* proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_pad1, tvb, offset, 1, ENC_BIG_ENDIAN ); */
- proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_hold_flag, tvb, offset, 1, ENC_BIG_ENDIAN );
- proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_sign_flag, tvb, offset, 1, ENC_BIG_ENDIAN );
- ++offset;
+ second = tvb_get_guint8 ( tvb, offset );
+ proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_second, tvb, offset, 1, ENC_BIG_ENDIAN );
+ ++offset;
- /* proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_pad2, tvb, offset, 1, ENC_BIG_ENDIAN ); */
- ++offset;
- /* proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_pad3, tvb, offset, 1, ENC_BIG_ENDIAN ); */
- ++offset;
- /* proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_pad4, tvb, offset, 1, ENC_BIG_ENDIAN ); */
- ++offset;
+ tenths = tvb_get_guint8 ( tvb, offset ) >> 4;
+ proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_tenths, tvb, offset, 1, ENC_BIG_ENDIAN );
- proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_hosc_packet_size, tvb, offset, 2, ENC_BIG_ENDIAN );
- offset += 2;
+ /* format a more readable ground receipt time string */
+ proto_tree_add_text ( ehs_primary_header_tree, tvb, offset-7, 7,
+ "%04d/%03d:%02d:%02d:%02d.%1d = EHS Ground Receipt Time", year + 1900, jday, hour, minute, second, tenths );
- /* build the ehs secondary header tree */
- ehs_secondary_header = proto_tree_add_text ( ehs_tree, tvb, offset,
- ehs_secondary_header_size ( protocol, tvb, offset ), "Secondary EHS Header" );
- ehs_secondary_header_tree = proto_item_add_subtree ( ehs_secondary_header, ett_ehs_secondary_header );
+ proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_new_data_flag, tvb, offset, 1, ENC_BIG_ENDIAN );
+ /* proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_pad1, tvb, offset, 1, ENC_BIG_ENDIAN ); */
+ proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_hold_flag, tvb, offset, 1, ENC_BIG_ENDIAN );
+ proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_sign_flag, tvb, offset, 1, ENC_BIG_ENDIAN );
+ ++offset;
- /* since each protocol can have a different ehs secondary header structure, we will offload
- * this processing to lower levels of code so we don't have to insert all of that complexity
- * directly inline here, which would no doubt make this difficult to read at best.
- */
- ehs_secondary_header_dissector ( protocol, ehs_secondary_header_tree, tvb, &offset );
+ /* proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_pad2, tvb, offset, 1, ENC_BIG_ENDIAN ); */
+ ++offset;
+ /* proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_pad3, tvb, offset, 1, ENC_BIG_ENDIAN ); */
+ ++offset;
+ /* proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_pad4, tvb, offset, 1, ENC_BIG_ENDIAN ); */
+ ++offset;
- /* for ccsds protocol types pass the remaining packet off to the ccsds packet dissector */
- switch ( protocol )
- {
- case EHS_PROTOCOL__TDM_TELEMETRY:
- case EHS_PROTOCOL__PSEUDO_TELEMETRY:
- case EHS_PROTOCOL__AOS_LOS:
- case EHS_PROTOCOL__PDSS_PAYLOAD_CCSDS_PACKET:
- case EHS_PROTOCOL__PDSS_CORE_CCSDS_PACKET:
- case EHS_PROTOCOL__PDSS_UDSM:
- new_tvb = tvb_new_subset_remaining ( tvb, offset);
- call_dissector ( ccsds_handle, new_tvb, pinfo, ehs_tree );
-
- /* bump the offset to the data zone area */
- first_word = tvb_get_ntohs ( tvb, offset );
-
- offset += CCSDS_PRIMARY_HEADER_LENGTH;
- if ( first_word & HDR_SECHDR ) offset += CCSDS_SECONDARY_HEADER_LENGTH;
- break;
-
-
- default:
- break;
- }
-
- /* build the ehs data zone tree for well known protocols such as AOS/LOS and UDSM */
- ehs_data_zone_dissector ( protocol, ehs_tree, tvb, &offset, pinfo );
+ proto_tree_add_item ( ehs_primary_header_tree, hf_ehs_ph_hosc_packet_size, tvb, offset, 2, ENC_BIG_ENDIAN );
+ offset += 2;
+
+ /* build the ehs secondary header tree */
+ ehs_secondary_header = proto_tree_add_text ( ehs_tree, tvb, offset,
+ ehs_secondary_header_size ( protocol, tvb, offset ), "Secondary EHS Header" );
+ ehs_secondary_header_tree = proto_item_add_subtree ( ehs_secondary_header, ett_ehs_secondary_header );
+
+ /* since each protocol can have a different ehs secondary header structure, we will offload
+ * this processing to lower levels of code so we don't have to insert all of that complexity
+ * directly inline here, which would no doubt make this difficult to read at best.
+ */
+ ehs_secondary_header_dissector ( protocol, ehs_secondary_header_tree, tvb, &offset );
+
+ /* for ccsds protocol types pass the remaining packet off to the ccsds packet dissector */
+ switch ( protocol )
+ {
+ case EHS_PROTOCOL__TDM_TELEMETRY:
+ case EHS_PROTOCOL__PSEUDO_TELEMETRY:
+ case EHS_PROTOCOL__AOS_LOS:
+ case EHS_PROTOCOL__PDSS_PAYLOAD_CCSDS_PACKET:
+ case EHS_PROTOCOL__PDSS_CORE_CCSDS_PACKET:
+ case EHS_PROTOCOL__PDSS_UDSM:
+ new_tvb = tvb_new_subset_remaining ( tvb, offset);
+ call_dissector ( ccsds_handle, new_tvb, pinfo, ehs_tree );
+
+ /* bump the offset to the data zone area */
+ first_word = tvb_get_ntohs ( tvb, offset );
+
+ offset += CCSDS_PRIMARY_HEADER_LENGTH;
+ if ( first_word & HDR_SECHDR ) offset += CCSDS_SECONDARY_HEADER_LENGTH;
+ break;
+
+
+ default:
+ break;
+ }
+
+ /* build the ehs data zone tree for well known protocols such as AOS/LOS and UDSM */
+ ehs_data_zone_dissector ( protocol, ehs_tree, tvb, &offset, pinfo );
}
@@ -1178,740 +1189,735 @@ dissect_ehs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
void
proto_register_ehs(void)
{
- /* Setup list of header fields See Section 1.6.1 for details*/
- static hf_register_info hf[] =
- {
- /* primary ehs header */
- { &hf_ehs_ph_version,
- { "Version", "ehs.version",
- FT_UINT8, BASE_DEC, NULL, 0xf0,
- NULL, HFILL }
- },
- { &hf_ehs_ph_project,
- { "Project", "ehs.project",
- FT_UINT8, BASE_DEC, VALS(ehs_primary_header_project), 0x0f,
- NULL, HFILL }
- },
-
- { &hf_ehs_ph_support_mode,
- { "Support Mode", "ehs.support_mode",
- FT_UINT8, BASE_DEC, VALS(ehs_primary_header_support_mode), 0xf0,
- NULL, HFILL }
- },
- { &hf_ehs_ph_data_mode,
- { "Data Mode", "ehs.data_mode",
- FT_UINT8, BASE_DEC, VALS(ehs_primary_header_data_mode), 0x0f,
- NULL, HFILL }
- },
-
- { &hf_ehs_ph_mission,
- { "Mission", "ehs.mission",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
-
- { &hf_ehs_ph_protocol,
- { "Protocol", "ehs.protocol",
- FT_UINT8, BASE_DEC, VALS(ehs_primary_header_protocol), 0xff,
- NULL, HFILL }
- },
-
- { &hf_ehs_ph_year,
- { "Years since 1900", "ehs.year",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
-
- { &hf_ehs_ph_jday,
- { "Julian Day of Year", "ehs.jday",
- FT_UINT16, BASE_DEC, NULL, 0xffff,
- NULL, HFILL }
- },
-
- { &hf_ehs_ph_hour,
- { "Hour", "ehs.hour",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
-
- { &hf_ehs_ph_minute,
- { "Minute", "ehs.minute",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
-
- { &hf_ehs_ph_second,
- { "Second", "ehs.second",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
-
- { &hf_ehs_ph_tenths,
- { "Tenths", "ehs.tenths",
- FT_UINT8, BASE_DEC, NULL, 0xf0,
- NULL, HFILL }
- },
- { &hf_ehs_ph_new_data_flag,
- { "New Data Flag", "ehs.new_data_flag",
- FT_BOOLEAN, 8, NULL, 0x08,
- NULL, HFILL }
- },
- { &hf_ehs_ph_pad1,
- { "Pad1", "ehs.pad1",
- FT_UINT8, BASE_DEC, NULL, 0x04,
- NULL, HFILL }
- },
- { &hf_ehs_ph_hold_flag,
- { "Hold Flag", "ehs.hold_flag",
- FT_BOOLEAN, 8, NULL, 0x02,
- NULL, HFILL }
- },
- { &hf_ehs_ph_sign_flag,
- { "Sign Flag (1->CDT)", "ehs.sign_flag",
- FT_UINT8, BASE_DEC, NULL, 0x01,
- NULL, HFILL }
- },
-
- { &hf_ehs_ph_pad2,
- { "Pad2", "ehs.pad2",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
-
- { &hf_ehs_ph_pad3,
- { "Pad3", "ehs.pad3",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
-
- { &hf_ehs_ph_pad4,
- { "Pad4", "ehs.pad4",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
-
- { &hf_ehs_ph_hosc_packet_size,
- { "HOSC Packet Size", "ehs.hosc_packet_size",
- FT_UINT16, BASE_DEC, NULL, 0xffff,
- NULL, HFILL }
- },
-
-
- /* secondary ehs header */
- { &hf_ehs_sh_version,
- { "Version", "ehs2.version",
- FT_UINT8, BASE_DEC, NULL, 0xc0,
- NULL, HFILL }
- },
- { &hf_ehs_sh_data_status_bit_5,
- { "Data Status Bit 5", "ehs2.data_status_bit_5",
- FT_UINT8, BASE_DEC, NULL, 0x20,
- NULL, HFILL }
- },
- { &hf_ehs_sh_data_status_bit_4,
- { "Data Status Bit 4", "ehs2.data_status_bit_4",
- FT_UINT8, BASE_DEC, NULL, 0x10,
- NULL, HFILL }
- },
- { &hf_ehs_sh_data_status_bit_3,
- { "Data Status Bit 3", "ehs2.data_status_bit_3",
- FT_UINT8, BASE_DEC, NULL, 0x08,
- NULL, HFILL }
- },
- { &hf_ehs_sh_data_status_bit_2,
- { "Data Status Bit 2", "ehs2.data_status_bit_2",
- FT_UINT8, BASE_DEC, NULL, 0x04,
- NULL, HFILL }
- },
- { &hf_ehs_sh_data_status_bit_1,
- { "Data Status Bit 1", "ehs2.data_status_bit_1",
- FT_UINT8, BASE_DEC, NULL, 0x02,
- NULL, HFILL }
- },
- { &hf_ehs_sh_data_status_bit_0,
- { "Data Status Bit 0", "ehs2.data_status_bit_0",
- FT_UINT8, BASE_DEC, NULL, 0x01,
- NULL, HFILL }
- },
-
-
- /* other common remappings of the data status bits specific to certain secondary ehs header values */
- { &hf_ehs_sh_parent_stream_error,
- { "Parent Stream Error", "ehs2.parent_stream_error",
- FT_BOOLEAN, 8, NULL, 0x08,
- NULL, HFILL }
- },
- { &hf_ehs_sh_vcdu_sequence_error,
- { "VCDU Sequence Error", "ehs2.vcdu_sequence_error",
- FT_BOOLEAN, 8, NULL, 0x04,
- NULL, HFILL }
- },
- { &hf_ehs_sh_packet_sequence_error,
- { "Packet Sequence Error", "ehs2.packet_sequence_error",
- FT_UINT8, BASE_DEC, NULL, 0x02,
- NULL, HFILL }
- },
-
-
- /* common ehs secondary header values */
- { &hf_ehs_sh_vcdu_sequence_number,
- { "VCDU Sequence Number", "ehs2.vcdu_seqno",
- FT_UINT24, BASE_DEC, NULL, 0xffffff,
- NULL, HFILL }
- },
-
- { &hf_ehs_sh_data_stream_id,
- { "Data Stream ID", "ehs2.data_stream_id",
- FT_UINT8, BASE_DEC, VALS(ehs_secondary_header_data_stream_id), 0x80,
- NULL, HFILL }
- },
- { &hf_ehs_sh_pdss_reserved_1,
- { "Pdss Reserved 1", "ehs2.pdss_reserved_1",
- FT_UINT8, BASE_DEC, NULL, 0x7f,
- NULL, HFILL }
- },
-
- { &hf_ehs_sh_pdss_reserved_2,
- { "Pdss Reserved 2", "ehs2.pdss_reserved_2",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
-
- { &hf_ehs_sh_pdss_reserved_3,
- { "Pdss Reserved 3", "ehs2.pdss_reserved_3",
- FT_UINT16, BASE_DEC, NULL, 0xe000,
- NULL, HFILL }
- },
- { &hf_ehs_sh_gse_pkt_id,
- { "GSE Packet ID (1=GSE)", "ehs2.gse_pkt_id",
- FT_UINT16, BASE_DEC, NULL, 0x1000,
- NULL, HFILL }
- },
- { &hf_ehs_sh_payload_vs_core_id,
- { "Payload vs Core ID", "ehs2.payload_vs_core_id",
- FT_UINT16, BASE_DEC, VALS(ehs_secondary_header_payload_vs_core_id), 0x0800,
- NULL, HFILL }
- },
- { &hf_ehs_sh_apid,
- { "APID", "ehs2.apid",
- FT_UINT16, BASE_DEC, NULL, 0x07ff,
- NULL, HFILL }
- },
-
- { &hf_ehs_sh_virtual_channel,
- { "Virtual Channel", "ehs2.vcid",
- FT_UINT16, BASE_DEC, NULL, 0xffff,
- NULL, HFILL }
- },
-
- { &hf_ehs_sh_pdss_reserved_sync,
- { "Pdss Reserved Sync", "ehs2.sync",
- FT_UINT16, BASE_HEX, NULL, 0xffff,
- NULL, HFILL }
- },
-
-
- /* tdm ehs secondary header values */
- { &hf_ehs_sh_tdm_secondary_header_length,
- { "Secondary Header Length", "ehs2.tdm_secondary_header_length",
- FT_UINT16, BASE_DEC, NULL, 0xffff,
- NULL, HFILL }
- },
-
- { &hf_ehs_sh_tdm_extra_data_packet,
- { "Extra Data Packet", "ehs2.tdm_extra_data_packet",
- FT_BOOLEAN, 8, NULL, 0x80,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_backup_stream_id_number,
- { "Backup Stream ID Number", "ehs2.tdm_backup_stream_id_number",
- FT_UINT8, BASE_DEC, VALS(ehs_secondary_header_tdm_backup_stream_id), 0x60,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_end_of_data_flag,
- { "End of Data Flag", "ehs2tdm_end_of_data_flag.tdm_end_of_data_flag",
- FT_UINT8, BASE_DEC, VALS(ehs_secondary_header_tdm_end_of_data_flag), 0x18,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_parent_frame_error,
- { "Parent Frame Error", "ehs2.tdm_parent_frame_error",
- FT_BOOLEAN, 8, NULL, 0x04,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_checksum_error,
- { "Checksum Error", "ehs2.tdm_checksum_error",
- FT_BOOLEAN, 8, NULL, 0x02,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_fixed_value_error,
- { "Fixed Value Error", "ehs2.tdm_fixed_value_error",
- FT_BOOLEAN, 8, NULL, 0x01,
- NULL, HFILL }
- },
-
- { &hf_ehs_sh_tdm_minor_frame_counter_error,
- { "Minor Frame Counter Error", "ehs2.tdm_minor_frame_counter_error",
- FT_BOOLEAN, 8, NULL, 0x80,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_format_id_error,
- { "Format ID Error", "ehs2.tdm_format_id_error",
- FT_BOOLEAN, 8, NULL, 0x40,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_bit_slip_error,
- { "Bit Slip Error", "ehs2.tdm_bit_slip_error",
- FT_BOOLEAN, 8, NULL, 0x20,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_sync_error,
- { "Sync Error", "ehs2.tdm_sync_error",
- FT_BOOLEAN, 8, NULL, 0x10,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_aoslos_flag,
- { "AOS/LOS Flag", "ehs2.tdm_aoslos_flag",
- FT_BOOLEAN, 8, TFS(&ehs_tfs_secondary_header_tdm_aoslos_flag), 0x08,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_override_errors_flag,
- { "Override Errors", "ehs2.tdm_override_errors_flag",
- FT_BOOLEAN, 8, NULL, 0x04,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_data_status,
- { "Data Status", "ehs2.tdm_data_status",
- FT_UINT8, BASE_DEC, VALS(ehs_secondary_header_tdm_data_status), 0x03,
- NULL, HFILL }
- },
-
- { &hf_ehs_sh_tdm_idq,
- { "IDQ", "ehs2.tdm_idq",
- FT_UINT16, BASE_DEC, NULL, 0xffff,
- NULL, HFILL }
- },
-
- { &hf_ehs_sh_tdm_cdq,
- { "CDQ", "ehs2.tdm_cdq",
- FT_UINT16, BASE_DEC, NULL, 0xffff,
- NULL, HFILL }
- },
-
- { &hf_ehs_sh_tdm_adq,
- { "ADQ", "ehs2.tdm_adq",
- FT_UINT16, BASE_DEC, NULL, 0xffff,
- NULL, HFILL }
- },
-
- { &hf_ehs_sh_tdm_data_dq,
- { "Data DQ", "ehs2.tdm_data_dq",
- FT_UINT16, BASE_DEC, NULL, 0xffff,
- NULL, HFILL }
- },
-
- { &hf_ehs_sh_tdm_unused,
- { "Unused", "ehs2.tdm_unused",
- FT_UINT16, BASE_DEC, NULL, 0xffff,
- NULL, HFILL }
- },
-
- { &hf_ehs_sh_tdm_format_id,
- { "Format ID", "ehs2.tdm_format_id",
- FT_UINT16, BASE_HEX, NULL, 0xffff,
- NULL, HFILL }
- },
-
- { &hf_ehs_sh_tdm_major_frame_packet_index,
- { "Major Frame Packet Index", "ehs2.tdm_major_frame_packet_index",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
-
- { &hf_ehs_sh_tdm_numpkts_per_major_frame,
- { "Num Packets per Major Frame", "ehs2.tdm_numpkts_per_major_frame",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
-
- { &hf_ehs_sh_tdm_num_minor_frames_per_packet,
- { "Num Minor Frames per Packet", "ehs2.tdm_num_minor_frame_per_packet",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
-
- { &hf_ehs_sh_tdm_cntmet_present,
- { "CNT or MET Present", "ehs2.tdm_cntmet_present",
- FT_BOOLEAN, 8, NULL, 0x80,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_obt_present,
- { "OBT Present", "ehs2.tdm_obt_present",
- FT_BOOLEAN, 8, NULL, 0x40,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_major_frame_status_present,
- { "Major Frame Status Present", "ehs2.tdm_major_frame_status_present",
- FT_BOOLEAN, 8, NULL, 0x20,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_reserved,
- { "Reserved", "ehs2.tdm_reserved",
- FT_UINT8, BASE_DEC, NULL, 0x1f,
- NULL, HFILL }
- },
-
- { &hf_ehs_sh_tdm_cnt_year,
- { "CNT Years since 1900", "ehs2.tdm_cnt_year",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_cnt_jday,
- { "CNT Julian Day of Year", "ehs2.tdm_cnt_jday",
- FT_UINT16, BASE_DEC, NULL, 0xffff,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_cnt_hour,
- { "CNT Hour", "ehs2.tdm_cnt_hour",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_cnt_minute,
- { "CNT Minute", "ehs2.tdm_cnt_minute",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_cnt_second,
- { "CNT Second", "ehs2.tdm_cnt_second",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_cnt_tenths,
- { "CNT Tenths", "ehs2.tdm_cnt_tenths",
- FT_UINT8, BASE_DEC, NULL, 0xf0,
- NULL, HFILL }
- },
-
- { &hf_ehs_sh_tdm_obt_year,
- { "OBT Years since 1900", "ehs2.tdm_cnt_year",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_obt_jday,
- { "OBT Julian Day of Year", "ehs2.tdm_cnt_jday",
- FT_UINT16, BASE_DEC, NULL, 0xffff,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_obt_hour,
- { "OBT Hour", "ehs2.tdm_cnt_hour",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_obt_minute,
- { "OBT Minute", "ehs2.tdm_cnt_minute",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_obt_second,
- { "OBT Second", "ehs2.tdm_cnt_second",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_obt_tenths,
- { "OBT Tenths", "ehs2.tdm_cnt_tenths",
- FT_UINT8, BASE_DEC, NULL, 0xf0,
- NULL, HFILL }
- },
-
- { &hf_ehs_sh_tdm_obt_delta_time_flag,
- { "OBT is Delta Time Instead of GMT", "ehs2.tdm_obt_delta_time_flag",
- FT_BOOLEAN, 16, NULL, 0x8000,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_obt_computed_flag,
- { "OBT Computed", "ehs2.tdm_obt_computed_flag",
- FT_BOOLEAN, 16, NULL, 0x4000,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_obt_not_retrieved_flag,
- { "OBT Not Retrieved", "ehs2.tdm_obt_not_retrieved_flag",
- FT_BOOLEAN, 16, NULL, 0x2000,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_obt_reserved,
- { "OBT Reserved", "ehs2.tdm_obt_reserved",
- FT_BOOLEAN, 16, NULL, 0x1800,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_obt_source_apid,
- { "OBT Source APID", "ehs2.tdm_obt_source_apid",
- FT_UINT16, BASE_DEC, NULL, 0x07ff,
- NULL, HFILL }
- },
-
- { &hf_ehs_sh_tdm_num_major_frame_status_words,
- { "Number of Major Frame Status Words", "ehs2.tdm_num_major_frame_status_words",
- FT_UINT8, BASE_DEC, NULL, 0x0ff,
- NULL, HFILL }
- },
-
- { &hf_ehs_sh_tdm_mjfs_reserved,
- { "Reserved", "ehs2.tdm_mjfs_reserved",
- FT_UINT8, BASE_DEC, NULL, 0xf8,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_mjfs_parent_frame_error,
- { "Parent Frame Error", "ehs2.tdm_mjfs_parent_frame_error",
- FT_BOOLEAN, 8, NULL, 0x04,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_mjfs_checksum_error,
- { "Checksum Error", "ehs2.tdm_mjfs_checksum_error",
- FT_BOOLEAN, 8, NULL, 0x02,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_mjfs_fixed_value_error,
- { "Fixed Value Error", "ehs2.tdm_mjfs_fixed_value_error",
- FT_BOOLEAN, 8, NULL, 0x01,
- NULL, HFILL }
- },
-
- { &hf_ehs_sh_tdm_mnfs_parent_frame_error,
- { "Parent Frame Error", "ehs2.tdm_mnfs_parent_frame_error",
- FT_BOOLEAN, 8, NULL, 0x80,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_mnfs_data_not_available,
- { "Data Not Available", "ehs2.tdm_mnfs_data_not_available",
- FT_BOOLEAN, 8, NULL, 0x40,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_mnfs_checksum_error,
- { "Checksum Error", "ehs2.tdm_mnfs_checksum_error",
- FT_BOOLEAN, 8, NULL, 0x20,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_mnfs_fixed_value_error,
- { "Fixed Value Error", "ehs2.tdm_mnfs_fixed_value_error",
- FT_BOOLEAN, 8, NULL, 0x10,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_mnfs_counter_error,
- { "Counter Error", "ehs2.tdm_mnfs_counter_error",
- FT_BOOLEAN, 8, NULL, 0x08,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_mnfs_format_id_error,
- { "Format ID Error", "ehs2.tdm_mnfs_format_id_error",
- FT_BOOLEAN, 8, NULL, 0x04,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_mnfs_bit_slip_error,
- { "Bit Slip Error", "ehs2.tdm_mnfs_bit_slip_error",
- FT_BOOLEAN, 8, NULL, 0x02,
- NULL, HFILL }
- },
- { &hf_ehs_sh_tdm_mnfs_sync_error,
- { "Sync Error", "ehs2.tdm_mnfs_sync_error",
- FT_BOOLEAN, 8, NULL, 0x01,
- NULL, HFILL }
- },
-
-
- /* pseudo secondary header */
- { &hf_ehs_sh_pseudo_unused,
- { "Unused", "ehs2.pseudo_unused",
- FT_UINT16, BASE_DEC, NULL, 0xffff,
- NULL, HFILL }
- },
- { &hf_ehs_sh_pseudo_workstation_id,
- { "Workstation ID", "ehs2.pseudo_workstation_id",
- FT_UINT16, BASE_DEC, NULL, 0xffff,
- NULL, HFILL }
- },
- { &hf_ehs_sh_pseudo_user_id,
- { "User ID", "ehs2.pseudo_user_id",
- FT_UINT16, BASE_DEC, NULL, 0xffff,
- NULL, HFILL }
- },
- { &hf_ehs_sh_pseudo_comp_id,
- { "Comp ID", "ehs2.pseudo_comp_id",
- FT_UINT16, BASE_DEC, NULL, 0xffff,
- NULL, HFILL }
- },
-
-
- /* aos/los protocol data zone */
- { &hf_ehs_dz_aoslos_indicator,
- { "AOS/LOS Indicator", "dz.aoslos_indicator",
- FT_UINT8, BASE_DEC, VALS(ehs_data_zone_aoslos_indicator), 0x03,
- NULL, HFILL }
- },
-
-
- /* udsm protocol data zone */
- { &hf_ehs_dz_udsm_ccsds_vs_bpdu,
- { "CCSDS vs BPDU", "dz.udsm_ccsds_vs_bpdu",
- FT_UINT8, BASE_DEC, VALS(ehs_data_zone_udsm_ccsds_vs_bpdu), 0x80,
- NULL, HFILL }
- },
- { &hf_ehs_dz_udsm_unused1,
- { "Unused 1", "dz.udsm_unused1",
- FT_UINT8, BASE_DEC, NULL, 0x7f,
- NULL, HFILL }
- },
-
- { &hf_ehs_dz_udsm_unused2,
- { "Unused 2", "dz.udsm_unused2",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
-
- { &hf_ehs_dz_udsm_unused3,
- { "Unused 3", "dz.udsm_unused3",
- FT_UINT16, BASE_DEC, NULL, 0xe000,
- NULL, HFILL }
- },
- { &hf_ehs_dz_udsm_gse_pkt_id,
- { "GSE Pkt ID", "dz.udsm_gse_pkt_id",
- FT_BOOLEAN, 16, NULL, 0x1000,
- NULL, HFILL }
- },
- { &hf_ehs_dz_udsm_payload_vs_core,
- { "Payload vs Core", "dz.udsm_payload_vs_core",
- FT_UINT16, BASE_DEC, VALS(ehs_data_zone_udsm_payload_vs_core), 0x0800,
- NULL, HFILL }
- },
- { &hf_ehs_dz_udsm_apid,
- { "APID", "dz.udsm_apid",
- FT_UINT16, BASE_DEC, NULL, 0x07ff,
- NULL, HFILL }
- },
-
- { &hf_ehs_dz_udsm_start_time_year,
- { "Start Time Years since 1900", "dz.udsm_start_time_year",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
- { &hf_ehs_dz_udsm_start_time_jday,
- { "Start Time Julian Day", "dz.udsm_start_time_jday",
- FT_UINT16, BASE_DEC, NULL, 0xffff,
- NULL, HFILL }
- },
- { &hf_ehs_dz_udsm_start_time_hour,
- { "Start Time Hour", "dz.udsm_start_time_hour",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
- { &hf_ehs_dz_udsm_start_time_minute,
- { "Start Time Minute", "dz.udsm_start_time_minute",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
- { &hf_ehs_dz_udsm_start_time_second,
- { "Start Time Second", "dz.udsm_start_time_second",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
-
- { &hf_ehs_dz_udsm_stop_time_year,
- { "Stop Time Years since 1900", "dz.udsm_stop_time_year",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
- { &hf_ehs_dz_udsm_stop_time_jday,
- { "Stop Time Julian Day", "dz.udsm_stop_time_jday",
- FT_UINT16, BASE_DEC, NULL, 0xffff,
- NULL, HFILL }
- },
- { &hf_ehs_dz_udsm_stop_time_hour,
- { "Stop Time Hour", "dz.udsm_stop_time_hour",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
- { &hf_ehs_dz_udsm_stop_time_minute,
- { "Stop Time Minute", "dz.udsm_stop_time_minute",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
- { &hf_ehs_dz_udsm_stop_time_second,
- { "Stop Time Second", "dz.udsm_stop_time_second",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
-
- { &hf_ehs_dz_udsm_unused4,
- { "Unused 4", "dz.udsm_unused4",
- FT_UINT16, BASE_DEC, NULL, 0xffff,
- NULL, HFILL }
- },
-
- { &hf_ehs_dz_udsm_num_pkts_xmtd,
- { "Num Pkts Transmitted", "dz.udsm_num_pkts_xmtd",
- FT_UINT16, BASE_DEC, NULL, 0xffff,
- NULL, HFILL }
- },
-
- { &hf_ehs_dz_udsm_num_vcdu_seqerrs,
- { "Num VCDU Sequence Errors", "dz.udsm_num_vcdu_seqerrs",
- FT_UINT16, BASE_DEC, NULL, 0xffff,
- NULL, HFILL }
- },
-
- { &hf_ehs_dz_udsm_num_pkt_seqerrs,
- { "Num Packet Sequence Errors", "dz.udsm_num_pkt_seqerrs",
- FT_UINT16, BASE_DEC, NULL, 0xffff,
- NULL, HFILL }
- },
-
- { &hf_ehs_dz_udsm_num_pktlen_errors,
- { "Num Pkt Length Errors", "dz.udsm_num_pktlen_errors",
- FT_UINT16, BASE_DEC, NULL, 0xffff,
- NULL, HFILL }
- },
-
- { &hf_ehs_dz_udsm_event,
- { "UDSM Event Code", "dz.udsm_event",
- FT_UINT8, BASE_DEC, VALS(ehs_data_zone_udsm_event), 0xff,
- NULL, HFILL }
- },
-
- { &hf_ehs_dz_udsm_num_pkts_xmtd_rollover,
- { "Num Pkts Transmitted Rollover Counter", "dz.udsm_num_pkts_xmtd_rollover",
- FT_UINT8, BASE_DEC, NULL, 0xff,
- NULL, HFILL }
- },
-
- };
-
- /* Setup protocol subtree array */
- static gint *ett[] = {
- &ett_ehs,
- &ett_ehs_primary_header,
- &ett_ehs_secondary_header,
- &ett_ehs_data_zone
- };
-
- /* Register the protocol name and description */
- proto_ehs = proto_register_protocol("EHS", "EHS", "ehs");
-
- /* Required function calls to register the header fields and subtrees used */
- proto_register_field_array(proto_ehs, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
-
- /* XX: Does this dissector need to be publicly registered ?? */
- register_dissector ( "ehs", dissect_ehs, proto_ehs );
+ /* Setup list of header fields See Section 1.6.1 for details*/
+ static hf_register_info hf[] =
+ {
+ /* primary ehs header */
+ { &hf_ehs_ph_version,
+ { "Version", "ehs.version",
+ FT_UINT8, BASE_DEC, NULL, 0xf0,
+ NULL, HFILL }
+ },
+ { &hf_ehs_ph_project,
+ { "Project", "ehs.project",
+ FT_UINT8, BASE_DEC, VALS(ehs_primary_header_project), 0x0f,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_ph_support_mode,
+ { "Support Mode", "ehs.support_mode",
+ FT_UINT8, BASE_DEC, VALS(ehs_primary_header_support_mode), 0xf0,
+ NULL, HFILL }
+ },
+ { &hf_ehs_ph_data_mode,
+ { "Data Mode", "ehs.data_mode",
+ FT_UINT8, BASE_DEC, VALS(ehs_primary_header_data_mode), 0x0f,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_ph_mission,
+ { "Mission", "ehs.mission",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_ph_protocol,
+ { "Protocol", "ehs.protocol",
+ FT_UINT8, BASE_DEC, VALS(ehs_primary_header_protocol), 0xff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_ph_year,
+ { "Years since 1900", "ehs.year",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_ph_jday,
+ { "Julian Day of Year", "ehs.jday",
+ FT_UINT16, BASE_DEC, NULL, 0xffff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_ph_hour,
+ { "Hour", "ehs.hour",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_ph_minute,
+ { "Minute", "ehs.minute",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_ph_second,
+ { "Second", "ehs.second",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_ph_tenths,
+ { "Tenths", "ehs.tenths",
+ FT_UINT8, BASE_DEC, NULL, 0xf0,
+ NULL, HFILL }
+ },
+ { &hf_ehs_ph_new_data_flag,
+ { "New Data Flag", "ehs.new_data_flag",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ NULL, HFILL }
+ },
+ { &hf_ehs_ph_pad1,
+ { "Pad1", "ehs.pad1",
+ FT_UINT8, BASE_DEC, NULL, 0x04,
+ NULL, HFILL }
+ },
+ { &hf_ehs_ph_hold_flag,
+ { "Hold Flag", "ehs.hold_flag",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ NULL, HFILL }
+ },
+ { &hf_ehs_ph_sign_flag,
+ { "Sign Flag (1->CDT)", "ehs.sign_flag",
+ FT_UINT8, BASE_DEC, NULL, 0x01,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_ph_pad2,
+ { "Pad2", "ehs.pad2",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_ph_pad3,
+ { "Pad3", "ehs.pad3",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_ph_pad4,
+ { "Pad4", "ehs.pad4",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_ph_hosc_packet_size,
+ { "HOSC Packet Size", "ehs.hosc_packet_size",
+ FT_UINT16, BASE_DEC, NULL, 0xffff,
+ NULL, HFILL }
+ },
+
+
+ /* secondary ehs header */
+ { &hf_ehs_sh_version,
+ { "Version", "ehs2.version",
+ FT_UINT8, BASE_DEC, NULL, 0xc0,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_data_status_bit_5,
+ { "Data Status Bit 5", "ehs2.data_status_bit_5",
+ FT_UINT8, BASE_DEC, NULL, 0x20,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_data_status_bit_4,
+ { "Data Status Bit 4", "ehs2.data_status_bit_4",
+ FT_UINT8, BASE_DEC, NULL, 0x10,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_data_status_bit_3,
+ { "Data Status Bit 3", "ehs2.data_status_bit_3",
+ FT_UINT8, BASE_DEC, NULL, 0x08,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_data_status_bit_2,
+ { "Data Status Bit 2", "ehs2.data_status_bit_2",
+ FT_UINT8, BASE_DEC, NULL, 0x04,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_data_status_bit_1,
+ { "Data Status Bit 1", "ehs2.data_status_bit_1",
+ FT_UINT8, BASE_DEC, NULL, 0x02,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_data_status_bit_0,
+ { "Data Status Bit 0", "ehs2.data_status_bit_0",
+ FT_UINT8, BASE_DEC, NULL, 0x01,
+ NULL, HFILL }
+ },
+
+
+ /* other common remappings of the data status bits specific to certain secondary ehs header values */
+ { &hf_ehs_sh_parent_stream_error,
+ { "Parent Stream Error", "ehs2.parent_stream_error",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_vcdu_sequence_error,
+ { "VCDU Sequence Error", "ehs2.vcdu_sequence_error",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_packet_sequence_error,
+ { "Packet Sequence Error", "ehs2.packet_sequence_error",
+ FT_UINT8, BASE_DEC, NULL, 0x02,
+ NULL, HFILL }
+ },
+
+
+ /* common ehs secondary header values */
+ { &hf_ehs_sh_vcdu_sequence_number,
+ { "VCDU Sequence Number", "ehs2.vcdu_seqno",
+ FT_UINT24, BASE_DEC, NULL, 0xffffff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_sh_data_stream_id,
+ { "Data Stream ID", "ehs2.data_stream_id",
+ FT_UINT8, BASE_DEC, VALS(ehs_secondary_header_data_stream_id), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_pdss_reserved_1,
+ { "Pdss Reserved 1", "ehs2.pdss_reserved_1",
+ FT_UINT8, BASE_DEC, NULL, 0x7f,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_sh_pdss_reserved_2,
+ { "Pdss Reserved 2", "ehs2.pdss_reserved_2",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_sh_pdss_reserved_3,
+ { "Pdss Reserved 3", "ehs2.pdss_reserved_3",
+ FT_UINT16, BASE_DEC, NULL, 0xe000,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_gse_pkt_id,
+ { "GSE Packet ID (1=GSE)", "ehs2.gse_pkt_id",
+ FT_UINT16, BASE_DEC, NULL, 0x1000,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_payload_vs_core_id,
+ { "Payload vs Core ID", "ehs2.payload_vs_core_id",
+ FT_UINT16, BASE_DEC, VALS(ehs_secondary_header_payload_vs_core_id), 0x0800,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_apid,
+ { "APID", "ehs2.apid",
+ FT_UINT16, BASE_DEC, NULL, 0x07ff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_sh_virtual_channel,
+ { "Virtual Channel", "ehs2.vcid",
+ FT_UINT16, BASE_DEC, NULL, 0xffff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_sh_pdss_reserved_sync,
+ { "Pdss Reserved Sync", "ehs2.sync",
+ FT_UINT16, BASE_HEX, NULL, 0xffff,
+ NULL, HFILL }
+ },
+
+
+ /* tdm ehs secondary header values */
+ { &hf_ehs_sh_tdm_secondary_header_length,
+ { "Secondary Header Length", "ehs2.tdm_secondary_header_length",
+ FT_UINT16, BASE_DEC, NULL, 0xffff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_sh_tdm_extra_data_packet,
+ { "Extra Data Packet", "ehs2.tdm_extra_data_packet",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_backup_stream_id_number,
+ { "Backup Stream ID Number", "ehs2.tdm_backup_stream_id_number",
+ FT_UINT8, BASE_DEC, VALS(ehs_secondary_header_tdm_backup_stream_id), 0x60,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_end_of_data_flag,
+ { "End of Data Flag", "ehs2tdm_end_of_data_flag.tdm_end_of_data_flag",
+ FT_UINT8, BASE_DEC, VALS(ehs_secondary_header_tdm_end_of_data_flag), 0x18,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_parent_frame_error,
+ { "Parent Frame Error", "ehs2.tdm_parent_frame_error",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_checksum_error,
+ { "Checksum Error", "ehs2.tdm_checksum_error",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_fixed_value_error,
+ { "Fixed Value Error", "ehs2.tdm_fixed_value_error",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_sh_tdm_minor_frame_counter_error,
+ { "Minor Frame Counter Error", "ehs2.tdm_minor_frame_counter_error",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_format_id_error,
+ { "Format ID Error", "ehs2.tdm_format_id_error",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_bit_slip_error,
+ { "Bit Slip Error", "ehs2.tdm_bit_slip_error",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_sync_error,
+ { "Sync Error", "ehs2.tdm_sync_error",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_aoslos_flag,
+ { "AOS/LOS Flag", "ehs2.tdm_aoslos_flag",
+ FT_BOOLEAN, 8, TFS(&ehs_tfs_secondary_header_tdm_aoslos_flag), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_override_errors_flag,
+ { "Override Errors", "ehs2.tdm_override_errors_flag",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_data_status,
+ { "Data Status", "ehs2.tdm_data_status",
+ FT_UINT8, BASE_DEC, VALS(ehs_secondary_header_tdm_data_status), 0x03,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_sh_tdm_idq,
+ { "IDQ", "ehs2.tdm_idq",
+ FT_UINT16, BASE_DEC, NULL, 0xffff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_sh_tdm_cdq,
+ { "CDQ", "ehs2.tdm_cdq",
+ FT_UINT16, BASE_DEC, NULL, 0xffff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_sh_tdm_adq,
+ { "ADQ", "ehs2.tdm_adq",
+ FT_UINT16, BASE_DEC, NULL, 0xffff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_sh_tdm_data_dq,
+ { "Data DQ", "ehs2.tdm_data_dq",
+ FT_UINT16, BASE_DEC, NULL, 0xffff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_sh_tdm_unused,
+ { "Unused", "ehs2.tdm_unused",
+ FT_UINT16, BASE_DEC, NULL, 0xffff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_sh_tdm_format_id,
+ { "Format ID", "ehs2.tdm_format_id",
+ FT_UINT16, BASE_HEX, NULL, 0xffff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_sh_tdm_major_frame_packet_index,
+ { "Major Frame Packet Index", "ehs2.tdm_major_frame_packet_index",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_sh_tdm_numpkts_per_major_frame,
+ { "Num Packets per Major Frame", "ehs2.tdm_numpkts_per_major_frame",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_sh_tdm_num_minor_frames_per_packet,
+ { "Num Minor Frames per Packet", "ehs2.tdm_num_minor_frame_per_packet",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_sh_tdm_cntmet_present,
+ { "CNT or MET Present", "ehs2.tdm_cntmet_present",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_obt_present,
+ { "OBT Present", "ehs2.tdm_obt_present",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_major_frame_status_present,
+ { "Major Frame Status Present", "ehs2.tdm_major_frame_status_present",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_reserved,
+ { "Reserved", "ehs2.tdm_reserved",
+ FT_UINT8, BASE_DEC, NULL, 0x1f,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_sh_tdm_cnt_year,
+ { "CNT Years since 1900", "ehs2.tdm_cnt_year",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_cnt_jday,
+ { "CNT Julian Day of Year", "ehs2.tdm_cnt_jday",
+ FT_UINT16, BASE_DEC, NULL, 0xffff,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_cnt_hour,
+ { "CNT Hour", "ehs2.tdm_cnt_hour",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_cnt_minute,
+ { "CNT Minute", "ehs2.tdm_cnt_minute",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_cnt_second,
+ { "CNT Second", "ehs2.tdm_cnt_second",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_cnt_tenths,
+ { "CNT Tenths", "ehs2.tdm_cnt_tenths",
+ FT_UINT8, BASE_DEC, NULL, 0xf0,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_sh_tdm_obt_year,
+ { "OBT Years since 1900", "ehs2.tdm_cnt_year",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_obt_jday,
+ { "OBT Julian Day of Year", "ehs2.tdm_cnt_jday",
+ FT_UINT16, BASE_DEC, NULL, 0xffff,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_obt_hour,
+ { "OBT Hour", "ehs2.tdm_cnt_hour",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_obt_minute,
+ { "OBT Minute", "ehs2.tdm_cnt_minute",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_obt_second,
+ { "OBT Second", "ehs2.tdm_cnt_second",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_obt_tenths,
+ { "OBT Tenths", "ehs2.tdm_cnt_tenths",
+ FT_UINT8, BASE_DEC, NULL, 0xf0,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_sh_tdm_obt_delta_time_flag,
+ { "OBT is Delta Time Instead of GMT", "ehs2.tdm_obt_delta_time_flag",
+ FT_BOOLEAN, 16, NULL, 0x8000,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_obt_computed_flag,
+ { "OBT Computed", "ehs2.tdm_obt_computed_flag",
+ FT_BOOLEAN, 16, NULL, 0x4000,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_obt_not_retrieved_flag,
+ { "OBT Not Retrieved", "ehs2.tdm_obt_not_retrieved_flag",
+ FT_BOOLEAN, 16, NULL, 0x2000,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_obt_reserved,
+ { "OBT Reserved", "ehs2.tdm_obt_reserved",
+ FT_BOOLEAN, 16, NULL, 0x1800,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_obt_source_apid,
+ { "OBT Source APID", "ehs2.tdm_obt_source_apid",
+ FT_UINT16, BASE_DEC, NULL, 0x07ff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_sh_tdm_num_major_frame_status_words,
+ { "Number of Major Frame Status Words", "ehs2.tdm_num_major_frame_status_words",
+ FT_UINT8, BASE_DEC, NULL, 0x0ff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_sh_tdm_mjfs_reserved,
+ { "Reserved", "ehs2.tdm_mjfs_reserved",
+ FT_UINT8, BASE_DEC, NULL, 0xf8,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_mjfs_parent_frame_error,
+ { "Parent Frame Error", "ehs2.tdm_mjfs_parent_frame_error",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_mjfs_checksum_error,
+ { "Checksum Error", "ehs2.tdm_mjfs_checksum_error",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_mjfs_fixed_value_error,
+ { "Fixed Value Error", "ehs2.tdm_mjfs_fixed_value_error",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_sh_tdm_mnfs_parent_frame_error,
+ { "Parent Frame Error", "ehs2.tdm_mnfs_parent_frame_error",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_mnfs_data_not_available,
+ { "Data Not Available", "ehs2.tdm_mnfs_data_not_available",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_mnfs_checksum_error,
+ { "Checksum Error", "ehs2.tdm_mnfs_checksum_error",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_mnfs_fixed_value_error,
+ { "Fixed Value Error", "ehs2.tdm_mnfs_fixed_value_error",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_mnfs_counter_error,
+ { "Counter Error", "ehs2.tdm_mnfs_counter_error",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_mnfs_format_id_error,
+ { "Format ID Error", "ehs2.tdm_mnfs_format_id_error",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_mnfs_bit_slip_error,
+ { "Bit Slip Error", "ehs2.tdm_mnfs_bit_slip_error",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_tdm_mnfs_sync_error,
+ { "Sync Error", "ehs2.tdm_mnfs_sync_error",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ NULL, HFILL }
+ },
+
+
+ /* pseudo secondary header */
+ { &hf_ehs_sh_pseudo_unused,
+ { "Unused", "ehs2.pseudo_unused",
+ FT_UINT16, BASE_DEC, NULL, 0xffff,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_pseudo_workstation_id,
+ { "Workstation ID", "ehs2.pseudo_workstation_id",
+ FT_UINT16, BASE_DEC, NULL, 0xffff,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_pseudo_user_id,
+ { "User ID", "ehs2.pseudo_user_id",
+ FT_UINT16, BASE_DEC, NULL, 0xffff,
+ NULL, HFILL }
+ },
+ { &hf_ehs_sh_pseudo_comp_id,
+ { "Comp ID", "ehs2.pseudo_comp_id",
+ FT_UINT16, BASE_DEC, NULL, 0xffff,
+ NULL, HFILL }
+ },
+
+
+ /* aos/los protocol data zone */
+ { &hf_ehs_dz_aoslos_indicator,
+ { "AOS/LOS Indicator", "dz.aoslos_indicator",
+ FT_UINT8, BASE_DEC, VALS(ehs_data_zone_aoslos_indicator), 0x03,
+ NULL, HFILL }
+ },
+
+
+ /* udsm protocol data zone */
+ { &hf_ehs_dz_udsm_ccsds_vs_bpdu,
+ { "CCSDS vs BPDU", "dz.udsm_ccsds_vs_bpdu",
+ FT_UINT8, BASE_DEC, VALS(ehs_data_zone_udsm_ccsds_vs_bpdu), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_ehs_dz_udsm_unused1,
+ { "Unused 1", "dz.udsm_unused1",
+ FT_UINT8, BASE_DEC, NULL, 0x7f,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_dz_udsm_unused2,
+ { "Unused 2", "dz.udsm_unused2",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_dz_udsm_unused3,
+ { "Unused 3", "dz.udsm_unused3",
+ FT_UINT16, BASE_DEC, NULL, 0xe000,
+ NULL, HFILL }
+ },
+ { &hf_ehs_dz_udsm_gse_pkt_id,
+ { "GSE Pkt ID", "dz.udsm_gse_pkt_id",
+ FT_BOOLEAN, 16, NULL, 0x1000,
+ NULL, HFILL }
+ },
+ { &hf_ehs_dz_udsm_payload_vs_core,
+ { "Payload vs Core", "dz.udsm_payload_vs_core",
+ FT_UINT16, BASE_DEC, VALS(ehs_data_zone_udsm_payload_vs_core), 0x0800,
+ NULL, HFILL }
+ },
+ { &hf_ehs_dz_udsm_apid,
+ { "APID", "dz.udsm_apid",
+ FT_UINT16, BASE_DEC, NULL, 0x07ff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_dz_udsm_start_time_year,
+ { "Start Time Years since 1900", "dz.udsm_start_time_year",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+ { &hf_ehs_dz_udsm_start_time_jday,
+ { "Start Time Julian Day", "dz.udsm_start_time_jday",
+ FT_UINT16, BASE_DEC, NULL, 0xffff,
+ NULL, HFILL }
+ },
+ { &hf_ehs_dz_udsm_start_time_hour,
+ { "Start Time Hour", "dz.udsm_start_time_hour",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+ { &hf_ehs_dz_udsm_start_time_minute,
+ { "Start Time Minute", "dz.udsm_start_time_minute",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+ { &hf_ehs_dz_udsm_start_time_second,
+ { "Start Time Second", "dz.udsm_start_time_second",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_dz_udsm_stop_time_year,
+ { "Stop Time Years since 1900", "dz.udsm_stop_time_year",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+ { &hf_ehs_dz_udsm_stop_time_jday,
+ { "Stop Time Julian Day", "dz.udsm_stop_time_jday",
+ FT_UINT16, BASE_DEC, NULL, 0xffff,
+ NULL, HFILL }
+ },
+ { &hf_ehs_dz_udsm_stop_time_hour,
+ { "Stop Time Hour", "dz.udsm_stop_time_hour",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+ { &hf_ehs_dz_udsm_stop_time_minute,
+ { "Stop Time Minute", "dz.udsm_stop_time_minute",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+ { &hf_ehs_dz_udsm_stop_time_second,
+ { "Stop Time Second", "dz.udsm_stop_time_second",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_dz_udsm_unused4,
+ { "Unused 4", "dz.udsm_unused4",
+ FT_UINT16, BASE_DEC, NULL, 0xffff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_dz_udsm_num_pkts_xmtd,
+ { "Num Pkts Transmitted", "dz.udsm_num_pkts_xmtd",
+ FT_UINT16, BASE_DEC, NULL, 0xffff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_dz_udsm_num_vcdu_seqerrs,
+ { "Num VCDU Sequence Errors", "dz.udsm_num_vcdu_seqerrs",
+ FT_UINT16, BASE_DEC, NULL, 0xffff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_dz_udsm_num_pkt_seqerrs,
+ { "Num Packet Sequence Errors", "dz.udsm_num_pkt_seqerrs",
+ FT_UINT16, BASE_DEC, NULL, 0xffff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_dz_udsm_num_pktlen_errors,
+ { "Num Pkt Length Errors", "dz.udsm_num_pktlen_errors",
+ FT_UINT16, BASE_DEC, NULL, 0xffff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_dz_udsm_event,
+ { "UDSM Event Code", "dz.udsm_event",
+ FT_UINT8, BASE_DEC, VALS(ehs_data_zone_udsm_event), 0xff,
+ NULL, HFILL }
+ },
+
+ { &hf_ehs_dz_udsm_num_pkts_xmtd_rollover,
+ { "Num Pkts Transmitted Rollover Counter", "dz.udsm_num_pkts_xmtd_rollover",
+ FT_UINT8, BASE_DEC, NULL, 0xff,
+ NULL, HFILL }
+ },
+
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_ehs,
+ &ett_ehs_primary_header,
+ &ett_ehs_secondary_header,
+ &ett_ehs_data_zone
+ };
+
+ /* Register the protocol name and description */
+ proto_ehs = proto_register_protocol("EHS", "EHS", "ehs");
+
+ /* Required function calls to register the header fields and subtrees used */
+ proto_register_field_array(proto_ehs, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ /* XX: Does this dissector need to be publicly registered ?? */
+ register_dissector ( "ehs", dissect_ehs, proto_ehs );
}
-
-/* If this dissector uses sub-dissector registration add a registration routine.
- * This format is required because a script is used to find these routines and
- * create the code that calls these routines.
- */
void
proto_reg_handoff_ehs(void)
{
- dissector_add_handle ( "udp.port", find_dissector("ehs") ); /* for 'decode as' */
- ccsds_handle = find_dissector ( "ccsds" );
+ dissector_add_handle ( "udp.port", find_dissector("ehs") ); /* for 'decode as' */
+ ccsds_handle = find_dissector ( "ccsds" );
}
diff --git a/epan/dissectors/packet-eigrp.c b/epan/dissectors/packet-eigrp.c
index b051c6331b..0faebd301f 100644
--- a/epan/dissectors/packet-eigrp.c
+++ b/epan/dissectors/packet-eigrp.c
@@ -412,10 +412,10 @@ static const int *eigrp_stub_flag_fields[] = {
};
/* tid */
-static gint hf_eigrp_tidlist = -1;
+static gint hf_eigrp_tidlist_tid = -1;
static gint hf_eigrp_tidlist_flags = -1;
static gint hf_eigrp_tidlist_len = -1;
-static gint ett_eigrp_tidlist_flags = -1;
+static gint ett_eigrp_tidlist = -1;
/* 1.2 and 3.0 metric */
static gint hf_eigrp_legacy_metric_delay = -1;
@@ -589,7 +589,7 @@ static const value_string eigrp_vrid2string[] = {
{ EIGRP_VRID_AF_BASE, "(Address-Family)"},
{ EIGRP_VRID_SF_BASE, "(Service-Family)"},
{ EIGRP_VRID_MCAST_BASE, "(Multi-Cast)"},
- { -1, NULL}
+ { 0, NULL}
};
static const value_string eigrp_afi2string[] = {
@@ -600,7 +600,7 @@ static const value_string eigrp_afi2string[] = {
{ EIGRP_SF_COMMON, "Service Family"},
{ EIGRP_SF_IPv4, "IPv4 Service Family"},
{ EIGRP_SF_IPv6, "IPv6 Service Family"},
- { -1, NULL}
+ { 0, NULL}
};
static const value_string eigrp_attr_opcode2string[] = {
@@ -940,8 +940,9 @@ static void
dissect_eigrp_peer_tidlist (proto_tree *tree, tvbuff_t *tvb)
{
proto_item *sub_ti;
+ proto_tree *sub_tree;
int offset = 0;
- guint16 size, tid ;
+ guint16 size;
proto_tree_add_item(tree, hf_eigrp_tidlist_flags, tvb, offset, 2,
ENC_BIG_ENDIAN);
@@ -952,11 +953,11 @@ dissect_eigrp_peer_tidlist (proto_tree *tree, tvbuff_t *tvb)
ENC_BIG_ENDIAN);
offset += 2;
- sub_ti = proto_tree_add_item(tree, hf_eigrp_tidlist, tvb, offset,
- (size * 2), ENC_BIG_ENDIAN);
+ sub_ti = proto_tree_add_text(tree, tvb, offset, (size*2), "%d TIDs", size);
+ sub_tree = proto_item_add_subtree(sub_ti, ett_eigrp_tidlist);
for (; size ; size--) {
- tid = tvb_get_ntohs(tvb, offset);
- proto_item_append_text(sub_ti, " %u", tid);
+ proto_tree_add_item(sub_tree, hf_eigrp_tidlist_tid, tvb, offset, 2,
+ ENC_BIG_ENDIAN);
offset += 2;
}
}
@@ -2971,7 +2972,7 @@ proto_register_eigrp(void)
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* EIGRP 3.0 TIDLIST TLV (only survivor in MTR)
*/
- { &hf_eigrp_tidlist,
+ { &hf_eigrp_tidlist_tid,
{ "TID List", "eigrp.tidlist",
FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }
@@ -3331,7 +3332,7 @@ proto_register_eigrp(void)
&ett_eigrp_tlv_attr,
&ett_eigrp_tlv_extdata,
- &ett_eigrp_tidlist_flags,
+ &ett_eigrp_tidlist,
&ett_eigrp_stub_flags,
&ett_eigrp_saf_reachability,
diff --git a/epan/dissectors/packet-eiss.c b/epan/dissectors/packet-eiss.c
new file mode 100644
index 0000000000..da677c3c64
--- /dev/null
+++ b/epan/dissectors/packet-eiss.c
@@ -0,0 +1,593 @@
+/* packet-eiss.c
+ *
+ * Routines for ETV-AM EISS (OC-SP-ETV-AM1.0-I05)
+ * Copyright 2012, Weston Schmidt <weston_schmidt@alumni.purdue.edu>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+#include <epan/prefs.h>
+#include <epan/expert.h>
+#include <epan/dissectors/packet-mpeg-sect.h>
+
+static int proto_eiss = -1;
+static dissector_handle_t data_handle;
+
+static int hf_eiss_reserved2 = -1;
+static int hf_eiss_section_number = -1;
+static int hf_eiss_last_section_number = -1;
+static int hf_eiss_protocol_version_major = -1;
+static int hf_eiss_protocol_version_minor = -1;
+static int hf_eiss_application_type = -1;
+
+/* application_identifier() */
+static int hf_eiss_organisation_id = -1;
+static int hf_eiss_application_id = -1;
+
+static int hf_eiss_platform_id_length = -1;
+
+/* platform id information */
+static int hf_pdtHWManufacturer = -1;
+static int hf_pdtHWModel = -1;
+static int hf_pdtHWVersionMajor = -1;
+static int hf_pdtHWVersionMinor = -1;
+static int hf_pdtSWManufacturer = -1;
+static int hf_pdtSWModel = -1;
+static int hf_pdtSWVersionMajor = -1;
+static int hf_pdtSWVersionMinor = -1;
+static int hf_pdtProfile = -1;
+
+/* common to all eiss descriptors */
+static int hf_eiss_descriptor_tag = -1;
+static int hf_eiss_descriptor_length = -1;
+
+/* application info descriptor */
+static int hf_eiss_aid_app_control_code = -1;
+static int hf_eiss_aid_app_version_major = -1;
+static int hf_eiss_aid_app_version_minor = -1;
+static int hf_eiss_aid_max_proto_version_major = -1;
+static int hf_eiss_aid_max_proto_version_minor = -1;
+static int hf_eiss_aid_test_flag = -1;
+static int hf_eiss_aid_reserved = -1;
+static int hf_eiss_aid_priority = -1;
+static int hf_eiss_irl_type = -1;
+static int hf_eiss_irl_length = -1;
+static int hf_eiss_irl_string = -1;
+
+/* media time descriptor */
+static int hf_eiss_mtd_time_value = -1;
+
+/* stream event descriptor */
+static int hf_eiss_sed_time_value = -1;
+static int hf_eiss_sed_reserved = -1;
+static int hf_eiss_sed_descriptor_length = -1;
+
+static gint ett_eiss = -1;
+static gint ett_eiss_platform_id = -1;
+static gint ett_eiss_desc = -1;
+
+#define EISS_SECTION_TID 0xe0
+
+#define MPEG_SECT_SYNTAX_INDICATOR_MASK 0x8000
+#define MPEG_SECT_RESERVED_MASK 0x7000
+#define MPEG_SECT_LENGTH_MASK 0x0FFF
+
+static const value_string eiss_descriptor_values[] = {
+ { 0xe0, "ETV Application Information Descriptor" },
+ { 0xe1, "ETV Media Time Descriptor" },
+ { 0xe2, "ETV Stream Event Descriptor" },
+ { 0, NULL }
+};
+
+static const range_string application_id_values[] = {
+ { 0x0000, 0x3fff, "Unsigned Application" },
+ { 0x4000, 0x3fff, "Signed Application" },
+ { 0x8000, 0xfffd, "Reserved by DVB" },
+ { 0xfffe, 0xfffe, "Wildcard for signed applications of an organisation" },
+ { 0xffff, 0xffff, "Wildcard for all applications of an organisation" },
+ { 0, 0, NULL }
+};
+
+static const range_string aid_control_code_values[] = {
+ { 0x00, 0x00, "Reserved" },
+ { 0x01, 0x01, "AUTOSTART" },
+ { 0x02, 0x02, "PRESENT" },
+ { 0x03, 0x03, "DESTROY" },
+ { 0x04, 0xff, "Reserved" },
+ { 0, 0, NULL }
+};
+
+static guint
+dissect_etv_bif_platform_ids(tvbuff_t *tvb, proto_tree *tree, guint offset)
+{
+ proto_tree *platform_tree = NULL;
+ proto_item *pi;
+
+ pi = proto_tree_add_text(tree, tvb, offset, 15, "Platform Id");
+ platform_tree = proto_item_add_subtree(pi, ett_eiss_platform_id);
+ proto_tree_add_item(platform_tree, hf_pdtHWManufacturer, tvb, offset, 3, ENC_BIG_ENDIAN);
+ offset += 3;
+ proto_tree_add_item(platform_tree, hf_pdtHWModel, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(platform_tree, hf_pdtHWVersionMajor, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(platform_tree, hf_pdtHWVersionMinor, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(platform_tree, hf_pdtSWManufacturer, tvb, offset, 3, ENC_BIG_ENDIAN);
+ offset += 3;
+ proto_tree_add_item(platform_tree, hf_pdtSWModel, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(platform_tree, hf_pdtSWVersionMajor, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(platform_tree, hf_pdtSWVersionMinor, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(platform_tree, hf_pdtProfile, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ return 15;
+}
+
+static guint
+dissect_eiss_descriptors(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ guint offset)
+{
+ proto_item *pi;
+ proto_tree *sub_tree;
+ guint tag;
+
+ tag = tvb_get_guint8(tvb, offset);
+
+ if (0xe0 == tag) {
+ guint8 total_length;
+
+ total_length = tvb_get_guint8(tvb, offset+1);
+ pi = proto_tree_add_text(tree, tvb, offset, (2+total_length),
+ "ETV Application Information Descriptor");
+ sub_tree = proto_item_add_subtree(pi, ett_eiss_desc);
+ proto_tree_add_item(sub_tree, hf_eiss_descriptor_tag,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(sub_tree, hf_eiss_descriptor_length, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(sub_tree, hf_eiss_aid_app_control_code, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(sub_tree, hf_eiss_aid_app_version_major, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(sub_tree, hf_eiss_aid_app_version_minor, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(sub_tree, hf_eiss_aid_max_proto_version_major,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(sub_tree, hf_eiss_aid_max_proto_version_minor,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(sub_tree, hf_eiss_aid_test_flag, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(sub_tree, hf_eiss_aid_reserved, tvb, offset,
+ 3, ENC_BIG_ENDIAN);
+ offset += 3;
+ proto_tree_add_item(sub_tree, hf_eiss_aid_priority, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(sub_tree, hf_eiss_irl_type, tvb, offset, 2,
+ ENC_BIG_ENDIAN);
+ proto_tree_add_item(sub_tree, hf_eiss_irl_length, tvb, offset,
+ 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(sub_tree, hf_eiss_irl_string, tvb, offset, 2,
+ ENC_ASCII|ENC_NA);
+ return (2+total_length);
+ } else if (0xe1 == tag) {
+ pi = proto_tree_add_text(tree, tvb, offset, 6,
+ "ETV Media Time Descriptor");
+ sub_tree = proto_item_add_subtree(pi, ett_eiss_desc);
+ proto_tree_add_item(sub_tree, hf_eiss_descriptor_tag,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(sub_tree, hf_eiss_descriptor_length, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(sub_tree, hf_eiss_mtd_time_value, tvb,
+ offset, 4, ENC_BIG_ENDIAN);
+ return 6;
+ } else if (0xe2 == tag) {
+ guint16 tmp;
+ tvbuff_t *payload = NULL;
+
+ tmp = tvb_get_ntohs(tvb, offset+1);
+ pi = proto_tree_add_text(tree, tvb, offset, (3+tmp),
+ "ETV Stream Event Descriptor");
+ sub_tree = proto_item_add_subtree(pi, ett_eiss_desc);
+ proto_tree_add_item(sub_tree, hf_eiss_descriptor_tag,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(sub_tree, hf_eiss_sed_reserved, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(sub_tree, hf_eiss_sed_descriptor_length, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(sub_tree, hf_eiss_sed_time_value, tvb,
+ offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ payload = tvb_new_subset(tvb, offset, tmp-4, tmp-4);
+ call_dissector(data_handle, payload, pinfo, sub_tree);
+
+ return (3+tmp);
+ } else {
+ pi = proto_tree_add_text(tree, tvb, offset, -1,
+ "Unknown Descriptor");
+
+ PROTO_ITEM_SET_GENERATED(pi);
+ expert_add_info_format(pinfo, pi, PI_MALFORMED, PI_ERROR,
+ "Unknown Descriptor");
+
+ /* skip the rest of the section... for now */
+ return 1000;
+ }
+}
+
+static void
+dissect_eiss(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ guint offset = 0, packet_length, sect_len;
+ proto_item *ti = NULL;
+ proto_item *pi = NULL;
+ proto_tree *eiss_tree = NULL;
+ proto_item *items[PACKET_MPEG_SECT_PI__SIZE];
+ gboolean ssi;
+ guint reserved;
+ guint8 reserved2;
+ guint8 sect_num, last_sect_num;
+
+ guint16 eiss_application_type;
+ guint8 platform_id_length;
+
+ col_clear(pinfo->cinfo, COL_PROTOCOL);
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "EISS");
+
+ ti = proto_tree_add_item(tree, proto_eiss, tvb, offset, -1, ENC_NA);
+ eiss_tree = proto_item_add_subtree(ti, ett_eiss);
+
+ offset += packet_mpeg_sect_header_extra(tvb, offset, eiss_tree, &sect_len,
+ &reserved, &ssi, items);
+
+ packet_length = sect_len + 3 - 4; /* + for the header, - for the crc */
+
+ if (FALSE != ssi) {
+ proto_item *msg_error;
+ msg_error = items[PACKET_MPEG_SECT_PI__SSI];
+
+ PROTO_ITEM_SET_GENERATED(msg_error);
+ expert_add_info_format(pinfo, msg_error, PI_MALFORMED, PI_ERROR,
+ "Invalid section_syntax_indicator (should be 0)");
+ }
+
+ if (0 != reserved) {
+ proto_item *msg_error;
+ msg_error = items[PACKET_MPEG_SECT_PI__RESERVED];
+
+ PROTO_ITEM_SET_GENERATED(msg_error);
+ expert_add_info_format(pinfo, msg_error, PI_MALFORMED, PI_ERROR,
+ "Invalid reserved1 bits (should all be 0)");
+ }
+
+ if (1021 < sect_len) {
+ proto_item *msg_error;
+ msg_error = items[PACKET_MPEG_SECT_PI__LENGTH];
+
+ PROTO_ITEM_SET_GENERATED(msg_error);
+ expert_add_info_format(pinfo, msg_error, PI_MALFORMED, PI_ERROR,
+ "Invalid section_length (must not exceed 1021)");
+ }
+
+ reserved2 = tvb_get_guint8(tvb, offset);
+ pi = proto_tree_add_item(eiss_tree, hf_eiss_reserved2, tvb, offset, 1, ENC_BIG_ENDIAN);
+ if (0 != reserved2) {
+ PROTO_ITEM_SET_GENERATED(pi);
+ expert_add_info_format(pinfo, pi, PI_MALFORMED, PI_ERROR,
+ "Invalid reserved2 bits (should all be 0)");
+ }
+ offset++;
+
+ sect_num = tvb_get_guint8(tvb, offset);
+ last_sect_num = tvb_get_guint8(tvb, offset + 1);
+ pi = proto_tree_add_item(eiss_tree, hf_eiss_section_number, tvb, offset, 1, ENC_BIG_ENDIAN);
+ if (last_sect_num < sect_num) {
+ PROTO_ITEM_SET_GENERATED(pi);
+ expert_add_info_format(pinfo, pi, PI_MALFORMED, PI_ERROR,
+ "Invalid section_number (must be <= last_section_number)");
+ }
+ offset++;
+ proto_tree_add_item(eiss_tree, hf_eiss_last_section_number, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(eiss_tree, hf_eiss_protocol_version_major, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(eiss_tree, hf_eiss_protocol_version_minor, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ eiss_application_type = tvb_get_ntohs(tvb, offset);
+ pi = proto_tree_add_item(eiss_tree, hf_eiss_application_type, tvb, offset, 2, ENC_BIG_ENDIAN);
+ if (8 != eiss_application_type) {
+ PROTO_ITEM_SET_GENERATED(pi);
+ expert_add_info_format(pinfo, pi, PI_MALFORMED, PI_ERROR,
+ "Invalid application_type (must be 0x0008)");
+ }
+ offset += 2;
+ proto_tree_add_item(eiss_tree, hf_eiss_organisation_id, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ proto_tree_add_item(eiss_tree, hf_eiss_application_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ platform_id_length = tvb_get_guint8(tvb, offset);
+ pi = proto_tree_add_item(eiss_tree, hf_eiss_platform_id_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+ if (0 != platform_id_length % 15) {
+ PROTO_ITEM_SET_GENERATED(pi);
+ expert_add_info_format(pinfo, pi, PI_MALFORMED, PI_ERROR,
+ "Invalid platform_id_length (must be a multiple of sizeof(etv_bif_platform_ids) == 15)");
+ }
+ offset++;
+
+ while (0 < platform_id_length) {
+ guint tmp;
+
+ tmp = dissect_etv_bif_platform_ids(tvb, eiss_tree, offset);
+ offset += tmp;
+ if (platform_id_length < tmp) {
+ platform_id_length = 0;
+ /* error */
+ } else {
+ platform_id_length -= tmp;
+ }
+ }
+
+ if (0 < packet_length) {
+ proto_tree *eiss_desc_tree = NULL;
+ pi = proto_tree_add_text(eiss_tree, tvb, offset,
+ packet_length-offset,
+ "%s", "EISS Descriptor(s)");
+ eiss_desc_tree = proto_item_add_subtree(pi, ett_eiss_desc);
+ while (offset < packet_length) {
+ offset += dissect_eiss_descriptors(tvb, pinfo,
+ eiss_desc_tree, offset);
+ }
+ }
+
+ packet_mpeg_sect_crc(tvb, pinfo, eiss_tree, 0, sect_len - 1);
+}
+
+
+void
+proto_register_eiss(void)
+{
+
+ static hf_register_info hf[] = {
+ { &hf_eiss_reserved2, {
+ "Reserved", "eiss.reserved",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_eiss_section_number, {
+ "Section Number", "eiss.sect_num",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_eiss_last_section_number, {
+ "Last Section Number", "eiss.last_sect_num",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_eiss_protocol_version_major, {
+ "Major Version Number", "eiss.version_major",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_eiss_protocol_version_minor, {
+ "Minor Version Number", "eiss.version_minor",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_eiss_application_type, {
+ "Application Type", "eiss.app_type",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_eiss_organisation_id, {
+ "Organisation Id", "eiss.org_id",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_eiss_application_id, {
+ "Application Id", "eiss.app_id",
+ FT_UINT16, BASE_HEX|BASE_RANGE_STRING, RVALS(application_id_values), 0, NULL, HFILL
+ } },
+
+ { &hf_eiss_platform_id_length, {
+ "Platform Id Length", "eiss.platform_id_length",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_pdtHWManufacturer, {
+ "Platform Hardware Manufacturer", "eiss.plat_hw_man",
+ FT_UINT24, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_pdtHWModel, {
+ "Platform Hardware Model", "eiss.plat_hw_model",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_pdtHWVersionMajor, {
+ "Platform Hardware Major Version", "eiss.plat_hw_major",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_pdtHWVersionMinor, {
+ "Platform Hardware Minor Version", "eiss.plat_hw_minor",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_pdtSWManufacturer, {
+ "Platform Software Manufacturer", "eiss.plat_sw_man",
+ FT_UINT24, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_pdtSWModel, {
+ "Platform Software Model", "eiss.plat_sw_model",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_pdtSWVersionMajor, {
+ "Platform Software Major Version", "eiss.plat_sw_major",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_pdtSWVersionMinor, {
+ "Platform Software Minor Version", "eiss.plat_sw_minor",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_pdtProfile, {
+ "Platform Profile", "eiss.plat_profile",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_eiss_descriptor_tag, {
+ "EISS Descriptor Tag", "eiss.desc.tag",
+ FT_UINT8, BASE_HEX, VALS(eiss_descriptor_values), 0, NULL, HFILL
+ } },
+
+ { &hf_eiss_descriptor_length, {
+ "Descriptor Length", "eiss.desc.length",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_eiss_aid_app_control_code, {
+ "Application Control Code", "eiss.aid.app_control_code",
+ FT_UINT8, BASE_HEX|BASE_RANGE_STRING, RVALS(aid_control_code_values), 0, NULL, HFILL
+ } },
+
+ { &hf_eiss_aid_app_version_major, {
+ "Application Version Major", "eiss.aid.app_version_major",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_eiss_aid_app_version_minor, {
+ "Application Version Minor", "eiss.aid.app_version_minor",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_eiss_aid_max_proto_version_major, {
+ "Max Protocol Version Major", "eiss.aid.max_proto_version_major",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_eiss_aid_max_proto_version_minor, {
+ "Max Protocol Version Minor", "eiss.aid.max_proto_version_minor",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_eiss_aid_test_flag, {
+ "Application Test Flag", "eiss.aid.test_flag",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_eiss_aid_reserved, {
+ "Reserved", "eiss.aid.reserved",
+ FT_UINT24, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_eiss_aid_priority, {
+ "Application Priority", "eiss.aid.priority",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_eiss_irl_type, {
+ "Initial Resource Locator Type", "eiss.aid.irl.type",
+ FT_UINT16, BASE_HEX, NULL, 0xfc00, NULL, HFILL
+ } },
+
+ { &hf_eiss_irl_length, {
+ "Initial Resource Locator Length", "eiss.aid.irl.length",
+ FT_UINT16, BASE_DEC, NULL, 0x03ff, NULL, HFILL
+ } },
+
+ { &hf_eiss_irl_string, {
+ "Initial Resource Locator String", "eiss.aid.irl.string",
+ FT_UINT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_eiss_mtd_time_value, {
+ "Time Value (ms)", "eiss.mtd.time_value",
+ FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_eiss_sed_reserved, {
+ "Reserved", "eiss.sed.reserved",
+ FT_UINT16, BASE_DEC, NULL, 0xf000, NULL, HFILL
+ } },
+
+ { &hf_eiss_sed_descriptor_length, {
+ "Descriptor Length", "eiss.desc.length",
+ FT_UINT16, BASE_DEC, NULL, 0x0fff, NULL, HFILL
+ } },
+
+ { &hf_eiss_sed_time_value, {
+ "Time Value (ms)", "eiss.sed.time_value",
+ FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL
+ } }
+ };
+
+ static gint *ett[] = {
+ &ett_eiss,
+ &ett_eiss_platform_id,
+ &ett_eiss_desc,
+ };
+
+ proto_eiss = proto_register_protocol("ETV-AM EISS Section", "ETV-AM EISS", "eiss");
+
+ proto_register_field_array(proto_eiss, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+}
+
+
+void
+proto_reg_handoff_eiss(void)
+{
+ dissector_handle_t eiss_handle;
+
+ eiss_handle = create_dissector_handle(dissect_eiss, proto_eiss);
+ dissector_add_uint("mpeg_sect.tid", EISS_SECTION_TID, eiss_handle);
+ data_handle = find_dissector("data");
+}
+
diff --git a/epan/dissectors/packet-elcom.c b/epan/dissectors/packet-elcom.c
index 04eccd952d..1db4a92775 100644
--- a/epan/dissectors/packet-elcom.c
+++ b/epan/dissectors/packet-elcom.c
@@ -218,7 +218,7 @@ dissect_lower_address(proto_item *ti_arg, gint ett_arg,
/* SUFFIX */
suffix = tvb_get_string(tvb, offset+1, len2);
- ti = proto_tree_add_item(tree, hf_suff, tvb, offset, 1, TRUE);
+ ti = proto_tree_add_item(tree, hf_suff, tvb, offset, 1, ENC_ASCII|ENC_LITTLE_ENDIAN);
offset += len2+1;
if (!(suffix[0] == 'A' || suffix[0] == 'B')) {
@@ -388,7 +388,7 @@ dissect_datarequest(proto_item *ti_arg, gint ett_arg, tvbuff_t *tvb, gint arg_of
break;
if (tvb_length_remaining(tvb, offset+oidlen+1) <= 0)
return offset;
- proto_tree_add_item(tree, hf_elcom_datarequest_oid, tvb, offset, 1, ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_elcom_datarequest_oid, tvb, offset, 1, ENC_ASCII|ENC_NA);
offset += oidlen+1;
}
offset += 1; /* the loop exited at the 0 length byte */
diff --git a/epan/dissectors/packet-enc.c b/epan/dissectors/packet-enc.c
index 4e41f7b8e9..70482a394d 100644
--- a/epan/dissectors/packet-enc.c
+++ b/epan/dissectors/packet-enc.c
@@ -1,4 +1,5 @@
-/*
+/* packet-enc.c
+ *
* Copyright (c) 2003 Markus Friedl. All rights reserved.
*
* $Id$
@@ -23,6 +24,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
@@ -97,16 +99,16 @@ capture_enc(const guchar *pd, int len, packet_counts *ld)
static const value_string af_vals[] = {
{ BSD_ENC_INET, "IPv4" },
{ BSD_ENC_INET6, "IPv6" },
- { 0, NULL }
+ { 0, NULL }
};
static void
dissect_enc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- struct enchdr ench;
- tvbuff_t *next_tvb;
- proto_tree *enc_tree;
- proto_item *ti;
+ struct enchdr ench;
+ tvbuff_t *next_tvb;
+ proto_tree *enc_tree;
+ proto_item *ti;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "ENC");
@@ -120,16 +122,16 @@ dissect_enc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (tree) {
ti = proto_tree_add_protocol_format(tree, proto_enc, tvb, 0,
- ENC_HDRLEN,
- "Enc %s, SPI 0x%8.8x, %s%s%s%s",
- val_to_str(ench.af, af_vals, "unknown (%u)"),
- ench.spi,
- ench.flags ? "" : "unprotected",
- ench.flags & BSD_ENC_M_AUTH ? "authentic" : "",
- (ench.flags & (BSD_ENC_M_AUTH|BSD_ENC_M_CONF)) ==
- (BSD_ENC_M_AUTH|BSD_ENC_M_CONF) ? ", " : "",
- ench.flags & BSD_ENC_M_CONF ? "confidential" : ""
- );
+ ENC_HDRLEN,
+ "Enc %s, SPI 0x%8.8x, %s%s%s%s",
+ val_to_str(ench.af, af_vals, "unknown (%u)"),
+ ench.spi,
+ ench.flags ? "" : "unprotected",
+ ench.flags & BSD_ENC_M_AUTH ? "authentic" : "",
+ (ench.flags & (BSD_ENC_M_AUTH|BSD_ENC_M_CONF)) ==
+ (BSD_ENC_M_AUTH|BSD_ENC_M_CONF) ? ", " : "",
+ ench.flags & BSD_ENC_M_CONF ? "confidential" : ""
+ );
enc_tree = proto_item_add_subtree(ti, ett_enc);
proto_tree_add_uint(enc_tree, hf_enc_af, tvb,
@@ -179,7 +181,7 @@ proto_register_enc(void)
static gint *ett[] = { &ett_enc };
proto_enc = proto_register_protocol("OpenBSD Encapsulating device",
- "ENC", "enc");
+ "ENC", "enc");
proto_register_field_array(proto_enc, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
}
@@ -189,10 +191,10 @@ proto_reg_handoff_enc(void)
{
dissector_handle_t enc_handle;
- ip_handle = find_dissector("ip");
+ ip_handle = find_dissector("ip");
ipv6_handle = find_dissector("ipv6");
data_handle = find_dissector("data");
- enc_handle = create_dissector_handle(dissect_enc, proto_enc);
+ enc_handle = create_dissector_handle(dissect_enc, proto_enc);
dissector_add_uint("wtap_encap", WTAP_ENCAP_ENC, enc_handle);
}
diff --git a/epan/dissectors/packet-enip.c b/epan/dissectors/packet-enip.c
index 1bc601624a..33f5ad387d 100644
--- a/epan/dissectors/packet-enip.c
+++ b/epan/dissectors/packet-enip.c
@@ -90,58 +90,58 @@
/* Initialize the protocol and registered fields */
-static int proto_enip = -1;
-static int proto_cipsafety = -1;
-
-static int hf_enip_command = -1;
-static int hf_enip_length = -1;
-static int hf_enip_options = -1;
-static int hf_enip_sendercontex = -1;
-static int hf_enip_status = -1;
-static int hf_enip_session = -1;
-static int hf_enip_encapver = -1;
-static int hf_enip_sinfamily = -1;
-static int hf_enip_sinport = -1;
-static int hf_enip_sinaddr = -1;
-static int hf_enip_sinzero = -1;
-static int hf_enip_timeout = -1;
-static int hf_enip_encap_data = -1;
-
-static int hf_enip_lir_vendor = -1;
-static int hf_enip_lir_devtype = -1;
-static int hf_enip_lir_prodcode = -1;
-static int hf_enip_lir_revision = -1;
-static int hf_enip_lir_status = -1;
-static int hf_enip_lir_serial = -1;
-static int hf_enip_lir_namelen = -1;
-static int hf_enip_lir_name = -1;
-static int hf_enip_lir_state = -1;
-
-static int hf_enip_lsr_capaflags = -1;
-static int hf_enip_lsr_tcp = -1;
-static int hf_enip_lsr_udp = -1;
+static int proto_enip = -1;
+static int proto_cipsafety = -1;
+
+static int hf_enip_command = -1;
+static int hf_enip_length = -1;
+static int hf_enip_options = -1;
+static int hf_enip_sendercontex = -1;
+static int hf_enip_status = -1;
+static int hf_enip_session = -1;
+static int hf_enip_encapver = -1;
+static int hf_enip_sinfamily = -1;
+static int hf_enip_sinport = -1;
+static int hf_enip_sinaddr = -1;
+static int hf_enip_sinzero = -1;
+static int hf_enip_timeout = -1;
+static int hf_enip_encap_data = -1;
+
+static int hf_enip_lir_vendor = -1;
+static int hf_enip_lir_devtype = -1;
+static int hf_enip_lir_prodcode = -1;
+static int hf_enip_lir_revision = -1;
+static int hf_enip_lir_status = -1;
+static int hf_enip_lir_serial = -1;
+static int hf_enip_lir_namelen = -1;
+static int hf_enip_lir_name = -1;
+static int hf_enip_lir_state = -1;
+
+static int hf_enip_lsr_capaflags = -1;
+static int hf_enip_lsr_tcp = -1;
+static int hf_enip_lsr_udp = -1;
static int hf_enip_lsr_servicename = -1;
-static int hf_enip_rs_version = -1;
-static int hf_enip_rs_optionflags = -1;
+static int hf_enip_rs_version = -1;
+static int hf_enip_rs_optionflags = -1;
-static int hf_enip_srrd_ifacehnd = -1;
+static int hf_enip_srrd_ifacehnd = -1;
-static int hf_enip_sud_ifacehnd = -1;
+static int hf_enip_sud_ifacehnd = -1;
-static int hf_enip_cpf_itemcount = -1;
-static int hf_enip_cpf_typeid = -1;
-static int hf_enip_cpf_length = -1;
-static int hf_enip_cpf_cdi_seqcnt = -1;
+static int hf_enip_cpf_itemcount = -1;
+static int hf_enip_cpf_typeid = -1;
+static int hf_enip_cpf_length = -1;
+static int hf_enip_cpf_cdi_seqcnt = -1;
static int hf_enip_cpf_cdi_32bitheader = -1;
static int hf_enip_cpf_cdi_32bitheader_roo = -1;
static int hf_enip_cpf_cdi_32bitheader_coo = -1;
static int hf_enip_cpf_cdi_32bitheader_run_idle = -1;
-static int hf_enip_cpf_cai_connid = -1;
-static int hf_enip_cpf_sai_connid = -1;
-static int hf_enip_cpf_sai_seqnum = -1;
+static int hf_enip_cpf_cai_connid = -1;
+static int hf_enip_cpf_sai_connid = -1;
+static int hf_enip_cpf_sai_seqnum = -1;
-static int hf_enip_cpf_data = -1;
+static int hf_enip_cpf_data = -1;
static int hf_enip_response_in = -1;
static int hf_enip_response_to = -1;
@@ -149,107 +149,107 @@ static int hf_enip_time = -1;
static int hf_enip_connection_transport_data = -1;
/* Parsed Attributes */
-static int hf_tcpip_status = -1;
-static int hf_tcpip_status_interface_config = -1;
-static int hf_tcpip_status_mcast_pending = -1;
-static int hf_tcpip_status_interface_config_pending = -1;
-static int hf_tcpip_status_acd = -1;
-static int hf_tcpip_status_reserved = -1;
-static int hf_tcpip_config_cap = -1;
-static int hf_tcpip_config_cap_bootp = -1;
-static int hf_tcpip_config_cap_dns = -1;
-static int hf_tcpip_config_cap_dhcp = -1;
-static int hf_tcpip_config_cap_dhcp_dns_update = -1;
-static int hf_tcpip_config_cap_config_settable = -1;
-static int hf_tcpip_config_cap_hardware_config = -1;
-static int hf_tcpip_config_cap_interface_reset = -1;
-static int hf_tcpip_config_cap_acd = -1;
-static int hf_tcpip_config_cap_reserved = -1;
-static int hf_tcpip_config_control = -1;
-static int hf_tcpip_config_control_config = -1;
-static int hf_tcpip_config_control_dns = -1;
-static int hf_tcpip_config_control_reserved = -1;
-static int hf_tcpip_physical_link_size = -1;
-static int hf_tcpip_ic_ip_addr = -1;
-static int hf_tcpip_ic_subnet_mask = -1;
-static int hf_tcpip_ic_gateway = -1;
-static int hf_tcpip_ic_name_server = -1;
-static int hf_tcpip_ic_name_server2 = -1;
-static int hf_tcpip_ic_domain_name = -1;
-static int hf_tcpip_hostname = -1;
-static int hf_tcpip_ttl_value = -1;
-static int hf_tcpip_mcast_alloc = -1;
-static int hf_tcpip_mcast_reserved = -1;
-static int hf_tcpip_mcast_num_mcast = -1;
-static int hf_tcpip_mcast_addr_start = -1;
-static int hf_tcpip_lcd_acd_activity = -1;
-static int hf_tcpip_lcd_remote_mac = -1;
-static int hf_tcpip_lcd_arp_pdu = -1;
-static int hf_tcpip_select_acd = -1;
-static int hf_tcpip_quick_connect = -1;
-
-static int hf_elink_interface_flags = -1;
-static int hf_elink_iflags_link_status = -1;
-static int hf_elink_iflags_duplex = -1;
-static int hf_elink_iflags_neg_status = -1;
-static int hf_elink_iflags_manual_reset = -1;
-static int hf_elink_iflags_local_hw_fault = -1;
-static int hf_elink_iflags_reserved = -1;
-static int hf_elink_interface_speed = -1;
-static int hf_elink_physical_address = -1;
-static int hf_elink_icount_in_octets = -1;
-static int hf_elink_icount_in_ucast = -1;
-static int hf_elink_icount_in_nucast = -1;
-static int hf_elink_icount_in_discards = -1;
-static int hf_elink_icount_in_errors = -1;
-static int hf_elink_icount_in_unknown_protos = -1;
-static int hf_elink_icount_out_octets = -1;
-static int hf_elink_icount_out_ucast = -1;
-static int hf_elink_icount_out_nucast = -1;
-static int hf_elink_icount_out_discards = -1;
-static int hf_elink_icount_out_errors = -1;
-static int hf_elink_mcount_alignment_errors = -1;
-static int hf_elink_mcount_fcs_errors = -1;
-static int hf_elink_mcount_single_collisions = -1;
-static int hf_elink_mcount_multiple_collisions = -1;
-static int hf_elink_mcount_sqe_test_errors = -1;
-static int hf_elink_mcount_deferred_transmission = -1;
-static int hf_elink_mcount_late_collisions = -1;
-static int hf_elink_mcount_excessive_collisions = -1;
-static int hf_elink_mcount_mac_transmit_errors = -1;
-static int hf_elink_mcount_carrier_sense_errors = -1;
-static int hf_elink_mcount_frame_too_long = -1;
-static int hf_elink_mcount_mac_receive_errors = -1;
-static int hf_elink_icontrol_control_bits = -1;
-static int hf_elink_icontrol_control_bits_auto_neg = -1;
+static int hf_tcpip_status = -1;
+static int hf_tcpip_status_interface_config = -1;
+static int hf_tcpip_status_mcast_pending = -1;
+static int hf_tcpip_status_interface_config_pending = -1;
+static int hf_tcpip_status_acd = -1;
+static int hf_tcpip_status_reserved = -1;
+static int hf_tcpip_config_cap = -1;
+static int hf_tcpip_config_cap_bootp = -1;
+static int hf_tcpip_config_cap_dns = -1;
+static int hf_tcpip_config_cap_dhcp = -1;
+static int hf_tcpip_config_cap_dhcp_dns_update = -1;
+static int hf_tcpip_config_cap_config_settable = -1;
+static int hf_tcpip_config_cap_hardware_config = -1;
+static int hf_tcpip_config_cap_interface_reset = -1;
+static int hf_tcpip_config_cap_acd = -1;
+static int hf_tcpip_config_cap_reserved = -1;
+static int hf_tcpip_config_control = -1;
+static int hf_tcpip_config_control_config = -1;
+static int hf_tcpip_config_control_dns = -1;
+static int hf_tcpip_config_control_reserved = -1;
+static int hf_tcpip_physical_link_size = -1;
+static int hf_tcpip_ic_ip_addr = -1;
+static int hf_tcpip_ic_subnet_mask = -1;
+static int hf_tcpip_ic_gateway = -1;
+static int hf_tcpip_ic_name_server = -1;
+static int hf_tcpip_ic_name_server2 = -1;
+static int hf_tcpip_ic_domain_name = -1;
+static int hf_tcpip_hostname = -1;
+static int hf_tcpip_ttl_value = -1;
+static int hf_tcpip_mcast_alloc = -1;
+static int hf_tcpip_mcast_reserved = -1;
+static int hf_tcpip_mcast_num_mcast = -1;
+static int hf_tcpip_mcast_addr_start = -1;
+static int hf_tcpip_lcd_acd_activity = -1;
+static int hf_tcpip_lcd_remote_mac = -1;
+static int hf_tcpip_lcd_arp_pdu = -1;
+static int hf_tcpip_select_acd = -1;
+static int hf_tcpip_quick_connect = -1;
+
+static int hf_elink_interface_flags = -1;
+static int hf_elink_iflags_link_status = -1;
+static int hf_elink_iflags_duplex = -1;
+static int hf_elink_iflags_neg_status = -1;
+static int hf_elink_iflags_manual_reset = -1;
+static int hf_elink_iflags_local_hw_fault = -1;
+static int hf_elink_iflags_reserved = -1;
+static int hf_elink_interface_speed = -1;
+static int hf_elink_physical_address = -1;
+static int hf_elink_icount_in_octets = -1;
+static int hf_elink_icount_in_ucast = -1;
+static int hf_elink_icount_in_nucast = -1;
+static int hf_elink_icount_in_discards = -1;
+static int hf_elink_icount_in_errors = -1;
+static int hf_elink_icount_in_unknown_protos = -1;
+static int hf_elink_icount_out_octets = -1;
+static int hf_elink_icount_out_ucast = -1;
+static int hf_elink_icount_out_nucast = -1;
+static int hf_elink_icount_out_discards = -1;
+static int hf_elink_icount_out_errors = -1;
+static int hf_elink_mcount_alignment_errors = -1;
+static int hf_elink_mcount_fcs_errors = -1;
+static int hf_elink_mcount_single_collisions = -1;
+static int hf_elink_mcount_multiple_collisions = -1;
+static int hf_elink_mcount_sqe_test_errors = -1;
+static int hf_elink_mcount_deferred_transmission = -1;
+static int hf_elink_mcount_late_collisions = -1;
+static int hf_elink_mcount_excessive_collisions = -1;
+static int hf_elink_mcount_mac_transmit_errors = -1;
+static int hf_elink_mcount_carrier_sense_errors = -1;
+static int hf_elink_mcount_frame_too_long = -1;
+static int hf_elink_mcount_mac_receive_errors = -1;
+static int hf_elink_icontrol_control_bits = -1;
+static int hf_elink_icontrol_control_bits_auto_neg = -1;
static int hf_elink_icontrol_control_bits_forced_duplex = -1;
-static int hf_elink_icontrol_control_bits_reserved = -1;
-static int hf_elink_icontrol_forced_speed = -1;
-static int hf_elink_interface_type = -1;
-static int hf_elink_interface_state = -1;
-static int hf_elink_admin_state = -1;
-static int hf_elink_interface_label = -1;
-
-static int hf_qos_8021q_enable = -1;
-static int hf_qos_dscp_ptp_event = -1;
-static int hf_qos_dscp_ptp_general = -1;
-static int hf_qos_dscp_urgent = -1;
-static int hf_qos_dscp_scheduled = -1;
-static int hf_qos_dscp_high = -1;
-static int hf_qos_dscp_low = -1;
-static int hf_qos_dscp_explicit = -1;
+static int hf_elink_icontrol_control_bits_reserved = -1;
+static int hf_elink_icontrol_forced_speed = -1;
+static int hf_elink_interface_type = -1;
+static int hf_elink_interface_state = -1;
+static int hf_elink_admin_state = -1;
+static int hf_elink_interface_label = -1;
+
+static int hf_qos_8021q_enable = -1;
+static int hf_qos_dscp_ptp_event = -1;
+static int hf_qos_dscp_ptp_general = -1;
+static int hf_qos_dscp_urgent = -1;
+static int hf_qos_dscp_scheduled = -1;
+static int hf_qos_dscp_high = -1;
+static int hf_qos_dscp_low = -1;
+static int hf_qos_dscp_explicit = -1;
/* Initialize the subtree pointers */
-static gint ett_enip = -1;
-static gint ett_count_tree = -1;
-static gint ett_type_tree = -1;
-static gint ett_command_tree = -1;
-static gint ett_sockadd = -1;
+static gint ett_enip = -1;
+static gint ett_count_tree = -1;
+static gint ett_type_tree = -1;
+static gint ett_command_tree = -1;
+static gint ett_sockadd = -1;
static gint ett_32bitheader_tree = -1;
-static gint ett_lsrcf = -1;
-static gint ett_tcpip_status = -1;
-static gint ett_tcpip_config_cap = -1;
-static gint ett_tcpip_config_control = -1;
+static gint ett_lsrcf = -1;
+static gint ett_tcpip_status = -1;
+static gint ett_tcpip_config_cap = -1;
+static gint ett_tcpip_config_control = -1;
static gint ett_elink_interface_flags = -1;
static gint ett_elink_icontrol_bits = -1;
@@ -260,31 +260,31 @@ static dissector_handle_t arp_handle;
static dissector_handle_t cipsafety_handle;
static dissector_handle_t cipmotion_handle;
-static gboolean enip_desegment = TRUE;
+static gboolean enip_desegment = TRUE;
static gboolean enip_OTrun_idle = TRUE;
static gboolean enip_TOrun_idle = FALSE;
-static int proto_dlr = -1;
+static int proto_dlr = -1;
-static int hf_dlr_ringsubtype = -1;
+static int hf_dlr_ringsubtype = -1;
static int hf_dlr_ringprotoversion = -1;
-static int hf_dlr_frametype = -1;
-static int hf_dlr_sourceport = -1;
-static int hf_dlr_sourceip = -1;
-static int hf_dlr_sequenceid = -1;
+static int hf_dlr_frametype = -1;
+static int hf_dlr_sourceport = -1;
+static int hf_dlr_sourceip = -1;
+static int hf_dlr_sequenceid = -1;
-static int hf_dlr_ringstate = -1;
+static int hf_dlr_ringstate = -1;
static int hf_dlr_supervisorprecedence = -1;
-static int hf_dlr_beaconinterval = -1;
-static int hf_dlr_beacontimeout = -1;
-static int hf_dlr_beaconreserved = -1;
+static int hf_dlr_beaconinterval = -1;
+static int hf_dlr_beacontimeout = -1;
+static int hf_dlr_beaconreserved = -1;
-static int hf_dlr_nreqreserved = -1;
+static int hf_dlr_nreqreserved = -1;
static int hf_dlr_nressourceport = -1;
-static int hf_dlr_nresreserved = -1;
+static int hf_dlr_nresreserved = -1;
-static int hf_dlr_lnknbrstatus = -1;
+static int hf_dlr_lnknbrstatus = -1;
static int hf_dlr_lnknbrreserved = -1;
static int hf_dlr_lfreserved = -1;
@@ -292,8 +292,8 @@ static int hf_dlr_lfreserved = -1;
static int hf_dlr_anreserved = -1;
static int hf_dlr_sonumnodes = -1;
-static int hf_dlr_somac = -1;
-static int hf_dlr_soip = -1;
+static int hf_dlr_somac = -1;
+static int hf_dlr_soip = -1;
static int hf_dlr_soreserved = -1;
static gint ett_dlr = -1;
@@ -316,12 +316,12 @@ static const value_string encap_cmd_vals[] = {
/* Translate function to string - Encapsulation status */
static const value_string encap_status_vals[] = {
- { SUCCESS, "Success" },
- { INVALID_CMD, "Invalid Command" },
- { NO_RESOURCES, "No Memory Resources" },
- { INCORRECT_DATA, "Incorrect Data" },
- { INVALID_SESSION, "Invalid Session Handle" },
- { INVALID_LENGTH, "Invalid Length" },
+ { SUCCESS, "Success" },
+ { INVALID_CMD, "Invalid Command" },
+ { NO_RESOURCES, "No Memory Resources" },
+ { INCORRECT_DATA, "Incorrect Data" },
+ { INVALID_SESSION, "Invalid Session Handle" },
+ { INVALID_LENGTH, "Invalid Length" },
{ UNSUPPORTED_PROT_REV, "Unsupported Protocol Revision" },
{ 0, NULL }
@@ -329,15 +329,15 @@ static const value_string encap_status_vals[] = {
/* Translate function to Common data format values */
static const value_string cdf_type_vals[] = {
- { CDF_NULL, "Null Address Item" },
- { LIST_IDENTITY_RESP, "List Identity Response" },
- { CONNECTION_BASED, "Connected Address Item" },
- { CONNECTION_TRANSPORT, "Connected Data Item" },
- { UNCONNECTED_MSG, "Unconnected Data Item" },
- { LIST_SERVICES_RESP, "List Services Response" },
+ { CDF_NULL, "Null Address Item" },
+ { LIST_IDENTITY_RESP, "List Identity Response" },
+ { CONNECTION_BASED, "Connected Address Item" },
+ { CONNECTION_TRANSPORT, "Connected Data Item" },
+ { UNCONNECTED_MSG, "Unconnected Data Item" },
+ { LIST_SERVICES_RESP, "List Services Response" },
{ SOCK_ADR_INFO_OT, "Socket Address Info O->T" },
{ SOCK_ADR_INFO_TO, "Socket Address Info T->O" },
- { SEQ_ADDRESS, "Sequenced Address Item" },
+ { SEQ_ADDRESS, "Sequenced Address Item" },
{ 0, NULL }
};
@@ -453,13 +453,13 @@ static const value_string enip_interface_handle_vals[] = {
/* Translate function to DLR Frame Type values */
static const value_string dlr_frame_type_vals[] = {
- { DLR_FT_BEACON, "Beacon" },
- { DLR_FT_NEIGHBOR_REQ, "Neighbor_Check_Request" },
- { DLR_FT_NEIGHBOR_RES, "Neighbor_Check_Response" },
+ { DLR_FT_BEACON, "Beacon" },
+ { DLR_FT_NEIGHBOR_REQ, "Neighbor_Check_Request" },
+ { DLR_FT_NEIGHBOR_RES, "Neighbor_Check_Response" },
{ DLR_FT_LINK_STAT, "Link_Status / Neighbor_Status" },
- { DLR_FT_LOCATE_FLT, "Locate_Fault" },
- { DLR_FT_ANNOUNCE, "Announce" },
- { DLR_FT_SIGN_ON, "Sign_On" },
+ { DLR_FT_LOCATE_FLT, "Locate_Fault" },
+ { DLR_FT_ANNOUNCE, "Announce" },
+ { DLR_FT_SIGN_ON, "Sign_On" },
{ 0, NULL }
};
@@ -498,7 +498,7 @@ enum enip_packet_type {ENIP_REQUEST_PACKET, ENIP_RESPONSE_PACKET, ENIP_CANNOT_CL
enum enip_packet_data_type { EPDT_UNKNOWN, EPDT_CONNECTED_TRANSPORT, EPDT_UNCONNECTED };
typedef struct enip_request_key {
- enum enip_packet_type requesttype;
+ enum enip_packet_type requesttype;
enum enip_packet_data_type type;
guint32 session_handle;
guint64 sender_context;
@@ -571,8 +571,8 @@ enip_request_hash (gconstpointer v)
static enip_request_info_t *
enip_match_request( packet_info *pinfo, proto_tree *tree, enip_request_key_t *prequest_key )
{
- enip_request_key_t *new_request_key;
- enip_request_val_t *request_val;
+ enip_request_key_t *new_request_key;
+ enip_request_val_t *request_val;
enip_request_info_t *request_info = NULL;
request_info = NULL;
@@ -716,11 +716,11 @@ enip_conn_hash (gconstpointer v)
void
enip_open_cip_connection( packet_info *pinfo, cip_conn_info_t* connInfo)
{
- enip_conn_key_t *conn_key;
- enip_conn_val_t *conn_val;
- conversation_t *conversation, *conversationTO;
+ enip_conn_key_t *conn_key;
+ enip_conn_val_t *conn_val;
+ conversation_t *conversation, *conversationTO;
enip_conv_info_t *enip_info;
- address dest_address;
+ address dest_address;
if (pinfo->fd->flags.visited)
return;
@@ -772,12 +772,12 @@ enip_open_cip_connection( packet_info *pinfo, cip_conn_info_t* connInfo)
/* check for O->T conversation */
/* similar logic to find_or_create_conversation(), but since I/O traffic
is on UDP, the pinfo parameter doesn't have the correct information */
- if((conversation = find_conversation(pinfo->fd->num, &pinfo->dst, &dest_address,
- PT_UDP, connInfo->O2T.port, 0, NO_PORT_B)) == NULL) {
+ if((conversation = find_conversation(pinfo->fd->num, &pinfo->dst, &dest_address,
+ PT_UDP, connInfo->O2T.port, 0, NO_PORT_B)) == NULL) {
- conversation = conversation_new(pinfo->fd->num, &pinfo->dst, &dest_address,
- PT_UDP, connInfo->O2T.port, 0, NO_PORT2);
- }
+ conversation = conversation_new(pinfo->fd->num, &pinfo->dst, &dest_address,
+ PT_UDP, connInfo->O2T.port, 0, NO_PORT2);
+ }
enip_info = conversation_get_proto_data(conversation, proto_enip);
if (enip_info == NULL)
@@ -796,11 +796,11 @@ enip_open_cip_connection( packet_info *pinfo, cip_conn_info_t* connInfo)
or ports aren't equal, a separate conversation must be generated */
dest_address.data = &connInfo->T2O.ipaddress;
if((conversationTO = find_conversation(pinfo->fd->num, &pinfo->src, &dest_address,
- PT_UDP, connInfo->T2O.port, 0, NO_PORT_B)) == NULL) {
+ PT_UDP, connInfo->T2O.port, 0, NO_PORT_B)) == NULL) {
conversationTO = conversation_new(pinfo->fd->num, &pinfo->src,
- &dest_address, PT_UDP,
- connInfo->T2O.port, 0, NO_PORT2);
+ &dest_address, PT_UDP,
+ connInfo->T2O.port, 0, NO_PORT2);
}
enip_info = conversation_get_proto_data(conversationTO, proto_enip);
@@ -846,7 +846,7 @@ void
enip_close_cip_connection(packet_info *pinfo, guint16 ConnSerialNumber,
guint16 VendorID, guint32 DeviceSerialNumber )
{
- enip_conn_key_t conn_key;
+ enip_conn_key_t conn_key;
enip_conn_val_t *conn_val;
if (pinfo->fd->flags.visited)
@@ -868,9 +868,9 @@ enip_close_cip_connection(packet_info *pinfo, guint16 ConnSerialNumber,
static guint32
enip_get_explicit_connid(packet_info *pinfo, enip_request_key_t *prequest_key, guint32 connid)
{
- conversation_t *conversation;
+ conversation_t *conversation;
enip_conv_info_t *enip_info;
- enip_conn_val_t *conn_val;
+ enip_conn_val_t *conn_val;
if ( prequest_key == NULL
|| ( prequest_key->requesttype != ENIP_REQUEST_PACKET && prequest_key->requesttype != ENIP_RESPONSE_PACKET )
@@ -922,9 +922,9 @@ enip_get_explicit_connid(packet_info *pinfo, enip_request_key_t *prequest_key, g
static enip_conn_val_t*
enip_get_io_connid(packet_info *pinfo, guint32 connid, enum enip_connid_type* pconnid_type)
{
- conversation_t *conversation;
+ conversation_t *conversation;
enip_conv_info_t *enip_info;
- enip_conn_val_t *conn_val = NULL;
+ enip_conn_val_t *conn_val = NULL;
*pconnid_type = ECIDT_UNKNOWN;
@@ -972,8 +972,8 @@ int dissect_tcpip_status(packet_info *pinfo, proto_tree *tree, proto_item *item,
int offset, int total_len)
{
- proto_item* status_item;
- proto_tree* status_tree;
+ proto_item *status_item;
+ proto_tree *status_tree;
if (total_len < 4)
{
@@ -996,8 +996,8 @@ int dissect_tcpip_config_cap(packet_info *pinfo, proto_tree *tree, proto_item *i
int offset, int total_len)
{
- proto_item* cap_item;
- proto_tree* cap_tree;
+ proto_item *cap_item;
+ proto_tree *cap_tree;
if (total_len < 4)
{
@@ -1024,8 +1024,8 @@ int dissect_tcpip_config_control(packet_info *pinfo, proto_tree *tree, proto_ite
int offset, int total_len)
{
- proto_item* control_item;
- proto_tree* control_tree;
+ proto_item *control_item;
+ proto_tree *control_tree;
if (total_len < 4)
{
@@ -1046,8 +1046,8 @@ int dissect_tcpip_physical_link(packet_info *pinfo, proto_tree *tree, proto_item
int offset, int total_len)
{
- guint16 path_size;
- proto_item* path_item;
+ guint16 path_size;
+ proto_item *path_item;
path_size = tvb_get_letohs( tvb, offset)*2;
proto_tree_add_uint_format_value(tree, hf_tcpip_physical_link_size, tvb, offset, 2, path_size / 2, "%d (words)", path_size / 2);
@@ -1136,8 +1136,8 @@ int dissect_elink_interface_flags(packet_info *pinfo, proto_tree *tree, proto_it
int offset, int total_len)
{
- proto_item* flag_item;
- proto_tree* flag_tree;
+ proto_item *flag_item;
+ proto_tree *flag_tree;
if (total_len < 4)
{
@@ -1210,8 +1210,8 @@ int dissect_elink_interface_control(packet_info *pinfo, proto_tree *tree, proto_
int offset, int total_len)
{
- proto_item* control_item;
- proto_tree* control_tree;
+ proto_item *control_item;
+ proto_tree *control_tree;
if (total_len < 4)
{
@@ -1232,39 +1232,39 @@ int dissect_elink_interface_control(packet_info *pinfo, proto_tree *tree, proto_
attribute_info_t enip_attribute_vals[29] = {
/* TCP/IP object */
- {0xF5, FALSE, 1, "Status", cip_dissector_func, NULL, dissect_tcpip_status},
- {0xF5, FALSE, 2, "Configuration Capability", cip_dissector_func, NULL, dissect_tcpip_config_cap},
- {0xF5, FALSE, 3, "Configuration Control", cip_dissector_func, NULL, dissect_tcpip_config_control},
- {0xF5, FALSE, 4, "Physical Link Object", cip_dissector_func, NULL, dissect_tcpip_physical_link},
- {0xF5, FALSE, 5, "Interface Configuration", cip_dissector_func, NULL, dissect_tcpip_interface_config},
- {0xF5, FALSE, 6, "Host Name", cip_string, &hf_tcpip_hostname, NULL},
- {0xF5, FALSE, 8, "TTL Value", cip_usint, &hf_tcpip_ttl_value, NULL},
- {0xF5, FALSE, 9, "Multicast Configuration", cip_dissector_func, NULL, dissect_tcpip_mcast_config},
+ {0xF5, FALSE, 1, "Status", cip_dissector_func, NULL, dissect_tcpip_status},
+ {0xF5, FALSE, 2, "Configuration Capability", cip_dissector_func, NULL, dissect_tcpip_config_cap},
+ {0xF5, FALSE, 3, "Configuration Control", cip_dissector_func, NULL, dissect_tcpip_config_control},
+ {0xF5, FALSE, 4, "Physical Link Object", cip_dissector_func, NULL, dissect_tcpip_physical_link},
+ {0xF5, FALSE, 5, "Interface Configuration", cip_dissector_func, NULL, dissect_tcpip_interface_config},
+ {0xF5, FALSE, 6, "Host Name", cip_string, &hf_tcpip_hostname, NULL},
+ {0xF5, FALSE, 8, "TTL Value", cip_usint, &hf_tcpip_ttl_value, NULL},
+ {0xF5, FALSE, 9, "Multicast Configuration", cip_dissector_func, NULL, dissect_tcpip_mcast_config},
{0xF5, FALSE, 10, "Select ACD", cip_bool, &hf_tcpip_select_acd, NULL},
{0xF5, FALSE, 11, "Last Conflict Detected", cip_dissector_func, NULL, dissect_tcpip_last_conflict},
{0xF5, FALSE, 12, "EtherNet/IP Quick Connect", cip_bool, &hf_tcpip_quick_connect, NULL},
/* Ethernet Link object */
- {0xF6, FALSE, 1, "Interface Speed", cip_dword, &hf_elink_interface_speed, NULL},
- {0xF6, FALSE, 2, "Interface Flags", cip_dissector_func, NULL, dissect_elink_interface_flags},
- {0xF6, FALSE, 3, "Physical Address", cip_byte_array, &hf_elink_physical_address, NULL},
- {0xF6, FALSE, 4, "Interface Counters", cip_dissector_func, NULL, dissect_elink_interface_counters},
- {0xF6, FALSE, 5, "Media Counters", cip_dissector_func, NULL, dissect_elink_media_counters},
- {0xF6, FALSE, 6, "Interface Control", cip_dissector_func, NULL, dissect_elink_interface_control},
- {0xF6, FALSE, 7, "Interface Type", cip_usint, &hf_elink_interface_type, NULL},
- {0xF6, FALSE, 8, "Interface State", cip_usint, &hf_elink_interface_state, NULL},
- {0xF6, FALSE, 9, "Admin State", cip_usint, &hf_elink_admin_state, NULL},
+ {0xF6, FALSE, 1, "Interface Speed", cip_dword, &hf_elink_interface_speed, NULL},
+ {0xF6, FALSE, 2, "Interface Flags", cip_dissector_func, NULL, dissect_elink_interface_flags},
+ {0xF6, FALSE, 3, "Physical Address", cip_byte_array, &hf_elink_physical_address, NULL},
+ {0xF6, FALSE, 4, "Interface Counters", cip_dissector_func, NULL, dissect_elink_interface_counters},
+ {0xF6, FALSE, 5, "Media Counters", cip_dissector_func, NULL, dissect_elink_media_counters},
+ {0xF6, FALSE, 6, "Interface Control", cip_dissector_func, NULL, dissect_elink_interface_control},
+ {0xF6, FALSE, 7, "Interface Type", cip_usint, &hf_elink_interface_type, NULL},
+ {0xF6, FALSE, 8, "Interface State", cip_usint, &hf_elink_interface_state, NULL},
+ {0xF6, FALSE, 9, "Admin State", cip_usint, &hf_elink_admin_state, NULL},
{0xF6, FALSE, 10, "Interface Label", cip_short_string, &hf_elink_interface_label, NULL},
/* QoS object */
- {0x48, FALSE, 1, "802.1Q Tag Enable", cip_bool, &hf_qos_8021q_enable, NULL},
- {0x48, FALSE, 2, "DSCP PTP Event", cip_usint, &hf_qos_dscp_ptp_event, NULL},
- {0x48, FALSE, 3, "DSCP PTP General", cip_usint, &hf_qos_dscp_ptp_general, NULL},
- {0x48, FALSE, 4, "DSCP Urgent", cip_usint, &hf_qos_dscp_urgent, NULL},
- {0x48, FALSE, 5, "DSCP Scheduled", cip_usint, &hf_qos_dscp_scheduled, NULL},
- {0x48, FALSE, 6, "DSCP High", cip_usint, &hf_qos_dscp_high, NULL},
- {0x48, FALSE, 7, "DSCP Low", cip_usint, &hf_qos_dscp_low, NULL},
- {0x48, FALSE, 8, "DSCP Explicit", cip_usint, &hf_qos_dscp_explicit, NULL}
+ {0x48, FALSE, 1, "802.1Q Tag Enable", cip_bool, &hf_qos_8021q_enable, NULL},
+ {0x48, FALSE, 2, "DSCP PTP Event", cip_usint, &hf_qos_dscp_ptp_event, NULL},
+ {0x48, FALSE, 3, "DSCP PTP General", cip_usint, &hf_qos_dscp_ptp_general, NULL},
+ {0x48, FALSE, 4, "DSCP Urgent", cip_usint, &hf_qos_dscp_urgent, NULL},
+ {0x48, FALSE, 5, "DSCP Scheduled", cip_usint, &hf_qos_dscp_scheduled, NULL},
+ {0x48, FALSE, 6, "DSCP High", cip_usint, &hf_qos_dscp_high, NULL},
+ {0x48, FALSE, 7, "DSCP Low", cip_usint, &hf_qos_dscp_low, NULL},
+ {0x48, FALSE, 8, "DSCP Explicit", cip_usint, &hf_qos_dscp_explicit, NULL}
};
@@ -1291,17 +1291,17 @@ static void
dissect_cpf(enip_request_key_t *request_key, int command, tvbuff_t *tvb,
packet_info *pinfo, proto_tree *tree, proto_tree *dissector_tree, int offset, guint32 ifacehndl)
{
- proto_item *temp_item, *count_item, *type_item, *sockaddr_item, *io_item;
- proto_tree *temp_tree, *count_tree, *item_tree, *sockaddr_tree, *io_tree;
- int item_count, item_length, item, io_length;
- unsigned char name_length;
- tvbuff_t *next_tvb;
- enip_request_info_t *request_info;
- enip_conn_val_t* conn_info = NULL;
- gboolean FwdOpen = FALSE,
- FwdOpenReply = FALSE;
- enum enip_connid_type connid_type = ECIDT_UNKNOWN;
- cip_safety_info_t* cip_safety;
+ proto_item *temp_item, *count_item, *type_item, *sockaddr_item, *io_item;
+ proto_tree *temp_tree, *count_tree, *item_tree, *sockaddr_tree, *io_tree;
+ int item_count, item_length, item, io_length;
+ unsigned char name_length;
+ tvbuff_t *next_tvb;
+ enip_request_info_t *request_info;
+ enip_conn_val_t* conn_info = NULL;
+ gboolean FwdOpen = FALSE;
+ gboolean FwdOpenReply = FALSE;
+ enum enip_connid_type connid_type = ECIDT_UNKNOWN;
+ cip_safety_info_t* cip_safety;
/* Create item count tree */
item_count = tvb_get_letohs( tvb, offset );
@@ -1698,12 +1698,12 @@ get_enip_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
static void
dissect_enip_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- int packet_type;
- guint16 encap_cmd, encap_data_length;
- const char *pkt_type_str = "";
- guint32 ifacehndl;
- enip_request_key_t request_key;
- conversation_t *conversation;
+ int packet_type;
+ guint16 encap_cmd, encap_data_length;
+ const char *pkt_type_str = "";
+ guint32 ifacehndl;
+ enip_request_key_t request_key;
+ conversation_t *conversation;
/* Set up structures needed to add the protocol subtree and manage it */
proto_item *ti, *encaph, *csf;
@@ -2064,152 +2064,682 @@ proto_register_enip(void)
{
/* Setup list of header fields */
static hf_register_info hf[] = {
- { &hf_enip_command, { "Command", "enip.command", FT_UINT16, BASE_HEX, VALS(encap_cmd_vals), 0, "Encapsulation command", HFILL }},
- { &hf_enip_length, { "Length", "enip.length", FT_UINT16, BASE_DEC, NULL, 0, "Encapsulation length", HFILL }},
- { &hf_enip_session, { "Session Handle", "enip.session", FT_UINT32, BASE_HEX, NULL, 0, "Session identification", HFILL }},
- { &hf_enip_status, { "Status", "enip.status", FT_UINT32, BASE_HEX, VALS(encap_status_vals), 0, "Status code", HFILL }},
- { &hf_enip_sendercontex, { "Sender Context", "enip.context", FT_BYTES, BASE_NONE, NULL, 0, "Information pertient to the sender", HFILL }},
- { &hf_enip_options, { "Options", "enip.options", FT_UINT32, BASE_HEX, NULL, 0, "Options flags", HFILL }},
- { &hf_enip_encapver, { "Encapsulation Version", "enip.encapver", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_enip_sinfamily, { "sin_family", "enip.sinfamily", FT_UINT16, BASE_DEC, NULL, 0, "Socket Address.Sin Family", HFILL }},
- { &hf_enip_sinport, { "sin_port", "enip.sinport", FT_UINT16, BASE_DEC, NULL, 0, "Socket Address.Sin Port", HFILL }},
- { &hf_enip_sinaddr, { "sin_addr", "enip.sinaddr", FT_IPv4, BASE_NONE, NULL, 0, "Socket Address.Sin Addr", HFILL }},
- { &hf_enip_sinzero, { "sin_zero", "enip.sinzero", FT_BYTES, BASE_NONE, NULL, 0, "Socket Address.Sin Zero", HFILL }},
- { &hf_enip_timeout, { "Timeout", "enip.timeout", FT_UINT16, BASE_DEC, NULL, 0, "Encapsulation Timeout", HFILL }},
- { &hf_enip_encap_data, { "Encap Data", "enip.encap_data", FT_BYTES, BASE_NONE, NULL, 0, "Encapsulation Data", HFILL }},
+ { &hf_enip_command,
+ { "Command", "enip.command",
+ FT_UINT16, BASE_HEX, VALS(encap_cmd_vals), 0,
+ "Encapsulation command", HFILL }},
+
+ { &hf_enip_length,
+ { "Length", "enip.length",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "Encapsulation length", HFILL }},
+
+ { &hf_enip_session,
+ { "Session Handle", "enip.session",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ "Session identification", HFILL }},
+
+ { &hf_enip_status,
+ { "Status", "enip.status",
+ FT_UINT32, BASE_HEX, VALS(encap_status_vals), 0,
+ "Status code", HFILL }},
+
+ { &hf_enip_sendercontex,
+ { "Sender Context", "enip.context",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "Information pertient to the sender", HFILL }},
+
+ { &hf_enip_options,
+ { "Options", "enip.options",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ "Options flags", HFILL }},
+
+ { &hf_enip_encapver,
+ { "Encapsulation Version", "enip.encapver",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_enip_sinfamily,
+ { "sin_family", "enip.sinfamily",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "Socket Address.Sin Family", HFILL }},
+
+ { &hf_enip_sinport,
+ { "sin_port", "enip.sinport",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "Socket Address.Sin Port", HFILL }},
+
+ { &hf_enip_sinaddr,
+ { "sin_addr", "enip.sinaddr",
+ FT_IPv4, BASE_NONE, NULL, 0,
+ "Socket Address.Sin Addr", HFILL }},
+
+ { &hf_enip_sinzero,
+ { "sin_zero", "enip.sinzero",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "Socket Address.Sin Zero", HFILL }},
+
+ { &hf_enip_timeout,
+ { "Timeout", "enip.timeout",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "Encapsulation Timeout", HFILL }},
+
+ { &hf_enip_encap_data,
+ { "Encap Data", "enip.encap_data",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "Encapsulation Data", HFILL }},
+
/* List Services Reply */
- { &hf_enip_lsr_capaflags, { "Capability Flags", "enip.lsr.capaflags", FT_UINT16, BASE_HEX, NULL, 0, "ListServices Reply: Capability Flags", HFILL }},
- { &hf_enip_lsr_tcp, { "Supports CIP Encapsulation via TCP", "enip.lsr.capaflags.tcp", FT_BOOLEAN, 16, TFS(&tfs_true_false), 0x0020, "ListServices Reply: Supports CIP Encapsulation via TCP", HFILL }},
- { &hf_enip_lsr_udp, { "Supports CIP Class 0 or 1 via UDP", "enip.lsr.capaflags.udp", FT_BOOLEAN, 16, TFS(&tfs_true_false), 0x0100, "ListServices Reply: Supports CIP Class 0 or 1 via UDP", HFILL }},
- { &hf_enip_lsr_servicename, { "Name of Service", "enip.lsr.servicename", FT_STRING, BASE_NONE, NULL, 0, "ListServices Reply: Name of Service", HFILL }},
+ { &hf_enip_lsr_capaflags,
+ { "Capability Flags", "enip.lsr.capaflags",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "ListServices Reply: Capability Flags", HFILL }},
+
+ { &hf_enip_lsr_tcp,
+ { "Supports CIP Encapsulation via TCP", "enip.lsr.capaflags.tcp",
+ FT_BOOLEAN, 16, TFS(&tfs_true_false), 0x0020,
+ "ListServices Reply: Supports CIP Encapsulation via TCP", HFILL }},
+
+ { &hf_enip_lsr_udp,
+ { "Supports CIP Class 0 or 1 via UDP", "enip.lsr.capaflags.udp",
+ FT_BOOLEAN, 16, TFS(&tfs_true_false), 0x0100,
+ "ListServices Reply: Supports CIP Class 0 or 1 via UDP", HFILL }},
+
+ { &hf_enip_lsr_servicename,
+ { "Name of Service", "enip.lsr.servicename",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "ListServices Reply: Name of Service", HFILL }},
+
/* Register Session */
- { &hf_enip_rs_version, { "Protocol Version", "enip.rs.version", FT_UINT16, BASE_DEC, NULL, 0, "Register Session: Protocol Version", HFILL }},
- { &hf_enip_rs_optionflags, { "Option Flags", "enip.rs.flags", FT_UINT16, BASE_HEX, NULL, 0, "Register Session: Option Flags", HFILL }},
+ { &hf_enip_rs_version,
+ { "Protocol Version", "enip.rs.version",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "Register Session: Protocol Version", HFILL }},
+
+ { &hf_enip_rs_optionflags,
+ { "Option Flags", "enip.rs.flags",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "Register Session: Option Flags", HFILL }},
+
/* Send Request/Reply Data */
- { &hf_enip_srrd_ifacehnd, { "Interface Handle", "enip.srrd.iface", FT_UINT32, BASE_HEX, VALS(enip_interface_handle_vals), 0, "SendRRData: Interface handle", HFILL }},
+ { &hf_enip_srrd_ifacehnd,
+ { "Interface Handle", "enip.srrd.iface",
+ FT_UINT32, BASE_HEX, VALS(enip_interface_handle_vals), 0,
+ "SendRRData: Interface handle", HFILL }},
+
/* Send Unit Data */
- { &hf_enip_sud_ifacehnd, { "Interface Handle", "enip.sud.iface", FT_UINT32, BASE_HEX, VALS(enip_interface_handle_vals), 0, "SendUnitData: Interface handle", HFILL }},
+ { &hf_enip_sud_ifacehnd,
+ { "Interface Handle", "enip.sud.iface",
+ FT_UINT32, BASE_HEX, VALS(enip_interface_handle_vals), 0,
+ "SendUnitData: Interface handle", HFILL }},
+
/* List identity reply */
- { &hf_enip_lir_vendor, { "Vendor ID", "enip.lir.vendor", FT_UINT16, BASE_HEX|BASE_EXT_STRING, &cip_vendor_vals_ext, 0, "ListIdentity Reply: Vendor ID", HFILL }},
- { &hf_enip_lir_devtype, { "Device Type", "enip.lir.devtype", FT_UINT16, BASE_DEC|BASE_EXT_STRING, &cip_devtype_vals_ext, 0, "ListIdentity Reply: Device Type", HFILL }},
- { &hf_enip_lir_prodcode, { "Product Code", "enip.lir.prodcode", FT_UINT16, BASE_DEC, NULL, 0, "ListIdentity Reply: Product Code", HFILL }},
- { &hf_enip_lir_revision, { "Revision", "enip.lir.revision", FT_UINT16, BASE_CUSTOM, enip_fmt_lir_revision, 0, "ListIdentity Reply: Revision", HFILL }},
- { &hf_enip_lir_status, { "Status", "enip.lir.status", FT_UINT16, BASE_HEX, NULL, 0, "ListIdentity Reply: Status", HFILL }},
- { &hf_enip_lir_serial, { "Serial Number", "enip.lir.serial", FT_UINT32, BASE_HEX, NULL, 0, "ListIdentity Reply: Serial Number", HFILL }},
- { &hf_enip_lir_namelen, { "Product Name Length", "enip.lir.namelen", FT_UINT8, BASE_DEC, NULL, 0, "ListIdentity Reply: Product Name Length", HFILL }},
- { &hf_enip_lir_name, { "Product Name", "enip.lir.name", FT_STRING, BASE_NONE, NULL, 0, "ListIdentity Reply: Product Name", HFILL }},
- { &hf_enip_lir_state, { "State", "enip.lir.state", FT_UINT8, BASE_HEX, NULL, 0, "ListIdentity Reply: State", HFILL }},
+ { &hf_enip_lir_vendor,
+ { "Vendor ID", "enip.lir.vendor",
+ FT_UINT16, BASE_HEX|BASE_EXT_STRING, &cip_vendor_vals_ext, 0,
+ "ListIdentity Reply: Vendor ID", HFILL }},
+
+ { &hf_enip_lir_devtype,
+ { "Device Type", "enip.lir.devtype",
+ FT_UINT16, BASE_DEC|BASE_EXT_STRING, &cip_devtype_vals_ext, 0,
+ "ListIdentity Reply: Device Type", HFILL }},
+
+ { &hf_enip_lir_prodcode,
+ { "Product Code", "enip.lir.prodcode",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "ListIdentity Reply: Product Code", HFILL }},
+
+ { &hf_enip_lir_revision,
+ { "Revision", "enip.lir.revision",
+ FT_UINT16, BASE_CUSTOM, enip_fmt_lir_revision, 0,
+ "ListIdentity Reply: Revision", HFILL }},
+
+ { &hf_enip_lir_status,
+ { "Status", "enip.lir.status",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "ListIdentity Reply: Status", HFILL }},
+
+ { &hf_enip_lir_serial,
+ { "Serial Number", "enip.lir.serial",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ "ListIdentity Reply: Serial Number", HFILL }},
+
+ { &hf_enip_lir_namelen,
+ { "Product Name Length", "enip.lir.namelen",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ "ListIdentity Reply: Product Name Length", HFILL }},
+
+ { &hf_enip_lir_name,
+ { "Product Name", "enip.lir.name",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "ListIdentity Reply: Product Name", HFILL }},
+
+ { &hf_enip_lir_state,
+ { "State", "enip.lir.state",
+ FT_UINT8, BASE_HEX, NULL, 0,
+ "ListIdentity Reply: State", HFILL }},
+
/* Common Packet Format */
- { &hf_enip_cpf_itemcount, { "Item Count", "enip.cpf.itemcount", FT_UINT16, BASE_DEC, NULL, 0, "Common Packet Format: Item Count", HFILL }},
- { &hf_enip_cpf_typeid, { "Type ID", "enip.cpf.typeid", FT_UINT16, BASE_HEX, VALS(cdf_type_vals), 0, "Common Packet Format: Type of encapsulated item", HFILL }},
- { &hf_enip_cpf_length, { "Length", "enip.cpf.length", FT_UINT16, BASE_DEC, NULL, 0, "Common Packet Format: Length", HFILL }},
+ { &hf_enip_cpf_itemcount,
+ { "Item Count", "enip.cpf.itemcount",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "Common Packet Format: Item Count", HFILL }},
+
+ { &hf_enip_cpf_typeid,
+ { "Type ID", "enip.cpf.typeid",
+ FT_UINT16, BASE_HEX, VALS(cdf_type_vals), 0,
+ "Common Packet Format: Type of encapsulated item", HFILL }},
+
+ { &hf_enip_cpf_length,
+ { "Length", "enip.cpf.length",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "Common Packet Format: Length", HFILL }},
+
/* Connected Data Item */
- { &hf_enip_cpf_cdi_seqcnt, { "Sequence Count", "enip.cpf.cdi.seqcnt", FT_UINT16, BASE_HEX, NULL, 0, "Common Packet Format: Connected Data Item, Sequence Count", HFILL }},
- { &hf_enip_cpf_cdi_32bitheader, { "32-bit Header", "enip.cpf.cdi.32bitheader", FT_UINT32, BASE_HEX, NULL, 0, "Common Packet Format: Connected Data Item, 32-bit Header", HFILL }},
- { &hf_enip_cpf_cdi_32bitheader_roo, { "ROO", "enip.cpf.cdi.roo", FT_UINT32, BASE_HEX, NULL, 0xC, "Common Packet Format: Connected Data Item, Ready for Ownership of Outputs", HFILL }},
- { &hf_enip_cpf_cdi_32bitheader_coo, { "COO", "enip.cpf.cdi.coo", FT_UINT32, BASE_HEX, NULL, 0x2, "Common Packet Format: Connected Data Item, Claim Output Ownership", HFILL }},
- { &hf_enip_cpf_cdi_32bitheader_run_idle, { "Run/Idle", "enip.cpf.cdi.run_idle", FT_UINT32, BASE_HEX, VALS(enip_run_idle_vals), 0x1, "Common Packet Format: Connected Data Item, Run/Idle", HFILL }},
+ { &hf_enip_cpf_cdi_seqcnt,
+ { "Sequence Count", "enip.cpf.cdi.seqcnt",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "Common Packet Format: Connected Data Item, Sequence Count", HFILL }},
+
+ { &hf_enip_cpf_cdi_32bitheader,
+ { "32-bit Header", "enip.cpf.cdi.32bitheader",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ "Common Packet Format: Connected Data Item, 32-bit Header", HFILL }},
+
+ { &hf_enip_cpf_cdi_32bitheader_roo,
+ { "ROO", "enip.cpf.cdi.roo",
+ FT_UINT32, BASE_HEX, NULL, 0xC,
+ "Common Packet Format: Connected Data Item, Ready for Ownership of Outputs", HFILL }},
+
+ { &hf_enip_cpf_cdi_32bitheader_coo,
+ { "COO", "enip.cpf.cdi.coo",
+ FT_UINT32, BASE_HEX, NULL, 0x2,
+ "Common Packet Format: Connected Data Item, Claim Output Ownership", HFILL }},
+
+ { &hf_enip_cpf_cdi_32bitheader_run_idle,
+ { "Run/Idle", "enip.cpf.cdi.run_idle",
+ FT_UINT32, BASE_HEX, VALS(enip_run_idle_vals), 0x1,
+ "Common Packet Format: Connected Data Item, Run/Idle", HFILL }},
+
/* Connection Address Item */
- { &hf_enip_cpf_cai_connid, { "Connection ID", "enip.cpf.cai.connid", FT_UINT32, BASE_HEX, NULL, 0, "Common Packet Format: Connection Address Item, Connection Identifier", HFILL }},
+ { &hf_enip_cpf_cai_connid,
+ { "Connection ID", "enip.cpf.cai.connid",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ "Common Packet Format: Connection Address Item, Connection Identifier", HFILL }},
+
/* Sequenced Address Type */
- { &hf_enip_cpf_sai_connid, { "Connection ID", "enip.cpf.sai.connid", FT_UINT32, BASE_HEX, NULL, 0, "Common Packet Format: Sequenced Address Item, Connection Identifier", HFILL }},
- { &hf_enip_cpf_sai_seqnum, { "Sequence Number", "enip.cpf.sai.seq", FT_UINT32, BASE_DEC, NULL, 0, "Common Packet Format: Sequenced Address Item, Sequence Number", HFILL }},
- { &hf_enip_cpf_data, { "Data", "enip.cpf.data", FT_BYTES, BASE_NONE, NULL, 0, "Common Packet Format: Unknown Data", HFILL }},
+ { &hf_enip_cpf_sai_connid,
+ { "Connection ID", "enip.cpf.sai.connid",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ "Common Packet Format: Sequenced Address Item, Connection Identifier", HFILL }},
+
+ { &hf_enip_cpf_sai_seqnum,
+ { "Sequence Number", "enip.cpf.sai.seq",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "Common Packet Format: Sequenced Address Item, Sequence Number", HFILL }},
+
+ { &hf_enip_cpf_data,
+ { "Data", "enip.cpf.data",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "Common Packet Format: Unknown Data", HFILL }},
+
/* Request/Response Matching */
- { &hf_enip_response_in, { "Response In", "enip.response_in", FT_FRAMENUM, BASE_NONE, NULL, 0x0, "The response to this ENIP request is in this frame", HFILL }},
- { &hf_enip_response_to, { "Request In", "enip.response_to", FT_FRAMENUM, BASE_NONE, NULL, 0x0, "This is a response to the ENIP request in this frame", HFILL }},
- { &hf_enip_time, { "Time", "enip.time", FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,"The time between the Call and the Reply", HFILL }},
- { &hf_enip_connection_transport_data, { "Data", "enip.connection_transport_data", FT_BYTES, BASE_NONE, NULL, 0x0, "Connection Transport Data", HFILL }},
-
- { &hf_tcpip_status, { "Status", "cip.tcpip.status", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_tcpip_status_interface_config, { "Interface Configuration Status", "cip.tcpip.status.interface_config", FT_UINT32, BASE_DEC, enip_tcpip_status_interface_config_vals, 0x0000000F, NULL, HFILL }},
- { &hf_tcpip_status_mcast_pending, { "MCast Pending", "cip.tcpip.status.mcast_pending", FT_BOOLEAN, 32, TFS(&tfs_true_false), 0x00000010, NULL, HFILL }},
- { &hf_tcpip_status_interface_config_pending, { "Interface Configuration Pending", "cip.tcpip.status.interface_config_pending", FT_BOOLEAN, 32, TFS(&tfs_true_false), 0x00000020, NULL, HFILL }},
- { &hf_tcpip_status_acd, { "ACD Status", "cip.tcpip.status.acd", FT_UINT32, BASE_DEC, enip_tcpip_status_acd_vals, 0x00000040, NULL, HFILL }},
- { &hf_tcpip_status_reserved, { "Reserved", "cip.tcpip.status.reserved", FT_UINT32, BASE_HEX, NULL, 0xFFFFFF80, NULL, HFILL }},
- { &hf_tcpip_config_cap, { "Configuration Capability", "cip.tcpip.config_cap", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_tcpip_config_cap_bootp, { "BOOTP Client", "cip.tcpip.config_cap.bootp", FT_BOOLEAN, 32, TFS(&tfs_true_false), 0x00000001, NULL, HFILL }},
- { &hf_tcpip_config_cap_dns, { "DNS Client", "cip.tcpip.config_cap.dns", FT_BOOLEAN, 32, TFS(&tfs_true_false), 0x00000002, NULL, HFILL }},
- { &hf_tcpip_config_cap_dhcp, { "DHCP Client", "cip.tcpip.config_cap.dhcp", FT_BOOLEAN, 32, TFS(&tfs_true_false), 0x00000004, NULL, HFILL }},
- { &hf_tcpip_config_cap_dhcp_dns_update, { "DHCP-DNS Update", "cip.tcpip.config_cap.dhcp_dns_update", FT_BOOLEAN, 32, TFS(&tfs_true_false), 0x00000008, NULL, HFILL }},
- { &hf_tcpip_config_cap_config_settable, { "Configuration Settable", "cip.tcpip.config_cap.config_settable", FT_BOOLEAN, 32, TFS(&tfs_true_false), 0x00000010, NULL, HFILL }},
- { &hf_tcpip_config_cap_hardware_config, { "Hardware Configurable", "cip.tcpip.config_cap.hardware_config", FT_BOOLEAN, 32, TFS(&tfs_true_false), 0x00000020, NULL, HFILL }},
- { &hf_tcpip_config_cap_interface_reset, { "Interface Configuration Change Requires Reset", "cip.tcpip.config_cap.interface_reset", FT_BOOLEAN, 32, TFS(&tfs_true_false), 0x00000040, NULL, HFILL }},
- { &hf_tcpip_config_cap_acd, { "ACD Capable", "cip.tcpip.config_cap.acd", FT_BOOLEAN, 32, TFS(&tfs_true_false), 0x00000080, NULL, HFILL }},
- { &hf_tcpip_config_cap_reserved, { "Reserved", "cip.tcpip.config_cap.reserved", FT_UINT32, BASE_HEX, NULL, 0xFFFFFF00, NULL, HFILL }},
- { &hf_tcpip_config_control, { "Configuration Control", "cip.tcpip.config_control", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_tcpip_config_control_config, { "Configuration Method", "cip.tcpip.config_control.config", FT_UINT32, BASE_DEC, enip_tcpip_config_control_config_vals, 0x0000000F, NULL, HFILL }},
- { &hf_tcpip_config_control_dns, { "DNS Enable", "cip.tcpip.config_control.dns", FT_BOOLEAN, 32, TFS(&tfs_true_false), 0x00000010, NULL, HFILL }},
- { &hf_tcpip_config_control_reserved, { "Reserved", "cip.tcpip.config_control.reserved", FT_UINT32, BASE_HEX, NULL, 0xFFFFFFE0, NULL, HFILL }},
- { &hf_tcpip_physical_link_size, { "Size", "cip.tcpip.physical_link_size", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_tcpip_ic_ip_addr, { "IP Address", "cip.tcpip.ip_addr", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_tcpip_ic_subnet_mask, { "Subnet Mask", "cip.tcpip.subnet_mask", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_tcpip_ic_gateway, { "Gateway", "cip.tcpip.gateway", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_tcpip_ic_name_server, { "Name Server", "cip.tcpip.name_server", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_tcpip_ic_name_server2, { "Name Server2", "cip.tcpip.name_server2", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_tcpip_ic_domain_name, { "Domain Name", "cip.tcpip.domain_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_tcpip_hostname, { "Hostname", "cip.tcpip.hostname", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_tcpip_ttl_value, { "TTL Value", "cip.tcpip.ttl_value", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_tcpip_mcast_alloc, { "Alloc Control", "cip.tcpip.mcast.alloc", FT_UINT8, BASE_DEC, enip_tcpip_mcast_alloc_vals, 0, NULL, HFILL }},
- { &hf_tcpip_mcast_reserved, { "Reserved", "cip.tcpip.mcast.reserved", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_tcpip_mcast_num_mcast, { "Num MCast", "cip.tcpip.mcast.num_mcast", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_tcpip_mcast_addr_start, { "MCast Start Addr", "cip.tcpip.mcast.addr_start", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_tcpip_select_acd, { "Select ACD", "cip.tcpip.select_acd", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0, NULL, HFILL }},
- { &hf_tcpip_lcd_acd_activity, { "ACD Activity", "cip.tcpip.last_conflict.acd_activity", FT_UINT8, BASE_DEC, enip_tcpip_acd_activity_vals, 0, NULL, HFILL }},
- { &hf_tcpip_lcd_remote_mac, { "RemoteMAC", "cip.tcpip.last_conflict.remote_mac", FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_tcpip_lcd_arp_pdu, { "Arp PDU", "cip.tcpip.last_conflict.arp_pdu", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_tcpip_quick_connect, { "Ethernet/IP Quick Connection", "cip.tcpip.quick_connect", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x1, NULL, HFILL }},
-
- { &hf_elink_interface_speed, { "Interface Speed", "cip.elink.interface_speed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_elink_interface_flags, { "Interface Flags", "cip.elink.iflags", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_elink_iflags_link_status, { "Link Status", "cip.elink.iflags.link_status", FT_BOOLEAN, 32, TFS(&tfs_active_inactive), 0x00000001, NULL, HFILL }},
- { &hf_elink_iflags_duplex, { "Duplex", "cip.elink.iflags.duplex", FT_UINT32, BASE_DEC, enip_elink_duplex_vals, 0x00000002, NULL, HFILL }},
- { &hf_elink_iflags_neg_status, { "Negotiation Status", "cip.elink.iflags.neg_status", FT_UINT32, BASE_DEC, enip_elink_iflags_neg_status_vals, 0x0000001C, NULL, HFILL }},
- { &hf_elink_iflags_manual_reset, { "Manual Reset Required", "cip.elink.iflags.manual_reset", FT_UINT32, BASE_DEC, enip_elink_iflags_reset_vals, 0x00000020, NULL, HFILL }},
- { &hf_elink_iflags_local_hw_fault, { "Local Hardware Fault", "cip.elink.iflags.local_hw_fault", FT_UINT32, BASE_DEC, enip_elink_iflags_hw_fault_vals, 0x00000040, NULL, HFILL }},
- { &hf_elink_iflags_reserved, { "Reserved", "cip.elink.iflags.reserved", FT_UINT32, BASE_HEX, NULL, 0xFFFFFF80, NULL, HFILL }},
- { &hf_elink_physical_address, { "Physical Addresss", "cip.elink.physical_address", FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_elink_icount_in_octets, { "In Octets", "cip.elink.icount.in_octets", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_elink_icount_in_ucast, { "In Ucast Packets", "cip.elink.icount.in_ucast", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_elink_icount_in_nucast, { "In NUcast Packets", "cip.elink.icount.in_nucast", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_elink_icount_in_discards, { "In Discards", "cip.elink.icount.in_discards", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_elink_icount_in_errors, { "In Errors", "cip.elink.icount.in_errors", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_elink_icount_in_unknown_protos, { "In Unknown Protos", "cip.elink.icount.in_unknown_protos", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_elink_icount_out_octets, { "Out Octets", "cip.elink.icount.out_octets", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_elink_icount_out_ucast, { "Out Ucast Packets", "cip.elink.icount.out_ucast", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_elink_icount_out_nucast, { "Out NUcast Packets", "cip.elink.icount.out_nucast", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_elink_icount_out_discards, { "Out Discards", "cip.elink.icount.out_discards", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_elink_icount_out_errors, { "Out Errors", "cip.elink.icount.out_errors", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_elink_mcount_alignment_errors, { "Alignment Errors", "cip.elink.mcount.alignment_errors", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_elink_mcount_fcs_errors, { "FCS Errors", "cip.elink.mcount.fcs_errors", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_elink_mcount_single_collisions, { "Single Collisions", "cip.elink.mcount.single_collisions", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_elink_mcount_multiple_collisions, { "Multiple Collisions", "cip.elink.mcount.multiple_collisions", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_elink_mcount_sqe_test_errors, { "SQE Test Errors", "cip.elink.mcount.sqe_test_errors", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_elink_mcount_deferred_transmission, { "Deferred Transmission", "cip.elink.mcount.deferred_transmission", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_elink_mcount_late_collisions, { "Late Collisions", "cip.elink.mcount.late_collisions", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_elink_mcount_excessive_collisions, { "Excessive Collisions", "cip.elink.mcount.excessive_collisions", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_elink_mcount_mac_transmit_errors, { "MAC Transmit Errors", "cip.elink.mcount.mac_transmit_errors", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_elink_mcount_carrier_sense_errors, { "Carrier Sense Errors", "cip.elink.mcount.carrier_sense_errors", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_elink_mcount_frame_too_long, { "Frame Too Long", "cip.elink.mcount.frame_too_long", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_elink_mcount_mac_receive_errors, { "MAC Receive Errors", "cip.elink.mcount.mac_receive_errors", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_elink_icontrol_control_bits, { "Control Bits", "cip.elink.icontrol.control_bits", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_elink_icontrol_control_bits_auto_neg, { "Auto-negotiate", "cip.elink.icontrol.control_bits.auto_neg", FT_BOOLEAN, 16, TFS(&tfs_enabled_disabled), 0x0001, NULL, HFILL }},
- { &hf_elink_icontrol_control_bits_forced_duplex, { "Forced Duplex Mode", "cip.elink.icontrol.control_bits.forced_duplex", FT_UINT16, BASE_DEC, enip_elink_duplex_vals, 0x0002, NULL, HFILL }},
- { &hf_elink_icontrol_control_bits_reserved, { "Reserved", "cip.elink.icontrol.control_bits.reserved", FT_UINT16, BASE_HEX, NULL, 0xFFFC, NULL, HFILL }},
- { &hf_elink_icontrol_forced_speed, { "Forced Interface Speed", "cip.elink.icontrol.forced_speed", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_elink_interface_type, { "Interface Type", "cip.elink.interface_type", FT_UINT8, BASE_DEC, enip_elink_interface_type_vals, 0, NULL, HFILL }},
- { &hf_elink_interface_state, { "Interface State", "cip.elink.interface_state", FT_UINT8, BASE_DEC, enip_elink_interface_state_vals, 0, NULL, HFILL }},
- { &hf_elink_admin_state, { "Admin State", "cip.elink.admin_state", FT_UINT8, BASE_DEC, enip_elink_admin_state_vals, 0, NULL, HFILL }},
- { &hf_elink_interface_label, { "Interface Label", "cip.elink.interface_label", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
-
- { &hf_qos_8021q_enable, { "802.1Q Tag Enable", "cip.qos.8021q_enable", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x1, NULL, HFILL }},
- { &hf_qos_dscp_ptp_event, { "DSCP PTP Event", "cip.qos.ptp_event", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_qos_dscp_ptp_general, { "DSCP PTP General", "cip.qos.ptp_general", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_qos_dscp_urgent, { "DSCP Urgent", "cip.qos.urgent", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_qos_dscp_scheduled, { "DSCP Scheduled", "cip.qos.scheduled", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_qos_dscp_high, { "DSCP High", "cip.qos.high", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_qos_dscp_low, { "DSCP Low", "cip.qos.low", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_qos_dscp_explicit, { "DSCP Explicit", "cip.qos.explicit", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}
+ { &hf_enip_response_in,
+ { "Response In", "enip.response_in",
+ FT_FRAMENUM, BASE_NONE, NULL, 0x0,
+ "The response to this ENIP request is in this frame", HFILL }},
+
+ { &hf_enip_response_to,
+ { "Request In", "enip.response_to",
+ FT_FRAMENUM, BASE_NONE, NULL, 0x0,
+ "This is a response to the ENIP request in this frame", HFILL }},
+
+ { &hf_enip_time,
+ { "Time", "enip.time",
+ FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
+ "The time between the Call and the Reply", HFILL }},
+
+ { &hf_enip_connection_transport_data,
+ { "Data", "enip.connection_transport_data",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Connection Transport Data", HFILL }},
+
+ { &hf_tcpip_status,
+ { "Status", "cip.tcpip.status",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_tcpip_status_interface_config,
+ { "Interface Configuration Status", "cip.tcpip.status.interface_config",
+ FT_UINT32, BASE_DEC, enip_tcpip_status_interface_config_vals, 0x0000000F,
+ NULL, HFILL }},
+
+ { &hf_tcpip_status_mcast_pending,
+ { "MCast Pending", "cip.tcpip.status.mcast_pending",
+ FT_BOOLEAN, 32, TFS(&tfs_true_false), 0x00000010,
+ NULL, HFILL }},
+
+ { &hf_tcpip_status_interface_config_pending,
+ { "Interface Configuration Pending", "cip.tcpip.status.interface_config_pending",
+ FT_BOOLEAN, 32, TFS(&tfs_true_false), 0x00000020,
+ NULL, HFILL }},
+
+ { &hf_tcpip_status_acd,
+ { "ACD Status", "cip.tcpip.status.acd",
+ FT_UINT32, BASE_DEC, enip_tcpip_status_acd_vals, 0x00000040,
+ NULL, HFILL }},
+
+ { &hf_tcpip_status_reserved,
+ { "Reserved", "cip.tcpip.status.reserved",
+ FT_UINT32, BASE_HEX, NULL, 0xFFFFFF80,
+ NULL, HFILL }},
+
+ { &hf_tcpip_config_cap,
+ { "Configuration Capability", "cip.tcpip.config_cap",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_tcpip_config_cap_bootp,
+ { "BOOTP Client", "cip.tcpip.config_cap.bootp",
+ FT_BOOLEAN, 32, TFS(&tfs_true_false), 0x00000001,
+ NULL, HFILL }},
+
+ { &hf_tcpip_config_cap_dns,
+ { "DNS Client", "cip.tcpip.config_cap.dns",
+ FT_BOOLEAN, 32, TFS(&tfs_true_false), 0x00000002,
+ NULL, HFILL }},
+
+ { &hf_tcpip_config_cap_dhcp,
+ { "DHCP Client", "cip.tcpip.config_cap.dhcp",
+ FT_BOOLEAN, 32, TFS(&tfs_true_false), 0x00000004,
+ NULL, HFILL }},
+
+ { &hf_tcpip_config_cap_dhcp_dns_update,
+ { "DHCP-DNS Update", "cip.tcpip.config_cap.dhcp_dns_update",
+ FT_BOOLEAN, 32, TFS(&tfs_true_false), 0x00000008,
+ NULL, HFILL }},
+
+ { &hf_tcpip_config_cap_config_settable,
+ { "Configuration Settable", "cip.tcpip.config_cap.config_settable",
+ FT_BOOLEAN, 32, TFS(&tfs_true_false), 0x00000010,
+ NULL, HFILL }},
+
+ { &hf_tcpip_config_cap_hardware_config,
+ { "Hardware Configurable", "cip.tcpip.config_cap.hardware_config",
+ FT_BOOLEAN, 32, TFS(&tfs_true_false), 0x00000020,
+ NULL, HFILL }},
+
+ { &hf_tcpip_config_cap_interface_reset,
+ { "Interface Configuration Change Requires Reset", "cip.tcpip.config_cap.interface_reset",
+ FT_BOOLEAN, 32, TFS(&tfs_true_false), 0x00000040,
+ NULL, HFILL }},
+
+ { &hf_tcpip_config_cap_acd,
+ { "ACD Capable", "cip.tcpip.config_cap.acd",
+ FT_BOOLEAN, 32, TFS(&tfs_true_false), 0x00000080,
+ NULL, HFILL }},
+
+ { &hf_tcpip_config_cap_reserved,
+ { "Reserved", "cip.tcpip.config_cap.reserved",
+ FT_UINT32, BASE_HEX, NULL, 0xFFFFFF00,
+ NULL, HFILL }},
+
+ { &hf_tcpip_config_control,
+ { "Configuration Control", "cip.tcpip.config_control",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_tcpip_config_control_config,
+ { "Configuration Method", "cip.tcpip.config_control.config",
+ FT_UINT32, BASE_DEC, enip_tcpip_config_control_config_vals, 0x0000000F,
+ NULL, HFILL }},
+
+ { &hf_tcpip_config_control_dns,
+ { "DNS Enable", "cip.tcpip.config_control.dns",
+ FT_BOOLEAN, 32, TFS(&tfs_true_false), 0x00000010,
+ NULL, HFILL }},
+
+ { &hf_tcpip_config_control_reserved,
+ { "Reserved", "cip.tcpip.config_control.reserved",
+ FT_UINT32, BASE_HEX, NULL, 0xFFFFFFE0,
+ NULL, HFILL }},
+
+ { &hf_tcpip_physical_link_size,
+ { "Size", "cip.tcpip.physical_link_size",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_tcpip_ic_ip_addr,
+ { "IP Address", "cip.tcpip.ip_addr",
+ FT_IPv4, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_tcpip_ic_subnet_mask,
+ { "Subnet Mask", "cip.tcpip.subnet_mask",
+ FT_IPv4, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_tcpip_ic_gateway,
+ { "Gateway", "cip.tcpip.gateway",
+ FT_IPv4, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_tcpip_ic_name_server,
+ { "Name Server", "cip.tcpip.name_server",
+ FT_IPv4, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_tcpip_ic_name_server2,
+ { "Name Server2", "cip.tcpip.name_server2",
+ FT_IPv4, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_tcpip_ic_domain_name,
+ { "Domain Name", "cip.tcpip.domain_name",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_tcpip_hostname,
+ { "Hostname", "cip.tcpip.hostname",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_tcpip_ttl_value,
+ { "TTL Value", "cip.tcpip.ttl_value",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_tcpip_mcast_alloc,
+ { "Alloc Control", "cip.tcpip.mcast.alloc",
+ FT_UINT8, BASE_DEC, enip_tcpip_mcast_alloc_vals, 0,
+ NULL, HFILL }},
+
+ { &hf_tcpip_mcast_reserved,
+ { "Reserved", "cip.tcpip.mcast.reserved",
+ FT_UINT8, BASE_HEX, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_tcpip_mcast_num_mcast,
+ { "Num MCast", "cip.tcpip.mcast.num_mcast",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_tcpip_mcast_addr_start,
+ { "MCast Start Addr", "cip.tcpip.mcast.addr_start",
+ FT_IPv4, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_tcpip_select_acd,
+ { "Select ACD", "cip.tcpip.select_acd",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_enabled_disabled), 0,
+ NULL, HFILL }},
+
+ { &hf_tcpip_lcd_acd_activity,
+ { "ACD Activity", "cip.tcpip.last_conflict.acd_activity",
+ FT_UINT8, BASE_DEC, enip_tcpip_acd_activity_vals, 0,
+ NULL, HFILL }},
+
+ { &hf_tcpip_lcd_remote_mac,
+ { "RemoteMAC", "cip.tcpip.last_conflict.remote_mac",
+ FT_ETHER, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_tcpip_lcd_arp_pdu,
+ { "Arp PDU", "cip.tcpip.last_conflict.arp_pdu",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_tcpip_quick_connect,
+ { "Ethernet/IP Quick Connection", "cip.tcpip.quick_connect",
+ FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x1,
+ NULL, HFILL }},
+
+
+ { &hf_elink_interface_speed,
+ { "Interface Speed", "cip.elink.interface_speed",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_interface_flags,
+ { "Interface Flags", "cip.elink.iflags",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_iflags_link_status,
+ { "Link Status", "cip.elink.iflags.link_status",
+ FT_BOOLEAN, 32, TFS(&tfs_active_inactive), 0x00000001,
+ NULL, HFILL }},
+
+ { &hf_elink_iflags_duplex,
+ { "Duplex", "cip.elink.iflags.duplex",
+ FT_UINT32, BASE_DEC, enip_elink_duplex_vals, 0x00000002,
+ NULL, HFILL }},
+
+ { &hf_elink_iflags_neg_status,
+ { "Negotiation Status", "cip.elink.iflags.neg_status",
+ FT_UINT32, BASE_DEC, enip_elink_iflags_neg_status_vals, 0x0000001C,
+ NULL, HFILL }},
+
+ { &hf_elink_iflags_manual_reset,
+ { "Manual Reset Required", "cip.elink.iflags.manual_reset",
+ FT_UINT32, BASE_DEC, enip_elink_iflags_reset_vals, 0x00000020,
+ NULL, HFILL }},
+
+ { &hf_elink_iflags_local_hw_fault,
+ { "Local Hardware Fault", "cip.elink.iflags.local_hw_fault",
+ FT_UINT32, BASE_DEC, enip_elink_iflags_hw_fault_vals, 0x00000040,
+ NULL, HFILL }},
+
+ { &hf_elink_iflags_reserved,
+ { "Reserved", "cip.elink.iflags.reserved",
+ FT_UINT32, BASE_HEX, NULL, 0xFFFFFF80,
+ NULL, HFILL }},
+
+ { &hf_elink_physical_address,
+ { "Physical Addresss", "cip.elink.physical_address",
+ FT_ETHER, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_icount_in_octets,
+ { "In Octets", "cip.elink.icount.in_octets",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_icount_in_ucast,
+ { "In Ucast Packets", "cip.elink.icount.in_ucast",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_icount_in_nucast,
+ { "In NUcast Packets", "cip.elink.icount.in_nucast",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_icount_in_discards,
+ { "In Discards", "cip.elink.icount.in_discards",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_icount_in_errors,
+ { "In Errors", "cip.elink.icount.in_errors",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_icount_in_unknown_protos,
+ { "In Unknown Protos", "cip.elink.icount.in_unknown_protos",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_icount_out_octets,
+ { "Out Octets", "cip.elink.icount.out_octets",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_icount_out_ucast,
+ { "Out Ucast Packets", "cip.elink.icount.out_ucast",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_icount_out_nucast,
+ { "Out NUcast Packets", "cip.elink.icount.out_nucast",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_icount_out_discards,
+ { "Out Discards", "cip.elink.icount.out_discards",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_icount_out_errors,
+ { "Out Errors", "cip.elink.icount.out_errors",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_mcount_alignment_errors,
+ { "Alignment Errors", "cip.elink.mcount.alignment_errors",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_mcount_fcs_errors,
+ { "FCS Errors", "cip.elink.mcount.fcs_errors",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_mcount_single_collisions,
+ { "Single Collisions", "cip.elink.mcount.single_collisions",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_mcount_multiple_collisions,
+ { "Multiple Collisions", "cip.elink.mcount.multiple_collisions",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_mcount_sqe_test_errors,
+ { "SQE Test Errors", "cip.elink.mcount.sqe_test_errors",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_mcount_deferred_transmission,
+ { "Deferred Transmission", "cip.elink.mcount.deferred_transmission",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_mcount_late_collisions,
+ { "Late Collisions", "cip.elink.mcount.late_collisions",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_mcount_excessive_collisions,
+ { "Excessive Collisions", "cip.elink.mcount.excessive_collisions",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_mcount_mac_transmit_errors,
+ { "MAC Transmit Errors", "cip.elink.mcount.mac_transmit_errors",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_mcount_carrier_sense_errors,
+ { "Carrier Sense Errors", "cip.elink.mcount.carrier_sense_errors",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_mcount_frame_too_long,
+ { "Frame Too Long", "cip.elink.mcount.frame_too_long",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_mcount_mac_receive_errors,
+ { "MAC Receive Errors", "cip.elink.mcount.mac_receive_errors",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_icontrol_control_bits,
+ { "Control Bits", "cip.elink.icontrol.control_bits",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_icontrol_control_bits_auto_neg,
+ { "Auto-negotiate", "cip.elink.icontrol.control_bits.auto_neg",
+ FT_BOOLEAN, 16, TFS(&tfs_enabled_disabled), 0x0001,
+ NULL, HFILL }},
+
+ { &hf_elink_icontrol_control_bits_forced_duplex,
+ { "Forced Duplex Mode", "cip.elink.icontrol.control_bits.forced_duplex",
+ FT_UINT16, BASE_DEC, enip_elink_duplex_vals, 0x0002,
+ NULL, HFILL }},
+
+ { &hf_elink_icontrol_control_bits_reserved,
+ { "Reserved", "cip.elink.icontrol.control_bits.reserved",
+ FT_UINT16, BASE_HEX, NULL, 0xFFFC,
+ NULL, HFILL }},
+
+ { &hf_elink_icontrol_forced_speed,
+ { "Forced Interface Speed", "cip.elink.icontrol.forced_speed",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_interface_type,
+ { "Interface Type", "cip.elink.interface_type",
+ FT_UINT8, BASE_DEC, enip_elink_interface_type_vals, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_interface_state,
+ { "Interface State", "cip.elink.interface_state",
+ FT_UINT8, BASE_DEC, enip_elink_interface_state_vals, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_admin_state,
+ { "Admin State", "cip.elink.admin_state",
+ FT_UINT8, BASE_DEC, enip_elink_admin_state_vals, 0,
+ NULL, HFILL }},
+
+ { &hf_elink_interface_label,
+ { "Interface Label", "cip.elink.interface_label",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+
+
+ { &hf_qos_8021q_enable,
+ { "802.1Q Tag Enable", "cip.qos.8021q_enable",
+ FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x1,
+ NULL, HFILL }},
+
+ { &hf_qos_dscp_ptp_event,
+ { "DSCP PTP Event", "cip.qos.ptp_event",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_qos_dscp_ptp_general,
+ { "DSCP PTP General", "cip.qos.ptp_general",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_qos_dscp_urgent,
+ { "DSCP Urgent", "cip.qos.urgent",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_qos_dscp_scheduled,
+ { "DSCP Scheduled", "cip.qos.scheduled",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_qos_dscp_high,
+ { "DSCP High", "cip.qos.high",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_qos_dscp_low,
+ { "DSCP Low", "cip.qos.low",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_qos_dscp_explicit,
+ { "DSCP Explicit", "cip.qos.explicit",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }}
};
@@ -2414,10 +2944,6 @@ proto_register_enip(void)
} /* end of proto_register_enip() */
-/* If this dissector uses sub-dissector registration add a registration routine.
- This format is required because a script is used to find these routines and
- create the code that calls these routines.
-*/
void
proto_reg_handoff_enip(void)
{
diff --git a/epan/dissectors/packet-enip.h b/epan/dissectors/packet-enip.h
index 9173879363..28fbaadb56 100644
--- a/epan/dissectors/packet-enip.h
+++ b/epan/dissectors/packet-enip.h
@@ -27,6 +27,9 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+#ifndef PACKET_ENIP_H
+#define PACKET_ENIP_H
+
/* Offsets of fields within the DLR Common Frame Header */
#define DLR_CFH_SUB_TYPE 0
#define DLR_CFH_PROTO_VERSION 1
@@ -89,3 +92,5 @@ enum enip_connid_type {ECIDT_UNKNOWN, ECIDT_O2T, ECIDT_T2O};
void enip_close_cip_connection( packet_info *pinfo, guint16 ConnSerialNumber, guint16 VendorID, guint32 DeviceSerialNumber );
extern attribute_info_t enip_attribute_vals[29];
+
+#endif /* PACKET_ENIP_H */
diff --git a/epan/dissectors/packet-enttec.c b/epan/dissectors/packet-enttec.c
index ec1266f71f..c8566ebbca 100644
--- a/epan/dissectors/packet-enttec.c
+++ b/epan/dissectors/packet-enttec.c
@@ -30,9 +30,8 @@
#include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-#include <time.h>
+#include <glib.h>
+
#include <epan/packet.h>
#include <epan/addr_resolv.h>
#include <epan/prefs.h>
@@ -282,7 +281,7 @@ dissect_enttec_dmx_data(tvbuff_t *tvb, guint offset, proto_tree *tree)
dmx_epstr = ep_strbuf_new_label(NULL);
for (r=0; r < row_count;r++) {
for (c=0;(c < global_disp_col_count) && (((r*global_disp_col_count)+c) < ui);c++) {
- if ((c % (global_disp_col_count/2)) == 0) {
+ if ((global_disp_col_count > 1) && (c % (global_disp_col_count/2)) == 0) {
ep_strbuf_append_c(dmx_epstr, ' ');
}
v = dmx_data[(r*global_disp_col_count)+c];
diff --git a/epan/dissectors/packet-epl.c b/epan/dissectors/packet-epl.c
index 4eb22852ba..536efc6417 100644
--- a/epan/dissectors/packet-epl.c
+++ b/epan/dissectors/packet-epl.c
@@ -1245,7 +1245,7 @@ dissect_epl_asnd_ires(proto_tree *epl_tree, tvbuff_t *tvb, packet_info *pinfo, g
profile = tvb_get_letohs(tvb, offset);
additional = tvb_get_letohs(tvb, offset+2);
proto_tree_add_string_format(epl_tree, hf_epl_asnd_identresponse_dt, tvb, offset,
- 4, "", "Device Type: Profil %d (%s), Additional Information: 0x%4.4X",
+ 4, "", "Device Type: Profile %d (%s), Additional Information: 0x%4.4X",
profile, val_to_str(profile, epl_device_profiles, "Unknown Profile"), additional);
proto_tree_add_item(epl_tree, hf_epl_asnd_identresponse_profile, tvb, offset, 2, ENC_LITTLE_ENDIAN);
diff --git a/epan/dissectors/packet-epl_v1.c b/epan/dissectors/packet-epl_v1.c
index 0bbd0c3800..08975c7563 100644
--- a/epan/dissectors/packet-epl_v1.c
+++ b/epan/dissectors/packet-epl_v1.c
@@ -56,8 +56,8 @@
#define EPL_V1_PREQ_C2_OFFSET 3
/* "Powerlink Multimanager Konzept V1.1" protocol extension*/
-#define PMM_KONZEPT_V1_1_PREQ_YA 3
-#define PMM_KONZEPT_V1_1_PREQ_SC 3
+#define PMM_KONZEPT_V1_1_PREQ_YA 3
+#define PMM_KONZEPT_V1_1_PREQ_SC 3
/* end "Powerlink Multimanager Konzept V1.1" protocol extension*/
#define EPL_V1_PREQ_RD_OFFSET 3
#define EPL_V1_PREQ_RD_OFFSET 3
@@ -97,13 +97,13 @@
#define EPL_V1_ASND 0x06
static const value_string service_vals[] = {
- {EPL_V1_SOC, "Start of Cyclic (SoC)" },
- {EPL_V1_EOC, "End of Cyclic (EoC)" },
- {EPL_V1_PREQ, "Poll Request (PReq)" },
- {EPL_V1_PRES, "Poll Response (PRes)" },
- {EPL_V1_AINV, "Acyclic Invite (AInv)" },
- {EPL_V1_ASND, "Acyclic Send (ASnd)" },
- {0,NULL}
+ {EPL_V1_SOC, "Start of Cyclic (SoC)" },
+ {EPL_V1_EOC, "End of Cyclic (EoC)" },
+ {EPL_V1_PREQ, "Poll Request (PReq)" },
+ {EPL_V1_PRES, "Poll Response (PRes)" },
+ {EPL_V1_AINV, "Acyclic Invite (AInv)" },
+ {EPL_V1_ASND, "Acyclic Send (ASnd)" },
+ {0,NULL}
};
/* Channel values for EPL_V1 message type "AInv" */
@@ -111,9 +111,9 @@ static const value_string service_vals[] = {
#define EPL_V1_AINV_GENERIC 255
static const value_string ainv_channel_number_vals[] = {
- {EPL_V1_AINV_IDENT, "Ident" },
- {EPL_V1_AINV_GENERIC, "Generic Channel" },
- {0,NULL}
+ {EPL_V1_AINV_IDENT, "Ident" },
+ {EPL_V1_AINV_GENERIC, "Generic Channel" },
+ {0,NULL}
};
/* Channel values for EPL_V1 message type "ASnd" */
@@ -121,9 +121,9 @@ static const value_string ainv_channel_number_vals[] = {
#define EPL_V1_ASND_GENERIC 255
static const value_string asnd_channel_number_vals[] = {
- {EPL_V1_ASND_IDENT, "Ident" },
- {EPL_V1_ASND_GENERIC, "Generic Channel" },
- {0,NULL}
+ {EPL_V1_ASND_IDENT, "Ident" },
+ {EPL_V1_ASND_GENERIC, "Generic Channel" },
+ {0,NULL}
};
/* Net Command values for EPL_V1 message type "SoC" */
@@ -131,9 +131,9 @@ static const value_string asnd_channel_number_vals[] = {
#define EPL_V1_SOC_NET_COMMAND_ACTIVE 1
static const value_string soc_net_command_vals[] = {
- {EPL_V1_SOC_NET_COMMAND_IDLE, "Net Command Idle" },
- {EPL_V1_SOC_NET_COMMAND_ACTIVE, "Net Command Active"},
- {0,NULL}
+ {EPL_V1_SOC_NET_COMMAND_IDLE, "Net Command Idle" },
+ {EPL_V1_SOC_NET_COMMAND_ACTIVE, "Net Command Active"},
+ {0,NULL}
};
/* Net Command values for EPL_V1 message type "EoC" */
@@ -141,9 +141,9 @@ static const value_string soc_net_command_vals[] = {
#define EPL_V1_EOC_NET_COMMAND_ACTIVE 1
static const value_string eoc_net_command_vals[] = {
- {EPL_V1_EOC_NET_COMMAND_IDLE, "Net Command Idle" },
- {EPL_V1_EOC_NET_COMMAND_ACTIVE, "Net Command Active"},
- {0,NULL}
+ {EPL_V1_EOC_NET_COMMAND_IDLE, "Net Command Idle" },
+ {EPL_V1_EOC_NET_COMMAND_ACTIVE, "Net Command Active"},
+ {0,NULL}
};
@@ -457,192 +457,192 @@ void
proto_register_epl_v1(void)
{
static hf_register_info hf[] = {
- /* Common data fields (same for all message types) */
- { &hf_epl_v1_service,
- { "Service", "epl_v1.service",
- FT_UINT8, BASE_DEC, VALS(service_vals), 0x7F,
- NULL, HFILL }
- },
- { &hf_epl_v1_dest,
- { "Destination", "epl_v1.dest",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- NULL, HFILL }
- },
- { &hf_epl_v1_src,
- { "Source", "epl_v1.src",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- NULL, HFILL }
- },
- /* SoC data fields*/
- { &hf_epl_v1_soc_ms,
- { "MS (Multiplexed Slot)", "epl_v1.soc.ms",
- FT_UINT8, BASE_DEC, NULL, 0x80,
- NULL, HFILL }
- },
- { &hf_epl_v1_soc_ps,
- { "PS (Prescaled Slot)", "epl_v1.soc.ps",
- FT_UINT8, BASE_DEC, NULL, 0x40,
- NULL, HFILL }
- },
- { &hf_epl_v1_soc_net_command,
- { "Net Command", "epl_v1.soc.netcommand",
- FT_UINT16, BASE_DEC, VALS(soc_net_command_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_epl_v1_soc_net_time,
- { "Net Time", "epl_v1.soc.nettime",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_epl_v1_soc_powerlink_cycle_time,
- { "Cycle Time", "epl_v1.soc.cycletime",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_epl_v1_soc_net_command_parameter,
- { "Net Command Parameter", "epl_v1.soc.netcommand.parameter",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- /* PReq data fields*/
- { &hf_epl_v1_preq_ms,
- { "MS (Multiplexed Slot)", "epl_v1.preq.ms",
- FT_UINT8, BASE_DEC, NULL, 0x20,
- NULL, HFILL }
- },
- { &hf_epl_v1_preq_rd,
- { "RD (Ready)", "epl_v1.preq.rd",
- FT_UINT8, BASE_DEC, NULL, 0x01,
- NULL, HFILL }
- },
- { &hf_epl_v1_preq_poll_size_out,
- { "Poll Size OUT", "epl_v1.preq.pollsize",
- FT_UINT16, BASE_DEC, NULL, 0x00,
- NULL, HFILL }
- },
- { &hf_epl_v1_preq_out_data,
- { "OUT Data", "epl_v1.preq.data",
- FT_BYTES, BASE_NONE, NULL, 0x00,
- NULL, HFILL }
- },
- /* PRes data fields*/
- { &hf_epl_v1_pres_ms,
- { "MS (Multiplexed)", "epl_v1.pres.ms",
- FT_UINT8, BASE_DEC, NULL, 0x20,
- NULL, HFILL }
- },
- { &hf_epl_v1_pres_ex,
- { "EX (Exception)", "epl_v1.pres.ex",
- FT_UINT8, BASE_DEC, NULL, 0x10,
- NULL, HFILL }
- },
- { &hf_epl_v1_pres_rs,
- { "RS (Request to Send)", "epl_v1.pres.rs",
- FT_UINT8, BASE_DEC, NULL, 0x08,
- NULL, HFILL }
- },
- { &hf_epl_v1_pres_wa,
- { "WA (Warning)", "epl_v1.pres.wa",
- FT_UINT8, BASE_DEC, NULL, 0x04,
- NULL, HFILL }
- },
- { &hf_epl_v1_pres_er,
- { "ER (Error)", "epl_v1.pres.er",
- FT_UINT8, BASE_DEC, NULL, 0x02,
- NULL, HFILL }
- },
- { &hf_epl_v1_pres_rd,
- { "RD (Ready)", "epl_v1.pres.rd",
- FT_UINT8, BASE_DEC, NULL, 0x01,
- NULL, HFILL }
- },
- { &hf_epl_v1_pres_poll_size_in,
- { "Poll Size IN", "epl_v1.pres.pollsize",
- FT_UINT16, BASE_DEC, NULL, 0x00,
- NULL, HFILL }
- },
- { &hf_epl_v1_pres_in_data,
- { "IN Data", "epl_v1.pres.data",
- FT_BYTES, BASE_NONE, NULL, 0x00,
- NULL, HFILL }
- },
- /* EoC data fields*/
- { &hf_epl_v1_eoc_net_command,
- { "Net Command", "epl_v1.eoc.netcommand",
- FT_UINT16, BASE_DEC, VALS(eoc_net_command_vals), 0x00,
- NULL, HFILL }
- },
- { &hf_epl_v1_eoc_net_command_parameter,
- { "Net Command Parameter", "epl_v1.soa.netcommand.parameter",
- FT_BYTES, BASE_NONE, NULL, 0x00,
- NULL, HFILL }
- },
- /* AInv data fields*/
- { &hf_epl_v1_ainv_channel,
- { "Channel", "epl_v1.ainv.channel",
- FT_UINT8, BASE_DEC, VALS(ainv_channel_number_vals), 0x00,
- NULL, HFILL }
- },
- /* ASnd data fields*/
- { &hf_epl_v1_asnd_channel,
- { "Channel", "epl_v1.asnd.channel",
- FT_UINT8, BASE_DEC, VALS(asnd_channel_number_vals), 0x00,
- NULL, HFILL }
- },
- { &hf_epl_v1_asnd_size,
- { "Size", "epl_v1.asnd.size",
- FT_UINT16, BASE_DEC, NULL, 0x00,
- NULL, HFILL }
- },
- { &hf_epl_v1_asnd_data,
- { "Data", "epl_v1.asnd.data",
- FT_BYTES, BASE_NONE, NULL, 0x00,
- NULL, HFILL }
- },
-
- { &hf_epl_v1_asnd_node_id,
- { "NodeID", "epl_v1.asnd.node_id",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- NULL, HFILL }
- },
- { &hf_epl_v1_asnd_hardware_revision,
- { "Hardware Revision", "epl_v1.asnd.hardware.revision",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- NULL, HFILL }
- },
- { &hf_epl_v1_asnd_firmware_version,
- { "Firmware Version", "epl_v1.asnd.firmware.version",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- NULL, HFILL }
- },
- { &hf_epl_v1_asnd_device_variant,
- { "Device Variant", "epl_v1.asnd.device.variant",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- NULL, HFILL }
- },
- { &hf_epl_v1_asnd_poll_in_size,
- { "Poll IN Size", "epl_v1.asnd.poll.in.size",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- NULL, HFILL }
- },
- { &hf_epl_v1_asnd_poll_out_size,
- { "Poll OUT Size", "epl_v1.asnd.poll.out.size",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- NULL, HFILL }
- },
- };
-
- /* Setup protocol subtree array */
- static gint *ett[] = {
- &ett_epl_v1,
- };
-
- /* Register the protocol name and description */
- proto_epl_v1 = proto_register_protocol("ETHERNET Powerlink V1.0", "EPL_V1", "epl_v1");
-
- /* Required function calls to register the header fields and subtrees used */
- proto_register_field_array(proto_epl_v1, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ /* Common data fields (same for all message types) */
+ { &hf_epl_v1_service,
+ { "Service", "epl_v1.service",
+ FT_UINT8, BASE_DEC, VALS(service_vals), 0x7F,
+ NULL, HFILL }
+ },
+ { &hf_epl_v1_dest,
+ { "Destination", "epl_v1.dest",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
+ { &hf_epl_v1_src,
+ { "Source", "epl_v1.src",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
+ /* SoC data fields*/
+ { &hf_epl_v1_soc_ms,
+ { "MS (Multiplexed Slot)", "epl_v1.soc.ms",
+ FT_UINT8, BASE_DEC, NULL, 0x80,
+ NULL, HFILL }
+ },
+ { &hf_epl_v1_soc_ps,
+ { "PS (Prescaled Slot)", "epl_v1.soc.ps",
+ FT_UINT8, BASE_DEC, NULL, 0x40,
+ NULL, HFILL }
+ },
+ { &hf_epl_v1_soc_net_command,
+ { "Net Command", "epl_v1.soc.netcommand",
+ FT_UINT16, BASE_DEC, VALS(soc_net_command_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_epl_v1_soc_net_time,
+ { "Net Time", "epl_v1.soc.nettime",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_epl_v1_soc_powerlink_cycle_time,
+ { "Cycle Time", "epl_v1.soc.cycletime",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_epl_v1_soc_net_command_parameter,
+ { "Net Command Parameter", "epl_v1.soc.netcommand.parameter",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ /* PReq data fields*/
+ { &hf_epl_v1_preq_ms,
+ { "MS (Multiplexed Slot)", "epl_v1.preq.ms",
+ FT_UINT8, BASE_DEC, NULL, 0x20,
+ NULL, HFILL }
+ },
+ { &hf_epl_v1_preq_rd,
+ { "RD (Ready)", "epl_v1.preq.rd",
+ FT_UINT8, BASE_DEC, NULL, 0x01,
+ NULL, HFILL }
+ },
+ { &hf_epl_v1_preq_poll_size_out,
+ { "Poll Size OUT", "epl_v1.preq.pollsize",
+ FT_UINT16, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
+ { &hf_epl_v1_preq_out_data,
+ { "OUT Data", "epl_v1.preq.data",
+ FT_BYTES, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
+ /* PRes data fields*/
+ { &hf_epl_v1_pres_ms,
+ { "MS (Multiplexed)", "epl_v1.pres.ms",
+ FT_UINT8, BASE_DEC, NULL, 0x20,
+ NULL, HFILL }
+ },
+ { &hf_epl_v1_pres_ex,
+ { "EX (Exception)", "epl_v1.pres.ex",
+ FT_UINT8, BASE_DEC, NULL, 0x10,
+ NULL, HFILL }
+ },
+ { &hf_epl_v1_pres_rs,
+ { "RS (Request to Send)", "epl_v1.pres.rs",
+ FT_UINT8, BASE_DEC, NULL, 0x08,
+ NULL, HFILL }
+ },
+ { &hf_epl_v1_pres_wa,
+ { "WA (Warning)", "epl_v1.pres.wa",
+ FT_UINT8, BASE_DEC, NULL, 0x04,
+ NULL, HFILL }
+ },
+ { &hf_epl_v1_pres_er,
+ { "ER (Error)", "epl_v1.pres.er",
+ FT_UINT8, BASE_DEC, NULL, 0x02,
+ NULL, HFILL }
+ },
+ { &hf_epl_v1_pres_rd,
+ { "RD (Ready)", "epl_v1.pres.rd",
+ FT_UINT8, BASE_DEC, NULL, 0x01,
+ NULL, HFILL }
+ },
+ { &hf_epl_v1_pres_poll_size_in,
+ { "Poll Size IN", "epl_v1.pres.pollsize",
+ FT_UINT16, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
+ { &hf_epl_v1_pres_in_data,
+ { "IN Data", "epl_v1.pres.data",
+ FT_BYTES, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
+ /* EoC data fields*/
+ { &hf_epl_v1_eoc_net_command,
+ { "Net Command", "epl_v1.eoc.netcommand",
+ FT_UINT16, BASE_DEC, VALS(eoc_net_command_vals), 0x00,
+ NULL, HFILL }
+ },
+ { &hf_epl_v1_eoc_net_command_parameter,
+ { "Net Command Parameter", "epl_v1.soa.netcommand.parameter",
+ FT_BYTES, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
+ /* AInv data fields*/
+ { &hf_epl_v1_ainv_channel,
+ { "Channel", "epl_v1.ainv.channel",
+ FT_UINT8, BASE_DEC, VALS(ainv_channel_number_vals), 0x00,
+ NULL, HFILL }
+ },
+ /* ASnd data fields*/
+ { &hf_epl_v1_asnd_channel,
+ { "Channel", "epl_v1.asnd.channel",
+ FT_UINT8, BASE_DEC, VALS(asnd_channel_number_vals), 0x00,
+ NULL, HFILL }
+ },
+ { &hf_epl_v1_asnd_size,
+ { "Size", "epl_v1.asnd.size",
+ FT_UINT16, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
+ { &hf_epl_v1_asnd_data,
+ { "Data", "epl_v1.asnd.data",
+ FT_BYTES, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
+
+ { &hf_epl_v1_asnd_node_id,
+ { "NodeID", "epl_v1.asnd.node_id",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
+ { &hf_epl_v1_asnd_hardware_revision,
+ { "Hardware Revision", "epl_v1.asnd.hardware.revision",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
+ { &hf_epl_v1_asnd_firmware_version,
+ { "Firmware Version", "epl_v1.asnd.firmware.version",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
+ { &hf_epl_v1_asnd_device_variant,
+ { "Device Variant", "epl_v1.asnd.device.variant",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
+ { &hf_epl_v1_asnd_poll_in_size,
+ { "Poll IN Size", "epl_v1.asnd.poll.in.size",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
+ { &hf_epl_v1_asnd_poll_out_size,
+ { "Poll OUT Size", "epl_v1.asnd.poll.out.size",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_epl_v1,
+ };
+
+ /* Register the protocol name and description */
+ proto_epl_v1 = proto_register_protocol("ETHERNET Powerlink V1.0", "EPL_V1", "epl_v1");
+
+ /* Required function calls to register the header fields and subtrees used */
+ proto_register_field_array(proto_epl_v1, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
@@ -650,8 +650,8 @@ proto_register_epl_v1(void)
void
proto_reg_handoff_epl_v1(void)
{
- dissector_handle_t epl_v1_handle;
+ dissector_handle_t epl_v1_handle;
- epl_v1_handle = new_create_dissector_handle(dissect_epl_v1, proto_epl_v1);
- dissector_add_uint("ethertype", ETHERTYPE_EPL_V1, epl_v1_handle);
+ epl_v1_handle = new_create_dissector_handle(dissect_epl_v1, proto_epl_v1);
+ dissector_add_uint("ethertype", ETHERTYPE_EPL_V1, epl_v1_handle);
}
diff --git a/epan/dissectors/packet-epmd.c b/epan/dissectors/packet-epmd.c
index 73bb83253d..32b1235189 100644
--- a/epan/dissectors/packet-epmd.c
+++ b/epan/dissectors/packet-epmd.c
@@ -66,206 +66,206 @@ static dissector_handle_t edp_handle = NULL;
#define EPMD_PORT 4369
/* Definitions of message codes */
-#define EPMD_ALIVE_REQ 'a'
+#define EPMD_ALIVE_REQ 'a'
#define EPMD_ALIVE_OK_RESP 'Y'
-#define EPMD_PORT_REQ 'p'
-#define EPMD_NAMES_REQ 'n'
-#define EPMD_DUMP_REQ 'd'
-#define EPMD_KILL_REQ 'k'
-#define EPMD_STOP_REQ 's'
+#define EPMD_PORT_REQ 'p'
+#define EPMD_NAMES_REQ 'n'
+#define EPMD_DUMP_REQ 'd'
+#define EPMD_KILL_REQ 'k'
+#define EPMD_STOP_REQ 's'
/* New epmd messages */
-#define EPMD_ALIVE2_REQ 'x' /* 120 */
-#define EPMD_PORT2_REQ 'z' /* 122 */
-#define EPMD_ALIVE2_RESP 'y' /* 121 */
-#define EPMD_PORT2_RESP 'w' /* 119 */
+#define EPMD_ALIVE2_REQ 'x' /* 120 */
+#define EPMD_PORT2_REQ 'z' /* 122 */
+#define EPMD_ALIVE2_RESP 'y' /* 121 */
+#define EPMD_PORT2_RESP 'w' /* 119 */
static const value_string message_types[] = {
- { EPMD_ALIVE_REQ , "EPMD_ALIVE_REQ" },
- { EPMD_ALIVE_OK_RESP, "EPMD_ALIVE_OK_RESP" },
- { EPMD_PORT_REQ , "EPMD_PORT_REQ" },
- { EPMD_NAMES_REQ , "EPMD_NAMES_REQ" },
- { EPMD_DUMP_REQ , "EPMD_DUMP_REQ" },
- { EPMD_KILL_REQ , "EPMD_KILL_REQ" },
- { EPMD_STOP_REQ , "EPMD_STOP_REQ" },
- { EPMD_ALIVE2_REQ , "EPMD_ALIVE2_REQ" },
- { EPMD_PORT2_REQ , "EPMD_PORT2_REQ" },
- { EPMD_ALIVE2_RESP , "EPMD_ALIVE2_RESP" },
- { EPMD_PORT2_RESP , "EPMD_PORT2_RESP" },
- { 0, NULL }
+ { EPMD_ALIVE_REQ , "EPMD_ALIVE_REQ" },
+ { EPMD_ALIVE_OK_RESP, "EPMD_ALIVE_OK_RESP" },
+ { EPMD_PORT_REQ , "EPMD_PORT_REQ" },
+ { EPMD_NAMES_REQ , "EPMD_NAMES_REQ" },
+ { EPMD_DUMP_REQ , "EPMD_DUMP_REQ" },
+ { EPMD_KILL_REQ , "EPMD_KILL_REQ" },
+ { EPMD_STOP_REQ , "EPMD_STOP_REQ" },
+ { EPMD_ALIVE2_REQ , "EPMD_ALIVE2_REQ" },
+ { EPMD_PORT2_REQ , "EPMD_PORT2_REQ" },
+ { EPMD_ALIVE2_RESP , "EPMD_ALIVE2_RESP" },
+ { EPMD_PORT2_RESP , "EPMD_PORT2_RESP" },
+ { 0, NULL }
};
static const value_string node_type_vals[] = {
- { 72 , "R3 hidden node" },
- { 77 , "R3 erlang node" },
- { 104 , "R4 hidden node" },
- { 109 , "R4 erlang node" },
- { 110 , "R6 nodes" },
- { 0, NULL }
+ { 72 , "R3 hidden node" },
+ { 77 , "R3 erlang node" },
+ { 104 , "R4 hidden node" },
+ { 109 , "R4 erlang node" },
+ { 110 , "R6 nodes" },
+ { 0, NULL }
};
static const value_string protocol_vals[] = {
- { 0 , "tcp/ip-v4" },
- { 0, NULL }
+ { 0 , "tcp/ip-v4" },
+ { 0, NULL }
};
const value_string epmd_version_vals[] = {
- { 0 , "R3" },
- { 1 , "R4" },
- { 2 , "R5" },
- { 3 , "R5C" },
- { 4 , "R6 dev" },
- { 5 , "R6" },
- { 0, NULL }
+ { 0 , "R3" },
+ { 1 , "R4" },
+ { 2 , "R5" },
+ { 3 , "R5C" },
+ { 4 , "R6 dev" },
+ { 5 , "R6" },
+ { 0, NULL }
};
static void
dissect_epmd_request(packet_info *pinfo, tvbuff_t *tvb, gint offset, proto_tree *tree) {
- guint8 type;
- guint16 name_length = 0;
- const gchar *name = NULL;
-
- proto_tree_add_item(tree, hf_epmd_len, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
- type = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(tree, hf_epmd_type, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
- col_add_str(pinfo->cinfo, COL_INFO, val_to_str(type, VALS(message_types), "unknown (0x%02X)"));
-
- switch (type) {
- case EPMD_ALIVE2_REQ:
- proto_tree_add_item(tree, hf_epmd_port_no, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
- proto_tree_add_item(tree, hf_epmd_node_type, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
- proto_tree_add_item(tree, hf_epmd_protocol, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
- proto_tree_add_item(tree, hf_epmd_dist_high, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
- proto_tree_add_item(tree, hf_epmd_dist_low, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
- name_length = tvb_get_ntohs(tvb, offset);
- proto_tree_add_item(tree, hf_epmd_name_len, tvb, offset, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_epmd_name, tvb, offset + 2, name_length, ENC_ASCII|ENC_NA);
- name = tvb_get_ephemeral_string(tvb, offset + 2, name_length);
- offset += 2 + name_length;
- if (tvb_length_remaining(tvb, offset) >= 2) {
- guint16 elen=0;
- elen = tvb_get_ntohs(tvb, offset);
- proto_tree_add_item(tree, hf_epmd_elen, tvb, offset, 2, ENC_BIG_ENDIAN);
- if (elen > 0)
- proto_tree_add_item(tree, hf_epmd_edata, tvb, offset + 2, elen, ENC_NA);
- offset += 2 + elen;
- }
- break;
-
- case EPMD_PORT_REQ:
- case EPMD_PORT2_REQ:
- name_length = tvb_length_remaining(tvb, offset);
- proto_tree_add_item(tree, hf_epmd_name, tvb, offset, name_length, ENC_ASCII|ENC_NA);
- name = tvb_get_ephemeral_string(tvb, offset, name_length);
- break;
-
- case EPMD_ALIVE_REQ:
- proto_tree_add_item(tree, hf_epmd_port_no, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
- name_length = tvb_length_remaining(tvb, offset);
- proto_tree_add_item(tree, hf_epmd_name, tvb, offset, name_length, ENC_ASCII|ENC_NA);
- name = tvb_get_ephemeral_string(tvb, offset, name_length);
- break;
-
- case EPMD_NAMES_REQ:
- break;
-
- }
-
- if (name) {
- col_append_fstr(pinfo->cinfo, COL_INFO, " %s", name);
- }
+ guint8 type;
+ guint16 name_length = 0;
+ const gchar *name = NULL;
+
+ proto_tree_add_item(tree, hf_epmd_len, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ type = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_epmd_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ col_add_str(pinfo->cinfo, COL_INFO, val_to_str(type, VALS(message_types), "unknown (0x%02X)"));
+
+ switch (type) {
+ case EPMD_ALIVE2_REQ:
+ proto_tree_add_item(tree, hf_epmd_port_no, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(tree, hf_epmd_node_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_epmd_protocol, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_epmd_dist_high, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(tree, hf_epmd_dist_low, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ name_length = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_item(tree, hf_epmd_name_len, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_epmd_name, tvb, offset + 2, name_length, ENC_ASCII|ENC_NA);
+ name = tvb_get_ephemeral_string(tvb, offset + 2, name_length);
+ offset += 2 + name_length;
+ if (tvb_length_remaining(tvb, offset) >= 2) {
+ guint16 elen=0;
+ elen = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_item(tree, hf_epmd_elen, tvb, offset, 2, ENC_BIG_ENDIAN);
+ if (elen > 0)
+ proto_tree_add_item(tree, hf_epmd_edata, tvb, offset + 2, elen, ENC_NA);
+ offset += 2 + elen;
+ }
+ break;
+
+ case EPMD_PORT_REQ:
+ case EPMD_PORT2_REQ:
+ name_length = tvb_length_remaining(tvb, offset);
+ proto_tree_add_item(tree, hf_epmd_name, tvb, offset, name_length, ENC_ASCII|ENC_NA);
+ name = tvb_get_ephemeral_string(tvb, offset, name_length);
+ break;
+
+ case EPMD_ALIVE_REQ:
+ proto_tree_add_item(tree, hf_epmd_port_no, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ name_length = tvb_length_remaining(tvb, offset);
+ proto_tree_add_item(tree, hf_epmd_name, tvb, offset, name_length, ENC_ASCII|ENC_NA);
+ name = tvb_get_ephemeral_string(tvb, offset, name_length);
+ break;
+
+ case EPMD_NAMES_REQ:
+ break;
+
+ }
+
+ if (name) {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s", name);
+ }
}
static void
dissect_epmd_response_names(packet_info *pinfo _U_, tvbuff_t *tvb, gint offset, proto_tree *tree) {
- proto_tree_add_item(tree, hf_epmd_port_no, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
- proto_tree_add_item(tree, hf_epmd_names, tvb, offset, -1, ENC_NA);
+ proto_tree_add_item(tree, hf_epmd_port_no, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(tree, hf_epmd_names, tvb, offset, -1, ENC_NA);
}
static void
dissect_epmd_response(packet_info *pinfo, tvbuff_t *tvb, gint offset, proto_tree *tree) {
- guint8 type, result;
- guint32 port;
- guint16 name_length = 0;
- const gchar *name = NULL;
- conversation_t *conv = NULL;
-
- port = tvb_get_ntohl(tvb, offset);
- if (port == EPMD_PORT) {
- dissect_epmd_response_names(pinfo, tvb, offset, tree);
- return;
- }
-
- type = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(tree, hf_epmd_type, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
- col_add_str(pinfo->cinfo, COL_INFO, val_to_str(type, VALS(message_types), "unknown (0x%02X)"));
-
- switch (type) {
- case EPMD_ALIVE_OK_RESP:
- case EPMD_ALIVE2_RESP:
- result = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(tree, hf_epmd_result, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
- proto_tree_add_item(tree, hf_epmd_creation, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
- if (!result) {
- col_append_str(pinfo->cinfo, COL_INFO, " OK");
- } else {
- col_append_fstr(pinfo->cinfo, COL_INFO, " ERROR 0x%02X", result);
- }
- break;
-
- case EPMD_PORT2_RESP:
- result = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(tree, hf_epmd_result, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
- if (!result) {
- col_append_str(pinfo->cinfo, COL_INFO, " OK");
- } else {
- col_append_fstr(pinfo->cinfo, COL_INFO, " ERROR 0x%02X", result);
- break;
- }
- port = tvb_get_ntohs(tvb, offset);
- proto_tree_add_item(tree, hf_epmd_port_no, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
- proto_tree_add_item(tree, hf_epmd_node_type, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
- proto_tree_add_item(tree, hf_epmd_protocol, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
- proto_tree_add_item(tree, hf_epmd_dist_high, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
- proto_tree_add_item(tree, hf_epmd_dist_low, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
- name_length = tvb_get_ntohs(tvb, offset);
- proto_tree_add_item(tree, hf_epmd_name_len, tvb, offset, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_epmd_name, tvb, offset + 2, name_length, ENC_ASCII|ENC_NA);
- name = tvb_get_ephemeral_string(tvb, offset + 2, name_length);
- offset += 2 + name_length;
- if (tvb_length_remaining(tvb, offset) >= 2) {
- guint16 elen=0;
- elen = tvb_get_ntohs(tvb, offset);
- proto_tree_add_item(tree, hf_epmd_elen, tvb, offset, 2, ENC_BIG_ENDIAN);
- if (elen > 0)
- proto_tree_add_item(tree, hf_epmd_edata, tvb, offset + 2, elen, ENC_NA);
- offset += 2 + elen;
- }
- col_append_fstr(pinfo->cinfo, COL_INFO, " %s port=%d", name, port);
- if (!pinfo->fd->flags.visited) {
- conv = conversation_new(pinfo->fd->num, &pinfo->src, &pinfo->dst, PT_TCP, port, 0, NO_PORT2);
- conversation_set_dissector(conv, edp_handle);
- }
- break;
- }
+ guint8 type, result;
+ guint32 port;
+ guint16 name_length = 0;
+ const gchar *name = NULL;
+ conversation_t *conv = NULL;
+
+ port = tvb_get_ntohl(tvb, offset);
+ if (port == EPMD_PORT) {
+ dissect_epmd_response_names(pinfo, tvb, offset, tree);
+ return;
+ }
+
+ type = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_epmd_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ col_add_str(pinfo->cinfo, COL_INFO, val_to_str(type, VALS(message_types), "unknown (0x%02X)"));
+
+ switch (type) {
+ case EPMD_ALIVE_OK_RESP:
+ case EPMD_ALIVE2_RESP:
+ result = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_epmd_result, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_epmd_creation, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ if (!result) {
+ col_append_str(pinfo->cinfo, COL_INFO, " OK");
+ } else {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " ERROR 0x%02X", result);
+ }
+ break;
+
+ case EPMD_PORT2_RESP:
+ result = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_epmd_result, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ if (!result) {
+ col_append_str(pinfo->cinfo, COL_INFO, " OK");
+ } else {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " ERROR 0x%02X", result);
+ break;
+ }
+ port = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_item(tree, hf_epmd_port_no, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(tree, hf_epmd_node_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_epmd_protocol, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_epmd_dist_high, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(tree, hf_epmd_dist_low, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ name_length = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_item(tree, hf_epmd_name_len, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_epmd_name, tvb, offset + 2, name_length, ENC_ASCII|ENC_NA);
+ name = tvb_get_ephemeral_string(tvb, offset + 2, name_length);
+ offset += 2 + name_length;
+ if (tvb_length_remaining(tvb, offset) >= 2) {
+ guint16 elen=0;
+ elen = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_item(tree, hf_epmd_elen, tvb, offset, 2, ENC_BIG_ENDIAN);
+ if (elen > 0)
+ proto_tree_add_item(tree, hf_epmd_edata, tvb, offset + 2, elen, ENC_NA);
+ offset += 2 + elen;
+ }
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s port=%d", name, port);
+ if (!pinfo->fd->flags.visited) {
+ conv = conversation_new(pinfo->fd->num, &pinfo->src, &pinfo->dst, PT_TCP, port, 0, NO_PORT2);
+ conversation_set_dissector(conv, edp_handle);
+ }
+ break;
+ }
}
static gboolean
@@ -281,118 +281,132 @@ check_epmd(tvbuff_t *tvb) {
* doesn't bring very much.
*/
if (tvb_length(tvb) < 3)
- return(FALSE);
+ return (FALSE);
type = tvb_get_guint8(tvb, 0);
switch (type) {
- case EPMD_ALIVE_OK_RESP:
- case EPMD_ALIVE2_RESP:
- case EPMD_PORT2_RESP:
- return(TRUE);
- default:
- break;
+ case EPMD_ALIVE_OK_RESP:
+ case EPMD_ALIVE2_RESP:
+ case EPMD_PORT2_RESP:
+ return (TRUE);
+ default:
+ break;
}
type = tvb_get_guint8(tvb, 2);
switch (type) {
- case EPMD_ALIVE_REQ:
- case EPMD_ALIVE2_REQ:
- case EPMD_PORT_REQ:
- case EPMD_PORT2_REQ:
- case EPMD_NAMES_REQ:
- return( TRUE);
- default:
- break;
+ case EPMD_ALIVE_REQ:
+ case EPMD_ALIVE2_REQ:
+ case EPMD_PORT_REQ:
+ case EPMD_PORT2_REQ:
+ case EPMD_NAMES_REQ:
+ return (TRUE);
+ default:
+ break;
}
- return(FALSE);
+ return (FALSE);
}
static int
dissect_epmd(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
- proto_tree *epmd_tree;
- proto_item *ti;
+ proto_tree *epmd_tree;
+ proto_item *ti;
- if (!check_epmd(tvb))
- return(0);
+ if (!check_epmd(tvb))
+ return (0);
- col_set_str(pinfo->cinfo, COL_PROTOCOL, PSNAME);
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, PSNAME);
- ti = proto_tree_add_item(tree, proto_epmd, tvb, 0, -1, ENC_NA);
- epmd_tree = proto_item_add_subtree(ti, ett_epmd);
+ ti = proto_tree_add_item(tree, proto_epmd, tvb, 0, -1, ENC_NA);
+ epmd_tree = proto_item_add_subtree(ti, ett_epmd);
- if (pinfo->match_port == pinfo->destport) {
- dissect_epmd_request(pinfo, tvb, 0, epmd_tree);
- } else {
- dissect_epmd_response(pinfo, tvb, 0, epmd_tree);
- }
+ if (pinfo->match_port == pinfo->destport) {
+ dissect_epmd_request(pinfo, tvb, 0, epmd_tree);
+ } else {
+ dissect_epmd_response(pinfo, tvb, 0, epmd_tree);
+ }
- return(tvb_length(tvb));
+ return (tvb_length(tvb));
}
void
proto_register_epmd(void)
{
static hf_register_info hf[] = {
- { &hf_epmd_len,
- { "Length", "epmd.len",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Message Length", HFILL }},
- { &hf_epmd_type,
- { "Type", "epmd.type",
- FT_UINT8, BASE_DEC, VALS(message_types), 0x0,
- "Message Type", HFILL }},
- { &hf_epmd_result,
- { "Result", "epmd.result",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
- { &hf_epmd_port_no,
- { "Port No", "epmd.port_no",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
- { &hf_epmd_node_type,
- { "Node Type", "epmd.node_type",
- FT_UINT8, BASE_DEC, VALS(node_type_vals), 0x0,
- NULL, HFILL }},
- { &hf_epmd_protocol,
- { "Protocol", "epmd.protocol",
- FT_UINT8, BASE_DEC, VALS(protocol_vals), 0x0,
- NULL, HFILL }},
- { &hf_epmd_creation,
- { "Creation", "epmd.creation",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
- { &hf_epmd_dist_high,
- { "Highest Version", "epmd.dist_high",
- FT_UINT16, BASE_DEC, VALS(epmd_version_vals), 0x0,
- NULL, HFILL }},
- { &hf_epmd_dist_low,
- { "Lowest Version", "epmd.dist_low",
- FT_UINT16, BASE_DEC, VALS(epmd_version_vals), 0x0,
- NULL, HFILL }},
- { &hf_epmd_name_len,
- { "Name Length", "epmd.name_len",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
- { &hf_epmd_name,
- { "Node Name", "epmd.name",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
- { &hf_epmd_elen,
- { "Elen", "epmd.elen",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Extra Length", HFILL }},
- { &hf_epmd_edata,
- { "Edata", "epmd.edata",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- "Extra Data", HFILL }},
- { &hf_epmd_names,
- { "Names", "epmd.names",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- "List of names", HFILL }}
+ { &hf_epmd_len,
+ { "Length", "epmd.len",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Message Length", HFILL }},
+
+ { &hf_epmd_type,
+ { "Type", "epmd.type",
+ FT_UINT8, BASE_DEC, VALS(message_types), 0x0,
+ "Message Type", HFILL }},
+
+ { &hf_epmd_result,
+ { "Result", "epmd.result",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_epmd_port_no,
+ { "Port No", "epmd.port_no",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_epmd_node_type,
+ { "Node Type", "epmd.node_type",
+ FT_UINT8, BASE_DEC, VALS(node_type_vals), 0x0,
+ NULL, HFILL }},
+
+ { &hf_epmd_protocol,
+ { "Protocol", "epmd.protocol",
+ FT_UINT8, BASE_DEC, VALS(protocol_vals), 0x0,
+ NULL, HFILL }},
+
+ { &hf_epmd_creation,
+ { "Creation", "epmd.creation",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_epmd_dist_high,
+ { "Highest Version", "epmd.dist_high",
+ FT_UINT16, BASE_DEC, VALS(epmd_version_vals), 0x0,
+ NULL, HFILL }},
+
+ { &hf_epmd_dist_low,
+ { "Lowest Version", "epmd.dist_low",
+ FT_UINT16, BASE_DEC, VALS(epmd_version_vals), 0x0,
+ NULL, HFILL }},
+
+ { &hf_epmd_name_len,
+ { "Name Length", "epmd.name_len",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_epmd_name,
+ { "Node Name", "epmd.name",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_epmd_elen,
+ { "Elen", "epmd.elen",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Extra Length", HFILL }},
+
+ { &hf_epmd_edata,
+ { "Edata", "epmd.edata",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Extra Data", HFILL }},
+
+ { &hf_epmd_names,
+ { "Names", "epmd.names",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "List of names", HFILL }}
};
+
static gint *ett[] = {
- &ett_epmd,
+ &ett_epmd,
};
proto_epmd = proto_register_protocol(PNAME, PSNAME, PFNAME);
@@ -403,10 +417,10 @@ proto_register_epmd(void)
void
proto_reg_handoff_epmd(void) {
- dissector_handle_t epmd_handle;
+ dissector_handle_t epmd_handle;
- epmd_handle = find_dissector("epmd");
- edp_handle = find_dissector("erldp");
+ epmd_handle = find_dissector("epmd");
+ edp_handle = find_dissector("erldp");
- dissector_add_uint("tcp.port", EPMD_PORT, epmd_handle);
+ dissector_add_uint("tcp.port", EPMD_PORT, epmd_handle);
}
diff --git a/epan/dissectors/packet-erf.c b/epan/dissectors/packet-erf.c
index a1568dfb57..b877a3eee6 100644
--- a/epan/dissectors/packet-erf.c
+++ b/epan/dissectors/packet-erf.c
@@ -41,7 +41,7 @@
#define EXT_HDR_TYPE_RAW_LINK 5
#define EXT_HDR_TYPE_BFS 6
#define EXT_HDR_TYPE_CHANNELISED 12
-#define EXT_HDR_TYPE_NEW_BFS 14
+#define EXT_HDR_TYPE_SIGNATURE 14
#define DECHAN_MAX_AUG_INDEX 4
@@ -162,10 +162,10 @@ static int hf_erf_ehdr_chan_assoc_virt_container_size = -1;
static int hf_erf_ehdr_chan_speed = -1;
static int hf_erf_ehdr_chan_type = -1;
-/* New BFS extension header */
-static int hf_erf_ehdr_new_bfs_payload_hash = -1;
-static int hf_erf_ehdr_new_bfs_color = -1;
-static int hf_erf_ehdr_new_bfs_flow_hash = -1;
+/* Filter Hash extension header */
+static int hf_erf_ehdr_signature_payload_hash = -1;
+static int hf_erf_ehdr_signature_color = -1;
+static int hf_erf_ehdr_signature_flow_hash = -1;
/* Unknown extension header */
static int hf_erf_ehdr_unk = -1;
@@ -299,6 +299,8 @@ static dissector_handle_t atm_untruncated_handle;
static gboolean erf_ethfcs = TRUE;
static dissector_handle_t ethwithfcs_handle, ethwithoutfcs_handle;
+static dissector_handle_t sdh_handle;
+
/* ERF Header */
#define ERF_HDR_TYPES_MASK 0xff
#define ERF_HDR_TYPE_MASK 0x7f
@@ -440,7 +442,7 @@ static const value_string ehdr_type_vals[] = {
{ EXT_HDR_TYPE_RAW_LINK , "Raw Link"},
{ EXT_HDR_TYPE_BFS , "BFS Filter/Hash"},
{ EXT_HDR_TYPE_CHANNELISED , "Channelised"},
- { EXT_HDR_TYPE_NEW_BFS , "New BFS Filter/Hash"},
+ { EXT_HDR_TYPE_SIGNATURE , "Signature"},
{ 0, NULL }
};
@@ -733,10 +735,9 @@ channelised_fill_sdh_g707_format(sdh_g707_format_t* in_fmt, guint16 bit_flds, gu
}
static void
-channelised_fill_vc_id_string(char* out_string, int maxstrlen, sdh_g707_format_t* in_fmt)
+channelised_fill_vc_id_string(emem_strbuf_t* out_string, sdh_g707_format_t* in_fmt)
{
int i;
- int print_index;
gboolean is_printed = FALSE;
static char* g_vc_size_strings[] = {
@@ -748,7 +749,7 @@ channelised_fill_vc_id_string(char* out_string, int maxstrlen, sdh_g707_format_t
"VC4-64c", /*0x5*/
"VC4-256c", /*0x6*/};
- print_index = g_snprintf(out_string, maxstrlen, "%s(",
+ ep_strbuf_printf(out_string, "%s(",
(in_fmt->m_vc_size < array_length(g_vc_size_strings)) ?
g_vc_size_strings[in_fmt->m_vc_size] : g_vc_size_strings[0] );
@@ -757,12 +758,9 @@ channelised_fill_vc_id_string(char* out_string, int maxstrlen, sdh_g707_format_t
/* line rate is not given */
for (i = (DECHAN_MAX_AUG_INDEX -1); i >= 0; i--)
{
- if (print_index >= (maxstrlen-1))
- break;
if ((in_fmt->m_vc_index_array[i] > 0) || (is_printed) )
{
- print_index += g_snprintf(out_string+print_index, maxstrlen-print_index,
- "%s%d",
+ ep_strbuf_append_printf(out_string, "%s%d",
((is_printed)?", ":""),
in_fmt->m_vc_index_array[i]);
is_printed = TRUE;
@@ -774,10 +772,7 @@ channelised_fill_vc_id_string(char* out_string, int maxstrlen, sdh_g707_format_t
{
for (i = in_fmt->m_sdh_line_rate - 2; i >= 0; i--)
{
- if (print_index >= (maxstrlen-1))
- break;
- print_index += g_snprintf(out_string+print_index, maxstrlen-print_index,
- "%s%d",
+ ep_strbuf_append_printf(out_string, "%s%d",
((is_printed)?", ":""),
in_fmt->m_vc_index_array[i]);
is_printed = TRUE;
@@ -788,16 +783,12 @@ channelised_fill_vc_id_string(char* out_string, int maxstrlen, sdh_g707_format_t
/* Not printed . possibly its a ocXc packet with (0,0,0...) */
for ( i =0; i < in_fmt->m_vc_size - 2; i++)
{
- if (print_index >= (maxstrlen-1))
- break;
- print_index += g_snprintf(out_string+print_index, maxstrlen-print_index,
- "%s0",
+ ep_strbuf_append_printf(out_string, "%s0",
((is_printed)?", ":""));
is_printed = TRUE;
}
}
- if (print_index < (maxstrlen-1))
- g_snprintf(out_string+print_index, maxstrlen-print_index, ")");
+ ep_strbuf_append_c(out_string, ')');
return;
}
@@ -809,10 +800,10 @@ dissect_channelised_ex_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ps
guint8 vc_size = (guint8)((hdr >> 16) & 0xFF);
guint8 line_speed = (guint8)((hdr >> 8) & 0xFF);
sdh_g707_format_t g707_format;
- char vc_id_string[64] = {'\0'};
+ emem_strbuf_t *vc_id_string = ep_strbuf_new_label("");
channelised_fill_sdh_g707_format(&g707_format, vc_id, vc_size, line_speed);
- channelised_fill_vc_id_string(vc_id_string, 64, &g707_format);
+ channelised_fill_vc_id_string(vc_id_string, &g707_format);
if (pseudo_hdr_tree) {
proto_item *int_item;
@@ -828,7 +819,7 @@ dissect_channelised_ex_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ps
proto_tree_add_uint(int_tree, hf_erf_ehdr_chan_seqnum, tvb, 0, 0, (guint16)((hdr >> 40) & 0x7FFF));
proto_tree_add_uint(int_tree, hf_erf_ehdr_chan_res, tvb, 0, 0, (guint8)((hdr >> 32) & 0xFF));
proto_tree_add_uint(int_tree, hf_erf_ehdr_chan_virt_container_id, tvb, 0, 0, vc_id);
- proto_tree_add_text(int_tree, tvb, 0, 0, "Virtual Container ID (g.707): %s", vc_id_string);
+ proto_tree_add_text(int_tree, tvb, 0, 0, "Virtual Container ID (g.707): %s", vc_id_string->str);
proto_tree_add_uint(int_tree, hf_erf_ehdr_chan_assoc_virt_container_size, tvb, 0, 0, vc_size);
proto_tree_add_uint(int_tree, hf_erf_ehdr_chan_speed, tvb, 0, 0, line_speed);
proto_tree_add_uint(int_tree, hf_erf_ehdr_chan_type, tvb, 0, 0, (guint8)((hdr >> 0) & 0xFF));
@@ -836,21 +827,21 @@ dissect_channelised_ex_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ps
}
static void
-dissect_new_bfs_ex_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *pseudo_hdr_tree, int idx)
+dissect_signature_ex_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *pseudo_hdr_tree, int idx)
{
if(pseudo_hdr_tree) {
proto_item *int_item;
proto_item *int_tree;
guint64 hdr = pinfo->pseudo_header->erf.ehdr_list[idx].ehdr;
- int_item = proto_tree_add_text(pseudo_hdr_tree, tvb, 0, 0, "New BFS Filter/Hash");
+ int_item = proto_tree_add_text(pseudo_hdr_tree, tvb, 0, 0, "Signature");
int_tree = proto_item_add_subtree(int_item, ett_erf_pseudo_hdr);
PROTO_ITEM_SET_GENERATED(int_item);
proto_tree_add_uint(int_tree, hf_erf_ehdr_t, tvb, 0, 0, (guint8)((hdr >> 56) & 0x7F));
- proto_tree_add_uint(int_tree, hf_erf_ehdr_new_bfs_payload_hash, tvb, 0, 0, (guint32)((hdr >> 32) & 0xFFFFFF));
- proto_tree_add_uint(int_tree, hf_erf_ehdr_new_bfs_color, tvb, 0, 0, (guint8)((hdr >> 24) & 0xFF));
- proto_tree_add_uint(int_tree, hf_erf_ehdr_new_bfs_flow_hash, tvb, 0, 0, (guint32)(hdr & 0xFFFFFF));
+ proto_tree_add_uint(int_tree, hf_erf_ehdr_signature_payload_hash, tvb, 0, 0, (guint32)((hdr >> 32) & 0xFFFFFF));
+ proto_tree_add_uint(int_tree, hf_erf_ehdr_signature_color, tvb, 0, 0, (guint8)((hdr >> 24) & 0xFF));
+ proto_tree_add_uint(int_tree, hf_erf_ehdr_signature_flow_hash, tvb, 0, 0, (guint32)(hdr & 0xFFFFFF));
}
}
@@ -1173,8 +1164,8 @@ dissect_erf_pseudo_extension_header(tvbuff_t *tvb, packet_info *pinfo, proto_tre
case EXT_HDR_TYPE_CHANNELISED:
dissect_channelised_ex_header(tvb, pinfo, pseudo_hdr_tree, i);
break;
- case EXT_HDR_TYPE_NEW_BFS:
- dissect_new_bfs_ex_header(tvb, pinfo, pseudo_hdr_tree, i);
+ case EXT_HDR_TYPE_SIGNATURE:
+ dissect_signature_ex_header(tvb, pinfo, pseudo_hdr_tree, i);
break;
default:
dissect_unknown_ex_header(tvb, pinfo, pseudo_hdr_tree, i);
@@ -1240,7 +1231,12 @@ dissect_erf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
switch (erf_type) {
case ERF_TYPE_RAW_LINK:
- call_dissector(data_handle, tvb, pinfo, erf_tree);
+ if(sdh_handle){
+ call_dissector(sdh_handle, tvb, pinfo, tree);
+ }
+ else{
+ call_dissector(data_handle, tvb, pinfo, erf_tree);
+ }
break;
case ERF_TYPE_IPV4:
@@ -1616,10 +1612,10 @@ proto_register_erf(void)
/* Channelised Extension Header */
{ &hf_erf_ehdr_chan_morebits,
{ "More Bits", "erf.ehdr.chan.morebits",
- FT_BOOLEAN, BASE_HEX, NULL, 0, NULL, HFILL } },
+ FT_BOOLEAN, BASE_NONE, NULL, 0, NULL, HFILL } },
{ &hf_erf_ehdr_chan_morefrag,
{ "More Fragments", "erf.ehdr.chan.morefrag",
- FT_BOOLEAN, BASE_HEX, NULL, 0, NULL, HFILL } },
+ FT_BOOLEAN, BASE_NONE, NULL, 0, NULL, HFILL } },
{ &hf_erf_ehdr_chan_seqnum,
{ "Sequence Number", "erf.ehdr.chan.seqnum",
FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } },
@@ -1639,15 +1635,15 @@ proto_register_erf(void)
{ "Frame Part Type", "erf.ehdr.chan.type",
FT_UINT8, BASE_HEX, VALS(channelised_type), 0, NULL, HFILL } },
- /* New BFS Extension Header */
- { &hf_erf_ehdr_new_bfs_payload_hash,
- { "Payload Hash", "erf.hdr.newbfs.payloadhash",
+ /* Signature Extension Header */
+ { &hf_erf_ehdr_signature_payload_hash,
+ { "Payload Hash", "erf.hdr.signature.payloadhash",
FT_UINT24, BASE_HEX, NULL, 0, NULL, HFILL } },
- { &hf_erf_ehdr_new_bfs_color,
- { "Filter Color", "erf.hdr.newbfs.color",
+ { &hf_erf_ehdr_signature_color,
+ { "Filter Color", "erf.hdr.signature.color",
FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL } },
- { &hf_erf_ehdr_new_bfs_flow_hash,
- { "Flow Hash", "erf.hdr.newbfs.flowhash",
+ { &hf_erf_ehdr_signature_flow_hash,
+ { "Flow Hash", "erf.hdr.signature.flowhash",
FT_UINT24, BASE_HEX, NULL, 0, NULL, HFILL } },
/* Unknown Extension Header */
@@ -1955,4 +1951,6 @@ proto_reg_handoff_erf(void)
/* Get handles for Ethernet dissectors */
ethwithfcs_handle = find_dissector("eth_withfcs");
ethwithoutfcs_handle = find_dissector("eth_withoutfcs");
+
+ sdh_handle = find_dissector("sdh");
}
diff --git a/epan/dissectors/packet-erldp.c b/epan/dissectors/packet-erldp.c
index 62c916a711..c8da6c4d29 100644
--- a/epan/dissectors/packet-erldp.c
+++ b/epan/dissectors/packet-erldp.c
@@ -422,13 +422,13 @@ static void dissect_erldp_handshake(tvbuff_t *tvb, packet_info *pinfo, proto_tre
proto_tree_add_item(tree, hf_erldp_challenge, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
proto_tree_add_item(tree, hf_erldp_digest, tvb, offset, 16, ENC_NA);
- offset += 16;
+ /*offset += 16;*/
col_add_str(pinfo->cinfo, COL_INFO, "SEND_CHALLENGE_REPLY");
break;
case 'a' :
proto_tree_add_item(tree, hf_erldp_digest, tvb, offset, 16, ENC_NA);
- offset += 16;
+ /*offset += 16;*/
col_add_str(pinfo->cinfo, COL_INFO, "SEND_CHALLENGE_ACK");
break;
@@ -487,7 +487,7 @@ static void dissect_erldp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
}
offset = dissect_etf_type("ControlMessage", pinfo, tvb, offset, erldp_tree);
if (tvb_length_remaining(tvb, offset) > 0)
- offset = dissect_etf_type("Message", pinfo, tvb, offset, erldp_tree);
+ dissect_etf_type("Message", pinfo, tvb, offset, erldp_tree);
break;
default:
diff --git a/epan/dissectors/packet-esis.c b/epan/dissectors/packet-esis.c
index 87d6295f6c..ba7903b070 100644
--- a/epan/dissectors/packet-esis.c
+++ b/epan/dissectors/packet-esis.c
@@ -162,19 +162,19 @@ esis_dissect_esh_pdu( guint8 len, tvbuff_t *tvb, proto_tree *tree) {
len -= 1;
ti = proto_tree_add_text( tree, tvb, offset, -1,
- "Number of Source Addresses (SA, Format: NSAP) : %u", no_sa );
+ "Number of Source Addresses (SA, Format: NSAP) : %u", no_sa );
offset++;
esis_area_tree = proto_item_add_subtree( ti, ett_esis_area_addr );
while ( no_sa-- > 0 ) {
- sal = (int) tvb_get_guint8(tvb, offset);
- proto_tree_add_text(esis_area_tree, tvb, offset, 1, "SAL: %2u Octets", sal);
- offset++;
- proto_tree_add_text(esis_area_tree, tvb, offset, sal,
- " SA: %s",
- print_nsap_net( tvb_get_ptr(tvb, offset, sal), sal ) );
- offset += sal;
- len -= ( sal + 1 );
+ sal = (int) tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(esis_area_tree, tvb, offset, 1, "SAL: %2u Octets", sal);
+ offset++;
+ proto_tree_add_text(esis_area_tree, tvb, offset, sal,
+ " SA: %s",
+ print_nsap_net( tvb_get_ptr(tvb, offset, sal), sal ) );
+ offset += sal;
+ len -= ( sal + 1 );
}
dissect_osi_options( len, tvb, offset, tree );
}
@@ -194,8 +194,8 @@ esis_dissect_ish_pdu( guint8 len, tvbuff_t *tvb, proto_tree *tree) {
"### Network Entity Title Section ###");
proto_tree_add_text( tree, tvb, offset++, 1, "NETL: %2u Octets", netl);
proto_tree_add_text( tree, tvb, offset, netl,
- " NET: %s",
- print_nsap_net( tvb_get_ptr(tvb, offset, netl), netl ) );
+ " NET: %s",
+ print_nsap_net( tvb_get_ptr(tvb, offset, netl), netl ) );
offset += netl;
len -= ( netl + 1 );
@@ -218,7 +218,7 @@ esis_dissect_redirect_pdu( guint8 len, tvbuff_t *tvb, proto_tree *tree) {
proto_tree_add_text( tree, tvb, offset++, 1, "DAL: %2u Octets", tmpl);
proto_tree_add_text( tree, tvb, offset, tmpl,
" DA : %s",
- print_nsap_net( tvb_get_ptr(tvb, offset, tmpl), tmpl ) );
+ print_nsap_net( tvb_get_ptr(tvb, offset, tmpl), tmpl ) );
offset += tmpl;
len -= ( tmpl + 1 );
tmpl = (int) tvb_get_guint8(tvb, offset);
@@ -227,8 +227,8 @@ esis_dissect_redirect_pdu( guint8 len, tvbuff_t *tvb, proto_tree *tree) {
"### Subnetwork Address Section ###");
proto_tree_add_text( tree, tvb, offset++, 1, "BSNPAL: %2u Octets", tmpl);
proto_tree_add_text( tree, tvb, offset, tmpl,
- " BSNPA: %s",
- print_system_id( tvb_get_ptr(tvb, offset, tmpl), tmpl ) );
+ " BSNPA: %s",
+ print_system_id( tvb_get_ptr(tvb, offset, tmpl), tmpl ) );
offset += tmpl;
len -= ( tmpl + 1 );
tmpl = (int) tvb_get_guint8(tvb, offset);
@@ -245,7 +245,7 @@ esis_dissect_redirect_pdu( guint8 len, tvbuff_t *tvb, proto_tree *tree) {
proto_tree_add_text( tree, tvb, offset++, 1, "NETL: %2u Octets", tmpl );
proto_tree_add_text( tree, tvb, offset, tmpl,
" NET: %s",
- print_nsap_net( tvb_get_ptr(tvb, offset, tmpl), tmpl ) );
+ print_nsap_net( tvb_get_ptr(tvb, offset, tmpl), tmpl ) );
offset += tmpl;
len -= ( tmpl + 1 );
}
@@ -271,119 +271,119 @@ esis_dissect_redirect_pdu( guint8 len, tvbuff_t *tvb, proto_tree *tree) {
*/
static void
dissect_esis(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
- const char *pdu_type_string = NULL;
- const char *pdu_type_format_string = "PDU Type : %s (R:%s%s%s)";
- esis_hdr_t ehdr;
- proto_item *ti;
- proto_tree *esis_tree = NULL;
- guint8 variable_len;
- guint tmp_uint = 0;
- const char *cksum_status;
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "ESIS");
- col_clear(pinfo->cinfo, COL_INFO);
-
- tvb_memcpy(tvb, (guint8 *)&ehdr, 0, sizeof ehdr);
-
- if (tree) {
- ti = proto_tree_add_item(tree, proto_esis, tvb, 0, -1, ENC_NA);
- esis_tree = proto_item_add_subtree(ti, ett_esis);
-
- if (ehdr.esis_version != ESIS_REQUIRED_VERSION){
- esis_dissect_unknown(tvb, esis_tree,
- "Unknown ESIS version (%u vs %u)",
+ const char *pdu_type_string = NULL;
+ const char *pdu_type_format_string = "PDU Type : %s (R:%s%s%s)";
+ esis_hdr_t ehdr;
+ proto_item *ti;
+ proto_tree *esis_tree = NULL;
+ guint8 variable_len;
+ guint tmp_uint = 0;
+ const char *cksum_status;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "ESIS");
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ tvb_memcpy(tvb, (guint8 *)&ehdr, 0, sizeof ehdr);
+
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_esis, tvb, 0, -1, ENC_NA);
+ esis_tree = proto_item_add_subtree(ti, ett_esis);
+
+ if (ehdr.esis_version != ESIS_REQUIRED_VERSION){
+ esis_dissect_unknown(tvb, esis_tree,
+ "Unknown ESIS version (%u vs %u)",
ehdr.esis_version, ESIS_REQUIRED_VERSION );
- return;
- }
+ return;
+ }
- if (ehdr.esis_length < ESIS_HDR_FIXED_LENGTH) {
- esis_dissect_unknown(tvb, esis_tree,
- "Bogus ESIS length (%u, must be >= %u)",
+ if (ehdr.esis_length < ESIS_HDR_FIXED_LENGTH) {
+ esis_dissect_unknown(tvb, esis_tree,
+ "Bogus ESIS length (%u, must be >= %u)",
ehdr.esis_length, ESIS_HDR_FIXED_LENGTH );
- return;
- }
- proto_tree_add_uint( esis_tree, hf_esis_nlpi, tvb, 0, 1, ehdr.esis_nlpi );
- proto_tree_add_uint( esis_tree, hf_esis_length, tvb,
- 1, 1, ehdr.esis_length );
- proto_tree_add_uint( esis_tree, hf_esis_version, tvb, 2, 1,
- ehdr.esis_version );
- proto_tree_add_uint( esis_tree, hf_esis_reserved, tvb, 3, 1,
- ehdr.esis_reserved );
-
- pdu_type_string = val_to_str(ehdr.esis_type&OSI_PDU_TYPE_MASK,
- esis_vals, "Unknown (0x%x)");
-
- proto_tree_add_uint_format( esis_tree, hf_esis_type, tvb, 4, 1,
- ehdr.esis_type,
- pdu_type_format_string,
- pdu_type_string,
- (ehdr.esis_type&BIT_8) ? "1" : "0",
- (ehdr.esis_type&BIT_7) ? "1" : "0",
- (ehdr.esis_type&BIT_6) ? "1" : "0");
-
- tmp_uint = pntohs( ehdr.esis_holdtime );
- proto_tree_add_uint_format(esis_tree, hf_esis_holdtime, tvb, 5, 2,
- tmp_uint, "Holding Time : %u seconds",
- tmp_uint );
-
- tmp_uint = pntohs( ehdr.esis_checksum );
-
- switch (calc_checksum( tvb, 0, ehdr.esis_length, tmp_uint )) {
-
- case NO_CKSUM:
- cksum_status = "Not Used";
- break;
-
- case DATA_MISSING:
- cksum_status = "Not checkable - not all of packet was captured";
- break;
-
- case CKSUM_OK:
- cksum_status = "Is good";
- break;
-
- case CKSUM_NOT_OK:
- cksum_status = "Is wrong";
- break;
-
- default:
- cksum_status = NULL;
- DISSECTOR_ASSERT_NOT_REACHED();
- }
- proto_tree_add_uint_format( esis_tree, hf_esis_checksum, tvb, 7, 2,
- tmp_uint, "Checksum : 0x%x ( %s )",
- tmp_uint, cksum_status );
- }
-
-
- /*
- * Let us make sure we use the same names for all our decodes
- * here. First, dump the name into info column, and THEN
- * dispatch the sub-type.
- */
- if (check_col(pinfo->cinfo, COL_INFO)) {
- col_add_str(pinfo->cinfo, COL_INFO,
- val_to_str( ehdr.esis_type&OSI_PDU_TYPE_MASK, esis_vals,
- "Unknown (0x%x)" ) );
- }
-
- variable_len = ehdr.esis_length - ESIS_HDR_FIXED_LENGTH;
-
- switch (ehdr.esis_type & OSI_PDU_TYPE_MASK) {
- case ESIS_ESH_PDU:
- esis_dissect_esh_pdu( variable_len, tvb, esis_tree);
- break;
- case ESIS_ISH_PDU:
- esis_dissect_ish_pdu( variable_len, tvb, esis_tree);
- break;
- case ESIS_RD_PDU:
- esis_dissect_redirect_pdu( variable_len, tvb, esis_tree);
- break;
- default:
- esis_dissect_unknown(tvb, esis_tree,
- "Unknown ESIS packet type 0x%x",
- ehdr.esis_type & OSI_PDU_TYPE_MASK );
- }
+ return;
+ }
+ proto_tree_add_uint( esis_tree, hf_esis_nlpi, tvb, 0, 1, ehdr.esis_nlpi );
+ proto_tree_add_uint( esis_tree, hf_esis_length, tvb,
+ 1, 1, ehdr.esis_length );
+ proto_tree_add_uint( esis_tree, hf_esis_version, tvb, 2, 1,
+ ehdr.esis_version );
+ proto_tree_add_uint( esis_tree, hf_esis_reserved, tvb, 3, 1,
+ ehdr.esis_reserved );
+
+ pdu_type_string = val_to_str(ehdr.esis_type&OSI_PDU_TYPE_MASK,
+ esis_vals, "Unknown (0x%x)");
+
+ proto_tree_add_uint_format( esis_tree, hf_esis_type, tvb, 4, 1,
+ ehdr.esis_type,
+ pdu_type_format_string,
+ pdu_type_string,
+ (ehdr.esis_type&BIT_8) ? "1" : "0",
+ (ehdr.esis_type&BIT_7) ? "1" : "0",
+ (ehdr.esis_type&BIT_6) ? "1" : "0");
+
+ tmp_uint = pntohs( ehdr.esis_holdtime );
+ proto_tree_add_uint_format(esis_tree, hf_esis_holdtime, tvb, 5, 2,
+ tmp_uint, "Holding Time : %u seconds",
+ tmp_uint );
+
+ tmp_uint = pntohs( ehdr.esis_checksum );
+
+ switch (calc_checksum( tvb, 0, ehdr.esis_length, tmp_uint )) {
+
+ case NO_CKSUM:
+ cksum_status = "Not Used";
+ break;
+
+ case DATA_MISSING:
+ cksum_status = "Not checkable - not all of packet was captured";
+ break;
+
+ case CKSUM_OK:
+ cksum_status = "Is good";
+ break;
+
+ case CKSUM_NOT_OK:
+ cksum_status = "Is wrong";
+ break;
+
+ default:
+ cksum_status = NULL;
+ DISSECTOR_ASSERT_NOT_REACHED();
+ }
+ proto_tree_add_uint_format( esis_tree, hf_esis_checksum, tvb, 7, 2,
+ tmp_uint, "Checksum : 0x%x ( %s )",
+ tmp_uint, cksum_status );
+ }
+
+
+ /*
+ * Let us make sure we use the same names for all our decodes
+ * here. First, dump the name into info column, and THEN
+ * dispatch the sub-type.
+ */
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_add_str(pinfo->cinfo, COL_INFO,
+ val_to_str( ehdr.esis_type&OSI_PDU_TYPE_MASK, esis_vals,
+ "Unknown (0x%x)" ) );
+ }
+
+ variable_len = ehdr.esis_length - ESIS_HDR_FIXED_LENGTH;
+
+ switch (ehdr.esis_type & OSI_PDU_TYPE_MASK) {
+ case ESIS_ESH_PDU:
+ esis_dissect_esh_pdu( variable_len, tvb, esis_tree);
+ break;
+ case ESIS_ISH_PDU:
+ esis_dissect_ish_pdu( variable_len, tvb, esis_tree);
+ break;
+ case ESIS_RD_PDU:
+ esis_dissect_redirect_pdu( variable_len, tvb, esis_tree);
+ break;
+ default:
+ esis_dissect_unknown(tvb, esis_tree,
+ "Unknown ESIS packet type 0x%x",
+ ehdr.esis_type & OSI_PDU_TYPE_MASK );
+ }
} /* dissect_esis */
@@ -391,17 +391,17 @@ dissect_esis(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
* Name: proto_register_esis()
*
* Description:
- * main register for esis protocol set. We register some display
- * formats and the protocol module variables.
+ * main register for esis protocol set. We register some display
+ * formats and the protocol module variables.
*
- * NOTE: this procedure to autolinked by the makefile process that
- * builds register.c
+ * NOTE: this procedure to autolinked by the makefile process that
+ * builds register.c
*
* Input:
- * void
+ * void
*
* Output:
- * void
+ * void
*/
void
proto_register_esis(void) {
@@ -409,19 +409,24 @@ proto_register_esis(void) {
{ &hf_esis_nlpi,
{ "Network Layer Protocol Identifier", "esis.nlpi",
FT_UINT8, BASE_HEX, VALS(nlpid_vals), 0x0, NULL, HFILL }},
+
{ &hf_esis_length,
- { "PDU Length", "esis.length", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
+ { "PDU Length", "esis.length", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
+
{ &hf_esis_version,
- { "Version (==1)", "esis.ver", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
+ { "Version (==1)", "esis.ver", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
+
{ &hf_esis_reserved,
- { "Reserved(==0)", "esis.res", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
+ { "Reserved(==0)", "esis.res", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
+
{ &hf_esis_type,
- { "PDU Type", "esis.type", FT_UINT8, BASE_DEC, VALS(esis_vals),
- 0xff, NULL, HFILL }},
+ { "PDU Type", "esis.type", FT_UINT8, BASE_DEC, VALS(esis_vals), 0xff, NULL, HFILL }},
+
{ &hf_esis_holdtime,
- { "Holding Time", "esis.htime", FT_UINT16, BASE_DEC, NULL, 0x0, "s", HFILL }},
+ { "Holding Time", "esis.htime", FT_UINT16, BASE_DEC, NULL, 0x0, "s", HFILL }},
+
{ &hf_esis_checksum,
- { "Checksum", "esis.chksum", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }}
+ { "Checksum", "esis.chksum", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }}
};
/*
*
diff --git a/epan/dissectors/packet-etch.c b/epan/dissectors/packet-etch.c
index b6fbf1d017..b1b679a59e 100644
--- a/epan/dissectors/packet-etch.c
+++ b/epan/dissectors/packet-etch.c
@@ -397,7 +397,7 @@ read_array_type(unsigned int *offset, tvbuff_t *tvb, proto_tree *etch_tree)
read_type(offset, tvb, etch_tree);
if (type_code == ETCH_TC_CUSTOM) {
- type_code = read_type(offset, tvb, etch_tree);
+ read_type(offset, tvb, etch_tree);
proto_tree_add_item(etch_tree, hf_etch_value, tvb, *offset, 4,
ENC_BIG_ENDIAN);
(*offset) += 4;
diff --git a/epan/dissectors/packet-eth.c b/epan/dissectors/packet-eth.c
index debcb33027..280a59a495 100644
--- a/epan/dissectors/packet-eth.c
+++ b/epan/dissectors/packet-eth.c
@@ -534,7 +534,7 @@ add_ethernet_trailer(packet_info *pinfo, proto_tree *tree, proto_tree *fh_tree,
if (padding_length > 0) {
tvb_ensure_bytes_exist(tvb, 0, padding_length);
proto_tree_add_item(fh_tree, hf_eth_padding, trailer_tvb, 0,
- padding_length, FALSE);
+ padding_length, ENC_NA);
trailer_length -= padding_length;
trailer_reported_length -= padding_length;
}
@@ -601,7 +601,7 @@ add_ethernet_trailer(packet_info *pinfo, proto_tree *tree, proto_tree *fh_tree,
if (trailer_length != 0) {
tvb_ensure_bytes_exist(tvb, 0, trailer_length);
proto_tree_add_item(fh_tree, trailer_id, real_trailer_tvb, 0,
- trailer_length, FALSE);
+ trailer_length, ENC_NA);
}
}
}
diff --git a/epan/dissectors/packet-ethertype.c b/epan/dissectors/packet-ethertype.c
index c82a18461f..654e6edc7a 100644
--- a/epan/dissectors/packet-ethertype.c
+++ b/epan/dissectors/packet-ethertype.c
@@ -48,165 +48,165 @@ static dissector_table_t ethertype_dissector_table;
static dissector_handle_t data_handle;
const value_string etype_vals[] = {
- { ETHERTYPE_IP, "IP" },
- { ETHERTYPE_IPv6, "IPv6" },
- { ETHERTYPE_VLAN, "802.1Q Virtual LAN" },
- { ETHERTYPE_ARP, "ARP" },
- { ETHERTYPE_WLCCP, "Cisco Wireless Lan Context Control Protocol" },
- { ETHERTYPE_CENTRINO_PROMISC, "IEEE 802.11 (Centrino promiscuous)" },
- { ETHERTYPE_XNS_IDP, "XNS Internet Datagram Protocol" },
- { ETHERTYPE_X25L3, "X.25 Layer 3" },
- { ETHERTYPE_WOL, "Wake on LAN" },
- { ETHERTYPE_WMX_M2M, "WiMax Mac-to-Mac" },
- { ETHERTYPE_EPL_V1, "EPL_V1" },
- { ETHERTYPE_REVARP, "RARP" },
- { ETHERTYPE_DEC_LB, "DEC LanBridge" },
- { ETHERTYPE_ATALK, "Appletalk" },
- { ETHERTYPE_SNA, "SNA-over-Ethernet" },
- { ETHERTYPE_DLR, "EtherNet/IP Device Level Ring" },
- { ETHERTYPE_AARP, "AARP" },
- { ETHERTYPE_IPX, "Netware IPX/SPX" },
- { ETHERTYPE_VINES_IP, "Vines IP" },
- { ETHERTYPE_VINES_ECHO, "Vines Echo" },
- { ETHERTYPE_TRAIN, "Netmon Train" },
- /* Ethernet Loopback */
- { ETHERTYPE_LOOP, "Loopback" },
- { ETHERTYPE_FOUNDRY, "Foundry proprietary" },
- { ETHERTYPE_WCP, "Wellfleet Compression Protocol" },
- { ETHERTYPE_STP, "Spanning Tree Protocol" },
- /* for ISMP, see RFC 2641, RFC 2642, RFC 2643 */
- { ETHERTYPE_ISMP, "Cabletron Interswitch Message Protocol" },
- { ETHERTYPE_ISMP_TBFLOOD, "Cabletron SFVLAN 1.8 Tag-Based Flood" },
- /* In www.iana.org/assignments/ethernet-numbers, 8203-8205 description is
- * Quantum Software. Now the company is called QNX Software Systems. */
- { ETHERTYPE_QNX_QNET6, "QNX 6 QNET protocol" },
- { ETHERTYPE_PPPOED, "PPPoE Discovery" },
- { ETHERTYPE_PPPOES, "PPPoE Session" },
- { ETHERTYPE_INTEL_ANS, "Intel ANS probe" },
- { ETHERTYPE_MS_NLB_HEARTBEAT, "MS NLB heartbeat" },
- { ETHERTYPE_JUMBO_LLC, "Jumbo LLC" },
- { ETHERTYPE_HOMEPLUG, "Homeplug" },
- { ETHERTYPE_HOMEPLUG_AV, "Homeplug AV" },
- { ETHERTYPE_IEEE_802_1AD, "802.1ad Provider Bridge (Q-in-Q)" },
- { ETHERTYPE_IEEE_802_1AH, "802.1ah Provider Backbone Bridge (mac-in-mac)" },
- { ETHERTYPE_EAPOL, "802.1X Authentication" },
- { ETHERTYPE_RSN_PREAUTH, "802.11i Pre-Authentication" },
- { ETHERTYPE_MPLS, "MPLS label switched packet" },
- { ETHERTYPE_MPLS_MULTI, "MPLS multicast label switched packet" },
- { ETHERTYPE_3C_NBP_DGRAM, "3Com NBP Datagram" },
- { ETHERTYPE_DEC, "DEC proto" },
- { ETHERTYPE_DNA_DL, "DEC DNA Dump/Load" },
- { ETHERTYPE_DNA_RC, "DEC DNA Remote Console" },
- { ETHERTYPE_DNA_RT, "DEC DNA Routing" },
- { ETHERTYPE_LAT, "DEC LAT" },
- { ETHERTYPE_DEC_DIAG, "DEC Diagnostics" },
- { ETHERTYPE_DEC_CUST, "DEC Customer use" },
- { ETHERTYPE_DEC_SCA, "DEC LAVC/SCA" },
- { ETHERTYPE_DEC_LAST, "DEC LAST" },
- { ETHERTYPE_ETHBRIDGE, "Transparent Ethernet bridging" },
- { ETHERTYPE_CGMP, "Cisco Group Management Protocol" },
- { ETHERTYPE_GIGAMON, "Gigamon Header" },
- { ETHERTYPE_MSRP, "802.1Qat Multiple Stream Reservation Protocol" },
- { ETHERTYPE_MMRP, "802.1ak Multiple Mac Registration Protocol" },
- { ETHERTYPE_AVBTP, "IEEE 1722 Audio Video Bridging Transport Protocol" },
- { ETHERTYPE_ROHC, "Robust Header Compression(RoHC)" },
- { ETHERTYPE_MAC_CONTROL, "MAC Control" },
- { ETHERTYPE_SLOW_PROTOCOLS, "Slow Protocols" },
- { ETHERTYPE_RTMAC, "Real-Time Media Access Control" },
- { ETHERTYPE_RTCFG, "Real-Time Configuration Protocol" },
- { ETHERTYPE_CDMA2000_A10_UBS, "CDMA2000 A10 Unstructured byte stream" },
- { ETHERTYPE_PROFINET, "PROFINET"},
- { ETHERTYPE_AOE, "ATA over Ethernet" },
- { ETHERTYPE_ECATF, "EtherCAT frame" },
- { ETHERTYPE_TELKONET, "Telkonet powerline" },
- { ETHERTYPE_EPL_V2, "ETHERNET Powerlink v2" },
- { ETHERTYPE_XIMETA, "XiMeta Technology" },
- { ETHERTYPE_CSM_ENCAPS, "CSM_ENCAPS Protocol" },
- { ETHERTYPE_IEEE802_OUI_EXTENDED, "IEEE 802a OUI Extended Ethertype" },
- { ETHERTYPE_IEC61850_GOOSE, "IEC 61850/GOOSE" },
- { ETHERTYPE_IEC61850_GSE, "IEC 61850/GSE management services" },
- { ETHERTYPE_IEC61850_SV, "IEC 61850/SV (Sampled Value Transmission" },
- { ETHERTYPE_TIPC, "Transparent Inter Process Communication" },
- { ETHERTYPE_LLDP, "802.1 Link Layer Discovery Protocol (LLDP)" },
- { ETHERTYPE_3GPP2, "CDMA2000 A10 3GPP2 Packet" },
- { ETHERTYPE_TTE_PCF, "TTEthernet Protocol Control Frame" },
- { ETHERTYPE_LLTD, "Link Layer Topology Discovery (LLTD)" },
- { ETHERTYPE_WSMP, "(WAVE) Short Message Protocol (WSM)" },
- { ETHERTYPE_VMLAB, "VMware Lab Manager" },
- { ETHERTYPE_COBRANET, "Cirrus Cobranet Packet" },
- { ETHERTYPE_NSRP, "Juniper Netscreen Redundant Protocol" },
- /*
- * NDISWAN on Windows translates Ethernet frames from higher-level
- * protocols into PPP frames to hand to the PPP driver, and translates
- * PPP frames from the PPP driver to hand to the higher-level protocols.
- *
- * Apparently the PPP driver, on at least some versions of Windows,
- * passes frames for internal-to-PPP protocols up through NDISWAN;
- * the protocol type field appears to be passed through unchanged
- * (unlike what's done with, for example, the protocol type field
- * for IP, which is mapped from its PPP value to its Ethernet value).
- *
- * This means that we may see, on Ethernet captures, frames for
- * protocols internal to PPP, so we list as "Ethernet" protocol
- * types the PPP protocol types we've seen.
- */
- { PPP_IPCP, "PPP IP Control Protocol" },
- { PPP_LCP, "PPP Link Control Protocol" },
- { PPP_PAP, "PPP Password Authentication Protocol" },
- { PPP_CCP, "PPP Compression Control Protocol" },
- { ETHERTYPE_LLT, "Veritas Low Latency Transport (not officially registered)" },
- { ETHERTYPE_CFM, "IEEE 802.1ag Connectivity Fault Management (CFM) protocol" },
- { ETHERTYPE_DCE, "Data Center Ethernet (DCE) protocol(Cisco)" },
- { ETHERTYPE_FCOE, "Fibre Channel over Ethernet" },
- { ETHERTYPE_IEEE80211_DATA_ENCAP, "IEEE 802.11 data encapsulation" },
- { ETHERTYPE_LINX, "LINX IPC Protocol" },
- { ETHERTYPE_FIP, "FCoE Initialization Protocol" },
- { ETHERTYPE_PTP, "PTPv2 over Ethernet (IEEE1588)" },
- { ETHERTYPE_PRP, "Parallel Redundancy Protocol (PRP) and HSR Supervision (IEC62439 Part 3)" },
- { ETHERTYPE_FLIP, "Flow Layer Internal Protocol" },
- { ETHERTYPE_ROCE, "RDMA over Converged Ethernet" },
- { ETHERTYPE_TDMOE, "Digium TDM over Ethernet Protocol" },
- { ETHERTYPE_WAI, "WAI Authentication Protocol" },
- { ETHERTYPE_HSR, "High-availability Seamless Redundancy (IEC62439 Part 3)" },
- { 0, NULL }
+ { ETHERTYPE_IP, "IP" },
+ { ETHERTYPE_IPv6, "IPv6" },
+ { ETHERTYPE_VLAN, "802.1Q Virtual LAN" },
+ { ETHERTYPE_ARP, "ARP" },
+ { ETHERTYPE_WLCCP, "Cisco Wireless Lan Context Control Protocol" },
+ { ETHERTYPE_CENTRINO_PROMISC, "IEEE 802.11 (Centrino promiscuous)" },
+ { ETHERTYPE_XNS_IDP, "XNS Internet Datagram Protocol" },
+ { ETHERTYPE_X25L3, "X.25 Layer 3" },
+ { ETHERTYPE_WOL, "Wake on LAN" },
+ { ETHERTYPE_WMX_M2M, "WiMax Mac-to-Mac" },
+ { ETHERTYPE_EPL_V1, "EPL_V1" },
+ { ETHERTYPE_REVARP, "RARP" },
+ { ETHERTYPE_DEC_LB, "DEC LanBridge" },
+ { ETHERTYPE_ATALK, "Appletalk" },
+ { ETHERTYPE_SNA, "SNA-over-Ethernet" },
+ { ETHERTYPE_DLR, "EtherNet/IP Device Level Ring" },
+ { ETHERTYPE_AARP, "AARP" },
+ { ETHERTYPE_IPX, "Netware IPX/SPX" },
+ { ETHERTYPE_VINES_IP, "Vines IP" },
+ { ETHERTYPE_VINES_ECHO, "Vines Echo" },
+ { ETHERTYPE_TRAIN, "Netmon Train" },
+ /* Ethernet Loopback */
+ { ETHERTYPE_LOOP, "Loopback" },
+ { ETHERTYPE_FOUNDRY, "Foundry proprietary" },
+ { ETHERTYPE_WCP, "Wellfleet Compression Protocol" },
+ { ETHERTYPE_STP, "Spanning Tree Protocol" },
+ /* for ISMP, see RFC 2641, RFC 2642, RFC 2643 */
+ { ETHERTYPE_ISMP, "Cabletron Interswitch Message Protocol" },
+ { ETHERTYPE_ISMP_TBFLOOD, "Cabletron SFVLAN 1.8 Tag-Based Flood" },
+ /* In www.iana.org/assignments/ethernet-numbers, 8203-8205 description is
+ * Quantum Software. Now the company is called QNX Software Systems. */
+ { ETHERTYPE_QNX_QNET6, "QNX 6 QNET protocol" },
+ { ETHERTYPE_PPPOED, "PPPoE Discovery" },
+ { ETHERTYPE_PPPOES, "PPPoE Session" },
+ { ETHERTYPE_INTEL_ANS, "Intel ANS probe" },
+ { ETHERTYPE_MS_NLB_HEARTBEAT, "MS NLB heartbeat" },
+ { ETHERTYPE_JUMBO_LLC, "Jumbo LLC" },
+ { ETHERTYPE_HOMEPLUG, "Homeplug" },
+ { ETHERTYPE_HOMEPLUG_AV, "Homeplug AV" },
+ { ETHERTYPE_IEEE_802_1AD, "802.1ad Provider Bridge (Q-in-Q)" },
+ { ETHERTYPE_IEEE_802_1AH, "802.1ah Provider Backbone Bridge (mac-in-mac)" },
+ { ETHERTYPE_EAPOL, "802.1X Authentication" },
+ { ETHERTYPE_RSN_PREAUTH, "802.11i Pre-Authentication" },
+ { ETHERTYPE_MPLS, "MPLS label switched packet" },
+ { ETHERTYPE_MPLS_MULTI, "MPLS multicast label switched packet" },
+ { ETHERTYPE_3C_NBP_DGRAM, "3Com NBP Datagram" },
+ { ETHERTYPE_DEC, "DEC proto" },
+ { ETHERTYPE_DNA_DL, "DEC DNA Dump/Load" },
+ { ETHERTYPE_DNA_RC, "DEC DNA Remote Console" },
+ { ETHERTYPE_DNA_RT, "DEC DNA Routing" },
+ { ETHERTYPE_LAT, "DEC LAT" },
+ { ETHERTYPE_DEC_DIAG, "DEC Diagnostics" },
+ { ETHERTYPE_DEC_CUST, "DEC Customer use" },
+ { ETHERTYPE_DEC_SCA, "DEC LAVC/SCA" },
+ { ETHERTYPE_DEC_LAST, "DEC LAST" },
+ { ETHERTYPE_ETHBRIDGE, "Transparent Ethernet bridging" },
+ { ETHERTYPE_CGMP, "Cisco Group Management Protocol" },
+ { ETHERTYPE_GIGAMON, "Gigamon Header" },
+ { ETHERTYPE_MSRP, "802.1Qat Multiple Stream Reservation Protocol" },
+ { ETHERTYPE_MMRP, "802.1ak Multiple Mac Registration Protocol" },
+ { ETHERTYPE_AVBTP, "IEEE 1722 Audio Video Bridging Transport Protocol" },
+ { ETHERTYPE_ROHC, "Robust Header Compression(RoHC)" },
+ { ETHERTYPE_MAC_CONTROL, "MAC Control" },
+ { ETHERTYPE_SLOW_PROTOCOLS, "Slow Protocols" },
+ { ETHERTYPE_RTMAC, "Real-Time Media Access Control" },
+ { ETHERTYPE_RTCFG, "Real-Time Configuration Protocol" },
+ { ETHERTYPE_CDMA2000_A10_UBS, "CDMA2000 A10 Unstructured byte stream" },
+ { ETHERTYPE_PROFINET, "PROFINET"},
+ { ETHERTYPE_AOE, "ATA over Ethernet" },
+ { ETHERTYPE_ECATF, "EtherCAT frame" },
+ { ETHERTYPE_TELKONET, "Telkonet powerline" },
+ { ETHERTYPE_EPL_V2, "ETHERNET Powerlink v2" },
+ { ETHERTYPE_XIMETA, "XiMeta Technology" },
+ { ETHERTYPE_CSM_ENCAPS, "CSM_ENCAPS Protocol" },
+ { ETHERTYPE_IEEE802_OUI_EXTENDED, "IEEE 802a OUI Extended Ethertype" },
+ { ETHERTYPE_IEC61850_GOOSE, "IEC 61850/GOOSE" },
+ { ETHERTYPE_IEC61850_GSE, "IEC 61850/GSE management services" },
+ { ETHERTYPE_IEC61850_SV, "IEC 61850/SV (Sampled Value Transmission" },
+ { ETHERTYPE_TIPC, "Transparent Inter Process Communication" },
+ { ETHERTYPE_LLDP, "802.1 Link Layer Discovery Protocol (LLDP)" },
+ { ETHERTYPE_3GPP2, "CDMA2000 A10 3GPP2 Packet" },
+ { ETHERTYPE_TTE_PCF, "TTEthernet Protocol Control Frame" },
+ { ETHERTYPE_LLTD, "Link Layer Topology Discovery (LLTD)" },
+ { ETHERTYPE_WSMP, "(WAVE) Short Message Protocol (WSM)" },
+ { ETHERTYPE_VMLAB, "VMware Lab Manager" },
+ { ETHERTYPE_COBRANET, "Cirrus Cobranet Packet" },
+ { ETHERTYPE_NSRP, "Juniper Netscreen Redundant Protocol" },
+ /*
+ * NDISWAN on Windows translates Ethernet frames from higher-level
+ * protocols into PPP frames to hand to the PPP driver, and translates
+ * PPP frames from the PPP driver to hand to the higher-level protocols.
+ *
+ * Apparently the PPP driver, on at least some versions of Windows,
+ * passes frames for internal-to-PPP protocols up through NDISWAN;
+ * the protocol type field appears to be passed through unchanged
+ * (unlike what's done with, for example, the protocol type field
+ * for IP, which is mapped from its PPP value to its Ethernet value).
+ *
+ * This means that we may see, on Ethernet captures, frames for
+ * protocols internal to PPP, so we list as "Ethernet" protocol
+ * types the PPP protocol types we've seen.
+ */
+ { PPP_IPCP, "PPP IP Control Protocol" },
+ { PPP_LCP, "PPP Link Control Protocol" },
+ { PPP_PAP, "PPP Password Authentication Protocol" },
+ { PPP_CCP, "PPP Compression Control Protocol" },
+ { ETHERTYPE_LLT, "Veritas Low Latency Transport (not officially registered)" },
+ { ETHERTYPE_CFM, "IEEE 802.1ag Connectivity Fault Management (CFM) protocol" },
+ { ETHERTYPE_DCE, "Data Center Ethernet (DCE) protocol(Cisco)" },
+ { ETHERTYPE_FCOE, "Fibre Channel over Ethernet" },
+ { ETHERTYPE_IEEE80211_DATA_ENCAP, "IEEE 802.11 data encapsulation" },
+ { ETHERTYPE_LINX, "LINX IPC Protocol" },
+ { ETHERTYPE_FIP, "FCoE Initialization Protocol" },
+ { ETHERTYPE_PTP, "PTPv2 over Ethernet (IEEE1588)" },
+ { ETHERTYPE_PRP, "Parallel Redundancy Protocol (PRP) and HSR Supervision (IEC62439 Part 3)" },
+ { ETHERTYPE_FLIP, "Flow Layer Internal Protocol" },
+ { ETHERTYPE_ROCE, "RDMA over Converged Ethernet" },
+ { ETHERTYPE_TDMOE, "Digium TDM over Ethernet Protocol" },
+ { ETHERTYPE_WAI, "WAI Authentication Protocol" },
+ { ETHERTYPE_HSR, "High-availability Seamless Redundancy (IEC62439 Part 3)" },
+ { 0, NULL }
};
static void add_dix_trailer(packet_info *pinfo, proto_tree *tree, proto_tree *fh_tree,
- int trailer_id, tvbuff_t *tvb, tvbuff_t *next_tvb, int offset_after_etype,
- guint length_before, gint fcs_len);
+ int trailer_id, tvbuff_t *tvb, tvbuff_t *next_tvb, int offset_after_etype,
+ guint length_before, gint fcs_len);
void
capture_ethertype(guint16 etype, const guchar *pd, int offset, int len,
packet_counts *ld)
{
- switch (etype) {
- case ETHERTYPE_ARP:
- ld->arp++;
- break;
- case ETHERTYPE_IP:
- capture_ip(pd, offset, len, ld);
- break;
- case ETHERTYPE_IPv6:
- capture_ipv6(pd, offset, len, ld);
- break;
- case ETHERTYPE_IPX:
- capture_ipx(ld);
- break;
- case ETHERTYPE_VLAN:
- capture_vlan(pd, offset, len, ld);
- break;
- case ETHERTYPE_IEEE_802_1AD:
- case ETHERTYPE_IEEE_802_1AH:
- capture_ieee8021ah(pd, offset, len, ld);
- break;
- case ETHERTYPE_VINES_IP:
- case ETHERTYPE_VINES_ECHO:
- capture_vines(ld);
- break;
- default:
- ld->other++;
- break;
- }
+ switch (etype) {
+ case ETHERTYPE_ARP:
+ ld->arp++;
+ break;
+ case ETHERTYPE_IP:
+ capture_ip(pd, offset, len, ld);
+ break;
+ case ETHERTYPE_IPv6:
+ capture_ipv6(pd, offset, len, ld);
+ break;
+ case ETHERTYPE_IPX:
+ capture_ipx(ld);
+ break;
+ case ETHERTYPE_VLAN:
+ capture_vlan(pd, offset, len, ld);
+ break;
+ case ETHERTYPE_IEEE_802_1AD:
+ case ETHERTYPE_IEEE_802_1AH:
+ capture_ieee8021ah(pd, offset, len, ld);
+ break;
+ case ETHERTYPE_VINES_IP:
+ case ETHERTYPE_VINES_ECHO:
+ capture_vines(ld);
+ break;
+ default:
+ ld->other++;
+ break;
+ }
}
void
@@ -224,15 +224,15 @@ ethertype(guint16 etype, tvbuff_t *tvb, int offset_after_etype,
/* Add the Ethernet type to the protocol tree */
if (tree) {
- proto_tree_add_uint(fh_tree, etype_id, tvb,
- offset_after_etype - 2, 2, etype);
+ proto_tree_add_uint(fh_tree, etype_id, tvb,
+ offset_after_etype - 2, 2, etype);
}
/* Get the captured length and reported length of the data
after the Ethernet type. */
captured_length = tvb_length_remaining(tvb, offset_after_etype);
reported_length = tvb_reported_length_remaining(tvb,
- offset_after_etype);
+ offset_after_etype);
/* Remember how much data there is after the Ethernet type,
including any trailer and FCS. */
@@ -252,7 +252,7 @@ ethertype(guint16 etype, tvbuff_t *tvb, int offset_after_etype,
}
}
next_tvb = tvb_new_subset(tvb, offset_after_etype, captured_length,
- reported_length);
+ reported_length);
pinfo->ethertype = etype;
@@ -264,28 +264,28 @@ ethertype(guint16 etype, tvbuff_t *tvb, int offset_after_etype,
pd_save = pinfo->private_data;
TRY {
dissector_found = dissector_try_uint(ethertype_dissector_table,
- etype, next_tvb, pinfo, tree);
+ etype, next_tvb, pinfo, tree);
}
CATCH(BoundsError) {
/* Somebody threw BoundsError, which means that:
- 1) a dissector was found, so we don't need to
- dissect the payload as data or update the
- protocol or info columns;
+ 1) a dissector was found, so we don't need to
+ dissect the payload as data or update the
+ protocol or info columns;
- 2) dissecting the payload found that the packet was
- cut off by a snapshot length before the end of
- the payload. The trailer comes after the payload,
- so *all* of the trailer is cut off, and we'll
- just get another BoundsError if we add the trailer.
+ 2) dissecting the payload found that the packet was
+ cut off by a snapshot length before the end of
+ the payload. The trailer comes after the payload,
+ so *all* of the trailer is cut off, and we'll
+ just get another BoundsError if we add the trailer.
Therefore, we just rethrow the exception so it gets
reported; we don't dissect the trailer or do anything
else. */
- RETHROW;
+ RETHROW;
}
CATCH(OutOfMemoryError) {
- RETHROW;
+ RETHROW;
}
CATCH_ALL {
/* Somebody threw an exception other than BoundsError, which
@@ -330,7 +330,7 @@ add_dix_trailer(packet_info *pinfo, proto_tree *tree, proto_tree *fh_tree, int t
tvbuff_t *tvb, tvbuff_t *next_tvb, int offset_after_etype,
guint length_before, gint fcs_len)
{
- guint length;
+ guint length;
tvbuff_t *trailer_tvb;
if (fh_tree == NULL)
@@ -350,7 +350,7 @@ add_dix_trailer(packet_info *pinfo, proto_tree *tree, proto_tree *fh_tree, int t
* Yes - create a tvbuff for the padding.
*/
trailer_tvb = tvb_new_subset_remaining(tvb,
- offset_after_etype + length);
+ offset_after_etype + length);
} else {
/*
* No - don't bother showing the trailer.
@@ -369,7 +369,7 @@ proto_register_ethertype(void)
{
/* subdissector code */
ethertype_dissector_table = register_dissector_table("ethertype",
- "Ethertype", FT_UINT16, BASE_HEX);
+ "Ethertype", FT_UINT16, BASE_HEX);
}
void
diff --git a/epan/dissectors/packet-etsi_card_app_toolkit.c b/epan/dissectors/packet-etsi_card_app_toolkit.c
index 92fd679768..e711dc6e1f 100644
--- a/epan/dissectors/packet-etsi_card_app_toolkit.c
+++ b/epan/dissectors/packet-etsi_card_app_toolkit.c
@@ -104,7 +104,7 @@ static const value_string comp_tlv_tag_vals[] = {
{ 0x12, "File List" },
{ 0x13, "Location Information" },
{ 0x14, "IMEI" },
- { 0x15, "Help requeest" },
+ { 0x15, "Help request" },
{ 0x16, "Network Measurement Results" },
{ 0x17, "Default Text" },
{ 0x18, "Items Next Action Indicator" },
@@ -645,6 +645,11 @@ proto_register_card_app_toolkit(void)
FT_UINT8, BASE_HEX, VALS(bearer_vals), 0,
NULL, HFILL },
},
+ { &hf_ctlv_bearer_descr,
+ { "Bearer Description", "cat.comp_tlv.bearer_descr",
+ FT_UINT8, BASE_HEX, VALS(bearer_descr_vals), 0,
+ NULL, HFILL },
+ },
{ &hf_ctlv_transport_ptype,
{ "Transport protocol type", "cat.comp_tlv.transport.ptype",
FT_UINT8, BASE_HEX, VALS(transport_ptype_vals), 0,
diff --git a/epan/dissectors/packet-etv.c b/epan/dissectors/packet-etv.c
new file mode 100644
index 0000000000..db609375b9
--- /dev/null
+++ b/epan/dissectors/packet-etv.c
@@ -0,0 +1,219 @@
+/* packet-etv.c
+ *
+ * Routines for ETV-AM from OC-SP-ETV-AM1.0-IO5
+ * Copyright 2012, Weston Schmidt <weston_schmidt@alumni.purdue.edu>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+#include <stdio.h>
+
+#include <epan/packet.h>
+#include <epan/expert.h>
+#include <epan/dissectors/packet-mpeg-sect.h>
+
+static int proto_etv_dii = -1;
+static int proto_etv_ddb = -1;
+
+static dissector_handle_t data_handle;
+static dissector_handle_t dsmcc_handle;
+
+static int hf_etv_dii_filter_info = -1;
+static int hf_etv_dii_reserved = -1;
+
+static int hf_etv_ddb_filter_info = -1;
+static int hf_etv_ddb_reserved = -1;
+
+static gint ett_etv = -1;
+static gint ett_etv_payload = -1;
+
+#define ETV_TID_DII_SECTION 0xe3
+#define ETV_TID_DDB_SECTION 0xe4
+
+static void
+dissect_etv_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int proto,
+ int hf_filter_info, int hf_reserved )
+{
+ tvbuff_t *sub_tvb;
+ guint offset = 0;
+ proto_item *ti = NULL;
+ proto_item *pi = NULL;
+ proto_tree *etv_tree = NULL;
+ proto_item *items[PACKET_MPEG_SECT_PI__SIZE];
+ gboolean ssi;
+ guint reserved;
+ guint8 reserved2;
+ guint16 filter_info;
+ guint sect_len;
+
+ ti = proto_tree_add_item(tree, proto, tvb, offset, -1, ENC_NA);
+ etv_tree = proto_item_add_subtree(ti, ett_etv);
+
+ offset += packet_mpeg_sect_header_extra(tvb, offset, etv_tree, &sect_len,
+ &reserved, &ssi, items);
+
+ if (FALSE != ssi) {
+ proto_item *msg_error;
+ msg_error = items[PACKET_MPEG_SECT_PI__SSI];
+
+ PROTO_ITEM_SET_GENERATED(msg_error);
+ expert_add_info_format(pinfo, msg_error, PI_MALFORMED, PI_ERROR,
+ "Invalid section_syntax_indicator (should be 0)");
+ }
+
+ if (4 != reserved) {
+ proto_item *msg_error;
+ msg_error = items[PACKET_MPEG_SECT_PI__RESERVED];
+
+ PROTO_ITEM_SET_GENERATED(msg_error);
+ expert_add_info_format(pinfo, msg_error, PI_MALFORMED, PI_ERROR,
+ "Invalid reserved1 bits (should all be 100)");
+ }
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", Length: %u", sect_len);
+ proto_item_append_text(ti, " Length=%u", sect_len);
+ if (1021 < sect_len) {
+ proto_item *msg_error;
+ msg_error = items[PACKET_MPEG_SECT_PI__LENGTH];
+
+ PROTO_ITEM_SET_GENERATED(msg_error);
+ expert_add_info_format(pinfo, msg_error, PI_MALFORMED, PI_ERROR,
+ "Invalid section_length (must not exceed 1021)");
+ }
+
+ filter_info = tvb_get_ntohs(tvb, offset);
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", Filter: 0x%x", filter_info);
+ proto_item_append_text(ti, " Filter=0x%x", filter_info);
+ pi = proto_tree_add_item(etv_tree, hf_filter_info, tvb, offset, 2, ENC_BIG_ENDIAN);
+ if ((proto_etv_dii == proto) && (0xFBFB != filter_info)) {
+ PROTO_ITEM_SET_GENERATED(pi);
+ expert_add_info_format(pinfo, pi, PI_MALFORMED, PI_ERROR,
+ "Invalid filter_info value (must be 0xFBFB)");
+ } else if ((proto_etv_ddb == proto) &&
+ ((filter_info < 1) || (0xfbef < filter_info)))
+ {
+ PROTO_ITEM_SET_GENERATED(pi);
+ expert_add_info_format(pinfo, pi, PI_MALFORMED, PI_ERROR,
+ "Invalid filter_info value (must be [0x0001-0xFBEF] inclusive)");
+ }
+ offset += 2;
+
+ reserved2 = tvb_get_guint8(tvb, offset);
+ pi = proto_tree_add_item(etv_tree, hf_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
+ if (0 != reserved2) {
+ PROTO_ITEM_SET_GENERATED(pi);
+ expert_add_info_format(pinfo, pi, PI_MALFORMED, PI_ERROR,
+ "Invalid reserved2 bits (should all be 0)");
+ }
+ offset++;
+
+ sub_tvb = tvb_new_subset(tvb, offset, sect_len-7, sect_len-7);
+ call_dissector(dsmcc_handle, sub_tvb, pinfo, tree);
+
+ sect_len += 3 - 4; /* add header, remove crc */
+
+ packet_mpeg_sect_crc(tvb, pinfo, etv_tree, 0, sect_len);
+}
+
+
+static void
+dissect_etv_ddb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ col_clear(pinfo->cinfo, COL_PROTOCOL);
+ col_set_str(pinfo->cinfo, COL_INFO, "ETV DDB");
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "ETV-DDB");
+ dissect_etv_common(tvb, pinfo, tree, proto_etv_ddb, hf_etv_ddb_filter_info,
+ hf_etv_ddb_reserved);
+}
+
+
+static void
+dissect_etv_dii(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ col_clear(pinfo->cinfo, COL_PROTOCOL);
+ col_set_str(pinfo->cinfo, COL_INFO, "ETV DII");
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "ETV-DII");
+ dissect_etv_common(tvb, pinfo, tree, proto_etv_dii, hf_etv_dii_filter_info,
+ hf_etv_dii_reserved);
+}
+
+
+void
+proto_register_etv(void)
+{
+ static hf_register_info hf_ddb[] = {
+ { &hf_etv_ddb_filter_info, {
+ "Filter Info", "etv-ddb.filter_info",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_etv_ddb_reserved, {
+ "Reserved", "etv-ddb.reserved",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } }
+ };
+
+ static hf_register_info hf_dii[] = {
+ { &hf_etv_dii_filter_info, {
+ "Filter Info", "etv-dii.filter_info",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_etv_dii_reserved, {
+ "Reserved", "etv-dii.reserved",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } }
+ };
+
+ static gint *ett[] = {
+ &ett_etv,
+ &ett_etv_payload
+ };
+
+ proto_etv_dii = proto_register_protocol("ETV-AM DII Section", "ETV-AM DII", "etv-dii");
+ proto_etv_ddb = proto_register_protocol("ETV-AM DDB Section", "ETV-AM DDB", "etv-ddb");
+
+ proto_register_field_array(proto_etv_dii, hf_dii, array_length(hf_dii));
+ proto_register_field_array(proto_etv_ddb, hf_ddb, array_length(hf_ddb));
+ proto_register_subtree_array(ett, array_length(ett));
+}
+
+
+void
+proto_reg_handoff_etv(void)
+{
+ dissector_handle_t etv_dii_handle;
+ dissector_handle_t etv_ddb_handle;
+
+ etv_dii_handle = create_dissector_handle(dissect_etv_dii, proto_etv_dii);
+ etv_ddb_handle = create_dissector_handle(dissect_etv_ddb, proto_etv_ddb);
+ dissector_add_uint("mpeg_sect.tid", ETV_TID_DII_SECTION, etv_dii_handle);
+ dissector_add_uint("mpeg_sect.tid", ETV_TID_DDB_SECTION, etv_ddb_handle);
+ dsmcc_handle = find_dissector("mp2t-dsmcc");
+ data_handle = find_dissector("data");
+}
+
+
diff --git a/epan/dissectors/packet-evrc.c b/epan/dissectors/packet-evrc.c
index d2889c539f..83915a6d22 100644
--- a/epan/dissectors/packet-evrc.c
+++ b/epan/dissectors/packet-evrc.c
@@ -336,7 +336,7 @@ dissect_evrc_aux(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, evrc_varia
i++;
- if (i < frame_count)
+ if (i < frame_count)
{
/* even number of frames */
proto_tree_add_item(toc_tree, hf_toc_frame_type_low, tvb, offset, 1, ENC_BIG_ENDIAN);
diff --git a/epan/dissectors/packet-exec.c b/epan/dissectors/packet-exec.c
index 4c0b991610..21244e7f1c 100644
--- a/epan/dissectors/packet-exec.c
+++ b/epan/dissectors/packet-exec.c
@@ -31,13 +31,9 @@
#include <glib.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <ctype.h>
-
+#include <epan/packet.h>
#include <epan/conversation.h>
#include <epan/emem.h>
-#include <epan/packet.h>
#include <epan/prefs.h>
#include <wsutil/str_util.h>
diff --git a/epan/dissectors/packet-fc.c b/epan/dissectors/packet-fc.c
index 9f8a33a31d..a3d17b095c 100644
--- a/epan/dissectors/packet-fc.c
+++ b/epan/dissectors/packet-fc.c
@@ -30,16 +30,6 @@
#endif
-#include <stdlib.h>
-
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-fcct.c b/epan/dissectors/packet-fcct.c
index 3943b96137..4fb184abb9 100644
--- a/epan/dissectors/packet-fcct.c
+++ b/epan/dissectors/packet-fcct.c
@@ -27,16 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-fcels.c b/epan/dissectors/packet-fcels.c
index 77ce232286..fa3185f500 100644
--- a/epan/dissectors/packet-fcels.c
+++ b/epan/dissectors/packet-fcels.c
@@ -32,16 +32,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-fcfcs.c b/epan/dissectors/packet-fcfcs.c
index 78e96b9a9b..1d8c895cc1 100644
--- a/epan/dissectors/packet-fcfcs.c
+++ b/epan/dissectors/packet-fcfcs.c
@@ -27,16 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-fcfzs.c b/epan/dissectors/packet-fcfzs.c
index 91738fd34e..ea2b1acbfe 100644
--- a/epan/dissectors/packet-fcfzs.c
+++ b/epan/dissectors/packet-fcfzs.c
@@ -8,12 +8,6 @@
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
- * Copied from WHATEVER_FILE_YOU_USED (where "WHATEVER_FILE_YOU_USED"
- * is a dissector file; if you just copied this from README.developer,
- * don't bother with the "Copied from" - you don't even need to put
- * in a "Copied from" if you copied an existing dissector, especially
- * if the bulk of the code in the new dissector is your code)
- *
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
@@ -33,16 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
@@ -55,32 +39,32 @@
#include "packet-fcfzs.h"
/* Initialize the protocol and registered fields */
-static int proto_fcfzs = -1;
-static int hf_fcfzs_opcode = -1;
-static int hf_fcfzs_gzc_vendor = -1;
-static int hf_fcfzs_gest_vendor = -1;
-static int hf_fcfzs_numzoneattrs = -1;
-static int hf_fcfzs_zonesetnmlen = -1;
-static int hf_fcfzs_zonesetname = -1;
-static int hf_fcfzs_numzones = -1;
-static int hf_fcfzs_numzonesetattrs = -1;
-static int hf_fcfzs_zonenmlen = -1;
-static int hf_fcfzs_zonename = -1;
-static int hf_fcfzs_nummbrs = -1;
-static int hf_fcfzs_nummbrentries = -1;
-static int hf_fcfzs_mbrid = -1;
-static int hf_fcfzs_mbridlen = -1;
-static int hf_fcfzs_mbrtype = -1;
-static int hf_fcfzs_reason = -1;
-static int hf_fcfzs_rjtdetail = -1;
-static int hf_fcfzs_rjtvendor = -1;
-static int hf_fcfzs_maxres_size = -1;
-static int hf_fcfzs_mbrid_lun = -1;
-static int hf_fcfzs_gzc_flags = -1;
-static int hf_fcfzs_gzc_flags_hard_zones = -1;
-static int hf_fcfzs_gzc_flags_soft_zones = -1;
-static int hf_fcfzs_gzc_flags_zoneset_db = -1;
-static int hf_fcfzs_zone_state = -1;
+static int proto_fcfzs = -1;
+static int hf_fcfzs_opcode = -1;
+static int hf_fcfzs_gzc_vendor = -1;
+static int hf_fcfzs_gest_vendor = -1;
+static int hf_fcfzs_numzoneattrs = -1;
+static int hf_fcfzs_zonesetnmlen = -1;
+static int hf_fcfzs_zonesetname = -1;
+static int hf_fcfzs_numzones = -1;
+static int hf_fcfzs_numzonesetattrs = -1;
+static int hf_fcfzs_zonenmlen = -1;
+static int hf_fcfzs_zonename = -1;
+static int hf_fcfzs_nummbrs = -1;
+static int hf_fcfzs_nummbrentries = -1;
+static int hf_fcfzs_mbrid = -1;
+static int hf_fcfzs_mbridlen = -1;
+static int hf_fcfzs_mbrtype = -1;
+static int hf_fcfzs_reason = -1;
+static int hf_fcfzs_rjtdetail = -1;
+static int hf_fcfzs_rjtvendor = -1;
+static int hf_fcfzs_maxres_size = -1;
+static int hf_fcfzs_mbrid_lun = -1;
+static int hf_fcfzs_gzc_flags = -1;
+static int hf_fcfzs_gzc_flags_hard_zones = -1;
+static int hf_fcfzs_gzc_flags_soft_zones = -1;
+static int hf_fcfzs_gzc_flags_zoneset_db = -1;
+static int hf_fcfzs_zone_state = -1;
static int hf_fcfzs_soft_zone_set_enforced = -1;
static int hf_fcfzs_hard_zone_set_enforced = -1;
@@ -114,7 +98,7 @@ fcfzs_equal(gconstpointer v, gconstpointer w)
}
static guint
-fcfzs_hash (gconstpointer v)
+fcfzs_hash(gconstpointer v)
{
const fcfzs_conv_key_t *key = v;
guint val;
@@ -131,14 +115,14 @@ static void
fcfzs_init_protocol(void)
{
if (fcfzs_req_hash)
- g_hash_table_destroy (fcfzs_req_hash);
+ g_hash_table_destroy(fcfzs_req_hash);
- fcfzs_req_hash = g_hash_table_new (fcfzs_hash, fcfzs_equal);
+ fcfzs_req_hash = g_hash_table_new(fcfzs_hash, fcfzs_equal);
}
/* Code to actually dissect the packets */
static void
-dissect_fcfzs_zoneset (tvbuff_t *tvb, proto_tree *tree, int offset)
+dissect_fcfzs_zoneset(tvbuff_t *tvb, proto_tree *tree, int offset)
{
int numzones, nummbrs, i, j, len;
@@ -153,84 +137,84 @@ dissect_fcfzs_zoneset (tvbuff_t *tvb, proto_tree *tree, int offset)
if (tree) {
/* Zoneset Name */
- len = tvb_get_guint8 (tvb, offset);
- proto_tree_add_item (tree, hf_fcfzs_zonesetnmlen, tvb, offset,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_fcfzs_zonesetname, tvb, offset+4,
- len, ENC_ASCII|ENC_NA);
+ len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_fcfzs_zonesetnmlen, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_fcfzs_zonesetname, tvb, offset+4,
+ len, ENC_ASCII|ENC_NA);
offset += 4 + len + (4-(len % 4));
/* Number of zones */
- numzones = tvb_get_ntohl (tvb, offset);
- proto_tree_add_item (tree, hf_fcfzs_numzones, tvb, offset, 4, ENC_BIG_ENDIAN);
+ numzones = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_item(tree, hf_fcfzs_numzones, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
/* For each zone... */
for (i = 0; i < numzones; i++) {
- len = tvb_get_guint8 (tvb, offset);
- proto_tree_add_item (tree, hf_fcfzs_zonenmlen, tvb, offset,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_fcfzs_zonename, tvb, offset+4,
- len, ENC_ASCII|ENC_NA);
+ len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_fcfzs_zonenmlen, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_fcfzs_zonename, tvb, offset+4,
+ len, ENC_ASCII|ENC_NA);
offset += 4 + len + (4-(len % 4));
- nummbrs = tvb_get_ntohl (tvb, offset);
- proto_tree_add_item (tree, hf_fcfzs_nummbrentries, tvb, offset,
- 4, ENC_BIG_ENDIAN);
+ nummbrs = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_item(tree, hf_fcfzs_nummbrentries, tvb, offset,
+ 4, ENC_BIG_ENDIAN);
offset += 4;
for (j = 0; j < nummbrs; j++) {
- proto_tree_add_item (tree, hf_fcfzs_mbrtype, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_fcfzs_mbrtype, tvb, offset, 1, ENC_BIG_ENDIAN);
- switch (tvb_get_guint8 (tvb, offset)) {
+ switch (tvb_get_guint8(tvb, offset)) {
case FC_FZS_ZONEMBR_PWWN:
case FC_FZS_ZONEMBR_NWWN:
- proto_tree_add_string (tree, hf_fcfzs_mbrid, tvb,
- offset+4, 8,
- tvb_fcwwn_to_str (tvb, offset+4));
+ proto_tree_add_string(tree, hf_fcfzs_mbrid, tvb,
+ offset+4, 8,
+ tvb_fcwwn_to_str(tvb, offset+4));
break;
case FC_FZS_ZONEMBR_DP:
- proto_tree_add_string_format (tree,
- hf_fcfzs_mbrid,
- tvb, offset+4, 3, " ",
- "0x%x",
- tvb_get_ntoh24 (tvb,
- offset+4));
+ proto_tree_add_string_format(tree,
+ hf_fcfzs_mbrid,
+ tvb, offset+4, 3, " ",
+ "0x%x",
+ tvb_get_ntoh24(tvb,
+ offset+4));
break;
case FC_FZS_ZONEMBR_FCID:
- proto_tree_add_string (tree, hf_fcfzs_mbrid, tvb,
- offset+4, 4,
- tvb_fc_to_str (tvb, offset+4));
+ proto_tree_add_string(tree, hf_fcfzs_mbrid, tvb,
+ offset+4, 4,
+ tvb_fc_to_str(tvb, offset+4));
break;
case FC_FZS_ZONEMBR_PWWN_LUN:
- proto_tree_add_string (tree, hf_fcfzs_mbrid, tvb,
- offset+4, 8,
- tvb_fcwwn_to_str (tvb, offset+4));
- proto_tree_add_item (tree, hf_fcfzs_mbrid_lun, tvb,
- offset+8, 8, ENC_NA);
+ proto_tree_add_string(tree, hf_fcfzs_mbrid, tvb,
+ offset+4, 8,
+ tvb_fcwwn_to_str(tvb, offset+4));
+ proto_tree_add_item(tree, hf_fcfzs_mbrid_lun, tvb,
+ offset+8, 8, ENC_NA);
break;
case FC_FZS_ZONEMBR_DP_LUN:
- proto_tree_add_string_format (tree,
- hf_fcfzs_mbrid,
- tvb, offset+4, 3, " ",
- "0x%x",
- tvb_get_ntoh24 (tvb,
- offset+4));
- proto_tree_add_item (tree, hf_fcfzs_mbrid_lun, tvb,
- offset+4, 8, ENC_NA);
+ proto_tree_add_string_format(tree,
+ hf_fcfzs_mbrid,
+ tvb, offset+4, 3, " ",
+ "0x%x",
+ tvb_get_ntoh24(tvb,
+ offset+4));
+ proto_tree_add_item(tree, hf_fcfzs_mbrid_lun, tvb,
+ offset+4, 8, ENC_NA);
break;
case FC_FZS_ZONEMBR_FCID_LUN:
- proto_tree_add_string (tree, hf_fcfzs_mbrid, tvb,
- offset+4, 4,
- tvb_fc_to_str (tvb, offset+4));
- proto_tree_add_item (tree, hf_fcfzs_mbrid_lun, tvb,
- offset+4, 8, ENC_NA);
+ proto_tree_add_string(tree, hf_fcfzs_mbrid, tvb,
+ offset+4, 4,
+ tvb_fc_to_str(tvb, offset+4));
+ proto_tree_add_item(tree, hf_fcfzs_mbrid_lun, tvb,
+ offset+4, 8, ENC_NA);
break;
default:
- proto_tree_add_string (tree, hf_fcfzs_mbrid, tvb,
- offset+4, 8,
- "Unknown member type format");
+ proto_tree_add_string(tree, hf_fcfzs_mbrid, tvb,
+ offset+4, 8,
+ "Unknown member type format");
}
offset += 12;
}
@@ -252,38 +236,38 @@ static const true_false_string tfs_fc_fcfzs_gzc_flags_zoneset_db = {
};
static void
-dissect_fcfzs_gzc (tvbuff_t *tvb, int offset, proto_tree *parent_tree, guint8 isreq)
+dissect_fcfzs_gzc(tvbuff_t *tvb, int offset, proto_tree *parent_tree, gboolean isreq)
{
if (!isreq) {
guint8 flags;
- proto_item *item=NULL;
- proto_tree *tree=NULL;
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
- flags = tvb_get_guint8 (tvb, offset);
- if(parent_tree){
- item=proto_tree_add_uint(parent_tree, hf_fcfzs_gzc_flags, tvb, offset, 1, flags);
- tree=proto_item_add_subtree(item, ett_fcfzs_gzc_flags);
+ flags = tvb_get_guint8(tvb, offset);
+ if (parent_tree) {
+ item = proto_tree_add_uint(parent_tree, hf_fcfzs_gzc_flags, tvb, offset, 1, flags);
+ tree = proto_item_add_subtree(item, ett_fcfzs_gzc_flags);
}
proto_tree_add_boolean(tree, hf_fcfzs_gzc_flags_hard_zones, tvb, offset, 1, flags);
- if (flags&0x80){
+ if (flags & 0x80) {
proto_item_append_text(item, " Hard Zones");
}
- flags&=(~( 0x80 ));
+ flags &= (~( 0x80 ));
proto_tree_add_boolean(tree, hf_fcfzs_gzc_flags_soft_zones, tvb, offset, 1, flags);
- if (flags&0x40){
+ if (flags & 0x40) {
proto_item_append_text(item, " Soft Zones");
}
- flags&=(~( 0x40 ));
+ flags &= (~( 0x40 ));
proto_tree_add_boolean(tree, hf_fcfzs_gzc_flags_zoneset_db, tvb, offset, 1, flags);
- if (flags&0x01){
+ if (flags & 0x01) {
proto_item_append_text(item, " ZoneSet Database Available");
}
- flags&=(~( 0x01 ));
+ flags &= (~( 0x01 ));
- proto_tree_add_item (tree, hf_fcfzs_gzc_vendor, tvb, offset+4, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_fcfzs_gzc_vendor, tvb, offset+4, 4, ENC_BIG_ENDIAN);
}
}
@@ -297,61 +281,61 @@ static const true_false_string tfs_fc_fcfzs_hard_zone_set_enforced = {
};
static void
-dissect_fcfzs_gest (tvbuff_t *tvb, proto_tree *parent_tree, guint8 isreq)
+dissect_fcfzs_gest(tvbuff_t *tvb, proto_tree *parent_tree, gboolean isreq)
{
int offset = 16; /* past the fc_ct header */
if (!isreq) {
guint8 flags;
- proto_item *item=NULL;
- proto_tree *tree=NULL;
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
- flags = tvb_get_guint8 (tvb, offset);
- if(parent_tree){
- item=proto_tree_add_uint(parent_tree, hf_fcfzs_zone_state, tvb, offset, 1, flags);
- tree=proto_item_add_subtree(item, ett_fcfzs_zone_state);
+ flags = tvb_get_guint8(tvb, offset);
+ if (parent_tree) {
+ item = proto_tree_add_uint(parent_tree, hf_fcfzs_zone_state, tvb, offset, 1, flags);
+ tree = proto_item_add_subtree(item, ett_fcfzs_zone_state);
}
proto_tree_add_boolean(tree, hf_fcfzs_soft_zone_set_enforced, tvb, offset, 1, flags);
- if (flags&0x80){
+ if (flags & 0x80) {
proto_item_append_text(item, " Soft Zone Set Enforced");
}
- flags&=(~( 0x80 ));
+ flags &= (~( 0x80 ));
proto_tree_add_boolean(tree, hf_fcfzs_hard_zone_set_enforced, tvb, offset, 1, flags);
- if (flags&0x40){
+ if (flags & 0x40) {
proto_item_append_text(item, " Hard Zone Set Enforced");
}
- flags&=(~( 0x40 ));
+ flags &= (~( 0x40 ));
- proto_tree_add_item (parent_tree, hf_fcfzs_gest_vendor, tvb, offset+4, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parent_tree, hf_fcfzs_gest_vendor, tvb, offset+4, 4, ENC_BIG_ENDIAN);
}
}
static void
-dissect_fcfzs_gzsn (tvbuff_t *tvb, proto_tree *tree, guint8 isreq)
+dissect_fcfzs_gzsn(tvbuff_t *tvb, proto_tree *tree, gboolean isreq)
{
int numrec, i, len;
int offset = 16; /* past the fc_ct header */
if (tree) {
if (!isreq) {
- numrec = tvb_get_ntohl (tvb, offset);
+ numrec = tvb_get_ntohl(tvb, offset);
- proto_tree_add_item (tree, hf_fcfzs_numzonesetattrs, tvb, offset,
- 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_fcfzs_numzonesetattrs, tvb, offset,
+ 4, ENC_BIG_ENDIAN);
offset += 4;
for (i = 0; i < numrec; i++) {
- len = tvb_get_guint8 (tvb, offset);
- proto_tree_add_item (tree, hf_fcfzs_zonesetnmlen, tvb, offset,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_fcfzs_zonesetname, tvb, offset+1,
- len, ENC_ASCII|ENC_NA);
+ len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_fcfzs_zonesetnmlen, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_fcfzs_zonesetname, tvb, offset+1,
+ len, ENC_ASCII|ENC_NA);
offset += len + 1 + (len % 4);
- proto_tree_add_item (tree, hf_fcfzs_numzones, tvb, offset,
- 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_fcfzs_numzones, tvb, offset,
+ 4, ENC_BIG_ENDIAN);
offset += 4;
}
}
@@ -359,35 +343,35 @@ dissect_fcfzs_gzsn (tvbuff_t *tvb, proto_tree *tree, guint8 isreq)
}
static void
-dissect_fcfzs_gzd (tvbuff_t *tvb, proto_tree *tree, guint8 isreq)
+dissect_fcfzs_gzd(tvbuff_t *tvb, proto_tree *tree, gboolean isreq)
{
int numrec, i, len;
int offset = 16; /* past the fc_ct header */
if (tree) {
if (isreq) {
- len = tvb_get_guint8 (tvb, offset);
- proto_tree_add_item (tree, hf_fcfzs_zonesetnmlen, tvb, offset,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_fcfzs_zonesetname, tvb, offset+1,
- len, ENC_ASCII|ENC_NA);
+ len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_fcfzs_zonesetnmlen, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_fcfzs_zonesetname, tvb, offset+1,
+ len, ENC_ASCII|ENC_NA);
}
else {
- numrec = tvb_get_ntohl (tvb, offset);
+ numrec = tvb_get_ntohl(tvb, offset);
- proto_tree_add_item (tree, hf_fcfzs_numzoneattrs, tvb, offset,
- 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_fcfzs_numzoneattrs, tvb, offset,
+ 4, ENC_BIG_ENDIAN);
offset += 4;
for (i = 0; i < numrec; i++) {
- len = tvb_get_guint8 (tvb, offset);
- proto_tree_add_item (tree, hf_fcfzs_zonenmlen, tvb, offset,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_fcfzs_zonename, tvb, offset+1,
- len, ENC_ASCII|ENC_NA);
+ len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_fcfzs_zonenmlen, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_fcfzs_zonename, tvb, offset+1,
+ len, ENC_ASCII|ENC_NA);
offset += len + 1 + (len % 4);
- proto_tree_add_item (tree, hf_fcfzs_nummbrs, tvb, offset,
- 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_fcfzs_nummbrs, tvb, offset,
+ 4, ENC_BIG_ENDIAN);
offset += 4;
}
}
@@ -395,51 +379,51 @@ dissect_fcfzs_gzd (tvbuff_t *tvb, proto_tree *tree, guint8 isreq)
}
static void
-dissect_fcfzs_gzm (tvbuff_t *tvb, proto_tree *tree, guint8 isreq)
+dissect_fcfzs_gzm(tvbuff_t *tvb, proto_tree *tree, gboolean isreq)
{
int numrec, i, len;
int offset = 16; /* past the fc_ct header */
if (tree) {
if (isreq) {
- len = tvb_get_guint8 (tvb, offset);
- proto_tree_add_item (tree, hf_fcfzs_zonenmlen, tvb, offset,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_fcfzs_zonename, tvb, offset+1,
- len, ENC_ASCII|ENC_NA);
+ len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_fcfzs_zonenmlen, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_fcfzs_zonename, tvb, offset+1,
+ len, ENC_ASCII|ENC_NA);
}
else {
- numrec = tvb_get_ntohl (tvb, offset);
+ numrec = tvb_get_ntohl(tvb, offset);
- proto_tree_add_item (tree, hf_fcfzs_nummbrentries, tvb, offset,
- 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_fcfzs_nummbrentries, tvb, offset,
+ 4, ENC_BIG_ENDIAN);
offset += 4;
for (i = 0; i < numrec; i++) {
- proto_tree_add_item (tree, hf_fcfzs_mbrtype, tvb, offset, 1, ENC_BIG_ENDIAN);
- switch (tvb_get_guint8 (tvb, offset)) {
+ proto_tree_add_item(tree, hf_fcfzs_mbrtype, tvb, offset, 1, ENC_BIG_ENDIAN);
+ switch (tvb_get_guint8(tvb, offset)) {
case FC_FZS_ZONEMBR_PWWN:
case FC_FZS_ZONEMBR_NWWN:
- proto_tree_add_string (tree, hf_fcfzs_mbrid, tvb,
- offset+4, 8,
- tvb_fcwwn_to_str (tvb, offset+4));
+ proto_tree_add_string(tree, hf_fcfzs_mbrid, tvb,
+ offset+4, 8,
+ tvb_fcwwn_to_str(tvb, offset+4));
break;
case FC_FZS_ZONEMBR_DP:
- proto_tree_add_string_format (tree,
- hf_fcfzs_mbrid,
- tvb, offset+4, 3, " ",
- "0x%x",
- tvb_get_ntoh24 (tvb,
- offset+4));
+ proto_tree_add_string_format(tree,
+ hf_fcfzs_mbrid,
+ tvb, offset+4, 3, " ",
+ "0x%x",
+ tvb_get_ntoh24(tvb,
+ offset+4));
break;
case FC_FZS_ZONEMBR_FCID:
- proto_tree_add_string (tree, hf_fcfzs_mbrid, tvb,
- offset+4, 4,
- tvb_fc_to_str (tvb, offset+4));
+ proto_tree_add_string(tree, hf_fcfzs_mbrid, tvb,
+ offset+4, 4,
+ tvb_fc_to_str(tvb, offset+4));
break;
default:
- proto_tree_add_string (tree, hf_fcfzs_mbrid, tvb,
- offset+4, 8,
- "Unknown member type format");
+ proto_tree_add_string(tree, hf_fcfzs_mbrid, tvb,
+ offset+4, 8,
+ "Unknown member type format");
}
offset += 12;
}
@@ -448,131 +432,131 @@ dissect_fcfzs_gzm (tvbuff_t *tvb, proto_tree *tree, guint8 isreq)
}
static void
-dissect_fcfzs_gazs (tvbuff_t *tvb, proto_tree *tree, guint8 isreq)
+dissect_fcfzs_gazs(tvbuff_t *tvb, proto_tree *tree, gboolean isreq)
{
int offset = 16; /* past the fc_ct header */
if (tree) {
if (!isreq) {
- dissect_fcfzs_zoneset (tvb, tree, offset);
+ dissect_fcfzs_zoneset(tvb, tree, offset);
}
}
}
static void
-dissect_fcfzs_gzs (tvbuff_t *tvb, proto_tree *tree, guint8 isreq)
+dissect_fcfzs_gzs(tvbuff_t *tvb, proto_tree *tree, gboolean isreq)
{
int offset = 16; /* past the fc_ct header */
int len;
if (tree) {
if (isreq) {
- len = tvb_get_guint8 (tvb, offset);
- proto_tree_add_item (tree, hf_fcfzs_zonesetnmlen, tvb, offset,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_fcfzs_zonesetname, tvb, offset+4,
- len, ENC_ASCII|ENC_NA);
+ len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_fcfzs_zonesetnmlen, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_fcfzs_zonesetname, tvb, offset+4,
+ len, ENC_ASCII|ENC_NA);
}
else {
- dissect_fcfzs_zoneset (tvb, tree, offset);
+ dissect_fcfzs_zoneset(tvb, tree, offset);
}
}
}
static void
-dissect_fcfzs_adzs (tvbuff_t *tvb, proto_tree *tree, guint8 isreq)
+dissect_fcfzs_adzs(tvbuff_t *tvb, proto_tree *tree, gboolean isreq)
{
int offset = 16; /* past the fc_ct header */
if (tree) {
if (isreq) {
- dissect_fcfzs_zoneset (tvb, tree, offset);
+ dissect_fcfzs_zoneset(tvb, tree, offset);
}
}
}
static void
-dissect_fcfzs_azsd (tvbuff_t *tvb, proto_tree *tree, guint8 isreq)
+dissect_fcfzs_azsd(tvbuff_t *tvb, proto_tree *tree, gboolean isreq)
{
int offset = 16; /* past the fc_ct header */
if (tree) {
if (isreq) {
- dissect_fcfzs_zoneset (tvb, tree, offset);
+ dissect_fcfzs_zoneset(tvb, tree, offset);
}
}
}
static void
-dissect_fcfzs_arzs (tvbuff_t *tvb, proto_tree *tree, guint8 isreq)
+dissect_fcfzs_arzs(tvbuff_t *tvb, proto_tree *tree, gboolean isreq)
{
int offset = 16; /* past the fc_ct header */
int len;
if (tree) {
if (isreq) {
- len = tvb_get_guint8 (tvb, offset);
- proto_tree_add_item (tree, hf_fcfzs_zonesetnmlen, tvb, offset,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_fcfzs_zonesetname, tvb, offset+4,
- len, ENC_ASCII|ENC_NA);
+ len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_fcfzs_zonesetnmlen, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_fcfzs_zonesetname, tvb, offset+4,
+ len, ENC_ASCII|ENC_NA);
}
}
}
static void
-dissect_fcfzs_dzs (tvbuff_t *tvb _U_, proto_tree *tree _U_, guint8 isreq _U_)
+dissect_fcfzs_dzs(tvbuff_t *tvb _U_, proto_tree *tree _U_, gboolean isreq _U_)
{
/* Both req & successful response contain just the FC_CT header */
return;
}
static void
-dissect_fcfzs_arzm (tvbuff_t *tvb, proto_tree *tree, guint8 isreq)
+dissect_fcfzs_arzm(tvbuff_t *tvb, proto_tree *tree, gboolean isreq)
{
int numrec, i, len, plen;
int offset = 16; /* past the fc_ct header */
if (tree) {
if (isreq) {
- len = tvb_get_guint8 (tvb, offset);
- proto_tree_add_item (tree, hf_fcfzs_zonenmlen, tvb, offset,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_fcfzs_zonename, tvb, offset+1,
- len, ENC_ASCII|ENC_NA);
+ len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_fcfzs_zonenmlen, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_fcfzs_zonename, tvb, offset+1,
+ len, ENC_ASCII|ENC_NA);
len += (len % 4);
- plen = tvb_length (tvb) - offset - len;
+ plen = tvb_length(tvb) - offset - len;
numrec = plen/12; /* each mbr rec is 12 bytes long */
offset += len;
for (i = 0; i < numrec; i++) {
- proto_tree_add_item (tree, hf_fcfzs_mbrtype, tvb, offset, 1, ENC_BIG_ENDIAN);
- switch (tvb_get_guint8 (tvb, offset)) {
+ proto_tree_add_item(tree, hf_fcfzs_mbrtype, tvb, offset, 1, ENC_BIG_ENDIAN);
+ switch (tvb_get_guint8(tvb, offset)) {
case FC_FZS_ZONEMBR_PWWN:
case FC_FZS_ZONEMBR_NWWN:
- proto_tree_add_string (tree, hf_fcfzs_mbrid, tvb,
- offset+4, 8,
- tvb_fcwwn_to_str (tvb, offset+4));
+ proto_tree_add_string(tree, hf_fcfzs_mbrid, tvb,
+ offset+4, 8,
+ tvb_fcwwn_to_str(tvb, offset+4));
break;
case FC_FZS_ZONEMBR_DP:
- proto_tree_add_string_format (tree,
- hf_fcfzs_mbrid,
- tvb, offset+4, 3, " ",
- "0x%x",
- tvb_get_ntoh24 (tvb,
- offset+4));
+ proto_tree_add_string_format(tree,
+ hf_fcfzs_mbrid,
+ tvb, offset+4, 3, " ",
+ "0x%x",
+ tvb_get_ntoh24(tvb,
+ offset+4));
break;
case FC_FZS_ZONEMBR_FCID:
- proto_tree_add_string (tree, hf_fcfzs_mbrid, tvb,
- offset+4, 4,
- tvb_fc_to_str (tvb, offset+4));
+ proto_tree_add_string(tree, hf_fcfzs_mbrid, tvb,
+ offset+4, 4,
+ tvb_fc_to_str(tvb, offset+4));
break;
default:
- proto_tree_add_string (tree, hf_fcfzs_mbrid, tvb,
- offset+4, 8,
- "Unknown member type format");
+ proto_tree_add_string(tree, hf_fcfzs_mbrid, tvb,
+ offset+4, 8,
+ "Unknown member type format");
}
offset += 12;
}
@@ -581,92 +565,92 @@ dissect_fcfzs_arzm (tvbuff_t *tvb, proto_tree *tree, guint8 isreq)
}
static void
-dissect_fcfzs_arzd (tvbuff_t *tvb, proto_tree *tree, guint8 isreq)
+dissect_fcfzs_arzd(tvbuff_t *tvb, proto_tree *tree, gboolean isreq)
{
int offset = 16; /* past the fc_ct header */
int len;
if (tree) {
if (isreq) {
- len = tvb_get_guint8 (tvb, offset);
- proto_tree_add_item (tree, hf_fcfzs_zonesetnmlen, tvb, offset,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_fcfzs_zonesetname, tvb, offset+4,
- len, ENC_ASCII|ENC_NA);
+ len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_fcfzs_zonesetnmlen, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_fcfzs_zonesetname, tvb, offset+4,
+ len, ENC_ASCII|ENC_NA);
len += (len % 4);
offset += len;
- len = tvb_get_guint8 (tvb, offset);
- proto_tree_add_item (tree, hf_fcfzs_zonenmlen, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_fcfzs_zonename, tvb, offset+4,
- len, ENC_ASCII|ENC_NA);
+ len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_fcfzs_zonenmlen, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_fcfzs_zonename, tvb, offset+4,
+ len, ENC_ASCII|ENC_NA);
}
}
}
static void
-dissect_fcfzs_rjt (tvbuff_t *tvb, proto_tree *tree)
+dissect_fcfzs_rjt(tvbuff_t *tvb, proto_tree *tree)
{
int offset = 0;
if (tree) {
- proto_tree_add_item (tree, hf_fcfzs_reason, tvb, offset+13, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_fcfzs_rjtdetail, tvb, offset+14, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_fcfzs_rjtvendor, tvb, offset+15, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_fcfzs_reason, tvb, offset+13, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_fcfzs_rjtdetail, tvb, offset+14, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_fcfzs_rjtvendor, tvb, offset+15, 1, ENC_BIG_ENDIAN);
}
}
static void
-dissect_fcfzs (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+dissect_fcfzs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
/* Set up structures needed to add the protocol subtree and manage it */
- proto_item *ti;
- proto_tree *fcfzs_tree = NULL;
- int offset = 0;
- fc_ct_preamble cthdr;
- int opcode,
- failed_opcode = 0;
- conversation_t *conversation;
+ proto_item *ti;
+ proto_tree *fcfzs_tree = NULL;
+ int offset = 0;
+ fc_ct_preamble cthdr;
+ int opcode;
+ int failed_opcode = 0;
+ conversation_t *conversation;
fcfzs_conv_data_t *cdata;
- fcfzs_conv_key_t ckey, *req_key;
- guint8 isreq = 1;
+ fcfzs_conv_key_t ckey, *req_key;
+ gboolean isreq = TRUE;
/* Make entries in Protocol column and Info column on summary display */
col_set_str(pinfo->cinfo, COL_PROTOCOL, "Zone Server");
- tvb_memcpy (tvb, (guint8 *)&cthdr, offset, FCCT_PRMBL_SIZE);
- cthdr.revision = tvb_get_guint8 (tvb, offset+1);
- cthdr.in_id = tvb_get_ntoh24 (tvb, offset);
- cthdr.opcode = g_ntohs (cthdr.opcode);
+ tvb_memcpy(tvb, (guint8 *)&cthdr, offset, FCCT_PRMBL_SIZE);
+ cthdr.revision = tvb_get_guint8(tvb, offset+1);
+ cthdr.in_id = tvb_get_ntoh24(tvb, offset);
+ cthdr.opcode = g_ntohs(cthdr.opcode);
opcode = cthdr.opcode;
- cthdr.maxres_size = g_ntohs (cthdr.maxres_size);
+ cthdr.maxres_size = g_ntohs(cthdr.maxres_size);
if (tree) {
- ti = proto_tree_add_protocol_format (tree, proto_fcfzs, tvb, 0,
- tvb_length (tvb),
- "Zone Server");
- fcfzs_tree = proto_item_add_subtree (ti, ett_fcfzs);
- proto_tree_add_item (fcfzs_tree, hf_fcfzs_opcode, tvb, offset+8, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item (fcfzs_tree, hf_fcfzs_maxres_size, tvb, offset+10,
- 2, ENC_BIG_ENDIAN);
+ ti = proto_tree_add_protocol_format(tree, proto_fcfzs, tvb, 0,
+ tvb_length(tvb),
+ "Zone Server");
+ fcfzs_tree = proto_item_add_subtree(ti, ett_fcfzs);
+ proto_tree_add_item(fcfzs_tree, hf_fcfzs_opcode, tvb, offset+8, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(fcfzs_tree, hf_fcfzs_maxres_size, tvb, offset+10,
+ 2, ENC_BIG_ENDIAN);
}
if ((opcode != FCCT_MSG_ACC) && (opcode != FCCT_MSG_RJT)) {
- conversation = find_conversation (pinfo->fd->num, &pinfo->src, &pinfo->dst,
- pinfo->ptype, pinfo->oxid,
- pinfo->rxid, NO_PORT2);
+ conversation = find_conversation(pinfo->fd->num, &pinfo->src, &pinfo->dst,
+ pinfo->ptype, pinfo->oxid,
+ pinfo->rxid, NO_PORT2);
if (!conversation) {
- conversation = conversation_new (pinfo->fd->num, &pinfo->src, &pinfo->dst,
- pinfo->ptype, pinfo->oxid,
- pinfo->rxid, NO_PORT2);
+ conversation = conversation_new(pinfo->fd->num, &pinfo->src, &pinfo->dst,
+ pinfo->ptype, pinfo->oxid,
+ pinfo->rxid, NO_PORT2);
}
ckey.conv_idx = conversation->index;
- cdata = (fcfzs_conv_data_t *)g_hash_table_lookup (fcfzs_req_hash,
- &ckey);
+ cdata = (fcfzs_conv_data_t *)g_hash_table_lookup(fcfzs_req_hash,
+ &ckey);
if (cdata) {
/* Since we never free the memory used by an exchange, this maybe a
* case of another request using the same exchange as a previous
@@ -675,42 +659,42 @@ dissect_fcfzs (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
cdata->opcode = opcode;
}
else {
- req_key = se_alloc (sizeof(fcfzs_conv_key_t));
+ req_key = se_alloc(sizeof(fcfzs_conv_key_t));
req_key->conv_idx = conversation->index;
- cdata = se_alloc (sizeof(fcfzs_conv_data_t));
+ cdata = se_alloc(sizeof(fcfzs_conv_data_t));
cdata->opcode = opcode;
- g_hash_table_insert (fcfzs_req_hash, req_key, cdata);
+ g_hash_table_insert(fcfzs_req_hash, req_key, cdata);
}
- if (check_col (pinfo->cinfo, COL_INFO)) {
- col_add_str (pinfo->cinfo, COL_INFO, val_to_str (opcode, fc_fzs_opcode_val,
- "0x%x"));
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_add_str(pinfo->cinfo, COL_INFO, val_to_str(opcode, fc_fzs_opcode_val,
+ "0x%x"));
}
}
else {
/* Opcode is ACC or RJT */
- conversation = find_conversation (pinfo->fd->num, &pinfo->src, &pinfo->dst,
- pinfo->ptype, pinfo->oxid,
- pinfo->rxid, NO_PORT2);
- isreq = 0;
+ conversation = find_conversation(pinfo->fd->num, &pinfo->src, &pinfo->dst,
+ pinfo->ptype, pinfo->oxid,
+ pinfo->rxid, NO_PORT2);
+ isreq = FALSE;
if (!conversation) {
if (tree && (opcode == FCCT_MSG_ACC)) {
- if (check_col (pinfo->cinfo, COL_INFO)) {
- col_add_str (pinfo->cinfo, COL_INFO,
- val_to_str (opcode, fc_fzs_opcode_val,
- "0x%x"));
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_add_str(pinfo->cinfo, COL_INFO,
+ val_to_str(opcode, fc_fzs_opcode_val,
+ "0x%x"));
}
/* No record of what this accept is for. Can't decode */
- proto_tree_add_text (fcfzs_tree, tvb, 0, tvb_length (tvb),
- "No record of Exchg. Unable to decode MSG_ACC");
+ proto_tree_add_text(fcfzs_tree, tvb, 0, tvb_length(tvb),
+ "No record of Exchg. Unable to decode MSG_ACC");
return;
}
}
else {
ckey.conv_idx = conversation->index;
- cdata = (fcfzs_conv_data_t *)g_hash_table_lookup (fcfzs_req_hash, &ckey);
+ cdata = (fcfzs_conv_data_t *)g_hash_table_lookup(fcfzs_req_hash, &ckey);
if (cdata != NULL) {
if (opcode == FCCT_MSG_ACC)
@@ -719,24 +703,24 @@ dissect_fcfzs (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
failed_opcode = cdata->opcode;
}
- if (check_col (pinfo->cinfo, COL_INFO)) {
+ if (check_col(pinfo->cinfo, COL_INFO)) {
if (opcode != FCCT_MSG_RJT) {
- col_add_fstr (pinfo->cinfo, COL_INFO, "MSG_ACC (%s)",
- val_to_str (opcode,
- fc_fzs_opcode_val, "0x%x"));
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MSG_ACC (%s)",
+ val_to_str(opcode,
+ fc_fzs_opcode_val, "0x%x"));
}
else {
- col_add_fstr (pinfo->cinfo, COL_INFO, "MSG_RJT (%s)",
- val_to_str (failed_opcode,
- fc_fzs_opcode_val, "0x%x"));
+ col_add_fstr(pinfo->cinfo, COL_INFO, "MSG_RJT (%s)",
+ val_to_str(failed_opcode,
+ fc_fzs_opcode_val, "0x%x"));
}
}
if (tree) {
if ((cdata == NULL) && (opcode != FCCT_MSG_RJT)) {
/* No record of what this accept is for. Can't decode */
- proto_tree_add_text (fcfzs_tree, tvb, 0, tvb_length (tvb),
- "No record of Exchg. Unable to decode MSG_ACC/RJT");
+ proto_tree_add_text(fcfzs_tree, tvb, 0, tvb_length(tvb),
+ "No record of Exchg. Unable to decode MSG_ACC/RJT");
return;
}
}
@@ -745,58 +729,58 @@ dissect_fcfzs (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
switch (opcode) {
case FCCT_MSG_RJT:
- dissect_fcfzs_rjt (tvb, fcfzs_tree);
+ dissect_fcfzs_rjt(tvb, fcfzs_tree);
break;
case FC_FZS_GZC:
- dissect_fcfzs_gzc (tvb, 16, fcfzs_tree, isreq);
+ dissect_fcfzs_gzc(tvb, 16, fcfzs_tree, isreq);
break;
case FC_FZS_GEST:
- dissect_fcfzs_gest (tvb, fcfzs_tree, isreq);
+ dissect_fcfzs_gest(tvb, fcfzs_tree, isreq);
break;
case FC_FZS_GZSN:
- dissect_fcfzs_gzsn (tvb, fcfzs_tree, isreq);
+ dissect_fcfzs_gzsn(tvb, fcfzs_tree, isreq);
break;
case FC_FZS_GZD:
- dissect_fcfzs_gzd (tvb, fcfzs_tree, isreq);
+ dissect_fcfzs_gzd(tvb, fcfzs_tree, isreq);
break;
case FC_FZS_GZM:
- dissect_fcfzs_gzm (tvb, fcfzs_tree, isreq);
+ dissect_fcfzs_gzm(tvb, fcfzs_tree, isreq);
break;
case FC_FZS_GAZS:
- dissect_fcfzs_gazs (tvb, fcfzs_tree, isreq);
+ dissect_fcfzs_gazs(tvb, fcfzs_tree, isreq);
break;
case FC_FZS_GZS:
- dissect_fcfzs_gzs (tvb, fcfzs_tree, isreq);
+ dissect_fcfzs_gzs(tvb, fcfzs_tree, isreq);
break;
case FC_FZS_ADZS:
- dissect_fcfzs_adzs (tvb, fcfzs_tree, isreq);
+ dissect_fcfzs_adzs(tvb, fcfzs_tree, isreq);
break;
case FC_FZS_AZSD:
- dissect_fcfzs_azsd (tvb, fcfzs_tree, isreq);
+ dissect_fcfzs_azsd(tvb, fcfzs_tree, isreq);
break;
case FC_FZS_AZS:
- dissect_fcfzs_arzs (tvb, fcfzs_tree, isreq);
+ dissect_fcfzs_arzs(tvb, fcfzs_tree, isreq);
break;
case FC_FZS_DZS:
- dissect_fcfzs_dzs (tvb, fcfzs_tree, isreq);
+ dissect_fcfzs_dzs(tvb, fcfzs_tree, isreq);
break;
case FC_FZS_AZM:
- dissect_fcfzs_arzm (tvb, fcfzs_tree, isreq);
+ dissect_fcfzs_arzm(tvb, fcfzs_tree, isreq);
break;
case FC_FZS_AZD:
- dissect_fcfzs_arzd (tvb, fcfzs_tree, isreq);
+ dissect_fcfzs_arzd(tvb, fcfzs_tree, isreq);
break;
case FC_FZS_RZM:
- dissect_fcfzs_arzm (tvb, fcfzs_tree, isreq);
+ dissect_fcfzs_arzm(tvb, fcfzs_tree, isreq);
break;
case FC_FZS_RZD:
- dissect_fcfzs_arzd (tvb, fcfzs_tree, isreq);
+ dissect_fcfzs_arzd(tvb, fcfzs_tree, isreq);
break;
case FC_FZS_RZS:
- dissect_fcfzs_arzs (tvb, fcfzs_tree, isreq);
+ dissect_fcfzs_arzs(tvb, fcfzs_tree, isreq);
break;
default:
- call_dissector (data_handle, tvb, pinfo, tree);
+ call_dissector(data_handle, tvb, pinfo, tree);
break;
}
}
@@ -809,86 +793,140 @@ proto_register_fcfzs(void)
static hf_register_info hf[] = {
{ &hf_fcfzs_opcode,
- {"Opcode", "fcfzs.opcode", FT_UINT16, BASE_HEX,
- VALS (fc_fzs_opcode_val), 0x0, NULL, HFILL}},
+ {"Opcode", "fcfzs.opcode",
+ FT_UINT16, BASE_HEX, VALS(fc_fzs_opcode_val), 0x0,
+ NULL, HFILL}},
+
{ &hf_fcfzs_gzc_vendor,
- {"Vendor Specific Flags", "fcfzs.gzc.vendor", FT_UINT32, BASE_HEX,
- NULL, 0x0, NULL, HFILL}},
+ {"Vendor Specific Flags", "fcfzs.gzc.vendor",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcfzs_gest_vendor,
- {"Vendor Specific State", "fcfzs.gest.vendor", FT_UINT32, BASE_HEX,
- NULL, 0x0, NULL, HFILL}},
+ {"Vendor Specific State", "fcfzs.gest.vendor",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcfzs_numzoneattrs,
{"Number of Zone Attribute Entries", "fcfzs.zone.numattrs",
- FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcfzs_zonesetnmlen,
- {"Zone Set Name Length", "fcfzs.zoneset.namelen", FT_UINT8, BASE_DEC,
- NULL, 0x0, NULL, HFILL}},
+ {"Zone Set Name Length", "fcfzs.zoneset.namelen",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcfzs_zonesetname,
- {"Zone Set Name", "fcfzs.zoneset.name", FT_STRING, BASE_NONE, NULL,
- 0x0, NULL, HFILL}},
+ {"Zone Set Name", "fcfzs.zoneset.name",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcfzs_numzones,
- {"Number of Zones", "fcfzs.zoneset.numzones", FT_UINT32, BASE_DEC,
- NULL, 0x0, NULL, HFILL}},
+ {"Number of Zones", "fcfzs.zoneset.numzones",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcfzs_numzonesetattrs,
{"Number of Zone Set Attribute Entries", "fcfzs.zoneset.numattrs",
- FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcfzs_zonenmlen,
- {"Zone Name Length", "fcfzs.zone.namelen", FT_UINT8, BASE_DEC, NULL,
- 0x0, NULL, HFILL}},
+ {"Zone Name Length", "fcfzs.zone.namelen",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcfzs_zonename,
- {"Zone Name", "fcfzs.zone.name", FT_STRING, BASE_NONE, NULL, 0x0, NULL,
- HFILL}},
+ {"Zone Name", "fcfzs.zone.name",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcfzs_nummbrs,
- {"Number of Zone Members", "fcfzs.zone.nummbrs", FT_UINT32, BASE_DEC,
- NULL, 0x0, NULL, HFILL}},
+ {"Number of Zone Members", "fcfzs.zone.nummbrs",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcfzs_nummbrentries,
{"Number of Zone Member Attribute Entries", "fcfzs.zonembr.numattrs",
- FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcfzs_mbrtype,
- {"Zone Member Identifier Type", "fcfzs.zonembr.idtype", FT_UINT8,
- BASE_HEX, VALS (fc_fzs_zonembr_type_val), 0x0, NULL, HFILL}},
+ {"Zone Member Identifier Type", "fcfzs.zonembr.idtype",
+ FT_UINT8, BASE_HEX, VALS(fc_fzs_zonembr_type_val), 0x0,
+ NULL, HFILL}},
+
{ &hf_fcfzs_mbridlen,
- {"Zone Member Identifier Length", "fcfzs.zonembr.idlen", FT_UINT8,
- BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ {"Zone Member Identifier Length", "fcfzs.zonembr.idlen",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcfzs_mbrid,
- {"Zone Member Identifier", "fcfzs.zone.mbrid", FT_STRING, BASE_NONE,
- NULL, 0x0, NULL, HFILL}},
+ {"Zone Member Identifier", "fcfzs.zone.mbrid",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcfzs_reason,
- {"Reason Code", "fcfzs.reason", FT_UINT8, BASE_HEX,
- VALS (fc_ct_rjt_code_vals), 0x0, NULL, HFILL}},
+ {"Reason Code", "fcfzs.reason",
+ FT_UINT8, BASE_HEX, VALS(fc_ct_rjt_code_vals), 0x0,
+ NULL, HFILL}},
+
{ &hf_fcfzs_rjtdetail,
- {"Reason Code Explanation", "fcfzs.rjtdetail", FT_UINT8, BASE_HEX,
- VALS (fc_fzs_rjt_code_val), 0x0, NULL, HFILL}},
+ {"Reason Code Explanation", "fcfzs.rjtdetail",
+ FT_UINT8, BASE_HEX, VALS(fc_fzs_rjt_code_val), 0x0,
+ NULL, HFILL}},
+
{ &hf_fcfzs_rjtvendor,
- {"Vendor Specific Reason", "fcfzs.rjtvendor", FT_UINT8, BASE_HEX,
- NULL, 0x0, NULL, HFILL}},
+ {"Vendor Specific Reason", "fcfzs.rjtvendor",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcfzs_maxres_size,
- {"Maximum/Residual Size", "fcfzs.maxres_size", FT_UINT16, BASE_DEC,
- NULL, 0x0, NULL, HFILL}},
+ {"Maximum/Residual Size", "fcfzs.maxres_size",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcfzs_mbrid_lun,
- {"LUN", "fcfzs.zone.lun", FT_BYTES, BASE_NONE, NULL, 0x0, NULL,
- HFILL}},
+ {"LUN", "fcfzs.zone.lun",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcfzs_gzc_flags,
- {"Capabilities", "fcfzs.gzc.flags", FT_UINT8, BASE_HEX, NULL, 0x0,
+ {"Capabilities", "fcfzs.gzc.flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL}},
+
{ &hf_fcfzs_gzc_flags_hard_zones,
- {"Hard Zones", "fcfzs.gzc.flags.hard_zones", FT_BOOLEAN, 8,
- TFS(&tfs_fc_fcfzs_gzc_flags_hard_zones), 0x80, NULL, HFILL}},
+ {"Hard Zones", "fcfzs.gzc.flags.hard_zones",
+ FT_BOOLEAN, 8, TFS(&tfs_fc_fcfzs_gzc_flags_hard_zones), 0x80,
+ NULL, HFILL}},
+
{ &hf_fcfzs_gzc_flags_soft_zones,
- {"Soft Zones", "fcfzs.gzc.flags.soft_zones", FT_BOOLEAN, 8,
- TFS(&tfs_fc_fcfzs_gzc_flags_soft_zones), 0x40, NULL, HFILL}},
+ {"Soft Zones", "fcfzs.gzc.flags.soft_zones",
+ FT_BOOLEAN, 8, TFS(&tfs_fc_fcfzs_gzc_flags_soft_zones), 0x40,
+ NULL, HFILL}},
+
{ &hf_fcfzs_gzc_flags_zoneset_db,
- {"ZoneSet Database", "fcfzs.gzc.flags.zoneset_db", FT_BOOLEAN, 8,
- TFS(&tfs_fc_fcfzs_gzc_flags_zoneset_db), 0x01, NULL, HFILL}},
+ {"ZoneSet Database", "fcfzs.gzc.flags.zoneset_db",
+ FT_BOOLEAN, 8, TFS(&tfs_fc_fcfzs_gzc_flags_zoneset_db), 0x01,
+ NULL, HFILL}},
+
{ &hf_fcfzs_zone_state,
- {"Zone State", "fcfzs.zone.state", FT_UINT8, BASE_HEX, NULL, 0x0,
+ {"Zone State", "fcfzs.zone.state",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL}},
+
{ &hf_fcfzs_soft_zone_set_enforced,
- {"Soft Zone Set", "fcfzs.soft_zone_set.enforced", FT_BOOLEAN, 8,
- TFS(&tfs_fc_fcfzs_soft_zone_set_enforced), 0x80, NULL, HFILL}},
+ {"Soft Zone Set", "fcfzs.soft_zone_set.enforced",
+ FT_BOOLEAN, 8, TFS(&tfs_fc_fcfzs_soft_zone_set_enforced), 0x80,
+ NULL, HFILL}},
+
{ &hf_fcfzs_hard_zone_set_enforced,
- {"Hard Zone Set", "fcfzs.hard_zone_set.enforced", FT_BOOLEAN, 8,
- TFS(&tfs_fc_fcfzs_hard_zone_set_enforced), 0x40, NULL, HFILL}},
+ {"Hard Zone Set", "fcfzs.hard_zone_set.enforced",
+ FT_BOOLEAN, 8, TFS(&tfs_fc_fcfzs_hard_zone_set_enforced), 0x40,
+ NULL, HFILL}},
+
};
static gint *ett[] = {
@@ -901,19 +939,19 @@ proto_register_fcfzs(void)
proto_register_field_array(proto_fcfzs, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
- register_init_routine (&fcfzs_init_protocol);
+ register_init_routine(&fcfzs_init_protocol);
}
void
-proto_reg_handoff_fcfzs (void)
+proto_reg_handoff_fcfzs(void)
{
dissector_handle_t fzs_handle;
- fzs_handle = create_dissector_handle (dissect_fcfzs, proto_fcfzs);
+ fzs_handle = create_dissector_handle(dissect_fcfzs, proto_fcfzs);
dissector_add_uint("fcct.server", FCCT_GSRVR_FZS, fzs_handle);
- data_handle = find_dissector ("data");
+ data_handle = find_dissector("data");
}
diff --git a/epan/dissectors/packet-fcgi.c b/epan/dissectors/packet-fcgi.c
index 3be25b63dc..81415d35f3 100644
--- a/epan/dissectors/packet-fcgi.c
+++ b/epan/dissectors/packet-fcgi.c
@@ -141,7 +141,7 @@ dissect_nv_pairs(tvbuff_t *tvb, proto_tree *fcgi_tree, gint offset, guint16 len)
}
}
-static void
+static int
dissect_begin_request(tvbuff_t *tvb, proto_tree *fcgi_tree, gint offset, guint16 len)
{
proto_item *br;
@@ -159,7 +159,7 @@ dissect_begin_request(tvbuff_t *tvb, proto_tree *fcgi_tree, gint offset, guint16
offset += 5;
- return;
+ return offset;
}
static void
@@ -170,7 +170,7 @@ dissect_abort_request(tvbuff_t *tvb, proto_tree *fcgi_tree, gint offset, guint16
return;
}
-static void
+static int
dissect_end_request(tvbuff_t *tvb, proto_tree *fcgi_tree, gint offset, guint16 len)
{
proto_item *er;
@@ -187,7 +187,7 @@ dissect_end_request(tvbuff_t *tvb, proto_tree *fcgi_tree, gint offset, guint16 l
offset += 3;
- return;
+ return offset;
}
static void
@@ -318,7 +318,7 @@ dissect_fcgi_record(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (plen > 0) {
proto_tree_add_item(fcgi_tree, hf_fcgi_padding_data, tvb, offset, plen, ENC_NA);
- offset += plen;
+ /*offset += plen;*/
}
}
}
diff --git a/epan/dissectors/packet-fcip.c b/epan/dissectors/packet-fcip.c
index 4b4db5211d..7cb91cd3f5 100644
--- a/epan/dissectors/packet-fcip.c
+++ b/epan/dissectors/packet-fcip.c
@@ -28,8 +28,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
@@ -68,14 +66,14 @@ typedef enum {
} fcencap_proto_t;
static const value_string fcip_eof_vals[] = {
- {FCIP_EOFn, "EOFn" },
- {FCIP_EOFt, "EOFt" },
- {FCIP_EOFrt, "EOFrt" },
- {FCIP_EOFdt, "EOFdt" },
- {FCIP_EOFni, "EOFni" },
+ {FCIP_EOFn, "EOFn" },
+ {FCIP_EOFt, "EOFt" },
+ {FCIP_EOFrt, "EOFrt" },
+ {FCIP_EOFdt, "EOFdt" },
+ {FCIP_EOFni, "EOFni" },
{FCIP_EOFdti, "EOFdti" },
{FCIP_EOFrti, "EOFrti" },
- {FCIP_EOFa, "EOFa" },
+ {FCIP_EOFa, "EOFa" },
{0, NULL},
};
@@ -92,8 +90,8 @@ static const value_string fcip_sof_vals[] = {
};
static const value_string fcencap_proto_vals[] = {
- {FCENCAP_PROTO_FCIP, "FCIP"},
- {FCENCAP_PROTO_iFCP, "iFCP"},
+ {FCENCAP_PROTO_FCIP, "FCIP" },
+ {FCENCAP_PROTO_iFCP, "iFCP" },
{0, NULL},
};
@@ -104,32 +102,32 @@ static const guint8 fcip_header_8_bytes[8] = {
static int proto_fcip = -1;
-static int hf_fcip_protocol = -1;
-static int hf_fcip_protocol_c = -1;
-static int hf_fcip_version = -1;
-static int hf_fcip_version_c = -1;
-static int hf_fcip_encap_word1 = -1;
-static int hf_fcip_flags = -1;
-static int hf_fcip_flags_c = -1;
-static int hf_fcip_framelen = -1;
-static int hf_fcip_framelen_c = -1;
-static int hf_fcip_tsec = -1;
-static int hf_fcip_tusec = -1;
-static int hf_fcip_encap_crc = -1;
-static int hf_fcip_sof = -1;
-static int hf_fcip_sof_c = -1;
-static int hf_fcip_eof = -1;
-static int hf_fcip_eof_c = -1;
+static int hf_fcip_protocol = -1;
+static int hf_fcip_protocol_c = -1;
+static int hf_fcip_version = -1;
+static int hf_fcip_version_c = -1;
+static int hf_fcip_encap_word1 = -1;
+static int hf_fcip_flags = -1;
+static int hf_fcip_flags_c = -1;
+static int hf_fcip_framelen = -1;
+static int hf_fcip_framelen_c = -1;
+static int hf_fcip_tsec = -1;
+static int hf_fcip_tusec = -1;
+static int hf_fcip_encap_crc = -1;
+static int hf_fcip_sof = -1;
+static int hf_fcip_sof_c = -1;
+static int hf_fcip_eof = -1;
+static int hf_fcip_eof_c = -1;
static int hf_fcip_pflags_changed = -1;
static int hf_fcip_pflags_special = -1;
-static int hf_fcip_pflags_c = -1;
-static int hf_fcip_src_wwn = -1;
-static int hf_fcip_dst_wwn = -1;
-static int hf_fcip_conn_code = -1;
-static int hf_fcip_katov = -1;
-static int hf_fcip_src_entity_id = -1;
-static int hf_fcip_conn_nonce = -1;
-static int hf_fcip_conn_flags = -1;
+static int hf_fcip_pflags_c = -1;
+static int hf_fcip_src_wwn = -1;
+static int hf_fcip_dst_wwn = -1;
+static int hf_fcip_conn_code = -1;
+static int hf_fcip_katov = -1;
+static int hf_fcip_src_entity_id = -1;
+static int hf_fcip_conn_nonce = -1;
+static int hf_fcip_conn_flags = -1;
static int ett_fcip = -1;
@@ -145,9 +143,9 @@ static dissector_handle_t fc_handle;
static guint
get_next_fcip_header_offset (tvbuff_t *tvb, packet_info *pinfo, gint offset)
{
- gint bytes_remaining = tvb_length_remaining (tvb, offset);
- gint frame_len;
- guint16 flen, flen1;
+ gint bytes_remaining = tvb_length_remaining (tvb, offset);
+ gint frame_len;
+ guint16 flen, flen1;
fcip_eof_t eof, eofc;
/*
@@ -194,8 +192,8 @@ NXT_BYTE: while (bytes_remaining) {
* Tell the TCP dissector where the data for this
* message starts in the data it handed us, and that we need
* "some more data." Don't tell it exactly how many bytes
- * we need because if/when we ask for even more (after the
- * header) that will break reassembly.
+ * we need because if/when we ask for even more (after the
+ * header) that will break reassembly.
*/
pinfo->desegment_offset = offset;
pinfo->desegment_len = DESEGMENT_ONE_MORE_SEGMENT;
@@ -271,9 +269,9 @@ NXT_BYTE: while (bytes_remaining) {
/* Test f
- * We dont test this since some implementations actually provide
- * a CRC here.
- */
+ * We dont test this since some implementations actually provide
+ * a CRC here.
+ */
if (bytes_remaining >= (frame_len)) {
if (tvb_bytes_exist (tvb, offset+frame_len, 8)) {
@@ -539,7 +537,7 @@ proto_register_fcip (void)
/* Setup list of header fields See Section 1.6.1 for details*/
static hf_register_info hf[] = {
{ &hf_fcip_protocol,
- { "Protocol", "fcip.proto", FT_UINT8, BASE_DEC,
+ { "Protocol", "fcip.proto", FT_UINT8, BASE_DEC,
VALS(fcencap_proto_vals), 0, NULL, HFILL }},
{ &hf_fcip_protocol_c,
{"Protocol (1's Complement)", "fcip.protoc", FT_UINT8, BASE_DEC,
@@ -627,8 +625,6 @@ proto_register_fcip (void)
/* Register the protocol name and description */
proto_fcip = proto_register_protocol("FCIP", "Fibre Channel over IP", "fcip");
- /* Required function calls to register the header fields and
- * subtrees used */
proto_register_field_array(proto_fcip, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
@@ -637,7 +633,8 @@ proto_register_fcip (void)
"desegment",
"Reassemble FCIP messages spanning multiple TCP segments",
"Whether the FCIP dissector should reassemble messages spanning multiple TCP segments."
- " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
+ " To use this option, you must also enable"
+ " \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
&fcip_desegment);
prefs_register_uint_preference(fcip_module,
"target_port",
@@ -647,16 +644,6 @@ proto_register_fcip (void)
&fcip_port);
}
-
-/*
- * If this dissector uses sub-dissector registration add a
- * registration routine.
- */
-
-/*
- * This format is required because a script is used to find these
- * routines and create the code that calls these routines.
- */
void
proto_reg_handoff_fcip (void)
{
@@ -668,5 +655,5 @@ proto_reg_handoff_fcip (void)
dissector_add_handle("tcp.port", fcip_handle);
data_handle = find_dissector("data");
- fc_handle = find_dissector("fc");
+ fc_handle = find_dissector("fc");
}
diff --git a/epan/dissectors/packet-fclctl.c b/epan/dissectors/packet-fclctl.c
index 0475fb8570..fa93088ff1 100644
--- a/epan/dissectors/packet-fclctl.c
+++ b/epan/dissectors/packet-fclctl.c
@@ -1,5 +1,5 @@
/* packet-fclctl.c
- * Routines for FC Link Control Frames
+ * Routines for FC Link Control Frames
* Copyright 2001, Dinesh G Dutt <ddutt@cisco.com>
*
* $Id$
@@ -7,17 +7,17 @@
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
- *
+ *
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
@@ -27,16 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
@@ -132,7 +122,7 @@ fclctl_get_typestr (guint8 linkctl_type, guint8 type)
{
if ((linkctl_type == FC_LCTL_FBSYB) ||
(linkctl_type == FC_LCTL_FBSYL)) {
- return (val_to_str ((type & 0xF0), fc_lctl_fbsy_val, "0x%x"));
+ return (val_to_str ((type & 0xF0), fc_lctl_fbsy_val, "0x%x"));
}
return "";
}
@@ -141,13 +131,13 @@ const gchar *
fclctl_get_paramstr (guint32 linkctl_type, guint32 param)
{
if (linkctl_type == FC_LCTL_PBSY) {
- return g_strdup_printf("%s, %s",
+ return g_strdup_printf("%s, %s",
val_to_str (((param & 0xFF000000) >> 24), fc_lctl_pbsy_acode_val, "0x%x"),
val_to_str (((param & 0x00FF0000) >> 16), fc_lctl_pbsy_rjt_val, "0x%x"));
}
if ((linkctl_type == FC_LCTL_FRJT) ||
(linkctl_type == FC_LCTL_PRJT)) {
- return g_strdup_printf("%s, %s",
+ return g_strdup_printf("%s, %s",
val_to_str (((param & 0xFF000000) >> 24), fc_lctl_rjt_acode_val, "0x%x"),
val_to_str (((param & 0x00FF0000) >> 16), fc_lctl_rjt_val, "%x"));
}
diff --git a/epan/dissectors/packet-fcoe.c b/epan/dissectors/packet-fcoe.c
index d1555b979e..7b25dd1e54 100644
--- a/epan/dissectors/packet-fcoe.c
+++ b/epan/dissectors/packet-fcoe.c
@@ -34,8 +34,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-fcp.c b/epan/dissectors/packet-fcp.c
index 99f31fbdd3..4634f9b00e 100644
--- a/epan/dissectors/packet-fcp.c
+++ b/epan/dissectors/packet-fcp.c
@@ -27,16 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-
#include <glib.h>
#include <epan/emem.h>
@@ -49,26 +39,26 @@
#include "packet-fcels.h"
/* Initialize the protocol and registered fields */
-static int proto_fcp = -1;
-static int hf_fcp_multilun = -1;
-static int hf_fcp_singlelun = -1;
-static int hf_fcp_crn = -1;
-static int hf_fcp_taskattr = -1;
-static int hf_fcp_taskmgmt = -1;
+static int proto_fcp = -1;
+static int hf_fcp_multilun = -1;
+static int hf_fcp_singlelun = -1;
+static int hf_fcp_crn = -1;
+static int hf_fcp_taskattr = -1;
+static int hf_fcp_taskmgmt = -1;
static int hf_fcp_addlcdblen = -1;
-static int hf_fcp_rddata = -1;
-static int hf_fcp_wrdata = -1;
-static int hf_fcp_dl = -1;
-static int hf_fcp_bidir_dl = -1;
-static int hf_fcp_data_ro = -1;
-static int hf_fcp_burstlen = -1;
-static int hf_fcp_rspflags = -1;
-static int hf_fcp_retry_delay_timer = -1;
-static int hf_fcp_resid = -1;
+static int hf_fcp_rddata = -1;
+static int hf_fcp_wrdata = -1;
+static int hf_fcp_dl = -1;
+static int hf_fcp_bidir_dl = -1;
+static int hf_fcp_data_ro = -1;
+static int hf_fcp_burstlen = -1;
+static int hf_fcp_rspflags = -1;
+static int hf_fcp_retry_delay_timer = -1;
+static int hf_fcp_resid = -1;
static int hf_fcp_bidir_resid = -1;
-static int hf_fcp_snslen = -1;
-static int hf_fcp_rsplen = -1;
-static int hf_fcp_rspcode = -1;
+static int hf_fcp_snslen = -1;
+static int hf_fcp_rsplen = -1;
+static int hf_fcp_rspcode = -1;
static int hf_fcp_scsistatus = -1;
static int hf_fcp_type = -1;
static int hf_fcp_mgmt_flags_obsolete = -1;
@@ -180,75 +170,75 @@ static const true_false_string fcp_mgmt_flags_abort_task_set_tfs = {
};
static void
-dissect_task_mgmt_flags (packet_info *pinfo, proto_tree *parent_tree, tvbuff_t *tvb, int offset)
+dissect_task_mgmt_flags(packet_info *pinfo, proto_tree *parent_tree, tvbuff_t *tvb, int offset)
{
- proto_item *item = NULL;
- proto_tree *tree = NULL;
-
- guint8 flags;
-
- if(parent_tree) {
- item = proto_tree_add_item(parent_tree, hf_fcp_taskmgmt, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- tree = proto_item_add_subtree(item, ett_fcp_taskmgmt);
- }
-
- flags = tvb_get_guint8 (tvb, offset);
-
- if (!flags)
- proto_item_append_text(item, " (No values set)");
-
- proto_tree_add_boolean(tree, hf_fcp_mgmt_flags_obsolete, tvb, offset, 1, flags);
- if (flags&0x80){
- proto_item_append_text(item, " OBSOLETE");
- col_prepend_fence_fstr(pinfo->cinfo, COL_INFO, "[FCP OBSOLETE] ");
- }
- flags&=(~( 0x80 ));
-
- proto_tree_add_boolean(tree, hf_fcp_mgmt_flags_clear_aca, tvb, offset, 1, flags);
- if (flags&0x40){
- proto_item_append_text(item, " CLEAR ACA");
- col_prepend_fence_fstr(pinfo->cinfo, COL_INFO, "[FCP CLEAR_ACA] ");
- }
- flags&=(~( 0x40 ));
-
- proto_tree_add_boolean(tree, hf_fcp_mgmt_flags_target_reset, tvb, offset, 1, flags);
- if (flags&0x20){
- proto_item_append_text(item, " TARGET RESET");
- col_prepend_fence_fstr(pinfo->cinfo, COL_INFO, "[FCP TARGET_RESET] ");
- }
- flags&=(~( 0x20 ));
-
- proto_tree_add_boolean(tree, hf_fcp_mgmt_flags_lu_reset, tvb, offset, 1, flags);
- if (flags&0x10){
- proto_item_append_text(item, " LU RESET");
- col_prepend_fence_fstr(pinfo->cinfo, COL_INFO, "[FCP LU_RESET] ");
- }
- flags&=(~( 0x10 ));
-
- proto_tree_add_boolean(tree, hf_fcp_mgmt_flags_rsvd, tvb, offset, 1, flags);
- if (flags&0x08){
- proto_item_append_text(item, " RSVD");
- col_prepend_fence_fstr(pinfo->cinfo, COL_INFO, "[FCP RSVD] ");
- }
- flags&=(~( 0x08 ));
-
- proto_tree_add_boolean(tree, hf_fcp_mgmt_flags_clear_task_set, tvb, offset, 1, flags);
- if (flags&0x04){
- proto_item_append_text(item, " CLEAR TASK SET");
- col_prepend_fence_fstr(pinfo->cinfo, COL_INFO, "[FCP CLEAR_TASK_SET] ");
- }
- flags&=(~( 0x04 ));
-
- proto_tree_add_boolean(tree, hf_fcp_mgmt_flags_abort_task_set, tvb, offset, 1, flags);
- if (flags&0x02){
- proto_item_append_text(item, " ABORT TASK SET");
- col_prepend_fence_fstr(pinfo->cinfo, COL_INFO, "[FCP ABORT_TASK_SET] ");
- }
- flags&=(~( 0x02 ));
-
- if(flags){
- proto_item_append_text(item, " Unknown bitmap value 0x%x", flags);
- }
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+
+ guint8 flags;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_fcp_taskmgmt, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ tree = proto_item_add_subtree(item, ett_fcp_taskmgmt);
+ }
+
+ flags = tvb_get_guint8(tvb, offset);
+
+ if (!flags)
+ proto_item_append_text(item, " (No values set)");
+
+ proto_tree_add_boolean(tree, hf_fcp_mgmt_flags_obsolete, tvb, offset, 1, flags);
+ if (flags & 0x80) {
+ proto_item_append_text(item, " OBSOLETE");
+ col_prepend_fence_fstr(pinfo->cinfo, COL_INFO, "[FCP OBSOLETE] ");
+ }
+ flags &= (~( 0x80 ));
+
+ proto_tree_add_boolean(tree, hf_fcp_mgmt_flags_clear_aca, tvb, offset, 1, flags);
+ if (flags & 0x40) {
+ proto_item_append_text(item, " CLEAR ACA");
+ col_prepend_fence_fstr(pinfo->cinfo, COL_INFO, "[FCP CLEAR_ACA] ");
+ }
+ flags &= (~( 0x40 ));
+
+ proto_tree_add_boolean(tree, hf_fcp_mgmt_flags_target_reset, tvb, offset, 1, flags);
+ if (flags & 0x20) {
+ proto_item_append_text(item, " TARGET RESET");
+ col_prepend_fence_fstr(pinfo->cinfo, COL_INFO, "[FCP TARGET_RESET] ");
+ }
+ flags &= (~( 0x20 ));
+
+ proto_tree_add_boolean(tree, hf_fcp_mgmt_flags_lu_reset, tvb, offset, 1, flags);
+ if (flags & 0x10) {
+ proto_item_append_text(item, " LU RESET");
+ col_prepend_fence_fstr(pinfo->cinfo, COL_INFO, "[FCP LU_RESET] ");
+ }
+ flags &= (~( 0x10 ));
+
+ proto_tree_add_boolean(tree, hf_fcp_mgmt_flags_rsvd, tvb, offset, 1, flags);
+ if (flags & 0x08) {
+ proto_item_append_text(item, " RSVD");
+ col_prepend_fence_fstr(pinfo->cinfo, COL_INFO, "[FCP RSVD] ");
+ }
+ flags &= (~( 0x08 ));
+
+ proto_tree_add_boolean(tree, hf_fcp_mgmt_flags_clear_task_set, tvb, offset, 1, flags);
+ if (flags & 0x04) {
+ proto_item_append_text(item, " CLEAR TASK SET");
+ col_prepend_fence_fstr(pinfo->cinfo, COL_INFO, "[FCP CLEAR_TASK_SET] ");
+ }
+ flags &= (~( 0x04 ));
+
+ proto_tree_add_boolean(tree, hf_fcp_mgmt_flags_abort_task_set, tvb, offset, 1, flags);
+ if (flags & 0x02) {
+ proto_item_append_text(item, " ABORT TASK SET");
+ col_prepend_fence_fstr(pinfo->cinfo, COL_INFO, "[FCP ABORT_TASK_SET] ");
+ }
+ flags &= (~( 0x02 ));
+
+ if (flags) {
+ proto_item_append_text(item, " Unknown bitmap value 0x%x", flags);
+ }
}
static const true_false_string fcp_rsp_flags_bidi_tfs = {
@@ -287,125 +277,125 @@ static const true_false_string fcp_rsp_flags_res_vld_tfs = {
static void
dissect_rsp_flags(proto_tree *parent_tree, tvbuff_t *tvb, int offset)
{
- proto_item *item = NULL;
- proto_tree *tree = NULL;
- gboolean bidi_resid_present=FALSE;
- guint8 flags;
-
- if(parent_tree) {
- item = proto_tree_add_item(parent_tree, hf_fcp_rspflags, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- tree = proto_item_add_subtree(item, ett_fcp_rsp_flags);
- }
-
- flags = tvb_get_guint8 (tvb, offset);
-
- if (!flags)
- proto_item_append_text(item, " (No values set)");
-
- /* BIDI RSP */
- proto_tree_add_boolean(tree, hf_fcp_rsp_flags_bidi, tvb, offset, 1, flags);
- if (flags&0x80){
- bidi_resid_present=TRUE;
- proto_item_append_text(item, " BIDI_RSP");
- if (flags & (~( 0x80 )))
- proto_item_append_text(item, ",");
- }
- flags&=(~( 0x80 ));
-
- /* these two bits are only defined if the bidi bit is set */
- if(bidi_resid_present){
- /* BIDI READ RESID UNDER */
- proto_tree_add_boolean(tree, hf_fcp_rsp_flags_bidi_rru, tvb, offset, 1, flags);
- if (flags&0x40){
- proto_item_append_text(item, " BIDI_RRU");
- if (flags & (~( 0x40 )))
- proto_item_append_text(item, ",");
- }
- flags&=(~( 0x40 ));
-
- /* BIDI READ RESID OVER */
- proto_tree_add_boolean(tree, hf_fcp_rsp_flags_bidi_rro, tvb, offset, 1, flags);
- if (flags&0x20){
- proto_item_append_text(item, " BIDI_RRO");
- if (flags & (~( 0x20 )))
- proto_item_append_text(item, ",");
- }
- flags&=(~( 0x20 ));
- }
-
- /* Conf Req */
- proto_tree_add_boolean(tree, hf_fcp_rsp_flags_conf_req, tvb, offset, 1, flags);
- if (flags&0x10){
- proto_item_append_text(item, " CONF REQ");
- if (flags & (~( 0x10 )))
- proto_item_append_text(item, ",");
- }
- flags&=(~( 0x10 ));
-
- /* Resid Under */
- proto_tree_add_boolean(tree, hf_fcp_rsp_flags_resid_under, tvb, offset, 1, flags);
- if (flags&0x08){
- proto_item_append_text(item, " RESID UNDER");
- if (flags & (~( 0x08 )))
- proto_item_append_text(item, ",");
- }
- flags&=(~( 0x08 ));
-
- /* Resid Over */
- proto_tree_add_boolean(tree, hf_fcp_rsp_flags_resid_over, tvb, offset, 1, flags);
- if (flags&0x04){
- proto_item_append_text(item, " RESID OVER");
- if (flags & (~( 0x04 )))
- proto_item_append_text(item, ",");
- }
- flags&=(~( 0x04 ));
-
- /* SNS len valid */
- proto_tree_add_boolean(tree, hf_fcp_rsp_flags_sns_vld, tvb, offset, 1, flags);
- if (flags&0x02){
- proto_item_append_text(item, " SNS VLD");
- if (flags & (~( 0x02 )))
- proto_item_append_text(item, ",");
- }
- flags&=(~( 0x02 ));
-
- /* rsp len valid */
- proto_tree_add_boolean(tree, hf_fcp_rsp_flags_res_vld, tvb, offset, 1, flags);
- if (flags&0x01){
- proto_item_append_text(item, " RES VLD");
- if (flags & (~( 0x01 )))
- proto_item_append_text(item, ",");
- }
- flags&=(~( 0x01 ));
-
- if(flags){
- proto_item_append_text(item, " Unknown bitmap value 0x%x", flags);
- }
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ gboolean bidi_resid_present = FALSE;
+ guint8 flags;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_fcp_rspflags, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ tree = proto_item_add_subtree(item, ett_fcp_rsp_flags);
+ }
+
+ flags = tvb_get_guint8(tvb, offset);
+
+ if (!flags)
+ proto_item_append_text(item, " (No values set)");
+
+ /* BIDI RSP */
+ proto_tree_add_boolean(tree, hf_fcp_rsp_flags_bidi, tvb, offset, 1, flags);
+ if (flags & 0x80) {
+ bidi_resid_present = TRUE;
+ proto_item_append_text(item, " BIDI_RSP");
+ if (flags & (~( 0x80 )))
+ proto_item_append_text(item, ",");
+ }
+ flags &= (~( 0x80 ));
+
+ /* these two bits are only defined if the bidi bit is set */
+ if (bidi_resid_present) {
+ /* BIDI READ RESID UNDER */
+ proto_tree_add_boolean(tree, hf_fcp_rsp_flags_bidi_rru, tvb, offset, 1, flags);
+ if (flags & 0x40) {
+ proto_item_append_text(item, " BIDI_RRU");
+ if (flags & (~( 0x40 )))
+ proto_item_append_text(item, ",");
+ }
+ flags &= (~( 0x40 ));
+
+ /* BIDI READ RESID OVER */
+ proto_tree_add_boolean(tree, hf_fcp_rsp_flags_bidi_rro, tvb, offset, 1, flags);
+ if (flags & 0x20) {
+ proto_item_append_text(item, " BIDI_RRO");
+ if (flags & (~( 0x20 )))
+ proto_item_append_text(item, ",");
+ }
+ flags &= (~( 0x20 ));
+ }
+
+ /* Conf Req */
+ proto_tree_add_boolean(tree, hf_fcp_rsp_flags_conf_req, tvb, offset, 1, flags);
+ if (flags & 0x10) {
+ proto_item_append_text(item, " CONF REQ");
+ if (flags & (~( 0x10 )))
+ proto_item_append_text(item, ",");
+ }
+ flags &= (~( 0x10 ));
+
+ /* Resid Under */
+ proto_tree_add_boolean(tree, hf_fcp_rsp_flags_resid_under, tvb, offset, 1, flags);
+ if (flags & 0x08) {
+ proto_item_append_text(item, " RESID UNDER");
+ if (flags & (~( 0x08 )))
+ proto_item_append_text(item, ",");
+ }
+ flags &= (~( 0x08 ));
+
+ /* Resid Over */
+ proto_tree_add_boolean(tree, hf_fcp_rsp_flags_resid_over, tvb, offset, 1, flags);
+ if (flags & 0x04) {
+ proto_item_append_text(item, " RESID OVER");
+ if (flags & (~( 0x04 )))
+ proto_item_append_text(item, ",");
+ }
+ flags &= (~( 0x04 ));
+
+ /* SNS len valid */
+ proto_tree_add_boolean(tree, hf_fcp_rsp_flags_sns_vld, tvb, offset, 1, flags);
+ if (flags & 0x02) {
+ proto_item_append_text(item, " SNS VLD");
+ if (flags & (~( 0x02 )))
+ proto_item_append_text(item, ",");
+ }
+ flags &= (~( 0x02 ));
+
+ /* rsp len valid */
+ proto_tree_add_boolean(tree, hf_fcp_rsp_flags_res_vld, tvb, offset, 1, flags);
+ if (flags & 0x01) {
+ proto_item_append_text(item, " RES VLD");
+ if (flags & (~( 0x01 )))
+ proto_item_append_text(item, ",");
+ }
+ flags &= (~( 0x01 ));
+
+ if (flags) {
+ proto_item_append_text(item, " Unknown bitmap value 0x%x", flags);
+ }
}
static void
dissect_fcp_cmnd(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, proto_tree *tree, conversation_t *conversation, fc_hdr *fchdr, fcp_conv_data_t *fcp_conv_data)
{
- int offset = 0;
- int add_len = 0;
- guint8 flags, rwflags, lun0;
- guint16 lun=0xffff;
- tvbuff_t *cdb_tvb;
- int tvb_len, tvb_rlen;
- itl_nexus_t *itl=NULL;
- proto_item *hidden_item;
+ int offset = 0;
+ int add_len = 0;
+ guint8 flags, rwflags, lun0;
+ guint16 lun = 0xffff;
+ tvbuff_t *cdb_tvb;
+ int tvb_len, tvb_rlen;
+ itl_nexus_t *itl = NULL;
+ proto_item *hidden_item;
/* Determine the length of the FCP part of the packet */
- flags = tvb_get_guint8 (tvb, offset+10);
+ flags = tvb_get_guint8(tvb, offset+10);
if (flags) {
- add_len = tvb_get_guint8 (tvb, offset+11) & 0x7C;
+ add_len = tvb_get_guint8(tvb, offset+11) & 0x7C;
add_len = add_len >> 2;
}
hidden_item = proto_tree_add_uint(tree, hf_fcp_type, tvb, offset, 0, 0);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- lun0 = tvb_get_guint8 (tvb, offset);
+ lun0 = tvb_get_guint8(tvb, offset);
/* Display single-level LUNs in decimal for clarity */
/* I'm taking a shortcut here by assuming that if the first byte of the
@@ -414,23 +404,23 @@ dissect_fcp_cmnd(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, pro
*/
if (lun0) {
proto_tree_add_item(tree, hf_fcp_multilun, tvb, offset, 8, ENC_NA);
- lun=tvb_get_guint8(tvb, offset)&0x3f;
- lun<<=8;
- lun|=tvb_get_guint8(tvb, offset+1);
+ lun = tvb_get_guint8(tvb, offset) & 0x3f;
+ lun <<= 8;
+ lun |= tvb_get_guint8(tvb, offset+1);
} else {
proto_tree_add_item(tree, hf_fcp_singlelun, tvb, offset+1,
- 1, ENC_BIG_ENDIAN);
- lun=tvb_get_guint8(tvb, offset+1);
+ 1, ENC_BIG_ENDIAN);
+ lun = tvb_get_guint8(tvb, offset+1);
}
if (fchdr->itlq)
- fchdr->itlq->lun=lun;
+ fchdr->itlq->lun = lun;
- itl=(itl_nexus_t *)se_tree_lookup32(fcp_conv_data->luns, lun);
- if(!itl){
- itl=se_alloc(sizeof(itl_nexus_t));
- itl->cmdset=0xff;
- itl->conversation=conversation;
+ itl = (itl_nexus_t *)se_tree_lookup32(fcp_conv_data->luns, lun);
+ if (!itl) {
+ itl = se_alloc(sizeof(itl_nexus_t));
+ itl->cmdset = 0xff;
+ itl->conversation = conversation;
se_tree_insert32(fcp_conv_data->luns, lun, itl);
}
@@ -438,40 +428,40 @@ dissect_fcp_cmnd(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, pro
proto_tree_add_item(tree, hf_fcp_taskattr, tvb, offset+9, 1, ENC_BIG_ENDIAN);
dissect_task_mgmt_flags(pinfo, tree, tvb, offset+10);
proto_tree_add_item(tree, hf_fcp_addlcdblen, tvb, offset+11, 1, ENC_BIG_ENDIAN);
- rwflags=tvb_get_guint8(tvb, offset+11);
- if(fchdr->itlq){
- if(rwflags&0x02){
- fchdr->itlq->task_flags|=SCSI_DATA_READ;
- }
- if(rwflags&0x01){
- fchdr->itlq->task_flags|=SCSI_DATA_WRITE;
- }
+ rwflags = tvb_get_guint8(tvb, offset+11);
+ if (fchdr->itlq) {
+ if (rwflags & 0x02) {
+ fchdr->itlq->task_flags |= SCSI_DATA_READ;
+ }
+ if (rwflags & 0x01) {
+ fchdr->itlq->task_flags |= SCSI_DATA_WRITE;
+ }
}
proto_tree_add_item(tree, hf_fcp_rddata, tvb, offset+11, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_fcp_wrdata, tvb, offset+11, 1, ENC_BIG_ENDIAN);
- tvb_len=tvb_length_remaining(tvb, offset+12);
- if(tvb_len>(16+add_len))
- tvb_len=16+add_len;
- tvb_rlen=tvb_reported_length_remaining(tvb, offset+12);
- if(tvb_rlen>(16+add_len))
- tvb_rlen=16+add_len;
- cdb_tvb=tvb_new_subset(tvb, offset+12, tvb_len, tvb_rlen);
+ tvb_len = tvb_length_remaining(tvb, offset+12);
+ if (tvb_len > (16 + add_len))
+ tvb_len = 16 + add_len;
+ tvb_rlen = tvb_reported_length_remaining(tvb, offset+12);
+ if (tvb_rlen > (16 + add_len))
+ tvb_rlen = 16 + add_len;
+ cdb_tvb = tvb_new_subset(tvb, offset+12, tvb_len, tvb_rlen);
dissect_scsi_cdb(cdb_tvb, pinfo, parent_tree, SCSI_DEV_UNKNOWN, fchdr->itlq, itl);
proto_tree_add_item(tree, hf_fcp_dl, tvb, offset+12+16+add_len,
- 4, ENC_BIG_ENDIAN);
- if(fchdr->itlq){
- fchdr->itlq->data_length=tvb_get_ntohl(tvb, offset+12+16+add_len);
+ 4, ENC_BIG_ENDIAN);
+ if (fchdr->itlq) {
+ fchdr->itlq->data_length = tvb_get_ntohl(tvb, offset+12+16+add_len);
}
- if( ((rwflags&0x03)==0x03)
- && tvb_length_remaining(tvb, offset+12+16+add_len+4)>=4){
- proto_tree_add_item(tree, hf_fcp_bidir_dl, tvb, offset+12+16+add_len+4,
- 4, ENC_BIG_ENDIAN);
- if(fchdr->itlq){
- fchdr->itlq->bidir_data_length=tvb_get_ntohl(tvb, offset+12+16+add_len+4);
- }
+ if ( ((rwflags & 0x03) == 0x03)
+ && tvb_length_remaining(tvb, offset+12+16+add_len+4) >= 4) {
+ proto_tree_add_item(tree, hf_fcp_bidir_dl, tvb, offset+12+16+add_len+4,
+ 4, ENC_BIG_ENDIAN);
+ if (fchdr->itlq) {
+ fchdr->itlq->bidir_data_length = tvb_get_ntohl(tvb, offset+12+16+add_len+4);
+ }
}
@@ -488,110 +478,110 @@ static void
dissect_fcp_rspinfo(tvbuff_t *tvb, proto_tree *tree, int offset)
{
/* 3 reserved bytes */
- offset+=3;
+ offset += 3;
/* rsp code */
proto_tree_add_item(tree, hf_fcp_rspcode, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
+ offset += 1;
/* 4 reserved bytes */
- offset+=4;
+ offset += 4;
}
static void
dissect_fcp_rsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, proto_tree *tree, conversation_t *conversation _U_, fc_hdr *fchdr, itl_nexus_t *itl)
{
- guint32 offset = 0;
- gint32 snslen = 0,
- rsplen = 0;
- guint8 flags;
- guint8 status;
+ guint32 offset = 0;
+ gint32 snslen = 0;
+ gint32 rsplen = 0;
+ guint8 flags;
+ guint8 status;
proto_item *hidden_item;
- status = tvb_get_guint8 (tvb, offset+11);
+ status = tvb_get_guint8(tvb, offset+11);
- if (check_col (pinfo->cinfo, COL_INFO)) {
- col_append_fstr (pinfo->cinfo, COL_INFO, ":%s",
- val_to_str (status, scsi_status_val, "0x%x"));
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_append_fstr(pinfo->cinfo, COL_INFO, ":%s",
+ val_to_str(status, scsi_status_val, "0x%x"));
}
hidden_item = proto_tree_add_uint(tree, hf_fcp_type, tvb, offset, 0, 0);
PROTO_ITEM_SET_HIDDEN(hidden_item);
/* 8 reserved bytes */
- offset+=8;
+ offset += 8;
/* retry delay timer */
proto_tree_add_item(tree, hf_fcp_retry_delay_timer, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset+=2;
+ offset += 2;
/* flags */
- flags = tvb_get_guint8 (tvb, offset);
+ flags = tvb_get_guint8(tvb, offset);
dissect_rsp_flags(tree, tvb, offset);
- offset++;
+ offset += 1;
/* scsi status code */
proto_tree_add_item(tree, hf_fcp_scsistatus, tvb, offset, 1, ENC_BIG_ENDIAN);
dissect_scsi_rsp(tvb, pinfo, parent_tree, fchdr->itlq, itl, tvb_get_guint8(tvb, offset));
- offset++;
+ offset += 1;
/* residual count */
- if(flags & 0x0e){
+ if (flags & 0x0e) {
proto_tree_add_item(tree, hf_fcp_resid, tvb, offset, 4, ENC_BIG_ENDIAN);
}
- offset+=4;
+ offset += 4;
/* sense length */
if (flags & 0x2) {
- snslen=tvb_get_ntohl(tvb, offset);
+ snslen = tvb_get_ntohl(tvb, offset);
proto_tree_add_uint(tree, hf_fcp_snslen, tvb, offset, 4,
snslen);
}
- offset+=4;
+ offset += 4;
/* response length */
if (flags & 0x1) {
- rsplen=tvb_get_ntohl(tvb, offset);
+ rsplen = tvb_get_ntohl(tvb, offset);
proto_tree_add_uint(tree, hf_fcp_rsplen, tvb, offset, 4,
rsplen);
}
- offset+=4;
+ offset += 4;
/* rsp_info */
- if(rsplen){
+ if (rsplen) {
tvbuff_t *rspinfo_tvb;
- rspinfo_tvb=tvb_new_subset(tvb, offset, MIN(rsplen, tvb_length_remaining(tvb, offset)), rsplen);
+ rspinfo_tvb = tvb_new_subset(tvb, offset, MIN(rsplen, tvb_length_remaining(tvb, offset)), rsplen);
dissect_fcp_rspinfo(rspinfo_tvb, tree, 0);
- offset+=rsplen;
+ offset += rsplen;
}
/* sense info */
- if(snslen){
+ if (snslen) {
tvbuff_t *sns_tvb;
- sns_tvb=tvb_new_subset(tvb, offset, MIN(snslen, tvb_length_remaining(tvb, offset)), snslen);
- dissect_scsi_snsinfo (sns_tvb, pinfo, parent_tree, 0,
+ sns_tvb = tvb_new_subset(tvb, offset, MIN(snslen, tvb_length_remaining(tvb, offset)), snslen);
+ dissect_scsi_snsinfo(sns_tvb, pinfo, parent_tree, 0,
snslen,
fchdr->itlq, itl);
- offset+=snslen;
+ offset += snslen;
}
/* bidir read resid (only present for bidirectional responses) */
- if(flags&0x80){
- if(flags&0x60){
+ if (flags & 0x80) {
+ if (flags & 0x60) {
proto_tree_add_item(tree, hf_fcp_bidir_resid, tvb, offset, 4, ENC_BIG_ENDIAN);
}
- offset+=4;
+ offset += 4;
}
}
static void
dissect_fcp_xfer_rdy(tvbuff_t *tvb, proto_tree *tree)
{
- int offset = 0;
+ int offset = 0;
proto_item *hidden_item;
hidden_item = proto_tree_add_uint(tree, hf_fcp_type, tvb, offset, 0, 0);
@@ -650,15 +640,15 @@ dissect_fcp_els(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
dissect_fcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti=NULL;
- proto_tree *fcp_tree = NULL;
- fc_hdr *fchdr;
- guint8 r_ctl;
- fcp_conv_data_t *fcp_conv_data=NULL;
- itl_nexus_t *itl=NULL;
- gboolean els;
+ proto_item *ti = NULL;
+ proto_tree *fcp_tree = NULL;
+ fc_hdr *fchdr;
+ guint8 r_ctl;
+ fcp_conv_data_t *fcp_conv_data;
+ itl_nexus_t *itl = NULL;
+ gboolean els;
- fchdr=(fc_hdr *)pinfo->private_data;
+ fchdr = (fc_hdr *)pinfo->private_data;
/* Make entries in Protocol column and Info column on summary display */
col_set_str(pinfo->cinfo, COL_PROTOCOL, "FCP");
@@ -667,9 +657,9 @@ dissect_fcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
els = (r_ctl & 0xf0) == FC_RCTL_LINK_DATA;
r_ctl &= 0xF;
- if (check_col (pinfo->cinfo, COL_INFO)) {
- col_add_str (pinfo->cinfo, COL_INFO,
- val_to_str (r_ctl, els ? fcp_els_iu_val : fcp_iu_val,
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_add_str(pinfo->cinfo, COL_INFO,
+ val_to_str(r_ctl, els ? fcp_els_iu_val : fcp_iu_val,
"0x%x"));
}
@@ -683,38 +673,38 @@ dissect_fcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
- fcp_conv_data=conversation_get_proto_data(fchdr->conversation, proto_fcp);
- if(!fcp_conv_data){
- fcp_conv_data=se_alloc(sizeof(fcp_conv_data_t));
- fcp_conv_data->luns=se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "FCP Luns");
+ fcp_conv_data = conversation_get_proto_data(fchdr->conversation, proto_fcp);
+ if (!fcp_conv_data) {
+ fcp_conv_data = se_alloc(sizeof(fcp_conv_data_t));
+ fcp_conv_data->luns = se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "FCP Luns");
conversation_add_proto_data(fchdr->conversation, proto_fcp, fcp_conv_data);
}
- if((r_ctl!=FCP_IU_CMD) && (r_ctl!=FCP_IU_UNSOL_CTL)){
- itl=(itl_nexus_t *)se_tree_lookup32(fcp_conv_data->luns, fchdr->itlq->lun);
+ if ((r_ctl != FCP_IU_CMD) && (r_ctl != FCP_IU_UNSOL_CTL)) {
+ itl = (itl_nexus_t *)se_tree_lookup32(fcp_conv_data->luns, fchdr->itlq->lun);
}
/* put a request_in in all frames except the command frame */
- if((r_ctl!=FCP_IU_CMD) && (r_ctl!=FCP_IU_UNSOL_CTL) &&
- (fchdr->itlq->first_exchange_frame)){
+ if ((r_ctl != FCP_IU_CMD) && (r_ctl != FCP_IU_UNSOL_CTL) &&
+ (fchdr->itlq->first_exchange_frame)) {
proto_item *it;
- it=proto_tree_add_uint(fcp_tree, hf_fcp_singlelun, tvb, 0, 0, fchdr->itlq->lun);
+ it = proto_tree_add_uint(fcp_tree, hf_fcp_singlelun, tvb, 0, 0, fchdr->itlq->lun);
PROTO_ITEM_SET_GENERATED(it);
- it=proto_tree_add_uint(fcp_tree, hf_fcp_request_in, tvb, 0, 0, fchdr->itlq->first_exchange_frame);
+ it = proto_tree_add_uint(fcp_tree, hf_fcp_request_in, tvb, 0, 0, fchdr->itlq->first_exchange_frame);
PROTO_ITEM_SET_GENERATED(it);
/* only put the response time in the actual response frame */
- if(r_ctl==FCP_IU_RSP){
+ if (r_ctl == FCP_IU_RSP) {
nstime_t delta_ts;
nstime_delta(&delta_ts, &pinfo->fd->abs_ts, &fchdr->itlq->fc_time);
- it=proto_tree_add_time(ti, hf_fcp_time, tvb, 0, 0, &delta_ts);
+ it = proto_tree_add_time(ti, hf_fcp_time, tvb, 0, 0, &delta_ts);
PROTO_ITEM_SET_GENERATED(it);
}
}
/* put a response_in in all frames except the response frame */
- if((r_ctl!=FCP_IU_RSP) && (r_ctl!=FCP_IU_SOL_CTL) &&
- (fchdr->itlq->last_exchange_frame)){
+ if ((r_ctl != FCP_IU_RSP) && (r_ctl != FCP_IU_SOL_CTL) &&
+ (fchdr->itlq->last_exchange_frame)) {
proto_item *it;
- it=proto_tree_add_uint(fcp_tree, hf_fcp_response_in, tvb, 0, 0, fchdr->itlq->last_exchange_frame);
+ it = proto_tree_add_uint(fcp_tree, hf_fcp_response_in, tvb, 0, 0, fchdr->itlq->last_exchange_frame);
PROTO_ITEM_SET_GENERATED(it);
}
@@ -749,132 +739,233 @@ dissect_fcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Register the protocol with Wireshark */
-/* this format is require because a script is used to build the C function
- that calls all the protocol registration.
-*/
-
void
-proto_register_fcp (void)
+proto_register_fcp(void)
{
/* Setup list of header fields See Section 1.6.1 for details*/
static hf_register_info hf[] = {
{ &hf_fcp_type,
- {"Field to branch off to SCSI", "fcp.type", FT_UINT8, BASE_HEX, NULL,
- 0x0, NULL, HFILL}},
- {&hf_fcp_multilun,
- {"Multi-Level LUN", "fcp.multilun", FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL}},
+ {"Field to branch off to SCSI", "fcp.type",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
+ { &hf_fcp_multilun,
+ {"Multi-Level LUN", "fcp.multilun",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcp_singlelun,
- {"LUN", "fcp.lun", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}},
+ {"LUN", "fcp.lun",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcp_crn,
- {"Command Ref Num", "fcp.crn", FT_UINT8, BASE_DEC, NULL, 0x0, NULL,
- HFILL}},
+ {"Command Ref Num", "fcp.crn",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcp_taskattr,
- {"Task Attribute", "fcp.taskattr", FT_UINT8, BASE_HEX,
- VALS (fcp_task_attr_val), 0x7, NULL, HFILL}},
+ {"Task Attribute", "fcp.taskattr",
+ FT_UINT8, BASE_HEX, VALS(fcp_task_attr_val), 0x7,
+ NULL, HFILL}},
+
{ &hf_fcp_taskmgmt,
- {"Task Management Flags", "fcp.taskmgmt", FT_UINT8, BASE_HEX, NULL,
- 0x0, NULL, HFILL}},
+ {"Task Management Flags", "fcp.taskmgmt",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcp_addlcdblen,
- {"Additional CDB Length", "fcp.addlcdblen", FT_UINT8, BASE_DEC, NULL,
- 0xFC, NULL, HFILL}},
+ {"Additional CDB Length", "fcp.addlcdblen",
+ FT_UINT8, BASE_DEC, NULL, 0xFC,
+ NULL, HFILL}},
+
{ &hf_fcp_rddata,
- {"RDDATA", "fcp.rddata", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL}},
+ {"RDDATA", "fcp.rddata",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ NULL, HFILL}},
+
{ &hf_fcp_wrdata,
- {"WRDATA", "fcp.wrdata", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL}},
+ {"WRDATA", "fcp.wrdata",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ NULL, HFILL}},
+
{ &hf_fcp_dl,
- {"FCP_DL", "fcp.dl", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ {"FCP_DL", "fcp.dl",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcp_bidir_dl,
- {"FCP_BIDIRECTIONAL_READ_DL", "fcp.bidir_dl", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ {"FCP_BIDIRECTIONAL_READ_DL", "fcp.bidir_dl",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcp_data_ro,
- {"FCP_DATA_RO", "fcp.data_ro", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
- HFILL}},
+ {"FCP_DATA_RO", "fcp.data_ro",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcp_burstlen,
- {"Burst Length", "fcp.burstlen", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
- HFILL}},
+ {"Burst Length", "fcp.burstlen",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcp_retry_delay_timer,
- {"Retry Delay Timer", "fcp.rsp.retry_delay_timer", FT_UINT16, BASE_DEC, NULL, 0x0, NULL,
- HFILL}},
+ {"Retry Delay Timer", "fcp.rsp.retry_delay_timer",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcp_rspflags,
- {"FCP_RSP Flags", "fcp.rspflags", FT_UINT8, BASE_HEX, NULL, 0x0, NULL,
- HFILL}},
+ {"FCP_RSP Flags", "fcp.rspflags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcp_resid,
- {"FCP_RESID", "fcp.resid", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
- HFILL}},
+ {"FCP_RESID", "fcp.resid",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcp_bidir_resid,
- {"Bidirectional Read Resid", "fcp.bidir_resid", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
- HFILL}},
+ {"Bidirectional Read Resid", "fcp.bidir_resid",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcp_snslen,
- {"FCP_SNS_LEN", "fcp.snslen", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
- HFILL}},
+ {"FCP_SNS_LEN", "fcp.snslen",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcp_rsplen,
- {"FCP_RSP_LEN", "fcp.rsplen", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
- HFILL}},
+ {"FCP_RSP_LEN", "fcp.rsplen",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcp_rspcode,
- {"RSP_CODE", "fcp.rspcode", FT_UINT8, BASE_HEX,
- VALS (fcp_rsp_code_val), 0x0, NULL, HFILL}},
+ {"RSP_CODE", "fcp.rspcode",
+ FT_UINT8, BASE_HEX, VALS(fcp_rsp_code_val), 0x0,
+ NULL, HFILL}},
+
{ &hf_fcp_scsistatus,
- {"SCSI Status", "fcp.status", FT_UINT8, BASE_HEX,
- VALS (scsi_status_val), 0x0, NULL, HFILL}},
- { &hf_fcp_mgmt_flags_obsolete,
- { "Obsolete", "fcp.mgmt.flags.obsolete", FT_BOOLEAN, 8, TFS(&fcp_mgmt_flags_obsolete_tfs), 0x80, NULL, HFILL }},
- { &hf_fcp_mgmt_flags_clear_aca,
- { "Clear ACA", "fcp.mgmt.flags.clear_aca", FT_BOOLEAN, 8, TFS(&fcp_mgmt_flags_clear_aca_tfs), 0x40, NULL, HFILL }},
- { &hf_fcp_mgmt_flags_target_reset,
- { "Target Reset", "fcp.mgmt.flags.target_reset", FT_BOOLEAN, 8, TFS(&fcp_mgmt_flags_target_reset_tfs), 0x20, NULL, HFILL }},
- { &hf_fcp_mgmt_flags_lu_reset,
- { "LU Reset", "fcp.mgmt.flags.lu_reset", FT_BOOLEAN, 8, TFS(&fcp_mgmt_flags_lu_reset_tfs), 0x10, NULL, HFILL }},
- { &hf_fcp_mgmt_flags_rsvd,
- { "Rsvd", "fcp.mgmt.flags.rsvd", FT_BOOLEAN, 8, TFS(&fcp_mgmt_flags_rsvd_tfs), 0x08, NULL, HFILL }},
- { &hf_fcp_mgmt_flags_clear_task_set,
- { "Clear Task Set", "fcp.mgmt.flags.clear_task_set", FT_BOOLEAN, 8, TFS(&fcp_mgmt_flags_clear_task_set_tfs), 0x04, NULL, HFILL }},
- { &hf_fcp_mgmt_flags_abort_task_set,
- { "Abort Task Set", "fcp.mgmt.flags.abort_task_set", FT_BOOLEAN, 8, TFS(&fcp_mgmt_flags_abort_task_set_tfs), 0x02, NULL, HFILL }},
- { &hf_fcp_rsp_flags_bidi,
- { "Bidi Rsp", "fcp.rsp.flags.bidi", FT_BOOLEAN, 8, TFS(&fcp_rsp_flags_bidi_tfs), 0x80, NULL, HFILL }},
- { &hf_fcp_rsp_flags_bidi_rru,
- { "Bidi Read Resid Under", "fcp.rsp.flags.bidi_rru", FT_BOOLEAN, 8, TFS(&fcp_rsp_flags_bidi_rru_tfs), 0x40, NULL, HFILL }},
- { &hf_fcp_rsp_flags_bidi_rro,
- { "Bidi Read Resid Over", "fcp.rsp.flags.bidi_rro", FT_BOOLEAN, 8, TFS(&fcp_rsp_flags_bidi_rro_tfs), 0x20, NULL, HFILL }},
- { &hf_fcp_rsp_flags_conf_req,
- { "Conf Req", "fcp.rsp.flags.conf_req", FT_BOOLEAN, 8, TFS(&fcp_rsp_flags_conf_req_tfs), 0x10, NULL, HFILL }},
- { &hf_fcp_rsp_flags_resid_under,
- { "Resid Under", "fcp.rsp.flags.resid_under", FT_BOOLEAN, 8, TFS(&fcp_rsp_flags_resid_under_tfs), 0x08, NULL, HFILL }},
- { &hf_fcp_rsp_flags_resid_over,
- { "Resid Over", "fcp.rsp.flags.resid_over", FT_BOOLEAN, 8, TFS(&fcp_rsp_flags_resid_over_tfs), 0x04, NULL, HFILL }},
- { &hf_fcp_rsp_flags_sns_vld,
- { "SNS Vld", "fcp.rsp.flags.sns_vld", FT_BOOLEAN, 8, TFS(&fcp_rsp_flags_sns_vld_tfs), 0x02, NULL, HFILL }},
- { &hf_fcp_rsp_flags_res_vld,
- { "RES Vld", "fcp.rsp.flags.res_vld", FT_BOOLEAN, 8, TFS(&fcp_rsp_flags_res_vld_tfs), 0x01, NULL, HFILL }},
+ {"SCSI Status", "fcp.status",
+ FT_UINT8, BASE_HEX, VALS(scsi_status_val), 0x0,
+ NULL, HFILL}},
+
+ { &hf_fcp_mgmt_flags_obsolete,
+ { "Obsolete", "fcp.mgmt.flags.obsolete",
+ FT_BOOLEAN, 8, TFS(&fcp_mgmt_flags_obsolete_tfs), 0x80,
+ NULL, HFILL }},
+
+ { &hf_fcp_mgmt_flags_clear_aca,
+ { "Clear ACA", "fcp.mgmt.flags.clear_aca",
+ FT_BOOLEAN, 8, TFS(&fcp_mgmt_flags_clear_aca_tfs), 0x40,
+ NULL, HFILL }},
+
+ { &hf_fcp_mgmt_flags_target_reset,
+ { "Target Reset", "fcp.mgmt.flags.target_reset",
+ FT_BOOLEAN, 8, TFS(&fcp_mgmt_flags_target_reset_tfs), 0x20,
+ NULL, HFILL }},
+
+ { &hf_fcp_mgmt_flags_lu_reset,
+ { "LU Reset", "fcp.mgmt.flags.lu_reset",
+ FT_BOOLEAN, 8, TFS(&fcp_mgmt_flags_lu_reset_tfs), 0x10,
+ NULL, HFILL }},
+
+ { &hf_fcp_mgmt_flags_rsvd,
+ { "Rsvd", "fcp.mgmt.flags.rsvd",
+ FT_BOOLEAN, 8, TFS(&fcp_mgmt_flags_rsvd_tfs), 0x08,
+ NULL, HFILL }},
+
+ { &hf_fcp_mgmt_flags_clear_task_set,
+ { "Clear Task Set", "fcp.mgmt.flags.clear_task_set",
+ FT_BOOLEAN, 8, TFS(&fcp_mgmt_flags_clear_task_set_tfs), 0x04,
+ NULL, HFILL }},
+
+ { &hf_fcp_mgmt_flags_abort_task_set,
+ { "Abort Task Set", "fcp.mgmt.flags.abort_task_set",
+ FT_BOOLEAN, 8, TFS(&fcp_mgmt_flags_abort_task_set_tfs), 0x02,
+ NULL, HFILL }},
+
+ { &hf_fcp_rsp_flags_bidi,
+ { "Bidi Rsp", "fcp.rsp.flags.bidi",
+ FT_BOOLEAN, 8, TFS(&fcp_rsp_flags_bidi_tfs), 0x80,
+ NULL, HFILL }},
+
+ { &hf_fcp_rsp_flags_bidi_rru,
+ { "Bidi Read Resid Under", "fcp.rsp.flags.bidi_rru",
+ FT_BOOLEAN, 8, TFS(&fcp_rsp_flags_bidi_rru_tfs), 0x40,
+ NULL, HFILL }},
+
+ { &hf_fcp_rsp_flags_bidi_rro,
+ { "Bidi Read Resid Over", "fcp.rsp.flags.bidi_rro",
+ FT_BOOLEAN, 8, TFS(&fcp_rsp_flags_bidi_rro_tfs), 0x20,
+ NULL, HFILL }},
+
+ { &hf_fcp_rsp_flags_conf_req,
+ { "Conf Req", "fcp.rsp.flags.conf_req",
+ FT_BOOLEAN, 8, TFS(&fcp_rsp_flags_conf_req_tfs), 0x10,
+ NULL, HFILL }},
+
+ { &hf_fcp_rsp_flags_resid_under,
+ { "Resid Under", "fcp.rsp.flags.resid_under",
+ FT_BOOLEAN, 8, TFS(&fcp_rsp_flags_resid_under_tfs), 0x08,
+ NULL, HFILL }},
+
+ { &hf_fcp_rsp_flags_resid_over,
+ { "Resid Over", "fcp.rsp.flags.resid_over",
+ FT_BOOLEAN, 8, TFS(&fcp_rsp_flags_resid_over_tfs), 0x04,
+ NULL, HFILL }},
+
+ { &hf_fcp_rsp_flags_sns_vld,
+ { "SNS Vld", "fcp.rsp.flags.sns_vld",
+ FT_BOOLEAN, 8, TFS(&fcp_rsp_flags_sns_vld_tfs), 0x02,
+ NULL, HFILL }},
+
+ { &hf_fcp_rsp_flags_res_vld,
+ { "RES Vld", "fcp.rsp.flags.res_vld",
+ FT_BOOLEAN, 8, TFS(&fcp_rsp_flags_res_vld_tfs), 0x01,
+ NULL, HFILL }},
+
{ &hf_fcp_request_in,
- { "Request In", "fcp.request_in", FT_FRAMENUM, BASE_NONE, NULL,
- 0, "The frame number for the request", HFILL }},
+ { "Request In", "fcp.request_in",
+ FT_FRAMENUM, BASE_NONE, NULL, 0,
+ "The frame number for the request", HFILL }},
+
{ &hf_fcp_response_in,
- { "Response In", "fcp.response_in", FT_FRAMENUM, BASE_NONE, NULL,
- 0, "The frame number of the response", HFILL }},
+ { "Response In", "fcp.response_in",
+ FT_FRAMENUM, BASE_NONE, NULL, 0,
+ "The frame number of the response", HFILL }},
+
{ &hf_fcp_time,
- { "Time from FCP_CMND", "fcp.time", FT_RELATIVE_TIME, BASE_NONE, NULL,
- 0, "Time since the FCP_CMND frame", HFILL }},
+ { "Time from FCP_CMND", "fcp.time",
+ FT_RELATIVE_TIME, BASE_NONE, NULL, 0,
+ "Time since the FCP_CMND frame", HFILL }},
+
{ &hf_fcp_srr_op,
- {"Opcode", "fcp.els.op", FT_UINT8, BASE_HEX, NULL, 0x0, NULL,
- HFILL}},
+ {"Opcode", "fcp.els.op",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcp_srr_ox_id,
- {"OX_ID", "fcp.els.srr.ox_id", FT_UINT16, BASE_HEX, NULL, 0x0, NULL,
- HFILL}},
+ {"OX_ID", "fcp.els.srr.ox_id",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcp_srr_rx_id,
- {"RX_ID", "fcp.els.srr.rx_id", FT_UINT16, BASE_HEX, NULL, 0x0, NULL,
- HFILL}},
+ {"RX_ID", "fcp.els.srr.rx_id",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_fcp_srr_r_ctl,
- {"R_CTL", "fcp.els.srr.r_ctl", FT_UINT8, BASE_HEX, NULL, 0x0, NULL,
- HFILL}},
+ {"R_CTL", "fcp.els.srr.r_ctl",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
};
/* Setup protocol subtree array */
static gint *ett[] = {
&ett_fcp,
- &ett_fcp_taskmgmt,
- &ett_fcp_rsp_flags,
+ &ett_fcp_taskmgmt,
+ &ett_fcp_rsp_flags,
};
/* Register the protocol name and description */
@@ -884,21 +975,17 @@ proto_register_fcp (void)
/* Required function calls to register the header fields and subtrees used */
proto_register_field_array(proto_fcp, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
- fcp_dissector = register_dissector_table ("fcp.type", "FCP Type", FT_UINT8,
+ fcp_dissector = register_dissector_table("fcp.type", "FCP Type", FT_UINT8,
BASE_HEX);
}
-/* If this dissector uses sub-dissector registration add a registration routine.
- This format is required because a script is used to find these routines and
- create the code that calls these routines.
-*/
void
-proto_reg_handoff_fcp (void)
+proto_reg_handoff_fcp(void)
{
dissector_handle_t fcp_handle;
- fcp_handle = create_dissector_handle (dissect_fcp, proto_fcp);
+ fcp_handle = create_dissector_handle(dissect_fcp, proto_fcp);
dissector_add_uint("fc.ftype", FC_FTYPE_SCSI, fcp_handle);
- data_handle = find_dissector ("data");
+ data_handle = find_dissector("data");
}
diff --git a/epan/dissectors/packet-fcsb3.c b/epan/dissectors/packet-fcsb3.c
index ef8130db8a..f6c92bf764 100644
--- a/epan/dissectors/packet-fcsb3.c
+++ b/epan/dissectors/packet-fcsb3.c
@@ -9,12 +9,6 @@
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
- * Copied from WHATEVER_FILE_YOU_USED (where "WHATEVER_FILE_YOU_USED"
- * is a dissector file; if you just copied this from README.developer,
- * don't bother with the "Copied from" - you don't even need to put
- * in a "Copied from" if you copied an existing dissector, especially
- * if the bulk of the code in the new dissector is your code)
- *
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
@@ -34,16 +28,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
@@ -54,33 +38,33 @@
#include "packet-fcsb3.h"
/* Initialize the protocol and registered fields */
-static int proto_fc_sbccs = -1;
-static int hf_sbccs_chid = -1;
-static int hf_sbccs_cuid = -1;
-static int hf_sbccs_devaddr = -1;
-static int hf_sbccs_ccw = -1;
-static int hf_sbccs_token = -1;
-static int hf_sbccs_dib_iucnt = -1;
-static int hf_sbccs_dib_datacnt = -1;
-static int hf_sbccs_dib_ccw_cmd = -1;
-static int hf_sbccs_dib_ccw_cnt = -1;
-static int hf_sbccs_dib_residualcnt = -1;
-static int hf_sbccs_dib_qtuf = -1;
-static int hf_sbccs_dib_qtu = -1;
-static int hf_sbccs_dib_dtuf = -1;
-static int hf_sbccs_dib_dtu = -1;
-static int hf_sbccs_dib_ctlfn = -1;
-static int hf_sbccs_lrc = -1;
-static int hf_sbccs_dib_iupacing = -1;
-static int hf_sbccs_dev_xcp_code = -1;
-static int hf_sbccs_prg_pth_errcode = -1;
-static int hf_sbccs_prg_rsp_errcode = -1;
-static int hf_sbccs_dib_ctccntr = -1;
-static int hf_sbccs_dib_lprcode = -1;
+static int proto_fc_sbccs = -1;
+static int hf_sbccs_chid = -1;
+static int hf_sbccs_cuid = -1;
+static int hf_sbccs_devaddr = -1;
+static int hf_sbccs_ccw = -1;
+static int hf_sbccs_token = -1;
+static int hf_sbccs_dib_iucnt = -1;
+static int hf_sbccs_dib_datacnt = -1;
+static int hf_sbccs_dib_ccw_cmd = -1;
+static int hf_sbccs_dib_ccw_cnt = -1;
+static int hf_sbccs_dib_residualcnt = -1;
+static int hf_sbccs_dib_qtuf = -1;
+static int hf_sbccs_dib_qtu = -1;
+static int hf_sbccs_dib_dtuf = -1;
+static int hf_sbccs_dib_dtu = -1;
+static int hf_sbccs_dib_ctlfn = -1;
+static int hf_sbccs_lrc = -1;
+static int hf_sbccs_dib_iupacing = -1;
+static int hf_sbccs_dev_xcp_code = -1;
+static int hf_sbccs_prg_pth_errcode = -1;
+static int hf_sbccs_prg_rsp_errcode = -1;
+static int hf_sbccs_dib_ctccntr = -1;
+static int hf_sbccs_dib_lprcode = -1;
static int hf_sbccs_dib_tin_imgid_cnt = -1;
-static int hf_sbccs_dib_lrjcode = -1;
-static int hf_sbccs_dib_ioprio = -1;
-static int hf_sbccs_dib_linkctlfn = -1;
+static int hf_sbccs_dib_lrjcode = -1;
+static int hf_sbccs_dib_ioprio = -1;
+static int hf_sbccs_dib_linkctlfn = -1;
static int hf_sbccs_iui = -1;
static int hf_sbccs_iui_as = -1;
static int hf_sbccs_iui_es = -1;
@@ -155,16 +139,16 @@ static const value_string fc_sbccs_iu_val[] = {
};
static const value_string fc_sbccs_dib_cmd_val[] = {
- {0, "Reserved"},
- {1, "Write"},
- {2, "Read"},
- {3, "Control"},
- {4, "Sense"},
- {5, "Write (Modifier)"},
- {6, "Read (Modifier)"},
- {7, "Control (Modifier)"},
- {8, "Reserved"},
- {9, "Write (Modifier)"},
+ { 0, "Reserved"},
+ { 1, "Write"},
+ { 2, "Read"},
+ { 3, "Control"},
+ { 4, "Sense"},
+ { 5, "Write (Modifier)"},
+ { 6, "Read (Modifier)"},
+ { 7, "Control (Modifier)"},
+ { 8, "Reserved"},
+ { 9, "Write (Modifier)"},
{10, "Read (Modifier)"},
{11, "Control (Modifier)"},
{12, "Read Backward"},
@@ -196,16 +180,16 @@ static const value_string fc_sbccs_dib_dev_xcpcode_val[] = {
};
static const value_string fc_sbccs_dib_purge_path_err_val[] = {
- {0, "Error Code Xfer Not Supported"},
- {1, "SB-3 Protocol Timeout"},
- {2, "SB-3 Link Failure"},
- {3, "Reserved"},
- {4, "SB-3 Offline Condition"},
- {5, "FC-PH Link Failure"},
- {6, "SB-3 Length Error"},
- {7, "LRC Error"},
- {8, "SB-3 CRC Error"},
- {9, "IU Count Error"},
+ { 0, "Error Code Xfer Not Supported"},
+ { 1, "SB-3 Protocol Timeout"},
+ { 2, "SB-3 Link Failure"},
+ { 3, "Reserved"},
+ { 4, "SB-3 Offline Condition"},
+ { 5, "FC-PH Link Failure"},
+ { 6, "SB-3 Length Error"},
+ { 7, "LRC Error"},
+ { 8, "SB-3 CRC Error"},
+ { 9, "IU Count Error"},
{10, "SB-3 Link Level Protocol Error"},
{11, "SB-3 Device Level Protocol Error"},
{12, "Receive ABTS"},
@@ -216,16 +200,16 @@ static const value_string fc_sbccs_dib_purge_path_err_val[] = {
};
static const value_string fc_sbccs_dib_purge_path_rsp_err_val[] = {
- {0, "No Errors"},
- {1, "SB-3 Protocol Timeout"},
- {2, "SB-3 Link Failure"},
- {3, "Logical Path Timeout Error"},
- {4, "SB-3 Offline Condition"},
- {5, "FC-PH Link Failure"},
- {6, "SB-3 Length Error"},
- {7, "LRC Error"},
- {8, "SB-3 CRC Error"},
- {9, "IU Count Error"},
+ { 0, "No Errors"},
+ { 1, "SB-3 Protocol Timeout"},
+ { 2, "SB-3 Link Failure"},
+ { 3, "Logical Path Timeout Error"},
+ { 4, "SB-3 Offline Condition"},
+ { 5, "FC-PH Link Failure"},
+ { 6, "SB-3 Length Error"},
+ { 7, "LRC Error"},
+ { 8, "SB-3 CRC Error"},
+ { 9, "IU Count Error"},
{10, "SB-3 Link Level Protocol Error"},
{11, "SB-3 Device Level Protocol Error"},
{12, "Receive ABTS"},
@@ -237,14 +221,14 @@ static const value_string fc_sbccs_dib_purge_path_rsp_err_val[] = {
};
static const value_string fc_sbccs_dib_link_ctl_fn_val[] = {
- {FC_SBCCS_LINK_CTL_FN_ELP, "ELP"},
- {FC_SBCCS_LINK_CTL_FN_RLP, "RLP"},
- {FC_SBCCS_LINK_CTL_FN_TIN, "TIN"},
- {FC_SBCCS_LINK_CTL_FN_LPE, "LPE"},
- {FC_SBCCS_LINK_CTL_FN_LPR, "LPR"},
- {FC_SBCCS_LINK_CTL_FN_TIR, "TIR"},
- {FC_SBCCS_LINK_CTL_FN_LRJ, "LRJ"},
- {FC_SBCCS_LINK_CTL_FN_LBY, "LBY"},
+ {FC_SBCCS_LINK_CTL_FN_ELP, "ELP"},
+ {FC_SBCCS_LINK_CTL_FN_RLP, "RLP"},
+ {FC_SBCCS_LINK_CTL_FN_TIN, "TIN"},
+ {FC_SBCCS_LINK_CTL_FN_LPE, "LPE"},
+ {FC_SBCCS_LINK_CTL_FN_LPR, "LPR"},
+ {FC_SBCCS_LINK_CTL_FN_TIR, "TIR"},
+ {FC_SBCCS_LINK_CTL_FN_LRJ, "LRJ"},
+ {FC_SBCCS_LINK_CTL_FN_LBY, "LBY"},
{FC_SBCCS_LINK_CTL_FN_LACK, "LACK"},
{0, NULL},
};
@@ -265,475 +249,475 @@ static const value_string fc_sbccs_dib_lrj_errcode_val[] = {
};
static const true_false_string tfs_sbccs_iui_as = {
- "AS is set",
- "as is NOT set"
+ "AS is set",
+ "as is NOT set"
};
static const true_false_string tfs_sbccs_iui_es = {
- "ES is set",
- "es is NOT set"
+ "ES is set",
+ "es is NOT set"
};
static void
dissect_iui_flags (proto_tree *parent_tree, tvbuff_t *tvb, int offset, guint16 flags)
{
- proto_item *item=NULL;
- proto_tree *tree=NULL;
-
- if(parent_tree){
- item=proto_tree_add_uint(parent_tree, hf_sbccs_iui,
- tvb, offset, 1, flags);
- tree=proto_item_add_subtree(item, ett_sbccs_iui);
- }
-
- proto_tree_add_boolean(tree, hf_sbccs_iui_as, tvb, offset, 1, flags);
- if (flags&0x10){
- proto_item_append_text(item, " AS");
- }
- flags&=(~( 0x10 ));
-
- proto_tree_add_boolean(tree, hf_sbccs_iui_es, tvb, offset, 1, flags);
- if (flags&0x08){
- proto_item_append_text(item, " ES");
- }
- flags&=(~( 0x08 ));
-
- proto_tree_add_item (tree, hf_sbccs_iui_val, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_item_append_text(item, "%s", val_to_str (flags & 0x7, fc_sbccs_iu_val, "0x%x"));
- flags&=(~( 0x07 ));
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+
+ if (parent_tree) {
+ item=proto_tree_add_uint(parent_tree, hf_sbccs_iui,
+ tvb, offset, 1, flags);
+ tree=proto_item_add_subtree(item, ett_sbccs_iui);
+ }
+
+ proto_tree_add_boolean(tree, hf_sbccs_iui_as, tvb, offset, 1, flags);
+ if (flags & 0x10) {
+ proto_item_append_text(item, " AS");
+ }
+ flags &= (~( 0x10 ));
+
+ proto_tree_add_boolean(tree, hf_sbccs_iui_es, tvb, offset, 1, flags);
+ if (flags & 0x08) {
+ proto_item_append_text(item, " ES");
+ }
+ flags &= (~( 0x08 ));
+
+ proto_tree_add_item (tree, hf_sbccs_iui_val, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_item_append_text(item, "%s", val_to_str (flags & 0x7, fc_sbccs_iu_val, "0x%x"));
+ flags &= (~( 0x07 ));
}
static const true_false_string tfs_sbccs_linkctlinfo_ctcconn = {
- "CTC Conn supported",
- "Ctc conn NOT supported"
+ "CTC Conn supported",
+ "Ctc conn NOT supported"
};
static const true_false_string tfs_sbccs_linkctlinfo_ecrcg = {
- "Enhanced CRC Generation supported",
- "Enhanced crc generation NOT supported"
+ "Enhanced CRC Generation supported",
+ "Enhanced crc generation NOT supported"
};
static void
dissect_linkctlinfo (proto_tree *parent_tree, tvbuff_t *tvb, int offset, guint16 flags)
{
- proto_item *item=NULL;
- proto_tree *tree=NULL;
-
- if(parent_tree){
- item=proto_tree_add_uint(parent_tree, hf_sbccs_dib_linkctlinfo,
- tvb, offset, 2, flags);
- tree=proto_item_add_subtree(item, ett_sbccs_dib_linkctlinfo);
- }
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_linkctlinfo_ctcconn, tvb, offset, 2, flags);
- if (flags&0x80){
- proto_item_append_text(item, " CTC Conn");
- }
- flags&=(~( 0x80 ));
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_linkctlinfo_ecrcg, tvb, offset, 2, flags);
- if (flags&0x01){
- proto_item_append_text(item, " Enhanced CRC Gen");
- }
- flags&=(~( 0x01 ));
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+
+ if (parent_tree) {
+ item=proto_tree_add_uint(parent_tree, hf_sbccs_dib_linkctlinfo,
+ tvb, offset, 2, flags);
+ tree=proto_item_add_subtree(item, ett_sbccs_dib_linkctlinfo);
+ }
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_linkctlinfo_ctcconn, tvb, offset, 2, flags);
+ if (flags & 0x80) {
+ proto_item_append_text(item, " CTC Conn");
+ }
+ flags &= (~( 0x80 ));
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_linkctlinfo_ecrcg, tvb, offset, 2, flags);
+ if (flags & 0x01) {
+ proto_item_append_text(item, " Enhanced CRC Gen");
+ }
+ flags &= (~( 0x01 ));
}
static const true_false_string tfs_sbccs_dhflags_end = {
- "END bit is set",
- "end bit is NOT set"
+ "END bit is set",
+ "end bit is NOT set"
};
static const true_false_string tfs_sbccs_dhflags_chaining = {
- "CHAINING bit is set",
- "chaining bit is NOT set"
+ "CHAINING bit is set",
+ "chaining bit is NOT set"
};
static const true_false_string tfs_sbccs_dhflags_earlyend = {
- "EARLYEND bit is set",
- "earlyend bit is NOT set"
+ "EARLYEND bit is set",
+ "earlyend bit is NOT set"
};
static const true_false_string tfs_sbccs_dhflags_nocrc = {
- "NOCRC bit is set",
- "nocrc bit is NOT set"
+ "NOCRC bit is set",
+ "nocrc bit is NOT set"
};
static void
dissect_dh_flags (proto_tree *parent_tree, tvbuff_t *tvb, int offset, guint16 flags)
{
- proto_item *item=NULL;
- proto_tree *tree=NULL;
-
- if(parent_tree){
- item=proto_tree_add_uint(parent_tree, hf_sbccs_dhflags,
- tvb, offset, 1, flags);
- tree=proto_item_add_subtree(item, ett_sbccs_dhflags);
- }
-
- proto_tree_add_boolean(tree, hf_sbccs_dhflags_end, tvb, offset, 1, flags);
- if (flags&0x80){
- proto_item_append_text(item, " End");
- }
- flags&=(~( 0x80 ));
-
- proto_tree_add_boolean(tree, hf_sbccs_dhflags_chaining, tvb, offset, 1, flags);
- if (flags&0x10){
- proto_item_append_text(item, " Chaining");
- }
- flags&=(~( 0x10 ));
-
- proto_tree_add_boolean(tree, hf_sbccs_dhflags_earlyend, tvb, offset, 1, flags);
- if (flags&0x08){
- proto_item_append_text(item, " Early End");
- }
- flags&=(~( 0x08 ));
-
- proto_tree_add_boolean(tree, hf_sbccs_dhflags_nocrc, tvb, offset, 1, flags);
- if (flags&0x04){
- proto_item_append_text(item, " No CRC");
- }
- flags&=(~( 0x04 ));
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+
+ if (parent_tree) {
+ item=proto_tree_add_uint(parent_tree, hf_sbccs_dhflags,
+ tvb, offset, 1, flags);
+ tree=proto_item_add_subtree(item, ett_sbccs_dhflags);
+ }
+
+ proto_tree_add_boolean(tree, hf_sbccs_dhflags_end, tvb, offset, 1, flags);
+ if (flags & 0x80) {
+ proto_item_append_text(item, " End");
+ }
+ flags &= (~( 0x80 ));
+
+ proto_tree_add_boolean(tree, hf_sbccs_dhflags_chaining, tvb, offset, 1, flags);
+ if (flags & 0x10) {
+ proto_item_append_text(item, " Chaining");
+ }
+ flags &= (~( 0x10 ));
+
+ proto_tree_add_boolean(tree, hf_sbccs_dhflags_earlyend, tvb, offset, 1, flags);
+ if (flags & 0x08) {
+ proto_item_append_text(item, " Early End");
+ }
+ flags &= (~( 0x08 ));
+
+ proto_tree_add_boolean(tree, hf_sbccs_dhflags_nocrc, tvb, offset, 1, flags);
+ if (flags & 0x04) {
+ proto_item_append_text(item, " No CRC");
+ }
+ flags &= (~( 0x04 ));
}
static const true_false_string tfs_sbccs_ccwflags_cd = {
- "CD is set",
- "cd is NOT set"
+ "CD is set",
+ "cd is NOT set"
};
static const true_false_string tfs_sbccs_ccwflags_cc = {
- "CC is set",
- "cc is NOT set"
+ "CC is set",
+ "cc is NOT set"
};
static const true_false_string tfs_sbccs_ccwflags_sli = {
- "SLI is set",
- "sli is NOT set"
+ "SLI is set",
+ "sli is NOT set"
};
static const true_false_string tfs_sbccs_ccwflags_crr = {
- "CRR is set",
- "crr is NOT set"
+ "CRR is set",
+ "crr is NOT set"
};
static void
dissect_ccw_flags (proto_tree *parent_tree, tvbuff_t *tvb, int offset, guint8 flags)
{
- proto_item *item=NULL;
- proto_tree *tree=NULL;
-
- if(parent_tree){
- item=proto_tree_add_uint(parent_tree, hf_sbccs_dib_ccw_flags,
- tvb, offset, 1, flags);
- tree=proto_item_add_subtree(item, ett_sbccs_dib_ccw_flags);
- }
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_ccw_flags_cd, tvb, offset, 1, flags);
- if (flags&0x80){
- proto_item_append_text(item, " CD");
- }
- flags&=(~( 0x80 ));
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_ccw_flags_cc, tvb, offset, 1, flags);
- if (flags&0x40){
- proto_item_append_text(item, " CC");
- }
- flags&=(~( 0x40 ));
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_ccw_flags_sli, tvb, offset, 1, flags);
- if (flags&0x20){
- proto_item_append_text(item, " SLI");
- }
- flags&=(~( 0x20 ));
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_ccw_flags_crr, tvb, offset, 1, flags);
- if (flags&0x08){
- proto_item_append_text(item, " CRR");
- }
- flags&=(~( 0x08 ));
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+
+ if (parent_tree) {
+ item=proto_tree_add_uint(parent_tree, hf_sbccs_dib_ccw_flags,
+ tvb, offset, 1, flags);
+ tree=proto_item_add_subtree(item, ett_sbccs_dib_ccw_flags);
+ }
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_ccw_flags_cd, tvb, offset, 1, flags);
+ if (flags & 0x80) {
+ proto_item_append_text(item, " CD");
+ }
+ flags &= (~( 0x80 ));
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_ccw_flags_cc, tvb, offset, 1, flags);
+ if (flags & 0x40) {
+ proto_item_append_text(item, " CC");
+ }
+ flags &= (~( 0x40 ));
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_ccw_flags_sli, tvb, offset, 1, flags);
+ if (flags & 0x20) {
+ proto_item_append_text(item, " SLI");
+ }
+ flags &= (~( 0x20 ));
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_ccw_flags_crr, tvb, offset, 1, flags);
+ if (flags & 0x08) {
+ proto_item_append_text(item, " CRR");
+ }
+ flags &= (~( 0x08 ));
}
static const true_false_string tfs_sbccs_cmdflags_du = {
- "DU is set",
- "du is NOT set"
+ "DU is set",
+ "du is NOT set"
};
static const true_false_string tfs_sbccs_cmdflags_coc = {
- "COC is set",
- "coc is NOT set"
+ "COC is set",
+ "coc is NOT set"
};
static const true_false_string tfs_sbccs_cmdflags_syr = {
- "SYR is set",
- "syr is NOT set"
+ "SYR is set",
+ "syr is NOT set"
};
static const true_false_string tfs_sbccs_cmdflags_rex = {
- "REX is set",
- "rex is NOT set"
+ "REX is set",
+ "rex is NOT set"
};
static const true_false_string tfs_sbccs_cmdflags_sss = {
- "SSS is set",
- "sss is NOT set"
+ "SSS is set",
+ "sss is NOT set"
};
static void
dissect_cmd_flags (proto_tree *parent_tree, tvbuff_t *tvb, int offset, guint8 flags)
{
- proto_item *item=NULL;
- proto_tree *tree=NULL;
-
- if(parent_tree){
- item=proto_tree_add_uint(parent_tree, hf_sbccs_dib_cmdflags,
- tvb, offset, 1, flags);
- tree=proto_item_add_subtree(item, ett_sbccs_dib_cmdflags);
- }
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_cmdflags_du, tvb, offset, 1, flags);
- if (flags&0x10){
- proto_item_append_text(item, " DU");
- }
- flags&=(~( 0x10 ));
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_cmdflags_coc, tvb, offset, 1, flags);
- if (flags&0x08){
- proto_item_append_text(item, " COC");
- }
- flags&=(~( 0x08 ));
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_cmdflags_syr, tvb, offset, 1, flags);
- if (flags&0x04){
- proto_item_append_text(item, " SYR");
- }
- flags&=(~( 0x04 ));
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_cmdflags_rex, tvb, offset, 1, flags);
- if (flags&0x02){
- proto_item_append_text(item, " REX");
- }
- flags&=(~( 0x02 ));
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_cmdflags_sss, tvb, offset, 1, flags);
- if (flags&0x01){
- proto_item_append_text(item, " SSS");
- }
- flags&=(~( 0x01 ));
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+
+ if (parent_tree) {
+ item=proto_tree_add_uint(parent_tree, hf_sbccs_dib_cmdflags,
+ tvb, offset, 1, flags);
+ tree=proto_item_add_subtree(item, ett_sbccs_dib_cmdflags);
+ }
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_cmdflags_du, tvb, offset, 1, flags);
+ if (flags & 0x10) {
+ proto_item_append_text(item, " DU");
+ }
+ flags &= (~( 0x10 ));
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_cmdflags_coc, tvb, offset, 1, flags);
+ if (flags & 0x08) {
+ proto_item_append_text(item, " COC");
+ }
+ flags &= (~( 0x08 ));
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_cmdflags_syr, tvb, offset, 1, flags);
+ if (flags & 0x04) {
+ proto_item_append_text(item, " SYR");
+ }
+ flags &= (~( 0x04 ));
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_cmdflags_rex, tvb, offset, 1, flags);
+ if (flags & 0x02) {
+ proto_item_append_text(item, " REX");
+ }
+ flags &= (~( 0x02 ));
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_cmdflags_sss, tvb, offset, 1, flags);
+ if (flags & 0x01) {
+ proto_item_append_text(item, " SSS");
+ }
+ flags &= (~( 0x01 ));
}
static const value_string status_ffc_val[] = {
- { 0, "" },
- { 1, "FFC:Queuing Information Valid" },
- { 2, "FFC:Resetting Event" },
- { 0, NULL }
+ { 0, "" },
+ { 1, "FFC:Queuing Information Valid" },
+ { 2, "FFC:Resetting Event" },
+ { 0, NULL }
};
static const true_false_string tfs_sbccs_statusflags_ci = {
- "CI is set",
- "ci is NOT set"
+ "CI is set",
+ "ci is NOT set"
};
static const true_false_string tfs_sbccs_statusflags_cr = {
- "CR is set",
- "cr is NOT set"
+ "CR is set",
+ "cr is NOT set"
};
static const true_false_string tfs_sbccs_statusflags_lri = {
- "LRI is set",
- "lri is NOT set"
+ "LRI is set",
+ "lri is NOT set"
};
static const true_false_string tfs_sbccs_statusflags_rv = {
- "RV is set",
- "rv is NOT set"
+ "RV is set",
+ "rv is NOT set"
};
static void
dissect_status_flags (proto_tree *parent_tree, tvbuff_t *tvb, int offset, guint8 flags)
{
- proto_item *item=NULL;
- proto_tree *tree=NULL;
-
- if(parent_tree){
- item=proto_tree_add_uint(parent_tree, hf_sbccs_dib_statusflags,
- tvb, offset, 1, flags);
- tree=proto_item_add_subtree(item, ett_sbccs_dib_statusflags);
- }
-
-
- proto_tree_add_item (tree, hf_sbccs_dib_statusflags_ffc, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_item_append_text(item, "%s", val_to_str ((flags>>5)&0x07, status_ffc_val, "Reserved:0x%x"));
- flags&=(~( 0xE0 ));
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_statusflags_ci, tvb, offset, 1, flags);
- if (flags&0x10){
- proto_item_append_text(item, " CI");
- }
- flags&=(~( 0x10 ));
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_statusflags_cr, tvb, offset, 1, flags);
- if (flags&0x04){
- proto_item_append_text(item, " CR");
- }
- flags&=(~( 0x04 ));
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_statusflags_lri, tvb, offset, 1, flags);
- if (flags&0x02){
- proto_item_append_text(item, " LRI");
- }
- flags&=(~( 0x02 ));
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_statusflags_rv, tvb, offset, 1, flags);
- if (flags&0x01){
- proto_item_append_text(item, " RV");
- }
- flags&=(~( 0x01 ));
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+
+ if (parent_tree) {
+ item=proto_tree_add_uint(parent_tree, hf_sbccs_dib_statusflags,
+ tvb, offset, 1, flags);
+ tree=proto_item_add_subtree(item, ett_sbccs_dib_statusflags);
+ }
+
+
+ proto_tree_add_item (tree, hf_sbccs_dib_statusflags_ffc, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_item_append_text(item, "%s", val_to_str ((flags>>5) & 0x07, status_ffc_val, "Reserved:0x%x"));
+ flags &= (~( 0xE0 ));
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_statusflags_ci, tvb, offset, 1, flags);
+ if (flags & 0x10) {
+ proto_item_append_text(item, " CI");
+ }
+ flags &= (~( 0x10 ));
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_statusflags_cr, tvb, offset, 1, flags);
+ if (flags & 0x04) {
+ proto_item_append_text(item, " CR");
+ }
+ flags &= (~( 0x04 ));
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_statusflags_lri, tvb, offset, 1, flags);
+ if (flags & 0x02) {
+ proto_item_append_text(item, " LRI");
+ }
+ flags &= (~( 0x02 ));
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_statusflags_rv, tvb, offset, 1, flags);
+ if (flags & 0x01) {
+ proto_item_append_text(item, " RV");
+ }
+ flags &= (~( 0x01 ));
}
static const true_false_string tfs_sbccs_status_attention = {
- "ATTENTION is set",
- "attention is NOT set"
+ "ATTENTION is set",
+ "attention is NOT set"
};
static const true_false_string tfs_sbccs_status_modifier = {
- "STATUS MODIFIER is set",
- "status modifier is NOT set"
+ "STATUS MODIFIER is set",
+ "status modifier is NOT set"
};
static const true_false_string tfs_sbccs_status_cue = {
- "CONTROL-UNIT END is set",
- "control-unit end is NOT set"
+ "CONTROL-UNIT END is set",
+ "control-unit end is NOT set"
};
static const true_false_string tfs_sbccs_status_busy = {
- "BUSY is set",
- "busy is NOT set"
+ "BUSY is set",
+ "busy is NOT set"
};
static const true_false_string tfs_sbccs_status_channelend = {
- "CHANNEL-END is set",
- "channel-end is NOT set"
+ "CHANNEL-END is set",
+ "channel-end is NOT set"
};
static const true_false_string tfs_sbccs_status_deviceend = {
- "DEVICE-END is set",
- "device-end is NOT set"
+ "DEVICE-END is set",
+ "device-end is NOT set"
};
static const true_false_string tfs_sbccs_status_unitcheck = {
- "UNIT CHECK is set",
- "unit check is NOT set"
+ "UNIT CHECK is set",
+ "unit check is NOT set"
};
static const true_false_string tfs_sbccs_status_unitexception = {
- "UNIT EXCEPTION is set",
- "unit exception is NOT set"
+ "UNIT EXCEPTION is set",
+ "unit exception is NOT set"
};
static void
dissect_status (packet_info *pinfo, proto_tree *parent_tree, tvbuff_t *tvb, int offset, guint8 flags)
{
- proto_item *item=NULL;
- proto_tree *tree=NULL;
-
- if(parent_tree){
- item=proto_tree_add_uint(parent_tree, hf_sbccs_dib_status,
- tvb, offset, 1, flags);
- tree=proto_item_add_subtree(item, ett_sbccs_dib_status);
- }
-
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_status_attention, tvb, offset, 1, flags);
- if (flags&0x80){
- proto_item_append_text(item, " Attention");
- col_append_str(pinfo->cinfo, COL_INFO, " Attention");
- }
- flags&=(~( 0x80 ));
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_status_modifier, tvb, offset, 1, flags);
- if (flags&0x40){
- proto_item_append_text(item, " Status Modifier");
- col_append_str(pinfo->cinfo, COL_INFO, " Status Modifier");
- }
- flags&=(~( 0x40 ));
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_status_cue, tvb, offset, 1, flags);
- if (flags&0x20){
- proto_item_append_text(item, " Control-Unit End");
- col_append_str(pinfo->cinfo, COL_INFO, " Control-Unit End");
- }
- flags&=(~( 0x20 ));
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_status_busy, tvb, offset, 1, flags);
- if (flags&0x10){
- proto_item_append_text(item, " Busy");
- col_append_str(pinfo->cinfo, COL_INFO, " Busy");
- }
- flags&=(~( 0x10 ));
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_status_channelend, tvb, offset, 1, flags);
- if (flags&0x08){
- proto_item_append_text(item, " Channel End");
- col_append_str(pinfo->cinfo, COL_INFO, " Channel End");
- }
- flags&=(~( 0x08 ));
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_status_deviceend, tvb, offset, 1, flags);
- if (flags&0x04){
- proto_item_append_text(item, " Device End");
- col_append_str(pinfo->cinfo, COL_INFO, " Device End");
- }
- flags&=(~( 0x04 ));
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_status_unit_check, tvb, offset, 1, flags);
- if (flags&0x02){
- proto_item_append_text(item, " Unit Check");
- col_append_str(pinfo->cinfo, COL_INFO, " Unit Check");
- }
- flags&=(~( 0x02 ));
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_status_unit_exception, tvb, offset, 1, flags);
- if (flags&0x01){
- proto_item_append_text(item, " Unit Exception");
- col_append_str(pinfo->cinfo, COL_INFO, " Unit Exception");
- }
- flags&=(~( 0x01 ));
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+
+ if (parent_tree) {
+ item=proto_tree_add_uint(parent_tree, hf_sbccs_dib_status,
+ tvb, offset, 1, flags);
+ tree=proto_item_add_subtree(item, ett_sbccs_dib_status);
+ }
+
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_status_attention, tvb, offset, 1, flags);
+ if (flags & 0x80) {
+ proto_item_append_text(item, " Attention");
+ col_append_str(pinfo->cinfo, COL_INFO, " Attention");
+ }
+ flags &= (~( 0x80 ));
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_status_modifier, tvb, offset, 1, flags);
+ if (flags & 0x40) {
+ proto_item_append_text(item, " Status Modifier");
+ col_append_str(pinfo->cinfo, COL_INFO, " Status Modifier");
+ }
+ flags &= (~( 0x40 ));
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_status_cue, tvb, offset, 1, flags);
+ if (flags & 0x20) {
+ proto_item_append_text(item, " Control-Unit End");
+ col_append_str(pinfo->cinfo, COL_INFO, " Control-Unit End");
+ }
+ flags &= (~( 0x20 ));
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_status_busy, tvb, offset, 1, flags);
+ if (flags & 0x10) {
+ proto_item_append_text(item, " Busy");
+ col_append_str(pinfo->cinfo, COL_INFO, " Busy");
+ }
+ flags &= (~( 0x10 ));
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_status_channelend, tvb, offset, 1, flags);
+ if (flags & 0x08) {
+ proto_item_append_text(item, " Channel End");
+ col_append_str(pinfo->cinfo, COL_INFO, " Channel End");
+ }
+ flags &= (~( 0x08 ));
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_status_deviceend, tvb, offset, 1, flags);
+ if (flags & 0x04) {
+ proto_item_append_text(item, " Device End");
+ col_append_str(pinfo->cinfo, COL_INFO, " Device End");
+ }
+ flags &= (~( 0x04 ));
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_status_unit_check, tvb, offset, 1, flags);
+ if (flags & 0x02) {
+ proto_item_append_text(item, " Unit Check");
+ col_append_str(pinfo->cinfo, COL_INFO, " Unit Check");
+ }
+ flags &= (~( 0x02 ));
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_status_unit_exception, tvb, offset, 1, flags);
+ if (flags & 0x01) {
+ proto_item_append_text(item, " Unit Exception");
+ col_append_str(pinfo->cinfo, COL_INFO, " Unit Exception");
+ }
+ flags &= (~( 0x01 ));
}
static const true_false_string tfs_sbccs_ctlparam_rc = {
- "RC is SET",
- "rc is NOT set"
+ "RC is SET",
+ "rc is NOT set"
};
static const true_false_string tfs_sbccs_ctlparam_ru = {
- "RU is SET",
- "ru is NOT set"
+ "RU is SET",
+ "ru is NOT set"
};
static const true_false_string tfs_sbccs_ctlparam_ro = {
- "RO is SET",
- "ro is NOT set"
+ "RO is SET",
+ "ro is NOT set"
};
static void
dissect_sel_rst_param (proto_tree *parent_tree, tvbuff_t *tvb, int offset, guint32 flags)
{
- proto_item *item=NULL;
- proto_tree *tree=NULL;
-
- if(parent_tree){
- item=proto_tree_add_uint(parent_tree, hf_sbccs_dib_ctlparam,
- tvb, offset, 3, flags);
- tree=proto_item_add_subtree(item, ett_sbccs_dib_ctlparam);
- }
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_ctlparam_rc, tvb, offset, 3, flags);
- if (flags&0x80){
- proto_item_append_text(item, " RC");
- }
- flags&=(~( 0x80 ));
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_ctlparam_ru, tvb, offset, 3, flags);
- if (flags&0x10){
- proto_item_append_text(item, " RU");
- }
- flags&=(~( 0x10 ));
-
- proto_tree_add_boolean(tree, hf_sbccs_dib_ctlparam_ro, tvb, offset, 3, flags);
- if (flags&0x08){
- proto_item_append_text(item, " RO");
- }
- flags&=(~( 0x08 ));
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+
+ if (parent_tree) {
+ item=proto_tree_add_uint(parent_tree, hf_sbccs_dib_ctlparam,
+ tvb, offset, 3, flags);
+ tree=proto_item_add_subtree(item, ett_sbccs_dib_ctlparam);
+ }
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_ctlparam_rc, tvb, offset, 3, flags);
+ if (flags & 0x80) {
+ proto_item_append_text(item, " RC");
+ }
+ flags &= (~( 0x80 ));
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_ctlparam_ru, tvb, offset, 3, flags);
+ if (flags & 0x10) {
+ proto_item_append_text(item, " RU");
+ }
+ flags &= (~( 0x10 ));
+
+ proto_tree_add_boolean(tree, hf_sbccs_dib_ctlparam_ro, tvb, offset, 3, flags);
+ if (flags & 0x08) {
+ proto_item_append_text(item, " RO");
+ }
+ flags &= (~( 0x08 ));
}
static void get_fc_sbccs_conv_data (tvbuff_t *tvb, guint offset,
guint16 *ch_cu_id, guint16 *dev_addr,
guint16 *ccw)
{
- *ch_cu_id = *dev_addr = *ccw = 0;
+ *ch_cu_id = *dev_addr = *ccw = 0;
- *ch_cu_id = (tvb_get_guint8 (tvb, offset+1)) << 8;
+ *ch_cu_id = (tvb_get_guint8 (tvb, offset+1)) << 8;
*ch_cu_id |= tvb_get_guint8 (tvb, offset+3);
- *dev_addr = tvb_get_ntohs (tvb, offset+4);
- *ccw = tvb_get_ntohs (tvb, offset+10);
+ *dev_addr = tvb_get_ntohs (tvb, offset+4);
+ *ccw = tvb_get_ntohs (tvb, offset+10);
}
/* Decode both the SB-3 and basic IU header */
@@ -744,8 +728,8 @@ dissect_fc_sbccs_sb3_iu_hdr (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
proto_item *subti;
proto_tree *sb3hdr_tree;
proto_tree *iuhdr_tree;
- guint8 iui, dhflags;
- guint type;
+ guint8 iui, dhflags;
+ guint type;
/* Decode the basic SB3 and IU header and determine type of frame */
type = get_fc_sbccs_iu_type (tvb, offset);
@@ -772,10 +756,10 @@ dissect_fc_sbccs_sb3_iu_hdr (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
offset += FC_SBCCS_SB3_HDR_SIZE;
iui = tvb_get_guint8 (tvb, offset);
- dissect_iui_flags(iuhdr_tree, tvb, offset, iui);
+ dissect_iui_flags(iuhdr_tree, tvb, offset, iui);
dhflags = tvb_get_guint8 (tvb, offset+1);
- dissect_dh_flags(iuhdr_tree, tvb, offset+1, dhflags);
+ dissect_dh_flags(iuhdr_tree, tvb, offset+1, dhflags);
proto_tree_add_item (iuhdr_tree, hf_sbccs_ccw, tvb, offset+2, 2, ENC_BIG_ENDIAN);
proto_tree_add_item (iuhdr_tree, hf_sbccs_token, tvb, offset+5, 3, ENC_BIG_ENDIAN);
@@ -809,13 +793,13 @@ static void dissect_fc_sbccs_dib_cmd_hdr (tvbuff_t *tvb, packet_info *pinfo,
proto_tree_add_item (tree, hf_sbccs_dib_ccw_cmd, tvb, offset, 1, ENC_BIG_ENDIAN);
flags = tvb_get_guint8 (tvb, offset+1);
- dissect_ccw_flags(tree, tvb, offset+1, flags);
+ dissect_ccw_flags(tree, tvb, offset+1, flags);
proto_tree_add_item (tree, hf_sbccs_dib_ccw_cnt, tvb, offset+2, 2, ENC_BIG_ENDIAN);
proto_tree_add_item (tree, hf_sbccs_dib_ioprio, tvb, offset+5, 1, ENC_BIG_ENDIAN);
flags = tvb_get_guint8 (tvb, offset+7);
- dissect_cmd_flags(tree, tvb, offset+7, flags);
+ dissect_cmd_flags(tree, tvb, offset+7, flags);
proto_tree_add_item (tree, hf_sbccs_dib_iucnt, tvb, offset+9, 1, ENC_BIG_ENDIAN);
proto_tree_add_item (tree, hf_sbccs_dib_datacnt, tvb, offset+10, 2, ENC_BIG_ENDIAN);
@@ -827,19 +811,19 @@ static void dissect_fc_sbccs_dib_cmd_hdr (tvbuff_t *tvb, packet_info *pinfo,
static void dissect_fc_sbccs_dib_status_hdr (tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree, guint offset)
{
- guint8 flags;
- gboolean rv_valid, qparam_valid;
+ guint8 flags;
+ gboolean rv_valid, qparam_valid;
tvbuff_t *next_tvb;
- guint16 supp_status_cnt = 0;
+ guint16 supp_status_cnt = 0;
if (tree) {
flags = tvb_get_guint8 (tvb, offset);
rv_valid = flags & 0x1; /* if residual count is valid */
qparam_valid = (((flags & 0xE0) >> 5) == 0x1); /* From the FFC field */
- dissect_status_flags(tree, tvb, offset, flags);
+ dissect_status_flags(tree, tvb, offset, flags);
flags = tvb_get_guint8 (tvb, offset+1);
- dissect_status(pinfo, tree, tvb, offset+1, flags);
+ dissect_status(pinfo, tree, tvb, offset+1, flags);
if (rv_valid) {
proto_tree_add_item (tree, hf_sbccs_dib_residualcnt, tvb, offset+2,
@@ -920,9 +904,9 @@ static void dissect_fc_sbccs_dib_ctl_hdr (tvbuff_t *tvb, packet_info *pinfo,
static void dissect_fc_sbccs_dib_link_hdr (tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree, guint offset)
{
- guint8 link_ctl;
+ guint8 link_ctl;
guint16 ctl_info;
- guint link_payload_len, i;
+ guint link_payload_len, i;
if (check_col (pinfo->cinfo, COL_INFO)) {
col_append_fstr (pinfo->cinfo, COL_INFO,
@@ -988,16 +972,16 @@ static void dissect_fc_sbccs_dib_link_hdr (tvbuff_t *tvb, packet_info *pinfo,
static void dissect_fc_sbccs (tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree)
{
- guint8 type;
- guint16 ch_cu_id, dev_addr, ccw;
- guint offset = 0;
- proto_item *ti;
- proto_tree *sb3_tree = NULL,
- *dib_tree = NULL;
- tvbuff_t *next_tvb;
+ guint8 type;
+ guint16 ch_cu_id, dev_addr, ccw;
+ guint offset = 0;
+ proto_item *ti;
+ proto_tree *sb3_tree = NULL;
+ proto_tree *dib_tree = NULL;
+ tvbuff_t *next_tvb;
conversation_t *conversation;
- sb3_task_id_t task_key;
- void* pd_save;
+ sb3_task_id_t task_key;
+ void *pd_save;
/* Make entries in Protocol column and Info column on summary display */
col_set_str(pinfo->cinfo, COL_PROTOCOL, "FC-SB3");
@@ -1093,209 +1077,344 @@ proto_register_fcsbccs (void)
/* Setup list of header fields See Section 1.6.1 for details*/
static hf_register_info hf[] = {
{ &hf_sbccs_chid,
- {"Channel Image ID", "sbccs.chid", FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}},
+ { "Channel Image ID", "sbccs.chid",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_cuid,
- {"Control Unit Image ID", "sbccs.cuid", FT_UINT8, BASE_DEC, NULL,
- 0x0, NULL, HFILL}},
+ { "Control Unit Image ID", "sbccs.cuid",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_devaddr,
- {"Device Address", "sbccs.devaddr", FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL}},
+ { "Device Address", "sbccs.devaddr",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_iui,
- {"Information Unit Identifier", "sbccs.iui", FT_UINT8, BASE_HEX,
- NULL, 0x0, NULL, HFILL}},
+ { "Information Unit Identifier", "sbccs.iui",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_dhflags,
- {"DH Flags", "sbccs.dhflags", FT_UINT8, BASE_HEX, NULL, 0x0, NULL,
- HFILL}},
+ { "DH Flags", "sbccs.dhflags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_ccw,
- {"CCW Number", "sbccs.ccw", FT_UINT16, BASE_HEX, NULL, 0x0, NULL,
- HFILL}},
+ { "CCW Number", "sbccs.ccw",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_token,
- {"Token", "sbccs.token", FT_UINT24, BASE_DEC, NULL, 0x0, NULL,
- HFILL}},
+ { "Token", "sbccs.token",
+ FT_UINT24, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_iucnt,
- {"DIB IU Count", "sbccs.iucnt", FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}},
+ { "DIB IU Count", "sbccs.iucnt",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_datacnt,
- {"DIB Data Byte Count", "sbccs.databytecnt", FT_UINT16, BASE_DEC,
- NULL, 0x0, NULL, HFILL}},
+ { "DIB Data Byte Count", "sbccs.databytecnt",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_ccw_cmd,
- {"CCW Command", "sbccs.ccwcmd", FT_UINT8, BASE_HEX,
- VALS (fc_sbccs_dib_cmd_val), 0x0, NULL, HFILL}},
+ { "CCW Command", "sbccs.ccwcmd",
+ FT_UINT8, BASE_HEX, VALS (fc_sbccs_dib_cmd_val), 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_ccw_cnt,
- {"CCW Count", "sbccs.ccwcnt", FT_UINT16, BASE_DEC, NULL, 0x0, NULL,
- HFILL}},
+ { "CCW Count", "sbccs.ccwcnt",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_ioprio,
- {"I/O Priority", "sbccs.ioprio", FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}},
+ { "I/O Priority", "sbccs.ioprio",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_status,
- {"Status", "sbccs.status", FT_UINT8, BASE_HEX, NULL, 0x0, NULL,
- HFILL}},
+ { "Status", "sbccs.status",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_residualcnt,
- {"Residual Count", "sbccs.residualcnt", FT_UINT8, BASE_DEC,
- NULL, 0x0, NULL, HFILL}},
+ { "Residual Count", "sbccs.residualcnt",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_iupacing,
- {"IU Pacing", "sbccs.iupacing", FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}},
+ { "IU Pacing", "sbccs.iupacing",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_qtuf,
- {"Queue-Time Unit Factor", "sbccs.qtuf", FT_UINT8, BASE_DEC,
- NULL, 0xF0, NULL, HFILL}},
+ { "Queue-Time Unit Factor", "sbccs.qtuf",
+ FT_UINT8, BASE_DEC, NULL, 0xF0,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_qtu,
- {"Queue-Time Unit", "sbccs.qtu", FT_UINT16, BASE_DEC, NULL, 0xFFF,
- NULL, HFILL}},
+ { "Queue-Time Unit", "sbccs.qtu",
+ FT_UINT16, BASE_DEC, NULL, 0xFFF,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_dtuf,
- {"Defer-Time Unit Function", "sbccs.dtuf", FT_UINT8, BASE_DEC,
- NULL, 0xF0, NULL, HFILL}},
+ { "Defer-Time Unit Function", "sbccs.dtuf",
+ FT_UINT8, BASE_DEC, NULL, 0xF0,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_dtu,
- {"Defer-Time Unit", "sbccs.dtu", FT_UINT16, BASE_DEC, NULL, 0xFFF,
- NULL, HFILL}},
+ { "Defer-Time Unit", "sbccs.dtu",
+ FT_UINT16, BASE_DEC, NULL, 0xFFF,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_ctlfn,
- {"Control Function", "sbccs.ctlfn", FT_UINT8, BASE_HEX,
- VALS (fc_sbccs_dib_ctl_fn_val), 0x0, NULL, HFILL}},
+ { "Control Function", "sbccs.ctlfn",
+ FT_UINT8, BASE_HEX, VALS (fc_sbccs_dib_ctl_fn_val), 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_linkctlfn,
- {"Link Control Function", "sbccs.linkctlfn", FT_UINT8, BASE_HEX,
- VALS (fc_sbccs_dib_link_ctl_fn_val), 0x0, NULL, HFILL}},
+ { "Link Control Function", "sbccs.linkctlfn",
+ FT_UINT8, BASE_HEX, VALS (fc_sbccs_dib_link_ctl_fn_val), 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_ctccntr,
- {"CTC Counter", "sbccs.ctccntr", FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL}},
+ { "CTC Counter", "sbccs.ctccntr",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_lrc,
- {"LRC", "sbccs.lrc", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL}},
+ { "LRC", "sbccs.lrc",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_dev_xcp_code,
- {"Device Level Exception Code", "sbccs.dip.xcpcode", FT_UINT8,
- BASE_DEC, VALS (fc_sbccs_dib_dev_xcpcode_val), 0x0, NULL, HFILL}},
+ { "Device Level Exception Code", "sbccs.dip.xcpcode",
+ FT_UINT8, BASE_DEC, VALS (fc_sbccs_dib_dev_xcpcode_val), 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_prg_pth_errcode,
- {"Purge Path Error Code", "sbccs.purgepathcode", FT_UINT8,
- BASE_DEC, VALS (fc_sbccs_dib_purge_path_err_val), 0x0, NULL, HFILL}},
+ { "Purge Path Error Code", "sbccs.purgepathcode",
+ FT_UINT8, BASE_DEC, VALS (fc_sbccs_dib_purge_path_err_val), 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_prg_rsp_errcode,
- {"Purge Path Response Error Code", "sbccs.purgepathrspcode",
- FT_UINT8, BASE_DEC, VALS (fc_sbccs_dib_purge_path_rsp_err_val),
- 0x0, NULL, HFILL}},
+ { "Purge Path Response Error Code", "sbccs.purgepathrspcode",
+ FT_UINT8, BASE_DEC, VALS (fc_sbccs_dib_purge_path_rsp_err_val), 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_lprcode,
- {"LPR Reason Code", "sbccs.lprcode", FT_UINT8, BASE_DEC,
- VALS (fc_sbccs_dib_lpr_errcode_val), 0xF, NULL, HFILL}},
+ { "LPR Reason Code", "sbccs.lprcode",
+ FT_UINT8, BASE_DEC, VALS (fc_sbccs_dib_lpr_errcode_val), 0xF,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_tin_imgid_cnt,
- {"TIN Image ID", "sbccs.tinimageidcnt", FT_UINT8, BASE_DEC, NULL,
- 0x0, NULL, HFILL}},
+ { "TIN Image ID", "sbccs.tinimageidcnt",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_lrjcode,
- {"LRJ Reaspn Code", "sbccs.lrjcode", FT_UINT8, BASE_HEX,
- VALS (fc_sbccs_dib_lrj_errcode_val), 0x7F, NULL, HFILL}},
+ { "LRJ Reaspn Code", "sbccs.lrjcode",
+ FT_UINT8, BASE_HEX, VALS (fc_sbccs_dib_lrj_errcode_val), 0x7F,
+ NULL, HFILL}},
+
{ &hf_sbccs_iui_as,
- {"AS", "sbccs.iui.as", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_iui_as), 0x10, NULL, HFILL}},
+ { "AS", "sbccs.iui.as",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_iui_as), 0x10,
+ NULL, HFILL}},
+
{ &hf_sbccs_iui_es,
- {"ES", "sbccs.iui.es", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_iui_es), 0x08, NULL, HFILL}},
+ { "ES", "sbccs.iui.es",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_iui_es), 0x08,
+ NULL, HFILL}},
+
{ &hf_sbccs_iui_val,
- {"Val", "sbccs.iui.val", FT_UINT8, BASE_HEX,
- VALS(fc_sbccs_iu_val), 0x07, NULL, HFILL}},
+ { "Val", "sbccs.iui.val",
+ FT_UINT8, BASE_HEX, VALS(fc_sbccs_iu_val), 0x07,
+ NULL, HFILL}},
+
{ &hf_sbccs_dhflags_end,
- {"End", "sbccs.dhflags.end", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_dhflags_end), 0x80, NULL, HFILL}},
+ { "End", "sbccs.dhflags.end",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_dhflags_end), 0x80,
+ NULL, HFILL}},
+
{ &hf_sbccs_dhflags_chaining,
- {"Chaining", "sbccs.dhflags.chaining", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_dhflags_chaining), 0x10, NULL, HFILL}},
+ { "Chaining", "sbccs.dhflags.chaining",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_dhflags_chaining), 0x10,
+ NULL, HFILL}},
+
{ &hf_sbccs_dhflags_earlyend,
- {"Early End", "sbccs.dhflags.earlyend", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_dhflags_earlyend), 0x08, NULL, HFILL}},
+ { "Early End", "sbccs.dhflags.earlyend",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_dhflags_earlyend), 0x08,
+ NULL, HFILL}},
+
{ &hf_sbccs_dhflags_nocrc,
- {"No CRC", "sbccs.dhflags.nocrc", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_dhflags_nocrc), 0x04, NULL, HFILL}},
+ { "No CRC", "sbccs.dhflags.nocrc",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_dhflags_nocrc), 0x04,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_ccw_flags,
- {"CCW Control Flags", "sbccs.ccwflags", FT_UINT8, BASE_HEX, NULL,
- 0x0, NULL, HFILL}},
+ { "CCW Control Flags", "sbccs.ccwflags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_ccw_flags_cd,
- {"CD", "sbccs.ccwflags.cd", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_ccwflags_cd), 0x80, NULL, HFILL}},
+ { "CD", "sbccs.ccwflags.cd",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_ccwflags_cd), 0x80,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_ccw_flags_cc,
- {"CC", "sbccs.ccwflags.cc", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_ccwflags_cc), 0x40, NULL, HFILL}},
+ { "CC", "sbccs.ccwflags.cc",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_ccwflags_cc), 0x40,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_ccw_flags_sli,
- {"SLI", "sbccs.ccwflags.sli", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_ccwflags_sli), 0x20, NULL, HFILL}},
+ { "SLI", "sbccs.ccwflags.sli",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_ccwflags_sli), 0x20,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_ccw_flags_crr,
- {"CRR", "sbccs.ccwflags.crr", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_ccwflags_crr), 0x08, NULL, HFILL}},
+ { "CRR", "sbccs.ccwflags.crr",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_ccwflags_crr), 0x08,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_cmdflags,
- {"Command Flags", "sbccs.cmdflags", FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL}},
+ { "Command Flags", "sbccs.cmdflags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_cmdflags_du,
- {"DU", "sbccs.cmdflags.du", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_cmdflags_du), 0x10, NULL, HFILL}},
+ { "DU", "sbccs.cmdflags.du",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_cmdflags_du), 0x10,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_cmdflags_coc,
- {"COC", "sbccs.cmdflags.coc", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_cmdflags_coc), 0x08, NULL, HFILL}},
+ { "COC", "sbccs.cmdflags.coc",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_cmdflags_coc), 0x08,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_cmdflags_syr,
- {"SYR", "sbccs.cmdflags.syr", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_cmdflags_syr), 0x04, NULL, HFILL}},
+ { "SYR", "sbccs.cmdflags.syr",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_cmdflags_syr), 0x04,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_cmdflags_rex,
- {"REX", "sbccs.cmdflags.rex", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_cmdflags_rex), 0x02, NULL, HFILL}},
+ { "REX", "sbccs.cmdflags.rex",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_cmdflags_rex), 0x02,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_cmdflags_sss,
- {"SSS", "sbccs.cmdflags.sss", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_cmdflags_sss), 0x01, NULL, HFILL}},
+ { "SSS", "sbccs.cmdflags.sss",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_cmdflags_sss), 0x01,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_statusflags,
- {"Status Flags", "sbccs.statusflags", FT_UINT8, BASE_HEX,
- NULL, 0, NULL, HFILL}},
+ { "Status Flags", "sbccs.statusflags",
+ FT_UINT8, BASE_HEX, NULL, 0,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_statusflags_ffc,
- {"FFC", "sbccs.statusflags.ffc", FT_UINT8, BASE_HEX,
- VALS(status_ffc_val), 0xE0, NULL, HFILL}},
+ { "FFC", "sbccs.statusflags.ffc",
+ FT_UINT8, BASE_HEX, VALS(status_ffc_val), 0xE0,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_statusflags_ci,
- {"CI", "sbccs.statusflags.ci", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_statusflags_ci), 0x10, NULL, HFILL}},
+ { "CI", "sbccs.statusflags.ci",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_statusflags_ci), 0x10,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_statusflags_cr,
- {"CR", "sbccs.statusflags.cr", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_statusflags_cr), 0x04, NULL, HFILL}},
+ { "CR", "sbccs.statusflags.cr",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_statusflags_cr), 0x04,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_statusflags_lri,
- {"LRI", "sbccs.statusflags.lri", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_statusflags_lri), 0x02, NULL, HFILL}},
+ { "LRI", "sbccs.statusflags.lri",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_statusflags_lri), 0x02,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_statusflags_rv,
- {"RV", "sbccs.statusflags.rv", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_statusflags_rv), 0x01, NULL, HFILL}},
+ { "RV", "sbccs.statusflags.rv",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_statusflags_rv), 0x01,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_status_attention,
- {"Attention", "sbccs.status.attention", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_status_attention), 0x80, NULL, HFILL}},
+ { "Attention", "sbccs.status.attention",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_status_attention), 0x80,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_status_modifier,
- {"Status Modifier", "sbccs.status.modifier", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_status_modifier), 0x40, NULL, HFILL}},
+ { "Status Modifier", "sbccs.status.modifier",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_status_modifier), 0x40,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_status_cue,
- {"Control-Unit End", "sbccs.status.cue", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_status_cue), 0x20, NULL, HFILL}},
+ { "Control-Unit End", "sbccs.status.cue",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_status_cue), 0x20,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_status_busy,
- {"Busy", "sbccs.status.busy", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_status_busy), 0x10, NULL, HFILL}},
+ { "Busy", "sbccs.status.busy",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_status_busy), 0x10,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_status_channelend,
- {"Channel End", "sbccs.status.channel_end", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_status_channelend), 0x08, NULL, HFILL}},
+ { "Channel End", "sbccs.status.channel_end",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_status_channelend), 0x08,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_status_deviceend,
- {"Device End", "sbccs.status.device_end", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_status_deviceend), 0x04, NULL, HFILL}},
+ { "Device End", "sbccs.status.device_end",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_status_deviceend), 0x04,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_status_unit_check,
- {"Unit Check", "sbccs.status.unit_check", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_status_unitcheck), 0x02, NULL, HFILL}},
+ { "Unit Check", "sbccs.status.unit_check",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_status_unitcheck), 0x02,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_status_unit_exception,
- {"Unit Exception", "sbccs.status.unitexception", FT_BOOLEAN, 8,
- TFS(&tfs_sbccs_status_unitexception), 0x01, NULL, HFILL}},
+ { "Unit Exception", "sbccs.status.unitexception",
+ FT_BOOLEAN, 8, TFS(&tfs_sbccs_status_unitexception), 0x01,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_ctlparam,
- {"Control Parameters", "sbccs.ctlparam", FT_UINT24, BASE_HEX,
- NULL, 0x0, NULL, HFILL}},
+ { "Control Parameters", "sbccs.ctlparam",
+ FT_UINT24, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_ctlparam_rc,
- {"RC", "sbccs.ctlparam.rc", FT_BOOLEAN, 24,
- TFS(&tfs_sbccs_ctlparam_rc), 0x80, NULL, HFILL}},
+ { "RC", "sbccs.ctlparam.rc",
+ FT_BOOLEAN, 24, TFS(&tfs_sbccs_ctlparam_rc), 0x80,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_ctlparam_ru,
- {"RU", "sbccs.ctlparam.ru", FT_BOOLEAN, 24,
- TFS(&tfs_sbccs_ctlparam_ru), 0x10, NULL, HFILL}},
+ { "RU", "sbccs.ctlparam.ru",
+ FT_BOOLEAN, 24, TFS(&tfs_sbccs_ctlparam_ru), 0x10,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_ctlparam_ro,
- {"RO", "sbccs.ctlparam.ro", FT_BOOLEAN, 24,
- TFS(&tfs_sbccs_ctlparam_ro), 0x08, NULL, HFILL}},
+ { "RO", "sbccs.ctlparam.ro",
+ FT_BOOLEAN, 24, TFS(&tfs_sbccs_ctlparam_ro), 0x08,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_linkctlinfo,
- {"Link Control Information", "sbccs.linkctlinfo", FT_UINT16,
- BASE_HEX, NULL, 0x0, NULL, HFILL}},
+ { "Link Control Information", "sbccs.linkctlinfo",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_linkctlinfo_ctcconn,
- {"CTC Conn", "sbccs.linkctlinfo.ctc_conn", FT_BOOLEAN, 16,
- TFS(&tfs_sbccs_linkctlinfo_ctcconn), 0x80, NULL, HFILL}},
+ { "CTC Conn", "sbccs.linkctlinfo.ctc_conn",
+ FT_BOOLEAN, 16, TFS(&tfs_sbccs_linkctlinfo_ctcconn), 0x80,
+ NULL, HFILL}},
+
{ &hf_sbccs_dib_linkctlinfo_ecrcg,
- {"Enhanced CRC Generation", "sbccs.linkctlinfo.ecrcg", FT_BOOLEAN, 16,
- TFS(&tfs_sbccs_linkctlinfo_ecrcg), 0x01, NULL, HFILL}},
+ { "Enhanced CRC Generation", "sbccs.linkctlinfo.ecrcg",
+ FT_BOOLEAN, 16, TFS(&tfs_sbccs_linkctlinfo_ecrcg), 0x01,
+ NULL, HFILL}},
};
@@ -1316,15 +1435,10 @@ proto_register_fcsbccs (void)
proto_fc_sbccs = proto_register_protocol ("Fibre Channel Single Byte Command",
"FC-SB3", "sb3");
- /* Required function calls to register the header fields and subtrees used */
proto_register_field_array(proto_fc_sbccs, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
}
-/* If this dissector uses sub-dissector registration add a registration routine.
- This format is required because a script is used to find these routines and
- create the code that calls these routines.
-*/
void
proto_reg_handoff_fcsbccs (void)
{
diff --git a/epan/dissectors/packet-fcsp.c b/epan/dissectors/packet-fcsp.c
index 34a9217d4a..deb371de3f 100644
--- a/epan/dissectors/packet-fcsp.c
+++ b/epan/dissectors/packet-fcsp.c
@@ -9,12 +9,6 @@
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
- * Copied from WHATEVER_FILE_YOU_USED (where "WHATEVER_FILE_YOU_USED"
- * is a dissector file; if you just copied this from README.developer,
- * don't bother with the "Copied from" - you don't even need to put
- * in a "Copied from" if you copied an existing dissector, especially
- * if the bulk of the code in the new dissector is your code)
- *
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
@@ -34,16 +28,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
@@ -78,23 +62,23 @@
#define FC_AUTH_DHCHAP_PARAM_DHgIDLIST 0x2
/* Initialize the protocol and registered fields */
-static int proto_fcsp = -1;
-static int hf_auth_proto_ver = -1;
-static int hf_auth_msg_code = -1;
-static int hf_auth_flags = -1;
-static int hf_auth_len = -1;
-static int hf_auth_tid = -1;
-static int hf_auth_initiator_wwn = -1;
-static int hf_auth_initiator_name = -1;
-static int hf_auth_usable_proto = -1;
-static int hf_auth_rjt_code = -1;
-static int hf_auth_rjt_codedet = -1;
-static int hf_auth_responder_wwn = -1;
-static int hf_auth_responder_name = -1;
-static int hf_auth_dhchap_groupid = -1;
-static int hf_auth_dhchap_hashid = -1;
+static int proto_fcsp = -1;
+static int hf_auth_proto_ver = -1;
+static int hf_auth_msg_code = -1;
+static int hf_auth_flags = -1;
+static int hf_auth_len = -1;
+static int hf_auth_tid = -1;
+static int hf_auth_initiator_wwn = -1;
+static int hf_auth_initiator_name = -1;
+static int hf_auth_usable_proto = -1;
+static int hf_auth_rjt_code = -1;
+static int hf_auth_rjt_codedet = -1;
+static int hf_auth_responder_wwn = -1;
+static int hf_auth_responder_name = -1;
+static int hf_auth_dhchap_groupid = -1;
+static int hf_auth_dhchap_hashid = -1;
static int hf_auth_dhchap_chal_len = -1;
-static int hf_auth_dhchap_val_len = -1;
+static int hf_auth_dhchap_val_len = -1;
static int hf_auth_dhchap_rsp_len = -1;
static int hf_auth_initiator_name_type = -1;
static int hf_auth_initiator_name_len = -1;
@@ -116,18 +100,18 @@ static gint ett_fcsp = -1;
static dissector_handle_t data_handle;
static const value_string fcauth_msgcode_vals[] = {
- {FC_AUTH_MSG_AUTH_REJECT, "AUTH_Reject"},
+ {FC_AUTH_MSG_AUTH_REJECT, "AUTH_Reject"},
{FC_AUTH_MSG_AUTH_NEGOTIATE, "AUTH_Negotiate"},
- {FC_AUTH_MSG_AUTH_DONE, "AUTH_Done"},
- {FC_AUTH_DHCHAP_CHALLENGE, "DHCHAP_Challenge"},
- {FC_AUTH_DHCHAP_REPLY, "DHCHAP_Reply"},
- {FC_AUTH_DHCHAP_SUCCESS, "DHCHAP_Success"},
- {FC_AUTH_FCAP_REQUEST, "FCAP_Request"},
- {FC_AUTH_FCAP_ACKNOWLEDGE, "FCAP_Acknowledge"},
- {FC_AUTH_FCAP_CONFIRM, "FCAP_Confirm"},
- {FC_AUTH_FCPAP_INIT, "FCPAP_Init"},
- {FC_AUTH_FCPAP_ACCEPT, "FCPAP_Accept"},
- {FC_AUTH_FCPAP_COMPLETE, "FCPAP_Complete"},
+ {FC_AUTH_MSG_AUTH_DONE, "AUTH_Done"},
+ {FC_AUTH_DHCHAP_CHALLENGE, "DHCHAP_Challenge"},
+ {FC_AUTH_DHCHAP_REPLY, "DHCHAP_Reply"},
+ {FC_AUTH_DHCHAP_SUCCESS, "DHCHAP_Success"},
+ {FC_AUTH_FCAP_REQUEST, "FCAP_Request"},
+ {FC_AUTH_FCAP_ACKNOWLEDGE, "FCAP_Acknowledge"},
+ {FC_AUTH_FCAP_CONFIRM, "FCAP_Confirm"},
+ {FC_AUTH_FCPAP_INIT, "FCPAP_Init"},
+ {FC_AUTH_FCPAP_ACCEPT, "FCPAP_Accept"},
+ {FC_AUTH_FCPAP_COMPLETE, "FCPAP_Complete"},
{0, NULL},
};
@@ -150,13 +134,13 @@ static const value_string fcauth_rjtcode_detail_vals[] = {
};
static const value_string fcauth_dhchap_param_vals[] = {
- {FC_AUTH_DHCHAP_PARAM_HASHLIST, "HashList"},
+ {FC_AUTH_DHCHAP_PARAM_HASHLIST, "HashList"},
{FC_AUTH_DHCHAP_PARAM_DHgIDLIST, "DHgIDList"},
{0, NULL},
};
static const value_string fcauth_dhchap_hash_algo_vals[] = {
- {FC_AUTH_DHCHAP_HASH_MD5, "MD5"},
+ {FC_AUTH_DHCHAP_HASH_MD5, "MD5"},
{FC_AUTH_DHCHAP_HASH_SHA1, "SHA-1"},
{0, NULL},
};
@@ -168,7 +152,7 @@ static const value_string fcauth_name_type_vals[] = {
static const value_string fcauth_proto_type_vals[] = {
{FC_AUTH_PROTO_TYPE_DHCHAP, "DHCHAP"},
- {FC_AUTH_PROTO_TYPE_FCAP, "FCAP"},
+ {FC_AUTH_PROTO_TYPE_FCAP, "FCAP"},
{0, NULL},
};
@@ -185,32 +169,32 @@ static const value_string fcauth_dhchap_dhgid_vals[] = {
that calls all the protocol registration.
*/
-static void dissect_fcsp_dhchap_auth_param (tvbuff_t *tvb, proto_tree *tree,
+static void dissect_fcsp_dhchap_auth_param(tvbuff_t *tvb, proto_tree *tree,
int offset, gint32 total_len)
{
guint16 auth_param_tag;
guint16 param_len = 0, i;
if (tree) {
- auth_param_tag = tvb_get_ntohs (tvb, offset);
+ auth_param_tag = tvb_get_ntohs(tvb, offset);
total_len -= 4;
while (total_len > 0) {
- proto_tree_add_item (tree, hf_auth_dhchap_param_tag, tvb, offset,
- 2, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_auth_dhchap_param_len, tvb, offset+2,
- 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_auth_dhchap_param_tag, tvb, offset,
+ 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_auth_dhchap_param_len, tvb, offset+2,
+ 2, ENC_BIG_ENDIAN);
- auth_param_tag = tvb_get_ntohs (tvb, offset);
- param_len = tvb_get_ntohs (tvb, offset+2)*4;
+ auth_param_tag = tvb_get_ntohs(tvb, offset);
+ param_len = tvb_get_ntohs(tvb, offset+2)*4;
switch (auth_param_tag) {
case FC_AUTH_DHCHAP_PARAM_HASHLIST:
offset += 4;
total_len -= 4;
for (i = 0; i < param_len; i += 4) {
- proto_tree_add_item (tree, hf_auth_dhchap_hash_type, tvb,
- offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_auth_dhchap_hash_type, tvb,
+ offset, 4, ENC_BIG_ENDIAN);
offset += 4;
}
break;
@@ -218,8 +202,8 @@ static void dissect_fcsp_dhchap_auth_param (tvbuff_t *tvb, proto_tree *tree,
offset += 4;
total_len -= 4;
for (i = 0; i < param_len; i += 4) {
- proto_tree_add_item (tree, hf_auth_dhchap_group_type, tvb,
- offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_auth_dhchap_group_type, tvb,
+ offset, 4, ENC_BIG_ENDIAN);
offset += 4;
}
break;
@@ -232,138 +216,138 @@ static void dissect_fcsp_dhchap_auth_param (tvbuff_t *tvb, proto_tree *tree,
}
}
-static void dissect_fcsp_dhchap_challenge (tvbuff_t *tvb, proto_tree *tree)
+static void dissect_fcsp_dhchap_challenge(tvbuff_t *tvb, proto_tree *tree)
{
- int offset = 12;
+ int offset = 12;
guint16 name_type;
guint16 param_len, name_len;
if (tree) {
- proto_tree_add_item (tree, hf_auth_responder_name_type, tvb, offset,
- 2, ENC_BIG_ENDIAN);
- name_type = tvb_get_ntohs (tvb, offset);
+ proto_tree_add_item(tree, hf_auth_responder_name_type, tvb, offset,
+ 2, ENC_BIG_ENDIAN);
+ name_type = tvb_get_ntohs(tvb, offset);
- proto_tree_add_item (tree, hf_auth_responder_name_len, tvb, offset+2,
- 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_auth_responder_name_len, tvb, offset+2,
+ 2, ENC_BIG_ENDIAN);
- name_len = tvb_get_ntohs (tvb, offset+2);
+ name_len = tvb_get_ntohs(tvb, offset+2);
if (name_type == FC_AUTH_NAME_TYPE_WWN) {
- proto_tree_add_string (tree, hf_auth_responder_wwn, tvb, offset+4,
- 8, tvb_fcwwn_to_str (tvb, offset+4));
+ proto_tree_add_string(tree, hf_auth_responder_wwn, tvb, offset+4,
+ 8, tvb_fcwwn_to_str(tvb, offset+4));
}
else {
- proto_tree_add_item (tree, hf_auth_responder_name, tvb, offset+4,
- name_len, ENC_NA);
+ proto_tree_add_item(tree, hf_auth_responder_name, tvb, offset+4,
+ name_len, ENC_NA);
}
offset += (4+name_len);
- proto_tree_add_item (tree, hf_auth_dhchap_hash_type, tvb, offset,
- 4, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_auth_dhchap_group_type, tvb, offset+4,
- 4, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_auth_dhchap_chal_len, tvb, offset+8,
- 4, ENC_BIG_ENDIAN);
- param_len = tvb_get_ntohl (tvb, offset+8);
+ proto_tree_add_item(tree, hf_auth_dhchap_hash_type, tvb, offset,
+ 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_auth_dhchap_group_type, tvb, offset+4,
+ 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_auth_dhchap_chal_len, tvb, offset+8,
+ 4, ENC_BIG_ENDIAN);
+ param_len = tvb_get_ntohl(tvb, offset+8);
- proto_tree_add_item (tree, hf_auth_dhchap_chal_value, tvb, offset+12,
- param_len, ENC_NA);
+ proto_tree_add_item(tree, hf_auth_dhchap_chal_value, tvb, offset+12,
+ param_len, ENC_NA);
offset += (param_len + 12);
- proto_tree_add_item (tree, hf_auth_dhchap_val_len, tvb, offset, 4, ENC_BIG_ENDIAN);
- param_len = tvb_get_ntohl (tvb, offset);
+ proto_tree_add_item(tree, hf_auth_dhchap_val_len, tvb, offset, 4, ENC_BIG_ENDIAN);
+ param_len = tvb_get_ntohl(tvb, offset);
- proto_tree_add_item (tree, hf_auth_dhchap_dhvalue, tvb, offset+4,
- param_len, ENC_NA);
+ proto_tree_add_item(tree, hf_auth_dhchap_dhvalue, tvb, offset+4,
+ param_len, ENC_NA);
}
}
-static void dissect_fcsp_dhchap_reply (tvbuff_t *tvb, proto_tree *tree)
+static void dissect_fcsp_dhchap_reply(tvbuff_t *tvb, proto_tree *tree)
{
- int offset = 12;
+ int offset = 12;
guint32 param_len;
if (tree) {
- proto_tree_add_item (tree, hf_auth_dhchap_rsp_len, tvb, offset, 4, ENC_BIG_ENDIAN);
- param_len = tvb_get_ntohl (tvb, offset);
+ proto_tree_add_item(tree, hf_auth_dhchap_rsp_len, tvb, offset, 4, ENC_BIG_ENDIAN);
+ param_len = tvb_get_ntohl(tvb, offset);
- proto_tree_add_item (tree, hf_auth_dhchap_rsp_value, tvb, offset+4,
- param_len, ENC_NA);
+ proto_tree_add_item(tree, hf_auth_dhchap_rsp_value, tvb, offset+4,
+ param_len, ENC_NA);
offset += (param_len + 4);
- proto_tree_add_item (tree, hf_auth_dhchap_val_len, tvb, offset, 4, ENC_BIG_ENDIAN);
- param_len = tvb_get_ntohl (tvb, offset);
+ proto_tree_add_item(tree, hf_auth_dhchap_val_len, tvb, offset, 4, ENC_BIG_ENDIAN);
+ param_len = tvb_get_ntohl(tvb, offset);
- proto_tree_add_item (tree, hf_auth_dhchap_dhvalue, tvb, offset+4,
- param_len, ENC_NA);
+ proto_tree_add_item(tree, hf_auth_dhchap_dhvalue, tvb, offset+4,
+ param_len, ENC_NA);
offset += (param_len + 4);
- proto_tree_add_item (tree, hf_auth_dhchap_chal_len, tvb, offset, 4, ENC_BIG_ENDIAN);
- param_len = tvb_get_ntohl (tvb, offset);
+ proto_tree_add_item(tree, hf_auth_dhchap_chal_len, tvb, offset, 4, ENC_BIG_ENDIAN);
+ param_len = tvb_get_ntohl(tvb, offset);
- proto_tree_add_item (tree, hf_auth_dhchap_chal_value, tvb, offset+4,
- param_len, ENC_NA);
+ proto_tree_add_item(tree, hf_auth_dhchap_chal_value, tvb, offset+4,
+ param_len, ENC_NA);
}
}
-static void dissect_fcsp_dhchap_success (tvbuff_t *tvb, proto_tree *tree)
+static void dissect_fcsp_dhchap_success(tvbuff_t *tvb, proto_tree *tree)
{
- int offset = 12;
+ int offset = 12;
guint32 param_len;
if (tree) {
- proto_tree_add_item (tree, hf_auth_dhchap_rsp_len, tvb, offset, 4, ENC_BIG_ENDIAN);
- param_len = tvb_get_ntohl (tvb, offset);
+ proto_tree_add_item(tree, hf_auth_dhchap_rsp_len, tvb, offset, 4, ENC_BIG_ENDIAN);
+ param_len = tvb_get_ntohl(tvb, offset);
- proto_tree_add_item (tree, hf_auth_dhchap_rsp_value, tvb, offset+4,
- param_len, ENC_NA);
+ proto_tree_add_item(tree, hf_auth_dhchap_rsp_value, tvb, offset+4,
+ param_len, ENC_NA);
}
}
-static void dissect_fcsp_auth_negotiate (tvbuff_t *tvb, proto_tree *tree)
+static void dissect_fcsp_auth_negotiate(tvbuff_t *tvb, proto_tree *tree)
{
- int offset = 12;
+ int offset = 12;
guint16 name_type, name_len, proto_type, param_len;
guint32 num_protos, i;
if (tree) {
- proto_tree_add_item (tree, hf_auth_initiator_name_type, tvb, offset,
- 2, ENC_BIG_ENDIAN);
- name_type = tvb_get_ntohs (tvb, offset);
+ proto_tree_add_item(tree, hf_auth_initiator_name_type, tvb, offset,
+ 2, ENC_BIG_ENDIAN);
+ name_type = tvb_get_ntohs(tvb, offset);
- proto_tree_add_item (tree, hf_auth_initiator_name_len, tvb, offset+2,
- 2, ENC_BIG_ENDIAN);
- name_len = tvb_get_ntohs (tvb, offset+2);
+ proto_tree_add_item(tree, hf_auth_initiator_name_len, tvb, offset+2,
+ 2, ENC_BIG_ENDIAN);
+ name_len = tvb_get_ntohs(tvb, offset+2);
if (name_type == FC_AUTH_NAME_TYPE_WWN) {
- proto_tree_add_string (tree, hf_auth_initiator_wwn, tvb, offset+4, 8,
- tvb_fcwwn_to_str (tvb, offset+4));
+ proto_tree_add_string(tree, hf_auth_initiator_wwn, tvb, offset+4, 8,
+ tvb_fcwwn_to_str(tvb, offset+4));
}
else {
- proto_tree_add_item (tree, hf_auth_initiator_name, tvb, offset+4,
- name_len, ENC_NA);
+ proto_tree_add_item(tree, hf_auth_initiator_name, tvb, offset+4,
+ name_len, ENC_NA);
}
offset += (4+name_len);
- proto_tree_add_item (tree, hf_auth_usable_proto, tvb, offset, 4, ENC_BIG_ENDIAN);
- num_protos = tvb_get_ntohl (tvb, offset);
+ proto_tree_add_item(tree, hf_auth_usable_proto, tvb, offset, 4, ENC_BIG_ENDIAN);
+ num_protos = tvb_get_ntohl(tvb, offset);
offset += 4;
for (i = 0; i < num_protos; i++) {
- proto_tree_add_item (tree, hf_auth_proto_param_len, tvb, offset, 4, ENC_BIG_ENDIAN);
- param_len = tvb_get_ntohl (tvb, offset);
+ proto_tree_add_item(tree, hf_auth_proto_param_len, tvb, offset, 4, ENC_BIG_ENDIAN);
+ param_len = tvb_get_ntohl(tvb, offset);
offset += 4;
- if (tvb_bytes_exist (tvb, offset, param_len)) {
- proto_type = tvb_get_ntohl (tvb, offset);
+ if (tvb_bytes_exist(tvb, offset, param_len)) {
+ proto_type = tvb_get_ntohl(tvb, offset);
- proto_tree_add_item (tree, hf_auth_proto_type, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_auth_proto_type, tvb, offset, 4, ENC_BIG_ENDIAN);
switch (proto_type) {
case FC_AUTH_PROTO_TYPE_DHCHAP:
- dissect_fcsp_dhchap_auth_param (tvb, tree, offset+4, param_len);
+ dissect_fcsp_dhchap_auth_param(tvb, tree, offset+4, param_len);
break;
case FC_AUTH_PROTO_TYPE_FCAP:
break;
@@ -376,65 +360,65 @@ static void dissect_fcsp_auth_negotiate (tvbuff_t *tvb, proto_tree *tree)
}
}
-static void dissect_fcsp_auth_done (tvbuff_t *tvb _U_, proto_tree *tree _U_)
+static void dissect_fcsp_auth_done(tvbuff_t *tvb _U_, proto_tree *tree _U_)
{
}
-static void dissect_fcsp_auth_rjt (tvbuff_t *tvb, proto_tree *tree)
+static void dissect_fcsp_auth_rjt(tvbuff_t *tvb, proto_tree *tree)
{
int offset = 12;
if (tree) {
- proto_tree_add_item (tree, hf_auth_rjt_code, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_auth_rjt_codedet, tvb, offset+1, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_auth_rjt_code, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_auth_rjt_codedet, tvb, offset+1, 1, ENC_BIG_ENDIAN);
}
}
-static void dissect_fcsp (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static void dissect_fcsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti = NULL;
- guint8 opcode;
- int offset = 0;
+ proto_item *ti = NULL;
+ guint8 opcode;
+ int offset = 0;
proto_tree *fcsp_tree = NULL;
/* Make entry in the Info column on summary display */
- opcode = tvb_get_guint8 (tvb, 2);
+ opcode = tvb_get_guint8(tvb, 2);
- if (check_col (pinfo->cinfo, COL_INFO)) {
- col_add_str (pinfo->cinfo, COL_INFO,
- val_to_str (opcode, fcauth_msgcode_vals, "0x%x"));
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_add_str(pinfo->cinfo, COL_INFO,
+ val_to_str(opcode, fcauth_msgcode_vals, "0x%x"));
}
if (tree) {
- ti = proto_tree_add_protocol_format (tree, proto_fcsp, tvb, 0,
- tvb_length (tvb), "FC-SP");
- fcsp_tree = proto_item_add_subtree (ti, ett_fcsp);
+ ti = proto_tree_add_protocol_format(tree, proto_fcsp, tvb, 0,
+ tvb_length(tvb), "FC-SP");
+ fcsp_tree = proto_item_add_subtree(ti, ett_fcsp);
- proto_tree_add_item (fcsp_tree, hf_auth_flags, tvb, offset+1, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (fcsp_tree, hf_auth_msg_code, tvb, offset+2, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (fcsp_tree, hf_auth_proto_ver, tvb, offset+3, 1,
- ENC_BIG_ENDIAN);
- proto_tree_add_item (fcsp_tree, hf_auth_len, tvb, offset+4, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item (fcsp_tree, hf_auth_tid, tvb, offset+8, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(fcsp_tree, hf_auth_flags, tvb, offset+1, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(fcsp_tree, hf_auth_msg_code, tvb, offset+2, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(fcsp_tree, hf_auth_proto_ver, tvb, offset+3, 1,
+ ENC_BIG_ENDIAN);
+ proto_tree_add_item(fcsp_tree, hf_auth_len, tvb, offset+4, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(fcsp_tree, hf_auth_tid, tvb, offset+8, 4, ENC_BIG_ENDIAN);
switch (opcode) {
case FC_AUTH_MSG_AUTH_REJECT:
- dissect_fcsp_auth_rjt (tvb, tree);
+ dissect_fcsp_auth_rjt(tvb, tree);
break;
case FC_AUTH_MSG_AUTH_NEGOTIATE:
- dissect_fcsp_auth_negotiate (tvb, tree);
+ dissect_fcsp_auth_negotiate(tvb, tree);
break;
case FC_AUTH_MSG_AUTH_DONE:
- dissect_fcsp_auth_done (tvb, tree);
+ dissect_fcsp_auth_done(tvb, tree);
break;
case FC_AUTH_DHCHAP_CHALLENGE:
- dissect_fcsp_dhchap_challenge (tvb, tree);
+ dissect_fcsp_dhchap_challenge(tvb, tree);
break;
case FC_AUTH_DHCHAP_REPLY:
- dissect_fcsp_dhchap_reply (tvb, tree);
+ dissect_fcsp_dhchap_reply(tvb, tree);
break;
case FC_AUTH_DHCHAP_SUCCESS:
- dissect_fcsp_dhchap_success (tvb, tree);
+ dissect_fcsp_dhchap_success(tvb, tree);
break;
case FC_AUTH_FCAP_REQUEST:
case FC_AUTH_FCAP_ACKNOWLEDGE:
@@ -442,8 +426,8 @@ static void dissect_fcsp (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case FC_AUTH_FCPAP_INIT:
case FC_AUTH_FCPAP_ACCEPT:
case FC_AUTH_FCPAP_COMPLETE:
- proto_tree_add_text (fcsp_tree, tvb, offset+12, tvb_length (tvb),
- "FCAP Decoding Not Supported");
+ proto_tree_add_text(fcsp_tree, tvb, offset+12, tvb_length(tvb),
+ "FCAP Decoding Not Supported");
break;
default:
break;
@@ -452,101 +436,159 @@ static void dissect_fcsp (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
void
-proto_register_fcsp (void)
+proto_register_fcsp(void)
{
/* Setup list of header fields See Section 1.6.1 for details*/
static hf_register_info hf[] = {
{ &hf_auth_proto_ver,
- {"Protocol Version", "fcsp.version", FT_UINT8, BASE_HEX, NULL,
- 0x0, NULL, HFILL}},
+ { "Protocol Version", "fcsp.version",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_msg_code,
- {"Message Code", "fcsp.opcode", FT_UINT8, BASE_HEX,
- VALS (fcauth_msgcode_vals), 0x0, NULL, HFILL}},
+ { "Message Code", "fcsp.opcode",
+ FT_UINT8, BASE_HEX, VALS(fcauth_msgcode_vals), 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_flags,
- {"Flags", "fcsp.flags", FT_UINT8, BASE_HEX, NULL, 0x0, NULL,
- HFILL}},
+ { "Flags", "fcsp.flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_len,
- {"Packet Length", "fcsp.len", FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL}},
+ { "Packet Length", "fcsp.len",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_tid,
- {"Transaction Identifier", "fcsp.tid", FT_UINT32, BASE_HEX, NULL,
- 0x0, NULL, HFILL}},
+ { "Transaction Identifier", "fcsp.tid",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_initiator_wwn,
- {"Initiator Name (WWN)", "fcsp.initwwn", FT_STRING, BASE_NONE, NULL,
- 0x0, NULL, HFILL}},
+ { "Initiator Name (WWN)", "fcsp.initwwn",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_initiator_name,
- {"Initiator Name (Unknown Type)", "fcsp.initname", FT_BYTES,
- BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ { "Initiator Name (Unknown Type)", "fcsp.initname",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_initiator_name_type,
- {"Initiator Name Type", "fcsp.initnametype", FT_UINT16, BASE_HEX,
- VALS (fcauth_name_type_vals), 0x0, NULL, HFILL}},
+ { "Initiator Name Type", "fcsp.initnametype",
+ FT_UINT16, BASE_HEX, VALS(fcauth_name_type_vals), 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_initiator_name_len,
- {"Initiator Name Length", "fcsp.initnamelen", FT_UINT16, BASE_DEC,
- NULL, 0x0, NULL, HFILL}},
+ { "Initiator Name Length", "fcsp.initnamelen",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_usable_proto,
- {"Number of Usable Protocols", "fcsp.usableproto", FT_UINT32,
- BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ { "Number of Usable Protocols", "fcsp.usableproto",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_rjt_code,
- {"Reason Code", "fcsp.rjtcode", FT_UINT8, BASE_DEC,
- VALS (fcauth_rjtcode_vals), 0x0, NULL, HFILL}},
+ { "Reason Code", "fcsp.rjtcode",
+ FT_UINT8, BASE_DEC, VALS(fcauth_rjtcode_vals), 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_rjt_codedet,
- {"Reason Code Explanation", "fcsp.rjtcodet", FT_UINT8, BASE_DEC,
- VALS (fcauth_rjtcode_detail_vals), 0x0, NULL, HFILL}},
+ { "Reason Code Explanation", "fcsp.rjtcodet",
+ FT_UINT8, BASE_DEC, VALS(fcauth_rjtcode_detail_vals), 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_responder_wwn,
- {"Responder Name (WWN)", "fcsp.rspwwn", FT_STRING, BASE_NONE, NULL,
- 0x0, NULL, HFILL}},
+ { "Responder Name (WWN)", "fcsp.rspwwn",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_responder_name,
- {"Responder Name (Unknown Type)", "fcsp.rspname", FT_BYTES, BASE_NONE,
- NULL, 0x0, NULL, HFILL}},
+ { "Responder Name (Unknown Type)", "fcsp.rspname",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_responder_name_type,
- {"Responder Name Type", "fcsp.rspnametype", FT_UINT16, BASE_HEX,
- VALS (fcauth_name_type_vals), 0x0, NULL, HFILL}},
+ { "Responder Name Type", "fcsp.rspnametype",
+ FT_UINT16, BASE_HEX, VALS(fcauth_name_type_vals), 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_responder_name_len,
- {"Responder Name Type", "fcsp.rspnamelen", FT_UINT16, BASE_DEC,
- NULL, 0x0, NULL, HFILL}},
+ { "Responder Name Type", "fcsp.rspnamelen",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_dhchap_hashid,
- {"Hash Identifier", "fcsp.dhchap.hashid", FT_UINT32, BASE_HEX, NULL, 0x0,
- NULL, HFILL}},
+ { "Hash Identifier", "fcsp.dhchap.hashid",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_dhchap_groupid,
- {"DH Group Identifier", "fcsp.dhchap.groupid", FT_UINT32, BASE_HEX, NULL,
- 0x0, NULL, HFILL}},
+ { "DH Group Identifier", "fcsp.dhchap.groupid",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_dhchap_chal_len,
- {"Challenge Value Length", "fcsp.dhchap.challen", FT_UINT32, BASE_DEC,
- NULL, 0x0, NULL, HFILL}},
+ { "Challenge Value Length", "fcsp.dhchap.challen",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_dhchap_val_len,
- {"DH Value Length", "fcsp.dhchap.vallen", FT_UINT32, BASE_DEC, NULL,
- 0x0, NULL, HFILL}},
+ { "DH Value Length", "fcsp.dhchap.vallen",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_dhchap_rsp_len,
- {"Response Value Length", "fcsp.dhchap.rsplen", FT_UINT32, BASE_DEC,
- NULL, 0x0, NULL, HFILL}},
+ { "Response Value Length", "fcsp.dhchap.rsplen",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_proto_type,
- {"Authentication Protocol Type", "fcsp.proto", FT_UINT32, BASE_DEC,
- VALS (fcauth_proto_type_vals), 0x0, NULL, HFILL}},
+ { "Authentication Protocol Type", "fcsp.proto",
+ FT_UINT32, BASE_DEC, VALS(fcauth_proto_type_vals), 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_proto_param_len,
- {"Protocol Parameters Length", "fcsp.protoparamlen", FT_UINT32,
- BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ { "Protocol Parameters Length", "fcsp.protoparamlen",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_dhchap_param_tag,
- {"Parameter Tag", "fcsp.dhchap.paramtype", FT_UINT16, BASE_HEX,
- VALS (fcauth_dhchap_param_vals), 0x0, NULL, HFILL}},
+ { "Parameter Tag", "fcsp.dhchap.paramtype",
+ FT_UINT16, BASE_HEX, VALS(fcauth_dhchap_param_vals), 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_dhchap_param_len,
- {"Parameter Length", "fcsp.dhchap.paramlen", FT_UINT16, BASE_DEC,
- NULL, 0x0, NULL, HFILL}},
+ { "Parameter Length", "fcsp.dhchap.paramlen",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_dhchap_hash_type,
- {"Hash Algorithm", "fcsp.dhchap.hashtype", FT_UINT32, BASE_DEC,
- VALS (fcauth_dhchap_hash_algo_vals), 0x0, NULL, HFILL}},
+ { "Hash Algorithm", "fcsp.dhchap.hashtype",
+ FT_UINT32, BASE_DEC, VALS(fcauth_dhchap_hash_algo_vals), 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_dhchap_group_type,
- {"DH Group", "fcsp.dhchap.dhgid", FT_UINT32, BASE_DEC,
- VALS (fcauth_dhchap_dhgid_vals), 0x0, NULL, HFILL}},
+ { "DH Group", "fcsp.dhchap.dhgid",
+ FT_UINT32, BASE_DEC, VALS(fcauth_dhchap_dhgid_vals), 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_dhchap_chal_value,
- {"Challenge Value", "fcsp.dhchap.chalval", FT_BYTES, BASE_NONE,
- NULL, 0x0, NULL, HFILL}},
+ { "Challenge Value", "fcsp.dhchap.chalval",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_auth_dhchap_dhvalue,
- {"DH Value", "fcsp.dhchap.dhvalue", FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL}},
- { &hf_auth_dhchap_rsp_value,
- {"Response Value", "fcsp.dhchap.rspval", FT_BYTES, BASE_NONE, NULL,
- 0x0, NULL, HFILL}},
+ { "DH Value", "fcsp.dhchap.dhvalue",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+ { &hf_auth_dhchap_rsp_value,
+ { "Response Value", "fcsp.dhchap.rspval",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
};
@@ -556,22 +598,18 @@ proto_register_fcsp (void)
};
/* Register the protocol name and description */
- proto_fcsp = proto_register_protocol ("Fibre Channel Security Protocol",
+ proto_fcsp = proto_register_protocol("Fibre Channel Security Protocol",
"FC-SP", "fcsp");
register_dissector("fcsp", dissect_fcsp, proto_fcsp);
- /* Required function calls to register the header fields and subtrees used */
+
proto_register_field_array(proto_fcsp, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
}
-/* If this dissector uses sub-dissector registration add a registration routine.
- This format is required because a script is used to find these routines and
- create the code that calls these routines.
-*/
void
-proto_reg_handoff_fcsp (void)
+proto_reg_handoff_fcsp(void)
{
- data_handle = find_dissector ("data");
+ data_handle = find_dissector("data");
}
diff --git a/epan/dissectors/packet-fcswils.c b/epan/dissectors/packet-fcswils.c
index a477241b46..4d9ad490ce 100644
--- a/epan/dissectors/packet-fcswils.c
+++ b/epan/dissectors/packet-fcswils.c
@@ -27,14 +27,6 @@
# include "config.h"
#endif
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
@@ -224,29 +216,29 @@ static gint ett_fcswils_ieinfo = -1;
static gint ett_fcswils_capinfo = -1;
static const value_string fc_swils_opcode_key_val[] = {
- {FC_SWILS_SWRJT , "SW_RJT"},
- {FC_SWILS_SWACC , "SW_ACC"},
- {FC_SWILS_ELP , "ELP"},
- {FC_SWILS_EFP , "EFP"},
- {FC_SWILS_DIA , "DIA"},
- {FC_SWILS_RDI , "RDI"},
- {FC_SWILS_HLO , "HLO"},
- {FC_SWILS_LSU , "LSU"},
- {FC_SWILS_LSA , "LSA"},
- {FC_SWILS_BF , "BF"},
- {FC_SWILS_RCF , "RCF"},
- {FC_SWILS_RSCN , "SW_RSCN"},
- {FC_SWILS_DRLIR , "DRLIR"},
- {FC_SWILS_DSCN , "DSCN"},
- {FC_SWILS_LOOPD , "LOOPD"},
- {FC_SWILS_MR , "MR"},
- {FC_SWILS_ACA , "ACA"},
- {FC_SWILS_RCA , "RCA"},
- {FC_SWILS_SFC , "SFC"},
- {FC_SWILS_UFC , "UFC"},
- {FC_SWILS_ESC , "ESC"},
- {FC_SWILS_ESS , "ESS"},
- {FC_SWILS_MRRA , "MRRA"},
+ {FC_SWILS_SWRJT , "SW_RJT"},
+ {FC_SWILS_SWACC , "SW_ACC"},
+ {FC_SWILS_ELP , "ELP"},
+ {FC_SWILS_EFP , "EFP"},
+ {FC_SWILS_DIA , "DIA"},
+ {FC_SWILS_RDI , "RDI"},
+ {FC_SWILS_HLO , "HLO"},
+ {FC_SWILS_LSU , "LSU"},
+ {FC_SWILS_LSA , "LSA"},
+ {FC_SWILS_BF , "BF"},
+ {FC_SWILS_RCF , "RCF"},
+ {FC_SWILS_RSCN , "SW_RSCN"},
+ {FC_SWILS_DRLIR , "DRLIR"},
+ {FC_SWILS_DSCN , "DSCN"},
+ {FC_SWILS_LOOPD , "LOOPD"},
+ {FC_SWILS_MR , "MR"},
+ {FC_SWILS_ACA , "ACA"},
+ {FC_SWILS_RCA , "RCA"},
+ {FC_SWILS_SFC , "SFC"},
+ {FC_SWILS_UFC , "UFC"},
+ {FC_SWILS_ESC , "ESC"},
+ {FC_SWILS_ESS , "ESS"},
+ {FC_SWILS_MRRA , "MRRA"},
{FC_SWILS_AUTH_ILS, "AUTH_ILS"},
{0, NULL},
};
@@ -265,35 +257,35 @@ static const value_string fc_swils_rjt_val [] = {
};
static const value_string fc_swils_deterr_val [] = {
- {FC_SWILS_RJT_NODET , "No Additional Details"},
- {FC_SWILS_RJT_CLSF_ERR , "Class F Svc Param Err"},
- {FC_SWILS_RJT_CLSN_ERR , "Class N Svc Param Err"},
- {FC_SWILS_RJT_INVFC_CODE , "Unknown Flow Ctrl Code"},
- {FC_SWILS_RJT_INVFC_PARM , "Invalid Flow Ctrl Parm"},
- {FC_SWILS_RJT_INV_PNAME , "Invalid Port Name"},
- {FC_SWILS_RJT_INV_SNAME , "Invalid Switch Name"},
- {FC_SWILS_RJT_TOV_MSMTCH , "R_A_/E_D_TOV Mismatch"},
- {FC_SWILS_RJT_INV_DIDLST, "Invalid Domain ID List"},
- {FC_SWILS_RJT_CMD_INPROG , "Cmd Already in Progress"},
- {FC_SWILS_RJT_OORSRC , "Insufficient Resources"},
- {FC_SWILS_RJT_NO_DID , "Domain ID Unavailable"},
- {FC_SWILS_RJT_INV_DID, "Invalid Domain ID"},
- {FC_SWILS_RJT_NO_REQ , "Request Not Supported"},
- {FC_SWILS_RJT_NOLNK_PARM , "Link Parm Not Estd."},
- {FC_SWILS_RJT_NO_REQDID , "Group of Domain IDs Unavail"},
- {FC_SWILS_RJT_EP_ISOL , "E_Port Isolated"},
+ {FC_SWILS_RJT_NODET , "No Additional Details"},
+ {FC_SWILS_RJT_CLSF_ERR , "Class F Svc Param Err"},
+ {FC_SWILS_RJT_CLSN_ERR , "Class N Svc Param Err"},
+ {FC_SWILS_RJT_INVFC_CODE, "Unknown Flow Ctrl Code"},
+ {FC_SWILS_RJT_INVFC_PARM, "Invalid Flow Ctrl Parm"},
+ {FC_SWILS_RJT_INV_PNAME , "Invalid Port Name"},
+ {FC_SWILS_RJT_INV_SNAME , "Invalid Switch Name"},
+ {FC_SWILS_RJT_TOV_MSMTCH, "R_A_/E_D_TOV Mismatch"},
+ {FC_SWILS_RJT_INV_DIDLST, "Invalid Domain ID List"},
+ {FC_SWILS_RJT_CMD_INPROG, "Cmd Already in Progress"},
+ {FC_SWILS_RJT_OORSRC , "Insufficient Resources"},
+ {FC_SWILS_RJT_NO_DID , "Domain ID Unavailable"},
+ {FC_SWILS_RJT_INV_DID , "Invalid Domain ID"},
+ {FC_SWILS_RJT_NO_REQ , "Request Not Supported"},
+ {FC_SWILS_RJT_NOLNK_PARM, "Link Parm Not Estd."},
+ {FC_SWILS_RJT_NO_REQDID , "Group of Domain IDs Unavail"},
+ {FC_SWILS_RJT_EP_ISOL , "E_Port Isolated"},
{0, NULL}
};
static const value_string fcswils_elp_fc_val[] = {
{FC_SWILS_ELP_FC_VENDOR, "Vendor Unique"},
- {FC_SWILS_ELP_FC_RRDY, "R_RDY Flow Ctrl"},
+ {FC_SWILS_ELP_FC_RRDY , "R_RDY Flow Ctrl"},
{0, NULL},
};
static const value_string fcswils_rectype_val[] = {
{FC_SWILS_LRECTYPE_DOMAIN, "Domain ID Record"},
- {FC_SWILS_LRECTYPE_MCAST, "Multicast ID Record"},
+ {FC_SWILS_LRECTYPE_MCAST , "Multicast ID Record"},
{0, NULL},
};
@@ -369,13 +361,13 @@ static const value_string fc_swils_zoneobj_type_val[] = {
};
const value_string fc_swils_zonembr_type_val[] = {
- {0, "Reserved"},
- {FC_SWILS_ZONEMBR_WWN, "WWN"},
- {FC_SWILS_ZONEMBR_DP, "Domain/Physical Port (0x00ddpppp)"},
- {FC_SWILS_ZONEMBR_FCID, "FC Address"},
- {FC_SWILS_ZONEMBR_ALIAS, "Zone Alias"},
- {FC_SWILS_ZONEMBR_WWN_LUN, "WWN+LUN"},
- {FC_SWILS_ZONEMBR_DP_LUN, "Domain/Physical Port+LUN"},
+ {0 , "Reserved"},
+ {FC_SWILS_ZONEMBR_WWN , "WWN"},
+ {FC_SWILS_ZONEMBR_DP , "Domain/Physical Port (0x00ddpppp)"},
+ {FC_SWILS_ZONEMBR_FCID , "FC Address"},
+ {FC_SWILS_ZONEMBR_ALIAS , "Zone Alias"},
+ {FC_SWILS_ZONEMBR_WWN_LUN , "WWN+LUN"},
+ {FC_SWILS_ZONEMBR_DP_LUN , "Domain/Physical Port+LUN"},
{FC_SWILS_ZONEMBR_FCID_LUN, "FCID+LUN"},
{0, NULL},
};
@@ -412,10 +404,10 @@ static const value_string fc_swils_sfc_op_val[] = {
};
typedef struct _zonename {
- guint32 namelen:8,
- rsvd:24;
- gchar *name;
- gchar *pad;
+ guint32 namelen:8,
+ rsvd:24;
+ gchar *name;
+ gchar *pad;
} zonename_t;
typedef struct _fcswils_conv_key {
@@ -437,7 +429,7 @@ typedef struct _fcswils_func_table_t {
static dissector_handle_t data_handle, fcsp_handle;
-static gint get_zoneobj_len (tvbuff_t *tvb, gint offset);
+static gint get_zoneobj_len(tvbuff_t *tvb, gint offset);
/*
* Hash Functions
@@ -452,7 +444,7 @@ fcswils_equal(gconstpointer v, gconstpointer w)
}
static guint
-fcswils_hash (gconstpointer v)
+fcswils_hash(gconstpointer v)
{
const fcswils_conv_key_t *key = v;
guint val;
@@ -469,26 +461,26 @@ static void
fcswils_init_protocol(void)
{
if (fcswils_req_hash)
- g_hash_table_destroy (fcswils_req_hash);
+ g_hash_table_destroy(fcswils_req_hash);
fcswils_req_hash = g_hash_table_new(fcswils_hash, fcswils_equal);
}
static guint8 *
-zonenm_to_str (tvbuff_t *tvb, gint offset)
+zonenm_to_str(tvbuff_t *tvb, gint offset)
{
- int len = tvb_get_guint8 (tvb, offset);
- return tvb_get_ephemeral_string (tvb, offset+4, len);
+ int len = tvb_get_guint8(tvb, offset);
+ return tvb_get_ephemeral_string(tvb, offset+4, len);
}
/* Offset points to the start of the zone object */
static gint
-get_zoneobj_len (tvbuff_t *tvb, gint offset)
+get_zoneobj_len(tvbuff_t *tvb, gint offset)
{
- gint numrec, numrec1;
+ gint numrec, numrec1;
guint8 objtype;
- gint i, j, len;
+ gint i, j, len;
/* zone object structure is:
* type (1 byte), protocol (1 byte), rsvd (2 bytes), obj name (x bytes),
@@ -499,23 +491,23 @@ get_zoneobj_len (tvbuff_t *tvb, gint offset)
* type (1 byte), rsvd (1 byte), flags (1 byte), id_len (1 byte),
* id (id_len bytes)
*/
- objtype = tvb_get_guint8 (tvb, offset);
- len = 4 + ZONENAME_LEN (tvb, offset+4); /* length upto num_of_mbrs field */
- numrec = tvb_get_ntohl (tvb, offset+len); /* gets us num of zone mbrs */
+ objtype = tvb_get_guint8(tvb, offset);
+ len = 4 + ZONENAME_LEN(tvb, offset+4); /* length upto num_of_mbrs field */
+ numrec = tvb_get_ntohl(tvb, offset+len); /* gets us num of zone mbrs */
len += 4; /* + num_mbrs */
for (i = 0; i < numrec; i++) {
if (objtype == FC_SWILS_ZONEOBJ_ZONESET) {
- len += 4 + ZONENAME_LEN (tvb, offset+4+len); /* length upto num_of_mbrs field */
- numrec1 = tvb_get_ntohl (tvb, offset+len);
+ len += 4 + ZONENAME_LEN(tvb, offset+4+len); /* length upto num_of_mbrs field */
+ numrec1 = tvb_get_ntohl(tvb, offset+len);
len += 4;
for (j = 0; j < numrec1; j++) {
- len += 4 + tvb_get_guint8 (tvb, offset+3+len);
+ len += 4 + tvb_get_guint8(tvb, offset+3+len);
}
}
else {
- len += 4 + tvb_get_guint8 (tvb, offset+3+len);
+ len += 4 + tvb_get_guint8(tvb, offset+3+len);
}
}
@@ -524,31 +516,31 @@ get_zoneobj_len (tvbuff_t *tvb, gint offset)
#define MAX_INTERCONNECT_ELEMENT_INFO_LEN 252
static int
-dissect_swils_interconnect_element_info (tvbuff_t *tvb, proto_tree *tree, int offset)
+dissect_swils_interconnect_element_info(tvbuff_t *tvb, proto_tree *tree, int offset)
{
int len, max_len = MAX_INTERCONNECT_ELEMENT_INFO_LEN;
if (tree) {
- proto_tree_add_item (tree, hf_swils_interconnect_list_len, tvb, offset+3, 1, ENC_BIG_ENDIAN);
- len = tvb_strsize (tvb, offset+4);
- proto_tree_add_item (tree, hf_swils_ess_vendorname, tvb, offset+4, len, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(tree, hf_swils_interconnect_list_len, tvb, offset+3, 1, ENC_BIG_ENDIAN);
+ len = tvb_strsize(tvb, offset+4);
+ proto_tree_add_item(tree, hf_swils_ess_vendorname, tvb, offset+4, len, ENC_ASCII|ENC_NA);
offset += (4 + len);
max_len -= len;
- len = tvb_strsize (tvb, offset);
- proto_tree_add_item (tree, hf_swils_ess_modelname, tvb, offset, len, ENC_ASCII|ENC_NA);
+ len = tvb_strsize(tvb, offset);
+ proto_tree_add_item(tree, hf_swils_ess_modelname, tvb, offset, len, ENC_ASCII|ENC_NA);
offset += len;
max_len -= len;
- len = tvb_strsize (tvb, offset);
- proto_tree_add_item (tree, hf_swils_ess_relcode, tvb, offset, len, ENC_ASCII|ENC_NA);
+ len = tvb_strsize(tvb, offset);
+ proto_tree_add_item(tree, hf_swils_ess_relcode, tvb, offset, len, ENC_ASCII|ENC_NA);
offset += len;
max_len -= len;
while (max_len > 0) {
/* Vendor specific field is a set of one or more null-terminated
* strings
*/
- len = tvb_strsize (tvb, offset);
- proto_tree_add_item (tree, hf_swils_ess_vendorspecific, tvb, offset, len, ENC_ASCII|ENC_NA);
+ len = tvb_strsize(tvb, offset);
+ proto_tree_add_item(tree, hf_swils_ess_vendorspecific, tvb, offset, len, ENC_ASCII|ENC_NA);
offset += len;
max_len -= len;
}
@@ -558,58 +550,58 @@ dissect_swils_interconnect_element_info (tvbuff_t *tvb, proto_tree *tree, int of
}
static void
-dissect_swils_ess_capability (tvbuff_t *tvb, proto_tree *tree, int offset,
- guint8 srvr_type)
+dissect_swils_ess_capability(tvbuff_t *tvb, proto_tree *tree, int offset,
+ guint8 srvr_type)
{
if (tree) {
switch (srvr_type) {
case FCCT_GSRVR_DNS:
- proto_tree_add_item (tree, hf_swils_ess_dns_zlacc, tvb, offset+3,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_swils_ess_dns_obj3h, tvb, offset+3,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_swils_ess_dns_obj2h, tvb, offset+3,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_swils_ess_dns_obj1h, tvb, offset+3,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_swils_ess_dns_obj0h, tvb, offset+3,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_swils_ess_dns_vendor, tvb,
- offset+4, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_ess_dns_zlacc, tvb, offset+3,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_ess_dns_obj3h, tvb, offset+3,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_ess_dns_obj2h, tvb, offset+3,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_ess_dns_obj1h, tvb, offset+3,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_ess_dns_obj0h, tvb, offset+3,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_ess_dns_vendor, tvb,
+ offset+4, 4, ENC_BIG_ENDIAN);
break;
case FCCT_GSRVR_FCTLR:
- proto_tree_add_item (tree, hf_swils_ess_fctlr_rscn, tvb,
- offset+3, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_swils_ess_fctlr_vendor, tvb,
- offset+4, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_ess_fctlr_rscn, tvb,
+ offset+3, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_ess_fctlr_vendor, tvb,
+ offset+4, 4, ENC_BIG_ENDIAN);
break;
case FCCT_GSRVR_FCS:
- proto_tree_add_item (tree, hf_swils_ess_fcs_basic, tvb,
- offset+3, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_swils_ess_fcs_platform, tvb,
- offset+3, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_swils_ess_fcs_topology, tvb,
- offset+3, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_swils_ess_fcs_enhanced, tvb,
- offset+3, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_ess_fcs_basic, tvb,
+ offset+3, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_ess_fcs_platform, tvb,
+ offset+3, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_ess_fcs_topology, tvb,
+ offset+3, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_ess_fcs_enhanced, tvb,
+ offset+3, 1, ENC_BIG_ENDIAN);
break;
case FCCT_GSRVR_FZS:
- proto_tree_add_item (tree, hf_swils_ess_fzs_enh_supp, tvb,
- offset+3, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_swils_ess_fzs_enh_ena, tvb,
- offset+3, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_swils_ess_fzs_mr, tvb, offset+3,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_swils_ess_fzs_defzone, tvb,
- offset+3, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_swils_ess_fzs_zsdb_supp, tvb,
- offset+3, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_swils_ess_fzs_zsdb_ena, tvb,
- offset+3, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_swils_ess_fzs_adc_supp, tvb,
- offset+3, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_swils_ess_fzs_hardzone, tvb,
- offset+3, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_ess_fzs_enh_supp, tvb,
+ offset+3, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_ess_fzs_enh_ena, tvb,
+ offset+3, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_ess_fzs_mr, tvb, offset+3,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_ess_fzs_defzone, tvb,
+ offset+3, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_ess_fzs_zsdb_supp, tvb,
+ offset+3, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_ess_fzs_zsdb_ena, tvb,
+ offset+3, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_ess_fzs_adc_supp, tvb,
+ offset+3, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_ess_fzs_hardzone, tvb,
+ offset+3, 1, ENC_BIG_ENDIAN);
break;
default:
break;
@@ -620,11 +612,11 @@ dissect_swils_ess_capability (tvbuff_t *tvb, proto_tree *tree, int offset,
}
static int
-dissect_swils_ess_capability_obj (tvbuff_t *tvb, proto_tree *tree, int offset)
+dissect_swils_ess_capability_obj(tvbuff_t *tvb, proto_tree *tree, int offset)
{
- int i = 0, num_entries = 0, len = 0, total_len = 0;
- guint8 type, subtype, srvr_type;
- proto_item *ti = NULL;
+ int i = 0, num_entries = 0, len = 0, total_len = 0;
+ guint8 type, subtype, srvr_type;
+ proto_item *ti = NULL;
proto_tree *capinfo_tree = NULL;
if (tree) {
@@ -633,42 +625,42 @@ dissect_swils_ess_capability_obj (tvbuff_t *tvb, proto_tree *tree, int offset)
* rsvd (1), num_cap_entries (1), entry_1 (8) ... entry_n (8)
*/
/* Compute length first to create subtree of cap object */
- type = tvb_get_guint8 (tvb, offset);
+ type = tvb_get_guint8(tvb, offset);
if (type != FCCT_GSTYPE_VENDOR) {
- num_entries = tvb_get_guint8 (tvb, offset+3);
+ num_entries = tvb_get_guint8(tvb, offset+3);
total_len = 4 + (num_entries*8);
- ti = proto_tree_add_text (tree, tvb, offset,
- total_len, "Capability Object (%s)",
- val_to_str (type, fc_ct_gstype_vals,
- "Unknown (0x%x)"));
- capinfo_tree = proto_item_add_subtree (ti, ett_fcswils_capinfo);
+ ti = proto_tree_add_text(tree, tvb, offset,
+ total_len, "Capability Object (%s)",
+ val_to_str(type, fc_ct_gstype_vals,
+ "Unknown (0x%x)"));
+ capinfo_tree = proto_item_add_subtree(ti, ett_fcswils_capinfo);
} else {
- i = tvb_get_guint8 (tvb, offset+3);
+ i = tvb_get_guint8(tvb, offset+3);
i += 12;
- ti = proto_tree_add_text (tree, tvb, offset,
- i, "Capability Object (Vendor-specific 0x%x)",
- type);
- capinfo_tree = proto_item_add_subtree (ti, ett_fcswils_capinfo);
+ ti = proto_tree_add_text(tree, tvb, offset,
+ i, "Capability Object (Vendor-specific 0x%x)",
+ type);
+ capinfo_tree = proto_item_add_subtree(ti, ett_fcswils_capinfo);
}
- proto_tree_add_item (capinfo_tree, hf_swils_ess_cap_type, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (capinfo_tree, hf_swils_ess_cap_subtype, tvb, offset+1,
- 1, ENC_BIG_ENDIAN);
- subtype = tvb_get_guint8 (tvb, offset+1);
+ proto_tree_add_item(capinfo_tree, hf_swils_ess_cap_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(capinfo_tree, hf_swils_ess_cap_subtype, tvb, offset+1,
+ 1, ENC_BIG_ENDIAN);
+ subtype = tvb_get_guint8(tvb, offset+1);
if (type != FCCT_GSTYPE_VENDOR) {
- srvr_type = get_gs_server (type, subtype);
- proto_tree_add_uint (capinfo_tree, hf_swils_ess_cap_svc, tvb, offset, 2,
- srvr_type);
- proto_tree_add_item (capinfo_tree, hf_swils_ess_cap_numentries, tvb,
- offset+3, 1, ENC_BIG_ENDIAN);
+ srvr_type = get_gs_server(type, subtype);
+ proto_tree_add_uint(capinfo_tree, hf_swils_ess_cap_svc, tvb, offset, 2,
+ srvr_type);
+ proto_tree_add_item(capinfo_tree, hf_swils_ess_cap_numentries, tvb,
+ offset+3, 1, ENC_BIG_ENDIAN);
offset += 4;
len += 4;
- while ((num_entries > 0) && tvb_bytes_exist (tvb, offset, 8)) {
- dissect_swils_ess_capability (tvb, capinfo_tree, offset, srvr_type);
+ while ((num_entries > 0) && tvb_bytes_exist(tvb, offset, 8)) {
+ dissect_swils_ess_capability(tvb, capinfo_tree, offset, srvr_type);
num_entries--;
offset += 8;
len += 8;
@@ -677,17 +669,17 @@ dissect_swils_ess_capability_obj (tvbuff_t *tvb, proto_tree *tree, int offset)
/* Those damn T11 guys defined another format for
* Vendor-specific objects.
*/
- proto_tree_add_item (capinfo_tree, hf_swils_ess_cap_len, tvb, offset+3,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (capinfo_tree, hf_swils_ess_cap_t10, tvb, offset+4,
- 8, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(capinfo_tree, hf_swils_ess_cap_len, tvb, offset+3,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(capinfo_tree, hf_swils_ess_cap_t10, tvb, offset+4,
+ 8, ENC_ASCII|ENC_NA);
i -= 8; /* reduce length by t10 object size */
offset += 12;
len += 12;
- while ((i > 0) && tvb_bytes_exist (tvb, offset, 8)) {
- proto_tree_add_item (capinfo_tree, hf_swils_ess_cap_vendorobj,
- tvb, offset, 8, ENC_NA);
+ while ((i > 0) && tvb_bytes_exist(tvb, offset, 8)) {
+ proto_tree_add_item(capinfo_tree, hf_swils_ess_cap_vendorobj,
+ tvb, offset, 8, ENC_NA);
i -= 8;
offset += 8;
len += 12;
@@ -698,47 +690,47 @@ dissect_swils_ess_capability_obj (tvbuff_t *tvb, proto_tree *tree, int offset)
}
static void
-dissect_swils_nullpayload (tvbuff_t *tvb _U_, proto_tree *tree _U_,
- guint8 isreq _U_)
+dissect_swils_nullpayload(tvbuff_t *tvb _U_, proto_tree *tree _U_,
+ guint8 isreq _U_)
{
/* Common dissector for those ILSs without a payload */
return;
}
static void
-dissect_swils_elp (tvbuff_t *tvb, proto_tree *elp_tree, guint8 isreq _U_)
+dissect_swils_elp(tvbuff_t *tvb, proto_tree *elp_tree, guint8 isreq _U_)
{
/* Set up structures needed to add the protocol subtree and manage it */
- int offset = 0;
+ int offset = 0;
const gchar *flags;
- fcswils_elp elp;
+ fcswils_elp elp;
/* Response i.e. SW_ACC for an ELP has the same format as the request */
/* We skip the initial 4 bytes as we don't care about the opcode */
- tvb_memcpy (tvb, (guint8 *)&elp, 4, FC_SWILS_ELP_SIZE);
+ tvb_memcpy(tvb, (guint8 *)&elp, 4, FC_SWILS_ELP_SIZE);
- elp.r_a_tov = g_ntohl (elp.r_a_tov);
- elp.e_d_tov = g_ntohl (elp.e_d_tov);
- elp.isl_flwctrl_mode = g_ntohs (elp.isl_flwctrl_mode);
- elp.flw_ctrl_parmlen = g_ntohs (elp.flw_ctrl_parmlen);
+ elp.r_a_tov = g_ntohl(elp.r_a_tov);
+ elp.e_d_tov = g_ntohl(elp.e_d_tov);
+ elp.isl_flwctrl_mode = g_ntohs(elp.isl_flwctrl_mode);
+ elp.flw_ctrl_parmlen = g_ntohs(elp.flw_ctrl_parmlen);
if (elp_tree) {
offset += 4;
- proto_tree_add_item (elp_tree, hf_swils_elp_rev, tvb, offset++, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (elp_tree, hf_swils_elp_flags, tvb, offset, 2, ENC_NA);
+ proto_tree_add_item(elp_tree, hf_swils_elp_rev, tvb, offset++, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(elp_tree, hf_swils_elp_flags, tvb, offset, 2, ENC_NA);
offset += 3;
- proto_tree_add_uint_format (elp_tree, hf_swils_elp_r_a_tov, tvb, offset, 4,
- elp.r_a_tov, "R_A_TOV: %d msecs", elp.r_a_tov);
+ proto_tree_add_uint_format(elp_tree, hf_swils_elp_r_a_tov, tvb, offset, 4,
+ elp.r_a_tov, "R_A_TOV: %d msecs", elp.r_a_tov);
offset += 4;
- proto_tree_add_uint_format (elp_tree, hf_swils_elp_e_d_tov, tvb, offset, 4,
- elp.e_d_tov, "E_D_TOV: %d msecs", elp.e_d_tov);
+ proto_tree_add_uint_format(elp_tree, hf_swils_elp_e_d_tov, tvb, offset, 4,
+ elp.e_d_tov, "E_D_TOV: %d msecs", elp.e_d_tov);
offset += 4;
- proto_tree_add_string (elp_tree, hf_swils_elp_req_epn, tvb, offset, 8,
- fcwwn_to_str (elp.req_epname));
+ proto_tree_add_string(elp_tree, hf_swils_elp_req_epn, tvb, offset, 8,
+ fcwwn_to_str(elp.req_epname));
offset += 8;
- proto_tree_add_string (elp_tree, hf_swils_elp_req_esn, tvb, offset, 8,
- fcwwn_to_str (elp.req_sname));
+ proto_tree_add_string(elp_tree, hf_swils_elp_req_esn, tvb, offset, 8,
+ fcwwn_to_str(elp.req_sname));
offset += 8;
if (elp.clsf_svcparm[0] & 0x80) {
@@ -750,17 +742,17 @@ dissect_swils_elp (tvbuff_t *tvb, proto_tree *elp_tree, guint8 isreq _U_)
} else {
flags="Class F Invld";
}
- proto_tree_add_bytes_format (elp_tree, hf_swils_elp_clsf_svcp, tvb, offset, 6,
- &elp.clsf_svcparm[0], "Class F Svc Parameters: (%s)", flags);
+ proto_tree_add_bytes_format(elp_tree, hf_swils_elp_clsf_svcp, tvb, offset, 6,
+ &elp.clsf_svcparm[0], "Class F Svc Parameters: (%s)", flags);
offset += 6;
- proto_tree_add_item (elp_tree, hf_swils_elp_clsf_rcvsz, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(elp_tree, hf_swils_elp_clsf_rcvsz, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
- proto_tree_add_item (elp_tree, hf_swils_elp_clsf_conseq, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(elp_tree, hf_swils_elp_clsf_conseq, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
- proto_tree_add_item (elp_tree, hf_swils_elp_clsf_e2e, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(elp_tree, hf_swils_elp_clsf_e2e, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
- proto_tree_add_item (elp_tree, hf_swils_elp_clsf_openseq, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(elp_tree, hf_swils_elp_clsf_openseq, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 4;
if (elp.cls1_svcparm[0] & 0x80) {
@@ -771,19 +763,19 @@ dissect_swils_elp (tvbuff_t *tvb, proto_tree *elp_tree, guint8 isreq _U_)
flagsbuf=ep_alloc(MAX_FLAGS_LEN);
stroff = 0;
- returned_length = g_snprintf (flagsbuf+stroff, MAX_FLAGS_LEN-stroff,
- "Class 1 Valid");
+ returned_length = g_snprintf(flagsbuf+stroff, MAX_FLAGS_LEN-stroff,
+ "Class 1 Valid");
stroff += MIN(returned_length, MAX_FLAGS_LEN-stroff);
if (elp.cls1_svcparm[0] & 0x40) {
- returned_length = g_snprintf (flagsbuf+stroff, MAX_FLAGS_LEN-stroff, " | IMX");
+ returned_length = g_snprintf(flagsbuf+stroff, MAX_FLAGS_LEN-stroff, " | IMX");
stroff += MIN(returned_length, MAX_FLAGS_LEN-stroff);
}
if (elp.cls1_svcparm[0] & 0x20) {
- returned_length = g_snprintf (flagsbuf+stroff, MAX_FLAGS_LEN-stroff, " | IPS");
+ returned_length = g_snprintf(flagsbuf+stroff, MAX_FLAGS_LEN-stroff, " | IPS");
stroff += MIN(returned_length, MAX_FLAGS_LEN-stroff);
}
if (elp.cls1_svcparm[0] & 0x10) {
- returned_length = g_snprintf (flagsbuf+stroff, MAX_FLAGS_LEN-stroff, " | LKS");
+ returned_length = g_snprintf(flagsbuf+stroff, MAX_FLAGS_LEN-stroff, " | LKS");
}
flags=flagsbuf;
}
@@ -791,11 +783,11 @@ dissect_swils_elp (tvbuff_t *tvb, proto_tree *elp_tree, guint8 isreq _U_)
flags="Class 1 Invalid";
}
- proto_tree_add_bytes_format (elp_tree, hf_swils_elp_cls1_svcp, tvb, offset, 2,
- NULL, "Class 1 Svc Parameters: (%s)", flags);
+ proto_tree_add_bytes_format(elp_tree, hf_swils_elp_cls1_svcp, tvb, offset, 2,
+ NULL, "Class 1 Svc Parameters: (%s)", flags);
offset += 2;
if (elp.cls1_svcparm[0] & 0x80) {
- proto_tree_add_item (elp_tree, hf_swils_elp_cls1_rcvsz, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(elp_tree, hf_swils_elp_cls1_rcvsz, tvb, offset, 2, ENC_BIG_ENDIAN);
}
offset += 2;
@@ -811,13 +803,13 @@ dissect_swils_elp (tvbuff_t *tvb, proto_tree *elp_tree, guint8 isreq _U_)
flags="Class 2 Invld";
}
- proto_tree_add_bytes_format (elp_tree, hf_swils_elp_cls2_svcp, tvb, offset, 2,
- &elp.cls2_svcparm[0],
- "Class 2 Svc Parameters: (%s)", flags);
+ proto_tree_add_bytes_format(elp_tree, hf_swils_elp_cls2_svcp, tvb, offset, 2,
+ &elp.cls2_svcparm[0],
+ "Class 2 Svc Parameters: (%s)", flags);
offset += 2;
if (elp.cls2_svcparm[0] & 0x80) {
- proto_tree_add_item (elp_tree, hf_swils_elp_cls2_rcvsz, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(elp_tree, hf_swils_elp_cls2_rcvsz, tvb, offset, 2, ENC_BIG_ENDIAN);
}
offset += 2;
@@ -832,100 +824,100 @@ dissect_swils_elp (tvbuff_t *tvb, proto_tree *elp_tree, guint8 isreq _U_)
else {
flags="Class 3 Invld";
}
- proto_tree_add_bytes_format (elp_tree, hf_swils_elp_cls3_svcp, tvb, offset, 2,
- &elp.cls3_svcparm[0],
- "Class 3 Svc Parameters: (%s)", flags);
+ proto_tree_add_bytes_format(elp_tree, hf_swils_elp_cls3_svcp, tvb, offset, 2,
+ &elp.cls3_svcparm[0],
+ "Class 3 Svc Parameters: (%s)", flags);
offset += 2;
if (elp.cls3_svcparm[0] & 0x80) {
- proto_tree_add_item (elp_tree, hf_swils_elp_cls3_rcvsz, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(elp_tree, hf_swils_elp_cls3_rcvsz, tvb, offset, 2, ENC_BIG_ENDIAN);
}
offset += 22;
- proto_tree_add_string (elp_tree, hf_swils_elp_isl_fc_mode, tvb, offset, 2,
- val_to_str (elp.isl_flwctrl_mode, fcswils_elp_fc_val, "Vendor Unique"));
+ proto_tree_add_string(elp_tree, hf_swils_elp_isl_fc_mode, tvb, offset, 2,
+ val_to_str(elp.isl_flwctrl_mode, fcswils_elp_fc_val, "Vendor Unique"));
offset += 2;
- proto_tree_add_item (elp_tree, hf_swils_elp_fcplen, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(elp_tree, hf_swils_elp_fcplen, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
- proto_tree_add_item (elp_tree, hf_swils_elp_b2bcredit, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(elp_tree, hf_swils_elp_b2bcredit, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
- proto_tree_add_item (elp_tree, hf_swils_elp_compat1, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(elp_tree, hf_swils_elp_compat1, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
- proto_tree_add_item (elp_tree, hf_swils_elp_compat2, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(elp_tree, hf_swils_elp_compat2, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
- proto_tree_add_item (elp_tree, hf_swils_elp_compat3, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(elp_tree, hf_swils_elp_compat3, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
- proto_tree_add_item (elp_tree, hf_swils_elp_compat4, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(elp_tree, hf_swils_elp_compat4, tvb, offset, 4, ENC_BIG_ENDIAN);
}
}
static void
-dissect_swils_efp (tvbuff_t *tvb, proto_tree *efp_tree, guint8 isreq _U_)
+dissect_swils_efp(tvbuff_t *tvb, proto_tree *efp_tree, guint8 isreq _U_)
{
/* Set up structures needed to add the protocol subtree and manage it */
- proto_item *subti;
- proto_tree *lrec_tree;
- int num_listrec = 0,
- offset = 0;
- fcswils_efp efp;
- guint8 rec_type;
+ proto_item *subti;
+ proto_tree *lrec_tree;
+ int num_listrec = 0;
+ int offset = 0;
+ fcswils_efp efp;
+ guint8 rec_type;
offset += 1;
- efp.reclen = tvb_get_guint8 (tvb, offset);
+ efp.reclen = tvb_get_guint8(tvb, offset);
if (efp_tree)
- proto_tree_add_uint (efp_tree, hf_swils_efp_record_len, tvb, offset, 1, efp.reclen);
+ proto_tree_add_uint(efp_tree, hf_swils_efp_record_len, tvb, offset, 1, efp.reclen);
offset += 1;
- efp.payload_len = tvb_get_ntohs (tvb, offset);
+ efp.payload_len = tvb_get_ntohs(tvb, offset);
if (efp.payload_len < FC_SWILS_EFP_SIZE) {
if (efp_tree)
- proto_tree_add_uint_format (efp_tree, hf_swils_efp_payload_len,
- tvb, offset, 2, efp.payload_len,
- "Payload Len: %u (bogus, must be >= %u)",
- efp.payload_len, FC_SWILS_EFP_SIZE);
+ proto_tree_add_uint_format(efp_tree, hf_swils_efp_payload_len,
+ tvb, offset, 2, efp.payload_len,
+ "Payload Len: %u (bogus, must be >= %u)",
+ efp.payload_len, FC_SWILS_EFP_SIZE);
return;
}
if (efp_tree)
- proto_tree_add_item (efp_tree, hf_swils_efp_payload_len, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(efp_tree, hf_swils_efp_payload_len, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 5; /* skip 3 reserved bytes, too */
if (efp_tree)
- proto_tree_add_item (efp_tree, hf_swils_efp_pswitch_pri, tvb,
- offset, 1, ENC_BIG_ENDIAN);
- offset++;
- tvb_memcpy (tvb, efp.pswitch_name, offset, 8);
+ proto_tree_add_item(efp_tree, hf_swils_efp_pswitch_pri, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ tvb_memcpy(tvb, efp.pswitch_name, offset, 8);
if (efp_tree)
- proto_tree_add_string (efp_tree, hf_swils_efp_pswitch_name, tvb, offset,
- 8, fcwwn_to_str (efp.pswitch_name));
+ proto_tree_add_string(efp_tree, hf_swils_efp_pswitch_name, tvb, offset,
+ 8, fcwwn_to_str(efp.pswitch_name));
offset += 8;
/* Add List Records now */
if (efp_tree) {
if (efp.reclen == 0) {
- proto_tree_add_text (efp_tree, tvb, 0, 0, "Record length is zero");
+ proto_tree_add_text(efp_tree, tvb, 0, 0, "Record length is zero");
return;
}
num_listrec = (efp.payload_len - FC_SWILS_EFP_SIZE)/efp.reclen;
while (num_listrec-- > 0) {
- rec_type = tvb_get_guint8 (tvb, offset);
- subti = proto_tree_add_text (efp_tree, tvb, offset, -1,
- "%s",
- val_to_str(rec_type,
- fcswils_rectype_val,
- "Unknown record type (0x%02x)"));
- lrec_tree = proto_item_add_subtree (subti, ett_fcswils_efplist);
- proto_tree_add_uint (lrec_tree, hf_swils_efp_rec_type, tvb, offset, 1,
- rec_type);
+ rec_type = tvb_get_guint8(tvb, offset);
+ subti = proto_tree_add_text(efp_tree, tvb, offset, -1,
+ "%s",
+ val_to_str(rec_type,
+ fcswils_rectype_val,
+ "Unknown record type (0x%02x)"));
+ lrec_tree = proto_item_add_subtree(subti, ett_fcswils_efplist);
+ proto_tree_add_uint(lrec_tree, hf_swils_efp_rec_type, tvb, offset, 1,
+ rec_type);
switch (rec_type) {
case FC_SWILS_LRECTYPE_DOMAIN:
- proto_tree_add_item (lrec_tree, hf_swils_efp_dom_id, tvb, offset+1, 1, ENC_BIG_ENDIAN);
- proto_tree_add_string (lrec_tree, hf_swils_efp_switch_name, tvb, offset+8, 8,
- tvb_fcwwn_to_str (tvb, offset+8));
+ proto_tree_add_item(lrec_tree, hf_swils_efp_dom_id, tvb, offset+1, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_string(lrec_tree, hf_swils_efp_switch_name, tvb, offset+8, 8,
+ tvb_fcwwn_to_str(tvb, offset+8));
break;
case FC_SWILS_LRECTYPE_MCAST:
- proto_tree_add_item (lrec_tree, hf_swils_efp_mcast_grpno, tvb, offset+1, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(lrec_tree, hf_swils_efp_mcast_grpno, tvb, offset+1, 1, ENC_BIG_ENDIAN);
break;
}
offset += efp.reclen;
@@ -934,30 +926,30 @@ dissect_swils_efp (tvbuff_t *tvb, proto_tree *efp_tree, guint8 isreq _U_)
}
static void
-dissect_swils_dia (tvbuff_t *tvb, proto_tree *dia_tree, guint8 isreq _U_)
+dissect_swils_dia(tvbuff_t *tvb, proto_tree *dia_tree, guint8 isreq _U_)
{
/* Set up structures needed to add the protocol subtree and manage it */
int offset = 0;
if (dia_tree) {
- proto_tree_add_string (dia_tree, hf_swils_dia_switch_name, tvb, offset+4,
- 8, tvb_fcwwn_to_str (tvb, offset+4));
+ proto_tree_add_string(dia_tree, hf_swils_dia_switch_name, tvb, offset+4,
+ 8, tvb_fcwwn_to_str(tvb, offset+4));
}
}
static void
-dissect_swils_rdi (tvbuff_t *tvb, proto_tree *rdi_tree, guint8 isreq)
+dissect_swils_rdi(tvbuff_t *tvb, proto_tree *rdi_tree, guint8 isreq)
{
/* Set up structures needed to add the protocol subtree and manage it */
int offset = 0;
int i, plen, numrec;
if (rdi_tree) {
- plen = tvb_get_ntohs (tvb, offset+2);
+ plen = tvb_get_ntohs(tvb, offset+2);
- proto_tree_add_item (rdi_tree, hf_swils_rdi_payload_len, tvb, offset+2, 2, ENC_BIG_ENDIAN);
- proto_tree_add_string (rdi_tree, hf_swils_rdi_req_sname, tvb, offset+4,
- 8, tvb_fcwwn_to_str (tvb, offset+4));
+ proto_tree_add_item(rdi_tree, hf_swils_rdi_payload_len, tvb, offset+2, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_string(rdi_tree, hf_swils_rdi_req_sname, tvb, offset+4,
+ 8, tvb_fcwwn_to_str(tvb, offset+4));
/* 12 is the length of the initial header and 4 is the size of each
* domain request record.
@@ -966,14 +958,14 @@ dissect_swils_rdi (tvbuff_t *tvb, proto_tree *rdi_tree, guint8 isreq)
offset = 12;
for (i = 0; i < numrec; i++) {
if (isreq) {
- proto_tree_add_text (rdi_tree, tvb, offset+3, 1,
- "Requested Domain ID: %d",
- tvb_get_guint8 (tvb, offset+3));
+ proto_tree_add_text(rdi_tree, tvb, offset+3, 1,
+ "Requested Domain ID: %d",
+ tvb_get_guint8(tvb, offset+3));
}
else {
- proto_tree_add_text (rdi_tree, tvb, offset+3, 1,
- "Granted Domain ID: %d",
- tvb_get_guint8 (tvb, offset+3));
+ proto_tree_add_text(rdi_tree, tvb, offset+3, 1,
+ "Granted Domain ID: %d",
+ tvb_get_guint8(tvb, offset+3));
}
offset += 4;
}
@@ -981,90 +973,90 @@ dissect_swils_rdi (tvbuff_t *tvb, proto_tree *rdi_tree, guint8 isreq)
}
static void
-dissect_swils_fspf_hdr (tvbuff_t *tvb, proto_tree *tree, int offset)
+dissect_swils_fspf_hdr(tvbuff_t *tvb, proto_tree *tree, int offset)
{
proto_item *subti;
proto_tree *fspfh_tree;
if (tree) {
/* 20 is the size of FSPF header */
- subti = proto_tree_add_text (tree, tvb, offset, 20, "FSPF Header");
- fspfh_tree = proto_item_add_subtree (subti, ett_fcswils_fspfhdr);
-
- proto_tree_add_item (fspfh_tree, hf_swils_fspfh_rev, tvb, offset+4,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (fspfh_tree, hf_swils_fspfh_ar_num, tvb,
- offset+5, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (fspfh_tree, hf_swils_fspfh_auth_type, tvb,
- offset+6, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (fspfh_tree, hf_swils_fspfh_dom_id, tvb, offset+11,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (fspfh_tree, hf_swils_fspfh_auth, tvb, offset+12,
- 8, ENC_NA);
+ subti = proto_tree_add_text(tree, tvb, offset, 20, "FSPF Header");
+ fspfh_tree = proto_item_add_subtree(subti, ett_fcswils_fspfhdr);
+
+ proto_tree_add_item(fspfh_tree, hf_swils_fspfh_rev, tvb, offset+4,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(fspfh_tree, hf_swils_fspfh_ar_num, tvb,
+ offset+5, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(fspfh_tree, hf_swils_fspfh_auth_type, tvb,
+ offset+6, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(fspfh_tree, hf_swils_fspfh_dom_id, tvb, offset+11,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(fspfh_tree, hf_swils_fspfh_auth, tvb, offset+12,
+ 8, ENC_NA);
}
}
static void
-dissect_swils_fspf_lsrechdr (tvbuff_t *tvb, proto_tree *tree, int offset)
+dissect_swils_fspf_lsrechdr(tvbuff_t *tvb, proto_tree *tree, int offset)
{
- proto_tree_add_item (tree, hf_swils_lsrh_lsr_type, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_text (tree, tvb, offset+2, 2, "LSR Age: %d secs",
- tvb_get_ntohs (tvb, offset+2));
- proto_tree_add_text (tree, tvb, offset+4, 4, "Options : 0x%x",
- tvb_get_ntohl (tvb, offset+4));
- proto_tree_add_item (tree, hf_swils_lsrh_lsid, tvb, offset+11, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_swils_lsrh_adv_domid, tvb, offset+15, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_swils_lsrh_ls_incid, tvb, offset+16, 4, ENC_BIG_ENDIAN);
- proto_tree_add_text (tree, tvb, offset+20, 2, "Checksum: 0x%x",
- tvb_get_ntohs (tvb, offset+20));
- proto_tree_add_text (tree, tvb, offset+22, 2, "LSR Length: %d",
- tvb_get_ntohs (tvb, offset+22));
+ proto_tree_add_item(tree, hf_swils_lsrh_lsr_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_text(tree, tvb, offset+2, 2, "LSR Age: %d secs",
+ tvb_get_ntohs(tvb, offset+2));
+ proto_tree_add_text(tree, tvb, offset+4, 4, "Options : 0x%x",
+ tvb_get_ntohl(tvb, offset+4));
+ proto_tree_add_item(tree, hf_swils_lsrh_lsid, tvb, offset+11, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_lsrh_adv_domid, tvb, offset+15, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_lsrh_ls_incid, tvb, offset+16, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_text(tree, tvb, offset+20, 2, "Checksum: 0x%x",
+ tvb_get_ntohs(tvb, offset+20));
+ proto_tree_add_text(tree, tvb, offset+22, 2, "LSR Length: %d",
+ tvb_get_ntohs(tvb, offset+22));
}
static void
-dissect_swils_fspf_ldrec (tvbuff_t *tvb, proto_tree *tree, int offset)
+dissect_swils_fspf_ldrec(tvbuff_t *tvb, proto_tree *tree, int offset)
{
- proto_tree_add_string (tree, hf_swils_ldrec_linkid, tvb, offset, 4,
- tvb_fc_to_str (tvb, offset+1));
- proto_tree_add_item (tree, hf_swils_ldrec_out_pidx, tvb, offset+5, 3, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_swils_ldrec_nbr_pidx, tvb, offset+9, 3, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_swils_ldrec_link_type, tvb, offset+12, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_swils_ldrec_link_cost, tvb, offset+14, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_string(tree, hf_swils_ldrec_linkid, tvb, offset, 4,
+ tvb_fc_to_str(tvb, offset+1));
+ proto_tree_add_item(tree, hf_swils_ldrec_out_pidx, tvb, offset+5, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_ldrec_nbr_pidx, tvb, offset+9, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_ldrec_link_type, tvb, offset+12, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_ldrec_link_cost, tvb, offset+14, 2, ENC_BIG_ENDIAN);
}
static void
-dissect_swils_fspf_lsrec (tvbuff_t *tvb, proto_tree *tree, int offset,
- int num_lsrec)
+dissect_swils_fspf_lsrec(tvbuff_t *tvb, proto_tree *tree, int offset,
+ int num_lsrec)
{
- int i, j, num_ldrec;
+ int i, j, num_ldrec;
proto_item *subti1, *subti;
proto_tree *lsrec_tree, *ldrec_tree, *lsrechdr_tree;
if (tree) {
for (j = 0; j < num_lsrec; j++) {
- num_ldrec = tvb_get_ntohs (tvb, offset+26);
- subti = proto_tree_add_text (tree, tvb, offset, (28+num_ldrec*16),
- "Link State Record %d (Domain %d)", j,
- tvb_get_guint8 (tvb, offset+15));
- lsrec_tree = proto_item_add_subtree (subti, ett_fcswils_lsrec);
-
- subti = proto_tree_add_text (lsrec_tree, tvb, offset, 24,
- "Link State Record Header");
- lsrechdr_tree = proto_item_add_subtree (subti,
- ett_fcswils_lsrechdr);
-
- dissect_swils_fspf_lsrechdr (tvb, lsrechdr_tree, offset);
- proto_tree_add_text (tree, tvb, offset+26, 2, "Number of Links: %d",
- num_ldrec);
+ num_ldrec = tvb_get_ntohs(tvb, offset+26);
+ subti = proto_tree_add_text(tree, tvb, offset, (28+num_ldrec*16),
+ "Link State Record %d (Domain %d)", j,
+ tvb_get_guint8(tvb, offset+15));
+ lsrec_tree = proto_item_add_subtree(subti, ett_fcswils_lsrec);
+
+ subti = proto_tree_add_text(lsrec_tree, tvb, offset, 24,
+ "Link State Record Header");
+ lsrechdr_tree = proto_item_add_subtree(subti,
+ ett_fcswils_lsrechdr);
+
+ dissect_swils_fspf_lsrechdr(tvb, lsrechdr_tree, offset);
+ proto_tree_add_text(tree, tvb, offset+26, 2, "Number of Links: %d",
+ num_ldrec);
offset += 28;
for (i = 0; i < num_ldrec; i++) {
- subti1 = proto_tree_add_text (lsrec_tree, tvb, offset, 16,
- "Link Descriptor %d "
- "(Neighbor domain %d)", i,
- tvb_get_guint8 (tvb, offset+3));
- ldrec_tree = proto_item_add_subtree (subti1, ett_fcswils_ldrec);
- dissect_swils_fspf_ldrec (tvb, ldrec_tree, offset);
+ subti1 = proto_tree_add_text(lsrec_tree, tvb, offset, 16,
+ "Link Descriptor %d "
+ "(Neighbor domain %d)", i,
+ tvb_get_guint8(tvb, offset+3));
+ ldrec_tree = proto_item_add_subtree(subti1, ett_fcswils_ldrec);
+ dissect_swils_fspf_ldrec(tvb, ldrec_tree, offset);
offset += 16;
}
}
@@ -1072,123 +1064,123 @@ dissect_swils_fspf_lsrec (tvbuff_t *tvb, proto_tree *tree, int offset,
}
static void
-dissect_swils_hello (tvbuff_t *tvb, proto_tree *hlo_tree, guint8 isreq _U_)
+dissect_swils_hello(tvbuff_t *tvb, proto_tree *hlo_tree, guint8 isreq _U_)
{
/* Set up structures needed to add the protocol subtree and manage it */
int offset = 0;
if (hlo_tree) {
- dissect_swils_fspf_hdr (tvb, hlo_tree, offset);
+ dissect_swils_fspf_hdr(tvb, hlo_tree, offset);
- proto_tree_add_item (hlo_tree, hf_swils_hlo_options, tvb, offset+20, 4, ENC_NA);
- proto_tree_add_item (hlo_tree, hf_swils_hlo_hloint, tvb, offset+24, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item (hlo_tree, hf_swils_hlo_deadint, tvb, offset+28, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item (hlo_tree, hf_swils_hlo_rcv_domid, tvb, offset+35, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (hlo_tree, hf_swils_hlo_orig_pidx, tvb, offset+37, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(hlo_tree, hf_swils_hlo_options, tvb, offset+20, 4, ENC_NA);
+ proto_tree_add_item(hlo_tree, hf_swils_hlo_hloint, tvb, offset+24, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(hlo_tree, hf_swils_hlo_deadint, tvb, offset+28, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(hlo_tree, hf_swils_hlo_rcv_domid, tvb, offset+35, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(hlo_tree, hf_swils_hlo_orig_pidx, tvb, offset+37, 3, ENC_BIG_ENDIAN);
}
}
static void
-dissect_swils_lsupdate (tvbuff_t *tvb, proto_tree *lsu_tree, guint8 isreq _U_)
+dissect_swils_lsupdate(tvbuff_t *tvb, proto_tree *lsu_tree, guint8 isreq _U_)
{
/* Set up structures needed to add the protocol subtree and manage it */
int offset = 0;
int num_lsrec;
if (lsu_tree) {
- dissect_swils_fspf_hdr (tvb, lsu_tree, offset);
+ dissect_swils_fspf_hdr(tvb, lsu_tree, offset);
- proto_tree_add_text (lsu_tree, tvb, offset+23, 1, "Flags : %s",
- val_to_str (tvb_get_guint8 (tvb, offset+23),
- fc_swils_fspf_lsrflags_val, "0x%x"));
- num_lsrec = tvb_get_ntohl (tvb, offset+24);
+ proto_tree_add_text(lsu_tree, tvb, offset+23, 1, "Flags : %s",
+ val_to_str(tvb_get_guint8(tvb, offset+23),
+ fc_swils_fspf_lsrflags_val, "0x%x"));
+ num_lsrec = tvb_get_ntohl(tvb, offset+24);
- proto_tree_add_text (lsu_tree, tvb, offset+24, 4, "Num of LSRs: %d",
- num_lsrec);
+ proto_tree_add_text(lsu_tree, tvb, offset+24, 4, "Num of LSRs: %d",
+ num_lsrec);
offset = 28;
- dissect_swils_fspf_lsrec (tvb, lsu_tree, offset, num_lsrec);
+ dissect_swils_fspf_lsrec(tvb, lsu_tree, offset, num_lsrec);
}
}
static void
-dissect_swils_lsack (tvbuff_t *tvb, proto_tree *lsa_tree, guint8 isreq _U_)
+dissect_swils_lsack(tvbuff_t *tvb, proto_tree *lsa_tree, guint8 isreq _U_)
{
/* Set up structures needed to add the protocol subtree and manage it */
- int offset = 0;
- int num_lsrechdr, i;
+ int offset = 0;
+ int num_lsrechdr, i;
proto_item *subti;
proto_tree *lsrechdr_tree;
if (lsa_tree) {
- dissect_swils_fspf_hdr (tvb, lsa_tree, offset);
+ dissect_swils_fspf_hdr(tvb, lsa_tree, offset);
- proto_tree_add_text (lsa_tree, tvb, offset+23, 1, "Flags : %s",
- val_to_str (tvb_get_guint8 (tvb, offset+23),
- fc_swils_fspf_lsrflags_val, "0x%x"));
- num_lsrechdr = tvb_get_ntohl (tvb, offset+24);
+ proto_tree_add_text(lsa_tree, tvb, offset+23, 1, "Flags : %s",
+ val_to_str(tvb_get_guint8(tvb, offset+23),
+ fc_swils_fspf_lsrflags_val, "0x%x"));
+ num_lsrechdr = tvb_get_ntohl(tvb, offset+24);
- proto_tree_add_text (lsa_tree, tvb, offset+24, 4, "Num of LSR Headers: %d",
- num_lsrechdr);
+ proto_tree_add_text(lsa_tree, tvb, offset+24, 4, "Num of LSR Headers: %d",
+ num_lsrechdr);
offset = 28;
for (i = 0; i < num_lsrechdr; i++) {
- subti = proto_tree_add_text (lsa_tree, tvb, offset, 24,
- "Link State Record Header (Domain %d)",
- tvb_get_guint8 (tvb, offset+15));
- lsrechdr_tree = proto_item_add_subtree (subti,
- ett_fcswils_lsrechdr);
- dissect_swils_fspf_lsrechdr (tvb, lsrechdr_tree, offset);
+ subti = proto_tree_add_text(lsa_tree, tvb, offset, 24,
+ "Link State Record Header (Domain %d)",
+ tvb_get_guint8(tvb, offset+15));
+ lsrechdr_tree = proto_item_add_subtree(subti,
+ ett_fcswils_lsrechdr);
+ dissect_swils_fspf_lsrechdr(tvb, lsrechdr_tree, offset);
offset += 24;
}
}
}
static void
-dissect_swils_rscn (tvbuff_t *tvb, proto_tree *rscn_tree, guint8 isreq)
+dissect_swils_rscn(tvbuff_t *tvb, proto_tree *rscn_tree, guint8 isreq)
{
/* Set up structures needed to add the protocol subtree and manage it */
- int offset = 0;
+ int offset = 0;
proto_tree *dev_tree;
- int numrec, i;
+ int numrec, i;
proto_item *subti;
if (rscn_tree) {
if (!isreq)
return;
- proto_tree_add_item (rscn_tree, hf_swils_rscn_evtype, tvb, offset+4,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (rscn_tree, hf_swils_rscn_addrfmt, tvb, offset+4,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_string (rscn_tree, hf_swils_rscn_affectedport, tvb,
- offset+5, 3, tvb_fc_to_str (tvb, offset+5));
- proto_tree_add_item (rscn_tree, hf_swils_rscn_detectfn, tvb,
- offset+8, 4, ENC_BIG_ENDIAN);
- numrec = tvb_get_ntohl (tvb, offset+12);
-
- if (!tvb_bytes_exist (tvb, offset+16, FC_SWILS_RSCN_DEVENTRY_SIZE*numrec)) {
+ proto_tree_add_item(rscn_tree, hf_swils_rscn_evtype, tvb, offset+4,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(rscn_tree, hf_swils_rscn_addrfmt, tvb, offset+4,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_string(rscn_tree, hf_swils_rscn_affectedport, tvb,
+ offset+5, 3, tvb_fc_to_str(tvb, offset+5));
+ proto_tree_add_item(rscn_tree, hf_swils_rscn_detectfn, tvb,
+ offset+8, 4, ENC_BIG_ENDIAN);
+ numrec = tvb_get_ntohl(tvb, offset+12);
+
+ if (!tvb_bytes_exist(tvb, offset+16, FC_SWILS_RSCN_DEVENTRY_SIZE*numrec)) {
/* Some older devices do not include device entry information. */
return;
}
- proto_tree_add_text (rscn_tree, tvb, offset+12, 4, "Num Entries: %d",
- numrec);
+ proto_tree_add_text(rscn_tree, tvb, offset+12, 4, "Num Entries: %d",
+ numrec);
offset = 16;
for (i = 0; i < numrec; i++) {
- subti = proto_tree_add_text (rscn_tree, tvb, offset, 20,
- "Device Entry %d", i);
- dev_tree = proto_item_add_subtree (subti, ett_fcswils_rscn_dev);
-
- proto_tree_add_item (dev_tree, hf_swils_rscn_portstate, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_string (dev_tree, hf_swils_rscn_portid, tvb, offset+1, 3,
- tvb_fc_to_str (tvb, offset+1));
- proto_tree_add_string (dev_tree, hf_swils_rscn_pwwn, tvb, offset+4, 8,
- tvb_fcwwn_to_str (tvb, offset+4));
- proto_tree_add_string (dev_tree, hf_swils_rscn_nwwn, tvb, offset+12, 8,
- tvb_fcwwn_to_str (tvb, offset+12));
+ subti = proto_tree_add_text(rscn_tree, tvb, offset, 20,
+ "Device Entry %d", i);
+ dev_tree = proto_item_add_subtree(subti, ett_fcswils_rscn_dev);
+
+ proto_tree_add_item(dev_tree, hf_swils_rscn_portstate, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_string(dev_tree, hf_swils_rscn_portid, tvb, offset+1, 3,
+ tvb_fc_to_str(tvb, offset+1));
+ proto_tree_add_string(dev_tree, hf_swils_rscn_pwwn, tvb, offset+4, 8,
+ tvb_fcwwn_to_str(tvb, offset+4));
+ proto_tree_add_string(dev_tree, hf_swils_rscn_nwwn, tvb, offset+12, 8,
+ tvb_fcwwn_to_str(tvb, offset+12));
offset += 20;
}
}
@@ -1209,156 +1201,156 @@ dissect_swils_rscn (tvbuff_t *tvb, proto_tree *rscn_tree, guint8 isreq)
*/
static void
-dissect_swils_zone_mbr (tvbuff_t *tvb, proto_tree *zmbr_tree, int offset)
+dissect_swils_zone_mbr(tvbuff_t *tvb, proto_tree *zmbr_tree, int offset)
{
- guint8 mbrtype;
- int idlen;
- char dpbuf[2+8+1];
- char *str;
-
- mbrtype = tvb_get_guint8 (tvb, offset);
- proto_tree_add_uint (zmbr_tree, hf_swils_zone_mbrtype, tvb,
- offset, 1, mbrtype);
- proto_tree_add_text (zmbr_tree, tvb, offset+2, 1, "Flags: 0x%x",
- tvb_get_guint8 (tvb, offset+2));
- idlen = tvb_get_guint8 (tvb, offset+3);
- proto_tree_add_text (zmbr_tree, tvb, offset+3, 1,
- "Identifier Length: %u", idlen);
+ guint8 mbrtype;
+ int idlen;
+ char dpbuf[2+8+1];
+ char *str;
+
+ mbrtype = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint(zmbr_tree, hf_swils_zone_mbrtype, tvb,
+ offset, 1, mbrtype);
+ proto_tree_add_text(zmbr_tree, tvb, offset+2, 1, "Flags: 0x%x",
+ tvb_get_guint8(tvb, offset+2));
+ idlen = tvb_get_guint8(tvb, offset+3);
+ proto_tree_add_text(zmbr_tree, tvb, offset+3, 1,
+ "Identifier Length: %u", idlen);
switch (mbrtype) {
case FC_SWILS_ZONEMBR_WWN:
- proto_tree_add_string (zmbr_tree, hf_swils_zone_mbrid, tvb,
- offset+4, 8,
- tvb_fcwwn_to_str (tvb, offset+4));
+ proto_tree_add_string(zmbr_tree, hf_swils_zone_mbrid, tvb,
+ offset+4, 8,
+ tvb_fcwwn_to_str(tvb, offset+4));
break;
case FC_SWILS_ZONEMBR_DP:
- g_snprintf(dpbuf, sizeof(dpbuf), "0x%08x", tvb_get_ntohl (tvb, offset+4));
- proto_tree_add_string (zmbr_tree, hf_swils_zone_mbrid, tvb,
- offset+4, 4, dpbuf);
+ g_snprintf(dpbuf, sizeof(dpbuf), "0x%08x", tvb_get_ntohl(tvb, offset+4));
+ proto_tree_add_string(zmbr_tree, hf_swils_zone_mbrid, tvb,
+ offset+4, 4, dpbuf);
break;
case FC_SWILS_ZONEMBR_FCID:
- proto_tree_add_string (zmbr_tree, hf_swils_zone_mbrid, tvb,
- offset+4, 4,
- tvb_fc_to_str (tvb, offset+5));
+ proto_tree_add_string(zmbr_tree, hf_swils_zone_mbrid, tvb,
+ offset+4, 4,
+ tvb_fc_to_str(tvb, offset+5));
break;
case FC_SWILS_ZONEMBR_ALIAS:
- str = zonenm_to_str (tvb, offset+4);
- proto_tree_add_string (zmbr_tree, hf_swils_zone_mbrid, tvb,
- offset+4, idlen, str);
+ str = zonenm_to_str(tvb, offset+4);
+ proto_tree_add_string(zmbr_tree, hf_swils_zone_mbrid, tvb,
+ offset+4, idlen, str);
break;
case FC_SWILS_ZONEMBR_WWN_LUN:
- proto_tree_add_string (zmbr_tree, hf_swils_zone_mbrid, tvb,
- offset+4, 8,
- tvb_fcwwn_to_str (tvb, offset+4));
- proto_tree_add_item (zmbr_tree, hf_swils_zone_mbrid_lun, tvb,
- offset+12, 8, ENC_NA);
+ proto_tree_add_string(zmbr_tree, hf_swils_zone_mbrid, tvb,
+ offset+4, 8,
+ tvb_fcwwn_to_str(tvb, offset+4));
+ proto_tree_add_item(zmbr_tree, hf_swils_zone_mbrid_lun, tvb,
+ offset+12, 8, ENC_NA);
break;
case FC_SWILS_ZONEMBR_DP_LUN:
- g_snprintf(dpbuf, sizeof(dpbuf), "0x%08x", tvb_get_ntohl (tvb, offset+4));
- proto_tree_add_string (zmbr_tree, hf_swils_zone_mbrid, tvb,
- offset+4, 4, dpbuf);
- proto_tree_add_item (zmbr_tree, hf_swils_zone_mbrid_lun, tvb,
- offset+8, 8, ENC_NA);
+ g_snprintf(dpbuf, sizeof(dpbuf), "0x%08x", tvb_get_ntohl(tvb, offset+4));
+ proto_tree_add_string(zmbr_tree, hf_swils_zone_mbrid, tvb,
+ offset+4, 4, dpbuf);
+ proto_tree_add_item(zmbr_tree, hf_swils_zone_mbrid_lun, tvb,
+ offset+8, 8, ENC_NA);
break;
case FC_SWILS_ZONEMBR_FCID_LUN:
- proto_tree_add_string (zmbr_tree, hf_swils_zone_mbrid, tvb,
- offset+4, 4,
- tvb_fc_to_str (tvb, offset+5));
- proto_tree_add_item (zmbr_tree, hf_swils_zone_mbrid_lun, tvb,
- offset+8, 8, ENC_NA);
+ proto_tree_add_string(zmbr_tree, hf_swils_zone_mbrid, tvb,
+ offset+4, 4,
+ tvb_fc_to_str(tvb, offset+5));
+ proto_tree_add_item(zmbr_tree, hf_swils_zone_mbrid_lun, tvb,
+ offset+8, 8, ENC_NA);
break;
default:
- proto_tree_add_string (zmbr_tree, hf_swils_zone_mbrid, tvb,
- offset+4, idlen,
- "Unknown member type format");
+ proto_tree_add_string(zmbr_tree, hf_swils_zone_mbrid, tvb,
+ offset+4, idlen,
+ "Unknown member type format");
}
}
static void
-dissect_swils_zone_obj (tvbuff_t *tvb, proto_tree *zobj_tree, int offset)
+dissect_swils_zone_obj(tvbuff_t *tvb, proto_tree *zobj_tree, int offset)
{
proto_tree *zmbr_tree;
- int mbrlen, numrec, i, objtype;
- char *str;
+ int mbrlen, numrec, i, objtype;
+ char *str;
proto_item *subti;
- objtype = tvb_get_guint8 (tvb, offset);
+ objtype = tvb_get_guint8(tvb, offset);
- proto_tree_add_item (zobj_tree, hf_swils_zone_objtype, tvb, offset,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (zobj_tree, hf_swils_zone_protocol, tvb,
- offset+1, 1, ENC_BIG_ENDIAN);
- str = zonenm_to_str (tvb, offset+4);
- proto_tree_add_string (zobj_tree, hf_swils_zone_objname, tvb,
- offset+4, ZONENAME_LEN (tvb, offset+4), str);
+ proto_tree_add_item(zobj_tree, hf_swils_zone_objtype, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(zobj_tree, hf_swils_zone_protocol, tvb,
+ offset+1, 1, ENC_BIG_ENDIAN);
+ str = zonenm_to_str(tvb, offset+4);
+ proto_tree_add_string(zobj_tree, hf_swils_zone_objname, tvb,
+ offset+4, ZONENAME_LEN(tvb, offset+4), str);
- numrec = tvb_get_ntohl (tvb, offset+4+ZONENAME_LEN (tvb, offset+4));
- proto_tree_add_text (zobj_tree, tvb,
- offset+4+ZONENAME_LEN (tvb, offset+4), 4,
- "Number of Zone Members: %d", numrec);
+ numrec = tvb_get_ntohl(tvb, offset+4+ZONENAME_LEN(tvb, offset+4));
+ proto_tree_add_text(zobj_tree, tvb,
+ offset+4+ZONENAME_LEN(tvb, offset+4), 4,
+ "Number of Zone Members: %d", numrec);
- offset += 8 + ZONENAME_LEN (tvb, offset+4);
+ offset += 8 + ZONENAME_LEN(tvb, offset+4);
for (i = 0; i < numrec; i++) {
if (objtype == FC_SWILS_ZONEOBJ_ZONESET) {
- dissect_swils_zone_obj (tvb, zobj_tree, offset);
- offset += get_zoneobj_len (tvb, offset);
+ dissect_swils_zone_obj(tvb, zobj_tree, offset);
+ offset += get_zoneobj_len(tvb, offset);
}
else {
- mbrlen = 4 + tvb_get_guint8 (tvb, offset+3);
- subti = proto_tree_add_text (zobj_tree, tvb, offset, mbrlen,
- "Zone Member %d", i);
- zmbr_tree = proto_item_add_subtree (subti,
- ett_fcswils_zonembr);
- dissect_swils_zone_mbr (tvb, zmbr_tree, offset);
+ mbrlen = 4 + tvb_get_guint8(tvb, offset+3);
+ subti = proto_tree_add_text(zobj_tree, tvb, offset, mbrlen,
+ "Zone Member %d", i);
+ zmbr_tree = proto_item_add_subtree(subti,
+ ett_fcswils_zonembr);
+ dissect_swils_zone_mbr(tvb, zmbr_tree, offset);
offset += mbrlen;
}
}
}
static void
-dissect_swils_mergereq (tvbuff_t *tvb, proto_tree *mr_tree, guint8 isreq)
+dissect_swils_mergereq(tvbuff_t *tvb, proto_tree *mr_tree, guint8 isreq)
{
/* Set up structures needed to add the protocol subtree and manage it */
- int offset = 0;
+ int offset = 0;
proto_tree *zobjlist_tree, *zobj_tree;
- int numrec, i, zonesetlen, objlistlen, objlen;
- char *str;
+ int numrec, i, zonesetlen, objlistlen, objlen;
+ char *str;
proto_item *subti;
if (mr_tree) {
if (isreq) {
/* zonesetlen is the size of the zoneset including the zone name */
- zonesetlen = tvb_get_ntohs (tvb, offset+2);
- proto_tree_add_text (mr_tree, tvb, offset+2, 2,
- "Active ZoneSet Length: %u", zonesetlen);
+ zonesetlen = tvb_get_ntohs(tvb, offset+2);
+ proto_tree_add_text(mr_tree, tvb, offset+2, 2,
+ "Active ZoneSet Length: %u", zonesetlen);
if (zonesetlen) {
- str = zonenm_to_str (tvb, offset+4);
- proto_tree_add_string (mr_tree, hf_swils_zone_activezonenm, tvb,
- offset+4, ZONENAME_LEN (tvb, offset+4),
- str);
+ str = zonenm_to_str(tvb, offset+4);
+ proto_tree_add_string(mr_tree, hf_swils_zone_activezonenm, tvb,
+ offset+4, ZONENAME_LEN(tvb, offset+4),
+ str);
/* objlistlen gives the size of the active zoneset object list */
- objlistlen = zonesetlen - ZONENAME_LEN (tvb, offset+4);
+ objlistlen = zonesetlen - ZONENAME_LEN(tvb, offset+4);
/* Offset = start of the active zoneset zoning object list */
- offset = offset + (4 + ZONENAME_LEN (tvb, offset+4));
- numrec = tvb_get_ntohl (tvb, offset);
+ offset = offset + (4 + ZONENAME_LEN(tvb, offset+4));
+ numrec = tvb_get_ntohl(tvb, offset);
- subti = proto_tree_add_text (mr_tree, tvb, offset, objlistlen,
- "Active Zone Set");
- zobjlist_tree = proto_item_add_subtree (subti,
- ett_fcswils_zoneobjlist);
+ subti = proto_tree_add_text(mr_tree, tvb, offset, objlistlen,
+ "Active Zone Set");
+ zobjlist_tree = proto_item_add_subtree(subti,
+ ett_fcswils_zoneobjlist);
- proto_tree_add_text (zobjlist_tree, tvb, offset, 4,
- "Number of zoning objects: %d", numrec);
+ proto_tree_add_text(zobjlist_tree, tvb, offset, 4,
+ "Number of zoning objects: %d", numrec);
offset += 4;
for (i = 0; i < numrec; i++) {
- objlen = get_zoneobj_len (tvb, offset);
- subti = proto_tree_add_text (zobjlist_tree, tvb, offset+4,
- objlen, "Zone Object %d", i);
- zobj_tree = proto_item_add_subtree (subti, ett_fcswils_zoneobj);
- dissect_swils_zone_obj (tvb, zobj_tree, offset);
+ objlen = get_zoneobj_len(tvb, offset);
+ subti = proto_tree_add_text(zobjlist_tree, tvb, offset+4,
+ objlen, "Zone Object %d", i);
+ zobj_tree = proto_item_add_subtree(subti, ett_fcswils_zoneobj);
+ dissect_swils_zone_obj(tvb, zobj_tree, offset);
offset += objlen;
}
}
@@ -1366,48 +1358,48 @@ dissect_swils_mergereq (tvbuff_t *tvb, proto_tree *mr_tree, guint8 isreq)
offset += 4;
}
- zonesetlen = tvb_get_ntohl (tvb, offset);
- proto_tree_add_text (mr_tree, tvb, offset, 4,
- "Full Zone Set Length: %d", zonesetlen);
+ zonesetlen = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_text(mr_tree, tvb, offset, 4,
+ "Full Zone Set Length: %d", zonesetlen);
if (zonesetlen) {
objlistlen = zonesetlen;
/* Offset = start of the active zoneset zoning object list */
offset += 4;
- numrec = tvb_get_ntohl (tvb, offset);
+ numrec = tvb_get_ntohl(tvb, offset);
- subti = proto_tree_add_text (mr_tree, tvb, offset, objlistlen,
- "Full Zone Set");
+ subti = proto_tree_add_text(mr_tree, tvb, offset, objlistlen,
+ "Full Zone Set");
- zobjlist_tree = proto_item_add_subtree (subti,
- ett_fcswils_zoneobjlist);
- proto_tree_add_text (zobjlist_tree, tvb, offset, 4,
- "Number of zoning objects: %d", numrec);
+ zobjlist_tree = proto_item_add_subtree(subti,
+ ett_fcswils_zoneobjlist);
+ proto_tree_add_text(zobjlist_tree, tvb, offset, 4,
+ "Number of zoning objects: %d", numrec);
offset += 4;
for (i = 0; i < numrec; i++) {
- objlen = get_zoneobj_len (tvb, offset);
- subti = proto_tree_add_text (zobjlist_tree, tvb, offset,
- objlen, "Zone Object %d", i);
- zobj_tree = proto_item_add_subtree (subti, ett_fcswils_zoneobj);
- dissect_swils_zone_obj (tvb, zobj_tree, offset);
+ objlen = get_zoneobj_len(tvb, offset);
+ subti = proto_tree_add_text(zobjlist_tree, tvb, offset,
+ objlen, "Zone Object %d", i);
+ zobj_tree = proto_item_add_subtree(subti, ett_fcswils_zoneobj);
+ dissect_swils_zone_obj(tvb, zobj_tree, offset);
offset += objlen;
}
}
}
else {
- proto_tree_add_item (mr_tree, hf_swils_zone_status, tvb,
- offset+5, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (mr_tree, hf_swils_zone_reason, tvb,
- offset+6, 1, ENC_BIG_ENDIAN);
- proto_tree_add_text (mr_tree, tvb, offset+7, 1,
- "Vendor Unique: 0x%x",
- tvb_get_guint8 (tvb, offset+7));
+ proto_tree_add_item(mr_tree, hf_swils_zone_status, tvb,
+ offset+5, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mr_tree, hf_swils_zone_reason, tvb,
+ offset+6, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_text(mr_tree, tvb, offset+7, 1,
+ "Vendor Unique: 0x%x",
+ tvb_get_guint8(tvb, offset+7));
}
}
}
static void
-dissect_swils_aca (tvbuff_t *tvb, proto_tree *aca_tree, guint8 isreq)
+dissect_swils_aca(tvbuff_t *tvb, proto_tree *aca_tree, guint8 isreq)
{
/* Set up structures needed to add the protocol subtree and manage it */
int offset = 0;
@@ -1415,97 +1407,97 @@ dissect_swils_aca (tvbuff_t *tvb, proto_tree *aca_tree, guint8 isreq)
if (aca_tree) {
if (isreq) {
- plen = tvb_get_ntohs (tvb, offset+2);
- proto_tree_add_text (aca_tree, tvb, offset+2, 2,
- "Domain ID List Length: %d", plen);
+ plen = tvb_get_ntohs(tvb, offset+2);
+ proto_tree_add_text(aca_tree, tvb, offset+2, 2,
+ "Domain ID List Length: %d", plen);
numrec = plen/4;
offset = 4;
for (i = 0; i < numrec; i++) {
- proto_tree_add_uint_format (aca_tree, hf_swils_aca_domainid,
- tvb, offset+3, 1,
- tvb_get_guint8 (tvb, offset+3),
- "Domain ID %d: %d", i,
- tvb_get_guint8 (tvb, offset+3));
+ proto_tree_add_uint_format(aca_tree, hf_swils_aca_domainid,
+ tvb, offset+3, 1,
+ tvb_get_guint8(tvb, offset+3),
+ "Domain ID %d: %d", i,
+ tvb_get_guint8(tvb, offset+3));
offset += 4;
}
}
else {
- proto_tree_add_item (aca_tree, hf_swils_zone_status, tvb,
- offset+5, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (aca_tree, hf_swils_zone_reason, tvb,
- offset+6, 1, ENC_BIG_ENDIAN);
- proto_tree_add_text (aca_tree, tvb, offset+7, 1,
- "Vendor Unique: 0x%x",
- tvb_get_guint8 (tvb, offset+7));
+ proto_tree_add_item(aca_tree, hf_swils_zone_status, tvb,
+ offset+5, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aca_tree, hf_swils_zone_reason, tvb,
+ offset+6, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_text(aca_tree, tvb, offset+7, 1,
+ "Vendor Unique: 0x%x",
+ tvb_get_guint8(tvb, offset+7));
}
}
}
static void
-dissect_swils_rca (tvbuff_t *tvb, proto_tree *rca_tree, guint8 isreq)
+dissect_swils_rca(tvbuff_t *tvb, proto_tree *rca_tree, guint8 isreq)
{
/* Set up structures needed to add the protocol subtree and manage it */
int offset = 0;
if (rca_tree) {
if (!isreq) {
- proto_tree_add_item (rca_tree, hf_swils_zone_status, tvb,
- offset+5, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (rca_tree, hf_swils_zone_reason, tvb,
- offset+6, 1, ENC_BIG_ENDIAN);
- proto_tree_add_text (rca_tree, tvb, offset+7, 1,
- "Vendor Unique: 0x%x",
- tvb_get_guint8 (tvb, offset+7));
+ proto_tree_add_item(rca_tree, hf_swils_zone_status, tvb,
+ offset+5, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(rca_tree, hf_swils_zone_reason, tvb,
+ offset+6, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_text(rca_tree, tvb, offset+7, 1,
+ "Vendor Unique: 0x%x",
+ tvb_get_guint8(tvb, offset+7));
}
}
}
static void
-dissect_swils_sfc (tvbuff_t *tvb, proto_tree *sfc_tree, guint8 isreq)
+dissect_swils_sfc(tvbuff_t *tvb, proto_tree *sfc_tree, guint8 isreq)
{
/* Set up structures needed to add the protocol subtree and manage it */
- int offset = 0;
+ int offset = 0;
proto_tree *zobjlist_tree, *zobj_tree;
- int numrec, i, zonesetlen, objlistlen, objlen;
- char *str;
+ int numrec, i, zonesetlen, objlistlen, objlen;
+ char *str;
proto_item *subti;
if (sfc_tree) {
if (isreq) {
- proto_tree_add_item (sfc_tree, hf_swils_sfc_opcode, tvb, offset+1, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(sfc_tree, hf_swils_sfc_opcode, tvb, offset+1, 1, ENC_BIG_ENDIAN);
- zonesetlen = tvb_get_ntohs (tvb, offset+2);
- proto_tree_add_text (sfc_tree, tvb, offset+2, 2,
- "ZoneSet Length: %d", zonesetlen);
+ zonesetlen = tvb_get_ntohs(tvb, offset+2);
+ proto_tree_add_text(sfc_tree, tvb, offset+2, 2,
+ "ZoneSet Length: %d", zonesetlen);
if (zonesetlen) {
- str = zonenm_to_str (tvb, offset+4);
- proto_tree_add_string (sfc_tree, hf_swils_sfc_zonenm, tvb,
- offset+4, ZONENAME_LEN (tvb, offset+4),
- str);
+ str = zonenm_to_str(tvb, offset+4);
+ proto_tree_add_string(sfc_tree, hf_swils_sfc_zonenm, tvb,
+ offset+4, ZONENAME_LEN(tvb, offset+4),
+ str);
/* objlistlen gives the size of the active zoneset object list */
- objlistlen = zonesetlen - ZONENAME_LEN (tvb, offset+4);
+ objlistlen = zonesetlen - ZONENAME_LEN(tvb, offset+4);
/* Offset = start of the active zoneset zoning object list */
- offset = offset + (4 + ZONENAME_LEN (tvb, offset+4));
- numrec = tvb_get_ntohl (tvb, offset);
+ offset = offset + (4 + ZONENAME_LEN(tvb, offset+4));
+ numrec = tvb_get_ntohl(tvb, offset);
- subti = proto_tree_add_text (sfc_tree, tvb, offset, objlistlen,
- "Zone Set");
- zobjlist_tree = proto_item_add_subtree (subti,
- ett_fcswils_zoneobjlist);
+ subti = proto_tree_add_text(sfc_tree, tvb, offset, objlistlen,
+ "Zone Set");
+ zobjlist_tree = proto_item_add_subtree(subti,
+ ett_fcswils_zoneobjlist);
- proto_tree_add_text (zobjlist_tree, tvb, offset, 4,
- "Number of zoning objects: %d", numrec);
+ proto_tree_add_text(zobjlist_tree, tvb, offset, 4,
+ "Number of zoning objects: %d", numrec);
offset += 4;
for (i = 0; i < numrec; i++) {
- objlen = get_zoneobj_len (tvb, offset);
- subti = proto_tree_add_text (zobjlist_tree, tvb, offset,
- objlen, "Zone Object %d", i);
- zobj_tree = proto_item_add_subtree (subti, ett_fcswils_zoneobj);
- dissect_swils_zone_obj (tvb, zobj_tree, offset);
+ objlen = get_zoneobj_len(tvb, offset);
+ subti = proto_tree_add_text(zobjlist_tree, tvb, offset,
+ objlen, "Zone Object %d", i);
+ zobj_tree = proto_item_add_subtree(subti, ett_fcswils_zoneobj);
+ dissect_swils_zone_obj(tvb, zobj_tree, offset);
offset += objlen;
}
}
@@ -1513,167 +1505,167 @@ dissect_swils_sfc (tvbuff_t *tvb, proto_tree *sfc_tree, guint8 isreq)
offset += 4;
}
- zonesetlen = tvb_get_ntohl (tvb, offset);
- proto_tree_add_text (sfc_tree, tvb, offset, 4,
- "Full Zone Set Length: %d", zonesetlen);
+ zonesetlen = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_text(sfc_tree, tvb, offset, 4,
+ "Full Zone Set Length: %d", zonesetlen);
if (zonesetlen) {
objlistlen = zonesetlen;
/* Offset = start of the active zoneset zoning object list */
offset += 4;
- numrec = tvb_get_ntohl (tvb, offset);
+ numrec = tvb_get_ntohl(tvb, offset);
- subti = proto_tree_add_text (sfc_tree, tvb, offset, objlistlen,
- "Full Zone Set");
+ subti = proto_tree_add_text(sfc_tree, tvb, offset, objlistlen,
+ "Full Zone Set");
- zobjlist_tree = proto_item_add_subtree (subti,
- ett_fcswils_zoneobjlist);
- proto_tree_add_text (zobjlist_tree, tvb, offset, 4,
- "Number of zoning objects: %d", numrec);
+ zobjlist_tree = proto_item_add_subtree(subti,
+ ett_fcswils_zoneobjlist);
+ proto_tree_add_text(zobjlist_tree, tvb, offset, 4,
+ "Number of zoning objects: %d", numrec);
offset += 4;
for (i = 0; i < numrec; i++) {
- objlen = get_zoneobj_len (tvb, offset);
- subti = proto_tree_add_text (zobjlist_tree, tvb, offset,
- objlen, "Zone Object %d", i);
- zobj_tree = proto_item_add_subtree (subti, ett_fcswils_zoneobj);
- dissect_swils_zone_obj (tvb, zobj_tree, offset);
+ objlen = get_zoneobj_len(tvb, offset);
+ subti = proto_tree_add_text(zobjlist_tree, tvb, offset,
+ objlen, "Zone Object %d", i);
+ zobj_tree = proto_item_add_subtree(subti, ett_fcswils_zoneobj);
+ dissect_swils_zone_obj(tvb, zobj_tree, offset);
offset += objlen;
}
}
}
else {
- proto_tree_add_item (sfc_tree, hf_swils_zone_status, tvb,
- offset+5, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (sfc_tree, hf_swils_zone_reason, tvb,
- offset+6, 1, ENC_BIG_ENDIAN);
- proto_tree_add_text (sfc_tree, tvb, offset+7, 1,
- "Vendor Unique: 0x%x",
- tvb_get_guint8 (tvb, offset+7));
+ proto_tree_add_item(sfc_tree, hf_swils_zone_status, tvb,
+ offset+5, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(sfc_tree, hf_swils_zone_reason, tvb,
+ offset+6, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_text(sfc_tree, tvb, offset+7, 1,
+ "Vendor Unique: 0x%x",
+ tvb_get_guint8(tvb, offset+7));
}
}
}
static void
-dissect_swils_ufc (tvbuff_t *tvb, proto_tree *ufc_tree, guint8 isreq)
+dissect_swils_ufc(tvbuff_t *tvb, proto_tree *ufc_tree, guint8 isreq)
{
/* Set up structures needed to add the protocol subtree and manage it */
int offset = 0;
if (ufc_tree) {
if (!isreq) {
- proto_tree_add_item (ufc_tree, hf_swils_zone_status, tvb,
- offset+5, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (ufc_tree, hf_swils_zone_reason, tvb,
- offset+6, 1, ENC_BIG_ENDIAN);
- proto_tree_add_text (ufc_tree, tvb, offset+7, 1,
- "Vendor Unique: 0x%x",
- tvb_get_guint8 (tvb, offset+7));
+ proto_tree_add_item(ufc_tree, hf_swils_zone_status, tvb,
+ offset+5, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ufc_tree, hf_swils_zone_reason, tvb,
+ offset+6, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_text(ufc_tree, tvb, offset+7, 1,
+ "Vendor Unique: 0x%x",
+ tvb_get_guint8(tvb, offset+7));
}
}
}
static void
-dissect_swils_esc (tvbuff_t *tvb, proto_tree *esc_tree, guint8 isreq)
+dissect_swils_esc(tvbuff_t *tvb, proto_tree *esc_tree, guint8 isreq)
{
/* Set up structures needed to add the protocol subtree and manage it */
- int offset = 0;
- int i, numrec, plen;
+ int offset = 0;
+ int i, numrec, plen;
proto_tree *pdesc_tree;
proto_item *subti;
if (esc_tree) {
if (isreq) {
- plen = tvb_get_ntohs (tvb, offset+2);
- proto_tree_add_text (esc_tree, tvb, offset+2, 2,
- "Payload Length: %d", plen);
- proto_tree_add_item (esc_tree, hf_swils_esc_swvendorid, tvb,
- offset+4, 8, ENC_ASCII|ENC_NA);
+ plen = tvb_get_ntohs(tvb, offset+2);
+ proto_tree_add_text(esc_tree, tvb, offset+2, 2,
+ "Payload Length: %d", plen);
+ proto_tree_add_item(esc_tree, hf_swils_esc_swvendorid, tvb,
+ offset+4, 8, ENC_ASCII|ENC_NA);
numrec = (plen - 12)/12;
offset = 12;
for (i = 0; i < numrec; i++) {
- subti = proto_tree_add_text (esc_tree, tvb, offset, 12,
- "Protocol Descriptor %d", i);
- pdesc_tree = proto_item_add_subtree (subti,
- ett_fcswils_esc_pdesc);
- proto_tree_add_item (pdesc_tree, hf_swils_esc_pdesc_vendorid, tvb,
- offset, 8, ENC_ASCII|ENC_NA);
- proto_tree_add_item (pdesc_tree, hf_swils_esc_protocolid,
- tvb, offset+10, 2, ENC_BIG_ENDIAN);
+ subti = proto_tree_add_text(esc_tree, tvb, offset, 12,
+ "Protocol Descriptor %d", i);
+ pdesc_tree = proto_item_add_subtree(subti,
+ ett_fcswils_esc_pdesc);
+ proto_tree_add_item(pdesc_tree, hf_swils_esc_pdesc_vendorid, tvb,
+ offset, 8, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(pdesc_tree, hf_swils_esc_protocolid,
+ tvb, offset+10, 2, ENC_BIG_ENDIAN);
offset += 12;
}
}
else {
- proto_tree_add_item (esc_tree, hf_swils_esc_swvendorid, tvb,
- offset+4, 8, ENC_ASCII|ENC_NA);
- subti = proto_tree_add_text (esc_tree, tvb, offset+12, 12,
- "Accepted Protocol Descriptor");
- pdesc_tree = proto_item_add_subtree (subti, ett_fcswils_esc_pdesc);
-
- proto_tree_add_item (pdesc_tree, hf_swils_esc_pdesc_vendorid, tvb,
- offset+12, 8, ENC_ASCII|ENC_NA);
- proto_tree_add_item (pdesc_tree, hf_swils_esc_protocolid,
- tvb, offset+22, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(esc_tree, hf_swils_esc_swvendorid, tvb,
+ offset+4, 8, ENC_ASCII|ENC_NA);
+ subti = proto_tree_add_text(esc_tree, tvb, offset+12, 12,
+ "Accepted Protocol Descriptor");
+ pdesc_tree = proto_item_add_subtree(subti, ett_fcswils_esc_pdesc);
+
+ proto_tree_add_item(pdesc_tree, hf_swils_esc_pdesc_vendorid, tvb,
+ offset+12, 8, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(pdesc_tree, hf_swils_esc_protocolid,
+ tvb, offset+22, 2, ENC_BIG_ENDIAN);
}
}
}
static void
-dissect_swils_drlir (tvbuff_t *tvb _U_, proto_tree *drlir_tree _U_,
- guint8 isreq _U_)
+dissect_swils_drlir(tvbuff_t *tvb _U_, proto_tree *drlir_tree _U_,
+ guint8 isreq _U_)
{
/* Set up structures needed to add the protocol subtree and manage it */
return;
}
static void
-dissect_swils_swrjt (tvbuff_t *tvb, proto_tree *swrjt_tree, guint8 isreq _U_)
+dissect_swils_swrjt(tvbuff_t *tvb, proto_tree *swrjt_tree, guint8 isreq _U_)
{
/* Set up structures needed to add the protocol subtree and manage it */
int offset = 0;
if (swrjt_tree) {
- proto_tree_add_item (swrjt_tree, hf_swils_rjt, tvb, offset+5, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (swrjt_tree, hf_swils_rjtdet, tvb, offset+6, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (swrjt_tree, hf_swils_rjtvendor, tvb, offset+7,
- 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(swrjt_tree, hf_swils_rjt, tvb, offset+5, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(swrjt_tree, hf_swils_rjtdet, tvb, offset+6, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(swrjt_tree, hf_swils_rjtvendor, tvb, offset+7,
+ 1, ENC_BIG_ENDIAN);
}
}
static void
-dissect_swils_ess (tvbuff_t *tvb, proto_tree *ess_tree, guint8 isreq _U_)
+dissect_swils_ess(tvbuff_t *tvb, proto_tree *ess_tree, guint8 isreq _U_)
{
- int offset = 0;
- gint16 numcapobj = 0;
- gint len = 0;
- gint capobjlen = 0;
- proto_item *ti = NULL;
+ int offset = 0;
+ gint16 numcapobj = 0;
+ gint len = 0;
+ gint capobjlen = 0;
+ proto_item *ti = NULL;
proto_tree *ieinfo_tree = NULL;
if (!ess_tree) {
return;
}
- proto_tree_add_item (ess_tree, hf_swils_ess_rev, tvb, offset+4, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item (ess_tree, hf_swils_ess_len, tvb, offset+8, 4, ENC_BIG_ENDIAN);
- len = tvb_get_ntohl (tvb, offset+8);
+ proto_tree_add_item(ess_tree, hf_swils_ess_rev, tvb, offset+4, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ess_tree, hf_swils_ess_len, tvb, offset+8, 4, ENC_BIG_ENDIAN);
+ len = tvb_get_ntohl(tvb, offset+8);
- ti = proto_tree_add_text (ess_tree, tvb, offset+12,
- MAX_INTERCONNECT_ELEMENT_INFO_LEN+4,
- "Interconnect Element Info");
- ieinfo_tree = proto_item_add_subtree (ti, ett_fcswils_ieinfo);
- dissect_swils_interconnect_element_info (tvb, ieinfo_tree, offset+12);
+ ti = proto_tree_add_text(ess_tree, tvb, offset+12,
+ MAX_INTERCONNECT_ELEMENT_INFO_LEN+4,
+ "Interconnect Element Info");
+ ieinfo_tree = proto_item_add_subtree(ti, ett_fcswils_ieinfo);
+ dissect_swils_interconnect_element_info(tvb, ieinfo_tree, offset+12);
len -= 256; /* the interconnect obj above is 256 bytes */
offset += 268;
- proto_tree_add_item (ess_tree, hf_swils_ess_numobj, tvb, offset, 2, ENC_BIG_ENDIAN);
- numcapobj = tvb_get_ntohs (tvb, offset);
+ proto_tree_add_item(ess_tree, hf_swils_ess_numobj, tvb, offset, 2, ENC_BIG_ENDIAN);
+ numcapobj = tvb_get_ntohs(tvb, offset);
len -= 4; /* 2B numcapobj + 2B rsvd */
offset += 4;
while ((len > 0) && (numcapobj > 0)) {
- capobjlen = dissect_swils_ess_capability_obj (tvb, ess_tree, offset);
+ capobjlen = dissect_swils_ess_capability_obj(tvb, ess_tree, offset);
numcapobj--;
len -= capobjlen;
offset += capobjlen;
@@ -1681,7 +1673,7 @@ dissect_swils_ess (tvbuff_t *tvb, proto_tree *ess_tree, guint8 isreq _U_)
}
static void
-dissect_swils_mrra (tvbuff_t *tvb, proto_tree *tree, guint8 isreq)
+dissect_swils_mrra(tvbuff_t *tvb, proto_tree *tree, guint8 isreq)
{
int offset = 0;
@@ -1691,20 +1683,20 @@ dissect_swils_mrra (tvbuff_t *tvb, proto_tree *tree, guint8 isreq)
}
if (isreq) {
- proto_tree_add_item (tree, hf_swils_mrra_rev, tvb, offset+4, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_swils_mrra_size, tvb, offset+8, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_swils_mrra_vendorid, tvb, offset+12, 8, ENC_ASCII|ENC_NA);
- proto_tree_add_item (tree, hf_swils_mrra_vendorinfo, tvb, offset+20,
- 8, ENC_NA);
+ proto_tree_add_item(tree, hf_swils_mrra_rev, tvb, offset+4, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_mrra_size, tvb, offset+8, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_mrra_vendorid, tvb, offset+12, 8, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(tree, hf_swils_mrra_vendorinfo, tvb, offset+20,
+ 8, ENC_NA);
} else {
- proto_tree_add_item (tree, hf_swils_mrra_vendorid, tvb, offset+4,
- 8, ENC_ASCII|ENC_NA);
- proto_tree_add_item (tree, hf_swils_mrra_reply, tvb, offset+12,
- 4, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_swils_mrra_reply_size, tvb, offset+16,
- 4, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_swils_mrra_waittime, tvb, offset+20,
- 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_mrra_vendorid, tvb, offset+4,
+ 8, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(tree, hf_swils_mrra_reply, tvb, offset+12,
+ 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_mrra_reply_size, tvb, offset+16,
+ 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_swils_mrra_waittime, tvb, offset+20,
+ 4, ENC_BIG_ENDIAN);
}
@@ -1768,46 +1760,46 @@ static fcswils_func_table_t fcswils_func_table[FC_SWILS_MAXCODE] = {
/* Code to actually dissect the packets */
static void
-dissect_fcswils (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+dissect_fcswils(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti = NULL;
- guint8 opcode,
- failed_opcode = 0;
- int offset = 0;
- conversation_t *conversation;
+ proto_item *ti = NULL;
+ guint8 opcode;
+ guint8 failed_opcode = 0;
+ int offset = 0;
+ conversation_t *conversation;
fcswils_conv_data_t *cdata;
- fcswils_conv_key_t ckey, *req_key;
- proto_tree *swils_tree = NULL;
- guint8 isreq = FC_SWILS_REQ;
- tvbuff_t *next_tvb;
+ fcswils_conv_key_t ckey, *req_key;
+ proto_tree *swils_tree = NULL;
+ guint8 isreq = FC_SWILS_REQ;
+ tvbuff_t *next_tvb;
/* Make entries in Protocol column and Info column on summary display */
col_set_str(pinfo->cinfo, COL_PROTOCOL, "SW_ILS");
/* decoding of this is done by each individual opcode handler */
- opcode = tvb_get_guint8 (tvb, 0);
+ opcode = tvb_get_guint8(tvb, 0);
if (tree) {
- ti = proto_tree_add_protocol_format (tree, proto_fcswils, tvb, 0,
- tvb_length (tvb), "SW_ILS");
- swils_tree = proto_item_add_subtree (ti, ett_fcswils);
+ ti = proto_tree_add_protocol_format(tree, proto_fcswils, tvb, 0,
+ tvb_length(tvb), "SW_ILS");
+ swils_tree = proto_item_add_subtree(ti, ett_fcswils);
}
/* Register conversation if this is not a response */
if ((opcode != FC_SWILS_SWACC) && (opcode != FC_SWILS_SWRJT)) {
- conversation = find_conversation (pinfo->fd->num, &pinfo->src, &pinfo->dst,
- pinfo->ptype, pinfo->oxid,
- pinfo->rxid, NO_PORT2);
+ conversation = find_conversation(pinfo->fd->num, &pinfo->src, &pinfo->dst,
+ pinfo->ptype, pinfo->oxid,
+ pinfo->rxid, NO_PORT2);
if (!conversation) {
- conversation = conversation_new (pinfo->fd->num, &pinfo->src, &pinfo->dst,
- pinfo->ptype, pinfo->oxid,
- pinfo->rxid, NO_PORT2);
+ conversation = conversation_new(pinfo->fd->num, &pinfo->src, &pinfo->dst,
+ pinfo->ptype, pinfo->oxid,
+ pinfo->rxid, NO_PORT2);
}
ckey.conv_idx = conversation->index;
- cdata = (fcswils_conv_data_t *)g_hash_table_lookup (fcswils_req_hash,
- &ckey);
+ cdata = (fcswils_conv_data_t *)g_hash_table_lookup(fcswils_req_hash,
+ &ckey);
if (cdata) {
/* Since we never free the memory used by an exchange, this maybe a
* case of another request using the same exchange as a previous
@@ -1816,33 +1808,33 @@ dissect_fcswils (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
cdata->opcode = opcode;
}
else {
- req_key = se_alloc (sizeof(fcswils_conv_key_t));
+ req_key = se_alloc(sizeof(fcswils_conv_key_t));
req_key->conv_idx = conversation->index;
- cdata = se_alloc (sizeof(fcswils_conv_data_t));
+ cdata = se_alloc(sizeof(fcswils_conv_data_t));
cdata->opcode = opcode;
- g_hash_table_insert (fcswils_req_hash, req_key, cdata);
+ g_hash_table_insert(fcswils_req_hash, req_key, cdata);
}
}
else {
/* Opcode is ACC or RJT */
- conversation = find_conversation (pinfo->fd->num, &pinfo->src, &pinfo->dst,
- pinfo->ptype, pinfo->oxid,
- pinfo->rxid, NO_PORT2);
+ conversation = find_conversation(pinfo->fd->num, &pinfo->src, &pinfo->dst,
+ pinfo->ptype, pinfo->oxid,
+ pinfo->rxid, NO_PORT2);
isreq = FC_SWILS_RPLY;
if (!conversation) {
if (tree && (opcode == FC_SWILS_SWACC)) {
/* No record of what this accept is for. Can't decode */
- proto_tree_add_text (swils_tree, tvb, 0, tvb_length (tvb),
- "No record of Exchg. Unable to decode SW_ACC");
+ proto_tree_add_text(swils_tree, tvb, 0, tvb_length(tvb),
+ "No record of Exchg. Unable to decode SW_ACC");
return;
}
}
else {
ckey.conv_idx = conversation->index;
- cdata = (fcswils_conv_data_t *)g_hash_table_lookup (fcswils_req_hash, &ckey);
+ cdata = (fcswils_conv_data_t *)g_hash_table_lookup(fcswils_req_hash, &ckey);
if (cdata != NULL) {
if (opcode == FC_SWILS_SWACC)
@@ -1854,43 +1846,43 @@ dissect_fcswils (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (tree) {
if ((cdata == NULL) && (opcode != FC_SWILS_SWRJT)) {
/* No record of what this accept is for. Can't decode */
- proto_tree_add_text (swils_tree, tvb, 0, tvb_length (tvb),
- "No record of SW_ILS Req. Unable to decode SW_ACC");
+ proto_tree_add_text(swils_tree, tvb, 0, tvb_length(tvb),
+ "No record of SW_ILS Req. Unable to decode SW_ACC");
return;
}
}
}
}
- if (check_col (pinfo->cinfo, COL_INFO)) {
+ if (check_col(pinfo->cinfo, COL_INFO)) {
if (isreq == FC_SWILS_REQ) {
- col_add_str (pinfo->cinfo, COL_INFO,
- val_to_str (opcode, fc_swils_opcode_key_val, "0x%x"));
+ col_add_str(pinfo->cinfo, COL_INFO,
+ val_to_str(opcode, fc_swils_opcode_key_val, "0x%x"));
}
else if (opcode == FC_SWILS_SWRJT) {
- col_add_fstr (pinfo->cinfo, COL_INFO, "SW_RJT (%s)",
- val_to_str (failed_opcode, fc_swils_opcode_key_val, "0x%x"));
+ col_add_fstr(pinfo->cinfo, COL_INFO, "SW_RJT (%s)",
+ val_to_str(failed_opcode, fc_swils_opcode_key_val, "0x%x"));
}
else {
- col_add_fstr (pinfo->cinfo, COL_INFO, "SW_ACC (%s)",
- val_to_str (opcode, fc_swils_opcode_key_val, "0x%x"));
+ col_add_fstr(pinfo->cinfo, COL_INFO, "SW_ACC (%s)",
+ val_to_str(opcode, fc_swils_opcode_key_val, "0x%x"));
}
}
if (tree) {
- proto_tree_add_item (swils_tree, hf_swils_opcode, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(swils_tree, hf_swils_opcode, tvb, offset, 1, ENC_BIG_ENDIAN);
}
if ((opcode < FC_SWILS_MAXCODE) && fcswils_func_table[opcode].func) {
- fcswils_func_table[opcode].func (tvb, swils_tree, isreq);
+ fcswils_func_table[opcode].func(tvb, swils_tree, isreq);
} else if (opcode == FC_SWILS_AUTH_ILS) {
- /* This is treated differently */
- if (isreq && fcsp_handle)
- call_dissector (fcsp_handle, tvb, pinfo, swils_tree);
+ /* This is treated differently */
+ if (isreq && fcsp_handle)
+ call_dissector(fcsp_handle, tvb, pinfo, swils_tree);
} else {
- /* data dissector */
- next_tvb = tvb_new_subset_remaining (tvb, offset+4);
- call_dissector (data_handle, next_tvb, pinfo, tree);
+ /* data dissector */
+ next_tvb = tvb_new_subset_remaining(tvb, offset+4);
+ call_dissector(data_handle, next_tvb, pinfo, tree);
}
}
@@ -1898,386 +1890,634 @@ dissect_fcswils (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Register the protocol with Wireshark */
void
-proto_register_fcswils (void)
+proto_register_fcswils(void)
{
static hf_register_info hf[] = {
{ &hf_swils_opcode,
{"Cmd Code", "swils.opcode",
- FT_UINT8, BASE_HEX, VALS (fc_swils_opcode_key_val), 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(fc_swils_opcode_key_val), 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_elp_rev,
{"Revision", "swils.elp.rev",
- FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_elp_flags,
{"Flag", "swils.elp.flag",
- FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_elp_r_a_tov,
{"R_A_TOV", "swils.elp.ratov",
- FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_elp_e_d_tov,
{"E_D_TOV", "swils.elp.edtov",
- FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_elp_req_epn,
{"Req Eport Name", "swils.elp.reqepn",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_elp_req_esn,
{"Req Switch Name", "swils.elp.reqesn",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_elp_clsf_svcp,
{"Class F Svc Param", "swils.elp.clsfp",
- FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_elp_clsf_rcvsz,
{"Max Class F Frame Size", "swils.elp.clsfrsz",
- FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_elp_clsf_conseq,
{"Class F Max Concurrent Seq", "swils.elp.clsfcs",
- FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_elp_clsf_e2e,
{"Class F E2E Credit", "swils.elp.cfe2e",
- FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_elp_clsf_openseq,
{"Class F Max Open Seq", "swils.elp.oseq",
- FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_elp_cls1_svcp,
{"Class 1 Svc Param", "swils.elp.cls1p",
- FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_elp_cls1_rcvsz,
{"Class 1 Frame Size", "swils.elp.cls1rsz",
- FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_elp_cls2_svcp,
{"Class 2 Svc Param", "swils.elp.cls2p",
- FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_elp_cls2_rcvsz,
{"Class 2 Frame Size", "swils.elp.cls2rsz",
- FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_elp_cls3_svcp,
{"Class 3 Svc Param", "swils.elp.cls3p",
- FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_elp_cls3_rcvsz,
{"Class 3 Frame Size", "swils.elp.cls3rsz",
- FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_elp_isl_fc_mode,
{"ISL Flow Ctrl Mode", "swils.elp.fcmode",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_elp_fcplen,
{"Flow Ctrl Param Len", "swils.elp.fcplen",
- FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_elp_b2bcredit,
{"B2B Credit", "swils.elp.b2b",
- FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_elp_compat1,
{"Compatibility Param 1", "swils.elp.compat1",
- FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_elp_compat2,
{"Compatibility Param 2", "swils.elp.compat2",
- FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_elp_compat3,
{"Compatibility Param 3", "swils.elp.compat3",
- FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_elp_compat4,
{"Compatibility Param 4", "swils.elp.compat4",
- FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_efp_rec_type,
{"Record Type", "swils.efp.rectype",
- FT_UINT8, BASE_HEX, VALS (fcswils_rectype_val), 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(fcswils_rectype_val), 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_efp_dom_id,
{"Domain ID", "swils.efp.domid",
- FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_efp_switch_name,
{"Switch Name", "swils.efp.sname",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_efp_mcast_grpno,
{"Mcast Grp#", "swils.efp.mcastno",
- FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_efp_alias_token,
{"Alias Token", "swils.efp.aliastok",
- FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_efp_record_len,
{"Record Len", "swils.efp.recordlen",
- FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_efp_payload_len,
{"Payload Len", "swils.efp.payloadlen",
- FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_efp_pswitch_pri,
{"Principal Switch Priority", "swils.efp.psprio",
- FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_efp_pswitch_name,
{"Principal Switch Name", "swils.efp.psname",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_dia_switch_name,
{"Switch Name", "swils.dia.sname",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_rdi_payload_len,
{"Payload Len", "swils.rdi.len",
- FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_rdi_req_sname,
{"Req Switch Name", "swils.rdi.reqsn",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_fspfh_cmd,
{"Command:", "swils.fspf.cmd",
- FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_fspfh_rev,
{"Version", "swils.fspf.ver",
- FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_fspfh_ar_num,
{"AR Number", "swils.fspf.arnum",
- FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_fspfh_auth_type,
{"Authentication Type", "swils.fspf.authtype",
- FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_fspfh_dom_id,
{"Originating Domain ID", "swils.fspf.origdomid",
- FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_fspfh_auth,
{"Authentication", "swils.fspf.auth",
- FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_hlo_options,
{"Options", "swils.hlo.options",
- FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_hlo_hloint,
{"Hello Interval (secs)", "swils.hlo.hloint",
- FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_hlo_deadint,
{"Dead Interval (secs)", "swils.hlo.deadint",
- FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_hlo_rcv_domid,
{"Recipient Domain ID", "swils.hlo.rcvdomid",
- FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_hlo_orig_pidx,
{"Originating Port Idx", "swils.hlo.origpidx",
- FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL}},
+ FT_UINT24, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_lsrh_lsr_type,
{"LSR Type", "swils.lsr.type",
- FT_UINT8, BASE_HEX, VALS (fc_swils_fspf_linkrec_val), 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(fc_swils_fspf_linkrec_val), 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_lsrh_lsid,
{"Link State Id", "swils.ls.id",
- FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_lsrh_adv_domid,
{"Advertising Domain Id", "swils.lsr.advdomid",
- FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_lsrh_ls_incid,
{"LS Incarnation Number", "swils.lsr.incid",
- FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_ldrec_linkid,
{"Link ID", "swils.ldr.linkid",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_ldrec_out_pidx,
{"Output Port Idx", "swils.ldr.out_portidx",
- FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL}},
+ FT_UINT24, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_ldrec_nbr_pidx,
{"Neighbor Port Idx", "swils.ldr.nbr_portidx",
- FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL}},
+ FT_UINT24, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_ldrec_link_type,
{"Link Type", "swils.ldr.linktype",
- FT_UINT8, BASE_HEX, VALS (fc_swils_link_type_val), 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(fc_swils_link_type_val), 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_ldrec_link_cost,
{"Link Cost", "swils.ldr.linkcost",
- FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_rscn_evtype,
{"Event Type", "swils.rscn.evtype",
- FT_UINT8, BASE_DEC, VALS (fc_swils_rscn_portstate_val), 0xF0, NULL, HFILL}},
+ FT_UINT8, BASE_DEC, VALS(fc_swils_rscn_portstate_val), 0xF0,
+ NULL, HFILL}},
+
{ &hf_swils_rscn_addrfmt,
{"Address Format", "swils.rscn.addrfmt",
- FT_UINT8, BASE_DEC, VALS (fc_swils_rscn_addrfmt_val), 0x0F, NULL, HFILL}},
+ FT_UINT8, BASE_DEC, VALS(fc_swils_rscn_addrfmt_val), 0x0F,
+ NULL, HFILL}},
+
{ &hf_swils_rscn_affectedport,
{"Affected Port ID", "swils.rscn.affectedport",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_rscn_detectfn,
{"Detection Function", "swils.rscn.detectfn",
- FT_UINT32, BASE_HEX, VALS (fc_swils_rscn_detectfn_val), 0x0, NULL, HFILL}},
+ FT_UINT32, BASE_HEX, VALS(fc_swils_rscn_detectfn_val), 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_rscn_portstate,
{"Port State", "swils.rscn.portstate",
- FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_rscn_portid,
{"Port Id", "swils.rscn.portid",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_rscn_pwwn,
{"Port WWN", "swils.rscn.pwwn",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_rscn_nwwn,
{"Node WWN", "swils.rscn.nwwn",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_esc_swvendorid,
{"Switch Vendor ID", "swils.esc.swvendor",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_esc_pdesc_vendorid,
{"Vendor ID", "swils.esc.vendorid",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_esc_protocolid,
{"Protocol ID", "swils.esc.protocol",
- FT_UINT16, BASE_HEX, VALS (fc_swils_esc_protocol_val), 0x0, NULL, HFILL}},
+ FT_UINT16, BASE_HEX, VALS(fc_swils_esc_protocol_val), 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_zone_activezonenm,
{"Active Zoneset Name", "swils.mr.activezonesetname",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_zone_objname,
{"Zone Object Name", "swils.zone.zoneobjname",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_zone_objtype,
{"Zone Object Type", "swils.zone.zoneobjtype",
- FT_UINT8, BASE_HEX, VALS (fc_swils_zoneobj_type_val), 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(fc_swils_zoneobj_type_val), 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_zone_mbrtype,
{"Zone Member Type", "swils.zone.mbrtype",
- FT_UINT8, BASE_HEX, VALS (fc_swils_zonembr_type_val), 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(fc_swils_zonembr_type_val), 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_zone_protocol,
{"Zone Protocol", "swils.zone.protocol",
- FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_zone_mbrid,
{"Member Identifier", "swils.zone.mbrid",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_zone_status,
{"Zone Command Status", "swils.zone.status",
- FT_UINT8, BASE_HEX, VALS (fc_swils_mr_rsp_val), 0x0,
+ FT_UINT8, BASE_HEX, VALS(fc_swils_mr_rsp_val), 0x0,
"Applies to MR, ACA, RCA, SFC, UFC", HFILL}},
+
{ &hf_swils_zone_reason,
{"Zone Command Reason Code", "swils.zone.reason",
- FT_UINT8, BASE_HEX, VALS (fc_swils_mr_reason_val), 0x0,
+ FT_UINT8, BASE_HEX, VALS(fc_swils_mr_reason_val), 0x0,
"Applies to MR, ACA, RCA, SFC, UFC", HFILL}},
+
{ &hf_swils_aca_domainid,
{"Known Domain ID", "swils.aca.domainid",
- FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_sfc_opcode,
{"Operation Request", "swils.sfc.opcode",
- FT_UINT8, BASE_HEX, VALS (fc_swils_sfc_op_val), 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(fc_swils_sfc_op_val), 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_sfc_zonenm,
{"Zone Set Name", "swils.sfc.zonename",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_rjt,
{"Reason Code", "swils.rjt.reason",
- FT_UINT8, BASE_HEX, VALS (fc_swils_rjt_val), 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(fc_swils_rjt_val), 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_rjtdet,
{"Reason Code Explanantion", "swils.rjt.reasonexpl",
- FT_UINT8, BASE_HEX, VALS (fc_swils_deterr_val), 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(fc_swils_deterr_val), 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_rjtvendor,
{"Vendor Unique Error Code", "swils.rjt.vendor",
- FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_zone_mbrid_lun,
{"LUN", "swils.zone.lun",
- FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_ess_rev,
{"Revision", "swils.ess.revision",
- FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_ess_len,
{"Payload Length", "swils.ess.leb",
- FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_ess_numobj,
{"Number of Capability Objects", "swils.ess.numobj",
- FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_interconnect_list_len,
{"List Length", "swils.ess.listlen",
- FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_ess_vendorname,
{"Vendor Name", "swils.ess.vendorname",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_ess_modelname,
{"Model Name", "swils.ess.modelname",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_ess_relcode,
{"Release Code", "swils.ess.relcode",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_ess_vendorspecific,
{"Vendor Specific", "swils.ess.vendorspecific",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_ess_cap_type,
{"Type", "swils.ess.capability.type",
- FT_UINT8, BASE_DEC, VALS (fc_ct_gstype_vals), 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_DEC, VALS(fc_ct_gstype_vals), 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_ess_cap_subtype,
{"Subtype", "swils.ess.capability.subtype",
- FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_ess_cap_numentries,
{"Number of Entries", "swils.ess.capability.numentries",
- FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_ess_cap_svc,
{"Service Name", "swils.ess.capability.service",
- FT_UINT8, BASE_DEC, VALS (fc_ct_gsserver_vals), 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_DEC, VALS(fc_ct_gsserver_vals), 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_ess_dns_obj0h,
{"Name Server Entry Object 00h Support", "swils.ess.capability.dns.obj0h",
- FT_BOOLEAN, 8, NULL, 0x1, NULL, HFILL}},
+ FT_BOOLEAN, 8, NULL, 0x1,
+ NULL, HFILL}},
+
{ &hf_swils_ess_dns_obj1h,
{"Name Server Entry Object 01h Support", "swils.ess.capability.dns.obj1h",
- FT_BOOLEAN, 8, NULL, 0x2, NULL, HFILL}},
+ FT_BOOLEAN, 8, NULL, 0x2,
+ NULL, HFILL}},
+
{ &hf_swils_ess_dns_obj2h,
{"Name Server Entry Object 02h Support", "swils.ess.capability.dns.obj2h",
- FT_BOOLEAN, 8, NULL, 0x4, NULL, HFILL}},
+ FT_BOOLEAN, 8, NULL, 0x4,
+ NULL, HFILL}},
+
{ &hf_swils_ess_dns_obj3h,
{"Name Server Entry Object 03h Support", "swils.ess.capability.dns.obj3h",
- FT_BOOLEAN, 8, NULL, 0x8, NULL, HFILL}},
+ FT_BOOLEAN, 8, NULL, 0x8,
+ NULL, HFILL}},
+
{ &hf_swils_ess_dns_zlacc,
{"GE_PT Zero Length Accepted", "swils.ess.capability.dns.zlacc",
- FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL}},
+ FT_BOOLEAN, 8, NULL, 0x10,
+ NULL, HFILL}},
+
{ &hf_swils_ess_dns_vendor,
{"Vendor Specific Flags", "swils.ess.capability.dns.vendor",
- FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL}},
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_ess_fctlr_rscn,
{"SW_RSCN Supported", "swils.ess.capability.fctlr.rscn",
- FT_BOOLEAN, 8, NULL, 0x1, NULL, HFILL}},
+ FT_BOOLEAN, 8, NULL, 0x1,
+ NULL, HFILL}},
+
{ &hf_swils_ess_fctlr_vendor,
{"Vendor Specific Flags", "swils.ess.capability.fctlr.vendor",
- FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL}},
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_ess_fcs_basic,
{"Basic Configuration Services", "swils.ess.capability.fcs.basic",
- FT_BOOLEAN, 8, NULL, 0x1, NULL, HFILL}},
+ FT_BOOLEAN, 8, NULL, 0x1,
+ NULL, HFILL}},
+
{ &hf_swils_ess_fcs_platform,
{"Platform Configuration Services", "swils.ess.capability.fcs.platform",
- FT_BOOLEAN, 8, NULL, 0x2, NULL, HFILL}},
+ FT_BOOLEAN, 8, NULL, 0x2,
+ NULL, HFILL}},
+
{ &hf_swils_ess_fcs_topology,
{"Topology Discovery Services", "swils.ess.capability.fcs.topology",
- FT_BOOLEAN, 8, NULL, 0x4, NULL, HFILL}},
+ FT_BOOLEAN, 8, NULL, 0x4,
+ NULL, HFILL}},
+
{ &hf_swils_ess_fcs_enhanced,
{"Enhanced Configuration Services", "swils.ess.capability.fcs.enhanced",
- FT_BOOLEAN, 8, NULL, 0x8, NULL, HFILL}},
+ FT_BOOLEAN, 8, NULL, 0x8,
+ NULL, HFILL}},
+
{ &hf_swils_ess_fzs_enh_supp,
{"Enhanced Zoning Supported", "swils.ess.capability.fzs.ezonesupp",
- FT_BOOLEAN, 8, NULL, 0x1, NULL, HFILL}},
+ FT_BOOLEAN, 8, NULL, 0x1,
+ NULL, HFILL}},
+
{ &hf_swils_ess_fzs_enh_ena,
{"Enhanced Zoning Enabled", "swils.ess.capability.fzs.ezoneena",
- FT_BOOLEAN, 8, NULL, 0x2, NULL, HFILL}},
+ FT_BOOLEAN, 8, NULL, 0x2,
+ NULL, HFILL}},
+
{ &hf_swils_ess_fzs_mr,
{"Merge Control Setting", "swils.ess.capability.fzs.mr",
- FT_BOOLEAN, 8, NULL, 0x4, NULL, HFILL}},
+ FT_BOOLEAN, 8, NULL, 0x4,
+ NULL, HFILL}},
+
{ &hf_swils_ess_fzs_defzone,
{"Default Zone Setting", "swils.ess.capability.fzs.defzone",
- FT_BOOLEAN, 8, NULL, 0x8, NULL, HFILL}},
+ FT_BOOLEAN, 8, NULL, 0x8,
+ NULL, HFILL}},
+
{ &hf_swils_ess_fzs_zsdb_supp,
{"Zoneset Database Supported", "swils.ess.capability.fzs.zsdbsupp",
- FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL}},
+ FT_BOOLEAN, 8, NULL, 0x10,
+ NULL, HFILL}},
+
{ &hf_swils_ess_fzs_zsdb_ena,
{"Zoneset Database Enabled", "swils.ess.capability.fzs.zsdbena",
- FT_BOOLEAN, 8, NULL, 0x20, NULL, HFILL}},
+ FT_BOOLEAN, 8, NULL, 0x20,
+ NULL, HFILL}},
+
{ &hf_swils_ess_fzs_adc_supp,
{"Active Direct Command Supported", "swils.ess.capability.fzs.adcsupp",
- FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL}},
+ FT_BOOLEAN, 8, NULL, 0x40,
+ NULL, HFILL}},
+
{ &hf_swils_ess_fzs_hardzone,
{"Hard Zoning Supported", "swils.ess.capability.fzs.hardzone",
- FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL}},
+ FT_BOOLEAN, 8, NULL, 0x80,
+ NULL, HFILL}},
+
{ &hf_swils_ess_cap_len,
{"Length", "swils.ess.capability.length",
- FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_ess_cap_t10,
{"T10 Vendor ID", "swils.ess.capability.t10id",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_ess_cap_vendorobj,
{"Vendor-Specific Info", "swils.ess.capability.vendorobj",
- FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_mrra_rev,
{"Revision", "swils.mrra.revision",
- FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_mrra_size,
{"Merge Request Size", "swils.mrra.size",
- FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_mrra_vendorid,
{"Vendor ID", "swils.mrra.vendorid",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_mrra_vendorinfo,
{"Vendor-Specific Info", "swils.mrra.vendorinfo",
- FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_mrra_reply,
{"MRRA Response", "swils.mrra.reply",
- FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_mrra_reply_size,
{"Maximum Resources Available", "swils.mrra.replysize",
- FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
{ &hf_swils_mrra_waittime,
{"Waiting Period (secs)", "swils.mrra.waittime",
- FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
+
};
static gint *ett[] = {
@@ -2323,13 +2563,13 @@ proto_register_fcswils (void)
}
void
-proto_reg_handoff_fcswils (void)
+proto_reg_handoff_fcswils(void)
{
dissector_handle_t swils_handle;
- swils_handle = create_dissector_handle (dissect_fcswils, proto_fcswils);
+ swils_handle = create_dissector_handle(dissect_fcswils, proto_fcswils);
dissector_add_uint("fc.ftype", FC_FTYPE_SWILS, swils_handle);
- data_handle = find_dissector ("data");
- fcsp_handle = find_dissector ("fcsp");
+ data_handle = find_dissector("data");
+ fcsp_handle = find_dissector("fcsp");
}
diff --git a/epan/dissectors/packet-fddi.c b/epan/dissectors/packet-fddi.c
index cc41ee3f5c..a7a71102de 100644
--- a/epan/dissectors/packet-fddi.c
+++ b/epan/dissectors/packet-fddi.c
@@ -32,10 +32,10 @@
# include "config.h"
#endif
-#include <string.h>
#include <glib.h>
-#include <epan/bitswap.h>
+
#include <epan/packet.h>
+#include <epan/bitswap.h>
#include <epan/prefs.h>
#include "packet-fddi.h"
#include "packet-llc.h"
@@ -60,78 +60,78 @@ static int fddi_tap = -1;
static gboolean fddi_padding = FALSE;
-#define FDDI_PADDING ((fddi_padding) ? 3 : 0)
+#define FDDI_PADDING ((fddi_padding) ? 3 : 0)
/* FDDI Frame Control values */
-#define FDDI_FC_VOID 0x00 /* Void frame */
-#define FDDI_FC_NRT 0x80 /* Nonrestricted token */
-#define FDDI_FC_RT 0xc0 /* Restricted token */
-#define FDDI_FC_MAC 0xc0 /* MAC frame */
-#define FDDI_FC_SMT 0x40 /* SMT frame */
-#define FDDI_FC_SMT_INFO 0x41 /* SMT Info */
-#define FDDI_FC_SMT_NSA 0x4F /* SMT Next station adrs */
-#define FDDI_FC_SMT_MIN FDDI_FC_SMT_INFO
-#define FDDI_FC_SMT_MAX FDDI_FC_SMT_NSA
-#define FDDI_FC_MAC_MIN 0xc1
-#define FDDI_FC_MAC_BEACON 0xc2 /* MAC Beacon frame */
-#define FDDI_FC_MAC_CLAIM 0xc3 /* MAC Claim frame */
-#define FDDI_FC_MAC_MAX 0xcf
-#define FDDI_FC_LLC_ASYNC 0x50 /* Async. LLC frame */
-#define FDDI_FC_LLC_ASYNC_MIN FDDI_FC_LLC_ASYNC
-#define FDDI_FC_LLC_ASYNC_DEF 0x54
-#define FDDI_FC_LLC_ASYNC_MAX 0x5f
-#define FDDI_FC_LLC_SYNC 0xd0 /* Sync. LLC frame */
-#define FDDI_FC_LLC_SYNC_MIN FDDI_FC_LLC_SYNC
-#define FDDI_FC_LLC_SYNC_MAX 0xd7
-#define FDDI_FC_IMP_ASYNC 0x60 /* Implementor Async. */
-#define FDDI_FC_IMP_ASYNC_MIN FDDI_FC_IMP_ASYNC
-#define FDDI_FC_IMP_ASYNC_MAX 0x6f
-#define FDDI_FC_IMP_SYNC 0xe0 /* Implementor Synch. */
-
-#define FDDI_FC_CLFF 0xF0 /* Class/Length/Format bits */
-#define FDDI_FC_ZZZZ 0x0F /* Control bits */
+#define FDDI_FC_VOID 0x00 /* Void frame */
+#define FDDI_FC_NRT 0x80 /* Nonrestricted token */
+#define FDDI_FC_RT 0xc0 /* Restricted token */
+#define FDDI_FC_MAC 0xc0 /* MAC frame */
+#define FDDI_FC_SMT 0x40 /* SMT frame */
+#define FDDI_FC_SMT_INFO 0x41 /* SMT Info */
+#define FDDI_FC_SMT_NSA 0x4F /* SMT Next station adrs */
+#define FDDI_FC_SMT_MIN FDDI_FC_SMT_INFO
+#define FDDI_FC_SMT_MAX FDDI_FC_SMT_NSA
+#define FDDI_FC_MAC_MIN 0xc1
+#define FDDI_FC_MAC_BEACON 0xc2 /* MAC Beacon frame */
+#define FDDI_FC_MAC_CLAIM 0xc3 /* MAC Claim frame */
+#define FDDI_FC_MAC_MAX 0xcf
+#define FDDI_FC_LLC_ASYNC 0x50 /* Async. LLC frame */
+#define FDDI_FC_LLC_ASYNC_MIN FDDI_FC_LLC_ASYNC
+#define FDDI_FC_LLC_ASYNC_DEF 0x54
+#define FDDI_FC_LLC_ASYNC_MAX 0x5f
+#define FDDI_FC_LLC_SYNC 0xd0 /* Sync. LLC frame */
+#define FDDI_FC_LLC_SYNC_MIN FDDI_FC_LLC_SYNC
+#define FDDI_FC_LLC_SYNC_MAX 0xd7
+#define FDDI_FC_IMP_ASYNC 0x60 /* Implementor Async. */
+#define FDDI_FC_IMP_ASYNC_MIN FDDI_FC_IMP_ASYNC
+#define FDDI_FC_IMP_ASYNC_MAX 0x6f
+#define FDDI_FC_IMP_SYNC 0xe0 /* Implementor Synch. */
+
+#define FDDI_FC_CLFF 0xF0 /* Class/Length/Format bits */
+#define FDDI_FC_ZZZZ 0x0F /* Control bits */
/*
* Async frame ZZZZ bits:
*/
-#define FDDI_FC_ASYNC_R 0x08 /* Reserved */
-#define FDDI_FC_ASYNC_PRI 0x07 /* Priority */
+#define FDDI_FC_ASYNC_R 0x08 /* Reserved */
+#define FDDI_FC_ASYNC_PRI 0x07 /* Priority */
-#define CLFF_BITS(fc) (((fc) & FDDI_FC_CLFF) >> 4)
-#define ZZZZ_BITS(fc) ((fc) & FDDI_FC_ZZZZ)
+#define CLFF_BITS(fc) (((fc) & FDDI_FC_CLFF) >> 4)
+#define ZZZZ_BITS(fc) ((fc) & FDDI_FC_ZZZZ)
static const value_string clf_vals[] = {
- { CLFF_BITS(FDDI_FC_VOID), "Void" },
- { CLFF_BITS(FDDI_FC_SMT), "SMT" },
- { CLFF_BITS(FDDI_FC_LLC_ASYNC), "Async LLC" },
- { CLFF_BITS(FDDI_FC_IMP_ASYNC), "Implementor Async" },
- { CLFF_BITS(FDDI_FC_NRT), "Nonrestricted Token" },
- { CLFF_BITS(FDDI_FC_MAC), "MAC" },
- { CLFF_BITS(FDDI_FC_LLC_SYNC), "Sync LLC" },
- { CLFF_BITS(FDDI_FC_IMP_SYNC), "Implementor Sync" },
- { 0, NULL }
+ { CLFF_BITS(FDDI_FC_VOID), "Void" },
+ { CLFF_BITS(FDDI_FC_SMT), "SMT" },
+ { CLFF_BITS(FDDI_FC_LLC_ASYNC), "Async LLC" },
+ { CLFF_BITS(FDDI_FC_IMP_ASYNC), "Implementor Async" },
+ { CLFF_BITS(FDDI_FC_NRT), "Nonrestricted Token" },
+ { CLFF_BITS(FDDI_FC_MAC), "MAC" },
+ { CLFF_BITS(FDDI_FC_LLC_SYNC), "Sync LLC" },
+ { CLFF_BITS(FDDI_FC_IMP_SYNC), "Implementor Sync" },
+ { 0, NULL }
};
static const value_string smt_subtype_vals[] = {
- { ZZZZ_BITS(FDDI_FC_SMT_INFO), "Info" },
- { ZZZZ_BITS(FDDI_FC_SMT_NSA), "Next Station Address" },
- { 0, NULL }
+ { ZZZZ_BITS(FDDI_FC_SMT_INFO), "Info" },
+ { ZZZZ_BITS(FDDI_FC_SMT_NSA), "Next Station Address" },
+ { 0, NULL }
};
static const value_string mac_subtype_vals[] = {
- { ZZZZ_BITS(FDDI_FC_MAC_BEACON), "Beacon" },
- { ZZZZ_BITS(FDDI_FC_MAC_CLAIM), "Claim" },
- { 0, NULL }
+ { ZZZZ_BITS(FDDI_FC_MAC_BEACON), "Beacon" },
+ { ZZZZ_BITS(FDDI_FC_MAC_CLAIM), "Claim" },
+ { 0, NULL }
};
-#define FDDI_HEADER_SIZE 13
+#define FDDI_HEADER_SIZE 13
/* field positions */
-#define FDDI_P_FC 0
-#define FDDI_P_DHOST 1
-#define FDDI_P_SHOST 7
+#define FDDI_P_FC 0
+#define FDDI_P_DHOST 1
+#define FDDI_P_SHOST 7
static dissector_handle_t llc_handle;
static dissector_handle_t data_handle;
@@ -139,18 +139,18 @@ static dissector_handle_t data_handle;
static void
swap_mac_addr(guint8 *swapped_addr, tvbuff_t *tvb, gint offset)
{
- int i;
+ int i;
- for (i = 0; i < 6; i++) {
- swapped_addr[i] = BIT_SWAP(tvb_get_guint8(tvb, offset+i));
- }
+ for (i = 0; i < 6; i++) {
+ swapped_addr[i] = BIT_SWAP(tvb_get_guint8(tvb, offset+i));
+ }
}
void
capture_fddi(const guchar *pd, int len, packet_counts *ld)
{
- int offset = 0, fc;
+ int offset = 0, fc;
if (!BYTES_ARE_IN_FRAME(0, len, FDDI_HEADER_SIZE + FDDI_PADDING)) {
ld->other++;
@@ -197,25 +197,25 @@ fddifc_to_str(int fc)
switch (fc) {
- case FDDI_FC_VOID: /* Void frame */
+ case FDDI_FC_VOID: /* Void frame */
return "Void frame";
- case FDDI_FC_NRT: /* Nonrestricted token */
+ case FDDI_FC_NRT: /* Nonrestricted token */
return "Nonrestricted token";
- case FDDI_FC_RT: /* Restricted token */
+ case FDDI_FC_RT: /* Restricted token */
return "Restricted token";
- case FDDI_FC_SMT_INFO: /* SMT Info */
+ case FDDI_FC_SMT_INFO: /* SMT Info */
return "SMT info";
- case FDDI_FC_SMT_NSA: /* SMT Next station adrs */
+ case FDDI_FC_SMT_NSA: /* SMT Next station adrs */
return "SMT Next station address";
- case FDDI_FC_MAC_BEACON: /* MAC Beacon frame */
+ case FDDI_FC_MAC_BEACON: /* MAC Beacon frame */
return "MAC beacon";
- case FDDI_FC_MAC_CLAIM: /* MAC Claim frame */
+ case FDDI_FC_MAC_CLAIM: /* MAC Claim frame */
return "MAC claim token";
default:
@@ -234,7 +234,7 @@ fddifc_to_str(int fc)
g_snprintf(strbuf, sizeof(strbuf), "Async LLC frame, control %x", fc & FDDI_FC_ZZZZ);
else
g_snprintf(strbuf, sizeof(strbuf), "Async LLC frame, priority %d",
- fc & FDDI_FC_ASYNC_PRI);
+ fc & FDDI_FC_ASYNC_PRI);
return strbuf;
case FDDI_FC_LLC_SYNC:
@@ -246,12 +246,12 @@ fddifc_to_str(int fc)
case FDDI_FC_IMP_ASYNC:
g_snprintf(strbuf, sizeof(strbuf), "Implementor async frame, control %x",
- fc & FDDI_FC_ZZZZ);
+ fc & FDDI_FC_ZZZZ);
return strbuf;
case FDDI_FC_IMP_SYNC:
g_snprintf(strbuf, sizeof(strbuf), "Implementor sync frame, control %x",
- fc & FDDI_FC_ZZZZ);
+ fc & FDDI_FC_ZZZZ);
return strbuf;
default:
@@ -263,36 +263,35 @@ fddifc_to_str(int fc)
static void
dissect_fddi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- gboolean bitswapped)
+ gboolean bitswapped)
{
- proto_tree *fh_tree = NULL;
- proto_item *ti, *hidden_item;
- const gchar *fc_str;
- proto_tree *fc_tree;
- static guchar src[6], dst[6];
- guchar src_swapped[6], dst_swapped[6];
- tvbuff_t *next_tvb;
- static fddi_hdr fddihdrs[4];
- static int fddihdr_num=0;
- fddi_hdr *fddihdr;
+ proto_tree *fh_tree = NULL;
+ proto_item *ti, *hidden_item;
+ const gchar *fc_str;
+ proto_tree *fc_tree;
+ static guchar src[6], dst[6];
+ guchar src_swapped[6], dst_swapped[6];
+ tvbuff_t *next_tvb;
+ static fddi_hdr fddihdrs[4];
+ static int fddihdr_num = 0;
+ fddi_hdr *fddihdr;
fddihdr_num++;
- if(fddihdr_num>=4){
- fddihdr_num=0;
+ if (fddihdr_num >= 4) {
+ fddihdr_num = 0;
}
- fddihdr=&fddihdrs[fddihdr_num];
+ fddihdr = &fddihdrs[fddihdr_num];
col_set_str(pinfo->cinfo, COL_PROTOCOL, "FDDI");
fddihdr->fc = tvb_get_guint8(tvb, FDDI_P_FC + FDDI_PADDING);
fc_str = fddifc_to_str(fddihdr->fc);
- if (check_col(pinfo->cinfo, COL_INFO))
- col_add_str(pinfo->cinfo, COL_INFO, fc_str);
+ col_add_str(pinfo->cinfo, COL_INFO, fc_str);
if (tree) {
ti = proto_tree_add_protocol_format(tree, proto_fddi, tvb, 0, FDDI_HEADER_SIZE+FDDI_PADDING,
- "Fiber Distributed Data Interface, %s", fc_str);
+ "Fiber Distributed Data Interface, %s", fc_str);
fh_tree = proto_item_add_subtree(ti, ett_fddi);
ti = proto_tree_add_uint_format(fh_tree, hf_fddi_fc, tvb, FDDI_P_FC + FDDI_PADDING, 1, fddihdr->fc,
"Frame Control: 0x%02x (%s)", fddihdr->fc, fc_str);
@@ -355,15 +354,15 @@ dissect_fddi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
SET_ADDRESS(&fddihdr->src, AT_ETHER, 6, &src[0]);
if (fh_tree) {
- proto_tree_add_ether(fh_tree, hf_fddi_src, tvb, FDDI_P_SHOST + FDDI_PADDING, 6, src);
- hidden_item = proto_tree_add_ether(fh_tree, hf_fddi_addr, tvb, FDDI_P_SHOST + FDDI_PADDING, 6, src);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
-
- /* hide some bit-swapped mac address fields in the proto_tree, just in case */
- hidden_item = proto_tree_add_ether(fh_tree, hf_fddi_src, tvb, FDDI_P_SHOST + FDDI_PADDING, 6, src_swapped);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_ether(fh_tree, hf_fddi_addr, tvb, FDDI_P_SHOST + FDDI_PADDING, 6, src_swapped);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
+ proto_tree_add_ether(fh_tree, hf_fddi_src, tvb, FDDI_P_SHOST + FDDI_PADDING, 6, src);
+ hidden_item = proto_tree_add_ether(fh_tree, hf_fddi_addr, tvb, FDDI_P_SHOST + FDDI_PADDING, 6, src);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+
+ /* hide some bit-swapped mac address fields in the proto_tree, just in case */
+ hidden_item = proto_tree_add_ether(fh_tree, hf_fddi_src, tvb, FDDI_P_SHOST + FDDI_PADDING, 6, src_swapped);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ hidden_item = proto_tree_add_ether(fh_tree, hf_fddi_addr, tvb, FDDI_P_SHOST + FDDI_PADDING, 6, src_swapped);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
}
next_tvb = tvb_new_subset_remaining(tvb, FDDI_HEADER_SIZE + FDDI_PADDING);
@@ -405,101 +404,101 @@ dissect_fddi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
static void
dissect_fddi_bitswapped(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- dissect_fddi(tvb, pinfo, tree, TRUE);
+ dissect_fddi(tvb, pinfo, tree, TRUE);
}
static void
dissect_fddi_not_bitswapped(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- dissect_fddi(tvb, pinfo, tree, FALSE);
+ dissect_fddi(tvb, pinfo, tree, FALSE);
}
void
proto_register_fddi(void)
{
- static hf_register_info hf[] = {
-
- /*
- * XXX - we want this guy to have his own private formatting
- * routine, using "fc_to_str()"; if "fc_to_str()" returns
- * NULL, just show the hex value, else show the string.
- */
- { &hf_fddi_fc,
- { "Frame Control", "fddi.fc", FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_fddi_fc_clf,
- { "Class/Length/Format", "fddi.fc.clf", FT_UINT8, BASE_HEX, VALS(clf_vals), FDDI_FC_CLFF,
- NULL, HFILL }},
-
- { &hf_fddi_fc_prio,
- { "Priority", "fddi.fc.prio", FT_UINT8, BASE_DEC, NULL, FDDI_FC_ASYNC_PRI,
- NULL, HFILL }},
-
- { &hf_fddi_fc_smt_subtype,
- { "SMT Subtype", "fddi.fc.smt_subtype", FT_UINT8, BASE_DEC, VALS(smt_subtype_vals), FDDI_FC_ZZZZ,
- NULL, HFILL }},
-
- { &hf_fddi_fc_mac_subtype,
- { "MAC Subtype", "fddi.fc.mac_subtype", FT_UINT8, BASE_DEC, VALS(mac_subtype_vals), FDDI_FC_ZZZZ,
- NULL, HFILL }},
-
- { &hf_fddi_dst,
- { "Destination", "fddi.dst", FT_ETHER, BASE_NONE, NULL, 0x0,
- "Destination Hardware Address", HFILL }},
-
- { &hf_fddi_src,
- { "Source", "fddi.src", FT_ETHER, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_fddi_addr,
- { "Source or Destination Address", "fddi.addr", FT_ETHER, BASE_NONE, NULL, 0x0,
- "Source or Destination Hardware Address", HFILL }},
-
- };
- static gint *ett[] = {
- &ett_fddi,
- &ett_fddi_fc,
- };
-
- module_t *fddi_module;
-
- proto_fddi = proto_register_protocol("Fiber Distributed Data Interface",
- "FDDI", "fddi");
- proto_register_field_array(proto_fddi, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
-
- /*
- * Called from various dissectors for encapsulated FDDI frames.
- * We assume the MAC addresses in them aren't bitswapped.
- */
- register_dissector("fddi", dissect_fddi_not_bitswapped, proto_fddi);
-
- fddi_module = prefs_register_protocol(proto_fddi, NULL);
- prefs_register_bool_preference(fddi_module, "padding",
- "Add 3-byte padding to all FDDI packets",
- "Whether the FDDI dissector should add 3-byte padding to all "
- "captured FDDI packets (useful with e.g. Tru64 UNIX tcpdump)",
- &fddi_padding);
-
- fddi_tap = register_tap("fddi");
+ static hf_register_info hf[] = {
+
+ /*
+ * XXX - we want this guy to have his own private formatting
+ * routine, using "fc_to_str()"; if "fc_to_str()" returns
+ * NULL, just show the hex value, else show the string.
+ */
+ { &hf_fddi_fc,
+ { "Frame Control", "fddi.fc", FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_fddi_fc_clf,
+ { "Class/Length/Format", "fddi.fc.clf", FT_UINT8, BASE_HEX, VALS(clf_vals), FDDI_FC_CLFF,
+ NULL, HFILL }},
+
+ { &hf_fddi_fc_prio,
+ { "Priority", "fddi.fc.prio", FT_UINT8, BASE_DEC, NULL, FDDI_FC_ASYNC_PRI,
+ NULL, HFILL }},
+
+ { &hf_fddi_fc_smt_subtype,
+ { "SMT Subtype", "fddi.fc.smt_subtype", FT_UINT8, BASE_DEC, VALS(smt_subtype_vals), FDDI_FC_ZZZZ,
+ NULL, HFILL }},
+
+ { &hf_fddi_fc_mac_subtype,
+ { "MAC Subtype", "fddi.fc.mac_subtype", FT_UINT8, BASE_DEC, VALS(mac_subtype_vals), FDDI_FC_ZZZZ,
+ NULL, HFILL }},
+
+ { &hf_fddi_dst,
+ { "Destination", "fddi.dst", FT_ETHER, BASE_NONE, NULL, 0x0,
+ "Destination Hardware Address", HFILL }},
+
+ { &hf_fddi_src,
+ { "Source", "fddi.src", FT_ETHER, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_fddi_addr,
+ { "Source or Destination Address", "fddi.addr", FT_ETHER, BASE_NONE, NULL, 0x0,
+ "Source or Destination Hardware Address", HFILL }},
+
+ };
+ static gint *ett[] = {
+ &ett_fddi,
+ &ett_fddi_fc,
+ };
+
+ module_t *fddi_module;
+
+ proto_fddi = proto_register_protocol("Fiber Distributed Data Interface",
+ "FDDI", "fddi");
+ proto_register_field_array(proto_fddi, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ /*
+ * Called from various dissectors for encapsulated FDDI frames.
+ * We assume the MAC addresses in them aren't bitswapped.
+ */
+ register_dissector("fddi", dissect_fddi_not_bitswapped, proto_fddi);
+
+ fddi_module = prefs_register_protocol(proto_fddi, NULL);
+ prefs_register_bool_preference(fddi_module, "padding",
+ "Add 3-byte padding to all FDDI packets",
+ "Whether the FDDI dissector should add 3-byte padding to all "
+ "captured FDDI packets (useful with e.g. Tru64 UNIX tcpdump)",
+ &fddi_padding);
+
+ fddi_tap = register_tap("fddi");
}
void
proto_reg_handoff_fddi(void)
{
- dissector_handle_t fddi_handle, fddi_bitswapped_handle;
-
- /*
- * Get a handle for the LLC dissector.
- */
- llc_handle = find_dissector("llc");
- data_handle = find_dissector("data");
-
- fddi_handle = find_dissector("fddi");
- dissector_add_uint("wtap_encap", WTAP_ENCAP_FDDI, fddi_handle);
- fddi_bitswapped_handle =
- create_dissector_handle(dissect_fddi_bitswapped, proto_fddi);
- dissector_add_uint("wtap_encap", WTAP_ENCAP_FDDI_BITSWAPPED,
- fddi_bitswapped_handle);
+ dissector_handle_t fddi_handle, fddi_bitswapped_handle;
+
+ /*
+ * Get a handle for the LLC dissector.
+ */
+ llc_handle = find_dissector("llc");
+ data_handle = find_dissector("data");
+
+ fddi_handle = find_dissector("fddi");
+ dissector_add_uint("wtap_encap", WTAP_ENCAP_FDDI, fddi_handle);
+ fddi_bitswapped_handle =
+ create_dissector_handle(dissect_fddi_bitswapped, proto_fddi);
+ dissector_add_uint("wtap_encap", WTAP_ENCAP_FDDI_BITSWAPPED,
+ fddi_bitswapped_handle);
}
diff --git a/epan/dissectors/packet-fefd.c b/epan/dissectors/packet-fefd.c
index 76e13dd1c7..4cfc68dbdb 100644
--- a/epan/dissectors/packet-fefd.c
+++ b/epan/dissectors/packet-fefd.c
@@ -94,12 +94,12 @@ dissect_fefd(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_item *ti;
proto_tree *fefd_tree = NULL;
- int offset = 0;
- guint16 type;
- guint16 length;
+ int offset = 0;
+ guint16 type;
+ guint16 length;
proto_item *tlvi;
proto_tree *tlv_tree;
- int real_length;
+ int real_length;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "FEFD");
col_clear(pinfo->cinfo, COL_INFO);
diff --git a/epan/dissectors/packet-fip.c b/epan/dissectors/packet-fip.c
index ba54280b54..5b25d7baca 100644
--- a/epan/dissectors/packet-fip.c
+++ b/epan/dissectors/packet-fip.c
@@ -38,57 +38,53 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
#include <epan/etypes.h>
#include <epan/expert.h>
-void proto_reg_handoff_fip(void);
-
/*
* FIP protocol information.
*/
#define FIP_HEADER_LEN 10
-#define FIP_BPW 4 /* bytes per descriptor length unit */
+#define FIP_BPW 4 /* bytes per descriptor length unit */
/*
* FIP opcodes and subcodes.
*/
enum fip_opcode {
- FIP_OP_DISC = 1, /* discovery, advertisement, etc. */
- FIP_OP_LS = 2, /* Link Service request or reply */
- FIP_OP_CTRL = 3, /* control */
- FIP_OP_VLAN = 4, /* VLAN request or reply */
- FIP_OP_VN2VN = 5 /* VN_port to VN_port operation */
+ FIP_OP_DISC = 1, /* discovery, advertisement, etc. */
+ FIP_OP_LS = 2, /* Link Service request or reply */
+ FIP_OP_CTRL = 3, /* control */
+ FIP_OP_VLAN = 4, /* VLAN request or reply */
+ FIP_OP_VN2VN = 5 /* VN_port to VN_port operation */
};
/*
* Subcodes for FIP_OP_DISC.
*/
enum fip_disc_subcode {
- FIP_SC_SOL = 1, /* solicitation */
- FIP_SC_ADV = 2 /* advertisement */
+ FIP_SC_SOL = 1, /* solicitation */
+ FIP_SC_ADV = 2 /* advertisement */
};
/*
* Subcodes for FIP_OP_LS.
*/
enum fip_ls_subcode {
- FIP_SC_REQ = 1, /* request */
- FIP_SC_REP = 2 /* reply */
+ FIP_SC_REQ = 1, /* request */
+ FIP_SC_REP = 2 /* reply */
};
enum fip_ctrl_subcode {
- FIP_SC_KA = 1, /* keep-alive */
- FIP_SC_CVL = 2 /* clear virtual link */
+ FIP_SC_KA = 1, /* keep-alive */
+ FIP_SC_CVL = 2 /* clear virtual link */
};
enum fip_vlan_subcode {
- FIP_VL_REQ = 1, /* request */
- FIP_VL_REP = 2 /* reply */
+ FIP_VL_REQ = 1, /* request */
+ FIP_VL_REP = 2 /* reply */
};
/*
@@ -96,105 +92,105 @@ enum fip_vlan_subcode {
* XXX proposal
*/
enum fip_vn2vn_subcode {
- FIP_SC_VN_PROBE_REQ = 1, /* probe request */
- FIP_SC_VN_PROBE_REP = 2, /* probe reply */
- FIP_SC_VN_CLAIM_NOTIFY = 3, /* claim notification */
- FIP_SC_VN_CLAIM_REP = 4, /* claim response */
- FIP_SC_VN_BEACON = 5 /* beacon */
+ FIP_SC_VN_PROBE_REQ = 1, /* probe request */
+ FIP_SC_VN_PROBE_REP = 2, /* probe reply */
+ FIP_SC_VN_CLAIM_NOTIFY = 3, /* claim notification */
+ FIP_SC_VN_CLAIM_REP = 4, /* claim response */
+ FIP_SC_VN_BEACON = 5 /* beacon */
};
static const value_string fip_opcodes[] = {
- { FIP_OP_DISC, "Discovery" },
- { FIP_OP_LS, "Link Service" },
- { FIP_OP_CTRL, "Control" },
- { FIP_OP_VLAN, "VLAN" },
- { FIP_OP_VN2VN, "VN2VN" },
- { 0, NULL }
+ { FIP_OP_DISC, "Discovery" },
+ { FIP_OP_LS, "Link Service" },
+ { FIP_OP_CTRL, "Control" },
+ { FIP_OP_VLAN, "VLAN" },
+ { FIP_OP_VN2VN, "VN2VN" },
+ { 0, NULL }
};
static const value_string fip_disc_subcodes[] = {
- { FIP_SC_SOL, "Solicitation" },
- { FIP_SC_ADV, "Advertisement" },
- { 0, NULL }
+ { FIP_SC_SOL, "Solicitation" },
+ { FIP_SC_ADV, "Advertisement" },
+ { 0, NULL }
};
static const value_string fip_ls_subcodes[] = {
- { FIP_SC_REQ, "ELS Request" },
- { FIP_SC_REP, "ELS Response" },
- { 0, NULL }
+ { FIP_SC_REQ, "ELS Request" },
+ { FIP_SC_REP, "ELS Response" },
+ { 0, NULL }
};
static const value_string fip_ctrl_subcodes[] = {
- { FIP_SC_KA, "Keep-Alive" },
- { FIP_SC_CVL, "Clear Virtual Link" },
- { 0, NULL }
+ { FIP_SC_KA, "Keep-Alive" },
+ { FIP_SC_CVL, "Clear Virtual Link" },
+ { 0, NULL }
};
static const value_string fip_vlan_subcodes[] = {
- { FIP_VL_REQ, "VLAN Request" },
- { FIP_VL_REP, "VLAN Response" },
- { 0, NULL }
+ { FIP_VL_REQ, "VLAN Request" },
+ { FIP_VL_REP, "VLAN Response" },
+ { 0, NULL }
};
static const value_string fip_vn2vn_subcodes[] = {
- { FIP_SC_VN_PROBE_REQ, "Probe Request" },
- { FIP_SC_VN_PROBE_REP, "Probe Reply" },
- { FIP_SC_VN_CLAIM_NOTIFY, "Claim Notification" },
- { FIP_SC_VN_CLAIM_REP, "Claim Response" },
- { FIP_SC_VN_BEACON, "Beacon" },
- { 0, NULL }
+ { FIP_SC_VN_PROBE_REQ, "Probe Request" },
+ { FIP_SC_VN_PROBE_REP, "Probe Reply" },
+ { FIP_SC_VN_CLAIM_NOTIFY, "Claim Notification" },
+ { FIP_SC_VN_CLAIM_REP, "Claim Response" },
+ { FIP_SC_VN_BEACON, "Beacon" },
+ { 0, NULL }
};
/*
* Descriptor types.
*/
enum fip_desc_type {
- FIP_DT_PRI = 1, /* priority for forwarder selection */
- FIP_DT_MAC = 2, /* MAC address */
- FIP_DT_MAP_OUI = 3, /* FC-MAP OUI */
- FIP_DT_NAME = 4, /* switch name or node name */
- FIP_DT_FAB = 5, /* fabric descriptor */
- FIP_DT_FCOE_SIZE = 6, /* max FCoE frame size */
- FIP_DT_FLOGI = 7, /* FLOGI request or response */
- FIP_DT_FDISC = 8, /* FDISC request or response */
- FIP_DT_LOGO = 9, /* LOGO request or response */
- FIP_DT_ELP = 10, /* ELP request or response */
- FIP_DT_VN = 11, /* VN_Port Info */
- FIP_DT_FKA = 12, /* FIP keep-alive / advert. period */
- FIP_DT_VEND = 13, /* Vendor-specific TLV */
- FIP_DT_VLAN = 14, /* VLAN number */
- FIP_DT_FC4F = 15 /* FC-4 features */
+ FIP_DT_PRI = 1, /* priority for forwarder selection */
+ FIP_DT_MAC = 2, /* MAC address */
+ FIP_DT_MAP_OUI = 3, /* FC-MAP OUI */
+ FIP_DT_NAME = 4, /* switch name or node name */
+ FIP_DT_FAB = 5, /* fabric descriptor */
+ FIP_DT_FCOE_SIZE = 6, /* max FCoE frame size */
+ FIP_DT_FLOGI = 7, /* FLOGI request or response */
+ FIP_DT_FDISC = 8, /* FDISC request or response */
+ FIP_DT_LOGO = 9, /* LOGO request or response */
+ FIP_DT_ELP = 10, /* ELP request or response */
+ FIP_DT_VN = 11, /* VN_Port Info */
+ FIP_DT_FKA = 12, /* FIP keep-alive / advert. period */
+ FIP_DT_VEND = 13, /* Vendor-specific TLV */
+ FIP_DT_VLAN = 14, /* VLAN number */
+ FIP_DT_FC4F = 15 /* FC-4 features */
};
static const value_string fip_desc_types[] = {
- { FIP_DT_PRI, "Priority" },
- { FIP_DT_MAC, "MAC Address" },
- { FIP_DT_MAP_OUI, "FPMA MAP OUI" },
- { FIP_DT_NAME, "Switch or Node Name" },
- { FIP_DT_FAB, "Fabric Descriptor" },
- { FIP_DT_FCOE_SIZE, "Max FCoE frame size" },
- { FIP_DT_FLOGI, "FLOGI Encapsulation" },
- { FIP_DT_FDISC, "FDISC Encapsulation" },
- { FIP_DT_LOGO, "LOGO Encapsulation" },
- { FIP_DT_ELP, "ELP Encapsulation" },
- { FIP_DT_VN, "VN_Port Info" },
- { FIP_DT_FKA, "FKA_ADV_Period" },
- { FIP_DT_VEND, "Vendor_ID" },
- { FIP_DT_VLAN, "VLAN" },
- { FIP_DT_FC4F, "FC-4 features" },
- { 0, NULL }
+ { FIP_DT_PRI, "Priority" },
+ { FIP_DT_MAC, "MAC Address" },
+ { FIP_DT_MAP_OUI, "FPMA MAP OUI" },
+ { FIP_DT_NAME, "Switch or Node Name" },
+ { FIP_DT_FAB, "Fabric Descriptor" },
+ { FIP_DT_FCOE_SIZE, "Max FCoE frame size" },
+ { FIP_DT_FLOGI, "FLOGI Encapsulation" },
+ { FIP_DT_FDISC, "FDISC Encapsulation" },
+ { FIP_DT_LOGO, "LOGO Encapsulation" },
+ { FIP_DT_ELP, "ELP Encapsulation" },
+ { FIP_DT_VN, "VN_Port Info" },
+ { FIP_DT_FKA, "FKA_ADV_Period" },
+ { FIP_DT_VEND, "Vendor_ID" },
+ { FIP_DT_VLAN, "VLAN" },
+ { FIP_DT_FC4F, "FC-4 features" },
+ { 0, NULL }
};
/*
* flags in header fip_flags.
*/
enum fip_flag {
- FIP_FL_FPMA = 0x8000, /* supports FPMA fabric-provided MACs */
- FIP_FL_SPMA = 0x4000, /* supports SPMA server-provided MACs */
- FIP_FL_REC_P2P = 0x0008, /* recorded addr or point-to-point */
- FIP_FL_AVAIL = 0x0004, /* available for FLOGI */
- FIP_FL_SOL = 0x0002, /* this is a solicited message */
- FIP_FL_FPORT = 0x0001 /* sent from an F port */
+ FIP_FL_FPMA = 0x8000, /* supports FPMA fabric-provided MACs */
+ FIP_FL_SPMA = 0x4000, /* supports SPMA server-provided MACs */
+ FIP_FL_REC_P2P = 0x0008, /* recorded addr or point-to-point */
+ FIP_FL_AVAIL = 0x0004, /* available for FLOGI */
+ FIP_FL_SOL = 0x0002, /* this is a solicited message */
+ FIP_FL_FPORT = 0x0001 /* sent from an F port */
};
static int proto_fip = -1;
@@ -204,7 +200,7 @@ static int hf_fip_disc_subcode = -1;
static int hf_fip_ls_subcode = -1;
static int hf_fip_ctrl_subcode = -1;
static int hf_fip_vlan_subcode = -1;
-static int hf_fip_vn2vn_subcode = -1;
+static int hf_fip_vn2vn_subcode = -1;
static int hf_fip_hex_subcode = -1;
static int hf_fip_dlen = -1;
static int hf_fip_flags = -1;
@@ -225,49 +221,49 @@ static const int *hf_fip_flags_fields[] = {
NULL
};
-static int hf_fip_desc_type = -1;
-static int hf_fip_desc_len = -1;
-static int hf_fip_desc_pri = -1;
-static int hf_fip_desc_mac = -1;
-static int hf_fip_desc_map = -1;
-static int hf_fip_desc_name = -1;
-static int hf_fip_desc_fab_vfid = -1;
-static int hf_fip_desc_fab_map = -1;
-static int hf_fip_desc_fab_name = -1;
-static int hf_fip_desc_fcoe_size = -1;
-static int hf_fip_desc_vn_mac = -1;
-static int hf_fip_desc_vn_fid = -1;
-static int hf_fip_desc_vn_wwpn = -1;
-static int hf_fip_desc_fka = -1;
-static int hf_fip_desc_vend = -1;
-static int hf_fip_desc_vend_data = -1;
-static int hf_fip_desc_vlan = -1;
-static int hf_fip_desc_unk = -1;
+static int hf_fip_desc_type = -1;
+static int hf_fip_desc_len = -1;
+static int hf_fip_desc_pri = -1;
+static int hf_fip_desc_mac = -1;
+static int hf_fip_desc_map = -1;
+static int hf_fip_desc_name = -1;
+static int hf_fip_desc_fab_vfid = -1;
+static int hf_fip_desc_fab_map = -1;
+static int hf_fip_desc_fab_name = -1;
+static int hf_fip_desc_fcoe_size = -1;
+static int hf_fip_desc_vn_mac = -1;
+static int hf_fip_desc_vn_fid = -1;
+static int hf_fip_desc_vn_wwpn = -1;
+static int hf_fip_desc_fka = -1;
+static int hf_fip_desc_vend = -1;
+static int hf_fip_desc_vend_data = -1;
+static int hf_fip_desc_vlan = -1;
+static int hf_fip_desc_unk = -1;
static int hf_fip_desc_fc4f_types = -1;
-static int hf_fip_desc_fcp_feat = -1;
-static int hf_fip_type_ip = -1;
-static int hf_fip_type_fcp = -1;
-static int hf_fip_type_gs3 = -1;
-static int hf_fip_fcp_feat_i = -1;
-static int hf_fip_fcp_feat_t = -1;
-
-static int ett_fip = -1;
-static int ett_fip_flags = -1;
-static int ett_fip_dt_pri = -1;
-static int ett_fip_dt_mac = -1;
-static int ett_fip_dt_map = -1;
-static int ett_fip_dt_name = -1;
-static int ett_fip_dt_fab = -1;
-static int ett_fip_dt_mdl = -1;
-static int ett_fip_dt_caps = -1;
-static int ett_fip_dt_vn = -1;
-static int ett_fip_dt_fka = -1;
-static int ett_fip_dt_vend = -1;
-static int ett_fip_dt_vlan = -1;
-static int ett_fip_dt_unk = -1;
-static int ett_fip_dt_fc4f = -1;
-static int ett_fip_dt_fc4f_types = -1;
-static int ett_fip_dt_fcp_feat = -1;
+static int hf_fip_desc_fcp_feat = -1;
+static int hf_fip_type_ip = -1;
+static int hf_fip_type_fcp = -1;
+static int hf_fip_type_gs3 = -1;
+static int hf_fip_fcp_feat_i = -1;
+static int hf_fip_fcp_feat_t = -1;
+
+static int ett_fip = -1;
+static int ett_fip_flags = -1;
+static int ett_fip_dt_pri = -1;
+static int ett_fip_dt_mac = -1;
+static int ett_fip_dt_map = -1;
+static int ett_fip_dt_name = -1;
+static int ett_fip_dt_fab = -1;
+static int ett_fip_dt_mdl = -1;
+static int ett_fip_dt_caps = -1;
+static int ett_fip_dt_vn = -1;
+static int ett_fip_dt_fka = -1;
+static int ett_fip_dt_vend = -1;
+static int ett_fip_dt_vlan = -1;
+static int ett_fip_dt_unk = -1;
+static int ett_fip_dt_fc4f = -1;
+static int ett_fip_dt_fc4f_types = -1;
+static int ett_fip_dt_fcp_feat = -1;
static dissector_handle_t fc_handle;
@@ -289,6 +285,7 @@ fip_desc_fc4f(tvbuff_t *tvb, proto_tree *tree, proto_item *item)
{
guint mask;
guint offset;
+
static const int *types_word0[] = { /* types 0 - 31 */
&hf_fip_type_ip,
&hf_fip_type_fcp,
@@ -334,21 +331,20 @@ fip_desc_fc4f(tvbuff_t *tvb, proto_tree *tree, proto_item *item)
static void
dissect_fip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- guint op;
- guint sub;
- guint rlen;
+ guint op;
+ guint sub;
+ guint rlen;
proto_item *ti;
proto_item *item;
proto_tree *fip_tree;
proto_tree *subtree;
- guint dtype;
- guint dlen;
- guint desc_offset;
- guint val;
- tvbuff_t *desc_tvb;
- tvbuff_t *ls_tvb = NULL;
+ guint dtype;
+ guint dlen;
+ guint desc_offset;
+ guint val;
+ tvbuff_t *desc_tvb;
const char *info;
- char *text;
+ char *text;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "FIP");
col_clear(pinfo->cinfo, COL_INFO);
@@ -361,7 +357,7 @@ dissect_fip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
return;
}
- op = tvb_get_ntohs(tvb, 2);
+ op = tvb_get_ntohs(tvb, 2);
sub = tvb_get_guint8(tvb, 5);
switch (op) {
@@ -424,7 +420,7 @@ dissect_fip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
rlen *= FIP_BPW;
proto_tree_add_text(fip_tree, tvb, desc_offset, rlen, "Descriptors:");
- while (rlen > 0 && tvb_bytes_exist(tvb, desc_offset, 2)) {
+ while ((rlen > 0) && tvb_bytes_exist(tvb, desc_offset, 2)) {
dlen = tvb_get_guint8(tvb, desc_offset + 1) * FIP_BPW;
if (!dlen) {
proto_tree_add_text(fip_tree, tvb, desc_offset, -1,
@@ -497,12 +493,14 @@ dissect_fip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case FIP_DT_FLOGI:
case FIP_DT_FDISC:
case FIP_DT_LOGO:
- case FIP_DT_ELP:
+ case FIP_DT_ELP: {
+ tvbuff_t *ls_tvb;
subtree = proto_item_add_subtree(item, ett_fip_dt_caps);
fip_desc_type_len(subtree, desc_tvb);
ls_tvb = tvb_new_subset(desc_tvb, 4, dlen - 4, -1);
call_dissector(fc_handle, ls_tvb, pinfo, subtree);
proto_item_append_text(item, "%u bytes", dlen - 4);
+ }
break;
case FIP_DT_VN:
subtree = proto_item_add_subtree(item, ett_fip_dt_vn);
@@ -567,126 +565,214 @@ proto_register_fip(void)
* FIP header fields.
*/
{ &hf_fip_ver,
- {"Version", "fip.ver", FT_UINT8, BASE_DEC,
- NULL, 0xf0, NULL, HFILL}},
+ { "Version", "fip.ver",
+ FT_UINT8, BASE_DEC, NULL, 0xf0,
+ NULL, HFILL}},
+
+
{ &hf_fip_op,
- {"Opcode", "fip.opcode", FT_UINT16, BASE_HEX,
- VALS(fip_opcodes), 0, NULL, HFILL}},
+ { "Opcode", "fip.opcode",
+ FT_UINT16, BASE_HEX, VALS(fip_opcodes), 0,
+ NULL, HFILL}},
+
{ &hf_fip_disc_subcode,
- {"Discovery Subcode", "fip.disc_subcode", FT_UINT8, BASE_HEX,
- VALS(fip_disc_subcodes), 0, NULL, HFILL}},
+ { "Discovery Subcode", "fip.disc_subcode",
+ FT_UINT8, BASE_HEX, VALS(fip_disc_subcodes), 0,
+ NULL, HFILL}},
+
{ &hf_fip_ls_subcode,
- {"Link Service Subcode", "fip.ls.subcode", FT_UINT8, BASE_HEX,
- VALS(fip_ls_subcodes), 0, NULL, HFILL}},
+ { "Link Service Subcode", "fip.ls.subcode",
+ FT_UINT8, BASE_HEX, VALS(fip_ls_subcodes), 0,
+ NULL, HFILL}},
+
{ &hf_fip_ctrl_subcode,
- {"Control Subcode", "fip.ctrl_subcode", FT_UINT8, BASE_HEX,
- VALS(fip_ctrl_subcodes), 0, NULL, HFILL}},
+ { "Control Subcode", "fip.ctrl_subcode",
+ FT_UINT8, BASE_HEX, VALS(fip_ctrl_subcodes), 0,
+ NULL, HFILL}},
+
{ &hf_fip_vlan_subcode,
- {"VLAN Subcode", "fip.vlan_subcode", FT_UINT8, BASE_HEX,
- VALS(fip_vlan_subcodes), 0, NULL, HFILL}},
+ { "VLAN Subcode", "fip.vlan_subcode",
+ FT_UINT8, BASE_HEX, VALS(fip_vlan_subcodes), 0,
+ NULL, HFILL}},
+
{ &hf_fip_vn2vn_subcode,
- {"VN2VN Subcode", "fip.vn2vn_subcode", FT_UINT8, BASE_HEX,
- VALS(fip_vn2vn_subcodes), 0, NULL, HFILL}},
+ { "VN2VN Subcode", "fip.vn2vn_subcode",
+ FT_UINT8, BASE_HEX, VALS(fip_vn2vn_subcodes), 0,
+ NULL, HFILL}},
+
{ &hf_fip_hex_subcode,
- {"Unknown Subcode", "fip.subcode", FT_UINT8, BASE_HEX,
- NULL, 0, NULL, HFILL}},
+ { "Unknown Subcode", "fip.subcode",
+ FT_UINT8, BASE_HEX, NULL, 0,
+ NULL, HFILL}},
+
{ &hf_fip_dlen,
- {"Length of Descriptors (words)", "fip.dl_len", FT_UINT16, BASE_DEC,
- NULL, 0, NULL, HFILL}},
+ { "Length of Descriptors (words)", "fip.dl_len",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ NULL, HFILL}},
+
{ &hf_fip_flags,
- {"Flags", "fip.flags", FT_UINT16, BASE_HEX,
- NULL, 0, NULL, HFILL}},
+ { "Flags", "fip.flags",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ NULL, HFILL}},
+
{ &hf_fip_flag_fpma,
- {"Fabric Provided MAC addr", "fip.flags.fpma", FT_BOOLEAN, 16,
- NULL, FIP_FL_FPMA, NULL, HFILL}},
+ { "Fabric Provided MAC addr", "fip.flags.fpma",
+ FT_BOOLEAN, 16, NULL, FIP_FL_FPMA,
+ NULL, HFILL}},
+
{ &hf_fip_flag_spma,
- {"Server Provided MAC addr", "fip.flags.spma", FT_BOOLEAN, 16,
- NULL, FIP_FL_SPMA, NULL, HFILL}},
+ { "Server Provided MAC addr", "fip.flags.spma",
+ FT_BOOLEAN, 16, NULL, FIP_FL_SPMA,
+ NULL, HFILL}},
+
{ &hf_fip_flag_rec_p2p,
- {"REC/P2P", "fip.flags.rec_p2p", FT_BOOLEAN, 16,
- NULL, FIP_FL_REC_P2P, NULL, HFILL}},
+ { "REC/P2P", "fip.flags.rec_p2p",
+ FT_BOOLEAN, 16, NULL, FIP_FL_REC_P2P,
+ NULL, HFILL}},
+
{ &hf_fip_flag_avail,
- {"Available", "fip.flags.available", FT_BOOLEAN, 16,
- NULL, FIP_FL_AVAIL, NULL, HFILL}},
+ { "Available", "fip.flags.available",
+ FT_BOOLEAN, 16, NULL, FIP_FL_AVAIL,
+ NULL, HFILL}},
+
{ &hf_fip_flag_sol,
- {"Solicited", "fip.flags.sol", FT_BOOLEAN, 16,
- NULL, FIP_FL_SOL, NULL, HFILL}},
+ { "Solicited", "fip.flags.sol",
+ FT_BOOLEAN, 16, NULL, FIP_FL_SOL,
+ NULL, HFILL}},
+
{ &hf_fip_flag_fport,
- {"F_Port", "fip.flags.fport", FT_BOOLEAN, 16,
- NULL, FIP_FL_FPORT, NULL, HFILL}},
+ { "F_Port", "fip.flags.fport",
+ FT_BOOLEAN, 16, NULL, FIP_FL_FPORT,
+ NULL, HFILL}},
+
{ &hf_fip_desc_type,
- {"Descriptor Type", "fip.desc_type", FT_UINT8, BASE_HEX,
- VALS(fip_desc_types), 0, NULL, HFILL}},
+ { "Descriptor Type", "fip.desc_type",
+ FT_UINT8, BASE_HEX, VALS(fip_desc_types), 0,
+ NULL, HFILL}},
+
{ &hf_fip_desc_len,
- {"Descriptor Length (words)", "fip.desc_len", FT_UINT8, BASE_DEC,
- NULL, 0, NULL, HFILL}},
+ { "Descriptor Length (words)", "fip.desc_len",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL}},
+
/*
* Various descriptor fields.
*/
{ &hf_fip_desc_pri,
- {"Priority", "fip.pri", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL}},
+ { "Priority", "fip.pri",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL}},
+
{ &hf_fip_desc_mac,
- {"MAC Address", "fip.mac", FT_ETHER, BASE_NONE, NULL,
- 0, NULL, HFILL}},
+ { "MAC Address", "fip.mac",
+ FT_ETHER, BASE_NONE, NULL, 0,
+ NULL, HFILL}},
+
{ &hf_fip_desc_map,
- {"FC-MAP-OUI", "fip.map", FT_STRING, BASE_NONE, NULL,
- 0, NULL, HFILL}},
+ { "FC-MAP-OUI", "fip.map",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL}},
+
{ &hf_fip_desc_name,
- {"Switch or Node Name", "fip.name", FT_STRING, BASE_NONE, NULL,
- 0, NULL, HFILL}},
+ { "Switch or Node Name", "fip.name",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL}},
+
{ &hf_fip_desc_fab_vfid,
- {"VFID", "fip.fab.vfid", FT_UINT16, BASE_DEC, NULL,
- 0, NULL, HFILL}},
+ { "VFID", "fip.fab.vfid",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ NULL, HFILL}},
+
{ &hf_fip_desc_fab_map,
- {"FC-MAP", "fip.fab.map", FT_STRING, BASE_NONE, NULL,
- 0, NULL, HFILL}},
+ { "FC-MAP", "fip.fab.map",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL}},
+
{ &hf_fip_desc_fab_name,
- {"Fabric Name", "fip.fab.name", FT_STRING, BASE_NONE, NULL,
- 0, NULL, HFILL}},
+ { "Fabric Name", "fip.fab.name",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL}},
+
{ &hf_fip_desc_fcoe_size,
- {"Max FCoE frame size", "fip.fcoe_size", FT_UINT16, BASE_DEC, NULL,
- 0, NULL, HFILL}},
+ { "Max FCoE frame size", "fip.fcoe_size",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ NULL, HFILL}},
+
{ &hf_fip_desc_vn_mac,
- {"VN_Port MAC Address", "fip.vn.mac", FT_ETHER, BASE_NONE, NULL,
- 0, NULL, HFILL}},
+ { "VN_Port MAC Address", "fip.vn.mac",
+ FT_ETHER, BASE_NONE, NULL, 0,
+ NULL, HFILL}},
+
{ &hf_fip_desc_vn_fid,
- {"VN_Port FC_ID", "fip.vn.fc_id", FT_UINT32, BASE_HEX, NULL,
- 0, NULL, HFILL}},
+ { "VN_Port FC_ID", "fip.vn.fc_id",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ NULL, HFILL}},
+
{ &hf_fip_desc_vn_wwpn,
- {"Port Name", "fip.vn.pwwn", FT_STRING, BASE_NONE, NULL,
- 0, NULL, HFILL}},
+ { "Port Name", "fip.vn.pwwn",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL}},
+
{ &hf_fip_desc_fka,
- {"FKA_ADV_Period", "fip.fka", FT_UINT32, BASE_DEC, NULL,
- 0, NULL, HFILL}},
+ { "FKA_ADV_Period", "fip.fka",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL}},
+
{ &hf_fip_desc_vend,
- {"Vendor-ID", "fip.vendor", FT_BYTES, BASE_NONE, NULL,
- 0, NULL, HFILL}},
+ { "Vendor-ID", "fip.vendor",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL}},
+
{ &hf_fip_desc_vend_data,
- {"Vendor-specific data", "fip.vendor.data", FT_BYTES, BASE_NONE, NULL,
- 0, NULL, HFILL}},
+ { "Vendor-specific data", "fip.vendor.data",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL}},
+
{ &hf_fip_desc_vlan,
- {"VLAN", "fip.vlan", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL}},
+ { "VLAN", "fip.vlan",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ NULL, HFILL}},
+
{ &hf_fip_desc_fc4f_types,
- {"FC4 Types", "fip.fc4f.types", FT_UINT32, BASE_HEX, NULL,
- 0, NULL, HFILL}},
+ { "FC4 Types", "fip.fc4f.types",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ NULL, HFILL}},
+
{ &hf_fip_desc_fcp_feat,
- {"FCP Features", "fip.fc4f.feat.fcp", FT_UINT32, BASE_HEX, NULL,
- 0xf, NULL, HFILL}},
+ { "FCP Features", "fip.fc4f.feat.fcp",
+ FT_UINT32, BASE_HEX, NULL, 0xf,
+ NULL, HFILL}},
+
{ &hf_fip_type_ip,
- {"IP", "fip.fc4f.ip", FT_BOOLEAN, 32, NULL, 1 << 5, NULL, HFILL}},
+ { "IP", "fip.fc4f.ip",
+ FT_BOOLEAN, 32, NULL, 1 << 5,
+ NULL, HFILL}},
+
{ &hf_fip_type_fcp,
- {"FCP", "fip.fc4f.fcp", FT_BOOLEAN, 32, NULL, 1 << 8, NULL, HFILL}},
+ { "FCP", "fip.fc4f.fcp",
+ FT_BOOLEAN, 32, NULL, 1 << 8,
+ NULL, HFILL}},
+
{ &hf_fip_type_gs3,
- {"GS3", "fip.fc4f.gs3", FT_BOOLEAN, 32, NULL, 1 << 0, NULL, HFILL}},
+ { "GS3", "fip.fc4f.gs3",
+ FT_BOOLEAN, 32, NULL, 1 << 0,
+ NULL, HFILL}},
+
{ &hf_fip_fcp_feat_t,
- {"FCP Target", "fip.fc4f.feat.fcp.target", FT_BOOLEAN,
- 32, NULL, 1, NULL, HFILL}},
+ { "FCP Target", "fip.fc4f.feat.fcp.target",
+ FT_BOOLEAN, 32, NULL, 1,
+ NULL, HFILL}},
+
{ &hf_fip_fcp_feat_i,
- {"FCP Initiator", "fip.fc4f.feat.fcp.initiator", FT_BOOLEAN,
- 32, NULL, 2, NULL, HFILL}},
+ { "FCP Initiator", "fip.fc4f.feat.fcp.initiator",
+ FT_BOOLEAN, 32, NULL, 2,
+ NULL, HFILL}},
+
{ &hf_fip_desc_unk,
- {"Unknown Descriptor", "fip.desc", FT_BYTES, BASE_NONE, NULL,
- 0, NULL, HFILL}}
+ { "Unknown Descriptor", "fip.desc",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL}}
+
};
static gint *ett[] = {
&ett_fip,
diff --git a/epan/dissectors/packet-fix.c b/epan/dissectors/packet-fix.c
index e57070a69c..2f253d7927 100644
--- a/epan/dissectors/packet-fix.c
+++ b/epan/dissectors/packet-fix.c
@@ -76,9 +76,10 @@ static range_t *fix_tcp_range = NULL;
/* 8=FIX */
#define MARKER_TAG "8=FIX"
#define MARKER_LEN 5
+
static int fix_marker(tvbuff_t *tvb, int offset)
{
- return tvb_strneql(tvb, offset, MARKER_TAG, MARKER_LEN);
+ return tvb_strneql(tvb, offset, MARKER_TAG, MARKER_LEN);
}
/*
@@ -114,9 +115,9 @@ tag_search(int key)
static int fix_next_header(tvbuff_t *tvb, int offset)
{
/* try to resync to the next start */
- guint min_len = tvb_length_remaining(tvb, offset);
- const guint8 *data = tvb_get_ephemeral_string(tvb, offset, min_len);
- const guint8 *start = data;
+ guint min_len = tvb_length_remaining(tvb, offset);
+ const guint8 *data = tvb_get_ephemeral_string(tvb, offset, min_len);
+ const guint8 *start = data;
while ((start = strstr(start, "\0018"))) {
min_len = (guint) (start +1 -data);
@@ -138,7 +139,7 @@ static int fix_next_header(tvbuff_t *tvb, int offset)
static fix_parameter *fix_param(tvbuff_t *tvb, int offset)
{
static fix_parameter ret;
- int equals;
+ int equals;
ret.ctrla_offset = tvb_find_guint8(tvb, offset, -1, 0x01);
if (ret.ctrla_offset == -1) {
@@ -152,17 +153,17 @@ static fix_parameter *fix_param(tvbuff_t *tvb, int offset)
}
ret.value_offset = equals + 1;
- ret.tag_len = ret.value_offset - offset - 1;
- ret.value_len = ret.ctrla_offset - ret.value_offset;
+ ret.tag_len = ret.value_offset - offset - 1;
+ ret.value_len = ret.ctrla_offset - ret.value_offset;
return &ret;
}
/* ---------------------------------------------- */
static int fix_header_len(tvbuff_t *tvb, int offset)
{
- int base_offset, ctrla_offset;
- char *value;
- int size;
+ int base_offset, ctrla_offset;
+ char *value;
+ int size;
fix_parameter *tag;
base_offset = offset;
@@ -219,14 +220,14 @@ static void
dissect_fix_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
/* Set up structures needed to add the protocol subtree and manage it */
- proto_item *ti;
- proto_tree *fix_tree;
- int pdu_len;
- int offset = 0;
- int field_offset, ctrla_offset;
- int tag_value;
- char *value;
- char *tag_str;
+ proto_item *ti;
+ proto_tree *fix_tree;
+ int pdu_len;
+ int offset = 0;
+ int field_offset, ctrla_offset;
+ int tag_value;
+ char *value;
+ char *tag_str;
fix_parameter *tag;
/* Make entries in Protocol column and Info column on summary display */
@@ -466,7 +467,6 @@ static void fix_prefs(void)
void
proto_register_fix(void)
{
-/* Setup list of header fields See Section 1.6.1 for details*/
static hf_register_info hf[] = {
{ &hf_fix_data,
{ "Continuation Data", "fix.data", FT_BYTES, BASE_NONE, NULL, 0x00,
@@ -507,7 +507,6 @@ proto_register_fix(void)
proto_fix = proto_register_protocol("Financial Information eXchange Protocol",
"FIX", "fix");
- /* Required function calls to register the header fields and subtrees used */
proto_register_field_array(proto_fix, hf, array_length(hf));
proto_register_field_array(proto_fix, hf_FIX, array_length(hf_FIX));
proto_register_subtree_array(ett, array_length(ett));
@@ -516,7 +515,8 @@ proto_register_fix(void)
prefs_register_bool_preference(fix_module, "desegment",
"Reassemble FIX messages spanning multiple TCP segments",
"Whether the FIX dissector should reassemble messages spanning multiple TCP segments."
- " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
+ " To use this option, you must also enable"
+ " \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
&fix_desegment);
prefs_register_range_preference(fix_module, "tcp.port", "TCP Ports", "TCP Ports range", &global_fix_tcp_range, 65535);
diff --git a/epan/dissectors/packet-fmp.c b/epan/dissectors/packet-fmp.c
index 583e8bcb71..e43f2b4e60 100644
--- a/epan/dissectors/packet-fmp.c
+++ b/epan/dissectors/packet-fmp.c
@@ -22,10 +22,6 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
@@ -111,404 +107,404 @@ static gboolean fmp_fhandle_reqrep_matching = FALSE;
static int
dissect_fmp_genString(tvbuff_t *tvb, int offset, proto_tree *tree)
{
- encoding mode;
+ encoding mode;
- mode = tvb_get_ntohl(tvb, offset);
+ mode = tvb_get_ntohl(tvb, offset);
- switch (mode) {
- case FMP_ASCII:
- proto_tree_add_text(tree, tvb, offset, 4,
- "Encoding Mode: ASCII (%d)", mode);
- break;
+ switch (mode) {
+ case FMP_ASCII:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "Encoding Mode: ASCII (%d)", mode);
+ break;
- case FMP_UTF8:
- proto_tree_add_text(tree, tvb, offset, 4,
- "Encoding Mode: UTF8 (%d)", mode);
- break;
+ case FMP_UTF8:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "Encoding Mode: UTF8 (%d)", mode);
+ break;
- case FMP_UNICODE1:
- proto_tree_add_text(tree, tvb, offset, 4,
- "Encoding Mode: UNICODE (%d)", mode);
- break;
+ case FMP_UNICODE1:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "Encoding Mode: UNICODE (%d)", mode);
+ break;
- default:
- proto_tree_add_text(tree, tvb, offset, 4,
- "Encoding Mode: UNKNOWN (%d)", mode);
- offset += 4;
- return offset;
- }
- offset += 4;
- offset = dissect_rpc_string(tvb, tree, hf_fmp_path,
- offset, NULL);
+ default:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "Encoding Mode: UNKNOWN (%d)", mode);
+ offset += 4;
+ return offset;
+ }
+ offset += 4;
+ offset = dissect_rpc_string(tvb, tree, hf_fmp_path,
+ offset, NULL);
- return offset;
+ return offset;
}
static int
get_fileHandleSrc_size(tvbuff_t *tvb, int offset)
{
- int length;
- nativeProtocol np;
-
- np = tvb_get_ntohl(tvb, offset);
-
- switch (np) {
- case FMP_PATH:
- length = 4 + FMP_MAX_PATH_LEN;
- break;
- case FMP_NFS:
- length = 8 + tvb_get_ntohl(tvb, offset + 4);
- break;
- case FMP_CIFS:
- length = 10;
- break;
- case FMP_FMP:
- length = 8 + tvb_get_ntohl(tvb, offset + 4);
- break;
- case FMP_FS_ONLY:
- length = 8;
- break;
- case FMP_SHARE:
- /* FALLTHROUGH */
- case FMP_MOUNT:
- length = 8 + FMP_MAX_PATH_LEN;
- break;
- default:
- length = 4;
- break;
- }
-
- return length;
+ int length;
+ nativeProtocol np;
+
+ np = tvb_get_ntohl(tvb, offset);
+
+ switch (np) {
+ case FMP_PATH:
+ length = 4 + FMP_MAX_PATH_LEN;
+ break;
+ case FMP_NFS:
+ length = 8 + tvb_get_ntohl(tvb, offset + 4);
+ break;
+ case FMP_CIFS:
+ length = 10;
+ break;
+ case FMP_FMP:
+ length = 8 + tvb_get_ntohl(tvb, offset + 4);
+ break;
+ case FMP_FS_ONLY:
+ length = 8;
+ break;
+ case FMP_SHARE:
+ /* FALLTHROUGH */
+ case FMP_MOUNT:
+ length = 8 + FMP_MAX_PATH_LEN;
+ break;
+ default:
+ length = 4;
+ break;
+ }
+
+ return length;
}
static int
dissect_fmp_fileHandleSrc(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
proto_tree *tree)
{
- nativeProtocol np;
-
- proto_item *fileHandleItem;
- proto_tree *fileHandleTree;
- int length;
-
- length = get_fileHandleSrc_size(tvb, offset);
-
- np = tvb_get_ntohl(tvb, offset);
-
- fileHandleItem = proto_tree_add_text(tree, tvb, offset, length,
- "Source File Handle");
- fileHandleTree = proto_item_add_subtree(fileHandleItem,
- ett_fmp_fileHandle);
-
- switch (np) {
- case FMP_PATH:
- proto_tree_add_text(fileHandleTree, tvb, offset, 4,
- "Native Protocol: PATH (%d)", np);
- offset += 4;
-
- offset = dissect_rpc_string(tvb, fileHandleTree,
- hf_fmp_mount_path, offset, NULL);
- break;
-
- case FMP_NFS:
- proto_tree_add_text(fileHandleTree, tvb, offset, 4,
- "Native Protocol: NFS (%d)", np);
- offset += 4;
-
- offset = dissect_rpc_data(tvb, fileHandleTree,
- hf_fmp_nfsFHandle, offset);
- break;
-
- case FMP_CIFS:
- proto_tree_add_text(fileHandleTree, tvb, offset, 4,
- "Native Protocol: CIFS (%d)", np);
- offset += 4;
-
- proto_tree_add_text(fileHandleTree, tvb, offset, 2, "fid: %d",
- tvb_get_ntohs(tvb, offset));
- offset += 2;
-
- proto_tree_add_text(fileHandleTree, tvb, offset, 2, "tid: %d",
- tvb_get_ntohs(tvb, offset));
- offset += 2;
-
- proto_tree_add_text(fileHandleTree, tvb, offset, 2, "uid: %d",
- tvb_get_ntohs(tvb, offset));
- offset += 2;
- break;
-
- case FMP_FMP:
- proto_tree_add_text(fileHandleTree, tvb, offset, 4,
- "Native Protocol: FMP (%d)", np);
- offset += 4;
-
- offset = dissect_rpc_string(tvb, fileHandleTree,
- hf_fmp_fmpFHandle, offset, NULL);
- break;
-
- case FMP_FS_ONLY:
- proto_tree_add_text(fileHandleTree, tvb, offset, 4,
- "Native Protocol: FS_ONLY (%d)", np);
- offset += 4;
-
- proto_tree_add_text(fileHandleTree, tvb, offset, 4,
- "FsID: %d", tvb_get_ntohl(tvb, offset));
- offset += 4;
- break;
-
- case FMP_SHARE:
- proto_tree_add_text(fileHandleTree, tvb, offset, 4,
- "Native Protocol: SHARE (%d)", np);
- offset += 4;
-
- offset = dissect_fmp_genString(tvb, offset, fileHandleTree);
- break;
-
- case FMP_MOUNT:
- proto_tree_add_text(fileHandleTree, tvb, offset, 4,
- "Native Protocol: MOUNT (%d)", np);
- offset += 4;
-
- offset = dissect_fmp_genString(tvb, offset, fileHandleTree);
- break;
-
- case FMP_CIFSV2:
- proto_tree_add_text(fileHandleTree, tvb, offset, 4,
- "Native Protocol: CIFSV2: (%d)", np);
- offset += 4;
- proto_tree_add_text(fileHandleTree, tvb, offset, 2, "fid : %d",
- tvb_get_ntohs(tvb, offset));
- offset += 2;
-
- proto_tree_add_text(fileHandleTree, tvb, offset, 2, "tid : %d",
- tvb_get_ntohs(tvb, offset));
- offset += 2;
-
- proto_tree_add_text(fileHandleTree, tvb, offset, 2, "uid : %d",
- tvb_get_ntohs(tvb, offset));
- offset += 2;
-
- proto_tree_add_text(fileHandleTree, tvb, offset, 2, "cifsPort: %d",
- tvb_get_ntohs(tvb, offset));
- offset += 2;
- break;
- case FMP_UNC:
- proto_tree_add_text(fileHandleTree, tvb, offset, 4,
- "Native Protocol: UNC: (%d)", np);
- offset += 4;
+ nativeProtocol np;
- offset = dissect_fmp_genString(tvb, offset, fileHandleTree);
- break;
+ proto_item *fileHandleItem;
+ proto_tree *fileHandleTree;
+ int length;
+ length = get_fileHandleSrc_size(tvb, offset);
- default:
- proto_tree_add_text(fileHandleTree, tvb, offset, 4,
- "Native Protocol: UNKNOWN (%d)", np);
- offset += 4;
- break;
- }
+ np = tvb_get_ntohl(tvb, offset);
+
+ fileHandleItem = proto_tree_add_text(tree, tvb, offset, length,
+ "Source File Handle");
+ fileHandleTree = proto_item_add_subtree(fileHandleItem,
+ ett_fmp_fileHandle);
+
+ switch (np) {
+ case FMP_PATH:
+ proto_tree_add_text(fileHandleTree, tvb, offset, 4,
+ "Native Protocol: PATH (%d)", np);
+ offset += 4;
+
+ offset = dissect_rpc_string(tvb, fileHandleTree,
+ hf_fmp_mount_path, offset, NULL);
+ break;
+
+ case FMP_NFS:
+ proto_tree_add_text(fileHandleTree, tvb, offset, 4,
+ "Native Protocol: NFS (%d)", np);
+ offset += 4;
+
+ offset = dissect_rpc_data(tvb, fileHandleTree,
+ hf_fmp_nfsFHandle, offset);
+ break;
+
+ case FMP_CIFS:
+ proto_tree_add_text(fileHandleTree, tvb, offset, 4,
+ "Native Protocol: CIFS (%d)", np);
+ offset += 4;
+
+ proto_tree_add_text(fileHandleTree, tvb, offset, 2, "fid: %d",
+ tvb_get_ntohs(tvb, offset));
+ offset += 2;
+
+ proto_tree_add_text(fileHandleTree, tvb, offset, 2, "tid: %d",
+ tvb_get_ntohs(tvb, offset));
+ offset += 2;
+
+ proto_tree_add_text(fileHandleTree, tvb, offset, 2, "uid: %d",
+ tvb_get_ntohs(tvb, offset));
+ offset += 2;
+ break;
+
+ case FMP_FMP:
+ proto_tree_add_text(fileHandleTree, tvb, offset, 4,
+ "Native Protocol: FMP (%d)", np);
+ offset += 4;
+
+ offset = dissect_rpc_string(tvb, fileHandleTree,
+ hf_fmp_fmpFHandle, offset, NULL);
+ break;
+
+ case FMP_FS_ONLY:
+ proto_tree_add_text(fileHandleTree, tvb, offset, 4,
+ "Native Protocol: FS_ONLY (%d)", np);
+ offset += 4;
- return offset;
+ proto_tree_add_text(fileHandleTree, tvb, offset, 4,
+ "FsID: %d", tvb_get_ntohl(tvb, offset));
+ offset += 4;
+ break;
+
+ case FMP_SHARE:
+ proto_tree_add_text(fileHandleTree, tvb, offset, 4,
+ "Native Protocol: SHARE (%d)", np);
+ offset += 4;
+
+ offset = dissect_fmp_genString(tvb, offset, fileHandleTree);
+ break;
+
+ case FMP_MOUNT:
+ proto_tree_add_text(fileHandleTree, tvb, offset, 4,
+ "Native Protocol: MOUNT (%d)", np);
+ offset += 4;
+
+ offset = dissect_fmp_genString(tvb, offset, fileHandleTree);
+ break;
+
+ case FMP_CIFSV2:
+ proto_tree_add_text(fileHandleTree, tvb, offset, 4,
+ "Native Protocol: CIFSV2: (%d)", np);
+ offset += 4;
+ proto_tree_add_text(fileHandleTree, tvb, offset, 2, "fid : %d",
+ tvb_get_ntohs(tvb, offset));
+ offset += 2;
+
+ proto_tree_add_text(fileHandleTree, tvb, offset, 2, "tid : %d",
+ tvb_get_ntohs(tvb, offset));
+ offset += 2;
+
+ proto_tree_add_text(fileHandleTree, tvb, offset, 2, "uid : %d",
+ tvb_get_ntohs(tvb, offset));
+ offset += 2;
+
+ proto_tree_add_text(fileHandleTree, tvb, offset, 2, "cifsPort: %d",
+ tvb_get_ntohs(tvb, offset));
+ offset += 2;
+ break;
+ case FMP_UNC:
+ proto_tree_add_text(fileHandleTree, tvb, offset, 4,
+ "Native Protocol: UNC: (%d)", np);
+ offset += 4;
+
+ offset = dissect_fmp_genString(tvb, offset, fileHandleTree);
+ break;
+
+
+ default:
+ proto_tree_add_text(fileHandleTree, tvb, offset, 4,
+ "Native Protocol: UNKNOWN (%d)", np);
+ offset += 4;
+ break;
+ }
+
+ return offset;
}
static int
dissect_fmp_extentState(tvbuff_t *tvb, int offset, proto_tree *tree)
{
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_extent_state,
- offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_extent_state,
+ offset);
- return offset;
+ return offset;
}
static int
dissect_fmp_extent(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, guint32 ext_num)
{
- proto_item *extItem;
- proto_tree *extTree;
+ proto_item *extItem;
+ proto_tree *extTree;
- extItem = proto_tree_add_text(tree, tvb, offset, 20 ,
- "Extent (%u)", (guint32) ext_num);
+ extItem = proto_tree_add_text(tree, tvb, offset, 20 ,
+ "Extent (%u)", (guint32) ext_num);
- extTree = proto_item_add_subtree(extItem, ett_fmp_ext);
+ extTree = proto_item_add_subtree(extItem, ett_fmp_ext);
- offset = dissect_rpc_uint32(tvb, extTree, hf_fmp_firstLogBlk,
- offset);
- offset = dissect_rpc_uint32(tvb, extTree, hf_fmp_numBlks,
- offset);
- offset = dissect_rpc_uint32(tvb, extTree, hf_fmp_volID, offset);
- offset = dissect_rpc_uint32(tvb, extTree, hf_fmp_startOffset,
- offset);
- offset = dissect_fmp_extentState(tvb, offset, extTree);
+ offset = dissect_rpc_uint32(tvb, extTree, hf_fmp_firstLogBlk,
+ offset);
+ offset = dissect_rpc_uint32(tvb, extTree, hf_fmp_numBlks,
+ offset);
+ offset = dissect_rpc_uint32(tvb, extTree, hf_fmp_volID, offset);
+ offset = dissect_rpc_uint32(tvb, extTree, hf_fmp_startOffset,
+ offset);
+ offset = dissect_fmp_extentState(tvb, offset, extTree);
- return offset;
+ return offset;
}
static int
dissect_fmp_extentList(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree)
{
- guint32 numExtents;
- guint32 totalLength;
- proto_item *extListItem;
- proto_tree *extListTree;
- guint32 i;
+ guint32 numExtents;
+ guint32 totalLength;
+ proto_item *extListItem;
+ proto_tree *extListTree;
+ guint32 i;
- numExtents = tvb_get_ntohl(tvb, offset);
- totalLength = 4 + (20 * numExtents);
+ numExtents = tvb_get_ntohl(tvb, offset);
+ totalLength = 4 + (20 * numExtents);
- extListItem = proto_tree_add_text(tree, tvb, offset, totalLength,
- "Extent List");
- extListTree = proto_item_add_subtree(extListItem, ett_fmp_extList);
+ extListItem = proto_tree_add_text(tree, tvb, offset, totalLength,
+ "Extent List");
+ extListTree = proto_item_add_subtree(extListItem, ett_fmp_extList);
- offset = dissect_rpc_uint32(tvb, extListTree,
- hf_fmp_extentList_len, offset);
+ offset = dissect_rpc_uint32(tvb, extListTree,
+ hf_fmp_extentList_len, offset);
- for (i = 1; i <= numExtents; i++) {
- offset = dissect_fmp_extent(tvb, offset, pinfo, extListTree, i);
- }
+ for (i = 1; i <= numExtents; i++) {
+ offset = dissect_fmp_extent(tvb, offset, pinfo, extListTree, i);
+ }
- return offset;
+ return offset;
}
static int
dissect_fmp_extentListEx(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
- proto_tree *tree)
+ proto_tree *tree)
{
- guint32 numExtents;
- proto_item *extListItem;
- proto_tree *extListTree;
- guint32 i;
+ guint32 numExtents;
+ proto_item *extListItem;
+ proto_tree *extListTree;
+ guint32 i;
- numExtents = tvb_get_ntohl(tvb, offset);
+ numExtents = tvb_get_ntohl(tvb, offset);
- offset += 4;
+ offset += 4;
- for (i = 1; i <= numExtents; i++) {
- extListItem = proto_tree_add_text(tree, tvb, offset, 28,
+ for (i = 1; i <= numExtents; i++) {
+ extListItem = proto_tree_add_text(tree, tvb, offset, 28,
"Extent List");
- extListTree = proto_item_add_subtree(extListItem, ett_fmp_extList);
+ extListTree = proto_item_add_subtree(extListItem, ett_fmp_extList);
- offset = dissect_rpc_uint64(tvb,extListTree , hf_fmp_firstLogBlk64, offset);
+ offset = dissect_rpc_uint64(tvb,extListTree , hf_fmp_firstLogBlk64, offset);
- offset = dissect_rpc_uint32(tvb,extListTree , hf_fmp_numBlksReq,
+ offset = dissect_rpc_uint32(tvb,extListTree , hf_fmp_numBlksReq,
offset);
- offset = dissect_rpc_uint32(tvb,extListTree , hf_fmp_volID, offset);
+ offset = dissect_rpc_uint32(tvb,extListTree , hf_fmp_volID, offset);
- offset = dissect_rpc_uint64(tvb,extListTree , hf_fmp_start_offset64, offset);
+ offset = dissect_rpc_uint64(tvb,extListTree , hf_fmp_start_offset64, offset);
- offset = dissect_fmp_extentState(tvb, offset, extListTree);
+ offset = dissect_fmp_extentState(tvb, offset, extListTree);
- }
+ }
- return offset;
+ return offset;
}
static int
dissect_plugInID(tvbuff_t *tvb, int offset, proto_tree *tree)
{
- if (!tree) {
- return offset;
- }
+ if (!tree) {
+ return offset;
+ }
- proto_tree_add_item(tree, hf_fmp_plugInID, tvb, offset, FMP_PLUG_IN_ID_SZ,
- ENC_NA);
- return offset;
+ proto_tree_add_item(tree, hf_fmp_plugInID, tvb, offset, FMP_PLUG_IN_ID_SZ,
+ ENC_NA);
+ return offset;
}
static int
-dissect_fmp_flushCmd(tvbuff_t *tvb, int offset, proto_tree *tree)
-{
- guint32 cmd;
- char msg[MAX_MSG_SIZE];
- guint32 bitValue;
- int i;
-
- if (tree) {
- cmd = tvb_get_ntohl(tvb, offset);
-
- /* Initialize the message for an empty string */
- msg[0] = '\0';
-
- for (i = 0; cmd != 0 && i < 32; i++) {
-
- bitValue = 1 << i;
-
- if (cmd & bitValue) {
- switch (bitValue) {
- case FMP_COMMIT_SPECIFIED:
- g_strlcat(msg, "COMMIT_SPECIFIED", MAX_MSG_SIZE);
- break;
- case FMP_RELEASE_SPECIFIED:
- g_strlcat(msg, "RELEASE_SPECIFIED", MAX_MSG_SIZE);
- break;
- case FMP_RELEASE_ALL:
- g_strlcat(msg, "RELEASE_ALL", MAX_MSG_SIZE);
- break;
- case FMP_CLOSE_FILE:
- g_strlcat(msg, "CLOSE_FILE", MAX_MSG_SIZE);
- break;
- case FMP_UPDATE_TIME:
- g_strlcat(msg, "UPDATE_TIME", MAX_MSG_SIZE);
- break;
- case FMP_ACCESS_TIME:
- g_strlcat(msg, "ACCESS_TIME", MAX_MSG_SIZE);
- break;
- default:
- g_strlcat(msg, "UNKNOWN", MAX_MSG_SIZE);
- break;
- }
-
- /* clear the bit that we processed */
- cmd &= ~bitValue;
-
- /* add a "bitwise inclusive OR" symbol between cmds */
- if (cmd) {
- g_strlcat(msg, " | ", MAX_MSG_SIZE);
- }
- }
- }
+dissect_fmp_flushCmd(tvbuff_t *tvb, int offset, proto_tree *tree)
+{
+ guint32 cmd;
+ char msg[MAX_MSG_SIZE];
+ guint32 bitValue;
+ int i;
+
+ if (tree) {
+ cmd = tvb_get_ntohl(tvb, offset);
+
+ /* Initialize the message for an empty string */
+ msg[0] = '\0';
+
+ for (i = 0; cmd != 0 && i < 32; i++) {
+
+ bitValue = 1 << i;
+
+ if (cmd & bitValue) {
+ switch (bitValue) {
+ case FMP_COMMIT_SPECIFIED:
+ g_strlcat(msg, "COMMIT_SPECIFIED", MAX_MSG_SIZE);
+ break;
+ case FMP_RELEASE_SPECIFIED:
+ g_strlcat(msg, "RELEASE_SPECIFIED", MAX_MSG_SIZE);
+ break;
+ case FMP_RELEASE_ALL:
+ g_strlcat(msg, "RELEASE_ALL", MAX_MSG_SIZE);
+ break;
+ case FMP_CLOSE_FILE:
+ g_strlcat(msg, "CLOSE_FILE", MAX_MSG_SIZE);
+ break;
+ case FMP_UPDATE_TIME:
+ g_strlcat(msg, "UPDATE_TIME", MAX_MSG_SIZE);
+ break;
+ case FMP_ACCESS_TIME:
+ g_strlcat(msg, "ACCESS_TIME", MAX_MSG_SIZE);
+ break;
+ default:
+ g_strlcat(msg, "UNKNOWN", MAX_MSG_SIZE);
+ break;
+ }
+
+ /* clear the bit that we processed */
+ cmd &= ~bitValue;
+
+ /* add a "bitwise inclusive OR" symbol between cmds */
+ if (cmd) {
+ g_strlcat(msg, " | ", MAX_MSG_SIZE);
+ }
+ }
+ }
- if (strlen(msg) == 0) {
- g_strlcpy(msg, "No command specified", MAX_MSG_SIZE);
- }
+ if (strlen(msg) == 0) {
+ g_strlcpy(msg, "No command specified", MAX_MSG_SIZE);
+ }
- proto_tree_add_text(tree, tvb, offset, 4, "Cmd: %s", msg);
- }
- offset += 4;
- return offset;
+ proto_tree_add_text(tree, tvb, offset, 4, "Cmd: %s", msg);
+ }
+ offset += 4;
+ return offset;
}
static int
dissect_InterpretVolMgtStuff(tvbuff_t *tvb, int offset, proto_tree *tree)
{
- int length,numdisks,i,j;
+ int length, numdisks, i, j;
- numdisks = tvb_get_ntohl(tvb, offset);
- proto_tree_add_text(tree, tvb, offset, 4, "Number of Disk: %d", numdisks);
- offset += 4;
+ numdisks = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_text(tree, tvb, offset, 4, "Number of Disk: %d", numdisks);
+ offset += 4;
- for(i=0;i<numdisks;i++){
- offset = dissect_rpc_uint64(tvb, tree, hf_fmp_sig_offset, offset);
- length = tvb_get_ntohl(tvb, offset);
- proto_tree_add_text(tree, tvb, offset, 4, "Length of List : %d", length);
- offset += 4;
+ for (i=0; i<numdisks; i++) {
+ offset = dissect_rpc_uint64(tvb, tree, hf_fmp_sig_offset, offset);
+ length = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_text(tree, tvb, offset, 4, "Length of List : %d", length);
+ offset += 4;
- for(j=0;j<length;j++){
- proto_tree_add_text(tree, tvb, offset, 4, "sigOffset: 0x%x",
- tvb_get_ntohl(tvb, offset));
- offset += 4;
- offset = dissect_rpc_string(tvb, tree, hf_fmp_dskSigEnt_val,
- offset, NULL);
+ for (j=0; j<length; j++) {
+ proto_tree_add_text(tree, tvb, offset, 4, "sigOffset: 0x%x",
+ tvb_get_ntohl(tvb, offset));
+ offset += 4;
+ offset = dissect_rpc_string(tvb, tree, hf_fmp_dskSigEnt_val,
+ offset, NULL);
- }
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_volID, offset);
+ }
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_volID, offset);
- }
- return offset;
+ }
+ return offset;
}
@@ -516,45 +512,45 @@ dissect_InterpretVolMgtStuff(tvbuff_t *tvb, int offset, proto_tree *tree)
static int
dissect_fmp_capability(tvbuff_t *tvb, int offset, proto_tree *tree)
{
- if (tree) {
- int vmType;
- vmType = tvb_get_ntohl(tvb, offset);
-
- switch (vmType) {
- case FMP_SERVER_BASED:
- proto_tree_add_text(tree, tvb, offset, 4,
- "Volume Mgmt Capability: SERVER_BASED (%d)", vmType);
- break;
-
- case FMP_THIRD_PARTY:
- proto_tree_add_text(tree, tvb, offset, 4,
- "Volume Mgmt Capability: THIRD_PARTY (%d)", vmType);
- break;
-
- case FMP_CLIENT_BASED_DART:
- proto_tree_add_text(tree, tvb, offset, 4,
- "Volume Mgmt Capability: CLIENT_BASED_DART (%d)",
- vmType);
- break;
-
- case FMP_CLIENT_BASED_SIMPLE:
- proto_tree_add_text(tree, tvb, offset, 4,
- "Volume Mgmt Capability: CLIENT_BASED_SIMPLE (%d)",
- vmType);
- break;
- case FMP_HIERARCHICAL_VOLUME:
- proto_tree_add_text(tree, tvb, offset, 4,
- "Volume Mgmt Capability: FMP_HIERARCHICAL_VOLUME (%d)",
- vmType);
- break;
- default:
- proto_tree_add_text(tree, tvb, offset, 4,
- "Volume Mgmt Capability: UNKNOWN (%d)", vmType);
- break;
- }
- }
- offset += 4;
- return offset;
+ if (tree) {
+ int vmType;
+ vmType = tvb_get_ntohl(tvb, offset);
+
+ switch (vmType) {
+ case FMP_SERVER_BASED:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "Volume Mgmt Capability: SERVER_BASED (%d)", vmType);
+ break;
+
+ case FMP_THIRD_PARTY:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "Volume Mgmt Capability: THIRD_PARTY (%d)", vmType);
+ break;
+
+ case FMP_CLIENT_BASED_DART:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "Volume Mgmt Capability: CLIENT_BASED_DART (%d)",
+ vmType);
+ break;
+
+ case FMP_CLIENT_BASED_SIMPLE:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "Volume Mgmt Capability: CLIENT_BASED_SIMPLE (%d)",
+ vmType);
+ break;
+ case FMP_HIERARCHICAL_VOLUME:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "Volume Mgmt Capability: FMP_HIERARCHICAL_VOLUME (%d)",
+ vmType);
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "Volume Mgmt Capability: UNKNOWN (%d)", vmType);
+ break;
+ }
+ }
+ offset += 4;
+ return offset;
}
static int
@@ -562,146 +558,146 @@ dissect_fmp_timeval(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
proto_tree *tree, int hf_time, int hf_time_sec,
int hf_time_nsec)
{
- if (tree) {
- nstime_t ts;
+ if (tree) {
+ nstime_t ts;
- proto_item* time_item;
- proto_tree* time_tree = NULL;
+ proto_item* time_item;
+ proto_tree* time_tree = NULL;
- ts.secs = tvb_get_ntohl(tvb, offset+0);
- ts.nsecs = tvb_get_ntohl(tvb, offset+4);
+ ts.secs = tvb_get_ntohl(tvb, offset+0);
+ ts.nsecs = tvb_get_ntohl(tvb, offset+4);
- time_item = proto_tree_add_time(tree, hf_time, tvb, offset, 8, &ts);
- time_tree = proto_item_add_subtree(time_item, ett_fmp_timeval);
+ time_item = proto_tree_add_time(tree, hf_time, tvb, offset, 8, &ts);
+ time_tree = proto_item_add_subtree(time_item, ett_fmp_timeval);
- proto_tree_add_uint(time_tree, hf_time_sec, tvb, offset, 4,
- (guint32) ts.secs);
- proto_tree_add_uint(time_tree, hf_time_nsec, tvb, offset+4, 4,
- ts.nsecs);
- }
- offset += 8;
- return offset;
+ proto_tree_add_uint(time_tree, hf_time_sec, tvb, offset, 4,
+ (guint32) ts.secs);
+ proto_tree_add_uint(time_tree, hf_time_nsec, tvb, offset+4, 4,
+ ts.nsecs);
+ }
+ offset += 8;
+ return offset;
}
static int
dissect_fmp_heartBeatIntv(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
proto_tree *tree)
{
- if (tree) {
- proto_tree_add_text(tree, tvb, offset, 8,
- "Heart Beat Interval: %d.%d seconds",
- tvb_get_ntohl(tvb, offset),
- tvb_get_ntohl(tvb, offset+4));
- }
- offset += 8;
- return offset;
+ if (tree) {
+ proto_tree_add_text(tree, tvb, offset, 8,
+ "Heart Beat Interval: %d.%d seconds",
+ tvb_get_ntohl(tvb, offset),
+ tvb_get_ntohl(tvb, offset+4));
+ }
+ offset += 8;
+ return offset;
}
static int
dissect_fmp_status(tvbuff_t *tvb, int offset, proto_tree *tree, int *rval)
{
- fmpStat status;
-
- status = tvb_get_ntohl(tvb, offset);
-
- switch (status) {
- case FMP_OK:
- *rval = 0;
- break;
- case FMP_IOERROR:
- *rval = 1;
- break;
- case FMP_NOMEM:
- *rval = 1;
- break;
- case FMP_NOACCESS:
- *rval = 1;
- break;
- case FMP_INVALIDARG:
-
- *rval = 1;
- break;
- case FMP_FSFULL:
- *rval = 0;
- break;
- case FMP_QUEUE_FULL:
- case FMP_NOTIFY_ERROR:
- case FMP_WRITER_LOST_BLK:
- case FMP_WRONG_MSG_NUM:
- case FMP_SESSION_LOST:
- case FMP_REQUEST_CANCELLED:
- *rval = 1;
- break;
- case FMP_HOT_SESSION:
- *rval = 0;
- break;
- case FMP_COLD_SESSION:
- *rval = 0;
- break;
- case FMP_CLIENT_TERMINATED:
- *rval = 0;
- break;
- case FMP_REQUEST_QUEUED:
- *rval = 0;
- break;
- case FMP_FALL_BACK:
- *rval = 0;
- break;
- case FMP_WRITER_ZEROED_BLK:
- *rval = 0;
- break;
- case FMP_WRONG_HANDLE:
- *rval = 0;
- break;
- case FMP_DUPLICATE_OPEN:
- *rval = 1;
- break;
- case FMP_PLUGIN_NOFUNC:
- *rval = 1;
- break;
- default:
- *rval = 1;
- break;
- }
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_status , offset);
- return offset;
+ fmpStat status;
+
+ status = tvb_get_ntohl(tvb, offset);
+
+ switch (status) {
+ case FMP_OK:
+ *rval = 0;
+ break;
+ case FMP_IOERROR:
+ *rval = 1;
+ break;
+ case FMP_NOMEM:
+ *rval = 1;
+ break;
+ case FMP_NOACCESS:
+ *rval = 1;
+ break;
+ case FMP_INVALIDARG:
+
+ *rval = 1;
+ break;
+ case FMP_FSFULL:
+ *rval = 0;
+ break;
+ case FMP_QUEUE_FULL:
+ case FMP_NOTIFY_ERROR:
+ case FMP_WRITER_LOST_BLK:
+ case FMP_WRONG_MSG_NUM:
+ case FMP_SESSION_LOST:
+ case FMP_REQUEST_CANCELLED:
+ *rval = 1;
+ break;
+ case FMP_HOT_SESSION:
+ *rval = 0;
+ break;
+ case FMP_COLD_SESSION:
+ *rval = 0;
+ break;
+ case FMP_CLIENT_TERMINATED:
+ *rval = 0;
+ break;
+ case FMP_REQUEST_QUEUED:
+ *rval = 0;
+ break;
+ case FMP_FALL_BACK:
+ *rval = 0;
+ break;
+ case FMP_WRITER_ZEROED_BLK:
+ *rval = 0;
+ break;
+ case FMP_WRONG_HANDLE:
+ *rval = 0;
+ break;
+ case FMP_DUPLICATE_OPEN:
+ *rval = 1;
+ break;
+ case FMP_PLUGIN_NOFUNC:
+ *rval = 1;
+ break;
+ default:
+ *rval = 1;
+ break;
+ }
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_status , offset);
+ return offset;
}
static int
dissect_fmp_devSerial(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
proto_tree *tree)
{
- if (tree) {
- queryCmd qc;
+ if (tree) {
+ queryCmd qc;
- qc = tvb_get_ntohl(tvb, offset);
+ qc = tvb_get_ntohl(tvb, offset);
- switch (qc) {
- case FMP_SCSI_INQUIRY:
- proto_tree_add_text(tree, tvb, offset, 4,
- "Query Command: SCSI_INQUIRY (%d)", qc);
- break;
- case FMP_DART_STAMP:
- proto_tree_add_text(tree, tvb, offset, 4,
- "Query Command: DART_STAMP (%d)", qc);
- break;
- default:
- proto_tree_add_text(tree, tvb, offset, 4,
- "Query Command: UNKNOWN (%d)", qc);
- break;
- }
- }
- offset += 4;
+ switch (qc) {
+ case FMP_SCSI_INQUIRY:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "Query Command: SCSI_INQUIRY (%d)", qc);
+ break;
+ case FMP_DART_STAMP:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "Query Command: DART_STAMP (%d)", qc);
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "Query Command: UNKNOWN (%d)", qc);
+ break;
+ }
+ }
+ offset += 4;
- if (tree) {
- proto_tree_add_text(tree, tvb, offset, 4, "sigOffset: 0x%x",
- tvb_get_ntohl(tvb, offset));
- }
- offset += 4;
+ if (tree) {
+ proto_tree_add_text(tree, tvb, offset, 4, "sigOffset: 0x%x",
+ tvb_get_ntohl(tvb, offset));
+ }
+ offset += 4;
- offset = dissect_rpc_string(tvb, tree, hf_fmp_devSignature,
- offset, NULL);
- return offset;
+ offset = dissect_rpc_string(tvb, tree, hf_fmp_devSignature,
+ offset, NULL);
+ return offset;
}
@@ -710,109 +706,110 @@ dissect_fmp_devSerial(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
static int
dissect_fmp_VolumeDescription(tvbuff_t *tvb, int offset, proto_tree * tree)
{
- int i,length;
- proto_tree *Hietree,*hieTree;
- fmpVolumeType volumeType;
- fmpDiskIdentifierType diskIdentifierType;
- volumeType = tvb_get_ntohl(tvb, offset);
- switch(volumeType){
-
- case FMP_VOLUME_DISK:
- hieTree = proto_tree_add_text(tree, tvb, offset, 4,
- "VOLUME: DISK(%d)", volumeType );
- Hietree = proto_item_add_subtree(hieTree,
- ett_HierVolumeDescription);
- offset += 4;
- offset = dissect_rpc_uint32(tvb, Hietree, hf_fmp_volID, offset);
- offset += 8; /* blockIndex64 */
- diskIdentifierType = tvb_get_ntohl(tvb, offset);
-
-
- switch(diskIdentifierType){
- case FMP_DISK_IDENTIFIER_SIGNATURE:
- proto_tree_add_text(Hietree, tvb, offset, 4,
- "DISK IDENTIFIER: SIGNATURE(%d)", diskIdentifierType);
- offset += 4;
- offset = dissect_rpc_uint64(tvb, Hietree, hf_fmp_sig_offset, offset);
- length = tvb_get_ntohl(tvb, offset);
- proto_tree_add_text(Hietree, tvb, offset, 4, "Length of List : %d", length);
- offset += 4;
-
- for(i=0;i<length;i++){
- proto_tree_add_text(Hietree, tvb, offset, 4, "sigOffset: 0x%x",
- tvb_get_ntohl(tvb, offset));
- offset += 4;
- offset = dissect_rpc_string(tvb, Hietree, hf_fmp_dskSigEnt_val, offset, NULL);
-
-
- }
-
- break;
-
- case FMP_DISK_IDENTIFIER_SERIAL:
- proto_tree_add_text(Hietree, tvb, offset, 4,
- "DISK IDENTIFIER: SERIAL(%d)", diskIdentifierType);
- dissect_fmp_devSerial(tvb, offset, NULL, Hietree);
- break;
- }
-
- break;
- case FMP_VOLUME_SLICE:
- hieTree = proto_tree_add_text(tree, tvb, offset, 4,
- "VOLUME: SLICE(%d)", volumeType );
- Hietree = proto_item_add_subtree(hieTree,
- ett_HierVolumeDescription);
- offset += 4;
- offset = dissect_rpc_uint32(tvb, Hietree, hf_fmp_volID, offset);
-
- offset = dissect_rpc_uint64(tvb, Hietree, hf_fmp_offset64, offset);
-
- offset = dissect_rpc_uint64(tvb, Hietree, hf_fmp_slice_size, offset);
-
- offset = dissect_rpc_uint32(tvb, Hietree, hf_fmp_volume, offset);
-
- break;
-
- case FMP_VOLUME_STRIPE:
- hieTree = proto_tree_add_text(tree, tvb, offset, 4,
- "VOLUME: STRIPE(%d)", volumeType );
- Hietree = proto_item_add_subtree(hieTree,
- ett_HierVolumeDescription);
- offset += 4;
- offset = dissect_rpc_uint32(tvb, Hietree, hf_fmp_volID, offset);
-
- offset = dissect_rpc_uint64(tvb, Hietree, hf_fmp_stripeSize, offset);
- length = tvb_get_ntohl(tvb, offset);
- proto_tree_add_text(Hietree, tvb, offset, 4, "Length of List : %d", length);
- offset += 4;
-
- for(i=0;i<length;i++){
- offset = dissect_rpc_uint32(tvb, Hietree, hf_fmp_volume, offset); /* FIXME: Size or length not know */
-
- }
- break;
-
- case FMP_VOLUME_META:
- hieTree = proto_tree_add_text(tree, tvb, offset, 4,
- "VOLUME: META(%d)", volumeType );
- Hietree = proto_item_add_subtree(hieTree,
- ett_HierVolumeDescription);
- offset += 4;
- offset = dissect_rpc_uint32(tvb, Hietree, hf_fmp_volID, offset);
-
- length = tvb_get_ntohl(tvb, offset);
- proto_tree_add_text(Hietree, tvb, offset, 4, "Length of List : %d", length);
- offset += 4;
- for(i=0;i<length;i++){
- offset = dissect_rpc_uint32(tvb, Hietree, hf_fmp_volume, offset); /* FIXME: Size or length not know */
- }
- break;
- default:
- proto_tree_add_text(tree, tvb, offset, 4,
- "VOLUME: UNKNOWN (%d)",volumeType);
- offset += 4;
-}
- return offset;
+ int i,length;
+ proto_tree *Hietree,*hieTree;
+ fmpVolumeType volumeType;
+ fmpDiskIdentifierType diskIdentifierType;
+
+ volumeType = tvb_get_ntohl(tvb, offset);
+ switch (volumeType) {
+
+ case FMP_VOLUME_DISK:
+ hieTree = proto_tree_add_text(tree, tvb, offset, 4,
+ "VOLUME: DISK(%d)", volumeType );
+ Hietree = proto_item_add_subtree(hieTree,
+ ett_HierVolumeDescription);
+ offset += 4;
+ offset = dissect_rpc_uint32(tvb, Hietree, hf_fmp_volID, offset);
+ offset += 8; /* blockIndex64 */
+ diskIdentifierType = tvb_get_ntohl(tvb, offset);
+
+
+ switch (diskIdentifierType) {
+ case FMP_DISK_IDENTIFIER_SIGNATURE:
+ proto_tree_add_text(Hietree, tvb, offset, 4,
+ "DISK IDENTIFIER: SIGNATURE(%d)", diskIdentifierType);
+ offset += 4;
+ offset = dissect_rpc_uint64(tvb, Hietree, hf_fmp_sig_offset, offset);
+ length = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_text(Hietree, tvb, offset, 4, "Length of List : %d", length);
+ offset += 4;
+
+ for (i=0; i<length; i++) {
+ proto_tree_add_text(Hietree, tvb, offset, 4, "sigOffset: 0x%x",
+ tvb_get_ntohl(tvb, offset));
+ offset += 4;
+ offset = dissect_rpc_string(tvb, Hietree, hf_fmp_dskSigEnt_val, offset, NULL);
+
+
+ }
+
+ break;
+
+ case FMP_DISK_IDENTIFIER_SERIAL:
+ proto_tree_add_text(Hietree, tvb, offset, 4,
+ "DISK IDENTIFIER: SERIAL(%d)", diskIdentifierType);
+ dissect_fmp_devSerial(tvb, offset, NULL, Hietree);
+ break;
+ }
+
+ break;
+ case FMP_VOLUME_SLICE:
+ hieTree = proto_tree_add_text(tree, tvb, offset, 4,
+ "VOLUME: SLICE(%d)", volumeType );
+ Hietree = proto_item_add_subtree(hieTree,
+ ett_HierVolumeDescription);
+ offset += 4;
+ offset = dissect_rpc_uint32(tvb, Hietree, hf_fmp_volID, offset);
+
+ offset = dissect_rpc_uint64(tvb, Hietree, hf_fmp_offset64, offset);
+
+ offset = dissect_rpc_uint64(tvb, Hietree, hf_fmp_slice_size, offset);
+
+ offset = dissect_rpc_uint32(tvb, Hietree, hf_fmp_volume, offset);
+
+ break;
+
+ case FMP_VOLUME_STRIPE:
+ hieTree = proto_tree_add_text(tree, tvb, offset, 4,
+ "VOLUME: STRIPE(%d)", volumeType );
+ Hietree = proto_item_add_subtree(hieTree,
+ ett_HierVolumeDescription);
+ offset += 4;
+ offset = dissect_rpc_uint32(tvb, Hietree, hf_fmp_volID, offset);
+
+ offset = dissect_rpc_uint64(tvb, Hietree, hf_fmp_stripeSize, offset);
+ length = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_text(Hietree, tvb, offset, 4, "Length of List : %d", length);
+ offset += 4;
+
+ for (i=0; i<length; i++) {
+ offset = dissect_rpc_uint32(tvb, Hietree, hf_fmp_volume, offset); /* FIXME: Size or length not know */
+
+ }
+ break;
+
+ case FMP_VOLUME_META:
+ hieTree = proto_tree_add_text(tree, tvb, offset, 4,
+ "VOLUME: META(%d)", volumeType );
+ Hietree = proto_item_add_subtree(hieTree,
+ ett_HierVolumeDescription);
+ offset += 4;
+ offset = dissect_rpc_uint32(tvb, Hietree, hf_fmp_volID, offset);
+
+ length = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_text(Hietree, tvb, offset, 4, "Length of List : %d", length);
+ offset += 4;
+ for (i=0; i<length; i++) {
+ offset = dissect_rpc_uint32(tvb, Hietree, hf_fmp_volume, offset); /* FIXME: Size or length not know */
+ }
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "VOLUME: UNKNOWN (%d)",volumeType);
+ offset += 4;
+ }
+ return offset;
}
@@ -820,38 +817,39 @@ static int
dissect_fmp_Hiervolume(tvbuff_t *tvb, int offset, proto_tree * tree)
{
- int vollength;
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_topVolumeId, offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cursor, offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cookie, offset);
-
- /* hierarchical description of volume. Each volume describes a
- piece of the entire hierarchy and is guarenteed to only refer to
- volumes that have already been described by the data structure up
- to this point in time. In some extreme cases, the number of
- volumes and their descriptions may be to large to fit in a single
- RPC reply. In this case, the application may send getVolumeInfo
- requests for the specific topVolumeId -- specifying the number of
- volumes already recieved by the client, and the cookie. The
- server is then responsible for sending another message containing
- additional volumes. These RPCs exchanges may continue multiple
- times, until the client has fetched the entire hierarchical
- volume description. If the volume hierarchy changes duing a
- multiple RPC sequence, the server will return an
- FMP_VOLUME_CHANGED error, and the client must discard all
- information already received and restart the request with
- FMP_Mount.
- */
-
- vollength = tvb_get_ntohl(tvb, offset);
- proto_tree_add_text(tree, tvb, offset, 4, "Length of volume List : %d", vollength);
- offset += 4;
- while(vollength){
- offset = dissect_fmp_VolumeDescription(tvb, offset, tree);
- vollength--;
- }
+ int vollength;
+
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_topVolumeId, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cursor, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cookie, offset);
+
+ /* hierarchical description of volume. Each volume describes a
+ piece of the entire hierarchy and is guarenteed to only refer to
+ volumes that have already been described by the data structure up
+ to this point in time. In some extreme cases, the number of
+ volumes and their descriptions may be to large to fit in a single
+ RPC reply. In this case, the application may send getVolumeInfo
+ requests for the specific topVolumeId -- specifying the number of
+ volumes already recieved by the client, and the cookie. The
+ server is then responsible for sending another message containing
+ additional volumes. These RPCs exchanges may continue multiple
+ times, until the client has fetched the entire hierarchical
+ volume description. If the volume hierarchy changes duing a
+ multiple RPC sequence, the server will return an
+ FMP_VOLUME_CHANGED error, and the client must discard all
+ information already received and restart the request with
+ FMP_Mount.
+ */
+
+ vollength = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_text(tree, tvb, offset, 4, "Length of volume List : %d", vollength);
+ offset += 4;
+ while (vollength) {
+ offset = dissect_fmp_VolumeDescription(tvb, offset, tree);
+ vollength--;
+ }
- return offset;
+ return offset;
}
@@ -861,235 +859,236 @@ static int
dissect_fmp_vmInfo(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree)
{
- int vmType;
- guint32 phyVolList_len;
- guint32 volIndex;
-
- vmType = tvb_get_ntohl(tvb, offset);
-
- switch (vmType) {
- case FMP_SERVER_BASED:
- /*
- * Need to finish
- */
- proto_tree_add_text(tree, tvb, offset, 4,
- "Volume Mgmt Type: SERVER_BASED (%d)",
- vmType);
- offset += 4;
-
- phyVolList_len = tvb_get_ntohl(tvb, offset);
- offset += 4;
-
- /*
- * Loop through and print all of the devInfo
- * structures.
- */
- while (phyVolList_len) {
- offset =
- dissect_fmp_devSerial(tvb, offset, pinfo, tree);
- volIndex = tvb_get_ntohl(tvb, offset);
- proto_tree_add_text(tree, tvb, offset, 4, "0x%x",
- volIndex);
- offset += 4;
- phyVolList_len--;
- }
- break;
-
- case FMP_THIRD_PARTY:
- proto_tree_add_text(tree, tvb, offset, 4,
- "Volume Mgmt Type: THIRD_PARTY (%d)",
- vmType);
- offset += 4;
-
- offset = dissect_rpc_string(tvb, tree, hf_fmp_volHandle,
- offset, NULL);
- break;
-
- case FMP_CLIENT_BASED_DART:
- proto_tree_add_text(tree, tvb, offset, 4,
- "Volume Mgmt Type: CLIENT_BASED_DART (%d)",
- vmType);
- offset += 4;
-
- offset = dissect_rpc_string(tvb, tree, hf_fmp_volHandle,
- offset, NULL);
- break;
-
- case FMP_CLIENT_BASED_SIMPLE:
- proto_tree_add_text(tree, tvb, offset, 4,
- "Volume Mgmt Type: CLIENT_BASED_SIMPLE (%d)",
- vmType);
- offset += 4;
-
- /*
- * Decoding simpleVolInfo
- */
- offset = dissect_fmp_devSerial(tvb, offset, pinfo, tree);
-
- proto_tree_add_text(tree, tvb, offset, 4, "blockIndex: 0x%x",
- tvb_get_ntohl(tvb, offset));
- offset += 4;
- break;
-
- case FMP_DISK_SIGNATURE:
- proto_tree_add_text(tree, tvb, offset, 4,
- "Volume Mgmt Type: DISK_SIGNATURE: (%d)",
- vmType);
- offset += 4;
- offset = dissect_InterpretVolMgtStuff(tvb, offset, tree);
- break;
-
- case FMP_HIERARCHICAL_VOLUME:
- proto_tree_add_text(tree, tvb, offset, 4,
- "Volume Mgmt Type: FMP_HIERARCHICAL_VOLUME: (%d)",
- vmType);
- offset += 4;
-
- dissect_fmp_Hiervolume(tvb, offset, tree);
- break;
-
- default:
- proto_tree_add_text(tree, tvb, offset, 4,
- "Volume Mgmt Type: UNKNOWN (%d)", vmType);
- offset += 4;
- break;
- }
-
- return offset;
+ int vmType;
+ guint32 phyVolList_len;
+ guint32 volIndex;
+
+ vmType = tvb_get_ntohl(tvb, offset);
+
+ switch (vmType) {
+ case FMP_SERVER_BASED:
+ /*
+ * Need to finish
+ */
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "Volume Mgmt Type: SERVER_BASED (%d)",
+ vmType);
+ offset += 4;
+
+ phyVolList_len = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+
+ /*
+ * Loop through and print all of the devInfo
+ * structures.
+ */
+ while (phyVolList_len) {
+ offset =
+ dissect_fmp_devSerial(tvb, offset, pinfo, tree);
+ volIndex = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_text(tree, tvb, offset, 4, "0x%x",
+ volIndex);
+ offset += 4;
+ phyVolList_len--;
+ }
+ break;
+
+ case FMP_THIRD_PARTY:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "Volume Mgmt Type: THIRD_PARTY (%d)",
+ vmType);
+ offset += 4;
+
+ offset = dissect_rpc_string(tvb, tree, hf_fmp_volHandle,
+ offset, NULL);
+ break;
+
+ case FMP_CLIENT_BASED_DART:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "Volume Mgmt Type: CLIENT_BASED_DART (%d)",
+ vmType);
+ offset += 4;
+
+ offset = dissect_rpc_string(tvb, tree, hf_fmp_volHandle,
+ offset, NULL);
+ break;
+
+ case FMP_CLIENT_BASED_SIMPLE:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "Volume Mgmt Type: CLIENT_BASED_SIMPLE (%d)",
+ vmType);
+ offset += 4;
+
+ /*
+ * Decoding simpleVolInfo
+ */
+ offset = dissect_fmp_devSerial(tvb, offset, pinfo, tree);
+
+ proto_tree_add_text(tree, tvb, offset, 4, "blockIndex: 0x%x",
+ tvb_get_ntohl(tvb, offset));
+ offset += 4;
+ break;
+
+ case FMP_DISK_SIGNATURE:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "Volume Mgmt Type: DISK_SIGNATURE: (%d)",
+ vmType);
+ offset += 4;
+ offset = dissect_InterpretVolMgtStuff(tvb, offset, tree);
+ break;
+
+ case FMP_HIERARCHICAL_VOLUME:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "Volume Mgmt Type: FMP_HIERARCHICAL_VOLUME: (%d)",
+ vmType);
+ offset += 4;
+
+ dissect_fmp_Hiervolume(tvb, offset, tree);
+ break;
+
+ default:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "Volume Mgmt Type: UNKNOWN (%d)", vmType);
+ offset += 4;
+ break;
+ }
+
+ return offset;
}
static int
dissect_fmp_notifyProtocol(tvbuff_t *tvb, int offset, proto_tree *tree)
{
- if (tree) {
- int proto;
-
- proto = tvb_get_ntohl(tvb, offset);
-
- switch(proto){
- case FMP_TCP:
- proto_tree_add_text(tree, tvb, offset, 4,
- "Protocol: TCP (%d)",
- proto);
- break;
- case FMP_UDP:
- proto_tree_add_text(tree, tvb, offset, 4,
- "Protocol: UDP (%d)",
- proto);
- break;
- default:
- proto_tree_add_text(tree, tvb, offset, 4,
- "Protocol: UNKNOWN (%d)",
- proto);
- break;
- }
- }
- return (offset+4);
+ if (tree) {
+ int proto;
+
+ proto = tvb_get_ntohl(tvb, offset);
+
+ switch (proto) {
+ case FMP_TCP:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "Protocol: TCP (%d)",
+ proto);
+ break;
+ case FMP_UDP:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "Protocol: UDP (%d)",
+ proto);
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "Protocol: UNKNOWN (%d)",
+ proto);
+ break;
+ }
+ }
+ return (offset+4);
}
static int
dissect_fmp_capabilities(tvbuff_t *tvb, int offset, proto_tree *tree)
{
- if (tree) {
- int cap_val ;
- proto_tree *capTree;
- proto_tree *captree;
+ if (tree) {
+ int cap_val ;
+ proto_tree *capTree;
+ proto_tree *captree;
- cap_val = tvb_get_ntohl(tvb, offset);
- captree = proto_tree_add_text(tree, tvb, offset, 4,
- "Capabilities: ");
+ cap_val = tvb_get_ntohl(tvb, offset);
+ captree = proto_tree_add_text(tree, tvb, offset, 4,
+ "Capabilities: ");
- capTree = proto_item_add_subtree(captree,
- ett_capabilities);
+ capTree = proto_item_add_subtree(captree,
+ ett_capabilities);
- if (cap_val & FMP_CAP_REVOKE_HANDLE_LIST ){
- proto_tree_add_text(capTree, tvb, offset, 4,
- "CAP_REVOKE_HANDLE_LIST (%x)",
- cap_val);
- }
- if (cap_val & FMP_CAP_UNC_NAMES ){
- proto_tree_add_text(capTree, tvb, offset, 4,
- "CAP_UNC_NAMES (%x)",
- cap_val);
- }
- if (cap_val & FMP_CAP_CIFSV2 ){
- proto_tree_add_text(capTree, tvb, offset, 4,
- "CAP_CIFSV2 (%x)",
- cap_val);
- }
- }
- return (offset+4);
+ if (cap_val & FMP_CAP_REVOKE_HANDLE_LIST) {
+ proto_tree_add_text(capTree, tvb, offset, 4,
+ "CAP_REVOKE_HANDLE_LIST (%x)",
+ cap_val);
+ }
+ if (cap_val & FMP_CAP_UNC_NAMES) {
+ proto_tree_add_text(capTree, tvb, offset, 4,
+ "CAP_UNC_NAMES (%x)",
+ cap_val);
+ }
+ if (cap_val & FMP_CAP_CIFSV2) {
+ proto_tree_add_text(capTree, tvb, offset, 4,
+ "CAP_CIFSV2 (%x)",
+ cap_val);
+ }
+ }
+ return (offset+4);
}
static int
dissect_fmp_cerrInfo(tvbuff_t *tvb, int offset, proto_tree *tree)
{
- int rval;
- clientErrorNum errorNum;
- errorNum = tvb_get_ntohl(tvb, offset);
+ int rval;
+ clientErrorNum errorNum;
- switch(errorNum){
- case FMP_CE_GENERIC:
- proto_tree_add_text(tree, tvb, offset, 4,
- "CLIENT Error Number: FMP_CE_GENERIC (%d)",
- errorNum);
- break;
+ errorNum = tvb_get_ntohl(tvb, offset);
- case FMP_CE_DISK_ERROR:
- proto_tree_add_text(tree, tvb, offset, 4,
- "CLIENT Error Number: FMP_CE_DISK_ERROR (%d)",
- errorNum);
- break;
+ switch (errorNum) {
+ case FMP_CE_GENERIC:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "CLIENT Error Number: FMP_CE_GENERIC (%d)",
+ errorNum);
+ break;
- default:
- proto_tree_add_text(tree, tvb, offset, 4,
- "CLIENT Error Number: Unknown Error Number (%d)",
- errorNum);
- break;
- }
+ case FMP_CE_DISK_ERROR:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "CLIENT Error Number: FMP_CE_DISK_ERROR (%d)",
+ errorNum);
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "CLIENT Error Number: Unknown Error Number (%d)",
+ errorNum);
+ break;
+ }
- offset += 4;
- offset = dissect_fmp_status(tvb, offset,tree, &rval);
- return offset;
+ offset += 4;
+ offset = dissect_fmp_status(tvb, offset,tree, &rval);
+
+ return offset;
}
static int
dissect_fmp_attrs(tvbuff_t *tvb, int offset, proto_tree *tree)
{
- proto_tree *attrstree;
- proto_tree *attrsTree;
-
- attrstree = proto_tree_add_text(tree, tvb, offset, 84,
- "Attribute: ");
- attrsTree = proto_item_add_subtree(attrstree,
- ett_attrs );
- offset = dissect_rpc_uint32(tvb, attrsTree, hf_fmp_nfsv3Attr_type, offset);
- offset = dissect_rpc_uint32(tvb, attrsTree, hf_fmp_nfsv3Attr_mode, offset);
- offset = dissect_rpc_uint32(tvb, attrsTree, hf_fmp_nfsv3Attr_nlink, offset);
- offset = dissect_rpc_uint32(tvb, attrsTree, hf_fmp_nfsv3Attr_uid, offset);
- offset = dissect_rpc_uint32(tvb, attrsTree, hf_fmp_nfsv3Attr_gid, offset);
- offset = dissect_rpc_uint64(tvb, attrsTree, hf_fmp_fileSize, offset);
- /* Here hf_fmp_fileSize is used in
- * place of size
- */
- offset = dissect_rpc_uint64(tvb, attrsTree, hf_fmp_nfsv3Attr_used, offset);
- offset = dissect_rpc_uint64(tvb, attrsTree, hf_fmp_nfsv3Attr_rdev, offset);
- offset = dissect_rpc_uint64(tvb, attrsTree, hf_fmp_nfsv3Attr_fsid, offset);
- offset = dissect_rpc_uint64(tvb, attrsTree, hf_fmp_nfsv3Attr_fileid, offset);
- proto_tree_add_text(tree, tvb, offset, 8,"atime: %d.%d seconds",
- tvb_get_ntohl(tvb, offset),tvb_get_ntohl(tvb, offset+4));
- offset +=8;
- proto_tree_add_text(tree, tvb, offset, 8,"mtime: %d.%d seconds",
- tvb_get_ntohl(tvb, offset),tvb_get_ntohl(tvb, offset+4));
- offset +=8;
- proto_tree_add_text(tree, tvb, offset, 8,"ctime: %d.%d seconds",
- tvb_get_ntohl(tvb, offset),tvb_get_ntohl(tvb, offset+4));
- offset +=8;
- return offset;
+ proto_tree *attrstree;
+ proto_tree *attrsTree;
+
+ attrstree = proto_tree_add_text(tree, tvb, offset, 84,
+ "Attribute: ");
+ attrsTree = proto_item_add_subtree(attrstree,
+ ett_attrs );
+ offset = dissect_rpc_uint32(tvb, attrsTree, hf_fmp_nfsv3Attr_type, offset);
+ offset = dissect_rpc_uint32(tvb, attrsTree, hf_fmp_nfsv3Attr_mode, offset);
+ offset = dissect_rpc_uint32(tvb, attrsTree, hf_fmp_nfsv3Attr_nlink, offset);
+ offset = dissect_rpc_uint32(tvb, attrsTree, hf_fmp_nfsv3Attr_uid, offset);
+ offset = dissect_rpc_uint32(tvb, attrsTree, hf_fmp_nfsv3Attr_gid, offset);
+ offset = dissect_rpc_uint64(tvb, attrsTree, hf_fmp_fileSize, offset);
+ /* Here hf_fmp_fileSize is used in
+ * place of size
+ */
+ offset = dissect_rpc_uint64(tvb, attrsTree, hf_fmp_nfsv3Attr_used, offset);
+ offset = dissect_rpc_uint64(tvb, attrsTree, hf_fmp_nfsv3Attr_rdev, offset);
+ offset = dissect_rpc_uint64(tvb, attrsTree, hf_fmp_nfsv3Attr_fsid, offset);
+ offset = dissect_rpc_uint64(tvb, attrsTree, hf_fmp_nfsv3Attr_fileid, offset);
+ proto_tree_add_text(tree, tvb, offset, 8,"atime: %d.%d seconds",
+ tvb_get_ntohl(tvb, offset),tvb_get_ntohl(tvb, offset+4));
+ offset +=8;
+ proto_tree_add_text(tree, tvb, offset, 8,"mtime: %d.%d seconds",
+ tvb_get_ntohl(tvb, offset),tvb_get_ntohl(tvb, offset+4));
+ offset +=8;
+ proto_tree_add_text(tree, tvb, offset, 8,"ctime: %d.%d seconds",
+ tvb_get_ntohl(tvb, offset),tvb_get_ntohl(tvb, offset+4));
+ offset +=8;
+ return offset;
}
@@ -1098,405 +1097,405 @@ static int
dissect_FMP_SessionCreate_request(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree)
{
- offset = dissect_rpc_string(tvb, tree, hf_fmp_hostID,
- offset, NULL);
- offset = dissect_fmp_timeval(tvb, offset, pinfo, tree, hf_fmp_btime,
- hf_fmp_time_sec, hf_fmp_time_nsec);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_notifyPort,
- offset);
- return offset;
+ offset = dissect_rpc_string(tvb, tree, hf_fmp_hostID,
+ offset, NULL);
+ offset = dissect_fmp_timeval(tvb, offset, pinfo, tree, hf_fmp_btime,
+ hf_fmp_time_sec, hf_fmp_time_nsec);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_notifyPort,
+ offset);
+ return offset;
}
static int
dissect_FMP_SessionCreate_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree)
{
- int rval;
+ int rval;
- offset = dissect_fmp_status(tvb, offset,tree, &rval);
- if (rval == 0) {
- offset = dissect_rpc_data(tvb, tree,
- hf_fmp_sessionHandle, offset);
- offset = dissect_rpc_string(tvb, tree, hf_fmp_hostID,
- offset, NULL);
- offset = dissect_fmp_timeval(tvb, offset, pinfo, tree,
- hf_fmp_btime, hf_fmp_time_sec,
- hf_fmp_time_nsec);
- offset = dissect_fmp_heartBeatIntv(tvb, offset, pinfo, tree);
- }
+ offset = dissect_fmp_status(tvb, offset,tree, &rval);
+ if (rval == 0) {
+ offset = dissect_rpc_data(tvb, tree,
+ hf_fmp_sessionHandle, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_fmp_hostID,
+ offset, NULL);
+ offset = dissect_fmp_timeval(tvb, offset, pinfo, tree,
+ hf_fmp_btime, hf_fmp_time_sec,
+ hf_fmp_time_nsec);
+ offset = dissect_fmp_heartBeatIntv(tvb, offset, pinfo, tree);
+ }
- return offset;
+ return offset;
}
static int
dissect_FMP_HeartBeat_request(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
proto_tree *tree)
{
- offset = dissect_rpc_data(tvb, tree, hf_fmp_sessionHandle,
- offset);
+ offset = dissect_rpc_data(tvb, tree, hf_fmp_sessionHandle,
+ offset);
- return offset;
+ return offset;
}
static int
dissect_FMP_HeartBeat_reply(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
proto_tree *tree)
{
- int rval;
- offset = dissect_fmp_status(tvb, offset,tree, &rval);
- return offset;
+ int rval;
+ offset = dissect_fmp_status(tvb, offset,tree, &rval);
+ return offset;
}
static int
dissect_FMP_Mount_request(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree)
{
- offset = dissect_rpc_data(tvb, tree, hf_fmp_sessionHandle,
- offset);
- offset = dissect_fmp_capability(tvb, offset, tree);
- offset = dissect_fmp_fileHandleSrc(tvb, offset, pinfo, tree);
- return offset;
+ offset = dissect_rpc_data(tvb, tree, hf_fmp_sessionHandle,
+ offset);
+ offset = dissect_fmp_capability(tvb, offset, tree);
+ offset = dissect_fmp_fileHandleSrc(tvb, offset, pinfo, tree);
+ return offset;
}
static int
dissect_FMP_Mount_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree)
{
- int rval;
+ int rval;
- offset = dissect_fmp_status(tvb, offset,tree, &rval);
- if (rval == 0) {
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_fsID,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_fsBlkSz,
- offset);
- offset = dissect_fmp_vmInfo(tvb, offset, pinfo, tree);
- }
+ offset = dissect_fmp_status(tvb, offset,tree, &rval);
+ if (rval == 0) {
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_fsID,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_fsBlkSz,
+ offset);
+ offset = dissect_fmp_vmInfo(tvb, offset, pinfo, tree);
+ }
- return offset;
+ return offset;
}
static int
dissect_FMP_Open_request(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree)
{
- offset = dissect_rpc_data(tvb, tree, hf_fmp_sessionHandle,
- offset);
- offset = dissect_fmp_fileHandleSrc(tvb, offset, pinfo, tree);
- return offset;
+ offset = dissect_rpc_data(tvb, tree, hf_fmp_sessionHandle,
+ offset);
+ offset = dissect_fmp_fileHandleSrc(tvb, offset, pinfo, tree);
+ return offset;
}
static int
dissect_FMP_Open_reply(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
proto_tree *tree)
{
- int rval;
+ int rval;
- offset = dissect_fmp_status(tvb, offset,tree, &rval);
- if (rval == 0) {
- offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
- offset);
- offset = dissect_rpc_uint64(tvb, tree, hf_fmp_fileSize,
- offset);
+ offset = dissect_fmp_status(tvb, offset,tree, &rval);
+ if (rval == 0) {
+ offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
+ offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_fmp_fileSize,
+ offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_fsID,
- offset);
- }
- return offset;
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_fsID,
+ offset);
+ }
+ return offset;
}
static int
dissect_FMP_Close_request(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
proto_tree *tree)
{
- offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle, offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
- return offset;
+ offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
+ return offset;
}
static int
dissect_FMP_Close_reply(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
proto_tree *tree)
{
- int rval;
+ int rval;
- offset = dissect_fmp_status(tvb, offset,tree, &rval);
- if (rval == 0) {
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
- offset);
- }
+ offset = dissect_fmp_status(tvb, offset,tree, &rval);
+ if (rval == 0) {
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
+ offset);
+ }
- return offset;
+ return offset;
}
static int
dissect_FMP_OpenGetMap_request(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
{
- offset = dissect_rpc_data(tvb, tree, hf_fmp_sessionHandle,
- offset);
+ offset = dissect_rpc_data(tvb, tree, hf_fmp_sessionHandle,
+ offset);
- offset = dissect_fmp_fileHandleSrc(tvb, offset, pinfo, tree);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_firstLogBlk,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_numBlksReq,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_minBlks, offset);
- return offset;
+ offset = dissect_fmp_fileHandleSrc(tvb, offset, pinfo, tree);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_firstLogBlk,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_numBlksReq,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_minBlks, offset);
+ return offset;
}
static int
dissect_FMP_OpenGetMap_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree)
{
- int rval;
+ int rval;
- offset = dissect_fmp_status(tvb, offset,tree, &rval);
- if (rval == 0) {
- offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cookie,
- offset);
- offset = dissect_rpc_uint64(tvb, tree, hf_fmp_fileSize,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_fsID,
- offset);
- offset = dissect_fmp_extentList(tvb, offset, pinfo, tree);
- }
+ offset = dissect_fmp_status(tvb, offset,tree, &rval);
+ if (rval == 0) {
+ offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cookie,
+ offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_fmp_fileSize,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_fsID,
+ offset);
+ offset = dissect_fmp_extentList(tvb, offset, pinfo, tree);
+ }
- return offset;
+ return offset;
}
static int
dissect_FMP_OpenAllocSpace_request(tvbuff_t *tvb, int offset,
packet_info *pinfo, proto_tree *tree)
{
- offset = dissect_rpc_data(tvb , tree, hf_fmp_sessionHandle,
- offset);
- offset = dissect_fmp_fileHandleSrc(tvb, offset, pinfo, tree);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_firstLogBlk,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_numBlksReq,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_minBlks, offset);
- return offset;
+ offset = dissect_rpc_data(tvb , tree, hf_fmp_sessionHandle,
+ offset);
+ offset = dissect_fmp_fileHandleSrc(tvb, offset, pinfo, tree);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_firstLogBlk,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_numBlksReq,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_minBlks, offset);
+ return offset;
}
static int
dissect_FMP_OpenAllocSpace_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree)
{
- int rval;
+ int rval;
- offset = dissect_fmp_status(tvb, offset,tree, &rval);
- if (rval == 0) {
- offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cookie,
- offset);
- offset = dissect_rpc_uint64(tvb, tree, hf_fmp_fileSize,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_fsID,
- offset);
- offset = dissect_fmp_extentList(tvb, offset, pinfo, tree);
- }
- return offset;
+ offset = dissect_fmp_status(tvb, offset,tree, &rval);
+ if (rval == 0) {
+ offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cookie,
+ offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_fmp_fileSize,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_fsID,
+ offset);
+ offset = dissect_fmp_extentList(tvb, offset, pinfo, tree);
+ }
+ return offset;
}
static int
dissect_FMP_GetMap_request(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
proto_tree *tree)
{
- offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle, offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_firstLogBlk,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_numBlksReq,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_minBlks, offset);
- return offset;
+ offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_firstLogBlk,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_numBlksReq,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_minBlks, offset);
+ return offset;
}
static int
dissect_FMP_GetMap_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree)
{
- int rval;
+ int rval;
- offset = dissect_fmp_status(tvb, offset,tree, &rval);
- if (rval == 0) {
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cookie,
- offset);
- offset = dissect_rpc_uint64(tvb, tree, hf_fmp_fileSize,
- offset);
- offset = dissect_fmp_extentList(tvb, offset, pinfo, tree);
- }
+ offset = dissect_fmp_status(tvb, offset,tree, &rval);
+ if (rval == 0) {
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cookie,
+ offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_fmp_fileSize,
+ offset);
+ offset = dissect_fmp_extentList(tvb, offset, pinfo, tree);
+ }
- return offset;
+ return offset;
}
static int
dissect_FMP_AllocSpace_request(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
proto_tree *tree)
{
- offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle, offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_firstLogBlk,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_numBlksReq,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_minBlks, offset);
- return offset;
+ offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_firstLogBlk,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_numBlksReq,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_minBlks, offset);
+ return offset;
}
static int
dissect_FMP_AllocSpace_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree)
{
- int rval;
+ int rval;
- offset = dissect_fmp_status(tvb, offset,tree, &rval);
- if (rval == 0) {
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cookie,
- offset);
- offset = dissect_rpc_uint64(tvb, tree, hf_fmp_fileSize,
- offset);
- offset = dissect_fmp_extentList(tvb, offset, pinfo, tree);
- }
+ offset = dissect_fmp_status(tvb, offset,tree, &rval);
+ if (rval == 0) {
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cookie,
+ offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_fmp_fileSize,
+ offset);
+ offset = dissect_fmp_extentList(tvb, offset, pinfo, tree);
+ }
- return offset;
+ return offset;
}
static int
dissect_FMP_Flush_request(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree)
{
- offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle, offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
- offset = dissect_fmp_flushCmd(tvb, offset, tree);
- offset = dissect_rpc_uint64(tvb,tree, hf_fmp_eof, offset);
- offset = dissect_fmp_extentList(tvb, offset, pinfo, tree);
- return offset;
+ offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
+ offset = dissect_fmp_flushCmd(tvb, offset, tree);
+ offset = dissect_rpc_uint64(tvb,tree, hf_fmp_eof, offset);
+ offset = dissect_fmp_extentList(tvb, offset, pinfo, tree);
+ return offset;
}
static int
dissect_FMP_Flush_reply(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
proto_tree *tree)
{
- int rval;
+ int rval;
- offset = dissect_fmp_status(tvb, offset,tree, &rval);
- if (rval == 0) {
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
- offset);
- }
- return offset;
+ offset = dissect_fmp_status(tvb, offset,tree, &rval);
+ if (rval == 0) {
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
+ offset);
+ }
+ return offset;
}
static int
dissect_FMP_CancelReq_request(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
proto_tree *tree)
{
- offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle, offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cookie, offset);
- return offset;
+ offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cookie, offset);
+ return offset;
}
static int
dissect_FMP_CancelReq_reply(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
- proto_tree *tree)
+ proto_tree *tree)
{
- int rval;
+ int rval;
- offset = dissect_fmp_status(tvb, offset,tree, &rval);
- if (rval == 0) {
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
- offset);
- }
- return offset;
+ offset = dissect_fmp_status(tvb, offset,tree, &rval);
+ if (rval == 0) {
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
+ offset);
+ }
+ return offset;
}
static int
dissect_FMP_PlugIn_request(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
proto_tree *tree)
{
- offset = dissect_plugInID(tvb, offset, tree);
- offset = dissect_rpc_data(tvb, tree, hf_fmp_plugInBuf, offset);
- return offset;
+ offset = dissect_plugInID(tvb, offset, tree);
+ offset = dissect_rpc_data(tvb, tree, hf_fmp_plugInBuf, offset);
+ return offset;
}
static int
dissect_FMP_PlugIn_reply(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
proto_tree *tree)
{
- int rval;
+ int rval;
- offset = dissect_fmp_status(tvb, offset,tree, &rval);
- if (rval == 0) {
- offset = dissect_rpc_data(tvb, tree, hf_fmp_plugInBuf,
- offset);
- }
- return offset;
+ offset = dissect_fmp_status(tvb, offset,tree, &rval);
+ if (rval == 0) {
+ offset = dissect_rpc_data(tvb, tree, hf_fmp_plugInBuf,
+ offset);
+ }
+ return offset;
}
static int
dissect_FMP_SessionTerminate_request(tvbuff_t *tvb, int offset,
packet_info *pinfo _U_, proto_tree *tree)
{
- offset = dissect_rpc_data(tvb, tree, hf_fmp_sessionHandle,
- offset);
- return offset;
+ offset = dissect_rpc_data(tvb, tree, hf_fmp_sessionHandle,
+ offset);
+ return offset;
}
static int
dissect_FMP_SessionTerminate_reply(tvbuff_t *tvb, int offset,
packet_info *pinfo _U_, proto_tree *tree)
{
- int rval;
+ int rval;
- offset = dissect_fmp_status(tvb, offset,tree, &rval);
- return offset;
+ offset = dissect_fmp_status(tvb, offset,tree, &rval);
+ return offset;
}
static int
dissect_FMP_SessionCreateEx_request(tvbuff_t *tvb, int offset,packet_info *pinfo, proto_tree *tree)
{
- offset = dissect_rpc_string(tvb, tree, hf_fmp_hostID,
- offset, NULL);
- offset = dissect_fmp_timeval(tvb, offset, pinfo ,tree, hf_fmp_btime,
- hf_fmp_time_sec, hf_fmp_time_nsec);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_notifyPort,
- offset);
- offset = dissect_fmp_notifyProtocol(tvb, offset, tree);
+ offset = dissect_rpc_string(tvb, tree, hf_fmp_hostID,
+ offset, NULL);
+ offset = dissect_fmp_timeval(tvb, offset, pinfo ,tree, hf_fmp_btime,
+ hf_fmp_time_sec, hf_fmp_time_nsec);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_notifyPort,
+ offset);
+ offset = dissect_fmp_notifyProtocol(tvb, offset, tree);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_os_major,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_os_minor,
- offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_os_major,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_os_minor,
+ offset);
- offset = dissect_rpc_string(tvb, tree, hf_fmp_os_name,
- offset, NULL);
+ offset = dissect_rpc_string(tvb, tree, hf_fmp_os_name,
+ offset, NULL);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_os_patch,
- offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_os_patch,
+ offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_os_build,
- offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_os_build,
+ offset);
- offset = dissect_fmp_capabilities(tvb, offset, tree);
+ offset = dissect_fmp_capabilities(tvb, offset, tree);
- return offset;
+ return offset;
}
@@ -1504,87 +1503,87 @@ static int
dissect_FMP_SessionCreateEx_reply(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
{
- int rval;
+ int rval;
- offset = dissect_fmp_status(tvb, offset, tree, &rval);
- if (rval == 0) {
- offset = dissect_rpc_data(tvb, tree,
- hf_fmp_sessionHandle, offset);
- offset = dissect_rpc_string(tvb, tree, hf_fmp_hostID,
- offset, NULL);
- offset = dissect_fmp_timeval(tvb, offset, pinfo ,tree,
- hf_fmp_btime, hf_fmp_time_sec,
- hf_fmp_time_nsec);
- offset = dissect_fmp_heartBeatIntv(tvb, offset, pinfo , tree);
+ offset = dissect_fmp_status(tvb, offset, tree, &rval);
+ if (rval == 0) {
+ offset = dissect_rpc_data(tvb, tree,
+ hf_fmp_sessionHandle, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_fmp_hostID,
+ offset, NULL);
+ offset = dissect_fmp_timeval(tvb, offset, pinfo ,tree,
+ hf_fmp_btime, hf_fmp_time_sec,
+ hf_fmp_time_nsec);
+ offset = dissect_fmp_heartBeatIntv(tvb, offset, pinfo , tree);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_os_major,
- offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_os_major,
+ offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_os_minor,
- offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_os_minor,
+ offset);
- offset = dissect_rpc_string(tvb, tree, hf_fmp_server_version_string,
- offset, NULL);
+ offset = dissect_rpc_string(tvb, tree, hf_fmp_server_version_string,
+ offset, NULL);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_os_patch,
- offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_os_patch,
+ offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_os_build,
- offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_os_build,
+ offset);
- offset = dissect_fmp_capabilities(tvb, offset, tree);
- }
+ offset = dissect_fmp_capabilities(tvb, offset, tree);
+ }
- return offset;
+ return offset;
}
static int
dissect_FMP_ReportClientError_request(tvbuff_t *tvb, int offset,
- packet_info *pinfo _U_, proto_tree *tree)
+ packet_info *pinfo _U_, proto_tree *tree)
{
- offset = dissect_rpc_string(tvb, tree, hf_fmp_description,
- offset, NULL);
+ offset = dissect_rpc_string(tvb, tree, hf_fmp_description,
+ offset, NULL);
- offset = dissect_fmp_cerrInfo(tvb, offset, tree);
- return offset;
+ offset = dissect_fmp_cerrInfo(tvb, offset, tree);
+ return offset;
}
static int
dissect_FMP_ReportClientError_reply(tvbuff_t *tvb, int offset,
- packet_info *pinfo _U_, proto_tree *tree)
+ packet_info *pinfo _U_, proto_tree *tree)
{
- int rval;
- offset = dissect_fmp_status(tvb, offset,tree, &rval);
+ int rval;
+ offset = dissect_fmp_status(tvb, offset,tree, &rval);
- return offset;
+ return offset;
}
static int
dissect_FMP_GetAttr_request(tvbuff_t *tvb, int offset,
packet_info *pinfo _U_, proto_tree *tree)
{
- offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle, offset);
+ offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle, offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
- return offset;
+ return offset;
}
static int
dissect_FMP_GetAttr_reply(tvbuff_t *tvb, int offset,
- packet_info *pinfo _U_, proto_tree *tree)
+ packet_info *pinfo _U_, proto_tree *tree)
{
- int rval;
- offset = dissect_fmp_status(tvb, offset,tree, &rval);
- if(rval == 0){
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
+ int rval;
+ offset = dissect_fmp_status(tvb, offset,tree, &rval);
+ if (rval == 0) {
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
- offset = dissect_fmp_attrs(tvb, offset, tree);
- }
+ offset = dissect_fmp_attrs(tvb, offset, tree);
+ }
- return offset;
+ return offset;
}
static int
@@ -1592,80 +1591,80 @@ dissect_FMP_OpenGetAttr_request(tvbuff_t *tvb, int offset,
packet_info *pinfo, proto_tree *tree)
{
- offset = dissect_rpc_data(tvb, tree, hf_fmp_sessionHandle,
- offset);
+ offset = dissect_rpc_data(tvb, tree, hf_fmp_sessionHandle,
+ offset);
- offset = dissect_fmp_fileHandleSrc(tvb, offset, pinfo, tree);
+ offset = dissect_fmp_fileHandleSrc(tvb, offset, pinfo, tree);
- return offset;
+ return offset;
}
static int
dissect_FMP_OpenGetAttr_reply(tvbuff_t *tvb, int offset,
- packet_info *pinfo _U_, proto_tree *tree)
+ packet_info *pinfo _U_, proto_tree *tree)
{
- int rval;
+ int rval;
- offset = dissect_fmp_status(tvb, offset, tree, &rval);
+ offset = dissect_fmp_status(tvb, offset, tree, &rval);
- if (rval == 0){
- offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle, offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
- offset = dissect_rpc_uint64(tvb, tree, hf_fmp_fileSize, offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_fsID, offset);
+ if (rval == 0) {
+ offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_fmp_fileSize, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_fsID, offset);
offset = dissect_fmp_attrs(tvb, offset, tree);
- }
+ }
- return offset;
+ return offset;
}
static int
dissect_FMP_FlushGetAttr_request(tvbuff_t *tvb, int offset,
- packet_info *pinfo, proto_tree *tree)
+ packet_info *pinfo, proto_tree *tree)
{
- offset = dissect_fmp_fileHandleSrc(tvb, offset, pinfo, tree);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cmd, offset);
- offset = dissect_rpc_uint64(tvb,tree, hf_fmp_eof, offset);
+ offset = dissect_fmp_fileHandleSrc(tvb, offset, pinfo, tree);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cmd, offset);
+ offset = dissect_rpc_uint64(tvb,tree, hf_fmp_eof, offset);
proto_tree_add_text(tree, tvb, offset, 8,"mtime: %d.%d seconds",
- tvb_get_ntohl(tvb, offset),tvb_get_ntohl(tvb, offset+4));
- offset += 8;
- offset = dissect_fmp_extentList(tvb, offset, pinfo, tree);
+ tvb_get_ntohl(tvb, offset),tvb_get_ntohl(tvb, offset+4));
+ offset += 8;
+ offset = dissect_fmp_extentList(tvb, offset, pinfo, tree);
- return offset;
+ return offset;
}
static int
dissect_FMP_FlushGetAttr_reply(tvbuff_t *tvb, int offset,
- packet_info *pinfo _U_, proto_tree *tree)
+ packet_info *pinfo _U_, proto_tree *tree)
{
- int rval;
+ int rval;
- offset = dissect_fmp_status(tvb, offset,tree, &rval);
- if(rval == 0){
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
+ offset = dissect_fmp_status(tvb, offset,tree, &rval);
+ if (rval == 0) {
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
- offset = dissect_fmp_attrs(tvb, offset, tree);
- }
+ offset = dissect_fmp_attrs(tvb, offset, tree);
+ }
- return offset;
+ return offset;
}
static int
dissect_FMP_GetVolumeInfo_request(tvbuff_t *tvb, int offset,
- packet_info *pinfo _U_, proto_tree *tree)
+ packet_info *pinfo _U_, proto_tree *tree)
{
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_topVolumeId, offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cursor, offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cookie, offset);
- return offset;
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_topVolumeId, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cursor, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cookie, offset);
+ return offset;
}
@@ -1674,187 +1673,187 @@ static int
dissect_FMP_GetVolumeInfo_reply(tvbuff_t *tvb, int offset,
packet_info *pinfo _U_, proto_tree *tree)
{
- int rval;
+ int rval;
- offset = dissect_fmp_status(tvb, offset,tree, &rval);
- if (rval == 0) {
- /* FIXME: I don't know size of this volumes */
- offset = dissect_fmp_Hiervolume(tvb,offset, tree);
- }
+ offset = dissect_fmp_status(tvb, offset,tree, &rval);
+ if (rval == 0) {
+ /* FIXME: I don't know size of this volumes */
+ offset = dissect_fmp_Hiervolume(tvb,offset, tree);
+ }
return offset;
}
static int
dissect_FMP_OpenGetMapEx_request(tvbuff_t *tvb, int offset,
- packet_info *pinfo, proto_tree *tree)
+ packet_info *pinfo, proto_tree *tree)
{
- offset = dissect_rpc_data(tvb, tree, hf_fmp_sessionHandle,
- offset);
- offset = dissect_fmp_fileHandleSrc(tvb, offset, pinfo, tree);
- offset = dissect_rpc_uint64(tvb, tree, hf_fmp_firstLogBlk64, offset);
+ offset = dissect_rpc_data(tvb, tree, hf_fmp_sessionHandle,
+ offset);
+ offset = dissect_fmp_fileHandleSrc(tvb, offset, pinfo, tree);
+ offset = dissect_rpc_uint64(tvb, tree, hf_fmp_firstLogBlk64, offset);
offset = dissect_rpc_uint32(tvb, tree, hf_fmp_numBlksReq,
offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_minBlks, offset);
- return offset;
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_minBlks, offset);
+ return offset;
}
static int
dissect_FMP_OpenGetMapEx_reply(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
- proto_tree *tree)
+ proto_tree *tree)
{
- int rval;
- offset = dissect_fmp_status(tvb, offset,tree, &rval);
- if (rval == 0) {
- offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cookie,
- offset);
- offset = dissect_rpc_uint64(tvb, tree, hf_fmp_fileSize,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_fsID,
- offset);
- offset = dissect_fmp_extentListEx(tvb, offset, pinfo, tree);
- }
+ int rval;
+ offset = dissect_fmp_status(tvb, offset,tree, &rval);
+ if (rval == 0) {
+ offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cookie,
+ offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_fmp_fileSize,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_fsID,
+ offset);
+ offset = dissect_fmp_extentListEx(tvb, offset, pinfo, tree);
+ }
- return offset;
+ return offset;
}
static int
dissect_FMP_OpenAllocSpaceEx_request(tvbuff_t *tvb, int offset,
- packet_info *pinfo, proto_tree *tree)
+ packet_info *pinfo, proto_tree *tree)
{
- offset = dissect_rpc_data(tvb , tree, hf_fmp_sessionHandle,
- offset);
- offset = dissect_fmp_fileHandleSrc(tvb, offset, pinfo, tree);
- offset = dissect_rpc_uint64(tvb, tree, hf_fmp_firstLogBlk64, offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_numBlksReq,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_minBlks, offset);
- return offset;
+ offset = dissect_rpc_data(tvb , tree, hf_fmp_sessionHandle,
+ offset);
+ offset = dissect_fmp_fileHandleSrc(tvb, offset, pinfo, tree);
+ offset = dissect_rpc_uint64(tvb, tree, hf_fmp_firstLogBlk64, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_numBlksReq,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_minBlks, offset);
+ return offset;
}
static int
dissect_FMP_OpenAllocSpaceEx_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
- proto_tree *tree)
+ proto_tree *tree)
{
- int rval;
+ int rval;
- offset = dissect_fmp_status(tvb, offset,tree, &rval);
- if (rval == 0) {
- offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cookie,
- offset);
- offset = dissect_rpc_uint64(tvb, tree, hf_fmp_fileSize,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_fsID,
- offset);
- offset = dissect_fmp_extentListEx(tvb, offset, pinfo, tree);
- }
- return offset;
+ offset = dissect_fmp_status(tvb, offset,tree, &rval);
+ if (rval == 0) {
+ offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cookie,
+ offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_fmp_fileSize,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_fsID,
+ offset);
+ offset = dissect_fmp_extentListEx(tvb, offset, pinfo, tree);
+ }
+ return offset;
}
static int
dissect_FMP_GetMapEx_request(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
- proto_tree *tree)
+ proto_tree *tree)
{
- offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle, offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
- offset = dissect_rpc_uint64(tvb, tree, hf_fmp_firstLogBlk64, offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_numBlksReq,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_minBlks, offset);
- return offset;
+ offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_fmp_firstLogBlk64, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_numBlksReq,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_minBlks, offset);
+ return offset;
}
static int
dissect_FMP_GetMapEx_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
- proto_tree *tree)
+ proto_tree *tree)
{
- int rval;
+ int rval;
- offset = dissect_fmp_status(tvb, offset,tree, &rval);
- if (rval == 0) {
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cookie,
- offset);
- offset = dissect_rpc_uint64(tvb, tree, hf_fmp_fileSize,
- offset);
- offset = dissect_fmp_extentListEx(tvb, offset, pinfo, tree);
- }
+ offset = dissect_fmp_status(tvb, offset,tree, &rval);
+ if (rval == 0) {
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cookie,
+ offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_fmp_fileSize,
+ offset);
+ offset = dissect_fmp_extentListEx(tvb, offset, pinfo, tree);
+ }
- return offset;
+ return offset;
}
static int
dissect_FMP_AllocSpaceEx_request(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
- proto_tree *tree)
+ proto_tree *tree)
{
- offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle, offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
- offset = dissect_rpc_uint64(tvb, tree, hf_fmp_firstLogBlk64, offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_numBlksReq,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_minBlks, offset);
- return offset;
+ offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_fmp_firstLogBlk64, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_numBlksReq,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_minBlks, offset);
+ return offset;
}
static int
dissect_FMP_AllocSpaceEx_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
- proto_tree *tree)
+ proto_tree *tree)
{
- int rval;
+ int rval;
- offset = dissect_fmp_status(tvb, offset,tree, &rval);
- if (rval == 0) {
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
- offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cookie,
- offset);
- offset = dissect_rpc_uint64(tvb, tree, hf_fmp_fileSize,
- offset);
- offset = dissect_fmp_extentListEx(tvb, offset, pinfo, tree);
- }
+ offset = dissect_fmp_status(tvb, offset,tree, &rval);
+ if (rval == 0) {
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cookie,
+ offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_fmp_fileSize,
+ offset);
+ offset = dissect_fmp_extentListEx(tvb, offset, pinfo, tree);
+ }
- return offset;
+ return offset;
}
static int
dissect_FMP_FlushEx_request(tvbuff_t *tvb, int offset, packet_info *pinfo,
- proto_tree *tree)
+ proto_tree *tree)
{
- offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle, offset);
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
- offset = dissect_fmp_flushCmd(tvb, offset, tree);
- offset = dissect_rpc_uint64(tvb,tree, hf_fmp_eof, offset);
- offset = dissect_fmp_extentListEx(tvb, offset, pinfo, tree);
- return offset;
+ offset = dissect_rpc_data(tvb, tree, hf_fmp_fmpFHandle, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum, offset);
+ offset = dissect_fmp_flushCmd(tvb, offset, tree);
+ offset = dissect_rpc_uint64(tvb,tree, hf_fmp_eof, offset);
+ offset = dissect_fmp_extentListEx(tvb, offset, pinfo, tree);
+ return offset;
}
static int
dissect_FMP_FlushEx_reply(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
- proto_tree *tree)
+ proto_tree *tree)
{
- int rval;
+ int rval;
- offset = dissect_fmp_status(tvb, offset,tree, &rval);
- if (rval == 0) {
- offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
- offset);
- }
- return offset;
+ offset = dissect_fmp_status(tvb, offset,tree, &rval);
+ if (rval == 0) {
+ offset = dissect_rpc_uint32(tvb, tree, hf_fmp_msgNum,
+ offset);
+ }
+ return offset;
}
/*
* proc number, "proc name", dissect_request, dissect_reply
@@ -1862,152 +1861,202 @@ dissect_FMP_FlushEx_reply(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
*/
static const vsff fmp3_proc[] = {
-{ 1, "SessionCreate",
- dissect_FMP_SessionCreate_request, dissect_FMP_SessionCreate_reply },
-
-{ 2, "HeartBeat",
- dissect_FMP_HeartBeat_request, dissect_FMP_HeartBeat_reply },
-
-{ 3, "Mount",
- dissect_FMP_Mount_request, dissect_FMP_Mount_reply },
-
-{ 4, "Open",
- dissect_FMP_Open_request, dissect_FMP_Open_reply },
-
-{ 5, "Close",
- dissect_FMP_Close_request, dissect_FMP_Close_reply },
-
-{ 6, "OpenGetMap",
- dissect_FMP_OpenGetMap_request, dissect_FMP_OpenGetMap_reply },
-
-{ 7, "OpenAllocSpace",
- dissect_FMP_OpenAllocSpace_request, dissect_FMP_OpenAllocSpace_reply },
-
-{ 8, "GetMap",
- dissect_FMP_GetMap_request, dissect_FMP_GetMap_reply },
-
-{ 9, "AllocSpace",
- dissect_FMP_AllocSpace_request, dissect_FMP_AllocSpace_reply },
-
-{ 10, "Flush",
- dissect_FMP_Flush_request, dissect_FMP_Flush_reply },
-
-{ 11, "CancelReq",
- dissect_FMP_CancelReq_request, dissect_FMP_CancelReq_reply },
-
-{ 12, "PlugIn",
- dissect_FMP_PlugIn_request, dissect_FMP_PlugIn_reply },
-
-{ 13, "SessionTerminate",
- dissect_FMP_SessionTerminate_request, dissect_FMP_SessionTerminate_reply },
-
-{ 14, "SessionCreateEx",
- dissect_FMP_SessionCreateEx_request, dissect_FMP_SessionCreateEx_reply },
-
-{ 15, "ReportClientError",
- dissect_FMP_ReportClientError_request, dissect_FMP_ReportClientError_reply },
-
-{ 16 , "Get Attribute",
- dissect_FMP_GetAttr_request, dissect_FMP_GetAttr_reply },
-
-{ 17 , "Open Get Attribute",
- dissect_FMP_OpenGetAttr_request, dissect_FMP_OpenGetAttr_reply },
-
-{ 18 , "Flush Get Attribute",
- dissect_FMP_FlushGetAttr_request, dissect_FMP_FlushGetAttr_reply },
-
-{ 19 , "OpenGetMapEx",
- dissect_FMP_OpenGetMapEx_request, dissect_FMP_OpenGetMapEx_reply },
-
-{ 20 , "OpenAllocSpaceEx",
- dissect_FMP_OpenAllocSpaceEx_request, dissect_FMP_OpenAllocSpaceEx_reply },
-
-{ 21 , "GetMapEx",
- dissect_FMP_GetMapEx_request, dissect_FMP_GetMapEx_reply },
-
-{ 22 , "AllocSpaceEx",
- dissect_FMP_AllocSpaceEx_request, dissect_FMP_AllocSpaceEx_reply },
-
-{ 23 , "FMP_FlushEx",
- dissect_FMP_FlushEx_request, dissect_FMP_FlushEx_reply },
+ { 1,
+ "SessionCreate",
+ dissect_FMP_SessionCreate_request,
+ dissect_FMP_SessionCreate_reply },
+
+ { 2,
+ "HeartBeat",
+ dissect_FMP_HeartBeat_request,
+ dissect_FMP_HeartBeat_reply },
+
+ { 3,
+ "Mount",
+ dissect_FMP_Mount_request,
+ dissect_FMP_Mount_reply },
+
+ { 4,
+ "Open",
+ dissect_FMP_Open_request,
+ dissect_FMP_Open_reply },
+
+ { 5,
+ "Close",
+ dissect_FMP_Close_request,
+ dissect_FMP_Close_reply },
+
+ { 6,
+ "OpenGetMap",
+ dissect_FMP_OpenGetMap_request,
+ dissect_FMP_OpenGetMap_reply },
+
+ { 7,
+ "OpenAllocSpace",
+ dissect_FMP_OpenAllocSpace_request,
+ dissect_FMP_OpenAllocSpace_reply },
+
+ { 8,
+ "GetMap",
+ dissect_FMP_GetMap_request,
+ dissect_FMP_GetMap_reply },
+
+ { 9,
+ "AllocSpace",
+ dissect_FMP_AllocSpace_request,
+ dissect_FMP_AllocSpace_reply },
+
+ { 10,
+ "Flush",
+ dissect_FMP_Flush_request,
+ dissect_FMP_Flush_reply },
+
+ { 11,
+ "CancelReq",
+ dissect_FMP_CancelReq_request,
+ dissect_FMP_CancelReq_reply },
+
+ { 12,
+ "PlugIn",
+ dissect_FMP_PlugIn_request,
+ dissect_FMP_PlugIn_reply },
+
+ { 13,
+ "SessionTerminate",
+ dissect_FMP_SessionTerminate_request,
+ dissect_FMP_SessionTerminate_reply },
+
+ { 14,
+ "SessionCreateEx",
+ dissect_FMP_SessionCreateEx_request,
+ dissect_FMP_SessionCreateEx_reply },
+
+ { 15,
+ "ReportClientError",
+ dissect_FMP_ReportClientError_request,
+ dissect_FMP_ReportClientError_reply },
+
+ { 16 ,
+ "Get Attribute",
+ dissect_FMP_GetAttr_request,
+ dissect_FMP_GetAttr_reply },
+
+ { 17 ,
+ "Open Get Attribute",
+ dissect_FMP_OpenGetAttr_request,
+ dissect_FMP_OpenGetAttr_reply },
+
+ { 18 ,
+ "Flush Get Attribute",
+ dissect_FMP_FlushGetAttr_request,
+ dissect_FMP_FlushGetAttr_reply },
+
+ { 19 ,
+ "OpenGetMapEx",
+ dissect_FMP_OpenGetMapEx_request,
+ dissect_FMP_OpenGetMapEx_reply },
+
+ { 20 ,
+ "OpenAllocSpaceEx",
+ dissect_FMP_OpenAllocSpaceEx_request,
+ dissect_FMP_OpenAllocSpaceEx_reply },
+
+ { 21 ,
+ "GetMapEx",
+ dissect_FMP_GetMapEx_request,
+ dissect_FMP_GetMapEx_reply },
+
+ { 22 ,
+ "AllocSpaceEx",
+ dissect_FMP_AllocSpaceEx_request,
+ dissect_FMP_AllocSpaceEx_reply },
+
+ { 23 ,
+ "FMP_FlushEx",
+ dissect_FMP_FlushEx_request,
+ dissect_FMP_FlushEx_reply },
#if 0
-{ 24 , "FlushGetAttrEx",
- dissect_FMP_FlushGetAttrEx_request, dissect_FMP_FlushGetAttrEx_reply },
+ { 24 ,
+ "FlushGetAttrEx",
+ dissect_FMP_FlushGetAttrEx_request,
+ dissect_FMP_FlushGetAttrEx_reply },
#endif
-{ 25 , "GetVolumeInfo",
- dissect_FMP_GetVolumeInfo_request, dissect_FMP_GetVolumeInfo_reply },
+ { 25 ,
+ "GetVolumeInfo",
+ dissect_FMP_GetVolumeInfo_request,
+ dissect_FMP_GetVolumeInfo_reply },
-{0 , NULL , NULL , NULL }
+ {0 , NULL , NULL , NULL }
};
static const value_string fmp_proc_vals[] = {
- { 1, "SessionCreate" },
- { 2, "HeartBeat" },
- { 3, "Mount" },
- { 4, "Open" },
- { 5, "Close" },
- { 6, "OpenGetMap" },
- { 7, "OpenAllocSpace" },
- { 8, "GetMap" },
- { 9, "AllocSpace " },
- { 10, "Flush" },
- { 11, "CancelReq" },
- { 12, "PlugIn" },
- { 13, "SessionTerminate" },
- { 14, "SessionCreateEx" },
- { 15, "ReportClientError" },
- { 16, "GetAttr " },
- { 17, "OpenGetAttr" },
- { 18, "FlushGetAttr"},
- { 19, "OpenGetMapEx"},
- { 20, "OpenAllocSpaceEx"},
- { 21, "GetMapEx"},
- { 22, "AllocSpaceEx"},
- { 23, "FlushEx"},
- { 24, "FlushGetAttrEx"},
- { 25, "GetVolumeInfo"},
- { 0, "NULL" },
- { 0,NULL }
+ { 0, "NULL" },
+ { 1, "SessionCreate" },
+ { 2, "HeartBeat" },
+ { 3, "Mount" },
+ { 4, "Open" },
+ { 5, "Close" },
+ { 6, "OpenGetMap" },
+ { 7, "OpenAllocSpace" },
+ { 8, "GetMap" },
+ { 9, "AllocSpace " },
+ { 10, "Flush" },
+ { 11, "CancelReq" },
+ { 12, "PlugIn" },
+ { 13, "SessionTerminate" },
+ { 14, "SessionCreateEx" },
+ { 15, "ReportClientError" },
+ { 16, "GetAttr " },
+ { 17, "OpenGetAttr" },
+ { 18, "FlushGetAttr"},
+ { 19, "OpenGetMapEx"},
+ { 20, "OpenAllocSpaceEx"},
+ { 21, "GetMapEx"},
+ { 22, "AllocSpaceEx"},
+ { 23, "FlushEx"},
+ { 24, "FlushGetAttrEx"},
+ { 25, "GetVolumeInfo"},
+ { 0,NULL }
};
static const value_string fmp_status_vals[] = {
- {0,"OK"},
- {5,"IOERROR"},
- {12,"NOMEM"},
- {13,"NOACCESS"},
- {22,"INVALIDARG"},
- {28,"FSFULL"},
- {79,"QUEUE_FULL"},
- {500,"WRONG_MSG_NUM"},
- {501,"SESSION_LOST"},
- {502,"HOT_SESSION"},
- {503,"COLD_SESSION"},
- {504,"CLIENT_TERMINATED"},
- {505,"WRITER_LOST_BLK"},
- {506,"FMP_REQUEST_QUEUED"},
- {507,"FMP_FALL_BACK"},
- {508,"REQUEST_CANCELLED"},
- {509,"WRITER_ZEROED_BLK"},
- {510,"NOTIFY_ERROR"},
- {511,"FMP_WRONG_HANDLE"},
- {512,"DUPLICATE_OPEN"},
- {600,"PLUGIN_NOFUNC"},
- {0,NULL}
+ { 0, "OK"},
+ { 5, "IOERROR"},
+ { 12, "NOMEM"},
+ { 13, "NOACCESS"},
+ { 22, "INVALIDARG"},
+ { 28, "FSFULL"},
+ { 79, "QUEUE_FULL"},
+ {500, "WRONG_MSG_NUM"},
+ {501, "SESSION_LOST"},
+ {502, "HOT_SESSION"},
+ {503, "COLD_SESSION"},
+ {504, "CLIENT_TERMINATED"},
+ {505, "WRITER_LOST_BLK"},
+ {506, "FMP_REQUEST_QUEUED"},
+ {507, "FMP_FALL_BACK"},
+ {508, "REQUEST_CANCELLED"},
+ {509, "WRITER_ZEROED_BLK"},
+ {510, "NOTIFY_ERROR"},
+ {511, "FMP_WRONG_HANDLE"},
+ {512, "DUPLICATE_OPEN"},
+ {600, "PLUGIN_NOFUNC"},
+ {0,NULL}
};
static const value_string fmp_extentState_vals[] = {
- {0,"VALID_DATA"},
- {1,"INVALID_DATA"},
- {2,"NONE_DATA"},
- {0,NULL}
+ {0,"VALID_DATA"},
+ {1,"INVALID_DATA"},
+ {2,"NONE_DATA"},
+ {0,NULL}
};
@@ -2015,243 +2064,329 @@ static const value_string fmp_extentState_vals[] = {
void
proto_register_fmp(void)
{
- static hf_register_info hf[] = {
- { &hf_fmp_procedure, {
- "Procedure", "fmp.procedure", FT_UINT32, BASE_DEC,
- VALS(fmp_proc_vals) , 0, NULL, HFILL }}, /* New addition */
-
- { &hf_fmp_hostID, {
- "Host ID", "fmp.hostID", FT_STRING, BASE_NONE,
- NULL, 0, NULL, HFILL }},
-
- { &hf_fmp_btime, {
- "Boot Time", "fmp.btime", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0, "Machine Boot Time", HFILL }},
-
- { &hf_fmp_time_sec, {
- "seconds", "fmp.btime.sec", FT_UINT32, BASE_DEC,
- NULL, 0, NULL, HFILL }},
-
- { &hf_fmp_time_nsec, {
- "nanoseconds", "fmp.btime.nsec", FT_UINT32, BASE_DEC,
- NULL, 0, NULL, HFILL }},
-
- { &hf_fmp_notifyPort, {
- "Notify Port", "fmp.notifyPort", FT_UINT32, BASE_DEC,
- NULL, 0, "FMP Notify Port", HFILL }},
-
- { &hf_fmp_sessionHandle, {
- "Session Handle", "fmp.sessHandle", FT_BYTES, BASE_NONE,
- NULL, 0, "FMP Session Handle", HFILL }},
-
- { &hf_fmp_fmpFHandle, {
- "FMP File Handle", "fmp.fmpFHandle",
- FT_BYTES, BASE_NONE, NULL, 0, NULL,
- HFILL }},
-
- { &hf_fmp_nfsFHandle, {
- "NFS File Handle", "fmp.nfsFHandle", FT_BYTES,
- BASE_NONE, NULL, 0, NULL, HFILL }},
-
- { &hf_fmp_fsID, {
- "File System ID", "fmp.fsID", FT_UINT32, BASE_HEX,
- NULL, 0, NULL, HFILL }},
- { &hf_fmp_status, {
- "Status", "fmp.status", FT_UINT32, BASE_DEC,
- VALS(fmp_status_vals), 0, "Reply Status", HFILL }},
-
- { &hf_fmp_fsBlkSz, {
- "FS Block Size", "fmp.fsBlkSz", FT_UINT32, BASE_DEC,
- NULL, 0, "File System Block Size", HFILL }},
-
- { &hf_fmp_volHandle, {
- "Volume Handle", "fmp.volHandle", FT_STRING, BASE_NONE,
- NULL, 0, "FMP Volume Handle", HFILL }},
-
- { &hf_fmp_dskSigEnt_val, {
- "Celerra Signature", "fmp.dsi.ds.dsList.dskSigLst_val.dse.dskSigEnt_val", FT_STRING, BASE_NONE,
- NULL, 0, NULL, HFILL }},
- { &hf_fmp_devSignature, {
- "Signature DATA", "fmp.devSig", FT_STRING, BASE_NONE,
- NULL, 0, NULL, HFILL }},
- { &hf_fmp_mount_path, {
- "Native Protocol: PATH", "fmp.mount_path", FT_STRING, BASE_NONE,
- NULL, 0, "Absolute path from the root on the server side", HFILL }},
- { &hf_fmp_sig_offset, {
- "Sig Offset", "fmp.dsi.ds.sig_offset", FT_UINT64, BASE_DEC,
- NULL, 0, NULL, HFILL }},
-
- { &hf_fmp_numBlksReq, {
- "Extent Length", "fmp.numBlksReq", FT_UINT32,
- BASE_DEC, NULL, 0, NULL, HFILL }},
-
- { &hf_fmp_minBlks, {
- "Minimum Blocks to Grant", "fmp.minBlks", FT_UINT32,
- BASE_DEC, NULL, 0, NULL, HFILL }},
-
- { &hf_fmp_msgNum, {
- "Message Number", "fmp.msgNum", FT_UINT32, BASE_DEC,
- NULL, 0, "FMP Message Number", HFILL }},
-
- { &hf_fmp_cookie, {
- "Cookie", "fmp.cookie", FT_UINT32, BASE_HEX,
- NULL, 0, "Cookie for FMP_REQUEST_QUEUED Resp", HFILL }},
-
- { &hf_fmp_fileSize, {
- "File Size", "fmp.fileSize", FT_UINT64, BASE_DEC,
- NULL, 0, NULL, HFILL }},
-
- { &hf_fmp_extentList_len, {
- "Extent List Length", "fmp.extentList_len", FT_UINT32,
- BASE_DEC, NULL, 0, "FMP Extent List Length", HFILL }},
-
- { &hf_fmp_extent_state, {
- "Extent State", "fmp.extentState", FT_UINT32,BASE_DEC,
- VALS(fmp_extentState_vals), 0, "FMP Extent State", HFILL }},
-
- { &hf_fmp_firstLogBlk, {
- "firstLogBlk", "fmp.firstLogBlk", FT_UINT32,
- BASE_DEC, NULL, 0, "First Logical File Block", HFILL }},
-
- { &hf_fmp_numBlks, {
- "Number Blocks", "fmp.numBlks", FT_UINT32, BASE_DEC,
- NULL, 0, "Number of Blocks", HFILL }},
-
- { &hf_fmp_volID, {
- "Volume ID inside DART", "fmp.volID", FT_UINT32, BASE_HEX,
- NULL, 0, "FMP Volume ID inside DART", HFILL }},
-
- { &hf_fmp_startOffset, {
- "Start Offset", "fmp.startOffset", FT_UINT32, BASE_DEC,
- NULL, 0, "FMP Start Offset", HFILL }},
-
- { &hf_fmp_start_offset64, {
- "Start offset", "fmp.start_offset64", FT_UINT64, BASE_DEC,
- NULL, 0, "Start Offset of extentEx", HFILL }},
-
- { &hf_fmp_eof, {
- "EOF", "fmp.eof", FT_UINT64, BASE_DEC,
- NULL, 0, "End Of File", HFILL }},
-
- { &hf_fmp_plugInID, {
- "Plug In Cmd ID", "fmp.plugInID", FT_BYTES, BASE_NONE,
- NULL, 0, "Plug In Command ID", HFILL }},
-
- { &hf_fmp_plugInBuf, {
- "Plug In Args", "fmp.plugIn", FT_BYTES, BASE_NONE,
- NULL, 0, "FMP Plug In Arguments", HFILL }},
- { &hf_fmp_os_major, {
- "OS Major", "fmp.os_major", FT_UINT32, BASE_DEC,
- NULL, 0, "FMP OS Major", HFILL }},
- { &hf_fmp_os_minor, {
- "OS Minor", "fmp.os_minor", FT_UINT32, BASE_DEC,
- NULL, 0, "FMP OS Minor", HFILL }},
- { &hf_fmp_os_name, {
- "OS Name", "fmp.os_name", FT_STRING, BASE_NONE,
- NULL, 0, NULL, HFILL }},
- { &hf_fmp_path, {
- "Mount Path", "fmp.Path", FT_STRING, BASE_NONE,
- NULL, 0, NULL, HFILL }},
- { &hf_fmp_os_patch, {
- "OS Path", "fmp.os_patch", FT_UINT32, BASE_DEC,
- NULL, 0, NULL, HFILL }},
- { &hf_fmp_os_build, {
- "OS Build", "fmp.os_build", FT_UINT32, BASE_DEC,
- NULL, 0, NULL, HFILL }},
- { &hf_fmp_server_version_string, {
- "Server Version String", "fmp.server_version_string", FT_STRING, BASE_NONE,
- NULL, 0, NULL, HFILL }},
- { &hf_fmp_description, {
- "Error Description", "fmp.description", FT_STRING, BASE_NONE,
- NULL, 0, "Client Error Description", HFILL }},
- { &hf_fmp_nfsv3Attr_type, {
- "Type", "fmp.nfsv3Attr_type", FT_UINT32, BASE_DEC,
- NULL, 0, "NFSV3 Attr Type", HFILL }},
- { &hf_fmp_nfsv3Attr_mode, {
- "Mode", "fmp.nfsv3Attr_mod", FT_UINT32, BASE_DEC,
- NULL, 0, NULL, HFILL }},
- { &hf_fmp_nfsv3Attr_nlink, {
- "nlink", "fmp.nfsv3Attr_nlink", FT_UINT32, BASE_DEC,
- NULL, 0, NULL, HFILL }},
- { &hf_fmp_nfsv3Attr_uid, {
- "uid", "fmp.nfsv3Attr_uid", FT_UINT32, BASE_DEC,
- NULL, 0, NULL, HFILL }},
- { &hf_fmp_nfsv3Attr_gid, {
- "gid", "fmp.nfsv3Attr_gid", FT_UINT32, BASE_DEC,
- NULL, 0, NULL, HFILL }},
- /* for nfsv3Attr_size use hf_fmp_fileSize */
- { &hf_fmp_nfsv3Attr_used, {
- "Used", "fmp.nfsv3Attr_used", FT_UINT64, BASE_DEC,
- NULL, 0, NULL, HFILL }},
- { &hf_fmp_nfsv3Attr_rdev, {
- "rdev", "fmp.nfsv3Attr_rdev", FT_UINT64, BASE_DEC,
- NULL, 0, NULL, HFILL }},
- { &hf_fmp_nfsv3Attr_fsid, {
- "fsid", "fmp.nfsv3Attr_fsid", FT_UINT64, BASE_DEC,
- NULL, 0, NULL, HFILL }},
- { &hf_fmp_nfsv3Attr_fileid, {
- "File ID", "fmp.nfsv3Attr_fileid", FT_UINT64, BASE_DEC,
- NULL, 0, "fileid", HFILL }},
- { &hf_fmp_cmd, {
- "Command", "fmp.cmd", FT_UINT32, BASE_DEC,
- NULL, 0, NULL, HFILL }},
- { &hf_fmp_topVolumeId, {
- "Top Volume ID", "fmp.topVolumeId", FT_UINT32, BASE_HEX,
- NULL, 0, NULL, HFILL }},
- { &hf_fmp_cursor, {
- "number of volumes", "fmp.cursor", FT_UINT32, BASE_DEC,
- NULL, 0, NULL, HFILL }},
- { &hf_fmp_offset64, {
- "offset", "fmp.offset64", FT_UINT64, BASE_DEC,
- NULL, 0, NULL, HFILL }},
- { &hf_fmp_slice_size, {
- "size of the slice", "fmp.slice_size", FT_UINT64, BASE_DEC,
- NULL, 0, NULL, HFILL }},
- { &hf_fmp_volume, {
- "Volume ID's", "fmp.volume", FT_UINT32, BASE_HEX,
- NULL, 0, "FMP Volume ID's", HFILL }},
- { &hf_fmp_stripeSize, {
- "size of the stripe", "fmp.stripeSize", FT_UINT64, BASE_DEC,
- NULL, 0, NULL, HFILL }},
- { &hf_fmp_firstLogBlk64, {
- "First Logical Block", "fmp.firstLogBlk64", FT_UINT64, BASE_DEC,
- NULL, 0, NULL, HFILL }},
-
- };
-
- static gint *ett[] = {
- &ett_fmp,
- &ett_fmp_timeval,
- &ett_fmp_extList,
- &ett_fmp_ext,
- &ett_fmp_fileHandle,
- &ett_capabilities,
- &ett_HierVolumeDescription,
- &ett_attrs
- };
-
- module_t *fmp_module;
- proto_fmp = proto_register_protocol("File Mapping Protocol", "FMP",
- "fmp");
-
- proto_register_field_array(proto_fmp, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
-
- fmp_module=prefs_register_protocol(proto_fmp, NULL);
-
- prefs_register_bool_preference(fmp_module, "fhandle_find_both_reqrep",
- "Fhandle filters finds both request/response",
- "With this option display filters for fmp fhandle a RPC call, even if the actual fhandle is only present in one of the packets",
- &fmp_fhandle_reqrep_matching);
+ static hf_register_info hf[] = {
+ { &hf_fmp_procedure,
+ { "Procedure", "fmp.procedure",
+ FT_UINT32, BASE_DEC, VALS(fmp_proc_vals),
+ 0, NULL, HFILL }}, /* New addition */
+
+ { &hf_fmp_hostID,
+ { "Host ID", "fmp.hostID",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_btime,
+ { "Boot Time", "fmp.btime",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0,
+ "Machine Boot Time", HFILL }},
+
+ { &hf_fmp_time_sec,
+ { "seconds", "fmp.btime.sec",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_time_nsec,
+ { "nanoseconds", "fmp.btime.nsec",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_notifyPort,
+ { "Notify Port", "fmp.notifyPort",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "FMP Notify Port", HFILL }},
+
+ { &hf_fmp_sessionHandle,
+ { "Session Handle", "fmp.sessHandle",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "FMP Session Handle", HFILL }},
+
+ { &hf_fmp_fmpFHandle,
+ { "FMP File Handle", "fmp.fmpFHandle",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL,
+
+ HFILL }},
+ { &hf_fmp_nfsFHandle,
+ { "NFS File Handle", "fmp.nfsFHandle",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_fsID,
+ { "File System ID", "fmp.fsID",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_status,
+ { "Status", "fmp.status",
+ FT_UINT32, BASE_DEC, VALS(fmp_status_vals), 0,
+ "Reply Status", HFILL }},
+
+ { &hf_fmp_fsBlkSz,
+ { "FS Block Size", "fmp.fsBlkSz",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "File System Block Size", HFILL }},
+
+ { &hf_fmp_volHandle,
+ { "Volume Handle", "fmp.volHandle",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "FMP Volume Handle", HFILL }},
+
+ { &hf_fmp_dskSigEnt_val,
+ { "Celerra Signature", "fmp.dsi.ds.dsList.dskSigLst_val.dse.dskSigEnt_val",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_devSignature,
+ { "Signature DATA", "fmp.devSig",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_mount_path,
+ { "Native Protocol: PATH", "fmp.mount_path",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Absolute path from the root on the server side", HFILL }},
+
+ { &hf_fmp_sig_offset,
+ { "Sig Offset", "fmp.dsi.ds.sig_offset",
+ FT_UINT64, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_numBlksReq,
+ { "Extent Length", "fmp.numBlksReq",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_minBlks,
+ { "Minimum Blocks to Grant", "fmp.minBlks",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_msgNum,
+ { "Message Number", "fmp.msgNum",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "FMP Message Number", HFILL }},
+
+ { &hf_fmp_cookie,
+ { "Cookie", "fmp.cookie",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ "Cookie for FMP_REQUEST_QUEUED Resp", HFILL }},
+
+ { &hf_fmp_fileSize,
+ { "File Size", "fmp.fileSize",
+ FT_UINT64, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_extentList_len,
+ { "Extent List Length", "fmp.extentList_len",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "FMP Extent List Length", HFILL }},
+
+ { &hf_fmp_extent_state,
+ { "Extent State", "fmp.extentState",
+ FT_UINT32,BASE_DEC, VALS(fmp_extentState_vals), 0,
+ "FMP Extent State", HFILL }},
+
+ { &hf_fmp_firstLogBlk,
+ { "firstLogBlk", "fmp.firstLogBlk",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "First Logical File Block", HFILL }},
+
+ { &hf_fmp_numBlks,
+ { "Number Blocks", "fmp.numBlks",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "Number of Blocks", HFILL }},
+
+ { &hf_fmp_volID,
+ { "Volume ID inside DART", "fmp.volID",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ "FMP Volume ID inside DART", HFILL }},
+
+ { &hf_fmp_startOffset,
+ { "Start Offset", "fmp.startOffset",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "FMP Start Offset", HFILL }},
+
+ { &hf_fmp_start_offset64,
+ { "Start offset", "fmp.start_offset64",
+ FT_UINT64, BASE_DEC, NULL, 0,
+ "Start Offset of extentEx", HFILL }},
+
+ { &hf_fmp_eof,
+ { "EOF", "fmp.eof",
+ FT_UINT64, BASE_DEC, NULL, 0,
+ "End Of File", HFILL }},
+
+ { &hf_fmp_plugInID,
+ { "Plug In Cmd ID", "fmp.plugInID",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "Plug In Command ID", HFILL }},
+
+ { &hf_fmp_plugInBuf,
+ { "Plug In Args", "fmp.plugIn",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "FMP Plug In Arguments", HFILL }},
+
+ { &hf_fmp_os_major,
+ { "OS Major", "fmp.os_major",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "FMP OS Major", HFILL }},
+
+ { &hf_fmp_os_minor,
+ { "OS Minor", "fmp.os_minor",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "FMP OS Minor", HFILL }},
+
+ { &hf_fmp_os_name,
+ { "OS Name", "fmp.os_name",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_path,
+ { "Mount Path", "fmp.Path",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_os_patch,
+ { "OS Path", "fmp.os_patch",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_os_build,
+ { "OS Build", "fmp.os_build",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_server_version_string,
+ { "Server Version String", "fmp.server_version_string",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_description,
+ { "Error Description", "fmp.description",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Client Error Description", HFILL }},
+
+ { &hf_fmp_nfsv3Attr_type,
+ { "Type", "fmp.nfsv3Attr_type",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "NFSV3 Attr Type", HFILL }},
+
+ { &hf_fmp_nfsv3Attr_mode,
+ { "Mode", "fmp.nfsv3Attr_mod",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_nfsv3Attr_nlink,
+ { "nlink", "fmp.nfsv3Attr_nlink",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_nfsv3Attr_uid,
+ { "uid", "fmp.nfsv3Attr_uid",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_nfsv3Attr_gid,
+ { "gid", "fmp.nfsv3Attr_gid",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ /* for nfsv3Attr_size use hf_fmp_fileSize */
+ { &hf_fmp_nfsv3Attr_used,
+ { "Used", "fmp.nfsv3Attr_used",
+ FT_UINT64, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_nfsv3Attr_rdev,
+ { "rdev", "fmp.nfsv3Attr_rdev",
+ FT_UINT64, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_nfsv3Attr_fsid,
+ { "fsid", "fmp.nfsv3Attr_fsid",
+ FT_UINT64, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_nfsv3Attr_fileid,
+ { "File ID", "fmp.nfsv3Attr_fileid",
+ FT_UINT64, BASE_DEC, NULL, 0,
+ "fileid", HFILL }},
+
+ { &hf_fmp_cmd,
+ { "Command", "fmp.cmd",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_topVolumeId,
+ { "Top Volume ID", "fmp.topVolumeId",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_cursor,
+ { "number of volumes", "fmp.cursor",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_offset64,
+ { "offset", "fmp.offset64",
+ FT_UINT64, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_slice_size,
+ { "size of the slice", "fmp.slice_size",
+ FT_UINT64, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_volume,
+ { "Volume ID's", "fmp.volume",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ "FMP Volume ID's", HFILL }},
+
+ { &hf_fmp_stripeSize,
+ { "size of the stripe", "fmp.stripeSize",
+ FT_UINT64, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_fmp_firstLogBlk64,
+ { "First Logical Block", "fmp.firstLogBlk64",
+ FT_UINT64, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ };
+
+ static gint *ett[] = {
+ &ett_fmp,
+ &ett_fmp_timeval,
+ &ett_fmp_extList,
+ &ett_fmp_ext,
+ &ett_fmp_fileHandle,
+ &ett_capabilities,
+ &ett_HierVolumeDescription,
+ &ett_attrs
+ };
+
+ module_t *fmp_module;
+ proto_fmp = proto_register_protocol("File Mapping Protocol", "FMP", "fmp");
+
+ proto_register_field_array(proto_fmp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ fmp_module=prefs_register_protocol(proto_fmp, NULL);
+
+ prefs_register_bool_preference(fmp_module, "fhandle_find_both_reqrep",
+ "Fhandle filters finds both request/response",
+ "With this option display filters for fmp fhandle a RPC call,"
+ " even if the actual fhandle is only present in one of the packets",
+ &fmp_fhandle_reqrep_matching);
}
void
proto_reg_handoff_fmp(void)
{
- /* Register the protocol as RPC */
- rpc_init_prog(proto_fmp, FMP_PROGRAM, ett_fmp);
+ /* Register the protocol as RPC */
+ rpc_init_prog(proto_fmp, FMP_PROGRAM, ett_fmp);
- /* Register the procedure tables */
- rpc_init_proc_table(FMP_PROGRAM, FMP_VERSION_3, fmp3_proc, hf_fmp_procedure);
+ /* Register the procedure tables */
+ rpc_init_proc_table(FMP_PROGRAM, FMP_VERSION_3, fmp3_proc, hf_fmp_procedure);
}
diff --git a/epan/dissectors/packet-fmp_notify.c b/epan/dissectors/packet-fmp_notify.c
index 64a0ef05a1..f8d6bb1f59 100644
--- a/epan/dissectors/packet-fmp_notify.c
+++ b/epan/dissectors/packet-fmp_notify.c
@@ -27,10 +27,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/strutil.h>
diff --git a/epan/dissectors/packet-fp_hint.c b/epan/dissectors/packet-fp_hint.c
index 8d55fb8d6d..b03d865de0 100644
--- a/epan/dissectors/packet-fp_hint.c
+++ b/epan/dissectors/packet-fp_hint.c
@@ -29,6 +29,7 @@
#include <glib.h>
#include <epan/packet.h>
+#include <epan/conversation.h>
#include "packet-umts_fp.h"
#include "packet-umts_mac.h"
#include "packet-rlc.h"
diff --git a/epan/dissectors/packet-fr.c b/epan/dissectors/packet-fr.c
index 7b23e26c8d..e2fc035a9b 100644
--- a/epan/dissectors/packet-fr.c
+++ b/epan/dissectors/packet-fr.c
@@ -1,7 +1,7 @@
/* packet-fr.c
* Routines for Frame Relay dissection
*
- * Copyright 2001, Paul Ionescu <paul@acorp.ro>
+ * Copyright 2001, Paul Ionescu <paul@acorp.ro>
*
* $Id$
*
@@ -38,9 +38,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-
#include <glib.h>
#include <epan/packet.h>
#include <epan/prefs.h>
@@ -60,57 +57,57 @@
/*
* Bits in the address field.
*/
-#define FRELAY_EA 0x01 /* Address field extension bit */
-
-#define FRELAY_UPPER_DLCI 0xFC /* Upper DLCI */
-#define FRELAY_CR 0x02 /* Command/response bit in first octet */
-
-#define FRELAY_SECOND_DLCI 0xF0 /* DLCI bits in FECN/BECN/DE octet */
-#define FRELAY_FECN 0x08 /* Forward Explicit Congestion Notification */
-#define FRELAY_BECN 0x04 /* Backward Explicit Congestion Notification */
-#define FRELAY_DE 0x02 /* Discard Eligibility */
-
-#define FRELAY_THIRD_DLCI 0xFE /* DLCI bits in third octet, if any */
-
-#define FRELAY_LOWER_DLCI 0xFC /* Lower DLCI */
-#define FRELAY_DC 0x02 /* DLCI or DL-CORE control indicator in last octet */
-
-#define FROM_DCE 0x80 /* for direction setting */
-
-static gint proto_fr = -1;
-static gint ett_fr = -1;
-static gint ett_fr_address = -1;
-static gint ett_fr_control = -1;
-static gint hf_fr_ea = -1;
-static gint hf_fr_upper_dlci = -1;
-static gint hf_fr_cr = -1;
-static gint hf_fr_second_dlci = -1;
-static gint hf_fr_fecn = -1;
-static gint hf_fr_becn = -1;
-static gint hf_fr_de = -1;
-static gint hf_fr_third_dlci = -1;
-static gint hf_fr_dlcore_control = -1;
-static gint hf_fr_lower_dlci = -1;
-static gint hf_fr_dc = -1;
-static gint hf_fr_dlci = -1;
-static gint hf_fr_control = -1;
-static gint hf_fr_n_r = -1;
-static gint hf_fr_n_s = -1;
-static gint hf_fr_p = -1;
-static gint hf_fr_p_ext = -1;
-static gint hf_fr_f = -1;
-static gint hf_fr_f_ext = -1;
-static gint hf_fr_s_ftype = -1;
-static gint hf_fr_u_modifier_cmd = -1;
+#define FRELAY_EA 0x01 /* Address field extension bit */
+
+#define FRELAY_UPPER_DLCI 0xFC /* Upper DLCI */
+#define FRELAY_CR 0x02 /* Command/response bit in first octet */
+
+#define FRELAY_SECOND_DLCI 0xF0 /* DLCI bits in FECN/BECN/DE octet */
+#define FRELAY_FECN 0x08 /* Forward Explicit Congestion Notification */
+#define FRELAY_BECN 0x04 /* Backward Explicit Congestion Notification */
+#define FRELAY_DE 0x02 /* Discard Eligibility */
+
+#define FRELAY_THIRD_DLCI 0xFE /* DLCI bits in third octet, if any */
+
+#define FRELAY_LOWER_DLCI 0xFC /* Lower DLCI */
+#define FRELAY_DC 0x02 /* DLCI or DL-CORE control indicator in last octet */
+
+#define FROM_DCE 0x80 /* for direction setting */
+
+static gint proto_fr = -1;
+static gint ett_fr = -1;
+static gint ett_fr_address = -1;
+static gint ett_fr_control = -1;
+static gint hf_fr_ea = -1;
+static gint hf_fr_upper_dlci = -1;
+static gint hf_fr_cr = -1;
+static gint hf_fr_second_dlci = -1;
+static gint hf_fr_fecn = -1;
+static gint hf_fr_becn = -1;
+static gint hf_fr_de = -1;
+static gint hf_fr_third_dlci = -1;
+static gint hf_fr_dlcore_control = -1;
+static gint hf_fr_lower_dlci = -1;
+static gint hf_fr_dc = -1;
+static gint hf_fr_dlci = -1;
+static gint hf_fr_control = -1;
+static gint hf_fr_n_r = -1;
+static gint hf_fr_n_s = -1;
+static gint hf_fr_p = -1;
+static gint hf_fr_p_ext = -1;
+static gint hf_fr_f = -1;
+static gint hf_fr_f_ext = -1;
+static gint hf_fr_s_ftype = -1;
+static gint hf_fr_u_modifier_cmd = -1;
static gint hf_fr_u_modifier_resp = -1;
-static gint hf_fr_ftype_i = -1;
-static gint hf_fr_ftype_s_u = -1;
-static gint hf_fr_ftype_s_u_ext = -1;
-static gint hf_fr_nlpid = -1;
-static gint hf_fr_oui = -1;
-static gint hf_fr_pid = -1;
-static gint hf_fr_snaptype = -1;
-static gint hf_fr_chdlctype = -1;
+static gint hf_fr_ftype_i = -1;
+static gint hf_fr_ftype_s_u = -1;
+static gint hf_fr_ftype_s_u_ext = -1;
+static gint hf_fr_nlpid = -1;
+static gint hf_fr_oui = -1;
+static gint hf_fr_pid = -1;
+static gint hf_fr_snaptype = -1;
+static gint hf_fr_chdlctype = -1;
static dissector_handle_t eth_withfcs_handle;
static dissector_handle_t gprs_ns_handle;
@@ -122,20 +119,20 @@ static dissector_table_t osinl_subdissector_table;
* Encapsulation type.
* XXX - this should be per-DLCI as well.
*/
-#define FRF_3_2 0 /* FRF 3.2 or Cisco HDLC */
-#define GPRS_NS 1 /* GPRS Network Services (3GPP TS 08.16) */
-#define RAW_ETHER 2 /* Raw Ethernet */
+#define FRF_3_2 0 /* FRF 3.2 or Cisco HDLC */
+#define GPRS_NS 1 /* GPRS Network Services (3GPP TS 08.16) */
+#define RAW_ETHER 2 /* Raw Ethernet */
static gint fr_encap = FRF_3_2;
static const true_false_string ctrl_string = {
- "DLCI Address",
- "Control"
- };
+ "DLCI Address",
+ "Control"
+};
static const true_false_string ea_string = {
- "Last Octet",
- "More Follows"
- };
+ "Last Octet",
+ "More Follows"
+};
/*
* This isn't the same as "nlpid_vals[]"; 0x08 is Q.933, not Q.931,
@@ -143,60 +140,60 @@ static const true_false_string ea_string = {
* protocol identifier, so 0x01 is T.70, not X.29.
*/
static const value_string fr_nlpid_vals[] = {
- { NLPID_NULL, "NULL" },
- { NLPID_IPI_T_70, "T.70" }, /* XXX - IPI, or SPI? */
- { NLPID_X_633, "X.633" },
- { NLPID_Q_931, "Q.933" },
- { NLPID_LMI, "LMI" },
- { NLPID_Q_2119, "Q.2119" },
- { NLPID_SNAP, "SNAP" },
- { NLPID_ISO8473_CLNP, "CLNP" },
- { NLPID_ISO9542_ESIS, "ESIS" },
- { NLPID_ISO10589_ISIS, "ISIS" },
- { NLPID_ISO10747_IDRP, "IDRP" },
- { NLPID_ISO9542X25_ESIS, "ESIS (X.25)" },
- { NLPID_ISO10030, "ISO 10030" },
- { NLPID_ISO11577, "ISO 11577" },
- { NLPID_COMPRESSED, "Data compression protocol" },
- { NLPID_IP, "IP" },
- { NLPID_IP6, "IPv6" },
- { NLPID_PPP, "PPP" },
- { 0, NULL },
+ { NLPID_NULL, "NULL" },
+ { NLPID_IPI_T_70, "T.70" }, /* XXX - IPI, or SPI? */
+ { NLPID_X_633, "X.633" },
+ { NLPID_Q_931, "Q.933" },
+ { NLPID_LMI, "LMI" },
+ { NLPID_Q_2119, "Q.2119" },
+ { NLPID_SNAP, "SNAP" },
+ { NLPID_ISO8473_CLNP, "CLNP" },
+ { NLPID_ISO9542_ESIS, "ESIS" },
+ { NLPID_ISO10589_ISIS, "ISIS" },
+ { NLPID_ISO10747_IDRP, "IDRP" },
+ { NLPID_ISO9542X25_ESIS, "ESIS (X.25)" },
+ { NLPID_ISO10030, "ISO 10030" },
+ { NLPID_ISO11577, "ISO 11577" },
+ { NLPID_COMPRESSED, "Data compression protocol" },
+ { NLPID_IP, "IP" },
+ { NLPID_IP6, "IPv6" },
+ { NLPID_PPP, "PPP" },
+ { 0, NULL },
};
static dissector_table_t fr_subdissector_table;
static dissector_table_t fr_osinl_subdissector_table;
static void dissect_fr_nlpid(tvbuff_t *tvb, int offset, packet_info *pinfo,
- proto_tree *tree, proto_item *ti,
- proto_tree *fr_tree, guint8 fr_ctrl);
+ proto_tree *tree, proto_item *ti,
+ proto_tree *fr_tree, guint8 fr_ctrl);
static void dissect_lapf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static void dissect_fr_xid(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
/* Used only for U frames */
static const xdlc_cf_items fr_cf_items = {
- NULL,
- NULL,
- &hf_fr_p,
- &hf_fr_f,
- NULL,
- &hf_fr_u_modifier_cmd,
- &hf_fr_u_modifier_resp,
- NULL,
- &hf_fr_ftype_s_u
+ NULL,
+ NULL,
+ &hf_fr_p,
+ &hf_fr_f,
+ NULL,
+ &hf_fr_u_modifier_cmd,
+ &hf_fr_u_modifier_resp,
+ NULL,
+ &hf_fr_ftype_s_u
};
/* Used only for I and S frames */
static const xdlc_cf_items fr_cf_items_ext = {
- &hf_fr_n_r,
- &hf_fr_n_s,
- &hf_fr_p_ext,
- &hf_fr_f_ext,
- &hf_fr_s_ftype,
- NULL,
- NULL,
- &hf_fr_ftype_i,
- &hf_fr_ftype_s_u_ext
+ &hf_fr_n_r,
+ &hf_fr_n_s,
+ &hf_fr_p_ext,
+ &hf_fr_f_ext,
+ &hf_fr_s_ftype,
+ NULL,
+ NULL,
+ &hf_fr_ftype_i,
+ &hf_fr_ftype_s_u_ext
};
void
@@ -268,15 +265,15 @@ capture_fr(const guchar *pd, int offset, int len, packet_counts *ld)
}
fr_octet = pd[offset];
while (!(fr_octet & FRELAY_EA)) {
- /*
- * Bogus! More than 4 octets of address.
- */
+ /*
+ * Bogus! More than 4 octets of address.
+ */
offset++;
if (!BYTES_ARE_IN_FRAME(offset, len, 1)) {
ld->other++;
return;
}
- fr_octet = pd[offset];
+ fr_octet = pd[offset];
}
}
@@ -319,12 +316,12 @@ capture_fr(const guchar *pd, int offset, int len, packet_counts *ld)
}
fr_nlpid = pd[offset];
if (fr_nlpid == 0) {
- offset++;
+ offset++;
if (!BYTES_ARE_IN_FRAME(offset, len, 1)) {
ld->other++;
return;
}
- fr_nlpid = pd[offset];
+ fr_nlpid = pd[offset];
}
offset++;
switch (fr_nlpid) {
@@ -351,25 +348,25 @@ capture_fr(const guchar *pd, int offset, int len, packet_counts *ld)
}
} else {
if (addr == 0) {
- /*
- * This must be some sort of LAPF on DLCI 0 for SVC
- * because DLCI 0 is reserved for LMI and SVC signaling
- * encapsulated in LAPF, and LMI is transmitted in
- * unnumbered information (03), so this must be LAPF
- * (guessing).
- *
- * XXX - but what is it? Is Q.933 carried inside UI
- * frames or other types of frames or both?
- */
- ld->other++;
- return;
+ /*
+ * This must be some sort of LAPF on DLCI 0 for SVC
+ * because DLCI 0 is reserved for LMI and SVC signaling
+ * encapsulated in LAPF, and LMI is transmitted in
+ * unnumbered information (03), so this must be LAPF
+ * (guessing).
+ *
+ * XXX - but what is it? Is Q.933 carried inside UI
+ * frames or other types of frames or both?
+ */
+ ld->other++;
+ return;
}
if (fr_ctrl == (XDLC_U|XDLC_XID)) {
- /*
- * XID.
- */
- ld->other++;
- return;
+ /*
+ * XID.
+ */
+ ld->other++;
+ return;
}
/*
@@ -395,19 +392,19 @@ capture_fr(const guchar *pd, int offset, int len, packet_counts *ld)
static void
dissect_fr_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- gboolean has_direction, gboolean decode_address )
+ gboolean has_direction, gboolean decode_address )
{
- int offset = 0;
- proto_item *ti = NULL;
- proto_tree *fr_tree = NULL;
- proto_item *octet_item = NULL;
- proto_tree *octet_tree = NULL;
- guint8 fr_octet;
- int is_response = FALSE;
- guint32 addr = 0;
- guint8 fr_ctrl;
- guint16 fr_type;
- tvbuff_t *next_tvb;
+ int offset = 0;
+ proto_item *ti = NULL;
+ proto_tree *fr_tree = NULL;
+ proto_item *octet_item = NULL;
+ proto_tree *octet_tree = NULL;
+ guint8 fr_octet;
+ int is_response = FALSE;
+ guint32 addr = 0;
+ guint8 fr_ctrl;
+ guint16 fr_type;
+ tvbuff_t *next_tvb;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "FR");
col_clear(pinfo->cinfo, COL_INFO);
@@ -443,7 +440,7 @@ dissect_fr_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
addr = 0;
if (tree) {
proto_tree_add_text(fr_tree, tvb, offset, 1,
- "Bogus 1-octet address field");
+ "Bogus 1-octet address field");
offset++;
}
} else {
@@ -455,7 +452,7 @@ dissect_fr_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
is_response = (fr_octet & FRELAY_CR);
if (tree) {
octet_item = proto_tree_add_text(fr_tree, tvb, offset, 1,
- "First address octet: 0x%02x", fr_octet);
+ "First address octet: 0x%02x", fr_octet);
octet_tree = proto_item_add_subtree(octet_item, ett_fr_address);
proto_tree_add_uint(octet_tree, hf_fr_upper_dlci, tvb, offset, 1, fr_octet);
proto_tree_add_boolean(octet_tree, hf_fr_cr, tvb, offset, 1, fr_octet);
@@ -471,8 +468,8 @@ dissect_fr_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
addr = (addr << 4) | ((fr_octet & FRELAY_SECOND_DLCI) >> 4);
if (tree) {
octet_item = proto_tree_add_text(fr_tree, tvb, offset, 1,
- "Second address octet: 0x%02x",
- fr_octet);
+ "Second address octet: 0x%02x",
+ fr_octet);
octet_tree = proto_item_add_subtree(octet_item, ett_fr_address);
proto_tree_add_uint(octet_tree, hf_fr_second_dlci, tvb, offset, 1, fr_octet);
proto_tree_add_boolean(octet_tree, hf_fr_fecn, tvb, 0, offset, fr_octet);
@@ -492,37 +489,37 @@ dissect_fr_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
*/
fr_octet = tvb_get_guint8(tvb, offset);
if (!(fr_octet & FRELAY_EA)) {
- /*
- * 7 more bits of DLCI.
- */
- addr = (addr << 7) | ((fr_octet & FRELAY_THIRD_DLCI) >> 1);
- if (tree) {
- octet_item = proto_tree_add_text(fr_tree, tvb, offset, 1,
- "Third address octet: 0x%02x",
- fr_octet);
- octet_tree = proto_item_add_subtree(octet_item, ett_fr_address);
- proto_tree_add_uint(octet_tree, hf_fr_third_dlci, tvb, offset, 1, fr_octet);
- proto_tree_add_boolean(octet_tree, hf_fr_ea, tvb, offset, 1, fr_octet);
- }
- offset++;
- fr_octet = tvb_get_guint8(tvb, offset);
- while (!(fr_octet & FRELAY_EA)) {
- /*
- * Bogus! More than 4 octets of address.
- */
- if (tree) {
- proto_tree_add_text(fr_tree, tvb, offset, 1,
- "Bogus extra address octet");
- }
- offset++;
- fr_octet = tvb_get_guint8(tvb, offset);
- }
+ /*
+ * 7 more bits of DLCI.
+ */
+ addr = (addr << 7) | ((fr_octet & FRELAY_THIRD_DLCI) >> 1);
+ if (tree) {
+ octet_item = proto_tree_add_text(fr_tree, tvb, offset, 1,
+ "Third address octet: 0x%02x",
+ fr_octet);
+ octet_tree = proto_item_add_subtree(octet_item, ett_fr_address);
+ proto_tree_add_uint(octet_tree, hf_fr_third_dlci, tvb, offset, 1, fr_octet);
+ proto_tree_add_boolean(octet_tree, hf_fr_ea, tvb, offset, 1, fr_octet);
+ }
+ offset++;
+ fr_octet = tvb_get_guint8(tvb, offset);
+ while (!(fr_octet & FRELAY_EA)) {
+ /*
+ * Bogus! More than 4 octets of address.
+ */
+ if (tree) {
+ proto_tree_add_text(fr_tree, tvb, offset, 1,
+ "Bogus extra address octet");
+ }
+ offset++;
+ fr_octet = tvb_get_guint8(tvb, offset);
+ }
}
if (tree) {
- octet_item = proto_tree_add_text(fr_tree, tvb, offset, 1,
- "Final address octet: 0x%02x",
- fr_octet);
- octet_tree = proto_item_add_subtree(octet_item, ett_fr_address);
+ octet_item = proto_tree_add_text(fr_tree, tvb, offset, 1,
+ "Final address octet: 0x%02x",
+ fr_octet);
+ octet_tree = proto_item_add_subtree(octet_item, ett_fr_address);
}
/*
@@ -530,16 +527,16 @@ dissect_fr_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
* DL-CORE control indicator flag.
*/
if (fr_octet & FRELAY_DC) {
- /*
- * DL-CORE.
- */
- proto_tree_add_uint(octet_tree, hf_fr_dlcore_control, tvb, offset, 1, fr_octet);
+ /*
+ * DL-CORE.
+ */
+ proto_tree_add_uint(octet_tree, hf_fr_dlcore_control, tvb, offset, 1, fr_octet);
} else {
- /*
- * Last 6 bits of DLCI.
- */
- addr = (addr << 6) | ((fr_octet & FRELAY_LOWER_DLCI) >> 2);
- proto_tree_add_uint(octet_tree, hf_fr_lower_dlci, tvb, offset, 1, fr_octet);
+ /*
+ * Last 6 bits of DLCI.
+ */
+ addr = (addr << 6) | ((fr_octet & FRELAY_LOWER_DLCI) >> 2);
+ proto_tree_add_uint(octet_tree, hf_fr_lower_dlci, tvb, offset, 1, fr_octet);
}
proto_tree_add_boolean(octet_tree, hf_fr_dc, tvb, offset, 1, fr_octet);
proto_tree_add_boolean(octet_tree, hf_fr_ea, tvb, offset, 1, fr_octet);
@@ -566,8 +563,8 @@ dissect_fr_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
fr_ctrl = tvb_get_guint8(tvb, offset);
if (fr_ctrl == XDLC_U) {
dissect_xdlc_control(tvb, offset, pinfo, fr_tree, hf_fr_control,
- ett_fr_control, &fr_cf_items, &fr_cf_items_ext,
- NULL, NULL, is_response, TRUE, TRUE);
+ ett_fr_control, &fr_cf_items, &fr_cf_items_ext,
+ NULL, NULL, is_response, TRUE, TRUE);
offset++;
/*
@@ -579,30 +576,30 @@ dissect_fr_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
dissect_fr_nlpid(tvb, offset, pinfo, tree, ti, fr_tree, fr_ctrl);
} else {
if (addr == 0) {
- /*
- * This must be some sort of LAPF on DLCI 0 for SVC
- * because DLCI 0 is reserved for LMI and SVC signaling
- * encapsulated in LAPF, and LMI is transmitted in
- * unnumbered information (03), so this must be LAPF
- * (guessing).
- *
- * XXX - but what is it? Is Q.933 carried inside UI
- * frames or other types of frames or both?
- */
- dissect_xdlc_control(tvb, offset, pinfo, fr_tree,
- hf_fr_control, ett_fr_control,
- &fr_cf_items, &fr_cf_items_ext,
- NULL, NULL, is_response, TRUE, TRUE);
- dissect_lapf(tvb_new_subset_remaining(tvb,offset),pinfo,tree);
- return;
+ /*
+ * This must be some sort of LAPF on DLCI 0 for SVC
+ * because DLCI 0 is reserved for LMI and SVC signaling
+ * encapsulated in LAPF, and LMI is transmitted in
+ * unnumbered information (03), so this must be LAPF
+ * (guessing).
+ *
+ * XXX - but what is it? Is Q.933 carried inside UI
+ * frames or other types of frames or both?
+ */
+ dissect_xdlc_control(tvb, offset, pinfo, fr_tree,
+ hf_fr_control, ett_fr_control,
+ &fr_cf_items, &fr_cf_items_ext,
+ NULL, NULL, is_response, TRUE, TRUE);
+ dissect_lapf(tvb_new_subset_remaining(tvb,offset),pinfo,tree);
+ return;
}
if (fr_ctrl == (XDLC_U|XDLC_XID)) {
- dissect_xdlc_control(tvb, offset, pinfo, fr_tree,
- hf_fr_control, ett_fr_control,
- &fr_cf_items, &fr_cf_items_ext,
- NULL, NULL, is_response, TRUE, TRUE);
- dissect_fr_xid(tvb_new_subset_remaining(tvb,offset),pinfo,tree);
- return;
+ dissect_xdlc_control(tvb, offset, pinfo, fr_tree,
+ hf_fr_control, ett_fr_control,
+ &fr_cf_items, &fr_cf_items_ext,
+ NULL, NULL, is_response, TRUE, TRUE);
+ dissect_fr_xid(tvb_new_subset_remaining(tvb,offset),pinfo,tree);
+ return;
}
/*
@@ -611,9 +608,9 @@ dissect_fr_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
*/
fr_type = tvb_get_ntohs(tvb, offset);
if (ti != NULL) {
- /* Include the Cisco HDLC type in the top-level protocol
- tree item. */
- proto_item_set_end(ti, tvb, offset+2);
+ /* Include the Cisco HDLC type in the top-level protocol
+ tree item. */
+ proto_item_set_end(ti, tvb, offset+2);
}
chdlctype(fr_type, tvb, offset+2, pinfo, tree, fr_tree, hf_fr_chdlctype);
}
@@ -655,8 +652,9 @@ dissect_fr_stripped_address(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
dissect_fr_common(tvb, pinfo, tree, TRUE, FALSE );
}
-static void dissect_fr_uncompressed(tvbuff_t *tvb, packet_info *pinfo,
- proto_tree *tree)
+static void
+dissect_fr_uncompressed(tvbuff_t *tvb, packet_info *pinfo,
+ proto_tree *tree)
{
proto_item *ti = NULL;
proto_tree *fr_tree = NULL;
@@ -671,11 +669,12 @@ static void dissect_fr_uncompressed(tvbuff_t *tvb, packet_info *pinfo,
dissect_fr_nlpid(tvb, 0, pinfo, tree, ti, fr_tree, XDLC_U);
}
-static void dissect_fr_nlpid(tvbuff_t *tvb, int offset, packet_info *pinfo,
- proto_tree *tree, proto_item *ti,
- proto_tree *fr_tree, guint8 fr_ctrl)
+static void
+dissect_fr_nlpid(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree, proto_item *ti,
+ proto_tree *fr_tree, guint8 fr_ctrl)
{
- guint8 fr_nlpid;
+ guint8 fr_nlpid;
tvbuff_t *next_tvb;
/*
@@ -686,14 +685,14 @@ static void dissect_fr_nlpid(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_item_set_end(ti, tvb, offset);
fr_nlpid = tvb_get_guint8 (tvb,offset);
if (fr_nlpid == 0) {
- if (tree)
- proto_tree_add_text(fr_tree, tvb, offset, 1, "Padding");
- offset++;
- if (ti != NULL) {
- /* Include the padding in the top-level protocol tree item. */
- proto_item_set_end(ti, tvb, offset);
- }
- fr_nlpid=tvb_get_guint8( tvb,offset);
+ if (tree)
+ proto_tree_add_text(fr_tree, tvb, offset, 1, "Padding");
+ offset++;
+ if (ti != NULL) {
+ /* Include the padding in the top-level protocol tree item. */
+ proto_item_set_end(ti, tvb, offset);
+ }
+ fr_nlpid=tvb_get_guint8( tvb,offset);
}
/*
@@ -733,20 +732,20 @@ static void dissect_fr_nlpid(tvbuff_t *tvb, int offset, packet_info *pinfo,
*/
next_tvb = tvb_new_subset_remaining(tvb,offset);
if (dissector_try_uint(osinl_subdissector_table, fr_nlpid, next_tvb,
- pinfo, tree) ||
+ pinfo, tree) ||
dissector_try_uint(fr_osinl_subdissector_table, fr_nlpid, next_tvb,
- pinfo, tree)) {
- /*
- * Yes, we got a match. Add the NLPID as a hidden item,
- * so you can, at least, filter on it.
- */
- if (tree) {
- proto_item *hidden_item;
- hidden_item = proto_tree_add_uint(fr_tree, hf_fr_nlpid,
- tvb, offset, 1, fr_nlpid );
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- }
- return;
+ pinfo, tree)) {
+ /*
+ * Yes, we got a match. Add the NLPID as a hidden item,
+ * so you can, at least, filter on it.
+ */
+ if (tree) {
+ proto_item *hidden_item;
+ hidden_item = proto_tree_add_uint(fr_tree, hf_fr_nlpid,
+ tvb, offset, 1, fr_nlpid );
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ }
+ return;
}
/*
@@ -756,139 +755,203 @@ static void dissect_fr_nlpid(tvbuff_t *tvb, int offset, packet_info *pinfo,
* to be part of the LMI PDU?
*/
if (tree)
- proto_tree_add_uint(fr_tree, hf_fr_nlpid, tvb, offset, 1, fr_nlpid );
+ proto_tree_add_uint(fr_tree, hf_fr_nlpid, tvb, offset, 1, fr_nlpid );
offset++;
switch (fr_nlpid) {
case NLPID_SNAP:
- if (ti != NULL) {
- /* Include the NLPID and SNAP header in the top-level
- protocol tree item. */
- proto_item_set_end(ti, tvb, offset+5);
- }
- dissect_snap(tvb, offset, pinfo, tree, fr_tree, fr_ctrl,
- hf_fr_oui, hf_fr_snaptype, hf_fr_pid, 0);
- return;
+ if (ti != NULL) {
+ /* Include the NLPID and SNAP header in the top-level
+ protocol tree item. */
+ proto_item_set_end(ti, tvb, offset+5);
+ }
+ dissect_snap(tvb, offset, pinfo, tree, fr_tree, fr_ctrl,
+ hf_fr_oui, hf_fr_snaptype, hf_fr_pid, 0);
+ return;
default:
- if (ti != NULL) {
- /* Include the NLPID in the top-level protocol tree item. */
- proto_item_set_end(ti, tvb, offset);
- }
- next_tvb = tvb_new_subset_remaining(tvb,offset);
- if (!dissector_try_uint(fr_subdissector_table,fr_nlpid,
- next_tvb, pinfo, tree))
- call_dissector(data_handle,next_tvb, pinfo, tree);
- break;
+ if (ti != NULL) {
+ /* Include the NLPID in the top-level protocol tree item. */
+ proto_item_set_end(ti, tvb, offset);
+ }
+ next_tvb = tvb_new_subset_remaining(tvb,offset);
+ if (!dissector_try_uint(fr_subdissector_table,fr_nlpid,
+ next_tvb, pinfo, tree))
+ call_dissector(data_handle,next_tvb, pinfo, tree);
+ break;
}
}
-static void dissect_lapf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static void
+dissect_lapf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree_add_text(tree, tvb, 0, 0, "Frame relay lapf not yet implemented");
- call_dissector(data_handle,tvb_new_subset_remaining(tvb,0),pinfo,tree);
+ proto_tree_add_text(tree, tvb, 0, 0, "Frame relay lapf not yet implemented");
+ call_dissector(data_handle,tvb_new_subset_remaining(tvb,0),pinfo,tree);
}
-static void dissect_fr_xid(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+
+static void
+dissect_fr_xid(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree_add_text(tree, tvb, 0, 0, "Frame relay xid not yet implemented");
- call_dissector(data_handle,tvb_new_subset_remaining(tvb,0),pinfo,tree);
+ proto_tree_add_text(tree, tvb, 0, 0, "Frame relay xid not yet implemented");
+ call_dissector(data_handle,tvb_new_subset_remaining(tvb,0),pinfo,tree);
}
/* Register the protocol with Wireshark */
-void proto_register_fr(void)
+void
+proto_register_fr(void)
{
static hf_register_info hf[] = {
- { &hf_fr_ea, {
- "EA", "fr.ea", FT_BOOLEAN, 8, TFS(&ea_string),
- FRELAY_EA, "Extended Address", HFILL }},
- { &hf_fr_upper_dlci, {
- "Upper DLCI", "fr.upper_dlci", FT_UINT8, BASE_HEX,
- NULL, FRELAY_UPPER_DLCI, "Upper bits of DLCI", HFILL }},
- { &hf_fr_cr, {
- "CR", "fr.cr", FT_BOOLEAN, 8, TFS(&tfs_command_response),
- FRELAY_CR, "Command/Response", HFILL }},
- { &hf_fr_second_dlci, {
- "Second DLCI", "fr.second_dlci", FT_UINT8, BASE_HEX,
- NULL, FRELAY_SECOND_DLCI, "Bits below upper bits of DLCI", HFILL }},
- { &hf_fr_fecn, {
- "FECN", "fr.fecn", FT_BOOLEAN, 8,
- NULL, FRELAY_FECN, "Forward Explicit Congestion Notification", HFILL }},
- { &hf_fr_becn, {
- "BECN", "fr.becn", FT_BOOLEAN, 8,
- NULL, FRELAY_BECN, "Backward Explicit Congestion Notification", HFILL }},
- { &hf_fr_de, {
- "DE", "fr.de", FT_BOOLEAN, 8,
- NULL, FRELAY_DE, "Discard Eligibility", HFILL }},
- { &hf_fr_third_dlci, {
- "Third DLCI", "fr.third_dlci", FT_UINT8, BASE_HEX,
- NULL, FRELAY_THIRD_DLCI, "Additional bits of DLCI", HFILL }},
- { &hf_fr_dlcore_control, {
- "DL-CORE Control", "fr.dlcore_control", FT_UINT8, BASE_HEX,
- NULL, FRELAY_LOWER_DLCI, "DL-Core control bits", HFILL }},
- { &hf_fr_lower_dlci, {
- "Lower DLCI", "fr.lower_dlci", FT_UINT8, BASE_HEX,
- NULL, FRELAY_LOWER_DLCI, "Lower bits of DLCI", HFILL }},
- { &hf_fr_dc, {
- "DC", "fr.dc", FT_BOOLEAN, 16, TFS(&ctrl_string),
- FRELAY_CR, "Address/Control", HFILL }},
- { &hf_fr_dlci, {
- "DLCI", "fr.dlci", FT_UINT32, BASE_DEC,
- NULL, 0x0, "Data-Link Connection Identifier", HFILL }},
- { &hf_fr_control, {
- "Control Field", "fr.control", FT_UINT8, BASE_HEX,
- NULL, 0x0, NULL, HFILL }},
- { &hf_fr_n_r, {
- "N(R)", "fr.control.n_r", FT_UINT16, BASE_DEC,
- NULL, XDLC_N_R_EXT_MASK, NULL, HFILL }},
- { &hf_fr_n_s, {
- "N(S)", "fr.control.n_s", FT_UINT16, BASE_DEC,
- NULL, XDLC_N_S_EXT_MASK, NULL, HFILL }},
- { &hf_fr_p, {
- "Poll", "fr.control.p", FT_BOOLEAN, 8,
- TFS(&tfs_set_notset), XDLC_P_F, NULL, HFILL }},
- { &hf_fr_p_ext, {
- "Poll", "fr.control.p", FT_BOOLEAN, 16,
- TFS(&tfs_set_notset), XDLC_P_F_EXT, NULL, HFILL }},
- { &hf_fr_f, {
- "Final", "fr.control.f", FT_BOOLEAN, 8,
- TFS(&tfs_set_notset), XDLC_P_F, NULL, HFILL }},
- { &hf_fr_f_ext, {
- "Final", "fr.control.f", FT_BOOLEAN, 16,
- TFS(&tfs_set_notset), XDLC_P_F_EXT, NULL, HFILL }},
- { &hf_fr_s_ftype, {
- "Supervisory frame type", "fr.control.s_ftype", FT_UINT16, BASE_HEX,
- VALS(stype_vals), XDLC_S_FTYPE_MASK, NULL, HFILL }},
- { &hf_fr_u_modifier_cmd, {
- "Command", "fr.control.u_modifier_cmd", FT_UINT8, BASE_HEX,
- VALS(modifier_vals_cmd), XDLC_U_MODIFIER_MASK, NULL, HFILL }},
- { &hf_fr_u_modifier_resp, {
- "Response", "fr.control.u_modifier_resp", FT_UINT8, BASE_HEX,
- VALS(modifier_vals_resp), XDLC_U_MODIFIER_MASK, NULL, HFILL }},
- { &hf_fr_ftype_i, {
- "Frame type", "fr.control.ftype", FT_UINT16, BASE_HEX,
- VALS(ftype_vals), XDLC_I_MASK, NULL, HFILL }},
- { &hf_fr_ftype_s_u, {
- "Frame type", "fr.control.ftype", FT_UINT8, BASE_HEX,
- VALS(ftype_vals), XDLC_S_U_MASK, NULL, HFILL }},
- { &hf_fr_ftype_s_u_ext, {
- "Frame type", "fr.control.ftype", FT_UINT16, BASE_HEX,
- VALS(ftype_vals), XDLC_S_U_MASK, NULL, HFILL }},
- { &hf_fr_nlpid, {
- "NLPID", "fr.nlpid", FT_UINT8, BASE_HEX,
- VALS(fr_nlpid_vals), 0x0, "Frame Relay Encapsulated Protocol NLPID", HFILL }},
- { &hf_fr_oui, {
- "Organization Code", "fr.snap.oui", FT_UINT24, BASE_HEX,
- VALS(oui_vals), 0x0, NULL, HFILL }},
- { &hf_fr_pid, {
- "Protocol ID", "fr.snap.pid", FT_UINT16, BASE_HEX,
- NULL, 0x0, NULL, HFILL }},
- { &hf_fr_snaptype, {
- "Type", "fr.snaptype", FT_UINT16, BASE_HEX,
- VALS(etype_vals), 0x0, "Frame Relay SNAP Encapsulated Protocol", HFILL }},
- { &hf_fr_chdlctype, {
- "Type", "fr.chdlctype", FT_UINT16, BASE_HEX,
- VALS(chdlc_vals), 0x0, "Frame Relay Cisco HDLC Encapsulated Protocol", HFILL }},
+ { &hf_fr_ea,
+ { "EA", "fr.ea",
+ FT_BOOLEAN, 8, TFS(&ea_string), FRELAY_EA,
+ "Extended Address", HFILL }},
+
+ { &hf_fr_upper_dlci,
+ { "Upper DLCI", "fr.upper_dlci",
+ FT_UINT8, BASE_HEX, NULL, FRELAY_UPPER_DLCI,
+ "Upper bits of DLCI", HFILL }},
+
+ { &hf_fr_cr,
+ { "CR", "fr.cr",
+ FT_BOOLEAN, 8, TFS(&tfs_command_response), FRELAY_CR,
+ "Command/Response", HFILL }},
+
+ { &hf_fr_second_dlci,
+ { "Second DLCI", "fr.second_dlci",
+ FT_UINT8, BASE_HEX, NULL, FRELAY_SECOND_DLCI,
+ "Bits below upper bits of DLCI", HFILL }},
+
+ { &hf_fr_fecn,
+ { "FECN", "fr.fecn",
+ FT_BOOLEAN, 8, NULL, FRELAY_FECN,
+ "Forward Explicit Congestion Notification", HFILL }},
+
+ { &hf_fr_becn,
+ { "BECN", "fr.becn",
+ FT_BOOLEAN, 8, NULL, FRELAY_BECN,
+ "Backward Explicit Congestion Notification", HFILL }},
+
+ { &hf_fr_de,
+ { "DE", "fr.de",
+ FT_BOOLEAN, 8, NULL, FRELAY_DE,
+ "Discard Eligibility", HFILL }},
+
+ { &hf_fr_third_dlci,
+ { "Third DLCI", "fr.third_dlci",
+ FT_UINT8, BASE_HEX, NULL, FRELAY_THIRD_DLCI,
+ "Additional bits of DLCI", HFILL }},
+
+ { &hf_fr_dlcore_control,
+ { "DL-CORE Control", "fr.dlcore_control",
+ FT_UINT8, BASE_HEX, NULL, FRELAY_LOWER_DLCI,
+ "DL-Core control bits", HFILL }},
+
+ { &hf_fr_lower_dlci,
+ { "Lower DLCI", "fr.lower_dlci",
+ FT_UINT8, BASE_HEX, NULL, FRELAY_LOWER_DLCI,
+ "Lower bits of DLCI", HFILL }},
+
+ { &hf_fr_dc,
+ { "DC", "fr.dc",
+ FT_BOOLEAN, 16, TFS(&ctrl_string), FRELAY_CR,
+ "Address/Control", HFILL }},
+
+ { &hf_fr_dlci,
+ { "DLCI", "fr.dlci",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Data-Link Connection Identifier", HFILL }},
+
+ { &hf_fr_control,
+ { "Control Field", "fr.control",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_fr_n_r,
+ { "N(R)", "fr.control.n_r",
+ FT_UINT16, BASE_DEC, NULL, XDLC_N_R_EXT_MASK,
+ NULL, HFILL }},
+
+ { &hf_fr_n_s,
+ { "N(S)", "fr.control.n_s",
+ FT_UINT16, BASE_DEC, NULL, XDLC_N_S_EXT_MASK,
+ NULL, HFILL }},
+
+ { &hf_fr_p,
+ { "Poll", "fr.control.p",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), XDLC_P_F,
+ NULL, HFILL }},
+
+ { &hf_fr_p_ext,
+ { "Poll", "fr.control.p",
+ FT_BOOLEAN, 16, TFS(&tfs_set_notset), XDLC_P_F_EXT,
+ NULL, HFILL }},
+
+ { &hf_fr_f,
+ { "Final", "fr.control.f",
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), XDLC_P_F,
+ NULL, HFILL }},
+
+ { &hf_fr_f_ext,
+ { "Final", "fr.control.f",
+ FT_BOOLEAN, 16, TFS(&tfs_set_notset), XDLC_P_F_EXT,
+ NULL, HFILL }},
+
+ { &hf_fr_s_ftype,
+ { "Supervisory frame type", "fr.control.s_ftype",
+ FT_UINT16, BASE_HEX, VALS(stype_vals), XDLC_S_FTYPE_MASK,
+ NULL, HFILL }},
+
+ { &hf_fr_u_modifier_cmd,
+ { "Command", "fr.control.u_modifier_cmd",
+ FT_UINT8, BASE_HEX, VALS(modifier_vals_cmd), XDLC_U_MODIFIER_MASK,
+ NULL, HFILL }},
+
+ { &hf_fr_u_modifier_resp,
+ { "Response", "fr.control.u_modifier_resp",
+ FT_UINT8, BASE_HEX, VALS(modifier_vals_resp), XDLC_U_MODIFIER_MASK,
+ NULL, HFILL }},
+
+ { &hf_fr_ftype_i,
+ { "Frame type", "fr.control.ftype",
+ FT_UINT16, BASE_HEX, VALS(ftype_vals), XDLC_I_MASK,
+ NULL, HFILL }},
+
+ { &hf_fr_ftype_s_u,
+ { "Frame type", "fr.control.ftype",
+ FT_UINT8, BASE_HEX, VALS(ftype_vals), XDLC_S_U_MASK,
+ NULL, HFILL }},
+
+ { &hf_fr_ftype_s_u_ext,
+ { "Frame type", "fr.control.ftype",
+ FT_UINT16, BASE_HEX, VALS(ftype_vals), XDLC_S_U_MASK,
+ NULL, HFILL }},
+
+ { &hf_fr_nlpid,
+ { "NLPID", "fr.nlpid",
+ FT_UINT8, BASE_HEX, VALS(fr_nlpid_vals), 0x0,
+ "Frame Relay Encapsulated Protocol NLPID", HFILL }},
+
+ { &hf_fr_oui,
+ { "Organization Code", "fr.snap.oui",
+ FT_UINT24, BASE_HEX, VALS(oui_vals), 0x0,
+ NULL, HFILL }},
+
+ { &hf_fr_pid,
+ { "Protocol ID", "fr.snap.pid",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_fr_snaptype,
+ { "Type", "fr.snaptype",
+ FT_UINT16, BASE_HEX, VALS(etype_vals), 0x0,
+ "Frame Relay SNAP Encapsulated Protocol", HFILL }},
+
+ { &hf_fr_chdlctype,
+ { "Type", "fr.chdlctype",
+ FT_UINT16, BASE_HEX, VALS(chdlc_vals), 0x0,
+ "Frame Relay Cisco HDLC Encapsulated Protocol", HFILL }},
+
};
/* Setup protocol subtree array */
@@ -910,9 +973,9 @@ void proto_register_fr(void)
proto_register_subtree_array(ett, array_length(ett));
fr_subdissector_table = register_dissector_table("fr.ietf",
- "Frame Relay NLPID", FT_UINT8, BASE_HEX);
+ "Frame Relay NLPID", FT_UINT8, BASE_HEX);
fr_osinl_subdissector_table = register_dissector_table("fr.osinl",
- "Frame Relay OSI NLPID", FT_UINT8, BASE_HEX);
+ "Frame Relay OSI NLPID", FT_UINT8, BASE_HEX);
register_dissector("fr_uncompressed", dissect_fr_uncompressed, proto_fr);
register_dissector("fr", dissect_fr, proto_fr);
@@ -928,11 +991,12 @@ void proto_register_fr(void)
* so that people dealing with GPRS can make gprs-ns the default.
*/
prefs_register_enum_preference(frencap_module, "encap", "Encapsulation",
- "Encapsulation", &fr_encap,
- fr_encap_options, FALSE);
+ "Encapsulation", &fr_encap,
+ fr_encap_options, FALSE);
}
-void proto_reg_handoff_fr(void)
+void
+proto_reg_handoff_fr(void)
{
dissector_handle_t fr_handle, fr_phdr_handle;
diff --git a/epan/dissectors/packet-frame.c b/epan/dissectors/packet-frame.c
index 6c15ebf474..6e8aa1dc63 100644
--- a/epan/dissectors/packet-frame.c
+++ b/epan/dissectors/packet-frame.c
@@ -67,6 +67,7 @@ static int hf_frame_protocols = -1;
static int hf_frame_color_filter_name = -1;
static int hf_frame_color_filter_text = -1;
static int hf_frame_interface_id = -1;
+static int hf_frame_wtap_encap = -1;
static int hf_comments_text = -1;
static int proto_short = -1;
@@ -82,9 +83,9 @@ static dissector_handle_t data_handle;
static dissector_handle_t docsis_handle;
/* Preferences */
-static gboolean show_file_off = FALSE;
-static gboolean force_docsis_encap = FALSE;
-static gboolean generate_md5_hash = FALSE;
+static gboolean show_file_off = FALSE;
+static gboolean force_docsis_encap = FALSE;
+static gboolean generate_md5_hash = FALSE;
static gboolean generate_epoch_time = TRUE;
static gboolean generate_bits_field = TRUE;
@@ -122,11 +123,11 @@ call_frame_end_routine(gpointer routine, gpointer dummy _U_)
static void
dissect_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
{
- proto_item *volatile ti = NULL, *comment_item;
- guint cap_len = 0, frame_len = 0;
- proto_tree *volatile tree;
+ proto_item *volatile ti = NULL, *comment_item;
+ guint cap_len = 0, frame_len = 0;
+ proto_tree *volatile tree;
proto_tree *comments_tree;
- proto_item *item;
+ proto_item *item;
const gchar *cap_plurality, *frame_plurality;
tree=parent_tree;
@@ -157,6 +158,9 @@ dissect_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
break;
case WTAP_ENCAP_ISDN:
+ case WTAP_ENCAP_V5_EF:
+ case WTAP_ENCAP_DPNSS:
+ case WTAP_ENCAP_BACNET_MS_TP_WITH_PHDR:
pinfo->p2p_dir = pinfo->pseudo_header->isdn.uton ?
P2P_DIR_SENT : P2P_DIR_RECV;
break;
@@ -235,14 +239,19 @@ dissect_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
if (pinfo->fd->flags.has_if_id)
proto_tree_add_uint(fh_tree, hf_frame_interface_id, tvb, 0, 0, pinfo->fd->interface_id);
+ proto_tree_add_int(fh_tree, hf_frame_wtap_encap, tvb, 0, 0, pinfo->fd->lnk_t);
+
if (pinfo->fd->flags.has_ts) {
proto_tree_add_time(fh_tree, hf_frame_arrival_time, tvb,
0, 0, &(pinfo->fd->abs_ts));
if(pinfo->fd->abs_ts.nsecs < 0 || pinfo->fd->abs_ts.nsecs >= 1000000000) {
- item = proto_tree_add_none_format(fh_tree, hf_frame_time_invalid, tvb,
- 0, 0, "Arrival Time: Fractional second %09ld is invalid, the valid range is 0-1000000000", (long) pinfo->fd->abs_ts.nsecs);
+ item = proto_tree_add_none_format(fh_tree, hf_frame_time_invalid, tvb, 0, 0,
+ "Arrival Time: Fractional second %09ld is invalid,"
+ " the valid range is 0-1000000000",
+ (long) pinfo->fd->abs_ts.nsecs);
PROTO_ITEM_SET_GENERATED(item);
- expert_add_info_format(pinfo, item, PI_MALFORMED, PI_WARN, "Arrival Time: Fractional second out of range (0-1000000000)");
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_WARN,
+ "Arrival Time: Fractional second out of range (0-1000000000)");
}
item = proto_tree_add_time(fh_tree, hf_frame_shift_offset, tvb,
0, 0, &(pinfo->fd->shift_offset));
@@ -284,9 +293,9 @@ dissect_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
if (generate_md5_hash) {
const guint8 *cp;
- md5_state_t md_ctx;
- md5_byte_t digest[16];
- gchar *digest_string;
+ md5_state_t md_ctx;
+ md5_byte_t digest[16];
+ gchar *digest_string;
cp = tvb_get_ptr(tvb, 0, cap_len);
@@ -363,8 +372,9 @@ dissect_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
/* Portable Exception Handling to trap Wireshark specific exceptions like BoundsError exceptions */
TRY {
#ifdef _MSC_VER
- /* Win32: Visual-C Structured Exception Handling (SEH) to trap hardware exceptions like memory access violations */
- /* (a running debugger will be called before the except part below) */
+ /* Win32: Visual-C Structured Exception Handling (SEH) to trap hardware exceptions
+ like memory access violations.
+ (a running debugger will be called before the except part below) */
__try {
#endif
if ((force_docsis_encap) && (docsis_handle)) {
@@ -393,7 +403,8 @@ dissect_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
case(STATUS_STACK_OVERFLOW):
show_exception(tvb, pinfo, parent_tree, DissectorError,
"STATUS_STACK_OVERFLOW: dissector overflowed the stack (e.g. endless loop)");
- /* XXX - this will have probably corrupted the stack, which makes problems later in the exception code */
+ /* XXX - this will have probably corrupted the stack,
+ which makes problems later in the exception code */
break;
/* XXX - add other hardware exception codes as required */
default:
@@ -423,7 +434,8 @@ dissect_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
if (have_postdissector()) {
TRY {
#ifdef _MSC_VER
- /* Win32: Visual-C Structured Exception Handling (SEH) to trap hardware exceptions like memory access violations */
+ /* Win32: Visual-C Structured Exception Handling (SEH)
+ to trap hardware exceptions like memory access violations */
/* (a running debugger will be called before the except part below) */
__try {
#endif
@@ -442,7 +454,8 @@ dissect_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
case(STATUS_STACK_OVERFLOW):
show_exception(tvb, pinfo, parent_tree, DissectorError,
"STATUS_STACK_OVERFLOW: dissector overflowed the stack (e.g. endless loop)");
- /* XXX - this will have probably corrupted the stack, which makes problems later in the exception code */
+ /* XXX - this will have probably corrupted the stack,
+ which makes problems later in the exception code */
break;
/* XXX - add other hardware exception codes as required */
default:
@@ -569,108 +582,151 @@ proto_register_frame(void)
{
static hf_register_info hf[] = {
{ &hf_frame_arrival_time,
- { "Arrival Time", "frame.time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0,
- "Absolute time when this frame was captured", HFILL }},
+ { "Arrival Time", "frame.time",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0,
+ "Absolute time when this frame was captured", HFILL }},
{ &hf_frame_shift_offset,
- { "Time shift for this packet","frame.offset_shift", FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
- "Time shift applied to this packet", HFILL }},
+ { "Time shift for this packet", "frame.offset_shift",
+ FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
+ "Time shift applied to this packet", HFILL }},
{ &hf_frame_arrival_time_epoch,
- { "Epoch Time", "frame.time_epoch", FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
- "Epoch time when this frame was captured", HFILL }},
+ { "Epoch Time", "frame.time_epoch",
+ FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
+ "Epoch time when this frame was captured", HFILL }},
{ &hf_frame_time_invalid,
- { "Arrival Timestamp invalid", "frame.time_invalid", FT_NONE, BASE_NONE, NULL, 0x0,
- "The timestamp from the capture is out of the valid range", HFILL }},
+ { "Arrival Timestamp invalid", "frame.time_invalid",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ "The timestamp from the capture is out of the valid range", HFILL }},
{ &hf_frame_time_delta,
- { "Time delta from previous captured frame", "frame.time_delta", FT_RELATIVE_TIME, BASE_NONE, NULL,
- 0x0,
- NULL, HFILL }},
+ { "Time delta from previous captured frame", "frame.time_delta",
+ FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_frame_time_delta_displayed,
- { "Time delta from previous displayed frame", "frame.time_delta_displayed", FT_RELATIVE_TIME, BASE_NONE, NULL,
- 0x0,
- NULL, HFILL }},
+ { "Time delta from previous displayed frame", "frame.time_delta_displayed",
+ FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_frame_time_relative,
- { "Time since reference or first frame", "frame.time_relative", FT_RELATIVE_TIME, BASE_NONE, NULL,
- 0x0,
- "Time relative to time reference or first frame", HFILL }},
+ { "Time since reference or first frame", "frame.time_relative",
+ FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
+ "Time relative to time reference or first frame", HFILL }},
{ &hf_frame_time_reference,
- { "This is a Time Reference frame", "frame.ref_time", FT_NONE, BASE_NONE, NULL, 0x0,
- "This frame is a Time Reference frame", HFILL }},
+ { "This is a Time Reference frame", "frame.ref_time",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ "This frame is a Time Reference frame", HFILL }},
{ &hf_frame_number,
- { "Frame Number", "frame.number", FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Frame Number", "frame.number",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_frame_len,
- { "Frame length on the wire", "frame.len", FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Frame length on the wire", "frame.len",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_frame_capture_len,
- { "Frame length stored into the capture file", "frame.cap_len", FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Frame length stored into the capture file", "frame.cap_len",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_frame_md5_hash,
- { "Frame MD5 Hash", "frame.md5_hash", FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Frame MD5 Hash", "frame.md5_hash",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_frame_p2p_dir,
- { "Point-to-Point Direction", "frame.p2p_dir", FT_INT8, BASE_DEC, VALS(p2p_dirs), 0x0,
- NULL, HFILL }},
+ { "Point-to-Point Direction", "frame.p2p_dir",
+ FT_INT8, BASE_DEC, VALS(p2p_dirs), 0x0,
+ NULL, HFILL }},
{ &hf_link_number,
- { "Link Number", "frame.link_nr", FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Link Number", "frame.link_nr",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_frame_file_off,
- { "File Offset", "frame.file_off", FT_INT64, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "File Offset", "frame.file_off",
+ FT_INT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_frame_marked,
- { "Frame is marked", "frame.marked", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "Frame is marked in the GUI", HFILL }},
+ { "Frame is marked", "frame.marked",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "Frame is marked in the GUI", HFILL }},
{ &hf_frame_ignored,
- { "Frame is ignored", "frame.ignored", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "Frame is ignored by the dissectors", HFILL }},
+ { "Frame is ignored", "frame.ignored",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "Frame is ignored by the dissectors", HFILL }},
{ &hf_frame_protocols,
- { "Protocols in frame", "frame.protocols", FT_STRING, BASE_NONE, NULL, 0x0,
- "Protocols carried by this frame", HFILL }},
+ { "Protocols in frame", "frame.protocols",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "Protocols carried by this frame", HFILL }},
{ &hf_frame_color_filter_name,
- { "Coloring Rule Name", "frame.coloring_rule.name", FT_STRING, BASE_NONE, NULL, 0x0,
- "The frame matched the coloring rule with this name", HFILL }},
+ { "Coloring Rule Name", "frame.coloring_rule.name",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The frame matched the coloring rule with this name", HFILL }},
{ &hf_frame_color_filter_text,
- { "Coloring Rule String", "frame.coloring_rule.string", FT_STRING, BASE_NONE, NULL, 0x0,
- "The frame matched this coloring rule string", HFILL }},
+ { "Coloring Rule String", "frame.coloring_rule.string",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The frame matched this coloring rule string", HFILL }},
{ &hf_frame_interface_id,
- { "Interface id", "frame.interface_id", FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Interface id", "frame.interface_id",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_comments_text,
- { "Comment", "comment", FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Comment", "comment",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
};
- static gint *ett[] = {
+
+ static hf_register_info hf_encap =
+ { &hf_frame_wtap_encap,
+ { "Encapsulation type", "frame.encap_type",
+ FT_INT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }};
+
+ static gint *ett[] = {
&ett_frame,
&ett_comments
};
+
module_t *frame_module;
+ if (hf_encap.hfinfo.strings == NULL) {
+ int encap_count = wtap_get_num_encap_types();
+ value_string *arr;
+ int i;
+
+ hf_encap.hfinfo.strings = arr = g_new(value_string, encap_count+1);
+
+ for (i = 0; i < encap_count; i++) {
+ arr[i].value = i;
+ arr[i].strptr = wtap_encap_string(i);
+ }
+ arr[encap_count].value = 0;
+ arr[encap_count].strptr = NULL;
+ }
+
wtap_encap_dissector_table = register_dissector_table("wtap_encap",
"Wiretap encapsulation type", FT_UINT32, BASE_DEC);
proto_frame = proto_register_protocol("Frame", "Frame", "frame");
proto_pkt_comment = proto_register_protocol("Packet comments", "Pkt_Comment", "pkt_comment");
proto_register_field_array(proto_frame, hf, array_length(hf));
+ proto_register_field_array(proto_frame, &hf_encap, 1);
proto_register_subtree_array(ett, array_length(ett));
register_dissector("frame",dissect_frame,proto_frame);
diff --git a/epan/dissectors/packet-ftp.c b/epan/dissectors/packet-ftp.c
index 1f542a6ea5..04cd03beca 100644
--- a/epan/dissectors/packet-ftp.c
+++ b/epan/dissectors/packet-ftp.c
@@ -62,67 +62,68 @@ static gint ett_ftp_data = -1;
static dissector_handle_t ftpdata_handle;
-#define TCP_PORT_FTPDATA 20
-#define TCP_PORT_FTP 21
+#define TCP_PORT_FTPDATA 20
+#define TCP_PORT_FTP 21
static const value_string response_table[] = {
- { 110, "Restart marker reply" },
- { 120, "Service ready in nnn minutes" },
- { 125, "Data connection already open; transfer starting" },
- { 150, "File status okay; about to open data connection" },
- { 200, "Command okay" },
- { 202, "Command not implemented, superfluous at this site" },
- { 211, "System status, or system help reply" },
- { 212, "Directory status" },
- { 213, "File status" },
- { 214, "Help message" },
- { 215, "NAME system type" },
- { 220, "Service ready for new user" },
- { 221, "Service closing control connection" },
- { 225, "Data connection open; no transfer in progress" },
- { 226, "Closing data connection" },
- { 227, "Entering Passive Mode" },
- { 229, "Entering Extended Passive Mode" },
- { 230, "User logged in, proceed" },
- { 232, "User logged in, authorized by security data exchange" },
- { 234, "Security data exchange complete" },
- { 235, "Security data exchange completed successfully" },
- { 250, "Requested file action okay, completed" },
- { 257, "PATHNAME created" },
- { 331, "User name okay, need password" },
- { 332, "Need account for login" },
- { 334, "Requested security mechanism is ok" },
- { 335, "Security data is acceptable, more is required" },
- { 336, "Username okay, need password. Challenge is ..." },
- { 350, "Requested file action pending further information" },
- { 421, "Service not available, closing control connection" },
- { 425, "Can't open data connection" },
- { 426, "Connection closed; transfer aborted" },
- { 431, "Need some unavailable resource to process security" },
- { 450, "Requested file action not taken" },
- { 451, "Requested action aborted: local error in processing" },
- { 452, "Requested action not taken. Insufficient storage space in system" },
- { 500, "Syntax error, command unrecognized" },
- { 501, "Syntax error in parameters or arguments" },
- { 502, "Command not implemented" },
- { 503, "Bad sequence of commands" },
- { 504, "Command not implemented for that parameter" },
- { 530, "Not logged in" },
- { 532, "Need account for storing files" },
- { 533, "Command protection level denied for policy reasons" },
- { 534, "Request denied for policy reasons" },
- { 535, "Failed security check (hash, sequence, etc)" },
- { 536, "Requested PROT level not supported by mechanism" },
- { 537, "Command protection level not supported by security mechanism" },
- { 550, "Requested action not taken: File unavailable" },
- { 551, "Requested action aborted: page type unknown" },
- { 552, "Requested file action aborted: Exceeded storage allocation" },
- { 553, "Requested action not taken: File name not allowed" },
- { 631, "Integrity protected reply" },
- { 632, "Confidentiality and integrity protected reply" },
- { 633, "Confidentiality protected reply" },
- { 0, NULL }
+ { 110, "Restart marker reply" },
+ { 120, "Service ready in nnn minutes" },
+ { 125, "Data connection already open; transfer starting" },
+ { 150, "File status okay; about to open data connection" },
+ { 200, "Command okay" },
+ { 202, "Command not implemented, superfluous at this site" },
+ { 211, "System status, or system help reply" },
+ { 212, "Directory status" },
+ { 213, "File status" },
+ { 214, "Help message" },
+ { 215, "NAME system type" },
+ { 220, "Service ready for new user" },
+ { 221, "Service closing control connection" },
+ { 225, "Data connection open; no transfer in progress" },
+ { 226, "Closing data connection" },
+ { 227, "Entering Passive Mode" },
+ { 229, "Entering Extended Passive Mode" },
+ { 230, "User logged in, proceed" },
+ { 232, "User logged in, authorized by security data exchange" },
+ { 234, "Security data exchange complete" },
+ { 235, "Security data exchange completed successfully" },
+ { 250, "Requested file action okay, completed" },
+ { 257, "PATHNAME created" },
+ { 331, "User name okay, need password" },
+ { 332, "Need account for login" },
+ { 334, "Requested security mechanism is ok" },
+ { 335, "Security data is acceptable, more is required" },
+ { 336, "Username okay, need password. Challenge is ..." },
+ { 350, "Requested file action pending further information" },
+ { 421, "Service not available, closing control connection" },
+ { 425, "Can't open data connection" },
+ { 426, "Connection closed; transfer aborted" },
+ { 431, "Need some unavailable resource to process security" },
+ { 450, "Requested file action not taken" },
+ { 451, "Requested action aborted: local error in processing" },
+ { 452, "Requested action not taken. Insufficient storage space in system" },
+ { 500, "Syntax error, command unrecognized" },
+ { 501, "Syntax error in parameters or arguments" },
+ { 502, "Command not implemented" },
+ { 503, "Bad sequence of commands" },
+ { 504, "Command not implemented for that parameter" },
+ { 530, "Not logged in" },
+ { 532, "Need account for storing files" },
+ { 533, "Command protection level denied for policy reasons" },
+ { 534, "Request denied for policy reasons" },
+ { 535, "Failed security check (hash, sequence, etc)" },
+ { 536, "Requested PROT level not supported by mechanism" },
+ { 537, "Command protection level not supported by security mechanism" },
+ { 550, "Requested action not taken: File unavailable" },
+ { 551, "Requested action aborted: page type unknown" },
+ { 552, "Requested file action aborted: Exceeded storage allocation" },
+ { 553, "Requested action not taken: File name not allowed" },
+ { 631, "Integrity protected reply" },
+ { 632, "Confidentiality and integrity protected reply" },
+ { 633, "Confidentiality protected reply" },
+ { 0, NULL }
};
+static value_string_ext response_table_ext = VALUE_STRING_EXT_INIT(response_table);
/*
* Parse the address and port information in a PORT command or in the
@@ -142,7 +143,7 @@ static const value_string response_table[] = {
*
* A proposal from Dan Bernstein at
*
- * http://cr.yp.to/ftp/retr.html
+ * http://cr.yp.to/ftp/retr.html
*
* "recommend[s] that clients use the following strategy to parse the
* response line: look for the first digit after the initial space; look
@@ -156,7 +157,7 @@ static const value_string response_table[] = {
*
* The FTP code in the source of the cURL library, at
*
- * http://curl.haxx.se/lxr/source/lib/ftp.c
+ * http://curl.haxx.se/lxr/source/lib/ftp.c
*
* says that cURL "now scans for a sequence of six comma-separated numbers
* and will take them as IP+port indicators"; it loops, doing "sscanf"s
@@ -169,583 +170,572 @@ static const value_string response_table[] = {
*
* The cURL code also says that "found reply-strings include":
*
- * "227 Entering Passive Mode (127,0,0,1,4,51)"
- * "227 Data transfer will passively listen to 127,0,0,1,4,51"
- * "227 Entering passive mode. 127,0,0,1,4,51"
+ * "227 Entering Passive Mode (127,0,0,1,4,51)"
+ * "227 Data transfer will passively listen to 127,0,0,1,4,51"
+ * "227 Entering passive mode. 127,0,0,1,4,51"
*
* so it appears that you can't assume there are parentheses around
* the address and port number.
*/
static gboolean
-parse_port_pasv(const guchar *line, int linelen, guint32 *ftp_ip,
- guint16 *ftp_port)
+parse_port_pasv(const guchar *line, int linelen, guint32 *ftp_ip, guint16 *ftp_port)
{
- char *args;
- char *p;
- guchar c;
- int i;
- int ip_address[4], port[2];
- gboolean ret = FALSE;
-
- /*
- * Copy the rest of the line into a null-terminated buffer.
- */
- args = ep_strndup(line, linelen);
- p = args;
-
- for (;;) {
- /*
- * Look for a digit.
- */
- while ((c = *p) != '\0' && !isdigit(c))
- p++;
-
- if (*p == '\0') {
- /*
- * We ran out of text without finding anything.
- */
- break;
- }
-
- /*
- * See if we have six numbers.
- */
- i = sscanf(p, "%d,%d,%d,%d,%d,%d",
- &ip_address[0], &ip_address[1], &ip_address[2], &ip_address[3],
- &port[0], &port[1]);
- if (i == 6) {
- /*
- * We have a winner!
- */
- *ftp_port = ((port[0] & 0xFF)<<8) | (port[1] & 0xFF);
- *ftp_ip = g_htonl((ip_address[0] << 24) | (ip_address[1] <<16) | (ip_address[2] <<8) | ip_address[3]);
- ret = TRUE;
- break;
- }
-
- /*
- * Well, that didn't work. Skip the first number we found,
- * and keep trying.
- */
- while ((c = *p) != '\0' && isdigit(c))
- p++;
- }
-
- return ret;
+ char *args;
+ char *p;
+ guchar c;
+ int i;
+ int ip_address[4], port[2];
+ gboolean ret = FALSE;
+
+ /*
+ * Copy the rest of the line into a null-terminated buffer.
+ */
+ args = ep_strndup(line, linelen);
+ p = args;
+
+ for (;;) {
+ /*
+ * Look for a digit.
+ */
+ while ((c = *p) != '\0' && !isdigit(c))
+ p++;
+
+ if (*p == '\0') {
+ /*
+ * We ran out of text without finding anything.
+ */
+ break;
+ }
+
+ /*
+ * See if we have six numbers.
+ */
+ i = sscanf(p, "%d,%d,%d,%d,%d,%d",
+ &ip_address[0], &ip_address[1], &ip_address[2], &ip_address[3],
+ &port[0], &port[1]);
+ if (i == 6) {
+ /*
+ * We have a winner!
+ */
+ *ftp_port = ((port[0] & 0xFF)<<8) | (port[1] & 0xFF);
+ *ftp_ip = g_htonl((ip_address[0] << 24) | (ip_address[1] <<16) | (ip_address[2] <<8) | ip_address[3]);
+ ret = TRUE;
+ break;
+ }
+
+ /*
+ * Well, that didn't work. Skip the first number we found,
+ * and keep trying.
+ */
+ while ((c = *p) != '\0' && isdigit(c))
+ p++;
+ }
+
+ return ret;
}
static gboolean
parse_extended_pasv_response(const guchar *line, int linelen, guint16 *ftp_port)
{
- int n;
- char *args;
- char *p;
- guchar c;
- gboolean ret = FALSE;
- gboolean delimiters_seen = FALSE;
-
- /*
- * Copy the rest of the line into a null-terminated buffer.
- */
- args = ep_strndup(line, linelen);
- p = args;
-
- /*
- * Look for ( <d> <d> <d>
- (Try to cope with '(' in description)
- */
- for (; !delimiters_seen;) {
- guchar delimiter = '\0';
- while ((c = *p) != '\0' && (c != '('))
- p++;
-
- if (*p == '\0') {
- return FALSE;
- }
-
- /* Skip '(' */
- p++;
-
- /* Make sure same delimiter is used 3 times */
- for (n=0; n<3; n++) {
- if ((c = *p) != '\0') {
- if (delimiter == '\0') {
- delimiter = c;
- }
- if (c != delimiter) {
- break;
- }
- p++;
- }
- else {
- break;
- }
- }
- delimiters_seen = TRUE;
- }
-
- /*
- * Should now be at digits.
- */
- if (*p != '\0') {
- /*
- * We didn't run out of text without finding anything.
- */
- *ftp_port = atoi(p);
- ret = TRUE;
- }
-
- return ret;
+ int n;
+ char *args;
+ char *p;
+ guchar c;
+ gboolean ret = FALSE;
+ gboolean delimiters_seen = FALSE;
+
+ /*
+ * Copy the rest of the line into a null-terminated buffer.
+ */
+ args = ep_strndup(line, linelen);
+ p = args;
+
+ /*
+ * Look for ( <d> <d> <d>
+ (Try to cope with '(' in description)
+ */
+ for (; !delimiters_seen;) {
+ guchar delimiter = '\0';
+ while ((c = *p) != '\0' && (c != '('))
+ p++;
+
+ if (*p == '\0') {
+ return FALSE;
+ }
+
+ /* Skip '(' */
+ p++;
+
+ /* Make sure same delimiter is used 3 times */
+ for (n=0; n<3; n++) {
+ if ((c = *p) != '\0') {
+ if (delimiter == '\0') {
+ delimiter = c;
+ }
+ if (c != delimiter) {
+ break;
+ }
+ p++;
+ }
+ else {
+ break;
+ }
+ }
+ delimiters_seen = TRUE;
+ }
+
+ /*
+ * Should now be at digits.
+ */
+ if (*p != '\0') {
+ /*
+ * We didn't run out of text without finding anything.
+ */
+ *ftp_port = atoi(p);
+ ret = TRUE;
+ }
+
+ return ret;
}
static void
dissect_ftp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- gboolean is_request;
- proto_tree *ftp_tree = NULL;
- proto_tree *reqresp_tree = NULL;
- proto_item *ti, *hidden_item;
- gint offset = 0;
- const guchar *line;
- guint32 code;
- gchar code_str[4];
- gboolean is_port_request = FALSE;
- gboolean is_pasv_response = FALSE;
- gboolean is_epasv_response = FALSE;
- gint next_offset;
- int linelen;
- int tokenlen;
- const guchar *next_token;
- guint32 pasv_ip;
- guint32 ftp_ip;
- guint16 ftp_port;
- address ftp_ip_address;
- gboolean ftp_nat;
- conversation_t *conversation;
-
- ftp_ip_address = pinfo->src;
-
- if (pinfo->match_uint == pinfo->destport)
- is_request = TRUE;
- else
- is_request = FALSE;
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "FTP");
-
- /*
- * Find the end of the first line.
- *
- * Note that "tvb_find_line_end()" will return a value that is
- * not longer than what's in the buffer, so the "tvb_get_ptr()"
- * call won't throw an exception.
- */
- linelen = tvb_find_line_end(tvb, offset, -1, &next_offset, FALSE);
- line = tvb_get_ptr(tvb, offset, linelen);
-
- /*
- * Put the first line from the buffer into the summary
- * (but leave out the line terminator).
- */
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s: %s",
- is_request ? "Request" : "Response",
- format_text(line, linelen));
-
- if (tree) {
- ti = proto_tree_add_item(tree, proto_ftp, tvb, offset, -1,
- ENC_NA);
- ftp_tree = proto_item_add_subtree(ti, ett_ftp);
-
- if (is_request) {
- hidden_item = proto_tree_add_boolean(ftp_tree,
- hf_ftp_request, tvb, 0, 0, TRUE);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_boolean(ftp_tree,
- hf_ftp_response, tvb, 0, 0, FALSE);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- } else {
- hidden_item = proto_tree_add_boolean(ftp_tree,
- hf_ftp_request, tvb, 0, 0, FALSE);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_boolean(ftp_tree,
- hf_ftp_response, tvb, 0, 0, TRUE);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- }
-
- /*
- * Put the line into the protocol tree.
- */
- ti = proto_tree_add_text(ftp_tree, tvb, offset,
- next_offset - offset, "%s",
- tvb_format_text(tvb, offset, next_offset - offset));
- reqresp_tree = proto_item_add_subtree(ti, ett_ftp_reqresp);
- }
-
- if (is_request) {
- /*
- * Extract the first token, and, if there is a first
- * token, add it as the request.
- */
- tokenlen = get_token_len(line, line + linelen, &next_token);
- if (tokenlen != 0) {
- if (tree) {
- proto_tree_add_item(reqresp_tree,
- hf_ftp_request_command, tvb, offset,
- tokenlen, ENC_ASCII|ENC_NA);
- }
- if (strncmp(line, "PORT", tokenlen) == 0)
- is_port_request = TRUE;
- }
- } else {
- /*
- * This is a response; the response code is 3 digits,
- * followed by a space or hyphen, possibly followed by
- * text.
- *
- * If the line doesn't start with 3 digits, it's part of
- * a continuation.
- *
- * XXX - keep track of state in the first pass, and
- * treat non-continuation lines not beginning with digits
- * as errors?
- */
- if (linelen >= 3 && isdigit(line[0]) && isdigit(line[1])
- && isdigit(line[2])) {
- /*
- * One-line reply, or first or last line
- * of a multi-line reply.
- */
- tvb_get_nstringz0(tvb, offset, sizeof(code_str), code_str);
- code = strtoul(code_str, NULL, 10);
-
- if (tree) {
- proto_tree_add_uint(reqresp_tree,
- hf_ftp_response_code, tvb, offset, 3, code);
- }
-
- /*
- * See if it's a passive-mode response.
- *
- * XXX - does anybody do FOOBAR, as per RFC
- * 1639, or has that been supplanted by RFC 2428?
- */
- if (code == 227)
- is_pasv_response = TRUE;
-
- /*
- * Responses to EPSV command, as per RFC 2428
- * XXX - handle IPv6?
- */
- if (code == 229)
- is_epasv_response = TRUE;
-
- /*
- * Skip the 3 digits and, if present, the
- * space or hyphen.
- */
- if (linelen >= 4)
- next_token = line + 4;
- else
- next_token = line + linelen;
- } else {
- /*
- * Line doesn't start with 3 digits; assume it's
- * a line in the middle of a multi-line reply.
- */
- next_token = line;
- }
- }
- offset += (gint) (next_token - line);
- linelen -= (int) (next_token - line);
- line = next_token;
-
- if (tree) {
- /*
- * Add the rest of the first line as request or
- * reply data.
- */
- if (linelen != 0) {
- if (is_request) {
- proto_tree_add_item(reqresp_tree,
- hf_ftp_request_arg, tvb, offset,
- linelen, ENC_ASCII|ENC_NA);
- } else {
- proto_tree_add_item(reqresp_tree,
- hf_ftp_response_arg, tvb, offset,
- linelen, ENC_ASCII|ENC_NA);
- }
- }
- offset = next_offset;
- }
-
- /*
- * If this is a PORT request or a PASV response, handle it.
- */
- if (is_port_request) {
- if (parse_port_pasv(line, linelen, &ftp_ip, &ftp_port)) {
- if (tree) {
- proto_tree_add_ipv4(reqresp_tree,
- hf_ftp_active_ip, tvb, 0, 0,
- ftp_ip);
- proto_tree_add_uint(reqresp_tree,
- hf_ftp_active_port, tvb, 0, 0,
- ftp_port);
- }
- SET_ADDRESS(&ftp_ip_address, AT_IPv4, 4, (const guint8 *)&ftp_ip);
- ftp_nat = !ADDRESSES_EQUAL(&pinfo->src, &ftp_ip_address);
- if (ftp_nat) {
- if (tree) {
- proto_tree_add_boolean(
- reqresp_tree,
- hf_ftp_active_nat, tvb,
- 0, 0, ftp_nat);
- }
- }
- }
- }
-
- if (is_pasv_response) {
- if (linelen != 0) {
- /*
- * This frame contains a PASV response; set up a
- * conversation for the data.
- */
- if (parse_port_pasv(line, linelen, &pasv_ip,
- &ftp_port)) {
- if (tree) {
- proto_tree_add_ipv4(reqresp_tree,
- hf_ftp_pasv_ip, tvb, 0, 0, pasv_ip);
- proto_tree_add_uint(reqresp_tree,
- hf_ftp_pasv_port, tvb, 0, 0,
- ftp_port);
- }
- SET_ADDRESS(&ftp_ip_address, AT_IPv4, 4,
- (const guint8 *)&pasv_ip);
- ftp_nat = !ADDRESSES_EQUAL(&pinfo->src,
- &ftp_ip_address);
- if (ftp_nat) {
- if (tree) {
- proto_tree_add_boolean(reqresp_tree,
- hf_ftp_pasv_nat, tvb, 0, 0,
- ftp_nat);
- }
- }
-
- /*
- * We use "ftp_ip_address", so that if
- * we're NAT'd we look for the un-NAT'd
- * connection.
- *
- * XXX - should this call to
- * "find_conversation()" just use
- * "ftp_ip_address" and "server_port", and
- * wildcard everything else?
- */
- conversation = find_conversation(pinfo->fd->num, &ftp_ip_address,
- &pinfo->dst, PT_TCP, ftp_port, 0,
- NO_PORT_B);
- if (conversation == NULL) {
- /*
- * XXX - should this call to
- * "conversation_new()" just use
- * "ftp_ip_address" and "server_port",
- * and wildcard everything else?
- *
- * XXX - what if we did find a
- * conversation? As we create it
- * only on the first pass through
- * the packets, if we find one, it's
- * presumably an unrelated conversation.
- * Should we remove the old one from
- * the hash table and put this one in
- * its place? Can the conversation
- * code handle conversations not in
- * the hash table? Or should we
- * make conversations support
- * start and end frames, as circuits
- * do, and treat this as an indication
- * that one conversation was closed
- * and a new one was opened?
- */
- conversation = conversation_new(
- pinfo->fd->num, &ftp_ip_address, &pinfo->dst,
- PT_TCP, ftp_port, 0, NO_PORT2);
- conversation_set_dissector(conversation,
- ftpdata_handle);
- }
- }
- }
- }
-
-
- if (is_epasv_response) {
- if (linelen != 0) {
- /*
- * This frame contains an EPSV response; set up a
- * conversation for the data.
- */
- if (parse_extended_pasv_response(line, linelen, &ftp_port)) {
- /* Add port number to tree */
- if (tree) {
- proto_tree_add_uint(reqresp_tree,
- hf_ftp_pasv_port, tvb, 0, 0,
- ftp_port);
- }
-
- /* Find/create conversation for data */
- conversation = find_conversation(pinfo->fd->num, &pinfo->src,
- &pinfo->dst, PT_TCP, ftp_port, 0,
- NO_PORT_B);
- if (conversation == NULL) {
- conversation = conversation_new(
- pinfo->fd->num, &pinfo->src, &pinfo->dst,
- PT_TCP, ftp_port, 0, NO_PORT2);
- conversation_set_dissector(conversation,
- ftpdata_handle);
- }
- }
- }
- }
-
- if (tree) {
- /*
- * Show the rest of the request or response as text,
- * a line at a time.
- * XXX - only if there's a continuation indicator?
- */
- while (tvb_offset_exists(tvb, offset)) {
- /*
- * Find the end of the line.
- */
- linelen = tvb_find_line_end(tvb, offset, -1,
- &next_offset, FALSE);
-
- /*
- * Put this line.
- */
- proto_tree_add_text(ftp_tree, tvb, offset,
- next_offset - offset, "%s",
- tvb_format_text(tvb, offset, next_offset - offset));
- offset = next_offset;
- }
- }
+ gboolean is_request;
+ proto_tree *ftp_tree = NULL;
+ proto_tree *reqresp_tree = NULL;
+ proto_item *ti, *hidden_item;
+ gint offset = 0;
+ const guchar *line;
+ guint32 code;
+ gchar code_str[4];
+ gboolean is_port_request = FALSE;
+ gboolean is_pasv_response = FALSE;
+ gboolean is_epasv_response = FALSE;
+ gint next_offset;
+ int linelen;
+ int tokenlen;
+ const guchar *next_token;
+ guint32 pasv_ip;
+ guint32 ftp_ip;
+ guint16 ftp_port;
+ address ftp_ip_address;
+ gboolean ftp_nat;
+ conversation_t *conversation;
+
+ ftp_ip_address = pinfo->src;
+
+ if (pinfo->match_uint == pinfo->destport)
+ is_request = TRUE;
+ else
+ is_request = FALSE;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "FTP");
+
+ /*
+ * Find the end of the first line.
+ *
+ * Note that "tvb_find_line_end()" will return a value that is
+ * not longer than what's in the buffer, so the "tvb_get_ptr()"
+ * call won't throw an exception.
+ */
+ linelen = tvb_find_line_end(tvb, offset, -1, &next_offset, FALSE);
+ line = tvb_get_ptr(tvb, offset, linelen);
+
+ /*
+ * Put the first line from the buffer into the summary
+ * (but leave out the line terminator).
+ */
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s: %s",
+ is_request ? "Request" : "Response",
+ format_text(line, linelen));
+
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_ftp, tvb, offset, -1, ENC_NA);
+ ftp_tree = proto_item_add_subtree(ti, ett_ftp);
+
+ if (is_request) {
+ hidden_item = proto_tree_add_boolean(ftp_tree,
+ hf_ftp_request, tvb, 0, 0, TRUE);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ hidden_item = proto_tree_add_boolean(ftp_tree,
+ hf_ftp_response, tvb, 0, 0, FALSE);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ } else {
+ hidden_item = proto_tree_add_boolean(ftp_tree,
+ hf_ftp_request, tvb, 0, 0, FALSE);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ hidden_item = proto_tree_add_boolean(ftp_tree,
+ hf_ftp_response, tvb, 0, 0, TRUE);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ }
+
+ /*
+ * Put the line into the protocol tree.
+ */
+ ti = proto_tree_add_text(ftp_tree, tvb, offset,
+ next_offset - offset, "%s",
+ tvb_format_text(tvb, offset, next_offset - offset));
+ reqresp_tree = proto_item_add_subtree(ti, ett_ftp_reqresp);
+ }
+
+ if (is_request) {
+ /*
+ * Extract the first token, and, if there is a first
+ * token, add it as the request.
+ */
+ tokenlen = get_token_len(line, line + linelen, &next_token);
+ if (tokenlen != 0) {
+ if (tree) {
+ proto_tree_add_item(reqresp_tree,
+ hf_ftp_request_command, tvb, offset,
+ tokenlen, ENC_ASCII|ENC_NA);
+ }
+ if (strncmp(line, "PORT", tokenlen) == 0)
+ is_port_request = TRUE;
+ }
+ } else {
+ /*
+ * This is a response; the response code is 3 digits,
+ * followed by a space or hyphen, possibly followed by
+ * text.
+ *
+ * If the line doesn't start with 3 digits, it's part of
+ * a continuation.
+ *
+ * XXX - keep track of state in the first pass, and
+ * treat non-continuation lines not beginning with digits
+ * as errors?
+ */
+ if (linelen >= 3 && isdigit(line[0]) && isdigit(line[1])
+ && isdigit(line[2])) {
+ /*
+ * One-line reply, or first or last line
+ * of a multi-line reply.
+ */
+ tvb_get_nstringz0(tvb, offset, sizeof(code_str), code_str);
+ code = strtoul(code_str, NULL, 10);
+
+ if (tree) {
+ proto_tree_add_uint(reqresp_tree,
+ hf_ftp_response_code, tvb, offset, 3, code);
+ }
+
+ /*
+ * See if it's a passive-mode response.
+ *
+ * XXX - does anybody do FOOBAR, as per RFC
+ * 1639, or has that been supplanted by RFC 2428?
+ */
+ if (code == 227)
+ is_pasv_response = TRUE;
+
+ /*
+ * Responses to EPSV command, as per RFC 2428
+ * XXX - handle IPv6?
+ */
+ if (code == 229)
+ is_epasv_response = TRUE;
+
+ /*
+ * Skip the 3 digits and, if present, the
+ * space or hyphen.
+ */
+ if (linelen >= 4)
+ next_token = line + 4;
+ else
+ next_token = line + linelen;
+ } else {
+ /*
+ * Line doesn't start with 3 digits; assume it's
+ * a line in the middle of a multi-line reply.
+ */
+ next_token = line;
+ }
+ }
+ offset += (gint) (next_token - line);
+ linelen -= (int) (next_token - line);
+ line = next_token;
+
+ if (tree) {
+ /*
+ * Add the rest of the first line as request or
+ * reply data.
+ */
+ if (linelen != 0) {
+ if (is_request) {
+ proto_tree_add_item(reqresp_tree,
+ hf_ftp_request_arg, tvb, offset,
+ linelen, ENC_ASCII|ENC_NA);
+ } else {
+ proto_tree_add_item(reqresp_tree,
+ hf_ftp_response_arg, tvb, offset,
+ linelen, ENC_ASCII|ENC_NA);
+ }
+ }
+ offset = next_offset;
+ }
+
+ /*
+ * If this is a PORT request or a PASV response, handle it.
+ */
+ if (is_port_request) {
+ if (parse_port_pasv(line, linelen, &ftp_ip, &ftp_port)) {
+ if (tree) {
+ proto_tree_add_ipv4(reqresp_tree,
+ hf_ftp_active_ip, tvb, 0, 0,
+ ftp_ip);
+ proto_tree_add_uint(reqresp_tree,
+ hf_ftp_active_port, tvb, 0, 0,
+ ftp_port);
+ }
+ SET_ADDRESS(&ftp_ip_address, AT_IPv4, 4, (const guint8 *)&ftp_ip);
+ ftp_nat = !ADDRESSES_EQUAL(&pinfo->src, &ftp_ip_address);
+ if (ftp_nat) {
+ if (tree) {
+ proto_tree_add_boolean(
+ reqresp_tree,
+ hf_ftp_active_nat, tvb,
+ 0, 0, ftp_nat);
+ }
+ }
+ }
+ }
+
+ if (is_pasv_response) {
+ if (linelen != 0) {
+ /*
+ * This frame contains a PASV response; set up a
+ * conversation for the data.
+ */
+ if (parse_port_pasv(line, linelen, &pasv_ip, &ftp_port)) {
+ if (tree) {
+ proto_tree_add_ipv4(reqresp_tree,
+ hf_ftp_pasv_ip, tvb, 0, 0, pasv_ip);
+ proto_tree_add_uint(reqresp_tree,
+ hf_ftp_pasv_port, tvb, 0, 0,
+ ftp_port);
+ }
+ SET_ADDRESS(&ftp_ip_address, AT_IPv4, 4,
+ (const guint8 *)&pasv_ip);
+ ftp_nat = !ADDRESSES_EQUAL(&pinfo->src, &ftp_ip_address);
+ if (ftp_nat) {
+ if (tree) {
+ proto_tree_add_boolean(reqresp_tree,
+ hf_ftp_pasv_nat, tvb, 0, 0,
+ ftp_nat);
+ }
+ }
+
+ /*
+ * We use "ftp_ip_address", so that if
+ * we're NAT'd we look for the un-NAT'd
+ * connection.
+ *
+ * XXX - should this call to
+ * "find_conversation()" just use
+ * "ftp_ip_address" and "server_port", and
+ * wildcard everything else?
+ */
+ conversation = find_conversation(pinfo->fd->num, &ftp_ip_address,
+ &pinfo->dst, PT_TCP, ftp_port, 0,
+ NO_PORT_B);
+ if (conversation == NULL) {
+ /*
+ * XXX - should this call to "conversation_new()"
+ * just use "ftp_ip_address" and "server_port",
+ * and wildcard everything else?
+ *
+ * XXX - what if we did find a conversation? As
+ * we create it only on the first pass through the
+ * packets, if we find one, it's presumably an
+ * unrelated conversation. Should we remove the
+ * old one from the hash table and put this one in
+ * its place? Can the conversation code handle
+ * conversations not in the hash table? Or should
+ * we make conversations support start and end
+ * frames, as circuits do, and treat this as an
+ * indication that one conversation was closed and
+ * a new one was opened?
+ */
+ conversation = conversation_new(
+ pinfo->fd->num, &ftp_ip_address, &pinfo->dst,
+ PT_TCP, ftp_port, 0, NO_PORT2);
+ conversation_set_dissector(conversation, ftpdata_handle);
+ }
+ }
+ }
+ }
+
+
+ if (is_epasv_response) {
+ if (linelen != 0) {
+ /*
+ * This frame contains an EPSV response; set up a
+ * conversation for the data.
+ */
+ if (parse_extended_pasv_response(line, linelen, &ftp_port)) {
+ /* Add port number to tree */
+ if (tree) {
+ proto_tree_add_uint(reqresp_tree,
+ hf_ftp_pasv_port, tvb, 0, 0,
+ ftp_port);
+ }
+
+ /* Find/create conversation for data */
+ conversation = find_conversation(pinfo->fd->num, &pinfo->src,
+ &pinfo->dst, PT_TCP, ftp_port, 0,
+ NO_PORT_B);
+ if (conversation == NULL) {
+ conversation = conversation_new(
+ pinfo->fd->num, &pinfo->src, &pinfo->dst,
+ PT_TCP, ftp_port, 0, NO_PORT2);
+ conversation_set_dissector(conversation,
+ ftpdata_handle);
+ }
+ }
+ }
+ }
+
+ if (tree) {
+ /*
+ * Show the rest of the request or response as text,
+ * a line at a time.
+ * XXX - only if there's a continuation indicator?
+ */
+ while (tvb_offset_exists(tvb, offset)) {
+ /*
+ * Find the end of the line.
+ */
+ tvb_find_line_end(tvb, offset, -1, &next_offset, FALSE);
+
+ /*
+ * Put this line.
+ */
+ proto_tree_add_text(ftp_tree, tvb, offset,
+ next_offset - offset, "%s",
+ tvb_format_text(tvb, offset, next_offset - offset));
+ offset = next_offset;
+ }
+ }
}
static void
dissect_ftpdata(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *ti, *ftp_data_tree;
- int data_length;
+ proto_tree *ti, *ftp_data_tree;
+ int data_length;
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "FTP-DATA");
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "FTP-DATA");
- col_add_fstr(pinfo->cinfo, COL_INFO, "FTP Data: %u bytes",
- tvb_reported_length(tvb));
+ col_add_fstr(pinfo->cinfo, COL_INFO, "FTP Data: %u bytes",
+ tvb_reported_length(tvb));
- if (tree) {
- data_length = tvb_length(tvb);
+ if (tree) {
+ data_length = tvb_length(tvb);
- ti = proto_tree_add_item(tree, proto_ftp_data, tvb, 0, -1,
- ENC_NA);
- ftp_data_tree = proto_item_add_subtree(ti, ett_ftp_data);
+ ti = proto_tree_add_item(tree, proto_ftp_data, tvb, 0, -1,
+ ENC_NA);
+ ftp_data_tree = proto_item_add_subtree(ti, ett_ftp_data);
- /*
- * XXX - if this is binary data, it'll produce
- * a *really* long line.
- */
- proto_tree_add_text(ftp_data_tree, tvb, 0, data_length,
- "FTP Data: %s", tvb_format_text(tvb, 0, data_length));
- }
+ /*
+ * XXX - if this is binary data, it'll produce
+ * a *really* long line.
+ */
+ proto_tree_add_text(ftp_data_tree, tvb, 0, data_length,
+ "FTP Data: %s", tvb_format_text(tvb, 0, data_length));
+ }
}
void
proto_register_ftp(void)
{
static hf_register_info hf[] = {
- { &hf_ftp_response,
- { "Response", "ftp.response",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "TRUE if FTP response", HFILL }},
-
- { &hf_ftp_request,
- { "Request", "ftp.request",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "TRUE if FTP request", HFILL }},
-
- { &hf_ftp_request_command,
- { "Request command", "ftp.request.command",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_ftp_request_arg,
- { "Request arg", "ftp.request.arg",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_ftp_response_code,
- { "Response code", "ftp.response.code",
- FT_UINT32, BASE_DEC, VALS(response_table), 0x0,
- NULL, HFILL }},
-
- { &hf_ftp_response_arg,
- { "Response arg", "ftp.response.arg",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_ftp_pasv_ip,
- { "Passive IP address", "ftp.passive.ip",
- FT_IPv4, BASE_NONE, NULL,0x0,
- "Passive IP address (check NAT)", HFILL}},
-
- { &hf_ftp_pasv_port,
- { "Passive port", "ftp.passive.port",
- FT_UINT16, BASE_DEC, NULL,0x0,
- "Passive FTP server port", HFILL }},
-
- { &hf_ftp_pasv_nat,
- {"Passive IP NAT", "ftp.passive.nat",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "NAT is active SIP and passive IP different", HFILL }},
-
- { &hf_ftp_active_ip,
- { "Active IP address", "ftp.active.cip",
- FT_IPv4, BASE_NONE, NULL, 0x0,
- "Active FTP client IP address", HFILL }},
-
- { &hf_ftp_active_port,
- {"Active port", "ftp.active.port",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Active FTP client port", HFILL }},
-
- { &hf_ftp_active_nat,
- { "Active IP NAT", "ftp.active.nat",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "NAT is active", HFILL}}
-
- };
- static gint *ett[] = {
- &ett_ftp,
- &ett_ftp_reqresp,
- &ett_ftp_data,
- };
-
- proto_ftp = proto_register_protocol("File Transfer Protocol (FTP)", "FTP",
- "ftp");
- register_dissector("ftp", dissect_ftp, proto_ftp);
- proto_ftp_data = proto_register_protocol("FTP Data", "FTP-DATA", "ftp-data");
- register_dissector("ftp-data", dissect_ftpdata, proto_ftp_data);
- proto_register_field_array(proto_ftp, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ { &hf_ftp_response,
+ { "Response", "ftp.response",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "TRUE if FTP response", HFILL }},
+
+ { &hf_ftp_request,
+ { "Request", "ftp.request",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "TRUE if FTP request", HFILL }},
+
+ { &hf_ftp_request_command,
+ { "Request command", "ftp.request.command",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_ftp_request_arg,
+ { "Request arg", "ftp.request.arg",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_ftp_response_code,
+ { "Response code", "ftp.response.code",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &response_table_ext, 0x0,
+ NULL, HFILL }},
+
+ { &hf_ftp_response_arg,
+ { "Response arg", "ftp.response.arg",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_ftp_pasv_ip,
+ { "Passive IP address", "ftp.passive.ip",
+ FT_IPv4, BASE_NONE, NULL,0x0,
+ "Passive IP address (check NAT)", HFILL}},
+
+ { &hf_ftp_pasv_port,
+ { "Passive port", "ftp.passive.port",
+ FT_UINT16, BASE_DEC, NULL,0x0,
+ "Passive FTP server port", HFILL }},
+
+ { &hf_ftp_pasv_nat,
+ {"Passive IP NAT", "ftp.passive.nat",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "NAT is active SIP and passive IP different", HFILL }},
+
+ { &hf_ftp_active_ip,
+ { "Active IP address", "ftp.active.cip",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ "Active FTP client IP address", HFILL }},
+
+ { &hf_ftp_active_port,
+ {"Active port", "ftp.active.port",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Active FTP client port", HFILL }},
+
+ { &hf_ftp_active_nat,
+ { "Active IP NAT", "ftp.active.nat",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "NAT is active", HFILL}}
+
+ };
+ static gint *ett[] = {
+ &ett_ftp,
+ &ett_ftp_reqresp,
+ &ett_ftp_data,
+ };
+
+ proto_ftp = proto_register_protocol("File Transfer Protocol (FTP)", "FTP",
+ "ftp");
+ register_dissector("ftp", dissect_ftp, proto_ftp);
+ proto_ftp_data = proto_register_protocol("FTP Data", "FTP-DATA", "ftp-data");
+ register_dissector("ftp-data", dissect_ftpdata, proto_ftp_data);
+ proto_register_field_array(proto_ftp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_ftp(void)
{
- dissector_handle_t ftp_handle;
+ dissector_handle_t ftp_handle;
- ftpdata_handle = find_dissector("ftp-data");
- dissector_add_uint("tcp.port", TCP_PORT_FTPDATA, ftpdata_handle);
- ftp_handle = find_dissector("ftp");
- dissector_add_uint("tcp.port", TCP_PORT_FTP, ftp_handle);
+ ftpdata_handle = find_dissector("ftp-data");
+ dissector_add_uint("tcp.port", TCP_PORT_FTPDATA, ftpdata_handle);
+ ftp_handle = find_dissector("ftp");
+ dissector_add_uint("tcp.port", TCP_PORT_FTP, ftp_handle);
}
diff --git a/epan/dissectors/packet-fw1.c b/epan/dissectors/packet-fw1.c
index 8c8f5cbe8c..70cf60a93d 100644
--- a/epan/dissectors/packet-fw1.c
+++ b/epan/dissectors/packet-fw1.c
@@ -228,20 +228,24 @@ proto_register_fw1(void)
{
static hf_register_info hf[] = {
{ &hf_fw1_direction,
- { "Direction", "fw1.direction", FT_STRING, BASE_NONE, NULL, 0x0,
+ { "Direction", "fw1.direction", FT_STRING, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
+
{ &hf_fw1_chain,
- { "Chain Position", "fw1.chain", FT_STRING, BASE_NONE, NULL, 0x0,
+ { "Chain Position", "fw1.chain", FT_STRING, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
+
{ &hf_fw1_interface,
- { "Interface", "fw1.interface", FT_STRING, BASE_NONE, NULL, 0x0,
+ { "Interface", "fw1.interface", FT_STRING, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
+
{ &hf_fw1_uuid,
{ "UUID", "fw1.uuid", FT_UINT32, BASE_DEC, NULL, 0x0,
NULL, HFILL }},
+
/* registered here but handled in ethertype.c */
{ &hf_fw1_type,
- { "Type", "fw1.type", FT_UINT16, BASE_HEX, VALS(etype_vals), 0x0,
+ { "Type", "fw1.type", FT_UINT16, BASE_HEX, VALS(etype_vals), 0x0,
NULL, HFILL }},
};
/* Setup protocol subtree array */
diff --git a/epan/dissectors/packet-g723.c b/epan/dissectors/packet-g723.c
index 6f0e272ad0..2405ed6559 100644
--- a/epan/dissectors/packet-g723.c
+++ b/epan/dissectors/packet-g723.c
@@ -29,8 +29,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-gadu-gadu.c b/epan/dissectors/packet-gadu-gadu.c
index 4bbf6c3f13..b8447740a2 100644
--- a/epan/dissectors/packet-gadu-gadu.c
+++ b/epan/dissectors/packet-gadu-gadu.c
@@ -1,6 +1,6 @@
/* packet-gadu-gadu.c
* Routines for Gadu-Gadu dissection
- * Copyright 2011, Jekub Zawadzki <darkjames@darkjames.ath.cx>
+ * Copyright 2011,2012, Jakub Zawadzki <darkjames-ws@darkjames.pl>
*
* $Id$
*
@@ -41,108 +41,1356 @@
/* desegmentation of Gadu-Gadu over TCP */
static gboolean gadu_gadu_desegment = TRUE;
-static gint proto_gadu_gadu = -1;
+static int proto_gadu_gadu = -1;
-static gint ett_gadu_gadu = -1;
+static int ett_gadu_gadu = -1;
+static int ett_gadu_gadu_contact = -1;
-static gint hf_gadu_gadu_header_type_recv = -1;
-static gint hf_gadu_gadu_header_type_send = -1;
-static gint hf_gadu_gadu_header_length = -1;
-static gint hf_gadu_gadu_data = -1;
+static int hf_gadu_gadu_header_type_recv = -1;
+static int hf_gadu_gadu_header_type_send = -1;
+static int hf_gadu_gadu_header_length = -1;
+
+static int hf_gadu_gadu_contact_uin = -1;
+static int hf_gadu_gadu_contact_type = -1;
+
+static int hf_gadu_gadu_login_uin = -1;
+static int hf_gadu_gadu_login_hash_type = -1;
+static int hf_gadu_gadu_login_hash = -1;
+static int hf_gadu_gadu_login_status = -1;
+static int hf_gadu_gadu_login_protocol = -1;
+static int hf_gadu_gadu_login_version = -1;
+static int hf_gadu_gadu_login80_lang = -1;
+static int hf_gadu_gadu_login_local_ip = -1;
+static int hf_gadu_gadu_login_local_port = -1;
+
+static int hf_gadu_gadu_msg_uin = -1;
+static int hf_gadu_gadu_msg_sender = -1;
+static int hf_gadu_gadu_msg_recipient = -1;
+static int hf_gadu_gadu_msg_seq = -1;
+static int hf_gadu_gadu_msg_time = -1;
+static int hf_gadu_gadu_msg_class = -1;
+static int hf_gadu_gadu_msg_text = -1;
+static int hf_gadu_gadu_msg80_offset_plain = -1;
+static int hf_gadu_gadu_msg80_offset_attr = -1;
+
+static int hf_gadu_gadu_msg_ack_status = -1;
+static int hf_gadu_gadu_msg_ack_recipient = -1;
+static int hf_gadu_gadu_msg_ack_seq = -1;
+
+static int hf_gadu_gadu_status_uin = -1;
+static int hf_gadu_gadu_status_status = -1;
+static int hf_gadu_gadu_status_ip = -1;
+static int hf_gadu_gadu_status_port = -1;
+static int hf_gadu_gadu_status_version = -1;
+static int hf_gadu_gadu_status_img_size = -1;
+static int hf_gadu_gadu_status_descr = -1;
+
+static int hf_gadu_gadu_new_status_status = -1;
+static int hf_gadu_gadu_new_status_desc = -1;
+
+static int hf_gadu_gadu_userlist_request_type = -1;
+static int hf_gadu_gadu_userlist_reply_type = -1;
+
+static int hf_gadu_gadu_welcome_seed = -1;
+
+static int hf_gadu_gadu_data = -1;
+
+static dissector_handle_t xml_handle;
+
+#define GG_ERA_OMNIX_MASK 0x04000000
+#define GG_HAS_AUDIO_MASK 0x40000000
+
+#define GG_WELCOME 0x01
+#define GG_STATUS 0x02
+#define GG_LOGIN_OK 0x03
+#define GG_SEND_MSG_ACK 0x05
+#define GG_PONG 0x07
+#define GG_PING 0x08
+#define GG_LOGIN_FAILED 0x09
+#define GG_RECV_MSG 0x0a
+#define GG_DISCONNECTING 0x0b
+#define GG_NOTIFY_REPLY 0x0c
+#define GG_DISCONNECT_ACK 0x0d
+#define GG_PUBDIR50_REPLY 0x0e
+#define GG_STATUS60 0x0f
+#define GG_USERLIST_REPLY 0x10
+#define GG_NOTIFY_REPLY60 0x11
+#define GG_NEED_EMAIL 0x14
+#define GG_LOGIN_HASH_TYPE_INVALID 0x16
+#define GG_STATUS77 0x17
+#define GG_NOTIFY_REPLY77 0x18
+#define GG_DCC7_INFO 0x1f
+#define GG_DCC7_NEW 0x20
+#define GG_DCC7_ACCEPT 0x21
+#define GG_DCC7_REJECT 0x22
+#define GG_DCC7_ID_REPLY 0x23
+#define GG_DCC7_ID_ABORTED 0x25
+#define GG_XML_EVENT 0x27
+#define GG_STATUS80BETA 0x2a
+#define GG_NOTIFY_REPLY80BETA 0x2b
+#define GG_XML_ACTION 0x2c
+#define GG_RECV_MSG80 0x2e
+#define GG_USERLIST_REPLY80 0x30
+#define GG_LOGIN_OK80 0x35
+#define GG_STATUS80 0x36
+#define GG_NOTIFY_REPLY80 0x37
+#define GG_USERLIST100_REPLY 0x41
+#define GG_LOGIN80_FAILED 0x43
+#define GG_USER_DATA 0x44
+#define GG_TYPING_NOTIFY 0x59
+#define GG_OWN_MESSAGE 0x5A
+#define GG_OWN_RESOURCE_INFO 0x5B
+#define GG_USERLIST100_VERSION 0x5C
+
+
+#define GG_TYPE_VS(x) { x, #x }
/* original (GG_*) names likes in documentation (http://toxygen.net/libgadu/protocol/#ch1.16) */
static const value_string gadu_gadu_packets_type_recv[] = {
- { 0x01, "GG_WELCOME" },
- { 0x05, "GG_SEND_MSG_ACK" },
- { 0x09, "GG_LOGIN_FAILED" },
- { 0x0b, "GG_DISCONNECTING" },
- { 0x0d, "GG_DISCONNECT_ACK" },
- { 0x0e, "GG_PUBDIR50_REPLY" },
- { 0x14, "GG_NEED_EMAIL" },
- { 0x1f, "GG_DCC7_INFO" },
- { 0x20, "GG_DCC7_NEW" },
- { 0x21, "GG_DCC7_ACCEPT" },
- { 0x22, "GG_DCC7_REJECT" },
- { 0x23, "GG_DCC7_ID_REPLY" },
- { 0x25, "GG_DCC7_ABORTED" },
- { 0x27, "GG_XML_EVENT" },
- { 0x2c, "GG_XML_ACTION" },
- { 0x2e, "GG_RECV_MSG80" },
- { 0x35, "GG_LOGIN_OK80" },
- { 0x36, "GG_STATUS80" },
- { 0x37, "GG_NOTIFY_REPLY80" },
- { 0x41, "GG_USERLIST_REPLY100" },
- { 0x44, "GG_USER_DATA" },
- { 0x59, "GG_TYPING_NOTIFY" },
- { 0x5a, "GG_OWN_MESSAGE" },
- { 0x5b, "GG_OWN_RESOURCE_INFO" },
+ GG_TYPE_VS(GG_WELCOME),
+ GG_TYPE_VS(GG_STATUS),
+ GG_TYPE_VS(GG_LOGIN_OK),
+ GG_TYPE_VS(GG_SEND_MSG_ACK),
+ GG_TYPE_VS(GG_PONG),
+ GG_TYPE_VS(GG_PING),
+ GG_TYPE_VS(GG_LOGIN_FAILED),
+ GG_TYPE_VS(GG_RECV_MSG),
+ GG_TYPE_VS(GG_DISCONNECTING),
+ GG_TYPE_VS(GG_NOTIFY_REPLY),
+ GG_TYPE_VS(GG_DISCONNECT_ACK),
+ GG_TYPE_VS(GG_PUBDIR50_REPLY),
+ GG_TYPE_VS(GG_STATUS60),
+ GG_TYPE_VS(GG_USERLIST_REPLY),
+ GG_TYPE_VS(GG_NOTIFY_REPLY60),
+ GG_TYPE_VS(GG_NEED_EMAIL),
+ GG_TYPE_VS(GG_LOGIN_HASH_TYPE_INVALID),
+ GG_TYPE_VS(GG_STATUS77),
+ GG_TYPE_VS(GG_NOTIFY_REPLY77),
+ GG_TYPE_VS(GG_DCC7_INFO),
+ GG_TYPE_VS(GG_DCC7_NEW),
+ GG_TYPE_VS(GG_DCC7_ACCEPT),
+ GG_TYPE_VS(GG_DCC7_REJECT),
+ GG_TYPE_VS(GG_DCC7_ID_REPLY),
+ GG_TYPE_VS(GG_DCC7_ID_ABORTED),
+ GG_TYPE_VS(GG_XML_EVENT),
+ GG_TYPE_VS(GG_STATUS80BETA),
+ GG_TYPE_VS(GG_NOTIFY_REPLY80BETA),
+ GG_TYPE_VS(GG_XML_ACTION),
+ GG_TYPE_VS(GG_RECV_MSG80),
+ GG_TYPE_VS(GG_USERLIST_REPLY80),
+ GG_TYPE_VS(GG_LOGIN_OK80),
+ GG_TYPE_VS(GG_STATUS80),
+ GG_TYPE_VS(GG_NOTIFY_REPLY80),
+ GG_TYPE_VS(GG_USERLIST100_REPLY),
+ GG_TYPE_VS(GG_LOGIN80_FAILED),
+ GG_TYPE_VS(GG_USER_DATA),
+ GG_TYPE_VS(GG_TYPING_NOTIFY),
+ GG_TYPE_VS(GG_OWN_MESSAGE),
+ GG_TYPE_VS(GG_OWN_RESOURCE_INFO),
+ GG_TYPE_VS(GG_USERLIST100_VERSION),
{ 0, NULL }
};
+#define GG_NEW_STATUS 0x02
+#define GG_PONG 0x07
+#define GG_PING 0x08
+#define GG_SEND_MSG 0x0b
+#define GG_LOGIN 0x0c
+#define GG_ADD_NOTIFY 0x0d
+#define GG_REMOVE_NOTIFY 0x0e
+#define GG_NOTIFY_FIRST 0x0f
+#define GG_NOTIFY_LAST 0x10
+#define GG_LIST_EMPTY 0x12
+#define GG_LOGIN_EXT 0x13
+#define GG_PUBDIR50_REQUEST 0x14
+#define GG_LOGIN60 0x15
+#define GG_USERLIST_REQUEST 0x16
+#define GG_LOGIN70 0x19
+#define GG_DCC7_INFO 0x1f
+#define GG_DCC7_NEW 0x20
+#define GG_DCC7_ACCEPT 0x21
+#define GG_DCC7_REJECT 0x22
+#define GG_DCC7_ID_REQUEST 0x23
+#define GG_DCC7_ID_DUNNO1 0x24
+#define GG_DCC7_ID_ABORT 0x25
+#define GG_NEW_STATUS80BETA 0x28
+#define GG_LOGIN80BETA 0x29
+#define GG_SEND_MSG80 0x2d
+#define GG_USERLIST_REQUEST80 0x2f
+#define GG_LOGIN80 0x31
+#define GG_NEW_STATUS80 0x38
+#define GG_USERLIST100_REQUEST 0x40
+#define GG_RECV_MSG_ACK 0x46
+#define GG_TYPING_NOTIFY 0x59
+#define GG_OWN_DISCONNECT 0x62
+
static const value_string gadu_gadu_packets_type_send[] = {
- { 0x08, "GG_PING" },
- { 0x0d, "GG_ADD_NOTIFY" },
- { 0x0e, "GG_REMOVE_NOTIFY" },
- { 0x0f, "GG_NOTIFY_FIRST" },
- { 0x10, "GG_NOTIFY_LAST" },
- { 0x12, "GG_LIST_EMPTY" },
- { 0x14, "GG_PUBDIR50_REQUEST" },
- { 0x1f, "GG_DCC7_INFO" },
- { 0x20, "GG_DCC7_NEW" },
- { 0x21, "GG_DCC7_ACCEPT" },
- { 0x22, "GG_DCC7_REJECT" },
- { 0x23, "GG_DCC7_ID_REQUEST" },
- { 0x25, "GG_DCC7_ABORT" },
- { 0x2d, "GG_SEND_MSG80" },
- { 0x31, "GG_LOGIN80" },
- { 0x38, "GG_NEW_STATUS80" },
- { 0x40, "GG_USERLIST_REQUEST100" },
- { 0x46, "GG_RECV_MSG_ACK" },
- { 0x59, "GG_TYPING_NOTIFY" },
- { 0x62, "GG_OWN_DISCONNECT" },
+ GG_TYPE_VS(GG_NEW_STATUS),
+ GG_TYPE_VS(GG_PONG),
+ GG_TYPE_VS(GG_PING),
+ GG_TYPE_VS(GG_SEND_MSG),
+ GG_TYPE_VS(GG_LOGIN),
+ GG_TYPE_VS(GG_ADD_NOTIFY),
+ GG_TYPE_VS(GG_REMOVE_NOTIFY),
+ GG_TYPE_VS(GG_NOTIFY_FIRST),
+ GG_TYPE_VS(GG_NOTIFY_LAST),
+ GG_TYPE_VS(GG_LIST_EMPTY),
+ GG_TYPE_VS(GG_LOGIN_EXT),
+ GG_TYPE_VS(GG_PUBDIR50_REQUEST),
+ GG_TYPE_VS(GG_LOGIN60),
+ GG_TYPE_VS(GG_USERLIST_REQUEST),
+ GG_TYPE_VS(GG_LOGIN70),
+ GG_TYPE_VS(GG_DCC7_INFO),
+ GG_TYPE_VS(GG_DCC7_NEW),
+ GG_TYPE_VS(GG_DCC7_ACCEPT),
+ GG_TYPE_VS(GG_DCC7_REJECT),
+ GG_TYPE_VS(GG_DCC7_ID_REQUEST),
+ GG_TYPE_VS(GG_DCC7_ID_DUNNO1),
+ GG_TYPE_VS(GG_DCC7_ID_ABORT),
+ GG_TYPE_VS(GG_NEW_STATUS80BETA),
+ GG_TYPE_VS(GG_LOGIN80BETA),
+ GG_TYPE_VS(GG_SEND_MSG80),
+ GG_TYPE_VS(GG_USERLIST_REQUEST80),
+ GG_TYPE_VS(GG_LOGIN80),
+ GG_TYPE_VS(GG_NEW_STATUS80),
+ GG_TYPE_VS(GG_USERLIST100_REQUEST),
+ GG_TYPE_VS(GG_RECV_MSG_ACK),
+ GG_TYPE_VS(GG_TYPING_NOTIFY),
+ GG_TYPE_VS(GG_OWN_DISCONNECT),
{ 0, NULL }
};
-static guint
-get_gadu_gadu_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
+static const value_string gadu_gadu_msg_ack_status_vals[] = {
+ { 0x01, "Message blocked" },
+ { 0x02, "Message delivered" },
+ { 0x03, "Message queued" },
+ { 0x04, "Message not delivered (queue full)" },
+ { 0x06, "CTCP Message not delivered" },
+ { 0, NULL }
+};
+
+#define GG_STATUS_NOT_AVAIL 0x01
+#define GG_STATUS_NOT_AVAIL_DESCR 0x15
+#define GG_STATUS_FFC 0x17
+#define GG_STATUS_FFC_DESCR 0x18
+#define GG_STATUS_AVAIL 0x02
+#define GG_STATUS_AVAIL_DESCR 0x04
+#define GG_STATUS_BUSY 0x03
+#define GG_STATUS_BUSY_DESCR 0x05
+#define GG_STATUS_DND 0x21
+#define GG_STATUS_DND_DESCR 0x22
+#define GG_STATUS_INVISIBLE 0x14
+#define GG_STATUS_INVISIBLE_DESCR 0x16
+#define GG_STATUS_BLOCKED 0x06
+
+#define GG_LOGIN_HASH_GG32 0x01
+#define GG_LOGIN_HASH_SHA1 0x02
+
+static const value_string gadu_gadu_hash_type_vals[] = {
+ { GG_LOGIN_HASH_GG32, "GG32 hash" },
+ { GG_LOGIN_HASH_SHA1, "SHA1 hash" },
+ { 0, NULL }
+};
+
+#define GG_USERLIST_PUT 0x00
+#define GG_USERLIST_PUT_MORE 0x01
+#define GG_USERLIST_GET 0x02
+
+static const value_string gadu_gadu_userlist_request_type_vals[] = {
+ { GG_USERLIST_PUT, "Userlist put" },
+ { GG_USERLIST_PUT_MORE, "Userlist put (more)" },
+ { GG_USERLIST_GET, "Userlist get" },
+ { 0, NULL }
+};
+
+#define GG_USERLIST_PUT_REPLY 0x00
+#define GG_USERLIST_PUT_MORE_REPLY 0x02
+#define GG_USERLIST_GET_REPLY 0x06
+#define GG_USERLIST_GET_MORE_REPLY 0x04
+
+static const value_string gadu_gadu_userlist_reply_type_vals[] = {
+ { GG_USERLIST_PUT_REPLY, "Userlist put" },
+ { GG_USERLIST_PUT_MORE_REPLY, "Userlist put (more)" },
+ { GG_USERLIST_GET_REPLY, "Userlist get" },
+ { GG_USERLIST_GET_MORE_REPLY, "Userlist get (more)" },
+ { 0, NULL }
+};
+
+/* XXX, add compatible libgadu versions? */
+static const value_string gadu_gadu_version_vals[] = {
+ { 0x2e, "Gadu-Gadu 8.0 (build 8283)" },
+ { 0x2d, "Gadu-Gadu 8.0 (build 4881)" },
+ { 0x2a, "Gadu-Gadu 7.7 (build 3315)" },
+ { 0x29, "Gadu-Gadu 7.6 (build 1688)" },
+ { 0x28, "Gadu-Gadu 7.5.0 (build 2201)" },
+ { 0x27, "Gadu-Gadu 7.0 (build 22)" },
+ { 0x26, "Gadu-Gadu 7.0 (build 20)" },
+ { 0x25, "Gadu-Gadu 7.0 (build 1)" },
+ { 0x24, "Gadu-Gadu 6.1 (build 155) or 7.6 (build 1359)" },
+ { 0x22, "Gadu-Gadu 6.0 (build 140)" },
+ { 0x21, "Gadu-Gadu 6.0 (build 133)" },
+ { 0x20, "Gadu-Gadu 6.0" },
+ { 0x1e, "Gadu-Gadu 5.7 beta (build 121)" },
+ { 0x1c, "Gadu_Gadu 5.7 beta" },
+ { 0x1b, "Gadu-Gadu 5.0.5" },
+ { 0x19, "Gadu-Gadu 5.0.3" },
+ { 0x18, "Gadu-Gadu 5.0.1, 5.0.0, 4.9.3" },
+ { 0x17, "Gadu-Gadu 4.9.2" },
+ { 0x16, "Gadu-Gadu 4.9.1" },
+ { 0x15, "Gadu-Gadu 4.8.9" },
+ { 0x14, "Gadu-Gadu 4.8.3, 4.8.1" },
+ { 0x11, "Gadu-Gadu 4.6.10, 4.6.1" },
+ { 0x10, "Gadu-Gadu 4.5.22, 4.5.21, 4.5.19, 4.5.17, 4.5.15" },
+ { 0x0f, "Gadu-Gadu 4.5.12" },
+ { 0x0b, "Gadu-Gadu 4.0.30, 4.0.29, 4.0.28, 4.0.25" },
+ { 0, NULL }
+};
+
+struct gadu_gadu_conv_data {
+ guint32 uin; /* uin from login packet */
+};
+
+static struct gadu_gadu_conv_data *
+gadu_gadu_create_conversation(packet_info *pinfo, guint32 uin)
{
- guint32 len = tvb_get_letohl(tvb, offset + 4);
+ conversation_t *conv;
+ struct gadu_gadu_conv_data *gg_conv;
- return len + 8;
+ conv = find_or_create_conversation(pinfo);
+ gg_conv = conversation_get_proto_data(conv, proto_gadu_gadu);
+ if (!gg_conv) {
+ gg_conv = se_new(struct gadu_gadu_conv_data);
+ gg_conv->uin = uin;
+
+ conversation_add_proto_data(conv, proto_gadu_gadu, gg_conv);
+ }
+ /* assert(gg_conv->uin == uin); */
+ return gg_conv;
+}
+
+static struct gadu_gadu_conv_data *
+gadu_gadu_get_conversation_data(packet_info *pinfo)
+{
+ conversation_t *conv;
+
+ conv = find_conversation(pinfo->fd->num, &pinfo->src, &pinfo->dst, pinfo->ptype, pinfo->srcport, pinfo->destport, 0);
+ if (conv)
+ return conversation_get_proto_data(conv, proto_gadu_gadu);
+ return NULL;
+}
+
+static gboolean
+gadu_gadu_status_has_descr(int status)
+{
+ return
+ (status == GG_STATUS_NOT_AVAIL_DESCR) ||
+ (status == GG_STATUS_FFC_DESCR) ||
+ (status == GG_STATUS_AVAIL_DESCR) ||
+ (status == GG_STATUS_BUSY_DESCR) ||
+ (status == GG_STATUS_DND_DESCR) ||
+ (status == GG_STATUS_INVISIBLE_DESCR);
+}
+
+static int
+dissect_gadu_gadu_stringz_cp1250(tvbuff_t *tvb, int hfindex, proto_tree *tree, int offset)
+{
+ static const gunichar2 table_cp1250[] = {
+ 0x20ac, 0xFFFD, 0x201a, 0xFFFD, 0x201e, 0x2026, 0x2020, 0x2021, /* 0x80 - */
+ 0xFFFD, 0x2030, 0x0160, 0x2039, 0x015a, 0x0164, 0x017d, 0x0179, /* - 0x8F */
+ 0xFFFD, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, /* 0x90 - */
+ 0xFFFD, 0x2122, 0x0161, 0x203a, 0x015b, 0x0165, 0x017e, 0x017a, /* - 0x9F */
+ 0x00a0, 0x02c7, 0x02d8, 0x0141, 0x00a4, 0x0104, 0x00a6, 0x00a7, /* 0xA0 - */
+ 0x00a8, 0x00a9, 0x015e, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x017b, /* - 0xAF */
+ 0x00b0, 0x00b1, 0x02db, 0x0142, 0x00b4, 0x00b5, 0x00b6, 0x00b7, /* 0xB0 - */
+ 0x00b8, 0x0105, 0x015f, 0x00bb, 0x013d, 0x02dd, 0x013e, 0x017c, /* - 0xBF */
+ 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, /* 0xC0 - */
+ 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, /* - 0xCF */
+ 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, /* 0xD0 - */
+ 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, /* - 0xDF */
+ 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, /* 0xE0 - */
+ 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, /* - 0xEF */
+ 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, /* 0xF0 - */
+ 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9, /* - 0xFF */
+ };
+
+ const int org_offset = offset;
+
+ GString *str;
+ guint8 ch;
+ gint len;
+
+ len = tvb_reported_length_remaining(tvb, offset);
+
+ str = g_string_new(NULL);
+
+ while ((len > 0) && (ch = tvb_get_guint8(tvb, offset))) {
+ if (ch < 0x80)
+ g_string_append_c(str, ch);
+ else
+ g_string_append_unichar(str, table_cp1250[ch-0x80]);
+ offset++;
+ len--;
+ }
+ if (len > 0)
+ offset++; /* NUL */
+
+ proto_tree_add_unicode_string(tree, hfindex, tvb, org_offset, offset - org_offset, str->str);
+ g_string_free(str, TRUE);
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_uint32_string_utf8(tvbuff_t *tvb, int hfindex, proto_tree *tree, int offset)
+{
+ const int org_offset = offset;
+
+ char *str;
+ guint32 len;
+
+ len = tvb_get_letohl(tvb, offset);
+ offset += 4;
+
+ if (len > 0) {
+ /* proto_item_fill_label() is broken for UTF-8 strings.
+ * It's using internally format_text() which doesn't support UTF-8
+ */
+ /* proto_tree_add_item(tree, hfindex, tvb, offset, len, ENC_UTF_8|ENC_NA); */
+
+ /* Use workaround */
+ str = tvb_get_ephemeral_string_enc(tvb, offset, len, ENC_UTF_8|ENC_NA);
+
+ } else
+ str = "";
+
+ offset += len;
+
+ proto_tree_add_unicode_string(tree, hfindex, tvb, org_offset, offset - org_offset, str);
+ return offset;
+}
+
+
+static int
+dissect_gadu_gadu_disconnecting(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree _U_, int offset)
+{
+ col_set_str(pinfo->cinfo, COL_INFO, "Disconnecting");
+
+ /* empty packet */
+
+ return offset;
+}
+
+
+static int
+dissect_gadu_gadu_disconnect_ack(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree _U_, int offset)
+{
+ col_set_str(pinfo->cinfo, COL_INFO, "Disconnect acknowledge (< 10.0)");
+
+ /* empty packet */
+
+ return offset;
+}
+
+static void *
+_tvb_memcpy_reverse(tvbuff_t *tvb, void *target, gint offset, size_t length)
+{
+ guint8 *t = (guint8 *) target;
+
+ while (length > 0) {
+ length--;
+ t[length] = tvb_get_guint8(tvb, offset);
+ offset++;
+ }
+ return target;
+}
+
+static int
+dissect_gadu_gadu_login_protocol(tvbuff_t *tvb, proto_tree *tree, int offset)
+{
+ proto_item *ti;
+
+ guint32 protocol;
+
+ protocol = tvb_get_letohl(tvb, offset) & 0xff;
+ proto_tree_add_item(tree, hf_gadu_gadu_login_protocol, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ ti = proto_tree_add_string(tree, hf_gadu_gadu_login_version, tvb, offset, 4, val_to_str(protocol, gadu_gadu_version_vals, "Unknown (0x%x)"));
+ PROTO_ITEM_SET_GENERATED(ti);
+ offset += 4;
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_login(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+{
+ proto_item *ti;
+
+ guint32 uin;
+ guint8 hash[4];
+
+ col_set_str(pinfo->cinfo, COL_INFO, "Login request (< 6.0)");
+
+ uin = tvb_get_letohl(tvb, offset);
+ gadu_gadu_create_conversation(pinfo, uin);
+
+ proto_tree_add_uint(tree, hf_gadu_gadu_login_uin, tvb, offset, 4, uin);
+ offset += 4;
+
+ ti = proto_tree_add_uint(tree, hf_gadu_gadu_login_hash_type, tvb, 0, 0, GG_LOGIN_HASH_GG32);
+ PROTO_ITEM_SET_GENERATED(ti);
+
+ /* hash is 32-bit number written in LE */
+ _tvb_memcpy_reverse(tvb, hash, offset, 4);
+ proto_tree_add_bytes_format_value(tree, hf_gadu_gadu_login_hash, tvb, offset, 4, hash, "0x%.8x", tvb_get_letohl(tvb, offset));
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_login_status, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ offset = dissect_gadu_gadu_login_protocol(tvb, tree, offset);
+
+ proto_tree_add_item(tree, hf_gadu_gadu_login_local_ip, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_login_local_port, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_login_hash(tvbuff_t *tvb, proto_tree *tree, int offset)
+{
+ guint8 hash_type;
+
+ guint8 hash[4];
+ int i;
+
+ hash_type = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_gadu_gadu_login_hash_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+
+ switch (hash_type) {
+ case GG_LOGIN_HASH_GG32:
+ /* hash is 32-bit number written in LE */
+ _tvb_memcpy_reverse(tvb, hash, offset, 4);
+ proto_tree_add_bytes_format_value(tree, hf_gadu_gadu_login_hash, tvb, offset, 4, hash, "0x%.8x", tvb_get_letohl(tvb, offset));
+ for (i = 4; i < 64; i++) {
+ if (tvb_get_guint8(tvb, offset+i)) {
+ proto_tree_add_item(tree, hf_gadu_gadu_data, tvb, offset + 4, 64-4, ENC_NA);
+ break;
+ }
+ }
+ break;
+
+ case GG_LOGIN_HASH_SHA1:
+ proto_tree_add_item(tree, hf_gadu_gadu_login_hash, tvb, offset, 20, ENC_NA);
+ for (i = 20; i < 64; i++) {
+ if (tvb_get_guint8(tvb, offset+i)) {
+ proto_tree_add_item(tree, hf_gadu_gadu_data, tvb, offset + 20, 64-20, ENC_NA);
+ break;
+ }
+ }
+ break;
+
+ default:
+ proto_tree_add_item(tree, hf_gadu_gadu_data, tvb, offset, 64, ENC_NA);
+ break;
+ }
+ offset += 64;
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_login70(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+{
+ guint32 uin;
+
+ col_set_str(pinfo->cinfo, COL_INFO, "Login request (7.0)");
+
+ uin = tvb_get_letohl(tvb, offset) & ~(GG_ERA_OMNIX_MASK | GG_HAS_AUDIO_MASK);
+ gadu_gadu_create_conversation(pinfo, uin);
+
+ proto_tree_add_uint(tree, hf_gadu_gadu_login_uin, tvb, offset, 4, uin);
+ offset += 4;
+
+ offset = dissect_gadu_gadu_login_hash(tvb, tree, offset);
+
+ proto_tree_add_item(tree, hf_gadu_gadu_login_status, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ offset = dissect_gadu_gadu_login_protocol(tvb, tree, offset);
+
+ proto_tree_add_item(tree, hf_gadu_gadu_data, tvb, offset, 1, ENC_NA); /* 00 */
+ offset += 1;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_login_local_ip, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_login_local_port, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ /* XXX packet not fully dissected */
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_login80(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+{
+ guint32 uin;
+
+ col_set_str(pinfo->cinfo, COL_INFO, "Login request (8.0)");
+
+ uin = tvb_get_letohl(tvb, offset);
+ gadu_gadu_create_conversation(pinfo, uin);
+
+ proto_tree_add_item(tree, hf_gadu_gadu_login_uin, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_login80_lang, tvb, offset, 2, ENC_ASCII | ENC_NA);
+ offset += 2;
+
+ offset = dissect_gadu_gadu_login_hash(tvb, tree, offset);
+
+ proto_tree_add_item(tree, hf_gadu_gadu_login_status, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ /* XXX packet not fully dissected */
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_login_ok(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree _U_, int offset)
+{
+ col_set_str(pinfo->cinfo, COL_INFO, "Login success (< 8.0)");
+
+ /* not empty packet, but content unknown */
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_login_failed(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree _U_, int offset)
+{
+ col_set_str(pinfo->cinfo, COL_INFO, "Login fail (< 8.0)");
+
+ /* empty packet */
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_login_ok80(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree _U_, int offset)
+{
+ col_set_str(pinfo->cinfo, COL_INFO, "Login success (8.0)");
+
+ proto_tree_add_item(tree, hf_gadu_gadu_data, tvb, offset, 4, ENC_NA); /* 01 00 00 00 */
+ offset += 4;
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_login80_failed(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+{
+ col_set_str(pinfo->cinfo, COL_INFO, "Login fail (8.0)");
+
+ proto_tree_add_item(tree, hf_gadu_gadu_data, tvb, offset, 4, ENC_NA); /* 01 00 00 00 */
+ offset += 4;
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_msg_attr(tvbuff_t *tvb _U_, proto_tree *tree _U_, int offset)
+{
+ /* XXX, stub */
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_recv_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+{
+ struct gadu_gadu_conv_data *conv;
+ proto_item *ti;
+
+ col_set_str(pinfo->cinfo, COL_INFO, "Receive message (< 8.0)");
+
+ if ((conv = gadu_gadu_get_conversation_data(pinfo))) {
+ ti = proto_tree_add_uint(tree, hf_gadu_gadu_msg_recipient, tvb, 0, 0, conv->uin);
+ PROTO_ITEM_SET_GENERATED(ti);
+
+ ti = proto_tree_add_uint(tree, hf_gadu_gadu_msg_uin, tvb, 0, 0, conv->uin);
+ PROTO_ITEM_SET_GENERATED(ti);
+ PROTO_ITEM_SET_HIDDEN(ti);
+ }
+
+ ti = proto_tree_add_item(tree, hf_gadu_gadu_msg_uin, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ PROTO_ITEM_SET_HIDDEN(ti);
+ proto_tree_add_item(tree, hf_gadu_gadu_msg_sender, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_msg_seq, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_msg_time, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_msg_class, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ offset = dissect_gadu_gadu_stringz_cp1250(tvb, hf_gadu_gadu_msg_text, tree, offset);
+
+ offset = dissect_gadu_gadu_msg_attr(tvb, tree, offset);
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_send_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+{
+ struct gadu_gadu_conv_data *conv;
+ proto_item *ti;
+
+ col_set_str(pinfo->cinfo, COL_INFO, "Send message (< 8.0)");
+
+ ti = proto_tree_add_item(tree, hf_gadu_gadu_msg_uin, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ PROTO_ITEM_SET_HIDDEN(ti);
+ proto_tree_add_item(tree, hf_gadu_gadu_msg_recipient, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ if ((conv = gadu_gadu_get_conversation_data(pinfo))) {
+ ti = proto_tree_add_uint(tree, hf_gadu_gadu_msg_sender, tvb, 0, 0, conv->uin);
+ PROTO_ITEM_SET_GENERATED(ti);
+
+ ti = proto_tree_add_uint(tree, hf_gadu_gadu_msg_uin, tvb, 0, 0, conv->uin);
+ PROTO_ITEM_SET_GENERATED(ti);
+ PROTO_ITEM_SET_HIDDEN(ti);
+ }
+
+ proto_tree_add_item(tree, hf_gadu_gadu_msg_seq, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ ti = proto_tree_add_time(tree, hf_gadu_gadu_msg_time, tvb, 0, 0, &(pinfo->fd->abs_ts));
+ PROTO_ITEM_SET_GENERATED(ti);
+
+ proto_tree_add_item(tree, hf_gadu_gadu_msg_class, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ offset = dissect_gadu_gadu_stringz_cp1250(tvb, hf_gadu_gadu_msg_text, tree, offset);
+
+ offset = dissect_gadu_gadu_msg_attr(tvb, tree, offset);
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_recv_msg80(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+{
+ struct gadu_gadu_conv_data *conv;
+ proto_item *ti;
+
+ col_set_str(pinfo->cinfo, COL_INFO, "Receive message (8.0)");
+
+ if ((conv = gadu_gadu_get_conversation_data(pinfo))) {
+ ti = proto_tree_add_uint(tree, hf_gadu_gadu_msg_recipient, tvb, 0, 0, conv->uin);
+ PROTO_ITEM_SET_GENERATED(ti);
+
+ ti = proto_tree_add_uint(tree, hf_gadu_gadu_msg_uin, tvb, 0, 0, conv->uin);
+ PROTO_ITEM_SET_GENERATED(ti);
+ PROTO_ITEM_SET_HIDDEN(ti);
+ }
+
+ ti = proto_tree_add_item(tree, hf_gadu_gadu_msg_uin, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ PROTO_ITEM_SET_HIDDEN(ti);
+ proto_tree_add_item(tree, hf_gadu_gadu_msg_sender, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_msg_seq, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_msg_time, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_msg_class, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_msg80_offset_plain, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_msg80_offset_attr, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ /* XXX packet not fully dissected */
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_send_msg80(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+{
+ struct gadu_gadu_conv_data *conv;
+ proto_item *ti;
+
+ col_set_str(pinfo->cinfo, COL_INFO, "Send message (8.0)");
+
+ ti = proto_tree_add_item(tree, hf_gadu_gadu_msg_uin, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ PROTO_ITEM_SET_HIDDEN(ti);
+ proto_tree_add_item(tree, hf_gadu_gadu_msg_recipient, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ if ((conv = gadu_gadu_get_conversation_data(pinfo))) {
+ ti = proto_tree_add_uint(tree, hf_gadu_gadu_msg_sender, tvb, 0, 0, conv->uin);
+ PROTO_ITEM_SET_GENERATED(ti);
+
+ ti = proto_tree_add_uint(tree, hf_gadu_gadu_msg_uin, tvb, 0, 0, conv->uin);
+ PROTO_ITEM_SET_GENERATED(ti);
+ PROTO_ITEM_SET_HIDDEN(ti);
+ }
+
+ proto_tree_add_item(tree, hf_gadu_gadu_msg_seq, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ ti = proto_tree_add_time(tree, hf_gadu_gadu_msg_time, tvb, 0, 0, &(pinfo->fd->abs_ts));
+ PROTO_ITEM_SET_GENERATED(ti);
+
+ proto_tree_add_item(tree, hf_gadu_gadu_msg_class, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_msg80_offset_plain, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_msg80_offset_attr, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ /* XXX packet not fully dissected */
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_send_msg_ack(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+{
+ col_set_str(pinfo->cinfo, COL_INFO, "Message acknowledge");
+
+ proto_tree_add_item(tree, hf_gadu_gadu_msg_ack_status, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_msg_ack_recipient, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_msg_ack_seq, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_status60(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+{
+ guint32 uin;
+ guint8 status;
+
+ col_set_str(pinfo->cinfo, COL_INFO, "Receive status (6.0)");
+
+ uin = tvb_get_letohl(tvb, offset) & ~(GG_ERA_OMNIX_MASK | GG_HAS_AUDIO_MASK);
+ proto_tree_add_uint(tree, hf_gadu_gadu_status_uin, tvb, offset, 4, uin);
+ offset += 4;
+
+ status = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_gadu_gadu_status_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_status_ip, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_status_port, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_status_version, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_status_img_size, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_data, tvb, offset, 1, ENC_NA); /* 00 */
+ offset += 1;
+
+ if (gadu_gadu_status_has_descr(status))
+ offset = dissect_gadu_gadu_stringz_cp1250(tvb, hf_gadu_gadu_status_descr, tree, offset);
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_status77(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+{
+ guint32 uin;
+ guint8 status;
+
+ col_set_str(pinfo->cinfo, COL_INFO, "Receive status (7.7)");
+
+ uin = tvb_get_letohl(tvb, offset) & ~(GG_ERA_OMNIX_MASK | GG_HAS_AUDIO_MASK);
+ proto_tree_add_uint(tree, hf_gadu_gadu_status_uin, tvb, offset, 4, uin);
+ offset += 4;
+
+ status = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_gadu_gadu_status_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_status_ip, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_status_port, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_status_version, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_status_img_size, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_data, tvb, offset, 1, ENC_NA); /* 00 */
+ offset += 1;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_data, tvb, offset, 4, ENC_NA);
+ offset += 4;
+
+ if (gadu_gadu_status_has_descr(status))
+ offset = dissect_gadu_gadu_stringz_cp1250(tvb, hf_gadu_gadu_status_descr, tree, offset);
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_status80(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+{
+ col_set_str(pinfo->cinfo, COL_INFO, "Receive status (8.0)");
+
+ proto_tree_add_item(tree, hf_gadu_gadu_status_uin, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_status_status, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_data, tvb, offset, 4, ENC_NA);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_status_ip, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_status_port, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_status_img_size, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_data, tvb, offset, 1, ENC_NA);
+ offset += 1;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_data, tvb, offset, 4, ENC_NA);
+ offset += 4;
+
+ offset = dissect_gadu_gadu_uint32_string_utf8(tvb, hf_gadu_gadu_status_descr, tree, offset);
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_notify_reply80(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree _U_, int offset)
+{
+ col_set_str(pinfo->cinfo, COL_INFO, "Receive status list (8.0)");
+
+ /* XXX packet not fully dissected */
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_new_status(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+{
+ guint32 status;
+
+ col_set_str(pinfo->cinfo, COL_INFO, "New status (< 8.0)");
+
+ status = tvb_get_letohl(tvb, offset);
+ proto_tree_add_item(tree, hf_gadu_gadu_new_status_status, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ if (gadu_gadu_status_has_descr(status & 0xff))
+ offset = dissect_gadu_gadu_stringz_cp1250(tvb, hf_gadu_gadu_status_descr, tree, offset);
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_new_status80(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+{
+ col_set_str(pinfo->cinfo, COL_INFO, "New status (8.0)");
+
+ proto_tree_add_item(tree, hf_gadu_gadu_new_status_status, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_data, tvb, offset, 4, ENC_NA);
+ offset += 4;
+
+ offset = dissect_gadu_gadu_uint32_string_utf8(tvb, hf_gadu_gadu_new_status_desc, tree, offset);
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_list_empty(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree _U_, int offset)
+{
+ col_set_str(pinfo->cinfo, COL_INFO, "Notify list (empty)");
+
+ /* empty packet */
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_add_notify(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+{
+ col_set_str(pinfo->cinfo, COL_INFO, "Notify list add");
+
+ proto_tree_add_item(tree, hf_gadu_gadu_contact_uin, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_contact_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_remove_notify(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+{
+ col_set_str(pinfo->cinfo, COL_INFO, "Notify list remove");
+
+ proto_tree_add_item(tree, hf_gadu_gadu_contact_uin, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_gadu_gadu_contact_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_notify_common(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset)
+{
+ proto_tree *contact_tree;
+ proto_item *ti;
+
+ while (tvb_reported_length_remaining(tvb, offset) >= 4+1) {
+ guint32 uin = tvb_get_letohl(tvb, offset);
+
+ ti = proto_tree_add_text(tree, tvb, offset, 5, "Contact: %u", uin);
+ contact_tree = proto_item_add_subtree(ti, ett_gadu_gadu_contact);
+
+ proto_tree_add_item(contact_tree, hf_gadu_gadu_contact_uin, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(contact_tree, hf_gadu_gadu_contact_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+ }
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_notify_first(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+{
+ col_set_str(pinfo->cinfo, COL_INFO, "Notify list");
+
+ return dissect_gadu_gadu_notify_common(tvb, pinfo, tree, offset);
+}
+
+static int
+dissect_gadu_gadu_notify_last(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+{
+ col_set_str(pinfo->cinfo, COL_INFO, "Notify list (last)");
+
+ return dissect_gadu_gadu_notify_common(tvb, pinfo, tree, offset);
+}
+
+static int
+dissect_gadu_gadu_ping(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree _U_, int offset)
+{
+ col_set_str(pinfo->cinfo, COL_INFO, "Ping");
+
+ /* empty packet */
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_welcome(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+{
+ col_set_str(pinfo->cinfo, COL_INFO, "Welcome");
+
+ proto_tree_add_item(tree, hf_gadu_gadu_welcome_seed, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_userlist80_compressed(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+{
+ int remain = tvb_reported_length_remaining(tvb, offset);
+ tvbuff_t *uncomp_tvb;
+
+ if (remain <= 0)
+ return offset;
+
+ if ((uncomp_tvb = tvb_child_uncompress(tvb, tvb, offset, remain))) {
+ proto_tree_add_text(tree, tvb, offset, remain, "Userlist XML data: [Decompression succeeded]");
+
+ add_new_data_source(pinfo, uncomp_tvb, "Uncompressed userlist");
+ call_dissector_only(xml_handle, uncomp_tvb, pinfo, tree);
+ } else
+ proto_tree_add_text(tree, tvb, offset, remain, "Userlist XML data: [Error: Decompression failed] (or no libz)");
+
+ offset += remain;
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_userlist_request80(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+{
+ guint8 type;
+
+ col_set_str(pinfo->cinfo, COL_INFO, "Userlist request (8.0)");
+
+ type = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_gadu_gadu_userlist_request_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+
+ switch (type) {
+ case GG_USERLIST_PUT:
+ offset = dissect_gadu_gadu_userlist80_compressed(tvb, pinfo, tree, offset);
+ break;
+ }
+
+ return offset;
+}
+
+static int
+dissect_gadu_gadu_userlist_reply80(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+{
+ guint8 type;
+
+ col_set_str(pinfo->cinfo, COL_INFO, "Userlist reply (8.0)");
+
+ type = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_gadu_gadu_userlist_reply_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+
+ switch (type) {
+ case GG_USERLIST_GET_REPLY:
+ offset = dissect_gadu_gadu_userlist80_compressed(tvb, pinfo, tree, offset);
+ break;
+ }
+
+ return offset;
}
static void
dissect_gadu_gadu_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_tree *gadu_gadu_tree = NULL;
- proto_item *ti;
- int offset;
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "Gadu-Gadu");
+ int offset = 0;
+ guint32 pkt_type;
- if (pinfo->srcport == TCP_PORT_GADU_GADU && pinfo->destport == TCP_PORT_GADU_GADU)
- pinfo->p2p_dir = P2P_DIR_UNKNOWN;
- else if (pinfo->srcport == TCP_PORT_GADU_GADU)
+ if (pinfo->srcport == pinfo->match_uint && pinfo->destport != pinfo->match_uint)
pinfo->p2p_dir = P2P_DIR_RECV;
- else if (pinfo->destport == TCP_PORT_GADU_GADU)
+ else if (pinfo->srcport != pinfo->match_uint && pinfo->destport == pinfo->match_uint)
pinfo->p2p_dir = P2P_DIR_SENT;
+ else
+ return;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "Gadu-Gadu");
+ col_clear(pinfo->cinfo, COL_INFO);
if (tree) {
- ti = proto_tree_add_item(tree, proto_gadu_gadu, tvb, 0, -1, ENC_NA);
+ proto_item *ti = proto_tree_add_item(tree, proto_gadu_gadu, tvb, 0, -1, ENC_NA);
gadu_gadu_tree = proto_item_add_subtree(ti, ett_gadu_gadu);
-
- proto_tree_add_item(gadu_gadu_tree, (pinfo->p2p_dir == P2P_DIR_RECV) ? hf_gadu_gadu_header_type_recv : hf_gadu_gadu_header_type_send, tvb, 0, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(gadu_gadu_tree, hf_gadu_gadu_header_length, tvb, 4, 4, ENC_LITTLE_ENDIAN);
}
- offset = 8;
+ pkt_type = tvb_get_letohl(tvb, offset);
+ proto_tree_add_item(gadu_gadu_tree, (pinfo->p2p_dir == P2P_DIR_RECV) ? hf_gadu_gadu_header_type_recv : hf_gadu_gadu_header_type_send, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+ proto_tree_add_item(gadu_gadu_tree, hf_gadu_gadu_header_length, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ if (pinfo->p2p_dir == P2P_DIR_RECV) {
+ switch (pkt_type) {
+ case GG_DISCONNECTING:
+ offset = dissect_gadu_gadu_disconnecting(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_DISCONNECT_ACK:
+ offset = dissect_gadu_gadu_disconnect_ack(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_LOGIN_OK:
+ offset = dissect_gadu_gadu_login_ok(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_LOGIN_OK80:
+ offset = dissect_gadu_gadu_login_ok80(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_LOGIN_FAILED:
+ offset = dissect_gadu_gadu_login_failed(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_LOGIN80_FAILED:
+ offset = dissect_gadu_gadu_login80_failed(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_RECV_MSG:
+ offset = dissect_gadu_gadu_recv_msg(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_RECV_MSG80:
+ offset = dissect_gadu_gadu_recv_msg80(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_SEND_MSG_ACK:
+ /* GG_SEND_MSG_ACK is received by client */
+ offset = dissect_gadu_gadu_send_msg_ack(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_STATUS60:
+ offset = dissect_gadu_gadu_status60(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_STATUS77:
+ offset = dissect_gadu_gadu_status77(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_STATUS80:
+ offset = dissect_gadu_gadu_status80(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_NOTIFY_REPLY80:
+ offset = dissect_gadu_gadu_notify_reply80(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_WELCOME:
+ offset = dissect_gadu_gadu_welcome(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_USERLIST_REPLY80:
+ offset = dissect_gadu_gadu_userlist_reply80(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ default:
+ {
+ const char *pkt_name = match_strval(pkt_type, gadu_gadu_packets_type_recv);
+
+ if (pkt_name)
+ col_set_str(pinfo->cinfo, COL_INFO, pkt_name);
+ else
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Unknown recv packet: %.2x", pkt_type);
+ break;
+ }
+ }
+
+ } else {
+ switch (pkt_type) {
+ case GG_LOGIN:
+ offset = dissect_gadu_gadu_login(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_LOGIN70:
+ offset = dissect_gadu_gadu_login70(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_LOGIN80:
+ offset = dissect_gadu_gadu_login80(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_LIST_EMPTY:
+ offset = dissect_gadu_gadu_list_empty(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_NOTIFY_FIRST:
+ offset = dissect_gadu_gadu_notify_first(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_NOTIFY_LAST:
+ offset = dissect_gadu_gadu_notify_last(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_ADD_NOTIFY:
+ offset = dissect_gadu_gadu_add_notify(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_REMOVE_NOTIFY:
+ offset = dissect_gadu_gadu_remove_notify(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_PING:
+ offset = dissect_gadu_gadu_ping(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_SEND_MSG:
+ offset = dissect_gadu_gadu_send_msg(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_SEND_MSG80:
+ offset = dissect_gadu_gadu_send_msg80(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_NEW_STATUS:
+ offset = dissect_gadu_gadu_new_status(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_NEW_STATUS80:
+ offset = dissect_gadu_gadu_new_status80(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ case GG_USERLIST_REQUEST80:
+ offset = dissect_gadu_gadu_userlist_request80(tvb, pinfo, gadu_gadu_tree, offset);
+ break;
+
+ default:
+ {
+ const char *pkt_name = match_strval(pkt_type, gadu_gadu_packets_type_send);
+
+ if (pkt_name)
+ col_set_str(pinfo->cinfo, COL_INFO, pkt_name);
+ else
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Unknown send packet: %.2x", pkt_type);
+ break;
+ }
+ }
+ }
/* for now display rest of data as FT_BYTES. */
- if (tvb_length_remaining(tvb, offset) > 0) {
+ if (tvb_reported_length_remaining(tvb, offset) > 0) {
proto_tree_add_item(gadu_gadu_tree, hf_gadu_gadu_data, tvb, offset, -1, ENC_NA);
}
}
+static guint
+get_gadu_gadu_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
+{
+ guint32 len = tvb_get_letohl(tvb, offset + 4);
+
+ return len + 8;
+}
+
static int
dissect_gadu_gadu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
@@ -154,7 +1402,7 @@ void
proto_register_gadu_gadu(void)
{
static hf_register_info hf[] = {
- /* header */
+ /* Header */
{ &hf_gadu_gadu_header_type_recv,
{ "Packet Type", "gadu-gadu.recv", FT_UINT32, BASE_HEX, VALS(gadu_gadu_packets_type_recv), 0x0, "Packet Type (recv)", HFILL }
},
@@ -164,14 +1412,130 @@ proto_register_gadu_gadu(void)
{ &hf_gadu_gadu_header_length,
{ "Packet Length", "gadu-gadu.len", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
- /* data */
+ /* Login common */
+ { &hf_gadu_gadu_login_uin,
+ { "Client UIN", "gadu-gadu.login.uin", FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_gadu_gadu_login_hash_type,
+ { "Login hash type", "gadu-gadu.login.hash_type", FT_UINT8, BASE_HEX, gadu_gadu_hash_type_vals, 0x00, NULL, HFILL }
+ },
+ { &hf_gadu_gadu_login_hash,
+ { "Login hash", "gadu-gadu.login.hash", FT_BYTES, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_gadu_gadu_login_status,
+ { "Client status", "gadu-gadu.login.status", FT_UINT32, BASE_HEX, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_gadu_gadu_login_protocol,
+ { "Client protocol", "gadu-gadu.login.protocol", FT_UINT32, BASE_HEX, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_gadu_gadu_login_version,
+ { "Client version", "gadu-gadu.login.version", FT_STRING, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_gadu_gadu_login_local_ip,
+ { "Client local IP", "gadu-gadu.login.local_ip", FT_IPv4, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_gadu_gadu_login_local_port,
+ { "Client local port", "gadu-gadu.login.local_port", FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ /* GG_LOGIN80 */
+ { &hf_gadu_gadu_login80_lang,
+ { "Client language", "gadu-gadu.login80.lang", FT_STRING, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ },
+ /* Message common */
+ { &hf_gadu_gadu_msg_uin,
+ { "Message sender or recipient", "gadu-gadu.msg.uin", FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_gadu_gadu_msg_sender,
+ { "Message sender", "gadu-gadu.msg.sender", FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_gadu_gadu_msg_recipient,
+ { "Message recipient", "gadu-gadu.msg.recipient", FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_gadu_gadu_msg_seq,
+ { "Message sequence number", "gadu-gadu.msg.seq", FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_gadu_gadu_msg_time,
+ { "Message time", "gadu-gadu.msg.time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0, NULL, HFILL }
+ },
+ { &hf_gadu_gadu_msg_class,
+ { "Message class", "gadu-gadu.msg.class", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
+ },
+ { &hf_gadu_gadu_msg_text,
+ { "Message text", "gadu-gadu.msg.text", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }
+ },
+ /* GG_RECV_MSG80, GG_SEND_MSG80 */
+ { &hf_gadu_gadu_msg80_offset_plain,
+ { "Message plaintext offset", "gadu-gadu.msg80.offset_plain", FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_gadu_gadu_msg80_offset_attr,
+ { "Message attribute offset", "gadu-gadu.msg80.offset_attributes", FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ /* Contact (notify) common */
+ { &hf_gadu_gadu_contact_uin,
+ { "UIN", "gadu-gadu.contact.uin", FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_gadu_gadu_contact_type,
+ { "Type", "gadu-gadu.contact.type", FT_UINT8, BASE_HEX, NULL, 0x00, NULL, HFILL }
+ },
+ /* Status common */
+ { &hf_gadu_gadu_status_uin,
+ { "UIN", "gadu-gadu.status.uin", FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_gadu_gadu_status_status,
+ { "Status", "gadu-gadu.status.status", FT_UINT32, BASE_HEX, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_gadu_gadu_status_ip,
+ { "IP", "gadu-gadu.status.remote_ip", FT_IPv4, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_gadu_gadu_status_port,
+ { "Port", "gadu-gadu.status.remote_port", FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_gadu_gadu_status_version,
+ { "Version", "gadu-gadu.status.version", FT_UINT8, BASE_HEX, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_gadu_gadu_status_img_size,
+ { "Image size", "gadu-gadu.status.image_size", FT_UINT8, BASE_DEC, NULL, 0x00, "Maximum image size in KB", HFILL }
+ },
+ { &hf_gadu_gadu_status_descr,
+ { "Description", "gadu-gadu.status.description", FT_STRINGZ, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ },
+ /* New status (setting status) common */
+ { &hf_gadu_gadu_new_status_status,
+ { "Status", "gadu-gadu.new_status.status", FT_UINT32, BASE_HEX, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_gadu_gadu_new_status_desc,
+ { "Description", "gadu-gadu.new_status.description", FT_STRINGZ, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ },
+ /* Userlist */
+ { &hf_gadu_gadu_userlist_request_type,
+ { "Request type", "gadu-gadu.userlist.request_type", FT_UINT32, BASE_HEX, gadu_gadu_userlist_request_type_vals, 0x00, NULL, HFILL }
+ },
+ { &hf_gadu_gadu_userlist_reply_type,
+ { "Reply type", "gadu-gadu.userlist.reply_type", FT_UINT32, BASE_HEX, gadu_gadu_userlist_reply_type_vals, 0x00, NULL, HFILL }
+ },
+ /* GG_WELCOME */
+ { &hf_gadu_gadu_welcome_seed,
+ { "Seed", "gadu-gadu.welcome.seed", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
+ },
+ /* GG_SEND_MSG_ACK */
+ { &hf_gadu_gadu_msg_ack_status,
+ { "Message status", "gadu-gadu.msg_ack.status", FT_UINT32, BASE_HEX, gadu_gadu_msg_ack_status_vals, 0x00, NULL, HFILL }
+ },
+ { &hf_gadu_gadu_msg_ack_recipient,
+ { "Message recipient", "gadu-gadu.msg_ack.recipient", FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_gadu_gadu_msg_ack_seq,
+ { "Message sequence number", "gadu-gadu.msg_ack.seq", FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ /* Not dissected data */
{ &hf_gadu_gadu_data,
{ "Packet Data", "gadu-gadu.data", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
};
static gint *ett[] = {
- &ett_gadu_gadu
+ &ett_gadu_gadu,
+ &ett_gadu_gadu_contact
};
module_t *gadu_gadu_module;
@@ -195,5 +1559,7 @@ proto_reg_handoff_gadu_gadu(void)
dissector_handle_t gadu_gadu_handle = new_create_dissector_handle(dissect_gadu_gadu, proto_gadu_gadu);
dissector_add_uint("tcp.port", TCP_PORT_GADU_GADU, gadu_gadu_handle);
+
+ xml_handle = find_dissector("xml");
}
diff --git a/epan/dissectors/packet-gdsdb.c b/epan/dissectors/packet-gdsdb.c
index a7d8bef059..86ab1f25d4 100644
--- a/epan/dissectors/packet-gdsdb.c
+++ b/epan/dissectors/packet-gdsdb.c
@@ -27,8 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
@@ -310,7 +308,7 @@ static const value_string gdsdb_opcode[] = {
{ op_close_blob, "Close blob" },
{ op_info_database, "Info database" },
{ op_info_request, "Info request" },
- { op_transaction, "Info transaction" },
+ { op_info_transaction, "Info transaction" },
{ op_info_blob, "Info blob" },
{ op_batch_segments, "Batch segments" },
{ op_mgr_set_affinity, "Mgr set affinity" },
@@ -347,7 +345,7 @@ static const value_string gdsdb_opcode[] = {
{ op_execute2, "Execute 2" },
{ op_insert, "Insert" },
{ op_sql_response, "Sql response" },
- { op_transact_response, "Transact" },
+ { op_transact, "Transact" },
{ op_transact_response, "Transact response" },
{ op_drop_database, "Drop database" },
{ op_service_attach, "Service attach" },
@@ -439,7 +437,7 @@ gdsdb_connect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset, 4, ENC_BIG_ENDIAN);
offset += 4;
proto_tree_add_item(tree, hf_gdsdb_connect_filename, tvb,
- offset, 4, ENC_ASCII|ENC_BIG_ENDIAN);
+ offset, 4, ENC_ASCII|ENC_NA);
length = tvb_get_ntohl(tvb, offset);
offset += length + 6;
proto_tree_add_item(tree, hf_gdsdb_connect_count, tvb,
@@ -447,7 +445,7 @@ gdsdb_connect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
count = tvb_get_ntohl(tvb, offset);
offset += 4;
proto_tree_add_item(tree, hf_gdsdb_connect_userid, tvb,
- offset, 4, ENC_ASCII|ENC_BIG_ENDIAN);
+ offset, 4, ENC_ASCII|ENC_NA);
length = tvb_get_ntohl(tvb, offset);
offset += length + 5;
for(i=0;i<count;i++){
@@ -546,7 +544,7 @@ gdsdb_attach(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
offset, 4, ENC_BIG_ENDIAN);
offset += 4;
proto_tree_add_item(tree, hf_gdsdb_attach_filename, tvb,
- offset, 4, ENC_ASCII|ENC_BIG_ENDIAN);
+ offset, 4, ENC_ASCII|ENC_NA);
length = tvb_get_ntohl(tvb, offset);
offset += length + 6;
proto_tree_add_uint_format_value(tree,
@@ -571,7 +569,7 @@ gdsdb_compile(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
offset, 4, ENC_BIG_ENDIAN);
offset += 4;
proto_tree_add_item(tree, hf_gdsdb_compile_blr, tvb,
- offset, 4, ENC_ASCII|ENC_BIG_ENDIAN);
+ offset, 4, ENC_ASCII|ENC_NA);
}
return tvb_length(tvb);
@@ -662,7 +660,7 @@ gdsdb_response(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
offset, 8, ENC_BIG_ENDIAN);
offset += 8;
proto_tree_add_item(tree, hf_gdsdb_response_data, tvb,
- offset, 4, ENC_ASCII|ENC_BIG_ENDIAN);
+ offset, 4, ENC_ASCII|ENC_NA);
length = tvb_get_ntohl(tvb, offset);
offset += length + 4;
proto_tree_add_item(tree, hf_gdsdb_response_status, tvb,
@@ -723,7 +721,7 @@ gdsdb_open_blob2(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
if (tree) {
offset = 4;
proto_tree_add_item(tree, hf_gdsdb_openblob2_bpb, tvb, offset,
- 4, ENC_ASCII|ENC_BIG_ENDIAN);
+ 4, ENC_ASCII|ENC_NA);
length = tvb_get_ntohl(tvb, offset);
offset += length + 6;
proto_tree_add_item(tree, hf_gdsdb_openblob_transaction, tvb,
@@ -827,7 +825,7 @@ gdsdb_info(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
offset += 4;
if(opcode == op_service_info) {
proto_tree_add_item(tree, hf_gdsdb_info_items, tvb,
- offset, 4, ENC_ASCII|ENC_BIG_ENDIAN);
+ offset, 4, ENC_ASCII|ENC_NA);
length = tvb_get_ntohl(tvb, offset);
offset += length + 6;
}
@@ -1035,7 +1033,7 @@ gdsdb_prepare(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
offset, 4, ENC_BIG_ENDIAN);
offset += 4;
proto_tree_add_item(tree, hf_gdsdb_prepare_querystr, tvb,
- offset, 4, ENC_ASCII|ENC_BIG_ENDIAN);
+ offset, 4, ENC_ASCII|ENC_NA);
length = tvb_get_ntohl(tvb, offset);
offset += length + 6;
proto_tree_add_uint_format_value(tree,
diff --git a/epan/dissectors/packet-gift.c b/epan/dissectors/packet-gift.c
index cda1dfd896..3b5b3cb115 100644
--- a/epan/dissectors/packet-gift.c
+++ b/epan/dissectors/packet-gift.c
@@ -29,8 +29,8 @@
# include "config.h"
#endif
-#include <stdlib.h>
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/strutil.h>
diff --git a/epan/dissectors/packet-giop.c b/epan/dissectors/packet-giop.c
index a13a932e73..f828e132a4 100644
--- a/epan/dissectors/packet-giop.c
+++ b/epan/dissectors/packet-giop.c
@@ -702,7 +702,7 @@ GHashTable *giop_complete_reply_hash = NULL; /* hash */
struct giop_module_key {
- gchar *module; /* module (interface?) name */
+ const gchar *module; /* module (interface?) name */
};
struct giop_module_val {
@@ -1063,7 +1063,7 @@ static guint32 giop_hash_module_hash(gconstpointer v) {
*
*/
-void register_giop_user_module(giop_sub_dissector_t *sub, gchar *name, gchar *module, int sub_proto) {
+void register_giop_user_module(giop_sub_dissector_t *sub, const gchar *name, const gchar *module, int sub_proto) {
struct giop_module_key module_key, *new_module_key;
struct giop_module_val *module_val = NULL;
diff --git a/epan/dissectors/packet-giop.h b/epan/dissectors/packet-giop.h
index 8816b51720..c3957c9ce8 100644
--- a/epan/dissectors/packet-giop.h
+++ b/epan/dissectors/packet-giop.h
@@ -136,8 +136,8 @@ extern void delete_giop_user(giop_sub_dissector_t *sub, gchar *name);
* This is for explicit dissection.
*/
-extern void register_giop_user_module(giop_sub_dissector_t *sub, gchar *name,
- gchar *module, int sub_proto);
+extern void register_giop_user_module(giop_sub_dissector_t *sub, const gchar *name,
+ const gchar *module, int sub_proto);
/*
* GIOP Users remove their module and interface names via this function.
diff --git a/epan/dissectors/packet-git.c b/epan/dissectors/packet-git.c
index a2700fb624..bd51496ff8 100644
--- a/epan/dissectors/packet-git.c
+++ b/epan/dissectors/packet-git.c
@@ -31,9 +31,9 @@
#endif
#include <stdio.h>
-#include <stdlib.h>
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/strutil.h>
#include <epan/prefs.h>
diff --git a/epan/dissectors/packet-gluster.h b/epan/dissectors/packet-gluster.h
new file mode 100644
index 0000000000..8d5827568c
--- /dev/null
+++ b/epan/dissectors/packet-gluster.h
@@ -0,0 +1,436 @@
+/* packet-gluster.h
+ * Header for gluster dissection
+ * Copyright 2012, Niels de Vos <ndevos@redhat.com>
+ * With contributions from:
+ * Shreedhara LG <shreedharlg@gmail.com>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ *
+ * References to source files point in general to the glusterfs sources.
+ * There is currently no RFC or other document where the protocol is
+ * completely described. The glusterfs sources can be found at:
+ * - http://git.gluster.com/?p=glusterfs.git
+ * - https://github.com/gluster/glusterfs
+ *
+ * The coding-style is roughly the same as the one use in the Linux kernel,
+ * see http://www.kernel.org/doc/Documentation/CodingStyle.
+ */
+
+#ifndef __PACKET_GLUSTER_H__
+#define __PACKET_GLUSTER_H__
+
+#define GLUSTER_PORT 24007
+
+/* most of this comes from rpc/rpc-lib/src/protocol-common.h
+ * Some versions are commented with a user-visible version, others are not.
+ * Some programs were introduced starting version 2.
+ *
+ * Older versions were removed from the sources.
+ * One patch that did this is at http://review.gluster.com/610
+ */
+#define GLUSTERD1_MGMT_PROGRAM 1298433
+/* only available in version 1 */
+
+#define GLUSTERFS_PROGRAM 4867634 /* same as GD_BRICK_PROGRAM */
+/* only available in version 1 (replaced by GD_BRICK_PROGRAM) */
+
+/* rpc/rpc-lib/src/xdr-common.h */
+#define GLUSTER_DUMP_PROGRAM 123451501
+/* only available in version 1 */
+
+#define GLUSTER_HNDSK_PROGRAM 14398633
+/* only available in version 1 (0.0.1) */
+
+#define GLUSTER_PMAP_PROGRAM 34123456
+/* only available in version 1 */
+
+#define GLUSTER_CBK_PROGRAM 52743234
+/* only available in version 1 (0.0.1) */
+
+#define GLUSTER3_1_FOP_PROGRAM 1298437
+/* available in version 310 (3.1.0) */
+
+#define GD_MGMT_PROGRAM 1238433
+/* available in version 1 and 2 */
+
+#define GD_FRIEND_PROGRAM 1238437
+/* only available in version 2 (0.0.2) */
+
+#define GLUSTER_CLI_PROGRAM 1238463
+/* available in version 1 (0.0.1) and 2 (0.0.2) */
+
+#define GD_BRICK_PROGRAM 4867634
+/* only available in version 2 (supersedes GLUSTERFS_PROGRAM) */
+
+/* GD_MGMT_PROGRAM */
+enum gf_mgmt_procnum {
+ GD_MGMT_NULL = 0,
+ GD_MGMT_PROBE_QUERY,
+ GD_MGMT_FRIEND_ADD,
+ GD_MGMT_CLUSTER_LOCK,
+ GD_MGMT_CLUSTER_UNLOCK,
+ GD_MGMT_STAGE_OP,
+ GD_MGMT_COMMIT_OP,
+ GD_MGMT_FRIEND_REMOVE,
+ GD_MGMT_FRIEND_UPDATE,
+ GD_MGMT_CLI_PROBE,
+ GD_MGMT_CLI_DEPROBE,
+ GD_MGMT_CLI_LIST_FRIENDS,
+ GD_MGMT_CLI_CREATE_VOLUME,
+ GD_MGMT_CLI_GET_VOLUME,
+ GD_MGMT_CLI_DELETE_VOLUME,
+ GD_MGMT_CLI_START_VOLUME,
+ GD_MGMT_CLI_STOP_VOLUME,
+ GD_MGMT_CLI_RENAME_VOLUME,
+ GD_MGMT_CLI_DEFRAG_VOLUME,
+ GD_MGMT_CLI_SET_VOLUME,
+ GD_MGMT_CLI_ADD_BRICK,
+ GD_MGMT_CLI_REMOVE_BRICK,
+ GD_MGMT_CLI_REPLACE_BRICK,
+ GD_MGMT_CLI_LOG_FILENAME,
+ GD_MGMT_CLI_LOG_LOCATE,
+ GD_MGMT_CLI_LOG_ROTATE,
+ GD_MGMT_CLI_SYNC_VOLUME,
+ GD_MGMT_CLI_RESET_VOLUME,
+ GD_MGMT_CLI_FSM_LOG,
+ GD_MGMT_CLI_GSYNC_SET,
+ GD_MGMT_CLI_PROFILE_VOLUME,
+ GD_MGMT_BRICK_OP,
+ GD_MGMT_CLI_LOG_LEVEL,
+ GD_MGMT_CLI_STATUS_VOLUME,
+ GD_MGMT_MAXVALUE
+};
+
+/* GLUSTER_CLI_PROGRAM */
+enum gluster_cli_procnum {
+ GLUSTER_CLI_NULL = 0,
+ GLUSTER_CLI_PROBE,
+ GLUSTER_CLI_DEPROBE,
+ GLUSTER_CLI_LIST_FRIENDS,
+ GLUSTER_CLI_CREATE_VOLUME,
+ GLUSTER_CLI_GET_VOLUME,
+ GLUSTER_CLI_GET_NEXT_VOLUME,
+ GLUSTER_CLI_DELETE_VOLUME,
+ GLUSTER_CLI_START_VOLUME,
+ GLUSTER_CLI_STOP_VOLUME,
+ GLUSTER_CLI_RENAME_VOLUME,
+ GLUSTER_CLI_DEFRAG_VOLUME,
+ GLUSTER_CLI_SET_VOLUME,
+ GLUSTER_CLI_ADD_BRICK,
+ GLUSTER_CLI_REMOVE_BRICK,
+ GLUSTER_CLI_REPLACE_BRICK,
+ GLUSTER_CLI_LOG_FILENAME,
+ GLUSTER_CLI_LOG_LOCATE,
+ GLUSTER_CLI_LOG_ROTATE,
+ GLUSTER_CLI_GETSPEC,
+ GLUSTER_CLI_PMAP_PORTBYBRICK,
+ GLUSTER_CLI_SYNC_VOLUME,
+ GLUSTER_CLI_RESET_VOLUME,
+ GLUSTER_CLI_FSM_LOG,
+ GLUSTER_CLI_GSYNC_SET,
+ GLUSTER_CLI_PROFILE_VOLUME,
+ GLUSTER_CLI_QUOTA,
+ GLUSTER_CLI_TOP_VOLUME,
+ GLUSTER_CLI_GETWD,
+ GLUSTER_CLI_LOG_LEVEL,
+ GLUSTER_CLI_STATUS_VOLUME,
+ GLUSTER_CLI_MOUNT,
+ GLUSTER_CLI_UMOUNT,
+ GLUSTER_CLI_HEAL_VOLUME,
+ GLUSTER_CLI_STATEDUMP_VOLUME,
+ GLUSTER_CLI_MAXVALUE
+};
+
+/* GLUSTER_CLI_PROGRAM 2 */
+enum gluster_cli_2_procnum {
+ GLUSTER_CLI_2_NULL = 0, /* 0 */
+ GLUSTER_CLI_2_PROBE,
+ GLUSTER_CLI_2_DEPROBE,
+ GLUSTER_CLI_2_LIST_FRIENDS,
+ GLUSTER_CLI_2_CREATE_VOLUME,
+ GLUSTER_CLI_2_GET_VOLUME,
+ GLUSTER_CLI_2_GET_NEXT_VOLUME,
+ GLUSTER_CLI_2_DELETE_VOLUME,
+ GLUSTER_CLI_2_START_VOLUME,
+ GLUSTER_CLI_2_STOP_VOLUME,
+ GLUSTER_CLI_2_RENAME_VOLUME,
+ GLUSTER_CLI_2_DEFRAG_VOLUME,
+ GLUSTER_CLI_2_SET_VOLUME,
+ GLUSTER_CLI_2_ADD_BRICK,
+ GLUSTER_CLI_2_REMOVE_BRICK,
+ GLUSTER_CLI_2_REPLACE_BRICK,
+ GLUSTER_CLI_2_LOG_ROTATE,
+ GLUSTER_CLI_2_GETSPEC,
+ GLUSTER_CLI_2_PMAP_PORTBYBRICK,
+ GLUSTER_CLI_2_SYNC_VOLUME,
+ GLUSTER_CLI_2_RESET_VOLUME,
+ GLUSTER_CLI_2_FSM_LOG,
+ GLUSTER_CLI_2_GSYNC_SET,
+ GLUSTER_CLI_2_PROFILE_VOLUME,
+ GLUSTER_CLI_2_QUOTA,
+ GLUSTER_CLI_2_TOP_VOLUME,
+ GLUSTER_CLI_2_GETWD,
+ GLUSTER_CLI_2_STATUS_VOLUME,
+ GLUSTER_CLI_2_STATUS_ALL,
+ GLUSTER_CLI_2_MOUNT,
+ GLUSTER_CLI_2_UMOUNT,
+ GLUSTER_CLI_2_HEAL_VOLUME,
+ GLUSTER_CLI_2_STATEDUMP_VOLUME,
+ GLUSTER_CLI_2_LIST_VOLUME,
+ GLUSTER_CLI_2_CLRLOCKS_VOLUME,
+ GLUSTER_CLI_2_MAXVALUE
+};
+
+
+/* GLUSTER_DUMP_PROGRAM */
+enum gluster_prog_dump_procs {
+ GF_DUMP_NULL = 0,
+ GF_DUMP_DUMP,
+ GF_DUMP_MAXVALUE
+};
+
+/* GLUSTERD1_MGMT_PROGRAM */
+enum glusterd_mgmt_procnum {
+ GLUSTERD_MGMT_NULL = 0,
+ GLUSTERD_MGMT_PROBE_QUERY,
+ GLUSTERD_MGMT_FRIEND_ADD,
+ GLUSTERD_MGMT_CLUSTER_LOCK,
+ GLUSTERD_MGMT_CLUSTER_UNLOCK,
+ GLUSTERD_MGMT_STAGE_OP,
+ GLUSTERD_MGMT_COMMIT_OP,
+ GLUSTERD_MGMT_FRIEND_REMOVE,
+ GLUSTERD_MGMT_FRIEND_UPDATE,
+ GLUSTERD_MGMT_MAXVALUE
+};
+
+/* GLUSTERD1_MGMT_PROGRAM for version 2*/
+enum glusterd_mgmt_2_procnum {
+ GLUSTERD_MGMT_2_NULL = 0, /* 0 */
+ GLUSTERD_MGMT_2_CLUSTER_LOCK,
+ GLUSTERD_MGMT_2_CLUSTER_UNLOCK,
+ GLUSTERD_MGMT_2_STAGE_OP,
+ GLUSTERD_MGMT_2_COMMIT_OP,
+ GLUSTERD_MGMT_2_MAXVALUE
+};
+
+
+/* GLUSTERFS_PROGRAM */
+enum gf_brick_procnum {
+ GF_BRICK_NULL = 0,
+ GF_BRICK_TERMINATE,
+ GF_BRICK_XLATOR_INFO,
+ GF_BRICK_XLATOR_HEAL,
+ GF_BRICK_MAXVALUE
+};
+
+/* GLUSTER_HNDSK_PROGRAM for nersion 1 and 2*/
+enum gluster_prog_hndsk_procs {
+ GF_HNDSK_NULL = 0,
+ GF_HNDSK_SETVOLUME,
+ GF_HNDSK_GETSPEC,
+ GF_HNDSK_PING,
+ GF_HNDSK_SET_LK_VER,
+ GF_HNDSK_EVENT_NOTIFY,
+ GF_HNDSK_MAXVALUE
+};
+
+/* GLUSTER_PMAP_PROGRAM */
+enum gf_pmap_procnum {
+ GF_PMAP_NULL = 0,
+ GF_PMAP_PORTBYBRICK,
+ GF_PMAP_BRICKBYPORT,
+ GF_PMAP_SIGNUP,
+ GF_PMAP_SIGNIN,
+ GF_PMAP_SIGNOUT,
+ GF_PMAP_MAXVALUE
+};
+
+/* GD_BRICK_PROGRAM */
+enum glusterd_brick_procnum {
+ GLUSTERD_BRICK_NULL = 0,
+ GLUSTERD_BRICK_TERMINATE,
+ GLUSTERD_BRICK_XLATOR_INFO,
+ GLUSTERD_BRICK_XLATOR_HEAL,
+ GLUSTERD_BRICK_OP,
+ GLUSTERD_BRICK_MAXVALUE
+};
+
+/* "rpc/rpc-lib/src/protocol-common.h" line 174 of 228 */
+enum glusterd_brick_2_procnum {
+ GLUSTERD_2_BRICK_NULL, /* 0 */
+ GLUSTERD_2_BRICK_TERMINATE,
+ GLUSTERD_2_BRICK_XLATOR_INFO,
+ GLUSTERD_2_BRICK_XLATOR_OP,
+ GLUSTERD_2_BRICK_STATUS,
+ GLUSTERD_2_BRICK_OP,
+ GLUSTERD_2_BRICK_XLATOR_DEFRAG,
+ GLUSTERD_2_NODE_PROFILE,
+ GLUSTERD_2_NODE_STATUS,
+ GLUSTERD_2_BRICK_MAXVALUE
+};
+
+
+/* GLUSTER_CBK_PROGRAM */
+enum gf_cbk_procnum {
+ GF_CBK_NULL = 0,
+ GF_CBK_FETCHSPEC,
+ GF_CBK_INO_FLUSH,
+ GF_CBK_MAXVALUE
+};
+
+/* GD_FRIEND_PROGRAM defined in "rpc/rpc-lib/src/protocol-common.h" */
+enum glusterd_friend_procnum {
+ GLUSTERD_FRIEND_NULL, /* 0 */
+ GLUSTERD_PROBE_QUERY,
+ GLUSTERD_FRIEND_ADD,
+ GLUSTERD_FRIEND_REMOVE,
+ GLUSTERD_FRIEND_UPDATE,
+ GLUSTERD_FRIEND_MAXVALUE
+};
+
+enum gf_fop_procnum {
+ GFS3_OP_NULL = 0,
+ GFS3_OP_STAT,
+ GFS3_OP_READLINK,
+ GFS3_OP_MKNOD,
+ GFS3_OP_MKDIR,
+ GFS3_OP_UNLINK,
+ GFS3_OP_RMDIR,
+ GFS3_OP_SYMLINK,
+ GFS3_OP_RENAME,
+ GFS3_OP_LINK,
+ GFS3_OP_TRUNCATE,
+ GFS3_OP_OPEN,
+ GFS3_OP_READ,
+ GFS3_OP_WRITE,
+ GFS3_OP_STATFS,
+ GFS3_OP_FLUSH,
+ GFS3_OP_FSYNC,
+ GFS3_OP_SETXATTR,
+ GFS3_OP_GETXATTR,
+ GFS3_OP_REMOVEXATTR,
+ GFS3_OP_OPENDIR,
+ GFS3_OP_FSYNCDIR,
+ GFS3_OP_ACCESS,
+ GFS3_OP_CREATE,
+ GFS3_OP_FTRUNCATE,
+ GFS3_OP_FSTAT,
+ GFS3_OP_LK,
+ GFS3_OP_LOOKUP,
+ GFS3_OP_READDIR,
+ GFS3_OP_INODELK,
+ GFS3_OP_FINODELK,
+ GFS3_OP_ENTRYLK,
+ GFS3_OP_FENTRYLK,
+ GFS3_OP_XATTROP,
+ GFS3_OP_FXATTROP,
+ GFS3_OP_FGETXATTR,
+ GFS3_OP_FSETXATTR,
+ GFS3_OP_RCHECKSUM,
+ GFS3_OP_SETATTR,
+ GFS3_OP_FSETATTR,
+ GFS3_OP_READDIRP,
+ GFS3_OP_RELEASE,
+ GFS3_OP_RELEASEDIR,
+ GFS3_OP_MAXVALUE
+};
+
+/* dir-entry types from libglusterfs/src/compat.h */
+enum gluster_entry_types {
+ DT_UNKNOWN = 0,
+ DT_FIFO = 1,
+ DT_CHR = 2,
+ DT_DIR = 4,
+ DT_BLK = 6,
+ DT_REG = 8,
+ DT_LNK = 10,
+ DT_SOCK = 12,
+ DT_WHT = 14
+};
+
+
+/* LOCKING operators come from libglusterfs/src/glusterfs.h */
+
+/* based on original enum glusterfs_lk_cmds_t */
+enum gluster_lk_cmds {
+ GF_LK_GETLK = 0,
+ GF_LK_SETLK,
+ GF_LK_SETLKW,
+ GF_LK_RESLK_LCK,
+ GF_LK_RESLK_LCKW,
+ GF_LK_RESLK_UNLCK,
+ GF_LK_GETLK_FD
+};
+
+/* based on original enum glusterfs_lk_types_t */
+enum gluster_lk_types {
+ GF_LK_F_RDLCK = 0,
+ GF_LK_F_WRLCK,
+ GF_LK_F_UNLCK,
+ GF_LK_EOL
+};
+
+enum gluster_lk_whence {
+ GF_LK_SEEK_SET = 0,
+ GF_LK_SEEK_CUR,
+ GF_LK_SEEK_END
+};
+
+/* based on enum glusterd_op_ from xlators/mgmt/glusterd/src/glusterd.h */
+enum glusterd_ops {
+ GD_OP_NONE = 0,
+ GD_OP_CREATE_VOLUME,
+ GD_OP_START_BRICK,
+ GD_OP_STOP_BRICK,
+ GD_OP_DELETE_VOLUME,
+ GD_OP_START_VOLUME,
+ GD_OP_STOP_VOLUME,
+ GD_OP_DEFRAG_VOLUME,
+ GD_OP_ADD_BRICK,
+ GD_OP_REMOVE_BRICK,
+ GD_OP_REPLACE_BRICK,
+ GD_OP_SET_VOLUME,
+ GD_OP_RESET_VOLUME,
+ GD_OP_SYNC_VOLUME,
+ GD_OP_LOG_ROTATE,
+ GD_OP_GSYNC_SET,
+ GD_OP_PROFILE_VOLUME,
+ GD_OP_QUOTA,
+ GD_OP_STATUS_VOLUME,
+ GD_OP_REBALANCE,
+ GD_OP_HEAL_VOLUME,
+ GD_OP_STATEDUMP_VOLUME,
+ GD_OP_LIST_VOLUME,
+ GD_OP_CLEARLOCKS_VOLUME,
+ GD_OP_DEFRAG_BRICK_VOLUME,
+ GD_OP_MAX
+};
+
+extern int
+gluster_rpc_dissect_dict(proto_tree *tree, tvbuff_t *tvb, int hfindex,
+ int offset);
+
+extern int
+gluster_dissect_common_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree);
+
+#endif /* __PACKET_GLUSTER_H__ */
diff --git a/epan/dissectors/packet-gluster_cli.c b/epan/dissectors/packet-gluster_cli.c
new file mode 100644
index 0000000000..7fa5f91c33
--- /dev/null
+++ b/epan/dissectors/packet-gluster_cli.c
@@ -0,0 +1,561 @@
+/* packet-gluster_cli.c
+ * Routines for Gluster CLI dissection
+ * Copyright 2012, Niels de Vos <ndevos@redhat.com>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ *
+ * References to source files point in general to the glusterfs sources.
+ * There is currently no RFC or other document where the protocol is
+ * completely described. The glusterfs sources can be found at:
+ * - http://git.gluster.com/?p=glusterfs.git
+ * - https://github.com/gluster/glusterfs
+ *
+ * The coding-style is roughly the same as the one use in the Linux kernel,
+ * see http://www.kernel.org/doc/Documentation/CodingStyle.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+#include <string.h>
+#include <epan/packet.h>
+#include <epan/tfs.h>
+
+#include "packet-rpc.h"
+#include "packet-gluster.h"
+
+/* Initialize the protocol and registered fields */
+static gint proto_gluster_cli = -1;
+
+/* programs and procedures */
+static gint hf_gluster_cli_proc = -1;
+static gint hf_gluster_cli_2_proc = -1;
+static gint hf_gluster_dict = -1;
+static gint hf_gluster_path = -1;
+static gint hf_gluster_lazy = -1;
+static gint hf_gluster_label = -1;
+static gint hf_gluster_unused = -1;
+static gint hf_gluster_wd= -1;
+static gint hf_gluster_op_errstr= -1;
+static gint hf_gluster_hostname = -1;
+static gint hf_gluster_port = -1;
+static gint hf_gluster_flags = -1;
+
+/* Initialize the subtree pointers */
+static gint ett_gluster_cli = -1;
+
+/* CLI Operations */
+static int
+gluster_cli_2_common_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_gluster_dict, offset);
+
+ return offset;
+}
+
+static int
+gluster_cli_2_common_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ gchar* errstr= NULL;
+
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = dissect_rpc_string(tvb, tree, hf_gluster_op_errstr, offset,
+ &errstr);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_gluster_dict, offset);
+
+ return offset;
+}
+
+static int
+gluster_cli_2_probe_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ gchar* hostname = NULL;
+ gchar* errstr = NULL;
+
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = dissect_rpc_uint32(tvb, tree, hf_gluster_port, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_gluster_hostname, offset,
+ &hostname);
+ offset = dissect_rpc_string(tvb, tree, hf_gluster_op_errstr, offset,
+ &errstr);
+
+ return offset;
+}
+
+static int
+gluster_cli_2_probe_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar* hostname = NULL;
+
+ offset = dissect_rpc_string(tvb, tree, hf_gluster_hostname, offset,
+ &hostname);
+ offset = dissect_rpc_uint32(tvb, tree, hf_gluster_port, offset);
+
+ return offset;
+}
+
+static int
+gluster_cli_2_deprobe_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ gchar* hostname = NULL;
+
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = dissect_rpc_string(tvb, tree, hf_gluster_hostname, offset,
+ &hostname);
+
+ return offset;
+}
+
+static int
+gluster_cli_2_deprobe_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar* hostname = NULL;
+
+ offset = dissect_rpc_string(tvb, tree, hf_gluster_hostname, offset,
+ &hostname);
+ offset = dissect_rpc_uint32(tvb, tree, hf_gluster_port, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_gluster_flags, offset);
+
+ return offset;
+}
+
+static int
+gluster_cli_2_fsm_log_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar* name = NULL;
+
+ offset = dissect_rpc_string(tvb, tree, hf_gluster_wd, offset, &name);
+
+ return offset;
+}
+
+static int
+gluster_cli_2_getwd_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ gchar* wd = NULL;
+
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = dissect_rpc_string(tvb, tree, hf_gluster_wd, offset, &wd);
+
+ return offset;
+}
+
+static int
+gluster_cli_2_getwd_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = dissect_rpc_uint32(tvb, tree, hf_gluster_unused, offset);
+
+ return offset;
+}
+
+static int
+gluster_cli_2_mount_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar* label = NULL;
+
+ offset = dissect_rpc_string(tvb, tree, hf_gluster_label, offset,
+ &label);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_gluster_dict, offset);
+
+ return offset;
+}
+
+static int
+gluster_cli_2_mount_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ gchar* path = NULL;
+
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = dissect_rpc_string(tvb, tree, hf_gluster_path, offset, &path);
+
+ return offset;
+}
+
+static int
+gluster_cli_2_umount_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar* path = NULL;
+
+ offset = dissect_rpc_uint32(tvb, tree,hf_gluster_lazy, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_gluster_path, offset, &path);
+
+ return offset;
+}
+
+/* procedures for GLUSTER_CLI_PROGRAM */
+static const vsff gluster_cli_proc[] = {
+ { GLUSTER_CLI_NULL, "NULL", NULL, NULL },
+ { GLUSTER_CLI_PROBE, "PROBE", NULL, NULL },
+ { GLUSTER_CLI_DEPROBE, "DEPROBE", NULL, NULL },
+ { GLUSTER_CLI_LIST_FRIENDS, "LIST_FRIENDS", NULL, NULL },
+ { GLUSTER_CLI_CREATE_VOLUME, "CREATE_VOLUME", NULL, NULL },
+ { GLUSTER_CLI_GET_VOLUME, "GET_VOLUME", NULL, NULL },
+ { GLUSTER_CLI_GET_NEXT_VOLUME, "GET_NEXT_VOLUME", NULL, NULL },
+ { GLUSTER_CLI_DELETE_VOLUME, "DELETE_VOLUME", NULL, NULL },
+ { GLUSTER_CLI_START_VOLUME, "START_VOLUME", NULL, NULL },
+ { GLUSTER_CLI_STOP_VOLUME, "STOP_VOLUME", NULL, NULL },
+ { GLUSTER_CLI_RENAME_VOLUME, "RENAME_VOLUME", NULL, NULL },
+ { GLUSTER_CLI_DEFRAG_VOLUME, "DEFRAG_VOLUME", NULL, NULL },
+ { GLUSTER_CLI_SET_VOLUME, "SET_VOLUME", NULL, NULL },
+ { GLUSTER_CLI_ADD_BRICK, "ADD_BRICK", NULL, NULL },
+ { GLUSTER_CLI_REMOVE_BRICK, "REMOVE_BRICK", NULL, NULL },
+ { GLUSTER_CLI_REPLACE_BRICK, "REPLACE_BRICK", NULL, NULL },
+ { GLUSTER_CLI_LOG_FILENAME, "LOG_FILENAME", NULL, NULL },
+ { GLUSTER_CLI_LOG_LOCATE, "LOG_LOCATE", NULL, NULL },
+ { GLUSTER_CLI_LOG_ROTATE, "LOG_ROTATE", NULL, NULL },
+ { GLUSTER_CLI_GETSPEC, "GETSPEC", NULL, NULL },
+ { GLUSTER_CLI_PMAP_PORTBYBRICK, "PMAP_PORTBYBRICK", NULL , NULL },
+ { GLUSTER_CLI_SYNC_VOLUME, "SYNC_VOLUME", NULL, NULL },
+ { GLUSTER_CLI_RESET_VOLUME, "RESET_VOLUME", NULL, NULL },
+ { GLUSTER_CLI_FSM_LOG, "FSM_LOG", NULL, NULL },
+ { GLUSTER_CLI_GSYNC_SET, "GSYNC_SET", NULL, NULL },
+ { GLUSTER_CLI_PROFILE_VOLUME, "PROFILE_VOLUME", NULL, NULL },
+ { GLUSTER_CLI_QUOTA, "QUOTA", NULL, NULL },
+ { GLUSTER_CLI_TOP_VOLUME, "TOP_VOLUME", NULL, NULL },
+ { GLUSTER_CLI_GETWD, "GETWD", NULL, NULL },
+ { GLUSTER_CLI_LOG_LEVEL, "LOG_LEVEL", NULL, NULL },
+ { GLUSTER_CLI_STATUS_VOLUME, "STATUS_VOLUME", NULL, NULL },
+ { GLUSTER_CLI_MOUNT, "MOUNT", NULL, NULL },
+ { GLUSTER_CLI_UMOUNT, "UMOUNT", NULL, NULL },
+ { GLUSTER_CLI_HEAL_VOLUME, "HEAL_VOLUME", NULL, NULL },
+ { GLUSTER_CLI_STATEDUMP_VOLUME, "STATEDUMP_VOLUME", NULL, NULL },
+ { 0, NULL, NULL, NULL }
+};
+
+/* procedures for GLUSTER_CLI_PROGRAM version 2*/
+static const vsff gluster_cli_2_proc[] = {
+ {
+ GLUSTER_CLI_2_NULL, "NULL",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_PROBE, "PROBE",
+ gluster_cli_2_probe_call, gluster_cli_2_probe_reply
+ },
+ {
+ GLUSTER_CLI_2_DEPROBE, "DEPROBE",
+ gluster_cli_2_deprobe_call, gluster_cli_2_deprobe_reply
+ },
+ {
+ GLUSTER_CLI_2_LIST_FRIENDS, "LIST_FRIENDS",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_CREATE_VOLUME, "CREATE_VOLUME",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_GET_VOLUME, "GET_VOLUME",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_GET_NEXT_VOLUME, "GET_NEXT_VOLUME",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_DELETE_VOLUME, "DELETE_VOLUME",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_START_VOLUME, "START_VOLUME",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_STOP_VOLUME, "STOP_VOLUME",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_RENAME_VOLUME, "RENAME_VOLUME",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_DEFRAG_VOLUME, "DEFRAG_VOLUME" ,
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_SET_VOLUME, "SET_VOLUME",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_ADD_BRICK, "ADD_BRICK",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_REMOVE_BRICK, "REMOVE_BRICK",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_REPLACE_BRICK, "REPLACE_BRICK",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_LOG_ROTATE, "LOG_ROTATE",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_GETSPEC, "GETSPEC",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_PMAP_PORTBYBRICK, "PMAP_PORTBYBRICK",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_SYNC_VOLUME, "SYNC_VOLUME",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_RESET_VOLUME, "RESET_VOLUME",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_FSM_LOG, "FSM_LOG",
+ gluster_cli_2_fsm_log_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_GSYNC_SET, "GSYNC_SET",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_PROFILE_VOLUME, "PROFILE_VOLUME",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_QUOTA, "QUOTA",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_TOP_VOLUME, "TOP_VOLUME",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_GETWD, "GETWD",
+ gluster_cli_2_getwd_call, gluster_cli_2_getwd_reply
+ },
+ {
+ GLUSTER_CLI_2_STATUS_VOLUME, "STATUS_VOLUME",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_STATUS_ALL, "STATUS_ALL",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_MOUNT, "MOUNT",
+ gluster_cli_2_mount_call, gluster_cli_2_mount_reply
+ },
+ {
+ GLUSTER_CLI_2_UMOUNT, "UMOUNT",
+ gluster_cli_2_umount_call, gluster_dissect_common_reply
+ },
+ {
+ GLUSTER_CLI_2_HEAL_VOLUME, "HEAL_VOLUME",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_STATEDUMP_VOLUME, "STATEDUMP_VOLUME",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_LIST_VOLUME, "LIST_VOLUME",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ {
+ GLUSTER_CLI_2_CLRLOCKS_VOLUME, "CLRLOCKS_VOLUME",
+ gluster_cli_2_common_call, gluster_cli_2_common_reply
+ },
+ { 0, NULL , NULL, NULL}
+};
+
+
+static const value_string gluster_cli_proc_vals[] = {
+ { GLUSTER_CLI_NULL, "NULL" },
+ { GLUSTER_CLI_PROBE, "PROBE" },
+ { GLUSTER_CLI_DEPROBE, "DEPROBE" },
+ { GLUSTER_CLI_LIST_FRIENDS, "LIST_FRIENDS" },
+ { GLUSTER_CLI_CREATE_VOLUME, "CREATE_VOLUME" },
+ { GLUSTER_CLI_GET_VOLUME, "GET_VOLUME" },
+ { GLUSTER_CLI_GET_NEXT_VOLUME, "GET_NEXT_VOLUME" },
+ { GLUSTER_CLI_DELETE_VOLUME, "DELETE_VOLUME" },
+ { GLUSTER_CLI_START_VOLUME, "START_VOLUME" },
+ { GLUSTER_CLI_STOP_VOLUME, "STOP_VOLUME" },
+ { GLUSTER_CLI_RENAME_VOLUME, "RENAME_VOLUME" },
+ { GLUSTER_CLI_DEFRAG_VOLUME, "DEFRAG_VOLUME" },
+ { GLUSTER_CLI_SET_VOLUME, "SET_VOLUME" },
+ { GLUSTER_CLI_ADD_BRICK, "ADD_BRICK" },
+ { GLUSTER_CLI_REMOVE_BRICK, "REMOVE_BRICK" },
+ { GLUSTER_CLI_REPLACE_BRICK, "REPLACE_BRICK" },
+ { GLUSTER_CLI_LOG_FILENAME, "LOG_FILENAME" },
+ { GLUSTER_CLI_LOG_LOCATE, "LOG_LOCATE" },
+ { GLUSTER_CLI_LOG_ROTATE, "LOG_ROTATE" },
+ { GLUSTER_CLI_GETSPEC, "GETSPEC" },
+ { GLUSTER_CLI_PMAP_PORTBYBRICK, "PMAP_PORTBYBRICK" },
+ { GLUSTER_CLI_SYNC_VOLUME, "SYNC_VOLUME" },
+ { GLUSTER_CLI_RESET_VOLUME, "RESET_VOLUME" },
+ { GLUSTER_CLI_FSM_LOG, "FSM_LOG" },
+ { GLUSTER_CLI_GSYNC_SET, "GSYNC_SET" },
+ { GLUSTER_CLI_PROFILE_VOLUME, "PROFILE_VOLUME" },
+ { GLUSTER_CLI_QUOTA, "QUOTA" },
+ { GLUSTER_CLI_TOP_VOLUME, "TOP_VOLUME" },
+ { GLUSTER_CLI_GETWD, "GETWD" },
+ { GLUSTER_CLI_LOG_LEVEL, "LOG_LEVEL" },
+ { GLUSTER_CLI_STATUS_VOLUME, "STATUS_VOLUME" },
+ { GLUSTER_CLI_MOUNT, "MOUNT" },
+ { GLUSTER_CLI_UMOUNT, "UMOUNT" },
+ { GLUSTER_CLI_HEAL_VOLUME, "HEAL_VOLUME" },
+ { GLUSTER_CLI_STATEDUMP_VOLUME, "STATEDUMP_VOLUME" },
+ { 0, NULL }
+};
+
+static const value_string gluster_cli_2_proc_vals[] = {
+ { GLUSTER_CLI_2_NULL, "NULL" },
+ { GLUSTER_CLI_2_PROBE, "PROBE" },
+ { GLUSTER_CLI_2_DEPROBE, "DEPROBE" },
+ { GLUSTER_CLI_2_LIST_FRIENDS, "LIST_FRIENDS" },
+ { GLUSTER_CLI_2_CREATE_VOLUME, "CREATE_VOLUME" },
+ { GLUSTER_CLI_2_GET_VOLUME, "GET_VOLUME" },
+ { GLUSTER_CLI_2_GET_NEXT_VOLUME, "GET_NEXT_VOLUME" },
+ { GLUSTER_CLI_2_DELETE_VOLUME, "DELETE_VOLUME" },
+ { GLUSTER_CLI_2_START_VOLUME, "START_VOLUME" },
+ { GLUSTER_CLI_2_STOP_VOLUME, "STOP_VOLUME" },
+ { GLUSTER_CLI_2_RENAME_VOLUME, "RENAME_VOLUME" },
+ { GLUSTER_CLI_2_DEFRAG_VOLUME, "DEFRAG_VOLUME" },
+ { GLUSTER_CLI_2_SET_VOLUME, "SET_VOLUME" },
+ { GLUSTER_CLI_2_ADD_BRICK, "ADD_BRICK" },
+ { GLUSTER_CLI_2_REMOVE_BRICK, "REMOVE_BRICK" },
+ { GLUSTER_CLI_2_REPLACE_BRICK, "REPLACE_BRICK" },
+ { GLUSTER_CLI_2_LOG_ROTATE, "LOG_ROTATE" },
+ { GLUSTER_CLI_2_GETSPEC, "GETSPEC" },
+ { GLUSTER_CLI_2_PMAP_PORTBYBRICK, "PMAP_PORTBYBRICK" },
+ { GLUSTER_CLI_2_SYNC_VOLUME, "SYNC_VOLUME" },
+ { GLUSTER_CLI_2_RESET_VOLUME, "RESET_VOLUME" },
+ { GLUSTER_CLI_2_FSM_LOG, "FSM_LOG" },
+ { GLUSTER_CLI_2_GSYNC_SET, "GSYNC_SET" },
+ { GLUSTER_CLI_2_PROFILE_VOLUME, "PROFILE_VOLUME" },
+ { GLUSTER_CLI_2_QUOTA, "QUOTA" },
+ { GLUSTER_CLI_2_TOP_VOLUME, "TOP_VOLUME" },
+ { GLUSTER_CLI_2_GETWD, "GETWD" },
+ { GLUSTER_CLI_2_STATUS_VOLUME, "STATUS_VOLUME" },
+ { GLUSTER_CLI_2_STATUS_ALL, "STATUS_ALL" },
+ { GLUSTER_CLI_2_MOUNT, "MOUNT" },
+ { GLUSTER_CLI_2_UMOUNT, "UMOUNT" },
+ { GLUSTER_CLI_2_HEAL_VOLUME, "HEAL_VOLUME" },
+ { GLUSTER_CLI_2_STATEDUMP_VOLUME, "STATEDUMP_VOLUME" },
+ { GLUSTER_CLI_2_LIST_VOLUME, "LIST_VOLUME"},
+ { GLUSTER_CLI_2_CLRLOCKS_VOLUME, "CLRLOCKS_VOLUME" },
+ { 0, NULL }
+};
+
+void
+proto_register_gluster_cli(void)
+{
+ /* Setup list of header fields See Section 1.6.1 for details */
+ static hf_register_info hf[] = {
+ /* programs */
+ { &hf_gluster_cli_proc,
+ { "Gluster CLI", "gluster.cli.proc", FT_UINT32,
+ BASE_DEC, VALS(gluster_cli_proc_vals), 0, NULL,
+ HFILL }
+ },
+ { &hf_gluster_cli_2_proc,
+ { "Gluster CLI", "gluster.cli.proc", FT_UINT32,
+ BASE_DEC, VALS(gluster_cli_2_proc_vals), 0,
+ NULL, HFILL }
+ },
+ { &hf_gluster_dict,
+ { "Dict", "gluster.dict", FT_STRING, BASE_NONE, NULL,
+ 0, NULL, HFILL }
+ },
+ { &hf_gluster_path,
+ { "Path", "gluster.path", FT_STRING, BASE_NONE, NULL,
+ 0, NULL, HFILL }
+ },
+ { &hf_gluster_lazy,
+ { "Lazy", "gluster.lazy", FT_UINT32, BASE_HEX, NULL,
+ 0, NULL, HFILL }
+ },
+ { &hf_gluster_label,
+ { "Label", "gluster.label", FT_STRING, BASE_NONE, NULL,
+ 0, NULL, HFILL }
+ },
+ { &hf_gluster_unused,
+ { "Unused", "gluster.unused", FT_UINT32, BASE_HEX,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_gluster_wd,
+ { "Path", "gluster.wd", FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_gluster_op_errstr,
+ { "Error", "gluster.op_errstr", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_gluster_hostname,
+ { "Hostname", "gluster.hostname", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_gluster_port,
+ { "Port", "gluster.port", FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_gluster_flags,
+ { "Flags", "gluster.flag", FT_UINT32, BASE_HEX, NULL,
+ 0, NULL, HFILL }
+ }
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_gluster_cli
+ };
+
+ /* Register the protocol name and description */
+ proto_gluster_cli = proto_register_protocol("Gluster CLI",
+ "Gluster CLI", "gluster.cli");
+ proto_register_subtree_array(ett, array_length(ett));
+ proto_register_field_array(proto_gluster_cli, hf, array_length(hf));
+}
+
+void
+proto_reg_handoff_gluster_cli(void)
+{
+ rpc_init_prog(proto_gluster_cli, GLUSTER_CLI_PROGRAM, ett_gluster_cli);
+ rpc_init_proc_table(GLUSTER_CLI_PROGRAM, 1, gluster_cli_proc,
+ hf_gluster_cli_proc);
+ rpc_init_proc_table(GLUSTER_CLI_PROGRAM, 2, gluster_cli_2_proc,
+ hf_gluster_cli_2_proc);
+}
+
diff --git a/epan/dissectors/packet-gluster_pmap.c b/epan/dissectors/packet-gluster_pmap.c
new file mode 100644
index 0000000000..00cc34c7b0
--- /dev/null
+++ b/epan/dissectors/packet-gluster_pmap.c
@@ -0,0 +1,277 @@
+/* packet-gluster_pmap.c
+ * Routines for Gluster Portmapper and Gluster DUMP dissection
+ * Copyright 2012, Niels de Vos <ndevos@redhat.com>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ *
+ * References to source files point in general to the glusterfs sources.
+ * There is currently no RFC or other document where the protocol is
+ * completely described. The glusterfs sources can be found at:
+ * - http://git.gluster.com/?p=glusterfs.git
+ * - https://github.com/gluster/glusterfs
+ *
+ * The coding-style is roughly the same as the one use in the Linux kernel,
+ * see http://www.kernel.org/doc/Documentation/CodingStyle.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+#include <string.h>
+#include <epan/packet.h>
+#include <epan/tfs.h>
+
+#include "packet-rpc.h"
+#include "packet-gluster.h"
+
+/* Initialize the protocol and registered fields */
+static gint proto_gluster_pmap = -1;
+static gint proto_gluster_dump = -1;
+
+/* programs and procedures */
+static gint hf_gluster_pmap_proc = -1;
+static gint hf_gluster_dump_proc = -1;
+
+/* fields used by multiple programs/procedures */
+static gint hf_gluster_brick = -1;
+static gint hf_gluster_brick_status = -1;
+static gint hf_gluster_brick_port = -1;
+static gint hf_gluster_gfsid = -1;
+static gint hf_gluster_progname = -1;
+static gint hf_gluster_prognum = -1;
+static gint hf_gluster_progver = -1;
+
+/* Initialize the subtree pointers */
+static gint ett_gluster_pmap = -1;
+static gint ett_gluster_dump = -1;
+static gint ett_gluster_dump_detail = -1;
+
+/* PMAP PORTBYBRICK */
+static int
+gluster_pmap_portbybrick_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = dissect_rpc_uint32(tvb, tree, hf_gluster_brick_status, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_gluster_brick_port, offset);
+
+ return offset;
+}
+
+static int
+gluster_pmap_portbybrick_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar *brick = NULL;
+ offset = dissect_rpc_string(tvb, tree, hf_gluster_brick, offset,
+ &brick);
+ return offset;
+}
+
+/* Based on rpc/rpc-lib/src/rpc-common.c, but xdr encoding/decoding is broken.
+ * The structure in rpc/rpc-lib/src/xdr-common.h lists 2x unit64_t, but to
+ * encode/decode, xdr_u_quad_t() is used (which is uint32_t).
+ */
+static int
+gluster_dump_reply_detail(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
+ proto_tree *tree)
+{
+ proto_item *detail_item;
+ proto_tree *detail_tree;
+ gchar *progname = NULL;
+
+ detail_item = proto_tree_add_text(tree, tvb, offset, -1,
+ "Available Progam: ");
+ detail_tree = proto_item_add_subtree(detail_item,
+ ett_gluster_dump_detail);
+
+ /* progname */
+ offset = dissect_rpc_string(tvb, detail_tree, hf_gluster_progname,
+ offset, &progname);
+ if (tree)
+ proto_item_append_text(detail_item, "%s", progname);
+
+ /* prognumber (marked as uint64) */
+ offset = dissect_rpc_uint64(tvb, detail_tree, hf_gluster_prognum,
+ offset);
+ /* progversion (marked as uint64) */
+ offset = dissect_rpc_uint64(tvb, detail_tree, hf_gluster_progver,
+ offset);
+
+ return offset;
+}
+
+static int
+gluster_dump_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ offset = dissect_rpc_uint64(tvb, tree, hf_gluster_gfsid, offset);
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+
+ offset = dissect_rpc_list(tvb, pinfo, tree, offset,
+ gluster_dump_reply_detail);
+
+ return offset;
+}
+
+/* DUMP request */
+static int
+gluster_dump_call(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
+ proto_tree *tree)
+{
+ offset = dissect_rpc_uint64(tvb, tree, hf_gluster_gfsid, offset);
+
+ return offset;
+}
+
+/* GLUSTER_PMAP_PROGRAM from xlators/mgmt/glusterd/src/glusterd-pmap.c */
+static const vsff gluster_pmap_proc[] = {
+ { GF_PMAP_NULL, "NULL", NULL, NULL },
+ {
+ GF_PMAP_PORTBYBRICK, "PORTBYBRICK",
+ gluster_pmap_portbybrick_call, gluster_pmap_portbybrick_reply
+ },
+ { GF_PMAP_BRICKBYPORT, "BRICKBYPORT", NULL, NULL },
+ { GF_PMAP_SIGNIN, "SIGNIN", NULL, NULL },
+ { GF_PMAP_SIGNOUT, "SIGNOUT", NULL, NULL },
+ { GF_PMAP_SIGNUP, "SIGNUP", NULL, NULL },
+ { 0, NULL, NULL, NULL }
+};
+static const value_string gluster_pmap_proc_vals[] = {
+ { GF_PMAP_NULL, "NULL" },
+ { GF_PMAP_PORTBYBRICK, "PORTBYBRICK" },
+ { GF_PMAP_BRICKBYPORT, "BRICKBYPORT" },
+ { GF_PMAP_SIGNIN, "SIGNIN" },
+ { GF_PMAP_SIGNOUT, "SIGNOUT" },
+ { GF_PMAP_SIGNUP, "SIGNUP" },
+ { 0, NULL }
+};
+
+/* procedures for GLUSTER_DUMP_PROGRAM */
+static const vsff gluster_dump_proc[] = {
+ { 0, "NULL", NULL, NULL },
+ { GF_DUMP_DUMP, "DUMP", gluster_dump_call, gluster_dump_reply },
+ { 0, NULL, NULL, NULL }
+};
+static const value_string gluster_dump_proc_vals[] = {
+ { 0, "NULL" },
+ { GF_DUMP_DUMP, "DUMP" },
+ { 0, NULL }
+};
+
+void
+proto_register_gluster_pmap(void)
+{
+ /* Setup list of header fields See Section 1.6.1 for details */
+ static hf_register_info hf[] = {
+ /* programs */
+ { &hf_gluster_pmap_proc,
+ { "Gluster Portmap", "gluster.pmap.proc", FT_UINT32,
+ BASE_DEC, VALS(gluster_pmap_proc_vals), 0,
+ NULL, HFILL }
+ },
+ { &hf_gluster_brick,
+ { "Brick", "gluster.brick", FT_STRINGZ, BASE_NONE,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_gluster_brick_status,
+ { "Status", "gluster.brick.status", FT_INT32, BASE_DEC,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_gluster_brick_port,
+ { "Port", "gluster.brick.port", FT_INT32, BASE_DEC,
+ NULL, 0, NULL, HFILL }
+ }
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_gluster_pmap
+ };
+
+ proto_gluster_pmap = proto_register_protocol("Gluster Portmap",
+ "Gluster Portmap", "gluster.pmap");
+ proto_register_subtree_array(ett, array_length(ett));
+ proto_register_field_array(proto_gluster_pmap, hf, array_length(hf));
+}
+
+void
+proto_reg_handoff_gluster_pmap(void)
+{
+ rpc_init_prog(proto_gluster_pmap, GLUSTER_PMAP_PROGRAM,
+ ett_gluster_pmap);
+ rpc_init_proc_table(GLUSTER_PMAP_PROGRAM, 1, gluster_pmap_proc,
+ hf_gluster_pmap_proc);
+}
+
+void
+proto_register_gluster_dump(void)
+{
+ /* Setup list of header fields See Section 1.6.1 for details */
+ static hf_register_info hf[] = {
+ /* programs */
+ { &hf_gluster_dump_proc,
+ { "Gluster DUMP", "gluster.dump.proc", FT_UINT32,
+ BASE_DEC, VALS(gluster_dump_proc_vals), 0,
+ NULL, HFILL }
+ },
+ { &hf_gluster_progname,
+ { "Program Name", "gluster.dump.progname", FT_STRING,
+ BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_gluster_prognum,
+ { "Program Number", "gluster.dump.prognum",
+ FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_gluster_progver,
+ { "Program Version", "gluster.dump.progver",
+ FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_gluster_gfsid,
+ { "GFS ID", "gluster.gfsid", FT_UINT64, BASE_HEX, NULL,
+ 0, NULL, HFILL }
+ }
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_gluster_dump,
+ &ett_gluster_dump_detail
+ };
+
+ proto_gluster_dump = proto_register_protocol("Gluster Dump",
+ "Gluster Dump", "gluster.dump");
+ proto_register_subtree_array(ett, array_length(ett));
+ proto_register_field_array(proto_gluster_dump, hf, array_length(hf));
+}
+
+void
+proto_reg_handoff_gluster_dump(void)
+{
+ rpc_init_prog(proto_gluster_dump, GLUSTER_DUMP_PROGRAM,
+ ett_gluster_dump);
+ rpc_init_proc_table(GLUSTER_DUMP_PROGRAM, 1, gluster_dump_proc,
+ hf_gluster_dump_proc);
+}
+
diff --git a/epan/dissectors/packet-glusterd.c b/epan/dissectors/packet-glusterd.c
new file mode 100644
index 0000000000..e05d414702
--- /dev/null
+++ b/epan/dissectors/packet-glusterd.c
@@ -0,0 +1,738 @@
+/* packet-gluster_glusterd.c
+ * Routines for Gluster Daemon Management dissection
+ * Copyright 2012, Niels de Vos <ndevos@redhat.com>
+ * With contributions from:
+ * Shreedhara LG <shreedharlg@gmail.com>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ *
+ * References to source files point in general to the glusterfs sources.
+ * There is currently no RFC or other document where the protocol is
+ * completely described. The glusterfs sources can be found at:
+ * - http://git.gluster.com/?p=glusterfs.git
+ * - https://github.com/gluster/glusterfs
+ *
+ * The coding-style is roughly the same as the one use in the Linux kernel,
+ * see http://www.kernel.org/doc/Documentation/CodingStyle.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+#include <string.h>
+#include <epan/packet.h>
+#include <epan/tfs.h>
+
+#include "packet-rpc.h"
+#include "packet-gluster.h"
+
+/* Initialize the protocol and registered fields */
+static gint proto_glusterd = -1;
+static gint proto_gd_mgmt = -1;
+static gint proto_gd_brick = -1;
+static gint proto_gd_friend = -1;
+
+/* programs and procedures */
+static gint hf_gd_mgmt_proc = -1;
+static gint hf_gd_mgmt_2_proc = -1;
+static gint hf_gd_mgmt_brick_2_proc = -1;
+static gint hf_glusterd_friend_proc = -1;
+
+/* fields used by multiple programs/procedures */
+static gint hf_glusterd_dict = -1;
+static gint hf_glusterd_op = -1;
+static gint hf_glusterd_op_errstr = -1;
+static gint hf_glusterd_uuid = -1;
+static gint hf_glusterd_hostname = -1;
+static gint hf_glusterd_port = -1;
+static gint hf_glusterd_vols = -1;
+static gint hf_glusterd_buf = -1;
+static gint hf_glusterd_name = -1;
+
+/* Initialize the subtree pointers */
+static gint ett_gd_mgmt = -1;
+static gint ett_gd_brick = -1;
+static gint ett_gd_friend = -1;
+
+/* the UUID is the same as a GlusterFS GFID, except its encoded per byte */
+static int
+gluster_gd_mgmt_dissect_uuid(tvbuff_t *tvb, proto_tree *tree, int hfindex,
+ int offset)
+{
+ if (tree) {
+ e_guid_t uuid;
+ int start_offset = offset;
+
+ uuid.data1 = (tvb_get_ntohl(tvb, offset) & 0xff) << 24 |
+ (tvb_get_ntohl(tvb, offset+4) & 0xff) << 16 |
+ (tvb_get_ntohl(tvb, offset+8) & 0xff) << 8 |
+ (tvb_get_ntohl(tvb, offset+12) & 0xff);
+ offset += 16;
+ uuid.data2 = (tvb_get_ntohl(tvb, offset) & 0xff) << 8 |
+ (tvb_get_ntohl(tvb, offset+4) & 0xff);
+ offset += 8;
+ uuid.data3 = (tvb_get_ntohl(tvb, offset) & 0xff) << 8 |
+ (tvb_get_ntohl(tvb, offset+4) & 0xff);
+ offset += 8;
+ uuid.data4[0] = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+ uuid.data4[1] = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+ uuid.data4[2] = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+ uuid.data4[3] = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+ uuid.data4[4] = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+ uuid.data4[5] = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+ uuid.data4[6] = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+ uuid.data4[7] = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+ proto_tree_add_guid(tree, hfindex, tvb, start_offset, 4*16, &uuid);
+ } else
+ offset += 16 * 4;
+
+ return offset;
+}
+
+static int
+gluster_gd_mgmt_probe_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ gchar *hostname = NULL;
+
+ offset = gluster_gd_mgmt_dissect_uuid(tvb, tree, hf_glusterd_uuid,
+ offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterd_hostname, offset,
+ &hostname);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterd_port, offset);
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+
+ return offset;
+}
+
+static int
+gluster_gd_mgmt_probe_call(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
+ proto_tree *tree)
+{
+ gchar *hostname = NULL;
+
+ offset = gluster_gd_mgmt_dissect_uuid(tvb, tree, hf_glusterd_uuid,
+ offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterd_hostname, offset,
+ &hostname);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterd_port, offset);
+
+ return offset;
+}
+
+static int
+gluster_gd_mgmt_friend_add_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree)
+{
+ gchar *hostname = NULL;
+
+ offset = gluster_gd_mgmt_dissect_uuid(tvb, tree, hf_glusterd_uuid,
+ offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterd_hostname, offset,
+ &hostname);
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterd_port, offset);
+
+ return offset;
+}
+
+static int
+gluster_gd_mgmt_friend_add_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar *hostname = NULL;
+
+ offset = gluster_gd_mgmt_dissect_uuid(tvb, tree, hf_glusterd_uuid,
+ offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterd_hostname, offset,
+ &hostname);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterd_port, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterd_vols, offset);
+
+ return offset;
+}
+
+/* gluster_gd_mgmt_cluster_lock_reply is used for LOCK and UNLOCK */
+static int
+gluster_gd_mgmt_cluster_lock_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree)
+{
+ offset = gluster_gd_mgmt_dissect_uuid(tvb, tree, hf_glusterd_uuid,
+ offset);
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+
+ return offset;
+}
+
+/* gluster_gd_mgmt_cluster_lock_call is used for LOCK and UNLOCK */
+static int
+gluster_gd_mgmt_cluster_lock_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = gluster_gd_mgmt_dissect_uuid(tvb, tree, hf_glusterd_uuid,
+ offset);
+
+ return offset;
+}
+
+static int
+gluster_gd_mgmt_stage_op_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ gchar *errstr = NULL;
+
+ offset = gluster_gd_mgmt_dissect_uuid(tvb, tree, hf_glusterd_uuid,
+ offset);
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterd_op_errstr, offset,
+ &errstr);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterd_dict, offset);
+ return offset;
+}
+
+static int
+gluster_gd_mgmt_stage_op_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = gluster_gd_mgmt_dissect_uuid(tvb, tree, hf_glusterd_uuid,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterd_op, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterd_dict, offset);
+
+ return offset;
+}
+
+static int
+gluster_gd_mgmt_commit_op_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ gchar *errstr = NULL;
+
+ offset = gluster_gd_mgmt_dissect_uuid(tvb, tree, hf_glusterd_uuid,
+ offset);
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterd_buf, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterd_op_errstr, offset,
+ &errstr);
+ return offset;
+}
+
+static int
+gluster_gd_mgmt_commit_op_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = gluster_gd_mgmt_dissect_uuid(tvb, tree, hf_glusterd_uuid,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterd_op, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterd_buf,
+ offset);
+
+ return offset;
+}
+
+static int
+gluster_gd_mgmt_friend_update_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree)
+{
+ offset = gluster_gd_mgmt_dissect_uuid(tvb, tree, hf_glusterd_uuid,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterd_op, offset);
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+
+ return offset;
+}
+
+static int
+gluster_gd_mgmt_friend_update_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = gluster_gd_mgmt_dissect_uuid(tvb, tree, hf_glusterd_uuid,
+ offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterd_vols,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterd_port, offset);
+
+ return offset;
+}
+
+/* Below procedure is used for version 2 */
+static int
+glusterd_mgmt_2_cluster_lock_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree)
+{
+ offset = gluster_gd_mgmt_dissect_uuid(tvb, tree, hf_glusterd_uuid,
+ offset);
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+
+ return offset;
+}
+
+/* glusterd__mgmt_2_cluster_lock_call is used for LOCK and UNLOCK */
+static int
+glusterd_mgmt_2_cluster_lock_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = gluster_gd_mgmt_dissect_uuid(tvb, tree, hf_glusterd_uuid,
+ offset);
+
+ return offset;
+}
+
+static int
+glusterd_mgmt_2_stage_op_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ gchar *errstr = NULL;
+
+ offset = gluster_gd_mgmt_dissect_uuid(tvb, tree, hf_glusterd_uuid,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterd_op, offset);
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterd_op_errstr, offset,
+ &errstr);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterd_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterd_mgmt_2_stage_op_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = gluster_gd_mgmt_dissect_uuid(tvb, tree, hf_glusterd_uuid,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterd_op, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterd_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterd_mgmt_2_commit_op_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ gchar *errstr = NULL;
+
+ offset = gluster_gd_mgmt_dissect_uuid(tvb, tree, hf_glusterd_uuid,
+ offset);
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterd_buf, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterd_op_errstr, offset,
+ &errstr);
+
+ return offset;
+}
+
+static int
+glusterd_mgmt_2_commit_op_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = gluster_gd_mgmt_dissect_uuid(tvb, tree, hf_glusterd_uuid,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterd_op, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterd_buf, offset);
+
+ return offset;
+}
+
+/* Brick management common function */
+
+static int
+glusterd_brick_2_common_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ gchar *errstr = NULL;
+
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterd_op_errstr, offset,
+ &errstr);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterd_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterd_brick_2_common_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar *name = NULL;
+
+ offset = dissect_rpc_string(tvb, tree, hf_glusterd_name, offset,
+ &name);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterd_op, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterd_dict, offset);
+
+ return offset;
+}
+
+/*
+ * GD_MGMT_PROGRAM
+ * - xlators/mgmt/glusterd/src/glusterd-handler.c: "GlusterD svc mgmt"
+ * - xlators/mgmt/glusterd/src/glusterd-rpc-ops.c: "glusterd clnt mgmt"
+ */
+static const vsff gd_mgmt_proc[] = {
+ { GD_MGMT_NULL, "NULL", NULL, NULL },
+ {
+ GD_MGMT_PROBE_QUERY, "PROBE_QUERY",
+ gluster_gd_mgmt_probe_call, gluster_gd_mgmt_probe_reply
+ },
+ {
+ GD_MGMT_FRIEND_ADD, "FRIEND_ADD",
+ gluster_gd_mgmt_friend_add_call,
+ gluster_gd_mgmt_friend_add_reply
+ },
+ {
+ GD_MGMT_CLUSTER_LOCK, "CLUSTER_LOCK",
+ gluster_gd_mgmt_cluster_lock_call,
+ gluster_gd_mgmt_cluster_lock_reply
+ },
+ {
+ GD_MGMT_CLUSTER_UNLOCK, "CLUSTER_UNLOCK",
+ /* UNLOCK seems to be the same a LOCK, re-use the function */
+ gluster_gd_mgmt_cluster_lock_call,
+ gluster_gd_mgmt_cluster_lock_reply
+ },
+ {
+ GD_MGMT_STAGE_OP, "STAGE_OP",
+ gluster_gd_mgmt_stage_op_call, gluster_gd_mgmt_stage_op_reply
+ },
+ {
+ GD_MGMT_COMMIT_OP, "COMMIT_OP",
+ gluster_gd_mgmt_commit_op_call, gluster_gd_mgmt_commit_op_reply
+ },
+ { GD_MGMT_FRIEND_REMOVE, "FRIEND_REMOVE", NULL, NULL},
+ {
+ GD_MGMT_FRIEND_UPDATE, "FRIEND_UPDATE",
+ gluster_gd_mgmt_friend_update_call,
+ gluster_gd_mgmt_friend_update_reply
+ },
+ { GD_MGMT_CLI_PROBE, "CLI_PROBE", NULL, NULL},
+ { GD_MGMT_CLI_DEPROBE, "CLI_DEPROBE", NULL, NULL},
+ { GD_MGMT_CLI_LIST_FRIENDS, "CLI_LIST_FRIENDS", NULL, NULL},
+ { GD_MGMT_CLI_CREATE_VOLUME, "CLI_CREATE_VOLUME", NULL, NULL},
+ { GD_MGMT_CLI_GET_VOLUME, "CLI_GET_VOLUME", NULL, NULL},
+ { GD_MGMT_CLI_DELETE_VOLUME, "CLI_DELETE_VOLUME", NULL, NULL},
+ { GD_MGMT_CLI_START_VOLUME, "CLI_START_VOLUME", NULL, NULL},
+ { GD_MGMT_CLI_STOP_VOLUME, "CLI_STOP_VOLUME", NULL, NULL},
+ { GD_MGMT_CLI_RENAME_VOLUME, "CLI_RENAME_VOLUME", NULL, NULL},
+ { GD_MGMT_CLI_DEFRAG_VOLUME, "CLI_DEFRAG_VOLUME", NULL, NULL},
+ { GD_MGMT_CLI_SET_VOLUME, "CLI_DEFRAG_VOLUME", NULL, NULL},
+ { GD_MGMT_CLI_ADD_BRICK, "CLI_ADD_BRICK", NULL, NULL},
+ { GD_MGMT_CLI_REMOVE_BRICK, "CLI_REMOVE_BRICK", NULL, NULL},
+ { GD_MGMT_CLI_REPLACE_BRICK, "CLI_REPLACE_BRICK", NULL, NULL},
+ { GD_MGMT_CLI_LOG_FILENAME, "CLI_LOG_FILENAME", NULL, NULL},
+ { GD_MGMT_CLI_LOG_LOCATE, "CLI_LOG_LOCATE", NULL, NULL},
+ { GD_MGMT_CLI_LOG_ROTATE, "CLI_LOG_ROTATE", NULL, NULL},
+ { GD_MGMT_CLI_SYNC_VOLUME, "CLI_SYNC_VOLUME", NULL, NULL},
+ { GD_MGMT_CLI_RESET_VOLUME, "CLI_RESET_VOLUME", NULL, NULL},
+ { GD_MGMT_CLI_FSM_LOG, "CLI_FSM_LOG", NULL, NULL},
+ { GD_MGMT_CLI_GSYNC_SET, "CLI_GSYNC_SET", NULL, NULL},
+ { GD_MGMT_CLI_PROFILE_VOLUME, "CLI_PROFILE_VOLUME", NULL, NULL},
+ { GD_MGMT_BRICK_OP, "BRICK_OP", NULL, NULL},
+ { GD_MGMT_CLI_LOG_LEVEL, "CLI_LOG_LEVEL", NULL, NULL},
+ { GD_MGMT_CLI_STATUS_VOLUME, "CLI_STATUS_VOLUME", NULL, NULL},
+ { 0, NULL, NULL, NULL}
+};
+
+static const vsff gd_mgmt_2_proc[] = {
+ { GLUSTERD_MGMT_2_NULL, "NULL", NULL, NULL},
+ {
+ GLUSTERD_MGMT_2_CLUSTER_LOCK, "CLUSTER_LOCK",
+ glusterd_mgmt_2_cluster_lock_call,
+ glusterd_mgmt_2_cluster_lock_reply
+ },
+ {
+ GLUSTERD_MGMT_2_CLUSTER_UNLOCK, "CLUSTER_UNLOCK",
+ /* UNLOCK seems to be the same a LOCK, re-use the function */
+ glusterd_mgmt_2_cluster_lock_call,
+ glusterd_mgmt_2_cluster_lock_reply
+ },
+ {
+ GLUSTERD_MGMT_2_STAGE_OP, "STAGE_OP",
+ glusterd_mgmt_2_stage_op_call, glusterd_mgmt_2_stage_op_reply
+ },
+ {
+ GLUSTERD_MGMT_2_COMMIT_OP, "COMMIT_OP",
+ glusterd_mgmt_2_commit_op_call, glusterd_mgmt_2_commit_op_reply
+ },
+ { 0, NULL, NULL, NULL}
+};
+
+static const vsff gd_mgmt_brick_2_proc[] = {
+ { GLUSTERD_2_BRICK_NULL, "NULL", NULL , NULL }, /* 0 */
+ {
+ GLUSTERD_2_BRICK_TERMINATE, "TERMINATE",
+ glusterd_brick_2_common_call, glusterd_brick_2_common_reply
+ },
+ {
+ GLUSTERD_2_BRICK_XLATOR_INFO, "XLATOR_INFO",
+ glusterd_brick_2_common_call, glusterd_brick_2_common_reply
+ },
+ {
+ GLUSTERD_2_BRICK_XLATOR_OP, "XLATOR_OP" ,
+ glusterd_brick_2_common_call, glusterd_brick_2_common_reply
+ },
+ {
+ GLUSTERD_2_BRICK_STATUS, "STATUS",
+ glusterd_brick_2_common_call, glusterd_brick_2_common_reply
+ },
+ {
+ GLUSTERD_2_BRICK_OP, "OP",
+ glusterd_brick_2_common_call, glusterd_brick_2_common_reply
+ },
+ {
+ GLUSTERD_2_BRICK_XLATOR_DEFRAG, "XLATOR_DEFRAG",
+ glusterd_brick_2_common_call, glusterd_brick_2_common_reply
+ },
+ {
+ GLUSTERD_2_NODE_PROFILE, "NODE_PROFILE",
+ glusterd_brick_2_common_call, glusterd_brick_2_common_reply
+ },
+ {
+ GLUSTERD_2_NODE_STATUS, "NODE_STATUS",
+ glusterd_brick_2_common_call, glusterd_brick_2_common_reply
+ },
+ { 0, NULL, NULL, NULL }
+};
+
+static const vsff glusterd_friend_proc[] = {
+ { GLUSTERD_FRIEND_NULL,"NULL" , NULL,NULL },
+ { GLUSTERD_PROBE_QUERY, "PROBE_QUERY" , NULL , NULL },
+ { GLUSTERD_FRIEND_ADD, "ADD" , NULL , NULL },
+ { GLUSTERD_FRIEND_REMOVE,"REMOVE", NULL , NULL },
+ { GLUSTERD_FRIEND_UPDATE,"UPDATE" , NULL , NULL },
+ { 0, NULL, NULL, NULL }
+};
+
+static const value_string gd_mgmt_proc_vals[] = {
+ { GD_MGMT_NULL, "NULL" },
+ { GD_MGMT_PROBE_QUERY, "PROBE_QUERY" },
+ { GD_MGMT_FRIEND_ADD, "FRIEND_ADD" },
+ { GD_MGMT_CLUSTER_LOCK, "CLUSTER_LOCK" },
+ { GD_MGMT_CLUSTER_UNLOCK, "CLUSTER_UNLOCK" },
+ { GD_MGMT_STAGE_OP, "STAGE_OP" },
+ { GD_MGMT_COMMIT_OP, "COMMIT_OP" },
+ { GD_MGMT_FRIEND_REMOVE, "FRIEND_REMOVE" },
+ { GD_MGMT_FRIEND_UPDATE, "FRIEND_UPDATE" },
+ { GD_MGMT_CLI_PROBE, "CLI_PROBE" },
+ { GD_MGMT_CLI_DEPROBE, "CLI_DEPROBE" },
+ { GD_MGMT_CLI_LIST_FRIENDS, "CLI_LIST_FRIENDS" },
+ { GD_MGMT_CLI_CREATE_VOLUME, "CLI_CREATE_VOLUME" },
+ { GD_MGMT_CLI_GET_VOLUME, "CLI_GET_VOLUME" },
+ { GD_MGMT_CLI_DELETE_VOLUME, "CLI_DELETE_VOLUME" },
+ { GD_MGMT_CLI_START_VOLUME, "CLI_START_VOLUME" },
+ { GD_MGMT_CLI_STOP_VOLUME, "CLI_STOP_VOLUME" },
+ { GD_MGMT_CLI_RENAME_VOLUME, "CLI_RENAME_VOLUME" },
+ { GD_MGMT_CLI_DEFRAG_VOLUME, "CLI_DEFRAG_VOLUME" },
+ { GD_MGMT_CLI_SET_VOLUME, "CLI_DEFRAG_VOLUME" },
+ { GD_MGMT_CLI_ADD_BRICK, "CLI_ADD_BRICK" },
+ { GD_MGMT_CLI_REMOVE_BRICK, "CLI_REMOVE_BRICK" },
+ { GD_MGMT_CLI_REPLACE_BRICK, "CLI_REPLACE_BRICK" },
+ { GD_MGMT_CLI_LOG_FILENAME, "CLI_LOG_FILENAME" },
+ { GD_MGMT_CLI_LOG_LOCATE, "CLI_LOG_LOCATE" },
+ { GD_MGMT_CLI_LOG_ROTATE, "CLI_LOG_ROTATE" },
+ { GD_MGMT_CLI_SYNC_VOLUME, "CLI_SYNC_VOLUME" },
+ { GD_MGMT_CLI_RESET_VOLUME, "CLI_RESET_VOLUME" },
+ { GD_MGMT_CLI_FSM_LOG, "CLI_FSM_LOG" },
+ { GD_MGMT_CLI_GSYNC_SET, "CLI_GSYNC_SET" },
+ { GD_MGMT_CLI_PROFILE_VOLUME, "CLI_PROFILE_VOLUME" },
+ { GD_MGMT_BRICK_OP, "BRICK_OP" },
+ { GD_MGMT_CLI_LOG_LEVEL, "CLI_LOG_LEVEL" },
+ { GD_MGMT_CLI_STATUS_VOLUME, "CLI_STATUS_VOLUME" },
+ { 0, NULL }
+};
+
+static const value_string gd_mgmt_2_proc_vals[] = {
+ { GLUSTERD_MGMT_2_NULL , "NULL" },
+ { GLUSTERD_MGMT_2_CLUSTER_LOCK, "CLUSTER_LOCK" },
+ { GLUSTERD_MGMT_2_CLUSTER_UNLOCK, "CLUSTER_UNLOCK" },
+ { GLUSTERD_MGMT_2_STAGE_OP, "STAGE_OP"},
+ { GLUSTERD_MGMT_2_COMMIT_OP, " GLUSTERD_MGMT_COMMIT_OP"},
+ { 0, NULL }
+};
+
+static const value_string gd_mgmt_brick_2_proc_vals[] = {
+ { GLUSTERD_2_BRICK_NULL,"NULL" }, /* 0 */
+ { GLUSTERD_2_BRICK_TERMINATE, "TERMINATE" },
+ { GLUSTERD_2_BRICK_XLATOR_INFO, "XLATOR_INFO" },
+ { GLUSTERD_2_BRICK_XLATOR_OP, "XLATOR_OP" },
+ { GLUSTERD_2_BRICK_STATUS, "STATUS" },
+ { GLUSTERD_2_BRICK_OP, "OP" },
+ { GLUSTERD_2_BRICK_XLATOR_DEFRAG, "XLATOR_DEFRAG" },
+ { GLUSTERD_2_NODE_PROFILE, "GLUSTERD_2_NODE_PROFILE" },
+ { GLUSTERD_2_NODE_STATUS, "GLUSTERD_2_NODE_PROFILE" },
+ { 0, NULL }
+};
+
+static const value_string glusterd_op_vals[] = {
+ { GD_OP_NONE, "NONE" },
+ { GD_OP_CREATE_VOLUME, "CREATE_VOLUME" },
+ { GD_OP_START_BRICK, "START_BRICK" },
+ { GD_OP_STOP_BRICK, "STOP_BRICK" },
+ { GD_OP_DELETE_VOLUME, "DELETE_VOLUME" },
+ { GD_OP_START_VOLUME, "START_VOLUME" },
+ { GD_OP_STOP_VOLUME, "STOP_VOLUME" },
+ { GD_OP_DEFRAG_VOLUME, "DEFRAG_VOLUME" },
+ { GD_OP_ADD_BRICK, "ADD_BRICK" },
+ { GD_OP_REMOVE_BRICK, "REMOVE_BRICK" },
+ { GD_OP_REPLACE_BRICK, "REPLACE_BRICK" },
+ { GD_OP_SET_VOLUME, "SET_VOLUME" },
+ { GD_OP_RESET_VOLUME, "RESET_VOLUME" },
+ { GD_OP_SYNC_VOLUME, "SYNC_VOLUME" },
+ { GD_OP_LOG_ROTATE, "LOG_ROTATE" },
+ { GD_OP_GSYNC_SET, "GSYNC_SET" },
+ { GD_OP_PROFILE_VOLUME, "PROFILE_VOLUME" },
+ { GD_OP_QUOTA, "QUOTA" },
+ { GD_OP_STATUS_VOLUME, "STATUS_VOLUME" },
+ { GD_OP_REBALANCE, "REBALANCE" },
+ { GD_OP_HEAL_VOLUME, "HEAL_VOLUME" },
+ { GD_OP_STATEDUMP_VOLUME, "STATEDUMP_VOLUME" },
+ { GD_OP_LIST_VOLUME, "LIST_VOLUME" },
+ { GD_OP_CLEARLOCKS_VOLUME, "CLEARLOCKS_VOLUME" },
+ { GD_OP_DEFRAG_BRICK_VOLUME, "DEFRAG_BRICK_VOLUME" },
+ { 0, NULL }
+};
+
+static const value_string glusterd_friend_proc_vals[] = {
+ { GLUSTERD_FRIEND_NULL, "NULL" },
+ { GLUSTERD_PROBE_QUERY, "PROBE_QUERY" },
+ { GLUSTERD_FRIEND_ADD, "ADD" },
+ { GLUSTERD_FRIEND_REMOVE, "REMOVE" },
+ { GLUSTERD_FRIEND_UPDATE, "UPDATE" },
+ { 0, NULL }
+};
+
+void
+proto_register_gluster_gd_mgmt(void)
+{
+ /* Setup list of header fields See Section 1.6.1 for details */
+ static hf_register_info hf[] = {
+ /* programs */
+ { &hf_gd_mgmt_proc,
+ { "Gluster Daemon Management", "glusterd.mgmt.proc",
+ FT_UINT32, BASE_DEC, VALS(gd_mgmt_proc_vals),
+ 0, NULL, HFILL }
+ },
+ { &hf_gd_mgmt_2_proc,
+ { "Gluster Daemon Management", "glusterd.mgmt.proc",
+ FT_UINT32, BASE_DEC, VALS(gd_mgmt_2_proc_vals),
+ 0, NULL, HFILL }
+ },
+ { &hf_gd_mgmt_brick_2_proc,
+ { "Gluster Daemon Brick Operations",
+ "glusterd.brick.proc", FT_UINT32, BASE_DEC,
+ VALS(gd_mgmt_brick_2_proc_vals), 0, NULL,
+ HFILL }
+ },
+ { &hf_glusterd_friend_proc ,
+ { "Gluster Daemon Friend Operations",
+ "glusterd.friend.proc", FT_UINT32, BASE_DEC,
+ VALS(glusterd_friend_proc_vals), 0, NULL,
+ HFILL }
+ },
+ { &hf_glusterd_dict,
+ { "Dict", "glusterd.dict", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterd_op,
+ { "Operation", "glusterd.op", FT_UINT32, BASE_DEC,
+ VALS(glusterd_op_vals), 0, NULL, HFILL }
+ },
+ { &hf_glusterd_op_errstr,
+ { "Error", "glusterd.op_errstr", FT_STRING,
+ BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterd_uuid,
+ { "UUID", "glusterd.uuid", FT_GUID,
+ BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterd_hostname,
+ { "Hostname", "glusterd.hostname", FT_STRING,
+ BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterd_port,
+ { "Port", "glusterd.port", FT_INT32, BASE_DEC,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterd_vols,
+ { "Volumes", "glusterd.vols", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterd_buf,
+ { "Buffer", "glusterd.buffer", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterd_name,
+ { "Name", "glusterd.name", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }
+ }
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_gd_mgmt,
+ &ett_gd_brick,
+ &ett_gd_friend
+ };
+
+ /* Register the protocol name and description */
+ proto_glusterd = proto_register_protocol("Gluster Daemon", "GlusterD",
+ "glusterd");
+ proto_register_subtree_array(ett, array_length(ett));
+ proto_register_field_array(proto_glusterd, hf, array_length(hf));
+
+ proto_gd_mgmt = proto_register_protocol("Gluster Daemon Management",
+ "GlusterD Management", "glusterd.mgmt");
+ proto_gd_brick = proto_register_protocol(
+ "Gluster Daemon Brick Operations",
+ "GlusterD Brick", "glusterd.brick");
+ proto_gd_friend = proto_register_protocol(
+ "Gluster Daemon Friend Operations",
+ "GlusterD Friend", "glusterd.friend");
+}
+
+void
+proto_reg_handoff_gluster_gd_mgmt(void)
+{
+ rpc_init_prog(proto_gd_mgmt, GD_MGMT_PROGRAM, ett_gd_mgmt);
+ rpc_init_proc_table(GD_MGMT_PROGRAM, 1, gd_mgmt_proc, hf_gd_mgmt_proc);
+ rpc_init_proc_table(GD_MGMT_PROGRAM, 2, gd_mgmt_2_proc,
+ hf_gd_mgmt_2_proc);
+
+ rpc_init_prog(proto_gd_brick, GD_BRICK_PROGRAM, ett_gd_brick);
+ rpc_init_proc_table(GD_BRICK_PROGRAM, 2, gd_mgmt_brick_2_proc,
+ hf_gd_mgmt_brick_2_proc);
+ rpc_init_prog(proto_gd_friend, GD_FRIEND_PROGRAM, ett_gd_friend);
+ rpc_init_proc_table(GD_FRIEND_PROGRAM, 2,glusterd_friend_proc,
+ hf_glusterd_friend_proc);
+
+}
diff --git a/epan/dissectors/packet-glusterfs.c b/epan/dissectors/packet-glusterfs.c
new file mode 100644
index 0000000000..d183c3edd2
--- /dev/null
+++ b/epan/dissectors/packet-glusterfs.c
@@ -0,0 +1,2593 @@
+/* packet-glusterfs.c
+ * Routines for GlusterFS dissection
+ * Copyright 2012, Niels de Vos <ndevos@redhat.com>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ *
+ * References to source files point in general to the glusterfs sources.
+ * There is currently no RFC or other document where the protocol is
+ * completely described. The glusterfs sources can be found at:
+ * - http://git.gluster.com/?p=glusterfs.git
+ * - https://github.com/gluster/glusterfs
+ *
+ * The coding-style is roughly the same as the one use in the Linux kernel,
+ * see http://www.kernel.org/doc/Documentation/CodingStyle.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+#include <string.h>
+#include <epan/packet.h>
+#include <epan/tfs.h>
+#include <epan/guid-utils.h>
+
+#include "packet-rpc.h"
+#include "packet-gluster.h"
+
+/* Initialize the protocol and registered fields */
+static gint proto_glusterfs = -1;
+
+/* programs and procedures */
+static gint hf_glusterfs_proc = -1;
+
+/* fields used by multiple programs/procedures */
+static gint hf_gluster_op_ret = -1;
+static gint hf_gluster_op_errno = -1;
+
+/* GlusterFS specific */
+static gint hf_glusterfs_gfid = -1;
+static gint hf_glusterfs_pargfid = -1;
+static gint hf_glusterfs_oldgfid = -1;
+static gint hf_glusterfs_newgfid = -1;
+static gint hf_glusterfs_path = -1;
+static gint hf_glusterfs_bname = -1;
+static gint hf_glusterfs_dict = -1;
+static gint hf_glusterfs_fd = -1;
+static gint hf_glusterfs_offset = -1;
+static gint hf_glusterfs_size = -1;
+static gint hf_glusterfs_volume = -1;
+static gint hf_glusterfs_cmd = -1;
+static gint hf_glusterfs_type = -1;
+static gint hf_glusterfs_entries = -1;
+static gint hf_glusterfs_xflags = -1;
+static gint hf_glusterfs_linkname = -1;
+static gint hf_glusterfs_umask = -1;
+static gint hf_glusterfs_mask = -1;
+static gint hf_glusterfs_name = -1;
+static gint hf_glusterfs_namelen = -1;
+
+/* flags passed on to OPEN, CREATE etc.*/
+static gint hf_glusterfs_flags = -1;
+static gint hf_glusterfs_flags_rdonly = -1;
+static gint hf_glusterfs_flags_wronly = -1;
+static gint hf_glusterfs_flags_rdwr = -1;
+static gint hf_glusterfs_flags_accmode = -1;
+static gint hf_glusterfs_flags_append = -1;
+static gint hf_glusterfs_flags_async = -1;
+static gint hf_glusterfs_flags_cloexec = -1;
+static gint hf_glusterfs_flags_creat = -1;
+static gint hf_glusterfs_flags_direct = -1;
+static gint hf_glusterfs_flags_directory = -1;
+static gint hf_glusterfs_flags_excl = -1;
+static gint hf_glusterfs_flags_largefile = -1;
+static gint hf_glusterfs_flags_noatime = -1;
+static gint hf_glusterfs_flags_noctty = -1;
+static gint hf_glusterfs_flags_nofollow = -1;
+static gint hf_glusterfs_flags_nonblock = -1;
+static gint hf_glusterfs_flags_ndelay = -1;
+static gint hf_glusterfs_flags_sync = -1;
+static gint hf_glusterfs_flags_trunc = -1;
+static gint hf_glusterfs_flags_reserved = -1;
+
+/* access modes */
+static gint hf_glusterfs_mode = -1;
+static gint hf_glusterfs_mode_suid = -1;
+static gint hf_glusterfs_mode_sgid = -1;
+static gint hf_glusterfs_mode_svtx = -1;
+static gint hf_glusterfs_mode_rusr = -1;
+static gint hf_glusterfs_mode_wusr = -1;
+static gint hf_glusterfs_mode_xusr = -1;
+static gint hf_glusterfs_mode_rgrp = -1;
+static gint hf_glusterfs_mode_wgrp = -1;
+static gint hf_glusterfs_mode_xgrp = -1;
+static gint hf_glusterfs_mode_roth = -1;
+static gint hf_glusterfs_mode_woth = -1;
+static gint hf_glusterfs_mode_xoth = -1;
+static gint hf_glusterfs_mode_reserved = -1;
+
+/* dir-entry */
+static gint hf_glusterfs_entry_ino = -1;
+static gint hf_glusterfs_entry_off = -1;
+static gint hf_glusterfs_entry_len = -1;
+static gint hf_glusterfs_entry_type = -1;
+static gint hf_glusterfs_entry_path = -1;
+
+/* gf_iatt */
+static gint hf_glusterfs_iatt = -1;
+static gint hf_glusterfs_preparent_iatt = -1;
+static gint hf_glusterfs_postparent_iatt = -1;
+static gint hf_glusterfs_preop_iatt = -1;
+static gint hf_glusterfs_postop_iatt = -1;
+static gint hf_glusterfs_ia_ino = -1;
+static gint hf_glusterfs_ia_dev = -1;
+static gint hf_glusterfs_ia_mode = -1;
+static gint hf_glusterfs_ia_nlink = -1;
+static gint hf_glusterfs_ia_uid = -1;
+static gint hf_glusterfs_ia_gid = -1;
+static gint hf_glusterfs_ia_rdev = -1;
+static gint hf_glusterfs_ia_size = -1;
+static gint hf_glusterfs_ia_blksize = -1;
+static gint hf_glusterfs_ia_blocks = -1;
+static gint hf_glusterfs_ia_atime = -1;
+static gint hf_glusterfs_ia_mtime = -1;
+static gint hf_glusterfs_ia_ctime = -1;
+
+/* gf_flock */
+static gint hf_glusterfs_flock_type = -1;
+static gint hf_glusterfs_flock_whence = -1;
+static gint hf_glusterfs_flock_start = -1;
+static gint hf_glusterfs_flock_len = -1;
+static gint hf_glusterfs_flock_pid = -1;
+static gint hf_glusterfs_flock_owner = -1;
+
+/* statfs */
+static gint hf_glusterfs_bsize = -1;
+static gint hf_glusterfs_frsize = -1;
+static gint hf_glusterfs_blocks = -1;
+static gint hf_glusterfs_bfree = -1;
+static gint hf_glusterfs_bavail = -1;
+static gint hf_glusterfs_files = -1;
+static gint hf_glusterfs_ffree = -1;
+static gint hf_glusterfs_favail = -1;
+static gint hf_glusterfs_id = -1;
+static gint hf_glusterfs_mnt_flags = -1;
+static gint hf_glusterfs_mnt_flag_rdonly = -1;
+static gint hf_glusterfs_mnt_flag_nosuid = -1;
+static gint hf_glusterfs_mnt_flag_nodev = -1;
+static gint hf_glusterfs_mnt_flag_noexec = -1;
+static gint hf_glusterfs_mnt_flag_synchronous = -1;
+static gint hf_glusterfs_mnt_flag_mandlock = -1;
+static gint hf_glusterfs_mnt_flag_write = -1;
+static gint hf_glusterfs_mnt_flag_append = -1;
+static gint hf_glusterfs_mnt_flag_immutable = -1;
+static gint hf_glusterfs_mnt_flag_noatime = -1;
+static gint hf_glusterfs_mnt_flag_nodiratime = -1;
+static gint hf_glusterfs_mnt_flag_relatime = -1;
+static gint hf_glusterfs_namemax = -1;
+
+static gint hf_glusterfs_setattr_valid = -1;
+/* flags for setattr.valid */
+static gint hf_glusterfs_setattr_set_mode = -1;
+static gint hf_glusterfs_setattr_set_uid = -1;
+static gint hf_glusterfs_setattr_set_gid = -1;
+static gint hf_glusterfs_setattr_set_size = -1;
+static gint hf_glusterfs_setattr_set_atime = -1;
+static gint hf_glusterfs_setattr_set_mtime = -1;
+static gint hf_glusterfs_setattr_set_reserved = -1;
+
+/* Rename */
+static gint hf_glusterfs_oldbname = -1;
+static gint hf_glusterfs_newbname = -1;
+
+/* for FSYNCDIR */
+static gint hf_glusterfs_yncdir_data = -1;
+
+/* for entrylk */
+static gint hf_glusterfs_entrylk_namelen = -1;
+
+/* Initialize the subtree pointers */
+static gint ett_glusterfs = -1;
+static gint ett_glusterfs_flags = -1;
+static gint ett_glusterfs_mnt_flags = -1;
+static gint ett_glusterfs_mode = -1;
+static gint ett_glusterfs_setattr_valid = -1;
+static gint ett_glusterfs_parent_iatt = -1;
+static gint ett_glusterfs_iatt = -1;
+static gint ett_glusterfs_entry = -1;
+static gint ett_glusterfs_flock = -1;
+static gint ett_gluster_dict = -1;
+static gint ett_gluster_dict_items = -1;
+
+static int
+glusterfs_rpc_dissect_gfid(proto_tree *tree, tvbuff_t *tvb, int hfindex, int offset)
+{
+ if (tree)
+ proto_tree_add_item(tree, hfindex, tvb, offset, 16, ENC_NA);
+ offset += 16;
+
+ return offset;
+}
+
+static int
+glusterfs_rpc_dissect_mode(proto_tree *tree, tvbuff_t *tvb, int hfindex,
+ int offset)
+{
+ static const int *mode_bits[] = {
+ &hf_glusterfs_mode_suid,
+ &hf_glusterfs_mode_sgid,
+ &hf_glusterfs_mode_svtx,
+ &hf_glusterfs_mode_rusr,
+ &hf_glusterfs_mode_wusr,
+ &hf_glusterfs_mode_xusr,
+ &hf_glusterfs_mode_rgrp,
+ &hf_glusterfs_mode_wgrp,
+ &hf_glusterfs_mode_xgrp,
+ &hf_glusterfs_mode_roth,
+ &hf_glusterfs_mode_woth,
+ &hf_glusterfs_mode_xoth,
+ &hf_glusterfs_mode_reserved,
+ NULL
+ };
+
+ if (tree)
+ proto_tree_add_bitmask(tree, tvb, offset, hfindex,
+ ett_glusterfs_mode, mode_bits, ENC_LITTLE_ENDIAN);
+
+ offset += 4;
+ return offset;
+}
+
+/*
+ * from rpc/xdr/src/glusterfs3-xdr.c:xdr_gf_iatt()
+ */
+static int
+glusterfs_rpc_dissect_gf_iatt(proto_tree *tree, tvbuff_t *tvb, int hfindex,
+ int offset)
+{
+ proto_item *iatt_item;
+ proto_tree *iatt_tree;
+ nstime_t timestamp;
+
+ iatt_item = proto_tree_add_item(tree, hfindex, tvb, offset, -1,
+ ENC_NA);
+ iatt_tree = proto_item_add_subtree(iatt_item, ett_glusterfs_iatt);
+
+ offset = glusterfs_rpc_dissect_gfid(iatt_tree, tvb, hf_glusterfs_gfid,
+ offset);
+ offset = dissect_rpc_uint64(tvb, iatt_tree, hf_glusterfs_ia_ino,
+ offset);
+ offset = dissect_rpc_uint64(tvb, iatt_tree, hf_glusterfs_ia_dev,
+ offset);
+ offset = glusterfs_rpc_dissect_mode(iatt_tree, tvb,
+ hf_glusterfs_ia_mode, offset);
+ offset = dissect_rpc_uint32(tvb, iatt_tree, hf_glusterfs_ia_nlink,
+ offset);
+ offset = dissect_rpc_uint32(tvb, iatt_tree, hf_glusterfs_ia_uid,
+ offset);
+ offset = dissect_rpc_uint32(tvb, iatt_tree, hf_glusterfs_ia_gid,
+ offset);
+ offset = dissect_rpc_uint64(tvb, iatt_tree, hf_glusterfs_ia_rdev,
+ offset);
+ offset = dissect_rpc_uint64(tvb, iatt_tree, hf_glusterfs_ia_size,
+ offset);
+ offset = dissect_rpc_uint32(tvb, iatt_tree, hf_glusterfs_ia_blksize,
+ offset);
+ offset = dissect_rpc_uint64(tvb, iatt_tree, hf_glusterfs_ia_blocks,
+ offset);
+
+ timestamp.secs = tvb_get_ntohl(tvb, offset);
+ timestamp.nsecs = tvb_get_ntohl(tvb, offset + 4);
+ if (tree)
+ proto_tree_add_time(iatt_tree, hf_glusterfs_ia_atime, tvb,
+ offset, 8, &timestamp);
+ offset += 8;
+
+ timestamp.secs = tvb_get_ntohl(tvb, offset);
+ timestamp.nsecs = tvb_get_ntohl(tvb, offset + 4);
+ if (tree)
+ proto_tree_add_time(iatt_tree, hf_glusterfs_ia_mtime, tvb,
+ offset, 8, &timestamp);
+ offset += 8;
+
+ timestamp.secs = tvb_get_ntohl(tvb, offset);
+ timestamp.nsecs = tvb_get_ntohl(tvb, offset + 4);
+ if (tree)
+ proto_tree_add_time(iatt_tree, hf_glusterfs_ia_ctime, tvb,
+ offset, 8, &timestamp);
+ offset += 8;
+
+ return offset;
+}
+
+static int
+glusterfs_rpc_dissect_gf_flock(proto_tree *tree, tvbuff_t *tvb, int offset)
+{
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_flock_type, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_flock_whence, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_flock_start, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_flock_len, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_flock_pid, offset);
+
+ if (tree)
+ proto_tree_add_item(tree, hf_glusterfs_flock_owner, tvb,
+ offset, 8, ENC_NA);
+ offset += 8;
+
+ return offset;
+}
+
+static int
+glusterfs_rpc_dissect_gf_2_flock(proto_tree *tree, tvbuff_t *tvb, int offset)
+{
+ proto_item *flock_item;
+ proto_tree *flock_tree;
+ int len;
+
+ flock_item = proto_tree_add_text(tree, tvb, offset, -1, "Flock");
+ flock_tree = proto_item_add_subtree(flock_item, ett_glusterfs_flock);
+
+ offset = dissect_rpc_uint32(tvb, flock_tree, hf_glusterfs_flock_type,
+ offset);
+ offset = dissect_rpc_uint32(tvb, flock_tree, hf_glusterfs_flock_whence,
+ offset);
+ offset = dissect_rpc_uint64(tvb, flock_tree, hf_glusterfs_flock_start,
+ offset);
+ offset = dissect_rpc_uint64(tvb, flock_tree, hf_glusterfs_flock_len,
+ offset);
+ offset = dissect_rpc_uint32(tvb, flock_tree, hf_glusterfs_flock_pid,
+ offset);
+
+ len = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+
+ if (tree)
+ proto_tree_add_item(flock_tree, hf_glusterfs_flock_owner, tvb,
+ offset, len, ENC_NA);
+ offset += len;
+
+ return offset;
+}
+
+static int
+glusterfs_rpc_dissect_flags(proto_tree *tree, tvbuff_t *tvb, int offset)
+{
+ gboolean rdonly, accmode;
+ proto_item *flag_tree, *rdonly_item, *accmode_item;
+ header_field_info *rdonly_hf, *accmode_hf;
+
+ static const int *flag_bits[] = {
+ &hf_glusterfs_flags_wronly,
+ &hf_glusterfs_flags_rdwr,
+ &hf_glusterfs_flags_creat,
+ &hf_glusterfs_flags_excl,
+ &hf_glusterfs_flags_noctty,
+ &hf_glusterfs_flags_trunc,
+ &hf_glusterfs_flags_append,
+ &hf_glusterfs_flags_nonblock,
+ &hf_glusterfs_flags_ndelay,
+ &hf_glusterfs_flags_sync,
+ &hf_glusterfs_flags_async,
+ &hf_glusterfs_flags_direct,
+ &hf_glusterfs_flags_largefile,
+ &hf_glusterfs_flags_directory,
+ &hf_glusterfs_flags_nofollow,
+ &hf_glusterfs_flags_noatime,
+ &hf_glusterfs_flags_cloexec,
+ &hf_glusterfs_flags_reserved,
+ NULL
+ };
+
+ if (tree) {
+ flag_tree = proto_tree_add_bitmask(tree, tvb, offset, hf_glusterfs_flags, ett_glusterfs_flags, flag_bits, ENC_LITTLE_ENDIAN);
+
+ /* rdonly is TRUE only when no flags are set */
+ rdonly = (tvb_get_ntohl(tvb, offset) == 0);
+ rdonly_item = proto_tree_add_boolean(flag_tree, hf_glusterfs_flags_rdonly, tvb, offset, 4, rdonly);
+ rdonly_hf = proto_registrar_get_nth(hf_glusterfs_flags_rdonly);
+ /* show a static value of zero's, proto_tree_add_boolean() removes them */
+ proto_item_set_text(rdonly_item, "0000 0000 0000 0000 0000 0000 0000 0000 = %s: %s",
+ rdonly_hf->name, rdonly ? tfs_set_notset.true_string : tfs_set_notset.false_string);
+ PROTO_ITEM_SET_GENERATED(rdonly_item);
+ if (rdonly)
+ proto_item_append_text(flag_tree, ", %s", rdonly_hf->name);
+
+ /* hf_glusterfs_flags_accmode is TRUE if bits 0 and 1 are set */
+ accmode_hf = proto_registrar_get_nth(hf_glusterfs_flags_accmode);
+ accmode = ((tvb_get_ntohl(tvb, offset) & accmode_hf->bitmask) == accmode_hf->bitmask);
+ accmode_item = proto_tree_add_boolean(flag_tree, hf_glusterfs_flags_accmode, tvb, offset, 4, accmode);
+ PROTO_ITEM_SET_GENERATED(accmode_item);
+ if (accmode)
+ proto_item_append_text(flag_tree, ", %s", proto_registrar_get_nth(hf_glusterfs_flags_accmode)->name);
+ }
+
+ offset += 4;
+ return offset;
+}
+
+static int
+glusterfs_rpc_dissect_statfs(proto_tree *tree, tvbuff_t *tvb, int offset)
+{
+ static const int *flag_bits[] = {
+ &hf_glusterfs_mnt_flag_rdonly,
+ &hf_glusterfs_mnt_flag_nosuid,
+ &hf_glusterfs_mnt_flag_nodev,
+ &hf_glusterfs_mnt_flag_noexec,
+ &hf_glusterfs_mnt_flag_synchronous,
+ &hf_glusterfs_mnt_flag_mandlock,
+ &hf_glusterfs_mnt_flag_write,
+ &hf_glusterfs_mnt_flag_append,
+ &hf_glusterfs_mnt_flag_immutable,
+ &hf_glusterfs_mnt_flag_noatime,
+ &hf_glusterfs_mnt_flag_nodiratime,
+ &hf_glusterfs_mnt_flag_relatime,
+ NULL
+ };
+
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_bsize, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_frsize, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_blocks, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_bfree, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_bavail, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_files, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_ffree, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_favail, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_id, offset);
+
+ /* hf_glusterfs_mnt_flags should be FT_UINT64, but that does not work
+ * with bitmasks, only the lower 32 bits are used anyway. */
+ if (tree)
+ proto_tree_add_bitmask(tree, tvb, offset + 4,
+ hf_glusterfs_mnt_flags, ett_glusterfs_mnt_flags,
+ flag_bits, ENC_LITTLE_ENDIAN);
+ offset += 8;
+
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_namemax, offset);
+
+ return offset;
+}
+
+/* function for dissecting and adding a gluster dict_t to the tree */
+int
+gluster_rpc_dissect_dict(proto_tree *tree, tvbuff_t *tvb, int hfindex, int offset)
+{
+ gchar *key, *value, *name;
+ gint items, i, len, roundup, value_len, key_len;
+
+ proto_item *subtree_item;
+ proto_tree *subtree;
+
+ proto_item *dict_item = NULL;
+
+ /* create a subtree for all the items in the dict */
+ if (hfindex >= 0) {
+ header_field_info *hfinfo = proto_registrar_get_nth(hfindex);
+ name = (gchar*) hfinfo->name;
+ } else
+ name = "<NAMELESS DICT STRUCTURE>";
+
+ subtree_item = proto_tree_add_text(tree, tvb, offset, -1, "%s", name);
+
+ subtree = proto_item_add_subtree(subtree_item, ett_gluster_dict);
+
+ len = tvb_get_ntohl(tvb, offset);
+ roundup = rpc_roundup(len) - len;
+ proto_tree_add_text(subtree, tvb, offset, 4, "[Size: %d (%d bytes inc. RPC-roundup)]", len, rpc_roundup(len));
+ offset += 4;
+
+ if (len == 0)
+ items = 0;
+ else
+ items = tvb_get_ntohl(tvb, offset);
+
+ proto_item_append_text(subtree_item, ", contains %d item%s", items, items == 1 ? "" : "s");
+ proto_tree_add_text(subtree, tvb, offset, 4, "Items: %d", items);
+
+ if (len == 0)
+ return offset;
+
+ offset += 4;
+
+ for (i = 0; i < items; i++) {
+ /* key_len is the length of the key without the terminating '\0' */
+ /* key_len = tvb_get_ntohl(tvb, offset) + 1; // will be read later */
+ offset += 4;
+ value_len = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+
+ /* read the key, '\0' terminated */
+ key = tvb_get_stringz(tvb, offset, &key_len);
+ if (tree)
+ dict_item = proto_tree_add_text(subtree, tvb, offset, -1, "%s: ", key);
+ offset += key_len;
+
+ /* read the value, possibly '\0' terminated */
+ value = tvb_get_string(tvb, offset, value_len);
+ if (tree) {
+ /* keys named "gfid-req" contain a GFID in hex */
+ if (value_len == 16 && !strncmp("gfid-req", key, 8)) {
+ char *gfid;
+ gfid = guid_to_str((e_guid_t*) value);
+ proto_item_append_text(dict_item, "%s", gfid);
+ } else
+ proto_item_append_text(dict_item, "%s", value);
+ }
+ offset += value_len;
+
+ g_free(key);
+ g_free(value);
+ }
+
+ if (roundup) {
+ if (tree)
+ proto_tree_add_text(subtree, tvb, offset, -1, "[RPC-roundup bytes: %d]", roundup);
+ offset += roundup;
+ }
+
+ return offset;
+}
+
+int
+gluster_dissect_common_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_item *errno_item;
+ guint op_errno;
+
+ offset = dissect_rpc_uint32(tvb, tree, hf_gluster_op_ret, offset);
+
+ if (tree) {
+ op_errno = tvb_get_ntohl(tvb, offset);
+ errno_item = proto_tree_add_int(tree, hf_gluster_op_errno, tvb,
+ offset, 4, op_errno);
+ proto_item_append_text(errno_item, " (%s)",
+ g_strerror(op_errno));
+ }
+
+ offset += 4;
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_op_unlink_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb,
+ hf_glusterfs_preparent_iatt, offset);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb,
+ hf_glusterfs_postparent_iatt, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_op_unlink_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar* path = NULL;
+ gchar* bname = NULL;
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_pargfid, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_path, offset, &path);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_bname, offset, &bname);
+ return offset;
+}
+
+static int
+glusterfs_gfs3_op_statfs_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = glusterfs_rpc_dissect_statfs(tree, tvb, offset);
+ return offset;
+}
+
+static int
+glusterfs_gfs3_op_statfs_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar *path = NULL;
+
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_path, offset, &path);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_op_flush_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_fd, offset);
+ return offset;
+}
+
+static int
+glusterfs_gfs3_op_setxattr_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar *path = NULL;
+
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = glusterfs_rpc_dissect_flags(tree, tvb, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_path, offset, &path);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_op_opendir_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_fd, offset);
+ return offset;
+}
+
+static int
+glusterfs_gfs3_op_opendir_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar *path = NULL;
+
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_path, offset, &path);
+
+ return offset;
+}
+
+/* rpc/xdr/src/glusterfs3-xdr.c:xdr_gfs3_create_rsp */
+static int
+glusterfs_gfs3_op_create_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb, hf_glusterfs_iatt,
+ offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_fd, offset);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb,
+ hf_glusterfs_preparent_iatt, offset);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb,
+ hf_glusterfs_postparent_iatt, offset);
+
+ return offset;
+}
+
+/* rpc/xdr/src/glusterfs3-xdr.c:xdr_gfs3_create_req */
+static int
+glusterfs_gfs3_op_create_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar *path = NULL;
+ gchar *bname = NULL;
+
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_pargfid, offset);
+ offset = glusterfs_rpc_dissect_flags(tree, tvb, offset);
+ offset = glusterfs_rpc_dissect_mode(tree, tvb, hf_glusterfs_mode, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_path, offset, &path);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_bname, offset, &bname);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_op_lookup_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb, hf_glusterfs_iatt,
+ offset);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb,
+ hf_glusterfs_postparent_iatt, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_op_lookup_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar *path = NULL;
+ gchar *bname = NULL;
+
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_pargfid, offset);
+ offset = glusterfs_rpc_dissect_flags(tree, tvb, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_path, offset, &path);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_bname, offset, &bname);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_op_inodelk_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_item *flock_item;
+ proto_tree *flock_tree;
+ gchar* path = NULL;
+ gchar* volume = NULL;
+
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_cmd, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_type, offset);
+
+ flock_item = proto_tree_add_text(tree, tvb, offset, -1, "Flock");
+ flock_tree = proto_item_add_subtree(flock_item, ett_glusterfs_flock);
+ offset = glusterfs_rpc_dissect_gf_flock(flock_tree, tvb, offset);
+
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_path, offset, &path);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_volume, offset, &volume);
+ return offset;
+}
+
+static int
+glusterfs_gfs3_op_readdirp_entry(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_item *entry_item;
+ proto_tree *entry_tree;
+ gchar* path = NULL;
+
+ entry_item = proto_tree_add_text(tree, tvb, offset, -1, "Entry");
+ entry_tree = proto_item_add_subtree(entry_item, ett_glusterfs_entry);
+
+ offset = dissect_rpc_uint64(tvb, entry_tree, hf_glusterfs_entry_ino, offset);
+ offset = dissect_rpc_uint64(tvb, entry_tree, hf_glusterfs_entry_off, offset);
+ offset = dissect_rpc_uint32(tvb, entry_tree, hf_glusterfs_entry_len, offset);
+ offset = dissect_rpc_uint32(tvb, entry_tree, hf_glusterfs_entry_type, offset);
+ offset = dissect_rpc_string(tvb, entry_tree, hf_glusterfs_entry_path, offset, &path);
+
+ proto_item_append_text(entry_item, " Path:%s", path);
+
+ offset = glusterfs_rpc_dissect_gf_iatt(entry_tree, tvb,
+ hf_glusterfs_iatt, offset);
+
+ return offset;
+}
+
+/* details in xlators/storage/posix/src/posix.c:posix_fill_readdir() */
+static int
+glusterfs_gfs3_op_readdirp_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ proto_item *errno_item;
+ guint op_errno;
+
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_entries, offset);
+
+ if (tree) {
+ op_errno = tvb_get_ntohl(tvb, offset);
+ errno_item = proto_tree_add_int(tree, hf_gluster_op_errno, tvb,
+ offset, 4, op_errno);
+ if (op_errno == 0)
+ proto_item_append_text(errno_item,
+ " (More READDIRP replies follow)");
+ else if (op_errno == 2 /* ENOENT */)
+ proto_item_append_text(errno_item,
+ " (Last READDIRP reply)");
+ }
+ offset += 4;
+
+ offset = dissect_rpc_list(tvb, pinfo, tree, offset,
+ glusterfs_gfs3_op_readdirp_entry);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_op_readdirp_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_fd, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_offset, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_size, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_op_setattr_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb,
+ hf_glusterfs_preop_iatt, offset);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb,
+ hf_glusterfs_postop_iatt, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_rpc_dissect_setattr(proto_tree *tree, tvbuff_t *tvb, int offset)
+{
+ static const int *flag_bits[] = {
+ &hf_glusterfs_setattr_set_mode,
+ &hf_glusterfs_setattr_set_uid,
+ &hf_glusterfs_setattr_set_gid,
+ &hf_glusterfs_setattr_set_size,
+ &hf_glusterfs_setattr_set_atime,
+ &hf_glusterfs_setattr_set_mtime,
+ &hf_glusterfs_setattr_set_reserved,
+ NULL
+ };
+
+ if (tree)
+ proto_tree_add_bitmask(tree, tvb, offset,
+ hf_glusterfs_setattr_valid,
+ ett_glusterfs_setattr_valid, flag_bits, ENC_NA);
+ offset += 4;
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_op_setattr_call(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar *path = NULL;
+
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid,
+ offset);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb, hf_glusterfs_iatt,
+ offset);
+ offset = glusterfs_rpc_dissect_setattr(tree, tvb, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_path, offset, &path);
+
+ return offset;
+}
+
+/*GlusterFS 3_3 fops */
+
+static int
+glusterfs_gfs3_3_op_stat_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+ return offset;
+
+}
+
+static int
+glusterfs_gfs3_3_op_stat_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb, hf_glusterfs_iatt,
+ offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict,
+ offset);
+
+ return offset;
+}
+
+/* glusterfs_gfs3_3_op_mknod_reply() is also used as a ..mkdir_reply() */
+static int
+glusterfs_gfs3_3_op_mknod_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb, hf_glusterfs_iatt,
+ offset);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb,
+ hf_glusterfs_preparent_iatt, offset);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb,
+ hf_glusterfs_postparent_iatt, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict,
+ offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_mknod_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar *bname = NULL;
+
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_pargfid, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_offset, offset);
+ offset = glusterfs_rpc_dissect_mode(tree, tvb, hf_glusterfs_mode, offset);
+ offset = glusterfs_rpc_dissect_mode(tree, tvb, hf_glusterfs_umask, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_bname, offset, &bname);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_mkdir_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar *bname = NULL;
+
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_pargfid, offset);
+ offset = glusterfs_rpc_dissect_mode(tree, tvb, hf_glusterfs_mode, offset);
+ offset = glusterfs_rpc_dissect_mode(tree, tvb, hf_glusterfs_umask, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_bname, offset, &bname);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_readlink_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree)
+{
+ gchar* path = NULL;
+
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb, hf_glusterfs_iatt,
+ offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_path, offset,
+ &path);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict,
+ offset);
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_readlink_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_size, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+/* glusterfs_gfs3_3_op_unlink_reply() is also used for ...rmdir_reply() */
+static int
+glusterfs_gfs3_3_op_unlink_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb,
+ hf_glusterfs_preparent_iatt, offset);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb,
+ hf_glusterfs_postparent_iatt, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_unlink_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ guint xflags;
+ gchar* bname = NULL;
+
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_pargfid, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_bname, offset, &bname);
+ xflags = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_uint_format(tree, hf_glusterfs_xflags, tvb, offset, 4, xflags, "Flags: 0%02o", xflags);
+ offset += 4;
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_rmdir_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar* bname = NULL;
+ guint xflags;
+
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_pargfid, offset);
+ xflags = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_uint_format(tree, hf_glusterfs_xflags, tvb, offset, 4, xflags, "Flags: 0%02o", xflags);
+ offset += 4;
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_bname, offset, &bname);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_symlink_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar *bname = NULL;
+ gchar *linkname = NULL;
+
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_pargfid, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_bname, offset, &bname);
+ offset = glusterfs_rpc_dissect_mode(tree, tvb, hf_glusterfs_umask, offset);
+
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_linkname, offset, &linkname);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_rename_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+
+ gchar *oldbname = NULL;
+ gchar *newbname = NULL;
+
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_oldgfid, offset);
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_newgfid, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_oldbname, offset, &oldbname);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_newbname, offset, &newbname);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_rename_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ proto_tree *old_tree, *new_tree;
+ proto_item *old_item, *new_item;
+
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb, hf_glusterfs_iatt,
+ offset);
+
+ old_item = proto_tree_add_text(tree, tvb, offset, -1, "Old parent");
+ old_tree = proto_item_add_subtree(old_item, ett_glusterfs_parent_iatt);
+ offset = glusterfs_rpc_dissect_gf_iatt(old_tree, tvb,
+ hf_glusterfs_preparent_iatt, offset);
+ offset = glusterfs_rpc_dissect_gf_iatt(old_tree, tvb,
+ hf_glusterfs_postparent_iatt, offset);
+
+ new_item = proto_tree_add_text(tree, tvb, offset, -1, "New parent");
+ new_tree = proto_item_add_subtree(new_item, ett_glusterfs_parent_iatt);
+ offset = glusterfs_rpc_dissect_gf_iatt(new_tree, tvb,
+ hf_glusterfs_preparent_iatt, offset);
+ offset = glusterfs_rpc_dissect_gf_iatt(new_tree, tvb,
+ hf_glusterfs_postparent_iatt, offset);
+
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_link_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar *newbname = NULL;
+
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_oldgfid, offset);
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_newgfid, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_newbname, offset, &newbname);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_truncate_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_offset, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_open_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_fd, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_open_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = glusterfs_rpc_dissect_flags(tree, tvb, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_read_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb, hf_glusterfs_iatt,
+ offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_size, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict,
+ offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_read_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_fd, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_offset, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_size, offset);
+ offset = glusterfs_rpc_dissect_flags(tree, tvb, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_write_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb,
+ hf_glusterfs_preparent_iatt, offset);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb,
+ hf_glusterfs_postparent_iatt, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_write_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_fd, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_offset, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_size, offset);
+ offset = glusterfs_rpc_dissect_flags(tree, tvb, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_statfs_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = glusterfs_rpc_dissect_statfs(tree, tvb, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_statfs_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_flush_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_fd, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_fsync_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_fd, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+static int
+glusterfs_gfs3_3_op_setxattr_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = glusterfs_rpc_dissect_flags(tree, tvb, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_getxattr_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar* name = NULL;
+
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_namelen, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_name, offset, &name);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+
+static int
+glusterfs_gfs3_3_op_getxattr_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree)
+{
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_removexattr_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar* name = NULL;
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_name, offset, &name);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_fsyncdir_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_fd, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_yncdir_data, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_opendir_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree)
+{
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_fd, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_opendir_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_create_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb, hf_glusterfs_iatt,
+ offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_fd, offset);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb,
+ hf_glusterfs_preparent_iatt, offset);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb,
+ hf_glusterfs_postparent_iatt, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+
+static int
+glusterfs_gfs3_3_op_create_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar *bname = NULL;
+
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_pargfid, offset);
+ offset = glusterfs_rpc_dissect_flags(tree, tvb, offset);
+ offset = glusterfs_rpc_dissect_mode(tree, tvb, hf_glusterfs_mode, offset);
+ offset = glusterfs_rpc_dissect_mode(tree, tvb, hf_glusterfs_umask, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_bname, offset, &bname);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_ftruncate_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_fd, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_offset, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_fstat_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_fd, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_fstat_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb, hf_glusterfs_iatt,
+ offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict,
+ offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_lk_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_fd, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_cmd, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_type, offset);
+ offset = glusterfs_rpc_dissect_gf_2_flock(tree, tvb, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_lk_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = glusterfs_rpc_dissect_gf_2_flock(tree, tvb, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_access_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_mask, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_lookup_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar *bname = NULL;
+
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_pargfid, offset);
+ offset = glusterfs_rpc_dissect_flags(tree, tvb, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_bname, offset, &bname);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_readdir_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_fd, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_offset, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_size, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_inodelk_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar* volume = NULL;
+
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_cmd, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_type, offset);
+ offset = glusterfs_rpc_dissect_gf_2_flock(tree, tvb, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_volume, offset, &volume);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_finodelk_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar* volume = NULL;
+
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_fd, offset);
+
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_cmd, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_type, offset);
+ offset = glusterfs_rpc_dissect_gf_2_flock(tree, tvb, offset);
+
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_volume, offset, &volume);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_entrylk_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar* volume = NULL;
+ gchar* name = NULL;
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_cmd, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_type, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_entrylk_namelen, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_name, offset, &name);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_volume, offset, &volume);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_fentrylk_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar* volume = NULL;
+ gchar* name = NULL;
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_fd, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_cmd, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_type, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_entrylk_namelen, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_name, offset, &name);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_volume, offset, &volume);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_xattrop_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree)
+{
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_xattrop_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = glusterfs_rpc_dissect_flags(tree, tvb, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_fxattrop_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = glusterfs_rpc_dissect_flags(tree, tvb, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_fd, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_fgetxattr_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar* name = NULL;
+
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_fd, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_namelen, offset);
+ offset = dissect_rpc_string(tvb, tree, hf_glusterfs_name, offset, &name);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+gluter_gfs3_3_op_fsetxattr_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_fd, offset);
+ offset = glusterfs_rpc_dissect_flags(tree, tvb, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_setattr_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb,
+ hf_glusterfs_preop_iatt, offset);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb,
+ hf_glusterfs_postop_iatt, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_setattr_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid,
+ offset);
+ offset = glusterfs_rpc_dissect_gf_iatt(tree, tvb, hf_glusterfs_iatt,
+ offset);
+ offset = glusterfs_rpc_dissect_setattr(tree, tvb, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_readdirp_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree)
+{
+ proto_item *errno_item;
+ guint op_errno;
+
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_entries, offset);
+
+ if (tree) {
+ op_errno = tvb_get_ntohl(tvb, offset);
+ errno_item = proto_tree_add_int(tree, hf_gluster_op_errno, tvb,
+ offset, 4, op_errno);
+ if (op_errno == 0)
+ proto_item_append_text(errno_item,
+ " (More READDIRP replies follow)");
+ else if (op_errno == 2 /* ENOENT */)
+ proto_item_append_text(errno_item,
+ " (Last READDIRP reply)");
+ }
+ offset += 4;
+
+ offset = dissect_rpc_list(tvb, pinfo, tree, offset,
+ glusterfs_gfs3_op_readdirp_entry);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_readdirp_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_fd, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_offset, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_glusterfs_size, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_release_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_fd, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+static int
+glusterfs_gfs3_3_op_releasedir_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = glusterfs_rpc_dissect_gfid(tree, tvb, hf_glusterfs_gfid, offset);
+ offset = dissect_rpc_uint64(tvb, tree, hf_glusterfs_fd, offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+/* This function is for common replay. RELEASE , RELEASEDIR and some other function use this method */
+
+static int
+glusterfs_gfs3_3_op_common_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_glusterfs_dict, offset);
+
+ return offset;
+}
+
+/*
+ * GLUSTER3_1_FOP_PROGRAM
+ * - xlators/protocol/client/src/client3_1-fops.c
+ * - xlators/protocol/server/src/server3_1-fops.c
+ */
+static const vsff glusterfs3_1_fop_proc[] = {
+ { GFS3_OP_NULL, "NULL", NULL, NULL },
+ { GFS3_OP_STAT, "STAT", NULL, NULL },
+ { GFS3_OP_READLINK, "READLINK", NULL, NULL },
+ { GFS3_OP_MKNOD, "MKNOD", NULL, NULL },
+ { GFS3_OP_MKDIR, "MKDIR", NULL, NULL },
+ {
+ GFS3_OP_UNLINK, "UNLINK",
+ glusterfs_gfs3_op_unlink_call, glusterfs_gfs3_op_unlink_reply
+ },
+ { GFS3_OP_RMDIR, "RMDIR", NULL, NULL },
+ { GFS3_OP_SYMLINK, "SYMLINK", NULL, NULL },
+ { GFS3_OP_RENAME, "RENAME", NULL, NULL },
+ { GFS3_OP_LINK, "LINK", NULL, NULL },
+ { GFS3_OP_TRUNCATE, "TRUNCATE", NULL, NULL },
+ { GFS3_OP_OPEN, "OPEN", NULL, NULL },
+ { GFS3_OP_READ, "READ", NULL, NULL },
+ { GFS3_OP_WRITE, "WRITE", NULL, NULL },
+ {
+ GFS3_OP_STATFS, "STATFS",
+ glusterfs_gfs3_op_statfs_call, glusterfs_gfs3_op_statfs_reply
+ },
+ {
+ GFS3_OP_FLUSH, "FLUSH",
+ glusterfs_gfs3_op_flush_call, gluster_dissect_common_reply
+ },
+ { GFS3_OP_FSYNC, "FSYNC", NULL, NULL },
+ {
+ GFS3_OP_SETXATTR, "SETXATTR",
+ glusterfs_gfs3_op_setxattr_call, gluster_dissect_common_reply
+ },
+ { GFS3_OP_GETXATTR, "GETXATTR", NULL, NULL },
+ { GFS3_OP_REMOVEXATTR, "REMOVEXATTR", NULL, NULL },
+ {
+ GFS3_OP_OPENDIR, "OPENDIR",
+ glusterfs_gfs3_op_opendir_call, glusterfs_gfs3_op_opendir_reply
+ },
+ { GFS3_OP_FSYNCDIR, "FSYNCDIR", NULL, NULL },
+ { GFS3_OP_ACCESS, "ACCESS", NULL, NULL },
+ {
+ GFS3_OP_CREATE, "CREATE",
+ glusterfs_gfs3_op_create_call, glusterfs_gfs3_op_create_reply
+ },
+ { GFS3_OP_FTRUNCATE, "FTRUNCATE", NULL, NULL },
+ { GFS3_OP_FSTAT, "FSTAT", NULL, NULL },
+ { GFS3_OP_LK, "LK", NULL, NULL },
+ {
+ GFS3_OP_LOOKUP, "LOOKUP",
+ glusterfs_gfs3_op_lookup_call, glusterfs_gfs3_op_lookup_reply
+ },
+ { GFS3_OP_READDIR, "READDIR", NULL, NULL },
+ {
+ GFS3_OP_INODELK, "INODELK",
+ glusterfs_gfs3_op_inodelk_call, gluster_dissect_common_reply
+ },
+ { GFS3_OP_FINODELK, "FINODELK", NULL, NULL },
+ { GFS3_OP_ENTRYLK, "ENTRYLK", NULL, NULL },
+ { GFS3_OP_FENTRYLK, "FENTRYLK", NULL, NULL },
+ { GFS3_OP_XATTROP, "XATTROP", NULL, NULL },
+ { GFS3_OP_FXATTROP, "FXATTROP", NULL, NULL },
+ { GFS3_OP_FGETXATTR, "FGETXATTR", NULL, NULL },
+ { GFS3_OP_FSETXATTR, "FSETXATTR", NULL, NULL },
+ { GFS3_OP_RCHECKSUM, "RCHECKSUM", NULL, NULL },
+ {
+ GFS3_OP_SETATTR, "SETATTR",
+ glusterfs_gfs3_op_setattr_call, glusterfs_gfs3_op_setattr_reply
+ },
+ {
+ GFS3_OP_FSETATTR, "FSETATTR",
+ /* SETATTR and SETFATTS calls and reply are encoded the same */
+ glusterfs_gfs3_op_setattr_call, glusterfs_gfs3_op_setattr_reply
+ },
+ {
+ GFS3_OP_READDIRP, "READDIRP",
+ glusterfs_gfs3_op_readdirp_call, glusterfs_gfs3_op_readdirp_reply
+ },
+ { GFS3_OP_RELEASE, "RELEASE", NULL, NULL },
+ { GFS3_OP_RELEASEDIR, "RELEASEDIR", NULL, NULL },
+ { 0, NULL, NULL, NULL }
+};
+
+
+/*
+ * GLUSTER3_1_FOP_PROGRAM for 3_3
+ * - xlators/protocol/client/src/client3_1-fops.c
+ * - xlators/protocol/server/src/server3_1-fops.c
+ */
+static const vsff glusterfs3_3_fop_proc[] = {
+ { GFS3_OP_NULL, "NULL", NULL, NULL },
+ {
+ GFS3_OP_STAT, "STAT",
+ glusterfs_gfs3_3_op_stat_call, glusterfs_gfs3_3_op_stat_reply
+ },
+ {
+ GFS3_OP_READLINK, "READLINK",
+ glusterfs_gfs3_3_op_readlink_call, glusterfs_gfs3_3_op_readlink_reply
+ },
+ {
+ GFS3_OP_MKNOD, "MKNOD",
+ glusterfs_gfs3_3_op_mknod_call, glusterfs_gfs3_3_op_mknod_reply
+ },
+ {
+ GFS3_OP_MKDIR, "MKDIR",
+ glusterfs_gfs3_3_op_mkdir_call, glusterfs_gfs3_3_op_mknod_reply
+ },
+ {
+ GFS3_OP_UNLINK, "UNLINK",
+ glusterfs_gfs3_3_op_unlink_call, glusterfs_gfs3_3_op_unlink_reply
+ },
+ {
+ GFS3_OP_RMDIR, "RMDIR",
+ glusterfs_gfs3_3_op_rmdir_call, glusterfs_gfs3_3_op_unlink_reply
+ },
+ { GFS3_OP_SYMLINK, "SYMLINK",
+ glusterfs_gfs3_3_op_symlink_call, glusterfs_gfs3_3_op_mknod_reply
+ },
+ {
+ GFS3_OP_RENAME, "RENAME",
+ glusterfs_gfs3_3_op_rename_call, glusterfs_gfs3_3_op_rename_reply
+ },
+ {
+ GFS3_OP_LINK, "LINK",
+ glusterfs_gfs3_3_op_link_call, glusterfs_gfs3_3_op_mknod_reply
+ },
+ {
+ GFS3_OP_TRUNCATE, "TRUNCATE",
+ glusterfs_gfs3_3_op_truncate_call, glusterfs_gfs3_3_op_unlink_reply
+ },
+ {
+ GFS3_OP_OPEN, "OPEN",
+ glusterfs_gfs3_3_op_open_call, glusterfs_gfs3_3_op_open_reply
+ },
+ {
+ GFS3_OP_READ, "READ",
+ glusterfs_gfs3_3_op_read_call, glusterfs_gfs3_3_op_read_reply
+ },
+ {
+ GFS3_OP_WRITE, "WRITE",
+ glusterfs_gfs3_3_op_write_call, glusterfs_gfs3_3_op_write_reply
+ },
+ {
+ GFS3_OP_STATFS, "STATFS",
+ glusterfs_gfs3_3_op_statfs_call, glusterfs_gfs3_3_op_statfs_reply
+ },
+ {
+ GFS3_OP_FLUSH, "FLUSH",
+ glusterfs_gfs3_3_op_flush_call, glusterfs_gfs3_3_op_common_reply
+ },
+ {
+ GFS3_OP_FSYNC, "FSYNC",
+ glusterfs_gfs3_3_op_fsync_call, glusterfs_gfs3_3_op_setattr_reply
+ },
+ {
+ GFS3_OP_SETXATTR, "SETXATTR",
+ glusterfs_gfs3_3_op_setxattr_call, glusterfs_gfs3_3_op_common_reply
+ },
+ {
+ GFS3_OP_GETXATTR, "GETXATTR",
+ glusterfs_gfs3_3_op_getxattr_call, glusterfs_gfs3_3_op_getxattr_reply
+ },
+ {
+ GFS3_OP_REMOVEXATTR, "REMOVEXATTR",
+ glusterfs_gfs3_3_op_removexattr_call, glusterfs_gfs3_3_op_common_reply
+ },
+ {
+ GFS3_OP_OPENDIR, "OPENDIR",
+ glusterfs_gfs3_3_op_opendir_call, glusterfs_gfs3_3_op_opendir_reply
+ },
+ {
+ GFS3_OP_FSYNCDIR, "FSYNCDIR",
+ glusterfs_gfs3_3_op_fsyncdir_call, glusterfs_gfs3_3_op_common_reply
+ },
+ {
+ GFS3_OP_ACCESS, "ACCESS",
+ glusterfs_gfs3_3_op_access_call, glusterfs_gfs3_3_op_common_reply
+ },
+ {
+ GFS3_OP_CREATE, "CREATE",
+ glusterfs_gfs3_3_op_create_call, glusterfs_gfs3_3_op_create_reply
+ },
+ {
+ GFS3_OP_FTRUNCATE, "FTRUNCATE",
+ glusterfs_gfs3_3_op_ftruncate_call, glusterfs_gfs3_3_op_unlink_reply
+ },
+ {
+ GFS3_OP_FSTAT, "FSTAT",
+ glusterfs_gfs3_3_op_fstat_call, glusterfs_gfs3_3_op_fstat_reply
+ },
+ {
+ GFS3_OP_LK, "LK",
+ glusterfs_gfs3_3_op_lk_call, glusterfs_gfs3_3_op_lk_reply
+ },
+ {
+ GFS3_OP_LOOKUP, "LOOKUP",
+ glusterfs_gfs3_3_op_lookup_call, glusterfs_gfs3_3_op_write_reply
+ },
+ {
+ GFS3_OP_READDIR, "READDIR",
+ glusterfs_gfs3_3_op_readdir_call, glusterfs_gfs3_3_op_common_reply
+ },
+ {
+ GFS3_OP_INODELK, "INODELK",
+ glusterfs_gfs3_3_op_inodelk_call, glusterfs_gfs3_3_op_common_reply
+ },
+ {
+ GFS3_OP_FINODELK, "FINODELK",
+ glusterfs_gfs3_3_op_finodelk_call, glusterfs_gfs3_3_op_common_reply
+ },
+ {
+ GFS3_OP_ENTRYLK, "ENTRYLK",
+ glusterfs_gfs3_3_op_entrylk_call, glusterfs_gfs3_3_op_common_reply
+ },
+ {
+ GFS3_OP_FENTRYLK, "FENTRYLK",
+ glusterfs_gfs3_3_op_fentrylk_call, glusterfs_gfs3_3_op_common_reply
+ },
+ {
+ GFS3_OP_XATTROP, "XATTROP",
+ glusterfs_gfs3_3_op_xattrop_call, glusterfs_gfs3_3_op_xattrop_reply
+ },
+ /*xattrop and fxattrop replay both are same */
+ {
+ GFS3_OP_FXATTROP, "FXATTROP",
+ glusterfs_gfs3_3_op_fxattrop_call, glusterfs_gfs3_3_op_xattrop_reply
+ },
+ {
+ GFS3_OP_FGETXATTR, "FGETXATTR",
+ glusterfs_gfs3_3_op_fgetxattr_call, glusterfs_gfs3_3_op_xattrop_reply
+ },
+ {
+ GFS3_OP_FSETXATTR, "FSETXATTR",
+ gluter_gfs3_3_op_fsetxattr_call, glusterfs_gfs3_3_op_common_reply
+ },
+ { GFS3_OP_RCHECKSUM, "RCHECKSUM", NULL, NULL },
+ {
+ GFS3_OP_SETATTR, "SETATTR",
+ glusterfs_gfs3_3_op_setattr_call, glusterfs_gfs3_3_op_setattr_reply
+ },
+ {
+ GFS3_OP_FSETATTR, "FSETATTR",
+ /* SETATTR and SETFATTS calls and reply are encoded the same */
+ glusterfs_gfs3_3_op_setattr_call, glusterfs_gfs3_3_op_setattr_reply
+ },
+ {
+ GFS3_OP_READDIRP, "READDIRP",
+ glusterfs_gfs3_3_op_readdirp_call, glusterfs_gfs3_3_op_readdirp_reply
+ },
+ {
+ GFS3_OP_RELEASE, "RELEASE",
+ glusterfs_gfs3_3_op_release_call, glusterfs_gfs3_3_op_common_reply
+ },
+ {
+ GFS3_OP_RELEASEDIR, "RELEASEDIR",
+ glusterfs_gfs3_3_op_releasedir_call, glusterfs_gfs3_3_op_common_reply
+ },
+ { 0, NULL, NULL, NULL }
+};
+
+
+static const value_string glusterfs3_1_fop_proc_vals[] = {
+ { GFS3_OP_NULL, "NULL" },
+ { GFS3_OP_STAT, "STAT" },
+ { GFS3_OP_READLINK, "READLINK" },
+ { GFS3_OP_MKNOD, "MKNOD" },
+ { GFS3_OP_MKDIR, "MKDIR" },
+ { GFS3_OP_UNLINK, "UNLINK" },
+ { GFS3_OP_RMDIR, "RMDIR" },
+ { GFS3_OP_SYMLINK, "SYMLINK" },
+ { GFS3_OP_RENAME, "RENAME" },
+ { GFS3_OP_LINK, "LINK" },
+ { GFS3_OP_TRUNCATE, "TRUNCATE" },
+ { GFS3_OP_OPEN, "OPEN" },
+ { GFS3_OP_READ, "READ" },
+ { GFS3_OP_WRITE, "WRITE" },
+ { GFS3_OP_STATFS, "STATFS" },
+ { GFS3_OP_FLUSH, "FLUSH" },
+ { GFS3_OP_FSYNC, "FSYNC" },
+ { GFS3_OP_SETXATTR, "SETXATTR" },
+ { GFS3_OP_GETXATTR, "GETXATTR" },
+ { GFS3_OP_REMOVEXATTR, "REMOVEXATTR" },
+ { GFS3_OP_OPENDIR, "OPENDIR" },
+ { GFS3_OP_FSYNCDIR, "FSYNCDIR" },
+ { GFS3_OP_ACCESS, "ACCESS" },
+ { GFS3_OP_CREATE, "CREATE" },
+ { GFS3_OP_FTRUNCATE, "FTRUNCATE" },
+ { GFS3_OP_FSTAT, "FSTAT" },
+ { GFS3_OP_LK, "LK" },
+ { GFS3_OP_LOOKUP, "LOOKUP" },
+ { GFS3_OP_READDIR, "READDIR" },
+ { GFS3_OP_INODELK, "INODELK" },
+ { GFS3_OP_FINODELK, "FINODELK" },
+ { GFS3_OP_ENTRYLK, "ENTRYLK" },
+ { GFS3_OP_FENTRYLK, "FENTRYLK" },
+ { GFS3_OP_XATTROP, "XATTROP" },
+ { GFS3_OP_FXATTROP, "FXATTROP" },
+ { GFS3_OP_FGETXATTR, "FGETXATTR" },
+ { GFS3_OP_FSETXATTR, "FSETXATTR" },
+ { GFS3_OP_RCHECKSUM, "RCHECKSUM" },
+ { GFS3_OP_SETATTR, "SETATTR" },
+ { GFS3_OP_FSETATTR, "FSETATTR" },
+ { GFS3_OP_READDIRP, "READDIRP" },
+ { GFS3_OP_RELEASE, "RELEASE" },
+ { GFS3_OP_RELEASEDIR, "RELEASEDIR" },
+ { 0, NULL }
+};
+
+/* dir-entry types */
+static const value_string glusterfs_entry_type_names[] = {
+ { DT_UNKNOWN, "DT_UNKNOWN" },
+ { DT_FIFO, "DT_FIFO" },
+ { DT_CHR, "DT_CHR" },
+ { DT_DIR, "DT_DIR" },
+ { DT_BLK, "DT_BLK" },
+ { DT_REG, "DT_REG" },
+ { DT_LNK, "DT_LNK" },
+ { DT_SOCK, "DT_SOCK" },
+ { DT_WHT, "DT_WHT" },
+ { 0, NULL }
+};
+
+/* Normal locking commands */
+static const value_string glusterfs_lk_cmd_names[] = {
+ { GF_LK_GETLK, "GF_LK_GETLK" },
+ { GF_LK_SETLK, "GF_LK_SETLK" },
+ { GF_LK_SETLKW, "GF_LK_SETLKW" },
+ { GF_LK_RESLK_LCK, "GF_LK_RESLK_LCK" },
+ { GF_LK_RESLK_LCKW, "GF_LK_RESLK_LCKW" },
+ { GF_LK_RESLK_UNLCK, "GF_LK_RESLK_UNLCK" },
+ { GF_LK_GETLK_FD, "GF_LK_GETLK_FD" },
+ { 0, NULL }
+};
+
+/* Different lock types */
+static const value_string glusterfs_lk_type_names[] = {
+ { GF_LK_F_RDLCK, "GF_LK_F_RDLCK" },
+ { GF_LK_F_WRLCK, "GF_LK_F_WRLCK" },
+ { GF_LK_F_UNLCK, "GF_LK_F_UNLCK" },
+ { GF_LK_EOL, "GF_LK_EOL" },
+ { 0, NULL }
+};
+
+static const value_string glusterfs_lk_whence[] = {
+ { GF_LK_SEEK_SET, "SEEK_SET" },
+ { GF_LK_SEEK_CUR, "SEEK_CUR" },
+ { GF_LK_SEEK_END, "SEEK_END" },
+ { 0, NULL }
+};
+
+void
+proto_register_glusterfs(void)
+{
+ /* Setup list of header fields See Section 1.6.1 for details */
+ static hf_register_info hf[] = {
+ /* programs */
+ { &hf_glusterfs_proc,
+ { "GlusterFS", "glusterfs.proc", FT_UINT32, BASE_DEC,
+ VALS(glusterfs3_1_fop_proc_vals), 0, NULL, HFILL }
+ },
+ /* fields used by multiple programs/procedures and other
+ * Gluster dissectors with gluster_dissect_common_reply() */
+ { &hf_gluster_op_ret,
+ { "Return value", "gluster.op_ret", FT_INT32, BASE_DEC,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_gluster_op_errno,
+ { "Errno", "gluster.op_errno", FT_INT32, BASE_DEC,
+ NULL, 0, NULL, HFILL }
+ },
+ /* GlusterFS specific */
+ { &hf_glusterfs_gfid,
+ { "GFID", "glusterfs.gfid", FT_GUID,
+ BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_pargfid,
+ { "Parent GFID", "glusterfs.pargfid", FT_GUID,
+ BASE_NONE, NULL, 0,
+ "GFID of the parent directory", HFILL }
+ },
+ { &hf_glusterfs_oldgfid,
+ { "Old GFID", "glusterfs.oldgfid", FT_BYTES,
+ BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_newgfid,
+ { "New GFID", "glusterfs.newgfid", FT_BYTES,
+ BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_path,
+ { "Path", "glusterfs.path", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_bname,
+ { "Basename", "glusterfs.bname", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_dict,
+ { "Dict", "glusterfs.dict", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_fd,
+ { "File Descriptor", "glusterfs.fd", FT_UINT64, BASE_DEC,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_offset,
+ { "Offset", "glusterfs.offset", FT_UINT64, BASE_DEC,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_size,
+ { "Size", "glusterfs.size", FT_UINT32, BASE_DEC,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_type,
+ { "Type", "glusterfs.type", FT_INT32, BASE_DEC,
+ VALS(glusterfs_lk_type_names), 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_cmd,
+ { "Command", "glusterfs.cmd", FT_INT32, BASE_DEC,
+ VALS(glusterfs_lk_cmd_names), 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_volume,
+ { "Volume", "glusterfs.volume", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_namelen,
+ { "Name Lenth", "glusterfs.namelen", FT_UINT32, BASE_DEC,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_linkname,
+ { "Linkname", "glusterfs.linkname", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_umask,
+ { "Umask", "glusterfs.umask", FT_UINT32, BASE_OCT,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_mask,
+ { "Mask", "glusterfs.mask", FT_UINT32, BASE_OCT,
+ NULL, 0, NULL, HFILL }
+ },
+
+ { &hf_glusterfs_entries, /* READDIRP returned <x> entries */
+ { "Entries returned", "glusterfs.entries", FT_INT32, BASE_DEC,
+ NULL, 0, NULL, HFILL }
+ },
+ /* Flags passed on to OPEN, CREATE etc, based on */
+ { &hf_glusterfs_flags,
+ { "Flags", "glusterfs.flags", FT_UINT32, BASE_OCT,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_flags_rdonly,
+ { "O_RDONLY", "glusterfs.flags.rdonly", FT_BOOLEAN, BASE_NONE,
+ TFS(&tfs_set_notset), 00000000, NULL, HFILL }
+ },
+ { &hf_glusterfs_flags_wronly,
+ { "O_WRONLY", "glusterfs.flags.wronly", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), 00000001, NULL, HFILL }
+ },
+ { &hf_glusterfs_flags_rdwr,
+ { "O_RDWR", "glusterfs.flags.rdwr", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), 00000002, NULL, HFILL }
+ },
+ { &hf_glusterfs_flags_accmode,
+ { "O_ACCMODE", "glusterfs.flags.accmode", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), 00000003, NULL, HFILL }
+ },
+ { &hf_glusterfs_flags_append,
+ { "O_APPEND", "glusterfs.flags.append", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), 00002000, NULL, HFILL }
+ },
+ { &hf_glusterfs_flags_async,
+ { "O_ASYNC", "glusterfs.flags.async", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), 00020000, NULL, HFILL }
+ },
+ { &hf_glusterfs_flags_cloexec,
+ { "O_CLOEXEC", "glusterfs.flags.cloexec", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), 02000000, NULL, HFILL }
+ },
+ { &hf_glusterfs_flags_creat,
+ { "O_CREAT", "glusterfs.flags.creat", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), 00000100, NULL, HFILL }
+ },
+ { &hf_glusterfs_flags_direct,
+ { "O_DIRECT", "glusterfs.flags.direct", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), 00040000, NULL, HFILL }
+ },
+ { &hf_glusterfs_flags_directory,
+ { "O_DIRECTORY", "glusterfs.flags.directory", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), 00200000, NULL, HFILL }
+ },
+ { &hf_glusterfs_flags_excl,
+ { "O_EXCL", "glusterfs.flags.excl", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), 00000200, NULL, HFILL }
+ },
+ { &hf_glusterfs_flags_largefile,
+ { "O_LARGEFILE", "glusterfs.flags.largefile", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), 00100000, NULL, HFILL }
+ },
+ { &hf_glusterfs_flags_noatime,
+ { "O_NOATIME", "glusterfs.flags.noatime", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), 01000000, NULL, HFILL }
+ },
+ { &hf_glusterfs_flags_noctty,
+ { "O_NOCTTY", "glusterfs.flags.noctty", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), 00000400, NULL, HFILL }
+ },
+ { &hf_glusterfs_flags_nofollow,
+ { "O_NOFOLLOW", "glusterfs.flags.nofollow", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), 00400000, NULL, HFILL }
+ },
+ { &hf_glusterfs_flags_nonblock,
+ { "O_NONBLOCK", "glusterfs.flags.nonblock", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), 00004000, NULL, HFILL }
+ },
+ { &hf_glusterfs_flags_ndelay,
+ { "O_NDELAY", "glusterfs.flags.ndelay", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), 00004000, NULL, HFILL }
+ },
+ { &hf_glusterfs_flags_sync,
+ { "O_SYNC", "glusterfs.flags.sync", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), 00010000, NULL, HFILL }
+ },
+ { &hf_glusterfs_flags_trunc,
+ { "O_TRUNC", "glusterfs.flags.trunc", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), 00001000, NULL, HFILL }
+ },
+ { &hf_glusterfs_flags_reserved,
+ { "Unused", "glusterfs.flags.reserved", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), 037774000074, NULL, HFILL }
+ },
+ /* access modes */
+ { &hf_glusterfs_mode,
+ { "Mode", "glusterfs.mode", FT_UINT32, BASE_OCT,
+ NULL, 0, "Access Permissions", HFILL }
+ },
+ { &hf_glusterfs_mode_suid,
+ { "S_ISUID", "glusterfs.mode.s_isuid", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), (04000), "set-user-ID", HFILL }
+ },
+ { &hf_glusterfs_mode_sgid,
+ { "S_ISGID", "glusterfs.mode.s_isgid", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), (02000), "set-group-ID", HFILL }
+ },
+ { &hf_glusterfs_mode_svtx,
+ { "S_ISVTX", "glusterfs.mode.s_isvtx", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), (01000), "sticky bit", HFILL }
+ },
+ { &hf_glusterfs_mode_rusr,
+ { "S_IRUSR", "glusterfs.mode.s_irusr", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), (00400), "read by owner", HFILL }
+ },
+ { &hf_glusterfs_mode_wusr,
+ { "S_IWUSR", "glusterfs.mode.s_iwusr", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), (00200), "write by owner", HFILL }
+ },
+ { &hf_glusterfs_mode_xusr,
+ { "S_IXUSR", "glusterfs.mode.s_ixusr", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), (00100), "execute/search by owner", HFILL }
+ },
+ { &hf_glusterfs_mode_rgrp,
+ { "S_IRGRP", "glusterfs.mode.s_irgrp", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), (00040), "read by group", HFILL }
+ },
+ { &hf_glusterfs_mode_wgrp,
+ { "S_IWGRP", "glusterfs.mode.s_iwgrp", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), (00020), "write by group", HFILL }
+ },
+ { &hf_glusterfs_mode_xgrp,
+ { "S_IXGRP", "glusterfs.mode.s_ixgrp", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), (00010), "execute/search by group", HFILL }
+ },
+ { &hf_glusterfs_mode_roth,
+ { "S_IROTH", "glusterfs.mode.s_iroth", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), (00004), "read by others", HFILL }
+ },
+ { &hf_glusterfs_mode_woth,
+ { "S_IWOTH", "glusterfs.mode.s_iwoth", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), (00002), "write by others", HFILL }
+ },
+ { &hf_glusterfs_mode_xoth,
+ { "S_IXOTH", "glusterfs.mode.s_ixoth", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), (00001), "execute/search by others", HFILL }
+ },
+ { &hf_glusterfs_mode_reserved,
+ { "Reserved", "glusterfs.mode.reserved", FT_BOOLEAN, 32,
+ TFS(&tfs_set_notset), (~07777), "execute/search by others", HFILL }
+ },
+ /* the dir-entry structure */
+ { &hf_glusterfs_entry_ino,
+ { "Inode", "glusterfs.entry.ino", FT_UINT64, BASE_DEC,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_entry_off, /* like telldir() */
+ { "Offset", "glusterfs.entry.d_off", FT_UINT64, BASE_DEC,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_entry_len, /* length of the path string */
+ { "Path length", "glusterfs.entry.len", FT_UINT32, BASE_DEC,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_entry_type,
+ { "Type", "glusterfs.entry.d_type", FT_UINT32, BASE_DEC,
+ VALS(glusterfs_entry_type_names), 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_entry_path,
+ { "Path", "glusterfs.entry.path", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }
+ },
+ /* the IATT structure */
+ { &hf_glusterfs_iatt,
+ { "IATT", "glusterfs.iatt", FT_NONE, BASE_NONE, NULL,
+ 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_preparent_iatt,
+ { "Pre-operation parent IATT", "glusterfs.preparent_iatt", FT_NONE, BASE_NONE, NULL,
+ 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_postparent_iatt,
+ { "Post-operation parent IATT", "glusterfs.postparent_iatt", FT_NONE, BASE_NONE, NULL,
+ 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_preop_iatt,
+ { "Pre-operation IATT", "glusterfs.preop_iatt", FT_NONE, BASE_NONE, NULL,
+ 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_postop_iatt,
+ { "Post-operation IATT", "glusterfs.postop_iatt", FT_NONE, BASE_NONE, NULL,
+ 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_ia_ino,
+ { "Inode", "glusterfs.ia_ino", FT_UINT64, BASE_DEC,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_ia_dev,
+ { "Device", "glusterfs.ia_dev", FT_UINT64, BASE_HEX,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_ia_mode,
+ { "Mode", "glusterfs.ia_mode", FT_UINT32, BASE_OCT,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_ia_nlink,
+ { "Number of hard links", "glusterfs.ia_nlink",
+ FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_ia_uid,
+ { "UID", "glusterfs.ia_uid", FT_INT32, BASE_DEC,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_ia_gid,
+ { "GID", "glusterfs.ia_gid", FT_INT32, BASE_DEC,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_ia_rdev,
+ { "Root device", "glusterfs.ia_rdev", FT_UINT64,
+ BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_ia_size,
+ { "Size", "glusterfs.ia_size", FT_UINT64, BASE_DEC,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_ia_blksize,
+ { "Block size", "glusterfs.ia_blksize", FT_INT32,
+ BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_ia_blocks,
+ { "Blocks", "glusterfs.ia_blocks", FT_UINT64,
+ BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_ia_atime,
+ { "Time of last access", "glusterfs.ia_atime",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_glusterfs_ia_mtime,
+ { "Time of last modification", "glusterfs.ia_mtime",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_glusterfs_ia_ctime,
+ { "Time of last status change", "glusterfs.ia_ctime",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0,
+ NULL, HFILL }
+ },
+
+ /* gf_flock */
+ { &hf_glusterfs_flock_type,
+ { "Type", "glusterfs.flock.type", FT_UINT32, BASE_DEC,
+ VALS(glusterfs_lk_type_names), 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_flock_whence,
+ { "Whence", "glusterfs.flock.whence", FT_UINT32,
+ BASE_DEC, VALS(glusterfs_lk_whence), 0, NULL,
+ HFILL }
+ },
+ { &hf_glusterfs_flock_start,
+ { "Start", "glusterfs.flock.start", FT_UINT64,
+ BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_flock_len,
+ { "Length", "glusterfs.flock.len", FT_UINT64, BASE_DEC,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_flock_pid,
+ { "PID", "glusterfs.flock.pid", FT_INT32, BASE_DEC,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_flock_owner,
+ { "Owner", "glusterfs.flock.owner", FT_BYTES,
+ BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+
+ /* statvfs descriptions from 'man 2 statvfs' on Linix */
+ { &hf_glusterfs_bsize,
+ { "File system block size", "glusterfs.statfs.bsize",
+ FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_frsize,
+ { "Fragment size", "glusterfs.statfs.frsize",
+ FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_blocks,
+ { "Size of fs in f_frsize units",
+ "glusterfs.statfs.blocks", FT_UINT64, BASE_DEC,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_bfree,
+ { "# free blocks", "glusterfs.statfs.bfree", FT_UINT64,
+ BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_bavail,
+ { "# free blocks for non-root",
+ "glusterfs.statfs.bavail", FT_UINT64, BASE_DEC,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_files,
+ { "# inodes", "glusterfs.statfs.files", FT_UINT64,
+ BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_ffree,
+ { "# free inodes", "glusterfs.statfs.ffree", FT_UINT64,
+ BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_favail,
+ { "# free inodes for non-root",
+ "glusterfs.statfs.favail", FT_UINT64, BASE_DEC,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_id,
+ { "File system ID", "glusterfs.statfs.fsid", FT_UINT64,
+ BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_mnt_flags,
+ { "Mount flags", "glusterfs.statfs.flags", FT_UINT32,
+ BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ /* ST_* flags from /usr/include/bits/statvfs.h */
+ { &hf_glusterfs_mnt_flag_rdonly,
+ { "ST_RDONLY", "glusterfs.statfs.flag.rdonly",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), 1, NULL,
+ HFILL }
+ },
+ { &hf_glusterfs_mnt_flag_nosuid,
+ { "ST_NOSUID", "glusterfs.statfs.flag.nosuid",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), 2, NULL,
+ HFILL }
+ },
+ { &hf_glusterfs_mnt_flag_nodev,
+ { "ST_NODEV", "glusterfs.statfs.flag.nodev",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), 4, NULL,
+ HFILL }
+ },
+ { &hf_glusterfs_mnt_flag_noexec,
+ { "ST_EXEC", "glusterfs.statfs.flag.noexec",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), 8, NULL,
+ HFILL }
+ },
+ { &hf_glusterfs_mnt_flag_synchronous,
+ { "ST_SYNCHRONOUS",
+ "glusterfs.statfs.flag.synchronous",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), 16, NULL,
+ HFILL }
+ },
+ { &hf_glusterfs_mnt_flag_mandlock,
+ { "ST_MANDLOCK", "glusterfs.statfs.flag.mandlock",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), 64, NULL,
+ HFILL }
+ },
+ { &hf_glusterfs_mnt_flag_write,
+ { "ST_WRITE", "glusterfs.statfs.flag.write",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), 128,
+ NULL, HFILL }
+ },
+ { &hf_glusterfs_mnt_flag_append,
+ { "ST_APPEND", "glusterfs.statfs.flag.append",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), 256,
+ NULL, HFILL }
+ },
+ { &hf_glusterfs_mnt_flag_immutable,
+ { "ST_IMMUTABLE", "glusterfs.statfs.flag.immutable",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), 512,
+ NULL, HFILL }
+ },
+ { &hf_glusterfs_mnt_flag_noatime,
+ { "ST_NOATIME", "glusterfs.statfs.flag.noatime",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), 1024,
+ NULL, HFILL }
+ },
+ { &hf_glusterfs_mnt_flag_nodiratime,
+ { "ST_NODIRATIME", "glusterfs.statfs.flag.nodiratime",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), 2048,
+ NULL, HFILL }
+ },
+ { &hf_glusterfs_mnt_flag_relatime,
+ { "ST_RELATIME", "glusterfs.statfs.flag.relatime",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), 4096,
+ NULL, HFILL }
+ },
+ { &hf_glusterfs_namemax,
+ { "Maximum filename length",
+ "glusterfs.statfs.namemax", FT_UINT64,
+ BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_setattr_valid,
+ { "Set attributes", "glusterfs.setattr.valid",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ /* setattr.valid flags from libglusterfs/src/xlator.h */
+ { &hf_glusterfs_setattr_set_mode,
+ { "SET_ATTR_MODE", "glusterfs.setattr.set_mode",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x1,
+ NULL, HFILL }
+ },
+ { &hf_glusterfs_setattr_set_uid,
+ { "SET_ATTR_UID", "glusterfs.setattr.set_uid",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x2,
+ NULL, HFILL }
+ },
+ { &hf_glusterfs_setattr_set_gid,
+ { "SET_ATTR_GID", "glusterfs.setattr.set_gid",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x4,
+ NULL, HFILL }
+ },
+ { &hf_glusterfs_setattr_set_size,
+ { "SET_ATTR_SIZE", "glusterfs.setattr.set_size",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x8,
+ NULL, HFILL }
+ },
+ { &hf_glusterfs_setattr_set_atime,
+ { "SET_ATTR_ATIME", "glusterfs.setattr.set_atime",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_glusterfs_setattr_set_mtime,
+ { "SET_ATTR_MTIME", "glusterfs.setattr.set_mtime",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_glusterfs_setattr_set_reserved,
+ { "Reserved", "glusterfs.setattr.set_reserved",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), ~0x3f,
+ NULL, HFILL }
+ },
+ { &hf_glusterfs_xflags,
+ { "XFlags", "glusterfs.xflags", FT_UINT32, BASE_OCT,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_oldbname,
+ { "OldBasename", "glusterfs.oldbname", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_newbname,
+ { "NewBasename", "glusterfs.newbname", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_name,
+ { "Name", "glusterfs.name", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_glusterfs_yncdir_data,
+ { "Data", "glusterfs.fsyncdir.data", FT_INT32, BASE_DEC,
+ NULL, 0, NULL, HFILL }
+ },
+ /* For entry an fentry lk */
+ { &hf_glusterfs_entrylk_namelen,
+ { "File Descriptor", "glusterfs.entrylk.namelen", FT_UINT64, BASE_DEC,
+ NULL, 0, NULL, HFILL }
+ },
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_glusterfs,
+ &ett_glusterfs_flags,
+ &ett_glusterfs_mnt_flags,
+ &ett_glusterfs_mode,
+ &ett_glusterfs_entry,
+ &ett_glusterfs_setattr_valid,
+ &ett_glusterfs_parent_iatt,
+ &ett_glusterfs_iatt,
+ &ett_glusterfs_flock,
+ &ett_gluster_dict,
+ &ett_gluster_dict_items
+ };
+
+ /* Register the protocol name and description */
+ proto_glusterfs = proto_register_protocol("GlusterFS", "GlusterFS",
+ "glusterfs");
+ proto_register_subtree_array(ett, array_length(ett));
+ proto_register_field_array(proto_glusterfs, hf, array_length(hf));
+}
+
+void
+proto_reg_handoff_glusterfs(void)
+{
+ rpc_init_prog(proto_glusterfs, GLUSTER3_1_FOP_PROGRAM, ett_glusterfs);
+ rpc_init_proc_table(GLUSTER3_1_FOP_PROGRAM, 310, glusterfs3_1_fop_proc,
+ hf_glusterfs_proc);
+ rpc_init_proc_table(GLUSTER3_1_FOP_PROGRAM, 330, glusterfs3_3_fop_proc,
+ hf_glusterfs_proc);
+
+}
+
diff --git a/epan/dissectors/packet-glusterfs_hndsk.c b/epan/dissectors/packet-glusterfs_hndsk.c
new file mode 100644
index 0000000000..4ff3e841e9
--- /dev/null
+++ b/epan/dissectors/packet-glusterfs_hndsk.c
@@ -0,0 +1,338 @@
+/* packet-gluster_hndsk.c
+ * Routines for GlusterFS Handshake dissection
+ * Copyright 2012, Niels de Vos <ndevos@redhat.com>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ *
+ * References to source files point in general to the glusterfs sources.
+ * There is currently no RFC or other document where the protocol is
+ * completely described. The glusterfs sources can be found at:
+ * - http://git.gluster.com/?p=glusterfs.git
+ * - https://github.com/gluster/glusterfs
+ *
+ * The coding-style is roughly the same as the one use in the Linux kernel,
+ * see http://www.kernel.org/doc/Documentation/CodingStyle.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+#include <string.h>
+#include <epan/packet.h>
+#include <epan/tfs.h>
+
+#include "packet-rpc.h"
+#include "packet-gluster.h"
+
+/* Initialize the protocol and registered fields */
+static gint proto_gluster_cbk = -1;
+static gint proto_gluster_hndsk = -1;
+
+/* programs and procedures */
+static gint hf_gluster_cbk_proc = -1;
+static gint hf_gluster_hndsk_proc = -1;
+static gint hf_gluster_hndsk_dict = -1;
+static gint hf_gluster_hndsk_spec = -1; /* GETSPEC Reply */
+static gint hf_gluster_hndsk_key = -1; /* GETSPEC Call */
+static gint hf_gluster_hndsk_event_op = -1; /* EVENT NOTIFY call */
+static gint hf_gluster_hndsk_uid = -1; /* LOCK VERSION*/
+static gint hf_gluster_hndsk_lk_ver= -1;
+static gint hf_gluster_hndsk_flags = -1;
+
+/* Initialize the subtree pointers */
+static gint ett_gluster_cbk = -1;
+static gint ett_gluster_hndsk = -1;
+
+/* procedures for GLUSTER_HNDSK_PROGRAM */
+static int
+gluster_hndsk_setvolume_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_gluster_hndsk_dict,
+ offset);
+ return offset;
+}
+
+static int
+gluster_hndsk_setvolume_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_gluster_hndsk_dict,
+ offset);
+ return offset;
+}
+
+static int
+gluster_hndsk_2_setvolume_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_gluster_hndsk_dict,
+ offset);
+ return offset;
+}
+
+static int
+gluster_hndsk_2_setvolume_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_gluster_hndsk_dict,
+ offset);
+ return offset;
+}
+
+static int
+gluster_hndsk_2_getspec_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ gchar* spec = NULL;
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = dissect_rpc_string(tvb, tree, hf_gluster_hndsk_spec, offset,
+ &spec);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_gluster_hndsk_dict,
+ offset);
+ return offset;
+}
+
+static int
+gluster_hndsk_2_getspec_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar *key = NULL;
+
+ if (tree)
+ proto_tree_add_item(tree, hf_gluster_hndsk_flags, tvb, offset,
+ 4, ENC_NA);
+ offset += 4;
+ offset = dissect_rpc_string(tvb, tree, hf_gluster_hndsk_key, offset,
+ &key);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_gluster_hndsk_dict,
+ offset);
+ return offset;
+}
+
+static int
+gluster_hndsk_2_set_lk_ver_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
+ proto_tree *tree)
+{
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = dissect_rpc_uint32(tvb, tree,hf_gluster_hndsk_lk_ver, offset);
+ return offset;
+}
+
+static int
+gluster_hndsk_2_set_lk_ver_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ gchar* uid = NULL;
+ offset = dissect_rpc_string(tvb, tree, hf_gluster_hndsk_uid, offset,
+ &uid);
+ offset = dissect_rpc_uint32(tvb, tree,hf_gluster_hndsk_lk_ver, offset);
+ return offset;
+}
+
+static int
+gluster_hndsk_2_event_notify_call(tvbuff_t *tvb, int offset,
+ packet_info *pinfo _U_, proto_tree *tree)
+{
+ offset = dissect_rpc_uint32(tvb, tree, hf_gluster_hndsk_event_op,
+ offset);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_gluster_hndsk_dict,
+ offset);
+ return offset;
+}
+
+/* In rpc/xdr/src/glusterfs3-xdr.c. xdr_gf_event_notify_rsp */
+
+static int
+gluster_hndsk_2_event_notify_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree)
+{
+ offset = gluster_dissect_common_reply(tvb, offset, pinfo, tree);
+ offset = gluster_rpc_dissect_dict(tree, tvb, hf_gluster_hndsk_dict,
+ offset);
+ return offset;
+}
+
+static const vsff gluster_hndsk_proc[] = {
+ { GF_HNDSK_NULL, "NULL", NULL, NULL },
+ {
+ GF_HNDSK_SETVOLUME, "SETVOLUME",
+ gluster_hndsk_setvolume_call, gluster_hndsk_setvolume_reply
+ },
+ { GF_HNDSK_GETSPEC, "GETSPEC", NULL, NULL },
+ { GF_HNDSK_PING, "PING", NULL, gluster_dissect_common_reply },
+ { 0, NULL, NULL, NULL }
+};
+
+static const vsff gluster_hndsk_2_proc[] = {
+ { GF_HNDSK_NULL, "NULL", NULL, NULL },
+ {
+ GF_HNDSK_SETVOLUME, "SETVOLUME",
+ gluster_hndsk_2_setvolume_call, gluster_hndsk_2_setvolume_reply
+ },
+ {
+ GF_HNDSK_GETSPEC, "GETSPEC",
+ gluster_hndsk_2_getspec_call, gluster_hndsk_2_getspec_reply
+ },
+ { GF_HNDSK_PING, "PING", NULL, gluster_dissect_common_reply },
+ {
+ GF_HNDSK_SET_LK_VER,"LOCK VERSION",
+ gluster_hndsk_2_set_lk_ver_call, gluster_hndsk_2_set_lk_ver_reply
+ },
+ {
+ GF_HNDSK_EVENT_NOTIFY, "EVENTNOTIFY",
+ gluster_hndsk_2_event_notify_call,
+ gluster_hndsk_2_event_notify_reply
+ },
+ { 0, NULL, NULL, NULL }
+};
+
+
+static const value_string gluster_hndsk_proc_vals[] = {
+ { GF_HNDSK_NULL, "NULL" },
+ { GF_HNDSK_SETVOLUME, "DUMP" },
+ { GF_HNDSK_GETSPEC, "GETSPEC" },
+ { GF_HNDSK_PING, "PING" },
+ { GF_HNDSK_SET_LK_VER,"LOCK VERSION" },
+ { GF_HNDSK_EVENT_NOTIFY, "EVENTNOTIFY" },
+ { 0, NULL }
+};
+
+void
+proto_register_gluster_hndsk(void)
+{
+ static hf_register_info hf[] = {
+ { &hf_gluster_hndsk_proc,
+ { "GlusterFS Handshake", "glusterfs.hndsk.proc",
+ FT_UINT32, BASE_DEC,
+ VALS(gluster_hndsk_proc_vals), 0, NULL, HFILL }
+ },
+ /* fields used by Gluster Handshake */
+ { &hf_gluster_hndsk_dict,
+ { "Dict", "glusterfs.hndsk.dict", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }
+ },
+ /* For Gluster handshake event notify */
+ { &hf_gluster_hndsk_event_op,
+ { "Event Op", "glusterfs.hndsk.event_notify_op",
+ FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_gluster_hndsk_key,
+ { "Key", "glusterfs.hndsk.getspec.key", FT_STRING,
+ BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_gluster_hndsk_spec,
+ /* FIXME: rename spec to something clearer */
+ { "Spec", "glusterfs.hndsk.getspec", FT_STRING,
+ BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ /* For hand shake set_lk_ver */
+ { &hf_gluster_hndsk_uid,
+ { "Name", "glusterfs.hndsk.uid", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_gluster_hndsk_lk_ver,
+ { "Event Op", "glusterfs.hndsk.lk_ver", FT_UINT32,
+ BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_gluster_hndsk_flags,
+ { "Flags", "glusterfs.hndsk.flags", FT_UINT32, BASE_OCT,
+ NULL, 0, NULL, HFILL }
+ }
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_gluster_hndsk
+ };
+
+ /* Register the protocol name and description */
+ proto_gluster_hndsk = proto_register_protocol("GlusterFS Handshake",
+ "GlusterFS Handshake",
+ "glusterfs.hndsk");
+ proto_register_subtree_array(ett, array_length(ett));
+ proto_register_field_array(proto_gluster_hndsk, hf, array_length(hf));
+
+}
+
+void
+proto_reg_handoff_gluster_hndsk(void)
+{
+ rpc_init_prog(proto_gluster_hndsk, GLUSTER_HNDSK_PROGRAM,
+ ett_gluster_hndsk);
+ rpc_init_proc_table(GLUSTER_HNDSK_PROGRAM, 1, gluster_hndsk_proc,
+ hf_gluster_hndsk_proc);
+ rpc_init_proc_table(GLUSTER_HNDSK_PROGRAM, 2, gluster_hndsk_2_proc,
+ hf_gluster_hndsk_proc);
+}
+
+/* Legacy GlusterFS Callback procedures, they don't contain any data. */
+static const vsff gluster_cbk_proc[] = {
+ { GF_CBK_NULL, "NULL", NULL, NULL },
+ { GF_CBK_FETCHSPEC, "FETCHSPEC", NULL, NULL },
+ { GF_CBK_INO_FLUSH, "INO_FLUSH", NULL, NULL },
+ { 0, NULL, NULL, NULL }
+};
+static const value_string gluster_cbk_proc_vals[] = {
+ { GF_CBK_NULL, "NULL" },
+ { GF_CBK_FETCHSPEC, "FETCHSPEC" },
+ { GF_CBK_INO_FLUSH, "INO_FLUSH" },
+ { 0, NULL }
+};
+
+void
+proto_register_gluster_cbk(void)
+{
+ /* Setup list of header fields See Section 1.6.1 for details */
+ static hf_register_info hf[] = {
+ /* programs */
+ { &hf_gluster_cbk_proc,
+ { "GlusterFS Callback", "glusterfs.cbk.proc",
+ FT_UINT32, BASE_DEC,
+ VALS(gluster_cbk_proc_vals), 0, NULL, HFILL }
+ }
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_gluster_cbk
+ };
+
+ /* Register the protocol name and description */
+ proto_gluster_cbk = proto_register_protocol("GlusterFS Callback",
+ "GlusterFS Callback", "glusterfs.cbk");
+ proto_register_subtree_array(ett, array_length(ett));
+ proto_register_field_array(proto_gluster_cbk, hf, array_length(hf));
+}
+
+void
+proto_reg_handoff_gluster_cbk(void)
+{
+ rpc_init_prog(proto_gluster_cbk, GLUSTER_CBK_PROGRAM, ett_gluster_cbk);
+ rpc_init_proc_table(GLUSTER_CBK_PROGRAM, 1, gluster_cbk_proc,
+ hf_gluster_cbk_proc);
+}
+
diff --git a/epan/dissectors/packet-gmhdr.c b/epan/dissectors/packet-gmhdr.c
index b79686e082..638ac95405 100644
--- a/epan/dissectors/packet-gmhdr.c
+++ b/epan/dissectors/packet-gmhdr.c
@@ -33,6 +33,8 @@
#include <epan/etypes.h>
#include <epan/prefs.h>
#include <epan/in_cksum.h>
+#include <epan/crc32-tvb.h>
+#include <wsutil/crc32.h>
#include <epan/expert.h>
#include "packet-ieee8023.h"
@@ -68,8 +70,11 @@ static const value_string gmhdr_plfm_str[] = {
};
static gboolean gmhdr_summary_in_tree = TRUE;
+static gboolean gmtrailer_summary_in_tree = TRUE;
+static gboolean gmhdr_decode_timestamp_trailer = TRUE;
static int proto_gmhdr = -1;
+static int proto_gmtrailer = -1;
static int hf_gmhdr_srcport = -1;
static int hf_gmhdr_srcport_plfm = -1;
static int hf_gmhdr_srcport_gid = -1;
@@ -82,8 +87,13 @@ static int hf_gmhdr_etype = -1;
static int hf_gmhdr_len = -1;
static int hf_gmhdr_trailer = -1;
+static int hf_gmtrailer_origcrc = -1;
+static int hf_gmtrailer_portid = -1;
+static int hf_gmtrailer_timestamp = -1;
+
static gint ett_gmhdr = -1;
static gint ett_srcport = -1;
+static gint ett_gmtrailer = -1;
@@ -206,6 +216,62 @@ dissect_gmhdr(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
static int
+dissect_gmtimestamp_trailer(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_tree *ti;
+ guint tvblen, trailer_len = 18;
+ proto_tree *gmtrailer_tree = NULL;
+ guint offset = 0;
+ guint32 orig_crc, new_crc, comp_crc;
+ guint16 port_num;
+ nstime_t gmtime;
+
+ struct tm *tm = NULL;
+
+ if ( ! gmhdr_decode_timestamp_trailer)
+ return 0;
+
+ /* See if this packet has a Gigamon trailer, if yes, then decode it */
+ /* (Don't throw any exceptions while checking for the trailer). */
+ tvblen = tvb_length(tvb); /* end+1 */
+ if (tvblen < trailer_len)
+ return 0;
+
+ orig_crc = tvb_get_ntohl(tvb, offset);
+ new_crc = tvb_get_ntohl(tvb, tvblen - 4);
+
+ /* Verify the checksum; if not valid, it means that the trailer is not valid */
+ comp_crc = CRC32C_SWAP(crc32_ccitt_tvb_seed(tvb, 14, CRC32C_SWAP(~orig_crc)));
+ if (comp_crc != new_crc)
+ return 0;
+
+ /* OK: We appear to have a Gigamon trailer */
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_gmtrailer, tvb, offset, trailer_len - 4, ENC_NA);
+
+ if (gmtrailer_summary_in_tree) {
+ offset += 4;
+ port_num = tvb_get_ntohs(tvb, offset);
+ offset += 2;
+ gmtime.secs = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+ gmtime.nsecs = tvb_get_ntohl(tvb, offset);
+
+ tm = localtime(&gmtime.secs);
+ proto_item_append_text(ti, ", Port: %d, Timestamp: %d:%d:%d.%d", port_num, tm->tm_hour, tm->tm_min, tm->tm_sec, gmtime.nsecs);
+ }
+
+ offset = 0;
+ gmtrailer_tree = proto_item_add_subtree(ti, ett_gmtrailer);
+ proto_tree_add_item(gmtrailer_tree, hf_gmtrailer_origcrc, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(gmtrailer_tree, hf_gmtrailer_portid, tvb, offset+4, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(gmtrailer_tree, hf_gmtrailer_timestamp, tvb, offset+6, 8, ENC_TIME_TIMESPEC|ENC_BIG_ENDIAN);
+ }
+
+ return 14;
+}
+
+static int
dissect_gmtrailer(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
{
proto_tree *ti;
@@ -293,23 +359,52 @@ proto_register_gmhdr(void)
NULL, 0x0, NULL, HFILL }},
{ &hf_gmhdr_trailer, {
"Trailer", "gmhdr.trailer", FT_BYTES, BASE_NONE,
- NULL, 0x0, "GMHDR Trailer", HFILL }}
+ NULL, 0x0, "GMHDR Trailer", HFILL }},
+ };
+ static hf_register_info gmtrailer_hf[] = {
+ { &hf_gmtrailer_origcrc, {
+ "Original CRC", "gmtrailer.crc", FT_UINT32, BASE_HEX,
+ NULL, 0x0, "Original Packet CRC", HFILL }},
+ { &hf_gmtrailer_portid, {
+ "Src Port", "gmtrailer.portid", FT_UINT16, BASE_HEX,
+ NULL, 0x0, "Origin Source Port", HFILL }},
+ { &hf_gmtrailer_timestamp, {
+ "Time Stamp", "gmtrailer.timestamp", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0x0, NULL, HFILL }},
};
static gint *ett[] = {
&ett_gmhdr,
&ett_srcport
};
+ static gint *gmtrailer_ett[] = {
+ &ett_gmtrailer,
+ };
module_t *gmhdr_module;
+ module_t *gmtrailer_module;
proto_gmhdr = proto_register_protocol("Gigamon Header", "GMHDR", "gmhdr");
proto_register_field_array(proto_gmhdr, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
+ proto_gmtrailer = proto_register_protocol("Gigamon Trailer", "GMTRAILER", "gmtrailer");
+ proto_register_field_array(proto_gmtrailer, gmtrailer_hf, array_length(gmtrailer_hf));
+ proto_register_subtree_array(gmtrailer_ett, array_length(gmtrailer_ett));
+
gmhdr_module = prefs_register_protocol(proto_gmhdr, NULL);
prefs_register_bool_preference(gmhdr_module, "summary_in_tree",
"Show Gigamon header summary in protocol tree",
"Whether the Gigamon header summary line should be shown in the protocol tree",
&gmhdr_summary_in_tree);
+
+ gmtrailer_module = prefs_register_protocol(proto_gmtrailer, NULL);
+ prefs_register_bool_preference(gmtrailer_module, "summary_in_tree",
+ "Show Gigamon Trailer summary in protocol tree",
+ "Whether the Gigamon Trailer summary line should be shown in the protocol tree",
+ &gmtrailer_summary_in_tree);
+ prefs_register_bool_preference(gmtrailer_module, "decode_trailer_timestamp",
+ "Decode Gigamon HW timestamp and source id in trailer",
+ "Whether the Gigamon trailer containing HW timestamp, source id and original CRC should be decoded",
+ &gmhdr_decode_timestamp_trailer);
}
void
@@ -320,5 +415,7 @@ proto_reg_handoff_gmhdr(void)
gmhdr_handle = create_dissector_handle(dissect_gmhdr, proto_gmhdr);
dissector_add_uint("ethertype", ETHERTYPE_GIGAMON, gmhdr_handle);
heur_dissector_add("eth.trailer", dissect_gmtrailer, proto_gmhdr);
+
+ heur_dissector_add("eth.trailer", dissect_gmtimestamp_trailer, proto_gmtrailer);
}
diff --git a/epan/dissectors/packet-gmr1_bcch.c b/epan/dissectors/packet-gmr1_bcch.c
index 3de2a4d374..4896acb5cf 100644
--- a/epan/dissectors/packet-gmr1_bcch.c
+++ b/epan/dissectors/packet-gmr1_bcch.c
@@ -855,7 +855,7 @@ CSN_DESCR_BEGIN(SI1_Block_Header_t)
M_UINT (SI1_Block_Header_t, Block_Type, 1, &hf_si_block_type),
M_UINT (SI1_Block_Header_t, Randomization_Period, 2, &hf_si1_randomization_period),
M_UINT (SI1_Block_Header_t, Spare, 1, &hf_si_spare),
-CSN_DESCR_END (SI1_Block_Header_t);
+CSN_DESCR_END (SI1_Block_Header_t)
static const
CSN_ChoiceElement_t SI1_SegmentChoice[] =
@@ -899,7 +899,7 @@ CSN_DESCR_BEGIN(SI2_Block_Header_t)
M_UINT (SI2_Block_Header_t, Protocol_Version, 4, &hf_si_protocol_version),
M_UINT (SI2_Block_Header_t, Block_Type, 1, &hf_si_block_type),
M_UINT (SI2_Block_Header_t, Spare, 3, &hf_si_spare),
-CSN_DESCR_END (SI2_Block_Header_t);
+CSN_DESCR_END (SI2_Block_Header_t)
static const
CSN_ChoiceElement_t SI2_SegmentChoice[] =
diff --git a/epan/dissectors/packet-gmr1_dtap.c b/epan/dissectors/packet-gmr1_dtap.c
index 88b4445f55..05b9bbc62b 100644
--- a/epan/dissectors/packet-gmr1_dtap.c
+++ b/epan/dissectors/packet-gmr1_dtap.c
@@ -130,7 +130,7 @@ dissect_gmr1_dtap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Message type - [1] 11.4 */
proto_tree_add_uint_format(
- dtap_tree, hf_idx, tvb, offset, 1, oct[1],
+ pd_tree, hf_idx, tvb, offset, 1, oct[1],
"Message Type: %s", msg_str ? msg_str : "(Unknown)"
);
@@ -138,9 +138,9 @@ dissect_gmr1_dtap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Decode elements */
if (msg_func) {
- (*msg_func)(tvb, dtap_tree, pinfo, offset, len - offset);
+ (*msg_func)(tvb, pd_tree, pinfo, offset, len - offset);
} else {
- proto_tree_add_text(dtap_tree, tvb, offset, len - offset,
+ proto_tree_add_text(pd_tree, tvb, offset, len - offset,
"Message Elements");
}
diff --git a/epan/dissectors/packet-gmr1_rr.c b/epan/dissectors/packet-gmr1_rr.c
index 99f2ec8da3..99980e84ba 100644
--- a/epan/dissectors/packet-gmr1_rr.c
+++ b/epan/dissectors/packet-gmr1_rr.c
@@ -288,7 +288,7 @@ GMR1_IE_FUNC(gmr1_ie_rr_chan_desc)
/* Channel Type (5 bits) */
proto_tree_add_bits_item(tree, hf_rr_chan_desc_chan_type, tvb,
bit_offset, 5, ENC_BIG_ENDIAN);
- bit_offset += 5;
+ /*bit_offset += 5;*/
return 4;
}
@@ -472,7 +472,7 @@ GMR1_IE_FUNC(gmr1_ie_rr_timing_ofs)
/* Value */
proto_tree_add_bits_item(tree, hf_rr_timing_ofs_value, tvb,
bit_offset, 15, ENC_BIG_ENDIAN);
- bit_offset += 15;
+ /*bit_offset += 15;*/
return 2;
}
@@ -576,7 +576,7 @@ GMR1_IE_FUNC(gmr1_ie_rr_freq_ofs)
/* Spare */
proto_tree_add_bits_item(tree, hf_rr_freq_ofs_spare, tvb,
bit_offset, 3, ENC_BIG_ENDIAN);
- bit_offset += 3;
+ /*bit_offset += 3;*/
return 2;
}
@@ -718,7 +718,7 @@ GMR1_IE_FUNC(gmr1_ie_rr_bcch_carrier)
/* Spare */
proto_tree_add_bits_item(tree, hf_rr_bcch_carrier_spare,
tvb, bit_offset, 3, ENC_BIG_ENDIAN);
- bit_offset += 3;
+ /*bit_offset += 3;*/
return 2;
}
diff --git a/epan/dissectors/packet-gmrp.c b/epan/dissectors/packet-gmrp.c
index b9bd860e28..d1aeab5abc 100644
--- a/epan/dissectors/packet-gmrp.c
+++ b/epan/dissectors/packet-gmrp.c
@@ -30,8 +30,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-gnutella.c b/epan/dissectors/packet-gnutella.c
index e65293358f..f5628d3c1b 100644
--- a/epan/dissectors/packet-gnutella.c
+++ b/epan/dissectors/packet-gnutella.c
@@ -27,11 +27,8 @@
#include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
-
#include <epan/packet.h>
#include "packet-gnutella.h"
#include "packet-tcp.h"
diff --git a/epan/dissectors/packet-gopher.c b/epan/dissectors/packet-gopher.c
index 24e2a0fc9a..b9df44ba98 100644
--- a/epan/dissectors/packet-gopher.c
+++ b/epan/dissectors/packet-gopher.c
@@ -34,8 +34,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
@@ -137,7 +135,7 @@ dissect_gopher(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
proto_tree *gopher_tree, *dir_tree = NULL;
gboolean client = is_client(pinfo);
gint line_len;
- gchar *request = "[Invalid request]";
+ const gchar *request = "[Invalid request]";
gboolean is_dir = FALSE;
gint offset = 0, next_offset;
gint sel_start, host_start, port_start;
diff --git a/epan/dissectors/packet-gprs-llc.c b/epan/dissectors/packet-gprs-llc.c
index 847d98ea96..817695e0f6 100644
--- a/epan/dissectors/packet-gprs-llc.c
+++ b/epan/dissectors/packet-gprs-llc.c
@@ -1030,7 +1030,6 @@ dissect_llcgprs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case U_FORMAT:
offset +=1;
- tmp = 0;
tmp = ctrl_fld_fb & 0xf;
col_append_str(pinfo->cinfo, COL_INFO, ", U, ");
diff --git a/epan/dissectors/packet-gre.c b/epan/dissectors/packet-gre.c
index bf42b59ca7..ff693d2dd6 100644
--- a/epan/dissectors/packet-gre.c
+++ b/epan/dissectors/packet-gre.c
@@ -29,14 +29,14 @@
#include <glib.h>
#include <epan/packet.h>
-#include "packet-gre.h"
-#include "packet-wccp.h"
-#include <epan/in_cksum.h>
#include <epan/etypes.h>
+#include <epan/in_cksum.h>
+#include <epan/expert.h>
#include <epan/greproto.h>
#include <epan/ipproto.h>
#include <epan/llcsaps.h>
-#include <epan/expert.h>
+#include "packet-gre.h"
+#include "packet-wccp.h"
/*
* See RFC 1701 "Generic Routing Encapsulation (GRE)", RFC 1702
@@ -101,64 +101,64 @@ static dissector_table_t gre_dissector_table;
static dissector_handle_t data_handle;
/* bit positions for flags in header */
-#define GRE_CHECKSUM 0x8000
-#define GRE_ROUTING 0x4000
-#define GRE_KEY 0x2000
-#define GRE_SEQUENCE 0x1000
-#define GRE_STRICTSOURCE 0x0800
-#define GRE_RECURSION 0x0700
-#define GRE_ACK 0x0080 /* only in special PPTPized GRE header */
-#define GRE_RESERVED_PPP 0x0078 /* only in special PPTPized GRE header */
-#define GRE_RESERVED 0x00F8
-#define GRE_VERSION 0x0007
+#define GRE_CHECKSUM 0x8000
+#define GRE_ROUTING 0x4000
+#define GRE_KEY 0x2000
+#define GRE_SEQUENCE 0x1000
+#define GRE_STRICTSOURCE 0x0800
+#define GRE_RECURSION 0x0700
+#define GRE_ACK 0x0080 /* only in special PPTPized GRE header */
+#define GRE_RESERVED_PPP 0x0078 /* only in special PPTPized GRE header */
+#define GRE_RESERVED 0x00F8
+#define GRE_VERSION 0x0007
const value_string gre_version[] = {
- { 0, "GRE" }, /* [RFC2784] */
- { 1, "Enhanced GRE" }, /* [RFC2637] */
- { 0, NULL}
+ { 0, "GRE" }, /* [RFC2784] */
+ { 1, "Enhanced GRE" }, /* [RFC2637] */
+ { 0, NULL}
};
const value_string gre_typevals[] = {
- { ETHERTYPE_PPP, "PPP" },
- { ETHERTYPE_IP, "IP" },
- { SAP_OSINL5, "OSI"},
- { GRE_WCCP, "WCCP"},
- { GRE_NHRP, "NHRP"},
- { GRE_ERSPAN_88BE, "ERSPAN"},
- { GRE_ERSPAN_22EB, "ERSPAN"},
- { ETHERTYPE_IPX, "IPX"},
- { ETHERTYPE_ETHBRIDGE, "Transparent Ethernet bridging" },
- { ETHERTYPE_RAW_FR, "Frame Relay"},
- { ETHERTYPE_IPv6, "IPv6" },
- { ETHERTYPE_MPLS, "MPLS label switched packet" },
- { ETHERTYPE_CDMA2000_A10_UBS,"CDMA2000 A10 Unstructured byte stream" },
- { ETHERTYPE_3GPP2, "CDMA2000 A10 3GPP2 Packet" },
- { GRE_ARUBA_8200, "ARUBA WLAN" },
- { GRE_ARUBA_8210, "ARUBA WLAN" },
- { GRE_ARUBA_8220, "ARUBA WLAN" },
- { GRE_ARUBA_8230, "ARUBA WLAN" },
- { GRE_ARUBA_8240, "ARUBA WLAN" },
- { GRE_ARUBA_8250, "ARUBA WLAN" },
- { GRE_ARUBA_8260, "ARUBA WLAN" },
- { GRE_ARUBA_8270, "ARUBA WLAN" },
- { GRE_ARUBA_8280, "ARUBA WLAN" },
- { GRE_ARUBA_8290, "ARUBA WLAN" },
- { GRE_ARUBA_82A0, "ARUBA WLAN" },
- { GRE_ARUBA_82B0, "ARUBA WLAN" },
- { GRE_ARUBA_82C0, "ARUBA WLAN" },
- { GRE_ARUBA_82D0, "ARUBA WLAN" },
- { GRE_ARUBA_82E0, "ARUBA WLAN" },
- { GRE_ARUBA_82F0, "ARUBA WLAN" },
- { GRE_ARUBA_8300, "ARUBA WLAN" },
- { GRE_ARUBA_8310, "ARUBA WLAN" },
- { GRE_ARUBA_8320, "ARUBA WLAN" },
- { GRE_ARUBA_8330, "ARUBA WLAN" },
- { GRE_ARUBA_8340, "ARUBA WLAN" },
- { GRE_ARUBA_8350, "ARUBA WLAN" },
- { GRE_ARUBA_8360, "ARUBA WLAN" },
- { GRE_ARUBA_8370, "ARUBA WLAN" },
- { GRE_ARUBA_9000, "ARUBA WLAN" },
- { 0, NULL }
+ { ETHERTYPE_PPP, "PPP" },
+ { ETHERTYPE_IP, "IP" },
+ { SAP_OSINL5, "OSI"},
+ { GRE_WCCP, "WCCP"},
+ { GRE_NHRP, "NHRP"},
+ { GRE_ERSPAN_88BE, "ERSPAN"},
+ { GRE_ERSPAN_22EB, "ERSPAN"},
+ { ETHERTYPE_IPX, "IPX"},
+ { ETHERTYPE_ETHBRIDGE, "Transparent Ethernet bridging" },
+ { ETHERTYPE_RAW_FR, "Frame Relay"},
+ { ETHERTYPE_IPv6, "IPv6" },
+ { ETHERTYPE_MPLS, "MPLS label switched packet" },
+ { ETHERTYPE_CDMA2000_A10_UBS,"CDMA2000 A10 Unstructured byte stream" },
+ { ETHERTYPE_3GPP2, "CDMA2000 A10 3GPP2 Packet" },
+ { GRE_ARUBA_8200, "ARUBA WLAN" },
+ { GRE_ARUBA_8210, "ARUBA WLAN" },
+ { GRE_ARUBA_8220, "ARUBA WLAN" },
+ { GRE_ARUBA_8230, "ARUBA WLAN" },
+ { GRE_ARUBA_8240, "ARUBA WLAN" },
+ { GRE_ARUBA_8250, "ARUBA WLAN" },
+ { GRE_ARUBA_8260, "ARUBA WLAN" },
+ { GRE_ARUBA_8270, "ARUBA WLAN" },
+ { GRE_ARUBA_8280, "ARUBA WLAN" },
+ { GRE_ARUBA_8290, "ARUBA WLAN" },
+ { GRE_ARUBA_82A0, "ARUBA WLAN" },
+ { GRE_ARUBA_82B0, "ARUBA WLAN" },
+ { GRE_ARUBA_82C0, "ARUBA WLAN" },
+ { GRE_ARUBA_82D0, "ARUBA WLAN" },
+ { GRE_ARUBA_82E0, "ARUBA WLAN" },
+ { GRE_ARUBA_82F0, "ARUBA WLAN" },
+ { GRE_ARUBA_8300, "ARUBA WLAN" },
+ { GRE_ARUBA_8310, "ARUBA WLAN" },
+ { GRE_ARUBA_8320, "ARUBA WLAN" },
+ { GRE_ARUBA_8330, "ARUBA WLAN" },
+ { GRE_ARUBA_8340, "ARUBA WLAN" },
+ { GRE_ARUBA_8350, "ARUBA WLAN" },
+ { GRE_ARUBA_8360, "ARUBA WLAN" },
+ { GRE_ARUBA_8370, "ARUBA WLAN" },
+ { GRE_ARUBA_9000, "ARUBA WLAN" },
+ { 0, NULL }
};
#define ID_3GPP2_SDI_FLAG 1
@@ -167,339 +167,339 @@ const value_string gre_typevals[] = {
#define ID_3GPP2_SEG 4
static const value_string gre_3ggp2_seg_vals[] = {
- { 0x00, "Packet Started" },
- { 0x01, "Packet continued" },
- { 0x02, "Packet Ended" },
- { 0, NULL }
+ { 0x00, "Packet Started" },
+ { 0x01, "Packet continued" },
+ { 0x02, "Packet Ended" },
+ { 0, NULL }
};
/* 3GPP2 A.S0012-C v2.0
* 2.6.1 GRE Attributes
*/
static const value_string gre_3ggp2_attrib_id_vals[] = {
- { 0x01, "1x SDB/HRPD DOS Indicator" },
- { 0x02, "Flow Control Indication" },
- /* A.S0008-A v1.0 */
- { 0x03, "IP Flow Discriminator" },
- { 0x04, "Segmentation Indication" },
- { 0, NULL }
+ { 0x01, "1x SDB/HRPD DOS Indicator" },
+ { 0x02, "Flow Control Indication" },
+ /* A.S0008-A v1.0 */
+ { 0x03, "IP Flow Discriminator" },
+ { 0x04, "Segmentation Indication" },
+ { 0, NULL }
};
static const true_false_string gre_3ggp2_sdi_val = {
- "Packet suitable for 1x SDB or HRPD DOS transmission",
- "Reserved"
+ "Packet suitable for 1x SDB or HRPD DOS transmission",
+ "Reserved"
};
static const true_false_string gre_3ggp2_fci_val = {
- "XOFF",
- "XON"
+ "XOFF",
+ "XON"
};
static const true_false_string gre_3ggp2_di_val = {
- "INDEFINITE:",
- "TEMPORARY"
+ "INDEFINITE:",
+ "TEMPORARY"
};
static const true_false_string gre_wccp_dynamic_service_val = {
- "Dynamic service",
- "Well-known service"
+ "Dynamic service",
+ "Well-known service"
};
static const true_false_string gre_wccp_alternative_bucket_used_val = {
- "Alternative bucket used",
- "Primary bucket used",
+ "Alternative bucket used",
+ "Primary bucket used",
};
static int
dissect_gre_3gpp2_attribs(tvbuff_t *tvb, int offset, proto_tree *tree)
{
- gboolean last_attrib = FALSE;
- proto_item* attr_item;
- proto_tree* attr_tree;
- guint8 value;
- int start_offset = offset;
+ gboolean last_attrib = FALSE;
+ proto_item *attr_item;
+ proto_tree *attr_tree;
+ guint8 value;
+ int start_offset = offset;
- proto_item* ti = proto_tree_add_item(tree, hf_gre_3ggp2_attrib, tvb, offset, 0, ENC_NA);
- proto_tree* atree = proto_item_add_subtree(ti, ett_3gpp2_attribs);
+ proto_item *ti = proto_tree_add_item(tree, hf_gre_3ggp2_attrib, tvb, offset, 0, ENC_NA);
+ proto_tree *atree = proto_item_add_subtree(ti, ett_3gpp2_attribs);
- while(last_attrib != TRUE)
- {
- guint8 attrib_id = tvb_get_guint8(tvb, offset);
- guint8 attrib_length = tvb_get_guint8(tvb, offset + 1);
+ while(last_attrib != TRUE)
+ {
+ guint8 attrib_id = tvb_get_guint8(tvb, offset);
+ guint8 attrib_length = tvb_get_guint8(tvb, offset + 1);
- attr_item = proto_tree_add_text(atree, tvb, offset, attrib_length + 1 + 1, "%s",
- val_to_str((attrib_id&0x7f), gre_3ggp2_attrib_id_vals, "%u (Unknown)"));
- attr_tree = proto_item_add_subtree(attr_item, ett_3gpp2_attr);
+ attr_item = proto_tree_add_text(atree, tvb, offset, attrib_length + 1 + 1, "%s",
+ val_to_str((attrib_id&0x7f), gre_3ggp2_attrib_id_vals, "%u (Unknown)"));
+ attr_tree = proto_item_add_subtree(attr_item, ett_3gpp2_attr);
- proto_tree_add_item(attr_tree, hf_gre_3ggp2_attrib_id, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(attr_tree, hf_gre_3ggp2_attrib_length, tvb, offset+1, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(attr_tree, hf_gre_3ggp2_attrib_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(attr_tree, hf_gre_3ggp2_attrib_length, tvb, offset+1, 1, ENC_BIG_ENDIAN);
- offset += 2;
- last_attrib = (attrib_id & 0x80)?TRUE:FALSE;
- attrib_id &= 0x7F;
+ offset += 2;
+ last_attrib = (attrib_id & 0x80)?TRUE:FALSE;
+ attrib_id &= 0x7F;
- switch(attrib_id)
- {
+ switch(attrib_id)
+ {
case ID_3GPP2_FLOW_DISCRIMINATOR:
- {
- value = tvb_get_guint8(tvb,offset);
- proto_tree_add_item(attr_tree, hf_gre_3ggp2_flow_disc, tvb, offset, attrib_length, ENC_NA);
- proto_item_append_text(attr_item," - 0x%x",value);
- }
- break;
+ {
+ value = tvb_get_guint8(tvb,offset);
+ proto_tree_add_item(attr_tree, hf_gre_3ggp2_flow_disc, tvb, offset, attrib_length, ENC_NA);
+ proto_item_append_text(attr_item," - 0x%x",value);
+ }
+ break;
case ID_3GPP2_SDI_FLAG:
- {
- value = tvb_get_guint8(tvb,offset);
- proto_tree_add_item(attr_tree, hf_gre_3ggp2_sdi, tvb, offset, attrib_length, ENC_BIG_ENDIAN);
- proto_item_append_text(attr_item," - %s",
- (value & 0x80) ? "Packet suitable for 1x SDB or HRPD DOS transmission" : "Reserved");
-
- }
- break;
+ {
+ value = tvb_get_guint8(tvb,offset);
+ proto_tree_add_item(attr_tree, hf_gre_3ggp2_sdi, tvb, offset, attrib_length, ENC_BIG_ENDIAN);
+ proto_item_append_text(attr_item," - %s",
+ (value & 0x80) ? "Packet suitable for 1x SDB or HRPD DOS transmission" : "Reserved");
+
+ }
+ break;
case ID_3GPP2_SEG:
- {
- value = tvb_get_guint8(tvb,offset) >>6;
- proto_tree_add_item(attr_tree, hf_gre_3ggp2_seg, tvb, offset, attrib_length, ENC_BIG_ENDIAN);
- proto_item_append_text(attr_item," - %s",val_to_str(value, gre_3ggp2_seg_vals, "0x%02X - Unknown"));
- }
- break;
+ {
+ value = tvb_get_guint8(tvb,offset) >>6;
+ proto_tree_add_item(attr_tree, hf_gre_3ggp2_seg, tvb, offset, attrib_length, ENC_BIG_ENDIAN);
+ proto_item_append_text(attr_item," - %s",val_to_str(value, gre_3ggp2_seg_vals, "0x%02X - Unknown"));
+ }
+ break;
case ID_3GPP2_FLOW_CTRL:
- {
- value = tvb_get_guint8(tvb,offset);
- proto_tree_add_item(attr_tree, hf_gre_3ggp2_fci, tvb, offset, attrib_length, ENC_BIG_ENDIAN);
- proto_item_append_text(attr_item," - %s",
- (value & 0x80) ? "XON" : "XOFF");
- proto_tree_add_item(attr_tree, hf_gre_3ggp2_di, tvb, offset, attrib_length, ENC_BIG_ENDIAN);
- proto_item_append_text(attr_item,"/%s",
- (value & 0x40) ? "INDEFINITE" : "TEMPORARY");
- }
- break;
- }
-
- offset += attrib_length;
- }
- proto_item_set_len(ti, offset - start_offset);
-
- return offset;
+ {
+ value = tvb_get_guint8(tvb,offset);
+ proto_tree_add_item(attr_tree, hf_gre_3ggp2_fci, tvb, offset, attrib_length, ENC_BIG_ENDIAN);
+ proto_item_append_text(attr_item," - %s",
+ (value & 0x80) ? "XON" : "XOFF");
+ proto_tree_add_item(attr_tree, hf_gre_3ggp2_di, tvb, offset, attrib_length, ENC_BIG_ENDIAN);
+ proto_item_append_text(attr_item,"/%s",
+ (value & 0x40) ? "INDEFINITE" : "TEMPORARY");
+ }
+ break;
+ }
+
+ offset += attrib_length;
+ }
+ proto_item_set_len(ti, offset - start_offset);
+
+ return offset;
}
static void
dissect_gre_wccp2_redirect_header(tvbuff_t *tvb, int offset, proto_tree *tree)
{
- proto_item * ti;
- proto_tree * rh_tree;
+ proto_item *ti;
+ proto_tree *rh_tree;
- ti = proto_tree_add_item(tree, hf_gre_wccp_redirect_header, tvb, offset, 4, ENC_NA);
- rh_tree = proto_item_add_subtree(ti, ett_gre_wccp2_redirect_header);
+ ti = proto_tree_add_item(tree, hf_gre_wccp_redirect_header, tvb, offset, 4, ENC_NA);
+ rh_tree = proto_item_add_subtree(ti, ett_gre_wccp2_redirect_header);
- proto_tree_add_item(rh_tree, hf_gre_wccp_dynamic_service, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(rh_tree, hf_gre_wccp_dynamic_service, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(rh_tree, hf_gre_wccp_alternative_bucket_used, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(rh_tree, hf_gre_wccp_alternative_bucket_used, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(rh_tree, hf_gre_wccp_service_id, tvb, offset +1, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(rh_tree, hf_gre_wccp_service_id, tvb, offset +1, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(rh_tree, hf_gre_wccp_alternative_bucket, tvb, offset +2, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(rh_tree, hf_gre_wccp_alternative_bucket, tvb, offset +2, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(rh_tree, hf_gre_wccp_primary_bucket, tvb, offset +3, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(rh_tree, hf_gre_wccp_primary_bucket, tvb, offset +3, 1, ENC_BIG_ENDIAN);
}
static void
dissect_gre(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- int offset = 0;
- guint16 flags_and_ver;
- guint16 type;
- gboolean is_ppp = FALSE;
- gboolean is_wccp2 = FALSE;
- proto_item *ti, *it_flags;
- proto_tree *gre_tree, *fv_tree = NULL;
- guint16 sre_af;
- guint8 sre_length;
- tvbuff_t *next_tvb;
-
- flags_and_ver = tvb_get_ntohs(tvb, offset);
- type = tvb_get_ntohs(tvb, offset + 2);
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "GRE");
-
- col_add_fstr(pinfo->cinfo, COL_INFO, "Encapsulated %s", val_to_str(type, gre_typevals, "0x%04X (unknown)"));
-
- switch (type) {
-
- case ETHERTYPE_PPP:
- if (flags_and_ver & GRE_ACK)
- is_ppp = TRUE;
- break;
- case ETHERTYPE_3GPP2:
- case ETHERTYPE_CDMA2000_A10_UBS:
- is_ppp = TRUE;
- break;
-
- case GRE_WCCP:
- /* WCCP2 puts an extra 4 octets into the header, but uses the same
- encapsulation type; if it looks as if the first octet of the packet
- isn't the beginning of an IPv4 header, assume it's WCCP2. */
- if ((tvb_get_guint8(tvb, offset + 2 + 2) & 0xF0) != 0x40) {
- is_wccp2 = TRUE;
+ int offset = 0;
+ guint16 flags_and_ver;
+ guint16 type;
+ gboolean is_ppp = FALSE;
+ gboolean is_wccp2 = FALSE;
+ proto_item *ti, *it_flags;
+ proto_tree *gre_tree, *fv_tree = NULL;
+ guint16 sre_af;
+ guint8 sre_length;
+ tvbuff_t *next_tvb;
+
+ flags_and_ver = tvb_get_ntohs(tvb, offset);
+ type = tvb_get_ntohs(tvb, offset + 2);
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "GRE");
+
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Encapsulated %s", val_to_str(type, gre_typevals, "0x%04X (unknown)"));
+
+ switch (type) {
+
+ case ETHERTYPE_PPP:
+ if (flags_and_ver & GRE_ACK)
+ is_ppp = TRUE;
+ break;
+ case ETHERTYPE_3GPP2:
+ case ETHERTYPE_CDMA2000_A10_UBS:
+ is_ppp = TRUE;
+ break;
+
+ case GRE_WCCP:
+ /* WCCP2 puts an extra 4 octets into the header, but uses the same
+ encapsulation type; if it looks as if the first octet of the packet
+ isn't the beginning of an IPv4 header, assume it's WCCP2. */
+ if ((tvb_get_guint8(tvb, offset + 2 + 2) & 0xF0) != 0x40) {
+ is_wccp2 = TRUE;
+ }
+ break;
}
- break;
- }
- /* Per README.developer, section 1.2, we must call subdissectors regardless
- * of whether "tree" is NULL or not. That is done below using
- * call_dissector(), but since the next_tvb must begin at the correct offset,
- * it's easier and more readable to always enter this block in order to
- * compute the correct offset to pass to tvb_new_subset_remaining().
- */
- if (1) {
- ti = proto_tree_add_protocol_format(tree, proto_gre, tvb, offset, -1, "Generic Routing Encapsulation (%s)",
- val_to_str(type, gre_typevals, "0x%04X - unknown"));
- gre_tree = proto_item_add_subtree(ti, ett_gre);
+ /* Per README.developer, section 1.2, we must call subdissectors regardless
+ * of whether "tree" is NULL or not. That is done below using
+ * call_dissector(), but since the next_tvb must begin at the correct offset,
+ * it's easier and more readable to always enter this block in order to
+ * compute the correct offset to pass to tvb_new_subset_remaining().
+ */
+ if (1) {
+ ti = proto_tree_add_protocol_format(tree, proto_gre, tvb, offset, -1, "Generic Routing Encapsulation (%s)",
+ val_to_str(type, gre_typevals, "0x%04X - unknown"));
+ gre_tree = proto_item_add_subtree(ti, ett_gre);
- it_flags = proto_tree_add_item(gre_tree, hf_gre_flags_and_version, tvb, offset, 2, ENC_BIG_ENDIAN);
- fv_tree = proto_item_add_subtree(it_flags, ett_gre_flags);
+ it_flags = proto_tree_add_item(gre_tree, hf_gre_flags_and_version, tvb, offset, 2, ENC_BIG_ENDIAN);
+ fv_tree = proto_item_add_subtree(it_flags, ett_gre_flags);
- proto_tree_add_item(fv_tree, hf_gre_flags_checksum, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(fv_tree, hf_gre_flags_checksum, tvb, offset, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(fv_tree, hf_gre_flags_routing, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(fv_tree, hf_gre_flags_routing, tvb, offset, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(fv_tree, hf_gre_flags_key, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(fv_tree, hf_gre_flags_key, tvb, offset, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(fv_tree, hf_gre_flags_sequence_number, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(fv_tree, hf_gre_flags_sequence_number, tvb, offset, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(fv_tree, hf_gre_flags_strict_source_route, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(fv_tree, hf_gre_flags_strict_source_route, tvb, offset, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(fv_tree, hf_gre_flags_recursion_control, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(fv_tree, hf_gre_flags_recursion_control, tvb, offset, 2, ENC_BIG_ENDIAN);
- /* RFC2637 Section 4.1 : Enhanced GRE Header */
- if (is_ppp) {
- proto_tree_add_item(fv_tree, hf_gre_flags_ack, tvb, offset, 2, ENC_BIG_ENDIAN);
-
- proto_tree_add_item(fv_tree, hf_gre_flags_reserved_ppp, tvb, offset, 2, ENC_BIG_ENDIAN);
- }
- else {
- proto_tree_add_item(fv_tree, hf_gre_flags_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
- }
+ /* RFC2637 Section 4.1 : Enhanced GRE Header */
+ if (is_ppp) {
+ proto_tree_add_item(fv_tree, hf_gre_flags_ack, tvb, offset, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(fv_tree, hf_gre_flags_version, tvb, offset, 2, ENC_BIG_ENDIAN);
-
- offset += 2;
-
- proto_tree_add_item(gre_tree, hf_gre_proto, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
-
- if (flags_and_ver & GRE_CHECKSUM || flags_and_ver & GRE_ROUTING) {
- guint length, reported_length;
- proto_item *it_checksum;
- vec_t cksum_vec[1];
- guint16 cksum, computed_cksum;
-
- it_checksum = proto_tree_add_item(gre_tree, hf_gre_checksum, tvb, offset, 2, ENC_BIG_ENDIAN);
- /* Checksum check !... */
- cksum = tvb_get_ntohs(tvb, offset);
- length = tvb_length(tvb);
- reported_length = tvb_reported_length(tvb);
- /* The Checksum Present bit is set, and the packet isn't part of a
- fragmented datagram and isn't truncated, so we can checksum it. */
- if ((flags_and_ver & GRE_CHECKSUM) && !pinfo->fragmented && length >= reported_length) {
- cksum_vec[0].ptr = tvb_get_ptr(tvb, 0, reported_length);
- cksum_vec[0].len = reported_length;
- computed_cksum = in_cksum(cksum_vec, 1);
- if (computed_cksum == 0) {
- proto_item_append_text(it_checksum," [correct]");
- } else {
- proto_item_append_text(it_checksum," [incorrect, should be 0x%04x]",in_cksum_shouldbe(cksum, computed_cksum));
- expert_add_info_format(pinfo, it_checksum, PI_MALFORMED, PI_WARN, "Incorrect GRE Checksum");
- }
- }
-
-
- offset += 2;
-
- proto_tree_add_item(gre_tree, hf_gre_offset, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
- }
+ proto_tree_add_item(fv_tree, hf_gre_flags_reserved_ppp, tvb, offset, 2, ENC_BIG_ENDIAN);
+ }
+ else {
+ proto_tree_add_item(fv_tree, hf_gre_flags_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
+ }
- if (flags_and_ver & GRE_KEY) {
- /* RFC2637 Section 4.1 : Enhanced GRE Header */
- if (is_ppp && type!=ETHERTYPE_CDMA2000_A10_UBS) {
+ proto_tree_add_item(fv_tree, hf_gre_flags_version, tvb, offset, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(gre_tree, hf_gre_key_payload_length, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
- proto_tree_add_item(gre_tree, hf_gre_key_call_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(gre_tree, hf_gre_proto, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
- }
- else {
- proto_tree_add_item(gre_tree, hf_gre_key, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
- }
- }
- if (flags_and_ver & GRE_SEQUENCE) {
-
- proto_tree_add_item(gre_tree, hf_gre_sequence_number , tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
- }
- if (is_ppp && (flags_and_ver & GRE_ACK)) {
-
- proto_tree_add_item(gre_tree, hf_gre_ack_number , tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
- }
- if (flags_and_ver & GRE_ROUTING) {
- proto_item *it_routing;
- proto_tree *r_tree;
- for (;;) {
-
- it_routing = proto_tree_add_item(gre_tree, hf_gre_routing, tvb, offset, -1, ENC_NA);
- r_tree = proto_item_add_subtree(ti, ett_gre_routing);
-
- sre_af = tvb_get_ntohs(tvb, offset);
- proto_tree_add_item(r_tree, hf_gre_routing_address_family , tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
-
- proto_tree_add_item(r_tree, hf_gre_routing_sre_offset , tvb, offset, 1, ENC_BIG_ENDIAN);
- offset += 1;
-
- sre_length = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(r_tree, hf_gre_routing_sre_length , tvb, offset, 1, ENC_BIG_ENDIAN);
- offset += 1;
-
- proto_item_set_len(it_routing, 2 + 1 +1 + sre_length);
- if (sre_af == 0 && sre_length == 0)
- break;
-
- proto_tree_add_item(r_tree, hf_gre_routing_information , tvb, offset, sre_length, ENC_NA);
- offset += sre_length;
- }
- }
-
- if (type == GRE_WCCP && is_wccp2) {
- dissect_gre_wccp2_redirect_header(tvb, offset, gre_tree);
- offset += 4;
- }
- if(type == ETHERTYPE_3GPP2) {
- offset = dissect_gre_3gpp2_attribs(tvb, offset, gre_tree);
- }
-
- proto_item_set_len(ti, offset);
-
- /* If the S bit is not set, this packet might not have a payload, so
- check whether there's any data left, first.
- XXX - the S bit isn't in RFC 2784, which deprecates that bit
- and some other bits in RFC 1701 and says that they should be
- zero for RFC 2784-compliant GRE; as such, the absence of the
- S bit doesn't necessarily mean there's no payload. */
- if (!(flags_and_ver & GRE_SEQUENCE)) {
- if (tvb_reported_length_remaining(tvb, offset) <= 0)
- return; /* no payload */
+ if (flags_and_ver & GRE_CHECKSUM || flags_and_ver & GRE_ROUTING) {
+ guint length, reported_length;
+ proto_item *it_checksum;
+ vec_t cksum_vec[1];
+ guint16 cksum, computed_cksum;
+
+ it_checksum = proto_tree_add_item(gre_tree, hf_gre_checksum, tvb, offset, 2, ENC_BIG_ENDIAN);
+ /* Checksum check !... */
+ cksum = tvb_get_ntohs(tvb, offset);
+ length = tvb_length(tvb);
+ reported_length = tvb_reported_length(tvb);
+ /* The Checksum Present bit is set, and the packet isn't part of a
+ fragmented datagram and isn't truncated, so we can checksum it. */
+ if ((flags_and_ver & GRE_CHECKSUM) && !pinfo->fragmented && length >= reported_length) {
+ cksum_vec[0].ptr = tvb_get_ptr(tvb, 0, reported_length);
+ cksum_vec[0].len = reported_length;
+ computed_cksum = in_cksum(cksum_vec, 1);
+ if (computed_cksum == 0) {
+ proto_item_append_text(it_checksum," [correct]");
+ } else {
+ proto_item_append_text(it_checksum," [incorrect, should be 0x%04x]",in_cksum_shouldbe(cksum, computed_cksum));
+ expert_add_info_format(pinfo, it_checksum, PI_MALFORMED, PI_WARN, "Incorrect GRE Checksum");
+ }
+ }
+
+
+ offset += 2;
+
+ proto_tree_add_item(gre_tree, hf_gre_offset, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ }
+
+ if (flags_and_ver & GRE_KEY) {
+ /* RFC2637 Section 4.1 : Enhanced GRE Header */
+ if (is_ppp && type!=ETHERTYPE_CDMA2000_A10_UBS) {
+
+ proto_tree_add_item(gre_tree, hf_gre_key_payload_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(gre_tree, hf_gre_key_call_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ }
+ else {
+ proto_tree_add_item(gre_tree, hf_gre_key, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ }
+ }
+ if (flags_and_ver & GRE_SEQUENCE) {
+
+ proto_tree_add_item(gre_tree, hf_gre_sequence_number , tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ }
+ if (is_ppp && (flags_and_ver & GRE_ACK)) {
+
+ proto_tree_add_item(gre_tree, hf_gre_ack_number , tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ }
+ if (flags_and_ver & GRE_ROUTING) {
+ proto_item *it_routing;
+ proto_tree *r_tree;
+ for (;;) {
+
+ it_routing = proto_tree_add_item(gre_tree, hf_gre_routing, tvb, offset, -1, ENC_NA);
+ r_tree = proto_item_add_subtree(ti, ett_gre_routing);
+
+ sre_af = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_item(r_tree, hf_gre_routing_address_family , tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(r_tree, hf_gre_routing_sre_offset , tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+
+ sre_length = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(r_tree, hf_gre_routing_sre_length , tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+
+ proto_item_set_len(it_routing, 2 + 1 +1 + sre_length);
+ if (sre_af == 0 && sre_length == 0)
+ break;
+
+ proto_tree_add_item(r_tree, hf_gre_routing_information , tvb, offset, sre_length, ENC_NA);
+ offset += sre_length;
+ }
+ }
+
+ if (type == GRE_WCCP && is_wccp2) {
+ dissect_gre_wccp2_redirect_header(tvb, offset, gre_tree);
+ offset += 4;
+ }
+ if (type == ETHERTYPE_3GPP2) {
+ offset = dissect_gre_3gpp2_attribs(tvb, offset, gre_tree);
+ }
+
+ proto_item_set_len(ti, offset);
+
+ /* If the S bit is not set, this packet might not have a payload, so
+ check whether there's any data left, first.
+
+ XXX - the S bit isn't in RFC 2784, which deprecates that bit
+ and some other bits in RFC 1701 and says that they should be
+ zero for RFC 2784-compliant GRE; as such, the absence of the
+ S bit doesn't necessarily mean there's no payload. */
+ if (!(flags_and_ver & GRE_SEQUENCE)) {
+ if (tvb_reported_length_remaining(tvb, offset) <= 0)
+ return; /* no payload */
+ }
+ next_tvb = tvb_new_subset_remaining(tvb, offset);
+ pinfo->flags.in_gre_pkt = TRUE;
+ if (!dissector_try_uint(gre_dissector_table, type, next_tvb, pinfo, tree))
+ call_dissector(data_handle,next_tvb, pinfo, gre_tree);
}
- next_tvb = tvb_new_subset_remaining(tvb, offset);
- pinfo->flags.in_gre_pkt = TRUE;
- if (!dissector_try_uint(gre_dissector_table, type, next_tvb, pinfo, tree))
- call_dissector(data_handle,next_tvb, pinfo, gre_tree);
- }
}
@@ -507,186 +507,223 @@ void
proto_register_gre(void)
{
static hf_register_info hf[] = {
- { &hf_gre_proto,
- { "Protocol Type", "gre.proto",
- FT_UINT16, BASE_HEX, VALS(gre_typevals), 0x0,
- "The protocol that is GRE encapsulated", HFILL }},
- { &hf_gre_flags_and_version,
- { "Flags and Version", "gre.flags_and_version",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- "The GRE flags are encoded in the first two octets", HFILL }},
- { &hf_gre_flags_checksum,
- { "Checksum Bit", "gre.flags.checksum",
- FT_BOOLEAN, 16, TFS(&tfs_yes_no), GRE_CHECKSUM,
- "Indicates if the Checksum field is present", HFILL }},
- { &hf_gre_flags_routing,
- { "Routing Bit", "gre.flags.routing",
- FT_BOOLEAN, 16, TFS(&tfs_yes_no), GRE_ROUTING,
- "Indicates if the Routing and Checksum/Offset field are present", HFILL }},
- { &hf_gre_flags_key,
- { "Key Bit", "gre.flags.key",
- FT_BOOLEAN, 16, TFS(&tfs_yes_no), GRE_KEY,
- "Indicates if the Key field is present", HFILL }},
- { &hf_gre_flags_sequence_number,
- { "Sequence Number Bit", "gre.flags.sequence_number",
- FT_BOOLEAN, 16, TFS(&tfs_yes_no), GRE_SEQUENCE,
- "Indicates if the Sequence Number field is present", HFILL }},
- { &hf_gre_flags_strict_source_route,
- { "Strict Source Route Bit", "gre.flags.strict_source_route",
- FT_BOOLEAN, 16, TFS(&tfs_yes_no), GRE_STRICTSOURCE,
- NULL, HFILL }},
- { &hf_gre_flags_recursion_control,
- { "Recursion control", "gre.flags.recursion_control",
- FT_UINT16, BASE_DEC, NULL, GRE_RECURSION,
- NULL, HFILL }},
- { &hf_gre_flags_ack,
- { "Acknowledgment", "gre.flags.ack",
- FT_BOOLEAN, 16, TFS(&tfs_yes_no), GRE_ACK,
- "Indicates if the packet packet contains Acknowledgment Number to be used for acknowledging previously transmitted data", HFILL }},
- { &hf_gre_flags_reserved,
- { "Flags (Reserved)", "gre.flags.reserved",
- FT_UINT16, BASE_DEC, NULL, GRE_RESERVED,
- NULL, HFILL }},
- { &hf_gre_flags_reserved_ppp,
- { "Flags (Reserved)", "gre.flags.reserved",
- FT_UINT16, BASE_DEC, NULL, GRE_RESERVED_PPP,
- NULL, HFILL }},
- { &hf_gre_flags_version,
- { "Version", "gre.flags.version",
- FT_UINT16, BASE_DEC, VALS(gre_version), GRE_VERSION,
- NULL, HFILL }},
- { &hf_gre_checksum,
- { "Checksum", "gre.checksum",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- "The Checksum field contains the IP (one's complement) checksum of the GRE header and the payload packet", HFILL }},
- { &hf_gre_offset,
- { "Offset", "gre.offset",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "The offset field indicates the octet offset from the start of the Routing field to the first octet of the active Source Route Entry to be examined", HFILL }},
- { &hf_gre_key,
- { "Key", "gre.key",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- "The Key field contains a four octet number which was inserted by the encapsulator", HFILL }},
- { &hf_gre_key_payload_length,
- { "Payload Length", "gre.key.payload_length",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Size of the payload, not including the GRE header", HFILL }},
- { &hf_gre_key_call_id,
- { "Call ID", "gre.key.call_id",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Contains the Peer's Call ID for the session to which this packet belongs.", HFILL }},
- { &hf_gre_sequence_number,
- { "Sequence Number", "gre.sequence_number",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The Sequence Number field contains an unsigned 32 bit integer which is inserted by the encapsulator", HFILL }},
- { &hf_gre_ack_number,
- { "Acknowledgment Number", "gre.ack_number",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Contains the sequence number of the highest numbered GRE packet received by the sending peer for this user session", HFILL }},
- { &hf_gre_routing,
- { "Routing", "gre.routing",
- FT_NONE, BASE_NONE, NULL, 0x0,
- "The Routing field is a list of Source Route Entries (SREs)", HFILL }},
- { &hf_gre_routing_address_family,
- { "Address Family", "gre.routing.address_family",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "The Address Family field contains a two octet value which indicates the syntax and semantics of the Routing Information field", HFILL }},
- { &hf_gre_routing_sre_offset,
- { "SRE Offset", "gre.routing.sre_offset",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "The Address Family field contains a two octet value which indicates the syntax and semantics of the Routing Information field", HFILL }},
- { &hf_gre_routing_sre_length,
- { "SRE Length", "gre.routing.src_length",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "The SRE Length field contains the number of octets in the SRE", HFILL }},
- { &hf_gre_routing_information,
- { "Routing Information", "gre.routing.information",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- "The Routing Information field contains data which may be used in routing this packet", HFILL }},
- { &hf_gre_3ggp2_attrib,
- { "3GGP2 Attributes", "gre.ggp2_attrib",
- FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
- { &hf_gre_3ggp2_attrib_id,
- { "Type", "gre.ggp2_attrib_id",
- FT_UINT8, BASE_HEX, VALS(gre_3ggp2_attrib_id_vals), 0x7f,
- NULL, HFILL }},
- { &hf_gre_3ggp2_attrib_length,
- { "Length", "gre.ggp2_attrib_length",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
- { &hf_gre_3ggp2_sdi,
- { "SDI/DOS", "gre.3ggp2_sdi",
- FT_BOOLEAN, 16, TFS(&gre_3ggp2_sdi_val), 0x8000,
- "Short Data Indicator(SDI)/Data Over Signaling (DOS)", HFILL }},
- { &hf_gre_3ggp2_fci,
- { "Flow Control Indicator", "gre.3ggp2_fci",
- FT_BOOLEAN, 16, TFS(&gre_3ggp2_fci_val), 0x8000,
- NULL, HFILL }},
- { &hf_gre_3ggp2_di,
- { "Duration Indicator", "gre.3ggp2_di",
- FT_BOOLEAN, 16, TFS(&gre_3ggp2_di_val), 0x4000,
- NULL, HFILL }},
- { &hf_gre_3ggp2_flow_disc,
- { "Flow ID", "gre.ggp2_flow_disc",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
- { &hf_gre_3ggp2_seg,
- { "Type", "gre.ggp2_3ggp2_seg",
- FT_UINT16, BASE_HEX, VALS(gre_3ggp2_seg_vals), 0xc000,
- NULL, HFILL }},
-
- { &hf_gre_wccp_redirect_header,
- { "Redirect Header", "gre.wccp.redirect_header",
- FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
- { &hf_gre_wccp_dynamic_service,
- { "Dynamic Service", "gre.wccp.dynamic_service",
- FT_BOOLEAN, 8, TFS(&gre_wccp_dynamic_service_val), 0x80,
- NULL, HFILL }},
- { &hf_gre_wccp_alternative_bucket_used,
- { "Alternative bucket used", "gre.wccp.alternative_bucket_used",
- FT_BOOLEAN, 8, TFS(&gre_wccp_alternative_bucket_used_val), 0x40,
- NULL, HFILL }},
- { &hf_gre_wccp_service_id,
- { "Service ID", "gre.wccp.service_id",
- FT_UINT8, BASE_DEC, VALS(service_id_vals), 0x00,
- "Service Group identifier", HFILL }},
- { &hf_gre_wccp_alternative_bucket,
- { "Alternative Bucket", "gre.wccp.alternative_bucket",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Alternative bucket index used to redirect the packet.", HFILL }},
- { &hf_gre_wccp_primary_bucket,
- { "Primary Bucket", "gre.wccp.primary_bucket",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Primary bucket index used to redirect the packet.", HFILL }},
-
- };
- static gint *ett[] = {
- &ett_gre,
- &ett_gre_flags,
- &ett_gre_routing,
- &ett_gre_wccp2_redirect_header,
- &ett_3gpp2_attribs,
- &ett_3gpp2_attr,
- };
-
- proto_gre = proto_register_protocol("Generic Routing Encapsulation",
- "GRE", "gre");
- proto_register_field_array(proto_gre, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
-
- /* subdissector code */
- gre_dissector_table = register_dissector_table("gre.proto",
- "GRE protocol type", FT_UINT16, BASE_HEX);
+ { &hf_gre_proto,
+ { "Protocol Type", "gre.proto",
+ FT_UINT16, BASE_HEX, VALS(gre_typevals), 0x0,
+ "The protocol that is GRE encapsulated", HFILL }
+ },
+ { &hf_gre_flags_and_version,
+ { "Flags and Version", "gre.flags_and_version",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ "The GRE flags are encoded in the first two octets", HFILL }
+ },
+ { &hf_gre_flags_checksum,
+ { "Checksum Bit", "gre.flags.checksum",
+ FT_BOOLEAN, 16, TFS(&tfs_yes_no), GRE_CHECKSUM,
+ "Indicates if the Checksum field is present", HFILL }
+ },
+ { &hf_gre_flags_routing,
+ { "Routing Bit", "gre.flags.routing",
+ FT_BOOLEAN, 16, TFS(&tfs_yes_no), GRE_ROUTING,
+ "Indicates if the Routing and Checksum/Offset field are present", HFILL }
+ },
+ { &hf_gre_flags_key,
+ { "Key Bit", "gre.flags.key",
+ FT_BOOLEAN, 16, TFS(&tfs_yes_no), GRE_KEY,
+ "Indicates if the Key field is present", HFILL }
+ },
+ { &hf_gre_flags_sequence_number,
+ { "Sequence Number Bit", "gre.flags.sequence_number",
+ FT_BOOLEAN, 16, TFS(&tfs_yes_no), GRE_SEQUENCE,
+ "Indicates if the Sequence Number field is present", HFILL }
+ },
+ { &hf_gre_flags_strict_source_route,
+ { "Strict Source Route Bit", "gre.flags.strict_source_route",
+ FT_BOOLEAN, 16, TFS(&tfs_yes_no), GRE_STRICTSOURCE,
+ NULL, HFILL }
+ },
+ { &hf_gre_flags_recursion_control,
+ { "Recursion control", "gre.flags.recursion_control",
+ FT_UINT16, BASE_DEC, NULL, GRE_RECURSION,
+ NULL, HFILL }
+ },
+ { &hf_gre_flags_ack,
+ { "Acknowledgment", "gre.flags.ack",
+ FT_BOOLEAN, 16, TFS(&tfs_yes_no), GRE_ACK,
+ "Indicates if the packet packet contains Acknowledgment Number to be used for acknowledging previously transmitted data", HFILL }
+ },
+ { &hf_gre_flags_reserved,
+ { "Flags (Reserved)", "gre.flags.reserved",
+ FT_UINT16, BASE_DEC, NULL, GRE_RESERVED,
+ NULL, HFILL }
+ },
+ { &hf_gre_flags_reserved_ppp,
+ { "Flags (Reserved)", "gre.flags.reserved",
+ FT_UINT16, BASE_DEC, NULL, GRE_RESERVED_PPP,
+ NULL, HFILL }
+ },
+ { &hf_gre_flags_version,
+ { "Version", "gre.flags.version",
+ FT_UINT16, BASE_DEC, VALS(gre_version), GRE_VERSION,
+ NULL, HFILL }
+ },
+ { &hf_gre_checksum,
+ { "Checksum", "gre.checksum",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ "The Checksum field contains the IP (one's complement) checksum of the GRE header and the payload packet", HFILL }
+ },
+ { &hf_gre_offset,
+ { "Offset", "gre.offset",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "The offset field indicates the octet offset from the start of the Routing field to the first octet of the active Source Route Entry to be examined", HFILL }
+ },
+ { &hf_gre_key,
+ { "Key", "gre.key",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "The Key field contains a four octet number which was inserted by the encapsulator", HFILL }
+ },
+ { &hf_gre_key_payload_length,
+ { "Payload Length", "gre.key.payload_length",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Size of the payload, not including the GRE header", HFILL }
+ },
+ { &hf_gre_key_call_id,
+ { "Call ID", "gre.key.call_id",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Contains the Peer's Call ID for the session to which this packet belongs.", HFILL }
+ },
+ { &hf_gre_sequence_number,
+ { "Sequence Number", "gre.sequence_number",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The Sequence Number field contains an unsigned 32 bit integer which is inserted by the encapsulator", HFILL }
+ },
+ { &hf_gre_ack_number,
+ { "Acknowledgment Number", "gre.ack_number",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Contains the sequence number of the highest numbered GRE packet received by the sending peer for this user session", HFILL }
+ },
+ { &hf_gre_routing,
+ { "Routing", "gre.routing",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ "The Routing field is a list of Source Route Entries (SREs)", HFILL }
+ },
+ { &hf_gre_routing_address_family,
+ { "Address Family", "gre.routing.address_family",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "The Address Family field contains a two octet value which indicates the syntax and semantics of the Routing Information field", HFILL }
+ },
+ { &hf_gre_routing_sre_offset,
+ { "SRE Offset", "gre.routing.sre_offset",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "The Address Family field contains a two octet value which indicates the syntax and semantics of the Routing Information field", HFILL }
+ },
+ { &hf_gre_routing_sre_length,
+ { "SRE Length", "gre.routing.src_length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "The SRE Length field contains the number of octets in the SRE", HFILL }
+ },
+ { &hf_gre_routing_information,
+ { "Routing Information", "gre.routing.information",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "The Routing Information field contains data which may be used in routing this packet", HFILL }
+ },
+ { &hf_gre_3ggp2_attrib,
+ { "3GGP2 Attributes", "gre.ggp2_attrib",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gre_3ggp2_attrib_id,
+ { "Type", "gre.ggp2_attrib_id",
+ FT_UINT8, BASE_HEX, VALS(gre_3ggp2_attrib_id_vals), 0x7f,
+ NULL, HFILL }
+ },
+ { &hf_gre_3ggp2_attrib_length,
+ { "Length", "gre.ggp2_attrib_length",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gre_3ggp2_sdi,
+ { "SDI/DOS", "gre.3ggp2_sdi",
+ FT_BOOLEAN, 16, TFS(&gre_3ggp2_sdi_val), 0x8000,
+ "Short Data Indicator(SDI)/Data Over Signaling (DOS)", HFILL }
+ },
+ { &hf_gre_3ggp2_fci,
+ { "Flow Control Indicator", "gre.3ggp2_fci",
+ FT_BOOLEAN, 16, TFS(&gre_3ggp2_fci_val), 0x8000,
+ NULL, HFILL }
+ },
+ { &hf_gre_3ggp2_di,
+ { "Duration Indicator", "gre.3ggp2_di",
+ FT_BOOLEAN, 16, TFS(&gre_3ggp2_di_val), 0x4000,
+ NULL, HFILL }
+ },
+ { &hf_gre_3ggp2_flow_disc,
+ { "Flow ID", "gre.ggp2_flow_disc",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gre_3ggp2_seg,
+ { "Type", "gre.ggp2_3ggp2_seg",
+ FT_UINT16, BASE_HEX, VALS(gre_3ggp2_seg_vals), 0xc000,
+ NULL, HFILL }
+ },
+
+ { &hf_gre_wccp_redirect_header,
+ { "Redirect Header", "gre.wccp.redirect_header",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gre_wccp_dynamic_service,
+ { "Dynamic Service", "gre.wccp.dynamic_service",
+ FT_BOOLEAN, 8, TFS(&gre_wccp_dynamic_service_val), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_gre_wccp_alternative_bucket_used,
+ { "Alternative bucket used", "gre.wccp.alternative_bucket_used",
+ FT_BOOLEAN, 8, TFS(&gre_wccp_alternative_bucket_used_val), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_gre_wccp_service_id,
+ { "Service ID", "gre.wccp.service_id",
+ FT_UINT8, BASE_DEC, VALS(service_id_vals), 0x00,
+ "Service Group identifier", HFILL }
+ },
+ { &hf_gre_wccp_alternative_bucket,
+ { "Alternative Bucket", "gre.wccp.alternative_bucket",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Alternative bucket index used to redirect the packet.", HFILL }
+ },
+ { &hf_gre_wccp_primary_bucket,
+ { "Primary Bucket", "gre.wccp.primary_bucket",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Primary bucket index used to redirect the packet.", HFILL }
+ },
+ };
+ static gint *ett[] = {
+ &ett_gre,
+ &ett_gre_flags,
+ &ett_gre_routing,
+ &ett_gre_wccp2_redirect_header,
+ &ett_3gpp2_attribs,
+ &ett_3gpp2_attr,
+ };
+
+ proto_gre = proto_register_protocol("Generic Routing Encapsulation",
+ "GRE", "gre");
+ proto_register_field_array(proto_gre, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ /* subdissector code */
+ gre_dissector_table = register_dissector_table("gre.proto",
+ "GRE protocol type", FT_UINT16, BASE_HEX);
}
void
proto_reg_handoff_gre(void)
{
- dissector_handle_t gre_handle;
+ dissector_handle_t gre_handle;
- gre_handle = create_dissector_handle(dissect_gre, proto_gre);
- dissector_add_uint("ip.proto", IP_PROTO_GRE, gre_handle);
- data_handle = find_dissector("data");
+ gre_handle = create_dissector_handle(dissect_gre, proto_gre);
+ dissector_add_uint("ip.proto", IP_PROTO_GRE, gre_handle);
+ data_handle = find_dissector("data");
}
diff --git a/epan/dissectors/packet-gsm_a_bssmap.c b/epan/dissectors/packet-gsm_a_bssmap.c
index 05a84355fb..6acc516c7d 100644
--- a/epan/dissectors/packet-gsm_a_bssmap.c
+++ b/epan/dissectors/packet-gsm_a_bssmap.c
@@ -4,8 +4,9 @@
* Copyright 2003, Michael Lum <mlum [AT] telostech.com>
* In association with Telos Technology Inc.
*
- * Updated to 3GPP TS 48.008 version 8.4.0 Release 8
+ * Updated to 3GPP TS 48.008 version 9.8.0 Release 9
* Copyright 2008, Anders Broman <anders.broman [at] ericsson.com
+ * Copyright 2012, Pascal Quantin <pascal.quantin [at] gmail.com
* Title 3GPP Other
*
* Reference [2]
@@ -14,6 +15,7 @@
* Layer 3 specification
* (GSM 08.08 version 7.7.0 Release 1998) TS 100 590 v7.7.0
* 3GPP TS 48.008 version 8.4.0 Release 8
+ * 3GPP TS 48.008 version 9.8.0 Release 9
*
* $Id$
*
@@ -40,7 +42,7 @@
# include "config.h"
#endif
-#include <stdlib.h>
+#include <glib.h>
#include <epan/packet.h>
#include <epan/tap.h>
@@ -54,6 +56,8 @@
#include "packet-e212.h"
#include "packet-ranap.h"
#include "packet-rrc.h"
+#include "packet-rtp.h"
+#include "packet-gsm_map.h"
/* PROTOTYPES/FORWARDS */
@@ -305,6 +309,9 @@ const value_string gsm_bssmap_elem_strings[] = {
{ 0x7e, "Speech Codec" },
{ 0x7f, "Call Identifier" },
{ 0x80, "Call Identifier List" },
+ { 0x81, "A-Interface Selector for RESET" },
+ { 0x83, "Kc128" },
+ { 0x84, "CSG Identifier" },
{ 0, NULL }
};
@@ -372,16 +379,16 @@ static const value_string gsm_a_rr_channel_needed_vals[] = {
};
static const value_string bssmap_positioning_methods[] = {
- { 0, "Timing Advance" },
- { 1, "Reserved (Note)" },
- { 2, "Reserved (Note)" },
- { 3, "Mobile Assisted E-OTD" },
- { 4, "Mobile Based E-OTD" },
- { 5, "Mobile Assisted GPS" },
- { 6, "Mobile Based GPS" },
- { 7, "Conventional GPS" },
- { 8, "U-TDOA" },
- { 9, "Reserved for UTRAN use only" },
+ { 0, "Timing Advance" },
+ { 1, "Reserved (Note)" },
+ { 2, "Reserved (Note)" },
+ { 3, "Mobile Assisted E-OTD" },
+ { 4, "Mobile Based E-OTD" },
+ { 5, "Mobile Assisted GPS" },
+ { 6, "Mobile Based GPS" },
+ { 7, "Conventional GPS" },
+ { 8, "U-TDOA" },
+ { 9, "Reserved for UTRAN use only" },
{ 10, "Reserved for UTRAN use only" },
{ 11, "Reserved for UTRAN use only" },
{ 12, "Cell ID" },
@@ -439,18 +446,18 @@ static const value_string chan_mode_vals[] = {
};
static const value_string fe_cur_chan_type2_chan_field_vals[] = {
- { 1, "SDCCH" },
- { 8, "1 Full rate TCH" },
- { 9, "1 Half rate TCH" },
+ { 1, "SDCCH" },
+ { 8, "1 Full rate TCH" },
+ { 9, "1 Half rate TCH" },
{ 10, "2 Full Rate TCHs" },
{ 11, "3 Full Rate TCHs" },
{ 12, "4 Full Rate TCHs" },
{ 13, "5 Full Rate TCHs" },
{ 14, "6 Full Rate TCHs" },
{ 15, "7 Full Rate TCHs" },
- { 4, "8 Full Rate TCHs" },
- { 0, "reserved" },
- { 0, NULL}
+ { 4, "8 Full Rate TCHs" },
+ { 0, "reserved" },
+ { 0, NULL}
};
/* Initialize the protocol and registered fields */
@@ -471,6 +478,7 @@ static int hf_gsm_a_bssmap_be_cell_id_disc = -1;
static int hf_gsm_a_bssmap_pci = -1;
static int hf_gsm_a_bssmap_qa = -1;
static int hf_gsm_a_bssmap_pvi = -1;
+static int hf_gsm_a_bssmap_interference_bands = -1;
static int hf_gsm_a_bssmap_lsa_only = -1;
static int hf_gsm_a_bssmap_act = -1;
static int hf_gsm_a_bssmap_pref = -1;
@@ -479,6 +487,10 @@ static int hf_gsm_a_bssmap_seq_len = -1;
static int hf_gsm_a_bssmap_seq_no = -1;
static int hf_gsm_a_bssap_cell_id_list_seg_cell_id_disc = -1;
static int hf_gsm_a_bssap_res_ind_method = -1;
+static int hf_gsm_a_bssap_cic_list_range = -1;
+static int hf_gsm_a_bssap_cic_list_status = -1;
+static int hf_gsm_a_bssap_diag_error_pointer = -1;
+static int hf_gsm_a_bssap_diag_msg_rcv = -1;
static int hf_gsm_a_bssmap_ch_mode = -1;
static int hf_gsm_a_bssmap_cur_ch_mode = -1;
static int hf_gsm_a_bssmap_channel = -1;
@@ -502,9 +514,25 @@ static int hf_gsm_a_bssmap_ep = -1;
static int hf_gsm_a_bssmap_lcs_pri = -1;
static int hf_gsm_a_bssmap_num_ms = -1;
static int hf_gsm_a_bssmap_talker_pri = -1;
+static int hf_gsm_a_bssmap_rr_mode = -1;
+static int hf_gsm_a_bssmap_group_cipher_key_nb = -1;
+static int hf_gsm_a_bssmap_vgcs_vbs_cell_status = -1;
static int hf_gsm_a_bssmap_paging_cause = -1;
static int hf_gsm_a_bssmap_paging_inf_flg = -1;
static int hf_gsm_a_bssmap_serv_ho_inf = -1;
+static int hf_gsm_a_bssmap_max_nb_traffic_chan = -1;
+static int hf_gsm_a_bssmap_acceptable_chan_coding_bit5 = -1;
+static int hf_gsm_a_bssmap_acceptable_chan_coding_bit4 = -1;
+static int hf_gsm_a_bssmap_acceptable_chan_coding_bit3 = -1;
+static int hf_gsm_a_bssmap_acceptable_chan_coding_bit2 = -1;
+static int hf_gsm_a_bssmap_acceptable_chan_coding_bit1 = -1;
+static int hf_gsm_a_bssmap_allowed_data_rate_bit8 = -1;
+static int hf_gsm_a_bssmap_allowed_data_rate_bit7 = -1;
+static int hf_gsm_a_bssmap_allowed_data_rate_bit6 = -1;
+static int hf_gsm_a_bssmap_allowed_data_rate_bit5 = -1;
+static int hf_gsm_a_bssmap_allowed_data_rate_bit4 = -1;
+static int hf_gsm_a_bssmap_vstk_rand = -1;
+static int hf_gsm_a_bssmap_vstk = -1;
static int hf_gsm_a_bssmap_spare_bits = -1;
static int hf_gsm_a_bssmap_tpind = -1;
static int hf_gsm_a_bssmap_asind_b2 = -1;
@@ -515,6 +543,8 @@ static int hf_gsm_a_bssmap_filler_bits = -1;
static int hf_gsm_a_bssmap_method = -1;
static int hf_gsm_a_bssmap_ganss_id = -1;
static int hf_gsm_a_bssmap_usage = -1;
+static int hf_gsm_a_bssmap_data_id = -1;
+static int hf_gsm_a_bssmap_bt_ind = -1;
static int hf_gsm_a_bssmap_aoip_trans_ipv4 = -1;
static int hf_gsm_a_bssmap_aoip_trans_ipv6 = -1;
static int hf_gsm_a_bssmap_aoip_trans_port = -1;
@@ -540,6 +570,11 @@ static int hf_gsm_a_bssmap_location_type_positioning_method = -1;
static int hf_gsm_a_bssmap_chan_type_extension = -1;
static int hf_gsm_a_bssmap_cause_extension = -1;
static int hf_gsm_a_bssmap_emlpp_prio = -1;
+static int hf_gsm_a_bssmap_rip = -1;
+static int hf_gsm_a_bssmap_rtd = -1;
+static int hf_gsm_a_bssmap_kc128 = -1;
+static int hf_gsm_a_bssmap_csg_id = -1;
+static int hf_gsm_a_bssmap_cell_access_mode = -1;
static int hf_fe_extra_info_prec = -1;
static int hf_fe_extra_info_lcs = -1;
static int hf_fe_extra_info_ue_prob = -1;
@@ -574,6 +609,7 @@ static dissector_handle_t gsm_bsslap_handle = NULL;
static dissector_handle_t dtap_handle;
static dissector_handle_t bssgp_handle;
static dissector_handle_t rrc_handle;
+static dissector_handle_t rtp_handle;
static packet_info *g_pinfo;
static proto_tree *g_tree;
@@ -592,120 +628,123 @@ Note this enum must be of the same size as the element decoding list
typedef enum
{
- BE_CIC, /. Circuit Identity Code ./
- BE_RSVD_1, /. Reserved ./
- BE_RES_AVAIL, /. Resource Available ./
- BE_CAUSE, /. Cause ./
- BE_CELL_ID, /. Cell Identifier ./
- BE_PRIO, /. Priority ./
- BE_L3_HEADER_INFO, /. Layer 3 Header Information ./
- BE_IMSI, /. IMSI ./
- BE_TMSI, /. TMSI ./
- BE_ENC_INFO, /. Encryption Information ./
- BE_CHAN_TYPE, /. Channel Type ./
- BE_PERIODICITY, /. Periodicity ./
- BE_EXT_RES_IND, /. Extended Resource Indicator ./
- BE_NUM_MS, /. Number Of MSs ./
- BE_RSVD_2, /. Reserved ./
- BE_RSVD_3, /. Reserved ./
- BE_RSVD_4, /. Reserved ./
- BE_CM_INFO_2, /. Classmark Information Type 2 ./
- BE_CM_INFO_3, /. Classmark Information Type 3 ./
- BE_INT_BAND, /. Interference Band To Be Used ./
- BE_RR_CAUSE, /. RR Cause ./
- BE_RSVD_5, /. Reserved ./
- BE_L3_INFO, /. Layer 3 Information ./
- BE_DLCI, /. DLCI ./
- BE_DOWN_DTX_FLAG, /. Downlink DTX Flag ./
- BE_CELL_ID_LIST, /. Cell Identifier List ./
- BE_RESP_REQ, /. Response Request ./
- BE_RES_IND_METHOD, /. Resource Indication Method ./
- BE_CM_INFO_1, /. Classmark Information Type 1 ./
- BE_CIC_LIST, /. Circuit Identity Code List ./
- BE_DIAG, /. Diagnostic ./
- BE_L3_MSG, /. Layer 3 Message Contents ./
- BE_CHOSEN_CHAN, /. Chosen Channel ./
- BE_TOT_RES_ACC, /. Total Resource Accessible ./
- BE_CIPH_RESP_MODE, /. Cipher Response Mode ./
- BE_CHAN_NEEDED, /. Channel Needed ./
- BE_TRACE_TYPE, /. Trace Type ./
- BE_TRIGGERID, /. TriggerID ./
- BE_TRACE_REF, /. Trace Reference ./
- BE_TRANSID, /. TransactionID ./
- BE_MID, /. Mobile Identity ./
- BE_OMCID, /. OMCID ./
- BE_FOR_IND, /. Forward Indicator ./
- BE_CHOSEN_ENC_ALG, /. Chosen Encryption Algorithm ./
- BE_CCT_POOL, /. Circuit Pool ./
- BE_CCT_POOL_LIST, /. Circuit Pool List ./
- BE_TIME_IND, /. Time Indication ./
- BE_RES_SIT, /. Resource Situation ./
- BE_CURR_CHAN_1, /. Current Channel Type 1 ./
- BE_QUE_IND, /. Queueing Indicator ./
- BE_SPEECH_VER, /. Speech Version ./
- BE_ASS_REQ, /. Assignment Requirement ./
- BE_TALKER_FLAG, /. Talker Flag ./
- BE_CONN_REL_REQ, /. Connection Release Requested ./
- BE_GROUP_CALL_REF, /. Group Call Reference ./
- BE_EMLPP_PRIO, /. eMLPP Priority ./
- BE_CONF_EVO_IND, /. Configuration Evolution Indication ./
- BE_OLD2NEW_INFO, /. Old BSS to New BSS Information ./
- BE_LSA_ID, /. LSA Identifier ./
- BE_LSA_ID_LIST, /. LSA Identifier List ./
- BE_LSA_INFO, /. LSA Information ./
- BE_LCS_QOS, /. LCS QoS ./
- BE_LSA_ACC_CTRL, /. LSA access control suppression ./
- BE_LCS_PRIO, /. LCS Priority ./
- BE_LOC_TYPE, /. Location Type ./
- BE_LOC_EST, /. Location Estimate ./
- BE_POS_DATA, /. Positioning Data ./
- BE_LCS_CAUSE, /. 3.2.2.66 LCS Cause ./
- BE_LCS_CLIENT, /. LCS Client Type ./
- BE_APDU, /. APDU ./
- BE_NE_ID, /. Network Element Identity ./
- BE_GPS_ASSIST_DATA, /. GPS Assistance Data ./
- BE_DECIPH_KEYS, /. Deciphering Keys ./
- BE_RET_ERR_REQ, /. Return Error Request ./
- BE_RET_ERR_CAUSE, /. Return Error Cause ./
- BE_SEG, /. Segmentation ./
- BE_SERV_HO, /. Service Handover ./
- BE_SRC_RNC_TO_TAR_RNC_UMTS, /. Source RNC to target RNC transparent information (UMTS) ./
- BE_SRC_RNC_TO_TAR_RNC_CDMA, /. Source RNC to target RNC transparent information (cdma2000) ./
- BE_GERAN_CLS_M, /. GERAN Classmark ./
- BE_GRAN_BSC_CONT, /. GERAN BSC Container ./
- BE_NEW_BSS_TO_OLD_BSS_INF, /. New BSS to Old BSS Information ./
- BE_INTER_SYS_INF, /. Inter-System Information ./
- BE_SNA_ACC_INF, /. SNA Access Information ./
- BE_VSTK_RAND_INF, /. VSTK_RAND Information ./
- BE_VSTK_INF, /. VSTK Information ./
- BE_PAGING_INF, /. Paging Information ./
- BE_IMEI, /. IMEI ./
- BE_VEL_EST, /. Velocity Estimate ./
- BE_VGCS_FEAT_FLG, /. VGCS Feature Flags ./
- BE_TALKER_PRI, /. Talker Priority ./
- BE_EMRG_SET_IND, /. Emergency Set Indication ./
- BE_TALKER_ID, /. Talker Identity ./
- BE_CELL_ID_LIST_SEG, /. Cell Identifier List Segment ./
- BE_SMS_TO_VGCS, /. SMS to VGCS ./
- BE_VGCS_TALKER_MOD, /. VGCS Talker Mode ./
- BE_VGS_VBS_CELL_STAT, /. VGCS/VBS Cell Status ./
- BE_CELL_ID_LST_SEG_F_EST_CELLS, /. Cell Identifier List Segment for established cells ./
- BE_CELL_ID_LST_SEG_F_CELL_TB_EST, /. Cell Identifier List Segment for cells to be established ./
- BE_CELL_ID_LST_SEG_F_REL_CELL, /. Cell Identifier List Segment for released cells - no user present ./
- BE_CELL_ID_LST_SEG_F_NOT_EST_CELL, /. Cell Identifier List Segment for not established cells - no establishment possible ./
- BE_GANSS_ASS_DTA, /. GANSS Assistance Data ./
- BE_GANSS_POS_DTA, /. GANSS Positioning Data ./
- BE_GANSS_LOC_TYP, /. GANSS Location Type ./
- BE_APP_DATA, /. Application Data ./
- BE_DATA_ID /. Data Identity ./
- BE_APP_DATA_INF, /. Application Data Information ./
- BE_MSISDN, /. MSISDN ./
- BE_AOIP_TRANS_LAY_ADD, /. AoIP Transport Layer Address ./
- BE_SPEECH_CODEC_LST, /. Speech Codec List ./
- BE_SPEECH_CODEC, /. Speech Codec ./
- BE_CALL_ID, /. Call Identifier ./
- BE_CALL_ID_LST, /. Call Identifier List ./
- BE_NONE /. NONE ./
+ BE_CIC, /* Circuit Identity Code */
+ BE_RSVD_1, /* Reserved */
+ BE_RES_AVAIL, /* Resource Available */
+ BE_CAUSE, /* Cause */
+ BE_CELL_ID, /* Cell Identifier */
+ BE_PRIO, /* Priority */
+ BE_L3_HEADER_INFO, /* Layer 3 Header Information */
+ BE_IMSI, /* IMSI */
+ BE_TMSI, /* TMSI */
+ BE_ENC_INFO, /* Encryption Information */
+ BE_CHAN_TYPE, /* Channel Type */
+ BE_PERIODICITY, /* Periodicity */
+ BE_EXT_RES_IND, /* Extended Resource Indicator */
+ BE_NUM_MS, /* Number Of MSs */
+ BE_RSVD_2, /* Reserved */
+ BE_RSVD_3, /* Reserved */
+ BE_RSVD_4, /* Reserved */
+ BE_CM_INFO_2, /* Classmark Information Type 2 */
+ BE_CM_INFO_3, /* Classmark Information Type 3 */
+ BE_INT_BAND, /* Interference Band To Be Used */
+ BE_RR_CAUSE, /* RR Cause */
+ BE_RSVD_5, /* Reserved */
+ BE_L3_INFO, /* Layer 3 Information */
+ BE_DLCI, /* DLCI */
+ BE_DOWN_DTX_FLAG, /* Downlink DTX Flag */
+ BE_CELL_ID_LIST, /* Cell Identifier List */
+ BE_RESP_REQ, /* Response Request */
+ BE_RES_IND_METHOD, /* Resource Indication Method */
+ BE_CM_INFO_1, /* Classmark Information Type 1 */
+ BE_CIC_LIST, /* Circuit Identity Code List */
+ BE_DIAG, /* Diagnostic */
+ BE_L3_MSG, /* Layer 3 Message Contents */
+ BE_CHOSEN_CHAN, /* Chosen Channel */
+ BE_TOT_RES_ACC, /* Total Resource Accessible */
+ BE_CIPH_RESP_MODE, /* Cipher Response Mode */
+ BE_CHAN_NEEDED, /* Channel Needed */
+ BE_TRACE_TYPE, /* Trace Type */
+ BE_TRIGGERID, /* TriggerID */
+ BE_TRACE_REF, /* Trace Reference */
+ BE_TRANSID, /* TransactionID */
+ BE_MID, /* Mobile Identity */
+ BE_OMCID, /* OMCID */
+ BE_FOR_IND, /* Forward Indicator */
+ BE_CHOSEN_ENC_ALG, /* Chosen Encryption Algorithm */
+ BE_CCT_POOL, /* Circuit Pool */
+ BE_CCT_POOL_LIST, /* Circuit Pool List */
+ BE_TIME_IND, /* Time Indication */
+ BE_RES_SIT, /* Resource Situation */
+ BE_CURR_CHAN_1, /* Current Channel Type 1 */
+ BE_QUE_IND, /* Queueing Indicator */
+ BE_SPEECH_VER, /* Speech Version */
+ BE_ASS_REQ, /* Assignment Requirement */
+ BE_TALKER_FLAG, /* Talker Flag */
+ BE_CONN_REL_REQ, /* Connection Release Requested */
+ BE_GROUP_CALL_REF, /* Group Call Reference */
+ BE_EMLPP_PRIO, /* eMLPP Priority */
+ BE_CONF_EVO_IND, /* Configuration Evolution Indication */
+ BE_OLD2NEW_INFO, /* Old BSS to New BSS Information */
+ BE_LSA_ID, /* LSA Identifier */
+ BE_LSA_ID_LIST, /* LSA Identifier List */
+ BE_LSA_INFO, /* LSA Information */
+ BE_LCS_QOS, /* LCS QoS */
+ BE_LSA_ACC_CTRL, /* LSA access control suppression */
+ BE_LCS_PRIO, /* LCS Priority */
+ BE_LOC_TYPE, /* Location Type */
+ BE_LOC_EST, /* Location Estimate */
+ BE_POS_DATA, /* Positioning Data */
+ BE_LCS_CAUSE, /* 3*2*2*66 LCS Cause */
+ BE_LCS_CLIENT, /* LCS Client Type */
+ BE_APDU, /* APDU */
+ BE_NE_ID, /* Network Element Identity */
+ BE_GPS_ASSIST_DATA, /* GPS Assistance Data */
+ BE_DECIPH_KEYS, /* Deciphering Keys */
+ BE_RET_ERR_REQ, /* Return Error Request */
+ BE_RET_ERR_CAUSE, /* Return Error Cause */
+ BE_SEG, /* Segmentation */
+ BE_SERV_HO, /* Service Handover */
+ BE_SRC_RNC_TO_TAR_RNC_UMTS, /* Source RNC to target RNC transparent information (UMTS) */
+ BE_SRC_RNC_TO_TAR_RNC_CDMA, /* Source RNC to target RNC transparent information (cdma2000) */
+ BE_GERAN_CLS_M, /* GERAN Classmark */
+ BE_GERAN_BSC_CONT, /* GERAN BSC Container */
+ BE_NEW_BSS_TO_OLD_BSS_INF, /* New BSS to Old BSS Information */
+ BE_INTER_SYS_INF, /* Inter-System Information */
+ BE_SNA_ACC_INF, /* SNA Access Information */
+ BE_VSTK_RAND_INF, /* VSTK_RAND Information */
+ BE_VSTK_INF, /* VSTK Information */
+ BE_PAGING_INF, /* Paging Information */
+ BE_IMEI, /* IMEI */
+ BE_VEL_EST, /* Velocity Estimate */
+ BE_VGCS_FEAT_FLG, /* VGCS Feature Flags */
+ BE_TALKER_PRI, /* Talker Priority */
+ BE_EMRG_SET_IND, /* Emergency Set Indication */
+ BE_TALKER_ID, /* Talker Identity */
+ BE_CELL_ID_LIST_SEG, /* Cell Identifier List Segment */
+ BE_SMS_TO_VGCS, /* SMS to VGCS */
+ BE_VGCS_TALKER_MOD, /* VGCS Talker Mode */
+ BE_VGS_VBS_CELL_STAT, /* VGCS/VBS Cell Status */
+ BE_CELL_ID_LST_SEG_F_EST_CELLS, /* Cell Identifier List Segment for established cells */
+ BE_CELL_ID_LST_SEG_F_CELL_TB_EST, /* Cell Identifier List Segment for cells to be established */
+ BE_CELL_ID_LST_SEG_F_REL_CELL, /* Cell Identifier List Segment for released cells - no user present */
+ BE_CELL_ID_LST_SEG_F_NOT_EST_CELL, /* Cell Identifier List Segment for not established cells - no establishment possible */
+ BE_GANSS_ASS_DTA, /* GANSS Assistance Data */
+ BE_GANSS_POS_DTA, /* GANSS Positioning Data */
+ BE_GANSS_LOC_TYP, /* GANSS Location Type */
+ BE_APP_DATA, /* Application Data */
+ BE_DATA_ID /* Data Identity */
+ BE_APP_DATA_INF, /* Application Data Information */
+ BE_MSISDN, /* MSISDN */
+ BE_AOIP_TRANS_LAY_ADD, /* AoIP Transport Layer Address */
+ BE_SPEECH_CODEC_LST, /* Speech Codec List */
+ BE_SPEECH_CODEC, /* Speech Codec */
+ BE_CALL_ID, /* Call Identifier */
+ BE_CALL_ID_LST, /* Call Identifier List */
+ BE_A_ITF_SEL_FOR_RESET, /* A-Interface Selector for RESET */
+ BE_KC128, /* Kc128 */
+ BE_CSG_ID, /* CSG Identifier */
+ BE_NONE /* NONE */
}
bssmap_elem_idx_t;
#endif
@@ -762,11 +801,11 @@ be_res_avail(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 of
{
guint32 curr_offset;
guint16 value;
- int i;
+ int i;
curr_offset = offset;
- for (i=0; i < 5; i++){
+ for (i=0; i < 5; i++) {
value = tvb_get_ntohl(tvb, curr_offset);
proto_tree_add_text(tree, tvb, curr_offset, len, "Number of full rate channels available in band %u %u",i+1,value);
curr_offset+=2;
@@ -783,9 +822,9 @@ be_res_avail(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 of
static guint16
be_cause(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string, int string_len)
{
- guint8 oct;
- guint32 value;
- guint32 curr_offset;
+ guint8 oct;
+ guint32 value;
+ guint32 curr_offset;
const gchar *str = NULL;
curr_offset = offset;
@@ -1030,8 +1069,6 @@ be_l3_header_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
curr_offset = offset;
- oct = tvb_get_guint8(tvb, curr_offset);
-
proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_gsm_a_L3_protocol_discriminator, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
@@ -1127,10 +1164,10 @@ be_enc_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 off
guint16
be_chan_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string, int string_len)
{
- guint8 oct;
- guint8 sdi;
- guint8 num_chan;
- guint32 curr_offset;
+ guint8 oct;
+ guint8 sdi;
+ guint8 num_chan;
+ guint32 curr_offset;
const gchar *str;
curr_offset = offset;
@@ -1549,7 +1586,7 @@ be_tot_res_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
curr_offset+=2;
/* Total number of accessible half rate channels */
proto_tree_add_item(tree, hf_gsm_a_bssmap_tot_no_of_hr_ch, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
- curr_offset+=2;
+ /*curr_offset+=2;*/
return(len);
@@ -1572,7 +1609,7 @@ be_lsa_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offse
* 1 it is a universal LSA.
*/
proto_tree_add_item(tree, hf_gsm_a_bssmap_lsa_id, tvb, curr_offset, 3, ENC_BIG_ENDIAN);
- curr_offset+=3;
+ /*curr_offset+=3;*/
return(len);
@@ -1595,7 +1632,7 @@ be_lsa_id_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
/* LSA identification 1 - n */
- while (curr_offset-offset < len){
+ while (curr_offset-offset < len) {
proto_tree_add_item(tree, hf_gsm_a_bssmap_lsa_id, tvb, curr_offset, 3, ENC_BIG_ENDIAN);
curr_offset+=3;
}
@@ -1659,7 +1696,7 @@ be_cell_id_aux(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
if (add_string)
g_snprintf(add_string, string_len, " - LAC (0x%04x)", value);
/* FALLTHRU */
- if (disc == 0x0b){
+ if (disc == 0x0b) {
/* If SAI, SAC follows */
proto_tree_add_item(tree, hf_gsm_a_bssmap_sac, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
curr_offset += 2;
@@ -1668,7 +1705,7 @@ be_cell_id_aux(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
case 0x09: /* For intersystem handover from GSM to UMTS or cdma2000: */
- if ((disc == 0x08) ||(disc == 0x09) || (disc == 0x0a)|| (disc == 0x0c)){
+ if ((disc == 0x08) ||(disc == 0x09) || (disc == 0x0a)|| (disc == 0x0c)) {
/* RNC-ID
* The octets 9-10 are coded as the RNC-ID (0..4095) or the
* Extended RNC-ID (4096..65535) specified in 3GPP TS 25.413 [31]:
@@ -1771,8 +1808,8 @@ static const true_false_string bssmap_pvi_value = {
guint16
be_prio(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string, int string_len)
{
- guint8 oct;
- guint32 curr_offset;
+ guint8 oct;
+ guint32 curr_offset;
const gchar *str;
curr_offset = offset;
@@ -1836,10 +1873,12 @@ be_int_band(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 off
curr_offset = offset;
- proto_tree_add_text(tree, tvb, curr_offset, len, "Not decoded yet");
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_interference_bands, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
- return(len);
+ return(curr_offset - offset);
}
/*
* 3.2.2.22 RR Cause
@@ -1866,7 +1905,7 @@ be_lsa_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 off
proto_tree_add_item(tree, hf_gsm_a_bssmap_lsa_only, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
curr_offset++;
- while (curr_offset-offset < len){
+ while (curr_offset-offset < len) {
/* LSA identification and attributes */
/* 8 7 6 5 4 3 2 1
* spare act pref priority
@@ -1888,8 +1927,8 @@ be_lsa_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 off
static guint16
be_l3_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- tvbuff_t *l3_tvb;
+ guint32 curr_offset;
+ tvbuff_t *l3_tvb;
curr_offset = offset;
@@ -1944,10 +1983,10 @@ be_l3_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offs
static guint16
be_dlci(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
- guint32 curr_offset;
- proto_item *item = NULL;
- proto_tree *subtree = NULL;
+ guint8 oct;
+ guint32 curr_offset;
+ proto_item *item = NULL;
+ proto_tree *subtree = NULL;
curr_offset = offset;
@@ -2004,13 +2043,13 @@ be_down_dtx_flag(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint3
guint16
be_cell_id_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len)
{
- guint8 oct;
- guint16 consumed;
- guint8 disc;
- guint8 num_cells;
- guint32 curr_offset;
- proto_item *item = NULL;
- proto_tree *subtree = NULL;
+ guint8 oct;
+ guint16 consumed;
+ guint8 disc;
+ guint8 num_cells;
+ guint32 curr_offset;
+ proto_item *item = NULL;
+ proto_tree *subtree = NULL;
curr_offset = offset;
@@ -2230,8 +2269,8 @@ be_cic_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 off
curr_offset = offset;
- proto_tree_add_text(tree, tvb, curr_offset, len, "Not decoded yet");
-
+ proto_tree_add_item(tree, hf_gsm_a_bssap_cic_list_range, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_bssap_cic_list_status, tvb, (curr_offset+1), (len-1), ENC_NA);
return(len);
}
@@ -2239,14 +2278,16 @@ be_cic_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 off
* 3.2.2.32 Diagnostics
*/
static guint16
-be_diag(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+be_diag(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len , gchar *add_string _U_, int string_len _U_)
{
guint32 curr_offset;
curr_offset = offset;
- proto_tree_add_text(tree, tvb, curr_offset, len, "Not decoded yet");
-
+ proto_tree_add_item(tree, hf_gsm_a_bssap_diag_error_pointer, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset += 2;
+ NO_MORE_DATA_CHECK(len);
+ proto_tree_add_item(tree, hf_gsm_a_bssap_diag_msg_rcv, tvb, curr_offset, (len-2), ENC_NA);
return(len);
}
@@ -2270,7 +2311,7 @@ static const value_string gsm_a_bssmap_ch_mode_vals[] = {
{ 7, "data, 14.5 kbit/s downlink and 43.5 kbit/s uplink" },
{ 10, "data, 14.5 kbit/s downlink and 29.0 kbit/s uplink" },
{ 15, "data, 29.0 kbit/s downlink and 43.5 kbit/s uplink" },
- { 0, NULL },
+ { 0, NULL }
};
static const value_string gsm_a_bssmap_channel_vals[] = {
{ 0, "None(Current Channel Type 1 - Reserved)" },
@@ -2289,28 +2330,28 @@ static const value_string gsm_a_bssmap_channel_vals[] = {
{ 14, "6 Full Rate TCHs" },
{ 15, "7 Full Rate TCHs" },
{ 4, "8 Full Rate TCHs" },
- { 0, NULL },
+ { 0, NULL }
};
static const value_string gsm_a_bssmap_trace_bss_record_type_vals[] = {
{ 0, "Basic" },
{ 1, "Handover" },
{ 2, "Radio" },
{ 3, "No BSS Trace" },
- { 0, NULL },
+ { 0, NULL }
};
static const value_string gsm_a_bssmap_trace_msc_record_type_vals[] = {
{ 0, "Basic" },
{ 1, "Detailed (optional)" },
{ 2, "Spare" },
{ 3, "No MSC Trace" },
- { 0, NULL },
+ { 0, NULL }
};
static const value_string gsm_a_bssmap_trace_invoking_event_vals[] = {
{ 0, "MOC, MTC, SMS MO, SMS MT, PDS MO, PDS MT, SS, Location Updates, IMSI attach, IMSI detach" },
{ 1, "MOC, MTC, SMS_MO, SMS_MT, PDS MO, PDS MT, SS only" },
{ 2, "Location updates, IMSI attach IMSI detach only" },
{ 3, "Operator definable" },
- { 0, NULL },
+ { 0, NULL }
};
static guint16
be_chosen_chan(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
@@ -2367,23 +2408,19 @@ be_ciph_resp_mode(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
static guint16
be_l3_msg(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- tvbuff_t *l3_tvb;
+ tvbuff_t *l3_tvb;
- curr_offset = offset;
-
- proto_tree_add_text(tree, tvb, curr_offset, len,
+ proto_tree_add_text(tree, tvb, offset, len,
"Layer 3 Message Contents");
/*
* dissect the embedded DTAP message
*/
- l3_tvb = tvb_new_subset(tvb, curr_offset, len, len);
+ l3_tvb = tvb_new_subset(tvb, offset, len, len);
/* Octet j (j = 3, 4, ..., n) is the unchanged octet j of a radio interface layer 3 message
* as defined in 3GPP TS 24.008, n is equal to the length of that radio interface layer 3 message. */
call_dissector(dtap_handle, l3_tvb, g_pinfo, g_tree);
- curr_offset += len;
return(len);
}
@@ -2413,7 +2450,7 @@ static guint16
be_trace_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
guint32 curr_offset;
- gint bit_offset;
+ gint bit_offset;
bit_offset = (offset<<3);
curr_offset = offset;
@@ -2427,7 +2464,7 @@ be_trace_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 o
proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_trace_msc_record_type, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
bit_offset += 2;
proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_trace_invoking_event, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
- bit_offset += 2;
+ /*bit_offset += 2;*/
curr_offset++;
/* no length check possible */
@@ -2521,8 +2558,8 @@ be_trace_omc_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
static guint16
be_for_ind(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
- guint32 curr_offset;
+ guint8 oct;
+ guint32 curr_offset;
const gchar *str = NULL;
curr_offset = offset;
@@ -2560,8 +2597,8 @@ be_for_ind(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offs
static guint16
be_chosen_enc_alg(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string, int string_len)
{
- guint8 oct;
- guint32 curr_offset;
+ guint8 oct;
+ guint32 curr_offset;
const gchar *str = NULL;
curr_offset = offset;
@@ -2604,8 +2641,8 @@ be_chosen_enc_alg(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
static guint16
be_cct_pool(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string, int string_len)
{
- guint8 oct;
- guint32 curr_offset;
+ guint8 oct;
+ guint32 curr_offset;
const gchar *str = NULL;
curr_offset = offset;
@@ -2704,9 +2741,9 @@ be_que_ind(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offs
static guint16
be_speech_ver(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string, int string_len)
{
- guint8 oct;
- guint32 curr_offset;
- const gchar *str = NULL;
+ guint8 oct;
+ guint32 curr_offset;
+ const gchar *str = NULL;
const gchar *short_str = NULL;
curr_offset = offset;
@@ -2823,7 +2860,7 @@ static const value_string gsm_a_bssmap_smi_vals[] = {
{ 5, "Reserved" },
{ 6, "Reserved" },
{ 7, "Reserved" },
- { 0, NULL },
+ { 0, NULL }
};
static guint16
@@ -2905,7 +2942,7 @@ static guint16
be_loc_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
guint32 curr_offset;
- guint8 location_information;
+ guint8 location_information;
curr_offset = offset;
@@ -2914,7 +2951,7 @@ be_loc_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 off
proto_tree_add_item(tree, hf_gsm_a_bssmap_location_type_location_information, tvb, offset, 1, ENC_BIG_ENDIAN);
curr_offset++;
- if(location_information == 1 || location_information == 2)
+ if (location_information == 1 || location_information == 2)
{
/* protocol method */
proto_tree_add_item(tree, hf_gsm_a_bssmap_location_type_positioning_method, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
@@ -2933,7 +2970,7 @@ static guint16
be_loc_est(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
tvbuff_t *data_tvb;
- guint32 curr_offset;
+ guint32 curr_offset;
curr_offset = offset;
@@ -2950,9 +2987,9 @@ static guint16
be_pos_data(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
guint32 curr_offset;
- guint8 i;
+ guint8 i;
guint64 pos_data_disc;
- gint bit_offset;
+ gint bit_offset;
curr_offset = offset;
@@ -3009,14 +3046,14 @@ static const value_string gsm_a_apdu_protocol_id_strings[] = {
{ 1, "BSSLAP" },
{ 2, "LLP" },
{ 3, "SMLCPP" },
- { 0, NULL },
+ { 0, NULL }
};
static guint16
be_apdu(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guint8 apdu_protocol_id;
+ guint32 curr_offset;
+ guint8 apdu_protocol_id;
tvbuff_t *APDU_tvb;
curr_offset = offset;
@@ -3036,13 +3073,13 @@ be_apdu(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset,
curr_offset++;
len--;
- switch(apdu_protocol_id){
+ switch (apdu_protocol_id) {
case 1:
/* BSSLAP
* the embedded message is as defined in 3GPP TS 08.71(3GPP TS 48.071 version 7.2.0 Release 7)
*/
APDU_tvb = tvb_new_subset(tvb, curr_offset, len, len);
- if(gsm_bsslap_handle)
+ if (gsm_bsslap_handle)
call_dissector(gsm_bsslap_handle, APDU_tvb, g_pinfo, g_tree);
break;
case 2:
@@ -3148,7 +3185,7 @@ static const value_string gsm_a_bssmap_serv_ho_inf_vals[] = {
{ 5, "no information available for service based handover" },
{ 6, "no information available for service based handover" },
{ 7, "no information available for service based handover" },
- { 0, NULL },
+ { 0, NULL }
};
static guint16
be_serv_ho(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
@@ -3205,22 +3242,64 @@ be_src_rnc_to_tar_rnc_cdma(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
/*
* 3.2.2.78 GERAN Classmark
*/
-
+static const value_string gsm_a_max_nb_traffic_chan_vals[] = {
+ { 0x00, "1 TCH" },
+ { 0x01, "2 TCHs" },
+ { 0x02, "3 TCHs" },
+ { 0x03, "4 TCHs" },
+ { 0x04, "5 TCHs" },
+ { 0x05, "6 TCHs" },
+ { 0, NULL }
+};
+static const true_false_string gsm_a_bssmap_accept_not_accept_vals = {
+ "Acceptable",
+ "Not acceptable"
+};
static guint16
-be_geran_cls_m(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+be_geran_cls_m(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
guint32 curr_offset;
curr_offset = offset;
- proto_tree_add_text(tree, tvb, curr_offset, len , "Not decoded yet");
+ if (len > 2) {
+ de_sup_codec_list(tvb, tree, pinfo, curr_offset, (len-2), NULL, 0);
+ }
+ curr_offset += len-2;
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 5, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_max_nb_traffic_chan, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_acceptable_chan_coding_bit5, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_acceptable_chan_coding_bit4, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_acceptable_chan_coding_bit3, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_acceptable_chan_coding_bit2, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_acceptable_chan_coding_bit1, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
return(len);
}
/*
* 3.2.2.79 GERAN BSC Container
*/
+static guint16
+be_geran_bsc_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+ curr_offset = offset;
+
+ proto_tree_add_item(tree, hf_gsm_a_bssap_speech_codec, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+ NO_MORE_DATA_CHECK(len);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_allowed_data_rate_bit8, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_allowed_data_rate_bit7, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_allowed_data_rate_bit6, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_allowed_data_rate_bit5, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_allowed_data_rate_bit4, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_max_nb_traffic_chan, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+
+ return(len);
+}
/*
* 3.2.2.80 New BSS to Old BSS Information
*/
@@ -3251,11 +3330,13 @@ bssmap_new_bss_to_old_bss_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
static guint16
be_inter_sys_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ tvbuff_t *new_tvb;
- curr_offset = offset;
+ new_tvb = tvb_new_subset(tvb, offset, len, len);
- proto_tree_add_text(tree, tvb, curr_offset, len , "Not decoded yet");
+ if (new_tvb) {
+ dissect_ranap_InterSystemInformation_TransparentContainer_PDU(new_tvb, pinfo, tree);
+ }
return(len);
}
@@ -3277,9 +3358,31 @@ be_sna_acc_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
/*
* 3.2.2.83 VSTK_RAND Information
*/
+static guint16
+be_vstk_rand_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+ guint64 vstk_rand;
+
+ curr_offset = offset;
+
+ vstk_rand = tvb_get_ntoh40(tvb, curr_offset);
+ vstk_rand >>= 4;
+ proto_tree_add_uint64(tree, hf_gsm_a_bssmap_vstk_rand, tvb, curr_offset, 5, vstk_rand);
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, (((curr_offset+4)<<3)+4), 4, ENC_BIG_ENDIAN);
+
+ return(len);
+}
/*
* 3.2.2.84 VSTK information
*/
+static guint16
+be_vstk_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_vstk, tvb, offset, 16, ENC_NA);
+
+ return(len);
+}
/*
* 3.2.2.85 Paging Information
*/
@@ -3297,7 +3400,7 @@ static const value_string gsm_a_bssmap_paging_cause_vals[] = {
{ 1, "Paging is for a short message" },
{ 2, "Paging is for a USSD" },
{ 3, "Spare" },
- { 0, NULL },
+ { 0, NULL }
};
static guint16
@@ -3323,13 +3426,9 @@ be_paging_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 o
* 3.2.2.87 Velocity Estimate
*/
static guint16
-be_vel_est(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+be_vel_est(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len)
{
- guint32 curr_offset;
-
- curr_offset = offset;
-
- proto_tree_add_text(tree, tvb, curr_offset, len, "Not decoded yet");
+ dissect_description_of_velocity(tvb, tree, pinfo, offset, len, add_string, string_len);
return(len);
}
@@ -3391,7 +3490,7 @@ static const value_string gsm_a_bssmap_talker_pri_vals[] = {
{ 1, "Privileged Priority" },
{ 2, "Emergency Priority" },
{ 3, "Reserved for future use" },
- { 0, NULL },
+ { 0, NULL }
};
static guint16
@@ -3434,16 +3533,12 @@ be_talker_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 of
* 3.2.2.92 SMS to VGCS
*/
static guint16
-be_sms_to_vgcs(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+be_sms_to_vgcs(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
-
- curr_offset = offset;
-
- proto_tree_add_text(tree, tvb, curr_offset, len, "Not decoded yet");
/* The SMS content field is coded as follows - this field contains
* the RP-DATA message as defined in 3GPP TS 24.011.
*/
+ rp_data_n_ms(tvb, tree, pinfo, offset, len);
return(len);
@@ -3451,6 +3546,30 @@ be_sms_to_vgcs(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
/*
* 3.2.2.93 VGCS talker mode
*/
+static const value_string gsm_a_bssmap_rr_mode_vals[] = {
+ { 0, "dedicated mode (i.e. dedicated channel)"},
+ { 1, "group transmit mode (i.e. voice group channel)"},
+ { 0, NULL }
+};
+static const value_string gsm_a_bssmap_group_cipher_key_nb_vals[] = {
+ { 0x0, "no ciphering"},
+ { 0x1, "cipher key number 1"},
+ { 0x2, "cipher key number 2"},
+ { 0x3, "cipher key number 3"},
+ { 0x4, "cipher key number 4"},
+ { 0x5, "cipher key number 5"},
+ { 0x6, "cipher key number 6"},
+ { 0x7, "cipher key number 7"},
+ { 0x8, "cipher key number 8"},
+ { 0x9, "cipher key number 9"},
+ { 0xa, "cipher key number A"},
+ { 0xb, "cipher key number B"},
+ { 0xc, "cipher key number C"},
+ { 0xd, "cipher key number D"},
+ { 0xe, "cipher key number E"},
+ { 0xf, "cipher key number F"},
+ { 0, NULL }
+};
static guint16
be_vgcs_talker_mode(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
@@ -3458,13 +3577,38 @@ be_vgcs_talker_mode(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
curr_offset = offset;
- proto_tree_add_text(tree, tvb, curr_offset, len, "Not decoded yet");
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_rr_mode, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_group_cipher_key_nb, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, ((curr_offset<<3)+6), 2, ENC_BIG_ENDIAN);
return(len);
}
/*
* 3.2.2.94 VGCS/VBS Cell Status
*/
+static const value_string gsm_a_bssmap_vgcs_vbs_cell_status_vals[] = {
+ { 0, "Cell is established for the voice group or broadcast call"},
+ { 1, "Cell is not established for the voice group or broadcast call. Establishment by the BSS is to be attempted"},
+ { 2, "Cell is released for the voice group or broadcast call because no user is present"},
+ { 3, "Cell is not established for the voice group or broadcast call. No establishment by the BSS is to be attempted"},
+ { 4, "Reserved"},
+ { 5, "Reserved"},
+ { 6, "Reserved"},
+ { 7, "Reserved"},
+ { 0, NULL }
+};
+static guint16
+be_vgcs_vbs_cell_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+
+ curr_offset = offset;
+
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, (curr_offset<<3), 5, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_vgcs_vbs_cell_status, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+
+ return(len);
+}
/*
* 3.2.2.95 GANSS Assistance Data
* The GANSS Assistance Data octets 3 to n are coded as the Requested GANSS Data element of 3GPP TS 49.031 (BSSAP-LE)
@@ -3543,12 +3687,34 @@ be_ganss_loc_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
/*
* 3.2.2.98 Application Data
*/
+guint16
+be_app_data(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+
+ curr_offset = offset;
+
+ proto_tree_add_text(tree, tvb, curr_offset, len, "Not decoded yet");
+
+ return(len);
+}
/*
* 3.2.2.99 Data Identity
*/
+guint16
+be_app_data_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
+{
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_data_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ return(len);
+}
/*
* 3.2.2.100 Application Data Information
*/
+static const true_false_string gsm_a_bssmap_bt_ind_val = {
+ "BSS has already transmitted the application data to cells",
+ "BSS has not transmitted the application data to cells"
+};
static guint16
be_app_data_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
@@ -3556,7 +3722,8 @@ be_app_data_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
curr_offset = offset;
- proto_tree_add_text(tree, tvb, curr_offset, len, "Not decoded yet");
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, (curr_offset<<3), 7, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_bt_ind, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
return(len);
}
@@ -3564,6 +3731,18 @@ be_app_data_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
* 3.2.2.101 MSISDN
* Octets 3-12 contain the digits of an MSISDN, coded as in 3GPP TS 24.008, Calling party BCD number, octets 4 - 13.
*/
+ static guint16
+ be_msisdn(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
+ {
+ tvbuff_t *new_tvb;
+
+ new_tvb = tvb_new_subset(tvb, offset, len, len);
+ if (new_tvb) {
+ dissect_gsm_map_msisdn(new_tvb, pinfo , tree);
+ }
+
+ return len;
+}
/*
* 3.2.2.102 AoIP Transport Layer Address
*/
@@ -3571,6 +3750,11 @@ static guint16
be_aoip_trans_lay_add(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
guint32 curr_offset;
+ guint8 addr_type = 0;
+ guint32 rtp_ipv4_address;
+ guint16 rtp_port;
+ address rtp_dst_addr;
+ struct e_in6_addr rtp_addr_ipv6;
curr_offset = offset;
@@ -3578,15 +3762,19 @@ be_aoip_trans_lay_add(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, g
* for the Transport Layer information of the connection end point.
* The Length differentiates between IPv4 and IPv6.
*/
- switch(len){
+ switch (len) {
case 6:
/* IPv4 */
+ addr_type = 1;
proto_tree_add_item(tree, hf_gsm_a_bssmap_aoip_trans_ipv4, tvb, curr_offset, 4, ENC_BIG_ENDIAN);
+ rtp_ipv4_address = tvb_get_ipv4(tvb, curr_offset);
curr_offset+=4;
break;
case 18:
/* IPv6 */
+ addr_type = 2;
proto_tree_add_item(tree, hf_gsm_a_bssmap_aoip_trans_ipv6, tvb, curr_offset, 16, ENC_NA);
+ tvb_get_ipv6(tvb, offset + 5, &rtp_addr_ipv6);
curr_offset+=16;
break;
default:
@@ -3595,8 +3783,29 @@ be_aoip_trans_lay_add(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, g
return(len);
}
proto_tree_add_item(tree, hf_gsm_a_bssmap_aoip_trans_port, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ rtp_port = tvb_get_ntohs(tvb,curr_offset);
curr_offset+=2;
+ switch (addr_type) {
+ case 0:
+ break;
+ case 1:
+ /* IPv4 */
+ rtp_dst_addr.type = AT_IPv4;
+ rtp_dst_addr.len = 4;
+ rtp_dst_addr.data = (guint8 *)&rtp_ipv4_address;
+ break;
+ case 2:
+ /* IPv6 */
+ rtp_dst_addr.type = AT_IPv6;
+ rtp_dst_addr.len = 16;
+ rtp_dst_addr.data = (guint8 *)&rtp_addr_ipv6;
+ break;
+ }
+
+ if ((!pinfo->fd->flags.visited) && rtp_port != 0 && rtp_handle && addr_type != 0) {
+ rtp_add_address(pinfo, &rtp_dst_addr, rtp_port, 0, "BSS MAP", pinfo->fd->num, FALSE, 0);
+ }
return(curr_offset - offset);
}
/*
@@ -3642,8 +3851,8 @@ static const true_false_string bssmap_pt_vals = {
};
/* 26.103 Table 6.3-1: Coding of the selected Codec_Type (long form) */
static const value_string bssap_speech_codec_values[] = {
- { 0x00, "GSM FR " },
- { 0x01, "GSM HR " },
+ { 0x00, "GSM FR" },
+ { 0x01, "GSM HR" },
{ 0x02, "GSM EFR" },
{ 0x03, "FR_AMR" },
{ 0x04, "HR_AMR" },
@@ -3657,6 +3866,10 @@ static const value_string bssap_speech_codec_values[] = {
{ 0x0c, "OFR_AMR-WB" },
{ 0x0d, "OHR_AMR-WB" },
{ 0x0e, "Reserved" },
+ { 0x0f, "Codec Extension" },
+ { 0xfd, "CSData" },
+ { 0xfe, "MuMe2" },
+ { 0xff, "MuMe" },
{ 0, NULL }
};
static value_string_ext bssap_speech_codec_values_ext = VALUE_STRING_EXT_INIT(bssap_speech_codec_values);
@@ -3677,13 +3890,13 @@ be_speech_codec_lst(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
curr_offset = offset;
- while (curr_offset-offset < len){
+ while (curr_offset-offset < len) {
number++;
- consumed=0;
+ consumed = 0;
item = proto_tree_add_text(tree, tvb, curr_offset, 1, "Speech Codec Element %u",number);
subtree = proto_item_add_subtree(item, ett_codec_lst);
codec = tvb_get_guint8(tvb,curr_offset)&0x0f;
- switch(codec){
+ switch (codec) {
case 0:
/* GSM_FR is coded "0000" */
/* fall through */
@@ -3703,7 +3916,10 @@ be_speech_codec_lst(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
proto_tree_add_item(subtree, hf_gsm_a_bssmap_tf, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
/* Codec Type */
proto_tree_add_item(subtree, hf_gsm_a_bssap_speech_codec, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_item_append_text(item, " - %s",val_to_str(tvb_get_guint8(tvb, curr_offset) & 0x0f, bssap_speech_codec_values, "Unknown"));
+ proto_item_append_text(item, " - %s",
+ val_to_str_const(tvb_get_guint8(tvb, curr_offset) & 0x0f,
+ bssap_speech_codec_values,
+ "Unknown"));
curr_offset++;
consumed++;
break;
@@ -3726,7 +3942,10 @@ be_speech_codec_lst(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
proto_tree_add_item(subtree, hf_gsm_a_bssmap_tf, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
/* Codec Type */
proto_tree_add_item(subtree, hf_gsm_a_bssap_speech_codec, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_item_append_text(item, " - %s",val_to_str(tvb_get_guint8(tvb, curr_offset) & 0x0f, bssap_speech_codec_values, "Unknown"));
+ proto_item_append_text(item, " - %s",
+ val_to_str_const(tvb_get_guint8(tvb, curr_offset) & 0x0f,
+ bssap_speech_codec_values,
+ "Unknown"));
curr_offset++;
consumed++;
proto_tree_add_text(subtree, tvb, curr_offset, 2, "S0 - S15");
@@ -3752,7 +3971,10 @@ be_speech_codec_lst(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
proto_tree_add_item(subtree, hf_gsm_a_bssmap_tf, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
/* Codec Type */
proto_tree_add_item(subtree, hf_gsm_a_bssap_speech_codec, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_item_append_text(item, " - %s",val_to_str(tvb_get_guint8(tvb, curr_offset) & 0x0f, bssap_speech_codec_values, "Unknown"));
+ proto_item_append_text(item, " - %s",
+ val_to_str_const(tvb_get_guint8(tvb, curr_offset) & 0x0f,
+ bssap_speech_codec_values,
+ "Unknown"));
curr_offset++;
consumed++;
proto_tree_add_text(subtree, tvb, curr_offset, 1, "S0 - S7");
@@ -3771,7 +3993,10 @@ be_speech_codec_lst(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
consumed++;
/* Codec Extension */
proto_tree_add_item(subtree, hf_gsm_a_bssap_extended_codec, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_item_append_text(item, " - %s",val_to_str(tvb_get_guint8(tvb, curr_offset), bssap_extended_codec_values, "Unknown"));
+ proto_item_append_text(item, " - %s",
+ val_to_str_const(tvb_get_guint8(tvb, curr_offset),
+ bssap_extended_codec_values,
+ "Unknown"));
curr_offset++;
consumed++;
proto_tree_add_item(subtree, hf_gsm_a_bssap_extended_codec_r2, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
@@ -3819,13 +4044,39 @@ be_speech_codec(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
curr_offset = offset;
- while (curr_offset-offset < len){
+ while (curr_offset-offset < len) {
number++;
- consumed=0;
+ consumed = 0;
item = proto_tree_add_text(tree, tvb, curr_offset, 1, "Speech Codec Element %u",number);
subtree = proto_item_add_subtree(item, ett_codec_lst);
codec = tvb_get_guint8(tvb,curr_offset)&0x0f;
- switch(codec){
+ switch (codec) {
+ case 0:
+ /* GSM_FR is coded "0000" */
+ /* fall through */
+ case 1:
+ /* GSM_HR is coded "0001" */
+ /* fall through */
+ case 2:
+ /* GSM_EFR is coded "0010" */
+ /* fall through */
+ /* FI indicates Full IP */
+ proto_tree_add_item(subtree, hf_gsm_a_bssmap_fi, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* PI indicates PCMoIP */
+ proto_tree_add_item(subtree, hf_gsm_a_bssmap_pi, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* PT indicates PCMoTDM */
+ proto_tree_add_item(subtree, hf_gsm_a_bssmap_pt, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* TF indicates TFO support */
+ proto_tree_add_item(subtree, hf_gsm_a_bssmap_tf, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* Codec Type */
+ proto_tree_add_item(subtree, hf_gsm_a_bssap_speech_codec, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_item_append_text(item, " - %s",
+ val_to_str_const(tvb_get_guint8(tvb, curr_offset) & 0x0f,
+ bssap_speech_codec_values,
+ "Unknown"));
+ curr_offset++;
+ consumed++;
+ break;
case 3:
/* fall through */
case 4:
@@ -3845,7 +4096,11 @@ be_speech_codec(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
proto_tree_add_item(subtree, hf_gsm_a_bssmap_tf2, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
/* Codec Type */
proto_tree_add_item(subtree, hf_gsm_a_bssap_speech_codec, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ proto_item_append_text(item, " - %s",
+ val_to_str_const(tvb_get_guint8(tvb, curr_offset) & 0x0f,
+ bssap_speech_codec_values,
+ "Unknown"));
+ curr_offset++;
consumed++;
proto_tree_add_text(subtree, tvb, curr_offset, 2, "S0 - S15");
curr_offset+=2;
@@ -3870,6 +4125,10 @@ be_speech_codec(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
proto_tree_add_item(subtree, hf_gsm_a_bssmap_tf2, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
/* Codec Type */
proto_tree_add_item(subtree, hf_gsm_a_bssap_speech_codec, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_item_append_text(item, " - %s",
+ val_to_str_const(tvb_get_guint8(tvb, curr_offset) & 0x0f,
+ bssap_speech_codec_values,
+ "Unknown"));
curr_offset++;
consumed++;
proto_tree_add_text(subtree, tvb, curr_offset, 1, "S0 - S7");
@@ -3934,16 +4193,80 @@ be_call_id_lst(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
guint32 curr_offset;
curr_offset = offset;
- if (len==0){
+ if (len==0) {
proto_tree_add_text(tree, tvb, curr_offset, len, "all resources and references associated to all Call Identifiers in use between the BSC and the MSC need to be released");
}
- while (curr_offset-offset < len){
+ while (curr_offset-offset < len) {
proto_tree_add_item(tree, hf_gsm_a_bssmap_call_id, tvb, curr_offset, 4, ENC_LITTLE_ENDIAN);
curr_offset+=4;
}
return(len);
}
+/*
+ * 3.2.2.107 A-Interface Selector for RESET
+ */
+static const true_false_string gsm_a_bssmap_rip_value = {
+ "all calls associated to IP links shall be cleared",
+ "calls associated to IP links shall not be cleared"
+};
+static const true_false_string gsm_a_bssmap_rtd_value = {
+ "all calls associated to TDM links shall be cleared",
+ "calls associated to TDM links shall not be cleared"
+};
+static guint16
+be_a_itf_sel_for_reset(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+ curr_offset = offset;
+
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, (curr_offset<<3), 6, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_rip, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_rtd, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+
+ return(curr_offset - offset);
+}
+/*
+ * 3.2.2.109 Kc128
+ */
+static guint16
+be_kc128(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+ curr_offset = offset;
+
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_kc128, tvb, curr_offset, 16, ENC_NA);
+ curr_offset+=16;
+
+ return(curr_offset - offset);
+}
+/*
+ * 3.2.2.110 CSG Identifier
+ */
+static const crumb_spec_t gsm_a_bssmap_csg_id_crumbs[] = {
+ { 0, 24},
+ { 29, 3},
+ { 0, 0}
+};
+static const true_false_string gsm_a_bssmap_cell_access_mode_value = {
+ "Hybrid cell",
+ "CSG cell"
+};
+static guint16
+be_csg_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 bit_offset;
+ bit_offset = offset<<3;
+
+ proto_tree_add_split_bits_item_ret_val(tree, hf_gsm_a_bssmap_csg_id, tvb, bit_offset, gsm_a_bssmap_csg_id_crumbs, NULL);
+ bit_offset += 32;
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, bit_offset, 7, ENC_BIG_ENDIAN);
+ bit_offset += 7;
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_cell_access_mode, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+
+ return(len);
+}
guint16 (*bssmap_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string, int string_len) = {
be_cic, /* Circuit Identity Code */
@@ -4026,12 +4349,12 @@ guint16 (*bssmap_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
be_src_rnc_to_tar_rnc_umts, /* Source RNC to target RNC transparent information (UMTS) */
be_src_rnc_to_tar_rnc_cdma, /* Source RNC to target RNC transparent information (cdma2000) */
be_geran_cls_m, /* GERAN Classmark */
- NULL, /* GERAN BSC Container */
+ be_geran_bsc_cont, /* GERAN BSC Container */
be_field_element_dissect, /* New BSS to Old BSS Information */
be_inter_sys_inf, /* Inter-System Information */
be_sna_acc_inf, /* SNA Access Information */
- NULL, /* VSTK_RAND Information */
- NULL, /* VSTK Information */
+ be_vstk_rand_info, /* VSTK_RAND Information */
+ be_vstk_info, /* VSTK Information */
be_paging_inf, /* Paging Information */
de_mid, /* 3.2.2.86 IMEI (use same dissector as IMSI)*/
be_vel_est, /* Velocity Estimate */
@@ -4042,7 +4365,7 @@ guint16 (*bssmap_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
be_cell_id_list_seg, /* Cell Identifier List Segment */
be_sms_to_vgcs, /* SMS to VGCS */
be_vgcs_talker_mode,/* VGCS Talker Mode */
- NULL, /* VGCS/VBS Cell Status */
+ be_vgcs_vbs_cell_status, /* VGCS/VBS Cell Status */
be_cell_id_lst_seg_f_est_cells, /* Cell Identifier List Segment for established cells */
be_cell_id_lst_seg_f_cell_tb_est, /* Cell Identifier List Segment for cells to be established */
be_cell_id_lst_seg_f_rel_cell, /* Cell Identifier List Segment for released cells - no user present */
@@ -4050,15 +4373,18 @@ guint16 (*bssmap_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
be_ganss_ass_dta, /* GANSS Assistance Data */
be_ganss_pos_dta, /* GANSS Positioning Data */
be_ganss_loc_type, /* GANSS Location Type */
- NULL, /* Application Data */
- NULL, /* Data Identity */
+ be_app_data, /* Application Data */
+ be_app_data_id, /* Data Identity */
be_app_data_inf, /* Application Data Information */
- NULL, /* MSISDN */
+ be_msisdn, /* MSISDN */
be_aoip_trans_lay_add, /* AoIP Transport Layer Address */
be_speech_codec_lst,/* Speech Codec List */
be_speech_codec, /* Speech Codec */
be_call_id, /* Call Identifier */
be_call_id_lst, /* Call Identifier List */
+ be_a_itf_sel_for_reset, /* A-Interface Selector for RESET */
+ be_kc128, /* Kc128 */
+ be_csg_id, /* CSG Identifier */
NULL, /* NONE */
};
@@ -4150,19 +4476,19 @@ be_fe_gprs_suspend_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
static const value_string gsm_a_bssmap_dtm_info_dtm_ind_vals[] = {
{ 0, "The MS has resources allocated exclusively for the CS domain in the old cell" },
{ 1, "The MS has resources allocated for both the CS and PS domains in the old cell" },
- { 0, NULL },
+ { 0, NULL }
};
static const value_string gsm_a_bssmap_dtm_info_sto_ind_vals[] = {
{ 0, "The MS is in multislot operation in the old cell" },
{ 1, "The MS is in single timeslot operation in the old cell" },
- { 0, NULL },
+ { 0, NULL }
};
static const value_string gsm_a_bssmap_dtm_info_egprs_ind_vals[] = {
{ 0, "The MS has no TBF using E-GPRS in the old cell" },
{ 1, "The MS has a TBF using E-GPRS in the old cell" },
- { 0, NULL },
+ { 0, NULL }
};
static guint16
@@ -4205,7 +4531,7 @@ static const value_string gsm_a_bssmap_cell_load_nrt_vals[] = {
{ 1, "NRT load is medium" },
{ 2, "NRT load is high. (Probability to admit a new user is low.)" },
{ 3, "NRT overload. (Probability to admit a new user is low, packets are discarded and the source is recommended to reduce the data flow.)" },
- { 0, NULL },
+ { 0, NULL }
};
/* 3.2.3.11 Cell Load Information Group */
@@ -4379,7 +4705,7 @@ bssmap_ass_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
/* LSA Access Control Suppression 3.2.2.61 MSC-BSS O (note 8) 2 */
ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_LSA_ACC_CTRL].value, GSM_A_PDU_TYPE_BSSMAP, BE_LSA_ACC_CTRL, NULL);
/* Service Handover 3.2.2.75 MSC-BSS O (note 9) 3 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_SERV_HO].value, GSM_A_PDU_TYPE_BSSMAP, BE_SERV_HO, NULL);
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SERV_HO].value, GSM_A_PDU_TYPE_BSSMAP, BE_SERV_HO, NULL);
/* Encryption Information 3.2.2.10 MSC-BSS O (note 10) 3-n */
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_ENC_INFO].value, GSM_A_PDU_TYPE_BSSMAP, BE_ENC_INFO, NULL);
/* Talker Priority 3.2.2.89 MSC-BSS O (note 11) 2 */
@@ -4388,8 +4714,10 @@ bssmap_ass_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_AOIP_TRANS_LAY_ADD].value, GSM_A_PDU_TYPE_BSSMAP, BE_AOIP_TRANS_LAY_ADD, NULL);
/* Codec List (MSC Preferred) 3.2.2.103 MSC-BSS O (note 13) 3-n */
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC_LST].value, GSM_A_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC_LST, "(MSC Preferred)");
- /* Call Identifier 3.2.2.104 MSC-BSS O (note 12) 5 */
+ /* Call Identifier 3.2.2.105 MSC-BSS O (note 12) 5 */
ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CALL_ID].value, GSM_A_PDU_TYPE_BSSMAP, BE_CALL_ID, NULL);
+ /* Kc128 3.2.2.109 MSC-BSS C (note 15) 17 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_KC128].value, GSM_A_PDU_TYPE_BSSMAP, BE_KC128, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -4429,6 +4757,8 @@ bssmap_ass_complete(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_AOIP_TRANS_LAY_ADD].value, GSM_A_PDU_TYPE_BSSMAP, BE_AOIP_TRANS_LAY_ADD, NULL);
/* Speech Codec (Chosen) 3.2.2.104 BSS-MSC O (note 10) 3-5 */
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC].value, GSM_A_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC, "(Chosen)");
+ /* Codec List (BSS supported) 3.2.2.103 MSC-BSS O (note 11) 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC_LST].value, GSM_A_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC_LST, "(BSS Supported)");
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -4603,7 +4933,7 @@ bssmap_ho_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 o
/* LSA Access Control Suppression 3.2.2.61 MSC-BSS O (note 15) 2 */
ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_LSA_ACC_CTRL].value, GSM_A_PDU_TYPE_BSSMAP, BE_LSA_ACC_CTRL, NULL);
/* Service Handover 3.2.2.75 MSC-BSS O (note 21) 3 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_SERV_HO].value, GSM_A_PDU_TYPE_BSSMAP, BE_SERV_HO, NULL);
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SERV_HO].value, GSM_A_PDU_TYPE_BSSMAP, BE_SERV_HO, NULL);
/* IMSI 3.2.2.6 MSC-BSC O (note 16) 3-10 */
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_IMSI].value, GSM_A_PDU_TYPE_BSSMAP, BE_IMSI, NULL);
/* Source RNC to target RNC transparent information (UMTS) 3.2.2.76 MSC-BSS O (note 18) n-m */
@@ -4620,6 +4950,8 @@ bssmap_ho_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 o
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC_LST].value, GSM_A_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC_LST, "(MSC Preferred)");
/* Call Identifier 3.2.2.105 MSC-BSS O (note 24) 5 */
ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CALL_ID].value, GSM_A_PDU_TYPE_BSSMAP, BE_CALL_ID, NULL);
+ /* Kc128 3.2.2.109 MSC-BSS C (note 27) 17 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_KC128].value, GSM_A_PDU_TYPE_BSSMAP, BE_KC128, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -4663,6 +4995,8 @@ bssmap_ho_reqd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, GSM_A_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
/* Speech Codec (Used) 3.2.2.104 BSS-MSC O (note 10) 3-5 */
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC].value, GSM_A_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC, "(Used)");
+ /* CSG Identifier 3.2.2.110 BSS-MSC O (note 11) 7 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CSG_ID].value, GSM_A_PDU_TYPE_BSSMAP, BE_CSG_ID, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -4754,6 +5088,10 @@ bssmap_ho_complete(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, GSM_A_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
/* Speech Codec (Chosen) 3.2.2.nn BSS-MSC O (note 2) 3-5 */
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC].value, GSM_A_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC, "(Chosen)");
+ /* Chosen Encryption Algorithm 3.2.2.44 BSS-MSC O (note 4) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_ENC_ALG].value, GSM_A_PDU_TYPE_BSSMAP, BE_CHOSEN_ENC_ALG, NULL);
+ /* Chosen Channel 3.2.2.33 BSS-MSC O (note 5) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_CHAN].value, GSM_A_PDU_TYPE_BSSMAP, BE_CHOSEN_CHAN, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -4996,14 +5334,31 @@ bssmap_reset(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 of
/* Cause 3.2.2.5 Both M 3-4 */
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, GSM_A_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* A-Interface Selector for RESET 3.2.2.107 Both O 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_A_ITF_SEL_FOR_RESET].value, GSM_A_PDU_TYPE_BSSMAP, BE_A_ITF_SEL_FOR_RESET, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
* 3.2.1.24 RESET ACKNOWLEDGE
- * No data
*/
+void
+bssmap_reset_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+{
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ /* A-Interface Selector for RESET 3.2.2.107 Both O 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_A_ITF_SEL_FOR_RESET].value, GSM_A_PDU_TYPE_BSSMAP, BE_A_ITF_SEL_FOR_RESET, NULL);
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
+}
+
/*
* [2] 3.2.1.25 HANDOVER PERFORMED
*/
@@ -5159,6 +5514,8 @@ bssmap_ciph_mode_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gu
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_ENC_INFO].value, GSM_A_PDU_TYPE_BSSMAP, BE_ENC_INFO, NULL);
/* Cipher Response Mode 3.2.2.34 MSC-BSS O 2 */
ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CIPH_RESP_MODE].value, GSM_A_PDU_TYPE_BSSMAP, BE_CIPH_RESP_MODE, NULL);
+ /* Kc128 3.2.2.109 MSC-BSS C (note 2) 17 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_KC128].value, GSM_A_PDU_TYPE_BSSMAP, BE_KC128, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -5602,7 +5959,9 @@ bssmap_vgcs_vbs_ass_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
/* Encryption Information 3.2.2.10 MSC-BSS O 3-n */
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_ENC_INFO].value, GSM_A_PDU_TYPE_BSSMAP, BE_ENC_INFO, NULL);
/* VSTK_RAND 3.2.2.83 MSC-BSS O (note 1) 7 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_VSTK_RAND_INF].value, GSM_A_PDU_TYPE_BSSMAP, BE_VSTK_RAND_INF, NULL);
/* VSTK 3.2.2.84 MSC-BSS O (note 1) 18 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_VSTK_INF].value, GSM_A_PDU_TYPE_BSSMAP, BE_VSTK_INF, NULL);
/* Cell Identifier List Segment 3.2.2.27a MSC-BSS O (note 3) 4-? */
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CELL_ID_LIST_SEG].value, GSM_A_PDU_TYPE_BSSMAP, BE_CELL_ID_LIST_SEG, NULL);
@@ -5630,6 +5989,7 @@ bssmap_vgcs_vbs_ass_res(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
/* Circuit Identity Code 3.2.2.2 BSS-MSC O (note 5) 3 */
ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CIC].value, GSM_A_PDU_TYPE_BSSMAP, BE_CIC, NULL);
/* Circuit Pool 3.2.2.45 BSS-MSC O (note 1) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CCT_POOL].value, GSM_A_PDU_TYPE_BSSMAP, BE_CCT_POOL, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -5649,7 +6009,9 @@ bssmap_vgcs_vbs_ass_fail(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
/* Cause 3.2.2.5 BSS-MSC M 3-4 */
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, GSM_A_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
/* Circuit Pool 3.2.2.45 BSS-MSC O (note 1) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CCT_POOL].value, GSM_A_PDU_TYPE_BSSMAP, BE_CCT_POOL, NULL);
/* Circuit Pool List 3.2.2.46 BSS-MSC O (note 2) V */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CCT_POOL_LIST].value, GSM_A_PDU_TYPE_BSSMAP, BE_CCT_POOL_LIST, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -5677,6 +6039,7 @@ bssmap_uplink_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
/* Layer 3 Information 3.2.2.24 BSS-MSC O (note 1,3) 3-n */
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_L3_INFO].value, GSM_A_PDU_TYPE_BSSMAP, BE_L3_INFO, NULL);
/* Mobile Identity 3.2.2.41 BSS-MSC O (note 1,2) 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_MID].value, GSM_A_PDU_TYPE_COMMON, DE_MID, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -6121,19 +6484,50 @@ bssmap_vgcs_add_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
}
/*
* 3.2.1.79 VGCS/VBS AREA CELL INFO
- *
-Cell Identifier List Segment 3.2.2.27a MSC-BSS M 4-?
+ */
+static void
+bssmap_vgcs_vbs_area_cell_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+{
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ /* Cell Identifier List Segment 3.2.2.27a MSC-BSS M 4-? */
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CELL_ID_LIST_SEG].value, GSM_A_PDU_TYPE_BSSMAP, BE_CELL_ID_LIST_SEG, NULL);
-Assignment Requirement 3.2.2.52 MSC-BSS O 2
- *
+ /* Assignment Requirement 3.2.2.52 MSC-BSS O 2 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_ASS_REQ].value, GSM_A_PDU_TYPE_BSSMAP, BE_ASS_REQ, NULL);
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
+}
+/*
* 3.2.1.80 VGCS/VBS ASSIGNMENT STATUS
- *
-Cell Identifier List Segment for established cells 3.2.2.27b BSS-MSC O (note 1) 3-?
-Cell Identifier List Segment for cells to be established 3.2.2.27c BSS-MSC O (note 1) 3-?
-Cell Identifier List Segment for released cells - no user present 3.2.2.27e BSS-MSC O (note 1) 3-?
-Cell Identifier List Segment for not established cells - no establishment possible 3.2.2.27f BSS-MSC O (note 1) 3-?
-VGCS/VBS Cell Status 3.2.2.94 BSS-MSC O (note 2) 3
-*/
+ */
+static void
+bssmap_vgcs_vbs_assign_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+{
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ /* Cell Identifier List Segment for established cells 3.2.2.27b BSS-MSC O (note 1) 3-? */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CELL_ID_LST_SEG_F_EST_CELLS].value, GSM_A_PDU_TYPE_BSSMAP, BE_CELL_ID_LST_SEG_F_EST_CELLS, NULL);
+ /* Cell Identifier List Segment for cells to be established 3.2.2.27c BSS-MSC O (note 1) 3-? */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CELL_ID_LST_SEG_F_CELL_TB_EST].value, GSM_A_PDU_TYPE_BSSMAP, BE_CELL_ID_LST_SEG_F_CELL_TB_EST, NULL);
+ /* Cell Identifier List Segment for released cells - no user present 3.2.2.27e BSS-MSC O (note 1) 3-? */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CELL_ID_LST_SEG_F_REL_CELL].value, GSM_A_PDU_TYPE_BSSMAP, BE_CELL_ID_LST_SEG_F_REL_CELL, NULL);
+ /* Cell Identifier List Segment for not established cells - no establishment possible 3.2.2.27f BSS-MSC O (note 1) 3-? */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CELL_ID_LST_SEG_F_NOT_EST_CELL].value, GSM_A_PDU_TYPE_BSSMAP, BE_CELL_ID_LST_SEG_F_NOT_EST_CELL, NULL);
+ /* VGCS/VBS Cell Status 3.2.2.94 BSS-MSC O (note 2) 3 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_VGS_VBS_CELL_STAT].value, GSM_A_PDU_TYPE_BSSMAP, BE_VGS_VBS_CELL_STAT, NULL);
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
+}
/*
* 3.2.1.81 VGCS SMS
*/
@@ -6168,7 +6562,9 @@ bssmap_notification_data(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
/* Application Data 3.2.2.98 MSC-BSS M 11 */
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_APP_DATA_INF].value, GSM_A_PDU_TYPE_BSSMAP, BE_APP_DATA_INF, NULL);
/* Data Identity 3.2.2.99 MSC-BSS M 3 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_DATA_ID].value, GSM_A_PDU_TYPE_BSSMAP, BE_DATA_ID, NULL);
/* MSISDN 3.2.2.101 MSC-BSS O 2-12 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_MSISDN].value, GSM_A_PDU_TYPE_BSSMAP, BE_MSISDN, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -6191,7 +6587,7 @@ bssmap_int_ho_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, GSM_A_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
/* AoIP Transport Layer Address (BSS) 3.2.2.nn BSS-MSC C (Note 1) 10-22 */
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_AOIP_TRANS_LAY_ADD].value, GSM_A_PDU_TYPE_BSSMAP, BE_AOIP_TRANS_LAY_ADD, NULL);
- /* Codec List (BSS Supported) 3.2.2.nn BSS-MSC M 3-n */
+ /* Codec List (BSS Supported) 3.2.2.103 BSS-MSC M 3-n */
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC_LST].value, GSM_A_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC_LST, "(BSS Supported)");
EXTRANEOUS_DATA_CHECK(curr_len, 0);
@@ -6233,9 +6629,13 @@ bssmap_int_ho_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
/* Speech Codec (MSC Chosen) 3.2.2.nn MSC-BSS M (note 1) 3-n */
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC].value, GSM_A_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC, "(Chosen)");
/* Circuit Identity Code 3.2.2.2 MSC-BSS C (note 2) 3 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, GSM_A_PDU_TYPE_BSSMAP, BE_CIC, NULL);
- /* AoIP Transport Layer Address (MGW) 3.2.2.nn MSC-BSS C (note 2) 10-22 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CIC].value, GSM_A_PDU_TYPE_BSSMAP, BE_CIC, NULL);
+ /* AoIP Transport Layer Address (MGW) 3.2.2.102 MSC-BSS C (note 2) 10-22 */
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_AOIP_TRANS_LAY_ADD].value, GSM_A_PDU_TYPE_BSSMAP, BE_AOIP_TRANS_LAY_ADD, NULL);
+ /* Call Identifier 3.2.2.105 MSC-BSS C (note 4) 5 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CALL_ID].value, GSM_A_PDU_TYPE_BSSMAP, BE_CALL_ID, NULL);
+ /* Downlink DTX Flag 3.2.2.26 MSC-BSS O (note 5) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_DOWN_DTX_FLAG].value, GSM_A_PDU_TYPE_BSSMAP, BE_DOWN_DTX_FLAG, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -6350,7 +6750,7 @@ static void (*bssmap_msg_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pi
bssmap_perf_loc_abort, /* Perform Location Abort */
bssmap_common_id, /* Common Id */
bssmap_reset, /* Reset */
- NULL /* no associated data */, /* Reset Acknowledge */
+ bssmap_reset_ack, /* Reset Acknowledge */
bssmap_overload, /* Overload */
NULL, /* Reserved */
bssmap_reset_cct, /* Reset Circuit */
@@ -6362,8 +6762,8 @@ static void (*bssmap_msg_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pi
NULL, /* 0x39 unallocated */
NULL, /* 0x3a Connectionless Information */
- NULL, /* 0x3b VGCS/VBS ASSIGNMENT STATUS */
- NULL, /* 0x3c VGCS/VBS AREA CELL INFO */
+ bssmap_vgcs_vbs_assign_status, /* 0x3b VGCS/VBS ASSIGNMENT STATUS */
+ bssmap_vgcs_vbs_area_cell_info, /* 0x3c VGCS/VBS AREA CELL INFO */
bssmap_reset_ip_res, /* 0x3d 3.2.1.87 RESET IP RESOURCE */
bssmap_reset_ip_res_ack, /* 0x3e 3.2.1.88 RESET IP RESOURCE ACKNOWLEDGE */
NULL, /* 0x3f VGCS/VBS AREA CELL INFO */
@@ -6432,15 +6832,15 @@ dissect_bssmap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
static gsm_a_tap_rec_t tap_rec[4];
static gsm_a_tap_rec_t *tap_p;
- static guint tap_current=0;
- guint8 oct;
- guint32 offset, saved_offset;
- guint32 len;
- gint idx;
- proto_item *bssmap_item = NULL;
- proto_tree *bssmap_tree = NULL;
- const gchar *str;
- sccp_msg_info_t* sccp_msg_p;
+ static guint tap_current = 0;
+ guint8 oct;
+ guint32 offset, saved_offset;
+ guint32 len;
+ gint idx;
+ proto_item *bssmap_item = NULL;
+ proto_tree *bssmap_tree = NULL;
+ const gchar *str;
+ sccp_msg_info_t* sccp_msg_p;
sccp_msg_p = pinfo->sccp_info;
@@ -6477,13 +6877,18 @@ dissect_bssmap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
str = match_strval_idx_ext((guint32) oct, &gsm_a_bssmap_msg_strings_ext, &idx);
if (sccp_msg_p && !sccp_msg_p->data.co.label) {
- sccp_msg_p->data.co.label = se_strdup(val_to_str_ext((guint32) oct, &gsm_a_bssmap_msg_strings_ext, "BSSMAP (0x%02x)"));
+ sccp_msg_p->data.co.label = se_strdup(val_to_str_ext((guint32)oct,
+ &gsm_a_bssmap_msg_strings_ext,
+ "BSSMAP (0x%02x)"));
}
/*
* create the protocol tree
*/
- if (str == NULL)
+ /* These two conditions are actually the same, but checking idx makes it
+ * obvious we won' t use a potentially negative idx in the else case.
+ */
+ if (str == NULL || idx < 0)
{
bssmap_item =
proto_tree_add_protocol_format(tree, proto_a_bssmap, tvb, 0, len,
@@ -6522,18 +6927,18 @@ dissect_bssmap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/*
* decode elements
*/
- if (idx < 0 || bssmap_msg_fcn[idx] == NULL){
+ if (idx < 0 || bssmap_msg_fcn[idx] == NULL) {
proto_tree_add_text(bssmap_tree,
tvb, offset, len - offset,
"Message Elements");
}else{
- if (sccp_msg_p && ((sccp_msg_p->data.co.assoc->app_info & 0xCD00) == 0xCD00)){
+ if (sccp_msg_p && ((sccp_msg_p->data.co.assoc->app_info & 0xCD00) == 0xCD00)) {
cell_discriminator = sccp_msg_p->data.co.assoc->app_info & 0xFF;
}else{
cell_discriminator = 0xFF;
}
(*bssmap_msg_fcn[idx])(tvb, bssmap_tree, pinfo, offset, len - offset);
- if (sccp_msg_p){
+ if (sccp_msg_p) {
sccp_msg_p->data.co.assoc->app_info = cell_discriminator | 0xCDF0;
}
}
@@ -6559,7 +6964,7 @@ proto_register_gsm_a_bssmap(void)
},
{ &hf_gsm_a_bssmap_elem_id,
{ "Element ID", "gsm_a_bssmap.elem_id",
- FT_UINT8, BASE_DEC, NULL, 0,
+ FT_UINT8, BASE_HEX, NULL, 0,
NULL, HFILL }
},
{ &hf_gsm_a_bssmap_field_elem_id,
@@ -6588,17 +6993,17 @@ proto_register_gsm_a_bssmap(void)
NULL, HFILL }
},
{ &hf_gsm_a_bssmap_dlci_cc,
- { "Control Channel", "bssap.dlci.cc",
+ { "Control Channel", "gsm_a_bssmap.dlci.cc",
FT_UINT8, BASE_HEX, VALS(bssap_cc_values), 0xc0,
NULL, HFILL}
},
{ &hf_gsm_a_bssmap_dlci_spare,
- { "Spare", "bssap.dlci.spare",
+ { "Spare", "gsm_a_bssmap.dlci.spare",
FT_UINT8, BASE_HEX, NULL, 0x38,
NULL, HFILL}
},
{ &hf_gsm_a_bssmap_dlci_sapi,
- { "SAPI", "bssap.dlci.sapi",
+ { "SAPI", "gsm_a_bssmap.dlci.sapi",
FT_UINT8, BASE_HEX, VALS(bssap_sapi_values), 0x07,
NULL, HFILL}
},
@@ -6613,22 +7018,27 @@ proto_register_gsm_a_bssmap(void)
NULL, HFILL }
},
{ &hf_gsm_a_bssmap_pci,
- { "Preemption Capability indicator(PCI)","ggsm_a_bssmap.pci",
+ { "Preemption Capability indicator(PCI)","gsm_a_bssmap.pci",
FT_BOOLEAN,8, TFS(&bssmap_pci_value), 0x40,
NULL, HFILL }
},
{ &hf_gsm_a_bssmap_qa,
- { "Queuing Allowed Indicator(QA)","ggsm_a_bssmap.qa",
+ { "Queuing Allowed Indicator(QA)","gsm_a_bssmap.qa",
FT_BOOLEAN,8, TFS(&tfs_allowed_not_allowed), 0x02,
NULL, HFILL }
},
{ &hf_gsm_a_bssmap_pvi,
- { "Preemption Vulnerability Indicator(PVI)","ggsm_a_bssmap.pvi",
+ { "Preemption Vulnerability Indicator(PVI)","gsm_a_bssmap.pvi",
FT_BOOLEAN,8, TFS(&bssmap_pvi_value), 0x01,
NULL, HFILL }
},
+ { &hf_gsm_a_bssmap_interference_bands,
+ { "Acceptable interference bands","gsm_a_bssmap.interference_bands",
+ FT_UINT8, BASE_HEX, NULL, 0x01f,
+ NULL, HFILL }
+ },
{ &hf_gsm_a_bssmap_lsa_only,
- { "LSA only","ggsm_a_bssmap.lsa_only",
+ { "LSA only","gsm_a_bssmap.lsa_only",
FT_BOOLEAN,8, TFS(&bssmap_lsa_only_value), 0x01,
NULL, HFILL }
},
@@ -6667,6 +7077,26 @@ proto_register_gsm_a_bssmap(void)
FT_UINT8,BASE_DEC, VALS(gsm_a_bssap_resource_indication_vals), 0xf,
NULL, HFILL }
},
+ { &hf_gsm_a_bssap_cic_list_range,
+ { "Range","gsm_a_bssmap.cic_list_range",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssap_cic_list_status,
+ { "Status","gsm_a_bssmap.cic_list_status",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssap_diag_error_pointer,
+ { "Error pointer","gsm_a_bssmap.diag_error_pointer",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssap_diag_msg_rcv,
+ { "Message received","gsm_a_bssmap.cic_list_status",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }
+ },
{ &hf_gsm_a_bssmap_ch_mode,
{ "Channel mode","gsm_a_bssmap.cch_mode",
FT_UINT8,BASE_DEC, VALS(gsm_a_bssmap_ch_mode_vals), 0xf0,
@@ -6782,13 +7212,28 @@ proto_register_gsm_a_bssmap(void)
FT_UINT8, BASE_DEC,VALS(gsm_a_bssmap_talker_pri_vals), 0x03,
NULL, HFILL }
},
+ { &hf_gsm_a_bssmap_rr_mode,
+ { "RR mode", "gsm_a_bssmap.rr_mode",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_bssmap_rr_mode_vals), 0xc0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_group_cipher_key_nb,
+ { "Group cipher key number", "gsm_a_bssmap.group_cipher_key_nb",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_bssmap_group_cipher_key_nb_vals), 0x3c,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_vgcs_vbs_cell_status,
+ { "Status", "gsm_a_bssmap.vgcs_vbs_cell_status",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_bssmap_vgcs_vbs_cell_status_vals), 0x07,
+ NULL, HFILL }
+ },
{ &hf_gsm_a_bssmap_paging_cause,
{ "Paging Cause", "gsm_a_bssmap.paging_cause",
FT_UINT8, BASE_DEC,VALS(gsm_a_bssmap_paging_cause_vals), 0x06,
NULL, HFILL }
},
{ &hf_gsm_a_bssmap_paging_inf_flg,
- { "VGCS/VBS flag","ggsm_a_bssmap.paging_inf_flg",
+ { "VGCS/VBS flag","gsm_a_bssmap.paging_inf_flg",
FT_BOOLEAN,8, TFS(&bssmap_paging_inf_flg_value), 0x01,
"If 1, a member of a VGCS/VBS-group", HFILL }
},
@@ -6797,6 +7242,71 @@ proto_register_gsm_a_bssmap(void)
FT_UINT8, BASE_HEX, NULL, 0x07,
NULL, HFILL }
},
+ { &hf_gsm_a_bssmap_max_nb_traffic_chan,
+ { "Maximum Number of Traffic Channels", "gsm_a_bssmap.max_nb_traffic_chan",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_max_nb_traffic_chan_vals), 0x07,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_acceptable_chan_coding_bit5,
+ { "TCH/F43.2", "gsm_a_bssmap.acceptable_chan_coding_bit5",
+ FT_BOOLEAN, 8, TFS(&gsm_a_bssmap_accept_not_accept_vals), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_acceptable_chan_coding_bit4,
+ { "TCH/F43.2", "gsm_a_bssmap.acceptable_chan_coding_bit4",
+ FT_BOOLEAN, 8, TFS(&gsm_a_bssmap_accept_not_accept_vals), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_acceptable_chan_coding_bit3,
+ { "TCH/F43.2", "gsm_a_bssmap.acceptable_chan_coding_bit3",
+ FT_BOOLEAN, 8, TFS(&gsm_a_bssmap_accept_not_accept_vals), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_acceptable_chan_coding_bit2,
+ { "TCH/F43.2", "gsm_a_bssmap.acceptable_chan_coding_bit2",
+ FT_BOOLEAN, 8, TFS(&gsm_a_bssmap_accept_not_accept_vals), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_acceptable_chan_coding_bit1,
+ { "TCH/F43.2", "gsm_a_bssmap.acceptable_chan_coding_bit1",
+ FT_BOOLEAN, 8, TFS(&gsm_a_bssmap_accept_not_accept_vals), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_allowed_data_rate_bit8,
+ { "43.5 kbit/s (TCH/F43.2)", "gsm_a_bssmap.allowed_data_rate_bit8",
+ FT_BOOLEAN, 8, TFS(&tfs_allowed_not_allowed), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_allowed_data_rate_bit7,
+ { "32.0 kbit/s (TCH/F32.0)", "gsm_a_bssmap.allowed_data_rate_bit7",
+ FT_BOOLEAN, 8, TFS(&tfs_allowed_not_allowed), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_allowed_data_rate_bit6,
+ { "29.0 kbit/s (TCH/F28.8)", "gsm_a_bssmap.allowed_data_rate_bit6",
+ FT_BOOLEAN, 8, TFS(&tfs_allowed_not_allowed), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_allowed_data_rate_bit5,
+ { "14.5/14.4 kbit/s (TCH/F14.4)", "gsm_a_bssmap.allowed_data_rate_bit5",
+ FT_BOOLEAN, 8, TFS(&tfs_allowed_not_allowed), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_allowed_data_rate_bit4,
+ { "12.0/9.6 kbit/s (TCH F/9.6)", "gsm_a_bssmap.allowed_data_rate_bit4",
+ FT_BOOLEAN, 8, TFS(&tfs_allowed_not_allowed), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_vstk_rand,
+ { "VSTK_RAND", "gsm_a_bssmap.vstk_rand",
+ FT_UINT64, BASE_HEX, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_vstk,
+ { "VSTK", "gsm_a_bssmap.vstk",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }
+ },
{ &hf_gsm_a_bssmap_spare_bits,
{ "Spare bit(s)", "gsm_a_bssmap.spare_bits",
@@ -6848,6 +7358,16 @@ proto_register_gsm_a_bssmap(void)
FT_UINT8, BASE_DEC,VALS(gsm_a_bssmap_usage_vals), 0x07,
NULL, HFILL }
},
+ { &hf_gsm_a_bssmap_data_id,
+ { "Data Identity","gsm_a_bssmap.data_id",
+ FT_UINT8, BASE_DEC_HEX, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_bt_ind,
+ { "BT Ind","gsm_a_bssmap.bt_ind",
+ FT_BOOLEAN, 8, TFS(&gsm_a_bssmap_bt_ind_val), 0x01,
+ NULL, HFILL }
+ },
{ &hf_gsm_a_bssmap_aoip_trans_ipv4,
{ "Transport Layer Address (IPv4)","gsm_a_bssmap.aoip_trans_ipv4",
FT_IPv4,BASE_NONE, NULL, 0x0,
@@ -6973,6 +7493,31 @@ proto_register_gsm_a_bssmap(void)
FT_UINT8, BASE_HEX, VALS(gsm_a_bssmap_call_priority_vals), 0x07,
NULL, HFILL }
},
+ { &hf_gsm_a_bssmap_rip,
+ { "RIP", "gsm_a_bssmap.rip",
+ FT_BOOLEAN, 8, TFS(&gsm_a_bssmap_rip_value), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_rtd,
+ { "RTD", "gsm_a_bssmap.rtd",
+ FT_BOOLEAN, 8, TFS(&gsm_a_bssmap_rtd_value), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_kc128,
+ { "Kc128", "gsm_a_bssmap.kc128",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_csg_id,
+ { "CSG Identity", "gsm_a_bssmap.csg_id",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_cell_access_mode,
+ { "Cell Access Mode", "gsm_a_bssmap.cell_access_mode",
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_bssmap_cell_access_mode_value), 0,
+ NULL, HFILL }
+ },
{ &hf_fe_extra_info_prec,
{ "Pre-emption Recommendation", "fe_extra_info.prec",
@@ -7122,9 +7667,11 @@ proto_reg_handoff_gsm_a_bssmap(void)
bssmap_handle = find_dissector("gsm_a_bssmap");
dissector_add_uint("bssap.pdu_type", GSM_A_PDU_TYPE_BSSMAP, bssmap_handle);
- dtap_handle = find_dissector("gsm_a_dtap");
+ dtap_handle = find_dissector("gsm_a_dtap");
gsm_bsslap_handle = find_dissector("gsm_bsslap");
- bssgp_handle = find_dissector ("bssgp");
- rrc_handle = find_dissector ("rrc");
+ bssgp_handle = find_dissector ("bssgp");
+ rrc_handle = find_dissector ("rrc");
+ rtp_handle = find_dissector("rtp");
+
}
diff --git a/epan/dissectors/packet-gsm_a_common.c b/epan/dissectors/packet-gsm_a_common.c
index c1e920f323..7331e37e1f 100644
--- a/epan/dissectors/packet-gsm_a_common.c
+++ b/epan/dissectors/packet-gsm_a_common.c
@@ -31,9 +31,10 @@
# include "config.h"
#endif
-#include <stdlib.h>
#include <math.h>
+#include <glib.h>
+
#include <epan/packet.h>
#include <epan/expert.h>
#include <epan/tap.h>
@@ -45,22 +46,26 @@
const value_string gsm_common_elem_strings[] = {
- /* Common Information Elements 10.5.1 */
- { 0x00, "Cell Identity" },
- { 0x00, "Ciphering Key Sequence Number" },
- { 0x00, "Location Area Identification (LAI)" },
- { 0x00, "Mobile Identity" },
- { 0x00, "Mobile Station Classmark 1" },
- { 0x00, "Mobile Station Classmark 2" },
- { 0x00, "Mobile Station Classmark 3" },
- { 0x00, "Spare Half Octet" },
- { 0x00, "Descriptive group or broadcast call reference" },
- { 0x00, "Group Cipher Key Number" },
- { 0x00, "PD and SAPI $(CCBS)$" },
- { 0x00, "Priority Level" },
- { 0x00, "PLMN List" },
- { 0x00, "NAS container for PS HO" },
- { 0, NULL }
+ /* Common Information Elements 10.5.1 */
+ { 0x00, "Cell Identity" },
+ { 0x00, "Ciphering Key Sequence Number" },
+ { 0x00, "Location Area Identification (LAI)" },
+ { 0x00, "Mobile Identity" },
+ { 0x00, "Mobile Station Classmark 1" },
+ { 0x00, "Mobile Station Classmark 2" },
+ { 0x00, "Mobile Station Classmark 3" },
+ { 0x00, "Spare Half Octet" },
+ { 0x00, "Descriptive group or broadcast call reference" },
+ { 0x00, "Group Cipher Key Number" },
+ { 0x00, "PD and SAPI $(CCBS)$" },
+ { 0x00, "Priority Level" },
+ { 0x00, "CN Common GSM-MAP NAS system information" },
+ { 0x00, "CS domain specific system information" },
+ { 0x00, "PS domain specific system information" },
+ { 0x00, "PLMN List" },
+ { 0x00, "NAS container for PS HO" },
+ { 0x00, "MS network feature support" },
+ { 0, NULL }
};
/* Mobile Station Classmark Value strings
@@ -70,198 +75,198 @@ const value_string gsm_common_elem_strings[] = {
* Revision level
*/
static const value_string gsm_a_msc_rev_vals[] = {
- { 0, "Reserved for GSM phase 1"},
- { 1, "Used by GSM phase 2 mobile stations"},
- { 2, "Used by mobile stations supporting R99 or later versions of the protocol"},
- { 3, "Reserved for future use"},
- { 0, NULL }
+ { 0, "Reserved for GSM phase 1"},
+ { 1, "Used by GSM phase 2 mobile stations"},
+ { 2, "Used by mobile stations supporting R99 or later versions of the protocol"},
+ { 3, "Reserved for future use"},
+ { 0, NULL }
};
/* ES IND (octet 3, bit 5) "Controlled Early Classmark Sending" option implementation */
static const true_false_string ES_IND_vals = {
- "Controlled Early Classmark Sending option is implemented in the MS",
- "Controlled Early Classmark Sending option is not implemented in the MS"
+ "Controlled Early Classmark Sending option is implemented in the MS",
+ "Controlled Early Classmark Sending option is not implemented in the MS"
};
/* A5/1 algorithm supported (octet 3, bit 4) */
static const true_false_string A5_1_algorithm_sup_vals = {
- "encryption algorithm A5/1 not available",
- "encryption algorithm A5/1 available"
+ "encryption algorithm A5/1 not available",
+ "encryption algorithm A5/1 available"
};
/* RF Power Capability (Octet 3) */
static const value_string RF_power_capability_vals[] = {
- { 0, "class 1"},
- { 1, "class 2"},
- { 2, "class 3"},
- { 3, "class 4"},
- { 4, "class 5"},
- { 7, "RF Power capability is irrelevant in this information element"},
- { 0, NULL }
+ { 0, "class 1"},
+ { 1, "class 2"},
+ { 2, "class 3"},
+ { 3, "class 4"},
+ { 4, "class 5"},
+ { 7, "RF Power capability is irrelevant in this information element"},
+ { 0, NULL }
};
/* PS capability (pseudo-synchronization capability) (octet 4) */
static const true_false_string ps_sup_cap_vals = {
- "PS capability present",
- "PS capability not present"
+ "PS capability present",
+ "PS capability not present"
};
/* SS Screening Indicator (octet 4)defined in 3GPP TS 24.080 */
static const value_string SS_screening_indicator_vals[] = {
- { 0, "Default value of phase 1"},
- { 1, "Capability of handling of ellipsis notation and phase 2 error handling "},
- { 2, "For future use"},
- { 3, "For future use"},
- { 0, NULL }
+ { 0, "Default value of phase 1"},
+ { 1, "Capability of handling of ellipsis notation and phase 2 error handling "},
+ { 2, "For future use"},
+ { 3, "For future use"},
+ { 0, NULL }
};
/* SM capability (MT SMS pt to pt capability) (octet 4)*/
static const true_false_string SM_capability_vals = {
- "Mobile station supports mobile terminated point to point SMS",
- "Mobile station does not support mobile terminated point to point SMS"
+ "Mobile station supports mobile terminated point to point SMS",
+ "Mobile station does not support mobile terminated point to point SMS"
};
/* VBS notification reception (octet 4) */
static const true_false_string VBS_notification_rec_vals = {
- "VBS capability and notifications wanted",
- "no VBS capability or no notifications wanted"
+ "VBS capability and notifications wanted",
+ "no VBS capability or no notifications wanted"
};
/* VGCS notification reception (octet 4) */
static const true_false_string VGCS_notification_rec_vals = {
- "VGCS capability and notifications wanted",
- "no VGCS capability or no notifications wanted"
+ "VGCS capability and notifications wanted",
+ "no VGCS capability or no notifications wanted"
};
/* FC Frequency Capability (octet 4 ) */
static const true_false_string FC_frequency_cap_vals = {
- "The MS does support the E-GSM or R-GSM",
- "The MS does not support the E-GSM or R-GSM band"
+ "The MS does support the E-GSM or R-GSM",
+ "The MS does not support the E-GSM or R-GSM band"
};
/* CM3 (octet 5, bit 8) */
static const true_false_string CM3_vals = {
- "The MS supports options that are indicated in classmark 3 IE",
- "The MS does not support any options that are indicated in CM3"
+ "The MS supports options that are indicated in classmark 3 IE",
+ "The MS does not support any options that are indicated in CM3"
};
/* LCS VA capability (LCS value added location request notification capability) (octet 5,bit 6) */
static const true_false_string LCS_VA_cap_vals = {
- "LCS value added location request notification capability supported",
- "LCS value added location request notification capability not supported"
+ "LCS value added location request notification capability supported",
+ "LCS value added location request notification capability not supported"
};
/* UCS2 treatment (octet 5, bit 5) */
static const true_false_string UCS2_treatment_vals = {
- "the ME has no preference between the use of the default alphabet and the use of UCS2",
- "the ME has a preference for the default alphabet"
+ "the ME has no preference between the use of the default alphabet and the use of UCS2",
+ "the ME has a preference for the default alphabet"
};
/* SoLSA (octet 5, bit 4) */
static const true_false_string SoLSA_vals = {
- "The ME supports SoLSA",
- "The ME does not support SoLSA"
+ "The ME supports SoLSA",
+ "The ME does not support SoLSA"
};
/* CMSP: CM Service Prompt (octet 5, bit 3) */
static const true_false_string CMSP_vals = {
- "Network initiated MO CM connection request supported for at least one CM protocol",
- "Network initiated MO CM connection request not supported"
+ "Network initiated MO CM connection request supported for at least one CM protocol",
+ "Network initiated MO CM connection request not supported"
};
/* A5/7 algorithm supported */
static const true_false_string A5_7_algorithm_sup_vals = {
- "encryption algorithm A5/7 available",
- "encryption algorithm A5/7 not available"
+ "encryption algorithm A5/7 available",
+ "encryption algorithm A5/7 not available"
};
/* A5/6 algorithm supported */
static const true_false_string A5_6_algorithm_sup_vals = {
- "encryption algorithm A5/6 available",
- "encryption algorithm A5/6 not available"
+ "encryption algorithm A5/6 available",
+ "encryption algorithm A5/6 not available"
};
/* A5/5 algorithm supported */
static const true_false_string A5_5_algorithm_sup_vals = {
- "encryption algorithm A5/5 available",
- "encryption algorithm A5/5 not available"
+ "encryption algorithm A5/5 available",
+ "encryption algorithm A5/5 not available"
};
/* A5/4 algorithm supported */
static const true_false_string A5_4_algorithm_sup_vals = {
- "encryption algorithm A5/4 available",
- "encryption algorithm A5/4 not available"
+ "encryption algorithm A5/4 available",
+ "encryption algorithm A5/4 not available"
};
/* A5/3 algorithm supported (octet 5, bit 2) */
static const true_false_string A5_3_algorithm_sup_vals = {
- "encryption algorithm A5/3 available",
- "encryption algorithm A5/3 not available"
+ "encryption algorithm A5/3 available",
+ "encryption algorithm A5/3 not available"
};
/* A5/2 algorithm supported (octet 5, bit 1) */
static const true_false_string A5_2_algorithm_sup_vals = {
- "encryption algorithm A5/2 available",
- "encryption algorithm A5/2 not available"
+ "encryption algorithm A5/2 available",
+ "encryption algorithm A5/2 not available"
};
static const value_string mobile_identity_type_vals[] = {
- { 1, "IMSI"},
- { 2, "IMEI"},
- { 3, "IMEISV"},
- { 4, "TMSI/P-TMSI"},
- { 5, "TMGI and optional MBMS Session Identity"}, /* ETSI TS 124 008 V6.8.0 (2005-03) p326 */
- { 0, "No Identity"},
- { 0, NULL }
+ { 1, "IMSI"},
+ { 2, "IMEI"},
+ { 3, "IMEISV"},
+ { 4, "TMSI/P-TMSI"},
+ { 5, "TMGI and optional MBMS Session Identity"}, /* ETSI TS 124 008 V6.8.0 (2005-03) p326 */
+ { 0, "No Identity"},
+ { 0, NULL }
};
static const true_false_string oddevenind_vals = {
- "Odd number of identity digits",
- "Even number of identity digits"
+ "Odd number of identity digits",
+ "Even number of identity digits"
};
static const true_false_string true_false_vals = {
- "true",
- "false"
+ "true",
+ "false"
};
const value_string gsm_a_sms_vals[] = {
- {0, "1/4 timeslot (~144 microseconds)" },
- {1, "2/4 timeslot (~288 microseconds)" },
- {2, "3/4 timeslot (~433 microseconds)" },
- {3, "4/4 timeslot (~577 microseconds)" },
- {4, "5/4 timeslot (~721 microseconds)" },
- {5, "6/4 timeslot (~865 microseconds)" },
- {6, "7/4 timeslot (~1009 microseconds)" },
- {7, "8/4 timeslot (~1154 microseconds)" },
- {8, "9/4 timeslot (~1298 microseconds)" },
- {9, "10/4 timeslot (~1442 microseconds)" },
- {10, "11/4 timeslot (~1586 microseconds)" },
- {11, "12/4 timeslot (~1730 microseconds)" },
- {12, "13/4 timeslot (~1874 microseconds)" },
- {13, "14/4 timeslot (~2019 microseconds)" },
- {14, "15/4 timeslot (~2163 microseconds)" },
- {15, "16/4 timeslot (~2307 microseconds)" },
- { 0, NULL}
+ { 0, "1/4 timeslot (~144 microseconds)" },
+ { 1, "2/4 timeslot (~288 microseconds)" },
+ { 2, "3/4 timeslot (~433 microseconds)" },
+ { 3, "4/4 timeslot (~577 microseconds)" },
+ { 4, "5/4 timeslot (~721 microseconds)" },
+ { 5, "6/4 timeslot (~865 microseconds)" },
+ { 6, "7/4 timeslot (~1009 microseconds)" },
+ { 7, "8/4 timeslot (~1154 microseconds)" },
+ { 8, "9/4 timeslot (~1298 microseconds)" },
+ { 9, "10/4 timeslot (~1442 microseconds)" },
+ { 10, "11/4 timeslot (~1586 microseconds)" },
+ { 11, "12/4 timeslot (~1730 microseconds)" },
+ { 12, "13/4 timeslot (~1874 microseconds)" },
+ { 13, "14/4 timeslot (~2019 microseconds)" },
+ { 14, "15/4 timeslot (~2163 microseconds)" },
+ { 15, "16/4 timeslot (~2307 microseconds)" },
+ { 0, NULL}
};
static const true_false_string ms_assisted_e_otd_vals = {
- "MS assisted E-OTD supported",
- "MS assisted E-OTD not supported"
+ "MS assisted E-OTD supported",
+ "MS assisted E-OTD not supported"
};
static const true_false_string ms_based_e_otd_vals = {
- "MS based E-OTD supported",
- "MS based E-OTD not supported"
+ "MS based E-OTD supported",
+ "MS based E-OTD not supported"
};
static const true_false_string ms_assisted_gps_vals = {
- "MS assisted GPS supported",
- "MS assisted GPS not supported"
+ "MS assisted GPS supported",
+ "MS assisted GPS not supported"
};
static const true_false_string ms_based_gps_vals = {
- "MS based GPS supported",
- "MS based GPS not supported"
+ "MS based GPS supported",
+ "MS based GPS not supported"
};
static const true_false_string ms_conventional_gps_vals = {
- "Conventional GPS supported",
- "Conventional GPS not supported"
+ "Conventional GPS supported",
+ "Conventional GPS not supported"
};
static const true_false_string modulation_capability_vals = {
- "8-PSK supported for uplink transmission and downlink reception",
- "8-PSK supported for downlink reception only"
+ "8-PSK supported for uplink transmission and downlink reception",
+ "8-PSK supported for downlink reception only"
};
static const value_string eight_psk_rf_power_capability_vals[] = {
- { 0, "Reserved" },
- { 1, "Power class E1" },
- { 2, "Power class E2" },
- { 3, "Power class E3" },
- { 0, NULL}
+ { 0, "Reserved" },
+ { 1, "Power class E1" },
+ { 2, "Power class E2" },
+ { 3, "Power class E3" },
+ { 0, NULL}
};
static const value_string gsm_400_bands_supported_vals[] = {
@@ -272,81 +277,81 @@ static const value_string gsm_400_bands_supported_vals[] = {
};
static const true_false_string umts_fdd_rat_cap_vals = {
- "UMTS FDD supported",
- "UMTS FDD not supported"
+ "UMTS FDD supported",
+ "UMTS FDD not supported"
};
static const true_false_string umts_384_mcps_tdd_rat_cap_vals = {
- "UMTS 3.84 Mcps TDD supported",
- "UMTS 3.84 Mcps TDD not supported"
+ "UMTS 3.84 Mcps TDD supported",
+ "UMTS 3.84 Mcps TDD not supported"
};
static const true_false_string cdma_2000_rat_cap_vals = {
- "CDMA 2000 supported",
- "CDMA 2000 not supported"
+ "CDMA 2000 supported",
+ "CDMA 2000 not supported"
};
static const value_string dtm_gprs_multi_slot_class_vals[] = {
- { 0, "Unused. If received, the network shall interpret this as 1" },
- { 1, "Multislot class 5 supported" },
- { 2, "Multislot class 9 supported" },
- { 3, "Multislot class 11 supported" },
- { 0, NULL}
+ { 0, "Unused. If received, the network shall interpret this as 1" },
+ { 1, "Multislot class 5 supported" },
+ { 2, "Multislot class 9 supported" },
+ { 3, "Multislot class 11 supported" },
+ { 0, NULL}
};
static const true_false_string single_slot_dtm_vals = {
- "Single Slot DTM supported",
- "Single Slot DTM not supported"
+ "Single Slot DTM supported",
+ "Single Slot DTM not supported"
};
static const value_string gsm_band_vals[] = {
- { 0, "E-GSM is supported" },
- { 1, "P-GSM is supported" },
- { 2, "GSM 1800 is supported" },
- { 3, "GSM 450 is supported" },
- { 4, "GSM 480 is supported" },
- { 5, "GSM 850 is supported" },
- { 6, "GSM 1900 is supported" },
- { 7, "GSM 750 is supported" },
- { 8, "GSM 710 is supported" },
- { 9, "T-GSM 810 is supported" },
- { 0, NULL}
+ { 0, "E-GSM is supported" },
+ { 1, "P-GSM is supported" },
+ { 2, "GSM 1800 is supported" },
+ { 3, "GSM 450 is supported" },
+ { 4, "GSM 480 is supported" },
+ { 5, "GSM 850 is supported" },
+ { 6, "GSM 1900 is supported" },
+ { 7, "GSM 750 is supported" },
+ { 8, "GSM 710 is supported" },
+ { 9, "T-GSM 810 is supported" },
+ { 0, NULL}
};
static const true_false_string umts_128_mcps_tdd_rat_cap_vals = {
- "UMTS 1.28 Mcps TDD supported",
- "UMTS 1.28 Mcps TDD not supported"
+ "UMTS 1.28 Mcps TDD supported",
+ "UMTS 1.28 Mcps TDD not supported"
};
static const true_false_string geran_feature_package_1_vals = {
- "GERAN feature package 1 supported",
- "GERAN feature package 1 not supported"
+ "GERAN feature package 1 supported",
+ "GERAN feature package 1 not supported"
};
static const true_false_string flo_iu_cap_vals = {
- "FLO in GERAN Iu Mode supported",
- "FLO in GERAN Iu Mode not supported"
+ "FLO in GERAN Iu Mode supported",
+ "FLO in GERAN Iu Mode not supported"
};
static const true_false_string geran_feature_package_2_vals = {
- "GERAN feature package 2 supported",
- "GERAN feature package 2 not supported"
+ "GERAN feature package 2 supported",
+ "GERAN feature package 2 not supported"
};
static const value_string gmsk_multislot_power_prof_vals[] = {
- { 0, "GMSK_MULTISLOT_POWER_PROFILE 0" },
- { 1, "GMSK_MULTISLOT_POWER_PROFILE 1" },
- { 2, "GMSK_MULTISLOT_POWER_PROFILE 2" },
- { 3, "GMSK_MULTISLOT_POWER_PROFILE 3" },
- { 0, NULL}
+ { 0, "GMSK_MULTISLOT_POWER_PROFILE 0" },
+ { 1, "GMSK_MULTISLOT_POWER_PROFILE 1" },
+ { 2, "GMSK_MULTISLOT_POWER_PROFILE 2" },
+ { 3, "GMSK_MULTISLOT_POWER_PROFILE 3" },
+ { 0, NULL}
};
static const value_string eight_psk_multislot_power_prof_vals[] = {
- { 0, "8-PSK_MULTISLOT_POWER_PROFILE 0" },
- { 1, "8-PSK_MULTISLOT_POWER_PROFILE 1" },
- { 2, "8-PSK_MULTISLOT_POWER_PROFILE 2" },
- { 3, "8-PSK_MULTISLOT_POWER_PROFILE 3" },
- { 0, NULL}
+ { 0, "8-PSK_MULTISLOT_POWER_PROFILE 0" },
+ { 1, "8-PSK_MULTISLOT_POWER_PROFILE 1" },
+ { 2, "8-PSK_MULTISLOT_POWER_PROFILE 2" },
+ { 3, "8-PSK_MULTISLOT_POWER_PROFILE 3" },
+ { 0, NULL}
};
static const value_string t_gsm_400_bands_supported_vals[] = {
@@ -364,143 +369,150 @@ static const value_string downlink_adv_receiver_perf_vals[] = {
};
static const true_false_string dtm_enhancements_cap_vals = {
- "The mobile station supports enhanced DTM CS establishment and release procedures",
- "The mobile station does not support enhanced DTM CS establishment and release procedures"
+ "The mobile station supports enhanced DTM CS establishment and release procedures",
+ "The mobile station does not support enhanced DTM CS establishment and release procedures"
};
static const true_false_string offset_required_vals = {
- "The mobile station requires the offset",
- "The mobile station does not require the offset"
+ "The mobile station requires the offset",
+ "The mobile station does not require the offset"
};
static const value_string dtm_gprs_high_multi_slot_class_vals[] = {
- { 0, "Unused. If received, the network shall interpret this as \"0 0 1\"" },
- { 1, "Multislot class 31 or 36 supported" },
- { 2, "Multislot class 32 or 37 supported" },
- { 3, "Multislot class 33 or 38 supported" },
- { 4, "Multislot class 41 supported" },
- { 5, "Multislot class 42 supported" },
- { 6, "Multislot class 43 supported" },
- { 7, "Multislot class 44 supported" },
- { 0, NULL}
+ { 0, "Unused. If received, the network shall interpret this as \"0 0 1\"" },
+ { 1, "Multislot class 31 or 36 supported" },
+ { 2, "Multislot class 32 or 37 supported" },
+ { 3, "Multislot class 33 or 38 supported" },
+ { 4, "Multislot class 41 supported" },
+ { 5, "Multislot class 42 supported" },
+ { 6, "Multislot class 43 supported" },
+ { 7, "Multislot class 44 supported" },
+ { 0, NULL}
};
static const true_false_string repeated_acch_cap_vals = {
- "The mobile station supports Repeated SACCH and Repeated Downlink FACCH",
- "The mobile station does not support Repeated SACCH"
+ "The mobile station supports Repeated SACCH and Repeated Downlink FACCH",
+ "The mobile station does not support Repeated SACCH"
};
static const true_false_string ciphering_mode_setting_cap_vals = {
- "The mobile station supports the Ciphering Mode Setting IE in the DTM ASSIGNMENT COMMAND message",
- "The mobile station does not support the Ciphering Mode Setting IE in the DTM ASSIGNMENT COMMAND message"
+ "The mobile station supports the Ciphering Mode Setting IE in the DTM ASSIGNMENT COMMAND message",
+ "The mobile station does not support the Ciphering Mode Setting IE in the DTM ASSIGNMENT COMMAND message"
};
static const true_false_string additional_positioning_caps_vals = {
- "The mobile station supports additional positioning capabilities which can be retrieved using RRLP",
- "The mobile station does not support additional positioning capabilities which can be retrieved using RRLP"
+ "The mobile station supports additional positioning capabilities which can be retrieved using RRLP",
+ "The mobile station does not support additional positioning capabilities which can be retrieved using RRLP"
};
static const true_false_string e_utra_fdd_support_vals = {
- "E-UTRA FDD supported",
- "E-UTRA FDD not supported"
+ "E-UTRA FDD supported",
+ "E-UTRA FDD not supported"
};
static const true_false_string e_utra_tdd_support_vals = {
- "E-UTRA TDD supported",
- "E-UTRA TDD not supported"
+ "E-UTRA TDD supported",
+ "E-UTRA TDD not supported"
};
static const true_false_string e_utra_meas_and_report_support_vals = {
- "E-UTRAN Neighbour Cell measurements and measurement reporting while having an RR connection supported",
- "E-UTRAN Neighbour Cell measurements and measurement reporting while having an RR connection not supported"
+ "E-UTRAN Neighbour Cell measurements and measurement reporting while having an RR connection supported",
+ "E-UTRAN Neighbour Cell measurements and measurement reporting while having an RR connection not supported"
};
static const true_false_string prio_based_resel_support_vals = {
- "Priority-based cell reselection supported",
- "Priority-based cell reselection not supported"
+ "Priority-based cell reselection supported",
+ "Priority-based cell reselection not supported"
};
static const true_false_string utra_csg_cells_reporting_vals = {
- "Reporting of UTRAN CSG cells supported",
- "Reporting of UTRAN CSG cells not supported"
+ "Reporting of UTRAN CSG cells supported",
+ "Reporting of UTRAN CSG cells not supported"
};
static const value_string vamos_level_vals[] = {
{ 0, "VAMOS not supported" },
- { 1, "VAMOS I supported" },
- { 2, "VAMOS II supported" },
- { 3, "Unused. If received, the network shall interpret this as VAMOS II supported" },
- { 0, NULL}
+ { 1, "VAMOS I supported" },
+ { 2, "VAMOS II supported" },
+ { 3, "Unused. If received, the network shall interpret this as VAMOS II supported" },
+ { 0, NULL}
};
-static const value_string gsm_a_rr_rxlev_vals [] = {
- { 0, "< -110 dBm"},
- { 1, "-110 <= x < -109 dBm"},
- { 2, "-109 <= x < -108 dBm"},
- { 3, "-108 <= x < -107 dBm"},
- { 4, "-107 <= x < -106 dBm"},
- { 5, "-106 <= x < -105 dBm"},
- { 6, "-105 <= x < -104 dBm"},
- { 7, "-104 <= x < -103 dBm"},
- { 8, "-103 <= x < -102 dBm"},
- { 9, "-102 <= x < -101 dBm"},
- {10, "-101 <= x < -100 dBm"},
- {11, "-100 <= x < -99 dBm"},
- {12, "-99 <= x < -98 dBm"},
- {13, "-98 <= x < -97 dBm"},
- {14, "-97 <= x < -96 dBm"},
- {15, "-96 <= x < -95 dBm"},
- {16, "-95 <= x < -94 dBm"},
- {17, "-94 <= x < -93 dBm"},
- {18, "-93 <= x < -92 dBm"},
- {19, "-92 <= x < -91 dBm"},
- {20, "-91 <= x < -90 dBm"},
- {21, "-90 <= x < -89 dBm"},
- {22, "-89 <= x < -88 dBm"},
- {23, "-88 <= x < -87 dBm"},
- {24, "-87 <= x < -86 dBm"},
- {25, "-86 <= x < -85 dBm"},
- {26, "-85 <= x < -84 dBm"},
- {27, "-84 <= x < -83 dBm"},
- {28, "-83 <= x < -82 dBm"},
- {29, "-82 <= x < -81 dBm"},
- {30, "-81 <= x < -80 dBm"},
- {31, "-80 <= x < -79 dBm"},
- {32, "-79 <= x < -78 dBm"},
- {33, "-78 <= x < -77 dBm"},
- {34, "-77 <= x < -76 dBm"},
- {35, "-76 <= x < -75 dBm"},
- {36, "-75 <= x < -74 dBm"},
- {37, "-74 <= x < -73 dBm"},
- {38, "-73 <= x < -72 dBm"},
- {39, "-72 <= x < -71 dBm"},
- {40, "-71 <= x < -70 dBm"},
- {41, "-70 <= x < -69 dBm"},
- {42, "-69 <= x < -68 dBm"},
- {43, "-68 <= x < -67 dBm"},
- {44, "-67 <= x < -66 dBm"},
- {45, "-66 <= x < -65 dBm"},
- {46, "-65 <= x < -64 dBm"},
- {47, "-64 <= x < -63 dBm"},
- {48, "-63 <= x < -62 dBm"},
- {49, "-62 <= x < -61 dBm"},
- {50, "-61 <= x < -60 dBm"},
- {51, "-60 <= x < -59 dBm"},
- {52, "-59 <= x < -58 dBm"},
- {53, "-58 <= x < -57 dBm"},
- {54, "-57 <= x < -56 dBm"},
- {55, "-56 <= x < -55 dBm"},
- {56, "-55 <= x < -54 dBm"},
- {57, "-54 <= x < -53 dBm"},
- {58, "-53 <= x < -52 dBm"},
- {59, "-52 <= x < -51 dBm"},
- {60, "-51 <= x < -50 dBm"},
- {61, "-50 <= x < -49 dBm"},
- {62, "-49 <= x < -48 dBm"},
- {63, ">= -48 dBm"},
+const value_string tighter_cap_level_vals[] = {
+ { 0, "TIGHTER not supported" },
+ { 1, "TIGHTER supported for speech and signalling channels only" },
+ { 2, "TIGHTER supported for speech and signalling channels and for GPRS and EGPRS, but not for EGPRS2" },
+ { 3, "TIGHTER supported for speech and signalling channels and for GPRS, EGPRS and EGPRS2" },
{ 0, NULL}
};
+static const value_string gsm_a_rr_rxlev_vals [] = {
+ { 0, "< -110 dBm"},
+ { 1, "-110 <= x < -109 dBm"},
+ { 2, "-109 <= x < -108 dBm"},
+ { 3, "-108 <= x < -107 dBm"},
+ { 4, "-107 <= x < -106 dBm"},
+ { 5, "-106 <= x < -105 dBm"},
+ { 6, "-105 <= x < -104 dBm"},
+ { 7, "-104 <= x < -103 dBm"},
+ { 8, "-103 <= x < -102 dBm"},
+ { 9, "-102 <= x < -101 dBm"},
+ { 10, "-101 <= x < -100 dBm"},
+ { 11, "-100 <= x < -99 dBm"},
+ { 12, "-99 <= x < -98 dBm"},
+ { 13, "-98 <= x < -97 dBm"},
+ { 14, "-97 <= x < -96 dBm"},
+ { 15, "-96 <= x < -95 dBm"},
+ { 16, "-95 <= x < -94 dBm"},
+ { 17, "-94 <= x < -93 dBm"},
+ { 18, "-93 <= x < -92 dBm"},
+ { 19, "-92 <= x < -91 dBm"},
+ { 20, "-91 <= x < -90 dBm"},
+ { 21, "-90 <= x < -89 dBm"},
+ { 22, "-89 <= x < -88 dBm"},
+ { 23, "-88 <= x < -87 dBm"},
+ { 24, "-87 <= x < -86 dBm"},
+ { 25, "-86 <= x < -85 dBm"},
+ { 26, "-85 <= x < -84 dBm"},
+ { 27, "-84 <= x < -83 dBm"},
+ { 28, "-83 <= x < -82 dBm"},
+ { 29, "-82 <= x < -81 dBm"},
+ { 30, "-81 <= x < -80 dBm"},
+ { 31, "-80 <= x < -79 dBm"},
+ { 32, "-79 <= x < -78 dBm"},
+ { 33, "-78 <= x < -77 dBm"},
+ { 34, "-77 <= x < -76 dBm"},
+ { 35, "-76 <= x < -75 dBm"},
+ { 36, "-75 <= x < -74 dBm"},
+ { 37, "-74 <= x < -73 dBm"},
+ { 38, "-73 <= x < -72 dBm"},
+ { 39, "-72 <= x < -71 dBm"},
+ { 40, "-71 <= x < -70 dBm"},
+ { 41, "-70 <= x < -69 dBm"},
+ { 42, "-69 <= x < -68 dBm"},
+ { 43, "-68 <= x < -67 dBm"},
+ { 44, "-67 <= x < -66 dBm"},
+ { 45, "-66 <= x < -65 dBm"},
+ { 46, "-65 <= x < -64 dBm"},
+ { 47, "-64 <= x < -63 dBm"},
+ { 48, "-63 <= x < -62 dBm"},
+ { 49, "-62 <= x < -61 dBm"},
+ { 50, "-61 <= x < -60 dBm"},
+ { 51, "-60 <= x < -59 dBm"},
+ { 52, "-59 <= x < -58 dBm"},
+ { 53, "-58 <= x < -57 dBm"},
+ { 54, "-57 <= x < -56 dBm"},
+ { 55, "-56 <= x < -55 dBm"},
+ { 56, "-55 <= x < -54 dBm"},
+ { 57, "-54 <= x < -53 dBm"},
+ { 58, "-53 <= x < -52 dBm"},
+ { 59, "-52 <= x < -51 dBm"},
+ { 60, "-51 <= x < -50 dBm"},
+ { 61, "-50 <= x < -49 dBm"},
+ { 62, "-49 <= x < -48 dBm"},
+ { 63, ">= -48 dBm"},
+ { 0, NULL}
+};
value_string_ext gsm_a_rr_rxlev_vals_ext = VALUE_STRING_EXT_INIT(gsm_a_rr_rxlev_vals);
/* Initialize the protocol and registered fields */
@@ -516,25 +528,25 @@ static int hf_gsm_a_imei = -1;
static int hf_gsm_a_imeisv = -1;
static int hf_gsm_a_MSC_rev = -1;
-static int hf_gsm_a_ES_IND = -1;
+static int hf_gsm_a_ES_IND = -1;
static int hf_gsm_a_A5_1_algorithm_sup = -1;
static int hf_gsm_a_RF_power_capability = -1;
-static int hf_gsm_a_ps_sup_cap = -1;
+static int hf_gsm_a_ps_sup_cap = -1;
static int hf_gsm_a_SS_screening_indicator = -1;
-static int hf_gsm_a_SM_capability = -1;
+static int hf_gsm_a_SM_capability = -1;
static int hf_gsm_a_VBS_notification_rec = -1;
static int hf_gsm_a_VGCS_notification_rec = -1;
-static int hf_gsm_a_FC_frequency_cap = -1;
-static int hf_gsm_a_CM3 = -1;
-static int hf_gsm_a_LCS_VA_cap = -1;
-static int hf_gsm_a_UCS2_treatment = -1;
-static int hf_gsm_a_SoLSA = -1;
-static int hf_gsm_a_CMSP = -1;
-static int hf_gsm_a_A5_7_algorithm_sup= -1;
-static int hf_gsm_a_A5_6_algorithm_sup= -1;
-static int hf_gsm_a_A5_5_algorithm_sup= -1;
-static int hf_gsm_a_A5_4_algorithm_sup= -1;
-static int hf_gsm_a_A5_3_algorithm_sup= -1;
+static int hf_gsm_a_FC_frequency_cap = -1;
+static int hf_gsm_a_CM3 = -1;
+static int hf_gsm_a_LCS_VA_cap = -1;
+static int hf_gsm_a_UCS2_treatment = -1;
+static int hf_gsm_a_SoLSA = -1;
+static int hf_gsm_a_CMSP = -1;
+static int hf_gsm_a_A5_7_algorithm_sup = -1;
+static int hf_gsm_a_A5_6_algorithm_sup = -1;
+static int hf_gsm_a_A5_5_algorithm_sup = -1;
+static int hf_gsm_a_A5_4_algorithm_sup = -1;
+static int hf_gsm_a_A5_3_algorithm_sup = -1;
static int hf_gsm_a_A5_2_algorithm_sup = -1;
static int hf_gsm_a_odd_even_ind = -1;
@@ -550,8 +562,12 @@ int hf_gsm_a_spare_bits = -1;
int hf_gsm_a_lac = -1;
static int hf_gsm_a_spare_nibble = -1;
static int hf_gsm_a_type_of_ciph_alg = -1;
+static int hf_gsm_a_att = -1;
+static int hf_gsm_a_nmo_1 = -1;
+static int hf_gsm_a_nmo = -1;
static int hf_gsm_a_old_xid = -1;
static int hf_gsm_a_iov_ui = -1;
+static int hf_gsm_a_ext_periodic_timers = -1;
static int hf_gsm_a_b7spare = -1;
int hf_gsm_a_b8spare = -1;
static int hf_gsm_a_multi_bnd_sup_fields = -1;
@@ -570,82 +586,84 @@ static int hf_gsm_a_ms_measurement_capability = -1;
static int hf_gsm_a_sms_value =-1;
static int hf_gsm_a_sm_value =-1;
static int hf_gsm_a_key_seq = -1;
-static int hf_gsm_a_ms_pos_method_cap_present = -1;
-static int hf_gsm_a_ms_pos_method = -1;
-static int hf_gsm_a_ms_assisted_e_otd = -1;
-static int hf_gsm_a_ms_based_e_otd = -1;
-static int hf_gsm_a_ms_assisted_gps = -1;
-static int hf_gsm_a_ms_based_gps = -1;
-static int hf_gsm_a_ms_conventional_gps = -1;
-static int hf_gsm_a_ecsd_multi_slot_capability = -1;
-static int hf_gsm_a_ecsd_multi_slot_class = -1;
-static int hf_gsm_a_8_psk_struct_present = -1;
-static int hf_gsm_a_8_psk_struct = -1;
-static int hf_gsm_a_modulation_capability = -1;
-static int hf_gsm_a_8_psk_rf_power_capability_1 = -1;
-static int hf_gsm_a_8_psk_rf_power_capability_2 = -1;
-static int hf_gsm_a_gsm_400_band_info_present = -1;
-static int hf_gsm_a_gsm_400_bands_supported = -1;
-static int hf_gsm_a_gsm_400_assoc_radio_cap = -1;
-static int hf_gsm_a_gsm_850_assoc_radio_cap_present = -1;
-static int hf_gsm_a_gsm_850_assoc_radio_cap = -1;
-static int hf_gsm_a_gsm_1900_assoc_radio_cap_present = -1;
-static int hf_gsm_a_gsm_1900_assoc_radio_cap = -1;
-static int hf_gsm_a_cm3_A5_bits = -1;
-static int hf_gsm_a_umts_fdd_rat_cap = -1;
-static int hf_gsm_a_umts_384_mcps_tdd_rat_cap = -1;
-static int hf_gsm_a_cdma_2000_rat_cap = -1;
-static int hf_gsm_a_dtm_e_gprs_multi_slot_info_present = -1;
-static int hf_gsm_a_dtm_gprs_multi_slot_class = -1;
-static int hf_gsm_a_single_slot_dtm = -1;
-static int hf_gsm_a_dtm_egprs_multi_slot_class_present = -1;
-static int hf_gsm_a_dtm_egprs_multi_slot_class = -1;
-static int hf_gsm_a_single_band_support = -1;
-static int hf_gsm_a_gsm_band = -1;
-static int hf_gsm_a_gsm_750_assoc_radio_cap_present = -1;
-static int hf_gsm_a_gsm_750_assoc_radio_cap = -1;
-static int hf_gsm_a_umts_128_mcps_tdd_rat_cap = -1;
-static int hf_gsm_a_geran_feature_package_1 = -1;
-static int hf_gsm_a_ext_dtm_e_gprs_multi_slot_info_present = -1;
-static int hf_gsm_a_ext_dtm_gprs_multi_slot_class = -1;
-static int hf_gsm_a_ext_dtm_egprs_multi_slot_class = -1;
-static int hf_gsm_a_high_multislot_cap_present = -1;
-static int hf_gsm_a_high_multislot_cap = -1;
-static int hf_gsm_a_geran_iu_mode_support = -1;
-static int hf_gsm_a_geran_iu_mode_cap = -1;
-static int hf_gsm_a_geran_iu_mode_cap_length = -1;
-static int hf_gsm_a_flo_iu_cap = -1;
-static int hf_gsm_a_geran_feature_package_2 = -1;
-static int hf_gsm_a_gmsk_multislot_power_prof = -1;
-static int hf_gsm_a_8_psk_multislot_power_prof = -1;
-static int hf_gsm_a_t_gsm_400_band_info_present = -1;
-static int hf_gsm_a_t_gsm_400_bands_supported = -1;
-static int hf_gsm_a_t_gsm_400_assoc_radio_cap = -1;
-static int hf_gsm_a_t_gsm_900_assoc_radio_cap_present = -1;
-static int hf_gsm_a_t_gsm_900_assoc_radio_cap = -1;
-static int hf_gsm_a_downlink_adv_receiver_perf = -1;
-static int hf_gsm_a_dtm_enhancements_cap = -1;
-static int hf_gsm_a_dtm_e_gprs_high_multi_slot_info_present = -1;
-static int hf_gsm_a_dtm_gprs_high_multi_slot_class = -1;
-static int hf_gsm_a_offset_required = -1;
-static int hf_gsm_a_dtm_egprs_high_multi_slot_class_present = -1;
-static int hf_gsm_a_dtm_egprs_high_multi_slot_class = -1;
-static int hf_gsm_a_repeated_acch_cap = -1;
-static int hf_gsm_a_gsm_710_assoc_radio_cap_present = -1;
-static int hf_gsm_a_gsm_710_assoc_radio_cap = -1;
-static int hf_gsm_a_t_gsm_810_assoc_radio_cap_present = -1;
-static int hf_gsm_a_t_gsm_810_assoc_radio_cap = -1;
-static int hf_gsm_a_ciphering_mode_setting_cap = -1;
-static int hf_gsm_a_additional_positioning_caps = -1;
-static int hf_gsm_a_e_utra_fdd_support = -1;
-static int hf_gsm_a_e_utra_tdd_support = -1;
-static int hf_gsm_a_e_utra_meas_and_report_support = -1;
+static int hf_gsm_a_ms_pos_method_cap_present = -1;
+static int hf_gsm_a_ms_pos_method = -1;
+static int hf_gsm_a_ms_assisted_e_otd = -1;
+static int hf_gsm_a_ms_based_e_otd = -1;
+static int hf_gsm_a_ms_assisted_gps = -1;
+static int hf_gsm_a_ms_based_gps = -1;
+static int hf_gsm_a_ms_conventional_gps = -1;
+static int hf_gsm_a_ecsd_multi_slot_capability = -1;
+static int hf_gsm_a_ecsd_multi_slot_class = -1;
+static int hf_gsm_a_8_psk_struct_present = -1;
+static int hf_gsm_a_8_psk_struct = -1;
+static int hf_gsm_a_modulation_capability = -1;
+static int hf_gsm_a_8_psk_rf_power_capability_1 = -1;
+static int hf_gsm_a_8_psk_rf_power_capability_2 = -1;
+static int hf_gsm_a_gsm_400_band_info_present = -1;
+static int hf_gsm_a_gsm_400_bands_supported = -1;
+static int hf_gsm_a_gsm_400_assoc_radio_cap = -1;
+static int hf_gsm_a_gsm_850_assoc_radio_cap_present = -1;
+static int hf_gsm_a_gsm_850_assoc_radio_cap = -1;
+static int hf_gsm_a_gsm_1900_assoc_radio_cap_present = -1;
+static int hf_gsm_a_gsm_1900_assoc_radio_cap = -1;
+static int hf_gsm_a_cm3_A5_bits = -1;
+static int hf_gsm_a_umts_fdd_rat_cap = -1;
+static int hf_gsm_a_umts_384_mcps_tdd_rat_cap = -1;
+static int hf_gsm_a_cdma_2000_rat_cap = -1;
+static int hf_gsm_a_dtm_e_gprs_multi_slot_info_present = -1;
+static int hf_gsm_a_dtm_gprs_multi_slot_class = -1;
+static int hf_gsm_a_single_slot_dtm = -1;
+static int hf_gsm_a_dtm_egprs_multi_slot_class_present = -1;
+static int hf_gsm_a_dtm_egprs_multi_slot_class = -1;
+static int hf_gsm_a_single_band_support = -1;
+static int hf_gsm_a_gsm_band = -1;
+static int hf_gsm_a_gsm_750_assoc_radio_cap_present = -1;
+static int hf_gsm_a_gsm_750_assoc_radio_cap = -1;
+static int hf_gsm_a_umts_128_mcps_tdd_rat_cap = -1;
+static int hf_gsm_a_geran_feature_package_1 = -1;
+static int hf_gsm_a_ext_dtm_e_gprs_multi_slot_info_present = -1;
+static int hf_gsm_a_ext_dtm_gprs_multi_slot_class = -1;
+static int hf_gsm_a_ext_dtm_egprs_multi_slot_class = -1;
+static int hf_gsm_a_high_multislot_cap_present = -1;
+static int hf_gsm_a_high_multislot_cap = -1;
+static int hf_gsm_a_geran_iu_mode_support = -1;
+static int hf_gsm_a_geran_iu_mode_cap = -1;
+static int hf_gsm_a_geran_iu_mode_cap_length = -1;
+static int hf_gsm_a_flo_iu_cap = -1;
+static int hf_gsm_a_geran_feature_package_2 = -1;
+static int hf_gsm_a_gmsk_multislot_power_prof = -1;
+static int hf_gsm_a_8_psk_multislot_power_prof = -1;
+static int hf_gsm_a_t_gsm_400_band_info_present = -1;
+static int hf_gsm_a_t_gsm_400_bands_supported = -1;
+static int hf_gsm_a_t_gsm_400_assoc_radio_cap = -1;
+static int hf_gsm_a_t_gsm_900_assoc_radio_cap_present = -1;
+static int hf_gsm_a_t_gsm_900_assoc_radio_cap = -1;
+static int hf_gsm_a_downlink_adv_receiver_perf = -1;
+static int hf_gsm_a_dtm_enhancements_cap = -1;
+static int hf_gsm_a_dtm_e_gprs_high_multi_slot_info_present = -1;
+static int hf_gsm_a_dtm_gprs_high_multi_slot_class = -1;
+static int hf_gsm_a_offset_required = -1;
+static int hf_gsm_a_dtm_egprs_high_multi_slot_class_present = -1;
+static int hf_gsm_a_dtm_egprs_high_multi_slot_class = -1;
+static int hf_gsm_a_repeated_acch_cap = -1;
+static int hf_gsm_a_gsm_710_assoc_radio_cap_present = -1;
+static int hf_gsm_a_gsm_710_assoc_radio_cap = -1;
+static int hf_gsm_a_t_gsm_810_assoc_radio_cap_present = -1;
+static int hf_gsm_a_t_gsm_810_assoc_radio_cap = -1;
+static int hf_gsm_a_ciphering_mode_setting_cap = -1;
+static int hf_gsm_a_additional_positioning_caps = -1;
+static int hf_gsm_a_e_utra_fdd_support = -1;
+static int hf_gsm_a_e_utra_tdd_support = -1;
+static int hf_gsm_a_e_utra_meas_and_report_support = -1;
static int hf_gsm_a_prio_based_resel_support = -1;
static int hf_gsm_a_utra_csg_cells_reporting = -1;
-static int hg_gsm_a_vamos_level = -1;
+static int hf_gsm_a_vamos_level = -1;
+static int hf_gsm_a_tighter_cap = -1;
+static int hf_gsm_a_selective_ciph_down_sacch = -1;
static int hf_gsm_a_geo_loc_type_of_shape = -1;
-static int hf_gsm_a_geo_loc_sign_of_lat = -1;
+static int hf_gsm_a_geo_loc_sign_of_lat = -1;
static int hf_gsm_a_geo_loc_deg_of_lat =-1;
static int hf_gsm_a_geo_loc_deg_of_long =-1;
static int hf_gsm_a_geo_loc_uncertainty_code = -1;
@@ -675,7 +693,7 @@ static char a_bigbuf[1024];
sccp_msg_info_t* sccp_msg;
sccp_assoc_info_t* sccp_assoc;
-#define NUM_GSM_COMMON_ELEM (sizeof(gsm_common_elem_strings)/sizeof(value_string))
+#define NUM_GSM_COMMON_ELEM (sizeof(gsm_common_elem_strings)/sizeof(value_string))
gint ett_gsm_common_elem[NUM_GSM_COMMON_ELEM];
@@ -700,195 +718,194 @@ other values reserved for future use
/* TS 23 032 Table 2a: Coding of Type of Shape */
static const value_string type_of_shape_vals[] = {
- { ELLIPSOID_POINT, "Ellipsoid Point"},
- { ELLIPSOID_POINT_WITH_UNCERT_CIRC, "Ellipsoid point with uncertainty Circle"},
- { ELLIPSOID_POINT_WITH_UNCERT_ELLIPSE, "Ellipsoid point with uncertainty Ellipse"},
- { POLYGON, "Polygon"},
- { ELLIPSOID_POINT_WITH_ALT, "Ellipsoid point with altitude"},
- { ELLIPSOID_POINT_WITH_ALT_AND_UNCERT_ELLIPSOID, "Ellipsoid point with altitude and uncertainty Ellipsoid"},
- { ELLIPSOID_ARC, "Ellipsoid Arc"},
- { 0, NULL }
+ { ELLIPSOID_POINT, "Ellipsoid Point"},
+ { ELLIPSOID_POINT_WITH_UNCERT_CIRC, "Ellipsoid point with uncertainty Circle"},
+ { ELLIPSOID_POINT_WITH_UNCERT_ELLIPSE, "Ellipsoid point with uncertainty Ellipse"},
+ { POLYGON, "Polygon"},
+ { ELLIPSOID_POINT_WITH_ALT, "Ellipsoid point with altitude"},
+ { ELLIPSOID_POINT_WITH_ALT_AND_UNCERT_ELLIPSOID, "Ellipsoid point with altitude and uncertainty Ellipsoid"},
+ { ELLIPSOID_ARC, "Ellipsoid Arc"},
+ { 0, NULL }
};
/* 3GPP TS 23.032 7.3.1 */
static const value_string sign_of_latitude_vals[] = {
- { 0, "North"},
- { 1, "South"},
- { 0, NULL }
+ { 0, "North"},
+ { 1, "South"},
+ { 0, NULL }
};
static const value_string dir_of_alt_vals[] = {
- { 0, "Altitude expresses height"},
- { 1, "Altitude expresses depth"},
- { 0, NULL }
+ { 0, "Altitude expresses height"},
+ { 1, "Altitude expresses depth"},
+ { 0, NULL }
};
void
-dissect_geographical_description(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree){
-
- proto_item *lat_item, *long_item, *major_item, *minor_item, *alt_item, *uncer_item;
- /*proto_tree *subtree; */
-
- guint8 type_of_shape;
- /*guint8 no_of_points;*/
- int offset = 0;
- int length;
- guint8 value;
- guint32 value32;
-
- /*subtree = proto_item_add_subtree(item, ett_gsm_a_geo_desc);*/
-
- length = tvb_reported_length_remaining(tvb,0);
- /* Geographical Location
- * The Location Estimate field is composed of 1 or more octets with an internal structure
- * according to section 7 in [23.032].
- */
- proto_tree_add_item(tree, hf_gsm_a_geo_loc_type_of_shape, tvb, 0, 1, ENC_BIG_ENDIAN);
- if (length<2)
- return;
- type_of_shape = tvb_get_guint8(tvb,offset)>>4;
- switch (type_of_shape){
- case ELLIPSOID_POINT:
- /* Ellipsoid Point */
- case ELLIPSOID_POINT_WITH_UNCERT_CIRC:
- /* Ellipsoid Point with uncertainty Circle */
- case ELLIPSOID_POINT_WITH_UNCERT_ELLIPSE:
- /* Ellipsoid Point with uncertainty Ellipse */
- case ELLIPSOID_POINT_WITH_ALT:
- /* Ellipsoid Point with Altitude */
- case ELLIPSOID_POINT_WITH_ALT_AND_UNCERT_ELLIPSOID:
- /* Ellipsoid Point with altitude and uncertainty ellipsoid */
- case ELLIPSOID_ARC:
- /* Ellipsoid Arc */
- offset++;
- if (length<4)
- return;
- proto_tree_add_item(tree, hf_gsm_a_geo_loc_sign_of_lat, tvb, offset, 1, ENC_BIG_ENDIAN);
-
- value32 = tvb_get_ntoh24(tvb,offset)&0x7fffff;
- /* convert degrees (X/0x7fffff) * 90 = degrees */
- lat_item = proto_tree_add_item(tree, hf_gsm_a_geo_loc_deg_of_lat, tvb, offset, 3, ENC_BIG_ENDIAN);
- proto_item_append_text(lat_item,"(%.5f degrees)", (((double)value32/8388607) * 90));
- if (length<7)
- return;
- offset = offset + 3;
- value32 = tvb_get_ntoh24(tvb,offset)&0x7fffff;
- long_item = proto_tree_add_item(tree, hf_gsm_a_geo_loc_deg_of_long, tvb, offset, 3, ENC_BIG_ENDIAN);
- /* (X/0xffffff) *360 = degrees */
- proto_item_append_text(long_item,"(%.5f degrees)", (((double)value32/16777215) * 360));
- offset = offset + 3;
- if(type_of_shape==ELLIPSOID_POINT_WITH_UNCERT_CIRC){
- /* Ellipsoid Point with uncertainty Circle */
- if (length<8)
- return;
- /* Uncertainty code */
- value = tvb_get_guint8(tvb,offset)&0x7f;
- uncer_item = proto_tree_add_item(tree, hf_gsm_a_geo_loc_uncertainty_code, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_item_append_text(uncer_item,"(%.1f m)", 10 * (pow(1.1, (double)value) - 1));
- }else if(type_of_shape==ELLIPSOID_POINT_WITH_UNCERT_ELLIPSE){
- /* Ellipsoid Point with uncertainty Ellipse */
- /* Uncertainty semi-major octet 10
- * To convert to metres 10*(((1.1)^X)-1)
- */
- value = tvb_get_guint8(tvb,offset)&0x7f;
- major_item = proto_tree_add_item(tree, hf_gsm_a_geo_loc_uncertainty_semi_major, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_item_append_text(major_item,"(%.1f m)", 10 * (pow(1.1, (double)value) - 1));
- offset++;
- /* Uncertainty semi-minor Octet 11
- * To convert to metres 10*(((1.1)^X)-1)
- */
- value = tvb_get_guint8(tvb,offset)&0x7f;
- minor_item = proto_tree_add_item(tree, hf_gsm_a_geo_loc_uncertainty_semi_minor, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_item_append_text(minor_item,"(%.1f m)", 10 * (pow(1.1, (double)value) - 1));
- offset++;
- /* Orientation of major axis octet 12
- * allowed value from 0-179 to convert
- * to actual degrees multiply by 2.
- */
- value = tvb_get_guint8(tvb,offset)&0x7f;
- proto_tree_add_uint(tree, hf_gsm_a_geo_loc_orientation_of_major_axis, tvb, offset, 1, value*2);
- offset++;
- /* Confidence */
- proto_tree_add_item(tree, hf_gsm_a_geo_loc_confidence, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
- }else if(type_of_shape==ELLIPSOID_POINT_WITH_ALT){
- /* Ellipsoid Point with Altitude */
- /*D: Direction of Altitude */
- proto_tree_add_item(tree, hf_gsm_a_geo_loc_D, tvb, offset, 1, ENC_BIG_ENDIAN);
- /* Altitude */
- proto_tree_add_item(tree, hf_gsm_a_geo_loc_altitude, tvb, offset, 2, ENC_BIG_ENDIAN);
- }else if(type_of_shape==ELLIPSOID_POINT_WITH_ALT_AND_UNCERT_ELLIPSOID){
- /* Ellipsoid Point with altitude and uncertainty ellipsoid */
- /*D: Direction of Altitude octet 8,9 */
- proto_tree_add_item(tree, hf_gsm_a_geo_loc_D, tvb, offset, 1, ENC_BIG_ENDIAN);
- /* Altitude Octet 8,9*/
- proto_tree_add_item(tree, hf_gsm_a_geo_loc_altitude, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset = offset +2;
- /* Uncertainty semi-major octet 10
- * To convert to metres 10*(((1.1)^X)-1)
- */
- value = tvb_get_guint8(tvb,offset)&0x7f;
- major_item = proto_tree_add_item(tree, hf_gsm_a_geo_loc_uncertainty_semi_major, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_item_append_text(major_item,"(%.1f m)", 10 * (pow(1.1, (double)value) - 1));
- offset++;
- /* Uncertainty semi-minor Octet 11
- * To convert to metres 10*(((1.1)^X)-1)
- */
- value = tvb_get_guint8(tvb,offset)&0x7f;
- minor_item = proto_tree_add_item(tree, hf_gsm_a_geo_loc_uncertainty_semi_minor, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_item_append_text(minor_item,"(%.1f m)", 10 * (pow(1.1, (double)value) - 1));
- offset++;
- /* Orientation of major axis octet 12
- * allowed value from 0-179 to convert
- * to actual degrees multiply by 2.
- */
- value = tvb_get_guint8(tvb,offset)&0x7f;
- proto_tree_add_uint(tree, hf_gsm_a_geo_loc_orientation_of_major_axis, tvb, offset, 1, value*2);
- offset++;
- /* Uncertainty Altitude 13
- * to convert to metres 45*(((1.025)^X)-1)
- */
- value = tvb_get_guint8(tvb,offset)&0x7f;
- alt_item = proto_tree_add_item(tree, hf_gsm_a_geo_loc_uncertainty_altitude, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_item_append_text(alt_item,"(%.1f m)", 45 * (pow(1.025, (double)value) - 1));
- offset++;
- /* Confidence octet 14
- */
- proto_tree_add_item(tree, hf_gsm_a_geo_loc_confidence, tvb, offset, 1, ENC_BIG_ENDIAN);
- }else if(type_of_shape==ELLIPSOID_ARC){
- /* Ellipsoid Arc */
- /* Inner radius */
- proto_tree_add_item(tree, hf_gsm_a_geo_loc_inner_radius, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset= offset +2;
- /* Uncertainty radius */
- proto_tree_add_item(tree, hf_gsm_a_geo_loc_uncertainty_radius, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
- /* Offset angle */
- proto_tree_add_item(tree, hf_gsm_a_geo_loc_offset_angle, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
- /* Included angle */
- proto_tree_add_item(tree, hf_gsm_a_geo_loc_included_angle, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
- /* Confidence */
- proto_tree_add_item(tree, hf_gsm_a_geo_loc_confidence, tvb, offset, 1, ENC_BIG_ENDIAN);
- }
-
- break;
- case POLYGON: /* Polygon */
- /* Number of points */
- proto_tree_add_item(tree, hf_gsm_a_geo_loc_no_of_points, tvb, offset, 1, ENC_BIG_ENDIAN);
+dissect_geographical_description(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) {
+
+ proto_item *lat_item, *long_item, *major_item, *minor_item, *alt_item, *uncer_item;
+ /*proto_tree *subtree; */
+ guint8 type_of_shape;
+ /*guint8 no_of_points;*/
+ int offset = 0;
+ int length;
+ guint8 value;
+ guint32 value32;
+
+ /*subtree = proto_item_add_subtree(item, ett_gsm_a_geo_desc);*/
+
+ length = tvb_reported_length_remaining(tvb, 0);
+ /* Geographical Location
+ * The Location Estimate field is composed of 1 or more octets with an internal structure
+ * according to section 7 in [23.032].
+ */
+ proto_tree_add_item(tree, hf_gsm_a_geo_loc_type_of_shape, tvb, 0, 1, ENC_BIG_ENDIAN);
+ if (length < 2)
+ return;
+ type_of_shape = tvb_get_guint8(tvb,offset)>>4;
+ switch (type_of_shape) {
+ case ELLIPSOID_POINT:
+ /* Ellipsoid Point */
+ case ELLIPSOID_POINT_WITH_UNCERT_CIRC:
+ /* Ellipsoid Point with uncertainty Circle */
+ case ELLIPSOID_POINT_WITH_UNCERT_ELLIPSE:
+ /* Ellipsoid Point with uncertainty Ellipse */
+ case ELLIPSOID_POINT_WITH_ALT:
+ /* Ellipsoid Point with Altitude */
+ case ELLIPSOID_POINT_WITH_ALT_AND_UNCERT_ELLIPSOID:
+ /* Ellipsoid Point with altitude and uncertainty ellipsoid */
+ case ELLIPSOID_ARC:
+ /* Ellipsoid Arc */
+ offset++;
+ if (length < 4)
+ return;
+ proto_tree_add_item(tree, hf_gsm_a_geo_loc_sign_of_lat, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ value32 = tvb_get_ntoh24(tvb,offset)&0x7fffff;
+ /* convert degrees (X/0x7fffff) * 90 = degrees */
+ lat_item = proto_tree_add_item(tree, hf_gsm_a_geo_loc_deg_of_lat, tvb, offset, 3, ENC_BIG_ENDIAN);
+ proto_item_append_text(lat_item, "(%.5f degrees)", (((double)value32/8388607) * 90));
+ if (length < 7)
+ return;
+ offset = offset + 3;
+ value32 = tvb_get_ntoh24(tvb,offset)&0x7fffff;
+ long_item = proto_tree_add_item(tree, hf_gsm_a_geo_loc_deg_of_long, tvb, offset, 3, ENC_BIG_ENDIAN);
+ /* (X/0xffffff) *360 = degrees */
+ proto_item_append_text(long_item, "(%.5f degrees)", (((double)value32/16777215) * 360));
+ offset = offset + 3;
+ if (type_of_shape == ELLIPSOID_POINT_WITH_UNCERT_CIRC) {
+ /* Ellipsoid Point with uncertainty Circle */
+ if (length < 8)
+ return;
+ /* Uncertainty code */
+ value = tvb_get_guint8(tvb,offset)&0x7f;
+ uncer_item = proto_tree_add_item(tree, hf_gsm_a_geo_loc_uncertainty_code, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_item_append_text(uncer_item, "(%.1f m)", 10 * (pow(1.1, (double)value) - 1));
+ }else if (type_of_shape == ELLIPSOID_POINT_WITH_UNCERT_ELLIPSE) {
+ /* Ellipsoid Point with uncertainty Ellipse */
+ /* Uncertainty semi-major octet 10
+ * To convert to metres 10*(((1.1)^X)-1)
+ */
+ value = tvb_get_guint8(tvb,offset) & 0x7f;
+ major_item = proto_tree_add_item(tree, hf_gsm_a_geo_loc_uncertainty_semi_major, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_item_append_text(major_item, "(%.1f m)", 10 * (pow(1.1, (double)value) - 1));
+ offset++;
+ /* Uncertainty semi-minor Octet 11
+ * To convert to metres 10*(((1.1)^X)-1)
+ */
+ value = tvb_get_guint8(tvb,offset)&0x7f;
+ minor_item = proto_tree_add_item(tree, hf_gsm_a_geo_loc_uncertainty_semi_minor, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_item_append_text(minor_item, "(%.1f m)", 10 * (pow(1.1, (double)value) - 1));
+ offset++;
+ /* Orientation of major axis octet 12
+ * allowed value from 0-179 to convert
+ * to actual degrees multiply by 2.
+ */
+ value = tvb_get_guint8(tvb,offset)&0x7f;
+ proto_tree_add_uint(tree, hf_gsm_a_geo_loc_orientation_of_major_axis, tvb, offset, 1, value*2);
+ offset++;
+ /* Confidence */
+ proto_tree_add_item(tree, hf_gsm_a_geo_loc_confidence, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ }else if (type_of_shape == ELLIPSOID_POINT_WITH_ALT) {
+ /* Ellipsoid Point with Altitude */
+ /*D: Direction of Altitude */
+ proto_tree_add_item(tree, hf_gsm_a_geo_loc_D, tvb, offset, 1, ENC_BIG_ENDIAN);
+ /* Altitude */
+ proto_tree_add_item(tree, hf_gsm_a_geo_loc_altitude, tvb, offset, 2, ENC_BIG_ENDIAN);
+ }else if (type_of_shape == ELLIPSOID_POINT_WITH_ALT_AND_UNCERT_ELLIPSOID) {
+ /* Ellipsoid Point with altitude and uncertainty ellipsoid */
+ /*D: Direction of Altitude octet 8,9 */
+ proto_tree_add_item(tree, hf_gsm_a_geo_loc_D, tvb, offset, 1, ENC_BIG_ENDIAN);
+ /* Altitude Octet 8,9*/
+ proto_tree_add_item(tree, hf_gsm_a_geo_loc_altitude, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset +2;
+ /* Uncertainty semi-major octet 10
+ * To convert to metres 10*(((1.1)^X)-1)
+ */
+ value = tvb_get_guint8(tvb,offset)&0x7f;
+ major_item = proto_tree_add_item(tree, hf_gsm_a_geo_loc_uncertainty_semi_major, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_item_append_text(major_item, "(%.1f m)", 10 * (pow(1.1, (double)value) - 1));
+ offset++;
+ /* Uncertainty semi-minor Octet 11
+ * To convert to metres 10*(((1.1)^X)-1)
+ */
+ value = tvb_get_guint8(tvb,offset)&0x7f;
+ minor_item = proto_tree_add_item(tree, hf_gsm_a_geo_loc_uncertainty_semi_minor, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_item_append_text(minor_item, "(%.1f m)", 10 * (pow(1.1, (double)value) - 1));
+ offset++;
+ /* Orientation of major axis octet 12
+ * allowed value from 0-179 to convert
+ * to actual degrees multiply by 2.
+ */
+ value = tvb_get_guint8(tvb,offset)&0x7f;
+ proto_tree_add_uint(tree, hf_gsm_a_geo_loc_orientation_of_major_axis, tvb, offset, 1, value*2);
+ offset++;
+ /* Uncertainty Altitude 13
+ * to convert to metres 45*(((1.025)^X)-1)
+ */
+ value = tvb_get_guint8(tvb,offset)&0x7f;
+ alt_item = proto_tree_add_item(tree, hf_gsm_a_geo_loc_uncertainty_altitude, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_item_append_text(alt_item, "(%.1f m)", 45 * (pow(1.025, (double)value) - 1));
+ offset++;
+ /* Confidence octet 14
+ */
+ proto_tree_add_item(tree, hf_gsm_a_geo_loc_confidence, tvb, offset, 1, ENC_BIG_ENDIAN);
+ }else if (type_of_shape == ELLIPSOID_ARC) {
+ /* Ellipsoid Arc */
+ /* Inner radius */
+ proto_tree_add_item(tree, hf_gsm_a_geo_loc_inner_radius, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+ /* Uncertainty radius */
+ proto_tree_add_item(tree, hf_gsm_a_geo_loc_uncertainty_radius, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ /* Offset angle */
+ proto_tree_add_item(tree, hf_gsm_a_geo_loc_offset_angle, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ /* Included angle */
+ proto_tree_add_item(tree, hf_gsm_a_geo_loc_included_angle, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ /* Confidence */
+ proto_tree_add_item(tree, hf_gsm_a_geo_loc_confidence, tvb, offset, 1, ENC_BIG_ENDIAN);
+ }
+
+ break;
+ case POLYGON: /* Polygon */
+ /* Number of points */
+ proto_tree_add_item(tree, hf_gsm_a_geo_loc_no_of_points, tvb, offset, 1, ENC_BIG_ENDIAN);
#if 0
- no_of_points = tvb_get_guint8(tvb,offset)&0x0f;
- while ( no_of_points > 0){
- offset++;
+ no_of_points = tvb_get_guint8(tvb,offset)&0x0f;
+ while ( no_of_points > 0) {
+ offset++;
- no_of_points--;
- }
+ no_of_points--;
+ }
#endif
- break;
- default:
- break;
- }
+ break;
+ default:
+ break;
+ }
}
@@ -897,23 +914,23 @@ dissect_geographical_description(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr
*/
/* 8.6 Coding of Velocity Type */
static const value_string gsm_a_velocity_type_vals[] = {
- { 0, "Horizontal Velocity"},
- { 1, "Horizontal with Vertical Velocity"},
- { 2, "Horizontal Velocity with Uncertainty"},
- { 3, "Horizontal with Vertical Velocity and Uncertainty"},
- { 4, "reserved for future use"},
- { 5, "reserved for future use"},
- { 6, "reserved for future use"},
- { 7, "reserved for future use"},
- { 8, "reserved for future use"},
- { 9, "reserved for future use"},
- { 10, "reserved for future use"},
- { 11, "reserved for future use"},
- { 12, "reserved for future use"},
- { 13, "reserved for future use"},
- { 14, "reserved for future use"},
- { 15, "reserved for future use"},
- { 0, NULL }
+ { 0, "Horizontal Velocity"},
+ { 1, "Horizontal with Vertical Velocity"},
+ { 2, "Horizontal Velocity with Uncertainty"},
+ { 3, "Horizontal with Vertical Velocity and Uncertainty"},
+ { 4, "reserved for future use"},
+ { 5, "reserved for future use"},
+ { 6, "reserved for future use"},
+ { 7, "reserved for future use"},
+ { 8, "reserved for future use"},
+ { 9, "reserved for future use"},
+ { 10, "reserved for future use"},
+ { 11, "reserved for future use"},
+ { 12, "reserved for future use"},
+ { 13, "reserved for future use"},
+ { 14, "reserved for future use"},
+ { 15, "reserved for future use"},
+ { 0, NULL }
};
static const true_false_string gsm_a_dir_of_ver_speed_vals = {
@@ -924,232 +941,232 @@ static const true_false_string gsm_a_dir_of_ver_speed_vals = {
guint16
dissect_description_of_velocity(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- proto_item *velocity_item;
- guint32 curr_offset;
- guint8 velocity_type, uncertainty_speed=0;
-
- curr_offset = offset;
-
- /* Bit 8 - 5 Velocity Type */
- velocity_type = tvb_get_guint8(tvb,curr_offset);
- proto_tree_add_item(tree, hf_gsm_a_velocity_type, tvb, offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
-
- switch(velocity_type){
- case 0:
- /* 8.12 Coding of Horizontal Velocity */
- /* Spare bits */
- proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, (curr_offset<<3)+4, 3, ENC_BIG_ENDIAN);
- /* Bearing is encoded in increments of 1 degree measured clockwise from North using a 9 bit binary coded number N. */
- proto_tree_add_bits_item(tree, hf_gsm_a_bearing, tvb, (curr_offset<<3)+7, 9, ENC_BIG_ENDIAN);
- curr_offset+=2;
- /* Horizontal speed is encoded in increments of 1 kilometre per hour using a 16 bit binary coded number N. */
- velocity_item = proto_tree_add_item(tree, hf_gsm_a_horizontal_speed, tvb, offset, 2, ENC_BIG_ENDIAN);
- proto_item_append_text(velocity_item," km/h");
- curr_offset+=2;
- break;
- case 1:
- /* 8.13 Coding of Horizontal with Vertical Velocity */
- /* Spare bits */
- proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, (curr_offset<<3)+4, 2, ENC_BIG_ENDIAN);
- /* D: Direction of Vertical Speed */
- proto_tree_add_item(tree, hf_gsm_a_d, tvb, offset, 1, ENC_BIG_ENDIAN);
- /* Bearing is encoded in increments of 1 degree measured clockwise from North using a 9 bit binary coded number N. */
- proto_tree_add_bits_item(tree, hf_gsm_a_bearing, tvb, (curr_offset<<3)+7, 9, ENC_BIG_ENDIAN);
- curr_offset+=2;
- /* Horizontal speed is encoded in increments of 1 kilometre per hour using a 16 bit binary coded number N. */
- velocity_item = proto_tree_add_item(tree, hf_gsm_a_horizontal_speed, tvb, offset, 2, ENC_BIG_ENDIAN);
- proto_item_append_text(velocity_item," km/h");
- curr_offset+=2;
- /* Vertical Speed Octet 5
- * Vertical speed is encoded in increments of 1 kilometre per hour using 8 bits giving a number N between 0 and 28-1.
- */
- velocity_item = proto_tree_add_item(tree, hf_gsm_a_vertical_speed, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_item_append_text(velocity_item," km/h");
- curr_offset++;
- break;
- case 2:
- /* 8.14 Coding of Horizontal Velocity with Uncertainty */
- /* Spare bits */
- proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, (curr_offset<<3)+4, 3, ENC_BIG_ENDIAN);
- /* Bearing is encoded in increments of 1 degree measured clockwise from North using a 9 bit binary coded number N. */
- proto_tree_add_bits_item(tree, hf_gsm_a_bearing, tvb, (curr_offset<<3)+7, 9, ENC_BIG_ENDIAN);
- curr_offset+=2;
- /* Horizontal speed is encoded in increments of 1 kilometre per hour using a 16 bit binary coded number N. */
- velocity_item = proto_tree_add_item(tree, hf_gsm_a_horizontal_speed, tvb, offset, 2, ENC_BIG_ENDIAN);
- proto_item_append_text(velocity_item," km/h");
- curr_offset+=2;
- /* Uncertainty Speed Octet 5
- * Uncertainty speed is encoded in increments of 1 kilometre per hour using an 8 bit binary coded number N. The value of
- * N gives the uncertainty speed except for N=255 which indicates that the uncertainty is not specified.
- */
- uncertainty_speed = tvb_get_guint8(tvb,curr_offset);
- velocity_item = proto_tree_add_item(tree, hf_gsm_a_uncertainty_speed, tvb, offset, 2, ENC_BIG_ENDIAN);
- if(uncertainty_speed==255){
- proto_item_append_text(velocity_item," not specified");
- }else{
- proto_item_append_text(velocity_item," km/h");
- }
- offset++;
- break;
- case 3:
- /* 8.15 Coding of Horizontal with Vertical Velocity and Uncertainty */
- /* Spare bits */
- proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, (curr_offset<<3)+4, 2, ENC_BIG_ENDIAN);
- /* D: Direction of Vertical Speed */
- proto_tree_add_item(tree, hf_gsm_a_d, tvb, offset, 1, ENC_BIG_ENDIAN);
- /* Bearing is encoded in increments of 1 degree measured clockwise from North using a 9 bit binary coded number N. */
- proto_tree_add_bits_item(tree, hf_gsm_a_bearing, tvb, (curr_offset<<3)+7, 9, ENC_BIG_ENDIAN);
- curr_offset+=2;
- /* Horizontal speed is encoded in increments of 1 kilometre per hour using a 16 bit binary coded number N. */
- velocity_item = proto_tree_add_item(tree, hf_gsm_a_horizontal_speed, tvb, offset, 2, ENC_BIG_ENDIAN);
- proto_item_append_text(velocity_item," km/h");
- curr_offset+=2;
- /* Vertical Speed Octet 5
- * Vertical speed is encoded in increments of 1 kilometre per hour using 8 bits giving a number N between 0 and 28-1.
- */
- velocity_item = proto_tree_add_item(tree, hf_gsm_a_vertical_speed, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_item_append_text(velocity_item," km/h");
- curr_offset++;
-
- /* Horizontal Uncertainty Speed Octet 6 */
- uncertainty_speed = tvb_get_guint8(tvb,curr_offset);
- velocity_item = proto_tree_add_item(tree, hf_gsm_a_h_uncertainty_speed, tvb, offset, 2, ENC_BIG_ENDIAN);
- if(uncertainty_speed==255){
- proto_item_append_text(velocity_item," not specified");
- }else{
- proto_item_append_text(velocity_item," km/h");
- }
- offset++;
-
- /* Vertical Uncertainty Speed Octet 7 */
- uncertainty_speed = tvb_get_guint8(tvb,curr_offset);
- velocity_item = proto_tree_add_item(tree, hf_gsm_a_v_uncertainty_speed, tvb, offset, 2, ENC_BIG_ENDIAN);
- if(uncertainty_speed==255){
- proto_item_append_text(velocity_item," not specified");
- }else{
- proto_item_append_text(velocity_item," km/h");
- }
- offset++;
-
- break;
- default:
- break;
- }
-
- return(curr_offset-offset);
+ proto_item *velocity_item;
+ guint32 curr_offset;
+ guint8 velocity_type, uncertainty_speed = 0;
+
+ curr_offset = offset;
+
+ /* Bit 8 - 5 Velocity Type */
+ velocity_type = tvb_get_guint8(tvb,curr_offset);
+ proto_tree_add_item(tree, hf_gsm_a_velocity_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+
+ switch (velocity_type) {
+ case 0:
+ /* 8.12 Coding of Horizontal Velocity */
+ /* Spare bits */
+ proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, (curr_offset<<3)+4, 3, ENC_BIG_ENDIAN);
+ /* Bearing is encoded in increments of 1 degree measured clockwise from North using a 9 bit binary coded number N. */
+ proto_tree_add_bits_item(tree, hf_gsm_a_bearing, tvb, (curr_offset<<3)+7, 9, ENC_BIG_ENDIAN);
+ curr_offset += 2;
+ /* Horizontal speed is encoded in increments of 1 kilometre per hour using a 16 bit binary coded number N. */
+ velocity_item = proto_tree_add_item(tree, hf_gsm_a_horizontal_speed, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_item_append_text(velocity_item, " km/h");
+ curr_offset += 2;
+ break;
+ case 1:
+ /* 8.13 Coding of Horizontal with Vertical Velocity */
+ /* Spare bits */
+ proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, (curr_offset<<3)+4, 2, ENC_BIG_ENDIAN);
+ /* D: Direction of Vertical Speed */
+ proto_tree_add_item(tree, hf_gsm_a_d, tvb, offset, 1, ENC_BIG_ENDIAN);
+ /* Bearing is encoded in increments of 1 degree measured clockwise from North using a 9 bit binary coded number N. */
+ proto_tree_add_bits_item(tree, hf_gsm_a_bearing, tvb, (curr_offset<<3)+7, 9, ENC_BIG_ENDIAN);
+ curr_offset += 2;
+ /* Horizontal speed is encoded in increments of 1 kilometre per hour using a 16 bit binary coded number N. */
+ velocity_item = proto_tree_add_item(tree, hf_gsm_a_horizontal_speed, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_item_append_text(velocity_item, " km/h");
+ curr_offset += 2;
+ /* Vertical Speed Octet 5
+ * Vertical speed is encoded in increments of 1 kilometre per hour using 8 bits giving a number N between 0 and 28-1.
+ */
+ velocity_item = proto_tree_add_item(tree, hf_gsm_a_vertical_speed, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_item_append_text(velocity_item, " km/h");
+ curr_offset++;
+ break;
+ case 2:
+ /* 8.14 Coding of Horizontal Velocity with Uncertainty */
+ /* Spare bits */
+ proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, (curr_offset<<3)+4, 3, ENC_BIG_ENDIAN);
+ /* Bearing is encoded in increments of 1 degree measured clockwise from North using a 9 bit binary coded number N. */
+ proto_tree_add_bits_item(tree, hf_gsm_a_bearing, tvb, (curr_offset<<3)+7, 9, ENC_BIG_ENDIAN);
+ curr_offset += 2;
+ /* Horizontal speed is encoded in increments of 1 kilometre per hour using a 16 bit binary coded number N. */
+ velocity_item = proto_tree_add_item(tree, hf_gsm_a_horizontal_speed, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_item_append_text(velocity_item, " km/h");
+ curr_offset += 2;
+ /* Uncertainty Speed Octet 5
+ * Uncertainty speed is encoded in increments of 1 kilometre per hour using an 8 bit binary coded number N. The value of
+ * N gives the uncertainty speed except for N=255 which indicates that the uncertainty is not specified.
+ */
+ uncertainty_speed = tvb_get_guint8(tvb,curr_offset);
+ velocity_item = proto_tree_add_item(tree, hf_gsm_a_uncertainty_speed, tvb, offset, 2, ENC_BIG_ENDIAN);
+ if (uncertainty_speed == 255) {
+ proto_item_append_text(velocity_item, " not specified");
+ }else{
+ proto_item_append_text(velocity_item, " km/h");
+ }
+ offset++;
+ break;
+ case 3:
+ /* 8.15 Coding of Horizontal with Vertical Velocity and Uncertainty */
+ /* Spare bits */
+ proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, (curr_offset<<3)+4, 2, ENC_BIG_ENDIAN);
+ /* D: Direction of Vertical Speed */
+ proto_tree_add_item(tree, hf_gsm_a_d, tvb, offset, 1, ENC_BIG_ENDIAN);
+ /* Bearing is encoded in increments of 1 degree measured clockwise from North using a 9 bit binary coded number N. */
+ proto_tree_add_bits_item(tree, hf_gsm_a_bearing, tvb, (curr_offset<<3)+7, 9, ENC_BIG_ENDIAN);
+ curr_offset += 2;
+ /* Horizontal speed is encoded in increments of 1 kilometre per hour using a 16 bit binary coded number N. */
+ velocity_item = proto_tree_add_item(tree, hf_gsm_a_horizontal_speed, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_item_append_text(velocity_item, " km/h");
+ curr_offset += 2;
+ /* Vertical Speed Octet 5
+ * Vertical speed is encoded in increments of 1 kilometre per hour using 8 bits giving a number N between 0 and 28-1.
+ */
+ velocity_item = proto_tree_add_item(tree, hf_gsm_a_vertical_speed, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_item_append_text(velocity_item, " km/h");
+ curr_offset++;
+
+ /* Horizontal Uncertainty Speed Octet 6 */
+ uncertainty_speed = tvb_get_guint8(tvb,curr_offset);
+ velocity_item = proto_tree_add_item(tree, hf_gsm_a_h_uncertainty_speed, tvb, offset, 2, ENC_BIG_ENDIAN);
+ if (uncertainty_speed == 255) {
+ proto_item_append_text(velocity_item, " not specified");
+ }else{
+ proto_item_append_text(velocity_item, " km/h");
+ }
+ offset++;
+
+ /* Vertical Uncertainty Speed Octet 7 */
+ uncertainty_speed = tvb_get_guint8(tvb,curr_offset);
+ velocity_item = proto_tree_add_item(tree, hf_gsm_a_v_uncertainty_speed, tvb, offset, 2, ENC_BIG_ENDIAN);
+ if (uncertainty_speed == 255) {
+ proto_item_append_text(velocity_item, " not specified");
+ }else{
+ proto_item_append_text(velocity_item, " km/h");
+ }
+ offset++;
+
+ break;
+ default:
+ break;
+ }
+
+ return(curr_offset-offset);
}
const char* get_gsm_a_msg_string(int pdu_type, int idx)
{
- const char *msg_string=NULL;
-
- switch (pdu_type) {
- case GSM_A_PDU_TYPE_BSSMAP:
- msg_string = gsm_bssmap_elem_strings[idx].strptr;
- break;
- case GSM_A_PDU_TYPE_DTAP:
- msg_string = gsm_dtap_elem_strings[idx].strptr;
- break;
- case GSM_A_PDU_TYPE_RP:
- msg_string = gsm_rp_elem_strings[idx].strptr;
- break;
- case GSM_A_PDU_TYPE_RR:
- msg_string = gsm_rr_elem_strings[idx].strptr;
- break;
- case GSM_A_PDU_TYPE_COMMON:
- msg_string = gsm_common_elem_strings[idx].strptr;
- break;
- case GSM_A_PDU_TYPE_GM:
- msg_string = gsm_gm_elem_strings[idx].strptr;
- break;
- case GSM_A_PDU_TYPE_BSSLAP:
- msg_string = gsm_bsslap_elem_strings[idx].strptr;
- break;
- case GSM_PDU_TYPE_BSSMAP_LE:
- msg_string = gsm_bssmap_le_elem_strings[idx].strptr;
- break;
- case NAS_PDU_TYPE_COMMON:
- msg_string = nas_eps_common_elem_strings[idx].strptr;
- break;
- case NAS_PDU_TYPE_EMM:
- msg_string = nas_emm_elem_strings[idx].strptr;
- break;
- case NAS_PDU_TYPE_ESM:
- msg_string = nas_esm_elem_strings[idx].strptr;
- break;
- case SGSAP_PDU_TYPE:
- msg_string = sgsap_elem_strings[idx].strptr;
- break;
- case BSSGP_PDU_TYPE:
- msg_string = bssgp_elem_strings[idx].strptr;
- break;
- case GMR1_IE_COMMON:
- msg_string = gmr1_ie_common_strings[idx].strptr;
- break;
- case GMR1_IE_RR:
- msg_string = gmr1_ie_rr_strings[idx].strptr;
- break;
- default:
- DISSECTOR_ASSERT_NOT_REACHED();
- }
-
- return msg_string;
+ const char *msg_string = NULL;
+
+ switch (pdu_type) {
+ case GSM_A_PDU_TYPE_BSSMAP:
+ msg_string = gsm_bssmap_elem_strings[idx].strptr;
+ break;
+ case GSM_A_PDU_TYPE_DTAP:
+ msg_string = gsm_dtap_elem_strings[idx].strptr;
+ break;
+ case GSM_A_PDU_TYPE_RP:
+ msg_string = gsm_rp_elem_strings[idx].strptr;
+ break;
+ case GSM_A_PDU_TYPE_RR:
+ msg_string = gsm_rr_elem_strings[idx].strptr;
+ break;
+ case GSM_A_PDU_TYPE_COMMON:
+ msg_string = gsm_common_elem_strings[idx].strptr;
+ break;
+ case GSM_A_PDU_TYPE_GM:
+ msg_string = gsm_gm_elem_strings[idx].strptr;
+ break;
+ case GSM_A_PDU_TYPE_BSSLAP:
+ msg_string = gsm_bsslap_elem_strings[idx].strptr;
+ break;
+ case GSM_PDU_TYPE_BSSMAP_LE:
+ msg_string = gsm_bssmap_le_elem_strings[idx].strptr;
+ break;
+ case NAS_PDU_TYPE_COMMON:
+ msg_string = nas_eps_common_elem_strings[idx].strptr;
+ break;
+ case NAS_PDU_TYPE_EMM:
+ msg_string = nas_emm_elem_strings[idx].strptr;
+ break;
+ case NAS_PDU_TYPE_ESM:
+ msg_string = nas_esm_elem_strings[idx].strptr;
+ break;
+ case SGSAP_PDU_TYPE:
+ msg_string = sgsap_elem_strings[idx].strptr;
+ break;
+ case BSSGP_PDU_TYPE:
+ msg_string = bssgp_elem_strings[idx].strptr;
+ break;
+ case GMR1_IE_COMMON:
+ msg_string = gmr1_ie_common_strings[idx].strptr;
+ break;
+ case GMR1_IE_RR:
+ msg_string = gmr1_ie_rr_strings[idx].strptr;
+ break;
+ default:
+ DISSECTOR_ASSERT_NOT_REACHED();
+ }
+
+ return msg_string;
}
static int get_hf_elem_id(int pdu_type)
{
- int hf_elem_id = 0;
-
- switch (pdu_type) {
- case GSM_A_PDU_TYPE_BSSMAP:
- hf_elem_id = hf_gsm_a_bssmap_elem_id;
- break;
- case GSM_A_PDU_TYPE_DTAP:
- hf_elem_id = hf_gsm_a_dtap_elem_id;
- break;
- case GSM_A_PDU_TYPE_RP:
- hf_elem_id = hf_gsm_a_rp_elem_id;
- break;
- case GSM_A_PDU_TYPE_RR:
- hf_elem_id = hf_gsm_a_rr_elem_id;
- break;
- case GSM_A_PDU_TYPE_COMMON:
- hf_elem_id = hf_gsm_a_common_elem_id;
- break;
- case GSM_A_PDU_TYPE_GM:
- hf_elem_id = hf_gsm_a_gm_elem_id;
- break;
- case GSM_A_PDU_TYPE_BSSLAP:
- hf_elem_id = hf_gsm_a_bsslap_elem_id;
- break;
- case GSM_PDU_TYPE_BSSMAP_LE:
- hf_elem_id = hf_gsm_bssmap_le_elem_id;
- break;
- case NAS_PDU_TYPE_COMMON:
- hf_elem_id = hf_nas_eps_common_elem_id;
- break;
- case NAS_PDU_TYPE_EMM:
- hf_elem_id = hf_nas_eps_emm_elem_id;
- break;
- case NAS_PDU_TYPE_ESM:
- hf_elem_id = hf_nas_eps_esm_elem_id;
- break;
- case SGSAP_PDU_TYPE:
- hf_elem_id = hf_sgsap_elem_id;
- break;
- case BSSGP_PDU_TYPE:
- hf_elem_id = hf_bssgp_elem_id;
- break;
- case GMR1_IE_COMMON:
- case GMR1_IE_RR:
- hf_elem_id = hf_gmr1_elem_id;
- break;
- default:
- DISSECTOR_ASSERT_NOT_REACHED();
- }
-
- return hf_elem_id;
+ int hf_elem_id = 0;
+
+ switch (pdu_type) {
+ case GSM_A_PDU_TYPE_BSSMAP:
+ hf_elem_id = hf_gsm_a_bssmap_elem_id;
+ break;
+ case GSM_A_PDU_TYPE_DTAP:
+ hf_elem_id = hf_gsm_a_dtap_elem_id;
+ break;
+ case GSM_A_PDU_TYPE_RP:
+ hf_elem_id = hf_gsm_a_rp_elem_id;
+ break;
+ case GSM_A_PDU_TYPE_RR:
+ hf_elem_id = hf_gsm_a_rr_elem_id;
+ break;
+ case GSM_A_PDU_TYPE_COMMON:
+ hf_elem_id = hf_gsm_a_common_elem_id;
+ break;
+ case GSM_A_PDU_TYPE_GM:
+ hf_elem_id = hf_gsm_a_gm_elem_id;
+ break;
+ case GSM_A_PDU_TYPE_BSSLAP:
+ hf_elem_id = hf_gsm_a_bsslap_elem_id;
+ break;
+ case GSM_PDU_TYPE_BSSMAP_LE:
+ hf_elem_id = hf_gsm_bssmap_le_elem_id;
+ break;
+ case NAS_PDU_TYPE_COMMON:
+ hf_elem_id = hf_nas_eps_common_elem_id;
+ break;
+ case NAS_PDU_TYPE_EMM:
+ hf_elem_id = hf_nas_eps_emm_elem_id;
+ break;
+ case NAS_PDU_TYPE_ESM:
+ hf_elem_id = hf_nas_eps_esm_elem_id;
+ break;
+ case SGSAP_PDU_TYPE:
+ hf_elem_id = hf_sgsap_elem_id;
+ break;
+ case BSSGP_PDU_TYPE:
+ hf_elem_id = hf_bssgp_elem_id;
+ break;
+ case GMR1_IE_COMMON:
+ case GMR1_IE_RR:
+ hf_elem_id = hf_gmr1_elem_id;
+ break;
+ default:
+ DISSECTOR_ASSERT_NOT_REACHED();
+ }
+
+ return hf_elem_id;
}
/*
@@ -1157,74 +1174,74 @@ static int get_hf_elem_id(int pdu_type)
*/
guint16 elem_tlv(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint8 iei, gint pdu_type, int idx, guint32 offset, guint len _U_, const gchar *name_add)
{
- guint8 oct;
- guint16 parm_len;
- guint8 lengt_length = 1;
- guint16 consumed;
- guint32 curr_offset;
- proto_tree *subtree;
- proto_item *item;
- const value_string *elem_names;
- gint *elem_ett;
- guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string, int string_len);
-
- curr_offset = offset;
- consumed = 0;
-
- SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
-
- oct = tvb_get_guint8(tvb, curr_offset);
-
- if (oct == iei){
- parm_len = tvb_get_guint8(tvb, curr_offset + 1);
-
- item =
- proto_tree_add_text(tree,
- tvb, curr_offset, parm_len + 1 + lengt_length,
- "%s%s",
- elem_names[idx].strptr,
- (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
-
- subtree = proto_item_add_subtree(item, elem_ett[idx]);
-
- proto_tree_add_uint(subtree,
- get_hf_elem_id(pdu_type), tvb,
- curr_offset, 1, oct);
-
- proto_tree_add_uint(subtree, hf_gsm_a_length, tvb,
- curr_offset + 1, lengt_length, parm_len);
-
- if (parm_len > 0)
- {
- if (elem_funcs[idx] == NULL)
- {
- proto_tree_add_text(subtree,
- tvb, curr_offset + 1 + lengt_length, parm_len,
- "Element Value");
- /* See ASSERT above */
- consumed = (guint8)parm_len;
- }
- else
- {
- gchar *a_add_string;
-
- a_add_string=ep_alloc(1024);
- a_add_string[0] = '\0';
- consumed =
- (*elem_funcs[idx])(tvb, subtree, pinfo, curr_offset + 2,
- parm_len, a_add_string, 1024);
-
- if (a_add_string[0] != '\0')
- {
- proto_item_append_text(item, "%s", a_add_string);
- }
- }
- }
-
- consumed += 1 + lengt_length;
- }
-
- return(consumed);
+ guint8 oct;
+ guint16 parm_len;
+ guint8 lengt_length = 1;
+ guint16 consumed;
+ guint32 curr_offset;
+ proto_tree *subtree;
+ proto_item *item;
+ const value_string *elem_names;
+ gint *elem_ett;
+ guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string, int string_len);
+
+ curr_offset = offset;
+ consumed = 0;
+
+ SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
+
+ oct = tvb_get_guint8(tvb, curr_offset);
+
+ if (oct == iei) {
+ parm_len = tvb_get_guint8(tvb, curr_offset + 1);
+
+ item =
+ proto_tree_add_text(tree,
+ tvb, curr_offset, parm_len + 1 + lengt_length,
+ "%s%s",
+ elem_names[idx].strptr,
+ (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
+
+ subtree = proto_item_add_subtree(item, elem_ett[idx]);
+
+ proto_tree_add_uint(subtree,
+ get_hf_elem_id(pdu_type), tvb,
+ curr_offset, 1, oct);
+
+ proto_tree_add_uint(subtree, hf_gsm_a_length, tvb,
+ curr_offset + 1, lengt_length, parm_len);
+
+ if (parm_len > 0)
+ {
+ if (elem_funcs[idx] == NULL)
+ {
+ proto_tree_add_text(subtree,
+ tvb, curr_offset + 1 + lengt_length, parm_len,
+ "Element Value");
+ /* See ASSERT above */
+ consumed = (guint8)parm_len;
+ }
+ else
+ {
+ gchar *a_add_string;
+
+ a_add_string = (gchar *)ep_alloc(1024);
+ a_add_string[0] = '\0';
+ consumed =
+ (*elem_funcs[idx])(tvb, subtree, pinfo, curr_offset + 2,
+ parm_len, a_add_string, 1024);
+
+ if (a_add_string[0] != '\0')
+ {
+ proto_item_append_text(item, "%s", a_add_string);
+ }
+ }
+ }
+
+ consumed += 1 + lengt_length;
+ }
+
+ return(consumed);
}
/*
@@ -1237,83 +1254,83 @@ guint16 elem_tlv(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint8 iei
*/
guint16 elem_telv(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint8 iei, gint pdu_type, int idx, guint32 offset, guint len _U_, const gchar *name_add)
{
- guint8 oct;
- guint16 parm_len;
- guint8 lengt_length = 1;
- guint16 consumed;
- guint32 curr_offset;
- proto_tree *subtree;
- proto_item *item;
- const value_string *elem_names;
- gint *elem_ett;
- guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string, int string_len);
-
- curr_offset = offset;
- consumed = 0;
-
- SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
-
- oct = tvb_get_guint8(tvb, curr_offset);
-
- if (oct == iei){
- parm_len = tvb_get_guint8(tvb, curr_offset + 1);
- if((parm_len&0x80)==0){
- /* length in 2 octets */
- parm_len = tvb_get_ntohs(tvb, curr_offset + 1);
- lengt_length = 2;
- }else{
- parm_len = parm_len & 0x7f;
- }
-
- item =
- proto_tree_add_text(tree,
- tvb, curr_offset, parm_len + 1 + lengt_length,
- "%s%s",
- elem_names[idx].strptr,
- (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
-
- subtree = proto_item_add_subtree(item, elem_ett[idx]);
-
- proto_tree_add_uint(subtree,
- get_hf_elem_id(pdu_type), tvb,
- curr_offset, 1, oct);
-
- proto_tree_add_item(subtree, hf_gsm_a_l_ext, tvb, curr_offset+1, 1, ENC_BIG_ENDIAN);
-
- proto_tree_add_uint(subtree, hf_gsm_a_length, tvb,
- curr_offset + 1, lengt_length, parm_len);
-
- if (parm_len > 0)
- {
- if (elem_funcs[idx] == NULL)
- {
- proto_tree_add_text(subtree,
- tvb, curr_offset + 1 + lengt_length, parm_len,
- "Element Value");
- /* See ASSERT above */
- consumed = parm_len;
- }
- else
- {
- gchar *a_add_string;
-
- a_add_string=ep_alloc(1024);
- a_add_string[0] = '\0';
- consumed =
- (*elem_funcs[idx])(tvb, subtree, pinfo, curr_offset + 1 + lengt_length,
- parm_len, a_add_string, 1024);
-
- if (a_add_string[0] != '\0')
- {
- proto_item_append_text(item, "%s", a_add_string);
- }
- }
- }
-
- consumed += 1 + lengt_length;
- }
-
- return(consumed);
+ guint8 oct;
+ guint16 parm_len;
+ guint8 lengt_length = 1;
+ guint16 consumed;
+ guint32 curr_offset;
+ proto_tree *subtree;
+ proto_item *item;
+ const value_string *elem_names;
+ gint *elem_ett;
+ guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string, int string_len);
+
+ curr_offset = offset;
+ consumed = 0;
+
+ SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
+
+ oct = tvb_get_guint8(tvb, curr_offset);
+
+ if (oct == iei) {
+ parm_len = tvb_get_guint8(tvb, curr_offset + 1);
+ if ((parm_len&0x80) == 0) {
+ /* length in 2 octets */
+ parm_len = tvb_get_ntohs(tvb, curr_offset + 1);
+ lengt_length = 2;
+ }else{
+ parm_len = parm_len & 0x7f;
+ }
+
+ item =
+ proto_tree_add_text(tree,
+ tvb, curr_offset, parm_len + 1 + lengt_length,
+ "%s%s",
+ elem_names[idx].strptr,
+ (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
+
+ subtree = proto_item_add_subtree(item, elem_ett[idx]);
+
+ proto_tree_add_uint(subtree,
+ get_hf_elem_id(pdu_type), tvb,
+ curr_offset, 1, oct);
+
+ proto_tree_add_item(subtree, hf_gsm_a_l_ext, tvb, curr_offset+1, 1, ENC_BIG_ENDIAN);
+
+ proto_tree_add_uint(subtree, hf_gsm_a_length, tvb,
+ curr_offset + 1, lengt_length, parm_len);
+
+ if (parm_len > 0)
+ {
+ if (elem_funcs[idx] == NULL)
+ {
+ proto_tree_add_text(subtree,
+ tvb, curr_offset + 1 + lengt_length, parm_len,
+ "Element Value");
+ /* See ASSERT above */
+ consumed = parm_len;
+ }
+ else
+ {
+ gchar *a_add_string;
+
+ a_add_string = (gchar*)ep_alloc(1024);
+ a_add_string[0] = '\0';
+ consumed =
+ (*elem_funcs[idx])(tvb, subtree, pinfo, curr_offset + 1 + lengt_length,
+ parm_len, a_add_string, 1024);
+
+ if (a_add_string[0] != '\0')
+ {
+ proto_item_append_text(item, "%s", a_add_string);
+ }
+ }
+ }
+
+ consumed += 1 + lengt_length;
+ }
+
+ return(consumed);
}
/*
@@ -1324,71 +1341,71 @@ guint16 elem_telv(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint8 ie
*/
guint16 elem_tlv_e(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint8 iei, gint pdu_type, int idx, guint32 offset, guint len _U_, const gchar *name_add)
{
- guint8 oct;
- guint16 parm_len;
- guint16 consumed;
- guint32 curr_offset;
- proto_tree *subtree;
- proto_item *item;
- const value_string *elem_names;
- gint *elem_ett;
- guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
-
- curr_offset = offset;
- consumed = 0;
-
- SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
-
- oct = tvb_get_guint8(tvb, curr_offset);
-
- if (oct == iei){
- parm_len = tvb_get_ntohs(tvb, curr_offset + 1);
-
- item = proto_tree_add_text(tree, tvb, curr_offset, parm_len + 1 + 2,
- "%s%s",
- elem_names[idx].strptr,
- (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
-
- subtree = proto_item_add_subtree(item, elem_ett[idx]);
-
- proto_tree_add_uint(subtree,
- get_hf_elem_id(pdu_type), tvb,
- curr_offset, 1, oct);
-
- proto_tree_add_uint(subtree, hf_gsm_a_length, tvb,
- curr_offset + 1, 2, parm_len);
-
- if (parm_len > 0)
- {
- if (elem_funcs[idx] == NULL)
- {
- proto_tree_add_text(subtree,
- tvb, curr_offset + 1 + 2, parm_len,
- "Element Value");
- /* See ASSERT above */
- consumed = parm_len;
- }
- else
- {
- gchar *a_add_string;
-
- a_add_string=ep_alloc(1024);
- a_add_string[0] = '\0';
- consumed =
- (*elem_funcs[idx])(tvb, subtree, pinfo, curr_offset + 1 + 2,
- parm_len, a_add_string, 1024);
-
- if (a_add_string[0] != '\0')
- {
- proto_item_append_text(item, "%s", a_add_string);
- }
- }
- }
-
- consumed += 1 + 2;
- }
-
- return(consumed);
+ guint8 oct;
+ guint16 parm_len;
+ guint16 consumed;
+ guint32 curr_offset;
+ proto_tree *subtree;
+ proto_item *item;
+ const value_string *elem_names;
+ gint *elem_ett;
+ guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
+
+ curr_offset = offset;
+ consumed = 0;
+
+ SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
+
+ oct = tvb_get_guint8(tvb, curr_offset);
+
+ if (oct == iei) {
+ parm_len = tvb_get_ntohs(tvb, curr_offset + 1);
+
+ item = proto_tree_add_text(tree, tvb, curr_offset, parm_len + 1 + 2,
+ "%s%s",
+ elem_names[idx].strptr,
+ (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
+
+ subtree = proto_item_add_subtree(item, elem_ett[idx]);
+
+ proto_tree_add_uint(subtree,
+ get_hf_elem_id(pdu_type), tvb,
+ curr_offset, 1, oct);
+
+ proto_tree_add_uint(subtree, hf_gsm_a_length, tvb,
+ curr_offset + 1, 2, parm_len);
+
+ if (parm_len > 0)
+ {
+ if (elem_funcs[idx] == NULL)
+ {
+ proto_tree_add_text(subtree,
+ tvb, curr_offset + 1 + 2, parm_len,
+ "Element Value");
+ /* See ASSERT above */
+ consumed = parm_len;
+ }
+ else
+ {
+ gchar *a_add_string;
+
+ a_add_string = (gchar*)ep_alloc(1024);
+ a_add_string[0] = '\0';
+ consumed =
+ (*elem_funcs[idx])(tvb, subtree, pinfo, curr_offset + 1 + 2,
+ parm_len, a_add_string, 1024);
+
+ if (a_add_string[0] != '\0')
+ {
+ proto_item_append_text(item, "%s", a_add_string);
+ }
+ }
+ }
+
+ consumed += 1 + 2;
+ }
+
+ return(consumed);
}
/*
@@ -1399,67 +1416,67 @@ guint16 elem_tlv_e(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint8 i
*/
guint16 elem_tv(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint8 iei, gint pdu_type, int idx, guint32 offset, const gchar *name_add)
{
- guint8 oct;
- guint16 consumed;
- guint32 curr_offset;
- proto_tree *subtree;
- proto_item *item;
- const value_string *elem_names;
- gint *elem_ett;
- guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
-
- curr_offset = offset;
- consumed = 0;
-
- SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
-
- oct = tvb_get_guint8(tvb, curr_offset);
-
- if (oct == iei)
- {
- item =
- proto_tree_add_text(tree,
- tvb, curr_offset, -1,
- "%s%s",
- elem_names[idx].strptr,
- (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
-
- subtree = proto_item_add_subtree(item, elem_ett[idx]);
-
- proto_tree_add_uint(subtree,
- get_hf_elem_id(pdu_type), tvb,
- curr_offset, 1, oct);
-
- if (elem_funcs[idx] == NULL)
- {
- /* BAD THING, CANNOT DETERMINE LENGTH */
-
- proto_tree_add_text(subtree,
- tvb, curr_offset + 1, 1,
- "No element dissector, rest of dissection may be incorrect");
-
- consumed = 1;
- }
- else
- {
- gchar *a_add_string;
-
- a_add_string=ep_alloc(1024);
- a_add_string[0] = '\0';
- consumed = (*elem_funcs[idx])(tvb, subtree, pinfo, curr_offset + 1, -1, a_add_string, 1024);
-
- if (a_add_string[0] != '\0')
- {
- proto_item_append_text(item, "%s", a_add_string);
- }
- }
-
- consumed++;
-
- proto_item_set_len(item, consumed);
- }
-
- return(consumed);
+ guint8 oct;
+ guint16 consumed;
+ guint32 curr_offset;
+ proto_tree *subtree;
+ proto_item *item;
+ const value_string *elem_names;
+ gint *elem_ett;
+ guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
+
+ curr_offset = offset;
+ consumed = 0;
+
+ SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
+
+ oct = tvb_get_guint8(tvb, curr_offset);
+
+ if (oct == iei)
+ {
+ item =
+ proto_tree_add_text(tree,
+ tvb, curr_offset, -1,
+ "%s%s",
+ elem_names[idx].strptr,
+ (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
+
+ subtree = proto_item_add_subtree(item, elem_ett[idx]);
+
+ proto_tree_add_uint(subtree,
+ get_hf_elem_id(pdu_type), tvb,
+ curr_offset, 1, oct);
+
+ if (elem_funcs[idx] == NULL)
+ {
+ /* BAD THING, CANNOT DETERMINE LENGTH */
+
+ proto_tree_add_text(subtree,
+ tvb, curr_offset + 1, 1,
+ "No element dissector, rest of dissection may be incorrect");
+
+ consumed = 1;
+ }
+ else
+ {
+ gchar *a_add_string;
+
+ a_add_string = (gchar*)ep_alloc(1024);
+ a_add_string[0] = '\0';
+ consumed = (*elem_funcs[idx])(tvb, subtree, pinfo, curr_offset + 1, -1, a_add_string, 1024);
+
+ if (a_add_string[0] != '\0')
+ {
+ proto_item_append_text(item, "%s", a_add_string);
+ }
+ }
+
+ consumed++;
+
+ proto_item_set_len(item, consumed);
+ }
+
+ return(consumed);
}
/*
@@ -1471,68 +1488,68 @@ guint16 elem_tv(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint8 iei,
*/
guint16 elem_tv_short(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint8 iei, gint pdu_type, int idx, guint32 offset, const gchar *name_add)
{
- guint8 oct;
- guint16 consumed;
- guint32 curr_offset;
- proto_tree *subtree;
- proto_item *item;
- const value_string *elem_names;
- gint *elem_ett;
- guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
- char buf[10+1];
-
- curr_offset = offset;
- consumed = 0;
-
- SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
-
- oct = tvb_get_guint8(tvb, curr_offset);
-
- if ((oct & 0xf0) == (iei & 0xf0))
- {
- item =
- proto_tree_add_text(tree,
- tvb, curr_offset, -1,
- "%s%s",
- elem_names[idx].strptr,
- (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
-
- subtree = proto_item_add_subtree(item, elem_ett[idx]);
-
- other_decode_bitfield_value(buf, oct, 0xf0, 8);
- proto_tree_add_text(subtree,
- tvb, curr_offset, 1,
- "%s = Element ID",
- buf);
-
- if (elem_funcs[idx] == NULL)
- {
- /* BAD THING, CANNOT DETERMINE LENGTH */
-
- proto_tree_add_text(subtree,
- tvb, curr_offset, 1,
- "No element dissector, rest of dissection may be incorrect");
-
- consumed++;
- }
- else
- {
- gchar *a_add_string;
-
- a_add_string=ep_alloc(1024);
- a_add_string[0] = '\0';
- consumed = (*elem_funcs[idx])(tvb, subtree, pinfo, curr_offset, RIGHT_NIBBLE, a_add_string, 1024);
-
- if (a_add_string[0] != '\0')
- {
- proto_item_append_text(item, "%s", a_add_string);
- }
- }
-
- proto_item_set_len(item, consumed);
- }
-
- return(consumed);
+ guint8 oct;
+ guint16 consumed;
+ guint32 curr_offset;
+ proto_tree *subtree;
+ proto_item *item;
+ const value_string *elem_names;
+ gint *elem_ett;
+ guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
+ char buf[10+1];
+
+ curr_offset = offset;
+ consumed = 0;
+
+ SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
+
+ oct = tvb_get_guint8(tvb, curr_offset);
+
+ if ((oct & 0xf0) == (iei & 0xf0))
+ {
+ item =
+ proto_tree_add_text(tree,
+ tvb, curr_offset, -1,
+ "%s%s",
+ elem_names[idx].strptr,
+ (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
+
+ subtree = proto_item_add_subtree(item, elem_ett[idx]);
+
+ other_decode_bitfield_value(buf, oct, 0xf0, 8);
+ proto_tree_add_text(subtree,
+ tvb, curr_offset, 1,
+ "%s = Element ID: 0x%1x-",
+ buf, oct>>4);
+
+ if (elem_funcs[idx] == NULL)
+ {
+ /* BAD THING, CANNOT DETERMINE LENGTH */
+
+ proto_tree_add_text(subtree,
+ tvb, curr_offset, 1,
+ "No element dissector, rest of dissection may be incorrect");
+
+ consumed++;
+ }
+ else
+ {
+ gchar *a_add_string;
+
+ a_add_string = (gchar*)ep_alloc(1024);
+ a_add_string[0] = '\0';
+ consumed = (*elem_funcs[idx])(tvb, subtree, pinfo, curr_offset, RIGHT_NIBBLE, a_add_string, 1024);
+
+ if (a_add_string[0] != '\0')
+ {
+ proto_item_append_text(item, "%s", a_add_string);
+ }
+ }
+
+ proto_item_set_len(item, consumed);
+ }
+
+ return(consumed);
}
/*
@@ -1540,33 +1557,33 @@ guint16 elem_tv_short(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint
*/
guint16 elem_t(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint8 iei, gint pdu_type, int idx, guint32 offset, const gchar *name_add)
{
- guint8 oct;
- guint32 curr_offset;
- guint16 consumed;
- const value_string *elem_names;
- gint *elem_ett;
- guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
+ guint8 oct;
+ guint32 curr_offset;
+ guint16 consumed;
+ const value_string *elem_names;
+ gint *elem_ett;
+ guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
- curr_offset = offset;
- consumed = 0;
+ curr_offset = offset;
+ consumed = 0;
- SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
+ SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
- oct = tvb_get_guint8(tvb, curr_offset);
+ oct = tvb_get_guint8(tvb, curr_offset);
- if (oct == iei)
- {
- proto_tree_add_uint_format(tree,
- get_hf_elem_id(pdu_type), tvb,
- curr_offset, 1, oct,
- "%s%s",
- elem_names[idx].strptr,
- (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
+ if (oct == iei)
+ {
+ proto_tree_add_uint_format(tree,
+ get_hf_elem_id(pdu_type), tvb,
+ curr_offset, 1, oct,
+ "%s%s",
+ elem_names[idx].strptr,
+ (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
- consumed = 1;
- }
+ consumed = 1;
+ }
- return(consumed);
+ return(consumed);
}
/*
@@ -1575,62 +1592,62 @@ guint16 elem_t(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint8 i
guint16
elem_lv(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gint pdu_type, int idx, guint32 offset, guint len _U_, const gchar *name_add)
{
- guint8 parm_len;
- guint16 consumed;
- guint32 curr_offset;
- proto_tree *subtree;
- proto_item *item;
- const value_string *elem_names;
- gint *elem_ett;
- guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
-
- curr_offset = offset;
- consumed = 0;
-
- SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
-
- parm_len = tvb_get_guint8(tvb, curr_offset);
-
- item =
- proto_tree_add_text(tree,
- tvb, curr_offset, parm_len + 1,
- "%s%s",
- elem_names[idx].strptr,
- (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
-
- subtree = proto_item_add_subtree(item, elem_ett[idx]);
-
- proto_tree_add_uint(subtree, hf_gsm_a_length, tvb,
- curr_offset, 1, parm_len);
-
- if (parm_len > 0)
- {
- if (elem_funcs[idx] == NULL)
- {
- proto_tree_add_text(subtree,
- tvb, curr_offset + 1, parm_len,
- "Element Value");
-
- consumed = parm_len;
- }
- else
- {
- gchar *a_add_string;
-
- a_add_string=ep_alloc(1024);
- a_add_string[0] = '\0';
- consumed =
- (*elem_funcs[idx])(tvb, subtree, pinfo, curr_offset + 1,
- parm_len, a_add_string, 1024);
-
- if (a_add_string[0] != '\0')
- {
- proto_item_append_text(item, "%s", a_add_string);
- }
- }
- }
-
- return(consumed + 1);
+ guint8 parm_len;
+ guint16 consumed;
+ guint32 curr_offset;
+ proto_tree *subtree;
+ proto_item *item;
+ const value_string *elem_names;
+ gint *elem_ett;
+ guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
+
+ curr_offset = offset;
+ consumed = 0;
+
+ SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
+
+ parm_len = tvb_get_guint8(tvb, curr_offset);
+
+ item =
+ proto_tree_add_text(tree,
+ tvb, curr_offset, parm_len + 1,
+ "%s%s",
+ elem_names[idx].strptr,
+ (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
+
+ subtree = proto_item_add_subtree(item, elem_ett[idx]);
+
+ proto_tree_add_uint(subtree, hf_gsm_a_length, tvb,
+ curr_offset, 1, parm_len);
+
+ if (parm_len > 0)
+ {
+ if (elem_funcs[idx] == NULL)
+ {
+ proto_tree_add_text(subtree,
+ tvb, curr_offset + 1, parm_len,
+ "Element Value");
+
+ consumed = parm_len;
+ }
+ else
+ {
+ gchar *a_add_string;
+
+ a_add_string = (gchar*)ep_alloc(1024);
+ a_add_string[0] = '\0';
+ consumed =
+ (*elem_funcs[idx])(tvb, subtree, pinfo, curr_offset + 1,
+ parm_len, a_add_string, 1024);
+
+ if (a_add_string[0] != '\0')
+ {
+ proto_item_append_text(item, "%s", a_add_string);
+ }
+ }
+ }
+
+ return(consumed + 1);
}
/*
@@ -1638,60 +1655,60 @@ elem_lv(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gint pdu_type, int
*/
guint16 elem_lv_e(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gint pdu_type, int idx, guint32 offset, guint len _U_, const gchar *name_add)
{
- guint16 parm_len;
- guint16 consumed;
- guint32 curr_offset;
- proto_tree *subtree;
- proto_item *item;
- const value_string *elem_names;
- gint *elem_ett;
- guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
-
- curr_offset = offset;
- consumed = 0;
-
- SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
-
- parm_len = tvb_get_ntohs(tvb, curr_offset);
-
- item = proto_tree_add_text(tree, tvb, curr_offset, parm_len + 2,
- "%s%s",
- elem_names[idx].strptr,
- (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
-
- subtree = proto_item_add_subtree(item, elem_ett[idx]);
-
- proto_tree_add_uint(subtree, hf_gsm_a_length, tvb,
- curr_offset, 2, parm_len);
-
- if (parm_len > 0)
- {
- if (elem_funcs[idx] == NULL)
- {
- proto_tree_add_text(subtree,
- tvb, curr_offset + 2, parm_len,
- "Element Value");
-
- consumed = parm_len;
- }
- else
- {
- gchar *a_add_string;
-
- a_add_string=ep_alloc(1024);
- a_add_string[0] = '\0';
- consumed =
- (*elem_funcs[idx])(tvb, subtree, pinfo, curr_offset + 2,
- parm_len, a_add_string, 1024);
-
- if (a_add_string[0] != '\0')
- {
- proto_item_append_text(item, "%s", a_add_string);
- }
- }
- }
-
- return(consumed + 2);
+ guint16 parm_len;
+ guint16 consumed;
+ guint32 curr_offset;
+ proto_tree *subtree;
+ proto_item *item;
+ const value_string *elem_names;
+ gint *elem_ett;
+ guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
+
+ curr_offset = offset;
+ consumed = 0;
+
+ SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
+
+ parm_len = tvb_get_ntohs(tvb, curr_offset);
+
+ item = proto_tree_add_text(tree, tvb, curr_offset, parm_len + 2,
+ "%s%s",
+ elem_names[idx].strptr,
+ (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
+
+ subtree = proto_item_add_subtree(item, elem_ett[idx]);
+
+ proto_tree_add_uint(subtree, hf_gsm_a_length, tvb,
+ curr_offset, 2, parm_len);
+
+ if (parm_len > 0)
+ {
+ if (elem_funcs[idx] == NULL)
+ {
+ proto_tree_add_text(subtree,
+ tvb, curr_offset + 2, parm_len,
+ "Element Value");
+
+ consumed = parm_len;
+ }
+ else
+ {
+ gchar *a_add_string;
+
+ a_add_string = (gchar*)ep_alloc(1024);
+ a_add_string[0] = '\0';
+ consumed =
+ (*elem_funcs[idx])(tvb, subtree, pinfo, curr_offset + 2,
+ parm_len, a_add_string, 1024);
+
+ if (a_add_string[0] != '\0')
+ {
+ proto_item_append_text(item, "%s", a_add_string);
+ }
+ }
+ }
+
+ return(consumed + 2);
}
/*
* Value (V) element dissector
@@ -1701,53 +1718,53 @@ guint16 elem_lv_e(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gint pdu_
*/
guint16 elem_v(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gint pdu_type, int idx, guint32 offset, const gchar *name_add)
{
- guint16 consumed;
- guint32 curr_offset;
- proto_tree *subtree;
- proto_item *item;
- const value_string *elem_names;
- gint *elem_ett;
- guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string, int string_len);
-
- curr_offset = offset;
- consumed = 0;
-
- SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
-
- if (elem_funcs[idx] == NULL)
- {
- /* BAD THING, CANNOT DETERMINE LENGTH */
-
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "No element dissector, rest of dissection may be incorrect");
-
- consumed = 1;
- }
- else
- {
- gchar *a_add_string;
-
- item =
- proto_tree_add_text(tree,
- tvb, curr_offset, 0,
- "%s%s",
- elem_names[idx].strptr,
- (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
-
- subtree = proto_item_add_subtree(item, elem_ett[idx]);
-
- a_add_string=ep_alloc(1024);
- a_add_string[0] = '\0';
- consumed = (*elem_funcs[idx])(tvb, subtree, pinfo, curr_offset, -1, a_add_string, 1024);
- if (a_add_string[0] != '\0')
- {
- proto_item_append_text(item, "%s", a_add_string);
- }
- proto_item_set_len(item, consumed);
- }
-
- return(consumed);
+ guint16 consumed;
+ guint32 curr_offset;
+ proto_tree *subtree;
+ proto_item *item;
+ const value_string *elem_names;
+ gint *elem_ett;
+ guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string, int string_len);
+
+ curr_offset = offset;
+ consumed = 0;
+
+ SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
+
+ if (elem_funcs[idx] == NULL)
+ {
+ /* BAD THING, CANNOT DETERMINE LENGTH */
+
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "No element dissector, rest of dissection may be incorrect");
+
+ consumed = 1;
+ }
+ else
+ {
+ gchar *a_add_string;
+
+ item =
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 0,
+ "%s%s",
+ elem_names[idx].strptr,
+ (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
+
+ subtree = proto_item_add_subtree(item, elem_ett[idx]);
+
+ a_add_string= (gchar*)ep_alloc(1024);
+ a_add_string[0] = '\0';
+ consumed = (*elem_funcs[idx])(tvb, subtree, pinfo, curr_offset, -1, a_add_string, 1024);
+ if (a_add_string[0] != '\0')
+ {
+ proto_item_append_text(item, "%s", a_add_string);
+ }
+ proto_item_set_len(item, consumed);
+ }
+
+ return(consumed);
}
/*
@@ -1759,62 +1776,62 @@ guint16 elem_v(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gint pdu_typ
guint16 elem_v_short(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gint pdu_type, int idx, guint32 offset, guint32 nibble)
{
- guint16 consumed = 1;
- guint32 curr_offset;
- proto_tree *subtree;
- proto_item *item;
- const value_string *elem_names;
- gint *elem_ett;
- elem_fcn *elem_funcs;
- gchar *a_add_string;
-
- curr_offset = offset;
-
- SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
-
- item = proto_tree_add_text(tree,
- tvb, curr_offset, 0,
- "%s%s",
- elem_names[idx].strptr,
- "");
-
- subtree = proto_item_add_subtree(item, elem_ett[idx]);
-
- a_add_string=ep_alloc(1024);
- a_add_string[0] = '\0';
-
- if (elem_funcs[idx] == NULL)
- {
- /* NOT NECESSARILY A BAD THING - LENGTH IS HALF OCTET */
- (void)de_spare_nibble(tvb, subtree, pinfo, curr_offset, nibble, a_add_string, 1024);
- }
- else
- {
- (void)(*elem_funcs[idx])(tvb, subtree, pinfo, curr_offset, nibble, a_add_string, 1024);
- }
-
- if (a_add_string[0] != '\0')
- {
- proto_item_append_text(item, "%s", a_add_string);
- }
- proto_item_set_len(item, consumed);
-
- return(consumed);
+ guint16 consumed = 1;
+ guint32 curr_offset;
+ proto_tree *subtree;
+ proto_item *item;
+ const value_string *elem_names;
+ gint *elem_ett;
+ elem_fcn *elem_funcs;
+ gchar *a_add_string;
+
+ curr_offset = offset;
+
+ SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
+
+ item = proto_tree_add_text(tree,
+ tvb, curr_offset, 0,
+ "%s%s",
+ elem_names[idx].strptr,
+ "");
+
+ subtree = proto_item_add_subtree(item, elem_ett[idx]);
+
+ a_add_string= (gchar*)ep_alloc(1024);
+ a_add_string[0] = '\0';
+
+ if (elem_funcs[idx] == NULL)
+ {
+ /* NOT NECESSARILY A BAD THING - LENGTH IS HALF OCTET */
+ (void)de_spare_nibble(tvb, subtree, pinfo, curr_offset, nibble, a_add_string, 1024);
+ }
+ else
+ {
+ (void)(*elem_funcs[idx])(tvb, subtree, pinfo, curr_offset, nibble, a_add_string, 1024);
+ }
+
+ if (a_add_string[0] != '\0')
+ {
+ proto_item_append_text(item, "%s", a_add_string);
+ }
+ proto_item_set_len(item, consumed);
+
+ return(consumed);
}
static dgt_set_t Dgt_tbcd = {
- {
+ {
/* 0 1 2 3 4 5 6 7 8 9 a b c d e */
- '0','1','2','3','4','5','6','7','8','9','?','B','C','*','#'
- }
+ '0','1','2','3','4','5','6','7','8','9','?','B','C','*','#'
+ }
};
static dgt_set_t Dgt1_9_bcd = {
- {
+ {
/* 0 1 2 3 4 5 6 7 8 9 a b c d e */
- '0','1','2','3','4','5','6','7','8','9','?','?','?','?','?'
- }
+ '0','1','2','3','4','5','6','7','8','9','?','?','?','?','?'
+ }
};
/* FUNCTIONS */
@@ -1828,40 +1845,40 @@ static dgt_set_t Dgt1_9_bcd = {
*/
int
my_dgt_tbcd_unpack(
- char *out, /* ASCII pattern out */
- guchar *in, /* packed pattern in */
- int num_octs, /* Number of octets to unpack */
- dgt_set_t *dgt /* Digit definitions */
- )
+ char *out, /* ASCII pattern out */
+ guchar *in, /* packed pattern in */
+ int num_octs, /* Number of octets to unpack */
+ dgt_set_t *dgt /* Digit definitions */
+ )
{
- int cnt = 0;
- unsigned char i;
-
- while (num_octs)
- {
- /*
- * unpack first value in byte
- */
- i = *in++;
- *out++ = dgt->out[i & 0x0f];
- cnt++;
-
- /*
- * unpack second value in byte
- */
- i >>= 4;
-
- if (i == 0x0f) /* odd number bytes - hit filler */
- break;
-
- *out++ = dgt->out[i];
- cnt++;
- num_octs--;
- }
-
- *out = '\0';
-
- return(cnt);
+ int cnt = 0;
+ unsigned char i;
+
+ while (num_octs)
+ {
+ /*
+ * unpack first value in byte
+ */
+ i = *in++;
+ *out++ = dgt->out[i & 0x0f];
+ cnt++;
+
+ /*
+ * unpack second value in byte
+ */
+ i >>= 4;
+
+ if (i == 0x0f) /* odd number bytes - hit filler */
+ break;
+
+ *out++ = dgt->out[i];
+ cnt++;
+ num_octs--;
+ }
+
+ *out = '\0';
+
+ return(cnt);
}
/*
@@ -1870,80 +1887,80 @@ my_dgt_tbcd_unpack(
static void
mcc_mnc_aux(guint8 *octs, gchar *mcc, gchar *mnc)
{
- if ((octs[0] & 0x0f) <= 9)
- {
- mcc[0] = Dgt_tbcd.out[octs[0] & 0x0f];
- }
- else
- {
- mcc[0] = (octs[0] & 0x0f) + 55;
- }
-
- if (((octs[0] & 0xf0) >> 4) <= 9)
- {
- mcc[1] = Dgt_tbcd.out[(octs[0] & 0xf0) >> 4];
- }
- else
- {
- mcc[1] = ((octs[0] & 0xf0) >> 4) + 55;
- }
-
- if ((octs[1] & 0x0f) <= 9)
- {
- mcc[2] = Dgt_tbcd.out[octs[1] & 0x0f];
- }
- else
- {
- mcc[2] = (octs[1] & 0x0f) + 55;
- }
-
- mcc[3] = '\0';
-
- if (((octs[1] & 0xf0) >> 4) <= 9)
- {
- mnc[2] = Dgt_tbcd.out[(octs[1] & 0xf0) >> 4];
- }
- else
- {
- mnc[2] = ((octs[1] & 0xf0) >> 4) + 55;
- }
-
- if ((octs[2] & 0x0f) <= 9)
- {
- mnc[0] = Dgt_tbcd.out[octs[2] & 0x0f];
- }
- else
- {
- mnc[0] = (octs[2] & 0x0f) + 55;
- }
-
- if (((octs[2] & 0xf0) >> 4) <= 9)
- {
- mnc[1] = Dgt_tbcd.out[(octs[2] & 0xf0) >> 4];
- }
- else
- {
- mnc[1] = ((octs[2] & 0xf0) >> 4) + 55;
- }
-
- if (mnc[1] == 'F')
- {
- /*
- * only a 1 digit MNC (very old)
- */
- mnc[1] = '\0';
- }
- else if (mnc[2] == 'F')
- {
- /*
- * only a 2 digit MNC
- */
- mnc[2] = '\0';
- }
- else
- {
- mnc[3] = '\0';
- }
+ if ((octs[0] & 0x0f) <= 9)
+ {
+ mcc[0] = Dgt_tbcd.out[octs[0] & 0x0f];
+ }
+ else
+ {
+ mcc[0] = (octs[0] & 0x0f) + 55;
+ }
+
+ if (((octs[0] & 0xf0) >> 4) <= 9)
+ {
+ mcc[1] = Dgt_tbcd.out[(octs[0] & 0xf0) >> 4];
+ }
+ else
+ {
+ mcc[1] = ((octs[0] & 0xf0) >> 4) + 55;
+ }
+
+ if ((octs[1] & 0x0f) <= 9)
+ {
+ mcc[2] = Dgt_tbcd.out[octs[1] & 0x0f];
+ }
+ else
+ {
+ mcc[2] = (octs[1] & 0x0f) + 55;
+ }
+
+ mcc[3] = '\0';
+
+ if (((octs[1] & 0xf0) >> 4) <= 9)
+ {
+ mnc[2] = Dgt_tbcd.out[(octs[1] & 0xf0) >> 4];
+ }
+ else
+ {
+ mnc[2] = ((octs[1] & 0xf0) >> 4) + 55;
+ }
+
+ if ((octs[2] & 0x0f) <= 9)
+ {
+ mnc[0] = Dgt_tbcd.out[octs[2] & 0x0f];
+ }
+ else
+ {
+ mnc[0] = (octs[2] & 0x0f) + 55;
+ }
+
+ if (((octs[2] & 0xf0) >> 4) <= 9)
+ {
+ mnc[1] = Dgt_tbcd.out[(octs[2] & 0xf0) >> 4];
+ }
+ else
+ {
+ mnc[1] = ((octs[2] & 0xf0) >> 4) + 55;
+ }
+
+ if (mnc[1] == 'F')
+ {
+ /*
+ * only a 1 digit MNC (very old)
+ */
+ mnc[1] = '\0';
+ }
+ else if (mnc[2] == 'F')
+ {
+ /*
+ * only a 2 digit MNC
+ */
+ mnc[2] = '\0';
+ }
+ else
+ {
+ mnc[3] = '\0';
+ }
}
/* 3GPP TS 24.008
@@ -1952,17 +1969,17 @@ mcc_mnc_aux(guint8 *octs, gchar *mcc, gchar *mnc)
guint16
de_cell_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string, int string_len)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- curr_offset +=
- /* 0x02 CI */
- be_cell_id_aux(tvb, tree, pinfo, offset, len, add_string, string_len, 0x02);
+ curr_offset +=
+ /* 0x02 CI */
+ be_cell_id_aux(tvb, tree, pinfo, offset, len, add_string, string_len, 0x02);
- /* no length check possible */
+ /* no length check possible */
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
* 10.5.1.2 Ciphering Key Sequence Number
@@ -1981,29 +1998,29 @@ de_cell_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offs
*/
static const value_string gsm_a_key_seq_vals[] = {
- { 0, "Cipering key sequence number"},
- { 1, "Cipering key sequence number"},
- { 2, "Cipering key sequence number"},
- { 3, "Cipering key sequence number"},
- { 4, "Cipering key sequence number"},
- { 5, "Cipering key sequence number"},
- { 6, "Cipering key sequence number"},
- { 7, "No key is available (MS to network)"},
- { 0, NULL }
+ { 0, "Cipering key sequence number"},
+ { 1, "Cipering key sequence number"},
+ { 2, "Cipering key sequence number"},
+ { 3, "Cipering key sequence number"},
+ { 4, "Cipering key sequence number"},
+ { 5, "Cipering key sequence number"},
+ { 6, "Cipering key sequence number"},
+ { 7, "No key is available (MS to network)"},
+ { 0, NULL }
};
-guint16
+static guint16
de_ciph_key_seq_num( tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, (curr_offset<<3)+4, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_gsm_a_key_seq, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, (curr_offset<<3)+4, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_key_seq, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
@@ -2014,42 +2031,41 @@ de_ciph_key_seq_num( tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gu
guint16
de_lai(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint8 octs[3];
- guint16 value;
- guint32 curr_offset;
- proto_tree *subtree;
- proto_item *item;
- gchar mcc[4];
- gchar mnc[4];
+ guint8 octs[3];
+ guint16 value;
+ guint32 curr_offset;
+ proto_tree *subtree;
+ proto_item *item;
+ gchar mcc[4];
+ gchar mnc[4];
- curr_offset = offset;
+ curr_offset = offset;
- item =
- proto_tree_add_text(tree,
- tvb, curr_offset, 5, "%s",
- gsm_common_elem_strings[DE_LAI].strptr);
+ item = proto_tree_add_text(tree,
+ tvb, curr_offset, 5, "%s",
+ gsm_common_elem_strings[DE_LAI].strptr);
- subtree = proto_item_add_subtree(item, ett_gsm_common_elem[DE_LAI]);
+ subtree = proto_item_add_subtree(item, ett_gsm_common_elem[DE_LAI]);
- octs[0] = tvb_get_guint8(tvb, curr_offset);
- octs[1] = tvb_get_guint8(tvb, curr_offset + 1);
- octs[2] = tvb_get_guint8(tvb, curr_offset + 2);
+ octs[0] = tvb_get_guint8(tvb, curr_offset);
+ octs[1] = tvb_get_guint8(tvb, curr_offset + 1);
+ octs[2] = tvb_get_guint8(tvb, curr_offset + 2);
- mcc_mnc_aux(octs, mcc, mnc);
+ mcc_mnc_aux(octs, mcc, mnc);
- curr_offset = dissect_e212_mcc_mnc(tvb, pinfo, subtree, curr_offset, TRUE);
+ curr_offset = dissect_e212_mcc_mnc(tvb, pinfo, subtree, curr_offset, TRUE);
- value = tvb_get_ntohs(tvb, curr_offset);
+ value = tvb_get_ntohs(tvb, curr_offset);
- proto_tree_add_item(subtree, hf_gsm_a_lac, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_gsm_a_lac, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
- proto_item_append_text(item, " - %s/%s/%u", mcc,mnc,value);
+ proto_item_append_text(item, " - %s/%s/%u", mcc,mnc,value);
- curr_offset += 2;
+ curr_offset += 2;
- /* no length check possible */
+ /* no length check possible */
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
@@ -2057,212 +2073,212 @@ de_lai(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guin
* 3GPP TS 24.008 version 7.8.0 Release 7
*/
static const true_false_string gsm_a_present_vals = {
- "Present" ,
- "Not present"
+ "Present" ,
+ "Not present"
};
guint16
de_mid(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len)
{
- guint8 oct;
- guint32 curr_offset;
- guint8 *poctets;
- guint32 value;
- gboolean odd;
+ guint8 oct;
+ guint32 curr_offset;
+ guint8 *poctets;
+ guint32 value;
+ gboolean odd;
- curr_offset = offset;
+ curr_offset = offset;
- oct = tvb_get_guint8(tvb, curr_offset);
+ oct = tvb_get_guint8(tvb, curr_offset);
- switch (oct & 0x07)
- {
- case 0: /* No Identity */
- other_decode_bitfield_value(a_bigbuf, oct, 0xf0, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = Unused",
- a_bigbuf);
+ switch (oct & 0x07)
+ {
+ case 0: /* No Identity */
+ other_decode_bitfield_value(a_bigbuf, oct, 0xf0, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = Unused",
+ a_bigbuf);
- proto_tree_add_item(tree, hf_gsm_a_odd_even_ind, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_odd_even_ind, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_gsm_a_mobile_identity_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_mobile_identity_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- if (add_string)
- g_snprintf(add_string, string_len, " - No Identity Code");
+ if (add_string)
+ g_snprintf(add_string, string_len, " - No Identity Code");
- curr_offset++;
+ curr_offset++;
- if (len > 1)
- {
- proto_tree_add_text(tree, tvb, curr_offset, len - 1,
- "Format not supported");
- }
+ if (len > 1)
+ {
+ proto_tree_add_text(tree, tvb, curr_offset, len - 1,
+ "Format not supported");
+ }
- curr_offset += len - 1;
- break;
+ curr_offset += len - 1;
+ break;
- case 3: /* IMEISV */
- /* FALLTHRU */
+ case 3: /* IMEISV */
+ /* FALLTHRU */
- case 1: /* IMSI */
- other_decode_bitfield_value(a_bigbuf, oct, 0xf0, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = Identity Digit 1: %c",
- a_bigbuf,
- Dgt1_9_bcd.out[(oct & 0xf0) >> 4]);
+ case 1: /* IMSI */
+ other_decode_bitfield_value(a_bigbuf, oct, 0xf0, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = Identity Digit 1: %c",
+ a_bigbuf,
+ Dgt1_9_bcd.out[(oct & 0xf0) >> 4]);
- odd = oct & 0x08;
+ odd = oct & 0x08;
- proto_tree_add_item(tree, hf_gsm_a_odd_even_ind, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_odd_even_ind, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_gsm_a_mobile_identity_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_mobile_identity_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- a_bigbuf[0] = Dgt1_9_bcd.out[(oct & 0xf0) >> 4];
- curr_offset++;
+ a_bigbuf[0] = Dgt1_9_bcd.out[(oct & 0xf0) >> 4];
+ curr_offset++;
- poctets = tvb_get_ephemeral_string(tvb, curr_offset, len - (curr_offset - offset));
+ poctets = tvb_get_ephemeral_string(tvb, curr_offset, len - (curr_offset - offset));
- my_dgt_tbcd_unpack(&a_bigbuf[1], poctets, len - (curr_offset - offset),
- &Dgt1_9_bcd);
+ my_dgt_tbcd_unpack(&a_bigbuf[1], poctets, len - (curr_offset - offset),
+ &Dgt1_9_bcd);
- proto_tree_add_string_format(tree,
- ((oct & 0x07) == 3) ? hf_gsm_a_imeisv : hf_gsm_a_imsi,
- tvb, curr_offset - 1, len - (curr_offset - offset) + 1,
- a_bigbuf,
- "BCD Digits: %s",
- a_bigbuf);
-
- if (sccp_assoc && ! sccp_assoc->calling_party) {
- sccp_assoc->calling_party = se_strdup_printf(
- ((oct & 0x07) == 3) ? "IMEISV: %s" : "IMSI: %s",
- a_bigbuf );
- }
-
- if (add_string)
- g_snprintf(add_string, string_len, " - %s (%s)",
- ((oct & 0x07) == 3) ? "IMEISV" : "IMSI",
- a_bigbuf);
-
- curr_offset += len - (curr_offset - offset);
-
- if (!odd)
- {
- oct = tvb_get_guint8(tvb, curr_offset - 1);
-
- other_decode_bitfield_value(a_bigbuf, oct, 0xf0, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset - 1, 1,
- "%s = Filler",
- a_bigbuf);
- }
- break;
-
- case 2: /* IMEI */
- other_decode_bitfield_value(a_bigbuf, oct, 0xf0, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = Identity Digit 1: %c",
- a_bigbuf,
- Dgt1_9_bcd.out[(oct & 0xf0) >> 4]);
-
- proto_tree_add_item(tree, hf_gsm_a_odd_even_ind, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
-
- proto_tree_add_item(tree, hf_gsm_a_mobile_identity_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
-
- a_bigbuf[0] = Dgt1_9_bcd.out[(oct & 0xf0) >> 4];
- curr_offset++;
-
- poctets = tvb_get_ephemeral_string(tvb, curr_offset, len - (curr_offset - offset));
-
- my_dgt_tbcd_unpack(&a_bigbuf[1], poctets, len - (curr_offset - offset),
- &Dgt1_9_bcd);
-
- proto_tree_add_string_format(tree,
- hf_gsm_a_imei,
- tvb, curr_offset, len - (curr_offset - offset),
- a_bigbuf,
- "BCD Digits: %s",
- a_bigbuf);
-
- if (add_string)
- g_snprintf(add_string, string_len, " - IMEI (%s)", a_bigbuf);
-
- curr_offset += len - (curr_offset - offset);
- break;
-
- case 4: /* TMSI/P-TMSI */
- other_decode_bitfield_value(a_bigbuf, oct, 0xf0, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = Unused",
- a_bigbuf);
-
- proto_tree_add_item(tree, hf_gsm_a_odd_even_ind, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
-
- proto_tree_add_item(tree, hf_gsm_a_mobile_identity_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
-
- curr_offset++;
-
- value = tvb_get_ntohl(tvb, curr_offset);
-
- proto_tree_add_uint(tree, hf_gsm_a_tmsi,
- tvb, curr_offset, 4,
- value);
-
- if (add_string)
- g_snprintf(add_string, string_len, " - TMSI/P-TMSI (0x%04x)", value);
-
- curr_offset += 4;
- break;
-
- case 5: /* TMGI and optional MBMS Session Identity */
- /* Spare bits (octet 3) Bits 8-7 */
- proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, curr_offset<<3, 2, ENC_BIG_ENDIAN);
- /* MBMS Session Identity indication (octet 3) Bit 6 */
- proto_tree_add_item(tree, hf_gsm_a_mbs_ses_id_ind, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* MCC/MNC indication (octet 3) Bit 5 */
- proto_tree_add_item(tree, hf_gsm_a_tmgi_mcc_mnc_ind, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* Odd/even indication (octet 3) Bit 4 */
- proto_tree_add_item(tree, hf_gsm_a_odd_even_ind, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* Type of identity (octet 3) Bits 3-1 */
- proto_tree_add_item(tree, hf_gsm_a_mobile_identity_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
- /* MBMS Service ID (octet 4, 5 and 6) */
- proto_tree_add_item(tree, hf_gsm_a_mbs_service_id, tvb, curr_offset, 3, ENC_BIG_ENDIAN);
- curr_offset += 3;
- if((oct&0x10)==0x10){
- /* MCC/MNC*/
- /* MCC, Mobile country code (octet 6a, octet 6b bits 1 to 4)*/
- /* MNC, Mobile network code (octet 6b bits 5 to 8, octet 6c) */
- curr_offset = dissect_e212_mcc_mnc(tvb, pinfo, tree, curr_offset,TRUE);
- }
- if((oct&0x20)==0x20){
- /* MBMS Session Identity (octet 7)
- * The MBMS Session Identity field is encoded as the value part
- * of the MBMS Session Identity IE as specified in 3GPP TS 48.018 [86].
- */
- proto_tree_add_item(tree, hf_gsm_a_mbs_session_id, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
- }
- break;
-
- default: /* Reserved */
- proto_tree_add_item(tree, hf_gsm_a_odd_even_ind, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_gsm_a_mobile_identity_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_text(tree, tvb, curr_offset, len,
- "Mobile station identity Format %u, Format Unknown",(oct & 0x07));
-
- if (add_string)
- g_snprintf(add_string, string_len, " - Format Unknown");
-
- curr_offset += len;
- break;
- }
-
- EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
-
- return(curr_offset - offset);
+ proto_tree_add_string_format(tree,
+ ((oct & 0x07) == 3) ? hf_gsm_a_imeisv : hf_gsm_a_imsi,
+ tvb, curr_offset - 1, len - (curr_offset - offset) + 1,
+ a_bigbuf,
+ "BCD Digits: %s",
+ a_bigbuf);
+
+ if (sccp_assoc && ! sccp_assoc->calling_party) {
+ sccp_assoc->calling_party = se_strdup_printf(
+ ((oct & 0x07) == 3) ? "IMEISV: %s" : "IMSI: %s",
+ a_bigbuf );
+ }
+
+ if (add_string)
+ g_snprintf(add_string, string_len, " - %s (%s)",
+ ((oct & 0x07) == 3) ? "IMEISV" : "IMSI",
+ a_bigbuf);
+
+ curr_offset += len - (curr_offset - offset);
+
+ if (!odd)
+ {
+ oct = tvb_get_guint8(tvb, curr_offset - 1);
+
+ other_decode_bitfield_value(a_bigbuf, oct, 0xf0, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset - 1, 1,
+ "%s = Filler",
+ a_bigbuf);
+ }
+ break;
+
+ case 2: /* IMEI */
+ other_decode_bitfield_value(a_bigbuf, oct, 0xf0, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = Identity Digit 1: %c",
+ a_bigbuf,
+ Dgt1_9_bcd.out[(oct & 0xf0) >> 4]);
+
+ proto_tree_add_item(tree, hf_gsm_a_odd_even_ind, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(tree, hf_gsm_a_mobile_identity_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+
+ a_bigbuf[0] = Dgt1_9_bcd.out[(oct & 0xf0) >> 4];
+ curr_offset++;
+
+ poctets = tvb_get_ephemeral_string(tvb, curr_offset, len - (curr_offset - offset));
+
+ my_dgt_tbcd_unpack(&a_bigbuf[1], poctets, len - (curr_offset - offset),
+ &Dgt1_9_bcd);
+
+ proto_tree_add_string_format(tree,
+ hf_gsm_a_imei,
+ tvb, curr_offset, len - (curr_offset - offset),
+ a_bigbuf,
+ "BCD Digits: %s",
+ a_bigbuf);
+
+ if (add_string)
+ g_snprintf(add_string, string_len, " - IMEI (%s)", a_bigbuf);
+
+ curr_offset += len - (curr_offset - offset);
+ break;
+
+ case 4: /* TMSI/P-TMSI */
+ other_decode_bitfield_value(a_bigbuf, oct, 0xf0, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = Unused",
+ a_bigbuf);
+
+ proto_tree_add_item(tree, hf_gsm_a_odd_even_ind, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(tree, hf_gsm_a_mobile_identity_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+
+ curr_offset++;
+
+ value = tvb_get_ntohl(tvb, curr_offset);
+
+ proto_tree_add_uint(tree, hf_gsm_a_tmsi,
+ tvb, curr_offset, 4,
+ value);
+
+ if (add_string)
+ g_snprintf(add_string, string_len, " - TMSI/P-TMSI (0x%04x)", value);
+
+ curr_offset += 4;
+ break;
+
+ case 5: /* TMGI and optional MBMS Session Identity */
+ /* Spare bits (octet 3) Bits 8-7 */
+ proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, curr_offset<<3, 2, ENC_BIG_ENDIAN);
+ /* MBMS Session Identity indication (octet 3) Bit 6 */
+ proto_tree_add_item(tree, hf_gsm_a_mbs_ses_id_ind, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* MCC/MNC indication (octet 3) Bit 5 */
+ proto_tree_add_item(tree, hf_gsm_a_tmgi_mcc_mnc_ind, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* Odd/even indication (octet 3) Bit 4 */
+ proto_tree_add_item(tree, hf_gsm_a_odd_even_ind, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* Type of identity (octet 3) Bits 3-1 */
+ proto_tree_add_item(tree, hf_gsm_a_mobile_identity_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+ /* MBMS Service ID (octet 4, 5 and 6) */
+ proto_tree_add_item(tree, hf_gsm_a_mbs_service_id, tvb, curr_offset, 3, ENC_BIG_ENDIAN);
+ curr_offset += 3;
+ if ((oct&0x10) == 0x10) {
+ /* MCC/MNC*/
+ /* MCC, Mobile country code (octet 6a, octet 6b bits 1 to 4)*/
+ /* MNC, Mobile network code (octet 6b bits 5 to 8, octet 6c) */
+ curr_offset = dissect_e212_mcc_mnc(tvb, pinfo, tree, curr_offset, TRUE);
+ }
+ if ((oct&0x20) == 0x20) {
+ /* MBMS Session Identity (octet 7)
+ * The MBMS Session Identity field is encoded as the value part
+ * of the MBMS Session Identity IE as specified in 3GPP TS 48.018 [86].
+ */
+ proto_tree_add_item(tree, hf_gsm_a_mbs_session_id, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+ }
+ break;
+
+ default: /* Reserved */
+ proto_tree_add_item(tree, hf_gsm_a_odd_even_ind, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_mobile_identity_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_text(tree, tvb, curr_offset, len,
+ "Mobile station identity Format %u, Format Unknown", (oct & 0x07));
+
+ if (add_string)
+ g_snprintf(add_string, string_len, " - Format Unknown");
+
+ curr_offset += len;
+ break;
+ }
+
+ EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
+
+ return(curr_offset - offset);
}
/*
@@ -2271,34 +2287,34 @@ de_mid(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guin
guint16
de_ms_cm_1(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- proto_tree *subtree;
- proto_item *item;
+ guint32 curr_offset;
+ proto_tree *subtree;
+ proto_item *item;
- curr_offset = offset;
+ curr_offset = offset;
- item =
- proto_tree_add_text(tree,
- tvb, curr_offset, 1, "%s",
- gsm_common_elem_strings[DE_MS_CM_1].strptr);
+ item =
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1, "%s",
+ gsm_common_elem_strings[DE_MS_CM_1].strptr);
- subtree = proto_item_add_subtree(item, ett_gsm_common_elem[DE_MS_CM_1]);
+ subtree = proto_item_add_subtree(item, ett_gsm_common_elem[DE_MS_CM_1]);
- proto_tree_add_item(subtree, hf_gsm_a_b8spare, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_gsm_a_b8spare, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(subtree, hf_gsm_a_MSC_rev, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_gsm_a_MSC_rev, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(subtree, hf_gsm_a_ES_IND, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_gsm_a_ES_IND, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(subtree, hf_gsm_a_A5_1_algorithm_sup, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_gsm_a_A5_1_algorithm_sup, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(subtree, hf_gsm_a_RF_power_capability, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_gsm_a_RF_power_capability, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ curr_offset++;
- /* no length check possible */
+ /* no length check possible */
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
@@ -2308,732 +2324,755 @@ de_ms_cm_1(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offs
guint16
de_ms_cm_2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- curr_offset = offset;
+ guint32 curr_offset;
+ curr_offset = offset;
- proto_tree_add_item(tree, hf_gsm_a_b8spare, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_b8spare, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_gsm_a_MSC_rev, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_MSC_rev, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_gsm_a_ES_IND, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_ES_IND, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_gsm_a_A5_1_algorithm_sup, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_A5_1_algorithm_sup, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_gsm_a_RF_power_capability, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_RF_power_capability, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ curr_offset++;
- NO_MORE_DATA_CHECK(len);
+ NO_MORE_DATA_CHECK(len);
- proto_tree_add_item(tree, hf_gsm_a_b8spare, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_b8spare, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_gsm_a_ps_sup_cap, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_ps_sup_cap, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_gsm_a_SS_screening_indicator, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_SS_screening_indicator, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* SM capability (MT SMS pt to pt capability) (octet 4)*/
- proto_tree_add_item(tree, hf_gsm_a_SM_capability, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* VBS notification reception (octet 4) */
- proto_tree_add_item(tree, hf_gsm_a_VBS_notification_rec, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /*VGCS notification reception (octet 4)*/
- proto_tree_add_item(tree, hf_gsm_a_VGCS_notification_rec, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* FC Frequency Capability (octet 4 ) */
- proto_tree_add_item(tree, hf_gsm_a_FC_frequency_cap, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* SM capability (MT SMS pt to pt capability) (octet 4)*/
+ proto_tree_add_item(tree, hf_gsm_a_SM_capability, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* VBS notification reception (octet 4) */
+ proto_tree_add_item(tree, hf_gsm_a_VBS_notification_rec, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /*VGCS notification reception (octet 4)*/
+ proto_tree_add_item(tree, hf_gsm_a_VGCS_notification_rec, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* FC Frequency Capability (octet 4 ) */
+ proto_tree_add_item(tree, hf_gsm_a_FC_frequency_cap, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ curr_offset++;
- NO_MORE_DATA_CHECK(len);
+ NO_MORE_DATA_CHECK(len);
- /* CM3 (octet 5, bit 8) */
- proto_tree_add_item(tree, hf_gsm_a_CM3, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* spare bit 7 */
- proto_tree_add_item(tree, hf_gsm_a_b7spare, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* LCS VA capability (LCS value added location request notification capability) (octet 5,bit 6) */
- proto_tree_add_item(tree, hf_gsm_a_LCS_VA_cap, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* UCS2 treatment (octet 5, bit 5) */
- proto_tree_add_item(tree, hf_gsm_a_UCS2_treatment, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* SoLSA (octet 5, bit 4) */
- proto_tree_add_item(tree, hf_gsm_a_SoLSA, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* CMSP: CM Service Prompt (octet 5, bit 3) */
- proto_tree_add_item(tree, hf_gsm_a_CMSP, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* A5/3 algorithm supported (octet 5, bit 2) */
- proto_tree_add_item(tree, hf_gsm_a_A5_3_algorithm_sup, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* A5/2 algorithm supported (octet 5, bit 1) */
- proto_tree_add_item(tree, hf_gsm_a_A5_2_algorithm_sup, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* CM3 (octet 5, bit 8) */
+ proto_tree_add_item(tree, hf_gsm_a_CM3, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* spare bit 7 */
+ proto_tree_add_item(tree, hf_gsm_a_b7spare, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* LCS VA capability (LCS value added location request notification capability) (octet 5,bit 6) */
+ proto_tree_add_item(tree, hf_gsm_a_LCS_VA_cap, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* UCS2 treatment (octet 5, bit 5) */
+ proto_tree_add_item(tree, hf_gsm_a_UCS2_treatment, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* SoLSA (octet 5, bit 4) */
+ proto_tree_add_item(tree, hf_gsm_a_SoLSA, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* CMSP: CM Service Prompt (octet 5, bit 3) */
+ proto_tree_add_item(tree, hf_gsm_a_CMSP, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* A5/3 algorithm supported (octet 5, bit 2) */
+ proto_tree_add_item(tree, hf_gsm_a_A5_3_algorithm_sup, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* A5/2 algorithm supported (octet 5, bit 1) */
+ proto_tree_add_item(tree, hf_gsm_a_A5_2_algorithm_sup, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ curr_offset++;
- EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset,pinfo);
+ EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset,pinfo);
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
* [3] 10.5.1.7 Mobile Station Classmark 3
- * 3GPP TS 24.008 version 9.6.0 Release 9
+ * 3GPP TS 24.008 version 10.6.1 Release 10
*/
#define AVAILABLE_BITS_CHECK(n) \
- bits_left = ((len + offset) << 3) - bit_offset; \
- if (bits_left < (n)) { \
- if (bits_left) \
- proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, bit_offset, bits_left, ENC_BIG_ENDIAN); \
- return(len); \
- }
+ bits_left = ((len + offset) << 3) - bit_offset; \
+ if (bits_left < (n)) { \
+ if (bits_left) \
+ proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, bit_offset, bits_left, ENC_BIG_ENDIAN); \
+ return(len); \
+ }
guint16
de_ms_cm_3(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guint32 bit_offset; /* Offset in bits */
- guint8 length;
- proto_tree *subtree;
- proto_item *item;
- guint32 bits_left, target_bit_offset;
- guint64 multi_bnd_sup_fields, rsupport, multislotCapability, msMeasurementCapability, msPosMethodCapPresent;
- guint64 ecsdMultiSlotCapability, eightPskStructPresent, gsm400BandInfoPresent, gsm850AssocRadioCapabilityPresent;
- guint64 gsm1900AssocRadioCapabilityPresent, dtmEGprsMultiSlotInfoPresent, dtmEgprsMultiSlotClassPresent, singleBandSupport;
- guint64 gsm750AssocRadioCapabilityPresent, extDtmEGprsMultiSlotInfoPresent, highMultislotCapPresent, geranIuModeSupport;
- guint64 tGsm400BandInfoPresent, tGsm900AssocRadioCapabilityPresent, dtmEGprsHighMultiSlotInfoPresent;
- guint64 dtmEgprsHighMultiSlotClassPresent, gsm710AssocRadioCapabilityPresent, tGsm810AssocRadioCapabilityPresent;
-
- curr_offset = offset;
-
- bit_offset = curr_offset << 3;
-
- /* Spare bit */
- proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset++;
-
- /* Multiband supported field
- * { < Multiband supported : { 000 } >
- * < A5 bits >
- * | < Multiband supported : { 101 | 110 } >
- * < A5 bits >
- * < Associated Radio Capability 2 : bit(4) >
- * < Associated Radio Capability 1 : bit(4) >
- * | < Multiband supported : { 001 | 010 | 100 } >
- * < A5 bits >
- * < spare bit >(4)
- * < Associated Radio Capability 1 : bit(4) > }
- */
-
- item = proto_tree_add_bits_ret_val(tree, hf_gsm_a_multi_bnd_sup_fields, tvb, bit_offset, 3, &multi_bnd_sup_fields, ENC_BIG_ENDIAN);
- subtree = proto_item_add_subtree(item, ett_gsm_common_elem[DE_MS_CM_3]);
-
- proto_tree_add_bits_item(subtree, hf_gsm_a_gsm1800_supported, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset++;
-
- proto_tree_add_bits_item(subtree, hf_gsm_a_egsm_supported, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset++;
-
- proto_tree_add_bits_item(subtree, hf_gsm_a_pgsm_supported, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset++;
-
- item = proto_tree_add_bits_item(tree, hf_gsm_a_cm3_A5_bits, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
- subtree = proto_item_add_subtree(item, ett_gsm_common_elem[DE_MS_CM_3]);
-
- /* < A5 bits > */
- proto_tree_add_bits_item(subtree, hf_gsm_a_A5_7_algorithm_sup, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset++;
- proto_tree_add_bits_item(subtree, hf_gsm_a_A5_6_algorithm_sup, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset++;
- proto_tree_add_bits_item(subtree, hf_gsm_a_A5_5_algorithm_sup, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset++;
- proto_tree_add_bits_item(subtree, hf_gsm_a_A5_4_algorithm_sup, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset++;
-
- switch(multi_bnd_sup_fields){
- case 0:
- /* A5 bits dissected is done */
- break;
- /*
- * | < Multiband supported : { 001 | 010 | 100 } >
- */
- case 1:
- case 2:
- case 4:
- /* < spare bit >(4) */
- proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
- bit_offset+=4;
- /* < Associated Radio Capability 1 : bit(4) > */
- proto_tree_add_bits_item(tree, hf_gsm_a_ass_radio_cap1, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
- bit_offset+=4;
- break;
- /* < Multiband supported : { 101 | 110 } > */
- case 5:
- /* fall trough */
- case 6:
- /* < Associated Radio Capability 2 : bit(4) > */
- proto_tree_add_bits_item(tree, hf_gsm_a_ass_radio_cap2, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
- bit_offset+=4;
- /* < Associated Radio Capability 1 : bit(4) > */
- proto_tree_add_bits_item(tree, hf_gsm_a_ass_radio_cap1, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
- bit_offset+=4;
- break;
- default:
- break;
- }
- /* Extract R Support */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_ret_val(tree, hf_gsm_a_rsupport, tvb, bit_offset, 1, &rsupport, ENC_BIG_ENDIAN);
- bit_offset++;
-
- if(rsupport == 1)
- {
- /*
- * { 0 | 1 < R Support > }
- * Extract R Capabilities
- */
- proto_tree_add_bits_item(tree, hf_gsm_a_r_capabilities, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 3;
- }
-
- /*
- * { 0 | 1 < HSCSD Multi Slot Capability > }
- * Extract Multislot capability
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_ret_val(tree, hf_gsm_a_multislot_capabilities, tvb, bit_offset, 1, &multislotCapability, ENC_BIG_ENDIAN);
- bit_offset++;
-
- if(multislotCapability == 1)
- {
- /* Extract Multislot Class */
- proto_tree_add_bits_item(tree, hf_gsm_a_multislot_class, tvb, bit_offset, 5, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 5;
- }
-
- /* < UCS2 treatment: bit > */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_item(tree, hf_gsm_a_ucs2_treatment, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- /* < Extended Measurement Capability : bit > */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_item(tree, hf_gsm_a_extended_measurement_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- /* { 0 | 1 < MS measurement capability > }
- * Extract MS Measurement capability
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_ret_val(tree, hf_gsm_a_ms_measurement_capability, tvb, bit_offset, 1, &msMeasurementCapability, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- if(msMeasurementCapability == 1)
- {
- /* Extract SMS Value n/4 */
- proto_tree_add_bits_item(tree, hf_gsm_a_sms_value, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 4;
-
- /* Extract SM Value n/4 */
- proto_tree_add_bits_item(tree, hf_gsm_a_sm_value, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 4;
- }
-
- /* { 0 | 1 < MS Positioning Method Capability > }
- * Extract MS Positioning Method Capability
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_ret_val(tree, hf_gsm_a_ms_pos_method_cap_present, tvb, bit_offset, 1, &msPosMethodCapPresent, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- if(msPosMethodCapPresent == 1)
- {
- /* Extract MS Positioning Method */
- item = proto_tree_add_bits_item(tree, hf_gsm_a_ms_pos_method, tvb, bit_offset, 5, ENC_BIG_ENDIAN);
- subtree = proto_item_add_subtree(item, ett_gsm_common_elem[DE_MS_CM_3]);
-
- proto_tree_add_bits_item(subtree, hf_gsm_a_ms_assisted_e_otd, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset++;
-
- proto_tree_add_bits_item(subtree, hf_gsm_a_ms_based_e_otd, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset++;
-
- proto_tree_add_bits_item(subtree, hf_gsm_a_ms_assisted_gps, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset++;
-
- proto_tree_add_bits_item(subtree, hf_gsm_a_ms_based_gps, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset++;
-
- proto_tree_add_bits_item(subtree, hf_gsm_a_ms_conventional_gps, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset++;
- }
-
- /* { 0 | 1 < ECSD Multi Slot Capability > }
- * Extract ECSD Multi Slot Capability
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_ret_val(tree, hf_gsm_a_ecsd_multi_slot_capability, tvb, bit_offset, 1, &ecsdMultiSlotCapability, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- if(ecsdMultiSlotCapability == 1)
- {
- /* Extract ECSD Multi Slot Class */
- proto_tree_add_bits_item(tree, hf_gsm_a_ecsd_multi_slot_class, tvb, bit_offset, 5, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 5;
- }
-
- /* { 0 | 1 < 8-PSK Struct > }
- * Extract 8-PSK struct presence
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_ret_val(tree, hf_gsm_a_8_psk_struct_present, tvb, bit_offset, 1, &eightPskStructPresent, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- if(eightPskStructPresent == 1)
- {
- /* Extract 8-PSK struct */
- item = proto_tree_add_bits_item(tree, hf_gsm_a_8_psk_struct, tvb, bit_offset, 5, ENC_BIG_ENDIAN);
- subtree = proto_item_add_subtree(item, ett_gsm_common_elem[DE_MS_CM_3]);
-
- /* Extract Modulation Capability */
- proto_tree_add_bits_item(subtree, hf_gsm_a_modulation_capability, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- /* Extract 8_PSK RF Power Capability 1 */
- proto_tree_add_bits_item(subtree, hf_gsm_a_8_psk_rf_power_capability_1, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 2;
-
- /* Extract 8_PSK RF Power Capability 2 */
- proto_tree_add_bits_item(subtree, hf_gsm_a_8_psk_rf_power_capability_2, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 2;
- }
-
- /* { 0 | 1 < GSM 400 Bands Supported : { 01 | 10 | 11 } >
- * < GSM 400 Associated Radio Capability: bit(4) > }
- * Extract GSM 400 Band Information presence
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_ret_val(tree, hf_gsm_a_gsm_400_band_info_present, tvb, bit_offset, 1, &gsm400BandInfoPresent, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- if(gsm400BandInfoPresent == 1)
- {
- /* Extract GSM 400 Bands Supported */
- proto_tree_add_bits_item(tree, hf_gsm_a_gsm_400_bands_supported, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 2;
-
- /* Extract GSM 400 Associated Radio Capability */
- proto_tree_add_bits_item(tree, hf_gsm_a_gsm_400_assoc_radio_cap, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 4;
- }
-
- /* { 0 | 1 <GSM 850 Associated Radio Capability : bit(4) > }
- * Extract GSM 850 Associated Radio Capability presence
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_ret_val(tree, hf_gsm_a_gsm_850_assoc_radio_cap_present, tvb, bit_offset, 1, &gsm850AssocRadioCapabilityPresent, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- if(gsm850AssocRadioCapabilityPresent == 1)
- {
- /* Extract GSM 850 Associated Radio Capability */
- proto_tree_add_bits_item(tree, hf_gsm_a_gsm_850_assoc_radio_cap, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 4;
- }
-
- /* { 0 | 1 <GSM 1900 Associated Radio Capability : bit(4) > }
- * Extract GSM 1900 Associated Radio Capability presence
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_ret_val(tree, hf_gsm_a_gsm_1900_assoc_radio_cap_present, tvb, bit_offset, 1, &gsm1900AssocRadioCapabilityPresent, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- if(gsm1900AssocRadioCapabilityPresent == 1)
- {
- /* Extract GSM 1900 Associated Radio Capability */
- proto_tree_add_bits_item(tree, hf_gsm_a_gsm_1900_assoc_radio_cap, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 4;
- }
-
- /* < UMTS FDD Radio Access Technology Capability : bit >
- * Extract UMTS FDD Radio Access Technology Capability
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_item(tree, hf_gsm_a_umts_fdd_rat_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- /* < UMTS 3.84 Mcps TDD Radio Access Technology Capability : bit >
- * Extract UMTS 3.84 Mcps TDD Radio Access Technology Capability
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_item(tree, hf_gsm_a_umts_384_mcps_tdd_rat_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- /* < CDMA 2000 Radio Access Technology Capability : bit >
- * Extract CDMA 2000 Radio Access Technology Capability
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_item(tree, hf_gsm_a_cdma_2000_rat_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- /* { 0 | 1 < DTM GPRS Multi Slot Class : bit(2) >
- * < Single Slot DTM : bit >
- * {0 | 1< DTM EGPRS Multi Slot Class : bit(2) > } }
- * Extract DTM E/GPRS Information presence
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_ret_val(tree, hf_gsm_a_dtm_e_gprs_multi_slot_info_present, tvb, bit_offset, 1, &dtmEGprsMultiSlotInfoPresent, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- if(dtmEGprsMultiSlotInfoPresent == 1)
- {
- /* Extract DTM GPRS Multi Slot Class */
- proto_tree_add_bits_item(tree, hf_gsm_a_dtm_gprs_multi_slot_class, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 2;
-
- /* Extract Single Slot DTM */
- proto_tree_add_bits_item(tree, hf_gsm_a_single_slot_dtm, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- /* Extract DTM EGPRS Multi Slot Class Presence */
- proto_tree_add_bits_ret_val(tree, hf_gsm_a_dtm_egprs_multi_slot_class_present, tvb, bit_offset, 1, &dtmEgprsMultiSlotClassPresent, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- /* Extract DTM EGPRS Multi Slot Class */
- if (dtmEgprsMultiSlotClassPresent == 1)
- {
- proto_tree_add_bits_item(tree, hf_gsm_a_dtm_egprs_multi_slot_class, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 2;
- }
- }
-
- /*
- * Release 4 starts here
- *
- * { 0 | 1 < Single Band Support > } -- Release 4 starts here:
- * Extract Single Band Support
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_ret_val(tree, hf_gsm_a_single_band_support, tvb, bit_offset, 1, &singleBandSupport, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- if(singleBandSupport == 1)
- {
- /* Extract Single Band Support */
- proto_tree_add_bits_item(tree, hf_gsm_a_gsm_band, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 4;
- }
-
- /* { 0 | 1 <GSM 750 Associated Radio Capability : bit(4) > }
- * Extract GSM 750 Associated Radio Capability presence
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_ret_val(tree, hf_gsm_a_gsm_750_assoc_radio_cap_present, tvb, bit_offset, 1, &gsm750AssocRadioCapabilityPresent, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- if(gsm750AssocRadioCapabilityPresent == 1)
- {
- /* Extract GSM 750 Associated Radio Capability */
- proto_tree_add_bits_item(tree, hf_gsm_a_gsm_750_assoc_radio_cap, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 4;
- }
-
- /* < UMTS 1.28 Mcps TDD Radio Access Technology Capability : bit >
- * Extract UMTS 1.28 Mcps TDD Radio Access Technology Capability
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_item(tree, hf_gsm_a_umts_128_mcps_tdd_rat_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- /* < GERAN Feature Package 1 : bit >
- * Extract GERAN Feature Package 1
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_item(tree, hf_gsm_a_geran_feature_package_1, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- /* { 0 | 1 < Extended DTM GPRS Multi Slot Class : bit(2) >
- * < Extended DTM EGPRS Multi Slot Class : bit(2) > }
- * Extract Extended DTM E/GPRS Information presence
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_ret_val(tree, hf_gsm_a_ext_dtm_e_gprs_multi_slot_info_present, tvb, bit_offset, 1, &extDtmEGprsMultiSlotInfoPresent, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- if(extDtmEGprsMultiSlotInfoPresent == 1)
- {
- /* Extract Extended DTM GPRS Multi Slot Class */
- proto_tree_add_bits_item(tree, hf_gsm_a_ext_dtm_gprs_multi_slot_class, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 2;
-
- /* Extract Extended DTM EGPRS Multi Slot Class */
- proto_tree_add_bits_item(tree, hf_gsm_a_ext_dtm_egprs_multi_slot_class, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 2;
- }
-
- /*
- * Release 5 starts here
- *
- * { 0 | 1 < High Multislot Capability : bit(2) > } -- Release 5 starts here.
- * Extract High Multislot Capability presence
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_ret_val(tree, hf_gsm_a_high_multislot_cap_present, tvb, bit_offset, 1, &highMultislotCapPresent, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- if(highMultislotCapPresent == 1)
- {
- /* Extract High Multislot Capability */
- proto_tree_add_bits_item(tree, hf_gsm_a_high_multislot_cap, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 2;
- }
-
- /*
- * { 0 | 1 < GERAN Iu Mode Capabilities > } -- "1" also means support of GERAN Iu mode
- * Extract GERAN Iu Mode Capabilities presence
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_ret_val(tree, hf_gsm_a_geran_iu_mode_support, tvb, bit_offset, 1, &geranIuModeSupport, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- if(geranIuModeSupport == 1)
- {
- /* Extract GERAN Iu Mode Capabilities Length */
- length = tvb_get_bits8(tvb, bit_offset, 4);
-
- /* Extract GERAN Iu Mode Capabilities */
- item = proto_tree_add_bits_item(tree, hf_gsm_a_geran_iu_mode_cap, tvb, bit_offset, length + 4, ENC_BIG_ENDIAN);
- subtree = proto_item_add_subtree(item, ett_gsm_common_elem[DE_MS_CM_3]);
-
- /* Add GERAN Iu Mode Capabilities Length in subtree */
- proto_tree_add_bits_item(subtree, hf_gsm_a_geran_iu_mode_cap_length, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
- bit_offset += 4;
- target_bit_offset = bit_offset + length;
-
- /* Extract FLO Iu Capability */
- proto_tree_add_bits_item(subtree, hf_gsm_a_flo_iu_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset += 1;
-
- /* If needed, add spare bits */
- if (target_bit_offset > bit_offset)
- {
- proto_tree_add_bits_item(subtree, hf_gsm_a_spare_bits, tvb, bit_offset, target_bit_offset - bit_offset, ENC_BIG_ENDIAN);
- bit_offset = target_bit_offset;
- }
- }
-
- /* < GERAN Feature Package 2 : bit >
- * Extract GERAN Feature Package 2
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_item(tree, hf_gsm_a_geran_feature_package_2, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- /* < GMSK Multislot Power Profile : bit (2) >
- * Extract GMSK Multislot Power Profile
- */
- AVAILABLE_BITS_CHECK(2);
- proto_tree_add_bits_item(tree, hf_gsm_a_gmsk_multislot_power_prof, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 2;
-
- /* < 8-PSK Multislot Power Profile : bit (2) >
- * Extract GMSK Multislot Power Profile
- */
- AVAILABLE_BITS_CHECK(2);
- proto_tree_add_bits_item(tree, hf_gsm_a_8_psk_multislot_power_prof, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 2;
-
- /*
- * Release 6 starts here
- *
- * { 0 | 1 < T-GSM 400 Bands Supported : { 01 | 10 | 11 } > -- Release 6 starts here.
- * < T-GSM 400 Associated Radio Capability: bit(4) > }
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_ret_val(tree, hf_gsm_a_t_gsm_400_band_info_present, tvb, bit_offset, 1, &tGsm400BandInfoPresent, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- if(tGsm400BandInfoPresent == 1)
- {
- /* Extract T-GSM 400 Bands Supported */
- proto_tree_add_bits_item(tree, hf_gsm_a_t_gsm_400_bands_supported, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 2;
-
- /* Extract T-GSM 400 Associated Radio Capability */
- proto_tree_add_bits_item(tree, hf_gsm_a_t_gsm_400_assoc_radio_cap, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 4;
- }
-
- /* { 0 | 1 < T-GSM 900 Associated Radio Capability: bit(4) > }
- * Extract T-GSM 900 Associated Radio Capability presence
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_ret_val(tree, hf_gsm_a_t_gsm_900_assoc_radio_cap_present, tvb, bit_offset, 1, &tGsm900AssocRadioCapabilityPresent, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- if(tGsm900AssocRadioCapabilityPresent == 1)
- {
- /* Extract T-GSM 900 Associated Radio Capability */
- proto_tree_add_bits_item(tree, hf_gsm_a_t_gsm_900_assoc_radio_cap, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 4;
- }
-
- /* < Downlink Advanced Receiver Performance : bit (2)>
- * Extract Downlink Advanced Receiver Performance
- */
- AVAILABLE_BITS_CHECK(2);
- proto_tree_add_bits_item(tree, hf_gsm_a_downlink_adv_receiver_perf, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 2;
-
- /* < DTM Enhancements Capability : bit >
- * Extract DTM Enhancements Capability
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_item(tree, hf_gsm_a_dtm_enhancements_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- /* { 0 | 1 < DTM GPRS High Multi Slot Class : bit(3) >
- * < Offset required : bit>
- * { 0 | 1 < DTM EGPRS High Multi Slot Class : bit(3) > } }
- * Extract DTM E/GPRS High Multi Slot Information presence
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_ret_val(tree, hf_gsm_a_dtm_e_gprs_high_multi_slot_info_present, tvb, bit_offset, 1, &dtmEGprsHighMultiSlotInfoPresent, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- if(dtmEGprsHighMultiSlotInfoPresent == 1)
- {
- /* Extract DTM GPRS High Multi Slot Class */
- proto_tree_add_bits_item(tree, hf_gsm_a_dtm_gprs_high_multi_slot_class, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 3;
-
- /* Extract Offset Required */
- proto_tree_add_bits_item(tree, hf_gsm_a_offset_required, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- /* Extract DTM EGPRS High Multi Slot Class Presence */
- proto_tree_add_bits_ret_val(tree, hf_gsm_a_dtm_egprs_high_multi_slot_class_present, tvb, bit_offset, 1, &dtmEgprsHighMultiSlotClassPresent, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- /* Extract DTM EGPRS High Multi Slot Class */
- if (dtmEgprsHighMultiSlotClassPresent == 1)
- {
- proto_tree_add_bits_item(tree, hf_gsm_a_dtm_egprs_high_multi_slot_class, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 3;
- }
- }
-
- /* < Repeated ACCH Capability : bit >
- * Extract Repeated ACCH Capability
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_item(tree, hf_gsm_a_repeated_acch_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- /*
- * Release 7 starts here
- *
- * { 0 | 1 <GSM 710 Associated Radio Capability : bit(4) > } -- Release 7 starts here.
- * Extract GSM 710 Associated Radio Capability presence
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_ret_val(tree, hf_gsm_a_gsm_710_assoc_radio_cap_present, tvb, bit_offset, 1, &gsm710AssocRadioCapabilityPresent, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- if(gsm710AssocRadioCapabilityPresent == 1)
- {
- /* Extract GSM 710 Associated Radio Capability */
- proto_tree_add_bits_item(tree, hf_gsm_a_gsm_710_assoc_radio_cap, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 4;
- }
-
- /* { 0 | 1 < T-GSM 810 Associated Radio Capability: bit(4) > }
- * Extract T-GSM 810 Associated Radio Capability presence
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_ret_val(tree, hf_gsm_a_t_gsm_810_assoc_radio_cap_present, tvb, bit_offset, 1, &tGsm810AssocRadioCapabilityPresent, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- if(tGsm810AssocRadioCapabilityPresent == 1)
- {
- /* Extract T-GSM 810 Associated Radio Capability */
- proto_tree_add_bits_item(tree, hf_gsm_a_t_gsm_810_assoc_radio_cap, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 4;
- }
-
- /* < Ciphering Mode Setting Capability : bit >
- * Extract Ciphering Mode Setting Capability
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_item(tree, hf_gsm_a_ciphering_mode_setting_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- /* < Additional Positioning Capabilities : bit >
- * Extract Additional Positioning Capabilities
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_item(tree, hf_gsm_a_additional_positioning_caps, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- /*
- * Release 8 starts here
- *
- * <E-UTRA FDD support : bit > -- Release 8 starts here.
- * Extract E-UTRA FDD support
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_item(tree, hf_gsm_a_e_utra_fdd_support, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- /*
- * <E-UTRA TDD support : bit >
- * Extract E-UTRA TDD support
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_item(tree, hf_gsm_a_e_utra_tdd_support, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- /*
- * <E-UTRA Measurement and Reporting support : bit >
- * Extract E-UTRA Measurement and Reporting support
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_item(tree, hf_gsm_a_e_utra_meas_and_report_support, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- /*
- * <Priority-based reselection support : bit >
- * Extract Priority-based reselection support
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_item(tree, hf_gsm_a_prio_based_resel_support, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- /*
- * Release 9 starts here
- *
- * <UTRA CSG Cells Reporting : bit > -- Release 9 starts here.
- * Extract UTRA CSG Cells Reporting
- */
- AVAILABLE_BITS_CHECK(1);
- proto_tree_add_bits_item(tree, hf_gsm_a_utra_csg_cells_reporting, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 1;
-
- /*
- * <VAMOS Level : bit(2) >
- * Extract VAMOS Level
- */
- AVAILABLE_BITS_CHECK(2);
- proto_tree_add_bits_item(tree, hg_gsm_a_vamos_level, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
- bit_offset = bit_offset + 2;
-
- /*
- * Add spare bits until we reach an octet boundary
- */
- bits_left = (((len + offset) << 3) - bit_offset) & 0x07;
- if (bits_left != 0)
- {
- proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, bit_offset, bits_left, ENC_BIG_ENDIAN);
- bit_offset += bits_left;
- }
-
- /* translate to byte offset (we already know that we are on an octet boundary) */
- curr_offset = bit_offset >> 3;
- EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
-
- return(len);
+ guint32 curr_offset;
+ guint32 bit_offset; /* Offset in bits */
+ guint8 length;
+ proto_tree *subtree;
+ proto_item *item;
+ guint32 bits_left, target_bit_offset;
+ guint64 multi_bnd_sup_fields, rsupport, multislotCapability;
+ guint64 msMeasurementCapability, msPosMethodCapPresent;
+ guint64 ecsdMultiSlotCapability, eightPskStructPresent;
+ guint64 gsm400BandInfoPresent, gsm850AssocRadioCapabilityPresent;
+ guint64 gsm1900AssocRadioCapabilityPresent, dtmEGprsMultiSlotInfoPresent;
+ guint64 dtmEgprsMultiSlotClassPresent, singleBandSupport;
+ guint64 gsm750AssocRadioCapabilityPresent, extDtmEGprsMultiSlotInfoPresent;
+ guint64 highMultislotCapPresent, geranIuModeSupport;
+ guint64 tGsm400BandInfoPresent, tGsm900AssocRadioCapabilityPresent, dtmEGprsHighMultiSlotInfoPresent;
+ guint64 dtmEgprsHighMultiSlotClassPresent, gsm710AssocRadioCapabilityPresent;
+ guint64 tGsm810AssocRadioCapabilityPresent;
+
+ curr_offset = offset;
+
+ bit_offset = curr_offset << 3;
+
+ /* Spare bit */
+ proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+
+ /* Multiband supported field
+ * { < Multiband supported : { 000 } >
+ * < A5 bits >
+ * | < Multiband supported : { 101 | 110 } >
+ * < A5 bits >
+ * < Associated Radio Capability 2 : bit(4) >
+ * < Associated Radio Capability 1 : bit(4) >
+ * | < Multiband supported : { 001 | 010 | 100 } >
+ * < A5 bits >
+ * < spare bit >(4)
+ * < Associated Radio Capability 1 : bit(4) > }
+ */
+
+ item = proto_tree_add_bits_ret_val(tree, hf_gsm_a_multi_bnd_sup_fields, tvb, bit_offset, 3, &multi_bnd_sup_fields, ENC_BIG_ENDIAN);
+ subtree = proto_item_add_subtree(item, ett_gsm_common_elem[DE_MS_CM_3]);
+
+ proto_tree_add_bits_item(subtree, hf_gsm_a_gsm1800_supported, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+
+ proto_tree_add_bits_item(subtree, hf_gsm_a_egsm_supported, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+
+ proto_tree_add_bits_item(subtree, hf_gsm_a_pgsm_supported, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+
+ item = proto_tree_add_bits_item(tree, hf_gsm_a_cm3_A5_bits, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
+ subtree = proto_item_add_subtree(item, ett_gsm_common_elem[DE_MS_CM_3]);
+
+ /* < A5 bits > */
+ proto_tree_add_bits_item(subtree, hf_gsm_a_A5_7_algorithm_sup, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_gsm_a_A5_6_algorithm_sup, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_gsm_a_A5_5_algorithm_sup, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_gsm_a_A5_4_algorithm_sup, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+
+ switch (multi_bnd_sup_fields) {
+ case 0:
+ /* A5 bits dissected is done */
+ break;
+ /*
+ * | < Multiband supported : { 001 | 010 | 100 } >
+ */
+ case 1:
+ case 2:
+ case 4:
+ /* < spare bit >(4) */
+ proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
+ bit_offset += 4;
+ /* < Associated Radio Capability 1 : bit(4) > */
+ proto_tree_add_bits_item(tree, hf_gsm_a_ass_radio_cap1, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
+ bit_offset += 4;
+ break;
+ /* < Multiband supported : { 101 | 110 } > */
+ case 5:
+ /* fall trough */
+ case 6:
+ /* < Associated Radio Capability 2 : bit(4) > */
+ proto_tree_add_bits_item(tree, hf_gsm_a_ass_radio_cap2, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
+ bit_offset += 4;
+ /* < Associated Radio Capability 1 : bit(4) > */
+ proto_tree_add_bits_item(tree, hf_gsm_a_ass_radio_cap1, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
+ bit_offset += 4;
+ break;
+ default:
+ break;
+ }
+ /* Extract R Support */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_ret_val(tree, hf_gsm_a_rsupport, tvb, bit_offset, 1, &rsupport, ENC_BIG_ENDIAN);
+ bit_offset++;
+
+ if (rsupport == 1)
+ {
+ /*
+ * { 0 | 1 < R Support > }
+ * Extract R Capabilities
+ */
+ proto_tree_add_bits_item(tree, hf_gsm_a_r_capabilities, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 3;
+ }
+
+ /*
+ * { 0 | 1 < HSCSD Multi Slot Capability > }
+ * Extract Multislot capability
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_ret_val(tree, hf_gsm_a_multislot_capabilities, tvb, bit_offset, 1, &multislotCapability, ENC_BIG_ENDIAN);
+ bit_offset++;
+
+ if (multislotCapability == 1)
+ {
+ /* Extract Multislot Class */
+ proto_tree_add_bits_item(tree, hf_gsm_a_multislot_class, tvb, bit_offset, 5, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 5;
+ }
+
+ /* < UCS2 treatment: bit > */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_item(tree, hf_gsm_a_ucs2_treatment, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ /* < Extended Measurement Capability : bit > */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_item(tree, hf_gsm_a_extended_measurement_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ /* { 0 | 1 < MS measurement capability > }
+ * Extract MS Measurement capability
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_ret_val(tree, hf_gsm_a_ms_measurement_capability, tvb, bit_offset, 1, &msMeasurementCapability, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ if (msMeasurementCapability == 1)
+ {
+ /* Extract SMS Value n/4 */
+ proto_tree_add_bits_item(tree, hf_gsm_a_sms_value, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 4;
+
+ /* Extract SM Value n/4 */
+ proto_tree_add_bits_item(tree, hf_gsm_a_sm_value, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 4;
+ }
+
+ /* { 0 | 1 < MS Positioning Method Capability > }
+ * Extract MS Positioning Method Capability
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_ret_val(tree, hf_gsm_a_ms_pos_method_cap_present, tvb, bit_offset, 1, &msPosMethodCapPresent, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ if (msPosMethodCapPresent == 1)
+ {
+ /* Extract MS Positioning Method */
+ item = proto_tree_add_bits_item(tree, hf_gsm_a_ms_pos_method, tvb, bit_offset, 5, ENC_BIG_ENDIAN);
+ subtree = proto_item_add_subtree(item, ett_gsm_common_elem[DE_MS_CM_3]);
+
+ proto_tree_add_bits_item(subtree, hf_gsm_a_ms_assisted_e_otd, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+
+ proto_tree_add_bits_item(subtree, hf_gsm_a_ms_based_e_otd, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+
+ proto_tree_add_bits_item(subtree, hf_gsm_a_ms_assisted_gps, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+
+ proto_tree_add_bits_item(subtree, hf_gsm_a_ms_based_gps, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+
+ proto_tree_add_bits_item(subtree, hf_gsm_a_ms_conventional_gps, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ }
+
+ /* { 0 | 1 < ECSD Multi Slot Capability > }
+ * Extract ECSD Multi Slot Capability
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_ret_val(tree, hf_gsm_a_ecsd_multi_slot_capability, tvb, bit_offset, 1, &ecsdMultiSlotCapability, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ if (ecsdMultiSlotCapability == 1)
+ {
+ /* Extract ECSD Multi Slot Class */
+ proto_tree_add_bits_item(tree, hf_gsm_a_ecsd_multi_slot_class, tvb, bit_offset, 5, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 5;
+ }
+
+ /* { 0 | 1 < 8-PSK Struct > }
+ * Extract 8-PSK struct presence
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_ret_val(tree, hf_gsm_a_8_psk_struct_present, tvb, bit_offset, 1, &eightPskStructPresent, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ if (eightPskStructPresent == 1)
+ {
+ /* Extract 8-PSK struct */
+ item = proto_tree_add_bits_item(tree, hf_gsm_a_8_psk_struct, tvb, bit_offset, 5, ENC_BIG_ENDIAN);
+ subtree = proto_item_add_subtree(item, ett_gsm_common_elem[DE_MS_CM_3]);
+
+ /* Extract Modulation Capability */
+ proto_tree_add_bits_item(subtree, hf_gsm_a_modulation_capability, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ /* Extract 8_PSK RF Power Capability 1 */
+ proto_tree_add_bits_item(subtree, hf_gsm_a_8_psk_rf_power_capability_1, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 2;
+
+ /* Extract 8_PSK RF Power Capability 2 */
+ proto_tree_add_bits_item(subtree, hf_gsm_a_8_psk_rf_power_capability_2, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 2;
+ }
+
+ /* { 0 | 1 < GSM 400 Bands Supported : { 01 | 10 | 11 } >
+ * < GSM 400 Associated Radio Capability: bit(4) > }
+ * Extract GSM 400 Band Information presence
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_ret_val(tree, hf_gsm_a_gsm_400_band_info_present, tvb, bit_offset, 1, &gsm400BandInfoPresent, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ if (gsm400BandInfoPresent == 1)
+ {
+ /* Extract GSM 400 Bands Supported */
+ proto_tree_add_bits_item(tree, hf_gsm_a_gsm_400_bands_supported, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 2;
+
+ /* Extract GSM 400 Associated Radio Capability */
+ proto_tree_add_bits_item(tree, hf_gsm_a_gsm_400_assoc_radio_cap, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 4;
+ }
+
+ /* { 0 | 1 <GSM 850 Associated Radio Capability : bit(4) > }
+ * Extract GSM 850 Associated Radio Capability presence
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_ret_val(tree, hf_gsm_a_gsm_850_assoc_radio_cap_present, tvb, bit_offset, 1, &gsm850AssocRadioCapabilityPresent, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ if (gsm850AssocRadioCapabilityPresent == 1)
+ {
+ /* Extract GSM 850 Associated Radio Capability */
+ proto_tree_add_bits_item(tree, hf_gsm_a_gsm_850_assoc_radio_cap, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 4;
+ }
+
+ /* { 0 | 1 <GSM 1900 Associated Radio Capability : bit(4) > }
+ * Extract GSM 1900 Associated Radio Capability presence
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_ret_val(tree, hf_gsm_a_gsm_1900_assoc_radio_cap_present, tvb, bit_offset, 1, &gsm1900AssocRadioCapabilityPresent, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ if (gsm1900AssocRadioCapabilityPresent == 1)
+ {
+ /* Extract GSM 1900 Associated Radio Capability */
+ proto_tree_add_bits_item(tree, hf_gsm_a_gsm_1900_assoc_radio_cap, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 4;
+ }
+
+ /* < UMTS FDD Radio Access Technology Capability : bit >
+ * Extract UMTS FDD Radio Access Technology Capability
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_item(tree, hf_gsm_a_umts_fdd_rat_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ /* < UMTS 3.84 Mcps TDD Radio Access Technology Capability : bit >
+ * Extract UMTS 3.84 Mcps TDD Radio Access Technology Capability
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_item(tree, hf_gsm_a_umts_384_mcps_tdd_rat_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ /* < CDMA 2000 Radio Access Technology Capability : bit >
+ * Extract CDMA 2000 Radio Access Technology Capability
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_item(tree, hf_gsm_a_cdma_2000_rat_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ /* { 0 | 1 < DTM GPRS Multi Slot Class : bit(2) >
+ * < Single Slot DTM : bit >
+ * {0 | 1< DTM EGPRS Multi Slot Class : bit(2) > } }
+ * Extract DTM E/GPRS Information presence
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_ret_val(tree, hf_gsm_a_dtm_e_gprs_multi_slot_info_present, tvb, bit_offset, 1, &dtmEGprsMultiSlotInfoPresent, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ if (dtmEGprsMultiSlotInfoPresent == 1)
+ {
+ /* Extract DTM GPRS Multi Slot Class */
+ proto_tree_add_bits_item(tree, hf_gsm_a_dtm_gprs_multi_slot_class, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 2;
+
+ /* Extract Single Slot DTM */
+ proto_tree_add_bits_item(tree, hf_gsm_a_single_slot_dtm, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ /* Extract DTM EGPRS Multi Slot Class Presence */
+ proto_tree_add_bits_ret_val(tree, hf_gsm_a_dtm_egprs_multi_slot_class_present, tvb, bit_offset, 1, &dtmEgprsMultiSlotClassPresent, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ /* Extract DTM EGPRS Multi Slot Class */
+ if (dtmEgprsMultiSlotClassPresent == 1)
+ {
+ proto_tree_add_bits_item(tree, hf_gsm_a_dtm_egprs_multi_slot_class, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 2;
+ }
+ }
+
+ /*
+ * Release 4 starts here
+ *
+ * { 0 | 1 < Single Band Support > } -- Release 4 starts here:
+ * Extract Single Band Support
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_ret_val(tree, hf_gsm_a_single_band_support, tvb, bit_offset, 1, &singleBandSupport, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ if (singleBandSupport == 1)
+ {
+ /* Extract Single Band Support */
+ proto_tree_add_bits_item(tree, hf_gsm_a_gsm_band, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 4;
+ }
+
+ /* { 0 | 1 <GSM 750 Associated Radio Capability : bit(4) > }
+ * Extract GSM 750 Associated Radio Capability presence
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_ret_val(tree, hf_gsm_a_gsm_750_assoc_radio_cap_present, tvb, bit_offset, 1, &gsm750AssocRadioCapabilityPresent, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ if (gsm750AssocRadioCapabilityPresent == 1)
+ {
+ /* Extract GSM 750 Associated Radio Capability */
+ proto_tree_add_bits_item(tree, hf_gsm_a_gsm_750_assoc_radio_cap, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 4;
+ }
+
+ /* < UMTS 1.28 Mcps TDD Radio Access Technology Capability : bit >
+ * Extract UMTS 1.28 Mcps TDD Radio Access Technology Capability
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_item(tree, hf_gsm_a_umts_128_mcps_tdd_rat_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ /* < GERAN Feature Package 1 : bit >
+ * Extract GERAN Feature Package 1
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_item(tree, hf_gsm_a_geran_feature_package_1, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ /* { 0 | 1 < Extended DTM GPRS Multi Slot Class : bit(2) >
+ * < Extended DTM EGPRS Multi Slot Class : bit(2) > }
+ * Extract Extended DTM E/GPRS Information presence
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_ret_val(tree, hf_gsm_a_ext_dtm_e_gprs_multi_slot_info_present, tvb, bit_offset, 1, &extDtmEGprsMultiSlotInfoPresent, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ if (extDtmEGprsMultiSlotInfoPresent == 1)
+ {
+ /* Extract Extended DTM GPRS Multi Slot Class */
+ proto_tree_add_bits_item(tree, hf_gsm_a_ext_dtm_gprs_multi_slot_class, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 2;
+
+ /* Extract Extended DTM EGPRS Multi Slot Class */
+ proto_tree_add_bits_item(tree, hf_gsm_a_ext_dtm_egprs_multi_slot_class, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 2;
+ }
+
+ /*
+ * Release 5 starts here
+ *
+ * { 0 | 1 < High Multislot Capability : bit(2) > } -- Release 5 starts here.
+ * Extract High Multislot Capability presence
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_ret_val(tree, hf_gsm_a_high_multislot_cap_present, tvb, bit_offset, 1, &highMultislotCapPresent, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ if (highMultislotCapPresent == 1)
+ {
+ /* Extract High Multislot Capability */
+ proto_tree_add_bits_item(tree, hf_gsm_a_high_multislot_cap, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 2;
+ }
+
+ /*
+ * { 0 | 1 < GERAN Iu Mode Capabilities > } -- "1" also means support of GERAN Iu mode
+ * Extract GERAN Iu Mode Capabilities presence
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_ret_val(tree, hf_gsm_a_geran_iu_mode_support, tvb, bit_offset, 1, &geranIuModeSupport, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ if (geranIuModeSupport == 1)
+ {
+ /* Extract GERAN Iu Mode Capabilities Length */
+ length = tvb_get_bits8(tvb, bit_offset, 4);
+
+ /* Extract GERAN Iu Mode Capabilities */
+ item = proto_tree_add_bits_item(tree, hf_gsm_a_geran_iu_mode_cap, tvb, bit_offset, length + 4, ENC_BIG_ENDIAN);
+ subtree = proto_item_add_subtree(item, ett_gsm_common_elem[DE_MS_CM_3]);
+
+ /* Add GERAN Iu Mode Capabilities Length in subtree */
+ proto_tree_add_bits_item(subtree, hf_gsm_a_geran_iu_mode_cap_length, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
+ bit_offset += 4;
+ target_bit_offset = bit_offset + length;
+
+ /* Extract FLO Iu Capability */
+ proto_tree_add_bits_item(subtree, hf_gsm_a_flo_iu_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset += 1;
+
+ /* If needed, add spare bits */
+ if (target_bit_offset > bit_offset)
+ {
+ proto_tree_add_bits_item(subtree, hf_gsm_a_spare_bits, tvb, bit_offset, target_bit_offset - bit_offset, ENC_BIG_ENDIAN);
+ bit_offset = target_bit_offset;
+ }
+ }
+
+ /* < GERAN Feature Package 2 : bit >
+ * Extract GERAN Feature Package 2
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_item(tree, hf_gsm_a_geran_feature_package_2, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ /* < GMSK Multislot Power Profile : bit (2) >
+ * Extract GMSK Multislot Power Profile
+ */
+ AVAILABLE_BITS_CHECK(2);
+ proto_tree_add_bits_item(tree, hf_gsm_a_gmsk_multislot_power_prof, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 2;
+
+ /* < 8-PSK Multislot Power Profile : bit (2) >
+ * Extract GMSK Multislot Power Profile
+ */
+ AVAILABLE_BITS_CHECK(2);
+ proto_tree_add_bits_item(tree, hf_gsm_a_8_psk_multislot_power_prof, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 2;
+
+ /*
+ * Release 6 starts here
+ *
+ * { 0 | 1 < T-GSM 400 Bands Supported : { 01 | 10 | 11 } > -- Release 6 starts here.
+ * < T-GSM 400 Associated Radio Capability: bit(4) > }
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_ret_val(tree, hf_gsm_a_t_gsm_400_band_info_present, tvb, bit_offset, 1, &tGsm400BandInfoPresent, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ if (tGsm400BandInfoPresent == 1)
+ {
+ /* Extract T-GSM 400 Bands Supported */
+ proto_tree_add_bits_item(tree, hf_gsm_a_t_gsm_400_bands_supported, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 2;
+
+ /* Extract T-GSM 400 Associated Radio Capability */
+ proto_tree_add_bits_item(tree, hf_gsm_a_t_gsm_400_assoc_radio_cap, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 4;
+ }
+
+ /* { 0 | 1 < T-GSM 900 Associated Radio Capability: bit(4) > }
+ * Extract T-GSM 900 Associated Radio Capability presence
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_ret_val(tree, hf_gsm_a_t_gsm_900_assoc_radio_cap_present, tvb, bit_offset, 1, &tGsm900AssocRadioCapabilityPresent, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ if (tGsm900AssocRadioCapabilityPresent == 1)
+ {
+ /* Extract T-GSM 900 Associated Radio Capability */
+ proto_tree_add_bits_item(tree, hf_gsm_a_t_gsm_900_assoc_radio_cap, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 4;
+ }
+
+ /* < Downlink Advanced Receiver Performance : bit (2)>
+ * Extract Downlink Advanced Receiver Performance
+ */
+ AVAILABLE_BITS_CHECK(2);
+ proto_tree_add_bits_item(tree, hf_gsm_a_downlink_adv_receiver_perf, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 2;
+
+ /* < DTM Enhancements Capability : bit >
+ * Extract DTM Enhancements Capability
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_item(tree, hf_gsm_a_dtm_enhancements_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ /* { 0 | 1 < DTM GPRS High Multi Slot Class : bit(3) >
+ * < Offset required : bit>
+ * { 0 | 1 < DTM EGPRS High Multi Slot Class : bit(3) > } }
+ * Extract DTM E/GPRS High Multi Slot Information presence
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_ret_val(tree, hf_gsm_a_dtm_e_gprs_high_multi_slot_info_present, tvb, bit_offset, 1, &dtmEGprsHighMultiSlotInfoPresent, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ if (dtmEGprsHighMultiSlotInfoPresent == 1)
+ {
+ /* Extract DTM GPRS High Multi Slot Class */
+ proto_tree_add_bits_item(tree, hf_gsm_a_dtm_gprs_high_multi_slot_class, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 3;
+
+ /* Extract Offset Required */
+ proto_tree_add_bits_item(tree, hf_gsm_a_offset_required, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ /* Extract DTM EGPRS High Multi Slot Class Presence */
+ proto_tree_add_bits_ret_val(tree, hf_gsm_a_dtm_egprs_high_multi_slot_class_present, tvb, bit_offset, 1, &dtmEgprsHighMultiSlotClassPresent, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ /* Extract DTM EGPRS High Multi Slot Class */
+ if (dtmEgprsHighMultiSlotClassPresent == 1)
+ {
+ proto_tree_add_bits_item(tree, hf_gsm_a_dtm_egprs_high_multi_slot_class, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 3;
+ }
+ }
+
+ /* < Repeated ACCH Capability : bit >
+ * Extract Repeated ACCH Capability
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_item(tree, hf_gsm_a_repeated_acch_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ /*
+ * Release 7 starts here
+ *
+ * { 0 | 1 <GSM 710 Associated Radio Capability : bit(4) > } -- Release 7 starts here.
+ * Extract GSM 710 Associated Radio Capability presence
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_ret_val(tree, hf_gsm_a_gsm_710_assoc_radio_cap_present, tvb, bit_offset, 1, &gsm710AssocRadioCapabilityPresent, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ if (gsm710AssocRadioCapabilityPresent == 1)
+ {
+ /* Extract GSM 710 Associated Radio Capability */
+ proto_tree_add_bits_item(tree, hf_gsm_a_gsm_710_assoc_radio_cap, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 4;
+ }
+
+ /* { 0 | 1 < T-GSM 810 Associated Radio Capability: bit(4) > }
+ * Extract T-GSM 810 Associated Radio Capability presence
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_ret_val(tree, hf_gsm_a_t_gsm_810_assoc_radio_cap_present, tvb, bit_offset, 1, &tGsm810AssocRadioCapabilityPresent, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ if (tGsm810AssocRadioCapabilityPresent == 1)
+ {
+ /* Extract T-GSM 810 Associated Radio Capability */
+ proto_tree_add_bits_item(tree, hf_gsm_a_t_gsm_810_assoc_radio_cap, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 4;
+ }
+
+ /* < Ciphering Mode Setting Capability : bit >
+ * Extract Ciphering Mode Setting Capability
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_item(tree, hf_gsm_a_ciphering_mode_setting_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ /* < Additional Positioning Capabilities : bit >
+ * Extract Additional Positioning Capabilities
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_item(tree, hf_gsm_a_additional_positioning_caps, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ /*
+ * Release 8 starts here
+ *
+ * <E-UTRA FDD support : bit > -- Release 8 starts here.
+ * Extract E-UTRA FDD support
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_item(tree, hf_gsm_a_e_utra_fdd_support, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ /*
+ * <E-UTRA TDD support : bit >
+ * Extract E-UTRA TDD support
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_item(tree, hf_gsm_a_e_utra_tdd_support, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ /*
+ * <E-UTRA Measurement and Reporting support : bit >
+ * Extract E-UTRA Measurement and Reporting support
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_item(tree, hf_gsm_a_e_utra_meas_and_report_support, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ /*
+ * <Priority-based reselection support : bit >
+ * Extract Priority-based reselection support
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_item(tree, hf_gsm_a_prio_based_resel_support, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ /*
+ * Release 9 starts here
+ *
+ * <UTRA CSG Cells Reporting : bit > -- Release 9 starts here.
+ * Extract UTRA CSG Cells Reporting
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_item(tree, hf_gsm_a_utra_csg_cells_reporting, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ /*
+ * <VAMOS Level : bit(2) >
+ * Extract VAMOS Level
+ */
+ AVAILABLE_BITS_CHECK(2);
+ proto_tree_add_bits_item(tree, hf_gsm_a_vamos_level, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 2;
+
+ /*
+ * Release 10 starts here
+ *
+ * < TIGHTER Capability : bit(2) > -- Release 10 starts here.
+ * Extract TIGHTER Capability
+ */
+ AVAILABLE_BITS_CHECK(2);
+ proto_tree_add_bits_item(tree, hf_gsm_a_tighter_cap, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 2;
+
+ /*
+ * < Selective Ciphering of Downlink SACCH : bit >
+ * Extract Selective Ciphering of Downlink SACCH
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_item(tree, hf_gsm_a_selective_ciph_down_sacch, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset = bit_offset + 1;
+
+ /*
+ * Add spare bits until we reach an octet boundary
+ */
+ bits_left = (((len + offset) << 3) - bit_offset) & 0x07;
+ if (bits_left != 0)
+ {
+ proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, bit_offset, bits_left, ENC_BIG_ENDIAN);
+ bit_offset += bits_left;
+ }
+
+ /* translate to byte offset (we already know that we are on an octet boundary) */
+ curr_offset = bit_offset >> 3;
+ EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
+
+ return(len);
}
/*
* [3] 10.5.1.8
@@ -3044,7 +3083,7 @@ guint16 de_spare_nibble(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
gint bit_offset;
curr_offset = offset;
- if (RIGHT_NIBBLE==len)
+ if (RIGHT_NIBBLE == len)
bit_offset = 4;
else
bit_offset = 0;
@@ -3061,70 +3100,70 @@ guint16 de_spare_nibble(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
guint16
de_d_gb_call_ref(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
- guint32 value;
- guint32 curr_offset;
- const gchar *str;
-
- curr_offset = offset;
-
- value = tvb_get_ntohl(tvb, curr_offset);
-
- other_decode_bitfield_value(a_bigbuf, value, 0xffffffe0, 32);
- proto_tree_add_text(tree, tvb, curr_offset, 4,
- "%s = Group or Broadcast call reference: %u (0x%04x)",
- a_bigbuf,
- (value & 0xffffffe0) >> 5,
- (value & 0xffffffe0) >> 5);
-
- other_decode_bitfield_value(a_bigbuf, value, 0x00000010, 32);
- proto_tree_add_text(tree, tvb, curr_offset, 4,
- "%s = SF Service Flag: %s",
- a_bigbuf,
- (value & 0x00000010) ?
- "VGCS (Group call reference)" : "VBS (Broadcast call reference)");
-
- other_decode_bitfield_value(a_bigbuf, value, 0x00000008, 32);
- proto_tree_add_text(tree, tvb, curr_offset, 4,
- "%s = AF Acknowledgement Flag: acknowledgment is %srequired",
- a_bigbuf,
- (value & 0x00000008) ? "" : "not ");
-
- switch (value & 0x00000007)
- {
- case 1: str = "call priority level 4"; break;
- case 2: str = "call priority level 3"; break;
- case 3: str = "call priority level 2"; break;
- case 4: str = "call priority level 1"; break;
- case 5: str = "call priority level 0"; break;
- case 6: str = "call priority level B"; break;
- case 7: str = "call priority level A"; break;
- default:
- str = "no priority applied";
- break;
- }
-
- other_decode_bitfield_value(a_bigbuf, value, 0x00000007, 32);
- proto_tree_add_text(tree, tvb, curr_offset, 4,
- "%s = Call Priority: %s",
- a_bigbuf,
- str);
-
- curr_offset += 4;
-
- oct = tvb_get_guint8(tvb, curr_offset);
-
- other_decode_bitfield_value(a_bigbuf, oct, 0xf0, 8);
- proto_tree_add_text(tree, tvb, curr_offset, 1,
- "%s = Ciphering Information",
- a_bigbuf);
-
- proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, (curr_offset<<3)+4, 4, ENC_BIG_ENDIAN);
- curr_offset++;
-
- /* no length check possible */
-
- return(curr_offset - offset);
+ guint8 oct;
+ guint32 value;
+ guint32 curr_offset;
+ const gchar *str;
+
+ curr_offset = offset;
+
+ value = tvb_get_ntohl(tvb, curr_offset);
+
+ other_decode_bitfield_value(a_bigbuf, value, 0xffffffe0, 32);
+ proto_tree_add_text(tree, tvb, curr_offset, 4,
+ "%s = Group or Broadcast call reference: %u (0x%04x)",
+ a_bigbuf,
+ (value & 0xffffffe0) >> 5,
+ (value & 0xffffffe0) >> 5);
+
+ other_decode_bitfield_value(a_bigbuf, value, 0x00000010, 32);
+ proto_tree_add_text(tree, tvb, curr_offset, 4,
+ "%s = SF Service Flag: %s",
+ a_bigbuf,
+ (value & 0x00000010) ?
+ "VGCS (Group call reference)" : "VBS (Broadcast call reference)");
+
+ other_decode_bitfield_value(a_bigbuf, value, 0x00000008, 32);
+ proto_tree_add_text(tree, tvb, curr_offset, 4,
+ "%s = AF Acknowledgement Flag: acknowledgment is %srequired",
+ a_bigbuf,
+ (value & 0x00000008) ? "" : "not ");
+
+ switch (value & 0x00000007)
+ {
+ case 1: str = "call priority level 4"; break;
+ case 2: str = "call priority level 3"; break;
+ case 3: str = "call priority level 2"; break;
+ case 4: str = "call priority level 1"; break;
+ case 5: str = "call priority level 0"; break;
+ case 6: str = "call priority level B"; break;
+ case 7: str = "call priority level A"; break;
+ default:
+ str = "no priority applied";
+ break;
+ }
+
+ other_decode_bitfield_value(a_bigbuf, value, 0x00000007, 32);
+ proto_tree_add_text(tree, tvb, curr_offset, 4,
+ "%s = Call Priority: %s",
+ a_bigbuf,
+ str);
+
+ curr_offset += 4;
+
+ oct = tvb_get_guint8(tvb, curr_offset);
+
+ other_decode_bitfield_value(a_bigbuf, oct, 0xf0, 8);
+ proto_tree_add_text(tree, tvb, curr_offset, 1,
+ "%s = Ciphering Information",
+ a_bigbuf);
+
+ proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, (curr_offset<<3)+4, 4, ENC_BIG_ENDIAN);
+ curr_offset++;
+
+ /* no length check possible */
+
+ return(curr_offset - offset);
}
/*
@@ -3133,78 +3172,154 @@ de_d_gb_call_ref(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint3
static guint16
de_pd_sapi(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
- guint32 curr_offset;
- proto_tree *subtree;
- proto_item *item;
- const gchar *str;
+ guint8 oct;
+ guint32 curr_offset;
+ proto_tree *subtree;
+ proto_item *item;
+ const gchar *str;
- curr_offset = offset;
+ curr_offset = offset;
- oct = tvb_get_guint8(tvb, curr_offset);
+ oct = tvb_get_guint8(tvb, curr_offset);
- item =
- proto_tree_add_text(tree,
- tvb, curr_offset, 1, "%s",
- gsm_dtap_elem_strings[DE_PD_SAPI].strptr);
+ item =
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1, "%s",
+ gsm_dtap_elem_strings[DE_PD_SAPI].strptr);
- subtree = proto_item_add_subtree(item, ett_gsm_dtap_elem[DE_PD_SAPI]);
+ subtree = proto_item_add_subtree(item, ett_gsm_dtap_elem[DE_PD_SAPI]);
- proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, curr_offset<<3, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, curr_offset<<3, 2, ENC_BIG_ENDIAN);
- switch ((oct & 0x30) >> 4)
- {
- case 0: str = "SAPI 0"; break;
- case 3: str = "SAPI 3"; break;
- default:
- str = "Reserved";
- break;
- }
+ switch ((oct & 0x30) >> 4)
+ {
+ case 0: str = "SAPI 0"; break;
+ case 3: str = "SAPI 3"; break;
+ default:
+ str = "Reserved";
+ break;
+ }
- other_decode_bitfield_value(a_bigbuf, oct, 0x30, 8);
- proto_tree_add_text(subtree, tvb, curr_offset, 1,
- "%s = SAPI (Service Access Point Identifier): %s",
- a_bigbuf,
- str);
+ other_decode_bitfield_value(a_bigbuf, oct, 0x30, 8);
+ proto_tree_add_text(subtree, tvb, curr_offset, 1,
+ "%s = SAPI (Service Access Point Identifier): %s",
+ a_bigbuf,
+ str);
- proto_tree_add_item(tree, hf_gsm_a_L3_protocol_discriminator, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_L3_protocol_discriminator, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ curr_offset++;
- /* no length check possible */
+ /* no length check possible */
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
* [3] 10.5.1.11 Priority Level
*/
static const value_string gsm_a_call_prio_vals[] = {
- { 0x00, "no priority applied" },
- { 0x01, "call priority level 4" },
- { 0x02, "call priority level 3" },
- { 0x03, "call priority level 2" },
- { 0x04, "call priority level 1" },
- { 0x05, "call priority level 0" },
- { 0x06, "call priority level B" },
- { 0x07, "call priority level A" },
- { 0, NULL }
+ { 0x00, "no priority applied" },
+ { 0x01, "call priority level 4" },
+ { 0x02, "call priority level 3" },
+ { 0x03, "call priority level 2" },
+ { 0x04, "call priority level 1" },
+ { 0x05, "call priority level 0" },
+ { 0x06, "call priority level B" },
+ { 0x07, "call priority level A" },
+ { 0, NULL }
};
static guint16
de_prio(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
+
+ curr_offset = offset;
+
+ proto_tree_add_item(tree, hf_gsm_a_b8spare, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(tree, hf_gsm_a_call_prio, tvb, (curr_offset<<3)+5, 3, ENC_BIG_ENDIAN);
+ curr_offset++;
+
+ /* no length check possible */
+
+ return(curr_offset - offset);
+}
+
+/*
+ * [3] 10.5.1.12.1 CN Common GSM-MAP NAS system information
+ */
+guint16
+de_cn_common_gsm_map_nas_sys_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- proto_tree_add_item(tree, hf_gsm_a_b8spare, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_bits_item(tree, hf_gsm_a_call_prio, tvb, (curr_offset<<3)+5, 3, ENC_BIG_ENDIAN);
- curr_offset++;
+ proto_tree_add_item(tree, hf_gsm_a_lac, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset += 2;
- /* no length check possible */
+ EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
- return(curr_offset - offset);
+ return(curr_offset - offset);
+}
+
+/*
+ * [3] 10.5.1.12.2 CS domain specific system information
+ */
+const true_false_string gsm_a_att_value = {
+ "MSs shall apply IMSI attach and detach procedure",
+ "MSs shall not apply IMSI attach and detach procedure"
+};
+
+guint16
+de_cs_domain_spec_sys_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+
+ curr_offset = offset;
+
+ proto_tree_add_item(tree, hf_gsm_a_rr_t3212, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, (curr_offset<<3), 7, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_att, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+
+ EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
+
+ return(curr_offset - offset);
+}
+
+/*
+ * [3] 10.5.1.12.3 PS domain specific system information
+ */
+const true_false_string gsm_a_nmo_1_value = {
+ "Network Mode of Operation I is used for MS configured for NMO_I_Behaviour",
+ "Network Mode of Operation indicated in Bit 1 (NMO) is used for MS configured for NMO_I_Behaviour"
+};
+
+const true_false_string gsm_a_nmo_value = {
+ "Network Mode of Operation II",
+ "Network Mode of Operation I"
+};
+
+guint16
+de_ps_domain_spec_sys_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+
+ curr_offset = offset;
+
+ proto_tree_add_item(tree, hf_gsm_a_gm_rac, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, (curr_offset<<3), 6, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_nmo_1, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_nmo, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+
+ EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
+
+ return(curr_offset - offset);
}
/*
@@ -3213,930 +3328,983 @@ de_prio(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset,
guint16
de_plmn_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len)
{
- guint8 octs[3];
- guint32 curr_offset;
- gchar mcc[4];
- gchar mnc[4];
- guint8 num_plmn;
+ guint8 octs[3];
+ guint32 curr_offset;
+ gchar mcc[4];
+ gchar mnc[4];
+ guint8 num_plmn;
- curr_offset = offset;
+ curr_offset = offset;
- num_plmn = 0;
- while ((len - (curr_offset - offset)) >= 3)
- {
- octs[0] = tvb_get_guint8(tvb, curr_offset);
- octs[1] = tvb_get_guint8(tvb, curr_offset + 1);
- octs[2] = tvb_get_guint8(tvb, curr_offset + 2);
+ num_plmn = 0;
+ while ((len - (curr_offset - offset)) >= 3)
+ {
+ octs[0] = tvb_get_guint8(tvb, curr_offset);
+ octs[1] = tvb_get_guint8(tvb, curr_offset + 1);
+ octs[2] = tvb_get_guint8(tvb, curr_offset + 2);
- mcc_mnc_aux(octs, mcc, mnc);
+ mcc_mnc_aux(octs, mcc, mnc);
- proto_tree_add_text(tree,
- tvb, curr_offset, 3,
- "PLMN[%u] Mobile Country Code (MCC): %s, Mobile Network Code (MNC): %s",
- num_plmn + 1,
- mcc,
- mnc);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 3,
+ "PLMN[%u] Mobile Country Code (MCC): %s, Mobile Network Code (MNC): %s",
+ num_plmn + 1,
+ mcc,
+ mnc);
- curr_offset += 3;
+ curr_offset += 3;
- num_plmn++;
- }
+ num_plmn++;
+ }
- if (add_string)
- g_snprintf(add_string, string_len, " - %u PLMN%s",
- num_plmn, plurality(num_plmn, "", "s"));
+ if (add_string)
+ g_snprintf(add_string, string_len, " - %u PLMN%s",
+ num_plmn, plurality(num_plmn, "", "s"));
- EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
+ EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
+
/*
* 10.5.1.14 NAS container for PS HO
*/
-
static const value_string gsm_a_pld_xid_vals[] = {
- { 0x00, "The MS shall perform a Reset of LLC and SNDCP without old XID indicator" },
- { 0x01, "The MS shall perform a Reset of LLC and SNDCP with old XID indicator" },
- { 0, NULL }
+ { 0x00, "The MS shall perform a Reset of LLC and SNDCP without old XID indicator" },
+ { 0x01, "The MS shall perform a Reset of LLC and SNDCP with old XID indicator" },
+ { 0, NULL }
};
-guint16
+
+static guint16
de_nas_cont_for_ps_ho(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- proto_tree_add_text(tree, tvb, curr_offset, len, "IE not dissected yet");
- /* 8 7 6 5 4 3 2 1
- * 0 0 0 old 0 Type of ciphering
- * spare spare spare XID spare algorithm
- */
- proto_tree_add_item(tree, hf_gsm_a_old_xid, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_gsm_a_type_of_ciph_alg, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ /* 8 7 6 5 4 3 2 1
+ * 0 0 0 old 0 Type of ciphering
+ * spare spare spare XID spare algorithm
+ */
+ proto_tree_add_item(tree, hf_gsm_a_old_xid, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_type_of_ciph_alg, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
- /* IOV-UI value (octet 2 to 5)
- * The IOV-UI value consists of 32 bits, the format is defined in 3GPP TS 44.064 [78a].
- */
- proto_tree_add_item(tree, hf_gsm_a_iov_ui, tvb, curr_offset, 4, ENC_BIG_ENDIAN);
- curr_offset+=4;
+ /* IOV-UI value (octet 2 to 5)
+ * The IOV-UI value consists of 32 bits, the format is defined in 3GPP TS 44.064 [78a].
+ */
+ proto_tree_add_item(tree, hf_gsm_a_iov_ui, tvb, curr_offset, 4, ENC_BIG_ENDIAN);
+ curr_offset += 4;
- EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
+ EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
- return(curr_offset - offset);
+ return(curr_offset - offset);
+}
+
+/*
+ * 10.5.1.15 MS network feature support
+ */
+static const true_false_string gsm_a_ext_periodic_timers_value = {
+ "MS supports the extended periodic timer in this domain",
+ "MS does not support the extended periodic timer in this domain"
+};
+
+static guint16
+de_ms_net_feat_sup(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset, bit_offset;
+
+ curr_offset = offset;
+ bit_offset = (curr_offset<<3)+4;
+
+ proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
+ bit_offset += 3;
+ proto_tree_add_bits_item(tree, hf_gsm_a_ext_periodic_timers, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+
+ return (curr_offset - offset);
}
guint16 (*common_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len) = {
- /* Common Information Elements 10.5.1 */
- de_cell_id, /* Cell Identity */
- de_ciph_key_seq_num, /* Ciphering Key Sequence Number */
- de_lai, /* Location Area Identification */
- de_mid, /* Mobile Identity */
- de_ms_cm_1, /* Mobile Station Classmark 1 */
- de_ms_cm_2, /* Mobile Station Classmark 2 */
- de_ms_cm_3, /* Mobile Station Classmark 3 */
- de_spare_nibble, /* Spare Half Octet */
- de_d_gb_call_ref, /* Descriptive group or broadcast call reference */
- NULL /* handled inline */, /* Group Cipher Key Number */
- de_pd_sapi, /* PD and SAPI $(CCBS)$ */
- /* Pos 10 */
- de_prio /* handled inline */, /* Priority Level */
- de_plmn_list, /* 10.5.1.13 PLMN list */
- de_nas_cont_for_ps_ho, /* 10.5.1.14 NAS container for PS HO */
- NULL, /* NONE */
+ /* Common Information Elements 10.5.1 */
+ de_cell_id, /* Cell Identity */
+ de_ciph_key_seq_num, /* Ciphering Key Sequence Number */
+ de_lai, /* Location Area Identification */
+ de_mid, /* Mobile Identity */
+ de_ms_cm_1, /* Mobile Station Classmark 1 */
+ de_ms_cm_2, /* Mobile Station Classmark 2 */
+ de_ms_cm_3, /* Mobile Station Classmark 3 */
+ de_spare_nibble, /* Spare Half Octet */
+ de_d_gb_call_ref, /* Descriptive group or broadcast call reference */
+ NULL /* handled inline */, /* Group Cipher Key Number */
+ de_pd_sapi, /* PD and SAPI $(CCBS)$ */
+ /* Pos 10 */
+ de_prio /* handled inline */, /* Priority Level */
+ de_cn_common_gsm_map_nas_sys_info, /* 10.5.1.12.1 CN Common GSM-MAP NAS system information */
+ de_cs_domain_spec_sys_info, /* 10.5.1.12.2 CS domain specific system information */
+ de_ps_domain_spec_sys_info, /* 10.5.1.12.2 PS domain specific system information */
+ de_plmn_list, /* 10.5.1.13 PLMN list */
+ de_nas_cont_for_ps_ho, /* 10.5.1.14 NAS container for PS HO */
+ de_ms_net_feat_sup, /* 10.5.1.15 MS network feature support */
+ NULL, /* NONE */
};
/* Register the protocol with Wireshark */
void
proto_register_gsm_a_common(void)
{
- guint i;
- guint last_offset;
-
- /* Setup list of header fields */
- static hf_register_info hf[] =
- {
- { &hf_gsm_a_common_elem_id,
- { "Element ID", "gsm_a_common.elem_id",
- FT_UINT8, BASE_DEC, NULL, 0,
- NULL, HFILL }
- },
- { &hf_gsm_a_l_ext,
- { "ext", "gsm_a_common.l_ext",
- FT_UINT8, BASE_DEC, NULL, 0x80,
- NULL, HFILL }
- },
- { &hf_gsm_a_imsi,
- { "IMSI", "gsm_a.imsi",
- FT_STRING, BASE_NONE, 0, 0,
- NULL, HFILL }
- },
- { &hf_gsm_a_tmsi,
- { "TMSI/P-TMSI", "gsm_a.tmsi",
- FT_UINT32, BASE_HEX, 0, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_imei,
- { "IMEI", "gsm_a.imei",
- FT_STRING, BASE_NONE, 0, 0,
- NULL, HFILL }
- },
- { &hf_gsm_a_imeisv,
- { "IMEISV", "gsm_a.imeisv",
- FT_STRING, BASE_NONE, 0, 0,
- NULL, HFILL }
- },
- { &hf_gsm_a_MSC_rev,
- { "Revision Level","gsm_a.MSC2_rev",
- FT_UINT8,BASE_DEC, VALS(gsm_a_msc_rev_vals), 0x60,
- NULL, HFILL }
- },
- { &hf_gsm_a_ES_IND,
- { "ES IND","gsm_a.MSC2_rev",
- FT_BOOLEAN,8, TFS(&ES_IND_vals), 0x10,
- NULL, HFILL }
- },
- { &hf_gsm_a_A5_1_algorithm_sup,
- { "A5/1 algorithm supported","gsm_a.MSC2_rev",
- FT_BOOLEAN,8, TFS(&A5_1_algorithm_sup_vals), 0x08,
- NULL, HFILL }
- },
- { &hf_gsm_a_RF_power_capability,
- { "RF Power Capability","gsm_a.MSC2_rev",
- FT_UINT8,BASE_DEC, VALS(RF_power_capability_vals), 0x07,
- NULL, HFILL }
- },
- { &hf_gsm_a_ps_sup_cap,
- { "PS capability (pseudo-synchronization capability)","gsm_a.ps_sup_cap",
- FT_BOOLEAN,8, TFS(&ps_sup_cap_vals), 0x40,
- NULL, HFILL }
- },
- { &hf_gsm_a_SS_screening_indicator,
- { "SS Screening Indicator","gsm_a.SS_screening_indicator",
- FT_UINT8,BASE_DEC, VALS(SS_screening_indicator_vals), 0x30,
- NULL, HFILL }
- },
- { &hf_gsm_a_SM_capability,
- { "SM capability (MT SMS pt to pt capability)","gsm_a.SM_cap",
- FT_BOOLEAN,8, TFS(&SM_capability_vals), 0x08,
- NULL, HFILL }
- },
- { &hf_gsm_a_VBS_notification_rec,
- { "VBS notification reception","gsm_a.VBS_notification_rec",
- FT_BOOLEAN,8, TFS(&VBS_notification_rec_vals), 0x04,
- NULL, HFILL }
- },
- { &hf_gsm_a_VGCS_notification_rec,
- { "VGCS notification reception","gsm_a.VGCS_notification_rec",
- FT_BOOLEAN,8, TFS(&VGCS_notification_rec_vals), 0x02,
- NULL, HFILL }
- },
- { &hf_gsm_a_FC_frequency_cap,
- { "FC Frequency Capability","gsm_a.FC_frequency_cap",
- FT_BOOLEAN,8, TFS(&FC_frequency_cap_vals), 0x01,
- NULL, HFILL }
- },
- { &hf_gsm_a_CM3,
- { "CM3","gsm_a.CM3",
- FT_BOOLEAN,8, TFS(&CM3_vals), 0x80,
- NULL, HFILL }
- },
- { &hf_gsm_a_LCS_VA_cap,
- { "LCS VA capability (LCS value added location request notification capability)","gsm_a.LCS_VA_cap",
- FT_BOOLEAN,8, TFS(&LCS_VA_cap_vals), 0x20,
- NULL, HFILL }
- },
- { &hf_gsm_a_UCS2_treatment,
- { "UCS2 treatment","gsm_a.UCS2_treatment",
- FT_BOOLEAN,8, TFS(&UCS2_treatment_vals), 0x10,
- NULL, HFILL }
- },
- { &hf_gsm_a_SoLSA,
- { "SoLSA","gsm_a.SoLSA",
- FT_BOOLEAN,8, TFS(&SoLSA_vals), 0x08,
- NULL, HFILL }
- },
- { &hf_gsm_a_CMSP,
- { "CMSP: CM Service Prompt","gsm_a.CMSP",
- FT_BOOLEAN,8, TFS(&CMSP_vals), 0x04,
- NULL, HFILL }
- },
- { &hf_gsm_a_A5_7_algorithm_sup,
- { "A5/7 algorithm supported","gsm_a.A5_7_algorithm_sup",
- FT_BOOLEAN,8, TFS(&A5_7_algorithm_sup_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_A5_6_algorithm_sup,
- { "A5/6 algorithm supported","gsm_a.A5_6_algorithm_sup",
- FT_BOOLEAN,8, TFS(&A5_6_algorithm_sup_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_A5_5_algorithm_sup,
- { "A5/5 algorithm supported","gsm_a.A5_5_algorithm_sup",
- FT_BOOLEAN,8, TFS(&A5_5_algorithm_sup_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_A5_4_algorithm_sup,
- { "A5/4 algorithm supported","gsm_a.A5_4_algorithm_sup",
- FT_BOOLEAN,8, TFS(&A5_4_algorithm_sup_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_A5_3_algorithm_sup,
- { "A5/3 algorithm supported","gsm_a.A5_3_algorithm_sup",
- FT_BOOLEAN,8, TFS(&A5_3_algorithm_sup_vals), 0x02,
- NULL, HFILL }
- },
- { &hf_gsm_a_A5_2_algorithm_sup,
- { "A5/2 algorithm supported","gsm_a.A5_2_algorithm_sup",
- FT_BOOLEAN,8, TFS(&A5_2_algorithm_sup_vals), 0x01,
- NULL, HFILL }
- },
- { &hf_gsm_a_mobile_identity_type,
- { "Mobile Identity Type","gsm_a.ie.mobileid.type",
- FT_UINT8, BASE_DEC, VALS(mobile_identity_type_vals), 0x07,
- NULL, HFILL }
- },
- { &hf_gsm_a_odd_even_ind,
- { "Odd/even indication","gsm_a.oddevenind",
- FT_BOOLEAN, 8, TFS(&oddevenind_vals), 0x08,
- NULL, HFILL }
- },
- { &hf_gsm_a_tmgi_mcc_mnc_ind,
- { "MCC/MNC indication", "gsm_a.tmgi_mcc_mnc_ind",
- FT_BOOLEAN, 8, TFS(&gsm_a_present_vals), 0x10,
- NULL, HFILL}
- },
- { &hf_gsm_a_mbs_ses_id_ind,
- { "MBMS Session Identity indication", "gsm_a.mbs_session_id_ind",
- FT_BOOLEAN, 8, TFS(&gsm_a_present_vals), 0x20,
- NULL, HFILL}
- },
- { &hf_gsm_a_mbs_service_id,
- { "MBMS Service ID", "gsm_a.mbs_service_id",
- FT_UINT24, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_mbs_session_id,
- { "MBMS Session ID", "gsm_a.mbs_session_id",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_L3_protocol_discriminator,
- { "Protocol discriminator","gsm_a.L3_protocol_discriminator",
- FT_UINT8,BASE_DEC, VALS(protocol_discriminator_vals), 0x0f,
- NULL, HFILL }
- },
- { &hf_gsm_a_call_prio,
- { "Call priority", "gsm_a.call_prio",
- FT_UINT8, BASE_DEC, VALS(gsm_a_call_prio_vals), 0x00,
- NULL, HFILL }
- },
- { &hf_gsm_a_type_of_ciph_alg,
- { "Call priority", "gsm_a.call_prio",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gm_type_of_ciph_alg_vals), 0x07,
- NULL, HFILL }
- },
- { &hf_gsm_a_old_xid,
- { "Old XID", "gsm_a.old_xid",
- FT_UINT8, BASE_DEC, VALS(gsm_a_pld_xid_vals), 0x10,
- NULL, HFILL }
- },
- { &hf_gsm_a_iov_ui,
- { "IOV-UI", "gsm_a.iov_ui",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_skip_ind,
- { "Skip Indicator", "gsm_a.skip.ind",
- FT_UINT8, BASE_DEC, NULL, 0xf0,
- NULL, HFILL }
- },
- { &hf_gsm_a_b7spare,
- { "Spare","gsm_a.spareb7",
- FT_UINT8,BASE_DEC, NULL, 0x40,
- NULL, HFILL }
- },
- { &hf_gsm_a_b8spare,
- { "Spare","gsm_a.spareb8",
- FT_UINT8,BASE_DEC, NULL, 0x80,
- NULL, HFILL }
- },
- { &hf_gsm_a_spare_bits,
- { "Spare bit(s)","gsm_a.spare_bits",
- FT_UINT8,BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_multi_bnd_sup_fields,
- { "Multiband supported field","gsm_a.multi_bnd_sup_fields",
- FT_UINT8,BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_pgsm_supported,
- { "P-GSM Supported", "gsm_a.classmark3.pgsmSupported",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x0,
- NULL, HFILL}
- },
- { &hf_gsm_a_egsm_supported,
- { "E-GSM or R-GSM Supported", "gsm_a.classmark3.egsmSupported",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x0,
- NULL, HFILL}
- },
- { &hf_gsm_a_gsm1800_supported,
- { "GSM 1800 Supported", "gsm_a.classmark3.gsm1800Supported",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x0,
- NULL, HFILL}
- },
- { &hf_gsm_a_ass_radio_cap1,
- { "Associated Radio Capability 1", "gsm_a.classmark3.ass_radio_cap1",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_gsm_a_ass_radio_cap2,
- { "Associated Radio Capability 2", "gsm_a.classmark3.ass_radio_cap2",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_gsm_a_cm3_A5_bits,
- { "A5 bits", "gsm_a.classmark3.a5_bits",
- FT_UINT8, BASE_HEX, NULL, 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_rsupport,
- { "R Support", "gsm_a.classmark3.rsupport",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x0,
- NULL, HFILL}
- },
- { &hf_gsm_a_r_capabilities,
- { "R-GSM band Associated Radio Capability", "gsm_a.classmark3.r_capabilities",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_gsm_a_multislot_capabilities,
- { "HSCSD Multi Slot Capability", "gsm_a.classmark3.multislot_capabilities",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x0,
- NULL, HFILL}
- },
- { &hf_gsm_a_multislot_class,
- { "HSCSD Multi Slot Class", "gsm_a.classmark3.multislot_cap",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_gsm_a_ucs2_treatment,
- { "UCS2 treatment","gsm_a.UCS2_treatment",
- FT_BOOLEAN,8, TFS(&UCS2_treatment_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_extended_measurement_cap,
- { "Extended Measurement Capability", "gsm_a.classmark3.ext_meas_cap",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x0,
- NULL, HFILL}
- },
- { &hf_gsm_a_ms_measurement_capability,
- { "MS measurement capability", "gsm_a.classmark3.ms_measurement_capability",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x0,
- NULL, HFILL}
- },
- { &hf_gsm_a_sms_value,
- { "SMS_VALUE (Switch-Measure-Switch)", "gsm_a.classmark3.sms_value",
- FT_UINT8, BASE_DEC, VALS(gsm_a_sms_vals), 0x0,
- NULL, HFILL}
- },
- { &hf_gsm_a_sm_value,
- { "SM_VALUE (Switch-Measure)", "gsm_a.classmark3.sm_value",
- FT_UINT8, BASE_DEC, VALS(gsm_a_sms_vals), 0x0,
- NULL, HFILL}
- },
- { &hf_gsm_a_ms_pos_method_cap_present,
- { "MS Positioning Method Capability present", "gsm_a.classmark3.ms_pos_method_cap_present",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_ms_pos_method,
- { "MS Positioning Method", "gsm_a.classmark3.ms_pos_method",
- FT_UINT8, BASE_HEX, NULL, 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_ms_assisted_e_otd,
- { "MS assisted E-OTD", "gsm_a.classmark3.ms_assisted_e_otd",
- FT_BOOLEAN, 8, TFS(&ms_assisted_e_otd_vals), 0x0,
- NULL, HFILL}
- },
- { &hf_gsm_a_ms_based_e_otd,
- { "MS based E-OTD", "gsm_a.classmark3.ms_based_e_otd",
- FT_BOOLEAN, 8, TFS(&ms_based_e_otd_vals), 0x0,
- NULL, HFILL}
- },
- { &hf_gsm_a_ms_assisted_gps,
- { "MS assisted GPS", "gsm_a.classmark3.ms_assisted_gps",
- FT_BOOLEAN, 8, TFS(&ms_assisted_gps_vals), 0x0,
- NULL, HFILL}
- },
- { &hf_gsm_a_ms_based_gps,
- { "MS based GPS", "gsm_a.classmark3.ms_based_gps",
- FT_BOOLEAN, 8, TFS(&ms_based_gps_vals), 0x0,
- NULL, HFILL}
- },
- { &hf_gsm_a_ms_conventional_gps,
- { "MS Conventional GPS", "gsm_a.classmark3.ms_conventional_gps",
- FT_BOOLEAN, 8, TFS(&ms_conventional_gps_vals), 0x0,
- NULL, HFILL}
- },
- { &hf_gsm_a_ecsd_multi_slot_capability,
- { "ECSD Multi Slot Capability present", "gsm_a.classmark3.ecsd_multi_slot_capability",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_ecsd_multi_slot_class,
- { "ECSD Multi Slot Class", "gsm_a.classmark3.ecsd_multi_slot_class",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_8_psk_struct_present,
- { "8-PSK Struct present", "gsm_a.classmark3.8_psk_struct_present",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_8_psk_struct,
- { "8-PSK Struct", "gsm_a.classmark3.8_psk_struct",
- FT_UINT8, BASE_HEX, NULL, 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_modulation_capability,
- { "Modulation Capability", "gsm_a.classmark3.modulation_capability",
- FT_BOOLEAN, 8, TFS(&modulation_capability_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_8_psk_rf_power_capability_1,
- { "8-PSK RF Power Capability 1", "gsm_a.classmark3.8_psk_rf_power_capability_1",
- FT_UINT8, BASE_HEX, VALS(eight_psk_rf_power_capability_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_8_psk_rf_power_capability_2,
- { "8-PSK RF Power Capability 2", "gsm_a.classmark3.8_psk_rf_power_capability_2",
- FT_UINT8, BASE_HEX, VALS(eight_psk_rf_power_capability_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_gsm_400_band_info_present,
- { "GSM 400 Band Information present", "gsm_a.classmark3.gsm_400_band_info_present",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_gsm_400_bands_supported,
- { "GSM 400 Bands Supported", "gsm_a.classmark3.gsm_400_bands_supported",
- FT_UINT8, BASE_HEX, VALS(gsm_400_bands_supported_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_gsm_400_assoc_radio_cap,
- { "GSM 400 Associated Radio Capability", "gsm_a.classmark3.gsm_400_assoc_radio_cap",
- FT_UINT8, BASE_HEX, NULL, 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_gsm_850_assoc_radio_cap_present,
- { "GSM 850 Associated Radio Capability present", "gsm_a.classmark3.gsm_850_assoc_radio_cap_present",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_gsm_850_assoc_radio_cap,
- { "GSM 850 Associated Radio Capability", "gsm_a.classmark3.gsm_850_assoc_radio_cap",
- FT_UINT8, BASE_HEX, NULL, 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_gsm_1900_assoc_radio_cap_present,
- { "GSM 1900 Associated Radio Capability present", "gsm_a.classmark3.gsm_1900_assoc_radio_cap_present",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_gsm_1900_assoc_radio_cap,
- { "GSM 1900 Associated Radio Capability", "gsm_a.classmark3.gsm_1900_assoc_radio_cap",
- FT_UINT8, BASE_HEX, NULL, 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_umts_fdd_rat_cap,
- { "UMTS FDD Radio Access Technology Capability", "gsm_a.classmark3.umts_fdd_rat_cap",
- FT_BOOLEAN, 8, TFS(&umts_fdd_rat_cap_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_umts_384_mcps_tdd_rat_cap,
- { "UMTS 3.84 Mcps TDD Radio Access Technology Capability", "gsm_a.classmark3.umts_384_mcps_tdd_rat_cap",
- FT_BOOLEAN, 8, TFS(&umts_384_mcps_tdd_rat_cap_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_cdma_2000_rat_cap,
- { "CDMA 2000 Radio Access Technology Capability", "gsm_a.classmark3.cdma_2000_rat_cap",
- FT_BOOLEAN, 8, TFS(&cdma_2000_rat_cap_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_dtm_e_gprs_multi_slot_info_present,
- { "DTM E/GPRS Multi Slot Information present", "gsm_a.classmark3.dtm_e_gprs_multi_slot_info_present",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_dtm_gprs_multi_slot_class,
- { "DTM GPRS Multi Slot Class", "gsm_a.classmark3.dtm_gprs_multi_slot_class",
- FT_UINT8, BASE_DEC, VALS(dtm_gprs_multi_slot_class_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_single_slot_dtm,
- { "Single Slot DTM", "gsm_a.classmark3.single_slot_dtm_supported",
- FT_BOOLEAN, 8, TFS(&single_slot_dtm_vals), 0x0,
- NULL, HFILL}
- },
- { &hf_gsm_a_dtm_egprs_multi_slot_class_present,
- { "DTM EGPRS Multi Slot Class present", "gsm_a.classmark3.dtm_egprs_multi_slot_class_present",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_dtm_egprs_multi_slot_class,
- { "DTM EGPRS Multi Slot Class", "gsm_a.classmark3.dtm_egprs_multi_slot_class",
- FT_UINT8, BASE_DEC, VALS(dtm_gprs_multi_slot_class_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_single_band_support,
- { "Single Band Support", "gsm_a.classmark3.single_band_support",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_gsm_band,
- { "GSM Band", "gsm_a.classmark3.gsm_band",
- FT_UINT8, BASE_DEC, VALS(gsm_band_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_gsm_750_assoc_radio_cap_present,
- { "GSM 750 Associated Radio Capability present", "gsm_a.classmark3.gsm_750_assoc_radio_cap_present",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_gsm_750_assoc_radio_cap,
- { "GSM 750 Associated Radio Capability", "gsm_a.classmark3.gsm_750_assoc_radio_cap",
- FT_UINT8, BASE_HEX, NULL, 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_umts_128_mcps_tdd_rat_cap,
- { "UMTS 1.28 Mcps TDD Radio Access Technology Capability", "gsm_a.classmark3.umts_128_mcps_tdd_rat_cap",
- FT_BOOLEAN, 8, TFS(&umts_128_mcps_tdd_rat_cap_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_geran_feature_package_1,
- { "GERAN Feature Package 1", "gsm_a.classmark3.geran_feature_package_1",
- FT_BOOLEAN, 8, TFS(&geran_feature_package_1_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_ext_dtm_e_gprs_multi_slot_info_present,
- { "Extended DTM E/GPRS Multi Slot Information present", "gsm_a.classmark3.ext_dtm_e_gprs_info_present",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_ext_dtm_gprs_multi_slot_class,
- { "Extended DTM GPRS Multi Slot Class", "gsm_a.classmark3.ext_dtm_gprs_multi_slot_class",
- FT_UINT8, BASE_HEX, NULL, 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_ext_dtm_egprs_multi_slot_class,
- { "Extended DTM EGPRS Multi Slot Class", "gsm_a.classmark3.ext_dtm_egprs_multi_slot_class",
- FT_UINT8, BASE_HEX, NULL, 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_high_multislot_cap_present,
- { "High Multislot Capability present", "gsm_a.classmark3.high_multislot_cap_present",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_high_multislot_cap,
- { "High Multislot Capability", "gsm_a.classmark3.high_multislot_cap",
- FT_UINT8, BASE_HEX, NULL, 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_geran_iu_mode_support,
- { "GERAN Iu Mode Support", "gsm_a.classmark3.geran_iu_mode_support",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_geran_iu_mode_cap,
- { "GERAN Iu Mode Capabilities", "gsm_a.classmark3.geran_iu_mode_cap",
- FT_UINT24, BASE_HEX, NULL, 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_geran_iu_mode_cap_length,
- { "Length", "gsm_a.classmark3.geran_iu_mode_cap.length",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_flo_iu_cap,
- { "FLO Iu Capability", "gsm_a.classmark3.geran_iu_mode_cap.flo_iu_cap",
- FT_BOOLEAN, 8, TFS(&flo_iu_cap_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_geran_feature_package_2,
- { "GERAN Feature Package 2", "gsm_a.classmark3.geran_feature_package_2",
- FT_BOOLEAN, 8, TFS(&geran_feature_package_2_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_gmsk_multislot_power_prof,
- { "GMSK Multislot Power Profile", "gsm_a.classmark3.gmsk_multislot_power_prof",
- FT_UINT8, BASE_DEC, VALS(gmsk_multislot_power_prof_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_8_psk_multislot_power_prof,
- { "8-PSK Multislot Power Profile", "gsm_a.classmark3.8_psk_multislot_power_prof",
- FT_UINT8, BASE_DEC, VALS(eight_psk_multislot_power_prof_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_t_gsm_400_band_info_present,
- { "T-GSM 400 Band Information present", "gsm_a.classmark3.gsm_400_band_info_present",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_t_gsm_400_bands_supported,
- { "T-GSM 400 Bands Supported", "gsm_a.classmark3.t_gsm_400_bands_supported",
- FT_UINT8, BASE_HEX, VALS(t_gsm_400_bands_supported_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_t_gsm_400_assoc_radio_cap,
- { "T-GSM 400 Associated Radio Capability", "gsm_a.classmark3.t_gsm_400_assoc_radio_cap",
- FT_UINT8, BASE_HEX, NULL, 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_t_gsm_900_assoc_radio_cap_present,
- { "T-GSM 900 Associated Radio Capability present", "gsm_a.classmark3.t_gsm_900_assoc_radio_cap_present",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_t_gsm_900_assoc_radio_cap,
- { "T-GSM 900 Associated Radio Capability", "gsm_a.classmark3.t_gsm_900_assoc_radio_cap",
- FT_UINT8, BASE_HEX, NULL, 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_downlink_adv_receiver_perf,
- { "Downlink Advanced Receiver Performance", "gsm_a.classmark3.downlink_adv_receiver_perf",
- FT_UINT8, BASE_DEC, VALS(downlink_adv_receiver_perf_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_dtm_enhancements_cap,
- { "DTM Enhancements Capability", "gsm_a.classmark3.dtm_enhancements_capability",
- FT_BOOLEAN, 8, TFS(&dtm_enhancements_cap_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_dtm_e_gprs_high_multi_slot_info_present,
- { "DTM E/GPRS High Multi Slot Information present", "gsm_a.classmark3.dtm_e_gprs_high_mutli_slot_info_present",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_dtm_gprs_high_multi_slot_class,
- { "DTM GPRS Multi Slot Class", "gsm_a.classmark3.dtm_gprs_multi_slot_class",
- FT_UINT8, BASE_DEC, VALS(dtm_gprs_high_multi_slot_class_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_offset_required,
- { "Offset required", "gsm_a.classmark3.offset_required",
- FT_BOOLEAN, 8, TFS(&offset_required_vals), 0x0,
- NULL, HFILL}
- },
- { &hf_gsm_a_dtm_egprs_high_multi_slot_class_present,
- { "DTM EGPRS High Multi Slot Class present", "gsm_a.classmark3.dtm_egprs_high_multi_slot_class_present",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_dtm_egprs_high_multi_slot_class,
- { "DTM EGPRS High Multi Slot Class", "gsm_a.classmark3.dtm_egprs_high_multi_slot_class",
- FT_UINT8, BASE_DEC, VALS(dtm_gprs_high_multi_slot_class_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_repeated_acch_cap,
- { "Repeated ACCH Capability", "gsm_a.classmark3.repeated_acch_cap",
- FT_BOOLEAN, 8, TFS(&repeated_acch_cap_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_gsm_710_assoc_radio_cap_present,
- { "GSM 710 Associated Radio Capability present", "gsm_a.classmark3.gsm_710_assoc_radio_cap_present",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_gsm_710_assoc_radio_cap,
- { "GSM 710 Associated Radio Capability", "gsm_a.classmark3.gsm_710_assoc_radio_cap",
- FT_UINT8, BASE_HEX, NULL, 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_t_gsm_810_assoc_radio_cap_present,
- { "T-GSM 810 Associated Radio Capability present", "gsm_a.classmark3.t_gsm_810_assoc_radio_cap_present",
- FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_t_gsm_810_assoc_radio_cap,
- { "T-GSM 810 Associated Radio Capability", "gsm_a.classmark3.t_gsm_810_assoc_radio_cap",
- FT_UINT8, BASE_HEX, NULL, 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_ciphering_mode_setting_cap,
- { "Ciphering Mode Setting Capability", "gsm_a.classmark3.ciphering_mode_setting_cap",
- FT_BOOLEAN, 8, TFS(&ciphering_mode_setting_cap_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_additional_positioning_caps,
- { "Additional Positioning Capabilities", "gsm_a.classmark3.additional_positioning_caps",
- FT_BOOLEAN, 8, TFS(&additional_positioning_caps_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_e_utra_fdd_support,
- { "E-UTRA FDD support", "gsm_a.classmark3.e_utra_fdd_support",
- FT_BOOLEAN, 8, TFS(&e_utra_fdd_support_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_e_utra_tdd_support,
- { "E-UTRA TDD support", "gsm_a.classmark3.e_utra_tdd_support",
- FT_BOOLEAN, 8, TFS(&e_utra_tdd_support_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_e_utra_meas_and_report_support,
- { "E-UTRA Measurement and Reporting support", "gsm_a.classmark3.e_utra_meas_and_report_support",
- FT_BOOLEAN, 8, TFS(&e_utra_meas_and_report_support_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_prio_based_resel_support,
- { "Priority-based reselection support", "gsm_a.classmark3.prio_based_resel_support",
- FT_BOOLEAN, 8, TFS(&prio_based_resel_support_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_utra_csg_cells_reporting,
- { "UTRA CSG Cells Reporting", "gsm_a.classmark3.utra_csg_cells_reporting",
- FT_BOOLEAN, 8, TFS(&utra_csg_cells_reporting_vals), 0x00,
- NULL, HFILL}
- },
- { &hg_gsm_a_vamos_level,
- { "VAMOS Level", "gsm_a.classmark3.vamos_level",
- FT_UINT8, BASE_DEC, VALS(vamos_level_vals), 0x00,
- NULL, HFILL}
- },
- { &hf_gsm_a_geo_loc_type_of_shape,
- { "Location estimate","gsm_a.gad.location_estimate",
- FT_UINT8,BASE_DEC, VALS(type_of_shape_vals), 0xf0,
- NULL, HFILL }
- },
- { &hf_gsm_a_geo_loc_sign_of_lat,
- { "Sign of latitude","gsm_a.gad.sign_of_latitude",
- FT_UINT8,BASE_DEC, VALS(sign_of_latitude_vals), 0x80,
- NULL, HFILL }
- },
- { &hf_gsm_a_geo_loc_deg_of_lat,
- { "Degrees of latitude","gsm_a.gad.sign_of_latitude",
- FT_UINT24,BASE_DEC, NULL, 0x7fffff,
- NULL, HFILL }
- },
- { &hf_gsm_a_geo_loc_deg_of_long,
- { "Degrees of longitude","gsm_a.gad.sign_of_longitude",
- FT_UINT24,BASE_DEC, NULL, 0xffffff,
- NULL, HFILL }
- },
- { &hf_gsm_a_geo_loc_uncertainty_code,
- { "Uncertainty code","gsm_a.gad.uncertainty_code",
- FT_UINT8,BASE_DEC, NULL, 0x7f,
- NULL, HFILL }
- },
- { &hf_gsm_a_geo_loc_uncertainty_semi_major,
- { "Uncertainty semi-major","gsm_a.gad.uncertainty_semi_major",
- FT_UINT8,BASE_DEC, NULL, 0x7f,
- NULL, HFILL }
- },
- { &hf_gsm_a_geo_loc_uncertainty_semi_minor,
- { "Uncertainty semi-minor","gsm_a.gad.uncertainty_semi_minor",
- FT_UINT8,BASE_DEC, NULL, 0x7f,
- NULL, HFILL }
- },
- { &hf_gsm_a_geo_loc_orientation_of_major_axis,
- { "Orientation of major axis","gsm_a.gad.orientation_of_major_axis",
- FT_UINT8,BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_geo_loc_uncertainty_altitude,
- { "Uncertainty Altitude","gsm_a.gad.uncertainty_altitude",
- FT_UINT8,BASE_DEC, NULL, 0x7f,
- NULL, HFILL }
- },
- { &hf_gsm_a_geo_loc_confidence,
- { "Confidence(%)","gsm_a.gad.confidence",
- FT_UINT8,BASE_DEC, NULL, 0x7f,
- NULL, HFILL }
- },
- { &hf_gsm_a_geo_loc_no_of_points,
- { "Number of points","gsm_a.gad.no_of_points",
- FT_UINT8,BASE_DEC, NULL, 0x0f,
- NULL, HFILL }
- },
- { &hf_gsm_a_velocity_type,
- { "Number of points","gsm_a.gad.velocity_type",
- FT_UINT8,BASE_DEC, VALS(gsm_a_velocity_type_vals), 0xf0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bearing,
- { "Bearing","gsm_a.gad.bearing",
- FT_UINT16,BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_horizontal_speed,
- { "Horizontal Speed","gsm_a.gad.horizontal_velocity",
- FT_UINT16,BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_vertical_speed,
- { "Vertical Speed","gsm_a.gad.vertical_speed",
- FT_UINT8,BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_uncertainty_speed,
- { "Uncertainty Speed","gsm_a.gad.uncertainty_speed",
- FT_UINT8,BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_h_uncertainty_speed,
- { "Horizontal Uncertainty Speed","gsm_a.gad.v_uncertainty_speed",
- FT_UINT8,BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_v_uncertainty_speed,
- { "Vertical Uncertainty Speed","gsm_a.gad.h_uncertainty_speed",
- FT_UINT8,BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_d,
- { "Direction of Vertical Speed", "gsm_a.gad.d",
- FT_BOOLEAN, 8, TFS(&gsm_a_dir_of_ver_speed_vals), 0x08,
- NULL, HFILL}
- },
- { &hf_gsm_a_geo_loc_D,
- { "D: Direction of Altitude","gsm_a.gad.D",
- FT_UINT16,BASE_DEC, VALS(dir_of_alt_vals), 0x8000,
- NULL, HFILL }
- },
- { &hf_gsm_a_geo_loc_altitude,
- { "Altitude in meters","gsm_a.gad.altitude",
- FT_UINT16,BASE_DEC, NULL, 0x7fff,
- NULL, HFILL }
- },
- { &hf_gsm_a_geo_loc_inner_radius,
- { "Inner radius","gsm_a.gad.altitude",
- FT_UINT16,BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_geo_loc_uncertainty_radius,
- { "Uncertainty radius","gsm_a.gad.no_of_points",
- FT_UINT8,BASE_DEC, NULL, 0x7f,
- NULL, HFILL }
- },
- { &hf_gsm_a_geo_loc_offset_angle,
- { "Offset angle","gsm_a.gad.offset_angle",
- FT_UINT8,BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_geo_loc_included_angle,
- { "Included angle","gsm_a.gad.included_angle",
- FT_UINT8,BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_key_seq,
- { "key sequence","gsm_a.key_seq",
- FT_UINT8,BASE_DEC, VALS(gsm_a_key_seq_vals), 0x07,
- NULL, HFILL }
- },
- { &hf_gsm_a_lac,
- { "Location Area Code (LAC)","gsm_a.lac",
- FT_UINT16, BASE_HEX_DEC, NULL, 0x00,
- NULL, HFILL }
- },
- { &hf_gsm_a_spare_nibble,
- { "Spare Nibble","gsm_a.spare",
- FT_UINT8, BASE_DEC_HEX, NULL, 0x00,
- NULL, HFILL }
- },
- };
-
- /* Setup protocol subtree array */
-#define NUM_INDIVIDUAL_ELEMS 0
- static gint *ett[NUM_INDIVIDUAL_ELEMS +
- NUM_GSM_COMMON_ELEM];
-
- last_offset = NUM_INDIVIDUAL_ELEMS;
-
- for (i=0; i < NUM_GSM_COMMON_ELEM; i++, last_offset++)
- {
- ett_gsm_common_elem[i] = -1;
- ett[last_offset] = &ett_gsm_common_elem[i];
- }
-
- /* Register the protocol name and description */
-
- proto_a_common =
- proto_register_protocol("GSM A-I/F COMMON", "GSM COMMON", "gsm_a_common");
-
- proto_register_field_array(proto_a_common, hf, array_length(hf));
-
- proto_register_subtree_array(ett, array_length(ett));
-
- gsm_a_tap = register_tap("gsm_a");
+ guint i;
+ guint last_offset;
+
+ /* Setup list of header fields */
+ static hf_register_info hf[] =
+ {
+ { &hf_gsm_a_common_elem_id,
+ { "Element ID", "gsm_a_common.elem_id",
+ FT_UINT8, BASE_HEX, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_l_ext,
+ { "ext", "gsm_a_common.l_ext",
+ FT_UINT8, BASE_DEC, NULL, 0x80,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_imsi,
+ { "IMSI", "gsm_a.imsi",
+ FT_STRING, BASE_NONE, 0, 0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_tmsi,
+ { "TMSI/P-TMSI", "gsm_a.tmsi",
+ FT_UINT32, BASE_HEX, 0, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_imei,
+ { "IMEI", "gsm_a.imei",
+ FT_STRING, BASE_NONE, 0, 0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_imeisv,
+ { "IMEISV", "gsm_a.imeisv",
+ FT_STRING, BASE_NONE, 0, 0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_MSC_rev,
+ { "Revision Level", "gsm_a.MSC2_rev",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_msc_rev_vals), 0x60,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_ES_IND,
+ { "ES IND", "gsm_a.MSC2_rev",
+ FT_BOOLEAN, 8, TFS(&ES_IND_vals), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_A5_1_algorithm_sup,
+ { "A5/1 algorithm supported", "gsm_a.MSC2_rev",
+ FT_BOOLEAN, 8, TFS(&A5_1_algorithm_sup_vals), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_RF_power_capability,
+ { "RF Power Capability", "gsm_a.MSC2_rev",
+ FT_UINT8, BASE_DEC, VALS(RF_power_capability_vals), 0x07,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_ps_sup_cap,
+ { "PS capability (pseudo-synchronization capability)", "gsm_a.ps_sup_cap",
+ FT_BOOLEAN, 8, TFS(&ps_sup_cap_vals), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_SS_screening_indicator,
+ { "SS Screening Indicator", "gsm_a.SS_screening_indicator",
+ FT_UINT8, BASE_DEC, VALS(SS_screening_indicator_vals), 0x30,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_SM_capability,
+ { "SM capability (MT SMS pt to pt capability)", "gsm_a.SM_cap",
+ FT_BOOLEAN, 8, TFS(&SM_capability_vals), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_VBS_notification_rec,
+ { "VBS notification reception", "gsm_a.VBS_notification_rec",
+ FT_BOOLEAN, 8, TFS(&VBS_notification_rec_vals), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_VGCS_notification_rec,
+ { "VGCS notification reception", "gsm_a.VGCS_notification_rec",
+ FT_BOOLEAN, 8, TFS(&VGCS_notification_rec_vals), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_FC_frequency_cap,
+ { "FC Frequency Capability", "gsm_a.FC_frequency_cap",
+ FT_BOOLEAN, 8, TFS(&FC_frequency_cap_vals), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_CM3,
+ { "CM3", "gsm_a.CM3",
+ FT_BOOLEAN, 8, TFS(&CM3_vals), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_LCS_VA_cap,
+ { "LCS VA capability (LCS value added location request notification capability)", "gsm_a.LCS_VA_cap",
+ FT_BOOLEAN, 8, TFS(&LCS_VA_cap_vals), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_UCS2_treatment,
+ { "UCS2 treatment", "gsm_a.UCS2_treatment",
+ FT_BOOLEAN, 8, TFS(&UCS2_treatment_vals), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_SoLSA,
+ { "SoLSA", "gsm_a.SoLSA",
+ FT_BOOLEAN, 8, TFS(&SoLSA_vals), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_CMSP,
+ { "CMSP: CM Service Prompt", "gsm_a.CMSP",
+ FT_BOOLEAN, 8, TFS(&CMSP_vals), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_A5_7_algorithm_sup,
+ { "A5/7 algorithm supported", "gsm_a.A5_7_algorithm_sup",
+ FT_BOOLEAN, BASE_NONE, TFS(&A5_7_algorithm_sup_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_A5_6_algorithm_sup,
+ { "A5/6 algorithm supported", "gsm_a.A5_6_algorithm_sup",
+ FT_BOOLEAN, BASE_NONE, TFS(&A5_6_algorithm_sup_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_A5_5_algorithm_sup,
+ { "A5/5 algorithm supported", "gsm_a.A5_5_algorithm_sup",
+ FT_BOOLEAN, BASE_NONE, TFS(&A5_5_algorithm_sup_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_A5_4_algorithm_sup,
+ { "A5/4 algorithm supported", "gsm_a.A5_4_algorithm_sup",
+ FT_BOOLEAN, BASE_NONE, TFS(&A5_4_algorithm_sup_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_A5_3_algorithm_sup,
+ { "A5/3 algorithm supported", "gsm_a.A5_3_algorithm_sup",
+ FT_BOOLEAN, 8, TFS(&A5_3_algorithm_sup_vals), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_A5_2_algorithm_sup,
+ { "A5/2 algorithm supported", "gsm_a.A5_2_algorithm_sup",
+ FT_BOOLEAN, 8, TFS(&A5_2_algorithm_sup_vals), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_mobile_identity_type,
+ { "Mobile Identity Type", "gsm_a.ie.mobileid.type",
+ FT_UINT8, BASE_DEC, VALS(mobile_identity_type_vals), 0x07,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_odd_even_ind,
+ { "Odd/even indication", "gsm_a.oddevenind",
+ FT_BOOLEAN, 8, TFS(&oddevenind_vals), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_tmgi_mcc_mnc_ind,
+ { "MCC/MNC indication", "gsm_a.tmgi_mcc_mnc_ind",
+ FT_BOOLEAN, 8, TFS(&gsm_a_present_vals), 0x10,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_mbs_ses_id_ind,
+ { "MBMS Session Identity indication", "gsm_a.mbs_session_id_ind",
+ FT_BOOLEAN, 8, TFS(&gsm_a_present_vals), 0x20,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_mbs_service_id,
+ { "MBMS Service ID", "gsm_a.mbs_service_id",
+ FT_UINT24, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_mbs_session_id,
+ { "MBMS Session ID", "gsm_a.mbs_session_id",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_L3_protocol_discriminator,
+ { "Protocol discriminator", "gsm_a.L3_protocol_discriminator",
+ FT_UINT8, BASE_HEX, VALS(protocol_discriminator_vals), 0x0f,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_call_prio,
+ { "Call priority", "gsm_a.call_prio",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_call_prio_vals), 0x00,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_type_of_ciph_alg,
+ { "Call priority", "gsm_a.call_prio",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_type_of_ciph_alg_vals), 0x07,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_att,
+ { "ATT", "gsm_a.att",
+ FT_BOOLEAN, 8, TFS(&gsm_a_att_value), 0x01,
+ "ttach-detach allowed", HFILL }
+ },
+ { &hf_gsm_a_nmo_1,
+ { "NMO I", "gsm_a.nmo_1",
+ FT_BOOLEAN, 8, TFS(&gsm_a_nmo_1_value), 0x02,
+ "Network Mode of Operation I", HFILL }
+ },
+ { &hf_gsm_a_nmo,
+ { "NMO", "gsm_a.nmo",
+ FT_BOOLEAN, 8, TFS(&gsm_a_nmo_value), 0x01,
+ "Network Mode of Operation", HFILL }
+ },
+ { &hf_gsm_a_old_xid,
+ { "Old XID", "gsm_a.old_xid",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_pld_xid_vals), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_iov_ui,
+ { "IOV-UI", "gsm_a.iov_ui",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_ext_periodic_timers,
+ { "Extended periodic timers", "gsm_a.ext_periodic_timers",
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_ext_periodic_timers_value), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_skip_ind,
+ { "Skip Indicator", "gsm_a.skip.ind",
+ FT_UINT8, BASE_DEC, NULL, 0xf0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_b7spare,
+ { "Spare", "gsm_a.spareb7",
+ FT_UINT8, BASE_DEC, NULL, 0x40,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_b8spare,
+ { "Spare", "gsm_a.spareb8",
+ FT_UINT8, BASE_DEC, NULL, 0x80,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_spare_bits,
+ { "Spare bit(s)", "gsm_a.spare_bits",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_multi_bnd_sup_fields,
+ { "Multiband supported field", "gsm_a.multi_bnd_sup_fields",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_pgsm_supported,
+ { "P-GSM Supported", "gsm_a.classmark3.pgsmSupported",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_egsm_supported,
+ { "E-GSM or R-GSM Supported", "gsm_a.classmark3.egsmSupported",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_gsm1800_supported,
+ { "GSM 1800 Supported", "gsm_a.classmark3.gsm1800Supported",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_ass_radio_cap1,
+ { "Associated Radio Capability 1", "gsm_a.classmark3.ass_radio_cap1",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_ass_radio_cap2,
+ { "Associated Radio Capability 2", "gsm_a.classmark3.ass_radio_cap2",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_cm3_A5_bits,
+ { "A5 bits", "gsm_a.classmark3.a5_bits",
+ FT_UINT8, BASE_HEX, NULL, 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_rsupport,
+ { "R Support", "gsm_a.classmark3.rsupport",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_r_capabilities,
+ { "R-GSM band Associated Radio Capability", "gsm_a.classmark3.r_capabilities",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_multislot_capabilities,
+ { "HSCSD Multi Slot Capability", "gsm_a.classmark3.multislot_capabilities",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_multislot_class,
+ { "HSCSD Multi Slot Class", "gsm_a.classmark3.multislot_cap",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_ucs2_treatment,
+ { "UCS2 treatment", "gsm_a.UCS2_treatment",
+ FT_BOOLEAN, BASE_NONE, TFS(&UCS2_treatment_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_extended_measurement_cap,
+ { "Extended Measurement Capability", "gsm_a.classmark3.ext_meas_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_ms_measurement_capability,
+ { "MS measurement capability", "gsm_a.classmark3.ms_measurement_capability",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_sms_value,
+ { "SMS_VALUE (Switch-Measure-Switch)", "gsm_a.classmark3.sms_value",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_sms_vals), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_sm_value,
+ { "SM_VALUE (Switch-Measure)", "gsm_a.classmark3.sm_value",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_sms_vals), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_ms_pos_method_cap_present,
+ { "MS Positioning Method Capability present", "gsm_a.classmark3.ms_pos_method_cap_present",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_ms_pos_method,
+ { "MS Positioning Method", "gsm_a.classmark3.ms_pos_method",
+ FT_UINT8, BASE_HEX, NULL, 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_ms_assisted_e_otd,
+ { "MS assisted E-OTD", "gsm_a.classmark3.ms_assisted_e_otd",
+ FT_BOOLEAN, BASE_NONE, TFS(&ms_assisted_e_otd_vals), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_ms_based_e_otd,
+ { "MS based E-OTD", "gsm_a.classmark3.ms_based_e_otd",
+ FT_BOOLEAN, BASE_NONE, TFS(&ms_based_e_otd_vals), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_ms_assisted_gps,
+ { "MS assisted GPS", "gsm_a.classmark3.ms_assisted_gps",
+ FT_BOOLEAN, BASE_NONE, TFS(&ms_assisted_gps_vals), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_ms_based_gps,
+ { "MS based GPS", "gsm_a.classmark3.ms_based_gps",
+ FT_BOOLEAN, BASE_NONE, TFS(&ms_based_gps_vals), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_ms_conventional_gps,
+ { "MS Conventional GPS", "gsm_a.classmark3.ms_conventional_gps",
+ FT_BOOLEAN, BASE_NONE, TFS(&ms_conventional_gps_vals), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_ecsd_multi_slot_capability,
+ { "ECSD Multi Slot Capability present", "gsm_a.classmark3.ecsd_multi_slot_capability",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_ecsd_multi_slot_class,
+ { "ECSD Multi Slot Class", "gsm_a.classmark3.ecsd_multi_slot_class",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_8_psk_struct_present,
+ { "8-PSK Struct present", "gsm_a.classmark3.8_psk_struct_present",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_8_psk_struct,
+ { "8-PSK Struct", "gsm_a.classmark3.8_psk_struct",
+ FT_UINT8, BASE_HEX, NULL, 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_modulation_capability,
+ { "Modulation Capability", "gsm_a.classmark3.modulation_capability",
+ FT_BOOLEAN, BASE_NONE, TFS(&modulation_capability_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_8_psk_rf_power_capability_1,
+ { "8-PSK RF Power Capability 1", "gsm_a.classmark3.8_psk_rf_power_capability_1",
+ FT_UINT8, BASE_HEX, VALS(eight_psk_rf_power_capability_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_8_psk_rf_power_capability_2,
+ { "8-PSK RF Power Capability 2", "gsm_a.classmark3.8_psk_rf_power_capability_2",
+ FT_UINT8, BASE_HEX, VALS(eight_psk_rf_power_capability_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_gsm_400_band_info_present,
+ { "GSM 400 Band Information present", "gsm_a.classmark3.gsm_400_band_info_present",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_gsm_400_bands_supported,
+ { "GSM 400 Bands Supported", "gsm_a.classmark3.gsm_400_bands_supported",
+ FT_UINT8, BASE_HEX, VALS(gsm_400_bands_supported_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_gsm_400_assoc_radio_cap,
+ { "GSM 400 Associated Radio Capability", "gsm_a.classmark3.gsm_400_assoc_radio_cap",
+ FT_UINT8, BASE_HEX, NULL, 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_gsm_850_assoc_radio_cap_present,
+ { "GSM 850 Associated Radio Capability present", "gsm_a.classmark3.gsm_850_assoc_radio_cap_present",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_gsm_850_assoc_radio_cap,
+ { "GSM 850 Associated Radio Capability", "gsm_a.classmark3.gsm_850_assoc_radio_cap",
+ FT_UINT8, BASE_HEX, NULL, 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_gsm_1900_assoc_radio_cap_present,
+ { "GSM 1900 Associated Radio Capability present", "gsm_a.classmark3.gsm_1900_assoc_radio_cap_present",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_gsm_1900_assoc_radio_cap,
+ { "GSM 1900 Associated Radio Capability", "gsm_a.classmark3.gsm_1900_assoc_radio_cap",
+ FT_UINT8, BASE_HEX, NULL, 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_umts_fdd_rat_cap,
+ { "UMTS FDD Radio Access Technology Capability", "gsm_a.classmark3.umts_fdd_rat_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&umts_fdd_rat_cap_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_umts_384_mcps_tdd_rat_cap,
+ { "UMTS 3.84 Mcps TDD Radio Access Technology Capability", "gsm_a.classmark3.umts_384_mcps_tdd_rat_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&umts_384_mcps_tdd_rat_cap_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_cdma_2000_rat_cap,
+ { "CDMA 2000 Radio Access Technology Capability", "gsm_a.classmark3.cdma_2000_rat_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&cdma_2000_rat_cap_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_dtm_e_gprs_multi_slot_info_present,
+ { "DTM E/GPRS Multi Slot Information present", "gsm_a.classmark3.dtm_e_gprs_multi_slot_info_present",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_dtm_gprs_multi_slot_class,
+ { "DTM GPRS Multi Slot Class", "gsm_a.classmark3.dtm_gprs_multi_slot_class",
+ FT_UINT8, BASE_DEC, VALS(dtm_gprs_multi_slot_class_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_single_slot_dtm,
+ { "Single Slot DTM", "gsm_a.classmark3.single_slot_dtm_supported",
+ FT_BOOLEAN, BASE_NONE, TFS(&single_slot_dtm_vals), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_dtm_egprs_multi_slot_class_present,
+ { "DTM EGPRS Multi Slot Class present", "gsm_a.classmark3.dtm_egprs_multi_slot_class_present",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_dtm_egprs_multi_slot_class,
+ { "DTM EGPRS Multi Slot Class", "gsm_a.classmark3.dtm_egprs_multi_slot_class",
+ FT_UINT8, BASE_DEC, VALS(dtm_gprs_multi_slot_class_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_single_band_support,
+ { "Single Band Support", "gsm_a.classmark3.single_band_support",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_gsm_band,
+ { "GSM Band", "gsm_a.classmark3.gsm_band",
+ FT_UINT8, BASE_DEC, VALS(gsm_band_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_gsm_750_assoc_radio_cap_present,
+ { "GSM 750 Associated Radio Capability present", "gsm_a.classmark3.gsm_750_assoc_radio_cap_present",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_gsm_750_assoc_radio_cap,
+ { "GSM 750 Associated Radio Capability", "gsm_a.classmark3.gsm_750_assoc_radio_cap",
+ FT_UINT8, BASE_HEX, NULL, 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_umts_128_mcps_tdd_rat_cap,
+ { "UMTS 1.28 Mcps TDD Radio Access Technology Capability", "gsm_a.classmark3.umts_128_mcps_tdd_rat_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&umts_128_mcps_tdd_rat_cap_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_geran_feature_package_1,
+ { "GERAN Feature Package 1", "gsm_a.classmark3.geran_feature_package_1",
+ FT_BOOLEAN, BASE_NONE, TFS(&geran_feature_package_1_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_ext_dtm_e_gprs_multi_slot_info_present,
+ { "Extended DTM E/GPRS Multi Slot Information present", "gsm_a.classmark3.ext_dtm_e_gprs_info_present",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_ext_dtm_gprs_multi_slot_class,
+ { "Extended DTM GPRS Multi Slot Class", "gsm_a.classmark3.ext_dtm_gprs_multi_slot_class",
+ FT_UINT8, BASE_HEX, NULL, 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_ext_dtm_egprs_multi_slot_class,
+ { "Extended DTM EGPRS Multi Slot Class", "gsm_a.classmark3.ext_dtm_egprs_multi_slot_class",
+ FT_UINT8, BASE_HEX, NULL, 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_high_multislot_cap_present,
+ { "High Multislot Capability present", "gsm_a.classmark3.high_multislot_cap_present",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_high_multislot_cap,
+ { "High Multislot Capability", "gsm_a.classmark3.high_multislot_cap",
+ FT_UINT8, BASE_HEX, NULL, 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_geran_iu_mode_support,
+ { "GERAN Iu Mode Support", "gsm_a.classmark3.geran_iu_mode_support",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_geran_iu_mode_cap,
+ { "GERAN Iu Mode Capabilities", "gsm_a.classmark3.geran_iu_mode_cap",
+ FT_UINT24, BASE_HEX, NULL, 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_geran_iu_mode_cap_length,
+ { "Length", "gsm_a.classmark3.geran_iu_mode_cap.length",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_flo_iu_cap,
+ { "FLO Iu Capability", "gsm_a.classmark3.geran_iu_mode_cap.flo_iu_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&flo_iu_cap_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_geran_feature_package_2,
+ { "GERAN Feature Package 2", "gsm_a.classmark3.geran_feature_package_2",
+ FT_BOOLEAN, BASE_NONE, TFS(&geran_feature_package_2_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_gmsk_multislot_power_prof,
+ { "GMSK Multislot Power Profile", "gsm_a.classmark3.gmsk_multislot_power_prof",
+ FT_UINT8, BASE_DEC, VALS(gmsk_multislot_power_prof_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_8_psk_multislot_power_prof,
+ { "8-PSK Multislot Power Profile", "gsm_a.classmark3.8_psk_multislot_power_prof",
+ FT_UINT8, BASE_DEC, VALS(eight_psk_multislot_power_prof_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_t_gsm_400_band_info_present,
+ { "T-GSM 400 Band Information present", "gsm_a.classmark3.gsm_400_band_info_present",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_t_gsm_400_bands_supported,
+ { "T-GSM 400 Bands Supported", "gsm_a.classmark3.t_gsm_400_bands_supported",
+ FT_UINT8, BASE_HEX, VALS(t_gsm_400_bands_supported_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_t_gsm_400_assoc_radio_cap,
+ { "T-GSM 400 Associated Radio Capability", "gsm_a.classmark3.t_gsm_400_assoc_radio_cap",
+ FT_UINT8, BASE_HEX, NULL, 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_t_gsm_900_assoc_radio_cap_present,
+ { "T-GSM 900 Associated Radio Capability present", "gsm_a.classmark3.t_gsm_900_assoc_radio_cap_present",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_t_gsm_900_assoc_radio_cap,
+ { "T-GSM 900 Associated Radio Capability", "gsm_a.classmark3.t_gsm_900_assoc_radio_cap",
+ FT_UINT8, BASE_HEX, NULL, 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_downlink_adv_receiver_perf,
+ { "Downlink Advanced Receiver Performance", "gsm_a.classmark3.downlink_adv_receiver_perf",
+ FT_UINT8, BASE_DEC, VALS(downlink_adv_receiver_perf_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_dtm_enhancements_cap,
+ { "DTM Enhancements Capability", "gsm_a.classmark3.dtm_enhancements_capability",
+ FT_BOOLEAN, BASE_NONE, TFS(&dtm_enhancements_cap_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_dtm_e_gprs_high_multi_slot_info_present,
+ { "DTM E/GPRS High Multi Slot Information present", "gsm_a.classmark3.dtm_e_gprs_high_mutli_slot_info_present",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_dtm_gprs_high_multi_slot_class,
+ { "DTM GPRS Multi Slot Class", "gsm_a.classmark3.dtm_gprs_multi_slot_class",
+ FT_UINT8, BASE_DEC, VALS(dtm_gprs_high_multi_slot_class_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_offset_required,
+ { "Offset required", "gsm_a.classmark3.offset_required",
+ FT_BOOLEAN, BASE_NONE, TFS(&offset_required_vals), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_dtm_egprs_high_multi_slot_class_present,
+ { "DTM EGPRS High Multi Slot Class present", "gsm_a.classmark3.dtm_egprs_high_multi_slot_class_present",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_dtm_egprs_high_multi_slot_class,
+ { "DTM EGPRS High Multi Slot Class", "gsm_a.classmark3.dtm_egprs_high_multi_slot_class",
+ FT_UINT8, BASE_DEC, VALS(dtm_gprs_high_multi_slot_class_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_repeated_acch_cap,
+ { "Repeated ACCH Capability", "gsm_a.classmark3.repeated_acch_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&repeated_acch_cap_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_gsm_710_assoc_radio_cap_present,
+ { "GSM 710 Associated Radio Capability present", "gsm_a.classmark3.gsm_710_assoc_radio_cap_present",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_gsm_710_assoc_radio_cap,
+ { "GSM 710 Associated Radio Capability", "gsm_a.classmark3.gsm_710_assoc_radio_cap",
+ FT_UINT8, BASE_HEX, NULL, 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_t_gsm_810_assoc_radio_cap_present,
+ { "T-GSM 810 Associated Radio Capability present", "gsm_a.classmark3.t_gsm_810_assoc_radio_cap_present",
+ FT_BOOLEAN, BASE_NONE, TFS(&true_false_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_t_gsm_810_assoc_radio_cap,
+ { "T-GSM 810 Associated Radio Capability", "gsm_a.classmark3.t_gsm_810_assoc_radio_cap",
+ FT_UINT8, BASE_HEX, NULL, 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_ciphering_mode_setting_cap,
+ { "Ciphering Mode Setting Capability", "gsm_a.classmark3.ciphering_mode_setting_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&ciphering_mode_setting_cap_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_additional_positioning_caps,
+ { "Additional Positioning Capabilities", "gsm_a.classmark3.additional_positioning_caps",
+ FT_BOOLEAN, BASE_NONE, TFS(&additional_positioning_caps_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_e_utra_fdd_support,
+ { "E-UTRA FDD support", "gsm_a.classmark3.e_utra_fdd_support",
+ FT_BOOLEAN, BASE_NONE, TFS(&e_utra_fdd_support_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_e_utra_tdd_support,
+ { "E-UTRA TDD support", "gsm_a.classmark3.e_utra_tdd_support",
+ FT_BOOLEAN, BASE_NONE, TFS(&e_utra_tdd_support_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_e_utra_meas_and_report_support,
+ { "E-UTRA Measurement and Reporting support", "gsm_a.classmark3.e_utra_meas_and_report_support",
+ FT_BOOLEAN, BASE_NONE, TFS(&e_utra_meas_and_report_support_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_prio_based_resel_support,
+ { "Priority-based reselection support", "gsm_a.classmark3.prio_based_resel_support",
+ FT_BOOLEAN, BASE_NONE, TFS(&prio_based_resel_support_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_utra_csg_cells_reporting,
+ { "UTRA CSG Cells Reporting", "gsm_a.classmark3.utra_csg_cells_reporting",
+ FT_BOOLEAN, BASE_NONE, TFS(&utra_csg_cells_reporting_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_vamos_level,
+ { "VAMOS Level", "gsm_a.classmark3.vamos_level",
+ FT_UINT8, BASE_DEC, VALS(vamos_level_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_tighter_cap,
+ { "TIGHTER Capability", "gsm_a.classmark3.tighter_cap",
+ FT_UINT8, BASE_DEC, VALS(tighter_cap_level_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_selective_ciph_down_sacch,
+ { "Selective Ciphering of Downlink SACCH", "gsm_a.classmark3.selective_ciph_down_sacch",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_geo_loc_type_of_shape,
+ { "Location estimate", "gsm_a.gad.location_estimate",
+ FT_UINT8, BASE_DEC, VALS(type_of_shape_vals), 0xf0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_geo_loc_sign_of_lat,
+ { "Sign of latitude", "gsm_a.gad.sign_of_latitude",
+ FT_UINT8, BASE_DEC, VALS(sign_of_latitude_vals), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_geo_loc_deg_of_lat,
+ { "Degrees of latitude", "gsm_a.gad.sign_of_latitude",
+ FT_UINT24, BASE_DEC, NULL, 0x7fffff,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_geo_loc_deg_of_long,
+ { "Degrees of longitude", "gsm_a.gad.sign_of_longitude",
+ FT_UINT24, BASE_DEC, NULL, 0xffffff,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_geo_loc_uncertainty_code,
+ { "Uncertainty code", "gsm_a.gad.uncertainty_code",
+ FT_UINT8, BASE_DEC, NULL, 0x7f,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_geo_loc_uncertainty_semi_major,
+ { "Uncertainty semi-major", "gsm_a.gad.uncertainty_semi_major",
+ FT_UINT8, BASE_DEC, NULL, 0x7f,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_geo_loc_uncertainty_semi_minor,
+ { "Uncertainty semi-minor", "gsm_a.gad.uncertainty_semi_minor",
+ FT_UINT8, BASE_DEC, NULL, 0x7f,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_geo_loc_orientation_of_major_axis,
+ { "Orientation of major axis", "gsm_a.gad.orientation_of_major_axis",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_geo_loc_uncertainty_altitude,
+ { "Uncertainty Altitude", "gsm_a.gad.uncertainty_altitude",
+ FT_UINT8, BASE_DEC, NULL, 0x7f,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_geo_loc_confidence,
+ { "Confidence(%)", "gsm_a.gad.confidence",
+ FT_UINT8, BASE_DEC, NULL, 0x7f,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_geo_loc_no_of_points,
+ { "Number of points", "gsm_a.gad.no_of_points",
+ FT_UINT8, BASE_DEC, NULL, 0x0f,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_velocity_type,
+ { "Number of points", "gsm_a.gad.velocity_type",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_velocity_type_vals), 0xf0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bearing,
+ { "Bearing", "gsm_a.gad.bearing",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_horizontal_speed,
+ { "Horizontal Speed", "gsm_a.gad.horizontal_velocity",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_vertical_speed,
+ { "Vertical Speed", "gsm_a.gad.vertical_speed",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_uncertainty_speed,
+ { "Uncertainty Speed", "gsm_a.gad.uncertainty_speed",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_h_uncertainty_speed,
+ { "Horizontal Uncertainty Speed", "gsm_a.gad.v_uncertainty_speed",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_v_uncertainty_speed,
+ { "Vertical Uncertainty Speed", "gsm_a.gad.h_uncertainty_speed",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_d,
+ { "Direction of Vertical Speed", "gsm_a.gad.d",
+ FT_BOOLEAN, 8, TFS(&gsm_a_dir_of_ver_speed_vals), 0x08,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_geo_loc_D,
+ { "D: Direction of Altitude", "gsm_a.gad.D",
+ FT_UINT16, BASE_DEC, VALS(dir_of_alt_vals), 0x8000,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_geo_loc_altitude,
+ { "Altitude in meters", "gsm_a.gad.altitude",
+ FT_UINT16, BASE_DEC, NULL, 0x7fff,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_geo_loc_inner_radius,
+ { "Inner radius", "gsm_a.gad.altitude",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_geo_loc_uncertainty_radius,
+ { "Uncertainty radius", "gsm_a.gad.no_of_points",
+ FT_UINT8, BASE_DEC, NULL, 0x7f,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_geo_loc_offset_angle,
+ { "Offset angle", "gsm_a.gad.offset_angle",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_geo_loc_included_angle,
+ { "Included angle", "gsm_a.gad.included_angle",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_key_seq,
+ { "key sequence", "gsm_a.key_seq",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_key_seq_vals), 0x07,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_lac,
+ { "Location Area Code (LAC)", "gsm_a.lac",
+ FT_UINT16, BASE_HEX_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_spare_nibble,
+ { "Spare Nibble", "gsm_a.spare",
+ FT_UINT8, BASE_DEC_HEX, NULL, 0x00,
+ NULL, HFILL }
+ },
+ };
+
+ /* Setup protocol subtree array */
+#define NUM_INDIVIDUAL_ELEMS 0
+ static gint *ett[NUM_INDIVIDUAL_ELEMS +
+ NUM_GSM_COMMON_ELEM];
+
+ last_offset = NUM_INDIVIDUAL_ELEMS;
+
+ for (i=0; i < NUM_GSM_COMMON_ELEM; i++, last_offset++)
+ {
+ ett_gsm_common_elem[i] = -1;
+ ett[last_offset] = &ett_gsm_common_elem[i];
+ }
+
+ /* Register the protocol name and description */
+
+ proto_a_common =
+ proto_register_protocol("GSM A-I/F COMMON", "GSM COMMON", "gsm_a_common");
+
+ proto_register_field_array(proto_a_common, hf, array_length(hf));
+
+ proto_register_subtree_array(ett, array_length(ett));
+
+ gsm_a_tap = register_tap("gsm_a");
}
-
-void
-proto_reg_handoff_gsm_a_common(void)
-{
-}
diff --git a/epan/dissectors/packet-gsm_a_common.h b/epan/dissectors/packet-gsm_a_common.h
index b562731849..766260f057 100644
--- a/epan/dissectors/packet-gsm_a_common.h
+++ b/epan/dissectors/packet-gsm_a_common.h
@@ -180,6 +180,8 @@ extern int hf_gsm_a_call_prio;
extern int hf_gsm_a_b8spare;
extern int hf_gsm_a_skip_ind;
extern int hf_gsm_a_rr_chnl_needed_ch1;
+extern int hf_gsm_a_rr_t3212;
+extern int hf_gsm_a_gm_rac;
extern int hf_gsm_a_spare_bits;
extern int hf_gsm_a_lac;
@@ -673,6 +675,9 @@ guint16 be_emlpp_prio(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint
guint16 be_ganss_loc_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
guint16 be_ganss_pos_dta(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
guint16 be_ganss_ass_dta(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
+guint16 de_cn_common_gsm_map_nas_sys_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
+guint16 de_cs_domain_spec_sys_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
+guint16 de_ps_domain_spec_sys_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
guint16 de_plmn_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
guint16 de_ms_cm_1(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
guint16 de_ms_cm_2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
@@ -721,6 +726,8 @@ void bssmap_perf_loc_abort(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
void bssmap_reset(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len);
void bssmap_conn_oriented(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len);
+void rp_data_n_ms(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len);
+
/*
* the following allows TAP code access to the messages
* without having to duplicate it. With MSVC and a
@@ -748,26 +755,31 @@ extern const value_string gsm_a_qos_traff_hdl_pri_vals[];
extern const value_string gsm_a_type_of_number_values[];
extern const value_string gsm_a_numbering_plan_id_values[];
extern const value_string gsm_a_sms_vals[];
+extern const value_string tighter_cap_level_vals[];
extern value_string_ext gsm_a_rr_rxlev_vals_ext;
extern const value_string gsm_a_gm_type_of_ciph_alg_vals[];
typedef enum
{
/* Common Information Elements [3] 10.5.1 */
- DE_CELL_ID, /* Cell Identity */
- DE_CIPH_KEY_SEQ_NUM, /* Ciphering Key Sequence Number */
- DE_LAI, /* Location Area Identification */
- DE_MID, /* Mobile Identity */
- DE_MS_CM_1, /* Mobile Station Classmark 1 */
- DE_MS_CM_2, /* Mobile Station Classmark 2 */
- DE_MS_CM_3, /* Mobile Station Classmark 3 */
- DE_SPARE_NIBBLE, /* Spare Half Octet */
- DE_D_GB_CALL_REF, /* Descriptive group or broadcast call reference */
- DE_G_CIPH_KEY_NUM, /* Group Cipher Key Number */
- DE_PD_SAPI, /* PD and SAPI $(CCBS)$ */
- DE_PRIO, /* Priority Level */
- DE_PLMN_LIST, /* PLMN List */
- DE_NAS_CONT_FOR_PS_HO, /* 10.5.1.14 NAS container for PS HO */
+ DE_CELL_ID, /* Cell Identity */
+ DE_CIPH_KEY_SEQ_NUM, /* Ciphering Key Sequence Number */
+ DE_LAI, /* Location Area Identification */
+ DE_MID, /* Mobile Identity */
+ DE_MS_CM_1, /* Mobile Station Classmark 1 */
+ DE_MS_CM_2, /* Mobile Station Classmark 2 */
+ DE_MS_CM_3, /* Mobile Station Classmark 3 */
+ DE_SPARE_NIBBLE, /* Spare Half Octet */
+ DE_D_GB_CALL_REF, /* Descriptive group or broadcast call reference */
+ DE_G_CIPH_KEY_NUM, /* Group Cipher Key Number */
+ DE_PD_SAPI, /* PD and SAPI $(CCBS)$ */
+ DE_PRIO, /* Priority Level */
+ DE_CN_COMMON_GSM_MAP_NAS_SYS_INFO, /* CN Common GSM-MAP NAS system information */
+ DE_CS_DOMAIN_SPEC_SYS_INFO, /* CS domain specific system information */
+ DE_PS_DOMAIN_SPEC_SYS_INFO, /* PS domain specific system information */
+ DE_PLMN_LIST, /* PLMN List */
+ DE_NAS_CONT_FOR_PS_HO, /* 10.5.1.14 NAS container for PS HO */
+ DE_MS_NET_FEAT_SUP, /* 10.5.1.15 MS network feature support */
DE_COMMON_NONE /* NONE */
}
@@ -855,7 +867,7 @@ typedef enum
BE_SRC_RNC_TO_TAR_RNC_UMTS, /* Source RNC to target RNC transparent information (UMTS) */
BE_SRC_RNC_TO_TAR_RNC_CDMA, /* Source RNC to target RNC transparent information (cdma2000) */
BE_GERAN_CLS_M, /* GERAN Classmark */
- BE_GRAN_BSC_CONT, /* GERAN BSC Container */
+ BE_GERAN_BSC_CONT, /* GERAN BSC Container */
BE_NEW_BSS_TO_OLD_BSS_INF, /* New BSS to Old BSS Information */
BE_INTER_SYS_INF, /* Inter-System Information */
BE_SNA_ACC_INF, /* SNA Access Information */
@@ -888,6 +900,9 @@ typedef enum
BE_SPEECH_CODEC, /* Speech Codec */
BE_CALL_ID, /* Call Identifier */
BE_CALL_ID_LST, /* Call Identifier List */
+ BE_A_ITF_SEL_FOR_RESET, /* A-Interface Selector for RESET */
+ BE_KC128, /* Kc128 */
+ BE_CSG_ID, /* CSG Identifier */
BE_NONE /* NONE */
}
bssmap_elem_idx_t;
@@ -988,6 +1003,7 @@ typedef enum
DE_DAY_SAVING_TIME, /* Daylight Saving Time */
DE_EMERGENCY_NUM_LIST, /* Emergency Number List */
DE_ADD_UPD_PARAMS, /* Additional update parameters */
+ DE_MM_TIMER, /* MM Timer */
/* Call Control Information Elements 10.5.4 */
DE_AUX_STATES, /* Auxiliary States */
DE_BEARER_CAP, /* Bearer Capability */
@@ -1087,7 +1103,9 @@ typedef enum
DE_REQ_MS_INFO, /* [7] 10.5.5.25 Requested MS information */
DE_UE_NETWORK_CAP, /* [7] 10.5.5.26 UE network capability */
DE_EUTRAN_IRAT_INFO_CONTAINER, /* [7] 10.5.5.27 E-UTRAN inter RAT information container */
- DE_VOICE_DOMAIN_PREF, /* [7] 10.5.5.28 Voice domain preference and UE's usage setting */
+ DE_VOICE_DOMAIN_PREF, /* [7] 10.5.5.28 Voice domain preference and UE's usage setting */
+ DE_PTMSI_TYPE, /* [10] 10.5.5.29 P-TMSI type */
+ DE_LAI_2, /* [10] 10.5.5.30 Location Area Identification 2 */
/* Session Management Information Elements [3] 10.5.6 */
DE_ACC_POINT_NAME, /* Access Point Name */
DE_NET_SAPI, /* Network Service Access Point Identifier */
@@ -1107,14 +1125,17 @@ typedef enum
DE_ENH_NSAPI, /* Enhanced network service access point identifier */
DE_REQ_TYPE, /* Request type */
DE_SM_NOTIF_IND, /* Notification indicator */
+ DE_SM_CONNECTIVITY_TYPE, /* Connectivity type */
/* GPRS Common Information Elements [8] 10.5.7 */
DE_PDP_CONTEXT_STAT, /* [8] 10.5.7.1 PDP Context Status */
DE_RAD_PRIO, /* [8] 10.5.7.2 Radio Priority */
DE_GPRS_TIMER, /* [8] 10.5.7.3 GPRS Timer */
DE_GPRS_TIMER_2, /* [8] 10.5.7.4 GPRS Timer 2 */
+ DE_GPRS_TIMER_3, /* [10] 10.5.7.4a GPRS Timer 3 */
DE_RAD_PRIO_2, /* [8] 10.5.7.5 Radio Priority 2 */
DE_MBMS_CTX_STATUS, /* [8] 10.5.7.6 MBMS context status */
DE_UPLINK_DATA_STATUS, /* [8] 10.5.7.7 Uplink data status */
+ DE_DEVICE_PROPERTIES, /* [10] 10.5.7.8 Device properties */
DE_GM_NONE /* NONE */
}
gm_elem_idx_t;
@@ -1285,10 +1306,13 @@ typedef enum
DE_EMM_EPS_UPD_TYPE, /* 9.9.3.14 EPS update type */
DE_EMM_ESM_MSG_CONT, /* 9.9.3.15 ESM message conta */
DE_EMM_GPRS_TIMER, /* 9.9.3.16 GPRS timer ,See subclause 10.5.7.3 in 3GPP TS 24.008 [6]. */
+ DE_EMM_GPRS_TIMER_2, /* 9.9.3.16A GPRS timer 2, See subclause 10.5.7.4 in 3GPP TS 24.008. */
+ DE_EMM_GPRS_TIMER_3, /* 9.9.3.16B GPRS timer 3, See subclause 10.5.7.4a in 3GPP TS 24.008. */
DE_EMM_ID_TYPE_2, /* 9.9.3.17 Identity type 2 ,See subclause 10.5.5.9 in 3GPP TS 24.008 [6]. */
DE_EMM_IMEISV_REQ, /* 9.9.3.18 IMEISV request ,See subclause 10.5.5.10 in 3GPP TS 24.008 [6]. */
DE_EMM_KSI_AND_SEQ_NO, /* 9.9.3.19 KSI and sequence number */
DE_EMM_MS_NET_CAP, /* 9.9.3.20 MS network capability ,See subclause 10.5.5.12 in 3GPP TS 24.008 [6]. */
+ DE_EMM_MS_NET_FEAT_SUP, /* 9.9.3.20A MS network feature support, See subclause 10.5.1.15 in 3GPP TS 24.008. */
DE_EMM_NAS_KEY_SET_ID, /* 9.9.3.21 NAS key set identifier (coded inline)*/
DE_EMM_NAS_MSG_CONT, /* 9.9.3.22 NAS message container */
DE_EMM_NAS_SEC_ALGS, /* 9.9.3.23 NAS security algorithms */
@@ -1314,6 +1338,7 @@ typedef enum
DE_EMM_GEN_MSG_CONT_TYPE, /* 9.9.3.42 Generic message container type */
DE_EMM_GEN_MSG_CONT, /* 9.9.3.43 Generic message container */
DE_EMM_VOICE_DMN_PREF, /* 9.9.3.44 Voice domain preference and UE's usage setting */
+ DE_EMM_GUTI_TYPE, /* 9.9.3.45 GUTI type */
DE_EMM_NONE /* NONE */
}
diff --git a/epan/dissectors/packet-gsm_a_dtap.c b/epan/dissectors/packet-gsm_a_dtap.c
index 4030ec57d3..95e4aa6ac2 100644
--- a/epan/dissectors/packet-gsm_a_dtap.c
+++ b/epan/dissectors/packet-gsm_a_dtap.c
@@ -66,6 +66,12 @@
* Stage 3
* (3GPP TS 24.008 version 9.6.0 Release 9)
*
+ * Reference [10]
+ * Mobile radio interface Layer 3 specification;
+ * Core network protocols;
+ * Stage 3
+ * (3GPP TS 24.008 version 10.6.1 Release 10)
+ *
* $Id$
*
* Wireshark - Network traffic analyzer
@@ -91,7 +97,7 @@
# include "config.h"
#endif
-#include <stdlib.h>
+#include <glib.h>
#include <epan/packet.h>
#include <epan/prefs.h>
@@ -252,6 +258,7 @@ const value_string gsm_dtap_elem_strings[] = {
{ 0x00, "Daylight Saving Time" },
{ 0x00, "Emergency Number List" },
{ 0x00, "Additional update parameters" },
+ { 0x00, "MM Timer" },
/* Call Control Information Elements 10.5.4 */
{ 0x00, "Auxiliary States" }, /* 10.5.4.4 Auxiliary states */
{ 0x00, "Bearer Capability" }, /* 10.5.4.4a Backup bearer capability */
@@ -431,7 +438,10 @@ static int hf_gsm_a_dtap_serv_cat_b4 = -1;
static int hf_gsm_a_dtap_serv_cat_b3 = -1;
static int hf_gsm_a_dtap_serv_cat_b2 = -1;
static int hf_gsm_a_dtap_serv_cat_b1 = -1;
+static int hf_gsm_a_dtap_csmo = -1;
static int hf_gsm_a_dtap_csmt = -1;
+static int hf_gsm_a_dtap_mm_timer_unit = -1;
+static int hf_gsm_a_dtap_mm_timer_value = -1;
static int hf_gsm_a_dtap_alerting_pattern = -1;
static int hf_gsm_a_dtap_ccbs_activation = -1;
static int hf_gsm_a_dtap_stream_identifier = -1;
@@ -508,6 +518,7 @@ static gint ett_bc_oct_6f = -1;
static gint ett_bc_oct_6g = -1;
static gint ett_bc_oct_7 = -1;
static gint ett_epc_ue_tl_a_lb_setup = -1;
+static gint ett_mm_timer = -1;
static char a_bigbuf[1024];
@@ -742,8 +753,7 @@ de_network_name(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 off
}
else
{
- /* tvb_get_ephemeral_unicode_string takes the length in number of guint16's */
- net_name = tvb_get_ephemeral_unicode_string(tvb, curr_offset, ((len - 1) >> 1), ENC_BIG_ENDIAN);
+ net_name = tvb_get_ephemeral_unicode_string(tvb, curr_offset, (len - 1), ENC_BIG_ENDIAN);
proto_tree_add_text(tree, tvb, curr_offset, len - 1, "Text String: %s", net_name);
}
break;
@@ -1074,7 +1084,12 @@ de_emerg_num_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 o
/*
* 10.5.3.14 Additional update parameters
*/
-static const true_false_string gsm_a_dtap_csmt_vals = {
+static const true_false_string gsm_a_dtap_csmo_value = {
+ "CS fallback mobile originating call",
+ "No additional information"
+};
+
+static const true_false_string gsm_a_dtap_csmt_value = {
"CS fallback mobile terminating call",
"No additional information"
};
@@ -1086,13 +1101,61 @@ de_add_upd_params(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
curr_offset = offset;
- proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, (curr_offset<<3)+4, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, (curr_offset<<3)+4, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(tree, hf_gsm_a_dtap_csmo, tvb, (curr_offset<<3)+6, 1, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(tree, hf_gsm_a_dtap_csmt, tvb, (curr_offset<<3)+7, 1, ENC_BIG_ENDIAN);
return(len);
}
/*
+ * 10.5.3.15 MM Timer
+ */
+static const value_string gsm_a_dtap_mm_timer_unit_vals[] = {
+ { 0x00, "value is incremented in multiples of 2 seconds" },
+ { 0x01, "value is incremented in multiples of 1 minute" },
+ { 0x02, "value is incremented in multiples of decihours" },
+ { 0x07, "value indicates that the timer is deactivated" },
+ { 0, NULL }
+};
+
+static guint16
+de_mm_timer(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint8 oct;
+ guint16 val;
+ const gchar *str;
+ proto_tree *subtree;
+ proto_item *item = NULL;
+
+ oct = tvb_get_guint8(tvb, offset);
+ val = oct&0x1f;
+
+ switch (oct>>5)
+ {
+ case 0: str = "sec"; val*=2; break;
+ case 1: str = "min"; break;
+ case 2: str = "min"; val*=6; break;
+ case 7: str = "";
+ item = proto_tree_add_text(tree, tvb, offset, 1,
+ "MM Timer: timer is deactivated");
+ break;
+ default: str = "min";
+ }
+
+ if (item == NULL) {
+ item = proto_tree_add_text(tree, tvb, offset, 1,
+ "MM Timer: %u %s", val, str);
+ }
+
+ subtree = proto_item_add_subtree(item, ett_mm_timer);
+ proto_tree_add_item(subtree, hf_gsm_a_dtap_mm_timer_unit, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_gsm_a_dtap_mm_timer_value, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ return (1);
+}
+
+ /*
* [3] 10.5.4.4 Auxiliary states
*/
static guint16
@@ -1374,8 +1437,6 @@ de_bearer_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 o
oct = tvb_get_guint8(tvb, curr_offset);
- extended = (oct & 0x80) ? FALSE : TRUE;
-
proto_tree_add_item(subtree, hf_gsm_a_extension, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
other_decode_bitfield_value(a_bigbuf, oct, 0x40, 8);
@@ -1559,8 +1620,6 @@ de_bearer_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 o
oct = tvb_get_guint8(tvb, curr_offset);
- extended = (oct & 0x80) ? FALSE : TRUE;
-
proto_tree_add_item(subtree, hf_gsm_a_extension, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
other_decode_bitfield_value(a_bigbuf, oct, 0x40, 8);
@@ -2074,8 +2133,6 @@ bc_octet_6:
oct = tvb_get_guint8(tvb, curr_offset);
- extended = (oct & 0x80) ? FALSE : TRUE;
-
proto_tree_add_item(subtree, hf_gsm_a_extension, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
if (is_uplink == IS_UPLINK_TRUE)
@@ -2149,7 +2206,6 @@ bc_octet_7:
"Octet 7");
subtree = proto_item_add_subtree(item, ett_bc_oct_7);
- extended = (oct & 0x80) ? FALSE : TRUE;
oct = tvb_get_guint8(tvb, curr_offset);
proto_tree_add_item(subtree, hf_gsm_a_extension, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
@@ -2731,7 +2787,8 @@ de_cause(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset
case 18: str = "No user responding"; break;
case 19: str = "User alerting, no answer"; break;
case 21: str = "Call rejected"; break;
- case 22: str = "Number changed"; break;
+ case 22: str = "Call rejected due to feature at the destination"; break;
+ case 24: str = "Number changed"; break;
case 25: str = "Pre-emption"; break;
case 26: str = "Non selected user clearing"; break;
case 27: str = "Destination out of order"; break;
@@ -3476,7 +3533,7 @@ static const value_string gsm_a_sysid_values[] = {
{ 0, NULL }
};
guint16
-de_sup_codec_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+de_sup_codec_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
guint32 curr_offset;
guint8 length;
@@ -4070,7 +4127,7 @@ de_tp_epc_ue_test_loop_mode(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, bit_offset, 6, ENC_BIG_ENDIAN);
bit_offset += 6;
proto_tree_add_bits_item(tree, hf_gsm_a_dtap_epc_ue_tl_mode, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
- bit_offset += 2;
+ /*bit_offset += 2;*/
/* Store test loop mode to know how to dissect Close UE Test Loop message */
epc_test_loop_mode = tvb_get_guint8(tvb, curr_offset) & 0x03;
curr_offset++;
@@ -4188,6 +4245,7 @@ guint16 (*dtap_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
de_day_saving_time, /* Daylight Saving Time */
de_emerg_num_list, /* Emergency Number List */
de_add_upd_params, /* Additional update parameters */
+ de_mm_timer, /* MM Timer */
/* Call Control Information Elements 10.5.4 */
de_aux_states, /* Auxiliary States */
de_bearer_cap, /* Bearer Capability */
@@ -4429,6 +4487,9 @@ dtap_mm_cm_reestab_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
ELEM_MAND_LV(GSM_A_PDU_TYPE_COMMON, DE_MID, NULL);
ELEM_OPT_TV(0x13, GSM_A_PDU_TYPE_COMMON, DE_LAI, NULL);
+
+ ELEM_OPT_TV_SHORT(0xD0, GSM_A_PDU_TYPE_GM, DE_DEVICE_PROPERTIES, NULL);
+
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -4470,6 +4531,8 @@ dtap_mm_cm_srvc_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
ELEM_MAND_V(GSM_A_PDU_TYPE_DTAP, DE_REJ_CAUSE, NULL);
+ ELEM_OPT_TLV(0x36, GSM_A_PDU_TYPE_DTAP, DE_MM_TIMER, " - T3246 value");
+
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -4585,6 +4648,10 @@ dtap_mm_cm_srvc_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
ELEM_OPT_TV_SHORT(0x80, GSM_A_PDU_TYPE_COMMON, DE_PRIO, NULL);
+ ELEM_OPT_TV_SHORT(0xC0, GSM_A_PDU_TYPE_DTAP, DE_ADD_UPD_PARAMS, NULL);
+
+ ELEM_OPT_TV_SHORT(0xD0, GSM_A_PDU_TYPE_GM, DE_DEVICE_PROPERTIES, NULL);
+
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -4718,6 +4785,8 @@ dtap_mm_loc_upd_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
/* 34 Emergency Number List O TLV 5-50 10.5.3.13 */
ELEM_OPT_TLV(0x34, GSM_A_PDU_TYPE_DTAP, DE_EMERGENCY_NUM_LIST, NULL);
+ ELEM_OPT_TLV(0x35, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_3, " - Per MS T3212");
+
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -4738,6 +4807,8 @@ dtap_mm_loc_upd_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
ELEM_MAND_V(GSM_A_PDU_TYPE_DTAP, DE_REJ_CAUSE, NULL);
+ ELEM_OPT_TLV(0x36, GSM_A_PDU_TYPE_DTAP, DE_MM_TIMER, " - T3246 value");
+
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -4844,6 +4915,10 @@ dtap_mm_loc_upd_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
ELEM_OPT_TV_SHORT(0xc0, GSM_A_PDU_TYPE_DTAP, DE_ADD_UPD_PARAMS, NULL);
+ ELEM_OPT_TV_SHORT(0xD0, GSM_A_PDU_TYPE_GM, DE_DEVICE_PROPERTIES, NULL);
+
+ ELEM_OPT_TV_SHORT(0xC0, GSM_A_PDU_TYPE_COMMON, DE_MS_NET_FEAT_SUP, NULL);
+
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -5167,7 +5242,7 @@ dtap_cc_emerg_setup(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
ELEM_OPT_TLV(0x40, GSM_A_PDU_TYPE_DTAP, DE_SUP_CODEC_LIST, NULL);
- ELEM_OPT_TLV(0x2e, GSM_A_PDU_TYPE_DTAP, DE_SERV_CAT, " Emergency");
+ ELEM_OPT_TLV(0x2e, GSM_A_PDU_TYPE_DTAP, DE_SERV_CAT, " - Emergency category");
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -6504,7 +6579,7 @@ proto_register_gsm_a_dtap(void)
},
{ &hf_gsm_a_dtap_elem_id,
{ "Element ID", "gsm_a_dtap.elem_id",
- FT_UINT8, BASE_DEC, NULL, 0,
+ FT_UINT8, BASE_HEX, NULL, 0,
NULL, HFILL }
},
{ &hf_gsm_a_cld_party_bcd_num,
@@ -6627,9 +6702,24 @@ proto_register_gsm_a_dtap(void)
FT_BOOLEAN, 8, NULL, 0x01,
NULL, HFILL }
},
+ { &hf_gsm_a_dtap_csmo,
+ { "CSMO", "gsm_a.dtap.csmo",
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_dtap_csmo_value), 0x0,
+ NULL, HFILL }
+ },
{ &hf_gsm_a_dtap_csmt,
{ "CSMT", "gsm_a.dtap.csmt",
- FT_BOOLEAN, 8, TFS(&gsm_a_dtap_csmt_vals), 0x0,
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_dtap_csmt_value), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_dtap_mm_timer_unit,
+ { "Unit", "gsm_a.dtap.mm_timer_unit",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_dtap_mm_timer_unit_vals), 0xe0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_dtap_mm_timer_value,
+ { "Timer value", "gsm_a.dtap.mm_timer_value",
+ FT_UINT8, BASE_DEC, NULL, 0x1f,
NULL, HFILL }
},
{ &hf_gsm_a_dtap_alerting_pattern,
@@ -6905,7 +6995,7 @@ proto_register_gsm_a_dtap(void)
};
/* Setup protocol subtree array */
-#define NUM_INDIVIDUAL_ELEMS 20
+#define NUM_INDIVIDUAL_ELEMS 21
gint *ett[NUM_INDIVIDUAL_ELEMS +
NUM_GSM_DTAP_MSG_MM + NUM_GSM_DTAP_MSG_CC +
NUM_GSM_DTAP_MSG_SMS + NUM_GSM_DTAP_MSG_SS + NUM_GSM_DTAP_MSG_TP +
@@ -6931,6 +7021,7 @@ proto_register_gsm_a_dtap(void)
ett[17] = &ett_bc_oct_6g;
ett[18] = &ett_bc_oct_7;
ett[19] = &ett_epc_ue_tl_a_lb_setup;
+ ett[20] = &ett_mm_timer;
last_offset = NUM_INDIVIDUAL_ELEMS;
diff --git a/epan/dissectors/packet-gsm_a_gm.c b/epan/dissectors/packet-gsm_a_gm.c
index 26bcc4f0f5..6517aec7fc 100644
--- a/epan/dissectors/packet-gsm_a_gm.c
+++ b/epan/dissectors/packet-gsm_a_gm.c
@@ -35,6 +35,12 @@
* Stage 3
* (3GPP TS 24.008 version 9.6.0 Release 9)
*
+ * Reference [10]
+ * Mobile radio interface Layer 3 specification;
+ * Core network protocols;
+ * Stage 3
+ * (3GPP TS 24.008 version 10.6.1 Release 10)
+ *
* $Id$
*
* Wireshark - Network traffic analyzer
@@ -172,6 +178,8 @@ const value_string gsm_gm_elem_strings[] = {
{ 0x00, "UE network capability" },
{ 0x00, "E-UTRAN inter RAT information container" },
{ 0x00, "Voice domain preference and UE's usage setting" },
+ { 0x00, "P-TMSI type" },
+ { 0x00, "Location Area Identification 2" },
/* Session Management Information Elements 10.5.6 */
{ 0x00, "Access Point Name" },
{ 0x00, "Network Service Access Point Identifier" },
@@ -191,14 +199,17 @@ const value_string gsm_gm_elem_strings[] = {
{ 0x00, "Enhanced network service access point identifier" },
{ 0x00, "Request type" },
{ 0x00, "Notification indicator" },
+ { 0x00, "Connectivity type" },
/* GPRS Common Information Elements 10.5.7 */
{ 0x00, "PDP Context Status" },
{ 0x00, "Radio Priority" },
{ 0x00, "GPRS Timer" },
{ 0x00, "GPRS Timer 2" },
+ { 0x00, "GPRS Timer 3" },
{ 0x00, "Radio Priority 2"},
{ 0x00, "MBMS context status"},
{ 0x00, "Uplink data status"},
+ { 0x00, "Device properties"},
{ 0x00, "Spare Nibble"},
{ 0, NULL }
};
@@ -268,6 +279,10 @@ static int hf_gsm_a_gm_tmsi_flag = -1;
static int hf_gsm_a_gm_update_type = -1;
static int hf_gsm_a_gm_gprs_timer_unit = -1;
static int hf_gsm_a_gm_gprs_timer_value = -1;
+static int hf_gsm_a_gm_gprs_timer2_unit = -1;
+static int hf_gsm_a_gm_gprs_timer2_value = -1;
+static int hf_gsm_a_gm_gprs_timer3_unit = -1;
+static int hf_gsm_a_gm_gprs_timer3_value = -1;
static int hf_gsm_a_gm_nsapi_5_ul_stat = -1;
static int hf_gsm_a_gm_nsapi_6_ul_stat = -1;
static int hf_gsm_a_gm_nsapi_7_ul_stat = -1;
@@ -279,24 +294,30 @@ static int hf_gsm_a_gm_nsapi_12_ul_stat = -1;
static int hf_gsm_a_gm_nsapi_13_ul_stat = -1;
static int hf_gsm_a_gm_nsapi_14_ul_stat = -1;
static int hf_gsm_a_gm_nsapi_15_ul_stat = -1;
+static int hf_gsm_a_gm_device_prop_low_prio = -1;
static int hf_gsm_a_gm_pco_pid = -1;
+static int hf_gsm_a_gm_pco_app_spec_info = -1;
static int hf_gsm_a_gm_type_of_identity = -1;
-static int hf_gsm_a_gm_rac = -1;
+int hf_gsm_a_gm_rac = -1;
static int hf_gsm_a_gm_apc = -1;
static int hf_gsm_a_gm_otd_a = -1;
static int hf_gsm_a_gm_otd_b = -1;
static int hf_gsm_a_gm_gps_a = -1;
static int hf_gsm_a_gm_gps_b = -1;
static int hf_gsm_a_gm_gps_c = -1;
+static int hf_gsm_a_gm_lcs_molr = -1;
+static int hf_gsm_a_gm_mbms = -1;
+static int hf_gsm_a_gm_ims_vops = -1;
+static int hf_gsm_a_gm_emc_bs = -1;
static int hf_gsm_a_gm_req_ms_info_irat = -1;
static int hf_gsm_a_gm_req_ms_info_irat2 = -1;
static int hf_gsm_a_gm_ue_usage_setting = -1;
static int hf_gsm_a_gm_voice_domain_pref_for_eutran = -1;
+static int hf_gsm_a_gm_ptmsi_type = -1;
static int hf_gsm_a_sm_pdp_type_org = -1;
static int hf_gsm_a_qos_mean_thr = -1;
static int hf_gsm_a_qos_peak_thr = -1;
static int hf_gsm_a_qos_prec_class = -1;
-static int hf_gsm_a_qos_traf_handl_prio = -1;
static int hf_gsm_a_qos_trans_delay = -1;
static int hf_gsm_a_qos_signalling_ind = -1;
static int hf_gsm_a_qos_source_stat_desc = -1;
@@ -317,6 +338,7 @@ static int hf_gsm_a_sm_tmgi = -1;
static int hf_gsm_a_sm_enh_nsapi = -1;
static int hf_gsm_a_sm_req_type = -1;
static int hf_gsm_a_sm_notif_ind = -1;
+static int hf_gsm_a_sm_connectivity_type = -1;
static int hf_gsm_a_gm_rac_ctrled_early_cm_sending = -1;
static int hf_gsm_a_gm_rac_pseudo_sync = -1;
static int hf_gsm_a_gm_rac_vgcs = -1;
@@ -370,6 +392,10 @@ static int hf_gsm_a_gm_rac_emst_cap = -1;
static int hf_gsm_a_gm_rac_mtti_cap = -1;
static int hf_gsm_a_gm_rac_utra_csg_cell_report = -1;
static int hf_gsm_a_gm_rac_eutra_csg_cell_report = -1;
+static int hf_gsm_a_gm_rac_dtr_cap = -1;
+static int hf_gsm_a_gm_rac_emsr_cap = -1;
+static int hf_gsm_a_gm_rac_fast_down_freq_switch_cap = -1;
+static int hf_gsm_a_gm_rac_tighter_cap = -1;
static int hf_gsm_a_sm_ti_flag = -1;
static int hf_gsm_a_sm_ext = -1;
@@ -418,6 +444,7 @@ static gint ett_gmm_rai = -1;
static gint ett_gmm_gprs_timer = -1;
static gint ett_sm_tft = -1;
+static gint ett_sm_pco = -1;
static dissector_handle_t data_handle;
static dissector_handle_t rrc_irat_ho_info_handle;
@@ -446,7 +473,7 @@ de_gmm_attach_res(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
proto_tree_add_item(tree, hf_gsm_a_gm_res_of_attach, tvb, offset, 1, ENC_BIG_ENDIAN);
/* no length check possible */
- return(1);
+ return (1);
}
/*
@@ -462,8 +489,8 @@ static const value_string gsm_a_gm_type_of_attach_vals[] = {
static guint16
de_gmm_attach_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- proto_item *tf = NULL;
- proto_tree *tf_tree = NULL;
+ proto_item *tf;
+ proto_tree *tf_tree;
proto_tree_add_bits_item(tree, hf_gsm_a_gm_ciph_key_seq_num, tvb, offset << 3, 4, ENC_BIG_ENDIAN);
@@ -471,13 +498,13 @@ de_gmm_attach_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
tvb, offset, 1,
"Attach Type");
- tf_tree = proto_item_add_subtree(tf, ett_gmm_attach_type );
+ tf_tree = proto_item_add_subtree(tf, ett_gmm_attach_type);
proto_tree_add_item(tf_tree, hf_gsm_a_gm_for, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tf_tree, hf_gsm_a_gm_type_of_attach, tvb, offset, 1, ENC_BIG_ENDIAN);
/* no length check possible */
- return(1);
+ return (1);
}
/*
@@ -502,7 +529,7 @@ de_gmm_ciph_alg(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
proto_tree_add_item(tree, hf_gsm_a_gm_type_of_ciph_alg, tvb, offset, 1, ENC_BIG_ENDIAN);
/* no length check possible */
- return(1);
+ return (1);
}
/*
@@ -520,7 +547,7 @@ de_gmm_tmsi_stat(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint3
proto_tree_add_item(tree, hf_gsm_a_gm_tmsi_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
/* no length check possible */
- return(1);
+ return (1);
}
/*
@@ -529,36 +556,36 @@ de_gmm_tmsi_stat(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint3
static guint16
de_gmm_detach_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
- guint32 curr_offset;
- const gchar *str;
- const gchar *str_power;
- proto_item *tf = NULL;
- proto_tree *tf_tree = NULL;
+ guint8 oct;
+ guint32 curr_offset;
+ const gchar *str;
+ const gchar *str_power;
+ proto_item *tf;
+ proto_tree *tf_tree;
curr_offset = offset;
oct = tvb_get_guint8(tvb, curr_offset);
- switch(oct&7)
+ switch (oct&7)
{
- case 1: str="GPRS detach/re-attach required"; break;
- case 2: str="IMSI detach/re-attach not required"; break;
- case 3: str="Combined GPRS/IMSI detach/IMSI detach (after VLR failure)"; break;
- default: str="Combined GPRS/IMSI detach/re-attach not required";
+ case 1: str = "GPRS detach/re-attach required"; break;
+ case 2: str = "IMSI detach/re-attach not required"; break;
+ case 3: str = "Combined GPRS/IMSI detach/IMSI detach (after VLR failure)"; break;
+ default: str = "Combined GPRS/IMSI detach/re-attach not required";
}
- switch(oct&8)
+ switch (oct&8)
{
- case 8: str_power="power switched off"; break;
- default: str_power="normal detach"; break;
+ case 8: str_power = "power switched off"; break;
+ default: str_power = "normal detach"; break;
}
tf = proto_tree_add_text(tree,
tvb, curr_offset, 1,
"Detach Type");
- tf_tree = proto_item_add_subtree(tf, ett_gmm_detach_type );
+ tf_tree = proto_item_add_subtree(tf, ett_gmm_detach_type);
proto_tree_add_text(tf_tree,
tvb, curr_offset, 1,
@@ -576,7 +603,7 @@ de_gmm_detach_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
/* no length check possible */
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/*
@@ -586,7 +613,7 @@ de_gmm_detach_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
* 0 Split pg cycle on CCCH is not supported by the mobile station
* 1 Split pg cycle on CCCH is supported by the mobile station
*/
-static const true_false_string gsm_a_gmm_split_on_ccch_value = {
+static const true_false_string gsm_a_gmm_split_on_ccch_value = {
"Split pg cycle on CCCH is supported by the mobile station",
"Split pg cycle on CCCH is not supported by the mobile station"
};
@@ -635,11 +662,11 @@ static const range_string gsm_a_gmm_cn_spec_drs_cycle_len_coef_strings[] = {
guint16
de_gmm_drx_param(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
- guint32 curr_offset;
- const gchar *str;
- proto_item *tf = NULL;
- proto_tree *tf_tree = NULL;
+ guint8 oct;
+ guint32 curr_offset;
+ const gchar *str;
+ proto_item *tf;
+ proto_tree *tf_tree;
curr_offset = offset;
@@ -647,48 +674,48 @@ de_gmm_drx_param(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint3
tvb, curr_offset, 2,
"DRX Parameter");
- tf_tree = proto_item_add_subtree(tf, ett_gmm_drx );
+ tf_tree = proto_item_add_subtree(tf, ett_gmm_drx);
oct = tvb_get_guint8(tvb, curr_offset);
- switch(oct)
+ switch (oct)
{
- case 0: str="704"; break;
- case 65: str="71"; break;
- case 66: str="72"; break;
- case 67: str="74"; break;
- case 68: str="75"; break;
- case 69: str="77"; break;
- case 70: str="79"; break;
- case 71: str="80"; break;
- case 72: str="83"; break;
- case 73: str="86"; break;
- case 74: str="88"; break;
- case 75: str="90"; break;
- case 76: str="92"; break;
- case 77: str="96"; break;
- case 78: str="101"; break;
- case 79: str="103"; break;
- case 80: str="107"; break;
- case 81: str="112"; break;
- case 82: str="116"; break;
- case 83: str="118"; break;
- case 84: str="128"; break;
- case 85: str="141"; break;
- case 86: str="144"; break;
- case 87: str="150"; break;
- case 88: str="160"; break;
- case 89: str="171"; break;
- case 90: str="176"; break;
- case 91: str="192"; break;
- case 92: str="214"; break;
- case 93: str="224"; break;
- case 94: str="235"; break;
- case 95: str="256"; break;
- case 96: str="288"; break;
- case 97: str="320"; break;
- case 98: str="352"; break;
- default: str="Reserved, interpreted as 1";
+ case 0: str = "704"; break;
+ case 65: str = "71"; break;
+ case 66: str = "72"; break;
+ case 67: str = "74"; break;
+ case 68: str = "75"; break;
+ case 69: str = "77"; break;
+ case 70: str = "79"; break;
+ case 71: str = "80"; break;
+ case 72: str = "83"; break;
+ case 73: str = "86"; break;
+ case 74: str = "88"; break;
+ case 75: str = "90"; break;
+ case 76: str = "92"; break;
+ case 77: str = "96"; break;
+ case 78: str = "101"; break;
+ case 79: str = "103"; break;
+ case 80: str = "107"; break;
+ case 81: str = "112"; break;
+ case 82: str = "116"; break;
+ case 83: str = "118"; break;
+ case 84: str = "128"; break;
+ case 85: str = "141"; break;
+ case 86: str = "144"; break;
+ case 87: str = "150"; break;
+ case 88: str = "160"; break;
+ case 89: str = "171"; break;
+ case 90: str = "176"; break;
+ case 91: str = "192"; break;
+ case 92: str = "214"; break;
+ case 93: str = "224"; break;
+ case 94: str = "235"; break;
+ case 95: str = "256"; break;
+ case 96: str = "288"; break;
+ case 97: str = "320"; break;
+ case 98: str = "352"; break;
+ default: str = "Reserved, interpreted as 1";
}
proto_tree_add_text(tf_tree,
@@ -706,7 +733,7 @@ de_gmm_drx_param(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint3
/* no length check possible */
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/*
@@ -730,7 +757,7 @@ de_gmm_ftostby(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
proto_tree_add_bits_item(tree, hf_gsm_a_gm_force_to_standby, tvb, bit_offset + 1, 3, ENC_BIG_ENDIAN);
/* no length check possible */
- return(1);
+ return (1);
}
/*
@@ -747,7 +774,7 @@ de_gmm_ftostby_h(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint3
proto_tree_add_bits_item(tree, hf_gsm_a_gm_force_to_standby, tvb, bit_offset + 1, 3, ENC_BIG_ENDIAN);
/* no length check possible */
- return(1);
+ return (1);
}
/*
@@ -756,19 +783,19 @@ de_gmm_ftostby_h(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint3
static guint16
de_gmm_ptmsi_sig(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- proto_item *curr_item;
+ guint32 curr_offset;
+ proto_item *curr_item;
curr_offset = offset;
- curr_item= proto_tree_add_item(tree,hf_gsm_a_ptmsi_sig,tvb,curr_offset,3,ENC_BIG_ENDIAN);
- proto_item_append_text(curr_item,"%s",add_string ? add_string : "");
+ curr_item= proto_tree_add_item(tree, hf_gsm_a_ptmsi_sig, tvb, curr_offset, 3, ENC_BIG_ENDIAN);
+ proto_item_append_text(curr_item, "%s", add_string ? add_string : "");
- curr_offset+=3;
+ curr_offset += 3;
/* no length check possible */
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/*
@@ -777,18 +804,18 @@ de_gmm_ptmsi_sig(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint3
static guint16
de_gmm_ptmsi_sig2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len _U_)
{
- guint32 curr_offset;
- proto_item *curr_item;
+ guint32 curr_offset;
+ proto_item *curr_item;
curr_offset = offset;
- curr_item= proto_tree_add_item(tree,hf_gsm_a_ptmsi_sig2,tvb,curr_offset,3,ENC_BIG_ENDIAN);
- proto_item_append_text(curr_item,"%s",add_string ? add_string : "");
- curr_offset+=3;
+ curr_item= proto_tree_add_item(tree, hf_gsm_a_ptmsi_sig2, tvb, curr_offset, 3, ENC_BIG_ENDIAN);
+ proto_item_append_text(curr_item, "%s", add_string ? add_string : "");
+ curr_offset += 3;
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/*
@@ -809,7 +836,7 @@ de_gmm_ident_type2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
proto_tree_add_item(tree, hf_gsm_a_gm_type_of_identity, tvb, offset, 1, ENC_BIG_ENDIAN);
/* no length check possible */
- return(1);
+ return (1);
}
/*
@@ -833,7 +860,7 @@ de_gmm_imeisv_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
proto_tree_add_bits_item(tree, hf_gsm_a_gm_imeisv_req, tvb, bit_offset + 1, 3, ENC_BIG_ENDIAN);
/* no length check possible */
- return(1);
+ return (1);
}
/*
@@ -845,19 +872,19 @@ de_gmm_rec_npdu_lst(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
guint32 curr_offset;
guint curr_len;
- curr_len = len;
+ curr_len = len;
curr_offset = offset;
- if ( len == 0 ) return 0;
+ if (len == 0) return 0;
do
{
guint32 oct;
oct = tvb_get_guint8(tvb, curr_offset);
- oct <<=8;
+ oct <<= 8;
oct |= tvb_get_guint8(tvb, curr_offset+1);
curr_len -= 2;
- oct <<=8;
+ oct <<= 8;
proto_tree_add_text(tree,
tvb, curr_offset, 2,
@@ -865,9 +892,9 @@ de_gmm_rec_npdu_lst(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
oct>>20,
(oct>>12)&0xff,
(oct>>12)&0xff);
- curr_offset+= 2;
+ curr_offset += 2;
- if ( curr_len > 2 )
+ if (curr_len > 2)
{
oct |= tvb_get_guint8(tvb, curr_offset+2);
curr_len--;
@@ -882,11 +909,11 @@ de_gmm_rec_npdu_lst(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
curr_offset++;
}
- } while ( curr_len > 1 );
+ } while (curr_len > 1);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/*
@@ -978,9 +1005,9 @@ static const true_false_string gsm_a_gmm_net_cap_nf_vals = {
guint16
de_gmm_ms_net_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- proto_tree *subtree;
- proto_item *item;
+ guint32 curr_offset;
+ proto_tree *subtree;
+ proto_item *item;
curr_offset = offset;
@@ -1027,10 +1054,10 @@ de_gmm_ms_net_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 o
curr_offset++;
NO_MORE_DATA_CHECK(len);
- /* bit 8: PS inter-RAT HO to UTRAN Iu mode capability */
+ /* bit 8: PS inter-RAT HO from GERAN to UTRAN Iu mode capability */
proto_tree_add_item(tree, hf_gsm_a_gmm_net_cap_ps_irat_iu, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* bit 7: PS inter-RAT HO to E-UTRAN S1 mode capability */
+ /* bit 7: PS inter-RAT HO from GERAN to E-UTRAN S1 mode capability */
proto_tree_add_item(tree, hf_gsm_a_gmm_net_cap_ps_irat_s1, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
/* bit 6: EMM Combined procedures capability */
@@ -1045,7 +1072,7 @@ de_gmm_ms_net_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 o
/* bit 3: EPC capability */
proto_tree_add_item(tree, hf_gsm_a_gmm_net_cap_epc, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* bit 3: NF capability */
+ /* bit 2: NF capability */
proto_tree_add_item(tree, hf_gsm_a_gmm_net_cap_nf, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
/* bits 1: Spare bit */
@@ -1054,20 +1081,20 @@ de_gmm_ms_net_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 o
curr_offset++;
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/*
* [7] 10.5.5.12a
*/
#define GET_DATA /* check if we have enough bits left */ \
- if ( curr_bits_length < bits_needed ) \
+ if (curr_bits_length < bits_needed) \
continue; \
/* check if oct has enough bits */ \
- if ( bits_in_oct < bits_needed ) \
+ if (bits_in_oct < bits_needed) \
{ \
guint32 tmp_oct; \
- if ( curr_len == 0 ) \
+ if (curr_len == 0) \
{ \
proto_tree_add_text(tf_tree, \
tvb, curr_offset, 1, \
@@ -1077,7 +1104,7 @@ de_gmm_ms_net_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 o
oct |= tmp_oct<<(32-8-bits_in_oct); \
curr_len--; \
curr_offset++; \
- if ( bits_in_oct != 0 ) \
+ if (bits_in_oct != 0) \
add_ocetets = 1; \
else \
add_ocetets = 0; \
@@ -1278,13 +1305,14 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
guint value;
const gchar *str;
guint indx = 0;
- guchar dtm_gprs_mslot = 0;
- guchar dtm_egprs_mslot = 4;
+
+ guchar dtm_gprs_mslot = 0;
+ guchar dtm_egprs_mslot = 4;
gboolean finished = TRUE;
- curr_len = len;
+ curr_len = len;
curr_offset = offset;
- bit_offset = offset<<3;
+ bit_offset = offset<<3;
bits_in_oct = 0;
oct = 0;
@@ -1293,7 +1321,7 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
do
{
/* check for a new round */
- if (( curr_len*8 + bits_in_oct ) < 11 )
+ if ((curr_len*8 + bits_in_oct) < 11)
break;
/* now read the first 11 bits */
@@ -1301,20 +1329,20 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
/*
*
*/
- if ( curr_len != len )
+ if (curr_len != len)
{
bits_needed = 1;
GET_DATA;
- if (( oct>>(32-bits_needed) ) != 1 )
+ if ((oct>>(32-bits_needed)) != 1)
{
break;
}
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
bit_offset++;
- if (( curr_len*8 + bits_in_oct ) < 11 )
+ if ((curr_len*8 + bits_in_oct) < 11)
break;
curr_bits_length = 11;
}
@@ -1322,9 +1350,9 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
indx++;
tf = proto_tree_add_text(tree,
tvb, curr_offset, 1,
- "MS RA capability %d",indx);
+ "MS RA capability %d", indx);
- tf_tree = proto_item_add_subtree(tf, ett_gmm_radio_cap );
+ tf_tree = proto_item_add_subtree(tf, ett_gmm_radio_cap);
/*
* Access Technology
@@ -1335,11 +1363,11 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
acc_type = oct>>(32-bits_needed);
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_acc_tech_type, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
- bit_offset+=4;
+ bit_offset += 4;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/* < Access capabilities struct > ::= */
/*
@@ -1355,11 +1383,11 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
/* This is already done - length doesn't contain this field
curr_bits_length -= bits_needed;
*/
- bit_offset+=7;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += 7;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
- if ( acc_type == 0x0f )
+ if (acc_type == 0x0f)
{
do
{
@@ -1375,37 +1403,37 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
GET_DATA;
/* analyse bits */
- switch ( oct>>(32-bits_needed) )
+ switch (oct>>(32-bits_needed))
{
- case 0x00: str="Not Present"; finished = TRUE; break;
- case 0x01: str="Present"; finished = FALSE; break;
- default: str="This should not happen";
+ case 0x00: str = "Not Present"; finished = TRUE; break;
+ case 0x01: str = "Present"; finished = FALSE; break;
+ default: str = "This should not happen";
}
proto_tree_add_text(tf_tree,
tvb, curr_offset-1-add_ocetets, 1+add_ocetets,
"Presence: %s (%u)", str, oct>>(32-bits_needed));
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
if (finished)
{
/*
* No more valid data, get spare bits if any
*/
- while ( curr_bits_length > 0 )
+ while (curr_bits_length > 0)
{
- if ( curr_bits_length > 8 )
+ if (curr_bits_length > 8)
bits_needed = 8;
else
bits_needed = curr_bits_length;
GET_DATA;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
- bit_offset+= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
+ bit_offset += bits_needed;
}
continue;
}
@@ -1419,11 +1447,11 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
acc_type = oct>>(32-bits_needed);
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_acc_cap_struct_len, tvb, bit_offset, 7, ENC_BIG_ENDIAN);
- bit_offset+=4;
+ bit_offset += 4;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* RF Power
@@ -1433,30 +1461,30 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
value = tvb_get_bits8(tvb, bit_offset, 3);
/* analyse bits */
- if ( acc_type == 0x04 ) /* GSM 1900 */
+ if (acc_type == 0x04) /* GSM 1900 */
{
- switch ( value )
+ switch (value)
{
- case 0x01: str="1 W (30 dBm)"; break;
- case 0x02: str="0,25 W (24 dBm)"; break;
- case 0x03: str="2 W (33 dBm)"; break;
- default: str="Not specified";
+ case 0x01: str = "1 W (30 dBm)"; break;
+ case 0x02: str = "0,25 W (24 dBm)"; break;
+ case 0x03: str = "2 W (33 dBm)"; break;
+ default: str = "Not specified";
}
}
- else if ( acc_type == 0x03 )
+ else if (acc_type == 0x03)
{
/*
* 3 GSM 1800
*/
- switch ( value )
+ switch (value)
{
- case 0x01: str="1 W (30 dBm)"; break;
- case 0x02: str="0,25 W (24 dBm)"; break;
- case 0x03: str="4 W (36 dBm)"; break;
- default: str="Not specified";
+ case 0x01: str = "1 W (30 dBm)"; break;
+ case 0x02: str = "0,25 W (24 dBm)"; break;
+ case 0x03: str = "4 W (36 dBm)"; break;
+ default: str = "Not specified";
}
}
- else if ( acc_type <= 0x08 )
+ else if (acc_type <= 0x08)
{
/* 0 GSM P
* 1 GSM E
@@ -1466,26 +1494,26 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
* 7 GSM 850
*/
- switch ( value )
+ switch (value)
{
- case 0x02: str="8 W (39 dBm)"; break;
- case 0x03: str="5 W (37 dBm)"; break;
- case 0x04: str="2 W (33 dBm)"; break;
- case 0x05: str="0,8 W (29 dBm)"; break;
- default: str="Not specified";
+ case 0x02: str = "8 W (39 dBm)"; break;
+ case 0x03: str = "5 W (37 dBm)"; break;
+ case 0x04: str = "2 W (33 dBm)"; break;
+ case 0x05: str = "0,8 W (29 dBm)"; break;
+ default: str = "Not specified";
}
}
else
- str="Not specified??";
+ str = "Not specified??";
/* decode_bits_in_field(gint bit_offset, gint no_of_bits, guint64 value)*/
proto_tree_add_text(tf_tree,
tvb, curr_offset-1-add_ocetets, 1+add_ocetets,
"%s RF Power Capability, GMSK Power Class: %s (%u)", decode_bits_in_field(bit_offset, 3, value), str, value);
- bit_offset+=3;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += 3;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* 8PSK Power Class
@@ -1495,22 +1523,22 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
value = tvb_get_bits8(tvb, bit_offset, 2);
/* analyse bits */
- switch ( value )
+ switch (value)
{
- case 0x00: str="8PSK modulation not supported for uplink"; break;
- case 0x01: str="Power class E1"; break;
- case 0x02: str="Power class E2"; break;
- case 0x03: str="Power class E3"; break;
- default: str="This should not happen";
+ case 0x00: str = "8PSK modulation not supported for uplink"; break;
+ case 0x01: str = "Power class E1"; break;
+ case 0x02: str = "Power class E2"; break;
+ case 0x03: str = "Power class E3"; break;
+ default: str = "This should not happen";
}
proto_tree_add_text(tf_tree,
tvb, curr_offset-1-add_ocetets, 1+add_ocetets,
- "8PSK Power Class: %s (%u)",str,value);
- bit_offset+=2;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ "8PSK Power Class: %s (%u)", str, value);
+ bit_offset += 2;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
} while (!finished);
@@ -1525,48 +1553,48 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
value = tvb_get_bits8(tvb, bit_offset, 3);
/* analyse bits */
- if ( acc_type == 0x04 ) /* GSM 1900 */
+ if (acc_type == 0x04) /* GSM 1900 */
{
- switch ( value )
+ switch (value)
{
- case 0x01: str="1 W (30 dBm)"; break;
- case 0x02: str="0,25 W (24 dBm)"; break;
- case 0x03: str="2 W (33 dBm)"; break;
- default: str="Not specified";
+ case 0x01: str = "1 W (30 dBm)"; break;
+ case 0x02: str = "0,25 W (24 dBm)"; break;
+ case 0x03: str = "2 W (33 dBm)"; break;
+ default: str = "Not specified";
}
}
- else if ( acc_type == 0x03 )
+ else if (acc_type == 0x03)
{
- switch ( value )
+ switch (value)
{
- case 0x01: str="1 W (30 dBm)"; break;
- case 0x02: str="0,25 W (24 dBm)"; break;
- case 0x03: str="4 W (36 dBm)"; break;
- default: str="Not specified";
+ case 0x01: str = "1 W (30 dBm)"; break;
+ case 0x02: str = "0,25 W (24 dBm)"; break;
+ case 0x03: str = "4 W (36 dBm)"; break;
+ default: str = "Not specified";
}
}
- else if ( acc_type <= 0x08 )
+ else if (acc_type <= 0x08)
{
- switch ( value )
+ switch (value)
{
- case 0x02: str="8 W (39 dBm)"; break;
- case 0x03: str="5 W (37 dBm)"; break;
- case 0x04: str="2 W (33 dBm)"; break;
- case 0x05: str="0,8 W (29 dBm)"; break;
- default: str="Not specified";
+ case 0x02: str = "8 W (39 dBm)"; break;
+ case 0x03: str = "5 W (37 dBm)"; break;
+ case 0x04: str = "2 W (33 dBm)"; break;
+ case 0x05: str = "0,8 W (29 dBm)"; break;
+ default: str = "Not specified";
}
}
else
- str="Not specified??";
+ str = "Not specified??";
proto_tree_add_text(tf_tree,
tvb, curr_offset-1-add_ocetets, 1+add_ocetets,
- "%s RF Power Capability, GMSK Power Class: %s (%u)", decode_bits_in_field(bit_offset, 3, value),str,value);
+ "%s RF Power Capability, GMSK Power Class: %s (%u)", decode_bits_in_field(bit_offset, 3, value), str, value);
- bit_offset+=3;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += 3;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* A5 Bits?
@@ -1575,15 +1603,16 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
GET_DATA;
/* analyse bits */
- if ((oct>>(32-bits_needed))==0)
+ if ((oct>>(32-bits_needed)) == 0)
{
proto_tree_add_text(tf_tree,
tvb, curr_offset-1-add_ocetets, 1+add_ocetets,
- "A5 Bits: Same values apply for parameters as in the immediately preceding Access capabilities field within this IE (%u)",oct>>(32-bits_needed));
+ "A5 Bits: Same values apply for parameters as in the immediately preceding Access capabilities field within this IE (%u)",
+ oct>>(32-bits_needed));
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
}
else
{
@@ -1591,14 +1620,14 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
proto_tree_add_text(tf_tree,
tvb, curr_offset-1-add_ocetets, 1+add_ocetets,
- "A5 Bits: A5 bits follow (%u)",oct>>(32-bits_needed));
+ "A5 Bits: A5 bits follow (%u)", oct>>(32-bits_needed));
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
- for (i=1; i<= 7 ; i++ )
+ for (i=1; i<=7 ; i++)
{
/*
* A5 Bits decoding
@@ -1607,20 +1636,20 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
GET_DATA;
/* analyse bits */
- switch ( oct>>(32-bits_needed) )
+ switch (oct>>(32-bits_needed))
{
- case 0x00: str="encryption algorithm not available"; break;
- case 0x01: str="encryption algorithm available"; break;
- default: str="This should not happen";
+ case 0x00: str = "encryption algorithm not available"; break;
+ case 0x01: str = "encryption algorithm available"; break;
+ default: str = "This should not happen";
}
proto_tree_add_text(tf_tree,
tvb, curr_offset-1-add_ocetets, 1+add_ocetets,
- "A5/%d: %s (%u)",i,str,oct>>(32-bits_needed));
+ "A5/%d: %s (%u)", i, str, oct>>(32-bits_needed));
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
}
}
@@ -1632,9 +1661,9 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_ctrled_early_cm_sending, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* PS
@@ -1644,9 +1673,9 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_pseudo_sync, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* VGCS
@@ -1656,9 +1685,9 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_vgcs, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* VBS
@@ -1668,9 +1697,9 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_vbs, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* Multislot capability?
@@ -1683,12 +1712,12 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
mc_item = proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_multislot_capability, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/* analyse bits */
- if (value==1)
+ if (value == 1)
{
mc_tree = proto_item_add_subtree(mc_item, ett_gsm_a_gm_msrac_multislot_capability);
/*
@@ -1698,21 +1727,21 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
GET_DATA;
/* analyse bits */
- if ((oct>>(32-bits_needed))==0)
+ if ((oct>>(32-bits_needed)) == 0)
{
proto_tree_add_text(mc_tree,
tvb, curr_offset-1-add_ocetets, 1+add_ocetets,
- "HSCSD multislot class: Bits are not available (%u)",oct>>(32-bits_needed));
+ "HSCSD multislot class: Bits are not available (%u)", oct>>(32-bits_needed));
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
}
else
{
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
bit_offset++;
/*
@@ -1722,10 +1751,10 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_hscsd_multi_slot_class, tvb, bit_offset, 5, ENC_BIG_ENDIAN);
- bit_offset+=5;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += 5;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
}
/*
@@ -1735,21 +1764,21 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
GET_DATA;
/* analyse bits */
- if ((oct>>(32-bits_needed))==0)
+ if ((oct>>(32-bits_needed)) == 0)
{
proto_tree_add_text(mc_tree,
tvb, curr_offset-1-add_ocetets, 1+add_ocetets,
- "GPRS multislot class: Bits are not available (%u)",oct>>(32-bits_needed));
+ "GPRS multislot class: Bits are not available (%u)", oct>>(32-bits_needed));
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
}
else
{
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
bit_offset++;
/*
@@ -1759,10 +1788,10 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_gprs_multi_slot_class, tvb, bit_offset, 5, ENC_BIG_ENDIAN);
- bit_offset+=5;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += 5;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* GPRS Extended Dynamic Allocation Capability
@@ -1772,9 +1801,9 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_gprs_ext_dyn_alloc_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
}
/*
@@ -1784,21 +1813,21 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
GET_DATA;
/* analyse bits */
- if ((oct>>(32-bits_needed))==0)
+ if ((oct>>(32-bits_needed)) == 0)
{
proto_tree_add_text(mc_tree,
tvb, curr_offset-1-add_ocetets, 1+add_ocetets,
- "SMS/SM values: Bits are not available (%u)",oct>>(32-bits_needed));
+ "SMS/SM values: Bits are not available (%u)", oct>>(32-bits_needed));
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
}
else
{
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
bit_offset++;
/*
@@ -1809,10 +1838,10 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
/* analyse bits */
proto_tree_add_bits_item(mc_tree, hf_gsm_a_gm_sms_value, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
- bit_offset+=4;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += 4;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* Switch-Measure value
@@ -1822,10 +1851,10 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
/* analyse bits */
proto_tree_add_bits_item(mc_tree, hf_gsm_a_gm_sm_value, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
- bit_offset+=4;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += 4;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
}
/*
@@ -1835,21 +1864,21 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
GET_DATA;
/* analyse bits */
- if ((oct>>(32-bits_needed))==0)
+ if ((oct>>(32-bits_needed)) == 0)
{
proto_tree_add_text(mc_tree,
tvb, curr_offset-1-add_ocetets, 1+add_ocetets,
- "ECSD multislot class: Bits are not available (%u)",oct>>(32-bits_needed));
+ "ECSD multislot class: Bits are not available (%u)", oct>>(32-bits_needed));
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
}
else
{
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
bit_offset++;
/*
@@ -1859,10 +1888,10 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_ecsd_multi_slot_class, tvb, bit_offset, 5, ENC_BIG_ENDIAN);
- bit_offset+=5;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += 5;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
}
/*
@@ -1872,21 +1901,21 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
GET_DATA;
/* analyse bits */
- if ((oct>>(32-bits_needed))==0)
+ if ((oct>>(32-bits_needed)) == 0)
{
proto_tree_add_text(mc_tree,
tvb, curr_offset-1-add_ocetets, 1+add_ocetets,
- "EGPRS multislot class: Bits are not available (%u)",oct>>(32-bits_needed));
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ "EGPRS multislot class: Bits are not available (%u)", oct>>(32-bits_needed));
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
bit_offset++;
}
else
{
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
bit_offset++;
/*
@@ -1896,10 +1925,10 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_egprs_multi_slot_class, tvb, bit_offset, 5, ENC_BIG_ENDIAN);
- bit_offset+=5;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += 5;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* EGPRS Extended Dynamic Allocation Capability
@@ -1909,9 +1938,9 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_egprs_ext_dyn_alloc_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
}
/*
@@ -1921,21 +1950,21 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
GET_DATA;
/* analyse bits */
- if ((oct>>(32-bits_needed))==0)
+ if ((oct>>(32-bits_needed)) == 0)
{
proto_tree_add_text(mc_tree,
tvb, curr_offset-1-add_ocetets, 1+add_ocetets,
- "DTM GPRS Multi Slot Class: Bits are not available (%u)",oct>>(32-bits_needed));
+ "DTM GPRS Multi Slot Class: Bits are not available (%u)", oct>>(32-bits_needed));
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
}
else
{
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
bit_offset++;
/*
@@ -1948,10 +1977,10 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
dtm_gprs_mslot = oct>>(32-bits_needed);
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_dtm_gprs_multi_slot_class, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
- bit_offset+=2;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += 2;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* Single Slot DTM
@@ -1961,9 +1990,9 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
proto_tree_add_bits_item(mc_tree, hf_gsm_a_gm_rac_single_slt_dtm, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* DTM EGPRS Multi Slot Class ?
@@ -1972,14 +2001,14 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
GET_DATA;
/* analyse bits */
- dtm_egprs_mslot = oct>>(32-bits_needed);
+ dtm_egprs_mslot = oct>>(32-bits_needed);
proto_tree_add_bits_item(mc_tree, hf_gsm_a_gm_rac_dtm_egprs_multi_slot_cls_pres, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
- if ((oct>>(32-bits_needed))==1)
+ if ((oct>>(32-bits_needed)) == 1)
{
/*
* DTM EGPRS Multi Slot Class
@@ -1988,10 +2017,10 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_dtm_egprs_multi_slot_class, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
- bit_offset+=2;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += 2;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
}
}
}
@@ -2004,12 +2033,12 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_8psk_pow_cap_pres, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/* analyse bits */
- if ((oct>>(32-bits_needed))==1)
+ if ((oct>>(32-bits_needed)) == 1)
{
/*
* 8PSK Power Capability
@@ -2018,22 +2047,22 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
GET_DATA;
/* analyse bits */
- switch ( oct>>(32-bits_needed) )
+ switch (oct>>(32-bits_needed))
{
- case 0x00: str="Reserved"; break;
- case 0x01: str="Power class E1"; break;
- case 0x02: str="Power class E2"; break;
- case 0x03: str="Power class E3"; break;
- default: str="This should not happen";
+ case 0x00: str = "Reserved"; break;
+ case 0x01: str = "Power class E1"; break;
+ case 0x02: str = "Power class E2"; break;
+ case 0x03: str = "Power class E3"; break;
+ default: str = "This should not happen";
}
proto_tree_add_text(tf_tree,
tvb, curr_offset-1-add_ocetets, 1+add_ocetets,
- "8PSK Power Capability: %s (%u)",str,oct>>(32-bits_needed));
- bit_offset+=2;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ "8PSK Power Capability: %s (%u)", str, oct>>(32-bits_needed));
+ bit_offset += 2;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
}
/*
@@ -2044,9 +2073,9 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_comp_int_meas_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* Revision Level Indicator
@@ -2056,9 +2085,9 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rel_lev_ind, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* UMTS FDD Radio Access Technology Capability
@@ -2068,9 +2097,9 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_umts_fdd_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* UMTS 3.84 Mcps TDD Radio Access Technology Capability
@@ -2080,9 +2109,9 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_umts_384_tdd_ra_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* CDMA 2000 Radio Access Technology Capability
@@ -2092,9 +2121,9 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_cdma2000_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* UMTS 1.28 Mcps TDD Radio Access Technology Capability
@@ -2104,9 +2133,9 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_umts_128_tdd_ra_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* GERAN Feature Package 1
@@ -2116,9 +2145,9 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_geran_feat_pkg, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* Extended DTM (E)GPRS Multi Slot Class
@@ -2128,21 +2157,21 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
GET_DATA;
/* analyse bits */
- if ((oct>>(32-bits_needed))==0)
+ if ((oct>>(32-bits_needed)) == 0)
{
proto_tree_add_text(tf_tree,
tvb, curr_offset-1-add_ocetets, 1+add_ocetets,
- "Extended DTM (E)GPRS Multi Slot Class: Bits are not available (%u)",oct>>(32-bits_needed));
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ "Extended DTM (E)GPRS Multi Slot Class: Bits are not available (%u)", oct>>(32-bits_needed));
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
bit_offset++;
}
else
{
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
bit_offset++;
/*
@@ -2152,36 +2181,36 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
GET_DATA;
/* analyse bits */
- switch ( (oct>>(32-bits_needed))|(dtm_gprs_mslot<<4) )
+ switch ((oct>>(32-bits_needed))|(dtm_gprs_mslot<<4))
{
- case 0x00: str="Unused. If received, it shall be interpreted as Multislot class 5 supported"; break;
- case 0x01: str="Unused. If received, it shall be interpreted as Multislot class 5 supported"; break;
- case 0x02: str="Unused. If received, it shall be interpreted as Multislot class 5 supported"; break;
- case 0x03: str="Unused. If received, it shall be interpreted as Multislot class 5 supported"; break;
- case 0x10: str="Multislot class 5 supported"; break;
- case 0x11: str="Multislot class 6 supported"; break;
- case 0x12: str="Unused. If received, it shall be interpreted as Multislot class 5 supported"; break;
- case 0x13: str="Unused. If received, it shall be interpreted as Multislot class 5 supported"; break;
- case 0x20: str="Multislot class 9 supported"; break;
- case 0x21: str="Multislot class 10 supported"; break;
- case 0x22: str="Unused. If received, it shall be interpreted as Multislot class 9 supported"; break;
- case 0x23: str="Unused. If received, it shall be interpreted as Multislot class 9 supported"; break;
- case 0x30: str="Multislot class 11 supported"; break;
- case 0x31: str="Unused. If received, it shall be interpreted as Multislot class 11 supported"; break;
- case 0x32: str="Unused. If received, it shall be interpreted as Multislot class 11 supported"; break;
- case 0x33: str="Unused. If received, it shall be interpreted as Multislot class 11 supported"; break;
- default: str="This should not happen";
+ case 0x00: str = "Unused. If received, it shall be interpreted as Multislot class 5 supported"; break;
+ case 0x01: str = "Unused. If received, it shall be interpreted as Multislot class 5 supported"; break;
+ case 0x02: str = "Unused. If received, it shall be interpreted as Multislot class 5 supported"; break;
+ case 0x03: str = "Unused. If received, it shall be interpreted as Multislot class 5 supported"; break;
+ case 0x10: str = "Multislot class 5 supported"; break;
+ case 0x11: str = "Multislot class 6 supported"; break;
+ case 0x12: str = "Unused. If received, it shall be interpreted as Multislot class 5 supported"; break;
+ case 0x13: str = "Unused. If received, it shall be interpreted as Multislot class 5 supported"; break;
+ case 0x20: str = "Multislot class 9 supported"; break;
+ case 0x21: str = "Multislot class 10 supported"; break;
+ case 0x22: str = "Unused. If received, it shall be interpreted as Multislot class 9 supported"; break;
+ case 0x23: str = "Unused. If received, it shall be interpreted as Multislot class 9 supported"; break;
+ case 0x30: str = "Multislot class 11 supported"; break;
+ case 0x31: str = "Unused. If received, it shall be interpreted as Multislot class 11 supported"; break;
+ case 0x32: str = "Unused. If received, it shall be interpreted as Multislot class 11 supported"; break;
+ case 0x33: str = "Unused. If received, it shall be interpreted as Multislot class 11 supported"; break;
+ default: str = "This should not happen";
}
proto_tree_add_text(tf_tree,
tvb, curr_offset-1-add_ocetets, 1+add_ocetets,
- "Extended DTM GPRS Multi Slot Class: %s (%u)",str,oct>>(32-bits_needed));
- bit_offset+=2;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ "Extended DTM GPRS Multi Slot Class: %s (%u)", str, oct>>(32-bits_needed));
+ bit_offset += 2;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
- if ( dtm_egprs_mslot <= 3 )
+ if (dtm_egprs_mslot <= 3)
{
/*
* Extended DTM EGPRS Multi Slot Class
@@ -2190,34 +2219,34 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
GET_DATA;
/* analyse bits */
- switch ( (oct>>(32-bits_needed))|(dtm_egprs_mslot<<4) )
+ switch ((oct>>(32-bits_needed))|(dtm_egprs_mslot<<4) )
{
- case 0x00: str="Unused. If received, it shall be interpreted as Multislot class 5 supported"; break;
- case 0x01: str="Unused. If received, it shall be interpreted as Multislot class 5 supported"; break;
- case 0x02: str="Unused. If received, it shall be interpreted as Multislot class 5 supported"; break;
- case 0x03: str="Unused. If received, it shall be interpreted as Multislot class 5 supported"; break;
- case 0x10: str="Multislot class 5 supported"; break;
- case 0x11: str="Multislot class 6 supported"; break;
- case 0x12: str="Unused. If received, it shall be interpreted as Multislot class 5 supported"; break;
- case 0x13: str="Unused. If received, it shall be interpreted as Multislot class 5 supported"; break;
- case 0x20: str="Multislot class 9 supported"; break;
- case 0x21: str="Multislot class 10 supported"; break;
- case 0x22: str="Unused. If received, it shall be interpreted as Multislot class 9 supported"; break;
- case 0x23: str="Unused. If received, it shall be interpreted as Multislot class 9 supported"; break;
- case 0x30: str="Multislot class 11 supported"; break;
- case 0x31: str="Unused. If received, it shall be interpreted as Multislot class 11 supported"; break;
- case 0x32: str="Unused. If received, it shall be interpreted as Multislot class 11 supported"; break;
- case 0x33: str="Unused. If received, it shall be interpreted as Multislot class 11 supported"; break;
- default: str="This should not happen";
+ case 0x00: str = "Unused. If received, it shall be interpreted as Multislot class 5 supported"; break;
+ case 0x01: str = "Unused. If received, it shall be interpreted as Multislot class 5 supported"; break;
+ case 0x02: str = "Unused. If received, it shall be interpreted as Multislot class 5 supported"; break;
+ case 0x03: str = "Unused. If received, it shall be interpreted as Multislot class 5 supported"; break;
+ case 0x10: str = "Multislot class 5 supported"; break;
+ case 0x11: str = "Multislot class 6 supported"; break;
+ case 0x12: str = "Unused. If received, it shall be interpreted as Multislot class 5 supported"; break;
+ case 0x13: str = "Unused. If received, it shall be interpreted as Multislot class 5 supported"; break;
+ case 0x20: str = "Multislot class 9 supported"; break;
+ case 0x21: str = "Multislot class 10 supported"; break;
+ case 0x22: str = "Unused. If received, it shall be interpreted as Multislot class 9 supported"; break;
+ case 0x23: str = "Unused. If received, it shall be interpreted as Multislot class 9 supported"; break;
+ case 0x30: str = "Multislot class 11 supported"; break;
+ case 0x31: str = "Unused. If received, it shall be interpreted as Multislot class 11 supported"; break;
+ case 0x32: str = "Unused. If received, it shall be interpreted as Multislot class 11 supported"; break;
+ case 0x33: str = "Unused. If received, it shall be interpreted as Multislot class 11 supported"; break;
+ default: str = "This should not happen";
}
proto_tree_add_text(tf_tree,
tvb, curr_offset-1-add_ocetets, 1+add_ocetets,
- "Extended DTM EGPRS Multi Slot Class: %s (%u)",str, oct>>(32-bits_needed));
- bit_offset+=2;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ "Extended DTM EGPRS Multi Slot Class: %s (%u)", str, oct>>(32-bits_needed));
+ bit_offset += 2;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
}
}
@@ -2229,9 +2258,9 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_mod_based_multi_slot_class_support, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* High Multislot Capability
@@ -2240,21 +2269,21 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
GET_DATA;
/* analyse bits */
- if ((oct>>(32-bits_needed))==0)
+ if ((oct>>(32-bits_needed)) == 0)
{
proto_tree_add_text(tf_tree,
tvb, curr_offset-1-add_ocetets, 1+add_ocetets,
- "High Multislot Capability: Bits are not available (%u)",oct>>(32-bits_needed));
+ "High Multislot Capability: Bits are not available (%u)", oct>>(32-bits_needed));
bit_offset++;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
}
else
{
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
bit_offset++;
/*
@@ -2272,10 +2301,10 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
" Release 5 Chap 10.5.5.12 Page 406",
oct>>(32-bits_needed),
oct>>(32-bits_needed));
- bit_offset+=2;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += 2;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
}
/*
@@ -2284,41 +2313,41 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
bits_needed = 1;
GET_DATA;
- value = tvb_get_bits8(tvb, bit_offset, 1);
+ value = tvb_get_bits8(tvb, bit_offset, 1);
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_geran_iu_mode_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
if (value)
{
/* GERAN Iu Mode Capabilities struct present */
- bits_needed = 4;
+ bits_needed = 4;
GET_DATA;
- value = tvb_get_bits8(tvb, bit_offset, 4);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ value = tvb_get_bits8(tvb, bit_offset, 4);
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
if (value)
{
/*
* FLO Iu Capability
*/
- bits_needed = 1;
+ bits_needed = 1;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_flo_iu_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
value--;
-
+
/* skip spare bits */
- bit_offset+=value;
- curr_bits_length -= value;
- oct <<= value;
- bits_in_oct -= value;
+ bit_offset += value;
+ curr_bits_length -= value;
+ oct <<= value;
+ bits_in_oct -= value;
}
}
@@ -2329,22 +2358,22 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
GET_DATA;
/* analyse bits */
- switch ( oct>>(32-bits_needed) )
+ switch (oct>>(32-bits_needed) )
{
- case 0x00: str="GMSK_MULTISLOT_POWER_PROFILE 0"; break;
- case 0x01: str="GMSK_MULTISLOT_POWER_PROFILE 1"; break;
- case 0x02: str="GMSK_MULTISLOT_POWER_PROFILE 2"; break;
- case 0x03: str="GMSK_MULTISLOT_POWER_PROFILE 3"; break;
- default: str="This should not happen";
+ case 0x00: str = "GMSK_MULTISLOT_POWER_PROFILE 0"; break;
+ case 0x01: str = "GMSK_MULTISLOT_POWER_PROFILE 1"; break;
+ case 0x02: str = "GMSK_MULTISLOT_POWER_PROFILE 2"; break;
+ case 0x03: str = "GMSK_MULTISLOT_POWER_PROFILE 3"; break;
+ default: str = "This should not happen";
}
proto_tree_add_text(tf_tree,
tvb, curr_offset-1-add_ocetets, 1+add_ocetets,
- "GMSK Multislot Power Profile: %s (%u)",str,oct>>(32-bits_needed));
- bit_offset+=2;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ "GMSK Multislot Power Profile: %s (%u)", str, oct>>(32-bits_needed));
+ bit_offset += 2;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* 8-PSK Multislot Power Profile
@@ -2353,312 +2382,312 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
GET_DATA;
/* analyse bits */
- switch ( oct>>(32-bits_needed) )
+ switch (oct>>(32-bits_needed) )
{
- case 0x00: str="8-PSK_MULTISLOT_POWER_PROFILE 0"; break;
- case 0x01: str="8-PSK_MULTISLOT_POWER_PROFILE 1"; break;
- case 0x02: str="8-PSK_MULTISLOT_POWER_PROFILE 2"; break;
- case 0x03: str="8-PSK_MULTISLOT_POWER_PROFILE 3"; break;
- default: str="This should not happen";
+ case 0x00: str = "8-PSK_MULTISLOT_POWER_PROFILE 0"; break;
+ case 0x01: str = "8-PSK_MULTISLOT_POWER_PROFILE 1"; break;
+ case 0x02: str = "8-PSK_MULTISLOT_POWER_PROFILE 2"; break;
+ case 0x03: str = "8-PSK_MULTISLOT_POWER_PROFILE 3"; break;
+ default: str = "This should not happen";
}
- proto_tree_add_text(tf_tree,
- tvb, curr_offset-1-add_ocetets, 1+add_ocetets,
- "8-PSK Multislot Power Profile: %s (%u)",str,oct>>(32-bits_needed));
- bit_offset+=2;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ proto_tree_add_text(tf_tree, tvb, curr_offset-1-add_ocetets, 1+add_ocetets,
+ "8-PSK Multislot Power Profile: %s (%u)", str, oct>>(32-bits_needed));
+ bit_offset += 2;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* Release 6
*/
-
+
/*
* Multiple TBF Capability
*/
- bits_needed = 1;
+ bits_needed = 1;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_mult_tbf_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
-
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
+
/*
* Downlink Advanced Receiver Performance
*/
- bits_needed = 2;
+ bits_needed = 2;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_down_adv_rec_perf, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
-
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
+
/*
* Extended RLC/MAC Control Message Segmentation Capability
*/
- bits_needed = 1;
+ bits_needed = 1;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_ext_rlc_mac_ctrl_msg_seg_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* DTM Enhancements Capability
*/
- bits_needed = 1;
+ bits_needed = 1;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_dtm_enh_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* DTM GPRS High Multi Slot Class & DTM EGPRS High Multi Slot Class
*/
bits_needed = 1;
GET_DATA;
- if ((oct>>(32-bits_needed))==0)
+ if ((oct>>(32-bits_needed)) == 0)
{
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
}
else
{
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* DTM GPRS High Multi Slot Class
*/
- bits_needed = 3;
+ bits_needed = 3;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_dtm_gprs_high_multi_slot_class, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
bits_needed = 1;
GET_DATA;
- if ((oct>>(32-bits_needed))==0)
+ if ((oct>>(32-bits_needed)) == 0)
{
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
}
else
{
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* DTM EGPRS High Multi Slot Class
*/
- bits_needed = 3;
+ bits_needed = 3;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_dtm_egprs_high_multi_slot_class, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
}
}
-
+
/*
* PS Handover Capability
*/
- bits_needed = 1;
+ bits_needed = 1;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_ps_ho_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
-
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
+
/*
* Release 7
*/
-
+
/*
* DTM Handover Capability
*/
- bits_needed = 1;
+ bits_needed = 1;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_dtm_ho_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* Multislot Capability Reduction for Downlink Dual Carrier & Downlink Dual Carrier for DTM Capability
*/
+
bits_needed = 1;
GET_DATA;
- if ((oct>>(32-bits_needed))==0)
+ if ((oct>>(32-bits_needed)) == 0)
{
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
}
else
{
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* Multislot Capability Reduction for Downlink Dual Carrier
*/
- bits_needed = 3;
+ bits_needed = 3;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_multi_slot_cap_red_down_dual_carrier, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* Downlink Dual Carrier for DTM Capability
*/
- bits_needed = 1;
+ bits_needed = 1;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_down_dual_carrier_dtm_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
}
/*
* Flexible Timeslot Assignment
*/
- bits_needed = 1;
+ bits_needed = 1;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_flex_ts_assign, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
-
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
+
/*
* GAN PS Handover Capability
*/
- bits_needed = 1;
+ bits_needed = 1;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_gan_ps_ho_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
-
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
+
/*
* RLC Non-persistent Mode
*/
- bits_needed = 1;
+ bits_needed = 1;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_rlc_non_pers_mode, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
-
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
+
/*
* Reduced Latency Capability
*/
- bits_needed = 1;
+ bits_needed = 1;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_reduced_lat_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
-
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
+
/*
* Uplink EGPRS2
*/
- bits_needed = 2;
+ bits_needed = 2;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_ul_egprs2, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
-
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
+
/*
* Downlink EGPRS2
*/
- bits_needed = 2;
+ bits_needed = 2;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_dl_egprs2, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
-
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
+
/*
* Release 8
*/
-
+
/*
* E-UTRA FDD support
*/
- bits_needed = 1;
+ bits_needed = 1;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_eutra_fdd_support, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
-
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
+
/*
* E-UTRA TDD support
*/
- bits_needed = 1;
+ bits_needed = 1;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_eutra_tdd_support, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
-
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
+
/*
* GERAN to E-UTRA support in GERAN packet transfer mode
*/
- bits_needed = 2;
+ bits_needed = 2;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_geran_to_eutra_support_in_geran_ptm, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
-
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
+
/*
* Priority-based reselection support
*/
- bits_needed = 1;
+ bits_needed = 1;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_prio_based_resel_support, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
-
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
+
/*
* Release 9
*/
@@ -2668,128 +2697,176 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
*/
bits_needed = 1;
GET_DATA;
- if ((oct>>(32-bits_needed))==0)
+ if ((oct>>(32-bits_needed)) == 0)
{
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
}
else
{
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* Alternative EFTA Multislot Class
*/
- bits_needed = 4;
+ bits_needed = 4;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_alt_efta_multi_slot_class, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
-
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
+
/*
* EFTA Multislot Capability Reduction for Downlink Dual Carrier
*/
- bits_needed = 3;
+ bits_needed = 3;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_efta_multi_slot_cap_red_down_dual_carrier, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
}
-
+
/*
* Indication of Upper Layer PDU Start Capability for RLC UM
*/
bits_needed = 1;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_ind_up_layer_pdu_start_cap_for_rlc_um, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* EMST Capability
*/
- bits_needed = 1;
+ bits_needed = 1;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_emst_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
/*
* MTTI Capability
*/
- bits_needed = 1;
+ bits_needed = 1;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_mtti_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
+
+ /*
+ * UTRA CSG Cells Reporting
+ */
+ bits_needed = 1;
+ GET_DATA;
+ proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_utra_csg_cell_report, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
+
+ /*
+ * E-UTRA CSG Cells Reporting
+ */
+ bits_needed = 1;
+ GET_DATA;
+ proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_eutra_csg_cell_report, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
+
+ /*
+ * Release 10
+ */
+
+ /*
+ * DTR Capability
+ */
+ bits_needed = 1;
+ GET_DATA;
+ proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_dtr_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset += bits_needed;
curr_bits_length -= bits_needed;
oct <<= bits_needed;
bits_in_oct -= bits_needed;
- /*
- * UTRA CSG Cells Reporting
+ /*
+ * EMSR Capability
*/
bits_needed = 1;
GET_DATA;
- proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_utra_csg_cell_report, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
+ proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_emsr_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset += bits_needed;
curr_bits_length -= bits_needed;
oct <<= bits_needed;
bits_in_oct -= bits_needed;
- /*
- * E-UTRA CSG Cells Reporting
+ /*
+ * Fast Downlink Frequency Switching Capability
*/
bits_needed = 1;
GET_DATA;
- proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_eutra_csg_cell_report, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset+=bits_needed;
+ proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_fast_down_freq_switch_cap, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset += bits_needed;
curr_bits_length -= bits_needed;
oct <<= bits_needed;
bits_in_oct -= bits_needed;
- /*
+ /*
+ * TIGHTER Capability
+ */
+ bits_needed = 2;
+ GET_DATA;
+ proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_tighter_cap, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
+ bit_offset += bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
+
+ /*
* we are too long ... so jump over it
*/
- while ( curr_bits_length > 0 )
+ while (curr_bits_length > 0)
{
- if ( curr_bits_length > 8 )
+ if (curr_bits_length > 8)
bits_needed = 8;
else
bits_needed = curr_bits_length;
GET_DATA;
- curr_bits_length -= bits_needed;
- oct <<= bits_needed;
- bits_in_oct -= bits_needed;
+ curr_bits_length -= bits_needed;
+ oct <<= bits_needed;
+ bits_in_oct -= bits_needed;
}
- } while ( 1 );
+ } while (1);
- curr_offset+= curr_len;
+ curr_offset += curr_len;
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/*
* [9] 10.5.5.14
*/
static const range_string gmm_cause_vals[] = {
- { 0x00, 0x01, "Protocol error, unspecified(Not def in v8.6.0)"},
+ { 0x00, 0x01, "Protocol error, unspecified"},
{ 0x02, 0x02, "IMSI unknown in HLR"},
{ 0x03, 0x03, "Illegal MS"},
{ 0x04, 0x04, "IMSI unknown in VLR"}, /* Annex G.1 */
@@ -2806,27 +2883,23 @@ static const range_string gmm_cause_vals[] = {
{ 0x0f, 0x0f, "No Suitable Cells In Location Area"},
{ 0x10, 0x10, "MSC temporarily not reachable"},
{ 0x11, 0x11, "Network failure"},
- { 0x12, 0x13, "Protocol error, unspecified(Not def in v8.6.0)"},
+ { 0x12, 0x13, "Protocol error, unspecified"},
{ 0x14, 0x14, "MAC failure"},
{ 0x15, 0x15, "Synch failure"},
{ 0x16, 0x16, "Congestion"},
{ 0x17, 0x17, "GSM authentication unacceptable"},
- { 0x18, 0x18, "Protocol error, unspecified(Not def in v8.6.0)"},
+ { 0x18, 0x18, "Protocol error, unspecified"},
{ 0x19, 0x19, "Not authorized for this CSG"},
{ 0x20, 0x20, "Service option not supported"}, /* Annex G.4 */
{ 0x21, 0x21, "Requested service option not subscribed"}, /* Annex G.4 */
{ 0x22, 0x22, "Service option temporarily out of order"}, /* Annex G.4 */
-
- { 0x23, 0x25, "Protocol error, unspecified(Not def in v8.6.0)"},
-
+ { 0x23, 0x25, "Protocol error, unspecified"},
{ 0x26, 0x26, "Call cannot be identified(non-GPRS services only)"}, /* Annex G.4 */
- { 0x27, 0x27, "Protocol error, unspecified(Not def in v8.6.0)"},
+ { 0x27, 0x27, "Protocol error, unspecified"},
{ 0x28, 0x28, "No PDP context activated"},
- { 0x29, 0x2f, "Protocol error, unspecified(Not def in v8.6.0)"},
+ { 0x29, 0x2f, "Protocol error, unspecified"},
{ 0x30, 0x3f, "Retry upon entry into a new cell"},
-
- { 0x40, 0x5e, "Protocol error, unspecified(Not def in v8.6.0)"},
-
+ { 0x40, 0x5e, "Protocol error, unspecified"},
{ 0x5f, 0x5f, "Semantically incorrect message"},
{ 0x60, 0x60, "Invalid mandatory information"},
{ 0x61, 0x61, "Message type non-existent or not implemented"},
@@ -2834,11 +2907,9 @@ static const range_string gmm_cause_vals[] = {
{ 0x63, 0x63, "Information element non-existent or not implemented"},
{ 0x64, 0x64, "Conditional IE error"},
{ 0x65, 0x65, "Message not compatible with the protocol state"},
-
- { 0x66, 0x6e, "Protocol error, unspecified(Not def in v8.6.0)"},
-
+ { 0x66, 0x6e, "Protocol error, unspecified"},
{ 0x6f, 0x6f, "Protocol error, unspecified"},
- { 0x70, 0xff, "Protocol error, unspecified(Not def in v8.6.0)"},
+ { 0x70, 0xff, "Protocol error, unspecified"},
{ 0, 0, NULL }
};
/* NOTE 1 TS 124 008 V8.6.0 (2009-07)
@@ -2852,7 +2923,7 @@ static const range_string gmm_cause_vals[] = {
static guint16
de_gmm_cause(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
curr_offset = offset;
@@ -2862,7 +2933,7 @@ de_gmm_cause(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 of
/* no length check possible */
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/*
@@ -2871,13 +2942,13 @@ de_gmm_cause(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 of
guint16
de_gmm_rai(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- proto_tree *subtree;
- proto_item *item;
- guint32 mcc;
- guint32 mnc;
- guint32 lac;
- guint32 rac;
- guint32 curr_offset;
+ proto_tree *subtree;
+ proto_item *item;
+ guint32 mcc;
+ guint32 mnc;
+ guint32 lac;
+ guint32 rac;
+ guint32 curr_offset;
curr_offset = offset;
@@ -2896,7 +2967,7 @@ de_gmm_rai(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset,
item = proto_tree_add_text(tree,
tvb, curr_offset, 6,
"Routing area identification: %x-%x-%u-%u",
- mcc,mnc,lac,rac);
+ mcc, mnc, lac, rac);
subtree = proto_item_add_subtree(item, ett_gmm_rai);
dissect_e212_mcc_mnc(tvb, pinfo, subtree, offset, TRUE);
@@ -2904,19 +2975,19 @@ de_gmm_rai(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset,
proto_tree_add_item(subtree, hf_gsm_a_lac, tvb, curr_offset+3, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(subtree, hf_gsm_a_gm_rac, tvb, curr_offset+5, 1, ENC_BIG_ENDIAN);
- curr_offset+=6;
- if (add_string)
- {
- if (add_string[0] == '\0')
- {
- g_snprintf(add_string, string_len, " - RAI: %x-%x-%u-%u", mcc,mnc,lac,rac);
- }
- }
+ curr_offset += 6;
+ if (add_string)
+ {
+ if (add_string[0] == '\0')
+ {
+ g_snprintf(add_string, string_len, " - RAI: %x-%x-%u-%u", mcc, mnc, lac, rac);
+ }
+ }
/* no length check possible */
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/*
@@ -2935,9 +3006,9 @@ de_gmm_rai2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset,
static guint16
de_gmm_update_res(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
- guint32 curr_offset;
- const gchar *str;
+ guint8 oct;
+ guint32 curr_offset;
+ const gchar *str;
curr_offset = offset;
@@ -2946,11 +3017,11 @@ de_gmm_update_res(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
/* IMPORTANT - IT'S ASSUMED THAT THE INFORMATION IS IN THE HIGHER NIBBLE */
oct >>= 4;
- switch(oct&7)
+ switch (oct&7)
{
- case 0: str="RA updated"; break;
- case 1: str="combined RA/LA updated"; break;
- default: str="reserved";
+ case 0: str = "RA updated"; break;
+ case 1: str = "combined RA/LA updated"; break;
+ default: str = "reserved";
}
proto_tree_add_text(tree,
@@ -2963,7 +3034,7 @@ de_gmm_update_res(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
/* no length check possible */
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/*
@@ -2980,8 +3051,8 @@ static const value_string gsm_a_gm_update_type_vals[] = {
static guint16
de_gmm_update_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- proto_item *tf = NULL;
- proto_tree *tf_tree = NULL;
+ proto_item *tf;
+ proto_tree *tf_tree;
proto_tree_add_bits_item(tree, hf_gsm_a_gm_ciph_key_seq_num, tvb, offset << 3, 4, ENC_BIG_ENDIAN);
@@ -2989,13 +3060,13 @@ de_gmm_update_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
tvb, offset, 1,
"Update Type");
- tf_tree = proto_item_add_subtree(tf, ett_gmm_update_type );
+ tf_tree = proto_item_add_subtree(tf, ett_gmm_update_type);
proto_tree_add_item(tf_tree, hf_gsm_a_gm_for, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tf_tree, hf_gsm_a_gm_update_type, tvb, offset, 1, ENC_BIG_ENDIAN);
/* no length check possible */
- return(1);
+ return (1);
}
/*
@@ -3008,7 +3079,7 @@ de_gmm_ac_ref_nr(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint3
proto_tree_add_bits_item(tree, hf_gsm_a_gm_ac_ref_nr, tvb, (offset << 3) + 4, 4, ENC_BIG_ENDIAN);
/* no length check possible */
- return(1);
+ return (1);
}
/*
@@ -3021,7 +3092,7 @@ de_gmm_ac_ref_nr_h(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
proto_tree_add_bits_item(tree, hf_gsm_a_gm_ac_ref_nr, tvb, offset << 3, 4, ENC_BIG_ENDIAN);
/* no length check possible */
- return(1);
+ return (1);
}
/*
@@ -3043,15 +3114,15 @@ de_gmm_service_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
bit_offset = offset << 3;
proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset += 1;
+ bit_offset += 1;
proto_tree_add_bits_item(tree, hf_gsm_a_gm_serv_type, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
- bit_offset += 3;
+ bit_offset += 3;
proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset += 1;
+ bit_offset += 1;
proto_tree_add_bits_item(tree, hf_gsm_a_gm_ciph_key_seq_num, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
/* no length check possible */
- return(1);
+ return (1);
}
/*
@@ -3110,47 +3181,45 @@ de_gmm_ps_lcs_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 o
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/*
* [7] 10.5.5.23
*/
+static const true_false_string gsm_a_gm_lcs_molr_value = {
+ "LCS-MOLR via PS domain supported",
+ "LCS-MOLR via PS domain not supported"
+};
+static const true_false_string gsm_a_gm_ims_vops_value = {
+ "IMS voice over PS session supported in Iu mode, but not supported in A/Gb mode",
+ "IMS voice over PS session in Iu mode and A/Gb mode not supported"
+};
+static const true_false_string gsm_a_gm_emc_bs_value = {
+ "Emergency bearer services supported in Iu mode, but not supported in A/Gb mode",
+ "Emergency bearer services in Iu mode and A/Gb mode not supported"
+};
static guint16
de_gmm_net_feat_supp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
- guint32 curr_offset;
- const gchar *str;
+ guint32 curr_offset;
curr_offset = offset;
- oct = tvb_get_guint8(tvb, curr_offset);
-
- switch(oct&8)
- {
- case 8: str="LCS-MOLR via PS domain not supported"; break;
- default: str="LCS-MOLR via PS domain supported";
- }
-
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "Network Feature Support: %s (%u)",
- str,
- (oct>>3)&1);
-
+ proto_tree_add_item(tree, hf_gsm_a_gm_lcs_molr, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_gm_mbms, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_gm_ims_vops, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_gm_emc_bs, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
curr_offset++;
- /* no length check possible */
-
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/* [7] 10.5.5.24 Inter RAT information container */
static guint16
de_gmm_rat_info_container(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
tvbuff_t *rrc_irat_ho_info_tvb;
curr_offset = offset;
@@ -3159,9 +3228,9 @@ de_gmm_rat_info_container(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, g
defined in 3GPP TS 25.331 [23c]. If this field includes padding bits, they are defined in 3GPP TS 25.331 [23c].*/
rrc_irat_ho_info_tvb = tvb_new_subset(tvb, curr_offset, len, len);
if (rrc_irat_ho_info_handle)
- call_dissector(rrc_irat_ho_info_handle, rrc_irat_ho_info_tvb,pinfo , tree);
+ call_dissector(rrc_irat_ho_info_handle, rrc_irat_ho_info_tvb, pinfo, tree);
else
- proto_tree_add_text(tree, tvb, curr_offset, len,"INTER RAT HANDOVER INFO - Not decoded");
+ proto_tree_add_text(tree, tvb, curr_offset, len, "INTER RAT HANDOVER INFO - Not decoded");
return len;
@@ -3184,14 +3253,14 @@ de_gmm_req_ms_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
guint32 bit_offset;
curr_offset = offset;
- bit_offset = (curr_offset<<3)+4;
+ bit_offset = (curr_offset<<3)+4;
proto_tree_add_bits_item(tree, hf_gsm_a_gm_req_ms_info_irat, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
proto_tree_add_bits_item(tree, hf_gsm_a_gm_req_ms_info_irat2, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
- /*bit_offset+=2;
+ /*bit_offset += 2;
curr_offset++;*/
return len;
@@ -3205,7 +3274,7 @@ de_gmm_req_ms_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
static guint16
de_gmm_eutran_irat_info_container(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
tvbuff_t *lte_rrc_ue_eutra_cap_tvb;
curr_offset = offset;
@@ -3216,7 +3285,7 @@ de_gmm_eutran_irat_info_container(tvbuff_t *tvb, proto_tree *tree, packet_info *
if (lte_rrc_ue_eutra_cap_handle)
call_dissector(lte_rrc_ue_eutra_cap_handle, lte_rrc_ue_eutra_cap_tvb, pinfo, tree);
else
- proto_tree_add_text(tree, tvb, curr_offset, len,"E-UTRAN Inter RAT information container - Not decoded");
+ proto_tree_add_text(tree, tvb, curr_offset, len, "E-UTRAN Inter RAT information container - Not decoded");
return len;
}
@@ -3241,30 +3310,60 @@ de_gmm_voice_domain_pref(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
guint32 bit_offset;
curr_offset = offset;
- bit_offset = curr_offset<<3;
+ bit_offset = curr_offset<<3;
proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, bit_offset, 5, ENC_BIG_ENDIAN);
- bit_offset+=5;
+ bit_offset += 5;
proto_tree_add_bits_item(tree, hf_gsm_a_gm_ue_usage_setting, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
proto_tree_add_bits_item(tree, hf_gsm_a_gm_voice_domain_pref_for_eutran, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
- /*bit_offset+=2;
+ /*bit_offset += 2;
curr_offset++;*/
return len;
}
+/* [10] 10.5.5.29 P-TMSI type */
+static const true_false_string gsm_a_gm_ptmsi_type_value = {
+ "Mapped P-TMSI",
+ "Native P-TMSI"
+};
+
+static guint16
+de_gmm_ptmsi_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset, bit_offset;
+
+ curr_offset = offset;
+ bit_offset = (curr_offset<<3)+4;
+
+ proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
+ bit_offset += 3;
+ proto_tree_add_bits_item(tree, hf_gsm_a_gm_ptmsi_type, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+
+ return (curr_offset - offset);
+}
+/* [10] 10.5.5.30 Location Area Identification 2 */
+static guint16
+de_gmm_lai_2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len)
+{
+ /* The Location Area Identification 2 value is coded as octet 2 to 6 of the */
+ /* Location Area Identification information element */
+ return de_lai(tvb, tree, pinfo, offset, len, add_string, string_len);
+}
+
/*
* [7] 10.5.7.1
*/
static guint16
de_gc_context_stat(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
- guint16 pdp_nr;
- guint32 curr_offset;
- proto_item *tf = NULL;
- proto_tree *tf_tree = NULL;
+ guint8 oct;
+ guint16 pdp_nr;
+ guint32 curr_offset;
+ proto_item *tf;
+ proto_tree *tf_tree;
curr_offset = offset;
@@ -3272,20 +3371,20 @@ de_gc_context_stat(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
tvb, curr_offset, 1,
"PDP Context Status");
- tf_tree = proto_item_add_subtree(tf, ett_gmm_context_stat );
+ tf_tree = proto_item_add_subtree(tf, ett_gmm_context_stat);
oct = tvb_get_guint8(tvb, curr_offset);
- for ( pdp_nr=0;pdp_nr<16; pdp_nr++ )
+ for (pdp_nr=0; pdp_nr<16; pdp_nr++)
{
- if ( pdp_nr == 8 )
+ if (pdp_nr == 8)
{
curr_offset++;
oct = tvb_get_guint8(tvb, curr_offset);
}
proto_tree_add_text(tf_tree,
tvb, curr_offset, 1,
- "NSAPI %d: %s (%u)",pdp_nr,
+ "NSAPI %d: %s (%u)", pdp_nr,
pdp_str[oct&1],
oct&1);
oct>>=1;
@@ -3295,7 +3394,7 @@ de_gc_context_stat(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/*
@@ -3304,21 +3403,21 @@ de_gc_context_stat(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
static guint16
de_gc_radio_prio(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
- guint32 curr_offset;
- const gchar *str;
+ guint8 oct;
+ guint32 curr_offset;
+ const gchar *str;
curr_offset = offset;
oct = tvb_get_guint8(tvb, curr_offset);
- switch ( oct&7 )
+ switch (oct&7)
{
- case 1: str="priority level 1 (highest)"; break;
- case 2: str="priority level 2"; break;
- case 3: str="priority level 3"; break;
- case 4: str="priority level 4 (lowest)"; break;
- default: str="priority level 4 (lowest)";
+ case 1: str = "priority level 1 (highest)"; break;
+ case 2: str = "priority level 2"; break;
+ case 3: str = "priority level 3"; break;
+ case 4: str = "priority level 4 (lowest)"; break;
+ default: str = "priority level 4 (lowest)";
}
proto_tree_add_text(tree,
@@ -3329,7 +3428,7 @@ de_gc_radio_prio(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint3
curr_offset++;
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/*
@@ -3346,40 +3445,38 @@ static const value_string gsm_a_gm_gprs_timer_unit_vals[] = {
static guint16
de_gc_timer(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
- guint16 val;
- const gchar *str;
- proto_tree *subtree;
- proto_item *item;
+ guint8 oct;
+ guint16 val;
+ const gchar *str;
+ proto_tree *subtree;
+ proto_item *item = NULL;
oct = tvb_get_guint8(tvb, offset);
val = oct&0x1f;
- switch(oct>>5)
+ switch (oct>>5)
{
- case 0: str="sec"; val*=2; break;
- case 1: str="min"; break;
- case 2: str="min"; val*=6; break;
- case 7:
- proto_tree_add_text(tree,
- tvb, offset, 1,
- "GPRS Timer: timer is deactivated");
-
- default: str="min";
+ case 0: str = "sec"; val*=2; break;
+ case 1: str = "min"; break;
+ case 2: str = "min"; val*=6; break;
+ case 7: str = "";
+ item = proto_tree_add_text(tree, tvb, offset, 1,
+ "GPRS Timer: timer is deactivated");
+ break;
+ default: str = "min";
}
- item = proto_tree_add_text(tree,
- tvb, offset, 1,
- "GPRS Timer: %u %s",
- val,
- str);
+ if (item == NULL) {
+ item = proto_tree_add_text(tree, tvb, offset, 1,
+ "GPRS Timer: %u %s", val, str);
+ }
subtree = proto_item_add_subtree(item, ett_gmm_gprs_timer);
proto_tree_add_item(subtree, hf_gsm_a_gm_gprs_timer_unit, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(subtree, hf_gsm_a_gm_gprs_timer_value, tvb, offset, 1, ENC_BIG_ENDIAN);
/* no length check possible */
- return(1);
+ return (1);
}
/*
@@ -3388,10 +3485,12 @@ de_gc_timer(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 off
static guint16
de_gc_timer2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string, int string_len _U_)
{
- guint8 oct;
- guint16 val;
- guint32 curr_offset;
- const gchar *str;
+ guint8 oct;
+ guint16 val;
+ guint32 curr_offset;
+ const gchar *str = NULL;
+ proto_tree *subtree;
+ proto_item *item = NULL;
curr_offset = offset;
@@ -3399,28 +3498,88 @@ de_gc_timer2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 of
val = oct&0x1f;
- switch(oct>>5)
+ switch (oct>>5)
{
- case 0: str="sec"; val*=2; break;
- case 1: str="min"; break;
- case 2: str="min"; val*=6; break;
+ case 0: str = "sec"; val*=2; break;
+ case 1: str = "min"; break;
+ case 2: str = "min"; val*=6; break;
case 7:
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "GPRS Timer: timer is deactivated");
+ item = proto_tree_add_text(tree, tvb, curr_offset, 1,
+ "GPRS Timer: timer is deactivated");
+ break;
+ default: str = "min";
+ }
- default: str="min";
+ if (item == NULL) {
+ item = proto_tree_add_text(tree, tvb, curr_offset, 1,
+ "GPRS Timer: %u %s %s",
+ val, str, add_string ? add_string : "");
}
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "GPRS Timer: %u %s %s (%u)",
- val,
- str, add_string ? add_string : "", oct);
+ subtree = proto_item_add_subtree(item, ett_gmm_gprs_timer);
+ proto_tree_add_item(subtree, hf_gsm_a_gm_gprs_timer2_unit, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_gsm_a_gm_gprs_timer2_value, tvb, offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+ return (curr_offset - offset);
+}
+
+/*
+ * [10] 10.5.7.4a
+ */
+static const value_string gsm_a_gm_gprs_timer3_unit_vals[] = {
+ { 0x00, "value is incremented in multiples of 10 minutes" },
+ { 0x01, "value is incremented in multiples of 1 hour" },
+ { 0x02, "value is incremented in multiples of 10 hours" },
+ { 0x03, "value is incremented in multiples of 2 seconds" },
+ { 0x04, "value is incremented in multiples of 30 seconds" },
+ { 0x05, "value is incremented in multiples of 1 minute" },
+ { 0x07, "value indicates that the timer is deactivated" },
+ { 0, NULL }
+};
+
+static guint16
+de_gc_timer3(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint8 oct;
+ guint16 val;
+ guint32 curr_offset;
+ const gchar *str = NULL;
+ proto_tree *subtree;
+ proto_item *item = NULL;
+
+ curr_offset = offset;
+
+ oct = tvb_get_guint8(tvb, curr_offset);
+
+ val = oct&0x1f;
+
+ switch (oct>>5)
+ {
+ case 0: str = "min"; val*=10; break;
+ case 1: str = "hr"; break;
+ case 2: str = "hr"; val*=10; break;
+ case 3: str = "sec"; val*=2; break;
+ case 4: str = "sec"; val*=30; break;
+ case 5: str = "min"; break;
+ case 7:
+ item = proto_tree_add_text(tree, tvb, curr_offset, 1,
+ "GPRS Timer: timer is deactivated");
+ break;
+ default: str = "hr";
+ }
+
+ if (item == NULL) {
+ item = proto_tree_add_text(tree, tvb, curr_offset, 1,
+ "GPRS Timer: %u %s", val, str);
+ }
+
+ subtree = proto_item_add_subtree(item, ett_gmm_gprs_timer);
+ proto_tree_add_item(subtree, hf_gsm_a_gm_gprs_timer3_unit, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_gsm_a_gm_gprs_timer3_value, tvb, offset, 1, ENC_BIG_ENDIAN);
curr_offset++;
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/*
@@ -3429,9 +3588,9 @@ de_gc_timer2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 of
static guint16
de_gc_radio_prio2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
- guint32 curr_offset;
- const gchar *str;
+ guint8 oct;
+ guint32 curr_offset;
+ const gchar *str;
curr_offset = offset;
@@ -3440,13 +3599,13 @@ de_gc_radio_prio2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
/* IMPORTANT - IT'S ASSUMED THAT THE INFORMATION IS IN THE HIGHER NIBBLE */
oct >>= 4;
- switch ( oct&7 )
+ switch (oct&7)
{
- case 1: str="priority level 1 (highest)"; break;
- case 2: str="priority level 2"; break;
- case 3: str="priority level 3"; break;
- case 4: str="priority level 4 (lowest)"; break;
- default: str="priority level 4 (lowest)";
+ case 1: str = "priority level 1 (highest)"; break;
+ case 2: str = "priority level 2"; break;
+ case 3: str = "priority level 3"; break;
+ case 4: str = "priority level 4 (lowest)"; break;
+ default: str = "priority level 4 (lowest)";
}
proto_tree_add_text(tree,
@@ -3457,7 +3616,7 @@ de_gc_radio_prio2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
curr_offset++;
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/*
@@ -3466,11 +3625,11 @@ de_gc_radio_prio2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
static guint16
de_gc_mbms_context_stat(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guint i;
- guint8 oct, j;
- proto_item *tf = NULL;
- proto_tree *tf_tree = NULL;
+ guint32 curr_offset;
+ guint i;
+ guint8 oct, j;
+ proto_item *tf;
+ proto_tree *tf_tree;
curr_offset = offset;
@@ -3478,7 +3637,7 @@ de_gc_mbms_context_stat(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
tvb, curr_offset, 1,
"MBMS Context Status");
- tf_tree = proto_item_add_subtree(tf, ett_gmm_context_stat );
+ tf_tree = proto_item_add_subtree(tf, ett_gmm_context_stat);
for (i=0; i<len; i++)
{
@@ -3488,7 +3647,7 @@ de_gc_mbms_context_stat(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
{
proto_tree_add_text(tf_tree,
tvb, curr_offset, 1,
- "NSAPI %d: %s (%u)",128+i*8+j,
+ "NSAPI %d: %s (%u)", 128+i*8+j,
pdp_str[oct&1],
oct&1);
oct>>=1;
@@ -3496,7 +3655,7 @@ de_gc_mbms_context_stat(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
curr_offset++;
}
- return(len);
+ return (len);
}
/*
@@ -3514,7 +3673,7 @@ de_gc_uplink_data_stat(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
guint32 bit_offset;
curr_offset = offset;
- bit_offset = curr_offset<<3;
+ bit_offset = curr_offset<<3;
proto_tree_add_bits_item(tree, hf_gsm_a_gm_nsapi_7_ul_stat, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
@@ -3523,7 +3682,7 @@ de_gc_uplink_data_stat(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
proto_tree_add_bits_item(tree, hf_gsm_a_gm_nsapi_5_ul_stat, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, bit_offset, 5, ENC_BIG_ENDIAN);
- bit_offset+=5;
+ bit_offset += 5;
curr_offset++;
proto_tree_add_bits_item(tree, hf_gsm_a_gm_nsapi_15_ul_stat, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
@@ -3544,7 +3703,32 @@ de_gc_uplink_data_stat(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
bit_offset++;
curr_offset++;
*/
- return(len);
+ return (len);
+}
+
+/*
+ * [8] 10.5.7.8 Device properties
+ */
+static const true_false_string gsm_a_gm_device_prop_low_prio_value = {
+ "MS is configured for NAS signalling low priority",
+ "MS is not configured for NAS signalling low priority"
+};
+
+static guint16
+de_gc_device_properties(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+ guint32 bit_offset;
+
+ curr_offset = offset;
+ bit_offset = (curr_offset<<3)+4;
+
+ proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
+ bit_offset += 3;
+ proto_tree_add_bits_item(tree, hf_gsm_a_gm_device_prop_low_prio, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+
+ return (curr_offset - offset);
}
/*
@@ -3557,31 +3741,31 @@ de_sm_apn(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, g
{
guint32 curr_offset;
guint curr_len;
- guint8 str[MAX_APN_LENGTH+1];
+ guint8 str[MAX_APN_LENGTH+1];
curr_offset = offset;
/* init buffer and copy it */
- memset ( str , 0 , MAX_APN_LENGTH );
+ memset(str, 0, MAX_APN_LENGTH);
tvb_memcpy(tvb, str, offset, len<MAX_APN_LENGTH?len:MAX_APN_LENGTH);
curr_len = 0;
- while (( curr_len < len ) && ( curr_len < MAX_APN_LENGTH ))
+ while ((curr_len < len) && (curr_len < MAX_APN_LENGTH))
{
- guint step = str[curr_len];
- str[curr_len]='.';
- curr_len += step+1;
+ guint step = str[curr_len];
+ str[curr_len] = '.';
+ curr_len += step+1;
}
proto_tree_add_text(tree,
tvb, curr_offset, len,
- "APN: %s %s", str+1 , add_string ? add_string : "");
+ "APN: %s %s", str+1, add_string ? add_string : "");
- curr_offset+= len;
+ curr_offset += len;
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/*
@@ -3600,49 +3784,55 @@ de_sm_nsapi(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 off
proto_tree_add_text(tree,
tvb, curr_offset, 1,
"NSAPI: 0x%02x (%u) %s",
- oct&0x0f, oct&0x0f,add_string ? add_string : "");
+ oct&0x0f, oct&0x0f, add_string ? add_string : "");
curr_offset++;
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/*
* [7] 10.5.6.3 Protocol configuration options
*/
-static const value_string gsm_a_sm_pco_ms2net_prot_vals[] = {
- { 0x01, "P-CSCF IPv6 Address Request" },
- { 0x02, "IM CN Subsystem Signalling Flag" },
- { 0x03, "DNS Server IPv6 Address Request" },
- { 0x04, "Not Supported" },
- { 0x05, "MS Support of Network Requested Bearer Control indicator" },
- { 0x06, "Reserved" },
- { 0x07, "DSMIPv6 Home Agent Address Request" },
- { 0x08, "DSMIPv6 Home Network Prefix Request" },
- { 0x09, "DSMIPv6 IPv4 Home Agent Address Request" },
- { 0x0a, "IP address allocation via NAS signalling" },
- { 0x0b, "IPv4 address allocation via DHCPv4" },
- { 0x0c, "P-CSCF IPv4 Address Request" },
- { 0x0d, "DNS Server IPv4 Address Request" },
- { 0x0e, "MSISDN Request" },
- { 0, NULL }
+static const range_string gsm_a_sm_pco_ms2net_prot_vals[] = {
+ { 0x0001, 0x0001, "P-CSCF IPv6 Address Request" },
+ { 0x0002, 0x0002, "IM CN Subsystem Signalling Flag" },
+ { 0x0003, 0x0003, "DNS Server IPv6 Address Request" },
+ { 0x0004, 0x0004, "Not Supported" },
+ { 0x0005, 0x0005, "MS Support of Network Requested Bearer Control indicator" },
+ { 0x0006, 0x0006, "Reserved" },
+ { 0x0007, 0x0007, "DSMIPv6 Home Agent Address Request" },
+ { 0x0008, 0x0008, "DSMIPv6 Home Network Prefix Request" },
+ { 0x0009, 0x0009, "DSMIPv6 IPv4 Home Agent Address Request" },
+ { 0x000a, 0x000a, "IP address allocation via NAS signalling" },
+ { 0x000b, 0x000b, "IPv4 address allocation via DHCPv4" },
+ { 0x000c, 0x000c, "P-CSCF IPv4 Address Request" },
+ { 0x000d, 0x000d, "DNS Server IPv4 Address Request" },
+ { 0x000e, 0x000e, "MSISDN Request" },
+ { 0x000f, 0x000f, "IFOM-Support-Request" },
+ { 0x0010, 0x0010, "IPv4 Link MTU Request" },
+ { 0xff00, 0xffff, "Operator Specific Use" },
+ { 0, 0, NULL }
};
-static const value_string gsm_a_sm_pco_net2ms_prot_vals[] = {
- { 0x01, "P-CSCF IPv6 Address" },
- { 0x02, "IM CN Subsystem Signalling Flag" },
- { 0x03, "DNS Server IPv6 Address" },
- { 0x04, "Policy Control rejection code" },
- { 0x05, "Selected Bearer Control Mode" },
- { 0x06, "Reserved" },
- { 0x07, "DSMIPv6 Home Agent Address" },
- { 0x08, "DSMIPv6 Home Network Prefix" },
- { 0x09, "DSMIPv6 IPv4 Home Agent Address" },
- { 0x0a, "Reserved" },
- { 0x0b, "Reserved" },
- { 0x0c, "P-CSCF IPv4 Address" },
- { 0x0d, "DNS Server IPv4 Address" },
- { 0x0e, "MSISDN" },
- { 0, NULL }
+static const range_string gsm_a_sm_pco_net2ms_prot_vals[] = {
+ { 0x0001, 0x0001, "P-CSCF IPv6 Address" },
+ { 0x0002, 0x0002, "IM CN Subsystem Signalling Flag" },
+ { 0x0003, 0x0003, "DNS Server IPv6 Address" },
+ { 0x0004, 0x0004, "Policy Control rejection code" },
+ { 0x0005, 0x0005, "Selected Bearer Control Mode" },
+ { 0x0006, 0x0006, "Reserved" },
+ { 0x0007, 0x0007, "DSMIPv6 Home Agent Address" },
+ { 0x0008, 0x0008, "DSMIPv6 Home Network Prefix" },
+ { 0x0009, 0x0009, "DSMIPv6 IPv4 Home Agent Address" },
+ { 0x000a, 0x000a, "Reserved" },
+ { 0x000b, 0x000b, "Reserved" },
+ { 0x000c, 0x000c, "P-CSCF IPv4 Address" },
+ { 0x000d, 0x000d, "DNS Server IPv4 Address" },
+ { 0x000e, 0x000e, "MSISDN" },
+ { 0x000f, 0x000f, "IFOM-Support" },
+ { 0x0010, 0x0010, "IPv4 Link MTU" },
+ { 0xff00, 0xffff, "Operator Specific Use" },
+ { 0, 0, NULL }
};
static const value_string gsm_a_gm_link_dir_vals[] = {
@@ -3655,21 +3845,23 @@ static const value_string gsm_a_gm_link_dir_vals[] = {
guint16
de_sm_pco(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
- proto_item *generated_item = NULL;
- guint32 curr_offset;
- guint curr_len;
- guchar oct;
- struct e_in6_addr ipv6_addr;
- int link_dir;
- guint32 ipv4_addr;
-
- curr_len = len;
+ proto_item *generated_item;
+ guint32 curr_offset;
+ guint curr_len;
+ guchar oct;
+ struct e_in6_addr ipv6_addr;
+ int link_dir;
+ guint32 ipv4_addr;
+ proto_item *pco_item;
+ proto_tree *pco_tree;
+
+ curr_len = len;
curr_offset = offset;
oct = tvb_get_guint8(tvb, curr_offset);
link_dir = pinfo->link_dir;
- generated_item =proto_tree_add_int(tree, hf_gsm_a_gm_link_dir, tvb, curr_offset, 0, link_dir);
+ generated_item = proto_tree_add_int(tree, hf_gsm_a_gm_link_dir, tvb, curr_offset, 0, link_dir);
PROTO_ITEM_SET_GENERATED(generated_item);
@@ -3683,16 +3875,15 @@ de_sm_pco(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, g
* All other values are interpreted as PPP in this version of the protocol.
* (3GPP TS 24.008 version 9.4.0 Release 9)
*/
- proto_tree_add_text(tree,tvb, curr_offset, 1, "Configuration Protocol: PPP for use with IP PDP type or IP PDN type (%u)",oct&0x07);
+ proto_tree_add_text(tree, tvb, curr_offset, 1, "Configuration Protocol: PPP for use with IP PDP type or IP PDN type (%u)", oct&0x07);
curr_len--;
curr_offset++;
- while ( curr_len > 0 )
+ while (curr_len > 0)
{
guchar e_len;
guint16 prot;
tvbuff_t *l3_tvb;
- dissector_handle_t handle = NULL;
/* Protocol ID 1 octet 4
* octet 5
@@ -3700,54 +3891,57 @@ de_sm_pco(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, g
* Protocol ID 1 contents octet 7
*/
- prot = tvb_get_ntohs(tvb,curr_offset);
- proto_tree_add_uint_format(tree, hf_gsm_a_gm_pco_pid, tvb, curr_offset, 2, (guint32)prot,
- "Protocol or Container ID: %s (%u)",
+ prot = tvb_get_ntohs(tvb, curr_offset);
+ pco_item = proto_tree_add_uint_format(tree, hf_gsm_a_gm_pco_pid, tvb, curr_offset, 2, (guint32)prot,
+ "Protocol or Container ID: %s (0x%04x)",
link_dir ?
- val_to_str_const((guint32)prot, gsm_a_sm_pco_net2ms_prot_vals, val_to_str_ext_const(prot, &ppp_vals_ext, "Unknown")) :
- val_to_str_const((guint32)prot, gsm_a_sm_pco_ms2net_prot_vals, val_to_str_ext_const(prot, &ppp_vals_ext, "Unknown")),
+ rval_to_str((guint32)prot, gsm_a_sm_pco_net2ms_prot_vals, val_to_str_ext_const(prot, &ppp_vals_ext, "Unknown")) :
+ rval_to_str((guint32)prot, gsm_a_sm_pco_ms2net_prot_vals, val_to_str_ext_const(prot, &ppp_vals_ext, "Unknown")),
(guint32)prot);
+ pco_tree = proto_item_add_subtree(pco_item, ett_sm_pco);
- curr_len-=2;
- curr_offset+=2;
+ curr_len -= 2;
+ curr_offset += 2;
e_len = tvb_get_guint8(tvb, curr_offset);
- proto_tree_add_text(tree,tvb, curr_offset, 1, "Length: 0x%02x (%u)", e_len , e_len);
- curr_len-=1;
- curr_offset+=1;
+ proto_tree_add_text(pco_tree, tvb, curr_offset, 1, "Length: 0x%02x (%u)", e_len, e_len);
+ curr_len -= 1;
+ curr_offset += 1;
- switch ( prot )
+ switch (prot)
{
case 0x0001:
case 0x0003:
case 0x0007:
if ((link_dir == P2P_DIR_DL) && (e_len > 0)) {
tvb_get_ipv6(tvb, curr_offset, &ipv6_addr);
- proto_tree_add_text(tree, tvb, curr_offset, 16, "IPv6: %s", ip6_to_str(&ipv6_addr));
+ proto_tree_add_text(pco_tree, tvb, curr_offset, 16, "IPv6: %s", ip6_to_str(&ipv6_addr));
}
break;
case 0x0002:
case 0x0006:
case 0x000A:
case 0x000B:
+ case 0x000F:
break;
case 0x0004:
- if (link_dir == P2P_DIR_DL) {
- proto_tree_add_text(tree,tvb, curr_offset, 1, "Reject Code: 0x%02x (%u)", e_len , e_len);
+ if ((link_dir == P2P_DIR_DL) && (e_len == 1)) {
+ oct = tvb_get_guint8(tvb, curr_offset);
+ proto_tree_add_text(pco_tree, tvb, curr_offset, 1, "Reject Code: 0x%02x (%u)", oct, oct);
}
break;
case 0x0005:
if ((link_dir == P2P_DIR_DL) && (e_len == 1)) {
oct = tvb_get_guint8(tvb, curr_offset);
- proto_tree_add_text(tree, tvb, curr_offset, 1, "%s", (oct == 1) ? "MS only" :
+ proto_tree_add_text(pco_tree, tvb, curr_offset, 1, "%s", (oct == 1) ? "MS only" :
((oct == 2) ? "MS/NW" : "Unknown"));
}
break;
case 0x0008:
if ((link_dir == P2P_DIR_DL) && (e_len > 0)) {
tvb_get_ipv6(tvb, curr_offset, &ipv6_addr);
- proto_tree_add_text(tree, tvb, curr_offset, 16, "IPv6: %s", ip6_to_str(&ipv6_addr));
+ proto_tree_add_text(pco_tree, tvb, curr_offset, 16, "IPv6: %s", ip6_to_str(&ipv6_addr));
oct = tvb_get_guint8(tvb, curr_offset+16);
- proto_tree_add_text(tree, tvb, curr_offset+16, 1, "Prefix length: %u", oct);
+ proto_tree_add_text(pco_tree, tvb, curr_offset+16, 1, "Prefix length: %u", oct);
}
break;
case 0x0009:
@@ -3755,45 +3949,59 @@ de_sm_pco(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, g
case 0x000D:
if ((link_dir == P2P_DIR_DL) && (e_len > 0)) {
ipv4_addr = tvb_get_ipv4(tvb, curr_offset);
- proto_tree_add_text(tree, tvb, curr_offset, 4, "IPv4: %s",
+ proto_tree_add_text(pco_tree, tvb, curr_offset, 4, "IPv4: %s",
ip_to_str((guint8 *)&ipv4_addr));
}
break;
+ case 0x0010:
+ if ((link_dir == P2P_DIR_DL) && (e_len == 2)) {
+ guint16 word = tvb_get_ntohs(tvb, curr_offset);
+ proto_tree_add_text(pco_tree, tvb, curr_offset, 2, "IPv4 link MTU size: %u octets", word);
+ }
+ break;
default:
{
if (e_len > 0) {
- handle = dissector_get_uint_handle ( gprs_sm_pco_subdissector_table , prot );
- if ( handle != NULL )
- {
- /*
- * dissect the embedded message
- */
- l3_tvb = tvb_new_subset(tvb, curr_offset, e_len, e_len);
- /* In this case we do not want the columns updated */
- col_set_writable(pinfo->cinfo, FALSE);
- call_dissector(handle, l3_tvb , pinfo , tree );
- col_set_writable(pinfo->cinfo, TRUE);
- }
- else
- {
- /*
- * dissect the embedded DATA message
- */
- l3_tvb = tvb_new_subset(tvb, curr_offset, e_len, e_len);
- call_dissector(data_handle, l3_tvb, pinfo , tree);
+ if (prot >= 0xff00) {
+ dissect_e212_mcc_mnc(tvb, pinfo, pco_tree, curr_offset, TRUE);
+ if ((e_len - 3) > 0) {
+ proto_tree_add_item(pco_tree, hf_gsm_a_gm_pco_app_spec_info, tvb, curr_offset+3, e_len-3, ENC_NA);
+ }
+ } else {
+ dissector_handle_t handle;
+ handle = dissector_get_uint_handle (gprs_sm_pco_subdissector_table, prot);
+ if (handle != NULL)
+ {
+ /*
+ * dissect the embedded message
+ */
+ l3_tvb = tvb_new_subset(tvb, curr_offset, e_len, e_len);
+ /* In this case we do not want the columns updated */
+ col_set_writable(pinfo->cinfo, FALSE);
+ call_dissector(handle, l3_tvb, pinfo, pco_tree);
+ col_set_writable(pinfo->cinfo, TRUE);
+ }
+ else
+ {
+ /*
+ * dissect the embedded DATA message
+ */
+ l3_tvb = tvb_new_subset(tvb, curr_offset, e_len, e_len);
+ call_dissector(data_handle, l3_tvb, pinfo, pco_tree);
+ }
}
}
}
}
- curr_len-= e_len;
- curr_offset+= e_len;
+ curr_len -= e_len;
+ curr_offset += e_len;
}
- curr_offset+= curr_len;
+ curr_offset += curr_len;
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/*
@@ -3809,9 +4017,9 @@ static const value_string gsm_a_sm_pdp_type_org_vals[] = {
static guint16
de_sm_pdp_addr(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- const gchar *str;
- guchar pdp_type_org, pdp_type_num;
+ guint32 curr_offset;
+ const gchar *str;
+ guchar pdp_type_org, pdp_type_num;
curr_offset = offset;
@@ -3822,14 +4030,14 @@ de_sm_pdp_addr(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offs
curr_offset += 1;
pdp_type_num = tvb_get_guint8(tvb, curr_offset);
- if (pdp_type_org == 0 )
+ if (pdp_type_org == 0)
{
/* ETSI allocated address */
switch (pdp_type_num)
{
- case 0x00: str="Reserved, used in earlier version of this protocol"; break;
- case 0x01: str="PDP-type PPP"; break;
- default: str="reserved";
+ case 0x00: str = "Reserved, used in earlier version of this protocol"; break;
+ case 0x01: str = "PDP-type PPP"; break;
+ default: str = "reserved";
}
}
else if (pdp_type_org == 1)
@@ -3837,36 +4045,36 @@ de_sm_pdp_addr(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offs
/* IETF allocated address */
switch (pdp_type_num)
{
- case 0x21: str="IPv4 address"; break;
- case 0x57: str="IPv6 address"; break;
- case 0x8d: str="IPv4v6 address"; break;
- default: str="Unknown, interpreted as IPv4 address";
+ case 0x21: str = "IPv4 address"; break;
+ case 0x57: str = "IPv6 address"; break;
+ case 0x8d: str = "IPv4v6 address"; break;
+ default: str = "Unknown, interpreted as IPv4 address";
}
}
else if ((pdp_type_num == 0) && (pdp_type_org == 0x0f))
- str="Empty";
+ str = "Empty";
else
- str="Not specified";
+ str = "Not specified";
proto_tree_add_text(tree,
tvb, curr_offset, 1,
- "PDP type number: %s (%u)",str,pdp_type_num);
+ "PDP type number: %s (%u)", str, pdp_type_num);
- if (( len == 2 ) && (( pdp_type_num == 0x21 ) || ( pdp_type_num == 0x57 ) || (pdp_type_num == 0x8d)))
+ if ((len == 2) && ((pdp_type_num == 0x21) || (pdp_type_num == 0x57) || (pdp_type_num == 0x8d)))
{
proto_tree_add_text(tree,
tvb, curr_offset, 1,
"Dynamic addressing");
curr_offset += 1;
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
- else if ( len == 2 )
+ else if (len == 2)
{
proto_tree_add_text(tree,
tvb, curr_offset, 1,
"No PDP address is included");
curr_offset += 1;
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
curr_offset += 1;
@@ -3874,25 +4082,25 @@ de_sm_pdp_addr(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offs
switch (pdp_type_num)
{
case 0x57:
- proto_tree_add_item(tree,hf_gsm_a_sm_ip6_address,tvb,curr_offset,16,ENC_NA);
- curr_offset+=16;
+ proto_tree_add_item(tree, hf_gsm_a_sm_ip6_address, tvb, curr_offset, 16, ENC_NA);
+ curr_offset += 16;
break;
case 0x8d:
- proto_tree_add_item(tree,hf_gsm_a_sm_ip4_address,tvb,curr_offset,4,ENC_BIG_ENDIAN);
- curr_offset+=4;
- proto_tree_add_item(tree,hf_gsm_a_sm_ip6_address,tvb,curr_offset,16,ENC_NA);
- curr_offset+=16;
+ proto_tree_add_item(tree, hf_gsm_a_sm_ip4_address, tvb, curr_offset, 4, ENC_BIG_ENDIAN);
+ curr_offset += 4;
+ proto_tree_add_item(tree, hf_gsm_a_sm_ip6_address, tvb, curr_offset, 16, ENC_NA);
+ curr_offset += 16;
break;
default:
- proto_tree_add_item(tree,hf_gsm_a_sm_ip4_address,tvb,curr_offset,4,ENC_BIG_ENDIAN);
- curr_offset+=4;
+ proto_tree_add_item(tree, hf_gsm_a_sm_ip4_address, tvb, curr_offset, 4, ENC_BIG_ENDIAN);
+ curr_offset += 4;
}
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/*
@@ -4070,10 +4278,10 @@ qos_calc_ext_bitrate(guint8 oct)
guint16
de_sm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guchar oct, tmp_oct;
- const gchar *str;
- guint32 temp32;
+ guint32 curr_offset;
+ guchar oct, tmp_oct;
+ const gchar *str;
+ guint32 temp32;
curr_offset = offset;
@@ -4081,18 +4289,18 @@ de_sm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, g
proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, (curr_offset << 3), 2, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_gsm_a_qos_delay_cls, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_gsm_a_qos_reliability_cls, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset+= 1;
+ curr_offset += 1;
/* Octet 4 */
proto_tree_add_item(tree, hf_gsm_a_qos_peak_thr, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, (curr_offset << 3) + 4, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_gsm_a_qos_prec_class, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset+= 1;
+ curr_offset += 1;
/* Octet 5 */
proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, (curr_offset << 3), 3, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_gsm_a_qos_mean_thr, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset+= 1;
+ curr_offset += 1;
NO_MORE_DATA_CHECK(len);
@@ -4100,33 +4308,33 @@ de_sm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, g
proto_tree_add_item(tree, hf_gsm_a_qos_traffic_cls, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_gsm_a_qos_del_order, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_gsm_a_qos_del_of_err_sdu, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset+= 1;
+ curr_offset += 1;
NO_MORE_DATA_CHECK(len);
/* Octet 7 */
oct = tvb_get_guint8(tvb, curr_offset);
- switch ( oct )
+ switch (oct)
{
- case 0x00: str="Subscribed maximum SDU size/reserved"; break;
- case 0x97: str="1502 octets"; break;
- case 0x98: str="1510 octets"; break;
- case 0x99: str="1520 octets"; break;
- case 0xff: str="Reserved"; break;
- default: str="Unspecified";
+ case 0x00: str = "Subscribed maximum SDU size/reserved"; break;
+ case 0x97: str = "1502 octets"; break;
+ case 0x98: str = "1510 octets"; break;
+ case 0x99: str = "1520 octets"; break;
+ case 0xff: str = "Reserved"; break;
+ default: str = "Unspecified";
}
- if (( oct >= 1 ) && ( oct <= 0x96 ))
+ if ((oct >= 1) && (oct <= 0x96))
proto_tree_add_text(tree,
tvb, curr_offset, 1,
- "Maximum SDU size: %u octets (%u)",oct*10, oct);
+ "Maximum SDU size: %u octets (%u)", oct*10, oct);
else
proto_tree_add_text(tree,
tvb, curr_offset, 1,
- "Maximum SDU size: %s (%u)",str, oct);
+ "Maximum SDU size: %s (%u)", str, oct);
- curr_offset+= 1;
+ curr_offset += 1;
NO_MORE_DATA_CHECK(len);
@@ -4137,28 +4345,28 @@ de_sm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, g
{
case 0x00: str = "Subscribed maximum bit rate for uplink/reserved"; break;
case 0xff: str = "0 kbps"; break;
- default: str = ep_strdup_printf("%u kbps", qos_calc_bitrate(oct));
+ default: str = ep_strdup_printf("%u kbps", qos_calc_bitrate(oct));
}
proto_tree_add_uint_format_value(tree, hf_gsm_a_qos_max_bitrate_upl, tvb,
curr_offset, 1, oct, "%s (%u)", str, oct);
- curr_offset+= 1;
+ curr_offset += 1;
NO_MORE_DATA_CHECK(len);
/* Octet 9 */
oct = tvb_get_guint8(tvb, curr_offset);
- switch ( oct )
+ switch (oct)
{
- case 0x00: str="Subscribed maximum bit rate for downlink/reserved"; break;
- case 0xff: str="0 kbps"; break;
- default: str = ep_strdup_printf("%u kbps", qos_calc_bitrate(oct));
+ case 0x00: str = "Subscribed maximum bit rate for downlink/reserved"; break;
+ case 0xff: str = "0 kbps"; break;
+ default: str = ep_strdup_printf("%u kbps", qos_calc_bitrate(oct));
}
proto_tree_add_uint_format_value(tree, hf_gsm_a_qos_max_bitrate_downl, tvb,
curr_offset, 1, oct, "%s (%u)", str, oct);
- curr_offset+= 1;
+ curr_offset += 1;
NO_MORE_DATA_CHECK(len);
@@ -4166,17 +4374,17 @@ de_sm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, g
proto_tree_add_item(tree, hf_gsm_a_qos_ber, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_gsm_a_qos_sdu_err_rat, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset+= 1;
+ curr_offset += 1;
NO_MORE_DATA_CHECK(len);
/* Octet 11 */
oct = tvb_get_guint8(tvb, curr_offset);
- tmp_oct = oct >> 2;
+ tmp_oct = oct>>2;
switch (tmp_oct)
{
- case 0x00: str="Subscribed transfer delay/reserved"; break;
- case 0x3f: str="Reserved"; break;
+ case 0x00: str = "Subscribed transfer delay/reserved"; break;
+ case 0x3f: str = "Reserved"; break;
default:
if (tmp_oct <= 0x0f)
temp32 = tmp_oct * 10;
@@ -4190,54 +4398,47 @@ de_sm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, g
proto_tree_add_uint_format_value(tree, hf_gsm_a_qos_trans_delay, tvb,
curr_offset, 1, oct, "%s (%u)", str, tmp_oct);
- tmp_oct = oct & 0x03;
- if (tmp_oct == 0)
- str = "Subscribed traffic handling priority/reserved";
- else
- str = ep_strdup_printf("Priority level %u", tmp_oct);
+ proto_tree_add_item(tree, hf_gsm_a_qos_traff_hdl_pri, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_uint_format_value(tree, hf_gsm_a_qos_traf_handl_prio, tvb,
- curr_offset, 1, oct, "%s (%u)", str, tmp_oct);
-
- curr_offset+= 1;
+ curr_offset += 1;
NO_MORE_DATA_CHECK(len);
/* Octet 12 */
oct = tvb_get_guint8(tvb, curr_offset);
- switch ( oct )
+ switch (oct)
{
- case 0x00: str="Subscribed guaranteed bit rate for uplink/reserved"; break;
- case 0xff: str="0 kbps"; break;
- default: str = ep_strdup_printf("%u kbps", qos_calc_bitrate(oct));
+ case 0x00: str = "Subscribed guaranteed bit rate for uplink/reserved"; break;
+ case 0xff: str = "0 kbps"; break;
+ default: str = ep_strdup_printf("%u kbps", qos_calc_bitrate(oct));
}
proto_tree_add_uint_format_value(tree, hf_gsm_a_qos_guar_bitrate_upl, tvb,
curr_offset, 1, oct, "%s (%u)", str, oct);
- curr_offset+= 1;
+ curr_offset += 1;
NO_MORE_DATA_CHECK(len);
/* Octet 13 */
oct = tvb_get_guint8(tvb, curr_offset);
- switch ( oct )
+ switch (oct)
{
- case 0x00: str="Subscribed guaranteed bit rate for downlink/reserved"; break;
- case 0xff: str="0 kbps"; break;
- default: str = ep_strdup_printf("%u kbps", qos_calc_bitrate(oct));
+ case 0x00: str = "Subscribed guaranteed bit rate for downlink/reserved"; break;
+ case 0xff: str = "0 kbps"; break;
+ default: str = ep_strdup_printf("%u kbps", qos_calc_bitrate(oct));
}
proto_tree_add_uint_format_value(tree, hf_gsm_a_qos_guar_bitrate_downl, tvb,
curr_offset, 1, oct, "%s (%u)", str, oct);
- curr_offset+= 1;
+ curr_offset += 1;
NO_MORE_DATA_CHECK(len);
/* Ocet 14 */
oct = tvb_get_guint8(tvb, curr_offset);
proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, (curr_offset << 3), 3, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_gsm_a_qos_signalling_ind, tvb , curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_qos_signalling_ind, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
tmp_oct = oct & 7;
if (tmp_oct == 0x01)
@@ -4248,7 +4449,7 @@ de_sm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, g
proto_tree_add_uint_format_value(tree, hf_gsm_a_qos_source_stat_desc, tvb,
curr_offset, 1, oct, "%s (%u)", str, tmp_oct);
- curr_offset+= 1;
+ curr_offset += 1;
NO_MORE_DATA_CHECK(len);
/* Octet 15 */
@@ -4267,7 +4468,7 @@ de_sm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, g
proto_tree_add_uint_format_value(tree, hf_gsm_a_qos_max_bitrate_downl_ext, tvb,
curr_offset, 1, oct, "%s (%u)", str, oct);
- curr_offset+= 1;
+ curr_offset += 1;
NO_MORE_DATA_CHECK(len);
/* Octet 16 */
@@ -4286,7 +4487,7 @@ de_sm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, g
proto_tree_add_uint_format_value(tree, hf_gsm_a_qos_guar_bitrate_downl_ext, tvb,
curr_offset, 1, oct, "%s (%u)", str, oct);
- curr_offset+= 1;
+ curr_offset += 1;
NO_MORE_DATA_CHECK(len);
/* Maximum bit rate for uplink (extended) Octet 17 */
@@ -4305,7 +4506,7 @@ de_sm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, g
proto_tree_add_uint_format_value(tree, hf_gsm_a_qos_max_bitrate_upl_ext, tvb,
curr_offset, 1, oct, "%s (%u)", str, oct);
- curr_offset+= 1;
+ curr_offset += 1;
NO_MORE_DATA_CHECK(len);
/* Guaranteed bit rate for uplink (extended) Octet 18 */
@@ -4324,11 +4525,11 @@ de_sm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, g
proto_tree_add_uint_format_value(tree, hf_gsm_a_qos_guar_bitrate_upl_ext, tvb,
curr_offset, 1, oct, "%s (%u)", str, oct);
- curr_offset+= 1;
+ curr_offset += 1;
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/*
@@ -4351,7 +4552,7 @@ static const value_string gsm_a_sm_cause_vals[] = {
{ 0x24, "Regular deactivation" },
{ 0x25, "QoS not accepted" },
{ 0x26, "Network failure" },
- { 0x27, "Reactivation required" },
+ { 0x27, "Reactivation requested" },
{ 0x28, "Feature not supported" },
{ 0x29, "Semantic error in the TFT operation" },
{ 0x2a, "Syntactical error in the TFT operation" },
@@ -4362,10 +4563,12 @@ static const value_string gsm_a_sm_cause_vals[] = {
{ 0x2f, "Multicast group membership time-out" },
{ 0x2c, "Semantic errors in packet filter(s)" },
{ 0x2d, "Syntactical errors in packet filter(s)" },
- { 0x30, "Activation rejected, BCM violation" },
+ { 0x30, "Request rejected, BCM violation" },
{ 0x32, "PDP type IPv4 only allowed" },
{ 0x33, "PDP type IPv6 only allowed" },
{ 0x34, "Single address bearers only allowed" },
+ { 0x38, "Collision with network initiated request" },
+ { 0x3c, "Bearer handling not supported" },
{ 0x51, "Invalid transaction identifier value" },
{ 0x5f, "Semantically incorrect message" },
{ 0x60, "Invalid mandatory information" },
@@ -4378,24 +4581,25 @@ static const value_string gsm_a_sm_cause_vals[] = {
{ 0x70, "APN restriction value incompatible with active PDP context" },
{ 0, NULL }
};
+static value_string_ext gsm_a_sm_cause_vals_ext = VALUE_STRING_EXT_INIT(gsm_a_sm_cause_vals);
static guint16
de_sm_cause(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
- const gchar *str;
+ guint8 oct;
+ const gchar *str;
oct = tvb_get_guint8(tvb, offset);
/* SM Cause can be sent in both directions */
- str = val_to_str_const(oct, gsm_a_sm_cause_vals,
+ str = val_to_str_ext_const(oct, &gsm_a_sm_cause_vals_ext,
"Protocol error, unspecified / Service option temporarily out of order");
proto_tree_add_uint_format_value(tree, hf_gsm_a_sm_cause, tvb,
offset, 1, oct, "%s (%u)", str, oct);
/* no length check possible */
- return(1);
+ return (1);
}
/*
@@ -4404,20 +4608,20 @@ de_sm_cause(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 off
static guint16
de_sm_cause_2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
- const gchar *str;
+ guint8 oct;
+ const gchar *str;
oct = tvb_get_guint8(tvb, offset);
/* SM Cause 2 is sent only in the Network-to-MS direction */
- str = val_to_str_const(oct, gsm_a_sm_cause_vals,
+ str = val_to_str_ext_const(oct, &gsm_a_sm_cause_vals_ext,
"Service option temporarily out of order");
proto_tree_add_uint_format_value(tree, hf_gsm_a_sm_cause_2, tvb,
offset, 1, oct, "%s (%u)", str, oct);
/* no length check possible */
- return(1);
+ return (1);
}
/*
* [7] 10.5.6.7
@@ -4434,7 +4638,8 @@ de_sm_linked_ti(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 off
guint32 curr_offset;
guint curr_len;
gchar oct;
- curr_len = len;
+
+ curr_len = len;
curr_offset = offset;
oct = tvb_get_guint8(tvb, curr_offset);
@@ -4447,14 +4652,14 @@ de_sm_linked_ti(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 off
* value is encoded in bits 7-1 of the second octet.
*/
- if ( curr_len > 1 )
+ if (curr_len > 1)
{
curr_offset++;
oct = tvb_get_guint8(tvb, curr_offset);
proto_tree_add_text(tree,
tvb, curr_offset, 1,
- "TI value: 0x%02x (%u)",oct&0x7f,oct&0x7f);
+ "TI value: 0x%02x (%u)", oct&0x7f, oct&0x7f);
proto_tree_add_item(tree, hf_gsm_a_sm_ext, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -4464,14 +4669,14 @@ de_sm_linked_ti(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 off
{
proto_tree_add_text(tree,
tvb, curr_offset, 1,
- "TI value: 0x%02x (%u)",(oct>>4)&7,(oct>>4)&7);
+ "TI value: 0x%02x (%u)", (oct>>4)&7, (oct>>4)&7);
curr_offset++;
}
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/*
@@ -4493,7 +4698,7 @@ de_sm_sapi(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offs
proto_tree_add_item(tree, hf_gsm_a_sm_llc_sapi, tvb, offset, 1, ENC_BIG_ENDIAN);
/* no length check possible */
- return(1);
+ return (1);
}
/*
@@ -4511,7 +4716,7 @@ de_sm_tear_down(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
proto_tree_add_item(tree, hf_gsm_a_sm_tdi, tvb, offset, 1, ENC_BIG_ENDIAN);
/* no length check possible */
- return(1);
+ return (1);
}
/*
@@ -4531,20 +4736,20 @@ guint16
de_sm_pflow_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
guint32 curr_offset;
- guint value;
+ guint value;
curr_offset = offset;
- value = tvb_get_guint8(tvb,curr_offset);
+ value = tvb_get_guint8(tvb, curr_offset);
proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, curr_offset << 3, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_gsm_a_sm_packet_flow_id, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
curr_offset++;
- if (add_string)
- g_snprintf(add_string, string_len, " - %s", rval_to_str(value, gsm_a_sm_packet_flow_id_vals, "Unknown"));
+ if (add_string)
+ g_snprintf(add_string, string_len, " - %s", rval_to_str(value, gsm_a_sm_packet_flow_id_vals, "Unknown"));
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/*
@@ -4564,8 +4769,8 @@ static const value_string gsm_a_tft_op_code_vals[] = {
};
static const true_false_string gsm_a_tft_e_bit = {
- "Parameters list is included",
- "Parameters list is not included"
+ "Parameters list is included",
+ "Parameters list is not included"
};
static const value_string gsm_a_tft_pkt_flt_dir_vals[] = {
@@ -4588,9 +4793,6 @@ de_sm_tflow_temp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
{
guint32 curr_offset;
guint curr_len;
- proto_item *tf = NULL;
- proto_tree *tf_tree = NULL;
- proto_tree *comp_tree = NULL;
guchar op_code;
guchar pkt_fil_count;
guchar e_bit;
@@ -4602,7 +4804,7 @@ de_sm_tflow_temp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
gint pack_component_type;
gint param;
- curr_len = len;
+ curr_len = len;
curr_offset = offset;
/*
@@ -4614,9 +4816,9 @@ de_sm_tflow_temp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
pkt_fil_count = oct&0x0f;
e_bit = (oct>>4)&1;
- proto_tree_add_item(tree,hf_gsm_a_tft_op_code,tvb,curr_offset,1,ENC_BIG_ENDIAN);
- proto_tree_add_item(tree,hf_gsm_a_tft_e_bit,tvb,curr_offset,1,ENC_BIG_ENDIAN);
- proto_tree_add_item(tree,hf_gsm_a_tft_pkt_flt,tvb,curr_offset,1,ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_tft_op_code, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_tft_e_bit, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_a_tft_pkt_flt, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
curr_offset++;
curr_len--;
@@ -4624,21 +4826,23 @@ de_sm_tflow_temp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
/* Packet filter list dissect */
count = 0;
- if ( op_code == 2 ) /* delete TFT contains no packet filters. so we will jump over it */
+ if (op_code == 2) /* delete TFT contains no packet filters. so we will jump over it */
count = pkt_fil_count;
- while ( count < pkt_fil_count )
+ while (count < pkt_fil_count)
{
+ proto_item *tf;
+ proto_tree *tf_tree;
tf = proto_tree_add_text(tree,
tvb, curr_offset, 1,
- "Packet filter %d",count); /* 0-> 7 */
+ "Packet filter %d", count); /* 0-> 7 */
- tf_tree = proto_item_add_subtree(tf, ett_sm_tft );
+ tf_tree = proto_item_add_subtree(tf, ett_sm_tft);
- if ( op_code == 5 ) /* Delete packet filters from existing TFT - just a list of identifiers */
+ if (op_code == 5) /* Delete packet filters from existing TFT - just a list of identifiers */
{
if ((curr_offset-offset)<1) {
- proto_tree_add_text(tf_tree,tvb, curr_offset, 1,"Not enough data");
- return(len);
+ proto_tree_add_text(tf_tree, tvb, curr_offset, 1, "Not enough data");
+ return (len);
}
proto_tree_add_bits_item(tf_tree, hf_gsm_a_spare_bits, tvb, (curr_offset<<3), 4, ENC_BIG_ENDIAN);
proto_tree_add_item(tf_tree, hf_gsm_a_tft_pkt_flt_id, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
@@ -4650,8 +4854,8 @@ de_sm_tflow_temp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
{
if ((curr_offset-offset)<1) {
- proto_tree_add_text(tf_tree,tvb, curr_offset, 1,"Not enough data");
- return(len);
+ proto_tree_add_text(tf_tree, tvb, curr_offset, 1, "Not enough data");
+ return (len);
}
proto_tree_add_bits_item(tf_tree, hf_gsm_a_spare_bits, tvb, (curr_offset<<3), 2, ENC_BIG_ENDIAN);
proto_tree_add_item(tf_tree, hf_gsm_a_tft_pkt_flt_dir, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
@@ -4659,9 +4863,9 @@ de_sm_tflow_temp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
curr_offset++;
curr_len--;
- if ((curr_offset-offset)<1) {
- proto_tree_add_text(tf_tree,tvb, curr_offset, 1,"Not enough data");
- return(len);
+ if ((curr_offset-offset) < 1) {
+ proto_tree_add_text(tf_tree, tvb, curr_offset, 1, "Not enough data");
+ return (len);
}
oct = tvb_get_guint8(tvb, curr_offset);
curr_offset++;
@@ -4669,136 +4873,137 @@ de_sm_tflow_temp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
proto_tree_add_text(tf_tree,
tvb, curr_offset-1, 1,
- "Packet evaluation precedence: 0x%02x (%u)",oct,oct );
+ "Packet evaluation precedence: 0x%02x (%u)", oct, oct);
- if ((curr_offset-offset)<1) { proto_tree_add_text(tf_tree,tvb, curr_offset, 1,"Not enough data"); return(len);}
+ if ((curr_offset-offset)<1) { proto_tree_add_text(tf_tree, tvb, curr_offset, 1, "Not enough data"); return (len);}
pf_length = tvb_get_guint8(tvb, curr_offset);
curr_offset++;
curr_len--;
proto_tree_add_text(tf_tree,
tvb, curr_offset-1, 1,
- "Packet filter length: 0x%02x (%u)",pf_length,pf_length );
+ "Packet filter length: 0x%02x (%u)", pf_length, pf_length);
/* New tree for component */
/* Dissect Packet filter Component */
- /* while ( filter_len > 1 ) */
+ /* while (filter_len > 1) */
/* packet filter component type identifier: */
- while (pf_length > 0 ){
- if ((curr_offset-offset)<1) {
- proto_tree_add_text(tf_tree,tvb, curr_offset, 1,"Not enough data");
- return(len);
+ while (pf_length > 0) {
+ proto_tree *comp_tree;
+ if ((curr_offset-offset) < 1) {
+ proto_tree_add_text(tf_tree, tvb, curr_offset, 1, "Not enough data");
+ return (len);
}
pack_component_type = tvb_get_guint8(tvb, curr_offset);
curr_offset++;
curr_len--;
pf_length--;
- tf=proto_tree_add_text(tf_tree,tvb, curr_offset-1, 1,"Packet filter component type identifier: ");
- comp_tree = proto_item_add_subtree(tf, ett_sm_tft );
+ tf = proto_tree_add_text(tf_tree, tvb, curr_offset-1, 1, "Packet filter component type identifier: ");
+ comp_tree = proto_item_add_subtree(tf, ett_sm_tft);
- switch ( pack_component_type ){
+ switch (pack_component_type) {
case 0x10:
- str="IPv4 remote address type";
- proto_tree_add_item(comp_tree,hf_gsm_a_sm_ip4_address,tvb,curr_offset,4,ENC_BIG_ENDIAN);
- curr_offset+=4;
- curr_len-=4;
- proto_tree_add_item(comp_tree,hf_gsm_a_sm_ip4_mask,tvb,curr_offset,4,ENC_BIG_ENDIAN);
- curr_offset+=4;
- curr_len-=4;
- pf_length-=8;
+ str = "IPv4 remote address type";
+ proto_tree_add_item(comp_tree, hf_gsm_a_sm_ip4_address, tvb, curr_offset, 4, ENC_BIG_ENDIAN);
+ curr_offset += 4;
+ curr_len -= 4;
+ proto_tree_add_item(comp_tree, hf_gsm_a_sm_ip4_mask, tvb, curr_offset, 4, ENC_BIG_ENDIAN);
+ curr_offset += 4;
+ curr_len -= 4;
+ pf_length -= 8;
break;
case 0x20:
- str="IPv6 remote address type";
- proto_tree_add_item(comp_tree,hf_gsm_a_sm_ip6_address,tvb,curr_offset,16,ENC_NA);
- curr_offset+=16;
- curr_len-=16;
- proto_tree_add_item(comp_tree,hf_gsm_a_sm_ip6_mask,tvb,curr_offset,16,ENC_NA);
- curr_offset+=16;
- curr_len-=16;
- pf_length-=32;
+ str = "IPv6 remote address type";
+ proto_tree_add_item(comp_tree, hf_gsm_a_sm_ip6_address, tvb, curr_offset, 16, ENC_NA);
+ curr_offset += 16;
+ curr_len -= 16;
+ proto_tree_add_item(comp_tree, hf_gsm_a_sm_ip6_mask, tvb, curr_offset, 16, ENC_NA);
+ curr_offset += 16;
+ curr_len -= 16;
+ pf_length -= 32;
break;
case 0x30:
- str="Protocol identifier/Next header type";
- proto_tree_add_item(comp_tree,hf_gsm_a_tft_protocol_header,tvb,curr_offset,1,ENC_BIG_ENDIAN);
- curr_offset+=1;
- curr_len-=1;
- pf_length-=1;
+ str = "Protocol identifier/Next header type";
+ proto_tree_add_item(comp_tree, hf_gsm_a_tft_protocol_header, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset += 1;
+ curr_len -= 1;
+ pf_length -= 1;
break;
case 0x40:
- str="Single local port type";
- proto_tree_add_item(comp_tree,hf_gsm_a_tft_port,tvb,curr_offset,2,ENC_BIG_ENDIAN);
- curr_offset+=2;
- curr_len-=2;
- pf_length-=2;
+ str = "Single local port type";
+ proto_tree_add_item(comp_tree, hf_gsm_a_tft_port, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset += 2;
+ curr_len -= 2;
+ pf_length -= 2;
break;
case 0x41:
- str="Local port range type";
- proto_tree_add_item(comp_tree,hf_gsm_a_tft_port_low,tvb,curr_offset,2,ENC_BIG_ENDIAN);
- curr_offset+=2;
- proto_tree_add_item(comp_tree,hf_gsm_a_tft_port_high,tvb,curr_offset,2,ENC_BIG_ENDIAN);
- curr_offset+=2;
- curr_len-=4;
- pf_length-=4;
+ str = "Local port range type";
+ proto_tree_add_item(comp_tree, hf_gsm_a_tft_port_low, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset += 2;
+ proto_tree_add_item(comp_tree, hf_gsm_a_tft_port_high, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset += 2;
+ curr_len -= 4;
+ pf_length -= 4;
break;
case 0x50:
- str="Single remote port type";
- proto_tree_add_item(comp_tree,hf_gsm_a_tft_port,tvb,curr_offset,2,ENC_BIG_ENDIAN);
- curr_offset+=2;
- curr_len-=2;
- pf_length-=2;
+ str = "Single remote port type";
+ proto_tree_add_item(comp_tree, hf_gsm_a_tft_port, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset += 2;
+ curr_len -= 2;
+ pf_length -= 2;
break;
case 0x51:
- str="Remote port range type";
- proto_tree_add_item(comp_tree,hf_gsm_a_tft_port_low,tvb,curr_offset,2,ENC_BIG_ENDIAN);
- curr_offset+=2;
- proto_tree_add_item(comp_tree,hf_gsm_a_tft_port_high,tvb,curr_offset,2,ENC_BIG_ENDIAN);
- curr_offset+=2;
- curr_len-=4;
- pf_length-=4;
+ str = "Remote port range type";
+ proto_tree_add_item(comp_tree, hf_gsm_a_tft_port_low, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset += 2;
+ proto_tree_add_item(comp_tree, hf_gsm_a_tft_port_high, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset += 2;
+ curr_len -= 4;
+ pf_length -= 4;
break;
case 0x60:
- str="Security parameter index type";
- proto_tree_add_item(comp_tree,hf_gsm_a_tft_security,tvb,curr_offset,4,ENC_BIG_ENDIAN);
- curr_offset+=4;
- curr_len-=4;
- pf_length-=4;
+ str = "Security parameter index type";
+ proto_tree_add_item(comp_tree, hf_gsm_a_tft_security, tvb, curr_offset, 4, ENC_BIG_ENDIAN);
+ curr_offset += 4;
+ curr_len -= 4;
+ pf_length -= 4;
break;
case 0x70:
- str="Type of service/Traffic class type";
- proto_tree_add_item(comp_tree,hf_gsm_a_tft_traffic_class,tvb,curr_offset,1,ENC_BIG_ENDIAN);
+ str = "Type of service/Traffic class type";
+ proto_tree_add_item(comp_tree, hf_gsm_a_tft_traffic_class, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
curr_offset++;
- proto_tree_add_item(comp_tree,hf_gsm_a_tft_traffic_mask,tvb,curr_offset,1,ENC_BIG_ENDIAN);
+ proto_tree_add_item(comp_tree, hf_gsm_a_tft_traffic_mask, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
curr_offset++;
curr_len-=2;
pf_length-=2;
break;
case 0x80:
- str="Flow label type";
+ str = "Flow label type";
proto_tree_add_bits_item(comp_tree, hf_gsm_a_spare_bits, tvb, (curr_offset<<3), 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(comp_tree,hf_gsm_a_tft_flow_label_type,tvb,curr_offset,3,ENC_BIG_ENDIAN);
- curr_offset+=3;
- curr_len-=3;
- pf_length-=3;
+ proto_tree_add_item(comp_tree, hf_gsm_a_tft_flow_label_type, tvb, curr_offset, 3, ENC_BIG_ENDIAN);
+ curr_offset += 3;
+ curr_len -= 3;
+ pf_length -= 3;
break;
default:
- str="not specified";
- curr_offset+=pf_length;
- curr_len-=pf_length;
- pf_length=0;
+ str = "not specified";
+ curr_offset += pf_length;
+ curr_len -= pf_length;
+ pf_length = 0;
}
proto_item_append_text(tf, "%s (%u)", str, pack_component_type);
}
@@ -4813,13 +5018,15 @@ de_sm_tflow_temp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
if ((e_bit == 1) && curr_len) {
count = 0;
while (curr_len) {
+ proto_item *tf;
+ proto_tree *tf_tree;
pf_length = tvb_get_guint8(tvb, curr_offset+1);
- tf = proto_tree_add_text(tree, tvb, curr_offset, pf_length+2, "Parameter %d" ,count);
- tf_tree = proto_item_add_subtree(tf, ett_sm_tft );
- param = tvb_get_guint8(tvb, curr_offset);
+ tf = proto_tree_add_text(tree, tvb, curr_offset, pf_length+2, "Parameter %d", count);
+ tf_tree = proto_item_add_subtree(tf, ett_sm_tft);
+ param = tvb_get_guint8(tvb, curr_offset);
proto_tree_add_item(tf_tree, hf_gsm_a_tft_param_id, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
curr_offset += 2;
- curr_len -= 2;
+ curr_len -= 2;
switch (param) {
case 0x01:
proto_tree_add_text(tf_tree, tvb, curr_offset, pf_length, "Authorization token value: 0x%s",
@@ -4834,7 +5041,7 @@ de_sm_tflow_temp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
break;
case 0x03:
- for (i = 0; i < pf_length; i++) {
+ for (i=0; i<pf_length; i++) {
proto_tree_add_text(tf_tree, tvb, curr_offset+i, 1, "Packet filter identifier %d: %d",
i, tvb_get_guint8(tvb, curr_offset+i));
}
@@ -4846,14 +5053,14 @@ de_sm_tflow_temp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
break;
}
curr_offset += pf_length;
- curr_len -= pf_length;
+ curr_len -= pf_length;
count++;
}
}
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
- return(len);
+ return (len);
}
/*
@@ -4874,7 +5081,7 @@ de_sm_tmgi(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset,
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/*
@@ -4883,8 +5090,8 @@ de_sm_tmgi(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset,
static guint16
de_sm_mbms_bearer_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset, temp32;
- guint8 oct;
+ guint32 curr_offset, temp32;
+ guint8 oct;
const gchar *str;
curr_offset = offset;
@@ -4893,14 +5100,14 @@ de_sm_mbms_bearer_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint
switch (oct)
{
- case 0x00: str="Subscribed maximum bit rate for downlink/reserved"; break;
- case 0xff: str="0 kbps"; break;
- default: str = ep_strdup_printf("%u kbps", qos_calc_bitrate(oct));
+ case 0x00: str = "Subscribed maximum bit rate for downlink/reserved"; break;
+ case 0xff: str = "0 kbps"; break;
+ default: str = ep_strdup_printf("%u kbps", qos_calc_bitrate(oct));
}
proto_tree_add_uint_format_value(tree, hf_gsm_a_qos_max_bitrate_downl, tvb,
curr_offset, 1, oct, "%s (%u)", str, oct);
- curr_offset+= 1;
+ curr_offset += 1;
NO_MORE_DATA_CHECK(len);
@@ -4919,11 +5126,11 @@ de_sm_mbms_bearer_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint
proto_tree_add_uint_format_value(tree, hf_gsm_a_qos_max_bitrate_downl_ext, tvb,
curr_offset, 1, oct, "%s (%u)", str, oct);
- curr_offset+= 1;
+ curr_offset += 1;
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/*
@@ -4940,7 +5147,7 @@ de_sm_mbms_prot_conf_opt(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gu
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
- return(curr_offset - offset);
+ return (curr_offset - offset);
}
/*
@@ -4949,7 +5156,7 @@ de_sm_mbms_prot_conf_opt(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gu
static guint16
de_sm_enh_nsapi(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
+ guint8 oct;
const gchar *str;
oct = tvb_get_guint8(tvb, offset);
@@ -4966,7 +5173,7 @@ de_sm_enh_nsapi(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
offset, 1, oct, "%s (%u)", str, oct);
/* no length check possible */
- return(1);
+ return (1);
}
/*
@@ -4986,7 +5193,7 @@ de_sm_req_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
proto_tree_add_item(tree, hf_gsm_a_sm_req_type, tvb, offset, 1, ENC_BIG_ENDIAN);
/* no length check possible */
- return(1);
+ return (1);
}
/*
@@ -4999,7 +5206,7 @@ static const value_string gsm_a_sm_notif_ind_vals[] = {
};
static guint16
-de_sm_notif_ind(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+de_sm_notif_ind(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
guint32 curr_offset;
@@ -5007,70 +5214,97 @@ de_sm_notif_ind(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
proto_tree_add_item(tree, hf_gsm_a_sm_notif_ind, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- return(len);
+ return (len);
+}
+
+/*
+ * [10] 10.5.6.19 Connectivity type
+ */
+static const range_string gsm_a_sm_connectivity_type_vals[] = {
+ { 0x0, 0x0, "The PDN connection type is not indicated"},
+ { 0x1, 0x1, "The PDN connection is considered a LIPA PDN connection"},
+ { 0x2, 0xF, "The PDN connection type is not indicated"},
+ { 0, 0, NULL }
+};
+
+static guint16
+de_sm_connectivity_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+
+ curr_offset = offset;
+
+ proto_tree_add_item(tree, hf_gsm_a_sm_connectivity_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+
+ return (len);
}
guint16 (*gm_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string, int string_len) = {
/* GPRS Mobility Management Information Elements 10.5.5 */
- de_gmm_attach_res, /* Attach Result */
- de_gmm_attach_type, /* Attach Type */
- de_gmm_ciph_alg, /* Cipher Algorithm */
- de_gmm_tmsi_stat, /* TMSI Status */
- de_gmm_detach_type, /* Detach Type */
- de_gmm_drx_param, /* DRX Parameter */
- de_gmm_ftostby, /* Force to Standby */
- de_gmm_ftostby_h, /* Force to Standby - Info is in the high nibble */
- de_gmm_ptmsi_sig, /* P-TMSI Signature */
- de_gmm_ptmsi_sig2, /* P-TMSI Signature 2 */
- de_gmm_ident_type2, /* Identity Type 2 */
- de_gmm_imeisv_req, /* IMEISV Request */
- de_gmm_rec_npdu_lst, /* Receive N-PDU Numbers List */
- de_gmm_ms_net_cap, /* MS Network Capability */
- de_gmm_ms_radio_acc_cap,/* MS Radio Access Capability */
- de_gmm_cause, /* GMM Cause */
- de_gmm_rai, /* Routing Area Identification */
- de_gmm_rai2, /* Routing Area Identification 2 */
- de_gmm_update_res, /* Update Result */
- de_gmm_update_type, /* Update Type */
- de_gmm_ac_ref_nr, /* A&C Reference Number */
- de_gmm_ac_ref_nr_h, /* A&C Reference Number - Info is in the high nibble */
- de_gmm_service_type, /* Service Type */
- NULL /* no associated data */, /* Cell Notification */
- de_gmm_ps_lcs_cap, /* PS LCS Capability */
- de_gmm_net_feat_supp, /* Network Feature Support */
- de_gmm_rat_info_container, /* Inter RAT information container */
- de_gmm_req_ms_info, /* Requested MS information */
- NULL, /* UE network capability */
- de_gmm_eutran_irat_info_container, /* E-UTRAN inter RAT information container */
- de_gmm_voice_domain_pref, /* Voice domain preference and UE's usage setting */
+ de_gmm_attach_res, /* Attach Result */
+ de_gmm_attach_type, /* Attach Type */
+ de_gmm_ciph_alg, /* Cipher Algorithm */
+ de_gmm_tmsi_stat, /* TMSI Status */
+ de_gmm_detach_type, /* Detach Type */
+ de_gmm_drx_param, /* DRX Parameter */
+ de_gmm_ftostby, /* Force to Standby */
+ de_gmm_ftostby_h, /* Force to Standby - Info is in the high nibble */
+ de_gmm_ptmsi_sig, /* P-TMSI Signature */
+ de_gmm_ptmsi_sig2, /* P-TMSI Signature 2 */
+ de_gmm_ident_type2, /* Identity Type 2 */
+ de_gmm_imeisv_req, /* IMEISV Request */
+ de_gmm_rec_npdu_lst, /* Receive N-PDU Numbers List */
+ de_gmm_ms_net_cap, /* MS Network Capability */
+ de_gmm_ms_radio_acc_cap, /* MS Radio Access Capability */
+ de_gmm_cause, /* GMM Cause */
+ de_gmm_rai, /* Routing Area Identification */
+ de_gmm_rai2, /* Routing Area Identification 2 */
+ de_gmm_update_res, /* Update Result */
+ de_gmm_update_type, /* Update Type */
+ de_gmm_ac_ref_nr, /* A&C Reference Number */
+ de_gmm_ac_ref_nr_h, /* A&C Reference Number - Info is in the high nibble */
+ de_gmm_service_type, /* Service Type */
+ NULL /* no associated data */, /* Cell Notification */
+ de_gmm_ps_lcs_cap, /* PS LCS Capability */
+ de_gmm_net_feat_supp, /* Network Feature Support */
+ de_gmm_rat_info_container, /* Inter RAT information container */
+ de_gmm_req_ms_info, /* Requested MS information */
+ NULL, /* UE network capability */
+ de_gmm_eutran_irat_info_container, /* E-UTRAN inter RAT information container */
+ de_gmm_voice_domain_pref, /* Voice domain preference and UE's usage setting */
+ de_gmm_ptmsi_type, /* P-TMSI type */
+ de_gmm_lai_2, /* Location Area Identification 2 */
/* Session Management Information Elements 10.5.6 */
- de_sm_apn, /* Access Point Name */
- de_sm_nsapi, /* Network Service Access Point Identifier */
- de_sm_pco, /* Protocol Configuration Options */
- de_sm_pdp_addr, /* Packet Data Protocol Address */
- de_sm_qos, /* Quality Of Service */
- de_sm_cause, /* SM Cause */
- de_sm_cause_2, /* SM Cause 2 */
- de_sm_linked_ti, /* Linked TI */
- de_sm_sapi, /* LLC Service Access Point Identifier */
- de_sm_tear_down, /* Tear Down Indicator */
- de_sm_pflow_id, /* Packet Flow Identifier */
- de_sm_tflow_temp, /* Traffic Flow Template */
- de_sm_tmgi, /* Temporary Mobile Group Identity (TMGI) */
- de_sm_mbms_bearer_cap, /* MBMS bearer capabilities */
- de_sm_mbms_prot_conf_opt, /* MBMS protocol configuration options */
- de_sm_enh_nsapi, /* Enhanced network service access point identifier */
- de_sm_req_type, /* Request type */
- de_sm_notif_ind, /* Notification indicator */
+ de_sm_apn, /* Access Point Name */
+ de_sm_nsapi, /* Network Service Access Point Identifier */
+ de_sm_pco, /* Protocol Configuration Options */
+ de_sm_pdp_addr, /* Packet Data Protocol Address */
+ de_sm_qos, /* Quality Of Service */
+ de_sm_cause, /* SM Cause */
+ de_sm_cause_2, /* SM Cause 2 */
+ de_sm_linked_ti, /* Linked TI */
+ de_sm_sapi, /* LLC Service Access Point Identifier */
+ de_sm_tear_down, /* Tear Down Indicator */
+ de_sm_pflow_id, /* Packet Flow Identifier */
+ de_sm_tflow_temp, /* Traffic Flow Template */
+ de_sm_tmgi, /* Temporary Mobile Group Identity (TMGI) */
+ de_sm_mbms_bearer_cap, /* MBMS bearer capabilities */
+ de_sm_mbms_prot_conf_opt, /* MBMS protocol configuration options */
+ de_sm_enh_nsapi, /* Enhanced network service access point identifier */
+ de_sm_req_type, /* Request type */
+ de_sm_notif_ind, /* Notification indicator */
+ de_sm_connectivity_type, /* Connectivity type */
/* GPRS Common Information Elements 10.5.7 */
- de_gc_context_stat, /* PDP Context Status */
- de_gc_radio_prio, /* Radio Priority */
- de_gc_timer, /* GPRS Timer */
- de_gc_timer2, /* GPRS Timer 2 */
- de_gc_radio_prio2, /* Radio Priority 2 */
- de_gc_mbms_context_stat,/* 10.5.7.6 MBMS context status */
- de_gc_uplink_data_stat, /* 10.5.7.7 Uplink data status */
+ de_gc_context_stat, /* PDP Context Status */
+ de_gc_radio_prio, /* Radio Priority */
+ de_gc_timer, /* GPRS Timer */
+ de_gc_timer2, /* GPRS Timer 2 */
+ de_gc_timer3, /* GPRS Timer 3 */
+ de_gc_radio_prio2, /* Radio Priority 2 */
+ de_gc_mbms_context_stat, /* 10.5.7.6 MBMS context status */
+ de_gc_uplink_data_stat, /* 10.5.7.7 Uplink data status */
+ de_gc_device_properties, /* 10.5.7.8 Device properties */
NULL, /* NONE */
};
@@ -5087,50 +5321,58 @@ dtap_gmm_attach_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_RECV;
- ELEM_MAND_LV(GSM_A_PDU_TYPE_GM, DE_MS_NET_CAP, NULL);
+ ELEM_MAND_LV( GSM_A_PDU_TYPE_GM, DE_MS_NET_CAP, NULL);
/* Included in attach type
- ELEM_MAND_V(GSM_A_PDU_TYPE_COMMON, DE_CIPH_KEY_SEQ_NUM, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_COMMON, DE_CIPH_KEY_SEQ_NUM, NULL);
curr_offset--;
curr_len++;
*/
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_ATTACH_TYPE, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_ATTACH_TYPE, NULL);
+
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_DRX_PARAM, NULL);
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_DRX_PARAM, NULL);
+ ELEM_MAND_LV( GSM_A_PDU_TYPE_COMMON, DE_MID, NULL);
- ELEM_MAND_LV(GSM_A_PDU_TYPE_COMMON, DE_MID , NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_RAI, " - Old routing area identification");
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_RAI, " - Old routing area identification");
+ ELEM_MAND_LV( GSM_A_PDU_TYPE_GM, DE_MS_RAD_ACC_CAP, NULL);
- ELEM_MAND_LV(GSM_A_PDU_TYPE_GM, DE_MS_RAD_ACC_CAP , NULL);
+ ELEM_OPT_TV( 0x19, GSM_A_PDU_TYPE_GM, DE_P_TMSI_SIG, " - Old P-TMSI Signature");
- ELEM_OPT_TV( 0x19 , GSM_A_PDU_TYPE_GM, DE_P_TMSI_SIG, " - Old P-TMSI Signature");
+ ELEM_OPT_TV( 0x17, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER, " - Ready Timer");
- ELEM_OPT_TV( 0x17 , GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER , " - Ready Timer" );
+ ELEM_OPT_TV_SHORT( 0x90, GSM_A_PDU_TYPE_GM, DE_TMSI_STAT, NULL);
- ELEM_OPT_TV_SHORT( 0x90 , GSM_A_PDU_TYPE_GM, DE_TMSI_STAT , NULL);
+ ELEM_OPT_TLV( 0x33, GSM_A_PDU_TYPE_GM, DE_PS_LCS_CAP, NULL);
- ELEM_OPT_TLV( 0x33 , GSM_A_PDU_TYPE_GM, DE_PS_LCS_CAP , NULL);
+ ELEM_OPT_TLV( 0x11, GSM_A_PDU_TYPE_COMMON, DE_MS_CM_2, NULL);
- ELEM_OPT_TLV(0x11, GSM_A_PDU_TYPE_COMMON, DE_MS_CM_2, NULL);
+ ELEM_OPT_TLV( 0x20, GSM_A_PDU_TYPE_COMMON, DE_MS_CM_3, NULL);
- ELEM_OPT_TLV(0x20, GSM_A_PDU_TYPE_COMMON, DE_MS_CM_3, NULL);
+ ELEM_OPT_TLV( 0x40, GSM_A_PDU_TYPE_DTAP, DE_SUP_CODEC_LIST, NULL);
- ELEM_OPT_TLV(0x40, GSM_A_PDU_TYPE_DTAP, DE_SUP_CODEC_LIST, NULL);
+ ELEM_OPT_TLV( 0x58, NAS_PDU_TYPE_EMM, DE_EMM_UE_NET_CAP, NULL);
- ELEM_OPT_TLV(0x58, NAS_PDU_TYPE_EMM, DE_EMM_UE_NET_CAP, NULL);
+ ELEM_OPT_TLV( 0x1A, GSM_A_PDU_TYPE_COMMON, DE_MID, " - Additional mobile identity");
- ELEM_OPT_TLV(0x1A, GSM_A_PDU_TYPE_COMMON, DE_MID, " - Additional mobile identity");
+ ELEM_OPT_TLV( 0x1B, GSM_A_PDU_TYPE_GM, DE_RAI_2, " - Additional old routing area identification");
- ELEM_OPT_TLV(0x1B, GSM_A_PDU_TYPE_GM, DE_RAI_2, " - Additional old routing area identification");
+ ELEM_OPT_TLV( 0x5D, GSM_A_PDU_TYPE_GM, DE_VOICE_DOMAIN_PREF, NULL);
- ELEM_OPT_TLV(0x5D, GSM_A_PDU_TYPE_GM, DE_VOICE_DOMAIN_PREF, NULL);
+ ELEM_OPT_TV_SHORT(0xD0, GSM_A_PDU_TYPE_GM, DE_DEVICE_PROPERTIES, NULL);
+
+ ELEM_OPT_TV_SHORT(0xE0, GSM_A_PDU_TYPE_GM, DE_PTMSI_TYPE, NULL);
+
+ ELEM_OPT_TV_SHORT(0xC0, GSM_A_PDU_TYPE_COMMON, DE_MS_NET_FEAT_SUP, NULL);
+
+ ELEM_OPT_TLV(0x14, GSM_A_PDU_TYPE_GM, DE_LAI_2, " - Old location area identification");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5146,51 +5388,53 @@ dtap_gmm_attach_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_SENT;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_FORCE_TO_STAND_H, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_FORCE_TO_STAND_H, NULL);
curr_len++;
curr_offset--;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_ATTACH_RES, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_ATTACH_RES, NULL);
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER, NULL);
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_RAD_PRIO_2, " - Radio priority for TOM8");
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_RAD_PRIO_2, " - Radio priority for TOM8");
curr_len++;
curr_offset--;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_RAD_PRIO, " - Radio priority for SMS");
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_RAD_PRIO, " - Radio priority for SMS");
+
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_RAI, NULL);
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_RAI, NULL);
+ ELEM_OPT_TV( 0x19, GSM_A_PDU_TYPE_GM, DE_P_TMSI_SIG, NULL);
- ELEM_OPT_TV( 0x19 , GSM_A_PDU_TYPE_GM, DE_P_TMSI_SIG, NULL);
+ ELEM_OPT_TV( 0x17, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER, " - Negotiated Ready Timer");
- ELEM_OPT_TV( 0x17 , GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER , " - Negotiated Ready Timer" );
+ ELEM_OPT_TLV( 0x18, GSM_A_PDU_TYPE_COMMON, DE_MID, " - Allocated P-TMSI");
- ELEM_OPT_TLV( 0x18 , GSM_A_PDU_TYPE_COMMON, DE_MID , " - Allocated P-TMSI" );
+ ELEM_OPT_TLV( 0x23, GSM_A_PDU_TYPE_COMMON, DE_MID, NULL);
- ELEM_OPT_TLV( 0x23 , GSM_A_PDU_TYPE_COMMON, DE_MID , NULL);
+ ELEM_OPT_TV( 0x25, GSM_A_PDU_TYPE_GM, DE_GMM_CAUSE, NULL);
- ELEM_OPT_TV( 0x25 , GSM_A_PDU_TYPE_GM, DE_GMM_CAUSE , NULL);
+ ELEM_OPT_TLV( 0x2A, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2, " - T3302 value");
- ELEM_OPT_TLV( 0x2A , GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2 , " - T3302" );
+ ELEM_OPT_T( 0x8C, GSM_A_PDU_TYPE_GM, DE_CELL_NOT, NULL);
- ELEM_OPT_T( 0x8C , GSM_A_PDU_TYPE_GM, DE_CELL_NOT , NULL);
+ ELEM_OPT_TLV( 0x4A, GSM_A_PDU_TYPE_COMMON, DE_PLMN_LIST, NULL);
- ELEM_OPT_TLV( 0x4A , GSM_A_PDU_TYPE_COMMON, DE_PLMN_LIST , NULL);
+ ELEM_OPT_TV_SHORT( 0xB0, GSM_A_PDU_TYPE_GM, DE_NET_FEAT_SUP, NULL);
- ELEM_OPT_TV_SHORT( 0xB0 , GSM_A_PDU_TYPE_GM, DE_NET_FEAT_SUP , NULL);
+ ELEM_OPT_TLV( 0x34, GSM_A_PDU_TYPE_DTAP, DE_EMERGENCY_NUM_LIST, NULL);
- ELEM_OPT_TLV( 0x34 , GSM_A_PDU_TYPE_DTAP, DE_EMERGENCY_NUM_LIST , NULL);
+ ELEM_OPT_TV_SHORT( 0xA0, GSM_A_PDU_TYPE_GM, DE_REQ_MS_INFO, NULL);
- ELEM_OPT_TV_SHORT( 0xA0 , GSM_A_PDU_TYPE_GM , DE_REQ_MS_INFO , NULL);
+ ELEM_OPT_TLV( 0x37, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2, " - T3319 value");
- ELEM_OPT_TLV( 0x37 , GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2 , " - T3319" );
+ ELEM_OPT_TLV( 0x38, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2, " - T3323 value" );
- ELEM_OPT_TLV( 0x38 , GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2 , " - T3323" );
+ ELEM_OPT_TLV(0x39, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_3, " - T3312 extended value");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5207,13 +5451,13 @@ dtap_gmm_attach_com(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_RECV;
- ELEM_OPT_TLV(0x27, GSM_A_PDU_TYPE_GM, DE_RAT_INFO_CONTAINER, " - Inter RAT handover information");
+ ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_RAT_INFO_CONTAINER, " - Inter RAT handover information");
- ELEM_OPT_TLV(0x2B, GSM_A_PDU_TYPE_GM, DE_EUTRAN_IRAT_INFO_CONTAINER, " - E-UTRAN inter RAT handover information");
+ ELEM_OPT_TLV( 0x2B, GSM_A_PDU_TYPE_GM, DE_EUTRAN_IRAT_INFO_CONTAINER, " - E-UTRAN inter RAT handover information");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5229,13 +5473,15 @@ dtap_gmm_attach_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_SENT;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_GMM_CAUSE, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_GMM_CAUSE, NULL);
- ELEM_OPT_TLV( 0x2A , GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2 , " - T3302" );
+ ELEM_OPT_TLV( 0x2A, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2, " - T3302 value" );
+
+ ELEM_OPT_TLV(0x3A, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2, " - T3346 value");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5251,22 +5497,22 @@ dtap_gmm_detach_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_SENT;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_FORCE_TO_STAND_H, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_FORCE_TO_STAND_H, NULL);
/* Force to standy might be wrong - To decode it correct, we need the direction */
curr_len++;
curr_offset--;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_DETACH_TYPE, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_DETACH_TYPE, NULL);
- ELEM_OPT_TV( 0x25 , GSM_A_PDU_TYPE_GM, DE_GMM_CAUSE , NULL);
+ ELEM_OPT_TV( 0x25, GSM_A_PDU_TYPE_GM, DE_GMM_CAUSE, NULL);
- ELEM_OPT_TLV( 0x18 , GSM_A_PDU_TYPE_COMMON, DE_MID , " - P-TMSI" );
+ ELEM_OPT_TLV( 0x18, GSM_A_PDU_TYPE_COMMON, DE_MID, " - P-TMSI" );
- ELEM_OPT_TLV( 0x19 , GSM_A_PDU_TYPE_GM, DE_P_TMSI_SIG_2 , NULL);
+ ELEM_OPT_TLV( 0x19, GSM_A_PDU_TYPE_GM, DE_P_TMSI_SIG_2, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5282,17 +5528,17 @@ dtap_gmm_detach_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_RECV;
- if ( curr_len != 0 )
+ if (curr_len != 0 )
{
- ELEM_MAND_V(GSM_A_PDU_TYPE_COMMON, DE_SPARE_NIBBLE, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_COMMON, DE_SPARE_NIBBLE, NULL);
curr_len++;
curr_offset--;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_FORCE_TO_STAND, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_FORCE_TO_STAND, NULL);
}
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
@@ -5309,21 +5555,21 @@ dtap_gmm_ptmsi_realloc_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_SENT;
- ELEM_MAND_LV(GSM_A_PDU_TYPE_COMMON, DE_MID , " - Allocated P-TMSI" );
+ ELEM_MAND_LV( GSM_A_PDU_TYPE_COMMON, DE_MID, " - Allocated P-TMSI" );
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_RAI, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_RAI, NULL);
- ELEM_MAND_V(GSM_A_PDU_TYPE_COMMON, DE_SPARE_NIBBLE, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_COMMON, DE_SPARE_NIBBLE, NULL);
curr_len++;
curr_offset--;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_FORCE_TO_STAND, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_FORCE_TO_STAND, NULL);
- ELEM_OPT_TV( 0x19 , GSM_A_PDU_TYPE_GM, DE_P_TMSI_SIG , " - P-TMSI Signature" );
+ ELEM_OPT_TV( 0x19, GSM_A_PDU_TYPE_GM, DE_P_TMSI_SIG, " - P-TMSI Signature" );
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5339,7 +5585,7 @@ dtap_gmm_ptmsi_realloc_com(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_RECV;
@@ -5358,31 +5604,31 @@ dtap_gmm_auth_ciph_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guin
guint8 oct;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_SENT;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_IMEISV_REQ, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_IMEISV_REQ, NULL);
curr_offset--;
curr_len++;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_CIPH_ALG, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_CIPH_ALG, NULL);
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_AC_REF_NUM_H, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_AC_REF_NUM_H, NULL);
curr_offset--;
curr_len++;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_FORCE_TO_STAND, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_FORCE_TO_STAND, NULL);
- ELEM_OPT_TV( 0x21 , GSM_A_PDU_TYPE_DTAP, DE_AUTH_PARAM_RAND , NULL);
+ ELEM_OPT_TV( 0x21, GSM_A_PDU_TYPE_DTAP, DE_AUTH_PARAM_RAND, NULL);
#if 0
- ELEM_OPT_TV_SHORT( 0x08 , GSM_A_PDU_TYPE_COMMON, DE_CIPH_KEY_SEQ_NUM , NULL);
+ ELEM_OPT_TV_SHORT( 0x08, GSM_A_PDU_TYPE_COMMON, DE_CIPH_KEY_SEQ_NUM, NULL);
#else
- if ( curr_len > 0 )
+ if (curr_len > 0)
{
oct = tvb_get_guint8(tvb, curr_offset);
- if (( oct & 0xf0 ) == 0x80 )
+ if ((oct & 0xf0) == 0x80 )
{
/* The ciphering key sequence number is added here */
proto_tree_add_text(tree,
@@ -5396,13 +5642,13 @@ dtap_gmm_auth_ciph_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guin
}
#endif
- if ( curr_len == 0 )
+ if (curr_len == 0 )
{
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
return;
}
- ELEM_OPT_TLV( 0x28 , GSM_A_PDU_TYPE_DTAP, DE_AUTH_PARAM_AUTN , NULL);
+ ELEM_OPT_TLV( 0x28, GSM_A_PDU_TYPE_DTAP, DE_AUTH_PARAM_AUTN, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5418,21 +5664,21 @@ dtap_gmm_auth_ciph_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_RECV;
- ELEM_MAND_V(GSM_A_PDU_TYPE_COMMON, DE_SPARE_NIBBLE, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_COMMON, DE_SPARE_NIBBLE, NULL);
curr_offset--;
curr_len++;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_AC_REF_NUM, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_AC_REF_NUM, NULL);
- ELEM_OPT_TV( 0x22 , GSM_A_PDU_TYPE_DTAP, DE_AUTH_RESP_PARAM , NULL);
+ ELEM_OPT_TV( 0x22, GSM_A_PDU_TYPE_DTAP, DE_AUTH_RESP_PARAM, NULL);
- ELEM_OPT_TLV( 0x23 , GSM_A_PDU_TYPE_COMMON, DE_MID , " - IMEISV" );
+ ELEM_OPT_TLV( 0x23, GSM_A_PDU_TYPE_COMMON, DE_MID, " - IMEISV" );
- ELEM_OPT_TLV( 0x29 , GSM_A_PDU_TYPE_DTAP, DE_AUTH_RESP_PARAM_EXT , NULL);
+ ELEM_OPT_TLV( 0x29, GSM_A_PDU_TYPE_DTAP, DE_AUTH_RESP_PARAM_EXT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5447,7 +5693,7 @@ dtap_gmm_auth_ciph_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guin
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_SENT;
@@ -5465,13 +5711,13 @@ dtap_gmm_auth_ciph_fail(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_RECV;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_GMM_CAUSE, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_GMM_CAUSE, NULL);
- ELEM_OPT_TLV( 0x30 , GSM_A_PDU_TYPE_DTAP, DE_AUTH_FAIL_PARAM , NULL);
+ ELEM_OPT_TLV( 0x30, GSM_A_PDU_TYPE_DTAP, DE_AUTH_FAIL_PARAM, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5486,23 +5732,23 @@ dtap_gmm_ident_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_SENT;
/* If the half octet that are about to get decoded is the LAST in the octetstream, the macro will call return BEFORE we get a chance to fix the index. The end result will be that the first half-octet will be decoded but not the last. */
#if 0
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_ID_TYPE_2, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_ID_TYPE_2, NULL);
curr_offset--;
curr_len++;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_FORCE_TO_STAND_H, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_FORCE_TO_STAND_H, NULL);
#endif
elem_v(tvb, tree, pinfo, GSM_A_PDU_TYPE_GM, DE_FORCE_TO_STAND_H, curr_offset, NULL);
elem_v(tvb, tree, pinfo, GSM_A_PDU_TYPE_GM, DE_ID_TYPE_2, curr_offset, NULL);
- curr_offset+=1;
- curr_len-=1;
+ curr_offset += 1;
+ curr_len -= 1;
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5518,11 +5764,11 @@ dtap_gmm_ident_res(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_RECV;
- ELEM_MAND_LV(GSM_A_PDU_TYPE_COMMON, DE_MID , NULL);
+ ELEM_MAND_LV( GSM_A_PDU_TYPE_COMMON, DE_MID, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5538,53 +5784,61 @@ dtap_gmm_rau_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_RECV;
/* is included in update type
- ELEM_MAND_V(GSM_A_PDU_TYPE_COMMON, DE_CIPH_KEY_SEQ_NUM, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_COMMON, DE_CIPH_KEY_SEQ_NUM, NULL);
curr_offset--;
curr_len++;
*/
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_UPD_TYPE, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_UPD_TYPE, NULL);
+
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_RAI, " - Old routing area identification");
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_RAI, " - Old routing area identification");
+ ELEM_MAND_LV( GSM_A_PDU_TYPE_GM, DE_MS_RAD_ACC_CAP, NULL);
- ELEM_MAND_LV(GSM_A_PDU_TYPE_GM, DE_MS_RAD_ACC_CAP , NULL);
+ ELEM_OPT_TV( 0x19, GSM_A_PDU_TYPE_GM, DE_P_TMSI_SIG, " - Old P-TMSI Signature" );
- ELEM_OPT_TV( 0x19 , GSM_A_PDU_TYPE_GM, DE_P_TMSI_SIG , " - Old P-TMSI Signature" );
+ ELEM_OPT_TV( 0x17, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER, " - Requested Ready Timer" );
- ELEM_OPT_TV( 0x17 , GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER , " - Requested Ready Timer" );
+ ELEM_OPT_TV( 0x27, GSM_A_PDU_TYPE_GM, DE_DRX_PARAM, NULL);
- ELEM_OPT_TV( 0x27 , GSM_A_PDU_TYPE_GM, DE_DRX_PARAM , NULL);
+ ELEM_OPT_TV_SHORT( 0x90, GSM_A_PDU_TYPE_GM, DE_TMSI_STAT, NULL);
- ELEM_OPT_TV_SHORT( 0x90 , GSM_A_PDU_TYPE_GM, DE_TMSI_STAT , NULL);
+ ELEM_OPT_TLV( 0x18, GSM_A_PDU_TYPE_COMMON, DE_MID, " - P-TMSI" );
- ELEM_OPT_TLV( 0x18 , GSM_A_PDU_TYPE_COMMON, DE_MID , " - P-TMSI" );
+ ELEM_OPT_TLV( 0x31, GSM_A_PDU_TYPE_GM, DE_MS_NET_CAP, NULL);
- ELEM_OPT_TLV( 0x31 , GSM_A_PDU_TYPE_GM, DE_MS_NET_CAP , NULL);
+ ELEM_OPT_TLV( 0x32, GSM_A_PDU_TYPE_GM, DE_PDP_CONTEXT_STAT, NULL);
- ELEM_OPT_TLV( 0x32 , GSM_A_PDU_TYPE_GM, DE_PDP_CONTEXT_STAT , NULL);
+ ELEM_OPT_TLV( 0x33, GSM_A_PDU_TYPE_GM, DE_PS_LCS_CAP, NULL);
- ELEM_OPT_TLV( 0x33 , GSM_A_PDU_TYPE_GM, DE_PS_LCS_CAP , NULL);
+ ELEM_OPT_TLV( 0x35, GSM_A_PDU_TYPE_GM, DE_MBMS_CTX_STATUS, NULL);
- ELEM_OPT_TLV(0x35, GSM_A_PDU_TYPE_GM, DE_MBMS_CTX_STATUS, NULL);
+ ELEM_OPT_TLV( 0x58, NAS_PDU_TYPE_EMM, DE_EMM_UE_NET_CAP, NULL);
- ELEM_OPT_TLV(0x58, NAS_PDU_TYPE_EMM, DE_EMM_UE_NET_CAP, NULL);
+ ELEM_OPT_TLV( 0x1A, GSM_A_PDU_TYPE_COMMON, DE_MID, " - Additional mobile identity");
- ELEM_OPT_TLV(0x1A, GSM_A_PDU_TYPE_COMMON, DE_MID, " - Additional mobile identity");
+ ELEM_OPT_TLV( 0x1B, GSM_A_PDU_TYPE_GM, DE_RAI_2, " - Additional old routing area identification");
- ELEM_OPT_TLV(0x1B, GSM_A_PDU_TYPE_GM, DE_RAI_2, " - Additional old routing area identification");
+ ELEM_OPT_TLV( 0x11, GSM_A_PDU_TYPE_COMMON, DE_MS_CM_2, NULL);
- ELEM_OPT_TLV(0x11, GSM_A_PDU_TYPE_COMMON, DE_MS_CM_2, NULL);
+ ELEM_OPT_TLV( 0x20, GSM_A_PDU_TYPE_COMMON, DE_MS_CM_3, NULL);
- ELEM_OPT_TLV(0x20, GSM_A_PDU_TYPE_COMMON, DE_MS_CM_3, NULL);
+ ELEM_OPT_TLV( 0x40, GSM_A_PDU_TYPE_DTAP, DE_SUP_CODEC_LIST, NULL);
- ELEM_OPT_TLV(0x40, GSM_A_PDU_TYPE_DTAP, DE_SUP_CODEC_LIST, NULL);
+ ELEM_OPT_TLV( 0x5D, GSM_A_PDU_TYPE_GM, DE_VOICE_DOMAIN_PREF, NULL);
- ELEM_OPT_TLV(0x5D, GSM_A_PDU_TYPE_GM, DE_VOICE_DOMAIN_PREF, NULL);
+ ELEM_OPT_TV_SHORT(0xE0, GSM_A_PDU_TYPE_GM, DE_PTMSI_TYPE, NULL);
+
+ ELEM_OPT_TV_SHORT(0xD0, GSM_A_PDU_TYPE_GM, DE_DEVICE_PROPERTIES, NULL);
+
+ ELEM_OPT_TV_SHORT(0xC0, GSM_A_PDU_TYPE_COMMON, DE_MS_NET_FEAT_SUP, NULL);
+
+ ELEM_OPT_TLV(0x14, GSM_A_PDU_TYPE_GM, DE_LAI_2, " - Old location area identification");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5600,51 +5854,53 @@ dtap_gmm_rau_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_SENT;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_UPD_RES, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_UPD_RES, NULL);
curr_offset--;
curr_len++;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_FORCE_TO_STAND, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_FORCE_TO_STAND, NULL);
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER, " - Periodic RA update timer");
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER, " - Periodic RA update timer");
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_RAI, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_RAI, NULL);
- ELEM_OPT_TV( 0x19 , GSM_A_PDU_TYPE_GM, DE_P_TMSI_SIG , NULL);
+ ELEM_OPT_TV( 0x19, GSM_A_PDU_TYPE_GM, DE_P_TMSI_SIG, NULL);
- ELEM_OPT_TLV( 0x18 , GSM_A_PDU_TYPE_COMMON, DE_MID , " - Allocated P-TMSI");
+ ELEM_OPT_TLV( 0x18, GSM_A_PDU_TYPE_COMMON, DE_MID, " - Allocated P-TMSI");
- ELEM_OPT_TLV( 0x23 , GSM_A_PDU_TYPE_COMMON, DE_MID , " - MS identity");
+ ELEM_OPT_TLV( 0x23, GSM_A_PDU_TYPE_COMMON, DE_MID, " - MS identity");
- ELEM_OPT_TLV( 0x26 , GSM_A_PDU_TYPE_GM, DE_REC_N_PDU_NUM_LIST , NULL);
+ ELEM_OPT_TLV( 0x26, GSM_A_PDU_TYPE_GM, DE_REC_N_PDU_NUM_LIST, NULL);
- ELEM_OPT_TV( 0x17 , GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER , " - Negotiated Ready Timer" );
+ ELEM_OPT_TV( 0x17, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER, " - Negotiated Ready Timer" );
- ELEM_OPT_TV( 0x25 , GSM_A_PDU_TYPE_GM, DE_GMM_CAUSE , NULL);
+ ELEM_OPT_TV( 0x25, GSM_A_PDU_TYPE_GM, DE_GMM_CAUSE, NULL);
- ELEM_OPT_TLV( 0x2A , GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2 , " - T3302" );
+ ELEM_OPT_TLV( 0x2A, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2, " - T3302 value" );
- ELEM_OPT_T( 0x8C , GSM_A_PDU_TYPE_GM, DE_CELL_NOT , NULL);
+ ELEM_OPT_T( 0x8C, GSM_A_PDU_TYPE_GM, DE_CELL_NOT, NULL);
- ELEM_OPT_TLV( 0x4A , GSM_A_PDU_TYPE_COMMON, DE_PLMN_LIST , NULL);
+ ELEM_OPT_TLV( 0x4A, GSM_A_PDU_TYPE_COMMON, DE_PLMN_LIST, NULL);
- ELEM_OPT_TLV( 0x32 , GSM_A_PDU_TYPE_GM, DE_PDP_CONTEXT_STAT , NULL);
+ ELEM_OPT_TLV( 0x32, GSM_A_PDU_TYPE_GM, DE_PDP_CONTEXT_STAT, NULL);
- ELEM_OPT_TV_SHORT ( 0xB0 , GSM_A_PDU_TYPE_GM, DE_NET_FEAT_SUP , NULL);
+ ELEM_OPT_TV_SHORT( 0xB0, GSM_A_PDU_TYPE_GM, DE_NET_FEAT_SUP, NULL);
- ELEM_OPT_TLV( 0x34 , GSM_A_PDU_TYPE_DTAP, DE_EMERGENCY_NUM_LIST , NULL);
+ ELEM_OPT_TLV( 0x34, GSM_A_PDU_TYPE_DTAP, DE_EMERGENCY_NUM_LIST, NULL);
- ELEM_OPT_TLV(0x35 , GSM_A_PDU_TYPE_GM, DE_MBMS_CTX_STATUS , NULL);
+ ELEM_OPT_TLV( 0x35, GSM_A_PDU_TYPE_GM, DE_MBMS_CTX_STATUS, NULL);
- ELEM_OPT_TV_SHORT(0xA0 , GSM_A_PDU_TYPE_GM , DE_REQ_MS_INFO , NULL);
+ ELEM_OPT_TV_SHORT( 0xA0, GSM_A_PDU_TYPE_GM, DE_REQ_MS_INFO, NULL);
- ELEM_OPT_TLV(0x37 , GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2 , " - T3319");
+ ELEM_OPT_TLV( 0x37, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2, " - T3319 value");
- ELEM_OPT_TLV(0x38 , GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2 , " - T3323");
+ ELEM_OPT_TLV( 0x38, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2, " - T3323 value");
+
+ ELEM_OPT_TLV(0x39, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_3, " - T3312 extended value");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5660,15 +5916,15 @@ dtap_gmm_rau_com(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_RECV;
/* [7] 10.5.5.11 */
- ELEM_OPT_TLV( 0x26 , GSM_A_PDU_TYPE_GM, DE_REC_N_PDU_NUM_LIST , NULL);
+ ELEM_OPT_TLV( 0x26, GSM_A_PDU_TYPE_GM, DE_REC_N_PDU_NUM_LIST, NULL);
/* Inter RAT information container 10.5.5.24 TS 24.008 version 6.8.0 Release 6 */
- ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_RAT_INFO_CONTAINER , " - Inter RAT handover information");
+ ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_RAT_INFO_CONTAINER, " - Inter RAT handover information");
- ELEM_OPT_TLV(0x2B, GSM_A_PDU_TYPE_GM, DE_EUTRAN_IRAT_INFO_CONTAINER, " - E-UTRAN inter RAT handover information");
+ ELEM_OPT_TLV( 0x2B, GSM_A_PDU_TYPE_GM, DE_EUTRAN_IRAT_INFO_CONTAINER, " - E-UTRAN inter RAT handover information");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5684,19 +5940,21 @@ dtap_gmm_rau_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_SENT;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_GMM_CAUSE, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_GMM_CAUSE, NULL);
- ELEM_MAND_V(GSM_A_PDU_TYPE_COMMON, DE_SPARE_NIBBLE, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_COMMON, DE_SPARE_NIBBLE, NULL);
curr_offset--;
curr_len++;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_FORCE_TO_STAND, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_FORCE_TO_STAND, NULL);
+
+ ELEM_OPT_TLV(0x2A, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2, " - T3302 value");
- ELEM_OPT_TLV( 0x26 , GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2 , " - T3302" );
+ ELEM_OPT_TLV(0x3A, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2, " - T3346 value");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5712,11 +5970,11 @@ dtap_gmm_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 off
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_UNKNOWN;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_GMM_CAUSE, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_GMM_CAUSE, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5732,21 +5990,21 @@ dtap_gmm_information(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_SENT;
- ELEM_OPT_TLV( 0x43 , GSM_A_PDU_TYPE_DTAP, DE_NETWORK_NAME , " - Full Name" );
+ ELEM_OPT_TLV( 0x43, GSM_A_PDU_TYPE_DTAP, DE_NETWORK_NAME, " - Full Name" );
- ELEM_OPT_TLV( 0x45 , GSM_A_PDU_TYPE_DTAP, DE_NETWORK_NAME , " - Short Name" );
+ ELEM_OPT_TLV( 0x45, GSM_A_PDU_TYPE_DTAP, DE_NETWORK_NAME, " - Short Name" );
- ELEM_OPT_TV( 0x46 , GSM_A_PDU_TYPE_DTAP, DE_TIME_ZONE , NULL);
+ ELEM_OPT_TV( 0x46, GSM_A_PDU_TYPE_DTAP, DE_TIME_ZONE, NULL);
- ELEM_OPT_TV( 0x47 , GSM_A_PDU_TYPE_DTAP, DE_TIME_ZONE_TIME , NULL);
+ ELEM_OPT_TV( 0x47, GSM_A_PDU_TYPE_DTAP, DE_TIME_ZONE_TIME, NULL);
- ELEM_OPT_TLV( 0x48 , GSM_A_PDU_TYPE_DTAP, DE_LSA_ID , NULL);
+ ELEM_OPT_TLV( 0x48, GSM_A_PDU_TYPE_DTAP, DE_LSA_ID, NULL);
- ELEM_OPT_TLV( 0x49 , GSM_A_PDU_TYPE_DTAP, DE_DAY_SAVING_TIME , NULL);
+ ELEM_OPT_TLV( 0x49, GSM_A_PDU_TYPE_DTAP, DE_DAY_SAVING_TIME, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5762,27 +6020,29 @@ dtap_gmm_service_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_RECV;
/* Is included in SRVC TYPE
- ELEM_MAND_V(GSM_A_PDU_TYPE_COMMON, DE_CIPH_KEY_SEQ_NUM, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_COMMON, DE_CIPH_KEY_SEQ_NUM, NULL);
curr_offset--;
curr_len++;
*/
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_SRVC_TYPE, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_SRVC_TYPE, NULL);
/* P-TMSI Mobile station identity 10.5.1.4 M LV 6 */
- ELEM_MAND_LV(GSM_A_PDU_TYPE_COMMON, DE_MID, NULL);
+ ELEM_MAND_LV( GSM_A_PDU_TYPE_COMMON, DE_MID, NULL);
- ELEM_OPT_TLV( 0x32 , GSM_A_PDU_TYPE_GM, DE_PDP_CONTEXT_STAT , NULL);
+ ELEM_OPT_TLV( 0x32, GSM_A_PDU_TYPE_GM, DE_PDP_CONTEXT_STAT, NULL);
/* MBMS context status 10.5.7.6 TLV 2 - 18 */
- ELEM_OPT_TLV( 0x35 , GSM_A_PDU_TYPE_GM, DE_MBMS_CTX_STATUS , NULL);
+ ELEM_OPT_TLV( 0x35, GSM_A_PDU_TYPE_GM, DE_MBMS_CTX_STATUS, NULL);
+
+ ELEM_OPT_TLV( 0x36, GSM_A_PDU_TYPE_GM, DE_UPLINK_DATA_STATUS, NULL);
- ELEM_OPT_TLV(0x36, GSM_A_PDU_TYPE_GM, DE_UPLINK_DATA_STATUS, NULL);
+ ELEM_OPT_TV_SHORT(0xD0, GSM_A_PDU_TYPE_GM, DE_DEVICE_PROPERTIES, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5798,14 +6058,14 @@ dtap_gmm_service_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_SENT;
- ELEM_OPT_TLV( 0x32 , GSM_A_PDU_TYPE_GM, DE_PDP_CONTEXT_STAT , NULL);
+ ELEM_OPT_TLV( 0x32, GSM_A_PDU_TYPE_GM, DE_PDP_CONTEXT_STAT, NULL);
/* MBMS context status 10.5.7.6 TLV 2 - 18 */
- ELEM_OPT_TLV( 0x35 , GSM_A_PDU_TYPE_GM, DE_MBMS_CTX_STATUS , NULL);
+ ELEM_OPT_TLV( 0x35, GSM_A_PDU_TYPE_GM, DE_MBMS_CTX_STATUS, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5821,11 +6081,13 @@ dtap_gmm_service_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_SENT;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_GMM_CAUSE, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_GMM_CAUSE, NULL);
+
+ ELEM_OPT_TLV(0x3A, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2, " - T3346 value");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5842,25 +6104,27 @@ dtap_sm_act_pdp_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_UNKNOWN;
/* MS to network */
pinfo->link_dir = P2P_DIR_UL;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_NET_SAPI, " - Requested NSAPI");
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_NET_SAPI, " - Requested NSAPI");
+
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_LLC_SAPI, " - Requested LLC SAPI");
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_LLC_SAPI, " - Requested LLC SAPI");
+ ELEM_MAND_LV( GSM_A_PDU_TYPE_GM, DE_QOS, " - Requested QoS" );
- ELEM_MAND_LV(GSM_A_PDU_TYPE_GM, DE_QOS , " - Requested QoS" );
+ ELEM_MAND_LV( GSM_A_PDU_TYPE_GM, DE_PD_PRO_ADDR, " - Requested PDP address" );
- ELEM_MAND_LV(GSM_A_PDU_TYPE_GM, DE_PD_PRO_ADDR , " - Requested PDP address" );
+ ELEM_OPT_TLV( 0x28, GSM_A_PDU_TYPE_GM, DE_ACC_POINT_NAME, NULL);
- ELEM_OPT_TLV( 0x28 , GSM_A_PDU_TYPE_GM, DE_ACC_POINT_NAME , NULL);
+ ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
- ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL);
+ ELEM_OPT_TV_SHORT( 0xA0, GSM_A_PDU_TYPE_GM, DE_REQ_TYPE, NULL);
- ELEM_OPT_TV_SHORT(0xA0, GSM_A_PDU_TYPE_GM, DE_REQ_TYPE, NULL);
+ ELEM_OPT_TV_SHORT(0xC0, GSM_A_PDU_TYPE_GM, DE_DEVICE_PROPERTIES, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5877,32 +6141,34 @@ dtap_sm_act_pdp_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_UNKNOWN;
/* Network to MS*/
pinfo->link_dir = P2P_DIR_DL;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_LLC_SAPI, " - Negotiated LLC SAPI");
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_LLC_SAPI, " - Negotiated LLC SAPI");
- ELEM_MAND_LV(GSM_A_PDU_TYPE_GM, DE_QOS , " - Negotiated QoS" );
+ ELEM_MAND_LV( GSM_A_PDU_TYPE_GM, DE_QOS, " - Negotiated QoS" );
#if 0
/* This is done automatically */
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_SPARE, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_SPARE, NULL);
curr_offset--;
curr_len++;
#endif
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_RAD_PRIO, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_RAD_PRIO, NULL);
- ELEM_OPT_TLV( 0x2B , GSM_A_PDU_TYPE_GM, DE_PD_PRO_ADDR , " - PDP address");
+ ELEM_OPT_TLV( 0x2B, GSM_A_PDU_TYPE_GM, DE_PD_PRO_ADDR, " - PDP address");
- ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL);
+ ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
- ELEM_OPT_TLV( 0x34 , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
+ ELEM_OPT_TLV( 0x34, GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID, NULL);
- ELEM_OPT_TLV( 0x39 , GSM_A_PDU_TYPE_GM, DE_SM_CAUSE_2, " - SM cause");
+ ELEM_OPT_TLV( 0x39, GSM_A_PDU_TYPE_GM, DE_SM_CAUSE_2, " - SM cause");
+
+ ELEM_OPT_TV_SHORT(0xB0 , GSM_A_PDU_TYPE_GM, DE_SM_CONNECTIVITY_TYPE, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5919,15 +6185,17 @@ dtap_sm_act_pdp_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_UNKNOWN;
/* Network to MS*/
pinfo->link_dir = P2P_DIR_DL;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_SM_CAUSE, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_SM_CAUSE, NULL);
+
+ ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
- ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL);
+ ELEM_OPT_TLV(0x37, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_3, " - T3396 value");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5944,24 +6212,26 @@ dtap_sm_act_sec_pdp_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_UNKNOWN;
/* MS to Network */
pinfo->link_dir = P2P_DIR_UL;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_NET_SAPI, " - Requested NSAPI");
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_NET_SAPI, " - Requested NSAPI");
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_LLC_SAPI, " - Requested LLC SAPI");
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_LLC_SAPI, " - Requested LLC SAPI");
- ELEM_MAND_LV(GSM_A_PDU_TYPE_GM, DE_QOS , " - Requested QoS" );
+ ELEM_MAND_LV( GSM_A_PDU_TYPE_GM, DE_QOS, " - Requested QoS" );
- ELEM_MAND_LV(GSM_A_PDU_TYPE_GM, DE_LINKED_TI , NULL);
+ ELEM_MAND_LV( GSM_A_PDU_TYPE_GM, DE_LINKED_TI, NULL);
/* 3GPP TS 24.008 version 6.8.0 Release 6, 36 TFT Traffic Flow Template 10.5.6.12 O TLV 3-257 */
- ELEM_OPT_TLV( 0x36 , GSM_A_PDU_TYPE_GM, DE_TRAFFIC_FLOW_TEMPLATE , NULL);
+ ELEM_OPT_TLV( 0x36, GSM_A_PDU_TYPE_GM, DE_TRAFFIC_FLOW_TEMPLATE, NULL);
- ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL);
+ ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
+
+ ELEM_OPT_TV_SHORT(0xC0, GSM_A_PDU_TYPE_GM, DE_DEVICE_PROPERTIES, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5978,28 +6248,28 @@ dtap_sm_act_sec_pdp_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_UNKNOWN;
/* Network to MS*/
pinfo->link_dir = P2P_DIR_DL;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_LLC_SAPI, " - Negotiated LLC SAPI");
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_LLC_SAPI, " - Negotiated LLC SAPI");
- ELEM_MAND_LV(GSM_A_PDU_TYPE_GM, DE_QOS , " - Negotiated QoS" );
+ ELEM_MAND_LV( GSM_A_PDU_TYPE_GM, DE_QOS, " - Negotiated QoS" );
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_RAD_PRIO, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_RAD_PRIO, NULL);
#if 0
/* This is done automatically */
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_SPARE, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_SPARE, NULL);
curr_offset--;
curr_len++;
#endif
- ELEM_OPT_TLV( 0x34 , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
+ ELEM_OPT_TLV( 0x34, GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID, NULL);
- ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL);
+ ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -6016,15 +6286,17 @@ dtap_sm_act_sec_pdp_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_UNKNOWN;
/* Network to MS*/
pinfo->link_dir = P2P_DIR_DL;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_SM_CAUSE, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_SM_CAUSE, NULL);
+
+ ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
- ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL);
+ ELEM_OPT_TLV(0x37, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_3, " - T3396 value");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -6041,17 +6313,17 @@ dtap_sm_req_pdp_act(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_UNKNOWN;
/* Network to MS*/
pinfo->link_dir = P2P_DIR_DL;
- ELEM_MAND_LV(GSM_A_PDU_TYPE_GM, DE_PD_PRO_ADDR , " - Offered PDP address" );
+ ELEM_MAND_LV( GSM_A_PDU_TYPE_GM, DE_PD_PRO_ADDR, " - Offered PDP address" );
- ELEM_OPT_TLV( 0x28 , GSM_A_PDU_TYPE_GM, DE_ACC_POINT_NAME , NULL);
+ ELEM_OPT_TLV( 0x28, GSM_A_PDU_TYPE_GM, DE_ACC_POINT_NAME, NULL);
- ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL);
+ ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -6068,15 +6340,15 @@ dtap_sm_req_pdp_act_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_UNKNOWN;
/* MS to Network */
pinfo->link_dir = P2P_DIR_UL;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_SM_CAUSE, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_SM_CAUSE, NULL);
- ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL);
+ ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -6093,31 +6365,31 @@ dtap_sm_mod_pdp_req_net(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_UNKNOWN;
/* Network to MS */
pinfo->link_dir = P2P_DIR_DL;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM,DE_RAD_PRIO, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_RAD_PRIO, NULL);
#if 0
/* This is done automatically */
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_SPARE, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_SPARE, NULL);
curr_offset--;
curr_len++;
#endif
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_LLC_SAPI, " - Requested LLC SAPI");
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_LLC_SAPI, " - Requested LLC SAPI");
- ELEM_MAND_LV(GSM_A_PDU_TYPE_GM, DE_QOS , " - New QoS" );
+ ELEM_MAND_LV( GSM_A_PDU_TYPE_GM, DE_QOS, " - New QoS" );
- ELEM_OPT_TLV( 0x2B , GSM_A_PDU_TYPE_GM, DE_PD_PRO_ADDR , " - PDP address");
+ ELEM_OPT_TLV( 0x2B, GSM_A_PDU_TYPE_GM, DE_PD_PRO_ADDR, " - PDP address");
- ELEM_OPT_TLV( 0x34 , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
+ ELEM_OPT_TLV( 0x34, GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID, NULL);
- ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL);
+ ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
- ELEM_OPT_TLV(0x36 , GSM_A_PDU_TYPE_GM, DE_TRAFFIC_FLOW_TEMPLATE , NULL);
+ ELEM_OPT_TLV( 0x36, GSM_A_PDU_TYPE_GM, DE_TRAFFIC_FLOW_TEMPLATE, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -6134,19 +6406,21 @@ dtap_sm_mod_pdp_req_ms(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guin
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_UNKNOWN;
/* MS to Network */
pinfo->link_dir = P2P_DIR_UL;
- ELEM_OPT_TV( 0x32 , GSM_A_PDU_TYPE_GM, DE_LLC_SAPI , " - Requested LLC SAPI" );
+ ELEM_OPT_TV( 0x32, GSM_A_PDU_TYPE_GM, DE_LLC_SAPI, " - Requested LLC SAPI" );
+
+ ELEM_OPT_TLV( 0x30, GSM_A_PDU_TYPE_GM, DE_QOS, " - Requested new QoS" );
- ELEM_OPT_TLV( 0x30 , GSM_A_PDU_TYPE_GM, DE_QOS , " - Requested new QoS" );
+ ELEM_OPT_TLV( 0x31, GSM_A_PDU_TYPE_GM, DE_TRAFFIC_FLOW_TEMPLATE, " - New TFT" );
- ELEM_OPT_TLV( 0x31 , GSM_A_PDU_TYPE_GM, DE_TRAFFIC_FLOW_TEMPLATE , " - New TFT" );
+ ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
- ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL);
+ ELEM_OPT_TV_SHORT(0xC0, GSM_A_PDU_TYPE_GM, DE_DEVICE_PROPERTIES, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -6163,13 +6437,13 @@ dtap_sm_mod_pdp_acc_ms(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guin
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_UNKNOWN;
/* MS to Network */
pinfo->link_dir = P2P_DIR_UL;
- ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL);
+ ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -6186,21 +6460,21 @@ dtap_sm_mod_pdp_acc_net(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_UNKNOWN;
/* Network to MS */
pinfo->link_dir = P2P_DIR_DL;
- ELEM_OPT_TLV( 0x30 , GSM_A_PDU_TYPE_GM, DE_QOS , " - Negotiated QoS" );
+ ELEM_OPT_TLV( 0x30, GSM_A_PDU_TYPE_GM, DE_QOS, " - Negotiated QoS" );
- ELEM_OPT_TV( 0x32 , GSM_A_PDU_TYPE_GM, DE_LLC_SAPI , " - Negotiated LLC SAPI" );
+ ELEM_OPT_TV( 0x32, GSM_A_PDU_TYPE_GM, DE_LLC_SAPI, " - Negotiated LLC SAPI" );
- ELEM_OPT_TV_SHORT ( 0x80 , GSM_A_PDU_TYPE_GM , DE_RAD_PRIO , " - New radio priority" );
+ ELEM_OPT_TV_SHORT ( 0x80, GSM_A_PDU_TYPE_GM, DE_RAD_PRIO, " - New radio priority" );
- ELEM_OPT_TLV( 0x34 , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
+ ELEM_OPT_TLV( 0x34, GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID, NULL);
- ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL);
+ ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -6217,16 +6491,18 @@ dtap_sm_mod_pdp_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_UNKNOWN;
/* Network or the MS */
pinfo->link_dir = LINK_DIR_UNKNOWN;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_SM_CAUSE, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_SM_CAUSE, NULL);
- ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL);
+ ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
+
+ ELEM_OPT_TLV(0x37, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_3, " - T3396 value");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -6243,19 +6519,19 @@ dtap_sm_deact_pdp_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_UNKNOWN;
pinfo->link_dir = LINK_DIR_UNKNOWN;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_SM_CAUSE, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_SM_CAUSE, NULL);
- ELEM_OPT_TV_SHORT( 0x90 , GSM_A_PDU_TYPE_GM , DE_TEAR_DOWN_IND , NULL);
+ ELEM_OPT_TV_SHORT( 0x90, GSM_A_PDU_TYPE_GM, DE_TEAR_DOWN_IND, NULL);
- ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL);
+ ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
/* MBMS context status 10.5.7.6 TLV 2 - 18 */
- ELEM_OPT_TLV( 0x35 , GSM_A_PDU_TYPE_GM, DE_MBMS_CTX_STATUS , NULL);
+ ELEM_OPT_TLV( 0x35, GSM_A_PDU_TYPE_GM, DE_MBMS_CTX_STATUS, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -6272,15 +6548,15 @@ dtap_sm_deact_pdp_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_UNKNOWN;
pinfo->link_dir = LINK_DIR_UNKNOWN;
- ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL);
+ ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
/* MBMS context status 10.5.7.6 TLV 2 - 18 */
- ELEM_OPT_TLV( 0x35 , GSM_A_PDU_TYPE_GM, DE_MBMS_CTX_STATUS , NULL);
+ ELEM_OPT_TLV( 0x35, GSM_A_PDU_TYPE_GM, DE_MBMS_CTX_STATUS, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -6297,22 +6573,22 @@ dtap_sm_req_sec_pdp_act(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_UNKNOWN;
pinfo->link_dir = P2P_DIR_DL;
/* Required QoS Quality of service 10.5.6.5 M LV 13-17 */
- ELEM_MAND_LV(GSM_A_PDU_TYPE_GM, DE_QOS , " - Required QoS");
+ ELEM_MAND_LV( GSM_A_PDU_TYPE_GM, DE_QOS, " - Required QoS");
/* Linked TI Linked TI 10.5.6.7 M LV 2-3 */
- ELEM_MAND_LV(GSM_A_PDU_TYPE_GM, DE_LINKED_TI , NULL);
+ ELEM_MAND_LV( GSM_A_PDU_TYPE_GM, DE_LINKED_TI, NULL);
/* 36 TFT Traffic Flow Template 10.5.6.12 O TLV 3-257 */
- ELEM_OPT_TLV(0x36, GSM_A_PDU_TYPE_GM, DE_TRAFFIC_FLOW_TEMPLATE, NULL);
+ ELEM_OPT_TLV( 0x36, GSM_A_PDU_TYPE_GM, DE_TRAFFIC_FLOW_TEMPLATE, NULL);
/* 27 Protocol configuration options Protocol configuration options 10.5.6.3 O TLV 3 - 253 */
- ELEM_OPT_TLV(0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
+ ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -6329,16 +6605,16 @@ dtap_sm_req_sec_pdp_act_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_UNKNOWN;
pinfo->link_dir = P2P_DIR_UL;
/* SM cause SM cause 10.5.6.6 M V 1 */
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_SM_CAUSE, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_SM_CAUSE, NULL);
/* 27 Protocol configuration options Protocol configuration options 10.5.6.3 O TLV 3 - 253 */
- ELEM_OPT_TLV(0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
+ ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -6355,12 +6631,12 @@ dtap_sm_notif(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offse
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_UNKNOWN;
pinfo->link_dir = P2P_DIR_DL;
- ELEM_MAND_LV(GSM_A_PDU_TYPE_GM, DE_SM_NOTIF_IND, NULL);
+ ELEM_MAND_LV( GSM_A_PDU_TYPE_GM, DE_SM_NOTIF_IND, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -6377,12 +6653,12 @@ dtap_sm_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offs
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_UNKNOWN;
pinfo->link_dir = LINK_DIR_UNKNOWN;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_SM_CAUSE, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_SM_CAUSE, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -6399,27 +6675,29 @@ dtap_sm_act_mbms_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_RECV;
/* Requested MBMS NSAPI Enhanced Network service access point identifier 10.5.6.16 M V */
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_ENH_NSAPI, " - Requested MBMS NSAPI");
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_ENH_NSAPI, " - Requested MBMS NSAPI");
/* Requested LLC SAPI LLC service access point identifier 10.5.6.9 M V 1 */
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_LLC_SAPI, " - Requested LLC SAPI");
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_LLC_SAPI, " - Requested LLC SAPI");
/* Supported MBMS bearer capabilities MBMS bearer capabilities 10.5.6.14 M LV 2 - 3 */
- ELEM_MAND_LV(GSM_A_PDU_TYPE_GM, DE_MBMS_BEARER_CAP , NULL );
+ ELEM_MAND_LV( GSM_A_PDU_TYPE_GM, DE_MBMS_BEARER_CAP, NULL );
/* Requested multicast address Packet data protocol address 10.5.6.4 M LV 3 - 19 */
- ELEM_MAND_LV(GSM_A_PDU_TYPE_GM, DE_PD_PRO_ADDR , " - Requested multicast address" );
+ ELEM_MAND_LV( GSM_A_PDU_TYPE_GM, DE_PD_PRO_ADDR, " - Requested multicast address" );
/* Access point name Access point name 10.5.6.1 M LV 2 - 101 */
- ELEM_MAND_LV(GSM_A_PDU_TYPE_GM, DE_ACC_POINT_NAME , NULL );
+ ELEM_MAND_LV( GSM_A_PDU_TYPE_GM, DE_ACC_POINT_NAME, NULL );
/* 35 MBMS protocol configuration options MBMS protocol configuration options 10.5.6.15 O TLV 3 - 253 */
- ELEM_OPT_TLV( 0x35 , GSM_A_PDU_TYPE_GM, DE_MBMS_PROT_CONF_OPT , NULL);
+ ELEM_OPT_TLV( 0x35, GSM_A_PDU_TYPE_GM, DE_MBMS_PROT_CONF_OPT, NULL);
+
+ ELEM_OPT_TV_SHORT(0xC0, GSM_A_PDU_TYPE_GM, DE_DEVICE_PROPERTIES, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -6436,15 +6714,15 @@ dtap_sm_act_mbms_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_SENT;
- ELEM_MAND_LV(GSM_A_PDU_TYPE_GM, DE_TMGI, NULL);
+ ELEM_MAND_LV( GSM_A_PDU_TYPE_GM, DE_TMGI, NULL);
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_LLC_SAPI, " - Negotiated LLC SAPI");
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_LLC_SAPI, " - Negotiated LLC SAPI");
- ELEM_OPT_TLV( 0x35 , GSM_A_PDU_TYPE_GM, DE_MBMS_PROT_CONF_OPT , NULL);
+ ELEM_OPT_TLV( 0x35, GSM_A_PDU_TYPE_GM, DE_MBMS_PROT_CONF_OPT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -6461,13 +6739,15 @@ dtap_sm_act_mbms_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_SENT;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_SM_CAUSE, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_SM_CAUSE, NULL);
+
+ ELEM_OPT_TLV( 0x35, GSM_A_PDU_TYPE_GM, DE_MBMS_PROT_CONF_OPT, NULL);
- ELEM_OPT_TLV( 0x35 , GSM_A_PDU_TYPE_GM, DE_MBMS_PROT_CONF_OPT , NULL);
+ ELEM_OPT_TLV(0x37, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_3, " - T3396 value");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -6484,17 +6764,17 @@ dtap_sm_req_mbms_act(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_SENT;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_NET_SAPI, " - Linked NSAPI");
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_NET_SAPI, " - Linked NSAPI");
- ELEM_MAND_LV(GSM_A_PDU_TYPE_GM, DE_PD_PRO_ADDR , " - Offered multicast address" );
+ ELEM_MAND_LV( GSM_A_PDU_TYPE_GM, DE_PD_PRO_ADDR, " - Offered multicast address" );
- ELEM_MAND_LV(GSM_A_PDU_TYPE_GM, DE_ACC_POINT_NAME , NULL );
+ ELEM_MAND_LV( GSM_A_PDU_TYPE_GM, DE_ACC_POINT_NAME, NULL );
- ELEM_OPT_TLV( 0x35 , GSM_A_PDU_TYPE_GM, DE_MBMS_PROT_CONF_OPT , NULL);
+ ELEM_OPT_TLV( 0x35, GSM_A_PDU_TYPE_GM, DE_MBMS_PROT_CONF_OPT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -6511,13 +6791,13 @@ dtap_sm_req_mbms_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->p2p_dir = P2P_DIR_RECV;
- ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_SM_CAUSE, NULL);
+ ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_SM_CAUSE, NULL);
- ELEM_OPT_TLV( 0x35 , GSM_A_PDU_TYPE_GM, DE_MBMS_PROT_CONF_OPT , NULL);
+ ELEM_OPT_TLV( 0x35, GSM_A_PDU_TYPE_GM, DE_MBMS_PROT_CONF_OPT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -6531,10 +6811,10 @@ static void (*dtap_msg_gmm_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *
dtap_gmm_attach_rej, /* Attach Reject */
dtap_gmm_detach_req, /* Detach Request */
dtap_gmm_detach_acc, /* Detach Accept */
- dtap_gmm_rau_req, /* Routing Area Update Request */
- dtap_gmm_rau_acc, /* Routing Area Update Accept */
- dtap_gmm_rau_com, /* Routing Area Update Complete */
- dtap_gmm_rau_rej, /* Routing Area Update Reject */
+ dtap_gmm_rau_req, /* Routing Area Update Request */
+ dtap_gmm_rau_acc, /* Routing Area Update Accept */
+ dtap_gmm_rau_com, /* Routing Area Update Complete */
+ dtap_gmm_rau_rej, /* Routing Area Update Reject */
dtap_gmm_service_req, /* Service Request */
dtap_gmm_service_acc, /* Service Accept */
dtap_gmm_service_rej, /* Service Reject */
@@ -6544,9 +6824,9 @@ static void (*dtap_msg_gmm_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *
dtap_gmm_auth_ciph_resp, /* Authentication and Ciphering Resp */
dtap_gmm_auth_ciph_rej, /* Authentication and Ciphering Rej */
dtap_gmm_auth_ciph_fail, /* Authentication and Ciphering Failure */
- dtap_gmm_ident_req, /* Identity Request */
- dtap_gmm_ident_res, /* Identity Response */
- dtap_gmm_status, /* GMM Status */
+ dtap_gmm_ident_req, /* Identity Request */
+ dtap_gmm_ident_res, /* Identity Response */
+ dtap_gmm_status, /* GMM Status */
dtap_gmm_information, /* GMM Information */
NULL, /* NONE */
};
@@ -6569,42 +6849,44 @@ static void (*dtap_msg_sm_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *p
dtap_sm_act_sec_pdp_req, /* Activate Secondary PDP Context Request */
dtap_sm_act_sec_pdp_acc, /* Activate Secondary PDP Context Accept */
dtap_sm_act_sec_pdp_rej, /* Activate Secondary PDP Context Reject */
- NULL, /* Reserved: was allocated in earlier phases of the protocol */
- NULL, /* Reserved: was allocated in earlier phases of the protocol */
- NULL, /* Reserved: was allocated in earlier phases of the protocol */
- NULL, /* Reserved: was allocated in earlier phases of the protocol */
- NULL, /* Reserved: was allocated in earlier phases of the protocol */
- dtap_sm_status, /* SM Status */
+ NULL, /* Reserved: was allocated in earlier phases of the protocol */
+ NULL, /* Reserved: was allocated in earlier phases of the protocol */
+ NULL, /* Reserved: was allocated in earlier phases of the protocol */
+ NULL, /* Reserved: was allocated in earlier phases of the protocol */
+ NULL, /* Reserved: was allocated in earlier phases of the protocol */
+ dtap_sm_status, /* SM Status */
dtap_sm_act_mbms_req, /* Activate MBMS Context Request */
dtap_sm_act_mbms_acc, /* Activate MBMS Context Accept */
dtap_sm_act_mbms_rej, /* Activate MBMS Context Reject */
dtap_sm_req_mbms_act, /* Request MBMS Context Activation */
dtap_sm_req_mbms_rej, /* Request MBMS Context Activation Reject */
dtap_sm_req_sec_pdp_act, /* Request Secondary PDP Context Activation */
- dtap_sm_req_sec_pdp_act_rej,/* Request Secondary PDP Context Activation Reject */
- dtap_sm_notif, /* Notification */
+ dtap_sm_req_sec_pdp_act_rej, /* Request Secondary PDP Context Activation Reject */
+ dtap_sm_notif, /* Notification */
NULL, /* NONE */
};
-void get_gmm_msg_params(guint8 oct, const gchar **msg_str, int *ett_tree, int *hf_idx, msg_fcn *dtap_msg_fcn)
+void
+get_gmm_msg_params(guint8 oct, const gchar **msg_str, int *ett_tree, int *hf_idx, msg_fcn *dtap_msg_fcn)
{
- gint idx;
+ gint idx;
- *msg_str = match_strval_idx((guint32) (oct & DTAP_GMM_IEI_MASK), gsm_a_dtap_msg_gmm_strings, &idx);
- *ett_tree = ett_gsm_dtap_msg_gmm[idx];
- *hf_idx = hf_gsm_a_dtap_msg_gmm_type;
+ *msg_str = match_strval_idx((guint32) (oct & DTAP_GMM_IEI_MASK), gsm_a_dtap_msg_gmm_strings, &idx);
+ *ett_tree = ett_gsm_dtap_msg_gmm[idx];
+ *hf_idx = hf_gsm_a_dtap_msg_gmm_type;
*dtap_msg_fcn = dtap_msg_gmm_fcn[idx];
return;
}
-void get_sm_msg_params(guint8 oct, const gchar **msg_str, int *ett_tree, int *hf_idx, msg_fcn *dtap_msg_fcn)
+void
+get_sm_msg_params(guint8 oct, const gchar **msg_str, int *ett_tree, int *hf_idx, msg_fcn *dtap_msg_fcn)
{
- gint idx;
+ gint idx;
- *msg_str = match_strval_idx((guint32) (oct & DTAP_SM_IEI_MASK), gsm_a_dtap_msg_sm_strings, &idx);
- *ett_tree = ett_gsm_dtap_msg_sm[idx];
- *hf_idx = hf_gsm_a_dtap_msg_sm_type;
+ *msg_str = match_strval_idx((guint32) (oct & DTAP_SM_IEI_MASK), gsm_a_dtap_msg_sm_strings, &idx);
+ *ett_tree = ett_gsm_dtap_msg_sm[idx];
+ *hf_idx = hf_gsm_a_dtap_msg_sm_type;
*dtap_msg_fcn = dtap_msg_sm_fcn[idx];
return;
@@ -6614,927 +6896,1001 @@ void get_sm_msg_params(guint8 oct, const gchar **msg_str, int *ett_tree, int *hf
void
proto_register_gsm_a_gm(void)
{
- guint i;
- guint last_offset;
+ guint i;
+ guint last_offset;
/* Setup list of header fields */
- static hf_register_info hf[] =
- {
- { &hf_gsm_a_dtap_msg_gmm_type,
- { "DTAP GPRS Mobility Management Message Type", "gsm_a.dtap_msg_gmm_type",
- FT_UINT8, BASE_HEX, VALS(gsm_a_dtap_msg_gmm_strings), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_dtap_msg_sm_type,
- { "DTAP GPRS Session Management Message Type", "gsm_a.dtap_msg_sm_type",
- FT_UINT8, BASE_HEX, VALS(gsm_a_dtap_msg_sm_strings), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_elem_id,
- { "Element ID", "gsm_a_gm.elem_id",
- FT_UINT8, BASE_DEC, NULL, 0,
- NULL, HFILL }
- },
- { &hf_gsm_a_qos_delay_cls,
- { "Quality of Service Delay class", "gsm_a.qos.delay_cls",
- FT_UINT8, BASE_DEC, VALS(gsm_a_qos_delay_cls_vals), 0x38,
- NULL, HFILL }
- },
- { &hf_gsm_a_qos_reliability_cls,
- { "Reliability class", "gsm_a.qos.delay_cls",
- FT_UINT8, BASE_DEC, VALS(gsm_a_qos_delay_cls_vals), 0x07,
- NULL, HFILL }
- },
- { &hf_gsm_a_qos_traffic_cls,
- { "Traffic class", "gsm_a.qos.traffic_cls",
- FT_UINT8, BASE_DEC, VALS(gsm_a_qos_traffic_cls_vals), 0xe0,
- NULL, HFILL }
- },
- { &hf_gsm_a_qos_del_order,
- { "Delivery order", "gsm_a.qos.del_order",
- FT_UINT8, BASE_DEC, VALS(gsm_a_qos_del_order_vals), 0x18,
- NULL, HFILL }
- },
- { &hf_gsm_a_qos_del_of_err_sdu,
- { "Delivery of erroneous SDUs", "gsm_a.qos.del_of_err_sdu",
- FT_UINT8, BASE_DEC, VALS(gsm_a_qos_del_of_err_sdu_vals), 0x07,
- NULL, HFILL }
- },
- { &hf_gsm_a_qos_ber,
- { "Residual Bit Error Rate (BER)", "gsm_a.qos.ber",
- FT_UINT8, BASE_DEC, VALS(gsm_a_qos_ber_vals), 0xf0,
- NULL, HFILL }
- },
- { &hf_gsm_a_qos_sdu_err_rat,
- { "SDU error ratio", "gsm_a.qos.sdu_err_rat",
- FT_UINT8, BASE_DEC, VALS(gsm_a_qos_sdu_err_rat_vals), 0x0f,
- NULL, HFILL }
- },
- { &hf_gsm_a_qos_traff_hdl_pri,
- { "Traffic handling priority", "gsm_a.qos.traff_hdl_pri",
- FT_UINT8, BASE_DEC, VALS(gsm_a_qos_traff_hdl_pri_vals), 0x03,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_split_on_ccch,
- { "SPLIT on CCCH","gsm_a.gmm.split_on_ccch",
- FT_BOOLEAN, 8, TFS(&gsm_a_gmm_split_on_ccch_value), 0x08,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_non_drx_timer,
- { "Non-DRX timer","gsm_a.gmm.non_drx_timer",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gmm_non_drx_timer_strings), 0x07,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_cn_spec_drs_cycle_len_coef,
- { "CN Specific DRX cycle length coefficient","gsm_a.gmm.cn_spec_drs_cycle_len_coef",
- FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(gsm_a_gmm_cn_spec_drs_cycle_len_coef_strings), 0xf0,
- NULL, HFILL }
- },
- { &hf_gsm_a_tft_op_code,
- { "TFT operation code", "gsm_a.tft.op_code",
- FT_UINT8, BASE_DEC, VALS(gsm_a_tft_op_code_vals), 0xe0,
- NULL, HFILL }
- },
- { &hf_gsm_a_tft_e_bit,
- { "E bit","gsm_a.tft.e_bit",
- FT_BOOLEAN, 8, TFS(&gsm_a_tft_e_bit), 0x10,
- NULL, HFILL }
- },
- { &hf_gsm_a_tft_pkt_flt,
- { "Number of packet filters", "gsm_a.tft.pkt_flt",
- FT_UINT8, BASE_DEC, NULL, 0x0f,
- NULL, HFILL }
- },
- { &hf_gsm_a_tft_pkt_flt_dir,
- { "Packet filter direction", "gsm_a.tft.pkt_flt_dir",
- FT_UINT8, BASE_DEC, VALS(gsm_a_tft_pkt_flt_dir_vals), 0x30,
- NULL, HFILL }
- },
- { &hf_gsm_a_tft_pkt_flt_id,
- { "Packet filter identifier", "gsm_a.tft.pkt_flt_id",
- FT_UINT8, BASE_DEC, NULL, 0x0f,
- NULL, HFILL }
- },
- { &hf_gsm_a_sm_ip4_address,
- { "IPv4 address", "gsm_a.sm.ip4_address",
- FT_IPv4, BASE_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_sm_ip4_mask,
- { "IPv4 address mask", "gsm_a.sm.ip4_mask",
- FT_IPv4, BASE_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_sm_ip6_address,
- { "IPv6 address", "gsm_a.sm.ip6_address",
- FT_IPv6, BASE_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_sm_ip6_mask,
- { "IPv6 address mask", "gsm_a.sm.ip6_mask",
- FT_IPv6, BASE_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_tft_protocol_header,
- { "Protocol/header", "gsm_a.tft.protocol_header",
- FT_UINT8, BASE_HEX|BASE_EXT_STRING, (&ipproto_val_ext), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_tft_port,
- { "Port", "gsm_a.tft.port",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_tft_port_low,
- { "Low limit port", "gsm_a.tft.port_low",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_tft_port_high,
- { "High limit port", "gsm_a.tft.port_high",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_tft_security,
- { "IPSec security parameter index", "gsm_a.tft.security",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_tft_traffic_class,
- { "Type of service/Traffic class field", "gsm_a.tft.traffic_class",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_tft_traffic_mask,
- { "Mask field", "gsm_a.tft.traffic_mask",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_tft_flow_label_type,
- { "Flow Label Type", "gsm_a.tft.flow_label_type",
- FT_UINT24, BASE_HEX, NULL, 0x0FFFFF,
- NULL, HFILL }
- },
- { &hf_gsm_a_tft_param_id,
- { "Parameter identifier", "gsm_a.tft.param_id",
- FT_UINT8, BASE_DEC, VALS(gsm_a_tft_param_id_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_ptmsi_sig,
- { "P-TMSI Signature", "gsm_a.ptmsi_sig",
- FT_UINT24, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_ptmsi_sig2,
- { "P-TMSI Signature 2", "gsm_a.ptmsi_sig2",
- FT_UINT24, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_acc_tech_type,
- { "Access Technology Type", "gsm_a.gm.acc_tech_type",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gm_acc_tech_type_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_acc_cap_struct_len,
- { "Length in bits", "gsm_a.gm.acc_cap_struct_len",
- FT_UINT8, BASE_HEX_DEC,NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_sms_value,
- { "SMS_VALUE (Switch-Measure-Switch)", "gsm_a.gm.sms",
- FT_UINT8, BASE_DEC, VALS(gsm_a_sms_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_sm_value,
- { "(SM_VALUE) Switch-Measure", "gsm_a.gm.sm",
- FT_UINT8, BASE_DEC, VALS(gsm_a_sms_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_sm_ext,
- { "Ext", "gsm_a.gm.sm.ext",
- FT_UINT8, BASE_HEX, NULL, 0x80,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_link_dir,
- { "Link direction", "gsm_a.gm.link_dir",
- FT_INT32, BASE_DEC, VALS(gsm_a_gm_link_dir_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_cause,
- { "gmm Cause", "gsm_a.gm.cause",
- FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(gmm_cause_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_fop,
- { "Follow-on proceed", "gsm_a.gm.fop",
- FT_BOOLEAN, 8, NULL, 0x08,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_res_of_attach,
- { "Result of attach", "gsm_a.gm.res_of_attach",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gm_res_of_attach_vals), 0x07,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_type_of_ciph_alg,
- { "Type of ciphering algorithm", "gsm_a.gm.type_of_ciph_alg",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gm_type_of_ciph_alg_vals), 0x07,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_imeisv_req,
- { "IMEISV request", "gsm_a.gm.imeisv_req",
- FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(gsm_a_gm_imeisv_req_vals), 0x00,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_ac_ref_nr,
- { "A&C reference number", "gsm_a.gm.ac_ref_nr",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_force_to_standby,
- { "Force to standby", "gsm_a.gm.force_to_standby",
- FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(gsm_a_gm_force_to_standby_vals), 0x00,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_ciph_key_seq_num,
- { "Ciphering key sequence number", "gsm_a.gm.ciph_key_seq_num",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_serv_type,
- { "Service type", "gsm_a.gm.serv_type",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gm_serv_type_vals), 0x00,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_for,
- { "Follow-on request pending", "gsm_a.gm.for",
- FT_BOOLEAN, 8, NULL, 0x08,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_type_of_attach,
- { "Type of attach", "gsm_a.gm.type_of_attach",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gm_type_of_attach_vals), 0x07,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_tmsi_flag,
- { "TMSI flag", "gsm_a.gm.tmsi_flag",
- FT_BOOLEAN, 8, TFS(&gsm_a_gm_tmsi_flag_value), 0x01,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_update_type,
- { "Update type", "gsm_a.gm.update_type",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gm_update_type_vals), 0x07,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_gprs_timer_unit,
- { "Unit", "gsm_a.gm.gprs_timer_unit",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gm_gprs_timer_unit_vals), 0xe0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_gprs_timer_value,
- { "Timer value", "gsm_a.gm.gprs_timer_value",
- FT_UINT8, BASE_DEC, NULL, 0x1f,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_nsapi_5_ul_stat,
- { "NSAPI(5) uplink status", "gsm_a.gm.nsapi_5_ul_stat",
- FT_BOOLEAN, 8, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_nsapi_6_ul_stat,
- { "NSAPI(6) uplink status", "gsm_a.gm.nsapi_6_ul_stat",
- FT_BOOLEAN, 8, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_nsapi_7_ul_stat,
- { "NSAPI(7) uplink status", "gsm_a.gm.nsapi_7_ul_stat",
- FT_BOOLEAN, 8, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_nsapi_8_ul_stat,
- { "NSAPI(8) uplink status", "gsm_a.gm.nsapi_8_ul_stat",
- FT_BOOLEAN, 8, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_nsapi_9_ul_stat,
- { "NSAPI(9) uplink status", "gsm_a.gm.nsapi_9_ul_stat",
- FT_BOOLEAN, 8, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_nsapi_10_ul_stat,
- { "NSAPI(10) uplink status", "gsm_a.gm.nsapi_10_ul_stat",
- FT_BOOLEAN, 8, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_nsapi_11_ul_stat,
- { "NSAPI(11) uplink status", "gsm_a.gm.nsapi_11_ul_stat",
- FT_BOOLEAN, 8, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_nsapi_12_ul_stat,
- { "NSAPI(12) uplink status", "gsm_a.gm.nsapi_12_ul_stat",
- FT_BOOLEAN, 8, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_nsapi_13_ul_stat,
- { "NSAPI(13) uplink status", "gsm_a.gm.nsapi_13_ul_stat",
- FT_BOOLEAN, 8, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_nsapi_14_ul_stat,
- { "NSAPI(14) uplink status", "gsm_a.gm.nsapi_14_ul_stat",
- FT_BOOLEAN, 8, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_nsapi_15_ul_stat,
- { "NSAPI(15) uplink status", "gsm_a.gm.nsapi_15_ul_stat",
- FT_BOOLEAN, 8, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_pco_pid,
- { "Protocol or Container ID", "gsm_a.gm.pco_pid",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_type_of_identity,
- { "Type of identity", "gsm_a.gm.type_of_identity",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gm_type_of_identity_vals), 0x07,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac,
- { "Routing Area Code (RAC)","gsm_a.gm.rac",
- FT_UINT8, BASE_HEX_DEC, NULL, 0x00,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_apc,
- { "APC","gsm_a.gm.apc",
- FT_BOOLEAN, 8, TFS(&gsm_a_gm_apc_vals), 0x20,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_otd_a,
- { "OTD-A","gsm_a.gm.otd_a",
- FT_BOOLEAN, 8, TFS(&gsm_a_gm_otd_a_vals), 0x10,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_otd_b,
- { "OTD-B","gsm_a.gm.otd_b",
- FT_BOOLEAN, 8, TFS(&gsm_a_gm_otd_b_vals), 0x08,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_gps_a,
- { "GPS-A","gsm_a.gm.gps_a",
- FT_BOOLEAN, 8, TFS(&gsm_a_gm_gps_a_vals), 0x04,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_gps_b,
- { "GPS-B","gsm_a.gm.gps_b",
- FT_BOOLEAN, 8, TFS(&gsm_a_gm_gps_b_vals), 0x02,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_gps_c,
- { "GPS-C","gsm_a.gm.gps_c",
- FT_BOOLEAN, 8, TFS(&gsm_a_gm_gps_c_vals), 0x01,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_req_ms_info_irat,
- { "I-RAT","gsm_a.gm.req_ms_info_irat",
- FT_BOOLEAN, 8, TFS(&gsm_a_gm_req_ms_info_irat_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_req_ms_info_irat2,
- { "I-RAT2","gsm_a.gm.req_ms_info_irat2",
- FT_BOOLEAN, 8, TFS(&gsm_a_gm_req_ms_info_irat2_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_ue_usage_setting,
- { "UE's usage setting","gsm_a.gm.ue_usage_setting",
- FT_BOOLEAN, 8, TFS(&gsm_a_gm_ue_usage_setting_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_voice_domain_pref_for_eutran,
- { "Voice domain preference for E-UTRAN","gsm_a.gm.voice_domain_pref_for_eutran",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gm_voice_domain_pref_for_eutran_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_sm_pdp_type_org,
- { "PDP type organization", "gsm_a.sm.pdp_type_org",
- FT_UINT8, BASE_DEC, VALS(gsm_a_sm_pdp_type_org_vals), 0x0f,
- NULL, HFILL }
- },
- { &hf_gsm_a_qos_mean_thr,
- { "Mean throughput", "gsm_a.qos.mean_throughput",
- FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(gsm_a_qos_mean_thr_vals), 0x1f,
- NULL, HFILL }
- },
- { &hf_gsm_a_qos_peak_thr,
- { "Peak throughput", "gsm_a.qos.peak_throughput",
- FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(gsm_a_qos_peak_thr_vals), 0xf0,
- NULL, HFILL }
- },
- { &hf_gsm_a_qos_prec_class,
- { "Precedence class", "gsm_a.qos.prec_class",
- FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(gsm_a_qos_prec_class_vals), 0x07,
- NULL, HFILL }
- },
- { &hf_gsm_a_qos_traf_handl_prio,
- { "Traffic handling priority", "gsm_a.qos.traf_handl_prio",
- FT_UINT8, BASE_DEC, NULL, 0x03,
- NULL, HFILL }
- },
- { &hf_gsm_a_qos_trans_delay,
- { "Transfer delay", "gsm_a.qos.trans_delay",
- FT_UINT8, BASE_DEC, NULL, 0xfc,
- NULL, HFILL }
- },
- { &hf_gsm_a_qos_signalling_ind,
- { "Signalling indication", "gsm_a.qos.signalling_ind",
- FT_BOOLEAN, 8, TFS(&gsm_a_qos_signalling_ind_value), 0x10,
- NULL, HFILL }
- },
- { &hf_gsm_a_qos_source_stat_desc,
- { "Source statistics description", "gsm_a.qos.source_stat_desc",
- FT_UINT8, BASE_DEC, NULL, 0x0f,
- NULL, HFILL }
- },
- { &hf_gsm_a_qos_max_bitrate_upl,
- { "Maximum bitrate for uplink", "gsm_a.qos.max_bitrate_upl",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_qos_max_bitrate_downl,
- { "Maximum bitrate for downlink", "gsm_a.qos.max_bitrate_downl",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_qos_guar_bitrate_upl,
- { "Guaranteed bitrate for uplink", "gsm_a.qos.guar_bitrate_upl",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_qos_guar_bitrate_downl,
- { "Guaranteed bitrate for downlink", "gsm_a.qos.guar_bitrate_downl",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_qos_max_bitrate_upl_ext,
- { "Maximum bitrate for uplink (extended)", "gsm_a.qos.max_bitrate_upl_ext",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_qos_max_bitrate_downl_ext,
- { "Maximum bitrate for downlink (extended)", "gsm_a.qos.max_bitrate_downl_ext",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_qos_guar_bitrate_upl_ext,
- { "Guaranteed bitrate for uplink (extended)", "gsm_a.qos.guar_bitrate_upl_ext",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_qos_guar_bitrate_downl_ext,
- { "Guaranteed bitrate for downlink (extended)", "gsm_a.qos.guar_bitrate_downl_ext",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_sm_cause,
- { "SM Cause", "gsm_a.sm.cause",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_sm_cause_2,
- { "SM Cause 2", "gsm_a.sm.cause_2",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_sm_llc_sapi,
- { "LLC SAPI", "gsm_a.sm.llc_sapi",
- FT_UINT8, BASE_DEC, VALS(gsm_a_sm_llc_sapi_vals), 0x0f,
- NULL, HFILL }
- },
- { &hf_gsm_a_sm_tdi,
- { "Tear Down Indicator (TDI)", "gsm_a.sm.tdi",
- FT_BOOLEAN, 8, TFS(&gsm_a_sm_tdi_value), 0x01,
- NULL, HFILL }
- },
- { &hf_gsm_a_sm_packet_flow_id,
- { "Packet Flow Identifier (PFI)", "gsm_a.sm.packet_flow_id",
- FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(gsm_a_sm_packet_flow_id_vals), 0x7f,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_net_cap_gea1,
- { "GEA/1", "gsm_a.gmm.net_cap.gea1",
- FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_gea_vals), 0x80,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_net_cap_smdch,
- { "SM capabilities via dedicated channels", "gsm_a.gmm.net_cap.smdch",
- FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_smdch_vals), 0x40,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_net_cap_smgprs,
- { "SM capabilities via GPRS channels", "gsm_a.gmm.net_cap.smgprs",
- FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_smgprs_vals), 0x20,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_net_cap_ucs2,
- { "UCS2 support", "gsm_a.gmm.net_cap.ucs2",
- FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_smgprs_vals), 0x10,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_net_cap_ss_scr_ind,
- { "SS Screening Indicator", "gsm_a.gmm.net_cap.ss_scr_ind",
- FT_UINT8, BASE_HEX, VALS(gsm_a_gmm_net_cap_ss_scr_ind_vals), 0x0c,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_net_cap_solsa,
- { "SoLSA Capability", "gsm_a.gmm.net_cap.solsa",
- FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_solsa_vals), 0x02,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_net_cap_rev,
- { "Revision level indicator", "gsm_a.gmm.net_cap.rev",
- FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_rev_vals), 0x01,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_net_cap_pfc,
- { "PFC feature mode", "gsm_a.gmm.net_cap.pfc",
- FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_pfc_vals), 0x80,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_net_cap_ext_gea_bits,
- { "Extended GEA bits", "gsm_a.gmm.net_cap.ext_gea_bits",
- FT_UINT8, BASE_HEX, NULL, 0x7e,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_net_cap_gea2,
- { "GEA/2", "gsm_a.gmm.net_cap.gea2",
- FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_gea_vals), 0x40,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_net_cap_gea3,
- { "GEA/3", "gsm_a.gmm.net_cap.gea3",
- FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_gea_vals), 0x20,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_net_cap_gea4,
- { "GEA/4", "gsm_a.gmm.net_cap.gea4",
- FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_gea_vals), 0x10,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_net_cap_gea5,
- { "GEA/5", "gsm_a.gmm.net_cap.gea5",
- FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_gea_vals), 0x08,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_net_cap_gea6,
- { "GEA/6", "gsm_a.gmm.net_cap.gea6",
- FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_gea_vals), 0x04,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_net_cap_gea7,
- { "GEA/7", "gsm_a.gmm.net_cap.gea7",
- FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_gea_vals), 0x02,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_net_cap_lcs,
- { "LCS VA capability", "gsm_a.gmm.net_cap.lcs",
- FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_lcs_vals), 0x01,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_net_cap_ps_irat_iu,
- { "PS inter-RAT HO to UTRAN Iu mode capability", "gsm_a.gmm.net_cap.ps_irat_iu",
- FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_ps_irat_iu_vals), 0x80,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_net_cap_ps_irat_s1,
- { "PS inter-RAT HO to E-UTRAN S1 mode capability", "gsm_a.gmm.net_cap.ps_irat_s1",
- FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_ps_irat_s1_vals), 0x40,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_net_cap_comb_proc,
- { "EMM Combined procedures capability", "gsm_a.gmm.net_cap.comb_proc",
- FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_comb_proc_vals), 0x20,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_net_cap_isr,
- { "ISR support", "gsm_a.gmm.net_cap.isr",
- FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_isr_vals), 0x10,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_net_cap_srvcc_to_geran,
- { "SRVCC to GERAN/UTRAN capability", "gsm_a.gmm.net_cap.srvcc_to_geran",
- FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_srvcc_to_geran_vals), 0x08,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_net_cap_epc,
- { "EPC Capability", "gsm_a.gmm.net_cap.epc",
- FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_epc_vals), 0x04,
- NULL, HFILL }
- },
- { &hf_gsm_a_gmm_net_cap_nf,
- { "NF Capability", "gsm_a.gmm.net_cap.nf",
- FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_nf_vals), 0x02,
- NULL, HFILL }
- },
- { &hf_gsm_a_sm_tmgi,
- { "Temporary Mobile Group Identity (TMGI)", "gsm_a.sm.tmgi",
- FT_UINT24, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_sm_enh_nsapi,
- { "Enhanced NSAPI", "gsm_a.sm.enh_nsapi",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_sm_req_type,
- { "Request type", "gsm_a.sm.req_type",
- FT_UINT8, BASE_DEC, VALS(gsm_a_sm_req_type_vals), 0x07,
- NULL, HFILL }
- },
- { &hf_gsm_a_sm_notif_ind,
- { "Notification indicator value", "gsm_a.sm.notif_ind",
- FT_UINT8, BASE_DEC, VALS(gsm_a_sm_notif_ind_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_ctrled_early_cm_sending,
- { "Controlled early Classmark Sending", "gsm_a.gm.rac.comp_int_meas_cap",
- FT_BOOLEAN, 8, TFS(&tfs_implemented_not_implemented), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_pseudo_sync,
- { "Pseudo Synchronisation", "gsm_a.gm.rac.pseudo_sync",
- FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_vgcs,
- { "Voice Group Call Service", "gsm_a.gm.rac.vgcs",
- FT_BOOLEAN, 8, TFS(&gsm_a_gm_vgcs), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_vbs,
- { "Voice Broadcast Service", "gsm_a.gm.rac.vbs",
- FT_BOOLEAN, 8, TFS(&gsm_a_gm_vbs), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_multislot_capability,
- { "Multislot capability struct", "gsm_a.gm.rac.multislot_capability",
- FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_hscsd_multi_slot_class,
- { "HSCSD multislot class", "gsm_a.gm.rac.hscsd_multi_slot_class",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gm_multi_slot_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_gprs_multi_slot_class,
- { "GPRS multislot class", "gsm_a.gm.rac.gprs_multi_slot_class",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gm_multi_slot_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_gprs_ext_dyn_alloc_cap,
- { "GPRS Extended Dynamic Allocation Capability", "gsm_a.gm.rac.gprs_ext_dyn_alloc_cap",
- FT_BOOLEAN, 8, TFS(&tfs_implemented_not_implemented), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_ecsd_multi_slot_class,
- { "ECSD multislot class", "gsm_a.gm.rac.ecsd_multi_slot_class",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gm_multi_slot_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_egprs_multi_slot_class,
- { "EGPRS multislot class", "gsm_a.gm.rac.egprs_multi_slot_class",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gm_multi_slot_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_egprs_ext_dyn_alloc_cap,
- { "EGPRS Extended Dynamic Allocation Capability", "gsm_a.gm.rac.egprs_ext_dyn_alloc_cap",
- FT_BOOLEAN, 8, TFS(&tfs_implemented_not_implemented), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_dtm_gprs_multi_slot_class,
- { "DTM GPRS Multi Slot Class", "gsm_a.gm.rac.dtm_gprs_multi_slot_class",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gm_dtm_gprs_multi_slot_class_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_single_slt_dtm,
- { "Single Slot DTM", "gsm_a.gm.rac.single_slt_dtm",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_dtm_egprs_multi_slot_cls_pres,
- { "DTM EGPRS Multi Slot Class", "gsm_a.gm.rac.dtm_egprs_multi_slot_cls_pres",
- FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_dtm_egprs_multi_slot_class,
- { "DTM EGPRS Multi Slot Class", "gsm_a.gm.rac.dtm_egprs_multi_slot_class",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gm_dtm_gprs_multi_slot_class_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_8psk_pow_cap_pres,
- { "8PSK Power Capability Bits", "gsm_a.gm.rac.8psk_pow_cap_pres",
- FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_comp_int_meas_cap,
- { "COMPACT Interference Measurement Capability", "gsm_a.gm.rac.comp_int_meas_cap",
- FT_BOOLEAN, 8, TFS(&tfs_implemented_not_implemented), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rel_lev_ind,
- { "Revision Level Indicator", "gsm_a.gm.rel_lev_ind",
- FT_BOOLEAN, 8, TFS(&gsm_a_gm_revision_level_indicator), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_umts_fdd_cap,
- { "UMTS FDD Radio Access Technology Capability", "gsm_a.gm.rac.umts_fdd_cap",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_umts_384_tdd_ra_cap,
- { "UMTS 3.84 Mcps TDD Radio Access Technology Capability", "gsm_a.gm.rac.umts_384_tdd_ra_cap",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_cdma2000_cap,
- { "CDMA 2000 Radio Access Technology Capability", "gsm_a.gm.rac.cdma2000_cap",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_umts_128_tdd_ra_cap,
- { "UMTS 1.28 Mcps TDD Radio Access Technology Capability", "gsm_a.gm.rac.umts_128_tdd_ra_cap",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_geran_feat_pkg,
- { "GERAN Feature Package 1", "gsm_a.gm.rac.geran_feat_pkg",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_mod_based_multi_slot_class_support,
- { "Modulation based multislot class support", "gsm_a.gm.rac.mod_based_multi_slot_class_support",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_geran_iu_mode_cap,
- { "GERAN Iu mode", "gsm_a.gm.rac.geran_iu_mode_cap",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_flo_iu_cap,
- { "FLO Iu Capability", "gsm_a.gm.rac.flo_iu_cap",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_mult_tbf_cap,
- { "Multiple TBF Capability", "gsm_a.gm.rac.mult_tbf_cap",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_down_adv_rec_perf,
- { "Downlink Advanced Receiver Performance", "gsm_a.gm.rac.down_adv_rec_perf",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gm_down_adv_rec_perf_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_ext_rlc_mac_ctrl_msg_seg_cap,
- { "Extended RLC/MAC Control Message Segmentation Capability", "gsm_a.gm.rac.ext_rlc_mac_ctrl_msg_seg_cap",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_dtm_enh_cap,
- { "DTM Enhancements Capability", "gsm_a.gm.rac.dtm_enh_cap",
- FT_BOOLEAN, 8, TFS(&gsm_a_gm_dtm_enh_cap), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_dtm_gprs_high_multi_slot_class,
- { "DTM GPRS High Multi Slot Class", "gsm_a.gm.rac.dtm_gprs_high_multi_slot_class",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gm_dtm_gprs_high_multi_slot_class_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_dtm_egprs_high_multi_slot_class,
- { "DTM EGPRS High Multi Slot Class", "gsm_a.gm.rac.dtm_egprs_high_multi_slot_class",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gm_dtm_gprs_high_multi_slot_class_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_ps_ho_cap,
- { "PS Handover Capability", "gsm_a.gm.rac.ps_ho_cap",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_dtm_ho_cap,
- { "DTM Handover Capability", "gsm_a.gm.rac.dtm_ho_cap",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_multi_slot_cap_red_down_dual_carrier,
- { "Multislot Capability Reduction for Downlink Dual Carrier", "gsm_a.gm.rac.multi_slot_cap_red_down_dual_carrier",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gm_multi_slot_cap_red_down_dual_carrier_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_down_dual_carrier_dtm_cap,
- { "Downlink Dual Carrier for DTM Capability", "gsm_a.gm.rac.down_dual_carrier_dtm_cap",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_flex_ts_assign,
- { "Flexible Timeslot Assignment", "gsm_a.gm.rac.flex_ts_assign",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_gan_ps_ho_cap,
- { "GAN PS Handover Capability", "gsm_a.gm.rac.gan_ps_ho_cap",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_rlc_non_pers_mode,
- { "RLC Non-persistent Mode", "gsm_a.gm.rac.rlc_non_pers_mode",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_reduced_lat_cap,
- { "Reduced Latency Capability", "gsm_a.gm.rac.reduced_lat_cap",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_ul_egprs2,
- { "Uplink EGPRS2", "gsm_a.gm.rac.ul_egprs2",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gm_ul_egprs2_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_dl_egprs2,
- { "Downlink EGPRS2", "gsm_a.gm.rac.dl_egprs2",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gm_dl_egprs2_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_eutra_fdd_support,
- { "E-UTRA FDD support", "gsm_a.gm.rac.eutra_fdd_support",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_eutra_tdd_support,
- { "E-UTRA TDD support", "gsm_a.gm.rac.eutra_tdd_support",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_geran_to_eutra_support_in_geran_ptm,
- { "GERAN to E-UTRA support in GERAN packet transfer mode", "gsm_a.gm.rac.geran_to_eutra_support_in_geran_ptm",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gm_geran_to_eutra_support_in_geran_ptm_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_prio_based_resel_support,
- { "Priority-based reselection support", "gsm_a.gm.rac.prio_based_resel_support",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_alt_efta_multi_slot_class,
- { "Alternative EFTA Multislot Class", "gsm_a.gm.rac.alt_efta_multi_slot_class",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gm_alt_efta_multi_slot_class_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_efta_multi_slot_cap_red_down_dual_carrier,
- { "EFTA Multislot Capability Reduction for Downlink Dual Carrier", "gsm_a.gm.rac.efta_multi_slot_cap_red_down_dual_carrier",
- FT_UINT8, BASE_DEC, VALS(gsm_a_gm_multi_slot_cap_red_down_dual_carrier_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_ind_up_layer_pdu_start_cap_for_rlc_um,
- { "Indication of Upper Layer PDU Start Capability for RLC UM", "gsm_a.gm.rac.ind_up_layer_pdu_start_cap_for_rlc_um",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_emst_cap,
- { "Enhanced Multiplexing for Single TBF Capability", "gsm_a.gm.rac.emst_cap",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_mtti_cap,
- { "Multiple TTI Capability", "gsm_a.gm.rac.mtti_cap",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_utra_csg_cell_report,
- { "UTRA CSG Cells Reporting", "gsm_a.gm.rac.utra_csg_cell_report",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_gm_rac_eutra_csg_cell_report,
- { "E-UTRA CSG Cells Reporting", "gsm_a.gm.rac.mtti_cap",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_sm_ti_flag,
- { "TI Flag", "gsm_a.sm.ti_flag",
- FT_BOOLEAN, 8, TFS(&gsm_a_sm_ti_flag_vals), 0x80,
- NULL, HFILL }
- },
- { &hf_gsm_a_sm_ext,
- { "Extension", "gsm_a.sm.ext",
- FT_BOOLEAN, 8, NULL, 0x80,
- NULL, HFILL }
- },
-};
+ static hf_register_info hf[] = {
+ { &hf_gsm_a_dtap_msg_gmm_type,
+ { "DTAP GPRS Mobility Management Message Type", "gsm_a.dtap_msg_gmm_type",
+ FT_UINT8, BASE_HEX, VALS(gsm_a_dtap_msg_gmm_strings), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_dtap_msg_sm_type,
+ { "DTAP GPRS Session Management Message Type", "gsm_a.dtap_msg_sm_type",
+ FT_UINT8, BASE_HEX, VALS(gsm_a_dtap_msg_sm_strings), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_elem_id,
+ { "Element ID", "gsm_a_gm.elem_id",
+ FT_UINT8, BASE_HEX, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_qos_delay_cls,
+ { "Quality of Service Delay class", "gsm_a.qos.delay_cls",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_qos_delay_cls_vals), 0x38,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_qos_reliability_cls,
+ { "Reliability class", "gsm_a.qos.delay_cls",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_qos_delay_cls_vals), 0x07,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_qos_traffic_cls,
+ { "Traffic class", "gsm_a.qos.traffic_cls",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_qos_traffic_cls_vals), 0xe0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_qos_del_order,
+ { "Delivery order", "gsm_a.qos.del_order",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_qos_del_order_vals), 0x18,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_qos_del_of_err_sdu,
+ { "Delivery of erroneous SDUs", "gsm_a.qos.del_of_err_sdu",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_qos_del_of_err_sdu_vals), 0x07,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_qos_ber,
+ { "Residual Bit Error Rate (BER)", "gsm_a.qos.ber",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_qos_ber_vals), 0xf0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_qos_sdu_err_rat,
+ { "SDU error ratio", "gsm_a.qos.sdu_err_rat",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_qos_sdu_err_rat_vals), 0x0f,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_qos_traff_hdl_pri,
+ { "Traffic handling priority", "gsm_a.qos.traff_hdl_pri",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_qos_traff_hdl_pri_vals), 0x03,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_split_on_ccch,
+ { "SPLIT on CCCH", "gsm_a.gmm.split_on_ccch",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gmm_split_on_ccch_value), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_non_drx_timer,
+ { "Non-DRX timer", "gsm_a.gmm.non_drx_timer",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gmm_non_drx_timer_strings), 0x07,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_cn_spec_drs_cycle_len_coef,
+ { "CN Specific DRX cycle length coefficient", "gsm_a.gmm.cn_spec_drs_cycle_len_coef",
+ FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(gsm_a_gmm_cn_spec_drs_cycle_len_coef_strings), 0xf0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_tft_op_code,
+ { "TFT operation code", "gsm_a.tft.op_code",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_tft_op_code_vals), 0xe0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_tft_e_bit,
+ { "E bit", "gsm_a.tft.e_bit",
+ FT_BOOLEAN, 8, TFS(&gsm_a_tft_e_bit), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_tft_pkt_flt,
+ { "Number of packet filters", "gsm_a.tft.pkt_flt",
+ FT_UINT8, BASE_DEC, NULL, 0x0f,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_tft_pkt_flt_dir,
+ { "Packet filter direction", "gsm_a.tft.pkt_flt_dir",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_tft_pkt_flt_dir_vals), 0x30,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_tft_pkt_flt_id,
+ { "Packet filter identifier", "gsm_a.tft.pkt_flt_id",
+ FT_UINT8, BASE_DEC, NULL, 0x0f,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_sm_ip4_address,
+ { "IPv4 address", "gsm_a.sm.ip4_address",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_sm_ip4_mask,
+ { "IPv4 address mask", "gsm_a.sm.ip4_mask",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_sm_ip6_address,
+ { "IPv6 address", "gsm_a.sm.ip6_address",
+ FT_IPv6, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_sm_ip6_mask,
+ { "IPv6 address mask", "gsm_a.sm.ip6_mask",
+ FT_IPv6, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_tft_protocol_header,
+ { "Protocol/header", "gsm_a.tft.protocol_header",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, (&ipproto_val_ext), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_tft_port,
+ { "Port", "gsm_a.tft.port",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_tft_port_low,
+ { "Low limit port", "gsm_a.tft.port_low",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_tft_port_high,
+ { "High limit port", "gsm_a.tft.port_high",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_tft_security,
+ { "IPSec security parameter index", "gsm_a.tft.security",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_tft_traffic_class,
+ { "Type of service/Traffic class field", "gsm_a.tft.traffic_class",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_tft_traffic_mask,
+ { "Mask field", "gsm_a.tft.traffic_mask",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_tft_flow_label_type,
+ { "Flow Label Type", "gsm_a.tft.flow_label_type",
+ FT_UINT24, BASE_HEX, NULL, 0x0FFFFF,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_tft_param_id,
+ { "Parameter identifier", "gsm_a.tft.param_id",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_tft_param_id_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_ptmsi_sig,
+ { "P-TMSI Signature", "gsm_a.ptmsi_sig",
+ FT_UINT24, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_ptmsi_sig2,
+ { "P-TMSI Signature 2", "gsm_a.ptmsi_sig2",
+ FT_UINT24, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_acc_tech_type,
+ { "Access Technology Type", "gsm_a.gm.acc_tech_type",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_acc_tech_type_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_acc_cap_struct_len,
+ { "Length in bits", "gsm_a.gm.acc_cap_struct_len",
+ FT_UINT8, BASE_HEX_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_sms_value,
+ { "SMS_VALUE (Switch-Measure-Switch)", "gsm_a.gm.sms",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_sms_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_sm_value,
+ { "(SM_VALUE) Switch-Measure", "gsm_a.gm.sm",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_sms_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_sm_ext,
+ { "Ext", "gsm_a.gm.sm.ext",
+ FT_UINT8, BASE_HEX, NULL, 0x80,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_link_dir,
+ { "Link direction", "gsm_a.gm.link_dir",
+ FT_INT32, BASE_DEC, VALS(gsm_a_gm_link_dir_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_cause,
+ { "gmm Cause", "gsm_a.gm.cause",
+ FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(gmm_cause_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_fop,
+ { "Follow-on proceed", "gsm_a.gm.fop",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_res_of_attach,
+ { "Result of attach", "gsm_a.gm.res_of_attach",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_res_of_attach_vals), 0x07,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_type_of_ciph_alg,
+ { "Type of ciphering algorithm", "gsm_a.gm.type_of_ciph_alg",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_type_of_ciph_alg_vals), 0x07,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_imeisv_req,
+ { "IMEISV request", "gsm_a.gm.imeisv_req",
+ FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(gsm_a_gm_imeisv_req_vals), 0x00,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_ac_ref_nr,
+ { "A&C reference number", "gsm_a.gm.ac_ref_nr",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_force_to_standby,
+ { "Force to standby", "gsm_a.gm.force_to_standby",
+ FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(gsm_a_gm_force_to_standby_vals), 0x00,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_ciph_key_seq_num,
+ { "Ciphering key sequence number", "gsm_a.gm.ciph_key_seq_num",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_serv_type,
+ { "Service type", "gsm_a.gm.serv_type",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_serv_type_vals), 0x00,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_for,
+ { "Follow-on request pending", "gsm_a.gm.for",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_type_of_attach,
+ { "Type of attach", "gsm_a.gm.type_of_attach",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_type_of_attach_vals), 0x07,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_tmsi_flag,
+ { "TMSI flag", "gsm_a.gm.tmsi_flag",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gm_tmsi_flag_value), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_update_type,
+ { "Update type", "gsm_a.gm.update_type",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_update_type_vals), 0x07,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_gprs_timer_unit,
+ { "Unit", "gsm_a.gm.gprs_timer_unit",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_gprs_timer_unit_vals), 0xe0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_gprs_timer_value,
+ { "Timer value", "gsm_a.gm.gprs_timer_value",
+ FT_UINT8, BASE_DEC, NULL, 0x1f,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_gprs_timer2_unit,
+ { "Unit", "gsm_a.gm.gprs_timer2_unit",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_gprs_timer_unit_vals), 0xe0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_gprs_timer2_value,
+ { "Timer value", "gsm_a.gm.gprs_timer2_value",
+ FT_UINT8, BASE_DEC, NULL, 0x1f,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_gprs_timer3_unit,
+ { "Unit", "gsm_a.gm.gprs_timer3_unit",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_gprs_timer3_unit_vals), 0xe0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_gprs_timer3_value,
+ { "Timer value", "gsm_a.gm.gprs_timer3_value",
+ FT_UINT8, BASE_DEC, NULL, 0x1f,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_nsapi_5_ul_stat,
+ { "NSAPI(5) uplink status", "gsm_a.gm.nsapi_5_ul_stat",
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_nsapi_6_ul_stat,
+ { "NSAPI(6) uplink status", "gsm_a.gm.nsapi_6_ul_stat",
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_nsapi_7_ul_stat,
+ { "NSAPI(7) uplink status", "gsm_a.gm.nsapi_7_ul_stat",
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_nsapi_8_ul_stat,
+ { "NSAPI(8) uplink status", "gsm_a.gm.nsapi_8_ul_stat",
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_nsapi_9_ul_stat,
+ { "NSAPI(9) uplink status", "gsm_a.gm.nsapi_9_ul_stat",
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_nsapi_10_ul_stat,
+ { "NSAPI(10) uplink status", "gsm_a.gm.nsapi_10_ul_stat",
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_nsapi_11_ul_stat,
+ { "NSAPI(11) uplink status", "gsm_a.gm.nsapi_11_ul_stat",
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_nsapi_12_ul_stat,
+ { "NSAPI(12) uplink status", "gsm_a.gm.nsapi_12_ul_stat",
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_nsapi_13_ul_stat,
+ { "NSAPI(13) uplink status", "gsm_a.gm.nsapi_13_ul_stat",
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_nsapi_14_ul_stat,
+ { "NSAPI(14) uplink status", "gsm_a.gm.nsapi_14_ul_stat",
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_nsapi_15_ul_stat,
+ { "NSAPI(15) uplink status", "gsm_a.gm.nsapi_15_ul_stat",
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_device_prop_low_prio,
+ { "Low priority", "gsm_a.gm.device_prop_low_prio",
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_gm_device_prop_low_prio_value), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_pco_pid,
+ { "Protocol or Container ID", "gsm_a.gm.pco_pid",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_pco_app_spec_info,
+ { "Application specific information", "gsm_a.gm.app_spec_info",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_type_of_identity,
+ { "Type of identity", "gsm_a.gm.type_of_identity",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_type_of_identity_vals), 0x07,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac,
+ { "Routing Area Code (RAC)", "gsm_a.gm.rac",
+ FT_UINT8, BASE_HEX_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_apc,
+ { "APC", "gsm_a.gm.apc",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gm_apc_vals), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_otd_a,
+ { "OTD-A", "gsm_a.gm.otd_a",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gm_otd_a_vals), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_otd_b,
+ { "OTD-B", "gsm_a.gm.otd_b",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gm_otd_b_vals), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_gps_a,
+ { "GPS-A", "gsm_a.gm.gps_a",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gm_gps_a_vals), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_gps_b,
+ { "GPS-B", "gsm_a.gm.gps_b",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gm_gps_b_vals), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_gps_c,
+ { "GPS-C", "gsm_a.gm.gps_c",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gm_gps_c_vals), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_lcs_molr,
+ { "LCS-MOLR", "gsm_a.gm.lcs_molr",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gm_lcs_molr_value), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_mbms,
+ { "MBMS", "gsm_a.gm.mbms",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_ims_vops,
+ { "IMS VoPS", "gsm_a.gm.ims_vops",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gm_ims_vops_value), 0x02,
+ "IMS voice over PS session indicator", HFILL }
+ },
+ { &hf_gsm_a_gm_emc_bs,
+ { "EMC BS", "gsm_a.gm.emc_bs",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gm_emc_bs_value), 0x01,
+ "Emergency bearer services indicator", HFILL }
+ },
+ { &hf_gsm_a_gm_req_ms_info_irat,
+ { "I-RAT", "gsm_a.gm.req_ms_info_irat",
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_gm_req_ms_info_irat_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_req_ms_info_irat2,
+ { "I-RAT2", "gsm_a.gm.req_ms_info_irat2",
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_gm_req_ms_info_irat2_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_ue_usage_setting,
+ { "UE's usage setting", "gsm_a.gm.ue_usage_setting",
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_gm_ue_usage_setting_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_voice_domain_pref_for_eutran,
+ { "Voice domain preference for E-UTRAN", "gsm_a.gm.voice_domain_pref_for_eutran",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_voice_domain_pref_for_eutran_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_ptmsi_type,
+ { "P-TMSI type", "gsm_a.gm.ptmsi_type",
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_gm_ptmsi_type_value), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_sm_pdp_type_org,
+ { "PDP type organization", "gsm_a.sm.pdp_type_org",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_sm_pdp_type_org_vals), 0x0f,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_qos_mean_thr,
+ { "Mean throughput", "gsm_a.qos.mean_throughput",
+ FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(gsm_a_qos_mean_thr_vals), 0x1f,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_qos_peak_thr,
+ { "Peak throughput", "gsm_a.qos.peak_throughput",
+ FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(gsm_a_qos_peak_thr_vals), 0xf0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_qos_prec_class,
+ { "Precedence class", "gsm_a.qos.prec_class",
+ FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(gsm_a_qos_prec_class_vals), 0x07,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_qos_trans_delay,
+ { "Transfer delay", "gsm_a.qos.trans_delay",
+ FT_UINT8, BASE_DEC, NULL, 0xfc,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_qos_signalling_ind,
+ { "Signalling indication", "gsm_a.qos.signalling_ind",
+ FT_BOOLEAN, 8, TFS(&gsm_a_qos_signalling_ind_value), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_qos_source_stat_desc,
+ { "Source statistics description", "gsm_a.qos.source_stat_desc",
+ FT_UINT8, BASE_DEC, NULL, 0x0f,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_qos_max_bitrate_upl,
+ { "Maximum bitrate for uplink", "gsm_a.qos.max_bitrate_upl",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_qos_max_bitrate_downl,
+ { "Maximum bitrate for downlink", "gsm_a.qos.max_bitrate_downl",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_qos_guar_bitrate_upl,
+ { "Guaranteed bitrate for uplink", "gsm_a.qos.guar_bitrate_upl",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_qos_guar_bitrate_downl,
+ { "Guaranteed bitrate for downlink", "gsm_a.qos.guar_bitrate_downl",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_qos_max_bitrate_upl_ext,
+ { "Maximum bitrate for uplink (extended)", "gsm_a.qos.max_bitrate_upl_ext",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_qos_max_bitrate_downl_ext,
+ { "Maximum bitrate for downlink (extended)", "gsm_a.qos.max_bitrate_downl_ext",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_qos_guar_bitrate_upl_ext,
+ { "Guaranteed bitrate for uplink (extended)", "gsm_a.qos.guar_bitrate_upl_ext",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_qos_guar_bitrate_downl_ext,
+ { "Guaranteed bitrate for downlink (extended)", "gsm_a.qos.guar_bitrate_downl_ext",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_sm_cause,
+ { "SM Cause", "gsm_a.sm.cause",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_sm_cause_2,
+ { "SM Cause 2", "gsm_a.sm.cause_2",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_sm_llc_sapi,
+ { "LLC SAPI", "gsm_a.sm.llc_sapi",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_sm_llc_sapi_vals), 0x0f,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_sm_tdi,
+ { "Tear Down Indicator (TDI)", "gsm_a.sm.tdi",
+ FT_BOOLEAN, 8, TFS(&gsm_a_sm_tdi_value), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_sm_packet_flow_id,
+ { "Packet Flow Identifier (PFI)", "gsm_a.sm.packet_flow_id",
+ FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(gsm_a_sm_packet_flow_id_vals), 0x7f,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_net_cap_gea1,
+ { "GEA/1", "gsm_a.gmm.net_cap.gea1",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_gea_vals), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_net_cap_smdch,
+ { "SM capabilities via dedicated channels", "gsm_a.gmm.net_cap.smdch",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_smdch_vals), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_net_cap_smgprs,
+ { "SM capabilities via GPRS channels", "gsm_a.gmm.net_cap.smgprs",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_smgprs_vals), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_net_cap_ucs2,
+ { "UCS2 support", "gsm_a.gmm.net_cap.ucs2",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_smgprs_vals), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_net_cap_ss_scr_ind,
+ { "SS Screening Indicator", "gsm_a.gmm.net_cap.ss_scr_ind",
+ FT_UINT8, BASE_HEX, VALS(gsm_a_gmm_net_cap_ss_scr_ind_vals), 0x0c,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_net_cap_solsa,
+ { "SoLSA Capability", "gsm_a.gmm.net_cap.solsa",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_solsa_vals), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_net_cap_rev,
+ { "Revision level indicator", "gsm_a.gmm.net_cap.rev",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_rev_vals), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_net_cap_pfc,
+ { "PFC feature mode", "gsm_a.gmm.net_cap.pfc",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_pfc_vals), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_net_cap_ext_gea_bits,
+ { "Extended GEA bits", "gsm_a.gmm.net_cap.ext_gea_bits",
+ FT_UINT8, BASE_HEX, NULL, 0x7e,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_net_cap_gea2,
+ { "GEA/2", "gsm_a.gmm.net_cap.gea2",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_gea_vals), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_net_cap_gea3,
+ { "GEA/3", "gsm_a.gmm.net_cap.gea3",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_gea_vals), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_net_cap_gea4,
+ { "GEA/4", "gsm_a.gmm.net_cap.gea4",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_gea_vals), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_net_cap_gea5,
+ { "GEA/5", "gsm_a.gmm.net_cap.gea5",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_gea_vals), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_net_cap_gea6,
+ { "GEA/6", "gsm_a.gmm.net_cap.gea6",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_gea_vals), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_net_cap_gea7,
+ { "GEA/7", "gsm_a.gmm.net_cap.gea7",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_gea_vals), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_net_cap_lcs,
+ { "LCS VA capability", "gsm_a.gmm.net_cap.lcs",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_lcs_vals), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_net_cap_ps_irat_iu,
+ { "PS inter-RAT HO from GERAN to UTRAN Iu mode capability", "gsm_a.gmm.net_cap.ps_irat_iu",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_ps_irat_iu_vals), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_net_cap_ps_irat_s1,
+ { "PS inter-RAT HO from GERAN to E-UTRAN S1 mode capability", "gsm_a.gmm.net_cap.ps_irat_s1",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_ps_irat_s1_vals), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_net_cap_comb_proc,
+ { "EMM Combined procedures capability", "gsm_a.gmm.net_cap.comb_proc",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_comb_proc_vals), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_net_cap_isr,
+ { "ISR support", "gsm_a.gmm.net_cap.isr",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_isr_vals), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_net_cap_srvcc_to_geran,
+ { "SRVCC to GERAN/UTRAN capability", "gsm_a.gmm.net_cap.srvcc_to_geran",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_srvcc_to_geran_vals), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_net_cap_epc,
+ { "EPC Capability", "gsm_a.gmm.net_cap.epc",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_epc_vals), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gmm_net_cap_nf,
+ { "NF Capability", "gsm_a.gmm.net_cap.nf",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_nf_vals), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_sm_tmgi,
+ { "Temporary Mobile Group Identity (TMGI)", "gsm_a.sm.tmgi",
+ FT_UINT24, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_sm_enh_nsapi,
+ { "Enhanced NSAPI", "gsm_a.sm.enh_nsapi",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_sm_req_type,
+ { "Request type", "gsm_a.sm.req_type",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_sm_req_type_vals), 0x07,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_sm_notif_ind,
+ { "Notification indicator value", "gsm_a.sm.notif_ind",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_sm_notif_ind_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_sm_connectivity_type,
+ { "Connectivity type value", "gsm_a.sm.connectivity_type",
+ FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(gsm_a_sm_connectivity_type_vals), 0x0F,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_ctrled_early_cm_sending,
+ { "Controlled early Classmark Sending", "gsm_a.gm.rac.ctrled_early_cm_sending",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_implemented_not_implemented), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_pseudo_sync,
+ { "Pseudo Synchronisation", "gsm_a.gm.rac.pseudo_sync",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_present_not_present), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_vgcs,
+ { "Voice Group Call Service", "gsm_a.gm.rac.vgcs",
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_gm_vgcs), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_vbs,
+ { "Voice Broadcast Service", "gsm_a.gm.rac.vbs",
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_gm_vbs), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_multislot_capability,
+ { "Multislot capability struct", "gsm_a.gm.rac.multislot_capability",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_present_not_present), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_hscsd_multi_slot_class,
+ { "HSCSD multislot class", "gsm_a.gm.rac.hscsd_multi_slot_class",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_multi_slot_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_gprs_multi_slot_class,
+ { "GPRS multislot class", "gsm_a.gm.rac.gprs_multi_slot_class",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_multi_slot_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_gprs_ext_dyn_alloc_cap,
+ { "GPRS Extended Dynamic Allocation Capability", "gsm_a.gm.rac.gprs_ext_dyn_alloc_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_implemented_not_implemented), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_ecsd_multi_slot_class,
+ { "ECSD multislot class", "gsm_a.gm.rac.ecsd_multi_slot_class",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_multi_slot_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_egprs_multi_slot_class,
+ { "EGPRS multislot class", "gsm_a.gm.rac.egprs_multi_slot_class",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_multi_slot_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_egprs_ext_dyn_alloc_cap,
+ { "EGPRS Extended Dynamic Allocation Capability", "gsm_a.gm.rac.egprs_ext_dyn_alloc_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_implemented_not_implemented), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_dtm_gprs_multi_slot_class,
+ { "DTM GPRS Multi Slot Class", "gsm_a.gm.rac.dtm_gprs_multi_slot_class",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_dtm_gprs_multi_slot_class_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_single_slt_dtm,
+ { "Single Slot DTM", "gsm_a.gm.rac.single_slt_dtm",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_dtm_egprs_multi_slot_cls_pres,
+ { "DTM EGPRS Multi Slot Class", "gsm_a.gm.rac.dtm_egprs_multi_slot_cls_pres",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_present_not_present), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_dtm_egprs_multi_slot_class,
+ { "DTM EGPRS Multi Slot Class", "gsm_a.gm.rac.dtm_egprs_multi_slot_class",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_dtm_gprs_multi_slot_class_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_8psk_pow_cap_pres,
+ { "8PSK Power Capability Bits", "gsm_a.gm.rac.8psk_pow_cap_pres",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_present_not_present), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_comp_int_meas_cap,
+ { "COMPACT Interference Measurement Capability", "gsm_a.gm.rac.comp_int_meas_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_implemented_not_implemented), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rel_lev_ind,
+ { "Revision Level Indicator", "gsm_a.gm.rel_lev_ind",
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_gm_revision_level_indicator), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_umts_fdd_cap,
+ { "UMTS FDD Radio Access Technology Capability", "gsm_a.gm.rac.umts_fdd_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_umts_384_tdd_ra_cap,
+ { "UMTS 3.84 Mcps TDD Radio Access Technology Capability", "gsm_a.gm.rac.umts_384_tdd_ra_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_cdma2000_cap,
+ { "CDMA 2000 Radio Access Technology Capability", "gsm_a.gm.rac.cdma2000_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_umts_128_tdd_ra_cap,
+ { "UMTS 1.28 Mcps TDD Radio Access Technology Capability", "gsm_a.gm.rac.umts_128_tdd_ra_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_geran_feat_pkg,
+ { "GERAN Feature Package 1", "gsm_a.gm.rac.geran_feat_pkg",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_mod_based_multi_slot_class_support,
+ { "Modulation based multislot class support", "gsm_a.gm.rac.mod_based_multi_slot_class_support",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_geran_iu_mode_cap,
+ { "GERAN Iu mode", "gsm_a.gm.rac.geran_iu_mode_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_flo_iu_cap,
+ { "FLO Iu Capability", "gsm_a.gm.rac.flo_iu_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_mult_tbf_cap,
+ { "Multiple TBF Capability", "gsm_a.gm.rac.mult_tbf_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_down_adv_rec_perf,
+ { "Downlink Advanced Receiver Performance", "gsm_a.gm.rac.down_adv_rec_perf",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_down_adv_rec_perf_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_ext_rlc_mac_ctrl_msg_seg_cap,
+ { "Extended RLC/MAC Control Message Segmentation Capability", "gsm_a.gm.rac.ext_rlc_mac_ctrl_msg_seg_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_dtm_enh_cap,
+ { "DTM Enhancements Capability", "gsm_a.gm.rac.dtm_enh_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_gm_dtm_enh_cap), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_dtm_gprs_high_multi_slot_class,
+ { "DTM GPRS High Multi Slot Class", "gsm_a.gm.rac.dtm_gprs_high_multi_slot_class",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_dtm_gprs_high_multi_slot_class_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_dtm_egprs_high_multi_slot_class,
+ { "DTM EGPRS High Multi Slot Class", "gsm_a.gm.rac.dtm_egprs_high_multi_slot_class",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_dtm_gprs_high_multi_slot_class_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_ps_ho_cap,
+ { "PS Handover Capability", "gsm_a.gm.rac.ps_ho_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_dtm_ho_cap,
+ { "DTM Handover Capability", "gsm_a.gm.rac.dtm_ho_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_multi_slot_cap_red_down_dual_carrier,
+ { "Multislot Capability Reduction for Downlink Dual Carrier", "gsm_a.gm.rac.multi_slot_cap_red_down_dual_carrier",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_multi_slot_cap_red_down_dual_carrier_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_down_dual_carrier_dtm_cap,
+ { "Downlink Dual Carrier for DTM Capability", "gsm_a.gm.rac.down_dual_carrier_dtm_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_flex_ts_assign,
+ { "Flexible Timeslot Assignment", "gsm_a.gm.rac.flex_ts_assign",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_gan_ps_ho_cap,
+ { "GAN PS Handover Capability", "gsm_a.gm.rac.gan_ps_ho_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_rlc_non_pers_mode,
+ { "RLC Non-persistent Mode", "gsm_a.gm.rac.rlc_non_pers_mode",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_reduced_lat_cap,
+ { "Reduced Latency Capability", "gsm_a.gm.rac.reduced_lat_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_ul_egprs2,
+ { "Uplink EGPRS2", "gsm_a.gm.rac.ul_egprs2",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_ul_egprs2_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_dl_egprs2,
+ { "Downlink EGPRS2", "gsm_a.gm.rac.dl_egprs2",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_dl_egprs2_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_eutra_fdd_support,
+ { "E-UTRA FDD support", "gsm_a.gm.rac.eutra_fdd_support",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_eutra_tdd_support,
+ { "E-UTRA TDD support", "gsm_a.gm.rac.eutra_tdd_support",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_geran_to_eutra_support_in_geran_ptm,
+ { "GERAN to E-UTRA support in GERAN packet transfer mode", "gsm_a.gm.rac.geran_to_eutra_support_in_geran_ptm",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_geran_to_eutra_support_in_geran_ptm_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_prio_based_resel_support,
+ { "Priority-based reselection support", "gsm_a.gm.rac.prio_based_resel_support",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_alt_efta_multi_slot_class,
+ { "Alternative EFTA Multislot Class", "gsm_a.gm.rac.alt_efta_multi_slot_class",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_alt_efta_multi_slot_class_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_efta_multi_slot_cap_red_down_dual_carrier,
+ { "EFTA Multislot Capability Reduction for Downlink Dual Carrier", "gsm_a.gm.rac.efta_multi_slot_cap_red_down_dual_carrier",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_multi_slot_cap_red_down_dual_carrier_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_ind_up_layer_pdu_start_cap_for_rlc_um,
+ { "Indication of Upper Layer PDU Start Capability for RLC UM", "gsm_a.gm.rac.ind_up_layer_pdu_start_cap_for_rlc_um",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_emst_cap,
+ { "Enhanced Multiplexing for Single TBF Capability", "gsm_a.gm.rac.emst_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_mtti_cap,
+ { "Multiple TTI Capability", "gsm_a.gm.rac.mtti_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_utra_csg_cell_report,
+ { "Reporting of UTRAN CSG cells in packet transfer mode", "gsm_a.gm.rac.utra_csg_cell_report",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_eutra_csg_cell_report,
+ { "Reporting of E-UTRAN CSG cells in packet transfer mode", "gsm_a.gm.rac.eutra_csg_cell_report",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_dtr_cap,
+ { "Dynamic Timeslot Reduction Capability", "gsm_a.gm.rac.dtr_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_emsr_cap,
+ { "Enhanced Multiplexing for Single RLC Entity Capability", "gsm_a.gm.rac.emsr_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_fast_down_freq_switch_cap,
+ { "Fast Downlink Frequency Switching Capability", "gsm_a.gm.rac.fast_down_freq_switch_cap",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_rac_tighter_cap,
+ { "TIGHTER Capability", "gsm_a.gm.rac.tighter_cap",
+ FT_UINT8, BASE_DEC, VALS(tighter_cap_level_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_sm_ti_flag,
+ { "TI Flag", "gsm_a.sm.ti_flag",
+ FT_BOOLEAN, 8, TFS(&gsm_a_sm_ti_flag_vals), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_sm_ext,
+ { "Extension", "gsm_a.sm.ext",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ NULL, HFILL }
+ },
+ };
/* Setup protocol subtree array */
-#define NUM_INDIVIDUAL_ELEMS 18
+#define NUM_INDIVIDUAL_ELEMS 19
gint *ett[NUM_INDIVIDUAL_ELEMS +
NUM_GSM_DTAP_MSG_GMM + NUM_GSM_DTAP_MSG_SM +
NUM_GSM_GM_ELEM];
@@ -7557,22 +7913,23 @@ proto_register_gsm_a_gm(void)
ett[15] = &ett_gmm_gprs_timer;
ett[16] = &ett_gmm_network_cap;
ett[17] = &ett_gsm_a_gm_msrac_multislot_capability;
+ ett[18] = &ett_sm_pco;
last_offset = NUM_INDIVIDUAL_ELEMS;
- for (i=0; i < NUM_GSM_DTAP_MSG_GMM; i++, last_offset++)
+ for (i=0; i<NUM_GSM_DTAP_MSG_GMM; i++, last_offset++)
{
ett_gsm_dtap_msg_gmm[i] = -1;
ett[last_offset] = &ett_gsm_dtap_msg_gmm[i];
}
- for (i=0; i < NUM_GSM_DTAP_MSG_SM; i++, last_offset++)
+ for (i=0; i<NUM_GSM_DTAP_MSG_SM; i++, last_offset++)
{
ett_gsm_dtap_msg_sm[i] = -1;
ett[last_offset] = &ett_gsm_dtap_msg_sm[i];
}
- for (i=0; i < NUM_GSM_GM_ELEM; i++, last_offset++)
+ for (i=0; i<NUM_GSM_GM_ELEM; i++, last_offset++)
{
ett_gsm_gm_elem[i] = -1;
ett[last_offset] = &ett_gsm_gm_elem[i];
diff --git a/epan/dissectors/packet-gsm_a_rp.c b/epan/dissectors/packet-gsm_a_rp.c
index faecd8a19d..68eee6dbd3 100644
--- a/epan/dissectors/packet-gsm_a_rp.c
+++ b/epan/dissectors/packet-gsm_a_rp.c
@@ -36,7 +36,7 @@
# include "config.h"
#endif
-#include <stdlib.h>
+#include <glib.h>
#include <epan/packet.h>
#include <epan/tap.h>
@@ -262,7 +262,7 @@ guint16 (*rp_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gu
/*
* [5] 7.3.1.1
*/
-static void
+void
rp_data_n_ms(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
guint32 curr_offset;
@@ -425,7 +425,7 @@ rp_error_ms_n(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offse
static gint ett_gsm_rp_msg[NUM_GSM_RP_MSG];
static void (*rp_msg_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len) = {
rp_data_ms_n, /* RP-DATA (MS to Network) */
- rp_data_n_ms, /* RP-DATA (Network to MS */
+ rp_data_n_ms, /* RP-DATA (Network to MS) */
rp_ack_ms_n, /* RP-ACK (MS to Network) */
rp_ack_n_ms, /* RP-ACK (Network to MS) */
rp_error_ms_n, /* RP-ERROR (MS to Network) */
@@ -539,7 +539,7 @@ proto_register_gsm_a_rp(void)
},
{ &hf_gsm_a_rp_elem_id,
{ "Element ID", "gsm_a_rp.elem_id",
- FT_UINT8, BASE_DEC, NULL, 0,
+ FT_UINT8, BASE_HEX, NULL, 0,
NULL, HFILL }
},
};
diff --git a/epan/dissectors/packet-gsm_a_rr.c b/epan/dissectors/packet-gsm_a_rr.c
index 3f00a51f94..049179143b 100644
--- a/epan/dissectors/packet-gsm_a_rr.c
+++ b/epan/dissectors/packet-gsm_a_rr.c
@@ -1,4 +1,4 @@
-/* packet-gsm_a_rr.c
+ /* packet-gsm_a_rr.c
* Routines for GSM A Interface (actually A-bis really) RR dissection - A.K.A. GSM layer 3 Radio Resource Protocol
*
* Copyright 2003, Michael Lum <mlum [AT] telostech.com>
@@ -65,8 +65,6 @@ static dissector_handle_t rrc_irat_ho_to_utran_cmd_handle;
#define PADDING_BYTE 0x2B
-/* PROTOTYPES/FORWARDS */
-
const value_string gsm_a_dtap_msg_rr_strings[] = {
{ 0x3c, "Reserved" },
{ 0x3b, "Additional Assignment" },
@@ -542,7 +540,7 @@ static int hf_gsm_a_rr_ccch_conf = -1;
static int hf_gsm_a_rr_cbq3 = -1;
static int hf_gsm_a_rr_bs_pa_mfrms = -1;
static int hf_gsm_a_rr_bs_ag_blks_res = -1;
-static int hf_gsm_a_rr_t3212 = -1;
+int hf_gsm_a_rr_t3212 = -1;
static int hf_gsm_a_rr_dyn_arfcn_length = -1;
static int hf_gsm_a_rr_gsm_band = -1;
static int hf_gsm_a_rr_arfcn_first = -1;
@@ -882,10 +880,10 @@ gint ett_gsm_rr_rest_octets_elem[NUM_GSM_RR_REST_OCTETS_ELEM];
/* this function is used for dissecting the 0/1 presence flags in CSN.1 coded IEs */
static gboolean gsm_rr_csn_flag(tvbuff_t *tvb, proto_tree *tree, gint bit_offset, const char *description, const char *true_string, const char * false_string)
{
- guint8 bit_mask = 0x80 >> (bit_offset % 8);
- guint8 value = tvb_get_guint8(tvb, bit_offset >> 3);
- char bits_str[] = {".... ...."};
+ guint8 bit_mask = 0x80 >> (bit_offset % 8);
+ guint8 value = tvb_get_guint8(tvb, bit_offset >> 3);
guint8 offset_in_octet = bit_offset % 8;
+ char bits_str[] = {".... ...."};
if (value & bit_mask)
{
@@ -895,7 +893,7 @@ static gboolean gsm_rr_csn_flag(tvbuff_t *tvb, proto_tree *tree, gint bit_offset
}
bits_str[offset_in_octet + (offset_in_octet / 4)] = '0';
proto_tree_add_text(tree, tvb, bit_offset>>3, 1, "%s: %s: %s", bits_str, description, false_string);
- return FALSE;
+ return FALSE;
}
/* this function is used for dissecting the H/L presence flags in CSN.1 coded IEs"
@@ -917,7 +915,7 @@ static gboolean gsm_rr_csn_HL_flag(tvbuff_t *tvb, proto_tree *tree, guint trunca
}
else
{
- /* implict L bit */
+ /* implicit L bit */
proto_tree_add_text(tree, tvb, truncation_length>>3, 1, "(implicit L bit): %s: %s", description, false_string);
return FALSE;
}
@@ -936,7 +934,7 @@ static gboolean gsm_rr_csn_HL_flag(tvbuff_t *tvb, proto_tree *tree, guint trunca
}
bits_str[offset_in_octet + (offset_in_octet / 4)] = 'L';
proto_tree_add_text(tree, tvb, bit_offset>>3, 1, "%s: %s: %s", bits_str, description, false_string);
- return FALSE;
+ return FALSE;
}
/*
@@ -1040,8 +1038,8 @@ static gint greatest_power_of_2_lesser_or_equal_to(gint idx)
{
gint j = 1;
do {
- j<<=1;
- } while (j<=idx);
+ j <<= 1;
+ } while (j <= idx);
j >>= 1;
return j;
}
@@ -1085,7 +1083,7 @@ static void dissect_channel_list_n_range(tvbuff_t *tvb, proto_tree *tree, packet
subtree = proto_item_add_subtree(item, ett_gsm_rr_elem[DE_RR_NEIGH_CELL_DESC]);
octet = tvb_get_guint8(tvb, curr_offset);
- if (range==1024) {
+ if (range == 1024) {
f0 = (octet>>2)&1;
if (f0)
list[0] = 1;
@@ -1097,7 +1095,7 @@ static void dissect_channel_list_n_range(tvbuff_t *tvb, proto_tree *tree, packet
else {
bit_offset = curr_offset*8 + 7;
arfcn_orig = (gint) tvb_get_bits(tvb, bit_offset, 10, FALSE);
- proto_tree_add_bits_item(subtree, hf_n_range_orig_arfcn, tvb, bit_offset, 10, FALSE);
+ proto_tree_add_bits_item(subtree, hf_n_range_orig_arfcn, tvb, bit_offset, 10, ENC_BIG_ENDIAN);
bit_offset+=10;
list[arfcn_orig] = 1;
@@ -1116,8 +1114,6 @@ static void dissect_channel_list_n_range(tvbuff_t *tvb, proto_tree *tree, packet
imax = 28;
break;
default:
- wsize=0;
- imax = 0;
DISSECTOR_ASSERT_NOT_REACHED();
}
}
@@ -1127,21 +1123,21 @@ static void dissect_channel_list_n_range(tvbuff_t *tvb, proto_tree *tree, packet
for (i=1; i<=imax; i++) {
w[i] = (gint) tvb_get_bits(tvb, bit_offset, wsize, FALSE);
proto_tree_add_text(subtree, tvb, bit_offset>>3, ((bit_offset+wsize-1)>>3) - (bit_offset>>3) + 1 , "%s %s(%d): %d",
- decode_bits_in_field(bit_offset, wsize, w[i]),
- "W",
- i,
- w[i]);
+ decode_bits_in_field(bit_offset, wsize, w[i]),
+ "W",
+ i,
+ w[i]);
bit_offset += wsize;
curr_offset = bit_offset>>3;
if ((iused == imax) && (w[i] == 0) ) {
iused = i - 1;
}
- if ((curr_offset-offset)>len) {
+ if ((curr_offset-offset)>len) {
iused = i - 1;
break;
- }
- if (++jwi==nwi) { /* check if the number of wi at this wsize has been extracted */
+ }
+ if (++jwi == nwi) { /* check if the number of wi at this wsize has been extracted */
jwi = 0; /* reset the count of wi at this size */
nwi <<= 1; /* get twice as many of the next size */
wsize--; /* make the next size 1 bit smaller */
@@ -1174,7 +1170,7 @@ dissect_arfcn_list_core(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
item = proto_tree_add_text(tree,tvb, curr_offset, len, "List of ARFCNs =");
bit = 4;
arfcn = 125;
- for (byte = 0;byte <= len-1;byte++)
+ for (byte = 0; byte <= len-1; byte++)
{
oct = tvb_get_guint8(tvb, curr_offset);
while (bit-- != 0)
@@ -1220,7 +1216,7 @@ dissect_arfcn_list_core(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
item = proto_tree_add_text(tree,tvb,curr_offset,len,"List of ARFCNs = %d",arfcn);
curr_offset = curr_offset + 2;
bit = 7;
- for (byte = 0;byte <= len-3;byte++)
+ for (byte = 0; byte <= len-3; byte++)
{
oct = tvb_get_guint8(tvb, curr_offset);
while (bit-- != 0)
@@ -1335,7 +1331,7 @@ de_rr_utran_freq_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, g
* { 1 < TDD_ARFCN > : bit (14) } ** 0 -- TDD frequencies
* <spare bit>**;
* Spare bits in the end of the field are used to fill the last octet.
- */
+ */
bit_offset = curr_offset << 3;
proto_tree_add_bits_item(tree, hf_gsm_a_rr_utran_freq_list_length, tvb, bit_offset, 8, ENC_BIG_ENDIAN);
bit_offset += 8;
@@ -1442,7 +1438,7 @@ de_rr_cell_select_indic(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
idx = 0;
break;
}
- if (++jwi==nwi)
+ if (++jwi == nwi)
{
jwi = 0;
nwi <<= 1;
@@ -1510,12 +1506,12 @@ de_rr_cell_select_indic(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
w[i] = tvb_get_bits(tvb, bit_offset, wsize, ENC_BIG_ENDIAN);
bit_offset += wsize;
idx -= wsize;
- if (w[i] == 0)
+ if (w[i] == 0)
{
idx = 0;
break;
}
- if (++jwi==nwi)
+ if (++jwi == nwi)
{
jwi = 0;
nwi <<= 1;
@@ -1633,20 +1629,23 @@ static const value_string gsm_a_rr_dtx_sacch_vals[] = {
{ 0x07, "The MS may use uplink discontinuous transmission on a TCH-F. The MS shall use uplink discontinuous transmission on TCH-H" },
{ 0, NULL } };
+static const crumb_spec_t gsm_a_rr_dtx_sacch_crumbs[] = {
+ { 0, 1}, /* B8 */
+ { 2, 2}, /* B6 - B5 */
+ { 0, 0}
+};
+
static guint16
de_rr_cell_opt_sacch(tvbuff_t *tvb, proto_tree *subtree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
- guint8 dtx;
guint32 curr_offset;
curr_offset = offset;
- oct = tvb_get_guint8(tvb, curr_offset);
- dtx = ((oct&0x80)>>5)|((oct&0x30)>>4); /* DTX is a split filed in bits 8, 6 and 5 */
proto_tree_add_bits_item(subtree, hf_gsm_a_rr_pwrc, tvb, (curr_offset<<3)+1, 1, ENC_BIG_ENDIAN);
- proto_tree_add_uint(subtree, hf_gsm_a_rr_dtx_sacch, tvb, curr_offset, 1, dtx);
+ /* DTX is a split field in bits 8, 6 and 5 */
+ proto_tree_add_split_bits_item_ret_val(subtree, hf_gsm_a_rr_dtx_sacch, tvb, (curr_offset<<3), gsm_a_rr_dtx_sacch_crumbs, NULL);
proto_tree_add_item(subtree, hf_gsm_a_rr_radio_link_timeout, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
curr_offset = curr_offset + 1;
@@ -2083,7 +2082,7 @@ de_rr_chnl_needed(tvbuff_t *tvb, proto_tree *subtree, packet_info *pinfo _U_, gu
gint bit_offset;
curr_offset = offset;
- if (RIGHT_NIBBLE==len)
+ if (RIGHT_NIBBLE == len)
bit_offset = 4;
else
bit_offset = 0;
@@ -2126,7 +2125,7 @@ de_rr_cip_mode_set(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
* Note: The coding of fields SC and algorithm identifier is defined in [44.018]
* as part of the Cipher Mode Setting IE.
*/
- if (RIGHT_NIBBLE==len)
+ if (RIGHT_NIBBLE == len)
bit_offset = 4;
else
bit_offset = 0;
@@ -2157,7 +2156,7 @@ de_rr_cip_mode_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
gint bit_offset;
curr_offset = offset;
- if (RIGHT_NIBBLE==len)
+ if (RIGHT_NIBBLE == len)
bit_offset = 4;
else
bit_offset = 0;
@@ -2554,7 +2553,7 @@ de_rr_gprs_broadcast_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
bit_offset = curr_offset << 3;
bit_offset += de_rr_rest_oct_gprs_cell_options(tvb, tree, bit_offset);
- bit_offset += de_rr_rest_oct_gprs_power_control_parameters(tvb, tree, bit_offset);
+ /*bit_offset += */de_rr_rest_oct_gprs_power_control_parameters(tvb, tree, bit_offset);
curr_offset += len;
return (curr_offset - offset);
@@ -3884,13 +3883,13 @@ de_rr_p1_rest_oct(tvbuff_t *tvb, proto_tree *subtree, packet_info *pinfo _U_, gu
}
if (gsm_rr_csn_HL_flag(tvb, subtree, bit_len, bit_offset++, "Priority 1", "Present", "Not present"))
{
- item2 = proto_tree_add_bits_item(subtree, hf_gsm_a_call_prio, tvb, bit_offset, 3, FALSE);
+ item2 = proto_tree_add_bits_item(subtree, hf_gsm_a_call_prio, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
bit_offset += 3;
proto_item_append_text(item2, " for Mobile Identity 1");
}
if (gsm_rr_csn_HL_flag(tvb, subtree, bit_len, bit_offset++, "Priority 2", "Present", "Not present"))
{
- item2 = proto_tree_add_bits_item(subtree, hf_gsm_a_call_prio, tvb, bit_offset, 3, FALSE);
+ item2 = proto_tree_add_bits_item(subtree, hf_gsm_a_call_prio, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
bit_offset += 3;
proto_item_append_text(item2, " for Mobile Identity 2");
}
@@ -3961,13 +3960,13 @@ de_rr_p2_rest_oct(tvbuff_t *tvb, proto_tree *subtree, packet_info *pinfo _U_, gu
}
if (gsm_rr_csn_HL_flag(tvb, subtree, bit_len, bit_offset++, "Priority 2", "Present", "Not present"))
{
- item2 = proto_tree_add_bits_item(subtree, hf_gsm_a_call_prio, tvb, bit_offset, 3, FALSE);
+ item2 = proto_tree_add_bits_item(subtree, hf_gsm_a_call_prio, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
bit_offset += 3;
proto_item_append_text(item2, " for Mobile Identity 2");
}
if (gsm_rr_csn_HL_flag(tvb, subtree, bit_len, bit_offset++, "Priority 3", "Present", "Not present"))
{
- item2 = proto_tree_add_bits_item(subtree, hf_gsm_a_call_prio, tvb, bit_offset, 3, FALSE);
+ item2 = proto_tree_add_bits_item(subtree, hf_gsm_a_call_prio, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
bit_offset += 3;
proto_item_append_text(item2, " for Mobile Identity 3");
}
@@ -4018,25 +4017,25 @@ de_rr_p3_rest_oct(tvbuff_t *tvb, proto_tree *subtree, packet_info *pinfo _U_, gu
}
if (gsm_rr_csn_HL_flag(tvb, subtree, bit_len, bit_offset++, "Priority 1", "Present", "Not present"))
{
- item2 = proto_tree_add_bits_item(subtree, hf_gsm_a_call_prio, tvb, bit_offset, 3, FALSE);
+ item2 = proto_tree_add_bits_item(subtree, hf_gsm_a_call_prio, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
bit_offset += 3;
proto_item_append_text(item2, " for Mobile Identity 1");
}
if (gsm_rr_csn_HL_flag(tvb, subtree, bit_len, bit_offset++, "Priority 2", "Present", "Not present"))
{
- item2 = proto_tree_add_bits_item(subtree, hf_gsm_a_call_prio, tvb, bit_offset, 3, FALSE);
+ item2 = proto_tree_add_bits_item(subtree, hf_gsm_a_call_prio, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
bit_offset += 3;
proto_item_append_text(item2, " for Mobile Identity 2");
}
if (gsm_rr_csn_HL_flag(tvb, subtree, bit_len, bit_offset++, "Priority 3", "Present", "Not present"))
{
- item2 = proto_tree_add_bits_item(subtree, hf_gsm_a_call_prio, tvb, bit_offset, 3, FALSE);
+ item2 = proto_tree_add_bits_item(subtree, hf_gsm_a_call_prio, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
bit_offset += 3;
proto_item_append_text(item2, " for Mobile Identity 3");
}
if (gsm_rr_csn_HL_flag(tvb, subtree, bit_len, bit_offset++, "Priority 4", "Present", "Not present"))
{
- item2 = proto_tree_add_bits_item(subtree, hf_gsm_a_call_prio, tvb, bit_offset, 3, FALSE);
+ item2 = proto_tree_add_bits_item(subtree, hf_gsm_a_call_prio, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
bit_offset += 3;
proto_item_append_text(item2, " for Mobile Identity 4");
}
@@ -4875,7 +4874,7 @@ de_rr_si2quater_meas_info_utran_fdd_desc(tvbuff_t *tvb, proto_tree *tree, gint b
idx = 0;
break;
}
- if (++jwi==nwi)
+ if (++jwi == nwi)
{
jwi = 0;
nwi <<= 1;
@@ -4955,7 +4954,7 @@ de_rr_si2quater_meas_info_utran_tdd_desc(tvbuff_t *tvb, proto_tree *tree, gint b
idx = 0;
break;
}
- if (++jwi==nwi)
+ if (++jwi == nwi)
{
jwi = 0;
nwi <<= 1;
@@ -5797,7 +5796,7 @@ de_rr_eutran_measurement_param_desc(tvbuff_t *tvb, proto_tree *tree, gint bit_of
}
else
{
- if (gsm_rr_csn_flag(tvb, tree, curr_bit_offset++, "E-EUTRAN FDD Reporing Threshold", "Present", "Not Present"))
+ if (gsm_rr_csn_flag(tvb, tree, curr_bit_offset++, "E-EUTRAN FDD Reporting Threshold", "Present", "Not Present"))
{
item = proto_tree_add_bits_item(tree, hf_gsm_a_rr_eutran_fdd_measurement_report_offset, tvb, curr_bit_offset, 6, ENC_BIG_ENDIAN);
if (rep_quant == 0)
@@ -5823,7 +5822,7 @@ de_rr_eutran_measurement_param_desc(tvbuff_t *tvb, proto_tree *tree, gint bit_of
}
curr_bit_offset += 6;
}
- if (gsm_rr_csn_flag(tvb, tree, curr_bit_offset++, "E-UTRAN FDD Reporing Offset", "Present", "Not Present"))
+ if (gsm_rr_csn_flag(tvb, tree, curr_bit_offset++, "E-UTRAN FDD Reporting Offset", "Present", "Not Present"))
{
proto_tree_add_bits_item(tree, hf_gsm_a_rr_eutran_fdd_reporting_offset, tvb, curr_bit_offset, 3, ENC_BIG_ENDIAN);
curr_bit_offset += 3;
@@ -5908,7 +5907,7 @@ de_rr_eutran_param_desc(tvbuff_t *tvb, proto_tree *tree, gint bit_offset)
proto_tree_add_bits_item(subtree, hf_gsm_a_rr_qsearch_p_eutran, tvb, curr_bit_offset, 4, ENC_BIG_ENDIAN);
curr_bit_offset += 4;
rep_quant = gsm_rr_csn_flag(tvb, subtree, curr_bit_offset, "E-UTRAN Reporting Quantity", "RSRQ", "RSRP");
- curr_bit_offset++;
+ curr_bit_offset++;
proto_tree_add_bits_item(subtree, hf_gsm_a_rr_eutran_multirat_reporting, tvb, curr_bit_offset, 2, ENC_BIG_ENDIAN);
curr_bit_offset += 2;
@@ -5924,7 +5923,7 @@ de_rr_eutran_param_desc(tvbuff_t *tvb, proto_tree *tree, gint bit_offset)
}
curr_bit_offset += 3;
- if (gsm_rr_csn_flag(tvb, subtree, curr_bit_offset++, "E-UTRAN FDD Reporitng Threshold 2", "Present", "Not Present"))
+ if (gsm_rr_csn_flag(tvb, subtree, curr_bit_offset++, "E-UTRAN FDD Reporting Threshold 2", "Present", "Not Present"))
{
item = proto_tree_add_bits_item(tree, hf_gsm_a_rr_eutran_fdd_reporting_threshold_2, tvb, curr_bit_offset, 6, ENC_BIG_ENDIAN);
if (rep_quant == 0)
@@ -5956,7 +5955,7 @@ de_rr_eutran_param_desc(tvbuff_t *tvb, proto_tree *tree, gint bit_offset)
}
curr_bit_offset += 3;
- if (gsm_rr_csn_flag(tvb, subtree, curr_bit_offset++, "E-UTRAN TDD Reporitng Threshold 2", "Present", "Not Present"))
+ if (gsm_rr_csn_flag(tvb, subtree, curr_bit_offset++, "E-UTRAN TDD Reporting Threshold 2", "Present", "Not Present"))
{
item = proto_tree_add_bits_item(tree, hf_gsm_a_rr_eutran_tdd_reporting_threshold_2, tvb, curr_bit_offset, 6, ENC_BIG_ENDIAN);
if (rep_quant == 0)
@@ -6727,7 +6726,7 @@ de_rr_rest_oct_gprs_indicator(tvbuff_t *tvb, proto_tree *tree, gint bit_offset)
item = proto_tree_add_text(tree, tvb, curr_bit_offset>>3, 1, "%s", gsm_rr_rest_octets_elem_strings[DE_RR_REST_OCTETS_GPRS_INDICATOR].strptr);
subtree = proto_item_add_subtree(item, ett_gsm_rr_rest_octets_elem[DE_RR_REST_OCTETS_GPRS_INDICATOR]);
- proto_tree_add_bits_item(subtree, hf_gsm_a_rr_gprs_ra_colour, tvb, curr_bit_offset, 3, FALSE);
+ proto_tree_add_bits_item(subtree, hf_gsm_a_rr_gprs_ra_colour, tvb, curr_bit_offset, 3, ENC_BIG_ENDIAN);
curr_bit_offset += 3;
proto_tree_add_bits_item(subtree, hf_gsm_a_rr_si13_position, tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset += 1;
@@ -7450,12 +7449,12 @@ static const value_string gsm_a_rr_si2n_support_vals[] = {
static guint16
de_rr_si13_rest_oct(tvbuff_t *tvb, proto_tree *subtree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- proto_tree *subtree2;
- proto_item *item2;
- guint bit_offset, bit_offset_sav;
- guint8 tvb_len = tvb_length(tvb);
- guint16 bit_len = tvb_len << 3;
- bit_offset = offset << 3;
+ proto_tree *subtree2;
+ proto_item *item2;
+ guint bit_offset, bit_offset_sav;
+ guint8 tvb_len = tvb_length(tvb);
+ guint16 bit_len = tvb_len << 3;
+ bit_offset = offset << 3;
if (gsm_rr_csn_HL_flag(tvb, subtree, 0, bit_offset++, "SI13 contents", "Present", "Not present"))
{
@@ -7605,7 +7604,7 @@ static const value_string gsm_a_rr_sync_ind_si_vals[] = {
};
/* NCI: Normal cell indication (octet 1, bit 4) */
-static const true_false_string gsm_a_rr_sync_ind_nci_value = {
+static const true_false_string gsm_a_rr_sync_ind_nci_value = {
"Out of range timing advance shall trigger a handover failure procedure",
"Out of range timing advance is ignored"
};
@@ -7685,9 +7684,9 @@ de_rr_tlli(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offs
static guint16
de_rr_tmsi_ptmsi(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- proto_tree *subtree;
- proto_item *item;
- guint32 curr_offset;
+ proto_tree *subtree;
+ proto_item *item;
+ guint32 curr_offset;
curr_offset = offset;
@@ -7775,8 +7774,8 @@ static guint16
de_rr_ext_meas_result(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
guint32 curr_offset;
- gint bit_offset, i;
- guint8 value;
+ gint bit_offset, i;
+ guint8 value;
curr_offset = offset;
bit_offset = curr_offset << 3;
@@ -7989,7 +7988,7 @@ de_rr_carrier_ind(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
{
proto_tree *subtree;
proto_item *item;
- guint32 curr_offset;
+ guint32 curr_offset;
curr_offset = offset;
@@ -8163,7 +8162,7 @@ dtap_rr_add_ass(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
{
guint32 curr_offset;
guint32 consumed;
- guint curr_len;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -8280,9 +8279,9 @@ dtap_rr_ass_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
static void
dtap_rr_ass_comp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -8300,9 +8299,9 @@ dtap_rr_ass_comp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint3
static void
dtap_rr_ass_fail(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -8320,9 +8319,9 @@ dtap_rr_ass_fail(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint3
static void
dtap_rr_ch_mode_mod(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -8349,9 +8348,9 @@ dtap_rr_ch_mode_mod(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
static void
dtap_rr_ch_mode_mod_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -8372,9 +8371,9 @@ dtap_rr_ch_mode_mod_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
static void
dtap_rr_ch_rel(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -8421,8 +8420,8 @@ dtap_rr_ch_rel(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
static void
dtap_rr_cip_mode_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint curr_len;
+ guint32 curr_offset;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -8441,9 +8440,9 @@ dtap_rr_cip_mode_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gu
void
dtap_rr_cip_mode_cpte(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -8461,9 +8460,9 @@ dtap_rr_cip_mode_cpte(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, g
static void
dtap_rr_mm_cm_change(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -8483,9 +8482,9 @@ dtap_rr_mm_cm_change(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gu
static void
dtap_rr_utran_classmark_change(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -8502,9 +8501,9 @@ dtap_rr_utran_classmark_change(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
static void
dtap_rr_cm_enq(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -8524,7 +8523,7 @@ dtap_rr_conf_change_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
{
guint32 curr_offset;
guint32 consumed;
- guint curr_len;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -8572,7 +8571,7 @@ dtap_rr_conf_change_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
{
guint32 curr_offset;
guint32 consumed;
- guint curr_len;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -8592,7 +8591,7 @@ dtap_rr_freq_redef(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
{
guint32 curr_offset;
guint32 consumed;
- guint curr_len;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -8627,9 +8626,9 @@ dtap_rr_freq_redef(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
static void
dtap_rr_gprs_sus_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -8660,14 +8659,14 @@ dtap_rr_gprs_sus_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gu
void
dtap_rr_ho_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
- /* Mandatory Elemets
+ /* Mandatory Elements
* Cell description 10.5.2.2
*/
ELEM_MAND_V(GSM_A_PDU_TYPE_RR, DE_RR_CELL_DSC, NULL);
@@ -8791,9 +8790,9 @@ dtap_rr_ho_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
static void
dtap_rr_inter_syst_to_utran_ho_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -8810,9 +8809,9 @@ dtap_rr_inter_syst_to_utran_ho_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info
static void
dtap_rr_ho_cpte(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -8833,9 +8832,9 @@ dtap_rr_ho_cpte(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
static void
dtap_rr_ho_fail(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -8853,10 +8852,10 @@ dtap_rr_ho_fail(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
static void
dtap_rr_imm_ass(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
- guint8 oct;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+ guint8 oct;
curr_offset = offset;
curr_len = len;
@@ -8913,9 +8912,9 @@ dtap_rr_imm_ass(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
static void
dtap_rr_imm_ass_ext(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -8952,9 +8951,9 @@ dtap_rr_imm_ass_ext(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
static void
dtap_rr_imm_ass_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -8991,9 +8990,9 @@ dtap_rr_imm_ass_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
static void
dtap_rr_meas_rep(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -9008,9 +9007,9 @@ dtap_rr_meas_rep(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint3
static void
dtap_rr_paging_req_type_1(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -9037,9 +9036,9 @@ dtap_rr_paging_req_type_1(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
static void
dtap_rr_paging_req_type_2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -9069,9 +9068,9 @@ dtap_rr_paging_req_type_2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
static void
dtap_rr_paging_req_type_3(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -9104,12 +9103,12 @@ dtap_rr_paging_req_type_3(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
static void
dtap_rr_paging_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
- guint8 oct;
- proto_tree *subtree;
- proto_item *item;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+ guint8 oct;
+ proto_tree *subtree;
+ proto_item *item;
curr_offset = offset;
curr_len = len;
@@ -9178,7 +9177,7 @@ dtap_rr_partial_rel(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
{
guint32 curr_offset;
guint32 consumed;
- guint curr_len;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -9200,9 +9199,9 @@ dtap_rr_partial_rel(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
static void
dtap_rr_phy_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -9218,9 +9217,9 @@ dtap_rr_phy_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint3
static void
dtap_rr_rr_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -9236,9 +9235,9 @@ dtap_rr_rr_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
static void
dtap_rr_sys_info_1(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -9256,9 +9255,9 @@ dtap_rr_sys_info_1(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
static void
dtap_rr_sys_info_2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -9276,9 +9275,9 @@ dtap_rr_sys_info_2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
static void
dtap_rr_sys_info_2bis(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -9294,9 +9293,9 @@ dtap_rr_sys_info_2bis(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, g
static void
dtap_rr_sys_info_2ter(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -9312,9 +9311,9 @@ dtap_rr_sys_info_2ter(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, g
static void
dtap_rr_sys_info_2quater(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -9328,9 +9327,9 @@ dtap_rr_sys_info_2quater(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
static void
dtap_rr_sys_info_3(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -9356,9 +9355,9 @@ dtap_rr_sys_info_3(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
static void
dtap_rr_sys_info_4(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -9382,9 +9381,9 @@ dtap_rr_sys_info_4(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
static void
dtap_rr_sys_info_5(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -9414,9 +9413,9 @@ dtap_rr_sys_info_5bis(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, g
static void
dtap_rr_sys_info_5ter(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -9430,9 +9429,9 @@ dtap_rr_sys_info_5ter(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, g
static void
dtap_rr_sys_info_6(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -9454,9 +9453,9 @@ dtap_rr_sys_info_6(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
static void
dtap_rr_sys_info_13(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -9470,9 +9469,9 @@ dtap_rr_sys_info_13(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
static void
dtap_rr_ext_meas_order(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -9489,7 +9488,7 @@ dtap_rr_ext_meas_report(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
{
guint32 curr_offset;
guint32 consumed;
- guint curr_len;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -9504,9 +9503,9 @@ dtap_rr_ext_meas_report(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
static void
dtap_rr_app_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
curr_offset = offset;
curr_len = len;
@@ -9537,11 +9536,11 @@ sacch_rr_meas_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
{
proto_tree *subtree = NULL, *subtree2 = NULL;
proto_item *item, *item2;
- guint32 curr_offset;
- gint bit_offset, bit_offset_sav, bit_offset_sav2;
- guint8 value, idx;
- guint8 tvb_len = tvb_length(tvb);
- guint16 bit_len = tvb_len << 3;
+ guint32 curr_offset;
+ gint bit_offset, bit_offset_sav, bit_offset_sav2;
+ guint8 value, idx;
+ guint8 tvb_len = tvb_length(tvb);
+ guint16 bit_len = tvb_len << 3;
curr_offset = offset;
bit_offset = curr_offset << 3;
@@ -9796,8 +9795,8 @@ sacch_rr_eutran_meas_report(tvbuff_t *tvb, proto_tree *tree, guint32 bit_offset,
{
proto_tree *subtree;
proto_item *item;
- gint curr_bit_offset;
- gint8 n_eutran;
+ gint curr_bit_offset;
+ gint8 n_eutran;
curr_bit_offset = bit_offset;
@@ -9889,11 +9888,11 @@ sacch_rr_enh_meas_report(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
{
proto_tree *subtree;
proto_item *item;
- guint32 curr_offset;
- guint bit_offset, bit_offset_sav;
- guint8 tvb_len = tvb_length(tvb);
- guint16 bit_len = tvb_len << 3;
- guint8 idx;
+ guint32 curr_offset;
+ guint bit_offset, bit_offset_sav;
+ guint8 tvb_len = tvb_length(tvb);
+ guint16 bit_len = tvb_len << 3;
+ guint8 idx;
curr_offset = offset;
bit_offset = curr_offset << 3;
@@ -9940,7 +9939,6 @@ sacch_rr_enh_meas_report(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
}
if (gsm_rr_csn_flag(tvb, tree, bit_offset++, "Bitmap Type Reporting", "Present", "Not Present"))
{ /* Bitmap Type Reporting */
- bit_offset_sav = bit_offset;
item = proto_tree_add_text(tree, tvb, bit_offset>>3, -1, "%s", gsm_rr_rest_octets_elem_strings[DE_RR_REST_OCTETS_BITMAP_TYPE_REPORTING].strptr);
subtree = proto_item_add_subtree(item, ett_gsm_rr_rest_octets_elem[DE_RR_REST_OCTETS_BITMAP_TYPE_REPORTING]);
idx = 0;
@@ -10097,7 +10095,7 @@ static void (*dtap_msg_rr_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *p
void get_rr_msg_params(guint8 oct, const gchar **msg_str, int *ett_tree, int *hf_idx, msg_fcn *msg_fcn_p)
{
- gint idx;
+ gint idx;
*msg_str = match_strval_idx((guint32) (oct & DTAP_RR_IEI_MASK), gsm_a_dtap_msg_rr_strings, &idx);
*hf_idx = hf_gsm_a_dtap_msg_rr_type;
@@ -10117,25 +10115,25 @@ static void
dissect_ccch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- static gsm_a_tap_rec_t tap_rec[4];
- static gsm_a_tap_rec_t *tap_p;
- static guint tap_current=0;
-
- void (*msg_fcn_p)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len);
- guint8 oct;
- guint8 pd;
- guint32 offset;
- guint32 len;
- guint32 oct_1, oct_2;
- proto_item *ccch_item = NULL;
- proto_tree *ccch_tree = NULL;
- proto_item *oct_1_item = NULL;
- proto_tree *pd_tree = NULL;
- const gchar *msg_str;
- gint ett_tree;
- gint ti;
- int hf_idx;
- gboolean nsd;
+ static gsm_a_tap_rec_t tap_rec[4];
+ static gsm_a_tap_rec_t *tap_p;
+ static guint tap_current = 0;
+
+ void (*msg_fcn_p)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len);
+ guint8 oct;
+ guint8 pd;
+ guint32 offset;
+ guint32 len;
+ guint32 oct_1, oct_2;
+ proto_item *ccch_item = NULL;
+ proto_tree *ccch_tree = NULL;
+ proto_item *oct_1_item = NULL;
+ proto_tree *pd_tree = NULL;
+ const gchar *msg_str;
+ gint ett_tree;
+ gint ti;
+ int hf_idx;
+ gboolean nsd;
len = tvb_length(tvb);
@@ -10162,7 +10160,7 @@ dissect_ccch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
oct_2 = 0;
/* Skip pseudo hdr here - it is dissected later */
- offset = 1;
+ offset += 1;
/*
* get protocol discriminator
@@ -10171,7 +10169,7 @@ dissect_ccch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if ((((oct_1 & DTAP_TI_MASK) >> 4) & DTAP_TIE_PRES_MASK) == DTAP_TIE_PRES_MASK){
/*
- * eventhough we don't know if a TI should be in the message yet
+ * even though we don't know if a TI should be in the message yet
* we rely on the TI/SKIP indicator to be 0 to avoid taking this
* octet
*/
@@ -10334,7 +10332,7 @@ static void (*sacch_msg_rr_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *
static void
get_rr_short_pd_msg_params(guint8 mess_type, const gchar **msg_str, int *ett_tree, int *hf_idx, msg_fcn *msg_fcn_p)
{
- gint idx;
+ gint idx;
*msg_str = match_strval_idx((guint32) mess_type, gsm_a_rr_short_pd_msg_strings, &idx);
*hf_idx = hf_gsm_a_rr_short_pd_msg_type;
@@ -10352,19 +10350,19 @@ const value_string short_protocol_discriminator_vals[] = {
static void
dissect_sacch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- static gsm_a_tap_rec_t tap_rec[4];
- static gsm_a_tap_rec_t *tap_p;
- static guint tap_current=0;
+ static gsm_a_tap_rec_t tap_rec[4];
+ static gsm_a_tap_rec_t *tap_p;
+ static guint tap_current = 0;
- void (*msg_fcn_p)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len);
- guint8 oct, short_pd, mess_type;
- guint32 offset, bit_offset = 0;
- guint32 len;
- proto_item *sacch_item = NULL;
- proto_tree *sacch_tree = NULL;
- const gchar *msg_str;
- gint ett_tree;
- int hf_idx;
+ void (*msg_fcn_p)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len);
+ guint8 oct, short_pd, mess_type;
+ guint32 offset, bit_offset = 0;
+ guint32 len;
+ proto_item *sacch_item = NULL;
+ proto_tree *sacch_tree = NULL;
+ const gchar *msg_str;
+ gint ett_tree;
+ int hf_idx;
len = tvb_length(tvb);
@@ -10458,8 +10456,8 @@ dissect_sacch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
void
proto_register_gsm_a_rr(void)
{
- guint i;
- guint last_offset;
+ guint i;
+ guint last_offset;
/* Setup list of header fields */
@@ -10472,7 +10470,7 @@ proto_register_gsm_a_rr(void)
},
{ &hf_gsm_a_rr_elem_id,
{ "Element ID", "gsm_a_rr.elem_id",
- FT_UINT8, BASE_DEC, NULL, 0,
+ FT_UINT8, BASE_HEX, NULL, 0,
NULL, HFILL }
},
{ &hf_gsm_a_bcc,
@@ -10507,7 +10505,7 @@ proto_register_gsm_a_rr(void)
},
{ &hf_gsm_a_rr_ba_list_pref_length,
{ "Length of BA List Pref","gsm_a.rr.ba_list_pref_length",
- FT_UINT8, BASE_DEC, NULL, 0xff,
+ FT_UINT8, BASE_DEC, NULL, 0x00,
NULL, HFILL }
},
{ &hf_gsm_a_rr_ba_freq,
@@ -10517,7 +10515,7 @@ proto_register_gsm_a_rr(void)
},
{ &hf_gsm_a_rr_utran_freq_list_length,
{ "Length of UTRAN freq list","gsm_a.rr.utran_freq_length",
- FT_UINT8, BASE_DEC, NULL, 0xff,
+ FT_UINT8, BASE_DEC, NULL, 0x00,
NULL, HFILL }
},
{ &hf_gsm_a_rr_ho_ref_val,
@@ -10557,8 +10555,8 @@ proto_register_gsm_a_rr(void)
},
{ &hf_gsm_a_rr_rxlev_sub_serv_cell,
{ "RXLEV-SUB-SERVING-CELL","gsm_a.rr.rxlev_sub_serv_cell",
- FT_UINT8,BASE_DEC|BASE_EXT_STRING, &gsm_a_rr_rxlev_vals_ext, 0x00,
- NULL, HFILL }
+ FT_UINT8,BASE_DEC|BASE_EXT_STRING, &gsm_a_rr_rxlev_vals_ext, 0x00,
+ NULL, HFILL }
},
{ &hf_gsm_a_rr_rxqual_full_serv_cell,
{ "RXQUAL-FULL-SERVING-CELL","gsm_a.rr.rxqual_full_serv_cell",
@@ -10943,7 +10941,7 @@ proto_register_gsm_a_rr(void)
},
{ &hf_gsm_a_rr_dtx_sacch,
{ "DTX (SACCH)", "gsm_a.rr.dtx_sacch",
- FT_UINT8, BASE_DEC, VALS(gsm_a_rr_dtx_sacch_vals), 0xb0,
+ FT_UINT8, BASE_DEC, VALS(gsm_a_rr_dtx_sacch_vals), 0x00,
"Discontinuous Transmission (DTX-SACCH)", HFILL }
},
{ &hf_gsm_a_rr_radio_link_timeout,
@@ -11433,8 +11431,8 @@ proto_register_gsm_a_rr(void)
},
{ &hf_gsm_a_rr_gprs_ra_colour,
{ "GPRS RA Colour", "gsm_a.rr.gprs_ra_colour",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
},
{ &hf_gsm_a_rr_si13_position,
{ "SI13 Position", "gsm_a.rr.si13_position",
@@ -11798,12 +11796,12 @@ proto_register_gsm_a_rr(void)
},
{ &hf_gsm_a_rr_3g_priority_param_desc_utran_start,
{ "UTRAN Start", "gsm_a.rr.3g_priority.utran_start",
- FT_BOOLEAN, BASE_DEC, TFS(&priority_utran_start), 0x00,
+ FT_BOOLEAN, BASE_NONE, TFS(&priority_utran_start), 0x00,
NULL, HFILL }
},
{ &hf_gsm_a_rr_3g_priority_param_desc_utran_stop,
{ "UTRAN Stop", "gsm_a.rr.3g_priority.utran_stop",
- FT_BOOLEAN, BASE_DEC, TFS(&priority_utran_stop), 0x00,
+ FT_BOOLEAN, BASE_NONE, TFS(&priority_utran_stop), 0x00,
NULL, HFILL }
},
{ &hf_gsm_a_rr_3g_priority_param_desc_default_utran_prio,
@@ -11848,17 +11846,17 @@ proto_register_gsm_a_rr(void)
},
{ &hf_gsm_a_rr_eutran_ccn_active,
{ "E-UTRAN_CCN_ACTIVE", "gsm_a.rr.3g_priority.eutran_ccn_active",
- FT_BOOLEAN, BASE_DEC, TFS(&eutran_ccn_active), 0x00,
+ FT_BOOLEAN, BASE_NONE, TFS(&eutran_ccn_active), 0x00,
NULL, HFILL }
},
{ &hf_gsm_a_rr_eutran_start,
{ "E-UTRAN Start", "gsm_a.rr.3g_priority.eutran_start",
- FT_BOOLEAN, BASE_DEC, TFS(&priority_utran_start), 0x00,
+ FT_BOOLEAN, BASE_NONE, TFS(&priority_utran_start), 0x00,
NULL, HFILL }
},
{ &hf_gsm_a_rr_eutran_stop,
{ "E-UTRAN Stop", "gsm_a.rr.3g_priority.utran_stop",
- FT_BOOLEAN, BASE_DEC, TFS(&priority_utran_stop), 0x00,
+ FT_BOOLEAN, BASE_NONE, TFS(&priority_utran_stop), 0x00,
NULL, HFILL }
},
{ &hf_gsm_a_rr_qsearch_c_eutran_initial,
@@ -12018,7 +12016,7 @@ proto_register_gsm_a_rr(void)
},
{ &hf_gsm_a_rr_eutran_pcid_pattern_sense,
{ "PCID_pattern_sense", "gsm_a.rr.pcid_pattern_sense",
- FT_BOOLEAN, BASE_DEC, TFS(&gsm_a_rr_pcid_pattern_sense), 0x00,
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_rr_pcid_pattern_sense), 0x00,
NULL, HFILL }
},
{ &hf_gsm_a_rr_eutran_frequency_index,
@@ -12038,7 +12036,7 @@ proto_register_gsm_a_rr(void)
},
{ &hf_gsm_a_rr_utran_psc_pattern_sense,
{ "PSC_pattern_sense", "gsm_a.rr.psc_pattern_sense",
- FT_BOOLEAN, BASE_DEC, NULL, 0x00,
+ FT_BOOLEAN, BASE_NONE, NULL, 0x00,
NULL, HFILL }
},
{ &hf_gsm_a_rr_utran_csg_fdd_uarfcn,
@@ -12058,7 +12056,7 @@ proto_register_gsm_a_rr(void)
},
{ &hf_gsm_a_rr_3g_control_param_desc_meas_ctrl_utran,
{ "PCID_pattern_sense", "gsm_a.rr._meas_ctrl_utran",
- FT_BOOLEAN, BASE_DEC, TFS(&measurement_control_utran), 0x00,
+ FT_BOOLEAN, BASE_NONE, TFS(&measurement_control_utran), 0x00,
NULL, HFILL }
},
{ &hf_gsm_a_rr_extended_ra,
@@ -12078,7 +12076,7 @@ proto_register_gsm_a_rr(void)
},
{ &hf_gsm_a_rr_polling,
{ "Polling", "gsm_a.rr.polling",
- FT_BOOLEAN, BASE_DEC, TFS(&gsm_a_polling_vals), 0x00,
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_polling_vals), 0x00,
NULL, HFILL }
},
{ &hf_gsm_a_rr_usf,
@@ -12088,7 +12086,7 @@ proto_register_gsm_a_rr(void)
},
{ &hf_gsm_a_rr_usf_granularity,
{ "USF_granularity", "gsm_a.rr.usf_granularity",
- FT_BOOLEAN, BASE_DEC, TFS(&gsm_a_usf_granularity_vals), 0x00,
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_usf_granularity_vals), 0x00,
NULL, HFILL }
},
{ &hf_gsm_a_rr_p0,
@@ -12098,7 +12096,7 @@ proto_register_gsm_a_rr(void)
},
{ &hf_gsm_a_rr_pr_mode,
{ "pr_mode", "gsm_a.rr.pr_mode",
- FT_BOOLEAN, BASE_DEC, NULL, 0x00,
+ FT_BOOLEAN, BASE_NONE, NULL, 0x00,
NULL, HFILL }
},
{ &hf_gsm_a_rr_egprs_mcs,
@@ -12108,7 +12106,7 @@ proto_register_gsm_a_rr(void)
},
{ &hf_gsm_a_rr_tlli_block_channel_coding,
{ "TLLI_Block_Channel_Coding", "gsm_a.rr.tlli_block_cs",
- FT_BOOLEAN, BASE_DEC, TFS(&gsm_a_tlli_block_channel_coding_vals), 0x00,
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_tlli_block_channel_coding_vals), 0x00,
NULL, HFILL }
},
{ &hf_gsm_a_rr_bep_period2,
@@ -12118,7 +12116,7 @@ proto_register_gsm_a_rr(void)
},
{ &hf_gsm_a_rr_resegment,
{ "Resegment", "gsm_a.rr.resegment",
- FT_BOOLEAN, BASE_DEC, TFS(&gsm_a_resegment_vals), 0x00,
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_resegment_vals), 0x00,
NULL, HFILL }
},
{ &hf_gsm_a_rr_egprs_window_size,
@@ -12173,17 +12171,17 @@ proto_register_gsm_a_rr(void)
},
{ &hf_gsm_a_rr_rlc_mode,
{ "RLC_Mode", "gsm_a.rr.rlc_mode",
- FT_BOOLEAN, BASE_DEC, TFS(&gsm_a_rlc_mode_vals), 0x00,
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_rlc_mode_vals), 0x00,
NULL, HFILL }
},
{ &hf_gsm_a_rr_ta_valid,
{ "TA_Valid", "gsm_a.rr.ta_valid",
- FT_BOOLEAN, BASE_DEC, TFS(&gsm_a_ta_valid_vals), 0x00,
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_a_ta_valid_vals), 0x00,
NULL, HFILL }
},
{ &hf_gsm_a_rr_link_quality_meas_mode,
{ "Link_Quality_Measure_Mode", "gsm_a.rr.link_qual_meas_mode",
- FT_UINT8, BASE_DEC, VALS(&gsm_a_link_quality_meas_mode_vals), 0x00,
+ FT_UINT8, BASE_DEC, VALS(gsm_a_link_quality_meas_mode_vals), 0x00,
NULL, HFILL }
},
{ &hf_gsm_a_rr_emr_bitmap_length,
@@ -12221,22 +12219,22 @@ proto_register_gsm_a_rr(void)
FT_UINT16, BASE_DEC, NULL, 0x00,
NULL, HFILL }
},
- };
+ };
static hf_register_info hf_rr_short_pd[] =
{
{ &hf_gsm_a_rr_short_pd,
- { "Radio Resources Short Protocol Discriminator", "gsm_a.rr_short_pd",
+ { "Radio Resources Short Protocol Discriminator", "gsm_a.rr_short_pd",
FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }
},
{ &hf_gsm_a_rr_short_pd_msg_type,
- { "Radio Resources Short PD Message Type", "gsm_a.rr_short_pd_type",
+ { "Radio Resources Short PD Message Type", "gsm_a.rr_short_pd_type",
FT_UINT8, BASE_HEX, VALS(gsm_a_rr_short_pd_msg_strings), 0x0,
NULL, HFILL }
},
{ &hf_gsm_a_rr_short_l2_header,
- { "Radio Resources Short L2 Header", "gsm_a.rr_short_l2_header",
+ { "Radio Resources Short L2 Header", "gsm_a.rr_short_l2_header",
FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }
}
diff --git a/epan/dissectors/packet-gsm_abis_om2000.c b/epan/dissectors/packet-gsm_abis_om2000.c
index 15df5a32ef..90c53ef672 100644
--- a/epan/dissectors/packet-gsm_abis_om2000.c
+++ b/epan/dissectors/packet-gsm_abis_om2000.c
@@ -499,7 +499,7 @@ static const value_string om2k_la_state_vals[] = {
static const value_string filerel_state_vals[] = {
{ 0x00, "Not known in current state (unknown file)" },
- { 0x01, "alllowed, already loaded" },
+ { 0x01, "allowed, already loaded" },
{ 0x02, "allowed, not loaded" },
{ 0x03, "not allowed" },
{ 0, NULL }
@@ -586,7 +586,7 @@ static gint
dissect_om2k_attr_unkn(tvbuff_t *tvb, gint offset, gint len, gint iei, proto_tree *tree)
{
proto_tree_add_bytes_format(tree, hf_om2k_unknown_val, tvb,
- offset, len, tvb_get_ptr(tvb, offset, len),
+ offset, len, NULL,
"%s: %s",
val_to_str_ext(iei, &om2k_attr_vals_ext, "0x%02x"),
tvb_bytes_to_str(tvb, offset, len));
@@ -684,13 +684,12 @@ dissect_om2k_attrs(tvbuff_t *tvb, gint offset, proto_tree *tree)
offset++, 1, ENC_BIG_ENDIAN);
break;
case 0x0c: /* CCCH Options */
- tmp = tvb_get_guint8(tvb, offset);
proto_tree_add_item(tree, hf_om2k_cr, tvb,
offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_om2k_ipt3, tvb,
offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_uint(tree, hf_om2k_aop, tvb,
- offset, 1, (tmp & 0x3f) >> 2);
+ proto_tree_add_item(tree, hf_om2k_aop, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
offset++;
break;
case 0x0d: /* Calendar Time */
@@ -1111,12 +1110,12 @@ proto_register_abis_om2000(void)
},
{ &hf_om2k_ext_range,
{ "Extended Range", "om2000.ext_range",
- FT_BOOLEAN, 1, NULL, 0,
+ FT_BOOLEAN, 1, NULL, 0, /* XXX: bitmask needed? 'FT_BOOLEAN, 8, NULL, 0x01' ? */
NULL, HFILL }
},
{ &hf_om2k_irc,
{ "Interference Rejection Combining", "om2000.irc",
- FT_BOOLEAN, 1, NULL, 0,
+ FT_BOOLEAN, 1, NULL, 0, /* XXX: bitmask needed? 'FT_BOOLEAN, 8, NULL, 0x01,' ? */
NULL, HFILL }
},
{ &hf_om2k_bs_pa_mfrms,
@@ -1136,17 +1135,17 @@ proto_register_abis_om2000(void)
},
{ &hf_om2k_cr,
{ "CCCH Repeat", "om2000.ccch_repeat",
- FT_BOOLEAN, 1, NULL, 0,
+ FT_BOOLEAN, 1, NULL, 0, /* XXX: bitmask needed? 'FT_BOOLEAN, 8, NULL, 0x01,' ? */
NULL, HFILL }
},
{ &hf_om2k_ipt3,
{ "Inhibit Paging Request Type 3", "om2000.ipt3",
- FT_BOOLEAN, 2, NULL, 0,
+ FT_BOOLEAN, 2, NULL, 0, /* XXX: bitmask needed? 'FT_BOOLEAN, 8, NULL, 0x02,' ? */
NULL, HFILL }
},
{ &hf_om2k_aop,
{ "Age Of Paging", "om2000.aop",
- FT_UINT8, BASE_DEC, NULL, 0,
+ FT_UINT8, BASE_DEC, NULL, 0x3C, /* XXX: Verify bitmask */
NULL, HFILL }
},
{ &hf_om2k_t3105,
@@ -1161,7 +1160,7 @@ proto_register_abis_om2000(void)
},
{ &hf_om2k_cbi,
{ "CBCH Indicator", "om2000.ny1",
- FT_BOOLEAN, 1, NULL, 0,
+ FT_BOOLEAN, 1, NULL, 0, /* XXX: bitmask needed? 'FT_BOOLEAN, 8, NULL, 0x01,' ? */
NULL, HFILL }
},
{ &hf_om2k_tsc,
@@ -1171,7 +1170,7 @@ proto_register_abis_om2000(void)
},
{ &hf_om2k_icm,
{ "Idle Channel Measurement", "om2000.icm",
- FT_BOOLEAN, 1, NULL, 0,
+ FT_BOOLEAN, 1, NULL, 0, /* XXX: bitmask needed? 'FT_BOOLEAN, 8, NULL, 0x01,' ? */
NULL, HFILL }
},
{ &hf_om2k_tta,
@@ -1186,17 +1185,17 @@ proto_register_abis_om2000(void)
},
{ &hf_om2k_lsc_fm,
{ "LSC Dummy Frequency Measurement", "om2000.lsc.fm",
- FT_BOOLEAN, 0x80, NULL, 0,
+ FT_BOOLEAN, 8, NULL, 0x80,
NULL, HFILL }
},
{ &hf_om2k_lsc_lsi,
{ "LSC Idle Channels", "om2000.ls.lsi",
- FT_BOOLEAN, 0x01, NULL, 0,
+ FT_BOOLEAN, 8, NULL, 0x01,
NULL, HFILL }
},
{ &hf_om2k_lsc_lsa,
{ "LSC Active Channels", "om2000.ls.lsa",
- FT_BOOLEAN, 0x02, NULL, 0,
+ FT_BOOLEAN, 8, NULL, 0x02,
NULL, HFILL }
},
{ &hf_om2k_ls_ft,
@@ -1266,12 +1265,12 @@ proto_register_abis_om2000(void)
},
{ &hf_om2k_brr,
{ "BTS Requested Restart", "om2000.brr",
- FT_BOOLEAN, 0x01, NULL, 0,
+ FT_BOOLEAN, 0x01, NULL, 0, /* XXX: bitmask needed? 'FT_BOOLEAN, 8, NULL, 0x??,' ? */
NULL, HFILL }
},
{ &hf_om2k_bfr,
{ "BTS Requested File Relation", "om2000.bfr",
- FT_BOOLEAN, 0x01, NULL, 0,
+ FT_BOOLEAN, 0x01, NULL, 0, /* XXX: bitmask needed? 'FT_BOOLEAN, 8, NULL, 0x??,' ? */
NULL, HFILL }
},
{ &hf_om2k_hwinfo_sig,
@@ -1303,7 +1302,7 @@ proto_register_abis_om2000(void)
},
{ &hf_om2k_filerel_ilr,
{ "Immediate Load Requested", "om2000.filerel.ilr",
- FT_BOOLEAN, 0x08, NULL, 0,
+ FT_BOOLEAN, 8, NULL, 0x08,
NULL, HFILL }
},
{ &hf_om2k_filerel_cur,
diff --git a/epan/dissectors/packet-gsm_abis_oml.c b/epan/dissectors/packet-gsm_abis_oml.c
index 6f54e56bba..c988fc99b8 100644
--- a/epan/dissectors/packet-gsm_abis_oml.c
+++ b/epan/dissectors/packet-gsm_abis_oml.c
@@ -38,8 +38,6 @@
#include "packet-gsm_a_common.h"
-#include <sys/types.h>
-
/* From openbsc/include/openbsc/abis_nm.h */
#define ABIS_OM_MDISC_FOM 0x80
@@ -945,7 +943,7 @@ static const value_string oml_fom_objclass_vals[] = {
{ NM_OC_BASEB_TRANSC, "Baseband Transceiver" },
/* proprietary, vendor specific */
- { NM_OC_BS11_ADJC, "SIE Adjacend Channel" },
+ { NM_OC_BS11_ADJC, "SIE Adjacent Channel" },
{ NM_OC_BS11_HANDOVER, "SIE Handover" },
{ NM_OC_BS11_PWR_CTRL, "SIE Power Control" },
{ NM_OC_BS11_BTSE, "SIE BTSE" },
@@ -1871,9 +1869,6 @@ dissect_abis_oml(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
void
-proto_reg_handoff_abis_oml(void);
-
-void
proto_register_abis_oml(void)
{
static hf_register_info hf[] = {
@@ -2368,7 +2363,7 @@ proto_register_abis_oml(void)
new_register_dissector("gsm_abis_oml", dissect_abis_oml, proto_abis_oml);
- oml_module = prefs_register_protocol(proto_abis_oml, proto_reg_handoff_abis_oml);
+ oml_module = prefs_register_protocol(proto_abis_oml, NULL);
prefs_register_enum_preference(oml_module, "oml_dialect",
"A-bis OML dialect to be used",
"Use ipaccess nanoBTS specific definitions for OML",
@@ -2380,19 +2375,12 @@ proto_register_abis_oml(void)
void
proto_reg_handoff_abis_oml(void)
{
- static gboolean initialized = FALSE;
+ dissector_handle_t abis_oml_handle;
- if (!initialized) {
- dissector_handle_t abis_oml_handle;
-
- abis_oml_handle = new_create_dissector_handle(dissect_abis_oml,
- proto_abis_oml);
- dissector_add_uint("lapd.gsm.sapi", LAPD_GSM_SAPI_OM_PROC,
- abis_oml_handle);
-
- } else {
- /* preferences have been changed */
- }
+ abis_oml_handle = new_create_dissector_handle(dissect_abis_oml,
+ proto_abis_oml);
+ dissector_add_uint("lapd.gsm.sapi", LAPD_GSM_SAPI_OM_PROC,
+ abis_oml_handle);
sub_om2000 = find_dissector("gsm_abis_om2000");
}
diff --git a/epan/dissectors/packet-gsm_bsslap.c b/epan/dissectors/packet-gsm_bsslap.c
index b4323e0677..9e62c01761 100644
--- a/epan/dissectors/packet-gsm_bsslap.c
+++ b/epan/dissectors/packet-gsm_bsslap.c
@@ -29,8 +29,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
@@ -875,7 +873,7 @@ proto_register_gsm_bsslap(void)
},
{ &hf_gsm_a_bsslap_elem_id,
{ "Element ID", "gsm_bsslap.elem_id",
- FT_UINT8, BASE_DEC, NULL, 0,
+ FT_UINT8, BASE_HEX, NULL, 0,
NULL, HFILL }
},
{ &hf_gsm_bsslap_ta,
diff --git a/epan/dissectors/packet-gsm_bssmap_le.c b/epan/dissectors/packet-gsm_bssmap_le.c
index f0bc5f92e6..ebe209d41c 100644
--- a/epan/dissectors/packet-gsm_bssmap_le.c
+++ b/epan/dissectors/packet-gsm_bssmap_le.c
@@ -30,7 +30,7 @@
# include "config.h"
#endif
-#include <stdlib.h>
+#include <glib.h>
#include <epan/packet.h>
#include <epan/tap.h>
@@ -318,16 +318,16 @@ de_bmaple_decihp_keys(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, g
/* Extract the Ciphering Key Flag and add to protocol tree */
proto_tree_add_bits_item(tree, hf_gsm_bssmap_le_ciphering_key_flag, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
- offset++;
+ /*offset++;*/
/* Extract the Current Deciphering Key Value and add to protocol tree */
proto_tree_add_bits_item(tree, hf_gsm_bssmap_le_current_deciphering_key_value, tvb, bit_offset, 56, ENC_NA);
bit_offset += 56;
- offset += 7;
+ /*offset += 7;*/
/* Extract the Next Deciphering Key Value and add to protocol tree */
proto_tree_add_bits_item(tree, hf_gsm_bssmap_le_next_deciphering_key_value, tvb, bit_offset, 56, ENC_NA);
- offset += 7;
+ /*offset += 7;*/
return(len);
}
@@ -481,7 +481,7 @@ de_bmaple_client(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint3
/* Extract the client subtype and add to protocol tree */
proto_tree_add_bits_item(tree, hf_gsm_bssmap_le_client_subtype, tvb, bitCount, 4, ENC_BIG_ENDIAN);
- bitCount = bitCount + 4;
+ /*bitCount = bitCount + 4;*/
curr_offset++;
return(curr_offset - offset);
@@ -543,7 +543,7 @@ de_bmaple_lcs_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
}
proto_tree_add_bits_item(tree, hf_gsm_bssmap_le_response_time_category, tvb, bitCount, 2, ENC_BIG_ENDIAN);
- bitCount = bitCount + 2;
+ /*bitCount = bitCount + 2;*/
return(len);
}
@@ -1024,7 +1024,7 @@ proto_register_gsm_bssmap_le(void)
},
{ &hf_gsm_bssmap_le_elem_id,
{ "Element ID", "bssmap_le.elem_id",
- FT_UINT8, BASE_DEC, NULL, 0,
+ FT_UINT8, BASE_HEX, NULL, 0,
NULL, HFILL }
},
{ &hf_gsm_bssmap_le_apdu_protocol_id,
diff --git a/epan/dissectors/packet-gsm_cbch.c b/epan/dissectors/packet-gsm_cbch.c
index 26c47df9d4..370b331330 100644
--- a/epan/dissectors/packet-gsm_cbch.c
+++ b/epan/dissectors/packet-gsm_cbch.c
@@ -25,13 +25,9 @@
*/
#ifdef HAVE_CONFIG_H
- #include "config.h"
+#include "config.h"
#endif
-#include <stdlib.h>
-
-#include <string.h>
-
#include <epan/packet.h>
#include <epan/reassemble.h>
#include "packet-cell_broadcast.h"
@@ -39,27 +35,27 @@
#define CBCH_FRAGMENT_SIZE 22
const value_string block_type_lpd_strings[] = {
- { 0x00, "NOT Cell Broadcast"},
- { 0x01, "Cell Broadcast"},
- { 0x02, "NOT Cell Broadcast"},
- { 0x03, "NOT Cell Broadcast"},
- { 0, NULL}
+ { 0x00, "NOT Cell Broadcast"},
+ { 0x01, "Cell Broadcast"},
+ { 0x02, "NOT Cell Broadcast"},
+ { 0x03, "NOT Cell Broadcast"},
+ { 0, NULL}
};
const value_string block_type_seq_num_values[] = {
- { 0x00, "First Block"},
- { 0x01, "Second Block"},
- { 0x02, "Third Block"},
- { 0x03, "Fourth Block"},
- { 0x08, "First Schedule Block"},
- { 0xFF, "Null message"},
- { 0, NULL}
+ { 0x00, "First Block"},
+ { 0x01, "Second Block"},
+ { 0x02, "Third Block"},
+ { 0x03, "Fourth Block"},
+ { 0x08, "First Schedule Block"},
+ { 0xFF, "Null message"},
+ { 0, NULL}
};
const value_string sched_type_values[] = {
- { 0x00, "messages formatted as specified in subclause 3.5 of 3GPP 44.012"},
- { 0xFF, "Unknown schedule message format"},
- { 0, NULL}
+ { 0x00, "messages formatted as specified in subclause 3.5 of 3GPP 44.012"},
+ { 0xFF, "Unknown schedule message format"},
+ { 0, NULL}
};
/* Initialize the protocol and registered fields */
@@ -67,303 +63,306 @@ static int proto_cbch = -1;
static int hf_gsm_cbch_spare_bit = -1;
static int hf_gsm_cbch_lpd = -1;
-static int hf_gsm_cbch_lb = -1;
-static int hf_gsm_cbch_seq_num = -1;
-static int hf_gsm_cbch_sched_type = -1;
-static int hf_gsm_cbch_sched_begin_slot = -1;
-static int hf_gsm_cbch_sched_spare = -1;
-static int hf_gsm_cbch_sched_end_slot = -1;
+static int hf_gsm_cbch_lb = -1;
+static int hf_gsm_cbch_seq_num = -1;
+static int hf_gsm_cbch_sched_type = -1;
+static int hf_gsm_cbch_sched_begin_slot = -1;
+static int hf_gsm_cbch_sched_spare = -1;
+static int hf_gsm_cbch_sched_end_slot = -1;
static int hf_gsm_cbch_sched_msg_id = -1;
/* These fields are used when reassembling cbch fragments
-*/
-static int hf_cbch_fragments = -1;
-static int hf_cbch_fragment = -1;
-static int hf_cbch_fragment_overlap = -1;
+ */
+static int hf_cbch_fragments = -1;
+static int hf_cbch_fragment = -1;
+static int hf_cbch_fragment_overlap = -1;
static int hf_cbch_fragment_overlap_conflict = -1;
-static int hf_cbch_fragment_multiple_tails = -1;
-static int hf_cbch_fragment_too_long_fragment = -1;
-static int hf_cbch_fragment_error = -1;
-static int hf_cbch_fragment_count = -1;
-static int hf_cbch_reassembled_in = -1;
-static int hf_cbch_reassembled_length = -1;
+static int hf_cbch_fragment_multiple_tails = -1;
+static int hf_cbch_fragment_too_long_fragment = -1;
+static int hf_cbch_fragment_error = -1;
+static int hf_cbch_fragment_count = -1;
+static int hf_cbch_reassembled_in = -1;
+static int hf_cbch_reassembled_length = -1;
/* Initialize the subtree pointers */
static gint ett_cbch_msg = -1;
static gint ett_schedule_msg = -1;
static gint ett_schedule_new_msg = -1;
-static gint ett_cbch_fragment = -1;
-static gint ett_cbch_fragments = -1;
+static gint ett_cbch_fragment = -1;
+static gint ett_cbch_fragments = -1;
static dissector_handle_t data_handle;
static dissector_handle_t cbs_handle;
/* reassembly of CHCH blocks */
-static GHashTable *fragment_block_table = NULL;
+static GHashTable *fragment_block_table = NULL;
static GHashTable *reassembled_message_table = NULL;
/* Structure needed for the fragmentation routines in reassemble.c
-*/
+ */
static const fragment_items cbch_frag_items = {
- &ett_cbch_fragment,
- &ett_cbch_fragments,
- &hf_cbch_fragments,
- &hf_cbch_fragment,
- &hf_cbch_fragment_overlap,
- &hf_cbch_fragment_overlap_conflict,
- &hf_cbch_fragment_multiple_tails,
- &hf_cbch_fragment_too_long_fragment,
- &hf_cbch_fragment_error,
- &hf_cbch_fragment_count,
- &hf_cbch_reassembled_in,
- &hf_cbch_reassembled_length,
- "blocks"
+ &ett_cbch_fragment,
+ &ett_cbch_fragments,
+ &hf_cbch_fragments,
+ &hf_cbch_fragment,
+ &hf_cbch_fragment_overlap,
+ &hf_cbch_fragment_overlap_conflict,
+ &hf_cbch_fragment_multiple_tails,
+ &hf_cbch_fragment_too_long_fragment,
+ &hf_cbch_fragment_error,
+ &hf_cbch_fragment_count,
+ &hf_cbch_reassembled_in,
+ &hf_cbch_reassembled_length,
+ "blocks"
};
-static void cbch_defragment_init(void)
+static void
+cbch_defragment_init(void)
{
- fragment_table_init(&fragment_block_table);
- reassembled_table_init(&reassembled_message_table);
+ fragment_table_init(&fragment_block_table);
+ reassembled_table_init(&reassembled_message_table);
}
-static void dissect_schedule_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *top_tree)
+static void
+dissect_schedule_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *top_tree)
{
- guint8 octet1, i, j, k=0, len, sched_begin, sched_end, new_slots[48] , offset = 0;
- gboolean valid_message = TRUE;
- guint16 other_slots[48];
- proto_item *item = NULL, *schedule_item = NULL;
- proto_tree *sched_tree = NULL, *sched_subtree = NULL;
-
- len = tvb_length(tvb);
-
- col_append_str(pinfo->cinfo, COL_INFO, " CBCH Schedule Message ");
-
- schedule_item = proto_tree_add_protocol_format(top_tree, proto_cbch, tvb, 0, len,
- "GSM CBCH Schedule Message");
-
- sched_tree = proto_item_add_subtree(schedule_item, ett_schedule_msg);
-
- proto_tree_add_item(sched_tree, hf_gsm_cbch_sched_type, tvb, offset, 1, ENC_BIG_ENDIAN);
- octet1 = tvb_get_guint8(tvb, offset);
- if (0 == (octet1 & 0xC0))
- {
- sched_begin = octet1 & 0x3F;
- proto_tree_add_item(sched_tree, hf_gsm_cbch_sched_begin_slot, tvb, offset++, 1, ENC_BIG_ENDIAN);
- if (1 == sched_begin)
- {
- proto_tree_add_text(sched_tree, tvb, offset - 1, 1, "(apparently) Scheduled Scheduling Message");
- }
- else if ((2 <= sched_begin) && (48 >= sched_begin))
- {
- proto_tree_add_text(sched_tree, tvb, offset - 1, 1, "(apparently) Unscheduled Scheduling Message");
- }
- else
- {
- proto_tree_add_text(sched_tree, tvb, offset - 1, 1, "Begin Slot Number out of range: ignoring message");
- valid_message = FALSE;
- }
- proto_tree_add_item(sched_tree, hf_gsm_cbch_sched_spare, tvb, offset, 1, ENC_BIG_ENDIAN);
- sched_end = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(sched_tree, hf_gsm_cbch_sched_end_slot, tvb, offset++, 1, ENC_BIG_ENDIAN);
- if (sched_end < sched_begin)
- {
- proto_tree_add_text(sched_tree, tvb, offset - 1, 1, "End Slot Number less than Begin Slot Number: ignoring message");
- valid_message = FALSE;
- }
-
- if (valid_message)
- {
- /* build an array of new messages */
- memset(&new_slots, 0xFF, sizeof(new_slots));
- memset(&other_slots, 0xFF, sizeof(other_slots));
-
- /* iterate over the octets */
- for (i=0; i<6; i++)
- {
- octet1 = tvb_get_guint8(tvb, offset++);
-
- /* iterate over the bits */
- for (j=0; j<8; j++)
- {
- if (octet1 & (0x80>>j))
- {
- new_slots[k++] = (i<<3) + j + 1;
- }
- }
- }
- /* print the array of new messages */
- item = proto_tree_add_text(sched_tree, tvb, offset-6, 6, "This schedule contains %d slots with new messages", k);
- sched_subtree = proto_item_add_subtree(item, ett_schedule_new_msg);
- for (i=0; i<k; i++)
- {
- DISSECTOR_ASSERT(new_slots[i] < 48);
- octet1 = tvb_get_guint8(tvb, offset);
- if ((octet1 & 0x80) == 0x80)
- {
- /* MDT 1 */
- guint8 octet2;
- guint16 msg_id;
-
- octet2 = tvb_get_guint8(tvb, offset + 1);
- msg_id = ((octet1 &0x7F) << 8) + octet2;
- proto_tree_add_text(sched_subtree, tvb, offset, 2,
- "Slot: %d, Message ID: %d, First transmission of an SMSCB within the Schedule Period",
- new_slots[i], msg_id);
- offset +=2;
- other_slots[new_slots[i] - 1] = msg_id;
- }
- else if ((octet1 & 0xC0) == 0)
- {
- /* MDT 00 */
- if (octet1 < new_slots[i])
- {
- proto_tree_add_text(sched_subtree, tvb, offset++, 1,
- "Slot: %d, Message ID: %d, Repeat of Slot %d",
- new_slots[i], other_slots[octet1 - 1], octet1);
- other_slots[new_slots[i] - 1] = other_slots[octet1 - 1];
- }
- else
- {
- proto_tree_add_text(sched_subtree, tvb, offset++, 1,
- "Slot: %d, Apparent forward reference to slot %d",
- new_slots[i], octet1);
- }
- }
- else if ((octet1 == 0x40))
+ guint8 octet1, i, j, k = 0;
+ guint8 len, sched_begin, sched_end, new_slots[48];
+ guint8 offset = 0;
+ gboolean valid_message = TRUE;
+ guint16 other_slots[48];
+ proto_item *item = NULL, *schedule_item = NULL;
+ proto_tree *sched_tree = NULL, *sched_subtree = NULL;
+
+ len = tvb_length(tvb);
+
+ col_append_str(pinfo->cinfo, COL_INFO, " CBCH Schedule Message ");
+
+ schedule_item = proto_tree_add_protocol_format(top_tree, proto_cbch, tvb, 0, len,
+ "GSM CBCH Schedule Message");
+
+ sched_tree = proto_item_add_subtree(schedule_item, ett_schedule_msg);
+
+ proto_tree_add_item(sched_tree, hf_gsm_cbch_sched_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ octet1 = tvb_get_guint8(tvb, offset);
+ if (0 == (octet1 & 0xC0))
+ {
+ sched_begin = octet1 & 0x3F;
+ proto_tree_add_item(sched_tree, hf_gsm_cbch_sched_begin_slot, tvb, offset++, 1, ENC_BIG_ENDIAN);
+ if (1 == sched_begin)
+ {
+ proto_tree_add_text(sched_tree, tvb, offset - 1, 1, "(apparently) Scheduled Scheduling Message");
+ }
+ else if ((2 <= sched_begin) && (48 >= sched_begin))
+ {
+ proto_tree_add_text(sched_tree, tvb, offset - 1, 1, "(apparently) Unscheduled Scheduling Message");
+ }
+ else
+ {
+ proto_tree_add_text(sched_tree, tvb, offset - 1, 1, "Begin Slot Number out of range: ignoring message");
+ valid_message = FALSE;
+ }
+ proto_tree_add_item(sched_tree, hf_gsm_cbch_sched_spare, tvb, offset, 1, ENC_BIG_ENDIAN);
+ sched_end = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(sched_tree, hf_gsm_cbch_sched_end_slot, tvb, offset++, 1, ENC_BIG_ENDIAN);
+ if (sched_end < sched_begin)
+ {
+ proto_tree_add_text(sched_tree, tvb, offset - 1, 1, "End Slot Number less than Begin Slot Number: ignoring message");
+ valid_message = FALSE;
+ }
+
+ if (valid_message)
+ {
+ /* build an array of new messages */
+ memset(&new_slots, 0xFF, sizeof(new_slots));
+ memset(&other_slots, 0xFF, sizeof(other_slots));
+
+ /* iterate over the octets */
+ for (i=0; i<6; i++)
{
- /* MDT 010000000 */
- proto_tree_add_text(sched_subtree, tvb, offset++, 1, "Slot: %d Free Message Slot, optional reading", new_slots[k]);
- other_slots[new_slots[i] - 1] = 0xFFFE;
+ octet1 = tvb_get_guint8(tvb, offset++);
+
+ /* iterate over the bits */
+ for (j=0; j<8; j++)
+ {
+ if (octet1 & (0x80>>j))
+ {
+ new_slots[k++] = (i<<3) + j + 1;
+ }
+ }
}
- else if ((octet1 == 0x41))
+ /* print the array of new messages */
+ item = proto_tree_add_text(sched_tree, tvb, offset-6, 6, "This schedule contains %d slots with new messages", k);
+ sched_subtree = proto_item_add_subtree(item, ett_schedule_new_msg);
+ for (i=0; i<k; i++)
{
- /* MDT 010000001 */
- proto_tree_add_text(sched_subtree, tvb, offset++, 1, "Slot: %d Free Message Slot, reading advised", new_slots[k]);
- other_slots[new_slots[i] - 1] = 0xFFFE;
+ DISSECTOR_ASSERT(new_slots[i] < 48);
+ octet1 = tvb_get_guint8(tvb, offset);
+ if ((octet1 & 0x80) == 0x80)
+ {
+ /* MDT 1 */
+ guint8 octet2;
+ guint16 msg_id;
+
+ octet2 = tvb_get_guint8(tvb, offset + 1);
+ msg_id = ((octet1 &0x7F) << 8) + octet2;
+ proto_tree_add_text(sched_subtree, tvb, offset, 2,
+ "Slot: %d, Message ID: %d, First transmission of an SMSCB within the Schedule Period",
+ new_slots[i], msg_id);
+ offset +=2;
+ other_slots[new_slots[i] - 1] = msg_id;
+ }
+ else if ((octet1 & 0xC0) == 0)
+ {
+ /* MDT 00 */
+ if (octet1 < new_slots[i])
+ {
+ proto_tree_add_text(sched_subtree, tvb, offset++, 1,
+ "Slot: %d, Message ID: %d, Repeat of Slot %d",
+ new_slots[i], other_slots[octet1 - 1], octet1);
+ other_slots[new_slots[i] - 1] = other_slots[octet1 - 1];
+ }
+ else
+ {
+ proto_tree_add_text(sched_subtree, tvb, offset++, 1,
+ "Slot: %d, Apparent forward reference to slot %d",
+ new_slots[i], octet1);
+ }
+ }
+ else if (octet1 == 0x40)
+ {
+ /* MDT 010000000 */
+ proto_tree_add_text(sched_subtree, tvb, offset++, 1, "Slot: %d Free Message Slot, optional reading", new_slots[k]);
+ other_slots[new_slots[i] - 1] = 0xFFFE;
+ }
+ else if (octet1 == 0x41)
+ {
+ /* MDT 010000001 */
+ proto_tree_add_text(sched_subtree, tvb, offset++, 1, "Slot: %d Free Message Slot, reading advised", new_slots[k]);
+ other_slots[new_slots[i] - 1] = 0xFFFE;
+ }
+ else
+ {
+ /* reserved MDT */
+ proto_tree_add_text(sched_subtree, tvb, offset, 1, "Slot: %d reserved MDT: %x", new_slots[k], octet1);
+ other_slots[new_slots[i] - 1] = 0xFFFE;
+ }
}
- else
- {
- /* reserved MDT */
- proto_tree_add_text(sched_subtree, tvb, offset, 1, "Slot: %d reseved MDT: %x", new_slots[k], octet1);
- other_slots[new_slots[i] - 1] = 0xFFFE;
- }
- }
- proto_item_set_end(item, tvb, offset);
-
- /* print schedule of other messages */
- item = proto_tree_add_text(sched_tree, tvb, offset, 0, "Other message slots in this schedule");
- sched_subtree = proto_item_add_subtree(item, ett_schedule_new_msg);
- for (k=0; offset<len; j++)
- {
- while ((other_slots[k]!=0xFFFF) && (k<sched_end))
- {
- k++;
- }
- if (k >= sched_end)
- break;
+ proto_item_set_end(item, tvb, offset);
- octet1 = tvb_get_guint8(tvb, offset);
- if ((octet1 & 0x80) == 0x80)
+ /* print schedule of other messages */
+ item = proto_tree_add_text(sched_tree, tvb, offset, 0, "Other message slots in this schedule");
+ sched_subtree = proto_item_add_subtree(item, ett_schedule_new_msg);
+ for (k=0; offset<len; j++)
{
- if ((offset+1)<len)
- {
- /* MDT 1 */
- guint8 octet2;
- guint16 msg_id;
-
- octet2 = tvb_get_guint8(tvb, offset + 1);
- msg_id = ((octet1 &0x7F) << 8) + octet2;
- other_slots[k] = msg_id;
- proto_tree_add_text(sched_subtree, tvb, offset, 2,
- "Slot: %d, Message: %d, First transmission of an SMSCB within the Schedule Period",
- ++k, msg_id);
- offset +=2;
- }
+ while ((other_slots[k]!=0xFFFF) && (k<sched_end))
+ {
+ k++;
+ }
+ if (k >= sched_end)
+ break;
+
+ octet1 = tvb_get_guint8(tvb, offset);
+ if ((octet1 & 0x80) == 0x80)
+ {
+ if ((offset+1)<len)
+ {
+ /* MDT 1 */
+ guint8 octet2;
+ guint16 msg_id;
+
+ octet2 = tvb_get_guint8(tvb, offset + 1);
+ msg_id = ((octet1 &0x7F) << 8) + octet2;
+ other_slots[k] = msg_id;
+ proto_tree_add_text(sched_subtree, tvb, offset, 2,
+ "Slot: %d, Message: %d, First transmission of an SMSCB within the Schedule Period",
+ ++k, msg_id);
+ offset +=2;
+ }
+ }
+ else if ((octet1 & 0xC0) == 0)
+ {
+ /* MDT 00 */
+ if (octet1 < k)
+ {
+ other_slots[k] = other_slots[octet1 - 1];
+ proto_tree_add_text(sched_subtree, tvb, offset++, 1,
+ "Slot: %d, Message ID: %d, Repeat of Slot %d",
+ ++k, other_slots[octet1 - 1], octet1);
+ }
+ else
+ {
+ proto_tree_add_text(sched_subtree, tvb, offset++, 1,
+ "Slot: %d, Apparent forward reference to slot %d",
+ ++k, octet1);
+ }
+ }
+ else if (octet1 == 0x40)
+ {
+ /* MDT 010000000 */
+ proto_tree_add_text(sched_subtree, tvb, offset++, 1, "Slot: %d Free Message Slot, optional reading", ++k);
+ }
+ else if (octet1 == 0x41)
+ {
+ /* MDT 010000001 */
+ proto_tree_add_text(sched_subtree, tvb, offset++, 1, "Slot: %d Free Message Slot, reading advised", ++k);
+ }
+ else
+ {
+ /* reserved MDT */
+ proto_tree_add_text(sched_subtree, tvb, offset, 1, "Slot: %d reserved MDT: %x", ++k, octet1);
+ }
}
- else if ((octet1 & 0xC0) == 0)
- {
- /* MDT 00 */
- if (octet1 < k)
- {
- other_slots[k] = other_slots[octet1 - 1];
- proto_tree_add_text(sched_subtree, tvb, offset++, 1,
- "Slot: %d, Message ID: %d, Repeat of Slot %d",
- ++k, other_slots[octet1 - 1], octet1);
- }
- else
- {
- proto_tree_add_text(sched_subtree, tvb, offset++, 1,
- "Slot: %d, Apparent forward reference to slot %d",
- ++k, octet1);
- }
- }
- else if ((octet1 == 0x40))
- {
- /* MDT 010000000 */
- proto_tree_add_text(sched_subtree, tvb, offset++, 1, "Slot: %d Free Message Slot, optional reading", ++k);
- }
- else if ((octet1 == 0x41))
- {
- /* MDT 010000001 */
- proto_tree_add_text(sched_subtree, tvb, offset++, 1, "Slot: %d Free Message Slot, reading advised", ++k);
- }
- else
- {
- /* reserved MDT */
- proto_tree_add_text(sched_subtree, tvb, offset, 1, "Slot: %d reserved MDT: %x", ++k, octet1);
- }
- }
- proto_item_set_end(item, tvb, offset);
- proto_tree_add_text(sched_tree, tvb, offset, -1, "Padding");
- }
- }
+ proto_item_set_end(item, tvb, offset);
+ proto_tree_add_text(sched_tree, tvb, offset, -1, "Padding");
+ }
+ }
}
static void
dissect_cbch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- fragment_data * frag_data = NULL;
- guint8 octet, lb, lpd, seq_num;
- guint32 offset;
- guint32 len;
- proto_item *cbch_item = NULL;
- proto_tree *cbch_tree = NULL;
- tvbuff_t *reass_tvb = NULL, *msg_tvb = NULL;
-
- len = tvb_length(tvb);
- offset = 0;
- octet = tvb_get_guint8(tvb, offset);
-
- /*
- * create the protocol tree
- */
- cbch_item = proto_tree_add_protocol_format(tree, proto_cbch, tvb, 0, len,
- "GSM CBCH - Block (0x%02x)", octet&3);
-
- col_append_str(pinfo->cinfo, COL_PROTOCOL, " CBCH");
-
- cbch_tree = proto_item_add_subtree(cbch_item, ett_cbch_msg);
-
- proto_tree_add_text(cbch_tree, tvb, offset, 1,
- "CBCH Block");
-
- proto_tree_add_uint(cbch_tree, hf_gsm_cbch_spare_bit, tvb, offset, 1, octet);
- proto_tree_add_uint(cbch_tree, hf_gsm_cbch_lpd, tvb, offset, 1, octet);
- proto_tree_add_uint(cbch_tree, hf_gsm_cbch_lb, tvb, offset, 1, octet);
- proto_tree_add_uint(cbch_tree, hf_gsm_cbch_seq_num, tvb, offset, 1, octet);
- seq_num = octet & 0x0F;
- lpd = (octet & 0x60) >> 5;
- lb = (octet & 0x10) >> 4;
-
- if (lpd == 1)
- {
- switch (seq_num)
- {
- case 0x00:
- case 0x08:
+ fragment_data *frag_data = NULL;
+ guint8 octet, lb, lpd, seq_num;
+ guint32 offset;
+ guint32 len;
+ proto_item *cbch_item = NULL;
+ proto_tree *cbch_tree = NULL;
+ tvbuff_t *reass_tvb = NULL, *msg_tvb = NULL;
+
+ len = tvb_length(tvb);
+ offset = 0;
+ octet = tvb_get_guint8(tvb, offset);
+
+ /*
+ * create the protocol tree
+ */
+ cbch_item = proto_tree_add_protocol_format(tree, proto_cbch, tvb, 0, len,
+ "GSM CBCH - Block (0x%02x)", octet&3);
+
+ col_append_str(pinfo->cinfo, COL_PROTOCOL, " CBCH");
+
+ cbch_tree = proto_item_add_subtree(cbch_item, ett_cbch_msg);
+
+ proto_tree_add_text(cbch_tree, tvb, offset, 1, "CBCH Block");
+
+ proto_tree_add_uint(cbch_tree, hf_gsm_cbch_spare_bit, tvb, offset, 1, octet);
+ proto_tree_add_uint(cbch_tree, hf_gsm_cbch_lpd, tvb, offset, 1, octet);
+ proto_tree_add_uint(cbch_tree, hf_gsm_cbch_lb, tvb, offset, 1, octet);
+ proto_tree_add_uint(cbch_tree, hf_gsm_cbch_seq_num, tvb, offset, 1, octet);
+ seq_num = octet & 0x0F;
+ lpd = (octet & 0x60) >> 5;
+ lb = (octet & 0x10) >> 4;
+
+ if (lpd == 1)
+ {
+ switch (seq_num)
+ {
+ case 0x00:
+ case 0x08:
pinfo->fragmented = TRUE;
/* we should have a unique ID for the reassembled page, but we don't really have anything from the protocol...
- The GSM frame number div 4 might be used for this, but it has not been passed to this layer and does not
+ The GSM frame number div 4 might be used for this, but it has not been passed to this layer and does not
exist at all if the message is being passed over the RSL interface.
So we just use 0... */
@@ -378,9 +377,9 @@ dissect_cbch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
frag_data, &cbch_frag_items, NULL, cbch_tree);
break;
- case 0x01:
- case 0x02:
- case 0x03:
+ case 0x01:
+ case 0x02:
+ case 0x03:
pinfo->fragmented = TRUE;
offset++; /* step to beginning of payload */
frag_data = fragment_add_seq_check(tvb, offset, pinfo, 0,
@@ -390,196 +389,194 @@ dissect_cbch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
frag_data, &cbch_frag_items, NULL, cbch_tree);
break;
- case 0x0F:
+ case 0x0F:
proto_tree_add_text(cbch_tree, tvb, offset, 1, "NULL message");
call_dissector(data_handle, tvb, pinfo, cbch_tree);
break;
- default:
+ default:
proto_tree_add_text(cbch_tree, tvb, offset, 1, "reserved Sequence Number");
call_dissector(data_handle, tvb, pinfo, cbch_tree);
break;
- }
- if (reass_tvb)
- {
- /* Reassembled */
-
- /* the tvb contains the reassmbled message prepended with the sequence number octet from the first block
- We use this to determine whether this is a normal message or a scheduling message */
- offset = 0;
-
- octet = tvb_get_guint8(reass_tvb, offset++);
- msg_tvb = tvb_new_subset_remaining(reass_tvb, offset);
-
- if (octet & 0x08)
- {
- dissect_schedule_message(msg_tvb, pinfo, tree);
- }
- else
- {
- call_dissector(cbs_handle, msg_tvb, pinfo, tree);
- }
- }
- }
- else
- {
- proto_tree_add_text(cbch_tree, tvb, offset, 1, "invalid Link Protocol Discriminator");
- call_dissector(data_handle, tvb, pinfo, cbch_tree);
- }
+ }
+ if (reass_tvb)
+ {
+ /* Reassembled */
+
+ /* the tvb contains the reassmbled message prepended with the sequence number octet from the first block
+ We use this to determine whether this is a normal message or a scheduling message */
+ offset = 0;
+
+ octet = tvb_get_guint8(reass_tvb, offset++);
+ msg_tvb = tvb_new_subset_remaining(reass_tvb, offset);
+
+ if (octet & 0x08)
+ {
+ dissect_schedule_message(msg_tvb, pinfo, tree);
+ }
+ else
+ {
+ call_dissector(cbs_handle, msg_tvb, pinfo, tree);
+ }
+ }
+ }
+ else
+ {
+ proto_tree_add_text(cbch_tree, tvb, offset, 1, "invalid Link Protocol Discriminator");
+ call_dissector(data_handle, tvb, pinfo, cbch_tree);
+ }
}
/* Register the protocol with Wireshark */
void
proto_register_gsm_cbch(void)
{
- /* Setup list of header fields */
- static hf_register_info hf_smscb[] =
- {
- { &hf_gsm_cbch_spare_bit,
- { "GSM CBCH spare bit", "gsm_cbch_block_type.spare",
- FT_UINT8, BASE_HEX, NULL, 0x80,
- NULL, HFILL}
- },
- { &hf_gsm_cbch_lpd,
- { "GSM CBCH Link Protocol Discriminator", "gsm_cbch_block_type.lpd",
- FT_UINT8, BASE_DEC, VALS(block_type_lpd_strings), 0x60,
- NULL, HFILL}
- },
- { &hf_gsm_cbch_lb,
- { "GSM CBCH Last Block", "gsm_cbch_block_type.lb",
- FT_UINT8, BASE_DEC, NULL, 0x10,
- "Last Block", HFILL}
- },
- { &hf_gsm_cbch_seq_num,
- { "GSM CBCH Sequence Number", "gsm_cbch_block_type.seq_num",
- FT_UINT8, BASE_DEC, VALS(block_type_seq_num_values), 0x0F,
- NULL, HFILL}
- },
- { &hf_gsm_cbch_sched_type,
- { "GSM CBCH Schedule Type", "gsm_cbch.sched_type",
- FT_UINT8, BASE_DEC, VALS(sched_type_values), 0xC0,
- NULL, HFILL}
- },
- { &hf_gsm_cbch_sched_begin_slot,
- { "GSM CBCH Schedule Begin slot", "gsm_cbch.schedule_begin",
- FT_UINT8, BASE_DEC, NULL, 0x3F,
- NULL, HFILL}
- },
- { &hf_gsm_cbch_sched_spare,
- { "GSM CBCH Schedule Spare Bits", "gsm_cbch.sched_spare",
- FT_UINT8, BASE_DEC, NULL, 0xC0,
- NULL, HFILL}
- },
- { &hf_gsm_cbch_sched_end_slot,
- { "GSM CBCH Schedule End Slot", "gsm_cbch.sched_end",
- FT_UINT8, BASE_DEC, NULL, 0x3F,
- NULL, HFILL}
- },
- { &hf_gsm_cbch_sched_msg_id,
- { "GSM CBCH Schedule Message ID", "gsm_cbch.sched_msg_id",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- /* Fragment fields
- */
- { &hf_cbch_fragment_overlap,
- { "Fragment overlap",
- "gsm_cbch.fragment.overlap",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "Fragment overlaps with other fragments", HFILL
- }
- },
- { &hf_cbch_fragment_overlap_conflict,
- { "Conflicting data in fragment overlap",
- "gsm_cbch.fragment.overlap.conflict",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "Overlapping fragments contained conflicting data", HFILL
- }
- },
- { &hf_cbch_fragment_multiple_tails,
- { "Multiple tail fragments found",
- "gsm_cbch.fragment.multipletails",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "Several tails were found when defragmenting the packet", HFILL
- }
- },
- { &hf_cbch_fragment_too_long_fragment,
- { "Fragment too long",
- "gsm_cbch.fragment.toolongfragment",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "Fragment contained data past end of packet", HFILL
- }
- },
- { &hf_cbch_fragment_error,
- { "Defragmentation error",
- "gsm_cbch.fragment.error",
- FT_FRAMENUM, BASE_NONE, NULL, 0x0,
- "Defragmentation error due to illegal fragments", HFILL
- }
- },
- { &hf_cbch_fragment_count,
- { "Fragmentation count",
- "gsm_cbch.fragment.count",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Count of CBCH Fragments", HFILL
- }
- },
- { &hf_cbch_reassembled_in,
- { "Reassembled in",
- "gsm_cbch.reassembled.in",
- FT_FRAMENUM, BASE_NONE, NULL, 0x0,
- "CBCH fragments are reassembled in the given packet", HFILL
- }
- },
- { &hf_cbch_reassembled_length,
- { "Reassembled message length is one less than indicated here",
- "gsm_cbch.reassembled.length",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The total length of the reassembled message", HFILL
- }
- },
- { &hf_cbch_fragment,
- { "CBCH Fragment",
- "gsm_cbch.fragment",
- FT_FRAMENUM, BASE_NONE, NULL, 0x0,
- NULL, HFILL
- }
- },
- { &hf_cbch_fragments,
- { "CBCH Fragments",
- "gsm_cbch.fragments",
- FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL
- }
- }
- };
+ /* Setup list of header fields */
+ static hf_register_info hf_smscb[] =
+ {
+ { &hf_gsm_cbch_spare_bit,
+ { "GSM CBCH spare bit", "gsm_cbch_block_type.spare",
+ FT_UINT8, BASE_HEX, NULL, 0x80,
+ NULL, HFILL}
+ },
+ { &hf_gsm_cbch_lpd,
+ { "GSM CBCH Link Protocol Discriminator", "gsm_cbch_block_type.lpd",
+ FT_UINT8, BASE_DEC, VALS(block_type_lpd_strings), 0x60,
+ NULL, HFILL}
+ },
+ { &hf_gsm_cbch_lb,
+ { "GSM CBCH Last Block", "gsm_cbch_block_type.lb",
+ FT_UINT8, BASE_DEC, NULL, 0x10,
+ NULL, HFILL}
+ },
+ { &hf_gsm_cbch_seq_num,
+ { "GSM CBCH Sequence Number", "gsm_cbch_block_type.seq_num",
+ FT_UINT8, BASE_DEC, VALS(block_type_seq_num_values), 0x0F,
+ NULL, HFILL}
+ },
+ { &hf_gsm_cbch_sched_type,
+ { "GSM CBCH Schedule Type", "gsm_cbch.sched_type",
+ FT_UINT8, BASE_DEC, VALS(sched_type_values), 0xC0,
+ NULL, HFILL}
+ },
+ { &hf_gsm_cbch_sched_begin_slot,
+ { "GSM CBCH Schedule Begin slot", "gsm_cbch.schedule_begin",
+ FT_UINT8, BASE_DEC, NULL, 0x3F,
+ NULL, HFILL}
+ },
+ { &hf_gsm_cbch_sched_spare,
+ { "GSM CBCH Schedule Spare Bits", "gsm_cbch.sched_spare",
+ FT_UINT8, BASE_DEC, NULL, 0xC0,
+ NULL, HFILL}
+ },
+ { &hf_gsm_cbch_sched_end_slot,
+ { "GSM CBCH Schedule End Slot", "gsm_cbch.sched_end",
+ FT_UINT8, BASE_DEC, NULL, 0x3F,
+ NULL, HFILL}
+ },
+ { &hf_gsm_cbch_sched_msg_id,
+ { "GSM CBCH Schedule Message ID", "gsm_cbch.sched_msg_id",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ /* Fragment fields
+ */
+ { &hf_cbch_fragment_overlap,
+ { "Fragment overlap",
+ "gsm_cbch.fragment.overlap",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "Fragment overlaps with other fragments", HFILL
+ }
+ },
+ { &hf_cbch_fragment_overlap_conflict,
+ { "Conflicting data in fragment overlap",
+ "gsm_cbch.fragment.overlap.conflict",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "Overlapping fragments contained conflicting data", HFILL
+ }
+ },
+ { &hf_cbch_fragment_multiple_tails,
+ { "Multiple tail fragments found",
+ "gsm_cbch.fragment.multipletails",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "Several tails were found when defragmenting the packet", HFILL
+ }
+ },
+ { &hf_cbch_fragment_too_long_fragment,
+ { "Fragment too long",
+ "gsm_cbch.fragment.toolongfragment",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "Fragment contained data past end of packet", HFILL
+ }
+ },
+ { &hf_cbch_fragment_error,
+ { "Defragmentation error",
+ "gsm_cbch.fragment.error",
+ FT_FRAMENUM, BASE_NONE, NULL, 0x0,
+ "Defragmentation error due to illegal fragments", HFILL
+ }
+ },
+ { &hf_cbch_fragment_count,
+ { "Fragmentation count",
+ "gsm_cbch.fragment.count",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Count of CBCH Fragments", HFILL
+ }
+ },
+ { &hf_cbch_reassembled_in,
+ { "Reassembled in",
+ "gsm_cbch.reassembled.in",
+ FT_FRAMENUM, BASE_NONE, NULL, 0x0,
+ "CBCH fragments are reassembled in the given packet", HFILL
+ }
+ },
+ { &hf_cbch_reassembled_length,
+ { "Reassembled message length is one less than indicated here",
+ "gsm_cbch.reassembled.length",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The total length of the reassembled message", HFILL
+ }
+ },
+ { &hf_cbch_fragment,
+ { "CBCH Fragment",
+ "gsm_cbch.fragment",
+ FT_FRAMENUM, BASE_NONE, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_cbch_fragments,
+ { "CBCH Fragments",
+ "gsm_cbch.fragments",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL
+ }
+ }
+ };
/* Setup protocol subtree array */
- static gint *ett[] = {
- &ett_cbch_msg,
- &ett_schedule_msg,
- &ett_schedule_new_msg,
- &ett_cbch_fragment,
- &ett_cbch_fragments,
- };
-
- /* Register the protocol name and description */
- proto_cbch =
- proto_register_protocol("GSM Cell Broadcast Channel", "GSM CBCH", "gsm_cbch");
-
- proto_register_field_array(proto_cbch, hf_smscb, array_length(hf_smscb));
-
- /* subdissector code */
- register_dissector("gsm_cbch", dissect_cbch, proto_cbch);
- register_init_routine(cbch_defragment_init);
-
- /* subtree array */
- proto_register_subtree_array(ett, array_length(ett));
+ static gint *ett[] = {
+ &ett_cbch_msg,
+ &ett_schedule_msg,
+ &ett_schedule_new_msg,
+ &ett_cbch_fragment,
+ &ett_cbch_fragments,
+ };
+
+ /* Register the protocol name and description */
+ proto_cbch = proto_register_protocol("GSM Cell Broadcast Channel", "GSM CBCH", "gsm_cbch");
+ proto_register_field_array(proto_cbch, hf_smscb, array_length(hf_smscb));
+
+ /* subdissector code */
+ register_dissector("gsm_cbch", dissect_cbch, proto_cbch);
+ register_init_routine(cbch_defragment_init);
+
+ /* subtree array */
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_gsm_cbch(void)
{
- data_handle = find_dissector("data");
- cbs_handle = find_dissector("gsm_cell_broadcast");
+ data_handle = find_dissector("data");
+ cbs_handle = find_dissector("gsm_cell_broadcast");
}
diff --git a/epan/dissectors/packet-gsm_map.c b/epan/dissectors/packet-gsm_map.c
index 46d491259e..85befa1cda 100644
--- a/epan/dissectors/packet-gsm_map.c
+++ b/epan/dissectors/packet-gsm_map.c
@@ -314,7 +314,9 @@ static int hf_gsm_map_sm_sm_RP_UI = -1; /* SignalInfo */
static int hf_gsm_map_sm_moreMessagesToSend = -1; /* NULL */
static int hf_gsm_map_sm_smDeliveryTimer = -1; /* SM_DeliveryTimerValue */
static int hf_gsm_map_sm_smDeliveryStartTime = -1; /* Time */
-static int hf_gsm_map_sm_serviceCentreAddressDA = -1; /* AddressString */
+static int hf_gsm_map_sm_imsi_01 = -1; /* T_imsi */
+static int hf_gsm_map_sm_lmsi_01 = -1; /* T_lmsi */
+static int hf_gsm_map_sm_serviceCentreAddressDA = -1; /* T_serviceCentreAddressDA */
static int hf_gsm_map_sm_noSM_RP_DA = -1; /* NULL */
static int hf_gsm_map_sm_msisdn_01 = -1; /* T_msisdn */
static int hf_gsm_map_sm_serviceCentreAddressOA = -1; /* T_serviceCentreAddressOA */
@@ -1568,8 +1570,9 @@ static int hf_gsm_old_sm_RP_DA = -1; /* SM_RP_DAold */
static int hf_gsm_old_sm_RP_OA = -1; /* SM_RP_OAold */
static int hf_gsm_old_sm_RP_UI = -1; /* SignalInfo */
static int hf_gsm_old_moreMessagesToSend = -1; /* NULL */
-static int hf_gsm_old_lmsi = -1; /* LMSI */
-static int hf_gsm_old_serviceCentreAddressDA = -1; /* AddressString */
+static int hf_gsm_old_imsi_01 = -1; /* T_imsi */
+static int hf_gsm_old_lmsi = -1; /* T_lmsi */
+static int hf_gsm_old_serviceCentreAddressDA = -1; /* T_serviceCentreAddressDA */
static int hf_gsm_old_noSM_RP_DA = -1; /* NULL */
static int hf_gsm_old_msisdn_01 = -1; /* T_msisdn */
static int hf_gsm_old_serviceCentreAddressOA = -1; /* T_serviceCentreAddressOA */
@@ -3227,13 +3230,13 @@ dissect_gsm_map_ProtocolId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off
static int
dissect_gsm_map_SignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 303 "../../asn1/gsm_map/gsm_map.cnf"
+#line 327 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
&parameter_tvb);
- actx->value_ptr = parameter_tvb;
+ actx->value_ptr = (void*)parameter_tvb;
@@ -3251,7 +3254,7 @@ static const ber_sequence_t gsm_map_ExternalSignalInfo_sequence[] = {
int
dissect_gsm_map_ExternalSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 724 "../../asn1/gsm_map/gsm_map.cnf"
+#line 748 "../../asn1/gsm_map/gsm_map.cnf"
/*
-- Information about the internal structure is given in
-- clause 7.6.9.
@@ -3280,54 +3283,54 @@ if (!actx->value_ptr)
* function
*/
/* Get tag */
- octet = tvb_get_guint8(actx->value_ptr,0);
- proto_tree_add_item(subtree, hf_gsm_map_ie_tag, actx->value_ptr, 0,1,FALSE);
+ octet = tvb_get_guint8((tvbuff_t*)actx->value_ptr,0);
+ proto_tree_add_item(subtree, hf_gsm_map_ie_tag, (tvbuff_t*)actx->value_ptr, 0,1,ENC_BIG_ENDIAN);
/* get length */
- length = tvb_get_guint8(actx->value_ptr,1);
- proto_tree_add_item(subtree, hf_gsm_map_len, actx->value_ptr, 1,1,FALSE);
+ length = tvb_get_guint8((tvbuff_t*)actx->value_ptr,1);
+ proto_tree_add_item(subtree, hf_gsm_map_len, (tvbuff_t*)actx->value_ptr, 1,1,ENC_BIG_ENDIAN);
/* Branch on tag */
switch(octet){
case 4:
/* Dissect the data part */
- de_bearer_cap(actx->value_ptr, subtree, actx->pinfo, 2, length, NULL, 0);
+ de_bearer_cap((tvbuff_t*)actx->value_ptr, subtree, actx->pinfo, 2, length, NULL, 0);
/* TODO: There may be more than one IE */
break;
default:
- proto_tree_add_text(subtree, actx->value_ptr, 0, length, "If you want this decoded send the packet to Wireshark-dev");
+ proto_tree_add_text(subtree, (tvbuff_t*)actx->value_ptr, 0, length, "If you want this decoded send the packet to Wireshark-dev");
break;
}/* switch(octet) */
break;
case 2:
/* gsm-0806 */
- octet = tvb_get_guint8(actx->value_ptr,0);
+ octet = tvb_get_guint8((tvbuff_t*)actx->value_ptr,0);
/* Discrimination parameter */
- proto_tree_add_item(subtree, hf_gsm_map_disc_par, actx->value_ptr, 0,1,FALSE);
+ proto_tree_add_item(subtree, hf_gsm_map_disc_par, (tvbuff_t*)actx->value_ptr, 0,1,ENC_BIG_ENDIAN);
if ( octet == 0) {/* DISCRIMINATION TS 48 006(GSM 08.06 version 5.3.0) */
/* Strip off discrimination and length */
- proto_tree_add_item(subtree, hf_gsm_map_len, actx->value_ptr, 1,1,FALSE);
- next_tvb = tvb_new_subset_remaining(actx->value_ptr, 2);
+ proto_tree_add_item(subtree, hf_gsm_map_len, (tvbuff_t*)actx->value_ptr, 1,1,ENC_BIG_ENDIAN);
+ next_tvb = tvb_new_subset_remaining((tvbuff_t*)actx->value_ptr, 2);
dissect_bssmap(next_tvb, actx->pinfo, subtree);
}else if(octet==1){
- proto_tree_add_item(subtree, hf_gsm_map_dlci, actx->value_ptr, 1,1,FALSE);
- proto_tree_add_item(subtree, hf_gsm_map_len, actx->value_ptr, 2,1,FALSE);
- next_tvb = tvb_new_subset_remaining(actx->value_ptr, 3);
+ proto_tree_add_item(subtree, hf_gsm_map_dlci, (tvbuff_t*)actx->value_ptr, 1,1,ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_gsm_map_len, (tvbuff_t*)actx->value_ptr, 2,1,ENC_BIG_ENDIAN);
+ next_tvb = tvb_new_subset_remaining((tvbuff_t*)actx->value_ptr, 3);
call_dissector(dtap_handle, next_tvb, actx->pinfo, subtree);
}
break;
case 3:
/* gsm-BSSMAP TODO Is it correct to stripp off two first octets here?*/
- octet = tvb_get_guint8(actx->value_ptr,0);
+ octet = tvb_get_guint8((tvbuff_t*)actx->value_ptr,0);
if ( octet == 0) {/* DISCRIMINATION TS 48 006 */
- next_tvb = tvb_new_subset_remaining(actx->value_ptr, 2);
+ next_tvb = tvb_new_subset_remaining((tvbuff_t*)actx->value_ptr, 2);
dissect_bssmap(next_tvb, actx->pinfo, subtree);
}
break;
/* ets-300102-1 (~Q.931 ) */
case 4:
- octet = tvb_get_guint8(actx->value_ptr,0);
- length = tvb_get_guint8(actx->value_ptr,1);
+ octet = tvb_get_guint8((tvbuff_t*)actx->value_ptr,0);
+ length = tvb_get_guint8((tvbuff_t*)actx->value_ptr,1);
if ( octet == 4 )
- dissect_q931_bearer_capability_ie(actx->value_ptr, 2, length, subtree);
+ dissect_q931_bearer_capability_ie((tvbuff_t*)actx->value_ptr, 2, length, subtree);
break;
default:
break;
@@ -3411,15 +3414,15 @@ dissect_gsm_map_LongSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
case 1:
octet = tvb_get_guint8(parameter_tvb,0);
/* Discrimination parameter */
- proto_tree_add_item(subtree, hf_gsm_map_disc_par, parameter_tvb, 0,1,FALSE);
+ proto_tree_add_item(subtree, hf_gsm_map_disc_par, parameter_tvb, 0,1,ENC_BIG_ENDIAN);
if ( octet == 0) {/* DISCRIMINATION TS 48 006(GSM 08.06 version 5.3.0) */
/* Strip off discrimination and length */
- proto_tree_add_item(subtree, hf_gsm_map_len, parameter_tvb, 1,1,FALSE);
+ proto_tree_add_item(subtree, hf_gsm_map_len, parameter_tvb, 1,1,ENC_BIG_ENDIAN);
next_tvb = tvb_new_subset_remaining(parameter_tvb, 2);
dissect_bssmap(next_tvb, actx->pinfo, subtree);
}else if(octet==1){
- proto_tree_add_item(subtree, hf_gsm_map_dlci, parameter_tvb, 1,1,FALSE);
- proto_tree_add_item(subtree, hf_gsm_map_len, parameter_tvb, 2,1,FALSE);
+ proto_tree_add_item(subtree, hf_gsm_map_dlci, parameter_tvb, 1,1,ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_gsm_map_len, parameter_tvb, 2,1,ENC_BIG_ENDIAN);
next_tvb = tvb_new_subset_remaining(parameter_tvb, 3);
call_dissector(dtap_handle, next_tvb, actx->pinfo, subtree);
}
@@ -3467,7 +3470,7 @@ dissect_gsm_map_AlertingPattern(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
int
dissect_gsm_map_GSN_Address(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 549 "../../asn1/gsm_map/gsm_map.cnf"
+#line 573 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
guint8 octet;
@@ -3484,10 +3487,10 @@ dissect_gsm_map_GSN_Address(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
octet = tvb_get_guint8(parameter_tvb,0);
switch(octet){
case 0x04: /* IPv4 */
- proto_tree_add_item(subtree, hf_gsm_map_GSNAddress_IPv4, parameter_tvb, 1, tvb_length_remaining(parameter_tvb, 1), FALSE);
+ proto_tree_add_item(subtree, hf_gsm_map_GSNAddress_IPv4, parameter_tvb, 1, tvb_length_remaining(parameter_tvb, 1), ENC_BIG_ENDIAN);
break;
case 0x50: /* IPv4 */
- proto_tree_add_item(subtree, hf_gsm_map_GSNAddress_IPv4, parameter_tvb, 1, tvb_length_remaining(parameter_tvb, 1), FALSE);
+ proto_tree_add_item(subtree, hf_gsm_map_GSNAddress_IPv4, parameter_tvb, 1, tvb_length_remaining(parameter_tvb, 1), ENC_BIG_ENDIAN);
break;
default:
break;
@@ -3618,7 +3621,7 @@ dissect_gsm_map_HLR_List(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offse
int
dissect_gsm_map_GlobalCellId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 804 "../../asn1/gsm_map/gsm_map.cnf"
+#line 828 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree;
@@ -3895,7 +3898,7 @@ dissect_gsm_map_TA_Id(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _
int
dissect_gsm_map_RAIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 573 "../../asn1/gsm_map/gsm_map.cnf"
+#line 597 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree;
@@ -3928,7 +3931,7 @@ dissect_gsm_map_CellGlobalIdOrServiceAreaIdFixedLength(gboolean implicit_tag _U_
int
dissect_gsm_map_LAIFixedLength(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 585 "../../asn1/gsm_map/gsm_map.cnf"
+#line 609 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree;
@@ -4054,7 +4057,7 @@ dissect_gsm_map_EMLPP_Info(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off
static int
dissect_gsm_map_Ext_SS_Status(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 401 "../../asn1/gsm_map/gsm_map.cnf"
+#line 425 "../../asn1/gsm_map/gsm_map.cnf"
/* Note Ext-SS-Status can have more than one byte */
tvbuff_t *parameter_tvb;
@@ -4187,7 +4190,7 @@ dissect_gsm_map_ss_RegisterSS_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
int
dissect_gsm_map_ss_SS_Status(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 381 "../../asn1/gsm_map/gsm_map.cnf"
+#line 405 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
guint8 octet;
@@ -4221,12 +4224,12 @@ dissect_gsm_map_ss_ForwardingOptions(gboolean implicit_tag _U_, tvbuff_t *tvb _U
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
NULL);
-#line 492 "../../asn1/gsm_map/gsm_map.cnf"
+#line 516 "../../asn1/gsm_map/gsm_map.cnf"
- proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,FALSE);
- proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,FALSE);
- proto_tree_add_item(tree, hf_gsm_map_notification_to_calling_party, tvb, 0,1,FALSE);
- proto_tree_add_item(tree, hf_gsm_map_forwarding_reason, tvb, 0,1,FALSE);
+ proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_map_notification_to_calling_party, tvb, 0,1,ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_map_forwarding_reason, tvb, 0,1,ENC_BIG_ENDIAN);
return offset;
}
@@ -4540,7 +4543,7 @@ dissect_gsm_map_ss_InterrogateSS_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U
int
dissect_gsm_map_ss_USSD_DataCodingScheme(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 424 "../../asn1/gsm_map/gsm_map.cnf"
+#line 448 "../../asn1/gsm_map/gsm_map.cnf"
/*The structure of the USSD-DataCodingScheme is defined by
* the Cell Broadcast Data Coding Scheme as described in
* TS 3GPP TS 23.038
@@ -4566,7 +4569,7 @@ dissect_gsm_map_ss_USSD_DataCodingScheme(gboolean implicit_tag _U_, tvbuff_t *tv
int
dissect_gsm_map_ss_USSD_String(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 439 "../../asn1/gsm_map/gsm_map.cnf"
+#line 463 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
int length;
@@ -5053,7 +5056,7 @@ static const ber_sequence_t gsm_map_er_SM_DeliveryFailureCause_sequence[] = {
static int
dissect_gsm_map_er_SM_DeliveryFailureCause(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 310 "../../asn1/gsm_map/gsm_map.cnf"
+#line 334 "../../asn1/gsm_map/gsm_map.cnf"
/* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
gsm_map_er_SM_DeliveryFailureCause_sequence, hf_index, ett_gsm_map_er_SM_DeliveryFailureCause);
@@ -5061,7 +5064,7 @@ dissect_gsm_map_er_SM_DeliveryFailureCause(gboolean implicit_tag _U_, tvbuff_t *
if (!actx->value_ptr)
return offset;
- dissector_try_uint(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree);
+ dissector_try_uint(sms_dissector_table, 0, (tvbuff_t*)actx->value_ptr, actx->pinfo, top_tree);
@@ -5946,6 +5949,48 @@ dissect_gsm_map_sm_RoutingInfoForSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb
}
+
+static int
+dissect_gsm_map_sm_T_imsi(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 303 "../../asn1/gsm_map/gsm_map.cnf"
+ actx->pinfo->p2p_dir = P2P_DIR_SENT;
+ offset = dissect_gsm_map_IMSI(implicit_tag, tvb, offset, actx, tree, hf_index);
+
+
+
+
+ return offset;
+}
+
+
+
+static int
+dissect_gsm_map_sm_T_lmsi(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 307 "../../asn1/gsm_map/gsm_map.cnf"
+ actx->pinfo->p2p_dir = P2P_DIR_SENT;
+ offset = dissect_gsm_map_LMSI(implicit_tag, tvb, offset, actx, tree, hf_index);
+
+
+
+
+ return offset;
+}
+
+
+
+static int
+dissect_gsm_map_sm_T_serviceCentreAddressDA(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 323 "../../asn1/gsm_map/gsm_map.cnf"
+ actx->pinfo->p2p_dir = P2P_DIR_RECV;
+ offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index);
+
+
+
+
+ return offset;
+}
+
+
const value_string gsm_map_sm_SM_RP_DA_vals[] = {
{ 0, "imsi" },
{ 1, "lmsi" },
@@ -5955,9 +6000,9 @@ const value_string gsm_map_sm_SM_RP_DA_vals[] = {
};
static const ber_choice_t gsm_map_sm_SM_RP_DA_choice[] = {
- { 0, &hf_gsm_map_sm_imsi , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
- { 1, &hf_gsm_map_sm_lmsi , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_LMSI },
- { 4, &hf_gsm_map_sm_serviceCentreAddressDA, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString },
+ { 0, &hf_gsm_map_sm_imsi_01 , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_T_imsi },
+ { 1, &hf_gsm_map_sm_lmsi_01 , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_T_lmsi },
+ { 4, &hf_gsm_map_sm_serviceCentreAddressDA, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_T_serviceCentreAddressDA },
{ 5, &hf_gsm_map_sm_noSM_RP_DA, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL },
{ 0, NULL, 0, 0, 0, NULL }
};
@@ -5975,7 +6020,7 @@ dissect_gsm_map_sm_SM_RP_DA(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
static int
dissect_gsm_map_sm_T_msisdn(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 299 "../../asn1/gsm_map/gsm_map.cnf"
+#line 315 "../../asn1/gsm_map/gsm_map.cnf"
actx->pinfo->p2p_dir = P2P_DIR_RECV;
offset = dissect_gsm_map_ISDN_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index);
@@ -6035,7 +6080,7 @@ static const ber_sequence_t gsm_map_sm_MO_ForwardSM_Arg_sequence[] = {
static int
dissect_gsm_map_sm_MO_ForwardSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 327 "../../asn1/gsm_map/gsm_map.cnf"
+#line 351 "../../asn1/gsm_map/gsm_map.cnf"
/* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@@ -6044,7 +6089,7 @@ dissect_gsm_map_sm_MO_ForwardSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_
if (!actx->value_ptr)
return offset;
- dissector_try_uint(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree);
+ dissector_try_uint(sms_dissector_table, 0, (tvbuff_t*)actx->value_ptr, actx->pinfo, top_tree);
@@ -6060,7 +6105,7 @@ static const ber_sequence_t gsm_map_sm_MO_ForwardSM_Res_sequence[] = {
static int
dissect_gsm_map_sm_MO_ForwardSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 336 "../../asn1/gsm_map/gsm_map.cnf"
+#line 360 "../../asn1/gsm_map/gsm_map.cnf"
/* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@@ -6069,7 +6114,7 @@ dissect_gsm_map_sm_MO_ForwardSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_
if (!actx->value_ptr)
return offset;
- dissector_try_uint(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree);
+ dissector_try_uint(sms_dissector_table, 0, (tvbuff_t*)actx->value_ptr, actx->pinfo, top_tree);
@@ -6090,7 +6135,7 @@ static const ber_sequence_t gsm_map_sm_MT_ForwardSM_Arg_sequence[] = {
static int
dissect_gsm_map_sm_MT_ForwardSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 345 "../../asn1/gsm_map/gsm_map.cnf"
+#line 369 "../../asn1/gsm_map/gsm_map.cnf"
/* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@@ -6099,7 +6144,7 @@ dissect_gsm_map_sm_MT_ForwardSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_
if (!actx->value_ptr)
return offset;
- dissector_try_uint(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree);
+ dissector_try_uint(sms_dissector_table, 0, (tvbuff_t*)actx->value_ptr, actx->pinfo, top_tree);
@@ -6115,7 +6160,7 @@ static const ber_sequence_t gsm_map_sm_MT_ForwardSM_Res_sequence[] = {
static int
dissect_gsm_map_sm_MT_ForwardSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 354 "../../asn1/gsm_map/gsm_map.cnf"
+#line 378 "../../asn1/gsm_map/gsm_map.cnf"
/* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@@ -6124,7 +6169,7 @@ dissect_gsm_map_sm_MT_ForwardSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_
if (!actx->value_ptr)
return offset;
- dissector_try_uint(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree);
+ dissector_try_uint(sms_dissector_table, 0, (tvbuff_t*)actx->value_ptr, actx->pinfo, top_tree);
@@ -6298,7 +6343,7 @@ static const ber_sequence_t gsm_map_sm_MT_ForwardSM_VGCS_Arg_sequence[] = {
static int
dissect_gsm_map_sm_MT_ForwardSM_VGCS_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 363 "../../asn1/gsm_map/gsm_map.cnf"
+#line 387 "../../asn1/gsm_map/gsm_map.cnf"
/* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@@ -6307,7 +6352,7 @@ dissect_gsm_map_sm_MT_ForwardSM_VGCS_Arg(gboolean implicit_tag _U_, tvbuff_t *tv
if (!actx->value_ptr)
return offset;
- dissector_try_uint(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree);
+ dissector_try_uint(sms_dissector_table, 0, (tvbuff_t*)actx->value_ptr, actx->pinfo, top_tree);
@@ -6338,7 +6383,7 @@ static const ber_sequence_t gsm_map_sm_MT_ForwardSM_VGCS_Res_sequence[] = {
static int
dissect_gsm_map_sm_MT_ForwardSM_VGCS_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 372 "../../asn1/gsm_map/gsm_map.cnf"
+#line 396 "../../asn1/gsm_map/gsm_map.cnf"
/* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@@ -6347,7 +6392,7 @@ dissect_gsm_map_sm_MT_ForwardSM_VGCS_Res(gboolean implicit_tag _U_, tvbuff_t *tv
if (!actx->value_ptr)
return offset;
- dissector_try_uint(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree);
+ dissector_try_uint(sms_dissector_table, 0, (tvbuff_t*)actx->value_ptr, actx->pinfo, top_tree);
@@ -8058,7 +8103,7 @@ dissect_gsm_map_ms_SGSN_Capability(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
static int
dissect_gsm_map_ms_APN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 838 "../../asn1/gsm_map/gsm_map.cnf"
+#line 862 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree;
int length, name_len, tmp;
@@ -8283,7 +8328,7 @@ dissect_gsm_map_ms_UpdateGprsLocationRes(gboolean implicit_tag _U_, tvbuff_t *tv
static int
dissect_gsm_map_ms_IntegrityProtectionInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 621 "../../asn1/gsm_map/gsm_map.cnf"
+#line 645 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
asn1_ctx_t asn1_ctx;
@@ -8306,7 +8351,7 @@ dissect_gsm_map_ms_IntegrityProtectionInformation(gboolean implicit_tag _U_, tvb
static int
dissect_gsm_map_ms_EncryptionInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 633 "../../asn1/gsm_map/gsm_map.cnf"
+#line 657 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
asn1_ctx_t asn1_ctx;
@@ -8391,7 +8436,7 @@ dissect_gsm_map_ms_AllowedUMTS_Algorithms(gboolean implicit_tag _U_, tvbuff_t *t
static int
dissect_gsm_map_ms_RadioResourceInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 597 "../../asn1/gsm_map/gsm_map.cnf"
+#line 621 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree;
@@ -8462,7 +8507,7 @@ dissect_gsm_map_ms_BSSMAP_ServiceHandover(gboolean implicit_tag _U_, tvbuff_t *t
static int
dissect_gsm_map_ms_RANAP_ServiceHandover(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 609 "../../asn1/gsm_map/gsm_map.cnf"
+#line 633 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
asn1_ctx_t asn1_ctx;
@@ -9336,12 +9381,12 @@ static int
dissect_gsm_map_ms_T_forwardingOptions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_gsm_map_ms_Ext_ForwOptions(implicit_tag, tvb, offset, actx, tree, hf_index);
-#line 498 "../../asn1/gsm_map/gsm_map.cnf"
+#line 522 "../../asn1/gsm_map/gsm_map.cnf"
- proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,FALSE);
- proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,FALSE);
- proto_tree_add_item(tree, hf_gsm_map_notification_to_calling_party, tvb, 0,1,FALSE);
- proto_tree_add_item(tree, hf_gsm_map_forwarding_reason, tvb, 0,1,FALSE);
+ proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_map_notification_to_calling_party, tvb, 0,1,ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_map_forwarding_reason, tvb, 0,1,ENC_BIG_ENDIAN);
@@ -10499,7 +10544,7 @@ dissect_gsm_map_ms_VlrCamelSubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t
static int
dissect_gsm_map_ms_PDP_Type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 506 "../../asn1/gsm_map/gsm_map.cnf"
+#line 530 "../../asn1/gsm_map/gsm_map.cnf"
guint8 pdp_type_org;
tvbuff_t *parameter_tvb;
@@ -10510,14 +10555,14 @@ dissect_gsm_map_ms_PDP_Type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
if (!parameter_tvb)
return offset;
- proto_tree_add_item(tree, hf_gsm_map_pdp_type_org, parameter_tvb, 0,1,FALSE);
+ proto_tree_add_item(tree, hf_gsm_map_pdp_type_org, parameter_tvb, 0,1,ENC_BIG_ENDIAN);
pdp_type_org = tvb_get_guint8(parameter_tvb,1);
switch (pdp_type_org){
case 0: /* ETSI */
- proto_tree_add_item(tree, hf_gsm_map_etsi_pdp_type_number, parameter_tvb, 0,1,FALSE);
+ proto_tree_add_item(tree, hf_gsm_map_etsi_pdp_type_number, parameter_tvb, 0,1,ENC_BIG_ENDIAN);
break;
case 1: /* IETF */
- proto_tree_add_item(tree, hf_gsm_map_ietf_pdp_type_number, parameter_tvb, 0,1,FALSE);
+ proto_tree_add_item(tree, hf_gsm_map_ietf_pdp_type_number, parameter_tvb, 0,1,ENC_BIG_ENDIAN);
break;
default:
break;
@@ -10532,7 +10577,7 @@ dissect_gsm_map_ms_PDP_Type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
int
dissect_gsm_map_ms_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 528 "../../asn1/gsm_map/gsm_map.cnf"
+#line 552 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
@@ -10554,7 +10599,7 @@ dissect_gsm_map_ms_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
int
dissect_gsm_map_ms_Ext_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 539 "../../asn1/gsm_map/gsm_map.cnf"
+#line 563 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
@@ -12063,7 +12108,7 @@ dissect_gsm_map_ms_GeographicalInformation(gboolean implicit_tag _U_, tvbuff_t *
static int
dissect_gsm_map_ms_LocationNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 865 "../../asn1/gsm_map/gsm_map.cnf"
+#line 889 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree;
const char *digit_str;
@@ -14822,7 +14867,7 @@ dissect_gsm_map_lcs_ProvideSubscriberLocation_Arg(gboolean implicit_tag _U_, tvb
int
dissect_gsm_map_lcs_Ext_GeographicalInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 816 "../../asn1/gsm_map/gsm_map.cnf"
+#line 840 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree;
@@ -16248,7 +16293,7 @@ static const ber_sequence_t gsm_old_Bss_APDU_sequence[] = {
static int
dissect_gsm_old_Bss_APDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 646 "../../asn1/gsm_map/gsm_map.cnf"
+#line 670 "../../asn1/gsm_map/gsm_map.cnf"
guint8 octet;
guint8 length;
tvbuff_t *next_tvb;
@@ -16275,54 +16320,54 @@ if (!actx->value_ptr)
* function
*/
/* Get tag */
- octet = tvb_get_guint8(actx->value_ptr,0);
- proto_tree_add_item(subtree, hf_gsm_map_ie_tag, actx->value_ptr, 0,1,FALSE);
+ octet = tvb_get_guint8((tvbuff_t*)actx->value_ptr,0);
+ proto_tree_add_item(subtree, hf_gsm_map_ie_tag, (tvbuff_t*)actx->value_ptr, 0,1,ENC_BIG_ENDIAN);
/* get length */
- length = tvb_get_guint8(actx->value_ptr,1);
- proto_tree_add_item(subtree, hf_gsm_map_len, actx->value_ptr, 1,1,FALSE);
+ length = tvb_get_guint8((tvbuff_t*)actx->value_ptr,1);
+ proto_tree_add_item(subtree, hf_gsm_map_len, (tvbuff_t*)actx->value_ptr, 1,1,ENC_BIG_ENDIAN);
/* Branch on tag */
switch(octet){
case 4:
/* Dissect the data part */
- de_bearer_cap(actx->value_ptr, subtree, actx->pinfo, 2, length, NULL, 0);
+ de_bearer_cap((tvbuff_t*)actx->value_ptr, subtree, actx->pinfo, 2, length, NULL, 0);
/* TODO: There may be more than one IE */
break;
default:
- proto_tree_add_text(subtree, actx->value_ptr, 0, length, "If you want this decoded send the packet to Wireshark-dev");
+ proto_tree_add_text(subtree, (tvbuff_t*)actx->value_ptr, 0, length, "If you want this decoded send the packet to Wireshark-dev");
break;
}/* switch(octet) */
break;
case 2:
/* gsm-0806 */
- octet = tvb_get_guint8(actx->value_ptr,0);
+ octet = tvb_get_guint8((tvbuff_t*)actx->value_ptr,0);
/* Discrimination parameter */
- proto_tree_add_item(subtree, hf_gsm_map_disc_par, actx->value_ptr, 0,1,FALSE);
+ proto_tree_add_item(subtree, hf_gsm_map_disc_par, (tvbuff_t*)actx->value_ptr, 0,1,ENC_BIG_ENDIAN);
if ( octet == 0) {/* DISCRIMINATION TS 48 006(GSM 08.06 version 5.3.0) */
/* Strip off discrimination and length */
- proto_tree_add_item(subtree, hf_gsm_map_len, actx->value_ptr, 1,1,FALSE);
- next_tvb = tvb_new_subset_remaining(actx->value_ptr, 2);
+ proto_tree_add_item(subtree, hf_gsm_map_len, (tvbuff_t*)actx->value_ptr, 1,1,ENC_BIG_ENDIAN);
+ next_tvb = tvb_new_subset_remaining((tvbuff_t*)actx->value_ptr, 2);
dissect_bssmap(next_tvb, actx->pinfo, subtree);
}else if(octet==1){
- proto_tree_add_item(subtree, hf_gsm_map_dlci, actx->value_ptr, 1,1,FALSE);
- proto_tree_add_item(subtree, hf_gsm_map_len, actx->value_ptr, 2,1,FALSE);
- next_tvb = tvb_new_subset_remaining(actx->value_ptr, 3);
+ proto_tree_add_item(subtree, hf_gsm_map_dlci, (tvbuff_t*)actx->value_ptr, 1,1,ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_gsm_map_len, (tvbuff_t*)actx->value_ptr, 2,1,ENC_BIG_ENDIAN);
+ next_tvb = tvb_new_subset_remaining((tvbuff_t*)actx->value_ptr, 3);
call_dissector(dtap_handle, next_tvb, actx->pinfo, subtree);
}
break;
case 3:
/* gsm-BSSMAP -- Value 3 is reserved and must not be used*/
- octet = tvb_get_guint8(actx->value_ptr,0);
+ octet = tvb_get_guint8((tvbuff_t*)actx->value_ptr,0);
if ( octet == 0) {/* DISCRIMINATION TS 48 006 */
- next_tvb = tvb_new_subset_remaining(actx->value_ptr, 2);
+ next_tvb = tvb_new_subset_remaining((tvbuff_t*)actx->value_ptr, 2);
dissect_bssmap(next_tvb, actx->pinfo, subtree);
}
break;
/* ets-300102-1 (~Q.931 ) */
case 4:
- octet = tvb_get_guint8(actx->value_ptr,0);
- length = tvb_get_guint8(actx->value_ptr,1);
+ octet = tvb_get_guint8((tvbuff_t*)actx->value_ptr,0);
+ length = tvb_get_guint8((tvbuff_t*)actx->value_ptr,1);
if ( octet == 4 )
- dissect_q931_bearer_capability_ie(actx->value_ptr, 2, length, subtree);
+ dissect_q931_bearer_capability_ie((tvbuff_t*)actx->value_ptr, 2, length, subtree);
break;
default:
break;
@@ -16828,6 +16873,48 @@ dissect_gsm_old_PlmnContainer(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
}
+
+static int
+dissect_gsm_old_T_imsi(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 295 "../../asn1/gsm_map/gsm_map.cnf"
+ actx->pinfo->p2p_dir = P2P_DIR_SENT;
+ offset = dissect_gsm_map_IMSI(implicit_tag, tvb, offset, actx, tree, hf_index);
+
+
+
+
+ return offset;
+}
+
+
+
+static int
+dissect_gsm_old_T_lmsi(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 299 "../../asn1/gsm_map/gsm_map.cnf"
+ actx->pinfo->p2p_dir = P2P_DIR_SENT;
+ offset = dissect_gsm_map_LMSI(implicit_tag, tvb, offset, actx, tree, hf_index);
+
+
+
+
+ return offset;
+}
+
+
+
+static int
+dissect_gsm_old_T_serviceCentreAddressDA(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 319 "../../asn1/gsm_map/gsm_map.cnf"
+ actx->pinfo->p2p_dir = P2P_DIR_RECV;
+ offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index);
+
+
+
+
+ return offset;
+}
+
+
static const value_string gsm_old_SM_RP_DAold_vals[] = {
{ 0, "imsi" },
{ 1, "lmsi" },
@@ -16837,9 +16924,9 @@ static const value_string gsm_old_SM_RP_DAold_vals[] = {
};
static const ber_choice_t gsm_old_SM_RP_DAold_choice[] = {
- { 0, &hf_gsm_old_imsi , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
- { 1, &hf_gsm_old_lmsi , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_LMSI },
- { 4, &hf_gsm_old_serviceCentreAddressDA, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString },
+ { 0, &hf_gsm_old_imsi_01 , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_old_T_imsi },
+ { 1, &hf_gsm_old_lmsi , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_old_T_lmsi },
+ { 4, &hf_gsm_old_serviceCentreAddressDA, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_old_T_serviceCentreAddressDA },
{ 5, &hf_gsm_old_noSM_RP_DA , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gsm_old_NULL },
{ 0, NULL, 0, 0, 0, NULL }
};
@@ -16857,7 +16944,7 @@ dissect_gsm_old_SM_RP_DAold(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
static int
dissect_gsm_old_T_msisdn(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 295 "../../asn1/gsm_map/gsm_map.cnf"
+#line 311 "../../asn1/gsm_map/gsm_map.cnf"
actx->pinfo->p2p_dir = P2P_DIR_RECV;
offset = dissect_gsm_map_ISDN_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index);
@@ -16916,7 +17003,7 @@ static const ber_sequence_t gsm_old_ForwardSM_Arg_sequence[] = {
static int
dissect_gsm_old_ForwardSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 318 "../../asn1/gsm_map/gsm_map.cnf"
+#line 342 "../../asn1/gsm_map/gsm_map.cnf"
/* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@@ -16925,7 +17012,7 @@ dissect_gsm_old_ForwardSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
if (!actx->value_ptr)
return offset;
- dissector_try_uint(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree);
+ dissector_try_uint(sms_dissector_table, 0, (tvbuff_t*)actx->value_ptr, actx->pinfo, top_tree);
@@ -19166,9 +19253,9 @@ dissect_gsm_map_GSMMAPPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset,
opcode = 0;
application_context_version = 0;
if (actx->pinfo->private_data != NULL){
- p_private_tcap=actx->pinfo->private_data;
+ p_private_tcap = (struct tcap_private_t *)actx->pinfo->private_data;
if (p_private_tcap->acv==TRUE ){
- version_ptr = strrchr(p_private_tcap->oid,'.');
+ version_ptr = strrchr((const char*)p_private_tcap->oid,'.');
if (version_ptr){
application_context_version = atoi(version_ptr+1);
}
@@ -19208,7 +19295,7 @@ dissect_gsm_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
/* create display subtree for the protocol */
if(parent_tree){
- item = proto_tree_add_item(parent_tree, proto_gsm_map, tvb, 0, -1, FALSE);
+ item = proto_tree_add_item(parent_tree, proto_gsm_map, tvb, 0, -1, ENC_NA);
tree = proto_item_add_subtree(item, ett_gsm_map);
}
@@ -19873,7 +19960,7 @@ void proto_register_gsm_map(void) {
NULL, HFILL }},
{ &hf_gsm_map_locationnumber_nai,
{ "Nature of address indicator", "gsm_map.locationnumber.nai",
- FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(&gsm_map_na_vals), 0x3f,
+ FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(gsm_map_na_vals), 0x3f,
NULL, HFILL }},
{ &hf_gsm_map_locationnumber_inn,
{ "Internal Network Number indicator (INN)", "gsm_map.locationnumber.inn",
@@ -20470,10 +20557,18 @@ void proto_register_gsm_map(void) {
{ "smDeliveryStartTime", "gsm_map.sm.smDeliveryStartTime",
FT_BYTES, BASE_NONE, NULL, 0,
"Time", HFILL }},
+ { &hf_gsm_map_sm_imsi_01,
+ { "imsi", "gsm_map.sm.imsi",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gsm_map_sm_lmsi_01,
+ { "lmsi", "gsm_map.sm.lmsi",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_gsm_map_sm_serviceCentreAddressDA,
{ "serviceCentreAddressDA", "gsm_map.sm.serviceCentreAddressDA",
FT_BYTES, BASE_NONE, NULL, 0,
- "AddressString", HFILL }},
+ NULL, HFILL }},
{ &hf_gsm_map_sm_noSM_RP_DA,
{ "noSM-RP-DA", "gsm_map.sm.noSM_RP_DA",
FT_NONE, BASE_NONE, NULL, 0,
@@ -25403,6 +25498,10 @@ void proto_register_gsm_map(void) {
{ "moreMessagesToSend", "gsm_old.moreMessagesToSend",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_gsm_old_imsi_01,
+ { "imsi", "gsm_old.imsi",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_gsm_old_lmsi,
{ "lmsi", "gsm_old.lmsi",
FT_BYTES, BASE_NONE, NULL, 0,
@@ -25410,7 +25509,7 @@ void proto_register_gsm_map(void) {
{ &hf_gsm_old_serviceCentreAddressDA,
{ "serviceCentreAddressDA", "gsm_old.serviceCentreAddressDA",
FT_BYTES, BASE_NONE, NULL, 0,
- "AddressString", HFILL }},
+ NULL, HFILL }},
{ &hf_gsm_old_noSM_RP_DA,
{ "noSM-RP-DA", "gsm_old.noSM_RP_DA",
FT_NONE, BASE_NONE, NULL, 0,
diff --git a/epan/dissectors/packet-gsm_rlcmac.c b/epan/dissectors/packet-gsm_rlcmac.c
index 991db7a02c..3b97b059e4 100644
--- a/epan/dissectors/packet-gsm_rlcmac.c
+++ b/epan/dissectors/packet-gsm_rlcmac.c
@@ -5993,7 +5993,7 @@ CSN_DESCR_END (PSI13_t)
-typedef char* MT_Strings_t;
+typedef const char* MT_Strings_t;
static const MT_Strings_t szMT_Downlink[] = {
"Invalid Message Type", /* 0x00 */
@@ -6078,7 +6078,7 @@ static const MT_Strings_t szMT_Uplink[] = {
"PACKET_SI_STATUS", /* 0x0D */
};
-static char*
+static const char*
MT_DL_TextGet(guint8 mt)
{
if (mt < ElementsOf(szMT_Downlink))
@@ -6091,7 +6091,7 @@ MT_DL_TextGet(guint8 mt)
}
}
-static char*
+static const char*
MT_UL_TextGet(guint8 mt)
{
if (mt < ElementsOf(szMT_Uplink))
diff --git a/epan/dissectors/packet-gsm_sim.c b/epan/dissectors/packet-gsm_sim.c
index 83c90f7985..530526d926 100644
--- a/epan/dissectors/packet-gsm_sim.c
+++ b/epan/dissectors/packet-gsm_sim.c
@@ -760,6 +760,7 @@ static const gchar *get_sw_string(guint16 sw)
case 0x92:
if ((sw & 0xf0) == 0x00)
return "Command successful but after internal retry routine";
+ break;
case 0x67:
return "Incorrect parameter P3";
case 0x6d:
@@ -1599,7 +1600,19 @@ proto_register_gsm_sim(void)
NULL, HFILL }
},
+ /* Terminal Profile Byte 18 */
+ { &hf_tprof_b18,
+ { "Terminal Profile Byte 18 (Bearer independent protocol)", "iso7816.tp.b18",
+ FT_UINT8, BASE_HEX, NULL, 0,
+ NULL, HFILL },
+ },
+
/* Terminal Profile Byte 19 */
+ { &hf_tprof_b19,
+ { "Terminal Profile Byte 19", "iso7816.tp.b19",
+ FT_UINT8, BASE_HEX, NULL, 0,
+ NULL, HFILL },
+ },
{ &hf_tp_tia_eia_version,
{ "TIA/EIA Version", "iso7816.tp.tia_eia_version",
FT_UINT8, BASE_DEC, NULL, 0x0f,
diff --git a/epan/dissectors/packet-gsm_sms.c b/epan/dissectors/packet-gsm_sms.c
index 249ea9cf63..94cefc22c8 100644
--- a/epan/dissectors/packet-gsm_sms.c
+++ b/epan/dissectors/packet-gsm_sms.c
@@ -41,14 +41,6 @@
#include <glib.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-
#include <string.h>
#include <epan/packet.h>
@@ -57,43 +49,43 @@
#include "packet-gsm_sms.h"
-#define MAX_SMS_FRAG_LEN 134
+#define MAX_SMS_FRAG_LEN 134
/* PROTOTYPES/FORWARDS */
-#define EXTRANEOUS_DATA_CHECK(edc_len, edc_max_len) \
+#define EXTRANEOUS_DATA_CHECK(edc_len, edc_max_len) \
if ((edc_len) > (edc_max_len)) \
{ \
- proto_tree_add_text(tree, tvb, \
- offset, (edc_len) - (edc_max_len), "Extraneous Data"); \
+ proto_tree_add_text(tree, tvb, \
+ offset, (edc_len) - (edc_max_len), "Extraneous Data"); \
}
-#define SHORT_DATA_CHECK(sdc_len, sdc_min_len) \
+#define SHORT_DATA_CHECK(sdc_len, sdc_min_len) \
if ((sdc_len) < (sdc_min_len)) \
{ \
- proto_tree_add_text(tree, tvb, \
- offset, (sdc_len), "Short Data (?)"); \
- return; \
+ proto_tree_add_text(tree, tvb, \
+ offset, (sdc_len), "Short Data (?)"); \
+ return; \
}
-#define EXACT_DATA_CHECK(edc_len, edc_eq_len) \
+#define EXACT_DATA_CHECK(edc_len, edc_eq_len) \
if ((edc_len) != (edc_eq_len)) \
{ \
- proto_tree_add_text(tree, tvb, \
- offset, (edc_len), "Unexpected Data Length"); \
- return; \
+ proto_tree_add_text(tree, tvb, \
+ offset, (edc_len), "Unexpected Data Length"); \
+ return; \
}
-#define SMS_SHIFTMASK(m_val, m_bitmask, m_sval); \
+#define SMS_SHIFTMASK(m_val, m_bitmask, m_sval); \
{ \
- int _temp_val = m_val; \
- int _temp_bm = m_bitmask; \
- while (_temp_bm && !(_temp_bm & 0x01)) \
- { \
- _temp_bm = _temp_bm >> 1; \
- _temp_val = _temp_val >> 1; \
- } \
- m_sval = _temp_val; \
+ int _temp_val = m_val; \
+ int _temp_bm = m_bitmask; \
+ while (_temp_bm && !(_temp_bm & 0x01)) \
+ { \
+ _temp_bm = _temp_bm >> 1; \
+ _temp_val = _temp_val >> 1; \
+ } \
+ m_sval = _temp_val; \
}
@@ -173,22 +165,22 @@ static proto_tree *g_tree;
/* Coding Group Bits */
static const value_string gsm_sms_coding_group_bits_vals[] = {
- { 0, "General Data Coding indication" }, /* 00xx */
- { 1, "General Data Coding indication" }, /* 00xx */
- { 2, "General Data Coding indication" }, /* 00xx */
- { 3, "General Data Coding indication" }, /* 00xx */
- { 4, "Message Marked for Automatic Deletion Group" }, /* 01xx */
- { 5, "Message Marked for Automatic Deletion Group" }, /* 01xx */
- { 6, "Message Marked for Automatic Deletion Group" }, /* 01xx */
- { 7, "Message Marked for Automatic Deletion Group" }, /* 01xx */
- { 8, "Reserved coding groups" }, /* 1000..1011 */
- { 9, "Reserved coding groups" }, /* 1000..1011 */
- { 10, "Reserved coding groups" }, /* 1000..1011 */
- { 11, "Reserved coding groups" }, /* 1000..1011 */
- { 12, "Message Waiting Indication Group: Discard Message" }, /* 1100 */
- { 13, "Message Waiting Indication Group: Store Message" }, /* 1101 */
- { 14, "Message Waiting Indication Group: Store Message" }, /* 1110 */
- { 15, "Data coding/message class" }, /* 1111 */
+ { 0, "General Data Coding indication" }, /* 00xx */
+ { 1, "General Data Coding indication" }, /* 00xx */
+ { 2, "General Data Coding indication" }, /* 00xx */
+ { 3, "General Data Coding indication" }, /* 00xx */
+ { 4, "Message Marked for Automatic Deletion Group" }, /* 01xx */
+ { 5, "Message Marked for Automatic Deletion Group" }, /* 01xx */
+ { 6, "Message Marked for Automatic Deletion Group" }, /* 01xx */
+ { 7, "Message Marked for Automatic Deletion Group" }, /* 01xx */
+ { 8, "Reserved coding groups" }, /* 1000..1011 */
+ { 9, "Reserved coding groups" }, /* 1000..1011 */
+ { 10, "Reserved coding groups" }, /* 1000..1011 */
+ { 11, "Reserved coding groups" }, /* 1000..1011 */
+ { 12, "Message Waiting Indication Group: Discard Message" }, /* 1100 */
+ { 13, "Message Waiting Indication Group: Store Message" }, /* 1101 */
+ { 14, "Message Waiting Indication Group: Store Message" }, /* 1110 */
+ { 15, "Data coding/message class" }, /* 1111 */
{ 0, NULL },
};
@@ -198,12 +190,13 @@ static guint16 g_frag;
static guint16 g_port_src;
static guint16 g_port_dst;
-static gboolean g_is_wsp;
+static gboolean g_is_wsp;
static dissector_table_t gsm_sms_dissector_tbl;
/* Short Message reassembly */
static GHashTable *g_sm_fragment_table = NULL;
static GHashTable *g_sm_reassembled_table = NULL;
+static GHashTable *g_sm_fragment_params_table = NULL;
static gint ett_gsm_sms_ud_fragment = -1;
static gint ett_gsm_sms_ud_fragments = -1;
/*
@@ -241,12 +234,20 @@ static const fragment_items sm_frag_items = {
"Short Message fragments"
};
+typedef struct {
+ guint8 udl;
+ guint32 length;
+} sm_fragment_params;
static void
gsm_sms_defragment_init (void)
{
fragment_table_init (&g_sm_fragment_table);
reassembled_table_init(&g_sm_reassembled_table);
+ if (g_sm_fragment_params_table) {
+ g_hash_table_destroy(g_sm_fragment_params_table);
+ }
+ g_sm_fragment_params_table = g_hash_table_new(g_direct_hash, g_direct_equal);
}
/*
@@ -254,39 +255,39 @@ gsm_sms_defragment_init (void)
* set to 1 for uplink messages
*/
static const value_string msg_type_strings[] = {
- { 0, "SMS-DELIVER" },
- { 4, "SMS-DELIVER REPORT" },
- { 5, "SMS-SUBMIT" },
- { 1, "SMS-SUBMIT REPORT" },
- { 2, "SMS-STATUS REPORT" },
- { 6, "SMS-COMMAND" },
- { 3, "Reserved" },
- { 7, "Reserved" },
+ { 0, "SMS-DELIVER" },
+ { 4, "SMS-DELIVER REPORT" },
+ { 5, "SMS-SUBMIT" },
+ { 1, "SMS-SUBMIT REPORT" },
+ { 2, "SMS-STATUS REPORT" },
+ { 6, "SMS-COMMAND" },
+ { 3, "Reserved" },
+ { 7, "Reserved" },
{ 0, NULL },
};
static const value_string msg_type_strings_sc_to_ms[] = {
- { 0, "SMS-DELIVER" },
- { 1, "SMS-SUBMIT REPORT" },
- { 2, "SMS-STATUS REPORT" },
- { 3, "Reserved" },
+ { 0, "SMS-DELIVER" },
+ { 1, "SMS-SUBMIT REPORT" },
+ { 2, "SMS-STATUS REPORT" },
+ { 3, "Reserved" },
{ 0, NULL },
};
static const value_string msg_type_strings_ms_to_sc[] = {
- { 0, "SMS-DELIVER REPORT" },
- { 1, "SMS-SUBMIT" },
- { 2, "SMS-COMMAND" },
- { 3, "Reserved" },
+ { 0, "SMS-DELIVER REPORT" },
+ { 1, "SMS-SUBMIT" },
+ { 2, "SMS-COMMAND" },
+ { 3, "Reserved" },
{ 0, NULL },
};
/* 9.2.3.3 TP-Validity-Period-Format (TP-VPF) */
static const value_string vp_type_strings[] = {
- { 0, "TP-VP field not present"},
- { 2, "TP-VP field present - relative format"},
- { 1, "TP-VP field present - enhanced format"},
- { 3, "TP-VP field present - absolute format"},
+ { 0, "TP-VP field not present"},
+ { 2, "TP-VP field present - relative format"},
+ { 1, "TP-VP field present - enhanced format"},
+ { 3, "TP-VP field present - absolute format"},
{ 0, NULL },
};
@@ -325,24 +326,24 @@ static const true_false_string srq_bool_strings = {
"SMS STATUS REPORT is the result of a SMS SUBMIT."
};
-#define NUM_UDH_IEIS 256
+#define NUM_UDH_IEIS 256
static gint ett_udh_ieis[NUM_UDH_IEIS];
#define MAX_ADDR_SIZE 20
static void
dis_field_addr(tvbuff_t *tvb, proto_tree *tree, guint32 *offset_p, const gchar *title)
{
- static gchar digit_table[] = {"0123456789*#abc\0"};
- proto_item *item;
- proto_tree *subtree = NULL;
- const gchar *str = NULL;
- guint8 oct;
- guint32 offset;
- guint32 numdigocts;
- guint32 length;
- guint32 i, j;
- char addrbuf[MAX_ADDR_SIZE+1];
- gchar *addrstr;
+ static gchar digit_table[] = {"0123456789*#abc\0"};
+ proto_item *item;
+ proto_tree *subtree = NULL;
+ const gchar *str = NULL;
+ guint8 oct;
+ guint32 offset;
+ guint32 numdigocts;
+ guint32 length;
+ guint32 i, j;
+ char addrbuf[MAX_ADDR_SIZE+1];
+ gchar *addrstr;
offset = *offset_p;
@@ -353,35 +354,35 @@ dis_field_addr(tvbuff_t *tvb, proto_tree *tree, guint32 *offset_p, const gchar *
if (length <= numdigocts)
{
- proto_tree_add_text(tree,
- tvb, offset, length,
- "%s: Short Data (?)",
- title);
+ proto_tree_add_text(tree,
+ tvb, offset, length,
+ "%s: Short Data (?)",
+ title);
- *offset_p += length;
- return;
+ *offset_p += length;
+ return;
}
item = proto_tree_add_text(tree, tvb,
- offset, numdigocts + 2, "%s",
- title);
+ offset, numdigocts + 2, "%s",
+ title);
subtree = proto_item_add_subtree(item, ett_addr);
proto_tree_add_text(subtree,
- tvb, offset, 1,
- "Length: %d address digits",
- oct);
+ tvb, offset, 1,
+ "Length: %d address digits",
+ oct);
offset++;
oct = tvb_get_guint8(tvb, offset);
other_decode_bitfield_value(bigbuf, oct, 0x80, 8);
proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : %s",
- bigbuf,
- (oct & 0x80) ? "No extension" : "Extended");
+ offset, 1,
+ "%s : %s",
+ bigbuf,
+ (oct & 0x80) ? "No extension" : "Extended");
switch ((oct & 0x70) >> 4)
{
@@ -398,11 +399,11 @@ dis_field_addr(tvbuff_t *tvb, proto_tree *tree, guint32 *offset_p, const gchar *
other_decode_bitfield_value(bigbuf, oct, 0x70, 8);
proto_tree_add_text(subtree,
- tvb, offset, 1,
- "%s : Type of number: (%d) %s",
- bigbuf,
- (oct & 0x70) >> 4,
- str);
+ tvb, offset, 1,
+ "%s : Type of number: (%d) %s",
+ bigbuf,
+ (oct & 0x70) >> 4,
+ str);
switch (oct & 0x0f)
{
@@ -421,11 +422,11 @@ dis_field_addr(tvbuff_t *tvb, proto_tree *tree, guint32 *offset_p, const gchar *
other_decode_bitfield_value(bigbuf, oct, 0x0f, 8);
proto_tree_add_text(subtree,
- tvb, offset, 1,
- "%s : Numbering plan: (%d) %s",
- bigbuf,
- oct & 0x0f,
- str);
+ tvb, offset, 1,
+ "%s : Numbering plan: (%d) %s",
+ bigbuf,
+ oct & 0x0f,
+ str);
offset++;
@@ -433,37 +434,35 @@ dis_field_addr(tvbuff_t *tvb, proto_tree *tree, guint32 *offset_p, const gchar *
switch ((oct & 0x70) >> 4)
{
case 0x05: /* "Alphanumeric (coded according to 3GPP TS 23.038 GSM 7-bit default alphabet)" */
- i = gsm_sms_char_7bit_unpack(0, numdigocts, MAX_ADDR_SIZE, tvb_get_ptr(tvb, offset, numdigocts), addrbuf);
- addrbuf[i] = '\0';
- addrstr = gsm_sms_chars_to_utf8(addrbuf, i);
- break;
+ i = gsm_sms_char_7bit_unpack(0, numdigocts, MAX_ADDR_SIZE, tvb_get_ptr(tvb, offset, numdigocts), addrbuf);
+ addrbuf[i] = '\0';
+ addrstr = gsm_sms_chars_to_utf8(addrbuf, i);
+ break;
default:
- addrstr = ep_alloc(numdigocts*2 + 1);
- for (i = 0; i < numdigocts; i++)
- {
- oct = tvb_get_guint8(tvb, offset + i);
+ addrstr = ep_alloc(numdigocts*2 + 1);
+ for (i = 0; i < numdigocts; i++)
+ {
+ oct = tvb_get_guint8(tvb, offset + i);
- addrstr[j++] = digit_table[oct & 0x0f];
- addrstr[j++] = digit_table[(oct & 0xf0) >> 4];
- }
- addrstr[j++] = '\0';
- break;
+ addrstr[j++] = digit_table[oct & 0x0f];
+ addrstr[j++] = digit_table[(oct & 0xf0) >> 4];
+ }
+ addrstr[j++] = '\0';
+ break;
}
if (g_ascii_strncasecmp(title, "TP-O", 4) == 0) {
- proto_tree_add_string(subtree, hf_gsm_sms_tp_oa, tvb,
- offset, numdigocts, addrstr);
+ proto_tree_add_string(subtree, hf_gsm_sms_tp_oa, tvb,
+ offset, numdigocts, addrstr);
} else if (g_ascii_strncasecmp(title, "TP-D", 4) == 0) {
- proto_tree_add_string(subtree, hf_gsm_sms_tp_da, tvb,
- offset, numdigocts, addrstr);
+ proto_tree_add_string(subtree, hf_gsm_sms_tp_da, tvb,
+ offset, numdigocts, addrstr);
} else if (g_ascii_strncasecmp(title, "TP-R", 4) == 0) {
- proto_tree_add_string(subtree, hf_gsm_sms_tp_ra, tvb,
- offset, numdigocts, addrstr);
+ proto_tree_add_string(subtree, hf_gsm_sms_tp_ra, tvb,
+ offset, numdigocts, addrstr);
} else {
- proto_tree_add_text(subtree,
- tvb, offset, numdigocts,
- "Digits: %s",
- addrstr);
+ proto_tree_add_text(subtree, tvb,
+ offset, numdigocts, "Digits: %s", addrstr);
}
proto_item_append_text(item, " - (%s)", addrstr);
@@ -481,11 +480,11 @@ dis_field_addr(tvbuff_t *tvb, proto_tree *tree, guint32 *offset_p, const gchar *
static void
dis_field_pid(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 oct)
{
- proto_item *item;
- proto_tree *subtree = NULL;
- guint8 form;
- guint8 telematic;
- const gchar *str = NULL;
+ proto_item *item;
+ proto_tree *subtree = NULL;
+ guint8 form;
+ guint8 telematic;
+ const gchar *str = NULL;
item = proto_tree_add_item(tree, hf_gsm_sms_tp_pid, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -497,140 +496,140 @@ dis_field_pid(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 oct)
switch (form)
{
case 0:
- other_decode_bitfield_value(bigbuf, oct, 0xc0, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : defines formatting for subsequent bits",
- bigbuf);
-
- other_decode_bitfield_value(bigbuf, oct, 0x20, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : %s",
- bigbuf,
- (oct & 0x20) ?
- "telematic interworking" :
- "no telematic interworking, but SME-to-SME protocol");
-
- if (oct & 0x20)
- {
- telematic = oct & 0x1f;
-
- switch (telematic)
- {
- case 0x00: str = "implicit - device type is specific to this SC, or can be concluded on the basis of the address"; break;
- case 0x01: str = "telex (or teletex reduced to telex format)"; break;
- case 0x02: str = "group 3 telefax"; break;
- case 0x03: str = "group 4 telefax"; break;
- case 0x04: str = "voice telephone (i.e. conversion to speech)"; break;
- case 0x05: str = "ERMES (European Radio Messaging System)"; break;
- case 0x06: str = "National Paging system (known to the SC)"; break;
- case 0x07: str = "Videotex (T.100 [20] /T.101 [21])"; break;
- case 0x08: str = "teletex, carrier unspecified"; break;
- case 0x09: str = "teletex, in PSPDN"; break;
- case 0x0a: str = "teletex, in CSPDN"; break;
- case 0x0b: str = "teletex, in analog PSTN"; break;
- case 0x0c: str = "teletex, in digital ISDN"; break;
- case 0x0d: str = "UCI (Universal Computer Interface, ETSI DE/PS 3 01-3)"; break;
- case 0x10: str = "a message handling facility (known to the SC)"; break;
- case 0x11: str = "any public X.400-based message handling system"; break;
- case 0x12: str = "Internet Electronic Mail"; break;
- case 0x1f: str = "A GSM/UMTS mobile station"; break;
- default:
- if ((telematic >= 0x18) &&
- (telematic <= 0x1e))
- {
- str = "values specific to each SC";
- }
- else
- {
- str = "reserved";
- }
- break;
- }
-
- other_decode_bitfield_value(bigbuf, oct, 0x1f, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : device type: (%d) %s",
- bigbuf,
- telematic,
- str);
- }
- else
- {
- other_decode_bitfield_value(bigbuf, oct, 0x1f, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : the SM-AL protocol being used between the SME and the MS (%d)",
- bigbuf,
- oct & 0x1f);
- }
- break;
+ other_decode_bitfield_value(bigbuf, oct, 0xc0, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : defines formatting for subsequent bits",
+ bigbuf);
+
+ other_decode_bitfield_value(bigbuf, oct, 0x20, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : %s",
+ bigbuf,
+ (oct & 0x20) ?
+ "telematic interworking" :
+ "no telematic interworking, but SME-to-SME protocol");
+
+ if (oct & 0x20)
+ {
+ telematic = oct & 0x1f;
+
+ switch (telematic)
+ {
+ case 0x00: str = "implicit - device type is specific to this SC, or can be concluded on the basis of the address"; break;
+ case 0x01: str = "telex (or teletex reduced to telex format)"; break;
+ case 0x02: str = "group 3 telefax"; break;
+ case 0x03: str = "group 4 telefax"; break;
+ case 0x04: str = "voice telephone (i.e. conversion to speech)"; break;
+ case 0x05: str = "ERMES (European Radio Messaging System)"; break;
+ case 0x06: str = "National Paging system (known to the SC)"; break;
+ case 0x07: str = "Videotex (T.100 [20] /T.101 [21])"; break;
+ case 0x08: str = "teletex, carrier unspecified"; break;
+ case 0x09: str = "teletex, in PSPDN"; break;
+ case 0x0a: str = "teletex, in CSPDN"; break;
+ case 0x0b: str = "teletex, in analog PSTN"; break;
+ case 0x0c: str = "teletex, in digital ISDN"; break;
+ case 0x0d: str = "UCI (Universal Computer Interface, ETSI DE/PS 3 01-3)"; break;
+ case 0x10: str = "a message handling facility (known to the SC)"; break;
+ case 0x11: str = "any public X.400-based message handling system"; break;
+ case 0x12: str = "Internet Electronic Mail"; break;
+ case 0x1f: str = "A GSM/UMTS mobile station"; break;
+ default:
+ if ((telematic >= 0x18) &&
+ (telematic <= 0x1e))
+ {
+ str = "values specific to each SC";
+ }
+ else
+ {
+ str = "reserved";
+ }
+ break;
+ }
+
+ other_decode_bitfield_value(bigbuf, oct, 0x1f, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : device type: (%d) %s",
+ bigbuf,
+ telematic,
+ str);
+ }
+ else
+ {
+ other_decode_bitfield_value(bigbuf, oct, 0x1f, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : the SM-AL protocol being used between the SME and the MS (%d)",
+ bigbuf,
+ oct & 0x1f);
+ }
+ break;
case 1:
- other_decode_bitfield_value(bigbuf, oct, 0xc0, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : defines formatting for subsequent bits",
- bigbuf);
-
- switch (oct & 0x3f)
- {
- case 0x00: str = "Short Message Type 0"; break;
- case 0x01: str = "Replace Short Message Type 1"; break;
- case 0x02: str = "Replace Short Message Type 2"; break;
- case 0x03: str = "Replace Short Message Type 3"; break;
- case 0x04: str = "Replace Short Message Type 4"; break;
- case 0x05: str = "Replace Short Message Type 5"; break;
- case 0x06: str = "Replace Short Message Type 6"; break;
- case 0x07: str = "Replace Short Message Type 7"; break;
- case 0x1e: str = "Enhanced Message Service (Obsolete)"; break;
- case 0x1f: str = "Return Call Message"; break;
- case 0x3c: str = "ANSI-136 R-DATA"; break;
- case 0x3d: str = "ME Data download"; break;
- case 0x3e: str = "ME De-personalization Short Message"; break;
- case 0x3f: str = "(U)SIM Data download"; break;
- default:
- str = "Reserved"; break;
- }
-
- other_decode_bitfield_value(bigbuf, oct, 0x3f, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : (%d) %s",
- bigbuf,
- oct & 0x3f,
- str);
- break;
+ other_decode_bitfield_value(bigbuf, oct, 0xc0, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : defines formatting for subsequent bits",
+ bigbuf);
+
+ switch (oct & 0x3f)
+ {
+ case 0x00: str = "Short Message Type 0"; break;
+ case 0x01: str = "Replace Short Message Type 1"; break;
+ case 0x02: str = "Replace Short Message Type 2"; break;
+ case 0x03: str = "Replace Short Message Type 3"; break;
+ case 0x04: str = "Replace Short Message Type 4"; break;
+ case 0x05: str = "Replace Short Message Type 5"; break;
+ case 0x06: str = "Replace Short Message Type 6"; break;
+ case 0x07: str = "Replace Short Message Type 7"; break;
+ case 0x1e: str = "Enhanced Message Service (Obsolete)"; break;
+ case 0x1f: str = "Return Call Message"; break;
+ case 0x3c: str = "ANSI-136 R-DATA"; break;
+ case 0x3d: str = "ME Data download"; break;
+ case 0x3e: str = "ME De-personalization Short Message"; break;
+ case 0x3f: str = "(U)SIM Data download"; break;
+ default:
+ str = "Reserved"; break;
+ }
+
+ other_decode_bitfield_value(bigbuf, oct, 0x3f, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : (%d) %s",
+ bigbuf,
+ oct & 0x3f,
+ str);
+ break;
case 2:
- other_decode_bitfield_value(bigbuf, oct, 0xc0, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : Reserved",
- bigbuf);
-
- other_decode_bitfield_value(bigbuf, oct, 0x3f, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : undefined",
- bigbuf);
- break;
+ other_decode_bitfield_value(bigbuf, oct, 0xc0, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : Reserved",
+ bigbuf);
+
+ other_decode_bitfield_value(bigbuf, oct, 0x3f, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : undefined",
+ bigbuf);
+ break;
case 3:
- other_decode_bitfield_value(bigbuf, oct, 0xc0, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : bits 0-5 for SC specific use",
- bigbuf);
-
- other_decode_bitfield_value(bigbuf, oct, 0x3f, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : SC specific",
- bigbuf);
- break;
+ other_decode_bitfield_value(bigbuf, oct, 0xc0, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : bits 0-5 for SC specific use",
+ bigbuf);
+
+ other_decode_bitfield_value(bigbuf, oct, 0x3f, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : SC specific",
+ bigbuf);
+ break;
}
}
@@ -639,13 +638,13 @@ static void
dis_field_dcs(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 oct,
gboolean *seven_bit, gboolean *eight_bit, gboolean *ucs2, gboolean *compressed)
{
- proto_item *item;
- proto_tree *subtree = NULL;
- guint8 form;
- const gchar *str = NULL;
- gboolean default_5_bits;
- gboolean default_3_bits;
- gboolean default_data;
+ proto_item *item;
+ proto_tree *subtree = NULL;
+ guint8 form;
+ const gchar *str = NULL;
+ gboolean default_5_bits;
+ gboolean default_3_bits;
+ gboolean default_data;
*seven_bit = FALSE;
@@ -664,12 +663,12 @@ dis_field_dcs(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 oct,
if (oct == 0x00)
{
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "Special case, GSM 7 bit default alphabet");
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "Special case, GSM 7 bit default alphabet");
- *seven_bit = TRUE;
- return;
+ *seven_bit = TRUE;
+ return;
}
default_5_bits = FALSE;
@@ -680,188 +679,188 @@ dis_field_dcs(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 oct,
switch (form)
{
case 0:
- other_decode_bitfield_value(bigbuf, oct, 0xc0, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : General Data Coding indication",
- bigbuf);
+ other_decode_bitfield_value(bigbuf, oct, 0xc0, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : General Data Coding indication",
+ bigbuf);
- default_5_bits = TRUE;
- break;
+ default_5_bits = TRUE;
+ break;
case 1:
- other_decode_bitfield_value(bigbuf, oct, 0xc0, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : Message Marked for Automatic Deletion Group",
- bigbuf);
+ other_decode_bitfield_value(bigbuf, oct, 0xc0, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : Message Marked for Automatic Deletion Group",
+ bigbuf);
- default_5_bits = TRUE;
- break;
+ default_5_bits = TRUE;
+ break;
case 2:
- /* use top four bits */
- other_decode_bitfield_value(bigbuf, oct, 0xf0, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : Reserved coding groups",
- bigbuf);
- return;
+ /* use top four bits */
+ other_decode_bitfield_value(bigbuf, oct, 0xf0, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : Reserved coding groups",
+ bigbuf);
+ return;
case 3:
- switch ((oct & 0x30) >> 4)
- {
- case 0x00: str = "Message Waiting Indication Group: Discard Message (GSM 7 bit default alphabet)";
- default_3_bits = TRUE;
- *seven_bit = TRUE;
- break;
- case 0x01: str = "Message Waiting Indication Group: Store Message (GSM 7 bit default alphabet)";
- default_3_bits = TRUE;
- *seven_bit = TRUE;
- break;
- case 0x02: str = "Message Waiting Indication Group: Store Message (uncompressed UCS2 alphabet)";
- default_3_bits = TRUE;
- break;
- case 0x03: str = "Data coding/message class";
- default_data = TRUE;
- break;
- }
-
- /* use top four bits */
- other_decode_bitfield_value(bigbuf, oct, 0xf0, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : %s",
- bigbuf,
- str);
- break;
+ switch ((oct & 0x30) >> 4)
+ {
+ case 0x00: str = "Message Waiting Indication Group: Discard Message (GSM 7 bit default alphabet)";
+ default_3_bits = TRUE;
+ *seven_bit = TRUE;
+ break;
+ case 0x01: str = "Message Waiting Indication Group: Store Message (GSM 7 bit default alphabet)";
+ default_3_bits = TRUE;
+ *seven_bit = TRUE;
+ break;
+ case 0x02: str = "Message Waiting Indication Group: Store Message (uncompressed UCS2 alphabet)";
+ default_3_bits = TRUE;
+ break;
+ case 0x03: str = "Data coding/message class";
+ default_data = TRUE;
+ break;
+ }
+
+ /* use top four bits */
+ other_decode_bitfield_value(bigbuf, oct, 0xf0, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : %s",
+ bigbuf,
+ str);
+ break;
}
if (default_5_bits)
{
- other_decode_bitfield_value(bigbuf, oct, 0x20, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : Text is %scompressed",
- bigbuf,
- (oct & 0x20) ? "" : "not ");
-
- *compressed = (oct & 0x20) >> 5;
-
- other_decode_bitfield_value(bigbuf, oct, 0x10, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : %s",
- bigbuf,
- (oct & 0x10) ? "Message class is defined below" :
- "Reserved, no message class");
-
- switch ((oct & 0x0c) >> 2)
- {
- case 0x00: str = "GSM 7 bit default alphabet";
- *seven_bit = TRUE;
- break;
- case 0x01: str = "8 bit data";
- *eight_bit = TRUE;
- break;
- case 0x02: str = "UCS2 (16 bit)";
- *ucs2 = TRUE;
- break;
- case 0x03: str = "Reserved"; break;
- }
-
- other_decode_bitfield_value(bigbuf, oct, 0x0c, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : Character set: %s",
- bigbuf,
- str);
-
- switch (oct & 0x03)
- {
- case 0x00: str = "Class 0"; break;
- case 0x01: str = "Class 1 Default meaning: ME-specific"; break;
- case 0x02: str = "Class 2 (U)SIM specific message"; break;
- case 0x03: str = "Class 3 Default meaning: TE-specific"; break;
- }
-
- other_decode_bitfield_value(bigbuf, oct, 0x03, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : Message Class: %s%s",
- bigbuf,
- str,
- (oct & 0x10) ? "" : " (reserved)");
+ other_decode_bitfield_value(bigbuf, oct, 0x20, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : Text is %scompressed",
+ bigbuf,
+ (oct & 0x20) ? "" : "not ");
+
+ *compressed = (oct & 0x20) >> 5;
+
+ other_decode_bitfield_value(bigbuf, oct, 0x10, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : %s",
+ bigbuf,
+ (oct & 0x10) ? "Message class is defined below" :
+ "Reserved, no message class");
+
+ switch ((oct & 0x0c) >> 2)
+ {
+ case 0x00: str = "GSM 7 bit default alphabet";
+ *seven_bit = TRUE;
+ break;
+ case 0x01: str = "8 bit data";
+ *eight_bit = TRUE;
+ break;
+ case 0x02: str = "UCS2 (16 bit)";
+ *ucs2 = TRUE;
+ break;
+ case 0x03: str = "Reserved"; break;
+ }
+
+ other_decode_bitfield_value(bigbuf, oct, 0x0c, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : Character set: %s",
+ bigbuf,
+ str);
+
+ switch (oct & 0x03)
+ {
+ case 0x00: str = "Class 0"; break;
+ case 0x01: str = "Class 1 Default meaning: ME-specific"; break;
+ case 0x02: str = "Class 2 (U)SIM specific message"; break;
+ case 0x03: str = "Class 3 Default meaning: TE-specific"; break;
+ }
+
+ other_decode_bitfield_value(bigbuf, oct, 0x03, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : Message Class: %s%s",
+ bigbuf,
+ str,
+ (oct & 0x10) ? "" : " (reserved)");
}
else if (default_3_bits)
{
- other_decode_bitfield_value(bigbuf, oct, 0x08, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : Indication Sense: %s",
- bigbuf,
- (oct & 0x08) ? "Set Indication Active" : "Set Indication Inactive");
-
- other_decode_bitfield_value(bigbuf, oct, 0x04, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : Reserved",
- bigbuf);
-
- switch (oct & 0x03)
- {
- case 0x00: str = "Voicemail Message Waiting"; break;
- case 0x01: str = "Fax Message Waiting"; break;
- case 0x02: str = "Electronic Mail Message Waiting"; break;
- case 0x03: str = "Other Message Waiting"; break;
- }
-
- other_decode_bitfield_value(bigbuf, oct, 0x03, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : %s",
- bigbuf,
- str);
+ other_decode_bitfield_value(bigbuf, oct, 0x08, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : Indication Sense: %s",
+ bigbuf,
+ (oct & 0x08) ? "Set Indication Active" : "Set Indication Inactive");
+
+ other_decode_bitfield_value(bigbuf, oct, 0x04, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : Reserved",
+ bigbuf);
+
+ switch (oct & 0x03)
+ {
+ case 0x00: str = "Voicemail Message Waiting"; break;
+ case 0x01: str = "Fax Message Waiting"; break;
+ case 0x02: str = "Electronic Mail Message Waiting"; break;
+ case 0x03: str = "Other Message Waiting"; break;
+ }
+
+ other_decode_bitfield_value(bigbuf, oct, 0x03, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : %s",
+ bigbuf,
+ str);
}
else if (default_data)
{
- other_decode_bitfield_value(bigbuf, oct, 0x08, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : Reserved",
- bigbuf);
-
- *seven_bit = !(*eight_bit = (oct & 0x04) ? TRUE : FALSE);
-
- other_decode_bitfield_value(bigbuf, oct, 0x04, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : Message coding: %s",
- bigbuf,
- (*eight_bit) ? "8 bit data" : "GSM 7 bit default alphabet");
-
- switch (oct & 0x03)
- {
- case 0x00: str = "Class 0"; break;
- case 0x01: str = "Class 1 Default meaning: ME-specific"; break;
- case 0x02: str = "Class 2 (U)SIM specific message"; break;
- case 0x03: str = "Class 3 Default meaning: TE-specific"; break;
- }
-
- other_decode_bitfield_value(bigbuf, oct, 0x03, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : Message Class: %s",
- bigbuf,
- str);
+ other_decode_bitfield_value(bigbuf, oct, 0x08, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : Reserved",
+ bigbuf);
+
+ *seven_bit = !(*eight_bit = (oct & 0x04) ? TRUE : FALSE);
+
+ other_decode_bitfield_value(bigbuf, oct, 0x04, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : Message coding: %s",
+ bigbuf,
+ (*eight_bit) ? "8 bit data" : "GSM 7 bit default alphabet");
+
+ switch (oct & 0x03)
+ {
+ case 0x00: str = "Class 0"; break;
+ case 0x01: str = "Class 1 Default meaning: ME-specific"; break;
+ case 0x02: str = "Class 2 (U)SIM specific message"; break;
+ case 0x03: str = "Class 3 Default meaning: TE-specific"; break;
+ }
+
+ other_decode_bitfield_value(bigbuf, oct, 0x03, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : Message Class: %s",
+ bigbuf,
+ str);
}
}
static void
dis_field_scts_aux(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
{
- guint8 oct, oct2, oct3;
- char sign;
+ guint8 oct, oct2, oct3;
+ char sign;
oct = tvb_get_guint8(tvb, offset);
@@ -869,14 +868,14 @@ dis_field_scts_aux(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
oct3 = tvb_get_guint8(tvb, offset+2);
proto_tree_add_text(tree,
- tvb, offset, 3,
- "Year %d%d, Month %d%d, Day %d%d",
- oct & 0x0f,
- (oct & 0xf0) >> 4,
- oct2 & 0x0f,
- (oct2 & 0xf0) >> 4,
- oct3 & 0x0f,
- (oct3 & 0xf0) >> 4);
+ tvb, offset, 3,
+ "Year %d%d, Month %d%d, Day %d%d",
+ oct & 0x0f,
+ (oct & 0xf0) >> 4,
+ oct2 & 0x0f,
+ (oct2 & 0xf0) >> 4,
+ oct3 & 0x0f,
+ (oct3 & 0xf0) >> 4);
offset += 3;
@@ -885,14 +884,14 @@ dis_field_scts_aux(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
oct3 = tvb_get_guint8(tvb, offset+2);
proto_tree_add_text(tree,
- tvb, offset, 3,
- "Hour %d%d, Minutes %d%d, Seconds %d%d",
- oct & 0x0f,
- (oct & 0xf0) >> 4,
- oct2 & 0x0f,
- (oct2 & 0xf0) >> 4,
- oct3 & 0x0f,
- (oct3 & 0xf0) >> 4);
+ tvb, offset, 3,
+ "Hour %d%d, Minutes %d%d, Seconds %d%d",
+ oct & 0x0f,
+ (oct & 0xf0) >> 4,
+ oct2 & 0x0f,
+ (oct2 & 0xf0) >> 4,
+ oct3 & 0x0f,
+ (oct3 & 0xf0) >> 4);
offset += 3;
@@ -902,19 +901,19 @@ dis_field_scts_aux(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
oct = (oct >> 4) + (oct & 0x07) * 10;
proto_tree_add_text(tree,
- tvb, offset, 1,
- "Timezone: GMT %c %d hours %d minutes",
- sign, oct / 4, oct % 4 * 15);
+ tvb, offset, 1,
+ "Timezone: GMT %c %d hours %d minutes",
+ sign, oct / 4, oct % 4 * 15);
}
/* 9.2.3.11 */
static void
dis_field_scts(tvbuff_t *tvb, proto_tree *tree, guint32 *offset_p)
{
- proto_item *item;
- proto_tree *subtree = NULL;
- guint32 offset;
- guint32 length;
+ proto_item *item;
+ proto_tree *subtree = NULL;
+ guint32 offset;
+ guint32 length;
offset = *offset_p;
@@ -923,18 +922,18 @@ dis_field_scts(tvbuff_t *tvb, proto_tree *tree, guint32 *offset_p)
if (length < 7)
{
- proto_tree_add_text(tree,
- tvb, offset, length,
- "TP-Service-Centre-Time-Stamp: Short Data (?)");
+ proto_tree_add_text(tree,
+ tvb, offset, length,
+ "TP-Service-Centre-Time-Stamp: Short Data (?)");
- *offset_p += length;
- return;
+ *offset_p += length;
+ return;
}
item =
- proto_tree_add_text(tree, tvb,
- offset, 7,
- "TP-Service-Centre-Time-Stamp");
+ proto_tree_add_text(tree, tvb,
+ offset, 7,
+ "TP-Service-Centre-Time-Stamp");
subtree = proto_item_add_subtree(item, ett_scts);
@@ -947,14 +946,14 @@ dis_field_scts(tvbuff_t *tvb, proto_tree *tree, guint32 *offset_p)
static void
dis_field_vp(tvbuff_t *tvb, proto_tree *tree, guint32 *offset_p, guint8 vp_form)
{
- proto_item *item;
- proto_tree *subtree = NULL;
- guint32 offset;
- guint32 length;
- guint8 oct, oct2, oct3;
- guint8 loc_form;
- guint32 mins, hours;
- gboolean done;
+ proto_item *item;
+ proto_tree *subtree = NULL;
+ guint32 offset;
+ guint32 length;
+ guint8 oct, oct2, oct3;
+ guint8 loc_form;
+ guint32 mins, hours;
+ gboolean done;
if (vp_form == 0x00) return;
@@ -965,233 +964,233 @@ dis_field_vp(tvbuff_t *tvb, proto_tree *tree, guint32 *offset_p, guint8 vp_form)
done = FALSE;
do
{
- switch (vp_form)
- {
- case 1:
- length = tvb_length_remaining(tvb, offset);
-
- if (length < 7)
- {
- proto_tree_add_text(tree,
- tvb, offset, length,
- "TP-Validity-Period: Short Data (?)");
-
- *offset_p += length;
- return;
- }
-
- item =
- proto_tree_add_text(tree, tvb,
- offset, 7,
- "TP-Validity-Period");
-
- subtree = proto_item_add_subtree(item, ett_vp);
-
- oct = tvb_get_guint8(tvb, offset);
-
- other_decode_bitfield_value(bigbuf, oct, 0x80, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : %s",
- bigbuf,
- (oct & 0x80) ? "Extended" : "No extension");
-
- if (oct & 0x80)
- {
- proto_tree_add_text(subtree,
- tvb, offset + 1, 6,
- "Extension not implemented, ignored");
-
- *offset_p += 7;
- return;
- }
-
- other_decode_bitfield_value(bigbuf, oct, 0x40, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : %s",
- bigbuf,
- (oct & 0x40) ? "Single shot SM" : "Not single shot SM");
-
- other_decode_bitfield_value(bigbuf, oct, 0x38, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : Reserved",
- bigbuf);
-
- loc_form = oct & 0x7;
-
- switch (loc_form)
- {
- case 0x00:
- other_decode_bitfield_value(bigbuf, oct, 0x07, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : No Validity Period specified",
- bigbuf);
-
- done = TRUE;
- break;
-
- case 0x01:
- other_decode_bitfield_value(bigbuf, oct, 0x07, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : Validity Period Format: relative",
- bigbuf);
-
- offset++;
- /* go around again */
- vp_form = 2;
- break;
-
- case 0x02:
- other_decode_bitfield_value(bigbuf, oct, 0x07, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : Validity Period Format: relative",
- bigbuf);
-
- offset++;
- oct = tvb_get_guint8(tvb, offset);
-
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%d seconds",
- oct);
-
- done = TRUE;
- break;
-
- case 0x03:
- other_decode_bitfield_value(bigbuf, oct, 0x07, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : Validity Period Format: relative",
- bigbuf);
-
- offset++;
- oct = tvb_get_guint8(tvb, offset);
- oct2 = tvb_get_guint8(tvb, offset+1);
- oct3 = tvb_get_guint8(tvb, offset+2);
-
- proto_tree_add_text(subtree,
- tvb, offset, 3,
- "Hour %d%d, Minutes %d%d, Seconds %d%d",
- oct & 0x0f,
- (oct & 0xf0) >> 4,
- oct2 & 0x0f,
- (oct2 & 0xf0) >> 4,
- oct3 & 0x0f,
- (oct3 & 0xf0) >> 4);
-
- done = TRUE;
- break;
-
- default:
- other_decode_bitfield_value(bigbuf, oct, 0x07, 8);
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : Validity Period Format: Reserved",
- bigbuf);
-
- done = TRUE;
- break;
- }
- break;
-
- case 2:
- oct = tvb_get_guint8(tvb, offset);
-
- if (oct <= 143)
- {
- mins = (oct + 1) * 5;
- if (mins >= 60)
- {
- hours = mins / 60;
- mins %= 60;
-
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "TP-Validity-Period: %d hours %d minutes",
- hours,
- mins);
- }
- else
- {
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "TP-Validity-Period: %d minutes",
- mins);
- }
- }
- else if ((oct >= 144) &&
- (oct <= 167))
- {
- mins = (oct - 143) * 30;
- hours = 12 + (mins / 60);
- mins %= 60;
-
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "TP-Validity-Period: %d hours %d minutes",
- hours,
- mins);
- }
- else if ((oct >= 168) &&
- (oct <= 196))
- {
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "TP-Validity-Period: %d day(s)",
- oct - 166);
- }
- else if (oct >= 197)
- {
- proto_tree_add_text(subtree, tvb,
- offset, 1,
- "TP-Validity-Period: %d week(s)",
- oct - 192);
- }
-
- done = TRUE;
- break;
-
- case 3:
- length = tvb_length_remaining(tvb, offset);
-
- if (length < 7)
- {
- proto_tree_add_text(tree,
- tvb, offset, length,
- "TP-Validity-Period: Short Data (?)");
-
- *offset_p += length;
- return;
- }
-
- item =
- proto_tree_add_text(tree, tvb,
- offset, 7,
- "TP-Validity-Period: absolute");
-
- subtree = proto_item_add_subtree(item, ett_vp);
-
- dis_field_scts_aux(tvb, subtree, *offset_p);
-
- done = TRUE;
- break;
- }
+ switch (vp_form)
+ {
+ case 1:
+ length = tvb_length_remaining(tvb, offset);
+
+ if (length < 7)
+ {
+ proto_tree_add_text(tree,
+ tvb, offset, length,
+ "TP-Validity-Period: Short Data (?)");
+
+ *offset_p += length;
+ return;
+ }
+
+ item =
+ proto_tree_add_text(tree, tvb,
+ offset, 7,
+ "TP-Validity-Period");
+
+ subtree = proto_item_add_subtree(item, ett_vp);
+
+ oct = tvb_get_guint8(tvb, offset);
+
+ other_decode_bitfield_value(bigbuf, oct, 0x80, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : %s",
+ bigbuf,
+ (oct & 0x80) ? "Extended" : "No extension");
+
+ if (oct & 0x80)
+ {
+ proto_tree_add_text(subtree,
+ tvb, offset + 1, 6,
+ "Extension not implemented, ignored");
+
+ *offset_p += 7;
+ return;
+ }
+
+ other_decode_bitfield_value(bigbuf, oct, 0x40, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : %s",
+ bigbuf,
+ (oct & 0x40) ? "Single shot SM" : "Not single shot SM");
+
+ other_decode_bitfield_value(bigbuf, oct, 0x38, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : Reserved",
+ bigbuf);
+
+ loc_form = oct & 0x7;
+
+ switch (loc_form)
+ {
+ case 0x00:
+ other_decode_bitfield_value(bigbuf, oct, 0x07, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : No Validity Period specified",
+ bigbuf);
+
+ done = TRUE;
+ break;
+
+ case 0x01:
+ other_decode_bitfield_value(bigbuf, oct, 0x07, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : Validity Period Format: relative",
+ bigbuf);
+
+ offset++;
+ /* go around again */
+ vp_form = 2;
+ break;
+
+ case 0x02:
+ other_decode_bitfield_value(bigbuf, oct, 0x07, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : Validity Period Format: relative",
+ bigbuf);
+
+ offset++;
+ oct = tvb_get_guint8(tvb, offset);
+
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%d seconds",
+ oct);
+
+ done = TRUE;
+ break;
+
+ case 0x03:
+ other_decode_bitfield_value(bigbuf, oct, 0x07, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : Validity Period Format: relative",
+ bigbuf);
+
+ offset++;
+ oct = tvb_get_guint8(tvb, offset);
+ oct2 = tvb_get_guint8(tvb, offset+1);
+ oct3 = tvb_get_guint8(tvb, offset+2);
+
+ proto_tree_add_text(subtree,
+ tvb, offset, 3,
+ "Hour %d%d, Minutes %d%d, Seconds %d%d",
+ oct & 0x0f,
+ (oct & 0xf0) >> 4,
+ oct2 & 0x0f,
+ (oct2 & 0xf0) >> 4,
+ oct3 & 0x0f,
+ (oct3 & 0xf0) >> 4);
+
+ done = TRUE;
+ break;
+
+ default:
+ other_decode_bitfield_value(bigbuf, oct, 0x07, 8);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "%s : Validity Period Format: Reserved",
+ bigbuf);
+
+ done = TRUE;
+ break;
+ }
+ break;
+
+ case 2:
+ oct = tvb_get_guint8(tvb, offset);
+
+ if (oct <= 143)
+ {
+ mins = (oct + 1) * 5;
+ if (mins >= 60)
+ {
+ hours = mins / 60;
+ mins %= 60;
+
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "TP-Validity-Period: %d hours %d minutes",
+ hours,
+ mins);
+ }
+ else
+ {
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "TP-Validity-Period: %d minutes",
+ mins);
+ }
+ }
+ else if ((oct >= 144) &&
+ (oct <= 167))
+ {
+ mins = (oct - 143) * 30;
+ hours = 12 + (mins / 60);
+ mins %= 60;
+
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "TP-Validity-Period: %d hours %d minutes",
+ hours,
+ mins);
+ }
+ else if ((oct >= 168) &&
+ (oct <= 196))
+ {
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "TP-Validity-Period: %d day(s)",
+ oct - 166);
+ }
+ else if (oct >= 197)
+ {
+ proto_tree_add_text(subtree, tvb,
+ offset, 1,
+ "TP-Validity-Period: %d week(s)",
+ oct - 192);
+ }
+
+ done = TRUE;
+ break;
+
+ case 3:
+ length = tvb_length_remaining(tvb, offset);
+
+ if (length < 7)
+ {
+ proto_tree_add_text(tree,
+ tvb, offset, length,
+ "TP-Validity-Period: Short Data (?)");
+
+ *offset_p += length;
+ return;
+ }
+
+ item =
+ proto_tree_add_text(tree, tvb,
+ offset, 7,
+ "TP-Validity-Period: absolute");
+
+ subtree = proto_item_add_subtree(item, ett_vp);
+
+ dis_field_scts_aux(tvb, subtree, *offset_p);
+
+ done = TRUE;
+ break;
+ }
}
while (!done);
if (vp_form == 2)
{
- (*offset_p)++;
+ (*offset_p)++;
}
else
{
- *offset_p += 7;
+ *offset_p += 7;
}
}
@@ -1199,10 +1198,10 @@ dis_field_vp(tvbuff_t *tvb, proto_tree *tree, guint32 *offset_p, guint8 vp_form)
static void
dis_field_dt(tvbuff_t *tvb, proto_tree *tree, guint32 *offset_p)
{
- proto_item *item;
- proto_tree *subtree = NULL;
- guint32 offset;
- guint32 length;
+ proto_item *item;
+ proto_tree *subtree = NULL;
+ guint32 offset;
+ guint32 length;
offset = *offset_p;
@@ -1211,18 +1210,18 @@ dis_field_dt(tvbuff_t *tvb, proto_tree *tree, guint32 *offset_p)
if (length < 7)
{
- proto_tree_add_text(tree,
- tvb, offset, length,
- "TP-Discharge-Time: Short Data (?)");
+ proto_tree_add_text(tree,
+ tvb, offset, length,
+ "TP-Discharge-Time: Short Data (?)");
- *offset_p += length;
- return;
+ *offset_p += length;
+ return;
}
item =
- proto_tree_add_text(tree, tvb,
- offset, 7,
- "TP-Discharge-Time");
+ proto_tree_add_text(tree, tvb,
+ offset, 7,
+ "TP-Discharge-Time");
subtree = proto_item_add_subtree(item, ett_dt);
@@ -1238,30 +1237,30 @@ dis_field_dt(tvbuff_t *tvb, proto_tree *tree, guint32 *offset_p)
static void
dis_field_st(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 oct)
{
- static const gchar *sc_complete = "Short message transaction completed";
- static const gchar *sc_temporary = "Temporary error, SC still trying to transfer SM";
- static const gchar *sc_perm = "Permanent error, SC is not making any more transfer attempts";
- static const gchar *sc_tempfin = "Temporary error, SC is not making any more transfer attempts";
- proto_item *item;
- proto_tree *subtree = NULL;
- guint8 value;
- const gchar *str = NULL;
- const gchar *str2 = NULL;
+ static const gchar *sc_complete = "Short message transaction completed";
+ static const gchar *sc_temporary = "Temporary error, SC still trying to transfer SM";
+ static const gchar *sc_perm = "Permanent error, SC is not making any more transfer attempts";
+ static const gchar *sc_tempfin = "Temporary error, SC is not making any more transfer attempts";
+ proto_item *item;
+ proto_tree *subtree = NULL;
+ guint8 value;
+ const gchar *str = NULL;
+ const gchar *str2 = NULL;
item =
- proto_tree_add_text(tree, tvb,
- offset, 1,
- "TP-Status");
+ proto_tree_add_text(tree, tvb,
+ offset, 1,
+ "TP-Status");
subtree = proto_item_add_subtree(item, ett_st);
other_decode_bitfield_value(bigbuf, oct, 0x80, 8);
proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : Definition of bits 0-6: %s",
- bigbuf,
- (oct & 0x80) ? "Reserved" : "as follows");
+ offset, 1,
+ "%s : Definition of bits 0-6: %s",
+ bigbuf,
+ (oct & 0x80) ? "Reserved" : "as follows");
value = oct & 0x7f;
@@ -1297,75 +1296,75 @@ dis_field_st(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 oct)
case 0x65: str2 = sc_tempfin; str = "Error in SME"; break;
default:
- if ((value >= 0x03) &&
- (value <= 0x0f))
- {
- str2 = sc_complete;
- str = "Reserved";
- }
- else if ((value >= 0x10) &&
- (value <= 0x1f))
- {
- str2 = sc_complete;
- str = "Values specific to each SC";
- }
- else if ((value >= 0x26) &&
- (value <= 0x2f))
- {
- str2 = sc_temporary;
- str = "Reserved";
- }
- else if ((value >= 0x30) &&
- (value <= 0x3f))
- {
- str2 = sc_temporary;
- str = "Values specific to each SC";
- }
- else if ((value >= 0x4a) &&
- (value <= 0x4f))
- {
- str2 = sc_perm;
- str = "Reserved";
- }
- else if ((value >= 0x50) &&
- (value <= 0x5f))
- {
- str2 = sc_perm;
- str = "Values specific to each SC";
- }
- else if ((value >= 0x66) &&
- (value <= 0x6f))
- {
- str2 = sc_tempfin;
- str = "Reserved";
- }
- else if ((value >= 0x70) &&
- (value <= 0x7f))
- {
- str2 = sc_tempfin;
- str = "Values specific to each SC";
- }
- break;
+ if ((value >= 0x03) &&
+ (value <= 0x0f))
+ {
+ str2 = sc_complete;
+ str = "Reserved";
+ }
+ else if ((value >= 0x10) &&
+ (value <= 0x1f))
+ {
+ str2 = sc_complete;
+ str = "Values specific to each SC";
+ }
+ else if ((value >= 0x26) &&
+ (value <= 0x2f))
+ {
+ str2 = sc_temporary;
+ str = "Reserved";
+ }
+ else if ((value >= 0x30) &&
+ (value <= 0x3f))
+ {
+ str2 = sc_temporary;
+ str = "Values specific to each SC";
+ }
+ else if ((value >= 0x4a) &&
+ (value <= 0x4f))
+ {
+ str2 = sc_perm;
+ str = "Reserved";
+ }
+ else if ((value >= 0x50) &&
+ (value <= 0x5f))
+ {
+ str2 = sc_perm;
+ str = "Values specific to each SC";
+ }
+ else if ((value >= 0x66) &&
+ (value <= 0x6f))
+ {
+ str2 = sc_tempfin;
+ str = "Reserved";
+ }
+ else if ((value >= 0x70) &&
+ (value <= 0x7f))
+ {
+ str2 = sc_tempfin;
+ str = "Values specific to each SC";
+ }
+ break;
}
other_decode_bitfield_value(bigbuf, oct, 0x7f, 8);
proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : (%d) %s, %s",
- bigbuf,
- value,
- str2,
- str);
+ offset, 1,
+ "%s : (%d) %s, %s",
+ bigbuf,
+ value,
+ str2,
+ str);
}
/* 9.2.3.16 */
#define DIS_FIELD_UDL(m_tree, m_offset) \
{ \
proto_tree_add_text(m_tree, tvb, \
- m_offset, 1, \
- "TP-User-Data-Length: (%d) %s", \
- oct, \
- oct ? "depends on Data-Coding-Scheme" : "no User-Data");\
+ m_offset, 1, \
+ "TP-User-Data-Length: (%d) %s", \
+ oct, \
+ oct ? "depends on Data-Coding-Scheme" : "no User-Data");\
}
/* 9.2.3.17 */
@@ -1373,19 +1372,19 @@ dis_field_st(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 oct)
{ \
other_decode_bitfield_value(bigbuf, oct, m_bitmask, 8); \
proto_tree_add_text(m_tree, tvb, \
- m_offset, 1, \
- "%s : TP-Reply-Path: parameter is %sset in this SMS-SUBMIT/DELIVER", \
- bigbuf, \
- (oct & m_bitmask) ? "" : "not "); \
+ m_offset, 1, \
+ "%s : TP-Reply-Path: parameter is %sset in this SMS-SUBMIT/DELIVER", \
+ bigbuf, \
+ (oct & m_bitmask) ? "" : "not "); \
}
/* 9.2.3.18 */
#define DIS_FIELD_MN(m_tree, m_offset) \
{ \
proto_tree_add_text(m_tree, tvb, \
- m_offset, 1, \
- "TP-Message-Number: %d", \
- oct); \
+ m_offset, 1, \
+ "TP-Message-Number: %d", \
+ oct); \
}
/* 9.2.3.19 */
@@ -1398,36 +1397,36 @@ dis_field_st(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 oct)
case 2: str = "Delete previously submitted Short Message"; break; \
case 3: str = "Enable Status Report Request relating to previously submitted short message"; break; \
default: \
- if ((oct >= 0x04) && \
- (oct <= 0x1f)) \
- { \
- str = "Reserved unspecified"; \
- } \
- else if (oct >= 0xe0) \
- { \
- str = "Values specific for each SC"; \
- } \
- else \
- { \
- str = "undefined"; \
- } \
- break; \
+ if ((oct >= 0x04) && \
+ (oct <= 0x1f)) \
+ { \
+ str = "Reserved unspecified"; \
+ } \
+ else if (oct >= 0xe0) \
+ { \
+ str = "Values specific for each SC"; \
+ } \
+ else \
+ { \
+ str = "undefined"; \
+ } \
+ break; \
} \
proto_tree_add_text(m_tree, tvb, \
- m_offset, 1, \
- "TP-Command-Type: (%d), %s", \
- oct, \
- str); \
+ m_offset, 1, \
+ "TP-Command-Type: (%d), %s", \
+ oct, \
+ str); \
}
/* 9.2.3.20 */
#define DIS_FIELD_CDL(m_tree, m_offset) \
{ \
proto_tree_add_text(m_tree, tvb, \
- m_offset, 1, \
- "TP-Command-Data-Length: (%d)%s", \
- oct, \
- oct ? "" : " no Command-Data");\
+ m_offset, 1, \
+ "TP-Command-Data-Length: (%d)%s", \
+ oct, \
+ oct ? "" : " no Command-Data");\
}
/* 9.2.3.21 */
@@ -1439,159 +1438,159 @@ dis_field_st(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 oct)
static const value_string gsm_sms_tp_failure_cause_values[] = {
- /* 00 - 7F Reserved */
- /* 80 - 8F TP-PID errors */
- { 0x80, "Telematic interworking not supported" },
- { 0x81, "Short message Type 0 not supported" },
- { 0x82, "Cannot replace short message" },
- /* 83 - 8E Reserved */
- { 0x83, "Reserved" },
- { 0x84, "Reserved" },
- { 0x85, "Reserved" },
- { 0x86, "Reserved" },
- { 0x87, "Reserved" },
- { 0x88, "Reserved" },
- { 0x89, "Reserved" },
- { 0x8a, "Reserved" },
- { 0x8b, "Reserved" },
- { 0x8c, "Reserved" },
- { 0x8d, "Reserved" },
- { 0x8e, "Reserved" },
-
- { 0x8F, "Unspecified TP-PID error" },
- /* 90 - 9F TP-DCS errors */
- { 0x90, "Data coding scheme (alphabet) not supported" },
- { 0x91, "Message class not supported" },
- /* 92 - 9E Reserved */
- { 0x92, "Reserved" },
- { 0x93, "Reserved" },
- { 0x94, "Reserved" },
- { 0x95, "Reserved" },
- { 0x96, "Reserved" },
- { 0x97, "Reserved" },
- { 0x98, "Reserved" },
- { 0x99, "Reserved" },
- { 0x9a, "Reserved" },
- { 0x9b, "Reserved" },
- { 0x9c, "Reserved" },
- { 0x9d, "Reserved" },
- { 0x9e, "Reserved" },
-
- { 0x9F, "Unspecified TP-DCS error" },
- /* A0 - AF TP-Command Errors */
- { 0xA0, "Command cannot be actioned" },
- { 0xA1, "Command unsupported" },
- /* A2 - AE Reserved */
- { 0xa2, "Reserved" },
- { 0xa3, "Reserved" },
- { 0xa4, "Reserved" },
- { 0xa5, "Reserved" },
- { 0xa6, "Reserved" },
- { 0xa7, "Reserved" },
- { 0xa8, "Reserved" },
- { 0xa9, "Reserved" },
- { 0xaa, "Reserved" },
- { 0xab, "Reserved" },
- { 0xac, "Reserved" },
- { 0xad, "Reserved" },
- { 0xae, "Reserved" },
-
- { 0xAF, "Unspecified TP-Command error" },
- { 0xB0, "TPDU not supported" },
- /* B1 - BF Reserved */
- { 0xb1, "Reserved" },
- { 0xb2, "Reserved" },
- { 0xb3, "Reserved" },
- { 0xb4, "Reserved" },
- { 0xb5, "Reserved" },
- { 0xb6, "Reserved" },
- { 0xb7, "Reserved" },
- { 0xb8, "Reserved" },
- { 0xb9, "Reserved" },
- { 0xba, "Reserved" },
- { 0xbb, "Reserved" },
- { 0xbc, "Reserved" },
- { 0xbd, "Reserved" },
- { 0xbe, "Reserved" },
- { 0xbf, "Reserved" },
-
- { 0xC0, "SC busy" },
- { 0xC1, "No SC subscription" },
- { 0xC2, "SC system failure" },
- { 0xC3, "Invalid SME address" },
- { 0xC4, "Destination SME barred" },
- { 0xC5, "SM Rejected-Duplicate SM" },
- { 0xC6, "TP-VPF not supported" },
- { 0xC7, "TP-VP not supported" },
- /* C8 - CF Reserved */
- { 0xc8, "Reserved" },
- { 0xc9, "Reserved" },
- { 0xca, "Reserved" },
- { 0xcb, "Reserved" },
- { 0xcc, "Reserved" },
- { 0xcd, "Reserved" },
- { 0xce, "Reserved" },
- { 0xcf, "Reserved" },
-
- { 0xD0, "(U)SIM SMS storage full" },
- { 0xD1, "No SMS storage capability in (U)SIM" },
- { 0xD2, "Error in MS" },
- { 0xD3, "Memory Capacity Exceeded" },
- { 0xD4, "(U)SIM Application Toolkit Busy" },
- { 0xD5, "(U)SIM data download error" },
- /* D6 - DF Reserved */
- { 0xd6, "Reserved" },
- { 0xd8, "Reserved" },
- { 0xd9, "Reserved" },
- { 0xda, "Reserved" },
- { 0xdb, "Reserved" },
- { 0xdc, "Reserved" },
- { 0xdd, "Reserved" },
- { 0xde, "Reserved" },
- { 0xdf, "Reserved" },
+ /* 00 - 7F Reserved */
+ /* 80 - 8F TP-PID errors */
+ { 0x80, "Telematic interworking not supported" },
+ { 0x81, "Short message Type 0 not supported" },
+ { 0x82, "Cannot replace short message" },
+ /* 83 - 8E Reserved */
+ { 0x83, "Reserved" },
+ { 0x84, "Reserved" },
+ { 0x85, "Reserved" },
+ { 0x86, "Reserved" },
+ { 0x87, "Reserved" },
+ { 0x88, "Reserved" },
+ { 0x89, "Reserved" },
+ { 0x8a, "Reserved" },
+ { 0x8b, "Reserved" },
+ { 0x8c, "Reserved" },
+ { 0x8d, "Reserved" },
+ { 0x8e, "Reserved" },
+
+ { 0x8F, "Unspecified TP-PID error" },
+ /* 90 - 9F TP-DCS errors */
+ { 0x90, "Data coding scheme (alphabet) not supported" },
+ { 0x91, "Message class not supported" },
+ /* 92 - 9E Reserved */
+ { 0x92, "Reserved" },
+ { 0x93, "Reserved" },
+ { 0x94, "Reserved" },
+ { 0x95, "Reserved" },
+ { 0x96, "Reserved" },
+ { 0x97, "Reserved" },
+ { 0x98, "Reserved" },
+ { 0x99, "Reserved" },
+ { 0x9a, "Reserved" },
+ { 0x9b, "Reserved" },
+ { 0x9c, "Reserved" },
+ { 0x9d, "Reserved" },
+ { 0x9e, "Reserved" },
+
+ { 0x9F, "Unspecified TP-DCS error" },
+ /* A0 - AF TP-Command Errors */
+ { 0xA0, "Command cannot be actioned" },
+ { 0xA1, "Command unsupported" },
+ /* A2 - AE Reserved */
+ { 0xa2, "Reserved" },
+ { 0xa3, "Reserved" },
+ { 0xa4, "Reserved" },
+ { 0xa5, "Reserved" },
+ { 0xa6, "Reserved" },
+ { 0xa7, "Reserved" },
+ { 0xa8, "Reserved" },
+ { 0xa9, "Reserved" },
+ { 0xaa, "Reserved" },
+ { 0xab, "Reserved" },
+ { 0xac, "Reserved" },
+ { 0xad, "Reserved" },
+ { 0xae, "Reserved" },
+
+ { 0xAF, "Unspecified TP-Command error" },
+ { 0xB0, "TPDU not supported" },
+ /* B1 - BF Reserved */
+ { 0xb1, "Reserved" },
+ { 0xb2, "Reserved" },
+ { 0xb3, "Reserved" },
+ { 0xb4, "Reserved" },
+ { 0xb5, "Reserved" },
+ { 0xb6, "Reserved" },
+ { 0xb7, "Reserved" },
+ { 0xb8, "Reserved" },
+ { 0xb9, "Reserved" },
+ { 0xba, "Reserved" },
+ { 0xbb, "Reserved" },
+ { 0xbc, "Reserved" },
+ { 0xbd, "Reserved" },
+ { 0xbe, "Reserved" },
+ { 0xbf, "Reserved" },
+
+ { 0xC0, "SC busy" },
+ { 0xC1, "No SC subscription" },
+ { 0xC2, "SC system failure" },
+ { 0xC3, "Invalid SME address" },
+ { 0xC4, "Destination SME barred" },
+ { 0xC5, "SM Rejected-Duplicate SM" },
+ { 0xC6, "TP-VPF not supported" },
+ { 0xC7, "TP-VP not supported" },
+ /* C8 - CF Reserved */
+ { 0xc8, "Reserved" },
+ { 0xc9, "Reserved" },
+ { 0xca, "Reserved" },
+ { 0xcb, "Reserved" },
+ { 0xcc, "Reserved" },
+ { 0xcd, "Reserved" },
+ { 0xce, "Reserved" },
+ { 0xcf, "Reserved" },
+
+ { 0xD0, "(U)SIM SMS storage full" },
+ { 0xD1, "No SMS storage capability in (U)SIM" },
+ { 0xD2, "Error in MS" },
+ { 0xD3, "Memory Capacity Exceeded" },
+ { 0xD4, "(U)SIM Application Toolkit Busy" },
+ { 0xD5, "(U)SIM data download error" },
+ /* D6 - DF Reserved */
+ { 0xd6, "Reserved" },
+ { 0xd8, "Reserved" },
+ { 0xd9, "Reserved" },
+ { 0xda, "Reserved" },
+ { 0xdb, "Reserved" },
+ { 0xdc, "Reserved" },
+ { 0xdd, "Reserved" },
+ { 0xde, "Reserved" },
+ { 0xdf, "Reserved" },
/* E0 - FE Values specific to an application */
- { 0xe0, "Value specific to an application" },
- { 0xe1, "Value specific to an application" },
- { 0xe2, "Value specific to an application" },
- { 0xe3, "Value specific to an application" },
- { 0xe4, "Value specific to an application" },
- { 0xe5, "Value specific to an application" },
- { 0xe6, "Value specific to an application" },
- { 0xe7, "Value specific to an application" },
- { 0xe8, "Value specific to an application" },
- { 0xe9, "Value specific to an application" },
- { 0xea, "Value specific to an application" },
- { 0xeb, "Value specific to an application" },
- { 0xec, "Value specific to an application" },
- { 0xed, "Value specific to an application" },
- { 0xee, "Value specific to an application" },
- { 0xef, "Value specific to an application" },
- { 0xf0, "Value specific to an application" },
- { 0xf1, "Value specific to an application" },
- { 0xf2, "Value specific to an application" },
- { 0xf3, "Value specific to an application" },
- { 0xf4, "Value specific to an application" },
- { 0xf5, "Value specific to an application" },
- { 0xf6, "Value specific to an application" },
- { 0xf7, "Value specific to an application" },
- { 0xf8, "Value specific to an application" },
- { 0xf9, "Value specific to an application" },
- { 0xfa, "Value specific to an application" },
- { 0xfb, "Value specific to an application" },
- { 0xfc, "Value specific to an application" },
- { 0xfd, "Value specific to an application" },
- { 0xfe, "Value specific to an application" },
-
- { 0xFF, "Unspecified error cause" },
- { 0, NULL }
+ { 0xe0, "Value specific to an application" },
+ { 0xe1, "Value specific to an application" },
+ { 0xe2, "Value specific to an application" },
+ { 0xe3, "Value specific to an application" },
+ { 0xe4, "Value specific to an application" },
+ { 0xe5, "Value specific to an application" },
+ { 0xe6, "Value specific to an application" },
+ { 0xe7, "Value specific to an application" },
+ { 0xe8, "Value specific to an application" },
+ { 0xe9, "Value specific to an application" },
+ { 0xea, "Value specific to an application" },
+ { 0xeb, "Value specific to an application" },
+ { 0xec, "Value specific to an application" },
+ { 0xed, "Value specific to an application" },
+ { 0xee, "Value specific to an application" },
+ { 0xef, "Value specific to an application" },
+ { 0xf0, "Value specific to an application" },
+ { 0xf1, "Value specific to an application" },
+ { 0xf2, "Value specific to an application" },
+ { 0xf3, "Value specific to an application" },
+ { 0xf4, "Value specific to an application" },
+ { 0xf5, "Value specific to an application" },
+ { 0xf6, "Value specific to an application" },
+ { 0xf7, "Value specific to an application" },
+ { 0xf8, "Value specific to an application" },
+ { 0xf9, "Value specific to an application" },
+ { 0xfa, "Value specific to an application" },
+ { 0xfb, "Value specific to an application" },
+ { 0xfc, "Value specific to an application" },
+ { 0xfd, "Value specific to an application" },
+ { 0xfe, "Value specific to an application" },
+
+ { 0xFF, "Unspecified error cause" },
+ { 0, NULL }
};
static value_string_ext gsm_sms_tp_failure_cause_values_ext = VALUE_STRING_EXT_INIT(gsm_sms_tp_failure_cause_values);
static void
dis_field_fcs(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 oct _U_)
{
- proto_tree_add_item(tree, hf_gsm_sms_tp_fail_cause, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gsm_sms_tp_fail_cause, tvb, offset, 1, ENC_BIG_ENDIAN);
}
/* 9.2.3.23 */
@@ -1600,12 +1599,12 @@ dis_field_fcs(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 oct _U_)
SMS_SHIFTMASK(oct & m_bitmask, m_bitmask, m_udhi); \
other_decode_bitfield_value(bigbuf, oct, m_bitmask, 8); \
proto_tree_add_text(m_tree, tvb, \
- m_offset, 1, \
- "%s : TP-User-Data-Header-Indicator: %s short message", \
- bigbuf, \
- m_udhi ? \
- "The beginning of the TP-UD field contains a Header in addition to the" : \
- "The TP-UD field contains only the"); \
+ m_offset, 1, \
+ "%s : TP-User-Data-Header-Indicator: %s short message", \
+ bigbuf, \
+ m_udhi ? \
+ "The beginning of the TP-UD field contains a Header in addition to the" : \
+ "The TP-UD field contains only the"); \
}
/*
@@ -1617,7 +1616,7 @@ dis_field_fcs(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 oct _U_)
int
gsm_sms_char_7bit_unpack(unsigned int offset, unsigned int in_length, unsigned int out_length,
- const guint8 *input, unsigned char *output)
+ const guint8 *input, unsigned char *output)
{
unsigned char *out_num = output; /* Current pointer to the output buffer */
const guint8 *in_num = input; /* Current pointer to the input buffer */
@@ -1628,30 +1627,30 @@ gsm_sms_char_7bit_unpack(unsigned int offset, unsigned int in_length, unsigned i
while ((unsigned int)(in_num - input) < in_length)
{
- *out_num = ((*in_num & GN_BYTE_MASK) << (7 - bits)) | rest;
- rest = *in_num >> bits;
+ *out_num = ((*in_num & GN_BYTE_MASK) << (7 - bits)) | rest;
+ rest = *in_num >> bits;
- /* If we don't start from 0th bit, we shouldn't go to the
- next char. Under *out_num we have now 0 and under Rest -
- _first_ part of the char. */
- if ((in_num != input) || (bits == 7)) out_num++;
- in_num++;
+ /* If we don't start from 0th bit, we shouldn't go to the
+ next char. Under *out_num we have now 0 and under Rest -
+ _first_ part of the char. */
+ if ((in_num != input) || (bits == 7)) out_num++;
+ in_num++;
- if ((unsigned int)(out_num - output) >= out_length) break;
+ if ((unsigned int)(out_num - output) >= out_length) break;
- /* After reading 7 octets we have read 7 full characters but
- we have 7 bits as well. This is the next character */
- if (bits == 1)
- {
- *out_num = rest;
- out_num++;
- bits = 7;
- rest = 0x00;
- }
- else
- {
- bits--;
- }
+ /* After reading 7 octets we have read 7 full characters but
+ we have 7 bits as well. This is the next character */
+ if (bits == 1)
+ {
+ *out_num = rest;
+ out_num++;
+ bits = 7;
+ rest = 0x00;
+ }
+ else
+ {
+ bits--;
+ }
}
return (int)(out_num - output);
@@ -1669,22 +1668,22 @@ static gunichar gsm_default_alphabet[GN_CHAR_ALPHABET_SIZE] = {
latin1 charset, so we cannot reproduce on the screen, however they are
greek symbol not present even on my Nokia */
- '@', 0xa3, '$' , 0xa5, 0xe8, 0xe9, 0xf9, 0xec,
- 0xf2, 0xc7, '\n', 0xd8, 0xf8, '\r', 0xc5, 0xe5,
- 0x394, '_', 0x3a6,0x393,0x39b,0x3a9,0x3a0,0x3a8,
- 0x3a3,0x398,0x39e, 0xa0, 0xc6, 0xe6, 0xdf, 0xc9,
- ' ', '!', '\"', '#', 0xa4, '%', '&', '\'',
- '(', ')', '*', '+', ',', '-', '.', '/',
- '0', '1', '2', '3', '4', '5', '6', '7',
- '8', '9', ':', ';', '<', '=', '>', '?',
- 0xa1, 'A', 'B', 'C', 'D', 'E', 'F', 'G',
- 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
- 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
- 'X', 'Y', 'Z', 0xc4, 0xd6, 0xd1, 0xdc, 0xa7,
- 0xbf, 'a', 'b', 'c', 'd', 'e', 'f', 'g',
- 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
- 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
- 'x', 'y', 'z', 0xe4, 0xf6, 0xf1, 0xfc, 0xe0
+ '@', 0xa3, '$', 0xa5, 0xe8, 0xe9, 0xf9, 0xec,
+ 0xf2, 0xc7, '\n', 0xd8, 0xf8, '\r', 0xc5, 0xe5,
+ 0x394, '_', 0x3a6, 0x393, 0x39b, 0x3a9, 0x3a0, 0x3a8,
+ 0x3a3, 0x398, 0x39e, 0xa0, 0xc6, 0xe6, 0xdf, 0xc9,
+ ' ', '!', '\"', '#', 0xa4, '%', '&', '\'',
+ '(', ')', '*', '+', ',', '-', '.', '/',
+ '0', '1', '2', '3', '4', '5', '6', '7',
+ '8', '9', ':', ';', '<', '=', '>', '?',
+ 0xa1, 'A', 'B', 'C', 'D', 'E', 'F', 'G',
+ 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
+ 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
+ 'X', 'Y', 'Z', 0xc4, 0xd6, 0xd1, 0xdc, 0xa7,
+ 0xbf, 'a', 'b', 'c', 'd', 'e', 'f', 'g',
+ 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
+ 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
+ 'x', 'y', 'z', 0xe4, 0xf6, 0xf1, 0xfc, 0xe0
};
static gboolean
@@ -1717,11 +1716,11 @@ char_def_alphabet_decode(unsigned char value)
{
if (value < GN_CHAR_ALPHABET_SIZE)
{
- return gsm_default_alphabet[value];
+ return gsm_default_alphabet[value];
}
else
{
- return '?';
+ return '?';
}
}
@@ -1735,15 +1734,15 @@ gsm_sms_chars_to_utf8(const unsigned char* src, int len)
/* Scan the input string to see how long the output string will be */
for (outlen = 0, j = 0; j < len; j++)
{
- if (char_is_escape(src[j])) {
- j++;
- if (j == len)
- c = '?'; /* escape with nothing following it - error */
- else
- c = char_def_alphabet_ext_decode(src[j]);
- }
- else
- c = char_def_alphabet_decode(src[j]);
+ if (char_is_escape(src[j])) {
+ j++;
+ if (j == len)
+ c = '?'; /* escape with nothing following it - error */
+ else
+ c = char_def_alphabet_ext_decode(src[j]);
+ }
+ else
+ c = char_def_alphabet_decode(src[j]);
outlen += g_unichar_to_utf8(c,NULL);
}
@@ -1751,15 +1750,15 @@ gsm_sms_chars_to_utf8(const unsigned char* src, int len)
outbuf = ep_alloc(outlen + 1);
for (i = 0, j = 0; j < len; j++)
{
- if (char_is_escape(src[j])) {
- j++;
- if (j == len)
- c = '?'; /* escape with nothing following it - error */
- else
- c = char_def_alphabet_ext_decode(src[j]);
- }
- else
- c = char_def_alphabet_decode(src[j]);
+ if (char_is_escape(src[j])) {
+ j++;
+ if (j == len)
+ c = '?'; /* escape with nothing following it - error */
+ else
+ c = char_def_alphabet_ext_decode(src[j]);
+ }
+ else
+ c = char_def_alphabet_decode(src[j]);
i += g_unichar_to_utf8(c,&(outbuf[i]));
}
outbuf[i] = '\0';
@@ -1774,7 +1773,7 @@ gsm_sms_chars_to_utf8(const unsigned char* src, int len)
static void
dis_iei_csm8(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
{
- guint8 oct;
+ guint8 oct;
EXACT_DATA_CHECK(length, 3);
oct = tvb_get_guint8(tvb, offset);
@@ -1804,8 +1803,8 @@ dis_iei_csm8(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
static void
dis_iei_apa_8bit(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
{
- const gchar *str = NULL;
- guint8 oct;
+ const gchar *str = NULL;
+ guint8 oct;
EXACT_DATA_CHECK(length, 2);
@@ -1814,44 +1813,44 @@ dis_iei_apa_8bit(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
g_port_dst = oct;
if (oct < 240)
{
- str = "Reserved";
+ str = "Reserved";
}
else
{
- str = "Available for allocation by applications";
+ str = "Available for allocation by applications";
}
proto_tree_add_text(tree,
- tvb, offset, 1,
- "Destination port: %d, %s",
- oct,
- str);
+ tvb, offset, 1,
+ "Destination port: %d, %s",
+ oct,
+ str);
offset++;
oct = tvb_get_guint8(tvb, offset);
g_port_src = oct;
if (oct < 240)
{
- str = "Reserved";
+ str = "Reserved";
}
else
{
- str = "Available for allocation by applications";
+ str = "Available for allocation by applications";
}
proto_tree_add_text(tree,
- tvb, offset, 1,
- "Originator port: %d, %s",
- oct,
- str);
+ tvb, offset, 1,
+ "Originator port: %d, %s",
+ oct,
+ str);
}
/* 9.2.3.24.4 */
static void
dis_iei_apa_16bit(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
{
- const gchar *str = NULL;
- guint32 value;
+ const gchar *str = NULL;
+ guint32 value;
EXACT_DATA_CHECK(length, 4);
@@ -1860,53 +1859,53 @@ dis_iei_apa_16bit(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length
g_port_dst = value;
if (value < 16000)
{
- str = "As allocated by IANA (http://www.IANA.com/)";
+ str = "As allocated by IANA (http://www.IANA.com/)";
}
else if (value < 17000)
{
- str = "Available for allocation by applications";
+ str = "Available for allocation by applications";
}
else
{
- str = "Reserved";
+ str = "Reserved";
}
proto_tree_add_text(tree,
- tvb, offset, 2,
- "Destination port: %d, %s",
- value,
- str);
+ tvb, offset, 2,
+ "Destination port: %d, %s",
+ value,
+ str);
offset += 2;
value = tvb_get_ntohs(tvb, offset);
g_port_src = value;
if (value < 16000)
{
- str = "As allocated by IANA (http://www.IANA.com/)";
+ str = "As allocated by IANA (http://www.IANA.com/)";
}
else if (value < 17000)
{
- str = "Available for allocation by applications";
+ str = "Available for allocation by applications";
}
else
{
- str = "Reserved";
+ str = "Reserved";
}
proto_tree_add_text(tree,
- tvb, offset, 2,
- "Originator port: %d, %s",
- value,
- str);
+ tvb, offset, 2,
+ "Originator port: %d, %s",
+ value,
+ str);
- g_is_wsp = 1;
+ g_is_wsp = 1;
}
/* 9.2.3.24.5 */
static void
dis_iei_scp(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
{
- guint8 oct;
+ guint8 oct;
EXACT_DATA_CHECK(length, 1);
@@ -1999,7 +1998,7 @@ dis_iei_scp(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
static void
dis_iei_udh_si(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
{
- guint8 oct;
+ guint8 oct;
EXACT_DATA_CHECK(length, 1);
@@ -2033,8 +2032,8 @@ dis_iei_udh_si(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
static void
dis_iei_csm16(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
{
- guint8 oct;
- guint16 oct_ref;
+ guint8 oct;
+ guint16 oct_ref;
EXACT_DATA_CHECK(length, 4);
oct_ref = tvb_get_ntohs(tvb, offset);
@@ -2058,23 +2057,23 @@ dis_iei_csm16(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
}
static const value_string text_color_values[] = {
- { 0x00, "Black" },
- { 0x01, "Dark Grey" },
- { 0x02, "Dark Red" },
- { 0x03, "Dark Yellow" },
- { 0x04, "Dark Green" },
- { 0x05, "Dark Cyan" },
- { 0x06, "Dark Blue" },
- { 0x07, "Dark Magenta" },
- { 0x08, "Grey" },
- { 0x09, "White" },
- { 0x0A, "Bright Red" },
- { 0x0B, "Bright Yellow" },
- { 0x0C, "Bright Green" },
- { 0x0D, "Bright Cyan" },
- { 0x0E, "Bright Blue" },
- { 0x0F, "Bright Magenta" },
- { 0, NULL }
+ { 0x00, "Black" },
+ { 0x01, "Dark Grey" },
+ { 0x02, "Dark Red" },
+ { 0x03, "Dark Yellow" },
+ { 0x04, "Dark Green" },
+ { 0x05, "Dark Cyan" },
+ { 0x06, "Dark Blue" },
+ { 0x07, "Dark Magenta" },
+ { 0x08, "Grey" },
+ { 0x09, "White" },
+ { 0x0A, "Bright Red" },
+ { 0x0B, "Bright Yellow" },
+ { 0x0C, "Bright Green" },
+ { 0x0D, "Bright Cyan" },
+ { 0x0E, "Bright Blue" },
+ { 0x0F, "Bright Magenta" },
+ { 0, NULL }
};
/* 9.2.3.24.10.1.1 */
@@ -2082,11 +2081,11 @@ static void
dis_iei_tf(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
{
const gchar *str = NULL;
- guint8 oct;
- proto_item *item;
- proto_item *item_colour;
- proto_tree *subtree = NULL;
- proto_tree *subtree_colour = NULL;
+ guint8 oct;
+ proto_item *item;
+ proto_item *item_colour;
+ proto_tree *subtree = NULL;
+ proto_tree *subtree_colour = NULL;
EXACT_DATA_CHECK(length, 4);
@@ -2197,7 +2196,7 @@ dis_iei_tf(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
static void
dis_iei_ps(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
{
- guint8 oct;
+ guint8 oct;
EXACT_DATA_CHECK(length, 2);
oct = tvb_get_guint8(tvb, offset);
@@ -2220,7 +2219,7 @@ dis_iei_ps(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
static void
dis_iei_uds(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
{
- guint8 oct;
+ guint8 oct;
SHORT_DATA_CHECK(length, 2);
oct = tvb_get_guint8(tvb, offset);
@@ -2231,8 +2230,6 @@ dis_iei_uds(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
oct);
offset++;
- oct = tvb_get_guint8(tvb, offset);
-
proto_tree_add_text(tree,
tvb, offset, length - 1,
"User Defined Sound ");
@@ -2243,7 +2240,7 @@ dis_iei_uds(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
static void
dis_iei_pa(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
{
- guint8 oct;
+ guint8 oct;
EXACT_DATA_CHECK(length, 2);
oct = tvb_get_guint8(tvb, offset);
@@ -2267,7 +2264,7 @@ dis_iei_pa(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
static void
dis_iei_la(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
{
- guint8 oct;
+ guint8 oct;
SHORT_DATA_CHECK(length, 2);
oct = tvb_get_guint8(tvb, offset);
@@ -2278,8 +2275,6 @@ dis_iei_la(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
oct);
offset++;
- oct = tvb_get_guint8(tvb, offset);
-
proto_tree_add_text(tree,
tvb, offset, length - 1,
"Large Animation ");
@@ -2289,7 +2284,7 @@ dis_iei_la(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
static void
dis_iei_sa(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
{
- guint8 oct;
+ guint8 oct;
SHORT_DATA_CHECK(length, 2);
oct = tvb_get_guint8(tvb, offset);
@@ -2300,8 +2295,6 @@ dis_iei_sa(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
oct);
offset++;
- oct = tvb_get_guint8(tvb, offset);
-
proto_tree_add_text(tree,
tvb, offset, length - 1,
"Small Animation ");
@@ -2312,7 +2305,7 @@ dis_iei_sa(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
static void
dis_iei_lp(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
{
- guint8 oct;
+ guint8 oct;
SHORT_DATA_CHECK(length, 2);
oct = tvb_get_guint8(tvb, offset);
@@ -2323,8 +2316,6 @@ dis_iei_lp(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
oct);
offset++;
- oct = tvb_get_guint8(tvb, offset);
-
proto_tree_add_text(tree,
tvb, offset, length - 1,
"Large Picture ");
@@ -2334,7 +2325,7 @@ dis_iei_lp(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
static void
dis_iei_sp(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
{
- guint8 oct;
+ guint8 oct;
SHORT_DATA_CHECK(length, 2);
oct = tvb_get_guint8(tvb, offset);
@@ -2345,8 +2336,6 @@ dis_iei_sp(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
oct);
offset++;
- oct = tvb_get_guint8(tvb, offset);
-
proto_tree_add_text(tree,
tvb, offset, length - 1,
"Small Picture ");
@@ -2357,7 +2346,7 @@ dis_iei_sp(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
static void
dis_iei_vp(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
{
- guint8 oct;
+ guint8 oct;
SHORT_DATA_CHECK(length, 4);
oct = tvb_get_guint8(tvb, offset);
@@ -2382,8 +2371,6 @@ dis_iei_vp(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
oct);
offset++;
-
- oct = tvb_get_guint8(tvb, offset);
proto_tree_add_text(tree,
tvb, offset, length - 3,
"Variable Picture ");
@@ -2393,7 +2380,7 @@ dis_iei_vp(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
static void
dis_iei_upi(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
{
- guint8 oct;
+ guint8 oct;
EXACT_DATA_CHECK(length, 1);
oct = tvb_get_guint8(tvb, offset);
@@ -2406,28 +2393,77 @@ dis_iei_upi(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
}
-/* */
+/*
+ * 9.2.3.24 TP-User Data (TP-UD)
+ * Information Element Identifier octet
+ */
+#if 0
+/* TS 123 040 V9.3.0 (2010-10) */
+static const value_string gsm_sms_tp_ud_ie_id_vals[] = {
+ { 0x00, "Concatenated short messages, 8-bit reference number (SMS Control)" },
+ { 0x01, "Special SMS Message Indication (SMS Control)" },
+ { 0x02, "Reserved" },
+ { 0x03, "Value not used to avoid misinterpretation as <LF> character" },
+ { 0x04, "Application port addressing scheme, 8 bit address (SMS Control)" },
+ { 0x05, "Application port addressing scheme, 16 bit address (SMS Control)" },
+ { 0x06, "SMSC Control Parameters (SMS Control)" },
+ { 0x07, "UDH Source Indicator (SMS Control)" },
+ { 0x08, "Concatenated short message, 16-bit reference number (SMS Control)" },
+ { 0x09, "Wireless Control Message Protocol (SMS Control)" },
+ { 0x0A, "Text Formatting (EMS Control)" },
+ { 0x0B, "Predefined Sound (EMS Content)" },
+ { 0x0C, "User Defined Sound (iMelody max 128 bytes) (EMS Content)" },
+ { 0x0D, "Predefined Animation (EMS Content)" },
+ { 0x0E, "Large Animation (16*16 times 4 = 32*4 =128 bytes) (EMS Content)" },
+ { 0x0F, "Small Animation (8*8 times 4 = 8*4 =32 bytes) (EMS Content)" },
+ { 0x10, "Large Picture (32*32 = 128 bytes) (EMS Content)" },
+ { 0x11, "Small Picture (16*16 = 32 bytes) (EMS Content)" },
+ { 0x12, "Variable Picture (EMS Content)" },
+ { 0x13, "User prompt indicator (EMS Control)" },
+ { 0x14, "Extended Object (EMS Content)" },
+ { 0x15, "Reused Extended Object (EMS Control)" },
+ { 0x16, "Compression Control (EMS Control)" },
+ { 0x17, "Object Distribution Indicator (EMS Control)" },
+ { 0x18, "Standard WVG object (EMS Content)" },
+ { 0x19, "Character Size WVG object (EMS Content)" },
+ { 0x1A, "Extended Object Data Request Command (EMS Control)" },
+ /*1B-1F Reserved for future EMS features (see subclause 3.10) */
+ { 0x20, "RFC 822 E-Mail Header (SMS Control)" },
+ { 0x21, "Hyperlink format element (SMS Control)" },s
+ { 0x22, "Reply Address Element (SMS Control)" },
+ { 0x23, "Enhanced Voice Mail Information (SMS Control)" },
+ { 0x24, "National Language Single Shift (SMS Control)" },
+ { 0x25, "National Language Locking Shift (SMS Control)" },
+ /*26-6F Reserved for future use */
+ /*70-7F (U)SIM Toolkit Security Headers (SMS Control) */
+ /*80-9F SME to SME specific use (SMS Control) */
+ /*A0-BF Reserved for future use */
+ /*C0-DF SC specific use (SMS Control) */
+ /*E0-FF Reserved for future use */
+ { 0, NULL },
+};
+#endif
static void
dis_field_ud_iei(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
{
void (*iei_fcn)(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length);
- guint8 oct;
- proto_item *item;
- proto_tree *subtree = NULL;
- const gchar *str = NULL;
- guint8 iei_len;
+ guint8 oct;
+ proto_item *item;
+ proto_tree *subtree = NULL;
+ const gchar *str = NULL;
+ guint8 iei_len;
while (length >= 2)
{
- iei_fcn = NULL;
+ iei_fcn = NULL;
- oct = tvb_get_guint8(tvb, offset);
+ oct = tvb_get_guint8(tvb, offset);
- switch (oct)
- {
+ switch (oct)
+ {
case 0x00: str = "Concatenated short messages, 8-bit reference number (SMS Control)"; iei_fcn = dis_iei_csm8; break;
case 0x01: str = "Special SMS Message Indication (SMS Control)"; break;
case 0x02: str = "Reserved N/A"; break;
@@ -2438,7 +2474,7 @@ dis_field_ud_iei(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
case 0x07: str = "UDH Source Indicator (SMS Control)"; iei_fcn = dis_iei_udh_si; break;
case 0x08: str = "Concatenated short message, 16-bit reference number (SMS Control)"; iei_fcn = dis_iei_csm16; break;
case 0x09: str = "Wireless Control Message Protocol (SMS Control)"; break;
- case 0x0A: str = "Text Formatting (EMS Control)"; iei_fcn = dis_iei_tf;
+ case 0x0A: str = "Text Formatting (EMS Control)"; iei_fcn = dis_iei_tf;break;
case 0x0B: str = "Predefined Sound (EMS Content)"; iei_fcn = dis_iei_ps;break;
case 0x0C: str = "User Defined Sound (iMelody max 128 bytes) (EMS Content)"; iei_fcn = dis_iei_uds;break;
case 0x0D: str = "Predefined Animation (EMS Content)"; iei_fcn = dis_iei_pa;break;
@@ -2493,48 +2529,48 @@ dis_field_ud_iei(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 length)
{
str = "Reserved for future use N/A"; break;
}
- }
+ }
- iei_len = tvb_get_guint8(tvb, offset + 1);
+ iei_len = tvb_get_guint8(tvb, offset + 1);
- item =
- proto_tree_add_text(tree,
+ item =
+ proto_tree_add_text(tree,
tvb, offset, iei_len + 2,
"IE: %s",
str);
- subtree = proto_item_add_subtree(item, ett_udh_ieis[oct]);
+ subtree = proto_item_add_subtree(item, ett_udh_ieis[oct]);
- proto_tree_add_text(subtree,
+ proto_tree_add_text(subtree,
tvb, offset, 1,
- "Information Element Identifier: %d",
+ "Information Element Identifier: 0x%02X",
oct);
- offset++;
+ offset++;
- proto_tree_add_text(subtree,
+ proto_tree_add_text(subtree,
tvb, offset, 1,
"Length: %d",
iei_len);
- offset++;
+ offset++;
- if (iei_len > 0)
- {
- if (iei_fcn == NULL)
- {
- proto_tree_add_text(subtree,
+ if (iei_len > 0)
+ {
+ if (iei_fcn == NULL)
+ {
+ proto_tree_add_text(subtree,
tvb, offset, iei_len,
"IE Data");
- }
- else
- {
- iei_fcn(tvb, subtree, offset, iei_len);
- }
- }
+ }
+ else
+ {
+ iei_fcn(tvb, subtree, offset, iei_len);
+ }
+ }
- length -= 2 + iei_len;
- offset += iei_len;
+ length -= 2 + iei_len;
+ offset += iei_len;
}
}
@@ -2545,23 +2581,23 @@ static void
dis_field_ud(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint32 length, gboolean udhi, guint8 udl,
gboolean seven_bit, gboolean eight_bit, gboolean ucs2, gboolean compressed)
{
- static guint8 fill_bits_mask[7] =
- { 0x0, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f };
- proto_item *item;
- proto_item *udh_item;
- proto_tree *subtree = NULL;
- proto_tree *udh_subtree = NULL;
- tvbuff_t *sm_tvb = NULL;
- fragment_data *fd_sm = NULL;
- guint8 oct;
- guint fill_bits;
- guint32 out_len , total_sms_len , len_sms , length_ucs2 , i;
- char *ustr;
- proto_item *ucs2_item;
- gchar *utf8_text = NULL;
- gchar save_byte = 0 , save_byte2 = 0;
- GIConv cd;
- GError *l_conv_error = NULL;
+ static guint8 fill_bits_mask[7] =
+ { 0x0, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f };
+ proto_item *item;
+ proto_item *udh_item;
+ proto_tree *subtree = NULL;
+ proto_tree *udh_subtree = NULL;
+ tvbuff_t *sm_tvb = NULL;
+ fragment_data *fd_sm = NULL;
+ guint8 oct;
+ guint fill_bits;
+ guint32 out_len, total_sms_len, len_sms, length_ucs2, i;
+ char *ustr;
+ proto_item *ucs2_item;
+ gchar *utf8_text = NULL;
+ gchar save_byte = 0, save_byte2 = 0;
+ GIConv cd;
+ GError *l_conv_error = NULL;
gboolean reassembled = FALSE;
guint32 reassembled_in = 0;
@@ -2569,10 +2605,12 @@ dis_field_ud(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint32 length, gb
gboolean save_fragmented = FALSE, try_gsm_sms_ud_reassemble = FALSE;
guint32 num_labels;
+ sm_fragment_params *p_frag_params;
+
fill_bits = 0;
item =
- proto_tree_add_text(tree, tvb,
+ proto_tree_add_text(tree, tvb,
offset, length,
"TP-User-Data");
subtree = proto_item_add_subtree(item, ett_ud);
@@ -2650,7 +2688,7 @@ dis_field_ud(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint32 length, gb
"Reassembled Short Message", fd_sm, &sm_frag_items,
NULL, tree);
- if(reassembled && g_pinfo->fd->num == reassembled_in)
+ if(reassembled && g_pinfo->fd->num == reassembled_in)
{
/* Reassembled */
col_append_str (g_pinfo->cinfo, COL_INFO,
@@ -2662,6 +2700,14 @@ dis_field_ud(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint32 length, gb
col_append_fstr (g_pinfo->cinfo, COL_INFO,
" (Short Message fragment %u of %u)", g_frag, g_frags);
}
+
+ /* Store udl and length for later decoding of reassembled SMS */
+ p_frag_params = se_alloc0(sizeof(sm_fragment_params));
+ p_frag_params->udl = udl;
+ p_frag_params->length = length;
+ g_hash_table_insert(g_sm_fragment_params_table,
+ GUINT_TO_POINTER((guint)((g_sm_id<<16)|(g_frag-1))),
+ p_frag_params);
} /* Else: not fragmented */
if (! sm_tvb) /* One single Short Message, or not reassembled */
sm_tvb = tvb_new_subset_remaining (tvb, offset);
@@ -2672,138 +2718,132 @@ dis_field_ud(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint32 length, gb
}
else
{
- if (seven_bit)
- {
- if(!(reassembled && g_pinfo->fd->num == reassembled_in))
- {
- /* Show unassembled SMS */
- out_len =
- gsm_sms_char_7bit_unpack(fill_bits, length , SMS_MAX_MESSAGE_SIZE,
- tvb_get_ptr(tvb , offset , length) , messagebuf);
- messagebuf[out_len] = '\0';
- proto_tree_add_string(subtree, hf_gsm_sms_text, tvb, offset,
- length,
- gsm_sms_chars_to_utf8(messagebuf, out_len));
- }
- else
- {
- /* Show reassembled SMS. We show each fragment separately
- * so that the text doesn't get truncated when we add it to
- * the tree.
- */
- out_len = 0;
-
- total_sms_len = tvb_length(sm_tvb);
- for(i = 0 ; i < g_frags; i++)
- {
- /* maximum len msg in 7 bit with csm8 header*/
- if(total_sms_len > MAX_SMS_FRAG_LEN)
- {
- total_sms_len -= MAX_SMS_FRAG_LEN;
- len_sms = MAX_SMS_FRAG_LEN;
- }
- else
- len_sms = total_sms_len;
-
- out_len =
- gsm_sms_char_7bit_unpack(fill_bits, len_sms, SMS_MAX_MESSAGE_SIZE,
- tvb_get_ptr(sm_tvb, i * MAX_SMS_FRAG_LEN, len_sms),
- messagebuf);
-
- messagebuf[out_len] = '\0';
- proto_tree_add_string(subtree, hf_gsm_sms_text, sm_tvb,
- i * MAX_SMS_FRAG_LEN, len_sms,
- gsm_sms_chars_to_utf8(messagebuf, out_len));
- }
- }
- }
- else if (eight_bit)
- {
- /*proto_tree_add_text(subtree, tvb , offset , length, "%s",
- tvb_format_text(tvb, offset, length)); */
- if (! dissector_try_uint(gsm_sms_dissector_tbl, g_port_src, sm_tvb, g_pinfo, subtree))
- {
- if (! dissector_try_uint(gsm_sms_dissector_tbl, g_port_dst,sm_tvb, g_pinfo, subtree))
- {
- if (subtree)
- { /* Only display if needed */
- proto_tree_add_text (subtree, sm_tvb, 0, -1,
- "Short Message body");
- }
- }
- }
- }
- else if (ucs2)
- {
- if ((cd = g_iconv_open("UTF-8","UCS-2BE")) != (GIConv)-1)
- {
- guint8 rep_len = tvb_reported_length(sm_tvb);
-
- if(!(reassembled && g_pinfo->fd->num == reassembled_in))
- {
- /* Show unreassembled SMS */
- utf8_text = g_convert_with_iconv(tvb_get_ptr(sm_tvb, 0, rep_len), rep_len , cd , NULL , NULL , &l_conv_error);
- if(!l_conv_error) {
- /* XXX - using proto_tree_add_string() doesn't work */
- ucs2_item = proto_tree_add_string_format_value(subtree, hf_gsm_sms_text, tvb,
- offset, length, utf8_text, "%s", utf8_text);
- } else {
- ucs2_item = proto_tree_add_text(subtree, tvb, offset, length, "Failed to decode UCS2!");
- }
- PROTO_ITEM_SET_GENERATED(ucs2_item);
- } else {
- /* Show reassembled SMS. We show each fragment separately
- * so that the text doesn't get truncated when we add it to
- * the tree.
- */
- utf8_text = g_convert_with_iconv(tvb_get_ptr(sm_tvb, 0, rep_len), rep_len , cd , NULL , NULL , &l_conv_error);
- if(!l_conv_error)
- {
- len_sms = (int)strlen(utf8_text);
- num_labels = len_sms / MAX_SMS_FRAG_LEN;
- num_labels += len_sms % MAX_SMS_FRAG_LEN ? 1 : 0;
- for(i = 0; i < num_labels;i++) {
- if(i * MAX_SMS_FRAG_LEN < len_sms) {
- /* set '\0' to byte number 134 text_node MAX size*/
- save_byte = utf8_text[i * MAX_SMS_FRAG_LEN];
- save_byte2 = utf8_text[i * MAX_SMS_FRAG_LEN + 1];
- if(i > 0)
- {
- utf8_text[i * MAX_SMS_FRAG_LEN] = '\0';
- utf8_text[i * MAX_SMS_FRAG_LEN + 1] = '\0';
- }
-
- length_ucs2 = MAX_SMS_FRAG_LEN;
- } else
- length_ucs2 = len_sms % MAX_SMS_FRAG_LEN;
-
- /* XXX - using proto_tree_add_string() doesn't work */
- ucs2_item = proto_tree_add_string_format_value(subtree, hf_gsm_sms_text, sm_tvb,
- i * MAX_SMS_FRAG_LEN, length_ucs2,
- &utf8_text[i * MAX_SMS_FRAG_LEN],
- "%s", &utf8_text[i * MAX_SMS_FRAG_LEN]);
+ if (seven_bit)
+ {
+ if(!(reassembled && g_pinfo->fd->num == reassembled_in))
+ {
+ /* Show unassembled SMS */
+ out_len =
+ gsm_sms_char_7bit_unpack(fill_bits, length ,
+ (udl > SMS_MAX_MESSAGE_SIZE ? SMS_MAX_MESSAGE_SIZE : udl),
+ tvb_get_ptr(tvb , offset , length) , messagebuf);
+ messagebuf[out_len] = '\0';
+ proto_tree_add_unicode_string(subtree, hf_gsm_sms_text, tvb, offset,
+ length,
+ gsm_sms_chars_to_utf8(messagebuf, out_len));
+ }
+ else
+ {
+ /* Show reassembled SMS. We show each fragment separately
+ * so that the text doesn't get truncated when we add it to
+ * the tree.
+ */
+ total_sms_len = 0;
+ for(i = 0 ; i < g_frags; i++)
+ {
+ p_frag_params = (sm_fragment_params*)g_hash_table_lookup(g_sm_fragment_params_table,
+ GUINT_TO_POINTER((guint)((g_sm_id<<16)|i)));
+
+ if (p_frag_params) {
+ out_len =
+ gsm_sms_char_7bit_unpack(fill_bits, p_frag_params->length,
+ (p_frag_params->udl > SMS_MAX_MESSAGE_SIZE ? SMS_MAX_MESSAGE_SIZE : p_frag_params->udl),
+ tvb_get_ptr(sm_tvb, total_sms_len, p_frag_params->length), messagebuf);
+
+ messagebuf[out_len] = '\0';
+ proto_tree_add_unicode_string(subtree, hf_gsm_sms_text, sm_tvb,
+ total_sms_len, p_frag_params->length,
+ gsm_sms_chars_to_utf8(messagebuf, out_len));
+
+ total_sms_len += p_frag_params->length;
+ }
+ }
+ }
+ }
+ else if (eight_bit)
+ {
+ /*proto_tree_add_text(subtree, tvb , offset , length, "%s",
+ tvb_format_text(tvb, offset, length)); */
+ if (! dissector_try_uint(gsm_sms_dissector_tbl, g_port_src, sm_tvb, g_pinfo, subtree))
+ {
+ if (! dissector_try_uint(gsm_sms_dissector_tbl, g_port_dst,sm_tvb, g_pinfo, subtree))
+ {
+ if (subtree)
+ { /* Only display if needed */
+ proto_tree_add_text (subtree, sm_tvb, 0, -1,
+ "Short Message body");
+ }
+ }
+ }
+ }
+ else if (ucs2)
+ {
+ /* XXX, use tvb_get_ephemeral_unicode_string(.., ENC_BIG_ENDIAN); */
+ if ((cd = g_iconv_open("UTF-8","UCS-2BE")) != (GIConv)-1)
+ {
+ guint8 rep_len = tvb_reported_length(sm_tvb);
+
+ if(!(reassembled && g_pinfo->fd->num == reassembled_in))
+ {
+ /* Show unreassembled SMS */
+ utf8_text = g_convert_with_iconv(tvb_get_ptr(sm_tvb, 0, rep_len), rep_len , cd , NULL , NULL , &l_conv_error);
+ if(!l_conv_error) {
+ ucs2_item = proto_tree_add_unicode_string(subtree, hf_gsm_sms_text, tvb,
+ offset, length, utf8_text);
+ } else {
+ ucs2_item = proto_tree_add_text(subtree, tvb, offset, length, "Failed to decode UCS2!");
+ }
+ PROTO_ITEM_SET_GENERATED(ucs2_item);
+ } else {
+ /* Show reassembled SMS. We show each fragment separately
+ * so that the text doesn't get truncated when we add it to
+ * the tree.
+ */
+ utf8_text = g_convert_with_iconv(tvb_get_ptr(sm_tvb, 0, rep_len), rep_len , cd , NULL , NULL , &l_conv_error);
+ if(!l_conv_error)
+ {
+ len_sms = (int)strlen(utf8_text);
+ num_labels = len_sms / MAX_SMS_FRAG_LEN;
+ num_labels += len_sms % MAX_SMS_FRAG_LEN ? 1 : 0;
+ for(i = 0; i < num_labels;i++) {
+ if(i * MAX_SMS_FRAG_LEN < len_sms) {
+ /* set '\0' to byte number 134 text_node MAX size*/
+ save_byte = utf8_text[i * MAX_SMS_FRAG_LEN];
+ save_byte2 = utf8_text[i * MAX_SMS_FRAG_LEN + 1];
+ if(i > 0)
+ {
+ utf8_text[i * MAX_SMS_FRAG_LEN] = '\0';
+ utf8_text[i * MAX_SMS_FRAG_LEN + 1] = '\0';
+ }
+
+ length_ucs2 = MAX_SMS_FRAG_LEN;
+ } else
+ length_ucs2 = len_sms % MAX_SMS_FRAG_LEN;
+
+ ucs2_item = proto_tree_add_unicode_string(subtree, hf_gsm_sms_text, sm_tvb,
+ i * MAX_SMS_FRAG_LEN, length_ucs2,
+ &utf8_text[i * MAX_SMS_FRAG_LEN]);
PROTO_ITEM_SET_GENERATED(ucs2_item);
- /* return the save byte to utf8 buffer*/
- if(i * MAX_SMS_FRAG_LEN < len_sms) {
- utf8_text[i * MAX_SMS_FRAG_LEN] = save_byte;
- utf8_text[i * MAX_SMS_FRAG_LEN + 1] = save_byte2;
- }
- }
- } else {
- ucs2_item = proto_tree_add_text(subtree, tvb, offset, length, "Failed to decode UCS2!");
+ /* return the save byte to utf8 buffer*/
+ if(i * MAX_SMS_FRAG_LEN < len_sms) {
+ utf8_text[i * MAX_SMS_FRAG_LEN] = save_byte;
+ utf8_text[i * MAX_SMS_FRAG_LEN + 1] = save_byte2;
+ }
+ }
+ } else {
+ ucs2_item = proto_tree_add_text(subtree, tvb, offset, length, "Failed to decode UCS2!");
PROTO_ITEM_SET_GENERATED(ucs2_item);
- }
- }
+ }
+ }
- g_free(utf8_text);
- g_iconv_close(cd);
- } else {
- /* tvb_get_ephemeral_unicode_string takes the length in number of guint16's */
- ustr = tvb_get_ephemeral_unicode_string(tvb, offset, (length>>1), ENC_BIG_ENDIAN);
- proto_tree_add_text(subtree, tvb, offset, length, "%s", ustr);
- }
- }
+ g_free(utf8_text);
+ g_iconv_close(cd);
+ } else {
+ ustr = tvb_get_ephemeral_unicode_string(tvb, offset, length, ENC_BIG_ENDIAN);
+ proto_tree_add_text(subtree, tvb, offset, length, "%s", ustr);
+ }
+ }
}
if (try_gsm_sms_ud_reassemble) /* Clean up defragmentation */
@@ -2814,50 +2854,50 @@ dis_field_ud(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint32 length, gb
static void
dis_field_pi(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 oct)
{
- proto_item *item;
- proto_tree *subtree = NULL;
+ proto_item *item;
+ proto_tree *subtree = NULL;
item =
- proto_tree_add_text(tree, tvb,
- offset, 1,
- "TP-Parameter-Indicator");
+ proto_tree_add_text(tree, tvb,
+ offset, 1,
+ "TP-Parameter-Indicator");
subtree = proto_item_add_subtree(item, ett_pi);
other_decode_bitfield_value(bigbuf, oct, 0x80, 8);
proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : %s",
- bigbuf,
- (oct & 0x80) ? "Extended" : "No extension");
+ offset, 1,
+ "%s : %s",
+ bigbuf,
+ (oct & 0x80) ? "Extended" : "No extension");
other_decode_bitfield_value(bigbuf, oct, 0x78, 8);
proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : Reserved",
- bigbuf);
+ offset, 1,
+ "%s : Reserved",
+ bigbuf);
other_decode_bitfield_value(bigbuf, oct, 0x04, 8);
proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : TP-UDL %spresent",
- bigbuf,
- (oct & 0x04) ? "" : "not ");
+ offset, 1,
+ "%s : TP-UDL %spresent",
+ bigbuf,
+ (oct & 0x04) ? "" : "not ");
other_decode_bitfield_value(bigbuf, oct, 0x02, 8);
proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : TP-DCS %spresent",
- bigbuf,
- (oct & 0x02) ? "" : "not ");
+ offset, 1,
+ "%s : TP-DCS %spresent",
+ bigbuf,
+ (oct & 0x02) ? "" : "not ");
other_decode_bitfield_value(bigbuf, oct, 0x01, 8);
proto_tree_add_text(subtree, tvb,
- offset, 1,
- "%s : TP-PID %spresent",
- bigbuf,
- (oct & 0x01) ? "" : "not ");
+ offset, 1,
+ "%s : TP-PID %spresent",
+ bigbuf,
+ (oct & 0x01) ? "" : "not ");
}
/*
@@ -2867,17 +2907,16 @@ dis_field_pi(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint8 oct)
static void
dis_msg_deliver(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
{
- guint32 saved_offset;
- guint32 length;
- guint8 oct;
- guint8 udl;
- gboolean seven_bit;
- gboolean eight_bit;
- gboolean ucs2;
- gboolean compressed;
- gboolean udhi;
+ guint32 saved_offset;
+ guint32 length;
+ guint8 oct;
+ guint8 udl;
+ gboolean seven_bit;
+ gboolean eight_bit;
+ gboolean ucs2;
+ gboolean compressed;
+ gboolean udhi;
- udl = 0;
saved_offset = offset;
length = tvb_length_remaining(tvb, offset);
@@ -2913,10 +2952,10 @@ dis_msg_deliver(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
if (udl > 0)
{
- offset++;
+ offset++;
- dis_field_ud(tvb, tree, offset, length - (offset - saved_offset), udhi, udl,
- seven_bit, eight_bit, ucs2, compressed);
+ dis_field_ud(tvb, tree, offset, length - (offset - saved_offset), udhi, udl,
+ seven_bit, eight_bit, ucs2, compressed);
}
}
@@ -2927,16 +2966,16 @@ dis_msg_deliver(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
static void
dis_msg_deliver_report(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
{
- guint32 saved_offset;
- guint32 length;
- guint8 oct;
- guint8 pi;
- guint8 udl;
- gboolean seven_bit = FALSE;
- gboolean eight_bit = FALSE;
- gboolean ucs2 = FALSE;
- gboolean compressed = FALSE;
- gboolean udhi;
+ guint32 saved_offset;
+ guint32 length;
+ guint8 oct;
+ guint8 pi;
+ guint8 udl;
+ gboolean seven_bit = FALSE;
+ gboolean eight_bit = FALSE;
+ gboolean ucs2 = FALSE;
+ gboolean compressed = FALSE;
+ gboolean udhi;
udl = 0;
@@ -2952,10 +2991,10 @@ dis_msg_deliver_report(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
if (length < 2)
{
- proto_tree_add_text(tree,
- tvb, offset, length,
- "Short Data (?)");
- return;
+ proto_tree_add_text(tree,
+ tvb, offset, length,
+ "Short Data (?)");
+ return;
}
/*
@@ -2974,8 +3013,8 @@ dis_msg_deliver_report(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
if (oct & 0x80)
{
- dis_field_fcs(tvb, tree, offset, oct);
- offset++;
+ dis_field_fcs(tvb, tree, offset, oct);
+ offset++;
}
pi = tvb_get_guint8(tvb, offset);
@@ -2984,59 +3023,59 @@ dis_msg_deliver_report(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
if (pi & 0x01)
{
- if (length <= (offset - saved_offset))
- {
- proto_tree_add_text(tree,
- tvb, offset, -1,
- "Short Data (?)");
- return;
- }
+ if (length <= (offset - saved_offset))
+ {
+ proto_tree_add_text(tree,
+ tvb, offset, -1,
+ "Short Data (?)");
+ return;
+ }
- offset++;
- oct = tvb_get_guint8(tvb, offset);
+ offset++;
+ oct = tvb_get_guint8(tvb, offset);
- dis_field_pid(tvb, tree, offset, oct);
+ dis_field_pid(tvb, tree, offset, oct);
}
if (pi & 0x02)
{
- if (length <= (offset - saved_offset))
- {
- proto_tree_add_text(tree,
- tvb, offset, -1,
- "Short Data (?)");
- return;
- }
+ if (length <= (offset - saved_offset))
+ {
+ proto_tree_add_text(tree,
+ tvb, offset, -1,
+ "Short Data (?)");
+ return;
+ }
- offset++;
- oct = tvb_get_guint8(tvb, offset);
+ offset++;
+ oct = tvb_get_guint8(tvb, offset);
- dis_field_dcs(tvb, tree, offset, oct, &seven_bit, &eight_bit, &ucs2, &compressed);
+ dis_field_dcs(tvb, tree, offset, oct, &seven_bit, &eight_bit, &ucs2, &compressed);
}
if (pi & 0x04)
{
- if (length <= (offset - saved_offset))
- {
- proto_tree_add_text(tree,
- tvb, offset, -1,
- "Short Data (?)");
- return;
- }
+ if (length <= (offset - saved_offset))
+ {
+ proto_tree_add_text(tree,
+ tvb, offset, -1,
+ "Short Data (?)");
+ return;
+ }
- offset++;
- oct = tvb_get_guint8(tvb, offset);
- udl = oct;
+ offset++;
+ oct = tvb_get_guint8(tvb, offset);
+ udl = oct;
- DIS_FIELD_UDL(tree, offset);
+ DIS_FIELD_UDL(tree, offset);
}
if (udl > 0)
{
- offset++;
+ offset++;
- dis_field_ud(tvb, tree, offset, length - (offset - saved_offset), udhi, udl,
- seven_bit, eight_bit, ucs2, compressed);
+ dis_field_ud(tvb, tree, offset, length - (offset - saved_offset), udhi, udl,
+ seven_bit, eight_bit, ucs2, compressed);
}
}
@@ -3047,16 +3086,16 @@ dis_msg_deliver_report(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
static void
dis_msg_submit(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
{
- guint32 saved_offset;
- guint32 length;
- guint8 oct;
- guint8 vp_form;
- guint8 udl;
- gboolean seven_bit;
- gboolean eight_bit;
- gboolean ucs2;
- gboolean compressed;
- gboolean udhi;
+ guint32 saved_offset;
+ guint32 length;
+ guint8 oct;
+ guint8 vp_form;
+ guint8 udl;
+ gboolean seven_bit;
+ gboolean eight_bit;
+ gboolean ucs2;
+ gboolean compressed;
+ gboolean udhi;
saved_offset = offset;
@@ -3074,7 +3113,6 @@ dis_msg_submit(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
proto_tree_add_item(tree, hf_gsm_sms_tp_mti_up, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
- oct = tvb_get_guint8(tvb, offset);
proto_tree_add_item(tree, hf_gsm_sms_tp_mr, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -3101,10 +3139,10 @@ dis_msg_submit(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
if (udl > 0)
{
- offset++;
+ offset++;
- dis_field_ud(tvb, tree, offset, length - (offset - saved_offset), udhi, udl,
- seven_bit, eight_bit, ucs2, compressed);
+ dis_field_ud(tvb, tree, offset, length - (offset - saved_offset), udhi, udl,
+ seven_bit, eight_bit, ucs2, compressed);
}
}
@@ -3115,16 +3153,16 @@ dis_msg_submit(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
static void
dis_msg_submit_report(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
{
- guint32 saved_offset;
- guint32 length;
- guint8 oct;
- guint8 pi;
- guint8 udl;
- gboolean seven_bit = FALSE;
- gboolean eight_bit = FALSE;
- gboolean ucs2 = FALSE;
- gboolean compressed = FALSE;
- gboolean udhi;
+ guint32 saved_offset;
+ guint32 length;
+ guint8 oct;
+ guint8 pi;
+ guint8 udl;
+ gboolean seven_bit = FALSE;
+ gboolean eight_bit = FALSE;
+ gboolean ucs2 = FALSE;
+ gboolean compressed = FALSE;
+ gboolean udhi;
udl = 0;
@@ -3153,8 +3191,8 @@ dis_msg_submit_report(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
if (oct & 0x80)
{
- dis_field_fcs(tvb, tree, offset, oct);
- offset++;
+ dis_field_fcs(tvb, tree, offset, oct);
+ offset++;
}
pi = tvb_get_guint8(tvb, offset);
@@ -3165,56 +3203,56 @@ dis_msg_submit_report(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
dis_field_scts(tvb, tree, &offset);
if (pi & 0x01) {
- if (length <= (offset - saved_offset)) {
- proto_tree_add_text(tree,
- tvb, offset, -1,
- "Short Data (?)");
- return;
- }
+ if (length <= (offset - saved_offset)) {
+ proto_tree_add_text(tree,
+ tvb, offset, -1,
+ "Short Data (?)");
+ return;
+ }
- oct = tvb_get_guint8(tvb, offset);
+ oct = tvb_get_guint8(tvb, offset);
- dis_field_pid(tvb, tree, offset, oct);
- offset++;
+ dis_field_pid(tvb, tree, offset, oct);
+ offset++;
}
if (pi & 0x02)
{
- if (length <= (offset - saved_offset))
- {
- proto_tree_add_text(tree,
- tvb, offset, -1,
- "Short Data (?)");
- return;
- }
+ if (length <= (offset - saved_offset))
+ {
+ proto_tree_add_text(tree,
+ tvb, offset, -1,
+ "Short Data (?)");
+ return;
+ }
- oct = tvb_get_guint8(tvb, offset);
+ oct = tvb_get_guint8(tvb, offset);
- dis_field_dcs(tvb, tree, offset, oct, &seven_bit, &eight_bit, &ucs2, &compressed);
- offset++;
+ dis_field_dcs(tvb, tree, offset, oct, &seven_bit, &eight_bit, &ucs2, &compressed);
+ offset++;
}
if (pi & 0x04)
{
- if (length <= (offset - saved_offset))
- {
- proto_tree_add_text(tree,
- tvb, offset, -1,
- "Short Data (?)");
- return;
- }
+ if (length <= (offset - saved_offset))
+ {
+ proto_tree_add_text(tree,
+ tvb, offset, -1,
+ "Short Data (?)");
+ return;
+ }
- oct = tvb_get_guint8(tvb, offset);
- udl = oct;
+ oct = tvb_get_guint8(tvb, offset);
+ udl = oct;
- DIS_FIELD_UDL(tree, offset);
- offset++;
+ DIS_FIELD_UDL(tree, offset);
+ offset++;
}
if (udl > 0)
{
- dis_field_ud(tvb, tree, offset, length - (offset - saved_offset), udhi, udl,
- seven_bit, eight_bit, ucs2, compressed);
+ dis_field_ud(tvb, tree, offset, length - (offset - saved_offset), udhi, udl,
+ seven_bit, eight_bit, ucs2, compressed);
}
}
@@ -3225,16 +3263,16 @@ dis_msg_submit_report(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
static void
dis_msg_status_report(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
{
- guint32 saved_offset;
- guint32 length;
- guint8 oct;
- guint8 pi;
- guint8 udl;
- gboolean seven_bit = FALSE;
- gboolean eight_bit = FALSE;
- gboolean ucs2 = FALSE;
- gboolean compressed = FALSE;
- gboolean udhi;
+ guint32 saved_offset;
+ guint32 length;
+ guint8 oct;
+ guint8 pi;
+ guint8 udl;
+ gboolean seven_bit = FALSE;
+ gboolean eight_bit = FALSE;
+ gboolean ucs2 = FALSE;
+ gboolean compressed = FALSE;
+ gboolean udhi;
udl = 0;
@@ -3250,7 +3288,6 @@ dis_msg_status_report(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
proto_tree_add_item(tree, hf_gsm_sms_tp_mti_down, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
- oct = tvb_get_guint8(tvb, offset);
proto_tree_add_item(tree, hf_gsm_sms_tp_mr, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -3267,74 +3304,74 @@ dis_msg_status_report(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
dis_field_st(tvb, tree, offset, oct);
offset++;
- /* Parameter indicating the presence of any of
- * the optional parameters which follow
- * 4) Mandatory if any of the optional parameters following TP-PI is present,
- * otherwise optional.
- */
- if (length <= (offset - saved_offset))
- {
- return;
- }
+ /* Parameter indicating the presence of any of
+ * the optional parameters which follow
+ * 4) Mandatory if any of the optional parameters following TP-PI is present,
+ * otherwise optional.
+ */
+ if (length <= (offset - saved_offset))
+ {
+ return;
+ }
pi = tvb_get_guint8(tvb, offset);
dis_field_pi(tvb, tree, offset, pi);
if (pi & 0x01)
{
- if (length <= (offset - saved_offset))
- {
- proto_tree_add_text(tree,
- tvb, offset, -1,
- "Short Data (?)");
- return;
- }
+ if (length <= (offset - saved_offset))
+ {
+ proto_tree_add_text(tree,
+ tvb, offset, -1,
+ "Short Data (?)");
+ return;
+ }
- offset++;
- oct = tvb_get_guint8(tvb, offset);
+ offset++;
+ oct = tvb_get_guint8(tvb, offset);
- dis_field_pid(tvb, tree, offset, oct);
+ dis_field_pid(tvb, tree, offset, oct);
}
if (pi & 0x02)
{
- if (length <= (offset - saved_offset))
- {
- proto_tree_add_text(tree,
- tvb, offset, -1,
- "Short Data (?)");
- return;
- }
+ if (length <= (offset - saved_offset))
+ {
+ proto_tree_add_text(tree,
+ tvb, offset, -1,
+ "Short Data (?)");
+ return;
+ }
- offset++;
- oct = tvb_get_guint8(tvb, offset);
+ offset++;
+ oct = tvb_get_guint8(tvb, offset);
- dis_field_dcs(tvb, tree, offset, oct, &seven_bit, &eight_bit, &ucs2, &compressed);
+ dis_field_dcs(tvb, tree, offset, oct, &seven_bit, &eight_bit, &ucs2, &compressed);
}
if (pi & 0x04)
{
- if (length <= (offset - saved_offset))
- {
- proto_tree_add_text(tree,
- tvb, offset, -1,
- "Short Data (?)");
- return;
- }
+ if (length <= (offset - saved_offset))
+ {
+ proto_tree_add_text(tree,
+ tvb, offset, -1,
+ "Short Data (?)");
+ return;
+ }
- offset++;
- oct = tvb_get_guint8(tvb, offset);
- udl = oct;
+ offset++;
+ oct = tvb_get_guint8(tvb, offset);
+ udl = oct;
- DIS_FIELD_UDL(tree, offset);
+ DIS_FIELD_UDL(tree, offset);
}
if (udl > 0)
{
- offset++;
+ offset++;
- dis_field_ud(tvb, tree, offset, length - (offset - saved_offset), udhi, udl,
- seven_bit, eight_bit, ucs2, compressed);
+ dis_field_ud(tvb, tree, offset, length - (offset - saved_offset), udhi, udl,
+ seven_bit, eight_bit, ucs2, compressed);
}
}
@@ -3345,12 +3382,9 @@ dis_msg_status_report(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
static void
dis_msg_command(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
{
- guint8 oct;
- guint8 cdl;
- const gchar *str = NULL;
-
-
- cdl = 0;
+ guint8 oct;
+ guint8 cdl;
+ const gchar *str = NULL;
proto_tree_add_item(tree, hf_gsm_sms_tp_udhi, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_gsm_sms_tp_srr, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -3386,16 +3420,16 @@ dis_msg_command(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
if (cdl > 0)
{
- offset++;
+ offset++;
- proto_tree_add_text(tree,
- tvb, offset, cdl,
- "TP-Command-Data");
+ proto_tree_add_text(tree,
+ tvb, offset, cdl,
+ "TP-Command-Data");
}
}
#if 0
-#define NUM_MSGS (sizeof(msg_type_strings)/sizeof(value_string))
+#define NUM_MSGS (sizeof(msg_type_strings)/sizeof(value_string))
static gint ett_msgs[NUM_MSGS];
#endif
@@ -3417,14 +3451,14 @@ static void
dissect_gsm_sms(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
void (*msg_fcn)(tvbuff_t *tvb, proto_tree *tree, guint32 offset) = NULL;
- proto_item *gsm_sms_item;
- proto_tree *gsm_sms_tree = NULL;
- guint32 offset;
- guint8 msg_type;
- guint8 oct;
- gint idx;
- const gchar *str = NULL;
- /*gint ett_msg_idx;*/
+ proto_item *gsm_sms_item;
+ proto_tree *gsm_sms_tree = NULL;
+ guint32 offset;
+ guint8 msg_type;
+ guint8 oct;
+ gint idx;
+ const gchar *str = NULL;
+ /*gint ett_msg_idx;*/
g_pinfo = pinfo;
@@ -3442,67 +3476,56 @@ dissect_gsm_sms(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
*/
if (tree || reassemble_sms)
{
- g_tree = tree;
-
- offset = 0;
-
- oct = tvb_get_guint8(tvb, offset);
-
- oct &= 0x03;
- msg_type = oct;
-
- /*
- * convert the 2 bit value to one based on direction
- */
- if (pinfo->p2p_dir == P2P_DIR_UNKNOWN)
- {
- /* Return Result ... */
- if (msg_type == 0) /* SMS-DELIVER */
- {
- msg_type |= 0x04; /* see the msg_type_strings */
- }
- }
- else
- {
- msg_type |= ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x04 : 0x00);
- }
-
- str = match_strval_idx(msg_type, msg_type_strings, &idx);
-
- /*
- * create the GSM_SMS protocol tree
- */
- gsm_sms_item =
- proto_tree_add_protocol_format(tree, proto_gsm_sms, tvb, 0, -1,
- "%s %s",
- gsm_sms_proto_name,
- (str == NULL) ? "Unknown message identifier" : str);
-
- gsm_sms_tree =
- proto_item_add_subtree(gsm_sms_item, ett_gsm_sms);
-
- if ((str == NULL) ||
- (msg_type == 0x03) ||
- (msg_type == 0x07))
- {
- return;
- }
- else
- {
- /*ett_msg_idx = ett_msgs[idx];*/ /* XXX: Not actually used */
- msg_fcn = gsm_sms_msg_fcn[idx];
- }
-
- if (msg_fcn == NULL)
- {
- proto_tree_add_text(gsm_sms_tree,
- tvb, offset, -1,
- "Message dissector not implemented");
- }
- else
- {
- (*msg_fcn)(tvb, gsm_sms_tree, offset);
- }
+ g_tree = tree;
+
+ offset = 0;
+
+ oct = tvb_get_guint8(tvb, offset);
+
+ oct &= 0x03;
+ msg_type = oct;
+
+ /*
+ * convert the 2 bit value to one based on direction
+ */
+ msg_type |= ((pinfo->p2p_dir == P2P_DIR_RECV) ? 0x04 : 0x00);
+
+ str = match_strval_idx(msg_type, msg_type_strings, &idx);
+
+ /*
+ * create the GSM_SMS protocol tree
+ */
+ gsm_sms_item =
+ proto_tree_add_protocol_format(tree, proto_gsm_sms, tvb, 0, -1,
+ "%s %s",
+ gsm_sms_proto_name,
+ (str == NULL) ? "Unknown message identifier" : str);
+
+ gsm_sms_tree =
+ proto_item_add_subtree(gsm_sms_item, ett_gsm_sms);
+
+ if ((str == NULL) ||
+ (msg_type == 0x03) ||
+ (msg_type == 0x07))
+ {
+ return;
+ }
+ else
+ {
+ /*ett_msg_idx = ett_msgs[idx];*/ /* XXX: Not actually used */
+ msg_fcn = gsm_sms_msg_fcn[idx];
+ }
+
+ if (msg_fcn == NULL)
+ {
+ proto_tree_add_text(gsm_sms_tree,
+ tvb, offset, -1,
+ "Message dissector not implemented");
+ }
+ else
+ {
+ (*msg_fcn)(tvb, gsm_sms_tree, offset);
+ }
}
}
@@ -3513,7 +3536,7 @@ proto_register_gsm_sms(void)
{
guint i;
guint last_offset;
- module_t *gsm_sms_module; /* Preferences for GSM SMS UD */
+ module_t *gsm_sms_module; /* Preferences for GSM SMS UD */
/* Setup list of header fields */
static hf_register_info hf[] =
@@ -3532,195 +3555,166 @@ proto_register_gsm_sms(void)
/*
* Short Message fragment reassembly
*/
- { &hf_gsm_sms_ud_fragments,
- { "Short Message fragments", "gsm_sms.fragments",
- FT_NONE, BASE_NONE, NULL, 0x00,
- "GSM Short Message fragments",
- HFILL
- }
+ { &hf_gsm_sms_ud_fragments,
+ { "Short Message fragments", "gsm_sms.fragments",
+ FT_NONE, BASE_NONE, NULL, 0x00,
+ "GSM Short Message fragments", HFILL }
},
- { &hf_gsm_sms_ud_fragment,
- { "Short Message fragment", "gsm_sms.fragment",
- FT_FRAMENUM, BASE_NONE, NULL, 0x00,
- "GSM Short Message fragment",
- HFILL
- }
+ { &hf_gsm_sms_ud_fragment,
+ { "Short Message fragment", "gsm_sms.fragment",
+ FT_FRAMENUM, BASE_NONE, NULL, 0x00,
+ "GSM Short Message fragment", HFILL }
},
- { &hf_gsm_sms_ud_fragment_overlap,
- { "Short Message fragment overlap", "gsm_sms.fragment.overlap",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "GSM Short Message fragment overlaps with other fragment(s)",
- HFILL
- }
+ { &hf_gsm_sms_ud_fragment_overlap,
+ { "Short Message fragment overlap", "gsm_sms.fragment.overlap",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "GSM Short Message fragment overlaps with other fragment(s)", HFILL }
},
- { &hf_gsm_sms_ud_fragment_overlap_conflicts,
- { "Short Message fragment overlapping with conflicting data",
- "gsm_sms.fragment.overlap.conflicts",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "GSM Short Message fragment overlaps with conflicting data",
- HFILL
- }
+ { &hf_gsm_sms_ud_fragment_overlap_conflicts,
+ { "Short Message fragment overlapping with conflicting data", "gsm_sms.fragment.overlap.conflicts",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "GSM Short Message fragment overlaps with conflicting data", HFILL }
},
- { &hf_gsm_sms_ud_fragment_multiple_tails,
- { "Short Message has multiple tail fragments",
- "gsm_sms.fragment.multiple_tails",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "GSM Short Message fragment has multiple tail fragments",
- HFILL
- }
+ { &hf_gsm_sms_ud_fragment_multiple_tails,
+ { "Short Message has multiple tail fragments", "gsm_sms.fragment.multiple_tails",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "GSM Short Message fragment has multiple tail fragments", HFILL }
},
- { &hf_gsm_sms_ud_fragment_too_long_fragment,
- { "Short Message fragment too long",
- "gsm_sms.fragment.too_long_fragment",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "GSM Short Message fragment data goes beyond the packet end",
- HFILL
- }
+ { &hf_gsm_sms_ud_fragment_too_long_fragment,
+ { "Short Message fragment too long", "gsm_sms.fragment.too_long_fragment",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "GSM Short Message fragment data goes beyond the packet end", HFILL }
},
- { &hf_gsm_sms_ud_fragment_error,
- { "Short Message defragmentation error", "gsm_sms.fragment.error",
- FT_FRAMENUM, BASE_NONE, NULL, 0x00,
- "GSM Short Message defragmentation error due to illegal fragments",
- HFILL
- }
+ { &hf_gsm_sms_ud_fragment_error,
+ { "Short Message defragmentation error", "gsm_sms.fragment.error",
+ FT_FRAMENUM, BASE_NONE, NULL, 0x00,
+ "GSM Short Message defragmentation error due to illegal fragments", HFILL }
},
- { &hf_gsm_sms_ud_fragment_count,
- { "Short Message fragment count",
- "gsm_sms.fragment.count",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- NULL, HFILL
- }
+ { &hf_gsm_sms_ud_fragment_count,
+ { "Short Message fragment count", "gsm_sms.fragment.count",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
},
- { &hf_gsm_sms_ud_reassembled_in,
- { "Reassembled in",
- "gsm_sms.reassembled.in",
- FT_FRAMENUM, BASE_NONE, NULL, 0x00,
- "GSM Short Message has been reassembled in this packet.", HFILL
- }
+ { &hf_gsm_sms_ud_reassembled_in,
+ { "Reassembled in", "gsm_sms.reassembled.in",
+ FT_FRAMENUM, BASE_NONE, NULL, 0x00,
+ "GSM Short Message has been reassembled in this packet.", HFILL }
},
- { &hf_gsm_sms_ud_reassembled_length,
- { "Reassembled Short Message length",
- "gsm_sms.reassembled.length",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- "The total length of the reassembled payload", HFILL
- }
+ { &hf_gsm_sms_ud_reassembled_length,
+ { "Reassembled Short Message length", "gsm_sms.reassembled.length",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "The total length of the reassembled payload", HFILL }
},
- { &hf_gsm_sms_ud_multiple_messages_msg_id,
- { "Message identifier", "gsm-sms.udh.mm.msg_id",
- FT_UINT16, BASE_DEC, NULL, 0x00,
- "Identification of the message",
- HFILL
- }
+ { &hf_gsm_sms_ud_multiple_messages_msg_id,
+ { "Message identifier", "gsm-sms.udh.mm.msg_id",
+ FT_UINT16, BASE_DEC, NULL, 0x00,
+ "Identification of the message", HFILL }
},
- { &hf_gsm_sms_ud_multiple_messages_msg_parts,
- { "Message parts", "gsm-sms.udh.mm.msg_parts",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- "Total number of message parts (fragments)",
- HFILL
- }
+ { &hf_gsm_sms_ud_multiple_messages_msg_parts,
+ { "Message parts", "gsm-sms.udh.mm.msg_parts",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ "Total number of message parts (fragments)", HFILL }
},
- { &hf_gsm_sms_ud_multiple_messages_msg_part,
- { "Message part number", "gsm-sms.udh.mm.msg_part",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- "Message part (fragment) sequence number",
- HFILL
- }
+ { &hf_gsm_sms_ud_multiple_messages_msg_part,
+ { "Message part number", "gsm-sms.udh.mm.msg_part",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ "Message part (fragment) sequence number", HFILL }
},
/* TPDU parameters */
{ &hf_gsm_sms_tp_mti_up,
- { "TP-MTI", "gsm_sms.tp-mti",
- FT_UINT8, BASE_DEC, VALS(msg_type_strings_ms_to_sc), 0x03,
- "TP-Message-Type-Indicator (in the direction MS to SC)", HFILL }
+ { "TP-MTI", "gsm_sms.tp-mti",
+ FT_UINT8, BASE_DEC, VALS(msg_type_strings_ms_to_sc), 0x03,
+ "TP-Message-Type-Indicator (in the direction MS to SC)", HFILL }
},
{ &hf_gsm_sms_tp_mti_down,
- { "TP-MTI", "gsm_sms.tp-mti",
- FT_UINT8, BASE_DEC, VALS(msg_type_strings_sc_to_ms), 0x03,
- "TP-Message-Type-Indicator (in the direction SC to MS)", HFILL }
+ { "TP-MTI", "gsm_sms.tp-mti",
+ FT_UINT8, BASE_DEC, VALS(msg_type_strings_sc_to_ms), 0x03,
+ "TP-Message-Type-Indicator (in the direction SC to MS)", HFILL }
},
{ &hf_gsm_sms_tp_oa,
- { "TP-OA Digits", "gsm_sms.tp-oa",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "TP-Originating-Address Digits", HFILL }
+ { "TP-OA Digits", "gsm_sms.tp-oa",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "TP-Originating-Address Digits", HFILL }
},
{ &hf_gsm_sms_tp_da,
- { "TP-DA Digits", "gsm_sms.tp-da",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "TP-Destination-Address Digits", HFILL }
+ { "TP-DA Digits", "gsm_sms.tp-da",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "TP-Destination-Address Digits", HFILL }
},
{ &hf_gsm_sms_tp_ra,
- { "TP-RA Digits", "gsm_sms.tp-ra",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "TP-Recipient-Address Digits", HFILL }
+ { "TP-RA Digits", "gsm_sms.tp-ra",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "TP-Recipient-Address Digits", HFILL }
},
{ &hf_gsm_sms_tp_pid,
- { "TP-PID", "gsm_sms.tp-pid",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- "TP-Protocol-Identifier", HFILL }
+ { "TP-PID", "gsm_sms.tp-pid",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ "TP-Protocol-Identifier", HFILL }
},
{ &hf_gsm_sms_tp_dcs,
- { "TP-DCS", "gsm_sms.tp-dcs",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- "TP-Data-Coding-Scheme", HFILL }
+ { "TP-DCS", "gsm_sms.tp-dcs",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ "TP-Data-Coding-Scheme", HFILL }
},
{ &hf_gsm_sms_tp_mr,
- { "TP-MR", "gsm_sms.tp-mr",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- "TP-Message-Reference", HFILL }
+ { "TP-MR", "gsm_sms.tp-mr",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ "TP-Message-Reference", HFILL }
},
{ &hf_gsm_sms_tp_mms,
- { "TP-MMS", "gsm_sms.tp-mms",
- FT_BOOLEAN, 8, TFS(&mms_bool_strings), 0x04,
- "TP-More-Messages-to-Send", HFILL }
+ { "TP-MMS", "gsm_sms.tp-mms",
+ FT_BOOLEAN, 8, TFS(&mms_bool_strings), 0x04,
+ "TP-More-Messages-to-Send", HFILL }
},
{ &hf_gsm_sms_tp_sri,
- { "TP-SRI", "gsm_sms.tp-sri",
- FT_BOOLEAN, 8, TFS(&sri_bool_strings), 0x20,
- "TP-Status-Report-Indication", HFILL }
+ { "TP-SRI", "gsm_sms.tp-sri",
+ FT_BOOLEAN, 8, TFS(&sri_bool_strings), 0x20,
+ "TP-Status-Report-Indication", HFILL }
},
{ &hf_gsm_sms_tp_srr,
- { "TP-SRR", "gsm_sms.tp-srr",
- FT_BOOLEAN, 8, TFS(&srr_bool_strings), 0x20,
- "TP-Status-Report-Request", HFILL }
+ { "TP-SRR", "gsm_sms.tp-srr",
+ FT_BOOLEAN, 8, TFS(&srr_bool_strings), 0x20,
+ "TP-Status-Report-Request", HFILL }
},
{ &hf_gsm_sms_tp_udhi,
- { "TP-UDHI", "gsm_sms.tp-udhi",
- FT_BOOLEAN, 8, TFS(&udhi_bool_strings), 0x40,
- "TP-User-Data-Header-Indicator", HFILL }
+ { "TP-UDHI", "gsm_sms.tp-udhi",
+ FT_BOOLEAN, 8, TFS(&udhi_bool_strings), 0x40,
+ "TP-User-Data-Header-Indicator", HFILL }
},
{ &hf_gsm_sms_tp_rp,
- { "TP-RP", "gsm_sms.tp-rp",
- FT_BOOLEAN, 8, TFS(&rp_bool_strings), 0x80,
- "TP-Reply-Path", HFILL }
+ { "TP-RP", "gsm_sms.tp-rp",
+ FT_BOOLEAN, 8, TFS(&rp_bool_strings), 0x80,
+ "TP-Reply-Path", HFILL }
},
{ &hf_gsm_sms_tp_vpf,
- { "TP-VPF", "gsm_sms.tp-vpf",
- FT_UINT8, BASE_DEC, VALS(vp_type_strings), 0x18,
- "TP-Validity-Period-Format", HFILL }
+ { "TP-VPF", "gsm_sms.tp-vpf",
+ FT_UINT8, BASE_DEC, VALS(vp_type_strings), 0x18,
+ "TP-Validity-Period-Format", HFILL }
},
{ &hf_gsm_sms_tp_rd,
- { "TP-RD", "gsm_sms.tp-rd",
- FT_BOOLEAN, 8, TFS(&rd_bool_strings), 0x04,
- "TP-Reject-Duplicates", HFILL }
+ { "TP-RD", "gsm_sms.tp-rd",
+ FT_BOOLEAN, 8, TFS(&rd_bool_strings), 0x04,
+ "TP-Reject-Duplicates", HFILL }
},
{ &hf_gsm_sms_tp_srq,
- { "TP-SRQ", "gsm_sms.tp-srq",
- FT_BOOLEAN, 8, TFS(&srq_bool_strings), 0x20,
- "TP-Status-Report-Qualifier", HFILL }
+ { "TP-SRQ", "gsm_sms.tp-srq",
+ FT_BOOLEAN, 8, TFS(&srq_bool_strings), 0x20,
+ "TP-Status-Report-Qualifier", HFILL }
},
{ &hf_gsm_sms_text,
- { "SMS text", "gsm_sms.sms_text",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "The text of the SMS", HFILL }
+ { "SMS text", "gsm_sms.sms_text",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "The text of the SMS", HFILL }
},
- { &hf_gsm_sms_tp_fail_cause,
- { "TP-Failure-Cause (TP-FCS)", "gsm_sms.tp-fcs",
- FT_UINT8, BASE_HEX_DEC|BASE_EXT_STRING, &gsm_sms_tp_failure_cause_values_ext, 0x0,
- "TP-Validity-Period-Format", HFILL }
+ { &hf_gsm_sms_tp_fail_cause,
+ { "TP-Failure-Cause (TP-FCS)", "gsm_sms.tp-fcs",
+ FT_UINT8, BASE_HEX_DEC|BASE_EXT_STRING, &gsm_sms_tp_failure_cause_values_ext, 0x0,
+ "TP-Validity-Period-Format", HFILL }
},
};
/* Setup protocol subtree array */
-#define NUM_INDIVIDUAL_PARMS 12
+#define NUM_INDIVIDUAL_PARMS 12
gint *ett[NUM_INDIVIDUAL_PARMS/*+NUM_MSGS*/+NUM_UDH_IEIS+2];
ett[0] = &ett_gsm_sms;
@@ -3741,15 +3735,15 @@ proto_register_gsm_sms(void)
#if 0
for (i=0; i < NUM_MSGS; i++, last_offset++)
{
- ett_msgs[i] = -1;
- ett[last_offset] = &ett_msgs[i];
+ ett_msgs[i] = -1;
+ ett[last_offset] = &ett_msgs[i];
}
#endif
for (i=0; i < NUM_UDH_IEIS; i++, last_offset++)
{
- ett_udh_ieis[i] = -1;
- ett[last_offset] = &ett_udh_ieis[i];
+ ett_udh_ieis[i] = -1;
+ ett[last_offset] = &ett_udh_ieis[i];
}
ett[last_offset++] = &ett_gsm_sms_ud_fragment;
@@ -3758,7 +3752,7 @@ proto_register_gsm_sms(void)
/* Register the protocol name and description */
proto_gsm_sms =
- proto_register_protocol(gsm_sms_proto_name, gsm_sms_proto_name_short, "gsm_sms");
+ proto_register_protocol(gsm_sms_proto_name, gsm_sms_proto_name_short, "gsm_sms");
proto_register_field_array(proto_gsm_sms, hf, array_length(hf));
@@ -3771,11 +3765,11 @@ proto_register_gsm_sms(void)
gsm_sms_module = prefs_register_protocol (proto_gsm_sms, NULL);
prefs_register_obsolete_preference(gsm_sms_module,
- "try_dissect_message_fragment");
+ "try_dissect_message_fragment");
prefs_register_bool_preference (gsm_sms_module, "reassemble",
- "Reassemble fragmented SMS",
- "Whether the dissector should reassemble SMS spanning multiple packets",
- &reassemble_sms);
+ "Reassemble fragmented SMS",
+ "Whether the dissector should reassemble SMS spanning multiple packets",
+ &reassemble_sms);
/* register_dissector("gsm-sms", dissect_gsm_sms, proto_gsm_sms); */
@@ -3787,7 +3781,7 @@ proto_register_gsm_sms(void)
void
proto_reg_handoff_gsm_sms(void)
{
- dissector_handle_t gsm_sms_handle;
+ dissector_handle_t gsm_sms_handle;
gsm_sms_handle = create_dissector_handle(dissect_gsm_sms, proto_gsm_sms);
diff --git a/epan/dissectors/packet-gsm_sms_ud.c b/epan/dissectors/packet-gsm_sms_ud.c
index b3965c2071..34fb791849 100644
--- a/epan/dissectors/packet-gsm_sms_ud.c
+++ b/epan/dissectors/packet-gsm_sms_ud.c
@@ -60,9 +60,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <time.h>
-
#include <glib.h>
#include <epan/packet.h>
@@ -110,45 +107,47 @@ static gint ett_gsm_sms_ud_fragments = -1;
static dissector_table_t gsm_sms_dissector_table;
/* Short Message reassembly */
-static GHashTable *sm_fragment_table = NULL;
+static GHashTable *sm_fragment_table = NULL;
static GHashTable *sm_reassembled_table = NULL;
static const fragment_items sm_frag_items = {
- /* Fragment subtrees */
- &ett_gsm_sms_ud_fragment,
- &ett_gsm_sms_ud_fragments,
- /* Fragment fields */
- &hf_gsm_sms_ud_fragments,
- &hf_gsm_sms_ud_fragment,
- &hf_gsm_sms_ud_fragment_overlap,
- &hf_gsm_sms_ud_fragment_overlap_conflicts,
- &hf_gsm_sms_ud_fragment_multiple_tails,
- &hf_gsm_sms_ud_fragment_too_long_fragment,
- &hf_gsm_sms_ud_fragment_error,
- &hf_gsm_sms_ud_fragment_count,
- /* Reassembled in field */
- &hf_gsm_sms_ud_reassembled_in,
- /* Reassembled length field */
- &hf_gsm_sms_ud_reassembled_length,
- /* Tag */
- "Short Message fragments"
+ /* Fragment subtrees */
+ &ett_gsm_sms_ud_fragment,
+ &ett_gsm_sms_ud_fragments,
+ /* Fragment fields */
+ &hf_gsm_sms_ud_fragments,
+ &hf_gsm_sms_ud_fragment,
+ &hf_gsm_sms_ud_fragment_overlap,
+ &hf_gsm_sms_ud_fragment_overlap_conflicts,
+ &hf_gsm_sms_ud_fragment_multiple_tails,
+ &hf_gsm_sms_ud_fragment_too_long_fragment,
+ &hf_gsm_sms_ud_fragment_error,
+ &hf_gsm_sms_ud_fragment_count,
+ /* Reassembled in field */
+ &hf_gsm_sms_ud_reassembled_in,
+ /* Reassembled length field */
+ &hf_gsm_sms_ud_reassembled_length,
+ /* Tag */
+ "Short Message fragments"
};
/* Dissect all SM data as WSP if the UDH contains a Port Number IE */
static gboolean port_number_udh_means_wsp = FALSE;
+
/* Always try dissecting the 1st fragment of a SM,
* even if it is not reassembled */
static gboolean try_dissect_1st_frag = FALSE;
+
/* Prevent subdissectors changing column data */
static gboolean prevent_subdissectors_changing_columns = FALSE;
static dissector_handle_t wsp_handle;
static void
-gsm_sms_ud_defragment_init (void)
+gsm_sms_ud_defragment_init(void)
{
- fragment_table_init (&sm_fragment_table);
- reassembled_table_init(&sm_reassembled_table);
+ fragment_table_init(&sm_fragment_table);
+ reassembled_table_init(&sm_reassembled_table);
}
/*
@@ -156,37 +155,37 @@ gsm_sms_ud_defragment_init (void)
*/
/* 3GPP TS 23.040 V6.1.0 (2003-06) */
static const value_string vals_udh_iei[] = {
- { 0x00, "SMS - Concatenated short messages, 8-bit reference number" },
- { 0x01, "SMS - Special SMS Message Indication" },
- { 0x02, "Reserved" },
- { 0x03, "Value not used to avoid misinterpretation as <LF> character" },
- { 0x04, "SMS - Application port addressing scheme, 8 bit address" },
- { 0x05, "SMS - Application port addressing scheme, 16 bit address" },
- { 0x06, "SMS - SMSC Control Parameters" },
- { 0x07, "SMS - UDH Source Indicator" },
- { 0x08, "SMS - Concatenated short message, 16-bit reference number" },
- { 0x09, "SMS - Wireless Control Message Protocol" },
- { 0x0A, "EMS - Text Formatting" },
- { 0x0B, "EMS - Predefined Sound" },
- { 0x0C, "EMS - User Defined Sound (iMelody max 128 bytes)" },
- { 0x0D, "EMS - Predefined Animation" },
- { 0x0E, "EMS - Large Animation (16*16 times 4 = 32*4 =128 bytes)" },
- { 0x0F, "EMS - Small Animation (8*8 times 4 = 8*4 =32 bytes)" },
- { 0x10, "EMS - Large Picture (32*32 = 128 bytes)" },
- { 0x11, "EMS - Small Picture (16*16 = 32 bytes)" },
- { 0x12, "EMS - Variable Picture" },
- { 0x13, "EMS - User prompt indicator" },
- { 0x14, "EMS - Extended Object" },
- { 0x15, "EMS - Reused Extended Object" },
- { 0x16, "EMS - Compression Control" },
- { 0x17, "EMS - Object Distribution Indicator" },
- { 0x18, "EMS - Standard WVG object" },
- { 0x19, "EMS - Character Size WVG object" },
- { 0x1A, "EMS - Extended Object Data Request Command" },
- { 0x20, "SMS - RFC 822 E-Mail Header" },
- { 0x21, "SMS - Hyperlink format element" },
- { 0x22, "SMS - Reply Address Element" },
- { 0x00, NULL }
+ { 0x00, "SMS - Concatenated short messages, 8-bit reference number" },
+ { 0x01, "SMS - Special SMS Message Indication" },
+ { 0x02, "Reserved" },
+ { 0x03, "Value not used to avoid misinterpretation as <LF> character" },
+ { 0x04, "SMS - Application port addressing scheme, 8 bit address" },
+ { 0x05, "SMS - Application port addressing scheme, 16 bit address" },
+ { 0x06, "SMS - SMSC Control Parameters" },
+ { 0x07, "SMS - UDH Source Indicator" },
+ { 0x08, "SMS - Concatenated short message, 16-bit reference number" },
+ { 0x09, "SMS - Wireless Control Message Protocol" },
+ { 0x0A, "EMS - Text Formatting" },
+ { 0x0B, "EMS - Predefined Sound" },
+ { 0x0C, "EMS - User Defined Sound (iMelody max 128 bytes)" },
+ { 0x0D, "EMS - Predefined Animation" },
+ { 0x0E, "EMS - Large Animation (16*16 times 4 = 32*4 =128 bytes)" },
+ { 0x0F, "EMS - Small Animation (8*8 times 4 = 8*4 =32 bytes)" },
+ { 0x10, "EMS - Large Picture (32*32 = 128 bytes)" },
+ { 0x11, "EMS - Small Picture (16*16 = 32 bytes)" },
+ { 0x12, "EMS - Variable Picture" },
+ { 0x13, "EMS - User prompt indicator" },
+ { 0x14, "EMS - Extended Object" },
+ { 0x15, "EMS - Reused Extended Object" },
+ { 0x16, "EMS - Compression Control" },
+ { 0x17, "EMS - Object Distribution Indicator" },
+ { 0x18, "EMS - Standard WVG object" },
+ { 0x19, "EMS - Character Size WVG object" },
+ { 0x1A, "EMS - Extended Object Data Request Command" },
+ { 0x20, "SMS - RFC 822 E-Mail Header" },
+ { 0x21, "SMS - Hyperlink format element" },
+ { 0x22, "SMS - Reply Address Element" },
+ { 0x00, NULL }
};
@@ -196,411 +195,420 @@ static const value_string vals_udh_iei[] = {
*/
static void
parse_gsm_sms_ud_message(proto_tree *sm_tree, tvbuff_t *tvb, packet_info *pinfo,
- proto_tree *top_tree)
+ proto_tree *top_tree)
{
- tvbuff_t *sm_tvb = NULL;
- proto_item *subtree, *tree;
- guint8 udh_len, udh, len;
- guint sm_len = tvb_reported_length (tvb);
- guint sm_data_len;
- guint32 i = 0;
- /* Multiple Messages UDH */
- gboolean is_fragmented = FALSE;
- fragment_data *fd_sm = NULL;
- guint16 sm_id = 0, frags = 0, frag = 0;
- gboolean save_fragmented = FALSE, try_gsm_sms_ud_reassemble = FALSE;
- /* SMS Message reassembly */
- gboolean reassembled = FALSE;
- guint32 reassembled_in = 0;
- /* Port Number UDH */
- guint16 p_src = 0, p_dst = 0;
- gboolean ports_available = FALSE;
-
- udh_len = tvb_get_guint8(tvb, i++);
- tree = proto_tree_add_uint(sm_tree, hf_gsm_sms_udh_length, tvb, 0, 1, udh_len);
- tree = proto_item_add_subtree(tree, ett_udh);
- while (i < udh_len) {
- udh = tvb_get_guint8(tvb, i++);
- len = tvb_get_guint8(tvb, i++);
- subtree = proto_tree_add_uint(tree, hf_gsm_sms_udh_iei,
- tvb, i-2, 2+len, udh);
- switch (udh) {
- case 0x00: /* Multiple messages - 8-bit message ID */
- if (len == 3) {
- sm_id = tvb_get_guint8(tvb, i++);
- frags = tvb_get_guint8(tvb, i++);
- frag = tvb_get_guint8(tvb, i++);
- if (frags > 1)
- is_fragmented = TRUE;
- proto_item_append_text(subtree,
- ": message %u, part %u of %u", sm_id, frag, frags);
- subtree = proto_item_add_subtree(subtree,
- ett_udh_ie);
- proto_tree_add_uint (subtree,
- hf_gsm_sms_udh_multiple_messages_msg_id,
- tvb, i-3, 1, sm_id);
- proto_tree_add_uint (subtree,
- hf_gsm_sms_udh_multiple_messages_msg_parts,
- tvb, i-2, 1, frags);
- proto_tree_add_uint (subtree,
- hf_gsm_sms_udh_multiple_messages_msg_part,
- tvb, i-1, 1, frag);
- } else {
- proto_item_append_text(subtree, " - Invalid format!");
- i += len;
- }
- break;
-
- case 0x08: /* Multiple messages - 16-bit message ID */
- if (len == 4) {
- sm_id = tvb_get_ntohs(tvb, i); i += 2;
- frags = tvb_get_guint8(tvb, i++);
- frag = tvb_get_guint8(tvb, i++);
- if (frags > 1)
- is_fragmented = TRUE;
- proto_item_append_text(subtree,
- ": message %u, part %u of %u", sm_id, frag, frags);
- subtree = proto_item_add_subtree(subtree,
- ett_udh_ie);
- proto_tree_add_uint (subtree,
- hf_gsm_sms_udh_multiple_messages_msg_id,
- tvb, i-4, 2, sm_id);
- proto_tree_add_uint (subtree,
- hf_gsm_sms_udh_multiple_messages_msg_parts,
- tvb, i-2, 1, frags);
- proto_tree_add_uint (subtree,
- hf_gsm_sms_udh_multiple_messages_msg_part,
- tvb, i-1, 1, frag);
- } else {
- proto_item_append_text(subtree, " - Invalid format!");
- i += len;
- }
- break;
-
- case 0x04: /* Port Number UDH - 8-bit address */
- if (len == 2) { /* Port fields */
- p_dst = tvb_get_guint8(tvb, i++);
- p_src = tvb_get_guint8(tvb, i++);
- proto_item_append_text(subtree,
- ": source port %u, destination port %u",
- p_src, p_dst);
- subtree = proto_item_add_subtree(subtree, ett_udh_ie);
- proto_tree_add_uint (subtree, hf_gsm_sms_udh_ports_dst,
- tvb, i-2, 1, p_dst);
- proto_tree_add_uint (subtree, hf_gsm_sms_udh_ports_src,
- tvb, i-1, 1, p_src);
- ports_available = TRUE;
- } else {
- proto_item_append_text(subtree, " - Invalid format!");
- i += len;
- }
- break;
-
- case 0x05: /* Port Number UDH - 16-bit address */
- if (len == 4) { /* Port fields */
- p_dst = tvb_get_ntohs(tvb, i); i += 2;
- p_src = tvb_get_ntohs(tvb, i); i += 2;
- proto_item_append_text(subtree,
- ": source port %u, destination port %u",
- p_src, p_dst);
- subtree = proto_item_add_subtree(subtree, ett_udh_ie);
- proto_tree_add_uint (subtree, hf_gsm_sms_udh_ports_dst,
- tvb, i-4, 2, p_dst);
- proto_tree_add_uint (subtree, hf_gsm_sms_udh_ports_src,
- tvb, i-2, 2, p_src);
- ports_available = TRUE;
- } else {
- proto_item_append_text(subtree, " - Invalid format!");
- i += len;
- }
- break;
-
- default:
- i += len;
- break;
- }
- }
- if (tvb_reported_length_remaining(tvb, i) <= 0)
- return; /* No more data */
-
- /*
- * XXX - where does the "1" come from? If it weren't there,
- * "sm_data_len" would, I think, be the same as
- * "tvb_reported_length_remaining(tvb, i)".
- *
- * I think that the above check ensures that "sm_len" won't
- * be less than or equal to "udh_len", so it ensures that
- * "sm_len" won't be less than "1 + udh_len", so we don't
- * have to worry about "sm_data_len" being negative.
- */
- sm_data_len = sm_len - (1 + udh_len);
- if (sm_data_len == 0)
- return; /* no more data */
-
- /*
- * Try reassembling the packets.
- * XXX - fragment numbers are 1-origin, but the fragment number
- * field could be 0.
- * Should we flag a fragmented message with a fragment number field
- * of 0?
- * What if the fragment count is 0? Should we flag that as well?
- */
- if ( is_fragmented && frag != 0 && frags != 0 &&
- tvb_bytes_exist (tvb, i, sm_data_len) ) {
- try_gsm_sms_ud_reassemble = TRUE;
- save_fragmented = pinfo->fragmented;
- pinfo->fragmented = TRUE;
- fd_sm = fragment_add_seq_check (tvb, i, pinfo,
- sm_id, /* guint32 ID for fragments belonging together */
- sm_fragment_table, /* list of message fragments */
- sm_reassembled_table, /* list of reassembled messages */
- frag-1, /* guint32 fragment sequence number */
- sm_data_len, /* guint32 fragment length */
- (frag != frags)); /* More fragments? */
- if (fd_sm) {
- reassembled = TRUE;
- reassembled_in = fd_sm->reassembled_in;
- }
- sm_tvb = process_reassembled_data(tvb, i, pinfo,
- "Reassembled Short Message", fd_sm, &sm_frag_items,
- NULL, sm_tree);
- if (reassembled) { /* Reassembled */
- col_append_str (pinfo->cinfo, COL_INFO,
- " (Short Message Reassembled)");
- } else {
- /* Not last packet of reassembled Short Message */
- col_append_fstr (pinfo->cinfo, COL_INFO,
- " (Short Message fragment %u of %u)", frag, frags);
- }
- } /* Else: not fragmented */
-
- if (! sm_tvb) /* One single Short Message, or not reassembled */
- sm_tvb = tvb_new_subset_remaining (tvb, i);
- /* Try calling a subdissector */
- if (sm_tvb) {
- if ((reassembled && pinfo->fd->num == reassembled_in)
- || frag==0 || (frag==1 && try_dissect_1st_frag)) {
- /* Try calling a subdissector only if:
- * - the Short Message is reassembled in this very packet,
- * - the Short Message consists of only one "fragment",
- * - the preference "Always Try Dissection for 1st SM fragment"
- * is switched on, and this is the SM's 1st fragment. */
- if ( ports_available ) {
- gboolean disallow_write = FALSE; /* TRUE if we changed writability
- of the columns of the summary */
- if ( prevent_subdissectors_changing_columns && col_get_writable(pinfo->cinfo) ) {
- disallow_write = TRUE;
- col_set_writable(pinfo->cinfo, FALSE);
- }
-
- if ( port_number_udh_means_wsp ) {
- call_dissector (wsp_handle, sm_tvb, pinfo, top_tree);
- } else {
- if (! dissector_try_uint(gsm_sms_dissector_table, p_src,
- sm_tvb, pinfo, top_tree)) {
- if (! dissector_try_uint(gsm_sms_dissector_table, p_dst,
- sm_tvb, pinfo, top_tree)) {
- if (sm_tree) { /* Only display if needed */
- proto_tree_add_text (sm_tree, sm_tvb, 0, -1,
- "Short Message body");
- }
- }
- }
- }
-
- if ( disallow_write )
- col_set_writable(pinfo->cinfo, TRUE);
- } else { /* No ports IE */
- proto_tree_add_text (sm_tree, sm_tvb, 0, -1,
- "Short Message body");
- }
- } else {
- /* The packet is not reassembled,
- * or it is reassembled in another packet */
- proto_tree_add_text (sm_tree, sm_tvb, 0, -1,
- "Unreassembled Short Message fragment %u of %u",
- frag, frags);
- }
- }
-
- if (try_gsm_sms_ud_reassemble) /* Clean up defragmentation */
- pinfo->fragmented = save_fragmented;
- return;
+ tvbuff_t *sm_tvb = NULL;
+ proto_item *ti;
+ proto_tree *subtree, *tree;
+ guint8 udh_len, udh, len;
+ guint sm_len = tvb_reported_length(tvb);
+ guint sm_data_len;
+ guint32 i = 0;
+ /* Multiple Messages UDH */
+ gboolean is_fragmented = FALSE;
+ fragment_data *fd_sm = NULL;
+ guint16 sm_id = 0;
+ guint16 frags = 0;
+ guint16 frag = 0;
+ gboolean save_fragmented = FALSE;
+ gboolean try_gsm_sms_ud_reassemble = FALSE;
+ /* SMS Message reassembly */
+ gboolean reassembled = FALSE;
+ guint32 reassembled_in = 0;
+ /* Port Number UDH */
+ guint16 p_src = 0;
+ guint16 p_dst = 0;
+ gboolean ports_available = FALSE;
+
+ udh_len = tvb_get_guint8(tvb, i++);
+ ti = proto_tree_add_uint(sm_tree, hf_gsm_sms_udh_length, tvb, 0, 1, udh_len);
+ tree = proto_item_add_subtree(ti, ett_udh);
+ while (i < udh_len) {
+ udh = tvb_get_guint8(tvb, i++);
+ len = tvb_get_guint8(tvb, i++);
+ subtree = proto_tree_add_uint(tree, hf_gsm_sms_udh_iei,
+ tvb, i-2, 2+len, udh);
+ switch (udh) {
+ case 0x00: /* Multiple messages - 8-bit message ID */
+ if (len == 3) {
+ sm_id = tvb_get_guint8(tvb, i++);
+ frags = tvb_get_guint8(tvb, i++);
+ frag = tvb_get_guint8(tvb, i++);
+ if (frags > 1)
+ is_fragmented = TRUE;
+ proto_item_append_text(subtree,
+ ": message %u, part %u of %u", sm_id, frag, frags);
+ subtree = proto_item_add_subtree(subtree,
+ ett_udh_ie);
+ proto_tree_add_uint(subtree,
+ hf_gsm_sms_udh_multiple_messages_msg_id,
+ tvb, i-3, 1, sm_id);
+ proto_tree_add_uint(subtree,
+ hf_gsm_sms_udh_multiple_messages_msg_parts,
+ tvb, i-2, 1, frags);
+ proto_tree_add_uint(subtree,
+ hf_gsm_sms_udh_multiple_messages_msg_part,
+ tvb, i-1, 1, frag);
+ } else {
+ proto_item_append_text(subtree, " - Invalid format!");
+ i += len;
+ }
+ break;
+
+ case 0x08: /* Multiple messages - 16-bit message ID */
+ if (len == 4) {
+ sm_id = tvb_get_ntohs(tvb, i); i += 2;
+ frags = tvb_get_guint8(tvb, i++);
+ frag = tvb_get_guint8(tvb, i++);
+ if (frags > 1)
+ is_fragmented = TRUE;
+ proto_item_append_text(subtree,
+ ": message %u, part %u of %u", sm_id, frag, frags);
+ subtree = proto_item_add_subtree(subtree,
+ ett_udh_ie);
+ proto_tree_add_uint(subtree,
+ hf_gsm_sms_udh_multiple_messages_msg_id,
+ tvb, i-4, 2, sm_id);
+ proto_tree_add_uint(subtree,
+ hf_gsm_sms_udh_multiple_messages_msg_parts,
+ tvb, i-2, 1, frags);
+ proto_tree_add_uint(subtree,
+ hf_gsm_sms_udh_multiple_messages_msg_part,
+ tvb, i-1, 1, frag);
+ } else {
+ proto_item_append_text(subtree, " - Invalid format!");
+ i += len;
+ }
+ break;
+
+ case 0x04: /* Port Number UDH - 8-bit address */
+ if (len == 2) { /* Port fields */
+ p_dst = tvb_get_guint8(tvb, i++);
+ p_src = tvb_get_guint8(tvb, i++);
+ proto_item_append_text(subtree,
+ ": source port %u, destination port %u",
+ p_src, p_dst);
+ subtree = proto_item_add_subtree(subtree, ett_udh_ie);
+ proto_tree_add_uint(subtree, hf_gsm_sms_udh_ports_dst,
+ tvb, i-2, 1, p_dst);
+ proto_tree_add_uint(subtree, hf_gsm_sms_udh_ports_src,
+ tvb, i-1, 1, p_src);
+ ports_available = TRUE;
+ } else {
+ proto_item_append_text(subtree, " - Invalid format!");
+ i += len;
+ }
+ break;
+
+ case 0x05: /* Port Number UDH - 16-bit address */
+ if (len == 4) { /* Port fields */
+ p_dst = tvb_get_ntohs(tvb, i); i += 2;
+ p_src = tvb_get_ntohs(tvb, i); i += 2;
+ proto_item_append_text(subtree,
+ ": source port %u, destination port %u",
+ p_src, p_dst);
+ subtree = proto_item_add_subtree(subtree, ett_udh_ie);
+ proto_tree_add_uint(subtree, hf_gsm_sms_udh_ports_dst,
+ tvb, i-4, 2, p_dst);
+ proto_tree_add_uint(subtree, hf_gsm_sms_udh_ports_src,
+ tvb, i-2, 2, p_src);
+ ports_available = TRUE;
+ } else {
+ proto_item_append_text(subtree, " - Invalid format!");
+ i += len;
+ }
+ break;
+
+ default:
+ i += len;
+ break;
+ }
+ }
+ if (tvb_reported_length_remaining(tvb, i) <= 0)
+ return; /* No more data */
+
+ /*
+ * XXX - where does the "1" come from? If it weren't there,
+ * "sm_data_len" would, I think, be the same as
+ * "tvb_reported_length_remaining(tvb, i)".
+ *
+ * I think that the above check ensures that "sm_len" won't
+ * be less than or equal to "udh_len", so it ensures that
+ * "sm_len" won't be less than "1 + udh_len", so we don't
+ * have to worry about "sm_data_len" being negative.
+ */
+ sm_data_len = sm_len - (1 + udh_len);
+ if (sm_data_len == 0)
+ return; /* no more data */
+
+ /*
+ * Try reassembling the packets.
+ * XXX - fragment numbers are 1-origin, but the fragment number
+ * field could be 0.
+ * Should we flag a fragmented message with a fragment number field
+ * of 0?
+ * What if the fragment count is 0? Should we flag that as well?
+ */
+ if (is_fragmented && frag != 0 && frags != 0 &&
+ tvb_bytes_exist(tvb, i, sm_data_len)) {
+ try_gsm_sms_ud_reassemble = TRUE;
+ save_fragmented = pinfo->fragmented;
+ pinfo->fragmented = TRUE;
+ fd_sm = fragment_add_seq_check(tvb, i, pinfo,
+ sm_id, /* guint32 ID for fragments belonging together */
+ sm_fragment_table, /* list of message fragments */
+ sm_reassembled_table, /* list of reassembled messages */
+ frag-1, /* guint32 fragment sequence number */
+ sm_data_len, /* guint32 fragment length */
+ (frag != frags)); /* More fragments? */
+ if (fd_sm) {
+ reassembled = TRUE;
+ reassembled_in = fd_sm->reassembled_in;
+ }
+ sm_tvb = process_reassembled_data(tvb, i, pinfo,
+ "Reassembled Short Message", fd_sm, &sm_frag_items,
+ NULL, sm_tree);
+ if (reassembled) { /* Reassembled */
+ col_append_str(pinfo->cinfo, COL_INFO,
+ " (Short Message Reassembled)");
+ } else {
+ /* Not last packet of reassembled Short Message */
+ col_append_fstr(pinfo->cinfo, COL_INFO,
+ " (Short Message fragment %u of %u)", frag, frags);
+ }
+ } /* Else: not fragmented */
+
+ if (! sm_tvb) /* One single Short Message, or not reassembled */
+ sm_tvb = tvb_new_subset_remaining(tvb, i);
+ /* Try calling a subdissector */
+ if (sm_tvb) {
+ if ((reassembled && pinfo->fd->num == reassembled_in)
+ || frag==0 || (frag==1 && try_dissect_1st_frag)) {
+ /* Try calling a subdissector only if:
+ * - the Short Message is reassembled in this very packet,
+ * - the Short Message consists of only one "fragment",
+ * - the preference "Always Try Dissection for 1st SM fragment"
+ * is switched on, and this is the SM's 1st fragment. */
+ if (ports_available) {
+ gboolean disallow_write = FALSE; /* TRUE if we changed writability
+ of the columns of the summary */
+ if (prevent_subdissectors_changing_columns && col_get_writable(pinfo->cinfo)) {
+ disallow_write = TRUE;
+ col_set_writable(pinfo->cinfo, FALSE);
+ }
+
+ if (port_number_udh_means_wsp) {
+ call_dissector(wsp_handle, sm_tvb, pinfo, top_tree);
+ } else {
+ if (! dissector_try_uint(gsm_sms_dissector_table, p_src,
+ sm_tvb, pinfo, top_tree)) {
+ if (! dissector_try_uint(gsm_sms_dissector_table, p_dst,
+ sm_tvb, pinfo, top_tree)) {
+ if (sm_tree) { /* Only display if needed */
+ proto_tree_add_text(sm_tree, sm_tvb, 0, -1,
+ "Short Message body");
+ }
+ }
+ }
+ }
+
+ if (disallow_write)
+ col_set_writable(pinfo->cinfo, TRUE);
+ } else { /* No ports IE */
+ proto_tree_add_text(sm_tree, sm_tvb, 0, -1,
+ "Short Message body");
+ }
+ } else {
+ /* The packet is not reassembled,
+ * or it is reassembled in another packet */
+ proto_tree_add_text(sm_tree, sm_tvb, 0, -1,
+ "Unreassembled Short Message fragment %u of %u",
+ frag, frags);
+ }
+ }
+
+ if (try_gsm_sms_ud_reassemble) /* Clean up defragmentation */
+ pinfo->fragmented = save_fragmented;
+ return;
}
static void
dissect_gsm_sms_ud(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti;
- proto_tree *subtree;
- ti = proto_tree_add_item(tree, proto_gsm_sms_ud, tvb, 0, -1, ENC_NA);
- subtree = proto_item_add_subtree(ti, ett_gsm_sms);
- parse_gsm_sms_ud_message(subtree, tvb, pinfo, tree);
+ proto_item *ti;
+ proto_tree *subtree;
+
+ ti = proto_tree_add_item(tree, proto_gsm_sms_ud, tvb, 0, -1, ENC_NA);
+ subtree = proto_item_add_subtree(ti, ett_gsm_sms);
+ parse_gsm_sms_ud_message(subtree, tvb, pinfo, tree);
}
/* Register the protocol with Wireshark */
void
proto_register_gsm_sms_ud(void)
{
- module_t *gsm_sms_ud_module; /* Preferences for GSM SMS UD */
+ module_t *gsm_sms_ud_module; /* Preferences for GSM SMS UD */
- /* Setup list of header fields */
+ /* Setup list of header fields */
static hf_register_info hf[] = {
- /*
- * User Data Header
- */
- { &hf_gsm_sms_udh_iei,
- { "IE Id", "gsm-sms-ud.udh.iei",
- FT_UINT8, BASE_HEX, VALS(vals_udh_iei), 0x00,
- "Name of the User Data Header Information Element.",
- HFILL
- }
- },
- { &hf_gsm_sms_udh_length,
- { "UDH Length", "gsm-sms-ud.udh.len",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- "Length of the User Data Header (bytes)",
- HFILL
- }
- },
- { &hf_gsm_sms_udh_multiple_messages,
- { "Multiple messages UDH", "gsm-sms-ud.udh.mm",
- FT_NONE, BASE_NONE, NULL, 0x00,
- "Multiple messages User Data Header",
- HFILL
- }
- },
- { &hf_gsm_sms_udh_multiple_messages_msg_id,
- { "Message identifier", "gsm-sms-ud.udh.mm.msg_id",
- FT_UINT16, BASE_DEC, NULL, 0x00,
- "Identification of the message",
- HFILL
- }
- },
- { &hf_gsm_sms_udh_multiple_messages_msg_parts,
- { "Message parts", "gsm-sms-ud.udh.mm.msg_parts",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- "Total number of message parts (fragments)",
- HFILL
- }
- },
- { &hf_gsm_sms_udh_multiple_messages_msg_part,
- { "Message part number", "gsm-sms-ud.udh.mm.msg_part",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- "Message part (fragment) sequence number",
- HFILL
- }
- },
- { &hf_gsm_sms_udh_ports,
- { "Port number UDH", "gsm-sms-ud.udh.ports",
- FT_NONE, BASE_NONE, NULL, 0x00,
- "Port number User Data Header",
- HFILL
- }
- },
- { &hf_gsm_sms_udh_ports_src,
- { "Source port", "gsm-sms-ud.udh.ports.src",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- NULL,
- HFILL
- }
- },
- { &hf_gsm_sms_udh_ports_dst,
- { "Destination port", "gsm-sms-ud.udh.ports.dst",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- NULL,
- HFILL
- }
- },
- /*
- * Short Message fragment reassembly
- */
- { &hf_gsm_sms_ud_fragments,
- { "Short Message fragments", "gsm-sms-ud.fragments",
- FT_NONE, BASE_NONE, NULL, 0x00,
- "GSM Short Message fragments",
- HFILL
- }
- },
- { &hf_gsm_sms_ud_fragment,
- { "Short Message fragment", "gsm-sms-ud.fragment",
- FT_FRAMENUM, BASE_NONE, NULL, 0x00,
- "GSM Short Message fragment",
- HFILL
- }
- },
- { &hf_gsm_sms_ud_fragment_overlap,
- { "Short Message fragment overlap", "gsm-sms-ud.fragment.overlap",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "GSM Short Message fragment overlaps with other fragment(s)",
- HFILL
- }
- },
- { &hf_gsm_sms_ud_fragment_overlap_conflicts,
- { "Short Message fragment overlapping with conflicting data",
- "gsm-sms-ud.fragment.overlap.conflicts",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "GSM Short Message fragment overlaps with conflicting data",
- HFILL
- }
- },
- { &hf_gsm_sms_ud_fragment_multiple_tails,
- { "Short Message has multiple tail fragments",
- "gsm-sms-ud.fragment.multiple_tails",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "GSM Short Message fragment has multiple tail fragments",
- HFILL
- }
- },
- { &hf_gsm_sms_ud_fragment_too_long_fragment,
- { "Short Message fragment too long",
- "gsm-sms-ud.fragment.too_long_fragment",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "GSM Short Message fragment data goes beyond the packet end",
- HFILL
- }
- },
- { &hf_gsm_sms_ud_fragment_error,
- { "Short Message defragmentation error", "gsm-sms-ud.fragment.error",
- FT_FRAMENUM, BASE_NONE, NULL, 0x00,
- "GSM Short Message defragmentation error due to illegal fragments",
- HFILL
- }
- },
- { &hf_gsm_sms_ud_fragment_count,
- { "Short Message fragment count", "gsm-sms-ud.fragment.count",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- NULL, HFILL
- }
- },
- { &hf_gsm_sms_ud_reassembled_in,
- { "Reassembled in",
- "gsm-sms-ud.reassembled.in",
- FT_FRAMENUM, BASE_NONE, NULL, 0x00,
- "GSM Short Message has been reassembled in this packet.", HFILL
- }
- },
- { &hf_gsm_sms_ud_reassembled_length,
- { "Reassembled Short Message length",
- "gsm-sms-ud.reassembled.length",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- "The total length of the reassembled payload", HFILL
- }
- },
- };
+ /*
+ * User Data Header
+ */
+ { &hf_gsm_sms_udh_iei,
+ { "IE Id", "gsm-sms-ud.udh.iei",
+ FT_UINT8, BASE_HEX, VALS(vals_udh_iei), 0x00,
+ "Name of the User Data Header Information Element.",
+ HFILL
+ }
+ },
+ { &hf_gsm_sms_udh_length,
+ { "UDH Length", "gsm-sms-ud.udh.len",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ "Length of the User Data Header (bytes)",
+ HFILL
+ }
+ },
+ { &hf_gsm_sms_udh_multiple_messages,
+ { "Multiple messages UDH", "gsm-sms-ud.udh.mm",
+ FT_NONE, BASE_NONE, NULL, 0x00,
+ "Multiple messages User Data Header",
+ HFILL
+ }
+ },
+ { &hf_gsm_sms_udh_multiple_messages_msg_id,
+ { "Message identifier", "gsm-sms-ud.udh.mm.msg_id",
+ FT_UINT16, BASE_DEC, NULL, 0x00,
+ "Identification of the message",
+ HFILL
+ }
+ },
+ { &hf_gsm_sms_udh_multiple_messages_msg_parts,
+ { "Message parts", "gsm-sms-ud.udh.mm.msg_parts",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ "Total number of message parts (fragments)",
+ HFILL
+ }
+ },
+ { &hf_gsm_sms_udh_multiple_messages_msg_part,
+ { "Message part number", "gsm-sms-ud.udh.mm.msg_part",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ "Message part (fragment) sequence number",
+ HFILL
+ }
+ },
+ { &hf_gsm_sms_udh_ports,
+ { "Port number UDH", "gsm-sms-ud.udh.ports",
+ FT_NONE, BASE_NONE, NULL, 0x00,
+ "Port number User Data Header",
+ HFILL
+ }
+ },
+ { &hf_gsm_sms_udh_ports_src,
+ { "Source port", "gsm-sms-ud.udh.ports.src",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ NULL,
+ HFILL
+ }
+ },
+ { &hf_gsm_sms_udh_ports_dst,
+ { "Destination port", "gsm-sms-ud.udh.ports.dst",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ NULL,
+ HFILL
+ }
+ },
+ /*
+ * Short Message fragment reassembly
+ */
+ { &hf_gsm_sms_ud_fragments,
+ { "Short Message fragments", "gsm-sms-ud.fragments",
+ FT_NONE, BASE_NONE, NULL, 0x00,
+ "GSM Short Message fragments",
+ HFILL
+ }
+ },
+ { &hf_gsm_sms_ud_fragment,
+ { "Short Message fragment", "gsm-sms-ud.fragment",
+ FT_FRAMENUM, BASE_NONE, NULL, 0x00,
+ "GSM Short Message fragment",
+ HFILL
+ }
+ },
+ { &hf_gsm_sms_ud_fragment_overlap,
+ { "Short Message fragment overlap", "gsm-sms-ud.fragment.overlap",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "GSM Short Message fragment overlaps with other fragment(s)",
+ HFILL
+ }
+ },
+ { &hf_gsm_sms_ud_fragment_overlap_conflicts,
+ { "Short Message fragment overlapping with conflicting data",
+ "gsm-sms-ud.fragment.overlap.conflicts",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "GSM Short Message fragment overlaps with conflicting data",
+ HFILL
+ }
+ },
+ { &hf_gsm_sms_ud_fragment_multiple_tails,
+ { "Short Message has multiple tail fragments",
+ "gsm-sms-ud.fragment.multiple_tails",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "GSM Short Message fragment has multiple tail fragments",
+ HFILL
+ }
+ },
+ { &hf_gsm_sms_ud_fragment_too_long_fragment,
+ { "Short Message fragment too long",
+ "gsm-sms-ud.fragment.too_long_fragment",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "GSM Short Message fragment data goes beyond the packet end",
+ HFILL
+ }
+ },
+ { &hf_gsm_sms_ud_fragment_error,
+ { "Short Message defragmentation error", "gsm-sms-ud.fragment.error",
+ FT_FRAMENUM, BASE_NONE, NULL, 0x00,
+ "GSM Short Message defragmentation error due to illegal fragments",
+ HFILL
+ }
+ },
+ { &hf_gsm_sms_ud_fragment_count,
+ { "Short Message fragment count", "gsm-sms-ud.fragment.count",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ NULL,
+ HFILL
+ }
+ },
+ { &hf_gsm_sms_ud_reassembled_in,
+ { "Reassembled in",
+ "gsm-sms-ud.reassembled.in",
+ FT_FRAMENUM, BASE_NONE, NULL, 0x00,
+ "GSM Short Message has been reassembled in this packet.",
+ HFILL
+ }
+ },
+ { &hf_gsm_sms_ud_reassembled_length,
+ { "Reassembled Short Message length",
+ "gsm-sms-ud.reassembled.length",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "The total length of the reassembled payload",
+ HFILL
+ }
+ },
+ };
static gint *ett[] = {
- &ett_gsm_sms,
- &ett_udh,
- &ett_udh_ie,
- &ett_gsm_sms_ud_fragment,
- &ett_gsm_sms_ud_fragments,
+ &ett_gsm_sms,
+ &ett_udh,
+ &ett_udh_ie,
+ &ett_gsm_sms_ud_fragment,
+ &ett_gsm_sms_ud_fragments,
};
/* Register the protocol name and description */
proto_gsm_sms_ud = proto_register_protocol(
- "GSM Short Message Service User Data", /* Name */
- "GSM SMS UD", /* Short name */
- "gsm-sms-ud"); /* Filter name */
+ "GSM Short Message Service User Data", /* Name */
+ "GSM SMS UD", /* Short name */
+ "gsm-sms-ud"); /* Filter name */
/* Required function calls to register header fields and subtrees used */
proto_register_field_array(proto_gsm_sms_ud, hf, array_length(hf));
@@ -608,39 +616,39 @@ proto_register_gsm_sms_ud(void)
/* Subdissector code */
gsm_sms_dissector_table = register_dissector_table("gsm-sms-ud.udh.port",
- "GSM SMS port IE in UDH", FT_UINT16, BASE_DEC);
+ "GSM SMS port IE in UDH", FT_UINT16, BASE_DEC);
/* Preferences for GSM SMS UD */
- gsm_sms_ud_module = prefs_register_protocol (proto_gsm_sms_ud, NULL);
- prefs_register_bool_preference (gsm_sms_ud_module,
- "port_number_udh_means_wsp",
- "Port Number IE in UDH always triggers CL-WSP dissection",
- "Always decode a GSM Short Message as Connectionless WSP "
- "if a Port Number Information Element is present "
- "in the SMS User Data Header.",
- &port_number_udh_means_wsp);
- prefs_register_bool_preference (gsm_sms_ud_module, "try_dissect_1st_fragment",
- "Always try subdissection of 1st Short Message fragment",
- "Always try subdissection of the 1st fragment of a fragmented "
- "GSM Short Message. If reassembly is possible, the Short Message "
- "may be dissected twice (once as a short frame, once in its "
- "entirety).",
- &try_dissect_1st_frag);
- prefs_register_bool_preference (gsm_sms_ud_module, "prevent_dissectors_chg_cols",
- "Prevent sub-dissectors from changing column data",
- "Prevent sub-dissectors from replacing column data with their "
- "own. Eg. Prevent WSP dissector overwriting SMPP information.",
- &prevent_subdissectors_changing_columns);
+ gsm_sms_ud_module = prefs_register_protocol(proto_gsm_sms_ud, NULL);
+ prefs_register_bool_preference(gsm_sms_ud_module,
+ "port_number_udh_means_wsp",
+ "Port Number IE in UDH always triggers CL-WSP dissection",
+ "Always decode a GSM Short Message as Connectionless WSP "
+ "if a Port Number Information Element is present "
+ "in the SMS User Data Header.",
+ &port_number_udh_means_wsp);
+ prefs_register_bool_preference(gsm_sms_ud_module, "try_dissect_1st_fragment",
+ "Always try subdissection of 1st Short Message fragment",
+ "Always try subdissection of the 1st fragment of a fragmented "
+ "GSM Short Message. If reassembly is possible, the Short Message "
+ "may be dissected twice (once as a short frame, once in its "
+ "entirety).",
+ &try_dissect_1st_frag);
+ prefs_register_bool_preference(gsm_sms_ud_module, "prevent_dissectors_chg_cols",
+ "Prevent sub-dissectors from changing column data",
+ "Prevent sub-dissectors from replacing column data with their "
+ "own. Eg. Prevent WSP dissector overwriting SMPP information.",
+ &prevent_subdissectors_changing_columns);
register_dissector("gsm-sms-ud", dissect_gsm_sms_ud, proto_gsm_sms_ud);
/* GSM SMS UD dissector initialization routines */
- register_init_routine (gsm_sms_ud_defragment_init);
+ register_init_routine(gsm_sms_ud_defragment_init);
}
void
proto_reg_handoff_gsm_sms_ud(void)
{
- wsp_handle = find_dissector("wsp-cl");
- DISSECTOR_ASSERT(wsp_handle);
+ wsp_handle = find_dissector("wsp-cl");
+ DISSECTOR_ASSERT(wsp_handle);
}
diff --git a/epan/dissectors/packet-gssapi.c b/epan/dissectors/packet-gssapi.c
index ddfaf1ad92..65ec2c462c 100644
--- a/epan/dissectors/packet-gssapi.c
+++ b/epan/dissectors/packet-gssapi.c
@@ -29,10 +29,6 @@
# include "config.h"
#endif
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
#include <string.h>
#include <glib.h>
@@ -137,7 +133,7 @@ gssapi_oid_hash(gconstpointer k)
const char *key = (const char *)k;
guint hash = 0, i;
- for (i = 0; i < strlen(key); i++)
+ for (i = 0; key[i]; i++)
hash += key[i];
return hash;
diff --git a/epan/dissectors/packet-gtp.c b/epan/dissectors/packet-gtp.c
index 69d4979dd5..ff0bf7e00c 100644
--- a/epan/dissectors/packet-gtp.c
+++ b/epan/dissectors/packet-gtp.c
@@ -93,6 +93,7 @@ void proto_reg_handoff_gtp(void);
static int proto_gtp = -1;
/*KTi*/
+static int hf_gtp_ie_id = -1;
static int hf_gtp_response_in = -1;
static int hf_gtp_response_to = -1;
static int hf_gtp_time = -1;
@@ -139,7 +140,6 @@ static int hf_gtp_map_cause = -1;
static int hf_gtp_message_type = -1;
static int hf_gtp_ms_reason = -1;
static int hf_gtp_ms_valid = -1;
-static int hf_gtp_msisdn = -1;
static int hf_gtp_next = -1;
static int hf_gtp_npdu_number = -1;
static int hf_gtp_node_ipv4 = -1;
@@ -171,6 +171,16 @@ static int hf_gtp_qos_guar_ul = -1;
static int hf_gtp_qos_guar_dl = -1;
static int hf_gtp_qos_src_stat_desc = -1;
static int hf_gtp_qos_sig_ind = -1;
+static int hf_gtp_qos_arp_pvi = -1;
+static int hf_gtp_qos_arp_pl = -1;
+static int hf_gtp_qos_arp_pci = -1;
+static int hf_gtp_qos_qci = -1;
+static int hf_gtp_qos_ul_mbr = -1;
+static int hf_gtp_qos_dl_mbr = -1;
+static int hf_gtp_qos_ul_gbr = -1;
+static int hf_gtp_qos_dl_gbr = -1;
+static int hf_gtp_qos_ul_apn_ambr = -1;
+static int hf_gtp_qos_dl_apn_ambr = -1;
static int hf_gtp_pkt_flow_id = -1;
static int hf_gtp_rab_gtpu_dn = -1;
static int hf_gtp_rab_gtpu_up = -1;
@@ -206,7 +216,6 @@ static int hf_gtp_tlli = -1;
static int hf_gtp_tr_comm = -1;
static int hf_gtp_trace_ref = -1;
static int hf_gtp_trace_type = -1;
-static int hf_gtp_unknown = -1;
static int hf_gtp_user_addr_pdp_org = -1;
static int hf_gtp_user_addr_pdp_type = -1;
static int hf_gtp_user_ipv4 = -1;
@@ -234,7 +243,6 @@ static int hf_gtp_earp_pci = -1;
static int hf_gtp_cdr_app = -1;
static int hf_gtp_cdr_rel = -1;
static int hf_gtp_cdr_ver = -1;
-static int hf_gtp_spare = -1;
static int hf_gtp_cmn_flg_ppc = -1;
static int hf_gtp_cmn_flg_mbs_srv_type = -1;
static int hf_gtp_cmn_flg_mbs_ran_pcd_rdy = -1;
@@ -254,27 +262,36 @@ static int hf_gtp_ext_gcsi = -1;
static int hf_gtp_ext_dti = -1;
static int hf_gtp_ra_prio_lcs = -1;
static int hf_gtp_bcm = -1;
+static int hf_gtp_fqdn = -1;
static int hf_gtp_rim_routing_addr = -1;
+static int hf_gtp_mbms_flow_id = -1;
+static int hf_gtp_mbms_dist_indic = -1;
+static int hf_gtp_ext_apn_ambr_ul = -1;
+static int hf_gtp_ext_apn_ambr_dl = -1;
+static int hf_gtp_ext_sub_ue_ambr_ul = -1;
+static int hf_gtp_ext_sub_ue_ambr_dl = -1;
+static int hf_gtp_ext_auth_ue_ambr_ul = -1;
+static int hf_gtp_ext_auth_ue_ambr_dl = -1;
+static int hf_gtp_ext_auth_apn_ambr_ul = -1;
+static int hf_gtp_ext_auth_apn_ambr_dl = -1;
+static int hf_gtp_ext_ggsn_back_off_time_units = -1;
+static int hf_gtp_ext_ggsn_back_off_timer = -1;
+static int hf_gtp_higher_br_16mb_flg = -1;
+static int hf_gtp_max_mbr_apn_ambr_ul = -1;
+static int hf_gtp_max_mbr_apn_ambr_dl = -1;
/* Initialize the subtree pointers */
static gint ett_gtp = -1;
static gint ett_gtp_flags = -1;
static gint ett_gtp_ext = -1;
static gint ett_gtp_ext_hdr = -1;
-static gint ett_gtp_rai = -1;
static gint ett_gtp_qos = -1;
-static gint ett_gtp_auth_tri = -1;
+static gint ett_gtp_qos_arp = -1;
static gint ett_gtp_flow_ii = -1;
-static gint ett_gtp_rab_cntxt = -1;
static gint ett_gtp_rp = -1;
static gint ett_gtp_pkt_flow_id = -1;
-static gint ett_gtp_chrg_char = -1;
-static gint ett_gtp_user = -1;
-static gint ett_gtp_mm = -1;
static gint ett_gtp_trip = -1;
static gint ett_gtp_quint = -1;
-static gint ett_gtp_pdp = -1;
-static gint ett_gtp_apn = -1;
static gint ett_gtp_proto = -1;
static gint ett_gtp_gsn_addr = -1;
static gint ett_gtp_tft = -1;
@@ -282,51 +299,12 @@ static gint ett_gtp_tft_pf = -1;
static gint ett_gtp_tft_flags = -1;
static gint ett_gtp_rab_setup = -1;
static gint ett_gtp_hdr_list = -1;
-static gint ett_gtp_chrg_addr = -1;
static gint ett_gtp_node_addr = -1;
static gint ett_gtp_rel_pack = -1;
static gint ett_gtp_can_pack = -1;
static gint ett_gtp_data_resp = -1;
-static gint ett_gtp_priv_ext = -1;
static gint ett_gtp_net_cap = -1;
-static gint ett_gtp_ext_tree_apn_res = -1;
-static gint ett_gtp_ext_rat_type = -1;
-static gint ett_gtp_ext_imeisv = -1;
-static gint ett_gtp_ext_ran_tr_cont = -1;
-static gint ett_gtp_ext_pdp_cont_prio = -1;
-static gint ett_gtp_ext_ssgn_no = -1;
-static gint ett_gtp_ext_rab_setup_inf = -1;
-static gint ett_gtp_ext_common_flgs = -1;
-static gint ett_gtp_ext_usr_loc_inf = -1;
-static gint ett_gtp_ext_ms_time_zone = -1;
-static gint ett_gtp_ext_camel_chg_inf_con = -1;
-static gint ett_GTP_EXT_MBMS_UE_CTX = -1;
-static gint ett_gtp_ext_tmgi = -1;
static gint ett_gtp_tmgi = -1;
-static gint ett_gtp_ext_rim_ra = -1;
-static gint ett_gtp_ext_mbms_prot_conf_opt = -1;
-static gint ett_gtp_ext_mbms_sa = -1;
-static gint ett_gtp_ext_bms_ses_dur = -1;
-static gint ett_gtp_ext_src_rnc_pdp_ctx_inf = -1;
-static gint ett_gtp_ext_add_trs_inf = -1;
-static gint ett_gtp_ext_hop_count = -1;
-static gint ett_gtp_ext_sel_plmn_id = -1;
-static gint ett_gtp_ext_mbms_ses_id = -1;
-static gint ett_gtp_ext_mbms_2g_3g_ind = -1;
-static gint ett_gtp_ext_enh_nsapi = -1;
-static gint ett_gtp_ext_ad_mbms_trs_inf = -1;
-static gint ett_gtp_ext_mbms_ses_id_rep_no = -1;
-static gint ett_gtp_ext_mbms_time_to_data_tr = -1;
-static gint ett_gtp_ext_ps_ho_req_ctx = -1;
-static gint ett_gtp_ext_bss_cont = -1;
-static gint ett_gtp_ext_cell_id = -1;
-static gint ett_gtp_ext_pdu_no = -1;
-static gint ett_gtp_ext_bssgp_cause = -1;
-static gint ett_gtp_ext_ra_prio_lcs = -1;
-static gint ett_gtp_ext_ps_handover_xid = -1;
-static gint ett_gtp_target_id = -1;
-static gint ett_gtp_utran_cont = -1;
-static gint ett_gtp_bcm = -1;
static gint ett_gtp_cdr_ver = -1;
static gint ett_gtp_cdr_dr = -1;
static gint ett_gtp_uli_rai = -1;
@@ -587,7 +565,7 @@ static const value_string gtp_message_type[] = {
{ 126, "Unknown message(For future use)"},
{ 127, "Unknown message(For future use)"},
#endif
- {GTP_MS_INFO_CNG_NOT_REQ, "MS Info Change Notification Request"},
+ {GTP_MS_INFO_CNG_NOT_REQ, "MS Info Change Notification Request"},
{GTP_MS_INFO_CNG_NOT_RES, "MS Info Change Notification Response"},
/* 130-239 For future use. Shall not be sent. If received,
* shall be treated as an Unknown message.
@@ -740,43 +718,43 @@ static value_string_ext gtp_message_type_ext = VALUE_STRING_EXT_INIT(gtp_message
#define GTP_EXT_PS_HO_REQ_CTX 0xAC /* 3G 172 TLV PS Handover Request Context 7.7.71 */
#define GTP_EXT_BSS_CONT 0xAD /* 3G 173 TLV BSS Container 7.7.72 */
#define GTP_EXT_CELL_ID 0xAE /* 3G 174 TLV Cell Identification 7.7.73 */
-#define GTP_EXT_PDU_NO 0xAF /* 3G 175 TLV PDU Numbers 7.7.74 */
-#define GTP_EXT_BSSGP_CAUSE 0xB0 /* 3G 176 TLV BSSGP Cause 7.7.75 */
-#define GTP_EXT_REQ_MBMS_BEARER_CAP 0xB1 /* 3G 177 TLV Required MBMS bearer capabilities 7.7.76 */
-#define GTP_EXT_RIM_ROUTING_ADDR_DISC 0xB2 /* 3G 178 TLV RIM Routing Address Discriminator 7.7.77 */
-#define GTP_EXT_LIST_OF_SETUP_PFCS 0xB3 /* 3G 179 TLV List of set-up PFCs 7.7.78 */
-#define GTP_EXT_PS_HANDOVER_XIP_PAR 0xB4 /* 3G 180 TLV PS Handover XID Parameters 7.7.79 */
-#define GTP_EXT_MS_INF_CHG_REP_ACT 0xB5 /* 3G 181 TLV MS Info Change Reporting Action 7.7.80 */
-#define GTP_EXT_DIRECT_TUNNEL_FLGS 0xB6 /* 3G 182 TLV Direct Tunnel Flags 7.7.81 */
-#define GTP_EXT_CORRELATION_ID 0xB7 /* 3G 183 TLV Correlation-ID 7.7.82 */
-#define GTP_EXT_BEARER_CONTROL_MODE 0xB8 /* 3G 184 TLV Bearer Control Mode 7.7.83 */
- /* 3G 185 TLV MBMS Flow Identifier 7.7.84 */
- /* 3G 186 TLV MBMS IP Multicast Distribution 7.7.85 */
- /* 3G 187 TLV MBMS Distribution Acknowledgement 7.7.86 */
- /* 3G 188 TLV Reliable INTER RAT HANDOVER INFO 7.7.87 */
- /* 3G 189 TLV RFSP Index 7.7.88 */
- /* 3G 190 TLV Fully Qualified Domain Name (FQDN) 7.7.90 */
+#define GTP_EXT_PDU_NO 0xAF /* 3G 175 TLV PDU Numbers 7.7.74 */
+#define GTP_EXT_BSSGP_CAUSE 0xB0 /* 3G 176 TLV BSSGP Cause 7.7.75 */
+#define GTP_EXT_REQ_MBMS_BEARER_CAP 0xB1 /* 3G 177 TLV Required MBMS bearer capabilities 7.7.76 */
+#define GTP_EXT_RIM_ROUTING_ADDR_DISC 0xB2 /* 3G 178 TLV RIM Routing Address Discriminator 7.7.77 */
+#define GTP_EXT_LIST_OF_SETUP_PFCS 0xB3 /* 3G 179 TLV List of set-up PFCs 7.7.78 */
+#define GTP_EXT_PS_HANDOVER_XIP_PAR 0xB4 /* 3G 180 TLV PS Handover XID Parameters 7.7.79 */
+#define GTP_EXT_MS_INF_CHG_REP_ACT 0xB5 /* 3G 181 TLV MS Info Change Reporting Action 7.7.80 */
+#define GTP_EXT_DIRECT_TUNNEL_FLGS 0xB6 /* 3G 182 TLV Direct Tunnel Flags 7.7.81 */
+#define GTP_EXT_CORRELATION_ID 0xB7 /* 3G 183 TLV Correlation-ID 7.7.82 */
+#define GTP_EXT_BEARER_CONTROL_MODE 0xB8 /* 3G 184 TLV Bearer Control Mode 7.7.83 */
+#define GTP_EXT_MBMS_FLOW_ID 0xB9 /* 3G 185 TLV MBMS Flow Identifier 7.7.84 */
+#define GTP_EXT_MBMS_IP_MCAST_DIST 0xBA /* 3G 186 TLV MBMS IP Multicast Distribution 7.7.85 */
+#define GTP_EXT_MBMS_DIST_ACK 0xBB /* 3G 187 TLV MBMS Distribution Acknowledgement 7.7.86 */
+#define GTP_EXT_RELIABLE_IRAT_HO_INF 0xBC /* 3G 188 TLV Reliable INTER RAT HANDOVER INFO 7.7.87 */
+#define GTP_EXT_RFSP_INDEX 0xBD /* 3G 189 TLV RFSP Index 7.7.88 */
+#define GTP_EXT_FQDN 0xBE /* 3G 190 TLV Fully Qualified Domain Name (FQDN) 7.7.90 */
#define GTP_EXT_EVO_ALLO_RETE_P1 0xBF /* 3G 191 TLV Evolved Allocation/Retention Priority I 7.7.91 */
- /* 3G 192 TLV Evolved Allocation/Retention Priority II 7.7.92 */
- /* 3G 193 TLV Extended Common Flags 7.7.93 */
- /* 3G 194 TLV User CSG Information (UCI) 7.7.94 */
- /* 3G 195 TLV CSG Information Reporting Action 7.7.95 */
- /* 3G 196 TLV CSG ID 7.7.96 */
- /* 3G 197 TLV CSG Membership Indication (CMI) 7.7.97 */
- /* 3G 198 TLV Aggregate Maximum Bit Rate (AMBR) 7.7.98 */
- /* 3G 199 TLV UE Network Capability 7.7.99 */
- /* 3G 200 TLV UE-AMBR 7.7.100 */
- /* 3G 201 TLV APN-AMBR with NSAPI 7.7.101 */
- /* 3G 202 TLV GGSN Back-Off Time 7.7.102 */
- /* 3G 203 TLV Signalling Priority Indication 7.7.103 */
- /* 3G 204 TLV Signalling Priority Indication with NSAPI 7.7.104 */
- /* 3G 205 TLV Higher bitrates than 16 Mbps flag 7.7.105 */
- /* 3G 206 TLV Max MBR/APN-AMBR 7.7.106 */
- /* 3G 207 TLV Additional MM context for SRVCC 7.7.107 */
- /* 3G 208 TLV Additional flags for SRVCC 7.7.108 */
- /* 3G 209 TLV STN-SR 7.7.109 */
- /* 3G 210 TLV C-MSISDN 7.7.110 */
- /* 3G 211 TLV Extended RANAP Cause 7.7.111 */
+#define GTP_EXT_EVO_ALLO_RETE_P2 0xC0 /* 3G 192 TLV Evolved Allocation/Retention Priority II 7.7.92 */
+#define GTP_EXT_EXTENDED_COMMON_FLGS 0xC1 /* 3G 193 TLV Extended Common Flags 7.7.93 */
+#define GTP_EXT_UCI 0xC2 /* 3G 194 TLV User CSG Information (UCI) 7.7.94 */
+#define GTP_EXT_CSG_INF_REP_ACT 0xC3 /* 3G 195 TLV CSG Information Reporting Action 7.7.95 */
+#define GTP_EXT_CSG_ID 0xC4 /* 3G 196 TLV CSG ID 7.7.96 */
+#define GTP_EXT_CMI 0xC5 /* 3G 197 TLV CSG Membership Indication (CMI) 7.7.97 */
+#define GTP_EXT_AMBR 0xC6 /* 3G 198 TLV Aggregate Maximum Bit Rate (AMBR) 7.7.98 */
+#define GTP_EXT_UE_NETWORK_CAP 0xC7 /* 3G 199 TLV UE Network Capability 7.7.99 */
+#define GTP_EXT_UE_AMBR 0xC8 /* 3G 200 TLV UE-AMBR 7.7.100 */
+#define GTP_EXT_APN_AMBR_WITH_NSAPI 0xC9 /* 3G 201 TLV APN-AMBR with NSAPI 7.7.101 */
+#define GTP_EXT_GGSN_BACK_OFF_TIME 0xCA /* 3G 202 TLV GGSN Back-Off Time 7.7.102 */
+#define GTP_EXT_SIG_PRI_IND 0xCB /* 3G 203 TLV Signalling Priority Indication 7.7.103 */
+#define GTP_EXT_SIG_PRI_IND_W_NSAPI 0xCC /* 3G 204 TLV Signalling Priority Indication with NSAPI 7.7.104 */
+#define GTP_EXT_HIGHER_BR_16MB_FLG 0xCD /* 3G 205 TLV Higher bitrates than 16 Mbps flag 7.7.105 */
+#define GTP_EXT_MAX_MBR_APN_AMBR 0xCE /* 3G 206 TLV Max MBR/APN-AMBR 7.7.106 */
+#define GTP_EXT_ADD_MM_CTX_SRVCC 0xCF /* 3G 207 TLV Additional MM context for SRVCC 7.7.107 */
+#define GTP_EXT_ADD_FLGS_SRVCC 0xD0 /* 3G 208 TLV Additional flags for SRVCC 7.7.108 */
+#define GTP_EXT_STN_SR 0xD1 /* 3G 209 TLV STN-SR 7.7.109 */
+#define GTP_EXT_C_MSISDN 0xD2 /* 3G 210 TLV C-MSISDN 7.7.110 */
+#define GTP_EXT_EXT_RANAP_CAUSE 0xD3 /* 3G 211 TLV Extended RANAP Cause 7.7.111 */
/* 212-238 TLV Spare. For future use. */
/* 239-250 Reserved for the GPRS charging protocol (see GTP' in 3GPP TS 32.295 [33])*/
@@ -799,10 +777,10 @@ static const value_string gtp_val[] = {
{GTP_EXT_TLLI, "Temporary Logical Link Identity"},
{GTP_EXT_PTMSI, "Packet TMSI"},
/* 6 */ {GTP_EXT_QOS_GPRS, "Quality of Service"},
- /* 6-7 Spare */
+/* 6-7 Spare */
/* 8 */ {GTP_EXT_REORDER, "Reorder required"},
/* 9 */ {GTP_EXT_AUTH_TRI, "Authentication triplets"},
- /* 10 Spare */
+/* 10 Spare */
/* 11 */ {GTP_EXT_MAP_CAUSE, "MAP cause"},
/* 12 */ {GTP_EXT_PTMSI_SIG, "P-TMSI signature"},
/* 13 */ {GTP_EXT_MS_VALID, "MS validated"},
@@ -835,7 +813,7 @@ static const value_string gtp_val[] = {
{GTP_EXT_TRACE_REF, "Trace references"}, /* 3G */
{GTP_EXT_TRACE_TYPE, "Trace type"}, /* 3G */
/* 29 */ {GTPv1_EXT_MS_REASON, "MS not reachable reason"}, /* 3G */
- /* 117-126 Reserved for the GPRS charging protocol (see GTP' in 3GPP TS 32.295 [33]) */
+/* 117-126 Reserved for the GPRS charging protocol (see GTP' in 3GPP TS 32.295 [33]) */
/* 126 */ {GTP_EXT_TR_COMM, "Packet transfer command"}, /* charging */
/* 127 */ {GTP_EXT_CHRG_ID, "Charging ID"},
{GTP_EXT_USER_ADDR, "End user address"},
@@ -892,44 +870,44 @@ static const value_string gtp_val[] = {
{GTP_EXT_REQ_MBMS_BEARER_CAP, "Required MBMS bearer capabilities"}, /* 7.7.76 */
{GTP_EXT_RIM_ROUTING_ADDR_DISC, "RIM Routing Address Discriminator"}, /* 7.7.77 */
{GTP_EXT_LIST_OF_SETUP_PFCS, "List of set-up PFCs"}, /* 7.7.78 */
- {GTP_EXT_PS_HANDOVER_XIP_PAR, "PS Handover XID Parameters"}, /* 7.7.79 */
- {GTP_EXT_MS_INF_CHG_REP_ACT, "MS Info Change Reporting Action"}, /* 7.7.80 */
- {GTP_EXT_DIRECT_TUNNEL_FLGS, "Direct Tunnel Flags"}, /* 7.7.81 */
- {GTP_EXT_CORRELATION_ID, "Correlation-ID"}, /* 7.7.82 */
- {GTP_EXT_BEARER_CONTROL_MODE, "Bearer Control Mode"}, /* 7.7.83 */
- {185, "MBMS Flow Identifier"}, /* 7.7.84 */
- {186, "MBMS IP Multicast Distribution"}, /* 7.7.85 */
- {187, "MBMS Distribution Acknowledgement"}, /* 7.7.86 */
- {188, "Reliable INTER RAT HANDOVER INFO"}, /* 7.7.87 */
- {189, "RFSP Index"}, /* 7.7.88 */
- {190, "Fully Qualified Domain Name (FQDN)"}, /* 7.7.90 */
- {GTP_EXT_EVO_ALLO_RETE_P1, "Evolved Allocation/Retention Priority I"}, /* 7.7.91 */
- {192, "Evolved Allocation/Retention Priority II"}, /* 7.7.92 */
- {193, "Extended Common Flags"}, /* 7.7.93 */
- {194, "User CSG Information (UCI)"}, /* 7.7.94 */
- {195, "CSG Information Reporting Action"}, /* 7.7.95 */
- {196, "CSG ID"}, /* 7.7.96 */
- {197, "CSG Membership Indication (CMI)"}, /* 7.7.97 */
- {198, "Aggregate Maximum Bit Rate (AMBR)"}, /* 7.7.98 */
- {199, "UE Network Capability"}, /* 7.7.99 */
- {200, "UE-AMBR"}, /* 7.7.100 */
- {201, "APN-AMBR with NSAPI"}, /* 7.7.101 */
- {202, "GGSN Back-Off Time"}, /* 7.7.102 */
- {203, "Signalling Priority Indication"}, /* 7.7.103 */
- {204, "Signalling Priority Indication with NSAPI"}, /* 7.7.104 */
- {205, "Higher bitrates than 16 Mbps flag"}, /* 7.7.105 */
- {206, "Max MBR/APN-AMBR"}, /* 7.7.106 */
- {207, "Additional MM context for SRVCC"}, /* 7.7.107 */
- {208, "Additional flags for SRVCC"}, /* 7.7.108 */
- {209, "STN-SR"}, /* 7.7.109 */
- {210, "C-MSISDN"}, /* 7.7.110 */
- {211, "Extended RANAP Cause"}, /* 7.7.111 */
- /* 212-238 TLV Spare. For future use. */
- /* 239-250 Reserved for the GPRS charging protocol (see GTP' in 3GPP TS 32.295 [33]) */
+/* 180 */ {GTP_EXT_PS_HANDOVER_XIP_PAR, " PS Handover XID Parameters"}, /* 7.7.79 */
+/* 181 */ {GTP_EXT_MS_INF_CHG_REP_ACT, "MS Info Change Reporting Action"}, /* 7.7.80 */
+/* 182 */ {GTP_EXT_DIRECT_TUNNEL_FLGS, "Direct Tunnel Flags"}, /* 7.7.81 */
+/* 183 */ {GTP_EXT_CORRELATION_ID, "Correlation-ID"}, /* 7.7.82 */
+/* 184 */ {GTP_EXT_BEARER_CONTROL_MODE, "Bearer Control Mode"}, /* 7.7.83 */
+/* 185 */ {GTP_EXT_MBMS_FLOW_ID, "MBMS Flow Identifier"}, /* 7.7.84 */
+/* 186 */ {GTP_EXT_MBMS_IP_MCAST_DIST, "MBMS IP Multicast Distribution"}, /* 7.7.85 */
+/* 187 */ {GTP_EXT_MBMS_DIST_ACK, "MBMS Distribution Acknowledgement"}, /* 7.7.86 */
+/* 188 */ {GTP_EXT_RELIABLE_IRAT_HO_INF, "Reliable INTER RAT HANDOVER INFO"}, /* 7.7.87 */
+/* 189 */ {GTP_EXT_RFSP_INDEX, "RFSP Index"}, /* 7.7.88 */
+/* 190 */ {GTP_EXT_FQDN, "Fully Qualified Domain Name (FQDN)"}, /* 7.7.90 */
+/* 191 */ {GTP_EXT_EVO_ALLO_RETE_P1, "Evolved Allocation/Retention Priority I"}, /* 7.7.91 */
+/* 192 */ {GTP_EXT_EVO_ALLO_RETE_P2, "Evolved Allocation/Retention Priority II"}, /* 7.7.92 */
+/* 193 */ {GTP_EXT_EXTENDED_COMMON_FLGS, "Extended Common Flags"}, /* 7.7.93 */
+/* 194 */ {GTP_EXT_UCI, "User CSG Information (UCI)"}, /* 7.7.94 */
+/* 195 */ {GTP_EXT_CSG_INF_REP_ACT, "CSG Information Reporting Action"}, /* 7.7.95 */
+/* 196 */ {GTP_EXT_CSG_ID, "CSG ID"}, /* 7.7.96 */
+/* 197 */ {GTP_EXT_CMI, "CSG Membership Indication (CMI)"}, /* 7.7.97 */
+/* 198 */ {GTP_EXT_AMBR, "Aggregate Maximum Bit Rate (AMBR)"}, /* 7.7.98 */
+/* 199 */ {GTP_EXT_UE_NETWORK_CAP, "UE Network Capability"}, /* 7.7.99 */
+/* 200 */ {GTP_EXT_UE_AMBR, "UE-AMBR"}, /* 7.7.100 */
+/* 201 */ {GTP_EXT_APN_AMBR_WITH_NSAPI, "APN-AMBR with NSAPI"}, /* 7.7.101 */
+/* 202 */ {GTP_EXT_GGSN_BACK_OFF_TIME, "GGSN Back-Off Time"}, /* 7.7.102 */
+/* 203 */ {GTP_EXT_SIG_PRI_IND, "Signalling Priority Indication"}, /* 7.7.103 */
+/* 204 */ {GTP_EXT_SIG_PRI_IND_W_NSAPI, "Signalling Priority Indication with NSAPI"}, /* 7.7.104 */
+/* 205 */ {GTP_EXT_HIGHER_BR_16MB_FLG, "Higher bitrates than 16 Mbps flag"}, /* 7.7.105 */
+/* 206 */ {GTP_EXT_MAX_MBR_APN_AMBR, "Max MBR/APN-AMBR"}, /* 7.7.106 */
+/* 207 */ {GTP_EXT_ADD_MM_CTX_SRVCC, "Additional MM context for SRVCC"}, /* 7.7.107 */
+/* 208 */ {GTP_EXT_ADD_FLGS_SRVCC, "Additional flags for SRVCC"}, /* 7.7.108 */
+/* 209 */ {GTP_EXT_STN_SR, "STN-SR"}, /* 7.7.109 */
+/* 210 */ {GTP_EXT_C_MSISDN, "C-MSISDN"}, /* 7.7.110 */
+/* 211 */ {GTP_EXT_EXT_RANAP_CAUSE, "Extended RANAP Cause"}, /* 7.7.111 */
+/* 212-238 TLV Spare. For future use. */
+/* 239-250 Reserved for the GPRS charging protocol (see GTP' in 3GPP TS 32.295 [33]) */
/* 249 */ {GTP_EXT_REL_PACK, "Sequence numbers of released packets IE"}, /* charging */
/* 250 */ {GTP_EXT_CAN_PACK, "Sequence numbers of canceled packets IE"}, /* charging */
/* 251 */ {GTP_EXT_CHRG_ADDR, "Charging Gateway address"}, /* 7.7.44 */
- /* 252-254 Reserved for the GPRS charging protocol (see GTP' in 3GPP TS 32.295 [33]) */
+/* 252-254 Reserved for the GPRS charging protocol (see GTP' in 3GPP TS 32.295 [33]) */
/* 252 */ {GTP_EXT_DATA_REQ, "Data record packet"}, /* charging */
/* 253 */ {GTP_EXT_DATA_RESP, "Requests responded"}, /* charging */
/* 254 */ {GTP_EXT_NODE_ADDR, "Address of recommended node"}, /* charging */
@@ -948,11 +926,11 @@ static const value_string gtpv1_val[] = {
/* 4 */ {GTP_EXT_TLLI, "Temporary Logical Link Identity"},
/* 5 */ {GTP_EXT_PTMSI, "Packet TMSI"},
/* 6 */ {GTP_EXT_QOS_GPRS, "Quality of Service"},
- /* 6-7 Spare */
+/* 6-7 Spare */
/* 7 */ {7, "Spare"},
/* 8 */ {GTP_EXT_REORDER, "Reorder required"},
/* 9 */ {GTP_EXT_AUTH_TRI, "Authentication triplets"},
- /* 10 Spare */
+/* 10 Spare */
/* 10 */ {10, "Spare"},
/* 11 */ {GTP_EXT_MAP_CAUSE, "MAP cause"},
/* 12 */ {GTP_EXT_PTMSI_SIG, "P-TMSI signature"},
@@ -974,7 +952,7 @@ static const value_string gtpv1_val[] = {
/* 27 */ {GTP_EXT_TRACE_REF, "Trace references"}, /* 3G */
/* 28 */ {GTP_EXT_TRACE_TYPE, "Trace type"}, /* 3G */
/* 29 */ {GTPv1_EXT_MS_REASON, "MS not reachable reason"}, /* 3G */
- /* 117-126 Reserved for the GPRS charging protocol (see GTP' in 3GPP TS 32.295 [33]) */
+/* 117-126 Reserved for the GPRS charging protocol (see GTP' in 3GPP TS 32.295 [33]) */
/* 126 */ {GTP_EXT_TR_COMM, "Packet transfer command"}, /* charging */
/* 127 */ {GTP_EXT_CHRG_ID, "Charging ID"},
@@ -1027,49 +1005,49 @@ static const value_string gtpv1_val[] = {
/* 173 */ {GTP_EXT_BSS_CONT, "BSS Container"}, /* 7.7.72 */
/* 174 */ {GTP_EXT_CELL_ID, "Cell Identification"}, /* 7.7.73 */
/* 175 */ {GTP_EXT_PDU_NO, "PDU Numbers"}, /* 7.7.74 */
-/* 176 */ {GTP_EXT_BSSGP_CAUSE, "BSSGP Cause"}, /* 7.7.75 */
-
-/* 177 */ {GTP_EXT_REQ_MBMS_BEARER_CAP, "Required MBMS bearer capabilities"}, /* 7.7.76 */
-/* 178 */ {GTP_EXT_RIM_ROUTING_ADDR_DISC, "RIM Routing Address Discriminator"}, /* 7.7.77 */
-/* 179 */ {GTP_EXT_LIST_OF_SETUP_PFCS, "List of set-up PFCs"}, /* 7.7.78 */
-/* 180 */ {GTP_EXT_PS_HANDOVER_XIP_PAR, "PS Handover XID Parameters"}, /* 7.7.79 */
-/* 181 */ {GTP_EXT_MS_INF_CHG_REP_ACT, "MS Info Change Reporting Action"}, /* 7.7.80 */
-/* 182 */ {GTP_EXT_DIRECT_TUNNEL_FLGS, "Direct Tunnel Flags"}, /* 7.7.81 */
-/* 183 */ {GTP_EXT_CORRELATION_ID, "Correlation-ID"}, /* 7.7.82 */
-/* 184 */ {GTP_EXT_BEARER_CONTROL_MODE, "Bearer Control Mode"}, /* 7.7.83 */
- {185, "MBMS Flow Identifier"}, /* 7.7.84 */
- {186, "MBMS IP Multicast Distribution"}, /* 7.7.85 */
- {187, "MBMS Distribution Acknowledgement"}, /* 7.7.86 */
- {188, "Reliable INTER RAT HANDOVER INFO"}, /* 7.7.87 */
- {189, "RFSP Index"}, /* 7.7.88 */
- {190, "Fully Qualified Domain Name (FQDN)"}, /* 7.7.90 */
- {GTP_EXT_EVO_ALLO_RETE_P1, "Evolved Allocation/Retention Priority I"}, /* 7.7.91 */
- {192, "Evolved Allocation/Retention Priority II"}, /* 7.7.92 */
- {193, "Extended Common Flags"}, /* 7.7.93 */
- {194, "User CSG Information (UCI)"}, /* 7.7.94 */
- {195, "CSG Information Reporting Action"}, /* 7.7.95 */
- {196, "CSG ID"}, /* 7.7.96 */
- {197, "CSG Membership Indication (CMI)"}, /* 7.7.97 */
- {198, "Aggregate Maximum Bit Rate (AMBR)"}, /* 7.7.98 */
- {199, "UE Network Capability"}, /* 7.7.99 */
- {200, "UE-AMBR"}, /* 7.7.100 */
- {201, "APN-AMBR with NSAPI"}, /* 7.7.101 */
- {202, "GGSN Back-Off Time"}, /* 7.7.102 */
- {203, "Signalling Priority Indication"}, /* 7.7.103 */
- {204, "Signalling Priority Indication with NSAPI"}, /* 7.7.104 */
- {205, "Higher bitrates than 16 Mbps flag"}, /* 7.7.105 */
- {206, "Max MBR/APN-AMBR"}, /* 7.7.106 */
- {207, "Additional MM context for SRVCC"}, /* 7.7.107 */
- {208, "Additional flags for SRVCC"}, /* 7.7.108 */
- {209, "STN-SR"}, /* 7.7.109 */
- {210, "C-MSISDN"}, /* 7.7.110 */
- {211, "Extended RANAP Cause"}, /* 7.7.111 */
- /* 212-238 TLV Spare. For future use. */
- /* 239-250 Reserved for the GPRS charging protocol (see GTP' in 3GPP TS 32.295 [33]) */
+/* 176 */ {GTP_EXT_BSSGP_CAUSE, "BSSGP Cause"}, /* 7.7.75 */
+
+/* 177 */ {GTP_EXT_REQ_MBMS_BEARER_CAP, "Required MBMS bearer capabilities"}, /* 7.7.76 */
+/* 178 */ {GTP_EXT_RIM_ROUTING_ADDR_DISC, "RIM Routing Address Discriminator"}, /* 7.7.77 */
+/* 179 */ {GTP_EXT_LIST_OF_SETUP_PFCS, "List of set-up PFCs"}, /* 7.7.78 */
+/* 180 */ {GTP_EXT_PS_HANDOVER_XIP_PAR, "PS Handover XID Parameters"}, /* 7.7.79 */
+/* 181 */ {GTP_EXT_MS_INF_CHG_REP_ACT, "MS Info Change Reporting Action"}, /* 7.7.80 */
+/* 182 */ {GTP_EXT_DIRECT_TUNNEL_FLGS, "Direct Tunnel Flags"}, /* 7.7.81 */
+/* 183 */ {GTP_EXT_CORRELATION_ID, "Correlation-ID"}, /* 7.7.82 */
+/* 184 */ {GTP_EXT_BEARER_CONTROL_MODE, "Bearer Control Mode"}, /* 7.7.83 */
+/* 185 */ {GTP_EXT_MBMS_FLOW_ID, "MBMS Flow Identifier"}, /* 7.7.84 */
+/* 186 */ {GTP_EXT_MBMS_IP_MCAST_DIST, "MBMS IP Multicast Distribution"}, /* 7.7.85 */
+/* 187 */ {GTP_EXT_MBMS_DIST_ACK, "MBMS Distribution Acknowledgement"}, /* 7.7.86 */
+/* 188 */ {GTP_EXT_RELIABLE_IRAT_HO_INF, "Reliable INTER RAT HANDOVER INFO"}, /* 7.7.87 */
+/* 190 */ {GTP_EXT_RFSP_INDEX, "RFSP Index"}, /* 7.7.88 */
+/* 190 */ {GTP_EXT_FQDN, "Fully Qualified Domain Name (FQDN)"}, /* 7.7.90 */
+/* 191 */ {GTP_EXT_EVO_ALLO_RETE_P1, "Evolved Allocation/Retention Priority I"}, /* 7.7.91 */
+/* 192 */ {GTP_EXT_EVO_ALLO_RETE_P2, "Evolved Allocation/Retention Priority II"}, /* 7.7.92 */
+/* 193 */ {GTP_EXT_EXTENDED_COMMON_FLGS, "Extended Common Flags"}, /* 7.7.93 */
+/* 194 */ {GTP_EXT_UCI, "User CSG Information (UCI)"}, /* 7.7.94 */
+/* 195 */ {GTP_EXT_CSG_INF_REP_ACT, "CSG Information Reporting Action"}, /* 7.7.95 */
+/* 196 */ {GTP_EXT_CSG_ID, "CSG ID"}, /* 7.7.96 */
+/* 197 */ {GTP_EXT_CMI, "CSG Membership Indication (CMI)"}, /* 7.7.97 */
+/* 198 */ {198, "Aggregate Maximum Bit Rate (AMBR)"}, /* 7.7.98 */
+/* 199 */ {199, "UE Network Capability"}, /* 7.7.99 */
+/* 200 */ {200, "UE-AMBR"}, /* 7.7.100 */
+/* 201 */ {201, "APN-AMBR with NSAPI"}, /* 7.7.101 */
+/* 202 */ {202, "GGSN Back-Off Time"}, /* 7.7.102 */
+/* 203 */ {203, "Signalling Priority Indication"}, /* 7.7.103 */
+/* 204 */ {204, "Signalling Priority Indication with NSAPI"}, /* 7.7.104 */
+/* 205 */ {205, "Higher bitrates than 16 Mbps flag"}, /* 7.7.105 */
+/* 206 */ {206, "Max MBR/APN-AMBR"}, /* 7.7.106 */
+/* 207 */ {207, "Additional MM context for SRVCC"}, /* 7.7.107 */
+/* 208 */ {208, "Additional flags for SRVCC"}, /* 7.7.108 */
+/* 209 */ {209, "STN-SR"}, /* 7.7.109 */
+/* 210 */ {210, "C-MSISDN"}, /* 7.7.110 */
+/* 211 */ {211, "Extended RANAP Cause"}, /* 7.7.111 */
+/* 212-238 TLV Spare. For future use. */
+/* 239-250 Reserved for the GPRS charging protocol (see GTP' in 3GPP TS 32.295 [33]) */
/* 249 */ {GTP_EXT_REL_PACK, "Sequence numbers of released packets IE"}, /* charging */
/* 250 */ {GTP_EXT_CAN_PACK, "Sequence numbers of canceled packets IE"}, /* charging */
/* 251 */ {GTP_EXT_CHRG_ADDR, "Charging Gateway address"}, /* 7.7.44 */
- /* 252-254 Reserved for the GPRS charging protocol (see GTP' in 3GPP TS 32.295 [33]) */
+/* 252-254 Reserved for the GPRS charging protocol (see GTP' in 3GPP TS 32.295 [33]) */
/* 252 */ {GTP_EXT_DATA_REQ, "Data record packet"}, /* charging */
/* 253 */ {GTP_EXT_DATA_RESP, "Requests responded"}, /* charging */
/* 254 */ {GTP_EXT_NODE_ADDR, "Address of recommended node"}, /* charging */
@@ -1090,7 +1068,9 @@ static const value_string cause_type[] = {
{ 3, "No identity needed"},
{ 4, "MS refuses"},
{ 5, "MS is not GPRS responding"},
- /* For future use 6-48 */
+ { 6, "Reactivation Requested"},
+ { 7, "PDP address inactivity timer expires"},
+ /* For future use 8-48 */
/* Cause values reserved for GPRS charging
* protocol use (see GTP' in 3GPP TS 32.295 [33])
* 49-63
@@ -1148,7 +1128,9 @@ static const value_string cause_type[] = {
{226, "MBMS Bearer Context Superseded"},
{227, "Bearer Control Mode violation"},
{228, "Collision with network initiated request"},
- /* For future use 229-240 */
+ {229, "APN Congestion"},
+ {230, "Bearer handling not supported"},
+ /* For future use 231-240 */
/* Cause values reserved for GPRS charging
* protocol use (see GTP' in 3GPP TS 32.295 [33])
* 241-255
@@ -1159,7 +1141,7 @@ static const value_string cause_type[] = {
{255, "Request not fulfilled"}, /* charging */
{0, NULL}
};
-static value_string_ext cause_type_ext = VALUE_STRING_EXT_INIT(cause_type);
+value_string_ext cause_type_ext = VALUE_STRING_EXT_INIT(cause_type);
/* GPRS: 9.02 v7.7.0
* UMTS: 29.002 v4.2.1, chapter 17.5, page 268
@@ -1169,7 +1151,7 @@ static value_string_ext cause_type_ext = VALUE_STRING_EXT_INIT(cause_type);
static const value_string gsn_addr_type[] = {
{0x00, "IPv4"},
{0x01, "IPv6"},
- {0, NULL},
+ {0, NULL}
};
static const value_string pdp_type[] = {
@@ -1503,81 +1485,81 @@ static const value_string ms_not_reachable_type[] = {
*/
static const value_string ranap_cause_type[] = {
/* Radio Network Layer Cause (1-->64) */
- {1, "RAB preempted"},
- {2, "Trelocoverall Expiry"},
- {3, "Trelocprep Expiry"},
- {4, "Treloccomplete Expiry"},
- {5, "Tqueuing Expiry"},
- {6, "Relocation Triggered"},
- {7, "TRELOCalloc Expiry"},
- {8, "Unable to Establish During Relocation"},
- {9, "Unknown Target RNC"},
- {10, "Relocation Cancelled"},
- {11, "Successful Relocation"},
- {12, "Requested Ciphering and/or Integrity Protection Algorithms not Supported"},
- {13, "Change of Ciphering and/or Integrity Protection is not supported"},
- {14, "Failure in the Radio Interface Procedure"},
- {15, "Release due to UTRAN Generated Reason"},
- {16, "User Inactivity"},
- {17, "Time Critical Relocation"},
- {18, "Requested Traffic Class not Available"},
- {19, "Invalid RAB Parameters Value"},
- {20, "Requested Maximum Bit Rate not Available"},
- {21, "Requested Guaranteed Bit Rate not Available"},
- {22, "Requested Transfer Delay not Achievable"},
- {23, "Invalid RAB Parameters Combination"},
- {24, "Condition Violation for SDU Parameters"},
- {25, "Condition Violation for Traffic Handling Priority"},
- {26, "Condition Violation for Guaranteed Bit Rate"},
- {27, "User Plane Versions not Supported"},
- {28, "Iu UP Failure"},
- {29, "Relocation Failure in Target CN/RNC or Target System"},
- {30, "Invalid RAB ID"},
- {31, "No Remaining RAB"},
- {32, "Interaction with other procedure"},
- {33, "Requested Maximum Bit Rate for DL not Available"},
- {34, "Requested Maximum Bit Rate for UL not Available"},
- {35, "Requested Guaranteed Bit Rate for DL not Available"},
- {36, "Requested Guaranteed Bit Rate for UL not Available"},
- {37, "Repeated Integrity Checking Failure"},
- {38, "Requested Report Type not supported"},
- {39, "Request superseded"},
- {40, "Release due to UE generated signalling connection release"},
- {41, "Resource Optimisation Relocation"},
- {42, "Requested Information Not Available"},
- {43, "Relocation desirable for radio reasons"},
- {44, "Relocation not supported in Target RNC or Target System"},
- {45, "Directed Retry"},
- {46, "Radio Connection With UE Lost"},
- {47, "rNC-unable-to-establish-all-RFCs"},
- {48, "deciphering-keys-not-available"},
- {49, "dedicated-assistance-data-not-available"},
- {50, "relocation-target-not-allowed"},
- {51, "location-reporting-congestion"},
- {52, "reduce-load-in-serving-cell"},
- {53, "no-radio-resources-available-in-target-cell"},
- {54, "gERAN-Iumode-failure"},
- {55, "access-restricted-due-to-shared-networks"},
- {56, "incoming-relocation-not-supported-due-to-PUESBINE-feature"},
- {57, "traffic-load-in-the-target-cell-higher-than-in-the-source-cell"},
- {58, "mBMS-no-multicast-service-for-this-UE"},
- {59, "mBMS-unknown-UE-ID"},
- {60, "successful-MBMS-session-start-no-data-bearer-necessary"},
- {61, "mBMS-superseded-due-to-NNSF"},
- {62, "mBMS-UE-linking-already-done"},
- {63, "mBMS-UE-de-linking-failure-no-existing-UE-linking"},
- {64, "tMGI-unknown"},
+ { 1, "RAB preempted"},
+ { 2, "Trelocoverall Expiry"},
+ { 3, "Trelocprep Expiry"},
+ { 4, "Treloccomplete Expiry"},
+ { 5, "Tqueuing Expiry"},
+ { 6, "Relocation Triggered"},
+ { 7, "TRELOCalloc Expiry"},
+ { 8, "Unable to Establish During Relocation"},
+ { 9, "Unknown Target RNC"},
+ { 10, "Relocation Cancelled"},
+ { 11, "Successful Relocation"},
+ { 12, "Requested Ciphering and/or Integrity Protection Algorithms not Supported"},
+ { 13, "Change of Ciphering and/or Integrity Protection is not supported"},
+ { 14, "Failure in the Radio Interface Procedure"},
+ { 15, "Release due to UTRAN Generated Reason"},
+ { 16, "User Inactivity"},
+ { 17, "Time Critical Relocation"},
+ { 18, "Requested Traffic Class not Available"},
+ { 19, "Invalid RAB Parameters Value"},
+ { 20, "Requested Maximum Bit Rate not Available"},
+ { 21, "Requested Guaranteed Bit Rate not Available"},
+ { 22, "Requested Transfer Delay not Achievable"},
+ { 23, "Invalid RAB Parameters Combination"},
+ { 24, "Condition Violation for SDU Parameters"},
+ { 25, "Condition Violation for Traffic Handling Priority"},
+ { 26, "Condition Violation for Guaranteed Bit Rate"},
+ { 27, "User Plane Versions not Supported"},
+ { 28, "Iu UP Failure"},
+ { 29, "Relocation Failure in Target CN/RNC or Target System"},
+ { 30, "Invalid RAB ID"},
+ { 31, "No Remaining RAB"},
+ { 32, "Interaction with other procedure"},
+ { 33, "Requested Maximum Bit Rate for DL not Available"},
+ { 34, "Requested Maximum Bit Rate for UL not Available"},
+ { 35, "Requested Guaranteed Bit Rate for DL not Available"},
+ { 36, "Requested Guaranteed Bit Rate for UL not Available"},
+ { 37, "Repeated Integrity Checking Failure"},
+ { 38, "Requested Report Type not supported"},
+ { 39, "Request superseded"},
+ { 40, "Release due to UE generated signalling connection release"},
+ { 41, "Resource Optimisation Relocation"},
+ { 42, "Requested Information Not Available"},
+ { 43, "Relocation desirable for radio reasons"},
+ { 44, "Relocation not supported in Target RNC or Target System"},
+ { 45, "Directed Retry"},
+ { 46, "Radio Connection With UE Lost"},
+ { 47, "rNC-unable-to-establish-all-RFCs"},
+ { 48, "deciphering-keys-not-available"},
+ { 49, "dedicated-assistance-data-not-available"},
+ { 50, "relocation-target-not-allowed"},
+ { 51, "location-reporting-congestion"},
+ { 52, "reduce-load-in-serving-cell"},
+ { 53, "no-radio-resources-available-in-target-cell"},
+ { 54, "gERAN-Iumode-failure"},
+ { 55, "access-restricted-due-to-shared-networks"},
+ { 56, "incoming-relocation-not-supported-due-to-PUESBINE-feature"},
+ { 57, "traffic-load-in-the-target-cell-higher-than-in-the-source-cell"},
+ { 58, "mBMS-no-multicast-service-for-this-UE"},
+ { 59, "mBMS-unknown-UE-ID"},
+ { 60, "successful-MBMS-session-start-no-data-bearer-necessary"},
+ { 61, "mBMS-superseded-due-to-NNSF"},
+ { 62, "mBMS-UE-linking-already-done"},
+ { 63, "mBMS-UE-de-linking-failure-no-existing-UE-linking"},
+ { 64, "tMGI-unknown"},
/* Transport Layer Cause (65-->80) */
- {65, "Signalling Transport Resource Failure"},
- {66, "Iu Transport Connection Failed to Establish"},
+ { 65, "Signalling Transport Resource Failure"},
+ { 66, "Iu Transport Connection Failed to Establish"},
/* NAS Cause (81-->96) */
- {81, "User Restriction Start Indication"},
- {82, "User Restriction End Indication"},
- {83, "Normal Release"},
+ { 81, "User Restriction Start Indication"},
+ { 82, "User Restriction End Indication"},
+ { 83, "Normal Release"},
/* Protocol Cause (97-->112) */
- {97, "Transfer Syntax Error"},
- {98, "Semantic Error"},
- {99, "Message not compatible with receiver state"},
+ { 97, "Transfer Syntax Error"},
+ { 98, "Semantic Error"},
+ { 99, "Message not compatible with receiver state"},
{100, "Abstract Syntax Error (Reject)"},
{101, "Abstract Syntax Error (Ignore and Notify)"},
{102, "Abstract Syntax Error (Falsely Constructed Message"},
@@ -1620,13 +1602,13 @@ static const value_string gtp_cipher_algorithm[] = {
{0, NULL}
};
static const value_string gtp_ext_rat_type_vals[] = {
- {0, "Reserved"},
- {1, "UTRAN"},
- {2, "GERAN"},
- {3, "WLAN"},
- {4, "GAN"},
- {5, "HSPA Evolution"},
- {0, NULL}
+ {0, "Reserved"},
+ {1, "UTRAN"},
+ {2, "GERAN"},
+ {3, "WLAN"},
+ {4, "GAN"},
+ {5, "HSPA Evolution"},
+ {0, NULL}
};
#define MM_PROTO_GROUP_CALL_CONTROL 0x00
@@ -1752,8 +1734,35 @@ static int decode_gtp_ps_handover_xid(tvbuff_t * tvb, int offset, packet_info *
static int decode_gtp_direct_tnl_flg(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree);
static int decode_gtp_ms_inf_chg_rep_act(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree);
static int decode_gtp_corrl_id(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree);
+static int decode_gtp_fqdn(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree);
static int decode_gtp_evolved_allc_rtn_p1(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree);
+static int decode_gtp_evolved_allc_rtn_p2(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree);
+static int decode_gtp_extended_common_flgs(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree);
+static int decode_gtp_uci(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree);
+static int decode_gtp_csg_inf_rep_act(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree);
+static int decode_gtp_csg_id(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree);
+static int decode_gtp_cmi(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree);
+static int decode_gtp_apn_ambr(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree);
+static int decode_gtp_ue_network_cap(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree);
+static int decode_gtp_ue_ambr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree);
+static int decode_gtp_apn_ambr_with_nsapi(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree);
+static int decode_gtp_ggsn_back_off_time(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree);
+static int decode_gtp_sig_pri_ind(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree);
+static int decode_gtp_sig_pri_ind_w_nsapi(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree);
+static int decode_gtp_higher_br_16mb_flg(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree);
+static int decode_gtp_max_mbr_apn_ambr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree);
+static int decode_gtp_add_mm_ctx_srvcc(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree);
+static int decode_gtp_add_flgs_srvcc(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree);
+static int decode_gtp_stn_sr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree);
+static int decode_gtp_c_msisdn(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree);
+static int decode_gtp_ext_ranap_cause(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree);
static int decode_gtp_bearer_cntrl_mod(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree);
+static int decode_gtp_mbms_flow_id(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree);
+static int decode_gtp_mbms_ip_mcast_dist(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree);
+static int decode_gtp_mbms_dist_ack(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree);
+static int decode_gtp_reliable_irat_ho_inf(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree);
+static int decode_gtp_rfsp_index(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree);
+
static int decode_gtp_chrg_addr(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree);
static int decode_gtp_rel_pack(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree);
static int decode_gtp_can_pack(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree);
@@ -1769,104 +1778,139 @@ typedef struct _gtp_opt {
} gtp_opt_t;
static const gtp_opt_t gtpopt[] = {
- {GTP_EXT_CAUSE, decode_gtp_cause},
- {GTP_EXT_IMSI, decode_gtp_imsi},
- {GTP_EXT_RAI, decode_gtp_rai},
- {GTP_EXT_TLLI, decode_gtp_tlli},
- {GTP_EXT_PTMSI, decode_gtp_ptmsi},
- {GTP_EXT_QOS_GPRS, decode_gtp_qos_gprs},
- {GTP_EXT_REORDER, decode_gtp_reorder},
- {GTP_EXT_AUTH_TRI, decode_gtp_auth_tri},
- {GTP_EXT_MAP_CAUSE, decode_gtp_map_cause},
- {GTP_EXT_PTMSI_SIG, decode_gtp_ptmsi_sig},
- {GTP_EXT_MS_VALID, decode_gtp_ms_valid},
- {GTP_EXT_RECOVER, decode_gtp_recovery},
- {GTP_EXT_SEL_MODE, decode_gtp_sel_mode},
- {GTP_EXT_16, decode_gtp_16},
- {GTP_EXT_17, decode_gtp_17},
- {GTP_EXT_18, decode_gtp_18},
- {GTP_EXT_19, decode_gtp_19},
- {GTP_EXT_NSAPI, decode_gtp_nsapi},
- {GTP_EXT_RANAP_CAUSE, decode_gtp_ranap_cause},
- {GTP_EXT_RAB_CNTXT, decode_gtp_rab_cntxt},
- {GTP_EXT_RP_SMS, decode_gtp_rp_sms},
- {GTP_EXT_RP, decode_gtp_rp},
- {GTP_EXT_PKT_FLOW_ID, decode_gtp_pkt_flow_id},
- {GTP_EXT_CHRG_CHAR, decode_gtp_chrg_char},
- {GTP_EXT_TRACE_REF, decode_gtp_trace_ref},
- {GTP_EXT_TRACE_TYPE, decode_gtp_trace_type},
- {GTPv1_EXT_MS_REASON, decode_gtp_ms_reason},
- {GTP_EXT_TR_COMM, decode_gtp_tr_comm},
- {GTP_EXT_CHRG_ID, decode_gtp_chrg_id},
- {GTP_EXT_USER_ADDR, decode_gtp_user_addr},
- {GTP_EXT_MM_CNTXT, decode_gtp_mm_cntxt},
- {GTP_EXT_PDP_CNTXT, decode_gtp_pdp_cntxt},
- {GTP_EXT_APN, decode_gtp_apn},
- {GTP_EXT_PROTO_CONF, decode_gtp_proto_conf},
- {GTP_EXT_GSN_ADDR, decode_gtp_gsn_addr},
- {GTP_EXT_MSISDN, decode_gtp_msisdn},
- {GTP_EXT_QOS_UMTS, decode_gtp_qos_umts}, /* 3G */
- {GTP_EXT_AUTH_QUI, decode_gtp_auth_qui}, /* 3G */
- {GTP_EXT_TFT, decode_gtp_tft}, /* 3G */
- {GTP_EXT_TARGET_ID, decode_gtp_target_id}, /* 3G */
- {GTP_EXT_UTRAN_CONT, decode_gtp_utran_cont}, /* 3G */
- {GTP_EXT_RAB_SETUP, decode_gtp_rab_setup}, /* 3G */
- {GTP_EXT_HDR_LIST, decode_gtp_hdr_list}, /* 3G */
- {GTP_EXT_TRIGGER_ID, decode_gtp_trigger_id}, /* 3G */
- {GTP_EXT_OMC_ID, decode_gtp_omc_id}, /* 3G */
+/* 0x01 */ {GTP_EXT_CAUSE, decode_gtp_cause},
+/* 0x02 */ {GTP_EXT_IMSI, decode_gtp_imsi},
+/* 0x03 */ {GTP_EXT_RAI, decode_gtp_rai},
+/* 0x04 */ {GTP_EXT_TLLI, decode_gtp_tlli},
+/* 0x05 */ {GTP_EXT_PTMSI, decode_gtp_ptmsi},
+/* 0x06 */ {GTP_EXT_QOS_GPRS, decode_gtp_qos_gprs},
+/* 0x07 */
+/* 0x08 */ {GTP_EXT_REORDER, decode_gtp_reorder},
+/* 0x09 */ {GTP_EXT_AUTH_TRI, decode_gtp_auth_tri},
+/* 0x0a */
+/* 0x0b */ {GTP_EXT_MAP_CAUSE, decode_gtp_map_cause},
+/* 0x0c */ {GTP_EXT_PTMSI_SIG, decode_gtp_ptmsi_sig},
+/* 0x0d */ {GTP_EXT_MS_VALID, decode_gtp_ms_valid},
+/* 0x0e */ {GTP_EXT_RECOVER, decode_gtp_recovery},
+/* 0x0f */ {GTP_EXT_SEL_MODE, decode_gtp_sel_mode},
+/* 0x10 */ {GTP_EXT_16, decode_gtp_16},
+/* 0x11 */ {GTP_EXT_17, decode_gtp_17},
+/* 0x12 */ {GTP_EXT_18, decode_gtp_18},
+/* 0x13 */ {GTP_EXT_19, decode_gtp_19},
+/* 0x14 */ {GTP_EXT_NSAPI, decode_gtp_nsapi},
+/* 0x15 */ {GTP_EXT_RANAP_CAUSE, decode_gtp_ranap_cause},
+/* 0x16 */ {GTP_EXT_RAB_CNTXT, decode_gtp_rab_cntxt},
+/* 0x17 */ {GTP_EXT_RP_SMS, decode_gtp_rp_sms},
+/* 0x18 */ {GTP_EXT_RP, decode_gtp_rp},
+/* 0x19 */ {GTP_EXT_PKT_FLOW_ID, decode_gtp_pkt_flow_id},
+/* 0x1a */ {GTP_EXT_CHRG_CHAR, decode_gtp_chrg_char},
+/* 0x1b */ {GTP_EXT_TRACE_REF, decode_gtp_trace_ref},
+/* 0x1c */ {GTP_EXT_TRACE_TYPE, decode_gtp_trace_type},
+/* 0x1d */ {GTPv1_EXT_MS_REASON, decode_gtp_ms_reason},
+
+/* 0x7e */ {GTP_EXT_TR_COMM, decode_gtp_tr_comm},
+/* 0x7f */ {GTP_EXT_CHRG_ID, decode_gtp_chrg_id},
+/* 0x80 */ {GTP_EXT_USER_ADDR, decode_gtp_user_addr},
+/* 0x81 */ {GTP_EXT_MM_CNTXT, decode_gtp_mm_cntxt},
+/* 0x82 */ {GTP_EXT_PDP_CNTXT, decode_gtp_pdp_cntxt},
+/* 0x83 */ {GTP_EXT_APN, decode_gtp_apn},
+/* 0x84 */ {GTP_EXT_PROTO_CONF, decode_gtp_proto_conf},
+/* 0x85 */ {GTP_EXT_GSN_ADDR, decode_gtp_gsn_addr},
+/* 0x86 */ {GTP_EXT_MSISDN, decode_gtp_msisdn},
+/* 0x87 */ {GTP_EXT_QOS_UMTS, decode_gtp_qos_umts}, /* 3G */
+/* 0x88 */ {GTP_EXT_AUTH_QUI, decode_gtp_auth_qui}, /* 3G */
+/* 0x89 */ {GTP_EXT_TFT, decode_gtp_tft}, /* 3G */
+/* 0x8a */ {GTP_EXT_TARGET_ID, decode_gtp_target_id}, /* 3G */
+/* 0x8b */ {GTP_EXT_UTRAN_CONT, decode_gtp_utran_cont}, /* 3G */
+/* 0x8c */ {GTP_EXT_RAB_SETUP, decode_gtp_rab_setup}, /* 3G */
+/* 0x8d */ {GTP_EXT_HDR_LIST, decode_gtp_hdr_list}, /* 3G */
+/* 0x8e */ {GTP_EXT_TRIGGER_ID, decode_gtp_trigger_id}, /* 3G */
+/* 0x8f */ {GTP_EXT_OMC_ID, decode_gtp_omc_id}, /* 3G */
/* TS 29 060 V6.11.0 */
- {GTP_EXT_RAN_TR_CONT, decode_gtp_ran_tr_cont}, /* 7.7.43 */
- {GTP_EXT_PDP_CONT_PRIO, decode_gtp_pdp_cont_prio}, /* 7.7.45 */
- {GTP_EXT_ADD_RAB_SETUP_INF, decode_gtp_add_rab_setup_inf}, /* 7.7.45A */
- {GTP_EXT_SSGN_NO, decode_gtp_ssgn_no}, /* 7.7.47 */
- {GTP_EXT_COMMON_FLGS, decode_gtp_common_flgs}, /* 7.7.48 */
- {GTP_EXT_APN_RES, decode_gtp_apn_res}, /* 3G */
- {GTP_EXT_RA_PRIO_LCS, decode_gtp_ra_prio_lcs}, /* 7.7.25B */
- {GTP_EXT_RAT_TYPE, decode_gtp_rat_type}, /* 3G */
- {GTP_EXT_USR_LOC_INF, decode_gtp_usr_loc_inf}, /* 7.7.51 */
- {GTP_EXT_MS_TIME_ZONE, decode_gtp_ms_time_zone}, /* 7.7.52 */
- {GTP_EXT_IMEISV, decode_gtp_imeisv}, /* 3G 7.7.53 */
- {GTP_EXT_CAMEL_CHG_INF_CON, decode_gtp_camel_chg_inf_con}, /* 7.7.54 */
- {GTP_EXT_MBMS_UE_CTX, decode_gtp_mbms_ue_ctx}, /* 7.7.55 */
- {GTP_EXT_TMGI, decode_gtp_tmgi}, /* 7.7.56 */
- {GTP_EXT_RIM_RA, decode_gtp_rim_ra}, /* 7.7.57 */
- {GTP_EXT_MBMS_PROT_CONF_OPT, decode_gtp_mbms_prot_conf_opt}, /* 7.7.58 */
- {GTP_EXT_MBMS_SA, decode_gtp_mbms_sa}, /* 7.7.60 */
- {GTP_EXT_SRC_RNC_PDP_CTX_INF, decode_gtp_src_rnc_pdp_ctx_inf}, /* 7.7.61 */
- {GTP_EXT_ADD_TRS_INF, decode_gtp_add_trs_inf}, /* 7.7.62 */
- {GTP_EXT_HOP_COUNT, decode_gtp_hop_count}, /* 7.7.63 */
- {GTP_EXT_SEL_PLMN_ID, decode_gtp_sel_plmn_id}, /* 7.7.64 */
- {GTP_EXT_MBMS_SES_ID, decode_gtp_mbms_ses_id}, /* 7.7.65 */
- {GTP_EXT_MBMS_2G_3G_IND, decode_gtp_mbms_2g_3g_ind}, /* 7.7.66 */
- {GTP_EXT_ENH_NSAPI, decode_gtp_enh_nsapi}, /* 7.7.67 */
- {GTP_EXT_MBMS_SES_DUR, decode_gtp_mbms_ses_dur}, /* 7.7.59 */
- {GTP_EXT_ADD_MBMS_TRS_INF, decode_gtp_add_mbms_trs_inf}, /* 7.7.68 */
- {GTP_EXT_MBMS_SES_ID_REP_NO, decode_gtp_mbms_ses_id_rep_no}, /* 7.7.69 */
- {GTP_EXT_MBMS_TIME_TO_DATA_TR, decode_gtp_mbms_time_to_data_tr}, /* 7.7.70 */
- {GTP_EXT_PS_HO_REQ_CTX, decode_gtp_ps_ho_req_ctx}, /* 7.7.71 */
- {GTP_EXT_BSS_CONT, decode_gtp_bss_cont}, /* 7.7.72 */
- {GTP_EXT_CELL_ID, decode_gtp_cell_id}, /* 7.7.73 */
- {GTP_EXT_PDU_NO, decode_gtp_pdu_no}, /* 7.7.74 */
- {GTP_EXT_BSSGP_CAUSE, decode_gtp_bssgp_cause}, /* 7.7.75 */
- {GTP_EXT_REQ_MBMS_BEARER_CAP, decode_gtp_mbms_bearer_cap}, /* 7.7.76 */
- {GTP_EXT_RIM_ROUTING_ADDR_DISC, decode_gtp_rim_ra_disc}, /* 7.7.77 */
- {GTP_EXT_LIST_OF_SETUP_PFCS, decode_gtp_lst_set_up_pfc}, /* 7.7.78 */
- {GTP_EXT_PS_HANDOVER_XIP_PAR, decode_gtp_ps_handover_xid}, /* 7.7.79 */
- {GTP_EXT_MS_INF_CHG_REP_ACT, decode_gtp_ms_inf_chg_rep_act}, /* 7.7.80 */
- {GTP_EXT_DIRECT_TUNNEL_FLGS, decode_gtp_direct_tnl_flg}, /* 7.7.81 */
- {GTP_EXT_CORRELATION_ID, decode_gtp_corrl_id}, /* 7.7.82 */
- {GTP_EXT_BEARER_CONTROL_MODE, decode_gtp_bearer_cntrl_mod}, /* 7.7.83 */
- {GTP_EXT_EVO_ALLO_RETE_P1, decode_gtp_evolved_allc_rtn_p1}, /* 7.7.91 */
- {GTP_EXT_REL_PACK, decode_gtp_rel_pack}, /* charging */
- {GTP_EXT_CAN_PACK, decode_gtp_can_pack}, /* charging */
- {GTP_EXT_CHRG_ADDR, decode_gtp_chrg_addr},
- {GTP_EXT_DATA_REQ, decode_gtp_data_req}, /* charging */
- {GTP_EXT_DATA_RESP, decode_gtp_data_resp}, /* charging */
- {GTP_EXT_NODE_ADDR, decode_gtp_node_addr},
- {GTP_EXT_PRIV_EXT, decode_gtp_priv_ext},
+/* 0x90 */ {GTP_EXT_RAN_TR_CONT, decode_gtp_ran_tr_cont}, /* 7.7.43 */
+/* 0x91 */ {GTP_EXT_PDP_CONT_PRIO, decode_gtp_pdp_cont_prio}, /* 7.7.45 */
+/* 0x92 */ {GTP_EXT_ADD_RAB_SETUP_INF, decode_gtp_add_rab_setup_inf}, /* 7.7.45A */
+/* 0x93 */ {GTP_EXT_SSGN_NO, decode_gtp_ssgn_no}, /* 7.7.47 */
+/* 0x94 */ {GTP_EXT_COMMON_FLGS, decode_gtp_common_flgs}, /* 7.7.48 */
+/* 0x95 */ {GTP_EXT_APN_RES, decode_gtp_apn_res}, /* 3G */
+/* 0x96 */ {GTP_EXT_RA_PRIO_LCS, decode_gtp_ra_prio_lcs}, /* 7.7.25B */
+/* 0x97 */ {GTP_EXT_RAT_TYPE, decode_gtp_rat_type}, /* 3G */
+/* 0x98 */ {GTP_EXT_USR_LOC_INF, decode_gtp_usr_loc_inf}, /* 7.7.51 */
+/* 0x99 */ {GTP_EXT_MS_TIME_ZONE, decode_gtp_ms_time_zone}, /* 7.7.52 */
+/* 0x9a */ {GTP_EXT_IMEISV, decode_gtp_imeisv}, /* 3G 7.7.53 */
+/* 0x9b */ {GTP_EXT_CAMEL_CHG_INF_CON, decode_gtp_camel_chg_inf_con}, /* 7.7.54 */
+/* 0x9c */ {GTP_EXT_MBMS_UE_CTX, decode_gtp_mbms_ue_ctx}, /* 7.7.55 */
+/* 0x9d */ {GTP_EXT_TMGI, decode_gtp_tmgi}, /* 7.7.56 */
+/* 0x9e */ {GTP_EXT_RIM_RA, decode_gtp_rim_ra}, /* 7.7.57 */
+/* 0x9f */ {GTP_EXT_MBMS_PROT_CONF_OPT, decode_gtp_mbms_prot_conf_opt}, /* 7.7.58 */
+/* 0xa0 */ {GTP_EXT_MBMS_SA, decode_gtp_mbms_sa}, /* 7.7.60 */
+/* 0xa1 */ {GTP_EXT_SRC_RNC_PDP_CTX_INF, decode_gtp_src_rnc_pdp_ctx_inf}, /* 7.7.61 */
+/* 0xa2 */ {GTP_EXT_ADD_TRS_INF, decode_gtp_add_trs_inf}, /* 7.7.62 */
+/* 0xa3 */ {GTP_EXT_HOP_COUNT, decode_gtp_hop_count}, /* 7.7.63 */
+/* 0xa4 */ {GTP_EXT_SEL_PLMN_ID, decode_gtp_sel_plmn_id}, /* 7.7.64 */
+/* 0xa5 */ {GTP_EXT_MBMS_SES_ID, decode_gtp_mbms_ses_id}, /* 7.7.65 */
+/* 0xa6 */ {GTP_EXT_MBMS_2G_3G_IND, decode_gtp_mbms_2g_3g_ind}, /* 7.7.66 */
+/* 0xa7 */ {GTP_EXT_ENH_NSAPI, decode_gtp_enh_nsapi}, /* 7.7.67 */
+/* 0xa8 */ {GTP_EXT_MBMS_SES_DUR, decode_gtp_mbms_ses_dur}, /* 7.7.59 */
+/* 0xa9 */ {GTP_EXT_ADD_MBMS_TRS_INF, decode_gtp_add_mbms_trs_inf}, /* 7.7.68 */
+/* 0xaa */ {GTP_EXT_MBMS_SES_ID_REP_NO, decode_gtp_mbms_ses_id_rep_no}, /* 7.7.69 */
+/* 0xab */ {GTP_EXT_MBMS_TIME_TO_DATA_TR, decode_gtp_mbms_time_to_data_tr}, /* 7.7.70 */
+/* 0xac */ {GTP_EXT_PS_HO_REQ_CTX, decode_gtp_ps_ho_req_ctx}, /* 7.7.71 */
+/* 0xad */ {GTP_EXT_BSS_CONT, decode_gtp_bss_cont}, /* 7.7.72 */
+/* 0xae */ {GTP_EXT_CELL_ID, decode_gtp_cell_id}, /* 7.7.73 */
+/* 0xaf */ {GTP_EXT_PDU_NO, decode_gtp_pdu_no}, /* 7.7.74 */
+/* 0xb0 */ {GTP_EXT_BSSGP_CAUSE, decode_gtp_bssgp_cause}, /* 7.7.75 */
+/* 0xb1 */ {GTP_EXT_REQ_MBMS_BEARER_CAP, decode_gtp_mbms_bearer_cap}, /* 7.7.76 */
+/* 0xb2 */ {GTP_EXT_RIM_ROUTING_ADDR_DISC, decode_gtp_rim_ra_disc}, /* 7.7.77 */
+/* 0xb3 */ {GTP_EXT_LIST_OF_SETUP_PFCS, decode_gtp_lst_set_up_pfc}, /* 7.7.78 */
+/* 0xb4 */ {GTP_EXT_PS_HANDOVER_XIP_PAR, decode_gtp_ps_handover_xid}, /* 7.7.79 */
+/* 0xb5 */ {GTP_EXT_MS_INF_CHG_REP_ACT, decode_gtp_ms_inf_chg_rep_act}, /* 7.7.80 */
+/* 0xb6 */ {GTP_EXT_DIRECT_TUNNEL_FLGS, decode_gtp_direct_tnl_flg}, /* 7.7.81 */
+/* 0xb7 */ {GTP_EXT_CORRELATION_ID, decode_gtp_corrl_id}, /* 7.7.82 */
+/* 0xb8 */ {GTP_EXT_BEARER_CONTROL_MODE, decode_gtp_bearer_cntrl_mod}, /* 7.7.83 */
+/* 0xb9 */ {GTP_EXT_MBMS_FLOW_ID, decode_gtp_mbms_flow_id}, /* 7.7.84 */
+/* 0xba */ {GTP_EXT_MBMS_IP_MCAST_DIST, decode_gtp_mbms_ip_mcast_dist}, /* 7.7.85 */
+/* 0xba */ {GTP_EXT_MBMS_DIST_ACK, decode_gtp_mbms_dist_ack}, /* 7.7.86 */
+/* 0xbc */ {GTP_EXT_RELIABLE_IRAT_HO_INF, decode_gtp_reliable_irat_ho_inf}, /* 7.7.87 */
+/* 0xbd */ {GTP_EXT_RFSP_INDEX, decode_gtp_rfsp_index}, /* 7.7.87 */
+
+/* 0xbe */ {GTP_EXT_FQDN, decode_gtp_fqdn}, /* 7.7.90 */
+/* 0xbf */ {GTP_EXT_EVO_ALLO_RETE_P1, decode_gtp_evolved_allc_rtn_p1}, /* 7.7.91 */
+/* 0xc0 */ {GTP_EXT_EVO_ALLO_RETE_P2, decode_gtp_evolved_allc_rtn_p2}, /* 7.7.92 */
+/* 0xc1 */ {GTP_EXT_EXTENDED_COMMON_FLGS, decode_gtp_extended_common_flgs}, /* 7.7.93 */
+/* 0xc2 */ {GTP_EXT_UCI, decode_gtp_uci}, /* 7.7.94 */
+/* 0xc3 */ {GTP_EXT_CSG_INF_REP_ACT, decode_gtp_csg_inf_rep_act}, /* 7.7.95 */
+/* 0xc4 */ {GTP_EXT_CSG_ID, decode_gtp_csg_id}, /* 7.7.96 */
+/* 0xc5 */ {GTP_EXT_CMI, decode_gtp_cmi}, /* 7.7.97 */
+/* 0xc6 */ {GTP_EXT_AMBR, decode_gtp_apn_ambr}, /* 7.7.98 */
+/* 0xc7 */ {GTP_EXT_UE_NETWORK_CAP, decode_gtp_ue_network_cap}, /* 7.7.99 */
+/* 0xc8 */ {GTP_EXT_UE_AMBR, decode_gtp_ue_ambr}, /* 7.7.100 */
+/* 0xc9 */ {GTP_EXT_APN_AMBR_WITH_NSAPI, decode_gtp_apn_ambr_with_nsapi}, /* 7.7.101 */
+/* 0xCA */ {GTP_EXT_GGSN_BACK_OFF_TIME, decode_gtp_ggsn_back_off_time}, /* 7.7.102 */
+/* 0xCB */ {GTP_EXT_SIG_PRI_IND, decode_gtp_sig_pri_ind}, /* 7.7.103 */
+/* 0xCC */ {GTP_EXT_SIG_PRI_IND_W_NSAPI, decode_gtp_sig_pri_ind_w_nsapi}, /* 7.7.104 */
+/* 0xCD */ {GTP_EXT_HIGHER_BR_16MB_FLG, decode_gtp_higher_br_16mb_flg}, /* 7.7.105 */
+/* 0xCE */ {GTP_EXT_MAX_MBR_APN_AMBR, decode_gtp_max_mbr_apn_ambr}, /* 7.7.106 */
+/* 0xCF */ {GTP_EXT_ADD_MM_CTX_SRVCC, decode_gtp_add_mm_ctx_srvcc}, /* 7.7.107 */
+/* 0xD0 */ {GTP_EXT_ADD_FLGS_SRVCC, decode_gtp_add_flgs_srvcc}, /* 7.7.108 */
+/* 0xD1 */ {GTP_EXT_STN_SR, decode_gtp_stn_sr}, /* 7.7.109 */
+/* 0xD2 */ {GTP_EXT_C_MSISDN, decode_gtp_c_msisdn}, /* 7.7.110 */
+/* 0xD3 */ {GTP_EXT_EXT_RANAP_CAUSE, decode_gtp_ext_ranap_cause}, /* 7.7.111 */
+
+/* 0xf9 */ {GTP_EXT_REL_PACK, decode_gtp_rel_pack}, /* charging */
+/* 0xfa */ {GTP_EXT_CAN_PACK, decode_gtp_can_pack}, /* charging */
+/* 0xfb */ {GTP_EXT_CHRG_ADDR, decode_gtp_chrg_addr},
+
+/* 0xfc */ {GTP_EXT_DATA_REQ, decode_gtp_data_req}, /* charging */
+/* 0xfd */ {GTP_EXT_DATA_RESP, decode_gtp_data_resp}, /* charging */
+/* 0xfe */ {GTP_EXT_NODE_ADDR, decode_gtp_node_addr},
+/* 0xff */ {GTP_EXT_PRIV_EXT, decode_gtp_priv_ext},
{0, decode_gtp_unknown}
};
+#define NUM_GTP_IES 255
+static gint ett_gtp_ies[NUM_GTP_IES];
+
struct _gtp_hdr {
guint8 flags;
guint8 message;
@@ -1893,41 +1937,16 @@ id_to_str(tvbuff_t *tvb, gint offset)
if (bits4to1 <= 9)
str[j++] = BCD2CHAR(bits4to1);
else
- j++;
+ str[j++] = ' ';
if (bits8to5 <= 9)
str[j++] = BCD2CHAR(bits8to5);
else
- j++;
+ str[j++] = ' ';
}
str[j] = '\0';
return str;
}
-static gchar *
-msisdn_to_str(tvbuff_t *tvb, gint offset, int len)
-{
- static gchar str[18] = "+ ";
- guint8 bits8to5, bits4to1;
- int i, j;
- guint ad;
-
- for (i = j = 1; i < MIN(len, 9); i++) {
- ad = tvb_get_guint8(tvb, offset + i);
- bits8to5 = hi_nibble(ad);
- bits4to1 = lo_nibble(ad);
- if (bits4to1 <= 9)
- str[j++] = BCD2CHAR(bits4to1);
- else
- j++;
- if (bits8to5 <= 9)
- str[j++] = BCD2CHAR(bits8to5);
- else
- j++;
- }
- str[j] = '\0';
-
- return str;
-}
/* Next definitions and function check_field_presence checks if given field
* in GTP packet is compliant with ETSI
@@ -2933,41 +2952,44 @@ static _gtp_mess_items umts_mess_items[] = {
}
};
-/* Data structure attached to a conversation,
+/* Data structure attached to a conversation,
to keep track of request/response-pairs
*/
typedef struct gtp_conv_info_t {
struct gtp_conv_info_t *next;
- GHashTable *unmatched;
- GHashTable *matched;
+ GHashTable *unmatched;
+ GHashTable *matched;
} gtp_conv_info_t;
static gtp_conv_info_t *gtp_info_items = NULL;
-static guint gtp_sn_hash(gconstpointer k)
+static guint
+gtp_sn_hash(gconstpointer k)
{
const gtp_msg_hash_t *key = (const gtp_msg_hash_t *)k;
return key->seq_nr;
}
-static gint gtp_sn_equal_matched(gconstpointer k1, gconstpointer k2)
+static gint
+gtp_sn_equal_matched(gconstpointer k1, gconstpointer k2)
{
const gtp_msg_hash_t *key1 = (const gtp_msg_hash_t *)k1;
const gtp_msg_hash_t *key2 = (const gtp_msg_hash_t *)k2;
- if ( key1->req_frame && key2->req_frame && (key1->req_frame!=key2->req_frame) ) {
+ if ( key1->req_frame && key2->req_frame && (key1->req_frame != key2->req_frame) ) {
return 0;
}
- if ( key1->rep_frame && key2->rep_frame && (key1->rep_frame!=key2->rep_frame) ) {
+ if ( key1->rep_frame && key2->rep_frame && (key1->rep_frame != key2->rep_frame) ) {
return 0;
}
return key1->seq_nr == key2->seq_nr;
}
-static gint gtp_sn_equal_unmatched(gconstpointer k1, gconstpointer k2)
+static gint
+gtp_sn_equal_unmatched(gconstpointer k1, gconstpointer k2)
{
const gtp_msg_hash_t *key1 = (const gtp_msg_hash_t *)k1;
const gtp_msg_hash_t *key2 = (const gtp_msg_hash_t *)k2;
@@ -2975,10 +2997,11 @@ static gint gtp_sn_equal_unmatched(gconstpointer k1, gconstpointer k2)
return key1->seq_nr == key2->seq_nr;
}
-static gtp_msg_hash_t *gtp_match_response(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, gint seq_nr, guint msgtype)
+static gtp_msg_hash_t *
+gtp_match_response(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, gint seq_nr, guint msgtype)
{
- gtp_msg_hash_t gcr, *gcrp = NULL;
- gtp_conv_info_t *gtp_info = (gtp_conv_info_t *)pinfo->private_data;
+ gtp_msg_hash_t gcr, *gcrp = NULL;
+ gtp_conv_info_t *gtp_info = (gtp_conv_info_t *)pinfo->private_data;
gcr.seq_nr=seq_nr;
@@ -2999,7 +3022,10 @@ static gtp_msg_hash_t *gtp_match_response(tvbuff_t * tvb, packet_info * pinfo, p
gcr.req_frame=0;
gcr.rep_frame=pinfo->fd->num;
break;
- default:;
+ default:
+ gcr.is_request=FALSE;
+ gcr.req_frame=0;
+ gcr.rep_frame=0;
break;
}
@@ -3052,8 +3078,8 @@ static gtp_msg_hash_t *gtp_match_response(tvbuff_t * tvb, packet_info * pinfo, p
}
}
break;
- default:;
- break;
+ default:
+ break;
}
}
@@ -3079,7 +3105,8 @@ static gtp_msg_hash_t *gtp_match_response(tvbuff_t * tvb, packet_info * pinfo, p
}
-static int check_field_presence(guint8 message, guint8 field, int *position)
+static int
+check_field_presence(guint8 message, guint8 field, int *position)
{
guint i = 0;
@@ -3125,7 +3152,8 @@ static int check_field_presence(guint8 message, guint8 field, int *position)
* UMTS: 29.060 v4.0, chapter
* 7.7.1 Cause
*/
-static int decode_gtp_cause(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_cause(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
guint8 cause;
@@ -3140,7 +3168,8 @@ static int decode_gtp_cause(tvbuff_t * tvb, int offset, packet_info * pinfo _U_,
/* GPRS: 9.60 v7.6.0, chapter 7.9.2
* UMTS: 29.060 v4.0, chapter 7.7.2
*/
-static int decode_gtp_imsi(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_imsi(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
const gchar *imsi_str;
@@ -3155,16 +3184,17 @@ static int decode_gtp_imsi(tvbuff_t * tvb, int offset, packet_info * pinfo _U_,
/* GPRS: 9.60 v7.6.0, chapter 7.9.3
* UMTS: 29.060 v4.0, chapter 7.7.3 Routeing Area Identity (RAI)
*/
-static int decode_gtp_rai(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_rai(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
proto_tree *ext_tree_rai;
proto_item *te;
te = proto_tree_add_text(tree, tvb, offset, 1, "%s", val_to_str_ext_const(GTP_EXT_RAI, &gtp_val_ext, "Unknown message"));
- ext_tree_rai = proto_item_add_subtree(te, ett_gtp_rai);
+ ext_tree_rai = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_RAI]);
- dissect_e212_mcc_mnc(tvb, pinfo, ext_tree_rai, offset+1, TRUE);
+ dissect_e212_mcc_mnc(tvb, pinfo, ext_tree_rai, offset+1, TRUE);
proto_tree_add_uint(ext_tree_rai, hf_gtp_rai_lac, tvb, offset + 4, 2, tvb_get_ntohs(tvb, offset + 4));
proto_tree_add_uint(ext_tree_rai, hf_gtp_rai_rac, tvb, offset + 6, 1, tvb_get_guint8(tvb, offset + 6));
@@ -3174,7 +3204,8 @@ static int decode_gtp_rai(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, p
/* GPRS: 9.60 v7.6.0, chapter 7.9.4, page 39
* UMTS: 29.060 v4.0, chapter 7.7.4 Temporary Logical Link Identity (TLLI)
*/
-static int decode_gtp_tlli(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_tlli(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
guint32 tlli;
@@ -3188,7 +3219,8 @@ static int decode_gtp_tlli(tvbuff_t * tvb, int offset, packet_info * pinfo _U_,
/* GPRS: 9.60 v7.6.0, chapter 7.9.5, page 39
* UMTS: 29.060 v4.0, chapter 7.7.5 Packet TMSI (P-TMSI)
*/
-static int decode_gtp_ptmsi(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_ptmsi(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
guint32 ptmsi;
@@ -3202,10 +3234,11 @@ static int decode_gtp_ptmsi(tvbuff_t * tvb, int offset, packet_info * pinfo _U_,
/*
* adjust - how many bytes before offset should be highlighted
*/
-static int decode_qos_gprs(tvbuff_t * tvb, int offset, proto_tree * tree, const gchar * qos_str, guint8 adjust)
+static int
+decode_qos_gprs(tvbuff_t * tvb, int offset, proto_tree * tree, const gchar * qos_str, guint8 adjust)
{
- guint8 spare1, delay, reliability, peak, spare2, precedence, spare3, mean;
+ guint8 spare1, delay, reliability, peak, spare2, precedence, spare3, mean;
proto_tree *ext_tree_qos;
proto_item *te;
@@ -3242,7 +3275,8 @@ static int decode_qos_gprs(tvbuff_t * tvb, int offset, proto_tree * tree, const
* UMTS: not present
* TODO: check if length is included: ETSI 4.08 vs 9.60
*/
-static int decode_gtp_qos_gprs(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_qos_gprs(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
return (1 + decode_qos_gprs(tvb, offset + 1, tree, "Quality of Service", 1));
@@ -3252,7 +3286,8 @@ static int decode_gtp_qos_gprs(tvbuff_t * tvb, int offset, packet_info * pinfo _
/* GPRS: 9.60 v7.6.0, chapter 7.9.7, page 39
* UMTS: 29.060 v4.0, chapter 7.7.6 Reordering Required
*/
-static int decode_gtp_reorder(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_reorder(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
guint8 reorder;
@@ -3268,14 +3303,15 @@ static int decode_gtp_reorder(tvbuff_t * tvb, int offset, packet_info * pinfo _U
* UMTS: 29.060 v4.0, chapter 7.7.7
* TODO: Add blurb support by registering items in the protocol registration
*/
-static int decode_gtp_auth_tri(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_auth_tri(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
proto_tree *ext_tree_auth_tri;
proto_item *te;
te = proto_tree_add_text(tree, tvb, offset, 29, "%s", val_to_str_ext_const(GTP_EXT_AUTH_TRI, &gtp_val_ext, "Unknown message"));
- ext_tree_auth_tri = proto_item_add_subtree(te, ett_gtp_auth_tri);
+ ext_tree_auth_tri = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_AUTH_TRI]);
proto_tree_add_text(ext_tree_auth_tri, tvb, offset + 1, 16, "RAND: %s", tvb_bytes_to_str(tvb, offset + 1, 16));
proto_tree_add_text(ext_tree_auth_tri, tvb, offset + 17, 4, "SRES: %s", tvb_bytes_to_str(tvb, offset + 17, 4));
@@ -3289,7 +3325,8 @@ static int decode_gtp_auth_tri(tvbuff_t * tvb, int offset, packet_info * pinfo _
* UMTS: 29.060 v4.0, chapter 7.7.8, page 48
* 29.002 v4.2.1, chapter 17.5, page 268
*/
-static int decode_gtp_map_cause(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_map_cause(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
guint8 map_cause;
@@ -3303,7 +3340,8 @@ static int decode_gtp_map_cause(tvbuff_t * tvb, int offset, packet_info * pinfo
/* GPRS: 9.60 v7.6.0, chapter 7.9.10, page 41
* UMTS: 29.060 v4.0, chapter 7.7.9, page 48
*/
-static int decode_gtp_ptmsi_sig(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_ptmsi_sig(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
guint32 ptmsi_sig;
@@ -3317,7 +3355,8 @@ static int decode_gtp_ptmsi_sig(tvbuff_t * tvb, int offset, packet_info * pinfo
/* GPRS: 9.60 v7.6.0, chapter 7.9.11, page 41
* UMTS: 29.060 v4.0, chapter 7.7.10, page 49
*/
-static int decode_gtp_ms_valid(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_ms_valid(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
guint8 ms_valid;
@@ -3331,7 +3370,8 @@ static int decode_gtp_ms_valid(tvbuff_t * tvb, int offset, packet_info * pinfo _
/* GPRS: 9.60 v7.6.0, chapter 7.9.12, page 41
* UMTS: 29.060 v4.0, chapter 7.7.11 Recovery
*/
-static int decode_gtp_recovery(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_recovery(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
guint8 recovery;
@@ -3347,7 +3387,8 @@ static int decode_gtp_recovery(tvbuff_t * tvb, int offset, packet_info * pinfo _
*/
-static const gchar *dissect_radius_selection_mode(proto_tree * tree, tvbuff_t * tvb, packet_info* pinfo _U_)
+static const gchar *
+dissect_radius_selection_mode(proto_tree * tree, tvbuff_t * tvb, packet_info* pinfo _U_)
{
guint8 sel_mode;
@@ -3358,7 +3399,8 @@ static const gchar *dissect_radius_selection_mode(proto_tree * tree, tvbuff_t *
return val_to_str_const(sel_mode, sel_mode_type, "Unknown");
}
-static int decode_gtp_sel_mode(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_sel_mode(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
proto_tree_add_item(tree, hf_gtp_sel_mode, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -3368,7 +3410,8 @@ static int decode_gtp_sel_mode(tvbuff_t * tvb, int offset, packet_info * pinfo _
/* GPRS: 9.60 v7.6.0, chapter 7.9.14, page 42
* UMTS: 29.060 v4.0, chapter 7.7.13, page 50
*/
-static int decode_gtp_16(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_16(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
guint16 ext_flow_label;
@@ -3395,7 +3438,8 @@ static int decode_gtp_16(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, pr
/* GPRS: 9.60 v7.6.0, chapter 7.9.15, page 42
* UMTS: 29.060 v4.0, chapter 7.7.14, page 42
*/
-static int decode_gtp_17(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_17(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
guint16 flow_sig;
@@ -3419,20 +3463,21 @@ static int decode_gtp_17(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, pr
/* GPRS: 9.60 v7.6.0, chapter 7.9.16, page 42
* UMTS: 29.060 v4.0, chapter 7.7.15, page 51
*/
-static int decode_gtp_18(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_18(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 flow_ii;
- guint32 teid_ii;
+ guint16 flow_ii;
+ guint32 teid_ii;
proto_tree *ext_tree_flow_ii;
proto_item *te;
switch (gtp_version) {
case 0:
te = proto_tree_add_text(tree, tvb, offset, 4, "%s", val_to_str_ext_const(GTP_EXT_FLOW_II, &gtp_val_ext, "Unknown message"));
- ext_tree_flow_ii = proto_item_add_subtree(te, ett_gtp_flow_ii);
+ ext_tree_flow_ii = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_FLOW_II]);
- proto_tree_add_uint(ext_tree_flow_ii, hf_gtp_nsapi, tvb, offset + 1, 1, tvb_get_guint8(tvb, offset + 1) & 0x0F);
+ proto_tree_add_item(ext_tree_flow_ii, hf_gtp_nsapi, tvb, offset + 1, 1, ENC_BIG_ENDIAN);
flow_ii = tvb_get_ntohs(tvb, offset + 2);
proto_tree_add_uint(ext_tree_flow_ii, hf_gtp_flow_ii, tvb, offset + 2, 2, flow_ii);
@@ -3442,8 +3487,7 @@ static int decode_gtp_18(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, pr
te = proto_tree_add_text(tree, tvb, offset, 6, "%s", val_to_str_ext_const(GTP_EXT_TEID_II, &gtpv1_val_ext, "Unknown message"));
ext_tree_flow_ii = proto_item_add_subtree(te, ett_gtp_flow_ii);
- proto_tree_add_uint(ext_tree_flow_ii, hf_gtp_nsapi, tvb, offset + 1, 1, tvb_get_guint8(tvb, offset + 1) & 0x0F);
-
+ proto_tree_add_item(ext_tree_flow_ii, hf_gtp_nsapi, tvb, offset + 1, 1, ENC_BIG_ENDIAN);
teid_ii = tvb_get_ntohl(tvb, offset + 2);
proto_tree_add_uint(ext_tree_flow_ii, hf_gtp_teid_ii, tvb, offset + 2, 4, teid_ii);
@@ -3460,7 +3504,8 @@ static int decode_gtp_18(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, pr
* UMTS: 29.060 v4.0, chapter 7.7.16, page 51
* Check if all ms_reason types are included
*/
-static int decode_gtp_19(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_19(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
guint8 field19;
@@ -3485,13 +3530,19 @@ static int decode_gtp_19(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, pr
/* GPRS: not present
* UMTS: 29.060 v4.0, chapter 7.7.17, page 51
*/
-static int decode_gtp_nsapi(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_nsapi(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
+ guint8 nsapi;
+ proto_tree *ext_tree;
+ proto_item *te;
- guint8 nsapi;
+ te = proto_tree_add_text(tree, tvb, offset, 10, "%s", val_to_str_ext_const(GTP_EXT_NSAPI, &gtp_val_ext, "Unknown message"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_NSAPI]);
nsapi = tvb_get_guint8(tvb, offset + 1) & 0x0F;
- proto_tree_add_uint(tree, hf_gtp_nsapi, tvb, offset, 2, nsapi);
+ proto_tree_add_item(ext_tree, hf_gtp_nsapi, tvb, offset + 1, 1, ENC_BIG_ENDIAN);
+ proto_item_append_text(te, ": %u",nsapi);
return 2;
}
@@ -3499,44 +3550,45 @@ static int decode_gtp_nsapi(tvbuff_t * tvb, int offset, packet_info * pinfo _U_,
/* GPRS: not present
* UMTS: 29.060 v4.0, chapter 7.7.18, page 52
*/
-static int decode_gtp_ranap_cause(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_ranap_cause(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
guint8 ranap;
ranap = tvb_get_guint8(tvb, offset + 1);
- if (ranap > 0 && ranap <= 64)
+ if ((ranap > 0) && (ranap <= 64))
proto_tree_add_uint_format(tree, hf_gtp_ranap_cause, tvb, offset, 2,
ranap, "%s (Radio Network Layer Cause) : %s (%u)",
val_to_str_ext_const(GTP_EXT_RANAP_CAUSE, &gtp_val_ext, "Unknown"),
val_to_str_ext_const(ranap, &ranap_cause_type_ext, "Unknown RANAP Cause"), ranap);
- if (ranap > 64 && ranap <= 80)
+ if ((ranap > 64) && (ranap <= 80))
proto_tree_add_uint_format(tree, hf_gtp_ranap_cause, tvb, offset, 2,
ranap, "%s (Transport Layer Cause) : %s (%u)",
val_to_str_ext_const(GTP_EXT_RANAP_CAUSE, &gtp_val_ext, "Unknown"),
val_to_str_ext_const(ranap, &ranap_cause_type_ext, "Unknown RANAP Cause"), ranap);
- if (ranap > 80 && ranap <= 96)
+ if ((ranap > 80) && (ranap <= 96))
proto_tree_add_uint_format(tree, hf_gtp_ranap_cause, tvb, offset, 2,
ranap, "%s (NAS Cause) : %s (%u)",
val_to_str_ext_const(GTP_EXT_RANAP_CAUSE, &gtp_val_ext, "Unknown"),
val_to_str_ext_const(ranap, &ranap_cause_type_ext, "Unknown RANAP Cause"), ranap);
- if (ranap > 96 && ranap <= 112)
+ if ((ranap > 96) && (ranap <= 112))
proto_tree_add_uint_format(tree, hf_gtp_ranap_cause, tvb, offset, 2, ranap,
"%s (Protocol Cause) : %s (%u)",
val_to_str_ext_const(GTP_EXT_RANAP_CAUSE, &gtp_val_ext, "Unknown"),
val_to_str_ext_const(ranap, &ranap_cause_type_ext, "Unknown RANAP Cause"), ranap);
- if (ranap > 112 && ranap <= 128)
+ if ((ranap > 112) && (ranap <= 128))
proto_tree_add_uint_format(tree, hf_gtp_ranap_cause, tvb, offset, 2, ranap,
"%s (Miscellaneous Cause) : %s (%u)",
val_to_str_ext_const(GTP_EXT_RANAP_CAUSE, &gtp_val_ext, "Unknown"),
val_to_str_ext_const(ranap, &ranap_cause_type_ext, "Unknown RANAP Cause"), ranap);
- if (ranap > 128 /* && ranap <=255 */ )
+ if ((ranap > 128) /* && (ranap <= 255) */ )
proto_tree_add_uint_format(tree, hf_gtp_ranap_cause, tvb, offset, 2, ranap,
"%s (Non-standard Cause) : %s (%u)",
val_to_str_ext_const(GTP_EXT_RANAP_CAUSE, &gtp_val_ext, "Unknown"),
@@ -3548,19 +3600,16 @@ static int decode_gtp_ranap_cause(tvbuff_t * tvb, int offset, packet_info * pinf
/* GPRS: not present
* UMTS: 29.060 v4.0, chapter 7.7.19, page 52
*/
-static int decode_gtp_rab_cntxt(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_rab_cntxt(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
-
- guint8 nsapi;
proto_tree *ext_tree_rab_cntxt;
proto_item *te;
te = proto_tree_add_text(tree, tvb, offset, 10, "%s", val_to_str_ext_const(GTP_EXT_RAB_CNTXT, &gtp_val_ext, "Unknown message"));
- ext_tree_rab_cntxt = proto_item_add_subtree(te, ett_gtp_rab_cntxt);
+ ext_tree_rab_cntxt = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_RAB_CNTXT]);
- nsapi = tvb_get_guint8(tvb, offset + 1) & 0x0F;
-
- proto_tree_add_uint(ext_tree_rab_cntxt, hf_gtp_nsapi, tvb, offset + 1, 1, nsapi);
+ proto_tree_add_item(ext_tree_rab_cntxt, hf_gtp_nsapi, tvb, offset + 1, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(ext_tree_rab_cntxt, hf_gtp_rab_gtpu_dn, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(ext_tree_rab_cntxt, hf_gtp_rab_gtpu_up, tvb, offset + 4, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(ext_tree_rab_cntxt, hf_gtp_rab_pdu_dn, tvb, offset + 6, 2, ENC_BIG_ENDIAN);
@@ -3573,7 +3622,8 @@ static int decode_gtp_rab_cntxt(tvbuff_t * tvb, int offset, packet_info * pinfo
/* GPRS: not present
* UMTS: 29.060 v4.0, chapter 7.7.20, page 53
*/
-static int decode_gtp_rp_sms(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_rp_sms(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
guint8 rp_sms;
@@ -3587,12 +3637,13 @@ static int decode_gtp_rp_sms(tvbuff_t * tvb, int offset, packet_info * pinfo _U_
/* GPRS: not present
* UMTS: 29.060 v4.0, chapter 7.7.21, page 53
*/
-static int decode_gtp_rp(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_rp(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
proto_tree *ext_tree_rp;
proto_item *te;
- guint8 nsapi, rp, spare;
+ guint8 nsapi, rp, spare;
nsapi = tvb_get_guint8(tvb, offset + 1) & 0xF0;
spare = tvb_get_guint8(tvb, offset + 1) & 0x08;
@@ -3611,12 +3662,13 @@ static int decode_gtp_rp(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, pr
/* GPRS: not present
* UMTS: 29.060 v4.0, chapter 7.7.22, page 53
*/
-static int decode_gtp_pkt_flow_id(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_pkt_flow_id(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
proto_tree *ext_tree_pkt_flow_id;
proto_item *te;
- guint8 nsapi, pkt_flow_id;
+ guint8 nsapi, pkt_flow_id;
nsapi = tvb_get_guint8(tvb, offset + 1) & 0x0F;
pkt_flow_id = tvb_get_guint8(tvb, offset + 2);
@@ -3624,7 +3676,7 @@ static int decode_gtp_pkt_flow_id(tvbuff_t * tvb, int offset, packet_info * pinf
te = proto_tree_add_uint_format(tree, hf_gtp_pkt_flow_id, tvb, offset, 3, pkt_flow_id, "Packet Flow ID for NSAPI(%u) : %u", nsapi, pkt_flow_id);
ext_tree_pkt_flow_id = proto_item_add_subtree(te, ett_gtp_pkt_flow_id);
- proto_tree_add_uint(ext_tree_pkt_flow_id, hf_gtp_nsapi, tvb, offset + 1, 1, nsapi);
+ proto_tree_add_item(ext_tree_pkt_flow_id, hf_gtp_nsapi, tvb, offset + 1, 1, ENC_BIG_ENDIAN);
proto_tree_add_uint_format(ext_tree_pkt_flow_id, hf_gtp_pkt_flow_id, tvb,
offset + 2, 1, pkt_flow_id, "%s : %u", val_to_str_ext_const(GTP_EXT_PKT_FLOW_ID, &gtp_val_ext, "Unknown message"), pkt_flow_id);
@@ -3635,10 +3687,11 @@ static int decode_gtp_pkt_flow_id(tvbuff_t * tvb, int offset, packet_info * pinf
* UMTS: 29.060 v4.0, chapter 7.7.23, page 53
* TODO: Differenciate these uints?
*/
-static int decode_gtp_chrg_char(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_chrg_char(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 chrg_char;
+ guint16 chrg_char;
proto_item *te;
proto_tree *ext_tree_chrg_char;
@@ -3646,7 +3699,7 @@ static int decode_gtp_chrg_char(tvbuff_t * tvb, int offset, packet_info * pinfo
te = proto_tree_add_uint(tree, hf_gtp_chrg_char, tvb, offset, 3, chrg_char);
/*"%s: %x", val_to_str_ext_const (GTP_EXT_CHRG_CHAR, &gtp_val_ext, "Unknown message"), chrg_char); */
- ext_tree_chrg_char = proto_item_add_subtree(te, ett_gtp_chrg_char);
+ ext_tree_chrg_char = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_CHRG_CHAR]);
proto_tree_add_uint(ext_tree_chrg_char, hf_gtp_chrg_char_s, tvb, offset + 1, 2, chrg_char);
proto_tree_add_uint(ext_tree_chrg_char, hf_gtp_chrg_char_n, tvb, offset + 1, 2, chrg_char);
@@ -3661,7 +3714,8 @@ static int decode_gtp_chrg_char(tvbuff_t * tvb, int offset, packet_info * pinfo
/* GPRS: not present
* UMTS: 29.060 v4.0, chapter 7.7.24, page
*/
-static int decode_gtp_trace_ref(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_trace_ref(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
guint16 trace_ref;
@@ -3676,7 +3730,8 @@ static int decode_gtp_trace_ref(tvbuff_t * tvb, int offset, packet_info * pinfo
/* GPRS: not present
* UMTS: 29.060 v4.0, chapter 7.7.25, page
*/
-static int decode_gtp_trace_type(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_trace_type(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
guint16 trace_type;
@@ -3691,7 +3746,8 @@ static int decode_gtp_trace_type(tvbuff_t * tvb, int offset, packet_info * pinfo
/* GPRS: 9.60 v7.6.0, chapter 7.9.16A
* UMTS: 29.060 v4.0, chapter 7.7.25A, page
*/
-static int decode_gtp_ms_reason(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_ms_reason(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
guint8 reason;
@@ -3708,16 +3764,17 @@ static int decode_gtp_ms_reason(tvbuff_t * tvb, int offset, packet_info * pinfo
* UMTS: 29.060 v6.11.0, chapter 7.7.25B
* Radio Priority LCS
*/
-static int decode_gtp_ra_prio_lcs(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_ra_prio_lcs(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s : ", val_to_str_ext_const(GTP_EXT_RA_PRIO_LCS, &gtp_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_ra_prio_lcs);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_RA_PRIO_LCS]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -3732,7 +3789,8 @@ static int decode_gtp_ra_prio_lcs(tvbuff_t * tvb, int offset, packet_info * pinf
/* GPRS: 12.15 v7.6.0, chapter 7.3.3, page 45
* UMTS: 33.015
*/
-static int decode_gtp_tr_comm(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_tr_comm(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
guint8 tr_command;
@@ -3747,7 +3805,8 @@ static int decode_gtp_tr_comm(tvbuff_t * tvb, int offset, packet_info * pinfo _U
/* GPRS: 9.60 v7.6.0, chapter 7.9.17, page 43
* UMTS: 29.060 v4.0, chapter 7.7.26, page 55
*/
-static int decode_gtp_chrg_id(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_chrg_id(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
guint32 chrg_id;
@@ -3761,15 +3820,16 @@ static int decode_gtp_chrg_id(tvbuff_t * tvb, int offset, packet_info * pinfo _U
/* GPRS: 9.60 v7.6.0, chapter 7.9.18, page 43
* UMTS: 29.060 v4.0, chapter 7.7.27, page 55
*/
-static int decode_gtp_user_addr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_user_addr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
- guint8 pdp_typ, pdp_org;
- guint32 addr_ipv4;
- struct e_in6_addr addr_ipv6;
- proto_tree *ext_tree_user;
- proto_item *te;
+ guint16 length;
+ guint8 pdp_typ, pdp_org;
+ guint32 addr_ipv4;
+ struct e_in6_addr addr_ipv6;
+ proto_tree *ext_tree_user;
+ proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
@@ -3780,14 +3840,14 @@ static int decode_gtp_user_addr(tvbuff_t * tvb, int offset, packet_info * pinfo
val_to_str_ext_const(GTP_EXT_USER_ADDR, &gtp_val_ext, "Unknown message"),
val_to_str_const(pdp_org, pdp_org_type, "Unknown PDP Organization"),
val_to_str_const(pdp_typ, pdp_type, "Unknown PDP Type"));
- ext_tree_user = proto_item_add_subtree(te, ett_gtp_user);
+ ext_tree_user = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_USER_ADDR]);
proto_tree_add_text(ext_tree_user, tvb, offset + 1, 2, "Length : %u", length);
proto_tree_add_uint(ext_tree_user, hf_gtp_user_addr_pdp_org, tvb, offset + 3, 1, pdp_org);
proto_tree_add_uint(ext_tree_user, hf_gtp_user_addr_pdp_type, tvb, offset + 4, 1, pdp_typ);
if (length == 2) {
- if (pdp_org == 0 && pdp_typ == 1)
+ if ((pdp_org == 0) && (pdp_typ == 1))
proto_item_append_text(te, " (Point to Point Protocol)");
else if (pdp_typ == 2)
proto_item_append_text(te, " (Octet Stream Protocol)");
@@ -3810,12 +3870,13 @@ static int decode_gtp_user_addr(tvbuff_t * tvb, int offset, packet_info * pinfo
return 3 + length;
}
-static int decode_triplet(tvbuff_t * tvb, int offset, proto_tree * tree, guint16 count)
+static int
+decode_triplet(tvbuff_t * tvb, int offset, proto_tree * tree, guint16 count)
{
proto_tree *ext_tree_trip;
proto_item *te_trip;
- guint16 i;
+ guint16 i;
for (i = 0; i < count; i++) {
te_trip = proto_tree_add_text(tree, tvb, offset + i * 28, 28, "Triplet no%x", i);
@@ -3831,13 +3892,14 @@ static int decode_triplet(tvbuff_t * tvb, int offset, proto_tree * tree, guint16
/* adjust - how many bytes before quintuplet should be highlighted
*/
-static int decode_quintuplet(tvbuff_t * tvb, int offset, proto_tree * tree, guint16 count)
+static int
+decode_quintuplet(tvbuff_t * tvb, int offset, proto_tree * tree, guint16 count)
{
proto_tree *ext_tree_quint;
proto_item *te_quint;
- guint16 q_offset, i;
- guint8 xres_len, auth_len;
+ guint16 q_offset, i;
+ guint8 xres_len, auth_len;
q_offset = 0;
@@ -3876,18 +3938,19 @@ static int decode_quintuplet(tvbuff_t * tvb, int offset, proto_tree * tree, guin
* TODO: - check if for quintuplets first 2 bytes are length, according to AuthQuint
* - finish displaying last 3 parameters
*/
-static int decode_gtp_mm_cntxt(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree)
+static int
+decode_gtp_mm_cntxt(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree)
{
- guint16 length, quint_len, con_len;
- guint8 count, sec_mode, len, iei;
+ guint16 length, quint_len, con_len;
+ guint8 count, sec_mode, len, iei;
proto_tree *ext_tree_mm;
proto_item *te;
- proto_item *tf = NULL;
+ proto_item *tf = NULL;
proto_tree *tf_tree = NULL;
te = proto_tree_add_text(tree, tvb, offset, 1, "%s", val_to_str_ext_const(GTP_EXT_MM_CNTXT, &gtp_val_ext, "Unknown message"));
- ext_tree_mm = proto_item_add_subtree(te, ett_gtp_mm);
+ ext_tree_mm = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_MM_CNTXT]);
/* Octet 2 - 3 */
length = tvb_get_ntohs(tvb, offset + 1);
@@ -4007,14 +4070,14 @@ static int decode_gtp_mm_cntxt(tvbuff_t * tvb, int offset, packet_info * pinfo,
proto_tree_add_text(ext_tree_mm, tvb, offset, con_len, "Container");
iei = tvb_get_guint8(tvb,offset);
- if (iei == 0x23){
+ if (iei == 0x23) {
proto_tree_add_text(ext_tree_mm, tvb, offset, 1, "Mobile identity IEI %u",iei);
offset++;
len = tvb_get_guint8(tvb,offset);
proto_tree_add_text(ext_tree_mm, tvb, offset, 1, "Length %u",len);
offset++;
de_mid(tvb, ext_tree_mm, pinfo, offset, len, NULL, 0);
- }else{
+ } else {
proto_tree_add_text(ext_tree_mm, tvb, offset, 1, "Unknown IEI %u - Later spec than TS 29.060 9.4.0 used?",iei);
}
}
@@ -4025,7 +4088,8 @@ static int decode_gtp_mm_cntxt(tvbuff_t * tvb, int offset, packet_info * pinfo,
/* Function to extract the value of an hexadecimal octet. Only the lower
* nybble will be non-zero in the output.
* */
-static guint8 hex2dec(guint8 x)
+static guint8
+hex2dec(guint8 x)
{
if ((x >= 'a') && (x <= 'f'))
x = x - 'a' + 10;
@@ -4041,7 +4105,8 @@ static guint8 hex2dec(guint8 x)
/* Wrapper function to add UTF-8 decoding for QoS attributes in
* RADIUS messages.
* */
-static guint8 wrapped_tvb_get_guint8(tvbuff_t * tvb, int offset, int type)
+static guint8
+wrapped_tvb_get_guint8(tvbuff_t * tvb, int offset, int type)
{
if (type == 2)
return (hex2dec(tvb_get_guint8(tvb, offset)) << 4 | hex2dec(tvb_get_guint8(tvb, offset + 1)));
@@ -4055,21 +4120,25 @@ static guint8 wrapped_tvb_get_guint8(tvbuff_t * tvb, int offset, int type)
* WARNING :) type does not mean length of length any more... see below for
* type = 3!
*/
-static int decode_qos_umts(tvbuff_t * tvb, int offset, proto_tree * tree, const gchar * qos_str, guint8 type)
-{
-
- guint length;
- guint8 al_ret_priority;
- guint8 delay, reliability, peak, precedence, mean, spare1, spare2, spare3;
- guint8 traf_class, del_order, del_err_sdu;
- guint8 max_sdu_size, max_ul, max_dl, max_ul_ext, max_dl_ext;
- guint8 res_ber, sdu_err_ratio;
- guint8 trans_delay, traf_handl_prio;
- guint8 guar_ul, guar_dl, guar_ul_ext, guar_dl_ext;
- guint8 src_stat_desc, sig_ind;
- proto_tree *ext_tree_qos;
+static int
+decode_qos_umts(tvbuff_t * tvb, int offset, proto_tree * tree, const gchar * qos_str, guint8 type)
+{
+
+ guint length;
+ guint8 al_ret_priority;
+ guint8 delay, reliability, peak, precedence, mean, spare1, spare2, spare3;
+ guint8 traf_class, del_order, del_err_sdu;
+ guint8 max_sdu_size, max_ul, max_dl, max_ul_ext, max_dl_ext;
+ guint8 res_ber, sdu_err_ratio;
+ guint8 trans_delay, traf_handl_prio;
+ guint8 guar_ul, guar_dl, guar_ul_ext, guar_dl_ext;
+ guint8 src_stat_desc, sig_ind;
+ proto_tree *ext_tree_qos, *ext_tree_qos_arp;
proto_item *te;
- int mss, mu, md, gu, gd;
+ int mss, mu, md, gu, gd;
+ guint8 arp, qci;
+ guint32 apn_ambr;
+ guint64 br;
/* Will keep if the input is UTF-8 encoded (as in RADIUS messages).
* If 1, input is *not* UTF-8 encoded (i.e. each input octet corresponds
@@ -4079,6 +4148,9 @@ static int decode_qos_umts(tvbuff_t * tvb, int offset, proto_tree * tree, const
* */
guint8 utf8_type = 1;
+ /* Will keep the release indicator as indicated in the RADIUS message */
+ guint8 rel_ind = 0;
+
/* In RADIUS messages the QoS has a version field of two octets prepended.
* As of 29.061 v.3.a.0, there is an hyphen between "Release Indicator" and
* <release specific QoS IE UTF-8 encoding>. Even if it sounds rather
@@ -4109,7 +4181,7 @@ static int decode_qos_umts(tvbuff_t * tvb, int offset, proto_tree * tree, const
retval = length + 3;
break;
case 3:
- /* For QoS inside RADIUS Client messages from GGSN */
+ /* For QoS inside RADIUS Client messages from GGSN/P-GW */
utf8_type = 2;
/* The field in the RADIUS message is the length of the tvb we were given */
@@ -4118,7 +4190,8 @@ static int decode_qos_umts(tvbuff_t * tvb, int offset, proto_tree * tree, const
ext_tree_qos = proto_item_add_subtree(te, ett_gtp_qos);
- proto_tree_add_item(ext_tree_qos, hf_gtp_qos_version, tvb, offset, 2, ENC_ASCII|ENC_NA);
+ rel_ind = wrapped_tvb_get_guint8(tvb, offset, 2);
+ proto_tree_add_uint(ext_tree_qos, hf_gtp_qos_version, tvb, offset, 2, rel_ind);
/* Hyphen handling */
hyphen = tvb_get_guint8(tvb, offset + 2);
@@ -4145,6 +4218,65 @@ static int decode_qos_umts(tvbuff_t * tvb, int offset, proto_tree * tree, const
break;
}
+ if ((type == 3) && (rel_ind >= 8)) {
+ /* Release 8 or higher P-GW QoS profile */
+ offset++;
+ arp = wrapped_tvb_get_guint8(tvb, offset, 2);
+ te = proto_tree_add_text(ext_tree_qos, tvb, offset, 2, "Allocation/Retention Priority");
+ ext_tree_qos_arp = proto_item_add_subtree(te, ett_gtp_qos_arp);
+ proto_tree_add_boolean(ext_tree_qos_arp, hf_gtp_qos_arp_pci, tvb, offset, 2, arp);
+ proto_tree_add_uint(ext_tree_qos_arp, hf_gtp_qos_arp_pl, tvb, offset, 2, arp);
+ proto_tree_add_boolean(ext_tree_qos_arp, hf_gtp_qos_arp_pvi, tvb, offset, 2, arp);
+ offset += 2;
+ qci = wrapped_tvb_get_guint8(tvb, offset, 2);
+ proto_tree_add_uint(ext_tree_qos, hf_gtp_qos_qci, tvb, offset, 2, qci);
+ offset += 2;
+ if (qci <= 4) {
+ /* GBR QCI */
+ br = ((guint64)wrapped_tvb_get_guint8(tvb, offset , 2) << 32) |
+ ((guint64)wrapped_tvb_get_guint8(tvb, offset+2, 2) << 24) |
+ ((guint64)wrapped_tvb_get_guint8(tvb, offset+4, 2) << 16) |
+ ((guint64)wrapped_tvb_get_guint8(tvb, offset+6, 2) << 8) |
+ (guint64)wrapped_tvb_get_guint8(tvb, offset+8, 2);
+ proto_tree_add_uint64(ext_tree_qos, hf_gtp_qos_ul_mbr, tvb, offset, 10, br);
+ offset += 10;
+ br = ((guint64)wrapped_tvb_get_guint8(tvb, offset , 2) << 32) |
+ ((guint64)wrapped_tvb_get_guint8(tvb, offset+2, 2) << 24) |
+ ((guint64)wrapped_tvb_get_guint8(tvb, offset+4, 2) << 16) |
+ ((guint64)wrapped_tvb_get_guint8(tvb, offset+6, 2) << 8) |
+ (guint64)wrapped_tvb_get_guint8(tvb, offset+8, 2);
+ proto_tree_add_uint64(ext_tree_qos, hf_gtp_qos_dl_mbr, tvb, offset, 10, br);
+ offset += 10;
+ br = ((guint64)wrapped_tvb_get_guint8(tvb, offset , 2) << 32) |
+ ((guint64)wrapped_tvb_get_guint8(tvb, offset+2, 2) << 24) |
+ ((guint64)wrapped_tvb_get_guint8(tvb, offset+4, 2) << 16) |
+ ((guint64)wrapped_tvb_get_guint8(tvb, offset+6, 2) << 8) |
+ (guint64)wrapped_tvb_get_guint8(tvb, offset+8, 2);
+ proto_tree_add_uint64(ext_tree_qos, hf_gtp_qos_ul_gbr, tvb, offset, 10, br);
+ offset += 10;
+ br = ((guint64)wrapped_tvb_get_guint8(tvb, offset , 2) << 32) |
+ ((guint64)wrapped_tvb_get_guint8(tvb, offset+2, 2) << 24) |
+ ((guint64)wrapped_tvb_get_guint8(tvb, offset+4, 2) << 16) |
+ ((guint64)wrapped_tvb_get_guint8(tvb, offset+6, 2) << 8) |
+ (guint64)wrapped_tvb_get_guint8(tvb, offset+8, 2);
+ proto_tree_add_uint64(ext_tree_qos, hf_gtp_qos_dl_gbr, tvb, offset, 10, br);
+ } else {
+ /* non GBR QCI */
+ apn_ambr = (wrapped_tvb_get_guint8(tvb, offset , 2) << 24) |
+ (wrapped_tvb_get_guint8(tvb, offset+2, 2) << 16) |
+ (wrapped_tvb_get_guint8(tvb, offset+4, 2) << 8) |
+ wrapped_tvb_get_guint8(tvb, offset+6, 2);
+ proto_tree_add_uint(ext_tree_qos, hf_gtp_qos_ul_apn_ambr, tvb, offset, 8, apn_ambr);
+ offset += 8;
+ apn_ambr = (wrapped_tvb_get_guint8(tvb, offset , 2) << 24) |
+ (wrapped_tvb_get_guint8(tvb, offset+2, 2) << 16) |
+ (wrapped_tvb_get_guint8(tvb, offset+4, 2) << 8) |
+ wrapped_tvb_get_guint8(tvb, offset+6, 2);
+ proto_tree_add_uint(ext_tree_qos, hf_gtp_qos_dl_apn_ambr, tvb, offset, 8, apn_ambr);
+ }
+ return retval;
+ }
+
/* In RADIUS messages there is no allocation-retention priority
* so I don't need to wrap the following call to tvb_get_guint8
* */
@@ -4235,7 +4367,7 @@ static int decode_qos_umts(tvbuff_t * tvb, int offset, proto_tree * tree, const
guar_ul_ext = wrapped_tvb_get_guint8(tvb, offset + (16 - 1) * utf8_type + 1, utf8_type);
}
- /*
+ /*
* See above comments for the changes
*/
proto_tree_add_uint(ext_tree_qos, hf_gtp_qos_traf_class, tvb, offset + (4 - 1) * utf8_type + 1, utf8_type, traf_class);
@@ -4243,7 +4375,7 @@ static int decode_qos_umts(tvbuff_t * tvb, int offset, proto_tree * tree, const
proto_tree_add_uint(ext_tree_qos, hf_gtp_qos_del_err_sdu, tvb, offset + (4 - 1) * utf8_type + 1, utf8_type, del_err_sdu);
if (max_sdu_size == 0 || max_sdu_size > 150)
proto_tree_add_uint(ext_tree_qos, hf_gtp_qos_max_sdu_size, tvb, offset + (5 - 1) * utf8_type + 1, utf8_type, max_sdu_size);
- if (max_sdu_size > 0 && max_sdu_size <= 150) {
+ if ((max_sdu_size > 0) && (max_sdu_size <= 150)) {
mss = max_sdu_size * 10;
proto_tree_add_uint_format(ext_tree_qos, hf_gtp_qos_max_sdu_size, tvb, offset + (5 - 1) * utf8_type + 1, utf8_type, mss,
"Maximum SDU size: %u octets", mss);
@@ -4251,16 +4383,16 @@ static int decode_qos_umts(tvbuff_t * tvb, int offset, proto_tree * tree, const
if (max_ul == 0 || max_ul == 255)
proto_tree_add_uint(ext_tree_qos, hf_gtp_qos_max_ul, tvb, offset + (6 - 1) * utf8_type + 1, utf8_type, max_ul);
- if (max_ul > 0 && max_ul <= 63)
+ if ((max_ul > 0) && (max_ul <= 63))
proto_tree_add_uint_format(ext_tree_qos, hf_gtp_qos_max_ul, tvb, offset + (6 - 1) * utf8_type + 1, utf8_type, max_ul,
"Maximum bit rate for uplink: %u kbps", max_ul);
- if (max_ul > 63 && max_ul <= 127) {
+ if ((max_ul > 63) && (max_ul <= 127)) {
mu = 64 + (max_ul - 64) * 8;
proto_tree_add_uint_format(ext_tree_qos, hf_gtp_qos_max_ul, tvb, offset + (6 - 1) * utf8_type + 1, utf8_type, mu,
"Maximum bit rate for uplink: %u kbps", mu);
}
- if (max_ul > 127 && max_ul <= 254) {
+ if ((max_ul > 127) && (max_ul <= 254)) {
mu = 576 + (max_ul - 128) * 64;
proto_tree_add_uint_format(ext_tree_qos, hf_gtp_qos_max_ul, tvb, offset + (6 - 1) * utf8_type + 1, utf8_type, mu,
"Maximum bit rate for uplink: %u kbps", mu);
@@ -4268,15 +4400,15 @@ static int decode_qos_umts(tvbuff_t * tvb, int offset, proto_tree * tree, const
if (max_dl == 0 || max_dl == 255)
proto_tree_add_uint(ext_tree_qos, hf_gtp_qos_max_dl, tvb, offset + (7 - 1) * utf8_type + 1, utf8_type, max_dl);
- if (max_dl > 0 && max_dl <= 63)
+ if ((max_dl > 0) && (max_dl <= 63))
proto_tree_add_uint_format(ext_tree_qos, hf_gtp_qos_max_dl, tvb, offset + (7 - 1) * utf8_type + 1, utf8_type, max_dl,
"Maximum bit rate for downlink: %u kbps", max_dl);
- if (max_dl > 63 && max_dl <= 127) {
+ if ((max_dl > 63) && (max_dl <= 127)) {
md = 64 + (max_dl - 64) * 8;
proto_tree_add_uint_format(ext_tree_qos, hf_gtp_qos_max_dl, tvb, offset + (7 - 1) * utf8_type + 1, utf8_type, md,
"Maximum bit rate for downlink: %u kbps", md);
}
- if (max_dl > 127 && max_dl <= 254) {
+ if ((max_dl > 127) && (max_dl <= 254)) {
md = 576 + (max_dl - 128) * 64;
proto_tree_add_uint_format(ext_tree_qos, hf_gtp_qos_max_dl, tvb, offset + (7 - 1) * utf8_type + 1, utf8_type, md,
"Maximum bit rate for downlink: %u kbps", md);
@@ -4289,15 +4421,15 @@ static int decode_qos_umts(tvbuff_t * tvb, int offset, proto_tree * tree, const
if (guar_ul == 0 || guar_ul == 255)
proto_tree_add_uint(ext_tree_qos, hf_gtp_qos_guar_ul, tvb, offset + (10 - 1) * utf8_type + 1, utf8_type, guar_ul);
- if (guar_ul > 0 && guar_ul <= 63)
+ if ((guar_ul > 0) && (guar_ul <= 63))
proto_tree_add_uint_format(ext_tree_qos, hf_gtp_qos_guar_ul, tvb, offset + (10 - 1) * utf8_type + 1, utf8_type, guar_ul,
"Guaranteed bit rate for uplink: %u kbps", guar_ul);
- if (guar_ul > 63 && guar_ul <= 127) {
+ if ((guar_ul > 63) && (guar_ul <= 127)) {
gu = 64 + (guar_ul - 64) * 8;
proto_tree_add_uint_format(ext_tree_qos, hf_gtp_qos_guar_ul, tvb, offset + (10 - 1) * utf8_type + 1, utf8_type, gu,
"Guaranteed bit rate for uplink: %u kbps", gu);
}
- if (guar_ul > 127 && guar_ul <= 254) {
+ if ((guar_ul > 127) && (guar_ul <= 254)) {
gu = 576 + (guar_ul - 128) * 64;
proto_tree_add_uint_format(ext_tree_qos, hf_gtp_qos_guar_ul, tvb, offset + (10 - 1) * utf8_type + 1, utf8_type, gu,
"Guaranteed bit rate for uplink: %u kbps", gu);
@@ -4306,37 +4438,37 @@ static int decode_qos_umts(tvbuff_t * tvb, int offset, proto_tree * tree, const
/* Octet 13 */
if (guar_dl == 0 || guar_dl == 255)
proto_tree_add_uint(ext_tree_qos, hf_gtp_qos_guar_dl, tvb, offset + (11 - 1) * utf8_type + 1, utf8_type, guar_dl);
- if (guar_dl > 0 && guar_dl <= 63)
+ if ((guar_dl > 0) && (guar_dl <= 63))
proto_tree_add_uint_format(ext_tree_qos, hf_gtp_qos_guar_dl, tvb, offset + (11 - 1) * utf8_type + 1, utf8_type, guar_dl,
"Guaranteed bit rate for downlink: %u kbps", guar_dl);
- if (guar_dl > 63 && guar_dl <= 127) {
+ if ((guar_dl > 63) && (guar_dl <= 127)) {
gd = 64 + (guar_dl - 64) * 8;
proto_tree_add_uint_format(ext_tree_qos, hf_gtp_qos_guar_dl, tvb, offset + (11 - 1) * utf8_type + 1, utf8_type, gd,
"Guaranteed bit rate for downlink: %u kbps", gd);
}
- if (guar_dl > 127 && guar_dl <= 254) {
+ if ((guar_dl > 127) && (guar_dl <= 254)) {
gd = 576 + (guar_dl - 128) * 64;
proto_tree_add_uint_format(ext_tree_qos, hf_gtp_qos_guar_dl, tvb, offset + (11 - 1) * utf8_type + 1, utf8_type, gd,
"Guaranteed bit rate for downlink: %u kbps", gd);
}
- if(length > 13){
+ if(length > 13) {
proto_tree_add_uint(ext_tree_qos, hf_gtp_qos_src_stat_desc, tvb, offset + (12 - 1) * utf8_type + 1, utf8_type, src_stat_desc);
proto_tree_add_boolean(ext_tree_qos, hf_gtp_qos_sig_ind, tvb, offset + (12 - 1) * utf8_type + 1, utf8_type, sig_ind);
}
- if(length > 14){
+ if(length > 14) {
/* Octet 15 */
- if (max_dl_ext > 0 && max_dl_ext <= 0x4a) {
+ if ((max_dl_ext > 0) && (max_dl_ext <= 0x4a)) {
md = 8600 + max_dl_ext * 100;
proto_tree_add_uint_format(ext_tree_qos, hf_gtp_qos_max_dl, tvb, offset + (13 - 1) * utf8_type + 1, utf8_type, md,
"Ext Maximum bit rate for downlink: %u kbps", md);
}
- if (max_dl_ext > 0x4a && max_dl_ext <= 0xba) {
+ if ((max_dl_ext > 0x4a) && (max_dl_ext <= 0xba)) {
md = 16 + (max_dl_ext-0x4a);
proto_tree_add_uint_format(ext_tree_qos, hf_gtp_qos_max_dl, tvb, offset + (13 - 1) * utf8_type + 1, utf8_type, md,
"Ext Maximum bit rate for downlink: %u Mbps", md);
}
- if (max_dl_ext > 0xba && max_dl_ext <= 0xfa) {
+ if ((max_dl_ext > 0xba) && (max_dl_ext <= 0xfa)) {
md = 128 + (max_dl_ext-0xba)*2;
proto_tree_add_uint_format(ext_tree_qos, hf_gtp_qos_max_dl, tvb, offset + (13 - 1) * utf8_type + 1, utf8_type, md,
"Ext Maximum bit rate for downlink: %u Mbps", md);
@@ -4344,39 +4476,39 @@ static int decode_qos_umts(tvbuff_t * tvb, int offset, proto_tree * tree, const
/* Octet 16 */
if(guar_dl_ext == 0)
proto_tree_add_text(ext_tree_qos, tvb, offset + (14 - 1) * utf8_type + 1, utf8_type, "Use the value indicated by the Guaranteed bit rate for downlink in octet 13");
- if (guar_dl_ext > 0 && guar_dl_ext <= 0x4a) {
+ if ((guar_dl_ext > 0) && (guar_dl_ext <= 0x4a)) {
gd = 8600 + guar_dl_ext * 100;
proto_tree_add_uint_format(ext_tree_qos, hf_gtp_qos_guar_dl, tvb, offset + (14 - 1) * utf8_type + 1, utf8_type, gd,
"Ext Guaranteed bit rate for downlink: %u kbps", gd);
}
- if (guar_dl_ext > 0x4a && max_dl_ext <= 0xba) {
+ if ((guar_dl_ext > 0x4a) && (max_dl_ext <= 0xba)) {
gd = 16 + (guar_dl_ext-0x4a);
proto_tree_add_uint_format(ext_tree_qos, hf_gtp_qos_guar_dl, tvb, offset + (14 - 1) * utf8_type + 1, utf8_type, gd,
"Ext Guaranteed bit rate for downlink: %u Mbps", gd);
}
- if (guar_dl_ext > 0xba && max_dl_ext <= 0xfa) {
+ if ((guar_dl_ext > 0xba) && (max_dl_ext <= 0xfa)) {
gd = 128 + (guar_dl_ext-0xba)*2;
proto_tree_add_uint_format(ext_tree_qos, hf_gtp_qos_guar_dl, tvb, offset + (14 - 1) * utf8_type + 1, utf8_type, gd,
"Ext Guaranteed bit rate for downlink: %u Mbps", gd);
}
}
- if(length > 16){
+ if(length > 16) {
/* Octet 17
* This field is an extension of the Maximum bit rate for uplink in octet 8. The coding is identical to that of the Maximum bit
* rate for downlink (extended).
*/
- if (max_ul_ext > 0 && max_ul_ext <= 0x4a) {
+ if ((max_ul_ext > 0) && (max_ul_ext <= 0x4a)) {
md = 8600 + max_ul_ext * 100;
proto_tree_add_uint_format(ext_tree_qos, hf_gtp_qos_max_ul, tvb, offset + (15 - 1) * utf8_type + 1, utf8_type, md,
"Ext Maximum bit rate for uplink: %u kbps", md);
}
- if (max_ul_ext > 0x4a && max_ul_ext <= 0xba) {
+ if ((max_ul_ext > 0x4a) && (max_ul_ext <= 0xba)) {
md = 16 + (max_ul_ext-0x4a);
proto_tree_add_uint_format(ext_tree_qos, hf_gtp_qos_max_ul, tvb, offset + (15 - 1) * utf8_type + 1, utf8_type, md,
"Ext Maximum bit rate for uplink: %u Mbps", md);
}
- if (max_ul_ext > 0xba && max_ul_ext <= 0xfa) {
+ if ((max_ul_ext > 0xba) && (max_ul_ext <= 0xfa)) {
md = 128 + (max_ul_ext-0xba)*2;
proto_tree_add_uint_format(ext_tree_qos, hf_gtp_qos_max_ul, tvb, offset + (15 - 1) * utf8_type + 1, utf8_type, md,
"Ext Maximum bit rate for uplink: %u Mbps", md);
@@ -4384,17 +4516,17 @@ static int decode_qos_umts(tvbuff_t * tvb, int offset, proto_tree * tree, const
/* Octet 18 */
if (guar_ul_ext == 0)
proto_tree_add_text(ext_tree_qos, tvb, offset + (16 - 1) * utf8_type + 1, utf8_type, "Use the value indicated by the Guaranteed bit rate for uplink in octet 12");
- if (guar_ul_ext > 0 && guar_ul_ext <= 0x4a) {
+ if ((guar_ul_ext > 0) && (guar_ul_ext <= 0x4a)) {
gd = 8600 + guar_ul_ext * 100;
proto_tree_add_uint_format(ext_tree_qos, hf_gtp_qos_guar_ul, tvb, offset + (16 - 1) * utf8_type + 1, utf8_type, gd,
"Ext Guaranteed bit rate for uplink: %u kbps", gd);
}
- if (guar_ul_ext > 0x4a && max_ul_ext <= 0xba) {
+ if ((guar_ul_ext > 0x4a) && (max_ul_ext <= 0xba)) {
gd = 16 + (guar_ul_ext-0x4a);
proto_tree_add_uint_format(ext_tree_qos, hf_gtp_qos_guar_ul, tvb, offset + (16 - 1) * utf8_type + 1, utf8_type, gd,
"Ext Guaranteed bit rate for uplink: %u Mbps", gd);
}
- if (guar_ul_ext > 0xba && max_ul_ext <= 0xfa) {
+ if ((guar_ul_ext > 0xba) && (max_ul_ext <= 0xfa)) {
gd = 128 + (guar_ul_ext-0xba)*2;
proto_tree_add_uint_format(ext_tree_qos, hf_gtp_qos_guar_ul, tvb, offset + (16 - 1) * utf8_type + 1, utf8_type, gd,
"Ext Guaranteed bit rate for uplink: %u Mbps", gd);
@@ -4414,17 +4546,19 @@ dissect_diameter_3gpp_qosprofile(tvbuff_t *tvb _U_, packet_info *pinfo _U_, prot
return tvb_length(tvb);
}
-static const gchar *dissect_radius_qos_umts(proto_tree * tree, tvbuff_t * tvb, packet_info* pinfo _U_)
+static const gchar *
+dissect_radius_qos_umts(proto_tree * tree, tvbuff_t * tvb, packet_info* pinfo _U_)
{
decode_qos_umts(tvb, 0, tree, "UMTS GTP QoS Profile", 3);
return tvb_get_ephemeral_string(tvb, 0, tvb_length(tvb));
}
-static void decode_apn(tvbuff_t * tvb, int offset, guint16 length, proto_tree * tree)
+static void
+decode_apn(tvbuff_t * tvb, int offset, guint16 length, proto_tree * tree)
{
guint8 *apn = NULL;
- int name_len, tmp;
+ int name_len, tmp;
if (length > 0) {
name_len = tvb_get_guint8(tvb, offset);
@@ -4445,25 +4579,53 @@ static void decode_apn(tvbuff_t * tvb, int offset, guint16 length, proto_tree *
}
}
+static void
+decode_fqdn(tvbuff_t * tvb, int offset, guint16 length, proto_tree * tree)
+{
+ guint8 *fqdn = NULL;
+ int name_len, tmp;
+
+ if (length > 0) {
+ name_len = tvb_get_guint8(tvb, offset);
+
+ if (name_len < 0x20) {
+ fqdn = tvb_get_ephemeral_string(tvb, offset + 1, length - 1);
+ for (;;) {
+ if (name_len >= length - 1)
+ break;
+ tmp = name_len;
+ name_len = name_len + fqdn[tmp] + 1;
+ fqdn[tmp] = '.';
+ }
+ } else
+ fqdn = tvb_get_ephemeral_string(tvb, offset, length);
+
+ proto_tree_add_string(tree, hf_gtp_fqdn, tvb, offset, length, fqdn);
+ }
+}
+
/*
* GPRS: 9.60 v7.6.0, chapter 7.9.20
* UMTS: 29.060 v4.0, chapter 7.7.29 PDP Context
* TODO: unify addr functions
*/
-static int decode_gtp_pdp_cntxt(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_pdp_cntxt(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint8 ggsn_addr_len, apn_len, trans_id, vaa, asi, order, nsapi, sapi, pdu_send_no, pdu_rec_no, pdp_cntxt_id, pdp_type_org, pdp_type_num, pdp_addr_len;
- guint16 length, sn_down, sn_up, up_flow;
- guint32 addr_ipv4;
- struct e_in6_addr addr_ipv6;
- proto_tree *ext_tree_pdp;
- proto_item *te;
+ guint8 ggsn_addr_len, apn_len, trans_id, vaa, asi, order;
+ guint8 nsapi, sapi, pdu_send_no, pdu_rec_no;
+ guint8 pdp_cntxt_id, pdp_type_org, pdp_type_num, pdp_addr_len;
+ guint16 length, sn_down, sn_up, up_flow;
+ guint32 addr_ipv4;
+ struct e_in6_addr addr_ipv6;
+ proto_tree *ext_tree_pdp;
+ proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, length + 3, "%s", val_to_str_ext_const(GTP_EXT_PDP_CNTXT, &gtp_val_ext, "Unknown message"));
- ext_tree_pdp = proto_item_add_subtree(te, ett_gtp_pdp);
+ ext_tree_pdp = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_PDP_CNTXT]);
vaa = (tvb_get_guint8(tvb, offset + 3) >> 6) & 0x01;
asi = (tvb_get_guint8(tvb, offset + 3) >> 5) & 0x01;
@@ -4607,17 +4769,18 @@ static int decode_gtp_pdp_cntxt(tvbuff_t * tvb, int offset, packet_info * pinfo
/* GPRS: 9.60, v7.6.0, chapter 7.9.21
* UMTS: 29.060, v4.0, chapter 7.7.30
*/
-static int decode_gtp_apn(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_apn(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree_apn;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, length + 3, "%s", val_to_str_ext_const(GTP_EXT_APN, &gtp_val_ext, "Unknown field"));
- ext_tree_apn = proto_item_add_subtree(te, ett_gtp_apn);
+ ext_tree_apn = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_APN]);
proto_tree_add_text(ext_tree_apn, tvb, offset + 1, 2, "APN length : %u", length);
decode_apn(tvb, offset + 3, length, ext_tree_apn);
@@ -4630,11 +4793,12 @@ static int decode_gtp_apn(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, p
* UMTS: 29.060 v4.0, chapter 7.7.31 Protocol Configuration Options
* 24.008, v4.2, chapter 10.5.6.3
*/
-int decode_gtp_proto_conf(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree)
+int
+decode_gtp_proto_conf(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree)
{
- guint16 length;
- tvbuff_t *next_tvb;
+ guint16 length;
+ tvbuff_t *next_tvb;
proto_tree *ext_tree_proto;
proto_item *te;
@@ -4648,13 +4812,13 @@ int decode_gtp_proto_conf(tvbuff_t * tvb, int offset, packet_info * pinfo, proto
if (length < 1)
return 3;
- /* The Protocol Configuration Options contains external network protocol options that may be necessary to transfer
- * between the GGSN and the MS. The content and the coding of the Protocol Configuration are defined in octet 3-z of the
- * Protocol Configuration Options in3GPP TS 24.008 [5].
- */
- next_tvb = tvb_new_subset(tvb, offset + 3, length, length);
- pinfo->link_dir = P2P_DIR_UL;
- de_sm_pco(next_tvb, ext_tree_proto, pinfo, 0, length, NULL, 0);
+ /* The Protocol Configuration Options contains external network protocol options that may be necessary to transfer
+ * between the GGSN and the MS. The content and the coding of the Protocol Configuration are defined in octet 3-z of the
+ * Protocol Configuration Options in3GPP TS 24.008 [5].
+ */
+ next_tvb = tvb_new_subset(tvb, offset + 3, length, length);
+ pinfo->link_dir = P2P_DIR_UL;
+ de_sm_pco(next_tvb, ext_tree_proto, pinfo, 0, length, NULL, 0);
return 3 + length;
}
@@ -4662,15 +4826,16 @@ int decode_gtp_proto_conf(tvbuff_t * tvb, int offset, packet_info * pinfo, proto
/* GPRS: 9.60 v7.6.0, chapter 7.9.23
* UMTS: 29.060 v4.0, chapter 7.7.32
*/
-static int decode_gtp_gsn_addr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_gsn_addr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint8 addr_type, addr_len;
- guint16 length;
- guint32 addr_ipv4;
- struct e_in6_addr addr_ipv6;
- proto_tree *ext_tree_gsn_addr;
- proto_item *te;
+ guint8 addr_type, addr_len;
+ guint16 length;
+ guint32 addr_ipv4;
+ struct e_in6_addr addr_ipv6;
+ proto_tree *ext_tree_gsn_addr;
+ proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
@@ -4721,20 +4886,28 @@ static int decode_gtp_gsn_addr(tvbuff_t * tvb, int offset, packet_info * pinfo _
/* GPRS: 9.60 v7.6.0, chapter 7.9.24
* UMTS: 29.060 v4.0, chapter 7.7.33
*/
-static int decode_gtp_msisdn(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_msisdn(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree)
{
+ guint16 length;
+ tvbuff_t *next_tvb;
+ proto_tree *ext_tree_proto;
+ proto_item *te;
- gchar *msisdn_str;
- guint16 length;
+ length = tvb_get_ntohs(tvb, offset + 1);
+
+ te = proto_tree_add_text(tree, tvb, offset, length + 3, "%s", val_to_str_ext_const(GTP_EXT_MSISDN, &gtp_val_ext, "Unknown message"));
+ ext_tree_proto = proto_item_add_subtree(te, ett_gtp_proto);
+
+ proto_tree_add_text(ext_tree_proto, tvb, offset + 1, 2, "Length: %u", length);
length = tvb_get_ntohs(tvb, offset + 1);
if (length < 1)
return 3;
- msisdn_str = msisdn_to_str(tvb, offset + 3, length);
-
- proto_tree_add_string(tree, hf_gtp_msisdn, tvb, offset, 3 + length, msisdn_str);
+ next_tvb = tvb_new_subset(tvb, offset+3, length, length);
+ dissect_gsm_map_msisdn(next_tvb, pinfo, ext_tree_proto);
return 3 + length;
}
@@ -4743,7 +4916,8 @@ static int decode_gtp_msisdn(tvbuff_t * tvb, int offset, packet_info * pinfo _U_
* UMTS: 29.060 v4.0, chapter 7.7.34
* 24.008 v4.2, chapter 10.5.6.5
*/
-static int decode_gtp_qos_umts(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_qos_umts(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
return decode_qos_umts(tvb, offset, tree, "Quality of Service", 2);
@@ -4752,13 +4926,14 @@ static int decode_gtp_qos_umts(tvbuff_t * tvb, int offset, packet_info * pinfo _
/* GPRS: not present
* UMTS: 29.060 v4.0, chapter 7.7.35
*/
-static int decode_gtp_auth_qui(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_auth_qui(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
proto_tree *ext_tree;
proto_item *te_quint;
- guint16 length;
- guint8 xres_len, auth_len;
+ guint16 length;
+ guint8 xres_len, auth_len;
length = tvb_get_ntohs(tvb, offset + 1);
@@ -4794,16 +4969,17 @@ static int decode_gtp_auth_qui(tvbuff_t * tvb, int offset, packet_info * pinfo _
* UMTS: 29.060 v4.0, chapter 7.7.36
* 24.008 v4.2, chapter 10.5.6.12
*/
-static int decode_gtp_tft(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_tft(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length, port1, port2, tos;
- guint8 tft_flags, tft_code, no_packet_filters, i, pf_id, pf_eval, pf_len, pf_content_id, proto;
- guint pf_offset;
- guint32 mask_ipv4, addr_ipv4, ipsec_id, label;
- struct e_in6_addr addr_ipv6, mask_ipv6;
- proto_tree *ext_tree_tft, *ext_tree_tft_pf, *ext_tree_tft_flags;
- proto_item *te, *tee, *tef;
+ guint16 length, port1, port2, tos;
+ guint8 tft_flags, tft_code, no_packet_filters, i, pf_id, pf_eval, pf_len, pf_content_id, proto;
+ guint pf_offset;
+ guint32 mask_ipv4, addr_ipv4, ipsec_id, label;
+ struct e_in6_addr addr_ipv6, mask_ipv6;
+ proto_tree *ext_tree_tft, *ext_tree_tft_pf, *ext_tree_tft_flags;
+ proto_item *te, *tee, *tef;
length = tvb_get_ntohs(tvb, offset + 1);
@@ -4935,20 +5111,21 @@ static int decode_gtp_tft(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, p
* Type = 138 (Decimal)
* 25.413(RANAP) TargetID
*/
-static int decode_gtp_target_id(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_target_id(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
- proto_item *target_id_item;
+ guint16 length;
+ proto_item *te;
proto_tree *ext_tree;
- tvbuff_t *next_tvb;
- asn1_ctx_t asn1_ctx;
+ tvbuff_t *next_tvb;
+ asn1_ctx_t asn1_ctx;
asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
length = tvb_get_ntohs(tvb, offset + 1);
- target_id_item = proto_tree_add_text(tree, tvb, offset, 3 + length, "Target Identification");
- ext_tree = proto_item_add_subtree(target_id_item, ett_gtp_target_id);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "Target Identification");
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_TARGET_ID]);
offset = offset + 1;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
offset = offset + 2;
@@ -4967,18 +5144,19 @@ static int decode_gtp_target_id(tvbuff_t * tvb, int offset, packet_info * pinfo
/* GPRS: not present
* UMTS: 29.060 v4.0, chapter 7.7.38
*/
-static int decode_gtp_utran_cont(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_utran_cont(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
- proto_item *utran_cont_item;
+ guint16 length;
+ proto_item *te;
proto_tree *ext_tree;
- tvbuff_t *next_tvb;
+ tvbuff_t *next_tvb;
length = tvb_get_ntohs(tvb, offset + 1);
- utran_cont_item = proto_tree_add_text(tree, tvb, offset, 3 + length, "UTRAN transparent field");
- ext_tree = proto_item_add_subtree(utran_cont_item, ett_gtp_utran_cont);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "UTRAN transparent field");
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_UTRAN_CONT]);
offset = offset + 1;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
offset = offset + 2;
@@ -4994,24 +5172,23 @@ static int decode_gtp_utran_cont(tvbuff_t * tvb, int offset, packet_info * pinfo
/* GPRS: not present
* UMTS: 29.060 v4.0, chapter 7.7.39
*/
-static int decode_gtp_rab_setup(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_rab_setup(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint32 teid, addr_ipv4;
- guint16 length;
- guint8 nsapi;
- struct e_in6_addr addr_ipv6;
- proto_tree *ext_tree_rab_setup;
- proto_item *te;
+ guint32 teid, addr_ipv4;
+ guint16 length;
+ struct e_in6_addr addr_ipv6;
+ proto_tree *ext_tree_rab_setup;
+ proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
- nsapi = tvb_get_guint8(tvb, offset + 3) & 0x0F;
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "Radio Access Bearer Setup Information");
ext_tree_rab_setup = proto_item_add_subtree(te, ett_gtp_rab_setup);
proto_tree_add_text(ext_tree_rab_setup, tvb, offset + 1, 2, "RAB setup length : %u", length);
- proto_tree_add_uint(ext_tree_rab_setup, hf_gtp_nsapi, tvb, offset + 3, 1, nsapi);
+ proto_tree_add_item(ext_tree_rab_setup, hf_gtp_nsapi, tvb, offset + 3, 1, ENC_BIG_ENDIAN);
if (length > 1) {
@@ -5040,11 +5217,12 @@ static int decode_gtp_rab_setup(tvbuff_t * tvb, int offset, packet_info * pinfo
/* GPRS: not present
* UMTS: 29.060 v4.0, chapter 7.7.40
*/
-static int decode_gtp_hdr_list(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_hdr_list(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- int i;
- guint8 length, hdr;
+ int i;
+ guint8 length, hdr;
proto_tree *ext_tree_hdr_list;
proto_item *te;
@@ -5069,7 +5247,8 @@ static int decode_gtp_hdr_list(tvbuff_t * tvb, int offset, packet_info * pinfo _
* UMTS: 29.060 v4.0, chapter 7.7.41
* TODO: find TriggerID description
*/
-static int decode_gtp_trigger_id(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_trigger_id(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
guint16 length;
@@ -5086,7 +5265,8 @@ static int decode_gtp_trigger_id(tvbuff_t * tvb, int offset, packet_info * pinfo
* UMTS: 29.060 v4.0, chapter 7.7.42
* TODO: find OMC-ID description
*/
-static int decode_gtp_omc_id(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_omc_id(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
guint16 length;
@@ -5102,19 +5282,20 @@ static int decode_gtp_omc_id(tvbuff_t * tvb, int offset, packet_info * pinfo _U_
/* GPRS: 9.60 v7.6.0, chapter 7.9.25
* UMTS: 29.060 v6.11.0, chapter 7.7.44 Charging Gateway Address
*/
-static int decode_gtp_chrg_addr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_chrg_addr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
- guint32 addr_ipv4;
- struct e_in6_addr addr_ipv6;
- proto_tree *ext_tree_chrg_addr;
- proto_item *te;
+ guint16 length;
+ guint32 addr_ipv4;
+ struct e_in6_addr addr_ipv6;
+ proto_tree *ext_tree_chrg_addr;
+ proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s : ", val_to_str_ext_const(GTP_EXT_CHRG_ADDR, &gtp_val_ext, "Unknown"));
- ext_tree_chrg_addr = proto_item_add_subtree(te, ett_gtp_chrg_addr);
+ ext_tree_chrg_addr = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_CHRG_ADDR]);
proto_tree_add_text(ext_tree_chrg_addr, tvb, offset + 1, 2, "%s length : %u", val_to_str_ext_const(GTP_EXT_CHRG_ADDR, &gtp_val_ext, "Unknown"), length);
@@ -5143,24 +5324,25 @@ static int decode_gtp_chrg_addr(tvbuff_t * tvb, int offset, packet_info * pinfo
* and including the BSSGP "PDU Type") in either of the RAN INFORMATION, RAN INFORMATION REQUEST,
* RAN INFORMATION ACK or RAN INFORMATION ERROR messages respectively as specified in 3GPP TS 48.018
*/
-static int decode_gtp_ran_tr_cont(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_ran_tr_cont(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
- tvbuff_t *next_tvb;
+ tvbuff_t *next_tvb;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s : ", val_to_str_ext_const(GTP_EXT_RAN_TR_CONT, &gtp_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_ran_tr_cont);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_RAN_TR_CONT]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
offset = offset + 2;
next_tvb = tvb_new_subset(tvb, offset, length, length);
- if (bssgp_handle){
+ if (bssgp_handle) {
col_set_fence(pinfo->cinfo, COL_INFO);
call_dissector(bssgp_handle, next_tvb, pinfo, ext_tree);
}
@@ -5172,16 +5354,17 @@ static int decode_gtp_ran_tr_cont(tvbuff_t * tvb, int offset, packet_info * pinf
/* GPRS: ?
* UMTS: 29.060 v6.11.0, chapter 7.7.45 PDP Context Prioritization
*/
-static int decode_gtp_pdp_cont_prio(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_pdp_cont_prio(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s : ", val_to_str_ext_const(GTP_EXT_PDP_CONT_PRIO, &gtp_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_pdp_cont_prio);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_PDP_CONT_PRIO]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5196,16 +5379,17 @@ static int decode_gtp_pdp_cont_prio(tvbuff_t * tvb, int offset, packet_info * pi
/* GPRS: ?
* UMTS: 29.060 v6.11.0, chapter 7.7.45A Additional RAB Setup Information
*/
-static int decode_gtp_add_rab_setup_inf(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_add_rab_setup_inf(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s : ", val_to_str_ext_const(GTP_EXT_ADD_RAB_SETUP_INF, &gtp_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_rab_setup_inf);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_ADD_RAB_SETUP_INF]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5221,16 +5405,17 @@ static int decode_gtp_add_rab_setup_inf(tvbuff_t * tvb, int offset, packet_info
/* GPRS: ?
* UMTS: 29.060 v6.11.0, chapter 7.7.47 SGSN Number
*/
-static int decode_gtp_ssgn_no(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_ssgn_no(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s : ", val_to_str_ext_const(GTP_EXT_SSGN_NO, &gtp_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_ssgn_no);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_SSGN_NO]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5245,16 +5430,17 @@ static int decode_gtp_ssgn_no(tvbuff_t * tvb, int offset, packet_info * pinfo _U
/* GPRS: ?
* UMTS: 3GPP TS 29.060 version 7.8.0 Release 7, chapter 7.7.48 Common Flags
*/
-static int decode_gtp_common_flgs(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_common_flgs(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s : ", val_to_str_ext_const(GTP_EXT_COMMON_FLGS, &gtp_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_common_flgs);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_COMMON_FLGS]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5281,16 +5467,17 @@ static int decode_gtp_common_flgs(tvbuff_t * tvb, int offset, packet_info * pinf
/* GPRS: ?
* UMTS: 29.060 v6.11.0, chapter 7.7.49
*/
-static int decode_gtp_apn_res(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_apn_res(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree_apn_res;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s : ", val_to_str_ext_const(GTP_EXT_APN_RES, &gtp_val_ext, "Unknown"));
- ext_tree_apn_res = proto_item_add_subtree(te, ett_gtp_ext_tree_apn_res);
+ ext_tree_apn_res = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_APN_RES]);
offset++;
proto_tree_add_item(ext_tree_apn_res, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5315,16 +5502,17 @@ static int decode_gtp_apn_res(tvbuff_t * tvb, int offset, packet_info * pinfo _U
* Type = 151 (Decimal)
*/
-static int decode_gtp_rat_type(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_rat_type(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree_rat_type;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_RAT_TYPE, &gtp_val_ext, "Unknown"));
- ext_tree_rat_type = proto_item_add_subtree(te, ett_gtp_ext_rat_type);
+ ext_tree_rat_type = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_RAT_TYPE]);
offset++;
proto_tree_add_item(ext_tree_rat_type, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5351,11 +5539,12 @@ static int decode_gtp_rat_type(tvbuff_t * tvb, int offset, packet_info * pinfo _
* Type = 152 (Decimal)
*/
-static const gchar *dissect_radius_user_loc(proto_tree * tree, tvbuff_t * tvb, packet_info* pinfo)
+static const
+gchar *dissect_radius_user_loc(proto_tree * tree, tvbuff_t * tvb, packet_info* pinfo)
{
- int offset = 0;
- guint8 geo_loc_type;
+ int offset = 0;
+ guint8 geo_loc_type;
guint16 length = tvb_length(tvb);
/* Geographic Location Type */
@@ -5381,17 +5570,18 @@ static const gchar *dissect_radius_user_loc(proto_tree * tree, tvbuff_t * tvb, p
* 7.7.51 User Location Information
*/
-static int decode_gtp_usr_loc_inf(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree)
+static int
+decode_gtp_usr_loc_inf(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree, *rai_tree;
proto_item *te, *fi;
- guint8 geo_loc_type;
+ guint8 geo_loc_type;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_USR_LOC_INF, &gtp_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_usr_loc_inf);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_USR_LOC_INF]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5402,43 +5592,43 @@ static int decode_gtp_usr_loc_inf(tvbuff_t * tvb, int offset, packet_info * pinf
geo_loc_type = tvb_get_guint8(tvb, offset);
offset++;
- switch(geo_loc_type){
- case 0:
- /* Geographic Location field included and it holds the Cell Global
- * Identification (CGI) of where the user currently is registered.
- * CGI is defined in sub-clause 4.3.1 of 3GPP TS 23.003 [2].
- */
+ switch(geo_loc_type) {
+ case 0:
+ /* Geographic Location field included and it holds the Cell Global
+ * Identification (CGI) of where the user currently is registered.
+ * CGI is defined in sub-clause 4.3.1 of 3GPP TS 23.003 [2].
+ */
/* Use gsm_a's function to dissect Geographic Location by faking disc ( last 0) */
be_cell_id_aux(tvb, ext_tree, pinfo, offset, length - 1, NULL, 0, 0);
- break;
- case 1:
- /* Geographic Location field included and it holds the Service
- * Area Identity (SAI) of where the user currently is registered.
- * SAI is defined in sub-clause 9.2.3.9 of 3GPP TS 25.413 [7].
- */
+ break;
+ case 1:
+ /* Geographic Location field included and it holds the Service
+ * Area Identity (SAI) of where the user currently is registered.
+ * SAI is defined in sub-clause 9.2.3.9 of 3GPP TS 25.413 [7].
+ */
/* Use gsm_a's function to dissect Geographic Location by faking disc ( last 4) */
be_cell_id_aux(tvb, ext_tree, pinfo, offset, length - 1, NULL, 0, 4);
offset = offset + 5;
proto_tree_add_item(ext_tree, hf_gtp_ext_sac, tvb, offset, 2, ENC_BIG_ENDIAN);
- break;
- case 2:
- /* Geographic Location field included and it holds the Routing
- * Area Identification (RAI) of where the user currently is
- * registered. RAI is defined in sub-clause 4.2 of 3GPP TS 23.003
- * [2].
- */
+ break;
+ case 2:
+ /* Geographic Location field included and it holds the Routing
+ * Area Identification (RAI) of where the user currently is
+ * registered. RAI is defined in sub-clause 4.2 of 3GPP TS 23.003
+ * [2].
+ */
fi = proto_tree_add_text(ext_tree, tvb, offset + 1, 7, "Routeing Area Identity (RAI)");
rai_tree = proto_item_add_subtree(fi, ett_gtp_uli_rai);
- dissect_e212_mcc_mnc(tvb, pinfo, rai_tree, offset, TRUE);
+ dissect_e212_mcc_mnc(tvb, pinfo, rai_tree, offset, TRUE);
offset+=3;
proto_tree_add_item(rai_tree, hf_gtp_rai_lac, tvb, offset, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(rai_tree, hf_gtp_rai_rac, tvb, offset, 2, ENC_BIG_ENDIAN);
- break;
- default:
- proto_tree_add_text(tree, tvb, offset, length - 1, "Unknown Location type data");
- break;
- }
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, offset, length - 1, "Unknown Location type data");
+ break;
+ }
return 3 + length;
@@ -5461,18 +5651,19 @@ static const value_string daylight_saving_time_vals[] = {
* format as the 'Time Zone' IE in 3GPP TS 24.008 (10.5.3.8)
* its value shall be set as defined in 3GPP TS 22.042
*/
-static int decode_gtp_ms_time_zone(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_ms_time_zone(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
- guint8 data;
- char sign;
+ guint8 data;
+ char sign;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s: ", val_to_str_ext_const(GTP_EXT_MS_TIME_ZONE, &gtp_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_ms_time_zone);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_MS_TIME_ZONE]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5507,18 +5698,19 @@ static int decode_gtp_ms_time_zone(tvbuff_t * tvb, int offset, packet_info * pin
* International Mobile Equipment Identity (and Software Version) (IMEI(SV))
* Type = 154 (Decimal)
*/
-static int decode_gtp_imeisv(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_imeisv(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_imeisv;
proto_item *te;
- tvbuff_t *next_tvb;
+ tvbuff_t *next_tvb;
const char *digit_str;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_IMEISV, &gtp_val_ext, "Unknown"));
- ext_imeisv = proto_item_add_subtree(te, ett_gtp_ext_imeisv);
+ ext_imeisv = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_IMEISV]);
offset++;
proto_tree_add_item(ext_imeisv, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5543,16 +5735,17 @@ static int decode_gtp_imeisv(tvbuff_t * tvb, int offset, packet_info * pinfo _U_
* CAMEL Charging Information Container
* Type = 155 (Decimal)
*/
-static int decode_gtp_camel_chg_inf_con(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_camel_chg_inf_con(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_CAMEL_CHG_INF_CON, &gtp_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_camel_chg_inf_con);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_CAMEL_CHG_INF_CON]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5568,16 +5761,17 @@ static int decode_gtp_camel_chg_inf_con(tvbuff_t * tvb, int offset, packet_info
* UMTS: 29.060 v6.11.0, chapter 7.7.55
* MBMS UE Context
*/
-static int decode_gtp_mbms_ue_ctx(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_mbms_ue_ctx(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_MBMS_UE_CTX, &gtp_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_GTP_EXT_MBMS_UE_CTX);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_MBMS_UE_CTX]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5597,17 +5791,18 @@ static int decode_gtp_mbms_ue_ctx(tvbuff_t * tvb, int offset, packet_info * pinf
* in 3GPP T S 24.008 [5] (i.e. the IEI and octet length indicator are not included).
*/
-static int decode_gtp_tmgi(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree)
+static int
+decode_gtp_tmgi(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree, *tmgi_tree;
proto_item *te, *ti;
- tvbuff_t *next_tvb;
+ tvbuff_t *next_tvb;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_TMGI, &gtp_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_tmgi);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_TMGI]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5626,16 +5821,17 @@ static int decode_gtp_tmgi(tvbuff_t * tvb, int offset, packet_info * pinfo, prot
* UMTS: 29.060 v6.11.0, chapter 7.7.57
* RIM Routing Address
*/
-static int decode_gtp_rim_ra(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_rim_ra(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_RIM_RA, &gtp_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_rim_ra);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_RIM_RA]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5644,7 +5840,7 @@ static int decode_gtp_rim_ra(tvbuff_t * tvb, int offset, packet_info * pinfo _U_
/*
* Octets 4-n are coded according to 3GPP TS 48.018 [20] 11.3.77 RIM Routing Information IE octets 4-n.
*/
- proto_tree_add_item(ext_tree, hf_gtp_rim_routing_addr, tvb, offset, length, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ext_tree, hf_gtp_rim_routing_addr, tvb, offset, length, ENC_NA);
return 3 + length;
@@ -5654,16 +5850,17 @@ static int decode_gtp_rim_ra(tvbuff_t * tvb, int offset, packet_info * pinfo _U_
* UMTS: 29.060 v6.11.0, chapter 7.7.58
* MBMS Protocol Configuration Options
*/
-static int decode_gtp_mbms_prot_conf_opt(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_mbms_prot_conf_opt(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_MBMS_PROT_CONF_OPT, &gtp_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_mbms_prot_conf_opt);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_MBMS_PROT_CONF_OPT]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5680,28 +5877,30 @@ static int decode_gtp_mbms_prot_conf_opt(tvbuff_t * tvb, int offset, packet_info
* MBMS Session Duration
*/
/* Used for Diameter */
-static int dissect_gtp_mbms_ses_dur(tvbuff_t * tvb _U_, packet_info * pinfo _U_, proto_tree * tree _U_)
+static int
+dissect_gtp_mbms_ses_dur(tvbuff_t * tvb _U_, packet_info * pinfo _U_, proto_tree * tree _U_)
{
int offset = 0;
- proto_tree_add_item(tree, hf_gtp_mbms_ses_dur_days, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gtp_mbms_ses_dur_days, tvb, offset, 3, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_gtp_mbms_ses_dur_s, tvb, offset, 3, ENC_BIG_ENDIAN);
return 3;
}
-static int decode_gtp_mbms_ses_dur(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_mbms_ses_dur(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_MBMS_SES_DUR, &gtp_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_bms_ses_dur);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_MBMS_SES_DUR]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5720,7 +5919,7 @@ static int decode_gtp_mbms_ses_dur(tvbuff_t * tvb, int offset, packet_info * pin
* for which the maximum allowed value is 18 days. For the whole session duration the seconds
* and days are added together and the maximum session duration is 19 days.
*/
- proto_tree_add_item(ext_tree, hf_gtp_mbms_ses_dur_days, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ext_tree, hf_gtp_mbms_ses_dur_days, tvb, offset, 3, ENC_BIG_ENDIAN);
proto_tree_add_item(ext_tree, hf_gtp_mbms_ses_dur_s, tvb, offset, 3, ENC_BIG_ENDIAN);
return 3 + length;
@@ -5734,9 +5933,9 @@ static int decode_gtp_mbms_ses_dur(tvbuff_t * tvb, int offset, packet_info * pin
static int
dissect_gtp_3gpp_mbms_service_area(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
- int offset = 0;
+ int offset = 0;
guint8 no_of_mbms_sa_codes;
- int i;
+ int i;
/* The MBMS Service Area is defined in 3GPP TS 23.246 [26].
* The MBMS Service Area information element indicates the area over
@@ -5765,17 +5964,18 @@ dissect_gtp_3gpp_mbms_service_area(tvbuff_t *tvb _U_, packet_info *pinfo _U_, pr
return offset;
}
-static int decode_gtp_mbms_sa(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_mbms_sa(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- tvbuff_t *next_tvb;
- guint16 length;
+ tvbuff_t *next_tvb;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_MBMS_SA, &gtp_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_mbms_sa);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_MBMS_SA]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5791,16 +5991,17 @@ static int decode_gtp_mbms_sa(tvbuff_t * tvb, int offset, packet_info * pinfo _U
* UMTS: 29.060 v6.11.0, chapter 7.7.61
* Source RNC PDCP context info
*/
-static int decode_gtp_src_rnc_pdp_ctx_inf(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_src_rnc_pdp_ctx_inf(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_SRC_RNC_PDP_CTX_INF, &gtp_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_src_rnc_pdp_ctx_inf);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_SRC_RNC_PDP_CTX_INF]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5816,16 +6017,17 @@ static int decode_gtp_src_rnc_pdp_ctx_inf(tvbuff_t * tvb, int offset, packet_inf
* UMTS: 29.060 v6.11.0, chapter 7.7.62
* Additional Trace Info
*/
-static int decode_gtp_add_trs_inf(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_add_trs_inf(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_ADD_TRS_INF, &gtp_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_add_trs_inf);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_ADD_TRS_INF]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5841,16 +6043,17 @@ static int decode_gtp_add_trs_inf(tvbuff_t * tvb, int offset, packet_info * pinf
* UMTS: 29.060 v6.11.0, chapter 7.7.63
* Hop Counter
*/
-static int decode_gtp_hop_count(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_hop_count(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_HOP_COUNT, &gtp_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_hop_count);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_HOP_COUNT]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5866,16 +6069,17 @@ static int decode_gtp_hop_count(tvbuff_t * tvb, int offset, packet_info * pinfo
* UMTS: 29.060 v6.11.0, chapter 7.7.64
* Selected PLMN ID
*/
-static int decode_gtp_sel_plmn_id(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_sel_plmn_id(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_SEL_PLMN_ID, &gtp_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_sel_plmn_id);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_MBMS_SES_ID]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5891,16 +6095,17 @@ static int decode_gtp_sel_plmn_id(tvbuff_t * tvb, int offset, packet_info * pinf
* UMTS: 29.060 v6.11.0, chapter 7.7.65
* MBMS Session Identifier
*/
-static int decode_gtp_mbms_ses_id(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_mbms_ses_id(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_MBMS_SES_ID, &gtp_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_mbms_ses_id);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_MBMS_SES_ID]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5923,16 +6128,17 @@ static const value_string gtp_mbs_2g_3g_ind_vals[] = {
{0, NULL}
};
-static int decode_gtp_mbms_2g_3g_ind(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_mbms_2g_3g_ind(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_MBMS_2G_3G_IND, &gtp_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_mbms_2g_3g_ind);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_MBMS_2G_3G_IND]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5948,16 +6154,17 @@ static int decode_gtp_mbms_2g_3g_ind(tvbuff_t * tvb, int offset, packet_info * p
* UMTS: 29.060 v6.11.0, chapter 7.7.67
* Enhanced NSAPI
*/
-static int decode_gtp_enh_nsapi(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_enh_nsapi(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_ENH_NSAPI, &gtpv1_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_enh_nsapi);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_ENH_NSAPI]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5973,16 +6180,17 @@ static int decode_gtp_enh_nsapi(tvbuff_t * tvb, int offset, packet_info * pinfo
* UMTS: 29.060 v6.11.0, chapter 7.7.68
* Additional MBMS Trace Info
*/
-static int decode_gtp_add_mbms_trs_inf(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_add_mbms_trs_inf(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_ADD_MBMS_TRS_INF, &gtpv1_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_ad_mbms_trs_inf);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_ADD_MBMS_TRS_INF]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5998,16 +6206,17 @@ static int decode_gtp_add_mbms_trs_inf(tvbuff_t * tvb, int offset, packet_info *
* UMTS: 29.060 v6.11.0, chapter 7.7.69
* MBMS Session Identity Repetition Number
*/
-static int decode_gtp_mbms_ses_id_rep_no(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_mbms_ses_id_rep_no(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_MBMS_SES_ID_REP_NO, &gtpv1_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_mbms_ses_id_rep_no);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_MBMS_SES_ID_REP_NO]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -6024,10 +6233,11 @@ static int decode_gtp_mbms_ses_id_rep_no(tvbuff_t * tvb, int offset, packet_info
* MBMS Time To Data Transfer
*/
/* Used for Diameter */
-static int dissect_gtp_mbms_time_to_data_tr(tvbuff_t * tvb _U_, packet_info * pinfo _U_, proto_tree * tree _U_)
+static int
+dissect_gtp_mbms_time_to_data_tr(tvbuff_t * tvb _U_, packet_info * pinfo _U_, proto_tree * tree _U_)
{
- int offset = 0;
+ int offset = 0;
guint8 time_2_dta_tr;
time_2_dta_tr = tvb_get_guint8(tvb, offset) + 1;
@@ -6037,17 +6247,18 @@ static int dissect_gtp_mbms_time_to_data_tr(tvbuff_t * tvb _U_, packet_info * pi
}
-static int decode_gtp_mbms_time_to_data_tr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_mbms_time_to_data_tr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
- guint8 time_2_dta_tr;
+ guint8 time_2_dta_tr;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_MBMS_TIME_TO_DATA_TR, &gtpv1_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_mbms_time_to_data_tr);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_MBMS_TIME_TO_DATA_TR]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -6085,13 +6296,13 @@ static int
decode_gtp_ps_ho_req_ctx(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_PS_HO_REQ_CTX, &gtpv1_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_ps_ho_req_ctx);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_PS_HO_REQ_CTX]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -6111,13 +6322,13 @@ static int
decode_gtp_bss_cont(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_BSS_CONT, &gtpv1_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_bss_cont);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_BSS_CONT]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -6140,13 +6351,13 @@ static int
decode_gtp_cell_id(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_CELL_ID, &gtpv1_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_cell_id);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_CELL_ID]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -6173,13 +6384,13 @@ static int
decode_gtp_pdu_no(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_PDU_NO, &gtpv1_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_pdu_no);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_PDU_NO]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -6199,13 +6410,13 @@ static int
decode_gtp_bssgp_cause(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_BSSGP_CAUSE, &gtpv1_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_bssgp_cause);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_BSSGP_CAUSE]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -6226,13 +6437,13 @@ decode_gtp_bssgp_cause(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, prot
static int
decode_gtp_mbms_bearer_cap(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
- te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_BSSGP_CAUSE, &gtpv1_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_bssgp_cause);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_REQ_MBMS_BEARER_CAP, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_REQ_MBMS_BEARER_CAP]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -6255,20 +6466,20 @@ static const value_string gtp_bssgp_ra_discriminator_vals[] = {
{ 0, "A Cell Identifier is used to identify a GERAN cell" },
{ 1, "A Global RNC-ID is used to identify a UTRAN RNC" },
{ 2, "An eNB identifier is used to identify an E-UTRAN eNodeB or HeNB" },
- { 0, NULL },
+ { 0, NULL }
};
static int
decode_gtp_rim_ra_disc(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_RIM_ROUTING_ADDR_DISC, &gtpv1_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_pdu_no);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_RIM_ROUTING_ADDR_DISC]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -6289,13 +6500,13 @@ static int
decode_gtp_lst_set_up_pfc(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_LIST_OF_SETUP_PFCS, &gtpv1_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_pdu_no);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_LIST_OF_SETUP_PFCS]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -6309,19 +6520,20 @@ decode_gtp_lst_set_up_pfc(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, p
/*
* PS Handover XID Parameters 7.7.79
*/
-static int decode_gtp_ps_handover_xid(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_ps_handover_xid(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
- tvbuff_t *next_tvb;
- guint8 sapi;
- guint8 xid_par_len;
+ tvbuff_t *next_tvb;
+ guint8 sapi;
+ guint8 xid_par_len;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_PS_HANDOVER_XIP_PAR, &gtpv1_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_ps_handover_xid);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_PS_HANDOVER_XIP_PAR]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -6348,16 +6560,17 @@ static int decode_gtp_ps_handover_xid(tvbuff_t * tvb, int offset, packet_info *
/*
* MS Info Change Reporting Action 7.7.80
*/
-static int decode_gtp_ms_inf_chg_rep_act(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_ms_inf_chg_rep_act(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_MS_INF_CHG_REP_ACT, &gtpv1_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_pdu_no);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_MS_INF_CHG_REP_ACT]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -6371,16 +6584,17 @@ static int decode_gtp_ms_inf_chg_rep_act(tvbuff_t * tvb, int offset, packet_info
/*
* Direct Tunnel Flags 7.7.81
*/
-static int decode_gtp_direct_tnl_flg(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_direct_tnl_flg(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_DIRECT_TUNNEL_FLGS, &gtpv1_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_pdu_no);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_DIRECT_TUNNEL_FLGS]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -6399,16 +6613,17 @@ static int decode_gtp_direct_tnl_flg(tvbuff_t * tvb, int offset, packet_info * p
/*
* Correlation-ID 7.7.82
*/
-static int decode_gtp_corrl_id(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_corrl_id(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_CORRELATION_ID, &gtpv1_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_pdu_no);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_CORRELATION_ID]);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -6429,16 +6644,18 @@ static const value_string gtp_pdp_bcm_type_vals[] = {
{0, NULL}
};
-static int decode_gtp_bearer_cntrl_mod(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_bearer_cntrl_mod(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_BEARER_CONTROL_MODE, &gtpv1_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_bcm);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_BEARER_CONTROL_MODE]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -6452,26 +6669,176 @@ static int decode_gtp_bearer_cntrl_mod(tvbuff_t * tvb, int offset, packet_info *
/*
* 7.7.84 MBMS Flow Identifier
+ */
+static int
+decode_gtp_mbms_flow_id(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_MBMS_FLOW_ID, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_MBMS_FLOW_ID]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+
+ /* 4-n MBMS Flow Identifier */
+ proto_tree_add_item(ext_tree, hf_gtp_mbms_flow_id, tvb, offset, length, ENC_NA);
+
+
+ return 3 + length;
+}
+
+/*
* 7.7.85 MBMS IP Multicast Distribution
+ */
+
+static int
+decode_gtp_mbms_ip_mcast_dist(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_MBMS_IP_MCAST_DIST, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_MBMS_IP_MCAST_DIST]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+
+ proto_tree_add_text(ext_tree, tvb, offset, length, "The rest of the data is not dissected yet");
+
+ return 3 + length;
+}
+
+/*
* 7.7.86 MBMS Distribution Acknowledgement
+ */
+/* Table 7.7.86.1: Distribution Indication values */
+static const value_string gtp_mbms_dist_indic_vals[] = {
+ {0, "No RNCs have accepted IP multicast distribution"},
+ {1, "All RNCs have accepted IP multicast distribution"},
+ {2, "Some RNCs have accepted IP multicast distribution"},
+ {3, "Spare. For future use."},
+ {0, NULL}
+};
+static int
+decode_gtp_mbms_dist_ack(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_MBMS_DIST_ACK, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_MBMS_DIST_ACK]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+
+ /* Distribution Indication values */
+ proto_tree_add_item(ext_tree, hf_gtp_mbms_dist_indic, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ return 3 + length;
+}
+
+/*
* 7.7.87 Reliable INTER RAT HANDOVER INFO
+ */
+static int
+decode_gtp_reliable_irat_ho_inf(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_RELIABLE_IRAT_HO_INF, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_RELIABLE_IRAT_HO_INF]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+
+ proto_tree_add_text(ext_tree, tvb, offset, length, "The rest of the data is not dissected yet");
+
+ return 3 + length;
+}
+
+/*
* 7.7.88 RFSP Index
+ */
+static int
+decode_gtp_rfsp_index(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_RFSP_INDEX, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_RFSP_INDEX]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+
+ proto_tree_add_text(ext_tree, tvb, offset, length, "The rest of the data is not dissected yet");
+
+ return 3 + length;
+}
+/*
* 7.7.89 PDP Type
+ */
+/*
* 7.7.90 Fully Qualified Domain Name (FQDN)
*/
+static int
+decode_gtp_fqdn(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+
+ te = proto_tree_add_text(tree, tvb, offset, length + 3, "%s", val_to_str_ext_const(GTP_EXT_FQDN, &gtp_val_ext, "Unknown field"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_FQDN]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ proto_tree_add_text(ext_tree, tvb, offset + 1, 2, "FQDN length : %u", length);
+ decode_fqdn(tvb, offset + 3, length, ext_tree);
+
+ return 3 + length;
+}
+
/*
* 7.7.91 Evolved Allocation/Retention Priority I
*/
-static int decode_gtp_evolved_allc_rtn_p1(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_evolved_allc_rtn_p1(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
+ guint16 length;
proto_tree *ext_tree;
proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_EVO_ALLO_RETE_P1, &gtpv1_val_ext, "Unknown"));
- ext_tree = proto_item_add_subtree(te, ett_gtp_ext_pdu_no);
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_EVO_ALLO_RETE_P1]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -6488,33 +6855,570 @@ static int decode_gtp_evolved_allc_rtn_p1(tvbuff_t * tvb, int offset, packet_inf
/*
* 7.7.92 Evolved Allocation/Retention Priority II
+ */
+static int
+decode_gtp_evolved_allc_rtn_p2(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_EVO_ALLO_RETE_P2, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_EVO_ALLO_RETE_P2]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+
+ proto_tree_add_item(ext_tree, hf_gtp_earp_pvi, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ext_tree, hf_gtp_earp_pl, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ext_tree, hf_gtp_earp_pci, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ return 3 + length;
+
+
+}
+
+/*
* 7.7.93 Extended Common Flags
+ */
+static int
+decode_gtp_extended_common_flgs(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_EXTENDED_COMMON_FLGS, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_EXTENDED_COMMON_FLGS]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+
+ proto_tree_add_text(ext_tree, tvb, offset, length, "The rest of the data is not dissected yet");
+
+ return 3 + length;
+}
+
+/*
* 7.7.94 User CSG Information (UCI)
+ */
+static int
+decode_gtp_uci(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_UCI, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_UCI]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+
+ proto_tree_add_text(ext_tree, tvb, offset, length, "The rest of the data is not dissected yet");
+
+ return 3 + length;
+}
+
+/*
* 7.7.95 CSG Information Reporting Action
+ */
+
+static int
+decode_gtp_csg_inf_rep_act(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_CSG_INF_REP_ACT, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_CSG_INF_REP_ACT]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+
+ proto_tree_add_text(ext_tree, tvb, offset, length, "The rest of the data is not dissected yet");
+
+ return 3 + length;
+}
+/*
* 7.7.96 CSG ID
+ */
+
+static int
+decode_gtp_csg_id(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_CSG_ID, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_CSG_ID]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+
+ proto_tree_add_text(ext_tree, tvb, offset, length, "The rest of the data is not dissected yet");
+
+ return 3 + length;
+}
+/*
* 7.7.97 CSG Membership Indication (CMI)
+ */
+static int
+decode_gtp_cmi(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_CMI, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_CMI]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+
+ proto_tree_add_text(ext_tree, tvb, offset, length, "The rest of the data is not dissected yet");
+
+ return 3 + length;
+}
+/*
* 7.7.98 APN Aggregate Maximum Bit Rate (APN-AMBR)
+ */
+static int
+decode_gtp_apn_ambr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_AMBR, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_RELIABLE_IRAT_HO_INF]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+
+ /* APN Aggregate Maximum Bit Rate (APN-AMBR) is defined in clause 9.9.4.2 of 3GPP TS 24.301 [42], but shall be
+ * formatted as shown in Figure 7.7.98-1 as Unsigned32 binary integer values in kbps (1000 bits per second).
+ */
+ /* 4 to 7 APN-AMBR for Uplink */
+ te = proto_tree_add_item(ext_tree, hf_gtp_ext_apn_ambr_ul, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_item_append_text(te, " kbps");
+ offset+=4;
+ /* 8 to 11 APN-AMBR for Downlink */
+ te = proto_tree_add_item(ext_tree, hf_gtp_ext_apn_ambr_dl, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_item_append_text(te, " kbps");
+
+
+ return 3 + length;
+}
+/*
* 7.7.99 UE Network Capability
+ */
+static int
+decode_gtp_ue_network_cap(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree)
+{
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_UE_NETWORK_CAP, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_UE_NETWORK_CAP]);
+
+ offset++;
+ proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+
+ de_emm_ue_net_cap(tvb, ext_tree, pinfo, offset, length, NULL, 0);
+
+ return 3 + length;
+}
+/*
* 7.7.100 UE-AMBR
+ */
+
+static int
+decode_gtp_ue_ambr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_APN_AMBR_WITH_NSAPI, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_APN_AMBR_WITH_NSAPI]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+
+ /* 4 to 7 Subscribed UE-AMBR for Uplink */
+ te = proto_tree_add_item(ext_tree, hf_gtp_ext_sub_ue_ambr_ul, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_item_append_text(te, " kbps");
+ offset+=4;
+ /* 8 to 11 Subscribed UE-AMBR for Downlink */
+ te = proto_tree_add_item(ext_tree, hf_gtp_ext_sub_ue_ambr_dl, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_item_append_text(te, " kbps");
+ offset+=4;
+
+ /* Authorized UE-AMBR for Uplink and Downlink fields are present in the IE only if the sender has their valid values
+ * available. Otherwise, the fields from m to (n+3) shall not be present.
+ */
+ if(offset >= length)
+ return 3 + length;
+
+ /* m to (m+3) Authorized UE-AMBR for Uplink */
+ te = proto_tree_add_item(ext_tree, hf_gtp_ext_auth_ue_ambr_ul, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_item_append_text(te, " kbps");
+ offset+=4;
+
+ /* (m+4) to (n+3) Authorized UE-AMBR for Downlink */
+ te = proto_tree_add_item(ext_tree, hf_gtp_ext_auth_ue_ambr_dl, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_item_append_text(te, " kbps");
+
+ proto_tree_add_text(ext_tree, tvb, offset, length, "The rest of the data is not dissected yet");
+
+ return 3 + length;
+}
+
+/*
* 7.7.101 APN-AMBR with NSAPI
+ */
+static int
+decode_gtp_apn_ambr_with_nsapi(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_UE_AMBR, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_UE_AMBR]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+
+ proto_tree_add_item(ext_tree, hf_gtp_nsapi, tvb, offset + 1, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ /* 5 to 8 Authorized APN-AMBR for Uplink */
+ te = proto_tree_add_item(ext_tree, hf_gtp_ext_auth_apn_ambr_ul, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_item_append_text(te, " kbps");
+ offset+=4;
+
+ /* 9 to12 Authorized APN-AMBR for Downlink */
+ te = proto_tree_add_item(ext_tree, hf_gtp_ext_auth_apn_ambr_dl, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_item_append_text(te, " kbps");
+
+ return 3 + length;
+}
+/*
* 7.7.102 GGSN Back-Off Time
+ */
+/* Table 7.7.102.1: GGSN Back-Off Time information element */
+static const value_string gtp_ggsn_back_off_time_units_vals[] = {
+ {0, "value is incremented in multiples of 2 seconds"},
+ {1, "value is incremented in multiples of 1 minute"},
+ {2, "value is incremented in multiples of 10 minutes"},
+ {3, "value is incremented in multiples of 1 hour"},
+ {4, "value is incremented in multiples of 10 hours"},
+ {5, "value indicates that the timer is infinite"},
+ {0, NULL}
+};
+static int
+decode_gtp_ggsn_back_off_time(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_GGSN_BACK_OFF_TIME, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_GGSN_BACK_OFF_TIME]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+
+ /* 4 Timer unit Timer value */
+ proto_tree_add_item(ext_tree, hf_gtp_ext_ggsn_back_off_time_units, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ext_tree, hf_gtp_ext_ggsn_back_off_timer, tvb, offset, 2, ENC_BIG_ENDIAN);
+
+ return 3 + length;
+}
+
+/*
* 7.7.103 Signalling Priority Indication
+ */
+
+static int
+decode_gtp_sig_pri_ind(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_SIG_PRI_IND, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_SIG_PRI_IND]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+
+ proto_tree_add_text(ext_tree, tvb, offset, length, "The rest of the data is not dissected yet");
+
+ return 3 + length;
+}
+/*
* 7.7.104 Signalling Priority Indication with NSAPI
+ */
+
+static int
+decode_gtp_sig_pri_ind_w_nsapi(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_SIG_PRI_IND_W_NSAPI, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_SIG_PRI_IND_W_NSAPI]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+
+ proto_tree_add_text(ext_tree, tvb, offset, length, "The rest of the data is not dissected yet");
+
+ return 3 + length;
+}
+/*
* 7.7.105 Higher bitrates than 16 Mbps flag
+ */
+static const value_string gtp_higher_br_16mb_flg_vals[] = {
+ {0, "Not allowed"},
+ {1, "Allowed"},
+ {0, NULL}
+};
+
+static int
+decode_gtp_higher_br_16mb_flg(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_HIGHER_BR_16MB_FLG, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_HIGHER_BR_16MB_FLG]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+
+ /* Higher bitrates than 16 Mbps flag */
+ proto_tree_add_item(ext_tree, hf_gtp_higher_br_16mb_flg, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ return 3 + length;
+}
+/*
* 7.7.106 Max MBR/APN-AMBR
+ */
+
+static int
+decode_gtp_max_mbr_apn_ambr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+ guint32 max_ul;
+ guint32 max_dl;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_MAX_MBR_APN_AMBR, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_MAX_MBR_APN_AMBR]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+
+ /* Max MBR/APN-AMBR for uplink */
+ max_ul = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_uint_format(ext_tree, hf_gtp_max_mbr_apn_ambr_ul, tvb, offset, 4, max_ul, "Max MBR/APN-AMBR for uplink : %u %s",
+ (max_ul) > 1000 ? max_ul/1000 : max_ul,
+ (max_ul) > 1000 ? "Mbps" : "kbps");
+
+ offset += 4;
+
+ /* Max MBR/APN-AMBR for downlink */
+ max_dl = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_uint_format(ext_tree, hf_gtp_max_mbr_apn_ambr_dl, tvb, offset, 4, max_dl, "Max MBR/APN-AMBR for downlink : %u %s",
+ (max_dl) > 1000 ? max_dl/1000 : max_dl,
+ (max_dl) > 1000 ? "Mbps" : "kbps");
+
+ return 3 + length;
+}
+/*
* 7.7.107 Additional MM context for SRVCC
+ */
+
+static int
+decode_gtp_add_mm_ctx_srvcc(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_ADD_MM_CTX_SRVCC, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_ADD_MM_CTX_SRVCC]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+
+ proto_tree_add_text(ext_tree, tvb, offset, length, "The rest of the data is not dissected yet");
+
+ return 3 + length;
+}
+
+/*
* 7.7.108 Additional flags for SRVCC
+ */
+
+static int
+decode_gtp_add_flgs_srvcc(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_ADD_FLGS_SRVCC, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_ADD_FLGS_SRVCC]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+
+ proto_tree_add_text(ext_tree, tvb, offset, length, "The rest of the data is not dissected yet");
+
+ return 3 + length;
+}
+/*
* 7.7.109 STN-SR
+ */
+static int
+decode_gtp_stn_sr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_STN_SR, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_STN_SR]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+
+ proto_tree_add_text(ext_tree, tvb, offset, length, "The rest of the data is not dissected yet");
+
+ return 3 + length;
+}
+
+/*
* 7.7.110 C-MSISDN
+ */
+
+static int
+decode_gtp_c_msisdn(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_C_MSISDN, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_C_MSISDN]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+
+ proto_tree_add_text(ext_tree, tvb, offset, length, "The rest of the data is not dissected yet");
+
+ return 3 + length;
+}
+/*
* 7.7.111 Extended RANAP Cause
*/
+static int
+decode_gtp_ext_ranap_cause(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ guint16 length;
+ proto_tree *ext_tree;
+ proto_item *te;
+
+ length = tvb_get_ntohs(tvb, offset + 1);
+ te = proto_tree_add_text(tree, tvb, offset, 3 + length, "%s", val_to_str_ext_const(GTP_EXT_EXT_RANAP_CAUSE, &gtpv1_val_ext, "Unknown"));
+ ext_tree = proto_item_add_subtree(te, ett_gtp_ies[GTP_EXT_EXT_RANAP_CAUSE]);
+ proto_tree_add_item(ext_tree, hf_gtp_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+ proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset + 2;
+
+ proto_tree_add_text(ext_tree, tvb, offset, length, "The rest of the data is not dissected yet");
+
+ return 3 + length;
+}
+
/* GPRS: 12.15
* UMTS: 33.015
*/
-static int decode_gtp_rel_pack(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_rel_pack(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length, n, number;
+ guint16 length, n, number;
proto_tree *ext_tree_rel_pack;
proto_item *te;
@@ -6539,10 +7443,11 @@ static int decode_gtp_rel_pack(tvbuff_t * tvb, int offset, packet_info * pinfo _
/* GPRS: 12.15
* UMTS: 33.015
*/
-static int decode_gtp_can_pack(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_can_pack(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length, n, number;
+ guint16 length, n, number;
proto_tree *ext_tree_can_pack;
proto_item *te;
@@ -6574,14 +7479,15 @@ static const value_string gtp_cdr_fmt_vals[] = {
{3, "Aligned basic Packed Encoding Rules (PER)"},
{0, NULL}
};
-static int decode_gtp_data_req(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_data_req(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length, cdr_length;
- guint8 no, format, app_id, rel_id, ver_id, i;
+ guint16 length, cdr_length;
+ guint8 no, format, app_id, rel_id, ver_id, i;
proto_tree *ext_tree, *ver_tree, *cdr_dr_tree;
proto_item *te, *fmt_item, *ver_item;
- tvbuff_t *next_tvb;
+ tvbuff_t *next_tvb;
te = proto_tree_add_text(tree, tvb, offset, 1, "%s", val_to_str_ext_const(GTP_EXT_DATA_REQ, &gtp_val_ext, "Unknown message"));
ext_tree = proto_item_add_subtree(te, ett_gtp_ext);
@@ -6597,14 +7503,14 @@ static int decode_gtp_data_req(tvbuff_t * tvb, int offset, packet_info * pinfo _
offset++;
/* Octet 5 Data Record Format */
- format = tvb_get_guint8(tvb, offset);
+ format = tvb_get_guint8(tvb, offset);
fmt_item = proto_tree_add_text(ext_tree, tvb, offset, 1, "Data record format: %u", format);
offset++;
/* The value range is 1-255 in decimal. The value '0' should not be used.
* Only the values 1-10 and 51-255 can be used for standards purposes.
* Values in the range of 11-50 are to be configured only by operators, and are not subject to standardization.
*/
- if(format<4){
+ if(format < 4) {
proto_item_append_text(fmt_item, " %s", val_to_str_const(format, gtp_cdr_fmt_vals, "Unknown"));
/* Octet 6 -7 Data Record Format Version
* 8 7 6 5 4 3 2 1
@@ -6622,7 +7528,7 @@ static int decode_gtp_data_req(tvbuff_t * tvb, int offset, packet_info * pinfo _
* In circumstances where the second digit is an alphabetical character, (e.g. 3.b.0), the corresponding ASCII value shall
* be taken, e.g. the Version Identifier would be "66" (ASCII(b)).
*/
- if(ver_id<0x65)
+ if(ver_id < 0x65)
ver_id = ver_id -1;
/* XXX We don't handle ASCCI version */
@@ -6642,10 +7548,10 @@ static int decode_gtp_data_req(tvbuff_t * tvb, int offset, packet_info * pinfo _
proto_tree_add_text(cdr_dr_tree, tvb, offset, cdr_length, "Content");
next_tvb = tvb_new_subset_remaining(tvb, offset);
- /* XXX this is for release 6, may not work for higer releases */
- if(format==1){
+ /* XXX this is for release 6, may not work for higher releases */
+ if(format==1) {
dissect_gprscdr_GPRSCallEventRecord_PDU(next_tvb, pinfo, cdr_dr_tree);
- }else{
+ } else {
/* Do we have a dissector regestering for this data format? */
dissector_try_uint(gtp_cdr_fmt_dissector_table, format, next_tvb, pinfo, cdr_dr_tree);
}
@@ -6653,7 +7559,7 @@ static int decode_gtp_data_req(tvbuff_t * tvb, int offset, packet_info * pinfo _
offset = offset + cdr_length;
}
- }else{
+ } else {
/* Proprietary CDR format */
proto_item_append_text(fmt_item, " Proprietary or un documented format");
}
@@ -6669,10 +7575,11 @@ static int decode_gtp_data_req(tvbuff_t * tvb, int offset, packet_info * pinfo _
/* GPRS: 12.15
* UMTS: 33.015
*/
-static int decode_gtp_data_resp(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_data_resp(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length, n, number;
+ guint16 length, n, number;
proto_tree *ext_tree_data_resp;
proto_item *te;
@@ -6698,14 +7605,15 @@ static int decode_gtp_data_resp(tvbuff_t * tvb, int offset, packet_info * pinfo
/* GPRS: 12.15
* UMTS: 33.015
*/
-static int decode_gtp_node_addr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_node_addr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length;
- guint32 addr_ipv4;
- struct e_in6_addr addr_ipv6;
- proto_tree *ext_tree_node_addr;
- proto_item *te;
+ guint16 length;
+ guint32 addr_ipv4;
+ struct e_in6_addr addr_ipv6;
+ proto_tree *ext_tree_node_addr;
+ proto_item *te;
length = tvb_get_ntohs(tvb, offset + 1);
@@ -6739,13 +7647,14 @@ static int decode_gtp_node_addr(tvbuff_t * tvb, int offset, packet_info * pinfo
*
*/
-static int decode_gtp_priv_ext(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_priv_ext(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
- guint16 length, ext_id;
+ guint16 length, ext_id;
proto_tree *ext_tree_priv_ext;
proto_item *te;
- tvbuff_t *next_tvb;
+ tvbuff_t *next_tvb;
te = proto_tree_add_text(tree, tvb, offset, 1, "%s", val_to_str_ext_const(GTP_EXT_PRIV_EXT, &gtp_val_ext, "Unknown message"));
ext_tree_priv_ext = proto_item_add_subtree(te, ett_gtp_ext);
@@ -6763,7 +7672,7 @@ static int decode_gtp_priv_ext(tvbuff_t * tvb, int offset, packet_info * pinfo _
* XXX - is this always a text string? Or should it be
* displayed as hex data?
*/
- if (length > 2){
+ if (length > 2) {
proto_tree_add_item(ext_tree_priv_ext, hf_gtp_ext_val, tvb, offset, length - 2, ENC_NA);
next_tvb = tvb_new_subset_remaining(tvb, offset);
dissector_try_uint(gtp_priv_ext_dissector_table, ext_id, next_tvb, pinfo, ext_tree_priv_ext);
@@ -6773,7 +7682,8 @@ static int decode_gtp_priv_ext(tvbuff_t * tvb, int offset, packet_info * pinfo _
return 3 + length;
}
-static int decode_gtp_unknown(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+static int
+decode_gtp_unknown(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
{
proto_tree_add_text(tree, tvb, offset, 1, "Unknown extension header");
@@ -6781,381 +7691,394 @@ static int decode_gtp_unknown(tvbuff_t * tvb, int offset, packet_info * pinfo _U
return tvb_length_remaining(tvb, offset);
}
-static void dissect_gtp_common(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
-{
- struct _gtp_hdr gtp_hdr;
- proto_tree *gtp_tree, *flags_tree, *ext_tree;
- proto_item *ti, *tf, *item;
- int i, offset, length, gtp_prime, checked_field, mandatory;
- int seq_no=0, flow_label=0;
- guint8 pdu_no, next_hdr = 0, ext_hdr_val, noOfExtHdrs = 0, ext_hdr_length;
- gchar *tid_str;
- guint32 teid = 0;
- tvbuff_t *next_tvb;
- guint8 sub_proto, acfield_len = 0, control_field;
- gtp_msg_hash_t *gcrp=NULL;
- conversation_t *conversation=NULL;
- gtp_conv_info_t *gtp_info;
- void* pd_save;
-
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "GTP");
- col_clear(pinfo->cinfo, COL_INFO);
-
- /*
- * Do we have a conversation for this connection?
- */
- conversation = find_or_create_conversation(pinfo);
-
- /*
- * Do we already know this conversation?
- */
- gtp_info = conversation_get_proto_data(conversation, proto_gtp);
- if (gtp_info == NULL) {
- /* No. Attach that information to the conversation, and add
- * it to the list of information structures.
- */
- gtp_info = g_malloc(sizeof(gtp_conv_info_t));
- /*Request/response matching tables*/
- gtp_info->matched = g_hash_table_new(gtp_sn_hash, gtp_sn_equal_matched);
- gtp_info->unmatched = g_hash_table_new(gtp_sn_hash, gtp_sn_equal_unmatched);
-
- conversation_add_proto_data(conversation, proto_gtp, gtp_info);
-
- gtp_info->next = gtp_info_items;
- gtp_info_items = gtp_info;
- }
- pd_save = pinfo->private_data;
- pinfo->private_data = gtp_info;
-
- tvb_memcpy(tvb, (guint8 *) & gtp_hdr, 0, 4);
-
- if (!(gtp_hdr.flags & 0x10))
- gtp_prime = 1;
- else
- gtp_prime = 0;
-
- switch ((gtp_hdr.flags >> 5) & 0x07) {
- case 0:
- gtp_version = 0;
- break;
- case 1:
- gtp_version = 1;
- break;
- default:
- gtp_version = 1;
- break;
- }
-
- col_add_str(pinfo->cinfo, COL_INFO, val_to_str_ext_const(gtp_hdr.message, &gtp_message_type_ext, "Unknown"));
-
- if (tree) {
- ti = proto_tree_add_item(tree, proto_gtp, tvb, 0, -1, ENC_NA);
- gtp_tree = proto_item_add_subtree(ti, ett_gtp);
-
- tf = proto_tree_add_uint(gtp_tree, hf_gtp_flags, tvb, 0, 1, gtp_hdr.flags);
- flags_tree = proto_item_add_subtree(tf, ett_gtp_flags);
-
- if(gtp_prime==1){
- /* Octet 8 7 6 5 4 3 2 1
- * 1 Version | PT| Spare '1 1 1 '| ' 0/1 '
- */
- proto_tree_add_uint(flags_tree, hf_gtp_prime_flags_ver, tvb, 0, 1, gtp_hdr.flags);
- proto_tree_add_uint(flags_tree, hf_gtp_flags_pt, tvb, 0, 1, gtp_hdr.flags);
- proto_tree_add_uint(flags_tree, hf_gtp_flags_spare1, tvb, 0, 1, gtp_hdr.flags);
- /* Bit 1 of octet 1 is not used in GTP' (except in v0), and it is marked '0'
- * in the GTP' header. It is in use in GTP' v0 and distinguishes the used header-length.
- * In the case of GTP' v0, this bit being marked one (1) indicates the usage of the 6
- * octets header. If the bit is set to '0' (usually the case) the 20-octet header is used.
- * For all other versions of GTP', this bit is not used and is set to '0'. However,
- * this does not suggest the use of the 20-octet header, rather a shorter 6-octet header.
- */
- if(gtp_version==0){
- proto_tree_add_item(flags_tree, hf_gtp_flags_hdr_length, tvb, 0, 1, ENC_BIG_ENDIAN);
- }
- }else{
- proto_tree_add_uint(flags_tree, hf_gtp_flags_ver, tvb, 0, 1, gtp_hdr.flags);
- proto_tree_add_uint(flags_tree, hf_gtp_flags_pt, tvb, 0, 1, gtp_hdr.flags);
- if(gtp_version==0){
- proto_tree_add_uint(flags_tree, hf_gtp_flags_spare1, tvb, 0, 1, gtp_hdr.flags);
- proto_tree_add_boolean(flags_tree, hf_gtp_flags_snn, tvb, 0, 1, gtp_hdr.flags);
- }else{
- proto_tree_add_uint(flags_tree, hf_gtp_flags_spare2, tvb, 0, 1, gtp_hdr.flags);
- proto_tree_add_boolean(flags_tree, hf_gtp_flags_e, tvb, 0, 1, gtp_hdr.flags);
- proto_tree_add_boolean(flags_tree, hf_gtp_flags_s, tvb, 0, 1, gtp_hdr.flags);
- proto_tree_add_boolean(flags_tree, hf_gtp_flags_pn, tvb, 0, 1, gtp_hdr.flags);
- }
- }
-
- proto_tree_add_uint(gtp_tree, hf_gtp_message_type, tvb, 1, 1, gtp_hdr.message);
-
- gtp_hdr.length = g_ntohs(gtp_hdr.length);
- proto_tree_add_uint(gtp_tree, hf_gtp_length, tvb, 2, 2, gtp_hdr.length);
-
- offset = 4;
-
- if (gtp_prime) {
- seq_no = tvb_get_ntohs(tvb, offset);
- proto_tree_add_uint(gtp_tree, hf_gtp_seq_number, tvb, offset, 2, seq_no);
- offset += 2;
- /* If GTP' version is 0 and bit 1 is 0 20 bytes header is used, step past it */
- if( (gtp_version==0)&&((gtp_hdr.flags & 0x01)==0) ){
- offset = GTPv0_HDR_LENGTH;
- }
- } else
- switch (gtp_version) {
- case 0:
- seq_no = tvb_get_ntohs(tvb, offset);
- proto_tree_add_uint(gtp_tree, hf_gtp_seq_number, tvb, offset, 2, seq_no);
- offset += 2;
-
- flow_label = tvb_get_ntohs(tvb, offset);
- proto_tree_add_uint(gtp_tree, hf_gtp_flow_label, tvb, offset, 2, flow_label);
- offset += 2;
-
- pdu_no = tvb_get_guint8(tvb, offset);
- proto_tree_add_uint(gtp_tree, hf_gtp_sndcp_number, tvb, offset, 1, pdu_no);
- offset += 4;
-
- tid_str = id_to_str(tvb, offset);
- proto_tree_add_string(gtp_tree, hf_gtp_tid, tvb, offset, 8, tid_str);
- offset += 8;
- break;
- case 1:
- teid = tvb_get_ntohl(tvb, offset);
- proto_tree_add_uint(gtp_tree, hf_gtp_teid, tvb, offset, 4, teid);
- offset += 4;
-
- /* Are sequence number/N-PDU Number/extension header present? */
- if (gtp_hdr.flags & 0x07) {
- seq_no = tvb_get_ntohs(tvb, offset);
- proto_tree_add_uint(gtp_tree, hf_gtp_seq_number, tvb, offset, 2, seq_no);
- offset += 2;
-
- pdu_no = tvb_get_guint8(tvb, offset);
- proto_tree_add_uint(gtp_tree, hf_gtp_npdu_number, tvb, offset, 1, pdu_no);
- offset++;
-
- next_hdr = tvb_get_guint8(tvb, offset);
-
- /* Don't add extension header, we'll add a subtree for that */
- /* proto_tree_add_uint(gtp_tree, hf_gtp_next, tvb, offset, 1, next_hdr); */
-
- offset++;
-
- /* Change to while? */
- if (next_hdr) {
-
- /* TODO Add support for more than one extension header */
-
- noOfExtHdrs++;
-
- tf = proto_tree_add_uint(gtp_tree, hf_gtp_ext_hdr, tvb, offset, 4, next_hdr);
- ext_tree = proto_item_add_subtree(tf, ett_gtp_ext_hdr);
-
- /* PDCP PDU
- * 3GPP 29.281 v9.0.0, 5.2.2.2 PDCP PDU Number
- *
- * "This extension header is transmitted, for example in UTRAN, at SRNS relocation time,
- * to provide the PDCP sequence number of not yet acknowledged N-PDUs. It is 4 octets long,
- * and therefore the Length field has value 1.
- *
- * When used between two eNBs at the X2 interface in E-UTRAN, bits 5-8 of octet 2 are spare.
- * The meaning of the spare bits shall be set to zero.
- *
- * Wireshark Note: TS 29.060 does not define bit 5-6 as spare, so no check is possible unless a preference is used.
- */
- if (next_hdr == GTP_EXT_HDR_PDCP_SN) {
-
- /* First byte is length (should be 1) */
- ext_hdr_length = tvb_get_guint8(tvb, offset);
- if (ext_hdr_length != 1) {
- expert_add_info_format(pinfo, ext_tree, PI_PROTOCOL, PI_WARN, "The length field for the PDCP SN Extension header should be 1.");
- }
- proto_tree_add_item(ext_tree, hf_gtp_ext_hdr_length, tvb, offset,1, ENC_BIG_ENDIAN);
- offset++;
-
- proto_tree_add_item(ext_tree, hf_gtp_ext_hdr_pdcpsn, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
-
- /* Last is next_hdr */
- next_hdr = tvb_get_guint8(tvb, offset);
- item = proto_tree_add_item(ext_tree, hf_gtp_ext_hdr_next, tvb, offset, 1, ENC_BIG_ENDIAN);
-
- if (next_hdr) {
- expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, "Can't decode more than one extension header.");
- }
- offset++;
- }
- }
- }
- break;
- default:
- break;
- }
-
- if (gtp_hdr.message != GTP_MSG_TPDU) {
- /* TODO: This code should be cleaned up to handle more than one
- * header and possibly display the header content */
- if (next_hdr) {
- offset++;
- switch (next_hdr) {
- case 1:
- /* MBMS support indication */
- proto_tree_add_text(gtp_tree, tvb, offset, 4, "[--- MBMS support indication header ---]");
- offset += 3;
- break;
- case 2:
- /* MS Info Change Reporting support indication */
- proto_tree_add_text(gtp_tree, tvb, offset, 4, "[--- MS Info Change Reporting support indication header ---]");
- offset += 3;
- break;
- case 0xc0:
- /* PDCP PDU number */
- proto_tree_add_text(gtp_tree, tvb, offset, 4, "[--- PDCP PDU number header ---]");
- offset += 3;
- break;
- case 0xc1:
- /* Suspend Request */
- proto_tree_add_text(gtp_tree, tvb, offset, 4, "[--- Suspend Request header ---]");
- offset += 3;
- break;
- case 0xc2:
- /* Suspend Response */
- proto_tree_add_text(gtp_tree, tvb, offset, 4, "[--- Suspend Response header ---]");
- offset += 3;
- break;
- default:
- proto_tree_add_text(gtp_tree, tvb, offset, 4, "[--- Unknown extension header ---]");
- offset += 3;
- break;
- }
- next_hdr = tvb_get_guint8(tvb, offset);
- proto_tree_add_uint(gtp_tree, hf_gtp_next, tvb, offset, 1, next_hdr);
- offset++;
- }
- /* proto_tree_add_text(gtp_tree, tvb, 0, 0, "[--- end of GTP header, beginning of extension headers ---]");*/
- length = tvb_length(tvb);
- mandatory = 0; /* check order of GTP fields against ETSI */
- for (;;) {
- if (offset >= length)
- break;
- if (next_hdr) {
- ext_hdr_val = next_hdr;
- next_hdr = 0;
- } else
- ext_hdr_val = tvb_get_guint8(tvb, offset);
- if (g_gtp_etsi_order) {
- checked_field = check_field_presence(gtp_hdr.message, ext_hdr_val, (int *) &mandatory);
- switch (checked_field) {
- case -2:
- proto_tree_add_text(gtp_tree, tvb, 0, 0, "[WARNING] message not found");
- break;
- case -1:
- proto_tree_add_text(gtp_tree, tvb, 0, 0, "[WARNING] field not present");
- break;
- case 0:
- break;
- default:
- proto_tree_add_text(gtp_tree, tvb, offset, 1, "[WARNING] wrong next field, should be: %s",
- val_to_str_ext_const(checked_field, &gtp_val_ext, "Unknown extension field"));
- break;
- }
- }
-
- i = -1;
- while (gtpopt[++i].optcode)
- if (gtpopt[i].optcode == ext_hdr_val)
- break;
- offset = offset + (*gtpopt[i].decode) (tvb, offset, pinfo, gtp_tree);
- }
-
- /*Use sequence number to track Req/Resp pairs*/
- if (seq_no) {
- gcrp = gtp_match_response(tvb, pinfo, gtp_tree, seq_no, gtp_hdr.message);
- /*pass packet to tap for response time reporting*/
- if (gcrp) {
- tap_queue_packet(gtp_tap,pinfo,gcrp);
- }
- }
- }
- proto_item_set_len (ti, offset);
- }
-
- if ((gtp_hdr.message == GTP_MSG_TPDU) && g_gtp_tpdu) {
-
- if (gtp_prime)
- offset = 6;
- else if (gtp_version == 1) {
- if (gtp_hdr.flags & 0x07) {
- offset = 11;
- if (tvb_get_guint8(tvb, offset) == 0)
- offset++;
- } else
- offset = 8;
- } else
- offset = 20;
-
- proto_tree_add_text(tree, tvb, offset, gtp_hdr.length, "T-PDU Data %u bytes", gtp_hdr.length);
- /* Can only handle one extension header type... */
- if (noOfExtHdrs != 0) offset+= 1 + noOfExtHdrs*4;
-
- sub_proto = tvb_get_guint8(tvb, offset);
-
- if ((sub_proto >= 0x45) && (sub_proto <= 0x4e)) {
- /* this is most likely an IPv4 packet
- * we can exclude 0x40 - 0x44 because the minimum header size is 20 octets
- * 0x4f is excluded because PPP protocol type "IPv6 header compression"
- * with protocol field compression is more likely than a plain IPv4 packet with 60 octet header size */
-
- next_tvb = tvb_new_subset_remaining(tvb, offset);
- call_dissector(ip_handle, next_tvb, pinfo, tree);
-
- } else if ((sub_proto & 0xf0) == 0x60) {
- /* this is most likely an IPv6 packet */
- next_tvb = tvb_new_subset_remaining(tvb, offset);
- call_dissector(ipv6_handle, next_tvb, pinfo, tree);
- } else {
- /* this seems to be a PPP packet */
-
- if (sub_proto == 0xff) {
- /* this might be an address field, even it shouldn't be here */
- control_field = tvb_get_guint8(tvb, offset + 1);
- if (control_field == 0x03)
- /* now we are pretty sure that address and control field are mistakenly inserted -> ignore it for PPP dissection */
- acfield_len = 2;
- }
-
- next_tvb = tvb_new_subset_remaining(tvb, offset + acfield_len);
- call_dissector(ppp_handle, next_tvb, pinfo, tree);
- }
-
- col_prepend_fstr(pinfo->cinfo, COL_PROTOCOL, "GTP <");
- col_append_str(pinfo->cinfo, COL_PROTOCOL, ">");
- }else{
- if (gtp_prime)
- offset = 6;
- else if (gtp_version == 1) {
- if (gtp_hdr.flags & 0x07) {
- offset = 11;
- if (tvb_get_guint8(tvb, offset) == 0)
- offset++;
- } else
- offset = 8;
- } else
- offset = 20;
- proto_tree_add_text(tree, tvb, offset, gtp_hdr.length, "T-PDU Data %u bytes", gtp_hdr.length);
- }
- pinfo->private_data = pd_save;
-}
-
-static void dissect_gtpprim(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
+static void
+dissect_gtp_common(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
{
+ struct _gtp_hdr gtp_hdr;
+ proto_tree *gtp_tree, *flags_tree, *ext_tree;
+ proto_item *ti, *tf, *item;
+ int i, offset, length, gtp_prime, checked_field, mandatory;
+ int seq_no = 0;
+ int flow_label = 0;
+ guint8 pdu_no, next_hdr = 0;
+ guint8 ext_hdr_val;
+ guint8 noOfExtHdrs = 0;
+ guint8 ext_hdr_length;
+ gchar *tid_str;
+ guint32 teid = 0;
+ tvbuff_t *next_tvb;
+ guint8 sub_proto;
+ guint8 acfield_len = 0;
+ guint8 control_field;
+ gtp_msg_hash_t *gcrp = NULL;
+ conversation_t *conversation = NULL;
+ gtp_conv_info_t *gtp_info;
+ void* pd_save;
+
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "GTP");
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ /*
+ * Do we have a conversation for this connection?
+ */
+ conversation = find_or_create_conversation(pinfo);
+
+ /*
+ * Do we already know this conversation?
+ */
+ gtp_info = conversation_get_proto_data(conversation, proto_gtp);
+ if (gtp_info == NULL) {
+ /* No. Attach that information to the conversation, and add
+ * it to the list of information structures.
+ */
+ gtp_info = g_malloc(sizeof(gtp_conv_info_t));
+ /*Request/response matching tables*/
+ gtp_info->matched = g_hash_table_new(gtp_sn_hash, gtp_sn_equal_matched);
+ gtp_info->unmatched = g_hash_table_new(gtp_sn_hash, gtp_sn_equal_unmatched);
+
+ conversation_add_proto_data(conversation, proto_gtp, gtp_info);
+
+ gtp_info->next = gtp_info_items;
+ gtp_info_items = gtp_info;
+ }
+ pd_save = pinfo->private_data;
+ pinfo->private_data = gtp_info;
+
+ tvb_memcpy(tvb, (guint8 *) & gtp_hdr, 0, 4);
+
+ if (!(gtp_hdr.flags & 0x10))
+ gtp_prime = 1;
+ else
+ gtp_prime = 0;
+
+ switch ((gtp_hdr.flags >> 5) & 0x07) {
+ case 0:
+ gtp_version = 0;
+ break;
+ case 1:
+ gtp_version = 1;
+ break;
+ default:
+ gtp_version = 1;
+ break;
+ }
+
+ col_add_str(pinfo->cinfo, COL_INFO, val_to_str_ext_const(gtp_hdr.message, &gtp_message_type_ext, "Unknown"));
+
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_gtp, tvb, 0, -1, ENC_NA);
+ gtp_tree = proto_item_add_subtree(ti, ett_gtp);
+
+ tf = proto_tree_add_uint(gtp_tree, hf_gtp_flags, tvb, 0, 1, gtp_hdr.flags);
+ flags_tree = proto_item_add_subtree(tf, ett_gtp_flags);
+
+ if(gtp_prime == 1) {
+ /* Octet 8 7 6 5 4 3 2 1
+ * 1 Version | PT| Spare '1 1 1 '| ' 0/1 '
+ */
+ proto_tree_add_uint(flags_tree, hf_gtp_prime_flags_ver, tvb, 0, 1, gtp_hdr.flags);
+ proto_tree_add_uint(flags_tree, hf_gtp_flags_pt, tvb, 0, 1, gtp_hdr.flags);
+ proto_tree_add_uint(flags_tree, hf_gtp_flags_spare1, tvb, 0, 1, gtp_hdr.flags);
+ /* Bit 1 of octet 1 is not used in GTP' (except in v0), and it is marked '0'
+ * in the GTP' header. It is in use in GTP' v0 and distinguishes the used header-length.
+ * In the case of GTP' v0, this bit being marked one (1) indicates the usage of the 6
+ * octets header. If the bit is set to '0' (usually the case) the 20-octet header is used.
+ * For all other versions of GTP', this bit is not used and is set to '0'. However,
+ * this does not suggest the use of the 20-octet header, rather a shorter 6-octet header.
+ */
+ if(gtp_version == 0) {
+ proto_tree_add_item(flags_tree, hf_gtp_flags_hdr_length, tvb, 0, 1, ENC_BIG_ENDIAN);
+ }
+ } else {
+ proto_tree_add_uint(flags_tree, hf_gtp_flags_ver, tvb, 0, 1, gtp_hdr.flags);
+ proto_tree_add_uint(flags_tree, hf_gtp_flags_pt, tvb, 0, 1, gtp_hdr.flags);
+ if(gtp_version == 0) {
+ proto_tree_add_uint(flags_tree, hf_gtp_flags_spare1, tvb, 0, 1, gtp_hdr.flags);
+ proto_tree_add_boolean(flags_tree, hf_gtp_flags_snn, tvb, 0, 1, gtp_hdr.flags);
+ } else {
+ proto_tree_add_uint(flags_tree, hf_gtp_flags_spare2, tvb, 0, 1, gtp_hdr.flags);
+ proto_tree_add_boolean(flags_tree, hf_gtp_flags_e, tvb, 0, 1, gtp_hdr.flags);
+ proto_tree_add_boolean(flags_tree, hf_gtp_flags_s, tvb, 0, 1, gtp_hdr.flags);
+ proto_tree_add_boolean(flags_tree, hf_gtp_flags_pn, tvb, 0, 1, gtp_hdr.flags);
+ }
+ }
+ proto_tree_add_uint(gtp_tree, hf_gtp_message_type, tvb, 1, 1, gtp_hdr.message);
+
+ gtp_hdr.length = g_ntohs(gtp_hdr.length);
+ proto_tree_add_uint(gtp_tree, hf_gtp_length, tvb, 2, 2, gtp_hdr.length);
+
+ offset = 4;
+
+ if (gtp_prime) {
+ seq_no = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_uint(gtp_tree, hf_gtp_seq_number, tvb, offset, 2, seq_no);
+ offset += 2;
+ /* If GTP' version is 0 and bit 1 is 0 20 bytes header is used, step past it */
+ if( (gtp_version == 0) && ((gtp_hdr.flags & 0x01) == 0) ) {
+ offset = GTPv0_HDR_LENGTH;
+ }
+ } else {
+ switch (gtp_version) {
+ case 0:
+ seq_no = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_uint(gtp_tree, hf_gtp_seq_number, tvb, offset, 2, seq_no);
+ offset += 2;
+
+ flow_label = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_uint(gtp_tree, hf_gtp_flow_label, tvb, offset, 2, flow_label);
+ offset += 2;
+
+ pdu_no = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint(gtp_tree, hf_gtp_sndcp_number, tvb, offset, 1, pdu_no);
+ offset += 4;
+
+ tid_str = id_to_str(tvb, offset);
+ proto_tree_add_string(gtp_tree, hf_gtp_tid, tvb, offset, 8, tid_str);
+ offset += 8;
+ break;
+ case 1:
+ teid = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_uint(gtp_tree, hf_gtp_teid, tvb, offset, 4, teid);
+ offset += 4;
+
+ /* Are sequence number/N-PDU Number/extension header present? */
+ if (gtp_hdr.flags & 0x07) {
+ seq_no = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_uint(gtp_tree, hf_gtp_seq_number, tvb, offset, 2, seq_no);
+ offset += 2;
+
+ pdu_no = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint(gtp_tree, hf_gtp_npdu_number, tvb, offset, 1, pdu_no);
+ offset++;
+
+ next_hdr = tvb_get_guint8(tvb, offset);
+
+ /* Don't add extension header, we'll add a subtree for that */
+ /* proto_tree_add_uint(gtp_tree, hf_gtp_next, tvb, offset, 1, next_hdr); */
+
+ offset++;
+
+ /* Change to while? */
+ if (next_hdr) {
+
+ /* TODO Add support for more than one extension header */
+
+ noOfExtHdrs++;
+
+ tf = proto_tree_add_uint(gtp_tree, hf_gtp_ext_hdr, tvb, offset, 4, next_hdr);
+ ext_tree = proto_item_add_subtree(tf, ett_gtp_ext_hdr);
+
+ /* PDCP PDU
+ * 3GPP 29.281 v9.0.0, 5.2.2.2 PDCP PDU Number
+ *
+ * "This extension header is transmitted, for example in UTRAN, at SRNS relocation time,
+ * to provide the PDCP sequence number of not yet acknowledged N-PDUs. It is 4 octets long,
+ * and therefore the Length field has value 1.
+ *
+ * When used between two eNBs at the X2 interface in E-UTRAN, bits 5-8 of octet 2 are spare.
+ * The meaning of the spare bits shall be set to zero.
+ *
+ * Wireshark Note: TS 29.060 does not define bit 5-6 as spare, so no check is possible unless a preference is used.
+ */
+ if (next_hdr == GTP_EXT_HDR_PDCP_SN) {
+
+ /* First byte is length (should be 1) */
+ ext_hdr_length = tvb_get_guint8(tvb, offset);
+ if (ext_hdr_length != 1) {
+ expert_add_info_format(pinfo, ext_tree, PI_PROTOCOL, PI_WARN, "The length field for the PDCP SN Extension header should be 1.");
+ }
+ proto_tree_add_item(ext_tree, hf_gtp_ext_hdr_length, tvb, offset,1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(ext_tree, hf_gtp_ext_hdr_pdcpsn, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ /* Last is next_hdr */
+ next_hdr = tvb_get_guint8(tvb, offset);
+ item = proto_tree_add_item(ext_tree, hf_gtp_ext_hdr_next, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ if (next_hdr) {
+ expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, "Can't decode more than one extension header.");
+ }
+ offset++;
+ }
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
+ if (gtp_hdr.message != GTP_MSG_TPDU) {
+ /* TODO: This code should be cleaned up to handle more than one
+ * header and possibly display the header content */
+ if (next_hdr) {
+ switch (next_hdr) {
+ case 1:
+ /* MBMS support indication */
+ proto_tree_add_text(gtp_tree, tvb, offset, 4, "[--- MBMS support indication header ---]");
+ offset += 3;
+ break;
+ case 2:
+ /* MS Info Change Reporting support indication */
+ proto_tree_add_text(gtp_tree, tvb, offset, 4, "[--- MS Info Change Reporting support indication header ---]");
+ offset += 3;
+ break;
+ case 0xc0:
+ /* PDCP PDU number */
+ proto_tree_add_text(gtp_tree, tvb, offset, 4, "[--- PDCP PDU number header ---]");
+ offset += 3;
+ break;
+ case 0xc1:
+ /* Suspend Request */
+ proto_tree_add_text(gtp_tree, tvb, offset, 4, "[--- Suspend Request header ---]");
+ offset += 3;
+ break;
+ case 0xc2:
+ /* Suspend Response */
+ proto_tree_add_text(gtp_tree, tvb, offset, 4, "[--- Suspend Response header ---]");
+ offset += 3;
+ break;
+ default:
+ proto_tree_add_text(gtp_tree, tvb, offset, 4, "[--- Unknown extension header ---]");
+ offset += 3;
+ break;
+ }
+ next_hdr = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint(gtp_tree, hf_gtp_next, tvb, offset, 1, next_hdr);
+ offset++;
+ }
+ /* proto_tree_add_text(gtp_tree, tvb, 0, 0, "[--- end of GTP header, beginning of extension headers ---]");*/
+ length = tvb_length(tvb);
+ mandatory = 0; /* check order of GTP fields against ETSI */
+ for (;;) {
+ if (offset >= length)
+ break;
+ if (next_hdr) {
+ ext_hdr_val = next_hdr;
+ next_hdr = 0;
+ } else
+ ext_hdr_val = tvb_get_guint8(tvb, offset);
+
+ if (g_gtp_etsi_order) {
+ checked_field = check_field_presence(gtp_hdr.message, ext_hdr_val, (int *) &mandatory);
+ switch (checked_field) {
+ case -2:
+ proto_tree_add_text(gtp_tree, tvb, 0, 0, "[WARNING] message not found");
+ break;
+ case -1:
+ proto_tree_add_text(gtp_tree, tvb, 0, 0, "[WARNING] field not present");
+ break;
+ case 0:
+ break;
+ default:
+ proto_tree_add_text(gtp_tree, tvb, offset, 1, "[WARNING] wrong next field, should be: %s",
+ val_to_str_ext_const(checked_field, &gtp_val_ext, "Unknown extension field"));
+ break;
+ }
+ }
+
+ i = -1;
+ while (gtpopt[++i].optcode)
+ if (gtpopt[i].optcode == ext_hdr_val)
+ break;
+ offset = offset + (*gtpopt[i].decode) (tvb, offset, pinfo, gtp_tree);
+ }
+
+ /*Use sequence number to track Req/Resp pairs*/
+ if (seq_no) {
+ gcrp = gtp_match_response(tvb, pinfo, gtp_tree, seq_no, gtp_hdr.message);
+ /*pass packet to tap for response time reporting*/
+ if (gcrp) {
+ tap_queue_packet(gtp_tap,pinfo,gcrp);
+ }
+ }
+ }
+ proto_item_set_len (ti, offset);
+ }
+
+ if ((gtp_hdr.message == GTP_MSG_TPDU) && g_gtp_tpdu) {
+
+ if (gtp_prime)
+ offset = 6;
+ else if (gtp_version == 1) {
+ if (gtp_hdr.flags & 0x07) {
+ offset = 11;
+ if (tvb_get_guint8(tvb, offset) == 0)
+ offset++;
+ } else
+ offset = 8;
+ } else
+ offset = 20;
+
+ if(gtp_hdr.length > offset){
+ proto_tree_add_text(tree, tvb, offset, gtp_hdr.length, "T-PDU Data %u bytes", gtp_hdr.length);
+ }
+ /* Can only handle one extension header type... */
+ if (noOfExtHdrs != 0) offset+= 1 + noOfExtHdrs*4;
+
+ sub_proto = tvb_get_guint8(tvb, offset);
+
+ if ((sub_proto >= 0x45) && (sub_proto <= 0x4e)) {
+ /* this is most likely an IPv4 packet
+ * we can exclude 0x40 - 0x44 because the minimum header size is 20 octets
+ * 0x4f is excluded because PPP protocol type "IPv6 header compression"
+ * with protocol field compression is more likely than a plain IPv4 packet with 60 octet header size */
+
+ next_tvb = tvb_new_subset_remaining(tvb, offset);
+ call_dissector(ip_handle, next_tvb, pinfo, tree);
+
+ } else if ((sub_proto & 0xf0) == 0x60) {
+ /* this is most likely an IPv6 packet */
+ next_tvb = tvb_new_subset_remaining(tvb, offset);
+ call_dissector(ipv6_handle, next_tvb, pinfo, tree);
+ } else {
+ /* this seems to be a PPP packet */
+
+ if (sub_proto == 0xff) {
+ /* this might be an address field, even it shouldn't be here */
+ control_field = tvb_get_guint8(tvb, offset + 1);
+ if (control_field == 0x03)
+ /* now we are pretty sure that address and control field are mistakenly inserted -> ignore it for PPP dissection */
+ acfield_len = 2;
+ }
+
+ next_tvb = tvb_new_subset_remaining(tvb, offset + acfield_len);
+ call_dissector(ppp_handle, next_tvb, pinfo, tree);
+ }
+
+ col_prepend_fstr(pinfo->cinfo, COL_PROTOCOL, "GTP <");
+ col_append_str(pinfo->cinfo, COL_PROTOCOL, ">");
+ }
+ #if 0
+ else {
+ if (gtp_prime)
+ offset = 6;
+ else if (gtp_version == 1) {
+ if (gtp_hdr.flags & 0x07) {
+ offset = 11;
+ if (tvb_get_guint8(tvb, offset) == 0)
+ offset++;
+ } else
+ offset = 8;
+ } else
+ offset = 20;
+ }
+#endif
+ pinfo->private_data = pd_save;
+}
+
+static void
+dissect_gtpprim(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
+{
dissect_gtp_common(tvb, pinfo, tree);
}
-static void dissect_gtp(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
+static void
+dissect_gtp(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
{
guint8 version;
/*
@@ -7163,14 +8086,14 @@ static void dissect_gtp(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
* Should this be moved to after the conversation stuff to retain that functionality for GTPv2 ???
*/
version = tvb_get_guint8(tvb,0)>>5;
- if (version==2) {
+ if (version == 2) {
/* GTPv2-C 3GPP TS 29.274 */
if (gtpv2_handle) {
call_dissector(gtpv2_handle, tvb, pinfo, tree);
return;
}
}
- if(version>2){
+ if(version > 2) {
proto_tree_add_text(tree, tvb, 0, -1, "No WS dissector for GTP version %u %s", version,
val_to_str_const(version, ver_types, "Unknown"));
return;
@@ -7180,13 +8103,8 @@ static void dissect_gtp(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
}
-
-static const true_false_string yes_no_tfs = {
- "yes",
- "no"
-};
-
-static void gtp_reinit(void)
+static void
+gtp_reinit(void)
{
gtp_conv_info_t *gtp_info;
@@ -7207,486 +8125,991 @@ static void gtp_reinit(void)
gtp_info_items = NULL;
}
-void proto_register_gtp(void)
+void
+proto_register_gtp(void)
{
+ module_t *gtp_module;
+ guint i;
+ guint last_offset;
+
static hf_register_info hf_gtp[] = {
+ {&hf_gtp_ie_id,
+ { "IE Id", "gtp.ie_id",
+ FT_UINT8, BASE_DEC|BASE_EXT_STRING, &gtp_val_ext, 0x0,
+ NULL, HFILL}
+ },
{&hf_gtp_response_in,
- {"Response In", "gtp.response_in", FT_FRAMENUM, BASE_NONE, NULL, 0x0, "The response to this GTP request is in this frame", HFILL}},
+ { "Response In", "gtp.response_in",
+ FT_FRAMENUM, BASE_NONE, NULL, 0x0,
+ "The response to this GTP request is in this frame", HFILL}
+ },
{&hf_gtp_response_to,
- {"Response To", "gtp.response_to", FT_FRAMENUM, BASE_NONE, NULL, 0x0, "This is a response to the GTP request in this frame", HFILL}},
- {&hf_gtp_time, {"Time", "gtp.time", FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0, "The time between the Request and the Response", HFILL}},
- {&hf_gtp_apn, {"APN", "gtp.apn", FT_STRING, BASE_NONE, NULL, 0, "Access Point Name", HFILL}},
- {&hf_gtp_cause, {"Cause", "gtp.cause", FT_UINT8, BASE_DEC|BASE_EXT_STRING, &cause_type_ext, 0, "Cause of operation", HFILL}},
- {&hf_gtp_chrg_char, {"Charging characteristics", "gtp.chrg_char", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL}},
- {&hf_gtp_chrg_char_s, {"Spare", "gtp.chrg_char_s", FT_UINT16, BASE_DEC, NULL, GTP_MASK_CHRG_CHAR_S, NULL, HFILL}},
- {&hf_gtp_chrg_char_n, {"Normal charging", "gtp.chrg_char_n", FT_UINT16, BASE_DEC, NULL, GTP_MASK_CHRG_CHAR_N, NULL, HFILL}},
- {&hf_gtp_chrg_char_p, {"Prepaid charging", "gtp.chrg_char_p", FT_UINT16, BASE_DEC, NULL, GTP_MASK_CHRG_CHAR_P, NULL, HFILL}},
+ { "Response To", "gtp.response_to",
+ FT_FRAMENUM, BASE_NONE, NULL, 0x0,
+ "This is a response to the GTP request in this frame", HFILL}
+ },
+ {&hf_gtp_time,
+ { "Time", "gtp.time",
+ FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
+ "The time between the Request and the Response", HFILL}
+ },
+ {&hf_gtp_apn,
+ { "APN", "gtp.apn",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Access Point Name", HFILL}
+ },
+ {&hf_gtp_cause,
+ { "Cause", "gtp.cause",
+ FT_UINT8, BASE_DEC|BASE_EXT_STRING, &cause_type_ext, 0,
+ "Cause of operation", HFILL}
+ },
+ {&hf_gtp_chrg_char,
+ { "Charging characteristics", "gtp.chrg_char",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_chrg_char_s,
+ { "Spare", "gtp.chrg_char_s",
+ FT_UINT16, BASE_DEC, NULL, GTP_MASK_CHRG_CHAR_S,
+ NULL, HFILL}
+ },
+ {&hf_gtp_chrg_char_n,
+ { "Normal charging", "gtp.chrg_char_n",
+ FT_UINT16, BASE_DEC, NULL, GTP_MASK_CHRG_CHAR_N,
+ NULL, HFILL}
+ },
+ {&hf_gtp_chrg_char_p,
+ { "Prepaid charging", "gtp.chrg_char_p",
+ FT_UINT16, BASE_DEC, NULL, GTP_MASK_CHRG_CHAR_P,
+ NULL, HFILL}
+ },
{&hf_gtp_chrg_char_f,
- {"Flat rate charging", "gtp.chrg_char_f", FT_UINT16, BASE_DEC, NULL, GTP_MASK_CHRG_CHAR_F, NULL, HFILL}},
+ { "Flat rate charging", "gtp.chrg_char_f",
+ FT_UINT16, BASE_DEC, NULL, GTP_MASK_CHRG_CHAR_F,
+ NULL, HFILL}
+ },
{&hf_gtp_chrg_char_h,
- {"Hot billing charging", "gtp.chrg_char_h", FT_UINT16, BASE_DEC, NULL, GTP_MASK_CHRG_CHAR_H, NULL, HFILL}},
- {&hf_gtp_chrg_char_r, {"Reserved", "gtp.chrg_char_r", FT_UINT16, BASE_DEC, NULL, GTP_MASK_CHRG_CHAR_R, NULL, HFILL}},
- {&hf_gtp_chrg_id, {"Charging ID", "gtp.chrg_id", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL}},
- {&hf_gtp_chrg_ipv4, {"CG address IPv4", "gtp.chrg_ipv4", FT_IPv4, BASE_NONE, NULL, 0, "Charging Gateway address IPv4", HFILL}},
- {&hf_gtp_chrg_ipv6, {"CG address IPv6", "gtp.chrg_ipv6", FT_IPv6, BASE_NONE, NULL, 0, "Charging Gateway address IPv6", HFILL}},
- {&hf_gtp_ext_flow_label, {"Flow Label Data I", "gtp.ext_flow_label", FT_UINT16, BASE_HEX, NULL, 0, "Flow label data", HFILL}},
- {&hf_gtp_ext_id, {"Extension identifier", "gtp.ext_id", FT_UINT16, BASE_DEC|BASE_EXT_STRING, &sminmpec_values_ext, 0, NULL, HFILL}},
- {&hf_gtp_ext_val, {"Extension value", "gtp.ext_val", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL}},
- {&hf_gtp_flags, {"Flags", "gtp.flags", FT_UINT8, BASE_HEX, NULL, 0, "Ver/PT/Spare...", HFILL}},
- {&hf_gtp_ext_hdr, {"Extension header", "gtp.ext_hdr", FT_UINT8, BASE_HEX, VALS(next_extension_header_fieldvals), 0, NULL, HFILL}},
- {&hf_gtp_ext_hdr_next, {"Next extension header", "gtp.ext_hdr.next", FT_UINT8, BASE_HEX, VALS(next_extension_header_fieldvals), 0, NULL, HFILL}},
- {&hf_gtp_ext_hdr_pdcpsn, {"PDCP Sequence Number", "gtp.ext_hdr.pdcp_sn", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL}},
- {&hf_gtp_ext_hdr_length, {"Extension Header Length", "gtp.ext_hdr.length", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL}},
+ { "Hot billing charging", "gtp.chrg_char_h",
+ FT_UINT16, BASE_DEC, NULL, GTP_MASK_CHRG_CHAR_H,
+ NULL, HFILL}
+ },
+ {&hf_gtp_chrg_char_r,
+ { "Reserved", "gtp.chrg_char_r",
+ FT_UINT16, BASE_DEC, NULL, GTP_MASK_CHRG_CHAR_R,
+ NULL, HFILL}
+ },
+ {&hf_gtp_chrg_id,
+ { "Charging ID", "gtp.chrg_id",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_chrg_ipv4,
+ { "CG address IPv4", "gtp.chrg_ipv4",
+ FT_IPv4, BASE_NONE, NULL, 0,
+ "Charging Gateway address IPv4", HFILL}
+ },
+ {&hf_gtp_chrg_ipv6,
+ { "CG address IPv6", "gtp.chrg_ipv6",
+ FT_IPv6, BASE_NONE, NULL, 0,
+ "Charging Gateway address IPv6", HFILL}
+ },
+ {&hf_gtp_ext_flow_label,
+ { "Flow Label Data I", "gtp.ext_flow_label",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ "Flow label data", HFILL}
+ },
+ {&hf_gtp_ext_id,
+ { "Extension identifier", "gtp.ext_id",
+ FT_UINT16, BASE_DEC|BASE_EXT_STRING, &sminmpec_values_ext, 0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_ext_val,
+ { "Extension value", "gtp.ext_val",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_flags,
+ { "Flags", "gtp.flags",
+ FT_UINT8, BASE_HEX, NULL, 0,
+ "Ver/PT/Spare...", HFILL}
+ },
+ {&hf_gtp_ext_hdr,
+ { "Extension header", "gtp.ext_hdr",
+ FT_UINT8, BASE_HEX, VALS(next_extension_header_fieldvals), 0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_ext_hdr_next,
+ { "Next extension header", "gtp.ext_hdr.next",
+ FT_UINT8, BASE_HEX, VALS(next_extension_header_fieldvals), 0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_ext_hdr_pdcpsn,
+ { "PDCP Sequence Number", "gtp.ext_hdr.pdcp_sn",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_ext_hdr_length,
+ { "Extension Header Length", "gtp.ext_hdr.length",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL}
+ },
{&hf_gtp_flags_ver,
- {"Version", "gtp.flags.version",
- FT_UINT8, BASE_DEC, VALS(ver_types), GTP_VER_MASK,
- "GTP Version", HFILL}
+ { "Version", "gtp.flags.version",
+ FT_UINT8, BASE_DEC, VALS(ver_types), GTP_VER_MASK,
+ "GTP Version", HFILL}
},
{&hf_gtp_prime_flags_ver,
- {"Version", "gtp.prim.flags.version",
- FT_UINT8, BASE_DEC,NULL, GTP_VER_MASK,
- "GTP' Version", HFILL}
+ { "Version", "gtp.prim.flags.version",
+ FT_UINT8, BASE_DEC,NULL, GTP_VER_MASK,
+ "GTP' Version", HFILL}
},
{&hf_gtp_flags_pt,
- {"Protocol type", "gtp.flags.payload",
- FT_UINT8, BASE_DEC, VALS(pt_types), GTP_PT_MASK,
- NULL, HFILL}
+ { "Protocol type", "gtp.flags.payload",
+ FT_UINT8, BASE_DEC, VALS(pt_types), GTP_PT_MASK,
+ NULL, HFILL}
},
{&hf_gtp_flags_spare1,
- {"Reserved", "gtp.flags.reserved",
- FT_UINT8, BASE_DEC, NULL, GTP_SPARE1_MASK,
- "Reserved (shall be sent as '111' )", HFILL}
+ { "Reserved", "gtp.flags.reserved",
+ FT_UINT8, BASE_DEC, NULL, GTP_SPARE1_MASK,
+ "Reserved (shall be sent as '111' )", HFILL}
},
{&hf_gtp_flags_hdr_length,
- {"Header length", "gtp.flags._hdr_length",
- FT_BOOLEAN, 8, TFS(&gtp_hdr_length_vals), 0x01,
- NULL, HFILL}
- },
- {&hf_gtp_flags_snn,
- {"Is SNDCP N-PDU included?", "gtp.flags.snn", FT_BOOLEAN, 8, TFS(&yes_no_tfs), GTP_SNN_MASK,
- "Is SNDCP N-PDU LLC Number included? (1 = yes, 0 = no)", HFILL}},
+ { "Header length", "gtp.flags._hdr_length",
+ FT_BOOLEAN, 8, TFS(&gtp_hdr_length_vals), 0x01,
+ NULL, HFILL}
+ },
+ {&hf_gtp_flags_snn,
+ { "Is SNDCP N-PDU included?", "gtp.flags.snn",
+ FT_BOOLEAN, 8, TFS(&tfs_yes_no), GTP_SNN_MASK,
+ "Is SNDCP N-PDU LLC Number included? (1 = yes, 0 = no)", HFILL}
+ },
{&hf_gtp_flags_spare2,
- {"Reserved", "gtp.flags.reserved", FT_UINT8, BASE_DEC, NULL, GTP_SPARE2_MASK, "Reserved (shall be sent as '1' )", HFILL}},
+ { "Reserved", "gtp.flags.reserved",
+ FT_UINT8, BASE_DEC, NULL, GTP_SPARE2_MASK,
+ "Reserved (shall be sent as '1' )", HFILL}
+ },
{&hf_gtp_flags_e,
- {"Is Next Extension Header present?", "gtp.flags.e", FT_BOOLEAN, 8, TFS(&yes_no_tfs), GTP_E_MASK,
- "Is Next Extension Header present? (1 = yes, 0 = no)", HFILL}},
+ { "Is Next Extension Header present?", "gtp.flags.e",
+ FT_BOOLEAN, 8, TFS(&tfs_yes_no), GTP_E_MASK,
+ "Is Next Extension Header present? (1 = yes, 0 = no)", HFILL}
+ },
{&hf_gtp_flags_s,
- {"Is Sequence Number present?", "gtp.flags.s", FT_BOOLEAN, 8, TFS(&yes_no_tfs), GTP_S_MASK, "Is Sequence Number present? (1 = yes, 0 = no)",
- HFILL}},
+ { "Is Sequence Number present?", "gtp.flags.s",
+ FT_BOOLEAN, 8, TFS(&tfs_yes_no), GTP_S_MASK,
+ "Is Sequence Number present? (1 = yes, 0 = no)", HFILL}
+ },
{&hf_gtp_flags_pn,
- {"Is N-PDU number present?", "gtp.flags.pn", FT_BOOLEAN, 8, TFS(&yes_no_tfs), GTP_PN_MASK, "Is N-PDU number present? (1 = yes, 0 = no)",
- HFILL}},
- {&hf_gtp_flow_ii, {"Flow Label Data II", "gtp.flow_ii", FT_UINT16, BASE_DEC, NULL, 0, "Downlink flow label data", HFILL}},
- {&hf_gtp_flow_label, {"Flow label", "gtp.flow_label", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL}},
- {&hf_gtp_flow_sig, {"Flow label Signalling", "gtp.flow_sig", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL}},
+ { "Is N-PDU number present?", "gtp.flags.pn",
+ FT_BOOLEAN, 8, TFS(&tfs_yes_no), GTP_PN_MASK,
+ "Is N-PDU number present? (1 = yes, 0 = no)", HFILL}
+ },
+ {&hf_gtp_flow_ii,
+ { "Flow Label Data II", "gtp.flow_ii",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "Downlink flow label data", HFILL}
+ },
+ {&hf_gtp_flow_label,
+ { "Flow label", "gtp.flow_label",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_flow_sig,
+ { "Flow label Signalling", "gtp.flow_sig",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ NULL, HFILL}
+ },
{&hf_gtp_gsn_addr_len,
- {"GSN Address Length", "gtp.gsn_addr_len", FT_UINT8, BASE_DEC, NULL, GTP_EXT_GSN_ADDR_LEN_MASK, NULL, HFILL}},
+ { "GSN Address Length", "gtp.gsn_addr_len",
+ FT_UINT8, BASE_DEC, NULL, GTP_EXT_GSN_ADDR_LEN_MASK,
+ NULL, HFILL}
+ },
{&hf_gtp_gsn_addr_type,
- {"GSN Address Type", "gtp.gsn_addr_type", FT_UINT8, BASE_DEC, VALS(gsn_addr_type), GTP_EXT_GSN_ADDR_TYPE_MASK, NULL, HFILL}},
- {&hf_gtp_gsn_ipv4, {"GSN address IPv4", "gtp.gsn_ipv4", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL}},
- {&hf_gtp_gsn_ipv6, {"GSN address IPv6", "gtp.gsn_ipv6", FT_IPv6, BASE_NONE, NULL, 0, NULL, HFILL}},
- {&hf_gtp_imsi, {"IMSI", "gtp.imsi", FT_STRING, BASE_NONE, NULL, 0, "International Mobile Subscriber Identity number", HFILL}},
- {&hf_gtp_length, {"Length", "gtp.length", FT_UINT16, BASE_DEC, NULL, 0, "Length (i.e. number of octets after TID or TEID)", HFILL}},
- {&hf_gtp_map_cause, {"MAP cause", "gtp.map_cause", FT_UINT8, BASE_DEC, VALS(gsm_old_GSMMAPLocalErrorcode_vals), 0, NULL, HFILL}},
- {&hf_gtp_message_type, {"Message Type", "gtp.message", FT_UINT8, BASE_HEX|BASE_EXT_STRING, &gtp_message_type_ext, 0x0, "GTP Message Type", HFILL}},
+ { "GSN Address Type", "gtp.gsn_addr_type",
+ FT_UINT8, BASE_DEC, VALS(gsn_addr_type), GTP_EXT_GSN_ADDR_TYPE_MASK,
+ NULL, HFILL}
+ },
+ {&hf_gtp_gsn_ipv4,
+ { "GSN address IPv4", "gtp.gsn_ipv4",
+ FT_IPv4, BASE_NONE, NULL, 0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_gsn_ipv6,
+ { "GSN address IPv6", "gtp.gsn_ipv6",
+ FT_IPv6, BASE_NONE, NULL, 0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_imsi,
+ { "IMSI", "gtp.imsi",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "International Mobile Subscriber Identity number", HFILL}
+ },
+ {&hf_gtp_length,
+ { "Length", "gtp.length",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "Length (i.e. number of octets after TID or TEID)", HFILL}
+ },
+ {&hf_gtp_map_cause,
+ { "MAP cause", "gtp.map_cause",
+ FT_UINT8, BASE_DEC, VALS(gsm_old_GSMMAPLocalErrorcode_vals), 0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_message_type,
+ { "Message Type", "gtp.message",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &gtp_message_type_ext, 0x0,
+ "GTP Message Type", HFILL}
+ },
{&hf_gtp_ms_reason,
- {"MS not reachable reason", "gtp.ms_reason", FT_UINT8, BASE_DEC, VALS(ms_not_reachable_type), 0, NULL, HFILL}},
- {&hf_gtp_ms_valid, {"MS validated", "gtp.ms_valid", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL}},
- {&hf_gtp_msisdn, {"MSISDN", "gtp.msisdn", FT_STRING, BASE_NONE, NULL, 0, "MS international PSTN/ISDN number", HFILL}},
+ { "MS not reachable reason", "gtp.ms_reason",
+ FT_UINT8, BASE_DEC, VALS(ms_not_reachable_type), 0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_ms_valid,
+ { "MS validated", "gtp.ms_valid",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}
+ },
{&hf_gtp_next,
- {"Next extension header type", "gtp.next", FT_UINT8, BASE_HEX, VALS(next_extension_header_fieldvals), 0, NULL,
- HFILL}},
- {&hf_gtp_node_ipv4, {"Node address IPv4", "gtp.node_ipv4", FT_IPv4, BASE_NONE, NULL, 0, "Recommended node address IPv4", HFILL}},
- {&hf_gtp_node_ipv6, {"Node address IPv6", "gtp.node_ipv6", FT_IPv6, BASE_NONE, NULL, 0, "Recommended node address IPv6", HFILL}},
- {&hf_gtp_npdu_number, {"N-PDU Number", "gtp.npdu_number", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL}},
- {&hf_gtp_nsapi, {"NSAPI", "gtp.nsapi", FT_UINT8, BASE_DEC, NULL, 0, "Network layer Service Access Point Identifier", HFILL}},
- {&hf_gtp_qos_version, {"Version", "gtp.qos_version", FT_STRING, BASE_NONE, NULL, 0, "Version of the QoS Profile", HFILL}},
- {&hf_gtp_qos_spare1, {"Spare", "gtp.qos_spare1", FT_UINT8, BASE_DEC, NULL, GTP_EXT_QOS_SPARE1_MASK, "Spare (shall be sent as '00' )", HFILL}},
+ { "Next extension header type", "gtp.next",
+ FT_UINT8, BASE_HEX, VALS(next_extension_header_fieldvals), 0,
+ NULL,
+ HFILL}
+ },
+ {&hf_gtp_node_ipv4,
+ { "Node address IPv4", "gtp.node_ipv4",
+ FT_IPv4, BASE_NONE, NULL, 0,
+ "Recommended node address IPv4", HFILL}
+ },
+ {&hf_gtp_node_ipv6,
+ { "Node address IPv6", "gtp.node_ipv6",
+ FT_IPv6, BASE_NONE, NULL, 0,
+ "Recommended node address IPv6", HFILL}
+ },
+ {&hf_gtp_npdu_number,
+ { "N-PDU Number", "gtp.npdu_number",
+ FT_UINT8, BASE_HEX, NULL, 0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_nsapi,
+ { "NSAPI", "gtp.nsapi",
+ FT_UINT8, BASE_DEC, NULL, 0x0f,
+ "Network layer Service Access Point Identifier", HFILL}
+ },
+ {&hf_gtp_qos_version,
+ { "Version", "gtp.qos_version",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ "Version of the QoS Profile", HFILL}
+ },
+ {&hf_gtp_qos_spare1,
+ { "Spare", "gtp.qos_spare1",
+ FT_UINT8, BASE_DEC, NULL, GTP_EXT_QOS_SPARE1_MASK,
+ "Spare (shall be sent as '00' )", HFILL}
+ },
{&hf_gtp_qos_delay,
- {"QoS delay", "gtp.qos_delay", FT_UINT8, BASE_DEC, VALS(qos_delay_type), GTP_EXT_QOS_DELAY_MASK, "Quality of Service Delay Class", HFILL}},
+ { "QoS delay", "gtp.qos_delay",
+ FT_UINT8, BASE_DEC, VALS(qos_delay_type), GTP_EXT_QOS_DELAY_MASK,
+ "Quality of Service Delay Class", HFILL}
+ },
{&hf_gtp_qos_reliability,
- {"QoS reliability", "gtp.qos_reliability", FT_UINT8, BASE_DEC, VALS(qos_reliability_type), GTP_EXT_QOS_RELIABILITY_MASK,
- "Quality of Service Reliability Class", HFILL}},
+ { "QoS reliability", "gtp.qos_reliability",
+ FT_UINT8, BASE_DEC, VALS(qos_reliability_type), GTP_EXT_QOS_RELIABILITY_MASK,
+ "Quality of Service Reliability Class", HFILL}
+ },
{&hf_gtp_qos_peak,
- {"QoS peak", "gtp.qos_peak", FT_UINT8, BASE_DEC, VALS(qos_peak_type), GTP_EXT_QOS_PEAK_MASK, "Quality of Service Peak Throughput", HFILL}},
- {&hf_gtp_qos_spare2, {"Spare", "gtp.qos_spare2", FT_UINT8, BASE_DEC, NULL, GTP_EXT_QOS_SPARE2_MASK, "Spare (shall be sent as 0)", HFILL}},
+ { "QoS peak", "gtp.qos_peak",
+ FT_UINT8, BASE_DEC, VALS(qos_peak_type), GTP_EXT_QOS_PEAK_MASK,
+ "Quality of Service Peak Throughput", HFILL}
+ },
+ {&hf_gtp_qos_spare2,
+ { "Spare", "gtp.qos_spare2",
+ FT_UINT8, BASE_DEC, NULL, GTP_EXT_QOS_SPARE2_MASK,
+ "Spare (shall be sent as 0)", HFILL}
+ },
{&hf_gtp_qos_precedence,
- {"QoS precedence", "gtp.qos_precedence", FT_UINT8, BASE_DEC, VALS(qos_precedence_type), GTP_EXT_QOS_PRECEDENCE_MASK,
- "Quality of Service Precedence Class", HFILL}},
+ { "QoS precedence", "gtp.qos_precedence",
+ FT_UINT8, BASE_DEC, VALS(qos_precedence_type), GTP_EXT_QOS_PRECEDENCE_MASK,
+ "Quality of Service Precedence Class", HFILL}
+ },
{&hf_gtp_qos_spare3,
- {"Spare", "gtp.qos_spare3", FT_UINT8, BASE_DEC, NULL, GTP_EXT_QOS_SPARE3_MASK, "Spare (shall be sent as '000' )", HFILL}},
+ { "Spare", "gtp.qos_spare3",
+ FT_UINT8, BASE_DEC, NULL, GTP_EXT_QOS_SPARE3_MASK,
+ "Spare (shall be sent as '000' )", HFILL}
+ },
{&hf_gtp_qos_mean,
- {"QoS mean", "gtp.qos_mean", FT_UINT8, BASE_DEC|BASE_EXT_STRING, &qos_mean_type_ext, GTP_EXT_QOS_MEAN_MASK, "Quality of Service Mean Throughput", HFILL}},
+ { "QoS mean", "gtp.qos_mean",
+ FT_UINT8, BASE_DEC|BASE_EXT_STRING, &qos_mean_type_ext, GTP_EXT_QOS_MEAN_MASK,
+ "Quality of Service Mean Throughput", HFILL}
+ },
{&hf_gtp_qos_al_ret_priority,
- {"Allocation/Retention priority", "gtp.qos_al_ret_priority", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL}},
+ { "Allocation/Retention priority", "gtp.qos_al_ret_priority",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL}
+ },
{&hf_gtp_qos_traf_class,
- {"Traffic class", "gtp.qos_traf_class", FT_UINT8, BASE_DEC, VALS(qos_traf_class), GTP_EXT_QOS_TRAF_CLASS_MASK, NULL, HFILL}},
+ { "Traffic class", "gtp.qos_traf_class",
+ FT_UINT8, BASE_DEC, VALS(qos_traf_class), GTP_EXT_QOS_TRAF_CLASS_MASK,
+ NULL, HFILL}
+ },
{&hf_gtp_qos_del_order,
- {"Delivery order", "gtp.qos_del_order", FT_UINT8, BASE_DEC, VALS(qos_del_order), GTP_EXT_QOS_DEL_ORDER_MASK, NULL, HFILL}},
+ { "Delivery order", "gtp.qos_del_order",
+ FT_UINT8, BASE_DEC, VALS(qos_del_order), GTP_EXT_QOS_DEL_ORDER_MASK,
+ NULL, HFILL}
+ },
{&hf_gtp_qos_del_err_sdu,
- {"Delivery of erroneous SDU", "gtp.qos_del_err_sdu", FT_UINT8, BASE_DEC, VALS(qos_del_err_sdu), GTP_EXT_QOS_DEL_ERR_SDU_MASK,
- NULL, HFILL}},
+ { "Delivery of erroneous SDU", "gtp.qos_del_err_sdu",
+ FT_UINT8, BASE_DEC, VALS(qos_del_err_sdu), GTP_EXT_QOS_DEL_ERR_SDU_MASK,
+ NULL, HFILL}
+ },
{&hf_gtp_qos_max_sdu_size,
- {"Maximum SDU size", "gtp.qos_max_sdu_size", FT_UINT8, BASE_DEC, VALS(qos_max_sdu_size), 0, NULL, HFILL}},
+ { "Maximum SDU size", "gtp.qos_max_sdu_size",
+ FT_UINT8, BASE_DEC, VALS(qos_max_sdu_size), 0,
+ NULL, HFILL}
+ },
{&hf_gtp_qos_max_ul,
- {"Maximum bit rate for uplink", "gtp.qos_max_ul", FT_UINT8, BASE_DEC, VALS(qos_max_ul), 0, NULL, HFILL}},
+ { "Maximum bit rate for uplink", "gtp.qos_max_ul",
+ FT_UINT8, BASE_DEC, VALS(qos_max_ul), 0,
+ NULL, HFILL}
+ },
{&hf_gtp_qos_max_dl,
- {"Maximum bit rate for downlink", "gtp.qos_max_dl", FT_UINT8, BASE_DEC, VALS(qos_max_dl), 0, NULL, HFILL}},
+ { "Maximum bit rate for downlink", "gtp.qos_max_dl",
+ FT_UINT8, BASE_DEC, VALS(qos_max_dl), 0,
+ NULL, HFILL}
+ },
{&hf_gtp_qos_res_ber,
- {"Residual BER", "gtp.qos_res_ber", FT_UINT8, BASE_DEC, VALS(qos_res_ber), GTP_EXT_QOS_RES_BER_MASK, "Residual Bit Error Rate", HFILL}},
+ { "Residual BER", "gtp.qos_res_ber",
+ FT_UINT8, BASE_DEC, VALS(qos_res_ber), GTP_EXT_QOS_RES_BER_MASK,
+ "Residual Bit Error Rate", HFILL}
+ },
{&hf_gtp_qos_sdu_err_ratio,
- {"SDU Error ratio", "gtp.qos_sdu_err_ratio", FT_UINT8, BASE_DEC, VALS(qos_sdu_err_ratio), GTP_EXT_QOS_SDU_ERR_RATIO_MASK, NULL,
- HFILL}},
+ { "SDU Error ratio", "gtp.qos_sdu_err_ratio",
+ FT_UINT8, BASE_DEC, VALS(qos_sdu_err_ratio), GTP_EXT_QOS_SDU_ERR_RATIO_MASK,
+ NULL,
+ HFILL}
+ },
{&hf_gtp_qos_trans_delay,
- {"Transfer delay", "gtp.qos_trans_delay", FT_UINT8, BASE_DEC|BASE_EXT_STRING, &qos_trans_delay_ext, GTP_EXT_QOS_TRANS_DELAY_MASK, NULL, HFILL}},
+ { "Transfer delay", "gtp.qos_trans_delay",
+ FT_UINT8, BASE_DEC|BASE_EXT_STRING, &qos_trans_delay_ext, GTP_EXT_QOS_TRANS_DELAY_MASK,
+ NULL, HFILL}
+ },
{&hf_gtp_qos_traf_handl_prio,
- {"Traffic handling priority", "gtp.qos_traf_handl_prio", FT_UINT8, BASE_DEC, VALS(qos_traf_handl_prio), GTP_EXT_QOS_TRAF_HANDL_PRIORITY_MASK,
- NULL, HFILL}},
+ { "Traffic handling priority", "gtp.qos_traf_handl_prio",
+ FT_UINT8, BASE_DEC, VALS(qos_traf_handl_prio), GTP_EXT_QOS_TRAF_HANDL_PRIORITY_MASK,
+ NULL, HFILL}
+ },
{&hf_gtp_qos_guar_ul,
- {"Guaranteed bit rate for uplink", "gtp.qos_guar_ul", FT_UINT8, BASE_DEC, VALS(qos_guar_ul), 0, NULL, HFILL}},
+ { "Guaranteed bit rate for uplink", "gtp.qos_guar_ul",
+ FT_UINT8, BASE_DEC, VALS(qos_guar_ul), 0,
+ NULL, HFILL}
+ },
{&hf_gtp_qos_guar_dl,
- {"Guaranteed bit rate for downlink", "gtp.qos_guar_dl", FT_UINT8, BASE_DEC, VALS(qos_guar_dl), 0, NULL,
- HFILL}},
+ { "Guaranteed bit rate for downlink", "gtp.qos_guar_dl",
+ FT_UINT8, BASE_DEC, VALS(qos_guar_dl), 0,
+ NULL, HFILL}
+ },
{&hf_gtp_qos_src_stat_desc,
- {"Source Statistics Descriptor", "gtp.src_stat_desc", FT_UINT8, BASE_DEC, VALS(src_stat_desc_vals), GTP_EXT_QOS_SRC_STAT_DESC_MASK, NULL, HFILL}},
+ { "Source Statistics Descriptor", "gtp.src_stat_desc",
+ FT_UINT8, BASE_DEC, VALS(src_stat_desc_vals), GTP_EXT_QOS_SRC_STAT_DESC_MASK,
+ NULL, HFILL}
+ },
{&hf_gtp_qos_sig_ind,
- {"Signalling Indication", "gtp.sig_ind", FT_BOOLEAN, 8, TFS(&gtp_sig_ind), GTP_EXT_QOS_SIG_IND_MASK, NULL, HFILL}},
- {&hf_gtp_pkt_flow_id, {"Packet Flow ID", "gtp.pkt_flow_id", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL}},
- {&hf_gtp_ptmsi, {"P-TMSI", "gtp.ptmsi", FT_UINT32, BASE_HEX, NULL, 0, "Packet-Temporary Mobile Subscriber Identity", HFILL}},
- {&hf_gtp_ptmsi_sig, {"P-TMSI Signature", "gtp.ptmsi_sig", FT_UINT24, BASE_HEX, NULL, 0, NULL, HFILL}},
- {&hf_gtp_rab_gtpu_dn, {"Downlink GTP-U seq number", "gtp.rab_gtp_dn", FT_UINT16, BASE_DEC, NULL, 0, "Downlink GTP-U sequence number", HFILL}},
- {&hf_gtp_rab_gtpu_up, {"Uplink GTP-U seq number", "gtp.rab_gtp_up", FT_UINT16, BASE_DEC, NULL, 0, "Uplink GTP-U sequence number", HFILL}},
+ { "Signalling Indication", "gtp.sig_ind",
+ FT_BOOLEAN, 8, TFS(&gtp_sig_ind), GTP_EXT_QOS_SIG_IND_MASK,
+ NULL, HFILL}
+ },
+ { &hf_gtp_qos_arp_pci,
+ {"Pre-emption Capability (PCI)", "gtp.qos_arp_pci",
+ FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x40,
+ NULL, HFILL}
+ },
+ { &hf_gtp_qos_arp_pl,
+ {"Priority Level", "gtp.qos_arp_pl",
+ FT_UINT8, BASE_DEC, NULL, 0x3c,
+ NULL, HFILL}
+ },
+ { &hf_gtp_qos_arp_pvi,
+ {"Pre-emption Vulnerability (PVI)", "gtp.qos_arp_pvi",
+ FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
+ NULL, HFILL}
+ },
+ {&hf_gtp_qos_qci,
+ {"QCI", "gtp.qos_qci",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_qos_ul_mbr,
+ {"Uplink Maximum Bit Rate", "gtp.qos_ul_mbr",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_qos_dl_mbr,
+ {"Downlink Maximum Bit Rate", "gtp.qos_dl_mbr",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_qos_ul_gbr,
+ {"Uplink Guaranteed Bit Rate", "gtp.qos_ul_gbr",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_qos_dl_gbr,
+ {"Downlink Guaranteed Bit Rate", "gtp.qos_dl_gbr",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_qos_ul_apn_ambr,
+ {"Uplink APN Aggregate Maximum Bit Rate", "gtp.qos_ul_apn_ambr",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_qos_dl_apn_ambr,
+ {"Downlink APN Aggregate Maximum Bit Rate", "gtp.qos_dl_apn_ambr",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_pkt_flow_id,
+ { "Packet Flow ID", "gtp.pkt_flow_id",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_ptmsi,
+ { "P-TMSI", "gtp.ptmsi",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ "Packet-Temporary Mobile Subscriber Identity", HFILL}
+ },
+ {&hf_gtp_ptmsi_sig,
+ { "P-TMSI Signature", "gtp.ptmsi_sig",
+ FT_UINT24, BASE_HEX, NULL, 0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_rab_gtpu_dn,
+ { "Downlink GTP-U seq number", "gtp.rab_gtp_dn",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "Downlink GTP-U sequence number", HFILL}
+ },
+ {&hf_gtp_rab_gtpu_up,
+ { "Uplink GTP-U seq number", "gtp.rab_gtp_up",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "Uplink GTP-U sequence number", HFILL}
+ },
{&hf_gtp_rab_pdu_dn,
- {"Downlink next PDCP-PDU seq number", "gtp.rab_pdu_dn", FT_UINT16, BASE_DEC, NULL, 0, "Downlink next PDCP-PDU sequence number", HFILL}},
+ { "Downlink next PDCP-PDU seq number", "gtp.rab_pdu_dn",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "Downlink next PDCP-PDU sequence number", HFILL}
+ },
{&hf_gtp_rab_pdu_up,
- {"Uplink next PDCP-PDU seq number", "gtp.rab_pdu_up", FT_UINT16, BASE_DEC, NULL, 0, "Uplink next PDCP-PDU sequence number", HFILL}},
- {&hf_gtp_rai_rac, {"RAC", "gtp.rac", FT_UINT8, BASE_DEC, NULL, 0, "Routing Area Code", HFILL}},
- {&hf_gtp_rai_lac, {"LAC", "gtp.lac", FT_UINT16, BASE_DEC, NULL, 0, "Location Area Code", HFILL}},
- {&hf_gtp_ranap_cause, {"RANAP cause", "gtp.ranap_cause", FT_UINT8, BASE_DEC|BASE_EXT_STRING, &ranap_cause_type_ext, 0, NULL, HFILL}},
- {&hf_gtp_recovery, {"Recovery", "gtp.recovery", FT_UINT8, BASE_DEC, NULL, 0, "Restart counter", HFILL}},
- {&hf_gtp_reorder, {"Reordering required", "gtp.reorder", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL}},
- {&hf_gtp_rnc_ipv4, {"RNC address IPv4", "gtp.rnc_ipv4", FT_IPv4, BASE_NONE, NULL, 0, "Radio Network Controller address IPv4", HFILL}},
- {&hf_gtp_rnc_ipv6, {"RNC address IPv6", "gtp.rnc_ipv6", FT_IPv6, BASE_NONE, NULL, 0, "Radio Network Controller address IPv6", HFILL}},
- {&hf_gtp_rp, {"Radio Priority", "gtp.rp", FT_UINT8, BASE_DEC, NULL, GTPv1_EXT_RP_MASK, "Radio Priority for uplink tx", HFILL}},
+ { "Uplink next PDCP-PDU seq number", "gtp.rab_pdu_up",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "Uplink next PDCP-PDU sequence number", HFILL}
+ },
+ {&hf_gtp_rai_rac,
+ { "RAC", "gtp.rac",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ "Routing Area Code", HFILL}
+ },
+ {&hf_gtp_rai_lac,
+ { "LAC", "gtp.lac",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "Location Area Code", HFILL}
+ },
+ {&hf_gtp_ranap_cause,
+ { "RANAP cause", "gtp.ranap_cause",
+ FT_UINT8, BASE_DEC|BASE_EXT_STRING, &ranap_cause_type_ext, 0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_recovery,
+ { "Recovery", "gtp.recovery",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ "Restart counter", HFILL}
+ },
+ {&hf_gtp_reorder,
+ { "Reordering required", "gtp.reorder",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_rnc_ipv4,
+ { "RNC address IPv4", "gtp.rnc_ipv4",
+ FT_IPv4, BASE_NONE, NULL, 0,
+ "Radio Network Controller address IPv4", HFILL}
+ },
+ {&hf_gtp_rnc_ipv6,
+ { "RNC address IPv6", "gtp.rnc_ipv6",
+ FT_IPv6, BASE_NONE, NULL, 0,
+ "Radio Network Controller address IPv6", HFILL}
+ },
+ {&hf_gtp_rp,
+ { "Radio Priority", "gtp.rp",
+ FT_UINT8, BASE_DEC, NULL, GTPv1_EXT_RP_MASK,
+ "Radio Priority for uplink tx", HFILL}
+ },
{&hf_gtp_rp_nsapi,
- {"NSAPI in Radio Priority", "gtp.rp_nsapi", FT_UINT8, BASE_DEC, NULL, GTPv1_EXT_RP_NSAPI_MASK,
- "Network layer Service Access Point Identifier in Radio Priority", HFILL}},
- {&hf_gtp_rp_sms, {"Radio Priority SMS", "gtp.rp_sms", FT_UINT8, BASE_DEC, NULL, 0, "Radio Priority for MO SMS", HFILL}},
- {&hf_gtp_rp_spare, {"Reserved", "gtp.rp_spare", FT_UINT8, BASE_DEC, NULL, GTPv1_EXT_RP_SPARE_MASK, "Spare bit", HFILL}},
+ { "NSAPI in Radio Priority", "gtp.rp_nsapi",
+ FT_UINT8, BASE_DEC, NULL, GTPv1_EXT_RP_NSAPI_MASK,
+ "Network layer Service Access Point Identifier in Radio Priority", HFILL}
+ },
+ {&hf_gtp_rp_sms,
+ { "Radio Priority SMS", "gtp.rp_sms",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ "Radio Priority for MO SMS", HFILL}
+ },
+ {&hf_gtp_rp_spare,
+ { "Reserved", "gtp.rp_spare",
+ FT_UINT8, BASE_DEC, NULL, GTPv1_EXT_RP_SPARE_MASK,
+ "Spare bit", HFILL}
+ },
{&hf_gtp_sel_mode,
- {"Selection mode", "gtp.sel_mode",
- FT_UINT8, BASE_DEC, VALS(sel_mode_type), 0x03,
- NULL, HFILL}
+ { "Selection mode", "gtp.sel_mode",
+ FT_UINT8, BASE_DEC, VALS(sel_mode_type), 0x03,
+ NULL, HFILL}
+ },
+ {&hf_gtp_seq_number,
+ { "Sequence number", "gtp.seq_number",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_sndcp_number,
+ { "SNDCP N-PDU LLC Number", "gtp.sndcp_number",
+ FT_UINT8, BASE_HEX, NULL, 0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_tear_ind,
+ { "Teardown Indicator", "gtp.tear_ind",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_teid,
+ { "TEID", "gtp.teid",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ "Tunnel Endpoint Identifier", HFILL}
+ },
+ {&hf_gtp_teid_cp,
+ { "TEID Control Plane", "gtp.teid_cp",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ "Tunnel Endpoint Identifier Control Plane", HFILL}
},
- {&hf_gtp_seq_number, {"Sequence number", "gtp.seq_number", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL}},
- {&hf_gtp_sndcp_number, {"SNDCP N-PDU LLC Number", "gtp.sndcp_number", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL}},
- {&hf_gtp_tear_ind, {"Teardown Indicator", "gtp.tear_ind", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL}},
- {&hf_gtp_teid, {"TEID", "gtp.teid", FT_UINT32, BASE_HEX, NULL, 0, "Tunnel Endpoint Identifier", HFILL}},
- {&hf_gtp_teid_cp, {"TEID Control Plane", "gtp.teid_cp", FT_UINT32, BASE_HEX, NULL, 0, "Tunnel Endpoint Identifier Control Plane", HFILL}},
{&hf_gtp_ulink_teid_cp,
- {"Uplink TEID Control Plane", "gtp.ulink_teid_cp", FT_UINT32, BASE_HEX, NULL, 0, "Uplink Tunnel Endpoint Identifier Control Plane", HFILL}},
- {&hf_gtp_teid_data, {"TEID Data I", "gtp.teid_data", FT_UINT32, BASE_HEX, NULL, 0, "Tunnel Endpoint Identifier Data I", HFILL}},
+ { "Uplink TEID Control Plane", "gtp.ulink_teid_cp",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ "Uplink Tunnel Endpoint Identifier Control Plane", HFILL}
+ },
+ {&hf_gtp_teid_data,
+ { "TEID Data I", "gtp.teid_data",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ "Tunnel Endpoint Identifier Data I", HFILL}
+ },
{&hf_gtp_ulink_teid_data,
- {"Uplink TEID Data I", "gtp.ulink_teid_data", FT_UINT32, BASE_HEX, NULL, 0, "UplinkTunnel Endpoint Identifier Data I", HFILL}},
- {&hf_gtp_teid_ii, {"TEID Data II", "gtp.teid_ii", FT_UINT32, BASE_HEX, NULL, 0, "Tunnel Endpoint Identifier Data II", HFILL}},
+ { "Uplink TEID Data I", "gtp.ulink_teid_data",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ "UplinkTunnel Endpoint Identifier Data I", HFILL}
+ },
+ {&hf_gtp_teid_ii,
+ { "TEID Data II", "gtp.teid_ii",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ "Tunnel Endpoint Identifier Data II", HFILL}
+ },
{&hf_gtp_tft_code,
- {"TFT operation code", "gtp.tft_code", FT_UINT8, BASE_DEC, VALS(tft_code_type), GTPv1_TFT_CODE_MASK, NULL, HFILL}},
- {&hf_gtp_tft_spare, {"TFT spare bit", "gtp.tft_spare", FT_UINT8, BASE_DEC, NULL, GTPv1_TFT_SPARE_MASK, NULL, HFILL}},
+ { "TFT operation code", "gtp.tft_code",
+ FT_UINT8, BASE_DEC, VALS(tft_code_type), GTPv1_TFT_CODE_MASK,
+ NULL, HFILL}
+ },
+ {&hf_gtp_tft_spare,
+ { "TFT spare bit", "gtp.tft_spare",
+ FT_UINT8, BASE_DEC, NULL, GTPv1_TFT_SPARE_MASK,
+ NULL, HFILL}
+ },
{&hf_gtp_tft_number,
- {"Number of packet filters", "gtp.tft_number", FT_UINT8, BASE_DEC, NULL, GTPv1_TFT_NUMBER_MASK, NULL, HFILL}},
- {&hf_gtp_tft_eval, {"Evaluation precedence", "gtp.tft_eval", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL}},
- {&hf_gtp_tid, {"TID", "gtp.tid", FT_STRING, BASE_NONE, NULL, 0, "Tunnel Identifier", HFILL}},
- {&hf_gtp_tlli, {"TLLI", "gtp.tlli", FT_UINT32, BASE_HEX, NULL, 0, "Temporary Logical Link Identity", HFILL}},
- {&hf_gtp_tr_comm, {"Packet transfer command", "gtp.tr_comm", FT_UINT8, BASE_DEC, VALS(tr_comm_type), 0, "Packat transfer command", HFILL}},
- {&hf_gtp_trace_ref, {"Trace reference", "gtp.trace_ref", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL}},
- {&hf_gtp_trace_type, {"Trace type", "gtp.trace_type", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL}},
- {&hf_gtp_unknown, {"Unknown data (length)", "gtp.unknown", FT_UINT16, BASE_DEC, NULL, 0, "Unknown data", HFILL}},
+ { "Number of packet filters", "gtp.tft_number",
+ FT_UINT8, BASE_DEC, NULL, GTPv1_TFT_NUMBER_MASK,
+ NULL, HFILL}
+ },
+ {&hf_gtp_tft_eval,
+ { "Evaluation precedence", "gtp.tft_eval",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_tid,
+ { "TID", "gtp.tid",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Tunnel Identifier", HFILL}
+ },
+ {&hf_gtp_tlli,
+ { "TLLI", "gtp.tlli",
+ FT_UINT32, BASE_HEX, NULL, 0,
+ "Temporary Logical Link Identity", HFILL}
+ },
+ {&hf_gtp_tr_comm,
+ { "Packet transfer command", "gtp.tr_comm",
+ FT_UINT8, BASE_DEC, VALS(tr_comm_type), 0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_trace_ref,
+ { "Trace reference", "gtp.trace_ref",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_trace_type,
+ { "Trace type", "gtp.trace_type",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ NULL, HFILL}
+ },
{&hf_gtp_user_addr_pdp_org,
- {"PDP type organization", "gtp.user_addr_pdp_org", FT_UINT8, BASE_DEC, VALS(pdp_org_type), 0, NULL, HFILL}},
- {&hf_gtp_user_addr_pdp_type, {"PDP type number", "gtp.user_addr_pdp_type", FT_UINT8, BASE_HEX, VALS(pdp_type), 0, "PDP type", HFILL}},
- {&hf_gtp_user_ipv4, {"End user address IPv4", "gtp.user_ipv4", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL}},
- {&hf_gtp_user_ipv6, {"End user address IPv6", "gtp.user_ipv6", FT_IPv6, BASE_NONE, NULL, 0, NULL, HFILL}},
+ { "PDP type organization", "gtp.user_addr_pdp_org",
+ FT_UINT8, BASE_DEC, VALS(pdp_org_type), 0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_user_addr_pdp_type,
+ { "PDP type number", "gtp.user_addr_pdp_type",
+ FT_UINT8, BASE_HEX, VALS(pdp_type), 0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_user_ipv4,
+ { "End user address IPv4", "gtp.user_ipv4",
+ FT_IPv4, BASE_NONE, NULL, 0,
+ NULL, HFILL}
+ },
+ {&hf_gtp_user_ipv6,
+ { "End user address IPv6", "gtp.user_ipv6",
+ FT_IPv6, BASE_NONE, NULL, 0,
+ NULL, HFILL}
+ },
{&hf_gtp_security_mode,
- {"Security Mode", "gtp.security_mode",
- FT_UINT8, BASE_DEC, VALS(mm_sec_modep), 0xc0,
- NULL, HFILL}
+ { "Security Mode", "gtp.security_mode",
+ FT_UINT8, BASE_DEC, VALS(mm_sec_modep), 0xc0,
+ NULL, HFILL}
},
{&hf_gtp_no_of_vectors,
- {"No of Vectors", "gtp.no_of_vectors",
- FT_UINT8, BASE_DEC, NULL, 0x38,
- NULL, HFILL}
+ { "No of Vectors", "gtp.no_of_vectors",
+ FT_UINT8, BASE_DEC, NULL, 0x38,
+ NULL, HFILL}
},
{&hf_gtp_cipher_algorithm,
- {"Cipher Algorithm", "gtp.cipher_algorithm",
- FT_UINT8, BASE_DEC, VALS(gtp_cipher_algorithm), 0x07,
- NULL, HFILL}
+ { "Cipher Algorithm", "gtp.cipher_algorithm",
+ FT_UINT8, BASE_DEC, VALS(gtp_cipher_algorithm), 0x07,
+ NULL, HFILL}
},
{&hf_gtp_cksn_ksi,
- {"Ciphering Key Sequence Number (CKSN)/Key Set Identifier (KSI)", "gtp.cksn_ksi",
- FT_UINT8, BASE_DEC, NULL, 0x07,
- "CKSN/KSI", HFILL}
+ { "Ciphering Key Sequence Number (CKSN)/Key Set Identifier (KSI)", "gtp.cksn_ksi",
+ FT_UINT8, BASE_DEC, NULL, 0x07,
+ "CKSN/KSI", HFILL}
},
{&hf_gtp_cksn,
- {"Ciphering Key Sequence Number (CKSN)", "gtp.cksn",
- FT_UINT8, BASE_DEC, NULL, 0x07,
- "CKSN", HFILL}
+ { "Ciphering Key Sequence Number (CKSN)", "gtp.cksn",
+ FT_UINT8, BASE_DEC, NULL, 0x07,
+ "CKSN", HFILL}
},
{&hf_gtp_ksi,
- {"Key Set Identifier (KSI)", "gtp.ksi",
- FT_UINT8, BASE_DEC, NULL, 0x07,
- "KSI", HFILL}
+ { "Key Set Identifier (KSI)", "gtp.ksi",
+ FT_UINT8, BASE_DEC, NULL, 0x07,
+ "KSI", HFILL}
},
{&hf_gtp_ext_length,
- {"Length", "gtp.ext_length",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "IE Length", HFILL}
+ { "Length", "gtp.ext_length",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "IE Length", HFILL}
},
{&hf_gtp_ext_apn_res,
- {"Restriction Type", "gtp.ext_apn_res",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
+ { "Restriction Type", "gtp.ext_apn_res",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
},
{&hf_gtp_ext_rat_type,
- {"RAT Type", "gtp.ext_rat_type",
- FT_UINT8, BASE_DEC, VALS(gtp_ext_rat_type_vals), 0x0,
- NULL, HFILL}
+ { "RAT Type", "gtp.ext_rat_type",
+ FT_UINT8, BASE_DEC, VALS(gtp_ext_rat_type_vals), 0x0,
+ NULL, HFILL}
},
{&hf_gtp_ext_geo_loc_type,
- {"Geographic Location Type", "gtp.ext_geo_loc_type",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
+ { "Geographic Location Type", "gtp.ext_geo_loc_type",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
},
{&hf_gtp_ext_sac,
- {"SAC", "gtp.ext_sac",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- NULL, HFILL}
+ { "SAC", "gtp.ext_sac",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}
},
{&hf_gtp_ext_imeisv,
- {"IMEI(SV)", "gtp.ext_imeisv",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL}
+ { "IMEI(SV)", "gtp.ext_imeisv",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}
},
{ &hf_gtp_targetRNC_ID,
{ "targetRNC-ID", "gtp.targetRNC_ID",
FT_NONE, BASE_NONE, NULL, 0,
- NULL, HFILL }},
+ NULL, HFILL }
+ },
{&hf_gtp_bssgp_cause,
- {"BSSGP Cause", "gtp.bssgp_cause",
- FT_UINT8, BASE_DEC|BASE_EXT_STRING, &bssgp_cause_vals_ext, 0,
- NULL, HFILL}},
+ { "BSSGP Cause", "gtp.bssgp_cause",
+ FT_UINT8, BASE_DEC|BASE_EXT_STRING, &bssgp_cause_vals_ext, 0,
+ NULL, HFILL}
+ },
{ &hf_gtp_bssgp_ra_discriminator,
{ "Routing Address Discriminator", "gtp.bssgp.rad",
FT_UINT8, BASE_DEC, VALS(gtp_bssgp_ra_discriminator_vals), 0x0f,
NULL, HFILL }
},
{&hf_gtp_sapi,
- {"PS Handover XID SAPI", "gtp.ps_handover_xid_sapi",
- FT_UINT8, BASE_DEC, NULL, 0x0F,
- "SAPI", HFILL}},
+ { "PS Handover XID SAPI", "gtp.ps_handover_xid_sapi",
+ FT_UINT8, BASE_DEC, NULL, 0x0F,
+ "SAPI", HFILL}
+ },
{&hf_gtp_xid_par_len,
- {"PS Handover XID parameter length", "gtp.ps_handover_xid_par_len",
- FT_UINT8, BASE_DEC, NULL, 0xFF,
- "XID parameter length", HFILL}},
+ { "PS Handover XID parameter length", "gtp.ps_handover_xid_par_len",
+ FT_UINT8, BASE_DEC, NULL, 0xFF,
+ "XID parameter length", HFILL}
+ },
{&hf_gtp_earp_pvi,
- {"PVI Pre-emption Vulnerability", "gtp.EARP_pre_emption_par_vulnerability",
- FT_UINT8, BASE_DEC, NULL, 0x01,
- NULL, HFILL}},
+ { "PVI Pre-emption Vulnerability", "gtp.EARP_pre_emption_par_vulnerability",
+ FT_UINT8, BASE_DEC, NULL, 0x01,
+ NULL, HFILL}
+ },
{&hf_gtp_earp_pl,
- {"PL Priority Level", "gtp.EARP_priority_level",
- FT_UINT8, BASE_DEC, NULL, 0x3C,
- NULL, HFILL}},
+ { "PL Priority Level", "gtp.EARP_priority_level",
+ FT_UINT8, BASE_DEC, NULL, 0x3C,
+ NULL, HFILL}
+ },
{&hf_gtp_earp_pci,
- {"PCI Pre-emption Capability", "gtp.EARP_pre_emption_Capability",
- FT_UINT8, BASE_DEC, NULL, 0x40,
- NULL, HFILL}},
+ { "PCI Pre-emption Capability", "gtp.EARP_pre_emption_Capability",
+ FT_UINT8, BASE_DEC, NULL, 0x40,
+ NULL, HFILL}
+ },
{&hf_gtp_cdr_app,
- {"Application Identifier", "gtp.cdr_app",
- FT_UINT8, BASE_DEC, NULL, 0xf0,
- NULL, HFILL}},
+ { "Application Identifier", "gtp.cdr_app",
+ FT_UINT8, BASE_DEC, NULL, 0xf0,
+ NULL, HFILL}
+ },
{ &hf_gtp_cdr_rel,
- {"Release Identifier", "gtp.cdr_rel",
- FT_UINT8, BASE_DEC, NULL, 0x0f,
- NULL, HFILL}},
+ { "Release Identifier", "gtp.cdr_rel",
+ FT_UINT8, BASE_DEC, NULL, 0x0f,
+ NULL, HFILL}
+ },
{ &hf_gtp_cdr_ver,
- {"Version Identifier", "gtp.cdr_ver",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}},
- {&hf_gtp_spare,
- {"Spare", "gtp.spare",
- FT_UINT8, BASE_DEC, NULL, 0x02,
- NULL, HFILL}},
+ { "Version Identifier", "gtp.cdr_ver",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
{&hf_gtp_cmn_flg_ppc,
- {"Prohibit Payload Compression", "gtp.cmn_flg.ppc",
- FT_BOOLEAN, 8, NULL, 0x01,
- NULL, HFILL}},
+ { "Prohibit Payload Compression", "gtp.cmn_flg.ppc",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ NULL, HFILL}
+ },
{&hf_gtp_cmn_flg_mbs_srv_type,
- {"MBMS Service Type", "gtp.cmn_flg.mbs_srv_type",
- FT_BOOLEAN, 8, NULL, 0x02,
- NULL, HFILL}},
+ { "MBMS Service Type", "gtp.cmn_flg.mbs_srv_type",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ NULL, HFILL}
+ },
{&hf_gtp_cmn_flg_mbs_ran_pcd_rdy,
- {"RAN Procedures Ready", "gtp.cmn_flg.mbs_ran_pcd_rdy",
- FT_BOOLEAN, 8, NULL, 0x04,
- NULL, HFILL}},
+ { "RAN Procedures Ready", "gtp.cmn_flg.mbs_ran_pcd_rdy",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ NULL, HFILL}
+ },
{&hf_gtp_cmn_flg_mbs_cnt_inf,
- {"MBMS Counting Information", "gtp.cmn_flg.mbs_cnt_inf",
- FT_BOOLEAN, 8, NULL, 0x08,
- NULL, HFILL}},
+ { "MBMS Counting Information", "gtp.cmn_flg.mbs_cnt_inf",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ NULL, HFILL}
+ },
{&hf_gtp_cmn_flg_no_qos_neg,
- {"No QoS negotiation", "gtp.cmn_flg.no_qos_neg",
- FT_BOOLEAN, 8, NULL, 0x10,
- NULL, HFILL}},
+ { "No QoS negotiation", "gtp.cmn_flg.no_qos_neg",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ NULL, HFILL}
+ },
{&hf_gtp_cmn_flg_nrsn,
- {"NRSN bit field", "gtp.cmn_flg.nrsn",
- FT_BOOLEAN, 8, NULL, 0x20,
- NULL, HFILL}},
+ { "NRSN bit field", "gtp.cmn_flg.nrsn",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ NULL, HFILL}
+ },
{&hf_gtp_cmn_flg_upgrd_qos_sup,
- {"Upgrade QoS Supported", "gtp.cmn_flg.upgrd_qos_sup",
- FT_BOOLEAN, 8, NULL, 0x40,
- NULL, HFILL}},
+ { "Upgrade QoS Supported", "gtp.cmn_flg.upgrd_qos_sup",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ NULL, HFILL}
+ },
{&hf_gtp_tmgi,
- {"Temporary Mobile Group Identity (TMGI)", "gtp.tmgi",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL}},
+ { "Temporary Mobile Group Identity (TMGI)", "gtp.tmgi",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}
+ },
{&hf_gtp_no_of_mbms_sa_codes,
- {"Number of MBMS service area codes", "gtp.no_of_mbms_sa_codes",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Number N of MBMS service area codes", HFILL}
+ { "Number of MBMS service area codes", "gtp.no_of_mbms_sa_codes",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Number N of MBMS service area codes", HFILL}
},
+
{&hf_gtp_mbms_ses_dur_days,
- {"Estimated session duration days", "gtp.mbms_ses_dur_days",
- FT_UINT8, BASE_DEC, NULL, 0xfe,
- NULL, HFILL}
+ { "Estimated session duration days", "gtp.mbms_ses_dur_days",
+ FT_UINT24, BASE_DEC, NULL, 0x00007F,
+ NULL, HFILL}
},
{&hf_gtp_mbms_ses_dur_s,
- {"Estimated session duration seconds", "gtp.mbms_ses_dur_s",
- FT_UINT24, BASE_DEC, NULL, 0x01ffff,
- NULL, HFILL}
+ { "Estimated session duration seconds", "gtp.mbms_ses_dur_s",
+ FT_UINT24, BASE_DEC, NULL, 0xFFFF80,
+ NULL, HFILL}
},
{&hf_gtp_mbms_sa_code,
- {"MBMS service area code", "gtp.mbms_sa_code",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
+ { "MBMS service area code", "gtp.mbms_sa_code",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
},
{&hf_gtp_mbs_2g_3g_ind,
- {"MBMS 2G/3G Indicator", "gtp.mbs_2g_3g_ind",
- FT_UINT8, BASE_DEC, VALS(gtp_mbs_2g_3g_ind_vals), 0x0,
- NULL, HFILL}
+ { "MBMS 2G/3G Indicator", "gtp.mbs_2g_3g_ind",
+ FT_UINT8, BASE_DEC, VALS(gtp_mbs_2g_3g_ind_vals), 0x0,
+ NULL, HFILL}
},
{&hf_gtp_time_2_dta_tr,
- {"Time to MBMS Data Transfer", "gtp.time_2_dta_tr",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
+ { "Time to MBMS Data Transfer", "gtp.time_2_dta_tr",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
},
{ &hf_gtp_ext_ei,
- {"Error Indication (EI)", "gtp.ei",
- FT_UINT8, BASE_DEC, NULL, 0x04,
- NULL, HFILL}
+ { "Error Indication (EI)", "gtp.ei",
+ FT_UINT8, BASE_DEC, NULL, 0x04,
+ NULL, HFILL}
},
{&hf_gtp_ext_gcsi,
- {"GPRS-CSI (GCSI)", "gtp.gcsi",
- FT_UINT8, BASE_DEC, NULL, 0x02,
- NULL, HFILL}
+ { "GPRS-CSI (GCSI)", "gtp.gcsi",
+ FT_UINT8, BASE_DEC, NULL, 0x02,
+ NULL, HFILL}
},
{ &hf_gtp_ext_dti,
- {"Direct Tunnel Indicator (DTI)", "gtp.dti",
- FT_UINT8, BASE_DEC, NULL, 0x01,
- NULL, HFILL}
+ { "Direct Tunnel Indicator (DTI)", "gtp.dti",
+ FT_UINT8, BASE_DEC, NULL, 0x01,
+ NULL, HFILL}
},
{ &hf_gtp_ra_prio_lcs,
- {"Radio Priority LCS", "gtp.raplcs",
- FT_UINT8, BASE_DEC, NULL, 0x07,
- NULL, HFILL}
+ { "Radio Priority LCS", "gtp.raplcs",
+ FT_UINT8, BASE_DEC, NULL, 0x07,
+ NULL, HFILL}
},
{ &hf_gtp_bcm,
- {"Bearer Control Mode", "gtp.bcm",
- FT_UINT8, BASE_DEC, VALS(gtp_pdp_bcm_type_vals), 0,
- NULL, HFILL}
+ { "Bearer Control Mode", "gtp.bcm",
+ FT_UINT8, BASE_DEC, VALS(gtp_pdp_bcm_type_vals), 0,
+ NULL, HFILL}
},
- { &hf_gtp_rim_routing_addr,
- {"RIM Routing Address value", "gtp.rim_routing_addr_val",
- FT_BYTES, BASE_NONE, NULL, 0,
- NULL, HFILL}
+ { &hf_gtp_fqdn,
+ { "FQDN", "gtp.fqdn",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Fully Qualified Domain Name", HFILL}
+ },
+ { &hf_gtp_rim_routing_addr,
+ { "RIM Routing Address value", "gtp.rim_routing_addr_val",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL}
+ },
+ { &hf_gtp_mbms_flow_id,
+ { "MBMS Flow Identifier", "gtp.mbms_flow_id",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL}
+ },
+ { &hf_gtp_mbms_dist_indic,
+ { "Distribution Indication", "gtp.mbms_dist_indic",
+ FT_UINT8, BASE_DEC, VALS(gtp_mbms_dist_indic_vals), 0x03,
+ NULL, HFILL}
+ },
+ { &hf_gtp_ext_apn_ambr_ul,
+ { "APN-AMBR for Uplink", "gtp.apn_ambr_ul",
+ FT_INT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gtp_ext_apn_ambr_dl,
+ { "APN-AMBR for Downlink", "gtp.apn_ambr_dl",
+ FT_INT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gtp_ext_sub_ue_ambr_ul,
+ { "Subscribed UE-AMBR for Uplink", "gtp.sub_ue_ambr_ul",
+ FT_INT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gtp_ext_sub_ue_ambr_dl,
+ { "Subscribed UE-AMBR for Downlink", "gtp.sub_ue_ambr_dl",
+ FT_INT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gtp_ext_auth_ue_ambr_ul,
+ { "Authorized UE-AMBR for Uplink", "gtp.auth_ue_ambr_ul",
+ FT_INT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gtp_ext_auth_ue_ambr_dl,
+ { "Authorized UE-AMBR for Downlink", "gtp.auth_ue_ambr_dl",
+ FT_INT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gtp_ext_auth_apn_ambr_ul,
+ { "Authorized APN-AMBR for Uplink", "gtp.auth_apn_ambr_ul",
+ FT_INT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gtp_ext_auth_apn_ambr_dl,
+ { "Authorized APN-AMBR for Downlink", "gtp.auth_apn_ambr_dl",
+ FT_INT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gtp_ext_ggsn_back_off_time_units,
+ { "Timer unit", "gtp.ggsn_back_off_time_units",
+ FT_UINT8, BASE_DEC, VALS(gtp_ggsn_back_off_time_units_vals), 0xe0,
+ NULL, HFILL}
+ },
+ { &hf_gtp_ext_ggsn_back_off_timer,
+ { "Timer value", "gtp.ggsn_back_off_timer",
+ FT_UINT8, BASE_DEC, NULL, 0x1f,
+ NULL, HFILL}
+ },
+ { &hf_gtp_higher_br_16mb_flg,
+ { "Higher bitrates than 16 Mbps flag", "gtp.higher_br_16mb_flg",
+ FT_UINT8, BASE_DEC, VALS(gtp_higher_br_16mb_flg_vals), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gtp_max_mbr_apn_ambr_ul,
+ { "Max MBR/APN-AMBR for uplink", "gtp.max_mbr_apn_ambr_ul",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gtp_max_mbr_apn_ambr_dl,
+ { "Max MBR/APN-AMBR for downlink", "gtp.max_mbr_apn_ambr_dl",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
},
};
- static gint *ett_gtp_array[] = {
- &ett_gtp,
- &ett_gtp_flags,
- &ett_gtp_ext,
- &ett_gtp_rai,
- &ett_gtp_qos,
- &ett_gtp_auth_tri,
- &ett_gtp_flow_ii,
- &ett_gtp_rab_cntxt,
- &ett_gtp_rp,
- &ett_gtp_pkt_flow_id,
- &ett_gtp_chrg_char,
- &ett_gtp_user,
- &ett_gtp_mm,
- &ett_gtp_trip,
- &ett_gtp_quint,
- &ett_gtp_pdp,
- &ett_gtp_apn,
- &ett_gtp_proto,
- &ett_gtp_gsn_addr,
- &ett_gtp_tft,
- &ett_gtp_tft_pf,
- &ett_gtp_tft_flags,
- &ett_gtp_rab_setup,
- &ett_gtp_hdr_list,
- &ett_gtp_chrg_addr,
- &ett_gtp_node_addr,
- &ett_gtp_rel_pack,
- &ett_gtp_can_pack,
- &ett_gtp_data_resp,
- &ett_gtp_priv_ext,
- &ett_gtp_net_cap,
- &ett_gtp_ext_tree_apn_res,
- &ett_gtp_ext_rat_type,
- &ett_gtp_ext_imeisv,
- &ett_gtp_ext_ran_tr_cont,
- &ett_gtp_ext_pdp_cont_prio,
- &ett_gtp_ext_ssgn_no,
- &ett_gtp_ext_rab_setup_inf,
- &ett_gtp_ext_common_flgs,
- &ett_gtp_ext_usr_loc_inf,
- &ett_gtp_ext_ms_time_zone,
- &ett_gtp_ext_camel_chg_inf_con,
- &ett_GTP_EXT_MBMS_UE_CTX,
- &ett_gtp_ext_tmgi,
- &ett_gtp_tmgi,
- &ett_gtp_ext_rim_ra,
- &ett_gtp_ext_mbms_prot_conf_opt,
- &ett_gtp_ext_mbms_sa,
- &ett_gtp_ext_bms_ses_dur,
- &ett_gtp_ext_src_rnc_pdp_ctx_inf,
- &ett_gtp_ext_add_trs_inf,
- &ett_gtp_ext_hop_count,
- &ett_gtp_ext_sel_plmn_id,
- &ett_gtp_ext_mbms_ses_id,
- &ett_gtp_ext_mbms_2g_3g_ind,
- &ett_gtp_ext_enh_nsapi,
- &ett_gtp_ext_ad_mbms_trs_inf,
- &ett_gtp_ext_mbms_ses_id_rep_no,
- &ett_gtp_ext_mbms_time_to_data_tr,
- &ett_gtp_ext_ps_ho_req_ctx,
- &ett_gtp_ext_bss_cont,
- &ett_gtp_ext_cell_id,
- &ett_gtp_ext_pdu_no,
- &ett_gtp_ext_bssgp_cause,
- &ett_gtp_ext_ra_prio_lcs,
- &ett_gtp_ext_ps_handover_xid,
- &ett_gtp_target_id,
- &ett_gtp_utran_cont,
- &ett_gtp_bcm,
- &ett_gtp_cdr_ver,
- &ett_gtp_cdr_dr,
- &ett_gtp_ext_hdr,
- &ett_gtp_uli_rai,
- };
+ /* Setup protocol subtree array */
+#define GTP_NUM_INDIVIDUAL_ELEMS 27
+ static gint *ett_gtp_array[GTP_NUM_INDIVIDUAL_ELEMS + NUM_GTP_IES];
+
+ ett_gtp_array[0] = &ett_gtp;
+ ett_gtp_array[1] = &ett_gtp_flags;
+ ett_gtp_array[2] = &ett_gtp_ext;
+ ett_gtp_array[3] = &ett_gtp_cdr_dr;
+ ett_gtp_array[4] = &ett_gtp_qos;
+ ett_gtp_array[5] = &ett_gtp_qos_arp;
+ ett_gtp_array[6] = &ett_gtp_uli_rai;
+ ett_gtp_array[7] = &ett_gtp_flow_ii;
+ ett_gtp_array[8] = &ett_gtp_ext_hdr;
+ ett_gtp_array[9] = &ett_gtp_rp;
+ ett_gtp_array[10] = &ett_gtp_pkt_flow_id;
+ ett_gtp_array[11] = &ett_gtp_data_resp;
+ ett_gtp_array[12] = &ett_gtp_cdr_ver;
+ ett_gtp_array[13] = &ett_gtp_tmgi;
+ ett_gtp_array[14] = &ett_gtp_trip;
+ ett_gtp_array[15] = &ett_gtp_quint;
+ ett_gtp_array[16] = &ett_gtp_net_cap;
+ ett_gtp_array[17] = &ett_gtp_can_pack;
+ ett_gtp_array[18] = &ett_gtp_proto;
+ ett_gtp_array[19] = &ett_gtp_gsn_addr;
+ ett_gtp_array[20] = &ett_gtp_tft;
+ ett_gtp_array[21] = &ett_gtp_tft_pf;
+ ett_gtp_array[22] = &ett_gtp_tft_flags;
+ ett_gtp_array[23] = &ett_gtp_rab_setup;
+ ett_gtp_array[24] = &ett_gtp_hdr_list;
+ ett_gtp_array[25] = &ett_gtp_rel_pack;
+ ett_gtp_array[26] = &ett_gtp_node_addr;
+
+ last_offset = GTP_NUM_INDIVIDUAL_ELEMS;
+
+ for (i=0; i < NUM_GTP_IES; i++, last_offset++)
+ {
+ ett_gtp_ies[i] = -1;
+ ett_gtp_array[last_offset] = &ett_gtp_ies[i];
+ }
+
- module_t *gtp_module;
proto_gtp = proto_register_protocol("GPRS Tunneling Protocol", "GTP", "gtp");
proto_register_field_array(proto_gtp, hf_gtp, array_length(hf_gtp));
@@ -7732,7 +9155,8 @@ void proto_register_gtp(void)
* all CGFs shall support the server port number.
*/
-void proto_reg_handoff_gtp(void)
+void
+proto_reg_handoff_gtp(void)
{
static gboolean Initialized = FALSE;
static dissector_handle_t gtp_handle, gtp_prim_handle;
diff --git a/epan/dissectors/packet-gtp.h b/epan/dissectors/packet-gtp.h
index aa0cdc7161..8b2057e7ab 100644
--- a/epan/dissectors/packet-gtp.h
+++ b/epan/dissectors/packet-gtp.h
@@ -138,4 +138,6 @@ typedef struct gtp_msg_hash_entry {
#define GTP_MSG_END_MARKER 0xFE /* 254 */
#define GTP_MSG_TPDU 0xFF
+extern value_string_ext cause_type_ext;
+
#endif /* __PACKET_GTP_H*/
diff --git a/epan/dissectors/packet-gtpv2.c b/epan/dissectors/packet-gtpv2.c
index bc80581716..5c92eb6cf4 100644
--- a/epan/dissectors/packet-gtpv2.c
+++ b/epan/dissectors/packet-gtpv2.c
@@ -43,7 +43,7 @@
#include "packet-s1ap.h"
#include "packet-ranap.h"
#include "packet-bssgp.h"
-
+#include "packet-ntp.h"
static dissector_handle_t nas_eps_handle;
static dissector_table_t gtpv2_priv_ext_dissector_table;
@@ -124,7 +124,8 @@ static int hf_gtpv2_pdn_ipv6 = -1;
static int hf_gtpv2_pdn_numbers_nsapi = -1;
static int hf_gtpv2_p_tmsi = -1;
static int hf_gtpv2_p_tmsi_sig = -1;
-
+static int hf_gtpv2_mmbr_ul = -1;
+static int hf_gtpv2_mmbr_dl = -1;
static int hf_gtpv2_rat_type = -1;
static int hf_gtpv2_uli_ecgi_flg = -1;
@@ -295,6 +296,19 @@ static int hf_gtpv2_mm_context_drxi = -1;
static int hf_gtpv2_mm_context_cksn = -1;
static int hf_gtpv2_mm_context_cksn_ksi = -1;
static int hf_gtpv2_mm_context_kasme = -1;
+static int hf_gtpv2_mm_context_rand = -1;
+static int hf_gtpv2_mm_context_xres_len = -1;
+static int hf_gtpv2_mm_context_xres = -1;
+static int hf_gtpv2_mm_context_autn_len = -1;
+static int hf_gtpv2_mm_context_autn = -1;
+static int hf_gtpv2_mm_context_drx = -1;
+static int hf_gtpv2_mm_context_ue_net_cap_len = -1;
+static int hf_gtpv2_mm_context_ms_net_cap_len = -1;
+static int hf_gtpv2_mm_context_mei_len = -1;
+static int hf_gtpv2_mm_context_vdp_len = -1;
+static int hf_gtpv2_mm_context_higher_br_16mb_flg_len = -1;
+static int hf_gtpv2_mm_context_higher_br_16mb_flg = -1;
+
static int hf_gtpv2_una = -1;
static int hf_gtpv2_gena = -1;
static int hf_gtpv2_gana = -1;
@@ -304,6 +318,7 @@ static int hf_gtpv2_hnna = -1;
static int hf_gtpv2_mm_context_ksi_a= -1;
static int hf_gtpv2_mm_context_ksi = -1;
static int hf_gtpv2_mm_context_nr_tri = -1;
+static int hf_gtpv2_mm_context_used_cipher = -1;
static int hf_gtpv2_mm_context_nr_qui = -1;
static int hf_gtpv2_mm_context_nr_qua = -1;
static int hf_gtpv2_mm_context_uamb_ri = -1;
@@ -356,6 +371,13 @@ static int hf_gtpv2_mbms_dist_indication = -1;
static int hf_gtpv2_mbms_service_id = -1;
static int hf_gtpv2_add_flags_for_srvcc_ics = -1;
static int hf_gtpv2_vsrvcc_flag = -1;
+static int hf_gtpv2_abs_time_mbms_data = -1;
+static int hf_gtpv2_mbms_session_duration_days = -1;
+static int hf_gtpv2_mbms_session_duration_secs = -1;
+static int hf_gtpv2_time_to_data_xfer = -1;
+static int hf_gtpv2_arp_pvi = -1;
+static int hf_gtpv2_arp_pl = -1;
+static int hf_gtpv2_arp_pci = -1;
static gint ett_gtpv2 = -1;
static gint ett_gtpv2_flags = -1;
@@ -391,6 +413,8 @@ static gint ett_gtpv2_stn_sr = -1;
static gint ett_gtpv2_supp_codec_list = -1;
static gint ett_gtpv2_bss_con = -1;
static gint ett_gtpv2_mm_context_auth_qua = -1;
+static gint ett_gtpv2_mm_context_auth_qui = -1;
+static gint ett_gtpv2_mm_context_auth_tri = -1;
static gint ett_gtpv2_mm_context_net_cap = -1;
static gint ett_gtpv2_ms_network_capability = -1;
static gint ett_gtpv2_vd_pref = -1;
@@ -415,54 +439,54 @@ static void dissect_gtpv2_ie_common(tvbuff_t * tvb, packet_info * pinfo _U_, pro
/*Message Types for GTPv2 (Refer Pg19 29.274) (SB)*/
static const value_string gtpv2_message_type_vals[] = {
- {0, "Reserved"},
- {1, "Echo Request"},
- {2, "Echo Response"},
- {3, "Version Not Supported Indication"},
+ { 0, "Reserved"},
+ { 1, "Echo Request"},
+ { 2, "Echo Response"},
+ { 3, "Version Not Supported Indication"},
/* 4-24 Reserved for S101 interface TS 29.276 */
- {4, "Node Alive Request"},
- {5, "Node Alive Response"},
- {6, "Redirection Request"},
- {7, "Redirection Response"},
+ { 4, "Node Alive Request"},
+ { 5, "Node Alive Response"},
+ { 6, "Redirection Request"},
+ { 7, "Redirection Response"},
/* 25-31 Reserved for Sv interface TS 29.280 */
/*Start SRVCC Messages ETSI TS 129 280 V10.1.0 (2011-06) 5.2.1*/
- {25, "SRVCC PS to CS Request"},
- {26, "SRVCC PS to CS Response"},
- {27, "SRVCC PS to CS Complete Notification"},
- {28, "SRVCC PS to CS Complete Acknowledge"},
- {29, "SRVCC PS to CS Cancel Notification"},
- {30, "SRVCC PS to CS Cancel Acknowledge"},
- {31, "For Future Sv interface use"},
+ { 25, "SRVCC PS to CS Request"},
+ { 26, "SRVCC PS to CS Response"},
+ { 27, "SRVCC PS to CS Complete Notification"},
+ { 28, "SRVCC PS to CS Complete Acknowledge"},
+ { 29, "SRVCC PS to CS Cancel Notification"},
+ { 30, "SRVCC PS to CS Cancel Acknowledge"},
+ { 31, "For Future Sv interface use"},
/*End SRVCC Messages*/
/* SGSN/MME to PGW (S4/S11, S5/S8) */
- {32, "Create Session Request"},
- {33, "Create Session Response"},
- {34, "Modify Bearer Request"},
- {35, "Modify Bearer Response"},
- {36, "Delete Session Request"},
- {37, "Delete Session Response"},
+ { 32, "Create Session Request"},
+ { 33, "Create Session Response"},
+ { 34, "Modify Bearer Request"},
+ { 35, "Modify Bearer Response"},
+ { 36, "Delete Session Request"},
+ { 37, "Delete Session Response"},
/* SGSN to PGW (S4, S5/S8) */
- {38, "Change Notification Request"},
- {39, "Change Notification Response"},
+ { 38, "Change Notification Request"},
+ { 39, "Change Notification Response"},
/* 40-63 For future use */
/* Messages without explicit response */
- {64, "Modify Bearer Command"}, /* (MME/SGSN to PGW -S11/S4, S5/S8) */
- {65, "Modify Bearer Failure Indication"}, /*(PGW to MME/SGSN -S5/S8, S11/S4) */
- {66, "Delete Bearer Command"}, /* (MME to PGW -S11, S5/S8) */
- {67, "Delete Bearer Failure Indication"}, /* (PGW to MME -S5/S8, S11) */
- {68, "Bearer Resource Command"}, /* (MME/SGSN to PGW -S11/S4, S5/S8) */
- {69, "Bearer Resource Failure Indication"}, /* (PGW to MME/SGSN -S5/S8, S11/S4) */
- {70, "Downlink Data Notification Failure Indication"}, /*(SGSN/MME to SGW -S4/S11) */
- {71, "Trace Session Activation"},
- {72, "Trace Session Deactivation"},
- {73, "Stop Paging Indication"},
+ { 64, "Modify Bearer Command"}, /* (MME/SGSN to PGW -S11/S4, S5/S8) */
+ { 65, "Modify Bearer Failure Indication"}, /*(PGW to MME/SGSN -S5/S8, S11/S4) */
+ { 66, "Delete Bearer Command"}, /* (MME to PGW -S11, S5/S8) */
+ { 67, "Delete Bearer Failure Indication"}, /* (PGW to MME -S5/S8, S11) */
+ { 68, "Bearer Resource Command"}, /* (MME/SGSN to PGW -S11/S4, S5/S8) */
+ { 69, "Bearer Resource Failure Indication"}, /* (PGW to MME/SGSN -S5/S8, S11/S4) */
+ { 70, "Downlink Data Notification Failure Indication"}, /*(SGSN/MME to SGW -S4/S11) */
+ { 71, "Trace Session Activation"},
+ { 72, "Trace Session Deactivation"},
+ { 73, "Stop Paging Indication"},
/* 74-94 For future use */
/* PDN-GW to SGSN/MME (S5/S8, S4/S11) */
- {95, "Create Bearer Request"},
- {96, "Create Bearer Response"},
- {97, "Update Bearer Request"},
- {98, "Update Bearer Response"},
- {99, "Delete Bearer Request"},
+ { 95, "Create Bearer Request"},
+ { 96, "Create Bearer Response"},
+ { 97, "Update Bearer Request"},
+ { 98, "Update Bearer Response"},
+ { 99, "Delete Bearer Request"},
{100, "Delete Bearer Response"},
/* PGW to MME, MME to PGW, SGW to PGW, SGW to MME (S5/S8, S11) */
{101, "Delete PDN Connection Set Request"},
@@ -525,7 +549,7 @@ static const value_string gtpv2_message_type_vals[] = {
/* 213 to 230 For future use */
/* MBMS GW to MME/SGSN (Sm/Sn) */
{231, "MBMS Session Start Request"},
- {323, "MBMS Session Start Response"},
+ {232, "MBMS Session Start Response"},
{233, "MBMS Session Update Request"},
{234, "MBMS Session Update Response"},
{235, "MBMS Session Stop Request"},
@@ -648,6 +672,7 @@ static const value_string gtpv2_message_type_vals[] = {
#define GTPV2_IE_MMBR 161
#define GTPV2_IE_MDT_CONFIG 162
#define GTPV2_IE_APCO 163
+#define GTPV2_IE_ABS_MBMS_DATA_TF_TIME 164
/* 164 to 254 reserved for future use */
#define GTPV2_IE_PRIVATE_EXT 255
@@ -750,7 +775,7 @@ static const value_string gtpv2_element_type_vals[] = {
{135, "Node Type"}, /* Extendable / 8.65 */
{136, "Fully Qualified Domain Name (FQDN)"}, /* Variable Length / 8.66 */
{137, "Transaction Identifier (TI)"}, /* Variable Length / 8.68 */
- {138, "MBMS Session"}, /* Duration Extendable / 8.69 */
+ {138, "MBMS Session Duration"}, /* Duration Extendable / 8.69 */
{139, "MBMS Service Area"}, /* Extendable / 8.70 */
{140, "MBMS Session Identifier"}, /* Extendable / 8.71 */
{141, "MBMS Flow Identifier"}, /* Extendable / 8.72 */
@@ -776,7 +801,8 @@ static const value_string gtpv2_element_type_vals[] = {
{161, "Max MBR/APN-AMBR (MMBR)"}, /* Extendable / 8.92 */
{162, "MDT Configuration"}, /* Extendable / 8.93 */
{163, "Additional Protocol Configuration Options (APCO)"}, /* Extendable / 8.94 */
- /* 164 to 254 Spare. For future use. */ /* For future use. FFS */
+ {164, "Absolute Time of MBMS Data Transfer"}, /* Extendable / 8.95 */
+ /* 165 to 254 Spare. For future use. */ /* For future use. FFS */
{255, "Private Extension"}, /* Variable Length / 8.67 */
{0, NULL}
};
@@ -806,14 +832,14 @@ dissect_gtpv2_unknown(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto
static void
dissect_gtpv2_imsi(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item, guint16 length, guint8 message_type _U_, guint8 instance _U_)
{
- int offset= 0;
+ int offset = 0;
const gchar *imsi_str;
/* Fetch the BCD encoded digits from tvb low half byte, formating the digits according to
* a default digit set of 0-9 returning "?" for overdecadic digits a pointer to the EP
* allocated string will be returned.
*/
- imsi_str = tvb_bcd_dig_to_ep_str( tvb, offset, length, NULL, ENC_BIG_ENDIAN);
+ imsi_str = tvb_bcd_dig_to_ep_str( tvb, offset, length, NULL, FALSE);
proto_tree_add_string(tree, hf_gtpv2_imsi, tvb, offset, length, imsi_str);
proto_item_append_text(item, "%s", imsi_str);
@@ -961,8 +987,8 @@ static const true_false_string gtpv2_cause_cs = {
static void
dissect_gtpv2_cause(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item, guint16 length, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
- guint8 tmp;
+ int offset = 0;
+ guint8 tmp;
/* Cause value octet 5 */
tmp = tvb_get_guint8(tvb, offset);
@@ -1014,8 +1040,8 @@ dissect_gtpv2_cause(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, pro
static void
dissect_gtpv2_recovery(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
- guint8 recovery;
+ int offset = 0;
+ guint8 recovery;
recovery = tvb_get_guint8(tvb, offset);
proto_tree_add_item(tree, hf_gtpv2_rec, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1033,7 +1059,7 @@ dissect_gtpv2_stn_sr(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_
proto_item *stn_sr_item;
proto_tree *sub_tree;
tvbuff_t *new_tvb;
- int offset = 0;
+ int offset = 0;
stn_sr_item = proto_tree_add_item(tree, hf_gtpv2_stn_sr, tvb, offset, length, ENC_NA);
new_tvb = tvb_new_subset(tvb, offset, length, length );
@@ -1053,7 +1079,7 @@ dissect_gtpv2_stn_sr(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_
static void
dissect_gtpv2_src_tgt_trans_con(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
+ int offset = 0;
proto_tree_add_item(tree, hf_gtpv2_len_trans_con, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
/*ra_type_flag = 0;*/
@@ -1076,7 +1102,7 @@ dissect_gtpv2_src_tgt_trans_con(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
static void
dissect_gtpv2_tgt_src_trans_con(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
+ int offset = 0;
proto_tree_add_item(tree, hf_gtpv2_len_trans_con, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
@@ -1090,8 +1116,8 @@ dissect_gtpv2_tgt_src_trans_con(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
static void
dissect_gtpv2_mm_con_eutran_srvcc(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
- guint8 elm_len;
+ int offset = 0;
+ guint8 elm_len;
proto_tree *ms_tree, *fi;
proto_tree_add_item(tree, hf_gtpv2_eksi, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1133,8 +1159,8 @@ dissect_gtpv2_mm_con_eutran_srvcc(tvbuff_t *tvb, packet_info *pinfo _U_, proto_t
static void
dissect_gtpv2_mm_con_utran_srvcc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
- guint8 elm_len;
+ int offset = 0;
+ guint8 elm_len;
proto_tree *ms_tree, *fi;
proto_tree_add_item(tree, hf_gtpv2_ksi, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1196,8 +1222,8 @@ static value_string_ext gtpv2_srvcc_cause_vals_ext = VALUE_STRING_EXT_INIT(gtpv2
static void
dissect_gtpv2_srvcc_cause(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
- guint8 srvcc_cause;
+ int offset = 0;
+ guint8 srvcc_cause;
srvcc_cause = tvb_get_guint8(tvb, offset);
proto_tree_add_item(tree, hf_gtpv2_srvcc_cause, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1209,14 +1235,14 @@ dissect_gtpv2_srvcc_cause(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
static void
dissect_gtpv2_tgt_rnc_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
- guint8 rnc_id;
- proto_tree *subtree;
- proto_item *rai_item;
- guint32 mcc;
- guint32 mnc;
- guint32 lac;
- guint32 curr_offset;
+ int offset = 0;
+ guint8 rnc_id;
+ proto_tree *subtree;
+ proto_item *rai_item;
+ guint32 mcc;
+ guint32 mnc;
+ guint32 lac;
+ guint32 curr_offset;
/*ra_type_flag = 1;*/ /*Flag to be set to differentiate GERAN and UTRAN*/
curr_offset = offset;
@@ -1253,14 +1279,14 @@ dissect_gtpv2_tgt_rnc_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, pr
static void
dissect_gtpv2_tgt_global_cell_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
- guint8 tgt_cell_id;
- proto_tree *subtree;
- proto_item *rai_item;
- guint32 mcc;
- guint32 mnc;
- guint32 lac;
- guint32 curr_offset;
+ int offset = 0;
+ guint8 tgt_cell_id;
+ proto_tree *subtree;
+ proto_item *rai_item;
+ guint32 mcc;
+ guint32 mnc;
+ guint32 lac;
+ guint32 curr_offset;
curr_offset = offset;
@@ -1295,7 +1321,7 @@ dissect_gtpv2_tgt_global_cell_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
static void
dissect_gtpv2_teid_c(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
+ int offset = 0;
proto_tree_add_item(tree, hf_gtpv2_teid_c, tvb, offset, 4, ENC_BIG_ENDIAN);
offset= offset+4;
@@ -1307,7 +1333,7 @@ dissect_gtpv2_teid_c(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, pr
static void
dissect_gtpv2_sv_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
+ int offset = 0;
proto_tree_add_item(tree, hf_gtpv2_sv_sti, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_gtpv2_sv_ics, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_gtpv2_sv_emind, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1321,7 +1347,7 @@ dissect_gtpv2_sv_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
static void
dissect_gtpv2_sai(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
+ int offset = 0;
/* 5 MCC digit 2 MCC digit 1
* 6 MNC digit 3 MCC digit 3
@@ -1356,9 +1382,9 @@ dissect_gtpv2_sai(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_ite
static void
dissect_gtpv2_apn(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item, guint16 length, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
- guint8 *apn = NULL;
- int name_len, tmp;
+ int offset = 0;
+ guint8 *apn = NULL;
+ int name_len, tmp;
if (length > 0) {
name_len = tvb_get_guint8(tvb, offset);
@@ -1404,8 +1430,8 @@ static void
dissect_gtpv2_ebi(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
- guint8 ebi;
+ int offset = 0;
+ guint8 ebi;
/* Spare (all bits set to 0) B8 - B5*/
proto_tree_add_bits_item(tree, hf_gtpv2_spare_bits, tvb, offset, 4, ENC_BIG_ENDIAN);
@@ -1421,7 +1447,7 @@ dissect_gtpv2_ebi(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto
static void
dissect_gtpv2_ip_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item, guint16 length, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
+ int offset = 0;
struct e_in6_addr ipv6_addr;
if (length==4)
@@ -1450,14 +1476,14 @@ dissect_gtpv2_ip_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
static void
dissect_gtpv2_mei(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item, guint16 length, guint8 message_type _U_, guint8 instance _U_)
{
- int offset= 0;
+ int offset = 0;
const gchar *mei_str;
/* Fetch the BCD encoded digits from tvb low half byte, formating the digits according to
* a default digit set of 0-9 returning "?" for overdecadic digits a pointer to the EP
* allocated string will be returned.
*/
- mei_str = tvb_bcd_dig_to_ep_str( tvb, 0, length, NULL, ENC_BIG_ENDIAN);
+ mei_str = tvb_bcd_dig_to_ep_str( tvb, 0, length, NULL, FALSE);
proto_tree_add_string(tree, hf_gtpv2_mei, tvb, offset, length, mei_str);
proto_item_append_text(item, "%s", mei_str);
@@ -1472,7 +1498,7 @@ dissect_gtpv2_mei(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto
static void
dissect_gtpv2_msisdn(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item, guint16 length, guint8 message_type _U_, guint8 instance _U_)
{
- const char *digit_str;
+ const char *digit_str;
/* Octets 5 to (n+4) represent the MSISDN value is in international number format
* as described in ITU-T Rec E.164 [25] and 3GPP TS 29.002 [41].
@@ -1488,7 +1514,7 @@ dissect_gtpv2_msisdn(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, pr
* a default digit set of 0-9 returning "?" for overdecadic digits a pointer to the EP
* allocated string will be returned.
*/
- digit_str = tvb_bcd_dig_to_ep_str( tvb, 0, length, NULL, ENC_BIG_ENDIAN);
+ digit_str = tvb_bcd_dig_to_ep_str( tvb, 0, length, NULL, FALSE);
proto_tree_add_string(tree, hf_gtpv2_address_digits, tvb, 0, length, digit_str);
proto_item_append_text(item, "%s", digit_str);
@@ -1580,9 +1606,10 @@ static const value_string gtpv2_pdn_type_vals[] = {
static void
dissect_gtpv2_paa(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
+ int offset = 0;
guint8 pdn_type;
- pdn_type = tvb_get_guint8(tvb, offset);
+
+ pdn_type = tvb_get_guint8(tvb, offset);
proto_tree_add_item(tree, hf_gtpv2_pdn_type, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
switch(pdn_type)
@@ -1685,7 +1712,7 @@ static value_string_ext gtpv2_rat_type_vals_ext = VALUE_STRING_EXT_INIT(gtpv2_ra
static void
dissect_gtpv2_rat_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- guint8 rat_type;
+ guint8 rat_type;
rat_type = tvb_get_guint8(tvb, 0);
proto_tree_add_item(tree, hf_gtpv2_rat_type, tvb, 0, 1, ENC_BIG_ENDIAN);
@@ -1748,9 +1775,9 @@ dissect_gtpv2_tad(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_ite
static void
decode_gtpv2_uli(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item, guint16 length, guint8 instance _U_, guint flags)
{
- int offset = 1; /* flags are already dissected */
- proto_item *fi;
- proto_tree *part_tree;
+ int offset = 1; /* flags are already dissected */
+ proto_item *fi;
+ proto_tree *part_tree;
/* 8.21.1 CGI field */
if (flags & GTPv2_ULI_CGI_MASK)
@@ -1761,7 +1788,7 @@ decode_gtpv2_uli(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item
dissect_e212_mcc_mnc(tvb, pinfo, part_tree, offset, TRUE);
offset+=3;
proto_tree_add_item(part_tree, hf_gtpv2_uli_cgi_lac, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset+=2;
+ offset+=2;
proto_tree_add_item(part_tree, hf_gtpv2_uli_cgi_ci, tvb, offset, 2, ENC_BIG_ENDIAN);
offset+=2;
if(offset==length)
@@ -1864,10 +1891,10 @@ decode_gtpv2_uli(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item
static void
dissect_gtpv2_uli(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item, guint16 length, guint8 message_type _U_, guint8 instance _U_)
{
- proto_item *flags_item;
- proto_tree *flag_tree;
- int offset = 0;
- guint flags;
+ proto_item *flags_item;
+ proto_tree *flag_tree;
+ int offset = 0;
+ guint flags;
flags_item = proto_tree_add_text(tree, tvb, offset, 1, "Flags");
flag_tree = proto_item_add_subtree(flags_item, ett_gtpv2_uli_flags);
@@ -1923,12 +1950,12 @@ static const value_string geographic_location_type_vals[] = {
static int
dissect_diameter_3gpp_uli(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- int offset = 0;
+ int offset = 0;
guint length;
guint flags;
guint flags_3gpp;
- length = tvb_length(tvb);
- flags_3gpp = tvb_get_guint8(tvb,offset);
+ length = tvb_length(tvb);
+ flags_3gpp = tvb_get_guint8(tvb,offset);
proto_tree_add_item(tree, hf_gtpv2_glt, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1971,18 +1998,18 @@ dissect_diameter_3gpp_uli(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
* 8.22 Fully Qualified TEID (F-TEID)
*/
static const value_string gtpv2_f_teid_interface_type_vals[] = {
- {0, "S1-U eNodeB GTP-U interface"},
- {1, "S1-U SGW GTP-U interface"},
- {2, "S12 RNC GTP-U interface"},
- {3, "S12 SGW GTP-U interface"},
- {4, "S5/S8 SGW GTP-U interface"},
- {5, "S5/S8 PGW GTP-U interface"},
- {6, "S5/S8 SGW GTP-C interface"},
- {7, "S5/S8 PGW GTP-C interface"},
- {8, "S5/S8 SGW PMIPv6 interface"},/* (the 32 bit GRE key is encoded in 32 bit TEID field "
- "and since alternate CoA is not used the control plane and user plane addresses are the same for PMIPv6)"}, */
- {9, "S5/S8 PGW PMIPv6 interface"},/* (the 32 bit GRE key is encoded in 32 bit TEID field "
- "and the control plane and user plane addresses are the same for PMIPv6)"}, */
+ { 0, "S1-U eNodeB GTP-U interface"},
+ { 1, "S1-U SGW GTP-U interface"},
+ { 2, "S12 RNC GTP-U interface"},
+ { 3, "S12 SGW GTP-U interface"},
+ { 4, "S5/S8 SGW GTP-U interface"},
+ { 5, "S5/S8 PGW GTP-U interface"},
+ { 6, "S5/S8 SGW GTP-C interface"},
+ { 7, "S5/S8 PGW GTP-C interface"},
+ { 8, "S5/S8 SGW PMIPv6 interface"},/* (the 32 bit GRE key is encoded in 32 bit TEID field "
+ "and since alternate CoA is not used the control plane and user plane addresses are the same for PMIPv6)"}, */
+ { 9, "S5/S8 PGW PMIPv6 interface"},/* (the 32 bit GRE key is encoded in 32 bit TEID field "
+ "and the control plane and user plane addresses are the same for PMIPv6)"}, */
{10, "S11 MME GTP-C interface"},
{11, "S11/S4 SGW GTP-C interface"},
{12, "S10 MME GTP-C interface"},
@@ -2024,7 +2051,7 @@ static const true_false_string gtpv2_f_teid_v6_vals = {
static void
dissect_gtpv2_f_teid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
+ int offset = 0;
guint8 flags;
flags = tvb_get_guint8(tvb, offset);
@@ -2092,8 +2119,8 @@ static void
dissect_gtpv2_s103pdf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, guint8 instance _U_)
{
proto_item *expert_item;
- int offset = 0;
- guint8 m,k,i;
+ int offset = 0;
+ guint8 m,k,i;
/* The HSGW Address and GRE Key identify a GRE Tunnel towards a HSGW over S103 interface for a specific PDN
* connection of the UE. The EPS Bearer IDs specify the EPS Bearers which require data forwarding that belonging to this
@@ -2150,8 +2177,8 @@ static void
dissect_gtpv2_s1udf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, guint8 instance _U_)
{
proto_item *expert_item;
- int offset = 0;
- guint8 m;
+ int offset = 0;
+ guint8 m;
/* 5 Spare EPS Bearer ID */
proto_tree_add_bits_item(tree, hf_gtpv2_spare_bits, tvb, offset<<3, 4, ENC_BIG_ENDIAN);
@@ -2206,8 +2233,8 @@ dissect_gtpv2_delay_value(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
static void
dissect_gtpv2_bearer_ctx(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, proto_item *item, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- int offset= 0;
- tvbuff_t *new_tvb;
+ int offset = 0;
+ tvbuff_t *new_tvb;
proto_tree *grouped_tree;
proto_item_append_text(item, "[Grouped IE]");
@@ -2282,7 +2309,7 @@ dissect_gtpv2_pdn_type(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, prot
proto_tree_add_bits_item(tree, hf_gtpv2_spare_bits, tvb, offset<<3, 5, ENC_BIG_ENDIAN);
pdn = tvb_get_guint8(tvb, offset)& 0x7;
proto_tree_add_item(tree, hf_gtpv2_pdn_type, tvb, offset, length, ENC_BIG_ENDIAN);
- proto_item_append_text(item, "%s", val_to_str(pdn, gtpv2_pdn_type_vals, "Unknown"));
+ proto_item_append_text(item, "%s", val_to_str_const(pdn, gtpv2_pdn_type_vals, "Unknown"));
}
@@ -2293,9 +2320,11 @@ static void
dissect_gtpv2_tra_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item, guint16 length, guint8 message_type _U_, guint8 instance _U_)
{
proto_item *trigg, *msc_server, *mgw, *sgsn, *ggsn, *bm_sc, *sgw_mme, *ne_types;
- proto_tree *trigg_tree, *msc_server_tree, *mgw_tree, *sgsn_tree, *ggsn_tree, *bm_sc_tree, *sgw_mme_tree, *ne_types_tree;
+ proto_tree *trigg_tree, *msc_server_tree, *mgw_tree, *sgsn_tree, *ggsn_tree;
+ proto_tree *bm_sc_tree, *sgw_mme_tree, *ne_types_tree;
proto_item *interfaces, *imsc_server, *lmgw, *lsgsn, *lggsn, *lrnc, *lbm_sc, *lmme, *lsgw, *lpdn_gw, *lenb;
- proto_tree *interfaces_tree, *imsc_server_tree, *lmgw_tree, *lsgsn_tree, *lggsn_tree, *lrnc_tree, *lbm_sc_tree, *lmme_tree, *lsgw_tree, *lpdn_gw_tree, *lenb_tree;
+ proto_tree *interfaces_tree, *imsc_server_tree, *lmgw_tree, *lsgsn_tree, *lggsn_tree, *lrnc_tree;
+ proto_tree *lbm_sc_tree, *lmme_tree, *lsgw_tree, *lpdn_gw_tree, *lenb_tree;
int offset = 0;
#if 0
@@ -2618,6 +2647,19 @@ static const true_false_string gtpv2_nhi_vals = {
static const value_string gtpv2_mm_context_unc_vals[] = {
{0, "No ciphering"},
+ {1, "128-EEA1"},
+ {2, "128-EEA2"},
+ {3, "EEA3"},
+ {4, "EEA4" },
+ {5, "EEA5"},
+ {6, "EEA6"},
+ {7, "EEA7"},
+ {0, NULL}
+};
+
+/* Table 8.38-3: Used Cipher Values */
+static const value_string gtpv2_mm_context_used_cipher_vals[] = {
+ {0, "No ciphering"},
{1, "GEA/1"},
{2, "GEA/2"},
{3, "GEA/3"},
@@ -2641,39 +2683,297 @@ static const value_string gtpv2_mm_context_unipa_vals[] = {
{0, NULL}
};
+/* Helper functions */
+
+/* Figure 8.38-7: Authentication Triplet */
+static int
+dissect_gtpv2_authentication_triplets(tvbuff_t *tvb, proto_tree *tree, int offset, guint8 num_triplet)
+{
+ proto_item *auth_tri_item;
+ proto_tree *auth_tri_tree;
+ int i;
+
+ for (i = 0; i < num_triplet; i++) {
+ auth_tri_item = proto_tree_add_text(tree, tvb, offset, 0, "Authentication Triplet %u", i);
+ auth_tri_tree = proto_item_add_subtree(auth_tri_item, ett_gtpv2_mm_context_auth_tri);
+ /*
+ * Figure 8.38-8: Authentication Quintuplet
+ * 1 to 16 RAND
+ * 17 to 20 SRES
+ * 21 to 28 Kc
+ */
+ proto_tree_add_item(auth_tri_tree, hf_gtpv2_mm_context_rand, tvb, offset, 16, ENC_NA);
+ offset+=16;
+ proto_tree_add_text(auth_tri_tree, tvb, offset, 4, "SRES': %s",tvb_bytes_to_str(tvb, offset, 4));
+ offset+=4;
+ proto_tree_add_text(auth_tri_tree, tvb, offset, 8, "Kc': %s",tvb_bytes_to_str(tvb, offset, 8));
+ offset+=8;
+
+ }
+
+ return offset;
+}
+
+static int
+dissect_gtpv2_authentication_quintuplets(tvbuff_t *tvb, proto_tree *tree, int offset, guint8 nr_qui)
+{
+ proto_item *auth_qui_item;
+ proto_tree *auth_qui_tree;
+ int i;
+ guint8 xres_len, autn_len;
+
+ for (i = 0; i < nr_qui; i++) {
+ auth_qui_item = proto_tree_add_text(tree, tvb, offset, 0, "Authentication Quintuplet %u", i);
+ auth_qui_tree = proto_item_add_subtree(auth_qui_item, ett_gtpv2_mm_context_auth_qui);
+ /*
+ * Figure 8.38-8: Authentication Quintuplet
+ * 1 to 16 RAND
+ * 17 XRES Length
+ * 18 to m XRES
+ * (m+1) to (m+16) CK
+ * (m+17) to (m+32) IK
+ * m+33 AUTN Length
+ * (m+34) to n AUTN
+ */
+ proto_tree_add_item(auth_qui_tree, hf_gtpv2_mm_context_rand, tvb, offset, 16, ENC_NA);
+ offset+=16;
+ xres_len = tvb_get_guint8(tvb,offset);
+ proto_tree_add_item(auth_qui_tree, hf_gtpv2_mm_context_xres_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(auth_qui_tree, hf_gtpv2_mm_context_xres, tvb, offset, xres_len, ENC_BIG_ENDIAN);
+ offset = offset + xres_len;
+ proto_tree_add_item(auth_qui_tree, hf_gtpv2_ck, tvb, offset, 16, ENC_BIG_ENDIAN);
+ offset+=16;
+ proto_tree_add_item(auth_qui_tree, hf_gtpv2_ik, tvb, offset, 16, ENC_BIG_ENDIAN);
+ offset+=16;
+ autn_len = tvb_get_guint8(tvb,offset);
+ proto_tree_add_item(auth_qui_tree, hf_gtpv2_mm_context_autn_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(auth_qui_tree, hf_gtpv2_mm_context_autn, tvb, offset, autn_len, ENC_BIG_ENDIAN);
+ offset = offset + autn_len;
+ }
+
+ return offset;
+
+}
+
+static int
+dissect_gtpv2_authentication_quadruplets(tvbuff_t *tvb, proto_tree *tree, int offset, guint8 nr_qui)
+{
+ proto_item *auth_qua_item;
+ proto_tree *auth_qua_tree;
+ guint8 tmp;
+ int i;
+
+ for (i = 0; i < nr_qui; i++) {
+ auth_qua_item = proto_tree_add_text(tree, tvb, offset, 0, "Authentication Quadruplet");
+ auth_qua_tree = proto_item_add_subtree(auth_qua_item, ett_gtpv2_mm_context_auth_qua);
+
+ proto_tree_add_text(auth_qua_tree, tvb, offset, 16, "RAND: %s",
+ tvb_bytes_to_str(tvb, offset, 16));
+ offset += 16;
+
+ tmp = tvb_get_guint8(tvb, offset++);
+
+ proto_tree_add_text(auth_qua_tree, tvb, offset, tmp, "XRES: %s",
+ tvb_bytes_to_str(tvb, offset, tmp));
+ offset += tmp;
+
+ tmp = tvb_get_guint8(tvb, offset++);
+
+ proto_tree_add_text(auth_qua_tree, tvb, offset, tmp, "AUTN: %s",
+ tvb_bytes_to_str(tvb, offset, tmp));
+ offset += tmp;
+
+ proto_tree_add_item(tree, hf_gtpv2_mm_context_kasme, tvb, offset, 32, ENC_BIG_ENDIAN);
+
+ offset += 32;
+ }
+ return offset;
+}
+
+static const value_string gtpv2_mm_context_higher_br_16mb_flg_vals[] = {
+ {0, "Not allowed"},
+ {1, "Allowed"},
+ {0, NULL}
+};
+
+static int
+dissect_gtpv2_mm_context_common_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, guint8 samb_ri, guint8 uamb_ri)
+{
+ proto_item *net_cap_item, *msnt_cap_item;
+ proto_tree *net_cap_tree, *msnt_cap_tree;
+ guint8 ue_net_cap_len, ms_net_cap_len, mei_len;
+
+ /*
+ * If SAMBRI (Subscribed UE AMBR Indicator), bit 1 of octet 6, is set to "1",
+ * then the Uplink/downlink Subscribed UE AMBR parameter field is present,
+ */
+ if(samb_ri){
+ /* j to (j+3) Uplink Subscribed UE AMBR */
+ proto_tree_add_text(tree, tvb, offset, 4, "Uplink Subscribed UE AMBR: %d Kbps",
+ tvb_get_ntohl(tvb, offset));
+
+ offset += 4;
+ /* (j+4) to (j+7) Downlink Subscribed UE AMBR */
+ proto_tree_add_text(tree, tvb, offset, 4, "Downlink Subscribed UE AMBR: %d Kbps",
+ tvb_get_ntohl(tvb, offset));
+
+ offset += 4;
+ }
+ /*
+ * If UAMBRI (Used UE AMBR Indicator), bit 2 of octet 6, is set to "1",
+ * then the Uplink/downlink Used UE AMBR parameter field is present
+ */
+ if(uamb_ri){
+ /* i to (i+3) Uplink Used UE AMBR */
+ proto_tree_add_text(tree, tvb, offset, 4, "Uplink Used UE AMBR: %d Kbps",
+ tvb_get_ntohl(tvb, offset));
+
+ offset += 4;
+ /* (i+4) to (i+7) Downlink Used UE AMBR */
+ proto_tree_add_text(tree, tvb, offset, 4, "Downlink Used UE AMBR: %d Kbps",
+ tvb_get_ntohl(tvb, offset));
+
+ offset += 4;
+ }
+ /* q Length of UE Network Capability */
+ ue_net_cap_len = tvb_get_guint8(tvb,offset);
+ proto_tree_add_item(tree, hf_gtpv2_mm_context_ue_net_cap_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ /* (q+1) to k UE Network Capability */
+ if(ue_net_cap_len){
+ /* The UE Network Capability coding is specified in clause 9.9.3.34 of 3GPP TS 24.301 [23].
+ * If Length of UE Network Capability is zero, then the UE Network Capability parameter
+ * shall not be present.
+ */
+ net_cap_item = proto_tree_add_text(tree, tvb, offset, ue_net_cap_len, "UE Network Capability");
+ net_cap_tree = proto_item_add_subtree(net_cap_item, ett_gtpv2_mm_context_net_cap);
+ offset+=de_emm_ue_net_cap(tvb, net_cap_tree, pinfo, offset, ue_net_cap_len, NULL, 0);
+ }
+ /* k+1 Length of MS Network Capability */
+ ms_net_cap_len = tvb_get_guint8(tvb,offset);
+ proto_tree_add_item(tree, hf_gtpv2_mm_context_ms_net_cap_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ /* (k+2) to m MS Network Capability
+ * The MS Network Capability coding is specified in clause 10.5.5.12 of 3GPP TS 24.008 [5].
+ * If Length of MS Network Capability is zero, then the MS Network Capability parameter shall not be present.
+ */
+ if(ms_net_cap_len){
+ msnt_cap_item = proto_tree_add_text(tree, tvb, offset, ms_net_cap_len, "MS network capability");
+ msnt_cap_tree = proto_item_add_subtree(msnt_cap_item, ett_gtpv2_ms_network_capability);
+ offset+=de_gmm_ms_net_cap(tvb, msnt_cap_tree, pinfo, offset, ms_net_cap_len, NULL, 0);
+ }
+ /* m+1 Length of Mobile Equipment Identity (MEI) */
+ mei_len = tvb_get_guint8(tvb,offset);
+ proto_tree_add_item(tree, hf_gtpv2_mm_context_mei_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ /* (m+2) to r Mobile Equipment Identity (MEI) */
+ if(mei_len){
+ const gchar *mei_str;
+
+ mei_str = tvb_bcd_dig_to_ep_str( tvb, offset, mei_len, NULL, FALSE);
+ proto_tree_add_string(tree, hf_gtpv2_mei, tvb, offset, mei_len, mei_str);
+ offset = offset + mei_len;
+ }
+ return offset;
+}
+
+static int
+dissect_gtpv2_access_restriction_data(tvbuff_t *tvb, proto_tree *tree, int offset)
+{
+ proto_item *accrstdata_item;
+ proto_tree *accrstdata_tree;
+
+ accrstdata_item = proto_tree_add_text(tree, tvb, offset, 1, "Access restriction data");
+ accrstdata_tree = proto_item_add_subtree(accrstdata_item, ett_gtpv2_access_rest_data);
+ /* Spare HNNA ENA INA GANA GENA UNA */
+ proto_tree_add_bits_item(accrstdata_tree, hf_gtpv2_spare_bits, tvb, (offset<<3), 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(accrstdata_tree, hf_gtpv2_hnna, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(accrstdata_tree, hf_gtpv2_ena, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(accrstdata_tree, hf_gtpv2_ina, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(accrstdata_tree, hf_gtpv2_gana, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(accrstdata_tree, hf_gtpv2_gena, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(accrstdata_tree, hf_gtpv2_una, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ return offset;
+}
+/* Type = 103 (decimal)
+ * Figure 8.38-1: GSM Key and Triplets
+ */
static void
-dissect_gtpv2_mm_context_gsm_t(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
+dissect_gtpv2_mm_context_gsm_t(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- proto_item *flag;
- proto_tree *flag_tree;
- int offset;
+ proto_item *flag;
+ proto_tree *flag_tree;
+ int offset;
+ guint8 oct, drxi, num_triplet, uamb_ri, samb_ri;
offset = 0;
flag = proto_tree_add_text(tree, tvb, offset, 3, "MM Context flags");
flag_tree = proto_item_add_subtree(flag, ett_gtpv2_mm_context_flag);
+ /* Octet 5 */
/* Security Mode | Spare | DRXI | CKSN */
+ drxi = (tvb_get_guint8(tvb,offset) & 0x08)>>3;
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_sm, tvb, offset, 1, ENC_BIG_ENDIAN);
-
proto_tree_add_bits_item(flag_tree, hf_gtpv2_spare_bits, tvb, offset<<3, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_drxi, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_cksn, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
+ /* Octet 6 */
/* Number of Triplet | Spare | UAMB RI | SAMB RI */
+ oct = tvb_get_guint8(tvb,offset);
+ num_triplet = oct>>5;
+ uamb_ri = (oct & 0x02)>>1;
+ samb_ri = oct & 0x01;
+
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_nr_tri, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_bits_item(flag_tree, hf_gtpv2_spare_bits, tvb, offset<<3, 5, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(flag_tree, hf_gtpv2_spare_bits, tvb, (offset<<3)+3, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_uamb_ri, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(flag_tree, hf_gtpv2_mm_context_samb_ri, tvb, (offset<<3)+7, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+
+ /* Octet 7 Spare Used Cipher */
+ proto_tree_add_bits_item(tree, hf_gtpv2_spare_bits, tvb, ((offset<<3)), 5, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(tree, hf_gtpv2_mm_context_used_cipher, tvb, (offset<<3)+7, 1, ENC_BIG_ENDIAN);
offset += 1;
+ /* 8 to 15 Kc */
+ proto_tree_add_text(tree, tvb, offset, 8, "Kc': %s",tvb_bytes_to_str(tvb, offset, 8));
+ offset+=8;
+
+ /* 16 to h Authentication Triplet [0..4] */
+ if(num_triplet){
+ dissect_gtpv2_authentication_triplets(tvb, tree, offset, num_triplet);
+ }
+
+ /*
+ * (h+1) to (h+2) DRX parameter
+ */
+ if(drxi){
+ proto_tree_add_item(tree, hf_gtpv2_mm_context_drx, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+ }
+
+ /* Dissect octet j to r */
+ offset = dissect_gtpv2_mm_context_common_data(tvb, pinfo, tree, offset, samb_ri, uamb_ri);
+
proto_tree_add_text(flag_tree, tvb, offset, -1, "The rest of the IE not dissected yet");
}
+/* Type = 104 (decimal)
+ * Figure 8.38-2: UMTS Key, Used Cipher and Quintuplets
+ */
static void
dissect_gtpv2_mm_context_utms_cq(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- proto_item *flag;
- proto_tree *flag_tree;
- int offset;
+ proto_item *flag;
+ proto_tree *flag_tree;
+ int offset;
+ guint8 oct, drxi, nr_qui, uamb_ri, samb_ri, vdp_len, hbr_len;
offset = 0;
flag = proto_tree_add_text(tree, tvb, offset, 3, "MM Context flags");
@@ -2681,24 +2981,105 @@ dissect_gtpv2_mm_context_utms_cq(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_sm, tvb, offset, 1, ENC_BIG_ENDIAN);
+ /* Octet 5 */
+ drxi = (tvb_get_guint8(tvb,offset) & 0x08)>>3;
proto_tree_add_bits_item(flag_tree, hf_gtpv2_spare_bits, tvb, ((offset<<3)+3), 1, ENC_BIG_ENDIAN);
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_drxi, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_cksn_ksi, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
+ /* Octet 6 */
+ oct = tvb_get_guint8(tvb,offset);
+ nr_qui = oct>>5;
+ uamb_ri = (oct & 0x02)>>1;
+ samb_ri = oct & 0x01;
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_nr_qui, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_bits_item(flag_tree, hf_gtpv2_spare_bits, tvb, offset<<3, 5, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(flag_tree, hf_gtpv2_spare_bits, tvb, (offset<<3)+3, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_uamb_ri, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(flag_tree, hf_gtpv2_mm_context_samb_ri, tvb, (offset<<3)+7, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ /* Octet 7 Spare Used Cipher */
+ proto_tree_add_bits_item(flag_tree, hf_gtpv2_spare_bits, tvb, ((offset<<3)), 5, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(flag_tree, hf_gtpv2_mm_context_used_cipher, tvb, (offset<<3)+7, 1, ENC_BIG_ENDIAN);
offset += 1;
+ /* Octet 8 to 23 CK */
+ proto_tree_add_item(tree, hf_gtpv2_ck, tvb, offset, 16, ENC_BIG_ENDIAN);
+ offset+=16;
+ /* Octet 24 to 39 IK */
+ proto_tree_add_item(tree, hf_gtpv2_ik, tvb, offset, 16, ENC_BIG_ENDIAN);
+ offset+=16;
+
+ /*
+ * 40 to h Authentication Quintuplet [0..4]
+ */
+ if (nr_qui){
+ offset = dissect_gtpv2_authentication_quintuplets(tvb, tree, offset, nr_qui);
+ }
+
+ /*
+ * (h+1) to (h+2) DRX parameter
+ */
+ if(drxi){
+ proto_tree_add_item(tree, hf_gtpv2_mm_context_drx, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+ }
+
+
+ /* Dissect octet j to r */
+ offset = dissect_gtpv2_mm_context_common_data(tvb, pinfo, tree, offset, samb_ri, uamb_ri);
+
+ /* r+1 Spare HNNA ENA INA GANA GENA UNA
+ * The Access restriction data is composed of UNA(UTRAN Not Allowed), GENA(GERAN Not Allowed),
+ * GANA(GAN Not Allowed), INA(I-HSPA-Evolution Not Allowed), ENA(E-UTRAN Not Allowed) and
+ * HNNA(HO-To-Non-3GPPAccess Not Allowed).
+ */
+ if (offset < (gint)length){
+ offset = dissect_gtpv2_access_restriction_data(tvb, tree, offset);
+ }else{
+ return;
+ }
+ if (offset == (gint)length){
+ return;
+ }
+
+ /* r+2 Length of Voice Domain Preference and UE's Usage Setting */
+ vdp_len = tvb_get_guint8(tvb,offset);
+ proto_tree_add_item(tree, hf_gtpv2_mm_context_vdp_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ /* (r+3) to s Voice Domain Preference and UE's Usage Setting */
+ if(vdp_len){
+ proto_tree_add_text(tree, tvb, offset, vdp_len, "Voice Domain Preference and UE's Usage Setting");
+ offset = offset + vdp_len;
+ }
+
+ /* s+1 Length of Higher bitrates than 16 Mbps flag */
+ if (offset == (gint)length){
+ hbr_len = tvb_get_guint8(tvb,offset);
+ proto_tree_add_item(tree, hf_gtpv2_mm_context_higher_br_16mb_flg_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ /* s+2 Higher bitrates than 16 Mbps flag */
+ if(hbr_len){
+ proto_tree_add_item(tree, hf_gtpv2_mm_context_higher_br_16mb_flg, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += hbr_len;
+ }
+ }else{
+ return;
+ }
+
proto_tree_add_text(flag_tree, tvb, offset, -1, "The rest of the IE not dissected yet");
+
}
+/* Type = 105 (decimal)
+ * Figure 8.38-3: GSM Key, Used Cipher and Quintuplets
+ */
static void
dissect_gtpv2_mm_context_gsm_cq(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- proto_item *flag;
- proto_tree *flag_tree;
- int offset;
-
+ proto_item *flag;
+ proto_tree *flag_tree;
+ int offset;
+ guint8 oct, drxi, nr_qui, uamb_ri, samb_ri, vdp_len, hbr_len;
offset = 0;
flag = proto_tree_add_text(tree, tvb, offset, 3, "MM Context flags");
@@ -2706,24 +3087,101 @@ dissect_gtpv2_mm_context_gsm_cq(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_sm, tvb, offset, 1, ENC_BIG_ENDIAN);
+ /* Octet 5 */
+ drxi = (tvb_get_guint8(tvb,offset) & 0x08)>>3;
proto_tree_add_bits_item(flag_tree, hf_gtpv2_spare_bits, tvb, ((offset<<3)+3), 1, ENC_BIG_ENDIAN);
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_drxi, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_cksn_ksi, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
+ /* Octet 6 */
+ oct = tvb_get_guint8(tvb,offset);
+ nr_qui = oct>>5;
+ uamb_ri = (oct & 0x02)>>1;
+ samb_ri = oct & 0x01;
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_nr_qui, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_bits_item(flag_tree, hf_gtpv2_spare_bits, tvb, offset<<3, 5, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(flag_tree, hf_gtpv2_spare_bits, tvb, (offset<<3)+3, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_uamb_ri, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(flag_tree, hf_gtpv2_mm_context_samb_ri, tvb, (offset<<3)+7, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ /* Octet 7 Spare Used Cipher */
+ proto_tree_add_bits_item(flag_tree, hf_gtpv2_spare_bits, tvb, ((offset<<3)), 5, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(flag_tree, hf_gtpv2_mm_context_used_cipher, tvb, (offset<<3)+7, 1, ENC_BIG_ENDIAN);
offset += 1;
+ /* 8 to 15 Kc */
+ proto_tree_add_text(tree, tvb, offset, 8, "Kc': %s",tvb_bytes_to_str(tvb, offset, 8));
+ offset+=8;
+
+ /*
+ * 40 to h Authentication Quintuplet [0..4]
+ */
+ if (nr_qui){
+ offset = dissect_gtpv2_authentication_quintuplets(tvb, tree, offset, nr_qui);
+ }
+
+ /*
+ * (h+1) to (h+2) DRX parameter
+ */
+ if(drxi){
+ proto_tree_add_item(tree, hf_gtpv2_mm_context_drx, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+ }
+
+
+ /* Dissect octet j to r */
+ offset = dissect_gtpv2_mm_context_common_data(tvb, pinfo, tree, offset, samb_ri, uamb_ri);
+
+ /* r+1 Spare HNNA ENA INA GANA GENA UNA
+ * The Access restriction data is composed of UNA(UTRAN Not Allowed), GENA(GERAN Not Allowed),
+ * GANA(GAN Not Allowed), INA(I-HSPA-Evolution Not Allowed), ENA(E-UTRAN Not Allowed) and
+ * HNNA(HO-To-Non-3GPPAccess Not Allowed).
+ */
+ if (offset < (gint)length){
+ offset = dissect_gtpv2_access_restriction_data(tvb, tree, offset);
+ }else{
+ return;
+ }
+ if (offset == (gint)length){
+ return;
+ }
+
+ /* r+2 Length of Voice Domain Preference and UE's Usage Setting */
+ vdp_len = tvb_get_guint8(tvb,offset);
+ proto_tree_add_item(tree, hf_gtpv2_mm_context_vdp_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ /* (r+3) to s Voice Domain Preference and UE's Usage Setting */
+ if(vdp_len){
+ proto_tree_add_text(tree, tvb, offset, vdp_len, "Voice Domain Preference and UE's Usage Setting");
+ offset = offset + vdp_len;
+ }
+
+ /* s+1 Length of Higher bitrates than 16 Mbps flag */
+ if (offset < (gint)length){
+ hbr_len = tvb_get_guint8(tvb,offset);
+ proto_tree_add_item(tree, hf_gtpv2_mm_context_higher_br_16mb_flg_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ /* s+2 Higher bitrates than 16 Mbps flag */
+ if(hbr_len){
+ proto_tree_add_item(tree, hf_gtpv2_mm_context_higher_br_16mb_flg, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += hbr_len;
+ }
+ }else{
+ return;
+ }
proto_tree_add_text(flag_tree, tvb, offset, -1, "The rest of the IE not dissected yet");
}
+/* Type = 106 (decimal)
+ * Figure 8.38-4: UMTS Key and Quintuplets
+ */
static void
-dissect_gtpv2_mm_context_utms_q(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
+dissect_gtpv2_mm_context_utms_q(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, guint8 instance _U_)
{
- proto_item *flag;
- proto_tree *flag_tree;
- int offset;
+ proto_item *flag;
+ proto_tree *flag_tree;
+ int offset;
+ guint8 oct, drxi, nr_qui, uamb_ri, samb_ri, vdp_len, hbr_len;
offset = 0;
flag = proto_tree_add_text(tree, tvb, offset, 3, "MM Context flags");
@@ -2732,34 +3190,111 @@ dissect_gtpv2_mm_context_utms_q(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_sm, tvb, offset, 1, ENC_BIG_ENDIAN);
+ /* Octet 5 */
+ /* Security Mode Spare DRXI KSI */
proto_tree_add_bits_item(flag_tree, hf_gtpv2_spare_bits, tvb, ((offset<<3)+3), 1, ENC_BIG_ENDIAN);
+ drxi = (tvb_get_guint8(tvb,offset) & 0x08)>>3;
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_drxi, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_ksi, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
+ /* Octet 6 */
+ /* Number of Quintuplets Spare UAMB RI SAMB RI */
+ oct = tvb_get_guint8(tvb,offset);
+ nr_qui = oct>>5;
+ uamb_ri = (oct & 0x02)>>1;
+ samb_ri = oct & 0x01;
+
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_nr_qui, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_bits_item(flag_tree, hf_gtpv2_spare_bits, tvb, offset<<3, 5, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(flag_tree, hf_gtpv2_spare_bits, tvb, (offset<<3)+3, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_uamb_ri, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(flag_tree, hf_gtpv2_mm_context_samb_ri, tvb, (offset<<3)+7, 1, ENC_BIG_ENDIAN);
offset += 1;
+ /* Octet 7 Spare */
+ proto_tree_add_item(flag_tree, hf_gtpv2_spare, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset+=1;
+ /* Octet 8 to 23 CK */
+ proto_tree_add_item(tree, hf_gtpv2_ck, tvb, offset, 16, ENC_BIG_ENDIAN);
+ offset+=16;
+ /* Octet 24 to 39 IK */
+ proto_tree_add_item(tree, hf_gtpv2_ik, tvb, offset, 16, ENC_BIG_ENDIAN);
+ offset+=16;
+ /*
+ * 40 to h Authentication Quintuplet [0..4]
+ */
+ if (nr_qui){
+ offset = dissect_gtpv2_authentication_quintuplets(tvb, tree, offset, nr_qui);
+ }
+
+ /*
+ * (h+1) to (h+2) DRX parameter
+ */
+ if(drxi){
+ proto_tree_add_item(tree, hf_gtpv2_mm_context_drx, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+ }
+
+
+ /* Dissect octet j to r */
+ offset = dissect_gtpv2_mm_context_common_data(tvb, pinfo, tree, offset, samb_ri, uamb_ri);
+
+ /* r+1 Spare HNNA ENA INA GANA GENA UNA
+ * The Access restriction data is composed of UNA(UTRAN Not Allowed), GENA(GERAN Not Allowed),
+ * GANA(GAN Not Allowed), INA(I-HSPA-Evolution Not Allowed), ENA(E-UTRAN Not Allowed) and
+ * HNNA(HO-To-Non-3GPPAccess Not Allowed).
+ */
+ if (offset < (gint)length){
+ offset = dissect_gtpv2_access_restriction_data(tvb, tree, offset);
+ }else{
+ return;
+ }
+ if (offset == (gint)length){
+ return;
+ }
+
+ /* r+2 Length of Voice Domain Preference and UE's Usage Setting */
+ vdp_len = tvb_get_guint8(tvb,offset);
+ proto_tree_add_item(tree, hf_gtpv2_mm_context_vdp_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ /* (r+3) to s Voice Domain Preference and UE's Usage Setting */
+ if(vdp_len){
+ proto_tree_add_text(tree, tvb, offset, vdp_len, "Voice Domain Preference and UE's Usage Setting");
+ offset = offset + vdp_len;
+ }
+
+ /* s+1 Length of Higher bitrates than 16 Mbps flag */
+ if (offset < (gint)length){
+ hbr_len = tvb_get_guint8(tvb,offset);
+ proto_tree_add_item(tree, hf_gtpv2_mm_context_higher_br_16mb_flg_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ /* s+2 Higher bitrates than 16 Mbps flag */
+ if(hbr_len){
+ proto_tree_add_item(tree, hf_gtpv2_mm_context_higher_br_16mb_flg, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += hbr_len;
+ }
+ }else{
+ return;
+ }
+
+ /* (s+3) to (n+4) These octet(s) is/are present only if explicitly specified */
proto_tree_add_text(flag_tree, tvb, offset, -1, "The rest of the IE not dissected yet");
+
}
/* 8.38 MM Context
- * EPS Security Context and Quadruplets
+ * Type = 107 (decimal)
+ * Figure 8.38-5: EPS Security Context and Quadruplets
*/
static void
dissect_gtpv2_mm_context_eps_qq(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, guint8 instance _U_)
{
- proto_item *flag_item, *auth_qua_item, *net_cap_item,
- *msnt_cap_item, *accrstdata_item, *vd_pref_item;
- proto_tree *flag_tree, *auth_qua_tree = NULL, *net_cap_tree,
- *msnt_cap_tree, *vd_pref_tree, *accrstdata_tree;
- gint offset;
- guint8 nhi, nr_qua, tmp;
+ proto_item *flag_item;
+ proto_tree *flag_tree;
+ gint offset;
+ guint8 tmp, nhi, drxi, nr_qua, nr_qui, uamb_ri, samb_ri, vdp_len;
offset = 0;
- nhi = (tvb_get_guint8(tvb, offset) & 0x10);
-
flag_item = proto_tree_add_text(tree, tvb, offset, 3, "MM Context flags");
flag_tree = proto_item_add_subtree(flag_item, ett_gtpv2_mm_context_flag);
@@ -2774,6 +3309,9 @@ dissect_gtpv2_mm_context_eps_qq(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
* then the optional parameters NH (Next Hop) and NCC (Next
* Hop Chaining Count) are both present, otherwise their octets are not present.
*/
+ tmp = tvb_get_guint8(tvb,offset);
+ nhi = (tmp&0x10)>>4;
+ drxi = (tmp & 0x08)>>3;
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_drxi, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_ksi_a, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
@@ -2784,9 +3322,11 @@ dissect_gtpv2_mm_context_eps_qq(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
* Number of | Number of | UAMB | OSCI
* Quintuplets | Quadruplet | RI |
*/
- nr_qua = tvb_get_guint8(tvb, offset) & 0x1c;
-
+ tmp = tvb_get_guint8(tvb, offset);
+ nr_qui = (tmp & 0xe0)>>5;
+ nr_qua = tmp & 0x1c;
nr_qua >>= 2;
+ uamb_ri = (tmp & 0x2)>>1;
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_nr_qui, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_nr_qua, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2796,9 +3336,10 @@ dissect_gtpv2_mm_context_eps_qq(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_osci, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
- /* Octet 7 */
+ /* Octet 7 SAMB RI Used NAS integrity protection algorithm Used NAS Cipher*/
/* SAMB RI */
- proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_samb_ri, tvb, offset, 1, ENC_BIG_ENDIAN);
+ samb_ri = tvb_get_guint8(tvb, offset) >> 7;
+ proto_tree_add_bits_item(flag_tree, hf_gtpv2_mm_context_samb_ri, tvb, offset<<3, 1, ENC_BIG_ENDIAN);
/* Used NAS integrity protection algorithm */
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_unipa, tvb, offset, 1, ENC_BIG_ENDIAN);
/* Used NAS Cipher */
@@ -2817,48 +3358,21 @@ dissect_gtpv2_mm_context_eps_qq(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
proto_tree_add_item(tree, hf_gtpv2_mm_context_kasme, tvb, offset, 32, ENC_BIG_ENDIAN);
offset += 32;
- /* Octet 46-g */
-
- /* 1 to 16 RAND
- * 17 XRES Length
- * 18 to k XRES
- * k+1 AUTN Length
- * (k+2) to m AUTN
- * (m+1) to (m+32) Kasme
- */
if ( nr_qua )
{
- auth_qua_item = proto_tree_add_text(tree, tvb, offset, 0, "Authentication Quadruplet");
- auth_qua_tree = proto_item_add_subtree(auth_qua_item, ett_gtpv2_mm_context_auth_qua);
+ offset = dissect_gtpv2_authentication_quadruplets(tvb, tree, offset, nr_qui);
}
- while ( nr_qua-- )
- {
- proto_tree_add_text(auth_qua_tree, tvb, offset, 16, "RAND: %s",
- tvb_bytes_to_str(tvb, offset, 16));
- offset += 16;
-
- tmp = tvb_get_guint8(tvb, offset++);
-
- proto_tree_add_text(auth_qua_tree, tvb, offset, tmp, "XRES: %s",
- tvb_bytes_to_str(tvb, offset, tmp));
- offset += tmp;
-
- tmp = tvb_get_guint8(tvb, offset++);
-
- proto_tree_add_text(auth_qua_tree, tvb, offset, tmp, "AUTN: %s",
- tvb_bytes_to_str(tvb, offset, tmp));
- offset += tmp;
-
- proto_tree_add_item(tree, hf_gtpv2_mm_context_kasme, tvb, offset, 32, ENC_BIG_ENDIAN);
-
- offset += 32;
+ if (nr_qui){
+ offset = dissect_gtpv2_authentication_quintuplets(tvb, tree, offset, nr_qui);
}
/* (h+1) to (h+2) DRX parameter */
- proto_tree_add_text(tree, tvb, offset, 2, "DRX parameter: %s", tvb_bytes_to_str(tvb, offset, 2));
- offset+=2;
+ if(drxi){
+ proto_tree_add_item(tree, hf_gtpv2_mm_context_drx, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+ }
/* Octet p to p+31 & Octet p+32 */
if ( nhi )
@@ -2873,99 +3387,43 @@ dissect_gtpv2_mm_context_eps_qq(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
}
- proto_tree_add_text(tree, tvb, offset, 4, "Uplink Subscriber UE AMBR: %d Kbps",
- tvb_get_ntohl(tvb, offset));
-
- offset += 4;
-
- proto_tree_add_text(tree, tvb, offset, 4, "Downlink Subscriber UE AMBR: %d Kbps",
- tvb_get_ntohl(tvb, offset));
-
- offset += 4;
-
- proto_tree_add_text(tree, tvb, offset, 4, "Uplink Used UE AMBR: %d Kbps",
- tvb_get_ntohl(tvb, offset));
-
- offset += 4;
-
- proto_tree_add_text(tree, tvb, offset, 4, "Downlink Used UE AMBR: %d Kbps",
- tvb_get_ntohl(tvb, offset));
- offset += 4;
-
-
- /* The UE Network Capability coding is specified in clause 9.9.3.34 of 3GPP TS 24.301 [23].
- * If Length of UE Network Capability is zero, then the UE Network Capability parameter shall not be present.
- */
- tmp = tvb_get_guint8(tvb, offset++);
- if ( tmp > 0 ){
- net_cap_item = proto_tree_add_text(tree, tvb, offset, tmp, "UE Network Capability");
- net_cap_tree = proto_item_add_subtree(net_cap_item, ett_gtpv2_mm_context_net_cap);
- offset+=de_emm_ue_net_cap(tvb, net_cap_tree, pinfo, offset, tmp, NULL, 0);
- }
-
- /* The MS Network Capability coding is specified in clause 10.5.5.12 of 3GPP TS 24.008 [5].
- * If Length of MS Network Caapability is zero, then the MS Network Capability parameter shall not be present.
- */
- /* Octet k+1 */
- tmp = tvb_get_guint8(tvb, offset++);
- if ( tmp > 0 ){
-
- msnt_cap_item = proto_tree_add_text(tree, tvb, offset, tmp, "MS network capability");
- msnt_cap_tree = proto_item_add_subtree(msnt_cap_item, ett_gtpv2_ms_network_capability);
- offset+=de_gmm_ms_net_cap(tvb, msnt_cap_tree, pinfo, offset, tmp, NULL, 0);
-
- }
-
- /* Octet m+1
- * The encoding of Mobile Equipment Identity (MEI) field shall be same as specified in clause 8.10 of this
- * specification. If Length of Mobile Equipment Identity is zero, then the Mobile Equipment Identity parameter
- * shall not be present.
- */
- tmp = tvb_get_guint8(tvb, offset++);
- if ( tmp > 0 )
- {
- proto_tree_add_text(tree, tvb, offset, tmp, "Mobile Equipment Identify (MEI): %s",
- tvb_bcd_dig_to_ep_str( tvb, offset, tmp, NULL, ENC_BIG_ENDIAN));
- offset += tmp;
- }
+ /* Dissect octet j to r */
+ offset = dissect_gtpv2_mm_context_common_data(tvb, pinfo, tree, offset, samb_ri, uamb_ri);
/* r+1 Spare HNNA ENA INA GANA GENA UNA */
- if (offset < (gint)length+4){
- accrstdata_item = proto_tree_add_text(tree, tvb, offset, tmp, "Access restriction data");
- accrstdata_tree = proto_item_add_subtree(accrstdata_item, ett_gtpv2_access_rest_data);
- proto_tree_add_item(accrstdata_tree, hf_gtpv2_hnna, tvb, offset, 1, FALSE);
- proto_tree_add_item(accrstdata_tree, hf_gtpv2_ina, tvb, offset, 1, FALSE);
- proto_tree_add_item(accrstdata_tree, hf_gtpv2_ena, tvb, offset, 1, FALSE);
- proto_tree_add_item(accrstdata_tree, hf_gtpv2_gana, tvb, offset, 1, FALSE);
- proto_tree_add_item(accrstdata_tree, hf_gtpv2_gena, tvb, offset, 1, FALSE);
- proto_tree_add_item(accrstdata_tree, hf_gtpv2_una, tvb, offset, 1, FALSE);
- offset++;
+ if (offset < (gint)length){
+ offset = dissect_gtpv2_access_restriction_data(tvb, tree, offset);
}else{
return;
}
- if (offset < (gint)length+4){
- tmp = tvb_get_guint8(tvb, offset++);
- }
- /* The Voice Domain Preference and UE's Usage Setting coding is specified in clause 10.5.5.28 of 3GPP TS 24.008 [5].
- * If Length of Voice Domain Preference and UE's Usage Setting is zero, then the Voice Domain Preference and UE's
- * Usage Setting parameter shall not be present.
- */
- if ( tmp > 0 )
- {
- vd_pref_item = proto_tree_add_text(tree, tvb, offset, tmp, "Voice Domain Preference and UE's Usage Setting");
- vd_pref_tree = proto_item_add_subtree(vd_pref_item, ett_gtpv2_vd_pref);
- de_gmm_voice_domain_pref(tvb, vd_pref_tree, pinfo, offset, tmp, NULL, 0);
+ if (offset == (gint)length){
+ return;
+ }
+
+ /* r+2 Length of Voice Domain Preference and UE's Usage Setting */
+ vdp_len = tvb_get_guint8(tvb,offset);
+ proto_tree_add_item(tree, hf_gtpv2_mm_context_vdp_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ /* (r+3) to s Voice Domain Preference and UE's Usage Setting */
+ if(vdp_len){
+ proto_tree_add_text(tree, tvb, offset, vdp_len, "Voice Domain Preference and UE's Usage Setting");
+ /*offset = offset + vdp_len;*/
}
}
+/*
+ * Type = 108 (decimal)
+ * Figure 8.38-6: UMTS Key, Quadruplets and Quintuplets
+ */
static void
dissect_gtpv2_mm_context_utms_qq(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- proto_item *flag;
- proto_tree *flag_tree;
- guint32 offset;
+ proto_item *flag;
+ proto_tree *flag_tree;
+ guint32 offset;
+ guint8 tmp, drxi, nr_qua, nr_qui, uamb_ri, samb_ri;
offset = 0;
flag = proto_tree_add_text(tree, tvb, offset, 3, "MM Context flags");
@@ -2973,13 +3431,75 @@ dissect_gtpv2_mm_context_utms_qq(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_sm, tvb, offset, 1, ENC_BIG_ENDIAN);
+ /* Octet 5
+ * Security Mode Spare DRXI KSIASME
+ */
+ proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_sm, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(flag_tree, hf_gtpv2_spare_bits, tvb, ((offset<<3)+3), 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_nhi, tvb, offset, 1, ENC_BIG_ENDIAN);
+ /* If NHI (Next Hop Indicator), bit 5 of octet 5, is set to "1",
+ * then the optional parameters NH (Next Hop) and NCC (Next
+ * Hop Chaining Count) are both present, otherwise their octets are not present.
+ */
+ drxi = (tvb_get_guint8(tvb,offset) & 0x08)>>3;
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_drxi, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_ksi_a, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
+
+ /* Octet 6
+ * Bits
+ * 8 7 6 5 4 3 2 1
+ * Number of | Number of | UAMB | SAMB
+ * Quintuplets | Quadruplet | RI | RI
+ */
+ tmp = tvb_get_guint8(tvb, offset);
+ nr_qui = (tmp & 0xe0)>>5;
+ nr_qua = tmp & 0x1c;
+ nr_qua >>= 2;
+ uamb_ri = (tmp & 0x2)>>1;
+ samb_ri = tmp & 0x01;
+
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_nr_qui, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_nr_qua, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(flag_tree, hf_gtpv2_spare_bits, tvb, offset<<3, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flag_tree, hf_gtpv2_mm_context_uamb_ri, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(flag_tree, hf_gtpv2_mm_context_samb_ri, tvb, (offset<<3)+7, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ /* Octet 7 Spare */
+ proto_tree_add_item(flag_tree, hf_gtpv2_spare, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset+=1;
+ /* Octet 8 to 23 CK */
+ proto_tree_add_item(tree, hf_gtpv2_ck, tvb, offset, 16, ENC_BIG_ENDIAN);
+ offset+=16;
+ /* Octet 24 to 39 IK */
+ proto_tree_add_item(tree, hf_gtpv2_ik, tvb, offset, 16, ENC_BIG_ENDIAN);
+ offset+=16;
+
+ if ( nr_qua )
+ {
+ offset = dissect_gtpv2_authentication_quadruplets(tvb, tree, offset, nr_qui);
+ }
+
+ if (nr_qui){
+ offset = dissect_gtpv2_authentication_quintuplets(tvb, tree, offset, nr_qui);
+ }
+
+ /* (h+1) to (h+2) DRX parameter */
+ if(drxi){
+ proto_tree_add_item(tree, hf_gtpv2_mm_context_drx, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+ }
+
+ /* Dissect octet j to r */
+ offset = dissect_gtpv2_mm_context_common_data(tvb, pinfo, tree, offset, samb_ri, uamb_ri);
+
+ /* r+1 Spare HNNA ENA INA GANA GENA UNA */
+ if (offset < (gint)length){
+ offset = dissect_gtpv2_access_restriction_data(tvb, tree, offset);
+ }else{
+ return;
+ }
+
+ proto_tree_add_text(flag_tree, tvb, offset, -1, "The rest of the IE not dissected yet");
}
@@ -2989,9 +3509,9 @@ dissect_gtpv2_mm_context_utms_qq(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr
static void
dissect_gtpv2_PDN_conn(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, proto_item *item, guint16 length, guint8 message_type _U_, guint8 instance _U_)
{
- int offset= 0;
+ int offset = 0;
proto_tree *grouped_tree;
- tvbuff_t *new_tvb;
+ tvbuff_t *new_tvb;
proto_item_append_text(item, "[Grouped IE]");
grouped_tree = proto_item_add_subtree(item, ett_gtpv2_PDN_conn);
@@ -3005,11 +3525,11 @@ dissect_gtpv2_PDN_conn(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_,
static void
dissect_gtpv2_pdn_numbers(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- proto_item *nsapi_ti;
- proto_tree *nsapi_tree;
- guint8 nsapi;
- guint16 dlgtpu_seq, ulgtpu_seq, send_npdu_nr, rec_npdu_nr;
- int offset = 0;
+ proto_item *nsapi_ti;
+ proto_tree *nsapi_tree;
+ guint8 nsapi;
+ guint16 dlgtpu_seq, ulgtpu_seq, send_npdu_nr, rec_npdu_nr;
+ int offset = 0;
nsapi = (tvb_get_guint8(tvb, offset) & 0x08);
nsapi_ti = proto_tree_add_text(tree, tvb, offset, 1, "NSAPI: %d", nsapi);
@@ -3068,7 +3588,7 @@ dissect_gtpv2_p_tmsi_sig(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
static void
dissect_gtpv2_hop_counter(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
+ int offset = 0;
guint8 hop_counter;
hop_counter = tvb_get_guint8(tvb, offset);
@@ -3109,9 +3629,9 @@ dissect_gtpv2_ue_time_zone(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
static void
dissect_gtpv2_trace_reference(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
- guint32 trace_id;
- gchar *mcc_mnc_str;
+ int offset = 0;
+ guint32 trace_id;
+ gchar *mcc_mnc_str;
mcc_mnc_str = dissect_e212_mcc_mnc_ep_str(tvb, pinfo, tree, 0, TRUE);
offset += 3;
@@ -3184,12 +3704,12 @@ static const value_string gtpv2_container_type_vals[] = {
static void
dissect_gtpv2_F_container(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type, guint8 instance _U_)
{
- tvbuff_t *tvb_new;
+ tvbuff_t *tvb_new;
proto_item *bss_item;
proto_tree *sub_tree;
- int offset = 0;
- guint8 container_type;
- guint8 container_flags, xid_len;
+ int offset = 0;
+ guint8 container_type;
+ guint8 container_flags, xid_len;
/* Octets 8 7 6 5 4 3 2 1
* 5 Spare | Container Type
@@ -3293,7 +3813,7 @@ static value_string_ext gtpv2_cause_type_vals_ext = VALUE_STRING_EXT_INIT(gtpv2_
static void
dissect_gtpv2_F_cause(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item, guint16 length, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
+ int offset = 0;
guint8 cause_type;
/* The value of Instance field of the F-Cause IE in a GTPv2 message shall indicate
@@ -3388,8 +3908,8 @@ static void
dissect_gtpv2_target_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, guint8 instance _U_)
{
tvbuff_t *tvb_new;
- int offset = 0;
- guint8 target_type;
+ int offset = 0;
+ guint8 target_type;
proto_tree_add_item(tree, hf_gtpv2_target_type, tvb, 0, 1, ENC_BIG_ENDIAN);
target_type = tvb_get_guint8(tvb,offset);
@@ -3477,8 +3997,8 @@ dissect_gtpv2_pkt_flow_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
static void
dissect_gtpv2_rab_context(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
- guint16 dlgtpu_seq, ulgtpu_seq, dl_pdcp_seq, ul_pdcp_seq;
+ int offset = 0;
+ guint16 dlgtpu_seq, ulgtpu_seq, dl_pdcp_seq, ul_pdcp_seq;
/* 5 Spare NSAPI */
proto_tree_add_bits_item(tree, hf_gtpv2_spare_bits, tvb, offset<<3, 4, ENC_BIG_ENDIAN);
@@ -3550,12 +4070,12 @@ static const value_string gtpv2_selec_mode_vals[] = {
static void
dissect_gtpv2_selec_mode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- int offset=0;
- guint8 ss_mode;
+ int offset = 0;
+ guint8 ss_mode;
ss_mode = tvb_get_guint8(tvb, offset) & 0x03;
proto_tree_add_item(tree, hf_gtpv2_selec_mode, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_item_append_text(item, "%s", val_to_str(ss_mode, gtpv2_selec_mode_vals, "Unknown"));
+ proto_item_append_text(item, "%s", val_to_str_const(ss_mode, gtpv2_selec_mode_vals, "Unknown"));
}
@@ -3572,8 +4092,8 @@ static void
dissect_gtpv2_source_ident(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
proto_item *expert_item;
- int offset=0;
- guint8 source_type;
+ int offset = 0;
+ guint8 source_type;
/* Octet 5 to 12 Target Cell ID */
de_cell_id(tvb, tree, pinfo, offset, 8, NULL, 0);
@@ -3588,7 +4108,7 @@ dissect_gtpv2_source_ident(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
/* The Source Type is Cell ID for PS handover from GERAN A/Gb mode. In this case the coding of the Source ID field
* shall be same as the Octets 3 to 10 of the Cell Identifier IEI in 3GPP TS 48.018 [34].
*/
- de_cell_id(tvb, tree, pinfo, offset, 8, NULL, 0);;
+ de_cell_id(tvb, tree, pinfo, offset, 8, NULL, 0);
break;
case 1:
/* The Source Type is RNC ID for PS handover from GERAN Iu mode or for inter-RAT handover from UTRAN. In this
@@ -3632,7 +4152,7 @@ dissect_gtpv2_bearer_control_mode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_t
proto_tree_add_item(tree, hf_gtpv2_bearer_control_mode, tvb, 0, 1, ENC_BIG_ENDIAN);
/* Add Bearer Control Mode to tree */
bcm = tvb_get_guint8(tvb, 0);
- proto_item_append_text(item, "%s", val_to_str(bcm, gtpv2_bearer_control_mode_short_vals, "Unknown"));
+ proto_item_append_text(item, "%s", val_to_str_const(bcm, gtpv2_bearer_control_mode_short_vals, "Unknown"));
}
/*
@@ -3658,7 +4178,7 @@ dissect_gtpv2_cng_rep_act(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
action = tvb_get_guint8(tvb, 0);
proto_tree_add_item(tree, hf_gtpv2_cng_rep_act, tvb, 0, 1, ENC_BIG_ENDIAN);
- proto_item_append_text(item, "%s", val_to_str(action, gtpv2_cng_rep_act_vals, "Unknown"));
+ proto_item_append_text(item, "%s", val_to_str_const(action, gtpv2_cng_rep_act_vals, "Unknown"));
}
/*
* 8.62 Fully qualified PDN Connection Set Identifier (FQ-CSID)
@@ -3675,9 +4195,9 @@ static void
dissect_gtpv2_fq_csid(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
proto_item *expert_item;
- int offset = 0;
- guint8 octet,node_id_type, csids;
- guint32 node_id, node_id_mcc_mnc;
+ int offset = 0;
+ guint8 octet,node_id_type, csids;
+ guint32 node_id, node_id_mcc_mnc;
/* Octet 5 Node-ID Type Number of CSIDs= m */
@@ -3773,7 +4293,7 @@ dissect_gtpv2_node_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
proto_tree_add_item(tree, hf_gtpv2_node_type, tvb, 0, 1, ENC_BIG_ENDIAN);
/* Append Node Type to tree */
node_type = tvb_get_guint8(tvb, 0);
- proto_item_append_text(item, "%s", val_to_str(node_type, gtpv2_node_type_vals, "Unknown"));
+ proto_item_append_text(item, "%s", val_to_str_const(node_type, gtpv2_node_type_vals, "Unknown"));
}
@@ -3783,8 +4303,8 @@ dissect_gtpv2_node_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
static void
dissect_gtpv2_fqdn(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item, guint16 length, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0, name_len, tmp;
- guint8 *fqdn = NULL;
+ int offset = 0, name_len, tmp;
+ guint8 *fqdn = NULL;
/* The FQDN field encoding shall be identical to the encoding of
* a FQDN within a DNS message of section 3.1 of IETF
@@ -3816,9 +4336,9 @@ dissect_gtpv2_fqdn(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, prot
static void
dissect_gtpv2_private_ext(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
+ int offset = 0;
tvbuff_t *next_tvb;
- guint16 ext_id;
+ guint16 ext_id;
/* oct 5 -7 Enterprise ID */
ext_id = tvb_get_ntohs(tvb, offset);
@@ -3846,23 +4366,18 @@ dissect_gtpv2_ti(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_
/*
* 8.69 MBMS Session Duration
*/
-static void
+void
dissect_gtpv2_mbms_session_duration(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
- int bit_offset = 0;
+ int offset = 0;
+ int bit_offset = 0;
guint32 days;
guint32 hours;
+ guint32 minutes;
guint32 seconds;
-
+
/* From 3GPP TS 29.061 17.7.7 MBMS-Session-Duration AVP */
- /* Total length is three octets; is it suitable to use tvb_get_bits32() in order to extract 24 bits? */
- /* Bits: ssss ssss ssss ssss sddd dddd where s bits = seconds, d bits = days
- * Will tvb_get_bits32() put the bits in the correct positions? For seconds
- * It should be: 0000 0000 0000 000s ssss ssss ssss ssss (maximum = 131,071, maximum allowed = 86,400)
- * But I fear it is: ssss ssss ssss ssss s000 0000 0000 0000 (maximum = a very big number!)
- * For days
- * It should be: 0000 0000 0000 0000 0000 0000 0ddd dddd */
+ /* Bits: ssss ssss ssss ssss sddd dddd where s bits = seconds, d bits = days */
seconds = tvb_get_bits32(tvb, bit_offset, 17, ENC_BIG_ENDIAN);
bit_offset += 17;
@@ -3872,16 +4387,21 @@ dissect_gtpv2_mbms_session_duration(tvbuff_t *tvb, packet_info *pinfo _U_, proto
* Maximum allowed value for seconds: 86,400 */
if((days>18) || (seconds>86400)) {
proto_tree_add_text(tree, tvb, offset, offset+3, "Days or Seconds out or allowed range");
- }
+ }
/* The lowest value of this AVP (i.e. all 0:s) is reserved to indicate an indefinite value to denote sessions that are expected to be always-on. */
- if((seconds&days) == 0xffffffff) {
+ if((seconds == 0) && (days == 0)) {
+ proto_tree_add_item(tree, hf_gtpv2_mbms_session_duration_days, tvb, offset, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gtpv2_mbms_session_duration_secs, tvb, offset, 3, ENC_BIG_ENDIAN);
proto_item_append_text(item, "Indefinite (always-on)");
} else {
- hours = seconds / 60;
- seconds = seconds % 60;
+ hours = seconds / 3600;
+ minutes = (seconds % 3600) / 60;
+ seconds = (seconds % 3600) % 60;
- proto_item_append_text(item, "%d Day(s) %d Hour(s) %d Second(s)", days, hours, seconds);
+ proto_tree_add_item(tree, hf_gtpv2_mbms_session_duration_days, tvb, offset, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gtpv2_mbms_session_duration_secs, tvb, offset, 3, ENC_BIG_ENDIAN);
+ proto_item_append_text(item, "%d days %02d:%02d:%02d (DD days HH:MM:SS)", days, hours, minutes, seconds);
}
offset += 3;
@@ -3892,24 +4412,30 @@ dissect_gtpv2_mbms_session_duration(tvbuff_t *tvb, packet_info *pinfo _U_, proto
/*
* 8.70 MBMS Service Area
*/
-static void
+void
dissect_gtpv2_mbms_service_area(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
+ int offset = 0;
proto_item *sai_item;
+ guint8 binary_nr;
+ guint16 real_nr;
+ guint16 sai;
+
+ binary_nr = tvb_get_guint8(tvb, offset);
+ real_nr = (guint16)binary_nr + 1;
/* 3GPP TS 29.061 17.7.6 MBMS-Service-Area AVP */
- proto_tree_add_item(tree, hf_gtpv2_mbms_service_area_nr, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_string_format(tree, hf_gtpv2_mbms_service_area_nr, tvb, offset, 1, "", "Number of MBMS Service Area codes: %d", real_nr);
offset += 1;
/* A consecutive list of MBMS Service Area Identities follow, each with a length of two octets. */
while(offset<length) {
/* 3GPP TS 23.003 15.3 Structure of MBMS SAI */
- guint16 sai = tvb_get_bits16(tvb, 0, 16, ENC_BIG_ENDIAN);
+ sai = tvb_get_ntohs(tvb, offset);
sai_item = proto_tree_add_item(tree, hf_gtpv2_mbms_service_area_id, tvb, offset, 2, ENC_BIG_ENDIAN);
/* The value 0 denotes the whole of PLMN as the MBMS Service Area */
if(sai == 0) {
- proto_item_append_text(sai_item, "Entire PLMN");
+ proto_item_append_text(sai_item, " Entire PLMN");
}
offset += 2;
}
@@ -3930,7 +4456,7 @@ dissect_gtpv2_mbms_session_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
proto_tree_add_text(tree, tvb, offset, length-1, "Spare: %s", tvb_bytes_to_str(tvb, offset, length-1));
}
-/*
+/*
* 8.72 MBMS Flow Identifier
*/
static void
@@ -3945,7 +4471,7 @@ dissect_gtpv2_mbms_flow_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
proto_tree_add_text(tree, tvb, offset, length-2, "Spare: %s", tvb_bytes_to_str(tvb, offset, length-2));
}
-/*
+/*
* 8.73 MBMS IP Multicast Distribution
*/
static const value_string gtpv2_mbms_hc_indicator_vals[] = {
@@ -3996,7 +4522,7 @@ dissect_gtpv2_mbms_ip_mc_dist(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
}
-/*
+/*
* 8.74 MBMS Distribution Acknowledge
*/
static const value_string gtpv2_mbms_dist_indication_vals[] = {
@@ -4123,16 +4649,17 @@ dissect_gtpv2_node_features(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
/* 8.84
* MBMS Time to Data Transfer
*/
-static void
+void
dissect_gtpv2_mbms_time_to_data_xfer(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
- guint8 binary_secs;
+ int offset = 0;
+ guint8 binary_secs;
guint16 real_secs;
binary_secs = tvb_get_guint8(tvb, offset);
real_secs = (guint16)binary_secs + 1;
- proto_item_append_text(item, "%d second(s)", real_secs);
+
+ proto_tree_add_string_format(tree, hf_gtpv2_time_to_data_xfer, tvb, offset, 1, "", "MBMS Time to Data Transfer: %d second(s)", real_secs);
offset += 1;
if(length > 1)
@@ -4151,14 +4678,18 @@ dissect_gtpv2_throttling(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
}
/* 8.86 Allocation/Retention Priority (ARP) */
-static void
+void
dissect_gtpv2_arp(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- proto_item *expert_item;
+ int offset = 0;
- expert_item = proto_tree_add_text(tree, tvb, 0, length, "IE data not dissected yet");
- expert_add_info_format(pinfo, expert_item, PI_PROTOCOL, PI_NOTE, "IE data not dissected yet");
- PROTO_ITEM_SET_GENERATED(expert_item);
+ proto_tree_add_item(tree, hf_gtpv2_arp_pvi, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gtpv2_arp_pl, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gtpv2_arp_pci, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset += 1;
+ if(length > 1)
+ proto_tree_add_text(tree, tvb, offset, length-1, "Spare: %s", tvb_bytes_to_str(tvb, offset, length-1));
}
/* 8.87 EPC Timer */
@@ -4187,9 +4718,14 @@ dissect_gtpv2_sig_prio_ind(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
static void
dissect_gtpv2_tmgi(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
+ int offset = 0;
+ guint64 tmgi;
+
+ tmgi = tvb_get_ntoh48(tvb, offset);
+
+ proto_item_append_text(item, "%012" G_GINT64_MODIFIER "x", tmgi);
- proto_tree_add_item(tree, hf_gtpv2_mbms_service_id, tvb, offset, 3, ENC_NA);
+ proto_tree_add_item(tree, hf_gtpv2_mbms_service_id, tvb, offset, 3, ENC_BIG_ENDIAN);
offset += 3;
dissect_e212_mcc_mnc(tvb, pinfo, tree, offset, TRUE);
@@ -4206,10 +4742,10 @@ dissect_gtpv2_tmgi(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, prot
static void
dissect_gtpv2_add_mm_cont_for_srvcc(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- int offset = 0;
+ int offset = 0;
proto_item *ms_cm_item;
proto_tree *ms_cm_tree;
- guint8 elm_len;
+ guint8 elm_len;
/* Length of Mobile Station Classmark 2 */
elm_len = tvb_get_guint8(tvb, offset);
@@ -4263,11 +4799,21 @@ dissect_gtpv2_add_flags_for_srvcc(tvbuff_t *tvb, packet_info *pinfo _U_, proto_t
static void
dissect_gtpv2_mmbr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- proto_item *expert_item;
+ int offset = 0;
+ guint32 max_ul;
+ guint32 max_dl;
- expert_item = proto_tree_add_text(tree, tvb, 0, length, "IE data not dissected yet");
- expert_add_info_format(pinfo, expert_item, PI_PROTOCOL, PI_NOTE, "IE data not dissected yet");
- PROTO_ITEM_SET_GENERATED(expert_item);
+ max_ul = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_uint_format(tree, hf_gtpv2_mmbr_ul, tvb, offset, 4, max_ul, "Max MBR/APN-AMBR for uplink : %u %s",
+ (max_ul) > 1000 ? max_ul/1000 : max_ul,
+ (max_ul) > 1000 ? "Mbps" : "kbps");
+
+ offset += 4;
+
+ max_dl = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_uint_format(tree, hf_gtpv2_mmbr_dl, tvb, offset, 4, max_dl, "Max MBR/APN-AMBR for downlink : %u %s",
+ (max_dl) > 1000 ? max_dl/1000 : max_dl,
+ (max_dl) > 1000 ? "Mbps" : "kbps");
}
/* 8.93 MDT Configuration */
@@ -4292,6 +4838,22 @@ dissect_gtpv2_apco(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, prot
PROTO_ITEM_SET_GENERATED(expert_item);
}
+/* 8.95 Absolute Time of MBMS Data Transfer */
+static void
+dissect_gtpv2_abs_mbms_data_tf_time(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
+{
+ int offset = 0;
+ const gchar *time_str;
+
+ time_str = tvb_ntp_fmt_ts(tvb, offset);
+ proto_tree_add_string(tree, hf_gtpv2_abs_time_mbms_data, tvb, offset, 8, time_str);
+ proto_item_append_text(item, "%s", time_str);
+
+ offset += 8;
+ if(length > offset)
+ proto_tree_add_text(tree, tvb, offset, length-offset, "Spare: %s", tvb_bytes_to_str(tvb, offset, length-offset));
+}
+
typedef struct _gtpv2_ie {
int ie_type;
@@ -4410,7 +4972,8 @@ static const gtpv2_ie_t gtpv2_ies[] = {
{GTPV2_IE_MMBR, dissect_gtpv2_mmbr}, /* 161, 8.92 Max MBR/APN-AMBR (MMBR) */
{GTPV2_IE_MDT_CONFIG, dissect_gtpv2_mdt_config}, /* 162, 8.93 MDT Configuration */
{GTPV2_IE_APCO, dissect_gtpv2_apco}, /* 163, 8.94 Additional Protocol Configuration Options (APCO) */
- /* 164-254 Spare. For future use. FFS */
+ {GTPV2_IE_ABS_MBMS_DATA_TF_TIME, dissect_gtpv2_abs_mbms_data_tf_time}, /* 164, 9.95 Absolute Time of MBMS Data Transfer */
+ /* 165-254 Spare. For future use. FFS */
{GTPV2_IE_PRIVATE_EXT,dissect_gtpv2_private_ext},
{0, dissect_gtpv2_unknown}
@@ -4423,10 +4986,10 @@ dissect_gtpv2_ie_common(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree,
{
proto_tree *ie_tree;
proto_item *ti;
- tvbuff_t *ie_tvb;
- guint8 type, instance;
- guint16 length;
- int i;
+ tvbuff_t *ie_tvb;
+ guint8 type, instance;
+ guint16 length;
+ int i;
/*
* Octets 8 7 6 5 4 3 2 1
* 1 Type
@@ -4436,10 +4999,13 @@ dissect_gtpv2_ie_common(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree,
*/
while(offset < (gint)tvb_reported_length(tvb)){
/* Get the type and length */
- type = tvb_get_guint8(tvb,offset);
- length = tvb_get_ntohs(tvb, offset+1);
- ti = proto_tree_add_text(tree, tvb, offset, 4 + length, "%s : ", val_to_str(type, gtpv2_element_type_vals, "Unknown"));
+
+ type = tvb_get_guint8(tvb,offset);
+ length = tvb_get_ntohs(tvb, offset+1);
+ ti = proto_tree_add_text(tree, tvb, offset, 4 + length, "%s : ",
+ val_to_str_const(type, gtpv2_element_type_vals, "Unknown"));
ie_tree = proto_item_add_subtree(ti, ett_gtpv2_ie);
+
/* Octet 1 */
proto_tree_add_item(ie_tree, hf_gtpv2_ie, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
@@ -4460,7 +5026,8 @@ dissect_gtpv2_ie_common(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree,
proto_tree_add_text(ie_tree, tvb, offset, length, "IE type Zero is Reserved and should not be used");
}else{
i = -1;
- /* Loop over the IE dissector list to se if we find an entry, the last entry will have ie_type=0 breaking the loop */
+ /* Loop over the IE dissector list to se if we find an entry;
+ the last entry will have ie_type=0 breaking the loop */
while (gtpv2_ies[++i].ie_type){
if (gtpv2_ies[i].ie_type == type)
break;
@@ -4479,9 +5046,9 @@ dissect_gtpv2(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
{
proto_tree *gtpv2_tree, *flags_tree;
proto_item *ti, *tf;
- guint8 message_type, t_flag, p_flag;
- int offset = 0;
- guint16 msg_length;
+ guint8 message_type, t_flag, p_flag;
+ int offset = 0;
+ guint16 msg_length;
tvbuff_t *msg_tvb;
@@ -4491,7 +5058,7 @@ dissect_gtpv2(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
/* message type is in octet 2 */
message_type = tvb_get_guint8(tvb,1);
- col_add_str(pinfo->cinfo, COL_INFO, val_to_str(message_type, gtpv2_message_type_vals, "Unknown"));
+ col_add_str(pinfo->cinfo, COL_INFO, val_to_str_const(message_type, gtpv2_message_type_vals, "Unknown"));
p_flag = (tvb_get_guint8(tvb,offset) & 0x10)>>4;
@@ -4499,7 +5066,8 @@ dissect_gtpv2(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
proto_tree_add_item(tree, proto_gtpv2, tvb, offset, msg_length+4, ENC_NA);
if (tree) {
- ti = proto_tree_add_text(tree, tvb, offset, msg_length+4, "%s", val_to_str(message_type, gtpv2_message_type_vals, "Unknown"));
+ ti = proto_tree_add_text(tree, tvb, offset, msg_length+4, "%s",
+ val_to_str_const(message_type, gtpv2_message_type_vals, "Unknown"));
gtpv2_tree = proto_item_add_subtree(ti, ett_gtpv2);
/* Control Plane GTP uses a variable length header. Control Plane GTP header
@@ -4551,19 +5119,22 @@ dissect_gtpv2(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
dissect_gtpv2_ie_common(msg_tvb, pinfo, gtpv2_tree, offset, message_type);
}else{
dissect_gtpv2_ie_common(tvb, pinfo, gtpv2_tree, offset, message_type);
- }
+ }
}
- /* Bit 5 represents a "P" flag. If the "P" flag is set to "0",
+ /* Bit 5 represents a "P" flag. If the "P" flag is set to "0",
* no piggybacked message shall be present. If the "P" flag is set to "1",
- * then another GTPv2-C message with its own header and body shall be present
+ * then another GTPv2-C message with its own header and body shall be present
* at the end of the current message.
*/
if(p_flag){
tvbuff_t *new_p_tvb;
- /* Octets 3 to 4 represent the Length field. This field shall indicate the length of the message in octets excluding the
+ /* Octets 3 to 4 represent the Length field. This field shall indicate the
+ * length of the message in octets excluding the
* mandatory part of the GTP-C header (the first 4 octets).
*/
new_p_tvb = tvb_new_subset_remaining(tvb,msg_length+4);
+ col_append_str(pinfo->cinfo, COL_INFO, " / ");
+ col_set_fence(pinfo->cinfo, COL_INFO);
dissect_gtpv2(new_p_tvb, pinfo, tree);
}
@@ -4711,12 +5282,12 @@ void proto_register_gtpv2(void)
},
{ &hf_gtpv2_ck,
{"CK", "gtpv2.ck",
- FT_UINT32, BASE_DEC, NULL, 0x0,
+ FT_BYTES, BASE_NONE, NULL, 0x0,
NULL, HFILL}
},
{ &hf_gtpv2_ik,
{"IK", "gtpv2.ik",
- FT_UINT32, BASE_DEC, NULL, 0x0,
+ FT_BYTES, BASE_NONE, NULL, 0x0,
NULL, HFILL}
},
{ &hf_gtpv2_len_ms_classmark2,
@@ -4739,11 +5310,6 @@ void proto_register_gtpv2(void)
FT_UINT8, BASE_DEC, NULL, 0x0F,
NULL, HFILL}
},
-/* { &hf_gtpv2_kc,
- {"Kc'", "gtpv2.kc",
- FT_UINT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL}
- },*/
{ &hf_gtpv2_cksn,
{"CKSN'", "gtpv2.cksn",
FT_UINT8, BASE_DEC, NULL, 0x0,
@@ -5320,7 +5886,7 @@ void proto_register_gtpv2(void)
},
{&hf_gtpv2_bearer_qos_pvi,
{"PVI (Pre-emption Vulnerability)", "gtpv2.bearer_qos_pvi",
- FT_BOOLEAN, 8, NULL, 0x01,
+ FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
NULL, HFILL}
},
{&hf_gtpv2_bearer_qos_pl,
@@ -5330,7 +5896,7 @@ void proto_register_gtpv2(void)
},
{&hf_gtpv2_bearer_qos_pci,
{"PCI (Pre-emption Capability)", "gtpv2.bearer_qos_pci",
- FT_BOOLEAN, 8, NULL, 0x40,
+ FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x40,
NULL, HFILL}
},
{&hf_gtpv2_bearer_qos_label_qci,
@@ -5614,6 +6180,11 @@ void proto_register_gtpv2(void)
FT_UINT8, BASE_DEC, NULL, 0xe0,
NULL, HFILL}
},
+ { &hf_gtpv2_mm_context_used_cipher,
+ {"Used Cipher", "gtpv2.mm_context_used_cipher",
+ FT_UINT8, BASE_DEC, VALS(gtpv2_mm_context_used_cipher_vals), 0x07,
+ NULL, HFILL}
+ },
{ &hf_gtpv2_mm_context_unipa,
{"Used NAS integrity protection algorithm", "gtpv2.mm_context_unipa",
FT_UINT8, BASE_DEC, VALS(gtpv2_mm_context_unipa_vals), 0x70,
@@ -5640,33 +6211,84 @@ void proto_register_gtpv2(void)
FT_BYTES, BASE_NONE, NULL,0x0,
NULL, HFILL}
},
+ { &hf_gtpv2_mm_context_rand,
+ {"RAND","gtpv2.mm_context_rand",
+ FT_BYTES, BASE_NONE, NULL,0x0,
+ NULL, HFILL}
+ },
+ { &hf_gtpv2_mm_context_xres_len,
+ {"XRES Length", "gtpv2.mm_context_xres_len",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gtpv2_mm_context_xres,
+ {"XRES","gtpv2.mm_context_xres",
+ FT_BYTES, BASE_NONE, NULL,0x0,
+ NULL, HFILL}
+ },
+ { &hf_gtpv2_mm_context_autn_len,
+ {"AUTN Length", "gtpv2.mm_context_autn_len",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gtpv2_mm_context_autn,
+ {"AUTN","gtpv2.mm_context_autn",
+ FT_BYTES, BASE_NONE, NULL,0x0,
+ NULL, HFILL}
+ },
+ { &hf_gtpv2_mm_context_drx,
+ {"DRX", "gtpv2.mm_context_drx",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gtpv2_mm_context_ue_net_cap_len,
+ {"Length of UE Network Capability", "gtpv2.mm_context_ue_net_cap_len",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gtpv2_mm_context_ms_net_cap_len,
+ {"Length of MS Network Capability", "gtpv2.mm_context_ms_net_cap_len",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gtpv2_mm_context_mei_len,
+ {"Length of Mobile Equipment Identity (MEI)", "gtpv2.mm_context_mei_len",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gtpv2_mm_context_vdp_len,
+ {"Length of Voice Domain Preference and UE's Usage Setting", "gtpv2.mm_context_vdp_len",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
{ &hf_gtpv2_una,
{ "UTRAN", "gtpv2.mm_context.una",
- FT_BOOLEAN, 8, TFS(&tfs_allowed_not_allowed), 0x01,
- NULL, HFILL }},
+ FT_BOOLEAN, 8, TFS(&tfs_not_allowed_allowed), 0x01,
+ NULL, HFILL }
+ },
{ &hf_gtpv2_gena,
{ "GERAN", "gtpv2.mm_context.gena",
- FT_BOOLEAN, 8, TFS(&tfs_allowed_not_allowed), 0x02,
+ FT_BOOLEAN, 8, TFS(&tfs_not_allowed_allowed), 0x02,
NULL, HFILL }
},
{ &hf_gtpv2_gana,
{ "GAN", "gtpv2.mm_context.gana",
- FT_BOOLEAN, 8, TFS(&tfs_allowed_not_allowed), 0x04,
+ FT_BOOLEAN, 8, TFS(&tfs_not_allowed_allowed), 0x04,
NULL, HFILL }
},
{ &hf_gtpv2_ina,
{ "I-HSPA-EVOLUTION", "gtpv2.mm_context.ina",
- FT_BOOLEAN, 8, TFS(&tfs_allowed_not_allowed), 0x08,
+ FT_BOOLEAN, 8, TFS(&tfs_not_allowed_allowed), 0x08,
NULL, HFILL }
},
{ &hf_gtpv2_ena,
{ "E-UTRAN", "gtpv2.mm_context.ena",
- FT_BOOLEAN, 8, TFS(&tfs_allowed_not_allowed), 0x10,
+ FT_BOOLEAN, 8, TFS(&tfs_not_allowed_allowed), 0x10,
NULL, HFILL }
},
{ &hf_gtpv2_hnna,
{ "HO-toNone3GPP-Access", "gtpv2.mm_context.hnna",
- FT_BOOLEAN, 8, TFS(&tfs_allowed_not_allowed), 0x20,
+ FT_BOOLEAN, 8, TFS(&tfs_not_allowed_allowed), 0x20,
NULL, HFILL }
},
{ &hf_gtpv2_mm_context_ksi,
@@ -5697,10 +6319,10 @@ void proto_register_gtpv2(void)
},
{ &hf_gtpv2_mm_context_samb_ri,
{"SAMB RI", "gtpv2.mm_context_samb_ri",
- FT_BOOLEAN, 8, NULL, 0x80,
+ FT_BOOLEAN, 8, NULL, 0x0,
NULL, HFILL}
},
- {&hf_gtpv2_ue_time_zone_dst,
+ { &hf_gtpv2_ue_time_zone_dst,
{"Daylight Saving Time","gtpv2.ue_time_zone_dst",
FT_UINT8, BASE_DEC, VALS(gtpv2_ue_time_zone_dst_vals),0x03,
NULL, HFILL}
@@ -5897,7 +6519,7 @@ void proto_register_gtpv2(void)
},
{ &hf_gtpv2_mbms_service_area_nr,
{"Number of MBMS Service Area codes", "gtpv2.mbms_service_area_nr",
- FT_UINT8, BASE_DEC, NULL, 0x0,
+ FT_STRING, BASE_NONE, NULL, 0x0,
NULL, HFILL}
},
{ &hf_gtpv2_mbms_service_area_id,
@@ -5916,7 +6538,7 @@ void proto_register_gtpv2(void)
NULL, HFILL}
},
{ &hf_gtpv2_cteid,
- {"Common Tunnel Endpoint Identifiere", "gtpv2.cetid",
+ {"Common Tunnel Endpoint Identifier", "gtpv2.cetid",
FT_UINT32, BASE_DEC, NULL, 0x0,
NULL, HFILL}
},
@@ -5975,6 +6597,61 @@ void proto_register_gtpv2(void)
FT_BOOLEAN, 8, NULL, 0x02,
NULL, HFILL}
},
+ { &hf_gtpv2_abs_time_mbms_data,
+ {"Absolute Time of MBMS Data Transfer", "gtpv2.abs_time_mbms_data",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL}
+ },
+ { &hf_gtpv2_mbms_session_duration_days,
+ {"MBMS Session Duration (days)", "gtpv2.mbms_session_duration_days",
+ FT_UINT24, BASE_DEC, NULL, 0x00007F,
+ NULL, HFILL}
+ },
+ { &hf_gtpv2_mbms_session_duration_secs,
+ {"MBMS Session Duration (seconds)", "gtpv2.mbms_session_duration_secs",
+ FT_UINT24, BASE_DEC, NULL, 0xFFFF80,
+ NULL, HFILL}
+ },
+ { &hf_gtpv2_time_to_data_xfer,
+ {"MBMS Time to Data Transfer", "gtpv2.time_to_data_xfer",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL}
+ },
+ { &hf_gtpv2_arp_pvi,
+ {"Pre-emption Vulnerability (PVI)", "gtpv2.arp_pvi",
+ FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
+ NULL, HFILL}
+ },
+ { &hf_gtpv2_arp_pl,
+ {"Priority Level", "gtpv2.arp_pl",
+ FT_UINT8, BASE_DEC, NULL, 0x3c,
+ NULL, HFILL}
+ },
+ { &hf_gtpv2_arp_pci,
+ {"Pre-emption Capability (PCI)", "gtpv2.arp_pci",
+ FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x40,
+ NULL, HFILL}
+ },
+ { &hf_gtpv2_mm_context_higher_br_16mb_flg_len,
+ {"Length of Higher bitrates than 16 Mbps flag", "gtpv2.mm_context_higher_br_16mb_flg_len",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gtpv2_mm_context_higher_br_16mb_flg,
+ {"Higher bitrates than 16 Mbps flag", "gtpv2.mm_context_higher_br_16mb_flg_len",
+ FT_UINT8, BASE_DEC, VALS(gtpv2_mm_context_higher_br_16mb_flg_vals), 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gtpv2_mmbr_ul,
+ {"Max MBR/APN-AMBR for uplink", "gtpv2.mmbr_ul",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gtpv2_mmbr_dl,
+ {"Max MBR/APN-AMBR for downlink", "gtpv2.mmbr_dl",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
};
static gint *ett_gtpv2_array[] = {
@@ -6012,6 +6689,8 @@ void proto_register_gtpv2(void)
&ett_gtpv2_supp_codec_list,
&ett_gtpv2_bss_con,
&ett_gtpv2_mm_context_auth_qua,
+ &ett_gtpv2_mm_context_auth_qui,
+ &ett_gtpv2_mm_context_auth_tri,
&ett_gtpv2_mm_context_net_cap,
&ett_gtpv2_ms_network_capability,
&ett_gtpv2_vd_pref,
diff --git a/epan/dissectors/packet-gtpv2.h b/epan/dissectors/packet-gtpv2.h
new file mode 100644
index 0000000000..319df06d40
--- /dev/null
+++ b/epan/dissectors/packet-gtpv2.h
@@ -0,0 +1,27 @@
+/* packet-gtpv2.h
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+extern void dissect_gtpv2_mbms_service_area(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_);
+extern void dissect_gtpv2_mbms_session_duration(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_);
+extern void dissect_gtpv2_mbms_time_to_data_xfer(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_);
+extern void dissect_gtpv2_arp(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_);
diff --git a/epan/dissectors/packet-gvrp.c b/epan/dissectors/packet-gvrp.c
index c2b0495f09..a61e9316e5 100644
--- a/epan/dissectors/packet-gvrp.c
+++ b/epan/dissectors/packet-gvrp.c
@@ -27,8 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
@@ -52,55 +50,58 @@ static gint ett_gvrp_attribute = -1;*/
static dissector_handle_t data_handle;
/* Constant definitions */
-#define GARP_DEFAULT_PROTOCOL_ID 0x0001
-#define GARP_END_OF_MARK 0x00
+#define GARP_DEFAULT_PROTOCOL_ID 0x0001
+#define GARP_END_OF_MARK 0x00
-#define GVRP_ATTRIBUTE_TYPE 0x01
+#define GVRP_ATTRIBUTE_TYPE 0x01
static const value_string attribute_type_vals[] = {
- { GVRP_ATTRIBUTE_TYPE, "VID" },
- { 0, NULL }
+ { GVRP_ATTRIBUTE_TYPE, "VID" },
+ { 0, NULL }
};
/* The length of GVRP LeaveAll attribute should be 2 octets (one for length
* and the other for event) */
-#define GVRP_LENGTH_LEAVEALL (sizeof(guint8)+sizeof(guint8))
+#define GVRP_LENGTH_LEAVEALL (sizeof(guint8)+sizeof(guint8))
/* The length of GVRP attribute other than LeaveAll should be 4 octets (one
* for length, one for event, and the last two for VID value).
*/
-#define GVRP_LENGTH_NON_LEAVEALL (sizeof(guint8)+sizeof(guint8)+sizeof(guint16))
+#define GVRP_LENGTH_NON_LEAVEALL (sizeof(guint8)+sizeof(guint8)+sizeof(guint16))
/* Packet offset definitions */
-#define GARP_PROTOCOL_ID 0
+#define GARP_PROTOCOL_ID 0
/* Event definitions */
-#define GVRP_EVENT_LEAVEALL 0
-#define GVRP_EVENT_JOINEMPTY 1
-#define GVRP_EVENT_JOININ 2
-#define GVRP_EVENT_LEAVEEMPTY 3
-#define GVRP_EVENT_LEAVEIN 4
-#define GVRP_EVENT_EMPTY 5
+#define GVRP_EVENT_LEAVEALL 0
+#define GVRP_EVENT_JOINEMPTY 1
+#define GVRP_EVENT_JOININ 2
+#define GVRP_EVENT_LEAVEEMPTY 3
+#define GVRP_EVENT_LEAVEIN 4
+#define GVRP_EVENT_EMPTY 5
static const value_string event_vals[] = {
- { GVRP_EVENT_LEAVEALL, "Leave All" },
- { GVRP_EVENT_JOINEMPTY, "Join Empty" },
- { GVRP_EVENT_JOININ, "Join In" },
- { GVRP_EVENT_LEAVEEMPTY, "Leave Empty" },
- { GVRP_EVENT_LEAVEIN, "Leave In" },
- { GVRP_EVENT_EMPTY, "Empty" },
- { 0, NULL }
+ { GVRP_EVENT_LEAVEALL, "Leave All" },
+ { GVRP_EVENT_JOINEMPTY, "Join Empty" },
+ { GVRP_EVENT_JOININ, "Join In" },
+ { GVRP_EVENT_LEAVEEMPTY, "Leave Empty" },
+ { GVRP_EVENT_LEAVEIN, "Leave In" },
+ { GVRP_EVENT_EMPTY, "Empty" },
+ { 0, NULL }
};
/* Code to actually dissect the packets */
static void
dissect_gvrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti;
- proto_tree *gvrp_tree;
- guint16 protocol_id;
- guint8 octet;
- int msg_index, attr_index, offset = 0, length = tvb_reported_length(tvb);
+ proto_item *ti;
+ proto_tree *gvrp_tree;
+ guint16 protocol_id;
+ guint8 octet;
+ int msg_index;
+ int attr_index;
+ int offset = 0;
+ int length = tvb_reported_length(tvb);
col_set_str(pinfo->cinfo, COL_PROTOCOL, "GVRP");
@@ -108,185 +109,185 @@ dissect_gvrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (tree)
{
- ti = proto_tree_add_item(tree, proto_gvrp, tvb, 0, length, ENC_NA);
-
- gvrp_tree = proto_item_add_subtree(ti, ett_gvrp);
-
- /* Read in GARP protocol ID */
- protocol_id = tvb_get_ntohs(tvb, GARP_PROTOCOL_ID);
-
- proto_tree_add_uint_format(gvrp_tree, hf_gvrp_proto_id, tvb,
- GARP_PROTOCOL_ID, sizeof(guint16),
- protocol_id,
- "Protocol Identifier: 0x%04x (%s)",
- protocol_id,
- protocol_id == GARP_DEFAULT_PROTOCOL_ID ?
- "GARP VLAN Registration Protocol" :
- "Unknown Protocol");
-
- /* Currently only one protocol ID is supported */
- if (protocol_id != GARP_DEFAULT_PROTOCOL_ID)
- {
- proto_tree_add_text(gvrp_tree, tvb, GARP_PROTOCOL_ID, sizeof(guint16),
- " (Warning: this version of Wireshark only knows about protocol id = 1)");
- call_dissector(data_handle,
- tvb_new_subset(tvb, GARP_PROTOCOL_ID + sizeof(guint16), -1, -1),
- pinfo, tree);
- return;
- }
-
- offset += sizeof(guint16);
- length -= sizeof(guint16);
-
- msg_index = 0;
-
- /* Begin to parse GARP messages */
- while (length)
- {
- proto_item *msg_item;
- int msg_start = offset;
-
- /* Read in attribute type. */
- octet = tvb_get_guint8(tvb, offset);
-
- /* Check for end of mark */
- if (octet == GARP_END_OF_MARK)
- {
- /* End of GARP PDU */
- if (msg_index)
- {
- proto_tree_add_text(gvrp_tree, tvb, offset, sizeof(guint8),
- "End of mark");
- break;
- }
- else
- {
- call_dissector(data_handle,
- tvb_new_subset_remaining(tvb, offset), pinfo, tree);
- return;
- }
- }
-
- offset += sizeof(guint8);
- length -= sizeof(guint8);
-
- msg_item = proto_tree_add_text(gvrp_tree, tvb, msg_start, -1,
- "Message %d", msg_index + 1);
-
- proto_tree_add_uint(gvrp_tree, hf_gvrp_attribute_type, tvb,
- msg_start, sizeof(guint8), octet);
-
- /* GVRP only supports one attribute type. */
- if (octet != GVRP_ATTRIBUTE_TYPE)
- {
- call_dissector(data_handle, tvb_new_subset_remaining(tvb, offset),
- pinfo, tree);
- return;
- }
-
- attr_index = 0;
-
- while (length)
- {
- int attr_start = offset;
- proto_item *attr_item;
-
- /* Read in attribute length. */
- octet = tvb_get_guint8(tvb, offset);
-
- /* Check for end of mark */
- if (octet == GARP_END_OF_MARK)
- {
- /* If at least one message has been already read,
- * check for another end of mark.
- */
- if (attr_index)
- {
- proto_tree_add_text(gvrp_tree, tvb, offset,
- sizeof(guint8), " End of mark");
-
- offset += sizeof(guint8);
- length -= sizeof(guint8);
-
- proto_item_set_len(msg_item, offset - msg_start);
- break;
- }
- else
- {
- call_dissector(data_handle,
- tvb_new_subset_remaining(tvb, offset), pinfo, tree);
- return;
- }
- }
- else
- {
- guint8 event;
-
- offset += sizeof(guint8);
- length -= sizeof(guint8);
-
- attr_item = proto_tree_add_text(gvrp_tree, tvb,
- attr_start, -1, " Attribute %d", attr_index + 1);
-
- proto_tree_add_uint(gvrp_tree, hf_gvrp_attribute_length,
- tvb, attr_start, sizeof(guint8), octet);
-
- /* Read in attribute event */
- event = tvb_get_guint8(tvb, offset);
-
- proto_tree_add_uint(gvrp_tree, hf_gvrp_attribute_event,
- tvb, offset, sizeof(guint8), event);
-
- offset += sizeof(guint8);
- length -= sizeof(guint8);
-
- switch (event) {
-
- case GVRP_EVENT_LEAVEALL:
- if (octet != GVRP_LENGTH_LEAVEALL)
- {
- call_dissector(data_handle,
- tvb_new_subset_remaining(tvb, offset), pinfo,
- tree);
- return;
- }
- break;
-
- case GVRP_EVENT_JOINEMPTY:
- case GVRP_EVENT_JOININ:
- case GVRP_EVENT_LEAVEEMPTY:
- case GVRP_EVENT_LEAVEIN:
- case GVRP_EVENT_EMPTY:
- if (octet != GVRP_LENGTH_NON_LEAVEALL)
- {
- call_dissector(data_handle,
- tvb_new_subset_remaining(tvb, offset),pinfo,
- tree);
- return;
- }
-
- /* Show attribute value */
- proto_tree_add_item(gvrp_tree, hf_gvrp_attribute_value,
- tvb, offset, sizeof(guint16), ENC_BIG_ENDIAN);
-
- offset += sizeof(guint16);
- length -= sizeof(guint16);
- break;
-
- default:
- call_dissector(data_handle,
- tvb_new_subset_remaining(tvb, offset), pinfo, tree);
- return;
- }
- }
-
- proto_item_set_len(attr_item, offset - attr_start);
-
- attr_index++;
- }
-
- msg_index++;
- }
+ ti = proto_tree_add_item(tree, proto_gvrp, tvb, 0, length, ENC_NA);
+
+ gvrp_tree = proto_item_add_subtree(ti, ett_gvrp);
+
+ /* Read in GARP protocol ID */
+ protocol_id = tvb_get_ntohs(tvb, GARP_PROTOCOL_ID);
+
+ proto_tree_add_uint_format(gvrp_tree, hf_gvrp_proto_id, tvb,
+ GARP_PROTOCOL_ID, sizeof(guint16),
+ protocol_id,
+ "Protocol Identifier: 0x%04x (%s)",
+ protocol_id,
+ protocol_id == GARP_DEFAULT_PROTOCOL_ID ?
+ "GARP VLAN Registration Protocol" :
+ "Unknown Protocol");
+
+ /* Currently only one protocol ID is supported */
+ if (protocol_id != GARP_DEFAULT_PROTOCOL_ID)
+ {
+ proto_tree_add_text(gvrp_tree, tvb, GARP_PROTOCOL_ID, sizeof(guint16),
+ " (Warning: this version of Wireshark only knows about protocol id = 1)");
+ call_dissector(data_handle,
+ tvb_new_subset(tvb, GARP_PROTOCOL_ID + sizeof(guint16), -1, -1),
+ pinfo, tree);
+ return;
+ }
+
+ offset += sizeof(guint16);
+ length -= sizeof(guint16);
+
+ msg_index = 0;
+
+ /* Begin to parse GARP messages */
+ while (length)
+ {
+ proto_item *msg_item;
+ int msg_start = offset;
+
+ /* Read in attribute type. */
+ octet = tvb_get_guint8(tvb, offset);
+
+ /* Check for end of mark */
+ if (octet == GARP_END_OF_MARK)
+ {
+ /* End of GARP PDU */
+ if (msg_index)
+ {
+ proto_tree_add_text(gvrp_tree, tvb, offset, sizeof(guint8),
+ "End of mark");
+ break;
+ }
+ else
+ {
+ call_dissector(data_handle,
+ tvb_new_subset_remaining(tvb, offset), pinfo, tree);
+ return;
+ }
+ }
+
+ offset += sizeof(guint8);
+ length -= sizeof(guint8);
+
+ msg_item = proto_tree_add_text(gvrp_tree, tvb, msg_start, -1,
+ "Message %d", msg_index + 1);
+
+ proto_tree_add_uint(gvrp_tree, hf_gvrp_attribute_type, tvb,
+ msg_start, sizeof(guint8), octet);
+
+ /* GVRP only supports one attribute type. */
+ if (octet != GVRP_ATTRIBUTE_TYPE)
+ {
+ call_dissector(data_handle, tvb_new_subset_remaining(tvb, offset),
+ pinfo, tree);
+ return;
+ }
+
+ attr_index = 0;
+
+ while (length)
+ {
+ int attr_start = offset;
+ proto_item *attr_item;
+
+ /* Read in attribute length. */
+ octet = tvb_get_guint8(tvb, offset);
+
+ /* Check for end of mark */
+ if (octet == GARP_END_OF_MARK)
+ {
+ /* If at least one message has been already read,
+ * check for another end of mark.
+ */
+ if (attr_index)
+ {
+ proto_tree_add_text(gvrp_tree, tvb, offset,
+ sizeof(guint8), " End of mark");
+
+ offset += sizeof(guint8);
+ length -= sizeof(guint8);
+
+ proto_item_set_len(msg_item, offset - msg_start);
+ break;
+ }
+ else
+ {
+ call_dissector(data_handle,
+ tvb_new_subset_remaining(tvb, offset), pinfo, tree);
+ return;
+ }
+ }
+ else
+ {
+ guint8 event;
+
+ offset += sizeof(guint8);
+ length -= sizeof(guint8);
+
+ attr_item = proto_tree_add_text(gvrp_tree, tvb,
+ attr_start, -1, " Attribute %d", attr_index + 1);
+
+ proto_tree_add_uint(gvrp_tree, hf_gvrp_attribute_length,
+ tvb, attr_start, sizeof(guint8), octet);
+
+ /* Read in attribute event */
+ event = tvb_get_guint8(tvb, offset);
+
+ proto_tree_add_uint(gvrp_tree, hf_gvrp_attribute_event,
+ tvb, offset, sizeof(guint8), event);
+
+ offset += sizeof(guint8);
+ length -= sizeof(guint8);
+
+ switch (event) {
+
+ case GVRP_EVENT_LEAVEALL:
+ if (octet != GVRP_LENGTH_LEAVEALL)
+ {
+ call_dissector(data_handle,
+ tvb_new_subset_remaining(tvb, offset), pinfo,
+ tree);
+ return;
+ }
+ break;
+
+ case GVRP_EVENT_JOINEMPTY:
+ case GVRP_EVENT_JOININ:
+ case GVRP_EVENT_LEAVEEMPTY:
+ case GVRP_EVENT_LEAVEIN:
+ case GVRP_EVENT_EMPTY:
+ if (octet != GVRP_LENGTH_NON_LEAVEALL)
+ {
+ call_dissector(data_handle,
+ tvb_new_subset_remaining(tvb, offset),pinfo,
+ tree);
+ return;
+ }
+
+ /* Show attribute value */
+ proto_tree_add_item(gvrp_tree, hf_gvrp_attribute_value,
+ tvb, offset, sizeof(guint16), ENC_BIG_ENDIAN);
+
+ offset += sizeof(guint16);
+ length -= sizeof(guint16);
+ break;
+
+ default:
+ call_dissector(data_handle,
+ tvb_new_subset_remaining(tvb, offset), pinfo, tree);
+ return;
+ }
+ }
+
+ proto_item_set_len(attr_item, offset - attr_start);
+
+ attr_index++;
+ }
+
+ msg_index++;
+ }
}
}
@@ -296,40 +297,40 @@ void
proto_register_gvrp(void)
{
static hf_register_info hf[] = {
- { &hf_gvrp_proto_id,
- { "Protocol ID", "gvrp.protocol_id",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gvrp_attribute_type,
- { "Type", "gvrp.attribute_type",
- FT_UINT8, BASE_HEX, VALS(attribute_type_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gvrp_attribute_length,
- { "Length", "gvrp.attribute_length",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gvrp_attribute_event,
- { "Event", "gvrp.attribute_event",
- FT_UINT8, BASE_DEC, VALS(event_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gvrp_attribute_value,
- { "Value", "gvrp.attribute_value",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- }
+ { &hf_gvrp_proto_id,
+ { "Protocol ID", "gvrp.protocol_id",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gvrp_attribute_type,
+ { "Type", "gvrp.attribute_type",
+ FT_UINT8, BASE_HEX, VALS(attribute_type_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gvrp_attribute_length,
+ { "Length", "gvrp.attribute_length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gvrp_attribute_event,
+ { "Event", "gvrp.attribute_event",
+ FT_UINT8, BASE_DEC, VALS(event_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gvrp_attribute_value,
+ { "Value", "gvrp.attribute_value",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ }
};
static gint *ett[] = {
- &ett_gvrp
+ &ett_gvrp
};
/* Register the protocol name and description for GVRP */
proto_gvrp = proto_register_protocol("GARP VLAN Registration Protocol",
- "GVRP", "gvrp");
+ "GVRP", "gvrp");
/* Required function calls to register the header fields and subtrees
* used by GVRP */
@@ -341,5 +342,5 @@ proto_register_gvrp(void)
void
proto_reg_handoff_gvrp(void){
- data_handle = find_dissector("data");
+ data_handle = find_dissector("data");
}
diff --git a/epan/dissectors/packet-h235.c b/epan/dissectors/packet-h235.c
index d178d749ae..952e5c6ace 100644
--- a/epan/dissectors/packet-h235.c
+++ b/epan/dissectors/packet-h235.c
@@ -559,7 +559,7 @@ int
dissect_h235_ENCRYPTED(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 65 "../../asn1/h235/h235.cnf"
proto_item *hidden_item;
- hidden_item = proto_tree_add_item(tree, proto_h235, tvb, offset, 0, FALSE);
+ hidden_item = proto_tree_add_item(tree, proto_h235, tvb, offset, 0, ENC_NA);
PROTO_ITEM_SET_HIDDEN(hidden_item);
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@@ -591,7 +591,7 @@ int
dissect_h235_SIGNED(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 60 "../../asn1/h235/h235.cnf"
proto_item *hidden_item;
- hidden_item = proto_tree_add_item(tree, proto_h235, tvb, offset, 0, FALSE);
+ hidden_item = proto_tree_add_item(tree, proto_h235, tvb, offset, 0, ENC_NA);
PROTO_ITEM_SET_HIDDEN(hidden_item);
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@@ -756,7 +756,7 @@ int
dissect_h235_ClearToken(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 76 "../../asn1/h235/h235.cnf"
proto_item *hidden_item;
- hidden_item = proto_tree_add_item(tree, proto_h235, tvb, offset, 0, FALSE);
+ hidden_item = proto_tree_add_item(tree, proto_h235, tvb, offset, 0, ENC_NA);
PROTO_ITEM_SET_HIDDEN(hidden_item);
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@@ -777,7 +777,7 @@ int
dissect_h235_HASHED(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 70 "../../asn1/h235/h235.cnf"
proto_item *hidden_item;
- hidden_item = proto_tree_add_item(tree, proto_h235, tvb, offset, 0, FALSE);
+ hidden_item = proto_tree_add_item(tree, proto_h235, tvb, offset, 0, ENC_NA);
PROTO_ITEM_SET_HIDDEN(hidden_item);
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@@ -853,7 +853,7 @@ int
dissect_h235_CryptoToken(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 82 "../../asn1/h235/h235.cnf"
proto_item *hidden_item;
- hidden_item = proto_tree_add_item(tree, proto_h235, tvb, offset, 0, FALSE);
+ hidden_item = proto_tree_add_item(tree, proto_h235, tvb, offset, 0, ENC_NA);
PROTO_ITEM_SET_HIDDEN(hidden_item);
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
diff --git a/epan/dissectors/packet-h248.c b/epan/dissectors/packet-h248.c
index 7f3891a3e8..2462a76098 100644
--- a/epan/dissectors/packet-h248.c
+++ b/epan/dissectors/packet-h248.c
@@ -1,7 +1,7 @@
/* Do not modify this file. */
/* It is created automatically by the ASN.1 to Wireshark dissector compiler */
/* packet-h248.c */
-/* ../../../tools/asn2wrs.py -b -p h248 -c ../../../asn1/h248/h248.cnf -s ../../../asn1/h248/packet-h248-template -D ../../../asn1/h248 -O ../../../epan/dissectors h248v3.asn h248v1support.asn */
+/* ../../tools/asn2wrs.py -b -p h248 -c ./h248.cnf -s ./packet-h248-template -D . -O ../../epan/dissectors h248v3.asn h248v1support.asn */
/* Input file: packet-h248-template.c */
@@ -49,6 +49,7 @@
/* Initialize the protocol and registered fields */
static int proto_h248 = -1;
+static int hf_248_magic_num = -1;
static int hf_h248_mtpaddress_ni = -1;
static int hf_h248_mtpaddress_pc = -1;
static int hf_h248_pkg_name = -1;
@@ -188,7 +189,7 @@ static int hf_h248_eventBufferDescriptor = -1; /* EventBufferDescriptor */
static int hf_h248_signalsDescriptor = -1; /* SignalsDescriptor */
static int hf_h248_digitMapDescriptor = -1; /* DigitMapDescriptor */
static int hf_h248_auditDescriptor = -1; /* AuditDescriptor */
-static int hf_h248_statisticsDescriptor = -1; /* StatisticsDescriptor */
+static int hf_h248_aDstatisticsDescriptor = -1; /* StatisticsDescriptor */
static int hf_h248_terminationAudit = -1; /* TerminationAudit */
static int hf_h248_terminationID = -1; /* TerminationID */
static int hf_h248_contextAuditResult = -1; /* TerminationIDList */
@@ -198,6 +199,7 @@ static int hf_h248_auditResultTermList = -1; /* TermListAuditResult */
static int hf_h248_terminationAuditResult = -1; /* TerminationAudit */
static int hf_h248_TerminationAudit_item = -1; /* AuditReturnParameter */
static int hf_h248_observedEventsDescriptor = -1; /* ObservedEventsDescriptor */
+static int hf_h248_aRPstatisticsDescriptor = -1; /* StatisticsDescriptor */
static int hf_h248_packagesDescriptor = -1; /* PackagesDescriptor */
static int hf_h248_emptyDescriptors = -1; /* AuditDescriptor */
static int hf_h248_auditToken = -1; /* T_auditToken */
@@ -219,7 +221,7 @@ static int hf_h248_indAudStreamParms = -1; /* IndAudStreamParms */
static int hf_h248_iASPLocalControlDescriptor = -1; /* IndAudLocalControlDescriptor */
static int hf_h248_iASPLocalDescriptor = -1; /* IndAudLocalRemoteDescriptor */
static int hf_h248_iASPRemoteDescriptor = -1; /* IndAudLocalRemoteDescriptor */
-static int hf_h248_statisticsDescriptor_01 = -1; /* IndAudStatisticsDescriptor */
+static int hf_h248_statisticsDescriptor = -1; /* IndAudStatisticsDescriptor */
static int hf_h248_iALCDStreamMode = -1; /* NULL */
static int hf_h248_iALCDReserveValue = -1; /* NULL */
static int hf_h248_iALCDReserveGroup = -1; /* NULL */
@@ -277,11 +279,12 @@ static int hf_h248_streamParms = -1; /* StreamParms */
static int hf_h248_localControlDescriptor = -1; /* LocalControlDescriptor */
static int hf_h248_localDescriptor = -1; /* LocalRemoteDescriptor */
static int hf_h248_remoteDescriptor = -1; /* LocalRemoteDescriptor */
+static int hf_h248_sPstatisticsDescriptor = -1; /* StatisticsDescriptor */
static int hf_h248_streamMode = -1; /* StreamMode */
static int hf_h248_reserveValue = -1; /* BOOLEAN */
static int hf_h248_reserveGroup = -1; /* BOOLEAN */
-static int hf_h248_propertyParms_01 = -1; /* SEQUENCE_OF_PropertyParm */
-static int hf_h248_propertyParms_item = -1; /* PropertyParm */
+static int hf_h248_lCDpropertyParms = -1; /* SEQUENCE_OF_PropertyParm */
+static int hf_h248_lCDpropertyParms_item = -1; /* PropertyParm */
static int hf_h248_propertyName = -1; /* PropertyName */
static int hf_h248_propertyParamValue = -1; /* SEQUENCE_OF_PropertyID */
static int hf_h248_propertyParamValue_item = -1; /* PropertyID */
@@ -289,6 +292,8 @@ static int hf_h248_propParm_extraInfo = -1; /* PropParm_extraInfo */
static int hf_h248_propGrps = -1; /* SEQUENCE_OF_PropertyGroup */
static int hf_h248_propGrps_item = -1; /* PropertyGroup */
static int hf_h248_PropertyGroup_item = -1; /* PropertyParm */
+static int hf_h248_tSDpropertyParms = -1; /* SEQUENCE_OF_PropertyParm */
+static int hf_h248_tSDpropertyParms_item = -1; /* PropertyParm */
static int hf_h248_tSEventBufferControl = -1; /* EventBufferControl */
static int hf_h248_serviceState = -1; /* ServiceState */
static int hf_h248_muxType = -1; /* MuxType */
@@ -369,14 +374,11 @@ static int hf_h248_manufacturerCode = -1; /* INTEGER_0_65535 */
static int hf_h248_date = -1; /* IA5String_SIZE_8 */
static int hf_h248_time = -1; /* IA5String_SIZE_8 */
static int hf_h248_Value_item = -1; /* OCTET_STRING */
-static int hf_h248_auditResult_01 = -1; /* AuditResultV1 */
+static int hf_h248_audit_result = -1; /* AuditResultV1 */
static int hf_h248_contectAuditResult = -1; /* TerminationID */
-static int hf_h248_eventParamterName = -1; /* Name */
-static int hf_h248_value_01 = -1; /* ValueV1 */
-static int hf_h248_value_02 = -1; /* T_value */
-static int hf_h248_value_item = -1; /* OCTET_STRING */
-static int hf_h248_extraInfo_01 = -1; /* T_extraInfo_01 */
-static int hf_h248_sigParameterName_01 = -1; /* Name */
+static int hf_h248_eventParamterName = -1; /* EventParameterName */
+static int hf_h248_event_param_value = -1; /* EventParamValueV1 */
+static int hf_h248_sig_param_value = -1; /* SigParamValueV1 */
/* named bits */
static int hf_h248_T_auditToken_muxToken = -1;
static int hf_h248_T_auditToken_modemToken = -1;
@@ -395,7 +397,7 @@ static int hf_h248_NotifyCompletion_otherReason = -1;
static int hf_h248_NotifyCompletion_onIteration = -1;
/*--- End of included file: packet-h248-hf.c ---*/
-#line 73 "../../asn1/h248/packet-h248-template.c"
+#line 74 "../../asn1/h248/packet-h248-template.c"
/* Initialize the subtree pointers */
static gint ett_h248 = -1;
@@ -557,15 +559,13 @@ static gint ett_h248_Value = -1;
static gint ett_h248_AuditReplyV1 = -1;
static gint ett_h248_AuditResultV1 = -1;
static gint ett_h248_EventParameterV1 = -1;
-static gint ett_h248_PropertyParmV1 = -1;
-static gint ett_h248_T_value = -1;
-static gint ett_h248_T_extraInfo_01 = -1;
static gint ett_h248_SigParameterV1 = -1;
/*--- End of included file: packet-h248-ett.c ---*/
-#line 90 "../../asn1/h248/packet-h248-template.c"
+#line 91 "../../asn1/h248/packet-h248-template.c"
static dissector_handle_t h248_term_handle;
+static dissector_table_t subdissector_table;
static emem_tree_t* msgs = NULL;
static emem_tree_t* trxs = NULL;
@@ -591,13 +591,26 @@ static int dissect_h248_ServiceChangeReasonStr(gboolean implicit_tag, tvbuff_t *
/* h248v1 support */
static int dissect_h248_AuditReplyV1(gboolean implicit_tag, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index);
-static int dissect_h248_ValueV1(gboolean implicit_tag, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index);
+
static int dissect_h248_EventParameterV1(gboolean implicit_tag, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index);
-static int dissect_h248_PropertyParmV1(gboolean implicit_tag, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index);
static int dissect_h248_SigParameterV1(gboolean implicit_tag, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index);
+static int dissect_h248_SigParamValueV1(gboolean implicit_tag, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index);
+static int dissect_h248_ValueV1(gboolean implicit_tag, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index);
+#if 0
+static const value_string context_id_type[] = {
+ {NULL_CONTEXT,"0 (Null Context)"},
+ {CHOOSE_CONTEXT,"$ (Choose Context)"},
+ {ALL_CONTEXTS,"* (All Contexts)"},
+ {0,NULL}
+};
+#endif
-/* 2010-11-15: New entries added based on: http://www.iana.org/assignments/megaco-h248 last updated 2010-10-01 */
-static const value_string package_name_vals[] = {
+/* the following value_strings are used to build defalut packages.
+ * To add additional detail to a package, build a register a h248_package_t structure
+ * http://www.iana.org/assignments/megaco-h248
+ */
+
+static const value_string base_package_name_vals[] = {
{ 0x0000, "Media stream properties H.248.1 Annex C" },
{ 0x0001, "Generic H.248.1 Annex E" },
{ 0x0002, "root H.248.1 Annex E" },
@@ -802,7 +815,6 @@ static const value_string package_name_vals[] = {
{ 0x00cd, "Resource Management Rules Package" }, /* H.248.63 */
{ 0x00ce, "Resource Management Configuration Package" }, /* H.248.63 */
{ 0x00cf, "Abstract Resource Management Packages" }, /* H.248.63 */
-
{ 0x00d0, "IP layer octets count statistics Package" }, /* H.248.61 */
{ 0x00d1, "Content of Communication Identity Package" }, /* H.248.60 */
{ 0x00d2, "RSVP extension package" }, /* H.248.65 */
@@ -862,7 +874,6 @@ static const value_string package_name_vals[] = {
{ 0x0108, "MGC Controlled Bearer Level ALG Package" }, /* H.248.78 */
{ 0x0109, "Enhanced Revised Offer/Answer SDP Support Package" }, /* H.248.80 */
{ 0x010a, "Enhanced SDP Media Capabilities Negotiation Support Package" }, /* H.248.80 */
-
{ 0x8000, "Ericsson IU" },
{ 0x8001, "Ericsson UMTS and GSM Circuit" },
{ 0x8002, "Ericsson Tone Generator Package" },
@@ -880,16 +891,14 @@ static const value_string package_name_vals[] = {
{ 0x800e, "Ericsson Tracing Enhancements Package" },
{ 0x800f, "Ericsson Partially Wildcarded TerminationID Package" },
{ 0x8010, "SCTP Stream Handling Package" },
-
{0, NULL}
};
-static value_string_ext package_name_vals_ext = VALUE_STRING_EXT_INIT(package_name_vals);
/*
* This table consist of PackageName + EventName and its's corresponding string
*
*/
-static const value_string event_name_vals[] = {
+static const value_string base_event_name_vals[] = {
{ 0x00000000, "Media stream properties H.248.1 Annex C" },
{ 0x00010000, "g H.248.1 Annex E" },
{ 0x00010001, "g/Cause" },
@@ -950,12 +959,11 @@ static const value_string event_name_vals[] = {
{ 0x800a0000, "Nokia Bearer Characteristics Package" },
{0, NULL}
};
-static value_string_ext event_name_vals_ext = VALUE_STRING_EXT_INIT(event_name_vals);
/*
* This table consist of PackageName + SignalName and its's corresponding string
*/
-static const value_string signal_name_vals[] = {
+static const value_string base_signal_name_vals[] = {
{ 0x00000000, "Media stream properties H.248.1 Annex C" },
{ 0x00010000, "g H.248.1 Annex E" },
{ 0x00030001, "tonegen/pt(Play tone)" },
@@ -992,31 +1000,17 @@ static const value_string signal_name_vals[] = {
{ 0x00210001, "GB/EstBNC(Establish BNC)" },
{ 0x00210002, "GB/ModBNC (Modify BNC)" },
{ 0x00210003, "GB/RelBNC(Release BNC)" },
-
{ 0x002a0001, "H.245/cs (channel state)" },
{ 0x002a0002, "H.245/termtype (Terminal Type)" },
-
{ 0x002c0001, "H.324/cmod (Communication mode)" },
{ 0x002c0002, "H.324/muxlv (Highest Multiplexing level)" },
{ 0x002c0003, "H.324/demux (Demultiplex)" },
{ 0x002c0004, "H.324/h223capr (Remote H.223 capability)" },
{ 0x002c0005, "H.324/muxtbl_in (Incoming Multiplex Table)" },
{ 0x002c0006, "H.324/muxtbl_out (Outgoing Multiplex Table)" },
-
{ 0x800a0000, "Nokia Bearer Characteristics Package" },
{0, NULL}
};
-static value_string_ext signal_name_vals_ext = VALUE_STRING_EXT_INIT(signal_name_vals);
-
-#if 0
-static const value_string context_id_type[] = {
- {NULL_CONTEXT,"0 (Null Context)"},
- {CHOOSE_CONTEXT,"$ (Choose Context)"},
- {ALL_CONTEXTS,"* (All Contexts)"},
- {0,NULL}
-};
-#endif
-
static const value_string h248_reasons[] = {
@@ -1185,23 +1179,33 @@ extern void h248_param_ber_integer(proto_tree* tree, tvbuff_t* tvb, packet_info*
extern void h248_param_ber_octetstring(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, int hfid, h248_curr_info_t* u _U_, void* implicit) {
asn1_ctx_t asn1_ctx;
asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
- dissect_ber_octet_string(implicit ? *((gboolean*)implicit) : FALSE, &asn1_ctx, tree, tvb, 0, hfid, NULL);
+ dissect_ber_octet_string(implicit ? *((gboolean*)implicit) : FALSE, &asn1_ctx, tree, tvb, 0, hfid, NULL);
}
extern void h248_param_ber_boolean(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, int hfid, h248_curr_info_t* u _U_, void* implicit) {
asn1_ctx_t asn1_ctx;
asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
- dissect_ber_boolean(implicit ? *((gboolean*)implicit) : FALSE, &asn1_ctx, tree, tvb, 0, hfid, NULL);
+ dissect_ber_boolean(implicit ? *((gboolean*)implicit) : FALSE, &asn1_ctx, tree, tvb, 0, hfid, NULL);
}
-extern void h248_param_item(proto_tree* tree,
+extern void h248_param_bytes_item(proto_tree* tree,
tvbuff_t* tvb,
packet_info* pinfo _U_,
int hfid,
h248_curr_info_t* h248_info _U_,
void* lenp ) {
int len = lenp ? *((int*)lenp) : -1;
- proto_tree_add_item(tree,hfid,tvb,0,len,FALSE);
+ proto_tree_add_item(tree,hfid,tvb,0,len,ENC_NA);
+}
+
+extern void h248_param_uint_item(proto_tree* tree,
+ tvbuff_t* tvb,
+ packet_info* pinfo _U_,
+ int hfid,
+ h248_curr_info_t* h248_info _U_,
+ void* lenp ) {
+ int len = lenp ? *((int*)lenp) : -1;
+ proto_tree_add_item(tree,hfid,tvb,0,len,ENC_BIG_ENDIAN);
}
extern void h248_param_external_dissector(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo , int hfid _U_, h248_curr_info_t* u _U_, void* dissector_hdl) {
@@ -1211,17 +1215,17 @@ extern void h248_param_external_dissector(proto_tree* tree, tvbuff_t* tvb, packe
static const h248_package_t no_package = { 0xffff, &hf_h248_no_pkg, &ett_h248_no_pkg, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL };
static const h248_pkg_sig_t no_signal = { 0, &hf_h248_no_sig, &ett_h248_no_sig, NULL, NULL };
-static const h248_pkg_param_t no_param = { 0, &hf_h248_param, h248_param_item, NULL };
+static const h248_pkg_param_t no_param = { 0, &hf_h248_param, h248_param_uint_item, NULL };
static const h248_pkg_evt_t no_event = { 0, &hf_h248_no_evt, &ett_h248_no_evt, NULL, NULL };
-static GPtrArray* packages = NULL;
+const h248_package_t *find_package_id(guint16 pkgid);
+static GTree* packages = NULL;
extern void h248_param_PkgdName(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo , int hfid _U_, h248_curr_info_t* u1 _U_, void* u2 _U_) {
tvbuff_t *new_tvb = NULL;
proto_tree *package_tree=NULL;
guint16 name_major, name_minor;
const h248_package_t* pkg = NULL;
- guint i;
int offset = 0;
asn1_ctx_t asn1_ctx;
asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
@@ -1232,10 +1236,10 @@ extern void h248_param_PkgdName(proto_tree* tree, tvbuff_t* tvb, packet_info* pi
/* this field is always 4 bytes so just read it into two integers */
name_major=tvb_get_ntohs(new_tvb, 0);
name_minor=tvb_get_ntohs(new_tvb, 2);
-
+ pkg = find_package_id(name_major);
/* do the prettification */
proto_item_append_text(asn1_ctx.created_item, " %s (%04x)",
- val_to_str_ext_const(name_major, &package_name_vals_ext, "Unknown Package"),
+ val_to_str(0, pkg->param_names, "Unknown Package"),
name_major);
if(tree){
@@ -1243,20 +1247,8 @@ extern void h248_param_PkgdName(proto_tree* tree, tvbuff_t* tvb, packet_info* pi
const gchar* strval;
package_tree = proto_item_add_subtree(asn1_ctx.created_item, ett_packagename);
- proto_tree_add_uint(package_tree, hf_h248_pkg_name, tvb, offset-4, 2, name_major);
-
- for(i=0; i < packages->len; i++) {
- pkg = g_ptr_array_index(packages,i);
-
- if (name_major == pkg->id) {
- break;
- } else {
- pkg = NULL;
- }
- }
-
- if (! pkg ) pkg = &no_package;
-
+ proto_tree_add_uint_format(package_tree, hf_h248_pkg_name, tvb, offset-4, 2, name_major,
+ "%s (0x%04x)", val_to_str(0, pkg->param_names, "Unknown Package"), name_major);
pi = proto_tree_add_uint(package_tree, hf_248_pkg_param, tvb, offset-2, 2, name_minor);
@@ -1360,12 +1352,131 @@ static int dissect_h248_ctx_id(gboolean implicit_tag, packet_info *pinfo, proto_
return offset;
}
-void h248_register_package(const h248_package_t* pkg) {
- if (! packages) packages = g_ptr_array_new();
-
- g_ptr_array_add(packages,(void*)pkg);
+s_h248_package_t *s_find_package_id(guint16 pkgid) {
+ s_h248_package_t *s_pkg = NULL;
+ s_pkg = g_tree_lookup(packages, GUINT_TO_POINTER((guint32)(pkgid)));
+ return s_pkg;
+}
+
+const h248_package_t *find_package_id(guint16 pkgid) {
+ s_h248_package_t *s_pkg = NULL;
+ s_pkg = s_find_package_id(pkgid); /*(packages, GUINT_TO_POINTER((guint32)(pkgid))); */
+ if (! s_pkg ) return &no_package;
+ return s_pkg->pkg;
+}
+
+static gint32 comparePkgID(gconstpointer a, gconstpointer b) {
+ return GPOINTER_TO_UINT(b) - GPOINTER_TO_UINT(a);
+}
+
+gboolean is_pkg_default(guint16 pkgid) {
+ s_h248_package_t *s_pkg = NULL;
+ s_pkg = g_tree_lookup(packages, GUINT_TO_POINTER((guint32)(pkgid)));
+ if(! s_pkg ) return TRUE;
+ return s_pkg->is_default;
+}
+
+void h248_register_package(const h248_package_t* pkg, pkg_reg_action reg_action) {
+ h248_package_t *pkg_found = NULL, *pkg_high = NULL, *pkg_low = NULL;
+ s_h248_package_t *s_pkg = NULL;
+ value_string *vst;
+ gboolean pkg_default = FALSE;
+ gint j = 0, idx = 0, i = 0, k = 0;
+ if (! packages) {
+ /* no packaegs are yet registerd so create tree and add default packages to tree
+ */
+ packages = g_tree_new(comparePkgID); /* init tree if no entries */
+ while (base_package_name_vals[i].strptr != NULL) {
+ pkg_found = g_new0(h248_package_t, 1); /* create a h248 package structure */
+ pkg_found->id = base_package_name_vals[i].value;
+ vst = g_new0(value_string,2);
+ vst[0].strptr = base_package_name_vals[i].strptr;
+ pkg_found->param_names = vst;
+ pkg_found->hfid = &hf_h248_pkg_name;
+ pkg_found->ett = &ett_packagename;
+ match_strval_idx((pkg_found->id)<<16,base_event_name_vals, &j);
+ /* now look for events and signals that may be defined for package. If found, create value_strings */
+ if (j != -1) {
+ j++; idx=j;
+ while((base_event_name_vals[j].strptr!=NULL) && (((base_event_name_vals[j].value)>>16) == (pkg_found->id))) {
+ j++;
+ };
+ if (idx < j) {
+ vst = g_new0(value_string,j-idx+1);
+ for (k=0;idx<j;k++) {
+ vst[k].strptr = base_event_name_vals[idx].strptr;
+ vst[k].value = (base_event_name_vals[idx].value & 0xffff);
+ idx++;
+ };
+ pkg_found->event_names = vst;
+ }
+ }
+ /* now look at signals */
+ if (!match_strval_idx((pkg_found->id)<<16, base_signal_name_vals, &j)) {
+ j++; idx=j;
+ while((base_signal_name_vals[j].strptr != NULL) && ((base_signal_name_vals[j].value>>16) == (pkg_found->id))) {
+ };
+ if (idx < j) {
+ vst = g_new0(value_string,j-idx+1);
+ for (k=0;idx<i;k++) {
+ vst[k].strptr = base_signal_name_vals[idx].strptr;
+ vst[k].value = (base_signal_name_vals[idx].value &0xffff);
+ idx++;
+ };
+ pkg_found->signal_names = vst;
+ }
+ };
+ s_pkg = g_new0(s_h248_package_t,1);
+ s_pkg->is_default = TRUE;
+ s_pkg->pkg = pkg_found;
+ g_tree_insert(packages, GINT_TO_POINTER(pkg_found->id), (gpointer)s_pkg);
+ i++;
+ };
+ pkg_found = NULL; /* reset pointer */
+ };
+ pkg_default = is_pkg_default(pkg->id);
+ if (((reg_action==REPLACE_PKG) || (reg_action==ADD_PKG)) && pkg_default) {
+ /* add/replace in tree */
+ s_pkg = g_new0(s_h248_package_t,1);
+ s_pkg->is_default = FALSE;
+ s_pkg->pkg = (h248_package_t *)pkg;
+ g_tree_replace(packages, GINT_TO_POINTER(pkg->id), (gpointer)s_pkg);
+ return;
+ };
+ if(pkg_default) reg_action = MERGE_PKG_HIGH; /* always make new package overide default */
+ s_pkg = s_find_package_id(pkg->id);
+ if (s_pkg == NULL) { /* no need to merge - package not in tree */
+ s_pkg = g_new0(s_h248_package_t,1);
+ s_pkg->is_default = FALSE;
+ s_pkg->pkg = (h248_package_t *)pkg;
+ g_tree_insert(packages, GINT_TO_POINTER(pkg->id), (gpointer)s_pkg);
+ return;
+ }
+ pkg_found = s_pkg->pkg;
+ if (reg_action==MERGE_PKG_HIGH) {
+ pkg_high = (h248_package_t *)pkg;
+ pkg_low = pkg_found;
+ };
+ if (reg_action==MERGE_PKG_LOW) {
+ pkg_high = pkg_found;
+ pkg_low = (h248_package_t *)pkg;
+ };
+ /* if h248_package_t High Priority value !NULL, replace it in the found tree entry else use current entry */
+ (pkg_high->hfid ? (pkg_found->hfid=pkg_high->hfid) : (pkg_found->hfid=pkg_low->hfid));
+ (pkg_high->ett ? (pkg_found->ett=pkg_high->ett ):( pkg_found->ett=pkg_low->ett));
+ (pkg_high->param_names ? (pkg_found->param_names=pkg_high->param_names ):( pkg_found->param_names=pkg_low->param_names));
+ (pkg_high->signal_names ? (pkg_found->signal_names=pkg_high->signal_names ):( pkg_found->signal_names=pkg_low->signal_names));
+ (pkg_high->event_names ? (pkg_found->event_names=pkg_high->event_names ):( pkg_found->event_names=pkg_low->event_names));
+ (pkg_high->stats_names ? (pkg_found->stats_names=pkg_high->stats_names ):( pkg_found->stats_names=pkg_low->stats_names));
+ (pkg_high->properties ? (pkg_found->properties=pkg_high->properties ):( pkg_found->properties=pkg_low->properties));
+ (pkg_high->signals ? (pkg_found->signals=pkg_high->signals ):( pkg_found->signals=pkg_low->signals));
+ (pkg_high->events ? (pkg_found->events=pkg_high->events ):( pkg_found->events=pkg_low->events));
+ (pkg_high->statistics ? (pkg_found->statistics=pkg_high->statistics ):( pkg_found->statistics=pkg_low->statistics));
+ s_pkg->pkg = pkg_found;
+ s_pkg->is_default = FALSE;
}
+
static guint32 packageandid;
static int dissect_h248_PkgdName(gboolean implicit_tag, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
@@ -1373,8 +1484,7 @@ static int dissect_h248_PkgdName(gboolean implicit_tag, tvbuff_t *tvb, int offse
proto_tree *package_tree=NULL;
guint16 name_major, name_minor;
const h248_package_t* pkg = NULL;
- guint i;
-
+
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, &new_tvb);
if (new_tvb) {
@@ -1383,28 +1493,18 @@ static int dissect_h248_PkgdName(gboolean implicit_tag, tvbuff_t *tvb, int offse
name_minor=tvb_get_ntohs(new_tvb, 2);
packageandid=(name_major<<16)|name_minor;
+ pkg = find_package_id(name_major);
/* do the prettification */
proto_item_append_text(actx->created_item, " %s (%04x)",
- val_to_str_ext_const(name_major, &package_name_vals_ext, "Unknown Package"),
+ val_to_str(0, pkg->param_names, "Unknown Package"),
name_major);
if(tree){
package_tree = proto_item_add_subtree(actx->created_item, ett_packagename);
- proto_tree_add_uint(package_tree, hf_h248_pkg_name, tvb, offset-4, 2, name_major);
- }
-
- for(i=0; i < packages->len; i++) {
- pkg = g_ptr_array_index(packages,i);
-
- if (name_major == pkg->id) {
- break;
- } else {
- pkg = NULL;
- }
+ proto_tree_add_uint_format(package_tree, hf_h248_pkg_name, tvb, offset-4, 2, name_major,
+ "PkgName%s (0x%04x)", val_to_str(0, pkg->param_names, "Unknown Package"), name_major);
}
- if (! pkg ) pkg = &no_package;
-
{
proto_item* pi = proto_tree_add_uint(package_tree, hf_248_pkg_param, tvb, offset-2, 2, name_minor);
const gchar* strval;
@@ -1432,7 +1532,6 @@ static int dissect_h248_EventName(gboolean implicit_tag, tvbuff_t *tvb, int offs
guint16 name_major, name_minor;
const h248_package_t* pkg = NULL;
const h248_pkg_evt_t* evt = NULL;
- guint i;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, &new_tvb);
@@ -1442,27 +1541,16 @@ static int dissect_h248_EventName(gboolean implicit_tag, tvbuff_t *tvb, int offs
name_minor=tvb_get_ntohs(new_tvb, 2);
packageandid=(name_major<<16)|name_minor;
+ pkg = find_package_id(name_major);
/* do the prettification */
proto_item_append_text(actx->created_item, " %s (%04x)",
- val_to_str_ext_const(name_major, &package_name_vals_ext, "Unknown Package"),
+ val_to_str(0, pkg->param_names, "Unknown Package"),
name_major);
if(tree){
package_tree = proto_item_add_subtree(actx->created_item, ett_packagename);
}
- proto_tree_add_uint(package_tree, hf_h248_pkg_name, tvb, offset-4, 2, name_major);
-
-
- for(i=0; i < packages->len; i++) {
- pkg = g_ptr_array_index(packages,i);
-
- if (name_major == pkg->id) {
- break;
- } else {
- pkg = NULL;
- }
- }
-
- if (! pkg ) pkg = &no_package;
+ proto_tree_add_uint_format(package_tree, hf_h248_pkg_name, tvb, offset-4, 2, name_major,
+ "%s (0x%04x)", val_to_str(0, pkg->param_names, "Unknown Package"), name_major);
curr_info.pkg = pkg;
@@ -1509,7 +1597,6 @@ static int dissect_h248_SignalName(gboolean implicit_tag , tvbuff_t *tvb, int of
guint16 name_major, name_minor;
const h248_package_t* pkg = NULL;
const h248_pkg_sig_t* sig;
- guint i;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, &new_tvb);
@@ -1519,26 +1606,16 @@ static int dissect_h248_SignalName(gboolean implicit_tag , tvbuff_t *tvb, int of
name_minor=tvb_get_ntohs(new_tvb, 2);
packageandid=(name_major<<16)|name_minor;
+ pkg = find_package_id(name_major);
/* do the prettification */
proto_item_append_text(actx->created_item, " %s (%04x)",
- val_to_str_ext_const(name_major, &package_name_vals_ext, "Unknown Package"),
+ val_to_str(0, pkg->param_names, "Unknown Package"),
name_major);
if(tree){
package_tree = proto_item_add_subtree(actx->created_item, ett_packagename);
}
- proto_tree_add_uint(package_tree, hf_h248_pkg_name, tvb, offset-4, 2, name_major);
-
- for(i=0; i < packages->len; i++) {
- pkg = g_ptr_array_index(packages,i);
-
- if (name_major == pkg->id) {
- break;
- } else {
- pkg = NULL;
- }
- }
-
- if (! pkg ) pkg = &no_package;
+ proto_tree_add_uint_format(package_tree, hf_h248_pkg_name, tvb, offset-4, 2, name_major,
+ "%s (0x%04x)", val_to_str(0, pkg->param_names, "Unknown Package"), name_major);
if (pkg->signals) {
for (sig = pkg->signals; sig->hfid; sig++) {
@@ -1583,10 +1660,8 @@ static int dissect_h248_PropertyID(gboolean implicit_tag _U_, tvbuff_t *tvb, int
gboolean pc, ind;
gint32 tag;
guint32 len;
- /*guint16 name_major;*/
guint16 name_minor;
int end_offset;
- tvbuff_t *next_tvb;
const h248_package_t* pkg;
const h248_pkg_param_t* prop;
@@ -1601,8 +1676,6 @@ static int dissect_h248_PropertyID(gboolean implicit_tag _U_, tvbuff_t *tvb, int
}
- next_tvb = tvb_new_subset(tvb, offset , len , len );
- /*name_major = packageandid >> 16;*/
name_minor = packageandid & 0xffff;
pkg = (curr_info.pkg) ? curr_info.pkg : &no_package;
@@ -1616,16 +1689,16 @@ static int dissect_h248_PropertyID(gboolean implicit_tag _U_, tvbuff_t *tvb, int
} else {
prop = &no_param;
}
-
if (prop && prop->hfid ) {
if (!prop->dissector) prop = &no_param;
- prop->dissector(tree, next_tvb, actx->pinfo, *(prop->hfid), &curr_info, prop->data);
+ prop->dissector(tree, tvb, actx->pinfo, *(prop->hfid), &curr_info, prop->data);
}
return end_offset;
}
+
static int dissect_h248_SigParameterName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index _U_) {
tvbuff_t *next_tvb;
guint32 param_id = 0xffffffff;
@@ -1667,7 +1740,6 @@ static int dissect_h248_SigParameterName(gboolean implicit_tag _U_, tvbuff_t *tv
}
static int dissect_h248_SigParamValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index _U_) {
- tvbuff_t *next_tvb;
int end_offset;
gint8 class;
gboolean pc, ind;
@@ -1685,15 +1757,18 @@ static int dissect_h248_SigParamValue(gboolean implicit_tag _U_, tvbuff_t *tvb,
}
- next_tvb = tvb_new_subset(tvb,offset,len,len);
-
if ( curr_info.par && curr_info.par->dissector) {
- curr_info.par->dissector(tree, next_tvb, actx->pinfo, *(curr_info.par->hfid), &curr_info, curr_info.par->data);
+ curr_info.par->dissector(tree, tvb, actx->pinfo, *(curr_info.par->hfid), &curr_info, curr_info.par->data);
}
return end_offset;
}
+static int dissect_h248_SigParamValueV1(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index _U_) {
+ return dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
+}
+
+
static int dissect_h248_EventParameterName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index _U_) {
tvbuff_t *next_tvb;
guint32 param_id = 0xffffffff;
@@ -1742,32 +1817,34 @@ static int dissect_h248_EventParameterName(gboolean implicit_tag _U_, tvbuff_t *
static int dissect_h248_EventParamValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index _U_) {
tvbuff_t *next_tvb;
- int end_offset;
- gint8 class;
- gboolean pc, ind;
- gint32 tag;
- guint32 len;
-
- offset=dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &class, &pc, &tag);
- offset=dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, &ind);
- end_offset=offset+len;
-
- if( (class!=BER_CLASS_UNI)
- ||(tag!=BER_UNI_TAG_OCTETSTRING) ){
- proto_tree_add_text(tree, tvb, offset-2, 2, "H.248 BER Error: OctetString expected but Class:%d PC:%d Tag:%d was unexpected", class, pc, tag);
+ int old_offset, end_offset;
+ gint8 class1;
+ gboolean pc1, ind1;
+ gint32 tag1;
+ guint32 len1;
+ offset=dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &class1, &pc1, &tag1);
+ offset=dissect_ber_length(actx->pinfo, tree, tvb, offset, &len1, &ind1);
+ end_offset=offset+len1;
+ /* check to see if 1) is octet string and 2) if another OS is embedded */
+ if( !(tag1==BER_UNI_TAG_OCTETSTRING || tag1==BER_UNI_TAG_BOOLEAN || BER_UNI_TAG_ENUMERATED)) { /* allow octet string and boolean constructs */
+ proto_tree_add_text(tree, tvb, offset-2, 2, "H.248 BER Error: OctetString expected but Class:%d PC:%d Tag:%d was unexpected", class1, pc1, tag1);
return end_offset;
- }
-
-
- next_tvb = tvb_new_subset(tvb,offset,len,len);
-
- if ( curr_info.par && curr_info.par->dissector) {
+ }
+ next_tvb = tvb_new_subset(tvb,offset,len1,len1);
+ old_offset=offset;
+ offset = old_offset; /* restore initial offset before calling dissector functions */
+ if ( curr_info.par && curr_info.par->dissector) {
curr_info.par->dissector(tree, next_tvb, actx->pinfo, *(curr_info.par->hfid), &curr_info, curr_info.par->data);
}
return end_offset;
}
+static int dissect_h248_EventParamValueV1(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index _U_) {
+ return dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, &tvb);
+}
+
+
static int dissect_h248_MtpAddress(gboolean implicit_tag, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
tvbuff_t *new_tvb;
proto_tree *mtp_tree=NULL;
@@ -1858,7 +1935,7 @@ dissect_h248_AuthenticationHeader(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
static int
dissect_h248_T_version(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 97 "../../asn1/h248/h248.cnf"
+#line 108 "../../asn1/h248/h248.cnf"
offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
&h248_version);
@@ -1998,16 +2075,16 @@ dissect_h248_MId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, a
static int
dissect_h248_T_errorCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 291 "../../asn1/h248/h248.cnf"
+#line 302 "../../asn1/h248/h248.cnf"
offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_h248_error_code, &error_code);
expert_add_info_format(actx->pinfo, actx->created_item, PI_RESPONSE_CODE, PI_WARN, "Errored Command");
-
+
if (curr_info.cmd) {
gcp_cmd_set_error(curr_info.cmd,error_code);
} else if (curr_info.trx) {
gcp_trx_set_error(curr_info.trx,error_code);
}
-
+
return offset;
@@ -2054,7 +2131,7 @@ dissect_h248_TransactionId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off
static int
dissect_h248_T_transactionId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 101 "../../asn1/h248/h248.cnf"
+#line 112 "../../asn1/h248/h248.cnf"
guint32 trx_id = 0;
offset = dissect_h248_trx_id(implicit_tag, actx->pinfo, tree, tvb, offset, &trx_id);
curr_info.trx = gcp_trx(curr_info.msg, trx_id, GCP_TRX_REQUEST, keep_persistent_data);
@@ -2069,7 +2146,7 @@ dissect_h248_T_transactionId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o
static int
dissect_h248_ContextId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 126 "../../asn1/h248/h248.cnf"
+#line 137 "../../asn1/h248/h248.cnf"
guint32 ctx_id = 0;
offset = dissect_h248_ctx_id(implicit_tag, actx->pinfo, tree, tvb, offset, &ctx_id);
curr_info.ctx = gcp_ctx(curr_info.msg,curr_info.trx,ctx_id,keep_persistent_data);
@@ -2103,18 +2180,18 @@ dissect_h248_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U
static int
dissect_h248_WildcardField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 309 "../../asn1/h248/h248.cnf"
+#line 320 "../../asn1/h248/h248.cnf"
tvbuff_t* new_tvb;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, &new_tvb);
tree = proto_item_add_subtree(actx->created_item,ett_wildcard);
- proto_tree_add_item(tree,hf_h248_term_wild_type,new_tvb,0,1,FALSE);
- proto_tree_add_item(tree,hf_h248_term_wild_level,new_tvb,0,1,FALSE);
- proto_tree_add_item(tree,hf_h248_term_wild_position,new_tvb,0,1,FALSE);
+ proto_tree_add_item(tree,hf_h248_term_wild_type,new_tvb,0,1,ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree,hf_h248_term_wild_level,new_tvb,0,1,ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree,hf_h248_term_wild_position,new_tvb,0,1,ENC_BIG_ENDIAN);
wild_term = tvb_get_guint8(new_tvb,0) & 0x80 ? GCP_WILDCARD_CHOOSE : GCP_WILDCARD_ALL;
/* limitation: assume only one wildcard is used */
wild_card = tvb_get_guint8(new_tvb,0);
-
+
return offset;
@@ -2137,10 +2214,10 @@ dissect_h248_SEQUENCE_OF_WildcardField(gboolean implicit_tag _U_, tvbuff_t *tvb
static int
dissect_h248_T_terminationId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 323 "../../asn1/h248/h248.cnf"
+#line 334 "../../asn1/h248/h248.cnf"
tvbuff_t* new_tvb;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, &new_tvb);
-
+
if (new_tvb) {
curr_info.term->len = tvb_length(new_tvb);
curr_info.term->type = 0; /* unknown */
@@ -2153,9 +2230,9 @@ dissect_h248_T_terminationId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o
curr_info.term = gcp_cmd_add_term(curr_info.msg, curr_info.trx, curr_info.cmd, curr_info.term, wild_term, keep_persistent_data);
if (h248_term_handle) {
- actx->pinfo->private_data = &wild_card;
+ actx->pinfo->private_data = &wild_card;
call_dissector(h248_term_handle, new_tvb, actx->pinfo, tree);
- wild_card = 0xFF;
+ wild_card = 0xFF;
}
} else {
curr_info.term->len = 0;
@@ -2176,7 +2253,7 @@ static const ber_sequence_t TerminationID_sequence[] = {
static int
dissect_h248_TerminationID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 304 "../../asn1/h248/h248.cnf"
+#line 315 "../../asn1/h248/h248.cnf"
curr_info.term = ep_new0(gcp_term_t);
wild_term = GCP_WILDCARD_NONE;
@@ -2254,14 +2331,14 @@ static const ber_sequence_t T_topologyReq_sequence_of[1] = {
static int
dissect_h248_T_topologyReq(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 209 "../../asn1/h248/h248.cnf"
+#line 220 "../../asn1/h248/h248.cnf"
curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_TOPOLOGY_REQ,offset,keep_persistent_data);
H248_TAP();
offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
T_topologyReq_sequence_of, hf_index, ett_h248_T_topologyReq);
-#line 213 "../../asn1/h248/h248.cnf"
+#line 224 "../../asn1/h248/h248.cnf"
curr_info.cmd = NULL;
return offset;
@@ -2351,17 +2428,9 @@ static const ber_sequence_t PropertyParm_sequence[] = {
static int
dissect_h248_PropertyParm(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 416 "../../asn1/h248/h248.cnf"
-/* H248 v1 support */
- if (h248_version >1) {
- offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
+ offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
PropertyParm_sequence, hf_index, ett_h248_PropertyParm);
-} else {
- offset = dissect_h248_PropertyParmV1( implicit_tag, tvb, offset, actx, tree, hf_index);
-}
-
-
return offset;
}
@@ -2505,13 +2574,13 @@ dissect_h248_ContextAttrAuditRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U
static int
dissect_h248_T_contextAttrAuditReq(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 217 "../../asn1/h248/h248.cnf"
+#line 228 "../../asn1/h248/h248.cnf"
curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_CTX_ATTR_AUDIT_REQ,offset,keep_persistent_data);
H248_TAP();
offset = dissect_h248_ContextAttrAuditRequest(implicit_tag, tvb, offset, actx, tree, hf_index);
-#line 221 "../../asn1/h248/h248.cnf"
+#line 232 "../../asn1/h248/h248.cnf"
curr_info.cmd = NULL;
return offset;
@@ -2565,7 +2634,7 @@ dissect_h248_ServiceState(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs
static const ber_sequence_t TerminationStateDescriptor_sequence[] = {
- { &hf_h248_propertyParms_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_PropertyParm },
+ { &hf_h248_tSDpropertyParms, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_PropertyParm },
{ &hf_h248_tSEventBufferControl, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_EventBufferControl },
{ &hf_h248_serviceState , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_ServiceState },
{ NULL, 0, 0, 0, NULL }
@@ -2603,7 +2672,7 @@ static const ber_sequence_t LocalControlDescriptor_sequence[] = {
{ &hf_h248_streamMode , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_StreamMode },
{ &hf_h248_reserveValue , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_BOOLEAN },
{ &hf_h248_reserveGroup , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_BOOLEAN },
- { &hf_h248_propertyParms_01, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_PropertyParm },
+ { &hf_h248_lCDpropertyParms, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_h248_SEQUENCE_OF_PropertyParm },
{ NULL, 0, 0, 0, NULL }
};
@@ -2729,7 +2798,7 @@ static const ber_sequence_t StreamParms_sequence[] = {
{ &hf_h248_localControlDescriptor, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_LocalControlDescriptor },
{ &hf_h248_localDescriptor, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_LocalRemoteDescriptor },
{ &hf_h248_remoteDescriptor, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_LocalRemoteDescriptor },
- { &hf_h248_statisticsDescriptor, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_StatisticsDescriptor },
+ { &hf_h248_sPstatisticsDescriptor, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_StatisticsDescriptor },
{ NULL, 0, 0, 0, NULL }
};
@@ -3158,14 +3227,14 @@ static const ber_sequence_t SigParameter_sequence[] = {
static int
dissect_h248_SigParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 406 "../../asn1/h248/h248.cnf"
+#line 423 "../../asn1/h248/h248.cnf"
/* H248 v1 support */
- if (h248_version >1) {
+ if (h248_version > 1) {
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
SigParameter_sequence, hf_index, ett_h248_SigParameter);
} else {
- offset = dissect_h248_SigParameterV1( implicit_tag, tvb, offset, actx, tree, hf_index);
+ offset = dissect_h248_SigParameterV1( implicit_tag, tvb, offset, actx, tree, hf_index);
}
@@ -3394,14 +3463,14 @@ static const ber_sequence_t EventParameter_sequence[] = {
static int
dissect_h248_EventParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 397 "../../asn1/h248/h248.cnf"
+#line 414 "../../asn1/h248/h248.cnf"
/* H248 v1 support */
- if (h248_version >1) {
+ if (h248_version > 1) {
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
EventParameter_sequence, hf_index, ett_h248_EventParameter);
} else {
- offset = dissect_h248_EventParameterV1( implicit_tag, tvb, offset, actx, tree, hf_index);
+ offset = dissect_h248_EventParameterV1( implicit_tag, tvb, offset, actx, tree, hf_index);
}
@@ -3680,7 +3749,7 @@ static const ber_sequence_t IndAudStreamParms_sequence[] = {
{ &hf_h248_iASPLocalControlDescriptor, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_IndAudLocalControlDescriptor },
{ &hf_h248_iASPLocalDescriptor, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_IndAudLocalRemoteDescriptor },
{ &hf_h248_iASPRemoteDescriptor, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_IndAudLocalRemoteDescriptor },
- { &hf_h248_statisticsDescriptor_01, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_IndAudStatisticsDescriptor },
+ { &hf_h248_statisticsDescriptor, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_IndAudStatisticsDescriptor },
{ NULL, 0, 0, 0, NULL }
};
@@ -3953,7 +4022,7 @@ static const ber_choice_t AmmDescriptor_choice[] = {
{ 5, &hf_h248_signalsDescriptor, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_h248_SignalsDescriptor },
{ 6, &hf_h248_digitMapDescriptor, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_h248_DigitMapDescriptor },
{ 7, &hf_h248_auditDescriptor, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_h248_AuditDescriptor },
- { 8, &hf_h248_statisticsDescriptor, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_h248_StatisticsDescriptor },
+ { 8, &hf_h248_aDstatisticsDescriptor, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_h248_StatisticsDescriptor },
{ 0, NULL, 0, 0, 0, NULL }
};
@@ -3998,13 +4067,13 @@ dissect_h248_AmmRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
static int
dissect_h248_T_addReq(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 142 "../../asn1/h248/h248.cnf"
+#line 153 "../../asn1/h248/h248.cnf"
curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_ADD_REQ,offset,keep_persistent_data);
H248_TAP();
offset = dissect_h248_AmmRequest(implicit_tag, tvb, offset, actx, tree, hf_index);
-#line 147 "../../asn1/h248/h248.cnf"
+#line 158 "../../asn1/h248/h248.cnf"
curr_info.cmd = NULL;
return offset;
@@ -4014,14 +4083,14 @@ dissect_h248_T_addReq(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _
static int
dissect_h248_T_moveReq(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 151 "../../asn1/h248/h248.cnf"
+#line 162 "../../asn1/h248/h248.cnf"
curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_MOVE_REQ,offset,keep_persistent_data);
H248_TAP();
offset = dissect_h248_AmmRequest(implicit_tag, tvb, offset, actx, tree, hf_index);
-#line 157 "../../asn1/h248/h248.cnf"
+#line 168 "../../asn1/h248/h248.cnf"
curr_info.cmd = NULL;
return offset;
@@ -4031,13 +4100,13 @@ dissect_h248_T_moveReq(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
static int
dissect_h248_T_modReq(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 161 "../../asn1/h248/h248.cnf"
+#line 172 "../../asn1/h248/h248.cnf"
curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_MOD_REQ,offset,keep_persistent_data);
H248_TAP();
offset = dissect_h248_AmmRequest(implicit_tag, tvb, offset, actx, tree, hf_index);
-#line 165 "../../asn1/h248/h248.cnf"
+#line 176 "../../asn1/h248/h248.cnf"
curr_info.cmd = NULL;
return offset;
@@ -4062,13 +4131,13 @@ dissect_h248_SubtractRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o
static int
dissect_h248_T_subtractReq(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 169 "../../asn1/h248/h248.cnf"
+#line 180 "../../asn1/h248/h248.cnf"
curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_SUB_REQ,offset,keep_persistent_data);
H248_TAP();
offset = dissect_h248_SubtractRequest(implicit_tag, tvb, offset, actx, tree, hf_index);
-#line 173 "../../asn1/h248/h248.cnf"
+#line 184 "../../asn1/h248/h248.cnf"
curr_info.cmd = NULL;
return offset;
@@ -4094,13 +4163,13 @@ dissect_h248_AuditRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs
static int
dissect_h248_T_auditCapRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 177 "../../asn1/h248/h248.cnf"
+#line 188 "../../asn1/h248/h248.cnf"
curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_AUDITCAP_REQ,offset,keep_persistent_data);
H248_TAP();
offset = dissect_h248_AuditRequest(implicit_tag, tvb, offset, actx, tree, hf_index);
-#line 181 "../../asn1/h248/h248.cnf"
+#line 192 "../../asn1/h248/h248.cnf"
curr_info.cmd = NULL;
return offset;
@@ -4110,13 +4179,13 @@ dissect_h248_T_auditCapRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
static int
dissect_h248_T_auditValueRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 185 "../../asn1/h248/h248.cnf"
+#line 196 "../../asn1/h248/h248.cnf"
curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_AUDITVAL_REQ,offset,keep_persistent_data);
H248_TAP();
offset = dissect_h248_AuditRequest(implicit_tag, tvb, offset, actx, tree, hf_index);
-#line 189 "../../asn1/h248/h248.cnf"
+#line 200 "../../asn1/h248/h248.cnf"
curr_info.cmd = NULL;
return offset;
@@ -4202,13 +4271,13 @@ dissect_h248_NotifyRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off
static int
dissect_h248_T_notifyReq(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 193 "../../asn1/h248/h248.cnf"
+#line 204 "../../asn1/h248/h248.cnf"
curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_NOTIFY_REQ,offset,keep_persistent_data);
H248_TAP();
offset = dissect_h248_NotifyRequest(implicit_tag, tvb, offset, actx, tree, hf_index);
-#line 197 "../../asn1/h248/h248.cnf"
+#line 208 "../../asn1/h248/h248.cnf"
curr_info.cmd = NULL;
return offset;
@@ -4293,8 +4362,7 @@ dissect_h248_ServiceChangeProfile(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
static int
dissect_h248_SCreasonValueOctetStr(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 362 "../../asn1/h248/h248.cnf"
-
+#line 373 "../../asn1/h248/h248.cnf"
tvbuff_t *parameter_tvb;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
&parameter_tvb);
@@ -4316,18 +4384,18 @@ static const ber_sequence_t SCreasonValue_sequence_of[1] = {
static int
dissect_h248_SCreasonValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 350 "../../asn1/h248/h248.cnf"
+#line 361 "../../asn1/h248/h248.cnf"
/* H248 v1 support */
- if ( h248_version >1 ) {
+ if ( h248_version > 1 ) {
/* Not V1, so call "standard" function */
offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
SCreasonValue_sequence_of, hf_index, ett_h248_SCreasonValue);
-
+
} else {
- /* V1 so Value == octet string */
- offset = dissect_h248_ValueV1( implicit_tag, tvb, offset, actx, tree, hf_index);
+ /* V1 so Value == octet string */
+ offset = dissect_h248_ValueV1( implicit_tag, tvb, offset, actx, tree, hf_index);
};
-
+
return offset;
@@ -4376,14 +4444,14 @@ static const ber_sequence_t ServiceChangeRequest_sequence[] = {
static int
dissect_h248_ServiceChangeRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 201 "../../asn1/h248/h248.cnf"
+#line 212 "../../asn1/h248/h248.cnf"
curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_SVCCHG_REQ,offset,keep_persistent_data);
H248_TAP();
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
ServiceChangeRequest_sequence, hf_index, ett_h248_ServiceChangeRequest);
-#line 205 "../../asn1/h248/h248.cnf"
+#line 216 "../../asn1/h248/h248.cnf"
curr_info.cmd = NULL;
return offset;
@@ -4501,7 +4569,7 @@ dissect_h248_TransactionRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
static int
dissect_h248_T_tpend_transactionId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 108 "../../asn1/h248/h248.cnf"
+#line 119 "../../asn1/h248/h248.cnf"
guint32 trx_id = 0;
offset = dissect_h248_trx_id(implicit_tag, actx->pinfo, tree, tvb, offset, &trx_id);
curr_info.trx = gcp_trx(curr_info.msg, trx_id, GCP_TRX_PENDING, keep_persistent_data);
@@ -4530,7 +4598,7 @@ dissect_h248_TransactionPending(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
static int
dissect_h248_T_trep_transactionId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 114 "../../asn1/h248/h248.cnf"
+#line 125 "../../asn1/h248/h248.cnf"
guint32 trx_id = 0;
offset = dissect_h248_trx_id(implicit_tag, actx->pinfo, tree, tvb, offset, &trx_id);
curr_info.trx = gcp_trx(curr_info.msg, trx_id, GCP_TRX_REPLY, keep_persistent_data);
@@ -4596,7 +4664,7 @@ static const ber_choice_t AuditReturnParameter_choice[] = {
{ 6, &hf_h248_signalsDescriptor, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_h248_SignalsDescriptor },
{ 7, &hf_h248_digitMapDescriptor, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_h248_DigitMapDescriptor },
{ 8, &hf_h248_observedEventsDescriptor, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_h248_ObservedEventsDescriptor },
- { 9, &hf_h248_statisticsDescriptor, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_h248_StatisticsDescriptor },
+ { 9, &hf_h248_aRPstatisticsDescriptor, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_h248_StatisticsDescriptor },
{ 10, &hf_h248_packagesDescriptor, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_h248_PackagesDescriptor },
{ 11, &hf_h248_emptyDescriptors, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_h248_AuditDescriptor },
{ 0, NULL, 0, 0, 0, NULL }
@@ -4643,7 +4711,7 @@ dissect_h248_AmmsReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
static int
dissect_h248_T_addReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 225 "../../asn1/h248/h248.cnf"
+#line 236 "../../asn1/h248/h248.cnf"
curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_ADD_REPLY,offset,keep_persistent_data);
H248_TAP();
@@ -4656,7 +4724,7 @@ dissect_h248_T_addReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
static int
dissect_h248_T_moveReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 230 "../../asn1/h248/h248.cnf"
+#line 241 "../../asn1/h248/h248.cnf"
curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_MOVE_REPLY,offset,keep_persistent_data);
H248_TAP();
@@ -4669,7 +4737,7 @@ dissect_h248_T_moveReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offse
static int
dissect_h248_T_modReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 235 "../../asn1/h248/h248.cnf"
+#line 246 "../../asn1/h248/h248.cnf"
curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_MOD_REPLY,offset,keep_persistent_data);
H248_TAP();
@@ -4682,7 +4750,7 @@ dissect_h248_T_modReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
static int
dissect_h248_T_subtractReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 240 "../../asn1/h248/h248.cnf"
+#line 251 "../../asn1/h248/h248.cnf"
curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_SUB_REPLY,offset,keep_persistent_data);
H248_TAP();
@@ -4751,18 +4819,18 @@ dissect_h248_AuditReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
static int
dissect_h248_T_auditCapReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 255 "../../asn1/h248/h248.cnf"
+#line 266 "../../asn1/h248/h248.cnf"
curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_AUDITCAP_REPLY,offset,keep_persistent_data);
H248_TAP();
-#line 260 "../../asn1/h248/h248.cnf"
+#line 271 "../../asn1/h248/h248.cnf"
/* h248v1 support */
if(h248_version > 1) {
offset = dissect_h248_AuditReply(implicit_tag, tvb, offset, actx, tree, hf_index);
} else {
- /* call V1 of the dissector */
- offset = dissect_h248_AuditReplyV1(implicit_tag, tvb, offset, actx, tree, hf_index);
+ /* call V1 of the dissector */
+ offset = dissect_h248_AuditReplyV1(implicit_tag, tvb, offset, actx, tree, hf_index);
}
@@ -4773,18 +4841,18 @@ dissect_h248_T_auditCapReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o
static int
dissect_h248_T_auditValueReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 270 "../../asn1/h248/h248.cnf"
+#line 281 "../../asn1/h248/h248.cnf"
curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_AUDITVAL_REPLY,offset,keep_persistent_data);
H248_TAP();
-#line 275 "../../asn1/h248/h248.cnf"
+#line 286 "../../asn1/h248/h248.cnf"
/* h248v1 support */
if(h248_version > 1) {
offset = dissect_h248_AuditReply(implicit_tag, tvb, offset, actx, tree, hf_index);
} else {
- /* call V1 of the dissector */
- offset = dissect_h248_AuditReplyV1(implicit_tag, tvb, offset, actx, tree, hf_index);
+ /* call V1 of the dissector */
+ offset = dissect_h248_AuditReplyV1(implicit_tag, tvb, offset, actx, tree, hf_index);
}
@@ -4810,7 +4878,7 @@ dissect_h248_NotifyReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offse
static int
dissect_h248_T_notifyReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 245 "../../asn1/h248/h248.cnf"
+#line 256 "../../asn1/h248/h248.cnf"
curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_NOTIFY_REPLY,offset,keep_persistent_data);
H248_TAP();
@@ -4868,7 +4936,7 @@ static const ber_sequence_t ServiceChangeReply_sequence[] = {
static int
dissect_h248_ServiceChangeReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 250 "../../asn1/h248/h248.cnf"
+#line 261 "../../asn1/h248/h248.cnf"
curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_SVCCHG_REPLY,offset,keep_persistent_data);
H248_TAP();
@@ -4939,7 +5007,7 @@ dissect_h248_ActionReply(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offse
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
ActionReply_sequence, hf_index, ett_h248_ActionReply);
-#line 135 "../../asn1/h248/h248.cnf"
+#line 146 "../../asn1/h248/h248.cnf"
if (!curr_info.cmd) {
curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_REPLY,offset,keep_persistent_data);
H248_TAP();
@@ -5043,7 +5111,7 @@ dissect_h248_TransactionResponseAck(gboolean implicit_tag _U_, tvbuff_t *tvb _U_
static int
dissect_h248_T_seg_rep_transactionId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 120 "../../asn1/h248/h248.cnf"
+#line 131 "../../asn1/h248/h248.cnf"
guint32 trx_id = 0;
offset = dissect_h248_trx_id(implicit_tag, actx->pinfo, tree, tvb, offset, &trx_id);
curr_info.trx = gcp_trx(curr_info.msg, trx_id, GCP_TRX_ACK, keep_persistent_data);
@@ -5143,15 +5211,15 @@ static const ber_sequence_t Message_sequence[] = {
static int
dissect_h248_Message(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 86 "../../asn1/h248/h248.cnf"
+#line 97 "../../asn1/h248/h248.cnf"
curr_info.msg = gcp_msg(actx->pinfo,tvb_raw_offset(tvb),keep_persistent_data);
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
Message_sequence, hf_index, ett_h248_Message);
-#line 90 "../../asn1/h248/h248.cnf"
+#line 101 "../../asn1/h248/h248.cnf"
col_add_str(actx->pinfo->cinfo, COL_INFO, gcp_msg_to_str(curr_info.msg,keep_persistent_data));
-
+
if (keep_persistent_data)
gcp_analyze_msg(h248_tree, h248_tvb, curr_info.msg, &h248_arrel);
@@ -5209,13 +5277,13 @@ dissect_h248_AuditResultV1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off
static const ber_sequence_t AuditReplyV1_sequence[] = {
{ &hf_h248_terminationID , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_TerminationID },
- { &hf_h248_auditResult_01 , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_h248_AuditResultV1 },
+ { &hf_h248_audit_result , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_h248_AuditResultV1 },
{ NULL, 0, 0, 0, NULL }
};
static int
dissect_h248_AuditReplyV1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 285 "../../asn1/h248/h248.cnf"
+#line 296 "../../asn1/h248/h248.cnf"
/* h248v1 support */
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
AuditReplyV1_sequence, hf_h248_auditValueReplyV1, ett_h248_AuditReplyV1);
@@ -5226,38 +5294,9 @@ dissect_h248_AuditReplyV1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs
-static int
-dissect_h248_ValueV1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 373 "../../asn1/h248/h248.cnf"
- guint8 i;
- guint32 len;
-
-#line 378 "../../asn1/h248/h248.cnf"
-/* check tvb to verify all values ascii or not. If so, output string, else hex */
- len=tvb_length_remaining(tvb, offset);
- for( i=0;i<len;i++) {
- if(!isascii(tvb_get_guint8(tvb, offset+i)) || tvb_get_guint8(tvb, offset+i) == 0) {
- /* not ascii or NULL character so do string as hex string */
- proto_tree_add_text(tree, tvb, offset, len,"%s: 0x%s",
- (proto_registrar_get_nth(hf_index))->name,
- tvb_bytes_to_str(tvb, 0, len));
- return len;
- };
- };
- /* if here, then string is ascii */
- proto_tree_add_text(tree, tvb, offset, len,"%s: %s",
- (proto_registrar_get_nth(hf_index))->name,
- tvb_format_text(tvb, 0, len));
- offset = len;
-
-
- return offset;
-}
-
-
static const ber_sequence_t EventParameterV1_sequence[] = {
- { &hf_h248_eventParamterName, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_Name },
- { &hf_h248_value_01 , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_ValueV1 },
+ { &hf_h248_eventParamterName, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_EventParameterName },
+ { &hf_h248_event_param_value, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_EventParamValueV1 },
{ NULL, 0, 0, 0, NULL }
};
@@ -5270,76 +5309,60 @@ dissect_h248_EventParameterV1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
}
-static const ber_sequence_t T_value_sequence_of[1] = {
- { &hf_h248_value_item , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_h248_OCTET_STRING },
-};
-
-static int
-dissect_h248_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
- T_value_sequence_of, hf_index, ett_h248_T_value);
-
- return offset;
-}
-
-
-static const value_string h248_T_extraInfo_01_vals[] = {
- { 0, "relation" },
- { 1, "range" },
- { 2, "sublist" },
- { 0, NULL }
-};
-
-static const ber_choice_t T_extraInfo_01_choice[] = {
- { 0, &hf_h248_relation , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_Relation },
- { 1, &hf_h248_range , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_BOOLEAN },
- { 2, &hf_h248_sublist , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_h248_BOOLEAN },
- { 0, NULL, 0, 0, 0, NULL }
-};
-
-static int
-dissect_h248_T_extraInfo_01(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_ber_choice(actx, tree, tvb, offset,
- T_extraInfo_01_choice, hf_index, ett_h248_T_extraInfo_01,
- NULL);
-
- return offset;
-}
-
-static const ber_sequence_t PropertyParmV1_sequence[] = {
- { &hf_h248_name , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_PkgdName },
- { &hf_h248_value_02 , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_T_value },
- { &hf_h248_extraInfo_01 , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h248_T_extraInfo_01 },
+static const ber_sequence_t SigParameterV1_sequence[] = {
+ { &hf_h248_sigParameterName, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_SigParameterName },
+ { &hf_h248_sig_param_value, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_SigParamValueV1 },
{ NULL, 0, 0, 0, NULL }
};
static int
-dissect_h248_PropertyParmV1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_h248_SigParameterV1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
- PropertyParmV1_sequence, hf_index, ett_h248_PropertyParmV1);
+ SigParameterV1_sequence, hf_index, ett_h248_SigParameterV1);
return offset;
}
-static const ber_sequence_t SigParameterV1_sequence[] = {
- { &hf_h248_sigParameterName_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_h248_Name },
- { &hf_h248_value_01 , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h248_ValueV1 },
- { NULL, 0, 0, 0, NULL }
-};
static int
-dissect_h248_SigParameterV1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
- SigParameterV1_sequence, hf_index, ett_h248_SigParameterV1);
+dissect_h248_ValueV1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 383 "../../asn1/h248/h248.cnf"
+ guint8 i;
+ guint32 len;
+
+#line 388 "../../asn1/h248/h248.cnf"
+/* check tvb to verify all values ascii or not. If so, output string, else hex */
+ len=tvb_length_remaining(tvb, offset);
+ if ( curr_info.par && curr_info.par->dissector) {
+ curr_info.par->dissector(tree, /*next_*/tvb, actx->pinfo, *(curr_info.par->hfid), &curr_info, curr_info.par->data);
+ } else {
+ /* if no registered dissector create output */
+ for( i=0;i<len;i++) {
+ if(!isascii(tvb_get_guint8(tvb, offset+i)) || tvb_get_guint8(tvb, offset+i) == 0) {
+ /* not ascii or NULL character so do string as hex string */
+ proto_tree_add_text(tree, tvb, offset, len,"%s: 0x%s",
+ (proto_registrar_get_nth(hf_index))->name,
+ tvb_bytes_to_str(tvb, 0, len));
+ return len;
+ };
+ };
+ /* if here, then string is ascii */
+ proto_tree_add_text(tree, tvb, offset, len,"%s: %s",
+ (proto_registrar_get_nth(hf_index))->name,
+ tvb_format_text(tvb, 0, len));
+ }
+ offset = len;
+
+
return offset;
}
/*--- End of included file: packet-h248-fn.c ---*/
-#line 1326 "../../asn1/h248/packet-h248-template.c"
+#line 1404 "../../asn1/h248/packet-h248-template.c"
static void dissect_h248_tpkt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
dissect_tpkt_encap(tvb, pinfo, tree, h248_desegment, h248_handle);
@@ -5381,6 +5404,16 @@ dissect_h248(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
return;
}
}
+ {
+ proto_item *hidden_item = NULL;
+ guint32 magic_num = 0, offset = 0;
+ magic_num = tvb_get_ntohl(tvb, offset);
+ hidden_item = proto_tree_add_uint(tree, hf_248_magic_num, tvb, offset, 4, magic_num);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ if( dissector_try_uint(subdissector_table, magic_num, tvb, pinfo, tree) ) {
+ return;
+ }
+ }
}
/* Make entry in the Protocol column on summary display */
@@ -5402,15 +5435,17 @@ void proto_register_h248(void) {
/* List of fields */
static hf_register_info hf[] = {
+ { &hf_248_magic_num, {
+ "Magic Number for Avaya H248", "h248.magic_num", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL}},
{ &hf_h248_mtpaddress_ni, {
"NI", "h248.mtpaddress.ni", FT_UINT32, BASE_DEC,
NULL, 0, NULL, HFILL }},
{ &hf_h248_mtpaddress_pc, {
"PC", "h248.mtpaddress.pc", FT_UINT32, BASE_DEC,
NULL, 0, NULL, HFILL }},
- { &hf_h248_pkg_name, {
+ { &hf_h248_pkg_name, {
"Package", "h248.package_name", FT_UINT16, BASE_HEX|BASE_EXT_STRING,
- &package_name_vals_ext, 0, NULL, HFILL }},
+ NULL, 0, NULL, HFILL }},
{ &hf_248_pkg_param, {
"Parameter ID", "h248.package_paramid", FT_UINT16, BASE_HEX,
NULL, 0, NULL, HFILL }},
@@ -5422,10 +5457,10 @@ void proto_register_h248(void) {
NULL, 0, "Parameter ID", HFILL }},
{ &hf_h248_event_name, {
"Package and Event name", "h248.event_name", FT_UINT32, BASE_HEX|BASE_EXT_STRING,
- &event_name_vals_ext, 0, "Package", HFILL }},
+ NULL, 0, "Package", HFILL }},
{ &hf_h248_signal_name, {
"Package and Signal name", "h248.signal_name", FT_UINT32, BASE_HEX|BASE_EXT_STRING,
- &signal_name_vals_ext, 0, "Package", HFILL }},
+ NULL, 0, "Package", HFILL }},
{ &hf_h248_pkg_bcp_BNCChar_PDU,
{ "BNCChar", "h248.package_bcp.BNCChar",
FT_UINT32, BASE_DEC, VALS(gcp_term_types), 0,
@@ -5914,7 +5949,7 @@ void proto_register_h248(void) {
{ "auditDescriptor", "h248.auditDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_h248_statisticsDescriptor,
+ { &hf_h248_aDstatisticsDescriptor,
{ "statisticsDescriptor", "h248.statisticsDescriptor",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
@@ -5954,6 +5989,10 @@ void proto_register_h248(void) {
{ "observedEventsDescriptor", "h248.observedEventsDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_h248_aRPstatisticsDescriptor,
+ { "statisticsDescriptor", "h248.statisticsDescriptor",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
{ &hf_h248_packagesDescriptor,
{ "packagesDescriptor", "h248.packagesDescriptor",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -6038,7 +6077,7 @@ void proto_register_h248(void) {
{ "remoteDescriptor", "h248.remoteDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"IndAudLocalRemoteDescriptor", HFILL }},
- { &hf_h248_statisticsDescriptor_01,
+ { &hf_h248_statisticsDescriptor,
{ "statisticsDescriptor", "h248.statisticsDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"IndAudStatisticsDescriptor", HFILL }},
@@ -6270,6 +6309,10 @@ void proto_register_h248(void) {
{ "remoteDescriptor", "h248.remoteDescriptor",
FT_NONE, BASE_NONE, NULL, 0,
"LocalRemoteDescriptor", HFILL }},
+ { &hf_h248_sPstatisticsDescriptor,
+ { "statisticsDescriptor", "h248.statisticsDescriptor",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
{ &hf_h248_streamMode,
{ "streamMode", "h248.streamMode",
FT_UINT32, BASE_DEC, VALS(h248_StreamMode_vals), 0,
@@ -6282,11 +6325,11 @@ void proto_register_h248(void) {
{ "reserveGroup", "h248.reserveGroup",
FT_BOOLEAN, BASE_NONE, NULL, 0,
"BOOLEAN", HFILL }},
- { &hf_h248_propertyParms_01,
+ { &hf_h248_lCDpropertyParms,
{ "propertyParms", "h248.propertyParms",
FT_UINT32, BASE_DEC, NULL, 0,
"SEQUENCE_OF_PropertyParm", HFILL }},
- { &hf_h248_propertyParms_item,
+ { &hf_h248_lCDpropertyParms_item,
{ "PropertyParm", "h248.PropertyParm",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
@@ -6318,6 +6361,14 @@ void proto_register_h248(void) {
{ "PropertyParm", "h248.PropertyParm",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_h248_tSDpropertyParms,
+ { "propertyParms", "h248.propertyParms",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_PropertyParm", HFILL }},
+ { &hf_h248_tSDpropertyParms_item,
+ { "PropertyParm", "h248.PropertyParm",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_h248_tSEventBufferControl,
{ "eventBufferControl", "h248.eventBufferControl",
FT_UINT32, BASE_DEC, VALS(h248_EventBufferControl_vals), 0,
@@ -6638,7 +6689,7 @@ void proto_register_h248(void) {
{ "Value item", "h248.Value_item",
FT_BYTES, BASE_NONE, NULL, 0,
"OCTET_STRING", HFILL }},
- { &hf_h248_auditResult_01,
+ { &hf_h248_audit_result,
{ "auditResult", "h248.auditResult",
FT_UINT32, BASE_DEC, VALS(h248_AuditResultV1_vals), 0,
"AuditResultV1", HFILL }},
@@ -6649,27 +6700,15 @@ void proto_register_h248(void) {
{ &hf_h248_eventParamterName,
{ "eventParamterName", "h248.eventParamterName",
FT_BYTES, BASE_NONE, NULL, 0,
- "Name", HFILL }},
- { &hf_h248_value_01,
+ "EventParameterName", HFILL }},
+ { &hf_h248_event_param_value,
{ "value", "h248.value",
FT_BYTES, BASE_NONE, NULL, 0,
- "ValueV1", HFILL }},
- { &hf_h248_value_02,
+ "EventParamValueV1", HFILL }},
+ { &hf_h248_sig_param_value,
{ "value", "h248.value",
- FT_UINT32, BASE_DEC, NULL, 0,
- NULL, HFILL }},
- { &hf_h248_value_item,
- { "value item", "h248.value_item",
- FT_BYTES, BASE_NONE, NULL, 0,
- "OCTET_STRING", HFILL }},
- { &hf_h248_extraInfo_01,
- { "extraInfo", "h248.extraInfo",
- FT_UINT32, BASE_DEC, VALS(h248_T_extraInfo_01_vals), 0,
- "T_extraInfo_01", HFILL }},
- { &hf_h248_sigParameterName_01,
- { "sigParameterName", "h248.sigParameterName",
FT_BYTES, BASE_NONE, NULL, 0,
- "Name", HFILL }},
+ "SigParamValueV1", HFILL }},
{ &hf_h248_T_auditToken_muxToken,
{ "muxToken", "h248.muxToken",
FT_BOOLEAN, 8, NULL, 0x80,
@@ -6732,7 +6771,7 @@ void proto_register_h248(void) {
NULL, HFILL }},
/*--- End of included file: packet-h248-hfarr.c ---*/
-#line 1466 "../../asn1/h248/packet-h248-template.c"
+#line 1556 "../../asn1/h248/packet-h248-template.c"
GCP_HF_ARR_ELEMS("h248",h248_arrel)
@@ -6895,13 +6934,10 @@ void proto_register_h248(void) {
&ett_h248_AuditReplyV1,
&ett_h248_AuditResultV1,
&ett_h248_EventParameterV1,
- &ett_h248_PropertyParmV1,
- &ett_h248_T_value,
- &ett_h248_T_extraInfo_01,
&ett_h248_SigParameterV1,
/*--- End of included file: packet-h248-ettarr.c ---*/
-#line 1484 "../../asn1/h248/packet-h248-template.c"
+#line 1574 "../../asn1/h248/packet-h248-template.c"
};
module_t *h248_module;
@@ -6915,6 +6951,8 @@ void proto_register_h248(void) {
/* Register fields and subtrees */
proto_register_field_array(proto_h248, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
+
+ subdissector_table = register_dissector_table("h248.magic_num", "H248 Magic Num", FT_UINT32, BASE_HEX);
h248_module = prefs_register_protocol(proto_h248, proto_reg_handoff_h248);
prefs_register_bool_preference(h248_module, "ctx_info",
diff --git a/epan/dissectors/packet-h248.h b/epan/dissectors/packet-h248.h
index c798050291..aa9876a126 100644
--- a/epan/dissectors/packet-h248.h
+++ b/epan/dissectors/packet-h248.h
@@ -1,7 +1,7 @@
/* Do not modify this file. */
/* It is created automatically by the ASN.1 to Wireshark dissector compiler */
/* packet-h248.h */
-/* ../../../tools/asn2wrs.py -b -p h248 -c ../../../asn1/h248/h248.cnf -s ../../../asn1/h248/packet-h248-template -D ../../../asn1/h248 -O ../../../epan/dissectors h248v3.asn h248v1support.asn */
+/* ../../tools/asn2wrs.py -b -p h248 -c ./h248.cnf -s ./packet-h248-template -D . -O ../../epan/dissectors h248v3.asn h248v1support.asn */
/* Input file: packet-h248-template.h */
@@ -36,20 +36,27 @@
#ifndef PACKET_H248_H
#include <epan/gcp.h>
-
/*#include "packet-h248-exp.h"*/
typedef struct _h248_curr_info_t h248_curr_info_t;
typedef void (*h248_pkg_param_dissector_t)(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo _U_, int hfid, h248_curr_info_t*, void*);
-extern void h248_param_item(proto_tree*, tvbuff_t*, packet_info* , int, h248_curr_info_t*,void* ignored);
+extern void h248_param_bytes_item(proto_tree*, tvbuff_t*, packet_info* , int, h248_curr_info_t*,void* ignored);
+extern void h248_param_uint_item(proto_tree*, tvbuff_t*, packet_info* , int, h248_curr_info_t*,void* ignored);
extern void h248_param_ber_integer(proto_tree*, tvbuff_t*, packet_info* , int, h248_curr_info_t*,void* ignored);
extern void h248_param_ber_octetstring(proto_tree*, tvbuff_t*, packet_info* , int, h248_curr_info_t*,void* ignored);
extern void h248_param_ber_boolean(proto_tree*, tvbuff_t*, packet_info* , int, h248_curr_info_t*,void* ignored);
extern void external_dissector(proto_tree*, tvbuff_t*, packet_info* , int, h248_curr_info_t*,void* dissector_handle);
extern void h248_param_PkgdName(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo , int hfid _U_, h248_curr_info_t* u _U_, void* dissector_hdl);
+typedef enum {
+ ADD_PKG, /* add package at registration ONLY if no matching package ID */
+ REPLACE_PKG, /* replace/add package at registration */
+ MERGE_PKG_HIGH, /* merge h248_package_t at registration favor new package */
+ MERGE_PKG_LOW /* merge h248_package_t at registration favor current package */
+} pkg_reg_action;
+
typedef struct _h248_pkg_param_t {
guint32 id;
int* hfid;
@@ -95,6 +102,11 @@ typedef struct _h248_package_t {
const h248_pkg_stat_t* statistics;
} h248_package_t;
+typedef struct _save_h248_package_t {
+ h248_package_t *pkg;
+ gboolean is_default;
+} s_h248_package_t;
+
struct _h248_curr_info_t {
gcp_ctx_t* ctx;
gcp_trx_t* trx;
@@ -108,6 +120,6 @@ struct _h248_curr_info_t {
const h248_pkg_param_t* par;
};
-void h248_register_package(const h248_package_t*);
+void h248_register_package(const h248_package_t* pkg, pkg_reg_action reg_action);
#endif /* PACKET_H248_H */
diff --git a/epan/dissectors/packet-h248_10.c b/epan/dissectors/packet-h248_10.c
index a48cc622f2..a43a0ea10e 100644
--- a/epan/dissectors/packet-h248_10.c
+++ b/epan/dissectors/packet-h248_10.c
@@ -46,6 +46,11 @@ static int hf_h248_CHP_mgcon_reduction = -1;
static gint ett_h248_CHP = -1;
static gint ett_h248_CHP_mgcon = -1;
+static const value_string h248_CHP_prop_vals[] = {
+ { 0, "chp (MG Congestion Handling)" },
+ { 0, NULL }
+};
+
static const value_string h248_CHP_events_vals[] = {
{1, "MGCon"},
{ 0, NULL }
@@ -73,7 +78,7 @@ static const h248_package_t h248_pkg_CHP = {
&proto_h248_CHP,
&ett_h248_CHP,
- NULL,
+ h248_CHP_prop_vals,
NULL,
h248_CHP_events_vals,
NULL,
@@ -102,7 +107,7 @@ void proto_register_h248_dot10(void) {
proto_register_subtree_array(ett, array_length(ett));
- h248_register_package(&h248_pkg_CHP);
+ h248_register_package(&h248_pkg_CHP,REPLACE_PKG);
}
diff --git a/epan/dissectors/packet-h248_2.c b/epan/dissectors/packet-h248_2.c
index be4579192e..bfde05ac07 100644
--- a/epan/dissectors/packet-h248_2.c
+++ b/epan/dissectors/packet-h248_2.c
@@ -58,7 +58,7 @@ static const value_string hf_h248_2_dtone_dtt_obs_evt_val_values[] = {
{ 0x0006, "BellHi"}, /* A Bell 103 carrier on the high channel */
{ 0x0007, "BellLo"}, /* A Bell 103 low channel */
{ 0x0008, "Baudot45"}, /* Baudot45 initial carrier and characters */
- { 0x0008, "Baudot50"}, /* A Baudot50 initial carrier and characters */
+ { 0x0009, "Baudot50"}, /* A Baudot50 initial carrier and characters */
{ 0x000a, "Edt"}, /* An EDT initial tone and characters */
{ 0x000b, "DTMF"}, /* DTMF signals */
{ 0x001c, "CTM"}, /* CTM signals */
@@ -151,7 +151,7 @@ void proto_register_h248_dot2(void) {
proto_register_subtree_array(ett, array_length(ett));
- h248_register_package(&h248_pkg_ctype);
+ h248_register_package(&h248_pkg_ctype,MERGE_PKG_HIGH);
}
diff --git a/epan/dissectors/packet-h248_3gpp.c b/epan/dissectors/packet-h248_3gpp.c
index 8d22b9ec34..739e1df68c 100644
--- a/epan/dissectors/packet-h248_3gpp.c
+++ b/epan/dissectors/packet-h248_3gpp.c
@@ -53,6 +53,7 @@ static gint ett_h248_package_3GUP = -1;
static gboolean implicit = FALSE;
static const value_string h248_3GUP_properties_vals[] = {
+ { 0x0000, "threegup (3G User Plane)" },
{ 0x0001, "Mode" },
{ 0x0002, "Versions" },
{ 0x0003, "delerrsdu" },
@@ -577,8 +578,8 @@ void proto_register_h248_3gpp(void) {
proto_register_subtree_array(ett, array_length(ett));
- h248_register_package(&h248_package_3GUP);
- h248_register_package(&h248_package_3GCSD);
- h248_register_package(&h248_package_3GTFO);
+ h248_register_package(&h248_package_3GUP,REPLACE_PKG);
+ h248_register_package(&h248_package_3GCSD, REPLACE_PKG);
+ h248_register_package(&h248_package_3GTFO, REPLACE_PKG);
}
diff --git a/epan/dissectors/packet-h248_7.c b/epan/dissectors/packet-h248_7.c
index d94ad99b32..383b602647 100644
--- a/epan/dissectors/packet-h248_7.c
+++ b/epan/dissectors/packet-h248_7.c
@@ -57,36 +57,41 @@ static gint ett_h248_an = -1;
static gint ett_h248_an_apf = -1;
static gint ett_h248_an_apv = -1;
+static const value_string h248_an_prop_vals[] = {
+ { 0, "Generic Announcment Package (an) (H.248.7)" },
+ { 0, NULL }
+};
+
static const value_string h248_an_signals_vals[] = {
- { 0x0001, "apf"},
- { 0x0002, "apv"},
+ { 0x0001, "Annoumcement Play Fixed (apf)"},
+ { 0x0002, "Announcement Play Variable (apv)"},
{0,NULL}
};
static const value_string h248_an_apf_params_vals[] = {
- { 0x0001, "an"},
- { 0x0002, "noc"},
- { 0x0003, "av"},
- { 0x0004, "di"},
+ { 0x0001, "Name (an)"},
+ { 0x0002, "Number of Cycles (noc)"},
+ { 0x0003, "Variant (av)"},
+ { 0x0004, "Direction (di)"},
{0,NULL}
};
static const value_string h248_an_apv_params_vals[] = {
- { 0x0001, "an"},
- { 0x0002, "noc"},
- { 0x0003, "av"},
- { 0x0004, "num"},
- { 0x0005, "spi"},
- { 0x0006, "sp"},
- { 0x0007, "di"},
+ { 0x0001, "Name (an)"},
+ { 0x0002, "Number of Cycles (noc)"},
+ { 0x0003, "Variant (av)"},
+ { 0x0004, "Number (num)"},
+ { 0x0005, "Specific Parameters Interpretation (spi)"},
+ { 0x0006, "Specific Parameters (sp)"},
+ { 0x0007, "Direction (di)"},
{0,NULL}
};
static const value_string h248_an_di_vals[] = {
- { 0x0001, "ext"},
- { 0x0002, "int"},
- { 0x0003, "both"},
+ { 0x0001, "External (ext)"},
+ { 0x0002, "Internal (int)"},
+ { 0x0003, "Both (both)"},
{0,NULL}
};
@@ -122,7 +127,7 @@ static const h248_package_t h248_pkg_an = {
0x001d,
&proto_h248_an,
&ett_h248_an,
- NULL,
+ h248_an_prop_vals,
h248_an_signals_vals,
NULL,
NULL,
@@ -168,7 +173,7 @@ void proto_register_h248_7(void) {
proto_register_subtree_array(ett, array_length(ett));
- h248_register_package(&h248_pkg_an);
+ h248_register_package(&h248_pkg_an,REPLACE_PKG);
}
diff --git a/epan/dissectors/packet-h248_annex_c.c b/epan/dissectors/packet-h248_annex_c.c
index 9cd13d4e43..d03c21647c 100644
--- a/epan/dissectors/packet-h248_annex_c.c
+++ b/epan/dissectors/packet-h248_annex_c.c
@@ -180,6 +180,7 @@ static gint ett_vpvc = -1;
static gint ett_codec = -1;
static const value_string h248_annexc_package_properties_vals[] = {
+ { 0x0000, "Media stream properties H.248.1 Annex C" },
{ 0x1001, "media" },
{ 0x1002, "transmission mode" },
{ 0x1003, "num_of_channels" },
@@ -1509,6 +1510,6 @@ void proto_register_h248_annex_c(void) {
proto_register_subtree_array(ett, array_length(ett));
- h248_register_package(&h248_annexc_package);
+ h248_register_package(&h248_annexc_package,MERGE_PKG_HIGH);
}
diff --git a/epan/dissectors/packet-h248_annex_e.c b/epan/dissectors/packet-h248_annex_e.c
index 372993cfad..af2865ea64 100644
--- a/epan/dissectors/packet-h248_annex_e.c
+++ b/epan/dissectors/packet-h248_annex_e.c
@@ -29,6 +29,14 @@
# include "config.h"
#endif
+
+/*****/
+#include <epan/proto.h>
+#include <epan/tvbuff.h>
+#include <epan/tvbuff-int.h>
+#include <epan/tvbparse.h>
+/*****/
+
#include "packet-h248.h"
#define PNAME "H.248 Annex E"
#define PSNAME "H248E"
@@ -39,6 +47,7 @@
static int proto_h248_annex_E = -1;
static gboolean h248_e_implicit = FALSE;
+static gboolean implicit = FALSE;
/* H.248.1 E.1 Generic Package */
static int hf_h248_pkg_generic = -1;
@@ -55,25 +64,24 @@ static gint ett_h248_pkg_generic_cause_evt = -1;
static gint ett_h248_pkg_generic = -1;
static gint ett_h248_pkg_generic_sc_evt = -1;
-static const value_string h248_pkg_generic_cause_vals[] _U_ = {
- {1, "gencause"},
- {2, "failurecause"},
+static const value_string h248_pkg_generic_props_vals[] = {
+ { 0,"Generic Package - Annex E (g)" },
{ 0, NULL }
};
-static const value_string h248_pkg_generic_evt_vals[] = {
- {1, "Cause"},
- {2, "Signal Completion"},
+static const value_string h248_pkg_generic_cause_vals[] _U_ = {
+ {1, "General Cause (gencause)"},
+ {2, "Faiure Cause (failurecause)"},
{ 0, NULL }
};
static const value_string h248_pkg_generic_cause_gencause_vals[] = {
- { 1, "NR (Normal Release)"},
- { 2, "UR (Unavailable Resources)"},
- { 3, "FT (Failure, Temporary)"},
- { 4, "FP (Failure, Permanent)"},
- { 5, "IW (Interworking Error)"},
- { 6, "UN (Unsupported)"},
+ { 1, "Normal Release (NR)"},
+ { 2, "Unavailable Resources (UR)"},
+ { 3, "Failure, Temporary (FT)"},
+ { 4, "Failure, Permanent (FP)"},
+ { 5, "Interworking Error (IW)"},
+ { 6, "Unsupported (UN)"},
{ 0, NULL }
};
@@ -84,10 +92,10 @@ static h248_pkg_param_t h248_pkg_generic_cause_evt_params[] = {
};
static const value_string h248_pkg_generic_sc_meth_vals[] _U_ = {
- {0x0001,"SigID"},
- {0x0002,"Meth"},
- {0x0003,"SLID"},
- {0x0004,"RID"},
+ {0x0001,"Signal Identity (SigID)"},
+ {0x0002,"Termination Method (Meth)"},
+ {0x0003,"Signal List ID (SLID)"},
+ {0x0004,"Request ID (RID)"},
{0,NULL}
};
@@ -118,9 +126,9 @@ static h248_package_t h248_pkg_generic = {
0x0001,
&hf_h248_pkg_generic,
&ett_h248_pkg_generic,
+ h248_pkg_generic_props_vals,
NULL,
- NULL,
- h248_pkg_generic_evt_vals,
+ h248_pkg_generic_cause_vals,
NULL,
NULL,
NULL,
@@ -129,107 +137,308 @@ static h248_package_t h248_pkg_generic = {
};
-/* H.248.1 E.2 Base Root Package
+/* H.248.1 E.2 Base Root Package */
static int hf_h248_pkg_root = -1;
-static int hf_h248_pkg_root_params = -1;
static int hf_h248_pkg_root_maxnrofctx = -1;
static int hf_h248_pkg_root_maxtermsperctx = -1;
static int hf_h248_pkg_root_normalmgexectime = -1;
static int hf_h248_pkg_root_normalmgcexecutiontime = -1;
-static int hf_h248_pkg_root_provisionalresponsetimervalue = -1;
-
-static gint ett_h248_pkg_root = -1;
+static int hf_h248_pkg_root_mg_provisionalresponsetimervalue = -1;
+static int hf_h248_pkg_root_mgc_provisionalresponsetimervalue = -1;
+static int hf_h248_pkg_root_mgc_orginalpendinglimit = -1;
+static int hf_h248_pkg_root_mg_orginalpendinglimit = -1;
+
+static gint ett_h248_pkg_root_params = -1;
+
+static const value_string h248_pkg_root_props_vals[] = {
+ { 0x0000, "Base Root Package - Annex E (root)" },
+ { 0x0001, "Maximum Number of Contexts" },
+ { 0x0002, "Maximum Terminations Per Context" },
+ { 0x0003, "Normal MG Execution Time" },
+ { 0x0004, "Normal MGC Execution Time" },
+ { 0x0005, "MG Provisional Response Timer Value" },
+ { 0x0006, "MGC Provisional Response Timer Value" },
+ { 0x0007, "MGC Originated Pending Limit" },
+ { 0x0008, "MG Originated Pending Limit" },
+ { 0, NULL }
+};
static h248_pkg_param_t h248_pkg_root_properties[] = {
{ 0x0001, &hf_h248_pkg_root_maxnrofctx, h248_param_ber_integer, &h248_e_implicit },
{ 0x0002, &hf_h248_pkg_root_maxtermsperctx, h248_param_ber_integer, &h248_e_implicit },
{ 0x0003, &hf_h248_pkg_root_normalmgexectime, h248_param_ber_integer, &h248_e_implicit },
{ 0x0004, &hf_h248_pkg_root_normalmgcexecutiontime, h248_param_ber_integer, &h248_e_implicit },
- { 0x0005, &hf_h248_pkg_root_provisionalresponsetimervalue, h248_param_ber_integer, &h248_e_implicit },
+ { 0x0005, &hf_h248_pkg_root_mg_provisionalresponsetimervalue, h248_param_ber_integer, &implicit },
+ { 0x0006, &hf_h248_pkg_root_mgc_provisionalresponsetimervalue, h248_param_ber_integer, &implicit },
+ { 0x0007, &hf_h248_pkg_root_mgc_orginalpendinglimit, h248_param_ber_integer, &implicit },
+ { 0x0008, &hf_h248_pkg_root_mg_orginalpendinglimit, h248_param_ber_integer, &implicit },
{ 0, NULL, NULL, NULL}
};
static h248_package_t h248_pkg_root = {
0x0002,
&hf_h248_pkg_root,
- &hf_h248_pkg_root_params,
- &ett_h248_pkg_root,
- NULL,
+ &ett_h248_pkg_root_params,
+ h248_pkg_root_props_vals,
NULL,
NULL,
NULL,
h248_pkg_root_properties,
NULL,
NULL,
- NULL,
NULL
};
-*/
-/* H.248.1 E.3 Tone Generator Package
-static int hf_h248_pkg_tonegen = -1;
-static int hf_h248_pkg_tonegen_params = -1;
-static int hf_h248_pkg_tonegen_sig_pt = -1;
-static int hf_h248_pkg_tonegen_sig_pt_tl = -1;
-static int hf_h248_pkg_tonegen_sig_pt_ind = -1;
+/* H.248.1 E.3 Tone Generator Package */
+static int hf_h248_pkg_tonegen = -1;
+static int hf_h248_pkg_tonegen_sig_pt = -1;
+static int hf_h248_pkg_tonegen_sig_pt_tl = -1;
+static int hf_h248_pkg_tonegen_sig_pt_ind = -1;
+static int hf_h248_pkg_tonegen_sig_pg_btd = -1;
+
+static gint ett_h248_pkg_tonegen_params = -1;
+static gint ett_h248_pkg_tonegen_sig_pt = -1;
-static gint ett_h248_pkg_tonegen = -1;
+static const value_string h248_pkg_tonegen_props_vals[] = {
+ { 0x0000, "Tone Generator - Annex E (tonegen)" },
+ { 0, NULL }
+};
+
+static const value_string h248_pkg_tonegen_sigs_vals[] = {
+ { 0x0001, "Play Tone (pt)" },
+ { 0, NULL }
+};
+
+static const value_string h248_pkg_tonegen_pt_param_vals[] = {
+ { 0x0001, "Tone ID List (tl)" },
+ { 0x0002, "Inter-signal duration (ind)" },
+ { 0x0003, "Tone Direction (td)" },
+ { 0, NULL }
+};
+
+static const value_string h248_pkg_tonegen_pt_btd_param_vals[] = {
+ { 0x0001, "External (EXT)" },
+ { 0x0002, "Internal (INT)" },
+ { 0x0003, "Both (BOTH)" },
+ { 0, NULL }
+};
-static h248_pkg_param_t hf_h248_pkg_tonegen_properties[] = {
+static h248_pkg_param_t h248_pkg_tonegen_sig_params[] = {
{ 0x0001, &hf_h248_pkg_tonegen_sig_pt_tl, h248_param_ber_integer, &h248_e_implicit },
{ 0x0002, &hf_h248_pkg_tonegen_sig_pt_ind, h248_param_ber_integer, &h248_e_implicit },
+ { 0x0003, &hf_h248_pkg_tonegen_sig_pg_btd, h248_param_ber_integer, &implicit },
{ 0, NULL, NULL, NULL}
};
+static const h248_pkg_sig_t h248_pkg_tonegen_signals[] = {
+ { 0x0001, &hf_h248_pkg_tonegen_sig_pt, &ett_h248_pkg_tonegen_sig_pt, h248_pkg_tonegen_sig_params, h248_pkg_tonegen_pt_param_vals },
+ { 0, NULL, NULL, NULL, NULL }
+};
+
static h248_package_t h248_pkg_tonegen = {
- 0x0002,
+ 0x0003,
&hf_h248_pkg_tonegen,
- &hf_h248_pkg_tonegen_params,
- &ett_h248_pkg_tonegen,
- h248_pkg_root_properties,
- NULL,
- NULL,
+ &ett_h248_pkg_tonegen_params,
+ h248_pkg_tonegen_props_vals,
+ h248_pkg_tonegen_sigs_vals,
+ NULL,NULL,NULL,
+ h248_pkg_tonegen_signals,
+ NULL,
NULL
};
-*/
-/* H.248.1 E.4 Tone Detector Package
+/* H.248.1 E.4 Tone Detector Package */
static int hf_h248_pkg_tonedet = -1;
static int hf_h248_pkg_tonedet_evt_std = -1;
static int hf_h248_pkg_tonedet_evt_etd = -1;
static int hf_h248_pkg_tonedet_evt_ltd = -1;
-*/
+
+static int hf_h248_pkg_tonedet_evt_tl_param = -1;
+static int hf_h248_pkg_tonedet_evt_dur_param = -1;
+static int hf_h248_pkg_tonedet_evt_tid_param = -1;
+
+static gint ett_h248_pkg_tonedet = -1;
+static gint ett_h248_pkg_tonedet_evt_std = -1;
+static gint ett_h248_pkg_tonedet_evt_etd = -1;
+static gint ett_h248_pkg_tonedet_evt_ltd = -1;
+
+static const value_string h248_pkg_tonedet_props_vals[] = {
+ { 0x0000, "Tone Detection Package - Annex E (tonedet)" },
+ { 0, NULL }
+};
+
+static const value_string h248_pkg_tonedet_events_vals[] = {
+ { 0x0001, "Start Tone Detected (std)" },
+ { 0x0002, "End Tone Detected (etd)" },
+ { 0x0003, "Long Tone Detected (ltd)" },
+ { 0, NULL }
+};
+
+static const value_string h248_pkg_tonedet_evt_param_vals[] = {
+ { 0x0001, "Tone ID List (tl)" },
+ { 0x0002, "Duration (dur)" },
+ { 0x0003, "Tone ID (tid)" },
+ { 0, NULL }
+};
+
+static const value_string h248_pkg_tonedet_tl_params_vals[] = {
+ { 0x0000, "Wildcard (*)" },
+ { 0, NULL }
+};
+
+static const h248_pkg_param_t h248_pkg_tonedet_event_params[] = {
+ { 0x0001, &hf_h248_pkg_tonedet_evt_tl_param, h248_param_uint_item, &implicit },
+ { 0x0002, &hf_h248_pkg_tonedet_evt_dur_param, h248_param_ber_integer, &implicit },
+ { 0x0003, &hf_h248_pkg_tonedet_evt_tid_param, h248_param_ber_integer, &implicit },
+ { 0, NULL, NULL, NULL }
+};
+
+static const h248_pkg_evt_t h248_pkg_tonedet_events[] = {
+ { 0x0001, &hf_h248_pkg_tonedet_evt_std, &ett_h248_pkg_tonedet_evt_std, h248_pkg_tonedet_event_params, h248_pkg_tonedet_evt_param_vals },
+ { 0x0002, &hf_h248_pkg_tonedet_evt_etd, &ett_h248_pkg_tonedet_evt_etd, h248_pkg_tonedet_event_params, h248_pkg_tonedet_evt_param_vals },
+ { 0x0003, &hf_h248_pkg_tonedet_evt_ltd, &ett_h248_pkg_tonedet_evt_ltd, h248_pkg_tonedet_event_params, h248_pkg_tonedet_evt_param_vals },
+ { 0, NULL, NULL, NULL, NULL }
+};
+
+static h248_package_t h248_pkg_tonedet = {
+ 0x0004,
+ &hf_h248_pkg_tonedet,
+ &ett_h248_pkg_tonedet,
+ h248_pkg_tonedet_props_vals,
+ NULL,
+ h248_pkg_tonedet_events_vals,
+ NULL,
+ NULL,
+ NULL,
+ h248_pkg_tonedet_events,
+ NULL
+};
+
/* E.5 Basic DTMF Generator Package */
-static int hf_h248_pkg_dg = -1;
-static int hf_h248_pkg_dg_sig_d0 = -1;
-static int hf_h248_pkg_dg_sig_d1 = -1;
-static int hf_h248_pkg_dg_sig_d2 = -1;
-static int hf_h248_pkg_dg_sig_d3 = -1;
-
-static gint ett_h248_pkg_dg = -1;
-static gint ett_h248_pkg_dg_sig_d0 = -1;
-static gint ett_h248_pkg_dg_sig_d1 = -1;
-static gint ett_h248_pkg_dg_sig_d2 = -1;
-static gint ett_h248_pkg_dg_sig_d3 = -1;
+static int hf_h248_pkg_dg = -1;
+static int hf_h248_pkg_dg_sig_pt = -1;
+static int hf_h248_pkg_dg_sig_d0 = -1;
+static int hf_h248_pkg_dg_sig_d1 = -1;
+static int hf_h248_pkg_dg_sig_d2 = -1;
+static int hf_h248_pkg_dg_sig_d3 = -1;
+static int hf_h248_pkg_dg_sig_d4 = -1;
+static int hf_h248_pkg_dg_sig_d5 = -1;
+static int hf_h248_pkg_dg_sig_d6 = -1;
+static int hf_h248_pkg_dg_sig_d7 = -1;
+static int hf_h248_pkg_dg_sig_d8 = -1;
+static int hf_h248_pkg_dg_sig_d9 = -1;
+static int hf_h248_pkg_dg_sig_da = -1;
+static int hf_h248_pkg_dg_sig_db = -1;
+static int hf_h248_pkg_dg_sig_dc = -1;
+static int hf_h248_pkg_dg_sig_dd = -1;
+static int hf_h248_pkg_dg_sig_ds = -1;
+static int hf_h248_pkg_dg_sig_do = -1;
+static int hf_h248_pkg_dg_sig_params = -1;
+
+static gint ett_h248_pkg_dg = -1;
+static gint ett_h248_pkg_dg_sig_pt = -1;
+static gint ett_h248_pkg_dg_sig_d0 = -1;
+static gint ett_h248_pkg_dg_sig_d1 = -1;
+static gint ett_h248_pkg_dg_sig_d2 = -1;
+static gint ett_h248_pkg_dg_sig_d3 = -1;
+static gint ett_h248_pkg_dg_sig_d4 = -1;
+static gint ett_h248_pkg_dg_sig_d5 = -1;
+static gint ett_h248_pkg_dg_sig_d6 = -1;
+static gint ett_h248_pkg_dg_sig_d7 = -1;
+static gint ett_h248_pkg_dg_sig_d8 = -1;
+static gint ett_h248_pkg_dg_sig_d9 = -1;
+static gint ett_h248_pkg_dg_sig_da = -1;
+static gint ett_h248_pkg_dg_sig_db = -1;
+static gint ett_h248_pkg_dg_sig_dc = -1;
+static gint ett_h248_pkg_dg_sig_dd = -1;
+static gint ett_h248_pkg_dg_sig_ds = -1;
+static gint ett_h248_pkg_dg_sig_do = -1;
+
+static const value_string h248_pkg_dg_props_vals[] = {
+ { 0x0000, "Basic DTMF Generator Package - Annex E (dg)" },
+ { 0, NULL }
+};
static const value_string h248_pkg_dg_signals_vals[] = {
- { 0x0010, "d0"},
- { 0x0011, "d1"},
- { 0x0012, "d2"},
- { 0x0013, "d3"},
+ /* from tonegeg */
+ { 0x0001, "Tone ID List (tl)" },
+ { 0x0002, "End Tone Detected (etd)" },
+ { 0x0003, "Long Tone Detected (ltd)" },
+
+ /* from dd */
+ { 0x0010, "0 (d0)"},
+ { 0x0011, "1 (d1)"},
+ { 0x0012, "2 (d2)"},
+ { 0x0013, "3 (d3)"},
+ { 0x0014, "4 (d4)"},
+ { 0x0015, "5 (d5)"},
+ { 0x0016, "6 (d6)"},
+ { 0x0017, "7 (d7)"},
+ { 0x0018, "8 (d8)"},
+ { 0x0019, "9 (d9)"},
+ { 0x001a, "A (dA)"},
+ { 0x001b, "B (dB)"},
+ { 0x001c, "C (dC)"},
+ { 0x001d, "D (dD)"},
+ { 0x0020, "* (ds)"},
+ { 0x0021, "# (do)"},
{0,NULL}
};
+static const value_string h248_pkg_dg_sig_params_vals[] = {
+ { 0x0001, "Tone Direction (btd)" },
+ { 0, NULL }
+};
+
+static const value_string h248_pkg_dg_sig_btd_vals[] = {
+ { 0x0001, "External (EXT)" },
+ { 0x0002, "Internal (INT)" },
+ { 0x0003, "Both (BOTH)" },
+ { 0, NULL }
+};
+
+static const h248_pkg_param_t h248_pkg_dg_signal_params[] = {
+ { 0x0001, &hf_h248_pkg_dg_sig_params, h248_param_ber_integer, &implicit },
+ { 0x0010, &hf_h248_pkg_dg_sig_params, h248_param_ber_integer, &implicit },
+ { 0x0011, &hf_h248_pkg_dg_sig_params, h248_param_ber_integer, &implicit },
+ { 0x0012, &hf_h248_pkg_dg_sig_params, h248_param_ber_integer, &implicit },
+ { 0x0013, &hf_h248_pkg_dg_sig_params, h248_param_ber_integer, &implicit },
+ { 0x0014, &hf_h248_pkg_dg_sig_params, h248_param_ber_integer, &implicit },
+ { 0x0015, &hf_h248_pkg_dg_sig_params, h248_param_ber_integer, &implicit },
+ { 0x0016, &hf_h248_pkg_dg_sig_params, h248_param_ber_integer, &implicit },
+ { 0x0017, &hf_h248_pkg_dg_sig_params, h248_param_ber_integer, &implicit },
+ { 0x0018, &hf_h248_pkg_dg_sig_params, h248_param_ber_integer, &implicit },
+ { 0x0019, &hf_h248_pkg_dg_sig_params, h248_param_ber_integer, &implicit },
+ { 0x001a, &hf_h248_pkg_dg_sig_params, h248_param_ber_integer, &implicit },
+ { 0x001b, &hf_h248_pkg_dg_sig_params, h248_param_ber_integer, &implicit },
+ { 0x001c, &hf_h248_pkg_dg_sig_params, h248_param_ber_integer, &implicit },
+ { 0x001d, &hf_h248_pkg_dg_sig_params, h248_param_ber_integer, &implicit },
+ { 0x0020, &hf_h248_pkg_dg_sig_params, h248_param_ber_integer, &implicit },
+ { 0x0021, &hf_h248_pkg_dg_sig_params, h248_param_ber_integer, &implicit },
+ { 0, NULL, NULL, NULL }
+};
+
/* Signals defenitions */
static h248_pkg_sig_t h248_pkg_dg_signals[] = {
- { 0x0010, &hf_h248_pkg_dg_sig_d0, &ett_h248_pkg_dg_sig_d0, NULL, NULL },
- { 0x0011, &hf_h248_pkg_dg_sig_d1, &ett_h248_pkg_dg_sig_d1, NULL, NULL },
- { 0x0012, &hf_h248_pkg_dg_sig_d2, &ett_h248_pkg_dg_sig_d2, NULL, NULL },
- { 0x0013, &hf_h248_pkg_dg_sig_d3, &ett_h248_pkg_dg_sig_d3, NULL, NULL },
- /* TODO add the rest of the signals */
-
+ { 0X0001, &hf_h248_pkg_dg_sig_pt, &ett_h248_pkg_dg_sig_pt, h248_pkg_dg_signal_params,h248_pkg_dg_signals_vals },
+ { 0x0010, &hf_h248_pkg_dg_sig_d0, &ett_h248_pkg_dg_sig_d0, h248_pkg_dg_signal_params,h248_pkg_dg_signals_vals },
+ { 0x0011, &hf_h248_pkg_dg_sig_d1, &ett_h248_pkg_dg_sig_d1, h248_pkg_dg_signal_params,h248_pkg_dg_signals_vals },
+ { 0x0012, &hf_h248_pkg_dg_sig_d2, &ett_h248_pkg_dg_sig_d2, h248_pkg_dg_signal_params,h248_pkg_dg_signals_vals },
+ { 0x0013, &hf_h248_pkg_dg_sig_d3, &ett_h248_pkg_dg_sig_d3, h248_pkg_dg_signal_params,h248_pkg_dg_signals_vals },
+ { 0x0014, &hf_h248_pkg_dg_sig_d4, &ett_h248_pkg_dg_sig_d4, h248_pkg_dg_signal_params,h248_pkg_dg_signals_vals },
+ { 0x0015, &hf_h248_pkg_dg_sig_d5, &ett_h248_pkg_dg_sig_d5, h248_pkg_dg_signal_params,h248_pkg_dg_signals_vals },
+ { 0x0016, &hf_h248_pkg_dg_sig_d6, &ett_h248_pkg_dg_sig_d6, h248_pkg_dg_signal_params,h248_pkg_dg_signals_vals },
+ { 0x0017, &hf_h248_pkg_dg_sig_d7, &ett_h248_pkg_dg_sig_d7, h248_pkg_dg_signal_params,h248_pkg_dg_signals_vals },
+ { 0x0018, &hf_h248_pkg_dg_sig_d8, &ett_h248_pkg_dg_sig_d8, h248_pkg_dg_signal_params,h248_pkg_dg_signals_vals },
+ { 0x0019, &hf_h248_pkg_dg_sig_d9, &ett_h248_pkg_dg_sig_d9, h248_pkg_dg_signal_params,h248_pkg_dg_signals_vals },
+ { 0x001a, &hf_h248_pkg_dg_sig_da, &ett_h248_pkg_dg_sig_da, h248_pkg_dg_signal_params,h248_pkg_dg_signals_vals },
+ { 0x001b, &hf_h248_pkg_dg_sig_db, &ett_h248_pkg_dg_sig_db, h248_pkg_dg_signal_params,h248_pkg_dg_signals_vals },
+ { 0x001c, &hf_h248_pkg_dg_sig_dc, &ett_h248_pkg_dg_sig_dc, h248_pkg_dg_signal_params,h248_pkg_dg_signals_vals },
+ { 0x001d, &hf_h248_pkg_dg_sig_dd, &ett_h248_pkg_dg_sig_dd, h248_pkg_dg_signal_params,h248_pkg_dg_signals_vals },
+ { 0x0020, &hf_h248_pkg_dg_sig_ds, &ett_h248_pkg_dg_sig_ds, h248_pkg_dg_signal_params,h248_pkg_dg_signals_vals },
+ { 0x0021, &hf_h248_pkg_dg_sig_do, &ett_h248_pkg_dg_sig_do, h248_pkg_dg_signal_params,h248_pkg_dg_signals_vals },
{ 0, NULL, NULL, NULL, NULL}
};
@@ -238,19 +447,252 @@ static h248_package_t h248_pkg_dg = {
0x0005,
&hf_h248_pkg_dg,
&ett_h248_pkg_dg,
- NULL,
+ h248_pkg_dg_props_vals,
h248_pkg_dg_signals_vals,
- NULL,
- NULL,
- NULL, /* Properties */
+ NULL, NULL, NULL,
h248_pkg_dg_signals, /* signals */
- NULL, /* events */
- NULL /* statistics */
+ NULL, NULL
+};
+
+/* H248.1 E.6 DTMF Detection Package (dd) */
+
+static int hf_h248_pkg_dd = -1;
+static int hf_h248_pkg_dd_evt_std = -1;
+static int hf_h248_pkg_dd_evt_etd = -1;
+static int hf_h248_pkg_dd_evt_ltd = -1;
+static int hf_h248_pkg_dd_evt_ce = -1;
+/*static int hf_h248_pkg_dd_evt_d0 = -1;
+static int hf_h248_pkg_dd_evt_d1 = -1;
+static int hf_h248_pkg_dd_evt_d2 = -1;
+static int hf_h248_pkg_dd_evt_d3 = -1;
+static int hf_h248_pkg_dd_evt_d4 = -1;
+static int hf_h248_pkg_dd_evt_d5 = -1;
+static int hf_h248_pkg_dd_evt_d6 = -1;
+static int hf_h248_pkg_dd_evt_d7 = -1;
+static int hf_h248_pkg_dd_evt_d8 = -1;
+static int hf_h248_pkg_dd_evt_d9 = -1;
+static int hf_h248_pkg_dd_evt_da = -1;
+static int hf_h248_pkg_dd_evt_db = -1;
+static int hf_h248_pkg_dd_evt_dc = -1;
+static int hf_h248_pkg_dd_evt_dd = -1;
+static int hf_h248_pkg_dd_evt_ds = -1;
+static int hf_h248_pkg_dd_evt_do = -1;*/
+static int hf_h248_pkg_dd_evt_ce_ds = -1;
+static int hf_h248_pkg_dd_evt_ce_meth = -1;
+static int hf_h248_pkg_dd_evt_tl_param = -1;
+static int hf_h248_pkg_dd_evt_dur_param = -1;
+static int hf_h248_pkg_dd_evt_tid_param = -1;
+
+static gint ett_h248_pkg_dd = -1;
+static gint ett_h248_pkg_dd_evt_ce = -1;
+static gint ett_h248_pkg_dd_evt_std = -1;
+static gint ett_h248_pkg_dd_evt_etd = -1;
+static gint ett_h248_pkg_dd_evt_ltd = -1;
+
+static const value_string h248_pkg_dd_props_vals[] = {
+ { 0x0000, "DTMF Detection Package - Annex E (dd)" },
+ { 0, NULL }
+};
+
+static const value_string h248_pkg_dd_event_vals[] = {
+ /* from tonedet */
+ { 0x0000, "Wildcard (*)" },
+ { 0x0001, "Start Tone Detected (std)" },
+ { 0x0002, "End Tone Detected (etd)" },
+ { 0x0003, "Long Tone Detected (ltd)" },
+ { 0x0004, "Digit Completion Map (ce)" },
+
+ /* from dd */
+ { 0x0010, "0 (d0)"},
+ { 0x0011, "1 (d1)"},
+ { 0x0012, "2 (d2)"},
+ { 0x0013, "3 (d3)"},
+ { 0x0014, "4 (d4)"},
+ { 0x0015, "5 (d5)"},
+ { 0x0016, "6 (d6)"},
+ { 0x0017, "7 (d7)"},
+ { 0x0018, "8 (d8)"},
+ { 0x0019, "9 (d9)"},
+ { 0x001a, "A (dA)"},
+ { 0x001b, "B (dB)"},
+ { 0x001c, "C (dC)"},
+ { 0x001d, "D (dD)"},
+ { 0x0020, "* (ds)"},
+ { 0x0021, "# (do)"},
+ {0,NULL}
+};
+
+static const value_string h248_pkg_dd_event_params_vals[] = {
+ { 0x0001, "Unambiguous Match (UM)" },
+ { 0x0002, "Partial Match (PM)" },
+ { 0x0003, "Full Match (FM)" },
+ { 0, NULL }
+};
+
+static const value_string h248_pkg_dd_ce_vals[] = {
+ { 0x0001, "Digit String (ds)" },
+ { 0x0003, "Termination Method (meth)" },
+ { 0, NULL }
+};
+
+static h248_pkg_param_t h248_pkg_dd_ds_events[] = {
+ { 0x0001, &hf_h248_pkg_dd_evt_ce_ds, h248_param_ber_octetstring, &implicit },
+ { 0x0003, &hf_h248_pkg_dd_evt_ce_meth, h248_param_ber_integer, &implicit },
+ { 0, NULL, NULL, NULL }
+};
+
+static const h248_pkg_param_t h248_pkg_dd_event_params[] = {
+ { 0x0001, &hf_h248_pkg_dd_evt_tl_param, h248_param_ber_integer, &implicit },
+ { 0x0002, &hf_h248_pkg_dd_evt_dur_param, h248_param_ber_integer, &implicit },
+ { 0x0003, &hf_h248_pkg_dd_evt_tid_param, h248_param_ber_integer, &implicit },
+ { 0, NULL, NULL, NULL }
+};
+
+
+static h248_pkg_evt_t h248_pkg_dd_events[] = {
+ { 0x0001, &hf_h248_pkg_dd_evt_std, &ett_h248_pkg_dd_evt_std, h248_pkg_dd_event_params, h248_pkg_dd_event_vals },
+ { 0x0002, &hf_h248_pkg_dd_evt_etd, &ett_h248_pkg_dd_evt_etd, h248_pkg_dd_event_params, h248_pkg_dd_event_vals },
+ { 0x0003, &hf_h248_pkg_dd_evt_ltd, &ett_h248_pkg_dd_evt_ltd, h248_pkg_dd_event_params, h248_pkg_dd_event_vals },
+ { 0x0004,&hf_h248_pkg_dd_evt_ce, &ett_h248_pkg_dd_evt_ce, h248_pkg_dd_ds_events, h248_pkg_dd_ce_vals},
+ { 0, NULL, NULL, NULL, NULL }
+};
+
+static h248_package_t h248_pkg_dd = {
+ 0x0006,
+ &hf_h248_pkg_dd,
+ &ett_h248_pkg_dd,
+ h248_pkg_dd_props_vals,
+ NULL,
+ h248_pkg_dd_event_vals,
+ NULL,
+ NULL, NULL,
+ h248_pkg_dd_events,
+ NULL
+};
+
+/* H.248.1.E.7 Call Progress Tones Generator package */
+static int hf_h248_pkg_cg = -1;
+static int hf_h248_pkg_cg_sig_pt = -1;
+static int hf_h248_pkg_cg_sig_pt_tl = -1;
+static int hf_h248_pkg_cg_sig_pt_ind = -1;
+static int hf_h248_pkg_cg_sig_pt_btd = -1;
+static int hf_h248_pkg_cg_sig_dt = -1;
+static int hf_h248_pkg_cg_sig_rt = -1;
+static int hf_h248_pkg_cg_sig_bt = -1;
+static int hf_h248_pkg_cg_sig_ct = -1;
+static int hf_h248_pkg_cg_sig_sit = -1;
+static int hf_h248_pkg_cg_sig_wt = -1;
+static int hf_h248_pkg_cg_sig_prt = -1;
+static int hf_h248_pkg_cg_sig_cw = -1;
+static int hf_h248_pkg_cg_sig_cr = -1;
+
+static gint ett_h248_pkg_cg_params = -1;
+static gint ett_h248_pkg_cg_sig_pt = -1;
+static gint ett_h248_pkg_cg_sig_dt = -1;
+static gint ett_h248_pkg_cg_sig_rt = -1;
+static gint ett_h248_pkg_cg_sig_bt = -1;
+static gint ett_h248_pkg_cg_sig_ct = -1;
+static gint ett_h248_pkg_cg_sig_sit = -1;
+static gint ett_h248_pkg_cg_sig_wt = -1;
+static gint ett_h248_pkg_cg_sig_prt = -1;
+static gint ett_h248_pkg_cg_sig_cw = -1;
+static gint ett_h248_pkg_cg_sig_cr = -1;
+
+static const value_string h248_pkg_cg_props_vals[] = {
+ { 0x0000, "Call Progress Tones Generator - Annex E (cg)" },
+ { 0, NULL }
+};
+
+static const value_string h248_pkg_cg_sig_cd_evt_vals[] = {
+ { 0x0001, "Play Tone (pt)" },
+ { 0x0030, "Dial Tone"},
+ { 0x0031, "Ring Tone" },
+ { 0x0032, "Busy Tone" },
+ { 0x0033, "Congestion Tone" },
+ { 0x0034, "Special Information Tone" },
+ { 0x0035, "(Recording) Warning Tone" },
+ { 0x0036, "Payphone Recognition Tone" },
+ { 0x0037, "Call Waiting Tone" },
+ { 0x0038, "Caller Waiting Tone" },
+ { 0, NULL }
+};
+
+static const value_string h248_pkg_cg_sig_pt_param_vals[] = {
+ { 0x0001, "Tone ID List (tl)"},
+ { 0x0002, "Inter-signal duration (ind)" },
+ { 0x0003, "Tone Direction (td)" },
+ { 0, NULL }
};
+static const value_string h248_pkg_cg_pt_btd_param_vals[] = {
+ { 0x0001, "External (EXT)" },
+ { 0x0002, "Internal (INT)" },
+ { 0x0003, "Both (BOTH)" },
+ { 0, NULL }
+};
+
+static const h248_pkg_param_t h248_pkg_cg_sig_pt_params[] = {
+ { 0x0001, &hf_h248_pkg_cg_sig_pt_tl, h248_param_ber_integer, &implicit },
+ { 0x0002, &hf_h248_pkg_cg_sig_pt_ind, h248_param_ber_integer, &implicit },
+ { 0x0003, &hf_h248_pkg_cg_sig_pt_btd, h248_param_ber_integer, &implicit },
+ { 0, NULL, NULL, NULL}
+};
+
+static const h248_pkg_sig_t h248_pkg_cg_signals_cd_events[] = {
+ { 0x0001, &hf_h248_pkg_cg_sig_pt, &ett_h248_pkg_cg_sig_pt, h248_pkg_cg_sig_pt_params, h248_pkg_cg_sig_pt_param_vals },
+ { 0x0030, &hf_h248_pkg_cg_sig_dt, &ett_h248_pkg_cg_sig_dt, h248_pkg_cg_sig_pt_params, h248_pkg_cg_sig_pt_param_vals },
+ { 0x0031, &hf_h248_pkg_cg_sig_rt, &ett_h248_pkg_cg_sig_rt, h248_pkg_cg_sig_pt_params, h248_pkg_cg_sig_pt_param_vals },
+ { 0x0032, &hf_h248_pkg_cg_sig_bt, &ett_h248_pkg_cg_sig_bt, h248_pkg_cg_sig_pt_params, h248_pkg_cg_sig_pt_param_vals },
+ { 0x0033, &hf_h248_pkg_cg_sig_ct, &ett_h248_pkg_cg_sig_ct, h248_pkg_cg_sig_pt_params, h248_pkg_cg_sig_pt_param_vals },
+ { 0x0034, &hf_h248_pkg_cg_sig_sit, &ett_h248_pkg_cg_sig_sit, h248_pkg_cg_sig_pt_params, h248_pkg_cg_sig_pt_param_vals },
+ { 0x0035, &hf_h248_pkg_cg_sig_wt, &ett_h248_pkg_cg_sig_wt, h248_pkg_cg_sig_pt_params, h248_pkg_cg_sig_pt_param_vals },
+ { 0x0036, &hf_h248_pkg_cg_sig_prt, &ett_h248_pkg_cg_sig_prt, h248_pkg_cg_sig_pt_params, h248_pkg_cg_sig_pt_param_vals },
+ { 0x0037, &hf_h248_pkg_cg_sig_cw, &ett_h248_pkg_cg_sig_cw, h248_pkg_cg_sig_pt_params, h248_pkg_cg_sig_pt_param_vals },
+ { 0x0038, &hf_h248_pkg_cg_sig_cr, &ett_h248_pkg_cg_sig_cr, h248_pkg_cg_sig_pt_params, h248_pkg_cg_sig_pt_param_vals },
+ { 0, NULL, NULL, NULL, NULL }
+};
+
+static h248_package_t h248_pkg_cg = {
+ 0x0007,
+ &hf_h248_pkg_cg,
+ &ett_h248_pkg_cg_params,
+ h248_pkg_cg_props_vals,
+ h248_pkg_cg_sig_cd_evt_vals,
+ NULL,NULL, /* value_stings: event, stats */
+ NULL, /* dissectors: prop */
+ h248_pkg_cg_signals_cd_events,
+ NULL, /* disectors: events */
+ NULL /* dissectors: stats */
+};
+
+/* H.248.1 E.8 - Call Tones Detection Package */
+static int hf_h248_pkg_cd = -1;
+
+static gint ett_h248_pkg_cd = -1;
+
+static const value_string h248_pkg_cd_params_vals[] = {
+ { 0x0000, "Call Progress Tones Detection Package (cd)" },
+ { 0, NULL }
+};
+
+static h248_package_t h248_pkg_cd = {
+ 0x0008,
+ &hf_h248_pkg_cd,
+ &ett_h248_pkg_cd,
+ h248_pkg_cd_params_vals,
+ NULL,
+ h248_pkg_cg_sig_cd_evt_vals,
+ NULL,
+ NULL,NULL,
+ (h248_pkg_evt_t *)(void*)h248_pkg_cg_signals_cd_events,
+ NULL
+};
/* H.248.1 E.9 Analog Line Supervision Package */
static int hf_h248_pkg_al = -1;
+static int hf_h248_pkg_al_sig_cadence = -1;
+static int hf_h248_pkg_al_sig_cadence_on_off = -1;
+static int hf_h248_pkg_al_sig_freq = -1;
static int hf_h248_pkg_al_evt_onhook = -1;
static int hf_h248_pkg_al_evt_offhook = -1;
static int hf_h248_pkg_al_evt_flashhook = -1;
@@ -261,10 +703,24 @@ static int hf_h248_pkg_al_evt_offhook_par_init = -1;
static int hf_h248_pkg_al_evt_flashhook_par_mindur = -1;
static gint ett_h248_pkg_al = -1;
+static gint ett_h248_pkg_al_sig_cadence = -1;
+static gint ett_h248_pkg_al_sig_freq = -1;
static gint ett_h248_pkg_al_evt_onhook = -1;
static gint ett_h248_pkg_al_evt_offhook = -1;
static gint ett_h248_pkg_al_evt_flashhook = -1;
+static const value_string h248_pkg_al_props_vals[] = {
+ { 0x0000, "Analog Line Supervision Package - Annex E (al)" },
+ { 0, NULL }
+};
+
+static const value_string h248_pkg_al_sig_params_vals[] = {
+ { 1, "One" },
+ { 2, "Two" },
+ { 0x0006, "Cadence" },
+ { 0x0007, "Frequency (Hz)" },
+ { 0, NULL }
+};
static const value_string h248_pkg_al_evt_onhook_params_vals[] = {
{ 0x0001, "strict"},
@@ -277,15 +733,17 @@ static const value_string h248_pkg_al_evt_flashhook_params_vals[] = {
{ 0, NULL}
};
-static const value_string h248_pkg_al_evts_vals[] = {
- { 0x0004, "onhook"},
- { 0x0005, "offhook"},
- { 0x0006, "flashhook"},
- { 0, NULL}
+/* Packet defenitions */
+static const value_string h248_pkg_al_sig_evts_vals[] _U_ = {
+ /* Signals */
+ { 0x0002, "ri (Ring)" },
+ /* Events */
+ { 0x0004, "on (On-hook)" },
+ { 0x0005, "off (Off-hook)" },
+ { 0x0006, "fl (Flashhook)" },
+ {0, NULL},
};
-
-
/* Events defenitions */
static const value_string h248_pkg_al_evt_onhook_strict_vals[] = {
{ 0, "exact"},
@@ -304,6 +762,12 @@ static const true_false_string h248_pkg_al_evt_offhook_par_init_vals = {
"actual state transition to off-hook"
};
+
+static h248_pkg_param_t h248_pkg_al_sig_cadence[] = {
+ { 0x0006, &hf_h248_pkg_al_sig_cadence_on_off, h248_param_ber_octetstring, &h248_e_implicit },
+ { 0, NULL, NULL, NULL }
+};
+
static h248_pkg_param_t h248_pkg_al_evt_onhook_params[] = {
{ 0x0001, &hf_h248_pkg_al_evt_onhook_par_strict, h248_param_ber_integer, &h248_e_implicit },
{ 0x0002, &hf_h248_pkg_al_evt_onhook_par_init, h248_param_ber_boolean, &h248_e_implicit },
@@ -321,6 +785,11 @@ static h248_pkg_param_t h248_pkg_al_evt_flashhook_params[] = {
{ 0, NULL, NULL, NULL}
};
+static h248_pkg_sig_t h248_pkg_al_sig[] = {
+ { 0x0002, &hf_h248_pkg_al_sig_cadence, &ett_h248_pkg_al_sig_cadence, h248_pkg_al_sig_cadence, h248_pkg_al_sig_params_vals},
+ { 0, NULL, NULL, NULL, NULL }
+};
+
static h248_pkg_evt_t h248_pkg_al_evts[] = {
{ 0x0004, &hf_h248_pkg_al_evt_onhook, &ett_h248_pkg_al_evt_onhook, h248_pkg_al_evt_onhook_params, h248_pkg_al_evt_onhook_params_vals},
{ 0x0005, &hf_h248_pkg_al_evt_offhook, &ett_h248_pkg_al_evt_offhook, h248_pkg_al_evt_offhook_params, h248_pkg_al_evt_onhook_params_vals },
@@ -329,32 +798,74 @@ static h248_pkg_evt_t h248_pkg_al_evts[] = {
{ 0, NULL, NULL, NULL, NULL}
};
-/* Packet defenitions */
-static const value_string h248_pkg_al_parameters[] _U_ = {
- /* Signals */
- { 0x0002, "ri (Ring)" },
- /* Events */
- { 0x0004, "on (On-hook)" },
- { 0x0005, "off (Off-hook)" },
- { 0x0006, "fl (Flashhook)" },
-
- {0, NULL},
-};
-
static h248_package_t h248_pkg_al = {
0x0009,
&hf_h248_pkg_al,
&ett_h248_pkg_al,
- NULL,
- NULL,
- h248_pkg_al_evts_vals,
+ h248_pkg_al_props_vals,
+ h248_pkg_al_sig_evts_vals,
+ h248_pkg_al_sig_evts_vals,
NULL,
NULL, /* Properties */
- NULL, /* signals */
+ h248_pkg_al_sig, /* signals */
h248_pkg_al_evts, /* events */
NULL /* statistics */
};
+
+/* H.248.1 E.10 - Basic Continuity Package */
+static int hf_h248_pkg_ct = -1;
+static gint ett_h248_pkg_ct = -1;
+
+static const value_string h248_pkg_ct_props_vals[] = {
+ { 0x0000, "Basic Continuity Package (ct)" },
+ { 0, NULL }
+};
+
+static const value_string h248_pkg_ct_evt_sig_vals[] = {
+ { 0x0003, "Continuity Test (ct)" },
+ { 0x0004, "Respond (rsp)" },
+ { 0x0005, "Completion (cmp)" },
+ { 0, NULL }
+};
+
+static h248_package_t h248_pkg_ct = {
+ 0x000a,
+ &hf_h248_pkg_ct,
+ &ett_h248_pkg_ct,
+ h248_pkg_ct_props_vals,
+ h248_pkg_ct_evt_sig_vals,
+ h248_pkg_ct_evt_sig_vals,
+ NULL,
+ NULL, NULL, NULL, NULL
+};
+
+/* H.248.1 E.11 Network Package */
+static int hf_h248_pkg_nt = -1;
+static gint ett_h248_pkg_nt = -1;
+
+static const value_string h248_pkg_nt_props_evt_stats_vals[] = {
+ { 0x0000, "Network Package (nt)" },
+ { 0x0001, "Duration (dur)" },
+ { 0x0002, "Octets Sent (os)" },
+ { 0x0003, "Octets Received (or)" },
+ { 0x0005, "Network Failure (netfail)" },
+ { 0x0006, "Quality Alert (qualert)" },
+ { 0x0007, "Maximum Jitter Buffer (jit)" },
+ { 0, NULL }
+};
+
+static h248_package_t h248_pkg_nt = {
+ 0x000b,
+ &hf_h248_pkg_nt,
+ &ett_h248_pkg_nt,
+ h248_pkg_nt_props_evt_stats_vals,
+ h248_pkg_nt_props_evt_stats_vals,
+ NULL,
+ h248_pkg_nt_props_evt_stats_vals,
+ NULL, NULL, NULL, NULL
+};
+
/* H.248.1 E.12 RTP package */
static int hf_h248_pkg_rtp = -1;
static int hf_h248_pkg_rtp_stat_ps = -1;
@@ -366,7 +877,8 @@ static const value_string h248_pkg_rtp_stat_vals[] _U_ = {
{ 0, NULL}
};
-static const value_string h248_pkg_rtp_parameters[] = {
+static const value_string h248_pkg_rtp_props_vals[] = {
+ { 0x0000, "RTP Package - Annex E (rtp)" },
{ 0x0001, "pltrans (Payload Transition)" },
{ 0x0004, "ps (Packets Sent)" },
{ 0x0005, "pr (Packets Received)" },
@@ -385,7 +897,7 @@ static h248_package_t h248_pkg_rtp = {
0x000c,
&hf_h248_pkg_rtp,
&ett_h248_pkg_rtp,
- h248_pkg_rtp_parameters,
+ h248_pkg_rtp_props_vals,
NULL,
NULL,
NULL,
@@ -407,8 +919,9 @@ static const true_false_string h248_tdmc_ec_vals = {
"Off"
};
static const value_string h248_pkg_tdmc_props_vals[] = {
- { 0x0008, "ec"},
- { 0x000a, "gain"},
+ { 0x0000, "TDM Circuit Package - Annex E (tdmc)" },
+ { 0x0008, "Echo Cancellation (ec)"},
+ { 0x000a, "Gain Control (gain)"},
{ 0, NULL}
};
@@ -442,13 +955,83 @@ void proto_register_h248_annex_e(void) {
{ &hf_h248_pkg_generic_cause_evt, { "Cause Event", "h248.pkg.generic.cause", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_h248_pkg_generic_cause_gencause, { "Generic Cause", "h248.pkg.generic.cause.gencause", FT_UINT32, BASE_HEX, VALS(h248_pkg_generic_cause_gencause_vals), 0, NULL, HFILL }},
{ &hf_h248_pkg_generic_cause_failurecause, { "Generic Cause", "h248.pkg.generic.cause.failurecause", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- {&hf_h248_pkg_generic_sc_evt, {"Signal Completion","h248.pkg.generic.sc",FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL}},
+ {&hf_h248_pkg_generic_sc_evt, {"Signal Completion2","h248.pkg.generic.sc",FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL}},
{ &hf_h248_pkg_generic_sc_sig_id, { "Signal Identity", "h248.pkg.generic.sc.sig_id", FT_BYTES, BASE_NONE, NULL , 0, NULL, HFILL }},
{ &hf_h248_pkg_generic_sc_meth, { "Termination Method", "h248.pkg.generic.sc.meth", FT_UINT32, BASE_DEC, VALS(h248_pkg_generic_sc_vals) , 0, NULL, HFILL }},
{ &hf_h248_pkg_generic_sc_slid, { "Signal List ID", "h248.pkg.generic.sc.slid", FT_UINT32, BASE_DEC, NULL , 0, NULL, HFILL }},
{ &hf_h248_pkg_generic_sc_rid, { "Request ID", "h248.pkg.generic.sc.rid", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+
+ /* H.248.1.E 3 Tone Generator (tonegeg) */
+ { &hf_h248_pkg_tonegen, { "Tone Generator (tonegen)", "h248.pkg.tonegen", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_tonegen_sig_pt, { "Play Tone (pt)", "h248.pkg.tonegen.pg", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_tonegen_sig_pt_tl, { "Tone List ID (tl)", "h248.pkg.tonegen.pt.tl", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_tonegen_sig_pt_ind, { "Inter-signal Duration (ind)", "h248.pkg.tonegem.pt.ind", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_tonegen_sig_pg_btd, { "Tone Direction (btd)", "h248.pkg.tonegen.pt.btd", FT_UINT32, BASE_HEX, VALS(h248_pkg_tonegen_pt_btd_param_vals), 0, NULL, HFILL }},
+
+ /* H.248.1 E.4 Tone Detection (tonedet) */
+ { &hf_h248_pkg_tonedet, { "Tone Detection Package", "h248.pkg.tonedet", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_tonedet_evt_std, { "Start Tone", "h248.pkg.tonedet.std", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_tonedet_evt_etd, { "End Tone", "h248.pkg.tonedet.etd", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_tonedet_evt_ltd, { "Long Tone", "h248.pkg.tonedet.ltd", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_tonedet_evt_tl_param, {"Tone Detail", "h248.pkg.tonedet.evt.tl", FT_UINT16, BASE_DEC, VALS(h248_pkg_tonedet_tl_params_vals), 0, NULL, HFILL }},
+ { &hf_h248_pkg_tonedet_evt_dur_param, {"Duration (ms)", "h248.pkg.tonedet.evt.dur", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_tonedet_evt_tid_param, {"Tone ID", "h248.pkg.tonedet.evt.tid", FT_UINT16, BASE_DEC, VALS(h248_pkg_tonedet_tl_params_vals), 0, NULL, HFILL }},
+
+
+ /* H.248.1 E.5 Basic DTMF Generator Package */
+ { &hf_h248_pkg_dg, { "Basic DTMF Generator Package (dg)", "h248.pkg.dg", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_dg_sig_pt, { "Play Tone", "h248.pkg.dg.pt", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_dg_sig_d0, { "Digit 0", "h248.pkg.dg.d0", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_dg_sig_d1, { "Digit 1", "h248.pkg.dg.d1", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_dg_sig_d2, { "Digit 2", "h248.pkg.dg.d2", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_dg_sig_d3, { "Digit 3", "h248.pkg.dg.d3", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_dg_sig_d4, { "Digit 4", "h248.pkg.dg.d4", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_dg_sig_d5, { "Digit 5", "h248.pkg.dg.d5", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_dg_sig_d6, { "Digit 6", "h248.pkg.dg.d6", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_dg_sig_d7, { "Digit 7", "h248.pkg.dg.d7", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_dg_sig_d8, { "Digit 8", "h248.pkg.dg.d8", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_dg_sig_d9, { "Digit 9", "h248.pkg.dg.d9", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_dg_sig_da, { "Digit A", "h248.pkg.dg.da", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_dg_sig_db, { "Digit B", "h248.pkg.dg.db", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_dg_sig_dc, { "Digit C", "h248.pkg.dg.dc", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_dg_sig_dd, { "Digit D", "h248.pkg.dg.dd", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_dg_sig_ds, { "Digit *", "h248.pkg.dg.ds", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_dg_sig_do, { "Digit #", "h248.pkg.dg.do", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_dg_sig_params, { "Event Parameters", "h248.pkg.dg.signal.direction", FT_UINT16, BASE_DEC, VALS(h248_pkg_dg_sig_btd_vals), 0, NULL, HFILL }},
+
+ /* H.248.1 E.6 DTMF Detection Package */
+ { &hf_h248_pkg_dd_evt_ce_ds, { "Digit(s) Detected", "h248.pkg.dd.ce.ds", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_dd_evt_ce_meth, { "Method Used", "h248.pkg.dd.ce.meth", FT_UINT16, BASE_DEC, VALS(h248_pkg_dd_event_params_vals), 0, NULL, HFILL }},
+ { &hf_h248_pkg_dd_evt_tl_param, {"Tone Detail", "h248.pkg.dd.evt.tl", FT_UINT16, BASE_DEC, VALS(h248_pkg_dd_event_vals), 0, NULL, HFILL }},
+ { &hf_h248_pkg_dd_evt_dur_param, {"Duration (ms)", "h248.pkg.dd.evt.dur", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_dd_evt_tid_param, {"Tone ID", "h248.pkg.dd.evt.tid", FT_UINT16, BASE_DEC, VALS(h248_pkg_dd_event_vals), 0, NULL, HFILL }},
+
+
+ /* H.248.1.E.7 Call Progress Tones Generator package */
+ { &hf_h248_pkg_cg, { "Call Progress Tones Generator", "h248.pkg.cg", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_cg_sig_pt, { "Play Tone (pt)", "h248.pkg.cg.pt", FT_UINT16, BASE_HEX, VALS(h248_pkg_cg_sig_cd_evt_vals), 0, NULL, HFILL }},
+ { &hf_h248_pkg_cg_sig_pt_tl, {"Tone List", "h248.pkg.cg.pt.tl", FT_UINT16, BASE_DEC_HEX, VALS(h248_pkg_cg_sig_cd_evt_vals), 0, NULL, HFILL }},
+ { &hf_h248_pkg_cg_sig_pt_ind, { "Inter-Signal Duration (ind)", "h248.pkg-cg.pt.ind", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_cg_sig_pt_btd, { "Tone Direction (btd)", "h248.pkg.cg.pt.btd", FT_UINT8, BASE_DEC, VALS(h248_pkg_cg_pt_btd_param_vals), 0, NULL, HFILL }},
+
+ { &hf_h248_pkg_cg_sig_dt, { "Dial Tone (dt)", "h248.pkg.cg.dt", FT_UINT16, BASE_HEX, VALS(h248_pkg_cg_sig_cd_evt_vals), 0, NULL, HFILL }},
+ { &hf_h248_pkg_cg_sig_rt, { "Ring Tone (rt)", "h248.pkg.cg.rt",FT_UINT16, BASE_HEX, VALS(h248_pkg_cg_sig_cd_evt_vals), 0, NULL, HFILL }},
+ { &hf_h248_pkg_cg_sig_bt, { "Buzy Tone (bt)", "h248.pkg.cg.bt", FT_UINT16, BASE_HEX, VALS(h248_pkg_cg_sig_cd_evt_vals), 0, NULL, HFILL }},
+ { &hf_h248_pkg_cg_sig_ct, { "Congestion Tone (ct)", "h248.pkg.cg.ct", FT_UINT16, BASE_HEX, VALS(h248_pkg_cg_sig_cd_evt_vals), 0, NULL, HFILL }},
+ { &hf_h248_pkg_cg_sig_sit, { "Special Information Tone (sit)", "h248.pkg.cg.sit", FT_UINT16, BASE_HEX, VALS(h248_pkg_cg_sig_cd_evt_vals), 0, NULL, HFILL }},
+ { &hf_h248_pkg_cg_sig_wt, { "(Recording) Warning Tone (wt)", "h248.pkg.cg.wt", FT_UINT16, BASE_HEX, VALS(h248_pkg_cg_sig_cd_evt_vals), 0, NULL, HFILL }},
+ { &hf_h248_pkg_cg_sig_prt, { "Payphone Recognition Tone (prt)", "h248.pkg.cg.prt", FT_UINT16, BASE_HEX, VALS(h248_pkg_cg_sig_cd_evt_vals), 0, NULL, HFILL }},
+ { &hf_h248_pkg_cg_sig_cw, { "Call Waiting Tone (wt)", "h248.pkg.cg.cw", FT_UINT16, BASE_HEX, VALS(h248_pkg_cg_sig_cd_evt_vals), 0, NULL, HFILL }},
+ { &hf_h248_pkg_cg_sig_cr, { "Caller Waiting Tone (rt)", "h248.pkg.cg.cr", FT_UINT16, BASE_HEX, VALS(h248_pkg_cg_sig_cd_evt_vals), 0, NULL, HFILL }},
+
+ /* H.248.1 E.8 Call Progress Tones Detection Package */
+ { &hf_h248_pkg_cd, { "Call Progress Tones Detection Package", "h248.pkg.cd", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+
/* H.248.1 E.9 Analog Line Supervision Package */
{ &hf_h248_pkg_al, { "Analog Line Supervision Package", "h248.pkg.al", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_al_sig_cadence, { "Cadence", "h248.pkg.al.sig.cadence", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_al_sig_cadence_on_off, { "On/Off Cadence", "h248.pkg.al.sig.cadence_on_off", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_h248_pkg_al_sig_freq, { "Ring Frequency", "h248.pkg.al.sig.freq", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_h248_pkg_al_evt_onhook, { "onhook", "h248.pkg.al.onhook", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_h248_pkg_al_evt_offhook, { "offhook", "h248.pkg.al.offhook", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_h248_pkg_al_evt_flashhook, { "flashhook", "h248.pkg.al.flashhook", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
@@ -467,23 +1050,83 @@ void proto_register_h248_annex_e(void) {
};
static gint *ett[] = {
+ /* generic 0x0001 */
&ett_h248_pkg_generic_cause_evt,
&ett_h248_pkg_generic,
&ett_h248_pkg_generic_sc_evt,
+ &ett_h248_pkg_root_params,
+
+ &ett_h248_pkg_tonegen_params,
+
+ /* tonegen 0x0003 */
+ &ett_h248_pkg_tonedet,
+ &ett_h248_pkg_tonedet_evt_std,
+ &ett_h248_pkg_tonedet_evt_etd,
+ &ett_h248_pkg_tonedet_evt_ltd,
+
+ /* dg 0x0005 */
&ett_h248_pkg_dg,
+ &ett_h248_pkg_dg_sig_pt,
&ett_h248_pkg_dg_sig_d0,
&ett_h248_pkg_dg_sig_d1,
&ett_h248_pkg_dg_sig_d2,
&ett_h248_pkg_dg_sig_d3,
-
+ &ett_h248_pkg_dg_sig_d4,
+ &ett_h248_pkg_dg_sig_d5,
+ &ett_h248_pkg_dg_sig_d6,
+ &ett_h248_pkg_dg_sig_d7,
+ &ett_h248_pkg_dg_sig_d8,
+ &ett_h248_pkg_dg_sig_d9,
+ &ett_h248_pkg_dg_sig_da,
+ &ett_h248_pkg_dg_sig_db,
+ &ett_h248_pkg_dg_sig_dc,
+ &ett_h248_pkg_dg_sig_dd,
+ &ett_h248_pkg_dg_sig_ds,
+ &ett_h248_pkg_dg_sig_do,
+
+ /* dd 0x0006 */
+ &ett_h248_pkg_dd,
+ &ett_h248_pkg_dd_evt_std,
+ &ett_h248_pkg_dd_evt_ltd,
+ &ett_h248_pkg_dd_evt_etd,
+ &ett_h248_pkg_dd_evt_ce,
+
+ /* 0x0007 Package cg */
+ &ett_h248_pkg_cg_params,
+ &ett_h248_pkg_cg_sig_pt,
+ &ett_h248_pkg_tonegen_sig_pt,
+ &ett_h248_pkg_cg_sig_dt,
+ &ett_h248_pkg_cg_sig_rt,
+ &ett_h248_pkg_cg_sig_bt,
+ &ett_h248_pkg_cg_sig_ct,
+ &ett_h248_pkg_cg_sig_sit,
+ &ett_h248_pkg_cg_sig_wt,
+ &ett_h248_pkg_cg_sig_prt,
+ &ett_h248_pkg_cg_sig_cw,
+ &ett_h248_pkg_cg_sig_cr,
+
+ /* cd 0x0008 */
+ &ett_h248_pkg_cd,
+
+ /* al 0x0009 */
&ett_h248_pkg_al,
- &ett_h248_pkg_al_evt_onhook,
- &ett_h248_pkg_al_evt_offhook,
+ &ett_h248_pkg_al_sig_cadence,
+ &ett_h248_pkg_al_sig_freq,
&ett_h248_pkg_al_evt_flashhook,
-
+ &ett_h248_pkg_al_evt_offhook,
+ &ett_h248_pkg_al_evt_onhook,
+
+ /* ct 0x000a */
+ &ett_h248_pkg_ct,
+
+ /* nt 0x000b */
+ &ett_h248_pkg_nt,
+
+ /* rtp 0x000c */
&ett_h248_pkg_rtp,
+ /* tdmc 0x000d */
&ett_h248_pkg_tdmc
};
@@ -493,11 +1136,21 @@ void proto_register_h248_annex_e(void) {
proto_register_subtree_array(ett, array_length(ett));
- h248_register_package(&h248_pkg_generic);
- h248_register_package(&h248_pkg_dg);
- h248_register_package(&h248_pkg_al);
- h248_register_package(&h248_pkg_rtp);
- h248_register_package(&h248_pkg_tdmc);
+ /* MERGE_PKG_LOW is use to allow other custom version of these
+ *H248 package to take presidence if already loaded */
+ h248_register_package(&h248_pkg_generic,MERGE_PKG_LOW); /* 0x0001 */
+ h248_register_package(&h248_pkg_root,MERGE_PKG_LOW); /* 0x0002 */
+ h248_register_package(&h248_pkg_tonegen,MERGE_PKG_LOW); /* 0x0003 */
+ h248_register_package(&h248_pkg_tonedet,MERGE_PKG_LOW); /* 0x0004 */
+ h248_register_package(&h248_pkg_dg,MERGE_PKG_LOW); /* 0X0005 */
+ h248_register_package(&h248_pkg_dd,MERGE_PKG_LOW); /* 0x0006 */
+ h248_register_package(&h248_pkg_cg,MERGE_PKG_LOW); /* 0x0007 */
+ h248_register_package(&h248_pkg_cd, MERGE_PKG_LOW); /* 0x0008 */
+ h248_register_package(&h248_pkg_al,MERGE_PKG_LOW); /* 0x0009 */
+ h248_register_package(&h248_pkg_ct, MERGE_PKG_LOW); /* 0x000a */
+ h248_register_package(&h248_pkg_nt, MERGE_PKG_LOW); /* 0x000b */
+ h248_register_package(&h248_pkg_rtp,MERGE_PKG_LOW); /* 0x000c */
+ h248_register_package(&h248_pkg_tdmc,MERGE_PKG_LOW); /* 0x000d */
}
diff --git a/epan/dissectors/packet-h248_q1950.c b/epan/dissectors/packet-h248_q1950.c
index 57e8a66fed..61a966d742 100644
--- a/epan/dissectors/packet-h248_q1950.c
+++ b/epan/dissectors/packet-h248_q1950.c
@@ -2,7 +2,7 @@
* packet-h248_q1950.c
* Q.1950 annex A
*
- * (c) 2006, Anders Broman <anders.broman@telia.com>
+ * (c) 2006, Anders Broman <anders.broman@ericsson.com>
*
* $Id$
*
@@ -53,7 +53,8 @@ static const value_string h248_pkg_BCP_parameters[] _U_ = {
};
static const value_string h248_pkg_BCP_props_vals[] = {
- {1,"BNCChar"},
+ {0, "Bearer Characteristics Q.1950 Annex A (bcp)" },
+ {1, "BNC Characteristics (BNCChar)"},
{0,NULL}
};
@@ -91,6 +92,7 @@ static const value_string h248_pkg_BNCCT_parameters[] _U_ = {
};
static const value_string h248_pkg_BNCCT_props_vals[] = {
+ {0,"Bearer Network Connection Cut Q.1950 Annex A" },
{1,"BNCCT"},
{0,NULL}
};
@@ -130,7 +132,8 @@ static int hf_h248_pkg_RII= -1;
static gint ett_h248_pkg_RI= -1;
static const value_string h248_pkg_RI_parameters[] = {
- { 0x0001, "Reuse Idle Indication" },
+ { 0x0000, "Reuse Idle Q.1950 Annex A" },
+ { 0x0001, "Reuse Idle Indication" },
{ 0, NULL }
};
@@ -252,11 +255,16 @@ static const h248_pkg_sig_t h248_pkg_GB_signals[] = {
{ 0, NULL, NULL, NULL, NULL}
};
+static const value_string h248_pkg_GB_props_vals[] = {
+ { 0x0000, "Generic Bearer Connection Q.1950 Annex A (gb)" },
+ { 0, NULL }
+};
+
static h248_package_t h248_pkg_GB = {
0x0021,
&hf_h248_pkg_GB,
&ett_h248_pkg_GB,
- NULL,
+ h248_pkg_GB_props_vals,
h248_pkg_GB_signals_vals,
h248_pkg_GB_events_vals,
NULL,
@@ -306,15 +314,16 @@ static void dissect_bt_tunneled_proto(proto_tree* tree, tvbuff_t* tvb, packet_in
/* Properties */
static const value_string h248_pkg_bt_props_vals[] = {
- {1,"Tunnelling Options"},
- {0,NULL}
+ { 0, "Bearer Control Tunnelling Q.1950 Annex A" },
+ { 1, "Tunnelling Options"},
+ { 0, NULL}
};
static const value_string h248_pkg_bt_tunopt_vals[] _U_ = {
- {1,"1 (In the same message as the command response to the command which generated the bearer control tunnel)"},
- {2,"2 (Tunnel message at any time)"},
- {3,"NO"},
- {0,NULL}
+ { 1, "1 (In the same message as the command response to the command which generated the bearer control tunnel)"},
+ { 2, "2 (Tunnel message at any time)"},
+ { 3, "NO"},
+ { 0, NULL}
};
static const h248_pkg_param_t h248_pkg_bt_props[] _U_ = {
@@ -397,6 +406,19 @@ static h248_pkg_param_t h248_pkg_h248_pkg_bcg_sig_bdt_params[] = {
{ 0, NULL, NULL, NULL}
};
+static const value_string h248_pkg_bcg_signals_vals[] = {
+ { 0x0041, "Dial Tone (bdt)" },
+ { 0x0042, "Ringing Tone (brt)" },
+ { 0x0043, "Busy Tone (bbt)" },
+ { 0x0044, "Congestion Tone (bct)" },
+ { 0x0045, "Warning Tone (bwt)" },
+ { 0x0046, "Payphone Recognition Tone (bpt)" },
+ { 0x0047, "Call Waiting Tone (bcw)" },
+ { 0x0048, "Caller Waiting Tone (bcr)" },
+ { 0x0049, "Pay Tone (bpy)" },
+ { 0, NULL }
+};
+
static h248_pkg_sig_t h248_pkg_bcg_signals[] = {
/* All the tones have the same parameters */
{ 0x0040, &hf_h248_pkg_bcg_sig_bdt, &ett_h248_pkg_bcg_sig_bdt, h248_pkg_h248_pkg_bcg_sig_bdt_params, NULL },
@@ -412,13 +434,18 @@ static h248_pkg_sig_t h248_pkg_bcg_signals[] = {
{ 0, NULL, NULL, NULL,NULL}
};
+static const value_string h248_pkg_bcg_props_vals[] = {
+ { 0, "Basic Call Progress Tones Q.1950 Annex A" },
+ { 0, NULL }
+};
+
/* Packet defenitions */
static h248_package_t h248_pkg_bcg = {
0x0023,
&hf_h248_pkg_bcg,
&ett_h248_pkg_bcg,
- NULL,
- NULL,
+ h248_pkg_bcg_props_vals,
+ h248_pkg_bcg_signals_vals,
NULL,
NULL,
NULL, /* Properties */
@@ -595,11 +622,11 @@ void proto_register_q1950(void) {
proto_register_subtree_array(ett, array_length(ett));
/* Register the packages */
- h248_register_package(&h248_pkg_BCP);
- h248_register_package(&h248_pkg_BNCCT);
- h248_register_package(&h248_pkg_RI);
- h248_register_package(&h248_pkg_GB);
- h248_register_package(&h248_pkg_bcg);
- h248_register_package(&h248_pkg_bct);
+ h248_register_package(&h248_pkg_BCP,REPLACE_PKG);
+ h248_register_package(&h248_pkg_BNCCT,REPLACE_PKG);
+ h248_register_package(&h248_pkg_RI,REPLACE_PKG);
+ h248_register_package(&h248_pkg_GB,REPLACE_PKG);
+ h248_register_package(&h248_pkg_bcg,REPLACE_PKG);
+ h248_register_package(&h248_pkg_bct,REPLACE_PKG);
}
diff --git a/epan/dissectors/packet-h263.c b/epan/dissectors/packet-h263.c
index e41ce4ca53..ee9dfefe35 100644
--- a/epan/dissectors/packet-h263.c
+++ b/epan/dissectors/packet-h263.c
@@ -637,6 +637,7 @@ static void dissect_h263_data( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr
proto_tree *h263_payload_tree = NULL;
guint32 data;
guint8 startcode;
+ int length;
col_append_str( pinfo->cinfo, COL_INFO, "H263 payload ");
@@ -645,6 +646,12 @@ static void dissect_h263_data( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr
h263_payload_tree = proto_item_add_subtree( h263_payload_item, ett_h263_payload );
}
+ length = tvb_reported_length_remaining(tvb,0);
+ if(length<4){
+ if( tree )
+ proto_tree_add_item( h263_payload_tree, hf_h263_data, tvb, offset, -1, ENC_NA );
+ return;
+ }
/* Check for PSC, PSC is a word of 22 bits. Its value is 0000 0000 0000 0000' 1000 00xx xxxx xxxx. */
data = tvb_get_ntohl(tvb, offset);
diff --git a/epan/dissectors/packet-h264.c b/epan/dissectors/packet-h264.c
index b9a23e23c3..cc672ae7fb 100644
--- a/epan/dissectors/packet-h264.c
+++ b/epan/dissectors/packet-h264.c
@@ -262,7 +262,7 @@ static const value_string h264_type_values[] = {
{ 0, NULL }
};
-
+/* A.2 Profiles */
static const value_string h264_profile_idc_values[] = {
{ 66, "Baseline profile" },
{ 77, "Main profile" },
@@ -274,11 +274,12 @@ static const value_string h264_profile_idc_values[] = {
{ 0, NULL }
};
+/* Table A-1 - Level limits */
static const value_string h264_level_bitrate_values[] = {
- { 10, "64kb/s" },
- { 11, "192kb/s" },
- { 12, "384kb/s" },
- { 13, "2 Mb/s" },
+ { 10, "64 kb/s" },
+ { 11, "192 kb/s" },
+ { 12, "384 kb/s" },
+ { 13, "768 kb/s" },
{ 20, "2 Mb/s" },
{ 21, "4 Mb/s" },
{ 22, "4 Mb/s" },
@@ -1031,7 +1032,56 @@ dissect_h264_profile(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
}
}
+/*
+ * 7.3.1 NAL unit syntax
+ * Un escape the NAL tvb
+ *
+ *
+ * nal_unit( NumBytesInNALunit ) { C Descriptor
+ * forbidden_zero_bit All f(1)
+ * nal_ref_idc All u(2)
+ * nal_unit_type All u(5)
+ * NumBytesInRBSP = 0
+ * for( i = 1; i < NumBytesInNALunit; i++ ) {
+ * if( i + 2 < NumBytesInNALunit && next_bits( 24 ) = = 0x000003 ) {
+ * rbsp_byte[ NumBytesInRBSP++ ] All b(8)
+ * rbsp_byte[ NumBytesInRBSP++ ] All b(8)
+ * i += 2
+ * emulation_prevention_three_byte / * equal to 0x03 * / All f(8)
+ * } else
+ * rbsp_byte[ NumBytesInRBSP++ ] All b(8)
+ * }
+ * }
+ */
+
+static tvbuff_t *
+dissect_h265_unescap_nal_unit(tvbuff_t *tvb, packet_info *pinfo, int offset)
+{
+ tvbuff_t *tvb_rbsp;
+ int length = tvb_length_remaining(tvb, offset);
+ int NumBytesInRBSP = 0;
+ int i;
+ gchar *buff;
+
+ buff = g_malloc(length);
+ for( i = 0; i < length; i++ ) {
+ if((i + 2 < length) && (tvb_get_ntoh24(tvb,offset) == 0x000003) ) {
+ buff[NumBytesInRBSP++] = tvb_get_guint8(tvb,offset);
+ buff[NumBytesInRBSP++] = tvb_get_guint8(tvb,offset+1);
+ i += 2;
+ offset+=3;
+ }else{
+ buff[ NumBytesInRBSP++] = tvb_get_guint8(tvb,offset);
+ offset++;
+ }
+ }
+
+ tvb_rbsp = tvb_new_child_real_data(tvb, buff,NumBytesInRBSP,NumBytesInRBSP);
+ tvb_set_free_cb( tvb_rbsp, g_free );
+ add_new_data_source(pinfo, tvb_rbsp, "Unescaped RSP Data");
+ return tvb_rbsp;
+}
/*
* 7.3.2.8 Slice layer without partitioning RBSP syntax
* slice_layer_without_partitioning_rbsp( )
@@ -1796,6 +1846,7 @@ dissect_h264(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_item *item, *ti, *stream_item, *fua_item;
proto_tree *h264_tree, *h264_nal_tree, *stream_tree, *fua_tree;
guint8 type;
+ tvbuff_t *rbsp_tvb;
/* Make entries in Protocol column and Info column on summary display */
@@ -1847,32 +1898,36 @@ dissect_h264(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
else
return;
}
+
+ /* Unescape NAL unit */
+ rbsp_tvb = dissect_h265_unescap_nal_unit(tvb, pinfo, offset);
+
stream_item =proto_tree_add_text(h264_tree, tvb, offset, -1, "H264 bitstream");
stream_tree = proto_item_add_subtree(stream_item, ett_h264_stream);
switch(type){
case 1: /* 1 Coded slice of a non-IDR picture */
- dissect_h264_slice_layer_without_partitioning_rbsp(stream_tree, tvb, pinfo, offset);
+ dissect_h264_slice_layer_without_partitioning_rbsp(stream_tree, rbsp_tvb, pinfo, 0);
break;
case 3: /* Coded slice data partition B */
- dissect_h264_slice_data_partition_b_layer_rbsp(h264_nal_tree, tvb, pinfo, offset);
+ dissect_h264_slice_data_partition_b_layer_rbsp(h264_nal_tree, rbsp_tvb, pinfo, 0);
break;
case 4: /* Coded slice data partition C */
- dissect_h264_slice_data_partition_c_layer_rbsp(h264_nal_tree, tvb, pinfo, offset);
+ dissect_h264_slice_data_partition_c_layer_rbsp(h264_nal_tree, rbsp_tvb, pinfo, 0);
break;
case 5: /* Coded slice of an IDR picture */
- dissect_h264_slice_layer_without_partitioning_rbsp(stream_tree, tvb, pinfo, offset);
+ dissect_h264_slice_layer_without_partitioning_rbsp(stream_tree, rbsp_tvb, pinfo, 0);
break;
case 6: /* Supplemental enhancement information (SEI) */
dissect_h264_sei_rbsp(stream_tree, tvb, pinfo, offset);
break;
case H264_SEQ_PAR_SET: /* 7 Sequence parameter set*/
- dissect_h264_seq_parameter_set_rbsp(stream_tree, tvb, pinfo, offset);
+ dissect_h264_seq_parameter_set_rbsp(stream_tree, rbsp_tvb, pinfo, 0);
break;
case H264_PIC_PAR_SET: /* 8 Picture parameter set */
- dissect_h264_pic_parameter_set_rbsp(stream_tree, tvb, pinfo, offset);
+ dissect_h264_pic_parameter_set_rbsp(stream_tree, rbsp_tvb, pinfo, 0);
break;
case 19: /* Coded slice of an auxiliary coded picture without partitioning */
- dissect_h264_slice_layer_without_partitioning_rbsp(stream_tree, tvb, pinfo, offset);
+ dissect_h264_slice_layer_without_partitioning_rbsp(stream_tree, rbsp_tvb, pinfo, 0);
break;
default:
break;
diff --git a/epan/dissectors/packet-h450.c b/epan/dissectors/packet-h450.c
index 687d3578d5..84584358d9 100644
--- a/epan/dissectors/packet-h450.c
+++ b/epan/dissectors/packet-h450.c
@@ -972,7 +972,7 @@ dissect_h450_H4501SupplementaryService(tvbuff_t *tvb _U_, int offset _U_, asn1_c
#line 55 "../../asn1/h450/h450.cnf"
proto_item *hidden_item;
- hidden_item = proto_tree_add_item(tree, proto_h450, tvb, offset, -1, FALSE);
+ hidden_item = proto_tree_add_item(tree, proto_h450, tvb, offset, -1, ENC_NA);
PROTO_ITEM_SET_HIDDEN(hidden_item);
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
diff --git a/epan/dissectors/packet-hartip.c b/epan/dissectors/packet-hartip.c
new file mode 100644
index 0000000000..069e9775ce
--- /dev/null
+++ b/epan/dissectors/packet-hartip.c
@@ -0,0 +1,1556 @@
+/* packet-hartip.c
+ * Routines for HART-IP packet dissection
+ * Copyright 2012, Bill Schiller <bill.schiller@emerson.com>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * Copied from packet-mbtcp.c
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+#include <epan/conversation.h>
+#include <epan/packet.h>
+#include <epan/tap.h>
+#include <epan/stats_tree.h>
+
+
+static dissector_handle_t hartip_handle;
+
+
+static int proto_hartip = -1;
+static int hf_hartip_hdr_version = -1;
+static int hf_hartip_hdr_message_id = -1;
+static int hf_hartip_hdr_message_type = -1;
+static int hf_hartip_hdr_status = -1;
+static int hf_hartip_hdr_transaction_id = -1;
+static int hf_hartip_hdr_msg_length = -1;
+
+static int hf_hartip_data = -1;
+static int hf_hartip_master_type = -1;
+static int hf_hartip_inactivity_close_timer = -1;
+static int hf_hartip_error_code = -1;
+
+static int hf_hartip_pt_preambles = -1;
+static int hf_hartip_pt_delimiter = -1;
+static int hf_hartip_pt_short_addr = -1;
+static int hf_hartip_pt_long_addr = -1;
+static int hf_hartip_pt_command = -1;
+static int hf_hartip_pt_length = -1;
+static int hf_hartip_pt_response_code = -1;
+static int hf_hartip_pt_device_status = -1;
+static int hf_hartip_pt_payload = -1;
+static int hf_hartip_pt_checksum = -1;
+
+static gint ett_hartip = -1;
+static gint ett_hartip_hdr = -1;
+static gint ett_hartip_body = -1;
+
+/* Command 0 response */
+static int hf_hartip_pt_rsp_expansion_code = -1;
+static int hf_hartip_pt_rsp_expanded_device_type = -1;
+static int hf_hartip_pt_rsp_req_min_preambles = -1;
+static int hf_hartip_pt_rsp_hart_protocol_major_rev = -1;
+static int hf_hartip_pt_rsp_device_rev = -1;
+static int hf_hartip_pt_rsp_software_rev = -1;
+static int hf_hartip_pt_rsp_hardware_rev_physical_signal = -1;
+static int hf_hartip_pt_rsp_flage = -1;
+static int hf_hartip_pt_rsp_device_id = -1;
+static int hf_hartip_pt_rsp_rsp_min_preambles = -1;
+static int hf_hartip_pt_rsp_max_device_variables = -1;
+static int hf_hartip_pt_rsp_configuration_change_counter = -1;
+static int hf_hartip_pt_rsp_extended_device_status = -1;
+static int hf_hartip_pt_rsp_manufacturer_Identification_code = -1;
+static int hf_hartip_pt_rsp_private_label = -1;
+static int hf_hartip_pt_rsp_device_profile = -1;
+
+/* Command 2 response */
+static int hf_hartip_pt_rsp_pv_percent_range = -1;
+
+/* Command 3 response */
+static int hf_hartip_pt_rsp_pv_loop_current = -1;
+static int hf_hartip_pt_rsp_pv_units = -1;
+static int hf_hartip_pt_rsp_pv = -1;
+static int hf_hartip_pt_rsp_sv_units = -1;
+static int hf_hartip_pt_rsp_sv = -1;
+static int hf_hartip_pt_rsp_tv_units = -1;
+static int hf_hartip_pt_rsp_tv = -1;
+static int hf_hartip_pt_rsp_qv_units = -1;
+static int hf_hartip_pt_rsp_qv = -1;
+
+/* Command 9 response */
+static int hf_hartip_pt_rsp_slot0_device_var = -1;
+static int hf_hartip_pt_rsp_slot0_device_var_classify = -1;
+static int hf_hartip_pt_rsp_slot0_units = -1;
+static int hf_hartip_pt_rsp_slot0_device_var_value = -1;
+static int hf_hartip_pt_rsp_slot0_device_var_status = -1;
+
+static int hf_hartip_pt_rsp_slot1_device_var = -1;
+static int hf_hartip_pt_rsp_slot1_device_var_classify = -1;
+static int hf_hartip_pt_rsp_slot1_units = -1;
+static int hf_hartip_pt_rsp_slot1_device_var_value = -1;
+static int hf_hartip_pt_rsp_slot1_device_var_status = -1;
+
+static int hf_hartip_pt_rsp_slot2_device_var = -1;
+static int hf_hartip_pt_rsp_slot2_device_var_classify = -1;
+static int hf_hartip_pt_rsp_slot2_units = -1;
+static int hf_hartip_pt_rsp_slot2_device_var_value = -1;
+static int hf_hartip_pt_rsp_slot2_device_var_status = -1;
+
+static int hf_hartip_pt_rsp_slot3_device_var = -1;
+static int hf_hartip_pt_rsp_slot3_device_var_classify = -1;
+static int hf_hartip_pt_rsp_slot3_units = -1;
+static int hf_hartip_pt_rsp_slot3_device_var_value = -1;
+static int hf_hartip_pt_rsp_slot3_device_var_status = -1;
+
+static int hf_hartip_pt_rsp_slot4_device_var = -1;
+static int hf_hartip_pt_rsp_slot4_device_var_classify = -1;
+static int hf_hartip_pt_rsp_slot4_units = -1;
+static int hf_hartip_pt_rsp_slot4_device_var_value = -1;
+static int hf_hartip_pt_rsp_slot4_device_var_status = -1;
+
+static int hf_hartip_pt_rsp_slot5_device_var = -1;
+static int hf_hartip_pt_rsp_slot5_device_var_classify = -1;
+static int hf_hartip_pt_rsp_slot5_units = -1;
+static int hf_hartip_pt_rsp_slot5_device_var_value = -1;
+static int hf_hartip_pt_rsp_slot5_device_var_status = -1;
+
+static int hf_hartip_pt_rsp_slot6_device_var = -1;
+static int hf_hartip_pt_rsp_slot6_device_var_classify = -1;
+static int hf_hartip_pt_rsp_slot6_units = -1;
+static int hf_hartip_pt_rsp_slot6_device_var_value = -1;
+static int hf_hartip_pt_rsp_slot6_device_var_status = -1;
+
+static int hf_hartip_pt_rsp_slot7_device_var = -1;
+static int hf_hartip_pt_rsp_slot7_device_var_classify = -1;
+static int hf_hartip_pt_rsp_slot7_units = -1;
+static int hf_hartip_pt_rsp_slot7_device_var_value = -1;
+static int hf_hartip_pt_rsp_slot7_device_var_status = -1;
+
+static int hf_hartip_pt_rsp_slot0_timestamp = -1;
+
+/* Command 13 response */
+static int hf_hartip_pt_rsp_packed_descriptor = -1;
+static int hf_hartip_pt_rsp_day = -1;
+static int hf_hartip_pt_rsp_month = -1;
+static int hf_hartip_pt_rsp_year = -1;
+
+/* response Tag */
+static int hf_hartip_pt_rsp_tag = -1;
+
+/* response Message */
+static int hf_hartip_pt_rsp_message = -1;
+
+/* Command 48 response */
+static int hf_hartip_pt_rsp_device_sp_status = -1;
+static int hf_hartip_pt_rsp_device_op_mode = -1;
+static int hf_hartip_pt_rsp_standardized_status_0 = -1;
+static int hf_hartip_pt_rsp_standardized_status_1 = -1;
+static int hf_hartip_pt_rsp_analog_channel_saturated = -1;
+static int hf_hartip_pt_rsp_standardized_status_2 = -1;
+static int hf_hartip_pt_rsp_standardized_status_3 = -1;
+static int hf_hartip_pt_rsp_analog_channel_fixed = -1;
+
+#define HARTIP_HEADER_LENGTH 8
+#define HARTIP_PORT 5094
+
+/* HARTIP header */
+typedef struct _hartip_hdr {
+ guint8 version;
+ guint8 message_type;
+ guint8 message_id;
+ guint8 status;
+ guint16 transaction_id;
+ guint16 length;
+} hartip_hdr;
+
+/* Message IDs */
+#define SESSION_INITIATE_ID 0
+#define SESSION_CLOSE_ID 1
+#define KEEP_ALIVE_ID 2
+#define PASS_THROUGH_ID 3
+
+/* Message types */
+#define REQUEST_MSG_TYPE 0
+#define RESPONSE_MSG_TYPE 1
+#define ERROR_MSG_TYPE 2
+
+
+static const value_string hartip_message_id_values[] = {
+ { SESSION_INITIATE_ID, "Session Initiate" },
+ { SESSION_CLOSE_ID, "Session Close" },
+ { KEEP_ALIVE_ID, "Keep Alive" },
+ { PASS_THROUGH_ID, "Pass Through" },
+ { 0, NULL }
+};
+
+static const value_string hartip_message_type_values[] = {
+ { REQUEST_MSG_TYPE, "Request" },
+ { RESPONSE_MSG_TYPE, "Response" },
+ { ERROR_MSG_TYPE, "Error" },
+ { 0, NULL }
+};
+
+/* Host types */
+#define SECONDARY_MASTER_TYPE 0
+#define PRIMARY_MASTER_TYPE 1
+
+static const value_string hartip_master_type_values[] = {
+ { SECONDARY_MASTER_TYPE, "Secondary Host" },
+ { PRIMARY_MASTER_TYPE, "Primary Host" },
+ { 0, NULL }
+};
+
+
+/* Error Codes */
+#define SESSION_CLOSED_ERROR 0
+#define PRIMARY_SESSION_UNAVAILABLE_ERROR 1
+#define SERVICE_UNAVAILABLE_ERROR 2
+
+static const value_string hartip_error_code_values[] = {
+ { SESSION_CLOSED_ERROR, "Session closed" },
+ { PRIMARY_SESSION_UNAVAILABLE_ERROR, "Primary session unavailable" },
+ { SERVICE_UNAVAILABLE_ERROR, "Service unavailable" },
+ { 0, NULL }
+};
+
+
+/* Handle for statistics tap. */
+static int hartip_tap = -1;
+
+/* Structure used for passing data for statistics processing. */
+typedef struct _hartip_tap_info {
+ gint8 message_type;
+ gint8 message_id;
+} hartip_tap_info;
+
+/* Names of items in statistics tree. */
+static const gchar* st_str_packets = "Total HART_IP Packets";
+static const gchar* st_str_requests = "Request Packets";
+static const gchar* st_str_responses = "Response Packets";
+static const gchar* st_str_errors = "Error Packets";
+
+/* Handles of items in statistics tree. */
+static int st_node_packets = -1;
+static int st_node_requests = -1;
+static int st_node_responses = -1;
+static int st_node_errors = -1;
+
+static void
+hartip_stats_tree_init(stats_tree* st) {
+ st_node_packets = stats_tree_create_node(st, st_str_packets, 0, TRUE);
+ st_node_requests = stats_tree_create_pivot(st, st_str_requests, st_node_packets);
+ st_node_responses = stats_tree_create_node(st, st_str_responses, st_node_packets, TRUE);
+ st_node_errors = stats_tree_create_node(st, st_str_errors, st_node_packets, TRUE);
+}
+
+static int
+hartip_stats_tree_packet(stats_tree* st, packet_info* pinfo _U_, epan_dissect_t* edt _U_, const void* p) {
+
+ const hartip_tap_info *tapinfo = p;
+ const gchar *message_type_node_str, *message_id_node_str;
+ int message_type_node;
+
+ switch (tapinfo->message_type) {
+ case REQUEST_MSG_TYPE:
+ message_type_node_str = st_str_requests;
+ message_type_node = st_node_requests;
+ break;
+ case RESPONSE_MSG_TYPE:
+ message_type_node_str = st_str_responses;
+ message_type_node = st_node_responses;
+ break;
+ case ERROR_MSG_TYPE:
+ message_type_node_str = st_str_errors;
+ message_type_node = st_node_errors;
+ break;
+ default:
+ return 0; /* Don't want to track invalid messages for now. */
+ }
+
+ message_id_node_str = val_to_str(tapinfo->message_id,
+ hartip_message_id_values, "Unknown message %d");
+
+ tick_stat_node(st, (guint8*)st_str_packets, 0, FALSE);
+ tick_stat_node(st, (guint8*)message_type_node_str, st_node_packets, FALSE);
+ tick_stat_node(st, (guint8*)message_id_node_str, message_type_node, FALSE);
+
+ return 1;
+}
+
+static gint
+dissect_empty_body(proto_tree *tree, tvbuff_t *tvb,
+ gint offset, gint bodylen)
+{
+ proto_item *ti;
+
+ ti = proto_tree_add_item(tree, hf_hartip_data, tvb, offset, bodylen, ENC_NA);
+ if (bodylen == 0) {
+ proto_item_set_text(ti, "No data");
+ } else {
+ proto_item_set_text(ti, "Unexpected message body");
+ }
+ return bodylen;
+}
+
+static gint
+dissect_session_init(proto_tree *body_tree, tvbuff_t *tvb,
+ gint offset, gint bodylen)
+{
+ proto_item *ti;
+ guint8 master_type;
+ const char *master_type_str;
+
+ if (bodylen == 5) {
+ master_type = tvb_get_guint8(tvb, offset);
+ ti = proto_tree_add_uint(body_tree, hf_hartip_master_type, tvb, offset, 1,
+ master_type);
+ offset++;
+ master_type_str = val_to_str(master_type, hartip_master_type_values,
+ "Unknown host type %d");
+ proto_item_set_text(ti, "Host Type: %s", master_type_str);
+
+ proto_tree_add_uint(body_tree, hf_hartip_inactivity_close_timer, tvb, offset, 4,
+ tvb_get_ntohl(tvb, offset));
+ } else {
+ proto_tree_add_item(body_tree, hf_hartip_data, tvb, offset,
+ bodylen, ENC_NA);
+ }
+
+ return bodylen;
+}
+
+static gint
+dissect_error(proto_tree *body_tree, tvbuff_t *tvb,
+ gint offset, gint bodylen)
+{
+ if (bodylen == 1) {
+ proto_tree_add_uint(body_tree, hf_hartip_error_code, tvb, offset, 1,
+ tvb_get_guint8(tvb, offset));
+ } else {
+ proto_tree_add_item(body_tree, hf_hartip_data, tvb, offset,
+ bodylen, ENC_NA);
+ }
+
+ return bodylen;
+}
+
+static gint
+dissect_session_close(proto_tree *body_tree, tvbuff_t *tvb,
+ gint offset, gint bodylen)
+{
+ return dissect_empty_body(body_tree, tvb, offset, bodylen);
+}
+
+static gint
+dissect_keep_alive(proto_tree *body_tree, tvbuff_t *tvb,
+ gint offset, gint bodylen)
+{
+ return dissect_empty_body(body_tree, tvb, offset, bodylen);
+}
+
+static gint
+dissect_byte(proto_tree *tree, int hf, tvbuff_t *tvb, gint offset)
+{
+ proto_tree_add_uint(tree, hf, tvb, offset, 1, tvb_get_guint8(tvb, offset));
+ return 1;
+}
+static gint
+dissect_short(proto_tree *tree, int hf, tvbuff_t *tvb, gint offset)
+{
+ proto_tree_add_uint(tree, hf, tvb, offset, 2, tvb_get_ntohs(tvb, offset));
+ return 2;
+}
+
+static gint
+dissect_float(proto_tree *tree, int hf, tvbuff_t *tvb, gint offset)
+{
+ proto_tree_add_item(tree, hf, tvb, offset, sizeof(gfloat), ENC_BIG_ENDIAN);
+ return 4;
+}
+
+static gint
+dissect_string(proto_tree *tree, int hf, char *name, int len, tvbuff_t *tvb,
+ gint offset)
+{
+ proto_item *ti;
+ char *str;
+
+ str = ep_alloc(256);
+
+ ti = proto_tree_add_item(tree, hf, tvb, offset, len, ENC_NA);
+ if (len < 256) {
+ (void) tvb_get_nstringz0(tvb, offset, len + 1, str);
+ proto_item_set_text(ti, "%s: %s", name, str);
+ }
+
+ return len;
+}
+
+static gint
+dissect_packAscii(proto_tree *tree, int hf, char *name, int len, tvbuff_t *tvb,
+ gint offset)
+{
+ gushort usIdx;
+ gushort usGroupCnt;
+ gushort usMaxGroups; /* Number of 4 byte groups to pack. */
+ gushort usMask;
+ gint iIndex;
+ gint i = 0;
+ proto_item *ti;
+ gushort buf[4];
+ guint8 *tmp;
+ char *str = NULL;
+
+ str = ep_alloc(256+1);
+
+ ti = proto_tree_add_item(tree, hf, tvb, offset, len, ENC_NA);
+
+ DISSECTOR_ASSERT(len < 3 * (256/4));
+ tmp = ep_alloc0(len);
+ tvb_memcpy(tvb, tmp, offset, len);
+
+ iIndex = 0;
+ usMaxGroups = (gushort)(len / 3);
+ for (usGroupCnt = 0; usGroupCnt < usMaxGroups; usGroupCnt++) {
+ /*
+ * First unpack 3 bytes into a group of 4 bytes, clearing bits 6 & 7.
+ */
+ buf[0] = (gushort)(tmp[iIndex] >> 2);
+ buf[1] = (gushort)(((tmp[iIndex] << 4) & 0x30) | (tmp[iIndex + 1] >> 4));
+ buf[2] = (gushort)(((tmp[iIndex + 1] << 2) & 0x3C) | (tmp[iIndex + 2] >> 6));
+ buf[3] = (gushort)(tmp[iIndex + 2] & 0x3F);
+ iIndex += 3;
+
+ /*
+ * Now transfer to unpacked area, setting bit 6 to complement of bit 5.
+ */
+ for (usIdx = 0; usIdx < 4; usIdx++) {
+ usMask = (gushort)(((buf[usIdx] & 0x20) << 1) ^ 0x40);
+ DISSECTOR_ASSERT(i < 256);
+ str[i++] = (gchar)(buf[usIdx] | usMask);
+ }
+ }
+ str[i] = '\0';
+ proto_item_set_text(ti, "%s: %s", name, str);
+
+ return len;
+}
+
+static gint
+dissect_timestamp(proto_tree *tree, int hf, char *name, int len, tvbuff_t *tvb,
+ gint offset)
+{
+ proto_item *ti;
+ guint32 t;
+ guint32 hrs = 0;
+ guint32 mins = 0;
+ guint32 secs = 0;
+ guint32 ms = 0;
+
+ ti = proto_tree_add_item(tree, hf, tvb, offset, len, ENC_NA);
+ t = tvb_get_ntohl(tvb, offset);
+
+ if (t > 0 ) {
+ t /= 32;
+ ms = t % 1000;
+ t /= 1000;
+ secs = t % 60;
+ t /= 60;
+ mins = t % 60;
+ hrs = (guint)(t / 60);
+ }
+
+ proto_item_set_text(ti, "%s: %02d:%02d:%02d.%03d", name, hrs, mins, secs, ms);
+ return len;
+}
+
+static gint
+dissect_cmd0(proto_tree *body_tree, tvbuff_t *tvb,
+ gint offset, gint bodylen)
+{
+ if (bodylen >= 22) {
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_expansion_code, tvb, offset);
+ offset += dissect_short(body_tree, hf_hartip_pt_rsp_expanded_device_type, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_req_min_preambles, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_hart_protocol_major_rev, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_device_rev, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_software_rev, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_hardware_rev_physical_signal, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_flage, tvb, offset);
+ proto_tree_add_item(body_tree, hf_hartip_pt_rsp_device_id, tvb, offset, 3, ENC_NA);
+ offset += 3;
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_rsp_min_preambles, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_max_device_variables, tvb, offset);
+ offset += dissect_short(body_tree, hf_hartip_pt_rsp_configuration_change_counter, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_extended_device_status, tvb, offset);
+ offset += dissect_short(body_tree, hf_hartip_pt_rsp_manufacturer_Identification_code, tvb, offset);
+ offset += dissect_short(body_tree, hf_hartip_pt_rsp_private_label, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_device_profile, tvb, offset);
+
+ return bodylen;
+ }
+
+ return 0;
+}
+
+static gint
+dissect_cmd1(proto_tree *body_tree, tvbuff_t *tvb,
+ gint offset, gint bodylen)
+{
+ if (bodylen >= 5) {
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_pv_units, tvb, offset);
+ offset += dissect_float(body_tree, hf_hartip_pt_rsp_pv, tvb, offset);
+ return bodylen;
+ }
+
+ return 0;
+}
+
+static gint
+dissect_cmd2(proto_tree *body_tree, tvbuff_t *tvb,
+ gint offset, gint bodylen)
+{
+ if (bodylen >= 8) {
+ offset += dissect_float(body_tree, hf_hartip_pt_rsp_pv_loop_current, tvb, offset);
+ offset += dissect_float(body_tree, hf_hartip_pt_rsp_pv_percent_range, tvb, offset);
+ return bodylen;
+ }
+
+ return 0;
+}
+
+static gint
+dissect_cmd3(proto_tree *body_tree, tvbuff_t *tvb,
+ gint offset, gint bodylen)
+{
+ if (bodylen >= 24) {
+ offset += dissect_float(body_tree, hf_hartip_pt_rsp_pv_loop_current, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_pv_units, tvb, offset);
+ offset += dissect_float(body_tree, hf_hartip_pt_rsp_pv, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_sv_units, tvb, offset);
+ offset += dissect_float(body_tree, hf_hartip_pt_rsp_sv, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_tv_units, tvb, offset);
+ offset += dissect_float(body_tree, hf_hartip_pt_rsp_tv, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_qv_units, tvb, offset);
+ offset += dissect_float(body_tree, hf_hartip_pt_rsp_qv, tvb, offset);
+
+ return bodylen;
+ }
+
+ return 0;
+}
+
+static gint
+dissect_cmd9(proto_tree *body_tree, tvbuff_t *tvb,
+ gint offset, gint bodylen)
+{
+ if (bodylen >= 14) {
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_extended_device_status, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot0_device_var, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot0_device_var_classify, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot0_units, tvb, offset);
+ offset += dissect_float(body_tree, hf_hartip_pt_rsp_slot0_device_var_value, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot0_device_var_status, tvb, offset);
+
+ if (bodylen >= 22) {
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot1_device_var, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot1_device_var_classify, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot1_units, tvb, offset);
+ offset += dissect_float(body_tree, hf_hartip_pt_rsp_slot1_device_var_value, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot1_device_var_status, tvb, offset);
+ }
+
+ if (bodylen >= 30) {
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot2_device_var, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot2_device_var_classify, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot2_units, tvb, offset);
+ offset += dissect_float(body_tree, hf_hartip_pt_rsp_slot2_device_var_value, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot2_device_var_status, tvb, offset);
+ }
+
+ if (bodylen >= 38) {
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot3_device_var, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot3_device_var_classify, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot3_units, tvb, offset);
+ offset += dissect_float(body_tree, hf_hartip_pt_rsp_slot3_device_var_value, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot3_device_var_status, tvb, offset);
+ }
+
+ if (bodylen >= 46) {
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot4_device_var, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot4_device_var_classify, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot4_units, tvb, offset);
+ offset += dissect_float(body_tree, hf_hartip_pt_rsp_slot4_device_var_value, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot4_device_var_status, tvb, offset);
+ }
+
+ if (bodylen >= 54) {
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot5_device_var, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot5_device_var_classify, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot5_units, tvb, offset);
+ offset += dissect_float(body_tree, hf_hartip_pt_rsp_slot5_device_var_value, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot5_device_var_status, tvb, offset);
+ }
+
+ if (bodylen >= 62) {
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot6_device_var, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot6_device_var_classify, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot6_units, tvb, offset);
+ offset += dissect_float(body_tree, hf_hartip_pt_rsp_slot6_device_var_value, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot6_device_var_status, tvb, offset);
+ }
+
+ if (bodylen >= 70) {
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot7_device_var, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot7_device_var_classify, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot7_units, tvb, offset);
+ offset += dissect_float(body_tree, hf_hartip_pt_rsp_slot7_device_var_value, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_slot7_device_var_status, tvb, offset);
+ }
+
+ dissect_timestamp(body_tree, hf_hartip_pt_rsp_slot0_timestamp, "Slot0 Data TimeStamp", 4, tvb, offset);
+
+ return bodylen;
+ }
+
+ return 0;
+}
+
+static gint
+dissect_cmd13(proto_tree *body_tree, tvbuff_t *tvb,
+ gint offset, gint bodylen)
+{
+ if (bodylen >= 21) {
+ offset += dissect_packAscii(body_tree, hf_hartip_pt_rsp_tag, "Tag", 6, tvb, offset);
+ offset += dissect_packAscii(body_tree, hf_hartip_pt_rsp_packed_descriptor, "descriptor", 12, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_day, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_month, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_year, tvb, offset);
+
+ return bodylen;
+ }
+
+ return 0;
+}
+
+static gint
+dissect_cmd48(proto_tree *body_tree, tvbuff_t *tvb,
+ gint offset, gint bodylen)
+{
+ if (bodylen >= 9) {
+ proto_tree_add_item(body_tree, hf_hartip_pt_rsp_device_sp_status, tvb, offset, 5, ENC_NA);
+ offset += 5;
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_extended_device_status, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_device_op_mode, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_standardized_status_0, tvb, offset);
+
+ if (bodylen >= 14) {
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_standardized_status_1, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_analog_channel_saturated, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_standardized_status_2, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_standardized_status_3, tvb, offset);
+ offset += dissect_byte(body_tree, hf_hartip_pt_rsp_analog_channel_fixed, tvb, offset);
+ }
+
+ if (bodylen >= 24) {
+ proto_tree_add_item(body_tree, hf_hartip_pt_rsp_device_sp_status, tvb, offset, 11, ENC_NA);
+ offset += 11;
+ }
+ return bodylen;
+ }
+
+ return 0;
+}
+
+static gint
+dissect_parse_hart_cmds(proto_tree *body_tree, tvbuff_t *tvb,
+ guint8 cmd, gint offset, gint bodylen)
+{
+ if (cmd == 0)
+ return dissect_cmd0(body_tree, tvb, offset, bodylen);
+ else if (cmd == 1)
+ return dissect_cmd1(body_tree, tvb, offset, bodylen);
+ else if (cmd == 2)
+ return dissect_cmd2(body_tree, tvb, offset, bodylen);
+ else if (cmd == 3)
+ return dissect_cmd3(body_tree, tvb, offset, bodylen);
+ else if (cmd == 9)
+ return dissect_cmd9(body_tree, tvb, offset, bodylen);
+ else if ((cmd == 12) && (bodylen >= 24))
+ return dissect_packAscii(body_tree, hf_hartip_pt_rsp_message, "Message", 24, tvb, offset);
+ else if (cmd == 13)
+ return dissect_cmd13(body_tree, tvb, offset, bodylen);
+ else if ((cmd == 20) && (bodylen >= 32))
+ return dissect_string(body_tree, hf_hartip_pt_rsp_tag, "Tag", 32, tvb, offset);
+ else if (cmd == 48)
+ return dissect_cmd48(body_tree, tvb, offset, bodylen);
+
+ return 0;
+}
+
+static gint
+dissect_pass_through(proto_tree *body_tree, tvbuff_t *tvb,
+ gint offset, gint bodylen)
+{
+ proto_item *ti;
+ guint8 delimiter;
+ const char *frame_type_str;
+ guint8 tmp;
+ guint8 cmd = 0;
+ gint length = bodylen;
+ gint is_short = 0;
+ gint is_rsp = 0;
+ gint num_preambles = 0;
+ gint result;
+
+ /* find number of preambles */
+ while (length > num_preambles) {
+ delimiter = tvb_get_guint8(tvb, offset + num_preambles);
+ if (delimiter != 0xFF)
+ break;
+
+ num_preambles += 1;
+ }
+
+ if (num_preambles > 0) {
+ proto_tree_add_item(body_tree, hf_hartip_pt_preambles, tvb, offset,
+ num_preambles, ENC_NA);
+ offset += num_preambles;
+ length -= num_preambles;
+ }
+
+ if (length > 0) {
+ delimiter = tvb_get_guint8(tvb, offset);
+ ti = proto_tree_add_uint(body_tree, hf_hartip_pt_delimiter, tvb, offset, 1,
+ delimiter);
+ offset++;
+ length--;
+
+ if ((delimiter & 0x7) == 2) {
+ frame_type_str = "STX";
+ } else if ((delimiter & 0x7) == 6) {
+ frame_type_str = "ACK";
+ is_rsp = 1;
+ } else {
+ frame_type_str = "UNK";
+ }
+
+ if ((delimiter & 0x80) == 0) {
+ is_short = 1;
+ proto_item_set_text(ti, "Short Address, Frame Type: %s", frame_type_str);
+ } else {
+ proto_item_set_text(ti, "Frame Type: %s", frame_type_str);
+ }
+ }
+
+ if (is_short == 1) {
+ if (length > 0) {
+ tmp = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint(body_tree, hf_hartip_pt_short_addr, tvb, offset, 1,
+ tmp);
+ offset++;
+ length--;
+ }
+ } else {
+ if (length > 4) {
+ proto_tree_add_item(body_tree, hf_hartip_pt_long_addr, tvb, offset,
+ 5, ENC_NA);
+ offset += 5;
+ length -= 5;
+ } else if (length > 0) {
+ proto_tree_add_item(body_tree, hf_hartip_data, tvb, offset,
+ length, ENC_NA);
+ length = 0;
+ }
+ }
+
+ if (length > 0) {
+ cmd = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint(body_tree, hf_hartip_pt_command, tvb, offset, 1,
+ cmd);
+ offset++;
+ length--;
+ }
+ if (length > 0) {
+ tmp = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint(body_tree, hf_hartip_pt_length, tvb, offset, 1,
+ tmp);
+ offset++;
+ length--;
+ }
+
+ if (is_rsp == 1) {
+ if (length > 0) {
+ tmp = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint(body_tree, hf_hartip_pt_response_code, tvb, offset, 1,
+ tmp);
+ offset++;
+ length--;
+ }
+ if (length > 0) {
+ tmp = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint(body_tree, hf_hartip_pt_device_status, tvb, offset, 1,
+ tmp);
+ offset++;
+ length--;
+ }
+ }
+
+ if (length > 1) {
+ result = dissect_parse_hart_cmds(body_tree, tvb, cmd, offset, length);
+ if (result == 0 ) {
+ proto_tree_add_item(body_tree, hf_hartip_pt_payload, tvb, offset,
+ (length - 1), ENC_NA);
+ }
+ offset += (length - 1);
+ length = 1;
+ }
+ if (length > 0) {
+ tmp = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint(body_tree, hf_hartip_pt_checksum, tvb, offset, 1,
+ tmp);
+ }
+
+ return bodylen;
+}
+
+static void
+hartip_set_conversation(packet_info *pinfo)
+{
+ conversation_t *conversation = NULL;
+
+ if (!pinfo->fd->flags.visited &&
+ (pinfo->ptype == PT_UDP)) {
+ /*
+ * This function is called for a session initiate send over UDP.
+ * The session initiate is sent to the server on port HARTIP_PORT.
+ * The server then responds from a different port. All subsequent
+ * communication for the session between the client and server
+ * uses the new server port and the original client port.
+ *
+ * A new conversation is created here and this dissector is set to
+ * be used for it. This allows the packets to be dissected properly
+ * for this protocol.
+ */
+ conversation = find_conversation(pinfo->fd->num,
+ &pinfo->src, &pinfo->dst, pinfo->ptype,
+ pinfo->srcport, 0, NO_PORT_B);
+ if( (conversation == NULL) ||
+ (conversation->dissector_handle != hartip_handle) ) {
+ conversation = conversation_new(pinfo->fd->num,
+ &pinfo->src, &pinfo->dst, pinfo->ptype,
+ pinfo->srcport, 0, NO_PORT2);
+ conversation_set_dissector(conversation, hartip_handle);
+ }
+ }
+}
+
+static void
+dissect_hartip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ proto_tree *hartip_tree, *hdr_tree, *body_tree;
+ proto_item *ti, *hdr_node, *body_node;
+ gint offset = 0;
+ gint bodylen;
+ gint packet_count = 0;
+ hartip_hdr hdr;
+ const char *msg_id_str, *msg_type_str;
+ hartip_tap_info *tapinfo;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "HART_IP");
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ while (1) {
+ if (tvb_reported_length_remaining(tvb, offset) < HARTIP_HEADER_LENGTH)
+ return;
+
+ tvb_memcpy(tvb, (guint8 *)&hdr, offset, sizeof(hartip_hdr));
+ hdr.transaction_id = g_ntohs(hdr.transaction_id);
+ hdr.length = g_ntohs(hdr.length);
+
+ msg_id_str = val_to_str(hdr.message_id, hartip_message_id_values, "Unknown message %d");
+ msg_type_str = val_to_str(hdr.message_type, hartip_message_type_values,
+ "Unknown message type %d");
+ bodylen = hdr.length - HARTIP_HEADER_LENGTH;
+
+ /* Setup statistics for tap. */
+ tapinfo = ep_alloc(sizeof(hartip_tap_info));
+ tapinfo->message_type = hdr.message_type;
+ tapinfo->message_id = hdr.message_id;
+
+ if (hdr.message_id == SESSION_INITIATE_ID) {
+ hartip_set_conversation(pinfo);
+ }
+
+ if (packet_count == 0) {
+ col_add_fstr(pinfo->cinfo, COL_INFO,
+ "%s %s, Sequence Number %d",
+ msg_id_str,
+ msg_type_str,
+ hdr.transaction_id);
+ }
+ else if (packet_count == 1) {
+ col_add_fstr(pinfo->cinfo, COL_INFO,
+ "Multiple HART_IP Messages");
+ }
+ packet_count++;
+
+ if (tree) {
+ ti = proto_tree_add_protocol_format
+ (tree, proto_hartip, tvb, offset, hdr.length,
+ "HART_IP Protocol, %s %s, Sequence Number %d",
+ msg_id_str,
+ msg_type_str,
+ hdr.transaction_id);
+ hartip_tree = proto_item_add_subtree(ti, ett_hartip);
+
+ /* add header elements. */
+ hdr_node = proto_tree_add_text(hartip_tree, tvb, offset, HARTIP_HEADER_LENGTH,
+ "HART_IP Header");
+
+
+ hdr_tree = proto_item_add_subtree(hdr_node, ett_hartip_hdr);
+
+ proto_tree_add_uint(hdr_tree, hf_hartip_hdr_version, tvb, offset++, 1,
+ hdr.version);
+ ti = proto_tree_add_uint(hdr_tree, hf_hartip_hdr_message_type, tvb, offset++, 1,
+ hdr.message_type);
+ proto_item_set_text(ti, "Message Type: %s", msg_type_str);
+ ti = proto_tree_add_uint(hdr_tree, hf_hartip_hdr_message_id, tvb, offset++, 1,
+ hdr.message_id);
+ proto_item_set_text(ti, "Message ID: %s", msg_id_str);
+ proto_tree_add_uint(hdr_tree, hf_hartip_hdr_status, tvb, offset++, 1,
+ hdr.status);
+
+ proto_tree_add_uint(hdr_tree, hf_hartip_hdr_transaction_id, tvb, offset, 2,
+ hdr.transaction_id);
+ offset += 2;
+ proto_tree_add_uint(hdr_tree, hf_hartip_hdr_msg_length, tvb, offset, 2,
+ hdr.length);
+ offset += 2;
+
+ /* add body elements. */
+ if (bodylen < 0) {
+ proto_tree_add_text(hartip_tree, tvb, offset, hdr.length - HARTIP_HEADER_LENGTH,
+ "HART_IP Body - Invalid size");
+ return;
+ } else {
+ body_node = proto_tree_add_text
+ (hartip_tree, tvb, offset, bodylen, "HART_IP Body, %s, %s",
+ msg_id_str,
+ msg_type_str);
+ body_tree = proto_item_add_subtree(body_node, ett_hartip_body);
+
+ if (hdr.message_type == ERROR_MSG_TYPE) {
+ offset += dissect_error(body_tree, tvb, offset, bodylen);
+ } else {
+ /* Dissect the various HARTIP messages. */
+ switch(hdr.message_id) {
+ case SESSION_INITIATE_ID:
+ offset += dissect_session_init(body_tree, tvb, offset, bodylen);
+ break;
+ case SESSION_CLOSE_ID:
+ offset += dissect_session_close(body_tree, tvb, offset, bodylen);
+ break;
+ case KEEP_ALIVE_ID:
+ offset += dissect_keep_alive(body_tree, tvb, offset, bodylen);
+ break;
+ case PASS_THROUGH_ID:
+ offset += dissect_pass_through(body_tree, tvb, offset, bodylen);
+ break;
+ default:
+ proto_tree_add_item(body_tree, hf_hartip_data, tvb, offset,
+ bodylen, ENC_NA);
+ offset += bodylen;
+ break;
+ }
+ }
+ }
+ }
+ else {
+ offset += hdr.length;
+ }
+
+ tap_queue_packet(hartip_tap, pinfo, tapinfo);
+ }
+}
+
+
+void
+proto_register_hartip(void)
+{
+ static hf_register_info hf[] = {
+ /* HARTIP header elements. */
+ { &hf_hartip_hdr_version,
+ { "Version", "hart_ip.version",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "HART_IP version number", HFILL }
+ },
+ { &hf_hartip_hdr_message_type,
+ { "Message Type", "hart_ip.message_type",
+ FT_UINT8, BASE_DEC, VALS(hartip_message_type_values), 0xFF,
+ "HART_IP message type", HFILL }
+ },
+ { &hf_hartip_hdr_message_id,
+ { "Message ID", "hart_ip.message_id",
+ FT_UINT8, BASE_DEC, VALS(hartip_message_id_values), 0xFF,
+ "HART_IP message id", HFILL }
+ },
+ { &hf_hartip_hdr_status,
+ { "Status", "hart_ip.status",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "HART_IP status field", HFILL }
+ },
+ { &hf_hartip_hdr_transaction_id,
+ { "Sequence Number", "hart_ip.transaction_id",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "HART_IP Sequence Number", HFILL }
+ },
+ { &hf_hartip_hdr_msg_length,
+ { "Message Length", "hart_ip.msg_length",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "HART_IP Message Length", HFILL }
+ },
+
+ /* HARTIP Body elements */
+ { &hf_hartip_data,
+ { "Message Data", "hart_ip.data",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "HART_IP Message Data", HFILL }
+ },
+ { &hf_hartip_master_type,
+ { "Host Type", "hart_ip.session_init.master_type",
+ FT_UINT8, BASE_DEC, VALS(hartip_master_type_values), 0xFF,
+ "Session Host Type", HFILL }
+ },
+ { &hf_hartip_inactivity_close_timer,
+ { "Inactivity Close Timer", "hart_ip.session_init.inactivity_close_timer",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Session Inactivity Close Timer", HFILL }
+ },
+ { &hf_hartip_error_code,
+ { "Error", "hart_ip.error.error_code",
+ FT_UINT8, BASE_DEC, VALS(hartip_error_code_values), 0xFF,
+ "Error Code", HFILL }
+ },
+
+ /* HARTIP Pass-through commads. */
+ { &hf_hartip_pt_preambles,
+ { "Preambles", "hart_ip.pt.preambles",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Pass Through Preambles", HFILL }
+ },
+ { &hf_hartip_pt_delimiter,
+ { "Delimter", "hart_ip.pt.delimter",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ "Pass Through Delimiter", HFILL }
+ },
+ { &hf_hartip_pt_short_addr,
+ { "Short Address", "hart_ip.pt.short_addr",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Pass Through Short Address", HFILL }
+ },
+ { &hf_hartip_pt_long_addr,
+ { "Long Address", "hart_ip.pt.long_address",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Pass Through Long Address", HFILL }
+ },
+ { &hf_hartip_pt_command,
+ { "Command", "hart_ip.pt.command",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Pass Through Command", HFILL }
+ },
+ { &hf_hartip_pt_length,
+ { "Length", "hart_ip.pt.length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Pass Through Length", HFILL }
+ },
+ { &hf_hartip_pt_response_code,
+ { "Response Code", "hart_ip.pt.response_code",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Pass Through Response Code", HFILL }
+ },
+ { &hf_hartip_pt_device_status,
+ { "Device Status", "hart_ip.pt.device_status",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ "Pass Through Device Status", HFILL }
+ },
+ { &hf_hartip_pt_payload,
+ { "Payload", "hart_ip.pt.payload",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Pass Through Payload", HFILL }
+ },
+ { &hf_hartip_pt_checksum,
+ { "Checksum", "hart_ip.pt.checksum",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ "Pass Through Checksum", HFILL }
+ },
+
+ /* add fields for universal commands. */
+ /* command 0 */
+ { &hf_hartip_pt_rsp_expansion_code,
+ { "Expansion Code", "hart_ip.pt.rsp.expansion_code",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_expanded_device_type,
+ { "Expanded Device Type", "hart_ip.pt.rsp.expanded_device_type",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_req_min_preambles,
+ { "Minimum Number of Request Preambles", "hart_ip.pt.rsp.req_min_preambles",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_hart_protocol_major_rev,
+ { "HART Universal Revision", "hart_ip.pt.rsp.hart_univ_rev",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_device_rev,
+ { "Device Revision", "hart_ip.pt.rsp.device_rev",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_software_rev,
+ { "Device Software Revision", "hart_ip.pt.rsp.software_rev",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_hardware_rev_physical_signal,
+ { "Hardware Rev and Physical Signaling", "hart_ip.pt.rsp.hardrev_and_physical_signal",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_flage,
+ { "Flags", "hart_ip.pt.rsp.flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_device_id,
+ { "Device ID", "hart_ip.pt.rsp.device_id",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_rsp_min_preambles,
+ { "Minimum Number of Response Preambles", "hart_ip.pt.rsp.rsp_min_preambles",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_max_device_variables,
+ { "Maximum Number of Device Variables", "hart_ip.pt.rsp.device_variables",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_configuration_change_counter,
+ { "Configuration Change Counter", "hart_ip.pt.rsp.configure_change",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_extended_device_status,
+ { "Extended Device Status", "hart_ip.pt.rsp.ext_device_status",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_manufacturer_Identification_code,
+ { "Manufacturer ID", "hart_ip.pt.rsp.manufacturer_Id",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_private_label,
+ { "Private Label", "hart_ip.pt.rsp.private_label",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_device_profile,
+ { "Device Profile", "hart_ip.pt.rsp.device_profile",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+
+ /* command 2 */
+ { &hf_hartip_pt_rsp_pv_percent_range,
+ { "PV Percent Range", "hart_ip.pt.rsp.pv_percent_range",
+ FT_FLOAT, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+
+ /* command 3 */
+ { &hf_hartip_pt_rsp_pv_loop_current,
+ { "PV Loop Current", "hart_ip.pt.rsp.pv_loop_current",
+ FT_FLOAT, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_pv_units,
+ { "PV Units", "hart_ip.pt.rsp.pv_units",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_pv,
+ { "PV", "hart_ip.pt.rsp.pv",
+ FT_FLOAT, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_sv_units,
+ { "SV Units", "hart_ip.pt.rsp.sv_units",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_sv,
+ { "SV", "hart_ip.pt.rsp.sv",
+ FT_FLOAT, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_tv_units,
+ { "TV Units", "hart_ip.pt.rsp.tv_units",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_tv,
+ { "TV", "hart_ip.pt.rsp.tv",
+ FT_FLOAT, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_qv_units,
+ { "QV Units", "hart_ip.pt.rsp.qv_units",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_qv,
+ { "QV", "hart_ip.pt.rsp.qv",
+ FT_FLOAT, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+
+ /* command 9 */
+ { &hf_hartip_pt_rsp_slot0_device_var,
+ { "Slot0 Device Variable", "hart_ip.pt.rsp.slot0_device_var",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot0_device_var_classify,
+ { "Slot0 Device Variable Classification", "hart_ip.pt.rsp.slot0_device_var_classify",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot0_units,
+ { "Slot0 Units", "hart_ip.pt.rsp.slot0_units",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot0_device_var_value,
+ { "Slot0 Device Variable Value", "hart_ip.pt.rsp.slot0_device_var_value",
+ FT_FLOAT, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot0_device_var_status,
+ { "Slot0 Device Variable Status", "hart_ip.pt.rsp.slot0_device_var_status",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot1_device_var,
+ { "Slot1 Device Variable", "hart_ip.pt.rsp.slot1_device_var",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot1_device_var_classify,
+ { "Slot1 Device Variable Classification", "hart_ip.pt.rsp.slot1_device_var_classify",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot1_units,
+ { "Slot1 Units", "hart_ip.pt.rsp.slot1_units",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot1_device_var_value,
+ { "Slot1 Device Variable Value", "hart_ip.pt.rsp.slot1_device_var_value",
+ FT_FLOAT, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot1_device_var_status,
+ { "Slot1 Device Variable Status", "hart_ip.pt.rsp.slot1_device_var_status",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot2_device_var,
+ { "Slot2 Device Variable", "hart_ip.pt.rsp.slot2_device_var",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot2_device_var_classify,
+ { "Slot2 Device Variable Classification", "hart_ip.pt.rsp.slot2_device_var_classify",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot2_units,
+ { "Slot2 Units", "hart_ip.pt.rsp.slot2_units",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot2_device_var_value,
+ { "Slot2 Device Variable Value", "hart_ip.pt.rsp.slot2_device_var_value",
+ FT_FLOAT, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot2_device_var_status,
+ { "Slot2 Device Variable Status", "hart_ip.pt.rsp.slot2_device_var_status",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot3_device_var,
+ { "Slot3 Device Variable", "hart_ip.pt.rsp.slot3_device_var",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot3_device_var_classify,
+ { "Slot3 Device Variable Classification", "hart_ip.pt.rsp.slot3_device_var_classify",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot3_units,
+ { "Slot3 Units", "hart_ip.pt.rsp.slot3_units",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot3_device_var_value,
+ { "Slot3 Device Variable Value", "hart_ip.pt.rsp.slot3_device_var_value",
+ FT_FLOAT, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot3_device_var_status,
+ { "Slot3 Device Variable Status", "hart_ip.pt.rsp.slot3_device_var_status",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot4_device_var,
+ { "Slot4 Device Variable", "hart_ip.pt.rsp.slot4_device_var",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot4_device_var_classify,
+ { "Slot4 Device Variable Classification", "hart_ip.pt.rsp.slot4_device_var_classify",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot4_units,
+ { "Slot4 Units", "hart_ip.pt.rsp.slot4_units",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot4_device_var_value,
+ { "Slot4 Device Variable Value", "hart_ip.pt.rsp.slot4_device_var_value",
+ FT_FLOAT, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot4_device_var_status,
+ { "Slot4 Device Variable Status", "hart_ip.pt.rsp.slot4_device_var_status",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot5_device_var,
+ { "Slot5 Device Variable", "hart_ip.pt.rsp.slot5_device_var",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot5_device_var_classify,
+ { "Slot5 Device Variable Classification", "hart_ip.pt.rsp.slot5_device_var_classify",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot5_units,
+ { "Slot5 Units", "hart_ip.pt.rsp.slot5_units",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot5_device_var_value,
+ { "Slot5 Device Variable Value", "hart_ip.pt.rsp.slot5_device_var_value",
+ FT_FLOAT, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot5_device_var_status,
+ { "Slot5 Device Variable Status", "hart_ip.pt.rsp.slot5_device_var_status",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot6_device_var,
+ { "Slot6 Device Variable", "hart_ip.pt.rsp.slot6_device_var",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot6_device_var_classify,
+ { "Slot6 Device Variable Classification", "hart_ip.pt.rsp.slot6_device_var_classify",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot6_units,
+ { "Slot6 Units", "hart_ip.pt.rsp.slot6_units",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot6_device_var_value,
+ { "Slot6 Device Variable Value", "hart_ip.pt.rsp.slot6_device_var_value",
+ FT_FLOAT, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot6_device_var_status,
+ { "Slot6 Device Variable Status", "hart_ip.pt.rsp.slot6_device_var_status",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot7_device_var,
+ { "Slot7 Device Variable", "hart_ip.pt.rsp.slot7_device_var",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot7_device_var_classify,
+ { "Slot7 Device Variable Classification", "hart_ip.pt.rsp.slot7_device_var_classify",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot7_units,
+ { "Slot7 Units", "hart_ip.pt.rsp.slot7_units",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot7_device_var_value,
+ { "Slot7 Device Variable Value", "hart_ip.pt.rsp.slot7_device_var_value",
+ FT_FLOAT, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot7_device_var_status,
+ { "Slot7 Device Variable Status", "hart_ip.pt.rsp.slot7_device_var_status",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_slot0_timestamp,
+ { "Slot0 Data TimeStamp", "hart_ip.pt.rsp.slot0_data_timestamp",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+
+ /* command 13 */
+ { &hf_hartip_pt_rsp_packed_descriptor,
+ { "Descriptor", "hart_ip.pt.rsp.descriptor",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_day,
+ { "Day", "hart_ip.pt.rsp.day",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_month,
+ { "Month", "hart_ip.pt.rsp.month",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_year,
+ { "Year", "hart_ip.pt.rsp.year",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+
+ /* Tag */
+ { &hf_hartip_pt_rsp_tag,
+ { "Tag", "hart_ip.pt.rsp.tag",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+
+ /* Message */
+ { &hf_hartip_pt_rsp_message,
+ { "Message", "hart_ip.pt.rsp.message",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+
+ /* command 48 */
+ { &hf_hartip_pt_rsp_device_sp_status,
+ { "Device-Specific Status", "hart_ip.pt.rsp.device_sp_status",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_device_op_mode,
+ { "Device Operating Mode", "hart_ip.pt.rsp.device_op_mode",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_standardized_status_0,
+ { "Standardized Status 0", "hart_ip.pt.rsp.standardized_status_0",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_standardized_status_1,
+ { "Standardized Status 1", "hart_ip.pt.rsp.standardized_status_1",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_analog_channel_saturated,
+ { "Analog Channel Saturated", "hart_ip.pt.rsp.analog_channel_saturated",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_standardized_status_2,
+ { "Standardized Status 2", "hart_ip.pt.rsp.standardized_status_2",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_standardized_status_3,
+ { "Standardized Status 3", "hart_ip.pt.rsp.standardized_status_3",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hartip_pt_rsp_analog_channel_fixed,
+ { "Analog Channel Fixed", "hart_ip.pt.rsp.analog_channel_fixed",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }}
+ };
+
+ static gint *ett[] = {
+ &ett_hartip,
+ &ett_hartip_hdr,
+ &ett_hartip_body
+ };
+
+ proto_hartip = proto_register_protocol("HART_IP", "HART_IP", "hart_ip");
+ proto_register_field_array(proto_hartip, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ hartip_tap = register_tap("hart_ip");
+}
+
+void
+proto_reg_handoff_hartip(void)
+{
+ hartip_handle = create_dissector_handle(dissect_hartip, proto_hartip);
+ dissector_add_uint("udp.port", HARTIP_PORT, hartip_handle);
+ dissector_add_uint("tcp.port", HARTIP_PORT, hartip_handle);
+
+ stats_tree_register("hart_ip", "hart_ip", "HART-IP", 0,
+ hartip_stats_tree_packet, hartip_stats_tree_init, NULL );
+}
diff --git a/epan/dissectors/packet-hdcp.c b/epan/dissectors/packet-hdcp.c
index ee161c7761..a54416983b 100644
--- a/epan/dissectors/packet-hdcp.c
+++ b/epan/dissectors/packet-hdcp.c
@@ -36,6 +36,7 @@
#include <epan/prefs.h>
#include <epan/ptvcursor.h>
#include <epan/expert.h>
+#include "packet-hdcp.h"
static int proto_hdcp = -1;
@@ -238,7 +239,8 @@ dissect_hdcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (PINFO_FD_VISITED(pinfo)) {
/* we've already dissected the receiver's response */
- hdcp_trans = se_tree_lookup32(transactions, PINFO_FD_NUM(pinfo));
+ hdcp_trans = (hdcp_transaction_t *)se_tree_lookup32(
+ transactions, PINFO_FD_NUM(pinfo));
if (hdcp_trans && hdcp_trans->rqst_frame==PINFO_FD_NUM(pinfo) &&
hdcp_trans->resp_frame!=0) {
@@ -255,7 +257,8 @@ dissect_hdcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
else {
/* we've not yet dissected the response */
if (transactions) {
- hdcp_trans = se_alloc(sizeof(hdcp_transaction_t));
+ hdcp_trans = (hdcp_transaction_t *)se_alloc(
+ sizeof(hdcp_transaction_t));
hdcp_trans->rqst_frame = PINFO_FD_NUM(pinfo);
hdcp_trans->resp_frame = 0;
hdcp_trans->rqst_type = reg;
@@ -291,7 +294,8 @@ dissect_hdcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
SET_ADDRESS(&pinfo->dst, AT_STRINGZ, (int)strlen(ADDR8_TRX)+1, ADDR8_TRX);
if (transactions) {
- hdcp_trans = se_tree_lookup32_le(transactions, PINFO_FD_NUM(pinfo));
+ hdcp_trans = (hdcp_transaction_t *)se_tree_lookup32_le(
+ transactions, PINFO_FD_NUM(pinfo));
if (hdcp_trans) {
if (hdcp_trans->resp_frame==0) {
/* there's a pending request, this packet is the response */
@@ -588,7 +592,7 @@ proto_register_hdcp(void)
for(i=0; i<array_length(msg_info); i++) {
g_hash_table_insert(msg_table,
GUINT_TO_POINTER((guint)msg_info[i].id),
- (gpointer)(&msg_info[i]));
+ (const gpointer)(&msg_info[i]));
}
proto_hdcp = proto_register_protocol(
diff --git a/epan/dissectors/packet-hdfs.c b/epan/dissectors/packet-hdfs.c
index 39a9635102..3a7de7aade 100644
--- a/epan/dissectors/packet-hdfs.c
+++ b/epan/dissectors/packet-hdfs.c
@@ -232,7 +232,7 @@ dissect_data (tvbuff_t *tvb, proto_tree *hdfs_tree, guint offset) {
response to a get protocol version message
contains a type length, type name and the value
*/
-static void
+static int
dissect_resp_long (tvbuff_t *tvb, proto_tree *hdfs_tree, int offset) {
/* get length that we just dissected */
int length = tvb_get_ntohs(tvb, offset);
@@ -247,13 +247,15 @@ dissect_resp_long (tvbuff_t *tvb, proto_tree *hdfs_tree, int offset) {
/* the value */
proto_tree_add_item(hdfs_tree, hf_hdfs_prover, tvb, offset, 8, ENC_BIG_ENDIAN);
- offset += 8;
+ offset += 8;
+
+ return offset;
}
/*
Response to a file status message
*/
-static void
+static int
dissect_resp_filestatus (tvbuff_t *tvb, proto_tree *hdfs_tree, int offset) {
int length;
@@ -324,6 +326,8 @@ dissect_resp_filestatus (tvbuff_t *tvb, proto_tree *hdfs_tree, int offset) {
/* group name */
proto_tree_add_item(hdfs_tree, hf_hdfs_groupname, tvb, offset, length, ENC_ASCII|ENC_NA);
offset += length;
+
+ return offset;
}
@@ -598,7 +602,7 @@ dissect_hdfs_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* the value of the parameter */
proto_tree_add_item(hdfs_tree, hf_hdfs_paramval, tvb, offset, length, ENC_ASCII|ENC_NA);
- offset += length;
+ /*offset += length;*/
}
}
@@ -618,7 +622,7 @@ dissect_hdfs_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset += 1;
proto_tree_add_item(hdfs_tree, hf_hdfs_flags, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset += 1;
+ /*offset += 1;*/
} else {
/* second authentication packet */
diff --git a/epan/dissectors/packet-hip.c b/epan/dissectors/packet-hip.c
index 35b26ab8d8..fc9ed8e4bd 100644
--- a/epan/dissectors/packet-hip.c
+++ b/epan/dissectors/packet-hip.c
@@ -104,7 +104,9 @@ typedef enum {
#define PARAM_RELAY_FROM 63998
#define PARAM_RELAY_TO 64002
#define PARAM_RELAY_HMAC 65520
-
+/* HIPv2 draft-ietf-hip-rfc5201-bis-08 see section 5.2 */
+#define PARAM_HIP_CIPHER 579
+#define PARAM_HIT_SUITE_LIST 715
/* Bit masks */
#define PARAM_CRITICAL_BIT 0x0001
/* See RFC 5201 section 5.1 */
@@ -165,6 +167,8 @@ static const value_string hip_param_vals[] = {
{ PARAM_REG_REQUEST, "REG_REQUEST" },
{ PARAM_REG_RESPONSE, "REG_RESPONSE" },
{ PARAM_REG_FROM, "REG_FROM" },
+ { PARAM_HIP_CIPHER, "HIP_CIPHER"},
+ { PARAM_HIT_SUITE_LIST, "HIT_SUITE_LIST"},
{ 0, NULL }
};
@@ -272,6 +276,24 @@ static const value_string nat_traversal_mode_vals[] = {
{ 0, NULL }
};
+/* HIPv2 draft-ietf-hip-rfc5201-bis-08 Section 5.2 */
+static const value_string cipher_vals[] = {
+ { 0x0, "Reserved" },
+ { 0x01, "NULL-ENCRYPT" },
+ { 0x02, "AES-128-CBC" },
+ { 0x03, "3DES-CBC" },
+ { 0x04, "AES-256-CBC" },
+ { 0, NULL }
+};
+
+static const value_string hit_suite_vals[] = {
+ { 0x00, "Reserved" },
+ { 0x01, "RSA,DSA/SHA-256" },
+ { 0x02, "ECDSA/SHA384" },
+ { 0x03, "ECDSA_LOW/SHA-1" },
+ { 0, NULL }
+};
+
/* functions */
static int dissect_hip_tlv(tvbuff_t *tvb, int offset, proto_item *ti, int type, int tlv_len);
@@ -311,6 +333,8 @@ static int hf_hip_tlv_dh_pub = -1;
static int hf_hip_tlv_dh_pv_length = -1;
static int hf_hip_tlv_trans_id = -1;
static int hf_hip_tlv_esp_reserved = -1;
+static int hf_hip_tlv_cipher_id = -1;
+static int hf_hip_tlv_hit_suite_id = -1;
static int hf_hip_tlv_host_id_len = -1;
static int hf_hip_tlv_host_di_type = -1;
static int hf_hip_tlv_host_di_len = -1;
@@ -724,7 +748,7 @@ dissect_hip_tlv(tvbuff_t *tvb, int offset, proto_item *ti, int type, int tlv_len
proto_tree_add_item(t, hf_hip_tlv_puzzle_o, tvb, newoffset, 2, ENC_BIG_ENDIAN);
/* Puzzle I */
newoffset += 2;
- proto_tree_add_item(t, hf_hip_tlv_puzzle_i, tvb,newoffset, 8, ENC_NA);
+ proto_tree_add_item(t, hf_hip_tlv_puzzle_i, tvb,newoffset, tlv_len - 4, ENC_NA);
break;
case PARAM_SOLUTION:
t = proto_item_add_subtree(ti, ett_hip_tlv_data);
@@ -738,10 +762,10 @@ dissect_hip_tlv(tvbuff_t *tvb, int offset, proto_item *ti, int type, int tlv_len
proto_tree_add_item(t, hf_hip_tlv_solution_o, tvb,newoffset, 2, ENC_BIG_ENDIAN);
/* Solution I */
newoffset += 2;
- proto_tree_add_item(t, hf_hip_tlv_solution_i, tvb, newoffset, 8, ENC_NA);
+ proto_tree_add_item(t, hf_hip_tlv_solution_i, tvb, newoffset, (tlv_len - 4)/2, ENC_NA);
/* Solution J */
- newoffset += 8;
- proto_tree_add_item(t, hf_hip_tlv_solution_j, tvb, newoffset, 8, ENC_NA);
+ newoffset += (tlv_len - 4) /2;
+ proto_tree_add_item(t, hf_hip_tlv_solution_j, tvb, newoffset, (tlv_len -4)/2, ENC_NA);
break;
case PARAM_SEQ:
t = proto_item_add_subtree(ti, ett_hip_tlv_data);
@@ -858,6 +882,28 @@ dissect_hip_tlv(tvbuff_t *tvb, int offset, proto_item *ti, int type, int tlv_len
proto_tree_add_text(t, tvb, newoffset, tlv_len - 4,
"Encrypted Parameter Data (%u bytes)", tlv_len - 4);
break;
+ case PARAM_HIP_CIPHER:
+ t = proto_item_add_subtree(ti, ett_hip_tlv_data);
+ while (tlv_len > 0) {
+ /* Suite # 1, 2, ..., n
+ two bytes per Cipher Suite id */
+ proto_tree_add_item(t, hf_hip_tlv_cipher_id, tvb, newoffset, 2, ENC_BIG_ENDIAN);
+ tlv_len -= 2;
+ newoffset += 2;
+ }
+ break;
+ case PARAM_HIT_SUITE_LIST:
+ t = proto_item_add_subtree(ti, ett_hip_tlv_data);
+ while (tlv_len > 0) {
+ /* Suite # 1, 2, ..., n
+ one byte per HIT Suite id.
+ According to specification, HIT_SUITE_LIST is defined as eight-bit field,
+ current four-bit HIT Suite-IDs only use the four higher order bits in the ID Field.*/
+ proto_tree_add_item(t, hf_hip_tlv_hit_suite_id, tvb, newoffset, 1, ENC_BIG_ENDIAN);
+ tlv_len -= 1;
+ newoffset += 1;
+ }
+ break;
case PARAM_HOST_ID:
t = proto_item_add_subtree(ti, ett_hip_tlv_data);
hi_len = tvb_get_ntohs(tvb, newoffset);
@@ -1041,7 +1087,7 @@ dissect_hip_tlv(tvbuff_t *tvb, int offset, proto_item *ti, int type, int tlv_len
} else if (type == PARAM_REG_FAILED) {
/* Failure Type */
proto_tree_add_item(t, hf_hip_tlv_reg_failtype, tvb, newoffset, 1, ENC_BIG_ENDIAN);
- newoffset++;;
+ newoffset++;
tlv_len--;
} else {
/* Lifetime */
@@ -1108,7 +1154,7 @@ dissect_hip_tlv(tvbuff_t *tvb, int offset, proto_item *ti, int type, int tlv_len
proto_tree_add_item(t, hf_hip_tlv_relay_from_reserved, tvb, newoffset, 1, ENC_BIG_ENDIAN);
newoffset += 1;
/* Address */
- proto_tree_add_item(t, hf_hip_tlv_relay_to_address, tvb, newoffset, 16, ENC_NA);
+ proto_tree_add_item(t, hf_hip_tlv_relay_from_address, tvb, newoffset, 16, ENC_NA);
break;
case PARAM_RELAY_TO:
t = proto_item_add_subtree(ti, ett_hip_tlv_data);
@@ -1284,6 +1330,14 @@ proto_register_hip(void)
{ "Reserved", "hip.tlv.esp_trans_res",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_hip_tlv_cipher_id,
+ { "Cipher ID", "hip.tlv.cipher_id",
+ FT_UINT16, BASE_DEC, VALS(cipher_vals), 0x0, NULL, HFILL }},
+
+ { &hf_hip_tlv_hit_suite_id,
+ { "HIT Suite ID", "hip.tlv.hit_suite_id",
+ FT_UINT8, BASE_DEC, VALS(hit_suite_vals), 0xF0, NULL, HFILL }},
+
{ &hf_hip_tlv_host_id_len,
{ "Host Identity Length", "hip.tlv.host_id_length",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
@@ -1557,3 +1611,15 @@ proto_reg_handoff_hip(void)
hip_handle2 = create_dissector_handle(dissect_hip_in_udp, proto_hip);
dissector_add_uint("udp.port", 10500, hip_handle2);
}
+/*
+ * Editor modelines - http://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 8
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vi: set shiftwidth=8 tabstop=8 expandtab:
+ * :indentSize=8:tabSize=8:noTabs=true:
+ */
diff --git a/epan/dissectors/packet-homeplug-av.c b/epan/dissectors/packet-homeplug-av.c
index bb0c25ae95..b65d02464d 100644
--- a/epan/dissectors/packet-homeplug-av.c
+++ b/epan/dissectors/packet-homeplug-av.c
@@ -3312,7 +3312,7 @@ proto_register_homeplug_av(void)
FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_st_mac_req_img_load,
- { "Image Load Starting Addres", "homeplug_av.st_mac_req.img_load",
+ { "Image Load Starting Address", "homeplug_av.st_mac_req.img_load",
FT_UINT32, BASE_HEX, NULL, 0x00, "Unknown", HFILL }
},
{ &hf_homeplug_av_st_mac_req_img_len,
@@ -3368,7 +3368,7 @@ proto_register_homeplug_av(void)
},
{ &hf_homeplug_av_rs_dev_cnf_status,
{ "Status", "homeplug_av.rs_dev_cnf.status",
- FT_UINT8, BASE_NONE, VALS(homeplug_av_rs_dev_status_vals), 0x00, "Unknown", HFILL }
+ FT_UINT8, BASE_HEX, VALS(homeplug_av_rs_dev_status_vals), 0x00, "Unknown", HFILL }
},
/* Shared memory related fields */
{ &hf_homeplug_av_mem_len_16bits,
diff --git a/epan/dissectors/packet-hpteam.c b/epan/dissectors/packet-hpteam.c
index e03bc51dc7..100b0d26b6 100644
--- a/epan/dissectors/packet-hpteam.c
+++ b/epan/dissectors/packet-hpteam.c
@@ -29,9 +29,9 @@
#endif
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/oui.h>
-#include <string.h>
#include <packet-llc.h>
@@ -92,18 +92,17 @@ static gint ett_hpteam = -1;
static void
dissect_hpteam(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *hpteam_item;
- proto_tree *hpteam_tree;
- guint32 offset = 0;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "HP NIC Team");
col_add_fstr(pinfo->cinfo, COL_INFO, "HP NIC Teaming Heartbeat; Port MAC = %s",
ep_address_to_str(&pinfo->dl_src));
if (tree) { /* we are being asked for details */
+ proto_item *hpteam_item;
+ proto_tree *hpteam_tree;
hpteam_item = proto_tree_add_item(tree, proto_hpteam, tvb, 0, -1, ENC_NA);
hpteam_tree = proto_item_add_subtree(hpteam_item, ett_hpteam);
- proto_tree_add_item(hpteam_tree, hf_hpteam, tvb, offset, -1, ENC_NA);
+ proto_tree_add_item(hpteam_tree, hf_hpteam, tvb, 0, -1, ENC_NA);
}
}
@@ -111,14 +110,17 @@ void proto_register_hpteam(void)
{
static hf_register_info hf_pid = {
&hf_llc_hpteam_pid,
- { "PID", "llc.hpteam_pid", FT_UINT16, BASE_HEX,
- VALS(hpteam_pid_vals), 0x0, NULL, HFILL }
+ { "PID", "llc.hpteam_pid",
+ FT_UINT16, BASE_HEX, VALS(hpteam_pid_vals),
+ 0x0, NULL, HFILL }
};
static hf_register_info hf_data[] = {
{&hf_hpteam,
- { "Proprietary Data", "hpteam.data", FT_BYTES, BASE_NONE,
- NULL, 0x0, NULL, HFILL }}
+ { "Proprietary Data", "hpteam.data",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ }
};
static gint *ett[] = {
diff --git a/epan/dissectors/packet-http.c b/epan/dissectors/packet-http.c
index cea297868f..ecad05f84e 100644
--- a/epan/dissectors/packet-http.c
+++ b/epan/dissectors/packet-http.c
@@ -90,6 +90,7 @@ static int hf_http_content_length_header = -1;
static int hf_http_content_length = -1;
static int hf_http_content_encoding = -1;
static int hf_http_transfer_encoding = -1;
+static int hf_http_upgrade = -1;
static int hf_http_user_agent = -1;
static int hf_http_host = -1;
static int hf_http_connection = -1;
@@ -102,6 +103,11 @@ static int hf_http_date = -1;
static int hf_http_cache_control = -1;
static int hf_http_server = -1;
static int hf_http_location = -1;
+static int hf_http_sec_websocket_accept = -1;
+static int hf_http_sec_websocket_extensions = -1;
+static int hf_http_sec_websocket_key = -1;
+static int hf_http_sec_websocket_protocol = -1;
+static int hf_http_sec_websocket_version = -1;
static int hf_http_set_cookie = -1;
static int hf_http_last_modified = -1;
static int hf_http_x_forwarded_for = -1;
@@ -117,6 +123,7 @@ static gint ett_http_header_item = -1;
static dissector_handle_t data_handle;
static dissector_handle_t media_handle;
+static dissector_handle_t websocket_handle;
static dissector_handle_t http_handle;
/* Stuff for generation/handling of fields for custom HTTP headers */
@@ -131,20 +138,32 @@ static guint num_header_fields = 0;
static GHashTable* header_fields_hash = NULL;
static void
-header_fields_update_cb(void* r, const char** err)
+header_fields_update_cb(void *r, const char **err)
{
- header_field_t* rec = r;
+ header_field_t *rec = r;
+ char c;
if (rec->header_name == NULL) {
*err = ep_strdup_printf("Header name can't be empty");
- } else {
- g_strstrip(rec->header_name);
- if (rec->header_name[0] != 0) {
- *err = NULL;
- } else {
- *err = ep_strdup_printf("Header name can't be empty");
- }
+ return;
+ }
+
+ g_strstrip(rec->header_name);
+ if (rec->header_name[0] == 0) {
+ *err = ep_strdup_printf("Header name can't be empty");
+ return;
}
+
+ /* Check for invalid characters (to avoid asserting out when
+ * registering the field).
+ */
+ c = proto_check_field_name(rec->header_name);
+ if (c) {
+ *err = ep_strdup_printf("Header name can't contain '%c'", c);
+ return;
+ }
+
+ *err = NULL;
}
static void *
@@ -272,10 +291,12 @@ static heur_dissector_list_t heur_subdissector_list;
static dissector_handle_t ntlmssp_handle;
static dissector_handle_t gssapi_handle;
+/* --- HTTP Status Codes */
+/* Note: The reference for uncommented entries is RFC 2616 */
static const value_string vals_status_code[] = {
{ 100, "Continue" },
{ 101, "Switching Protocols" },
- { 102, "Processing" },
+ { 102, "Processing" }, /* RFC 2518 */
{ 199, "Informational - Others" },
{ 200, "OK"},
@@ -285,7 +306,8 @@ static const value_string vals_status_code[] = {
{ 204, "No Content"},
{ 205, "Reset Content"},
{ 206, "Partial Content"},
- { 207, "Multi-Status"},
+ { 207, "Multi-Status"}, /* RFC 4918 */
+ { 226, "IM Used"}, /* RFC 3229 */
{ 299, "Success - Others"},
{ 300, "Multiple Choices"},
@@ -315,10 +337,14 @@ static const value_string vals_status_code[] = {
{ 415, "Unsupported Media Type"},
{ 416, "Requested Range Not Satisfiable"},
{ 417, "Expectation Failed"},
- { 418, "I'm a teapot"}, /* RFC 2324 */
- { 422, "Unprocessable Entity"},
- { 423, "Locked"},
- { 424, "Failed Dependency"},
+ { 418, "I'm a teapot"}, /* RFC 2324 */
+ { 422, "Unprocessable Entity"}, /* RFC 4918 */
+ { 423, "Locked"}, /* RFC 4918 */
+ { 424, "Failed Dependency"}, /* RFC 4918 */
+ { 426, "Upgrade Required"}, /* RFC 2817 */
+ { 428, "Precondition Required"}, /* RFC 6585 */
+ { 429, "Too Many Requests"}, /* RFC 6585 */
+ { 431, "Request Header Fields Too Large"}, /* RFC 6585 */
{ 499, "Client Error - Others"},
{ 500, "Internal Server Error"},
@@ -327,7 +353,8 @@ static const value_string vals_status_code[] = {
{ 503, "Service Unavailable"},
{ 504, "Gateway Time-out"},
{ 505, "HTTP Version not supported"},
- { 507, "Insufficient Storage"},
+ { 507, "Insufficient Storage"}, /* RFC 4918 */
+ { 511, "Network Authentication Required"}, /* RFC 6585 */
{ 599, "Server Error - Others"},
{ 0, NULL}
@@ -947,6 +974,10 @@ dissect_http_message(tvbuff_t *tvb, int offset, packet_info *pinfo,
* processed as HTTP payload is the minimum of the content
* length and the amount of data remaining in the frame.
*
+ * If a message is received with both a Transfer-Encoding
+ * header field and a Content-Length header field, the latter
+ * MUST be ignored.
+ *
* If no content length was supplied (or if a bad content length
* was supplied), the amount of data to be processed is the amount
* of data remaining in the frame.
@@ -970,7 +1001,9 @@ dissect_http_message(tvbuff_t *tvb, int offset, packet_info *pinfo,
* the response in order to handle that.
*/
datalen = tvb_length_remaining(tvb, offset);
- if (headers.have_content_length && headers.content_length != -1) {
+ if (headers.have_content_length &&
+ headers.content_length != -1 &&
+ headers.transfer_encoding == NULL) {
if (datalen > headers.content_length)
datalen = (int)headers.content_length;
@@ -1058,6 +1091,14 @@ dissect_http_message(tvbuff_t *tvb, int offset, packet_info *pinfo,
reported_datalen);
/*
+ * Check if Websocket
+ */
+ if (conv_data->upgrade != NULL &&
+ g_ascii_strcasecmp(conv_data->upgrade, "WebSocket") == 0) {
+ call_dissector_only(websocket_handle, next_tvb, pinfo, tree);
+ goto body_dissected;
+ }
+ /*
* Handle *transfer* encodings other than "identity".
*/
if (headers.transfer_encoding != NULL &&
@@ -2011,7 +2052,8 @@ typedef struct {
#define HDR_CONTENT_LENGTH 4
#define HDR_CONTENT_ENCODING 5
#define HDR_TRANSFER_ENCODING 6
-#define HDR_HOST 7
+#define HDR_HOST 7
+#define HDR_UPGRADE 8
static const header_info headers[] = {
{ "Authorization", &hf_http_authorization, HDR_AUTHORIZATION },
@@ -2022,6 +2064,7 @@ static const header_info headers[] = {
{ "Content-Length", &hf_http_content_length_header, HDR_CONTENT_LENGTH },
{ "Content-Encoding", &hf_http_content_encoding, HDR_CONTENT_ENCODING },
{ "Transfer-Encoding", &hf_http_transfer_encoding, HDR_TRANSFER_ENCODING },
+ { "Upgrade", &hf_http_upgrade, HDR_UPGRADE },
{ "User-Agent", &hf_http_user_agent, HDR_NO_SPECIAL },
{ "Host", &hf_http_host, HDR_HOST },
{ "Connection", &hf_http_connection, HDR_NO_SPECIAL },
@@ -2034,6 +2077,11 @@ static const header_info headers[] = {
{ "Cache-Control", &hf_http_cache_control, HDR_NO_SPECIAL },
{ "Server", &hf_http_server, HDR_NO_SPECIAL },
{ "Location", &hf_http_location, HDR_NO_SPECIAL },
+ { "Sec-WebSocket-Accept", &hf_http_sec_websocket_accept, HDR_NO_SPECIAL },
+ { "Sec-WebSocket-Extensions", &hf_http_sec_websocket_extensions, HDR_NO_SPECIAL },
+ { "Sec-WebSocket-Key", &hf_http_sec_websocket_key, HDR_NO_SPECIAL },
+ { "Sec-WebSocket-Protocol", &hf_http_sec_websocket_protocol, HDR_NO_SPECIAL },
+ { "Sec-WebSocket-Version", &hf_http_sec_websocket_version, HDR_NO_SPECIAL },
{ "Set-Cookie", &hf_http_set_cookie, HDR_NO_SPECIAL },
{ "Last-Modified", &hf_http_last_modified, HDR_NO_SPECIAL },
{ "X-Forwarded-For", &hf_http_x_forwarded_for, HDR_NO_SPECIAL },
@@ -2067,7 +2115,7 @@ header_fields_initialize_cb(void)
guint i;
gchar* header_name;
- if (header_fields_hash) {
+ if (header_fields_hash && hf) {
guint hf_size = g_hash_table_size (header_fields_hash);
/* Unregister all fields */
for (i = 0; i < hf_size; i++) {
@@ -2299,6 +2347,9 @@ process_header(tvbuff_t *tvb, int offset, int next_offset,
conv_data->http_host = se_strndup(value, value_len);
break;
+ case HDR_UPGRADE:
+ conv_data->upgrade = se_strndup(value, value_len);
+ break;
}
}
}
@@ -2368,7 +2419,6 @@ check_auth_basic(proto_item *hdr_item, tvbuff_t *tvb, gchar *value)
const char **header;
size_t hdrlen;
proto_tree *hdr_tree;
- size_t len;
for (header = &basic_headers[0]; *header != NULL; header++) {
hdrlen = strlen(*header);
@@ -2380,8 +2430,7 @@ check_auth_basic(proto_item *hdr_item, tvbuff_t *tvb, gchar *value)
hdr_tree = NULL;
value += hdrlen;
- len = epan_base64_decode(value);
- value[len] = '\0';
+ epan_base64_decode(value);
proto_tree_add_string(hdr_tree, hf_http_basic, tvb,
0, 0, value);
@@ -2575,6 +2624,10 @@ proto_register_http(void)
{ "Transfer-Encoding", "http.transfer_encoding",
FT_STRING, BASE_NONE, NULL, 0x0,
"HTTP Transfer-Encoding header", HFILL }},
+ { &hf_http_upgrade,
+ { "Upgrade", "http.upgrade",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "HTTP Upgrade header", HFILL }},
{ &hf_http_user_agent,
{ "User-Agent", "http.user_agent",
FT_STRING, BASE_NONE, NULL, 0x0,
@@ -2623,6 +2676,26 @@ proto_register_http(void)
{ "Location", "http.location",
FT_STRING, BASE_NONE, NULL, 0x0,
"HTTP Location", HFILL }},
+ { &hf_http_sec_websocket_accept,
+ { "Sec-WebSocket-Accept", "http.sec_websocket_accept",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_http_sec_websocket_extensions,
+ { "Sec-WebSocket-Extensions", "http.sec_websocket_extensions",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_http_sec_websocket_key,
+ { "Sec-WebSocket-Key", "http.sec_websocket_key",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_http_sec_websocket_protocol,
+ { "Sec-WebSocket-Protocol", "http.sec_websocket_protocol",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_http_sec_websocket_version,
+ { "Sec-WebSocket-Version", "http.sec_websocket_version",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_http_set_cookie,
{ "Set-Cookie", "http.set_cookie",
FT_STRING, BASE_NONE, NULL, 0x0,
@@ -2710,7 +2783,7 @@ proto_register_http(void)
TRUE,
(void*) &header_fields,
&num_header_fields,
- UAT_CAT_GENERAL,
+ UAT_CAT_FIELDS,
NULL,
header_fields_copy_cb,
header_fields_update_cb,
@@ -2785,7 +2858,7 @@ proto_reg_handoff_http(void)
data_handle = find_dissector("data");
media_handle = find_dissector("media");
-
+ websocket_handle = find_dissector("websocket");
/*
* XXX - is there anything to dissect in the body of an SSDP
* request or reply? I.e., should there be an SSDP dissector?
diff --git a/epan/dissectors/packet-http.h b/epan/dissectors/packet-http.h
index 1ff19501a9..ee45c77adc 100644
--- a/epan/dissectors/packet-http.h
+++ b/epan/dissectors/packet-http.h
@@ -31,7 +31,7 @@ void http_dissector_add(guint32 port, dissector_handle_t handle);
/* Used for HTTP statistics */
typedef struct _http_info_value_t {
guint32 framenum;
- gchar *request_method;
+ gchar *request_method;
guint response_code;
gchar *http_host;
gchar *request_uri;
@@ -53,6 +53,7 @@ typedef struct _http_conv_t {
gchar *http_host;
gchar *request_method;
gchar *request_uri;
+ gchar *upgrade;
guint32 startframe; /* First frame of proxied connection */
} http_conv_t;
diff --git a/epan/dissectors/packet-iax2.c b/epan/dissectors/packet-iax2.c
index 12e89c1983..fc8697621a 100644
--- a/epan/dissectors/packet-iax2.c
+++ b/epan/dissectors/packet-iax2.c
@@ -6,11 +6,8 @@
* Copyright 2003 Alastair Maw
*
* IAX2 is a VoIP protocol for the open source PBX Asterisk. Please see
- * http://www.asterisk.org for more information; see
- *
- * http://www.ietf.org/internet-drafts/draft-guy-iax-04.txt
- *
- * for the current Internet-Draft for IAX2.
+ * http://www.asterisk.org for more information; see RFC 5456 for the
+ * protocol.
*
* $Id$
*
@@ -1248,7 +1245,8 @@ static guint32 dissect_ies (tvbuff_t * tvb, guint32 offset,
/* hf_iax2_ies[] is an array, indexed by IE number, of header-fields, one
per IE. Apart from a couple of special cases which require more
complex decoding, we can just look up an entry from the array, and add
- the relevant item.
+ the relevant item, although the encoding value used depends on the
+ type of the item.
*/
switch (ies_type) {
@@ -1265,7 +1263,7 @@ static guint32 dissect_ies (tvbuff_t * tvb, guint32 offset,
ie_item =
proto_tree_add_item (ies_tree, ie_hf,
- tvb, offset + 2, ies_len, FALSE);
+ tvb, offset + 2, ies_len, ENC_BIG_ENDIAN);
codec_tree =
proto_item_add_subtree (ie_item, ett_iax2_codecs);
@@ -1330,10 +1328,40 @@ static guint32 dissect_ies (tvbuff_t * tvb, guint32 offset,
default:
if( ie_hf != -1 ) {
/* throw an error if the IE isn't the expected length */
- gint explen = ftype_length(proto_registrar_get_nth(ie_hf)->type);
+ enum ftenum type = proto_registrar_get_nth(ie_hf)->type;
+ gint explen = ftype_length(type);
if(explen != 0 && ies_len != explen)
THROW(ReportedBoundsError);
- ie_item = proto_tree_add_item(ies_tree, ie_hf, tvb, offset + 2, ies_len, FALSE);
+ switch (type) {
+ case FT_UINT8:
+ case FT_UINT16:
+ case FT_UINT24:
+ case FT_UINT32:
+ case FT_UINT64:
+ case FT_INT8:
+ case FT_INT16:
+ case FT_INT24:
+ case FT_INT32:
+ case FT_INT64:
+ case FT_BOOLEAN:
+ case FT_IPv4:
+ ie_item = proto_tree_add_item(ies_tree, ie_hf, tvb, offset + 2, ies_len, ENC_BIG_ENDIAN);
+ break;
+
+ case FT_BYTES:
+ case FT_NONE:
+ ie_item = proto_tree_add_item(ies_tree, ie_hf, tvb, offset + 2, ies_len, ENC_NA);
+ break;
+
+ case FT_STRING:
+ case FT_STRINGZ:
+ ie_item = proto_tree_add_item(ies_tree, ie_hf, tvb, offset + 2, ies_len, ENC_UTF_8|ENC_NA);
+ break;
+
+ default:
+ DISSECTOR_ASSERT_NOT_REACHED();
+ break;
+ }
} else {
/* we don't understand this ie: add a generic one */
guint32 value;
diff --git a/epan/dissectors/packet-icep.c b/epan/dissectors/packet-icep.c
index 8a8b484190..9ff07be25f 100644
--- a/epan/dissectors/packet-icep.c
+++ b/epan/dissectors/packet-icep.c
@@ -28,11 +28,7 @@
TODO:
1) Dissect encoded data (do sth like idl2wrs for CORBA).
2) Add conversations.
- 3) Register a dissector as one that can be selected by a UDP/TCP port number.
- 4) Put in Preferences/Protocols/ICEP Option menu:
- - ICEP_MAX_ICE_STRING_LEN
- - ICEP_MAX_BATCH_REQUESTS
- - ICEP_MAX_ICE_CONTEXT_PAIRS
+
*/
/*
@@ -49,7 +45,8 @@
#include <glib.h>
#include <epan/packet.h>
-#include <epan/emem.h>
+#include <epan/expert.h>
+#include <epan/prefs.h>
#include "packet-tcp.h"
#if 0
@@ -75,12 +72,6 @@ static const guint8 icep_magic[] = { 'I', 'c', 'e', 'P' };
#define ICEP_MIN_PARAMS_SIZE 6
#define ICEP_MIN_COMMON_REQ_HEADER_SIZE 13
-/* values derived from common sense */
-#define ICEP_MAX_BATCH_REQUESTS 64
-#define ICEP_MAX_ICE_STRING_LEN 512
-#define ICEP_MAX_ICE_CONTEXT_PAIRS 64
-
-
/* Initialize the protocol and registered fields */
static int proto_icep = -1;
@@ -104,6 +95,10 @@ static int hf_icep_context = -1;
static int hf_icep_params_size = -1;
static int hf_icep_params_major = -1;
static int hf_icep_params_minor = -1;
+static int hf_icep_params_encapsulated = -1;
+static int hf_icep_reply_data = -1;
+static int hf_icep_invocation_key = -1;
+static int hf_icep_invocation_value = -1;
/* Reply Message Body */
static int hf_icep_reply_status = -1;
@@ -112,6 +107,14 @@ static int hf_icep_reply_status = -1;
static gint ett_icep = -1;
static gint ett_icep_msg = -1;
+/* Preferences */
+static guint icep_max_batch_requests = 64;
+static guint icep_max_ice_string_len = 512;
+static guint icep_max_ice_context_pairs = 64;
+static guint icep_tcp_port = 0;
+static guint icep_udp_port = 0;
+
+
static const value_string icep_msgtype_vals[] = {
{0x0, "Request"},
{0x1, "Batch request"},
@@ -157,9 +160,8 @@ static packet_info *mypinfo;
*
* "*dest" is a null terminated version of the dissected Ice string.
*/
-static void dissect_ice_string(proto_tree *tree, int hf_icep,
- tvbuff_t *tvb, guint32 offset, gint32 *consumed,
- char **dest, gboolean add_hf)
+static void dissect_ice_string(packet_info *pinfo, proto_tree *tree, proto_item *item, int hf_icep,
+ tvbuff_t *tvb, guint32 offset, gint32 *consumed, char **dest)
{
/* p. 586 chapter 23.2.1 and p. 588 chapter 23.2.5
* string == Size + content
@@ -176,12 +178,10 @@ static void dissect_ice_string(proto_tree *tree, int hf_icep,
/* check for first byte */
if ( !tvb_bytes_exist(tvb, offset, 1) ) {
- if (tree)
- proto_tree_add_text(tree, tvb, offset, -1,
- "1st byte of Size missing");
+ if (item)
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "1st byte of Size missing");
- col_append_str(mypinfo->cinfo, COL_INFO,
- " (1st byte of Size missing)");
+ col_append_str(mypinfo->cinfo, COL_INFO, " (1st byte of Size missing)");
(*consumed) = -1;
return;
@@ -197,12 +197,10 @@ static void dissect_ice_string(proto_tree *tree, int hf_icep,
/* check for next 4 bytes */
if ( !tvb_bytes_exist(tvb, offset, 4) ) {
- if (tree)
- proto_tree_add_text(tree, tvb, offset, -1,
- "second field of Size missing");
+ if (item)
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "second field of Size missing");
- col_append_str(mypinfo->cinfo, COL_INFO,
- " (second field of Size missing)");
+ col_append_str(mypinfo->cinfo, COL_INFO, " (second field of Size missing)");
(*consumed) = -1;
return;
@@ -219,39 +217,35 @@ static void dissect_ice_string(proto_tree *tree, int hf_icep,
/* check if the string exists */
if ( !tvb_bytes_exist(tvb, offset, Size) ) {
- if (tree)
- proto_tree_add_text(tree, tvb, offset, -1,
- "missing or truncated string");
+ if (item)
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "missing or truncated string");
- col_append_str(mypinfo->cinfo, COL_INFO,
- " (missing or truncated string)");
+ col_append_str(mypinfo->cinfo, COL_INFO, " (missing or truncated string)");
(*consumed) = -1;
return;
}
- if ( Size > ICEP_MAX_ICE_STRING_LEN ) {
+ if ( Size > icep_max_ice_string_len ) {
- if (tree)
- proto_tree_add_text(tree, tvb, offset, -1, "string too long");
+ if (item)
+ expert_add_info_format(pinfo, item, PI_PROTOCOL, PI_WARN, "string too long");
- col_append_str(mypinfo->cinfo, COL_INFO,
- " (string too long)");
+ col_append_str(mypinfo->cinfo, COL_INFO, " (string too long)");
(*consumed) = -1;
return;
}
-
if ( Size != 0 ) {
s = tvb_get_ephemeral_string(tvb, offset, Size);
- if (tree && add_hf)
+ if (tree)
proto_tree_add_string(tree, hf_icep, tvb, offset, Size, s);
} else {
s = g_strdup("(empty)");
/* display the 0x00 Size byte when click on a empty ice_string */
- if (tree && add_hf)
+ if (tree)
proto_tree_add_string(tree, hf_icep, tvb, offset - 1, 1, s);
}
@@ -267,7 +261,7 @@ static void dissect_ice_string(proto_tree *tree, int hf_icep,
* This function dissects an "Ice facet", adds hf(s) to "tree" and returns consumed
* bytes in "*consumed", if errors "*consumed" is -1.
*/
-static void dissect_ice_facet(proto_tree *tree, int hf_icep,
+static void dissect_ice_facet(packet_info *pinfo, proto_tree *tree, proto_item *item, int hf_icep,
tvbuff_t *tvb, guint32 offset, gint32 *consumed)
{
/* p. 588, chapter 23.2.6:
@@ -295,8 +289,8 @@ static void dissect_ice_facet(proto_tree *tree, int hf_icep,
/* check first byte */
if ( !tvb_bytes_exist(tvb, offset, 1) ) {
- if (tree)
- proto_tree_add_text(tree, tvb, offset, -1, "facet field missing");
+ if (item)
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "facet field missing");
col_append_str(mypinfo->cinfo, COL_INFO,
" (facet field missing)");
@@ -324,24 +318,23 @@ static void dissect_ice_facet(proto_tree *tree, int hf_icep,
gint32 consumed_facet = 0;
- dissect_ice_string(tree, hf_icep, tvb, offset, &consumed_facet, NULL, TRUE);
+ dissect_ice_string(pinfo, tree, item, hf_icep, tvb, offset, &consumed_facet, NULL);
if ( consumed_facet == -1 ) {
(*consumed) = -1;
return;
}
- offset += consumed_facet;
+ /*offset += consumed_facet;*/
(*consumed) += consumed_facet;
return;
}
/* if here => Size > 1 => not possible */
- if (tree)
+ if (item)
/* display the XX Size byte when click here */
- proto_tree_add_text(tree, tvb, offset - 1, 1,
- "facet can be max one element");
+ expert_add_info_format(pinfo, item, PI_PROTOCOL, PI_WARN, "facet can be max one element");
col_append_str(mypinfo->cinfo, COL_INFO,
" (facet can be max one element)");
@@ -354,8 +347,8 @@ static void dissect_ice_facet(proto_tree *tree, int hf_icep,
* This function dissects an "Ice context", adds hf(s) to "tree" and returns consumed
* bytes in "*consumed", if errors "*consumed" is -1.
*/
-static void dissect_ice_context(proto_tree *tree, tvbuff_t *tvb, guint32 offset,
- gint32 *consumed)
+static void dissect_ice_context(packet_info *pinfo, proto_tree *tree, proto_item *item,
+ tvbuff_t *tvb, guint32 offset, gint32 *consumed)
{
/* p. 588, chapter 23.2.7 and p. 613, 23.3.2:
* "context" is a dictionary<string, string>
@@ -376,8 +369,8 @@ static void dissect_ice_context(proto_tree *tree, tvbuff_t *tvb, guint32 offset,
/* check first byte */
if ( !tvb_bytes_exist(tvb, offset, 1) ) {
- if (tree)
- proto_tree_add_text(tree, tvb, offset, -1, "context missing");
+ if (item)
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "context missing");
col_append_str(mypinfo->cinfo, COL_INFO,
" (context missing)");
@@ -396,12 +389,10 @@ static void dissect_ice_context(proto_tree *tree, tvbuff_t *tvb, guint32 offset,
/* check for next 4 bytes */
if ( !tvb_bytes_exist(tvb, offset, 4) ) {
- if (tree)
- proto_tree_add_text(tree, tvb, offset, -1,
- "second field of Size missing");
+ if (item)
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "second field of Size missing");
- col_append_str(mypinfo->cinfo, COL_INFO,
- " (second field of Size missing)");
+ col_append_str(mypinfo->cinfo, COL_INFO, " (second field of Size missing)");
(*consumed) = -1;
return;
@@ -415,14 +406,13 @@ static void dissect_ice_context(proto_tree *tree, tvbuff_t *tvb, guint32 offset,
DBG1("context.Size --> %d\n", Size);
- if ( Size > ICEP_MAX_ICE_CONTEXT_PAIRS ) {
+ if ( Size > icep_max_ice_context_pairs ) {
- if (tree)
+ if (item)
/* display the XX Size byte when click here */
- proto_tree_add_text(tree, tvb, offset - 1, 1, "too long context");
+ expert_add_info_format(pinfo, item, PI_PROTOCOL, PI_WARN, "too long context");
- col_append_str(mypinfo->cinfo, COL_INFO,
- " (too long context)");
+ col_append_str(mypinfo->cinfo, COL_INFO, " (too long context)");
(*consumed) = -1;
return;
@@ -444,12 +434,12 @@ static void dissect_ice_context(proto_tree *tree, tvbuff_t *tvb, guint32 offset,
/* value */
gint32 consumed_value = 0;
char *str_value = NULL;
-
+ proto_item *ti = NULL;
DBG1("looping through context dictionary, loop #%d\n", i);
+ ti = proto_tree_add_text(tree, tvb, offset, -1, "Invocation Context");
- dissect_ice_string(tree, -1, tvb, offset, &consumed_key,
- &str_key, FALSE);
+ dissect_ice_string(pinfo, tree, ti, hf_icep_invocation_key, tvb, offset, &consumed_key, &str_key);
if ( consumed_key == -1 ) {
(*consumed) = -1;
@@ -459,8 +449,7 @@ static void dissect_ice_context(proto_tree *tree, tvbuff_t *tvb, guint32 offset,
offset += consumed_key;
(*consumed) += consumed_key;
- dissect_ice_string(tree, -1, tvb, offset, &consumed_value,
- &str_value, FALSE);
+ dissect_ice_string(pinfo, tree, ti, hf_icep_invocation_value, tvb, offset, &consumed_value, &str_value);
if ( consumed_value == -1 ) {
(*consumed) = -1;
@@ -469,16 +458,8 @@ static void dissect_ice_context(proto_tree *tree, tvbuff_t *tvb, guint32 offset,
offset += consumed_value;
(*consumed) += consumed_value;
-
- if (tree && str_value && str_key) {
-
- proto_tree_add_text(tree, tvb,
- offset - (consumed_key + consumed_value) - 1,
- (consumed_key + consumed_value) + 1,
- "Invocation Context: %s/%s",
- str_key, str_value);
- }
-
+ if (ti)
+ proto_item_set_len(ti, (consumed_key + consumed_value) + 1);
}
}
@@ -486,8 +467,8 @@ static void dissect_ice_context(proto_tree *tree, tvbuff_t *tvb, guint32 offset,
* This function dissects an "Ice params", adds hf(s) to "tree" and returns consumed
* bytes in "*consumed", if errors "*consumed" is -1.
*/
-static void dissect_ice_params(proto_tree *tree, tvbuff_t *tvb,
- guint32 offset, gint32 *consumed)
+static void dissect_ice_params(packet_info *pinfo, proto_tree *tree, proto_item *item, tvbuff_t *tvb,
+ guint32 offset, gint32 *consumed)
{
/* p. 612, chapter 23.3.2 and p. 587, 23.2.2:
* "params" is an Encapsulation
@@ -509,11 +490,10 @@ static void dissect_ice_params(proto_tree *tree, tvbuff_t *tvb,
/* check first 6 bytes */
if ( !tvb_bytes_exist(tvb, offset, ICEP_MIN_PARAMS_SIZE) ) {
- if (tree)
- proto_tree_add_text(tree, tvb, offset, -1, "params missing");
+ if (item)
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "params missing");
- col_append_str(mypinfo->cinfo, COL_INFO,
- " (params missing)");
+ col_append_str(mypinfo->cinfo, COL_INFO, " (params missing)");
(*consumed) = -1;
return;
@@ -526,12 +506,10 @@ static void dissect_ice_params(proto_tree *tree, tvbuff_t *tvb,
if ( size < ICEP_MIN_PARAMS_SIZE ) {
- if (tree)
- proto_tree_add_text(tree, tvb, offset, 4,
- "params size too small");
+ if (item)
+ expert_add_info_format(pinfo, item, PI_PROTOCOL, PI_WARN, "params size too small");
- col_append_str(mypinfo->cinfo, COL_INFO,
- " (params size too small)");
+ col_append_str(mypinfo->cinfo, COL_INFO, " (params size too small)");
(*consumed) = -1;
return;
@@ -552,7 +530,7 @@ static void dissect_ice_params(proto_tree *tree, tvbuff_t *tvb,
(*consumed)++;
} else {
- /* skipp size, major, minor */
+ /* skip size, major, minor */
offset += 6;
(*consumed) += 6;
}
@@ -565,12 +543,9 @@ static void dissect_ice_params(proto_tree *tree, tvbuff_t *tvb,
if ( tvb_data_remained < ( size - ICEP_MIN_PARAMS_SIZE ) ) {
- if (tree)
- proto_tree_add_text(tree, tvb, offset, -1,
- "missing encapsulated data (%d bytes)",
- size
- - ICEP_MIN_PARAMS_SIZE
- - tvb_data_remained);
+ if (item)
+ expert_add_info_format(pinfo, item, PI_PROTOCOL, PI_WARN, "missing encapsulated data (%d bytes)",
+ size - ICEP_MIN_PARAMS_SIZE - tvb_data_remained);
if ( check_col(mypinfo->cinfo, COL_INFO) ) {
col_append_fstr(mypinfo->cinfo, COL_INFO,
@@ -587,16 +562,14 @@ static void dissect_ice_params(proto_tree *tree, tvbuff_t *tvb,
/* encapsulated params */
if (tree) {
- proto_tree_add_text(tree, tvb, offset, (size - ICEP_MIN_PARAMS_SIZE),
- "Encapsulated parameters (%d bytes)",
- (size - ICEP_MIN_PARAMS_SIZE));
+ proto_tree_add_item(tree, hf_icep_params_encapsulated, tvb, offset, (size - ICEP_MIN_PARAMS_SIZE), ENC_LITTLE_ENDIAN);
}
(*consumed) += (size - ICEP_MIN_PARAMS_SIZE);
}
static void dissect_icep_request_common(tvbuff_t *tvb, guint32 offset,
- proto_tree *icep_sub_tree, gint32 *total_consumed)
+ packet_info *pinfo, proto_tree *icep_sub_tree, proto_item* icep_sub_item, gint32 *total_consumed)
{
/* p. 613, chapter 23.3.3 and p. 612 chapter 23.3.2:
* Request and BatchRequest differ only in the first 4 bytes (requestID)
@@ -620,9 +593,8 @@ static void dissect_icep_request_common(tvbuff_t *tvb, guint32 offset,
/* check common header (i.e. the batch request one)*/
if ( !tvb_bytes_exist(tvb, offset, ICEP_MIN_COMMON_REQ_HEADER_SIZE) ) {
- if (icep_sub_tree)
- proto_tree_add_text(icep_sub_tree, tvb, offset, -1,
- "too short header");
+ if (icep_sub_item)
+ expert_add_info_format(pinfo, icep_sub_item, PI_MALFORMED, PI_ERROR, "too short header");
col_append_str(mypinfo->cinfo, COL_INFO,
" (too short header)");
@@ -639,8 +611,7 @@ static void dissect_icep_request_common(tvbuff_t *tvb, guint32 offset,
* }
*/
- dissect_ice_string(icep_sub_tree, hf_icep_id_name, tvb, offset,
- &consumed, &namestr, TRUE);
+ dissect_ice_string(pinfo, icep_sub_tree, icep_sub_item, hf_icep_id_name, tvb, offset, &consumed, &namestr);
if ( consumed == -1 )
goto error;
@@ -649,8 +620,7 @@ static void dissect_icep_request_common(tvbuff_t *tvb, guint32 offset,
(*total_consumed) += consumed;
- dissect_ice_string(icep_sub_tree, hf_icep_id_category, tvb, offset,
- &consumed, NULL, TRUE);
+ dissect_ice_string(pinfo, icep_sub_tree, icep_sub_item, hf_icep_id_category, tvb, offset, &consumed, NULL);
if ( consumed == -1 )
goto error;
@@ -664,7 +634,7 @@ static void dissect_icep_request_common(tvbuff_t *tvb, guint32 offset,
*
*/
- dissect_ice_facet(icep_sub_tree, hf_icep_facet, tvb, offset, &consumed);
+ dissect_ice_facet(pinfo, icep_sub_tree, icep_sub_item, hf_icep_facet, tvb, offset, &consumed);
if ( consumed == -1 )
goto error;
@@ -676,8 +646,7 @@ static void dissect_icep_request_common(tvbuff_t *tvb, guint32 offset,
*
*/
- dissect_ice_string(icep_sub_tree, hf_icep_operation, tvb, offset,
- &consumed, &opstr, TRUE);
+ dissect_ice_string(pinfo, icep_sub_tree, icep_sub_item, hf_icep_operation, tvb, offset, &consumed, &opstr);
if ( consumed == -1 )
goto error;
@@ -699,13 +668,10 @@ static void dissect_icep_request_common(tvbuff_t *tvb, guint32 offset,
/* check and get mode byte */
if ( !tvb_bytes_exist(tvb, offset, 1) ) {
- if (icep_sub_tree)
- proto_tree_add_text(icep_sub_tree, tvb, offset, -1,
- "mode field missing");
-
- col_append_str(mypinfo->cinfo, COL_INFO,
- " (mode field missing)");
+ if (icep_sub_item)
+ expert_add_info_format(pinfo, icep_sub_item, PI_MALFORMED, PI_ERROR, "mode field missing");
+ col_append_str(mypinfo->cinfo, COL_INFO, " (mode field missing)");
goto error;
}
@@ -720,7 +686,7 @@ static void dissect_icep_request_common(tvbuff_t *tvb, guint32 offset,
*
*/
- dissect_ice_context(icep_sub_tree, tvb, offset, &consumed);
+ dissect_ice_context(pinfo, icep_sub_tree, icep_sub_item, tvb, offset, &consumed);
if ( consumed == -1 )
goto error;
@@ -732,7 +698,7 @@ static void dissect_icep_request_common(tvbuff_t *tvb, guint32 offset,
*
*/
- dissect_ice_params(icep_sub_tree, tvb, offset, &consumed);
+ dissect_ice_params(pinfo, icep_sub_tree, icep_sub_item, tvb, offset, &consumed);
if ( consumed == -1 )
goto error;
@@ -748,7 +714,8 @@ error:
}
-static void dissect_icep_request(tvbuff_t *tvb, guint32 offset, proto_tree *icep_tree)
+static void dissect_icep_request(tvbuff_t *tvb, guint32 offset,
+ packet_info *pinfo, proto_tree *icep_tree, proto_item* icep_item)
{
/* p. 612, chapter 23.3.2:
*
@@ -773,12 +740,10 @@ static void dissect_icep_request(tvbuff_t *tvb, guint32 offset, proto_tree *icep
/* check for req id */
if ( !tvb_bytes_exist(tvb, offset, 4) ) {
- if (icep_tree)
- proto_tree_add_text(icep_tree, tvb, offset, -1,
- "too short header");
+ if (icep_item)
+ expert_add_info_format(pinfo, icep_item, PI_MALFORMED, PI_ERROR, "too short header");
- col_append_str(mypinfo->cinfo, COL_INFO,
- " (too short header)");
+ col_append_str(mypinfo->cinfo, COL_INFO, " (too short header)");
return;
}
@@ -813,7 +778,7 @@ static void dissect_icep_request(tvbuff_t *tvb, guint32 offset, proto_tree *icep
offset += 4;
DBG0("consumed --> 4\n");
- dissect_icep_request_common(tvb, offset, icep_sub_tree, &consumed);
+ dissect_icep_request_common(tvb, offset, pinfo, icep_sub_tree, ti, &consumed);
if ( consumed == -1 )
return;
@@ -825,7 +790,7 @@ static void dissect_icep_request(tvbuff_t *tvb, guint32 offset, proto_tree *icep
static void dissect_icep_batch_request(tvbuff_t *tvb, guint32 offset,
- proto_tree *icep_tree)
+ packet_info *pinfo, proto_tree *icep_tree, proto_item* icep_item)
{
/* p. 613, chapter 23.3.3
* A batch request msg is a "sequence" of batch request
@@ -857,9 +822,8 @@ static void dissect_icep_batch_request(tvbuff_t *tvb, guint32 offset,
/* check for first 4 byte */
if ( !tvb_bytes_exist(tvb, offset, 4) ) {
- if (icep_tree)
- proto_tree_add_text(icep_tree, tvb, offset, -1,
- "counter of batch requests missing");
+ if (icep_item)
+ expert_add_info_format(pinfo, icep_item, PI_MALFORMED, PI_ERROR, "counter of batch requests missing");
col_append_str(mypinfo->cinfo, COL_INFO,
" (counter of batch requests missing)");
@@ -872,11 +836,10 @@ static void dissect_icep_batch_request(tvbuff_t *tvb, guint32 offset,
DBG1("batch_requests.count --> %d\n", num_reqs);
- if ( num_reqs > ICEP_MAX_BATCH_REQUESTS ) {
+ if ( num_reqs > icep_max_batch_requests ) {
- if (icep_tree)
- proto_tree_add_text(icep_tree, tvb, offset, -1,
- "too many batch requests (%d)", num_reqs);
+ if (icep_item)
+ expert_add_info_format(pinfo, icep_item, PI_PROTOCOL, PI_WARN, "too many batch requests (%d)", num_reqs);
if ( check_col(mypinfo->cinfo, COL_INFO) ) {
col_append_fstr(mypinfo->cinfo, COL_INFO,
@@ -926,7 +889,7 @@ static void dissect_icep_batch_request(tvbuff_t *tvb, guint32 offset,
",");
}
- dissect_icep_request_common(tvb, offset, icep_sub_tree, &consumed);
+ dissect_icep_request_common(tvb, offset, pinfo, icep_sub_tree, ti, &consumed);
if ( consumed == -1 )
return;
@@ -939,7 +902,8 @@ static void dissect_icep_batch_request(tvbuff_t *tvb, guint32 offset,
}
}
-static void dissect_icep_reply(tvbuff_t *tvb, guint32 offset, proto_tree *icep_tree)
+static void dissect_icep_reply(tvbuff_t *tvb, guint32 offset,
+ packet_info *pinfo, proto_tree *icep_tree, proto_item* icep_item)
{
/* p. 614, chapter 23.3.4:
*
@@ -962,13 +926,10 @@ static void dissect_icep_reply(tvbuff_t *tvb, guint32 offset, proto_tree *icep_t
if ( !tvb_bytes_exist(tvb, offset, ICEP_MIN_REPLY_SIZE) ) {
- if (icep_tree)
- proto_tree_add_text(icep_tree, tvb, offset, -1,
- "too short header");
-
- col_append_str(mypinfo->cinfo, COL_INFO,
- " (too short header)");
+ if (icep_item)
+ expert_add_info_format(pinfo, icep_item, PI_MALFORMED, PI_ERROR, "too short header");
+ col_append_str(mypinfo->cinfo, COL_INFO, " (too short header)");
return;
}
@@ -1018,10 +979,9 @@ static void dissect_icep_reply(tvbuff_t *tvb, guint32 offset, proto_tree *icep_t
if ( tvb_data_remained < reported_reply_data ) {
if (icep_sub_tree)
- proto_tree_add_text(icep_sub_tree, tvb, offset, -1,
- "Reply Data (missing %d bytes out of %d)",
- reported_reply_data - tvb_data_remained,
- reported_reply_data);
+ expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR, "Reply Data (missing %d bytes out of %d)",
+ reported_reply_data - tvb_data_remained,
+ reported_reply_data);
if ( check_col(mypinfo->cinfo, COL_INFO) ) {
col_append_fstr(mypinfo->cinfo, COL_INFO,
@@ -1037,16 +997,7 @@ static void dissect_icep_reply(tvbuff_t *tvb, guint32 offset, proto_tree *icep_t
/* yes (reported_reply_data can be 0) */
if (icep_sub_tree) {
-
- if ( reported_reply_data !=0 )
- proto_tree_add_text(icep_sub_tree, tvb, offset,
- reported_reply_data,
- "Reply data (%d bytes)",
- reported_reply_data);
- else
- proto_tree_add_text(icep_sub_tree, tvb, offset,
- reported_reply_data,
- "Reply data (empty)");
+ proto_tree_add_item(icep_sub_tree, hf_icep_reply_data, tvb, offset, reported_reply_data, ENC_NA);
}
/*offset += reported_reply_data;*/
@@ -1144,17 +1095,17 @@ static void dissect_icep_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
case 0x0:
DBG1("request message body: parsing %d bytes\n",
tvb_length_remaining(tvb, offset));
- dissect_icep_request(tvb, offset, icep_tree);
+ dissect_icep_request(tvb, offset, pinfo, icep_tree, ti);
break;
case 0x1:
DBG1("batch request message body: parsing %d bytes\n",
tvb_length_remaining(tvb, offset));
- dissect_icep_batch_request(tvb, offset, icep_tree);
+ dissect_icep_batch_request(tvb, offset, pinfo, icep_tree, ti);
break;
case 0x2:
DBG1("reply message body: parsing %d bytes\n",
tvb_length_remaining(tvb, offset));
- dissect_icep_reply(tvb, offset, icep_tree);
+ dissect_icep_reply(tvb, offset, pinfo, icep_tree, ti);
break;
case 0x3:
case 0x4:
@@ -1162,22 +1113,16 @@ static void dissect_icep_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
break;
default:
if (tree)
- proto_tree_add_text(tree, tvb, 8, 1, /* display msg type byte */
- "Unknown Message Type: 0x%02x",
- tvb_get_guint8(tvb, 8));
+ expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_WARN, "Unknown Message Type: 0x%02x", tvb_get_guint8(tvb, 8));
break;
}
}
/* entry point */
-static gboolean dissect_icep(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static gboolean dissect_icep_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
DBG0("triggered\n");
- /* get at least a full message header (taken from packet-yhoo.c) */
-
- /* check for magic string (taken from packet-giop.c) */
-
if ( tvb_memeql(tvb, 0, icep_magic, 4) == -1 ) {
/* Not a ICEP packet. */
return FALSE;
@@ -1191,11 +1136,25 @@ static gboolean dissect_icep(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
return TRUE;
}
+static gboolean dissect_icep_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ DBG0("triggered\n");
+
+ if ( tvb_memeql(tvb, 0, icep_magic, 4) == -1 ) {
+ /* Not a ICEP packet. */
+ return FALSE;
+ }
+
+ /* start dissecting */
+ dissect_icep_pdu(tvb, pinfo, tree);
+ return TRUE;
+}
/* Register the protocol with Wireshark */
void proto_register_icep(void)
{
+ module_t *icep_module;
/* Setup list of header fields */
@@ -1352,6 +1311,39 @@ void proto_register_icep(void)
}
},
+ { &hf_icep_params_encapsulated,
+ {
+ "Encapsulated parameters",
+ "icep.params.encapsulated",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Remaining encapsulated parameters",
+ HFILL
+ }
+ },
+
+ { &hf_icep_reply_data,
+ {
+ "Reported reply data",
+ "icep.params.reply_data",
+ FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL
+ }
+ },
+
+ { &hf_icep_invocation_key,
+ {
+ "Key",
+ "icep.invocation_key",
+ FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL
+ }
+ },
+
+ { &hf_icep_invocation_value,
+ {
+ "Value",
+ "icep.invocation_value",
+ FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL
+ }
+ },
};
/* Setup protocol subtree array */
@@ -1371,13 +1363,75 @@ void proto_register_icep(void)
proto_register_field_array(proto_icep, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
+
+ icep_module = prefs_register_protocol(proto_icep, NULL);
+
+ prefs_register_uint_preference(icep_module, "tcp.port",
+ "ICEP TCP Port",
+ "ICEP TCP port",
+ 10,
+ &icep_tcp_port);
+
+ prefs_register_uint_preference(icep_module, "udp.port",
+ "ICEP UDP Port",
+ "ICEP UDP port",
+ 10,
+ &icep_udp_port);
+
+ prefs_register_uint_preference(icep_module, "max_batch_requests",
+ "Maximum batch requests",
+ "Maximum number of batch requests allowed",
+ 10, &icep_max_batch_requests);
+
+ prefs_register_uint_preference(icep_module, "max_ice_string_len",
+ "Maximum string length",
+ "Maximum length allowed of an ICEP string",
+ 10, &icep_max_ice_string_len);
+
+ prefs_register_uint_preference(icep_module, "max_ice_context_pairs",
+ "Maximum context pairs",
+ "Maximum number of context pairs allowed",
+ 10, &icep_max_ice_context_pairs);
}
void proto_reg_handoff_icep(void)
{
+ static gboolean icep_prefs_initialized = FALSE;
+ static dissector_handle_t icep_tcp_handle, icep_udp_handle;
+ static guint old_icep_tcp_port = 0;
+ static guint old_icep_udp_port = 0;
+
/* Register as a heuristic TCP/UDP dissector */
+ if (icep_prefs_initialized == FALSE) {
+ icep_tcp_handle = new_create_dissector_handle(dissect_icep_tcp, proto_icep);
+ icep_udp_handle = new_create_dissector_handle(dissect_icep_udp, proto_icep);
+
+ heur_dissector_add("tcp", dissect_icep_tcp, proto_icep);
+ heur_dissector_add("udp", dissect_icep_udp, proto_icep);
+
+ icep_prefs_initialized = TRUE;
+ }
+
+ /* Register TCP port for dissection */
+ if(old_icep_tcp_port != 0 && old_icep_tcp_port != icep_tcp_port){
+ dissector_delete_uint("tcp.port", old_icep_tcp_port, icep_tcp_handle);
+ }
+
+ if(icep_tcp_port != 0 && old_icep_tcp_port != icep_tcp_port) {
+ dissector_add_uint("tcp.port", icep_tcp_port, icep_tcp_handle);
+ }
+
+ old_icep_tcp_port = icep_tcp_port;
+
+ /* Register UDP port for dissection */
+ if(old_icep_udp_port != 0 && old_icep_udp_port != icep_udp_port){
+ dissector_delete_uint("udp.port", old_icep_udp_port, icep_udp_handle);
+ }
+
+ if(icep_udp_port != 0 && old_icep_udp_port != icep_udp_port) {
+ dissector_add_uint("udp.port", icep_tcp_port, icep_udp_handle);
+ }
- heur_dissector_add("tcp", dissect_icep, proto_icep);
- heur_dissector_add("udp", dissect_icep, proto_icep);
+ old_icep_udp_port = icep_udp_port;
}
diff --git a/epan/dissectors/packet-icmp.c b/epan/dissectors/packet-icmp.c
index 69347576f2..0f5e5b5110 100644
--- a/epan/dissectors/packet-icmp.c
+++ b/epan/dissectors/packet-icmp.c
@@ -977,7 +977,7 @@ static icmp_transaction_t *transaction_start(packet_info *pinfo, proto_tree *tre
icmp_trans->rqst_frame = PINFO_FD_NUM(pinfo);
icmp_trans->resp_frame = 0;
icmp_trans->rqst_time = pinfo->fd->abs_ts;
- icmp_trans->resp_time = 0.0;
+ nstime_set_zero(&icmp_trans->resp_time);
se_tree_insert32_array(icmp_info->pdus, icmp_key, (void *)icmp_trans);
}
else /* Already visited this frame */
@@ -1008,6 +1008,7 @@ static icmp_transaction_t *transaction_end(packet_info *pinfo, proto_tree *tree,
emem_tree_key_t icmp_key[2];
proto_item *it;
nstime_t ns;
+ double resp_time;
conversation = find_conversation(pinfo->fd->num, &pinfo->src, &pinfo->dst,
pinfo->ptype, 0, 0, 0);
@@ -1038,9 +1039,10 @@ static icmp_transaction_t *transaction_end(packet_info *pinfo, proto_tree *tree,
PROTO_ITEM_SET_GENERATED(it);
nstime_delta(&ns, &pinfo->fd->abs_ts, &icmp_trans->rqst_time);
- icmp_trans->resp_time = nstime_to_msec(&ns);
+ icmp_trans->resp_time = ns;
+ resp_time = nstime_to_msec(&ns);
it = proto_tree_add_double_format_value(tree, hf_icmp_resptime, NULL,
- 0, 0, icmp_trans->resp_time, "%.3f ms", icmp_trans->resp_time);
+ 0, 0, resp_time, "%.3f ms", resp_time);
PROTO_ITEM_SET_GENERATED(it);
}
diff --git a/epan/dissectors/packet-icmp.h b/epan/dissectors/packet-icmp.h
index df671169ba..57882a8db0 100644
--- a/epan/dissectors/packet-icmp.h
+++ b/epan/dissectors/packet-icmp.h
@@ -30,7 +30,7 @@ typedef struct _icmp_transaction_t {
guint32 rqst_frame;
guint32 resp_frame;
nstime_t rqst_time;
- double resp_time;
+ nstime_t resp_time;
} icmp_transaction_t;
#endif
diff --git a/epan/dissectors/packet-icmpv6.c b/epan/dissectors/packet-icmpv6.c
index cd8b655a4f..bd5984211b 100644
--- a/epan/dissectors/packet-icmpv6.c
+++ b/epan/dissectors/packet-icmpv6.c
@@ -80,10 +80,12 @@
* RFC 5269: Distributing a Symmetric Fast Mobile IPv6 (FMIPv6) Handover Key Using SEcure Neighbor Discovery (SEND)
* RFC 5271: Mobile IPv6 Fast Handovers for 3G CDMA Networks
* RFC 6275: Mobility Support in IPv6
- * draft-ietf-roll-rpl-19.txt: RPL: IPv6 Routing Protocol for Low power and Lossy Networks
- * draft-ietf-csi-proxy-send-05: Secure Proxy ND Support for SEND
+ * RFC 6495: Subject Key Identifier (SKI) SEND Name Type fields
+ * RFC 6496: Secure Proxy ND Support for SEND
+ * RFC 6550: RPL: IPv6 Routing Protocol for Low power and Lossy Networks
+ * RFC 6554: An IPv6 Routing Header for Source Routes with RPL
* draft-ietf-6lowpan-nd-18: Neighbor Discovery Optimization for Low Power and Lossy Networks (6LoWPAN)
- * http://www.iana.org/assignments/icmpv6-parameters (last updated 2011-04-08)
+ * http://www.iana.org/assignments/icmpv6-parameters (last updated 2012-03-28)
*/
static int proto_icmpv6 = -1;
@@ -233,7 +235,6 @@ static int hf_icmpv6_opt_6co_context_prefix = -1;
static int hf_icmpv6_opt_abro_version = -1;
static int hf_icmpv6_opt_abro_6lbr_address = -1;
-
/* RFC 2710: Multicast Listener Discovery for IPv6 */
static int hf_icmpv6_mld_mrd = -1;
static int hf_icmpv6_mld_multicast_address = -1;
@@ -347,7 +348,7 @@ static int hf_icmpv6_ni_reply_node_name = -1;
static int hf_icmpv6_ni_reply_node_address = -1;
static int hf_icmpv6_ni_reply_ipv4_address = -1;
-/* RPL: draft-ietf-roll-rpl-19.txt: Routing over Low-Power and Lossy Networks. */
+/* RPL: RFC 6550 : Routing over Low-Power and Lossy Networks. */
static int hf_icmpv6_rpl_dis_flag = -1;
static int hf_icmpv6_rpl_dio_instance = -1;
static int hf_icmpv6_rpl_dio_version = -1;
@@ -575,7 +576,7 @@ static const value_string icmpv6_type_val[] = {
{ ICMP6_MCAST_ROUTER_SOLICIT, "Multicast Router Solicitation" }, /* [RFC4286] */
{ ICMP6_MCAST_ROUTER_TERM, "Multicast Router Termination" }, /* [RFC4286] */
{ ICMP6_FMIPV6_MESSAGES, "FMIPv6" }, /* [RFC5568] */
- { ICMP6_RPL_CONTROL, "RPL Control" }, /* draft-ietf-roll-rpl-19.txt Pending IANA */
+ { ICMP6_RPL_CONTROL, "RPL Control" }, /* [RFC6550] */
{ ICMP6_6LOWPANND_DAR, "Duplicate Address Request"}, /* draft-ietf-6lowpan-nd-18.txt Pending IANA */
{ ICMP6_6LOWPANND_DAC, "Duplicate Address Confirmation"}, /* draft-ietf-6lowpan-nd-18.txt Pending IANA */
{ 200, "Private experimentation" }, /* [RFC4443] */
@@ -602,7 +603,7 @@ static const value_string icmpv6_unreach_code_val[] = {
{ ICMP6_DST_UNREACH_NOPORT, "Port unreachable" },
{ ICMP6_DST_UNREACH_INGR_EGR, "Source address failed ingress/egress policy" },
{ ICMP6_DST_UNREACH_REJECT, "Reject route to destination" },
- { ICMP6_DST_UNREACH_ERROR, "Error in Source Routing Header" }, /* [draft-ietf-roll-rpl-19.txt] */
+ { ICMP6_DST_UNREACH_ERROR, "Error in Source Routing Header" }, /* [RFC6550] [RFC6554] */
{ 0, NULL }
};
@@ -836,7 +837,7 @@ static const value_string option_vals[] = {
/* 29 */ { ND_OPT_HANDOVER_ASSIST_INFO, "Handover Assist Information" }, /* [RFC5271] */
/* 30 */ { ND_OPT_MOBILE_NODE_ID, "Mobile Node Identifier Option" }, /* [RFC5271] */
/* 31 */ { ND_OPT_DNS_SEARCH_LIST, "DNS Search List Option" }, /* [RFC6106] */
-/* 32 */ { ND_OPT_PROXY_SIGNATURE, "Proxy Signature (PS)" }, /* [draft-ietf-csi-proxy-send-05.txt] */
+/* 32 */ { ND_OPT_PROXY_SIGNATURE, "Proxy Signature (PS)" }, /* [RFC6496] */
/* 31 */ { ND_OPT_ADDR_REGISTRATION, "Address Registration Option" }, /* [draft-ietf-6lowpan-nd-18.txt] */
/* 32 */ { ND_OPT_6LOWPAN_CONTEXT, "6LoWPAN Context Option" }, /* [draft-ietf-6lowpan-nd-18.txt] */
/* 33 */ { ND_OPT_AUTH_BORDER_ROUTER, "Authoritative Border Router" }, /* [draft-ietf-6lowpan-nd-18.txt] */
@@ -954,8 +955,7 @@ static const value_string icmpv6_option_cert_type_vals[] = {
-/* RPL: draft-ietf-roll-rpl-19.txt: Routing over Low-Power and Lossy Networks. */
-/* Pending IANA Assignment */
+/* RPL : RFC 6550 : Routing over Low-Power and Lossy Networks. */
/* RPL ICMPv6 Codes */
#define ICMP6_RPL_DIS 0x00 /* DODAG Information Solicitation */
#define ICMP6_RPL_DIO 0x01 /* DODAG Information Object */
@@ -1015,10 +1015,10 @@ static const value_string icmpv6_option_cert_type_vals[] = {
#define RPL_OPT_SOLICITED_FLAG_RSV 0x1F
static const value_string rpl_dio_map_val[] = {
- { 0, "No downward routes maintained by RPL" },
- { 1, "Non storing mode" },
- { 2, "Storing without multicast support" },
- { 3, "Storing with multicast support" },
+ { 0, "No Downward routes maintained by RPL" },
+ { 1, "Non-Storing Mode of Operation" },
+ { 2, "Storing Mode of Operation with no multicast support" },
+ { 3, "Storing Mode of Operation with multicast support" },
{ 0, NULL }
};
static const value_string rpl_code_val[] = {
@@ -1059,8 +1059,8 @@ static const value_string rpl_secure_algorithm_signature_val[] = {
static const value_string rpl_option_vals[] = {
{ RPL_OPT_PAD1, "1-byte padding" },
{ RPL_OPT_PADN, "n-byte padding" },
- { RPL_OPT_METRIC, "Metric container" },
- { RPL_OPT_ROUTING, "Routing"},
+ { RPL_OPT_METRIC, "DAG Metric container" },
+ { RPL_OPT_ROUTING, "Routing Information"},
{ RPL_OPT_CONFIG, "DODAG configuration" },
{ RPL_OPT_TARGET, "RPL Target" },
{ RPL_OPT_TRANSIT, "Transit Information" },
@@ -1148,7 +1148,7 @@ static icmp_transaction_t *transaction_start(packet_info *pinfo, proto_tree *tre
icmpv6_trans->rqst_frame = PINFO_FD_NUM(pinfo);
icmpv6_trans->resp_frame = 0;
icmpv6_trans->rqst_time = pinfo->fd->abs_ts;
- icmpv6_trans->resp_time = 0.0;
+ nstime_set_zero(&icmpv6_trans->resp_time);
se_tree_insert32_array(icmpv6_info->pdus, icmpv6_key, (void *)icmpv6_trans);
}
else /* Already visited this frame */
@@ -1179,6 +1179,7 @@ static icmp_transaction_t *transaction_end(packet_info *pinfo, proto_tree *tree,
emem_tree_key_t icmpv6_key[2];
proto_item *it;
nstime_t ns;
+ double resp_time;
conversation = find_conversation(pinfo->fd->num, &pinfo->src, &pinfo->dst,
pinfo->ptype, 0, 0, 0);
@@ -1212,11 +1213,12 @@ static icmp_transaction_t *transaction_end(packet_info *pinfo, proto_tree *tree,
}
nstime_delta(&ns, &pinfo->fd->abs_ts, &icmpv6_trans->rqst_time);
- icmpv6_trans->resp_time = nstime_to_msec(&ns);
+ icmpv6_trans->resp_time = ns;
if ( tree )
{
+ resp_time = nstime_to_msec(&ns);
it = proto_tree_add_double_format_value(tree, hf_icmpv6_resptime, NULL,
- 0, 0, icmpv6_trans->resp_time, "%.3f ms", icmpv6_trans->resp_time);
+ 0, 0, resp_time, "%.3f ms", resp_time);
PROTO_ITEM_SET_GENERATED(it);
}
}
@@ -1982,7 +1984,7 @@ dissect_icmpv6_nd_opt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
if(tvb_get_guint8(tvb, opt_offset) == 0){
/* Padding... */
int padd_length = (offset + opt_len) - opt_offset;
- proto_tree_add_item(icmp6opt_tree, hf_icmpv6_opt_padding, tvb, opt_offset, padd_length, FALSE);
+ proto_tree_add_item(icmp6opt_tree, hf_icmpv6_opt_padding, tvb, opt_offset, padd_length, ENC_NA);
opt_offset += padd_length;
break;
}
@@ -2138,7 +2140,7 @@ dissect_icmpv6_nd_opt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
}
-/* RPL: draft-ietf-roll-rpl-19.txt: Routing over Low-Power and Lossy Networks. */
+/* RPL: RFC 6550 : Routing over Low-Power and Lossy Networks. */
static int
dissect_icmpv6_rpl_opt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
{
@@ -3682,7 +3684,7 @@ dissect_icmpv6(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
case ICMP6_RPL_CONTROL: /* RPL Control (155) */
{
- /* RPL: draft-ietf-roll-rpl-19.txt: Routing over Low-Power and Lossy Networks. */
+ /* RPL: RFC 6550 : Routing over Low-Power and Lossy Networks. */
offset = dissect_rpl_control(tvb, offset, pinfo, icmp6_tree, icmp6_type, icmp6_code);
break;
}
@@ -4460,7 +4462,7 @@ proto_register_icmpv6(void)
{ "IPv4 Node address", "icmpv6.ni.query.ipv4_address", FT_IPv4, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
- /* RPL: draft-ietf-roll-rpl-19.txt: Routing over Low-Power and Lossy Networks. */
+ /* RPL: RFC 6550 : Routing over Low-Power and Lossy Networks. */
{ &hf_icmpv6_rpl_dis_flag,
{ "Flags", "icmpv6.rpl.dis.flags", FT_UINT8, BASE_DEC, NULL, 0x0,
"8-bit unused field reserved for flags", HFILL }},
diff --git a/epan/dissectors/packet-icp.c b/epan/dissectors/packet-icp.c
index 6aef654893..d6e19f2b8e 100644
--- a/epan/dissectors/packet-icp.c
+++ b/epan/dissectors/packet-icp.c
@@ -30,8 +30,8 @@
#include "config.h"
#endif
-#include <stdlib.h>
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/addr_resolv.h>
diff --git a/epan/dissectors/packet-icq.c b/epan/dissectors/packet-icq.c
index 2df6a5f34f..e1c6653f34 100644
--- a/epan/dissectors/packet-icq.c
+++ b/epan/dissectors/packet-icq.c
@@ -1249,7 +1249,7 @@ icqv5_srv_meta_user(proto_tree* tree, /* Tree to put the data in */
auth = tvb_get_guint8(tvb, offset);
proto_tree_add_text(sstree, tvb, offset, 1,
"authorization: %s", (auth==0x01)?"Necessary":"Who needs it");
- offset++;;
+ offset++;
/* Get x2 */
proto_tree_add_text(sstree, tvb, offset, sizeof(guint16),
"x2: 0x%04x", tvb_get_letohs(tvb, offset));
diff --git a/epan/dissectors/packet-idmp.c b/epan/dissectors/packet-idmp.c
index f1ce614f4d..c2d3471694 100644
--- a/epan/dissectors/packet-idmp.c
+++ b/epan/dissectors/packet-idmp.c
@@ -8,7 +8,7 @@
#line 1 "../../asn1/idmp/packet-idmp-template.c"
/* packet-idmp.c
* Routines for X.519 Internet Directly Mapped Procotol (IDMP) packet dissection
- * Graeme Lunt 2020
+ * Graeme Lunt 2010
*
* $Id$
*
@@ -56,16 +56,16 @@
#define PSNAME "IDMP"
#define PFNAME "idmp"
-static gboolean idmp_desegment = TRUE;
-static guint global_idmp_tcp_port = 1102; /* made up for now */
-static gboolean idmp_reassemble = TRUE;
-static guint tcp_port = 0;
-static dissector_handle_t idmp_handle = NULL;
+static gboolean idmp_desegment = TRUE;
+static guint global_idmp_tcp_port = 1102; /* made up for now */
+static gboolean idmp_reassemble = TRUE;
+static guint tcp_port = 0;
+static dissector_handle_t idmp_handle = NULL;
-static proto_tree *top_tree = NULL;
-static const char *protocolID = NULL;
+static proto_tree *top_tree = NULL;
+static const char *protocolID = NULL;
static const char *saved_protocolID = NULL;
-static guint32 opcode = -1;
+static guint32 opcode = -1;
static void prefs_register_idmp(void); /* forward declaration for use in preferences registration */
@@ -77,7 +77,7 @@ static int hf_idmp_final = -1;
static int hf_idmp_length = -1;
static int hf_idmp_PDU = -1;
-static GHashTable *idmp_segment_table = NULL;
+static GHashTable *idmp_segment_table = NULL;
static GHashTable *idmp_reassembled_table = NULL;
static int hf_idmp_fragments = -1;
@@ -95,44 +95,44 @@ static gint ett_idmp_fragment = -1;
static gint ett_idmp_fragments = -1;
static const fragment_items idmp_frag_items = {
- /* Fragment subtrees */
- &ett_idmp_fragment,
- &ett_idmp_fragments,
- /* Fragment fields */
- &hf_idmp_fragments,
- &hf_idmp_fragment,
- &hf_idmp_fragment_overlap,
- &hf_idmp_fragment_overlap_conflicts,
- &hf_idmp_fragment_multiple_tails,
- &hf_idmp_fragment_too_long_fragment,
- &hf_idmp_fragment_error,
- &hf_idmp_fragment_count,
- /* Reassembled in field */
- &hf_idmp_reassembled_in,
- /* Reassembled length field */
- &hf_idmp_reassembled_length,
- /* Tag */
- "IDMP fragments"
+ /* Fragment subtrees */
+ &ett_idmp_fragment,
+ &ett_idmp_fragments,
+ /* Fragment fields */
+ &hf_idmp_fragments,
+ &hf_idmp_fragment,
+ &hf_idmp_fragment_overlap,
+ &hf_idmp_fragment_overlap_conflicts,
+ &hf_idmp_fragment_multiple_tails,
+ &hf_idmp_fragment_too_long_fragment,
+ &hf_idmp_fragment_error,
+ &hf_idmp_fragment_count,
+ /* Reassembled in field */
+ &hf_idmp_reassembled_in,
+ /* Reassembled length field */
+ &hf_idmp_reassembled_length,
+ /* Tag */
+ "IDMP fragments"
};
static int call_idmp_oid_callback(tvbuff_t *tvb, int offset, packet_info *pinfo, int op, proto_tree *tree _U_)
{
- struct SESSION_DATA_STRUCTURE *session;
+ struct SESSION_DATA_STRUCTURE *session;
- if((session = (struct SESSION_DATA_STRUCTURE*)pinfo->private_data) != NULL) {
+ if((session = (struct SESSION_DATA_STRUCTURE*)pinfo->private_data) != NULL) {
- if((!saved_protocolID) && (op == (ROS_OP_BIND | ROS_OP_RESULT))) {
- /* save for subsequent operations - should be into session data */
- saved_protocolID = se_strdup(protocolID);
- }
+ if((!saved_protocolID) && (op == (ROS_OP_BIND | ROS_OP_RESULT))) {
+ /* save for subsequent operations - should be into session data */
+ saved_protocolID = se_strdup(protocolID);
+ }
- /* mimic ROS! */
- session->ros_op = op;
- offset = call_ros_oid_callback(saved_protocolID ? saved_protocolID : protocolID, tvb, offset, pinfo, top_tree);
- }
+ /* mimic ROS! */
+ session->ros_op = op;
+ offset = call_ros_oid_callback(saved_protocolID ? saved_protocolID : protocolID, tvb, offset, pinfo, top_tree);
+ }
- return offset;
+ return offset;
}
@@ -621,186 +621,185 @@ dissect_idmp_IDM_PDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U
void
register_idmp_protocol_info(const char *oid, const ros_info_t *rinfo, int proto _U_, const char *name)
{
- /* just register with ROS for now */
- register_ros_protocol_info(oid, rinfo, proto, name, FALSE);
+ /* just register with ROS for now */
+ register_ros_protocol_info(oid, rinfo, proto, name, FALSE);
}
static void dissect_idmp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
{
- int offset = 0;
+ int offset = 0;
- proto_item *item=NULL;
- proto_tree *tree=NULL;
- asn1_ctx_t asn1_ctx;
- void *save_private_data;
- struct SESSION_DATA_STRUCTURE session;
- gboolean idmp_final;
- guint32 idmp_length;
- fragment_data *fd_head;
- conversation_t *conv;
- guint32 dst_ref = 0;
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ asn1_ctx_t asn1_ctx;
+ void *save_private_data;
+ struct SESSION_DATA_STRUCTURE session;
+ gboolean idmp_final;
+ guint32 idmp_length;
+ fragment_data *fd_head;
+ conversation_t *conv;
+ guint32 dst_ref = 0;
- asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
+ asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
conv = find_conversation (pinfo->fd->num, &pinfo->src, &pinfo->dst,
- pinfo->ptype, pinfo->srcport, pinfo->destport, 0);
+ pinfo->ptype, pinfo->srcport, pinfo->destport, 0);
if (conv) {
- /* Found a conversation, also use index for the generated dst_ref */
- dst_ref = conv->index;
+ /* Found a conversation, also use index for the generated dst_ref */
+ dst_ref = conv->index;
}
- /* save parent_tree so subdissectors can create new top nodes */
- top_tree=parent_tree;
-
- if(parent_tree){
- item = proto_tree_add_item(parent_tree, proto_idmp, tvb, 0, -1, ENC_NA);
- tree = proto_item_add_subtree(item, ett_idmp);
- }
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "IDMP");
-
- /* now check the segment fields */
-
- proto_tree_add_item(tree, hf_idmp_version, tvb, offset, 1, ENC_BIG_ENDIAN); offset++;
- proto_tree_add_item(tree, hf_idmp_final, tvb, offset, 1, ENC_BIG_ENDIAN);
- idmp_final = tvb_get_guint8(tvb, offset); offset++;
- proto_tree_add_item(tree, hf_idmp_length, tvb, offset, 4, ENC_BIG_ENDIAN);
- idmp_length = tvb_get_ntohl(tvb, offset); offset += 4;
-
- if(idmp_reassemble) {
-
- pinfo->fragmented = !idmp_final;
-
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, " [%sIDMP fragment, %u byte%s]",
- idmp_final ? "Final " : "" ,
- idmp_length, plurality(idmp_length, "", "s"));
-
- fd_head = fragment_add_seq_next(tvb, offset, pinfo, dst_ref,
- idmp_segment_table, idmp_reassembled_table,
- idmp_length, !idmp_final);
+ /* save parent_tree so subdissectors can create new top nodes */
+ top_tree=parent_tree;
- if(fd_head && fd_head->next) {
- proto_tree_add_text(tree, tvb, offset, (idmp_length) ? -1 : 0,
- "IDMP segment data (%u byte%s)", idmp_length,
- plurality(idmp_length, "", "s"));
-
- if (idmp_final) {
- /* This is the last segment */
- tvb = process_reassembled_data (tvb, offset, pinfo,
- "Reassembled IDMP", fd_head, &idmp_frag_items, NULL, tree);
- offset = 0;
- } else if (pinfo->fd->num != fd_head->reassembled_in) {
- /* Add a "Reassembled in" link if not reassembled in this frame */
- proto_tree_add_uint (tree, hf_idmp_reassembled_in,
- tvb, 0, 0, fd_head->reassembled_in);
- }
- }
-
- } else {
- if(!idmp_final) {
-
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, " [IDMP fragment, %u byte%s, IDMP reassembly not enabled]",
- idmp_length, plurality(idmp_length, "", "s"));
+ if(parent_tree){
+ item = proto_tree_add_item(parent_tree, proto_idmp, tvb, 0, -1, ENC_NA);
+ tree = proto_item_add_subtree(item, ett_idmp);
+ }
- proto_tree_add_text(tree, tvb, offset, (idmp_length) ? -1 : 0,
- "IDMP segment data (%u byte%s) (IDMP reassembly not enabled)", idmp_length,
- plurality(idmp_length, "", "s"));
- }
- }
- /* not reassembling - just dissect */
- if(idmp_final) {
- save_private_data = pinfo->private_data;
- pinfo->private_data = &session;
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "IDMP");
+
+ /* now check the segment fields */
+
+ proto_tree_add_item(tree, hf_idmp_version, tvb, offset, 1, ENC_BIG_ENDIAN); offset++;
+ proto_tree_add_item(tree, hf_idmp_final, tvb, offset, 1, ENC_BIG_ENDIAN);
+ idmp_final = tvb_get_guint8(tvb, offset); offset++;
+ proto_tree_add_item(tree, hf_idmp_length, tvb, offset, 4, ENC_BIG_ENDIAN);
+ idmp_length = tvb_get_ntohl(tvb, offset); offset += 4;
+
+ if(idmp_reassemble) {
+
+ pinfo->fragmented = !idmp_final;
+
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, " [%sIDMP fragment, %u byte%s]",
+ idmp_final ? "Final " : "" ,
+ idmp_length, plurality(idmp_length, "", "s"));
+
+ fd_head = fragment_add_seq_next(tvb, offset, pinfo, dst_ref,
+ idmp_segment_table, idmp_reassembled_table,
+ idmp_length, !idmp_final);
+
+ if(fd_head && fd_head->next) {
+ proto_tree_add_text(tree, tvb, offset, (idmp_length) ? -1 : 0,
+ "IDMP segment data (%u byte%s)", idmp_length,
+ plurality(idmp_length, "", "s"));
+
+ if (idmp_final) {
+ /* This is the last segment */
+ tvb = process_reassembled_data (tvb, offset, pinfo,
+ "Reassembled IDMP", fd_head, &idmp_frag_items, NULL, tree);
+ offset = 0;
+ } else if (pinfo->fd->num != fd_head->reassembled_in) {
+ /* Add a "Reassembled in" link if not reassembled in this frame */
+ proto_tree_add_uint (tree, hf_idmp_reassembled_in,
+ tvb, 0, 0, fd_head->reassembled_in);
+ }
+ }
+
+ } else {
+ if(!idmp_final) {
+
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, " [IDMP fragment, %u byte%s, IDMP reassembly not enabled]",
+ idmp_length, plurality(idmp_length, "", "s"));
+
+ proto_tree_add_text(tree, tvb, offset, (idmp_length) ? -1 : 0,
+ "IDMP segment data (%u byte%s) (IDMP reassembly not enabled)", idmp_length,
+ plurality(idmp_length, "", "s"));
+ }
+ }
+ /* not reassembling - just dissect */
+ if(idmp_final) {
+ save_private_data = pinfo->private_data;
+ pinfo->private_data = &session;
- dissect_idmp_IDM_PDU(FALSE, tvb, offset, &asn1_ctx, tree, hf_idmp_PDU);
+ dissect_idmp_IDM_PDU(FALSE, tvb, offset, &asn1_ctx, tree, hf_idmp_PDU);
- pinfo->private_data = save_private_data;
- }
+ pinfo->private_data = save_private_data;
+ }
}
static guint get_idmp_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
{
- guint32 len;
+ guint32 len;
- len = tvb_get_ntohl(tvb, offset + 2);
+ len = tvb_get_ntohl(tvb, offset + 2);
- return len + 6;
+ return len + 6;
}
static void dissect_idmp_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
{
- tcp_dissect_pdus(tvb, pinfo, parent_tree, idmp_desegment, 0, get_idmp_pdu_len, dissect_idmp);
+ tcp_dissect_pdus(tvb, pinfo, parent_tree, idmp_desegment, 0, get_idmp_pdu_len, dissect_idmp);
}
static void idmp_reassemble_init (void)
{
- fragment_table_init (&idmp_segment_table);
- reassembled_table_init (&idmp_reassembled_table);
+ fragment_table_init (&idmp_segment_table);
+ reassembled_table_init (&idmp_reassembled_table);
- saved_protocolID = NULL;
+ saved_protocolID = NULL;
}
/*--- proto_register_idmp -------------------------------------------*/
-void proto_register_idmp(void) {
-
- /* List of fields */
- static hf_register_info hf[] =
- {
- { &hf_idmp_version,
- { "version", "idmp.version",
- FT_INT8, BASE_DEC, NULL, 0,
- "idmp.INTEGER", HFILL }},
- { &hf_idmp_final,
- { "final", "idmp.final",
- FT_BOOLEAN, 8, NULL, 0,
- "idmp.BOOLEAN", HFILL }},
- { &hf_idmp_length,
- { "length", "idmp.length",
- FT_INT32, BASE_DEC, NULL, 0,
- "idmp.INTEGER", HFILL }},
- { &hf_idmp_PDU,
- { "IDM-PDU", "idmp.pdu",
- FT_UINT32, BASE_DEC, VALS(idmp_IDM_PDU_vals), 0,
- "idmp.PDU", HFILL }},
- /* Fragment entries */
- { &hf_idmp_fragments,
- { "IDMP fragments", "idmp.fragments", FT_NONE, BASE_NONE,
- NULL, 0x00, NULL, HFILL } },
- { &hf_idmp_fragment,
- { "IDMP fragment", "idmp.fragment", FT_FRAMENUM, BASE_NONE,
- NULL, 0x00, NULL, HFILL } },
- { &hf_idmp_fragment_overlap,
- { "IDMP fragment overlap", "idmp.fragment.overlap", FT_BOOLEAN,
- BASE_NONE, NULL, 0x00, NULL, HFILL } },
- { &hf_idmp_fragment_overlap_conflicts,
- { "IDMP fragment overlapping with conflicting data",
- "idmp.fragment.overlap.conflicts", FT_BOOLEAN, BASE_NONE,
- NULL, 0x00, NULL, HFILL } },
- { &hf_idmp_fragment_multiple_tails,
- { "IDMP has multiple tail fragments",
- "idmp.fragment.multiple_tails", FT_BOOLEAN, BASE_NONE,
- NULL, 0x00, NULL, HFILL } },
- { &hf_idmp_fragment_too_long_fragment,
- { "IDMP fragment too long", "idmp.fragment.too_long_fragment",
- FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL } },
- { &hf_idmp_fragment_error,
- { "IDMP defragmentation error", "idmp.fragment.error", FT_FRAMENUM,
- BASE_NONE, NULL, 0x00, NULL, HFILL } },
- { &hf_idmp_fragment_count,
- { "IDMP fragment count", "idmp.fragment.count", FT_UINT32, BASE_DEC,
- NULL, 0x00, NULL, HFILL } },
- { &hf_idmp_reassembled_in,
- { "Reassembled IDMP in frame", "idmp.reassembled.in", FT_FRAMENUM, BASE_NONE,
- NULL, 0x00, "This IDMP packet is reassembled in this frame", HFILL } },
- { &hf_idmp_reassembled_length,
- { "Reassembled IDMP length", "idmp.reassembled.length", FT_UINT32, BASE_DEC,
- NULL, 0x00, "The total length of the reassembled payload", HFILL } },
+void proto_register_idmp(void)
+{
+ /* List of fields */
+ static hf_register_info hf[] = {
+ { &hf_idmp_version,
+ { "version", "idmp.version",
+ FT_INT8, BASE_DEC, NULL, 0,
+ "idmp.INTEGER", HFILL }},
+ { &hf_idmp_final,
+ { "final", "idmp.final",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "idmp.BOOLEAN", HFILL }},
+ { &hf_idmp_length,
+ { "length", "idmp.length",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "idmp.INTEGER", HFILL }},
+ { &hf_idmp_PDU,
+ { "IDM-PDU", "idmp.pdu",
+ FT_UINT32, BASE_DEC, VALS(idmp_IDM_PDU_vals), 0,
+ "idmp.PDU", HFILL }},
+ /* Fragment entries */
+ { &hf_idmp_fragments,
+ { "IDMP fragments", "idmp.fragments", FT_NONE, BASE_NONE,
+ NULL, 0x00, NULL, HFILL } },
+ { &hf_idmp_fragment,
+ { "IDMP fragment", "idmp.fragment", FT_FRAMENUM, BASE_NONE,
+ NULL, 0x00, NULL, HFILL } },
+ { &hf_idmp_fragment_overlap,
+ { "IDMP fragment overlap", "idmp.fragment.overlap", FT_BOOLEAN,
+ BASE_NONE, NULL, 0x00, NULL, HFILL } },
+ { &hf_idmp_fragment_overlap_conflicts,
+ { "IDMP fragment overlapping with conflicting data",
+ "idmp.fragment.overlap.conflicts", FT_BOOLEAN, BASE_NONE,
+ NULL, 0x00, NULL, HFILL } },
+ { &hf_idmp_fragment_multiple_tails,
+ { "IDMP has multiple tail fragments",
+ "idmp.fragment.multiple_tails", FT_BOOLEAN, BASE_NONE,
+ NULL, 0x00, NULL, HFILL } },
+ { &hf_idmp_fragment_too_long_fragment,
+ { "IDMP fragment too long", "idmp.fragment.too_long_fragment",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL } },
+ { &hf_idmp_fragment_error,
+ { "IDMP defragmentation error", "idmp.fragment.error", FT_FRAMENUM,
+ BASE_NONE, NULL, 0x00, NULL, HFILL } },
+ { &hf_idmp_fragment_count,
+ { "IDMP fragment count", "idmp.fragment.count", FT_UINT32, BASE_DEC,
+ NULL, 0x00, NULL, HFILL } },
+ { &hf_idmp_reassembled_in,
+ { "Reassembled IDMP in frame", "idmp.reassembled.in", FT_FRAMENUM, BASE_NONE,
+ NULL, 0x00, "This IDMP packet is reassembled in this frame", HFILL } },
+ { &hf_idmp_reassembled_length,
+ { "Reassembled IDMP length", "idmp.reassembled.length", FT_UINT32, BASE_DEC,
+ NULL, 0x00, "The total length of the reassembled payload", HFILL } },
/*--- Included file: packet-idmp-hfarr.c ---*/
@@ -935,14 +934,14 @@ void proto_register_idmp(void) {
NULL, HFILL }},
/*--- End of included file: packet-idmp-hfarr.c ---*/
-#line 324 "../../asn1/idmp/packet-idmp-template.c"
- };
+#line 323 "../../asn1/idmp/packet-idmp-template.c"
+ };
- /* List of subtrees */
- static gint *ett[] = {
- &ett_idmp,
- &ett_idmp_fragment,
- &ett_idmp_fragments,
+ /* List of subtrees */
+ static gint *ett[] = {
+ &ett_idmp,
+ &ett_idmp_fragment,
+ &ett_idmp_fragments,
/*--- Included file: packet-idmp-ettarr.c ---*/
#line 1 "../../asn1/idmp/packet-idmp-ettarr.c"
@@ -958,41 +957,41 @@ void proto_register_idmp(void) {
&ett_idmp_InvokeId,
/*--- End of included file: packet-idmp-ettarr.c ---*/
-#line 332 "../../asn1/idmp/packet-idmp-template.c"
- };
- module_t *idmp_module;
+#line 331 "../../asn1/idmp/packet-idmp-template.c"
+ };
+ module_t *idmp_module;
- /* Register protocol */
- proto_idmp = proto_register_protocol(PNAME, PSNAME, PFNAME);
+ /* Register protocol */
+ proto_idmp = proto_register_protocol(PNAME, PSNAME, PFNAME);
- /* Register fields and subtrees */
- proto_register_field_array(proto_idmp, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ /* Register fields and subtrees */
+ proto_register_field_array(proto_idmp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
- register_dissector("idmp", dissect_idmp_tcp, proto_idmp);
+ register_dissector("idmp", dissect_idmp_tcp, proto_idmp);
- register_init_routine (&idmp_reassemble_init);
+ register_init_routine (&idmp_reassemble_init);
- /* Register our configuration options for IDMP, particularly our port */
+ /* Register our configuration options for IDMP, particularly our port */
- idmp_module = prefs_register_protocol_subtree("OSI/X.500", proto_idmp, prefs_register_idmp);
+ idmp_module = prefs_register_protocol_subtree("OSI/X.500", proto_idmp, prefs_register_idmp);
- prefs_register_bool_preference(idmp_module, "desegment_idmp_messages",
- "Reassemble IDMP messages spanning multiple TCP segments",
- "Whether the IDMP dissector should reassemble messages spanning multiple TCP segments."
- " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
- &idmp_desegment);
+ prefs_register_bool_preference(idmp_module, "desegment_idmp_messages",
+ "Reassemble IDMP messages spanning multiple TCP segments",
+ "Whether the IDMP dissector should reassemble messages spanning multiple TCP segments."
+ " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
+ &idmp_desegment);
prefs_register_bool_preference(idmp_module, "reassemble",
- "Reassemble segmented IDMP datagrams",
- "Whether segmented IDMP datagrams should be reassembled."
- " To use this option, you must also enable"
- " \"Allow subdissectors to reassemble TCP streams\""
- " in the TCP protocol settings.", &idmp_reassemble);
+ "Reassemble segmented IDMP datagrams",
+ "Whether segmented IDMP datagrams should be reassembled."
+ " To use this option, you must also enable"
+ " \"Allow subdissectors to reassemble TCP streams\""
+ " in the TCP protocol settings.", &idmp_reassemble);
- prefs_register_uint_preference(idmp_module, "tcp.port", "IDMP TCP Port",
- "Set the port for Internet Directly Mapped Protocol requests/responses",
- 10, &global_idmp_tcp_port);
+ prefs_register_uint_preference(idmp_module, "tcp.port", "IDMP TCP Port",
+ "Set the port for Internet Directly Mapped Protocol requests/responses",
+ 10, &global_idmp_tcp_port);
}
@@ -1000,8 +999,8 @@ void proto_register_idmp(void) {
/*--- proto_reg_handoff_idm --- */
void proto_reg_handoff_idm(void) {
- /* remember the idm handler for change in preferences */
- idmp_handle = find_dissector(PFNAME);
+ /* remember the idm handler for change in preferences */
+ idmp_handle = find_dissector(PFNAME);
}
@@ -1010,15 +1009,15 @@ static void
prefs_register_idmp(void)
{
- /* de-register the old port */
- /* port 102 is registered by TPKT - don't undo this! */
- if(idmp_handle)
- dissector_delete_uint("tcp.port", tcp_port, idmp_handle);
+ /* de-register the old port */
+ /* port 102 is registered by TPKT - don't undo this! */
+ if(idmp_handle)
+ dissector_delete_uint("tcp.port", tcp_port, idmp_handle);
- /* Set our port number for future use */
- tcp_port = global_idmp_tcp_port;
+ /* Set our port number for future use */
+ tcp_port = global_idmp_tcp_port;
- if((tcp_port > 0) && idmp_handle)
- dissector_add_uint("tcp.port", global_idmp_tcp_port, idmp_handle);
+ if((tcp_port > 0) && idmp_handle)
+ dissector_add_uint("tcp.port", global_idmp_tcp_port, idmp_handle);
}
diff --git a/epan/dissectors/packet-ieee1722.c b/epan/dissectors/packet-ieee1722.c
index 68f7d04d86..94cec223cc 100644
--- a/epan/dissectors/packet-ieee1722.c
+++ b/epan/dissectors/packet-ieee1722.c
@@ -124,7 +124,7 @@ static void
dissect_1722(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_item *ti;
- proto_tree *ieee1722_tree;
+ proto_tree *ieee1722_tree = NULL;
proto_tree *audio_tree;
proto_tree *sample_tree;
gint offset;
@@ -151,17 +151,21 @@ dissect_1722(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(ieee1722_tree, hf_1722_svfield, tvb, IEEE_1722_VERSION_OFFSET, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(ieee1722_tree, hf_1722_verfield, tvb, IEEE_1722_VERSION_OFFSET, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(ieee1722_tree, hf_1722_mrfield, tvb, IEEE_1722_VERSION_OFFSET, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(ieee1722_tree, hf_1722_gvfield, tvb, IEEE_1722_VERSION_OFFSET, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(ieee1722_tree, hf_1722_tvfield, tvb, IEEE_1722_VERSION_OFFSET, 1, ENC_BIG_ENDIAN);
+ }
+
- /* Version field ends the common AVTPDU. Now parse the specfic packet type */
- subtype = tvb_get_guint8(tvb, IEEE_1722_CD_OFFSET);
- subtype &= 0x7F;
+ /* Version field ends the common AVTPDU. Now parse the specfic packet type */
+ subtype = tvb_get_guint8(tvb, IEEE_1722_CD_OFFSET);
+ subtype &= 0x7F;
- /* call subtype dissectors for 1722.1 */
- if (dissector_try_uint(avb_dissector_table, subtype, tvb, pinfo, tree)) return;
+ /* call any registered subtype dissectors which use only the common AVTPDU (e.g. 1722.1 and MAAP) */
+ if (dissector_try_uint(avb_dissector_table, subtype, tvb, pinfo, tree)) return;
+ if (tree) {
+ proto_tree_add_item(ieee1722_tree, hf_1722_mrfield, tvb, IEEE_1722_VERSION_OFFSET, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ieee1722_tree, hf_1722_gvfield, tvb, IEEE_1722_VERSION_OFFSET, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ieee1722_tree, hf_1722_tvfield, tvb, IEEE_1722_VERSION_OFFSET, 1, ENC_BIG_ENDIAN);
+
/* Add the rest of the packet fields */
proto_tree_add_item(ieee1722_tree, hf_1722_seqnum, tvb,
IEEE_1722_SEQ_NUM_OFFSET, 1, ENC_BIG_ENDIAN);
diff --git a/epan/dissectors/packet-ieee17221.c b/epan/dissectors/packet-ieee17221.c
index d17f0c57ce..723f37f348 100644
--- a/epan/dissectors/packet-ieee17221.c
+++ b/epan/dissectors/packet-ieee17221.c
@@ -147,7 +147,7 @@
#define ACMP_CD_OFFSET 0
#define ACMP_VERSION_OFFSET 1
#define ACMP_STATUS_FIELD_OFFSET 2
-#define ACMP_CD_LENGTH_OFFSET 3
+#define ACMP_CD_LENGTH_OFFSET 2
#define ACMP_STREAM_ID_OFFSET 4
#define ACMP_CONTROLLER_GUID_OFFSET 12
#define ACMP_TALKER_GUID_OFFSET 20
@@ -162,9 +162,9 @@
/* Bit Field Masks */
-#define ACMP_MSG_TYPE_MASK 0x0f
-#define ACMP_STATUS_FIELD_MASK 0xf8
-#define ACMP_CD_LENGTH_MASK 0x07ff
+#define ACMP_MSG_TYPE_MASK 0x0F
+#define ACMP_STATUS_FIELD_MASK 0xF8
+#define ACMP_CD_LENGTH_MASK 0x07FF
/* message_type */
@@ -211,6 +211,7 @@
/******************************************************************************/
/* 1722.1 AECP Offsets */
+#define AECP_STATUS_CODE_OFFSET 2
#define AECP_VERSION_OFFSET 1
#define AECP_TARGET_GUID_OFFSET 4
@@ -932,6 +933,7 @@
#define AEM_OFFSET_COLOR_SPACE 7
/* Bitmasks */
+#define AECP_STATUS_CODE_MASK 0xf8
#define AECP_TOKEN_LENGTH_MASK 0x07ff
#define AECP_KEY_PART_MASK 0x78
#define AECP_CONTINUED_MASK 0x80
@@ -1328,16 +1330,16 @@ static const value_string aem_descriptor_type_vals[] = {
};
static const value_string aem_status_type_vals[] = {
- {AEM_STATUS_SUCCESS , "AEM_SUCCESS"},
- {AEM_STATUS_NOT_IMPLEMENTED , "AEM_NOT_IMPLEMENTED"},
- {AEM_STATUS_NO_SUCH_DESCRIPTOR , "AEM_NO_SUCH_DESCRIPTOR"},
- {AEM_STATUS_ENTITY_LOCKED , "AEM_ENTITY_LOCKED"},
- {AEM_STATUS_ENTITY_ACQUIRED , "AEM_ENTITY_ACQUIRED"},
- {AEM_STATUS_NOT_AUTHORIZED , "AEM_NOT_AUTHORIZED"},
- {AEM_STATUS_INSUFFICIENT_PRIVILEGES, "AEM_INSUFFICIENT_PRIVILEGES"},
- {AEM_STATUS_BAD_ARGUMENTS , "AEM_BAD_ARGUMENTS"},
- {AEM_STATUS_NO_RESOURCES , "AEM_NO_RESOURCES"},
- {AEM_STATUS_IN_PROGRESS , "AEM_IN_PROGRESS"},
+ {AEM_STATUS_SUCCESS , "SUCCESS"},
+ {AEM_STATUS_NOT_IMPLEMENTED , "NOT_IMPLEMENTED"},
+ {AEM_STATUS_NO_SUCH_DESCRIPTOR , "NO_SUCH_DESCRIPTOR"},
+ {AEM_STATUS_ENTITY_LOCKED , "ENTITY_LOCKED"},
+ {AEM_STATUS_ENTITY_ACQUIRED , "ENTITY_ACQUIRED"},
+ {AEM_STATUS_NOT_AUTHORIZED , "NOT_AUTHORIZED"},
+ {AEM_STATUS_INSUFFICIENT_PRIVILEGES, "INSUFFICIENT_PRIVILEGES"},
+ {AEM_STATUS_BAD_ARGUMENTS , "BAD_ARGUMENTS"},
+ {AEM_STATUS_NO_RESOURCES , "NO_RESOURCES"},
+ {AEM_STATUS_IN_PROGRESS , "IN_PROGRESS"},
{0 , NULL}
};
@@ -1572,7 +1574,6 @@ static int hf_aecp_control_user_l3 = -1;
static int hf_aecp_control_user_l4 = -1;
static int hf_aecp_controller_guid = -1;
static int hf_aecp_count = -1;
-static int hf_aecp_default_format_valid_flag = -1;
static int hf_aecp_descriptor_id = -1;
static int hf_aecp_descriptor_type = -1;
static int hf_aecp_descriptors = -1;
@@ -1602,12 +1603,10 @@ static int hf_aecp_gtpt_locked_valid = -1;
static int hf_aecp_ipv4_address = -1;
static int hf_aecp_ipv6_address = -1;
static int hf_aecp_key = -1;
-static int hf_aecp_key_count = -1;
static int hf_aecp_key_guid = -1;
static int hf_aecp_key_length = -1;
static int hf_aecp_key_number = -1;
static int hf_aecp_key_part = -1;
-static int hf_aecp_key_permissions = -1;
static int hf_aecp_keychain_id = -1;
static int hf_aecp_keytype = -1;
static int hf_aecp_locked_guid = -1;
@@ -1667,10 +1666,6 @@ static int hf_aecp_seq_num_mismatch_valid = -1;
static int hf_aecp_sequence_id = -1;
static int hf_aecp_signal_id = -1;
static int hf_aecp_signal_type = -1;
-static int hf_aecp_signature = -1;
-static int hf_aecp_signature_id = -1;
-static int hf_aecp_signature_info = -1;
-static int hf_aecp_signature_length = -1;
static int hf_aecp_srp_latency_violations = -1;
static int hf_aecp_srp_latency_violations_valid = -1;
static int hf_aecp_srp_refused = -1;
@@ -1693,7 +1688,7 @@ static int hf_aecp_unsupported_formats = -1;
static int hf_aecp_unsupported_formats_valid = -1;
static int hf_aecp_values = -1;
static int hf_aecp_values_count = -1;
-static int hf_aecp_values_list = -1;
+static int hf_aecp_status_code = -1;
/* ***************************************************************** */
/* AVDECC Entity Model (AEM) */
@@ -1733,7 +1728,6 @@ static int hf_aem_blob_size = -1;
static int hf_aem_block_latency = -1;
static int hf_aem_bpp = -1;
static int hf_aem_channel_count = -1;
-static int hf_aem_channel_format = -1;
static int hf_aem_channels = -1;
static int hf_aem_clock_source_flags = -1;
static int hf_aem_clock_source_id = -1;
@@ -1776,14 +1770,12 @@ static int hf_aem_ctrl_uint64 = -1;
static int hf_aem_ctrl_uint8 = -1;
static int hf_aem_ctrl_vals = -1;
static int hf_aem_current_configuration = -1;
-static int hf_aem_current_format = -1;
static int hf_aem_current_sample_rate = -1;
static int hf_aem_current_signal_id = -1;
static int hf_aem_current_signal_type = -1;
static int hf_aem_dbs = -1;
static int hf_aem_default_signal_id = -1;
static int hf_aem_default_signal_type = -1;
-static int hf_aem_descriptor_counts = -1;
static int hf_aem_descriptor_counts_count = -1;
static int hf_aem_descriptor_counts_offset = -1;
static int hf_aem_div = -1;
@@ -1888,8 +1880,6 @@ static int hf_aem_stream_name = -1;
static int hf_aem_stream_name_string = -1;
static int hf_aem_string = -1;
static int hf_aem_string_ref = -1;
-static int hf_aem_subtype = -1;
-static int hf_aem_supported_sample_rate = -1;
static int hf_aem_target_descriptor_id = -1;
static int hf_aem_target_descriptor_type = -1;
static int hf_aem_unit = -1;
@@ -2340,7 +2330,7 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
guint32 mr_offset;
guint16 mr_counter;
- gdouble frequency;
+ gfloat frequency;
gint freq_mult;
gint base_freq;
@@ -2547,9 +2537,9 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
mr_item = proto_tree_add_item(aem_tree, hf_aem_sample_rates, tvb,
0, 0, ENC_NA);
mr_counter = tvb_get_ntohs(tvb, AUDIO_UNIT_OFFSET_SAMPLE_RATES_COUNT);
- mr_subtree = proto_item_add_subtree(mr_item, ett_aem_sample_rates);;
+ mr_subtree = proto_item_add_subtree(mr_item, ett_aem_sample_rates);
mr_offset = AUDIO_UNIT_OFFSET_SAMPLE_RATES;
-
+ proto_item_set_len(mr_item, 4 * mr_counter);
/* loop to get the array values */
for(i = 0; i < mr_counter; ++i) {
proto_tree_add_item(mr_subtree, hf_aem_pull_field, tvb,
@@ -2564,13 +2554,13 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
base_freq &= 0x1fffffff;
/* replace this with something not horrible */
frequency = freq_mult == 0 ? 1 :
- freq_mult == 1 ? 1 / 1.001 :
- freq_mult == 2 ? 1.001 :
+ freq_mult == 1 ? 1 / (gfloat)1.001 :
+ freq_mult == 2 ? (gfloat)1.001 :
freq_mult == 3 ? 24 / 25 :
freq_mult == 4 ? 54 / 24 : 0;
frequency *= base_freq;
- proto_tree_add_double(mr_subtree, hf_aem_frequency, tvb, mr_offset, 4, frequency);
+ proto_tree_add_float(mr_subtree, hf_aem_frequency, tvb, mr_offset, 4, frequency);
mr_offset += 4;
}
@@ -2681,6 +2671,7 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_stream_formats);
mr_counter = tvb_get_ntohs(tvb, AEM_OFFSET_NUMBER_OF_FORMATS);
mr_offset = AEM_OFFSET_FORMATS;
+ proto_item_set_len(mr_item, mr_counter * 8);
for(i = 0; i < mr_counter; ++i) {
next_tvb = tvb_new_subset(tvb, mr_offset, 8, 8);
@@ -2902,6 +2893,7 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_mappings);
mr_offset = AEM_OFFSET_MAPPINGS;
mr_counter = tvb_get_ntohs(tvb, AEM_OFFSET_NUMBER_OF_MAPPINGS);
+ proto_item_set_len(mr_item, mr_counter * 6);
for(i = 0; i < mr_counter; ++i) {
proto_tree_add_item(mr_subtree, hf_aem_mapping_stream_index, tvb,
@@ -3001,6 +2993,7 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_sources);
mr_counter = tvb_get_ntohs(tvb, AEM_OFFSET_NUMBER_OF_SOURCES_SIGS);
mr_offset = SIGNAL_SELECTOR_OFFSET_SOURCES;
+ proto_item_set_len(mr_item, mr_counter * 4);
for(i = 0; i < mr_counter; ++i) {
proto_tree_add_item(mr_subtree, hf_aem_signal_type, tvb,
@@ -3033,7 +3026,7 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
MIXER_OFFSET_BLOCK_LATENCY, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_control_latency, tvb,
- MIXER_OFFSET_CONTROL_LATENCY, 2, ENC_BIG_ENDIAN);
+ MIXER_OFFSET_CONTROL_LATENCY, 4, ENC_BIG_ENDIAN);
/* set up subtree for sources */
mr_item = proto_tree_add_item(aem_tree, hf_aem_sources, tvb,
@@ -3041,6 +3034,7 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_sources);
mr_counter = tvb_get_ntohs(tvb, AEM_OFFSET_NUMBER_OF_SOURCES_MXR);
mr_offset = MIXER_OFFSET_SOURCES;
+ proto_item_set_len(mr_item, mr_counter * 4);
for(i = 0; i < mr_counter; ++i) {
proto_tree_add_item(mr_subtree, hf_aem_signal_type, tvb,
@@ -3127,6 +3121,7 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_sources);
mr_counter = tvb_get_ntohs(tvb, MATRIX_SIGNAL_OFFSET_SIGNALS_COUNT);
mr_offset = MATRIX_SIGNAL_OFFSET_SIGNALS_OFFSET;
+ proto_item_set_len(mr_item, mr_counter * 4);
for(i = 0; i < mr_counter; ++i) {
proto_tree_add_item(mr_subtree, hf_aem_signal_type, tvb,
@@ -3185,8 +3180,12 @@ dissect_17221_aecp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *aecp_tree)
/* AEM Common Format Fields */
proto_tree_add_item(aecp_tree, hf_aecp_message_type, tvb,
AECP_VERSION_OFFSET, 1, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(aecp_tree, hf_aecp_status_code, tvb,
+ AECP_STATUS_CODE_OFFSET, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_cd_length, tvb,
AECP_CD_LENGTH_OFFSET, 2, ENC_BIG_ENDIAN);
+
proto_tree_add_item(aecp_tree, hf_aecp_target_guid, tvb,
AECP_TARGET_GUID_OFFSET, 8, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_controller_guid, tvb,
@@ -3330,7 +3329,7 @@ dissect_17221_aecp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *aecp_tree)
proto_tree_add_item(aecp_tree, hf_aecp_matrix_value_count, tvb,
AECP_MATRIX_VALUE_COUNT_OFFSET, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_matrix_item_offset, tvb,
- AECP_MATRIX_ITEM_OFFSET_OFFSET, 3, ENC_BIG_ENDIAN);
+ AECP_MATRIX_ITEM_OFFSET_OFFSET, 2, ENC_BIG_ENDIAN);
if (mess_type == AECP_AEM_RESPONSE_MESSAGE) {
proto_tree_add_item(aecp_tree, hf_aecp_matrix_affected_item_count, tvb,
@@ -3435,6 +3434,7 @@ dissect_17221_aecp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *aecp_tree)
AECP_NAME_INDEX_OFFSET, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_name, tvb,
AECP_NAME_OFFSET, 64, ENC_ASCII|ENC_NA);
+ break;
case AECP_COMMAND_GET_NAME:
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
@@ -3991,7 +3991,7 @@ dissect_17221_acmp(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *acmp_tree)
proto_tree_add_item(acmp_tree, hf_acmp_message_type, tvb, ACMP_VERSION_OFFSET, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(acmp_tree, hf_acmp_status_field, tvb, ACMP_STATUS_FIELD_OFFSET, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(acmp_tree, hf_acmp_cd_length, tvb, ACMP_CD_LENGTH_OFFSET, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(acmp_tree, hf_acmp_cd_length, tvb, ACMP_CD_LENGTH_OFFSET, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(acmp_tree, hf_acmp_stream_id, tvb, ACMP_STREAM_ID_OFFSET, 8, ENC_BIG_ENDIAN);
proto_tree_add_item(acmp_tree, hf_acmp_controller_guid, tvb, ACMP_CONTROLLER_GUID_OFFSET, 8, ENC_BIG_ENDIAN);
proto_tree_add_item(acmp_tree, hf_acmp_talker_guid, tvb, ACMP_TALKER_GUID_OFFSET, 8, ENC_BIG_ENDIAN);
@@ -4418,19 +4418,19 @@ proto_register_17221(void)
/* ACMP Flags Begin */
{ &hf_acmp_flags_class_b,
{ "CLASS_B", "ieee17221.flags.class_b",
- FT_BOOLEAN, 8, NULL, ACMP_FLAG_CLASS_B_BITMASK, NULL, HFILL }
+ FT_BOOLEAN, 16, NULL, ACMP_FLAG_CLASS_B_BITMASK, NULL, HFILL }
},
{ &hf_acmp_flags_fast_connect,
{ "FAST_CONNECT", "ieee17221.flags.fast_connect",
- FT_BOOLEAN, 8, NULL, ACMP_FLAG_FAST_CONNECT_BITMASK, NULL, HFILL }
+ FT_BOOLEAN, 16, NULL, ACMP_FLAG_FAST_CONNECT_BITMASK, NULL, HFILL }
},
{ &hf_acmp_flags_saved_state,
{ "SAVED_STATE", "ieee17221.flags.saved_state",
- FT_BOOLEAN, 8, NULL, ACMP_FLAG_SAVED_STATE_BITMASK, NULL, HFILL }
+ FT_BOOLEAN, 16, NULL, ACMP_FLAG_SAVED_STATE_BITMASK, NULL, HFILL }
},
{ &hf_acmp_flags_streaming_wait,
{ "STREAMING_WAIT", "ieee17221.flags.streaming_wait",
- FT_BOOLEAN, 8, NULL, ACMP_FLAG_STREAMING_WAIT_BITMASK, NULL, HFILL }
+ FT_BOOLEAN, 16, NULL, ACMP_FLAG_STREAMING_WAIT_BITMASK, NULL, HFILL }
},
/* ACMP Flags End */
{ &hf_acmp_default_format,
@@ -4606,10 +4606,6 @@ proto_register_17221(void)
{"Dest MAC Valid Flag", "ieee17221.flags.dest_mac_valid",
FT_BOOLEAN, 32, NULL, AECP_DEST_MAC_VALID_FLAG_MASK, NULL, HFILL }
},
- { &hf_aecp_default_format_valid_flag,
- {"Default Format Valid Flag", "ieee17221.flags.default_format_valid",
- FT_BOOLEAN, 32, NULL, AECP_DEFAULT_FORMAT_VALID_FLAG_MASK, NULL, HFILL }
- },
/* SET_NAME / GET_NAME */
{ &hf_aecp_name_index,
@@ -4653,22 +4649,6 @@ proto_register_17221(void)
{"Key Length", "ieee17221.key_length",
FT_UINT16, BASE_DEC, NULL, AECP_KEY_LENGTH_MASK, NULL, HFILL }
},
- { &hf_aecp_signature_info,
- {"Signature Info", "ieee17221.signature_info",
- FT_UINT8, BASE_HEX, VALS(aecp_keychain_id_type_vals), AECP_SIGNATURE_INFO_MASK, NULL, HFILL }
- },
- { &hf_aecp_signature_id,
- {"Signature ID", "ieee17221.signature_id",
- FT_UINT16, BASE_HEX, NULL, AECP_SIGNATURE_ID_MASK, NULL, HFILL }
- },
- { &hf_aecp_signature_length,
- {"Signature Length", "ieee17221.signature_length",
- FT_UINT16, BASE_DEC, NULL, AECP_SIGNATURE_LENGTH_MASK, NULL, HFILL }
- },
- { &hf_aecp_key_permissions,
- {"Key Permissions", "ieee17221.key_permissions",
- FT_UINT32, BASE_HEX, NULL, 0x00, NULL, HFILL}
- },
{ &hf_aecp_private_key_read_flag,
{"Private Key Read Flag", "ieee17221.flags.private_key_read",
FT_BOOLEAN, 32, NULL, AECP_PRIVATE_KEY_READ_FLAG_MASK, NULL, HFILL }
@@ -4850,10 +4830,6 @@ proto_register_17221(void)
{"Key", "ieee17221.key",
FT_BYTES, BASE_NONE, NULL, 0x00, NULL, HFILL }
},
- { &hf_aecp_signature,
- {"Signature", "ieee17221.signature",
- FT_BYTES, BASE_NONE, NULL, 0x00, NULL, HFILL }
- },
{ &hf_aecp_auth_token,
{"Auth Token", "ieee17221.auth_token",
FT_BYTES, BASE_NONE, NULL, 0x00, NULL, HFILL }
@@ -5050,10 +5026,6 @@ proto_register_17221(void)
{"Values Count", "ieee17221.values_count",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
- { &hf_aecp_values_list,
- {"Values List", "ieee17221.values_list",
- FT_BYTES, BASE_NONE, NULL, 0x00, NULL, HFILL }
- },
/* START_OPERATION */
{ &hf_aecp_operation_id,
@@ -5078,10 +5050,6 @@ proto_register_17221(void)
},
/* AUTH_GET_KEY_COUNT */
- { &hf_aecp_key_count,
- {"Key Count", "ieee17221.key_count",
- FT_UINT16, BASE_DEC, NULL, AECP_KEY_COUNT_MASK, NULL, HFILL }
- },
/* * AVDECC ENTITY MODEL DESCRIPTOR FIELDS * */
@@ -5166,10 +5134,6 @@ proto_register_17221(void)
{"Descriptor Counts Offset", "ieee17221.descriptor_counts_offset",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
- { &hf_aem_descriptor_counts,
- {"Descriptor Counts", "ieee17221.descriptor_counts",
- FT_BYTES, BASE_NONE, NULL, 0x00, NULL, HFILL }
- },
{ &hf_aem_count,
{"Count", "ieee17221.count",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
@@ -5281,10 +5245,6 @@ proto_register_17221(void)
{"Sample Rates Count", "ieee17221.sample_rates_count",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
- { &hf_aem_supported_sample_rate,
- {"Supported Sample Rate", "ieee17221.supported_sample_rate",
- FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
- },
{ &hf_aem_sample_rates,
{"Sample Rates", "ieee17221.sample_rates",
FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL }
@@ -5333,10 +5293,6 @@ proto_register_17221(void)
{"Stream Channels", "ieee17221.stream_channels",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
- { &hf_aem_channel_format,
- {"Channel Format", "ieee17221.channel_format",
- FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
- },
{ &hf_aem_formats_offset,
{"Formats Offset", "ieee17221.formats_offset",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
@@ -5413,7 +5369,7 @@ proto_register_17221(void)
},
{ &hf_aem_flags_captive,
{"Captive Flag", "ieee17221.flags.captive",
- FT_BOOLEAN, 32, NULL, AEM_CAPTIVE_FLAG_MASK, NULL, HFILL }
+ FT_BOOLEAN, 16, NULL, AEM_CAPTIVE_FLAG_MASK, NULL, HFILL }
},
{ &hf_aem_jack_type,
{"Jack Type", "ieee17221.jack_type",
@@ -5455,10 +5411,6 @@ proto_register_17221(void)
},
/* VIDEO_PORT_INPUT */
/* VIDEO_PORT_OUTPUT */
- { &hf_aem_current_format,
- {"Current Format", "ieee17221.current_format",
- FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
- },
{ & hf_aem_stream_id,
{"Stream Descriptor ID", "ieee17221.stream_descriptor_id",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
@@ -5825,7 +5777,7 @@ proto_register_17221(void)
},
{ &hf_aem_frequency,
{"Frequency", "ieee17221.frequency",
- FT_DOUBLE, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ FT_FLOAT, BASE_NONE, NULL, 0x00, NULL, HFILL }
},
/* AEM MEDIA FORMAT FIELDS */
@@ -5834,7 +5786,7 @@ proto_register_17221(void)
*/
{ &hf_aem_oui24,
{"OUI-24", "ieee17221.oui24",
- FT_UINT32, BASE_HEX, NULL, AEM_MASK_OUI24, NULL, HFILL }
+ FT_UINT24, BASE_HEX, NULL, 0x00, NULL, HFILL }
},
{ &hf_aem_mfd_type,
{"MFD Type", "ieee17221.mfd_type",
@@ -5909,10 +5861,6 @@ proto_register_17221(void)
{"Version", "ieee17221.sf_version",
FT_UINT8, BASE_HEX, NULL, AEM_MASK_SF_VERSION, NULL, HFILL }
},
- { &hf_aem_subtype,
- {"Subtype", "ieee17221.sf_subtype",
- FT_UINT16, BASE_HEX, VALS(aem_stream_format_subtype_vals), AEM_MASK_SF_SUBTYPE, NULL, HFILL }
- },
{ &hf_aem_sf,
{"SF", "ieee17221.sf",
FT_BOOLEAN, 8, NULL, AEM_MASK_SF, NULL, HFILL }
@@ -5984,6 +5932,10 @@ proto_register_17221(void)
{ &hf_aecp_values,
{"Values", "ieee17221.values",
FT_BYTES, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_status_code,
+ {"Status", "ieee17221.status",
+ FT_UINT8, BASE_HEX, VALS(aem_status_type_vals), AECP_STATUS_CODE_MASK, NULL, HFILL }
}
/* END STREAM FORMAT (SF) FIELDS */
diff --git a/epan/dissectors/packet-ieee80211-airopeek.c b/epan/dissectors/packet-ieee80211-airopeek.c
new file mode 100644
index 0000000000..f9e0179712
--- /dev/null
+++ b/epan/dissectors/packet-ieee80211-airopeek.c
@@ -0,0 +1,141 @@
+/* packet-ieee80211-airopeek.c
+ * Routines for pre-V9 WildPackets AiroPeek header dissection
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <epan/packet.h>
+#include "packet-ieee80211.h"
+
+static dissector_handle_t ieee80211_handle;
+
+static int proto_airopeek = -1;
+
+static int hf_data_rate = -1;
+static int hf_channel = -1;
+static int hf_signal_strength = -1;
+
+static gint ett_airopeek = -1;
+
+static void
+dissect_airopeek(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ proto_tree *airopeek_tree = NULL;
+ proto_item *ti;
+ guint8 data_rate;
+ guint8 signal_level;
+ tvbuff_t *next_tvb;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "AiroPeek");
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ /* Dissect the header */
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_airopeek, tvb, 0, 4, ENC_NA);
+ airopeek_tree = proto_item_add_subtree(ti, ett_airopeek);
+ }
+
+ data_rate = tvb_get_guint8(tvb, 0);
+ /* Add the radio information to the column information */
+ col_add_fstr(pinfo->cinfo, COL_TX_RATE, "%u.%u",
+ data_rate / 2,
+ data_rate & 1 ? 5 : 0);
+ if (tree) {
+ proto_tree_add_uint64_format(airopeek_tree, hf_data_rate, tvb, 0, 1,
+ (guint64)data_rate * 500000,
+ "Data Rate: %u.%u Mb/s",
+ data_rate / 2,
+ data_rate & 1 ? 5 : 0);
+ }
+
+ if (tree)
+ proto_tree_add_item(airopeek_tree, hf_channel, tvb, 1, 1, ENC_NA);
+
+ signal_level = tvb_get_guint8(tvb, 2);
+ /* XX - this is a percentage, not a dBm or normalized or raw RSSI */
+ col_add_fstr(pinfo->cinfo, COL_RSSI, "%u", signal_level);
+ if (tree) {
+ proto_tree_add_uint_format(airopeek_tree, hf_signal_strength, tvb, 2, 1,
+ signal_level,
+ "Signal Strength: %u%%",
+ signal_level);
+ }
+
+ /* dissect the 802.11 header next */
+ pinfo->current_proto = "IEEE 802.11";
+ next_tvb = tvb_new_subset_remaining(tvb, 4);
+ call_dissector(ieee80211_handle, next_tvb, pinfo, tree);
+}
+
+void proto_register_ieee80211_airopeek(void)
+{
+ static hf_register_info hf[] = {
+ {&hf_data_rate,
+ {"Data Rate", "airopeek.data_rate", FT_UINT64, BASE_DEC, NULL, 0,
+ "Data rate (b/s)", HFILL }},
+
+ {&hf_channel,
+ {"Channel", "airopeek.channel", FT_UINT8, BASE_DEC, NULL, 0,
+ "802.11 channel number that this frame was sent/received on", HFILL }},
+
+ {&hf_signal_strength,
+ {"Signal Strength", "airopeek.signal_strength", FT_UINT8, BASE_DEC, NULL, 0,
+ "Signal strength (Percentage)", HFILL }}
+ };
+
+ static gint *tree_array[] = {
+ &ett_airopeek
+ };
+
+ proto_airopeek = proto_register_protocol("AiroPeek 802.11 radio information",
+ "AiroPeek",
+ "airopeek");
+ proto_register_field_array(proto_airopeek, hf, array_length(hf));
+ proto_register_subtree_array(tree_array, array_length(tree_array));
+}
+
+void proto_reg_handoff_ieee80211_airopeek(void)
+{
+ dissector_handle_t airopeek_handle;
+
+ /* Register handoff to airopeek-header dissectors */
+ airopeek_handle = create_dissector_handle(dissect_airopeek, proto_airopeek);
+ dissector_add_uint("wtap_encap", WTAP_ENCAP_IEEE_802_11_AIROPEEK,
+ airopeek_handle);
+ ieee80211_handle = find_dissector("wlan");
+}
+
+/*
+ * Editor modelines
+ *
+ * Local Variables:
+ * c-basic-offset: 2
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * ex: set shiftwidth=2 tabstop=8 expandtab:
+ * :indentSize=2:tabSize=8:noTabs=true:
+ */
diff --git a/epan/dissectors/packet-netmon-802_11.c b/epan/dissectors/packet-ieee80211-netmon.c
index 8296d144d6..47d71e0543 100644
--- a/epan/dissectors/packet-netmon-802_11.c
+++ b/epan/dissectors/packet-ieee80211-netmon.c
@@ -1,5 +1,5 @@
/*
- * packet-netmon-802_11.c
+ * packet-ieee80211-netmon.c
* Decode packets with a Network Monitor 802.11 radio header
*
* $Id$
@@ -162,7 +162,7 @@ dissect_netmon_802_11(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
- return offset;
+ /* no return */
skip:
offset = length;
@@ -239,5 +239,5 @@ proto_reg_handoff_netmon_802_11(void)
ieee80211_handle = find_dissector("wlan");
netmon_802_11_handle = new_create_dissector_handle(dissect_netmon_802_11,
proto_netmon_802_11);
- dissector_add_uint("wtap_encap", WTAP_ENCAP_IEEE802_11_NETMON_RADIO, netmon_802_11_handle);
+ dissector_add_uint("wtap_encap", WTAP_ENCAP_IEEE_802_11_NETMON, netmon_802_11_handle);
}
diff --git a/epan/dissectors/packet-ieee80211-prism.c b/epan/dissectors/packet-ieee80211-prism.c
index 810d073e50..fbc1168445 100644
--- a/epan/dissectors/packet-ieee80211-prism.c
+++ b/epan/dissectors/packet-ieee80211-prism.c
@@ -460,7 +460,7 @@ void proto_reg_handoff_ieee80211_prism(void)
dissector_handle_t prism_handle;
prism_handle = create_dissector_handle(dissect_prism, proto_prism);
- dissector_add_uint("wtap_encap", WTAP_ENCAP_PRISM_HEADER, prism_handle);
+ dissector_add_uint("wtap_encap", WTAP_ENCAP_IEEE_802_11_PRISM, prism_handle);
ieee80211_handle = find_dissector("wlan");
wlancap_handle = find_dissector("wlancap");
}
diff --git a/epan/dissectors/packet-radiotap-defs.h b/epan/dissectors/packet-ieee80211-radiotap-defs.h
index 68c017cb83..68c017cb83 100644
--- a/epan/dissectors/packet-radiotap-defs.h
+++ b/epan/dissectors/packet-ieee80211-radiotap-defs.h
diff --git a/epan/dissectors/packet-radiotap-iter.c b/epan/dissectors/packet-ieee80211-radiotap-iter.c
index edf22fe753..c24dd6d44a 100644
--- a/epan/dissectors/packet-radiotap-iter.c
+++ b/epan/dissectors/packet-ieee80211-radiotap-iter.c
@@ -26,7 +26,7 @@
#define get_unaligned_le16 pletohs
#define get_unaligned_le32 pletohl
-#include "packet-radiotap-iter.h"
+#include "packet-ieee80211-radiotap-iter.h"
/* function prototypes and related defs are in radiotap_iter.h */
diff --git a/epan/dissectors/packet-radiotap-iter.h b/epan/dissectors/packet-ieee80211-radiotap-iter.h
index 38dcfd9d72..34231fa7fb 100644
--- a/epan/dissectors/packet-radiotap-iter.h
+++ b/epan/dissectors/packet-ieee80211-radiotap-iter.h
@@ -22,7 +22,7 @@
#define RADIOTAP_SUPPORT_OVERRIDES
#include <glib.h>
-#include "packet-radiotap-defs.h"
+#include "packet-ieee80211-radiotap-defs.h"
/* Radiotap header iteration
* implemented in radiotap.c
diff --git a/epan/dissectors/packet-radiotap.c b/epan/dissectors/packet-ieee80211-radiotap.c
index 2a6fcd5ba2..3ec6efdfb3 100644
--- a/epan/dissectors/packet-radiotap.c
+++ b/epan/dissectors/packet-ieee80211-radiotap.c
@@ -1,5 +1,5 @@
/*
- * packet-radiotap.c
+ * packet-ieee80211-radiotap.c
* Decode packets with a Radiotap header
*
* $Id$
@@ -39,9 +39,9 @@
#include <epan/prefs.h>
#include <epan/addr_resolv.h>
#include "packet-ieee80211.h"
-#include "packet-radiotap.h"
-#include "packet-radiotap-iter.h"
-#include "packet-radiotap-defs.h"
+#include "packet-ieee80211-radiotap.h"
+#include "packet-ieee80211-radiotap-iter.h"
+#include "packet-ieee80211-radiotap-defs.h"
/* not officially defined (yet) */
#define IEEE80211_RADIOTAP_F_SHORTGI 0x80
@@ -565,7 +565,7 @@ static int hf_radiotap_present_dbm_antnoise = -1;
static int hf_radiotap_present_lock_quality = -1;
static int hf_radiotap_present_tx_attenuation = -1;
static int hf_radiotap_present_db_tx_attenuation = -1;
-static int hf_radiotap_present_dbm_tx_attenuation = -1;
+static int hf_radiotap_present_dbm_tx_power = -1;
static int hf_radiotap_present_antenna = -1;
static int hf_radiotap_present_db_antsignal = -1;
static int hf_radiotap_present_db_antnoise = -1;
@@ -833,13 +833,13 @@ void proto_register_radiotap(void)
HFILL}},
{&hf_radiotap_present_dbm_antsignal,
- {"DBM Antenna Signal", "radiotap.present.dbm_antsignal",
+ {"dBm Antenna Signal", "radiotap.present.dbm_antsignal",
FT_BOOLEAN, 32, NULL, RADIOTAP_MASK(DBM_ANTSIGNAL),
"Specifies if the antenna signal strength in dBm is present",
HFILL}},
{&hf_radiotap_present_dbm_antnoise,
- {"DBM Antenna Noise", "radiotap.present.dbm_antnoise",
+ {"dBm Antenna Noise", "radiotap.present.dbm_antnoise",
FT_BOOLEAN, 32, NULL, RADIOTAP_MASK(DBM_ANTNOISE),
"Specifies if the RF noise power at antenna field is present",
HFILL}},
@@ -852,19 +852,19 @@ void proto_register_radiotap(void)
{&hf_radiotap_present_tx_attenuation,
{"TX Attenuation", "radiotap.present.tx_attenuation",
FT_BOOLEAN, 32, NULL, RADIOTAP_MASK(TX_ATTENUATION),
- "Specifies if the transmit power from max power field is present",
+ "Specifies if the transmit power distance from max power field is present",
HFILL}},
{&hf_radiotap_present_db_tx_attenuation,
- {"DB TX Attenuation", "radiotap.present.db_tx_attenuation",
+ {"dB TX Attenuation", "radiotap.present.db_tx_attenuation",
FT_BOOLEAN, 32, NULL, RADIOTAP_MASK(DB_TX_ATTENUATION),
- "Specifies if the transmit power from max power (in dB) field is present",
+ "Specifies if the transmit power distance from max power (in dB) field is present",
HFILL}},
- {&hf_radiotap_present_dbm_tx_attenuation,
- {"DBM TX Attenuation", "radiotap.present.dbm_tx_attenuation",
- FT_BOOLEAN, 32, NULL, RADIOTAP_MASK(DB_TX_ATTENUATION),
- "Specifies if the transmit power from max power (in dBm) field is present",
+ {&hf_radiotap_present_dbm_tx_power,
+ {"dBm TX Power", "radiotap.present.dbm_tx_power",
+ FT_BOOLEAN, 32, NULL, RADIOTAP_MASK(DBM_TX_POWER),
+ "Specifies if the transmit power (in dBm) field is present",
HFILL}},
{&hf_radiotap_present_antenna,
@@ -873,13 +873,13 @@ void proto_register_radiotap(void)
"Specifies if the antenna number field is present", HFILL}},
{&hf_radiotap_present_db_antsignal,
- {"DB Antenna Signal", "radiotap.present.db_antsignal",
+ {"dB Antenna Signal", "radiotap.present.db_antsignal",
FT_BOOLEAN, 32, NULL, RADIOTAP_MASK(DB_ANTSIGNAL),
"Specifies if the RF signal power at antenna in dB field is present",
HFILL}},
{&hf_radiotap_present_db_antnoise,
- {"DB Antenna Noise", "radiotap.present.db_antnoise",
+ {"dB Antenna Noise", "radiotap.present.db_antnoise",
FT_BOOLEAN, 32, NULL, RADIOTAP_MASK(DB_ANTNOISE),
"Specifies if the RF signal power at antenna in dBm field is present",
HFILL}},
@@ -1338,6 +1338,7 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
guint8 version;
guint length;
guint32 rate, freq, flags;
+ proto_item *rate_ti;
gint8 dbm, db;
guint8 rflags = 0;
/* backward compat with bit 14 == fcs in header */
@@ -1481,7 +1482,7 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
hf_radiotap_present_db_tx_attenuation,
tvb, offset + 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree,
- hf_radiotap_present_dbm_tx_attenuation,
+ hf_radiotap_present_dbm_tx_power,
tvb, offset + 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree,
hf_radiotap_present_antenna, tvb,
@@ -2033,12 +2034,13 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
col_add_fstr(pinfo->cinfo, COL_TX_RATE, "%.1f",
ieee80211_float_htrates[mcs][bandwidth][gi_length]);
if (tree) {
- proto_tree_add_float_format(radiotap_tree,
- hf_radiotap_datarate,
- tvb, offset, 1,
- ieee80211_float_htrates[mcs][bandwidth][gi_length],
- "Data Rate: %.1f Mb/s",
- ieee80211_float_htrates[mcs][bandwidth][gi_length]);
+ rate_ti = proto_tree_add_float_format(radiotap_tree,
+ hf_radiotap_datarate,
+ tvb, offset, 3,
+ ieee80211_float_htrates[mcs][bandwidth][gi_length],
+ "Data Rate: %.1f Mb/s",
+ ieee80211_float_htrates[mcs][bandwidth][gi_length]);
+ PROTO_ITEM_SET_GENERATED(rate_ti);
}
}
break;
@@ -2117,7 +2119,7 @@ void proto_reg_handoff_radiotap(void)
radiotap_handle = find_dissector("radiotap");
- dissector_add_uint("wtap_encap", WTAP_ENCAP_IEEE_802_11_WLAN_RADIOTAP,
+ dissector_add_uint("wtap_encap", WTAP_ENCAP_IEEE_802_11_RADIOTAP,
radiotap_handle);
}
diff --git a/epan/dissectors/packet-radiotap.h b/epan/dissectors/packet-ieee80211-radiotap.h
index 914c7b7cf0..da2dde7899 100644
--- a/epan/dissectors/packet-radiotap.h
+++ b/epan/dissectors/packet-ieee80211-radiotap.h
@@ -1,6 +1,6 @@
/*
- * packet-radiotap.h
- * Declarations for packet-radiotap.c
+ * packet-ieee80211-radiotap.h
+ * Declarations for packet-ieee80211-radiotap.c
*
* $Id$
*
diff --git a/epan/dissectors/packet-ieee80211-wlancap.c b/epan/dissectors/packet-ieee80211-wlancap.c
index 9c8e16613c..4aaf3faaea 100644
--- a/epan/dissectors/packet-ieee80211-wlancap.c
+++ b/epan/dissectors/packet-ieee80211-wlancap.c
@@ -654,7 +654,7 @@ void proto_register_ieee80211_wlancap(void)
register_dissector("wlancap", dissect_wlancap, proto_wlancap);
wlancap_handle = create_dissector_handle(dissect_wlancap, proto_wlancap);
- dissector_add_uint("wtap_encap", WTAP_ENCAP_IEEE_802_11_WLAN_AVS,
+ dissector_add_uint("wtap_encap", WTAP_ENCAP_IEEE_802_11_AVS,
wlancap_handle);
proto_register_subtree_array(tree_array, array_length(tree_array));
}
diff --git a/epan/dissectors/packet-ieee80211.c b/epan/dissectors/packet-ieee80211.c
index 7a875f8b62..c58cf243ca 100644
--- a/epan/dissectors/packet-ieee80211.c
+++ b/epan/dissectors/packet-ieee80211.c
@@ -1,7 +1,6 @@
/* packet-ieee80211.c
* Routines for Wireless LAN (IEEE 802.11) dissection
* Copyright 2000, Axis Communications AB
- * Inquiries/bugreports should be sent to Johan.Jorgensen@axis.com
*
* $Id$
*
@@ -9,8 +8,6 @@
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
- * Copied from README.developer
- *
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
@@ -98,7 +95,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
#include <string.h>
#include <math.h>
@@ -178,7 +174,7 @@ static guint num_wepkeys_uat = 0;
static void* uat_wep_key_record_copy_cb(void* n, const void* o, size_t siz _U_) {
uat_wep_key_record_t* new_key = (uat_wep_key_record_t *)n;
- const uat_wep_key_record_t* old_key = (uat_wep_key_record_t *)o;
+ const uat_wep_key_record_t* old_key = (const uat_wep_key_record_t *)o;
if (old_key->string) {
new_key->string = g_strdup(old_key->string);
@@ -429,7 +425,7 @@ int add_mimo_compressed_beamforming_feedback_report (proto_tree *tree, tvbuff_t
#define DATA_SHORT_HDR_LEN 24
#define DATA_LONG_HDR_LEN 30
-#define MGT_FRAME_HDR_LEN 24 /* Length of Managment frame-headers */
+#define MGT_FRAME_HDR_LEN 24 /* Length of Management frame-headers */
/*
* COMPOSE_FRAME_TYPE() values for management frames.
@@ -1515,14 +1511,6 @@ static int hf_ieee80211_reassembled_length = -1;
static int proto_wlan_mgt = -1;
-static int hf_ieee80211_chan_noc = -1;
-static int hf_ieee80211_chan_length = -1;
-static int hf_ieee80211_chan_content = -1;
-static int hf_ieee80211_chan_channel = -1;
-static int hf_ieee80211_chan_adapt = -1;
-static int hf_ieee80211_chan_rate = -1;
-static int hf_ieee80211_chan_tx_pow = -1;
-
/* ************************************************************************* */
/* Fixed fields found in mgt frames */
/* ************************************************************************* */
@@ -2005,6 +1993,7 @@ static int hf_ieee80211_ampduparam_reserved = -1;
static int hf_ieee80211_mcsset = -1;
static int hf_ieee80211_mcsset_vs = -1;
+static int hf_ieee80211_mcsset_rx_bitmask = -1;
static int hf_ieee80211_mcsset_rx_bitmask_0to7 = -1;
static int hf_ieee80211_mcsset_rx_bitmask_8to15 = -1;
static int hf_ieee80211_mcsset_rx_bitmask_16to23 = -1;
@@ -2078,6 +2067,9 @@ static int hf_ieee80211_ht_info_pco_phase = -1;
static int hf_ieee80211_ht_info_reserved_3 = -1;
/*** End: 802.11n D1.10 - HT Information IE ***/
+static int hf_ieee80211_tag_ap_channel_report_regulatory_class = -1;
+static int hf_ieee80211_tag_ap_channel_report_channel_list = -1;
+
static int hf_ieee80211_tag_secondary_channel_offset = -1;
static int hf_ieee80211_tag_power_constraint_local = -1;
@@ -2303,6 +2295,7 @@ static int hf_ieee80211_tag_roaming_consortium_oi2 = -1;
static int hf_ieee80211_tag_roaming_consortium_oi3 = -1;
/* 802.11n 7.3.2.48 */
+static int hf_ieee80211_hta_cc = -1;
static int hf_ieee80211_hta_cap = -1;
static int hf_ieee80211_hta_ext_chan_offset = -1;
static int hf_ieee80211_hta_rec_tx_width = -1;
@@ -3306,6 +3299,7 @@ get_tagged_parameter_tree (proto_tree * tree, tvbuff_t *tvb, int start, int size
size,
"Tagged parameters (%d bytes)",
size);
+ proto_item_set_len(tagged_fields, size);
return proto_item_add_subtree (tagged_fields, ett_tagged_parameters);
}
@@ -4421,9 +4415,11 @@ static guint
add_ff_mesh_control(proto_tree *tree, tvbuff_t *tvb, int offset)
{
int start = offset;
+ guint8 flags;
proto_tree_add_item(tree, hf_ieee80211_ff_mesh_flags, tvb, offset, 1,
ENC_LITTLE_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset);
offset++;
proto_tree_add_item(tree, hf_ieee80211_ff_mesh_ttl, tvb, offset, 1,
ENC_LITTLE_ENDIAN);
@@ -4432,7 +4428,7 @@ add_ff_mesh_control(proto_tree *tree, tvbuff_t *tvb, int offset)
ENC_LITTLE_ENDIAN);
offset += 4;
- switch (tvb_get_guint8(tvb, offset) & 0x03) {
+ switch (flags & 0x03) {
case 1:
proto_tree_add_item(tree, hf_ieee80211_ff_mesh_addr4, tvb, offset, 6,
ENC_NA);
@@ -6300,8 +6296,8 @@ dissect_vendor_ie_atheros(proto_item * item _U_, proto_tree * ietree,
default:
/* No default Action */
break;
- break;
} /* End switch(subtype) */
+ break;
default:
/* No default Action */
break;
@@ -6435,10 +6431,12 @@ static int dissect_qos_capability(proto_tree * tree, tvbuff_t * tvb, int offset,
/* 7.3.2.25 RSN information element */
static int
-dissect_rsn_ie(proto_tree * tree, tvbuff_t * tvb, int offset, guint32 tag_len)
+dissect_rsn_ie(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb,
+ int offset, guint32 tag_len)
{
proto_item *rsn_gcs_item, *rsn_pcs_item, *rsn_akms_item, *rsn_cap_item, *rsn_pmkid_item, *rsn_gmcs_item;
proto_item *rsn_sub_pcs_item, *rsn_sub_akms_item;
+ proto_item *rsn_pcs_count, *rsn_akms_count, *rsn_pmkid_count;
proto_tree *rsn_gcs_tree, *rsn_pcs_tree, *rsn_akms_tree, *rsn_cap_tree, *rsn_pmkid_tree, *rsn_gmcs_tree;
proto_tree *rsn_sub_pcs_tree, *rsn_sub_akms_tree;
guint16 pcs_count, akms_count, pmkid_count;
@@ -6463,10 +6461,16 @@ dissect_rsn_ie(proto_tree * tree, tvbuff_t * tvb, int offset, guint32 tag_len)
offset += 4;
/* 7.3.2.25.2 Pairwise Cipher suites */
- proto_tree_add_item(tree, hf_ieee80211_rsn_pcs_count, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ rsn_pcs_count = proto_tree_add_item(tree, hf_ieee80211_rsn_pcs_count, tvb, offset, 2, ENC_LITTLE_ENDIAN);
pcs_count = tvb_get_letohs(tvb, offset);
offset += 2;
+ if (offset + (pcs_count * 4) > tag_end)
+ {
+ expert_add_info_format(pinfo, rsn_pcs_count, PI_MALFORMED, PI_ERROR,
+ "Pairwise Cipher Suite Count too large, 4*%u > %d", pcs_count, tag_end - offset);
+ pcs_count = (tag_end - offset) / 4;
+ }
rsn_pcs_item = proto_tree_add_item(tree, hf_ieee80211_rsn_pcs_list, tvb, offset, pcs_count * 4, ENC_NA);
rsn_pcs_tree = proto_item_add_subtree(rsn_pcs_item, ett_rsn_pcs_tree);
@@ -6487,11 +6491,23 @@ dissect_rsn_ie(proto_tree * tree, tvbuff_t * tvb, int offset, guint32 tag_len)
offset += 4;
}
+ if(offset >= tag_end)
+ {
+ return offset;
+ }
+
/* 7.3.2.25.2 AKM suites */
- proto_tree_add_item(tree, hf_ieee80211_rsn_akms_count, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ rsn_akms_count = proto_tree_add_item(tree, hf_ieee80211_rsn_akms_count, tvb, offset, 2, ENC_LITTLE_ENDIAN);
akms_count = tvb_get_letohs(tvb, offset);
offset += 2;
+ if (offset + (akms_count * 4) > tag_end)
+ {
+ expert_add_info_format(pinfo, rsn_akms_count, PI_MALFORMED, PI_ERROR,
+ "Auth Key Management (AKM) Suite Count too large, 4*%u > %d", akms_count, tag_end - offset);
+ akms_count = (tag_end - offset) / 4;
+ }
+
rsn_akms_item = proto_tree_add_item(tree, hf_ieee80211_rsn_akms_list, tvb, offset, akms_count * 4, ENC_NA);
rsn_akms_tree = proto_item_add_subtree(rsn_akms_item, ett_rsn_akms_tree);
for(i = 1; i <= akms_count; i++)
@@ -6528,10 +6544,17 @@ dissect_rsn_ie(proto_tree * tree, tvbuff_t * tvb, int offset, guint32 tag_len)
return offset;
}
/* 7.3.2.25.4 PMKID */
- proto_tree_add_item(tree, hf_ieee80211_rsn_pmkid_count, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ rsn_pmkid_count = proto_tree_add_item(tree, hf_ieee80211_rsn_pmkid_count, tvb, offset, 2, ENC_LITTLE_ENDIAN);
pmkid_count = tvb_get_letohs(tvb, offset);
offset += 2;
+ if (offset + (pmkid_count * 16) > tag_end)
+ {
+ expert_add_info_format(pinfo, rsn_pmkid_count, PI_MALFORMED, PI_ERROR,
+ "PMKID Count too large, 16*%u > %d", pmkid_count, tag_end - offset);
+ pmkid_count = (tag_end - offset) / 16;
+ }
+
rsn_pmkid_item = proto_tree_add_item(tree, hf_ieee80211_rsn_pmkid_list, tvb, offset, pmkid_count * 16, ENC_NA);
rsn_pmkid_tree = proto_item_add_subtree(rsn_pmkid_item, ett_rsn_pmkid_tree);
for(i = 1; i <= pmkid_count; i++)
@@ -6830,11 +6853,10 @@ dissect_timeout_interval(proto_tree *tree, tvbuff_t *tvb, int offset,
offset + 1, 4, ENC_LITTLE_ENDIAN);
}
-static void
+static int
dissect_mcs_set(proto_tree *tree, tvbuff_t *tvb, int offset, gboolean basic, gboolean vs) {
proto_item *ti;
proto_tree *mcs_tree, *bit_tree;
- guint16 capability;
/* 16 byte Supported MCS set */
if(vs)
@@ -6849,8 +6871,7 @@ dissect_mcs_set(proto_tree *tree, tvbuff_t *tvb, int offset, gboolean basic, gbo
mcs_tree = proto_item_add_subtree(ti, ett_mcsset_tree);
/* Rx MCS Bitmask */
- ti = proto_tree_add_string(mcs_tree, hf_ieee80211_tag_interpretation, tvb, offset,
- 10, "Rx Modulation and Coding Scheme (One bit per modulation)");
+ ti = proto_tree_add_item(mcs_tree, hf_ieee80211_mcsset_rx_bitmask, tvb, offset, 10, ENC_NA);
bit_tree = proto_item_add_subtree(ti, ett_mcsbit_tree);
/* Bits 0 - 31 */
@@ -6858,116 +6879,110 @@ dissect_mcs_set(proto_tree *tree, tvbuff_t *tvb, int offset, gboolean basic, gbo
proto_tree_add_item(bit_tree, hf_ieee80211_mcsset_rx_bitmask_8to15, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(bit_tree, hf_ieee80211_mcsset_rx_bitmask_16to23, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(bit_tree, hf_ieee80211_mcsset_rx_bitmask_24to31, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
/* Bits 32 - 52 */
- proto_tree_add_item(bit_tree, hf_ieee80211_mcsset_rx_bitmask_32, tvb, offset + 4, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(bit_tree, hf_ieee80211_mcsset_rx_bitmask_33to38, tvb, offset + 4, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(bit_tree, hf_ieee80211_mcsset_rx_bitmask_39to52, tvb, offset + 4, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(bit_tree, hf_ieee80211_mcsset_rx_bitmask_32, tvb, offset , 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(bit_tree, hf_ieee80211_mcsset_rx_bitmask_33to38, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(bit_tree, hf_ieee80211_mcsset_rx_bitmask_39to52, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 2;
/* Bits 53 - 76 */
- proto_tree_add_item(bit_tree, hf_ieee80211_mcsset_rx_bitmask_53to76, tvb, offset + 6, 4, ENC_LITTLE_ENDIAN);
-
- capability = tvb_get_letohs (tvb, offset+10);
- proto_tree_add_uint_format(mcs_tree, hf_ieee80211_mcsset_highest_data_rate, tvb, offset + 10, 2,
- capability, "Highest Supported Data Rate: 0x%04X", capability);
- capability = tvb_get_letohs (tvb, offset+12);
- proto_tree_add_boolean(mcs_tree, hf_ieee80211_mcsset_tx_mcs_set_defined, tvb, offset + 12, 1,
- capability);
- proto_tree_add_boolean(mcs_tree, hf_ieee80211_mcsset_tx_rx_mcs_set_not_equal, tvb, offset + 12, 1,
- capability);
- proto_tree_add_uint(mcs_tree, hf_ieee80211_mcsset_tx_max_spatial_streams, tvb, offset + 12, 1,
- capability);
- proto_tree_add_boolean(mcs_tree, hf_ieee80211_mcsset_tx_unequal_modulation, tvb, offset + 12, 1,
- capability);
+ proto_tree_add_item(bit_tree, hf_ieee80211_mcsset_rx_bitmask_53to76, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(mcs_tree, hf_ieee80211_mcsset_highest_data_rate, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(mcs_tree, hf_ieee80211_mcsset_tx_mcs_set_defined, tvb, offset, 1,
+ ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mcs_tree, hf_ieee80211_mcsset_tx_rx_mcs_set_not_equal, tvb, offset, 1,
+ ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mcs_tree, hf_ieee80211_mcsset_tx_max_spatial_streams, tvb, offset, 1,
+ ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mcs_tree, hf_ieee80211_mcsset_tx_unequal_modulation, tvb, offset, 1,
+ ENC_LITTLE_ENDIAN);
+ offset += 1;
+
+ offset += 3;
+ return offset;
}
/* 802.11n D1.10 - HT Information IE */
-static void
-dissect_ht_info_ie_1_1(proto_tree * tree, tvbuff_t * tvb, int offset,
- guint32 tag_len)
+static int
+dissect_ht_info_ie_1_1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset,
+ guint32 tag_len, proto_item *ti_len)
{
proto_item *cap_item;
proto_tree *cap_tree;
- guint32 tag_val_init_off = 0;
- guint16 info = 0;
- tag_val_init_off = offset;
cap_tree = tree;
if (tag_len < 22) {
- proto_tree_add_string(tree, hf_ieee80211_tag_interpretation, tvb, offset, tag_len,
- "HT Information IE content length must be at least 22 bytes");
- return;
+ expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR,
+ "HT Information IE content length %u wrong, must be at least 22 bytes", tag_len);
+ return offset;
}
proto_tree_add_item(cap_tree, hf_ieee80211_ht_info_primary_channel, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
- info = tvb_get_guint8 (tvb, ++offset);
- cap_item = proto_tree_add_uint_format(tree, hf_ieee80211_ht_info_delimiter1, tvb,
- offset, 1, info,
- "HT Information Subset (1 of 3): 0x%02X", info);
+ cap_item = proto_tree_add_item(tree, hf_ieee80211_ht_info_delimiter1, tvb,
+ offset, 1, ENC_LITTLE_ENDIAN);
cap_tree = proto_item_add_subtree(cap_item, ett_ht_info_delimiter1_tree);
- proto_tree_add_uint(cap_tree, hf_ieee80211_ht_info_secondary_channel_offset, tvb, offset, 1,
- info);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_ht_info_channel_width, tvb, offset, 1,
- info);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_ht_info_rifs_mode, tvb, offset, 1,
- info);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_ht_info_psmp_stas_only, tvb, offset, 1,
- info);
- proto_tree_add_uint(cap_tree, hf_ieee80211_ht_info_service_interval_granularity, tvb, offset, 1,
- info);
-
- info = tvb_get_letohs (tvb, ++offset);
- cap_item = proto_tree_add_uint_format(tree, hf_ieee80211_ht_info_delimiter2, tvb,
- offset, 2, info,
- "HT Information Subset (2 of 3): 0x%04X", info);
- cap_tree = proto_item_add_subtree(cap_item, ett_ht_info_delimiter2_tree);
- proto_tree_add_uint(cap_tree, hf_ieee80211_ht_info_operating_mode, tvb, offset, 1,
- info);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_ht_info_non_greenfield_sta_present, tvb, offset, 1,
- info);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_ht_info_transmit_burst_limit, tvb, offset, 1,
- info);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_ht_info_obss_non_ht_stas_present, tvb, offset, 1,
- info);
- proto_tree_add_uint(cap_tree, hf_ieee80211_ht_info_reserved_1, tvb, offset, 2,
- info);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_info_secondary_channel_offset, tvb,
+ offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_info_channel_width, tvb,
+ offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_info_rifs_mode, tvb,
+ offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_info_psmp_stas_only, tvb,
+ offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_info_service_interval_granularity, tvb,
+ offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+ cap_item = proto_tree_add_item(tree, hf_ieee80211_ht_info_delimiter2, tvb,
+ offset, 2, ENC_LITTLE_ENDIAN);
+ cap_tree = proto_item_add_subtree(cap_item, ett_ht_info_delimiter2_tree);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_info_operating_mode, tvb,
+ offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_info_non_greenfield_sta_present, tvb,
+ offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_info_transmit_burst_limit, tvb,
+ offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_info_obss_non_ht_stas_present, tvb,
+ offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_info_reserved_1, tvb,
+ offset, 2, ENC_LITTLE_ENDIAN);
offset += 2;
- info = tvb_get_letohs (tvb, offset);
- cap_item = proto_tree_add_uint_format(tree, hf_ieee80211_ht_info_delimiter3, tvb,
- offset, 2, info,
- "HT Information Subset (3 of 3): 0x%04X", info);
- cap_tree = proto_item_add_subtree(cap_item, ett_ht_info_delimiter3_tree);
- proto_tree_add_uint(cap_tree, hf_ieee80211_ht_info_reserved_2, tvb, offset, 1,
- info);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_ht_info_dual_beacon, tvb, offset, 1,
- info);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_ht_info_dual_cts_protection, tvb, offset, 1,
- info);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_ht_info_secondary_beacon, tvb, offset+1, 1,
- info);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_ht_info_lsig_txop_protection_full_support, tvb, offset+1, 1,
- info);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_ht_info_pco_active, tvb, offset+1, 1,
- info);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_ht_info_pco_phase, tvb, offset+1, 1,
- info);
- proto_tree_add_uint(cap_tree, hf_ieee80211_ht_info_reserved_3, tvb, offset+1, 1,
- info);
- offset += 2;
- cap_tree = tree;
+ cap_item = proto_tree_add_item(tree, hf_ieee80211_ht_info_delimiter3, tvb,
+ offset, 2, ENC_LITTLE_ENDIAN);
+ cap_tree = proto_item_add_subtree(cap_item, ett_ht_info_delimiter3_tree);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_info_reserved_2, tvb,
+ offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_info_dual_beacon, tvb,
+ offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_info_dual_cts_protection, tvb,
+ offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_info_secondary_beacon, tvb,
+ offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_info_lsig_txop_protection_full_support, tvb,
+ offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_info_pco_active, tvb,
+ offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_info_pco_phase, tvb,
+ offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_info_reserved_3, tvb,
+ offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
- dissect_mcs_set(cap_tree, tvb, offset, TRUE, FALSE);
- offset += 16;
+ offset = dissect_mcs_set(tree, tvb, offset, TRUE, FALSE);
- if (tag_val_init_off - offset < tag_len){
- proto_tree_add_string(cap_tree, hf_ieee80211_tag_interpretation, tvb, offset,
- tag_len + tag_val_init_off - offset, "Unparsed Extra Data");
- }
+ return offset;
}
static const value_string time_adv_timing_capab_vals[] = {
@@ -7071,54 +7086,65 @@ static int dissect_time_zone(proto_tree *tree, tvbuff_t *tvb, int offset,
return offset + tag_len;
}
-static void secondary_channel_offset_ie(proto_tree * tree, tvbuff_t * tvb, int offset, guint32 tag_len)
+static int
+dissect_ap_channel_report(tvbuff_t *tvb, packet_info *pinfo,
+ proto_tree *tree, int offset, guint32 tag_len, proto_item *ti_len, int tag_end, proto_item *ti)
{
- int tag_offset;
-
- if (tag_len != 1)
- {
- proto_tree_add_text (tree, tvb, offset, tag_len, "Secondary Channel Offset: Error: Tag length must be at least 1 byte long");
- return;
+ if (tag_len < 1) {
+ expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR,
+ "AP Channel Report length %u wrong, must be > 1", tag_len);
+ return offset;
}
- tag_offset = offset;
- proto_tree_add_uint(tree, hf_ieee80211_tag_secondary_channel_offset, tvb, offset, 1, tvb_get_guint8 (tvb, offset));
+ proto_tree_add_item(tree, hf_ieee80211_tag_ap_channel_report_regulatory_class, tvb,
+ offset, 1, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(ti, ": Regulatory Class %u, Channel List :", tvb_get_guint8(tvb, offset) );
+ offset += 1;
- offset++;
- if ((tag_len - (offset-tag_offset)) > 0)
+ while(offset < tag_end)
{
- proto_tree_add_text (tree, tvb, offset, tag_len - (offset-tag_offset), "Unknown Data");
- return;
+ proto_tree_add_item(tree, hf_ieee80211_tag_ap_channel_report_channel_list, tvb, offset, 1, ENC_NA);
+ proto_item_append_text(ti, " %u,", tvb_get_guint8(tvb, offset) );
+ offset += 1;
}
+ return offset;
}
-
-static void
-dissect_ht_capability_ie(proto_tree * tree, tvbuff_t * tvb, int offset,
- guint32 tag_len, gboolean vs)
+static int
+dissect_secondary_channel_offset_ie(tvbuff_t *tvb, packet_info *pinfo,
+ proto_tree *tree, int offset, guint32 tag_len, proto_item *ti_len)
{
- proto_item *cap_item;
- proto_tree *cap_tree;
- guint16 capability;
- guint32 txbfcap;
- guint32 tag_val_off = 0;
- if (tag_val_off + 2 > tag_len) {
- proto_tree_add_string(tree, hf_ieee80211_tag_interpretation, tvb, offset, tag_len,
- "Not interpreted");
- return;
+ if (tag_len != 1) {
+ expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR,
+ "Secondary Channel Offset length %u wrong, must be = 1", tag_len);
+ return offset;
}
+ proto_tree_add_item(tree, hf_ieee80211_tag_secondary_channel_offset, tvb,
+ offset, 1, ENC_LITTLE_ENDIAN);
+
+ offset += 1;
+
+ return offset;
+}
+
+static int
+dissect_ht_capability_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset,
+ guint32 tag_len, proto_item *ti_len, gboolean vs )
+{
+ proto_item *cap_item, *ti;
+ proto_tree *cap_tree;
+
if (tag_len != 26) {
- proto_tree_add_string(tree, hf_ieee80211_tag_interpretation, tvb, offset, tag_len,
- "HT Capabilities IE content length must be exactly 26 bytes");
- return;
+ expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR,
+ "HT Capability IE length %u wrong, must be = 26", tag_len);
+ return offset;
}
if (wlan_ignore_draft_ht && vs)
- return;
+ return offset;
/* 2 byte HT Capabilities Info*/
- capability = tvb_get_letohs (tvb, offset);
if(vs)
{
cap_item = proto_tree_add_item(tree, hf_ieee80211_ht_vs_cap, tvb, offset, 2, ENC_LITTLE_ENDIAN);
@@ -7128,40 +7154,25 @@ dissect_ht_capability_ie(proto_tree * tree, tvbuff_t * tvb, int offset,
cap_item = proto_tree_add_item(tree, hf_ieee80211_ht_cap, tvb, offset, 2, ENC_LITTLE_ENDIAN);
}
cap_tree = proto_item_add_subtree(cap_item, ett_ht_cap_tree);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_ht_ldpc_coding, tvb, offset, 1,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_ht_chan_width, tvb, offset, 1,
- capability);
- proto_tree_add_uint(cap_tree, hf_ieee80211_ht_sm_pwsave, tvb, offset, 1,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_ht_green, tvb, offset, 1,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_ht_short20, tvb, offset, 1,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_ht_short40, tvb, offset, 1,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_ht_tx_stbc, tvb, offset, 1,
- capability);
- proto_tree_add_uint(cap_tree, hf_ieee80211_ht_rx_stbc, tvb, offset+1, 1,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_ht_delayed_block_ack, tvb, offset+1, 1,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_ht_max_amsdu, tvb, offset+1, 1,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_ht_dss_cck_40, tvb, offset+1, 1,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_ht_psmp, tvb, offset+1, 1,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_ht_40_mhz_intolerant, tvb, offset+1, 1,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_ht_l_sig, tvb, offset+1, 1,
- capability);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_ldpc_coding, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_chan_width, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_sm_pwsave, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_green, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_short20, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_short40, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_tx_stbc, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
- offset += 2;
- tag_val_off += 2;
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_rx_stbc, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_delayed_block_ack, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_max_amsdu, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_dss_cck_40, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_psmp, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_40_mhz_intolerant, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ht_l_sig, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
/* 1 byte A-MPDU Parameters */
- capability = tvb_get_guint8 (tvb, offset);
if(vs)
{
cap_item = proto_tree_add_item(tree, hf_ieee80211_ampduparam_vs, tvb, offset, 1, ENC_LITTLE_ENDIAN);
@@ -7170,22 +7181,17 @@ dissect_ht_capability_ie(proto_tree * tree, tvbuff_t * tvb, int offset,
cap_item = proto_tree_add_item(tree, hf_ieee80211_ampduparam, tvb, offset, 1, ENC_LITTLE_ENDIAN);
}
cap_tree = proto_item_add_subtree(cap_item, ett_ampduparam_tree);
- proto_tree_add_uint_format(cap_tree, hf_ieee80211_ampduparam_mpdu, tvb, offset, 1, capability,
- "%sMaximum Rx A-MPDU Length: %04.0f [Bytes]",
- decode_numeric_bitfield(capability, 0x03, 8, ""),
- pow(2,13+(capability & 0x3))-1);
- proto_tree_add_uint(cap_tree, hf_ieee80211_ampduparam_mpdu_start_spacing, tvb, offset, 1, capability);
- proto_tree_add_uint(cap_tree, hf_ieee80211_ampduparam_reserved, tvb, offset, 1, capability);
+ ti = proto_tree_add_item(cap_tree, hf_ieee80211_ampduparam_mpdu, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(ti, " (%04.0f[Bytes])",pow(2,13+(tvb_get_guint8(tvb, offset) & 0x3))-1);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ampduparam_mpdu_start_spacing, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_ampduparam_reserved, tvb, offset, 1, ENC_LITTLE_ENDIAN);
offset += 1;
- tag_val_off += 1;
/* 16 byte MCS set */
- dissect_mcs_set(tree, tvb, offset, FALSE, vs);
- offset += 16;
- tag_val_off += 16;
+ offset = dissect_mcs_set(tree, tvb, offset, FALSE, vs);
+
/* 2 byte HT Extended Capabilities */
- capability = tvb_get_letohs (tvb, offset);
if(vs)
{
cap_item = proto_tree_add_item(tree, hf_ieee80211_htex_vs_cap, tvb, offset, 2, ENC_LITTLE_ENDIAN);
@@ -7193,22 +7199,16 @@ dissect_ht_capability_ie(proto_tree * tree, tvbuff_t * tvb, int offset,
cap_item = proto_tree_add_item(tree, hf_ieee80211_htex_cap, tvb, offset, 2, ENC_LITTLE_ENDIAN);
}
cap_tree = proto_item_add_subtree(cap_item, ett_htex_cap_tree);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_htex_pco, tvb, offset, 1,
- capability);
- proto_tree_add_uint(cap_tree, hf_ieee80211_htex_transtime, tvb, offset, 1,
- capability);
- proto_tree_add_uint(cap_tree, hf_ieee80211_htex_mcs, tvb, offset+1, 1,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_htex_htc_support, tvb, offset+1, 1,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_htex_rd_responder, tvb, offset+1, 1,
- capability);
+ proto_tree_add_item(cap_tree, hf_ieee80211_htex_pco, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_htex_transtime, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(cap_tree, hf_ieee80211_htex_mcs, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_htex_htc_support, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_htex_rd_responder, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
- offset += 2;
- tag_val_off += 2;
/* 4 byte TxBF capabilities */
- txbfcap = tvb_get_letohl (tvb, offset);
if(vs)
{
cap_item = proto_tree_add_item(tree, hf_ieee80211_txbf_vs, tvb, offset, 4, ENC_LITTLE_ENDIAN);
@@ -7216,52 +7216,35 @@ dissect_ht_capability_ie(proto_tree * tree, tvbuff_t * tvb, int offset,
cap_item = proto_tree_add_item(tree, hf_ieee80211_txbf, tvb, offset, 4, ENC_LITTLE_ENDIAN);
}
cap_tree = proto_item_add_subtree(cap_item, ett_txbf_tree);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_txbf_cap, tvb, offset, 1,
- txbfcap);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_txbf_rcv_ssc, tvb, offset, 1,
- txbfcap);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_txbf_tx_ssc, tvb, offset, 1,
- txbfcap);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_txbf_rcv_ndp, tvb, offset, 1,
- txbfcap);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_txbf_tx_ndp, tvb, offset, 1,
- txbfcap);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_txbf_impl_txbf, tvb, offset, 1,
- txbfcap);
- proto_tree_add_uint(cap_tree, hf_ieee80211_txbf_calib, tvb, offset, 1,
- txbfcap);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_txbf_expl_csi, tvb, offset+1, 1,
- txbfcap);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_txbf_expl_uncomp_fm, tvb, offset+1, 1,
- txbfcap);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_txbf_expl_comp_fm, tvb, offset+1, 1,
- txbfcap);
- proto_tree_add_uint(cap_tree, hf_ieee80211_txbf_expl_bf_csi, tvb, offset+1, 1,
- txbfcap);
- proto_tree_add_uint(cap_tree, hf_ieee80211_txbf_expl_uncomp_fm_feed, tvb, offset+1, 1,
- txbfcap);
- proto_tree_add_uint(cap_tree, hf_ieee80211_txbf_expl_comp_fm_feed, tvb, offset+1, 2,
- txbfcap);
- proto_tree_add_uint(cap_tree, hf_ieee80211_txbf_min_group, tvb, offset+2, 1,
- txbfcap);
- proto_tree_add_uint(cap_tree, hf_ieee80211_txbf_csi_num_bf_ant, tvb, offset+2, 1,
- txbfcap);
- proto_tree_add_uint(cap_tree, hf_ieee80211_txbf_uncomp_sm_bf_ant, tvb, offset+2, 1,
- txbfcap);
- proto_tree_add_uint(cap_tree, hf_ieee80211_txbf_comp_sm_bf_ant, tvb, offset+2, 2,
- txbfcap);
- proto_tree_add_uint(cap_tree, hf_ieee80211_txbf_csi_max_rows_bf, tvb, offset+3, 1,
- txbfcap);
- proto_tree_add_uint(cap_tree, hf_ieee80211_txbf_chan_est, tvb, offset+3, 1,
- txbfcap);
- proto_tree_add_uint(cap_tree, hf_ieee80211_txbf_resrv, tvb, offset+3, 1,
- txbfcap);
+ proto_tree_add_item(cap_tree, hf_ieee80211_txbf_cap, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_txbf_rcv_ssc, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_txbf_tx_ssc, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_txbf_rcv_ndp, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_txbf_tx_ndp, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_txbf_impl_txbf, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_txbf_calib, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset +=1;
+
+ proto_tree_add_item(cap_tree, hf_ieee80211_txbf_expl_csi, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_txbf_expl_uncomp_fm, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_txbf_expl_comp_fm, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_txbf_expl_bf_csi, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_txbf_expl_uncomp_fm_feed, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_txbf_expl_comp_fm_feed, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset +=1;
+
+ proto_tree_add_item(cap_tree, hf_ieee80211_txbf_min_group, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_txbf_csi_num_bf_ant, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_txbf_uncomp_sm_bf_ant, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_txbf_comp_sm_bf_ant, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 1;
- offset += 4;
- tag_val_off += 4;
+ proto_tree_add_item(cap_tree, hf_ieee80211_txbf_csi_max_rows_bf, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_txbf_chan_est, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_txbf_resrv, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
/* 1 byte Antenna Selection (ASEL) capabilities */
- capability = tvb_get_guint8 (tvb, offset);
if(vs)
{
cap_item = proto_tree_add_item(tree, hf_ieee80211_antsel_vs, tvb, offset, 1, ENC_LITTLE_ENDIAN);
@@ -7271,120 +7254,92 @@ dissect_ht_capability_ie(proto_tree * tree, tvbuff_t * tvb, int offset,
cap_item = proto_tree_add_item(tree, hf_ieee80211_antsel, tvb, offset, 1, ENC_LITTLE_ENDIAN);
}
cap_tree = proto_item_add_subtree(cap_item, ett_antsel_tree);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_antsel_b0, tvb, offset, 1,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_antsel_b1, tvb, offset, 1,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_antsel_b2, tvb, offset, 1,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_antsel_b3, tvb, offset, 1,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_antsel_b4, tvb, offset, 1,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_antsel_b5, tvb, offset, 1,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_antsel_b6, tvb, offset, 1,
- capability);
- proto_tree_add_uint(cap_tree, hf_ieee80211_antsel_b7, tvb, offset, 1,
- capability);
+ proto_tree_add_item(cap_tree, hf_ieee80211_antsel_b0, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_antsel_b1, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_antsel_b2, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_antsel_b3, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_antsel_b4, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_antsel_b5, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_antsel_b6, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_antsel_b7, tvb, offset, 1, ENC_LITTLE_ENDIAN);
offset += 1;
- tag_val_off += 1;
+
+ return offset;
}
-static void
-dissect_ht_info_ie_1_0(proto_tree * tree, tvbuff_t * tvb, int offset,
- guint32 tag_len)
+static int
+dissect_ht_info_ie_1_0(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset,
+ guint32 tag_len, proto_item *ti_len)
{
proto_item *cap_item;
proto_tree *cap_tree;
- guint16 capability;
- guint32 tag_val_off = 0;
- gchar out_buff[SHORT_STR];
- if (tag_val_off + 2 > tag_len) {
- proto_tree_add_string(tree, hf_ieee80211_tag_interpretation, tvb, offset, tag_len,
- "Not interpreted");
- return;
- }
-
- if (tag_len < 22) {
- proto_tree_add_string(tree, hf_ieee80211_tag_interpretation, tvb, offset, tag_len,
- "HT Additional Capabilities IE content length must be 22");
- return;
+ if (tag_len != 22) {
+ expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR,
+ "Tag length %u wrong, must be = 22", tag_len);
+ return offset;
}
if (wlan_ignore_draft_ht)
- return;
+ return offset;
- g_snprintf(out_buff, SHORT_STR, "Control Channel %d",
- tvb_get_guint8(tvb, offset));
- proto_tree_add_string(tree, hf_ieee80211_tag_interpretation, tvb, offset, 1, out_buff);
+ /* 1 HT Control Channel */
+ proto_tree_add_item(tree, hf_ieee80211_hta_cc, tvb, offset, 1, ENC_LITTLE_ENDIAN);
offset += 1;
- tag_val_off += 1;
/* 1 byte HT additional capabilities */
- capability = tvb_get_guint8 (tvb, offset);
- cap_item = proto_tree_add_uint_format(tree, hf_ieee80211_hta_cap, tvb,
- offset, 1, capability,
- "HT Additional Capabilities: 0x%04X", capability);
+ cap_item = proto_tree_add_item(tree, hf_ieee80211_hta_cap, tvb, offset, 1,
+ ENC_LITTLE_ENDIAN);
cap_tree = proto_item_add_subtree(cap_item, ett_hta_cap_tree);
- proto_tree_add_uint(cap_tree, hf_ieee80211_hta_ext_chan_offset, tvb, offset, 1,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_hta_rec_tx_width, tvb, offset, 1,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_hta_rifs_mode, tvb, offset, 1,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_hta_controlled_access, tvb, offset, 1,
- capability);
- proto_tree_add_uint(cap_tree, hf_ieee80211_hta_service_interval, tvb, offset, 1,
- capability);
+
+ proto_tree_add_item(cap_tree, hf_ieee80211_hta_ext_chan_offset, tvb, offset, 1,
+ ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_hta_rec_tx_width, tvb, offset, 1,
+ ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_hta_rifs_mode, tvb, offset, 1,
+ ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_hta_controlled_access, tvb, offset, 1,
+ ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_hta_service_interval, tvb, offset, 1,
+ ENC_LITTLE_ENDIAN);
offset += 1;
- tag_val_off += 1;
/* 2 byte HT additional capabilities */
- capability = tvb_get_letohs (tvb, offset);
- cap_item = proto_tree_add_uint_format(tree, hf_ieee80211_hta_cap, tvb,
- offset, 2, capability,
- "HT Additional Capabilities: 0x%04X", capability);
+ cap_item = proto_tree_add_item(tree, hf_ieee80211_hta_cap, tvb, offset, 2,
+ ENC_LITTLE_ENDIAN);
cap_tree = proto_item_add_subtree(cap_item, ett_hta_cap1_tree);
- proto_tree_add_uint(cap_tree, hf_ieee80211_hta_operating_mode, tvb, offset, 2,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_hta_non_gf_devices, tvb, offset, 2,
- capability);
+
+ proto_tree_add_item(cap_tree, hf_ieee80211_hta_operating_mode, tvb, offset, 2,
+ ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_hta_non_gf_devices, tvb, offset, 2,
+ ENC_LITTLE_ENDIAN);
offset += 2;
- tag_val_off += 2;
/* 2 byte HT additional capabilities */
- capability = tvb_get_letohs (tvb, offset);
- cap_item = proto_tree_add_uint_format(tree, hf_ieee80211_hta_cap, tvb,
- offset, 2, capability,
- "HT Additional Capabilities: 0x%04X", capability);
+ cap_item = proto_tree_add_item(tree, hf_ieee80211_hta_cap, tvb, offset, 2,
+ ENC_LITTLE_ENDIAN);
cap_tree = proto_item_add_subtree(cap_item, ett_hta_cap2_tree);
- proto_tree_add_uint(cap_tree, hf_ieee80211_hta_basic_stbc_mcs, tvb, offset, 2,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_hta_dual_stbc_protection, tvb, offset, 2,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_hta_secondary_beacon, tvb, offset, 2,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_hta_lsig_txop_protection, tvb, offset, 2,
- capability);
- proto_tree_add_boolean(cap_tree, hf_ieee80211_hta_pco_active, tvb, offset, 2,
- capability);
+
+ proto_tree_add_item(cap_tree, hf_ieee80211_hta_basic_stbc_mcs, tvb, offset, 2,
+ ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_hta_dual_stbc_protection, tvb, offset, 2,
+ ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_hta_secondary_beacon, tvb, offset, 2,
+ ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_hta_lsig_txop_protection, tvb, offset, 2,
+ ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cap_tree, hf_ieee80211_hta_pco_active, tvb, offset, 2,
+ ENC_LITTLE_ENDIAN);
proto_tree_add_boolean(cap_tree, hf_ieee80211_hta_pco_phase, tvb, offset, 2,
- capability);
+ ENC_LITTLE_ENDIAN);
offset += 2;
- tag_val_off += 2;
/* 16 byte Supported MCS set */
- dissect_mcs_set(tree, tvb, offset, FALSE, TRUE);
- offset += 16;
- tag_val_off += 16;
+ offset = dissect_mcs_set(tree, tvb, offset, FALSE, TRUE);
- if (tag_val_off < tag_len)
- proto_tree_add_string(tree, hf_ieee80211_tag_interpretation, tvb, offset,
- tag_len - tag_val_off, "Not interpreted");
+ return offset;
}
/* 802.11n-D1.10 and 802.11n-D2.0, 7.1.3.5a */
@@ -7521,29 +7476,29 @@ dissect_frame_control(proto_tree * tree, tvbuff_t * tvb, gboolean wlan_broken_fc
}
static void
-dissect_vendor_ie_ht(proto_item * item, proto_tree * tree, tvbuff_t * tag_tvb)
+dissect_vendor_ie_ht(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ guint offset, proto_item *item, proto_item *ti_len, gint tag_len)
{
- gint tag_len = tvb_length(tag_tvb);
- proto_tree_add_string(tree, hf_ieee80211_tag_interpretation, tag_tvb, 0, 3, "802.11n (Pre) OUI");
+ proto_tree_add_string(tree, hf_ieee80211_tag_interpretation, tvb, offset, 3, "802.11n (Pre) OUI");
/* 802.11n OUI Information Element */
- if (4 <= tag_len && !tvb_memeql(tag_tvb, 0, PRE_11N_OUI"\x33", 4)) {
- proto_tree_add_string(tree, hf_ieee80211_tag_interpretation, tag_tvb, 3, 1,"802.11n (Pre) HT information" );
+ if (4 <= tag_len && !tvb_memeql(tvb, offset, PRE_11N_OUI"\x33", 4)) {
+ proto_tree_add_string(tree, hf_ieee80211_tag_interpretation, tvb, 3, 1,"802.11n (Pre) HT information" );
- dissect_ht_capability_ie(tree, tag_tvb, 4, tag_len - 4, TRUE);
+ dissect_ht_capability_ie(tvb, pinfo, tree, offset+4, tag_len - 4, ti_len, TRUE);
proto_item_append_text(item, ": HT Capabilities (802.11n D1.10)");
}
else {
- if (4 <= tag_len && !tvb_memeql(tag_tvb, 0, PRE_11N_OUI"\x34", 4)) {
- proto_tree_add_string(tree, hf_ieee80211_tag_interpretation, tag_tvb, 3, 1, "HT additional information (802.11n D1.00)");
+ if (4 <= tag_len && !tvb_memeql(tvb, offset, PRE_11N_OUI"\x34", 4)) {
+ proto_tree_add_string(tree, hf_ieee80211_tag_interpretation, tvb, 3, 1, "HT additional information (802.11n D1.00)");
- dissect_ht_info_ie_1_0(tree, tag_tvb, 4, tag_len - 4);
+ dissect_ht_info_ie_1_0(tvb, pinfo, tree, offset+4, tag_len - 4, ti_len);
proto_item_append_text(item, ": HT Additional Capabilities (802.11n D1.00)");
}
else {
- proto_tree_add_string(tree, hf_ieee80211_tag_interpretation, tag_tvb, 3, 1, "Unknown type");
+ proto_tree_add_string(tree, hf_ieee80211_tag_interpretation, tvb, 3, 1, "Unknown type");
proto_item_append_text(item, ": 802.11n (pre) Unknown type");
- proto_tree_add_string(tree, hf_ieee80211_tag_interpretation, tag_tvb, 4,
+ proto_tree_add_string(tree, hf_ieee80211_tag_interpretation, tvb, 4,
tag_len - 4, "Not interpreted");
}
}
@@ -7784,7 +7739,7 @@ static int ieee80211_tag_ds_parameter(packet_info *pinfo, proto_tree *tree,
proto_tree_add_item(tree, hf_ieee80211_tag_ds_param_channel,
tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_item_append_text(ti, " : Current Channel: %u",
+ proto_item_append_text(ti, ": Current Channel: %u",
tvb_get_guint8(tvb, offset));
wlan_stats.channel = tvb_get_guint8(tvb, offset);
@@ -8512,7 +8467,7 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off
proto_tree_add_item(sub_tree, hf_ieee80211_tag_measure_request_duration, tvb, offset, 2, ENC_LITTLE_ENDIAN);
offset += 2;
- /* TODO Add Optionnal Subelements */
+ /* TODO Add Optional Subelements */
break;
}
case 5: /* Beacon Request */
@@ -8604,7 +8559,7 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off
proto_tree_add_item(sub_tree, hf_ieee80211_tag_measure_request_mac_address, tvb, offset, 6, ENC_NA);
offset += 6;
- /* TODO Add Optionnal Subelements */
+ /* TODO Add Optional Subelements */
break;
}
case 7: /* BSTA Statistics Request */
@@ -8621,7 +8576,7 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off
proto_tree_add_item(sub_tree, hf_ieee80211_tag_measure_request_group_id, tvb, offset, 1, ENC_NA);
offset += 1;
- /* TODO Add Optionnal Subelements */
+ /* TODO Add Optional Subelements */
break;
}
case 8: /* Location Configuration Indication (LCI) Request */
@@ -8758,7 +8713,7 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off
proto_tree_add_item(sub_tree, hf_ieee80211_tag_measure_report_channel_load, tvb, offset, 1, ENC_NA);
offset += 1;
- /* TODO Add Optionnal Subelements */
+ /* TODO Add Optional Subelements */
break;
}
case 4: /* Noise Histogram Report */
@@ -8813,7 +8768,7 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off
proto_tree_add_item(sub_tree, hf_ieee80211_tag_measure_report_ipi_density_10, tvb, offset, 1, ENC_NA);
offset += 1;
- /* TODO Add Optionnal Subelements */
+ /* TODO Add Optional Subelements */
break;
case 5: /* Beacon Report */
{
@@ -8851,7 +8806,7 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off
proto_tree_add_item(sub_tree, hf_ieee80211_tag_measure_report_parent_tsf, tvb, offset, 4, ENC_LITTLE_ENDIAN);
offset += 4;
- /* TODO Add Optionnal Subelements */
+ /* TODO Add Optional Subelements */
break;
}
case 6: /* Frame Report */
@@ -8867,7 +8822,7 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off
proto_tree_add_item(sub_tree, hf_ieee80211_tag_measure_report_duration, tvb, offset, 2, ENC_LITTLE_ENDIAN);
offset += 2;
- /* TODO Add Optionnal Subelements */
+ /* TODO Add Optional Subelements */
break;
case 7: /* BSTA Statistics Report */
/* TODO */
@@ -9005,7 +8960,7 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off
}
offset += 2;
- offset = dissect_rsn_ie(tree, tvb, offset, tag_len);
+ offset = dissect_rsn_ie(pinfo, tree, tvb, offset, tag_len);
break;
case TAG_EXT_SUPP_RATES: /* 7.3.2.14 Extended Supported Rates element (50) */
@@ -9150,7 +9105,7 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off
oui = tvb_get_ntoh24(tvb, offset);
tag_tvb = tvb_new_subset(tvb, offset, tag_len, tag_len);
proto_tree_add_item(tree, hf_ieee80211_tag_oui, tvb, offset, 3, ENC_NA);
- proto_item_append_text(ti, ": %s", tvb_get_manuf_name(tvb, offset));
+ proto_item_append_text(ti, ": %s", uint_get_manuf_name(oui));
if (tag_len > 3) {
proto_tree_add_item(ti, hf_ieee80211_tag_vendor_oui_type, tvb, offset + 3, 1, ENC_BIG_ENDIAN);
@@ -9168,7 +9123,7 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off
dissect_vendor_ie_rsn(ti, tree, tag_tvb);
break;
case PRE11N_OUI:
- dissect_vendor_ie_ht(ti, tree, tag_tvb);
+ dissect_vendor_ie_ht(tvb, pinfo, tree, offset, ti, ti_len, tag_len);
break;
case OUI_WFA:
dissect_vendor_ie_wfa(pinfo, ti, tag_tvb);
@@ -9234,14 +9189,15 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off
break;
case TAG_HT_CAPABILITY:
- dissect_ht_capability_ie(tree, tvb, offset + 2, tag_len, FALSE);
+ dissect_ht_capability_ie(tvb, pinfo, tree, offset+2, tag_len, ti_len, FALSE);
break;
case TAG_HT_INFO:
- dissect_ht_info_ie_1_1(tree, tvb, offset + 2, tag_len);
+ dissect_ht_info_ie_1_1(tvb, pinfo, tree, offset + 2, tag_len, ti_len);
break;
+
case TAG_SECONDARY_CHANNEL_OFFSET:
- secondary_channel_offset_ie(tree, tvb, offset + 2, tag_len);
+ dissect_secondary_channel_offset_ie(tvb, pinfo, tree, offset + 2, tag_len, ti_len);
break;
case TAG_TIME_ADV:
@@ -9451,7 +9407,9 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off
case TAG_ROAMING_CONSORTIUM:
dissect_roaming_consortium(pinfo, tree, ti, tvb, offset);
break;
-
+ case TAG_AP_CHANNEL_REPORT: /* 7.3.2.36 AP Channel Report element */
+ dissect_ap_channel_report(tvb, pinfo, tree, offset + 2, tag_len, ti_len, tag_end, ti);
+ break;
case TAG_NEIGHBOR_REPORT:
{
#define SUB_TAG_TSF_INFO 0x01
@@ -9530,17 +9488,17 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off
case SUB_TAG_HT_CAPABILITIES:
parent_item = proto_tree_add_text (tree, tvb, offset, sub_tag_length, "HT Capabilities");
sub_tag_tree = proto_item_add_subtree(parent_item, ett_tag_neighbor_report_sub_tag_tree);
- dissect_ht_capability_ie(sub_tag_tree, sub_tag_tvb, 0, sub_tag_length, FALSE);
+ dissect_ht_capability_ie(sub_tag_tvb, pinfo, sub_tag_tree, 0, sub_tag_length, ti_len, FALSE);
break;
case SUB_TAG_HT_INFO:
parent_item = proto_tree_add_text (tree, tvb, offset, sub_tag_length, "HT Information");
sub_tag_tree = proto_item_add_subtree(parent_item, ett_tag_neighbor_report_sub_tag_tree);
- dissect_ht_info_ie_1_1(sub_tag_tree, sub_tag_tvb, 0, sub_tag_length);
+ dissect_ht_info_ie_1_1(sub_tag_tvb, pinfo, sub_tag_tree, 0, sub_tag_length, ti_len);
break;
case SUB_TAG_SEC_CHANNEL_OFFSET:
parent_item = proto_tree_add_text (tree, tvb, offset, sub_tag_length, "Secondary Channel Offset");
sub_tag_tree = proto_item_add_subtree(parent_item, ett_tag_neighbor_report_sub_tag_tree);
- secondary_channel_offset_ie(sub_tag_tree, sub_tag_tvb, 0, sub_tag_length);
+ dissect_secondary_channel_offset_ie(sub_tag_tvb, pinfo, sub_tag_tree, 0, sub_tag_length, ti_len);
break;
case SUB_TAG_VENDOR_SPECIFIC:
default:
@@ -10200,6 +10158,8 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo,
set_dst_addr_cols(pinfo, dst, addr1_str);
if (tree) {
proto_tree_add_item(hdr_tree, addr1_hf, tvb, 4, 6, ENC_BIG_ENDIAN);
+ hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, 4, 6, ENC_NA);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
}
/*
@@ -12025,7 +11985,7 @@ proto_register_ieee80211 (void)
};
static const true_false_string hwmp_targ_usn_flags = {
- "[USN = 1] Target Sequence Number Unkwown at Originator",
+ "[USN = 1] Target Sequence Number Unknown at Originator",
"[USN = 0] Target Sequence Number Known at Originator"
};
@@ -12367,7 +12327,7 @@ proto_register_ieee80211 (void)
NULL, HFILL }},
{&hf_ieee80211_wep_iv_weak,
- {"Weak IV", "wlan.wep.weakiv", FT_BOOLEAN,BASE_NONE, NULL,0x0,
+ {"Weak IV", "wlan.wep.weakiv", FT_BOOLEAN, BASE_NONE, NULL,0x0,
NULL,HFILL}},
{&hf_ieee80211_tkip_extiv,
@@ -12386,34 +12346,6 @@ proto_register_ieee80211 (void)
{"WEP ICV", "wlan.wep.icv", FT_UINT32, BASE_HEX, NULL, 0,
NULL, HFILL }},
- {&hf_ieee80211_chan_noc,
- {"Number of Channels", "chan.num_chans", FT_UINT8, BASE_DEC, NULL, 0,
- NULL, HFILL }},
-
- {&hf_ieee80211_chan_length,
- {"Length", "chan.chan_length", FT_UINT8, BASE_DEC, NULL, 0,
- NULL, HFILL }},
-
- {&hf_ieee80211_chan_content,
- {"Contents", "chan.chan_content", FT_UINT8, BASE_DEC, NULL, 0,
- NULL, HFILL }},
-
- {&hf_ieee80211_chan_channel,
- {"channel", "chan.chan_channel", FT_UINT8, BASE_DEC, NULL, 0,
- NULL, HFILL }},
-
- {&hf_ieee80211_chan_adapt,
- {"Adaptable", "chan.chan_adapt", FT_UINT8, BASE_DEC, NULL, 0,
- NULL, HFILL }},
-
- {&hf_ieee80211_chan_rate,
- {"Rate", "chan.chan_rate", FT_UINT8, BASE_DEC, NULL, 0,
- NULL, HFILL }},
-
- {&hf_ieee80211_chan_tx_pow,
- {"Tx Power", "chan.chan_tx_pow", FT_UINT8, BASE_DEC, NULL, 0,
- NULL, HFILL }},
-
{&hf_ieee80211_block_ack_request_control,
{"Block Ack Request (BAR) Control", "wlan.bar.control",
FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }},
@@ -12542,7 +12474,7 @@ proto_register_ieee80211 (void)
static const true_false_string qos_info_field_more_data_ack_flags = {
"STA can process Ack frames with More Data bit and will remain in the awake state.",
- "STA cannot process Ack frames with More Data bit in Frame Controll field."
+ "STA cannot process Ack frames with More Data bit in Frame Control field."
};
static const true_false_string qos_info_field_queue_req_flags = {
@@ -12551,7 +12483,7 @@ proto_register_ieee80211 (void)
};
/* 7.3.1.17 Table 19b-Settings of the Max SP Length subfield */
- static const value_string qos_info_field_max_sp_lenght_flags[] =
+ static const value_string qos_info_field_max_sp_length_flags[] =
{
{ 0x0, "QAP may deliver all buffered MSDUs and MMPDUs." },
{ 0x2, "QAP may deliver a maximum of two MSDUs and MMPDUs per SP." },
@@ -12990,7 +12922,7 @@ proto_register_ieee80211 (void)
{&hf_ieee80211_tag_supp_rates,
{"Supported Rates", "wlan_mgt.supported_rates",
- FT_UINT8, BASE_NONE, VALS(ieee80211_supported_rates_vals), 0x0,
+ FT_UINT8, BASE_HEX, VALS(ieee80211_supported_rates_vals), 0x0,
"In Mbit/sec, (B) for Basic Rates", HFILL }},
{&hf_ieee80211_tag_fh_dwell_time,
@@ -13779,19 +13711,19 @@ proto_register_ieee80211 (void)
FT_FRAMENUM, BASE_NONE, NULL, 0x00, NULL, HFILL } },
{&hf_ieee80211_gas_resp_fragment_overlap,
{"GAS Query Response fragment overlap", "wlan_mgt.fixed.fragment.overlap",
- FT_BOOLEAN, 0, NULL, 0x00, NULL, HFILL } },
+ FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL } },
{&hf_ieee80211_gas_resp_fragment_overlap_conflict,
{"GAS Query Response fragment overlapping with conflicting data",
"wlan_mgt.fixed.fragment.overlap.conflicts",
- FT_BOOLEAN, 0, NULL, 0x00, NULL, HFILL } },
+ FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL } },
{&hf_ieee80211_gas_resp_fragment_multiple_tails,
{"GAS Query Response has multiple tail fragments",
"wlan_mgt.fixed.fragment.multiple_tails",
- FT_BOOLEAN, 0, NULL, 0x00, NULL, HFILL } },
+ FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL } },
{&hf_ieee80211_gas_resp_fragment_too_long_fragment,
{"GAS Query Response fragment too long",
"wlan_mgt.fixed.fragment.too_long_fragment",
- FT_BOOLEAN, 0, NULL, 0x00, NULL, HFILL } },
+ FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL } },
{&hf_ieee80211_gas_resp_fragment_error,
{"GAS Query Response reassembly error", "wlan_mgt.fixed.fragment.error",
FT_FRAMENUM, BASE_NONE, NULL, 0x00, NULL, HFILL } },
@@ -14376,19 +14308,19 @@ proto_register_ieee80211 (void)
NULL, 0, NULL, HFILL }},
{&hf_ieee80211_rsn_gmcs,
- {"Group Managemement Cipher Suite", "wlan_mgt.rsn.gmcs", FT_UINT32, BASE_CUSTOM,
+ {"Group Management Cipher Suite", "wlan_mgt.rsn.gmcs", FT_UINT32, BASE_CUSTOM,
rsn_gmcs_base_custom, 0, "Contains the cipher suite selector used by the BSS to protect broadcast/multicast traffic", HFILL }},
{&hf_ieee80211_rsn_gmcs_oui,
- {"Group Managemement Cipher Suite OUI", "wlan_mgt.rsn.gmcs.oui", FT_UINT24, BASE_CUSTOM,
+ {"Group Management Cipher Suite OUI", "wlan_mgt.rsn.gmcs.oui", FT_UINT24, BASE_CUSTOM,
oui_base_custom, 0, NULL, HFILL }},
{&hf_ieee80211_rsn_gmcs_type,
- {"Group Managemement Cipher Suite type", "wlan_mgt.rsn.gmcs.type", FT_UINT8, BASE_DEC,
+ {"Group Management Cipher Suite type", "wlan_mgt.rsn.gmcs.type", FT_UINT8, BASE_DEC,
NULL, 0, NULL, HFILL }},
{&hf_ieee80211_rsn_gmcs_80211_type,
- {"Group Managemement Cipher Suite type", "wlan_mgt.rsn.gmcs.type", FT_UINT8, BASE_DEC,
+ {"Group Management Cipher Suite type", "wlan_mgt.rsn.gmcs.type", FT_UINT8, BASE_DEC,
VALS(ieee80211_rsn_cipher_vals), 0, NULL, HFILL }},
@@ -14480,12 +14412,12 @@ proto_register_ieee80211 (void)
{&hf_ieee80211_ampduparam_mpdu,
{"Maximum Rx A-MPDU Length", "wlan_mgt.ht.ampduparam.maxlength",
- FT_UINT8, BASE_HEX, 0 , 0x03,
+ FT_UINT8, BASE_HEX, 0, 0x03,
NULL, HFILL }},
{&hf_ieee80211_ampduparam_mpdu_start_spacing,
{"MPDU Density", "wlan_mgt.ht.ampduparam.mpdudensity",
- FT_UINT8, BASE_HEX, VALS (&ampduparam_mpdu_start_spacing_flags) , 0x1c,
+ FT_UINT8, BASE_HEX, VALS(&ampduparam_mpdu_start_spacing_flags), 0x1c,
NULL, HFILL }},
{&hf_ieee80211_ampduparam_reserved,
@@ -14501,6 +14433,10 @@ proto_register_ieee80211 (void)
{"Rx Supported Modulation and Coding Scheme Set (VS)", "wlan_mgt.vs.ht.mcsset",
FT_STRING, BASE_NONE, NULL, 0, "Vendor Specific Rx Supported Modulation and Coding Scheme Set", HFILL }},
+ {&hf_ieee80211_mcsset_rx_bitmask,
+ {"Rx Modulation and Coding Scheme (One bit per modulation)", "wlan_mgt.ht.mcsset.rxbitmask",
+ FT_NONE, BASE_NONE, NULL, 0, "One bit per modulation", HFILL }},
+
{&hf_ieee80211_mcsset_rx_bitmask_0to7,
{"Rx Bitmask Bits 0-7", "wlan_mgt.ht.mcsset.rxbitmask.0to7",
FT_UINT32, BASE_HEX, 0, 0x000000ff, NULL, HFILL }},
@@ -14698,6 +14634,10 @@ proto_register_ieee80211 (void)
FT_UINT32, BASE_HEX, NULL, 0xe0000000,
NULL, HFILL }},
+ {&hf_ieee80211_hta_cc,
+ {"HT Control Channel", "wlan_mgt.hta.control_channel", FT_UINT8, BASE_DEC,
+ NULL, 0, NULL, HFILL }},
+
{&hf_ieee80211_hta_cap,
{"HT Additional Capabilities", "wlan_mgt.hta.capabilities", FT_UINT16, BASE_HEX,
NULL, 0, "HT Additional Capability information", HFILL }},
@@ -14808,8 +14748,8 @@ proto_register_ieee80211 (void)
FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }},
{&hf_ieee80211_ht_info_delimiter1,
- {"HT Information Delimiter #1", "wlan_mgt.ht.info.delim1",
- FT_UINT8, BASE_HEX, NULL, 0xff, NULL, HFILL }},
+ {"HT Information Subset (1 of 3)", "wlan_mgt.ht.info.delim1",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
{&hf_ieee80211_ht_info_primary_channel,
{"Primary Channel", "wlan_mgt.ht.info.primarychannel",
@@ -14836,8 +14776,8 @@ proto_register_ieee80211 (void)
FT_UINT8, BASE_HEX, VALS (&ht_info_service_interval_granularity_flags), 0xe0, NULL, HFILL }},
{&hf_ieee80211_ht_info_delimiter2,
- {"HT Information Delimiter #2", "wlan_mgt.ht.info.delim2",
- FT_UINT16, BASE_HEX, NULL, 0xffff, NULL, HFILL }},
+ {"HT Information Subset (2 of 3)", "wlan_mgt.ht.info.delim2",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }},
{&hf_ieee80211_ht_info_operating_mode,
{"Operating mode of BSS", "wlan_mgt.ht.info.operatingmode",
@@ -14860,8 +14800,8 @@ proto_register_ieee80211 (void)
FT_UINT16, BASE_HEX, NULL, 0xffe0, NULL, HFILL }},
{&hf_ieee80211_ht_info_delimiter3,
- {"HT Information Delimiter #3", "wlan_mgt.ht.info.delim3",
- FT_UINT16, BASE_HEX, NULL, 0xffff, NULL, HFILL }},
+ {"HT Information Subset (3 of 3)", "wlan_mgt.ht.info.delim3",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }},
{&hf_ieee80211_ht_info_reserved_2,
{"Reserved", "wlan_mgt.ht.info.reserved2",
@@ -14895,6 +14835,16 @@ proto_register_ieee80211 (void)
{"Reserved", "wlan_mgt.ht.info.reserved3",
FT_UINT16, BASE_HEX, NULL, 0xf000, NULL, HFILL }},
+ {&hf_ieee80211_tag_ap_channel_report_regulatory_class,
+ {"Regulatory Class", "wlan_mgt.ap_channel_report.regulatory_class",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ {&hf_ieee80211_tag_ap_channel_report_channel_list,
+ {"Channel List", "wlan_mgt.ap_channel_report.channel_list",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
{&hf_ieee80211_tag_secondary_channel_offset,
{"Secondary Channel Offset", "wlan_mgt.secchanoffset",
FT_UINT8, BASE_HEX, VALS (&ieee80211_tag_secondary_channel_offset_flags), 0,
@@ -15410,7 +15360,7 @@ proto_register_ieee80211 (void)
{&hf_ieee80211_tag_extended_capabilities_serv_int_granularity,
{"Service Interval Granularity",
"wlan_mgt.extcap.infoexchange.serv_int_granularity",
- FT_UINT8, BASE_NONE, VALS(service_interval_granularity_vals), 0x000e,
+ FT_UINT8, BASE_DEC, VALS(service_interval_granularity_vals), 0x000e,
NULL, HFILL }},
{&hf_ieee80211_tag_cisco_ccx1_unknown,
@@ -16050,8 +16000,8 @@ proto_register_ieee80211 (void)
FT_BOOLEAN, 8, TFS(&qos_info_field_qack_flags), 0x10, NULL, HFILL }},
{&hf_ieee80211_qos_info_field_max_sp_length,
- {"Max SP-Lenght", "wlan_mgt.tag.qos_cap.qos_info.max_sp_length",
- FT_UINT8, BASE_HEX, VALS(qos_info_field_max_sp_lenght_flags),
+ {"Max SP-Length", "wlan_mgt.tag.qos_cap.qos_info.max_sp_length",
+ FT_UINT8, BASE_HEX, VALS(qos_info_field_max_sp_length_flags),
0x60, NULL , HFILL }},
{&hf_ieee80211_qos_info_field_more_data_ack,
@@ -16075,8 +16025,8 @@ proto_register_ieee80211 (void)
FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL}},
{&hf_ieee80211_tag_ext_supp_rates,
- {"Extented Supported Rates", "wlan_mgt.extented_supported_rates",
- FT_UINT8, BASE_NONE, VALS(ieee80211_supported_rates_vals), 0x0,
+ {"Extended Supported Rates", "wlan_mgt.extended_supported_rates",
+ FT_UINT8, BASE_HEX, VALS(ieee80211_supported_rates_vals), 0x0,
"In Mbit/sec, (B) for Basic Rates", HFILL }},
{&hf_ieee80211_sched_info,
diff --git a/epan/dissectors/packet-ieee802154.c b/epan/dissectors/packet-ieee802154.c
index 5f80b87f3e..626e6e9208 100644
--- a/epan/dissectors/packet-ieee802154.c
+++ b/epan/dissectors/packet-ieee802154.c
@@ -31,7 +31,7 @@
*------------------------------------------------------------
*
* In IEEE 802.15.4 packets, all fields are little endian. And
- * Each byte is transmitted least significan bit first (reflected
+ * Each byte is transmitted least significant bit first (reflected
* bit ordering).
*------------------------------------------------------------
*
@@ -65,10 +65,6 @@
#include <string.h>
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <sys/stat.h>
#include <glib.h>
@@ -107,7 +103,7 @@ static gboolean ieee802154_fcs_ok = TRUE;
static const gchar *ieee802154_key_str = NULL;
static gboolean ieee802154_key_valid;
static guint8 ieee802154_key[IEEE802154_CIPHER_SIZE];
-static const char *ieee802154_user = "User";
+static const char *ieee802154_user = "User";
/*-------------------------------------
* Address Hash Tables
@@ -121,22 +117,22 @@ static ieee802154_map_tab_t ieee802154_map = { NULL, NULL };
*/
/* UAT entry structure. */
typedef struct {
- guchar * eui64;
- guint eui64_len;
- guint addr16;
- guint pan;
+ guchar *eui64;
+ guint eui64_len;
+ guint addr16;
+ guint pan;
} static_addr_t;
/* UAT variables */
-static uat_t * static_addr_uat = NULL;
-static static_addr_t * static_addrs = NULL;
-static guint num_static_addrs = 0;
+static uat_t *static_addr_uat = NULL;
+static static_addr_t *static_addrs = NULL;
+static guint num_static_addrs = 0;
/* Sanity-checks a UAT record. */
static void
-addr_uat_update_cb(void* r, const char** err)
+addr_uat_update_cb(void *r, const char **err)
{
- static_addr_t * map = r;
+ static_addr_t *map = r;
/* Ensure a valid short address */
if (map->addr16 >= IEEE802154_NO_ADDR16) {
*err = "Invalid short address";
@@ -655,7 +651,7 @@ dissect_ieee802154_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
col_add_fstr(pinfo->cinfo, COL_PACKET_LENGTH, "%i", tvb_length(tvb));
}
- /* Add the packet length to the filter field */
+ /* Add the packet length to the filter field */
hidden_item = proto_tree_add_uint(tree, hf_ieee802154_frame_length, NULL, 0, 0, tvb_reported_length(tvb));
PROTO_ITEM_SET_HIDDEN(hidden_item);
@@ -2613,7 +2609,7 @@ void proto_register_ieee802154(void)
"Whether the PAN coordinator is accepting GTS requests or not.", HFILL }},
{ &hf_ieee802154_gts_direction,
- { "Direction", "wpan.gts.direction", FT_BOOLEAN, 8, TFS(&ieee802154_gts_direction_tfs), 0x0,
+ { "Direction", "wpan.gts.direction", FT_BOOLEAN, BASE_NONE, TFS(&ieee802154_gts_direction_tfs), 0x0,
"A flag defining the direction of the GTS Slot.", HFILL }},
{ &hf_ieee802154_pending16,
diff --git a/epan/dissectors/packet-ifcp.c b/epan/dissectors/packet-ifcp.c
index dcdc14d07b..d1ae977db1 100644
--- a/epan/dissectors/packet-ifcp.c
+++ b/epan/dissectors/packet-ifcp.c
@@ -34,8 +34,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
@@ -276,7 +274,6 @@ dissect_ifcpflags(tvbuff_t *tvb, int offset, proto_tree *parent_tree)
if(flags&IFCP_FLAGS_SPC){
proto_item_append_text(item, " SPC");
}
- flags&=(~IFCP_FLAGS_SPC);
offset++;
@@ -310,7 +307,6 @@ dissect_commonflags(tvbuff_t *tvb, int offset, proto_tree *parent_tree)
if(flags&IFCP_COMMON_FLAGS_CRCV){
proto_item_append_text(item, " CRCV");
}
- flags&=(~IFCP_COMMON_FLAGS_CRCV);
}
static void
diff --git a/epan/dissectors/packet-igmp.c b/epan/dissectors/packet-igmp.c
index 4442ed5c0b..54cb80a665 100644
--- a/epan/dissectors/packet-igmp.c
+++ b/epan/dissectors/packet-igmp.c
@@ -517,7 +517,7 @@ dissect_v3_group_record(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tr
col_append_fstr(pinfo->cinfo, COL_INFO,
" / Group %s, unknown record type (?)",
ip_to_str((guint8*)&maddr));
- break;;
+ break;
}
} else {
switch(record_type) {
diff --git a/epan/dissectors/packet-igrp.c b/epan/dissectors/packet-igrp.c
index df483228bb..535b82e89e 100644
--- a/epan/dissectors/packet-igrp.c
+++ b/epan/dissectors/packet-igrp.c
@@ -33,10 +33,8 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/ipproto.h>
diff --git a/epan/dissectors/packet-image-gif.c b/epan/dissectors/packet-image-gif.c
index 752ec1ba84..ce648d22d4 100644
--- a/epan/dissectors/packet-image-gif.c
+++ b/epan/dissectors/packet-image-gif.c
@@ -33,14 +33,12 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-/* Edit this file with 4-space tabulation */
+/* Edit this file with 4-space indentation */
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
-#include <stdio.h>
-#include <stdlib.h>
#include <string.h>
#include <glib.h>
@@ -55,8 +53,8 @@
*/
#if (defined(DEBUG_image_gif) || defined(DEBUG_image))
#define DebugLog(x) \
- g_print("%s:%u: ", __FILE__, __LINE__); \
- g_print x
+ g_print("%s:%u: ", __FILE__, __LINE__); \
+ g_print x
#else
#define DebugLog(x) ;
#endif
@@ -66,22 +64,22 @@
/************************** Variable declarations **************************/
static const value_string vals_true_false[] = {
- { 0, "False" },
- { 1, "True" },
- { 0, NULL },
+ { 0, "False" },
+ { 1, "True" },
+ { 0, NULL },
};
static const value_string vals_extensions[] = {
- { 0xF9, "Graphics Control" },
- { 0xFE, "Comment" },
- { 0xFF, "Application" },
- { 0x01, "Plain Text" },
- { 0x00, NULL },
+ { 0xF9, "Graphics Control" },
+ { 0xFE, "Comment" },
+ { 0xFF, "Application" },
+ { 0x01, "Plain Text" },
+ { 0x00, NULL },
};
enum {
- GIF_87a = 0x87,
- GIF_89a = 0x89
+ GIF_87a = 0x87,
+ GIF_89a = 0x89
};
/* Initialize the protocol and registered fields */
@@ -139,293 +137,295 @@ static gint ett_image = -1;
static gint
dissect_gif(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_item *ti;
- proto_tree *gif_tree; /* Main GIF tree */
- proto_tree *subtree; /* Main GIF tree */
- guint offset = 0, len = 0;
- guint8 peek;
- gboolean color_map_present;
- guint8 color_resolution;
- guint8 image_bpp;
- guint tvb_len = tvb_reported_length(tvb);
- char *str = tvb_get_ephemeral_string(tvb, 0, 6);
- guint8 version = 0;
-
- if (tvb_len < 20)
- return 0;
-
- /* Check whether we're processing a GIF object */
- /* see http://www.w3.org/Graphics/GIF/spec-gif89a.txt section 17 */
- if (strcmp(str, "GIF87a") == 0) {
- version = GIF_87a;
- } else if (strcmp(str, "GIF89a") == 0) {
- version = GIF_89a;
- } else {
- /* Not a GIF image! */
- return 0;
- }
-
- DISSECTOR_ASSERT(version);
-
- /* Add summary to INFO column if it is enabled */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, " (%s)", str);
-
- /* In order to speed up dissection, do not add items to the protocol tree
- * if it is not visible. However, compute the values that are needed for
- * correct protocol dissection if they have more meaning than just adding
- * items to the protocol tree.
- */
- if (tree) {
- ti = proto_tree_add_item(tree, proto_gif, tvb, 0, -1, ENC_NA);
- proto_item_append_text(ti, ", Version: %s", str);
- gif_tree = proto_item_add_subtree(ti, ett_gif);
- /* GIF signature */
- proto_tree_add_item(gif_tree, hf_version, tvb, 0, 6, ENC_ASCII|ENC_NA);
- /* Screen descriptor */
- proto_tree_add_item(gif_tree, hf_screen_width, tvb, 6, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(gif_tree, hf_screen_height, tvb, 8, 2, ENC_LITTLE_ENDIAN);
-
- peek = tvb_get_guint8(tvb, 10);
- /* Bitfield gccc 0ppp
- * g... .... : global color map present
- * .ccc .... : color resolution in bits (add one)
- * .... 0... : GIF87a - reserved (no use)
- * GIF89a - ordered (most important color 1st)
- * .... .ppp : bits per pixel in image (add one)
- */
- color_map_present = peek & 0x80;
- color_resolution = 1 + ((peek & 0x60) >> 4);
- image_bpp = 1 + (peek & 0x07);
-
- ti = proto_tree_add_text(gif_tree, tvb, 10, 1,
- "Global settings:");
- if (color_map_present)
- proto_item_append_text(ti, " (Global color table present)");
- proto_item_append_text(ti,
- " (%u bit%s per color) (%u bit%s per pixel)",
- color_resolution, plurality(color_resolution, "", "s"),
- image_bpp, plurality(image_bpp, "", "s"));
- subtree = proto_item_add_subtree(ti, ett_global_flags);
- proto_tree_add_item(subtree, hf_global_color_map_present,
- tvb, 10, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(subtree, hf_global_color_resolution,
- tvb, 10, 1, ENC_LITTLE_ENDIAN);
- if (version == GIF_89a) {
- proto_tree_add_item(subtree, hf_global_color_map_ordered,
- tvb, 10, 1, ENC_LITTLE_ENDIAN);
- }
- proto_tree_add_item(subtree, hf_global_image_bpp,
- tvb, 10, 1, ENC_LITTLE_ENDIAN);
-
- /* Background color */
- proto_tree_add_item(gif_tree, hf_background_color,
- tvb, 11, 1, ENC_LITTLE_ENDIAN);
-
- /* byte at offset 12 is 0x00 - reserved in GIF87a but encodes the
- * pixel aspect ratio in GIF89a as:
- * aspect-ratio = (15 + pixel-aspect-ratio) / 64
- * where the aspect-ratio is not computed if pixel-aspect-ratio == 0
- */
- if (version == GIF_89a) {
- peek = tvb_get_guint8(tvb, 12);
- if (peek) {
- /* Only display if different from 0 */
- proto_tree_add_uint_format(gif_tree, hf_pixel_aspect_ratio,
- tvb, 12, 1, peek,
- "%u, yields an aspect ratio of (15 + %u) / 64 = %.2f",
- peek, peek, (float)(15 + peek) / 64.0);
- }
- }
-
- /* Global color map
- * If present, it takes 2 ^ (image_bpp) byte tuples (R, G, B)
- * that contain the Red, Green and Blue intensity of the colors
- * in the Global Color Map */
- if (color_map_present) {
- len = 3 * (1 << image_bpp);
- proto_tree_add_item(gif_tree, hf_global_color_map,
- tvb, 13, len, ENC_NA);
- } else {
- len = 0;
- }
- offset = 13 + len;
- /* From now on, a set of images prefixed with the image separator
- * character 0x2C (',') will appear in the byte stream. Each image
- * hence consists of:
- * - The image separator character 0x2C
- * - Image left (16 bits LSB first): pixels from left border
- * - Image top (16 bits LSB first): pixels from to border
- * - Image width (16 bits LSB first)
- * - Image height (16 bits LSB first)
- * - A bitfield MI00 0ppp
- * M... .... : Use global color map if unset (ignore ppp);
- * if set a local color map will be defined.
- * .I.. .... : Image formatted in interlaced order if set;
- * otherwise it is plain sequential order
- * ..0. .... : GIF87a - Reserved
- * ..s. .... GIF89a - Set if local color map is ordered
- * ...0 0... : Reserved
- * .... .ppp : bits per pixel in image (add one)
- * - If the local color map bit is set, then a local color table follows
- * with length = 3 x 2 ^ (1 + bits per pixel)
- * - The raster data
- *
- * NOTE that the GIF specification only requires that:
- * image left + image width <= screen width
- * image top + image height <= screen height
- *
- * The Raster Data is encoded as follows:
- * - Code size (1 byte)
- * - Blocks consisting of
- * o Byte count (1 byte): number of bytes in the block
- * o Data bytes: as many as specified in the byte count
- * End of data is given with an empty block (byte count == 0).
- *
- *
- * GIF terminator
- * This is a synchronization method, based on the final character 0xB3
- * (';') at the end of an image
- *
- *
- * GIF extension
- * This is a block of data encoded as:
- * - The GIF extension block introducer 0x21 ('!')
- * - The extension function code (1 byte)
- * - Blocks consisting of
- * o Byte count (1 byte): number of bytes in the block
- * o Data bytes: as many as specified in the byte count
- * End of data is given with an empty block (byte count == 0).
- *
- * NOTE that the GIF extension block can only appear at the following
- * locations:
- * - Immediately before an Image Descriptor
- * - Before the GIF termination character
- */
- while (offset < tvb_len) {
- peek = tvb_get_guint8(tvb, offset);
- if (peek == 0x21) { /* GIF extension block */
- guint32 item_len = 2; /* Fixed header consisting of:
- * 1 byte : 0x21
- * 1 byte : extension_label
- */
-
- ti = proto_tree_add_item(gif_tree, hf_extension,
- tvb, offset, 1, ENC_NA);
- subtree = proto_item_add_subtree(ti, ett_extension);
- offset++;
- proto_tree_add_item(subtree, hf_extension_label,
- tvb, offset, 1, ENC_LITTLE_ENDIAN);
- peek = tvb_get_guint8(tvb, offset);
- proto_item_append_text(ti, ": %s",
- val_to_str(peek, vals_extensions,
- "<Warning: Unknown extension 0x%02X>"));
- offset++;
- do {
- /* Read length of data block */
- len = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(subtree, tvb,
- offset, 1 + len,
- "Data block (length = %u)", len);
- offset += (1 + len);
- item_len += (1 + len);
- } while (len > 0);
- proto_item_set_len(ti, item_len);
- } else if (peek == 0x2C) { /* Image separator */
- proto_tree *subtree2;
- proto_item *ti2;
- guint32 item_len = 11; /* Fixed header consisting of:
- * 1 byte : 0x2C
- * 2 bytes: image_left
- * 2 bytes: image_top
- * 2 bytes: image_width
- * 2 bytes: image height
- * 1 byte : packed bit field
- * 1 byte : image code size
- */
-
- ti = proto_tree_add_item(gif_tree, hf_image,
- tvb, offset, 1, ENC_NA);
- subtree = proto_item_add_subtree(ti, ett_image);
- offset++;
- /* Screen descriptor */
- proto_tree_add_item(subtree, hf_image_left,
- tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2;
- proto_tree_add_item(subtree, hf_image_top,
- tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2;
- proto_tree_add_item(subtree, hf_image_width,
- tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2;
- proto_tree_add_item(subtree, hf_image_height,
- tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2;
- /* bit field */
- peek = tvb_get_guint8(tvb, offset);
- color_map_present = peek & 0x80;
- color_resolution = 1 + ((peek & 0x60) >> 4);
- image_bpp = 1 + (peek & 0x07);
-
- ti2 = proto_tree_add_text(subtree, tvb, offset, 1,
- "Local settings:");
- if (color_map_present)
- proto_item_append_text(ti2, " (Local color table present)");
- proto_item_append_text(ti2,
- " (%u bit%s per color) (%u bit%s per pixel)",
- color_resolution, plurality(color_resolution, "", "s"),
- image_bpp, plurality(image_bpp, "", "s"));
- subtree2 = proto_item_add_subtree(ti2, ett_local_flags);
- proto_tree_add_item(subtree2, hf_local_color_map_present,
- tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(subtree2, hf_local_color_resolution,
- tvb, offset, 1, ENC_LITTLE_ENDIAN);
- if (version == GIF_89a) {
- proto_tree_add_item(subtree2, hf_local_color_map_ordered,
- tvb, offset, 1, ENC_LITTLE_ENDIAN);
- }
- proto_tree_add_item(subtree2, hf_global_image_bpp,
- tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- /* Local color map
- * If present, it takes 2 ^ (image_bpp) byte tuples (R, G, B)
- * that contain the Red, Green and Blue intensity of the colors
- * in the Local Color Map */
- if (color_map_present) {
- len = 3 * (1 << image_bpp);
- proto_tree_add_item(subtree, hf_local_color_map,
- tvb, offset, len, ENC_NA);
- } else {
- len = 0;
- }
- offset += len;
- item_len += len;
-
- proto_tree_add_item(subtree, hf_image_code_size,
- tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- do {
- /* Read length of data block */
- len = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(subtree, tvb,
- offset, 1 + len,
- "Data block (length = %u)", len);
- offset += 1 + len;
- item_len += (1 + len);
- } while (len > 0);
- proto_item_set_len(ti, item_len);
- } else {
- /* GIF processing stops at this very byte */
- proto_tree_add_item(gif_tree, hf_trailer,
- tvb, offset, 1, ENC_NA);
- break;
- }
- } /* while */
- }
- return offset;
+ proto_item *ti;
+ proto_tree *gif_tree; /* Main GIF tree */
+ proto_tree *subtree; /* Main GIF tree */
+ guint offset = 0, len = 0;
+ guint8 peek;
+ gboolean color_map_present;
+ guint8 color_resolution;
+ guint8 image_bpp;
+ guint tvb_len = tvb_reported_length(tvb);
+ char *str;
+
+ guint8 version = 0;
+
+ if (tvb_len < 20)
+ return 0;
+
+ str = tvb_get_ephemeral_string(tvb, 0, 6);
+ /* Check whether we're processing a GIF object */
+ /* see http://www.w3.org/Graphics/GIF/spec-gif89a.txt section 17 */
+ if (strcmp(str, "GIF87a") == 0) {
+ version = GIF_87a;
+ } else if (strcmp(str, "GIF89a") == 0) {
+ version = GIF_89a;
+ } else {
+ /* Not a GIF image! */
+ return 0;
+ }
+
+ DISSECTOR_ASSERT(version);
+
+ /* Add summary to INFO column if it is enabled */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (%s)", str);
+
+ /* In order to speed up dissection, do not add items to the protocol tree
+ * if it is not visible. However, compute the values that are needed for
+ * correct protocol dissection if they have more meaning than just adding
+ * items to the protocol tree.
+ */
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_gif, tvb, 0, -1, ENC_NA);
+ proto_item_append_text(ti, ", Version: %s", str);
+ gif_tree = proto_item_add_subtree(ti, ett_gif);
+ /* GIF signature */
+ proto_tree_add_item(gif_tree, hf_version, tvb, 0, 6, ENC_ASCII|ENC_NA);
+ /* Screen descriptor */
+ proto_tree_add_item(gif_tree, hf_screen_width, tvb, 6, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(gif_tree, hf_screen_height, tvb, 8, 2, ENC_LITTLE_ENDIAN);
+
+ peek = tvb_get_guint8(tvb, 10);
+ /* Bitfield gccc 0ppp
+ * g... .... : global color map present
+ * .ccc .... : color resolution in bits (add one)
+ * .... 0... : GIF87a - reserved (no use)
+ * GIF89a - ordered (most important color 1st)
+ * .... .ppp : bits per pixel in image (add one)
+ */
+ color_map_present = peek & 0x80;
+ color_resolution = 1 + ((peek & 0x60) >> 4);
+ image_bpp = 1 + (peek & 0x07);
+
+ ti = proto_tree_add_text(gif_tree, tvb, 10, 1,
+ "Global settings:");
+ if (color_map_present)
+ proto_item_append_text(ti, " (Global color table present)");
+ proto_item_append_text(ti,
+ " (%u bit%s per color) (%u bit%s per pixel)",
+ color_resolution, plurality(color_resolution, "", "s"),
+ image_bpp, plurality(image_bpp, "", "s"));
+ subtree = proto_item_add_subtree(ti, ett_global_flags);
+ proto_tree_add_item(subtree, hf_global_color_map_present,
+ tvb, 10, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(subtree, hf_global_color_resolution,
+ tvb, 10, 1, ENC_LITTLE_ENDIAN);
+ if (version == GIF_89a) {
+ proto_tree_add_item(subtree, hf_global_color_map_ordered,
+ tvb, 10, 1, ENC_LITTLE_ENDIAN);
+ }
+ proto_tree_add_item(subtree, hf_global_image_bpp,
+ tvb, 10, 1, ENC_LITTLE_ENDIAN);
+
+ /* Background color */
+ proto_tree_add_item(gif_tree, hf_background_color,
+ tvb, 11, 1, ENC_LITTLE_ENDIAN);
+
+ /* byte at offset 12 is 0x00 - reserved in GIF87a but encodes the
+ * pixel aspect ratio in GIF89a as:
+ * aspect-ratio = (15 + pixel-aspect-ratio) / 64
+ * where the aspect-ratio is not computed if pixel-aspect-ratio == 0
+ */
+ if (version == GIF_89a) {
+ peek = tvb_get_guint8(tvb, 12);
+ if (peek) {
+ /* Only display if different from 0 */
+ proto_tree_add_uint_format(gif_tree, hf_pixel_aspect_ratio,
+ tvb, 12, 1, peek,
+ "%u, yields an aspect ratio of (15 + %u) / 64 = %.2f",
+ peek, peek, (float)(15 + peek) / 64.0);
+ }
+ }
+
+ /* Global color map
+ * If present, it takes 2 ^ (image_bpp) byte tuples (R, G, B)
+ * that contain the Red, Green and Blue intensity of the colors
+ * in the Global Color Map */
+ if (color_map_present) {
+ len = 3 * (1 << image_bpp);
+ proto_tree_add_item(gif_tree, hf_global_color_map,
+ tvb, 13, len, ENC_NA);
+ } else {
+ len = 0;
+ }
+ offset = 13 + len;
+ /* From now on, a set of images prefixed with the image separator
+ * character 0x2C (',') will appear in the byte stream. Each image
+ * hence consists of:
+ * - The image separator character 0x2C
+ * - Image left (16 bits LSB first): pixels from left border
+ * - Image top (16 bits LSB first): pixels from to border
+ * - Image width (16 bits LSB first)
+ * - Image height (16 bits LSB first)
+ * - A bitfield MI00 0ppp
+ * M... .... : Use global color map if unset (ignore ppp);
+ * if set a local color map will be defined.
+ * .I.. .... : Image formatted in interlaced order if set;
+ * otherwise it is plain sequential order
+ * ..0. .... : GIF87a - Reserved
+ * ..s. .... GIF89a - Set if local color map is ordered
+ * ...0 0... : Reserved
+ * .... .ppp : bits per pixel in image (add one)
+ * - If the local color map bit is set, then a local color table follows
+ * with length = 3 x 2 ^ (1 + bits per pixel)
+ * - The raster data
+ *
+ * NOTE that the GIF specification only requires that:
+ * image left + image width <= screen width
+ * image top + image height <= screen height
+ *
+ * The Raster Data is encoded as follows:
+ * - Code size (1 byte)
+ * - Blocks consisting of
+ * o Byte count (1 byte): number of bytes in the block
+ * o Data bytes: as many as specified in the byte count
+ * End of data is given with an empty block (byte count == 0).
+ *
+ *
+ * GIF terminator
+ * This is a synchronization method, based on the final character 0xB3
+ * (';') at the end of an image
+ *
+ *
+ * GIF extension
+ * This is a block of data encoded as:
+ * - The GIF extension block introducer 0x21 ('!')
+ * - The extension function code (1 byte)
+ * - Blocks consisting of
+ * o Byte count (1 byte): number of bytes in the block
+ * o Data bytes: as many as specified in the byte count
+ * End of data is given with an empty block (byte count == 0).
+ *
+ * NOTE that the GIF extension block can only appear at the following
+ * locations:
+ * - Immediately before an Image Descriptor
+ * - Before the GIF termination character
+ */
+ while (offset < tvb_len) {
+ peek = tvb_get_guint8(tvb, offset);
+ if (peek == 0x21) { /* GIF extension block */
+ guint32 item_len = 2; /* Fixed header consisting of:
+ * 1 byte : 0x21
+ * 1 byte : extension_label
+ */
+
+ ti = proto_tree_add_item(gif_tree, hf_extension,
+ tvb, offset, 1, ENC_NA);
+ subtree = proto_item_add_subtree(ti, ett_extension);
+ offset++;
+ proto_tree_add_item(subtree, hf_extension_label,
+ tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ peek = tvb_get_guint8(tvb, offset);
+ proto_item_append_text(ti, ": %s",
+ val_to_str(peek, vals_extensions,
+ "<Warning: Unknown extension 0x%02X>"));
+ offset++;
+ do {
+ /* Read length of data block */
+ len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1 + len,
+ "Data block (length = %u)", len);
+ offset += (1 + len);
+ item_len += (1 + len);
+ } while (len > 0);
+ proto_item_set_len(ti, item_len);
+ } else if (peek == 0x2C) { /* Image separator */
+ proto_tree *subtree2;
+ proto_item *ti2;
+ guint32 item_len = 11; /* Fixed header consisting of:
+ * 1 byte : 0x2C
+ * 2 bytes: image_left
+ * 2 bytes: image_top
+ * 2 bytes: image_width
+ * 2 bytes: image height
+ * 1 byte : packed bit field
+ * 1 byte : image code size
+ */
+
+ ti = proto_tree_add_item(gif_tree, hf_image,
+ tvb, offset, 1, ENC_NA);
+ subtree = proto_item_add_subtree(ti, ett_image);
+ offset++;
+ /* Screen descriptor */
+ proto_tree_add_item(subtree, hf_image_left,
+ tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2;
+ proto_tree_add_item(subtree, hf_image_top,
+ tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2;
+ proto_tree_add_item(subtree, hf_image_width,
+ tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2;
+ proto_tree_add_item(subtree, hf_image_height,
+ tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2;
+ /* bit field */
+ peek = tvb_get_guint8(tvb, offset);
+ color_map_present = peek & 0x80;
+ color_resolution = 1 + ((peek & 0x60) >> 4);
+ image_bpp = 1 + (peek & 0x07);
+
+ ti2 = proto_tree_add_text(subtree, tvb, offset, 1,
+ "Local settings:");
+ if (color_map_present)
+ proto_item_append_text(ti2, " (Local color table present)");
+ proto_item_append_text(ti2,
+ " (%u bit%s per color) (%u bit%s per pixel)",
+ color_resolution, plurality(color_resolution, "", "s"),
+ image_bpp, plurality(image_bpp, "", "s"));
+ subtree2 = proto_item_add_subtree(ti2, ett_local_flags);
+ proto_tree_add_item(subtree2, hf_local_color_map_present,
+ tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(subtree2, hf_local_color_resolution,
+ tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ if (version == GIF_89a) {
+ proto_tree_add_item(subtree2, hf_local_color_map_ordered,
+ tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ }
+ proto_tree_add_item(subtree2, hf_global_image_bpp,
+ tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ /* Local color map
+ * If present, it takes 2 ^ (image_bpp) byte tuples (R, G, B)
+ * that contain the Red, Green and Blue intensity of the colors
+ * in the Local Color Map */
+ if (color_map_present) {
+ len = 3 * (1 << image_bpp);
+ proto_tree_add_item(subtree, hf_local_color_map,
+ tvb, offset, len, ENC_NA);
+ } else {
+ len = 0;
+ }
+ offset += len;
+ item_len += len;
+
+ proto_tree_add_item(subtree, hf_image_code_size,
+ tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ do {
+ /* Read length of data block */
+ len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(subtree, tvb,
+ offset, 1 + len,
+ "Data block (length = %u)", len);
+ offset += 1 + len;
+ item_len += (1 + len);
+ } while (len > 0);
+ proto_item_set_len(ti, item_len);
+ } else {
+ /* GIF processing stops at this very byte */
+ proto_tree_add_item(gif_tree, hf_trailer,
+ tvb, offset, 1, ENC_NA);
+ break;
+ }
+ } /* while */
+ }
+ return offset;
}
static gboolean
dissect_gif_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- return dissect_gif(tvb, pinfo, tree) > 0;
+ return dissect_gif(tvb, pinfo, tree) > 0;
}
@@ -438,256 +438,256 @@ dissect_gif_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
void
proto_register_gif(void)
{
- /*
- * Setup list of header fields.
- */
- static hf_register_info hf[] = {
- /*
- * GIF signature and version
- */
- { &hf_version,
- { "Version",
- IMG_GIF ".version",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "GIF Version",
- HFILL
- }
- },
-
- /*
- * Logical screen descriptor
- */
- { &hf_screen_width,
- { "Screen width",
- IMG_GIF ".screen.width",
- FT_UINT16, BASE_DEC, NULL, 0x00,
- NULL,
- HFILL
- }
- },
- { &hf_screen_height,
- { "Screen height",
- IMG_GIF ".screen.height",
- FT_UINT16, BASE_DEC, NULL, 0x00,
- NULL,
- HFILL
- }
- },
- { &hf_global_color_map_present,
- { "Global color map is present",
- IMG_GIF ".global.color_map.present",
- FT_UINT8, BASE_DEC, VALS(vals_true_false), 0x80,
- "Indicates if the global color map is present",
- HFILL
- }
- },
- { &hf_global_color_resolution,
- { "Bits per color minus 1",
- IMG_GIF ".global.color_bpp",
- FT_UINT8, BASE_DEC, NULL, 0x70,
- "The number of bits per color is one plus the field value.",
- HFILL
- }
- },
- { &hf_global_color_map_ordered,
- { "Global color map is ordered",
- IMG_GIF ".global.color_map.ordered",
- FT_UINT8, BASE_DEC, VALS(vals_true_false), 0x08,
- "Indicates whether the global color map is ordered.",
- HFILL
- }
- },
- { &hf_global_image_bpp,
- { "Image bits per pixel minus 1",
- IMG_GIF ".global.bpp",
- FT_UINT8, BASE_DEC, NULL, 0x07,
- "The number of bits per pixel is one plus the field value.",
- HFILL
- }
- },
- { &hf_background_color,
- { "Background color index",
- IMG_GIF ".image_background_index",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- "Index of the background color in the color map.",
- HFILL
- }
- },
- { &hf_pixel_aspect_ratio,
- { "Global pixel aspect ratio",
- IMG_GIF ".global.pixel_aspect_ratio",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- "Gives an approximate value of the aspect ratio of the pixels.",
- HFILL
- }
- },
- { &hf_global_color_map,
- { "Global color map",
- IMG_GIF ".global.color_map",
- FT_BYTES, BASE_NONE, NULL, 0x00,
- "Global color map.",
- HFILL
- }
- },
-
- /*
- * Local color map (part of image)
- */
- { &hf_local_color_map_present,
- { "Local color map is present",
- IMG_GIF ".local.color_map.present",
- FT_UINT8, BASE_DEC, VALS(vals_true_false), 0x80,
- "Indicates if the local color map is present",
- HFILL
- }
- },
- { &hf_local_color_resolution,
- { "Bits per color minus 1",
- IMG_GIF ".local.color_bpp",
- FT_UINT8, BASE_DEC, NULL, 0x70,
- "The number of bits per color is one plus the field value.",
- HFILL
- }
- },
- { &hf_local_color_map_ordered,
- { "Local color map is ordered",
- IMG_GIF ".local.color_map.ordered",
- FT_UINT8, BASE_DEC, VALS(vals_true_false), 0x08,
- "Indicates whether the local color map is ordered.",
- HFILL
- }
- },
- { &hf_local_image_bpp,
- { "Image bits per pixel minus 1",
- IMG_GIF ".local.bpp",
- FT_UINT8, BASE_DEC, NULL, 0x07,
- "The number of bits per pixel is one plus the field value.",
- HFILL
- }
- },
- { &hf_local_color_map,
- { "Local color map",
- IMG_GIF ".local.color_map",
- FT_BYTES, BASE_NONE, NULL, 0x00,
- "Local color map.",
- HFILL
- }
- },
-
- /*
- * Extension
- */
- { &hf_extension,
- { "Extension",
- IMG_GIF ".extension",
- FT_NONE, BASE_NONE, NULL, 0x00,
- "Extension.",
- HFILL
- }
- },
- { &hf_extension_label,
- { "Extension label",
- IMG_GIF ".extension.label",
- FT_UINT8, BASE_HEX, VALS(vals_extensions), 0x00,
- "Extension label.",
- HFILL
- }
- },
-
- /*
- * Image
- */
- { &hf_image,
- { "Image",
- IMG_GIF ".image",
- FT_NONE, BASE_NONE, NULL, 0x00,
- "Image.",
- HFILL
- }
- },
- { &hf_image_left,
- { "Image left position",
- IMG_GIF ".image.left",
- FT_UINT16, BASE_DEC, NULL, 0x00,
- "Offset between left of Screen and left of Image.",
- HFILL
- }
- },
- { &hf_image_top,
- { "Image top position",
- IMG_GIF ".image.top",
- FT_UINT16, BASE_DEC, NULL, 0x00,
- "Offset between top of Screen and top of Image.",
- HFILL
- }
- },
- { &hf_image_width,
- { "Image width",
- IMG_GIF ".image.width",
- FT_UINT16, BASE_DEC, NULL, 0x00,
- "Image width.",
- HFILL
- }
- },
- { &hf_image_height,
- { "Image height",
- IMG_GIF ".image.height",
- FT_UINT16, BASE_DEC, NULL, 0x00,
- "Image height.",
- HFILL
- }
- },
- { &hf_image_code_size,
- { "LZW minimum code size",
- IMG_GIF ".image.code_size",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- "Minimum code size for the LZW compression.",
- HFILL
- }
- },
- /*
- * Trailer
- */
- { &hf_trailer,
- { "Trailer (End of the GIF stream)",
- IMG_GIF ".end",
- FT_NONE, BASE_NONE, NULL, 0x00,
- "This byte tells the decoder that the data stream is finished.",
- HFILL
- }
- },
- };
-
- /* Setup protocol subtree array */
- static gint *ett[] = {
- &ett_gif,
- &ett_global_flags,
- &ett_local_flags,
- &ett_extension,
- &ett_image,
- };
-
- /* Register the protocol name and description */
- proto_gif = proto_register_protocol(
- "Compuserve GIF",
- "GIF image",
- IMG_GIF
- );
-
- /* Required function calls to register the header fields
- * and subtrees used */
- proto_register_field_array(proto_gif, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
-
- new_register_dissector(IMG_GIF, dissect_gif, proto_gif);
+ /*
+ * Setup list of header fields.
+ */
+ static hf_register_info hf[] = {
+ /*
+ * GIF signature and version
+ */
+ { &hf_version,
+ { "Version",
+ IMG_GIF ".version",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "GIF Version",
+ HFILL
+ }
+ },
+
+ /*
+ * Logical screen descriptor
+ */
+ { &hf_screen_width,
+ { "Screen width",
+ IMG_GIF ".screen.width",
+ FT_UINT16, BASE_DEC, NULL, 0x00,
+ NULL,
+ HFILL
+ }
+ },
+ { &hf_screen_height,
+ { "Screen height",
+ IMG_GIF ".screen.height",
+ FT_UINT16, BASE_DEC, NULL, 0x00,
+ NULL,
+ HFILL
+ }
+ },
+ { &hf_global_color_map_present,
+ { "Global color map is present",
+ IMG_GIF ".global.color_map.present",
+ FT_UINT8, BASE_DEC, VALS(vals_true_false), 0x80,
+ "Indicates if the global color map is present",
+ HFILL
+ }
+ },
+ { &hf_global_color_resolution,
+ { "Bits per color minus 1",
+ IMG_GIF ".global.color_bpp",
+ FT_UINT8, BASE_DEC, NULL, 0x70,
+ "The number of bits per color is one plus the field value.",
+ HFILL
+ }
+ },
+ { &hf_global_color_map_ordered,
+ { "Global color map is ordered",
+ IMG_GIF ".global.color_map.ordered",
+ FT_UINT8, BASE_DEC, VALS(vals_true_false), 0x08,
+ "Indicates whether the global color map is ordered.",
+ HFILL
+ }
+ },
+ { &hf_global_image_bpp,
+ { "Image bits per pixel minus 1",
+ IMG_GIF ".global.bpp",
+ FT_UINT8, BASE_DEC, NULL, 0x07,
+ "The number of bits per pixel is one plus the field value.",
+ HFILL
+ }
+ },
+ { &hf_background_color,
+ { "Background color index",
+ IMG_GIF ".image_background_index",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ "Index of the background color in the color map.",
+ HFILL
+ }
+ },
+ { &hf_pixel_aspect_ratio,
+ { "Global pixel aspect ratio",
+ IMG_GIF ".global.pixel_aspect_ratio",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ "Gives an approximate value of the aspect ratio of the pixels.",
+ HFILL
+ }
+ },
+ { &hf_global_color_map,
+ { "Global color map",
+ IMG_GIF ".global.color_map",
+ FT_BYTES, BASE_NONE, NULL, 0x00,
+ "Global color map.",
+ HFILL
+ }
+ },
+
+ /*
+ * Local color map (part of image)
+ */
+ { &hf_local_color_map_present,
+ { "Local color map is present",
+ IMG_GIF ".local.color_map.present",
+ FT_UINT8, BASE_DEC, VALS(vals_true_false), 0x80,
+ "Indicates if the local color map is present",
+ HFILL
+ }
+ },
+ { &hf_local_color_resolution,
+ { "Bits per color minus 1",
+ IMG_GIF ".local.color_bpp",
+ FT_UINT8, BASE_DEC, NULL, 0x70,
+ "The number of bits per color is one plus the field value.",
+ HFILL
+ }
+ },
+ { &hf_local_color_map_ordered,
+ { "Local color map is ordered",
+ IMG_GIF ".local.color_map.ordered",
+ FT_UINT8, BASE_DEC, VALS(vals_true_false), 0x08,
+ "Indicates whether the local color map is ordered.",
+ HFILL
+ }
+ },
+ { &hf_local_image_bpp,
+ { "Image bits per pixel minus 1",
+ IMG_GIF ".local.bpp",
+ FT_UINT8, BASE_DEC, NULL, 0x07,
+ "The number of bits per pixel is one plus the field value.",
+ HFILL
+ }
+ },
+ { &hf_local_color_map,
+ { "Local color map",
+ IMG_GIF ".local.color_map",
+ FT_BYTES, BASE_NONE, NULL, 0x00,
+ "Local color map.",
+ HFILL
+ }
+ },
+
+ /*
+ * Extension
+ */
+ { &hf_extension,
+ { "Extension",
+ IMG_GIF ".extension",
+ FT_NONE, BASE_NONE, NULL, 0x00,
+ "Extension.",
+ HFILL
+ }
+ },
+ { &hf_extension_label,
+ { "Extension label",
+ IMG_GIF ".extension.label",
+ FT_UINT8, BASE_HEX, VALS(vals_extensions), 0x00,
+ "Extension label.",
+ HFILL
+ }
+ },
+
+ /*
+ * Image
+ */
+ { &hf_image,
+ { "Image",
+ IMG_GIF ".image",
+ FT_NONE, BASE_NONE, NULL, 0x00,
+ "Image.",
+ HFILL
+ }
+ },
+ { &hf_image_left,
+ { "Image left position",
+ IMG_GIF ".image.left",
+ FT_UINT16, BASE_DEC, NULL, 0x00,
+ "Offset between left of Screen and left of Image.",
+ HFILL
+ }
+ },
+ { &hf_image_top,
+ { "Image top position",
+ IMG_GIF ".image.top",
+ FT_UINT16, BASE_DEC, NULL, 0x00,
+ "Offset between top of Screen and top of Image.",
+ HFILL
+ }
+ },
+ { &hf_image_width,
+ { "Image width",
+ IMG_GIF ".image.width",
+ FT_UINT16, BASE_DEC, NULL, 0x00,
+ "Image width.",
+ HFILL
+ }
+ },
+ { &hf_image_height,
+ { "Image height",
+ IMG_GIF ".image.height",
+ FT_UINT16, BASE_DEC, NULL, 0x00,
+ "Image height.",
+ HFILL
+ }
+ },
+ { &hf_image_code_size,
+ { "LZW minimum code size",
+ IMG_GIF ".image.code_size",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ "Minimum code size for the LZW compression.",
+ HFILL
+ }
+ },
+ /*
+ * Trailer
+ */
+ { &hf_trailer,
+ { "Trailer (End of the GIF stream)",
+ IMG_GIF ".end",
+ FT_NONE, BASE_NONE, NULL, 0x00,
+ "This byte tells the decoder that the data stream is finished.",
+ HFILL
+ }
+ },
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_gif,
+ &ett_global_flags,
+ &ett_local_flags,
+ &ett_extension,
+ &ett_image,
+ };
+
+ /* Register the protocol name and description */
+ proto_gif = proto_register_protocol(
+ "Compuserve GIF",
+ "GIF image",
+ IMG_GIF
+ );
+
+ /* Required function calls to register the header fields
+ * and subtrees used */
+ proto_register_field_array(proto_gif, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ new_register_dissector(IMG_GIF, dissect_gif, proto_gif);
}
void
proto_reg_handoff_gif(void)
{
- dissector_handle_t gif_handle = find_dissector(IMG_GIF);
- /* Register the GIF media type */
- dissector_add_string("media_type", "image/gif", gif_handle);
- heur_dissector_add("http", dissect_gif_heur, proto_gif);
+ dissector_handle_t gif_handle = find_dissector(IMG_GIF);
+ /* Register the GIF media type */
+ dissector_add_string("media_type", "image/gif", gif_handle);
+ heur_dissector_add("http", dissect_gif_heur, proto_gif);
}
diff --git a/epan/dissectors/packet-image-jfif.c b/epan/dissectors/packet-image-jfif.c
index a9974249ec..b6389ed8e6 100644
--- a/epan/dissectors/packet-image-jfif.c
+++ b/epan/dissectors/packet-image-jfif.c
@@ -548,6 +548,7 @@ process_app0_segment(proto_tree *tree, tvbuff_t *tvb, guint32 len,
break;
}
}
+ offset = 10;
} else { /* Unknown */
proto_item_append_text(ti, " (unknown identifier)");
offset = 4 + str_size;
diff --git a/epan/dissectors/packet-imf.c b/epan/dissectors/packet-imf.c
index d636d02931..b9c69654eb 100644
--- a/epan/dissectors/packet-imf.c
+++ b/epan/dissectors/packet-imf.c
@@ -282,17 +282,29 @@ static void
header_fields_update_cb(void *r, const char **err)
{
header_field_t *rec = r;
+ char c;
if (rec->header_name == NULL) {
*err = ep_strdup_printf("Header name can't be empty");
- } else {
- g_strstrip(rec->header_name);
- if (rec->header_name[0] == 0) {
- *err = ep_strdup_printf("Header name can't be empty");
- } else {
- *err = NULL;
- }
+ return;
+ }
+
+ g_strstrip(rec->header_name);
+ if (rec->header_name[0] == 0) {
+ *err = ep_strdup_printf("Header name can't be empty");
+ return;
}
+
+ /* Check for invalid characters (to avoid asserting out when
+ * registering the field).
+ */
+ c = proto_check_field_name(rec->header_name);
+ if (c) {
+ *err = ep_strdup_printf("Header name can't contain '%c'", c);
+ return;
+ }
+
+ *err = NULL;
}
static void *
@@ -851,7 +863,7 @@ header_fields_initialize_cb (void)
guint i;
gchar *header_name;
- if (custom_field_table) {
+ if (custom_field_table && hf) {
guint hf_size = g_hash_table_size (custom_field_table);
/* Unregister all fields */
for (i = 0; i < hf_size; i++) {
@@ -1204,7 +1216,7 @@ proto_register_imf(void)
TRUE,
(void*) &header_fields,
&num_header_fields,
- UAT_CAT_GENERAL,
+ UAT_CAT_FIELDS,
NULL,
header_fields_copy_cb,
header_fields_update_cb,
diff --git a/epan/dissectors/packet-inap.c b/epan/dissectors/packet-inap.c
index e449b4425a..de376e7742 100644
--- a/epan/dissectors/packet-inap.c
+++ b/epan/dissectors/packet-inap.c
@@ -1392,25 +1392,25 @@ const value_string inap_opr_code_strings[] = {
/* INAP ERRORS */
static const value_string inap_err_code_string_vals[] = {
- { errcode_canceled , "canceled" },
- { errcode_cancelFailed , "cancelFailed" },
- { errcode_chainingRefused , "chainingRefused" },
- { errcode_eTCFailed , "eTCFailed" },
- { errcode_improperCallerResponse , "improperCallerResponse" },
- { errcode_missingCustomerRecord , "missingCustomerRecord" },
- { errcode_missingParameter , "missingParameter" },
- { errcode_parameterOutOfRange , "parameterOutOfRange" },
- { errcode_requestedInfoError , "requestedInfoError" },
- { errcode_scfTaskRefused , "scfTaskRefused" },
- { errcode_scfReferral , "scfReferral" },
- { errcode_systemFailure , "systemFailure" },
- { errcode_taskRefused , "taskRefused" },
- { errcode_unavailableResource , "unavailableResource" },
- { errcode_unexpectedComponentSequence , "unexpectedComponentSequence" },
- { errcode_unexpectedDataValue , "unexpectedDataValue" },
- { errcode_unexpectedParameter , "unexpectedParameter" },
- { errcode_unknownLegID , "unknownLegID" },
- { errcode_unknownResource , "unknownResource" },
+ { errcode_canceled , "canceled" },
+ { errcode_cancelFailed , "cancelFailed" },
+ { errcode_chainingRefused , "chainingRefused" },
+ { errcode_eTCFailed , "eTCFailed" },
+ { errcode_improperCallerResponse , "improperCallerResponse" },
+ { errcode_missingCustomerRecord , "missingCustomerRecord" },
+ { errcode_missingParameter , "missingParameter" },
+ { errcode_parameterOutOfRange , "parameterOutOfRange" },
+ { errcode_requestedInfoError , "requestedInfoError" },
+ { errcode_scfTaskRefused , "scfTaskRefused" },
+ { errcode_scfReferral , "scfReferral" },
+ { errcode_systemFailure , "systemFailure" },
+ { errcode_taskRefused , "taskRefused" },
+ { errcode_unavailableResource , "unavailableResource" },
+ { errcode_unexpectedComponentSequence , "unexpectedComponentSequence" },
+ { errcode_unexpectedDataValue , "unexpectedDataValue" },
+ { errcode_unexpectedParameter , "unexpectedParameter" },
+ { errcode_unknownLegID , "unknownLegID" },
+ { errcode_unknownResource , "unknownResource" },
{ 0, NULL }
};
@@ -1453,18 +1453,18 @@ dissect_inap_CriticalityType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o
static int
dissect_inap_T_local(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 163 "../../asn1/inap/inap.cnf"
+#line 165 "../../asn1/inap/inap.cnf"
offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
&opcode);
if (inap_opcode_type == INAP_OPCODE_RETURN_ERROR){
- errorCode = opcode;
- col_append_str(actx->pinfo->cinfo, COL_INFO,
+ errorCode = opcode;
+ col_append_str(actx->pinfo->cinfo, COL_INFO,
val_to_str(errorCode, inap_err_code_string_vals, "Unknown INAP error (%u)"));
col_append_str(actx->pinfo->cinfo, COL_INFO, " ");
col_set_fence(actx->pinfo->cinfo, COL_INFO);
}else{
- col_append_str(actx->pinfo->cinfo, COL_INFO,
+ col_append_str(actx->pinfo->cinfo, COL_INFO,
val_to_str(opcode, inap_opr_code_strings, "Unknown INAP (%u)"));
col_append_str(actx->pinfo->cinfo, COL_INFO, " ");
col_set_fence(actx->pinfo->cinfo, COL_INFO);
@@ -1510,7 +1510,7 @@ dissect_inap_Code(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_,
static int
dissect_inap_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 221 "../../asn1/inap/inap.cnf"
+#line 223 "../../asn1/inap/inap.cnf"
proto_tree_add_text(tree, tvb, offset, -1, "Extension Data");
if (obj_id){
offset=call_ber_oid_callback(obj_id, tvb, offset, actx->pinfo, tree);
@@ -1536,7 +1536,7 @@ static const ber_sequence_t ExtensionField_sequence[] = {
static int
dissect_inap_ExtensionField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 216 "../../asn1/inap/inap.cnf"
+#line 218 "../../asn1/inap/inap.cnf"
obj_id = NULL;
@@ -2190,7 +2190,7 @@ dissect_inap_BCSMEvent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
static int
dissect_inap_T_bearerCap(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 253 "../../asn1/inap/inap.cnf"
+#line 255 "../../asn1/inap/inap.cnf"
tvbuff_t *parameter_tvb;
@@ -2345,7 +2345,7 @@ dissect_inap_CalledPartyBusinessGroupID(gboolean implicit_tag _U_, tvbuff_t *tvb
static int
dissect_inap_CalledPartyNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 232 "../../asn1/inap/inap.cnf"
+#line 234 "../../asn1/inap/inap.cnf"
tvbuff_t *parameter_tvb;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
@@ -2396,7 +2396,7 @@ dissect_inap_CallingPartyBusinessGroupID(gboolean implicit_tag _U_, tvbuff_t *tv
static int
dissect_inap_CallingPartyNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 242 "../../asn1/inap/inap.cnf"
+#line 244 "../../asn1/inap/inap.cnf"
tvbuff_t *parameter_tvb;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
@@ -4534,7 +4534,7 @@ dissect_inap_GlobalCallReference(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, i
int
dissect_inap_HighLayerCompatibility(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 295 "../../asn1/inap/inap.cnf"
+#line 297 "../../asn1/inap/inap.cnf"
/*
* -- Indicates the teleservice. For encoding, DSS1 (Q.931) is used.
*/
@@ -4708,7 +4708,7 @@ dissect_inap_NumberingPlan(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off
static int
dissect_inap_OriginalCalledPartyID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 275 "../../asn1/inap/inap.cnf"
+#line 277 "../../asn1/inap/inap.cnf"
tvbuff_t *parameter_tvb;
@@ -4771,7 +4771,7 @@ dissect_inap_Reason(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_
static int
dissect_inap_RedirectingPartyID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 285 "../../asn1/inap/inap.cnf"
+#line 287 "../../asn1/inap/inap.cnf"
tvbuff_t *parameter_tvb;
@@ -4792,7 +4792,7 @@ dissect_inap_RedirectingPartyID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
int
dissect_inap_RedirectionInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 264 "../../asn1/inap/inap.cnf"
+#line 266 "../../asn1/inap/inap.cnf"
tvbuff_t *parameter_tvb;
@@ -5156,7 +5156,7 @@ dissect_inap_T_triggerId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offse
static int
dissect_inap_T_triggerPar(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 202 "../../asn1/inap/inap.cnf"
+#line 204 "../../asn1/inap/inap.cnf"
/* FIX ME */
@@ -7734,7 +7734,7 @@ dissect_inap_MessageReceivedArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
static int
dissect_inap_T_uIScriptSpecificInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 208 "../../asn1/inap/inap.cnf"
+#line 210 "../../asn1/inap/inap.cnf"
/* FIX ME */
@@ -7763,7 +7763,7 @@ dissect_inap_ScriptCloseArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
static int
dissect_inap_T_uIScriptResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 205 "../../asn1/inap/inap.cnf"
+#line 207 "../../asn1/inap/inap.cnf"
/* FIX ME */
@@ -7793,7 +7793,7 @@ dissect_inap_ScriptEventArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
static int
dissect_inap_T_uIScriptSpecificInfo_01(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 211 "../../asn1/inap/inap.cnf"
+#line 213 "../../asn1/inap/inap.cnf"
/* FIX ME */
@@ -7821,7 +7821,7 @@ dissect_inap_ScriptInformationArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
static int
dissect_inap_T_uIScriptSpecificInfo_02(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 213 "../../asn1/inap/inap.cnf"
+#line 215 "../../asn1/inap/inap.cnf"
/* FIX ME */
@@ -8052,7 +8052,7 @@ dissect_inap_T_linkedId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
static int
dissect_inap_T_argument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 190 "../../asn1/inap/inap.cnf"
+#line 192 "../../asn1/inap/inap.cnf"
offset = dissect_invokeData(tree, tvb, offset, actx);
@@ -8071,7 +8071,7 @@ static const ber_sequence_t Invoke_sequence[] = {
static int
dissect_inap_Invoke(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 178 "../../asn1/inap/inap.cnf"
+#line 180 "../../asn1/inap/inap.cnf"
inap_opcode_type=INAP_OPCODE_INVOKE;
@@ -8085,7 +8085,7 @@ dissect_inap_Invoke(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_
static int
dissect_inap_ResultArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 193 "../../asn1/inap/inap.cnf"
+#line 195 "../../asn1/inap/inap.cnf"
offset = dissect_returnResultData(tree, tvb, offset, actx);
@@ -8117,7 +8117,7 @@ static const ber_sequence_t ReturnResult_sequence[] = {
static int
dissect_inap_ReturnResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 181 "../../asn1/inap/inap.cnf"
+#line 183 "../../asn1/inap/inap.cnf"
inap_opcode_type=INAP_OPCODE_RETURN_RESULT;
@@ -8131,7 +8131,7 @@ dissect_inap_ReturnResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs
static int
dissect_inap_T_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 196 "../../asn1/inap/inap.cnf"
+#line 198 "../../asn1/inap/inap.cnf"
offset = dissect_returnErrorData(tree, tvb, offset, actx);
@@ -8151,7 +8151,7 @@ static const ber_sequence_t ReturnError_sequence[] = {
static int
dissect_inap_ReturnError(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 184 "../../asn1/inap/inap.cnf"
+#line 186 "../../asn1/inap/inap.cnf"
inap_opcode_type=INAP_OPCODE_RETURN_ERROR;
@@ -8271,7 +8271,7 @@ static const ber_sequence_t Reject_sequence[] = {
static int
dissect_inap_Reject(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 187 "../../asn1/inap/inap.cnf"
+#line 189 "../../asn1/inap/inap.cnf"
inap_opcode_type=INAP_OPCODE_REJECT;
@@ -9268,10 +9268,12 @@ static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
case opcode_srfCallGap: /* sRFCallGap */
offset= dissect_SRFCallGapArg_PDU(tvb, actx->pinfo , tree);
break;
- cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob");
- proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown invokeData %d",opcode);
- /* todo call the asn.1 dissector */
+ default:
+ cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob");
+ proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown invokeData %d",opcode);
+ /* todo call the asn.1 dissector */
+ break;
}
return offset;
}
diff --git a/epan/dissectors/packet-infiniband.c b/epan/dissectors/packet-infiniband.c
index 88fb0d9dfa..f737bc092c 100644
--- a/epan/dissectors/packet-infiniband.c
+++ b/epan/dissectors/packet-infiniband.c
@@ -180,38 +180,38 @@ static gboolean parse_SUBA_Attribute(proto_tree*, tvbuff_t*, gint *offset, MAD_D
* Subnet Management */
static void parse_NoticesAndTraps(proto_tree*, tvbuff_t*, gint *offset);
static void parse_NodeDescription(proto_tree*, tvbuff_t*, gint *offset);
-static void parse_NodeInfo(proto_tree*, tvbuff_t*, gint *offset);
-static void parse_SwitchInfo(proto_tree*, tvbuff_t*, gint *offset);
-static void parse_GUIDInfo(proto_tree*, tvbuff_t*, gint *offset);
-static void parse_PortInfo(proto_tree*, tvbuff_t*, gint *offset);
+static int parse_NodeInfo(proto_tree*, tvbuff_t*, gint *offset);
+static int parse_SwitchInfo(proto_tree*, tvbuff_t*, gint *offset);
+static int parse_GUIDInfo(proto_tree*, tvbuff_t*, gint *offset);
+static int parse_PortInfo(proto_tree*, tvbuff_t*, gint *offset);
static void parse_P_KeyTable(proto_tree*, tvbuff_t*, gint *offset);
static void parse_SLtoVLMappingTable(proto_tree*, tvbuff_t*, gint *offset);
static void parse_VLArbitrationTable(proto_tree*, tvbuff_t*, gint *offset);
static void parse_LinearForwardingTable(proto_tree*, tvbuff_t*, gint *offset);
static void parse_RandomForwardingTable(proto_tree*, tvbuff_t*, gint *offset);
static void parse_MulticastForwardingTable(proto_tree*, tvbuff_t*, gint *offset);
-static void parse_SMInfo(proto_tree*, tvbuff_t*, gint *offset);
-static void parse_VendorDiag(proto_tree*, tvbuff_t*, gint *offset);
+static int parse_SMInfo(proto_tree*, tvbuff_t*, gint *offset);
+static int parse_VendorDiag(proto_tree*, tvbuff_t*, gint *offset);
static void parse_LedInfo(proto_tree*, tvbuff_t*, gint *offset);
-static void parse_LinkSpeedWidthPairsTable(proto_tree*, tvbuff_t*, gint *offset);
+static int parse_LinkSpeedWidthPairsTable(proto_tree*, tvbuff_t*, gint *offset);
/* These methods parse individual attributes for specific MAD management classes.
* Naming convention FunctionHandle = "parse_" + [Management Class] + "_" + [Attribute Name];
* Where [Management Class] is the shorthand name for the management class as defined
* in the MAD Management Classes section below in this file, and [Attribute Name] is the
* attribute identifier from the corresponding chapter of the IB Specification */
-static void parse_PERF_PortCounters(proto_tree* parentTree, tvbuff_t* tvb, packet_info *pinfo, gint *offset);
-static void parse_PERF_PortCountersExtended(proto_tree* parentTree, tvbuff_t* tvb, packet_info *pinfo, gint *offset);
+static int parse_PERF_PortCounters(proto_tree* parentTree, tvbuff_t* tvb, packet_info *pinfo, gint *offset);
+static int parse_PERF_PortCountersExtended(proto_tree* parentTree, tvbuff_t* tvb, packet_info *pinfo, gint *offset);
/* Subnet Administration */
-static void parse_InformInfo(proto_tree*, tvbuff_t*, gint *offset);
-static void parse_LinkRecord(proto_tree*, tvbuff_t*, gint *offset);
-static void parse_ServiceRecord(proto_tree*, tvbuff_t*, gint *offset);
-static void parse_PathRecord(proto_tree*, tvbuff_t*, gint *offset);
-static void parse_MCMemberRecord(proto_tree*, tvbuff_t*, gint *offset);
-static void parse_TraceRecord(proto_tree*, tvbuff_t*, gint *offset);
-static void parse_MultiPathRecord(proto_tree*, tvbuff_t*, gint *offset);
-static void parse_ServiceAssociationRecord(proto_tree*, tvbuff_t*, gint *offset);
+static int parse_InformInfo(proto_tree*, tvbuff_t*, gint *offset);
+static int parse_LinkRecord(proto_tree*, tvbuff_t*, gint *offset);
+static int parse_ServiceRecord(proto_tree*, tvbuff_t*, gint *offset);
+static int parse_PathRecord(proto_tree*, tvbuff_t*, gint *offset);
+static int parse_MCMemberRecord(proto_tree*, tvbuff_t*, gint *offset);
+static int parse_TraceRecord(proto_tree*, tvbuff_t*, gint *offset);
+static int parse_MultiPathRecord(proto_tree*, tvbuff_t*, gint *offset);
+static int parse_ServiceAssociationRecord(proto_tree*, tvbuff_t*, gint *offset);
/* Subnet Administration */
static void parse_RID(proto_tree*, tvbuff_t*, gint *offset, MAD_Data*);
@@ -319,10 +319,10 @@ static const value_string CM_Attributes[] = {
static const value_string RMPP_Packet_Types[] = {
{ RMPP_ILLEGAL, " Illegal RMPP Type (0)! " },
- { RMPP_DATA, "RMPP (DATA)" },
- { RMPP_ACK, "RMPP (ACK)" },
- { RMPP_STOP, "RMPP (STOP)" },
- { RMPP_ABORT, "RMPP (ABORT)" },
+ { RMPP_DATA, "RMPP (DATA)" },
+ { RMPP_ACK, "RMPP (ACK)" },
+ { RMPP_STOP, "RMPP (STOP)" },
+ { RMPP_ABORT, "RMPP (ABORT)" },
{ 0, NULL}
};
@@ -334,8 +334,8 @@ static const value_string RMPP_Flags[] = {
};
static const value_string RMPP_Status[]= {
- { 0, " (Normal)"},
- { 1, " (Resources Exhausted)"},
+ { 0, " (Normal)"},
+ { 1, " (Resources Exhausted)"},
{ 118, " (Total Time Too Long)"},
{ 119, " (Inconsistent Last and PayloadLength)"},
{ 120, " (Inconsistent First and Segment Number)"},
@@ -1177,16 +1177,16 @@ static const value_string Trap_Description[]= {
* Reliable Connection (RC)
* [7-5] = 000 */
-#define RC_SEND_FIRST 0 /*0x00000000 */
-#define RC_SEND_MIDDLE 1 /*0x00000001 */
-#define RC_SEND_LAST 2 /*0x00000010 */
-#define RC_SEND_LAST_IMM 3 /*0x00000011 */
-#define RC_SEND_ONLY 4 /*0x00000100 */
-#define RC_SEND_ONLY_IMM 5 /*0x00000101 */
-#define RC_RDMA_WRITE_FIRST 6 /*0x00000110 */
-#define RC_RDMA_WRITE_MIDDLE 7 /*0x00000111 */
-#define RC_RDMA_WRITE_LAST 8 /*0x00001000 */
-#define RC_RDMA_WRITE_LAST_IMM 9 /*0x00001001 */
+#define RC_SEND_FIRST 0 /*0x00000000 */
+#define RC_SEND_MIDDLE 1 /*0x00000001 */
+#define RC_SEND_LAST 2 /*0x00000010 */
+#define RC_SEND_LAST_IMM 3 /*0x00000011 */
+#define RC_SEND_ONLY 4 /*0x00000100 */
+#define RC_SEND_ONLY_IMM 5 /*0x00000101 */
+#define RC_RDMA_WRITE_FIRST 6 /*0x00000110 */
+#define RC_RDMA_WRITE_MIDDLE 7 /*0x00000111 */
+#define RC_RDMA_WRITE_LAST 8 /*0x00001000 */
+#define RC_RDMA_WRITE_LAST_IMM 9 /*0x00001001 */
#define RC_RDMA_WRITE_ONLY 10 /*0x00001010 */
#define RC_RDMA_WRITE_ONLY_IMM 11 /*0x00001011 */
#define RC_RDMA_READ_REQUEST 12 /*0x00001100 */
@@ -1228,8 +1228,8 @@ static const value_string Trap_Description[]= {
/* Unreliable Datagram (UD)
* [7-5] = 011 */
-#define UD_SEND_ONLY 100 /*0x01100100 */
-#define UD_SEND_ONLY_IMM 101 /*0x01100101 */
+#define UD_SEND_ONLY 100 /*0x01100100 */
+#define UD_SEND_ONLY_IMM 101 /*0x01100101 */
/* Unreliable Connection (UC)
* [7-5] = 001 */
@@ -1248,71 +1248,71 @@ static const value_string Trap_Description[]= {
static const value_string OpCodeMap[] =
{
- { RC_SEND_FIRST, "RC Send First " },
- { RC_SEND_MIDDLE, "RC Send Middle "},
- { RC_SEND_LAST, "RC Send Last " },
- { RC_SEND_LAST_IMM, "RC Send Last Immediate "},
- { RC_SEND_ONLY, "RC Send Only "},
- { RC_SEND_ONLY_IMM, "RC Send Only Immediate "},
- { RC_RDMA_WRITE_FIRST, "RC RDMA Write First " },
- { RC_RDMA_WRITE_MIDDLE, "RC RDMA Write Middle "},
- { RC_RDMA_WRITE_LAST, "RC RDMA Write Last "},
- { RC_RDMA_WRITE_LAST_IMM, "RC RDMA Write Last Immediate " },
- { RC_RDMA_WRITE_ONLY, "RC RDMA Write Only " },
- { RC_RDMA_WRITE_ONLY_IMM, "RC RDMA Write Only Immediate "},
- { RC_RDMA_READ_REQUEST, "RC RDMA Read Request " },
- { RC_RDMA_READ_RESPONSE_FIRST, "RC RDMA Read Response First " },
+ { RC_SEND_FIRST, "RC Send First " },
+ { RC_SEND_MIDDLE, "RC Send Middle "},
+ { RC_SEND_LAST, "RC Send Last " },
+ { RC_SEND_LAST_IMM, "RC Send Last Immediate "},
+ { RC_SEND_ONLY, "RC Send Only "},
+ { RC_SEND_ONLY_IMM, "RC Send Only Immediate "},
+ { RC_RDMA_WRITE_FIRST, "RC RDMA Write First " },
+ { RC_RDMA_WRITE_MIDDLE, "RC RDMA Write Middle "},
+ { RC_RDMA_WRITE_LAST, "RC RDMA Write Last "},
+ { RC_RDMA_WRITE_LAST_IMM, "RC RDMA Write Last Immediate " },
+ { RC_RDMA_WRITE_ONLY, "RC RDMA Write Only " },
+ { RC_RDMA_WRITE_ONLY_IMM, "RC RDMA Write Only Immediate "},
+ { RC_RDMA_READ_REQUEST, "RC RDMA Read Request " },
+ { RC_RDMA_READ_RESPONSE_FIRST, "RC RDMA Read Response First " },
{ RC_RDMA_READ_RESPONSE_MIDDLE, "RC RDMA Read Response Middle "},
- { RC_RDMA_READ_RESPONSE_LAST, "RC RDMA Read Response Last " },
- { RC_RDMA_READ_RESPONSE_ONLY, "RC RDMA Read Response Only "},
- { RC_ACKNOWLEDGE, "RC Acknowledge " },
- { RC_ATOMIC_ACKNOWLEDGE, "RC Atomic Acknowledge " },
- { RC_CMP_SWAP, "RC Compare Swap " },
- { RC_FETCH_ADD, "RC Fetch Add "},
- { RC_SEND_LAST_INVAL, "RC Send Last Invalidate "},
- { RC_SEND_ONLY_INVAL, "RC Send Only Invalidate " },
-
-
- { RD_SEND_FIRST, "RD Send First "},
- { RD_SEND_MIDDLE,"RD Send Middle " },
- { RD_SEND_LAST, "RD Send Last "},
- { RD_SEND_LAST_IMM, "RD Last Immediate " },
- { RD_SEND_ONLY,"RD Send Only "},
- { RD_SEND_ONLY_IMM,"RD Send Only Immediate "},
- { RD_RDMA_WRITE_FIRST,"RD RDMA Write First "},
- { RD_RDMA_WRITE_MIDDLE, "RD RDMA Write Middle "},
- { RD_RDMA_WRITE_LAST,"RD RDMA Write Last "},
- { RD_RDMA_WRITE_LAST_IMM,"RD RDMA Write Last Immediate "},
- { RD_RDMA_WRITE_ONLY,"RD RDMA Write Only "},
- { RD_RDMA_WRITE_ONLY_IMM,"RD RDMA Write Only Immediate "},
- { RD_RDMA_READ_REQUEST,"RD RDMA Read Request "},
- { RD_RDMA_READ_RESPONSE_FIRST,"RD RDMA Read Response First "},
- { RD_RDMA_READ_RESPONSE_MIDDLE,"RD RDMA Read Response Middle "},
- { RD_RDMA_READ_RESPONSE_LAST,"RD RDMA Read Response Last "},
- { RD_RDMA_READ_RESPONSE_ONLY,"RD RDMA Read Response Only "},
- { RD_ACKNOWLEDGE,"RD Acknowledge "},
- { RD_ATOMIC_ACKNOWLEDGE,"RD Atomic Acknowledge "},
- { RD_CMP_SWAP,"RD Compare Swap "},
- { RD_FETCH_ADD, "RD Fetch Add "},
- { RD_RESYNC,"RD RESYNC "},
-
-
- { UD_SEND_ONLY, "UD Send Only "},
- { UD_SEND_ONLY_IMM, "UD Send Only Immediate "},
-
-
- { UC_SEND_FIRST,"UC Send First "},
- { UC_SEND_MIDDLE,"UC Send Middle "},
- { UC_SEND_LAST,"UC Send Last "},
- { UC_SEND_LAST_IMM,"UC Send Last Immediate "},
- { UC_SEND_ONLY,"UC Send Only "},
- { UC_SEND_ONLY_IMM,"UC Send Only Immediate "},
- { UC_RDMA_WRITE_FIRST,"UC RDMA Write First"},
- { UC_RDMA_WRITE_MIDDLE,"Unreliable Connection RDMA Write Middle "},
- { UC_RDMA_WRITE_LAST,"UC RDMA Write Last "},
- { UC_RDMA_WRITE_LAST_IMM,"UC RDMA Write Last Immediate "},
- { UC_RDMA_WRITE_ONLY,"UC RDMA Write Only "},
- { UC_RDMA_WRITE_ONLY_IMM,"UC RDMA Write Only Immediate "},
+ { RC_RDMA_READ_RESPONSE_LAST, "RC RDMA Read Response Last " },
+ { RC_RDMA_READ_RESPONSE_ONLY, "RC RDMA Read Response Only "},
+ { RC_ACKNOWLEDGE, "RC Acknowledge " },
+ { RC_ATOMIC_ACKNOWLEDGE, "RC Atomic Acknowledge " },
+ { RC_CMP_SWAP, "RC Compare Swap " },
+ { RC_FETCH_ADD, "RC Fetch Add "},
+ { RC_SEND_LAST_INVAL, "RC Send Last Invalidate "},
+ { RC_SEND_ONLY_INVAL, "RC Send Only Invalidate " },
+
+
+ { RD_SEND_FIRST, "RD Send First "},
+ { RD_SEND_MIDDLE, "RD Send Middle " },
+ { RD_SEND_LAST, "RD Send Last "},
+ { RD_SEND_LAST_IMM, "RD Last Immediate " },
+ { RD_SEND_ONLY, "RD Send Only "},
+ { RD_SEND_ONLY_IMM, "RD Send Only Immediate "},
+ { RD_RDMA_WRITE_FIRST, "RD RDMA Write First "},
+ { RD_RDMA_WRITE_MIDDLE, "RD RDMA Write Middle "},
+ { RD_RDMA_WRITE_LAST, "RD RDMA Write Last "},
+ { RD_RDMA_WRITE_LAST_IMM, "RD RDMA Write Last Immediate "},
+ { RD_RDMA_WRITE_ONLY, "RD RDMA Write Only "},
+ { RD_RDMA_WRITE_ONLY_IMM, "RD RDMA Write Only Immediate "},
+ { RD_RDMA_READ_REQUEST, "RD RDMA Read Request "},
+ { RD_RDMA_READ_RESPONSE_FIRST, "RD RDMA Read Response First "},
+ { RD_RDMA_READ_RESPONSE_MIDDLE, "RD RDMA Read Response Middle "},
+ { RD_RDMA_READ_RESPONSE_LAST, "RD RDMA Read Response Last "},
+ { RD_RDMA_READ_RESPONSE_ONLY, "RD RDMA Read Response Only "},
+ { RD_ACKNOWLEDGE, "RD Acknowledge "},
+ { RD_ATOMIC_ACKNOWLEDGE, "RD Atomic Acknowledge "},
+ { RD_CMP_SWAP, "RD Compare Swap "},
+ { RD_FETCH_ADD, "RD Fetch Add "},
+ { RD_RESYNC, "RD RESYNC "},
+
+
+ { UD_SEND_ONLY, "UD Send Only "},
+ { UD_SEND_ONLY_IMM, "UD Send Only Immediate "},
+
+
+ { UC_SEND_FIRST, "UC Send First "},
+ { UC_SEND_MIDDLE, "UC Send Middle "},
+ { UC_SEND_LAST, "UC Send Last "},
+ { UC_SEND_LAST_IMM, "UC Send Last Immediate "},
+ { UC_SEND_ONLY, "UC Send Only "},
+ { UC_SEND_ONLY_IMM, "UC Send Only Immediate "},
+ { UC_RDMA_WRITE_FIRST, "UC RDMA Write First"},
+ { UC_RDMA_WRITE_MIDDLE, "Unreliable Connection RDMA Write Middle "},
+ { UC_RDMA_WRITE_LAST, "UC RDMA Write Last "},
+ { UC_RDMA_WRITE_LAST_IMM, "UC RDMA Write Last Immediate "},
+ { UC_RDMA_WRITE_ONLY, "UC RDMA Write Only "},
+ { UC_RDMA_WRITE_ONLY_IMM, "UC RDMA Write Only Immediate "},
{ 0, NULL}
};
@@ -1518,7 +1518,7 @@ typedef struct {
guint8 req_gid[GID_SIZE],
resp_gid[GID_SIZE]; /* GID of requester/responder, respectively */
guint16 req_lid,
- resp_lid; /* LID of requester/responder, respectively */
+ resp_lid; /* LID of requester/responder, respectively */
guint32 req_qp,
resp_qp; /* QP number of requester/responder, respectively */
guint64 service_id; /* service id for this connection */
@@ -1589,31 +1589,22 @@ static void
dissect_infiniband_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean starts_with_grh)
{
/* Top Level Item */
- proto_item *infiniband_packet = NULL;
+ proto_item *infiniband_packet;
/* The Headers Subtree */
- proto_tree *all_headers_tree = NULL;
+ proto_tree *all_headers_tree;
/* LRH - Local Route Header */
- proto_tree *local_route_header_tree = NULL;
- proto_item *local_route_header_item = NULL;
-
- /* GRH - Global Route Header */
- proto_tree *global_route_header_tree = NULL;
- proto_item *global_route_header_item = NULL;
-
- /* BTH - Base Transport header */
- proto_tree *base_transport_header_tree = NULL;
- proto_item *base_transport_header_item = NULL;
+ proto_item *local_route_header_item;
+ proto_tree *local_route_header_tree;
/* Raw Data */
proto_item *RAWDATA_header_item;
- guint8 lnh_val = 0; /* Link Next Header Value */
+ guint8 lnh_val; /* Link Next Header Value */
gint offset = 0; /* Current Offset */
/* General Variables */
gboolean bthFollows = FALSE; /* Tracks if we are parsing a BTH. This is a significant decision point */
- guint8 virtualLane = 0; /* IB VirtualLane. Keyed off of for detecting subnet admin/management */
guint8 opCode = 0; /* OpCode from BTH header. */
gint32 nextHeaderSequence = -1; /* defined by this dissector. #define which indicates the upcoming header sequence from OpCode */
guint8 nxtHdr = 0; /* Keyed off for header dissection order */
@@ -1626,10 +1617,10 @@ dissect_infiniband_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
/* allocate space for source/destination addresses if not allocated already. we will fill them in later */
if (!src_addr)
- src_addr = ep_alloc(ADDR_MAX_LEN);
+ src_addr = se_alloc(ADDR_MAX_LEN);
if (!dst_addr)
- dst_addr = ep_alloc(ADDR_MAX_LEN);
+ dst_addr = se_alloc(ADDR_MAX_LEN);
pinfo->srcport = pinfo->destport = 0xffffffff; /* set the src/dest QPN to something impossible instead of the default 0,
so we don't mistake it for a MAD. (QP is only 24bit, so can't be 0xffffffff)*/
@@ -1646,7 +1637,7 @@ dissect_infiniband_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
col_clear(pinfo->cinfo, COL_INFO);
/* Get the parent tree from the ERF dissector. We don't want to nest under ERF */
- if(tree && tree->parent)
+ if (tree && tree->parent)
{
/* Set the normal tree outside of ERF */
tree = tree->parent;
@@ -1659,7 +1650,7 @@ dissect_infiniband_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
(temporarily?) disabled the second one. All dissection now goes through the full branch,
using a NULL tree pointer if this is not a full dissection call. Take care not to dereference
the tree pointer or any subtree pointers you create using it and you'll be fine. */
- if(0 && !tree)
+ if (0 && !tree)
{
/* If no packet details are being dissected, extract some high level info for the packet view */
/* Assigns column values rather than full tree population */
@@ -1687,13 +1678,7 @@ dissect_infiniband_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
proto_tree_add_item(local_route_header_tree, hf_infiniband_virtual_lane, tvb, offset, 1, ENC_BIG_ENDIAN);
-
- /* Get the Virtual Lane. We'll use this to identify Subnet Management and Subnet Administration Packets. */
- virtualLane = tvb_get_guint8(tvb, offset);
- virtualLane = virtualLane & 0xF0;
-
-
- proto_tree_add_item(local_route_header_tree, hf_infiniband_link_version, tvb, offset, 1, ENC_BIG_ENDIAN); offset+=1;
+ proto_tree_add_item(local_route_header_tree, hf_infiniband_link_version, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1;
proto_tree_add_item(local_route_header_tree, hf_infiniband_service_level, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(local_route_header_tree, hf_infiniband_reserved2, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1703,7 +1688,7 @@ dissect_infiniband_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
/* Save Link Next Header... This tells us what the next header is. */
lnh_val = tvb_get_guint8(tvb, offset);
lnh_val = lnh_val & 0x03;
- offset+=1;
+ offset += 1;
proto_tree_add_item(local_route_header_tree, hf_infiniband_destination_local_id, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -1713,7 +1698,7 @@ dissect_infiniband_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
*((guint16*) dst_addr) = tvb_get_ntohs(tvb, offset);
SET_ADDRESS(&pinfo->dst, AT_IB, sizeof(guint16), dst_addr);
- offset+=2;
+ offset += 2;
proto_tree_add_item(local_route_header_tree, hf_infiniband_reserved5, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -1722,22 +1707,25 @@ dissect_infiniband_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
packetLength = packetLength * 4; /* Multiply by 4 to get true byte length. This is by specification. */
/* PktLen is size in 4 byte words (byteSize /4). */
- proto_tree_add_item(local_route_header_tree, hf_infiniband_packet_length, tvb, offset, 2, ENC_BIG_ENDIAN); offset+=2;
+ proto_tree_add_item(local_route_header_tree, hf_infiniband_packet_length, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2;
proto_tree_add_item(local_route_header_tree, hf_infiniband_source_local_id, tvb, offset, 2, ENC_BIG_ENDIAN);
/* Set Source in packet view. */
*((guint16*) src_addr) = tvb_get_ntohs(tvb, offset);
SET_ADDRESS(&pinfo->src, AT_IB, sizeof(guint16), src_addr);
- offset+=2;
+ offset += 2;
packetLength -= 8; /* Shave 8 bytes for the LRH. */
skip_lrh:
/* Key off Link Next Header. This tells us what High Level Data Format we have */
- switch(lnh_val)
+ switch (lnh_val)
{
- case IBA_GLOBAL:
+ case IBA_GLOBAL: {
+ proto_item *global_route_header_item;
+ proto_tree *global_route_header_tree;
+
global_route_header_item = proto_tree_add_item(all_headers_tree, hf_infiniband_GRH, tvb, offset, 40, ENC_NA);
proto_item_set_text(global_route_header_item, "%s", "Global Route Header");
global_route_header_tree = proto_item_add_subtree(global_route_header_item, ett_grh);
@@ -1750,8 +1738,8 @@ skip_lrh:
nxtHdr = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(global_route_header_tree, hf_infiniband_next_header, tvb, offset, 1, ENC_BIG_ENDIAN); offset +=1;
- proto_tree_add_item(global_route_header_tree, hf_infiniband_hop_limit, tvb, offset, 1, ENC_BIG_ENDIAN); offset +=1;
+ proto_tree_add_item(global_route_header_tree, hf_infiniband_next_header, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1;
+ proto_tree_add_item(global_route_header_tree, hf_infiniband_hop_limit, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1;
proto_tree_add_item(global_route_header_tree, hf_infiniband_source_gid, tvb, offset, 16, ENC_NA);
tvb_get_ipv6(tvb, offset, &SRCgid);
@@ -1773,13 +1761,16 @@ skip_lrh:
offset += 16;
packetLength -= 40; /* Shave 40 bytes for GRH */
- if(nxtHdr != 0x1B)
+ if (nxtHdr != 0x1B)
{
/* Some kind of packet being transported globally with IBA, but locally it is not IBA - no BTH following. */
break;
}
+ }
/* otherwise fall through and start parsing BTH */
- case IBA_LOCAL:
+ case IBA_LOCAL: {
+ proto_item *base_transport_header_item;
+ proto_tree *base_transport_header_tree;
bthFollows = TRUE;
base_transport_header_item = proto_tree_add_item(all_headers_tree, hf_infiniband_BTH, tvb, offset, 12, ENC_NA);
proto_item_set_text(base_transport_header_item, "%s", "Base Transport Header");
@@ -1788,25 +1779,25 @@ skip_lrh:
/* Get the OpCode - this tells us what headers are following */
opCode = tvb_get_guint8(tvb, offset);
- col_append_str(pinfo->cinfo, COL_INFO, val_to_str((guint32)opCode, OpCodeMap, "Unknown OpCode"));
- offset +=1;
+ col_append_str(pinfo->cinfo, COL_INFO, val_to_str_const((guint32)opCode, OpCodeMap, "Unknown OpCode"));
+ offset += 1;
proto_tree_add_item(base_transport_header_tree, hf_infiniband_solicited_event, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(base_transport_header_tree, hf_infiniband_migreq, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(base_transport_header_tree, hf_infiniband_pad_count, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(base_transport_header_tree, hf_infiniband_transport_header_version, tvb, offset, 1, ENC_BIG_ENDIAN); offset +=1;
- proto_tree_add_item(base_transport_header_tree, hf_infiniband_partition_key, tvb, offset, 2, ENC_BIG_ENDIAN); offset +=2;
- proto_tree_add_item(base_transport_header_tree, hf_infiniband_reserved8, tvb, offset, 1, ENC_BIG_ENDIAN); offset +=1;
+ proto_tree_add_item(base_transport_header_tree, hf_infiniband_transport_header_version, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1;
+ proto_tree_add_item(base_transport_header_tree, hf_infiniband_partition_key, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2;
+ proto_tree_add_item(base_transport_header_tree, hf_infiniband_reserved8, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1;
proto_tree_add_item(base_transport_header_tree, hf_infiniband_destination_qp, tvb, offset, 3, ENC_BIG_ENDIAN);
- pinfo->destport = tvb_get_ntoh24(tvb, offset); offset +=3;
+ pinfo->destport = tvb_get_ntoh24(tvb, offset); offset += 3;
proto_tree_add_item(base_transport_header_tree, hf_infiniband_acknowledge_request, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(base_transport_header_tree, hf_infiniband_reserved7, tvb, offset, 1, ENC_BIG_ENDIAN); offset +=1;
- proto_tree_add_item(base_transport_header_tree, hf_infiniband_packet_sequence_number, tvb, offset, 3, ENC_BIG_ENDIAN); offset +=3;
+ proto_tree_add_item(base_transport_header_tree, hf_infiniband_reserved7, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1;
+ proto_tree_add_item(base_transport_header_tree, hf_infiniband_packet_sequence_number, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3;
packetLength -= 12; /* Shave 12 for Base Transport Header */
-
- break;
+ }
+ break;
case IP_NON_IBA:
/* Raw IPv6 Packet */
g_snprintf(dst_addr, ADDR_MAX_LEN, "IPv6 over IB Packet");
@@ -1826,7 +1817,7 @@ skip_lrh:
/* Base Transport header is hit quite often, however it is alone since it is the exception not the rule */
/* Only IBA Local packets use it */
- if(bthFollows)
+ if (bthFollows)
{
/* Find our next header sequence based on the Opcode
* Each case decrements the packetLength by the amount of bytes consumed by each header.
@@ -1838,7 +1829,7 @@ skip_lrh:
/* find_next_header_sequence gives us the DEFINE value corresponding to the header order following */
/* Enumerations are named intuitively, e.g. RDETH DETH PAYLOAD means there is an RDETH Header, DETH Header, and a packet payload */
- switch(nextHeaderSequence)
+ switch (nextHeaderSequence)
{
case RDETH_DETH_PAYLD:
parse_RDETH(all_headers_tree, tvb, &offset);
@@ -1877,10 +1868,10 @@ skip_lrh:
parse_RETH(all_headers_tree, tvb, &offset);
parse_IMMDT(all_headers_tree, tvb, &offset);
- packetLength -= 4; /* RDETH */
- packetLength -= 8; /* DETH */
+ packetLength -= 4; /* RDETH */
+ packetLength -= 8; /* DETH */
packetLength -= 16; /* RETH */
- packetLength -= 4; /* IMMDT */
+ packetLength -= 4; /* IMMDT */
parse_PAYLOAD(all_headers_tree, pinfo, tvb, &offset, packetLength);
break;
@@ -1889,9 +1880,9 @@ skip_lrh:
parse_DETH(all_headers_tree, pinfo, tvb, &offset);
parse_RETH(all_headers_tree, tvb, &offset);
- packetLength -= 4; /* RDETH */
- packetLength -= 8; /* DETH */
- packetLength -= 16; /* RETH */
+ /*packetLength -= 4;*/ /* RDETH */
+ /*packetLength -= 8;*/ /* DETH */
+ /*packetLength -= 16;*/ /* RETH */
break;
case RDETH_AETH_PAYLD:
@@ -1913,8 +1904,8 @@ skip_lrh:
case RDETH_AETH:
parse_AETH(all_headers_tree, tvb, &offset);
- packetLength -= 4; /* RDETH */
- packetLength -= 4; /* AETH */
+ /*packetLength -= 4;*/ /* RDETH */
+ /*packetLength -= 4;*/ /* AETH */
break;
@@ -1923,9 +1914,9 @@ skip_lrh:
parse_AETH(all_headers_tree, tvb, &offset);
parse_ATOMICACKETH(all_headers_tree, tvb, &offset);
- packetLength -= 4; /* RDETH */
- packetLength -= 4; /* AETH */
- packetLength -= 8; /* AtomicAckETH */
+ /*packetLength -= 4;*/ /* RDETH */
+ /*packetLength -= 4;*/ /* AETH */
+ /*packetLength -= 8;*/ /* AtomicAckETH */
break;
@@ -1934,17 +1925,17 @@ skip_lrh:
parse_DETH(all_headers_tree, pinfo, tvb, &offset);
parse_ATOMICETH(all_headers_tree, tvb, &offset);
- packetLength -= 4; /* RDETH */
- packetLength -= 8; /* DETH */
- packetLength -= 28; /* AtomicETH */
+ /*packetLength -= 4;*/ /* RDETH */
+ /*packetLength -= 8;*/ /* DETH */
+ /*packetLength -= 28;*/ /* AtomicETH */
break;
case RDETH_DETH:
parse_RDETH(all_headers_tree, tvb, &offset);
parse_DETH(all_headers_tree, pinfo, tvb, &offset);
- packetLength -= 4; /* RDETH */
- packetLength -= 8; /* DETH */
+ /*packetLength -= 4;*/ /* RDETH */
+ /*packetLength -= 8;*/ /* DETH */
break;
case DETH_PAYLD:
@@ -1975,7 +1966,7 @@ skip_lrh:
case RETH:
parse_RETH(all_headers_tree, tvb, &offset);
- packetLength -= 16; /* RETH */
+ /*packetLength -= 16;*/ /* RETH */
break;
case AETH_PAYLD:
@@ -1988,21 +1979,21 @@ skip_lrh:
case AETH:
parse_AETH(all_headers_tree, tvb, &offset);
- packetLength -= 4; /* AETH */
+ /*packetLength -= 4;*/ /* AETH */
break;
case AETH_ATOMICACKETH:
parse_AETH(all_headers_tree, tvb, &offset);
parse_ATOMICACKETH(all_headers_tree, tvb, &offset);
- packetLength -= 4; /* AETH */
- packetLength -= 8; /* AtomicAckETH */
+ /*packetLength -= 4;*/ /* AETH */
+ /*packetLength -= 8;*/ /* AtomicAckETH */
break;
case ATOMICETH:
parse_ATOMICETH(all_headers_tree, tvb, &offset);
- packetLength -= 28; /* AtomicETH */
+ /*packetLength -= 28;*/ /* AtomicETH */
break;
case IETH_PAYLD:
@@ -2032,18 +2023,18 @@ skip_lrh:
/* Doing it this way rather than in a variety of places according to the specific packet */
/* If we've already displayed it crc_length comes out 0 */
crc_length = tvb_reported_length_remaining(tvb, offset);
- if(crc_length == 6)
+ if (crc_length == 6)
{
- proto_tree_add_item(all_headers_tree, hf_infiniband_invariant_crc, tvb, offset, 4, ENC_BIG_ENDIAN); offset +=4;
- proto_tree_add_item(all_headers_tree, hf_infiniband_variant_crc, tvb, offset, 2, ENC_BIG_ENDIAN); offset+=2;
+ proto_tree_add_item(all_headers_tree, hf_infiniband_invariant_crc, tvb, offset, 4, ENC_BIG_ENDIAN); offset += 4;
+ proto_tree_add_item(all_headers_tree, hf_infiniband_variant_crc, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2;
}
- else if(crc_length == 4)
+ else if (crc_length == 4)
{
- proto_tree_add_item(all_headers_tree, hf_infiniband_invariant_crc, tvb, offset, 4, ENC_BIG_ENDIAN); offset +=4;
+ proto_tree_add_item(all_headers_tree, hf_infiniband_invariant_crc, tvb, offset, 4, ENC_BIG_ENDIAN); offset += 4;
}
- else if(crc_length == 2)
+ else if (crc_length == 2)
{
- proto_tree_add_item(all_headers_tree, hf_infiniband_variant_crc, tvb, offset, 2, ENC_BIG_ENDIAN); offset+=2;
+ proto_tree_add_item(all_headers_tree, hf_infiniband_variant_crc, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2;
}
}
@@ -2052,21 +2043,21 @@ static void
dissect_infiniband_link(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
/* Top Level Item */
- proto_item *infiniband_link_packet = NULL;
+ proto_item *infiniband_link_packet;
/* The Link Subtree */
- proto_tree *link_tree = NULL;
+ proto_tree *link_tree;
- proto_item *operand_item = NULL;
- gint offset = 0; /* Current Offset */
- guint8 operand; /* Link packet Operand */
+ proto_item *operand_item;
+ gint offset = 0; /* Current Offset */
+ guint8 operand; /* Link packet Operand */
/* allocate space for source/destination addresses if not allocated already. we will fill them in later */
if (!src_addr)
- src_addr = ep_alloc(ADDR_MAX_LEN);
+ src_addr = se_alloc(ADDR_MAX_LEN);
if (!dst_addr)
- dst_addr = ep_alloc(ADDR_MAX_LEN);
+ dst_addr = se_alloc(ADDR_MAX_LEN);
operand = tvb_get_guint8(tvb, offset);
operand = (operand & 0xF0) >> 4;
@@ -2079,7 +2070,7 @@ dissect_infiniband_link(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
val_to_str(operand, Operand_Description, "Unknown (0x%1x)"));
/* Get the parent tree from the ERF dissector. We don't want to nest under ERF */
- if(tree && tree->parent)
+ if (tree && tree->parent)
{
/* Set the normal tree outside of ERF */
tree = tree->parent;
@@ -2087,7 +2078,7 @@ dissect_infiniband_link(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
top_tree = tree;
}
- if(!tree)
+ if (!tree)
{
/* If no packet details are being dissected, extract some high level info for the packet view */
/* Assigns column values rather than full tree population */
@@ -2115,7 +2106,6 @@ dissect_infiniband_link(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset += 2;
proto_tree_add_item(link_tree, hf_infiniband_link_lpcrc, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
}
}
@@ -2130,73 +2120,73 @@ dissect_infiniband_link(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static gint32
find_next_header_sequence(guint32 OpCode)
{
- if(contains(OpCode, &opCode_PAYLD[0], (gint32)sizeof(opCode_PAYLD)))
+ if (contains(OpCode, &opCode_PAYLD[0], (gint32)array_length(opCode_PAYLD)))
return PAYLD;
- if(contains(OpCode, &opCode_IMMDT_PAYLD[0], (gint32)sizeof(opCode_IMMDT_PAYLD)))
+ if (contains(OpCode, &opCode_IMMDT_PAYLD[0], (gint32)array_length(opCode_IMMDT_PAYLD)))
return IMMDT_PAYLD;
- if(contains(OpCode, &opCode_RDETH_DETH_PAYLD[0], (gint32)sizeof(opCode_RDETH_DETH_PAYLD)))
+ if (contains(OpCode, &opCode_RDETH_DETH_PAYLD[0], (gint32)array_length(opCode_RDETH_DETH_PAYLD)))
return RDETH_DETH_PAYLD;
- if(contains(OpCode, &opCode_RETH_PAYLD[0], (gint32)sizeof(opCode_RETH_PAYLD)))
+ if (contains(OpCode, &opCode_RETH_PAYLD[0], (gint32)array_length(opCode_RETH_PAYLD)))
return RETH_PAYLD;
- if(contains(OpCode, &opCode_RDETH_AETH_PAYLD[0], (gint32)sizeof(opCode_RDETH_AETH_PAYLD)))
+ if (contains(OpCode, &opCode_RDETH_AETH_PAYLD[0], (gint32)array_length(opCode_RDETH_AETH_PAYLD)))
return RDETH_AETH_PAYLD;
- if(contains(OpCode, &opCode_AETH_PAYLD[0], (gint32)sizeof(opCode_AETH_PAYLD)))
+ if (contains(OpCode, &opCode_AETH_PAYLD[0], (gint32)array_length(opCode_AETH_PAYLD)))
return AETH_PAYLD;
- if(contains(OpCode, &opCode_RDETH_DETH_IMMDT_PAYLD[0], (gint32)sizeof(opCode_RDETH_DETH_IMMDT_PAYLD)))
+ if (contains(OpCode, &opCode_RDETH_DETH_IMMDT_PAYLD[0], (gint32)array_length(opCode_RDETH_DETH_IMMDT_PAYLD)))
return RDETH_DETH_IMMDT_PAYLD;
- if(contains(OpCode, &opCode_RETH_IMMDT_PAYLD[0], (gint32)sizeof(opCode_RETH_IMMDT_PAYLD)))
+ if (contains(OpCode, &opCode_RETH_IMMDT_PAYLD[0], (gint32)array_length(opCode_RETH_IMMDT_PAYLD)))
return RETH_IMMDT_PAYLD;
- if(contains(OpCode, &opCode_RDETH_DETH_RETH_PAYLD[0], (gint32)sizeof(opCode_RDETH_DETH_RETH_PAYLD)))
+ if (contains(OpCode, &opCode_RDETH_DETH_RETH_PAYLD[0], (gint32)array_length(opCode_RDETH_DETH_RETH_PAYLD)))
return RDETH_DETH_RETH_PAYLD;
- if(contains(OpCode, &opCode_ATOMICETH[0], (gint32)sizeof(opCode_ATOMICETH)))
+ if (contains(OpCode, &opCode_ATOMICETH[0], (gint32)array_length(opCode_ATOMICETH)))
return ATOMICETH;
- if(contains(OpCode, &opCode_IETH_PAYLD[0], (gint32)sizeof(opCode_IETH_PAYLD)))
+ if (contains(OpCode, &opCode_IETH_PAYLD[0], (gint32)array_length(opCode_IETH_PAYLD)))
return IETH_PAYLD;
- if(contains(OpCode, &opCode_RDETH_DETH_ATOMICETH[0], (gint32)sizeof(opCode_RDETH_DETH_ATOMICETH)))
+ if (contains(OpCode, &opCode_RDETH_DETH_ATOMICETH[0], (gint32)array_length(opCode_RDETH_DETH_ATOMICETH)))
return RDETH_DETH_ATOMICETH;
- if((OpCode ^ RC_ACKNOWLEDGE) == 0)
+ if ((OpCode ^ RC_ACKNOWLEDGE) == 0)
return AETH;
- if((OpCode ^ RC_RDMA_READ_REQUEST) == 0)
+ if ((OpCode ^ RC_RDMA_READ_REQUEST) == 0)
return RETH;
- if((OpCode ^ RC_ATOMIC_ACKNOWLEDGE) == 0)
+ if ((OpCode ^ RC_ATOMIC_ACKNOWLEDGE) == 0)
return AETH_ATOMICACKETH;
- if((OpCode ^ RD_RDMA_READ_RESPONSE_MIDDLE) == 0)
+ if ((OpCode ^ RD_RDMA_READ_RESPONSE_MIDDLE) == 0)
return RDETH_PAYLD;
- if((OpCode ^ RD_ACKNOWLEDGE) == 0)
+ if ((OpCode ^ RD_ACKNOWLEDGE) == 0)
return RDETH_AETH;
- if((OpCode ^ RD_ATOMIC_ACKNOWLEDGE) == 0)
+ if ((OpCode ^ RD_ATOMIC_ACKNOWLEDGE) == 0)
return RDETH_AETH_ATOMICACKETH;
- if((OpCode ^ RD_RDMA_WRITE_ONLY_IMM) == 0)
+ if ((OpCode ^ RD_RDMA_WRITE_ONLY_IMM) == 0)
return RDETH_DETH_RETH_IMMDT_PAYLD;
- if((OpCode ^ RD_RDMA_READ_REQUEST) == 0)
+ if ((OpCode ^ RD_RDMA_READ_REQUEST) == 0)
return RDETH_DETH_RETH;
- if((OpCode ^ RD_RESYNC) == 0)
+ if ((OpCode ^ RD_RESYNC) == 0)
return RDETH_DETH;
- if((OpCode ^ UD_SEND_ONLY) == 0)
+ if ((OpCode ^ UD_SEND_ONLY) == 0)
return DETH_PAYLD;
- if((OpCode ^ UD_SEND_ONLY_IMM) == 0)
+ if ((OpCode ^ UD_SEND_ONLY_IMM) == 0)
return DETH_IMMDT_PAYLD;
return -1;
@@ -2212,9 +2202,9 @@ static gboolean
contains(guint32 OpCode, guint32* Codes, gint32 length)
{
gint32 i;
- for(i = 0; i < length; i++)
+ for (i = 0; i < length; i++)
{
- if((OpCode ^ Codes[i]) == 0)
+ if ((OpCode ^ Codes[i]) == 0)
return TRUE;
}
return FALSE;
@@ -2227,17 +2217,17 @@ contains(guint32 OpCode, guint32* Codes, gint32 length)
static void
parse_RDETH(proto_tree * parentTree, tvbuff_t *tvb, gint *offset)
{
- gint local_offset = *offset;
+ gint local_offset = *offset;
/* RDETH - Reliable Datagram Extended Transport Header */
- proto_tree *RDETH_header_tree = NULL;
- proto_item *RDETH_header_item = NULL;
+ proto_item *RDETH_header_item;
+ proto_tree *RDETH_header_tree;
RDETH_header_item = proto_tree_add_item(parentTree, hf_infiniband_RDETH, tvb, local_offset, 4, ENC_NA);
proto_item_set_text(RDETH_header_item, "%s", "RDETH - Reliable Datagram Extended Transport Header");
RDETH_header_tree = proto_item_add_subtree(RDETH_header_item, ett_rdeth);
- proto_tree_add_item(RDETH_header_tree, hf_infiniband_reserved8_RDETH, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(RDETH_header_tree, hf_infiniband_ee_context, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset+=3;
+ proto_tree_add_item(RDETH_header_tree, hf_infiniband_reserved8_RDETH, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(RDETH_header_tree, hf_infiniband_ee_context, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset += 3;
*offset = local_offset;
}
@@ -2248,19 +2238,19 @@ parse_RDETH(proto_tree * parentTree, tvbuff_t *tvb, gint *offset)
static void
parse_DETH(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, gint *offset)
{
- gint local_offset = *offset;
+ gint local_offset = *offset;
/* DETH - Datagram Extended Transport Header */
- proto_tree *DETH_header_tree = NULL;
- proto_item *DETH_header_item = NULL;
+ proto_item *DETH_header_item;
+ proto_tree *DETH_header_tree;
DETH_header_item = proto_tree_add_item(parentTree, hf_infiniband_DETH, tvb, local_offset, 8, ENC_NA);
proto_item_set_text(DETH_header_item, "%s", "DETH - Datagram Extended Transport Header");
DETH_header_tree = proto_item_add_subtree(DETH_header_item, ett_deth);
- proto_tree_add_item(DETH_header_tree, hf_infiniband_queue_key, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset+=4;
- proto_tree_add_item(DETH_header_tree, hf_infiniband_reserved8_DETH, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
+ proto_tree_add_item(DETH_header_tree, hf_infiniband_queue_key, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset += 4;
+ proto_tree_add_item(DETH_header_tree, hf_infiniband_reserved8_DETH, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
proto_tree_add_item(DETH_header_tree, hf_infiniband_source_qp, tvb, local_offset, 3, ENC_BIG_ENDIAN);
- pinfo->srcport = tvb_get_ntoh24(tvb, local_offset); local_offset+=3;
+ pinfo->srcport = tvb_get_ntoh24(tvb, local_offset); local_offset += 3;
*offset = local_offset;
}
@@ -2272,18 +2262,18 @@ parse_DETH(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, gint *offs
static void
parse_RETH(proto_tree * parentTree, tvbuff_t *tvb, gint *offset)
{
- gint local_offset = *offset;
+ gint local_offset = *offset;
/* RETH - RDMA Extended Transport Header */
- proto_tree *RETH_header_tree = NULL;
- proto_item *RETH_header_item = NULL;
+ proto_item *RETH_header_item;
+ proto_tree *RETH_header_tree;
RETH_header_item = proto_tree_add_item(parentTree, hf_infiniband_RETH, tvb, local_offset, 16, ENC_NA);
proto_item_set_text(RETH_header_item, "%s", "RETH - RDMA Extended Transport Header");
RETH_header_tree = proto_item_add_subtree(RETH_header_item, ett_reth);
- proto_tree_add_item(RETH_header_tree, hf_infiniband_virtual_address, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset+=8;
- proto_tree_add_item(RETH_header_tree, hf_infiniband_remote_key, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset+=4;
- proto_tree_add_item(RETH_header_tree, hf_infiniband_dma_length, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset+=4;
+ proto_tree_add_item(RETH_header_tree, hf_infiniband_virtual_address, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
+ proto_tree_add_item(RETH_header_tree, hf_infiniband_remote_key, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset += 4;
+ proto_tree_add_item(RETH_header_tree, hf_infiniband_dma_length, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset += 4;
*offset = local_offset;
}
@@ -2295,19 +2285,19 @@ parse_RETH(proto_tree * parentTree, tvbuff_t *tvb, gint *offset)
static void
parse_ATOMICETH(proto_tree * parentTree, tvbuff_t *tvb, gint *offset)
{
- gint local_offset = *offset;
+ gint local_offset = *offset;
/* AtomicETH - Atomic Extended Transport Header */
- proto_tree *ATOMICETH_header_tree = NULL;
- proto_item *ATOMICETH_header_item = NULL;
+ proto_item *ATOMICETH_header_item;
+ proto_tree *ATOMICETH_header_tree;
ATOMICETH_header_item = proto_tree_add_item(parentTree, hf_infiniband_AtomicETH, tvb, local_offset, 28, ENC_NA);
proto_item_set_text(ATOMICETH_header_item, "%s", "AtomicETH - Atomic Extended Transport Header");
ATOMICETH_header_tree = proto_item_add_subtree(ATOMICETH_header_item, ett_atomiceth);
- proto_tree_add_item(ATOMICETH_header_tree, hf_infiniband_virtual_address, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset+=8;
- proto_tree_add_item(ATOMICETH_header_tree, hf_infiniband_remote_key, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset+=4;
- proto_tree_add_item(ATOMICETH_header_tree, hf_infiniband_swap_or_add_data, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset+=8;
- proto_tree_add_item(ATOMICETH_header_tree, hf_infiniband_compare_data, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset+=8;
+ proto_tree_add_item(ATOMICETH_header_tree, hf_infiniband_virtual_address, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
+ proto_tree_add_item(ATOMICETH_header_tree, hf_infiniband_remote_key, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset += 4;
+ proto_tree_add_item(ATOMICETH_header_tree, hf_infiniband_swap_or_add_data, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
+ proto_tree_add_item(ATOMICETH_header_tree, hf_infiniband_compare_data, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
*offset = local_offset;
}
@@ -2318,17 +2308,17 @@ parse_ATOMICETH(proto_tree * parentTree, tvbuff_t *tvb, gint *offset)
static void
parse_AETH(proto_tree * parentTree, tvbuff_t *tvb, gint *offset)
{
- gint local_offset = *offset;
+ gint local_offset = *offset;
/* AETH - ACK Extended Transport Header */
- proto_tree *AETH_header_tree = NULL;
- proto_item *AETH_header_item = NULL;
+ proto_item *AETH_header_item;
+ proto_tree *AETH_header_tree;
AETH_header_item = proto_tree_add_item(parentTree, hf_infiniband_AETH, tvb, local_offset, 4, ENC_NA);
proto_item_set_text(AETH_header_item, "%s", "AETH - ACK Extended Transport Header");
AETH_header_tree = proto_item_add_subtree(AETH_header_item, ett_aeth);
- proto_tree_add_item(AETH_header_tree, hf_infiniband_syndrome, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(AETH_header_tree, hf_infiniband_message_sequence_number, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset+=3;
+ proto_tree_add_item(AETH_header_tree, hf_infiniband_syndrome, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(AETH_header_tree, hf_infiniband_message_sequence_number, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset += 3;
*offset = local_offset;
}
@@ -2340,15 +2330,15 @@ parse_AETH(proto_tree * parentTree, tvbuff_t *tvb, gint *offset)
static void
parse_ATOMICACKETH(proto_tree * parentTree, tvbuff_t *tvb, gint *offset)
{
- gint local_offset = *offset;
+ gint local_offset = *offset;
/* AtomicAckEth - Atomic ACK Extended Transport Header */
- proto_tree *ATOMICACKETH_header_tree = NULL;
- proto_item *ATOMICACKETH_header_item = NULL;
+ proto_item *ATOMICACKETH_header_item;
+ proto_tree *ATOMICACKETH_header_tree;
ATOMICACKETH_header_item = proto_tree_add_item(parentTree, hf_infiniband_AtomicAckETH, tvb, local_offset, 8, ENC_NA);
proto_item_set_text(ATOMICACKETH_header_item, "%s", "ATOMICACKETH - Atomic ACK Extended Transport Header");
ATOMICACKETH_header_tree = proto_item_add_subtree(ATOMICACKETH_header_item, ett_atomicacketh);
- proto_tree_add_item(ATOMICACKETH_header_tree, hf_infiniband_original_remote_data, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset+=8;
+ proto_tree_add_item(ATOMICACKETH_header_tree, hf_infiniband_original_remote_data, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
*offset = local_offset;
}
@@ -2359,15 +2349,15 @@ parse_ATOMICACKETH(proto_tree * parentTree, tvbuff_t *tvb, gint *offset)
static void
parse_IMMDT(proto_tree * parentTree, tvbuff_t *tvb, gint *offset)
{
- gint local_offset = *offset;
+ gint local_offset = *offset;
/* IMMDT - Immediate Data Extended Transport Header */
- proto_tree *IMMDT_header_tree = NULL;
- proto_item *IMMDT_header_item = NULL;
+ proto_item *IMMDT_header_item;
+ proto_tree *IMMDT_header_tree;
IMMDT_header_item = proto_tree_add_item(parentTree, hf_infiniband_IMMDT, tvb, local_offset, 4, ENC_NA);
proto_item_set_text(IMMDT_header_item, "%s", "IMMDT - Immediate Data Extended Transport Header");
IMMDT_header_tree = proto_item_add_subtree(IMMDT_header_item, ett_immdt);
- proto_tree_add_item(IMMDT_header_tree, hf_infiniband_IMMDT, tvb, local_offset, 4, ENC_NA); local_offset+=4;
+ proto_tree_add_item(IMMDT_header_tree, hf_infiniband_IMMDT, tvb, local_offset, 4, ENC_NA); local_offset += 4;
*offset = local_offset;
}
@@ -2378,16 +2368,16 @@ parse_IMMDT(proto_tree * parentTree, tvbuff_t *tvb, gint *offset)
static void
parse_IETH(proto_tree * parentTree, tvbuff_t *tvb, gint *offset)
{
- gint local_offset = *offset;
+ gint local_offset = *offset;
/* IETH - Invalidate Extended Transport Header */
- proto_tree *IETH_header_tree = NULL;
- proto_item *IETH_header_item = NULL;
+ proto_item *IETH_header_item;
+ proto_tree *IETH_header_tree;
IETH_header_item = proto_tree_add_item(parentTree, hf_infiniband_IETH, tvb, local_offset, 4, ENC_NA);
proto_item_set_text(IETH_header_item, "%s", "IETH - Invalidate Extended Transport Header");
IETH_header_tree = proto_item_add_subtree(IETH_header_item, ett_ieth);
- proto_tree_add_item(IETH_header_tree, hf_infiniband_IETH, tvb, local_offset, 4, ENC_NA); local_offset+=4;
+ proto_tree_add_item(IETH_header_tree, hf_infiniband_IETH, tvb, local_offset, 4, ENC_NA); local_offset += 4;
*offset = local_offset;
}
@@ -2400,18 +2390,16 @@ parse_IETH(proto_tree * parentTree, tvbuff_t *tvb, gint *offset)
* IN: length - Length of Payload */
static void parse_PAYLOAD(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, gint *offset, gint length)
{
- gint local_offset = *offset;
+ gint local_offset = *offset;
/* Payload - Packet Payload */
- proto_tree *PAYLOAD_header_tree = NULL;
- proto_item *PAYLOAD_header_item = NULL;
- guint8 management_class;
- tvbuff_t *volatile next_tvb;
- gint captured_length, reported_length;
- guint16 etype, reserved;
- const char *saved_proto;
+ guint8 management_class;
+ tvbuff_t *volatile next_tvb;
+ gint captured_length, reported_length;
+ guint16 etype, reserved;
+ const char *saved_proto;
volatile gboolean dissector_found = FALSE;
- if(!tvb_bytes_exist(tvb, *offset, length)) /* previously consumed bytes + offset was all the data - none or corrupt payload */
+ if (!tvb_bytes_exist(tvb, *offset, length)) /* previously consumed bytes + offset was all the data - none or corrupt payload */
{
col_set_str(pinfo->cinfo, COL_INFO, "Invalid Packet Length from LRH! [Malformed Packet]");
col_set_fence(pinfo->cinfo, COL_INFO);
@@ -2423,27 +2411,27 @@ static void parse_PAYLOAD(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *
{
management_class = tvb_get_guint8(tvb, (*offset) + 1);
- if(((management_class >= (guint8)VENDOR_1_START) && (management_class <= (guint8)VENDOR_1_END))
+ if (((management_class >= (guint8)VENDOR_1_START) && (management_class <= (guint8)VENDOR_1_END))
|| ((management_class >= (guint8)VENDOR_2_START) && (management_class <= (guint8)VENDOR_2_END)))
{
/* parse vendor specific */
parse_VENDOR_MANAGEMENT(parentTree, tvb, offset);
}
- else if((management_class >= (guint8)APPLICATION_START) && (management_class <= (guint8)APPLICATION_END))
+ else if ((management_class >= (guint8)APPLICATION_START) && (management_class <= (guint8)APPLICATION_END))
{
/* parse application specific */
parse_APPLICATION_MANAGEMENT(parentTree, tvb, offset);
}
- else if(((management_class == (guint8)0x00) || (management_class == (guint8)0x02))
- || ((management_class >= (guint8)0x50) && (management_class <= (guint8)0x80))
- || ((management_class >= (guint8)0x82)))
+ else if (((management_class == (guint8)0x00) || (management_class == (guint8)0x02))
+ || ((management_class >= (guint8)0x50) && (management_class <= (guint8)0x80))
+ || ((management_class >= (guint8)0x82)))
{
/* parse reserved classes */
parse_RESERVED_MANAGEMENT(parentTree, tvb, offset);
}
else /* we have a normal management_class */
{
- switch(management_class)
+ switch (management_class)
{
case SUBN_LID_ROUTED:
/* parse subn man lid routed */
@@ -2491,14 +2479,14 @@ static void parse_PAYLOAD(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *
* We need the total length of the packet, - length of previous headers, + offset where payload started.
* We also need to reserve 6 bytes for the CRCs which are not actually part of the payload. */
- etype = tvb_get_ntohs(tvb, local_offset);
- reserved = tvb_get_ntohs(tvb, local_offset + 2);
+ etype = tvb_get_ntohs(tvb, local_offset);
+ reserved = tvb_get_ntohs(tvb, local_offset + 2);
/* try to recognize whether or not this is a Mellanox EoIB packet by the
transport type and the 4 first bits of the payload */
- if (pref_dissect_eoib &&
- transport_type == TRANSPORT_UD &&
- tvb_get_bits8(tvb, local_offset*8, 4) == 0xC) {
+ if (pref_dissect_eoib &&
+ (transport_type == TRANSPORT_UD) &&
+ (tvb_get_bits8(tvb, local_offset*8, 4) == 0xC)) {
dissector_found = parse_EoIB(parentTree, tvb, local_offset, pinfo);
}
@@ -2511,17 +2499,15 @@ static void parse_PAYLOAD(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *
* We see if the first few bytes look like an EtherType header, and if so
* call the appropriate dissector. If not we call the "data" dissector.
*/
- if (!dissector_found && pref_identify_iba_payload && reserved == 0) {
+ if (!dissector_found && pref_identify_iba_payload && (reserved == 0)) {
void *pd_save;
/* Get the captured length and reported length of the data
after the Ethernet type. */
captured_length = tvb_length_remaining(tvb, local_offset+4);
- reported_length = tvb_reported_length_remaining(tvb,
- local_offset+4);
+ reported_length = tvb_reported_length_remaining(tvb, local_offset+4);
- next_tvb = tvb_new_subset(tvb, local_offset+4, captured_length,
- reported_length);
+ next_tvb = tvb_new_subset(tvb, local_offset+4, captured_length, reported_length);
pinfo->ethertype = etype;
@@ -2579,6 +2565,8 @@ static void parse_PAYLOAD(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *
ENDTRY;
if (dissector_found) {
+ proto_item *PAYLOAD_header_item;
+ proto_tree *PAYLOAD_header_tree;
/* now create payload entry to show Ethertype */
PAYLOAD_header_item = proto_tree_add_item(parentTree, hf_infiniband_payload, tvb, local_offset, tvb_reported_length_remaining(tvb, local_offset)-6, ENC_NA);
proto_item_set_text(PAYLOAD_header_item, "%s", "IBA Payload - appears to be EtherType encapsulated");
@@ -2636,9 +2624,9 @@ static void parse_PAYLOAD(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *
* IN/OUT: The current and updated offset */
static void parse_VENDOR(proto_tree * parentTree, tvbuff_t *tvb, gint *offset)
{
- gint local_offset = *offset;
- proto_tree *VENDOR_header_tree = NULL;
- proto_item *VENDOR_header_item = NULL;
+ gint local_offset = *offset;
+ proto_item *VENDOR_header_item;
+ proto_tree *VENDOR_header_tree;
VENDOR_header_item = proto_tree_add_item(parentTree, hf_infiniband_vendor, tvb, local_offset, 4, ENC_NA);
proto_item_set_text(VENDOR_header_item, "%s", "Vendor Specific or Unknown Header Sequence");
@@ -2674,12 +2662,12 @@ static void parse_IPvSix(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, pa
* IN: pinfo - packet info from wireshark */
static void parse_RWH(proto_tree *ah_tree, tvbuff_t *tvb, gint *offset, packet_info *pinfo)
{
- guint16 ether_type;
+ guint16 ether_type;
tvbuff_t *next_tvb;
/* RWH - Raw Header */
- proto_tree *RWH_header_tree = NULL;
- proto_item *RWH_header_item = NULL;
+ proto_item *RWH_header_item;
+ proto_tree *RWH_header_tree;
gint captured_length, reported_length;
@@ -2704,7 +2692,7 @@ static void parse_RWH(proto_tree *ah_tree, tvbuff_t *tvb, gint *offset, packet_i
/* Construct a tvbuff for the payload after the Ethernet type,
* not including the FCS. */
- if (captured_length >= 0 && reported_length >= 0) {
+ if ((captured_length >= 0) && (reported_length >= 0)) {
if (reported_length >= 2)
reported_length -= 2;
if (captured_length > reported_length)
@@ -2731,11 +2719,11 @@ static gboolean parse_EoIB(proto_tree *tree, tvbuff_t *tvb, gint offset, packet_
{
proto_item *header_item;
proto_tree *header_subtree;
- gboolean ms;
- gint8 seg_offset;
- tvbuff_t *encap_tvb;
+ gboolean ms;
+ gint8 seg_offset;
+ tvbuff_t *encap_tvb;
/* the encapsulated eoib size (including the header!) is remaining length-6 bytes of CRC */
- int encap_size = tvb_reported_length_remaining(tvb, offset) - 6;
+ int encap_size = tvb_reported_length_remaining(tvb, offset) - 6;
if (encap_size < 4) {
/* not even large enough to contain the eoib encap header. error! */
@@ -2757,7 +2745,7 @@ static gboolean parse_EoIB(proto_tree *tree, tvbuff_t *tvb, gint offset, packet_
proto_tree_add_item(header_subtree, hf_infiniband_ms, tvb, offset, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(header_subtree, hf_infiniband_seg_off, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2;
- proto_tree_add_item(header_subtree, hf_infiniband_seg_id, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2;
+ proto_tree_add_item(header_subtree, hf_infiniband_seg_id, tvb, offset, 2, ENC_BIG_ENDIAN);
if (seg_offset || ms) {
/* this is a fragment of an encapsulated Ethernet jumbo frame, parse as data */
@@ -2779,12 +2767,12 @@ static gboolean parse_EoIB(proto_tree *tree, tvbuff_t *tvb, gint offset, packet_
static void parse_SUBN_LID_ROUTED(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, gint *offset)
{
/* Parse the Common MAD Header */
- MAD_Data MadData;
- gint local_offset;
- proto_tree *SUBN_LID_ROUTED_header_tree = NULL;
- proto_item *SUBN_LID_ROUTED_header_item = NULL;
+ MAD_Data MadData;
+ gint local_offset;
+ proto_item *SUBN_LID_ROUTED_header_item;
+ proto_tree *SUBN_LID_ROUTED_header_tree;
- if(!parse_MAD_Common(parentTree, tvb, offset, &MadData))
+ if (!parse_MAD_Common(parentTree, tvb, offset, &MadData))
{
/* TODO: Mark Corrupt Packet - Not enough bytes exist for at least the Common MAD header which is present in all MAD packets */
return;
@@ -2796,19 +2784,19 @@ static void parse_SUBN_LID_ROUTED(proto_tree *parentTree, packet_info *pinfo, tv
SUBN_LID_ROUTED_header_item = proto_tree_add_item(parentTree, hf_infiniband_SMP_LID, tvb, local_offset - 24, 256, ENC_NA);
proto_item_set_text(SUBN_LID_ROUTED_header_item, "%s", "SMP (LID Routed) ");
SUBN_LID_ROUTED_header_tree = proto_item_add_subtree(SUBN_LID_ROUTED_header_item, ett_subn_lid_routed);
- proto_tree_add_item(SUBN_LID_ROUTED_header_tree, hf_infiniband_m_key, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset +=8;
- proto_tree_add_item(SUBN_LID_ROUTED_header_tree, hf_infiniband_reserved256, tvb, local_offset, 32, ENC_NA); local_offset +=32;
+ proto_tree_add_item(SUBN_LID_ROUTED_header_tree, hf_infiniband_m_key, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
+ proto_tree_add_item(SUBN_LID_ROUTED_header_tree, hf_infiniband_reserved256, tvb, local_offset, 32, ENC_NA); local_offset += 32;
label_SUBM_Method(SUBN_LID_ROUTED_header_item, &MadData, pinfo);
label_SUBM_Attribute(SUBN_LID_ROUTED_header_item, &MadData, pinfo);
/* Try to do the detail parse of the attribute. If there is an error, or the attribute is unknown, we'll just highlight the generic data. */
- if(!parse_SUBM_Attribute(SUBN_LID_ROUTED_header_tree, tvb, &local_offset, &MadData))
+ if (!parse_SUBM_Attribute(SUBN_LID_ROUTED_header_tree, tvb, &local_offset, &MadData))
{
- proto_tree_add_item(SUBN_LID_ROUTED_header_tree, hf_infiniband_smp_data, tvb, local_offset, 64, ENC_NA); local_offset +=64;
+ proto_tree_add_item(SUBN_LID_ROUTED_header_tree, hf_infiniband_smp_data, tvb, local_offset, 64, ENC_NA); local_offset += 64;
}
- proto_tree_add_item(SUBN_LID_ROUTED_header_tree, hf_infiniband_reserved1024, tvb, local_offset, 128, ENC_NA); local_offset +=128;
+ proto_tree_add_item(SUBN_LID_ROUTED_header_tree, hf_infiniband_reserved1024, tvb, local_offset, 128, ENC_NA); local_offset += 128;
*offset = local_offset;
}
@@ -2819,12 +2807,12 @@ static void parse_SUBN_LID_ROUTED(proto_tree *parentTree, packet_info *pinfo, tv
static void parse_SUBN_DIRECTED_ROUTE(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, gint *offset)
{
/* Parse the Common MAD Header */
- MAD_Data MadData;
- gint local_offset;
- proto_tree *SUBN_DIRECTED_ROUTE_header_tree = NULL;
- proto_item *SUBN_DIRECTED_ROUTE_header_item = NULL;
+ MAD_Data MadData;
+ gint local_offset;
+ proto_item *SUBN_DIRECTED_ROUTE_header_item;
+ proto_tree *SUBN_DIRECTED_ROUTE_header_tree;
- if(!parse_MAD_Common(parentTree, tvb, offset, &MadData))
+ if (!parse_MAD_Common(parentTree, tvb, offset, &MadData))
{
/* TODO: Mark Corrupt Packet - Not enough bytes exist for at least the Common MAD header which is present in all MAD packets */
return;
@@ -2844,23 +2832,23 @@ static void parse_SUBN_DIRECTED_ROUTE(proto_tree *parentTree, packet_info *pinfo
/* Place us at offset 4, the "D" Bit (Direction bit for Directed Route SMPs) */
local_offset -= 20;
proto_tree_add_item(SUBN_DIRECTED_ROUTE_header_tree, hf_infiniband_d, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(SUBN_DIRECTED_ROUTE_header_tree, hf_infiniband_smp_status, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset +=2;
- proto_tree_add_item(SUBN_DIRECTED_ROUTE_header_tree, hf_infiniband_hop_pointer, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
- proto_tree_add_item(SUBN_DIRECTED_ROUTE_header_tree, hf_infiniband_hop_count, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
+ proto_tree_add_item(SUBN_DIRECTED_ROUTE_header_tree, hf_infiniband_smp_status, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(SUBN_DIRECTED_ROUTE_header_tree, hf_infiniband_hop_pointer, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(SUBN_DIRECTED_ROUTE_header_tree, hf_infiniband_hop_count, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
local_offset += 16; /* Skip over the rest of the Common MAD Header... It's already dissected by parse_MAD_Common */
- proto_tree_add_item(SUBN_DIRECTED_ROUTE_header_tree, hf_infiniband_m_key, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset +=8;
- proto_tree_add_item(SUBN_DIRECTED_ROUTE_header_tree, hf_infiniband_dr_slid, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset +=2;
- proto_tree_add_item(SUBN_DIRECTED_ROUTE_header_tree, hf_infiniband_dr_dlid, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset +=2;
- proto_tree_add_item(SUBN_DIRECTED_ROUTE_header_tree, hf_infiniband_reserved28, tvb, local_offset, 28, ENC_NA); local_offset +=28;
+ proto_tree_add_item(SUBN_DIRECTED_ROUTE_header_tree, hf_infiniband_m_key, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
+ proto_tree_add_item(SUBN_DIRECTED_ROUTE_header_tree, hf_infiniband_dr_slid, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(SUBN_DIRECTED_ROUTE_header_tree, hf_infiniband_dr_dlid, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(SUBN_DIRECTED_ROUTE_header_tree, hf_infiniband_reserved28, tvb, local_offset, 28, ENC_NA); local_offset += 28;
/* Try to do the detail parse of the attribute. If there is an error, or the attribute is unknown, we'll just highlight the generic data. */
- if(!parse_SUBM_Attribute(SUBN_DIRECTED_ROUTE_header_tree, tvb, &local_offset, &MadData))
+ if (!parse_SUBM_Attribute(SUBN_DIRECTED_ROUTE_header_tree, tvb, &local_offset, &MadData))
{
- proto_tree_add_item(SUBN_DIRECTED_ROUTE_header_tree, hf_infiniband_smp_data, tvb, local_offset, 64, ENC_NA); local_offset +=64;
+ proto_tree_add_item(SUBN_DIRECTED_ROUTE_header_tree, hf_infiniband_smp_data, tvb, local_offset, 64, ENC_NA); local_offset += 64;
}
- proto_tree_add_item(SUBN_DIRECTED_ROUTE_header_tree, hf_infiniband_initial_path, tvb, local_offset, 64, ENC_NA); local_offset +=64;
- proto_tree_add_item(SUBN_DIRECTED_ROUTE_header_tree, hf_infiniband_return_path, tvb, local_offset, 64, ENC_NA); local_offset +=64;
+ proto_tree_add_item(SUBN_DIRECTED_ROUTE_header_tree, hf_infiniband_initial_path, tvb, local_offset, 64, ENC_NA); local_offset += 64;
+ proto_tree_add_item(SUBN_DIRECTED_ROUTE_header_tree, hf_infiniband_return_path, tvb, local_offset, 64, ENC_NA); local_offset += 64;
*offset = local_offset;
}
@@ -2872,17 +2860,17 @@ static void parse_SUBN_DIRECTED_ROUTE(proto_tree *parentTree, packet_info *pinfo
static void parse_SUBNADMN(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, gint *offset)
{
/* Parse the Common MAD Header */
- MAD_Data MadData;
- gint local_offset;
- proto_tree *SUBNADMN_header_tree = NULL;
- proto_item *SUBNADMN_header_item = NULL;
+ MAD_Data MadData;
+ gint local_offset;
+ proto_item *SUBNADMN_header_item;
+ proto_tree *SUBNADMN_header_tree;
- if(!parse_MAD_Common(parentTree, tvb, offset, &MadData))
+ if (!parse_MAD_Common(parentTree, tvb, offset, &MadData))
{
/* TODO: Mark Corrupt Packet - Not enough bytes exist for at least the Common MAD header which is present in all MAD packets */
return;
}
- if(!parse_RMPP(parentTree, tvb, offset))
+ if (!parse_RMPP(parentTree, tvb, offset))
{
/* TODO: Mark Corrupt Packet */
return;
@@ -2893,17 +2881,17 @@ static void parse_SUBNADMN(proto_tree *parentTree, packet_info *pinfo, tvbuff_t
proto_item_set_text(SUBNADMN_header_item, "%s", "SMA");
SUBNADMN_header_tree = proto_item_add_subtree(SUBNADMN_header_item, ett_subnadmin);
- proto_tree_add_item(SUBNADMN_header_tree, hf_infiniband_sm_key, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset+=8;
- proto_tree_add_item(SUBNADMN_header_tree, hf_infiniband_attribute_offset, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=4;
- proto_tree_add_item(SUBNADMN_header_tree, hf_infiniband_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=4;
- proto_tree_add_item(SUBNADMN_header_tree, hf_infiniband_component_mask, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset+=8;
+ proto_tree_add_item(SUBNADMN_header_tree, hf_infiniband_sm_key, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
+ proto_tree_add_item(SUBNADMN_header_tree, hf_infiniband_attribute_offset, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 4;
+ proto_tree_add_item(SUBNADMN_header_tree, hf_infiniband_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 4;
+ proto_tree_add_item(SUBNADMN_header_tree, hf_infiniband_component_mask, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
label_SUBA_Method(SUBNADMN_header_item, &MadData, pinfo);
label_SUBA_Attribute(SUBNADMN_header_item, &MadData, pinfo);
- if(!parse_SUBA_Attribute(SUBNADMN_header_tree, tvb, &local_offset, &MadData))
+ if (!parse_SUBA_Attribute(SUBNADMN_header_tree, tvb, &local_offset, &MadData))
{
- proto_tree_add_item(SUBNADMN_header_tree, hf_infiniband_subnet_admin_data, tvb, local_offset, 200, ENC_NA); local_offset+=200;
+ proto_tree_add_item(SUBNADMN_header_tree, hf_infiniband_subnet_admin_data, tvb, local_offset, 200, ENC_NA); local_offset += 200;
}
*offset = local_offset;
}
@@ -2916,11 +2904,11 @@ static void parse_SUBNADMN(proto_tree *parentTree, packet_info *pinfo, tvbuff_t
static void parse_PERF(proto_tree *parentTree, tvbuff_t *tvb, packet_info *pinfo, gint *offset)
{
/* Parse the Common MAD Header */
- MAD_Data MadData;
- gint local_offset;
- proto_item *PERF_header_item = NULL;
+ MAD_Data MadData;
+ gint local_offset;
+ proto_item *PERF_header_item;
- if(!parse_MAD_Common(parentTree, tvb, offset, &MadData))
+ if (!parse_MAD_Common(parentTree, tvb, offset, &MadData))
{
/* TODO: Mark Corrupt Packet - Not enough bytes exist for at least the Common MAD header which is present in all MAD packets */
return;
@@ -2951,11 +2939,11 @@ static void parse_PERF(proto_tree *parentTree, tvbuff_t *tvb, packet_info *pinfo
static void parse_BM(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
{
/* Parse the Common MAD Header */
- MAD_Data MadData;
- gint local_offset;
- proto_item *PERF_header_item = NULL;
+ MAD_Data MadData;
+ gint local_offset;
+ proto_item *PERF_header_item;
- if(!parse_MAD_Common(parentTree, tvb, offset, &MadData))
+ if (!parse_MAD_Common(parentTree, tvb, offset, &MadData))
{
/* TODO: Mark Corrupt Packet - Not enough bytes exist for at least the Common MAD header which is present in all MAD packets */
return;
@@ -2974,11 +2962,11 @@ static void parse_BM(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
static void parse_DEV_MGT(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
{
/* Parse the Common MAD Header */
- MAD_Data MadData;
- gint local_offset;
- proto_item *PERF_header_item = NULL;
+ MAD_Data MadData;
+ gint local_offset;
+ proto_item *PERF_header_item;
- if(!parse_MAD_Common(parentTree, tvb, offset, &MadData))
+ if (!parse_MAD_Common(parentTree, tvb, offset, &MadData))
{
/* TODO: Mark Corrupt Packet - Not enough bytes exist for at least the Common MAD header which is present in all MAD packets */
return;
@@ -2995,22 +2983,18 @@ static void parse_DEV_MGT(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
* IN/OUT: The current and updated offset */
static void parse_COM_MGT(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, gint *offset)
{
- MAD_Data MadData;
- gint local_offset;
- guint32 local_qpn = 0, remote_qpn = 0;
- guint8 *local_gid, *remote_gid;
- guint32 local_lid, remote_lid;
- guint64 serviceid;
- const char *label = NULL;
- proto_item *CM_header_item = NULL;
- proto_tree *CM_header_tree = NULL;
- connection_context *connection = NULL; /* we'll use this to store new connections this CM packet is establishing*/
- tvbuff_t *next_tvb;
-
- local_gid = ep_alloc(GID_SIZE);
+ MAD_Data MadData;
+ gint local_offset;
+ guint8 *local_gid, *remote_gid;
+ const char *label;
+ proto_item *CM_header_item;
+ proto_tree *CM_header_tree;
+ tvbuff_t *next_tvb;
+
+ local_gid = ep_alloc(GID_SIZE);
remote_gid = ep_alloc(GID_SIZE);
- if(!parse_MAD_Common(parentTree, tvb, offset, &MadData))
+ if (!parse_MAD_Common(parentTree, tvb, offset, &MadData))
{
/* TODO: Mark Corrupt Packet - Not enough bytes exist for at least the Common MAD header which is present in all MAD packets */
return;
@@ -3019,7 +3003,7 @@ static void parse_COM_MGT(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *
CM_header_item = proto_tree_add_item(parentTree, hf_infiniband_smp_data, tvb, local_offset, 140, ENC_NA);
- label = val_to_str(MadData.attributeID, CM_Attributes, "(Unknown CM Attribute)");
+ label = val_to_str_const(MadData.attributeID, CM_Attributes, "(Unknown CM Attribute)");
proto_item_set_text(CM_header_item, "CM %s", label);
col_clear(pinfo->cinfo, COL_INFO);
@@ -3028,7 +3012,11 @@ static void parse_COM_MGT(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *
CM_header_tree = proto_item_add_subtree(CM_header_item, ett_cm);
switch (MadData.attributeID) {
- case ATTR_CM_REQ:
+ case ATTR_CM_REQ: {
+ guint32 local_qpn;
+ guint32 local_lid;
+ guint32 remote_lid;
+ guint64 serviceid;
proto_tree_add_item(CM_header_tree, hf_cm_req_local_comm_id, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset += 4;
local_offset += 4; /* skip reserved */
proto_tree_add_item(CM_header_tree, hf_cm_req_service_id, tvb, local_offset, 8, ENC_BIG_ENDIAN);
@@ -3090,10 +3078,11 @@ static void parse_COM_MGT(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *
/* the following saves information about the conversation this packet defines,
so there's no point in doing it more than once per packet */
- if(!pinfo->fd->flags.visited)
+ if (!pinfo->fd->flags.visited)
{
+ connection_context *connection;
+ conversation_infiniband_data *proto_data;
conversation_t *conv;
- conversation_infiniband_data *proto_data = NULL;
guint64 *hash_key = g_malloc(sizeof(guint64));
/* create a new connection context and store it in the hash table */
@@ -3130,8 +3119,10 @@ static void parse_COM_MGT(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *
proto_tree_add_item(CM_header_tree, hf_cm_req_private_data, tvb, local_offset, 92, ENC_NA);
local_offset += 92;
+ }
break;
- case ATTR_CM_REP:
+ case ATTR_CM_REP: {
+ guint32 remote_qpn;
proto_tree_add_item(CM_header_tree, hf_cm_rep_localcommid, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset += 4;
proto_tree_add_item(CM_header_tree, hf_cm_rep_remotecommid, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset += 4;
proto_tree_add_item(CM_header_tree, hf_cm_rep_localqkey, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset += 4;
@@ -3154,9 +3145,10 @@ static void parse_COM_MGT(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *
/* the following saves information about the conversation this packet defines,
so there's no point in doing it more than once per packet */
- if(!pinfo->fd->flags.visited)
+ if (!pinfo->fd->flags.visited)
{
/* get the previously saved context for this connection */
+ connection_context *connection;
guint64 hash_key;
hash_key = MadData.transactionID;
ADD_ADDRESS_TO_HASH(hash_key, &pinfo->dst);
@@ -3164,7 +3156,7 @@ static void parse_COM_MGT(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *
/* if an appropriate connection was not found there's something wrong, but nothing we can
do about it here - so just skip saving the context */
- if(connection)
+ if (connection)
{
address req_addr,
resp_addr; /* we'll fill these in and pass them to conversation_new */
@@ -3216,6 +3208,7 @@ static void parse_COM_MGT(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *
proto_tree_add_item(CM_header_tree, hf_cm_rep_privatedata, tvb, local_offset, 196, ENC_NA);
local_offset += 196;
+ }
break;
case ATTR_CM_RTU:
proto_tree_add_item(CM_header_tree, hf_cm_rtu_localcommid, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset += 4;
@@ -3250,11 +3243,11 @@ static void parse_COM_MGT(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *
static void parse_SNMP(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
{
/* Parse the Common MAD Header */
- MAD_Data MadData;
- gint local_offset;
- proto_item *PERF_header_item = NULL;
+ MAD_Data MadData;
+ gint local_offset;
+ proto_item *PERF_header_item;
- if(!parse_MAD_Common(parentTree, tvb, offset, &MadData))
+ if (!parse_MAD_Common(parentTree, tvb, offset, &MadData))
{
/* TODO: Mark Corrupt Packet - Not enough bytes exist for at least the Common MAD header which is present in all MAD packets */
return;
@@ -3273,11 +3266,11 @@ static void parse_SNMP(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
static void parse_VENDOR_MANAGEMENT(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
{
/* Parse the Common MAD Header */
- MAD_Data MadData;
- gint local_offset;
- proto_item *PERF_header_item = NULL;
+ MAD_Data MadData;
+ gint local_offset;
+ proto_item *PERF_header_item;
- if(!parse_MAD_Common(parentTree, tvb, offset, &MadData))
+ if (!parse_MAD_Common(parentTree, tvb, offset, &MadData))
{
/* TODO: Mark Corrupt Packet - Not enough bytes exist for at least the Common MAD header which is present in all MAD packets */
return;
@@ -3296,11 +3289,11 @@ static void parse_VENDOR_MANAGEMENT(proto_tree *parentTree, tvbuff_t *tvb, gint
static void parse_APPLICATION_MANAGEMENT(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
{
/* Parse the Common MAD Header */
- MAD_Data MadData;
- gint local_offset;
- proto_item *PERF_header_item = NULL;
+ MAD_Data MadData;
+ gint local_offset;
+ proto_item *PERF_header_item;
- if(!parse_MAD_Common(parentTree, tvb, offset, &MadData))
+ if (!parse_MAD_Common(parentTree, tvb, offset, &MadData))
{
/* TODO: Mark Corrupt Packet - Not enough bytes exist for at least the Common MAD header which is present in all MAD packets */
return;
@@ -3323,11 +3316,11 @@ static void parse_APPLICATION_MANAGEMENT(proto_tree *parentTree, tvbuff_t *tvb,
static void parse_RESERVED_MANAGEMENT(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
{
/* Parse the Common MAD Header */
- MAD_Data MadData;
- gint local_offset;
- proto_item *PERF_header_item = NULL;
+ MAD_Data MadData;
+ gint local_offset;
+ proto_item *PERF_header_item;
- if(!parse_MAD_Common(parentTree, tvb, offset, &MadData))
+ if (!parse_MAD_Common(parentTree, tvb, offset, &MadData))
{
/* TODO: Mark Corrupt Packet - Not enough bytes exist for at least the Common MAD header which is present in all MAD packets */
return;
@@ -3345,13 +3338,13 @@ static void parse_RESERVED_MANAGEMENT(proto_tree *parentTree, tvbuff_t *tvb, gin
* IN/OUT: MadData - the data from the MAD header */
static gboolean parse_MAD_Common(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_Data* MadData)
{
- gint local_offset = *offset;
- proto_tree *MAD_header_tree = NULL;
- proto_item *MAD_header_item = NULL;
+ gint local_offset = *offset;
+ proto_item *MAD_header_item;
+ proto_tree *MAD_header_tree;
- if(MadData == NULL)
+ if (MadData == NULL)
return FALSE;
- if(!tvb_bytes_exist(tvb, *offset, 256))
+ if (!tvb_bytes_exist(tvb, *offset, 256))
return FALSE;
/* Get the Management Class to decide between LID Routed and Direct Route */
@@ -3371,16 +3364,16 @@ static gboolean parse_MAD_Common(proto_tree *parentTree, tvbuff_t *tvb, gint *of
proto_item_set_text(MAD_header_item, "%s", "MAD Header - Common Management Datagram");
MAD_header_tree = proto_item_add_subtree(MAD_header_item, ett_mad);
- proto_tree_add_item(MAD_header_tree, hf_infiniband_base_version, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(MAD_header_tree, hf_infiniband_mgmt_class, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(MAD_header_tree, hf_infiniband_class_version, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(MAD_header_tree, hf_infiniband_method, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(MAD_header_tree, hf_infiniband_status, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(MAD_header_tree, hf_infiniband_class_specific, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(MAD_header_tree, hf_infiniband_transaction_id, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset+=8;
- proto_tree_add_item(MAD_header_tree, hf_infiniband_attribute_id, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(MAD_header_tree, hf_infiniband_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(MAD_header_tree, hf_infiniband_attribute_modifier, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset+=4;
+ proto_tree_add_item(MAD_header_tree, hf_infiniband_base_version, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(MAD_header_tree, hf_infiniband_mgmt_class, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(MAD_header_tree, hf_infiniband_class_version, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(MAD_header_tree, hf_infiniband_method, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(MAD_header_tree, hf_infiniband_status, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(MAD_header_tree, hf_infiniband_class_specific, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(MAD_header_tree, hf_infiniband_transaction_id, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
+ proto_tree_add_item(MAD_header_tree, hf_infiniband_attribute_id, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(MAD_header_tree, hf_infiniband_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(MAD_header_tree, hf_infiniband_attribute_modifier, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset += 4;
proto_tree_add_item(MAD_header_tree, hf_infiniband_data, tvb, local_offset, MAD_DATA_SIZE, ENC_NA);
*offset = local_offset; /* Move the offset to the start of the Data field - this will be where the other parsers start. */
@@ -3393,40 +3386,40 @@ static gboolean parse_MAD_Common(proto_tree *parentTree, tvbuff_t *tvb, gint *of
* IN/OUT: The current and updated offset */
static gboolean parse_RMPP(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
{
- gint local_offset = *offset;
- guint8 RMPP_Type = tvb_get_guint8(tvb, local_offset + 1);
- proto_tree *RMPP_header_tree = NULL;
- proto_item *RMPP_header_item = NULL;
+ gint local_offset = *offset;
+ guint8 RMPP_Type = tvb_get_guint8(tvb, local_offset + 1);
+ proto_item *RMPP_header_item;
+ proto_tree *RMPP_header_tree;
RMPP_header_item = proto_tree_add_item(parentTree, hf_infiniband_RMPP, tvb, local_offset, 12, ENC_NA);
proto_item_set_text(RMPP_header_item, "%s", val_to_str(RMPP_Type, RMPP_Packet_Types, "Reserved RMPP Type! (0x%02x)"));
RMPP_header_tree = proto_item_add_subtree(RMPP_header_item, ett_rmpp);
- proto_tree_add_item(RMPP_header_tree, hf_infiniband_rmpp_version, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(RMPP_header_tree, hf_infiniband_rmpp_type, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
+ proto_tree_add_item(RMPP_header_tree, hf_infiniband_rmpp_version, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(RMPP_header_tree, hf_infiniband_rmpp_type, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
proto_tree_add_item(RMPP_header_tree, hf_infiniband_r_resp_time, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(RMPP_header_tree, hf_infiniband_rmpp_flags, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(RMPP_header_tree, hf_infiniband_rmpp_status, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- switch(RMPP_Type)
+ proto_tree_add_item(RMPP_header_tree, hf_infiniband_rmpp_flags, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(RMPP_header_tree, hf_infiniband_rmpp_status, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ switch (RMPP_Type)
{
case RMPP_ILLEGAL:
- proto_tree_add_item(RMPP_header_tree, hf_infiniband_rmpp_data1, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset+=4;
- proto_tree_add_item(RMPP_header_tree, hf_infiniband_rmpp_data2, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset+=4;
+ proto_tree_add_item(RMPP_header_tree, hf_infiniband_rmpp_data1, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset += 4;
+ proto_tree_add_item(RMPP_header_tree, hf_infiniband_rmpp_data2, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset += 4;
break;
case RMPP_DATA:
- proto_tree_add_item(RMPP_header_tree, hf_infiniband_segment_number, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset+=4;
- proto_tree_add_item(RMPP_header_tree, hf_infiniband_payload_length32, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset+=4;
+ proto_tree_add_item(RMPP_header_tree, hf_infiniband_segment_number, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset += 4;
+ proto_tree_add_item(RMPP_header_tree, hf_infiniband_payload_length32, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset += 4;
proto_tree_add_item(RMPP_header_tree, hf_infiniband_transferred_data, tvb, local_offset, 220, ENC_NA);
break;
case RMPP_ACK:
- proto_tree_add_item(RMPP_header_tree, hf_infiniband_segment_number, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset+=4;
- proto_tree_add_item(RMPP_header_tree, hf_infiniband_new_window_last, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset+=4;
+ proto_tree_add_item(RMPP_header_tree, hf_infiniband_segment_number, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset += 4;
+ proto_tree_add_item(RMPP_header_tree, hf_infiniband_new_window_last, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset += 4;
proto_tree_add_item(RMPP_header_tree, hf_infiniband_reserved220, tvb, local_offset, 220, ENC_NA);
break;
case RMPP_STOP:
case RMPP_ABORT:
- proto_tree_add_item(RMPP_header_tree, hf_infiniband_reserved32, tvb, local_offset, 4, ENC_NA); local_offset+=4;
- proto_tree_add_item(RMPP_header_tree, hf_infiniband_reserved32, tvb, local_offset, 4, ENC_NA); local_offset+=4;
+ proto_tree_add_item(RMPP_header_tree, hf_infiniband_reserved32, tvb, local_offset, 4, ENC_NA); local_offset += 4;
+ proto_tree_add_item(RMPP_header_tree, hf_infiniband_reserved32, tvb, local_offset, 4, ENC_NA); local_offset += 4;
proto_tree_add_item(RMPP_header_tree, hf_infiniband_optional_extended_error_data, tvb, local_offset, 220, ENC_NA);
break;
default:
@@ -3443,7 +3436,7 @@ static gboolean parse_RMPP(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
* IN: pinfo - packet info from wireshark. */
static void label_SUBM_Method(proto_item *SubMItem, MAD_Data *MadHeader, packet_info *pinfo)
{
- const char *label = val_to_str(MadHeader->method, SUBM_Methods, "(Unknown SubManagement Method!)");
+ const char *label = val_to_str_const(MadHeader->method, SUBM_Methods, "(Unknown SubManagement Method!)");
proto_item_append_text(SubMItem, "%s", label);
col_append_str(pinfo->cinfo, COL_INFO, label);
@@ -3456,7 +3449,7 @@ static void label_SUBM_Method(proto_item *SubMItem, MAD_Data *MadHeader, packet_
* IN: pinfo - packet info from wireshark. */
static void label_SUBA_Method(proto_item *SubAItem, MAD_Data *MadHeader, packet_info *pinfo)
{
- const char *label = val_to_str(MadHeader->method, SUBA_Methods, "(Unknown SubAdministration Method!)");
+ const char *label = val_to_str_const(MadHeader->method, SUBA_Methods, "(Unknown SubAdministration Method!)");
proto_item_append_text(SubAItem, "%s", label);
col_append_str(pinfo->cinfo, COL_INFO, label);
@@ -3469,7 +3462,7 @@ static void label_SUBA_Method(proto_item *SubAItem, MAD_Data *MadHeader, packet_
* IN: pinfo - packet info from wireshark. */
static void label_SUBM_Attribute(proto_item *SubMItem, MAD_Data *MadHeader, packet_info *pinfo)
{
- const char *label = val_to_str(MadHeader->attributeID, SUBM_Attributes, "(Unknown SubManagement Attribute!)");
+ const char *label = val_to_str_const(MadHeader->attributeID, SUBM_Attributes, "(Unknown SubManagement Attribute!)");
proto_item_append_text(SubMItem, "%s", &label[11]);
col_append_str(pinfo->cinfo, COL_INFO, &label[11]);
@@ -3482,7 +3475,7 @@ static void label_SUBM_Attribute(proto_item *SubMItem, MAD_Data *MadHeader, pack
* IN: pinfo - packet info from wireshark. */
static void label_SUBA_Attribute(proto_item *SubAItem, MAD_Data *MadHeader, packet_info *pinfo)
{
- const char *label = val_to_str(MadHeader->attributeID, SUBA_Attributes, "(Unknown SubAdministration Attribute!)");
+ const char *label = val_to_str_const(MadHeader->attributeID, SUBA_Attributes, "(Unknown SubAdministration Attribute!)");
proto_item_append_text(SubAItem, "%s", &label[11]);
col_append_str(pinfo->cinfo, COL_INFO, &label[11]);
@@ -3494,16 +3487,16 @@ static void label_SUBA_Attribute(proto_item *SubAItem, MAD_Data *MadHeader, pack
* IN: MAD_Data the data from the Common MAD Header that provides the information we need */
static gboolean parse_SUBM_Attribute(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_Data *MadHeader)
{
- guint16 attributeID = MadHeader->attributeID;
- proto_tree *SUBM_Attribute_header_tree = NULL;
- proto_item *SUBM_Attribute_header_item = NULL;
+ guint16 attributeID = MadHeader->attributeID;
+ proto_item *SUBM_Attribute_header_item;
+ proto_tree *SUBM_Attribute_header_tree;
SUBM_Attribute_header_item = proto_tree_add_item(parentTree, hf_infiniband_smp_data, tvb, *offset, 64, ENC_NA);
proto_item_set_text(SUBM_Attribute_header_item, "%s", val_to_str(attributeID, SUBM_Attributes, "Unknown Attribute Type! (0x%02x)"));
SUBM_Attribute_header_tree = proto_item_add_subtree(SUBM_Attribute_header_item, ett_subm_attribute);
- switch(attributeID)
+ switch (attributeID)
{
case 0x0002:
parse_NoticesAndTraps(SUBM_Attribute_header_tree , tvb, offset);
@@ -3568,9 +3561,9 @@ static gboolean parse_SUBM_Attribute(proto_tree *parentTree, tvbuff_t *tvb, gint
* IN: MAD_Data the data from the Common MAD Header that provides the information we need */
static gboolean parse_SUBA_Attribute(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_Data *MadHeader)
{
- guint16 attributeID = MadHeader->attributeID;
- proto_tree *SUBA_Attribute_header_tree = NULL;
- proto_item *SUBA_Attribute_header_item = NULL;
+ guint16 attributeID = MadHeader->attributeID;
+ proto_item *SUBA_Attribute_header_item;
+ proto_tree *SUBA_Attribute_header_tree;
SUBA_Attribute_header_item = proto_tree_add_item(parentTree, hf_infiniband_SA, tvb, *offset, 200, ENC_NA);
proto_item_set_text(SUBA_Attribute_header_item, "%s", val_to_str(attributeID, SUBA_Attributes, "Unknown Attribute Type! (0x%02x)"));
@@ -3580,7 +3573,7 @@ static gboolean parse_SUBA_Attribute(proto_tree *parentTree, tvbuff_t *tvb, gint
parse_RID(SUBA_Attribute_header_tree, tvb, offset, MadHeader);
/* Parse the rest of the attributes */
- switch(MadHeader->attributeID)
+ switch (MadHeader->attributeID)
{
case 0x0001: /* (ClassPortInfo) */
parse_PortInfo(SUBA_Attribute_header_tree, tvb, offset);
@@ -3676,152 +3669,153 @@ static gboolean parse_SUBA_Attribute(proto_tree *parentTree, tvbuff_t *tvb, gint
static gint parse_NoticeDataDetails(proto_tree* parentTree, tvbuff_t* tvb, gint *offset, guint16 trapNumber)
{
- gint local_offset = *offset;
- proto_tree *DataDetails_header_tree = NULL;
- proto_item *DataDetails_header_item = NULL;
+ gint local_offset = *offset;
+ proto_item *DataDetails_header_item;
+ proto_tree *DataDetails_header_tree;
- if(!parentTree)
+ if (!parentTree)
return 0;
DataDetails_header_item = proto_tree_add_item(parentTree, hf_infiniband_smp_data, tvb, local_offset, 54, ENC_NA);
DataDetails_header_tree = proto_item_add_subtree(DataDetails_header_item, ett_datadetails);
- switch(trapNumber)
+ switch (trapNumber)
{
case 64:
proto_item_set_text(DataDetails_header_item, "%s", "Trap 64 DataDetails");
- local_offset +=6;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_GIDADDR, tvb, local_offset, 16, ENC_NA); local_offset+=16;
+ local_offset += 6;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_GIDADDR, tvb, local_offset, 16, ENC_NA); local_offset += 16;
break;
case 65:
proto_item_set_text(DataDetails_header_item, "%s", "Trap 65 DataDetails");
- local_offset +=6;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_GIDADDR, tvb, local_offset, 16, ENC_NA); local_offset+=16;
+ local_offset += 6;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_GIDADDR, tvb, local_offset, 16, ENC_NA); local_offset += 16;
break;
case 66:
proto_item_set_text(DataDetails_header_item, "%s", "Trap 66 DataDetails");
- local_offset +=6;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_GIDADDR, tvb, local_offset, 16, ENC_NA); local_offset+=16;
+ local_offset += 6;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_GIDADDR, tvb, local_offset, 16, ENC_NA); local_offset += 16;
break;
case 67:
proto_item_set_text(DataDetails_header_item, "%s", "Trap 67 DataDetails");
- local_offset +=6;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_GIDADDR, tvb, local_offset, 16, ENC_NA); local_offset+=16;
+ local_offset += 6;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_GIDADDR, tvb, local_offset, 16, ENC_NA); local_offset += 16;
break;
case 68:
proto_item_set_text(DataDetails_header_item, "%s", "Trap 68 DataDetails");
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_COMP_MASK, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset+=8;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_COMP_MASK, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_WAIT_FOR_REPATH, tvb, local_offset, 1, ENC_BIG_ENDIAN);
break;
case 69:
proto_item_set_text(DataDetails_header_item, "%s", "Trap 69 DataDetails");
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_COMP_MASK, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset+=8;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_COMP_MASK, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_WAIT_FOR_REPATH, tvb, local_offset, 1, ENC_BIG_ENDIAN);
break;
case 128:
proto_item_set_text(DataDetails_header_item, "%s", "Trap 128 DataDetails");
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
break;
case 129:
proto_item_set_text(DataDetails_header_item, "%s", "Trap 129 DataDetails");
local_offset += 2;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_PORTNO, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_PORTNO, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
break;
case 130:
proto_item_set_text(DataDetails_header_item, "%s", "Trap 130 DataDetails");
local_offset += 2;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_PORTNO, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_PORTNO, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
break;
case 131:
proto_item_set_text(DataDetails_header_item, "%s", "Trap 131 DataDetails");
local_offset += 2;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_PORTNO, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_PORTNO, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
break;
case 144:
proto_item_set_text(DataDetails_header_item, "%s", "Trap 144 DataDetails");
- local_offset +=2;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- local_offset +=1;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_OtherLocalChanges, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_CAPABILITYMASK, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset+=4;
- local_offset +=1;
+ local_offset += 2;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ local_offset += 1;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_OtherLocalChanges, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_CAPABILITYMASK, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset += 4;
+ local_offset += 1;
proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LinkSpeecEnabledChange, tvb, local_offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LinkWidthEnabledChange, tvb, local_offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_NodeDescriptionChange, tvb, local_offset, 1, ENC_BIG_ENDIAN);
break;
case 145:
proto_item_set_text(DataDetails_header_item, "%s", "Trap 145 DataDetails");
- local_offset +=2;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- local_offset +=2;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_SYSTEMIMAGEGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset+=8;
+ local_offset += 2;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ local_offset += 2;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_SYSTEMIMAGEGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
break;
case 256:
proto_item_set_text(DataDetails_header_item, "%s", "Trap 256 DataDetails");
- local_offset +=2;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_DRSLID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_METHOD, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- local_offset +=1;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_ATTRIBUTEID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_ATTRIBUTEMODIFIER, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset+=4;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_MKEY, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset+=8;
- local_offset +=1;
+ local_offset += 2;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_DRSLID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_METHOD, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ local_offset += 1;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_ATTRIBUTEID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_ATTRIBUTEMODIFIER, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset += 4;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_MKEY, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
+ local_offset += 1;
proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_DRNotice, tvb, local_offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_DRPathTruncated, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_DRHopCount, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_DRNoticeReturnPath, tvb, local_offset, 30, ENC_NA); local_offset+=30;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_DRHopCount, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_DRNoticeReturnPath, tvb, local_offset, 30, ENC_NA); local_offset += 30;
break;
case 257:
proto_item_set_text(DataDetails_header_item, "%s", "Trap 257 DataDetails");
- local_offset+=2;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR1, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR2, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_KEY, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset+=4;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_SL, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_QP1, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset+=3;
- local_offset +=1;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_QP2, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset+=3;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_GIDADDR1, tvb, local_offset, 16, ENC_NA); local_offset+=16;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_GIDADDR2, tvb, local_offset, 16, ENC_NA); local_offset+=16;
+ local_offset += 2;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR1, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR2, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_KEY, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset += 4;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_SL, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_QP1, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset += 3;
+ local_offset += 1;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_QP2, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset += 3;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_GIDADDR1, tvb, local_offset, 16, ENC_NA); local_offset += 16;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_GIDADDR2, tvb, local_offset, 16, ENC_NA); local_offset += 16;
break;
case 258:
proto_item_set_text(DataDetails_header_item, "%s", "Trap 258 DataDetails");
- local_offset+=2;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR1, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR2, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_KEY, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset+=4;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_SL, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_QP1, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset+=3;
- local_offset +=1;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_QP2, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset+=3;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_GIDADDR1, tvb, local_offset, 16, ENC_NA); local_offset+=16;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_GIDADDR2, tvb, local_offset, 16, ENC_NA); local_offset+=16;
+ local_offset += 2;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR1, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR2, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_KEY, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset += 4;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_SL, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_QP1, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset += 3;
+ local_offset += 1;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_QP2, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset += 3;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_GIDADDR1, tvb, local_offset, 16, ENC_NA); local_offset += 16;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_GIDADDR2, tvb, local_offset, 16, ENC_NA); local_offset += 16;
break;
case 259:
proto_item_set_text(DataDetails_header_item, "%s", "Trap 259 DataDetails");
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_DataValid, tvb, local_offset, 2, ENC_NA); local_offset+=2;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR1, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR2, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_PKEY, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_SL, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_QP1, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset+=3;
- local_offset +=1;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_QP2, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset+=3;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_GIDADDR1, tvb, local_offset, 16, ENC_NA); local_offset+=16;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_GIDADDR2, tvb, local_offset, 16, ENC_NA); local_offset+=16;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_SWLIDADDR, tvb, local_offset, 2, ENC_NA); local_offset+=2;
- proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_PORTNO, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_DataValid, tvb, local_offset, 2, ENC_NA); local_offset += 2;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR1, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_LIDADDR2, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_PKEY, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_SL, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_QP1, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset += 3;
+ local_offset += 1;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_QP2, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset += 3;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_GIDADDR1, tvb, local_offset, 16, ENC_NA); local_offset += 16;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_GIDADDR2, tvb, local_offset, 16, ENC_NA); local_offset += 16;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_SWLIDADDR, tvb, local_offset, 2, ENC_NA); local_offset += 2;
+ proto_tree_add_item(DataDetails_header_tree, hf_infiniband_Trap_PORTNO, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
break;
default:
- proto_item_set_text(DataDetails_header_item, "%s", "Vendor Specific Subnet Management Trap"); local_offset +=54;
+ proto_item_set_text(DataDetails_header_item, "%s", "Vendor Specific Subnet Management Trap"); local_offset += 54;
break;
}
-return local_offset;
+
+ return local_offset;
}
/* Parse NoticesAndTraps Attribute
@@ -3831,12 +3825,12 @@ return local_offset;
* MadHeader - The common MAD header of the current SMP/SMA */
static void parse_NoticesAndTraps(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
{
- gint local_offset = *offset;
- proto_tree *NoticesAndTraps_header_tree = NULL;
- proto_item *NoticesAndTraps_header_item = NULL;
- guint16 trapNumber = tvb_get_ntohs(tvb, local_offset + 4);
+ gint local_offset = *offset;
+ proto_item *NoticesAndTraps_header_item;
+ proto_tree *NoticesAndTraps_header_tree;
+ guint16 trapNumber = tvb_get_ntohs(tvb, local_offset + 4);
- if(!parentTree)
+ if (!parentTree)
return;
NoticesAndTraps_header_item = proto_tree_add_item(parentTree, hf_infiniband_smp_data, tvb, local_offset, 64, ENC_NA);
@@ -3844,19 +3838,20 @@ static void parse_NoticesAndTraps(proto_tree* parentTree, tvbuff_t* tvb, gint *o
NoticesAndTraps_header_tree = proto_item_add_subtree(NoticesAndTraps_header_item, ett_noticestraps);
proto_tree_add_item(NoticesAndTraps_header_tree, hf_infiniband_Notice_IsGeneric, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(NoticesAndTraps_header_tree, hf_infiniband_Notice_Type, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(NoticesAndTraps_header_tree, hf_infiniband_Notice_ProducerTypeVendorID, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset+=3;
- proto_tree_add_item(NoticesAndTraps_header_tree, hf_infiniband_Notice_TrapNumberDeviceID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(NoticesAndTraps_header_tree, hf_infiniband_Notice_IssuerLID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
+ proto_tree_add_item(NoticesAndTraps_header_tree, hf_infiniband_Notice_Type, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(NoticesAndTraps_header_tree, hf_infiniband_Notice_ProducerTypeVendorID, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset += 3;
+ proto_tree_add_item(NoticesAndTraps_header_tree, hf_infiniband_Notice_TrapNumberDeviceID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(NoticesAndTraps_header_tree, hf_infiniband_Notice_IssuerLID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
proto_tree_add_item(NoticesAndTraps_header_tree, hf_infiniband_Notice_NoticeToggle, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(NoticesAndTraps_header_tree, hf_infiniband_Notice_NoticeCount, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
+ proto_tree_add_item(NoticesAndTraps_header_tree, hf_infiniband_Notice_NoticeCount, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
parse_NoticeDataDetails(NoticesAndTraps_header_tree, tvb, &local_offset, trapNumber);
- proto_tree_add_item(NoticesAndTraps_header_tree, hf_infiniband_Notice_DataDetails, tvb, local_offset, 54, ENC_NA); local_offset+=54;
+ proto_tree_add_item(NoticesAndTraps_header_tree, hf_infiniband_Notice_DataDetails, tvb, local_offset, 54, ENC_NA); local_offset += 54;
- /* Only Defined For GMPs not SMPs which is not part of this dissector phase
- *proto_tree_add_item(NoticesAndTraps_header_tree, hf_infiniband_Notice_IssuerGID, tvb, local_offset, 16, ENC_NA); local_offset+=16;
- *proto_tree_add_item(NoticesAndTraps_header_tree, hf_infiniband_Notice_ClassTrapSpecificData, tvb, local_offset, 1, ENC_NA); local_offset+=1; */
+#if 0 /* Only Defined For GMPs not SMPs which is not part of this dissector phase */
+ *proto_tree_add_item(NoticesAndTraps_header_tree, hf_infiniband_Notice_IssuerGID, tvb, local_offset, 16, ENC_NA); local_offset += 16;
+ *proto_tree_add_item(NoticesAndTraps_header_tree, hf_infiniband_Notice_ClassTrapSpecificData, tvb, local_offset, 1, ENC_NA); local_offset += 1;
+#endif
}
@@ -3867,10 +3862,10 @@ static void parse_NoticesAndTraps(proto_tree* parentTree, tvbuff_t* tvb, gint *o
* MadHeader - The common MAD header of the current SMP/SMA */
static void parse_NodeDescription(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
{
- gint local_offset = *offset;
- proto_tree *NodeDescription_header_tree = NULL;
+ gint local_offset = *offset;
+ proto_tree *NodeDescription_header_tree;
- if(!parentTree)
+ if (!parentTree)
return;
NodeDescription_header_tree = parentTree;
@@ -3882,28 +3877,30 @@ static void parse_NodeDescription(proto_tree* parentTree, tvbuff_t* tvb, gint *o
* tvb - The tvbbuff of packet data
* offset - The offset in TVB where the attribute begins
* MadHeader - The common MAD header of the current SMP/SMA */
-static void parse_NodeInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
+static int parse_NodeInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
{
- gint local_offset = *offset;
- proto_tree *NodeInfo_header_tree = NULL;
+ gint local_offset = *offset;
+ proto_tree *NodeInfo_header_tree;
- if(!parentTree)
- return;
+ if (!parentTree)
+ return *offset;
NodeInfo_header_tree = parentTree;
- proto_tree_add_item(NodeInfo_header_tree, hf_infiniband_NodeInfo_BaseVersion, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
- proto_tree_add_item(NodeInfo_header_tree, hf_infiniband_NodeInfo_ClassVersion, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
- proto_tree_add_item(NodeInfo_header_tree, hf_infiniband_NodeInfo_NodeType, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
- proto_tree_add_item(NodeInfo_header_tree, hf_infiniband_NodeInfo_NumPorts, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
- proto_tree_add_item(NodeInfo_header_tree, hf_infiniband_NodeInfo_SystemImageGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset +=8;
- proto_tree_add_item(NodeInfo_header_tree, hf_infiniband_NodeInfo_NodeGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset +=8;
- proto_tree_add_item(NodeInfo_header_tree, hf_infiniband_NodeInfo_PortGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset +=8;
- proto_tree_add_item(NodeInfo_header_tree, hf_infiniband_NodeInfo_PartitionCap, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset +=2;
- proto_tree_add_item(NodeInfo_header_tree, hf_infiniband_NodeInfo_DeviceID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset +=2;
- proto_tree_add_item(NodeInfo_header_tree, hf_infiniband_NodeInfo_Revision, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset +=4;
- proto_tree_add_item(NodeInfo_header_tree, hf_infiniband_NodeInfo_LocalPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
- proto_tree_add_item(NodeInfo_header_tree, hf_infiniband_NodeInfo_VendorID, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset +=3;
+ proto_tree_add_item(NodeInfo_header_tree, hf_infiniband_NodeInfo_BaseVersion, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(NodeInfo_header_tree, hf_infiniband_NodeInfo_ClassVersion, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(NodeInfo_header_tree, hf_infiniband_NodeInfo_NodeType, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(NodeInfo_header_tree, hf_infiniband_NodeInfo_NumPorts, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(NodeInfo_header_tree, hf_infiniband_NodeInfo_SystemImageGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
+ proto_tree_add_item(NodeInfo_header_tree, hf_infiniband_NodeInfo_NodeGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
+ proto_tree_add_item(NodeInfo_header_tree, hf_infiniband_NodeInfo_PortGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
+ proto_tree_add_item(NodeInfo_header_tree, hf_infiniband_NodeInfo_PartitionCap, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(NodeInfo_header_tree, hf_infiniband_NodeInfo_DeviceID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(NodeInfo_header_tree, hf_infiniband_NodeInfo_Revision, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset += 4;
+ proto_tree_add_item(NodeInfo_header_tree, hf_infiniband_NodeInfo_LocalPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(NodeInfo_header_tree, hf_infiniband_NodeInfo_VendorID, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset += 3;
+
+ return local_offset;
}
@@ -3912,33 +3909,35 @@ static void parse_NodeInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
* tvb - The tvbbuff of packet data
* offset - The offset in TVB where the attribute begins
* MadHeader - The common MAD header of the current SMP/SMA */
-static void parse_SwitchInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
+static int parse_SwitchInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
{
- gint local_offset = *offset;
- proto_tree *SwitchInfo_header_tree = NULL;
+ gint local_offset = *offset;
+ proto_tree *SwitchInfo_header_tree;
- if(!parentTree)
- return;
+ if (!parentTree)
+ return *offset;
SwitchInfo_header_tree = parentTree;
- proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_LinearFDBCap, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset +=2;
- proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_RandomFDBCap, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset +=2;
- proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_MulticastFDBCap, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset +=2;
- proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_LinearFDBTop, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset +=2;
- proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_DefaultPort, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
- proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_DefaultMulticastPrimaryPort, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
- proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_DefaultMulticastNotPrimaryPort, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
+ proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_LinearFDBCap, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_RandomFDBCap, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_MulticastFDBCap, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_LinearFDBTop, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_DefaultPort, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_DefaultMulticastPrimaryPort, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_DefaultMulticastNotPrimaryPort, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_LifeTimeValue, tvb, local_offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_PortStateChange, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_OptimizedSLtoVLMappingProgramming, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
- proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_LIDsPerPort, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset +=2;
- proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_PartitionEnforcementCap, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset +=2;
+ proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_OptimizedSLtoVLMappingProgramming, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_LIDsPerPort, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_PartitionEnforcementCap, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_InboundEnforcementCap, tvb, local_offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_OutboundEnforcementCap, tvb, local_offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_FilterRawInboundCap, tvb, local_offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_FilterRawOutboundCap, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_EnhancedPortZero, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
+ proto_tree_add_item(SwitchInfo_header_tree, hf_infiniband_SwitchInfo_EnhancedPortZero, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+
+ return local_offset;
}
/* Parse GUIDInfo Attribute
@@ -3946,24 +3945,24 @@ static void parse_SwitchInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset
* tvb - The tvbbuff of packet data
* offset - The offset in TVB where the attribute begins
* MadHeader - The common MAD header of the current SMP/SMA */
-static void parse_GUIDInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
+static int parse_GUIDInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
{
- gint local_offset = *offset;
- proto_tree *GUIDInfo_header_tree = NULL;
- proto_item *tempItemLow = NULL;
- gint i = 0;
+ gint local_offset = *offset;
+ proto_tree *GUIDInfo_header_tree;
+ proto_item *tempItemLow;
+ gint i;
- if(!parentTree)
- return;
+ if (!parentTree)
+ return *offset;
GUIDInfo_header_tree = parentTree;
- for(i = 0; i < 8; i++)
+ for (i = 0; i < 8; i++)
{
- proto_tree_add_item(GUIDInfo_header_tree, hf_infiniband_GUIDInfo_GUID, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset +=8;
+ tempItemLow = proto_tree_add_item(GUIDInfo_header_tree, hf_infiniband_GUIDInfo_GUID, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
proto_item_append_text(tempItemLow, "(%u)", i);
}
-
+ return local_offset;
}
/* Parse PortInfo Attribute
@@ -3971,24 +3970,24 @@ static void parse_GUIDInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
* tvb - The tvbbuff of packet data
* offset - The offset in TVB where the attribute begins
* MadHeader - The common MAD header of the current SMP/SMA */
-static void parse_PortInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
+static int parse_PortInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
{
- gint local_offset = *offset;
- proto_tree *PortInfo_header_tree = NULL;
- proto_tree *PortInfo_CapabilityMask_tree = NULL;
- proto_item *PortInfo_CapabilityMask_item = NULL;
- proto_item *temp_item = NULL;
- guint16 temp_val = 0;
+ gint local_offset = *offset;
+ proto_tree *PortInfo_header_tree;
+ proto_item *PortInfo_CapabilityMask_item;
+ proto_tree *PortInfo_CapabilityMask_tree;
+ proto_item *temp_item;
+ guint16 temp_val;
- if(!parentTree)
- return;
+ if (!parentTree)
+ return *offset;
PortInfo_header_tree = parentTree;
- proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_M_Key, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset +=8;
- proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_GidPrefix, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset +=8;
- proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_LID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset +=2;
- proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_MasterSMLID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset +=2;
+ proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_M_Key, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
+ proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_GidPrefix, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
+ proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_LID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_MasterSMLID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
/* Capability Mask Flags */
PortInfo_CapabilityMask_item = proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_CapabilityMask, tvb, local_offset, 4, ENC_BIG_ENDIAN);
@@ -4018,42 +4017,42 @@ static void parse_PortInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
proto_tree_add_item(PortInfo_CapabilityMask_tree, hf_infiniband_PortInfo_CapabilityMask_ClientRegistrationSupported, tvb, local_offset, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(PortInfo_CapabilityMask_tree, hf_infiniband_PortInfo_CapabilityMask_OtherLocalChangesNoticeSupported, tvb, local_offset, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(PortInfo_CapabilityMask_tree, hf_infiniband_PortInfo_CapabilityMask_LinkSpeedWIdthPairsTableSupported, tvb, local_offset, 4, ENC_BIG_ENDIAN);
- local_offset+=4;
+ local_offset += 4;
/* End Capability Mask Flags */
/* Diag Code */
temp_item = proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_DiagCode, tvb, local_offset, 2, ENC_BIG_ENDIAN);
temp_val = tvb_get_ntohs(tvb, local_offset);
- proto_item_append_text(temp_item, ", %s", val_to_str(temp_val, DiagCode, "Reserved DiagCode! Possible Error"));
- local_offset +=2;
+ proto_item_append_text(temp_item, ", %s", val_to_str_const(temp_val, DiagCode, "Reserved DiagCode! Possible Error"));
+ local_offset += 2;
/* End Diag Code */
- proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_M_KeyLeasePeriod, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset +=2;
- proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_LocalPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
+ proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_M_KeyLeasePeriod, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_LocalPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
/* LinkWidthEnabled */
temp_item = proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_LinkWidthEnabled, tvb, local_offset, 1, ENC_BIG_ENDIAN);
temp_val = (guint16)tvb_get_guint8(tvb, local_offset);
- proto_item_append_text(temp_item, ", %s", val_to_str(temp_val, LinkWidthEnabled, "Reserved LinkWidthEnabled Value! Possible Error"));
- local_offset +=1;
+ proto_item_append_text(temp_item, ", %s", val_to_str_const(temp_val, LinkWidthEnabled, "Reserved LinkWidthEnabled Value! Possible Error"));
+ local_offset += 1;
/* End LinkWidthEnabled */
/* LinkWidthSupported */
temp_item = proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_LinkWidthSupported, tvb, local_offset, 1, ENC_BIG_ENDIAN);
temp_val = (guint16)tvb_get_guint8(tvb, local_offset);
- proto_item_append_text(temp_item, ", %s", val_to_str(temp_val, LinkWidthSupported, "Reserved LinkWidthSupported Value! Possible Error"));
- local_offset +=1;
+ proto_item_append_text(temp_item, ", %s", val_to_str_const(temp_val, LinkWidthSupported, "Reserved LinkWidthSupported Value! Possible Error"));
+ local_offset += 1;
/* End LinkWidthSupported */
/* LinkWidthActive */
temp_item = proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_LinkWidthActive, tvb, local_offset, 1, ENC_BIG_ENDIAN);
temp_val = (guint16)tvb_get_guint8(tvb, local_offset);
- proto_item_append_text(temp_item, ", %s", val_to_str(temp_val, LinkWidthActive, "Reserved LinkWidthActive Value! Possible Error"));
- local_offset +=1;
+ proto_item_append_text(temp_item, ", %s", val_to_str_const(temp_val, LinkWidthActive, "Reserved LinkWidthActive Value! Possible Error"));
+ local_offset += 1;
/* End LinkWidthActive */
/* LinkSpeedSupported */
@@ -4064,7 +4063,7 @@ static void parse_PortInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
temp_val = temp_val & 0x00F0;
temp_val = temp_val >> 4;
- proto_item_append_text(temp_item, ", %s", val_to_str(temp_val, LinkSpeedSupported, "Reserved LinkWidthSupported Value! Possible Error"));
+ proto_item_append_text(temp_item, ", %s", val_to_str_const(temp_val, LinkSpeedSupported, "Reserved LinkWidthSupported Value! Possible Error"));
/* End LinkSpeedSupported */
/* PortState */
@@ -4075,8 +4074,8 @@ static void parse_PortInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
temp_val = temp_val & 0x000F;
/*temp_val = temp_val >> 4 */
- proto_item_append_text(temp_item, ", %s", val_to_str(temp_val, PortState, "Reserved PortState Value! Possible Error"));
- local_offset +=1;
+ proto_item_append_text(temp_item, ", %s", val_to_str_const(temp_val, PortState, "Reserved PortState Value! Possible Error"));
+ local_offset += 1;
/* End PortState */
/* PortPhysicalState */
@@ -4087,7 +4086,7 @@ static void parse_PortInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
temp_val = temp_val & 0x00F0;
temp_val = temp_val >> 4;
- proto_item_append_text(temp_item, ", %s", val_to_str(temp_val, PortPhysicalState, "Reserved PortPhysicalState Value! Possible Error"));
+ proto_item_append_text(temp_item, ", %s", val_to_str_const(temp_val, PortPhysicalState, "Reserved PortPhysicalState Value! Possible Error"));
/* End PortPhysicalState */
/* LinkDownDefaultState */
@@ -4098,12 +4097,12 @@ static void parse_PortInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
temp_val = temp_val & 0x000F;
/*temp_val = temp_val >> 4 */
- proto_item_append_text(temp_item, ", %s", val_to_str(temp_val, LinkDownDefaultState, "Reserved LinkDownDefaultState Value! Possible Error"));
- local_offset +=1;
+ proto_item_append_text(temp_item, ", %s", val_to_str_const(temp_val, LinkDownDefaultState, "Reserved LinkDownDefaultState Value! Possible Error"));
+ local_offset += 1;
/* End LinkDownDefaultState */
proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_M_KeyProtectBits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_LMC, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
+ proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_LMC, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
/* LinkSpeedActive */
temp_item = proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_LinkSpeedActive, tvb, local_offset, 1, ENC_BIG_ENDIAN);
@@ -4113,7 +4112,7 @@ static void parse_PortInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
temp_val = temp_val & 0x00F0;
temp_val = temp_val >> 4;
- proto_item_append_text(temp_item, ", %s", val_to_str(temp_val, LinkSpeedActive, "Reserved LinkSpeedActive Value! Possible Error"));
+ proto_item_append_text(temp_item, ", %s", val_to_str_const(temp_val, LinkSpeedActive, "Reserved LinkSpeedActive Value! Possible Error"));
/* End LinkSpeedActive */
/* LinkSpeedEnabled */
@@ -4124,8 +4123,8 @@ static void parse_PortInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
temp_val = temp_val & 0x000F;
/*temp_val = temp_val >> 4 */
- proto_item_append_text(temp_item, ", %s", val_to_str(temp_val, LinkSpeedEnabled, "Reserved LinkSpeedEnabled Value! Possible Error"));
- local_offset +=1;
+ proto_item_append_text(temp_item, ", %s", val_to_str_const(temp_val, LinkSpeedEnabled, "Reserved LinkSpeedEnabled Value! Possible Error"));
+ local_offset += 1;
/* End LinkSpeedEnabled */
/* NeighborMTU */
@@ -4136,11 +4135,11 @@ static void parse_PortInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
temp_val = temp_val & 0x00F0;
temp_val = temp_val >> 4;
- proto_item_append_text(temp_item, ", %s", val_to_str(temp_val, NeighborMTU, "Reserved NeighborMTU Value! Possible Error"));
+ proto_item_append_text(temp_item, ", %s", val_to_str_const(temp_val, NeighborMTU, "Reserved NeighborMTU Value! Possible Error"));
/* End NeighborMTU */
- proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_MasterSMSL, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
+ proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_MasterSMSL, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
/* VLCap */
temp_item = proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_VLCap, tvb, local_offset, 1, ENC_BIG_ENDIAN);
@@ -4150,14 +4149,14 @@ static void parse_PortInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
temp_val = temp_val & 0x00F0;
temp_val = temp_val >> 4;
- proto_item_append_text(temp_item, ", %s", val_to_str(temp_val, VLCap, "Reserved VLCap Value! Possible Error"));
+ proto_item_append_text(temp_item, ", %s", val_to_str_const(temp_val, VLCap, "Reserved VLCap Value! Possible Error"));
/* End VLCap */
- proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_InitType, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
- proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_VLHighLimit, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
- proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_VLArbitrationHighCap, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
- proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_VLArbitrationLowCap, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
+ proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_InitType, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_VLHighLimit, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_VLArbitrationHighCap, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_VLArbitrationLowCap, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_InitTypeReply, tvb, local_offset, 1, ENC_BIG_ENDIAN);
/* MTUCap */
@@ -4168,12 +4167,12 @@ static void parse_PortInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
temp_val = temp_val & 0x000F;
/*temp_val = temp_val >> 4 */
- proto_item_append_text(temp_item, ", %s", val_to_str(temp_val, MTUCap, "Reserved MTUCap Value! Possible Error"));
- local_offset +=1;
+ proto_item_append_text(temp_item, ", %s", val_to_str_const(temp_val, MTUCap, "Reserved MTUCap Value! Possible Error"));
+ local_offset += 1;
/* End MTUCap */
proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_VLStallCount, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_HOQLife, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
+ proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_HOQLife, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
/* OperationalVLs */
temp_item = proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_OperationalVLs, tvb, local_offset, 1, ENC_BIG_ENDIAN);
@@ -4183,24 +4182,26 @@ static void parse_PortInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
temp_val = temp_val & 0x00F0;
temp_val = temp_val >> 4;
- proto_item_append_text(temp_item, ", %s", val_to_str(temp_val, OperationalVLs, "Reserved OperationalVLs Value! Possible Error"));
+ proto_item_append_text(temp_item, ", %s", val_to_str_const(temp_val, OperationalVLs, "Reserved OperationalVLs Value! Possible Error"));
/* End OperationalVLs */
proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_PartitionEnforcementInbound, tvb, local_offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_PartitionEnforcementOutbound, tvb, local_offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_FilterRawInbound, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_FilterRawOutbound, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
- proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_M_KeyViolations, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset +=2;
- proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_P_KeyViolations, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset +=2;
- proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_Q_KeyViolations, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset +=2;
- proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_GUIDCap, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
+ proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_FilterRawOutbound, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_M_KeyViolations, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_P_KeyViolations, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_Q_KeyViolations, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_GUIDCap, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_ClientReregister, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_SubnetTimeOut, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
- proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_RespTimeValue, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
+ proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_SubnetTimeOut, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_RespTimeValue, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_LocalPhyErrors, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_OverrunErrors, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
- proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_MaxCreditHint, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset +=3; /* 2 + 1 Reserved */
- proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_LinkRoundTripLatency, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset +=3;
+ proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_OverrunErrors, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_MaxCreditHint, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 3; /* 2 + 1 Reserved */
+ proto_tree_add_item(PortInfo_header_tree, hf_infiniband_PortInfo_LinkRoundTripLatency, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset += 3;
+
+ return local_offset;
}
/* Parse P_KeyTable Attribute
@@ -4210,26 +4211,26 @@ static void parse_PortInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
* MadHeader - The common MAD header of the current SMP/SMA */
static void parse_P_KeyTable(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
{
- gint local_offset = *offset;
- gint i = 0;
- proto_tree *P_KeyTable_header_tree = NULL;
- proto_item *P_KeyTable_header_item = NULL;
- proto_item *tempItemLow = NULL;
- proto_item *tempItemHigh = NULL;
-
- if(!parentTree)
+ gint local_offset = *offset;
+ gint i;
+ proto_item *P_KeyTable_header_item;
+ proto_tree *P_KeyTable_header_tree;
+ proto_item *tempItemLow;
+ proto_item *tempItemHigh;
+
+ if (!parentTree)
return;
P_KeyTable_header_item = proto_tree_add_item(parentTree, hf_infiniband_P_KeyTable_P_KeyTableBlock, tvb, local_offset, 64, ENC_NA);
proto_item_set_text(P_KeyTable_header_item, "%s", "P_KeyTable");
P_KeyTable_header_tree = proto_item_add_subtree(P_KeyTable_header_item, ett_pkeytable);
- for(i = 0; i < 32; i++)
+ for (i = 0; i < 32; i++)
{
tempItemLow = proto_tree_add_item(P_KeyTable_header_tree, hf_infiniband_P_KeyTable_MembershipType, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- tempItemHigh = proto_tree_add_item(P_KeyTable_header_tree, hf_infiniband_P_KeyTable_P_KeyBase, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset +=2;
- proto_item_append_text(tempItemLow, "(%u)", i);
- proto_item_append_text(tempItemHigh,"(%u)", i+1);
+ tempItemHigh = proto_tree_add_item(P_KeyTable_header_tree, hf_infiniband_P_KeyTable_P_KeyBase, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_item_append_text(tempItemLow, "(%u)", i);
+ proto_item_append_text(tempItemHigh, "(%u)", i+1);
}
}
@@ -4240,26 +4241,26 @@ static void parse_P_KeyTable(proto_tree* parentTree, tvbuff_t* tvb, gint *offset
* MadHeader - The common MAD header of the current SMP/SMA */
static void parse_SLtoVLMappingTable(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
{
- gint local_offset = *offset;
- proto_tree *SLtoVLMappingTable_header_tree = NULL;
- proto_item *SLtoVLMappingTable_header_item = NULL;
- proto_item *tempItemLow = NULL;
- proto_item *tempItemHigh = NULL;
- gint i = 0;
-
- if(!parentTree)
+ gint local_offset = *offset;
+ proto_item *SLtoVLMappingTable_header_item;
+ proto_tree *SLtoVLMappingTable_header_tree;
+ proto_item *tempItemLow;
+ proto_item *tempItemHigh;
+ gint i;
+
+ if (!parentTree)
return;
SLtoVLMappingTable_header_item = proto_tree_add_item(parentTree, hf_infiniband_smp_data, tvb, local_offset, 64, ENC_NA);
proto_item_set_text(SLtoVLMappingTable_header_item, "%s", "SLtoVLMappingTable");
SLtoVLMappingTable_header_tree = proto_item_add_subtree(SLtoVLMappingTable_header_item, ett_sltovlmapping);
- for(i = 0; i < 8; i++)
+ for (i = 0; i < 8; i++)
{
tempItemLow = proto_tree_add_item(SLtoVLMappingTable_header_tree, hf_infiniband_SLtoVLMappingTable_SLtoVL_HighBits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- tempItemHigh = proto_tree_add_item(SLtoVLMappingTable_header_tree, hf_infiniband_SLtoVLMappingTable_SLtoVL_LowBits, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
- proto_item_append_text(tempItemLow, "(%u)", i);
- proto_item_append_text(tempItemHigh,"(%u)", i+1);
+ tempItemHigh = proto_tree_add_item(SLtoVLMappingTable_header_tree, hf_infiniband_SLtoVLMappingTable_SLtoVL_LowBits, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_item_append_text(tempItemLow, "(%u)", i);
+ proto_item_append_text(tempItemHigh, "(%u)", i+1);
}
}
@@ -4270,26 +4271,26 @@ static void parse_SLtoVLMappingTable(proto_tree* parentTree, tvbuff_t* tvb, gint
* MadHeader - The common MAD header of the current SMP/SMA */
static void parse_VLArbitrationTable(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
{
- gint local_offset = *offset;
- gint i = 0;
- proto_tree *VLArbitrationTable_header_tree = NULL;
- proto_item *VLArbitrationTable_header_item = NULL;
- proto_item *tempItemLow = NULL;
- proto_item *tempItemHigh = NULL;
-
- if(!parentTree)
+ gint local_offset = *offset;
+ gint i;
+ proto_item *VLArbitrationTable_header_item;
+ proto_tree *VLArbitrationTable_header_tree;
+ proto_item *tempItemLow;
+ proto_item *tempItemHigh;
+
+ if (!parentTree)
return;
VLArbitrationTable_header_item = proto_tree_add_item(parentTree, hf_infiniband_smp_data, tvb, local_offset, 64, ENC_NA);
proto_item_set_text(VLArbitrationTable_header_item, "%s", "VLArbitrationTable");
VLArbitrationTable_header_tree = proto_item_add_subtree(VLArbitrationTable_header_item, ett_vlarbitrationtable);
- for(i = 0; i < 32; i++)
+ for (i = 0; i < 32; i++)
{
- tempItemLow = proto_tree_add_item(VLArbitrationTable_header_tree, hf_infiniband_VLArbitrationTable_VL, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
- tempItemHigh = proto_tree_add_item(VLArbitrationTable_header_tree, hf_infiniband_VLArbitrationTable_Weight, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
- proto_item_append_text(tempItemLow, "(%u)", i);
- proto_item_append_text(tempItemHigh,"(%u)", i);
+ tempItemLow = proto_tree_add_item(VLArbitrationTable_header_tree, hf_infiniband_VLArbitrationTable_VL, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ tempItemHigh = proto_tree_add_item(VLArbitrationTable_header_tree, hf_infiniband_VLArbitrationTable_Weight, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_item_append_text(tempItemLow, "(%u)", i);
+ proto_item_append_text(tempItemHigh, "(%u)", i);
}
}
@@ -4300,22 +4301,22 @@ static void parse_VLArbitrationTable(proto_tree* parentTree, tvbuff_t* tvb, gint
* MadHeader - The common MAD header of the current SMP/SMA */
static void parse_LinearForwardingTable(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
{
- gint i = 0;
- gint local_offset = *offset;
- proto_tree *LinearForwardingTable_header_tree = NULL;
- proto_item *LinearForwardingTable_header_item = NULL;
- proto_item *tempItemLow = NULL;
+ gint i;
+ gint local_offset = *offset;
+ proto_item *LinearForwardingTable_header_item;
+ proto_tree *LinearForwardingTable_header_tree;
+ proto_item *tempItemLow;
- if(!parentTree)
+ if (!parentTree)
return;
LinearForwardingTable_header_item = proto_tree_add_item(parentTree, hf_infiniband_smp_data, tvb, local_offset, 64, ENC_NA);
proto_item_set_text(LinearForwardingTable_header_item, "%s", "LinearForwardingTable");
LinearForwardingTable_header_tree = proto_item_add_subtree(LinearForwardingTable_header_item, ett_linearforwardingtable);
- for(i = 0; i < 64; i++)
+ for (i = 0; i < 64; i++)
{
- tempItemLow = proto_tree_add_item(LinearForwardingTable_header_tree, hf_infiniband_LinearForwardingTable_Port, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
+ tempItemLow = proto_tree_add_item(LinearForwardingTable_header_tree, hf_infiniband_LinearForwardingTable_Port, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
proto_item_append_text(tempItemLow, "(%u)", i);
}
}
@@ -4327,28 +4328,28 @@ static void parse_LinearForwardingTable(proto_tree* parentTree, tvbuff_t* tvb, g
* MadHeader - The common MAD header of the current SMP/SMA */
static void parse_RandomForwardingTable(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
{
- gint i = 0;
- gint local_offset = *offset;
- proto_tree *RandomForwardingTable_header_tree = NULL;
- proto_item *RandomForwardingTable_header_item = NULL;
- proto_item *tempItemLow = NULL;
+ gint i;
+ gint local_offset = *offset;
+ proto_item *RandomForwardingTable_header_item;
+ proto_tree *RandomForwardingTable_header_tree;
+ proto_item *tempItemLow;
- if(!parentTree)
+ if (!parentTree)
return;
RandomForwardingTable_header_item = proto_tree_add_item(parentTree, hf_infiniband_smp_data, tvb, local_offset, 64, ENC_NA);
proto_item_set_text(RandomForwardingTable_header_item, "%s", "RandomForwardingTable");
RandomForwardingTable_header_tree = proto_item_add_subtree(RandomForwardingTable_header_item, ett_randomforwardingtable);
- for(i = 0; i < 16; i++)
+ for (i = 0; i < 16; i++)
{
- tempItemLow = proto_tree_add_item(RandomForwardingTable_header_tree, hf_infiniband_RandomForwardingTable_LID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset +=2;
+ tempItemLow = proto_tree_add_item(RandomForwardingTable_header_tree, hf_infiniband_RandomForwardingTable_LID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
proto_item_append_text(tempItemLow, "(%u)", i);
tempItemLow = proto_tree_add_item(RandomForwardingTable_header_tree, hf_infiniband_RandomForwardingTable_Valid, tvb, local_offset, 1, ENC_BIG_ENDIAN);
proto_item_append_text(tempItemLow, "(%u)", i);
- tempItemLow = proto_tree_add_item(RandomForwardingTable_header_tree, hf_infiniband_RandomForwardingTable_LMC, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
+ tempItemLow = proto_tree_add_item(RandomForwardingTable_header_tree, hf_infiniband_RandomForwardingTable_LMC, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
proto_item_append_text(tempItemLow, "(%u)", i);
- tempItemLow = proto_tree_add_item(RandomForwardingTable_header_tree, hf_infiniband_RandomForwardingTable_Port, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
+ tempItemLow = proto_tree_add_item(RandomForwardingTable_header_tree, hf_infiniband_RandomForwardingTable_Port, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
proto_item_append_text(tempItemLow, "(%u)", i);
}
}
@@ -4360,22 +4361,22 @@ static void parse_RandomForwardingTable(proto_tree* parentTree, tvbuff_t* tvb, g
* MadHeader - The common MAD header of the current SMP/SMA */
static void parse_MulticastForwardingTable(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
{
- gint i = 0;
- gint local_offset = *offset;
- proto_tree *MulticastForwardingTable_header_tree = NULL;
- proto_item *MulticastForwardingTable_header_item = NULL;
- proto_item *tempItemLow = NULL;
+ gint i;
+ gint local_offset = *offset;
+ proto_item *MulticastForwardingTable_header_item;
+ proto_tree *MulticastForwardingTable_header_tree;
+ proto_item *tempItemLow;
- if(!parentTree)
+ if (!parentTree)
return;
MulticastForwardingTable_header_item = proto_tree_add_item(parentTree, hf_infiniband_smp_data, tvb, local_offset, 64, ENC_NA);
proto_item_set_text(MulticastForwardingTable_header_item, "%s", "MulticastForwardingTable");
MulticastForwardingTable_header_tree = proto_item_add_subtree(MulticastForwardingTable_header_item, ett_multicastforwardingtable);
- for(i = 0; i < 16; i++)
+ for (i = 0; i < 16; i++)
{
- tempItemLow = proto_tree_add_item(MulticastForwardingTable_header_tree, hf_infiniband_MulticastForwardingTable_PortMask, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset +=2;
+ tempItemLow = proto_tree_add_item(MulticastForwardingTable_header_tree, hf_infiniband_MulticastForwardingTable_PortMask, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
proto_item_append_text(tempItemLow, "(%u)", i);
}
@@ -4386,24 +4387,25 @@ static void parse_MulticastForwardingTable(proto_tree* parentTree, tvbuff_t* tvb
* tvb - The tvbbuff of packet data
* offset - The offset in TVB where the attribute begins
* MadHeader - The common MAD header of the current SMP/SMA */
-static void parse_SMInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
+static int parse_SMInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
{
- gint local_offset = *offset;
- proto_tree *SMInfo_header_tree = NULL;
- proto_item *SMInfo_header_item = NULL;
+ gint local_offset = *offset;
+ proto_item *SMInfo_header_item;
+ proto_tree *SMInfo_header_tree;
- if(!parentTree)
- return;
+ if (!parentTree)
+ return *offset;
SMInfo_header_item = proto_tree_add_item(parentTree, hf_infiniband_smp_data, tvb, local_offset, 64, ENC_NA);
proto_item_set_text(SMInfo_header_item, "%s", "SMInfo");
SMInfo_header_tree = proto_item_add_subtree(SMInfo_header_item, ett_sminfo);
- proto_tree_add_item(SMInfo_header_tree, hf_infiniband_SMInfo_GUID, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset +=8;
- proto_tree_add_item(SMInfo_header_tree, hf_infiniband_SMInfo_SM_Key, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset +=8;
- proto_tree_add_item(SMInfo_header_tree, hf_infiniband_SMInfo_ActCount, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset +=4;
+ proto_tree_add_item(SMInfo_header_tree, hf_infiniband_SMInfo_GUID, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
+ proto_tree_add_item(SMInfo_header_tree, hf_infiniband_SMInfo_SM_Key, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
+ proto_tree_add_item(SMInfo_header_tree, hf_infiniband_SMInfo_ActCount, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset += 4;
proto_tree_add_item(SMInfo_header_tree, hf_infiniband_SMInfo_Priority, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(SMInfo_header_tree, hf_infiniband_SMInfo_SMState, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
+ proto_tree_add_item(SMInfo_header_tree, hf_infiniband_SMInfo_SMState, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ return local_offset;
}
/* Parse VendorDiag Attribute
@@ -4411,21 +4413,23 @@ static void parse_SMInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
* tvb - The tvbbuff of packet data
* offset - The offset in TVB where the attribute begins
* MadHeader - The common MAD header of the current SMP/SMA */
-static void parse_VendorDiag(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
+static int parse_VendorDiag(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
{
- gint local_offset = *offset;
- proto_tree *VendorDiag_header_tree = NULL;
- proto_item *VendorDiag_header_item = NULL;
+ gint local_offset = *offset;
+ proto_item *VendorDiag_header_item;
+ proto_tree *VendorDiag_header_tree;
- if(!parentTree)
- return;
+ if (!parentTree)
+ return *offset;
VendorDiag_header_item = proto_tree_add_item(parentTree, hf_infiniband_smp_data, tvb, local_offset, 64, ENC_NA);
proto_item_set_text(VendorDiag_header_item, "%s", "VendorDiag");
VendorDiag_header_tree = proto_item_add_subtree(VendorDiag_header_item, ett_vendordiag);
- proto_tree_add_item(VendorDiag_header_tree, hf_infiniband_VendorDiag_NextIndex, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset +=2;
- proto_tree_add_item(VendorDiag_header_tree, hf_infiniband_VendorDiag_DiagData, tvb, local_offset, 62, ENC_NA); local_offset +=62;
+ proto_tree_add_item(VendorDiag_header_tree, hf_infiniband_VendorDiag_NextIndex, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(VendorDiag_header_tree, hf_infiniband_VendorDiag_DiagData, tvb, local_offset, 62, ENC_NA); local_offset += 62;
+
+ return local_offset;
}
/* Parse LedInfo Attribute
@@ -4435,11 +4439,11 @@ static void parse_VendorDiag(proto_tree* parentTree, tvbuff_t* tvb, gint *offset
* MadHeader - The common MAD header of the current SMP/SMA */
static void parse_LedInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
{
- gint local_offset = *offset;
- proto_tree *LedInfo_header_tree = NULL;
- proto_item *LedInfo_header_item = NULL;
+ gint local_offset = *offset;
+ proto_item *LedInfo_header_item;
+ proto_tree *LedInfo_header_tree;
- if(!parentTree)
+ if (!parentTree)
return;
LedInfo_header_item = proto_tree_add_item(parentTree, hf_infiniband_smp_data, tvb, local_offset, 64, ENC_NA);
@@ -4454,24 +4458,26 @@ static void parse_LedInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
* tvb - The tvbbuff of packet data
* offset - The offset in TVB where the attribute begins
* MadHeader - The common MAD header of the current SMP/SMA */
-static void parse_LinkSpeedWidthPairsTable(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
+static int parse_LinkSpeedWidthPairsTable(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
{
- gint local_offset = *offset;
- proto_tree *LinkSpeedWidthPairsTable_header_tree = NULL;
- proto_item *LinkSpeedWidthPairsTable_header_item = NULL;
+ gint local_offset = *offset;
+ proto_item *LinkSpeedWidthPairsTable_header_item;
+ proto_tree *LinkSpeedWidthPairsTable_header_tree;
- if(!parentTree)
- return;
+ if (!parentTree)
+ return *offset;
LinkSpeedWidthPairsTable_header_item = proto_tree_add_item(parentTree, hf_infiniband_smp_data, tvb, local_offset, 64, ENC_NA);
proto_item_set_text(LinkSpeedWidthPairsTable_header_item, "%s", "LinkSpeedWidthPairsTable");
LinkSpeedWidthPairsTable_header_tree = proto_item_add_subtree(LinkSpeedWidthPairsTable_header_item, ett_linkspeedwidthpairs);
- proto_tree_add_item(LinkSpeedWidthPairsTable_header_tree, hf_infiniband_LinkSpeedWidthPairsTable_NumTables, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
- proto_tree_add_item(LinkSpeedWidthPairsTable_header_tree, hf_infiniband_LinkSpeedWidthPairsTable_PortMask, tvb, local_offset, 32, ENC_NA); local_offset +=32;
- proto_tree_add_item(LinkSpeedWidthPairsTable_header_tree, hf_infiniband_LinkSpeedWidthPairsTable_SpeedTwoFive, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
- proto_tree_add_item(LinkSpeedWidthPairsTable_header_tree, hf_infiniband_LinkSpeedWidthPairsTable_SpeedFive, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
- proto_tree_add_item(LinkSpeedWidthPairsTable_header_tree, hf_infiniband_LinkSpeedWidthPairsTable_SpeedTen, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset +=1;
+ proto_tree_add_item(LinkSpeedWidthPairsTable_header_tree, hf_infiniband_LinkSpeedWidthPairsTable_NumTables, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(LinkSpeedWidthPairsTable_header_tree, hf_infiniband_LinkSpeedWidthPairsTable_PortMask, tvb, local_offset, 32, ENC_NA); local_offset += 32;
+ proto_tree_add_item(LinkSpeedWidthPairsTable_header_tree, hf_infiniband_LinkSpeedWidthPairsTable_SpeedTwoFive, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(LinkSpeedWidthPairsTable_header_tree, hf_infiniband_LinkSpeedWidthPairsTable_SpeedFive, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(LinkSpeedWidthPairsTable_header_tree, hf_infiniband_LinkSpeedWidthPairsTable_SpeedTen, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+
+ return local_offset;
}
/* Parse RID Field from Subnet Administraiton Packets.
@@ -4482,101 +4488,102 @@ static void parse_LinkSpeedWidthPairsTable(proto_tree* parentTree, tvbuff_t* tvb
static void parse_RID(proto_tree* SA_header_tree, tvbuff_t* tvb, gint *offset, MAD_Data* MadHeader)
{
gint local_offset = *offset;
- if(!SA_header_tree)
+
+ if (!SA_header_tree)
{
return;
}
- switch(MadHeader->attributeID)
+ switch (MadHeader->attributeID)
{
case 0x0011:
/* NodeRecord */
- proto_tree_add_item(SA_header_tree, hf_infiniband_SA_LID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- local_offset+=2; /* Reserved bits */
+ proto_tree_add_item(SA_header_tree, hf_infiniband_SA_LID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ local_offset += 2; /* Reserved bits */
break;
case 0x0012:
/* PortInfoRecord */
- proto_tree_add_item(SA_header_tree, hf_infiniband_SA_EndportLID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(SA_header_tree, hf_infiniband_SA_PortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- local_offset+=1; /* Reserved bits */
+ proto_tree_add_item(SA_header_tree, hf_infiniband_SA_EndportLID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(SA_header_tree, hf_infiniband_SA_PortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ local_offset += 1; /* Reserved bits */
break;
case 0x0013:
/* SLtoVLMappingTableRecord */
- proto_tree_add_item(SA_header_tree, hf_infiniband_SA_LID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(SA_header_tree, hf_infiniband_SA_InputPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(SA_header_tree, hf_infiniband_SA_OutputPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- local_offset+=4; /* Reserved bits */
+ proto_tree_add_item(SA_header_tree, hf_infiniband_SA_LID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(SA_header_tree, hf_infiniband_SA_InputPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(SA_header_tree, hf_infiniband_SA_OutputPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ local_offset += 4; /* Reserved bits */
break;
case 0x0014:
/* SwitchInfoRecord */
- proto_tree_add_item(SA_header_tree, hf_infiniband_SA_LID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- local_offset+=2; /* Reserved bits */
+ proto_tree_add_item(SA_header_tree, hf_infiniband_SA_LID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ local_offset += 2; /* Reserved bits */
break;
case 0x0015:
/* LinearForwardingTableRecord */
- proto_tree_add_item(SA_header_tree, hf_infiniband_SA_LID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(SA_header_tree, hf_infiniband_SA_BlockNum_SixteenBit, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- local_offset+=4; /* Reserved bits */
+ proto_tree_add_item(SA_header_tree, hf_infiniband_SA_LID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(SA_header_tree, hf_infiniband_SA_BlockNum_SixteenBit, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ local_offset += 4; /* Reserved bits */
break;
case 0x0016:
/* RandomForwardingTableRecord */
- proto_tree_add_item(SA_header_tree, hf_infiniband_SA_LID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(SA_header_tree, hf_infiniband_SA_BlockNum_SixteenBit, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- local_offset+=4; /* Reserved bits */
+ proto_tree_add_item(SA_header_tree, hf_infiniband_SA_LID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(SA_header_tree, hf_infiniband_SA_BlockNum_SixteenBit, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ local_offset += 4; /* Reserved bits */
break;
case 0x0017:
/* MulticastForwardingTableRecord */
- proto_tree_add_item(SA_header_tree, hf_infiniband_SA_LID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
+ proto_tree_add_item(SA_header_tree, hf_infiniband_SA_LID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
proto_tree_add_item(SA_header_tree, hf_infiniband_SA_Position, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(SA_header_tree, hf_infiniband_SA_BlockNum_NineBit, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- local_offset+=4; /* Reserved bits */
+ proto_tree_add_item(SA_header_tree, hf_infiniband_SA_BlockNum_NineBit, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ local_offset += 4; /* Reserved bits */
break;
case 0x0036:
/*VLArbitrationTableRecord */
- proto_tree_add_item(SA_header_tree, hf_infiniband_SA_LID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(SA_header_tree, hf_infiniband_SA_OutputPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(SA_header_tree, hf_infiniband_SA_BlockNum_EightBit, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- local_offset+=4; /* Reserved bits */
+ proto_tree_add_item(SA_header_tree, hf_infiniband_SA_LID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(SA_header_tree, hf_infiniband_SA_OutputPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(SA_header_tree, hf_infiniband_SA_BlockNum_EightBit, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ local_offset += 4; /* Reserved bits */
break;
case 0x0018:
/* SMInfoRecord */
- proto_tree_add_item(SA_header_tree, hf_infiniband_SA_LID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- local_offset+=2; /* Reserved bits */
+ proto_tree_add_item(SA_header_tree, hf_infiniband_SA_LID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ local_offset += 2; /* Reserved bits */
break;
case 0x0033:
/* P_KeyTableRecord */
- proto_tree_add_item(SA_header_tree, hf_infiniband_SA_LID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(SA_header_tree, hf_infiniband_SA_BlockNum_SixteenBit, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(SA_header_tree, hf_infiniband_SA_PortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- local_offset+=3; /* Reserved bits */
+ proto_tree_add_item(SA_header_tree, hf_infiniband_SA_LID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(SA_header_tree, hf_infiniband_SA_BlockNum_SixteenBit, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(SA_header_tree, hf_infiniband_SA_PortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ local_offset += 3; /* Reserved bits */
break;
case 0x00F3:
/* InformInfoRecord */
- proto_tree_add_item(SA_header_tree, hf_infiniband_InformInfoRecord_SubscriberGID, tvb, local_offset, 16, ENC_NA); local_offset+=16;
- proto_tree_add_item(SA_header_tree, hf_infiniband_InformInfoRecord_Enum, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- local_offset+=6; /* Reserved bits */
+ proto_tree_add_item(SA_header_tree, hf_infiniband_InformInfoRecord_SubscriberGID, tvb, local_offset, 16, ENC_NA); local_offset += 16;
+ proto_tree_add_item(SA_header_tree, hf_infiniband_InformInfoRecord_Enum, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ local_offset += 6; /* Reserved bits */
break;
case 0x0020:
/* LinkRecord */
- proto_tree_add_item(SA_header_tree, hf_infiniband_LinkRecord_FromLID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(SA_header_tree, hf_infiniband_LinkRecord_FromPort, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
+ proto_tree_add_item(SA_header_tree, hf_infiniband_LinkRecord_FromLID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(SA_header_tree, hf_infiniband_LinkRecord_FromPort, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
break;
case 0x0031:
/* ServiceRecord */
- proto_tree_add_item(SA_header_tree, hf_infiniband_ServiceRecord_ServiceID, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset+=8;
- proto_tree_add_item(SA_header_tree, hf_infiniband_ServiceRecord_ServiceGID, tvb, local_offset, 16, ENC_NA); local_offset+=16;
- proto_tree_add_item(SA_header_tree, hf_infiniband_ServiceRecord_ServiceP_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- local_offset+=2;
+ proto_tree_add_item(SA_header_tree, hf_infiniband_ServiceRecord_ServiceID, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
+ proto_tree_add_item(SA_header_tree, hf_infiniband_ServiceRecord_ServiceGID, tvb, local_offset, 16, ENC_NA); local_offset += 16;
+ proto_tree_add_item(SA_header_tree, hf_infiniband_ServiceRecord_ServiceP_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ local_offset += 2;
break;
case 0x0038:
/* MCMemberRecord */
- proto_tree_add_item(SA_header_tree, hf_infiniband_MCMemberRecord_MGID, tvb, local_offset, 16, ENC_NA); local_offset+=16;
- proto_tree_add_item(SA_header_tree, hf_infiniband_MCMemberRecord_PortGID, tvb, local_offset, 16, ENC_NA); local_offset+=16;
+ proto_tree_add_item(SA_header_tree, hf_infiniband_MCMemberRecord_MGID, tvb, local_offset, 16, ENC_NA); local_offset += 16;
+ proto_tree_add_item(SA_header_tree, hf_infiniband_MCMemberRecord_PortGID, tvb, local_offset, 16, ENC_NA); local_offset += 16;
break;
case 0x0030:
/* GuidInfoRecord */
- proto_tree_add_item(SA_header_tree, hf_infiniband_SA_LID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(SA_header_tree, hf_infiniband_SA_BlockNum_EightBit, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=2;
- local_offset+=4;
+ proto_tree_add_item(SA_header_tree, hf_infiniband_SA_LID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(SA_header_tree, hf_infiniband_SA_BlockNum_EightBit, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 2;
+ local_offset += 4;
break;
default:
break;
@@ -4590,55 +4597,59 @@ static void parse_RID(proto_tree* SA_header_tree, tvbuff_t* tvb, gint *offset, M
* tvb - The tvbbuff of packet data
* offset - The offset in TVB where the attribute begins
* MadHeader - The common MAD header of the current SMP/SMA */
-static void parse_InformInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
+static int parse_InformInfo(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
{
- gint local_offset = *offset;
- proto_tree *InformInfo_header_tree = NULL;
- proto_item *InformInfo_header_item = NULL;
- if(!parentTree)
+ gint local_offset = *offset;
+ proto_item *InformInfo_header_item;
+ proto_tree *InformInfo_header_tree;
+
+ if (!parentTree)
{
- return;
+ return *offset;
}
InformInfo_header_item = proto_tree_add_item(parentTree, hf_infiniband_SA, tvb, local_offset, 36, ENC_NA);
proto_item_set_text(InformInfo_header_item, "%s", "InformInfo");
InformInfo_header_tree = proto_item_add_subtree(InformInfo_header_item, ett_informinfo);
- proto_tree_add_item(InformInfo_header_tree, hf_infiniband_InformInfo_GID, tvb, local_offset, 16, ENC_NA); local_offset+=16;
- proto_tree_add_item(InformInfo_header_tree, hf_infiniband_InformInfo_LIDRangeBegin, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(InformInfo_header_tree, hf_infiniband_InformInfo_LIDRangeEnd, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- local_offset+=2; /* Reserved Bits */
- proto_tree_add_item(InformInfo_header_tree, hf_infiniband_InformInfo_IsGeneric, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(InformInfo_header_tree, hf_infiniband_InformInfo_Subscribe, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(InformInfo_header_tree, hf_infiniband_InformInfo_Type, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(InformInfo_header_tree, hf_infiniband_InformInfo_TrapNumberDeviceID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(InformInfo_header_tree, hf_infiniband_InformInfo_QPN, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset+=3;
- proto_tree_add_item(InformInfo_header_tree, hf_infiniband_InformInfo_RespTimeValue, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- local_offset+=1;
- proto_tree_add_item(InformInfo_header_tree, hf_infiniband_InformInfo_ProducerTypeVendorID, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset+=3;
-
+ proto_tree_add_item(InformInfo_header_tree, hf_infiniband_InformInfo_GID, tvb, local_offset, 16, ENC_NA); local_offset += 16;
+ proto_tree_add_item(InformInfo_header_tree, hf_infiniband_InformInfo_LIDRangeBegin, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(InformInfo_header_tree, hf_infiniband_InformInfo_LIDRangeEnd, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ local_offset += 2; /* Reserved Bits */
+ proto_tree_add_item(InformInfo_header_tree, hf_infiniband_InformInfo_IsGeneric, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(InformInfo_header_tree, hf_infiniband_InformInfo_Subscribe, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(InformInfo_header_tree, hf_infiniband_InformInfo_Type, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(InformInfo_header_tree, hf_infiniband_InformInfo_TrapNumberDeviceID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(InformInfo_header_tree, hf_infiniband_InformInfo_QPN, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset += 3;
+ proto_tree_add_item(InformInfo_header_tree, hf_infiniband_InformInfo_RespTimeValue, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ local_offset += 1;
+ proto_tree_add_item(InformInfo_header_tree, hf_infiniband_InformInfo_ProducerTypeVendorID, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset += 3;
+
+ return local_offset;
}
/* Parse LinkRecord Attribute
* IN: parentTree - The tree to add the dissection to
* tvb - The tvbbuff of packet data
* offset - The offset in TVB where the attribute begins
* MadHeader - The common MAD header of the current SMP/SMA */
-static void parse_LinkRecord(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
+static int parse_LinkRecord(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
{
- gint local_offset = *offset;
- proto_tree *LinkRecord_header_tree = NULL;
- proto_item *LinkRecord_header_item = NULL;
+ gint local_offset = *offset;
+ proto_item *LinkRecord_header_item;
+ proto_tree *LinkRecord_header_tree;
- if(!parentTree)
+ if (!parentTree)
{
- return;
+ return *offset;
}
LinkRecord_header_item = proto_tree_add_item(parentTree, hf_infiniband_SA, tvb, local_offset, 3, ENC_NA);
proto_item_set_text(LinkRecord_header_item, "%s", "LinkRecord");
LinkRecord_header_tree = proto_item_add_subtree(LinkRecord_header_item, ett_linkrecord);
- proto_tree_add_item(LinkRecord_header_tree, hf_infiniband_LinkRecord_ToPort, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(LinkRecord_header_tree, hf_infiniband_LinkRecord_ToLID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset +=2;
+ proto_tree_add_item(LinkRecord_header_tree, hf_infiniband_LinkRecord_ToPort, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(LinkRecord_header_tree, hf_infiniband_LinkRecord_ToLID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+
+ return local_offset;
}
/* Parse ServiceRecord Attribute
@@ -4646,50 +4657,52 @@ static void parse_LinkRecord(proto_tree* parentTree, tvbuff_t* tvb, gint *offset
* tvb - The tvbbuff of packet data
* offset - The offset in TVB where the attribute begins
* MadHeader - The common MAD header of the current SMP/SMA */
-static void parse_ServiceRecord(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
+static int parse_ServiceRecord(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
{
- gint local_offset = *offset;
- proto_tree *ServiceRecord_header_tree = NULL;
- proto_item *ServiceRecord_header_item = NULL;
- proto_item *tempData = NULL;
+ gint local_offset = *offset;
+ proto_item *ServiceRecord_header_item;
+ proto_tree *ServiceRecord_header_tree;
+ proto_item *tempData;
- if(!parentTree)
+ if (!parentTree)
{
- return;
+ return *offset;
}
ServiceRecord_header_item = proto_tree_add_item(parentTree, hf_infiniband_SA, tvb, local_offset, 176, ENC_NA);
proto_item_set_text(ServiceRecord_header_item, "%s", "ServiceRecord");
ServiceRecord_header_tree = proto_item_add_subtree(ServiceRecord_header_item, ett_servicerecord);
- proto_tree_add_item(ServiceRecord_header_tree, hf_infiniband_ServiceRecord_ServiceLease, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset+=4;
- proto_tree_add_item(ServiceRecord_header_tree, hf_infiniband_ServiceRecord_ServiceKey, tvb, local_offset, 16, ENC_NA); local_offset+=16;
- proto_tree_add_item(ServiceRecord_header_tree, hf_infiniband_ServiceRecord_ServiceName, tvb, local_offset, 64, ENC_NA); local_offset+=64;
+ proto_tree_add_item(ServiceRecord_header_tree, hf_infiniband_ServiceRecord_ServiceLease, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset += 4;
+ proto_tree_add_item(ServiceRecord_header_tree, hf_infiniband_ServiceRecord_ServiceKey, tvb, local_offset, 16, ENC_NA); local_offset += 16;
+ proto_tree_add_item(ServiceRecord_header_tree, hf_infiniband_ServiceRecord_ServiceName, tvb, local_offset, 64, ENC_NA); local_offset += 64;
- tempData = proto_tree_add_item(ServiceRecord_header_tree, hf_infiniband_ServiceRecord_ServiceData, tvb, local_offset, 16, ENC_NA); local_offset+=16;
+ tempData = proto_tree_add_item(ServiceRecord_header_tree, hf_infiniband_ServiceRecord_ServiceData, tvb, local_offset, 16, ENC_NA); local_offset += 16;
proto_item_append_text(tempData, "%s", "(ServiceData 8.1, 8.16)");
- tempData = proto_tree_add_item(ServiceRecord_header_tree, hf_infiniband_ServiceRecord_ServiceData, tvb, local_offset, 16, ENC_NA); local_offset+=16;
+ tempData = proto_tree_add_item(ServiceRecord_header_tree, hf_infiniband_ServiceRecord_ServiceData, tvb, local_offset, 16, ENC_NA); local_offset += 16;
proto_item_append_text(tempData, "%s", "(ServiceData 16.1, 16.8)");
- tempData = proto_tree_add_item(ServiceRecord_header_tree, hf_infiniband_ServiceRecord_ServiceData, tvb, local_offset, 16, ENC_NA); local_offset+=16;
+ tempData = proto_tree_add_item(ServiceRecord_header_tree, hf_infiniband_ServiceRecord_ServiceData, tvb, local_offset, 16, ENC_NA); local_offset += 16;
proto_item_append_text(tempData, "%s", "(ServiceData 32.1, 32.4)");
- tempData = proto_tree_add_item(ServiceRecord_header_tree, hf_infiniband_ServiceRecord_ServiceData, tvb, local_offset, 16, ENC_NA); local_offset+=16;
+ tempData = proto_tree_add_item(ServiceRecord_header_tree, hf_infiniband_ServiceRecord_ServiceData, tvb, local_offset, 16, ENC_NA); local_offset += 16;
proto_item_append_text(tempData, "%s", "(ServiceData 64.1, 64.2)");
+ return local_offset;
+
}
/* Parse PathRecord Attribute
* IN: parentTree - The tree to add the dissection to
* tvb - The tvbbuff of packet data
* offset - The offset in TVB where the attribute begins
* MadHeader - The common MAD header of the current SMP/SMA */
-static void parse_PathRecord(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
+static int parse_PathRecord(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
{
- gint local_offset = *offset;
- proto_tree *PathRecord_header_tree = NULL;
- proto_item *PathRecord_header_item = NULL;
+ gint local_offset = *offset;
+ proto_item *PathRecord_header_item;
+ proto_tree *PathRecord_header_tree;
- if(!parentTree)
+ if (!parentTree)
{
- return;
+ return *offset;
}
PathRecord_header_item = proto_tree_add_item(parentTree, hf_infiniband_SA, tvb, local_offset, 64, ENC_NA);
@@ -4697,62 +4710,66 @@ static void parse_PathRecord(proto_tree* parentTree, tvbuff_t* tvb, gint *offset
PathRecord_header_tree = proto_item_add_subtree(PathRecord_header_item, ett_pathrecord);
local_offset += 8; /* Reserved Bits */
- proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_DGID, tvb, local_offset, 16, ENC_NA); local_offset+=16;
- proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_SGID, tvb, local_offset, 16, ENC_NA); local_offset+=16;
- proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_DLID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_SLID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
+ proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_DGID, tvb, local_offset, 16, ENC_NA); local_offset += 16;
+ proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_SGID, tvb, local_offset, 16, ENC_NA); local_offset += 16;
+ proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_DLID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_SLID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_RawTraffic, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_FlowLabel, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset+=3;
- proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_HopLimit, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_TClass, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
+ proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_FlowLabel, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset += 3;
+ proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_HopLimit, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_TClass, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_Reversible, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_NumbPath, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_P_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_SL, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
+ proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_NumbPath, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_P_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_SL, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_MTUSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_MTU, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
+ proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_MTU, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_RateSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_Rate, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
+ proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_Rate, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_PacketLifeTimeSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_PacketLifeTime, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_Preference, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
+ proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_PacketLifeTime, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(PathRecord_header_tree, hf_infiniband_PathRecord_Preference, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+
+ return local_offset;
}
/* Parse MCMemberRecord Attribute
* IN: parentTree - The tree to add the dissection to
* tvb - The tvbbuff of packet data
* offset - The offset in TVB where the attribute begins
* MadHeader - The common MAD header of the current SMP/SMA */
-static void parse_MCMemberRecord(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
+static int parse_MCMemberRecord(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
{
- gint local_offset = *offset;
- proto_tree *MCMemberRecord_header_tree = NULL;
- proto_item *MCMemberRecord_header_item = NULL;
+ gint local_offset = *offset;
+ proto_item *MCMemberRecord_header_item;
+ proto_tree *MCMemberRecord_header_tree;
- if(!parentTree)
+ if (!parentTree)
{
- return;
+ return *offset;
}
MCMemberRecord_header_item = proto_tree_add_item(parentTree, hf_infiniband_SA, tvb, local_offset, 64, ENC_NA);
proto_item_set_text(MCMemberRecord_header_item, "%s", "MCMemberRecord");
MCMemberRecord_header_tree = proto_item_add_subtree(MCMemberRecord_header_item, ett_mcmemberrecord);
- proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_Q_Key, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset+=4;
- proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_MLID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
+ proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_Q_Key, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset += 4;
+ proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_MLID, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_MTUSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_MTU, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_TClass, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_P_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
+ proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_MTU, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_TClass, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_P_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_RateSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_Rate, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
+ proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_Rate, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_PacketLifeTimeSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_PacketLifeTime, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
+ proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_PacketLifeTime, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_SL, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_FlowLabel, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset+=3;
- proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_HopLimit, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
+ proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_FlowLabel, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset += 3;
+ proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_HopLimit, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_Scope, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_JoinState, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_ProxyJoin, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=3;
+ proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_JoinState, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(MCMemberRecord_header_tree, hf_infiniband_MCMemberRecord_ProxyJoin, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 3;
+
+ return local_offset;
}
/* Parse TraceRecord Attribute
@@ -4760,50 +4777,52 @@ static void parse_MCMemberRecord(proto_tree* parentTree, tvbuff_t* tvb, gint *of
* tvb - The tvbbuff of packet data
* offset - The offset in TVB where the attribute begins
* MadHeader - The common MAD header of the current SMP/SMA */
-static void parse_TraceRecord(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
+static int parse_TraceRecord(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
{
- gint local_offset = *offset;
- proto_tree *TraceRecord_header_tree = NULL;
- proto_item *TraceRecord_header_item = NULL;
+ gint local_offset = *offset;
+ proto_item *TraceRecord_header_item;
+ proto_tree *TraceRecord_header_tree;
- if(!parentTree)
+ if (!parentTree)
{
- return;
+ return *offset;
}
TraceRecord_header_item = proto_tree_add_item(parentTree, hf_infiniband_SA, tvb, local_offset, 46, ENC_NA);
proto_item_set_text(TraceRecord_header_item, "%s", "TraceRecord");
TraceRecord_header_tree = proto_item_add_subtree(TraceRecord_header_item, ett_tracerecord);
- proto_tree_add_item(TraceRecord_header_tree, hf_infiniband_TraceRecord_GIDPrefix, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset+=8;
- proto_tree_add_item(TraceRecord_header_tree, hf_infiniband_TraceRecord_IDGeneration, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- local_offset+=1; /* Reserved Bits */
- proto_tree_add_item(TraceRecord_header_tree, hf_infiniband_TraceRecord_NodeType, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(TraceRecord_header_tree, hf_infiniband_TraceRecord_NodeID, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset+=8;
- proto_tree_add_item(TraceRecord_header_tree, hf_infiniband_TraceRecord_ChassisID, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset+=8;
- proto_tree_add_item(TraceRecord_header_tree, hf_infiniband_TraceRecord_EntryPortID, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset+=8;
- proto_tree_add_item(TraceRecord_header_tree, hf_infiniband_TraceRecord_ExitPortID, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset+=8;
- proto_tree_add_item(TraceRecord_header_tree, hf_infiniband_TraceRecord_EntryPort, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(TraceRecord_header_tree, hf_infiniband_TraceRecord_ExitPort, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
+ proto_tree_add_item(TraceRecord_header_tree, hf_infiniband_TraceRecord_GIDPrefix, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
+ proto_tree_add_item(TraceRecord_header_tree, hf_infiniband_TraceRecord_IDGeneration, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ local_offset += 1; /* Reserved Bits */
+ proto_tree_add_item(TraceRecord_header_tree, hf_infiniband_TraceRecord_NodeType, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(TraceRecord_header_tree, hf_infiniband_TraceRecord_NodeID, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
+ proto_tree_add_item(TraceRecord_header_tree, hf_infiniband_TraceRecord_ChassisID, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
+ proto_tree_add_item(TraceRecord_header_tree, hf_infiniband_TraceRecord_EntryPortID, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
+ proto_tree_add_item(TraceRecord_header_tree, hf_infiniband_TraceRecord_ExitPortID, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
+ proto_tree_add_item(TraceRecord_header_tree, hf_infiniband_TraceRecord_EntryPort, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(TraceRecord_header_tree, hf_infiniband_TraceRecord_ExitPort, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+
+ return local_offset;
}
/* Parse MultiPathRecord Attribute
* IN: parentTree - The tree to add the dissection to
* tvb - The tvbbuff of packet data
* offset - The offset in TVB where the attribute begins
* MadHeader - The common MAD header of the current SMP/SMA */
-static void parse_MultiPathRecord(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
+static int parse_MultiPathRecord(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
{
- gint local_offset = *offset;
- proto_tree *MultiPathRecord_header_tree = NULL;
- proto_item *MultiPathRecord_header_item = NULL;
- proto_item *SDGID = NULL;
- guint8 SDGIDCount = 0;
- guint8 DGIDCount = 0;
- guint32 i = 0;
-
- if(!parentTree)
+ gint local_offset = *offset;
+ proto_item *MultiPathRecord_header_item;
+ proto_tree *MultiPathRecord_header_tree;
+ proto_item *SDGID;
+ guint8 SDGIDCount;
+ guint8 DGIDCount;
+ guint32 i;
+
+ if (!parentTree)
{
- return;
+ return *offset;
}
MultiPathRecord_header_item = proto_tree_add_item(parentTree, hf_infiniband_SA, tvb, local_offset, 200, ENC_NA);
@@ -4811,62 +4830,66 @@ static void parse_MultiPathRecord(proto_tree* parentTree, tvbuff_t* tvb, gint *o
MultiPathRecord_header_tree = proto_item_add_subtree(MultiPathRecord_header_item, ett_multipathrecord);
proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_RawTraffic, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_FlowLabel, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset+=3;
- proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_HopLimit, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_TClass, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
+ proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_FlowLabel, tvb, local_offset, 3, ENC_BIG_ENDIAN); local_offset += 3;
+ proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_HopLimit, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_TClass, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_Reversible, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_NumbPath, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_P_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
- proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_SL, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset+=2;
+ proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_NumbPath, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_P_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
+ proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_SL, tvb, local_offset, 2, ENC_BIG_ENDIAN); local_offset += 2;
proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_MTUSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_MTU, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
+ proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_MTU, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_RateSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_Rate, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
+ proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_Rate, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_PacketLifeTimeSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_PacketLifeTime, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- local_offset+=1; /* Reserved Bits */
+ proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_PacketLifeTime, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ local_offset += 1; /* Reserved Bits */
proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_IndependenceSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_GIDScope, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
+ proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_GIDScope, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
SDGIDCount = tvb_get_guint8(tvb, local_offset);
- proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_SGIDCount, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
+ proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_SGIDCount, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
DGIDCount = tvb_get_guint8(tvb, local_offset);
- proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_DGIDCount, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset+=1;
- local_offset+=7; /*Reserved Bits */
+ proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_DGIDCount, tvb, local_offset, 1, ENC_BIG_ENDIAN); local_offset += 1;
+ local_offset += 7; /*Reserved Bits */
- for(i = 0; i < SDGIDCount; i++)
+ for (i = 0; i < SDGIDCount; i++)
{
- SDGID = proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_SDGID, tvb, local_offset, 16, ENC_NA); local_offset+=16;
- proto_item_set_text(SDGID, "(%s%u)","SGID", i);
+ SDGID = proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_SDGID, tvb, local_offset, 16, ENC_NA); local_offset += 16;
+ proto_item_set_text(SDGID, "(%s%u)", "SGID", i);
}
- for(i = 0; i < DGIDCount; i++)
+ for (i = 0; i < DGIDCount; i++)
{
- SDGID = proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_SDGID, tvb, local_offset, 16, ENC_NA); local_offset+=16;
- proto_item_set_text(SDGID, "(%s%u)","DGID", i);
+ SDGID = proto_tree_add_item(MultiPathRecord_header_tree, hf_infiniband_MultiPathRecord_SDGID, tvb, local_offset, 16, ENC_NA); local_offset += 16;
+ proto_item_set_text(SDGID, "(%s%u)", "DGID", i);
}
+
+ return local_offset;
}
/* Parse ServiceAssociationRecord Attribute
* IN: parentTree - The tree to add the dissection to
* tvb - The tvbbuff of packet data
* offset - The offset in TVB where the attribute begins
* MadHeader - The common MAD header of the current SMP/SMA */
-static void parse_ServiceAssociationRecord(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
+static int parse_ServiceAssociationRecord(proto_tree* parentTree, tvbuff_t* tvb, gint *offset)
{
- gint local_offset = *offset;
- proto_tree *ServiceAssociationRecord_header_tree = NULL;
- proto_item *ServiceAssociationRecord_header_item = NULL;
+ gint local_offset = *offset;
+ proto_item *ServiceAssociationRecord_header_item;
+ proto_tree *ServiceAssociationRecord_header_tree;
- if(!parentTree)
+ if (!parentTree)
{
- return;
+ return *offset;
}
ServiceAssociationRecord_header_item = proto_tree_add_item(parentTree, hf_infiniband_SA, tvb, local_offset, 80, ENC_NA);
proto_item_set_text(ServiceAssociationRecord_header_item, "%s", "ServiceAssociationRecord");
ServiceAssociationRecord_header_tree = proto_item_add_subtree(ServiceAssociationRecord_header_item, ett_serviceassocrecord);
- proto_tree_add_item(ServiceAssociationRecord_header_tree, hf_infiniband_ServiceAssociationRecord_ServiceKey, tvb, local_offset, 16, ENC_NA); local_offset +=16;
- proto_tree_add_item(ServiceAssociationRecord_header_tree, hf_infiniband_ServiceAssociationRecord_ServiceName, tvb, local_offset, 64, ENC_ASCII|ENC_NA); local_offset +=64;
+ proto_tree_add_item(ServiceAssociationRecord_header_tree, hf_infiniband_ServiceAssociationRecord_ServiceKey, tvb, local_offset, 16, ENC_NA); local_offset += 16;
+ proto_tree_add_item(ServiceAssociationRecord_header_tree, hf_infiniband_ServiceAssociationRecord_ServiceName, tvb, local_offset, 64, ENC_ASCII|ENC_NA); local_offset += 64;
+
+ return local_offset;
}
/* Parse PortCounters MAD from the Performance management class.
@@ -4874,11 +4897,11 @@ static void parse_ServiceAssociationRecord(proto_tree* parentTree, tvbuff_t* tvb
* tvb - The tvbbuff of packet data
* offset - The offset in TVB where the attribute begins
* pinfo - The packet info structure with column information */
-static void parse_PERF_PortCounters(proto_tree* parentTree, tvbuff_t* tvb, packet_info *pinfo, gint *offset)
+static int parse_PERF_PortCounters(proto_tree* parentTree, tvbuff_t* tvb, packet_info *pinfo, gint *offset)
{
- proto_item *perf_item = NULL;
- proto_tree *perf_tree = NULL;
- gint local_offset = *offset;
+ proto_item *perf_item;
+ proto_tree *perf_tree;
+ gint local_offset = *offset;
col_set_str(pinfo->cinfo, COL_INFO, "PERF (PortCounters)");
@@ -4909,7 +4932,7 @@ static void parse_PERF_PortCounters(proto_tree* parentTree, tvbuff_t* tvb, packe
proto_tree_add_item(perf_tree, hf_infiniband_PortCounters_PortRcvPkts, tvb, local_offset, 4, ENC_BIG_ENDIAN); local_offset += 4;
*offset = local_offset; /* update caller's offset to point to end of the PortCounters payload */
- return;
+ return local_offset;
}
/* Parse PortCountersExtended MAD from the Performance management class.
@@ -4917,11 +4940,11 @@ static void parse_PERF_PortCounters(proto_tree* parentTree, tvbuff_t* tvb, packe
* tvb - The tvbbuff of packet data
* offset - The offset in TVB where the attribute begins
* pinfo - The packet info structure with column information */
-static void parse_PERF_PortCountersExtended(proto_tree* parentTree, tvbuff_t* tvb, packet_info *pinfo, gint *offset)
+static int parse_PERF_PortCountersExtended(proto_tree* parentTree, tvbuff_t* tvb, packet_info *pinfo, gint *offset)
{
- proto_item *perf_item = NULL;
- proto_tree *perf_tree = NULL;
- gint local_offset = *offset;
+ proto_item *perf_item;
+ proto_tree *perf_tree;
+ gint local_offset = *offset;
col_set_str(pinfo->cinfo, COL_INFO, "PERF (PortCountersExtended)");
@@ -4943,7 +4966,7 @@ static void parse_PERF_PortCountersExtended(proto_tree* parentTree, tvbuff_t* tv
proto_tree_add_item(perf_tree, hf_infiniband_PortCountersExt_PortMulticastRcvPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN); local_offset += 8;
*offset = local_offset; /* update caller's offset to point to end of the PortCountersExt payload */
- return;
+ return local_offset;
}
/* dissect_general_info
@@ -4955,16 +4978,16 @@ static void parse_PERF_PortCountersExtended(proto_tree* parentTree, tvbuff_t* tv
* starts_with_grh - If true this packets start with a GRH header, otherwise with LRH */
static void dissect_general_info(tvbuff_t *tvb, gint offset, packet_info *pinfo, gboolean starts_with_grh)
{
- guint8 lnh_val = 0; /* The Link Next Header Value. Tells us which headers are coming */
- gboolean bthFollows = FALSE; /* Tracks if we are parsing a BTH. This is a significant decision point */
- guint8 virtualLane = 0; /* The Virtual Lane of the current Packet */
- guint8 opCode = 0; /* OpCode from BTH header. */
- gint32 nextHeaderSequence = -1; /* defined by this dissector. #define which indicates the upcoming header sequence from OpCode */
- guint8 nxtHdr = 0; /* that must be available for that header. */
- struct e_in6_addr SRCgid; /* Struct to display ipv6 Address */
- struct e_in6_addr DSTgid; /* Struct to display ipv6 Address */
- guint8 management_class = 0;
- MAD_Data MadData;
+ guint8 lnh_val = 0; /* The Link Next Header Value. Tells us which headers are coming */
+ gboolean bthFollows = FALSE; /* Tracks if we are parsing a BTH. This is a significant decision point */
+ guint8 virtualLane = 0; /* The Virtual Lane of the current Packet */
+ guint8 opCode = 0; /* OpCode from BTH header. */
+ gint32 nextHeaderSequence = -1; /* defined by this dissector. #define which indicates the upcoming header sequence from OpCode */
+ guint8 nxtHdr = 0; /* that must be available for that header. */
+ struct e_in6_addr SRCgid; /* Struct to display ipv6 Address */
+ struct e_in6_addr DSTgid; /* Struct to display ipv6 Address */
+ guint8 management_class = 0;
+ MAD_Data MadData;
if (starts_with_grh) {
/* this is a RoCE packet, skip LRH parsing */
@@ -4974,31 +4997,31 @@ static void dissect_general_info(tvbuff_t *tvb, gint offset, packet_info *pinfo,
virtualLane = tvb_get_guint8(tvb, offset);
virtualLane = virtualLane & 0xF0;
- offset+=1;
+ offset += 1;
/* Save Link Next Header... This tells us what the next header is. */
lnh_val = tvb_get_guint8(tvb, offset);
lnh_val = lnh_val & 0x03;
- offset+=1;
+ offset += 1;
/* Set destination in packet view. */
*((guint16*) dst_addr) = tvb_get_ntohs(tvb, offset);
SET_ADDRESS(&pinfo->dst, AT_IB, sizeof(guint16), dst_addr);
- offset+=4;
+ offset += 4;
/* Set Source in packet view. */
*((guint16*) src_addr) = tvb_get_ntohs(tvb, offset);
SET_ADDRESS(&pinfo->src, AT_IB, sizeof(guint16), src_addr);
- offset+=2;
+ offset += 2;
skip_lrh:
- switch(lnh_val)
+ switch (lnh_val)
{
case IBA_GLOBAL:
- offset +=6;
+ offset += 6;
nxtHdr = tvb_get_guint8(tvb, offset);
offset += 2;
@@ -5018,7 +5041,7 @@ skip_lrh:
offset += 16;
- if(nxtHdr != 0x1B)
+ if (nxtHdr != 0x1B)
{
/* Some kind of packet being transported globally with IBA, but locally it is not IBA - no BTH following. */
break;
@@ -5033,8 +5056,8 @@ skip_lrh:
/* Get the OpCode - this tells us what headers are following */
opCode = tvb_get_guint8(tvb, offset);
- col_append_str(pinfo->cinfo, COL_INFO, val_to_str((guint32)opCode, OpCodeMap, "Unknown OpCode"));
- offset +=12;
+ col_append_str(pinfo->cinfo, COL_INFO, val_to_str_const((guint32)opCode, OpCodeMap, "Unknown OpCode"));
+ offset += 12;
break;
case IP_NON_IBA:
/* Raw IPv6 Packet */
@@ -5047,13 +5070,13 @@ skip_lrh:
break;
}
- if(bthFollows)
+ if (bthFollows)
{
/* Find our next header sequence based on the Opcode
* Since we're not doing dissection here, we just need the proper offsets to get our labels in packet view */
nextHeaderSequence = find_next_header_sequence((guint32) opCode);
- switch(nextHeaderSequence)
+ switch (nextHeaderSequence)
{
case RDETH_DETH_PAYLD:
offset += 4; /* RDETH */
@@ -5143,35 +5166,41 @@ skip_lrh:
break;
}
}
- if(virtualLane == 0xF0)
+ if (virtualLane == 0xF0)
{
management_class = tvb_get_guint8(tvb, offset + 1);
- if(((management_class >= (guint8)VENDOR_1_START) && (management_class <= (guint8)VENDOR_1_END))
- || ((management_class >= (guint8)VENDOR_2_START) && (management_class <= (guint8)VENDOR_2_END)))
+ if (((management_class >= (guint8)VENDOR_1_START) && (management_class <= (guint8)VENDOR_1_END))
+ || ((management_class >= (guint8)VENDOR_2_START) && (management_class <= (guint8)VENDOR_2_END)))
{
return;
}
- else if((management_class >= (guint8)APPLICATION_START) && (management_class <= (guint8)APPLICATION_END))
+ else if ((management_class >= (guint8)APPLICATION_START) && (management_class <= (guint8)APPLICATION_END))
{
return;
}
- else if(((management_class == (guint8)0x00) || (management_class == (guint8)0x02))
- || ((management_class >= (guint8)0x50) && (management_class <= (guint8)0x80))
- || ((management_class >= (guint8)0x82)))
+ else if (((management_class == (guint8)0x00) || (management_class == (guint8)0x02))
+ || ((management_class >= (guint8)0x50) && (management_class <= (guint8)0x80))
+ || ((management_class >= (guint8)0x82)))
{
return;
}
else /* we have a normal management_class */
{
- parse_MAD_Common(NULL, tvb, &offset, &MadData);
- label_SUBM_Method(NULL, &MadData, pinfo);
- label_SUBM_Attribute(NULL, &MadData, pinfo);
+ if (parse_MAD_Common(NULL, tvb, &offset, &MadData)) {
+ label_SUBM_Method(NULL, &MadData, pinfo);
+ label_SUBM_Attribute(NULL, &MadData, pinfo);
+ }
}
}
return;
}
+static void proto_init_infiniband(void)
+{
+ src_addr = dst_addr = NULL;
+}
+
/* Protocol Registration */
void proto_register_infiniband(void)
{
@@ -7471,6 +7500,8 @@ void proto_register_infiniband(void)
proto_register_field_array(proto_infiniband_link, hf_link, array_length(hf_link));
proto_register_subtree_array(ett_link_array, array_length(ett_link_array));
+ register_init_routine(proto_init_infiniband);
+
/* initialize the hash table */
CM_context_table = g_hash_table_new_full(g_int64_hash, g_int64_equal,
table_destroy_notify, table_destroy_notify);
@@ -7481,9 +7512,9 @@ void proto_reg_handoff_infiniband(void)
{
dissector_handle_t roce_handle;
- ipv6_handle = find_dissector("ipv6");
- data_handle = find_dissector("data");
- eth_handle = find_dissector("eth");
+ ipv6_handle = find_dissector("ipv6");
+ data_handle = find_dissector("data");
+ eth_handle = find_dissector("eth");
ethertype_dissector_table = find_dissector_table("ethertype");
/* create and announce an anonymous RoCE dissector */
diff --git a/epan/dissectors/packet-ip.c b/epan/dissectors/packet-ip.c
index 85051f6bdd..a9552fcfec 100644
--- a/epan/dissectors/packet-ip.c
+++ b/epan/dissectors/packet-ip.c
@@ -126,7 +126,14 @@ static int hf_ip_opt_type_number = -1;
static int hf_ip_opt_len = -1;
static int hf_ip_opt_ptr = -1;
static int hf_ip_opt_sid = -1;
+static int hf_ip_opt_mtu = -1;
+static int hf_ip_opt_id_number = -1;
+static int hf_ip_opt_ohc = -1;
+static int hf_ip_opt_rhc = -1;
+static int hf_ip_opt_originator = -1;
static int hf_ip_opt_ra = -1;
+static int hf_ip_opt_addr = -1;
+static int hf_ip_opt_padding = -1;
static int hf_ip_opt_qs_func = -1;
static int hf_ip_opt_qs_rate = -1;
static int hf_ip_opt_qs_ttl = -1;
@@ -134,6 +141,22 @@ static int hf_ip_opt_qs_ttl_diff = -1;
static int hf_ip_opt_qs_unused = -1;
static int hf_ip_opt_qs_nonce = -1;
static int hf_ip_opt_qs_reserved = -1;
+static int hf_ip_opt_sec_rfc791_sec = -1;
+static int hf_ip_opt_sec_rfc791_comp = -1;
+static int hf_ip_opt_sec_rfc791_hr = -1;
+static int hf_ip_opt_sec_rfc791_tcc = -1;
+static int hf_ip_opt_sec_cl = -1;
+static int hf_ip_opt_sec_prot_auth_flags = -1;
+static int hf_ip_opt_sec_prot_auth_genser = -1;
+static int hf_ip_opt_sec_prot_auth_siop_esi = -1;
+static int hf_ip_opt_sec_prot_auth_sci = -1;
+static int hf_ip_opt_sec_prot_auth_nsa = -1;
+static int hf_ip_opt_sec_prot_auth_doe = -1;
+static int hf_ip_opt_sec_prot_auth_unassigned = -1;
+static int hf_ip_opt_sec_prot_auth_unassigned2 = -1;
+static int hf_ip_opt_sec_prot_auth_fti = -1;
+static int hf_ip_opt_ext_sec_add_sec_info_format_code = -1;
+static int hf_ip_opt_ext_sec_add_sec_info = -1;
static int hf_ip_rec_rt = -1;
static int hf_ip_rec_rt_host = -1;
static int hf_ip_cur_rt = -1;
@@ -183,17 +206,25 @@ static gint ett_ip_dsfield = -1;
static gint ett_ip_tos = -1;
static gint ett_ip_off = -1;
static gint ett_ip_options = -1;
+static gint ett_ip_option_eool = -1;
+static gint ett_ip_option_nop = -1;
static gint ett_ip_option_sec = -1;
static gint ett_ip_option_route = -1;
-static gint ett_ip_option_sid = -1;
static gint ett_ip_option_timestamp = -1;
-static gint ett_ip_option_qs = -1;
-static gint ett_ip_option_ra = -1;
+static gint ett_ip_option_ext_security = -1;
static gint ett_ip_option_cipso = -1;
+static gint ett_ip_option_sid = -1;
+static gint ett_ip_option_mtu = -1;
+static gint ett_ip_option_tr = -1;
+static gint ett_ip_option_ra = -1;
+static gint ett_ip_option_sdb = -1;
+static gint ett_ip_option_qs = -1;
+static gint ett_ip_option_other = -1;
static gint ett_ip_fragments = -1;
static gint ett_ip_fragment = -1;
static gint ett_ip_checksum = -1;
static gint ett_ip_opt_type = -1;
+static gint ett_ip_opt_sec_prot_auth_flags = -1;
#ifdef HAVE_GEOIP
static gint ett_geoip_info = -1;
@@ -255,29 +286,32 @@ static dissector_handle_t tapa_handle;
#define IPDSFIELD_DSCP_MASK 0xFC
#define IPDSFIELD_ECN_MASK 0x03
#define IPDSFIELD_DSCP_SHIFT 2
+
#define IPDSFIELD_DSCP(dsfield) (((dsfield)&IPDSFIELD_DSCP_MASK)>>IPDSFIELD_DSCP_SHIFT)
#define IPDSFIELD_ECN(dsfield) ((dsfield)&IPDSFIELD_ECN_MASK)
+
#define IPDSFIELD_DSCP_DEFAULT 0x00
#define IPDSFIELD_DSCP_CS1 0x08
-#define IPDSFIELD_DSCP_CS2 0x10
-#define IPDSFIELD_DSCP_CS3 0x18
-#define IPDSFIELD_DSCP_CS4 0x20
-#define IPDSFIELD_DSCP_CS5 0x28
-#define IPDSFIELD_DSCP_CS6 0x30
-#define IPDSFIELD_DSCP_CS7 0x38
#define IPDSFIELD_DSCP_AF11 0x0A
#define IPDSFIELD_DSCP_AF12 0x0C
#define IPDSFIELD_DSCP_AF13 0x0E
+#define IPDSFIELD_DSCP_CS2 0x10
#define IPDSFIELD_DSCP_AF21 0x12
#define IPDSFIELD_DSCP_AF22 0x14
#define IPDSFIELD_DSCP_AF23 0x16
+#define IPDSFIELD_DSCP_CS3 0x18
#define IPDSFIELD_DSCP_AF31 0x1A
#define IPDSFIELD_DSCP_AF32 0x1C
#define IPDSFIELD_DSCP_AF33 0x1E
+#define IPDSFIELD_DSCP_CS4 0x20
#define IPDSFIELD_DSCP_AF41 0x22
#define IPDSFIELD_DSCP_AF42 0x24
#define IPDSFIELD_DSCP_AF43 0x26
+#define IPDSFIELD_DSCP_CS5 0x28
#define IPDSFIELD_DSCP_EF 0x2E
+#define IPDSFIELD_DSCP_CS6 0x30
+#define IPDSFIELD_DSCP_CS7 0x38
+
#define IPDSFIELD_ECT_NOT 0x00
#define IPDSFIELD_ECT_1 0x01
#define IPDSFIELD_ECT_0 0x02
@@ -321,7 +355,7 @@ static dissector_handle_t tapa_handle;
/* TODO: Not all of these are implemented. */
#define IPOPT_EOOL (0 |IPOPT_CONTROL)
#define IPOPT_NOP (1 |IPOPT_CONTROL)
-#define IPOPT_SEC (2 |IPOPT_COPY|IPOPT_CONTROL)
+#define IPOPT_SEC (2 |IPOPT_COPY|IPOPT_CONTROL) /* RFC 791/1108 */
#define IPOPT_LSR (3 |IPOPT_COPY|IPOPT_CONTROL)
#define IPOPT_TS (4 |IPOPT_MEASUREMENT)
#define IPOPT_ESEC (5 |IPOPT_COPY|IPOPT_CONTROL) /* RFC 1108 */
@@ -330,8 +364,8 @@ static dissector_handle_t tapa_handle;
#define IPOPT_SID (8 |IPOPT_COPY|IPOPT_CONTROL)
#define IPOPT_SSR (9 |IPOPT_COPY|IPOPT_CONTROL)
#define IPOPT_ZSU (10|IPOPT_CONTROL) /* Zsu */
-#define IPOPT_MTUP (11|IPOPT_CONTROL) /* RFC 1191* */
-#define IPOPT_MTUR (12|IPOPT_CONTROL) /* RFC 1191* */
+#define IPOPT_MTUP (11|IPOPT_CONTROL) /* RFC 1063 */
+#define IPOPT_MTUR (12|IPOPT_CONTROL) /* RFC 1063 */
#define IPOPT_FINN (13|IPOPT_COPY|IPOPT_MEASUREMENT) /* Finn */
#define IPOPT_VISA (14|IPOPT_COPY|IPOPT_CONTROL) /* Estrin */
#define IPOPT_ENCODE (15|IPOPT_CONTROL) /* VerSteeg */
@@ -340,7 +374,7 @@ static dissector_handle_t tapa_handle;
#define IPOPT_TR (18|IPOPT_MEASUREMENT) /* RFC 1393 */
#define IPOPT_ADDEXT (19|IPOPT_COPY|IPOPT_CONTROL) /* Ullmann IPv7 */
#define IPOPT_RTRALT (20|IPOPT_COPY|IPOPT_CONTROL) /* RFC 2113 */
-#define IPOPT_SDB (21|IPOPT_COPY|IPOPT_CONTROL) /* Graff */
+#define IPOPT_SDB (21|IPOPT_COPY|IPOPT_CONTROL) /* RFC 1770 Graff */
#define IPOPT_UN (22|IPOPT_COPY|IPOPT_CONTROL) /* Released 18-Oct-2005 */
#define IPOPT_DPS (23|IPOPT_COPY|IPOPT_CONTROL) /* Malis */
#define IPOPT_UMP (24|IPOPT_COPY|IPOPT_CONTROL) /* Farinacci */
@@ -349,32 +383,46 @@ static dissector_handle_t tapa_handle;
/* IP option lengths */
-#define IPOLEN_SEC 11
+#define IPOLEN_SEC_MIN 3
#define IPOLEN_LSR_MIN 3
-#define IPOLEN_TS_MIN 5
+#define IPOLEN_TS_MIN 4
+#define IPOLEN_ESEC_MIN 3
+#define IPOLEN_CIPSO_MIN 10
#define IPOLEN_RR_MIN 3
#define IPOLEN_SID 4
#define IPOLEN_SSR_MIN 3
+#define IPOLEN_MTU 4
+#define IPOLEN_TR 12
#define IPOLEN_RA 4
+#define IPOLEN_SDB_MIN 6
#define IPOLEN_QS 8
-#define IPOLEN_CIPSO_MIN 10
#define IPOLEN_MAX 40
-#define IPSEC_UNCLASSIFIED 0x0000
-#define IPSEC_CONFIDENTIAL 0xF135
-#define IPSEC_EFTO 0x789A
-#define IPSEC_MMMM 0xBC4D
-#define IPSEC_RESTRICTED 0xAF13
-#define IPSEC_SECRET 0xD788
-#define IPSEC_TOPSECRET 0x6BC5
-#define IPSEC_RESERVED1 0x35E2
-#define IPSEC_RESERVED2 0x9AF1
-#define IPSEC_RESERVED3 0x4D78
-#define IPSEC_RESERVED4 0x24BD
-#define IPSEC_RESERVED5 0x135E
-#define IPSEC_RESERVED6 0x89AF
-#define IPSEC_RESERVED7 0xC4D6
-#define IPSEC_RESERVED8 0xE26B
+#define IPSEC_RFC791_UNCLASSIFIED 0x0000
+#define IPSEC_RFC791_CONFIDENTIAL 0xF135
+#define IPSEC_RFC791_EFTO 0x789A
+#define IPSEC_RFC791_MMMM 0xBC4D
+#define IPSEC_RFC791_PROG 0x5E26
+#define IPSEC_RFC791_RESTRICTED 0xAF13
+#define IPSEC_RFC791_SECRET 0xD788
+#define IPSEC_RFC791_TOPSECRET 0x6BC5
+#define IPSEC_RFC791_RESERVED1 0x35E2
+#define IPSEC_RFC791_RESERVED2 0x9AF1
+#define IPSEC_RFC791_RESERVED3 0x4D78
+#define IPSEC_RFC791_RESERVED4 0x24BD
+#define IPSEC_RFC791_RESERVED5 0x135E
+#define IPSEC_RFC791_RESERVED6 0x89AF
+#define IPSEC_RFC791_RESERVED7 0xC4D6
+#define IPSEC_RFC791_RESERVED8 0xE26B
+
+#define IPSEC_RESERVED4 0x01
+#define IPSEC_TOPSECRET 0x3D
+#define IPSEC_SECRET 0x5A
+#define IPSEC_CONFIDENTIAL 0x96
+#define IPSEC_RESERVED3 0x66
+#define IPSEC_RESERVED2 0xCC
+#define IPSEC_UNCLASSIFIED 0xAB
+#define IPSEC_RESERVED1 0xF1
#define IPOPT_TS_TSONLY 0 /* timestamps only */
#define IPOPT_TS_TSANDADDR 1 /* timestamps and addresses */
@@ -449,149 +497,110 @@ capture_ip(const guchar *pd, int offset, int len, packet_counts *ld) {
#ifdef HAVE_GEOIP
static void
-add_geoip_info(proto_tree *tree, tvbuff_t *tvb, gint offset, guint32 src32,
- guint32 dst32)
+add_geoip_info_entry(proto_item *geoip_info_item, tvbuff_t *tvb, gint offset, guint32 ip, int isdst)
{
- guint dbnum, num_dbs;
- int geoip_hf, geoip_src_hf, geoip_dst_hf;
- const char *geoip_src_str, *geoip_dst_str;
- proto_item *geoip_info_item;
proto_tree *geoip_info_tree;
- proto_item *item;
- guint item_cnt;
- num_dbs = geoip_db_num_dbs();
- if (num_dbs < 1)
- return;
+ guint num_dbs = geoip_db_num_dbs();
+ guint item_cnt = 0;
+ guint dbnum;
- geoip_info_item = proto_tree_add_text(tree, tvb, offset + IPH_SRC, 4, "Source GeoIP: ");
geoip_info_tree = proto_item_add_subtree(geoip_info_item, ett_geoip_info);
- PROTO_ITEM_SET_GENERATED(geoip_info_item);
- item_cnt = 0;
for (dbnum = 0; dbnum < num_dbs; dbnum++) {
- geoip_src_str = geoip_db_lookup_ipv4(dbnum, src32, NULL);
+ const char *geoip_str = geoip_db_lookup_ipv4(dbnum, ip, NULL);
+ int db_type = geoip_db_type(dbnum);
+
+ int geoip_hf, geoip_local_hf;
- switch (geoip_db_type(dbnum)) {
+ switch (db_type) {
case GEOIP_COUNTRY_EDITION:
geoip_hf = hf_geoip_country;
- geoip_src_hf = hf_geoip_src_country;
+ geoip_local_hf = (isdst) ? hf_geoip_dst_country : hf_geoip_src_country;
break;
case GEOIP_CITY_EDITION_REV0:
geoip_hf = hf_geoip_city;
- geoip_src_hf = hf_geoip_src_city;
+ geoip_local_hf = (isdst) ? hf_geoip_dst_city : hf_geoip_src_city;
break;
case GEOIP_CITY_EDITION_REV1:
geoip_hf = hf_geoip_city;
- geoip_src_hf = hf_geoip_src_city;
+ geoip_local_hf = (isdst) ? hf_geoip_dst_city : hf_geoip_src_city;
break;
case GEOIP_ORG_EDITION:
geoip_hf = hf_geoip_org;
- geoip_src_hf = hf_geoip_src_org;
+ geoip_local_hf = (isdst) ? hf_geoip_dst_org : hf_geoip_src_org;
break;
case GEOIP_ISP_EDITION:
geoip_hf = hf_geoip_isp;
- geoip_src_hf = hf_geoip_src_isp;
+ geoip_local_hf = (isdst) ? hf_geoip_dst_isp : hf_geoip_src_isp;
break;
case GEOIP_ASNUM_EDITION:
geoip_hf = hf_geoip_asnum;
- geoip_src_hf = hf_geoip_src_asnum;
+ geoip_local_hf = (isdst) ? hf_geoip_dst_asnum : hf_geoip_src_asnum;
break;
case WS_LAT_FAKE_EDITION:
geoip_hf = hf_geoip_lat;
- geoip_src_hf = hf_geoip_src_lat;
+ geoip_local_hf = (isdst) ? hf_geoip_dst_lat : hf_geoip_src_lat;
break;
case WS_LON_FAKE_EDITION:
geoip_hf = hf_geoip_lon;
- geoip_src_hf = hf_geoip_src_lon;
+ geoip_local_hf = (isdst) ? hf_geoip_dst_lon : hf_geoip_src_lon;
break;
default:
continue;
break;
}
- if (geoip_src_str) {
- item = proto_tree_add_string_format_value(geoip_info_tree, geoip_src_hf,
- tvb, offset + IPH_SRC, 4, geoip_src_str, "%s", geoip_src_str);
- PROTO_ITEM_SET_GENERATED(item);
- item = proto_tree_add_string_format_value(geoip_info_tree, geoip_hf,
- tvb, offset + IPH_SRC, 4, geoip_src_str, "%s", geoip_src_str);
- PROTO_ITEM_SET_GENERATED(item);
- PROTO_ITEM_SET_HIDDEN(item);
+ if (geoip_str) {
+ proto_item *item;
+ if (db_type == WS_LAT_FAKE_EDITION || db_type == WS_LON_FAKE_EDITION) {
+ /* Convert latitude, longitude to double. Fix bug #5077 */
+ item = proto_tree_add_double_format_value(geoip_info_tree, geoip_local_hf,
+ tvb, offset, 4, g_ascii_strtod(geoip_str, NULL), "%s", geoip_str);
+ PROTO_ITEM_SET_GENERATED(item);
+ item = proto_tree_add_double_format_value(geoip_info_tree, geoip_hf,
+ tvb, offset, 4, g_ascii_strtod(geoip_str, NULL), "%s", geoip_str);
+ PROTO_ITEM_SET_GENERATED(item);
+ PROTO_ITEM_SET_HIDDEN(item);
+ } else {
+ item = proto_tree_add_unicode_string(geoip_info_tree, geoip_local_hf,
+ tvb, offset, 4, geoip_str);
+ PROTO_ITEM_SET_GENERATED(item);
+ item = proto_tree_add_unicode_string(geoip_info_tree, geoip_hf,
+ tvb, offset, 4, geoip_str);
+ PROTO_ITEM_SET_GENERATED(item);
+ PROTO_ITEM_SET_HIDDEN(item);
+ }
item_cnt++;
proto_item_append_text(geoip_info_item, "%s%s",
- plurality(item_cnt, "", ", "), geoip_src_str);
+ plurality(item_cnt, "", ", "), geoip_str);
}
}
if (item_cnt == 0)
proto_item_append_text(geoip_info_item, "Unknown");
+}
- geoip_info_item = proto_tree_add_text(tree, tvb, offset + IPH_DST, 4,
- "Destination GeoIP: ");
- geoip_info_tree = proto_item_add_subtree(geoip_info_item, ett_geoip_info);
- PROTO_ITEM_SET_GENERATED(geoip_info_item);
- item_cnt = 0;
-
- for (dbnum = 0; dbnum < num_dbs; dbnum++) {
- geoip_dst_str = geoip_db_lookup_ipv4(dbnum, dst32, NULL);
-
- switch (geoip_db_type(dbnum)) {
- case GEOIP_COUNTRY_EDITION:
- geoip_hf = hf_geoip_country;
- geoip_dst_hf = hf_geoip_dst_country;
- break;
- case GEOIP_CITY_EDITION_REV0:
- geoip_hf = hf_geoip_city;
- geoip_dst_hf = hf_geoip_dst_city;
- break;
- case GEOIP_CITY_EDITION_REV1:
- geoip_hf = hf_geoip_city;
- geoip_dst_hf = hf_geoip_dst_city;
- break;
- case GEOIP_ORG_EDITION:
- geoip_hf = hf_geoip_org;
- geoip_dst_hf = hf_geoip_dst_org;
- break;
- case GEOIP_ISP_EDITION:
- geoip_hf = hf_geoip_isp;
- geoip_dst_hf = hf_geoip_dst_isp;
- break;
- case GEOIP_ASNUM_EDITION:
- geoip_hf = hf_geoip_asnum;
- geoip_dst_hf = hf_geoip_dst_asnum;
- break;
- case WS_LAT_FAKE_EDITION:
- geoip_hf = hf_geoip_lat;
- geoip_dst_hf = hf_geoip_dst_lat;
- break;
- case WS_LON_FAKE_EDITION:
- geoip_hf = hf_geoip_lon;
- geoip_dst_hf = hf_geoip_dst_lon;
- break;
- default:
- continue;
- break;
- }
+static void
+add_geoip_info(proto_tree *tree, tvbuff_t *tvb, gint offset, guint32 src32,
+ guint32 dst32)
+{
+ guint num_dbs;
+ proto_item *geoip_info_item;
- if (geoip_dst_str) {
- item = proto_tree_add_string_format_value(geoip_info_tree, geoip_dst_hf,
- tvb, offset + IPH_DST, 4, geoip_dst_str, "%s", geoip_dst_str);
- PROTO_ITEM_SET_GENERATED(item);
- item = proto_tree_add_string_format_value(geoip_info_tree, geoip_hf,
- tvb, offset + IPH_DST, 4, geoip_dst_str, "%s", geoip_dst_str);
- PROTO_ITEM_SET_GENERATED(item);
- PROTO_ITEM_SET_HIDDEN(item);
+ num_dbs = geoip_db_num_dbs();
+ if (num_dbs < 1)
+ return;
- item_cnt++;
- proto_item_append_text(geoip_info_item, "%s%s",
- plurality(item_cnt, "", ", "), geoip_dst_str);
- }
- }
+ geoip_info_item = proto_tree_add_text(tree, tvb, offset + IPH_SRC, 4, "Source GeoIP: ");
+ PROTO_ITEM_SET_GENERATED(geoip_info_item);
+ add_geoip_info_entry(geoip_info_item, tvb, offset + IPH_SRC, src32, 0);
- if (item_cnt == 0)
- proto_item_append_text(geoip_info_item, "Unknown");
+ geoip_info_item = proto_tree_add_text(tree, tvb, offset + IPH_DST, 4,
+ "Destination GeoIP: ");
+ PROTO_ITEM_SET_GENERATED(geoip_info_item);
+ add_geoip_info_entry(geoip_info_item, tvb, offset + IPH_DST, dst32, 1);
}
#endif /* HAVE_GEOIP */
@@ -648,65 +657,175 @@ dissect_ipopt_type(tvbuff_t *tvb, int offset, proto_tree *tree)
}
static void
-dissect_ipopt_eool(const ip_tcp_opt *optp _U_, tvbuff_t *tvb, int offset,
+dissect_ipopt_eool(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint optlen _U_, packet_info *pinfo _U_,
proto_tree *opt_tree)
{
- dissect_ipopt_type(tvb, offset, opt_tree);
+ proto_tree *field_tree;
+ proto_item *tf;
+
+ tf = proto_tree_add_text(opt_tree, tvb, offset, 1, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ipopt_type(tvb, offset, field_tree);
}
+#define dissect_ipopt_nop dissect_ipopt_eool
+
+ static const value_string secl_rfc791_vals[] = {
+ {IPSEC_RFC791_UNCLASSIFIED, "Unclassified"},
+ {IPSEC_RFC791_CONFIDENTIAL, "Confidential"},
+ {IPSEC_RFC791_EFTO, "EFTO" },
+ {IPSEC_RFC791_MMMM, "MMMM" },
+ {IPSEC_RFC791_PROG, "PROG" },
+ {IPSEC_RFC791_RESTRICTED, "Restricted" },
+ {IPSEC_RFC791_SECRET, "Secret" },
+ {IPSEC_RFC791_TOPSECRET, "Top secret" },
+ {IPSEC_RFC791_RESERVED1, "Reserved" },
+ {IPSEC_RFC791_RESERVED2, "Reserved" },
+ {IPSEC_RFC791_RESERVED3, "Reserved" },
+ {IPSEC_RFC791_RESERVED4, "Reserved" },
+ {IPSEC_RFC791_RESERVED5, "Reserved" },
+ {IPSEC_RFC791_RESERVED6, "Reserved" },
+ {IPSEC_RFC791_RESERVED7, "Reserved" },
+ {IPSEC_RFC791_RESERVED8, "Reserved" },
+ {0, NULL }
+};
+
+static const value_string sec_cl_vals[] = {
+ {IPSEC_RESERVED4, "Reserved 4" },
+ {IPSEC_TOPSECRET, "Top secret" },
+ {IPSEC_SECRET, "Secret" },
+ {IPSEC_CONFIDENTIAL, "Confidential"},
+ {IPSEC_RESERVED3, "Reserved 3" },
+ {IPSEC_RESERVED2, "Reserved 2" },
+ {IPSEC_UNCLASSIFIED, "Unclassified"},
+ {IPSEC_RESERVED1, "Reserved 1" },
+ {0, NULL }
+};
+
+static const true_false_string ip_opt_sec_prot_auth_flag_tfs = {
+ "Datagram protected in accordance with its rules",
+ "Datagram not protected in accordance with its rules"
+};
+
+static const true_false_string ip_opt_sec_prot_auth_fti_tfs = {
+ "Additional octet present",
+ "Final octet"
+};
+
+static const int *ip_opt_sec_prot_auth_fields_byte_1[] = {
+ &hf_ip_opt_sec_prot_auth_genser,
+ &hf_ip_opt_sec_prot_auth_siop_esi,
+ &hf_ip_opt_sec_prot_auth_sci,
+ &hf_ip_opt_sec_prot_auth_nsa,
+ &hf_ip_opt_sec_prot_auth_doe,
+ &hf_ip_opt_sec_prot_auth_unassigned,
+ &hf_ip_opt_sec_prot_auth_fti,
+ NULL
+};
+
+static const int *ip_opt_sec_prot_auth_fields_byte_n[] = {
+ &hf_ip_opt_sec_prot_auth_unassigned2,
+ &hf_ip_opt_sec_prot_auth_fti,
+ NULL
+};
static void
dissect_ipopt_security(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint optlen, packet_info *pinfo, proto_tree *opt_tree)
{
proto_tree *field_tree;
proto_item *tf;
+ proto_item *tf_sub;
guint val;
- static const value_string secl_vals[] = {
- {IPSEC_UNCLASSIFIED, "Unclassified"},
- {IPSEC_CONFIDENTIAL, "Confidential"},
- {IPSEC_EFTO, "EFTO" },
- {IPSEC_MMMM, "MMMM" },
- {IPSEC_RESTRICTED, "Restricted" },
- {IPSEC_SECRET, "Secret" },
- {IPSEC_TOPSECRET, "Top secret" },
- {IPSEC_RESERVED1, "Reserved" },
- {IPSEC_RESERVED2, "Reserved" },
- {IPSEC_RESERVED3, "Reserved" },
- {IPSEC_RESERVED4, "Reserved" },
- {IPSEC_RESERVED5, "Reserved" },
- {IPSEC_RESERVED6, "Reserved" },
- {IPSEC_RESERVED7, "Reserved" },
- {IPSEC_RESERVED8, "Reserved" },
- {0, NULL }};
+ guint curr_offset = offset;
- tf = proto_tree_add_text(opt_tree, tvb, offset, optlen, "%s (%u bytes)",
+ tf = proto_tree_add_text(opt_tree, tvb, curr_offset, optlen, "%s (%u bytes)",
optp->name, optlen);
field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
- dissect_ipopt_type(tvb, offset, field_tree);
- tf = proto_tree_add_item(field_tree, hf_ip_opt_len, tvb, offset + 1, 1, ENC_NA);
- if (optlen != (guint)optp->optlen)
- expert_add_info_format(pinfo, tf, PI_PROTOCOL, PI_WARN,
+ dissect_ipopt_type(tvb, curr_offset, field_tree);
+ curr_offset++;
+ tf_sub = proto_tree_add_item(field_tree, hf_ip_opt_len, tvb, curr_offset, 1, ENC_NA);
+ if (optlen > IPOLEN_MAX)
+ expert_add_info_format(pinfo, tf_sub, PI_PROTOCOL, PI_WARN,
"Invalid length for option");
- offset += 2;
- val = tvb_get_ntohs(tvb, offset);
- proto_tree_add_text(field_tree, tvb, offset, 2, "Security: %s",
- val_to_str(val, secl_vals, "Unknown (0x%x)"));
- offset += 2;
- val = tvb_get_ntohs(tvb, offset);
- proto_tree_add_text(field_tree, tvb, offset, 2, "Compartments: %u", val);
+ curr_offset++;
+
+ if (optlen == 11) {
+ /* Analyze payload start to decide whether it should be dissected
+ according to RFC 791 or RFC 1108 */
+ val = tvb_get_ntohs(tvb, curr_offset);
+ if (match_strval(val, secl_rfc791_vals)) {
+ /* Dissect as RFC 791 */
+ proto_tree_add_item(field_tree, hf_ip_opt_sec_rfc791_sec,
+ tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset += 2;
+ proto_tree_add_item(field_tree, hf_ip_opt_sec_rfc791_comp,
+ tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset += 2;
+ proto_tree_add_item(field_tree, hf_ip_opt_sec_rfc791_hr,
+ tvb, curr_offset, 2, ENC_ASCII|ENC_NA);
+ curr_offset += 2;
+ proto_tree_add_item(field_tree, hf_ip_opt_sec_rfc791_tcc,
+ tvb, curr_offset, 3, ENC_ASCII|ENC_NA);
+ return;
+ }
+ }
- offset += 2;
- proto_tree_add_text(field_tree, tvb, offset, 2,
- "Handling restrictions: %c%c",
- tvb_get_guint8(tvb, offset),
- tvb_get_guint8(tvb, offset + 1));
- offset += 2;
- proto_tree_add_text(field_tree, tvb, offset, 3,
- "Transmission control code: %c%c%c",
- tvb_get_guint8(tvb, offset),
- tvb_get_guint8(tvb, offset + 1),
- tvb_get_guint8(tvb, offset + 2));
+ /* Dissect as RFC 108 */
+ proto_tree_add_item(field_tree, hf_ip_opt_sec_cl, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+ if ((curr_offset - offset) >= optlen) {
+ return;
+ }
+ val = tvb_get_guint8(tvb, curr_offset);
+ proto_tree_add_bitmask(field_tree, tvb, curr_offset, hf_ip_opt_sec_prot_auth_flags,
+ ett_ip_opt_sec_prot_auth_flags, ip_opt_sec_prot_auth_fields_byte_1,
+ ENC_BIG_ENDIAN);
+ curr_offset++;
+ while (val & 0x01) {
+ if ((val & 0x01) && ((curr_offset - offset) == optlen)) {
+ expert_add_info_format(pinfo, tf_sub, PI_PROTOCOL, PI_WARN,
+ "Field Termination Indicator set to 1 for last byte of option");
+ break;
+ }
+ val = tvb_get_guint8(tvb, curr_offset);
+ proto_tree_add_bitmask(field_tree, tvb, curr_offset, hf_ip_opt_sec_prot_auth_flags,
+ ett_ip_opt_sec_prot_auth_flags, ip_opt_sec_prot_auth_fields_byte_n,
+ ENC_BIG_ENDIAN);
+ curr_offset++;
+ }
+ if ((curr_offset - offset) < optlen) {
+ expert_add_info_format(pinfo, tf, PI_PROTOCOL, PI_WARN,
+ "Extraneous data in option");
+ }
+}
+
+static void
+dissect_ipopt_ext_security(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint optlen, packet_info *pinfo, proto_tree *opt_tree)
+{
+ proto_tree *field_tree;
+ proto_item *tf;
+ proto_item *tf_sub;
+ guint curr_offset = offset;
+ gint remaining;
+
+ tf = proto_tree_add_text(opt_tree, tvb, curr_offset, optlen, "%s (%u bytes)",
+ optp->name, optlen);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ipopt_type(tvb, curr_offset, field_tree);
+ curr_offset++;
+ tf_sub = proto_tree_add_item(field_tree, hf_ip_opt_len, tvb, curr_offset, 1, ENC_NA);
+ if (optlen > IPOLEN_MAX)
+ expert_add_info_format(pinfo, tf_sub, PI_PROTOCOL, PI_WARN,
+ "Invalid length for option");
+ curr_offset++;
+ proto_tree_add_item(field_tree, hf_ip_opt_ext_sec_add_sec_info_format_code, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+ remaining = optlen - (curr_offset - offset);
+ if (remaining > 0) {
+ proto_tree_add_item(field_tree, hf_ip_opt_ext_sec_add_sec_info, tvb, curr_offset, remaining, ENC_NA);
+ }
}
/* USHRT_MAX can hold at most 5 (base 10) digits (6 for the NULL byte) */
@@ -1147,6 +1266,48 @@ dissect_ipopt_sid(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
proto_tree_add_item(field_tree, hf_ip_opt_sid, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
}
+/* RFC 1063: MTU Probe and MTU Reply */
+static void
+dissect_ipopt_mtu(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint optlen, packet_info *pinfo, proto_tree *opt_tree)
+{
+ proto_tree *field_tree;
+ proto_item *tf;
+
+ tf = proto_tree_add_text(opt_tree, tvb, offset, optlen, "%s (%u bytes): %u",
+ optp->name, optlen, tvb_get_ntohs(tvb, offset + 2));
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ipopt_type(tvb, offset, field_tree);
+ tf = proto_tree_add_item(field_tree, hf_ip_opt_len, tvb, offset + 1, 1, ENC_NA);
+ if (optlen != (guint)optp->optlen)
+ expert_add_info_format(pinfo, tf, PI_PROTOCOL, PI_WARN,
+ "Invalid length for option");
+ proto_tree_add_item(field_tree, hf_ip_opt_mtu, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
+}
+
+/* RFC 1393: Traceroute */
+static void
+dissect_ipopt_tr(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint optlen, packet_info *pinfo, proto_tree *opt_tree)
+{
+ proto_tree *field_tree;
+ proto_item *tf;
+
+ tf = proto_tree_add_text(opt_tree, tvb, offset, optlen, "%s (%u bytes)",
+ optp->name, optlen);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ipopt_type(tvb, offset, field_tree);
+ tf = proto_tree_add_item(field_tree, hf_ip_opt_len, tvb, offset + 1, 1, ENC_NA);
+ if (optlen != (guint)optp->optlen)
+ expert_add_info_format(pinfo, tf, PI_PROTOCOL, PI_WARN,
+ "Invalid length for option");
+
+ proto_tree_add_item(field_tree, hf_ip_opt_id_number, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(field_tree, hf_ip_opt_ohc, tvb, offset + 4, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(field_tree, hf_ip_opt_rhc, tvb, offset + 6, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(field_tree, hf_ip_opt_originator, tvb, offset + 8, 4, ENC_BIG_ENDIAN);
+}
+
static void
dissect_ipopt_timestamp(const ip_tcp_opt *optp, tvbuff_t *tvb,
int offset, guint optlen, packet_info *pinfo,
@@ -1207,7 +1368,7 @@ dissect_ipopt_timestamp(const ip_tcp_opt *optp, tvbuff_t *tvb,
proto_tree_add_text(field_tree, tvb, offset + optoffset, 8,
"Address = %s, time stamp = %u",
((addr == 0) ? "-" :
- (const char *)get_hostname(addr)), ts);
+ get_hostname(addr)), ts);
optoffset += 8;
} else {
if (optlen < 4) {
@@ -1253,19 +1414,35 @@ dissect_ipopt_ra(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
proto_tree_add_item(field_tree, hf_ip_opt_ra, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
}
-/* Quick start */
-#define QS_FUNC_MASK 0xf0
-#define QS_RATE_MASK 0x0f
-#define QS_RATE_REQUEST 0
-#define QS_RATE_REPORT 8
+/* RFC 1770: Selective Directed Broadcast */
+static void
+dissect_ipopt_sdb(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint optlen, packet_info *pinfo, proto_tree *opt_tree)
+{
+ proto_tree *field_tree;
+ proto_item *tf;
+
+ tf = proto_tree_add_text(opt_tree, tvb, offset, optlen, "%s (%u bytes)",
+ optp->name, optlen);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ipopt_type(tvb, offset, field_tree);
+ tf = proto_tree_add_item(field_tree, hf_ip_opt_len, tvb, offset + 1, 1, ENC_NA);
+ if (optlen > IPOLEN_MAX)
+ expert_add_info_format(pinfo, tf, PI_PROTOCOL, PI_WARN,
+ "Invalid length for option");
+ for (offset += 2, optlen -= 2; optlen >= 4; offset += 4, optlen -= 4)
+ proto_tree_add_item(field_tree, hf_ip_opt_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
+
+ if (optlen > 0)
+ proto_tree_add_item(field_tree, hf_ip_opt_padding, tvb, offset, optlen, ENC_NA);
+}
-static const value_string qs_func_vals[] = {
+const value_string qs_func_vals[] = {
{QS_RATE_REQUEST, "Rate request"},
{QS_RATE_REPORT, "Rate report"},
{0, NULL}
};
-/* Quick-Start TCP option, as defined by RFC4782 */
static const value_string qs_rate_vals[] = {
{ 0, "0 bit/s"},
{ 1, "80 Kbit/s"},
@@ -1285,7 +1462,7 @@ static const value_string qs_rate_vals[] = {
{15, "1.31072 Gbit/s"},
{0, NULL}
};
-static value_string_ext qs_rate_vals_ext = VALUE_STRING_EXT_INIT(qs_rate_vals);
+value_string_ext qs_rate_vals_ext = VALUE_STRING_EXT_INIT(qs_rate_vals);
static void
dissect_ipopt_qs(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
@@ -1321,14 +1498,14 @@ dissect_ipopt_qs(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
"%u", ttl_diff);
PROTO_ITEM_SET_GENERATED(ti);
proto_item_append_text(tf, ", %s, QS TTL %u, QS TTL diff %u",
- val_to_str_ext_const(rate, &qs_rate_vals_ext, "Unknown"),
+ val_to_str_ext(rate, &qs_rate_vals_ext, "Unknown (%u)"),
tvb_get_guint8(tvb, offset + 3), ttl_diff);
proto_tree_add_item(field_tree, hf_ip_opt_qs_nonce, tvb, offset + 4, 4, ENC_NA);
proto_tree_add_item(field_tree, hf_ip_opt_qs_reserved, tvb, offset + 4, 4, ENC_NA);
} else if (function == QS_RATE_REPORT) {
proto_tree_add_item(field_tree, hf_ip_opt_qs_rate, tvb, offset + 2, 1, ENC_NA);
proto_item_append_text(tf, ", %s",
- val_to_str_ext_const(rate, &qs_rate_vals_ext, "Unknown (%u)"));
+ val_to_str_ext(rate, &qs_rate_vals_ext, "Unknown (%u)"));
proto_tree_add_item(field_tree, hf_ip_opt_qs_unused, tvb, offset + 3, 1, ENC_NA);
proto_tree_add_item(field_tree, hf_ip_opt_qs_nonce, tvb, offset + 4, 4, ENC_NA);
proto_tree_add_item(field_tree, hf_ip_opt_qs_reserved, tvb, offset + 4, 4, ENC_NA);
@@ -1336,31 +1513,76 @@ dissect_ipopt_qs(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
}
static const ip_tcp_opt ipopts[] = {
- {IPOPT_EOOL, "End of Option List (EOL)", NULL, NO_LENGTH, 0, dissect_ipopt_eool},
- {IPOPT_NOP, "No-Operation (NOP)", NULL, NO_LENGTH, 0, dissect_ipopt_eool},
+ {IPOPT_EOOL, "End of Options List (EOL)", &ett_ip_option_eool,
+ OPT_LEN_NO_LENGTH, 0, dissect_ipopt_eool},
+ {IPOPT_NOP, "No Operation (NOP)", &ett_ip_option_nop,
+ OPT_LEN_NO_LENGTH, 0, dissect_ipopt_nop},
{IPOPT_SEC, "Security", &ett_ip_option_sec,
- FIXED_LENGTH, IPOLEN_SEC, dissect_ipopt_security},
- {IPOPT_SSR, "Strict source route", &ett_ip_option_route,
- VARIABLE_LENGTH, IPOLEN_SSR_MIN, dissect_ipopt_route},
- {IPOPT_LSR, "Loose source route", &ett_ip_option_route,
- VARIABLE_LENGTH, IPOLEN_LSR_MIN, dissect_ipopt_route},
- {IPOPT_CIPSO, "Commercial IP security option", &ett_ip_option_cipso,
- VARIABLE_LENGTH, IPOLEN_CIPSO_MIN, dissect_ipopt_cipso},
- {IPOPT_RR, "Record route", &ett_ip_option_route,
- VARIABLE_LENGTH, IPOLEN_RR_MIN, dissect_ipopt_record_route},
- {IPOPT_SID, "Stream identifier", &ett_ip_option_sid,
- FIXED_LENGTH, IPOLEN_SID, dissect_ipopt_sid},
- {IPOPT_TS, "Time stamp", &ett_ip_option_timestamp,
- VARIABLE_LENGTH, IPOLEN_TS_MIN, dissect_ipopt_timestamp},
+ OPT_LEN_VARIABLE_LENGTH, IPOLEN_SEC_MIN, dissect_ipopt_security},
+ {IPOPT_LSR, "Loose Source Route", &ett_ip_option_route,
+ OPT_LEN_VARIABLE_LENGTH, IPOLEN_LSR_MIN, dissect_ipopt_route},
+ {IPOPT_TS, "Time Stamp", &ett_ip_option_timestamp,
+ OPT_LEN_VARIABLE_LENGTH, IPOLEN_TS_MIN, dissect_ipopt_timestamp},
+ {IPOPT_ESEC, "Extended Security", &ett_ip_option_ext_security,
+ OPT_LEN_VARIABLE_LENGTH, IPOLEN_ESEC_MIN, dissect_ipopt_ext_security},
+ {IPOPT_CIPSO, "Commercial Security", &ett_ip_option_cipso,
+ OPT_LEN_VARIABLE_LENGTH, IPOLEN_CIPSO_MIN, dissect_ipopt_cipso},
+ {IPOPT_RR, "Record Route", &ett_ip_option_route,
+ OPT_LEN_VARIABLE_LENGTH, IPOLEN_RR_MIN, dissect_ipopt_record_route},
+ {IPOPT_SID, "Stream ID", &ett_ip_option_sid,
+ OPT_LEN_FIXED_LENGTH, IPOLEN_SID, dissect_ipopt_sid},
+ {IPOPT_SSR, "Strict Source Route", &ett_ip_option_route,
+ OPT_LEN_VARIABLE_LENGTH, IPOLEN_SSR_MIN, dissect_ipopt_route},
+#if 0 /* TODO */
+ {IPOPT_ZSU, "Experimental Measurement", &ett_ip_option_zsu,
+ OPT_LEN_VARIABLE_LENGTH /* ? */, IPOLEN_ZSU_MIN, dissect_ipopt_zsu},
+#endif
+ {IPOPT_MTUP, "MTU Probe", &ett_ip_option_mtu,
+ OPT_LEN_FIXED_LENGTH, IPOLEN_MTU, dissect_ipopt_mtu},
+ {IPOPT_MTUR, "MTU Reply", &ett_ip_option_mtu,
+ OPT_LEN_FIXED_LENGTH, IPOLEN_MTU, dissect_ipopt_mtu},
+#if 0 /* TODO */
+ {IPOPT_FINN, "Experimental Flow Control", &ett_ip_option_finn,
+ OPT_LEN_VARIABLE_LENGTH /* ? */, IPOLEN_FINN_MIN, dissect_ipopt_finn},
+ {IPOPT_VISA, "Experimental Access Control", &ett_ip_option_visa,
+ OPT_LEN_VARIABLE_LENGTH /* ? */, IPOLEN_VISA_MIN, dissect_ipopt_visa},
+ {IPOPT_ENCODE, "???", &ett_ip_option_encode,
+ OPT_LEN_VARIABLE_LENGTH /* ? */, IPOLEN_ENCODE_MIN, dissect_ipopt_encode},
+ {IPOPT_IMITD, "IMI Traffic Descriptor", &ett_ip_option_imitd,
+ OPT_LEN_VARIABLE_LENGTH /* ? */, IPOLEN_IMITD_MIN, dissect_ipopt_imitd},
+ {IPOPT_EIP, "Extended Internet Protocol", &ett_ip_option_eip,
+ OPT_LEN_VARIABLE_LENGTH /* ? */, IPOLEN_EIP_MIN, dissect_ipopt_eip},
+#endif
+ {IPOPT_TR, "Traceroute", &ett_ip_option_tr,
+ OPT_LEN_FIXED_LENGTH, IPOLEN_TR, dissect_ipopt_tr},
+#if 0 /* TODO */
+ {IPOPT_ADDEXT, "Address Extension", &ett_ip_option_addext,
+ OPT_LEN_VARIABLE_LENGTH /* ? */, IPOLEN_ADDEXT_MIN, dissect_ipopt_addext},
+#endif
{IPOPT_RTRALT, "Router Alert", &ett_ip_option_ra,
- FIXED_LENGTH, IPOLEN_RA, dissect_ipopt_ra},
+ OPT_LEN_FIXED_LENGTH, IPOLEN_RA, dissect_ipopt_ra},
+ {IPOPT_SDB, "Selective Directed Broadcast", &ett_ip_option_sdb,
+ OPT_LEN_VARIABLE_LENGTH, IPOLEN_SDB_MIN, dissect_ipopt_sdb},
+#if 0 /* TODO */
+ {IPOPT_UN, "Unassigned", &ett_ip_option_un,
+ OPT_LEN_VARIABLE_LENGTH /* ? */, IPOLEN_UN_MIN, dissect_ipopt_un},
+ {IPOPT_DPS, "Dynamic Packet State", &ett_ip_option_dps,
+ OPT_LEN_VARIABLE_LENGTH /* ? */, IPOLEN_DPS_MIN, dissect_ipopt_dps},
+ {IPOPT_UMP, "Upstream Multicast Pkt.", &ett_ip_option_ump,
+ OPT_LEN_VARIABLE_LENGTH /* ? */, IPOLEN_UMP_MIN, dissect_ipopt_ump},
+#endif
{IPOPT_QS, "Quick-Start", &ett_ip_option_qs,
- FIXED_LENGTH, IPOLEN_QS, dissect_ipopt_qs}
+ OPT_LEN_FIXED_LENGTH, IPOLEN_QS, dissect_ipopt_qs}
+#if 0 /* TODO */
+ {IPOPT_EXP, "RFC3692-style Experiment", &ett_ip_option_exp,
+ OPT_LEN_VARIABLE_LENGTH /* ? */, IPOLEN_EXP_MIN, dissect_ipopt_exp}
+#endif
};
#define N_IP_OPTS array_length(ipopts)
-/* Dissect the IP or TCP options in a packet. */
+/* Dissect the IP, TCP or various PPP protocols (IPCP, CP, LCP, VSNCP, BAP)
+ * options in a packet. */
void
dissect_ip_tcp_options(tvbuff_t *tvb, int offset, guint length,
const ip_tcp_opt *opttab, int nopts, int eol,
@@ -1383,12 +1605,12 @@ dissect_ip_tcp_options(tvbuff_t *tvb, int offset, guint length,
break;
}
if (optp == &opttab[nopts]) {
- /* We assume that the only NO_LENGTH options are EOL and NOP options,
- so that we can treat unknown options as VARIABLE_LENGTH with a
+ /* We assume that the only OPT_LEN_NO_LENGTH options are EOL and NOP options,
+ so that we can treat unknown options as OPT_LEN_VARIABLE_LENGTH with a
minimum of 2, and at least be able to move on to the next option
by using the length in the option. */
optp = NULL; /* indicate that we don't know this option */
- len_type = VARIABLE_LENGTH;
+ len_type = OPT_LEN_VARIABLE_LENGTH;
optlen = 2;
name = ep_strdup_printf("Unknown (0x%02x)", opt);
dissect = NULL;
@@ -1398,7 +1620,7 @@ dissect_ip_tcp_options(tvbuff_t *tvb, int offset, guint length,
optlen = optp->optlen;
name = optp->name;
dissect = optp->dissect;
- if (opt_item && len_type == NO_LENGTH && optlen == 0 && opt == 1 &&
+ if (opt_item && len_type == OPT_LEN_NO_LENGTH && optlen == 0 && opt == 1 &&
(nop_count == 0 || offset % 4)) { /* opt 1 = NOP in both IP and TCP */
/* Count number of NOP in a row within a uint32 */
nop_count++;
@@ -1407,7 +1629,7 @@ dissect_ip_tcp_options(tvbuff_t *tvb, int offset, guint length,
}
}
--length; /* account for type byte */
- if (len_type != NO_LENGTH) {
+ if (len_type != OPT_LEN_NO_LENGTH) {
/* Option has a length. Is it in the packet? */
if (length == 0) {
/* Bogus - packet must at least include option code byte and
@@ -1432,14 +1654,14 @@ dissect_ip_tcp_options(tvbuff_t *tvb, int offset, guint length,
"past end of options)",
name, len, plurality(len, "", "s"));
return;
- } else if (len_type == FIXED_LENGTH && len != optlen) {
+ } else if (len_type == OPT_LEN_FIXED_LENGTH && len != optlen) {
/* Bogus - option length isn't what it's supposed to be for this
option. */
proto_tree_add_text(opt_tree, tvb, offset, len,
"%s (with option length = %u byte%s; should be %u)",
name, len, plurality(len, "", "s"), optlen);
return;
- } else if (len_type == VARIABLE_LENGTH && len < optlen) {
+ } else if (len_type == OPT_LEN_VARIABLE_LENGTH && len < optlen) {
/* Bogus - option length is less than what it's supposed to be for
this option. */
proto_tree_add_text(opt_tree, tvb, offset, len,
@@ -1458,10 +1680,15 @@ dissect_ip_tcp_options(tvbuff_t *tvb, int offset, guint length,
optp->name);
(*dissect)(optp, tvb, offset, len, pinfo, opt_tree);
} else {
+ proto_tree *field_tree;
+ proto_item *tf;
+
/* Option has no data, hence no dissector. */
proto_item_append_text(proto_tree_get_parent(opt_tree), ", %s",
name);
- proto_tree_add_text(opt_tree, tvb, offset, len, "%s", name);
+ tf = proto_tree_add_text(opt_tree, tvb, offset, len, "%s", name);
+ field_tree = proto_item_add_subtree(tf, ett_ip_option_other);
+ dissect_ipopt_type(tvb, offset, field_tree);
}
}
len -= 2; /* subtract size of type and length */
@@ -1474,9 +1701,14 @@ dissect_ip_tcp_options(tvbuff_t *tvb, int offset, guint length,
optp->name);
(*dissect)(optp, tvb, offset, 1, pinfo, opt_tree);
} else {
+ proto_tree *field_tree;
+ proto_item *tf;
+
/* Option has no data, hence no dissector. */
proto_item_append_text(proto_tree_get_parent(opt_tree), ", %s", name);
- proto_tree_add_text(opt_tree, tvb, offset, 1, "%s", name);
+ tf = proto_tree_add_text(opt_tree, tvb, offset, 1, "%s", name);
+ field_tree = proto_item_add_subtree(tf, ett_ip_option_other);
+ dissect_ipopt_type(tvb, offset, field_tree);
}
offset += 1;
@@ -1520,14 +1752,14 @@ get_dst_offset(tvbuff_t *tvb, int offset, guint length,
minimum of 2, and at least be able to move on to the next option
by using the length in the option. */
optp = NULL; /* indicate that we don't know this option */
- len_type = VARIABLE_LENGTH;
+ len_type = OPT_LEN_VARIABLE_LENGTH;
optlen = 2;
} else {
len_type = optp->len_type;
optlen = optp->optlen;
}
--length; /* account for type byte */
- if (len_type != NO_LENGTH) {
+ if (len_type != OPT_LEN_NO_LENGTH) {
/* Option has a length. Is it in the packet? */
if (length == 0) {
/* Bogus - packet must at least include option code byte and
@@ -1543,11 +1775,11 @@ get_dst_offset(tvbuff_t *tvb, int offset, guint length,
} else if (len - 2 > length) {
/* Bogus - option goes past the end of the header. */
return 0;
- } else if (len_type == FIXED_LENGTH && len != optlen) {
+ } else if (len_type == OPT_LEN_FIXED_LENGTH && len != optlen) {
/* Bogus - option length isn't what it's supposed to be for this
option. */
return 0;
- } else if (len_type == VARIABLE_LENGTH && len < optlen) {
+ } else if (len_type == OPT_LEN_VARIABLE_LENGTH && len < optlen) {
/* Bogus - option length is less than what it's supposed to be for
this option. */
return 0;
@@ -1603,26 +1835,27 @@ local_network_control_block_addr_valid_ttl(guint32 addr)
const value_string dscp_vals[] = {
{ IPDSFIELD_DSCP_DEFAULT, "Default" },
{ IPDSFIELD_DSCP_CS1, "Class Selector 1" },
- { IPDSFIELD_DSCP_CS2, "Class Selector 2" },
- { IPDSFIELD_DSCP_CS3, "Class Selector 3" },
- { IPDSFIELD_DSCP_CS4, "Class Selector 4" },
- { IPDSFIELD_DSCP_CS5, "Class Selector 5" },
- { IPDSFIELD_DSCP_CS6, "Class Selector 6" },
- { IPDSFIELD_DSCP_CS7, "Class Selector 7" },
{ IPDSFIELD_DSCP_AF11, "Assured Forwarding 11" },
{ IPDSFIELD_DSCP_AF12, "Assured Forwarding 12" },
{ IPDSFIELD_DSCP_AF13, "Assured Forwarding 13" },
+ { IPDSFIELD_DSCP_CS2, "Class Selector 2" },
{ IPDSFIELD_DSCP_AF21, "Assured Forwarding 21" },
{ IPDSFIELD_DSCP_AF22, "Assured Forwarding 22" },
{ IPDSFIELD_DSCP_AF23, "Assured Forwarding 23" },
+ { IPDSFIELD_DSCP_CS3, "Class Selector 3" },
{ IPDSFIELD_DSCP_AF31, "Assured Forwarding 31" },
{ IPDSFIELD_DSCP_AF32, "Assured Forwarding 32" },
{ IPDSFIELD_DSCP_AF33, "Assured Forwarding 33" },
+ { IPDSFIELD_DSCP_CS4, "Class Selector 4" },
{ IPDSFIELD_DSCP_AF41, "Assured Forwarding 41" },
{ IPDSFIELD_DSCP_AF42, "Assured Forwarding 42" },
{ IPDSFIELD_DSCP_AF43, "Assured Forwarding 43" },
+ { IPDSFIELD_DSCP_CS5, "Class Selector 5" },
{ IPDSFIELD_DSCP_EF, "Expedited Forwarding" },
+ { IPDSFIELD_DSCP_CS6, "Class Selector 6" },
+ { IPDSFIELD_DSCP_CS7, "Class Selector 7" },
{ 0, NULL }};
+value_string_ext dscp_vals_ext = VALUE_STRING_EXT_INIT(dscp_vals);
const value_string ecn_vals[] = {
{ IPDSFIELD_ECT_NOT, "Not-ECT (Not ECN-Capable Transport)" },
@@ -1761,10 +1994,10 @@ dissect_ip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
tf = proto_tree_add_uint_format(ip_tree, hf_ip_dsfield, tvb, offset + 1,
1, iph->ip_tos, "Differentiated Services Field: 0x%02x "
"(DSCP 0x%02x: %s; ECN: 0x%02x: %s)", iph->ip_tos,
- IPDSFIELD_DSCP(iph->ip_tos), val_to_str(IPDSFIELD_DSCP(iph->ip_tos),
- dscp_vals, "Unknown DSCP"),
- IPDSFIELD_ECN(iph->ip_tos), val_to_str(IPDSFIELD_ECN(iph->ip_tos),
- ecn_vals, "Unknown ECN"));
+ IPDSFIELD_DSCP(iph->ip_tos), val_to_str_ext_const(IPDSFIELD_DSCP(iph->ip_tos),
+ &dscp_vals_ext, "Unknown DSCP"),
+ IPDSFIELD_ECN(iph->ip_tos), val_to_str_const(IPDSFIELD_ECN(iph->ip_tos),
+ ecn_vals, "Unknown ECN"));
field_tree = proto_item_add_subtree(tf, ett_ip_dsfield);
proto_tree_add_item(field_tree, hf_ip_dsfield_dscp, tvb, offset + 1, 1, ENC_NA);
@@ -1774,8 +2007,8 @@ dissect_ip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
iph->ip_tos,
"Type of service: 0x%02x (%s)",
iph->ip_tos,
- val_to_str(IPTOS_TOS(iph->ip_tos),
- iptos_vals, "Unknown"));
+ val_to_str_const(IPTOS_TOS(iph->ip_tos),
+ iptos_vals, "Unknown"));
field_tree = proto_item_add_subtree(tf, ett_ip_tos);
proto_tree_add_item(field_tree, hf_ip_tos_precedence, tvb, offset + 1, 1, ENC_NA);
@@ -2195,8 +2428,8 @@ proto_register_ip(void)
NULL, 0x0, NULL, HFILL }},
{ &hf_ip_dsfield_dscp,
- { "Differentiated Services Codepoint", "ip.dsfield.dscp", FT_UINT8, BASE_HEX,
- VALS(dscp_vals), IPDSFIELD_DSCP_MASK, NULL, HFILL }},
+ { "Differentiated Services Codepoint", "ip.dsfield.dscp", FT_UINT8, BASE_HEX | BASE_EXT_STRING,
+ &dscp_vals_ext, IPDSFIELD_DSCP_MASK, NULL, HFILL }},
{ &hf_ip_dsfield_ecn,
{ "Explicit Congestion Notification", "ip.dsfield.ecn", FT_UINT8, BASE_HEX,
@@ -2276,10 +2509,10 @@ proto_register_ip(void)
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_geoip_lat,
{ "Source or Destination GeoIP Latitude", "ip.geoip.lat",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_geoip_lon,
{ "Source or Destination GeoIP Longitude", "ip.geoip.lon",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_geoip_src_country,
{ "Source GeoIP Country", "ip.geoip.src_country",
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
@@ -2297,10 +2530,10 @@ proto_register_ip(void)
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_geoip_src_lat,
{ "Source GeoIP Latitude", "ip.geoip.src_lat",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_geoip_src_lon,
{ "Source GeoIP Longitude", "ip.geoip.src_lon",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_geoip_dst_country,
{ "Destination GeoIP Country", "ip.geoip.dst_country",
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
@@ -2318,10 +2551,10 @@ proto_register_ip(void)
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_geoip_dst_lat,
{ "Destination GeoIP Latitude", "ip.geoip.dst_lat",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_geoip_dst_lon,
{ "Destination GeoIP Longitude", "ip.geoip.dst_lon",
- FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
#endif /* HAVE_GEOIP */
{ &hf_ip_flags,
@@ -2329,19 +2562,19 @@ proto_register_ip(void)
NULL, 0x0, FLAGS_OFFSET_WIDTH_MSG(IP_FLAGS_WIDTH), HFILL }},
{ &hf_ip_flags_sf,
- { "Security flag", "ip.flags.sf", FT_BOOLEAN, IP_FLAGS_WIDTH,
+ { "Security flag", "ip.flags.sf", FT_BOOLEAN, BASE_NONE,
TFS(&flags_sf_set_evil), 0x0, "Security flag (RFC 3514)", HFILL }},
{ &hf_ip_flags_rf,
- { "Reserved bit", "ip.flags.rb", FT_BOOLEAN, IP_FLAGS_WIDTH,
+ { "Reserved bit", "ip.flags.rb", FT_BOOLEAN, BASE_NONE,
TFS(&tfs_set_notset), 0x0, NULL, HFILL }},
{ &hf_ip_flags_df,
- { "Don't fragment", "ip.flags.df", FT_BOOLEAN, IP_FLAGS_WIDTH,
+ { "Don't fragment", "ip.flags.df", FT_BOOLEAN, BASE_NONE,
TFS(&tfs_set_notset), 0x0, NULL, HFILL }},
{ &hf_ip_flags_mf,
- { "More fragments", "ip.flags.mf", FT_BOOLEAN, IP_FLAGS_WIDTH,
+ { "More fragments", "ip.flags.mf", FT_BOOLEAN, BASE_NONE,
TFS(&tfs_set_notset), 0x0, NULL, HFILL }},
{ &hf_ip_frag_offset,
@@ -2353,8 +2586,8 @@ proto_register_ip(void)
NULL, 0x0, NULL, HFILL }},
{ &hf_ip_proto,
- { "Protocol", "ip.proto", FT_UINT8, BASE_DEC|BASE_EXT_STRING,
- (&ipproto_val_ext), 0x0, NULL, HFILL }},
+ { "Protocol", "ip.proto", FT_UINT8, BASE_DEC | BASE_EXT_STRING,
+ &ipproto_val_ext, 0x0, NULL, HFILL }},
{ &hf_ip_checksum,
{ "Header checksum", "ip.checksum", FT_UINT16, BASE_HEX,
@@ -2397,17 +2630,45 @@ proto_register_ip(void)
{ "Stream Identifier", "ip.opt.sid", FT_UINT16, BASE_DEC,
NULL, 0x0, "SATNET stream identifier", HFILL }},
+ { &hf_ip_opt_mtu,
+ { "MTU", "ip.opt.mtu", FT_UINT16, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+
+ { &hf_ip_opt_id_number,
+ { "ID Number", "ip.opt.id_number", FT_UINT16, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+
+ { &hf_ip_opt_ohc,
+ { "Outbound Hop Count", "ip.opt.ohc", FT_UINT16, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+
+ { &hf_ip_opt_rhc,
+ { "Return Hop Count", "ip.opt.rhc", FT_UINT16, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+
+ { &hf_ip_opt_originator,
+ { "Originator IP Address", "ip.opt.originator", FT_IPv4, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+
{ &hf_ip_opt_ra,
{ "Router Alert", "ip.opt.ra", FT_UINT16, BASE_DEC | BASE_RANGE_STRING,
RVALS(ra_rvals), 0x0, NULL, HFILL }},
+ { &hf_ip_opt_addr,
+ { "IP Address", "ip.opt.addr", FT_IPv4, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+
+ { &hf_ip_opt_padding,
+ { "Padding", "ip.opt.padding", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+
{ &hf_ip_opt_qs_func,
{ "Function", "ip.opt.qs_func", FT_UINT8, BASE_DEC,
VALS(qs_func_vals), QS_FUNC_MASK, NULL, HFILL }},
{ &hf_ip_opt_qs_rate,
{ "Rate", "ip.opt.qs_rate", FT_UINT8, BASE_DEC | BASE_EXT_STRING,
- &(qs_rate_vals_ext), QS_RATE_MASK, NULL, HFILL }},
+ &qs_rate_vals_ext, QS_RATE_MASK, NULL, HFILL }},
{ &hf_ip_opt_qs_ttl,
{ "QS TTL", "ip.opt.qs_ttl", FT_UINT8, BASE_DEC,
@@ -2423,11 +2684,75 @@ proto_register_ip(void)
{ &hf_ip_opt_qs_nonce,
{ "QS Nonce", "ip.opt.qs_nonce", FT_UINT32, BASE_HEX,
- NULL, 0xFFFC, NULL, HFILL }},
+ NULL, 0xFFFFFFFC, NULL, HFILL }},
{ &hf_ip_opt_qs_reserved,
{ "Reserved", "ip.opt.qs_reserved", FT_UINT32, BASE_HEX,
- NULL, 0x0003, NULL, HFILL }},
+ NULL, 0x00000003, NULL, HFILL }},
+
+ { &hf_ip_opt_sec_rfc791_sec,
+ { "Security", "ip.opt.sec_rfc791_sec", FT_UINT8, BASE_HEX,
+ VALS(secl_rfc791_vals), 0x0, NULL, HFILL }},
+
+ { &hf_ip_opt_sec_rfc791_comp,
+ { "Compartments", "ip.opt.sec_rfc791_comp", FT_UINT16, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+
+ { &hf_ip_opt_sec_rfc791_hr,
+ { "Handling Restrictions", "ip.opt.sec_rfc791_hr", FT_STRING, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+
+ { &hf_ip_opt_sec_rfc791_tcc,
+ { "Transmission Control Code", "ip.opt.sec_rfc791_tcc", FT_STRING, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+
+ { &hf_ip_opt_sec_cl,
+ { "Classification Level", "ip.opt.sec_cl", FT_UINT8, BASE_HEX,
+ VALS(sec_cl_vals), 0x0, NULL, HFILL }},
+
+ { &hf_ip_opt_sec_prot_auth_flags,
+ { "Protection Authority Flags", "ip.opt.sec_prot_auth_flags", FT_UINT8, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }},
+
+ { &hf_ip_opt_sec_prot_auth_genser,
+ { "GENSER", "ip.opt.sec_prot_auth_genser", FT_BOOLEAN, 8,
+ TFS(&ip_opt_sec_prot_auth_flag_tfs), 0x80, NULL, HFILL }},
+
+ { &hf_ip_opt_sec_prot_auth_siop_esi,
+ { "SIOP-ESI", "ip.opt.sec_prot_auth_siop_esi", FT_BOOLEAN, 8,
+ TFS(&ip_opt_sec_prot_auth_flag_tfs), 0x40, NULL, HFILL }},
+
+ { &hf_ip_opt_sec_prot_auth_sci,
+ { "SCI", "ip.opt.sec_prot_auth_sci", FT_BOOLEAN, 8,
+ TFS(&ip_opt_sec_prot_auth_flag_tfs), 0x20, NULL, HFILL }},
+
+ { &hf_ip_opt_sec_prot_auth_nsa,
+ { "NSA", "ip.opt.sec_prot_auth_nsa", FT_BOOLEAN, 8,
+ TFS(&ip_opt_sec_prot_auth_flag_tfs), 0x10, NULL, HFILL }},
+
+ { &hf_ip_opt_sec_prot_auth_doe,
+ { "DOE", "ip.opt.sec_prot_auth_doe", FT_BOOLEAN, 8,
+ TFS(&ip_opt_sec_prot_auth_flag_tfs), 0x08, NULL, HFILL }},
+
+ { &hf_ip_opt_sec_prot_auth_unassigned,
+ { "Unassigned", "ip.opt.sec_prot_auth_unassigned", FT_UINT8, BASE_HEX,
+ NULL, 0x06, NULL, HFILL }},
+
+ { &hf_ip_opt_sec_prot_auth_unassigned2,
+ { "Unassigned", "ip.opt.sec_prot_auth_unassigned", FT_UINT8, BASE_HEX,
+ NULL, 0xFE, NULL, HFILL }},
+
+ { &hf_ip_opt_sec_prot_auth_fti,
+ { "Field Termination Indicator", "ip.opt.sec_prot_auth_fti", FT_BOOLEAN, 8,
+ TFS(&ip_opt_sec_prot_auth_fti_tfs), 0x01, NULL, HFILL }},
+
+ { &hf_ip_opt_ext_sec_add_sec_info_format_code,
+ { "Additional Security Info Format Code", "ip.opt.ext_sec_add_sec_info_format_code", FT_UINT8, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }},
+
+ { &hf_ip_opt_ext_sec_add_sec_info,
+ { "Additional Security Info", "ip.opt.ext_sec_add_sec_info", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
{ &hf_ip_rec_rt,
{ "Recorded Route", "ip.rec_rt", FT_IPv4, BASE_NONE, NULL, 0x0,
@@ -2511,17 +2836,25 @@ proto_register_ip(void)
&ett_ip_tos,
&ett_ip_off,
&ett_ip_options,
+ &ett_ip_option_eool,
+ &ett_ip_option_nop,
&ett_ip_option_sec,
&ett_ip_option_route,
- &ett_ip_option_sid,
&ett_ip_option_timestamp,
- &ett_ip_option_qs,
- &ett_ip_option_ra,
+ &ett_ip_option_ext_security,
&ett_ip_option_cipso,
+ &ett_ip_option_sid,
+ &ett_ip_option_mtu,
+ &ett_ip_option_tr,
+ &ett_ip_option_ra,
+ &ett_ip_option_sdb,
+ &ett_ip_option_qs,
+ &ett_ip_option_other,
&ett_ip_fragments,
&ett_ip_fragment,
&ett_ip_checksum,
&ett_ip_opt_type,
+ &ett_ip_opt_sec_prot_auth_flags,
#ifdef HAVE_GEOIP
&ett_geoip_info
#endif
@@ -2604,11 +2937,11 @@ proto_reg_handoff_ip(void)
*
* Local variables:
* c-basic-offset: 2
- * tab-width: 2
+ * tab-width: 8
* indent-tabs-mode: nil
* End:
*
- * vi: set shiftwidth=2 tabstop=2 expandtab:
- * :indentSize=2:tabSize=2:noTabs=true:
+ * vi: set shiftwidth=2 tabstop=8 expandtab:
+ * :indentSize=2:tabSize=8:noTabs=true:
*/
diff --git a/epan/dissectors/packet-ip.h b/epan/dissectors/packet-ip.h
index 26c7e36533..06df185ed3 100644
--- a/epan/dissectors/packet-ip.h
+++ b/epan/dissectors/packet-ip.h
@@ -43,7 +43,7 @@ typedef struct _ws_ip
void capture_ip(const guchar *, int, int, packet_counts *);
guint16 ip_checksum(const guint8 *ptr, int len);
-/* Export the DSCP value-string table for other protocols */
-WS_VAR_IMPORT const value_string dscp_vals[];
+/* Export the DSCP extended value-string table for other protocols */
+WS_VAR_IMPORT value_string_ext dscp_vals_ext;
#endif
diff --git a/epan/dissectors/packet-ipfc.c b/epan/dissectors/packet-ipfc.c
index 08edffd006..bd0455bc1c 100644
--- a/epan/dissectors/packet-ipfc.c
+++ b/epan/dissectors/packet-ipfc.c
@@ -30,8 +30,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-ipmi-app.c b/epan/dissectors/packet-ipmi-app.c
index f955d480b7..0637666fef 100644
--- a/epan/dissectors/packet-ipmi-app.c
+++ b/epan/dissectors/packet-ipmi-app.c
@@ -27,9 +27,6 @@
#include "config.h"
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
#include <string.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-ipmi-bridge.c b/epan/dissectors/packet-ipmi-bridge.c
index 0246c412a4..0160297a64 100644
--- a/epan/dissectors/packet-ipmi-bridge.c
+++ b/epan/dissectors/packet-ipmi-bridge.c
@@ -27,10 +27,6 @@
#include "config.h"
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <epan/packet.h>
#include "packet-ipmi.h"
diff --git a/epan/dissectors/packet-ipmi-chassis.c b/epan/dissectors/packet-ipmi-chassis.c
index c473e0fdc2..e54b1bb6a2 100644
--- a/epan/dissectors/packet-ipmi-chassis.c
+++ b/epan/dissectors/packet-ipmi-chassis.c
@@ -27,10 +27,6 @@
#include "config.h"
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <epan/packet.h>
#include "packet-ipmi.h"
diff --git a/epan/dissectors/packet-ipmi-picmg.c b/epan/dissectors/packet-ipmi-picmg.c
index b797847cda..08500a0153 100644
--- a/epan/dissectors/packet-ipmi-picmg.c
+++ b/epan/dissectors/packet-ipmi-picmg.c
@@ -27,10 +27,6 @@
#include "config.h"
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <epan/packet.h>
#include "packet-ipmi.h"
diff --git a/epan/dissectors/packet-ipmi-pps.c b/epan/dissectors/packet-ipmi-pps.c
index a02b3d8f7b..c87fe28258 100644
--- a/epan/dissectors/packet-ipmi-pps.c
+++ b/epan/dissectors/packet-ipmi-pps.c
@@ -27,10 +27,6 @@
#include "config.h"
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <epan/packet.h>
#include "packet-ipmi.h"
diff --git a/epan/dissectors/packet-ipmi-se.c b/epan/dissectors/packet-ipmi-se.c
index 5b4216a9ed..dd33b9442d 100644
--- a/epan/dissectors/packet-ipmi-se.c
+++ b/epan/dissectors/packet-ipmi-se.c
@@ -27,10 +27,6 @@
#include "config.h"
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <epan/packet.h>
#include "packet-ipmi.h"
diff --git a/epan/dissectors/packet-ipmi-storage.c b/epan/dissectors/packet-ipmi-storage.c
index 48c9330175..ed4db023f0 100644
--- a/epan/dissectors/packet-ipmi-storage.c
+++ b/epan/dissectors/packet-ipmi-storage.c
@@ -27,10 +27,6 @@
#include "config.h"
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <epan/packet.h>
#include "packet-ipmi.h"
diff --git a/epan/dissectors/packet-ipmi-transport.c b/epan/dissectors/packet-ipmi-transport.c
index c3349dcae1..3d543adccf 100644
--- a/epan/dissectors/packet-ipmi-transport.c
+++ b/epan/dissectors/packet-ipmi-transport.c
@@ -27,10 +27,6 @@
#include "config.h"
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <epan/packet.h>
#include "packet-ipmi.h"
diff --git a/epan/dissectors/packet-ipmi-update.c b/epan/dissectors/packet-ipmi-update.c
index d3d35760bb..35a263a259 100644
--- a/epan/dissectors/packet-ipmi-update.c
+++ b/epan/dissectors/packet-ipmi-update.c
@@ -27,10 +27,6 @@
#include "config.h"
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <epan/packet.h>
#include "packet-ipmi.h"
diff --git a/epan/dissectors/packet-ipmi.c b/epan/dissectors/packet-ipmi.c
index f2ceb7f0dc..c6bb3e84cf 100644
--- a/epan/dissectors/packet-ipmi.c
+++ b/epan/dissectors/packet-ipmi.c
@@ -27,16 +27,13 @@
#include "config.h"
#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
#include <string.h>
#include <time.h>
#include <math.h>
+#include <epan/packet.h>
#include <epan/conversation.h>
#include <epan/emem.h>
-#include <epan/packet.h>
#include <epan/to_str.h>
#include <epan/prefs.h>
#include <epan/addr_resolv.h>
diff --git a/epan/dissectors/packet-ipp.c b/epan/dissectors/packet-ipp.c
index c649e96e51..fb4cf0bcbf 100644
--- a/epan/dissectors/packet-ipp.c
+++ b/epan/dissectors/packet-ipp.c
@@ -29,7 +29,6 @@
#endif
#include <string.h>
-#include <ctype.h>
#include <glib.h>
#include <epan/packet.h>
@@ -46,19 +45,16 @@ static gint ett_ipp_attr = -1;
static dissector_handle_t data_handle;
-#define PRINT_JOB 0x0002
-#define PRINT_URI 0x0003
-#define VALIDATE_JOB 0x0004
-#define CREATE_JOB 0x0005
-#define SEND_DOCUMENT 0x0006
-#define SEND_URI 0x0007
-#define CANCEL_JOB 0x0008
-#define GET_JOB_ATTRIBUTES 0x0009
-#define GET_JOBS 0x000A
-#define GET_PRINTER_ATTRIBUTES 0x000B
-#define IDLE 0x3
-#define PROCESSING 0x4
-#define STOPPED 0x5
+#define PRINT_JOB 0x0002
+#define PRINT_URI 0x0003
+#define VALIDATE_JOB 0x0004
+#define CREATE_JOB 0x0005
+#define SEND_DOCUMENT 0x0006
+#define SEND_URI 0x0007
+#define CANCEL_JOB 0x0008
+#define GET_JOB_ATTRIBUTES 0x0009
+#define GET_JOBS 0x000A
+#define GET_PRINTER_ATTRIBUTES 0x000B
static const value_string operation_vals[] = {
{ PRINT_JOB, "Print-Job" },
@@ -75,62 +71,65 @@ static const value_string operation_vals[] = {
};
/* Printer States */
+#define PRINTER_STATE_IDLE 0x3
+#define PRINTER_STATE_PROCESSING 0x4
+#define PRINTER_STATE_STOPPED 0x5
static const value_string printer_state_vals[] = {
- { IDLE, "Idle" },
- { PROCESSING, "Processing" },
- { STOPPED, "Stopped" },
- { 0, NULL }
+ { PRINTER_STATE_IDLE, "Idle" },
+ { PRINTER_STATE_PROCESSING, "Processing" },
+ { PRINTER_STATE_STOPPED, "Stopped" },
+ { 0, NULL }
};
/* Job States */
static const value_string job_state_vals[] = {
- { 3, "Pending" },
- { 4, "Pending - Job Held" },
- { 5, "Processing" },
- { 6, "Processing - Job Stopped" },
- { 7, "Canceled" },
- { 8, "Aborted" },
- { 9, "Completed" },
- { 0, NULL }
+ { 3, "Pending" },
+ { 4, "Pending - Job Held" },
+ { 5, "Processing" },
+ { 6, "Processing - Job Stopped" },
+ { 7, "Canceled" },
+ { 8, "Aborted" },
+ { 9, "Completed" },
+ { 0, NULL }
};
-#define STATUS_SUCCESSFUL 0x0000
-#define STATUS_INFORMATIONAL 0x0100
-#define STATUS_REDIRECTION 0x0200
-#define STATUS_CLIENT_ERROR 0x0400
-#define STATUS_SERVER_ERROR 0x0500
-
-#define STATUS_TYPE_MASK 0xFF00
-
-#define SUCCESSFUL_OK 0x0000
-#define SUCCESSFUL_OK_IGN_OR_SUB_ATTR 0x0001
-#define SUCCESSFUL_OK_CONFLICTING_ATTR 0x0002
-
-#define CLIENT_ERROR_BAD_REQUEST 0x0400
-#define CLIENT_ERROR_FORBIDDEN 0x0401
-#define CLIENT_ERROR_NOT_AUTHENTICATED 0x0402
-#define CLIENT_ERROR_NOT_AUTHORIZED 0x0403
-#define CLIENT_ERROR_NOT_POSSIBLE 0x0404
-#define CLIENT_ERROR_TIMEOUT 0x0405
-#define CLIENT_ERROR_NOT_FOUND 0x0406
-#define CLIENT_ERROR_GONE 0x0407
-#define CLIENT_ERROR_REQ_ENTITY_TOO_LRG 0x0408
-#define CLIENT_ERROR_REQ_VALUE_TOO_LONG 0x0409
-#define CLIENT_ERROR_DOC_FMT_NOT_SUPP 0x040A
-#define CLIENT_ERROR_ATTR_OR_VAL_NOT_SUPP 0x040B
-#define CLIENT_ERROR_URI_SCHEME_NOT_SUPP 0x040C
-#define CLIENT_ERROR_CHARSET_NOT_SUPP 0x040D
-#define CLIENT_ERROR_CONFLICTING_ATTRS 0x040E
-
-#define SERVER_ERROR_INTERNAL_ERROR 0x0500
-#define SERVER_ERROR_OPERATION_NOT_SUPP 0x0501
-#define SERVER_ERROR_SERVICE_UNAVAIL 0x0502
-#define SERVER_ERROR_VERSION_NOT_SUPP 0x0503
-#define SERVER_ERROR_DEVICE_ERROR 0x0504
-#define SERVER_ERROR_TEMPORARY_ERROR 0x0505
-#define SERVER_ERROR_NOT_ACCEPTING_JOBS 0x0506
-#define SERVER_ERROR_BUSY 0x0507
-#define SERVER_ERROR_JOB_CANCELED 0x0508
+#define STATUS_SUCCESSFUL 0x0000
+#define STATUS_INFORMATIONAL 0x0100
+#define STATUS_REDIRECTION 0x0200
+#define STATUS_CLIENT_ERROR 0x0400
+#define STATUS_SERVER_ERROR 0x0500
+
+#define STATUS_TYPE_MASK 0xFF00
+
+#define SUCCESSFUL_OK 0x0000
+#define SUCCESSFUL_OK_IGN_OR_SUB_ATTR 0x0001
+#define SUCCESSFUL_OK_CONFLICTING_ATTR 0x0002
+
+#define CLIENT_ERROR_BAD_REQUEST 0x0400
+#define CLIENT_ERROR_FORBIDDEN 0x0401
+#define CLIENT_ERROR_NOT_AUTHENTICATED 0x0402
+#define CLIENT_ERROR_NOT_AUTHORIZED 0x0403
+#define CLIENT_ERROR_NOT_POSSIBLE 0x0404
+#define CLIENT_ERROR_TIMEOUT 0x0405
+#define CLIENT_ERROR_NOT_FOUND 0x0406
+#define CLIENT_ERROR_GONE 0x0407
+#define CLIENT_ERROR_REQ_ENTITY_TOO_LRG 0x0408
+#define CLIENT_ERROR_REQ_VALUE_TOO_LONG 0x0409
+#define CLIENT_ERROR_DOC_FMT_NOT_SUPP 0x040A
+#define CLIENT_ERROR_ATTR_OR_VAL_NOT_SUPP 0x040B
+#define CLIENT_ERROR_URI_SCHEME_NOT_SUPP 0x040C
+#define CLIENT_ERROR_CHARSET_NOT_SUPP 0x040D
+#define CLIENT_ERROR_CONFLICTING_ATTRS 0x040E
+
+#define SERVER_ERROR_INTERNAL_ERROR 0x0500
+#define SERVER_ERROR_OPERATION_NOT_SUPP 0x0501
+#define SERVER_ERROR_SERVICE_UNAVAIL 0x0502
+#define SERVER_ERROR_VERSION_NOT_SUPP 0x0503
+#define SERVER_ERROR_DEVICE_ERROR 0x0504
+#define SERVER_ERROR_TEMPORARY_ERROR 0x0505
+#define SERVER_ERROR_NOT_ACCEPTING_JOBS 0x0506
+#define SERVER_ERROR_BUSY 0x0507
+#define SERVER_ERROR_JOB_CANCELED 0x0508
static const value_string status_vals[] = {
{ SUCCESSFUL_OK, "Successful-OK" },
@@ -165,492 +164,502 @@ static const value_string status_vals[] = {
static int parse_attributes(tvbuff_t *tvb, int offset, proto_tree *tree);
static proto_tree *add_integer_tree(proto_tree *tree, tvbuff_t *tvb,
- int offset, int name_length, int value_length, guint8 tag);
+ int offset, int name_length, int value_length, guint8 tag);
static void add_integer_value(const gchar *tag_desc, proto_tree *tree,
- tvbuff_t *tvb, int offset, int name_length, int value_length, guint8 tag);
+ tvbuff_t *tvb, int offset, int name_length, int value_length, guint8 tag);
static proto_tree *add_octetstring_tree(proto_tree *tree, tvbuff_t *tvb,
- int offset, int name_length, int value_length);
+ int offset, int name_length, int value_length);
static void add_octetstring_value(const gchar *tag_desc, proto_tree *tree,
- tvbuff_t *tvb, int offset, int name_length, int value_length);
+ tvbuff_t *tvb, int offset, int name_length, int value_length);
static proto_tree *add_charstring_tree(proto_tree *tree, tvbuff_t *tvb,
- int offset, int name_length, int value_length);
+ int offset, int name_length, int value_length);
static void add_charstring_value(const gchar *tag_desc, proto_tree *tree,
- tvbuff_t *tvb, int offset, int name_length, int value_length);
+ tvbuff_t *tvb, int offset, int name_length, int value_length);
static int add_value_head(const gchar *tag_desc, proto_tree *tree,
- tvbuff_t *tvb, int offset, int name_length, int value_length, char **name_val);
+ tvbuff_t *tvb, int offset, int name_length, int value_length, char **name_val);
static void
dissect_ipp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *ipp_tree;
- proto_item *ti;
- int offset = 0;
- gboolean is_request = (pinfo->destport == pinfo->match_port);
- /* XXX - should this be based on the HTTP header? */
- guint16 status_code;
- const gchar *status_fmt;
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "IPP");
- if (check_col(pinfo->cinfo, COL_INFO)) {
- if (is_request)
- col_set_str(pinfo->cinfo, COL_INFO, "IPP request");
- else
- col_set_str(pinfo->cinfo, COL_INFO, "IPP response");
- }
-
- if (tree) {
- ti = proto_tree_add_item(tree, proto_ipp, tvb, offset, -1,
- ENC_NA);
- ipp_tree = proto_item_add_subtree(ti, ett_ipp);
-
- proto_tree_add_text(ipp_tree, tvb, offset, 2, "Version: %u.%u",
- tvb_get_guint8(tvb, offset),
- tvb_get_guint8(tvb, offset + 1));
- offset += 2;
-
- if (is_request) {
- proto_tree_add_text(ipp_tree, tvb, offset, 2, "Operation-id: %s",
- val_to_str(tvb_get_ntohs(tvb, offset), operation_vals,
- "Unknown (0x%04x)"));
- } else {
- status_code = tvb_get_ntohs(tvb, offset);
- switch (status_code & STATUS_TYPE_MASK) {
-
- case STATUS_SUCCESSFUL:
- status_fmt = "Successful (0x%04x)";
- break;
-
- case STATUS_INFORMATIONAL:
- status_fmt = "Informational (0x%04x)";
- break;
-
- case STATUS_REDIRECTION:
- status_fmt = "Redirection (0x%04x)";
- break;
-
- case STATUS_CLIENT_ERROR:
- status_fmt = "Client error (0x%04x)";
- break;
-
- case STATUS_SERVER_ERROR:
- status_fmt = "Server error (0x%04x)";
- break;
-
- default:
- status_fmt = "Unknown (0x%04x)";
- break;
- }
- proto_tree_add_text(ipp_tree, tvb, offset, 2, "Status-code: %s",
- val_to_str(status_code, status_vals, status_fmt));
- }
- offset += 2;
-
- proto_tree_add_text(ipp_tree, tvb, offset, 4, "Request ID: %u",
- tvb_get_ntohl(tvb, offset));
- offset += 4;
-
- offset = parse_attributes(tvb, offset, ipp_tree);
-
- if (tvb_offset_exists(tvb, offset)) {
- call_dissector(data_handle,
- tvb_new_subset_remaining(tvb, offset), pinfo,
- ipp_tree);
- }
- }
+ proto_tree *ipp_tree;
+ proto_item *ti;
+ int offset = 0;
+ gboolean is_request = (pinfo->destport == pinfo->match_port);
+ /* XXX - should this be based on the HTTP header? */
+ guint16 status_code;
+ const gchar *status_fmt;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "IPP");
+ if (is_request)
+ col_set_str(pinfo->cinfo, COL_INFO, "IPP request");
+ else
+ col_set_str(pinfo->cinfo, COL_INFO, "IPP response");
+
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_ipp, tvb, offset, -1, ENC_NA);
+ ipp_tree = proto_item_add_subtree(ti, ett_ipp);
+
+ proto_tree_add_text(ipp_tree, tvb, offset, 2, "Version: %u.%u",
+ tvb_get_guint8(tvb, offset),
+ tvb_get_guint8(tvb, offset + 1));
+ offset += 2;
+
+ if (is_request) {
+ proto_tree_add_text(ipp_tree, tvb, offset, 2, "Operation-id: %s",
+ val_to_str(tvb_get_ntohs(tvb, offset), operation_vals,
+ "Unknown (0x%04x)"));
+ } else {
+ status_code = tvb_get_ntohs(tvb, offset);
+ switch (status_code & STATUS_TYPE_MASK) {
+
+ case STATUS_SUCCESSFUL:
+ status_fmt = "Successful (0x%04x)";
+ break;
+
+ case STATUS_INFORMATIONAL:
+ status_fmt = "Informational (0x%04x)";
+ break;
+
+ case STATUS_REDIRECTION:
+ status_fmt = "Redirection (0x%04x)";
+ break;
+
+ case STATUS_CLIENT_ERROR:
+ status_fmt = "Client error (0x%04x)";
+ break;
+
+ case STATUS_SERVER_ERROR:
+ status_fmt = "Server error (0x%04x)";
+ break;
+
+ default:
+ status_fmt = "Unknown (0x%04x)";
+ break;
+ }
+ proto_tree_add_text(ipp_tree, tvb, offset, 2, "Status-code: %s",
+ val_to_str(status_code, status_vals, status_fmt));
+ }
+ offset += 2;
+
+ proto_tree_add_text(ipp_tree, tvb, offset, 4, "Request ID: %u",
+ tvb_get_ntohl(tvb, offset));
+ offset += 4;
+
+ offset = parse_attributes(tvb, offset, ipp_tree);
+
+ if (tvb_offset_exists(tvb, offset)) {
+ call_dissector(data_handle,
+ tvb_new_subset_remaining(tvb, offset), pinfo,
+ ipp_tree);
+ }
+ }
}
-#define TAG_TYPE(tag) ((tag) & 0xF0)
-#define TAG_TYPE_DELIMITER 0x00
-#define TAG_TYPE_INTEGER 0x20
-#define TAG_TYPE_OCTETSTRING 0x30
-#define TAG_TYPE_CHARSTRING 0x40
-
-#define TAG_END_OF_ATTRIBUTES 0x03
-
-#define TAG_INTEGER 0x21
-#define TAG_BOOLEAN 0x22
-#define TAG_ENUM 0x23
-
-#define TAG_OCTETSTRING 0x30
-#define TAG_DATETIME 0x31
-#define TAG_RESOLUTION 0x32
-#define TAG_RANGEOFINTEGER 0x33
-#define TAG_TEXTWITHLANGUAGE 0x35
-#define TAG_NAMEWITHLANGUAGE 0x36
-
-#define TAG_TEXTWITHOUTLANGUAGE 0x41
-#define TAG_NAMEWITHOUTLANGUAGE 0x42
-#define TAG_KEYWORD 0x44
-#define TAG_URI 0x45
-#define TAG_URISCHEME 0x46
-#define TAG_CHARSET 0x47
-#define TAG_NATURALLANGUAGE 0x48
-#define TAG_MIMEMEDIATYPE 0x49
+#define TAG_TYPE(x) ((x) & 0xF0)
+
+#define TAG_TYPE_DELIMITER 0x00
+#define TAG_TYPE_INTEGER 0x20
+#define TAG_TYPE_OCTETSTRING 0x30
+#define TAG_TYPE_CHARSTRING 0x40
+
+#define TAG_END_OF_ATTRIBUTES 0x03
+
+#define TAG_INTEGER 0x21
+#define TAG_BOOLEAN 0x22
+#define TAG_ENUM 0x23
+
+#define TAG_OCTETSTRING 0x30
+#define TAG_DATETIME 0x31
+#define TAG_RESOLUTION 0x32
+#define TAG_RANGEOFINTEGER 0x33
+#define TAG_TEXTWITHLANGUAGE 0x35
+#define TAG_NAMEWITHLANGUAGE 0x36
+
+#define TAG_TEXTWITHOUTLANGUAGE 0x41
+#define TAG_NAMEWITHOUTLANGUAGE 0x42
+#define TAG_KEYWORD 0x44
+#define TAG_URI 0x45
+#define TAG_URISCHEME 0x46
+#define TAG_CHARSET 0x47
+#define TAG_NATURALLANGUAGE 0x48
+#define TAG_MIMEMEDIATYPE 0x49
static const value_string tag_vals[] = {
- /* Delimiter tags */
- { 0x01, "Operation attributes" },
- { 0x02, "Job attributes" },
- { TAG_END_OF_ATTRIBUTES, "End of attributes" },
- { 0x04, "Printer attributes" },
- { 0x05, "Unsupported attributes" },
-
- /* Value tags */
- { 0x10, "Unsupported" },
- { 0x12, "Unknown" },
- { 0x13, "No value" },
- { TAG_INTEGER, "Integer" },
- { TAG_BOOLEAN, "Boolean" },
- { TAG_ENUM, "Enum" },
- { TAG_OCTETSTRING, "Octet string" },
- { TAG_DATETIME, "Date/Time" },
- { TAG_RESOLUTION, "Resolution" },
- { TAG_RANGEOFINTEGER, "Range of integer" },
- { TAG_TEXTWITHLANGUAGE, "Text with language" },
- { TAG_NAMEWITHLANGUAGE, "Name with language" },
- { TAG_TEXTWITHOUTLANGUAGE, "Text without language" },
- { TAG_NAMEWITHOUTLANGUAGE, "Name without language" },
- { TAG_KEYWORD, "Keyword" },
- { TAG_URI, "URI" },
- { TAG_URISCHEME, "URI scheme" },
- { TAG_CHARSET, "Character set" },
- { TAG_NATURALLANGUAGE, "Natural language" },
- { TAG_MIMEMEDIATYPE, "MIME media type" },
- { 0, NULL }
+ /* Delimiter tags */
+ { 0x01, "Operation attributes" },
+ { 0x02, "Job attributes" },
+ { TAG_END_OF_ATTRIBUTES, "End of attributes" },
+ { 0x04, "Printer attributes" },
+ { 0x05, "Unsupported attributes" },
+
+ /* Value tags */
+ { 0x10, "Unsupported" },
+ { 0x12, "Unknown" },
+ { 0x13, "No value" },
+ { TAG_INTEGER, "Integer" },
+ { TAG_BOOLEAN, "Boolean" },
+ { TAG_ENUM, "Enum" },
+ { TAG_OCTETSTRING, "Octet string" },
+ { TAG_DATETIME, "Date/Time" },
+ { TAG_RESOLUTION, "Resolution" },
+ { TAG_RANGEOFINTEGER, "Range of integer" },
+ { TAG_TEXTWITHLANGUAGE, "Text with language" },
+ { TAG_NAMEWITHLANGUAGE, "Name with language" },
+ { TAG_TEXTWITHOUTLANGUAGE, "Text without language" },
+ { TAG_NAMEWITHOUTLANGUAGE, "Name without language" },
+ { TAG_KEYWORD, "Keyword" },
+ { TAG_URI, "URI" },
+ { TAG_URISCHEME, "URI scheme" },
+ { TAG_CHARSET, "Character set" },
+ { TAG_NATURALLANGUAGE, "Natural language" },
+ { TAG_MIMEMEDIATYPE, "MIME media type" },
+ { 0, NULL }
};
static int
parse_attributes(tvbuff_t *tvb, int offset, proto_tree *tree)
{
- guint8 tag;
- const gchar *tag_desc;
- int name_length, value_length;
- proto_tree *as_tree = tree;
- proto_item *tas = NULL;
- int start_offset = offset;
- proto_tree *attr_tree = tree;
-
- while (tvb_offset_exists(tvb, offset)) {
- tag = tvb_get_guint8(tvb, offset);
- tag_desc = val_to_str(tag, tag_vals, "Reserved (0x%02x)");
- if (TAG_TYPE(tag) == TAG_TYPE_DELIMITER) {
- /*
- * If we had an attribute sequence we were
- * working on, we're done with it; set its
- * length to the length of all the stuff
- * we've done so far.
- */
- if (tas != NULL)
- proto_item_set_len(tas, offset - start_offset);
-
- /*
- * This tag starts a new attribute sequence;
- * create a new tree under this tag when we see
- * a non-delimiter tag, under which to put
- * those attributes.
- */
- as_tree = NULL;
- attr_tree = tree;
-
- /*
- * Remember the offset at which this attribute
- * sequence started, so we can use it to compute
- * its length when it's finished.
- */
- start_offset = offset;
-
- /*
- * Now create a new item for this tag.
- */
- tas = proto_tree_add_text(tree, tvb, offset, 1,
- "%s", tag_desc);
- offset++;
- if (tag == TAG_END_OF_ATTRIBUTES) {
- /*
- * No more attributes.
- */
- break;
- }
- } else {
- /*
- * Value tag - get the name length.
- */
- name_length = tvb_get_ntohs(tvb, offset + 1);
-
- /*
- * OK, get the value length.
- */
- value_length = tvb_get_ntohs(tvb, offset + 1 + 2 + name_length);
-
- /*
- * OK, does the value run past the end of the
- * frame?
- */
- if (as_tree == NULL) {
- /*
- * OK, there's an attribute to hang
- * under a delimiter tag, but we don't
- * have a tree for that tag yet; create
- * a tree.
- */
- as_tree = proto_item_add_subtree(tas,
- ett_ipp_as);
- attr_tree = as_tree;
- }
-
- switch (TAG_TYPE(tag)) {
-
- case TAG_TYPE_INTEGER:
- if (name_length != 0) {
- /*
- * This is an attribute, not
- * an additional value, so
- * start a tree for it.
- */
- attr_tree = add_integer_tree(as_tree,
- tvb, offset, name_length,
- value_length, tag);
- }
- add_integer_value(tag_desc, attr_tree, tvb,
- offset, name_length, value_length, tag);
- break;
-
- case TAG_TYPE_OCTETSTRING:
- if (name_length != 0) {
- /*
- * This is an attribute, not
- * an additional value, so
- * start a tree for it.
- */
- attr_tree = add_octetstring_tree(as_tree,
- tvb, offset, name_length,
- value_length);
- }
- add_octetstring_value(tag_desc, attr_tree, tvb,
- offset, name_length, value_length);
- break;
-
- case TAG_TYPE_CHARSTRING:
- if (name_length != 0) {
- /*
- * This is an attribute, not
- * an additional value, so
- * start a tree for it.
- */
- attr_tree = add_charstring_tree(as_tree,
- tvb, offset, name_length,
- value_length);
- }
- add_charstring_value(tag_desc, attr_tree, tvb,
- offset, name_length, value_length);
- break;
- }
- offset += 1 + 2 + name_length + 2 + value_length;
- }
- }
-
- return offset;
+ guint8 tag;
+ const gchar *tag_desc;
+ int name_length, value_length;
+ proto_tree *as_tree = tree;
+ proto_item *tas = NULL;
+ int start_offset = offset;
+ proto_tree *attr_tree = tree;
+
+ while (tvb_offset_exists(tvb, offset)) {
+ tag = tvb_get_guint8(tvb, offset);
+ tag_desc = val_to_str(tag, tag_vals, "Reserved (0x%02x)");
+ if (TAG_TYPE(tag) == TAG_TYPE_DELIMITER) {
+ /*
+ * If we had an attribute sequence we were
+ * working on, we're done with it; set its
+ * length to the length of all the stuff
+ * we've done so far.
+ */
+ if (tas != NULL)
+ proto_item_set_len(tas, offset - start_offset);
+
+ /*
+ * This tag starts a new attribute sequence;
+ * create a new tree under this tag when we see
+ * a non-delimiter tag, under which to put
+ * those attributes.
+ */
+ as_tree = NULL;
+ attr_tree = tree;
+
+ /*
+ * Remember the offset at which this attribute
+ * sequence started, so we can use it to compute
+ * its length when it's finished.
+ */
+ start_offset = offset;
+
+ /*
+ * Now create a new item for this tag.
+ */
+ tas = proto_tree_add_text(tree, tvb, offset, 1,
+ "%s", tag_desc);
+ offset += 1;
+ if (tag == TAG_END_OF_ATTRIBUTES) {
+ /*
+ * No more attributes.
+ */
+ break;
+ }
+ } else {
+ /*
+ * Value tag - get the name length.
+ */
+ name_length = tvb_get_ntohs(tvb, offset + 1);
+
+ /*
+ * OK, get the value length.
+ */
+ value_length = tvb_get_ntohs(tvb, offset + 1 + 2 + name_length);
+
+ /*
+ * OK, does the value run past the end of the
+ * frame?
+ */
+ if (as_tree == NULL) {
+ /*
+ * OK, there's an attribute to hang
+ * under a delimiter tag, but we don't
+ * have a tree for that tag yet; create
+ * a tree.
+ */
+ as_tree = proto_item_add_subtree(tas,
+ ett_ipp_as);
+ attr_tree = as_tree;
+ }
+
+ switch (TAG_TYPE(tag)) {
+
+ case TAG_TYPE_INTEGER:
+ if (name_length != 0) {
+ /*
+ * This is an attribute, not
+ * an additional value, so
+ * start a tree for it.
+ */
+ attr_tree = add_integer_tree(as_tree,
+ tvb, offset, name_length,
+ value_length, tag);
+ }
+ add_integer_value(tag_desc, attr_tree, tvb,
+ offset, name_length, value_length, tag);
+ break;
+
+ case TAG_TYPE_OCTETSTRING:
+ if (name_length != 0) {
+ /*
+ * This is an attribute, not
+ * an additional value, so
+ * start a tree for it.
+ */
+ attr_tree = add_octetstring_tree(as_tree,
+ tvb, offset, name_length,
+ value_length);
+ }
+ add_octetstring_value(tag_desc, attr_tree, tvb,
+ offset, name_length, value_length);
+ break;
+
+ case TAG_TYPE_CHARSTRING:
+ if (name_length != 0) {
+ /*
+ * This is an attribute, not
+ * an additional value, so
+ * start a tree for it.
+ */
+ attr_tree = add_charstring_tree(as_tree,
+ tvb, offset, name_length,
+ value_length);
+ }
+ add_charstring_value(tag_desc, attr_tree, tvb,
+ offset, name_length, value_length);
+ break;
+ }
+ offset += 1 + 2 + name_length + 2 + value_length;
+ }
+ }
+
+ return offset;
}
static const value_string bool_vals[] = {
- { 0x00, "false" },
- { 0x01, "true" },
- { 0, NULL }
+ { 0x00, "false" },
+ { 0x01, "true" },
+ { 0, NULL }
};
static proto_tree *
add_integer_tree(proto_tree *tree, tvbuff_t *tvb, int offset,
- int name_length, int value_length, guint8 tag)
+ int name_length, int value_length, guint8 tag)
{
- proto_item *ti;
- guint8 bool_val;
-
- switch (tag) {
-
- case TAG_BOOLEAN:
- if (value_length != 1) {
- ti = proto_tree_add_text(tree, tvb, offset,
- 1 + 2 + name_length + 2 + value_length,
- "%s: Invalid boolean (length is %u, should be 1)",
- tvb_format_text(tvb, offset + 1 + 2, name_length),
- value_length);
- } else {
- bool_val = tvb_get_guint8(tvb,
- offset + 1 + 2 + name_length + 2);
- ti = proto_tree_add_text(tree, tvb, offset,
- 1 + 2 + name_length + 2 + value_length,
- "%s: %s",
- tvb_format_text(tvb, offset + 1 + 2, name_length),
- val_to_str(bool_val, bool_vals, "Unknown (0x%02x)"));
- }
- break;
-
- case TAG_INTEGER:
- case TAG_ENUM:
- if (value_length != 4) {
- ti = proto_tree_add_text(tree, tvb, offset,
- 1 + 2 + name_length + 2 + value_length,
- "%s: Invalid integer (length is %u, should be 4)",
- tvb_format_text(tvb, offset + 1 + 2, name_length),
- value_length);
- } else {
- const char *name_val;
- /* Some fields in IPP are really unix timestamps but IPP
- * transports these as 4 byte integers.
- * A simple heuristic to make the display of these fields
- * more human readable is to assume that if the field name
- * ends in '-time' then assume they are timestamps instead
- * of integers.
- */
- name_val=tvb_get_ptr(tvb, offset + 1 + 2, name_length);
- if( (name_length > 5) && name_val && !tvb_memeql(tvb, offset + 1 + 2 + name_length - 5, "-time", 5)){
- ti = proto_tree_add_text(tree, tvb, offset,
- 1 + 2 + name_length + 2 + value_length,
- "%s: %s",
- format_text(name_val, name_length),
- abs_time_secs_to_str(tvb_get_ntohl(tvb, offset + 1 + 2 + name_length + 2), ABSOLUTE_TIME_LOCAL, TRUE));
-
- }
- else if((name_length > 5) && name_val && !tvb_memeql(tvb, offset + 1 + 2, "printer-state", 13)){
- ti = proto_tree_add_text(tree, tvb, offset,
- 1 + 2 + name_length + 2 + value_length,
- "%s: %s",
- format_text(name_val, name_length),
- val_to_str(tvb_get_ntohl(tvb, offset + 1 + 2 + name_length + 2), printer_state_vals, "Unknown Printer State"));
+ proto_item *ti;
+ guint8 bool_val;
+
+ switch (tag) {
+
+ case TAG_BOOLEAN:
+ if (value_length != 1) {
+ ti = proto_tree_add_text(tree, tvb, offset,
+ 1 + 2 + name_length + 2 + value_length,
+ "%s: Invalid boolean (length is %u, should be 1)",
+ tvb_format_text(tvb, offset + 1 + 2, name_length),
+ value_length);
+ } else {
+ bool_val = tvb_get_guint8(tvb,
+ offset + 1 + 2 + name_length + 2);
+ ti = proto_tree_add_text(tree, tvb, offset,
+ 1 + 2 + name_length + 2 + value_length,
+ "%s: %s",
+ tvb_format_text(tvb, offset + 1 + 2, name_length),
+ val_to_str(bool_val, bool_vals, "Unknown (0x%02x)"));
+ }
+ break;
+
+ case TAG_INTEGER:
+ case TAG_ENUM:
+ if (value_length != 4) {
+ ti = proto_tree_add_text(tree, tvb, offset,
+ 1 + 2 + name_length + 2 + value_length,
+ "%s: Invalid integer (length is %u, should be 4)",
+ tvb_format_text(tvb, offset + 1 + 2, name_length),
+ value_length);
+ } else {
+ const char *name_val;
+ /* Some fields in IPP are really unix timestamps but IPP
+ * transports these as 4 byte integers.
+ * A simple heuristic to make the display of these fields
+ * more human readable is to assume that if the field name
+ * ends in '-time' then assume they are timestamps instead
+ * of integers.
+ */
+ name_val=tvb_get_ptr(tvb, offset + 1 + 2, name_length);
+ if ((name_length > 5) && name_val && !tvb_memeql(tvb, offset + 1 + 2 + name_length - 5, "-time", 5)) {
+ ti = proto_tree_add_text(tree, tvb, offset,
+ 1 + 2 + name_length + 2 + value_length,
+ "%s: %s",
+ format_text(name_val, name_length),
+ abs_time_secs_to_str(tvb_get_ntohl(tvb, offset + 1 + 2 + name_length + 2),
+ ABSOLUTE_TIME_LOCAL,
+ TRUE));
+
}
- else if((name_length > 5) && name_val && !tvb_memeql(tvb, offset + 1 + 2, "job-state", 9)){
- ti = proto_tree_add_text(tree, tvb, offset,
- 1 + 2 + name_length + 2 + value_length,
- "%s: %s",
- format_text(name_val, name_length),
- val_to_str(tvb_get_ntohl(tvb, offset + 1 + 2 + name_length + 2), job_state_vals, "Unknown Job State"));
+ else if ((name_length > 5) && name_val && !tvb_memeql(tvb, offset + 1 + 2, "printer-state", 13)) {
+ ti = proto_tree_add_text(tree, tvb, offset,
+ 1 + 2 + name_length + 2 + value_length,
+ "%s: %s",
+ format_text(name_val, name_length),
+ val_to_str(tvb_get_ntohl(tvb, offset + 1 + 2 + name_length + 2),
+ printer_state_vals,
+ "Unknown Printer State"));
+ }
+ else if ((name_length > 5) && name_val && !tvb_memeql(tvb, offset + 1 + 2, "job-state", 9)) {
+ ti = proto_tree_add_text(tree, tvb, offset,
+ 1 + 2 + name_length + 2 + value_length,
+ "%s: %s",
+ format_text(name_val, name_length),
+ val_to_str(tvb_get_ntohl(tvb, offset + 1 + 2 + name_length + 2),
+ job_state_vals,
+ "Unknown Job State"));
}
else {
- ti = proto_tree_add_text(tree, tvb, offset,
- 1 + 2 + name_length + 2 + value_length,
- "%s: %u",
- format_text(name_val, name_length),
- tvb_get_ntohl(tvb, offset + 1 + 2 + name_length + 2));
- }
- }
- break;
-
- default:
- ti = proto_tree_add_text(tree, tvb, offset,
- 1 + 2 + name_length + 2 + value_length,
- "%s: Unknown integer type 0x%02x",
- tvb_format_text(tvb, offset + 1 + 2, name_length),
- tag);
- break;
- }
- return proto_item_add_subtree(ti, ett_ipp_attr);
+ ti = proto_tree_add_text(tree, tvb, offset,
+ 1 + 2 + name_length + 2 + value_length,
+ "%s: %u",
+ format_text(name_val, name_length),
+ tvb_get_ntohl(tvb, offset + 1 + 2 + name_length + 2));
+ }
+ }
+ break;
+
+ default:
+ ti = proto_tree_add_text(tree, tvb, offset,
+ 1 + 2 + name_length + 2 + value_length,
+ "%s: Unknown integer type 0x%02x",
+ tvb_format_text(tvb, offset + 1 + 2, name_length),
+ tag);
+ break;
+ }
+ return proto_item_add_subtree(ti, ett_ipp_attr);
}
static void
add_integer_value(const gchar *tag_desc, proto_tree *tree, tvbuff_t *tvb,
- int offset, int name_length, int value_length, guint8 tag)
+ int offset, int name_length, int value_length, guint8 tag)
{
- guint8 bool_val;
- char *name_val;
-
- offset = add_value_head(tag_desc, tree, tvb, offset, name_length,
- value_length, &name_val);
-
- switch (tag) {
-
- case TAG_BOOLEAN:
- if (value_length == 1) {
- bool_val = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(tree, tvb, offset, value_length,
- "Value: %s",
- val_to_str(bool_val, bool_vals, "Unknown (0x%02x)"));
- }
- break;
-
- case TAG_INTEGER:
- case TAG_ENUM:
- /* Some fields in IPP are really unix timestamps but IPP
- * transports these as 4 byte integers.
- * A simple heuristic to make the display of these fields
- * more human readable is to assume that if the field name
- * ends in '-time' then assume they are timestamps instead
- * of integers.
- */
- if (value_length == 4) {
- if( (name_length > 5) && name_val && !strcmp(name_val+name_length-5, "-time")){
- nstime_t ns;
-
- ns.secs=tvb_get_ntohl(tvb, offset);
- ns.nsecs=0;
- proto_tree_add_time(tree, hf_ipp_timestamp, tvb, offset, 4, &ns);
- }
- else if((name_length > 5) && name_val && !strcmp(name_val, "printer-state")){
+ guint8 bool_val;
+ char *name_val;
+
+ offset = add_value_head(tag_desc, tree, tvb, offset, name_length,
+ value_length, &name_val);
+
+ switch (tag) {
+
+ case TAG_BOOLEAN:
+ if (value_length == 1) {
+ bool_val = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(tree, tvb, offset, value_length,
+ "Value: %s",
+ val_to_str(bool_val, bool_vals, "Unknown (0x%02x)"));
+ }
+ break;
+
+ case TAG_INTEGER:
+ case TAG_ENUM:
+ /* Some fields in IPP are really unix timestamps but IPP
+ * transports these as 4 byte integers.
+ * A simple heuristic to make the display of these fields
+ * more human readable is to assume that if the field name
+ * ends in '-time' then assume they are timestamps instead
+ * of integers.
+ */
+ if (value_length == 4) {
+ if ((name_length > 5) && name_val && !strcmp(name_val+name_length-5, "-time")) {
+ nstime_t ns;
+
+ ns.secs=tvb_get_ntohl(tvb, offset);
+ ns.nsecs=0;
+ proto_tree_add_time(tree, hf_ipp_timestamp, tvb, offset, 4, &ns);
+ }
+ else if ((name_length > 5) && name_val && !strcmp(name_val, "printer-state")) {
guint32 printer_state_reason;
printer_state_reason = tvb_get_ntohl(tvb, offset);
- proto_tree_add_text(tree, tvb, offset, value_length, "Value: %s (%u)", val_to_str(printer_state_reason, printer_state_vals, "Unknown Printer State (0x%02x)"), printer_state_reason);
+ proto_tree_add_text(tree, tvb, offset, value_length,
+ "Value: %s (%u)",
+ val_to_str(printer_state_reason, printer_state_vals,
+ "Unknown Printer State (0x%02x)"), printer_state_reason);
}
- else if((name_length > 5) && name_val && !strcmp(name_val, "job-state")){
+ else if ((name_length > 5) && name_val && !strcmp(name_val, "job-state")) {
guint32 job_state_reason;
job_state_reason = tvb_get_ntohl(tvb, offset);
- proto_tree_add_text(tree, tvb, offset, value_length, "Value: %s (%u)", val_to_str(job_state_reason, job_state_vals, "Unknown Job State (0x%02x)"), job_state_reason);
+ proto_tree_add_text(tree, tvb, offset, value_length,
+ "Value: %s (%u)",
+ val_to_str(job_state_reason, job_state_vals,
+ "Unknown Job State (0x%02x)"), job_state_reason);
}
else{
- proto_tree_add_text(tree, tvb, offset, value_length,
- "Value: %u", tvb_get_ntohl(tvb, offset));
- }
- }
- break;
- }
+ proto_tree_add_text(tree, tvb, offset, value_length,
+ "Value: %u", tvb_get_ntohl(tvb, offset));
+ }
+ }
+ break;
+ }
}
static proto_tree *
add_octetstring_tree(proto_tree *tree, tvbuff_t *tvb, int offset,
- int name_length, int value_length)
+ int name_length, int value_length)
{
- proto_item *ti;
-
- ti = proto_tree_add_text(tree, tvb, offset,
- 1 + 2 + name_length + 2 + value_length,
- "%s: %s",
- tvb_format_text(tvb, offset + 1 + 2, name_length),
- tvb_bytes_to_str(tvb, offset + 1 + 2 + name_length + 2, value_length));
- return proto_item_add_subtree(ti, ett_ipp_attr);
+ proto_item *ti;
+
+ ti = proto_tree_add_text(tree, tvb, offset,
+ 1 + 2 + name_length + 2 + value_length,
+ "%s: %s",
+ tvb_format_text(tvb, offset + 1 + 2, name_length),
+ tvb_bytes_to_str(tvb, offset + 1 + 2 + name_length + 2, value_length));
+ return proto_item_add_subtree(ti, ett_ipp_attr);
}
static void
add_octetstring_value(const gchar *tag_desc, proto_tree *tree, tvbuff_t *tvb,
- int offset, int name_length, int value_length)
+ int offset, int name_length, int value_length)
{
- offset = add_value_head(tag_desc, tree, tvb, offset, name_length,
- value_length, NULL);
- proto_tree_add_text(tree, tvb, offset, value_length,
- "Value: %s", tvb_bytes_to_str(tvb, offset, value_length));
+ offset = add_value_head(tag_desc, tree, tvb, offset, name_length,
+ value_length, NULL);
+ proto_tree_add_text(tree, tvb, offset, value_length,
+ "Value: %s", tvb_bytes_to_str(tvb, offset, value_length));
}
static proto_tree *
add_charstring_tree(proto_tree *tree, tvbuff_t *tvb, int offset,
- int name_length, int value_length)
+ int name_length, int value_length)
{
- proto_item *ti;
-
- ti = proto_tree_add_text(tree, tvb, offset,
- 1 + 2 + name_length + 2 + value_length,
- "%s: %s",
- tvb_format_text(tvb, offset + 1 + 2, name_length),
- tvb_format_text(tvb, offset + 1 + 2 + name_length + 2, value_length));
- return proto_item_add_subtree(ti, ett_ipp_attr);
+ proto_item *ti;
+
+ ti = proto_tree_add_text(tree, tvb, offset,
+ 1 + 2 + name_length + 2 + value_length,
+ "%s: %s",
+ tvb_format_text(tvb, offset + 1 + 2, name_length),
+ tvb_format_text(tvb, offset + 1 + 2 + name_length + 2, value_length));
+ return proto_item_add_subtree(ti, ett_ipp_attr);
}
static void
add_charstring_value(const gchar *tag_desc, proto_tree *tree, tvbuff_t *tvb,
- int offset, int name_length, int value_length)
+ int offset, int name_length, int value_length)
{
- offset = add_value_head(tag_desc, tree, tvb, offset, name_length,
- value_length, NULL);
- proto_tree_add_text(tree, tvb, offset, value_length,
- "Value: %s", tvb_format_text(tvb, offset, value_length));
+ offset = add_value_head(tag_desc, tree, tvb, offset, name_length,
+ value_length, NULL);
+ proto_tree_add_text(tree, tvb, offset, value_length,
+ "Value: %s", tvb_format_text(tvb, offset, value_length));
}
/* If name_val is !NULL then return the pointer to an emem allocated string in
@@ -658,59 +667,59 @@ add_charstring_value(const gchar *tag_desc, proto_tree *tree, tvbuff_t *tvb,
*/
static int
add_value_head(const gchar *tag_desc, proto_tree *tree, tvbuff_t *tvb,
- int offset, int name_length, int value_length, char **name_val)
+ int offset, int name_length, int value_length, char **name_val)
{
- proto_tree_add_text(tree, tvb, offset, 1, "Tag: %s", tag_desc);
- offset += 1;
- proto_tree_add_text(tree, tvb, offset, 2, "Name length: %u",
- name_length);
- offset += 2;
- if (name_length != 0) {
- guint8 *nv;
- nv = tvb_get_ephemeral_string(tvb, offset, name_length);
- proto_tree_add_text(tree, tvb, offset, name_length,
- "Name: %s", format_text(nv, name_length));
- if(name_val){
- *name_val=nv;
- }
- }
- offset += name_length;
- proto_tree_add_text(tree, tvb, offset, 2, "Value length: %u",
- value_length);
- offset += 2;
- return offset;
+ proto_tree_add_text(tree, tvb, offset, 1, "Tag: %s", tag_desc);
+ offset += 1;
+ proto_tree_add_text(tree, tvb, offset, 2, "Name length: %u",
+ name_length);
+ offset += 2;
+ if (name_length != 0) {
+ guint8 *nv;
+ nv = tvb_get_ephemeral_string(tvb, offset, name_length);
+ proto_tree_add_text(tree, tvb, offset, name_length,
+ "Name: %s", format_text(nv, name_length));
+ if (name_val) {
+ *name_val=nv;
+ }
+ }
+ offset += name_length;
+ proto_tree_add_text(tree, tvb, offset, 2, "Value length: %u",
+ value_length);
+ offset += 2;
+ return offset;
}
void
proto_register_ipp(void)
{
- static hf_register_info hf[] = {
- { &hf_ipp_timestamp,
- { "Time", "ipp.timestamp", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
- NULL, 0, NULL, HFILL }},
- };
- static gint *ett[] = {
- &ett_ipp,
- &ett_ipp_as,
- &ett_ipp_attr,
- };
-
- proto_ipp = proto_register_protocol("Internet Printing Protocol",
- "IPP", "ipp");
- proto_register_field_array(proto_ipp, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ static hf_register_info hf[] = {
+ { &hf_ipp_timestamp,
+ { "Time", "ipp.timestamp", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
+ NULL, 0, NULL, HFILL }},
+ };
+ static gint *ett[] = {
+ &ett_ipp,
+ &ett_ipp_as,
+ &ett_ipp_attr,
+ };
+
+ proto_ipp = proto_register_protocol("Internet Printing Protocol",
+ "IPP", "ipp");
+ proto_register_field_array(proto_ipp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_ipp(void)
{
- dissector_handle_t ipp_handle;
-
- /*
- * Register ourselves as running atop HTTP and using port 631.
- */
- ipp_handle = create_dissector_handle(dissect_ipp, proto_ipp);
- http_dissector_add(631, ipp_handle);
- dissector_add_string("media_type", "application/ipp", ipp_handle);
- data_handle = find_dissector("data");
+ dissector_handle_t ipp_handle;
+
+ /*
+ * Register ourselves as running atop HTTP and using port 631.
+ */
+ ipp_handle = create_dissector_handle(dissect_ipp, proto_ipp);
+ http_dissector_add(631, ipp_handle);
+ dissector_add_string("media_type", "application/ipp", ipp_handle);
+ data_handle = find_dissector("data");
}
diff --git a/epan/dissectors/packet-ipsec.c b/epan/dissectors/packet-ipsec.c
index 56f80ab4d2..555cb11e5e 100644
--- a/epan/dissectors/packet-ipsec.c
+++ b/epan/dissectors/packet-ipsec.c
@@ -74,7 +74,6 @@ ADD: Additional generic (non-checked) ICV length of 128, 192 and 256.
#endif
#include <stdio.h>
-#include <stdlib.h>
#include <string.h>
#include <glib.h>
diff --git a/epan/dissectors/packet-ipv6.c b/epan/dissectors/packet-ipv6.c
index 300ca1b697..637fdea5bc 100644
--- a/epan/dissectors/packet-ipv6.c
+++ b/epan/dissectors/packet-ipv6.c
@@ -50,6 +50,7 @@
#include <epan/tap.h>
#include "packet-ipsec.h"
#include "packet-ipv6.h"
+#include "packet-ip.h"
#ifdef HAVE_GEOIP_V6
#include "GeoIP.h"
@@ -129,8 +130,35 @@ static int hf_ipv6_6to4_sla_id = -1;
static int hf_ipv6_teredo_server_ipv4 = -1;
static int hf_ipv6_teredo_port = -1;
static int hf_ipv6_teredo_client_ipv4 = -1;
+static int hf_ipv6_opt = -1;
+static int hf_ipv6_opt_type = -1;
+static int hf_ipv6_opt_length = -1;
static int hf_ipv6_opt_pad1 = -1;
static int hf_ipv6_opt_padn = -1;
+static int hf_ipv6_opt_tel = -1;
+static int hf_ipv6_opt_rtalert = -1;
+static int hf_ipv6_opt_jumbo = -1;
+static int hf_ipv6_opt_calipso_doi = -1;
+static int hf_ipv6_opt_calipso_cmpt_length = -1;
+static int hf_ipv6_opt_calipso_sens_level = -1;
+static int hf_ipv6_opt_calipso_checksum = -1;
+static int hf_ipv6_opt_calipso_cmpt_bitmap = -1;
+static int hf_ipv6_opt_qs_func = -1;
+static int hf_ipv6_opt_qs_rate = -1;
+static int hf_ipv6_opt_qs_ttl = -1;
+static int hf_ipv6_opt_qs_ttl_diff = -1;
+static int hf_ipv6_opt_qs_unused = -1;
+static int hf_ipv6_opt_qs_nonce = -1;
+static int hf_ipv6_opt_qs_reserved = -1;
+static int hf_ipv6_opt_rpl_flag = -1;
+static int hf_ipv6_opt_rpl_flag_o = -1;
+static int hf_ipv6_opt_rpl_flag_r = -1;
+static int hf_ipv6_opt_rpl_flag_f = -1;
+static int hf_ipv6_opt_rpl_flag_rsv = -1;
+static int hf_ipv6_opt_rpl_instance_id = -1;
+static int hf_ipv6_opt_rpl_senderrank = -1;
+static int hf_ipv6_opt_experimental = -1;
+static int hf_ipv6_opt_unknown = -1;
static int hf_ipv6_dst_opt = -1;
static int hf_ipv6_hop_opt = -1;
static int hf_ipv6_unk_hdr = -1;
@@ -138,7 +166,10 @@ static int hf_ipv6_routing_hdr_opt = -1;
static int hf_ipv6_routing_hdr_type = -1;
static int hf_ipv6_routing_hdr_left = -1;
static int hf_ipv6_routing_hdr_addr = -1;
+static int hf_ipv6_frag_nxt = -1;
+static int hf_ipv6_frag_reserved = -1;
static int hf_ipv6_frag_offset = -1;
+static int hf_ipv6_frag_reserved_bits = -1;
static int hf_ipv6_frag_more = -1;
static int hf_ipv6_frag_id = -1;
static int hf_ipv6_fragments = -1;
@@ -152,8 +183,6 @@ static int hf_ipv6_fragment_count = -1;
static int hf_ipv6_reassembled_in = -1;
static int hf_ipv6_reassembled_length = -1;
-static int hf_ipv6_mipv6_type = -1;
-static int hf_ipv6_mipv6_length = -1;
static int hf_ipv6_mipv6_home_address = -1;
static int hf_ipv6_routing_hdr_rpl_cmprI = -1;
@@ -228,6 +257,8 @@ static int hf_geoip_dst_lon = -1;
#endif /* HAVE_GEOIP_V6 */
static gint ett_ipv6 = -1;
+static gint ett_ipv6_opt = -1;
+static gint ett_ipv6_opt_flag = -1;
static gint ett_ipv6_version = -1;
static gint ett_ipv6_shim6 = -1;
static gint ett_ipv6_shim6_option = -1;
@@ -279,6 +310,9 @@ static gboolean ipv6_summary_in_tree = TRUE;
static gboolean ipv6_use_geoip = TRUE;
#endif /* HAVE_GEOIP_V6 */
+/* Perform strict RFC adherence checking */
+static gboolean g_ipv6_rpl_srh_strict_rfc_checking = FALSE;
+
#ifndef offsetof
#define offsetof(type, member) ((size_t)(&((type *)0)->member))
#endif
@@ -289,6 +323,30 @@ static gboolean ipv6_use_geoip = TRUE;
static GHashTable *ipv6_fragment_table = NULL;
static GHashTable *ipv6_reassembled_table = NULL;
+/* http://www.iana.org/assignments/icmpv6-parameters (last updated 2012-12-22) */
+static const value_string ipv6_opt_vals[] = {
+ { IP6OPT_PAD1, "Pad1" },
+ { IP6OPT_PADN, "PadN" },
+ { IP6OPT_TEL, "Tunnel Encapsulation Limit" },
+ { IP6OPT_RTALERT, "Router Alert" },
+ { IP6OPT_CALIPSO, "Calipso" },
+ { IP6OPT_QUICKSTART, "Quick Start" },
+ { IP6OPT_ENDI, "Endpoint Identification" },
+ { IP6OPT_EXP_1E, "Experimental (0x1E)" },
+ { IP6OPT_EXP_3E, "Experimental (0x3E)" },
+ { IP6OPT_EXP_5E, "Experimental (0x5E)" },
+ { IP6OPT_RPL, "RPL Option" },
+ { IP6OPT_EXP_7E, "Experimental (0x7E)" },
+ { IP6OPT_EXP_9E, "Experimental (0x9E)" },
+ { IP6OPT_EXP_BE, "Experimental (0xBE)" },
+ { IP6OPT_JUMBO, "Jumbo" },
+ { IP6OPT_HOME_ADDRESS, "Home Address" },
+ { IP6OPT_EXP_DE, "Experimental (0xDE)" },
+ { IP6OPT_EXP_FE, "Experimental (0xFE)" },
+ { 0, NULL }
+};
+
+
void
capture_ipv6(const guchar *pd, int offset, int len, packet_counts *ld)
{
@@ -392,148 +450,106 @@ again:
#ifdef HAVE_GEOIP_V6
static void
-add_geoip_info(proto_tree *tree, tvbuff_t *tvb, gint offset, struct e_in6_addr src, struct e_in6_addr dst)
+add_geoip_info_entry(proto_tree *geoip_info_item, tvbuff_t *tvb, gint offset, const struct e_in6_addr *ip, int isdst)
{
- guint dbnum, num_dbs;
- int geoip_hf, geoip_src_hf, geoip_dst_hf;
- const char *geoip_src_str, *geoip_dst_str;
- proto_item *geoip_info_item;
proto_tree *geoip_info_tree;
- proto_item *item;
- guint item_cnt;
- num_dbs = geoip_db_num_dbs();
- if (num_dbs < 1) return;
+ guint num_dbs = geoip_db_num_dbs();
+ guint item_cnt = 0;
+ guint dbnum;
- geoip_info_item = proto_tree_add_text(tree, tvb, offset + IP6H_SRC, 16, "Source GeoIP: ");
geoip_info_tree = proto_item_add_subtree(geoip_info_item, ett_geoip_info);
- PROTO_ITEM_SET_GENERATED(geoip_info_item);
- item_cnt = 0;
for (dbnum = 0; dbnum < num_dbs; dbnum++) {
- geoip_src_str = geoip_db_lookup_ipv6(dbnum, src, NULL);
+ const char *geoip_str = geoip_db_lookup_ipv6(dbnum, *ip, NULL);
+ int db_type = geoip_db_type(dbnum);
+
+ int geoip_hf, geoip_local_hf;
- switch (geoip_db_type(dbnum)) {
+ switch (db_type) {
case GEOIP_COUNTRY_EDITION_V6:
geoip_hf = hf_geoip_country;
- geoip_src_hf = hf_geoip_src_country;
+ geoip_local_hf = (isdst) ? hf_geoip_dst_country : hf_geoip_src_country;
break;
#if NUM_DB_TYPES > 31
case GEOIP_CITY_EDITION_REV0_V6:
- geoip_hf = hf_geoip_city;
- geoip_src_hf = hf_geoip_src_city;
- break;
case GEOIP_CITY_EDITION_REV1_V6:
geoip_hf = hf_geoip_city;
- geoip_src_hf = hf_geoip_src_city;
+ geoip_local_hf = (isdst) ? hf_geoip_dst_city : hf_geoip_src_city;
break;
case GEOIP_ORG_EDITION_V6:
geoip_hf = hf_geoip_org;
- geoip_src_hf = hf_geoip_src_org;
+ geoip_local_hf = (isdst) ? hf_geoip_dst_org : hf_geoip_src_org;
break;
case GEOIP_ISP_EDITION_V6:
geoip_hf = hf_geoip_isp;
- geoip_src_hf = hf_geoip_src_isp;
+ geoip_local_hf = (isdst) ? hf_geoip_dst_isp : hf_geoip_src_isp;
break;
case GEOIP_ASNUM_EDITION_V6:
geoip_hf = hf_geoip_asnum;
- geoip_src_hf = hf_geoip_src_asnum;
+ geoip_local_hf = (isdst) ? hf_geoip_dst_asnum : hf_geoip_src_asnum;
break;
#endif /* DB_NUM_TYPES */
case WS_LAT_FAKE_EDITION:
geoip_hf = hf_geoip_lat;
- geoip_src_hf = hf_geoip_src_lat;
+ geoip_local_hf = (isdst) ? hf_geoip_dst_lat : hf_geoip_src_lat;
break;
case WS_LON_FAKE_EDITION:
geoip_hf = hf_geoip_lon;
- geoip_src_hf = hf_geoip_src_lon;
+ geoip_local_hf = (isdst) ? hf_geoip_dst_lon : hf_geoip_src_lon;
break;
default:
continue;
break;
}
- if (geoip_src_str) {
- item = proto_tree_add_string_format_value(geoip_info_tree, geoip_src_hf, tvb,
- offset + IP6H_SRC, 16, geoip_src_str, "%s", geoip_src_str);
- PROTO_ITEM_SET_GENERATED(item);
- item = proto_tree_add_string_format_value(geoip_info_tree, geoip_hf, tvb,
- offset + IP6H_SRC, 16, geoip_src_str, "%s", geoip_src_str);
- PROTO_ITEM_SET_GENERATED(item);
- PROTO_ITEM_SET_HIDDEN(item);
+ if (geoip_str) {
+ proto_item *item;
+ if (db_type == WS_LAT_FAKE_EDITION || db_type == WS_LON_FAKE_EDITION) {
+ /* Convert latitude, longitude to double. Fix bug #5077 */
+ item = proto_tree_add_double_format_value(geoip_info_tree, geoip_local_hf, tvb,
+ offset, 16, g_ascii_strtod(geoip_str, NULL), "%s", geoip_str);
+ PROTO_ITEM_SET_GENERATED(item);
+ item = proto_tree_add_double_format_value(geoip_info_tree, geoip_hf, tvb,
+ offset, 16, g_ascii_strtod(geoip_str, NULL), "%s", geoip_str);
+ PROTO_ITEM_SET_GENERATED(item);
+ PROTO_ITEM_SET_HIDDEN(item);
+ } else {
+ item = proto_tree_add_unicode_string(geoip_info_tree, geoip_local_hf, tvb,
+ offset, 16, geoip_str);
+ PROTO_ITEM_SET_GENERATED(item);
+ item = proto_tree_add_unicode_string(geoip_info_tree, geoip_hf, tvb,
+ offset, 16, geoip_str);
+ PROTO_ITEM_SET_GENERATED(item);
+ PROTO_ITEM_SET_HIDDEN(item);
+ }
item_cnt++;
- proto_item_append_text(geoip_info_item, "%s%s", plurality(item_cnt, "", ", "), geoip_src_str);
+ proto_item_append_text(geoip_info_item, "%s%s", plurality(item_cnt, "", ", "), geoip_str);
}
}
if (item_cnt == 0)
proto_item_append_text(geoip_info_item, "Unknown");
+}
- geoip_info_item = proto_tree_add_text(tree, tvb, offset + IP6H_DST, 16, "Destination GeoIP: ");
- geoip_info_tree = proto_item_add_subtree(geoip_info_item, ett_geoip_info);
- PROTO_ITEM_SET_GENERATED(geoip_info_item);
- item_cnt = 0;
-
- for (dbnum = 0; dbnum < num_dbs; dbnum++) {
- geoip_dst_str = geoip_db_lookup_ipv6(dbnum, dst, NULL);
-
- switch (geoip_db_type(dbnum)) {
- case GEOIP_COUNTRY_EDITION_V6:
- geoip_hf = hf_geoip_country;
- geoip_dst_hf = hf_geoip_dst_country;
- break;
-#if NUM_DB_TYPES > 31
- case GEOIP_CITY_EDITION_REV0_V6:
- geoip_hf = hf_geoip_city;
- geoip_dst_hf = hf_geoip_dst_city;
- break;
- case GEOIP_CITY_EDITION_REV1_V6:
- geoip_hf = hf_geoip_city;
- geoip_dst_hf = hf_geoip_dst_city;
- break;
- case GEOIP_ORG_EDITION_V6:
- geoip_hf = hf_geoip_org;
- geoip_dst_hf = hf_geoip_dst_org;
- break;
- case GEOIP_ISP_EDITION_V6:
- geoip_hf = hf_geoip_isp;
- geoip_dst_hf = hf_geoip_dst_isp;
- break;
- case GEOIP_ASNUM_EDITION_V6:
- geoip_hf = hf_geoip_asnum;
- geoip_dst_hf = hf_geoip_dst_asnum;
- break;
-#endif /* DB_NUM_TYPES */
- case WS_LAT_FAKE_EDITION:
- geoip_hf = hf_geoip_lat;
- geoip_dst_hf = hf_geoip_dst_lat;
- break;
- case WS_LON_FAKE_EDITION:
- geoip_hf = hf_geoip_lon;
- geoip_dst_hf = hf_geoip_dst_lon;
- break;
- default:
- continue;
- break;
- }
+static void
+add_geoip_info(proto_tree *tree, tvbuff_t *tvb, gint offset, const struct e_in6_addr *src, const struct e_in6_addr *dst)
+{
+ guint num_dbs;
+ proto_item *geoip_info_item;
- if (geoip_dst_str) {
- item = proto_tree_add_string_format_value(geoip_info_tree, geoip_dst_hf, tvb,
- offset + IP6H_DST, 16, geoip_dst_str, "%s", geoip_dst_str);
- PROTO_ITEM_SET_GENERATED(item);
- item = proto_tree_add_string_format_value(geoip_info_tree, geoip_hf, tvb,
- offset + IP6H_DST, 16, geoip_dst_str, "%s", geoip_dst_str);
- PROTO_ITEM_SET_GENERATED(item);
- PROTO_ITEM_SET_HIDDEN(item);
+ num_dbs = geoip_db_num_dbs();
+ if (num_dbs < 1)
+ return;
- item_cnt++;
- proto_item_append_text(geoip_info_item, "%s%s", plurality(item_cnt, "", ", "), geoip_dst_str);
- }
- }
+ geoip_info_item = proto_tree_add_text(tree, tvb, offset + IP6H_SRC, 16, "Source GeoIP: ");
+ PROTO_ITEM_SET_GENERATED(geoip_info_item);
+ add_geoip_info_entry(geoip_info_item, tvb, offset + IP6H_SRC, src, 0);
- if (item_cnt == 0)
- proto_item_append_text(geoip_info_item, "Unknown");
+ geoip_info_item = proto_tree_add_text(tree, tvb, offset + IP6H_DST, 16, "Destination GeoIP: ");
+ PROTO_ITEM_SET_GENERATED(geoip_info_item);
+ add_geoip_info_entry(geoip_info_item, tvb, offset + IP6H_DST, dst, 1);
}
#endif /* HAVE_GEOIP_V6 */
@@ -548,7 +564,7 @@ enum {
IPv6_RT_HEADER_SOURCE_ROUTING=0,
IPv6_RT_HEADER_NIMROD,
IPv6_RT_HEADER_MobileIP,
- IPv6_RT_HEADER_RPL=4
+ IPv6_RT_HEADER_RPL
};
/* Routing Header Types */
@@ -576,12 +592,12 @@ dissect_routing6(tvbuff_t *tvb, int offset, proto_tree *tree, packet_info *pinfo
* appropriate, regardless of whether the tree is NULL or not. */
if (1) {
/* !!! specify length */
- ti = proto_tree_add_uint_format(tree, hf_ipv6_routing_hdr_opt, tvb,
+ ti = proto_tree_add_uint_format(tree, hf_ipv6_routing_hdr_opt, tvb,
offset, len, rt.ip6r_type,
"Routing Header, Type : %s (%u)",
val_to_str(rt.ip6r_type, routing_header_type, "Unknown"),
rt.ip6r_type);
- rthdr_tree = proto_item_add_subtree(ti, ett_ipv6);
+ rthdr_tree = proto_item_add_subtree(ti, ett_ipv6);
proto_tree_add_text(rthdr_tree, tvb,
offset + offsetof(struct ip6_rthdr, ip6r_nxt), 1,
@@ -621,77 +637,159 @@ dissect_routing6(tvbuff_t *tvb, int offset, proto_tree *tree, packet_info *pinfo
}
}
if (rt.ip6r_type == IPv6_RT_HEADER_MobileIP) {
- proto_tree_add_item(rthdr_tree, hf_ipv6_mipv6_home_address, tvb,
+ proto_tree_add_item(rthdr_tree, hf_ipv6_mipv6_home_address, tvb,
offset + 8, 16, ENC_NA);
- if (seg_left)
- SET_ADDRESS(&pinfo->dst, AT_IPv6, 16, tvb_get_ptr(tvb, offset + 8, 16));
+ if (seg_left)
+ SET_ADDRESS(&pinfo->dst, AT_IPv6, 16, tvb_get_ptr(tvb, offset + 8, 16));
}
- if (rt.ip6r_type == IPv6_RT_HEADER_RPL) {
- guint8 cmprI;
- guint8 cmprE;
- guint8 pad;
- gint segments;
-
- /* IPv6 destination address used for elided bytes */
- struct e_in6_addr dstAddr;
- offset += 4;
- memcpy((guint8 *)&dstAddr, (guint8 *)pinfo->dst.data, pinfo->dst.len);
-
- proto_tree_add_item(rthdr_tree, hf_ipv6_routing_hdr_rpl_cmprI, tvb, offset, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(rthdr_tree, hf_ipv6_routing_hdr_rpl_cmprE, tvb, offset, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(rthdr_tree, hf_ipv6_routing_hdr_rpl_pad, tvb, offset, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(rthdr_tree, hf_ipv6_routing_hdr_rpl_reserved, tvb, offset, 4, ENC_BIG_ENDIAN);
-
- cmprI = tvb_get_guint8(tvb, offset) & 0xF0;
- cmprE = tvb_get_guint8(tvb, offset) & 0x0F;
- pad = tvb_get_guint8(tvb, offset + 1) & 0xF0;
-
- /* Shift bytes over */
- cmprI >>= 4;
- pad >>= 4;
-
- /* from draft-ietf-6man-rpl-routing-header-03:
- n = (((Hdr Ext Len * 8) - Pad - (16 - CmprE)) / (16 - CmprI)) + 1 */
- segments = (((rt.ip6r_len * 8) - pad - (16 - cmprE)) / (16 - cmprI)) + 1;
- ti = proto_tree_add_int(rthdr_tree, hf_ipv6_routing_hdr_rpl_segments, tvb, offset, 2, segments);
- PROTO_ITEM_SET_GENERATED(ti);
+ if (rt.ip6r_type == IPv6_RT_HEADER_RPL) {
+ guint8 cmprI;
+ guint8 cmprE;
+ guint8 pad;
+ guint32 reserved;
+ gint segments;
+
+ /* IPv6 destination address used for elided bytes */
+ struct e_in6_addr dstAddr;
+ /* IPv6 source address used for strict checking */
+ struct e_in6_addr srcAddr;
+ offset += 4;
+ memcpy((guint8 *)&dstAddr, (guint8 *)pinfo->dst.data, pinfo->dst.len);
+ memcpy((guint8 *)&srcAddr, (guint8 *)pinfo->src.data, pinfo->src.len);
- if ((segments < 0) || (segments > 136)) {
- expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR, "Calculated total segments is invalid, 0 < %d < 136 fails", segments);
- } else {
+ /* from RFC6554: Multicast addresses MUST NOT appear in the IPv6 Destination Address field */
+ if(g_ipv6_rpl_srh_strict_rfc_checking && E_IN6_IS_ADDR_MULTICAST(&dstAddr)){
+ expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_WARN, "Destination address must not be a multicast address ");
+ }
- offset += 4;
+ proto_tree_add_item(rthdr_tree, hf_ipv6_routing_hdr_rpl_cmprI, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(rthdr_tree, hf_ipv6_routing_hdr_rpl_cmprE, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(rthdr_tree, hf_ipv6_routing_hdr_rpl_pad, tvb, offset, 4, ENC_BIG_ENDIAN);
- /* We use cmprI for internal (e.g.: not last) address for how many bytes to elide, so actual bytes present = 16-CmprI */
- while(segments > 1) {
- struct e_in6_addr addr;
-
- proto_tree_add_item(rthdr_tree, hf_ipv6_routing_hdr_rpl_addr, tvb, offset, (16-cmprI), ENC_NA);
- /* Display Full Address */
- memcpy((guint8 *)&addr, (guint8 *)&dstAddr, sizeof(dstAddr));
- tvb_memcpy(tvb, (guint8 *)&addr + cmprI, offset, (16-cmprI));
- ti = proto_tree_add_ipv6(rthdr_tree, hf_ipv6_routing_hdr_rpl_fulladdr, tvb, offset, (16-cmprI), (guint8 *)&addr);
- PROTO_ITEM_SET_GENERATED(ti);
- offset += (16-cmprI);
- segments--;
+ cmprI = tvb_get_guint8(tvb, offset) & 0xF0;
+ cmprE = tvb_get_guint8(tvb, offset) & 0x0F;
+ pad = tvb_get_guint8(tvb, offset + 1) & 0xF0;
+
+ /* Shift bytes over */
+ cmprI >>= 4;
+ pad >>= 4;
+
+ /* from RFC6554: when CmprI and CmprE are both 0, Pad MUST carry a value of 0 */
+ if(g_ipv6_rpl_srh_strict_rfc_checking && (cmprI == 0 && cmprE == 0 && pad != 0)){
+ expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_WARN, "When cmprI equals 0 and cmprE equals 0, pad MUST equal 0 but instead was %d", pad);
}
- /* We use cmprE for last address for how many bytes to elide, so actual bytes present = 16-CmprE */
- if (segments == 1) {
- struct e_in6_addr addr;
-
- proto_tree_add_item(rthdr_tree, hf_ipv6_routing_hdr_rpl_addr, tvb, offset, (16-cmprI), ENC_NA);
- /* Display Full Address */
- memcpy((guint8 *)&addr, (guint8 *)&dstAddr, sizeof(dstAddr));
- tvb_memcpy(tvb, (guint8 *)&addr + cmprE, offset, (16-cmprE));
- ti = proto_tree_add_ipv6(rthdr_tree, hf_ipv6_routing_hdr_rpl_fulladdr, tvb, offset, (16-cmprE), (guint8 *)&addr);
- PROTO_ITEM_SET_GENERATED(ti);
- offset += (16-cmprE);
+ proto_tree_add_item(rthdr_tree, hf_ipv6_routing_hdr_rpl_reserved, tvb, offset, 4, ENC_BIG_ENDIAN);
+ reserved = tvb_get_bits32(tvb, ((offset + 1) * 8) + 4, 20, ENC_BIG_ENDIAN);
+
+ if(g_ipv6_rpl_srh_strict_rfc_checking && reserved != 0){
+ expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_WARN, "Reserved field must equal 0 but instead was %d", reserved);
}
- }
+ /* from RFC6554:
+ n = (((Hdr Ext Len * 8) - Pad - (16 - CmprE)) / (16 - CmprI)) + 1 */
+ segments = (((rt.ip6r_len * 8) - pad - (16 - cmprE)) / (16 - cmprI)) + 1;
+ ti = proto_tree_add_int(rthdr_tree, hf_ipv6_routing_hdr_rpl_segments, tvb, offset, 2, segments);
+ PROTO_ITEM_SET_GENERATED(ti);
- }
+ if (segments < 0) {
+ /* This error should always be reported */
+ expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR, "Calculated total segments must be greater than or equal to 0, instead was %d", segments);
+ } else {
+
+ offset += 4;
+
+ /* We use cmprI for internal (e.g.: not last) address for how many bytes to elide, so actual bytes present = 16-CmprI */
+ while(segments > 1) {
+ struct e_in6_addr addr;
+
+ proto_tree_add_item(rthdr_tree, hf_ipv6_routing_hdr_rpl_addr, tvb, offset, (16-cmprI), ENC_NA);
+ /* Display Full Address */
+ memcpy((guint8 *)&addr, (guint8 *)&dstAddr, sizeof(dstAddr));
+ tvb_memcpy(tvb, (guint8 *)&addr + cmprI, offset, (16-cmprI));
+ ti = proto_tree_add_ipv6(rthdr_tree, hf_ipv6_routing_hdr_rpl_fulladdr, tvb, offset, (16-cmprI), (guint8 *)&addr);
+ PROTO_ITEM_SET_GENERATED(ti);
+ offset += (16-cmprI);
+ segments--;
+
+ if(g_ipv6_rpl_srh_strict_rfc_checking){
+ /* from RFC6554: */
+ /* The SRH MUST NOT specify a path that visits a node more than once. */
+ /* To do this, we will just check the current 'addr' against the next addresses */
+ gint tempSegments;
+ gint tempOffset;
+ tempSegments = segments; /* Has already been decremented above */
+ tempOffset = offset; /* Has already been moved */
+ while(tempSegments > 1) {
+ struct e_in6_addr tempAddr;
+ memcpy((guint8 *)&tempAddr, (guint8 *)&dstAddr, sizeof(dstAddr));
+ tvb_memcpy(tvb, (guint8 *)&tempAddr + cmprI, tempOffset, (16-cmprI));
+ /* Compare the addresses */
+ if (memcmp(addr.bytes, tempAddr.bytes, 16) == 0) {
+ /* Found a later address that is the same */
+ expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_ERROR, "Multiple instances of the same address must not appear in the source route list");
+ break;
+ }
+ tempOffset += (16-cmprI);
+ tempSegments--;
+ }
+ if (tempSegments == 1) {
+ struct e_in6_addr tempAddr;
+
+ memcpy((guint8 *)&tempAddr, (guint8 *)&dstAddr, sizeof(dstAddr));
+ tvb_memcpy(tvb, (guint8 *)&tempAddr + cmprE, tempOffset, (16-cmprE));
+ /* Compare the addresses */
+ if (memcmp(addr.bytes, tempAddr.bytes, 16) == 0) {
+ /* Found a later address that is the same */
+ expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_ERROR, "Multiple instances of the same address must not appear in the source route list");
+ }
+ }
+ /* IPv6 Source and Destination addresses of the encapsulating datagram (MUST) not appear in the SRH*/
+ if (memcmp(addr.bytes, srcAddr.bytes, 16) == 0) {
+ expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_ERROR, "Source address must not appear in the source route list");
+ }
+
+ if (memcmp(addr.bytes, dstAddr.bytes, 16) == 0) {
+ expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_ERROR, "Destination address must not appear in the source route list");
+ }
+
+ /* Multicast addresses MUST NOT appear in the in SRH */
+ if(E_IN6_IS_ADDR_MULTICAST(&addr)){
+ expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_ERROR, "Multicast addresses must not appear in the source route list");
+ }
+ }
+ }
+
+ /* We use cmprE for last address for how many bytes to elide, so actual bytes present = 16-CmprE */
+ if (segments == 1) {
+ struct e_in6_addr addr;
+
+ proto_tree_add_item(rthdr_tree, hf_ipv6_routing_hdr_rpl_addr, tvb, offset, (16-cmprI), ENC_NA);
+ /* Display Full Address */
+ memcpy((guint8 *)&addr, (guint8 *)&dstAddr, sizeof(dstAddr));
+ tvb_memcpy(tvb, (guint8 *)&addr + cmprE, offset, (16-cmprE));
+ ti = proto_tree_add_ipv6(rthdr_tree, hf_ipv6_routing_hdr_rpl_fulladdr, tvb, offset, (16-cmprE), (guint8 *)&addr);
+ PROTO_ITEM_SET_GENERATED(ti);
+ /* offset += (16-cmprE); */
+
+ if(g_ipv6_rpl_srh_strict_rfc_checking){
+ /* IPv6 Source and Destination addresses of the encapsulating datagram (MUST) not appear in the SRH*/
+ if (memcmp(addr.bytes, srcAddr.bytes, 16) == 0) {
+ expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_ERROR, "Source address must not appear in the source route list");
+ }
+
+ if (memcmp(addr.bytes, dstAddr.bytes, 16) == 0) {
+ expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_ERROR, "Destination address must not appear in the source route list");
+ }
+
+ /* Multicast addresses MUST NOT appear in the in SRH */
+ if(E_IN6_IS_ADDR_MULTICAST(&addr)){
+ expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_ERROR, "Multicast addresses must not appear in the source route list");
+ }
+ }
+ }
+ }
+ }
}
return len;
@@ -715,174 +813,48 @@ dissect_frag6(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree,
col_add_fstr(pinfo->cinfo, COL_INFO,
"IPv6 fragment (nxt=%s (%u) off=%u id=0x%x)",
ipprotostr(frag.ip6f_nxt), frag.ip6f_nxt,
- frag.ip6f_offlg & IP6F_OFF_MASK, frag.ip6f_ident);
+ (frag.ip6f_offlg & IP6F_OFF_MASK) >> IP6F_OFF_SHIFT, frag.ip6f_ident);
}
if (tree) {
ti = proto_tree_add_text(tree, tvb, offset, len,
"Fragmentation Header");
rthdr_tree = proto_item_add_subtree(ti, ett_ipv6);
- proto_tree_add_text(rthdr_tree, tvb,
+ proto_tree_add_item(rthdr_tree, hf_ipv6_frag_nxt, tvb,
offset + offsetof(struct ip6_frag, ip6f_nxt), 1,
- "Next header: %s (%u)",
- ipprotostr(frag.ip6f_nxt), frag.ip6f_nxt);
+ ENC_BIG_ENDIAN);
-#if 0
- proto_tree_add_text(rthdr_tree, tvb,
+ proto_tree_add_item(rthdr_tree, hf_ipv6_frag_reserved, tvb,
offset + offsetof(struct ip6_frag, ip6f_reserved), 1,
- "Reserved: %u",
- frag.ip6f_reserved);
-#endif
+ ENC_BIG_ENDIAN);
proto_tree_add_item(rthdr_tree, hf_ipv6_frag_offset, tvb,
offset + offsetof(struct ip6_frag, ip6f_offlg), 2, ENC_BIG_ENDIAN);
-
+ proto_tree_add_item(rthdr_tree, hf_ipv6_frag_reserved_bits, tvb,
+ offset + offsetof(struct ip6_frag, ip6f_offlg), 2, ENC_BIG_ENDIAN);
proto_tree_add_item(rthdr_tree, hf_ipv6_frag_more, tvb,
offset + offsetof(struct ip6_frag, ip6f_offlg), 2, ENC_BIG_ENDIAN);
-
proto_tree_add_item(rthdr_tree, hf_ipv6_frag_id, tvb,
offset + offsetof(struct ip6_frag, ip6f_ident), 4, ENC_BIG_ENDIAN);
}
return len;
}
-static int
-dissect_mipv6_hoa(tvbuff_t *tvb, proto_tree *dstopt_tree, int offset, packet_info *pinfo)
-{
- int len = 0;
-
- proto_tree_add_uint_format(dstopt_tree, hf_ipv6_mipv6_type, tvb,
- offset + len, 1,
- tvb_get_guint8(tvb, offset + len),
- "Option Type: %u (0x%02x) - Home Address Option",
- tvb_get_guint8(tvb, offset + len),
- tvb_get_guint8(tvb, offset + len));
- len += 1;
-
- proto_tree_add_uint(dstopt_tree, hf_ipv6_mipv6_length, tvb, offset + len,
- 1, tvb_get_guint8(tvb, offset + len));
- len += 1;
-
- proto_tree_add_item(dstopt_tree, hf_ipv6_mipv6_home_address, tvb,
- offset + len, 16, ENC_NA);
- SET_ADDRESS(&pinfo->src, AT_IPv6, 16, tvb_get_ptr(tvb, offset + len, 16));
- len += 16;
- return len;
-}
-
static const value_string rtalertvals[] = {
{ IP6OPT_RTALERT_MLD, "MLD" },
{ IP6OPT_RTALERT_RSVP, "RSVP" },
+ { IP6OPT_RTALERT_ACTNET, "Active Network" },
{ 0, NULL }
};
-/* Like "dissect_ip_tcp_options()", but assumes the length of an option
- *doesn't* include the type and length bytes. */
-void
-dissect_ipv6_options(tvbuff_t *tvb, int offset, guint length,
- const ip_tcp_opt *opttab, int nopts, int eol,
- packet_info *pinfo, proto_tree *opt_tree)
-{
- guchar opt;
- const ip_tcp_opt *optp;
- opt_len_type len_type;
- unsigned int optlen;
- const char *name;
- char name_str[7+1+1+2+2+1+1]; /* "Unknown (0x%02x)" */
- void (*dissect)(const struct ip_tcp_opt *, tvbuff_t *,
- int, guint, packet_info *, proto_tree *);
- guint len;
-
- while (length > 0) {
- opt = tvb_get_guint8(tvb, offset);
- for (optp = &opttab[0]; optp < &opttab[nopts]; optp++) {
- if (optp->optcode == opt)
- break;
- }
- if (optp == &opttab[nopts]) {
- /* We assume that the only NO_LENGTH options are Pad1 options,
- so that we can treat unknown options as VARIABLE_LENGTH with a
- minimum of 0, and at least be able to move on to the next option
- by using the length in the option. */
- optp = NULL; /* indicate that we don't know this option */
- len_type = VARIABLE_LENGTH;
- optlen = 0;
- g_snprintf(name_str, sizeof name_str, "Unknown (0x%02x)", opt);
- name = name_str;
- dissect = NULL;
- } else {
- len_type = optp->len_type;
- optlen = optp->optlen;
- name = optp->name;
- dissect = optp->dissect;
- }
- --length; /* account for type byte */
- if (len_type != NO_LENGTH) {
- /* Option has a length. Is it in the packet? */
- if (length == 0) {
- /* Bogus - packet must at least include option code byte and
- length byte! */
- proto_tree_add_text(opt_tree, tvb, offset, 1,
- "%s (length byte past end of options)", name);
- return;
- }
- len = tvb_get_guint8(tvb, offset + 1); /* total including type, len */
- --length; /* account for length byte */
- if (len > length) {
- /* Bogus - option goes past the end of the header. */
- proto_tree_add_text(opt_tree, tvb, offset, length,
- "%s (option length = %u byte%s says option goes past end of options)",
- name, len, plurality(len, "", "s"));
- return;
- } else if (len_type == FIXED_LENGTH && len != optlen) {
- /* Bogus - option length isn't what it's supposed to be for this
- option. */
- proto_tree_add_text(opt_tree, tvb, offset, 2 + len,
- "%s (with option length = %u byte%s; should be %u)", name,
- len, plurality(len, "", "s"), optlen);
- return;
- } else if (len_type == VARIABLE_LENGTH && len < optlen) {
- /* Bogus - option length is less than what it's supposed to be for
- this option. */
- proto_tree_add_text(opt_tree, tvb, offset, 2 + len,
- "%s (with option length = %u byte%s; should be >= %u)", name,
- len, plurality(len, "", "s"), optlen);
- return;
- } else {
- if (optp == NULL) {
- proto_tree_add_text(opt_tree, tvb, offset, 2 + len, "%s (%u byte%s)",
- name, len, plurality(len, "", "s"));
- } else {
- if (dissect != NULL) {
- /* Option has a dissector. */
- (*dissect)(optp, tvb, offset, 2 + len, pinfo, opt_tree);
- } else {
- /* Option has no data, hence no dissector. */
- proto_tree_add_text(opt_tree, tvb, offset, 2 + len, "%s", name);
- }
- }
- offset += 2 + len;
- }
- length -= len;
- } else {
- proto_tree_add_text(opt_tree, tvb, offset, 1, "%s", name);
- offset += 1;
- }
- if (opt == eol)
- break;
- }
-}
-
static int
dissect_unknown_option(tvbuff_t *tvb, int offset, proto_tree *tree)
{
- struct ip6_ext ext;
int len;
proto_tree *unkopt_tree;
- proto_item *ti;
+ proto_item *ti, *ti_len;
- tvb_memcpy(tvb, (guint8 *)&ext, offset, sizeof(ext));
- len = (ext.ip6e_len + 1) << 3;
+ len = (tvb_get_guint8(tvb, offset + 1) + 1) << 3;
if (tree) {
/* !!! specify length */
@@ -890,13 +862,12 @@ dissect_unknown_option(tvbuff_t *tvb, int offset, proto_tree *tree)
unkopt_tree = proto_item_add_subtree(ti, ett_ipv6);
- proto_tree_add_text(unkopt_tree, tvb,
- offset + offsetof(struct ip6_ext, ip6e_nxt), 1,
- "Next header: %s (%u)", ipprotostr(ext.ip6e_nxt), ext.ip6e_nxt);
+ proto_tree_add_item(unkopt_tree, hf_ipv6_nxt, tvb, offset, 1, ENC_NA);
+ offset += 1;
- proto_tree_add_text(unkopt_tree, tvb,
- offset + offsetof(struct ip6_ext, ip6e_len), 1,
- "Length: %u (%d bytes)", ext.ip6e_len, len);
+ ti_len = proto_tree_add_item(unkopt_tree, hf_ipv6_opt_length, tvb, offset, 1, ENC_NA);
+ proto_item_append_text(ti_len, " (%d byte%s)", len, plurality(len, "", "s"));
+ /* offset += 1; */
}
return len;
}
@@ -904,16 +875,14 @@ dissect_unknown_option(tvbuff_t *tvb, int offset, proto_tree *tree)
static int
dissect_opts(tvbuff_t *tvb, int offset, proto_tree *tree, packet_info * pinfo, const int hf_option_item)
{
- struct ip6_ext ext;
int len;
- proto_tree *dstopt_tree;
- proto_item *ti;
- gint p;
- guint8 tmp;
- int mip_offset = 0, delta = 0;
+ int offset_end;
+ proto_tree *dstopt_tree, *opt_tree;
+ proto_item *ti, *ti_len, *ti_opt, *ti_opt_len;
+ guint8 opt_len, opt_type;
- tvb_memcpy(tvb, (guint8 *)&ext, offset, sizeof(ext));
- len = (ext.ip6e_len + 1) << 3;
+ len = (tvb_get_guint8(tvb, offset + 1) + 1) << 3;
+ offset_end = offset + len;
if (tree) {
/* !!! specify length */
@@ -921,26 +890,43 @@ dissect_opts(tvbuff_t *tvb, int offset, proto_tree *tree, packet_info * pinfo, c
dstopt_tree = proto_item_add_subtree(ti, ett_ipv6);
- proto_tree_add_text(dstopt_tree, tvb,
- offset + offsetof(struct ip6_ext, ip6e_nxt), 1,
- "Next header: %s (%u)", ipprotostr(ext.ip6e_nxt), ext.ip6e_nxt);
+ proto_tree_add_item(dstopt_tree, hf_ipv6_nxt, tvb, offset, 1, ENC_NA);
+ offset += 1;
- proto_tree_add_text(dstopt_tree, tvb,
- offset + offsetof(struct ip6_ext, ip6e_len), 1,
- "Length: %u (%d bytes)", ext.ip6e_len, len);
+ ti_len = proto_tree_add_item(dstopt_tree, hf_ipv6_opt_length, tvb, offset, 1, ENC_NA);
+ proto_item_append_text(ti_len, " (%d byte%s)", len, plurality(len, "", "s"));
+ offset += 1;
- mip_offset = offset;
- mip_offset += 2;
+ while (offset_end > offset) {
+ /* there are more options */
- p = offset + 2;
+ /* IPv6 Option */
+ ti_opt = proto_tree_add_item(dstopt_tree, hf_ipv6_opt, tvb, offset, 2, ENC_NA);
+ opt_tree = proto_item_add_subtree(ti_opt, ett_ipv6_opt);
- while (p < offset + len) {
- switch (tvb_get_guint8(tvb, p)) {
- case IP6OPT_PAD1:
- proto_tree_add_item(dstopt_tree, hf_ipv6_opt_pad1, tvb, p, 1, ENC_NA);
- p++;
- mip_offset++;
- break;
+ /* Option type */
+ proto_tree_add_item(opt_tree, hf_ipv6_opt_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ opt_type = tvb_get_guint8(tvb, offset);
+ offset += 1;
+
+ /* Add option name to option root label */
+ proto_item_append_text(ti_opt, " (%s", val_to_str(opt_type, ipv6_opt_vals, "Unknown %d"));
+
+ /* The Pad1 option is a special case, and contains no data. */
+ if (opt_type == IP6OPT_PAD1) {
+ proto_tree_add_item(opt_tree, hf_ipv6_opt_pad1, tvb, offset, 1, ENC_NA);
+ offset += 1;
+ proto_item_append_text(ti_opt, ")");
+ continue;
+ }
+
+ /* Option length */
+ ti_opt_len = proto_tree_add_item(opt_tree, hf_ipv6_opt_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+ opt_len = tvb_get_guint8(tvb, offset);
+ proto_item_set_len(ti_opt, opt_len + 2);
+ offset += 1;
+
+ switch (opt_type) {
case IP6OPT_PADN:
/* RFC 2460 states :
* "The PadN option is used to insert two or more octets of
@@ -948,62 +934,157 @@ dissect_opts(tvbuff_t *tvb, int offset, proto_tree *tree, packet_info * pinfo, c
* padding, the Opt Data Len field contains the value N-2, and
* the Option Data consists of N-2 zero-valued octets."
*/
- tmp = tvb_get_guint8(tvb, p + 1);
- proto_tree_add_uint_format(dstopt_tree, hf_ipv6_opt_padn, tvb,
- p, tmp + 2, tmp + 2,
- "PadN: %u bytes", tmp + 2);
- p += tmp + 2;
- mip_offset += tvb_get_guint8(tvb, mip_offset + 1) + 2;
+ proto_tree_add_item(opt_tree, hf_ipv6_opt_padn, tvb,
+ offset, opt_len, ENC_NA);
+ offset += opt_len;
+ break;
+ case IP6OPT_TEL:
+ if (opt_len != 1) {
+ expert_add_info_format(pinfo, ti_opt_len, PI_MALFORMED, PI_ERROR,
+ "Tunnel Encapsulation Limit: Invalid length (%u bytes)", opt_len);
+ }
+ proto_tree_add_item(opt_tree, hf_ipv6_opt_tel, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
break;
case IP6OPT_JUMBO:
- tmp = tvb_get_guint8(tvb, p + 1);
- if (tmp == 4) {
- proto_tree_add_text(dstopt_tree, tvb, p, tmp + 2,
- "Jumbo payload: %u (%u bytes)",
- tvb_get_ntohl(tvb, p + 2), tmp + 2);
- } else {
- ti = proto_tree_add_text(dstopt_tree, tvb, p, tmp + 2,
- "Jumbo payload: Invalid length (%u bytes)", tmp);
- expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR,
- "Jumbo payload: Invalid length (%u bytes)", tmp);
+ if (opt_len != 4) {
+ expert_add_info_format(pinfo, ti_opt_len, PI_MALFORMED, PI_ERROR,
+ "Jumbo payload: Invalid length (%u bytes)", opt_len);
}
- p += tmp + 2;
- mip_offset += tvb_get_guint8(tvb, mip_offset+1)+2;
+ proto_tree_add_item(opt_tree, hf_ipv6_opt_jumbo, tvb,
+ offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
break;
case IP6OPT_RTALERT:
{
- tmp = tvb_get_guint8(tvb, p + 1);
- if (tmp == 2) {
- proto_tree_add_text(dstopt_tree, tvb, p , tmp + 2,
- "Router alert: %s (%u bytes)",
- val_to_str(tvb_get_ntohs(tvb, p + 2),
- rtalertvals, "Unknown"),
- tmp + 2);
- } else {
- ti = proto_tree_add_text(dstopt_tree, tvb, p , tmp + 2,
- "Router alert: Invalid Length (%u bytes)",
- tmp + 2);
- expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR,
+ if (opt_len != 2) {
+ expert_add_info_format(pinfo, ti_opt_len, PI_MALFORMED, PI_ERROR,
"Router alert: Invalid Length (%u bytes)",
- tmp + 2);
+ opt_len + 2);
}
-
- p += tmp + 2;
- mip_offset += tvb_get_guint8(tvb, mip_offset + 1) + 2;
+ proto_tree_add_item(opt_tree, hf_ipv6_opt_rtalert, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
break;
}
case IP6OPT_HOME_ADDRESS:
- delta = dissect_mipv6_hoa(tvb, dstopt_tree, mip_offset, pinfo);
- p += delta;
- mip_offset += delta;
+ if (opt_len != 16) {
+ expert_add_info_format(pinfo, ti_opt_len, PI_MALFORMED, PI_ERROR,
+ "Home Address: Invalid length (%u bytes)", opt_len);
+ }
+ proto_tree_add_item(opt_tree, hf_ipv6_mipv6_home_address, tvb,
+ offset, 16, ENC_NA);
+ SET_ADDRESS(&pinfo->src, AT_IPv6, 16, tvb_get_ptr(tvb, offset, 16));
+ offset += 16;
+ break;
+ case IP6OPT_CALIPSO:
+ {
+ guint8 cmpt_length;
+ proto_tree_add_item(opt_tree, hf_ipv6_opt_calipso_doi, tvb,
+ offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ proto_tree_add_item(opt_tree, hf_ipv6_opt_calipso_cmpt_length, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ cmpt_length = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ proto_tree_add_item(opt_tree, hf_ipv6_opt_calipso_sens_level, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ /* Need to add Check Checksum..*/
+ proto_tree_add_item(opt_tree, hf_ipv6_opt_calipso_checksum, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(opt_tree, hf_ipv6_opt_calipso_cmpt_bitmap, tvb,
+ offset, cmpt_length, ENC_NA);
+ offset += cmpt_length;
break;
+ }
+ case IP6OPT_QUICKSTART:
+ {
+
+ guint8 command = tvb_get_guint8(tvb, offset);
+ guint8 function = command >> 4;
+ guint8 rate = command & QS_RATE_MASK;
+ guint8 ttl_diff;
+
+ proto_tree_add_item(opt_tree, hf_ipv6_opt_qs_func, tvb, offset, 1, ENC_NA);
+
+ if (function == QS_RATE_REQUEST) {
+ proto_tree_add_item(opt_tree, hf_ipv6_opt_qs_rate, tvb, offset, 1, ENC_NA);
+ offset += 1;
+ proto_tree_add_item(opt_tree, hf_ipv6_opt_qs_ttl, tvb, offset, 1, ENC_NA);
+ ttl_diff = (pinfo->ip_ttl - tvb_get_guint8(tvb, offset) % 256);
+ offset += 1;
+ ti = proto_tree_add_uint_format_value(opt_tree, hf_ipv6_opt_qs_ttl_diff,
+ tvb, offset, 1, ttl_diff,
+ "%u", ttl_diff);
+ PROTO_ITEM_SET_GENERATED(ti);
+ proto_item_append_text(ti_opt, ", %s, QS TTL %u, QS TTL diff %u",
+ val_to_str_ext(rate, &qs_rate_vals_ext, "Unknown (%u)"),
+ tvb_get_guint8(tvb, offset), ttl_diff);
+ offset += 1;
+ proto_tree_add_item(opt_tree, hf_ipv6_opt_qs_nonce, tvb, offset, 4, ENC_NA);
+ proto_tree_add_item(opt_tree, hf_ipv6_opt_qs_reserved, tvb, offset, 4, ENC_NA);
+ offset += 4;
+ } else if (function == QS_RATE_REPORT) {
+ proto_tree_add_item(opt_tree, hf_ipv6_opt_qs_rate, tvb, offset, 1, ENC_NA);
+ offset += 1;
+ proto_item_append_text(ti_opt, ", %s",
+ val_to_str_ext(rate, &qs_rate_vals_ext, "Unknown (%u)"));
+ proto_tree_add_item(opt_tree, hf_ipv6_opt_qs_unused, tvb, offset, 1, ENC_NA);
+ offset += 1;
+ proto_tree_add_item(opt_tree, hf_ipv6_opt_qs_nonce, tvb, offset, 4, ENC_NA);
+ proto_tree_add_item(opt_tree, hf_ipv6_opt_qs_reserved, tvb, offset, 4, ENC_NA);
+ offset += 4;
+ }
+
+ }
+ break;
+ case IP6OPT_RPL:
+ {
+ proto_tree *flag_tree;
+ proto_item *ti_flag;
+
+ ti_flag = proto_tree_add_item(opt_tree, hf_ipv6_opt_rpl_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ flag_tree = proto_item_add_subtree(ti_flag, ett_ipv6_opt_flag);
+ proto_tree_add_item(flag_tree, hf_ipv6_opt_rpl_flag_o, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flag_tree, hf_ipv6_opt_rpl_flag_r, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flag_tree, hf_ipv6_opt_rpl_flag_f, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flag_tree, hf_ipv6_opt_rpl_flag_rsv, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset +=1;
+
+ proto_tree_add_item(flag_tree, hf_ipv6_opt_rpl_instance_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset +=1;
+
+ proto_tree_add_item(flag_tree, hf_ipv6_opt_rpl_senderrank, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset +=2;
+
+ /* TODO: Add dissector of sub TLV */
+ }
+ break;
+ case IP6OPT_EXP_1E:
+ case IP6OPT_EXP_3E:
+ case IP6OPT_EXP_5E:
+ case IP6OPT_EXP_7E:
+ case IP6OPT_EXP_9E:
+ case IP6OPT_EXP_BE:
+ case IP6OPT_EXP_DE:
+ case IP6OPT_EXP_FE:
+ proto_tree_add_item(opt_tree, hf_ipv6_opt_experimental, tvb,
+ offset, opt_len, ENC_NA);
+ offset += opt_len;
+ break;
default:
- p = offset + len;
+ proto_tree_add_item(opt_tree, hf_ipv6_opt_unknown, tvb,
+ offset, opt_len, ENC_NA);
+ offset += opt_len;
break;
}
+ /* Close the ) to option root label */
+ proto_item_append_text(ti_opt, ")");
}
- /* decode... */
}
return len;
}
@@ -1084,29 +1165,6 @@ static const value_string shim6_protocol[] = {
{ 0, NULL }
};
-static const value_string dscp_vals[] = {
- { IPDSFIELD_DSCP_DEFAULT, "Default" },
- { IPDSFIELD_DSCP_CS1, "Class Selector 1" },
- { IPDSFIELD_DSCP_CS2, "Class Selector 2" },
- { IPDSFIELD_DSCP_CS3, "Class Selector 3" },
- { IPDSFIELD_DSCP_CS4, "Class Selector 4" },
- { IPDSFIELD_DSCP_CS5, "Class Selector 5" },
- { IPDSFIELD_DSCP_CS6, "Class Selector 6" },
- { IPDSFIELD_DSCP_CS7, "Class Selector 7" },
- { IPDSFIELD_DSCP_AF11, "Assured Forwarding 11" },
- { IPDSFIELD_DSCP_AF12, "Assured Forwarding 12" },
- { IPDSFIELD_DSCP_AF13, "Assured Forwarding 13" },
- { IPDSFIELD_DSCP_AF21, "Assured Forwarding 21" },
- { IPDSFIELD_DSCP_AF22, "Assured Forwarding 22" },
- { IPDSFIELD_DSCP_AF23, "Assured Forwarding 23" },
- { IPDSFIELD_DSCP_AF31, "Assured Forwarding 31" },
- { IPDSFIELD_DSCP_AF32, "Assured Forwarding 32" },
- { IPDSFIELD_DSCP_AF33, "Assured Forwarding 33" },
- { IPDSFIELD_DSCP_AF41, "Assured Forwarding 41" },
- { IPDSFIELD_DSCP_AF42, "Assured Forwarding 42" },
- { IPDSFIELD_DSCP_AF43, "Assured Forwarding 43" },
- { IPDSFIELD_DSCP_EF, "Expedited Forwarding" },
- { 0, NULL } };
static void
dissect_shim6_opt_loclist(proto_tree * opt_tree, tvbuff_t * tvb, gint *offset)
@@ -1650,10 +1708,10 @@ dissect_ipv6(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* !!! warning: (4-bit) version, (6-bit) DSCP, (1-bit) ECN-ECT, (1-bit) ECN-CE and (20-bit) Flow */
pi = proto_tree_add_item(ipv6_tree, hf_ipv6_version, tvb,
offset + offsetof(struct ip6_hdr, ip6_vfc), 1, ENC_BIG_ENDIAN);
- pt = proto_item_add_subtree(pi,ett_ipv6_version);
+ pt = proto_item_add_subtree(pi,ett_ipv6_version);
pi = proto_tree_add_item(pt, hf_ip_version, tvb,
- offset + offsetof(struct ip6_hdr, ip6_vfc), 1, ENC_BIG_ENDIAN);
- PROTO_ITEM_SET_GENERATED(pi);
+ offset + offsetof(struct ip6_hdr, ip6_vfc), 1, ENC_BIG_ENDIAN);
+ PROTO_ITEM_SET_GENERATED(pi);
ipv6_tc = proto_tree_add_item(ipv6_tree, hf_ipv6_class, tvb,
offset + offsetof(struct ip6_hdr, ip6_flow), 4, ENC_BIG_ENDIAN);
@@ -1662,7 +1720,6 @@ dissect_ipv6(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(ipv6_tc_tree, hf_ipv6_traffic_class_dscp, tvb,
offset + offsetof(struct ip6_hdr, ip6_flow), 4, ENC_BIG_ENDIAN);
-
proto_tree_add_item(ipv6_tc_tree, hf_ipv6_traffic_class_ect, tvb,
offset + offsetof(struct ip6_hdr, ip6_flow), 4, ENC_BIG_ENDIAN);
@@ -1683,6 +1740,8 @@ dissect_ipv6(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(ipv6_tree, hf_ipv6_hlim, tvb,
offset + offsetof(struct ip6_hdr, ip6_hlim), 1, ENC_BIG_ENDIAN);
+ /* Yes, there is not TTL in IPv6 Header... but it is the same of Hop Limit...*/
+ pinfo->ip_ttl = tvb_get_guint8(tvb, offset + offsetof(struct ip6_hdr, ip6_hlim));
/* Add the different items for the source address */
proto_tree_add_item(ipv6_tree, hf_ipv6_src, tvb,
@@ -1861,7 +1920,7 @@ dissect_ipv6(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
#ifdef HAVE_GEOIP_V6
if (tree && ipv6_use_geoip) {
- add_geoip_info(ipv6_tree, tvb, offset, ipv6.ip6_src, ipv6.ip6_dst);
+ add_geoip_info(ipv6_tree, tvb, offset, &ipv6.ip6_src, &ipv6.ip6_dst);
}
#endif
@@ -1875,7 +1934,6 @@ dissect_ipv6(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
non-final headers */
hopopts = FALSE;
routing = FALSE;
- frag = FALSE;
ah = FALSE;
shim6 = FALSE;
dstopts = FALSE;
@@ -1919,7 +1977,6 @@ again:
if (next_tvb) { /* Process post-fragment headers after reassembly... */
offset= 0;
offlg = 0;
- frag = FALSE;
tvb = next_tvb;
goto again;
}
@@ -2069,7 +2126,7 @@ proto_register_ipv6(void)
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_ipv6_nxt,
{ "Next header", "ipv6.nxt",
- FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
+ FT_UINT8, BASE_DEC | BASE_EXT_STRING, &ipproto_val_ext, 0x0, NULL, HFILL }},
{ &hf_ipv6_hlim,
{ "Hop limit", "ipv6.hlim",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
@@ -2205,11 +2262,11 @@ proto_register_ipv6(void)
NULL, HFILL }},
{ &hf_geoip_lat,
{ "Source or Destination GeoIP Latitude", "ipv6.geoip.lat",
- FT_STRING, BASE_NONE, NULL, 0x0,
+ FT_DOUBLE, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_geoip_lon,
{ "Source or Destination GeoIP Longitude", "ipv6.geoip.lon",
- FT_STRING, BASE_NONE, NULL, 0x0,
+ FT_DOUBLE, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_geoip_src_country,
{ "Source GeoIP Country", "ipv6.geoip.src_country",
@@ -2233,11 +2290,11 @@ proto_register_ipv6(void)
NULL, HFILL }},
{ &hf_geoip_src_lat,
{ "Source GeoIP Latitude", "ipv6.geoip.src_lat",
- FT_STRING, BASE_NONE, NULL, 0x0,
+ FT_DOUBLE, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_geoip_src_lon,
{ "Source GeoIP Longitude", "ipv6.geoip.src_lon",
- FT_STRING, BASE_NONE, NULL, 0x0,
+ FT_DOUBLE, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_geoip_dst_country,
{ "Destination GeoIP Country", "ipv6.geoip.dst_country",
@@ -2261,23 +2318,15 @@ proto_register_ipv6(void)
NULL, HFILL }},
{ &hf_geoip_dst_lat,
{ "Destination GeoIP Latitude", "ipv6.geoip.dst_lat",
- FT_STRING, BASE_NONE, NULL, 0x0,
+ FT_DOUBLE, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_geoip_dst_lon,
{ "Destination GeoIP Longitude", "ipv6.geoip.dst_lon",
- FT_STRING, BASE_NONE, NULL, 0x0,
+ FT_DOUBLE, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
#endif /* HAVE_GEOIP_V6 */
- { &hf_ipv6_opt_pad1,
- { "Pad1", "ipv6.opt.pad1",
- FT_NONE, BASE_NONE, NULL, 0x0,
- "Pad1 Option", HFILL }},
- { &hf_ipv6_opt_padn,
- { "PadN", "ipv6.opt.padn",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "PadN Option", HFILL }},
{ &hf_ipv6_dst_opt,
{ "Destination Option", "ipv6.dst_opt",
FT_NONE, BASE_NONE, NULL, 0x0,
@@ -2290,6 +2339,122 @@ proto_register_ipv6(void)
{ "Unknown Extension Header", "ipv6.unknown_hdr",
FT_NONE, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
+ { &hf_ipv6_opt,
+ { "IPv6 Option", "ipv6.opt",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ "Option", HFILL }},
+ { &hf_ipv6_opt_type,
+ { "Type", "ipv6.opt.type",
+ FT_UINT8, BASE_DEC, VALS(ipv6_opt_vals), 0x0,
+ "Options type", HFILL }},
+ { &hf_ipv6_opt_length,
+ { "Length", "ipv6.opt.length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Length in units of 8 octets", HFILL }},
+ { &hf_ipv6_opt_pad1,
+ { "Pad1", "ipv6.opt.pad1",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ "Pad1 Option", HFILL }},
+ { &hf_ipv6_opt_padn,
+ { "PadN", "ipv6.opt.padn",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "PadN Option", HFILL }},
+ { &hf_ipv6_opt_rtalert,
+ { "Router Alert", "ipv6.opt.router_alert",
+ FT_UINT16, BASE_DEC, VALS(rtalertvals), 0x0,
+ NULL, HFILL }},
+ { &hf_ipv6_opt_tel,
+ { "Tunnel Encapsulation Limit", "ipv6.opt.tel",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "How many further levels of encapsulation are permitted", HFILL }},
+ { &hf_ipv6_opt_jumbo,
+ { "Jumbo", "ipv6.opt.jumbo",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Length of the IPv6 packet in octets", HFILL }},
+ { &hf_ipv6_opt_calipso_doi,
+ { "CALIPSO Domain of Interpretation","ipv6.opt.calipso.doi",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_ipv6_opt_calipso_cmpt_length,
+ { "Compartment Length","ipv6.opt.calipso.cmpt.length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_ipv6_opt_calipso_sens_level,
+ { "Sensitivity Level","ipv6.opt.calipso.sens_level",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_ipv6_opt_calipso_checksum,
+ { "Checksum","ipv6.opt.calipso.checksum",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_ipv6_opt_calipso_cmpt_bitmap,
+ { "Compartment Bitmap","ipv6.opt.calipso.cmpt_bitmap",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_ipv6_opt_qs_func,
+ { "Function", "ipv6.opt.qs_func",
+ FT_UINT8, BASE_DEC, VALS(qs_func_vals), QS_FUNC_MASK,
+ NULL, HFILL }},
+ { &hf_ipv6_opt_qs_rate,
+ { "Rate", "ipv6.opt.qs_rate",
+ FT_UINT8, BASE_DEC | BASE_EXT_STRING, &qs_rate_vals_ext, QS_RATE_MASK,
+ NULL, HFILL }},
+ { &hf_ipv6_opt_qs_ttl,
+ { "QS TTL", "ipv6.opt.qs_ttl",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_ipv6_opt_qs_ttl_diff,
+ { "TTL Diff", "ipv6.opt.qs_ttl_diff",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_ipv6_opt_qs_unused,
+ { "Not Used", "ipv6.opt.qs_unused",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_ipv6_opt_qs_nonce,
+ { "QS Nonce", "ipv6.opt.qs_nonce",
+ FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFC,
+ NULL, HFILL }},
+ { &hf_ipv6_opt_qs_reserved,
+ { "Reserved", "ipv6.opt.qs_reserved",
+ FT_UINT32, BASE_HEX, NULL, 0x0003,
+ NULL, HFILL }},
+ { &hf_ipv6_opt_rpl_flag,
+ { "Flag", "ipv6.opt.rpl.flag",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_ipv6_opt_rpl_flag_o,
+ { "Down", "ipv6.opt.rpl.flag.o",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "The packet is expected to progress Up or Down", HFILL }},
+ { &hf_ipv6_opt_rpl_flag_r,
+ { "Rank Error", "ipv6.opt.rpl.flag.r",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "Indicating whether a rank error was detected", HFILL }},
+ { &hf_ipv6_opt_rpl_flag_f,
+ { "Forwarding Error", "ipv6.opt.rpl.flag.f",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ "Indicating that this node can not forward the packet further towards the destination", HFILL }},
+ { &hf_ipv6_opt_rpl_flag_rsv,
+ { "Reserved", "ipv6.opt.rpl.flag.rsv",
+ FT_UINT8, BASE_HEX, NULL, 0x1F,
+ "Reserved (Must Be Zero)", HFILL }},
+ { &hf_ipv6_opt_rpl_instance_id,
+ { "RPLInstanceID", "ipv6.opt.rpl.instance_id",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ "Indicating the DODAG instance along which the packet is sent", HFILL }},
+ { &hf_ipv6_opt_rpl_senderrank,
+ { "Sender Rank", "ipv6.opt.rpl.sender_rank",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ "Set to zero by the source and to DAGRank(rank) by a router that forwards inside the RPL network", HFILL }},
+ { &hf_ipv6_opt_experimental,
+ { "Experimental Option","ipv6.opt.experimental",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_ipv6_opt_unknown,
+ { "Unknown Option Payload","ipv6.opt.unknown",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_ipv6_routing_hdr_opt,
{ "Routing Header, Type","ipv6.routing_hdr",
FT_UINT8, BASE_DEC, NULL, 0x0,
@@ -2306,10 +2471,22 @@ proto_register_ipv6(void)
{ "Address", "ipv6.routing_hdr.addr",
FT_IPv6, BASE_NONE, NULL, 0x0,
"Routing Header Address", HFILL }},
+ { &hf_ipv6_frag_nxt,
+ { "Next header", "ipv6.fragment.nxt",
+ FT_UINT16, BASE_DEC | BASE_EXT_STRING, &ipproto_val_ext, 0x0,
+ "Fragment next header", HFILL }},
+ { &hf_ipv6_frag_reserved,
+ { "Reserved octet", "ipv6.fragment.reserved_octet",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ "Should always be 0", HFILL }},
{ &hf_ipv6_frag_offset,
{ "Offset", "ipv6.fragment.offset",
FT_UINT16, BASE_DEC_HEX, NULL, IP6F_OFF_MASK,
"Fragment Offset", HFILL }},
+ { &hf_ipv6_frag_reserved_bits,
+ { "Reserved bits", "ipv6.fragment.reserved_bits",
+ FT_UINT16, BASE_DEC_HEX, NULL, IP6F_RESERVED_MASK,
+ NULL, HFILL }},
{ &hf_ipv6_frag_more,
{ "More Fragment", "ipv6.fragment.more",
FT_BOOLEAN, 16, TFS(&tfs_yes_no), IP6F_MORE_FRAG,
@@ -2405,14 +2582,6 @@ proto_register_ipv6(void)
"Uncompressed IPv6 Address", HFILL }},
/* Mobile IPv6 */
- { &hf_ipv6_mipv6_type,
- { "Option Type", "ipv6.mipv6_type",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
- { &hf_ipv6_mipv6_length,
- { "Option Length", "ipv6.mipv6_length",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
{ &hf_ipv6_mipv6_home_address,
{ "Home Address", "ipv6.mipv6_home_address",
FT_IPv6, BASE_NONE, NULL, 0x0,
@@ -2596,7 +2765,7 @@ proto_register_ipv6(void)
{ &hf_ipv6_traffic_class_dscp,
{ "Differentiated Services Field", "ipv6.traffic_class.dscp",
- FT_UINT32, BASE_HEX, VALS(dscp_vals), 0x0FC00000, NULL, HFILL }},
+ FT_UINT32, BASE_HEX, &dscp_vals_ext, 0x0FC00000, NULL, HFILL }},
{ &hf_ipv6_traffic_class_ect,
{ "ECN-Capable Transport (ECT)", "ipv6.traffic_class.ect",
@@ -2608,6 +2777,8 @@ proto_register_ipv6(void)
};
static gint *ett[] = {
&ett_ipv6,
+ &ett_ipv6_opt,
+ &ett_ipv6_opt_flag,
&ett_ipv6_version,
&ett_ipv6_shim6,
&ett_ipv6_shim6_option,
@@ -2649,6 +2820,12 @@ proto_register_ipv6(void)
&ipv6_use_geoip);
#endif /* HAVE_GEOIP_V6 */
+ /* RPL Strict Header Checking */
+ prefs_register_bool_preference(ipv6_module, "perform_strict_rpl_srh_rfc_checking",
+ "Perform strict checking for adherence to the RFC for RPL Source Routing Headers (RFC 6554)",
+ "Whether to check that all RPL Source Routing Headers adhere to RFC 6554",
+ &g_ipv6_rpl_srh_strict_rfc_checking);
+
register_dissector("ipv6", dissect_ipv6, proto_ipv6);
register_init_routine(ipv6_reassemble_init);
ipv6_tap = register_tap("ipv6");
diff --git a/epan/dissectors/packet-ipv6.h b/epan/dissectors/packet-ipv6.h
index df40a46ba3..8dbd9c38c4 100644
--- a/epan/dissectors/packet-ipv6.h
+++ b/epan/dissectors/packet-ipv6.h
@@ -78,44 +78,31 @@ struct ip6_ext {
guchar ip6e_len;
};
-/* Hop-by-Hop options header */
-/* XXX should we pad it to force alignment on an 8-byte boundary? */
-struct ip6_hbh {
- guint8 ip6h_nxt; /* next header */
- guint8 ip6h_len; /* length in units of 8 octets */
- /* followed by options */
-};
-
-/* Destination options header */
-/* XXX should we pad it to force alignment on an 8-byte boundary? */
-struct ip6_dest {
- guint8 ip6d_nxt; /* next header */
- guint8 ip6d_len; /* length in units of 8 octets */
- /* followed by options */
-};
/* Option types and related macros */
-#define IP6OPT_PAD1 0x00 /* 00 0 00000 */
-#define IP6OPT_PADN 0x01 /* 00 0 00001 */
-#define IP6OPT_JUMBO 0xC2 /* 11 0 00010 = 194 */
-#define IP6OPT_JUMBO_LEN 6
+#define IP6OPT_PAD1 0x00 /* 00 0 00000 */
+#define IP6OPT_PADN 0x01 /* 00 0 00001 */
+#define IP6OPT_TEL 0x04 /* 00 0 00100 */
#define IP6OPT_RTALERT 0x05 /* 00 0 00101 */
+#define IP6OPT_CALIPSO 0x07 /* 00 0 00111 */
+#define IP6OPT_QUICKSTART 0x26 /* 00 1 00110 */
+#define IP6OPT_ENDI 0x8A /* 10 0 01010 */
+#define IP6OPT_EXP_1E 0x1E /* 00 0 11110 */
+#define IP6OPT_EXP_3E 0x3E /* 00 1 11110 */
+#define IP6OPT_EXP_5E 0x5E /* 01 0 11110 */
+#define IP6OPT_RPL 0x63 /* 01 1 00011 */
+#define IP6OPT_EXP_7E 0x7E /* 01 1 11110 */
+#define IP6OPT_EXP_9E 0x9E /* 10 0 11110 */
+#define IP6OPT_EXP_BE 0xBE /* 10 1 11110 */
+#define IP6OPT_JUMBO 0xC2 /* 11 0 00010 = 194 */
+#define IP6OPT_HOME_ADDRESS 0xC9 /* 11 0 01001 */
+#define IP6OPT_EXP_DE 0xDE /* 11 0 11110 */
+#define IP6OPT_EXP_FE 0xFE /* 11 1 11110 */
-#define IP6OPT_RTALERT_LEN 4
-#define IP6OPT_RTALERT_MLD 0 /* Datagram contains MLD message */
-#define IP6OPT_RTALERT_RSVP 1 /* Datagram contains RSVP message */
-#define IP6OPT_RTALERT_ACTNET 2 /* contains an Active Networks msg */
-#define IP6OPT_MINLEN 2
-
-#define IP6OPT_HOME_ADDRESS 0xC9 /* 11 0 01001 */
-
-#define IP6OPT_TYPE(o) ((o) & 0xC0)
-#define IP6OPT_TYPE_SKIP 0x00
-#define IP6OPT_TYPE_DISCARD 0x40
-#define IP6OPT_TYPE_FORCEICMP 0x80
-#define IP6OPT_TYPE_ICMP 0xC0
+#define IP6OPT_RTALERT_MLD 0 /* Datagram contains MLD msg */
+#define IP6OPT_RTALERT_RSVP 1 /* Datagram contains RSVP msg */
+#define IP6OPT_RTALERT_ACTNET 2 /* Datagram contains ACTNET msg */
-#define IP6OPT_MUTABLE 0x20
/* Routing header */
struct ip6_rthdr {
@@ -201,6 +188,7 @@ struct ip6_shim {
};
#define IP6F_OFF_MASK 0xfff8 /* mask out offset from _offlg */
+#define IP6F_OFF_SHIFT 3 /* right-shift offset by this many bits */
#define IP6F_RESERVED_MASK 0x0006 /* reserved bits in ip6f_offlg */
#define IP6F_MORE_FRAG 0x0001 /* more-fragments flag */
diff --git a/epan/dissectors/packet-irc.c b/epan/dissectors/packet-irc.c
index 7b96e589ad..cf6efefd53 100644
--- a/epan/dissectors/packet-irc.c
+++ b/epan/dissectors/packet-irc.c
@@ -45,28 +45,406 @@
#endif
#include <glib.h>
+#include <ctype.h>
#include <epan/packet.h>
+#include <epan/expert.h>
static int proto_irc = -1;
static int hf_irc_request = -1;
+static int hf_irc_request_prefix = -1;
+static int hf_irc_request_command = -1;
+static int hf_irc_request_command_param = -1;
+static int hf_irc_request_trailer = -1;
static int hf_irc_response = -1;
+static int hf_irc_response_prefix = -1;
+static int hf_irc_response_command = -1;
+static int hf_irc_response_num_command = -1;
+static int hf_irc_response_command_param = -1;
+static int hf_irc_response_trailer = -1;
+static int hf_irc_ctcp = -1;
static gint ett_irc = -1;
+static gint ett_irc_request = -1;
+static gint ett_irc_request_command = -1;
+static gint ett_irc_response = -1;
+static gint ett_irc_response_command = -1;
+
+/* This must be a null-terminated string */
+static const guint8 TAG_DELIMITER[] = {0x01, 0x00};
+
#define TCP_PORT_IRC 6667
#define TCP_PORT_DIRCPROXY 57000
/* good candidate for dynamic port specification */
static void
-dissect_irc_request(proto_tree *tree, tvbuff_t *tvb, int offset, int linelen)
+dissect_irc_tag_data(proto_tree *tree, proto_item *item, tvbuff_t *tvb, int offset, int datalen, packet_info *pinfo, guint8* command)
{
- proto_tree_add_item(tree, hf_irc_request, tvb, offset, linelen, ENC_ASCII|ENC_NA);
+ guchar found_start_needle = 0,
+ found_end_needle = 0;
+ gint tag_start_offset, tag_end_offset;
+
+ tag_start_offset = tvb_pbrk_guint8(tvb, offset, datalen, TAG_DELIMITER, &found_start_needle);
+ if (tag_start_offset == -1)
+ {
+ /* no tag data */
+ return;
+ }
+
+ tag_end_offset = tvb_pbrk_guint8(tvb, offset, datalen-offset, TAG_DELIMITER, &found_end_needle);
+ if (tag_end_offset == -1)
+ {
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "Missing ending tag delimited (0x01)");
+ return;
+ }
+
+ if ((strcmp(command, "NOTICE") != 0) &&
+ (strcmp(command, "PRIVMSG") != 0))
+ {
+ expert_add_info_format(pinfo, item, PI_PROTOCOL, PI_WARN, "Tag data outside of NOTICE or PRIVMSG command");
+ }
+
+ /* Placeholder to call CTCP dissector, strip out delimiter */
+ proto_tree_add_item(tree, hf_irc_ctcp, tvb, offset+1, datalen-2, ENC_ASCII|ENC_NA);
+}
+
+static void
+dissect_irc_request(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset, int linelen)
+{
+ proto_tree *request_tree, *command_tree = NULL;
+ proto_item *request_item, *command_item;
+ int start_offset = offset;
+ int end_offset = start_offset+linelen;
+ gint eop_offset = -1,
+ eoc_offset = -1,
+ eocp_offset,
+ tag_start_offset, tag_end_offset;
+ guint8* str_command;
+ guchar found_needle = 0,
+ found_tag_needle = 0;
+ gboolean first_command_param = TRUE;
+
+ request_item = proto_tree_add_item(tree, hf_irc_request, tvb, offset, linelen, ENC_ASCII|ENC_NA);
+ if (linelen <= 0)
+ return;
+
+ request_tree = proto_item_add_subtree(request_item, ett_irc_request );
+
+ /* Check if message has a prefix */
+ if (tvb_get_guint8(tvb, offset) == ':')
+ {
+ /* find the end of the prefix */
+ eop_offset = tvb_pbrk_guint8(tvb, offset+1, linelen-1, " ", &found_needle);
+ if (eop_offset == -1)
+ {
+ expert_add_info_format(pinfo, request_item, PI_MALFORMED, PI_ERROR, "Prefix missing ending <space>");
+ return;
+ }
+
+ proto_tree_add_item(request_tree, hf_irc_request_prefix, tvb, offset+1, eop_offset-offset-1, ENC_ASCII|ENC_NA);
+ found_needle = 0;
+ offset = eop_offset+1;
+ }
+
+ /* clear out any whitespace before command */
+ while(offset < end_offset && tvb_get_guint8(tvb, offset) == ' ')
+ {
+ offset++;
+ }
+ if (offset == end_offset)
+ {
+ expert_add_info_format(pinfo, request_item, PI_MALFORMED, PI_ERROR, "Request has no command");
+ return;
+ }
+
+ eoc_offset = tvb_pbrk_guint8(tvb, offset, linelen-offset, " ", &found_needle);
+ if (eoc_offset == -1)
+ {
+ proto_tree_add_item(request_tree, hf_irc_request_command, tvb, offset, linelen-offset, ENC_ASCII|ENC_NA);
+ col_append_fstr( pinfo->cinfo, COL_INFO, " (%s)", tvb_get_ephemeral_string(tvb, offset, linelen-offset));
+
+ /* Warn if there is a "numeric" command */
+ if ((linelen-offset == 3) &&
+ (isdigit(tvb_get_guint8(tvb, offset))) &&
+ (isdigit(tvb_get_guint8(tvb, offset+1))) &&
+ (isdigit(tvb_get_guint8(tvb, offset+2))))
+ {
+ expert_add_info_format(pinfo, request_item, PI_PROTOCOL, PI_WARN, "Numeric command not allowed in request");
+ }
+ return;
+ }
+
+ proto_tree_add_item(request_tree, hf_irc_request_command, tvb, offset, eoc_offset-offset, ENC_ASCII|ENC_NA);
+ str_command = tvb_get_ephemeral_string(tvb, offset, eoc_offset-offset);
+ col_append_fstr( pinfo->cinfo, COL_INFO, " (%s)", str_command);
+
+ /* Warn if there is a "numeric" command */
+ if ((eoc_offset-offset == 3) &&
+ (isdigit(tvb_get_guint8(tvb, offset))) &&
+ (isdigit(tvb_get_guint8(tvb, offset+1))) &&
+ (isdigit(tvb_get_guint8(tvb, offset+2))))
+ {
+ expert_add_info_format(pinfo, request_item, PI_PROTOCOL, PI_WARN, "Numeric command not allowed in request");
+ }
+
+ found_needle = 0;
+ offset = eoc_offset+1;
+
+ /* clear out any whitespace before command parameter */
+ while(offset < end_offset && tvb_get_guint8(tvb, offset) == ' ')
+ {
+ offset++;
+ }
+ if (offset == end_offset)
+ {
+ /* No command parameters */
+ return;
+ }
+
+ /* Check if message has a trailer */
+ if (tvb_get_guint8(tvb, offset) == ':')
+ {
+ proto_tree_add_item(request_tree, hf_irc_request_trailer, tvb, offset+1, linelen-offset-1, ENC_ASCII|ENC_NA);
+ dissect_irc_tag_data(request_tree, request_item, tvb, offset+1, linelen-offset-1, pinfo, str_command);
+ return;
+ }
+
+ while(offset < end_offset)
+ {
+ eocp_offset = tvb_pbrk_guint8(tvb, offset, linelen-offset, " ", &found_needle);
+ tag_start_offset = tvb_pbrk_guint8(tvb, offset, linelen-offset, TAG_DELIMITER, &found_tag_needle);
+
+ /* Create subtree when the first parameter is found */
+ if (first_command_param)
+ {
+ command_item = proto_tree_add_text(request_tree, tvb, offset, linelen-offset, "Command parameters");
+ command_tree = proto_item_add_subtree(command_item, ett_irc_request_command );
+ first_command_param = FALSE;
+ }
+
+ if (((eocp_offset == -1) && (tag_start_offset == -1)) ||
+ ((eocp_offset != -1) && (tag_start_offset == -1)) ||
+ (eocp_offset < tag_start_offset))
+ {
+ /* regular message should be dissected */
+
+ found_needle = 0;
+ if (eocp_offset == -1)
+ {
+ proto_tree_add_item(command_tree, hf_irc_request_command_param, tvb, offset, linelen-offset, ENC_ASCII|ENC_NA);
+ return;
+ }
+
+ proto_tree_add_item(command_tree, hf_irc_request_command_param, tvb, offset, eocp_offset-offset, ENC_ASCII|ENC_NA);
+ offset = eocp_offset+1;
+
+ /* clear out any whitespace before next command parameter */
+ while(offset < end_offset && tvb_get_guint8(tvb, offset) == ' ')
+ {
+ offset++;
+ }
+ if (offset == end_offset)
+ {
+ break;
+ }
+
+ /* Check if message has a trailer */
+ if (tvb_get_guint8(tvb, offset) == ':')
+ {
+ proto_tree_add_item(request_tree, hf_irc_request_trailer, tvb, offset+1, linelen-offset-1, ENC_ASCII|ENC_NA);
+ dissect_irc_tag_data(request_tree, request_item, tvb, offset+1, linelen-offset-1, pinfo, str_command);
+ return;
+ }
+ }
+ else if (((eocp_offset == -1) && (tag_start_offset != -1)) ||
+ (eocp_offset > tag_start_offset))
+ {
+ /* tag data dissected */
+
+ found_tag_needle = 0;
+ tag_end_offset = tvb_pbrk_guint8(tvb, tag_start_offset+1, linelen-tag_start_offset-1, TAG_DELIMITER, &found_tag_needle);
+ if (tag_end_offset == -1)
+ {
+ expert_add_info_format(pinfo, request_item, PI_MALFORMED, PI_ERROR, "Missing ending tag delimited (0x01)");
+ return;
+ }
+
+ dissect_irc_tag_data(request_tree, request_item, tvb, tag_start_offset, tag_end_offset-tag_start_offset, pinfo, str_command);
+ offset = tag_end_offset+1;
+ }
+ }
}
static void
-dissect_irc_response(proto_tree *tree, tvbuff_t *tvb, int offset, int linelen)
+dissect_irc_response(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset, int linelen)
{
- proto_tree_add_item(tree, hf_irc_response, tvb, offset, linelen, ENC_ASCII|ENC_NA);
+ proto_tree *response_tree, *command_tree = NULL;
+ proto_item *response_item, *command_item, *hidden_item;
+ int start_offset = offset;
+ int end_offset = start_offset+linelen;
+ gint eop_offset = -1,
+ eoc_offset = -1,
+ eocp_offset,
+ tag_start_offset, tag_end_offset;
+ guint8* str_command;
+ guint16 num_command;
+ guchar found_needle = 0,
+ found_tag_needle = 0;
+ gboolean first_command_param = TRUE;
+
+ response_item = proto_tree_add_item(tree, hf_irc_response, tvb, offset, linelen, ENC_ASCII|ENC_NA);
+ if (linelen <= 0)
+ return;
+
+ response_tree = proto_item_add_subtree(response_item, ett_irc_response );
+
+ /* Check if message has a prefix */
+ if (tvb_get_guint8(tvb, offset) == ':')
+ {
+ /* find the end of the prefix */
+ eop_offset = tvb_pbrk_guint8(tvb, offset+1, linelen-1, " ", &found_needle);
+ if (eop_offset == -1)
+ {
+ expert_add_info_format(pinfo, response_item, PI_MALFORMED, PI_ERROR, "Prefix missing ending <space>");
+ return;
+ }
+
+ proto_tree_add_item(response_tree, hf_irc_response_prefix, tvb, offset+1, eop_offset-offset-1, ENC_ASCII|ENC_NA);
+ found_needle = 0;
+ offset = eop_offset+1;
+ }
+
+ /* clear out any whitespace before command */
+ while(offset < end_offset && tvb_get_guint8(tvb, offset) == ' ')
+ {
+ offset++;
+ }
+ if (offset == end_offset)
+ {
+ expert_add_info_format(pinfo, response_item, PI_MALFORMED, PI_ERROR, "Response has no command");
+ return;
+ }
+
+ eoc_offset = tvb_pbrk_guint8(tvb, offset, linelen-offset, " ", &found_needle);
+ if (eoc_offset == -1)
+ {
+ proto_tree_add_item(response_tree, hf_irc_response_command, tvb, offset, linelen-offset, ENC_ASCII|ENC_NA);
+ col_append_fstr( pinfo->cinfo, COL_INFO, " (%s)", tvb_get_ephemeral_string(tvb, offset, linelen-offset));
+
+ /* if response command is numeric, allow it to be filtered as an integer */
+ if ((linelen-offset == 3) &&
+ (isdigit(tvb_get_guint8(tvb, offset))) &&
+ (isdigit(tvb_get_guint8(tvb, offset+1))) &&
+ (isdigit(tvb_get_guint8(tvb, offset+2))))
+ {
+ num_command = ((tvb_get_guint8(tvb, offset)-0x30)*100) + ((tvb_get_guint8(tvb, offset+1)-0x30)*10) + (tvb_get_guint8(tvb, offset+2)-0x30);
+ hidden_item = proto_tree_add_uint(response_tree, hf_irc_response_num_command, tvb, offset, linelen-offset, num_command);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ }
+ return;
+ }
+
+ proto_tree_add_item(response_tree, hf_irc_response_command, tvb, offset, eoc_offset-offset, ENC_ASCII|ENC_NA);
+ str_command = tvb_get_ephemeral_string(tvb, offset, eoc_offset-offset);
+ col_append_fstr( pinfo->cinfo, COL_INFO, " (%s)", str_command);
+
+ /* if response command is numeric, allow it to be filtered as an integer */
+ if ((eoc_offset-offset == 3) &&
+ (isdigit(tvb_get_guint8(tvb, offset))) &&
+ (isdigit(tvb_get_guint8(tvb, offset+1))) &&
+ (isdigit(tvb_get_guint8(tvb, offset+2))))
+ {
+ num_command = ((tvb_get_guint8(tvb, offset)-0x30)*100) + ((tvb_get_guint8(tvb, offset+1)-0x30)*10) + (tvb_get_guint8(tvb, offset+2)-0x30);
+ hidden_item = proto_tree_add_uint(response_tree, hf_irc_response_num_command, tvb, offset, eoc_offset-offset, num_command);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ }
+
+ found_needle = 0;
+ offset = eoc_offset+1;
+
+ /* clear out any whitespace before command parameter */
+ while(offset < end_offset && tvb_get_guint8(tvb, offset) == ' ')
+ {
+ offset++;
+ }
+ if (offset == end_offset)
+ {
+ /* No command parameters */
+ return;
+ }
+
+ /* Check if message has a trailer */
+ if (tvb_get_guint8(tvb, offset) == ':')
+ {
+ proto_tree_add_item(response_tree, hf_irc_response_trailer, tvb, offset+1, linelen-offset-1, ENC_ASCII|ENC_NA);
+ dissect_irc_tag_data(response_tree, response_item, tvb, offset+1, linelen-offset-1, pinfo, str_command);
+ return;
+ }
+
+ while(offset < end_offset)
+ {
+ eocp_offset = tvb_pbrk_guint8(tvb, offset, linelen-offset, " ", &found_needle);
+ tag_start_offset = tvb_pbrk_guint8(tvb, offset, linelen-offset, TAG_DELIMITER, &found_tag_needle);
+
+ /* Create subtree when the first parameter is found */
+ if (first_command_param)
+ {
+ command_item = proto_tree_add_text(response_tree, tvb, offset, linelen-offset, "Command parameters");
+ command_tree = proto_item_add_subtree(command_item, ett_irc_response_command );
+ first_command_param = FALSE;
+ }
+
+ if (((eocp_offset == -1) && (tag_start_offset == -1)) ||
+ ((eocp_offset != -1) && (tag_start_offset == -1)) ||
+ (eocp_offset < tag_start_offset))
+ {
+ /* regular message should be dissected */
+
+ found_needle = 0;
+ if (eocp_offset == -1)
+ {
+ proto_tree_add_item(command_tree, hf_irc_response_command_param, tvb, offset, linelen-offset, ENC_ASCII|ENC_NA);
+ return;
+ }
+
+ proto_tree_add_item(command_tree, hf_irc_response_command_param, tvb, offset, eocp_offset-offset, ENC_ASCII|ENC_NA);
+ offset = eocp_offset+1;
+
+ /* clear out any whitespace before next command parameter */
+ while(offset < end_offset && tvb_get_guint8(tvb, offset) == ' ')
+ {
+ offset++;
+ }
+ if (offset == end_offset)
+ {
+ break;
+ }
+
+ /* Check if message has a trailer */
+ if (tvb_get_guint8(tvb, offset) == ':')
+ {
+ proto_tree_add_item(response_tree, hf_irc_response_trailer, tvb, offset+1, linelen-offset-1, ENC_ASCII|ENC_NA);
+ dissect_irc_tag_data(response_tree, response_item, tvb, offset+1, linelen-offset-1, pinfo, str_command);
+ return;
+ }
+ }
+ else if (((eocp_offset == -1) && (tag_start_offset != -1)) ||
+ (eocp_offset > tag_start_offset))
+ {
+ /* tag data dissected */
+
+ found_tag_needle = 0;
+ tag_end_offset = tvb_pbrk_guint8(tvb, tag_start_offset+1, linelen-tag_start_offset-1, TAG_DELIMITER, &found_tag_needle);
+ if (tag_end_offset == -1)
+ {
+ expert_add_info_format(pinfo, response_item, PI_MALFORMED, PI_ERROR, "Missing ending tag delimited (0x01)");
+ return;
+ }
+
+ dissect_irc_tag_data(response_tree, response_item, tvb, tag_start_offset, tag_end_offset-tag_start_offset, pinfo, str_command);
+ offset = tag_end_offset+1;
+ }
+ }
}
static void
@@ -115,11 +493,11 @@ dissect_irc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
if (pinfo->match_uint == pinfo->destport)
{
- dissect_irc_request(irc_tree, tvb, offset, linelen);
+ dissect_irc_request(irc_tree, tvb, pinfo, offset, linelen);
}
else
{
- dissect_irc_response(irc_tree, tvb, offset, linelen);
+ dissect_irc_response(irc_tree, tvb, pinfo, offset, linelen);
}
}
offset = next_offset;
@@ -131,20 +509,51 @@ void
proto_register_irc(void)
{
static hf_register_info hf[] = {
- { &hf_irc_response,
- { "Response", "irc.response",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "Line of response message", HFILL }},
-
- { &hf_irc_request,
- { "Request", "irc.request",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "Line of request message", HFILL }},
+ { &hf_irc_response, { "Response", "irc.response", FT_STRING, BASE_NONE,
+ NULL, 0x0, "Line of response message", HFILL }},
+
+ { &hf_irc_request, { "Request", "irc.request", FT_STRING, BASE_NONE,
+ NULL, 0x0, "Line of request message", HFILL }},
+
+ { &hf_irc_request_prefix, { "Prefix", "irc.request.prefix", FT_STRING, BASE_NONE,
+ NULL, 0x0, "Request prefix", HFILL }},
+
+ { &hf_irc_request_command, { "Command", "irc.request.command", FT_STRING, BASE_NONE,
+ NULL, 0x0, "Request command", HFILL }},
+
+ { &hf_irc_request_command_param, { "Parameter", "irc.request.command_parameter", FT_STRING, BASE_NONE,
+ NULL, 0x0, "Request command parameter", HFILL }},
+
+ { &hf_irc_request_trailer, { "Trailer", "irc.request.trailer", FT_STRING, BASE_NONE,
+ NULL, 0x0, "Request trailer", HFILL }},
+
+ { &hf_irc_response_prefix, { "Prefix", "irc.response.prefix", FT_STRING, BASE_NONE,
+ NULL, 0x0, "Response prefix", HFILL }},
+
+ { &hf_irc_response_command, { "Command", "irc.response.command", FT_STRING, BASE_NONE,
+ NULL, 0x0, "Response command", HFILL }},
+
+ { &hf_irc_response_num_command, { "Command", "irc.response.command", FT_UINT16, BASE_DEC,
+ NULL, 0x0, "Response (numeric) command", HFILL }},
+
+ { &hf_irc_response_command_param, { "Parameter", "irc.response.command_parameter", FT_STRING, BASE_NONE,
+ NULL, 0x0, "Response command parameter", HFILL }},
+
+ { &hf_irc_response_trailer, { "Trailer", "irc.response.trailer", FT_STRING, BASE_NONE,
+ NULL, 0x0, "Response trailer", HFILL }},
+
+ { &hf_irc_ctcp, { "CTCP Data", "irc.ctcp", FT_STRING, BASE_NONE,
+ NULL, 0x0, "Placeholder to dissect CTCP data", HFILL }}
};
static gint *ett[] = {
&ett_irc,
+ &ett_irc_request,
+ &ett_irc_request_command,
+ &ett_irc_response,
+ &ett_irc_response_command
};
+
proto_irc = proto_register_protocol("Internet Relay Chat", "IRC", "irc");
proto_register_field_array(proto_irc, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
diff --git a/epan/dissectors/packet-isakmp.c b/epan/dissectors/packet-isakmp.c
index 39084b0e27..e3947b12d4 100644
--- a/epan/dissectors/packet-isakmp.c
+++ b/epan/dissectors/packet-isakmp.c
@@ -223,7 +223,9 @@ static int hf_isakmp_tf_attr_format = -1;
static int hf_isakmp_tf_attr_length = -1;
static int hf_isakmp_tf_attr_value = -1;
static int hf_isakmp_tf_attr_life_type = -1;
-static int hf_isakmp_tf_attr_life_duration = -1;
+static int hf_isakmp_tf_attr_life_duration_uint32 = -1;
+static int hf_isakmp_tf_attr_life_duration_uint64 = -1;
+static int hf_isakmp_tf_attr_life_duration_bytes = -1;
static int hf_isakmp_tf_attr_group_description = -1;
static int hf_isakmp_tf_attr_encap_mode = -1;
static int hf_isakmp_tf_attr_auth_algorithm = -1;
@@ -254,7 +256,9 @@ static int hf_isakmp_ike_attr_group_generator_two = -1;
static int hf_isakmp_ike_attr_group_curve_a = -1;
static int hf_isakmp_ike_attr_group_curve_b = -1;
static int hf_isakmp_ike_attr_life_type = -1;
-static int hf_isakmp_ike_attr_life_duration = -1;
+static int hf_isakmp_ike_attr_life_duration_uint32 = -1;
+static int hf_isakmp_ike_attr_life_duration_uint64 = -1;
+static int hf_isakmp_ike_attr_life_duration_bytes = -1;
static int hf_isakmp_ike_attr_prf = -1;
static int hf_isakmp_ike_attr_key_length = -1;
static int hf_isakmp_ike_attr_field_size = -1;
@@ -1872,7 +1876,7 @@ static void dissect_sig(tvbuff_t *, int, int, proto_tree *);
static void dissect_nonce(tvbuff_t *, int, int, proto_tree *);
static void dissect_notif(tvbuff_t *, int, int, proto_tree *, int);
static void dissect_delete(tvbuff_t *, int, int, proto_tree *, int);
-static void dissect_vid(tvbuff_t *, int, int, proto_tree *);
+static int dissect_vid(tvbuff_t *, int, int, proto_tree *);
static void dissect_config(tvbuff_t *, int, int, proto_tree *, int);
static void dissect_nat_discovery(tvbuff_t *, int, int, proto_tree * );
static void dissect_nat_original_address(tvbuff_t *, int, int, proto_tree *, int );
@@ -3090,7 +3094,7 @@ dissect_rohc_supported(tvbuff_t *tvb, proto_tree *rohc_tree, int offset )
* life duration according to the attribute classes table in Appendix A of
* RFC2409: http://tools.ietf.org/html/rfc2409#page-33 */
static void
-dissect_life_duration(tvbuff_t *tvb, proto_tree *tree, proto_item *ti, int hf, int offset, guint len)
+dissect_life_duration(tvbuff_t *tvb, proto_tree *tree, proto_item *ti, int hf_uint32, int hf_uint64, int hf_bytes, int offset, guint len)
{
switch (len) {
case 0:
@@ -3099,7 +3103,7 @@ dissect_life_duration(tvbuff_t *tvb, proto_tree *tree, proto_item *ti, int hf, i
guint8 val;
val = tvb_get_guint8(tvb, offset);
- proto_tree_add_uint_format_value(tree, hf, tvb, offset, len, val, "%u", val);
+ proto_tree_add_uint_format_value(tree, hf_uint32, tvb, offset, len, val, "%u", val);
proto_item_append_text(ti, " : %u", val);
break;
}
@@ -3107,7 +3111,7 @@ dissect_life_duration(tvbuff_t *tvb, proto_tree *tree, proto_item *ti, int hf, i
guint16 val;
val = tvb_get_ntohs(tvb, offset);
- proto_tree_add_uint_format_value(tree, hf, tvb, offset, len, val, "%u", val);
+ proto_tree_add_uint_format_value(tree, hf_uint32, tvb, offset, len, val, "%u", val);
proto_item_append_text(ti, " : %u", val);
break;
}
@@ -3115,7 +3119,7 @@ dissect_life_duration(tvbuff_t *tvb, proto_tree *tree, proto_item *ti, int hf, i
guint32 val;
val = tvb_get_ntoh24(tvb, offset);
- proto_tree_add_uint_format_value(tree, hf, tvb, offset, len, val, "%u", val);
+ proto_tree_add_uint_format_value(tree, hf_uint32, tvb, offset, len, val, "%u", val);
proto_item_append_text(ti, " : %u", val);
break;
}
@@ -3123,7 +3127,7 @@ dissect_life_duration(tvbuff_t *tvb, proto_tree *tree, proto_item *ti, int hf, i
guint32 val;
val = tvb_get_ntohl(tvb, offset);
- proto_tree_add_uint_format_value(tree, hf, tvb, offset, len, val, "%u", val);
+ proto_tree_add_uint_format_value(tree, hf_uint32, tvb, offset, len, val, "%u", val);
proto_item_append_text(ti, " : %u", val);
break;
}
@@ -3131,7 +3135,7 @@ dissect_life_duration(tvbuff_t *tvb, proto_tree *tree, proto_item *ti, int hf, i
guint64 val;
val = tvb_get_ntoh40(tvb, offset);
- proto_tree_add_uint64_format_value(tree, hf, tvb, offset, len, val, "%" G_GINT64_MODIFIER "u", val);
+ proto_tree_add_uint64_format_value(tree, hf_uint64, tvb, offset, len, val, "%" G_GINT64_MODIFIER "u", val);
proto_item_append_text(ti, " : %" G_GINT64_MODIFIER "u", val);
break;
}
@@ -3139,7 +3143,7 @@ dissect_life_duration(tvbuff_t *tvb, proto_tree *tree, proto_item *ti, int hf, i
guint64 val;
val = tvb_get_ntoh48(tvb, offset);
- proto_tree_add_uint64_format_value(tree, hf, tvb, offset, len, val, "%" G_GINT64_MODIFIER "u", val);
+ proto_tree_add_uint64_format_value(tree, hf_uint64, tvb, offset, len, val, "%" G_GINT64_MODIFIER "u", val);
proto_item_append_text(ti, " : %" G_GINT64_MODIFIER "u", val);
break;
}
@@ -3147,7 +3151,7 @@ dissect_life_duration(tvbuff_t *tvb, proto_tree *tree, proto_item *ti, int hf, i
guint64 val;
val = tvb_get_ntoh56(tvb, offset);
- proto_tree_add_uint64_format_value(tree, hf, tvb, offset, len, val, "%" G_GINT64_MODIFIER "u", val);
+ proto_tree_add_uint64_format_value(tree, hf_uint64, tvb, offset, len, val, "%" G_GINT64_MODIFIER "u", val);
proto_item_append_text(ti, " : %" G_GINT64_MODIFIER "u", val);
break;
}
@@ -3155,12 +3159,12 @@ dissect_life_duration(tvbuff_t *tvb, proto_tree *tree, proto_item *ti, int hf, i
guint64 val;
val = tvb_get_ntoh64(tvb, offset);
- proto_tree_add_uint64_format_value(tree, hf, tvb, offset, len, val, "%" G_GINT64_MODIFIER "u", val);
+ proto_tree_add_uint64_format_value(tree, hf_uint64, tvb, offset, len, val, "%" G_GINT64_MODIFIER "u", val);
proto_item_append_text(ti, " : %" G_GINT64_MODIFIER "u", val);
break;
}
default:
- proto_tree_add_item(tree, hf, tvb, offset, len, ENC_NA);
+ proto_tree_add_item(tree, hf_bytes, tvb, offset, len, ENC_NA);
proto_item_append_text(ti, " : %" G_GINT64_MODIFIER "x ...", tvb_get_ntoh64(tvb, offset));
break;
}
@@ -3210,7 +3214,7 @@ dissect_transform_attribute(tvbuff_t *tvb, proto_tree *transform_attr_type_tree,
proto_item_append_text(transform_attr_type_item," : %s", val_to_str(tvb_get_ntohs(tvb, offset), transform_attr_sa_life_type, "Unknown %d"));
break;
case ISAKMP_ATTR_LIFE_DURATION:
- dissect_life_duration(tvb, sub_transform_attr_type_tree, transform_attr_type_item, hf_isakmp_tf_attr_life_duration, offset, optlen);
+ dissect_life_duration(tvb, sub_transform_attr_type_tree, transform_attr_type_item, hf_isakmp_tf_attr_life_duration_uint32, hf_isakmp_tf_attr_life_duration_uint64, hf_isakmp_tf_attr_life_duration_bytes , offset, optlen);
break;
case ISAKMP_ATTR_GROUP_DESC:
proto_tree_add_item(sub_transform_attr_type_tree, hf_isakmp_tf_attr_group_description, tvb, offset, optlen, ENC_BIG_ENDIAN);
@@ -3366,7 +3370,7 @@ dissect_transform_ike_attribute(tvbuff_t *tvb, proto_tree *transform_attr_type_t
proto_item_append_text(transform_attr_type_item," : %s", val_to_str(tvb_get_ntohs(tvb, offset), transform_attr_sa_life_type, "Unknown %d"));
break;
case IKE_ATTR_LIFE_DURATION:
- dissect_life_duration(tvb, sub_transform_attr_type_tree, transform_attr_type_item, hf_isakmp_ike_attr_life_duration, offset, optlen);
+ dissect_life_duration(tvb, sub_transform_attr_type_tree, transform_attr_type_item, hf_isakmp_ike_attr_life_duration_uint32, hf_isakmp_ike_attr_life_duration_uint64, hf_isakmp_ike_attr_life_duration_bytes, offset, optlen);
break;
case IKE_ATTR_PRF:
proto_tree_add_item(sub_transform_attr_type_tree, hf_isakmp_ike_attr_prf, tvb, offset, optlen, ENC_NA);
@@ -3431,7 +3435,6 @@ dissect_transform_ike2_attribute(tvbuff_t *tvb, proto_tree *transform_attr_type_
proto_tree_add_item(sub_transform_attr_type_tree, hf_isakmp_ike2_attr_key_length, tvb, offset, optlen, ENC_BIG_ENDIAN);
proto_item_append_text(transform_attr_type_item," : %d", tvb_get_ntohs(tvb, offset));
break;
- break;
default:
/* No Default Action */
break;
@@ -3676,7 +3679,7 @@ dissect_id(tvbuff_t *tvb, int offset, int length, proto_tree *tree, int isakmp_v
}
static void
-dissect_cert(tvbuff_t *tvb, int offset, int length, proto_tree *tree, int isakmp_version, packet_info *pinfo )
+dissect_cert(tvbuff_t *tvb, int offset, int length _U_, proto_tree *tree, int isakmp_version, packet_info *pinfo )
{
asn1_ctx_t asn1_ctx;
asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
@@ -3690,7 +3693,6 @@ dissect_cert(tvbuff_t *tvb, int offset, int length, proto_tree *tree, int isakmp
}
offset += 1;
- length -= 1;
dissect_x509af_Certificate(FALSE, tvb, offset, &asn1_ctx, tree, hf_isakmp_cert_data);
}
@@ -3785,7 +3787,7 @@ dissect_cisco_fragmentation(tvbuff_t *tvb, int offset, int length, proto_tree *t
last = tvb_get_guint8(tvb, offset);
proto_tree_add_item(tree, hf_isakmp_cisco_frag_last, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
- length-=4;
+ /*length-=4;*/
/* Start Reassembly stuff for Cisco IKE fragmentation */
{
@@ -3934,8 +3936,6 @@ dissect_notif(tvbuff_t *tvb, int offset, int length, proto_tree *tree, int isakm
proto_tree_add_item(tree, hf_isakmp_notify_data_redirect_org_resp_gw_ident, tvb, offset+2, tvb_get_guint8(tvb,offset+1), ENC_NA);
break;
}
- length -= tvb_get_guint8(tvb, offset+1) - 2;
- offset += tvb_get_guint8(tvb, offset+1) + 2;
break;
case 16409: /* TICKET_LT_OPAQUE */
proto_tree_add_item(tree, hf_isakmp_notify_data_ticket_lifetime, tvb, offset, 4, ENC_BIG_ENDIAN);
@@ -4018,7 +4018,7 @@ dissect_delete(tvbuff_t *tvb, int offset, int length, proto_tree *tree, int isak
}
-static void
+static int
dissect_vid(tvbuff_t *tvb, int offset, int length, proto_tree *tree)
{
const guint8 * pVID;
@@ -4032,7 +4032,7 @@ dissect_vid(tvbuff_t *tvb, int offset, int length, proto_tree *tree)
proto_item_append_text(tree," : %s", vendorstring);
/* Check Point VID */
- if (length >= 20 && memcmp(pVID, VID_CP, 20) == 0)
+ if (length >= 24 && memcmp(pVID, VID_CP, 20) == 0)
{
offset += 20;
proto_tree_add_item(tree, hf_isakmp_vid_cp_product, tvb, offset, 4, ENC_BIG_ENDIAN);
@@ -4074,6 +4074,7 @@ dissect_vid(tvbuff_t *tvb, int offset, int length, proto_tree *tree)
proto_tree_add_item(tree, hf_isakmp_vid_aruba_via_auth_profile, tvb, offset, length-19, ENC_ASCII|ENC_NA);
offset += 4;
}
+ return offset;
}
/* Returns the number of bytes consumed by this option. */
static int
@@ -4282,7 +4283,6 @@ dissect_config_attribute(tvbuff_t *tvb, proto_tree *cfg_attr_type_tree, int offs
proto_tree_add_item(sub_cfg_attr_type_tree, hf_isakmp_cfg_attr_internal_ip6_link_interface, tvb, offset, 8, ENC_BIG_ENDIAN);
offset += 8;
proto_tree_add_item(sub_cfg_attr_type_tree, hf_isakmp_cfg_attr_internal_ip6_link_id, tvb, offset, optlen-8, ENC_NA);
- offset += optlen-8;
break;
case INTERNAL_IP6_PREFIX: /* 18 */
offset_end = offset + optlen;
@@ -4388,7 +4388,7 @@ dissect_nat_discovery(tvbuff_t *tvb, int offset, int length, proto_tree *tree )
}
static void
-dissect_nat_original_address(tvbuff_t *tvb, int offset, int length, proto_tree *tree, int isakmp_version)
+dissect_nat_original_address(tvbuff_t *tvb, int offset, int length _U_, proto_tree *tree, int isakmp_version)
{
guint8 id_type;
@@ -4401,7 +4401,6 @@ dissect_nat_original_address(tvbuff_t *tvb, int offset, int length, proto_tree *
proto_tree_add_item(tree, hf_isakmp_id_type_v2, tvb, offset, 1, ENC_BIG_ENDIAN);
}
offset += 1;
- length -= 1;
offset += 3; /* reserved */
@@ -4655,7 +4654,6 @@ dissect_enc(tvbuff_t *tvb,
} else {
proto_item_append_text(icd_item, "[not validated]");
}
- offset += icd_len;
}
/*
@@ -4992,11 +4990,11 @@ proto_register_isakmp(void)
"ISAKMP Responder Cookie", HFILL }},
{ &hf_isakmp_typepayload,
{ "Type Payload", "isakmp.typepayload",
- FT_UINT8,BASE_RANGE_STRING | BASE_DEC, RVALS(&payload_type), 0x0,
+ FT_UINT8,BASE_RANGE_STRING | BASE_DEC, RVALS(payload_type), 0x0,
"ISAKMP Type Payload", HFILL }},
{ &hf_isakmp_nextpayload,
{ "Next payload", "isakmp.nextpayload",
- FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(&payload_type), 0x0,
+ FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(payload_type), 0x0,
"ISAKMP Next Payload", HFILL }},
{ &hf_isakmp_criticalpayload,
{ "Critical Bit", "isakmp.criticalpayload",
@@ -5116,11 +5114,11 @@ proto_register_isakmp(void)
"ISAKMP Transform ID", HFILL }},
{ &hf_isakmp_id_type_v1,
{ "ID type", "isakmp.id.type",
- FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(&vs_v1_id_type), 0x0,
+ FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(vs_v1_id_type), 0x0,
"ISAKMP (v1) ID Type", HFILL }},
{ &hf_isakmp_id_type_v2,
{ "ID type", "isakmp.id.type",
- FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(&vs_v2_id_type), 0x0,
+ FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(vs_v2_id_type), 0x0,
"ISAKMP (v2) ID Type", HFILL }},
{ &hf_isakmp_id_protoid,
{ "Protocol ID", "isakmp.id.protoid",
@@ -5184,11 +5182,11 @@ proto_register_isakmp(void)
NULL, HFILL } },
{ &hf_isakmp_cert_encoding_v1,
{ "Certificate Encoding", "isakmp.cert.encoding",
- FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(&cert_v1_type), 0x0,
+ FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(cert_v1_type), 0x0,
"ISAKMP Certificate Encoding", HFILL }},
{ &hf_isakmp_cert_encoding_v2,
{ "Certificate Encoding", "isakmp.cert.encoding",
- FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(&cert_v2_type), 0x0,
+ FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(cert_v2_type), 0x0,
"IKEv2 Certificate Encoding", HFILL }},
{ &hf_isakmp_cert_data,
{ "Certificate Data", "isakmp.cert.data",
@@ -5196,15 +5194,15 @@ proto_register_isakmp(void)
"ISAKMP Certificate Data", HFILL }},
{ &hf_isakmp_certreq_type_v1,
{ "Certificate Type", "isakmp.certreq.type",
- FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(&cert_v1_type), 0x0,
+ FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(cert_v1_type), 0x0,
"ISAKMP Certificate Type", HFILL }},
{ &hf_isakmp_certreq_type_v2,
{ "Certificate Type", "isakmp.certreq.type",
- FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(&cert_v2_type), 0x0,
+ FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(cert_v2_type), 0x0,
"IKEv2 Certificate Type", HFILL }},
{ &hf_isakmp_auth_meth,
{ "Authentication Method", "isakmp.auth.method",
- FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(&authmeth_v2_type), 0x0,
+ FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(authmeth_v2_type), 0x0,
"IKEv2 Authentication Method", HFILL }},
{ &hf_isakmp_auth_data,
{ "Authentication Data", "isakmp.auth.data",
@@ -5619,7 +5617,15 @@ proto_register_isakmp(void)
{ "Life Type", "isakmp.tf.attr.life_type",
FT_UINT16, BASE_DEC, VALS(transform_attr_sa_life_type), 0x00,
NULL, HFILL }},
- { &hf_isakmp_tf_attr_life_duration,
+ { &hf_isakmp_tf_attr_life_duration_uint32,
+ { "Life Duration", "isakmp.tf.attr.life_duration",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }},
+ { &hf_isakmp_tf_attr_life_duration_uint64,
+ { "Life Duration", "isakmp.tf.attr.life_duration",
+ FT_UINT64, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }},
+ { &hf_isakmp_tf_attr_life_duration_bytes,
{ "Life Duration", "isakmp.tf.attr.life_duration",
FT_BYTES, BASE_NONE, NULL, 0x00,
NULL, HFILL }},
@@ -5741,7 +5747,15 @@ proto_register_isakmp(void)
{ "Life Type", "isakmp.ike.attr.life_type",
FT_UINT16, BASE_DEC, VALS(transform_attr_sa_life_type), 0x00,
NULL, HFILL }},
- { &hf_isakmp_ike_attr_life_duration,
+ { &hf_isakmp_ike_attr_life_duration_uint32,
+ { "Life Duration", "isakmp.ike.attr.life_duration",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }},
+ { &hf_isakmp_ike_attr_life_duration_uint64,
+ { "Life Duration", "isakmp.ike.attr.life_duration",
+ FT_UINT64, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }},
+ { &hf_isakmp_ike_attr_life_duration_bytes,
{ "Life Duration", "isakmp.ike.attr.life_duration",
FT_BYTES, BASE_NONE, NULL, 0x00,
NULL, HFILL }},
@@ -5837,7 +5851,7 @@ proto_register_isakmp(void)
{ &hf_isakmp_cfg_type_v1,
{ "Type", "isakmp.cfg.type",
- FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(&vs_v1_cfgtype), 0x0,
+ FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(vs_v1_cfgtype), 0x0,
"ISAKMP (v1) Config Type", HFILL }},
{ &hf_isakmp_cfg_identifier,
{ "Identifier", "isakmp.cfg.identifier",
@@ -5845,7 +5859,7 @@ proto_register_isakmp(void)
"ISAKMP (v1) Config Identifier", HFILL }},
{ &hf_isakmp_cfg_type_v2,
{ "Type", "isakmp.cfg.type",
- FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(&vs_v2_cfgtype), 0x0,
+ FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(vs_v2_cfgtype), 0x0,
"ISAKMP (v2) Config Type", HFILL }},
/* Config Attributes Type */
{ &hf_isakmp_cfg_attr,
@@ -5854,11 +5868,11 @@ proto_register_isakmp(void)
"ISAKMP Config Attribute", HFILL }},
{ &hf_isakmp_cfg_attr_type_v1,
{ "Type", "isakmp.cfg.attr.type",
- FT_UINT16, BASE_RANGE_STRING | BASE_DEC, RVALS(&vs_v1_cfgattr), 0x00,
+ FT_UINT16, BASE_RANGE_STRING | BASE_DEC, RVALS(vs_v1_cfgattr), 0x00,
"ISAKMP (v1) Config Attribute type", HFILL }},
{ &hf_isakmp_cfg_attr_type_v2,
{ "Type", "isakmp.cfg.attr.type",
- FT_UINT16, BASE_RANGE_STRING | BASE_DEC, RVALS(&vs_v2_cfgattr), 0x00,
+ FT_UINT16, BASE_RANGE_STRING | BASE_DEC, RVALS(vs_v2_cfgattr), 0x00,
"ISAKMP (v2) Config Attribute type", HFILL }},
{ &hf_isakmp_cfg_attr_format,
{ "Config Attribute Format", "isakmp.cfg.attr.format",
diff --git a/epan/dissectors/packet-isis-clv.c b/epan/dissectors/packet-isis-clv.c
index 9d32631033..ad78e7f522 100644
--- a/epan/dissectors/packet-isis-clv.c
+++ b/epan/dissectors/packet-isis-clv.c
@@ -476,8 +476,14 @@ isis_dissect_nlpid_clv(tvbuff_t *tvb, proto_tree *tree, int offset, int length)
proto_item_append_text(ti, ", ");
}
proto_item_append_text(ti, "%s (0x%02x)",
- val_to_str(tvb_get_guint8(tvb, offset), nlpid_vals,
- "Unknown"), tvb_get_guint8(tvb, offset));
+ /* NLPID_IEEE_8021AQ conflicts with NLPID_SNDCF.
+ * In this context, we want the former.
+ */
+ (tvb_get_guint8(tvb, offset) == NLPID_IEEE_8021AQ
+ ? "IEEE 802.1aq (SPB)"
+ : val_to_str(tvb_get_guint8(tvb, offset), nlpid_vals,
+ "Unknown")),
+ tvb_get_guint8(tvb, offset));
offset++;
first = FALSE;
}
diff --git a/epan/dissectors/packet-isis-clv.h b/epan/dissectors/packet-isis-clv.h
index 4e1ea060b5..984409851d 100644
--- a/epan/dissectors/packet-isis-clv.h
+++ b/epan/dissectors/packet-isis-clv.h
@@ -59,6 +59,13 @@
#define ISIS_CLV_EXTD_IP_REACH 135 /* draft-ietf-isis-traffic-05 */
#define ISIS_CLV_HOSTNAME 137 /* rfc2763 */
#define ISIS_CLV_SHARED_RISK_GROUP 138 /* draft-ietf-isis-gmpls-extensions */
+#define ISIS_GRP_ADDR 142 /* draft-ieft-trill-isis-05*//* Our sub-packet dismantle structure for CLV's */
+#define ISIS_CLV_MT_PORT_CAP 143 /* MT port capability (draft-ietf-isis-layer2-11) */
+#define ISIS_CLV_MT_CAP 144 /* MT capability (draft-ietf-isis-ieee-aq-05)
+ * also: IEEE P802.1aq/D3.6,
+ * http://www.ietf.org/mail-archive/web/spb-isis/current/msg00007.html
+ * http://www.iana.org/assignments/isis-tlv-codepoints/isis-tlv-codepoints.xml#tlv-143,
+ */
#define ISIS_CLV_RESTART 211 /* draft-ietf-isis-restart-01 */
#define ISIS_CLV_MT_IS_REACH 222 /* draft-ietf-isis-wg-multi-topology-05 */
#define ISIS_CLV_MT_SUPPORTED 229 /* draft-ietf-isis-wg-multi-topology-05 */
diff --git a/epan/dissectors/packet-isis-hello.c b/epan/dissectors/packet-isis-hello.c
index 294787dd2a..dfe5fe7364 100644
--- a/epan/dissectors/packet-isis-hello.c
+++ b/epan/dissectors/packet-isis-hello.c
@@ -79,6 +79,11 @@ static gint ett_isis_hello_clv_ptp_adj = -1;
static gint ett_isis_hello_clv_mt = -1;
static gint ett_isis_hello_clv_restart = -1;
static gint ett_isis_hello_clv_restart_flags = -1;
+static gint ett_isis_hello_clv_mt_port_cap = -1;
+static gint ett_isis_hello_clv_mt_port_cap_spb_mcid = -1;
+static gint ett_isis_hello_clv_mt_port_cap_spb_aux_mcid = -1;
+static gint ett_isis_hello_clv_mt_port_cap_spb_digest = -1;
+static gint ett_isis_hello_clv_mt_port_cap_spb_bvid_tuples = -1;
static gint ett_isis_hello_clv_checksum = -1;
static const value_string isis_hello_circuit_type_vals[] = {
@@ -115,6 +120,8 @@ static void dissect_hello_nlpid_clv(tvbuff_t *tvb,
proto_tree *tree, int offset, int id_length, int length);
static void dissect_hello_restart_clv(tvbuff_t *tvb,
proto_tree *tree, int offset, int id_length, int length);
+static void dissect_hello_mt_port_cap_clv(tvbuff_t *tvb,
+ proto_tree *tree, int offset, int id_length, int length);
static const isis_clv_handle_t clv_l1_hello_opts[] = {
@@ -311,6 +318,12 @@ static const isis_clv_handle_t clv_ptp_hello_opts[] = {
dissect_hello_ip_authentication_clv
},
{
+ ISIS_CLV_MT_PORT_CAP,
+ "MT Port Capability",
+ &ett_isis_hello_clv_mt_port_cap,
+ dissect_hello_mt_port_cap_clv
+ },
+ {
ISIS_CLV_RESTART,
"Restart Option",
&ett_isis_hello_clv_restart,
@@ -342,6 +355,174 @@ static const isis_clv_handle_t clv_ptp_hello_opts[] = {
}
};
+static void
+dissect_hello_mt_port_cap_spb_mcid_clv(tvbuff_t *tvb,
+ proto_tree *tree, int offset, int subtype, int sublen)
+{
+ const int MCID_LEN = 51;
+ const int SUBLEN = 2 * MCID_LEN;
+
+ if (sublen != SUBLEN) {
+ isis_dissect_unknown( tvb, tree, offset,
+ "Short SPB MCID TLV (%d vs %d)", sublen, SUBLEN);
+ return;
+ }
+ else {
+ proto_tree *subtree, *ti;
+ const guint8 *mcid = tvb_get_ptr(tvb, offset, MCID_LEN);
+ const guint8 *aux_mcid = tvb_get_ptr(tvb, offset + MCID_LEN, MCID_LEN);
+ int i;
+
+ ti = proto_tree_add_text( tree, tvb, offset-2, sublen+2,
+ "SPB MCID: Type: 0x%02x, Length: %d", subtype, sublen);
+ subtree = proto_item_add_subtree(ti, ett_isis_hello_clv_mt_port_cap_spb_mcid);
+
+ /* MCID: */
+ proto_tree_add_text( subtree, tvb, offset, MCID_LEN, "MCID:");
+ for (i = 0 ; i < 48 ; i+= 8, offset += 8) {
+ proto_tree_add_text( subtree, tvb, offset, 8,
+ " %02x %02x %02x %02x %02x %02x %02x %02x",
+ mcid[i+0], mcid[i+1], mcid[i+2], mcid[i+3],
+ mcid[i+4], mcid[i+5], mcid[i+6], mcid[i+7]);
+ }
+ proto_tree_add_text( subtree, tvb, offset, 3,
+ " %02x %02x %02x",
+ mcid[i+0], mcid[i+1], mcid[i+2]);
+ offset += 3;
+
+ /* Aux MCID: */
+ proto_tree_add_text( subtree, tvb, offset, MCID_LEN, "Aux MCID:");
+ for (i = 0 ; i < 48 ; i+= 8, offset += 8) {
+ proto_tree_add_text( subtree, tvb, offset, 8,
+ " %02x %02x %02x %02x %02x %02x %02x %02x",
+ aux_mcid[i+0], aux_mcid[i+1], aux_mcid[i+2], aux_mcid[i+3],
+ aux_mcid[i+4], aux_mcid[i+5], aux_mcid[i+6], aux_mcid[i+7]);
+ }
+ proto_tree_add_text( subtree, tvb, offset, 3,
+ " %02x %02x %02x",
+ aux_mcid[i+0], aux_mcid[i+1], aux_mcid[i+2]);
+ offset += 3;
+ }
+}
+
+static void
+dissect_hello_mt_port_cap_spb_digest_clv(tvbuff_t *tvb,
+ proto_tree *tree, int offset, int subtype, int sublen)
+{
+ const int DIGEST_LEN = 32;
+ const int SUBLEN = 1 + DIGEST_LEN;
+ if (sublen != SUBLEN) {
+ isis_dissect_unknown( tvb, tree, offset,
+ "Short SPB Digest TLV (%d vs %d)", sublen, SUBLEN);
+ return;
+ }
+ else {
+ proto_tree *subtree, *ti;
+ const guint8 vad = tvb_get_guint8(tvb, offset);
+ const guint8 *digest = tvb_get_ptr(tvb, offset + 1, DIGEST_LEN);
+ int i;
+
+ ti = proto_tree_add_text( tree, tvb, offset-2, sublen+2,
+ "SPB Digest: Type: 0x%02x, Length: %d", subtype, sublen);
+ subtree = proto_item_add_subtree(ti, ett_isis_hello_clv_mt_port_cap_spb_digest);
+
+ proto_tree_add_text( subtree, tvb, offset, 1,
+ "V: %d, A: %d, D: %d",
+ (vad >> 4) & 0x1,
+ (vad >> 2) & 0x3,
+ (vad >> 0) & 0x3);
+ ++offset;
+
+ /* Digest: */
+ proto_tree_add_text( subtree, tvb, offset, DIGEST_LEN, "Digest:");
+ for (i = 0 ; i < DIGEST_LEN ; i+= 8, offset += 8) {
+ proto_tree_add_text( subtree, tvb, offset, 8,
+ " %02x %02x %02x %02x %02x %02x %02x %02x",
+ digest[i+0], digest[i+1], digest[i+2], digest[i+3],
+ digest[i+4], digest[i+5], digest[i+6], digest[i+7]);
+ }
+ }
+}
+
+static void
+dissect_hello_mt_port_cap_spb_bvid_tuples_clv(tvbuff_t *tvb,
+ proto_tree *tree, int offset, int subtype, int sublen)
+{
+ proto_tree *subtree, *ti;
+ int subofs = offset;
+
+ ti = proto_tree_add_text( tree, tvb, offset-2, sublen+2,
+ "SPB Base Vlan Identifiers: Type: 0x%02x, Length: %d", subtype, sublen);
+ subtree = proto_item_add_subtree(ti, ett_isis_hello_clv_mt_port_cap_spb_bvid_tuples);
+
+ while (sublen > 0) {
+ if (sublen < 6) {
+ isis_dissect_unknown( tvb, subtree, offset,
+ "Short SPB BVID header entry (%d vs %d)", sublen, 6);
+ return;
+ }
+ else {
+ const guint8 *ect_tlv = tvb_get_ptr(tvb, subofs, 6);
+ guint16 word = (ect_tlv[4] << 8) | ect_tlv[5];
+ guint16 bvid = (word >> 4) & 0xfff;
+ int u_bit = (ect_tlv[5] & 8) ? 1 : 0;
+ int m_bit = (ect_tlv[5] & 4) ? 1 : 0;
+ proto_tree_add_text( subtree, tvb, subofs, 6,
+ "ECT: %02x-%02x-%02x-%02x, BVID: 0x%03x (%d),%s U: %d, M: %d",
+ ect_tlv[0], ect_tlv[1], ect_tlv[2], ect_tlv[3],
+ bvid, bvid,
+ ( bvid < 10 ? " "
+ : bvid < 100 ? " "
+ : bvid < 1000 ? " "
+ : ""),
+ u_bit,
+ m_bit);
+ }
+ sublen -= 6;
+ subofs += 6;
+ }
+}
+
+static void
+dissect_hello_mt_port_cap_clv(tvbuff_t *tvb,
+ proto_tree *tree, int offset, int id_length _U_, int length)
+{
+ if (length >= 2) {
+ /* mtid */
+ guint16 mtid = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_text( tree, tvb, offset, 2,
+ "MTID: 0x%03x",
+ (mtid & 0xfff));
+ length -= 2;
+ offset += 2;
+ while (length >= 2) {
+ guint8 subtype = tvb_get_guint8(tvb, offset);
+ guint8 subtlvlen = tvb_get_guint8(tvb, offset+1);
+ length -= 2;
+ offset += 2;
+ if (subtlvlen > length) {
+ isis_dissect_unknown( tvb, tree, offset,
+ "Short type 0x%02x TLV (%d vs %d)", subtype, subtlvlen, length);
+ return;
+ }
+ if (subtype == 0x04) { /* SPB MCID */
+ dissect_hello_mt_port_cap_spb_mcid_clv(tvb, tree, offset, subtype, subtlvlen);
+ }
+ else if (subtype == 0x05) { /* SPB Digest */
+ dissect_hello_mt_port_cap_spb_digest_clv(tvb, tree, offset, subtype, subtlvlen);
+ }
+ else if (subtype == 0x06) { /* SPB BVID Tuples */
+ dissect_hello_mt_port_cap_spb_bvid_tuples_clv(tvb, tree, offset, subtype, subtlvlen);
+ }
+ else {
+ isis_dissect_unknown( tvb, tree, offset,
+ "Unknown SubTlv: Type: 0x%02x, Length: %d", subtype, subtlvlen);
+ }
+ length -= subtlvlen;
+ offset += subtlvlen;
+ }
+ }
+}
/*
* The Restart CLV is documented in RFC 3847 (Restart Signaling for
@@ -1034,6 +1215,11 @@ isis_register_hello(int proto_isis) {
&ett_isis_hello_clv_mt,
&ett_isis_hello_clv_restart,
&ett_isis_hello_clv_restart_flags,
+ &ett_isis_hello_clv_mt_port_cap,
+ &ett_isis_hello_clv_mt_port_cap_spb_mcid,
+ &ett_isis_hello_clv_mt_port_cap_spb_aux_mcid,
+ &ett_isis_hello_clv_mt_port_cap_spb_digest,
+ &ett_isis_hello_clv_mt_port_cap_spb_bvid_tuples,
&ett_isis_hello_clv_checksum
};
diff --git a/epan/dissectors/packet-isis-lsp.c b/epan/dissectors/packet-isis-lsp.c
index 8cd73af126..76c0b33bc7 100644
--- a/epan/dissectors/packet-isis-lsp.c
+++ b/epan/dissectors/packet-isis-lsp.c
@@ -26,7 +26,7 @@
* Copyright 2011, Malgi Nikitha Vivekananda <malgi.nikitha@ipinfusion.com>
* Krishnamurthy Mayya <krishnamurthy.mayya@ipinfusion.com>
* - Decoding for Router Capability TLV and associated subTLVs as per RFC 6326
- *
+ * - Decoding for Group Address TLV and associated subTLVs as per RFC 6326
*/
#ifdef HAVE_CONFIG_H
@@ -56,6 +56,12 @@
#define VLAN_GROUP 13
+/*Sub-TLVs under Group Address TLV*/
+#define GRP_MAC_ADDRESS 1
+#define FP_HMAC_SWID_MASK G_GINT64_CONSTANT(0xFFFF00000000)
+#define FP_HMAC_SSWID_MASK G_GINT64_CONSTANT(0x0000FFFF0000)
+#define FP_HMAC_LID_MASK G_GINT64_CONSTANT(0x00000000FFFF)
+
/* lsp packets */
static int hf_isis_lsp_pdu_length = -1;
@@ -75,6 +81,9 @@ static int hf_isis_lsp_att = -1;
static int hf_isis_lsp_hippity = -1;
static int hf_isis_lsp_is_type = -1;
static int hf_isis_lsp_root_id = -1;
+static int hf_isis_lsp_spb_link_metric = -1;
+static int hf_isis_lsp_spb_port_count = -1;
+static int hf_isis_lsp_spb_port_id = -1;
static gint ett_isis_lsp = -1;
static gint ett_isis_lsp_info = -1;
@@ -86,6 +95,7 @@ static gint ett_isis_lsp_clv_ext_is_reachability = -1; /* CLV 22 */
static gint ett_isis_lsp_part_of_clv_ext_is_reachability = -1;
static gint ett_isis_lsp_subclv_admin_group = -1;
static gint ett_isis_lsp_subclv_unrsv_bw = -1;
+static gint ett_isis_lsp_subclv_spb_link_metric = -1;
static gint ett_isis_lsp_clv_unknown = -1;
static gint ett_isis_lsp_clv_partition_dis = -1;
static gint ett_isis_lsp_clv_prefix_neighbors = -1;
@@ -96,6 +106,9 @@ static gint ett_isis_lsp_clv_authentication = -1;
static gint ett_isis_lsp_clv_ip_authentication = -1;
static gint ett_isis_lsp_clv_ipv4_int_addr = -1;
static gint ett_isis_lsp_clv_ipv6_int_addr = -1; /* CLV 232 */
+static gint ett_isis_lsp_clv_mt_cap = -1;
+static gint ett_isis_lsp_clv_mt_cap_spb_instance = -1;
+static gint ett_isis_lsp_clv_mt_cap_spbm_service_identifier = -1;
static gint ett_isis_lsp_clv_ip_reachability = -1;
static gint ett_isis_lsp_clv_ip_reach_subclv = -1;
static gint ett_isis_lsp_clv_ext_ip_reachability = -1; /* CLV 135 */
@@ -107,7 +120,8 @@ static gint ett_isis_lsp_clv_mt_is = -1;
static gint ett_isis_lsp_part_of_clv_mt_is = -1;
static gint ett_isis_lsp_clv_mt_reachable_IPv4_prefx = -1; /* CLV 235 */
static gint ett_isis_lsp_clv_mt_reachable_IPv6_prefx = -1; /* CLV 237 */
-static gint ett_isis_lsp_clv_rt_capable_IPv4_prefx = -1; /* CLV 242 */
+static gint ett_isis_lsp_clv_rt_capable_IPv4_prefx = -1; /* CLV 242 */
+static gint ett_isis_lsp_clv_grp_address_IPv4_prefx = -1; /* CLV 142 */
static const value_string isis_lsp_istype_vals[] = {
{ ISIS_LSP_TYPE_UNUSED0, "Unused 0x0 (invalid)"},
@@ -136,6 +150,8 @@ static void dissect_lsp_l1_is_neighbors_clv(tvbuff_t *tvb,
proto_tree *tree, int offset, int id_length, int length);
static void dissect_lsp_area_address_clv(tvbuff_t *tvb,
proto_tree *tree, int offset, int id_length, int length);
+static void dissect_isis_lsp_clv_mt_cap(tvbuff_t *tvb,
+ proto_tree *tree, int offset, int id_length, int length);
static void dissect_lsp_authentication_clv(tvbuff_t *tvb,
proto_tree *tree, int offset, int id_length, int length);
static void dissect_lsp_ip_authentication_clv(tvbuff_t *tvb,
@@ -159,14 +175,17 @@ static void dissect_lsp_ext_ip_reachability_clv(tvbuff_t *tvb,
static void dissect_lsp_ip_reachability_clv(tvbuff_t *tvb,
proto_tree *tree, int offset, int id_length, int length);
static void dissect_ipreach_subclv(tvbuff_t *tvb,
- proto_tree *tree, int offset, int clv_code, int clv_len);
+ proto_tree *tree, int offset, int clv_code, int clv_len);
static void dissect_lsp_mt_reachable_IPv4_prefx_clv(tvbuff_t *tvb,
- proto_tree *tree, int offset, int id_length, int length);
+ proto_tree *tree, int offset, int id_length, int length);
static void dissect_lsp_mt_reachable_IPv6_prefx_clv(tvbuff_t *tvb,
- proto_tree *tree, int offset, int id_length, int length);
+ proto_tree *tree, int offset, int id_length, int length);
static void dissect_isis_rt_capable_clv(tvbuff_t *tvb,
- proto_tree *tree, int offset, int id_length, int length);
-
+ proto_tree *tree, int offset, int id_length, int length);
+static void dissect_isis_grp_address_clv(tvbuff_t *tvb,
+ proto_tree *tree, int offset, int id_length,int length);
+static void fp_get_hmac_addr (guint64 hmac, guint16 *swid,
+ guint16 *sswid, guint16 *lid);
static const isis_clv_handle_t clv_l1_lsp_opts[] = {
{
@@ -223,18 +242,18 @@ static const isis_clv_handle_t clv_l1_lsp_opts[] = {
&ett_isis_lsp_clv_nlpid,
dissect_lsp_nlpid_clv
},
- {
- ISIS_CLV_HOSTNAME,
- "Hostname",
- &ett_isis_lsp_clv_hostname,
- dissect_lsp_hostname_clv
- },
- {
- ISIS_CLV_TE_ROUTER_ID,
- "Traffic Engineering Router ID",
- &ett_isis_lsp_clv_te_router_id,
- dissect_lsp_te_router_id_clv
- },
+ {
+ ISIS_CLV_HOSTNAME,
+ "Hostname",
+ &ett_isis_lsp_clv_hostname,
+ dissect_lsp_hostname_clv
+ },
+ {
+ ISIS_CLV_TE_ROUTER_ID,
+ "Traffic Engineering Router ID",
+ &ett_isis_lsp_clv_te_router_id,
+ dissect_lsp_te_router_id_clv
+ },
{
ISIS_CLV_IP_ADDR,
"IP Interface address(es)",
@@ -248,6 +267,12 @@ static const isis_clv_handle_t clv_l1_lsp_opts[] = {
dissect_lsp_ipv6_int_addr_clv
},
{
+ ISIS_CLV_MT_CAP,
+ "MT-Capability",
+ &ett_isis_lsp_clv_mt_cap,
+ dissect_isis_lsp_clv_mt_cap
+ },
+ {
ISIS_CLV_AUTHENTICATION,
"Authentication",
&ett_isis_lsp_clv_authentication,
@@ -289,7 +314,12 @@ static const isis_clv_handle_t clv_l1_lsp_opts[] = {
&ett_isis_lsp_clv_rt_capable_IPv4_prefx,
dissect_isis_rt_capable_clv
},
-
+ {
+ ISIS_GRP_ADDR,
+ "GROUP ADDRESS TLV",
+ &ett_isis_lsp_clv_grp_address_IPv4_prefx,
+ dissect_isis_grp_address_clv
+ },
{
0,
"",
@@ -347,18 +377,18 @@ static const isis_clv_handle_t clv_l2_lsp_opts[] = {
&ett_isis_lsp_clv_nlpid,
dissect_lsp_nlpid_clv
},
- {
- ISIS_CLV_HOSTNAME,
- "Hostname",
- &ett_isis_lsp_clv_hostname,
- dissect_lsp_hostname_clv
- },
- {
- ISIS_CLV_TE_ROUTER_ID,
- "Traffic Engineering Router ID",
- &ett_isis_lsp_clv_te_router_id,
- dissect_lsp_te_router_id_clv
- },
+ {
+ ISIS_CLV_HOSTNAME,
+ "Hostname",
+ &ett_isis_lsp_clv_hostname,
+ dissect_lsp_hostname_clv
+ },
+ {
+ ISIS_CLV_TE_ROUTER_ID,
+ "Traffic Engineering Router ID",
+ &ett_isis_lsp_clv_te_router_id,
+ dissect_lsp_te_router_id_clv
+ },
{
ISIS_CLV_EXTD_IP_REACH,
"Extended IP Reachability",
@@ -384,6 +414,12 @@ static const isis_clv_handle_t clv_l2_lsp_opts[] = {
dissect_lsp_ipv6_int_addr_clv
},
{
+ ISIS_CLV_MT_CAP,
+ "MT-Capability",
+ &ett_isis_lsp_clv_mt_cap,
+ dissect_isis_lsp_clv_mt_cap
+ },
+ {
ISIS_CLV_AUTHENTICATION,
"Authentication",
&ett_isis_lsp_clv_authentication,
@@ -427,6 +463,18 @@ static const isis_clv_handle_t clv_l2_lsp_opts[] = {
}
};
+
+static void
+fp_get_hmac_addr (guint64 hmac, guint16 *swid, guint16 *sswid, guint16 *lid) {
+
+ if (!swid || !sswid || !lid) {
+ return;
+ }
+
+ *swid = (guint16) ((hmac & FP_HMAC_SWID_MASK) >> 32);
+ *sswid = (guint16) ((hmac & FP_HMAC_SSWID_MASK) >> 16);
+ *lid = (guint16) (hmac & FP_HMAC_LID_MASK);
+}
/*
* Name: dissect_lsp_mt_id()
*
@@ -451,7 +499,7 @@ dissect_lsp_mt_id(tvbuff_t *tvb, proto_tree *tree, int offset)
mt_block = tvb_get_ntohs(tvb, offset);
proto_tree_add_text ( tree, tvb, offset, 1 ,
- "4 most significant bits reserved, should be set to 0 (%d)", ISIS_LSP_MT_MSHIP_RES(mt_block));
+ "4 most significant bits reserved, should be set to 0 (%d)", ISIS_LSP_MT_MSHIP_RES(mt_block));
mt_id = ISIS_LSP_MT_MSHIP_ID(mt_block);
/*mask out the lower 12 bits */
@@ -476,7 +524,7 @@ dissect_lsp_mt_id(tvbuff_t *tvb, proto_tree *tree, int offset)
}
proto_tree_add_text ( tree, tvb, offset, 2 ,
- "%s (%d)", mt_desc, mt_id);
+ "%s (%d)", mt_desc, mt_id);
}
@@ -570,11 +618,11 @@ dissect_lsp_ip_reachability_clv(tvbuff_t *tvb, proto_tree *tree, int offset,
/* find out if the mask matches one of 33 possible prefix lengths */
bitmask = 0xffffffff;
for(prefix_len = 32; prefix_len >= 0; prefix_len--) {
- if (bitmask==mask) {
- found_mask = TRUE;
- break;
- }
- bitmask = bitmask << 1;
+ if (bitmask==mask) {
+ found_mask = TRUE;
+ break;
+ }
+ bitmask = bitmask << 1;
}
/* If we have a discontiguous netmask, dump the mask, otherwise print the prefix_len */
@@ -586,7 +634,7 @@ dissect_lsp_ip_reachability_clv(tvbuff_t *tvb, proto_tree *tree, int offset,
ip_to_str((guint8*)&src),
prefix_len );
} else {
- ti = proto_tree_add_text ( tree, tvb, offset, 12,
+ ti = proto_tree_add_text ( tree, tvb, offset, 12,
"IPv4 prefix: %s mask %s",
ip_to_str((guint8*)&src),
tvb_ip_to_str(tvb, offset+8));
@@ -603,27 +651,27 @@ dissect_lsp_ip_reachability_clv(tvbuff_t *tvb, proto_tree *tree, int offset,
if (ISIS_LSP_CLV_METRIC_SUPPORTED(tvb_get_guint8(tvb, offset+1))) {
- proto_tree_add_text (ntree, tvb, offset+1, 1, "Delay Metric: Not supported");
- } else {
- proto_tree_add_text (ntree, tvb, offset+1, 1, "Delay Metric: %d, %s",
- ISIS_LSP_CLV_METRIC_VALUE(tvb_get_guint8(tvb, offset+1)),
- ISIS_LSP_CLV_METRIC_IE(tvb_get_guint8(tvb, offset+1)) ? "External" : "Internal");
- }
-
- if (ISIS_LSP_CLV_METRIC_SUPPORTED(tvb_get_guint8(tvb, offset+2))) {
- proto_tree_add_text (ntree, tvb, offset+2, 1, "Expense Metric: Not supported");
+ proto_tree_add_text (ntree, tvb, offset+1, 1, "Delay Metric: Not supported");
+ } else {
+ proto_tree_add_text (ntree, tvb, offset+1, 1, "Delay Metric: %d, %s",
+ ISIS_LSP_CLV_METRIC_VALUE(tvb_get_guint8(tvb, offset+1)),
+ ISIS_LSP_CLV_METRIC_IE(tvb_get_guint8(tvb, offset+1)) ? "External" : "Internal");
+ }
+
+ if (ISIS_LSP_CLV_METRIC_SUPPORTED(tvb_get_guint8(tvb, offset+2))) {
+ proto_tree_add_text (ntree, tvb, offset+2, 1, "Expense Metric: Not supported");
} else {
- proto_tree_add_text (ntree, tvb, offset+2, 1, "Expense Metric: %d, %s",
- ISIS_LSP_CLV_METRIC_VALUE(tvb_get_guint8(tvb, offset+2)),
- ISIS_LSP_CLV_METRIC_IE(tvb_get_guint8(tvb, offset+2)) ? "External" : "Internal");
+ proto_tree_add_text (ntree, tvb, offset+2, 1, "Expense Metric: %d, %s",
+ ISIS_LSP_CLV_METRIC_VALUE(tvb_get_guint8(tvb, offset+2)),
+ ISIS_LSP_CLV_METRIC_IE(tvb_get_guint8(tvb, offset+2)) ? "External" : "Internal");
}
- if (ISIS_LSP_CLV_METRIC_SUPPORTED(tvb_get_guint8(tvb, offset+3))) {
- proto_tree_add_text (ntree, tvb, offset+3, 1, "Error Metric: Not supported");
+ if (ISIS_LSP_CLV_METRIC_SUPPORTED(tvb_get_guint8(tvb, offset+3))) {
+ proto_tree_add_text (ntree, tvb, offset+3, 1, "Error Metric: Not supported");
} else {
- proto_tree_add_text (ntree, tvb, offset+3, 1, "Error Metric: %d, %s",
- ISIS_LSP_CLV_METRIC_VALUE(tvb_get_guint8(tvb, offset+3)),
- ISIS_LSP_CLV_METRIC_IE(tvb_get_guint8(tvb, offset+3)) ? "External" : "Internal");
+ proto_tree_add_text (ntree, tvb, offset+3, 1, "Error Metric: %d, %s",
+ ISIS_LSP_CLV_METRIC_VALUE(tvb_get_guint8(tvb, offset+3)),
+ ISIS_LSP_CLV_METRIC_IE(tvb_get_guint8(tvb, offset+3)) ? "External" : "Internal");
}
}
offset += 12;
@@ -649,34 +697,34 @@ static void
dissect_ipreach_subclv(tvbuff_t *tvb, proto_tree *tree, int offset, int clv_code, int clv_len)
{
- switch (clv_code) {
- case 1:
- while (clv_len >= 4) {
- proto_tree_add_text(tree, tvb, offset, 4,
- "32-Bit Administrative tag: 0x%08x (=%u)",
- tvb_get_ntohl(tvb, offset),
- tvb_get_ntohl(tvb, offset));
- offset+=4;
- clv_len-=4;
- }
- break;
- case 2:
- while (clv_len >= 8) {
- proto_tree_add_text(tree, tvb, offset, 8,
- "64-Bit Administrative tag: 0x%08x%08x",
- tvb_get_ntohl(tvb, offset),
- tvb_get_ntohl(tvb, offset+4));
- offset+=8;
- clv_len-=8;
- }
- break;
-
- default :
- proto_tree_add_text (tree, tvb, offset, clv_len+2,
- "Unknown sub-TLV: code %u, length %u",
- clv_code, clv_len );
- break;
- }
+ switch (clv_code) {
+ case 1:
+ while (clv_len >= 4) {
+ proto_tree_add_text(tree, tvb, offset, 4,
+ "32-Bit Administrative tag: 0x%08x (=%u)",
+ tvb_get_ntohl(tvb, offset),
+ tvb_get_ntohl(tvb, offset));
+ offset+=4;
+ clv_len-=4;
+ }
+ break;
+ case 2:
+ while (clv_len >= 8) {
+ proto_tree_add_text(tree, tvb, offset, 8,
+ "64-Bit Administrative tag: 0x%08x%08x",
+ tvb_get_ntohl(tvb, offset),
+ tvb_get_ntohl(tvb, offset+4));
+ offset+=8;
+ clv_len-=8;
+ }
+ break;
+
+ default :
+ proto_tree_add_text (tree, tvb, offset, clv_len+2,
+ "Unknown sub-TLV: code %u, length %u",
+ clv_code, clv_len );
+ break;
+ }
}
@@ -728,69 +776,202 @@ dissect_lsp_ext_ip_reachability_clv(tvbuff_t *tvb, proto_tree *tree,
if (byte_length == -1) {
isis_dissect_unknown(tvb, tree, offset,
"IPv4 prefix has an invalid length: %d bits", bit_length );
- return;
- }
+ return;
+ }
metric = tvb_get_ntohl(tvb, offset);
subclvs_len = 0;
if ((ctrl_info & 0x40) != 0)
- subclvs_len = 1+tvb_get_guint8(tvb, offset+5+byte_length);
+ subclvs_len = 1+tvb_get_guint8(tvb, offset+5+byte_length);
pi = proto_tree_add_text (tree, tvb, offset, 5+byte_length+subclvs_len,
- "IPv4 prefix: %s/%d, Metric: %u, Distribution: %s, %ssub-TLVs present",
- ip_to_str (prefix),
- bit_length,
- metric,
- ((ctrl_info & 0x80) == 0) ? "up" : "down",
- ((ctrl_info & 0x40) == 0) ? "no " : "" );
-
- /* open up a new tree per prefix */
+ "IPv4 prefix: %s/%d, Metric: %u, Distribution: %s, %ssub-TLVs present",
+ ip_to_str (prefix),
+ bit_length,
+ metric,
+ ((ctrl_info & 0x80) == 0) ? "up" : "down",
+ ((ctrl_info & 0x40) == 0) ? "no " : "" );
+
+ /* open up a new tree per prefix */
subtree = proto_item_add_subtree (pi, ett_isis_lsp_part_of_clv_ext_ip_reachability);
proto_tree_add_text (subtree, tvb, offset+5, byte_length, "IPv4 prefix: %s/%u",
- ip_to_str (prefix),
- bit_length);
+ ip_to_str (prefix), bit_length);
proto_tree_add_text (subtree, tvb, offset, 4, "Metric: %u", metric);
proto_tree_add_text (subtree, tvb, offset+4, 1, "Distribution: %s",
- ((ctrl_info & 0x80) == 0) ? "up" : "down");
+ ((ctrl_info & 0x80) == 0) ? "up" : "down");
len = 5 + byte_length;
if ((ctrl_info & 0x40) != 0) {
- subclvs_len = tvb_get_guint8(tvb, offset+len);
- pi = proto_tree_add_text (subtree, tvb, offset+len, 1, "sub-TLVs present, total length: %u bytes",
- subclvs_len);
- proto_item_set_len (pi, subclvs_len+1);
- /* open up a new tree for the subTLVs */
- subtree2 = proto_item_add_subtree (pi, ett_isis_lsp_clv_ip_reach_subclv);
-
- i =0;
- while (i < subclvs_len) {
+ subclvs_len = tvb_get_guint8(tvb, offset+len);
+ pi = proto_tree_add_text (subtree, tvb, offset+len, 1, "sub-TLVs present, total length: %u bytes",
+ subclvs_len);
+ proto_item_set_len (pi, subclvs_len+1);
+ /* open up a new tree for the subTLVs */
+ subtree2 = proto_item_add_subtree (pi, ett_isis_lsp_clv_ip_reach_subclv);
+
+ i =0;
+ while (i < subclvs_len) {
clv_code = tvb_get_guint8(tvb, offset+len+1); /* skip the total subtlv len indicator */
clv_len = tvb_get_guint8(tvb, offset+len+2);
- /*
- * we pass on now the raw data to the ipreach_subtlv dissector
- * therefore we need to skip 3 bytes
- * (total subtlv len, subtlv type, subtlv len)
- */
- dissect_ipreach_subclv(tvb, subtree2, offset+len+3, clv_code, clv_len);
- i += clv_len + 2;
- }
- len += 1 + subclvs_len;
- } else {
- proto_tree_add_text (subtree, tvb, offset+4, 1, "no sub-TLVs present");
- proto_item_set_len (pi, len);
- }
+ /*
+ * we pass on now the raw data to the ipreach_subtlv dissector
+ * therefore we need to skip 3 bytes
+ * (total subtlv len, subtlv type, subtlv len)
+ */
+ dissect_ipreach_subclv(tvb, subtree2, offset+len+3, clv_code, clv_len);
+ i += clv_len + 2;
+ }
+ len += 1 + subclvs_len;
+ } else {
+ proto_tree_add_text (subtree, tvb, offset+4, 1, "no sub-TLVs present");
+ proto_item_set_len (pi, len);
+ }
offset += len;
length -= len;
}
}
+/*
+ * Name: dissect_isis_grp_address_clv()
+ *
+ * Description: Decode GROUP ADDRESS subTLVs
+ * The Group Address TLV is composed of 1 octet for the type,
+ * 1 octet that specifies the number of bytes in the value field, and a
+ * Variable length value field that can have any or all of the subTLVs that are listed in the
+ * - below section
+ *
+ *Input:
+ * tvbuff_t * : tvbuffer for packet data
+ * proto_tree * : proto tree to build on (may be null)
+ * int : current offset into packet data
+ * int : length of IDs in packet.
+ * int : length of this clv
+ *
+ * Output:
+ * void, will modify proto_tree if not null.
+ */
+
+static void
+dissect_isis_grp_address_clv(tvbuff_t *tvb, proto_tree *tree, int offset,
+ int tree_id,int length)
+{
+ gint len;
+ gint record_num;
+ gint source_num;
+ gint k=1;
+ guint16 mt_block;
+ guint64 hmac_src;
+ guint16 swid = 0;
+ guint16 sswid = 0;
+ guint16 lid = 0;
+
+ proto_item *ti=NULL;
+ proto_tree *rt_tree=NULL;
+
+ const char *mt_desc;
+
+
+ while (length>0) {
+ /* fetch two bytes */
+ mt_block=tvb_get_ntohs(tvb, offset);
+ /* Mask out the lower 8 bits */
+ switch((mt_block&0xff00)>>8) {
+
+
+ case GRP_MAC_ADDRESS:
+ mt_desc="GROUP MAC ADDRESS";
+
+ ti = proto_tree_add_text (tree, tvb, offset,(mt_block&0x00ff)+2 , "%s SUB TLV", mt_desc);
+ rt_tree = proto_item_add_subtree(ti,ett_isis_lsp_clv_grp_address_IPv4_prefx);
+
+ length=length-1;
+ offset=offset+1;
+
+ len=tvb_get_guint8(tvb, offset);/* 1 byte fetched displays the length*/
+ proto_tree_add_text (rt_tree, tvb, offset,1," Length :%d ",len);
+
+ if(len < 5) {
+ length=length-len;
+ offset=offset+len;
+ break;
+ }
+
+ length=length-1;
+ offset=offset+1;
+
+
+ mt_block=tvb_get_ntohs(tvb, offset);/* Fetch the data in the next two bytes for display*/
+ proto_tree_add_text (rt_tree, tvb, offset,2," Topology ID:%d ",(mt_block&0x0fff) );
+
+
+ length=length-2;
+ offset=offset+2;
+ len=len-2;
+
+ mt_block=tvb_get_ntohs(tvb, offset);/* Fetch the data in the next two bytes for display*/
+ proto_tree_add_text (rt_tree,tvb, offset,2," VLAN ID:%d ",(mt_block&0x0fff) );
+ length=length-2;
+ offset=offset+2;
+ len=len-2;
+ record_num=tvb_get_guint8(tvb, offset);/* 1 byte fetched displays the length*/
+ proto_tree_add_text (rt_tree,tvb, offset,1, " Number of records :%d ",record_num);
+ length=length-1;
+ offset=offset+1;
+ len=len-1;
+
+ while(len > 0) {
+
+ source_num=tvb_get_guint8(tvb, offset);
+ proto_tree_add_text (rt_tree,tvb, offset,1," Number of sources :%d ",source_num);
+
+ length=length-1;
+ offset=offset+1;
+ len=len-1;
+
+ hmac_src=tvb_get_ntoh48(tvb, offset);/* Fetch the data in the next two bytes for display*/
+
+ fp_get_hmac_addr (hmac_src, &swid, &sswid, &lid);
+ proto_tree_add_text (rt_tree,tvb, offset,6," Group Address:%04x.%04x.%04x ",swid, sswid, lid );
+
+ length=length-6;
+ offset=offset+6;
+ len=len-6;
+
+ while((len > 0) && (source_num > 0)) {
+ hmac_src = tvb_get_ntoh48 (tvb, offset);
+ fp_get_hmac_addr (hmac_src, &swid, &sswid, &lid);
+ proto_tree_add_text (rt_tree,tvb, offset,6," Source Address (%d):%04x.%04x.%04x",k,swid, sswid, lid);
+
+ k=k+1;
+ length=length-6;
+ offset=offset+6;
+ len=len-6;
+ source_num--;
+ }
+ }
+
+ break;
+
+
+ default:
+ mt_desc="INVALID";
+ proto_tree_add_uint_format ( tree, tree_id, tvb, offset,(mt_block&0x00ff)+2,
+ mt_block,
+ "%s SUB TLV",mt_desc );
+ offset=offset+1;
+ length=length-2-(tvb_get_guint8(tvb, offset));
+ offset=offset+1+(tvb_get_guint8(tvb, offset));
+ break;
+ }
+ }
+}
/*
* Name: dissect_isis_rt_capable_clv()
@@ -799,7 +980,7 @@ dissect_lsp_ext_ip_reachability_clv(tvbuff_t *tvb, proto_tree *tree,
*
* The Router Capability TLV is composed of 1 octet for the type,
* 1 octet that specifies the number of bytes in the value field, and a
- * variable length value field that can have any or all of the subTLVs
+ * variable length value field that can have any or all of the subTLVs
* that are listed in the below section
*
* Input:
@@ -819,307 +1000,298 @@ static void
dissect_isis_rt_capable_clv(tvbuff_t *tvb,
proto_tree *tree, int offset, int id_length _U_, int length)
{
+ gint len;
+ guint16 rt_block;
+ guint32 rt_block1;
+ proto_item *ti;
+ proto_tree *rt_tree;
+ const char *mt_desc;
+ gint root_id = 1; /* To display the root id */
+ gint sec_vlan_id = 1; /* To display the seconadary VLAN id */
+ length = length - 5; /* Ignoring the 5 reserved bytes */
+ offset = offset + 5;
- gint len;
- guint16 rt_block;
- guint32 rt_block1;
- proto_item *ti;
- proto_tree *rt_tree;
+ while (length>1) {
+ /* fetch two bytes */
+ rt_block = tvb_get_ntohs(tvb, offset);
- const char *mt_desc;
- gint root_id = 1; /* To display the root id */
- gint sec_vlan_id = 1; /* To display the seconadary VLAN id */
- length = length - 5; /* Ignoring the 5 reserved bytes */
- offset = offset + 5;
+ /* Mask out the lower 8 bits */
+ switch ((rt_block&0xff00)>>8) {
- while (length>1) {
- /* length can only be a multiple of 2, otherwise there is
- something broken -> so decode down until length is 1 */
- if (length!=1) {
- /* fetch two bytes */
- rt_block = tvb_get_ntohs(tvb, offset);
+ case TRILL_VERSION:
+ mt_desc = "TRILL version";
- /* Mask out the lower 8 bits */
- switch ((rt_block&0xff00)>>8) {
+ ti = proto_tree_add_text(tree, tvb, offset, (rt_block&0x00ff)+2, "%s sub tlv", mt_desc);
- case TRILL_VERSION:
- mt_desc = "TRILL version";
+ rt_tree = proto_item_add_subtree(ti, ett_isis_lsp_clv_rt_capable_IPv4_prefx);
- ti = proto_tree_add_text(tree, tvb, offset, (rt_block&0x00ff)+2, "%s sub tlv", mt_desc);
+ length = length-1;
+ offset = offset+1;
- rt_tree = proto_item_add_subtree(ti, ett_isis_lsp_clv_rt_capable_IPv4_prefx);
+ len = tvb_get_guint8(tvb, offset); /* 1 byte fetched displays the length */
+ proto_tree_add_text(rt_tree, tvb, offset, 1, "Length: %d", len);
- length = length-1;
- offset = offset+1;
+ rt_block = tvb_get_ntohs(tvb, offset); /* Fetch the data in the next two bytes for display */
+ proto_tree_add_text(rt_tree, tvb, offset+1, 1, "Maximum version: %d", (rt_block&0x00ff));
- len = tvb_get_guint8(tvb, offset); /* 1 byte fetched displays the length */
- proto_tree_add_text(rt_tree, tvb, offset, 1, "Length: %d", len);
-
- rt_block = tvb_get_ntohs(tvb, offset); /* Fetch the data in the next two bytes for display */
- proto_tree_add_text(rt_tree, tvb, offset+1, 1, "Maximum version: %d", (rt_block&0x00ff));
+ length = length-2;
+ offset = offset+2;
- length = length-2;
- offset = offset+2;
+ break;
- break;
-
- case TREES:
- mt_desc = "Trees";
- ti = proto_tree_add_text(tree, tvb, offset, (rt_block&0x00ff)+2, "%s sub tlv", mt_desc);
+ case TREES:
+ mt_desc = "Trees";
+ ti = proto_tree_add_text(tree, tvb, offset, (rt_block&0x00ff)+2, "%s sub tlv", mt_desc);
- rt_tree = proto_item_add_subtree(ti, ett_isis_lsp_clv_rt_capable_IPv4_prefx);
-
- length = length-1;
- offset = offset+1;
+ rt_tree = proto_item_add_subtree(ti, ett_isis_lsp_clv_rt_capable_IPv4_prefx);
- len = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(rt_tree, tvb, offset, 1, "Length: %d", len);
+ length = length-1;
+ offset = offset+1;
- length = length-1;
- offset = offset+1;
+ len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(rt_tree, tvb, offset, 1, "Length: %d", len);
- rt_block = tvb_get_ntohs(tvb, offset);
- proto_tree_add_text(rt_tree, tvb, offset, 2, "Nof. trees to compute: %d", rt_block);
+ length = length-1;
+ offset = offset+1;
- length = length-2;
- offset = offset+2;
+ rt_block = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_text(rt_tree, tvb, offset, 2, "Nof. trees to compute: %d", rt_block);
- rt_block = tvb_get_ntohs(tvb, offset);
- proto_tree_add_text(rt_tree, tvb, offset, 2, "Maximum nof. trees to compute: %d", rt_block);
+ length = length-2;
+ offset = offset+2;
- length = length-2;
- offset = offset+2;
+ rt_block = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_text(rt_tree, tvb, offset, 2, "Maximum nof. trees to compute: %d", rt_block);
- rt_block = tvb_get_ntohs(tvb, offset);
+ length = length-2;
+ offset = offset+2;
- proto_tree_add_text(rt_tree, tvb, offset, 2, "Nof. trees to use: %d", rt_block);
+ rt_block = tvb_get_ntohs(tvb, offset);
- length = length-2;
- offset = offset+2;
+ proto_tree_add_text(rt_tree, tvb, offset, 2, "Nof. trees to use: %d", rt_block);
- break;
+ length = length-2;
+ offset = offset+2;
- case TREE_IDENTIFIER:
- mt_desc = "Tree root identifier";
- ti=proto_tree_add_text(tree, tvb, offset, (rt_block&0x00ff)+2, "%s sub tlv", mt_desc);
+ break;
- rt_tree = proto_item_add_subtree(ti, ett_isis_lsp_clv_rt_capable_IPv4_prefx);
-
- length = length-1;
- offset = offset+1;
+ case TREE_IDENTIFIER:
+ mt_desc = "Tree root identifier";
+ ti=proto_tree_add_text(tree, tvb, offset, (rt_block&0x00ff)+2, "%s sub tlv", mt_desc);
- len = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(rt_tree, tvb, offset, 1, "Length: %d", len);
+ rt_tree = proto_item_add_subtree(ti, ett_isis_lsp_clv_rt_capable_IPv4_prefx);
- rt_block = tvb_get_ntohs(tvb, offset+1);
+ length = length-1;
+ offset = offset+1;
- proto_tree_add_text(rt_tree, tvb, offset+1, 2, "Starting tree no: %d", rt_block);
+ len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(rt_tree, tvb, offset, 1, "Length: %d", len);
- len = len-2;
- length = length-2;
- offset = offset+3;
+ rt_block = tvb_get_ntohs(tvb, offset+1);
- while (len>1) {
- rt_block = tvb_get_ntohs(tvb, offset);
- proto_tree_add_text(rt_tree, tvb, offset, 2, "Nickname(%dth root): %d", root_id, rt_block);
- root_id = root_id+1;
- len = len-2;
- length = length-2;
- offset = offset+2;
- }
- break;
+ proto_tree_add_text(rt_tree, tvb, offset+1, 2, "Starting tree no: %d", rt_block);
- case NICKNAME:
- mt_desc = "The nickname";
- ti=proto_tree_add_text(tree, tvb, offset, (rt_block&0x00ff)+2, "%s sub tlv", mt_desc);
+ len = len-2;
+ length = length-2;
+ offset = offset+3;
- rt_tree = proto_item_add_subtree(ti, ett_isis_lsp_clv_rt_capable_IPv4_prefx);
+ while (len>1) {
+ rt_block = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_text(rt_tree, tvb, offset, 2, "Nickname(%dth root): %d", root_id, rt_block);
+ root_id = root_id+1;
+ len = len-2;
+ length = length-2;
+ offset = offset+2;
+ }
+ break;
- length = length-1;
- offset = offset+1;
- len = tvb_get_guint8(tvb, offset);
+ case NICKNAME:
+ mt_desc = "The nickname";
+ ti=proto_tree_add_text(tree, tvb, offset, (rt_block&0x00ff)+2, "%s sub tlv", mt_desc);
- proto_tree_add_text(rt_tree, tvb, offset, 1, "Length: %d", len);
- length = length-1;
- offset = offset+1;
+ rt_tree = proto_item_add_subtree(ti, ett_isis_lsp_clv_rt_capable_IPv4_prefx);
- while (len>0) {
- rt_block = tvb_get_ntohs(tvb, offset);
+ length = length-1;
+ offset = offset+1;
+ len = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(rt_tree, tvb, offset, 1, "Nickname priority: %d", ((rt_block&0xff00)>>8));
+ proto_tree_add_text(rt_tree, tvb, offset, 1, "Length: %d", len);
+ length = length-1;
+ offset = offset+1;
- length = length-1;
- offset = offset+1;
- len = len-1;
- rt_block = tvb_get_ntohs(tvb, offset);
+ while (len>0) {
+ rt_block = tvb_get_ntohs(tvb, offset);
- proto_tree_add_text(rt_tree, tvb, offset, 2, "Tree root priority: %d", rt_block);
+ proto_tree_add_text(rt_tree, tvb, offset, 1, "Nickname priority: %d", ((rt_block&0xff00)>>8));
- length = length-2;
- offset = offset+2;
- len = len-2;
+ length = length-1;
+ offset = offset+1;
+ len = len-1;
+ rt_block = tvb_get_ntohs(tvb, offset);
- rt_block = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_text(rt_tree, tvb, offset, 2, "Tree root priority: %d", rt_block);
- proto_tree_add_text(rt_tree, tvb, offset, 2, "Nickname: %x", rt_block);
+ length = length-2;
+ offset = offset+2;
+ len = len-2;
- length = length-2;
- offset = offset+2;
- len = len-2;
- }
- break;
+ rt_block = tvb_get_ntohs(tvb, offset);
- case INTERESTED_VLANS:
- mt_desc = "Interested VLAN and spanning tree root";
- ti = proto_tree_add_text(tree, tvb, offset, (rt_block&0x00ff)+2, "%s sub tlv", mt_desc);
+ proto_tree_add_text(rt_tree, tvb, offset, 2, "Nickname: %x", rt_block);
- rt_tree = proto_item_add_subtree(ti, ett_isis_lsp_clv_rt_capable_IPv4_prefx);
+ length = length-2;
+ offset = offset+2;
+ len = len-2;
+ }
+ break;
+
+ case INTERESTED_VLANS:
+ mt_desc = "Interested VLAN and spanning tree root";
+ ti = proto_tree_add_text(tree, tvb, offset, (rt_block&0x00ff)+2, "%s sub tlv", mt_desc);
- length = length-1;
- offset = offset+1;
+ rt_tree = proto_item_add_subtree(ti, ett_isis_lsp_clv_rt_capable_IPv4_prefx);
- len = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(rt_tree, tvb, offset, 1, "Length: %d", len);
+ length = length-1;
+ offset = offset+1;
- length = length-1;
- offset = offset+1;
- len = len-1;
+ len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(rt_tree, tvb, offset, 1, "Length: %d", len);
- rt_block = tvb_get_ntohs(tvb, offset);
+ length = length-1;
+ offset = offset+1;
+ len = len-1;
- proto_tree_add_text(rt_tree, tvb, offset, 2, "Nickname: %x", rt_block);
+ rt_block = tvb_get_ntohs(tvb, offset);
- length = length-2;
- offset = offset+2;
- len = len-2;
+ proto_tree_add_text(rt_tree, tvb, offset, 2, "Nickname: %x", rt_block);
- rt_block = tvb_get_ntohs(tvb, offset);
+ length = length-2;
+ offset = offset+2;
+ len = len-2;
- proto_tree_add_text(rt_tree, tvb, offset, 2,
- "%s%s", (rt_block&0x8000) ? "IPv4 multicast router set, " : "IPv4 multicast router not set, ",
- (rt_block&0x4000) ? "IPv6 multicast router set" : "IPv6 multicast router not set");
- proto_tree_add_text(rt_tree, tvb, offset, 2, "Vlan start id: %x", (rt_block&0x0fff));
+ rt_block = tvb_get_ntohs(tvb, offset);
- length = length-2;
- offset = offset+2;
- len = len-2;
+ proto_tree_add_text(rt_tree, tvb, offset, 2,
+ "%s%s", (rt_block&0x8000) ? "IPv4 multicast router set, " : "IPv4 multicast router not set, ",
+ (rt_block&0x4000) ? "IPv6 multicast router set" : "IPv6 multicast router not set");
+ proto_tree_add_text(rt_tree, tvb, offset, 2, "Vlan start id: %x", (rt_block&0x0fff));
- rt_block = tvb_get_ntohs(tvb, offset);
+ length = length-2;
+ offset = offset+2;
+ len = len-2;
- proto_tree_add_text(rt_tree, tvb, offset, 2, "Vlan end id: %x", (rt_block&0x0fff));
+ rt_block = tvb_get_ntohs(tvb, offset);
- length = length-2;
- offset = offset+2;
- len = len-2;
+ proto_tree_add_text(rt_tree, tvb, offset, 2, "Vlan end id: %x", (rt_block&0x0fff));
- rt_block1 = tvb_get_ntohl(tvb, offset);
+ length = length-2;
+ offset = offset+2;
+ len = len-2;
- proto_tree_add_text(rt_tree, tvb, offset, 4, "Appointed forward state lost counter: %d", rt_block1);
+ rt_block1 = tvb_get_ntohl(tvb, offset);
- length = length-4;
- offset = offset+4;
- len = len-4;
+ proto_tree_add_text(rt_tree, tvb, offset, 4, "Appointed forward state lost counter: %d", rt_block1);
- while (len>0) {
- proto_tree_add_item(rt_tree, hf_isis_lsp_root_id, tvb, offset,
- 6, ENC_BIG_ENDIAN);
+ length = length-4;
+ offset = offset+4;
+ len = len-4;
- length = length-6;
- offset = offset+6;
- len = len-6;
- length = length-2;
- }
- break;
+ while (len>0) {
+ proto_tree_add_item(rt_tree, hf_isis_lsp_root_id, tvb, offset, 6, ENC_BIG_ENDIAN);
- case TREES_USED_IDENTIFIER:
- mt_desc = "Trees used identifier";
-
- ti=proto_tree_add_text(tree, tvb, offset, (rt_block&0x00ff)+2, "%s sub tlv", mt_desc);
+ length = length-6;
+ offset = offset+6;
+ len = len-6;
+ length = length-2;
+ }
+ break;
- rt_tree = proto_item_add_subtree(ti, ett_isis_lsp_clv_rt_capable_IPv4_prefx);
+ case TREES_USED_IDENTIFIER:
+ mt_desc = "Trees used identifier";
- length = length-1;
- offset = offset+1;
+ ti=proto_tree_add_text(tree, tvb, offset, (rt_block&0x00ff)+2, "%s sub tlv", mt_desc);
- len = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(rt_tree, tvb, offset, 1, "Length: %d", len);
+ rt_tree = proto_item_add_subtree(ti, ett_isis_lsp_clv_rt_capable_IPv4_prefx);
- rt_block = tvb_get_ntohs(tvb, offset+1);
+ length = length-1;
+ offset = offset+1;
- proto_tree_add_text(rt_tree, tvb, offset+1, 2, "Starting tree no: %d", rt_block);
- len = len-2;
- length = length-2;
- offset = offset+3;
- root_id = 1;
+ len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(rt_tree, tvb, offset, 1, "Length: %d", len);
- while (len>0) {
- rt_block = tvb_get_ntohs(tvb, offset);
- proto_tree_add_text(rt_tree, tvb, offset,2,"Nickname(%dth root): %d", root_id, rt_block);
- root_id = root_id+1;
+ rt_block = tvb_get_ntohs(tvb, offset+1);
- len = len-2;
- offset = offset+2;
- length = length-2;
- }
- break;
+ proto_tree_add_text(rt_tree, tvb, offset+1, 2, "Starting tree no: %d", rt_block);
+ len = len-2;
+ length = length-2;
+ offset = offset+3;
+ root_id = 1;
- case VLAN_GROUP:
- mt_desc = "The VLAN group";
- ti = proto_tree_add_text(tree, tvb, offset, (rt_block&0x00ff)+2, "%s sub tlv", mt_desc);
+ while (len>0) {
+ rt_block = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_text(rt_tree, tvb, offset,2,"Nickname(%dth root): %d", root_id, rt_block);
+ root_id = root_id+1;
- rt_tree = proto_item_add_subtree(ti, ett_isis_lsp_clv_rt_capable_IPv4_prefx);
+ len = len-2;
+ offset = offset+2;
+ length = length-2;
+ }
+ break;
- length = length-1;
- offset = offset+1;
-
- len = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(rt_tree, tvb, offset, 1, "Length: %d", len);
+ case VLAN_GROUP:
+ mt_desc = "The VLAN group";
+ ti = proto_tree_add_text(tree, tvb, offset, (rt_block&0x00ff)+2, "%s sub tlv", mt_desc);
- len = len-1;
- length = length-1;
- offset = offset+1;
+ rt_tree = proto_item_add_subtree(ti, ett_isis_lsp_clv_rt_capable_IPv4_prefx);
- rt_block = tvb_get_ntohs(tvb, offset);
- proto_tree_add_text(rt_tree, tvb, offset, 2, "Primary vlan id: %d", (rt_block&0x0fff));
-
- length = length-2;
- offset = offset+2;
- len = len-2;
+ length = length-1;
+ offset = offset+1;
- rt_block = tvb_get_ntohs(tvb, offset);
- proto_tree_add_text(rt_tree, tvb, offset, 2, "Secondary vlan id: %d", (rt_block&0x0fff));
-
- length = length-2;
- offset = offset+2;
- len = len-2;
- sec_vlan_id = 1;
-
- while (len>0) {
- rt_block = tvb_get_ntohs(tvb, offset);
-
- proto_tree_add_text(rt_tree, tvb, offset, 2, "%dth secondary vlan id: %x", sec_vlan_id, rt_block);
-
- length = length-2;
- offset = offset+2;
- sec_vlan_id = sec_vlan_id+1;
- len = len-2;
- }
- break;
-
- default:
- mt_desc = "INVALID";
- ti = proto_tree_add_text(tree, tvb, offset, (rt_block&0x00ff)+2, "%s sub tlv", mt_desc);
-
- rt_tree = proto_item_add_subtree(ti, ett_isis_lsp_clv_rt_capable_IPv4_prefx);
-
- offset = offset+1;
- length = length-2-(tvb_get_guint8(tvb, offset));
- offset = offset+1+(tvb_get_guint8(tvb, offset));
- break;
- }
- }
- }
+ len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(rt_tree, tvb, offset, 1, "Length: %d", len);
+
+ len = len-1;
+ length = length-1;
+ offset = offset+1;
+
+ rt_block = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_text(rt_tree, tvb, offset, 2, "Primary vlan id: %d", (rt_block&0x0fff));
+
+ length = length-2;
+ offset = offset+2;
+ len = len-2;
+
+ rt_block = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_text(rt_tree, tvb, offset, 2, "Secondary vlan id: %d", (rt_block&0x0fff));
+
+ length = length-2;
+ offset = offset+2;
+ len = len-2;
+ sec_vlan_id = 1;
+
+ while (len>0) {
+ rt_block = tvb_get_ntohs(tvb, offset);
+
+ proto_tree_add_text(rt_tree, tvb, offset, 2, "%dth secondary vlan id: %x", sec_vlan_id, rt_block);
+
+ length = length-2;
+ offset = offset+2;
+ sec_vlan_id = sec_vlan_id+1;
+ len = len-2;
+ }
+ break;
+
+ default:
+ mt_desc = "INVALID";
+ proto_tree_add_text(tree, tvb, offset, (rt_block&0x00ff)+2, "%s sub tlv", mt_desc);
+
+ offset = offset+1;
+ length = length-2-(tvb_get_guint8(tvb, offset));
+ offset = offset+1+(tvb_get_guint8(tvb, offset));
+ break;
+ }
+ }
}
@@ -1167,63 +1339,63 @@ dissect_lsp_ipv6_reachability_clv(tvbuff_t *tvb, proto_tree *tree, int offset,
if (byte_length == -1) {
isis_dissect_unknown(tvb, tree, offset,
"IPv6 prefix has an invalid length: %d bits", bit_length );
- return;
- }
+ return;
+ }
metric = tvb_get_ntohl(tvb, offset);
subclvs_len = 0;
if ((ctrl_info & 0x20) != 0)
- subclvs_len = 1+tvb_get_guint8(tvb, offset+6+byte_length);
+ subclvs_len = 1+tvb_get_guint8(tvb, offset+6+byte_length);
pi = proto_tree_add_text (tree, tvb, offset, 6+byte_length+subclvs_len,
- "IPv6 prefix: %s/%u, Metric: %u, Distribution: %s, %s, %ssub-TLVs present",
- ip6_to_str (&prefix),
- bit_length,
- metric,
- ((ctrl_info & 0x80) == 0) ? "up" : "down",
- ((ctrl_info & 0x40) == 0) ? "internal" : "external",
- ((ctrl_info & 0x20) == 0) ? "no " : "" );
+ "IPv6 prefix: %s/%u, Metric: %u, Distribution: %s, %s, %ssub-TLVs present",
+ ip6_to_str (&prefix),
+ bit_length,
+ metric,
+ ((ctrl_info & 0x80) == 0) ? "up" : "down",
+ ((ctrl_info & 0x40) == 0) ? "internal" : "external",
+ ((ctrl_info & 0x20) == 0) ? "no " : "" );
subtree = proto_item_add_subtree (pi, ett_isis_lsp_part_of_clv_ipv6_reachability);
proto_tree_add_text (subtree, tvb, offset+6, byte_length, "IPv6 prefix: %s/%u",
- ip6_to_str (&prefix),
- bit_length);
+ ip6_to_str (&prefix),
+ bit_length);
proto_tree_add_text (subtree, tvb, offset, 4,
- "Metric: %u", metric);
+ "Metric: %u", metric);
proto_tree_add_text (subtree, tvb, offset+4, 1,
- "Distribution: %s, %s",
- ((ctrl_info & 0x80) == 0) ? "up" : "down",
- ((ctrl_info & 0x40) == 0) ? "internal" : "external" );
+ "Distribution: %s, %s",
+ ((ctrl_info & 0x80) == 0) ? "up" : "down",
+ ((ctrl_info & 0x40) == 0) ? "internal" : "external" );
if ((ctrl_info & 0x1f) != 0) {
proto_tree_add_text (subtree, tvb, offset+4, 1,
- "Reserved bits: 0x%x",
- (ctrl_info & 0x1f) );
- }
+ "Reserved bits: 0x%x",
+ (ctrl_info & 0x1f) );
+ }
len = 6 + byte_length;
if ((ctrl_info & 0x20) != 0) {
- subclvs_len = tvb_get_guint8(tvb, offset+len);
- pi = proto_tree_add_text (subtree, tvb, offset+len, 1, "sub-TLVs present, total length: %u bytes",
- subclvs_len);
- proto_item_set_len (pi, subclvs_len+1);
- /* open up a new tree for the subTLVs */
- subtree2 = proto_item_add_subtree (pi, ett_isis_lsp_clv_ip_reach_subclv);
-
- i =0;
- while (i < subclvs_len) {
+ subclvs_len = tvb_get_guint8(tvb, offset+len);
+ pi = proto_tree_add_text (subtree, tvb, offset+len, 1, "sub-TLVs present, total length: %u bytes",
+ subclvs_len);
+ proto_item_set_len (pi, subclvs_len+1);
+ /* open up a new tree for the subTLVs */
+ subtree2 = proto_item_add_subtree (pi, ett_isis_lsp_clv_ip_reach_subclv);
+
+ i =0;
+ while (i < subclvs_len) {
clv_code = tvb_get_guint8(tvb, offset+len+1); /* skip the total subtlv len indicator */
clv_len = tvb_get_guint8(tvb, offset+len+2);
- dissect_ipreach_subclv(tvb, subtree2, offset+len+3, clv_code, clv_len);
- i += clv_len + 2;
- }
- len += 1 + subclvs_len;
- } else {
- proto_tree_add_text (subtree, tvb, offset+4, 1, "no sub-TLVs present");
- proto_item_set_len (pi, len);
- }
+ dissect_ipreach_subclv(tvb, subtree2, offset+len+3, clv_code, clv_len);
+ i += clv_len + 2;
+ }
+ len += 1 + subclvs_len;
+ } else {
+ proto_tree_add_text (subtree, tvb, offset+4, 1, "no sub-TLVs present");
+ proto_item_set_len (pi, len);
+ }
offset += len;
length -= len;
}
@@ -1298,7 +1470,7 @@ static void
dissect_lsp_hostname_clv(tvbuff_t *tvb, proto_tree *tree, int offset,
int id_length _U_, int length)
{
- isis_dissect_hostname_clv(tvb, tree, offset, length,
+ isis_dissect_hostname_clv(tvb, tree, offset, length,
hf_isis_lsp_hostname);
}
@@ -1324,8 +1496,8 @@ static void
dissect_lsp_te_router_id_clv(tvbuff_t *tvb, proto_tree *tree, int offset,
int id_length _U_, int length)
{
- isis_dissect_te_router_id_clv(tvb, tree, offset, length,
- hf_isis_lsp_clv_te_router_id );
+ isis_dissect_te_router_id_clv(tvb, tree, offset, length,
+ hf_isis_lsp_clv_te_router_id );
}
@@ -1379,6 +1551,249 @@ dissect_lsp_ipv6_int_addr_clv(tvbuff_t *tvb, proto_tree *tree, int offset,
hf_isis_lsp_clv_ipv6_int_addr );
}
+static void
+dissect_isis_lsp_clv_mt_cap_spb_instance(tvbuff_t *tvb,
+ proto_tree *tree, int offset, int subtype, int sublen)
+{
+ const int CIST_ROOT_ID_LEN = 8; /* CIST Root Identifier */
+ const int CIST_EXT_ROOT_PATH_COST_LEN = 4; /* CIST External Root Path Cost */
+ const int BRIDGE_PRI_LEN = 2; /* Bridge Priority */
+ const int V_SPSOURCEID_LEN = 4; /* v | SPSourceID */
+ const int NUM_TREES_LEN = 1; /* num of trees */
+
+ const int CIST_ROOT_ID_OFFSET = 0;
+ const int CIST_EXT_ROOT_PATH_COST_OFFSET = CIST_ROOT_ID_OFFSET + CIST_ROOT_ID_LEN;
+ const int BRIDGE_PRI_OFFSET = CIST_EXT_ROOT_PATH_COST_OFFSET + CIST_EXT_ROOT_PATH_COST_LEN;
+ const int V_SPSOURCEID_OFFSET = BRIDGE_PRI_OFFSET + BRIDGE_PRI_LEN;
+ const int NUM_TREES_OFFSET = V_SPSOURCEID_OFFSET + V_SPSOURCEID_LEN;
+ const int FIXED_LEN = NUM_TREES_OFFSET + NUM_TREES_LEN;
+ const int VLAN_ID_TUPLE_LEN = 8;
+
+ if (sublen < FIXED_LEN) {
+ isis_dissect_unknown( tvb, tree, offset,
+ "Short SPB Digest subTLV (%d vs %d)", sublen, FIXED_LEN);
+ return;
+ }
+ else {
+ proto_tree *subtree, *ti;
+ int subofs = offset;
+ const guint8 *cist_root_identifier = tvb_get_ptr (tvb, subofs + CIST_ROOT_ID_OFFSET, CIST_ROOT_ID_LEN);
+ const guint32 cist_root_path_cost = tvb_get_ntohl (tvb, subofs + CIST_EXT_ROOT_PATH_COST_OFFSET);
+ const guint16 bridge_priority = tvb_get_ntohs (tvb, subofs + BRIDGE_PRI_OFFSET);
+ const guint32 v_spsourceid = tvb_get_ntohl (tvb, subofs + V_SPSOURCEID_OFFSET);
+ guint8 num_trees = tvb_get_guint8(tvb, subofs + NUM_TREES_OFFSET);
+
+ /*************************/
+ ti = proto_tree_add_text( tree, tvb, offset-2, sublen+2,
+ "SPB Instance: Type: 0x%02x, Length: %d", subtype, sublen);
+ subtree = proto_item_add_subtree(ti, ett_isis_lsp_clv_mt_cap_spb_instance);
+
+ /*************************/
+ proto_tree_add_text( subtree, tvb, subofs + CIST_ROOT_ID_OFFSET, CIST_ROOT_ID_LEN,
+ "CIST Root Identifier: %08x-%08x-%08x-%08x-%08x-%08x-%08x-%08x",
+ cist_root_identifier[0],
+ cist_root_identifier[1],
+ cist_root_identifier[2],
+ cist_root_identifier[3],
+ cist_root_identifier[4],
+ cist_root_identifier[5],
+ cist_root_identifier[6],
+ cist_root_identifier[7]);
+ proto_tree_add_text( subtree, tvb, subofs + CIST_EXT_ROOT_PATH_COST_OFFSET, CIST_EXT_ROOT_PATH_COST_LEN,
+ "CIST External Root Path Cost: 0x%08x (%u)",
+ cist_root_path_cost,
+ cist_root_path_cost);
+ proto_tree_add_text( subtree, tvb, subofs + BRIDGE_PRI_OFFSET, BRIDGE_PRI_LEN,
+ "Bridge Priority: 0x%04x (%u)",
+ bridge_priority,
+ bridge_priority);
+ proto_tree_add_text( subtree, tvb, subofs + V_SPSOURCEID_OFFSET, V_SPSOURCEID_LEN,
+ "V: %u, SPSourceId: 0x%05x (%u)",
+ (v_spsourceid & (1 << 20)) ? 1 : 0,
+ v_spsourceid & 0xfffff,
+ v_spsourceid & 0xfffff);
+ proto_tree_add_text( subtree, tvb, subofs + NUM_TREES_OFFSET, NUM_TREES_LEN,
+ "Number of Trees: 0x%02x (%u)%s",
+ num_trees,
+ num_trees,
+ num_trees ? "" : " Invalid subTLV: zero trees");
+
+ subofs += FIXED_LEN;
+ sublen -= FIXED_LEN;
+
+ /*************************/
+ if (sublen != (num_trees * VLAN_ID_TUPLE_LEN)) {
+ proto_tree_add_text( subtree, tvb, subofs, 0,
+ "SubTLV length doesn't match number of trees");
+ return;
+ }
+ while (sublen > 0 && num_trees > 0) {
+ if (sublen < VLAN_ID_TUPLE_LEN) {
+ isis_dissect_unknown( tvb, subtree, offset,
+ "Short VLAN_ID entry (%d vs %d)", sublen, VLAN_ID_TUPLE_LEN);
+ return;
+ }
+ else {
+ const guint8 flags = tvb_get_guint8(tvb, subofs);
+ const guint8 *ect_id = tvb_get_ptr(tvb, subofs + 1, 4);
+ const guint8 *bvid_spvid = tvb_get_ptr(tvb, subofs + 1 + 4, 3);
+ const guint16 bvid = (0xff0 & (((guint16)bvid_spvid[0]) << 4)) | (0x0f & (bvid_spvid[1] >> 4));
+ const guint16 spvid = (0xf00 & (((guint16)bvid_spvid[1]) << 8)) | (0xff & (bvid_spvid[2]));
+ proto_tree_add_text( subtree, tvb, subofs, VLAN_ID_TUPLE_LEN,
+ " U: %u, M: %u, A: %u, ECT: %02x-%02x-%02x-%02x, BVID: 0x%03x (%d),%s SPVID: 0x%03x (%d)",
+ (flags >> 7) & 1,
+ (flags >> 6) & 1,
+ (flags >> 5) & 1,
+ ect_id[0], ect_id[1], ect_id[2], ect_id[3],
+ bvid, bvid,
+ ( bvid < 10 ? " "
+ : bvid < 100 ? " "
+ : bvid < 1000 ? " "
+ : ""),
+ spvid, spvid);
+ subofs += VLAN_ID_TUPLE_LEN;
+ sublen -= VLAN_ID_TUPLE_LEN;
+ --num_trees;
+ }
+ }
+ if (num_trees) {
+ isis_dissect_unknown( tvb, subtree, offset,
+ "Short subTLV (%d vs %d)", sublen, num_trees * VLAN_ID_TUPLE_LEN);
+ return;
+ }
+ }
+}
+static void
+dissect_isis_lsp_clv_mt_cap_spb_oalg(tvbuff_t *tvb,
+ proto_tree *tree, int offset, int subtype, int sublen)
+{
+ isis_dissect_unknown( tvb, tree, offset,
+ "MT-Cap SPB Opaque Algorithm: Type: 0x%02x, Length: %d", subtype, sublen);
+}
+static void
+dissect_isis_lsp_clv_mt_cap_spbm_service_identifier(tvbuff_t *tvb,
+ proto_tree *tree, int offset, int subtype, int sublen)
+{
+ const int BMAC_LEN = 6; /* B-MAC Address */
+ const int BVID_LEN = 2; /* Base-VID */
+
+ const int BMAC_OFFSET = 0;
+ const int BVID_OFFSET = BMAC_OFFSET + BMAC_LEN;
+ const int FIXED_LEN = BVID_OFFSET + BVID_LEN;
+
+ const int ISID_LEN = 4;
+
+ if (sublen < FIXED_LEN) {
+ isis_dissect_unknown( tvb, tree, offset,
+ "Short SPBM Service Identifier and Unicast Address subTLV (%d vs %d)", sublen, FIXED_LEN);
+ return;
+ }
+ else {
+ proto_tree *subtree, *ti;
+ int subofs = offset;
+ const guint8 *bmac = tvb_get_ptr (tvb, subofs + BMAC_OFFSET, BMAC_LEN);
+ const guint16 bvid = tvb_get_ntohs(tvb, subofs + BVID_OFFSET);
+
+ /*************************/
+ ti = proto_tree_add_text( tree, tvb, offset-2, sublen+2,
+ "SPB Service ID and Unicast Address: Type: 0x%02x, Length: %d", subtype, sublen);
+ subtree = proto_item_add_subtree(ti, ett_isis_lsp_clv_mt_cap_spbm_service_identifier);
+
+ /*************************/
+ proto_tree_add_text( subtree, tvb, subofs + BMAC_OFFSET, BMAC_LEN,
+ "B-MAC: %02x-%02x-%02x-%02x-%02x-%02x",
+ bmac[0],
+ bmac[1],
+ bmac[2],
+ bmac[3],
+ bmac[4],
+ bmac[5]);
+ proto_tree_add_text( subtree, tvb, subofs + BVID_OFFSET, BVID_LEN,
+ "Base-VID: 0x%03x (%u)",
+ bvid, bvid);
+
+ subofs += FIXED_LEN;
+ sublen -= FIXED_LEN;
+
+ /*************************/
+ while (sublen > 0) {
+ if (sublen < ISID_LEN) {
+ isis_dissect_unknown( tvb, subtree, offset,
+ "Short ISID entry (%d vs %d)", sublen, ISID_LEN);
+ return;
+ }
+ else {
+ const guint32 isid = tvb_get_ntohl(tvb, subofs);
+ proto_tree_add_text( subtree, tvb, subofs, ISID_LEN,
+ " T: %u, R: %u, ISID: 0x%06x (%d)",
+ (isid >> 31) & 1,
+ (isid >> 30) & 1,
+ isid & 0x00ffffff,
+ isid & 0x00ffffff);
+ subofs += ISID_LEN;
+ sublen -= ISID_LEN;
+ }
+ }
+ }
+}
+/*
+ * Name: dissect_lsp_clv_mt_cap()
+ *
+ * Description: Decode an ISIS MT-CAP CLV - code 144.
+ *
+ * Input:
+ * tvbuff_t * : tvbuffer for packet data
+ * proto_tree * : proto tree to build on (may be null)
+ * int : current offset into packet data
+ * int : length of IDs in packet.
+ * int : length of this clv
+ *
+ * Output:
+ * void, will modify proto_tree if not null.
+ */
+static void
+dissect_isis_lsp_clv_mt_cap(tvbuff_t *tvb, proto_tree *tree, int offset,
+ int id_length _U_, int length)
+{
+ if (length >= 2) {
+ /* mtid */
+ guint16 mtid = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_text( tree, tvb, offset, 2,
+ "MTID: 0x%03x, Overload: %d",
+ (mtid & 0xfff),
+ (mtid & 0x8000) ? 1 : 0);
+ length -= 2;
+ offset += 2;
+ while (length >= 2) {
+ guint8 subtype = tvb_get_guint8(tvb, offset);
+ guint8 subtlvlen = tvb_get_guint8(tvb, offset+1);
+ length -= 2;
+ offset += 2;
+ if (subtlvlen > length) {
+ isis_dissect_unknown( tvb, tree, offset,
+ "Short type 0x%02x TLV (%d vs %d)", subtype, subtlvlen, length);
+ return;
+ }
+ if (subtype == 0x01) { /* SPB Instance */
+ dissect_isis_lsp_clv_mt_cap_spb_instance(tvb, tree, offset, subtype, subtlvlen);
+ }
+ else if (subtype == 0x02) { /* OALG */
+ dissect_isis_lsp_clv_mt_cap_spb_oalg(tvb, tree, offset, subtype, subtlvlen);
+ }
+ else if (subtype == 0x03) { /* SPBM Service Identifier */
+ dissect_isis_lsp_clv_mt_cap_spbm_service_identifier(tvb, tree, offset, subtype, subtlvlen);
+ }
+ else {
+ isis_dissect_unknown( tvb, tree, offset,
+ "Unknown SubTlv: Type: 0x%02x, Length: %d", subtype, subtlvlen);
+ }
+ length -= subtlvlen;
+ offset += subtlvlen;
+ }
+
+ }
+}
+
/*
* Name: dissect_lsp_authentication_clv()
*
@@ -1526,35 +1941,35 @@ dissect_lsp_eis_neighbors_clv_inner(tvbuff_t *tvb, proto_tree *tree,
- proto_tree_add_text (ntree, tvb, offset, 1,
- "Default Metric: %d, %s",
- ISIS_LSP_CLV_METRIC_VALUE(tvb_get_guint8(tvb, offset)),
- ISIS_LSP_CLV_METRIC_IE(tvb_get_guint8(tvb, offset)) ? "External" : "Internal");
+ proto_tree_add_text (ntree, tvb, offset, 1,
+ "Default Metric: %d, %s",
+ ISIS_LSP_CLV_METRIC_VALUE(tvb_get_guint8(tvb, offset)),
+ ISIS_LSP_CLV_METRIC_IE(tvb_get_guint8(tvb, offset)) ? "External" : "Internal");
if (ISIS_LSP_CLV_METRIC_SUPPORTED(tvb_get_guint8(tvb, offset+1))) {
- proto_tree_add_text (ntree, tvb, offset+1, 1, "Delay Metric: Not supported");
+ proto_tree_add_text (ntree, tvb, offset+1, 1, "Delay Metric: Not supported");
} else {
- proto_tree_add_text (ntree, tvb, offset+1, 1, "Delay Metric: %d, %s",
- ISIS_LSP_CLV_METRIC_VALUE(tvb_get_guint8(tvb, offset+1)),
- ISIS_LSP_CLV_METRIC_IE(tvb_get_guint8(tvb, offset+1)) ? "External" : "Internal");
+ proto_tree_add_text (ntree, tvb, offset+1, 1, "Delay Metric: %d, %s",
+ ISIS_LSP_CLV_METRIC_VALUE(tvb_get_guint8(tvb, offset+1)),
+ ISIS_LSP_CLV_METRIC_IE(tvb_get_guint8(tvb, offset+1)) ? "External" : "Internal");
}
- if (ISIS_LSP_CLV_METRIC_SUPPORTED(tvb_get_guint8(tvb, offset+2))) {
- proto_tree_add_text (ntree, tvb, offset+2, 1, "Expense Metric: Not supported");
- } else {
- proto_tree_add_text (ntree, tvb, offset+2, 1, "Expense Metric: %d, %s",
- ISIS_LSP_CLV_METRIC_VALUE(tvb_get_guint8(tvb, offset+2)),
- ISIS_LSP_CLV_METRIC_IE(tvb_get_guint8(tvb, offset+2)) ? "External" : "Internal");
- }
+ if (ISIS_LSP_CLV_METRIC_SUPPORTED(tvb_get_guint8(tvb, offset+2))) {
+ proto_tree_add_text (ntree, tvb, offset+2, 1, "Expense Metric: Not supported");
+ } else {
+ proto_tree_add_text (ntree, tvb, offset+2, 1, "Expense Metric: %d, %s",
+ ISIS_LSP_CLV_METRIC_VALUE(tvb_get_guint8(tvb, offset+2)),
+ ISIS_LSP_CLV_METRIC_IE(tvb_get_guint8(tvb, offset+2)) ? "External" : "Internal");
+ }
- if (ISIS_LSP_CLV_METRIC_SUPPORTED(tvb_get_guint8(tvb, offset+3))) {
- proto_tree_add_text (ntree, tvb, offset+3, 1, "Error Metric: Not supported");
- } else {
- proto_tree_add_text (ntree, tvb, offset+3, 1, "Error Metric: %d, %s",
- ISIS_LSP_CLV_METRIC_VALUE(tvb_get_guint8(tvb, offset+3)),
- ISIS_LSP_CLV_METRIC_IE(tvb_get_guint8(tvb, offset+3)) ? "External" : "Internal");
- }
+ if (ISIS_LSP_CLV_METRIC_SUPPORTED(tvb_get_guint8(tvb, offset+3))) {
+ proto_tree_add_text (ntree, tvb, offset+3, 1, "Error Metric: Not supported");
+ } else {
+ proto_tree_add_text (ntree, tvb, offset+3, 1, "Error Metric: %d, %s",
+ ISIS_LSP_CLV_METRIC_VALUE(tvb_get_guint8(tvb, offset+3)),
+ ISIS_LSP_CLV_METRIC_IE(tvb_get_guint8(tvb, offset+3)) ? "External" : "Internal");
+ }
}
offset += tlen;
@@ -1763,6 +2178,53 @@ dissect_subclv_unrsv_bw(tvbuff_t *tvb, proto_tree *tree, int offset)
}
/*
+ * Name: dissect_subclv_spb_link_metric ()
+ *
+ * Description: Called by function dissect_lsp_ext_is_reachability_clv().
+ *
+ * This function is called by dissect_lsp_ext_is_reachability_clv()
+ * for dissect the SPB link metric sub-CLV (code 29).
+ *
+ * Input:
+ * tvbuff_t * : tvbuffer for packet data
+ * proto_tree * : protocol display tree to fill out.
+ * int : offset into packet data where we are (beginning of the sub_clv value).
+ * int : subtlv type
+ * int : subtlv length
+ *
+ * Output:
+ * void
+ */
+
+static void
+dissect_subclv_spb_link_metric(tvbuff_t *tvb,
+ proto_tree *tree, int offset, int subtype, int sublen)
+{
+ const int SUBLEN = 6;
+
+ if (sublen != SUBLEN) {
+ isis_dissect_unknown( tvb, tree, offset,
+ "Short SPB Link Metric sub-TLV (%d vs %d)", sublen, SUBLEN);
+ return;
+ }
+ else {
+ proto_tree *subtree, *ti;
+ ti = proto_tree_add_text( tree, tvb, offset-2, sublen+2,
+ "SPB Link Metric: Type: 0x%02x (%d), Length: %d", subtype, subtype, sublen);
+ subtree = proto_item_add_subtree(ti, ett_isis_lsp_subclv_spb_link_metric);
+
+ proto_tree_add_item(subtree, hf_isis_lsp_spb_link_metric,
+ tvb, offset, 3, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(subtree, hf_isis_lsp_spb_port_count,
+ tvb, offset+3, 1, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(subtree, hf_isis_lsp_spb_port_id,
+ tvb, offset+4, 2, ENC_BIG_ENDIAN);
+ }
+}
+
+/*
* Name: dissect_lsp_ext_is_reachability_clv()
*
* Description: Decode a Extended IS Reachability CLV - code 22
@@ -1846,6 +2308,10 @@ dissect_lsp_ext_is_reachability_clv(tvbuff_t *tvb, proto_tree *tree,
"Traffic engineering default metric: %d",
tvb_get_ntoh24(tvb, offset+13+i) );
break;
+ case 29:
+ dissect_subclv_spb_link_metric(tvb, ntree,
+ offset+13+i, clv_code, clv_len);
+ break;
case 250:
case 251:
case 252:
@@ -2013,7 +2479,7 @@ dissect_lsp_partition_dis_clv(tvbuff_t *tvb, proto_tree *tree, int offset,
}
length -= id_length;
offset += id_length;
- if ( length > 0 ){
+ if ( length > 0 ) {
isis_dissect_unknown(tvb, tree, offset,
"Long lsp partition DIS, %d left over", length );
return;
@@ -2099,15 +2565,15 @@ static void isis_lsp_checkum_additional_info(tvbuff_t * tvb, packet_info * pinfo
proto_item * item;
checksum_tree = proto_item_add_subtree(it_cksum, ett_isis_lsp_cksum);
- item = proto_tree_add_boolean(checksum_tree, hf_isis_lsp_checksum_good, tvb,
- offset, 2, is_cksum_correct);
- PROTO_ITEM_SET_GENERATED(item);
- item = proto_tree_add_boolean(checksum_tree, hf_isis_lsp_checksum_bad, tvb,
- offset, 2, !is_cksum_correct);
- PROTO_ITEM_SET_GENERATED(item);
+ item = proto_tree_add_boolean(checksum_tree, hf_isis_lsp_checksum_good, tvb,
+ offset, 2, is_cksum_correct);
+ PROTO_ITEM_SET_GENERATED(item);
+ item = proto_tree_add_boolean(checksum_tree, hf_isis_lsp_checksum_bad, tvb,
+ offset, 2, !is_cksum_correct);
+ PROTO_ITEM_SET_GENERATED(item);
if (!is_cksum_correct) {
- expert_add_info_format(pinfo, item, PI_CHECKSUM, PI_ERROR, "Bad checksum");
- col_append_str(pinfo->cinfo, COL_INFO, " [ISIS CHECKSUM INCORRECT]");
+ expert_add_info_format(pinfo, item, PI_CHECKSUM, PI_ERROR, "Bad checksum");
+ col_append_str(pinfo->cinfo, COL_INFO, " [ISIS CHECKSUM INCORRECT]");
}
}
@@ -2167,11 +2633,11 @@ isis_dissect_isis_lsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int o
id_length+2);
proto_tree_add_string_format(lsp_tree, hf_isis_lsp_lsp_id,
tvb, offset, id_length + 2,
- value, "LSP-ID: %s", value);
+ value, "LSP-ID: %s", value);
}
if (check_col(pinfo->cinfo, COL_INFO)) {
- col_append_fstr(pinfo->cinfo, COL_INFO, ", LSP-ID: %s",
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", LSP-ID: %s",
print_system_id( tvb_get_ptr(tvb, offset, id_length+2), id_length+2 ) );
}
offset += id_length + 2;
@@ -2189,8 +2655,7 @@ isis_dissect_isis_lsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int o
if (tree) {
checksum = lifetime ? tvb_get_ntohs(tvb, offset) : 0;
- switch (check_and_get_checksum(tvb, offset_checksum, pdu_length-12, checksum, offset, &cacl_checksum))
- {
+ switch (check_and_get_checksum(tvb, offset_checksum, pdu_length-12, checksum, offset, &cacl_checksum)) {
case NO_CKSUM :
checksum = tvb_get_ntohs(tvb, offset);
proto_tree_add_uint_format(lsp_tree, hf_isis_lsp_checksum, tvb, offset, 2, checksum,
@@ -2261,7 +2726,7 @@ isis_dissect_isis_lsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int o
* Now, we need to decode our CLVs. We need to pass in
* our list of valid ones!
*/
- if (lsp_type == ISIS_TYPE_L1_LSP){
+ if (lsp_type == ISIS_TYPE_L1_LSP) {
isis_dissect_clvs(tvb, lsp_tree, offset,
clv_l1_lsp_opts, len, id_length,
ett_isis_lsp_clv_unknown );
@@ -2334,7 +2799,6 @@ isis_register_lsp(int proto_isis) {
{ "MT-ID", "isis.lsp.clv_mt",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
-
{ &hf_isis_lsp_p,
{ "Partition Repair", "isis.lsp.partition_repair", FT_BOOLEAN, 8,
TFS(&tfs_supported_not_supported), ISIS_LSP_PARTITION_MASK,
@@ -2357,7 +2821,20 @@ isis_register_lsp(int proto_isis) {
{ &hf_isis_lsp_is_type,
{ "Type of Intermediate System", "isis.lsp.is_type", FT_UINT8, BASE_DEC,
VALS(isis_lsp_istype_vals), ISIS_LSP_IS_TYPE_MASK,
- NULL, HFILL }}
+ NULL, HFILL }},
+
+ { &hf_isis_lsp_spb_link_metric,
+ { "SPB Link Metric", "isis.lsp.spb.link_metric",
+ FT_UINT24, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+
+ { &hf_isis_lsp_spb_port_count,
+ { "Number of Ports", "isis.lsp.spb.port_count",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
+
+ { &hf_isis_lsp_spb_port_id,
+ { "Port Id", "isis.lsp.spb.port_id",
+ FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }}
+
};
static gint *ett[] = {
&ett_isis_lsp,
@@ -2370,18 +2847,22 @@ isis_register_lsp(int proto_isis) {
&ett_isis_lsp_part_of_clv_ext_is_reachability,
&ett_isis_lsp_subclv_admin_group,
&ett_isis_lsp_subclv_unrsv_bw,
+ &ett_isis_lsp_subclv_spb_link_metric,
&ett_isis_lsp_clv_unknown,
&ett_isis_lsp_clv_partition_dis,
&ett_isis_lsp_clv_prefix_neighbors,
&ett_isis_lsp_clv_authentication,
&ett_isis_lsp_clv_ip_authentication,
&ett_isis_lsp_clv_nlpid,
- &ett_isis_lsp_clv_hostname,
+ &ett_isis_lsp_clv_hostname,
&ett_isis_lsp_clv_ipv4_int_addr,
&ett_isis_lsp_clv_ipv6_int_addr, /* CLV 232 */
+ &ett_isis_lsp_clv_mt_cap,
+ &ett_isis_lsp_clv_mt_cap_spb_instance,
+ &ett_isis_lsp_clv_mt_cap_spbm_service_identifier,
&ett_isis_lsp_clv_te_router_id,
&ett_isis_lsp_clv_ip_reachability,
- &ett_isis_lsp_clv_ip_reach_subclv,
+ &ett_isis_lsp_clv_ip_reach_subclv,
&ett_isis_lsp_clv_ext_ip_reachability, /* CLV 135 */
&ett_isis_lsp_part_of_clv_ext_ip_reachability,
&ett_isis_lsp_clv_ipv6_reachability, /* CLV 236 */
@@ -2390,6 +2871,7 @@ isis_register_lsp(int proto_isis) {
&ett_isis_lsp_clv_mt_is,
&ett_isis_lsp_part_of_clv_mt_is,
&ett_isis_lsp_clv_rt_capable_IPv4_prefx,
+ &ett_isis_lsp_clv_grp_address_IPv4_prefx, /*CLV 142*/
&ett_isis_lsp_clv_mt_reachable_IPv4_prefx,
&ett_isis_lsp_clv_mt_reachable_IPv6_prefx
};
diff --git a/epan/dissectors/packet-ismp.c b/epan/dissectors/packet-ismp.c
index 03fd4747cf..0fe5dfee2c 100644
--- a/epan/dissectors/packet-ismp.c
+++ b/epan/dissectors/packet-ismp.c
@@ -28,8 +28,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-isns.c b/epan/dissectors/packet-isns.c
index 09af754074..db976f6388 100644
--- a/epan/dissectors/packet-isns.c
+++ b/epan/dissectors/packet-isns.c
@@ -34,14 +34,6 @@
#endif
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
@@ -630,7 +622,7 @@ dissect_isns_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset += 4;
proto_tree_add_item(tt,hf_isns_heartbeat_counter, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
+ /*offset += 4;*/
break;
}
/* Responses */
diff --git a/epan/dissectors/packet-iso7816.c b/epan/dissectors/packet-iso7816.c
new file mode 100644
index 0000000000..a4ed911c41
--- /dev/null
+++ b/epan/dissectors/packet-iso7816.c
@@ -0,0 +1,479 @@
+/* packet-iso7816.c
+ * Routines for packet dissection of generic ISO 7816 messages
+ * Copyright 2012 by Martin Kaiser <martin@kaiser.cx>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/* This dissector supports the command and response apdu structure
+ * as defined in ISO 7816-4. Detailed dissection of the APDUs defined
+ * in the ISO 7816 specifications will be added in the future.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+#include <epan/expert.h>
+
+static int proto_iso7816 = -1;
+
+static int ett_iso7816 = -1;
+static int ett_iso7816_atr_td = -1;
+
+static int hf_iso7816_atr_init_char = -1;
+static int hf_iso7816_atr_t0 = -1;
+static int hf_iso7816_atr_ta = -1;
+static int hf_iso7816_atr_tb = -1;
+static int hf_iso7816_atr_tc = -1;
+static int hf_iso7816_atr_td = -1;
+static int hf_iso7816_atr_next_ta_present = -1;
+static int hf_iso7816_atr_next_tb_present = -1;
+static int hf_iso7816_atr_next_tc_present = -1;
+static int hf_iso7816_atr_next_td_present = -1;
+static int hf_iso7816_atr_k = -1;
+static int hf_iso7816_atr_t = -1;
+static int hf_iso7816_atr_hist_bytes = -1;
+static int hf_iso7816_atr_tck = -1;
+static int hf_iso7816_cla = -1;
+static int hf_iso7816_ins = -1;
+static int hf_iso7816_p1 = -1;
+static int hf_iso7816_p2 = -1;
+static int hf_iso7816_lc = -1;
+static int hf_iso7816_le = -1;
+static int hf_iso7816_body = -1;
+static int hf_iso7816_sw1 = -1;
+static int hf_iso7816_sw2 = -1;
+
+#define ADDR_INTF "Interface"
+#define ADDR_CARD "Card"
+
+static const value_string iso7816_atr_init_char[] = {
+ { 0x3B, "Direct convention (A==0, Z==1, MSB==m9)" },
+ { 0x3F, "Inverse convention (A==1, Z==0, MSB==m2)" },
+ { 0, NULL }
+};
+
+static const value_string iso7816_ins[] = {
+ /* instructions defined in ISO 7816-4 */
+ { 0x0E, "Erase binary" },
+ { 0x20, "Verify" },
+ { 0x70, "Manage channel" },
+ { 0x82, "External authenticate" },
+ { 0xA4, "Select file" },
+ { 0xB0, "Read binary" },
+ { 0xB2, "Read records" },
+ { 0xC0, "Get response" },
+ { 0xC2, "Envelope" },
+ { 0xCA, "Get data" },
+ { 0xD0, "Write binary" },
+ { 0xD2, "Write record" },
+ { 0xD6, "Update binary" },
+ { 0xDA, "Put data" },
+ { 0xDC, "Update record" },
+ { 0xE2, "Append record" },
+ { 0, NULL }
+};
+
+static const range_string iso7816_sw1[] = {
+ { 0x61, 0x61, "Normal processing" },
+ { 0x62, 0x63, "Warning processing" },
+ { 0x64, 0x65, "Execution error" },
+ { 0x67, 0x6F, "Checking error" },
+ { 0x90, 0x90, "Normal processing" },
+ { 0,0, NULL }
+};
+
+
+static int
+dissect_iso7816_atr(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ gint offset=0;
+ guint i=0; /* loop index for TA(i)...TD(i) */
+ proto_item *td_it;
+ proto_tree *td_tree=NULL;
+ guint8 ta, tb, tc, td, k=0;
+ gint tck_len;
+ proto_item *err_it;
+
+ col_append_sep_fstr(pinfo->cinfo, COL_INFO, NULL, "ATR sequence");
+
+ /* ISO 7816-4, section 4 indicates that concatenations are big endian */
+ proto_tree_add_item(tree, hf_iso7816_atr_init_char,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ do {
+ /* for i==0, this is the T0 byte, otherwise it's the TD(i) byte
+ in each loop, we dissect T0/TD(i) and TA(i+1), TB(i+1), TC(i+1) */
+ td = tvb_get_guint8(tvb, offset);
+ if (i==0) {
+ td_it = proto_tree_add_item(tree, hf_iso7816_atr_t0,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ }
+ else {
+ td_it = proto_tree_add_uint_format(tree, hf_iso7816_atr_td,
+ tvb, offset, 1, td,
+ "Interface character TD(%d): 0x%02x", i, td);
+ }
+ td_tree = proto_item_add_subtree(td_it, ett_iso7816_atr_td);
+
+ proto_tree_add_boolean_format(td_tree, hf_iso7816_atr_next_ta_present,
+ tvb, offset, 1, td&0x10,
+ "TA(%d) present: %s", i+1, td&0x10 ? "True" : "False");
+ proto_tree_add_boolean_format(td_tree, hf_iso7816_atr_next_tb_present,
+ tvb, offset, 1, td&0x20,
+ "TB(%d) present: %s", i+1, td&0x20 ? "True" : "False");
+ proto_tree_add_boolean_format(td_tree, hf_iso7816_atr_next_tc_present,
+ tvb, offset, 1, td&0x40,
+ "TC(%d) present: %s", i+1, td&0x40 ? "True" : "False");
+ proto_tree_add_boolean_format(td_tree, hf_iso7816_atr_next_td_present,
+ tvb, offset, 1, td&0x80,
+ "TD(%d) present: %s", i+1, td&0x80 ? "True" : "False");
+
+ if (i==0) {
+ k = td&0x0F; /* number of historical bytes */
+ proto_tree_add_item(td_tree, hf_iso7816_atr_k,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ }
+ else {
+ proto_tree_add_item(td_tree, hf_iso7816_atr_t,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ }
+ offset++;
+
+ if (td&0x10) {
+ ta = tvb_get_guint8(tvb, offset);
+ /* we read TA(i+1), see comment above */
+ proto_tree_add_uint_format(tree, hf_iso7816_atr_ta, tvb, offset, 1,
+ ta, "Interface character TA(%d): 0x%02x", i+1, ta);
+ offset++;
+ }
+ if (td&0x20) {
+ tb = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint_format(tree, hf_iso7816_atr_tb, tvb, offset, 1,
+ tb, "Interface character TB(%d): 0x%02x", i+1, tb);
+ offset++;
+ }
+ if (td&0x40) {
+ tc = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint_format(tree, hf_iso7816_atr_tc, tvb, offset, 1,
+ tc, "Interface character TC(%d): 0x%02x", i+1, tc);
+ offset++;
+ }
+
+ i++;
+ } while (td&0x80);
+
+ if (k>0) {
+ proto_tree_add_item(tree, hf_iso7816_atr_hist_bytes,
+ tvb, offset, k, ENC_NA);
+ offset += k;
+ }
+
+ tck_len = tvb_reported_length_remaining(tvb, offset);
+ /* tck is either absent or exactly one byte */
+ if (tck_len==1) {
+ proto_tree_add_item(tree, hf_iso7816_atr_tck,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ }
+ else if (tck_len>1) {
+ err_it = proto_tree_add_text(tree, tvb, offset, tck_len,
+ "Invalid TCK byte");
+ expert_add_info_format(pinfo, err_it, PI_PROTOCOL, PI_WARN,
+ "TCK byte must either be absent or exactly one byte");
+ }
+
+ return offset;
+}
+
+static int
+dissect_iso7816_le(
+ tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree)
+{
+ guint8 le;
+ proto_item *le_item;
+
+ le = tvb_get_guint8(tvb, offset);
+ le_item = proto_tree_add_item(
+ tree, hf_iso7816_le, tvb, offset, 1, ENC_BIG_ENDIAN);
+ if (le==0)
+ proto_item_append_text(le_item, " (maximum number of available bytes)");
+
+ return 1;
+}
+
+
+static int
+dissect_iso7816_cmd_apdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ gint offset = 0;
+ guint8 ins;
+ gint body_len;
+ guint8 lc;
+
+
+ proto_tree_add_item(tree, hf_iso7816_cla, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ ins = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_iso7816_ins, tvb, offset, 1, ENC_BIG_ENDIAN);
+ col_append_sep_fstr(pinfo->cinfo, COL_INFO, NULL, "%s",
+ val_to_str_const(ins, iso7816_ins, "Unknown instruction"));
+ offset++;
+ proto_tree_add_item(tree, hf_iso7816_p1, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_iso7816_p2, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ /* for now, we support only short length fields
+ if we have ATR parsing, we can support extended length fields too */
+ body_len = tvb_reported_length_remaining(tvb, offset);
+
+ /* nothing to do for body_len==0 */
+ if (body_len==1) {
+ offset += dissect_iso7816_le(tvb, offset, pinfo, tree);
+ }
+ else if (body_len>1) {
+ lc = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(
+ tree, hf_iso7816_lc, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ if (lc>0) {
+ proto_tree_add_item(tree, hf_iso7816_body, tvb, offset, lc, ENC_NA);
+ offset += lc;
+ }
+ if (tvb_reported_length_remaining(tvb, offset)>0) {
+ offset += dissect_iso7816_le(tvb, offset, pinfo, tree);
+ }
+ }
+
+ return offset;
+}
+
+static int
+dissect_iso7816_resp_apdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ gint offset = 0;
+ gint body_len;
+
+ col_append_sep_fstr(pinfo->cinfo, COL_INFO, NULL, "Response APDU");
+
+ /* - 2 bytes SW1, SW2 */
+ body_len = tvb_reported_length_remaining(tvb, offset) - 2;
+
+ if (body_len>0) {
+ proto_tree_add_item(tree, hf_iso7816_body,
+ tvb, offset, body_len, ENC_NA);
+ offset += body_len;
+ }
+
+ if (tvb_reported_length_remaining(tvb, offset) >= 2) {
+ proto_tree_add_item(tree, hf_iso7816_sw1,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_iso7816_sw2,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ }
+
+ return offset;
+}
+
+static int
+dissect_iso7816(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ gint offset = 0;
+ proto_item *tree_ti = NULL;
+ proto_tree *iso7816_tree = NULL;
+ guint8 tmp;
+
+ if (pinfo->p2p_dir!=P2P_DIR_SENT && pinfo->p2p_dir!=P2P_DIR_RECV)
+ return 0;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "ISO 7816");
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ if (tree) {
+ tree_ti = proto_tree_add_protocol_format(tree, proto_iso7816,
+ tvb, 0, tvb_reported_length(tvb), "ISO 7816");
+ iso7816_tree = proto_item_add_subtree(tree_ti, ett_iso7816);
+ }
+
+ /* per our definition, sent/received is from the perspective of the interface
+ i.e sent is from interface to card, received is from card to interface */
+ if (pinfo->p2p_dir==P2P_DIR_SENT) {
+ SET_ADDRESS(&pinfo->src, AT_STRINGZ,
+ (int)strlen(ADDR_INTF)+1, ADDR_INTF);
+ SET_ADDRESS(&pinfo->dst, AT_STRINGZ,
+ (int)strlen(ADDR_CARD)+1, ADDR_CARD);
+ if (tree_ti)
+ proto_item_append_text(tree_ti, " Command APDU");
+ offset = dissect_iso7816_cmd_apdu(tvb, pinfo, iso7816_tree);
+ }
+ else if (pinfo->p2p_dir==P2P_DIR_RECV) {
+ SET_ADDRESS(&pinfo->src, AT_STRINGZ,
+ (int)strlen(ADDR_CARD)+1, ADDR_CARD);
+ SET_ADDRESS(&pinfo->dst, AT_STRINGZ,
+ (int)strlen(ADDR_INTF)+1, ADDR_INTF);
+ tmp = tvb_get_guint8(tvb, offset);
+ if (tmp==0x3B || tmp==0x3F) {
+ if (tree_ti)
+ proto_item_append_text(tree_ti, " ATR");
+ offset = dissect_iso7816_atr(tvb, pinfo, iso7816_tree);
+ }
+ else {
+ if (tree_ti)
+ proto_item_append_text(tree_ti, " Response APDU");
+ offset = dissect_iso7816_resp_apdu(tvb, pinfo, iso7816_tree);
+ }
+ }
+
+ return offset;
+}
+
+void
+proto_register_iso7816(void)
+{
+ static hf_register_info hf[] = {
+ { &hf_iso7816_atr_init_char,
+ { "Initial character", "iso7816.atr.init_char",
+ FT_UINT8, BASE_HEX, VALS(iso7816_atr_init_char), 0, NULL, HFILL }
+ },
+ { &hf_iso7816_atr_t0,
+ { "Format character T0", "iso7816.atr.t0",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_iso7816_atr_ta,
+ { "Interface character TA(i)", "iso7816.atr.ta",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_iso7816_atr_tb,
+ { "Interface character TB(i)", "iso7816.atr.tb",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_iso7816_atr_tc,
+ { "Interface character TC(i)", "iso7816.atr.tc",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_iso7816_atr_td,
+ { "Interface character TD(i)", "iso7816.atr.td",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_iso7816_atr_next_ta_present,
+ { "TA(i+1) present", "iso7816.atr.next_ta_present",
+ FT_BOOLEAN, BASE_HEX, NULL, 0x10, NULL, HFILL }
+ },
+ { &hf_iso7816_atr_next_tb_present,
+ { "TB(i+1) present", "iso7816.atr.next_tb_present",
+ FT_BOOLEAN, BASE_HEX, NULL, 0x20, NULL, HFILL }
+ },
+ { &hf_iso7816_atr_next_tc_present,
+ { "TC(i+1) present", "iso7816.atr.next_tc_present",
+ FT_BOOLEAN, BASE_HEX, NULL, 0x40, NULL, HFILL }
+ },
+ { &hf_iso7816_atr_next_td_present,
+ { "TD(i+1) present", "iso7816.atr.next_td_present",
+ FT_BOOLEAN, BASE_HEX, NULL, 0x80, NULL, HFILL }
+ },
+ { &hf_iso7816_atr_k,
+ { "Number K of historical bytes", "iso7816.atr.k",
+ FT_UINT8, BASE_DEC, NULL, 0x0F, NULL, HFILL }
+ },
+ { &hf_iso7816_atr_t,
+ { "Protocol reference T", "iso7816.atr.t",
+ FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }
+ },
+ { &hf_iso7816_atr_hist_bytes,
+ { "Historical bytes", "iso7816.atr.historical_bytes",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_iso7816_atr_tck,
+ { "Check character TCK", "iso7816.atr.tck",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_iso7816_cla,
+ { "Class", "iso7816.apdu.cla",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL , HFILL }
+ },
+ { &hf_iso7816_ins,
+ { "Instruction", "iso7816.apdu.ins",
+ FT_UINT8, BASE_HEX, VALS(iso7816_ins), 0, NULL, HFILL }
+ },
+ { &hf_iso7816_p1,
+ { "Parameter 1", "iso7816.apdu.p1",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_iso7816_p2,
+ { "Parameter 2", "iso7816.apdu.p2",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_iso7816_lc,
+ { "Length field Lc", "iso7816.apdu.lc",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_iso7816_le,
+ { "Expected response length Le", "iso7816.apdu.le",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_iso7816_body,
+ { "APDU Body", "iso7816.apdu.body",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_iso7816_sw1,
+ { "Status Word SW1", "iso7816.apdu.sw1", FT_UINT8,
+ BASE_RANGE_STRING|BASE_HEX, RVALS(iso7816_sw1), 0, NULL, HFILL }
+ },
+ { &hf_iso7816_sw2,
+ { "Status Word SW2", "iso7816.apdu.sw2",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }
+ }
+ };
+ static gint *ett[] = {
+ &ett_iso7816,
+ &ett_iso7816_atr_td
+ };
+
+ proto_iso7816 = proto_register_protocol(
+ "ISO/IEC 7816", "ISO 7816", "iso7816");
+ proto_register_field_array(proto_iso7816, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ new_register_dissector("iso7816", dissect_iso7816, proto_iso7816);
+}
+
+
+/*
+ * Editor modelines - http://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vi: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
+ */
diff --git a/epan/dissectors/packet-isup.c b/epan/dissectors/packet-isup.c
index cf1b1af3c3..a71559abdd 100644
--- a/epan/dissectors/packet-isup.c
+++ b/epan/dissectors/packet-isup.c
@@ -36,6 +36,10 @@
* http://www.itu.int/rec/recommendation.asp?type=products&lang=e&parent=T-REC-Q
* Q.763-199912, Q.763-200212Amd2
* ITU-T Q.763/Amd.1 (03/2001)
+ *
+ * National variants
+ * French ISUP Specification: SPIROU 1998 - 002-005 edition 1 ( Info found here http://www.icg-corp.com/docs/ISUP.pdf ).
+ * Israeli ISUP Specification: excertp (for BCM messsage) found in https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=4231 .
*/
#ifdef HAVE_CONFIG_H
@@ -45,6 +49,7 @@
#include <epan/packet.h>
#include <epan/stats_tree.h>
#include <epan/asn1.h>
+#include <wsutil/str_util.h>
#include <prefs.h>
#include "packet-q931.h"
#include "packet-isup.h"
@@ -56,7 +61,13 @@
#include <epan/reassemble.h>
#include <packet-mtp3.h>
+#define ISUP_ITU_STANDARD_VARIANT 0
+#define ISUP_FRENCH_VARIANT 1
+#define ISUP_ISRAELI_VARIANT 2
+
static gint isup_standard = ITU_STANDARD;
+/* Preference standard or national ISUP variants */
+static gint g_isup_variant = ISUP_ITU_STANDARD_VARIANT;
#define ASCII_NUMBER_DELTA 0x30
#define ASCII_LETTER_DELTA 0x37
@@ -201,6 +212,178 @@ static const value_string isup_message_type_value[] = {
{ 0, NULL}};
static value_string_ext isup_message_type_value_ext = VALUE_STRING_EXT_INIT(isup_message_type_value);
+#define FRENCH_CHARGING_PULSE 0xe1
+#define FRENCH_CHARGING_ACK 0xe2
+static const value_string french_isup_message_type_value[] = {
+ { MESSAGE_TYPE_INITIAL_ADDR, "Initial address"},
+ { MESSAGE_TYPE_SUBSEQ_ADDR, "Subsequent address"},
+ { MESSAGE_TYPE_INFO_REQ, "Information request (national use)"},
+ { MESSAGE_TYPE_INFO, "Information (national use)"},
+ { MESSAGE_TYPE_CONTINUITY, "Continuity"},
+ { MESSAGE_TYPE_ADDR_CMPL, "Address complete"},
+ { MESSAGE_TYPE_CONNECT, "Connect"},
+ { MESSAGE_TYPE_FORW_TRANS, "Forward transfer"},
+ { MESSAGE_TYPE_ANSWER, "Answer"},
+
+ { 0x0a, "Reserved (used in 1984 version)"},
+ { 0x0b, "Reserved (used in 1984 version)"},
+
+ { MESSAGE_TYPE_RELEASE, "Release"},
+ { MESSAGE_TYPE_SUSPEND, "Suspend"},
+ { MESSAGE_TYPE_RESUME, "Resume"},
+ { MESSAGE_TYPE_REL_CMPL, "Release complete"},
+ { MESSAGE_TYPE_CONT_CHECK_REQ, "Continuity check request"},
+ { MESSAGE_TYPE_RESET_CIRCUIT, "Reset Circuit"},
+ { MESSAGE_TYPE_BLOCKING, "Blocking"},
+ { MESSAGE_TYPE_UNBLOCKING, "Unblocking"},
+ { MESSAGE_TYPE_BLOCK_ACK, "Blocking acknowledgement"},
+ { MESSAGE_TYPE_UNBLOCK_ACK, "Unblocking acknowledgment"},
+ { MESSAGE_TYPE_CIRC_GRP_RST, "Circuit group reset"},
+ { MESSAGE_TYPE_CIRC_GRP_BLCK, "Circuit group blocking"},
+ { MESSAGE_TYPE_CIRC_GRP_UNBL, "Circuit group unblocking"},
+ { MESSAGE_TYPE_CIRC_GRP_BL_ACK, "Circuit group blocking acknowledgement"},
+ { MESSAGE_TYPE_CIRC_GRP_UNBL_ACK, "Circuit group unblocking acknowledgement"},
+
+ { 28, "Reserved (used in 1988 version)"},
+ { 29, "Reserved (used in 1988 version)"},
+ { 30, "Reserved (used in 1988 version)"},
+
+ { MESSAGE_TYPE_FACILITY_REQ, "Facility request"},
+ { MESSAGE_TYPE_FACILITY_ACC, "Facility accepted"},
+ { MESSAGE_TYPE_FACILITY_REJ, "Facility reject"},
+
+ { 34, "Reserved (used in 1984 version)"},
+ { 35, "Reserved (used in 1984 version)"},
+
+ { MESSAGE_TYPE_LOOP_BACK_ACK, "Loop back acknowledgement (national use)"},
+
+ { 37, "Reserved (used in 1984 version)"},
+ { 38, "Reserved (used in 1984 version)"},
+ { 39, "Reserved (used in 1984 version)"},
+
+ { MESSAGE_TYPE_PASS_ALONG, "Pass-along (national use)"},
+ { MESSAGE_TYPE_CIRC_GRP_RST_ACK, "Circuit group reset acknowledgement"},
+ { MESSAGE_TYPE_CIRC_GRP_QRY, "Circuit group query (national use)"},
+ { MESSAGE_TYPE_CIRC_GRP_QRY_RSP, "Circuit group query response (national use)"},
+ { MESSAGE_TYPE_CALL_PROGRSS, "Call progress"},
+ { MESSAGE_TYPE_USER2USER_INFO, "User-to-user information"},
+ { MESSAGE_TYPE_UNEQUIPPED_CIC, "Unequipped CIC (national use)"},
+ { MESSAGE_TYPE_CONFUSION, "Confusion"},
+ { MESSAGE_TYPE_OVERLOAD, "Overload (national use)"},
+ { MESSAGE_TYPE_CHARGE_INFO, "Charge information (national use)"},
+ { MESSAGE_TYPE_NETW_RESRC_MGMT, "Network resource management"},
+ { MESSAGE_TYPE_FACILITY, "Facility"},
+ { MESSAGE_TYPE_USER_PART_TEST, "User part test"},
+ { MESSAGE_TYPE_USER_PART_AVAIL, "User part available"},
+ { MESSAGE_TYPE_IDENT_REQ, "Identification request"},
+ { MESSAGE_TYPE_IDENT_RSP, "Identification response"},
+ { MESSAGE_TYPE_SEGMENTATION, "Segmentation"},
+
+ { 57, "Reserved (used in B-ISUP)"},
+ { 58, "Reserved (used in B-ISUP)"},
+ { 59, "Reserved (used in B-ISUP)"},
+ { 60, "Reserved (used in B-ISUP)"},
+ { 61, "Reserved (used in B-ISUP)"},
+
+ { 63, "Unknown"},
+ { 63, "Unknown"},
+
+ { MESSAGE_TYPE_LOOP_PREVENTION, "Loop prevention"},
+ { MESSAGE_TYPE_APPLICATION_TRANS, "Application transport"},
+ { MESSAGE_TYPE_PRE_RELEASE_INFO, "Pre-release information"},
+ { MESSAGE_TYPE_SUBSEQUENT_DIR_NUM, "Subsequent Directory Number (national use)"},
+ { FRENCH_CHARGING_PULSE, "Charging Pulse"},
+ { FRENCH_CHARGING_ACK, "Charging Acknowledge"},
+ { 0, NULL}};
+static value_string_ext french_isup_message_type_value_ext = VALUE_STRING_EXT_INIT(french_isup_message_type_value);
+
+#define ISRAELI_BACKWARD_CHARGING 232
+#define ISRAELI_TRAFFIC_CHANGE 233
+#define ISRAELI_CHARGE_ACK 234
+static const value_string israeli_isup_message_type_value[] = {
+ { MESSAGE_TYPE_INITIAL_ADDR, "Initial address"},
+ { MESSAGE_TYPE_SUBSEQ_ADDR, "Subsequent address"},
+ { MESSAGE_TYPE_INFO_REQ, "Information request (national use)"},
+ { MESSAGE_TYPE_INFO, "Information (national use)"},
+ { MESSAGE_TYPE_CONTINUITY, "Continuity"},
+ { MESSAGE_TYPE_ADDR_CMPL, "Address complete"},
+ { MESSAGE_TYPE_CONNECT, "Connect"},
+ { MESSAGE_TYPE_FORW_TRANS, "Forward transfer"},
+ { MESSAGE_TYPE_ANSWER, "Answer"},
+
+ { 0x0a, "Reserved (used in 1984 version)"},
+ { 0x0b, "Reserved (used in 1984 version)"},
+
+ { MESSAGE_TYPE_RELEASE, "Release"},
+ { MESSAGE_TYPE_SUSPEND, "Suspend"},
+ { MESSAGE_TYPE_RESUME, "Resume"},
+ { MESSAGE_TYPE_REL_CMPL, "Release complete"},
+ { MESSAGE_TYPE_CONT_CHECK_REQ, "Continuity check request"},
+ { MESSAGE_TYPE_RESET_CIRCUIT, "Reset Circuit"},
+ { MESSAGE_TYPE_BLOCKING, "Blocking"},
+ { MESSAGE_TYPE_UNBLOCKING, "Unblocking"},
+ { MESSAGE_TYPE_BLOCK_ACK, "Blocking acknowledgement"},
+ { MESSAGE_TYPE_UNBLOCK_ACK, "Unblocking acknowledgment"},
+ { MESSAGE_TYPE_CIRC_GRP_RST, "Circuit group reset"},
+ { MESSAGE_TYPE_CIRC_GRP_BLCK, "Circuit group blocking"},
+ { MESSAGE_TYPE_CIRC_GRP_UNBL, "Circuit group unblocking"},
+ { MESSAGE_TYPE_CIRC_GRP_BL_ACK, "Circuit group blocking acknowledgement"},
+ { MESSAGE_TYPE_CIRC_GRP_UNBL_ACK, "Circuit group unblocking acknowledgement"},
+
+ { 28, "Reserved (used in 1988 version)"},
+ { 29, "Reserved (used in 1988 version)"},
+ { 30, "Reserved (used in 1988 version)"},
+
+ { MESSAGE_TYPE_FACILITY_REQ, "Facility request"},
+ { MESSAGE_TYPE_FACILITY_ACC, "Facility accepted"},
+ { MESSAGE_TYPE_FACILITY_REJ, "Facility reject"},
+
+ { 34, "Reserved (used in 1984 version)"},
+ { 35, "Reserved (used in 1984 version)"},
+
+ { MESSAGE_TYPE_LOOP_BACK_ACK, "Loop back acknowledgement (national use)"},
+
+ { 37, "Reserved (used in 1984 version)"},
+ { 38, "Reserved (used in 1984 version)"},
+ { 39, "Reserved (used in 1984 version)"},
+
+ { MESSAGE_TYPE_PASS_ALONG, "Pass-along (national use)"},
+ { MESSAGE_TYPE_CIRC_GRP_RST_ACK, "Circuit group reset acknowledgement"},
+ { MESSAGE_TYPE_CIRC_GRP_QRY, "Circuit group query (national use)"},
+ { MESSAGE_TYPE_CIRC_GRP_QRY_RSP, "Circuit group query response (national use)"},
+ { MESSAGE_TYPE_CALL_PROGRSS, "Call progress"},
+ { MESSAGE_TYPE_USER2USER_INFO, "User-to-user information"},
+ { MESSAGE_TYPE_UNEQUIPPED_CIC, "Unequipped CIC (national use)"},
+ { MESSAGE_TYPE_CONFUSION, "Confusion"},
+ { MESSAGE_TYPE_OVERLOAD, "Overload (national use)"},
+ { MESSAGE_TYPE_CHARGE_INFO, "Charge information (national use)"},
+ { MESSAGE_TYPE_NETW_RESRC_MGMT, "Network resource management"},
+ { MESSAGE_TYPE_FACILITY, "Facility"},
+ { MESSAGE_TYPE_USER_PART_TEST, "User part test"},
+ { MESSAGE_TYPE_USER_PART_AVAIL, "User part available"},
+ { MESSAGE_TYPE_IDENT_REQ, "Identification request"},
+ { MESSAGE_TYPE_IDENT_RSP, "Identification response"},
+ { MESSAGE_TYPE_SEGMENTATION, "Segmentation"},
+
+ { 57, "Reserved (used in B-ISUP)"},
+ { 58, "Reserved (used in B-ISUP)"},
+ { 59, "Reserved (used in B-ISUP)"},
+ { 60, "Reserved (used in B-ISUP)"},
+ { 61, "Reserved (used in B-ISUP)"},
+
+ { 63, "Unknown"},
+ { 63, "Unknown"},
+
+ { MESSAGE_TYPE_LOOP_PREVENTION, "Loop prevention"},
+ { MESSAGE_TYPE_APPLICATION_TRANS, "Application transport"},
+ { MESSAGE_TYPE_PRE_RELEASE_INFO, "Pre-release information"},
+ { MESSAGE_TYPE_SUBSEQUENT_DIR_NUM, "Subsequent Directory Number (national use)"},
+ { ISRAELI_BACKWARD_CHARGING, "Backward Charging"},
+ { ISRAELI_TRAFFIC_CHANGE, "Traffic Change"},
+ { ISRAELI_CHARGE_ACK, "Charge Ack"},
+ { 0, NULL}};
+static value_string_ext israeli_isup_message_type_value_ext = VALUE_STRING_EXT_INIT(israeli_isup_message_type_value);
+
static const value_string ansi_isup_message_type_value[] = {
{ MESSAGE_TYPE_INITIAL_ADDR, "Initial address"},
{ MESSAGE_TYPE_SUBSEQ_ADDR, "Subsequent address"},
@@ -341,6 +524,173 @@ static const value_string isup_message_type_value_acro[] = {
{ 0, NULL}};
value_string_ext isup_message_type_value_acro_ext = VALUE_STRING_EXT_INIT(isup_message_type_value_acro);
+static const value_string french_isup_message_type_value_acro[] = {
+ { MESSAGE_TYPE_INITIAL_ADDR, "IAM"},
+ { MESSAGE_TYPE_SUBSEQ_ADDR, "SAM"},
+ { MESSAGE_TYPE_INFO_REQ, "INR"},
+ { MESSAGE_TYPE_INFO, "INF"},
+ { MESSAGE_TYPE_CONTINUITY, "COT"},
+ { MESSAGE_TYPE_ADDR_CMPL, "ACM"},
+ { MESSAGE_TYPE_CONNECT, "CON"},
+ { MESSAGE_TYPE_FORW_TRANS, "FOT"},
+ { MESSAGE_TYPE_ANSWER, "ANM"},
+
+ { 0x0a, "Reserved"},
+ { 0x0b, "Reserved"},
+
+ { MESSAGE_TYPE_RELEASE, "REL"},
+ { MESSAGE_TYPE_SUSPEND, "SUS"},
+ { MESSAGE_TYPE_RESUME, "RES"},
+ { MESSAGE_TYPE_REL_CMPL, "RLC"},
+ { MESSAGE_TYPE_CONT_CHECK_REQ, "CCR"},
+ { MESSAGE_TYPE_RESET_CIRCUIT, "RSC"},
+ { MESSAGE_TYPE_BLOCKING, "BLO"},
+ { MESSAGE_TYPE_UNBLOCKING, "UBL"},
+ { MESSAGE_TYPE_BLOCK_ACK, "BLA"},
+ { MESSAGE_TYPE_UNBLOCK_ACK, "UBLA"},
+ { MESSAGE_TYPE_CIRC_GRP_RST, "GRS"},
+ { MESSAGE_TYPE_CIRC_GRP_BLCK, "CGB"},
+ { MESSAGE_TYPE_CIRC_GRP_UNBL, "CGU"},
+ { MESSAGE_TYPE_CIRC_GRP_BL_ACK, "CGBA"},
+ { MESSAGE_TYPE_CIRC_GRP_UNBL_ACK, "CGUA"},
+
+ { 28, "Reserved"},
+ { 29, "Reserved"},
+ { 30, "Reserved"},
+
+ { MESSAGE_TYPE_FACILITY_REQ, "FAR"},
+ { MESSAGE_TYPE_FACILITY_ACC, "FAA"},
+ { MESSAGE_TYPE_FACILITY_REJ, "FRJ"},
+
+ { 34, "Reserved"},
+ { 35, "Reserved"},
+
+ { MESSAGE_TYPE_LOOP_BACK_ACK, "LPA"},
+
+ { 37, "Reserved"},
+ { 38, "Reserved"},
+ { 39, "Reserved"},
+
+ { MESSAGE_TYPE_PASS_ALONG, "PAM"},
+ { MESSAGE_TYPE_CIRC_GRP_RST_ACK, "GRA"},
+ { MESSAGE_TYPE_CIRC_GRP_QRY, "CQM"},
+ { MESSAGE_TYPE_CIRC_GRP_QRY_RSP, "CQR"},
+ { MESSAGE_TYPE_CALL_PROGRSS, "CPG"},
+ { MESSAGE_TYPE_USER2USER_INFO, "UUI"},
+ { MESSAGE_TYPE_UNEQUIPPED_CIC, "UCIC"},
+ { MESSAGE_TYPE_CONFUSION, "CFN"},
+ { MESSAGE_TYPE_OVERLOAD, "OLM"},
+ { MESSAGE_TYPE_CHARGE_INFO, "CRG"},
+ { MESSAGE_TYPE_NETW_RESRC_MGMT, "NRM"},
+ { MESSAGE_TYPE_FACILITY, "FAC"},
+ { MESSAGE_TYPE_USER_PART_TEST, "UPT"},
+ { MESSAGE_TYPE_USER_PART_AVAIL, "UPA"},
+ { MESSAGE_TYPE_IDENT_REQ, "IDR"},
+ { MESSAGE_TYPE_IDENT_RSP, "IDS"},
+ { MESSAGE_TYPE_SEGMENTATION, "SGM"},
+
+ { 57, "Reserved"},
+ { 58, "Reserved"},
+ { 59, "Reserved"},
+ { 60, "Reserved"},
+ { 61, "Reserved"},
+
+ { 63, "Unknown"},
+ { 63, "Unknown"},
+
+ { MESSAGE_TYPE_LOOP_PREVENTION, "LOP"},
+ { MESSAGE_TYPE_APPLICATION_TRANS, "APM"},
+ { MESSAGE_TYPE_PRE_RELEASE_INFO, "PRI"},
+ { MESSAGE_TYPE_SUBSEQUENT_DIR_NUM, "SDN"},
+ { FRENCH_CHARGING_PULSE, "CHP"},
+ { FRENCH_CHARGING_ACK, "CHA"},
+ { 0, NULL}};
+value_string_ext french_isup_message_type_value_acro_ext = VALUE_STRING_EXT_INIT(french_isup_message_type_value_acro);
+
+static const value_string israeli_isup_message_type_value_acro[] = {
+ { MESSAGE_TYPE_INITIAL_ADDR, "IAM"},
+ { MESSAGE_TYPE_SUBSEQ_ADDR, "SAM"},
+ { MESSAGE_TYPE_INFO_REQ, "INR"},
+ { MESSAGE_TYPE_INFO, "INF"},
+ { MESSAGE_TYPE_CONTINUITY, "COT"},
+ { MESSAGE_TYPE_ADDR_CMPL, "ACM"},
+ { MESSAGE_TYPE_CONNECT, "CON"},
+ { MESSAGE_TYPE_FORW_TRANS, "FOT"},
+ { MESSAGE_TYPE_ANSWER, "ANM"},
+
+ { 0x0a, "Reserved"},
+ { 0x0b, "Reserved"},
+
+ { MESSAGE_TYPE_RELEASE, "REL"},
+ { MESSAGE_TYPE_SUSPEND, "SUS"},
+ { MESSAGE_TYPE_RESUME, "RES"},
+ { MESSAGE_TYPE_REL_CMPL, "RLC"},
+ { MESSAGE_TYPE_CONT_CHECK_REQ, "CCR"},
+ { MESSAGE_TYPE_RESET_CIRCUIT, "RSC"},
+ { MESSAGE_TYPE_BLOCKING, "BLO"},
+ { MESSAGE_TYPE_UNBLOCKING, "UBL"},
+ { MESSAGE_TYPE_BLOCK_ACK, "BLA"},
+ { MESSAGE_TYPE_UNBLOCK_ACK, "UBLA"},
+ { MESSAGE_TYPE_CIRC_GRP_RST, "GRS"},
+ { MESSAGE_TYPE_CIRC_GRP_BLCK, "CGB"},
+ { MESSAGE_TYPE_CIRC_GRP_UNBL, "CGU"},
+ { MESSAGE_TYPE_CIRC_GRP_BL_ACK, "CGBA"},
+ { MESSAGE_TYPE_CIRC_GRP_UNBL_ACK, "CGUA"},
+
+ { 28, "Reserved"},
+ { 29, "Reserved"},
+ { 30, "Reserved"},
+
+ { MESSAGE_TYPE_FACILITY_REQ, "FAR"},
+ { MESSAGE_TYPE_FACILITY_ACC, "FAA"},
+ { MESSAGE_TYPE_FACILITY_REJ, "FRJ"},
+
+ { 34, "Reserved"},
+ { 35, "Reserved"},
+
+ { MESSAGE_TYPE_LOOP_BACK_ACK, "LPA"},
+
+ { 37, "Reserved"},
+ { 38, "Reserved"},
+ { 39, "Reserved"},
+
+ { MESSAGE_TYPE_PASS_ALONG, "PAM"},
+ { MESSAGE_TYPE_CIRC_GRP_RST_ACK, "GRA"},
+ { MESSAGE_TYPE_CIRC_GRP_QRY, "CQM"},
+ { MESSAGE_TYPE_CIRC_GRP_QRY_RSP, "CQR"},
+ { MESSAGE_TYPE_CALL_PROGRSS, "CPG"},
+ { MESSAGE_TYPE_USER2USER_INFO, "UUI"},
+ { MESSAGE_TYPE_UNEQUIPPED_CIC, "UCIC"},
+ { MESSAGE_TYPE_CONFUSION, "CFN"},
+ { MESSAGE_TYPE_OVERLOAD, "OLM"},
+ { MESSAGE_TYPE_CHARGE_INFO, "CRG"},
+ { MESSAGE_TYPE_NETW_RESRC_MGMT, "NRM"},
+ { MESSAGE_TYPE_FACILITY, "FAC"},
+ { MESSAGE_TYPE_USER_PART_TEST, "UPT"},
+ { MESSAGE_TYPE_USER_PART_AVAIL, "UPA"},
+ { MESSAGE_TYPE_IDENT_REQ, "IDR"},
+ { MESSAGE_TYPE_IDENT_RSP, "IDS"},
+ { MESSAGE_TYPE_SEGMENTATION, "SGM"},
+
+ { 57, "Reserved"},
+ { 58, "Reserved"},
+ { 59, "Reserved"},
+ { 60, "Reserved"},
+ { 61, "Reserved"},
+
+ { 63, "Unknown"},
+ { 63, "Unknown"},
+
+ { MESSAGE_TYPE_LOOP_PREVENTION, "LOP"},
+ { MESSAGE_TYPE_APPLICATION_TRANS, "APM"},
+ { MESSAGE_TYPE_PRE_RELEASE_INFO, "PRI"},
+ { MESSAGE_TYPE_SUBSEQUENT_DIR_NUM, "SDN"},
+ { ISRAELI_BACKWARD_CHARGING, "BCM"},
+ { ISRAELI_TRAFFIC_CHANGE, "TCM"},
+ { ISRAELI_CHARGE_ACK, "CAM"},
+ { 0, NULL}};
+value_string_ext israeli_isup_message_type_value_acro_ext = VALUE_STRING_EXT_INIT(israeli_isup_message_type_value_acro);
+
/* Same as above but in acronym form (for the Info column) */
static const value_string ansi_isup_message_type_value_acro[] = {
{ MESSAGE_TYPE_INITIAL_ADDR, "IAM"},
@@ -1817,6 +2167,17 @@ static int hf_isup_apm_msg_fragment_count = -1;
static int hf_isup_apm_msg_reassembled_in = -1;
static int hf_isup_apm_msg_reassembled_length = -1;
+/* national parameters */
+static int hf_isup_french_coll_field = -1;
+static int hf_isup_french_msg_num = -1;
+
+static int hf_isup_israeli_charging_message_indicators_current = -1;
+static int hf_isup_israeli_charging_message_indicators_next = -1;
+static int hf_isup_israeli_current_rate = -1;
+static int hf_isup_israeli_time_indicator = -1;
+static int hf_isup_israeli_next_rate = -1;
+
+
/* Initialize the subtree pointers */
static gint ett_isup = -1;
static gint ett_isup_parameter = -1;
@@ -1905,8 +2266,8 @@ dissect_isup_cvr_response_ind_parameter(tvbuff_t *parameter_tvb, proto_tree *par
guint8 cvr_response_ind;
cvr_response_ind = tvb_get_guint8(parameter_tvb, 0);
- proto_tree_add_uint(parameter_tree, hf_isup_cvr_rsp_ind, parameter_tvb, 0, CVR_RESP_IND_LENGTH, cvr_response_ind );
- proto_item_set_text(parameter_item, "Circuit Validation Test Response Indicator: 0x%x", cvr_response_ind );
+ proto_tree_add_uint(parameter_tree, hf_isup_cvr_rsp_ind, parameter_tvb, 0, CVR_RESP_IND_LENGTH, cvr_response_ind);
+ proto_item_set_text(parameter_item, "Circuit Validation Test Response Indicator: 0x%x", cvr_response_ind);
}
@@ -1920,12 +2281,12 @@ dissect_isup_circuit_group_char_ind_parameter(tvbuff_t *parameter_tvb, proto_tre
guint8 cvr_cg_char_ind;
cvr_cg_char_ind = tvb_get_guint8(parameter_tvb, 0);
- proto_tree_add_uint(parameter_tree, hf_isup_cvr_cg_car_ind, parameter_tvb, 0, CG_CHAR_IND_LENGTH, cvr_cg_char_ind );
- proto_tree_add_uint(parameter_tree, hf_isup_cvr_cg_double_seize, parameter_tvb, 0, CG_CHAR_IND_LENGTH, cvr_cg_char_ind );
- proto_tree_add_uint(parameter_tree, hf_isup_cvr_cg_alarm_car_ind, parameter_tvb, 0, CG_CHAR_IND_LENGTH, cvr_cg_char_ind );
- proto_tree_add_uint(parameter_tree, hf_isup_cvr_cont_chk_ind, parameter_tvb, 0, CG_CHAR_IND_LENGTH, cvr_cg_char_ind );
+ proto_tree_add_uint(parameter_tree, hf_isup_cvr_cg_car_ind, parameter_tvb, 0, CG_CHAR_IND_LENGTH, cvr_cg_char_ind);
+ proto_tree_add_uint(parameter_tree, hf_isup_cvr_cg_double_seize, parameter_tvb, 0, CG_CHAR_IND_LENGTH, cvr_cg_char_ind);
+ proto_tree_add_uint(parameter_tree, hf_isup_cvr_cg_alarm_car_ind, parameter_tvb, 0, CG_CHAR_IND_LENGTH, cvr_cg_char_ind);
+ proto_tree_add_uint(parameter_tree, hf_isup_cvr_cont_chk_ind, parameter_tvb, 0, CG_CHAR_IND_LENGTH, cvr_cg_char_ind);
- proto_item_set_text(parameter_item, "Circuit Validation Test Response Circuit Group Characteristics: 0x%x", cvr_cg_char_ind );
+ proto_item_set_text(parameter_item, "Circuit Validation Test Response Circuit Group Characteristics: 0x%x", cvr_cg_char_ind);
}
/* ------------------------------------------------------------------
@@ -1964,7 +2325,7 @@ dissect_isup_forward_call_indicators_parameter(tvbuff_t *parameter_tvb,proto_tre
proto_tree_add_boolean(parameter_tree, hf_isup_forw_call_ported_num_trans_indicator, parameter_tvb, 0, FORWARD_CALL_IND_LENGTH, forward_call_ind);
proto_tree_add_boolean(parameter_tree, hf_isup_forw_call_qor_attempt_indicator, parameter_tvb, 0, FORWARD_CALL_IND_LENGTH, forward_call_ind);
- proto_item_set_text(parameter_item, "Forward Call Indicators: 0x%x", forward_call_ind );
+ proto_item_set_text(parameter_item, "Forward Call Indicators: 0x%x", forward_call_ind);
}
/* ------------------------------------------------------------------
@@ -2038,7 +2399,7 @@ dissect_isup_called_party_number_parameter(tvbuff_t *parameter_tvb, proto_tree *
called_number[i++] = number_to_char(address_digit_pair & ISUP_ODD_ADDRESS_SIGNAL_DIGIT_MASK);
if (i > MAXDIGITS)
THROW(ReportedBoundsError);
- if ((length - 1) > 0 ){
+ if ((length - 1) > 0) {
proto_tree_add_uint(address_digits_tree, hf_isup_called_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
called_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
@@ -2056,7 +2417,7 @@ dissect_isup_called_party_number_parameter(tvbuff_t *parameter_tvb, proto_tree *
called_number[i++] = '\0';
proto_item_set_text(address_digits_item, "Called Party Number: %s", called_number);
proto_item_set_text(parameter_item, "Called Party Number: %s", called_number);
- if ( number_plan == 1 ) {
+ if (number_plan == 1) {
e164_info.e164_number_type = CALLED_PARTY_NUMBER;
e164_info.nature_of_address = indicators1 & 0x7f;
e164_info.E164_number_str = called_number;
@@ -2095,13 +2456,13 @@ dissect_isup_subsequent_number_parameter(tvbuff_t *parameter_tvb, proto_tree *pa
"Subsequent Number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
- while((length = tvb_reported_length_remaining(parameter_tvb, offset)) > 0){
+ while((length = tvb_reported_length_remaining(parameter_tvb, offset)) > 0) {
address_digit_pair = tvb_get_guint8(parameter_tvb, offset);
proto_tree_add_uint(address_digits_tree, hf_isup_called_party_odd_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
called_number[i++] = number_to_char(address_digit_pair & ISUP_ODD_ADDRESS_SIGNAL_DIGIT_MASK);
if (i > MAXDIGITS)
THROW(ReportedBoundsError);
- if ((length - 1) > 0 ){
+ if ((length - 1) > 0) {
proto_tree_add_uint(address_digits_tree, hf_isup_called_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
called_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
@@ -2110,13 +2471,13 @@ dissect_isup_subsequent_number_parameter(tvbuff_t *parameter_tvb, proto_tree *pa
offset++;
}
- if (((indicators1 & 0x80) == 0) && (tvb_length(parameter_tvb) > 0)){ /* Even Indicator set -> last even digit is valid & has be displayed */
+ if (((indicators1 & 0x80) == 0) && (tvb_length(parameter_tvb) > 0)) { /* Even Indicator set -> last even digit is valid & has be displayed */
proto_tree_add_uint(address_digits_tree, hf_isup_called_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
called_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
THROW(ReportedBoundsError);
}
- called_number[i++] = '\0';
+ called_number[i] = '\0';
proto_item_set_text(address_digits_item, "Subsequent Number: %s", called_number);
proto_item_set_text(parameter_item, "Subsequent Number: %s", called_number);
@@ -2515,7 +2876,7 @@ dissect_ansi_isup_cause_indicators_parameter(tvbuff_t *parameter_tvb, proto_tree
cause_value=tvb_get_guint8(parameter_tvb, offset)&0x7f;
offset ++;
length--;
- proto_item_set_text(parameter_item, "Cause indicators: %s (%u)", val_to_str_ext_const(cause_value, &q850_cause_code_vals_ext, "spare"),cause_value );
+ proto_item_set_text(parameter_item, "Cause indicators: %s (%u)", val_to_str_ext_const(cause_value, &q850_cause_code_vals_ext, "spare"),cause_value);
if (length == 0) {
return;
}
@@ -2536,7 +2897,7 @@ dissect_ansi_isup_cause_indicators_parameter(tvbuff_t *parameter_tvb, proto_tree
cause_value=tvb_get_guint8(parameter_tvb, offset)&0x7f;
proto_item_set_text(parameter_item, "Cause indicators: %s (%u)",
val_to_str_ext_const(cause_value, &ansi_isup_cause_code_vals_ext, "spare"),
- cause_value );
+ cause_value);
offset ++;
length--;
if (length == 0) {
@@ -2623,13 +2984,13 @@ dissect_isup_circuit_state_ind_parameter(tvbuff_t *parameter_tvb, proto_tree *pa
gint offset=0;
gint i=0;
- while(tvb_reported_length_remaining(parameter_tvb, offset) > 0){
+ while(tvb_reported_length_remaining(parameter_tvb, offset) > 0) {
circuit_state_item = proto_tree_add_text(parameter_tree, parameter_tvb,
offset, -1,
"Circuit# CIC+%u state", i);
circuit_state_tree = proto_item_add_subtree(circuit_state_item, ett_isup_circuit_state_ind);
circuit_state = tvb_get_guint8(parameter_tvb, offset);
- if ((circuit_state & DC_8BIT_MASK) == 0){
+ if ((circuit_state & DC_8BIT_MASK) == 0) {
proto_tree_add_uint(circuit_state_tree, hf_isup_mtc_blocking_state1, parameter_tvb, offset, 1, circuit_state);
proto_item_set_text(circuit_state_item, "Circuit# CIC+%u state: %s", i++, val_to_str(circuit_state&BA_8BIT_MASK, isup_mtc_blocking_state_DC00_value, "unknown"));
}
@@ -2655,7 +3016,7 @@ dissect_isup_event_information_parameter(tvbuff_t *parameter_tvb, proto_tree *pa
proto_tree_add_uint_format(parameter_tree, hf_isup_event_ind, parameter_tvb, 0, EVENT_INFO_LENGTH, indicators, "Event indicator: %s (%u)", val_to_str(indicators & GFEDCBA_8BIT_MASK, isup_event_ind_value, "spare"), indicators & GFEDCBA_8BIT_MASK);
proto_tree_add_boolean(parameter_tree, hf_isup_event_presentation_restricted_ind, parameter_tvb, 0, EVENT_INFO_LENGTH, indicators);
- proto_item_set_text(parameter_item,"Event information: %s (%u)", val_to_str(indicators & GFEDCBA_8BIT_MASK, isup_event_ind_value, "spare"),indicators );
+ proto_item_set_text(parameter_item,"Event information: %s (%u)", val_to_str(indicators & GFEDCBA_8BIT_MASK, isup_event_ind_value, "spare"),indicators);
}
/* ------------------------------------------------------------------
Dissector Parameter User-to-user information- no detailed dissection since defined in Rec. Q.931
@@ -2666,7 +3027,7 @@ dissect_isup_user_to_user_information_parameter(tvbuff_t *parameter_tvb, packet_
proto_tree_add_text(parameter_tree, parameter_tvb, 0, -1,
"User-to-user info (-> Q.931)");
dissect_q931_user_user_ie(parameter_tvb, pinfo, 0, length,
- parameter_tree );
+ parameter_tree);
proto_item_set_text(parameter_item, "User-to-user information,(%u byte%s length)",
length , plurality(length, "", "s"));
}
@@ -2724,7 +3085,7 @@ static const value_string x213_afi_value[] = {
{ 0x48, "Local"},
{ 0x49, "Local"},
{ 0x50, "Local ISO/IEC 646 character "},
- { 0x51, "Local ( National character )"},
+ { 0x51, "Local (National character)"},
{ 0x52, "X.121"},
{ 0x53, "X.121"},
{ 0x54, "F.69"},
@@ -2754,7 +3115,7 @@ static const value_string x213_afi_value[] = {
{ 0xc6, "Local Group no"},
{ 0xc7, "Local Group no"},
{ 0xc8, "Local ISO/IEC 646 character Group no"},
- { 0xc9, "Local ( National character ) Group no"},
+ { 0xc9, "Local (National character) Group no"},
{ 0xca, "X.121 Group no"},
{ 0xcb, "X.121 Group no"},
{ 0xcd, "F.69 Group no"},
@@ -2794,16 +3155,16 @@ dissect_nsap(tvbuff_t *parameter_tvb,gint offset,gint len, proto_tree *parameter
afi = tvb_get_guint8(parameter_tvb, offset);
- switch ( afi ) {
+ switch (afi) {
case 0x35: /* IANA ICP Binary fortmat*/
proto_tree_add_text(parameter_tree, parameter_tvb, offset, 3,
"IDP = %s", tvb_bytes_to_str(parameter_tvb, offset, 3));
- proto_tree_add_uint(parameter_tree, hf_afi, parameter_tvb, offset, 1, afi );
+ proto_tree_add_uint(parameter_tree, hf_afi, parameter_tvb, offset, 1, afi);
offset = offset + 1;
icp = tvb_get_ntohs(parameter_tvb, offset);
- proto_tree_add_uint(parameter_tree, hf_iana_icp, parameter_tvb, offset, 1, icp );
- if ( icp == 0 ){ /* IPv6 addr */
+ proto_tree_add_uint(parameter_tree, hf_iana_icp, parameter_tvb, offset, 1, icp);
+ if (icp == 0) { /* IPv6 addr */
proto_tree_add_text(parameter_tree, parameter_tvb, offset + 2 , 17,
"DSP = %s", tvb_bytes_to_str(parameter_tvb, offset + 2, 17));
proto_tree_add_item(parameter_tree, hf_nsap_ipv6_addr, parameter_tvb, offset + 2,
@@ -2823,7 +3184,7 @@ dissect_nsap(tvbuff_t *parameter_tvb,gint offset,gint len, proto_tree *parameter
proto_tree_add_text(parameter_tree, parameter_tvb, offset, 9,
"IDP = %s", tvb_bytes_to_str(parameter_tvb, offset, 9));
- proto_tree_add_uint(parameter_tree, hf_afi, parameter_tvb, offset, 1, afi );
+ proto_tree_add_uint(parameter_tree, hf_afi, parameter_tvb, offset, 1, afi);
proto_tree_add_text(parameter_tree, parameter_tvb, offset + 1, 8,
"IDI = %s", tvb_bytes_to_str(parameter_tvb, offset + 1, 8));
@@ -2832,13 +3193,13 @@ dissect_nsap(tvbuff_t *parameter_tvb,gint offset,gint len, proto_tree *parameter
cc_offset = offset;
dissect_e164_cc(parameter_tvb, parameter_tree, 3, TRUE);
- proto_tree_add_text(parameter_tree,parameter_tvb, cc_offset, length,"DSP length %u(len %u -9 )",(len-9),len );
+ proto_tree_add_text(parameter_tree,parameter_tvb, cc_offset, length,"DSP length %u(len %u -9)",(len-9),len);
proto_tree_add_item(parameter_tree, hf_bicc_nsap_dsp, parameter_tvb, offset + 8, (len - 9),ENC_NA);
break;
default:
- proto_tree_add_uint(parameter_tree, hf_afi, parameter_tvb, offset, len, afi );
+ proto_tree_add_uint(parameter_tree, hf_afi, parameter_tvb, offset, len, afi);
}/* end switch afi */
}
@@ -2994,22 +3355,22 @@ static value_string_ext ITU_T_codec_type_subfield_vals_ext = VALUE_STRING_EXT_IN
static const value_string ETSI_codec_type_subfield_vals[] = {
- { 0x00, "GSM Full Rate (13.0 kBit/s)( GSM FR )"},
- { 0x01, "GSM Half Rate (5.6 kBit/s) ( GSM HR )"},
- { 0x02, "GSM Enhanced Full Rate (12.2 kBit/s)( GSM EFR )"},
- { 0x03, "Full Rate Adaptive Multi-Rate ( FR AMR )"},
- { 0x04, "Half Rate Adaptive Multi-Rate ( HR AMR )"},
- { 0x05, "UMTS Adaptive Multi-Rate ( UMTS AMR )"},
- { 0x06, "UMTS Adaptive Multi-Rate 2 ( UMTS AMR 2 )"},
- { 0x07, "TDMA Enhanced Full Rate (7.4 kBit/s) ( TDMA EFR )"},
- { 0x08, "PDC Enhanced Full Rate (6.7 kBit/s) ( PDC EFR )"},
- { 0x09, "Full Rate Adaptive Multi-Rate WideBand ( FR AMR-WB )"},
- { 0x0a, "UMTS Adaptive Multi-Rate WideBand ( UMTS AMR-WB )"},
- { 0x0b, "8PSK Half Rate Adaptive Multi-Rate ( OHR AMR )"},
- { 0x0c, "8PSK Full Rate Adaptive Multi-Rate WideBand ( OFR AMR-WB )"},
- { 0x0d, "8PSK Half Rate Adaptive Multi-Rate WideBand ( OHR AMR-WB )"},
+ { 0x00, "GSM Full Rate (13.0 kBit/s)(GSM FR)"},
+ { 0x01, "GSM Half Rate (5.6 kBit/s) (GSM HR)"},
+ { 0x02, "GSM Enhanced Full Rate (12.2 kBit/s)(GSM EFR)"},
+ { 0x03, "Full Rate Adaptive Multi-Rate (FR AMR)"},
+ { 0x04, "Half Rate Adaptive Multi-Rate (HR AMR)"},
+ { 0x05, "UMTS Adaptive Multi-Rate (UMTS AMR)"},
+ { 0x06, "UMTS Adaptive Multi-Rate 2 (UMTS AMR 2)"},
+ { 0x07, "TDMA Enhanced Full Rate (7.4 kBit/s) (TDMA EFR)"},
+ { 0x08, "PDC Enhanced Full Rate (6.7 kBit/s) (PDC EFR)"},
+ { 0x09, "Full Rate Adaptive Multi-Rate WideBand (FR AMR-WB)"},
+ { 0x0a, "UMTS Adaptive Multi-Rate WideBand (UMTS AMR-WB)"},
+ { 0x0b, "8PSK Half Rate Adaptive Multi-Rate (OHR AMR)"},
+ { 0x0c, "8PSK Full Rate Adaptive Multi-Rate WideBand (OFR AMR-WB)"},
+ { 0x0d, "8PSK Half Rate Adaptive Multi-Rate WideBand (OHR AMR-WB)"},
{ 0xfe, "Reserved for future use."},
- { 0xff, "Reserved for MuMe dummy Codec Type ( MuMe )"},
+ { 0xff, "Reserved for MuMe dummy Codec Type (MuMe)"},
{ 0, NULL }
};
static value_string_ext ETSI_codec_type_subfield_vals_ext = VALUE_STRING_EXT_INIT(ETSI_codec_type_subfield_vals);
@@ -3184,14 +3545,14 @@ extern int dissect_codec_mode(proto_tree *tree, tvbuff_t *tvb, int offset, int l
tempdata = tvb_get_guint8(tvb, offset);
- proto_tree_add_uint(tree, hf_Organization_Identifier , tvb, offset, 1, tempdata );
- switch ( tempdata ){
+ proto_tree_add_uint(tree, hf_Organization_Identifier , tvb, offset, 1, tempdata);
+ switch (tempdata) {
case ITU_T :
offset = offset + 1;
tempdata = tvb_get_guint8(tvb, offset);
- proto_tree_add_uint(tree, hf_codec_type , tvb, offset, 1, tempdata );
+ proto_tree_add_uint(tree, hf_codec_type , tvb, offset, 1, tempdata);
offset = offset + 1;
- switch ( tempdata ) {
+ switch (tempdata) {
case G_711_64_A :
case G_711_64_U :
case G_711_56_A :
@@ -3204,7 +3565,7 @@ extern int dissect_codec_mode(proto_tree *tree, tvbuff_t *tvb, int offset, int l
case G_726_ADPCM :
case G_727_Embedded_ADPCM :
/* four bit config data, TODO decode config */
- if ( len > 2 ) {
+ if (len > 2) {
tempdata = tvb_get_guint8(tvb, offset);
proto_tree_add_text(tree, tvb, offset, 1, "Configuration data : 0x%x", tempdata);
offset = offset + 1;
@@ -3214,7 +3575,7 @@ extern int dissect_codec_mode(proto_tree *tree, tvbuff_t *tvb, int offset, int l
case G_729_CS_ACELP :
case G_729_Annex_B :
/* three bit config data, TODO decode config */
- if ( len > 2 ) {
+ if (len > 2) {
tempdata = tvb_get_guint8(tvb, offset);
proto_tree_add_text(tree, tvb, offset, 1 , "Configuration data : 0x%x", tempdata);
offset = offset + 1;
@@ -3228,10 +3589,9 @@ extern int dissect_codec_mode(proto_tree *tree, tvbuff_t *tvb, int offset, int l
case ETSI:
offset = offset + 1;
tempdata = tvb_get_guint8(tvb, offset);
- proto_tree_add_uint(tree, hf_etsi_codec_type , tvb, offset, 1, tempdata );
- if ( len > 2 ) {
+ proto_tree_add_uint(tree, hf_etsi_codec_type , tvb, offset, 1, tempdata);
+ if (len > 2) {
offset = offset + 1;
- tempdata = tvb_get_guint8(tvb, offset);
acs_item = proto_tree_add_item(tree, hf_active_code_set, tvb, offset, 1, ENC_LITTLE_ENDIAN);
acs_tree = proto_item_add_subtree(acs_item,ett_acs);
@@ -3245,9 +3605,8 @@ extern int dissect_codec_mode(proto_tree *tree, tvbuff_t *tvb, int offset, int l
proto_tree_add_item(acs_tree, hf_active_code_set_4_75, tvb, offset, 1, ENC_LITTLE_ENDIAN);
}
- if ( len > 3 ) {
+ if (len > 3) {
offset = offset + 1;
- tempdata = tvb_get_guint8(tvb, offset);
scs_item = proto_tree_add_item(tree, hf_supported_code_set, tvb, offset, 1, ENC_LITTLE_ENDIAN);
scs_tree = proto_item_add_subtree(scs_item,ett_scs);
@@ -3260,7 +3619,7 @@ extern int dissect_codec_mode(proto_tree *tree, tvbuff_t *tvb, int offset, int l
proto_tree_add_item(scs_tree, hf_supported_code_set_5_15, tvb, offset, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(scs_tree, hf_supported_code_set_4_75, tvb, offset, 1, ENC_LITTLE_ENDIAN);
}
- if ( len > 4 ) {
+ if (len > 4) {
offset = offset + 1;
proto_tree_add_item(tree, hf_optimisation_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(tree, hf_max_codec_modes, tvb, offset, 1, ENC_LITTLE_ENDIAN);
@@ -3271,7 +3630,7 @@ extern int dissect_codec_mode(proto_tree *tree, tvbuff_t *tvb, int offset, int l
offset = offset + 1;
tempdata = tvb_get_guint8(tvb, offset);
proto_tree_add_text(tree, tvb, offset, len ,
- "Unknown organisation Identifier ( Non ITU-T/ETSI codec ) %u", tempdata);
+ "Unknown organisation Identifier (Non ITU-T/ETSI codec) %u", tempdata);
offset = offset + len - 1;
break;
}
@@ -3286,15 +3645,15 @@ dissect_codec(tvbuff_t *parameter_tvb, proto_tree *bat_ase_element_tree, gint le
/* offset is at length indicator e.g 1 step past identifier */
guint8 compatibility_info;
- proto_tree_add_uint(bat_ase_element_tree , hf_bat_ase_identifier , parameter_tvb, offset - 1, 1, identifier );
- proto_tree_add_uint(bat_ase_element_tree , hf_length_indicator , parameter_tvb, offset, 1, length_indicator );
+ proto_tree_add_uint(bat_ase_element_tree , hf_bat_ase_identifier , parameter_tvb, offset - 1, 1, identifier);
+ proto_tree_add_uint(bat_ase_element_tree , hf_length_indicator , parameter_tvb, offset, 1, length_indicator);
offset = offset + 1;
compatibility_info = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_uint(bat_ase_element_tree, hf_Instruction_ind_for_general_action , parameter_tvb, offset, 1, compatibility_info );
- proto_tree_add_boolean(bat_ase_element_tree, hf_Send_notification_ind_for_general_action , parameter_tvb, offset, 1, compatibility_info );
- proto_tree_add_uint(bat_ase_element_tree, hf_Instruction_ind_for_pass_on_not_possible , parameter_tvb, offset, 1, compatibility_info );
- proto_tree_add_boolean(bat_ase_element_tree, hf_Send_notification_ind_for_pass_on_not_possible , parameter_tvb, offset, 1, compatibility_info );
- proto_tree_add_boolean(bat_ase_element_tree, hf_isup_extension_ind , parameter_tvb, offset, 1, compatibility_info );
+ proto_tree_add_uint(bat_ase_element_tree, hf_Instruction_ind_for_general_action , parameter_tvb, offset, 1, compatibility_info);
+ proto_tree_add_boolean(bat_ase_element_tree, hf_Send_notification_ind_for_general_action , parameter_tvb, offset, 1, compatibility_info);
+ proto_tree_add_uint(bat_ase_element_tree, hf_Instruction_ind_for_pass_on_not_possible , parameter_tvb, offset, 1, compatibility_info);
+ proto_tree_add_boolean(bat_ase_element_tree, hf_Send_notification_ind_for_pass_on_not_possible , parameter_tvb, offset, 1, compatibility_info);
+ proto_tree_add_boolean(bat_ase_element_tree, hf_isup_extension_ind , parameter_tvb, offset, 1, compatibility_info);
offset = dissect_codec_mode(bat_ase_element_tree, parameter_tvb, offset+1,length_indicator-1);
return offset;
@@ -3339,21 +3698,21 @@ dissect_bat_ase_Encapsulated_Application_Information(tvbuff_t *parameter_tvb, pa
proto_tree_add_text(bat_ase_tree, parameter_tvb, offset, -1,
"BAT ASE Encapsulated Application Information, (%u byte%s length)", length, plurality(length, "", "s"));
- while(tvb_reported_length_remaining(parameter_tvb, offset) > 0){
+ while(tvb_reported_length_remaining(parameter_tvb, offset) > 0) {
element_no = element_no + 1;
identifier = tvb_get_guint8(parameter_tvb, offset);
/* length indicator may be 11 bits long */
offset = offset + 1;
- proto_tree_add_item( bat_ase_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, ENC_BIG_ENDIAN );
+ proto_tree_add_item(bat_ase_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, ENC_BIG_ENDIAN);
tempdata = tvb_get_guint8(parameter_tvb, offset);
- if ( tempdata & 0x80 ) {
+ if (tempdata & 0x80) {
length_indicator = tempdata & 0x7f;
length_ind_len = 1;
}
else {
offset = offset + 1;
- tempdata16 = ( tempdata & 0x7f );
+ tempdata16 = (tempdata & 0x7f);
length_indicator = tvb_get_guint8(parameter_tvb, offset)& 0x0f;
length_indicator = length_indicator << 7;
length_indicator = length_indicator + tempdata16;
@@ -3361,35 +3720,35 @@ dissect_bat_ase_Encapsulated_Application_Information(tvbuff_t *parameter_tvb, pa
}
bat_ase_element_item = proto_tree_add_text(bat_ase_tree,parameter_tvb,
- ( offset - length_ind_len),(length_indicator + 2),"BAT ASE Element %u, Identifier: %s",element_no,
+ (offset - length_ind_len),(length_indicator + 2),"BAT ASE Element %u, Identifier: %s",element_no,
val_to_str_ext(identifier,&bat_ase_list_of_Identifiers_vals_ext,"unknown (%u)"));
bat_ase_element_tree = proto_item_add_subtree(bat_ase_element_item ,
ett_bat_ase_element);
- if ( identifier != CODEC ) {
+ if (identifier != CODEC) {
/* identifier, length indicator and compabillity info must be printed inside CODEC */
/* dissection in order to use dissect_codec routine for codec list */
proto_tree_add_uint(bat_ase_element_tree , hf_bat_ase_identifier , parameter_tvb,
- offset - length_ind_len, 1, identifier );
+ offset - length_ind_len, 1, identifier);
proto_tree_add_uint(bat_ase_element_tree , hf_length_indicator , parameter_tvb,
- offset - length_ind_len + 1, length_ind_len, length_indicator );
+ offset - length_ind_len + 1, length_ind_len, length_indicator);
offset = offset + 1;
- proto_tree_add_item( bat_ase_element_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, ENC_BIG_ENDIAN );
- proto_tree_add_item( bat_ase_element_tree, hf_Send_notification_ind_for_pass_on_not_possible, parameter_tvb, offset, 1, ENC_BIG_ENDIAN );
- proto_tree_add_item( bat_ase_element_tree, hf_Instruction_ind_for_pass_on_not_possible, parameter_tvb, offset, 1, ENC_BIG_ENDIAN );
- proto_tree_add_item( bat_ase_element_tree, hf_Send_notification_ind_for_general_action, parameter_tvb, offset, 1, ENC_BIG_ENDIAN );
- proto_tree_add_item( bat_ase_element_tree, hf_Instruction_ind_for_general_action, parameter_tvb, offset, 1, ENC_BIG_ENDIAN );
+ proto_tree_add_item(bat_ase_element_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(bat_ase_element_tree, hf_Send_notification_ind_for_pass_on_not_possible, parameter_tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(bat_ase_element_tree, hf_Instruction_ind_for_pass_on_not_possible, parameter_tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(bat_ase_element_tree, hf_Send_notification_ind_for_general_action, parameter_tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(bat_ase_element_tree, hf_Instruction_ind_for_general_action, parameter_tvb, offset, 1, ENC_BIG_ENDIAN);
offset = offset + 1;
}
content_len = length_indicator - 1 ; /* exclude the treated Compatibility information */
/* content will be different depending on identifier */
- switch ( identifier ){
+ switch (identifier) {
case ACTION_INDICATOR :
content = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_uint(bat_ase_element_tree, hf_Action_Indicator , parameter_tvb, offset, 1, content );
+ proto_tree_add_uint(bat_ase_element_tree, hf_Action_Indicator , parameter_tvb, offset, 1, content);
proto_item_append_text(bat_ase_element_item, " - %s",
val_to_str_ext(content,&bat_ase_action_indicator_field_vals_ext, "unknown (%u)"));
offset = offset + 1;
@@ -3397,7 +3756,7 @@ dissect_bat_ase_Encapsulated_Application_Information(tvbuff_t *parameter_tvb, pa
case BACKBONE_NETWORK_CONNECTION_IDENTIFIER :
bncid = tvb_get_ntohl(parameter_tvb, offset);
- switch ( content_len ){
+ switch (content_len) {
case 1:
bncid = bncid & 0x000000ff;
break;
@@ -3425,18 +3784,18 @@ dissect_bat_ase_Encapsulated_Application_Information(tvbuff_t *parameter_tvb, pa
break;
case CODEC_LIST :
list_end = offset + content_len;
- while ( offset < ( list_end - 1 )) {
+ while (offset < (list_end - 1)) {
identifier = tvb_get_guint8(parameter_tvb, offset);
offset = offset + 1;
tempdata = tvb_get_guint8(parameter_tvb, offset);
- if ( tempdata & 0x80 ) {
+ if (tempdata & 0x80) {
length_indicator = tempdata & 0x7f;
}
else {
offset = offset +1;
length_indicator = tvb_get_guint8(parameter_tvb, offset);
length_indicator = length_indicator << 7;
- length_indicator = length_indicator & ( tempdata & 0x7f );
+ length_indicator = length_indicator & (tempdata & 0x7f);
}
offset = dissect_codec(parameter_tvb, bat_ase_element_tree, length_indicator , offset, identifier);
}
@@ -3447,13 +3806,13 @@ dissect_bat_ase_Encapsulated_Application_Information(tvbuff_t *parameter_tvb, pa
break;/* case codec */
case BAT_COMPATIBILITY_REPORT :
tempdata = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_uint(bat_ase_element_tree, hf_BAT_ASE_Comp_Report_Reason, parameter_tvb, offset, 1, tempdata );
+ proto_tree_add_uint(bat_ase_element_tree, hf_BAT_ASE_Comp_Report_Reason, parameter_tvb, offset, 1, tempdata);
offset = offset + 1;
diagnostic_len = content_len - 1;
- while ( diagnostic_len > 0 ) {
+ while (diagnostic_len > 0) {
tempdata = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_uint(bat_ase_element_tree, hf_BAT_ASE_Comp_Report_ident, parameter_tvb, offset, 1, tempdata );
+ proto_tree_add_uint(bat_ase_element_tree, hf_BAT_ASE_Comp_Report_ident, parameter_tvb, offset, 1, tempdata);
offset = offset + 1;
diagnostic = tvb_get_letohs(parameter_tvb, offset);
proto_tree_add_uint(bat_ase_element_tree, hf_BAT_ASE_Comp_Report_diagnostic, parameter_tvb, offset, 2, diagnostic);
@@ -3464,7 +3823,7 @@ dissect_bat_ase_Encapsulated_Application_Information(tvbuff_t *parameter_tvb, pa
case BEARER_NETWORK_CONNECTION_CHARACTERISTICS :
tempdata = tvb_get_guint8(parameter_tvb, offset);
proto_tree_add_uint(bat_ase_element_tree, hf_characteristics , parameter_tvb,
- offset, 1, tempdata );
+ offset, 1, tempdata);
proto_item_append_text(bat_ase_element_item, " - %s",
val_to_str_ext(tempdata,&bearer_network_connection_characteristics_vals_ext, "unknown (%u)"));
@@ -3476,39 +3835,42 @@ dissect_bat_ase_Encapsulated_Application_Information(tvbuff_t *parameter_tvb, pa
case BEARER_CONTROL_INFORMATION :
BCTP_Indicator_field_1 = tvb_get_guint8(parameter_tvb, offset);
proto_tree_add_uint(bat_ase_element_tree, hf_BCTP_Version_Indicator,
- parameter_tvb, offset, 1, BCTP_Indicator_field_1 );
+ parameter_tvb, offset, 1, BCTP_Indicator_field_1);
proto_tree_add_boolean(bat_ase_element_tree, hf_BVEI,
- parameter_tvb, offset, 1, BCTP_Indicator_field_1 );
+ parameter_tvb, offset, 1, BCTP_Indicator_field_1);
offset = offset + 1;
BCTP_Indicator_field_2 = tvb_get_guint8(parameter_tvb, offset);
proto_tree_add_uint(bat_ase_element_tree, hf_Tunnelled_Protocol_Indicator ,
- parameter_tvb, offset, 1, BCTP_Indicator_field_2 );
+ parameter_tvb, offset, 1, BCTP_Indicator_field_2);
proto_tree_add_boolean(bat_ase_element_tree, hf_TPEI,
- parameter_tvb, offset, 1, BCTP_Indicator_field_2 );
+ parameter_tvb, offset, 1, BCTP_Indicator_field_2);
offset = offset + 1;
- sdp_length = ( length_indicator ) - 3;
+ sdp_length = (length_indicator) - 3;
- if(sdp_length > tvb_length_remaining(parameter_tvb,offset)){
+ if(sdp_length > tvb_length_remaining(parameter_tvb,offset)) {
/* If this is a segmented message we may not have all the data */
next_tvb = tvb_new_subset_remaining(parameter_tvb, offset);
- }else{
+ } else {
next_tvb = tvb_new_subset(parameter_tvb, offset, sdp_length, sdp_length);
}
- call_dissector(sdp_handle, next_tvb, pinfo, bat_ase_element_tree);
- offset = offset + sdp_length;
-
-
+ if(BCTP_Indicator_field_2==0x20){
+ /* IPBCP (text encoded) */
+ call_dissector(sdp_handle, next_tvb, pinfo, bat_ase_element_tree);
+ }else{
+ proto_tree_add_text(bat_ase_element_tree, next_tvb, 0, -1, "Tunnelled Protocol Data");
+ }
+ offset = offset + sdp_length;
break;
case BEARER_CONTROL_TUNNELLING :
tempdata = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_boolean(bat_ase_element_tree, hf_bearer_control_tunneling , parameter_tvb, offset, 1, ( tempdata & 0x01 ) );
- if ( tempdata & 0x01 )
+ proto_tree_add_boolean(bat_ase_element_tree, hf_bearer_control_tunneling , parameter_tvb, offset, 1, (tempdata & 0x01));
+ if (tempdata & 0x01)
proto_item_append_text(bat_ase_element_item, " - Tunnelling to be used ");
offset = offset + content_len;
@@ -3517,7 +3879,7 @@ dissect_bat_ase_Encapsulated_Application_Information(tvbuff_t *parameter_tvb, pa
tempdata = tvb_get_guint8(parameter_tvb, offset);
proto_tree_add_text(bat_ase_element_tree, parameter_tvb, offset, 1, "Network ID Length indicator = %u",tempdata);
offset = offset + 1;
- if ( tempdata > 0 ) {
+ if (tempdata > 0) {
/* Q.765.5 amd 1
Network ID
@@ -3550,7 +3912,7 @@ dissect_bat_ase_Encapsulated_Application_Information(tvbuff_t *parameter_tvb, pa
} /* end if */
Local_BCU_ID = tvb_get_letohl(parameter_tvb, offset);
- proto_tree_add_uint_format(bat_ase_element_tree, hf_Local_BCU_ID , parameter_tvb, offset, 4, Local_BCU_ID , "Local BCU ID : 0x%08x", Local_BCU_ID );
+ proto_tree_add_uint_format(bat_ase_element_tree, hf_Local_BCU_ID , parameter_tvb, offset, 4, Local_BCU_ID , "Local BCU ID : 0x%08x", Local_BCU_ID);
offset = offset + 4;
break;
case SIGNAL :
@@ -3558,26 +3920,26 @@ dissect_bat_ase_Encapsulated_Application_Information(tvbuff_t *parameter_tvb, pa
break;
case BEARER_REDIRECTION_CAPABILITY :
tempdata = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_boolean(bat_ase_element_tree, hf_late_cut_trough_cap_ind , parameter_tvb, offset, 1, tempdata );
+ proto_tree_add_boolean(bat_ase_element_tree, hf_late_cut_trough_cap_ind , parameter_tvb, offset, 1, tempdata);
offset = offset + content_len;
break;
case BEARER_REDIRECTION_INDICATORS :
number_of_indicators = 0;
- while ( number_of_indicators < content_len ) {
+ while (number_of_indicators < content_len) {
tempdata = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_uint(bat_ase_element_tree, hf_bat_ase_bearer_redir_ind , parameter_tvb, offset, 1, tempdata );
+ proto_tree_add_uint(bat_ase_element_tree, hf_bat_ase_bearer_redir_ind , parameter_tvb, offset, 1, tempdata);
offset = offset + 1;
number_of_indicators = number_of_indicators + 1;
}
break;
case SIGNAL_TYPE :
tempdata = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_uint(bat_ase_element_tree, hf_bat_ase_signal , parameter_tvb, offset, 1, tempdata );
+ proto_tree_add_uint(bat_ase_element_tree, hf_bat_ase_signal , parameter_tvb, offset, 1, tempdata);
offset = offset + content_len;
break;
case DURATION :
duration = tvb_get_letohs(parameter_tvb, offset);
- proto_tree_add_uint(bat_ase_element_tree, hf_bat_ase_duration , parameter_tvb, offset, 2, duration );
+ proto_tree_add_uint(bat_ase_element_tree, hf_bat_ase_duration , parameter_tvb, offset, 2, duration);
offset = offset + content_len;
break;
default :
@@ -3631,10 +3993,10 @@ dissect_isup_application_transport_parameter(tvbuff_t *parameter_tvb, packet_inf
proto_item_set_text(parameter_item, "Application transport, (%u byte%s length)", length , plurality(length, "", "s"));
aci16 = tvb_get_guint8(parameter_tvb, offset);
- if ( (aci16 & H_8BIT_MASK) == 0x80) {
+ if ((aci16 & H_8BIT_MASK) == 0x80) {
/* Octet 1 */
aci16 = aci16 & 0x7f;
- proto_tree_add_item( parameter_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, ENC_BIG_ENDIAN );
+ proto_tree_add_item(parameter_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_uint(parameter_tree, hf_isup_app_cont_ident , parameter_tvb, offset, 1, aci16);
offset = offset + 1;
}
@@ -3647,39 +4009,39 @@ dissect_isup_application_transport_parameter(tvbuff_t *parameter_tvb, packet_inf
/* Octet 2 */
proto_tree_add_text(parameter_tree, parameter_tvb, offset, -1, "Application transport instruction indicators: ");
- proto_tree_add_item( parameter_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, ENC_BIG_ENDIAN );
- proto_tree_add_item( parameter_tree, hf_isup_app_Send_notification_ind, parameter_tvb, offset, 1, ENC_BIG_ENDIAN );
- proto_tree_add_item( parameter_tree, hf_isup_app_Release_call_ind, parameter_tvb, offset, 1, ENC_BIG_ENDIAN );
+ proto_tree_add_item(parameter_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_isup_app_Send_notification_ind, parameter_tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_isup_app_Release_call_ind, parameter_tvb, offset, 1, ENC_BIG_ENDIAN);
offset = offset + 1;
/* Octet 3*/
proto_tree_add_text(parameter_tree, parameter_tvb, offset, 1, "APM segmentation indicator:");
si_and_apm_seg_ind = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_item( parameter_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, ENC_BIG_ENDIAN );
- proto_tree_add_item( parameter_tree, hf_isup_apm_si_ind, parameter_tvb, offset, 1, ENC_BIG_ENDIAN );
- proto_tree_add_item( parameter_tree, hf_isup_apm_segmentation_ind, parameter_tvb, offset, 1, ENC_BIG_ENDIAN );
+ proto_tree_add_item(parameter_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_isup_apm_si_ind, parameter_tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_isup_apm_segmentation_ind, parameter_tvb, offset, 1, ENC_BIG_ENDIAN);
offset = offset + 1;
/* Octet 3a */
- if ( (si_and_apm_seg_ind & H_8BIT_MASK) == 0x00) {
+ if ((si_and_apm_seg_ind & H_8BIT_MASK) == 0x00) {
apm_Segmentation_local_ref = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_item( parameter_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, ENC_BIG_ENDIAN );
- proto_tree_add_item( parameter_tree, hf_isup_apm_slr, parameter_tvb, offset, 1, ENC_BIG_ENDIAN );
+ proto_tree_add_item(parameter_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_isup_apm_slr, parameter_tvb, offset, 1, ENC_BIG_ENDIAN);
offset = offset + 1;
}
- /* For APM'98'-user applications. ( aci 0 - 3 ), APM-user information field starts at octet 4 */
+ /* For APM'98'-user applications. (aci 0 - 3), APM-user information field starts at octet 4 */
if (aci16 > 3) {
/* Octet 4 Originating Address length */
octet = tvb_get_guint8(parameter_tvb,offset);
- proto_tree_add_item( parameter_tree, hf_isup_orig_addr_len, parameter_tvb, offset, 1, ENC_BIG_ENDIAN );
+ proto_tree_add_item(parameter_tree, hf_isup_orig_addr_len, parameter_tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
- if ( octet != 0){
+ if (octet != 0) {
/* 4b */
- proto_tree_add_item( parameter_tree, hf_isup_odd_even_indicator, parameter_tvb, offset, 1, ENC_BIG_ENDIAN );
+ proto_tree_add_item(parameter_tree, hf_isup_odd_even_indicator, parameter_tvb, offset, 1, ENC_BIG_ENDIAN);
/* nature of address indicator */
offset++;
- proto_tree_add_item( parameter_tree, hf_isup_inn_indicator, parameter_tvb, offset, 1, ENC_BIG_ENDIAN );
- proto_tree_add_item( parameter_tree, hf_isup_numbering_plan_indicator, parameter_tvb, offset, 1, ENC_BIG_ENDIAN );
+ proto_tree_add_item(parameter_tree, hf_isup_inn_indicator, parameter_tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_isup_numbering_plan_indicator, parameter_tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
/* Address digits */
proto_tree_add_text(parameter_tree, parameter_tvb, offset, octet - 2, "Address digits");
@@ -3687,15 +4049,15 @@ dissect_isup_application_transport_parameter(tvbuff_t *parameter_tvb, packet_inf
}
/* Octet 5 Destination Address length */
octet = tvb_get_guint8(parameter_tvb,offset);
- proto_tree_add_item( parameter_tree, hf_isup_dest_addr_len, parameter_tvb, offset, 1, ENC_BIG_ENDIAN );
+ proto_tree_add_item(parameter_tree, hf_isup_dest_addr_len, parameter_tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
- if ( octet != 0){
+ if (octet != 0) {
/* 4b */
- proto_tree_add_item( parameter_tree, hf_isup_odd_even_indicator, parameter_tvb, offset, 1, ENC_BIG_ENDIAN );
+ proto_tree_add_item(parameter_tree, hf_isup_odd_even_indicator, parameter_tvb, offset, 1, ENC_BIG_ENDIAN);
/* nature of address indicator */
offset++;
- proto_tree_add_item( parameter_tree, hf_isup_inn_indicator, parameter_tvb, offset, 1, ENC_BIG_ENDIAN );
- proto_tree_add_item( parameter_tree, hf_isup_numbering_plan_indicator, parameter_tvb, offset, 1, ENC_BIG_ENDIAN );
+ proto_tree_add_item(parameter_tree, hf_isup_inn_indicator, parameter_tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_isup_numbering_plan_indicator, parameter_tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
/* Address digits */
proto_tree_add_text(parameter_tree, parameter_tvb, offset, octet - 2, "Address digits");
@@ -3706,8 +4068,8 @@ dissect_isup_application_transport_parameter(tvbuff_t *parameter_tvb, packet_inf
* Defragment ?
*
*/
- if (isup_apm_desegment){
- if ((si_and_apm_seg_ind != 0xc0) && ((si_and_apm_seg_ind & H_8BIT_MASK)!=0x80)){
+ if (isup_apm_desegment) {
+ if ((si_and_apm_seg_ind != 0xc0) && ((si_and_apm_seg_ind & H_8BIT_MASK)!=0x80)) {
/* debug g_warning("got here Frame %u",pinfo->fd->num); */
/* Segmented message */
save_fragmented = pinfo->fragmented;
@@ -3723,7 +4085,7 @@ dissect_isup_application_transport_parameter(tvbuff_t *parameter_tvb, packet_inf
tvb_length_remaining(parameter_tvb, offset), /* fragment length - to the end */
more_frag); /* More fragments? */
- if ((si_and_apm_seg_ind & 0x3f) !=0 && (si_and_apm_seg_ind &0x40) !=0){
+ if ((si_and_apm_seg_ind & 0x3f) !=0 && (si_and_apm_seg_ind &0x40) !=0) {
/* First fragment set number of fragments */
fragment_set_tot_len(pinfo, apm_Segmentation_local_ref & 0x7f, isup_apm_msg_fragment_table, (si_and_apm_seg_ind & 0x3f));
}
@@ -3737,16 +4099,16 @@ dissect_isup_application_transport_parameter(tvbuff_t *parameter_tvb, packet_inf
" (Message Reassembled)");
} else { /* Not last packet of reassembled Short Message */
col_append_str(pinfo->cinfo, COL_INFO,
- " (Message fragment )");
+ " (Message fragment)");
}
pinfo->fragmented = save_fragmented;
}
}/*isup_apm_desegment*/
- if ( offset == (gint)length){
+ if (offset == (gint)length) {
/* No data */
- proto_tree_add_text(parameter_tree, parameter_tvb, offset, 0, "Empty APM-user information field" );
+ proto_tree_add_text(parameter_tree, parameter_tvb, offset, 0, "Empty APM-user information field");
return;
}
if (new_tvb) { /* take it all */
@@ -3758,13 +4120,13 @@ dissect_isup_application_transport_parameter(tvbuff_t *parameter_tvb, packet_inf
proto_tree_add_text(parameter_tree, parameter_tvb, offset, -1,
"APM-user information field (%u Bytes)",tvb_length_remaining(parameter_tvb, offset));
- switch(aci16 & 0x7fff){
+ switch(aci16 & 0x7fff) {
case 3:
/* Charging ASE */
dissect_charging_ase_ChargingMessageType_PDU(next_tvb, pinfo, parameter_tree);
break;
case 5:
- /* dissect BAT ASE element, without transparent data ( Q.765.5-200006) */
+ /* dissect BAT ASE element, without transparent data (Q.765.5-200006) */
dissect_bat_ase_Encapsulated_Application_Information(next_tvb, pinfo, parameter_tree, 0);
break;
default:
@@ -3789,7 +4151,7 @@ dissect_isup_optional_forward_call_indicators_parameter(tvbuff_t *parameter_tvb,
proto_tree_add_boolean(parameter_tree, hf_isup_connected_line_identity_request_ind, parameter_tvb, 0, OPTIONAL_FORWARD_CALL_IND_LENGTH, indicators);
- proto_item_set_text(parameter_item,"Optional forward call indicators: %s (%u)", val_to_str(indicators & BA_8BIT_MASK, isup_CUG_call_ind_value, "spare"),indicators );
+ proto_item_set_text(parameter_item,"Optional forward call indicators: %s (%u)", val_to_str(indicators & BA_8BIT_MASK, isup_CUG_call_ind_value, "spare"), indicators);
}
/* ------------------------------------------------------------------
Dissector Parameter calling party number
@@ -3832,13 +4194,13 @@ dissect_isup_calling_party_number_parameter(tvbuff_t *parameter_tvb, proto_tree
"Calling Party Number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
- while(length > 0){
+ while(length > 0) {
address_digit_pair = tvb_get_guint8(parameter_tvb, offset);
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_odd_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char(address_digit_pair & ISUP_ODD_ADDRESS_SIGNAL_DIGIT_MASK);
if (i > MAXDIGITS)
THROW(ReportedBoundsError);
- if ((length - 1) > 0 ){
+ if ((length - 1) > 0) {
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
@@ -3848,7 +4210,7 @@ dissect_isup_calling_party_number_parameter(tvbuff_t *parameter_tvb, proto_tree
length = tvb_length_remaining(parameter_tvb, offset);
}
- if (((indicators1 & 0x80) == 0) && (tvb_length(parameter_tvb) > 0)){ /* Even Indicator set -> last even digit is valid & has be displayed */
+ if (((indicators1 & 0x80) == 0) && (tvb_length(parameter_tvb) > 0)) { /* Even Indicator set -> last even digit is valid & has be displayed */
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
@@ -3856,7 +4218,7 @@ dissect_isup_calling_party_number_parameter(tvbuff_t *parameter_tvb, proto_tree
}
proto_item_set_text(address_digits_item, "Calling Party Number: %s", calling_number);
calling_number[i++] = '\0';
- if ( number_plan == 1 ) {
+ if (number_plan == 1) {
e164_info.e164_number_type = CALLING_PARTY_NUMBER;
e164_info.nature_of_address = indicators1 & 0x7f;
e164_info.E164_number_str = calling_number;
@@ -3910,13 +4272,13 @@ dissect_isup_original_called_number_parameter(tvbuff_t *parameter_tvb, proto_tre
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
- while(length > 0){
+ while(length > 0) {
address_digit_pair = tvb_get_guint8(parameter_tvb, offset);
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_odd_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char(address_digit_pair & ISUP_ODD_ADDRESS_SIGNAL_DIGIT_MASK);
if (i > MAXDIGITS)
THROW(ReportedBoundsError);
- if ((length - 1) > 0 ){
+ if ((length - 1) > 0) {
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
@@ -3926,13 +4288,13 @@ dissect_isup_original_called_number_parameter(tvbuff_t *parameter_tvb, proto_tre
length = tvb_length_remaining(parameter_tvb, offset);
}
- if (((indicators1 & 0x80) == 0) && (tvb_length(parameter_tvb) > 0)){ /* Even Indicator set -> last even digit is valid & has be displayed */
+ if (((indicators1 & 0x80) == 0) && (tvb_length(parameter_tvb) > 0)) { /* Even Indicator set -> last even digit is valid & has be displayed */
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
THROW(ReportedBoundsError);
}
- calling_number[i++] = '\0';
+ calling_number[i] = '\0';
proto_item_set_text(address_digits_item, "Original Called Number: %s", calling_number);
proto_item_set_text(parameter_item, "Original Called Number: %s", calling_number);
@@ -3975,13 +4337,13 @@ dissect_isup_redirecting_number_parameter(tvbuff_t *parameter_tvb, proto_tree *p
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
- while(length > 0){
+ while(length > 0) {
address_digit_pair = tvb_get_guint8(parameter_tvb, offset);
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_odd_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char(address_digit_pair & ISUP_ODD_ADDRESS_SIGNAL_DIGIT_MASK);
if (i > MAXDIGITS)
THROW(ReportedBoundsError);
- if ((length - 1) > 0 ){
+ if ((length - 1) > 0) {
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
@@ -3991,13 +4353,13 @@ dissect_isup_redirecting_number_parameter(tvbuff_t *parameter_tvb, proto_tree *p
length = tvb_length_remaining(parameter_tvb, offset);
}
- if (((indicators1 & 0x80) == 0) && (tvb_length(parameter_tvb) > 0)){ /* Even Indicator set -> last even digit is valid & has be displayed */
+ if (((indicators1 & 0x80) == 0) && (tvb_length(parameter_tvb) > 0)) { /* Even Indicator set -> last even digit is valid & has be displayed */
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
THROW(ReportedBoundsError);
}
- calling_number[i++] = '\0';
+ calling_number[i] = '\0';
proto_item_set_text(address_digits_item, "Redirecting Number: %s", calling_number);
proto_tree_add_string(address_digits_tree, hf_isup_redirecting, parameter_tvb, offset - length, length, calling_number);
@@ -4032,13 +4394,13 @@ dissect_isup_redirection_number_parameter(tvbuff_t *parameter_tvb, proto_tree *p
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
- while(length > 0){
+ while(length > 0) {
address_digit_pair = tvb_get_guint8(parameter_tvb, offset);
proto_tree_add_uint(address_digits_tree, hf_isup_called_party_odd_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
called_number[i++] = number_to_char(address_digit_pair & ISUP_ODD_ADDRESS_SIGNAL_DIGIT_MASK);
if (i > MAXDIGITS)
THROW(ReportedBoundsError);
- if ((length - 1) > 0 ){
+ if ((length - 1) > 0) {
proto_tree_add_uint(address_digits_tree, hf_isup_called_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
called_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
@@ -4048,13 +4410,13 @@ dissect_isup_redirection_number_parameter(tvbuff_t *parameter_tvb, proto_tree *p
length = tvb_length_remaining(parameter_tvb, offset);
}
- if (((indicators1 & 0x80) == 0) && (tvb_length(parameter_tvb) > 0)){ /* Even Indicator set -> last even digit is valid & has be displayed */
+ if (((indicators1 & 0x80) == 0) && (tvb_length(parameter_tvb) > 0)) { /* Even Indicator set -> last even digit is valid & has be displayed */
proto_tree_add_uint(address_digits_tree, hf_isup_called_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
called_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
THROW(ReportedBoundsError);
}
- called_number[i++] = '\0';
+ called_number[i] = '\0';
proto_item_set_text(address_digits_item, "Redirection Number: %s", called_number);
proto_item_set_text(parameter_item, "Redirection Number: %s", called_number);
@@ -4080,7 +4442,6 @@ dissect_isup_connection_request_parameter(tvbuff_t *parameter_tvb, proto_tree *p
offset += PROTOCOL_CLASS_LENGTH;
credit = tvb_get_guint8(parameter_tvb, offset);
proto_tree_add_text(parameter_tree, parameter_tvb, offset, CREDIT_LENGTH, "Credit: %u", credit);
- offset += CREDIT_LENGTH;
proto_item_set_text(parameter_item, "Connection request: Local Reference = %u, SPC = %u, Protocol Class = %u, Credit = %u", local_ref, spc, protocol_class, credit);
}
@@ -4090,7 +4451,7 @@ dissect_isup_connection_request_parameter(tvbuff_t *parameter_tvb, proto_tree *p
void
dissect_isup_redirection_information_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- if (tvb_length(parameter_tvb) == 2){
+ if (tvb_length(parameter_tvb) == 2) {
guint16 indicators;
indicators = tvb_get_ntohs(parameter_tvb, 0);
proto_tree_add_uint(parameter_tree, hf_isup_redirecting_ind, parameter_tvb,0 , REDIRECTION_INFO_LENGTH, indicators);
@@ -4188,13 +4549,13 @@ dissect_isup_connected_number_parameter(tvbuff_t *parameter_tvb, proto_tree *par
"Connected Number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
- while(length > 0){
+ while(length > 0) {
address_digit_pair = tvb_get_guint8(parameter_tvb, offset);
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_odd_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char(address_digit_pair & ISUP_ODD_ADDRESS_SIGNAL_DIGIT_MASK);
if (i > MAXDIGITS)
THROW(ReportedBoundsError);
- if ((length - 1) > 0 ){
+ if ((length - 1) > 0) {
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
@@ -4204,13 +4565,13 @@ dissect_isup_connected_number_parameter(tvbuff_t *parameter_tvb, proto_tree *par
length = tvb_length_remaining(parameter_tvb, offset);
}
- if (((indicators1 & 0x80) == 0) && (tvb_length(parameter_tvb) > 0)){ /* Even Indicator set -> last even digit is valid & has be displayed */
+ if (((indicators1 & 0x80) == 0) && (tvb_length(parameter_tvb) > 0)) { /* Even Indicator set -> last even digit is valid & has be displayed */
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
THROW(ReportedBoundsError);
}
- calling_number[i++] = '\0';
+ calling_number[i] = '\0';
proto_item_set_text(address_digits_item, "Connected Number: %s", calling_number);
proto_item_set_text(parameter_item, "Connected Number: %s", calling_number);
@@ -4243,13 +4604,13 @@ dissect_isup_transit_network_selection_parameter(tvbuff_t *parameter_tvb, proto_
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
- while(length > 0){
+ while(length > 0) {
address_digit_pair = tvb_get_guint8(parameter_tvb, offset);
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_odd_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
network_id[i++] = number_to_char(address_digit_pair & ISUP_ODD_ADDRESS_SIGNAL_DIGIT_MASK);
if (i > MAXDIGITS)
THROW(ReportedBoundsError);
- if ((length - 1) > 0 ){
+ if ((length - 1) > 0) {
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
network_id[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
@@ -4259,7 +4620,7 @@ dissect_isup_transit_network_selection_parameter(tvbuff_t *parameter_tvb, proto_
length = tvb_length_remaining(parameter_tvb, offset);
}
- if (((indicators & 0x80) == 0) && (tvb_length(parameter_tvb) > 0)){ /* Even Indicator set -> last even digit is valid & has be displayed */
+ if (((indicators & 0x80) == 0) && (tvb_length(parameter_tvb) > 0)) { /* Even Indicator set -> last even digit is valid & has be displayed */
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
network_id[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
@@ -4309,7 +4670,7 @@ dissect_isup_optional_backward_call_indicators_parameter(tvbuff_t *parameter_tvb
proto_tree_add_boolean(parameter_tree, hf_isup_mlpp_user_ind, parameter_tvb, 0, OPTIONAL_BACKWARD_CALL_IND_LENGTH, indicators);
- proto_item_set_text(parameter_item,"Optional backward call indicators: 0x%x", indicators );
+ proto_item_set_text(parameter_item,"Optional backward call indicators: 0x%x", indicators);
}
/* ------------------------------------------------------------------
Dissector Parameter User-to-user indicators
@@ -4347,7 +4708,7 @@ dissect_isup_user_to_user_indicators_parameter(tvbuff_t *parameter_tvb,
indicators = tvb_get_guint8(parameter_tvb, 0);
proto_tree_add_boolean(parameter_tree, hf_isup_UUI_type, parameter_tvb, 0, 1, indicators);
- if ( (indicators & 0x01) == 0 ){
+ if ((indicators & 0x01) == 0) {
/* Request */
proto_tree_add_uint(parameter_tree, hf_isup_UUI_req_service1, parameter_tvb, 0, 1, indicators);
proto_tree_add_uint(parameter_tree, hf_isup_UUI_req_service2, parameter_tvb, 0, 1, indicators);
@@ -4361,7 +4722,7 @@ dissect_isup_user_to_user_indicators_parameter(tvbuff_t *parameter_tvb,
proto_tree_add_boolean(parameter_tree, hf_isup_UUI_network_discard_ind, parameter_tvb, 0, 1, indicators);
}
- proto_item_set_text(parameter_item,"User-to-user indicators: 0x%x", indicators );
+ proto_item_set_text(parameter_item,"User-to-user indicators: 0x%x", indicators);
}
/* ------------------------------------------------------------------
Dissector Parameter Original ISC point code
@@ -4385,8 +4746,8 @@ dissect_isup_generic_notification_indicator_parameter(tvbuff_t *parameter_tvb, p
guint8 indicators;
indicators = tvb_get_guint8(parameter_tvb, 0);
- proto_tree_add_text(parameter_tree, parameter_tvb, 0, GENERIC_NOTIFICATION_IND_LENGTH, "Generic notification indicator: 0x%x (refer to 3.25/Q.763 for detailed decoding)", indicators );
- proto_item_set_text(parameter_item,"Generic notification indicator: 0x%x", indicators );
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, GENERIC_NOTIFICATION_IND_LENGTH, "Generic notification indicator: 0x%x (refer to 3.25/Q.763 for detailed decoding)", indicators);
+ proto_item_set_text(parameter_item,"Generic notification indicator: 0x%x", indicators);
}
/* ------------------------------------------------------------------
Dissector Parameter Call history information
@@ -4465,7 +4826,7 @@ dissect_isup_service_activation_parameter(tvbuff_t *parameter_tvb, proto_tree *p
guint i;
guint8 feature_code;
guint length = tvb_length(parameter_tvb);
- for (i=0; i< length; i++){
+ for (i=0; i< length; i++) {
feature_code = tvb_get_guint8(parameter_tvb, i);
proto_tree_add_text(parameter_tree, parameter_tvb, i, 1, "Feature Code %u: %u", i+1, feature_code);
}
@@ -4553,16 +4914,16 @@ dissect_isup_echo_control_information_parameter(tvbuff_t *parameter_tvb, proto_t
"Echo control information: 0x%x", indicator);
proto_tree_add_uint(parameter_tree, hf_isup_OECD_inf_ind,
- parameter_tvb, offset, 1, indicator );
+ parameter_tvb, offset, 1, indicator);
proto_tree_add_uint(parameter_tree, hf_isup_IECD_inf_ind,
- parameter_tvb, offset, 1, indicator );
+ parameter_tvb, offset, 1, indicator);
proto_tree_add_uint(parameter_tree, hf_isup_OECD_req_ind,
- parameter_tvb, offset, 1, indicator );
+ parameter_tvb, offset, 1, indicator);
proto_tree_add_uint(parameter_tree, hf_isup_IECD_req_ind,
- parameter_tvb, offset, 1, indicator );
+ parameter_tvb, offset, 1, indicator);
proto_item_set_text(parameter_item, "Echo control information: 0x%x", indicator);
}
@@ -4587,16 +4948,16 @@ dissect_isup_message_compatibility_information_parameter(tvbuff_t *parameter_tvb
"Message compatibility information");
proto_tree_add_boolean(parameter_tree, hf_isup_transit_at_intermediate_exchange_ind,
- parameter_tvb, offset, 1, instruction_indicators );
+ parameter_tvb, offset, 1, instruction_indicators);
proto_tree_add_boolean(parameter_tree, hf_isup_Release_call_ind,
- parameter_tvb, offset, 1, instruction_indicators );
+ parameter_tvb, offset, 1, instruction_indicators);
proto_tree_add_boolean(parameter_tree, hf_isup_Send_notification_ind,
- parameter_tvb, offset, 1, instruction_indicators );
+ parameter_tvb, offset, 1, instruction_indicators);
proto_tree_add_boolean(parameter_tree, hf_isup_Discard_message_ind_value,
- parameter_tvb, offset, 1, instruction_indicators );
+ parameter_tvb, offset, 1, instruction_indicators);
proto_tree_add_boolean(parameter_tree, hf_isup_pass_on_not_possible_indicator2,
parameter_tvb, offset, 1,instruction_indicators);
@@ -4605,7 +4966,7 @@ dissect_isup_message_compatibility_information_parameter(tvbuff_t *parameter_tvb
parameter_tvb, offset, 1,instruction_indicators);
proto_tree_add_boolean(parameter_tree, hf_isup_extension_ind ,
- parameter_tvb, offset, 1, instruction_indicators );
+ parameter_tvb, offset, 1, instruction_indicators);
proto_item_set_text(parameter_item, "Message compatibility information (%u byte%s length)",
length , plurality(length, "", "s"));
@@ -4658,7 +5019,7 @@ dissect_isup_parameter_compatibility_information_parameter(tvbuff_t *parameter_t
proto_item_set_text(parameter_item, "Parameter compatibility information (%u byte%s length)", length , plurality(length, "", "s"));
/* etxrab Decoded as per Q.763 section 3.41 */
- while ( len > 0 ) {
+ while (len > 0) {
upgraded_parameter_no = upgraded_parameter_no + 1;
upgraded_parameter = tvb_get_guint8(parameter_tvb, offset);
@@ -4674,19 +5035,19 @@ dissect_isup_parameter_compatibility_information_parameter(tvbuff_t *parameter_t
instruction_indicators);
proto_tree_add_boolean(parameter_tree, hf_isup_transit_at_intermediate_exchange_ind,
- parameter_tvb, offset, 1, instruction_indicators );
+ parameter_tvb, offset, 1, instruction_indicators);
- proto_tree_add_boolean(parameter_tree, hf_isup_Release_call_ind, parameter_tvb, offset, 1, instruction_indicators );
+ proto_tree_add_boolean(parameter_tree, hf_isup_Release_call_ind, parameter_tvb, offset, 1, instruction_indicators);
- proto_tree_add_boolean(parameter_tree, hf_isup_Send_notification_ind, parameter_tvb, offset, 1, instruction_indicators );
+ proto_tree_add_boolean(parameter_tree, hf_isup_Send_notification_ind, parameter_tvb, offset, 1, instruction_indicators);
- proto_tree_add_boolean(parameter_tree, hf_isup_Discard_message_ind_value, parameter_tvb, offset, 1, instruction_indicators );
+ proto_tree_add_boolean(parameter_tree, hf_isup_Discard_message_ind_value, parameter_tvb, offset, 1, instruction_indicators);
- proto_tree_add_boolean(parameter_tree, hf_isup_Discard_parameter_ind, parameter_tvb, offset, 1, instruction_indicators );
+ proto_tree_add_boolean(parameter_tree, hf_isup_Discard_parameter_ind, parameter_tvb, offset, 1, instruction_indicators);
proto_tree_add_uint(parameter_tree, hf_isup_Pass_on_not_possible_indicator, parameter_tvb, offset, 1,instruction_indicators);
- proto_tree_add_boolean(parameter_tree, hf_isup_extension_ind , parameter_tvb, offset, 1, instruction_indicators );
+ proto_tree_add_boolean(parameter_tree, hf_isup_extension_ind , parameter_tvb, offset, 1, instruction_indicators);
offset += 1;
len -= 1;
@@ -4856,7 +5217,7 @@ dissect_isup_location_number_parameter(tvbuff_t *parameter_tvb, proto_tree *para
* (network provided).
* BUG 938 - Just check if there is someting more to dissect.
*/
- if (tvb_length_remaining(parameter_tvb, offset) < 3){
+ if (tvb_length_remaining(parameter_tvb, offset) < 3) {
proto_tree_add_text(parameter_tree, parameter_tvb, 1, -1, "Location number: address not available");
proto_item_set_text(parameter_item, "Location number: address not available");
return;
@@ -4870,13 +5231,13 @@ dissect_isup_location_number_parameter(tvbuff_t *parameter_tvb, proto_tree *para
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
- while(length > 0){
+ while(length > 0) {
address_digit_pair = tvb_get_guint8(parameter_tvb, offset);
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_odd_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char(address_digit_pair & ISUP_ODD_ADDRESS_SIGNAL_DIGIT_MASK);
if (i > MAXDIGITS)
THROW(ReportedBoundsError);
- if ((length - 1) > 0 ){
+ if ((length - 1) > 0) {
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
@@ -4886,13 +5247,13 @@ dissect_isup_location_number_parameter(tvbuff_t *parameter_tvb, proto_tree *para
length = tvb_length_remaining(parameter_tvb, offset);
}
- if (((indicators1 & 0x80) == 0) && (tvb_length(parameter_tvb) > 0)){ /* Even Indicator set -> last even digit is valid & has be displayed */
+ if (((indicators1 & 0x80) == 0) && (tvb_length(parameter_tvb) > 0)) { /* Even Indicator set -> last even digit is valid & has be displayed */
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
THROW(ReportedBoundsError);
}
- calling_number[i++] = '\0';
+ calling_number[i] = '\0';
proto_item_set_text(address_digits_item, "Location number: %s", calling_number);
proto_item_set_text(parameter_item, "Location number: %s", calling_number);
@@ -4982,13 +5343,13 @@ dissect_isup_call_transfer_number_parameter(tvbuff_t *parameter_tvb, proto_tree
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
- while(length > 0){
+ while(length > 0) {
address_digit_pair = tvb_get_guint8(parameter_tvb, offset);
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_odd_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char(address_digit_pair & ISUP_ODD_ADDRESS_SIGNAL_DIGIT_MASK);
if (i > MAXDIGITS)
THROW(ReportedBoundsError);
- if ((length - 1) > 0 ){
+ if ((length - 1) > 0) {
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
@@ -4998,13 +5359,13 @@ dissect_isup_call_transfer_number_parameter(tvbuff_t *parameter_tvb, proto_tree
length = tvb_length_remaining(parameter_tvb, offset);
}
- if (((indicators1 & 0x80) == 0) && (tvb_length(parameter_tvb) > 0)){ /* Even Indicator set -> last even digit is valid & has be displayed */
+ if (((indicators1 & 0x80) == 0) && (tvb_length(parameter_tvb) > 0)) { /* Even Indicator set -> last even digit is valid & has be displayed */
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
THROW(ReportedBoundsError);
}
- calling_number[i++] = '\0';
+ calling_number[i] = '\0';
proto_item_set_text(address_digits_item, "Call transfer number: %s", calling_number);
proto_item_set_text(parameter_item, "Call transfer number: %s", calling_number);
@@ -5128,13 +5489,13 @@ dissect_isup_called_in_number_parameter(tvbuff_t *parameter_tvb, proto_tree *par
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
- while(length > 0){
+ while(length > 0) {
address_digit_pair = tvb_get_guint8(parameter_tvb, offset);
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_odd_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char(address_digit_pair & ISUP_ODD_ADDRESS_SIGNAL_DIGIT_MASK);
if (i > MAXDIGITS)
THROW(ReportedBoundsError);
- if ((length - 1) > 0 ){
+ if ((length - 1) > 0) {
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
@@ -5144,13 +5505,13 @@ dissect_isup_called_in_number_parameter(tvbuff_t *parameter_tvb, proto_tree *par
length = tvb_length_remaining(parameter_tvb, offset);
}
- if (((indicators1 & 0x80) == 0) && (tvb_length(parameter_tvb) > 0)){ /* Even Indicator set -> last even digit is valid & has be displayed */
+ if (((indicators1 & 0x80) == 0) && (tvb_length(parameter_tvb) > 0)) { /* Even Indicator set -> last even digit is valid & has be displayed */
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
THROW(ReportedBoundsError);
}
- calling_number[i++] = '\0';
+ calling_number[i] = '\0';
proto_item_set_text(address_digits_item, "Called IN Number: %s", calling_number);
proto_item_set_text(parameter_item, "Called IN Number: %s", calling_number);
@@ -5336,13 +5697,13 @@ dissect_isup_generic_number_parameter(tvbuff_t *parameter_tvb, proto_tree *param
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
- while(length > 0){
+ while(length > 0) {
address_digit_pair = tvb_get_guint8(parameter_tvb, offset);
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_odd_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char(address_digit_pair & ISUP_ODD_ADDRESS_SIGNAL_DIGIT_MASK);
if (i > MAXDIGITS)
THROW(ReportedBoundsError);
- if ((length - 1) > 0 ){
+ if ((length - 1) > 0) {
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
@@ -5352,13 +5713,13 @@ dissect_isup_generic_number_parameter(tvbuff_t *parameter_tvb, proto_tree *param
length = tvb_length_remaining(parameter_tvb, offset);
}
- if (((indicators1 & 0x80) == 0) && (tvb_length(parameter_tvb) > 0)){ /* Even Indicator set -> last even digit is valid & has be displayed */
+ if (((indicators1 & 0x80) == 0) && (tvb_length(parameter_tvb) > 0)) { /* Even Indicator set -> last even digit is valid & has be displayed */
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
THROW(ReportedBoundsError);
}
- calling_number[i++] = '\0';
+ calling_number[i] = '\0';
/*
* Indicators1 = Nature of address
@@ -5394,13 +5755,13 @@ dissect_isup_jurisdiction_parameter(tvbuff_t *parameter_tvb, proto_tree *paramet
"Jurisdiction");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
- while((length = tvb_reported_length_remaining(parameter_tvb, offset)) > 0){
+ while((length = tvb_reported_length_remaining(parameter_tvb, offset)) > 0) {
address_digit_pair = tvb_get_guint8(parameter_tvb, offset);
proto_tree_add_uint(address_digits_tree, hf_isup_called_party_odd_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
called_number[i++] = number_to_char(address_digit_pair & ISUP_ODD_ADDRESS_SIGNAL_DIGIT_MASK);
if (i > MAXDIGITS)
THROW(ReportedBoundsError);
- if ((length - 1) > 0 ){
+ if ((length - 1) > 0) {
proto_tree_add_uint(address_digits_tree, hf_isup_called_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
called_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
@@ -5409,13 +5770,13 @@ dissect_isup_jurisdiction_parameter(tvbuff_t *parameter_tvb, proto_tree *paramet
offset++;
}
- if (tvb_length(parameter_tvb) > 0){
+ if (tvb_length(parameter_tvb) > 0) {
proto_tree_add_uint(address_digits_tree, hf_isup_called_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
called_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
THROW(ReportedBoundsError);
}
- called_number[i++] = '\0';
+ called_number[i] = '\0';
proto_item_set_text(address_digits_item, "Jurisdiction: %s", called_number);
proto_item_set_text(parameter_item, "Jurisdiction: %s", called_number);
@@ -5482,13 +5843,13 @@ dissect_isup_charge_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parame
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
- while(length > 0){
+ while(length > 0) {
address_digit_pair = tvb_get_guint8(parameter_tvb, offset);
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_odd_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char(address_digit_pair & ISUP_ODD_ADDRESS_SIGNAL_DIGIT_MASK);
if (i > MAXDIGITS)
THROW(ReportedBoundsError);
- if ((length - 1) > 0 ){
+ if ((length - 1) > 0) {
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
@@ -5498,13 +5859,13 @@ dissect_isup_charge_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parame
length = tvb_length_remaining(parameter_tvb, offset);
}
- if (((indicators1 & 0x80) == 0) && (tvb_length(parameter_tvb) > 0)){ /* Even Indicator set -> last even digit is valid & has be displayed */
+ if (((indicators1 & 0x80) == 0) && (tvb_length(parameter_tvb) > 0)) { /* Even Indicator set -> last even digit is valid & has be displayed */
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
THROW(ReportedBoundsError);
}
- calling_number[i++] = '\0';
+ calling_number[i] = '\0';
proto_item_set_text(address_digits_item, "Charge Number: %s", calling_number);
proto_item_set_text(parameter_item, "Charge Number: %s", calling_number);
@@ -5533,10 +5894,10 @@ dissect_isup_optional_parameter(tvbuff_t *optional_parameters_tvb,packet_info *p
/* Dissect all optional parameters while end of message isn't reached */
parameter_type = 0xFF; /* Start-initializiation since parameter_type is used for while-condition */
- while ((tvb_length_remaining(optional_parameters_tvb, offset) >= 1) && (parameter_type != PARAM_TYPE_END_OF_OPT_PARAMS)){
+ while ((tvb_length_remaining(optional_parameters_tvb, offset) >= 1) && (parameter_type != PARAM_TYPE_END_OF_OPT_PARAMS)) {
parameter_type = tvb_get_guint8(optional_parameters_tvb, offset);
- if (parameter_type != PARAM_TYPE_END_OF_OPT_PARAMS){
+ if (parameter_type != PARAM_TYPE_END_OF_OPT_PARAMS) {
parameter_length = tvb_get_guint8(optional_parameters_tvb, offset + PARAMETER_TYPE_LENGTH);
parameter_item = proto_tree_add_text(isup_tree, optional_parameters_tvb,
@@ -5556,11 +5917,11 @@ dissect_isup_optional_parameter(tvbuff_t *optional_parameters_tvb,packet_info *p
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, optional_parameters_tvb, offset, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
offset += PARAMETER_LENGTH_IND_LENGTH;
- if ( octet == 0 )
+ if (octet == 0)
continue;
actual_length = tvb_length_remaining(optional_parameters_tvb, offset);
- if (actual_length > 0){
+ if (actual_length > 0) {
parameter_tvb = tvb_new_subset(optional_parameters_tvb, offset, MIN(parameter_length, actual_length), parameter_length);
switch (parameter_type) {
case PARAM_TYPE_CALL_REF:
@@ -5841,10 +6202,10 @@ dissect_ansi_isup_optional_parameter(tvbuff_t *optional_parameters_tvb,packet_in
/* Dissect all optional parameters while end of message isn't reached */
parameter_type = 0xFF; /* Start-initializiation since parameter_type is used for while-condition */
- while ((tvb_length_remaining(optional_parameters_tvb, offset) >= 1) && (parameter_type != PARAM_TYPE_END_OF_OPT_PARAMS)){
+ while ((tvb_length_remaining(optional_parameters_tvb, offset) >= 1) && (parameter_type != PARAM_TYPE_END_OF_OPT_PARAMS)) {
parameter_type = tvb_get_guint8(optional_parameters_tvb, offset);
- if (parameter_type != PARAM_TYPE_END_OF_OPT_PARAMS){
+ if (parameter_type != PARAM_TYPE_END_OF_OPT_PARAMS) {
parameter_length = tvb_get_guint8(optional_parameters_tvb, offset + PARAMETER_TYPE_LENGTH);
parameter_item = proto_tree_add_text(isup_tree, optional_parameters_tvb,
@@ -5863,11 +6224,11 @@ dissect_ansi_isup_optional_parameter(tvbuff_t *optional_parameters_tvb,packet_in
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, optional_parameters_tvb, offset, PARAMETER_LENGTH_IND_LENGTH, parameter_length,
"Parameter length: %u", parameter_length);
offset += PARAMETER_LENGTH_IND_LENGTH;
- if ( octet == 0 )
+ if (octet == 0)
continue;
actual_length = tvb_length_remaining(optional_parameters_tvb, offset);
- if (actual_length > 0){
+ if (actual_length > 0) {
parameter_tvb = tvb_new_subset(optional_parameters_tvb, offset, MIN(parameter_length, actual_length), parameter_length);
switch (parameter_type) {
case PARAM_TYPE_CALL_REF:
@@ -6260,7 +6621,7 @@ dissect_isup_initial_address_message(tvbuff_t *message_tvb, proto_tree *isup_tre
parameter_type,
val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
- parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(FORWARD_CALL_IND_LENGTH, actual_length), FORWARD_CALL_IND_LENGTH );
+ parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(FORWARD_CALL_IND_LENGTH, actual_length), FORWARD_CALL_IND_LENGTH);
dissect_isup_forward_call_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += FORWARD_CALL_IND_LENGTH;
@@ -6275,11 +6636,11 @@ dissect_isup_initial_address_message(tvbuff_t *message_tvb, proto_tree *isup_tre
parameter_type,
val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
- parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(CALLING_PRTYS_CATEGORY_LENGTH, actual_length),CALLING_PRTYS_CATEGORY_LENGTH );
+ parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(CALLING_PRTYS_CATEGORY_LENGTH, actual_length),CALLING_PRTYS_CATEGORY_LENGTH);
dissect_isup_calling_partys_category_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += CALLING_PRTYS_CATEGORY_LENGTH;
- switch (isup_standard){
+ switch (isup_standard) {
case ITU_STANDARD:
/* If ITU, do stuff for 4th mandatory fixed parameter: Transmission medium requirement */
parameter_type = PARAM_TYPE_TRANSM_MEDIUM_REQU;
@@ -6313,7 +6674,7 @@ dissect_isup_initial_address_message(tvbuff_t *message_tvb, proto_tree *isup_tre
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
- parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
+ parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length);
dissect_isup_user_service_information_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += PARAMETER_POINTER_LENGTH;
break;
@@ -6336,7 +6697,7 @@ dissect_isup_initial_address_message(tvbuff_t *message_tvb, proto_tree *isup_tre
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
- parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
+ parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length);
dissect_isup_called_party_number_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += PARAMETER_POINTER_LENGTH;
@@ -6370,7 +6731,7 @@ static gint dissect_isup_subsequent_address_message(tvbuff_t *message_tvb, proto
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
- parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
+ parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length);
dissect_isup_subsequent_number_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += PARAMETER_POINTER_LENGTH;
@@ -6541,8 +6902,8 @@ dissect_isup_release_message(tvbuff_t *message_tvb, proto_tree *isup_tree)
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
- parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
- switch (isup_standard){
+ parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length);
+ switch (isup_standard) {
case ITU_STANDARD:
dissect_isup_cause_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
break;
@@ -6610,7 +6971,7 @@ dissect_isup_circuit_group_reset_query_message(tvbuff_t *message_tvb, proto_tree
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
- parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
+ parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length);
dissect_isup_range_and_status_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += PARAMETER_POINTER_LENGTH;
@@ -6660,7 +7021,7 @@ dissect_isup_circuit_group_blocking_messages(tvbuff_t *message_tvb, proto_tree *
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
- parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
+ parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length);
dissect_isup_range_and_status_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += PARAMETER_POINTER_LENGTH;
@@ -6738,8 +7099,8 @@ dissect_isup_facility_reject_message(tvbuff_t *message_tvb, proto_tree *isup_tre
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
- parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
- switch (isup_standard){
+ parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length);
+ switch (isup_standard) {
case ITU_STANDARD:
dissect_isup_cause_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
break;
@@ -6780,7 +7141,7 @@ dissect_isup_circuit_group_reset_acknowledgement_message(tvbuff_t *message_tvb,
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
- parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
+ parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length);
dissect_isup_range_and_status_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += PARAMETER_POINTER_LENGTH;
@@ -6815,7 +7176,7 @@ dissect_isup_circuit_group_query_response_message(tvbuff_t *message_tvb, proto_t
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
- parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
+ parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length);
dissect_isup_range_and_status_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += PARAMETER_POINTER_LENGTH;
@@ -6837,7 +7198,7 @@ dissect_isup_circuit_group_query_response_message(tvbuff_t *message_tvb, proto_t
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
- parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
+ parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length);
dissect_isup_circuit_state_ind_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += PARAMETER_POINTER_LENGTH;
@@ -6899,7 +7260,7 @@ dissect_isup_user_to_user_information_message(tvbuff_t *message_tvb, packet_info
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
- parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
+ parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length);
dissect_isup_user_to_user_information_parameter(parameter_tvb, pinfo, parameter_tree, parameter_item);
offset += PARAMETER_POINTER_LENGTH;
@@ -6934,9 +7295,9 @@ dissect_isup_confusion_message(tvbuff_t *message_tvb, proto_tree *isup_tree)
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
- parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
+ parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length);
- switch (isup_standard){
+ switch (isup_standard) {
case ITU_STANDARD:
dissect_isup_cause_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
break;
@@ -6948,9 +7309,125 @@ dissect_isup_confusion_message(tvbuff_t *message_tvb, proto_tree *isup_tree)
return offset;
}
+
+/* Dissect national messages */
+static int
+dissect_french_isup_charging_pulse_message(tvbuff_t *message_tvb, proto_tree *isup_tree)
+{
+ gint offset = 0;
+
+ proto_tree_add_item(isup_tree, hf_isup_french_coll_field, message_tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(isup_tree, hf_isup_french_msg_num, message_tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ return offset;
+}
+
+static const value_string israeli_cmi_current_rate[] = {
+ { 0, "Current rate not present" },
+ { 1, "Rate expressed in deciseconds" },
+ { 2, "Rate expressed in centiseconds" },
+ { 3, "Rate expressed in milliseconds" },
+ { 0, NULL}
+};
+static const value_string israeli_cmi_next_rate[] = {
+ { 0, "Time indicator and next rate not present" },
+ { 1, "Rate expressed in deciseconds" },
+ { 2, "Rate expressed in centiseconds" },
+ { 3, "Rate expressed in milliseconds" },
+ { 0, NULL}
+};
+static const value_string israeli_time_indicators[] = {
+ { 0, "spare" },
+ { 1, "00.30 H" },
+ { 2, "01.00 H" },
+ { 3, "01.30 H" },
+ { 4, "02.00 H" },
+ { 5, "02.30 H" },
+ { 6, "03.00 H" },
+ { 7, "03.30 H" },
+ { 8, "04.00 H" },
+ { 9, "04.30 H" },
+ { 10, "05.00 H" },
+ { 11, "05.30 H" },
+ { 12, "06.00 H" },
+ { 13, "06.30 H" },
+ { 14, "07.00 H" },
+ { 15, "07.30 H" },
+ { 16, "08.00 H" },
+ { 17, "08.30 H" },
+ { 18, "09.00 H" },
+ { 19, "09.30 H" },
+ { 20, "10.00 H" },
+ { 21, "10.30 H" },
+ { 22, "11.00 H" },
+ { 23, "11.30 H" },
+ { 24, "12.00 H" },
+ { 25, "12.30 H" },
+ { 26, "13.00 H" },
+ { 27, "13.30 H" },
+ { 28, "14.00 H" },
+ { 29, "14.30 H" },
+ { 30, "15.00 H" },
+ { 31, "15.30 H" },
+ { 32, "16.00 H" },
+ { 33, "16.30 H" },
+ { 34, "17.00 H" },
+ { 35, "17.30 H" },
+ { 36, "18.00 H" },
+ { 37, "18.30 H" },
+ { 38, "19.00 H" },
+ { 39, "19.30 H" },
+ { 40, "20.00 H" },
+ { 41, "20.30 H" },
+ { 42, "21.00 H" },
+ { 43, "21.30 H" },
+ { 44, "22.00 H" },
+ { 45, "22.30 H" },
+ { 46, "23.00 H" },
+ { 47, "23.30 H" },
+ { 48, "24.00 H" },
+ { 0, NULL}
+};
+
+static int
+dissect_israeli_backward_charging_message(tvbuff_t *message_tvb, proto_tree *isup_tree)
+{
+ gint offset = 0;
+
+ proto_tree_add_item(isup_tree, hf_isup_israeli_charging_message_indicators_current, message_tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(isup_tree, hf_isup_israeli_charging_message_indicators_next, message_tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ proto_tree_add_item(isup_tree, hf_isup_israeli_current_rate, message_tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(isup_tree, hf_isup_israeli_time_indicator, message_tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ proto_tree_add_item(isup_tree, hf_isup_israeli_next_rate, message_tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ return offset;
+}
+
+static int
+dissect_israeli_traffic_change_message(tvbuff_t *message_tvb, proto_tree *isup_tree)
+{
+ gint offset = 0;
+
+ proto_tree_add_item(isup_tree, hf_isup_israeli_charging_message_indicators_current, message_tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(isup_tree, hf_isup_israeli_charging_message_indicators_next, message_tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ proto_tree_add_item(isup_tree, hf_isup_israeli_time_indicator, message_tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+ proto_tree_add_item(isup_tree, hf_isup_israeli_next_rate, message_tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ return offset;
+}
+
/* ------------------------------------------------------------------ */
static void
-dissect_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *isup_tree)
+dissect_ansi_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *isup_tree)
{
isup_tap_rec_t *tap_rec;
@@ -6968,19 +7445,10 @@ dissect_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *isup
/* Extract message type field */
message_type = tvb_get_guint8(message_tvb,0);
- switch (isup_standard){
- case ITU_STANDARD:
- proto_tree_add_uint_format(isup_tree, hf_isup_message_type, message_tvb, 0, MESSAGE_TYPE_LENGTH, message_type,
- "Message type: %s (%u)",
- val_to_str_ext_const(message_type, &isup_message_type_value_ext, "reserved"),
- message_type);
- break;
- case ANSI_STANDARD:
- proto_tree_add_uint_format(isup_tree, hf_isup_message_type, message_tvb, 0, MESSAGE_TYPE_LENGTH, message_type, "Message type: %s (%u)",
+ proto_tree_add_uint_format(isup_tree, hf_isup_message_type, message_tvb, 0, MESSAGE_TYPE_LENGTH, message_type, "Message type: %s (%u)",
val_to_str_ext_const(message_type, &ansi_isup_message_type_value_ext, "reserved"), message_type);
- break;
- }
- offset += MESSAGE_TYPE_LENGTH;
+
+ offset += MESSAGE_TYPE_LENGTH;
tap_rec = (isup_tap_rec_t *)ep_alloc(sizeof(isup_tap_rec_t));
tap_rec->message_type = message_type;
@@ -6990,438 +7458,225 @@ dissect_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *isup
parameter_tvb = tvb_new_subset_remaining(message_tvb, offset);
/* distinguish between message types:*/
- switch (isup_standard){
- case ITU_STANDARD:
- switch (message_type) {
- case MESSAGE_TYPE_INITIAL_ADDR:
- offset += dissect_isup_initial_address_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_SUBSEQ_ADDR:
- offset += dissect_isup_subsequent_address_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_INFO_REQ:
- offset += dissect_isup_information_request_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_INFO:
- offset += dissect_isup_information_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_CONTINUITY:
- offset += dissect_isup_continuity_message(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_ADDR_CMPL:
- offset += dissect_isup_address_complete_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_CONNECT:
- offset += dissect_isup_connect_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_FORW_TRANS:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_ANSWER:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_RELEASE:
- offset += dissect_isup_release_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_SUSPEND:
- offset += dissect_isup_suspend_resume_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_RESUME:
- offset += dissect_isup_suspend_resume_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_REL_CMPL:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_CONT_CHECK_REQ:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_RESET_CIRCUIT:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_BLOCKING:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_UNBLOCKING:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_BLOCK_ACK:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_UNBLOCK_ACK:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_CIRC_GRP_RST:
- offset += dissect_isup_circuit_group_reset_query_message(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CIRC_GRP_BLCK:
- offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CIRC_GRP_UNBL:
- offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CIRC_GRP_BL_ACK:
- offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CIRC_GRP_UNBL_ACK:
- offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_FACILITY_REQ:
- offset += dissect_isup_facility_request_accepted_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_FACILITY_ACC:
- offset += dissect_isup_facility_request_accepted_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_FACILITY_REJ:
- offset += dissect_isup_facility_reject_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_LOOP_BACK_ACK:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_PASS_ALONG:
- /* call dissect_isup_message recursively */
- {
- guint8 pa_message_type;
- pa_message_type = tvb_get_guint8(parameter_tvb, 0);
- pass_along_item = proto_tree_add_text(isup_tree, parameter_tvb, offset, -1,
- "Pass-along: %s Message (%u)",
- val_to_str_ext_const(pa_message_type, &isup_message_type_value_acro_ext, "reserved"),
- pa_message_type);
- pass_along_tree = proto_item_add_subtree(pass_along_item, ett_isup_pass_along_message);
- dissect_isup_message(parameter_tvb, pinfo, pass_along_tree);
- break;
- }
- case MESSAGE_TYPE_CIRC_GRP_RST_ACK:
- offset += dissect_isup_circuit_group_reset_acknowledgement_message(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CIRC_GRP_QRY:
- offset += dissect_isup_circuit_group_reset_query_message(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CIRC_GRP_QRY_RSP:
- offset += dissect_isup_circuit_group_query_response_message(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CALL_PROGRSS:
- offset += dissect_isup_call_progress_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_USER2USER_INFO:
- offset += dissect_isup_user_to_user_information_message(parameter_tvb, pinfo, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_UNEQUIPPED_CIC:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_CONFUSION:
- offset += dissect_isup_confusion_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_OVERLOAD:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_CHARGE_INFO:
- /* do nothing since format is a national matter */
- bufferlength = tvb_length_remaining(message_tvb, offset);
- if (bufferlength != 0)
- proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Format is a national matter");
- break;
- case MESSAGE_TYPE_NETW_RESRC_MGMT:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_FACILITY:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_USER_PART_TEST:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_USER_PART_AVAIL:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_IDENT_REQ:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_IDENT_RSP:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_SEGMENTATION:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_LOOP_PREVENTION:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_APPLICATION_TRANS:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_PRE_RELEASE_INFO:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_SUBSEQUENT_DIR_NUM:
- /* do nothing since format is a national matter */
- bufferlength = tvb_length_remaining(message_tvb, offset);
- if (bufferlength != 0)
- proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Format is a national matter");
- break;
- default:
- bufferlength = tvb_length_remaining(message_tvb, offset);
- if (bufferlength != 0)
- proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Unknown Message type (possibly reserved/used in former ISUP version)");
- break;
- }
- break;
- case ANSI_STANDARD:
- /* TODO if neccessary make new "dissect_ansi_isup_xxx() routines or add branches in the current ones.
- */
- switch (message_type) {
- case MESSAGE_TYPE_INITIAL_ADDR:
- offset += dissect_isup_initial_address_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_SUBSEQ_ADDR:
- offset += dissect_isup_subsequent_address_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_INFO_REQ:
- offset += dissect_isup_information_request_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_INFO:
- offset += dissect_isup_information_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_CONTINUITY:
- offset += dissect_isup_continuity_message(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_ADDR_CMPL:
- offset += dissect_isup_address_complete_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_CONNECT:
- offset += dissect_isup_connect_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_FORW_TRANS:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_ANSWER:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_RELEASE:
- offset += dissect_isup_release_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_SUSPEND:
- offset += dissect_isup_suspend_resume_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_RESUME:
- offset += dissect_isup_suspend_resume_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_REL_CMPL:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_CONT_CHECK_REQ:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_RESET_CIRCUIT:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_BLOCKING:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_UNBLOCKING:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_BLOCK_ACK:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_UNBLOCK_ACK:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_CIRC_GRP_RST:
- offset += dissect_isup_circuit_group_reset_query_message(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CIRC_GRP_BLCK:
- offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CIRC_GRP_UNBL:
- offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CIRC_GRP_BL_ACK:
- offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CIRC_GRP_UNBL_ACK:
- offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_FACILITY_REQ:
- offset += dissect_isup_facility_request_accepted_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_FACILITY_ACC:
- offset += dissect_isup_facility_request_accepted_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_FACILITY_REJ:
- offset += dissect_isup_facility_reject_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_LOOP_BACK_ACK:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_PASS_ALONG:
- /* call dissect_isup_message recursively */
- {
- guint8 pa_message_type;
- pa_message_type = tvb_get_guint8(parameter_tvb, 0);
- pass_along_item = proto_tree_add_text(isup_tree, parameter_tvb, offset, -1,
- "Pass-along: %s Message (%u)",
- val_to_str_ext_const(pa_message_type, &isup_message_type_value_acro_ext, "reserved"),
- pa_message_type);
- pass_along_tree = proto_item_add_subtree(pass_along_item, ett_isup_pass_along_message);
- dissect_isup_message(parameter_tvb, pinfo, pass_along_tree);
- break;
- }
- case MESSAGE_TYPE_CIRC_GRP_RST_ACK:
- offset += dissect_isup_circuit_group_reset_acknowledgement_message(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CIRC_GRP_QRY:
- offset += dissect_isup_circuit_group_reset_query_message(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CIRC_GRP_QRY_RSP:
- offset += dissect_isup_circuit_group_query_response_message(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CALL_PROGRSS:
- offset += dissect_isup_call_progress_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_USER2USER_INFO:
- offset += dissect_isup_user_to_user_information_message(parameter_tvb, pinfo, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_UNEQUIPPED_CIC:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_CONFUSION:
- offset += dissect_isup_confusion_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_OVERLOAD:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_CHARGE_INFO:
- /* do nothing since format is a national matter */
- bufferlength = tvb_length_remaining(message_tvb, offset);
- if (bufferlength != 0)
- proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Format is a national matter");
- break;
- case MESSAGE_TYPE_NETW_RESRC_MGMT:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_FACILITY:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_USER_PART_TEST:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_USER_PART_AVAIL:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_IDENT_REQ:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_IDENT_RSP:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_SEGMENTATION:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_LOOP_PREVENTION:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_APPLICATION_TRANS:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_PRE_RELEASE_INFO:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_SUBSEQUENT_DIR_NUM:
- /* do nothing since format is a national matter */
- bufferlength = tvb_length_remaining(message_tvb, offset);
- if (bufferlength != 0)
- proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Format is a national matter");
- break;
- case ANSI_ISUP_MESSAGE_TYPE_CIRCUIT_RES_ACK:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case ANSI_ISUP_MESSAGE_TYPE_CIRCUIT_RES:
- offset += dissect_ansi_isup_circuit_reservation_message( parameter_tvb, isup_tree );
- break;
- case ANSI_ISUP_MESSAGE_TYPE_CCT_VAL_TEST_RSP:
- opt_part_possible = TRUE;
- offset += dissect_ansi_isup_circuit_validation_test_resp_message( parameter_tvb, isup_tree );
- break;
- case ANSI_ISUP_MESSAGE_TYPE_CCT_VAL_TEST:
- /* no dissector necessary since no mandatory parameters included */
- break;
- default:
- bufferlength = tvb_length_remaining(message_tvb, offset);
- if (bufferlength != 0)
- proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Unknown Message type (possibly reserved/used in former ISUP version)");
- break;
- }
- break;
- }
+ switch (message_type) {
+ case MESSAGE_TYPE_INITIAL_ADDR:
+ offset += dissect_isup_initial_address_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_SUBSEQ_ADDR:
+ offset += dissect_isup_subsequent_address_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_INFO_REQ:
+ offset += dissect_isup_information_request_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_INFO:
+ offset += dissect_isup_information_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_CONTINUITY:
+ offset += dissect_isup_continuity_message(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_ADDR_CMPL:
+ offset += dissect_isup_address_complete_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_CONNECT:
+ offset += dissect_isup_connect_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_FORW_TRANS:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_ANSWER:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_RELEASE:
+ offset += dissect_isup_release_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_SUSPEND:
+ offset += dissect_isup_suspend_resume_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_RESUME:
+ offset += dissect_isup_suspend_resume_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_REL_CMPL:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_CONT_CHECK_REQ:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_RESET_CIRCUIT:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_BLOCKING:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_UNBLOCKING:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_BLOCK_ACK:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_UNBLOCK_ACK:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_RST:
+ offset += dissect_isup_circuit_group_reset_query_message(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_BLCK:
+ offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_UNBL:
+ offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_BL_ACK:
+ offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_UNBL_ACK:
+ offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_FACILITY_REQ:
+ offset += dissect_isup_facility_request_accepted_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_FACILITY_ACC:
+ offset += dissect_isup_facility_request_accepted_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_FACILITY_REJ:
+ offset += dissect_isup_facility_reject_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_LOOP_BACK_ACK:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_PASS_ALONG:
+ /* call dissect_isup_message recursively */
+ {
+ guint8 pa_message_type;
+ pa_message_type = tvb_get_guint8(parameter_tvb, 0);
+ pass_along_item = proto_tree_add_text(isup_tree, parameter_tvb, offset, -1,
+ "Pass-along: %s Message (%u)",
+ val_to_str_ext_const(pa_message_type, &isup_message_type_value_acro_ext, "reserved"),
+ pa_message_type);
+ pass_along_tree = proto_item_add_subtree(pass_along_item, ett_isup_pass_along_message);
+ dissect_ansi_isup_message(parameter_tvb, pinfo, pass_along_tree);
+ break;
+ }
+ case MESSAGE_TYPE_CIRC_GRP_RST_ACK:
+ offset += dissect_isup_circuit_group_reset_acknowledgement_message(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_QRY:
+ offset += dissect_isup_circuit_group_reset_query_message(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_QRY_RSP:
+ offset += dissect_isup_circuit_group_query_response_message(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CALL_PROGRSS:
+ offset += dissect_isup_call_progress_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_USER2USER_INFO:
+ offset += dissect_isup_user_to_user_information_message(parameter_tvb, pinfo, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_UNEQUIPPED_CIC:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_CONFUSION:
+ offset += dissect_isup_confusion_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_OVERLOAD:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_CHARGE_INFO:
+ /* do nothing since format is a national matter */
+ bufferlength = tvb_length_remaining(message_tvb, offset);
+ if (bufferlength != 0)
+ proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Format is a national matter");
+ break;
+ case MESSAGE_TYPE_NETW_RESRC_MGMT:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_FACILITY:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_USER_PART_TEST:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_USER_PART_AVAIL:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_IDENT_REQ:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_IDENT_RSP:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_SEGMENTATION:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_LOOP_PREVENTION:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_APPLICATION_TRANS:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_PRE_RELEASE_INFO:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_SUBSEQUENT_DIR_NUM:
+ /* do nothing since format is a national matter */
+ bufferlength = tvb_length_remaining(message_tvb, offset);
+ if (bufferlength != 0)
+ proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Format is a national matter");
+ break;
+ case ANSI_ISUP_MESSAGE_TYPE_CIRCUIT_RES_ACK:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case ANSI_ISUP_MESSAGE_TYPE_CIRCUIT_RES:
+ offset += dissect_ansi_isup_circuit_reservation_message(parameter_tvb, isup_tree);
+ break;
+ case ANSI_ISUP_MESSAGE_TYPE_CCT_VAL_TEST_RSP:
+ opt_part_possible = TRUE;
+ offset += dissect_ansi_isup_circuit_validation_test_resp_message(parameter_tvb, isup_tree);
+ break;
+ case ANSI_ISUP_MESSAGE_TYPE_CCT_VAL_TEST:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ default:
+ bufferlength = tvb_length_remaining(message_tvb, offset);
+ if (bufferlength != 0)
+ proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Unknown Message type (possibly reserved/used in former ISUP version)");
+ break;
+ }
/* extract pointer to start of optional part (if any) */
- if (opt_part_possible == TRUE){
+ if (opt_part_possible == TRUE) {
opt_parameter_pointer = tvb_get_guint8(message_tvb, offset);
- if (opt_parameter_pointer > 0){
+ if (opt_parameter_pointer > 0) {
proto_tree_add_uint_format(isup_tree, hf_isup_pointer_to_start_of_optional_part, message_tvb, offset, PARAMETER_POINTER_LENGTH, opt_parameter_pointer, "Pointer to start of optional part: %u", opt_parameter_pointer);
offset += opt_parameter_pointer;
optional_parameter_tvb = tvb_new_subset_remaining(message_tvb, offset);
- switch(isup_standard){
- case ITU_STANDARD:
- dissect_isup_optional_parameter(optional_parameter_tvb, pinfo, isup_tree);
- break;
- case ANSI_STANDARD:
- dissect_ansi_isup_optional_parameter(optional_parameter_tvb, pinfo, isup_tree);
- break;
- }
+ dissect_ansi_isup_optional_parameter(optional_parameter_tvb, pinfo, isup_tree);
}
else
proto_tree_add_uint_format(isup_tree, hf_isup_pointer_to_start_of_optional_part, message_tvb, offset, PARAMETER_POINTER_LENGTH, opt_parameter_pointer, "No optional parameter present (Pointer: %u)", opt_parameter_pointer);
@@ -7436,87 +7691,402 @@ dissect_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *isup
tap_queue_packet(isup_tap, pinfo, tap_rec);
}
-/* ------------------------------------------------------------------ */
static void
-dissect_isup(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+dissect_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *isup_tree, guint8 itu_isup_variant)
{
+ isup_tap_rec_t *tap_rec;
-/* Set up structures needed to add the protocol subtree and manage it */
- proto_item *ti;
- proto_tree *isup_tree = NULL;
- tvbuff_t *message_tvb;
- guint16 cic;
- guint8 message_type;
+ tvbuff_t *parameter_tvb;
+ tvbuff_t *optional_parameter_tvb;
+ proto_item* pass_along_item;
+ proto_tree* pass_along_tree;
+ gint offset, bufferlength;
+ guint8 message_type, opt_parameter_pointer;
+ gint opt_part_possible = FALSE; /* default setting - for message types allowing optional
+ params explicitely set to TRUE in case statement */
+ tap_calling_number = NULL;
+ offset = 0;
- switch(mtp3_standard){
- case ANSI_STANDARD:
- isup_standard = ANSI_STANDARD;
- break;
- default:
- isup_standard = ITU_STANDARD;
- }
+ /* Extract message type field */
+ message_type = tvb_get_guint8(message_tvb,0);
-/* Make entries in Protocol column and Info column on summary display */
- switch (isup_standard){
- case ITU_STANDARD:
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "ISUP(ITU)");
+ switch(itu_isup_variant) {
+ case ISUP_ITU_STANDARD_VARIANT:
+ proto_tree_add_uint_format(isup_tree, hf_isup_message_type, message_tvb, 0, MESSAGE_TYPE_LENGTH, message_type,
+ "Message type: %s (%u)",
+ val_to_str_ext_const(message_type, &isup_message_type_value_ext, "reserved"),
+ message_type);
break;
- case ANSI_STANDARD:
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "ISUP(ANSI)");
+ case ISUP_FRENCH_VARIANT:
+ proto_tree_add_uint_format(isup_tree, hf_isup_message_type, message_tvb, 0, MESSAGE_TYPE_LENGTH, message_type,
+ "Message type: %s (%u)",
+ val_to_str_ext_const(message_type, &french_isup_message_type_value_ext, "reserved"),
+ message_type);
+ break;
+ case ISUP_ISRAELI_VARIANT:
+ proto_tree_add_uint_format(isup_tree, hf_isup_message_type, message_tvb, 0, MESSAGE_TYPE_LENGTH, message_type,
+ "Message type: %s (%u)",
+ val_to_str_ext_const(message_type, &israeli_isup_message_type_value_ext, "reserved"),
+ message_type);
break;
}
-/* Extract message type field */
- message_type = tvb_get_guint8(tvb, CIC_OFFSET + CIC_LENGTH);
- /* dissect CIC in main dissector since pass-along message type carrying complete IUSP message w/o CIC needs
- recursive message dissector call */
- if (mtp3_standard == ANSI_STANDARD)
- cic = tvb_get_letohs(tvb, CIC_OFFSET) & 0x3FFF; /*since upper 2 bits spare */
- else /* ITU, China, and Japan; yes, J7's CICs are a different size */
- cic = tvb_get_letohs(tvb, CIC_OFFSET) & 0x0FFF; /*since upper 4 bits spare */
+ offset += MESSAGE_TYPE_LENGTH;
- pinfo->ctype = CT_ISUP;
- pinfo->circuit_id = cic;
-
- if (isup_show_cic_in_info){
- switch (isup_standard){
- case ITU_STANDARD:
- col_add_fstr(pinfo->cinfo, COL_INFO,
- "%s (CIC %u) ",
- val_to_str_ext_const(message_type, &isup_message_type_value_acro_ext, "reserved"),
- cic);
+ tap_rec = (isup_tap_rec_t *)ep_alloc(sizeof(isup_tap_rec_t));
+ tap_rec->message_type = message_type;
+ tap_rec->calling_number = NULL;
+ tap_rec->called_number = NULL;
+
+ parameter_tvb = tvb_new_subset_remaining(message_tvb, offset);
+
+ /* distinguish between message types:*/
+ switch (message_type) {
+ case MESSAGE_TYPE_INITIAL_ADDR:
+ offset += dissect_isup_initial_address_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
break;
- case ANSI_STANDARD:
- col_add_fstr(pinfo->cinfo, COL_INFO,
- "%s (CIC %u) ",
- val_to_str_ext_const(message_type, &ansi_isup_message_type_value_acro_ext, "reserved"),
- cic);
+ case MESSAGE_TYPE_SUBSEQ_ADDR:
+ offset += dissect_isup_subsequent_address_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
break;
- }
- }else{
- switch (isup_standard){
- case ITU_STANDARD:
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s ", val_to_str_ext_const(message_type, &isup_message_type_value_acro_ext, "reserved"));
+ case MESSAGE_TYPE_INFO_REQ:
+ offset += dissect_isup_information_request_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_INFO:
+ offset += dissect_isup_information_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_CONTINUITY:
+ offset += dissect_isup_continuity_message(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_ADDR_CMPL:
+ offset += dissect_isup_address_complete_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_CONNECT:
+ offset += dissect_isup_connect_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_FORW_TRANS:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_ANSWER:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_RELEASE:
+ offset += dissect_isup_release_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_SUSPEND:
+ offset += dissect_isup_suspend_resume_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_RESUME:
+ offset += dissect_isup_suspend_resume_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_REL_CMPL:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_CONT_CHECK_REQ:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_RESET_CIRCUIT:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_BLOCKING:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_UNBLOCKING:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_BLOCK_ACK:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_UNBLOCK_ACK:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_RST:
+ offset += dissect_isup_circuit_group_reset_query_message(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_BLCK:
+ offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_UNBL:
+ offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_BL_ACK:
+ offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_UNBL_ACK:
+ offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
break;
- case ANSI_STANDARD:
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s ", val_to_str_ext_const(message_type, &ansi_isup_message_type_value_acro_ext, "reserved"));
+ case MESSAGE_TYPE_FACILITY_REQ:
+ offset += dissect_isup_facility_request_accepted_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_FACILITY_ACC:
+ offset += dissect_isup_facility_request_accepted_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_FACILITY_REJ:
+ offset += dissect_isup_facility_reject_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_LOOP_BACK_ACK:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_PASS_ALONG:
+ /* call dissect_isup_message recursively */
+ {
+ guint8 pa_message_type;
+ pa_message_type = tvb_get_guint8(parameter_tvb, 0);
+ pass_along_item = proto_tree_add_text(isup_tree, parameter_tvb, offset, -1,
+ "Pass-along: %s Message (%u)",
+ val_to_str_ext_const(pa_message_type, &isup_message_type_value_acro_ext, "reserved"),
+ pa_message_type);
+ pass_along_tree = proto_item_add_subtree(pass_along_item, ett_isup_pass_along_message);
+ dissect_isup_message(parameter_tvb, pinfo, pass_along_tree, itu_isup_variant);
+ break;
+ }
+ case MESSAGE_TYPE_CIRC_GRP_RST_ACK:
+ offset += dissect_isup_circuit_group_reset_acknowledgement_message(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_QRY:
+ offset += dissect_isup_circuit_group_reset_query_message(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_QRY_RSP:
+ offset += dissect_isup_circuit_group_query_response_message(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CALL_PROGRSS:
+ offset += dissect_isup_call_progress_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_USER2USER_INFO:
+ offset += dissect_isup_user_to_user_information_message(parameter_tvb, pinfo, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_UNEQUIPPED_CIC:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_CONFUSION:
+ offset += dissect_isup_confusion_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_OVERLOAD:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_CHARGE_INFO:
+ /* do nothing since format is a national matter */
+ bufferlength = tvb_length_remaining(message_tvb, offset);
+ if (bufferlength != 0)
+ proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Format is a national matter");
+ break;
+ case MESSAGE_TYPE_NETW_RESRC_MGMT:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_FACILITY:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_USER_PART_TEST:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_USER_PART_AVAIL:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_IDENT_REQ:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_IDENT_RSP:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_SEGMENTATION:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_LOOP_PREVENTION:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_APPLICATION_TRANS:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_PRE_RELEASE_INFO:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_SUBSEQUENT_DIR_NUM:
+ /* do nothing since format is a national matter */
+ bufferlength = tvb_length_remaining(message_tvb, offset);
+ if (bufferlength != 0)
+ proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Format is a national matter");
+ break;
+ default:
+ /* Handle national extensions here */
+ switch(itu_isup_variant) {
+ case ISUP_ITU_STANDARD_VARIANT:
+ bufferlength = tvb_length_remaining(message_tvb, offset);
+ if (bufferlength != 0)
+ proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Unknown Message type (possibly reserved/used in former ISUP version)");
+ break;
+ case ISUP_FRENCH_VARIANT:
+ switch (message_type) {
+ case FRENCH_CHARGING_PULSE:
+ offset += dissect_french_isup_charging_pulse_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case FRENCH_CHARGING_ACK:
+ opt_part_possible = TRUE;
+ break;
+ default:
+ bufferlength = tvb_length_remaining(message_tvb, offset);
+ if (bufferlength != 0)
+ proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Unknown Message type (possibly reserved/used in former ISUP version)");
+ break;
+ }
+ break;
+ case ISUP_ISRAELI_VARIANT:
+ switch (message_type) {
+ case ISRAELI_BACKWARD_CHARGING:
+ offset += dissect_israeli_backward_charging_message(parameter_tvb, isup_tree);
+ break;
+ case ISRAELI_TRAFFIC_CHANGE:
+ offset += dissect_israeli_traffic_change_message(parameter_tvb, isup_tree);
+ break;
+ case ISRAELI_CHARGE_ACK:
+ /* No parameters */
+ break;
+ default:
+ bufferlength = tvb_length_remaining(message_tvb, offset);
+ if (bufferlength != 0)
+ proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Unknown Message type (possibly reserved/used in former ISUP version)");
+ break;
+ }
+ break;
+ }
break;
}
- }
- /* In the interest of speed, if "tree" is NULL, don't do any work not
- * necessary to generate protocol tree items.
- */
- if (tree) {
- ti = proto_tree_add_item(tree, proto_isup, tvb, 0, -1, ENC_NA);
- isup_tree = proto_item_add_subtree(ti, ett_isup);
+ /* extract pointer to start of optional part (if any) */
+ if (opt_part_possible == TRUE) {
+ opt_parameter_pointer = tvb_get_guint8(message_tvb, offset);
+ if (opt_parameter_pointer > 0) {
+ proto_tree_add_uint_format(isup_tree, hf_isup_pointer_to_start_of_optional_part, message_tvb, offset, PARAMETER_POINTER_LENGTH, opt_parameter_pointer, "Pointer to start of optional part: %u", opt_parameter_pointer);
+ offset += opt_parameter_pointer;
+ optional_parameter_tvb = tvb_new_subset_remaining(message_tvb, offset);
+ dissect_isup_optional_parameter(optional_parameter_tvb, pinfo, isup_tree);
+ }
+ else
+ proto_tree_add_uint_format(isup_tree, hf_isup_pointer_to_start_of_optional_part, message_tvb, offset, PARAMETER_POINTER_LENGTH, opt_parameter_pointer, "No optional parameter present (Pointer: %u)", opt_parameter_pointer);
+ }
+ else if (message_type != MESSAGE_TYPE_CHARGE_INFO)
+ proto_tree_add_text(isup_tree, message_tvb, 0, 0, "No optional parameters are possible with this message type");
+ /* if there are calling/called number, we'll get them for the tap */
+ tap_rec->calling_number=tap_calling_number?tap_calling_number:ep_strdup("");
+ tap_rec->called_number=tap_called_number;
+ tap_rec->cause_value=tap_cause_value;
+ tap_queue_packet(isup_tap, pinfo, tap_rec);
+}
- proto_tree_add_uint_format(isup_tree, hf_isup_cic, tvb, CIC_OFFSET, CIC_LENGTH, cic, "CIC: %u", cic);
- }
+/* ------------------------------------------------------------------ */
+static void
+dissect_isup(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
- message_tvb = tvb_new_subset_remaining(tvb, CIC_LENGTH);
- dissect_isup_message(message_tvb, pinfo, isup_tree);
+/* Set up structures needed to add the protocol subtree and manage it */
+ proto_item *ti;
+ proto_tree *isup_tree = NULL;
+ tvbuff_t *message_tvb;
+ guint16 cic;
+ guint8 message_type;
+ guint8 itu_isup_variant = g_isup_variant;
+ value_string_ext *used_value_string_ext;
+
+/* Make entries in Protocol column and Info column on summary display */
+/* dissect CIC in main dissector since pass-along message type carrying complete IUSP message w/o CIC needs
+ * recursive message dissector call
+ */
+/* Extract message type field */
+ message_type = tvb_get_guint8(tvb, CIC_OFFSET + CIC_LENGTH);
+
+ pinfo->ctype = CT_ISUP;
+
+ switch(mtp3_standard) {
+ case ANSI_STANDARD:
+ isup_standard = ANSI_STANDARD;
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "ISUP(ANSI)");
+ cic = tvb_get_letohs(tvb, CIC_OFFSET) & 0x3FFF; /*since upper 2 bits spare */
+ pinfo->circuit_id = cic;
+ if (isup_show_cic_in_info) {
+ col_add_fstr(pinfo->cinfo, COL_INFO,
+ "%s (CIC %u) ",
+ val_to_str_ext_const(message_type, &ansi_isup_message_type_value_acro_ext, "reserved"),
+ cic);
+ } else {
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s ", val_to_str_ext_const(message_type, &ansi_isup_message_type_value_acro_ext, "reserved"));
+ }
+ /* In the interest of speed, if "tree" is NULL, don't do any work not
+ * necessary to generate protocol tree items.
+ */
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_isup, tvb, 0, -1, ENC_NA);
+ isup_tree = proto_item_add_subtree(ti, ett_isup);
+ proto_tree_add_uint_format(isup_tree, hf_isup_cic, tvb, CIC_OFFSET, CIC_LENGTH, cic, "CIC: %u", cic);
+ }
+ message_tvb = tvb_new_subset_remaining(tvb, CIC_LENGTH);
+ dissect_ansi_isup_message(message_tvb, pinfo, isup_tree);
+ break;
+ default:
+ isup_standard = ITU_STANDARD;
+ switch(itu_isup_variant) {
+ case ISUP_FRENCH_VARIANT:
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "ISUP(French)");
+ used_value_string_ext = &french_isup_message_type_value_acro_ext;
+ break;
+ case ISUP_ISRAELI_VARIANT:
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "ISUP(Israeli)");
+ used_value_string_ext = &israeli_isup_message_type_value_acro_ext;
+ break;
+ default:
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "ISUP(ITU)");
+ used_value_string_ext = &isup_message_type_value_acro_ext;
+ break;
+ }
+ /* ITU, China, and Japan; yes, J7's CICs are a different size */
+ cic = tvb_get_letohs(tvb, CIC_OFFSET) & 0x0FFF; /*since upper 4 bits spare */
+ pinfo->circuit_id = cic;
+ if (isup_show_cic_in_info) {
+ col_add_fstr(pinfo->cinfo, COL_INFO,
+ "%s (CIC %u) ",
+ val_to_str_ext_const(message_type, used_value_string_ext, "reserved"),
+ cic);
+ } else {
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s ", val_to_str_ext_const(message_type, used_value_string_ext, "reserved"));
+ }
+ /* In the interest of speed, if "tree" is NULL, don't do any work not
+ * necessary to generate protocol tree items.
+ */
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_isup, tvb, 0, -1, ENC_NA);
+ isup_tree = proto_item_add_subtree(ti, ett_isup);
+ proto_tree_add_uint_format(isup_tree, hf_isup_cic, tvb, CIC_OFFSET, CIC_LENGTH, cic, "CIC: %u", cic);
+ }
+ message_tvb = tvb_new_subset_remaining(tvb, CIC_LENGTH);
+ dissect_isup_message(message_tvb, pinfo, isup_tree, itu_isup_variant);
+ }
}
/* ------------------------------------------------------------------ */
@@ -7570,7 +8140,7 @@ dissect_bicc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
message_tvb = tvb_new_subset_remaining(tvb, BICC_CIC_LENGTH);
- dissect_isup_message(message_tvb, pinfo, bicc_tree);
+ dissect_isup_message(message_tvb, pinfo, bicc_tree, ISUP_ITU_STANDARD_VARIANT);
col_set_fence(pinfo->cinfo, COL_INFO);
}
@@ -7582,16 +8152,83 @@ dissect_application_isup(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree *isup_tree = NULL;
tvbuff_t *message_tvb;
guint8 message_type;
+ gchar *content_type_parameter_str;
+ guint8 itu_isup_variant = ISUP_ITU_STANDARD_VARIANT; /* Default */
+
+ if(pinfo->private_data) {
+ content_type_parameter_str = ascii_strdown_inplace(pinfo->private_data);
+ if(strstr(content_type_parameter_str,"ansi")) {
+ isup_standard = ANSI_STANDARD;
+ col_append_str(pinfo->cinfo, COL_PROTOCOL, "/ISUP(ANSI)");
+ message_type = tvb_get_guint8(tvb, 0);
+ /* application/ISUP has no CIC */
+ col_append_sep_fstr(pinfo->cinfo, COL_INFO, ", ",
+ "ISUP:%s",
+ val_to_str_ext_const(message_type, &ansi_isup_message_type_value_acro_ext, "reserved"));
+ /* In the interest of speed, if "tree" is NULL, don't do any work not
+ * necessary to generate protocol tree items.
+ */
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_isup, tvb, 0, -1, ENC_NA);
+ isup_tree = proto_item_add_subtree(ti, ett_isup);
+ }
+
+ message_tvb = tvb_new_subset_remaining(tvb, 0);
+ dissect_ansi_isup_message(message_tvb, pinfo, isup_tree);
+ return;
+ } else if(strstr(content_type_parameter_str,"spirou")) {
+ isup_standard = ITU_STANDARD;
+ itu_isup_variant = ISUP_FRENCH_VARIANT;
+ } else {
+ isup_standard = ITU_STANDARD;
+ }
+ } else {
+ /* default to ITU */
+ isup_standard = ITU_STANDARD;
+ }
-/* Make entries in Protocol column and Info column on summary display */
- col_append_str(pinfo->cinfo, COL_PROTOCOL, "/ISUP(ITU)");
-/* Extract message type field */
+ /* Extract message type field */
message_type = tvb_get_guint8(tvb, 0);
- /* application/ISUP has no CIC */
- col_append_sep_fstr(pinfo->cinfo, COL_INFO, ", ",
- "ISUP:%s",
- val_to_str_ext_const(message_type, &isup_message_type_value_acro_ext, "reserved"));
+
+ switch(itu_isup_variant) {
+ case ISUP_ITU_STANDARD_VARIANT:
+ /* Make entries in Protocol column and Info column on summary display */
+ col_append_str(pinfo->cinfo, COL_PROTOCOL, "/ISUP(ITU)");
+
+ /* application/ISUP has no CIC */
+ col_append_sep_fstr(pinfo->cinfo, COL_INFO, ", ",
+ "ISUP:%s",
+ val_to_str_ext_const(message_type, &isup_message_type_value_acro_ext, "reserved"));
+ break;
+ case ISUP_FRENCH_VARIANT:
+ /* Make entries in Protocol column and Info column on summary display */
+ col_append_str(pinfo->cinfo, COL_PROTOCOL, "/ISUP(French)");
+
+ /* application/ISUP has no CIC */
+ col_append_sep_fstr(pinfo->cinfo, COL_INFO, ", ",
+ "ISUP:%s",
+ val_to_str_ext_const(message_type, &french_isup_message_type_value_acro_ext, "reserved"));
+ break;
+#if 0
+ /* This case can't happen unless/until we can parse the Israeli variant
+ * out of the content type
+ */
+ case ISUP_ISRAELI_VARIANT:
+ /* Make entries in Protocol column and Info column on summary display */
+ col_append_str(pinfo->cinfo, COL_PROTOCOL, "/ISUP(Israeli)");
+
+ /* application/ISUP has no CIC */
+ col_append_sep_fstr(pinfo->cinfo, COL_INFO, ", ",
+ "ISUP:%s",
+ val_to_str_ext_const(message_type, &israeli_isup_message_type_value_acro_ext, "reserved"));
+ break;
+#endif
+ default:
+ col_append_sep_fstr(pinfo->cinfo, COL_INFO, ", ",
+ "ISUP: Unknown variant %d", itu_isup_variant);
+ break;
+ }
/* In the interest of speed, if "tree" is NULL, don't do any work not
necessary to generate protocol tree items. */
@@ -7601,7 +8238,7 @@ dissect_application_isup(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
message_tvb = tvb_new_subset_remaining(tvb, 0);
- dissect_isup_message(message_tvb, pinfo, isup_tree);
+ dissect_isup_message(message_tvb, pinfo, isup_tree, itu_isup_variant);
}
/* ---------------------------------------------------- stats tree
*/
@@ -7616,7 +8253,7 @@ msg_stats_tree_init(stats_tree* st)
}
static int
-msg_stats_tree_packet(stats_tree *st, packet_info *pinfo, epan_dissect_t *edt _U_, const void *p )
+msg_stats_tree_packet(stats_tree *st, packet_info *pinfo, epan_dissect_t *edt _U_, const void *p)
{
const gchar *msg = match_strval_ext(((const isup_tap_rec_t*)p)->message_type, &isup_message_type_value_acro_ext);
gchar *dir;
@@ -8325,17 +8962,17 @@ proto_register_isup(void)
NULL, HFILL }},
{ &hf_bat_ase_biwfa,
- { "Interworking Function Address( X.213 NSAP encoded)", "bat_ase_biwfa",
+ { "Interworking Function Address(X.213 NSAP encoded)", "bat_ase_biwfa",
FT_BYTES, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_afi,
- { "X.213 Address Format Information ( AFI )", "x213.afi",
+ { "X.213 Address Format Information (AFI)", "x213.afi",
FT_UINT8, BASE_HEX|BASE_EXT_STRING, &x213_afi_value_ext,0x0,
NULL, HFILL }},
{ &hf_bicc_nsap_dsp,
- { "X.213 Address Format Information ( DSP )", "x213.dsp",
+ { "X.213 Address Format Information (DSP)", "x213.dsp",
FT_BYTES, BASE_NONE, NULL,0x0,
NULL, HFILL }},
{ &hf_characteristics,
@@ -8602,7 +9239,39 @@ proto_register_isup(void)
{ &hf_isup_geo_loc_screening_ind,
{ "Calling Geodetic Location screening indicator", "isup.location_screening_ind",
FT_UINT8, BASE_DEC, VALS(isup_screening_ind_enhanced_value), BA_8BIT_MASK, /* using previously defined screening values */
- NULL, HFILL }}
+ NULL, HFILL }},
+
+ /* French ISUP parameters */
+ { &hf_isup_french_coll_field,
+ { "Collection field", "isup.french.coll_field",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_isup_french_msg_num,
+ { "Message number", "isup.french.msg_num",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ /* Israeli ISUP parameters */
+ { &hf_isup_israeli_charging_message_indicators_current,
+ { "Current Tariff", "isup.israeli.cmi_current",
+ FT_UINT8, BASE_DEC, VALS(israeli_cmi_current_rate), 0x03,
+ NULL, HFILL }},
+ { &hf_isup_israeli_charging_message_indicators_next,
+ { "Next Tariff", "isup.israeli.cmi_next",
+ FT_UINT8, BASE_DEC, VALS(israeli_cmi_next_rate), 0x0C,
+ NULL, HFILL }},
+ { &hf_isup_israeli_current_rate,
+ { "Current Rate", "isup.israeli.current_rate",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_isup_israeli_time_indicator,
+ { "Time Indicator", "isup.israeli.time_indicator",
+ FT_UINT8, BASE_DEC, VALS(israeli_time_indicators), 0x0,
+ NULL, HFILL }},
+ { &hf_isup_israeli_next_rate,
+ { "Next Rate", "isup.israeli.next_ratej",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
};
/* Setup protocol subtree array */
@@ -8621,6 +9290,13 @@ proto_register_isup(void)
&ett_isup_apm_msg_fragments,
};
+ static enum_val_t isup_variants[] = {
+ {"ITU Standard", "ITU Standard", ISUP_ITU_STANDARD_VARIANT},
+ {"French national Standard", "French national Standard", ISUP_FRENCH_VARIANT},
+ {"Israeli national Standard", "Israeli national Standard", ISUP_ISRAELI_VARIANT},
+ {NULL, NULL, -1}
+ };
+
/* Register the protocol name and description */
proto_isup = proto_register_protocol("ISDN User Part",
"ISUP", "isup");
@@ -8635,6 +9311,11 @@ proto_register_isup(void)
isup_module = prefs_register_protocol(proto_isup, NULL);
+ prefs_register_enum_preference(isup_module, "variant",
+ "Select Standard or national ISUP variant",
+ "Note national variants may not be fully supported",
+ &g_isup_variant, isup_variants, FALSE);
+
prefs_register_bool_preference(isup_module, "show_cic_in_info", "Show CIC in Info column",
"Show the CIC value (in addition to the message type) in the Info column",
diff --git a/epan/dissectors/packet-itdm.c b/epan/dissectors/packet-itdm.c
index fd2f9c0bcd..5b755fabad 100644
--- a/epan/dissectors/packet-itdm.c
+++ b/epan/dissectors/packet-itdm.c
@@ -476,7 +476,7 @@ proto_reg_handoff_itdm(void)
static guint ItdmMPLSLabel;
if (!Initialized) {
- itdm_handle = find_dissector("itdm");;
+ itdm_handle = find_dissector("itdm");
data_handle = find_dissector("data");
Initialized=TRUE;
} else {
diff --git a/epan/dissectors/packet-iuup.c b/epan/dissectors/packet-iuup.c
index 4d1a5183b0..8e37cb6c9a 100644
--- a/epan/dissectors/packet-iuup.c
+++ b/epan/dissectors/packet-iuup.c
@@ -319,7 +319,7 @@ static const value_string iuup_fqcs[] = {
static proto_item*
iuup_proto_tree_add_bits(proto_tree* tree, int hf, tvbuff_t* tvb, int offset, int bit_offset, guint bits, guint8** buf) {
static const guint8 masks[] = {0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe};
- int len = (bits + bit_offset)/8 + ((bits + bit_offset)%8 ? 0 : 1);
+ int len = (bits + bit_offset)/8 + (((bits + bit_offset)%8) ? 0 : 1);
guint8* shifted_buffer;
proto_item* pi;
int i;
@@ -339,7 +339,7 @@ iuup_proto_tree_add_bits(proto_tree* tree, int hf, tvbuff_t* tvb, int offset, in
if (buf)
*buf = shifted_buffer;
- pi = proto_tree_add_bytes(tree, hf, tvb, offset, len + ((bits + bit_offset) % 8 ? 1 : 0) , shifted_buffer);
+ pi = proto_tree_add_bytes(tree, hf, tvb, offset, len + (((bits + bit_offset)%8) ? 1 : 0) , shifted_buffer);
proto_item_append_text(pi, " (%i Bits)", bits);
return pi;
@@ -398,7 +398,7 @@ static void dissect_iuup_payload(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tr
bit_offset += rfci->subflow[i].len;
}
- offset += (bit_offset / 8) + (bit_offset % 8 ? 1 : 0);
+ offset += (bit_offset / 8) + ((bit_offset % 8) ? 1 : 0);
} while (offset <= last_offset);
}
diff --git a/epan/dissectors/packet-iwarp-ddp-rdmap.c b/epan/dissectors/packet-iwarp-ddp-rdmap.c
index b7955d5256..79dfff15fc 100644
--- a/epan/dissectors/packet-iwarp-ddp-rdmap.c
+++ b/epan/dissectors/packet-iwarp-ddp-rdmap.c
@@ -31,8 +31,9 @@
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
-#include <stdlib.h>
+
#include <glib.h>
+
#include <epan/packet.h>
/* DEFINES */
diff --git a/epan/dissectors/packet-ixveriwave.c b/epan/dissectors/packet-ixveriwave.c
new file mode 100644
index 0000000000..a4897ce9e1
--- /dev/null
+++ b/epan/dissectors/packet-ixveriwave.c
@@ -0,0 +1,1510 @@
+/* packet-ixveriwave-common.c
+ * Routines for calling the right protocol for the ethertype.
+ *
+ * $Id$
+ *
+ * Tom Cook <tcook@ixiacom.com>
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+#include <epan/packet.h>
+#include <epan/crc32-tvb.h>
+
+#include "packet-eth.h"
+
+static void dissect_ixveriwave(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
+static void ethernettap_dissect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree *tap_tree);
+static void wlantap_dissect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree *tap_tree);
+
+typedef struct {
+ guint32 previous_frame_num;
+ guint64 previous_end_time;
+} frame_end_data;
+
+typedef struct ifg_info {
+ guint32 ifg;
+ guint64 previous_end_time;
+ guint64 current_start_time;
+} ifg_info;
+
+static frame_end_data previous_frame_data = {0,0};
+
+/* static int ieee80211_mhz2ieee(int freq, int flags); */
+
+#define COMMON_LENGTH_OFFSET 2
+#define ETHERNETTAP_VWF_TXF 0x01 /* frame was transmitted flag */
+#define ETHERNETTAP_VWF_FCSERR 0x02 /* frame has FCS error */
+
+#define VW_RADIOTAPF_TXF 0x01 /* frame was transmitted */
+#define VW_RADIOTAPF_FCSERR 0x02 /* FCS error detected */
+#define VW_RADIOTAPF_RETRERR 0x04 /* excess retry error detected */
+#define VW_RADIOTAPF_DCRERR 0x10 /* decrypt error detected */
+#define VW_RADIOTAPF_ENCMSK 0x60 /* encryption type mask */
+ /* 0 = none, 1 = WEP, 2 = TKIP, 3 = CCKM */
+#define VW_RADIOTAPF_ENCSHIFT 5 /* shift amount to right-align above field */
+#define VW_RADIOTAPF_IS_WEP 0x20 /* encryption type value = WEP */
+#define VW_RADIOTAPF_IS_TKIP 0x40 /* encryption type value = TKIP */
+#define VW_RADIOTAPF_IS_CCMP 0x60 /* encryption type value = CCMP */
+#define VW_RADIOTAPF_SEQ_ERR 0x80 /* flow sequence error detected */
+
+#define VW_RADIOTAP_FPGA_VER_vVW510021 0x000C /* vVW510021 version detected */
+#define VW_RADIOTAP_FPGA_VER_vVW510021_11n 0x000D
+
+#define IEEE80211_CHAN_CCK 0x00020 /* CCK channel */
+#define IEEE80211_CHAN_OFDM 0x00040 /* OFDM channel */
+#define IEEE80211_CHAN_2GHZ 0x00080 /* 2 GHz spectrum channel. */
+#define IEEE80211_CHAN_5GHZ 0x00100 /* 5 GHz spectrum channel */
+
+#define IEEE80211_RADIOTAP_F_FCS 0x0010 /* frame includes FCS */
+#define IEEE80211_RADIOTAP_F_DATAPAD 0x0020 /* frame has padding between
+ * 802.11 header and payload
+ * (to 32-bit boundary)
+ */
+#define IEEE80211_RADIOTAP_F_HT 0x0040 /* HT mode */
+#define IEEE80211_RADIOTAP_F_CFP 0x0001 /* sent/received
+ * during CFP
+ */
+#define IEEE80211_RADIOTAP_F_SHORTPRE 0x0002 /* sent/received
+ * with short
+ * preamble
+ */
+#define IEEE80211_RADIOTAP_F_WEP 0x0004 /* sent/received
+ * with WEP encryption
+ */
+#define IEEE80211_RADIOTAP_F_FRAG 0x0008 /* sent/received
+ * with fragmentation
+ */
+#define IEEE80211_PLCP_RATE_MASK 0x7f /* parses out the rate or MCS index from the PLCP header(s) */
+#define IEEE80211_RADIOTAP_F_40MHZ 0x0080 /* 40 Mhz channel bandwidth */
+#define IEEE80211_RADIOTAP_F_SHORTGI 0x0100
+
+#define ETHERNET_PORT 1
+#define WLAN_PORT 0
+
+static int proto_ixveriwave = -1;
+static dissector_handle_t ethernet_handle;
+
+/* static int hf_ixveriwave_version = -1; */
+static int hf_ixveriwave_frame_length = -1;
+
+/* static int hf_ixveriwave_fcs = -1; */
+
+static int hf_ixveriwave_vw_vcid = -1;
+static int hf_ixveriwave_vw_msdu_length = -1;
+static int hf_ixveriwave_vw_seqnum = -1;
+static int hf_ixveriwave_vw_flowid = -1;
+
+static int hf_ixveriwave_vw_mslatency = -1;
+static int hf_ixveriwave_vw_latency = -1;
+static int hf_ixveriwave_vw_pktdur = -1;
+static int hf_ixveriwave_vw_ifg = -1;
+static int hf_ixveriwave = -1;
+static int hf_ixveriwave_vw_startt = -1;
+static int hf_ixveriwave_vw_endt = -1;
+
+static gint ett_commontap = -1;
+static gint ett_commontap_times = -1;
+static gint ett_ethernettap_info = -1;
+static gint ett_ethernettap_error = -1;
+static gint ett_ethernettap_flags = -1;
+
+/* static gint ett_radiotap = -1;
+static gint ett_radiotap_present = -1;
+*/
+static gint ett_radiotap_flags = -1;
+/* static gint ett_radiotap_channel_flags = -1; */
+
+static dissector_handle_t ieee80211_handle;
+static dissector_handle_t ieee80211_datapad_handle;
+
+/* Ethernet fields */
+static int hf_ixveriwave_vw_info = -1;
+static int hf_ixveriwave_vw_error = -1;
+
+static int hf_ixveriwave_vwf_txf = -1;
+static int hf_ixveriwave_vwf_fcserr = -1;
+
+static int hf_ixveriwave_vw_l4id = -1;
+
+/*veriwave note: i know the below method seems clunky, but
+they didn't have a item_format at the time to dynamically add the appropriate decode text*/
+static int hf_ixveriwave_vw_info_retryCount = -1;
+static int hf_ixveriwave_vw_info_tx_bit15 = -1;
+
+static int hf_ixveriwave_vw_info_rx_1_bit8 = -1;
+static int hf_ixveriwave_vw_info_rx_1_bit9 = -1;
+
+/*error flags*/
+static int hf_ixveriwave_vw_error_tx_bit1 = -1;
+static int hf_ixveriwave_vw_error_tx_bit5 = -1;
+static int hf_ixveriwave_vw_error_tx_bit9 = -1;
+static int hf_ixveriwave_vw_error_tx_bit10 = -1;
+static int hf_ixveriwave_vw_error_tx_bit11 = -1;
+
+static int hf_ixveriwave_vw_error_rx_1_bit0 = -1;
+static int hf_ixveriwave_vw_error_rx_1_bit1 = -1;
+static int hf_ixveriwave_vw_error_rx_1_bit2 = -1;
+static int hf_ixveriwave_vw_error_rx_1_bit3 = -1;
+static int hf_ixveriwave_vw_error_rx_1_bit4 = -1;
+static int hf_ixveriwave_vw_error_rx_1_bit5 = -1;
+static int hf_ixveriwave_vw_error_rx_1_bit6 = -1;
+static int hf_ixveriwave_vw_error_rx_1_bit7 = -1;
+static int hf_ixveriwave_vw_error_rx_1_bit8 = -1;
+static int hf_ixveriwave_vw_error_rx_1_bit9 = -1;
+
+static int hf_radiotap_flags = -1;
+static int hf_radiotap_datarate = -1;
+static int hf_radiotap_dbm_antsignal = -1;
+static int hf_radiotap_txpower = -1;
+static int hf_radiotap_fcs_bad = -1;
+
+static int hf_radiotap_flags_cfp = -1;
+static int hf_radiotap_flags_preamble = -1;
+static int hf_radiotap_flags_wep = -1;
+static int hf_radiotap_flags_frag = -1;
+static int hf_radiotap_flags_fcs = -1;
+static int hf_radiotap_flags_datapad = -1;
+static int hf_radiotap_flags_ht = -1;
+static int hf_radiotap_flags_40mhz = -1;
+static int hf_radiotap_flags_shortgi = -1;
+
+/* start VeriWave specific 6-2007*/
+static int hf_radiotap_vw_errors = -1;
+static int hf_radiotap_vw_info = -1;
+static int hf_radiotap_vw_ht_length = -1;
+
+static int hf_radiotap_vw_info_tx_bit10 = -1;
+static int hf_radiotap_vw_info_tx_bit11 = -1;
+static int hf_radiotap_vw_info_tx_bit12 = -1;
+static int hf_radiotap_vw_info_tx_bit13 = -1;
+static int hf_radiotap_vw_info_tx_bit14 = -1;
+static int hf_radiotap_vw_info_tx_bit15 = -1;
+
+static int hf_radiotap_vw_info_rx_2_bit8 = -1;
+static int hf_radiotap_vw_info_rx_2_bit9 = -1;
+static int hf_radiotap_vw_info_rx_2_bit10 = -1;
+static int hf_radiotap_vw_info_rx_2_bit11 = -1;
+static int hf_radiotap_vw_info_rx_2_bit12 = -1;
+static int hf_radiotap_vw_info_rx_2_bit13 = -1;
+static int hf_radiotap_vw_info_rx_2_bit14 = -1;
+static int hf_radiotap_vw_info_rx_2_bit15 = -1;
+
+static int hf_radiotap_vw_errors_rx_1_bit0 = -1;
+static int hf_radiotap_vw_errors_rx_1_bit1 = -1;
+static int hf_radiotap_vw_errors_rx_1_bit2 = -1;
+static int hf_radiotap_vw_errors_rx_1_bit3 = -1;
+static int hf_radiotap_vw_errors_rx_1_bit4 = -1;
+static int hf_radiotap_vw_errors_rx_1_bit5 = -1;
+static int hf_radiotap_vw_errors_rx_1_bit6 = -1;
+static int hf_radiotap_vw_errors_rx_1_bit7 = -1;
+static int hf_radiotap_vw_errors_rx_1_bit8 = -1;
+static int hf_radiotap_vw_errors_rx_1_bit9 = -1;
+static int hf_radiotap_vw_errors_rx_1_bit10 = -1;
+static int hf_radiotap_vw_errors_rx_1_bit11 = -1;
+static int hf_radiotap_vw_errors_rx_1_bit12 = -1;
+static int hf_radiotap_vw_errors_rx_1_bit13 = -1;
+static int hf_radiotap_vw_errors_rx_1_bit14 = -1;
+static int hf_radiotap_vw_errors_rx_1_bit15 = -1;
+
+static int hf_radiotap_vw_errors_rx_2_bit0 = -1;
+static int hf_radiotap_vw_errors_rx_2_bit1 = -1;
+static int hf_radiotap_vw_errors_rx_2_bit2 = -1;
+static int hf_radiotap_vw_errors_rx_2_bit4 = -1;
+static int hf_radiotap_vw_errors_rx_2_bit5 = -1;
+static int hf_radiotap_vw_errors_rx_2_bit6 = -1;
+static int hf_radiotap_vw_errors_rx_2_bit7 = -1;
+static int hf_radiotap_vw_errors_rx_2_bit8 = -1;
+static int hf_radiotap_vw_errors_rx_2_bit10 = -1;
+static int hf_radiotap_vw_errors_rx_2_bit11 = -1;
+
+static int hf_radiotap_vw_errors_tx_bit1 = -1;
+static int hf_radiotap_vw_errors_tx_bit5 = -1;
+
+static int hf_radiotap_vwf_txf = -1;
+static int hf_radiotap_vwf_fcserr = -1;
+static int hf_radiotap_vwf_dcrerr = -1;
+static int hf_radiotap_vwf_retrerr = -1;
+static int hf_radiotap_vwf_enctype = -1;
+
+static gint ett_radiotap_info = -1;
+static gint ett_radiotap_errors = -1;
+static gint ett_radiotap_times = -1;
+
+#define ALIGN_OFFSET(offset, width) \
+ ( (((offset) + ((width) - 1)) & (~((width) - 1))) - offset )
+
+/* Conversion of MCS index, guard interval, channel bandwidth to HT rate */
+static int canonical_ndbps_20[] = {26, 52, 78, 104, 156, 208, 234, 260};
+static int canonical_ndbps_40[] = {54, 108, 162, 216, 324, 432, 486, 540};
+static float getHTrate( guint8 rate, guint8 rflags );
+
+static void
+dissect_ixveriwave(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ proto_tree *common_tree = NULL;
+ proto_item *ti = NULL;
+ proto_item *vw_times_ti = NULL;
+ proto_tree *vw_times_tree = NULL;
+ int align_offset, offset, time_tree_offset=0;
+ guint16 version, length;
+ guint length_remaining;
+ guint64 vw_startt=0, vw_endt=0;
+ guint32 true_length;
+ guint32 vw_latency, vw_pktdur, vw_flowid;
+ guint16 vw_vcid, vw_msdu_length, vw_seqnum;
+ tvbuff_t *next_tvb;
+ ifg_info *p_ifg_info;
+
+ offset = 0;
+ version = tvb_get_letohs(tvb, offset);
+
+ length = tvb_get_letohs(tvb, offset + COMMON_LENGTH_OFFSET);
+
+ col_add_fstr(pinfo->cinfo, COL_PROTOCOL, "%s", version ? "ETH" : "WLAN");
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ true_length = pinfo->fd->pkt_len - length - tvb_get_letohs(tvb, offset + length) + 4; /* add FCS length into captured length */
+
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s Capture, Length %u",
+ version ? "IxVeriWave Ethernet Tap" : "IxVeriWave Radio Tap", length);
+
+ /* Dissect the packet */
+ if (tree) {
+ ti = proto_tree_add_protocol_format(tree, proto_ixveriwave,
+ tvb, 0, length, "%s Header, Length %u", version ? "IxVeriWave Ethernet Tap" : "IxVeriWave Radio Tap", length);
+
+ common_tree = proto_item_add_subtree(ti, ett_commontap);
+
+ proto_tree_add_uint(common_tree, hf_ixveriwave_frame_length,
+ tvb, 4, 2, true_length);
+ }
+
+ length_remaining = length;
+
+ offset+=4;
+ length_remaining-=4;
+
+ /*extract msdu/octets , 2bytes*/
+ align_offset = ALIGN_OFFSET(offset, 2);
+ offset += align_offset;
+ length_remaining -= align_offset;
+
+ if (length_remaining >= 2) {
+
+ vw_msdu_length = tvb_get_letohs(tvb, offset);
+ if (tree) {
+ proto_tree_add_uint(common_tree, hf_ixveriwave_vw_msdu_length,
+ tvb, offset, 2, vw_msdu_length);
+ }
+
+ offset+=2;
+ length_remaining-=2;
+ }
+
+ /*extract flow id , 4bytes*/
+ if (length_remaining >= 4) {
+ align_offset = ALIGN_OFFSET(offset, 4);
+ offset += align_offset;
+ length_remaining -= align_offset;
+
+ vw_flowid = tvb_get_letohl(tvb, offset);
+ if (tree) {
+ proto_tree_add_uint(common_tree, hf_ixveriwave_vw_flowid,
+ tvb, offset, 4, vw_flowid);
+ }
+
+ offset+=4;
+ length_remaining-=4;
+ }
+
+ /*extract client id, 2bytes*/
+ if (length_remaining >= 2) {
+ align_offset = ALIGN_OFFSET(offset, 2);
+ offset += align_offset;
+ length_remaining -= align_offset;
+
+ vw_vcid = tvb_get_letohs(tvb, offset);
+ if (tree) {
+ proto_tree_add_uint(common_tree, hf_ixveriwave_vw_vcid,
+ tvb, offset, 2, vw_vcid);
+ }
+
+ offset+=2;
+ length_remaining-=2;
+ }
+
+ /*extract sequence number , 2bytes*/
+ if (length_remaining >= 2) {
+
+ vw_seqnum = tvb_get_letohs(tvb, offset);
+ if (tree) {
+ proto_tree_add_uint(common_tree, hf_ixveriwave_vw_seqnum,
+ tvb, offset, 2, vw_seqnum);
+ }
+
+ offset+=2;
+ length_remaining-=2;
+ }
+
+ /*extract latency, 4 bytes*/
+ if (length_remaining >= 4) {
+ align_offset = ALIGN_OFFSET(offset, 4);
+ offset += align_offset;
+ length_remaining -= align_offset;
+ vw_latency = tvb_get_letohl(tvb, offset);
+
+ if (tree) {
+ /* start a tree going for the various packet times */
+ if (vw_latency != 0) {
+ vw_times_ti = proto_tree_add_float_format(common_tree,
+ hf_ixveriwave_vw_mslatency,
+ tvb, offset, 4, (float)(vw_latency/1000000.0),
+ "Frame timestamp values: (latency %.3f msec)",
+ (float)(vw_latency/1000000.0));
+ vw_times_tree = proto_item_add_subtree(vw_times_ti, ett_commontap_times);
+
+ proto_tree_add_uint_format(vw_times_tree, hf_ixveriwave_vw_latency,
+ tvb, offset, 4, vw_latency,
+ "Frame latency: %u nsec", vw_latency);
+ }
+ else
+ {
+ vw_times_ti = proto_tree_add_float_format(common_tree,
+ hf_ixveriwave_vw_mslatency,
+ tvb, offset, 4, (float)(vw_latency/1000000.0),
+ "Frame timestamp values:");
+ vw_times_tree = proto_item_add_subtree(vw_times_ti, ett_commontap_times);
+
+ proto_tree_add_uint_format(vw_times_tree, hf_ixveriwave_vw_latency,
+ tvb, offset, 4, vw_latency,
+ "Frame latency: N/A");
+ }
+ }
+
+ offset+=4;
+ length_remaining-=4;
+ }
+
+
+
+ /*extract signature timestamp, 4 bytes (32 LSBs only, nsec)*/
+ if (length_remaining >= 4) {
+ align_offset = ALIGN_OFFSET(offset, 4);
+ offset += align_offset;
+ length_remaining -= align_offset;
+
+ if (tree) {
+ if (vw_times_tree != NULL) {
+ /* TODO: what should this fieldname be? */
+ proto_tree_add_item(vw_times_tree, hf_ixveriwave,
+ tvb, offset, 4, ENC_BIG_ENDIAN);
+ }
+ }
+ time_tree_offset = offset;
+ offset+=4;
+ length_remaining-=4;
+ }
+
+ /*extract frame start timestamp, 8 bytes (nsec)*/
+ if (length_remaining >= 8) {
+ align_offset = ALIGN_OFFSET(offset, 8);
+ offset += align_offset;
+ length_remaining -= align_offset;
+ vw_startt = tvb_get_letoh64(tvb, offset);
+
+ if (tree) {
+ if (vw_times_tree != NULL) {
+ proto_tree_add_uint64_format(vw_times_tree, hf_ixveriwave_vw_startt,
+ tvb, offset, 8, vw_startt,
+ "Frame start timestamp: %" G_GINT64_MODIFIER "u usec", vw_startt);
+ }
+ }
+
+ offset+=8;
+ length_remaining-=8;
+ }
+
+ /*extract frame end timestamp, 8 bytes (nsec)*/
+ if (length_remaining >= 8) {
+ align_offset = ALIGN_OFFSET(offset, 8);
+ offset += align_offset;
+ length_remaining -= align_offset;
+ vw_endt = tvb_get_letoh64(tvb, offset);
+
+ if (tree) {
+ if (vw_times_tree != NULL) {
+ proto_tree_add_uint64_format(vw_times_tree, hf_ixveriwave_vw_endt,
+ tvb, offset, 8, vw_endt,
+ "Frame end timestamp: %" G_GINT64_MODIFIER "u usec", vw_endt);
+ }
+ }
+
+ offset+=8;
+ length_remaining-=8;
+ }
+ /*extract frame duration , 4 bytes*/
+ if (length_remaining >= 4) {
+ align_offset = ALIGN_OFFSET(offset, 4);
+ offset += align_offset;
+ vw_pktdur = tvb_get_letohl(tvb, offset);
+
+ if (tree) {
+ if (vw_times_tree != NULL) {
+ proto_item *duration_ti;
+ if (vw_endt >= vw_startt) {
+ duration_ti = proto_tree_add_uint_format(vw_times_tree, hf_ixveriwave_vw_pktdur,
+ tvb, offset-16, 16, vw_pktdur,
+ "Frame duration: %u nsec", vw_pktdur);
+
+ /* Add to root summary */
+ proto_item_append_text(vw_times_ti, " (Frame duration=%u nsecs)", vw_pktdur);
+ }
+ else {
+ duration_ti = proto_tree_add_uint_format(vw_times_tree, hf_ixveriwave_vw_pktdur,
+ tvb, offset, 0, vw_pktdur,
+ "Frame duration: N/A");
+
+ /* Add to root summary */
+ proto_item_append_text(vw_times_ti, " (Frame duration=N/A)");
+ }
+
+ PROTO_ITEM_SET_GENERATED(duration_ti);
+ }
+ }
+
+ offset+=4;
+ }
+
+ if (vw_times_ti) {
+ proto_item_set_len(vw_times_ti, offset-time_tree_offset);
+ }
+
+ /* Calculate the IFG */
+
+ /* Check for an existing ifg value associated with the frame */
+ p_ifg_info = p_get_proto_data(pinfo->fd, proto_ixveriwave);
+ if (!p_ifg_info)
+ {
+ /* allocate the space */
+ p_ifg_info = se_alloc0(sizeof(struct ifg_info));
+
+ /* Doesn't exist, so we need to calculate the value */
+ if (previous_frame_data.previous_frame_num !=0 && (pinfo->fd->num - previous_frame_data.previous_frame_num == 1))
+ {
+ p_ifg_info->ifg = (guint32)(vw_startt - previous_frame_data.previous_end_time);
+ p_ifg_info->previous_end_time = previous_frame_data.previous_end_time;
+ }
+ else
+ {
+ p_ifg_info->ifg = 0;
+ p_ifg_info->previous_end_time = 0;
+ }
+
+ /* Store current data into the static structure */
+ previous_frame_data.previous_end_time = vw_endt;
+ previous_frame_data.previous_frame_num = pinfo->fd->num;
+
+ /* Record the current start time */
+ p_ifg_info->current_start_time = vw_startt;
+
+ /* Add the ifg onto the frame */
+ p_add_proto_data(pinfo->fd, proto_ixveriwave, p_ifg_info);
+ }
+
+ if (tree) {
+ ti = proto_tree_add_uint(common_tree, hf_ixveriwave_vw_ifg,
+ tvb, offset, 0, p_ifg_info->ifg);
+ PROTO_ITEM_SET_GENERATED(ti);
+ }
+
+ /* Grab the rest of the frame. */
+ next_tvb = tvb_new_subset(tvb, length, -1, -1);
+
+ /* dissect the ethernet or wlan header next */
+ if (version == ETHERNET_PORT)
+ ethernettap_dissect(next_tvb, pinfo, tree, common_tree);
+ else
+ wlantap_dissect(next_tvb, pinfo, tree, common_tree);
+}
+
+/*
+ * Returns the amount required to align "offset" with "width"
+ */
+#define ALIGN_OFFSET(offset, width) \
+ ( (((offset) + ((width) - 1)) & (~((width) - 1))) - offset )
+
+static void
+ethernettap_dissect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree *tap_tree)
+{
+ proto_tree *vweft, *vw_errorFlags_tree = NULL, *vwift,*vw_infoFlags_tree = NULL;
+ int align_offset, offset;
+ tvbuff_t *next_tvb;
+ guint length, length_remaining;
+ guint16 vw_flags, vw_info;
+ guint16 vw_l4id;
+ guint32 vw_error;
+ gint32 vwf_txf, vwf_fcserr;
+
+ vwf_txf = 0;
+
+ offset = 0;
+
+ length = tvb_get_letohs(tvb, offset);
+ length_remaining = length;
+
+ offset += 2;
+ length_remaining -= 2;
+
+ /* extract flags (currently use only TX/RX and FCS error flag) */
+ if (length >= 2) {
+ align_offset = ALIGN_OFFSET(offset, 2);
+ offset += align_offset;
+ length_remaining -= align_offset;
+ vw_flags = tvb_get_letohs(tvb, offset);
+ vwf_txf = ((vw_flags & ETHERNETTAP_VWF_TXF) == 0) ? 0 : 1;
+ vwf_fcserr = ((vw_flags & ETHERNETTAP_VWF_FCSERR) == 0) ? 0 : 1;
+
+ if (tap_tree) {
+ proto_tree_add_uint(tap_tree, hf_ixveriwave_vwf_txf,
+ tvb, 0, 0, vwf_txf);
+ proto_tree_add_uint(tap_tree, hf_ixveriwave_vwf_fcserr,
+ tvb, 0, 0, vwf_fcserr);
+ }
+
+ offset += 2;
+ length_remaining -= 2;
+ }
+
+ /*extract info flags , 2bytes*/
+
+ if (length_remaining >= 2) {
+ vw_info = tvb_get_letohs(tvb, offset);
+
+ if (tap_tree) {
+ vwift = proto_tree_add_uint(tap_tree, hf_ixveriwave_vw_info,
+ tvb, offset, 2, vw_info);
+ vw_infoFlags_tree = proto_item_add_subtree(vwift, ett_ethernettap_info);
+
+ if (vwf_txf == 0) {
+ /* then it's an rx case */
+ proto_tree_add_item(vw_infoFlags_tree, hf_ixveriwave_vw_info_rx_1_bit8,
+ tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_infoFlags_tree, hf_ixveriwave_vw_info_rx_1_bit9,
+ tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ } else {
+ /* it's a tx case */
+ proto_tree_add_uint_format(vw_infoFlags_tree, hf_ixveriwave_vw_info_retryCount,
+ tvb, offset, 2, vw_info,
+ "Retry count: %u ", vw_info);
+ }
+ } /*end of if tree */
+
+ offset+=2;
+ length_remaining-=2;
+ }
+
+ /*extract error , 4bytes*/
+ if (length_remaining >= 4) {
+ vw_error = tvb_get_letohl(tvb, offset);
+
+ if (tap_tree) {
+ vweft = proto_tree_add_uint(tap_tree, hf_ixveriwave_vw_error,
+ tvb, offset, 4, vw_error);
+ vw_errorFlags_tree = proto_item_add_subtree(vweft, ett_ethernettap_error);
+
+ if (vwf_txf == 0) {
+ /* then it's an rx case */
+ proto_tree_add_item(vw_errorFlags_tree, hf_ixveriwave_vw_error_rx_1_bit0,
+ tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_errorFlags_tree, hf_ixveriwave_vw_error_rx_1_bit1,
+ tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_errorFlags_tree, hf_ixveriwave_vw_error_rx_1_bit2,
+ tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_errorFlags_tree, hf_ixveriwave_vw_error_rx_1_bit3,
+ tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_errorFlags_tree, hf_ixveriwave_vw_error_rx_1_bit4,
+ tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_errorFlags_tree, hf_ixveriwave_vw_error_rx_1_bit5,
+ tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_errorFlags_tree, hf_ixveriwave_vw_error_rx_1_bit6,
+ tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_errorFlags_tree, hf_ixveriwave_vw_error_rx_1_bit7,
+ tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_errorFlags_tree, hf_ixveriwave_vw_error_rx_1_bit8,
+ tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_errorFlags_tree, hf_ixveriwave_vw_error_rx_1_bit9,
+ tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ } else {
+ /* it's a tx case */
+ proto_tree_add_item(vw_errorFlags_tree, hf_ixveriwave_vw_error_tx_bit1,
+ tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_errorFlags_tree, hf_ixveriwave_vw_error_tx_bit5,
+ tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_errorFlags_tree, hf_ixveriwave_vw_error_tx_bit9,
+ tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_errorFlags_tree, hf_ixveriwave_vw_error_tx_bit10,
+ tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_errorFlags_tree, hf_ixveriwave_vw_error_tx_bit11,
+ tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ }
+ } /*end of if (tree) */
+
+ offset+=4;
+ length_remaining-=4;
+ }
+ /*extract l4id , 4bytes*/
+ if (length_remaining >= 4) {
+ vw_l4id = tvb_get_letohl(tvb, offset);
+ if (tap_tree) {
+ proto_tree_add_uint(tap_tree, hf_ixveriwave_vw_l4id,
+ tvb, offset, 4, vw_l4id);
+ }
+ offset+=4;
+ length_remaining-=4;
+ }
+
+ /*extract pad, 4bytes*/
+ if (length_remaining >= 4) {
+ tvb_get_letohl(tvb, offset); /* throw away pad */
+ }
+
+ /* Grab the rest of the frame. */
+ next_tvb = tvb_new_subset(tvb, length, -1, -1);
+
+ /* dissect the ethernet header next */
+ call_dissector(ethernet_handle, next_tvb, pinfo, tree);
+}
+
+static void
+wlantap_dissect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree *tap_tree)
+{
+ proto_tree *ft, *flags_tree = NULL;
+ proto_item *hdr_fcs_ti = NULL;
+ int align_offset, offset;
+ guint32 calc_fcs;
+ tvbuff_t *next_tvb;
+ guint length;
+ guint32 rate;
+ gint8 dbm;
+ guint8 rflags=0;
+
+ proto_tree *vweft, *vw_errorFlags_tree = NULL, *vwift,*vw_infoFlags_tree = NULL;
+ guint16 vw_flags, vw_info, vw_ht_length, vw_rflags;
+ guint32 vw_errors;
+ gint8 tx_power;
+ float ht_rate;
+
+ offset = 0;
+ length = tvb_get_letohs(tvb, offset);
+
+ offset += 2;
+
+ vw_rflags = tvb_get_letohs(tvb, offset);
+ if (tree) {
+ ft = proto_tree_add_uint(tap_tree, hf_radiotap_flags,
+ tvb, offset, 2, vw_rflags);
+ flags_tree = proto_item_add_subtree(ft, ett_radiotap_flags);
+ proto_tree_add_boolean(flags_tree, hf_radiotap_flags_cfp,
+ tvb, offset, 2, vw_rflags);
+ proto_tree_add_boolean(flags_tree, hf_radiotap_flags_preamble,
+ tvb, offset, 2, vw_rflags);
+ proto_tree_add_boolean(flags_tree, hf_radiotap_flags_wep,
+ tvb, offset, 2, vw_rflags);
+ proto_tree_add_boolean(flags_tree, hf_radiotap_flags_frag,
+ tvb, offset, 2, vw_rflags);
+ proto_tree_add_boolean(flags_tree, hf_radiotap_flags_fcs,
+ tvb, offset, 2, vw_rflags);
+ proto_tree_add_boolean(flags_tree, hf_radiotap_flags_datapad,
+ tvb, offset, 2, vw_rflags);
+ if ( vw_rflags & IEEE80211_RADIOTAP_F_HT ) {
+ proto_tree_add_boolean(flags_tree, hf_radiotap_flags_ht,
+ tvb, offset, 2, vw_rflags);
+ proto_tree_add_boolean(flags_tree, hf_radiotap_flags_40mhz,
+ tvb, offset, 2, vw_rflags);
+ proto_tree_add_boolean(flags_tree, hf_radiotap_flags_shortgi,
+ tvb, offset, 2, vw_rflags);
+ }
+ }
+ offset+=2;
+
+ /* Need to add in 2 more bytes to the offset to account for the channel flags */
+ offset+=2;
+
+ rate = tvb_get_guint8(tvb, offset);
+ if (vw_rflags & IEEE80211_RADIOTAP_F_HT) {
+ ht_rate = getHTrate( rate, rflags );
+ col_add_fstr(pinfo->cinfo, COL_TX_RATE, "%.1f",
+ ht_rate);
+ if (tree) {
+ proto_tree_add_uint_format(tap_tree, hf_radiotap_datarate,
+ tvb, offset, 1, tvb_get_guint8(tvb, offset),
+ "Data rate: %.1f (MCS %d)", ht_rate, rate & IEEE80211_PLCP_RATE_MASK);
+ }
+ } else {
+ col_add_fstr(pinfo->cinfo, COL_TX_RATE, "%d.%d",
+ (rate & IEEE80211_PLCP_RATE_MASK)/ 2, rate & 1 ? 5 : 0);
+ if (tree) {
+ proto_tree_add_uint_format(tap_tree, hf_radiotap_datarate,
+ tvb, offset, 1, tvb_get_guint8(tvb, offset),
+ "Data rate: %d.%d Mb/s", (rate & IEEE80211_PLCP_RATE_MASK)/ 2,
+ (rate & IEEE80211_PLCP_RATE_MASK) & 1 ? 5 : 0);
+ }
+ }
+ offset++;
+
+ dbm = (gint8) tvb_get_guint8(tvb, offset);
+ offset++;
+
+ tx_power = (gint8)tvb_get_guint8(tvb, offset);
+ if (dbm != 100)
+ {
+ col_add_fstr(pinfo->cinfo, COL_RSSI, "%d dBm", dbm);
+ if (tree) {
+ proto_tree_add_int_format(tap_tree,
+ hf_radiotap_dbm_antsignal,
+ tvb, offset, 1, dbm,
+ "RX SSI signal: %d dBm", dbm);
+ }
+ }
+ else if (tx_power != 100)
+ {
+ col_add_fstr(pinfo->cinfo, COL_RSSI, "%d dBm", tx_power);
+ if (tree) {
+ proto_tree_add_int_format(tap_tree,
+ hf_radiotap_txpower,
+ tvb, offset, 1, tx_power,
+ "Transmit power (TX): %d ", tx_power);
+ }
+ }
+ offset+=2;
+
+ vw_flags = tvb_get_letohs(tvb, offset);
+
+ if (tree) {
+ proto_tree_add_uint(tap_tree, hf_radiotap_vwf_txf,
+ tvb, offset, 2, (vw_flags & VW_RADIOTAPF_TXF) != 0);
+ proto_tree_add_uint(tap_tree, hf_radiotap_vwf_fcserr,
+ tvb, offset, 2, (vw_flags & VW_RADIOTAPF_FCSERR) != 0);
+ proto_tree_add_uint(tap_tree, hf_radiotap_vwf_dcrerr,
+ tvb, offset, 2, (vw_flags & VW_RADIOTAPF_DCRERR) != 0);
+ proto_tree_add_uint(tap_tree, hf_radiotap_vwf_retrerr,
+ tvb, offset, 2, (vw_flags & VW_RADIOTAPF_RETRERR) != 0);
+ proto_tree_add_uint(tap_tree, hf_radiotap_vwf_enctype,
+ tvb, offset, 2, (vw_flags & VW_RADIOTAPF_ENCMSK) >>
+ VW_RADIOTAPF_ENCSHIFT);
+ }
+
+ offset+=2;
+
+ align_offset = ALIGN_OFFSET(offset, 2);
+ offset += align_offset;
+
+ vw_ht_length = tvb_get_letohs(tvb, offset);
+ if ((tree) && (vw_ht_length != 0)) {
+ proto_tree_add_uint_format(tap_tree, hf_radiotap_vw_ht_length,
+ tvb, offset, 2, vw_ht_length, "HT length: %u (includes the sum of the pieces of the aggregate and their respective Start_Spacing + Delimiter + MPDU + Padding)",
+ vw_ht_length);
+ }
+ offset+=2;
+
+ align_offset = ALIGN_OFFSET(offset, 2);
+ offset += align_offset;
+
+ vw_info = tvb_get_letohs(tvb, offset);
+
+ if (tree) {
+ vwift = proto_tree_add_uint(tap_tree, hf_radiotap_vw_info,
+ tvb, offset, 2, vw_info);
+ vw_infoFlags_tree = proto_item_add_subtree(vwift, ett_radiotap_info);
+
+ if (tx_power == 0) { /* then it's an rx case */
+ /*FPGA_VER_vVW510021 version decodes */
+
+ proto_tree_add_item(vw_infoFlags_tree,
+ hf_radiotap_vw_info_rx_2_bit8, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_infoFlags_tree,
+ hf_radiotap_vw_info_rx_2_bit9, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_infoFlags_tree,
+ hf_radiotap_vw_info_rx_2_bit10, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_infoFlags_tree,
+ hf_radiotap_vw_info_rx_2_bit11, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_infoFlags_tree,
+ hf_radiotap_vw_info_rx_2_bit12, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_infoFlags_tree,
+ hf_radiotap_vw_info_rx_2_bit13, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_infoFlags_tree,
+ hf_radiotap_vw_info_rx_2_bit14, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_infoFlags_tree,
+ hf_radiotap_vw_info_rx_2_bit15, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ } else { /* it's a tx case */
+ /* FPGA_VER_vVW510021 and VW_FPGA_VER_vVW510006 tx info decodes same*/
+ proto_tree_add_item(vw_infoFlags_tree,
+ hf_radiotap_vw_info_tx_bit10, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_infoFlags_tree,
+ hf_radiotap_vw_info_tx_bit11, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_infoFlags_tree,
+ hf_radiotap_vw_info_tx_bit12, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_infoFlags_tree,
+ hf_radiotap_vw_info_tx_bit13, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_infoFlags_tree,
+ hf_radiotap_vw_info_tx_bit14, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_infoFlags_tree,
+ hf_radiotap_vw_info_tx_bit15, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ }
+ }
+
+ offset+=2;
+
+ align_offset = ALIGN_OFFSET(offset, 4);
+ offset += align_offset;
+
+ vw_errors = tvb_get_letohl(tvb, offset);
+
+ if (tree) {
+ vweft = proto_tree_add_uint(tap_tree, hf_radiotap_vw_errors,
+ tvb, offset, 4, vw_errors);
+ vw_errorFlags_tree = proto_item_add_subtree(vweft,
+ ett_radiotap_errors);
+
+ /* build the individual subtrees for the various types of error flags */
+ /* NOTE: as the upper 16 bits aren't used at the moment, we pretend that */
+ /* the error flags field is only 16 bits (instead of 32) to save space */
+ if (tx_power == 0) {
+ /* then it's an rx case */
+
+ /*FPGA_VER_vVW510021 version decodes */
+ proto_tree_add_item(vw_errorFlags_tree,
+ hf_radiotap_vw_errors_rx_2_bit0, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_errorFlags_tree,
+ hf_radiotap_vw_errors_rx_2_bit1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_errorFlags_tree,
+ hf_radiotap_vw_errors_rx_2_bit2, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+
+ /* veriwave removed 8-2007, don't display reserved bit*/
+
+ proto_tree_add_item(vw_errorFlags_tree,
+ hf_radiotap_vw_errors_rx_2_bit4, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_errorFlags_tree,
+ hf_radiotap_vw_errors_rx_2_bit5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_errorFlags_tree,
+ hf_radiotap_vw_errors_rx_2_bit6, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_errorFlags_tree,
+ hf_radiotap_vw_errors_rx_2_bit7, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_errorFlags_tree,
+ hf_radiotap_vw_errors_rx_2_bit8, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+
+ proto_tree_add_item(vw_errorFlags_tree,
+ hf_radiotap_vw_errors_rx_2_bit10, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(vw_errorFlags_tree,
+ hf_radiotap_vw_errors_rx_2_bit11, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+
+ } else { /* it's a tx case */
+ /* FPGA_VER_vVW510021 and VW_FPGA_VER_vVW510006 tx error decodes same*/
+
+ proto_tree_add_item(vw_errorFlags_tree,
+ hf_radiotap_vw_errors_tx_bit1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+
+ proto_tree_add_item(vw_errorFlags_tree,
+ hf_radiotap_vw_errors_tx_bit5, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+
+ }
+ }
+
+ /* This handles the case of an FCS existing at the end of the frame. */
+ if (rflags & IEEE80211_RADIOTAP_F_FCS)
+ pinfo->pseudo_header->ieee_802_11.fcs_len = 4;
+ else
+ pinfo->pseudo_header->ieee_802_11.fcs_len = 0;
+
+ /* Grab the rest of the frame. */
+ next_tvb = tvb_new_subset(tvb, length, -1, -1);
+
+ /* If we had an in-header FCS, check it. */
+ if (hdr_fcs_ti) {
+ /* It would be very strange for the header to have an FCS for the
+ * frame *and* the frame to have the FCS at the end, but it's possible, so
+ * take that into account by using the FCS length recorded in pinfo. */
+
+ /* Watch out for [erroneously] short frames */
+ if (tvb_length(next_tvb) > (unsigned int) pinfo->pseudo_header->ieee_802_11.fcs_len) {
+ guint32 sent_fcs = 0;
+ calc_fcs = crc32_802_tvb(next_tvb,
+ tvb_length(next_tvb) - pinfo->pseudo_header->ieee_802_11.fcs_len);
+
+ /* By virtue of hdr_fcs_ti being set, we know that 'tree' is set,
+ * so there's no need to check it here. */
+ if (calc_fcs == sent_fcs) {
+ proto_item_append_text(hdr_fcs_ti, " [correct]");
+ }
+ else {
+ proto_item_append_text(hdr_fcs_ti, " [incorrect, should be 0x%08x]", calc_fcs);
+ proto_tree_add_boolean(tap_tree, hf_radiotap_fcs_bad,
+ tvb, 0, 4, TRUE);
+ }
+ }
+ else {
+ proto_item_append_text(hdr_fcs_ti,
+ " [cannot verify - not enough data]");
+ }
+ }
+
+ /* dissect the 802.11 header next */
+ call_dissector((rflags & IEEE80211_RADIOTAP_F_DATAPAD) ?
+ ieee80211_datapad_handle : ieee80211_handle,
+ next_tvb, pinfo, tree);
+}
+
+void proto_register_ixveriwave(void)
+{
+ /* value_strings for TX/RX and FCS error flags */
+ static const value_string tx_rx_type[] = {
+ { 0, "Received" },
+ { 1, "Transmitted" },
+ { 0, NULL },
+ };
+
+ static const value_string fcserr_type[] = {
+ { 0, "Correct" },
+ { 1, "Incorrect" },
+ { 0, NULL },
+ };
+
+ static const true_false_string preamble_type = {
+ "Short",
+ "Long",
+ };
+
+ /* Added value_string for decrypt error flag */
+ static const value_string decrypterr_type[] = {
+ { 0, "Decrypt Succeeded" },
+ { 1, "Decrypt Failed" },
+ { 0, NULL },
+ };
+
+ /* Added value_string for excess retry error flag */
+ static const value_string retryerr_type[] = {
+ { 0, "Retry limit not reached" },
+ { 1, "Excess retry abort" },
+ { 0, NULL },
+ };
+
+ /* Added value_string for encryption type field */
+ static const value_string encrypt_type[] = {
+ { 0, "No encryption" },
+ { 1, "WEP encryption" },
+ { 2, "TKIP encryption" },
+ { 3, "AES-CCMP encryption" },
+ { 0, NULL },
+ };
+
+ static hf_register_info hf[] = {
+ { &hf_ixveriwave_frame_length,
+ { "Actual frame length", "ixveriwave.frame_length",
+ FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+
+ { &hf_ixveriwave_vw_msdu_length,
+ { "MSDU length", "ixveriwave.msdu_length",
+ FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+
+ { &hf_ixveriwave_vw_vcid,
+ { "Client ID", "ixveriwave.clientid",
+ FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+
+ { &hf_ixveriwave_vw_flowid,
+ { "Flow ID", "ixveriwave.flowid",
+ FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+
+ { &hf_ixveriwave_vw_seqnum,
+ { "Sequence number", "ixveriwave.seqnum",
+ FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+
+ { &hf_ixveriwave_vw_mslatency,
+ { "Msec latency", "ixveriwave.mslatency",
+ FT_FLOAT, 0, NULL, 0x0, NULL, HFILL } },
+
+ { &hf_ixveriwave_vw_latency,
+ { "Latency", "ixveriwave.latency",
+ FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+
+ { &hf_ixveriwave,
+ { "Signature (32 LSBs)", "ixveriwave.sig_ts",
+ FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+
+ { &hf_ixveriwave_vw_startt,
+ { "Starting frame timestamp", "ixveriwave.startt",
+ FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+
+ { &hf_ixveriwave_vw_endt,
+ { "Ending frame timestamp", "ixveriwave.endt",
+ FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+
+ { &hf_ixveriwave_vw_pktdur,
+ { "Packet duration", "ixveriwave.pktdur",
+ FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+
+ { &hf_ixveriwave_vw_ifg,
+ { "Inter-frame gap (usecs)", "ixveriwave.ifg",
+ FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+
+ { &hf_ixveriwave_vwf_txf,
+ { "Frame direction", "ixveriwave.vwflags.txframe",
+ FT_UINT32, BASE_DEC, VALS(tx_rx_type), 0x0, NULL, HFILL } },
+
+ { &hf_ixveriwave_vwf_fcserr,
+ { "MAC FCS check", "ixveriwave.vwflags.fcserr",
+ FT_UINT32, BASE_DEC, VALS(fcserr_type), 0x0, NULL, HFILL } },
+
+ { &hf_ixveriwave_vw_info,
+ { "Info field", "ixveriwave.info",
+ FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+
+ { &hf_ixveriwave_vw_info_retryCount,
+ { "Info field retry count", "ixveriwave.info",
+ FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+
+/* tx info decodes for VW510024 and 510012 */
+/* we don't need to enumerate through these, basically for both,
+info is the retry count. for 510024, the 15th bit indicates if
+the frame was impressed on the enet tx media with one or more octets having tx_en
+framing signal deasserted. this is caused by software setting the drain all register bit.
+*/
+ { &hf_ixveriwave_vw_info_tx_bit15,
+ { "Info bit 15-frame was impressed on the ent tx media with one or more octets having tx_en framing signal deasserted.", "ixveriwave.info.bit15",
+ FT_BOOLEAN, 16, NULL, 0x8000, NULL, HFILL } },
+
+ /* rx info decodes for fpga ver VW510024 */
+ /*all are reserved*/
+
+ /* rx info decodes for fpga ver VW510012 */
+ { &hf_ixveriwave_vw_info_rx_1_bit8,
+ { "Go no flow", "ixveriwave.info.bit8",
+ FT_BOOLEAN, 16, NULL, 0x0100, NULL, HFILL } },
+ { &hf_ixveriwave_vw_info_rx_1_bit9,
+ { "Go with flow", "ixveriwave.info.bit9",
+ FT_BOOLEAN, 16, NULL, 0x0200, NULL, HFILL } },
+
+ { &hf_ixveriwave_vw_error,
+ { "Errors", "ixveriwave.error",
+ FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ /* tx error decodes for VW510024 and previous versions */
+
+ { &hf_ixveriwave_vw_error_tx_bit1,
+ { "Packet FCS error", "ixveriwave.error.bit1",
+ FT_BOOLEAN, 12, NULL, 0x0002, NULL, HFILL } },
+ { &hf_ixveriwave_vw_error_tx_bit5,
+ { "IP checksum error", "ixveriwave.error.bit5",
+ FT_BOOLEAN, 12, NULL, 0x0020, NULL, HFILL } },
+ /*bit 6 is actually reserved in 500012, but i thought it would be okay to leave it here*/
+ { &hf_ixveriwave_vw_error_tx_bit9,
+ { "Underflow error", "ixveriwave.error.bit9",
+ FT_BOOLEAN, 12, NULL, 0x0200, NULL, HFILL } },
+ { &hf_ixveriwave_vw_error_tx_bit10,
+ { "Late collision error", "ixveriwave.error.bit10",
+ FT_BOOLEAN, 12, NULL, 0x0400, NULL, HFILL } },
+ { &hf_ixveriwave_vw_error_tx_bit11,
+ { "Excessive collisions error", "ixveriwave.error.bit11",
+ FT_BOOLEAN, 12, NULL, 0x0800, NULL, HFILL } },
+ /*all other bits are reserved */
+
+ /* rx error decodes for fpga ver VW510012 and VW510024 */
+ { &hf_ixveriwave_vw_error_rx_1_bit0,
+ { "Alignment error", "ixveriwave.error.bit0",
+ FT_BOOLEAN, 12, NULL, 0x0001, "error bit 0", HFILL } },
+ { &hf_ixveriwave_vw_error_rx_1_bit1,
+ { "Packet FCS error", "ixveriwave.error.bit1",
+ FT_BOOLEAN, 12, NULL, 0x0002, NULL, HFILL } },
+ { &hf_ixveriwave_vw_error_rx_1_bit2,
+ { "Bad magic byte signature.", "ixveriwave.error.bit2",
+ FT_BOOLEAN, 12, NULL, 0x0004, NULL, HFILL } },
+ { &hf_ixveriwave_vw_error_rx_1_bit3,
+ { "Bad payload checksum.", "ixveriwave.error.bit3",
+ FT_BOOLEAN, 12, NULL, 0x0008, NULL, HFILL } },
+ { &hf_ixveriwave_vw_error_rx_1_bit4,
+ { "Frame too long error", "ixveriwave.error.bit4",
+ FT_BOOLEAN, 12, NULL, 0x0010, NULL, HFILL } },
+ { &hf_ixveriwave_vw_error_rx_1_bit5,
+ { "IP checksum error", "ixveriwave.error.bit5",
+ FT_BOOLEAN, 12, NULL, 0x0020, NULL, HFILL } },
+ { &hf_ixveriwave_vw_error_rx_1_bit6,
+ { "TCP/ICMP/IGMP/UDP checksum error", "ixveriwave.error.bit6",
+ FT_BOOLEAN, 12, NULL, 0x0040, NULL, HFILL } },
+ { &hf_ixveriwave_vw_error_rx_1_bit7,
+ { "ID mismatch(for fpga510012)", "ixveriwave.error.bit7",
+ FT_BOOLEAN, 12, NULL, 0x0080, NULL, HFILL } },
+ { &hf_ixveriwave_vw_error_rx_1_bit8,
+ { "Length error", "ixveriwave.error.bit8",
+ FT_BOOLEAN, 12, NULL, 0x0100, NULL, HFILL } },
+ { &hf_ixveriwave_vw_error_rx_1_bit9,
+ { "Underflow", "ixveriwave.error.bit9",
+ FT_BOOLEAN, 12, NULL, 0x0200, NULL, HFILL } },
+ { &hf_radiotap_vw_errors_tx_bit1,
+ { "Packet FCS error", "ixveriwave.errors.bit1",
+ FT_BOOLEAN, 16, NULL, 0x0002, NULL, HFILL } },
+ { &hf_radiotap_vw_errors_tx_bit5,
+ { "IP checksum error", "ixveriwave.errors.bit5",
+ FT_BOOLEAN, 16, NULL, 0x0020, NULL, HFILL } },
+
+ /* All other enumerations are reserved.*/
+
+ { &hf_ixveriwave_vw_l4id,
+ { "Layer 4 ID", "ixveriwave.layer4id",
+ FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+
+ /* Presense flags */
+ #define RADIOTAP_MASK_VW_FPGA_VERSION (1 << VW_RADIOTAP_FPGA_VERSION)
+ #define RADIOTAP_MASK_VW_MCID (1 << VW_RADIOTAP_MCID)
+ #define RADIOTAP_MASK_VW_ERRORS (1 << VW_RADIOTAP_ERRORS)
+ #define RADIOTAP_MASK_VW_INFO (1 << VW_RADIOTAP_INFO)
+ #define RADIOTAP_MASK_VW_MSDU_LENGTH (1 << VW_RADIOTAP_MSDU_LENGTH)
+ #define RADIOTAP_MASK_VW_HT_LENGTH (1 << VW_RADIOTAP_HT_LENGTH)
+ #define RADIOTAP_MASK_VW_FLOWID (1 << VW_RADIOTAP_FLOWID)
+ #define RADIOTAP_MASK_VW_SEQNUM (1 << VW_RADIOTAP_SEQNUM)
+ #define RADIOTAP_MASK_VW_LATENCY (1 << VW_RADIOTAP_LATENCY)
+ #define RADIOTAP_MASK_VW_SIG_TS (1 << VW_RADIOTAP_SIG_TS)
+ #define RADIOTAP_MASK_VW_STARTT (1 << VW_RADIOTAP_STARTT)
+ #define RADIOTAP_MASK_VW_ENDT (1 << VW_RADIOTAP_ENDT)
+ #define RADIOTAP_MASK_VW_PKTDUR (1 << VW_RADIOTAP_PKTDUR)
+ #define RADIOTAP_MASK_VW_IFG (1 << VW_RADIOTAP_IFG)
+ /* end veriwave addition*/
+
+ { &hf_radiotap_datarate,
+ { "Data rate", "ixveriwave.datarate",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Speed this frame was sent/received at", HFILL } },
+
+ /* Boolean 'present.flags' flags */
+ { &hf_radiotap_flags,
+ { "Flags", "ixveriwave.flags",
+ FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+
+ { &hf_radiotap_flags_cfp,
+ { "CFP", "ixveriwave.flags.cfp",
+ FT_BOOLEAN, 12, NULL, IEEE80211_RADIOTAP_F_CFP,
+ "Sent/Received during CFP", HFILL } },
+
+ { &hf_radiotap_flags_preamble,
+ { "Preamble", "ixveriwave.flags.preamble",
+ FT_BOOLEAN, 12, TFS(&preamble_type), IEEE80211_RADIOTAP_F_SHORTPRE,
+ "Sent/Received with short preamble", HFILL } },
+
+ { &hf_radiotap_flags_wep,
+ { "WEP", "ixveriwave.flags.wep",
+ FT_BOOLEAN, 12, NULL, IEEE80211_RADIOTAP_F_WEP,
+ "Sent/Received with WEP encryption", HFILL } },
+
+ { &hf_radiotap_flags_frag,
+ { "Fragmentation", "ixveriwave.flags.frag",
+ FT_BOOLEAN, 12, NULL, IEEE80211_RADIOTAP_F_FRAG,
+ "Sent/Received with fragmentation", HFILL } },
+
+ { &hf_radiotap_flags_fcs,
+ { "FCS at end", "ixveriwave.flags.fcs",
+ FT_BOOLEAN, 12, NULL, IEEE80211_RADIOTAP_F_FCS,
+ "Frame includes FCS at end", HFILL } },
+
+ { &hf_radiotap_flags_datapad,
+ { "Data Pad", "ixveriwave.flags.datapad",
+ FT_BOOLEAN, 12, NULL, IEEE80211_RADIOTAP_F_DATAPAD,
+ "Frame has padding between 802.11 header and payload", HFILL } },
+
+ { &hf_radiotap_flags_ht,
+ { "HT frame", "ixveriwave.flags.ht",
+ FT_BOOLEAN, 12, NULL, IEEE80211_RADIOTAP_F_HT, NULL, HFILL } },
+
+ { &hf_radiotap_flags_40mhz,
+ { "40 MHz channel bandwidth", "ixveriwave.flags.40mhz",
+ FT_BOOLEAN, 12, NULL, IEEE80211_RADIOTAP_F_40MHZ, NULL, HFILL } },
+
+ { &hf_radiotap_flags_shortgi,
+ { "Short guard interval", "ixveriwave.flags.shortgi",
+ FT_BOOLEAN, 12, NULL, IEEE80211_RADIOTAP_F_SHORTGI, NULL, HFILL } },
+
+ { &hf_radiotap_dbm_antsignal,
+ { "SSI Signal (dBm)", "ixveriwave.dbm_antsignal",
+ FT_INT32, BASE_DEC, NULL, 0x0,
+ "RF signal power at the antenna from a fixed, arbitrary value in decibels from one milliwatt", HFILL } },
+
+ { &hf_radiotap_txpower,
+ { "Transmit power", "ixveriwave.txpower",
+ FT_INT32, BASE_DEC, NULL, 0x0,
+ "Transmit power in decibels per one milliwatt (dBm)", HFILL } },
+
+ /* Boolean 'present' flags */
+ /* VeriWave-specific flags */
+ { &hf_radiotap_vwf_txf,
+ { "Frame direction", "ixveriwave.vwflags.txframe",
+ FT_UINT32, BASE_DEC, VALS(tx_rx_type), 0x0, NULL, HFILL } },
+
+ { &hf_radiotap_vwf_fcserr,
+ { "MAC FCS check", "ixveriwave.vwflags.fcserr",
+ FT_UINT32, BASE_DEC, VALS(fcserr_type), 0x0, NULL, HFILL } },
+
+ { &hf_radiotap_vwf_dcrerr,
+ { "Decryption error", "ixveriwave.vwflags.decrypterr",
+ FT_UINT32, BASE_DEC, VALS(decrypterr_type), 0x0, NULL, HFILL } },
+
+ { &hf_radiotap_vwf_retrerr,
+ { "TX retry limit", "ixveriwave.vwflags.retryerr",
+ FT_UINT32, BASE_DEC, VALS(retryerr_type), 0x0, NULL, HFILL } },
+
+ { &hf_radiotap_vwf_enctype,
+ { "Encryption type", "ixveriwave.vwflags.encrypt",
+ FT_UINT32, BASE_DEC, VALS(encrypt_type), 0x0, NULL, HFILL } },
+
+ /* start VeriWave-specific radiotap header elements 6-2007 */
+ { &hf_radiotap_vw_ht_length,
+ { "Total IP length (incl all pieces of an aggregate)", "ixveriwave.ht_length",
+ FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+
+ { &hf_radiotap_vw_errors,
+ { "Errors", "ixveriwave.errors",
+ FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+
+ /* rx error decodes for fpga ver VW510006 */
+ { &hf_radiotap_vw_errors_rx_1_bit0,
+ { "L1 error", "ixveriwave.errors.bit0",
+ FT_BOOLEAN, 16, NULL, 0x0001, "error bit 0", HFILL } },
+
+ { &hf_radiotap_vw_errors_rx_1_bit1,
+ { "Packet FCS error", "ixveriwave.errors.bit1",
+ FT_BOOLEAN, 16, NULL, 0x0002, NULL, HFILL } },
+
+ { &hf_radiotap_vw_errors_rx_1_bit2,
+ { "Bad magic byte signature.", "ixveriwave.errors.bit2",
+ FT_BOOLEAN, 16, NULL, 0x0004, NULL, HFILL } },
+
+ { &hf_radiotap_vw_errors_rx_1_bit3,
+ { "Bad payload checksum.", "ixveriwave.errors.bit3",
+ FT_BOOLEAN, 16, NULL, 0x0008, NULL, HFILL } },
+
+ { &hf_radiotap_vw_errors_rx_1_bit4,
+ { "Duplicate MPDU", "ixveriwave.errors.bit4",
+ FT_BOOLEAN, 16, NULL, 0x0010, NULL, HFILL } },
+
+ { &hf_radiotap_vw_errors_rx_1_bit5,
+ { "IP checksum error", "ixveriwave.errors.bit5",
+ FT_BOOLEAN, 16, NULL, 0x0020, NULL, HFILL } },
+
+ { &hf_radiotap_vw_errors_rx_1_bit6,
+ { "TCP/ICMP/IGMP/UDP checksum error", "ixveriwave.errors.bit6",
+ FT_BOOLEAN, 16, NULL, 0x0040, NULL, HFILL } },
+
+ { &hf_radiotap_vw_errors_rx_1_bit7,
+ { "Reserved", "ixveriwave.errors.bit7",
+ FT_BOOLEAN, 16, NULL, 0x0080, NULL, HFILL } },
+
+ { &hf_radiotap_vw_errors_rx_1_bit8,
+ { "RX WEP IVC / TKIP/CCMP MIC miscompare", "ixveriwave.errors.bit8",
+ FT_BOOLEAN, 16, NULL, 0x0100, NULL, HFILL } },
+
+ { &hf_radiotap_vw_errors_rx_1_bit9,
+ { "RX TKIP / CCMP TSC SEQERR", "ixveriwave.errors.bit9",
+ FT_BOOLEAN, 16, NULL, 0x0200, NULL, HFILL } },
+
+ { &hf_radiotap_vw_errors_rx_1_bit10,
+ { "RX crypto short", "ixveriwave.errors.bit10",
+ FT_BOOLEAN, 16, NULL, 0x0400, NULL, HFILL } },
+
+ { &hf_radiotap_vw_errors_rx_1_bit11,
+ { "RX EXTIV fault A", "ixveriwave.errors.bit11",
+ FT_BOOLEAN, 16, NULL, 0x0800, NULL, HFILL } },
+
+ { &hf_radiotap_vw_errors_rx_1_bit12,
+ { "RX EXTIV fault B", "ixveriwave.errors.bit12",
+ FT_BOOLEAN, 16, NULL, 0x1000, NULL, HFILL } },
+
+ { &hf_radiotap_vw_errors_rx_1_bit13,
+ { "RX protected fault A", "ixveriwave.errors.bit13",
+ FT_BOOLEAN, 16, NULL, 0x2000, NULL, HFILL } },
+
+ { &hf_radiotap_vw_errors_rx_1_bit14,
+ { "RX protected fault B", "ixveriwave.errors.bit14",
+ FT_BOOLEAN, 16, NULL, 0x4000, NULL, HFILL } },
+
+ { &hf_radiotap_vw_errors_rx_1_bit15,
+ { "Reserved", "ixveriwave.errors.bit15",
+ FT_BOOLEAN, 16, NULL, 0x8000, NULL, HFILL } },
+ /* All other enumerations are reserved.*/
+
+ /* rx error decodes for fpga ver VW510021 */
+ { &hf_radiotap_vw_errors_rx_2_bit0,
+ { "CRC16 or parity error", "ixveriwave.errors.bit0",
+ FT_BOOLEAN, 16, NULL, 0x0001, "error bit 0", HFILL } },
+
+ { &hf_radiotap_vw_errors_rx_2_bit1,
+ { "Non-supported rate or service field", "ixveriwave.errors.bit1",
+ FT_BOOLEAN, 16, NULL, 0x0002, NULL, HFILL } },
+
+ { &hf_radiotap_vw_errors_rx_2_bit2,
+ { "Short frame error. Frame is shorter than length.", "ixveriwave.errors.bit2",
+ FT_BOOLEAN, 16, NULL, 0x0004, NULL, HFILL } },
+
+ { &hf_radiotap_vw_errors_rx_2_bit4,
+ { "FCS_Error", "ixveriwave.errors.bit4",
+ FT_BOOLEAN, 16, NULL, 0x0010, NULL, HFILL } },
+
+ { &hf_radiotap_vw_errors_rx_2_bit5,
+ { "L2 de-aggregation error", "ixveriwave.errors.bit5",
+ FT_BOOLEAN, 16, NULL, 0x0020, NULL, HFILL } },
+
+ { &hf_radiotap_vw_errors_rx_2_bit6,
+ { "Duplicate MPDU", "ixveriwave.errors.bit6",
+ FT_BOOLEAN, 16, NULL, 0x0040, NULL, HFILL } },
+
+ { &hf_radiotap_vw_errors_rx_2_bit7,
+ { "Bad_Sig: Bad flow magic number (includes bad flow crc16)", "ixveriwave.errors.bit7",
+ FT_BOOLEAN, 16, NULL, 0x0080, NULL, HFILL } },
+
+ { &hf_radiotap_vw_errors_rx_2_bit8,
+ { "Bad flow payload checksum", "ixveriwave.errors.bit8",
+ FT_BOOLEAN, 16, NULL, 0x0100, NULL, HFILL } },
+
+ { &hf_radiotap_vw_errors_rx_2_bit10,
+ { "Bad IP checksum error", "ixveriwave.errors.bit10",
+ FT_BOOLEAN, 16, NULL, 0x0400, NULL, HFILL } },
+
+ { &hf_radiotap_vw_errors_rx_2_bit11,
+ { "L4(TCP/ICMP/IGMP/UDP) checksum error", "ixveriwave.errors.bit11",
+ FT_BOOLEAN, 16, NULL, 0x0800, NULL, HFILL } },
+
+ { &hf_radiotap_vw_info,
+ { "Info field", "ixveriwave.info",
+ FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+
+ /* tx info decodes for VW510021 and previous versions */
+ { &hf_radiotap_vw_info_tx_bit10,
+ { "MPDU of A-MPDU", "ixveriwave.info.bit10",
+ FT_BOOLEAN, 16, NULL, 0x0400, NULL, HFILL } },
+
+ { &hf_radiotap_vw_info_tx_bit11,
+ { "First MPDU of A-MPDU", "ixveriwave.info.bit11",
+ FT_BOOLEAN, 16, NULL, 0x0800, NULL, HFILL } },
+
+ { &hf_radiotap_vw_info_tx_bit12,
+ { "Last MPDU of A-MPDU", "ixveriwave.info.bit12",
+ FT_BOOLEAN, 16, NULL, 0x1000, NULL, HFILL } },
+
+ { &hf_radiotap_vw_info_tx_bit13,
+ { "MSDU of A-MSDU", "ixveriwave.info.bit13",
+ FT_BOOLEAN, 16, NULL, 0x2000, NULL, HFILL } },
+
+ { &hf_radiotap_vw_info_tx_bit14,
+ { "First MSDU of A-MSDU", "ixveriwave.info.bit14",
+ FT_BOOLEAN, 16, NULL, 0x4000, NULL, HFILL } },
+
+ { &hf_radiotap_vw_info_tx_bit15,
+ { "Last MSDU of A-MSDU", "ixveriwave.info.bit15",
+ FT_BOOLEAN, 16, NULL, 0x8000, NULL, HFILL } },
+ /*v510006 uses bits */
+
+ /* rx info decodes for fpga ver VW510021 */
+ { &hf_radiotap_vw_info_rx_2_bit8,
+ { "ACK withheld from frame", "ixveriwave.info.bit8",
+ FT_BOOLEAN, 16, NULL, 0x0100, NULL, HFILL } },
+
+ { &hf_radiotap_vw_info_rx_2_bit9,
+ { "Sent CTS to self before data", "ixveriwave.info.bit9",
+ FT_BOOLEAN, 16, NULL, 0x0200, NULL, HFILL } },
+
+ { &hf_radiotap_vw_info_rx_2_bit10,
+ { "MPDU of an A-MPDU", "ixveriwave.info.bit10",
+ FT_BOOLEAN, 16, NULL, 0x0400, NULL, HFILL } },
+
+ { &hf_radiotap_vw_info_rx_2_bit11,
+ { "First MPDU of A-MPDU", "ixveriwave.info.bit11",
+ FT_BOOLEAN, 16, NULL, 0x0800, NULL, HFILL } },
+
+ { &hf_radiotap_vw_info_rx_2_bit12,
+ { "Last MPDU of A-MPDU", "ixveriwave.info.bit12",
+ FT_BOOLEAN, 16, NULL, 0x1000, NULL, HFILL } },
+
+ { &hf_radiotap_vw_info_rx_2_bit13,
+ { "MSDU of A-MSDU", "ixveriwave.info.bit13",
+ FT_BOOLEAN, 16, NULL, 0x2000, NULL, HFILL } },
+
+ { &hf_radiotap_vw_info_rx_2_bit14,
+ { "First MSDU of A-MSDU", "ixveriwave.info.bit14",
+ FT_BOOLEAN, 16, NULL, 0x4000, NULL, HFILL } },
+
+ { &hf_radiotap_vw_info_rx_2_bit15,
+ { "Last MSDU of A-MSDU", "ixveriwave.info.bit15",
+ FT_BOOLEAN, 16, NULL, 0x8000, NULL, HFILL } },
+ };
+
+ static gint *ett[] = {
+ &ett_commontap,
+ &ett_commontap_times,
+ &ett_ethernettap_info,
+ &ett_ethernettap_error,
+ &ett_ethernettap_flags,
+ &ett_radiotap_flags,
+ &ett_radiotap_info,
+ &ett_radiotap_times,
+ &ett_radiotap_errors
+ };
+
+ proto_ixveriwave = proto_register_protocol("ixveriwave", "ixveriwave", "ixveriwave");
+ proto_register_field_array(proto_ixveriwave, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+ register_dissector("ixveriwave", dissect_ixveriwave, proto_ixveriwave);
+}
+
+void proto_reg_handoff_ixveriwave(void)
+{
+ dissector_handle_t ixveriwave_handle;
+
+ /* handle for ethertype dissector */
+ ethernet_handle = find_dissector("eth_withoutfcs");
+ /* handle for 802.11 dissector */
+ ieee80211_handle = find_dissector("wlan");
+ ieee80211_datapad_handle = find_dissector("wlan_datapad");
+
+ ixveriwave_handle = create_dissector_handle(dissect_ixveriwave, proto_ixveriwave);
+ dissector_add_uint("wtap_encap", WTAP_ENCAP_IXVERIWAVE, ixveriwave_handle);
+}
+
+static float getHTrate( guint8 rate, guint8 rflags )
+{
+ int mcs_index, ndbps;
+ float symbol_tx_time, bitrate;
+
+ /* Guard interval is the most significant bit. Short GI if the bit is set */
+ if ( rate & 0x80)
+ symbol_tx_time = (float)3.6;
+ else
+ symbol_tx_time = (float)4.0;
+
+ mcs_index = rate & IEEE80211_PLCP_RATE_MASK;
+
+ if ( rflags & IEEE80211_RADIOTAP_F_40MHZ )
+ ndbps = canonical_ndbps_40[ mcs_index - 8*(int)(mcs_index/8) ];
+ else
+ ndbps = canonical_ndbps_20[ mcs_index - 8*(int)(mcs_index/8) ];
+
+ bitrate = ( ndbps * (((int)(mcs_index/8) + 1) )) / symbol_tx_time;
+
+ return bitrate;
+}
+
diff --git a/epan/dissectors/packet-juniper.c b/epan/dissectors/packet-juniper.c
index f7303d9100..d2ba4556a0 100644
--- a/epan/dissectors/packet-juniper.c
+++ b/epan/dissectors/packet-juniper.c
@@ -1225,7 +1225,7 @@ ppp_heuristic_guess(guint16 proto) {
case PPP_MPLS_UNI :
case PPP_MPLS_MULTI :
case PPP_IPCP :
- case PPP_OSICP :
+ case PPP_OSINLCP :
case PPP_MPLSCP :
case PPP_LCP :
case PPP_PAP :
diff --git a/epan/dissectors/packet-jxta.c b/epan/dissectors/packet-jxta.c
index a0a40e8d41..0cc718cc5a 100644
--- a/epan/dissectors/packet-jxta.c
+++ b/epan/dissectors/packet-jxta.c
@@ -203,7 +203,7 @@ static gboolean dissect_jxta_SCTP_heur(tvbuff_t * tvb, packet_info * pinfo, prot
static int dissect_jxta_udp(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree);
static int dissect_jxta_stream(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree);
-static conversation_t *get_tpt_conversation(packet_info * pinfo, gboolean create);
+static jxta_stream_conversation_data *get_tpt_conversation(packet_info * pinfo);
static conversation_t *get_peer_conversation(packet_info * pinfo, jxta_stream_conversation_data* tpt_conv_data, gboolean create);
static int dissect_jxta_welcome(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, address * found_addr, gboolean initiator);
@@ -517,7 +517,6 @@ static int dissect_jxta_stream(tvbuff_t * tvb, packet_info * pinfo, proto_tree *
guint available = tvb_reported_length_remaining(tvb, offset);
gint processed = 0;
gint needed = 0;
- conversation_t *tpt_conversation = NULL;
jxta_stream_conversation_data *tpt_conv_data = NULL;
proto_item *jxta_tree_item = NULL;
proto_tree *jxta_tree = NULL;
@@ -534,8 +533,7 @@ static int dissect_jxta_stream(tvbuff_t * tvb, packet_info * pinfo, proto_tree *
address *welcome_addr;
gboolean initiator = FALSE;
- tpt_conversation = get_tpt_conversation(pinfo, TRUE);
- tpt_conv_data = (jxta_stream_conversation_data *) conversation_get_proto_data(tpt_conversation, proto_jxta);
+ tpt_conv_data = get_tpt_conversation(pinfo);
if (0 == tpt_conv_data->initiator_welcome_frame) {
/* The initiator welcome frame */
@@ -617,14 +615,8 @@ static int dissect_jxta_stream(tvbuff_t * tvb, packet_info * pinfo, proto_tree *
/* Redo header processing, this time populating the tree. */
headers_len = dissect_jxta_message_framing(tvb, pinfo, jxta_tree, &content_length, &content_type);
- tpt_conversation = get_tpt_conversation(pinfo, TRUE);
-
- if (NULL != tpt_conversation) {
- tpt_conv_data = (jxta_stream_conversation_data *) conversation_get_proto_data(tpt_conversation, proto_jxta);
- if (tpt_conv_data) {
- peer_conversation = get_peer_conversation(pinfo, tpt_conv_data, TRUE);
- }
- }
+ tpt_conv_data = get_tpt_conversation(pinfo);
+ peer_conversation = get_peer_conversation(pinfo, tpt_conv_data, TRUE);
/* Use our source and destination addresses if we have them */
if (NULL != peer_conversation) {
@@ -687,19 +679,14 @@ Common_Exit:
* which is associated with the packet info.
*
* @param pinfo The packet info from the underlying transport.
-* @param create If TRUE then create a new conversation object if necessary.
**/
-static conversation_t *get_tpt_conversation(packet_info * pinfo, gboolean create)
+static jxta_stream_conversation_data *get_tpt_conversation(packet_info * pinfo)
{
conversation_t *tpt_conversation =
find_conversation(pinfo->fd->num, &pinfo->src, &pinfo->dst, pinfo->ptype, pinfo->srcport, pinfo->destport, 0);
jxta_stream_conversation_data *tpt_conv_data;
if (tpt_conversation == NULL) {
- if (!create) {
- return NULL;
- }
-
/*
* No conversation exists yet - create one.
*/
@@ -732,7 +719,7 @@ static conversation_t *get_tpt_conversation(packet_info * pinfo, gboolean create
conversation_add_proto_data(tpt_conversation, proto_jxta, tpt_conv_data);
}
- return tpt_conversation;
+ return tpt_conv_data;
}
/**
@@ -1080,7 +1067,7 @@ static int dissect_jxta_message_framing(tvbuff_t * tvb, packet_info * pinfo, pro
/*
* Put header name into the protocol tree
*/
- proto_tree_add_item(framing_header_tree, hf_jxta_framing_header_name, tvb, tree_offset, sizeof(gint8), ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(framing_header_tree, hf_jxta_framing_header_name, tvb, tree_offset, sizeof(gint8), ENC_ASCII|ENC_NA);
/*
* Append header name into the header protocol item. It's a nice hint so you don't have to reveal all headers.
@@ -1389,7 +1376,7 @@ static int dissect_jxta_message(tvbuff_t * tvb, packet_info * pinfo, proto_tree
guint16 name_len = tvb_get_ntohs(tvb, tree_offset);
names_table[2 + each_name] = tvb_get_ephemeral_string(tvb, tree_offset + sizeof(name_len), name_len);
- proto_tree_add_item(jxta_msg_tree, hf_jxta_message_names_name, tvb, tree_offset, sizeof(name_len), ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(jxta_msg_tree, hf_jxta_message_names_name, tvb, tree_offset, sizeof(name_len), ENC_ASCII|ENC_NA);
tree_offset += sizeof(name_len) + name_len;
}
@@ -1630,13 +1617,13 @@ static int dissect_jxta_message_element_1(tvbuff_t * tvb, packet_info * pinfo, p
name_len = tvb_get_ntohs(tvb, tree_offset);
proto_item_append_text(jxta_elem_tree_item, " \"%s\"", tvb_format_text(tvb, tree_offset + sizeof(guint16), name_len));
- proto_tree_add_item(jxta_elem_tree, hf_jxta_element_name, tvb, tree_offset, sizeof(guint16), ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(jxta_elem_tree, hf_jxta_element_name, tvb, tree_offset, sizeof(guint16), ENC_ASCII|ENC_NA);
tree_offset += sizeof(guint16) + name_len;
/* process type */
if ((flags & JXTAMSG1_ELMFLAG_TYPE) != 0) {
guint16 type_len = tvb_get_ntohs(tvb, tree_offset);
- proto_tree_add_item(jxta_elem_tree, hf_jxta_element_type, tvb, tree_offset, sizeof(guint16), ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(jxta_elem_tree, hf_jxta_element_type, tvb, tree_offset, sizeof(guint16), ENC_ASCII|ENC_NA);
tree_offset += sizeof(guint16);
mediatype = tvb_get_ephemeral_string(tvb, tree_offset, type_len);
@@ -1647,7 +1634,7 @@ static int dissect_jxta_message_element_1(tvbuff_t * tvb, packet_info * pinfo, p
/* process encoding */
if ((flags & JXTAMSG1_ELMFLAG_ENCODING) != 0) {
guint16 encoding_len = tvb_get_ntohs(tvb, tree_offset);
- proto_tree_add_item(jxta_elem_tree, hf_jxta_element_encoding, tvb, tree_offset, sizeof(guint16), ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(jxta_elem_tree, hf_jxta_element_encoding, tvb, tree_offset, sizeof(guint16), ENC_ASCII|ENC_NA);
tree_offset += sizeof(guint16) + encoding_len;
}
@@ -1905,7 +1892,7 @@ static int dissect_jxta_message_element_2(tvbuff_t * tvb, packet_info * pinfo, p
/* literal name */
guint16 name_len = tvb_get_ntohs(tvb, tree_offset);
proto_item_append_text(jxta_elem_tree_item, " \"%s\"", tvb_format_text(tvb, tree_offset + sizeof(guint16), name_len));
- proto_tree_add_item(jxta_elem_tree, hf_jxta_element_name, tvb, tree_offset, sizeof(guint16), ENC_ASCII|ENC_BIG_ENDIAN);
+ proto_tree_add_item(jxta_elem_tree, hf_jxta_element_name, tvb, tree_offset, sizeof(guint16), ENC_ASCII|ENC_NA);
tree_offset += sizeof(guint16) + name_len;
}
diff --git a/epan/dissectors/packet-k12.c b/epan/dissectors/packet-k12.c
index 5c3c395a09..83b49db422 100644
--- a/epan/dissectors/packet-k12.c
+++ b/epan/dissectors/packet-k12.c
@@ -32,6 +32,7 @@
#include <string.h>
#include <wsutil/str_util.h>
#include <epan/packet.h>
+#include <epan/conversation.h>
#include <prefs.h>
#include <epan/report_err.h>
#include <epan/emem.h>
diff --git a/epan/dissectors/packet-kdsp.c b/epan/dissectors/packet-kdsp.c
new file mode 100644
index 0000000000..7087a3f221
--- /dev/null
+++ b/epan/dissectors/packet-kdsp.c
@@ -0,0 +1,1020 @@
+/* packet-kdsp.c
+ * Routines for Kismet Drone/Server Protocol packet disassembly
+ * By Kyle Feuz <kyle.feuz@aggiemail.usu.edu>
+ * Copyright 2011 Kyle Feuz
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <glib.h>
+#include <epan/packet.h>
+#include <epan/prefs.h>
+#include <epan/dissectors/packet-tcp.h>
+
+#define KDSP_PORT 2502
+#define FRAME_HEADER_LEN 12
+
+#define HELLO 1
+#define STRING 2
+#define CAPPACKET 3
+#define CHANNELSET 4
+#define SOURCE 5
+#define REPORT 6
+
+#define CPT_FLAG 0x80000000
+#define GPS_FLAG 0x00000002
+#define RADIO_FLAG 0x00000001
+
+#define RADIO_ACCURACY_FLAG 0x000000
+#define RADIO_FREQ_MHZ_FLAG 0x000000
+#define RADIO_SIGNAL_DBM_FLAG 0x000000
+#define RADIO_NOISE_DBM_FLAG 0x000000
+#define RADIO_CARRIER_FLAG 0x000000
+#define RADIO_ENCODING_FLAG 0x000000
+#define RADIO_DATARATE_FLAG 0x000000
+#define RADIO_SIGNAL_RSSI_FLAG 0x000000
+#define RADIO_NOISE_RSSI_FLAG 0x000000
+
+#define GPS_FIX_FLAG 0x000000
+#define GPS_LAT_FLAG 0x000000
+#define GPS_LON_FLAG 0x000000
+#define GPS_ALT_FLAG 0x000000
+#define GPS_SPD_FLAG 0x000000
+#define GPS_HEADING_FLAG 0x000000
+
+#define DATA_UUID_FLAG 0x000000
+#define DATA_PACKLEN_FLAG 0x000000
+#define DATA_TVSEC_FLAG 0x000000
+#define DATA_TVUSEC_FLAG 0x000000
+#define DATA_DLT_FLAG 0x000000
+
+#define CH_UUID_FLAG 0x00000001
+#define CH_CMD_FLAG 0x00000002
+#define CH_CURCH_FLAG 0x00000004
+#define CH_HOP_FLAG 0x00000008
+#define CH_NUMCH_FLAG 0x00000010
+#define CH_CHANNELS_FLAG 0x00000020
+#define CH_DWELL_FLAG 0x00000040
+#define CH_RATE_FLAG 0x00000080
+#define CH_HOPDWELL_FLAG 0x00000100
+
+#define SRC_UUID_FLAG 0x00000001
+#define SRC_INVALID_FLAG 0x00000002
+#define SRC_NAMESTR_FLAG 0x00000004
+#define SRC_INTSTR_FLAG 0x00000008
+#define SRC_TYPESTR_FLAG 0x00000010
+#define SRC_HOP_FLAG 0x00000020
+#define SRC_DWELL_FLAG 0x00000040
+#define SRC_RATE_FLAG 0x00000080
+
+#define REPORT_UUID_FLAG 0x000000
+#define REPORT_FLAGS_FLAG 0x000000
+#define REPORT_HOP_TM_SEC_FLAG 0x000000
+#define REPORT_HOP_TM_USEC_FLAG 0x000000
+
+void proto_reg_handoff_kdsp(void);
+
+static int proto_kdsp = -1;
+
+static guint global_kdsp_tcp_port = KDSP_PORT;
+
+
+static dissector_handle_t kdsp_handle;
+static dissector_handle_t ieee80211_handle;
+
+static const value_string packettypenames[] = {
+ {0, "NULL"},
+ {1, "HELLO"},
+ {2, "STRING"},
+ {3, "CAPPACKET"},
+ {4, "CHANNELSET"},
+ {5, "SOURCE"},
+ {6, "REPORT"},
+ {0, NULL}
+};
+
+static const value_string channelcmds[] = {
+ {0, "NONE"},
+ {1, "SET HOP"},
+ {2, "SET VECTOR"},
+ {3, "SET CURRENT"},
+ {4, "SET HOP/DWELL"},
+ {0, NULL}
+};
+
+
+static gint hf_kdsp_sentinel = -1;
+static gint hf_kdsp_cmdnum = -1;
+static gint hf_kdsp_length = -1;
+
+static gint hf_kdsp_version = -1;
+static gint hf_kdsp_server_version = -1;
+static gint hf_kdsp_hostname = -1;
+
+static gint hf_kdsp_str_flags = -1;
+static gint hf_kdsp_str_len = -1;
+static gint hf_kdsp_str_msg = -1;
+
+static gint hf_kdsp_cpt_bitmap = -1;
+static gint hf_kdsp_cpt_flag_cpt = -1;
+static gint hf_kdsp_cpt_flag_gps = -1;
+static gint hf_kdsp_cpt_flag_radio = -1;
+static gint hf_kdsp_cpt_offset = -1;
+
+static gint hf_kdsp_radio_hdr_len = -1;
+static gint hf_kdsp_radio_content_bitmap = -1;
+static gint hf_kdsp_radio_accuracy = -1;
+static gint hf_kdsp_radio_freq_mhz = -1;
+static gint hf_kdsp_radio_signal_dbm = -1;
+static gint hf_kdsp_radio_noise_dbm = -1;
+static gint hf_kdsp_radio_carrier = -1;
+static gint hf_kdsp_radio_encoding = -1;
+static gint hf_kdsp_radio_datarate = -1;
+static gint hf_kdsp_radio_signal_rssi = -1;
+static gint hf_kdsp_radio_noise_rssi = -1;
+
+static gint hf_kdsp_gps_hdr_len = -1;
+static gint hf_kdsp_gps_content_bitmap = -1;
+static gint hf_kdsp_gps_fix = -1;
+static gint hf_kdsp_gps_lat = -1;
+static gint hf_kdsp_gps_lon = -1;
+static gint hf_kdsp_gps_alt = -1;
+static gint hf_kdsp_gps_spd = -1;
+static gint hf_kdsp_gps_heading = -1;
+
+static gint hf_kdsp_cpt_data_hdr_len = -1;
+static gint hf_kdsp_cpt_data_content_bitmap = -1;
+static gint hf_kdsp_cpt_uuid = -1;
+static gint hf_kdsp_cpt_packet_len = -1;
+static gint hf_kdsp_cpt_tv_sec = -1;
+static gint hf_kdsp_cpt_tv_usec = -1;
+static gint hf_kdsp_cpt_dlt = -1;
+
+static gint hf_kdsp_ch_length = -1;
+static gint hf_kdsp_ch_bitmap = -1;
+static gint hf_kdsp_ch_flag_uuid = -1;
+static gint hf_kdsp_ch_flag_cmd = -1;
+static gint hf_kdsp_ch_flag_curch = -1;
+static gint hf_kdsp_ch_flag_hop = -1;
+static gint hf_kdsp_ch_flag_numch = -1;
+static gint hf_kdsp_ch_flag_channels = -1;
+static gint hf_kdsp_ch_flag_dwell = -1;
+static gint hf_kdsp_ch_flag_rate = -1;
+static gint hf_kdsp_ch_flag_hopdwell = -1;
+static gint hf_kdsp_ch_uuid = -1;
+static gint hf_kdsp_ch_cmd = -1;
+static gint hf_kdsp_ch_cur_ch = -1;
+static gint hf_kdsp_ch_hop = -1;
+static gint hf_kdsp_ch_num_ch = -1;
+static gint hf_kdsp_ch_data = -1;
+static gint hf_kdsp_ch_ch = -1;
+static gint hf_kdsp_ch_dwell = -1;
+static gint hf_kdsp_ch_start = -1;
+static gint hf_kdsp_ch_end = -1;
+static gint hf_kdsp_ch_width = -1;
+static gint hf_kdsp_ch_iter = -1;
+static gint hf_kdsp_ch_rate = -1;
+static gint hf_kdsp_ch_ch_dwell = -1;
+
+static gint hf_kdsp_source_length = -1;
+static gint hf_kdsp_source_bitmap = -1;
+static gint hf_kdsp_source_uuid = -1;
+static gint hf_kdsp_source_invalidate = -1;
+static gint hf_kdsp_source_name = -1;
+static gint hf_kdsp_source_interface = -1;
+static gint hf_kdsp_source_type = -1;
+static gint hf_kdsp_source_hop = -1;
+static gint hf_kdsp_source_dwell = -1;
+static gint hf_kdsp_source_rate = -1;
+
+static gint hf_kdsp_report_hdr_len = -1;
+static gint hf_kdsp_report_content_bitmap = -1;
+static gint hf_kdsp_report_uuid = -1;
+static gint hf_kdsp_report_flags = -1;
+static gint hf_kdsp_report_hop_tm_sec = -1;
+static gint hf_kdsp_report_hop_tm_usec = -1;
+
+static gint ett_kdsp_pdu = -1;
+static gint ett_cpt_bitmap = -1;
+static gint ett_ch_bitmap = -1;
+static gint ett_ch_data = -1;
+
+/* determine PDU length of protocol */
+static guint
+get_kdsp_message_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
+{
+ return (guint)tvb_get_ntohl(tvb, offset+8) + FRAME_HEADER_LEN; /* length is at offset 8 */
+}
+
+/* This method dissects fully reassembled messages */
+static void
+dissect_kdsp_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ guint32 command = 0;
+ guint32 offset = 0;
+ guint32 length = 0;
+ guint32 numChan = 0;
+ guint32 bitmap = 0;
+ guint16 type = 0;
+ guint32 i;
+
+ tvbuff_t *ieee80211_tvb = NULL;
+ proto_item *kdsp_item = NULL;
+ proto_tree *kdsp_tree = NULL;
+ proto_item *sub_item = NULL;
+ proto_tree *sub_tree = NULL;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "KDSP");
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ command = (guint32)tvb_get_ntohl(tvb, 4);
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Command %s; ",
+ val_to_str(command, packettypenames, "Unknown (0x%02x)"));
+ col_set_fence(pinfo->cinfo, COL_INFO);
+
+ kdsp_item = proto_tree_add_item(tree, proto_kdsp, tvb, 0, -1, ENC_NA);
+ kdsp_tree = proto_item_add_subtree(kdsp_item, ett_kdsp_pdu);
+ proto_tree_add_item(kdsp_tree, hf_kdsp_sentinel, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_cmdnum, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ proto_item_append_text(kdsp_item, ", Command %s",
+ val_to_str(command, packettypenames, "Unknown (0x%02x)"));
+
+ proto_tree_add_item(kdsp_tree, hf_kdsp_length, tvb, offset, 4, ENC_BIG_ENDIAN);
+ length = (guint32)tvb_get_ntohl(tvb, offset);
+ offset += 4;
+
+ if(command == HELLO){
+ proto_tree_add_item(kdsp_tree, hf_kdsp_version, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset +=4;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_server_version,
+ tvb, offset, 32, ENC_ASCII|ENC_NA);
+ offset +=32;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_hostname, tvb, offset, 32, ENC_ASCII|ENC_NA);
+ /*offset +=32;*/
+ }
+ else if(command == STRING){
+ proto_tree_add_item(kdsp_tree, hf_kdsp_str_flags, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset +=4;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_str_len, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset +=4;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_str_msg, tvb, offset, -1, ENC_ASCII|ENC_NA);
+ }
+ else if(command == CAPPACKET){
+ sub_item = proto_tree_add_item(kdsp_tree, hf_kdsp_cpt_bitmap, tvb, offset, 4, ENC_BIG_ENDIAN);
+ sub_tree = proto_item_add_subtree(sub_item, ett_cpt_bitmap);
+ proto_tree_add_item(sub_tree, hf_kdsp_cpt_flag_cpt, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(sub_tree, hf_kdsp_cpt_flag_gps, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(sub_tree, hf_kdsp_cpt_flag_radio, tvb, offset, 4, ENC_BIG_ENDIAN);
+ bitmap = tvb_get_ntohl(tvb, offset);
+ offset +=4;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_cpt_offset, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset +=4;
+ if(bitmap & RADIO_FLAG){
+ proto_tree_add_item(kdsp_tree, hf_kdsp_radio_hdr_len, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_radio_content_bitmap, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_radio_accuracy, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_radio_freq_mhz, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_radio_signal_dbm, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_radio_noise_dbm, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_radio_carrier, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_radio_encoding, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_radio_datarate, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_radio_signal_rssi, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_radio_noise_rssi, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ }
+ if(bitmap & GPS_FLAG){
+ proto_tree_add_item(kdsp_tree, hf_kdsp_gps_hdr_len, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_gps_content_bitmap, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_gps_fix, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_gps_lat, tvb, offset, 12, ENC_NA);
+ offset += 12;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_gps_lon, tvb, offset, 12, ENC_NA);
+ offset += 12;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_gps_alt, tvb, offset, 12, ENC_NA);
+ offset += 12;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_gps_spd, tvb, offset, 12, ENC_NA);
+ offset += 12;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_gps_heading, tvb, offset, 12, ENC_NA);
+ offset += 12;
+ }
+ if(bitmap & CPT_FLAG){
+ proto_tree_add_item(kdsp_tree, hf_kdsp_cpt_data_hdr_len, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_cpt_data_content_bitmap, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_cpt_uuid, tvb, offset, 16, ENC_NA);
+ offset += 16;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_cpt_packet_len, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_cpt_tv_sec, tvb, offset, 8, ENC_BIG_ENDIAN);
+ offset += 8;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_cpt_tv_usec, tvb, offset, 8, ENC_BIG_ENDIAN);
+ offset += 8;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_cpt_dlt, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ }
+ ieee80211_tvb = tvb_new_subset_remaining(tvb, offset);
+ call_dissector(ieee80211_handle, ieee80211_tvb, pinfo, tree);
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "KDSP");
+ }
+ else if(command == CHANNELSET){
+ proto_tree_add_item(kdsp_tree, hf_kdsp_ch_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ sub_item = proto_tree_add_item(kdsp_tree, hf_kdsp_ch_bitmap, tvb, offset, 4, ENC_BIG_ENDIAN);
+ sub_tree = proto_item_add_subtree(sub_item, ett_ch_bitmap);
+ proto_tree_add_item(sub_tree, hf_kdsp_ch_flag_uuid, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(sub_tree, hf_kdsp_ch_flag_cmd, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(sub_tree, hf_kdsp_ch_flag_curch, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(sub_tree, hf_kdsp_ch_flag_hop, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(sub_tree, hf_kdsp_ch_flag_numch, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(sub_tree, hf_kdsp_ch_flag_channels, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(sub_tree, hf_kdsp_ch_flag_dwell, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(sub_tree, hf_kdsp_ch_flag_rate, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(sub_tree, hf_kdsp_ch_flag_hopdwell, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_ch_uuid, tvb, offset, 16, ENC_NA);
+ offset += 16;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_ch_cmd, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_ch_cur_ch, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_ch_hop, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_ch_num_ch, tvb, offset, 2, ENC_BIG_ENDIAN);
+ numChan = (guint16)tvb_get_ntohs(tvb, offset);
+ offset += 2;
+ sub_item = proto_tree_add_item(kdsp_tree, hf_kdsp_ch_data, tvb, offset, 2046, ENC_NA);
+ sub_tree = proto_item_add_subtree(sub_item, ett_ch_data);
+
+ for(i = 0; i<numChan; i++){
+ type = (guint16)tvb_get_ntohs(tvb, offset);
+ type = type >> 15;
+ if(!type){/* Highest bit (1 << 15) == 0 if channel */
+ proto_tree_add_item(sub_tree, hf_kdsp_ch_ch, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(sub_tree, hf_kdsp_ch_dwell, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 6;
+ }
+ else{/* Highest bit (1 << 15) == 1 if range */
+ proto_tree_add_item(sub_tree, hf_kdsp_ch_start, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(sub_tree, hf_kdsp_ch_end, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(sub_tree, hf_kdsp_ch_width, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(sub_tree, hf_kdsp_ch_iter, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ }
+ }
+ offset = length+FRAME_HEADER_LEN-4;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_ch_rate, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_ch_ch_dwell, tvb, offset, 2, ENC_BIG_ENDIAN);
+ /*offset += 2;*/
+ }
+ else if(command == SOURCE){
+ proto_tree_add_item(kdsp_tree, hf_kdsp_source_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset +=2;
+ sub_item = proto_tree_add_item(kdsp_tree, hf_kdsp_ch_bitmap, tvb, offset, 4, ENC_BIG_ENDIAN);
+ sub_tree = proto_item_add_subtree(sub_item, ett_ch_bitmap);
+ proto_tree_add_item(sub_tree, hf_kdsp_ch_flag_uuid, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(kdsp_tree, hf_kdsp_source_bitmap, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset +=4;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_source_uuid, tvb, offset, 16, ENC_NA);
+ offset += 16;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_source_invalidate,
+ tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset +=2;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_source_name, tvb, offset, 16, ENC_ASCII|ENC_NA);
+ offset +=16;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_source_interface,
+ tvb, offset, 16, ENC_ASCII|ENC_NA);
+ offset += 16;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_source_type, tvb, offset, 16, ENC_ASCII|ENC_NA);
+ offset +=16;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_source_hop, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset +=1;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_source_dwell, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_source_rate, tvb, offset, 2, ENC_BIG_ENDIAN);
+ /*offset += 2;*/
+ }
+ else if(command == REPORT){
+ proto_tree_add_item(kdsp_tree, hf_kdsp_report_hdr_len, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_report_content_bitmap, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_report_uuid, tvb, offset, 16, ENC_NA);
+ offset += 16;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_report_flags, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_report_hop_tm_sec, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ proto_tree_add_item(kdsp_tree, hf_kdsp_report_hop_tm_usec, tvb, offset, 4, ENC_BIG_ENDIAN);
+ /*offset += 4;*/
+
+ }
+
+}
+
+static void
+dissect_kdsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ tcp_dissect_pdus(tvb, pinfo, tree, TRUE, FRAME_HEADER_LEN,
+ get_kdsp_message_len, dissect_kdsp_message);
+}
+
+void
+proto_register_kdsp(void)
+{
+ module_t *kdsp_module;
+
+ static hf_register_info hf[] = {
+ { &hf_kdsp_sentinel,
+ { "Sentinel", "kdsp.sentinel",
+ FT_UINT32, BASE_HEX,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_cmdnum,
+ { "Command", "kdsp.command",
+ FT_UINT32, BASE_DEC,
+ VALS(packettypenames), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_length,
+ { "Length", "kdsp.length",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_version,
+ { "KDSP Version", "kdsp.version",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_server_version,
+ { "Server Version", "kdsp.server.version",
+ FT_STRING, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_hostname,
+ { "Hostname", "kdsp.hostname",
+ FT_STRING, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_str_flags,
+ { "String Flags", "kdsp.str.flags",
+ FT_UINT32, BASE_HEX,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_str_len,
+ { "String Length", "kdsp.str.length",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_str_msg,
+ { "Message", "kdsp.str.message",
+ FT_STRING, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_cpt_bitmap,
+ { "Bitmap", "kdsp.cpt.bitmap",
+ FT_UINT32, BASE_HEX,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_cpt_flag_cpt,
+ { "Capture Packet Flag", "kdsp.cpt.flag.cpt",
+ FT_BOOLEAN, 32,
+ NULL, CPT_FLAG,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_cpt_flag_gps,
+ { "Capture GPS Flag", "kdsp.cpt.flag.gps",
+ FT_BOOLEAN, 32,
+ NULL, GPS_FLAG,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_cpt_flag_radio,
+ { "Capture Radio Flag", "kdsp.cpt.flag.radio",
+ FT_BOOLEAN, 32,
+ NULL, RADIO_FLAG,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_cpt_offset,
+ { "Offset", "kdsp.cpt.offset",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_radio_hdr_len,
+ { "Length", "kdsp.radio.length",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_radio_content_bitmap,
+ { "Bitmap", "kdsp.radio.bitmap",
+ FT_UINT32, BASE_HEX,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_radio_accuracy,
+ { "Accuracy", "kdsp.radio.accuracy",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_radio_freq_mhz,
+ { "Frequency", "kdsp.radio.freq",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_radio_signal_dbm,
+ { "Signal dbm", "kdsp.radio.signal_dbm",
+ FT_INT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_radio_noise_dbm,
+ { "Noise dbm", "kdsp.radio.noise_dbm",
+ FT_INT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_radio_carrier,
+ { "Carrier", "kdsp.radio.car",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_radio_encoding,
+ { "Encoding", "kdsp.radio.enc",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_radio_datarate,
+ { "Data Rate", "kdsp.radio.datarate",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_radio_signal_rssi,
+ { "Signal rssi", "kdsp.radio.signal_rssi",
+ FT_INT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_radio_noise_rssi,
+ { "Noise rssi", "kdsp.radio.noise_rssi",
+ FT_INT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_gps_hdr_len,
+ { "GPS Length", "kdsp.gps.length",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_gps_content_bitmap,
+ { "Bitmap", "kdsp.gps.bitmap",
+ FT_UINT32, BASE_HEX,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_gps_fix,
+ { "GPS fix", "kdsp.gps.fix",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_gps_lat,
+ { "Latitude", "kdsp.gps.lat",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_gps_lon,
+ { "Longitude", "kdsp.gps.lon",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_gps_alt,
+ { "Alt", "kdsp.gps.alt",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_gps_spd,
+ { "Spd", "kdsp.gps.spd",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_gps_heading,
+ { "Heading", "kdsp.gps.heading",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_cpt_data_hdr_len,
+ { "Length", "kdsp.cpt.length",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_cpt_data_content_bitmap,
+ { "Bitmap", "kdsp.cpt.bitmap",
+ FT_UINT32, BASE_HEX,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_cpt_uuid,
+ { "UUID", "kdsp.cpt.uuid",
+ FT_BYTES, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_cpt_packet_len,
+ { "Packet Length", "kdsp.cpt.pkt_len",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_cpt_tv_sec,
+ { "TV sec", "kdsp.cpt.tv_sec",
+ FT_UINT64, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_cpt_tv_usec,
+ { "TV usec", "kdsp.cpt.tv_usec",
+ FT_UINT64, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_cpt_dlt,
+ { "dlt", "kdsp.cpt.dlt",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_ch_length,
+ { "Length", "kdsp.chset.length",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_ch_bitmap,
+ { "Bitmap", "kdsp.chset.bitmap",
+ FT_UINT32, BASE_HEX,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_ch_flag_uuid,
+ { "UUID Flag", "kdsp.ch.flag.uuid",
+ FT_BOOLEAN, 32,
+ NULL, CH_UUID_FLAG,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_ch_flag_cmd,
+ { "Command Flag", "kdsp.ch.flag.cmd",
+ FT_BOOLEAN, 32,
+ NULL, CH_CMD_FLAG,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_ch_flag_curch,
+ { "Current Channel Flag", "kdsp.ch.flag.curch",
+ FT_BOOLEAN, 32,
+ NULL, CH_CURCH_FLAG,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_ch_flag_hop,
+ { "Hop Flag", "kdsp.ch.flag.hop",
+ FT_BOOLEAN, 32,
+ NULL, CH_HOP_FLAG,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_ch_flag_numch,
+ { "Num Channels Flag", "kdsp.ch.flag.numch",
+ FT_BOOLEAN, 32,
+ NULL, CH_NUMCH_FLAG,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_ch_flag_channels,
+ { "Channels Flag", "kdsp.ch.flag.channels",
+ FT_BOOLEAN, 32,
+ NULL, CH_CHANNELS_FLAG,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_ch_flag_dwell,
+ { "Dwell Flag", "kdsp.ch.flag.dwell",
+ FT_BOOLEAN, 32,
+ NULL, CH_DWELL_FLAG,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_ch_flag_rate,
+ { "Rate Flag", "kdsp.ch.flag.rate",
+ FT_BOOLEAN, 32,
+ NULL, CH_RATE_FLAG,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_ch_flag_hopdwell,
+ { "Hop-Dwell Flag", "kdsp.ch.flag.hopdwell",
+ FT_BOOLEAN, 32,
+ NULL, CH_HOPDWELL_FLAG,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_ch_uuid,
+ { "UUID", "kdsp.chset.uuid",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_ch_cmd,
+ { "Command", "kdsp.chset.cmd",
+ FT_UINT16, BASE_DEC,
+ VALS(channelcmds), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_ch_cur_ch,
+ { "Current Channel", "kdsp.chset.cur_ch",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_ch_hop,
+ { "Channel Hop", "kdsp.chset.hop",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_ch_num_ch,
+ { "Number of Channels", "kdsp.chset.num_ch",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_ch_data,
+ { "Channel Data", "kdsp.chset.data",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_ch_ch,
+ { "Channel", "kdsp.chset.ch",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_ch_dwell,
+ { "Dwell", "kdsp.chset.dwell",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_ch_start,
+ { "Start", "kdsp.chset.start",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_ch_end,
+ { "End", "kdsp.chset.end",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_ch_width,
+ { "Width", "kdsp.chset.width",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_ch_iter,
+ { "Iter", "kdsp.chset.iter",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_ch_rate,
+ { "Rate", "kdsp.chset.rate",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_ch_ch_dwell,
+ { "Dwell", "kdsp.chset.dwell",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_source_length,
+ { "Length", "kdsp.source.length",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_source_bitmap,
+ { "Source Bitmap", "kdsp.source.bitmap",
+ FT_UINT32, BASE_HEX,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_source_uuid,
+ { "UUID", "kdsp.source.uuid",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_source_invalidate,
+ { "Source Invalidate", "kdsp.source.invalidate",
+ FT_UINT16, BASE_HEX,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_source_name,
+ { "Source Name", "kdsp.server.version",
+ FT_STRING, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_source_interface,
+ { "Interface", "kdsp.source.interface",
+ FT_STRING, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_source_type,
+ { "Type", "kdsp.source.type",
+ FT_STRING, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_source_hop,
+ { "Source Hop", "kdsp.source.hop",
+ FT_UINT8, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_source_dwell,
+ { "Source Dwell", "kdsp.source.dwell",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_source_rate,
+ { "Source Rate", "kdsp.source.rate",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_report_hdr_len,
+ { "Length", "kdsp.report.length",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_report_content_bitmap,
+ { "Bitmap", "kdsp.report.bitmap",
+ FT_UINT32, BASE_HEX,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_report_uuid,
+ { "UUID", "kdsp.report.uuid",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_report_flags,
+ { "flags", "kdsp.report.flags",
+ FT_UINT8, BASE_HEX,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_report_hop_tm_sec,
+ { "Hop Time (sec)", "kdsp.report.sec",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_kdsp_report_hop_tm_usec,
+ { "Hop Time (usec)", "kdsp.report.usec",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL }
+ }
+ };
+
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_kdsp_pdu,
+ &ett_cpt_bitmap,
+ &ett_ch_bitmap,
+ &ett_ch_data
+ };
+
+ proto_kdsp = proto_register_protocol(
+ "Kismet Drone/Server Protocol",
+ "KDSP",
+ "kdsp"
+ );
+
+ proto_register_field_array(proto_kdsp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+
+
+ kdsp_module = prefs_register_protocol(proto_kdsp, proto_reg_handoff_kdsp);
+
+ prefs_register_uint_preference(kdsp_module, "tcp.port",
+ "Kismet Drone TCP Port",
+ "Set the port for Kismet Drone/Server messages (if other"
+ " than the default of 2502)", 10,
+ &global_kdsp_tcp_port);
+
+}
+
+
+void
+proto_reg_handoff_kdsp(void)
+{
+ static gboolean initialized = FALSE;
+ static guint tcp_port;
+
+ if(!initialized) {
+ kdsp_handle = create_dissector_handle(dissect_kdsp, proto_kdsp);
+ ieee80211_handle = find_dissector("wlan");
+ }else{
+ dissector_delete_uint("tcp.port", tcp_port, kdsp_handle);
+ }
+
+ tcp_port = global_kdsp_tcp_port;
+
+ dissector_add_uint("tcp.port", global_kdsp_tcp_port, kdsp_handle);
+
+}
+
+/*
+ * Editor modelines - http://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 2
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vi: set shiftwidth=2 tabstop=8 expandtab:
+ * :indentSize=2:tabSize=8:noTabs=true:
+ */
diff --git a/epan/dissectors/packet-kerberos.c b/epan/dissectors/packet-kerberos.c
index 41a0e14574..6947a45a37 100644
--- a/epan/dissectors/packet-kerberos.c
+++ b/epan/dissectors/packet-kerberos.c
@@ -65,8 +65,8 @@
#include <stdio.h>
#include <string.h>
+
#include <glib.h>
-#include <ctype.h>
#ifdef HAVE_LIBNETTLE
#define HAVE_KERBEROS
@@ -851,7 +851,6 @@ decrypt_krb5_data(proto_tree *tree, packet_info *pinfo,
{
tvbuff_t *encr_tvb;
guint8 *decrypted_data = NULL, *plaintext = NULL;
- int res;
guint8 cls;
gboolean pc;
guint32 tag, item_len, data_len;
@@ -893,7 +892,7 @@ decrypt_krb5_data(proto_tree *tree, packet_info *pinfo,
md5_init(&md5s);
memset(initial_vector, 0, DES_BLOCK_SIZE);
- res = des3_set_key(&ctx, key);
+ des3_set_key(&ctx, key);
cbc_decrypt(&ctx, des3_decrypt, DES_BLOCK_SIZE, initial_vector,
length, decrypted_data, cryptotext);
encr_tvb = tvb_new_real_data(decrypted_data, length, length);
@@ -2816,7 +2815,7 @@ dissect_krb5_PAC_CLIENT_INFO_TYPE(proto_tree *parent_tree, tvbuff_t *tvb, int of
offset+=2;
/* client name */
- name=tvb_get_ephemeral_unicode_string(tvb, offset, namelen/2, ENC_LITTLE_ENDIAN);
+ name=tvb_get_ephemeral_unicode_string(tvb, offset, namelen, ENC_LITTLE_ENDIAN);
proto_tree_add_string(tree, hf_krb_pac_clientname, tvb, offset, namelen, name);
offset+=namelen;
@@ -5251,7 +5250,7 @@ proto_register_kerberos(void)
"TransitedEncoding", "kerberos.TransitedEncoding", FT_NONE, BASE_NONE,
NULL, 0, "This is a Kerberos TransitedEncoding sequence", HFILL }},
{ &hf_krb_PA_PAC_REQUEST_flag, {
- "PAC Request", "kerberos.pac_request.flag", FT_BOOLEAN, 32,
+ "PAC Request", "kerberos.pac_request.flag", FT_BOOLEAN, BASE_NONE,
NULL, 0, "This is a MS PAC Request Flag", HFILL }},
{ &hf_krb_w2k_pac_entries, {
"Num Entries", "kerberos.pac.entries", FT_UINT32, BASE_DEC,
diff --git a/epan/dissectors/packet-l1-events.c b/epan/dissectors/packet-l1-events.c
index 43e3d16fec..cd3bd56eb5 100644
--- a/epan/dissectors/packet-l1-events.c
+++ b/epan/dissectors/packet-l1-events.c
@@ -33,9 +33,8 @@
#include "config.h"
#endif
-#include <ctype.h>
-
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/strutil.h>
diff --git a/epan/dissectors/packet-l2tp.c b/epan/dissectors/packet-l2tp.c
index 63a7edc535..d06c2b3948 100644
--- a/epan/dissectors/packet-l2tp.c
+++ b/epan/dissectors/packet-l2tp.c
@@ -35,7 +35,7 @@
* http://tools.ietf.org/html/rfc3931
*
* Layer Two Tunneling Protocol "L2TP" number assignments:
- * http://www.iana.org/assignments/l2tp-parameters
+ * http://www.iana.org/assignments/l2tp-parameters
*
* Pseudowire types:
*
@@ -54,6 +54,18 @@
* XXX - what about LAPD?
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+#include <epan/addr_resolv.h>
+#include <epan/ipproto.h>
+#include <epan/sminmpec.h>
+#include <epan/prefs.h>
+
static int proto_l2tp = -1;
static int hf_l2tp_type = -1;
static int hf_l2tp_length_bit = -1;
@@ -89,43 +101,31 @@ static int hf_l2tp_l2_spec_g = -1;
static int hf_l2tp_l2_spec_c = -1;
static int hf_l2tp_l2_spec_u = -1;
static int hf_l2tp_cisco_avp_type = -1;
+static int hf_l2tp_avp_message_type = -1;
static int hf_l2tp_avp_assigned_tunnel_id = -1;
static int hf_l2tp_avp_assigned_control_conn_id = -1;
static int hf_l2tp_avp_assigned_session_id = -1;
static int hf_l2tp_avp_remote_session_id = -1;
static int hf_l2tp_avp_local_session_id = -1;
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <stdlib.h>
-#include <ctype.h>
-#include <glib.h>
-#include <epan/packet.h>
-#include <epan/addr_resolv.h>
-#include <epan/ipproto.h>
-#include <epan/sminmpec.h>
-#include <epan/prefs.h>
-
#define UDP_PORT_L2TP 1701
-#define CONTROL_BIT(msg_info) (msg_info & 0x8000) /* Type bit control = 1 data = 0 */
-#define LENGTH_BIT(msg_info) (msg_info & 0x4000) /* Length bit = 1 */
-#define RESERVE_BITS(msg_info) (msg_info &0x37F8) /* Reserved bit - usused */
-#define SEQUENCE_BIT(msg_info) (msg_info & 0x0800) /* SEQUENCE bit = 1 Ns and Nr fields */
-#define OFFSET_BIT(msg_info) (msg_info & 0x0200) /* Offset */
-#define PRIORITY_BIT(msg_info) (msg_info & 0x0100) /* Priority */
-#define L2TP_VERSION(msg_info) (msg_info & 0x000f) /* Version of l2tp */
-#define MANDATORY_BIT(msg_info) (msg_info & 0x8000) /* Mandatory = 1 */
-#define HIDDEN_BIT(msg_info) (msg_info & 0x4000) /* Hidden = 1 */
-#define AVP_LENGTH(msg_info) (msg_info & 0x03ff) /* AVP Length */
-#define FRAMING_SYNC(msg_info) (msg_info & 0x0001) /* SYNC Framing Type */
-#define FRAMING_ASYNC(msg_info) (msg_info & 0x0002) /* ASYNC Framing Type */
-#define BEARER_DIGITAL(msg_info) (msg_info & 0x0001) /* Digital Bearer Type */
-#define BEARER_ANALOG(msg_info) (msg_info & 0x0002) /* Analog Bearer Type */
-#define CIRCUIT_STATUS_BIT(msg_info) (msg_info & 0x0001) /* Circuit Status */
-#define CIRCUIT_TYPE_BIT(msg_info) (msg_info & 0x0001) /* Circuit Condition */
+#define CONTROL_BIT(msg_info) (msg_info & 0x8000) /* Type bit control = 1 data = 0 */
+#define LENGTH_BIT(msg_info) (msg_info & 0x4000) /* Length bit = 1 */
+#define RESERVE_BITS(msg_info) (msg_info &0x37F8) /* Reserved bit - usused */
+#define SEQUENCE_BIT(msg_info) (msg_info & 0x0800) /* SEQUENCE bit = 1 Ns and Nr fields */
+#define OFFSET_BIT(msg_info) (msg_info & 0x0200) /* Offset */
+#define PRIORITY_BIT(msg_info) (msg_info & 0x0100) /* Priority */
+#define L2TP_VERSION(msg_info) (msg_info & 0x000f) /* Version of l2tp */
+#define MANDATORY_BIT(msg_info) (msg_info & 0x8000) /* Mandatory = 1 */
+#define HIDDEN_BIT(msg_info) (msg_info & 0x4000) /* Hidden = 1 */
+#define AVP_LENGTH(msg_info) (msg_info & 0x03ff) /* AVP Length */
+#define FRAMING_SYNC(msg_info) (msg_info & 0x0001) /* SYNC Framing Type */
+#define FRAMING_ASYNC(msg_info) (msg_info & 0x0002) /* ASYNC Framing Type */
+#define BEARER_DIGITAL(msg_info) (msg_info & 0x0001) /* Digital Bearer Type */
+#define BEARER_ANALOG(msg_info) (msg_info & 0x0002) /* Analog Bearer Type */
+#define CIRCUIT_STATUS_BIT(msg_info) (msg_info & 0x0001) /* Circuit Status */
+#define CIRCUIT_TYPE_BIT(msg_info) (msg_info & 0x0001) /* Circuit Condition */
/* DOCSIS DMPT Sub-Layer Header definitions */
#define FLOW_ID_MASK 0x0E
@@ -144,28 +144,28 @@ static enum_val_t l2tpv3_cookies[] = {
{NULL, NULL, 0}
};
-#define L2TPv3_PROTOCOL_ETH 0
-#define L2TPv3_PROTOCOL_CHDLC 1
-#define L2TPv3_PROTOCOL_FR 2
-#define L2TPv3_PROTOCOL_PPP 3
-#define L2TPv3_PROTOCOL_IP 4
-#define L2TPv3_PROTOCOL_MPLS 5
-#define L2TPv3_PROTOCOL_AAL5 6
-#define L2TPv3_PROTOCOL_LAPD 7
+#define L2TPv3_PROTOCOL_ETH 0
+#define L2TPv3_PROTOCOL_CHDLC 1
+#define L2TPv3_PROTOCOL_FR 2
+#define L2TPv3_PROTOCOL_PPP 3
+#define L2TPv3_PROTOCOL_IP 4
+#define L2TPv3_PROTOCOL_MPLS 5
+#define L2TPv3_PROTOCOL_AAL5 6
+#define L2TPv3_PROTOCOL_LAPD 7
#define L2TPv3_PROTOCOL_DOCSIS_DMPT 8
-#define L2TPv3_PROTOCOL_ERICSSON 9
+#define L2TPv3_PROTOCOL_ERICSSON 9
static enum_val_t l2tpv3_protocols[] = {
- {"eth", "Ethernet", L2TPv3_PROTOCOL_ETH},
- {"chdlc", "Cisco HDLC", L2TPv3_PROTOCOL_CHDLC},
- {"fr", "Frame Relay", L2TPv3_PROTOCOL_FR},
- {"ppp", "PPP", L2TPv3_PROTOCOL_PPP},
- {"ip", "IP", L2TPv3_PROTOCOL_IP},
- {"mpls", "MPLS", L2TPv3_PROTOCOL_MPLS},
- {"aal5", "AAL5", L2TPv3_PROTOCOL_AAL5},
- {"lapd", "LAPD", L2TPv3_PROTOCOL_LAPD},
- {"docsis-dmpt", "DOCSIS-DMPT", L2TPv3_PROTOCOL_DOCSIS_DMPT},
- {"ehdlc", "Ericsson HDLC", L2TPv3_PROTOCOL_ERICSSON},
+ {"eth", "Ethernet", L2TPv3_PROTOCOL_ETH},
+ {"chdlc", "Cisco HDLC", L2TPv3_PROTOCOL_CHDLC},
+ {"fr", "Frame Relay", L2TPv3_PROTOCOL_FR},
+ {"ppp", "PPP", L2TPv3_PROTOCOL_PPP},
+ {"ip", "IP", L2TPv3_PROTOCOL_IP},
+ {"mpls", "MPLS", L2TPv3_PROTOCOL_MPLS},
+ {"aal5", "AAL5", L2TPv3_PROTOCOL_AAL5},
+ {"lapd", "LAPD", L2TPv3_PROTOCOL_LAPD},
+ {"docsis-dmpt", "DOCSIS-DMPT", L2TPv3_PROTOCOL_DOCSIS_DMPT},
+ {"ehdlc", "Ericsson HDLC", L2TPv3_PROTOCOL_ERICSSON},
{NULL, NULL, 0}
};
@@ -188,394 +188,404 @@ static gint l2tpv3_cookie = 4;
static gint l2tpv3_protocol = L2TPv3_PROTOCOL_CHDLC;
static gint l2tpv3_l2_specific = L2TPv3_L2_SPECIFIC_DEFAULT;
-#define AVP_SCCRQ 1
-#define AVP_SCCRP 2
-#define AVP_SCCCN 3
-#define AVP_StopCCN 4
-#define AVP_Reserved 5
-#define AVP_HELLO 6
-#define AVP_OCRQ 7
-#define AVP_OCRP 8
-#define AVP_ORCRP 9
-#define AVP_ICRQ 10
-#define AVP_ICRP 11
-#define AVP_ICCN 12
-#define AVP_Reserved1 13
-#define AVP_CDN 14
-
-#define NUM_CONTROL_CALL_TYPES 27
-static const char *calltypestr[NUM_CONTROL_CALL_TYPES+1] = {
- "Unknown Call Type",
- "Start_Control_Request",
- "Start_Control_Reply",
- "Start_Control_Connected",
- "Stop_Control_Notification",
- "Reserved", /* 5*/
- "Hello",
- "Outgoing_Call_Request",
- "Outgoing_Call_Reply",
- "Outgoing_Call_Connected",
- "Incoming_Call_Request", /* 10 */
- "Incoming_Call_Reply",
- "Incoming_Call_Connected",
- "Reserved", /* 13 */
- "Call_Disconnect_Notification",
- "WAN_Error_Notify", /* 15 */
- "Set_Link_Info",
- "Modem_Status",
- "Service_Relay_Request_Msg",
- "Service_Relay_Reply_Message",
- "Explicit_Acknowledgement", /* 20 */
- "Failover_Session_Query_Message", /* 21 [RFC4951] */
- "Failover_Session_Response_Message", /* 22 [RFC4951] */
- /* Multicast Management */
- "Multicast-Session-Request", /* 23 [RFC4045]*/
- "Multicast-Session-Response ", /* 24 [RFC4045]*/
- "Multicast-Session-Establishment", /* 25 [RFC4045]*/
- "Multicast-Session-Information", /* 26 [RFC4045]*/
- "Multicast-Session-End-Notify", /* 27 [RFC4045]*/
-
+#define MESSAGE_TYPE_SCCRQ 1
+#define MESSAGE_TYPE_SCCRP 2
+#define MESSAGE_TYPE_SCCCN 3
+#define MESSAGE_TYPE_StopCCN 4
+#define MESSAGE_TYPE_Reserved_5 5
+#define MESSAGE_TYPE_HELLO 6
+#define MESSAGE_TYPE_OCRQ 7
+#define MESSAGE_TYPE_OCRP 8
+#define MESSAGE_TYPE_OCCN 9
+#define MESSAGE_TYPE_ICRQ 10
+#define MESSAGE_TYPE_ICRP 11
+#define MESSAGE_TYPE_ICCN 12
+#define MESSAGE_TYPE_Reserved_13 13
+#define MESSAGE_TYPE_CDN 14
+#define MESSAGE_TYPE_WEN 15
+#define MESSAGE_TYPE_SLI 16
+#define MESSAGE_TYPE_MDMST 17
+#define MESSAGE_TYPE_SRRQ 18
+#define MESSAGE_TYPE_SRRP 19
+#define MESSAGE_TYPE_ACK 20
+#define MESSAGE_TYPE_FSQ 21
+#define MESSAGE_TYPE_FSR 22
+#define MESSAGE_TYPE_MSRQ 23
+#define MESSAGE_TYPE_MSRP 24
+#define MESSAGE_TYPE_MSE 25
+#define MESSAGE_TYPE_MSI 26
+#define MESSAGE_TYPE_MSEN 27
+
+static const value_string message_type_vals[] = {
+ { MESSAGE_TYPE_SCCRQ, "Start_Control_Request" },
+ { MESSAGE_TYPE_SCCRP, "Start_Control_Reply" },
+ { MESSAGE_TYPE_SCCCN, "Start_Control_Connected" },
+ { MESSAGE_TYPE_StopCCN, "Stop_Control_Notification" },
+ { MESSAGE_TYPE_HELLO, "Hello" },
+ { MESSAGE_TYPE_OCRQ, "Outgoing_Call_Request" },
+ { MESSAGE_TYPE_OCRP, "Outgoing_Call_Reply" },
+ { MESSAGE_TYPE_OCCN, "Outgoing_Call_Connected" },
+ { MESSAGE_TYPE_ICRQ, "Incoming_Call_Request" },
+ { MESSAGE_TYPE_ICRP, "Incoming_Call_Reply" },
+ { MESSAGE_TYPE_ICCN, "Incoming_Call_Connected" },
+ { MESSAGE_TYPE_CDN, "Call_Disconnect_Notification" },
+ { MESSAGE_TYPE_WEN, "WAN_Error_Notify" },
+ { MESSAGE_TYPE_SLI, "Set_Link_Info" },
+ { MESSAGE_TYPE_MDMST, "Modem_Status" },
+ { MESSAGE_TYPE_SRRQ, "Service_Relay_Request_Msg" },
+ { MESSAGE_TYPE_SRRP, "Service_Relay_Reply_Message" },
+ { MESSAGE_TYPE_ACK, "Explicit_Acknowledgement" },
+ /* Fail Over Extensions - RFC4951 */
+ { MESSAGE_TYPE_FSQ, "Failover_Session_Query_Message" },
+ { MESSAGE_TYPE_FSR, "Failover_Session_Response_Message" },
+ /* Multicast Management - RFC4045 */
+ { MESSAGE_TYPE_MSRQ, "Multicast-Session-Request" },
+ { MESSAGE_TYPE_MSRP, "Multicast-Session-Response" },
+ { MESSAGE_TYPE_MSE, "Multicast-Session-Establishment" },
+ { MESSAGE_TYPE_MSI, "Multicast-Session-Information" },
+ { MESSAGE_TYPE_MSEN, "Multicast-Session-End-Notify" },
+ { 0, NULL },
};
-static const char *calltype_short_str[NUM_CONTROL_CALL_TYPES+1] = {
- "Unknown ",
- "SCCRQ ",
- "SCCRP ",
- "SCCCN ",
- "StopCCN ",
- "Reserved", /* 5 */
- "Hello ",
- "OCRQ ",
- "OCRP ",
- "OCCN ",
- "ICRQ ", /* 10 */
- "ICRP ",
- "ICCN ",
- "Reserved",
- "CDN ",
- "WEN ", /* 15 */
- "SLI ",
- "MDMST ",
- "SRRQ ",
- "SRRP ",
- "ACK ", /* 20 */
- "FSQ ",
- "FSR ",
- "MSRQ ",
- "MSRP ",
- "MSE ", /* 25 */
- "MSI ",
- "MSEN ",
-
+static const value_string l2tp_message_type_short_str_vals[] = {
+ { MESSAGE_TYPE_SCCRQ, "SCCRQ" },
+ { MESSAGE_TYPE_SCCRP, "SCCRP" },
+ { MESSAGE_TYPE_SCCCN, "SCCCN" },
+ { MESSAGE_TYPE_StopCCN, "StopCCN" },
+ { 5, "Reserved"},
+ { MESSAGE_TYPE_HELLO, "Hello" },
+ { MESSAGE_TYPE_OCRQ, "OCRQ" },
+ { MESSAGE_TYPE_OCRP, "OCRP" },
+ { MESSAGE_TYPE_OCCN, "OCCN" },
+ { MESSAGE_TYPE_ICRQ, "ICRQ" },
+ { MESSAGE_TYPE_ICRP, "ICRP" },
+ { MESSAGE_TYPE_ICCN, "ICCN" },
+ { 13, "Reserved"},
+ { MESSAGE_TYPE_CDN, "CDN" },
+ { MESSAGE_TYPE_WEN, "WEN" },
+ { MESSAGE_TYPE_SLI, "SLI" },
+ { MESSAGE_TYPE_MDMST, "MDMST" },
+ { MESSAGE_TYPE_SRRQ, "SRRQ" },
+ { MESSAGE_TYPE_SRRP, "SRRP" },
+ { MESSAGE_TYPE_ACK, "ACK" },
+ /* Fail Over Extensions - RFC4951 */
+ { MESSAGE_TYPE_FSQ, "FSQ" },
+ { MESSAGE_TYPE_FSR, "FSR" },
+ /* Multicast Management - RFC4045 */
+ { MESSAGE_TYPE_MSRQ, "MSRQ" },
+ { MESSAGE_TYPE_MSRP, "MSRP" },
+ { MESSAGE_TYPE_MSE, "MSE" },
+ { MESSAGE_TYPE_MSI, "MSI" },
+ { MESSAGE_TYPE_MSEN, "MSEN" },
+ { 0, NULL },
};
-static const char *control_msg = "Control Message";
-static const char *data_msg = "Data Message";
+static const char *control_msg = "Control Message";
+static const char *data_msg = "Data Message";
static const value_string l2tp_type_vals[] = {
- { 0, "Data Message" },
- { 1, "Control Message" },
- { 0, NULL },
+ { 0, "Data Message" },
+ { 1, "Control Message" },
+ { 0, NULL },
};
static const value_string cause_code_direction_vals[] = {
- { 0, "global error" },
- { 1, "at peer" },
- { 2, "at local" },
- { 0, NULL },
+ { 0, "global error" },
+ { 1, "at peer" },
+ { 2, "at local" },
+ { 0, NULL },
};
static const true_false_string l2tp_length_bit_truth =
- { "Length field is present", "Length field is not present" };
+ { "Length field is present", "Length field is not present" };
static const true_false_string l2tp_seq_bit_truth =
- { "Ns and Nr fields are present", "Ns and Nr fields are not present" };
+ { "Ns and Nr fields are present", "Ns and Nr fields are not present" };
static const true_false_string l2tp_offset_bit_truth =
- { "Offset Size field is present", "Offset size field is not present" };
+ { "Offset Size field is present", "Offset size field is not present" };
static const true_false_string l2tp_priority_truth =
- { "This data message has priority", "No priority" };
+ { "This data message has priority", "No priority" };
static const value_string authen_type_vals[] = {
- { 0, "Reserved" },
- { 1, "Textual username/password exchange" },
- { 2, "PPP CHAP" },
- { 3, "PPP PAP" },
- { 4, "No Authentication" },
- { 5, "Microsoft CHAP Version 1" },
- { 6, "Reserved" },
- { 7, "EAP" },
- { 0, NULL }
+ { 0, "Reserved" },
+ { 1, "Textual username/password exchange" },
+ { 2, "PPP CHAP" },
+ { 3, "PPP PAP" },
+ { 4, "No Authentication" },
+ { 5, "Microsoft CHAP Version 1" },
+ { 6, "Reserved" },
+ { 7, "EAP" },
+ { 0, NULL }
};
static const value_string data_sequencing_vals[] = {
- { 0, "No incoming data packets require sequencing" },
- { 1, "Only non-IP data packets require sequencing" },
- { 2, "All incoming data packets require sequencing" },
- { 0, NULL }
+ { 0, "No incoming data packets require sequencing" },
+ { 1, "Only non-IP data packets require sequencing" },
+ { 2, "All incoming data packets require sequencing" },
+ { 0, NULL }
};
static const value_string l2_sublayer_vals[] = {
- { 0, "No L2-Specific Sublayer" },
- { 1, "Default L2-Specific Sublayer present" },
- { 2, "ATM-Specific Sublayer present" },
- { 3, "MPT-Specific Sublayer" },
- { 4, "PSP-Specific Sublayer" },
- { 0, NULL }
+ { 0, "No L2-Specific Sublayer" },
+ { 1, "Default L2-Specific Sublayer present" },
+ { 2, "ATM-Specific Sublayer present" },
+ { 3, "MPT-Specific Sublayer" },
+ { 4, "PSP-Specific Sublayer" },
+ { 0, NULL }
};
static const value_string result_code_stopccn_vals[] = {
- { 0, "Reserved", },
- { 1, "General request to clear control connection", },
- { 2, "General error, Error Code indicates the problem", },
- { 3, "Control connection already exists", },
- { 4, "Requester is not authorized to establish a control connection", },
- { 5, "The protocol version of the requester is not supported", },
- { 6, "Requester is being shut down", },
- { 7, "Finite state machine error or timeout", },
- { 8, "Control connection due to mismatching CCDS value", }, /* [RFC3308] */
- { 0, NULL }
+ { 0, "Reserved", },
+ { 1, "General request to clear control connection", },
+ { 2, "General error, Error Code indicates the problem", },
+ { 3, "Control connection already exists", },
+ { 4, "Requester is not authorized to establish a control connection", },
+ { 5, "The protocol version of the requester is not supported", },
+ { 6, "Requester is being shut down", },
+ { 7, "Finite state machine error or timeout", },
+ { 8, "Control connection due to mismatching CCDS value", }, /* [RFC3308] */
+ { 0, NULL }
};
static const value_string result_code_cdn_vals[] = {
- { 0, "Reserved", },
- { 1, "Session disconnected due to loss of carrier or circuit disconnect", },
- { 2, "Session disconnected for the reason indicated in Error Code", },
- { 3, "Session disconnected for administrative reasons", },
- { 4, "Appropriate facilities unavailable (temporary condition)", },
- { 5, "Appropriate facilities unavailable (permanent condition)", },
- { 6, "Invalid destination", },
- { 7, "Call failed due to no carrier detected", },
- { 8, "Call failed due to detection of a busy signal", },
- { 9, "Call failed due to lack of a dial tone", },
- { 10, "Call was not established within time allotted by LAC", },
- { 11, "Call was connected but no appropriate framing was detected", },
- { 12, "Disconnecting call due to mismatching SDS value", },
- { 13, "Session not established due to losing tie breaker", },
- { 14, "Session not established due to unsupported PW type", },
- { 15, "Session not established, sequencing required without valid L2-Specific Sublayer", },
- { 16, "Finite state machine error or timeout", },
- { 17, "FR PVC was deleted permanently (no longer provisioned) ", }, /* [RFC4591] */
- { 18, "FR PVC has been INACTIVE for an extended period of time", }, /* [RFC4591] */
- { 19, "Mismatched FR Header Length", }, /* [RFC4591] */
- { 20, "HDLC Link was deleted permanently (no longer provisioned)", }, /* [RFC4349] */
- { 21, "HDLC Link has been INACTIVE for an extended period of time", }, /* [RFC4349] */
- { 22, "Session not established due to other LCCE can not support the OAM Cell Emulation", }, /* [RFC4454] */
- { 23, "Mismatching interface MTU", }, /* [RFC4667] */
- { 24, "Attempt to connect to non-existent forwarder", }, /* [RFC4667] */
- { 25, "Attempt to connect to unauthorized forwarder", }, /* [RFC4667] */
- { 26, "Loop Detected", }, /* [draft-ietf-l2tpext-tunnel-switching-06.txt] */
-
-
- { 0, NULL }
+ { 0, "Reserved", },
+ { 1, "Session disconnected due to loss of carrier or circuit disconnect", },
+ { 2, "Session disconnected for the reason indicated in Error Code", },
+ { 3, "Session disconnected for administrative reasons", },
+ { 4, "Appropriate facilities unavailable (temporary condition)", },
+ { 5, "Appropriate facilities unavailable (permanent condition)", },
+ { 6, "Invalid destination", },
+ { 7, "Call failed due to no carrier detected", },
+ { 8, "Call failed due to detection of a busy signal", },
+ { 9, "Call failed due to lack of a dial tone", },
+ { 10, "Call was not established within time allotted by LAC", },
+ { 11, "Call was connected but no appropriate framing was detected", },
+ { 12, "Disconnecting call due to mismatching SDS value", },
+ { 13, "Session not established due to losing tie breaker", },
+ { 14, "Session not established due to unsupported PW type", },
+ { 15, "Session not established, sequencing required without valid L2-Specific Sublayer", },
+ { 16, "Finite state machine error or timeout", },
+ { 17, "FR PVC was deleted permanently (no longer provisioned) ", }, /* [RFC4591] */
+ { 18, "FR PVC has been INACTIVE for an extended period of time", }, /* [RFC4591] */
+ { 19, "Mismatched FR Header Length", }, /* [RFC4591] */
+ { 20, "HDLC Link was deleted permanently (no longer provisioned)", }, /* [RFC4349] */
+ { 21, "HDLC Link has been INACTIVE for an extended period of time", }, /* [RFC4349] */
+ { 22, "Session not established due to other LCCE can not support the OAM Cell Emulation", }, /* [RFC4454] */
+ { 23, "Mismatching interface MTU", }, /* [RFC4667] */
+ { 24, "Attempt to connect to non-existent forwarder", }, /* [RFC4667] */
+ { 25, "Attempt to connect to unauthorized forwarder", }, /* [RFC4667] */
+ { 26, "Loop Detected", }, /* [draft-ietf-l2tpext-tunnel-switching-06.txt] */
+
+
+ { 0, NULL }
};
static const value_string error_code_vals[] = {
- { 0, "No General Error", },
- { 1, "No control connection exists yet for this pair of LCCEs", },
- { 2, "Length is wrong", },
- { 3, "One of the field values was out of range", },
- { 4, "Insufficient resources to handle this operation now", },
- { 5, "Invalid Session ID", },
- { 6, "A generic vendor-specific error occurred", },
- { 7, "Try another", },
- { 8, "Receipt of an unknown AVP with the M bit set", },
- { 9, "Try another directed", },
- { 10, "Next hop unreachable", },
- { 11, "Next hop busy", },
- { 12, "TSA busy", },
- { 0, NULL }
+ { 0, "No General Error", },
+ { 1, "No control connection exists yet for this pair of LCCEs", },
+ { 2, "Length is wrong", },
+ { 3, "One of the field values was out of range", },
+ { 4, "Insufficient resources to handle this operation now", },
+ { 5, "Invalid Session ID", },
+ { 6, "A generic vendor-specific error occurred", },
+ { 7, "Try another", },
+ { 8, "Receipt of an unknown AVP with the M bit set", },
+ { 9, "Try another directed", },
+ { 10, "Next hop unreachable", },
+ { 11, "Next hop busy", },
+ { 12, "TSA busy", },
+ { 0, NULL }
};
-#define CONTROL_MESSAGE 0
-#define RESULT_ERROR_CODE 1
-#define PROTOCOL_VERSION 2
-#define FRAMING_CAPABILITIES 3
-#define BEARER_CAPABILITIES 4
-#define TIE_BREAKER 5
-#define FIRMWARE_REVISION 6
-#define HOST_NAME 7
-#define VENDOR_NAME 8
-#define ASSIGNED_TUNNEL_ID 9
-#define RECEIVE_WINDOW_SIZE 10
-#define CHALLENGE 11
-#define CAUSE_CODE 12
-#define CHALLENGE_RESPONSE 13
-#define ASSIGNED_SESSION 14
-#define CALL_SERIAL_NUMBER 15
-#define MINIMUM_BPS 16
-#define MAXIMUM_BPS 17
-#define BEARER_TYPE 18
-#define FRAMING_TYPE 19
-#define CALLED_NUMBER 21
-#define CALLING_NUMBER 22
-#define SUB_ADDRESS 23
-#define TX_CONNECT_SPEED 24
-#define PHYSICAL_CHANNEL 25
+#define CONTROL_MESSAGE 0
+#define RESULT_ERROR_CODE 1
+#define PROTOCOL_VERSION 2
+#define FRAMING_CAPABILITIES 3
+#define BEARER_CAPABILITIES 4
+#define TIE_BREAKER 5
+#define FIRMWARE_REVISION 6
+#define HOST_NAME 7
+#define VENDOR_NAME 8
+#define ASSIGNED_TUNNEL_ID 9
+#define RECEIVE_WINDOW_SIZE 10
+#define CHALLENGE 11
+#define CAUSE_CODE 12
+#define CHALLENGE_RESPONSE 13
+#define ASSIGNED_SESSION 14
+#define CALL_SERIAL_NUMBER 15
+#define MINIMUM_BPS 16
+#define MAXIMUM_BPS 17
+#define BEARER_TYPE 18
+#define FRAMING_TYPE 19
+#define CALLED_NUMBER 21
+#define CALLING_NUMBER 22
+#define SUB_ADDRESS 23
+#define TX_CONNECT_SPEED 24
+#define PHYSICAL_CHANNEL 25
#define INITIAL_RECEIVED_LCP_CONFREQ 26
-#define LAST_SENT_LCP_CONFREQ 27
-#define LAST_RECEIVED_LCP_CONFREQ 28
-#define PROXY_AUTHEN_TYPE 29
-#define PROXY_AUTHEN_NAME 30
-#define PROXY_AUTHEN_CHALLENGE 31
-#define PROXY_AUTHEN_ID 32
-#define PROXY_AUTHEN_RESPONSE 33
-#define CALL_STATUS_AVPS 34
-#define ACCM 35
-#define RANDOM_VECTOR 36
-#define PRIVATE_GROUP_ID 37
-#define RX_CONNECT_SPEED 38
-#define SEQUENCING_REQUIRED 39
-#define PPP_DISCONNECT_CAUSE_CODE 46 /* RFC 3145 */
-#define EXTENDED_VENDOR_ID 58
-#define MESSAGE_DIGEST 59
-#define ROUTER_ID 60
-#define ASSIGNED_CONTROL_CONN_ID 61
-#define PW_CAPABILITY_LIST 62
-#define LOCAL_SESSION_ID 63
-#define REMOTE_SESSION_ID 64
-#define ASSIGNED_COOKIE 65
-#define REMOTE_END_ID 66
-#define PW_TYPE 68
-#define L2_SPECIFIC_SUBLAYER 69
-#define DATA_SEQUENCING 70
-#define CIRCUIT_STATUS 71
-#define PREFERRED_LANGUAGE 72
-#define CTL_MSG_AUTH_NONCE 73
-#define TX_CONNECT_SPEED_V3 74
-#define RX_CONNECT_SPEED_V3 75
-
-#define NUM_AVP_TYPES 96
+#define LAST_SENT_LCP_CONFREQ 27
+#define LAST_RECEIVED_LCP_CONFREQ 28
+#define PROXY_AUTHEN_TYPE 29
+#define PROXY_AUTHEN_NAME 30
+#define PROXY_AUTHEN_CHALLENGE 31
+#define PROXY_AUTHEN_ID 32
+#define PROXY_AUTHEN_RESPONSE 33
+#define CALL_STATUS_AVPS 34
+#define ACCM 35
+#define RANDOM_VECTOR 36
+#define PRIVATE_GROUP_ID 37
+#define RX_CONNECT_SPEED 38
+#define SEQUENCING_REQUIRED 39
+#define PPP_DISCONNECT_CAUSE_CODE 46 /* RFC 3145 */
+#define EXTENDED_VENDOR_ID 58
+#define MESSAGE_DIGEST 59
+#define ROUTER_ID 60
+#define ASSIGNED_CONTROL_CONN_ID 61
+#define PW_CAPABILITY_LIST 62
+#define LOCAL_SESSION_ID 63
+#define REMOTE_SESSION_ID 64
+#define ASSIGNED_COOKIE 65
+#define REMOTE_END_ID 66
+#define PW_TYPE 68
+#define L2_SPECIFIC_SUBLAYER 69
+#define DATA_SEQUENCING 70
+#define CIRCUIT_STATUS 71
+#define PREFERRED_LANGUAGE 72
+#define CTL_MSG_AUTH_NONCE 73
+#define TX_CONNECT_SPEED_V3 74
+#define RX_CONNECT_SPEED_V3 75
+
+#define NUM_AVP_TYPES 96
static const value_string avp_type_vals[] = {
- { CONTROL_MESSAGE, "Control Message" },
- { RESULT_ERROR_CODE, "Result-Error Code" },
- { PROTOCOL_VERSION, "Protocol Version" },
- { FRAMING_CAPABILITIES, "Framing Capabilities" },
- { BEARER_CAPABILITIES, "Bearer Capabilities" },
- { TIE_BREAKER, "Tie Breaker" },
- { FIRMWARE_REVISION, "Firmware Revision" },
- { HOST_NAME, "Host Name" },
- { VENDOR_NAME, "Vendor Name" },
- { ASSIGNED_TUNNEL_ID, "Assigned Tunnel ID" },
- { RECEIVE_WINDOW_SIZE, "Receive Window Size" },
- { CHALLENGE, "Challenge" },
- { CAUSE_CODE, "Cause Code" },
- { CHALLENGE_RESPONSE, "Challenge Response" },
- { ASSIGNED_SESSION, "Assigned Session" },
- { CALL_SERIAL_NUMBER, "Call Serial Number" },
- { MINIMUM_BPS, "Minimum BPS" },
- { MAXIMUM_BPS, "Maximum BPS" },
- { BEARER_TYPE, "Bearer Type" },
- { FRAMING_TYPE, "Framing Type" },
- { CALLED_NUMBER, "Called Number" },
- { CALLING_NUMBER, "Calling Number" },
- { SUB_ADDRESS, "Sub-Address" },
- { TX_CONNECT_SPEED, "Connect Speed" },
- { PHYSICAL_CHANNEL, "Physical Channel" },
- { INITIAL_RECEIVED_LCP_CONFREQ, "Initial Received LCP CONFREQ" },
- { LAST_SENT_LCP_CONFREQ, "Last Sent LCP CONFREQ" },
- { LAST_RECEIVED_LCP_CONFREQ, "Last Received LCP CONFREQ" },
- { PROXY_AUTHEN_TYPE, "Proxy Authen Type" },
- { PROXY_AUTHEN_NAME, "Proxy Authen Name" },
- { PROXY_AUTHEN_CHALLENGE, "Proxy Authen Challenge" },
- { PROXY_AUTHEN_ID, "Proxy Authen ID" },
- { PROXY_AUTHEN_RESPONSE, "Proxy Authen Response" },
- { CALL_STATUS_AVPS, "Call status AVPs" },
- { ACCM, "ACCM" },
- { RANDOM_VECTOR, "Random Vector" },
- { PRIVATE_GROUP_ID, "Private group ID" },
- { RX_CONNECT_SPEED, "RxConnect Speed" },
- { SEQUENCING_REQUIRED, "Sequencing Required" },
- { PPP_DISCONNECT_CAUSE_CODE, "PPP Disconnect Cause Code" },
- { EXTENDED_VENDOR_ID, "Extended Vendor ID" },
- { MESSAGE_DIGEST, "Message Digest" },
- { ROUTER_ID, "Router ID" },
- { ASSIGNED_CONTROL_CONN_ID, "Assigned Control Connection ID" },
- { PW_CAPABILITY_LIST, "Pseudowire Capability List" },
- { LOCAL_SESSION_ID, "Local Session ID" },
- { REMOTE_SESSION_ID, "Remote Session ID" },
- { ASSIGNED_COOKIE, "Assigned Cookie" },
- { REMOTE_END_ID, "Remote End ID" },
- { PW_TYPE, "Pseudowire Type" },
- { L2_SPECIFIC_SUBLAYER, "Layer2 Specific Sublayer" },
- { DATA_SEQUENCING, "Data Sequencing" },
- { CIRCUIT_STATUS, "Circuit Status" },
- { PREFERRED_LANGUAGE, "Preferred Language" },
- { CTL_MSG_AUTH_NONCE, "Control Message Authentication Nonce" },
- { TX_CONNECT_SPEED_V3, "Tx Connect Speed Version 3" },
- { RX_CONNECT_SPEED_V3, "Rx Connect Speed Version 3" },
- { 76, "Failover Capability" }, /*[RFC4951] */
- { 77, "Tunnel Recovery" }, /*[RFC4951] */
- { 78, "Suggested Control Sequence" }, /*[RFC4951] */
- { 79, "Failover Session State" }, /*[RFC4951] */
- { 80, "Multicast Capability" }, /*[RFC4045] */
- { 81, "New Outgoing Sessions" }, /*[RFC4045] */
- { 82, "New Outgoing Sessions Acknowledgement" }, /*[RFC4045] */
- { 83, "Withdraw Outgoing Sessions" }, /*[RFC4045] */
- { 84, "Multicast Packets Priority" }, /*[RFC4045] */
- { 85, "Frame-Relay Header Length" }, /*[RFC4591] */
- { 86, "ATM Maximum Concatenated Cells AVP" }, /*[RFC4454] */
- { 87, "OAM Emulation Required AVP" }, /*[RFC4454] */
- { 88, "ATM Alarm Status AVP" }, /*[RFC4454] */
+ { CONTROL_MESSAGE, "Control Message" },
+ { RESULT_ERROR_CODE, "Result-Error Code" },
+ { PROTOCOL_VERSION, "Protocol Version" },
+ { FRAMING_CAPABILITIES, "Framing Capabilities" },
+ { BEARER_CAPABILITIES, "Bearer Capabilities" },
+ { TIE_BREAKER, "Tie Breaker" },
+ { FIRMWARE_REVISION, "Firmware Revision" },
+ { HOST_NAME, "Host Name" },
+ { VENDOR_NAME, "Vendor Name" },
+ { ASSIGNED_TUNNEL_ID, "Assigned Tunnel ID" },
+ { RECEIVE_WINDOW_SIZE, "Receive Window Size" },
+ { CHALLENGE, "Challenge" },
+ { CAUSE_CODE, "Cause Code" },
+ { CHALLENGE_RESPONSE, "Challenge Response" },
+ { ASSIGNED_SESSION, "Assigned Session" },
+ { CALL_SERIAL_NUMBER, "Call Serial Number" },
+ { MINIMUM_BPS, "Minimum BPS" },
+ { MAXIMUM_BPS, "Maximum BPS" },
+ { BEARER_TYPE, "Bearer Type" },
+ { FRAMING_TYPE, "Framing Type" },
+ { CALLED_NUMBER, "Called Number" },
+ { CALLING_NUMBER, "Calling Number" },
+ { SUB_ADDRESS, "Sub-Address" },
+ { TX_CONNECT_SPEED, "Connect Speed" },
+ { PHYSICAL_CHANNEL, "Physical Channel" },
+ { INITIAL_RECEIVED_LCP_CONFREQ, "Initial Received LCP CONFREQ" },
+ { LAST_SENT_LCP_CONFREQ, "Last Sent LCP CONFREQ" },
+ { LAST_RECEIVED_LCP_CONFREQ, "Last Received LCP CONFREQ" },
+ { PROXY_AUTHEN_TYPE, "Proxy Authen Type" },
+ { PROXY_AUTHEN_NAME, "Proxy Authen Name" },
+ { PROXY_AUTHEN_CHALLENGE, "Proxy Authen Challenge" },
+ { PROXY_AUTHEN_ID, "Proxy Authen ID" },
+ { PROXY_AUTHEN_RESPONSE, "Proxy Authen Response" },
+ { CALL_STATUS_AVPS, "Call status AVPs" },
+ { ACCM, "ACCM" },
+ { RANDOM_VECTOR, "Random Vector" },
+ { PRIVATE_GROUP_ID, "Private group ID" },
+ { RX_CONNECT_SPEED, "RxConnect Speed" },
+ { SEQUENCING_REQUIRED, "Sequencing Required" },
+ { PPP_DISCONNECT_CAUSE_CODE, "PPP Disconnect Cause Code" },
+ { EXTENDED_VENDOR_ID, "Extended Vendor ID" },
+ { MESSAGE_DIGEST, "Message Digest" },
+ { ROUTER_ID, "Router ID" },
+ { ASSIGNED_CONTROL_CONN_ID, "Assigned Control Connection ID" },
+ { PW_CAPABILITY_LIST, "Pseudowire Capability List" },
+ { LOCAL_SESSION_ID, "Local Session ID" },
+ { REMOTE_SESSION_ID, "Remote Session ID" },
+ { ASSIGNED_COOKIE, "Assigned Cookie" },
+ { REMOTE_END_ID, "Remote End ID" },
+ { PW_TYPE, "Pseudowire Type" },
+ { L2_SPECIFIC_SUBLAYER, "Layer2 Specific Sublayer" },
+ { DATA_SEQUENCING, "Data Sequencing" },
+ { CIRCUIT_STATUS, "Circuit Status" },
+ { PREFERRED_LANGUAGE, "Preferred Language" },
+ { CTL_MSG_AUTH_NONCE, "Control Message Authentication Nonce" },
+ { TX_CONNECT_SPEED_V3, "Tx Connect Speed Version 3" },
+ { RX_CONNECT_SPEED_V3, "Rx Connect Speed Version 3" },
+ { 76, "Failover Capability" }, /*[RFC4951] */
+ { 77, "Tunnel Recovery" }, /*[RFC4951] */
+ { 78, "Suggested Control Sequence" }, /*[RFC4951] */
+ { 79, "Failover Session State" }, /*[RFC4951] */
+ { 80, "Multicast Capability" }, /*[RFC4045] */
+ { 81, "New Outgoing Sessions" }, /*[RFC4045] */
+ { 82, "New Outgoing Sessions Acknowledgement" }, /*[RFC4045] */
+ { 83, "Withdraw Outgoing Sessions" }, /*[RFC4045] */
+ { 84, "Multicast Packets Priority" }, /*[RFC4045] */
+ { 85, "Frame-Relay Header Length" }, /*[RFC4591] */
+ { 86, "ATM Maximum Concatenated Cells AVP" }, /*[RFC4454] */
+ { 87, "OAM Emulation Required AVP" }, /*[RFC4454] */
+ { 88, "ATM Alarm Status AVP" }, /*[RFC4454] */
/* Also, see ATM Alarm Status AVP Values below */
- { 89, "Attachment Group Identifier" }, /*[RFC4667] */
- { 90, "Local End Identifier" }, /*[RFC4667] */
- { 91, "Interface Maximum Transmission Unit" }, /*[RFC4667] */
- { 92, "FCS Retention" }, /*[RFC4720] */
- { 93, "Tunnel Switching Aggregator ID AVP" }, /*[draft-ietf-l2tpext-tunnel-switching-06.txt] */
- { 94, "Maximum Receive Unit (MRU) AVP" }, /*[RFC4623] */
- { 95, "Maximum Reassembled Receive Unit (MRRU) AVP" }, /*[RFC4623] */
-
-
- { 0, NULL }
+ { 89, "Attachment Group Identifier" }, /*[RFC4667] */
+ { 90, "Local End Identifier" }, /*[RFC4667] */
+ { 91, "Interface Maximum Transmission Unit" }, /*[RFC4667] */
+ { 92, "FCS Retention" }, /*[RFC4720] */
+ { 93, "Tunnel Switching Aggregator ID AVP" }, /*[draft-ietf-l2tpext-tunnel-switching-06.txt] */
+ { 94, "Maximum Receive Unit (MRU) AVP" }, /*[RFC4623] */
+ { 95, "Maximum Reassembled Receive Unit (MRRU) AVP" }, /*[RFC4623] */
+
+ { 0, NULL }
};
-#define CISCO_ASSIGNED_CONNECTION_ID 1
-#define CISCO_PW_CAPABILITY_LIST 2
-#define CISCO_LOCAL_SESSION_ID 3
-#define CISCO_REMOTE_SESSION_ID 4
-#define CISCO_ASSIGNED_COOKIE 5
-#define CISCO_REMOTE_END_ID 6
-#define CISCO_PW_TYPE 7
-#define CISCO_CIRCUIT_STATUS 8
-#define CISCO_SESSION_TIE_BREAKER 9
-#define CISCO_DRAFT_AVP_VERSION 10
-#define CISCO_MESSAGE_DIGEST 12
-#define CISCO_AUTH_NONCE 13
-#define CISCO_INTERFACE_MTU 14
+#define CISCO_ASSIGNED_CONNECTION_ID 1
+#define CISCO_PW_CAPABILITY_LIST 2
+#define CISCO_LOCAL_SESSION_ID 3
+#define CISCO_REMOTE_SESSION_ID 4
+#define CISCO_ASSIGNED_COOKIE 5
+#define CISCO_REMOTE_END_ID 6
+#define CISCO_PW_TYPE 7
+#define CISCO_CIRCUIT_STATUS 8
+#define CISCO_SESSION_TIE_BREAKER 9
+#define CISCO_DRAFT_AVP_VERSION 10
+#define CISCO_MESSAGE_DIGEST 12
+#define CISCO_AUTH_NONCE 13
+#define CISCO_INTERFACE_MTU 14
static const value_string cisco_avp_type_vals[] = {
- { CISCO_ASSIGNED_CONNECTION_ID, "Assigned Connection ID" },
- { CISCO_PW_CAPABILITY_LIST, "Pseudowire Capabilities List" },
- { CISCO_LOCAL_SESSION_ID, "Local Session ID" },
- { CISCO_REMOTE_SESSION_ID, "Remote Session ID" },
- { CISCO_ASSIGNED_COOKIE, "Assigned Cookie" },
- { CISCO_REMOTE_END_ID, "Remote End ID" },
- { CISCO_PW_TYPE, "Pseudowire Type" },
- { CISCO_CIRCUIT_STATUS, "Circuit Status" },
- { CISCO_SESSION_TIE_BREAKER, "Session Tie Breaker" },
- { CISCO_DRAFT_AVP_VERSION, "Draft AVP Version" },
- { CISCO_MESSAGE_DIGEST, "Message Digest" },
- { CISCO_AUTH_NONCE, "Control Message Authentication Nonce" },
- { CISCO_INTERFACE_MTU, "Interface MTU" },
- { 0, NULL }
+ { CISCO_ASSIGNED_CONNECTION_ID, "Assigned Connection ID" },
+ { CISCO_PW_CAPABILITY_LIST, "Pseudowire Capabilities List" },
+ { CISCO_LOCAL_SESSION_ID, "Local Session ID" },
+ { CISCO_REMOTE_SESSION_ID, "Remote Session ID" },
+ { CISCO_ASSIGNED_COOKIE, "Assigned Cookie" },
+ { CISCO_REMOTE_END_ID, "Remote End ID" },
+ { CISCO_PW_TYPE, "Pseudowire Type" },
+ { CISCO_CIRCUIT_STATUS, "Circuit Status" },
+ { CISCO_SESSION_TIE_BREAKER, "Session Tie Breaker" },
+ { CISCO_DRAFT_AVP_VERSION, "Draft AVP Version" },
+ { CISCO_MESSAGE_DIGEST, "Message Digest" },
+ { CISCO_AUTH_NONCE, "Control Message Authentication Nonce" },
+ { CISCO_INTERFACE_MTU, "Interface MTU" },
+ { 0, NULL }
};
static const value_string pw_types_vals[] = {
- { 0x0001, "Frame Relay DLCI" },
- { 0x0002, "ATM AAL5 SDU VCC transport" },
- { 0x0003, "ATM Cell transparent Port Mode" },
- { 0x0004, "Ethernet VLAN" },
- { 0x0005, "Ethernet" },
- { 0x0006, "HDLC" },
- { 0x0007, "PPP" },
- { 0x0009, "ATM Cell transport VCC Mode" },
- { 0x000A, "ATM Cell transport VPC Mode" },
- { 0x000B, "IP Transport" },
- { 0x000C, "MPEG-TS Payload Type (MPTPW)" },
- { 0x000D, "Packet Streaming Protocol (PSPPW)" },
- { 0, NULL },
+ { 0x0001, "Frame Relay DLCI" },
+ { 0x0002, "ATM AAL5 SDU VCC transport" },
+ { 0x0003, "ATM Cell transparent Port Mode" },
+ { 0x0004, "Ethernet VLAN" },
+ { 0x0005, "Ethernet" },
+ { 0x0006, "HDLC" },
+ { 0x0007, "PPP" },
+ { 0x0009, "ATM Cell transport VCC Mode" },
+ { 0x000A, "ATM Cell transport VPC Mode" },
+ { 0x000B, "IP Transport" },
+ { 0x000C, "MPEG-TS Payload Type (MPTPW)" },
+ { 0x000D, "Packet Streaming Protocol (PSPPW)" },
+ { 0, NULL },
};
static dissector_handle_t ppp_hdlc_handle;
@@ -597,760 +607,758 @@ static dissector_handle_t data_handle;
* Processes AVPs for Control Messages all versions and transports
*/
static void process_control_avps(tvbuff_t *tvb,
- packet_info *pinfo,
- proto_tree *l2tp_tree,
- int idx,
- int length)
+ packet_info *pinfo,
+ proto_tree *l2tp_tree,
+ int idx,
+ int length)
{
- proto_tree *l2tp_lcp_avp_tree, *l2tp_avp_tree, *l2tp_avp_tree_sub;
- proto_item *tf, *te;
-
- int msg_type;
- gboolean isStopCcn = FALSE;
- int avp_type;
- guint32 avp_vendor_id;
- guint16 avp_len;
- guint16 ver_len_hidden;
- int rhcode = 10;
- tvbuff_t *next_tvb;
- guint16 result_code;
- guint16 error_code;
- guint32 bits;
- guint16 firmware_rev;
-
- while (idx < length) { /* Process AVP's */
- ver_len_hidden = tvb_get_ntohs(tvb, idx);
- avp_len = AVP_LENGTH(ver_len_hidden);
- avp_vendor_id = tvb_get_ntohs(tvb, idx + 2);
- avp_type = tvb_get_ntohs(tvb, idx + 4);
-
- if (avp_len < 1) {
- proto_tree_add_text(l2tp_tree, tvb, idx, 0,
- "AVP length must be >= 1");
- return;
- }
-
- if (avp_vendor_id == VENDOR_IETF) {
- tf = proto_tree_add_text(l2tp_tree, tvb, idx,
- avp_len, "%s AVP",
- val_to_str(avp_type, avp_type_vals, "Unknown (%u)"));
- } else if (avp_vendor_id == VENDOR_CISCO) { /* Vendor-Specific AVP */
- tf = proto_tree_add_text(l2tp_tree, tvb, idx,
- avp_len, "Vendor %s: %s AVP",
- val_to_str_ext(avp_vendor_id, &sminmpec_values_ext, "Unknown (%u)"),
- val_to_str(avp_type, cisco_avp_type_vals, "Unknown (%u)"));
- } else { /* Vendor-Specific AVP */
- tf = proto_tree_add_text(l2tp_tree, tvb, idx,
- avp_len, "Vendor %s AVP Type %u",
- val_to_str_ext(avp_vendor_id, &sminmpec_values_ext, "Unknown (%u)"),
- avp_type);
- }
-
-
- l2tp_avp_tree = proto_item_add_subtree(tf, ett_l2tp_avp);
-
- proto_tree_add_boolean_format(l2tp_avp_tree,hf_l2tp_avp_mandatory, tvb, idx, 1,
- rhcode, "Mandatory: %s",
- (MANDATORY_BIT(ver_len_hidden)) ? "True" : "False" );
- proto_tree_add_boolean_format(l2tp_avp_tree,hf_l2tp_avp_hidden, tvb, idx, 1,
- rhcode, "Hidden: %s",
- (HIDDEN_BIT(ver_len_hidden)) ? "True" : "False" );
- proto_tree_add_uint_format(l2tp_avp_tree,hf_l2tp_avp_length, tvb, idx, 2,
- rhcode, "Length: %u", avp_len);
- if (HIDDEN_BIT(ver_len_hidden)) { /* don't try do display hidden */
- idx += avp_len;
- continue;
- }
-
- if (avp_len < 6) {
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 0,
- "AVP length must be >= 6");
- return;
- }
- idx += 2;
- avp_len -= 2;
-
- /* Special Case for handling Extended Vendor Id */
- if (avp_type == EXTENDED_VENDOR_ID) {
- idx += 2;
- proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_vendor_id,
- tvb, idx, 4, ENC_BIG_ENDIAN);
-
-
- idx += 4;
- continue;
- }
- else {
- proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_vendor_id,
- tvb, idx, 2, ENC_BIG_ENDIAN);
- idx += 2;
- avp_len -= 2;
- }
-
- if (avp_vendor_id == VENDOR_CISCO) {
- proto_tree_add_uint(l2tp_avp_tree, hf_l2tp_cisco_avp_type,
- tvb, idx, 2, avp_type);
- idx += 2;
- avp_len -= 2;
-
- /* For the time being, we don't decode any Vendor-
- specific AVP. */
- switch (avp_type) {
- case CISCO_ASSIGNED_CONNECTION_ID:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "Assigned Control Connection ID: %u",
- tvb_get_ntohl(tvb, idx));
- break;
-
- case CISCO_PW_CAPABILITY_LIST:
- te = proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Pseudowire Capabilities List");
- l2tp_avp_tree_sub = proto_item_add_subtree(te, ett_l2tp_avp_sub);
- while (avp_len >= 2) {
- int pw_type = tvb_get_ntohs(tvb, idx);
-
- proto_tree_add_text(l2tp_avp_tree_sub, tvb, idx,
- 2, "PW Type: (%u) %s",
- pw_type,
- val_to_str(pw_type, pw_types_vals,
- "Unknown (0x%04x)"));
- idx += 2;
- avp_len -= 2;
- }
- break;
-
- case CISCO_LOCAL_SESSION_ID:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "Local Session ID: %u",
- tvb_get_ntohl(tvb, idx));
- break;
- case CISCO_REMOTE_SESSION_ID:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "Remote Session ID: %u",
- tvb_get_ntohl(tvb, idx));
- break;
- case CISCO_ASSIGNED_COOKIE:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Assigned Cookie: %s",
- tvb_bytes_to_str(tvb, idx, avp_len));
- break;
- case CISCO_REMOTE_END_ID:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Remote End ID: %s",
- tvb_format_text(tvb, idx, avp_len));
- break;
- case CISCO_PW_TYPE:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
- "Pseudowire Type: %u - %s",
- tvb_get_ntohs(tvb, idx),
- val_to_str(tvb_get_ntohs(tvb, idx),
- pw_types_vals, "Unknown (0x%04x)"));
- break;
- case CISCO_CIRCUIT_STATUS:
- bits = tvb_get_ntohs(tvb, idx);
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
- "Circuit Status: %s",
- (CIRCUIT_STATUS_BIT(bits)) ? "Up" : "Down");
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
- "Circuit Type: %s",
- (CIRCUIT_TYPE_BIT(bits)) ? "New" : "Existing");
- break;
- case CISCO_SESSION_TIE_BREAKER:
- proto_tree_add_item(l2tp_avp_tree, hf_l2tp_tie_breaker,
- tvb, idx, 8, ENC_BIG_ENDIAN);
- break;
- case CISCO_DRAFT_AVP_VERSION:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
- "Draft AVP Version: %u",
- tvb_get_ntohs(tvb, idx));
- break;
- case CISCO_MESSAGE_DIGEST:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Message Digest: %s",
- tvb_bytes_to_str(tvb, idx, avp_len));
- break;
- case CISCO_AUTH_NONCE:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Nonce: %s",
- tvb_bytes_to_str(tvb, idx, avp_len));
- break;
- case CISCO_INTERFACE_MTU:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Interface MTU: %u",
- tvb_get_ntohs(tvb, idx));
- break;
-
- default:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx,
- avp_len, "Vendor-Specific AVP");
- break;
- }
- idx += avp_len;
- continue;
- } else if (avp_vendor_id != VENDOR_IETF) {
- if (avp_len >= 2) {
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
- "Type: %u", avp_type);
- idx += 2;
- avp_len -= 2;
- if (avp_len > 0) {
- proto_tree_add_text(l2tp_avp_tree, tvb, idx,
- avp_len, "Vendor-Specific AVP");
- }
- }
- idx += avp_len;
- continue;
- }
-
- proto_tree_add_uint(l2tp_avp_tree, hf_l2tp_avp_type,
- tvb, idx, 2, avp_type);
- idx += 2;
- avp_len -= 2;
-
- switch (avp_type) {
-
- case CONTROL_MESSAGE:
- msg_type = tvb_get_ntohs(tvb, idx);
- proto_tree_add_text(l2tp_avp_tree,tvb, idx, 2,
- "Control Message Type: (%u) %s", msg_type,
- ((NUM_CONTROL_CALL_TYPES + 1 ) > msg_type) ?
- calltypestr[msg_type] : "Unknown");
-
- if (msg_type == AVP_StopCCN) {
- isStopCcn = TRUE;
- }
- break;
-
- case RESULT_ERROR_CODE:
- if (avp_len < 2)
- break;
- result_code = tvb_get_ntohs(tvb, idx);
- if (isStopCcn) {
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
- "Result code: %u - %s", result_code,
- val_to_str(result_code, result_code_stopccn_vals, "Unknown (%u)"));
- }
- else {
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
- "Result code: %u - %s", result_code,
- val_to_str(result_code, result_code_cdn_vals, "Unknown (%u)"));
- }
- idx += 2;
- avp_len -= 2;
-
- if (avp_len < 2)
- break;
- error_code = tvb_get_ntohs(tvb, idx);
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
- "Error code: %u - %s", error_code,
- val_to_str(error_code, error_code_vals, "Unknown (%u)"));
- idx += 2;
- avp_len -= 2;
-
- if (avp_len == 0)
- break;
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Error Message: %s",
- tvb_format_text(tvb, idx, avp_len));
- break;
-
- case PROTOCOL_VERSION:
- if (avp_len < 1)
- break;
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 1,
- "Version: %u", tvb_get_guint8(tvb, idx));
- idx += 1;
- avp_len -= 1;
-
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 1,
- "Revision: %u", tvb_get_guint8(tvb, idx));
- break;
-
- case FRAMING_CAPABILITIES:
- bits = tvb_get_ntohl(tvb, idx);
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "Async Framing Supported: %s",
- (FRAMING_ASYNC(bits)) ? "True" : "False");
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "Sync Framing Supported: %s",
- (FRAMING_SYNC(bits)) ? "True" : "False");
- break;
-
- case BEARER_CAPABILITIES:
- bits = tvb_get_ntohl(tvb, idx);
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "Analog Access Supported: %s",
- (BEARER_ANALOG(bits)) ? "True" : "False");
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "Digital Access Supported: %s",
- (BEARER_DIGITAL(bits)) ? "True" : "False");
- break;
-
- case TIE_BREAKER:
- proto_tree_add_item(l2tp_avp_tree, hf_l2tp_tie_breaker, tvb, idx, 8, ENC_BIG_ENDIAN);
- break;
-
- case FIRMWARE_REVISION:
- firmware_rev = tvb_get_ntohs(tvb, idx);
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
- "Firmware Revision: %d 0x%x", firmware_rev,firmware_rev );
- break;
-
- case HOST_NAME:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Host Name: %s",
- tvb_format_text(tvb, idx, avp_len));
- break;
-
- case VENDOR_NAME:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Vendor Name: %s",
- tvb_format_text(tvb, idx, avp_len));
- break;
-
- case ASSIGNED_TUNNEL_ID:
- proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_assigned_tunnel_id, tvb, idx, 2, ENC_BIG_ENDIAN);
- break;
-
- case RECEIVE_WINDOW_SIZE:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
- "Receive Window Size: %u",
- tvb_get_ntohs(tvb, idx));
- break;
-
- case CHALLENGE:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "CHAP Challenge: %s",
- tvb_bytes_to_str(tvb, idx, avp_len));
- break;
-
- case CAUSE_CODE:
- /*
- * XXX - export stuff from the Q.931 dissector
- * to dissect the cause code and cause message,
- * and use it.
- */
- if (avp_len < 2)
- break;
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
- "Cause Code: %u",
- tvb_get_ntohs(tvb, idx));
- idx += 2;
- avp_len -= 2;
-
- if (avp_len < 1)
- break;
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 1,
- "Cause Msg: %u",
- tvb_get_guint8(tvb, idx));
- idx += 1;
- avp_len -= 1;
-
- if (avp_len == 0)
- break;
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Advisory Msg: %s",
- tvb_format_text(tvb, idx, avp_len));
- break;
-
- case CHALLENGE_RESPONSE:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 16,
- "CHAP Challenge Response: %s",
- tvb_bytes_to_str(tvb, idx, 16));
- break;
-
- case ASSIGNED_SESSION:
- proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_assigned_session_id, tvb, idx, 2, ENC_BIG_ENDIAN);
- break;
-
- case CALL_SERIAL_NUMBER:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "Call Serial Number: %u",
- tvb_get_ntohl(tvb, idx));
- break;
-
- case MINIMUM_BPS:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "Minimum BPS: %u",
- tvb_get_ntohl(tvb, idx));
- break;
-
- case MAXIMUM_BPS:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "Maximum BPS: %u",
- tvb_get_ntohl(tvb, idx));
- break;
-
- case BEARER_TYPE:
- bits = tvb_get_ntohl(tvb, idx);
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "Analog Bearer Type: %s",
- (BEARER_ANALOG(bits)) ? "True" : "False");
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "Digital Bearer Type: %s",
- (BEARER_DIGITAL(bits)) ? "True" : "False");
- break;
-
- case FRAMING_TYPE:
- bits = tvb_get_ntohl(tvb, idx);
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "Async Framing Type: %s",
- (FRAMING_ASYNC(bits)) ? "True" : "False");
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "Sync Framing Type: %s",
- (FRAMING_SYNC(bits)) ? "True" : "False");
- break;
-
- case CALLED_NUMBER:
- if (avp_len == 0)
- break;
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Called Number: %s",
- tvb_format_text(tvb, idx, avp_len));
- break;
-
- case CALLING_NUMBER:
- if (avp_len == 0)
- break;
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Calling Number: %s",
- tvb_format_text(tvb, idx, avp_len));
- break;
-
- case SUB_ADDRESS:
- if (avp_len == 0)
- break;
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Sub-Address: %s",
- tvb_format_text(tvb, idx, avp_len));
- break;
-
- case TX_CONNECT_SPEED:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "Connect Speed: %u",
- tvb_get_ntohl(tvb, idx));
- break;
-
- case PHYSICAL_CHANNEL:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "Physical Channel: %u",
- tvb_get_ntohl(tvb, idx));
- break;
-
- case INITIAL_RECEIVED_LCP_CONFREQ:
- te = proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Initial Received LCP CONFREQ: %s",
- tvb_bytes_to_str(tvb, idx, avp_len));
- l2tp_lcp_avp_tree = proto_item_add_subtree(te, ett_l2tp_lcp);
- next_tvb = tvb_new_subset(tvb, idx, avp_len, avp_len);
- call_dissector(ppp_lcp_options_handle, next_tvb, pinfo, l2tp_lcp_avp_tree );
- break;
-
- case LAST_SENT_LCP_CONFREQ:
- te = proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Last Sent LCP CONFREQ: %s",
- tvb_bytes_to_str(tvb, idx, avp_len));
- l2tp_lcp_avp_tree = proto_item_add_subtree(te, ett_l2tp_lcp);
- next_tvb = tvb_new_subset(tvb, idx, avp_len, avp_len);
- call_dissector(ppp_lcp_options_handle, next_tvb, pinfo, l2tp_lcp_avp_tree );
- break;
-
- case LAST_RECEIVED_LCP_CONFREQ:
- te = proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Last Received LCP CONFREQ: %s",
- tvb_bytes_to_str(tvb, idx, avp_len));
- l2tp_lcp_avp_tree = proto_item_add_subtree(te, ett_l2tp_lcp);
- next_tvb = tvb_new_subset(tvb, idx, avp_len, avp_len);
- call_dissector(ppp_lcp_options_handle, next_tvb, pinfo, l2tp_lcp_avp_tree );
- break;
-
- case PROXY_AUTHEN_TYPE:
- msg_type = tvb_get_ntohs(tvb, idx);
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
- "Proxy Authen Type: %s",
- val_to_str(msg_type, authen_type_vals, "Unknown (%u)"));
- break;
-
- case PROXY_AUTHEN_NAME:
- if (avp_len == 0)
- break;
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Proxy Authen Name: %s",
- tvb_format_text(tvb, idx, avp_len));
- break;
-
- case PROXY_AUTHEN_CHALLENGE:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Proxy Authen Challenge: %s",
- tvb_bytes_to_str(tvb, idx, avp_len));
- break;
-
- case PROXY_AUTHEN_ID:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx + 1, 1,
- "Proxy Authen ID: %u",
- tvb_get_guint8(tvb, idx + 1));
- break;
-
- case PROXY_AUTHEN_RESPONSE:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Proxy Authen Response: %s",
- tvb_bytes_to_str(tvb, idx, avp_len));
- break;
-
- case CALL_STATUS_AVPS:
- if (avp_len < 2)
- break;
- idx += 2;
- avp_len -= 2;
-
- if (avp_len < 4)
- break;
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "CRC Errors: %u", tvb_get_ntohl(tvb, idx));
- idx += 4;
- avp_len -= 4;
-
- if (avp_len < 4)
- break;
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "Framing Errors: %u", tvb_get_ntohl(tvb, idx));
- idx += 4;
- avp_len -= 4;
-
- if (avp_len < 4)
- break;
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "Hardware Overruns: %u", tvb_get_ntohl(tvb, idx));
- idx += 4;
- avp_len -= 4;
-
- if (avp_len < 4)
- break;
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "Buffer Overruns: %u", tvb_get_ntohl(tvb, idx));
- idx += 4;
- avp_len -= 4;
-
- if (avp_len < 4)
- break;
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "Time-out Errors: %u", tvb_get_ntohl(tvb, idx));
- idx += 4;
- avp_len -= 4;
-
- if (avp_len < 4)
- break;
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "Alignment Errors: %u", tvb_get_ntohl(tvb, idx));
- idx += 4;
- avp_len -= 4;
- break;
-
- case ACCM:
- if (avp_len < 2)
- break;
- idx += 2;
- avp_len -= 2;
-
- if (avp_len < 4)
- break;
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "Send ACCM: %u", tvb_get_ntohl(tvb, idx));
- idx += 4;
- avp_len -= 4;
-
- if (avp_len < 4)
- break;
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "Receive ACCM: %u", tvb_get_ntohl(tvb, idx));
- idx += 4;
- avp_len -= 4;
- break;
-
- case RANDOM_VECTOR:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Random Vector: %s",
- tvb_bytes_to_str(tvb, idx, avp_len));
- break;
-
- case PRIVATE_GROUP_ID:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Private Group ID: %s",
- tvb_bytes_to_str(tvb, idx, avp_len));
- break;
-
- case RX_CONNECT_SPEED:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "Rx Connect Speed: %u",
- tvb_get_ntohl(tvb, idx));
- break;
-
- case PPP_DISCONNECT_CAUSE_CODE:
- if (avp_len < 2)
- break;
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
- "Disconnect Code: %u",
- tvb_get_ntohs(tvb, idx));
- idx += 2;
- avp_len -= 2;
-
- if (avp_len < 2)
- break;
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
- "Control Protocol Number: %u",
- tvb_get_ntohs(tvb, idx));
- idx += 2;
- avp_len -= 2;
-
- if (avp_len < 1)
- break;
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 1,
- "Direction: %s",
- val_to_str(tvb_get_guint8(tvb, idx),
- cause_code_direction_vals,
- "Reserved (%u)"));
- idx += 1;
- avp_len -= 1;
-
- if (avp_len == 0)
- break;
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Message: %s",
- tvb_format_text(tvb, idx, avp_len));
- break;
-
- case MESSAGE_DIGEST:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Message Digest: %s",
- tvb_bytes_to_str(tvb, idx, avp_len));
- break;
- case ROUTER_ID:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
- "Router ID: %u",
- tvb_get_ntohl(tvb, idx));
- break;
- case ASSIGNED_CONTROL_CONN_ID:
- proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_assigned_control_conn_id,
- tvb, idx, 4, ENC_BIG_ENDIAN);
- break;
- case PW_CAPABILITY_LIST:
- te = proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Pseudowire Capabilities List");
- l2tp_avp_tree_sub = proto_item_add_subtree(te, ett_l2tp_avp_sub);
-
- while (avp_len >= 2) {
- int pw_type = tvb_get_ntohs(tvb, idx);
- proto_tree_add_text(l2tp_avp_tree_sub, tvb, idx,
- 2, "PW Type: (%u) %s",
- pw_type,
- val_to_str(pw_type, pw_types_vals,
- "Unknown (0x%04x)"));
- idx += 2;
- avp_len -= 2;
- }
- break;
- case LOCAL_SESSION_ID:
- proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_local_session_id,
- tvb, idx, 4, ENC_BIG_ENDIAN);
- break;
- case REMOTE_SESSION_ID:
- proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_remote_session_id,
- tvb, idx, 4, ENC_BIG_ENDIAN);
- break;
- case ASSIGNED_COOKIE:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Assigned Cookie: %s",
- tvb_bytes_to_str(tvb, idx, avp_len));
- break;
- case REMOTE_END_ID:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Remote End ID: %s",
- tvb_format_text(tvb, idx, avp_len));
- break;
- case PW_TYPE:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
- "Pseudowire Type: %u - %s",
- tvb_get_ntohs(tvb, idx),
- val_to_str(tvb_get_ntohs(tvb, idx),
- pw_types_vals, "Unknown (0x%04x)"));
- break;
- case L2_SPECIFIC_SUBLAYER:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
- "Layer2 Specific Sublayer: %s",
- val_to_str(tvb_get_ntohs(tvb, idx),
- l2_sublayer_vals, "Invalid (%u)"));
- break;
- case DATA_SEQUENCING:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
- "Data Sequencing: %s",
- val_to_str(tvb_get_ntohs(tvb, idx),
- data_sequencing_vals, "Invalid (%u)"));
- break;
- case CIRCUIT_STATUS:
- bits = tvb_get_ntohs(tvb, idx);
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
- "Circuit Status: %s",
- (CIRCUIT_STATUS_BIT(bits)) ? "Up" : "Down");
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
- "Circuit Type: %s",
- (CIRCUIT_TYPE_BIT(bits)) ? "New" : "Existing");
- break;
- case PREFERRED_LANGUAGE:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Preferred Language: %s",
- tvb_format_text(tvb, idx, avp_len));
- break;
- case CTL_MSG_AUTH_NONCE:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Nonce: %s",
- tvb_bytes_to_str(tvb, idx, avp_len));
- break;
- case TX_CONNECT_SPEED_V3:
- {
- guint32 l_int, h_int;
- if (avp_len < 8)
- break;
-
- h_int = tvb_get_ntohl(tvb, idx);
- l_int = tvb_get_ntohl(tvb, idx+4);
- if (!h_int && !l_int) {
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 8,
- "Tx Connect Speed v3: indeterminable or no physical p2p link");
- }
- else {
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 8,
- "Tx Connect Speed v3: %#x%04x",
- h_int, l_int);
- }
- break;
- }
- case RX_CONNECT_SPEED_V3:
- {
- guint32 l_int, h_int;
- if (avp_len < 8)
- break;
-
- h_int = tvb_get_ntohl(tvb, idx);
- l_int = tvb_get_ntohl(tvb, idx+4);
- if (!h_int && !l_int) {
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 8,
- "Rx Connect Speed v3: indeterminable or no physical p2p link");
- }
- else {
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, 8,
- "Rx Connect Speed v3: %#x%04x",
- h_int, l_int);
- }
- break;
- }
- default:
- proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Unknown AVP");
- break;
- }
-
- idx += avp_len;
- }
+ proto_tree *l2tp_lcp_avp_tree, *l2tp_avp_tree, *l2tp_avp_tree_sub;
+ proto_item *tf, *te;
+
+ int msg_type;
+ gboolean isStopCcn = FALSE;
+ int avp_type;
+ guint32 avp_vendor_id;
+ guint16 avp_len;
+ guint16 ver_len_hidden;
+ int rhcode = 10;
+ tvbuff_t *next_tvb;
+ guint16 result_code;
+ guint16 error_code;
+ guint32 bits;
+ guint16 firmware_rev;
+
+ while (idx < length) { /* Process AVP's */
+ ver_len_hidden = tvb_get_ntohs(tvb, idx);
+ avp_len = AVP_LENGTH(ver_len_hidden);
+ avp_vendor_id = tvb_get_ntohs(tvb, idx + 2);
+ avp_type = tvb_get_ntohs(tvb, idx + 4);
+
+ if (avp_len < 1) {
+ proto_tree_add_text(l2tp_tree, tvb, idx, 0,
+ "AVP length must be >= 1");
+ return;
+ }
+
+ if (avp_vendor_id == VENDOR_IETF) {
+ tf = proto_tree_add_text(l2tp_tree, tvb, idx,
+ avp_len, "%s AVP",
+ val_to_str(avp_type, avp_type_vals, "Unknown (%u)"));
+ } else if (avp_vendor_id == VENDOR_CISCO) { /* Vendor-Specific AVP */
+ tf = proto_tree_add_text(l2tp_tree, tvb, idx,
+ avp_len, "Vendor %s: %s AVP",
+ val_to_str_ext(avp_vendor_id, &sminmpec_values_ext, "Unknown (%u)"),
+ val_to_str(avp_type, cisco_avp_type_vals, "Unknown (%u)"));
+ } else { /* Vendor-Specific AVP */
+ tf = proto_tree_add_text(l2tp_tree, tvb, idx,
+ avp_len, "Vendor %s AVP Type %u",
+ val_to_str_ext(avp_vendor_id, &sminmpec_values_ext, "Unknown (%u)"),
+ avp_type);
+ }
+
+
+ l2tp_avp_tree = proto_item_add_subtree(tf, ett_l2tp_avp);
+
+ proto_tree_add_boolean_format(l2tp_avp_tree,hf_l2tp_avp_mandatory, tvb, idx, 1,
+ rhcode, "Mandatory: %s",
+ (MANDATORY_BIT(ver_len_hidden)) ? "True" : "False" );
+ proto_tree_add_boolean_format(l2tp_avp_tree,hf_l2tp_avp_hidden, tvb, idx, 1,
+ rhcode, "Hidden: %s",
+ (HIDDEN_BIT(ver_len_hidden)) ? "True" : "False" );
+ proto_tree_add_uint_format(l2tp_avp_tree,hf_l2tp_avp_length, tvb, idx, 2,
+ rhcode, "Length: %u", avp_len);
+ if (HIDDEN_BIT(ver_len_hidden)) { /* don't try do display hidden */
+ idx += avp_len;
+ continue;
+ }
+
+ if (avp_len < 6) {
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 0,
+ "AVP length must be >= 6");
+ return;
+ }
+ idx += 2;
+ avp_len -= 2;
+
+ /* Special Case for handling Extended Vendor Id */
+ if (avp_type == EXTENDED_VENDOR_ID) {
+ idx += 2;
+ proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_vendor_id,
+ tvb, idx, 4, ENC_BIG_ENDIAN);
+
+
+ idx += 4;
+ continue;
+ }
+ else {
+ proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_vendor_id,
+ tvb, idx, 2, ENC_BIG_ENDIAN);
+ idx += 2;
+ avp_len -= 2;
+ }
+
+ if (avp_vendor_id == VENDOR_CISCO) {
+ proto_tree_add_uint(l2tp_avp_tree, hf_l2tp_cisco_avp_type,
+ tvb, idx, 2, avp_type);
+ idx += 2;
+ avp_len -= 2;
+
+ /* For the time being, we don't decode any Vendor-
+ specific AVP. */
+ switch (avp_type) {
+ case CISCO_ASSIGNED_CONNECTION_ID:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "Assigned Control Connection ID: %u",
+ tvb_get_ntohl(tvb, idx));
+ break;
+
+ case CISCO_PW_CAPABILITY_LIST:
+ te = proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Pseudowire Capabilities List");
+ l2tp_avp_tree_sub = proto_item_add_subtree(te, ett_l2tp_avp_sub);
+ while (avp_len >= 2) {
+ int pw_type = tvb_get_ntohs(tvb, idx);
+
+ proto_tree_add_text(l2tp_avp_tree_sub, tvb, idx,
+ 2, "PW Type: (%u) %s",
+ pw_type,
+ val_to_str(pw_type, pw_types_vals,
+ "Unknown (0x%04x)"));
+ idx += 2;
+ avp_len -= 2;
+ }
+ break;
+
+ case CISCO_LOCAL_SESSION_ID:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "Local Session ID: %u",
+ tvb_get_ntohl(tvb, idx));
+ break;
+ case CISCO_REMOTE_SESSION_ID:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "Remote Session ID: %u",
+ tvb_get_ntohl(tvb, idx));
+ break;
+ case CISCO_ASSIGNED_COOKIE:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Assigned Cookie: %s",
+ tvb_bytes_to_str(tvb, idx, avp_len));
+ break;
+ case CISCO_REMOTE_END_ID:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Remote End ID: %s",
+ tvb_format_text(tvb, idx, avp_len));
+ break;
+ case CISCO_PW_TYPE:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
+ "Pseudowire Type: %u - %s",
+ tvb_get_ntohs(tvb, idx),
+ val_to_str(tvb_get_ntohs(tvb, idx),
+ pw_types_vals, "Unknown (0x%04x)"));
+ break;
+ case CISCO_CIRCUIT_STATUS:
+ bits = tvb_get_ntohs(tvb, idx);
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
+ "Circuit Status: %s",
+ (CIRCUIT_STATUS_BIT(bits)) ? "Up" : "Down");
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
+ "Circuit Type: %s",
+ (CIRCUIT_TYPE_BIT(bits)) ? "New" : "Existing");
+ break;
+ case CISCO_SESSION_TIE_BREAKER:
+ proto_tree_add_item(l2tp_avp_tree, hf_l2tp_tie_breaker,
+ tvb, idx, 8, ENC_BIG_ENDIAN);
+ break;
+ case CISCO_DRAFT_AVP_VERSION:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
+ "Draft AVP Version: %u",
+ tvb_get_ntohs(tvb, idx));
+ break;
+ case CISCO_MESSAGE_DIGEST:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Message Digest: %s",
+ tvb_bytes_to_str(tvb, idx, avp_len));
+ break;
+ case CISCO_AUTH_NONCE:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Nonce: %s",
+ tvb_bytes_to_str(tvb, idx, avp_len));
+ break;
+ case CISCO_INTERFACE_MTU:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Interface MTU: %u",
+ tvb_get_ntohs(tvb, idx));
+ break;
+
+ default:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx,
+ avp_len, "Vendor-Specific AVP");
+ break;
+ }
+ idx += avp_len;
+ continue;
+ } else if (avp_vendor_id != VENDOR_IETF) {
+ if (avp_len >= 2) {
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
+ "Type: %u", avp_type);
+ idx += 2;
+ avp_len -= 2;
+ if (avp_len > 0) {
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx,
+ avp_len, "Vendor-Specific AVP");
+ }
+ }
+ idx += avp_len;
+ continue;
+ }
+
+ proto_tree_add_uint(l2tp_avp_tree, hf_l2tp_avp_type,
+ tvb, idx, 2, avp_type);
+ idx += 2;
+ avp_len -= 2;
+
+ switch (avp_type) {
+
+ case CONTROL_MESSAGE:
+ msg_type = tvb_get_ntohs(tvb, idx);
+ proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_message_type,
+ tvb, idx, 2, ENC_BIG_ENDIAN);
+
+ if (msg_type == MESSAGE_TYPE_StopCCN) {
+ isStopCcn = TRUE;
+ }
+ break;
+
+ case RESULT_ERROR_CODE:
+ if (avp_len < 2)
+ break;
+ result_code = tvb_get_ntohs(tvb, idx);
+ if (isStopCcn) {
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
+ "Result code: %u - %s", result_code,
+ val_to_str(result_code, result_code_stopccn_vals, "Unknown (%u)"));
+ }
+ else {
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
+ "Result code: %u - %s", result_code,
+ val_to_str(result_code, result_code_cdn_vals, "Unknown (%u)"));
+ }
+ idx += 2;
+ avp_len -= 2;
+
+ if (avp_len < 2)
+ break;
+ error_code = tvb_get_ntohs(tvb, idx);
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
+ "Error code: %u - %s", error_code,
+ val_to_str(error_code, error_code_vals, "Unknown (%u)"));
+ idx += 2;
+ avp_len -= 2;
+
+ if (avp_len == 0)
+ break;
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Error Message: %s",
+ tvb_format_text(tvb, idx, avp_len));
+ break;
+
+ case PROTOCOL_VERSION:
+ if (avp_len < 1)
+ break;
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 1,
+ "Version: %u", tvb_get_guint8(tvb, idx));
+ idx += 1;
+ avp_len -= 1;
+
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 1,
+ "Revision: %u", tvb_get_guint8(tvb, idx));
+ break;
+
+ case FRAMING_CAPABILITIES:
+ bits = tvb_get_ntohl(tvb, idx);
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "Async Framing Supported: %s",
+ (FRAMING_ASYNC(bits)) ? "True" : "False");
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "Sync Framing Supported: %s",
+ (FRAMING_SYNC(bits)) ? "True" : "False");
+ break;
+
+ case BEARER_CAPABILITIES:
+ bits = tvb_get_ntohl(tvb, idx);
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "Analog Access Supported: %s",
+ (BEARER_ANALOG(bits)) ? "True" : "False");
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "Digital Access Supported: %s",
+ (BEARER_DIGITAL(bits)) ? "True" : "False");
+ break;
+
+ case TIE_BREAKER:
+ proto_tree_add_item(l2tp_avp_tree, hf_l2tp_tie_breaker, tvb, idx, 8, ENC_BIG_ENDIAN);
+ break;
+
+ case FIRMWARE_REVISION:
+ firmware_rev = tvb_get_ntohs(tvb, idx);
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
+ "Firmware Revision: %d 0x%x", firmware_rev,firmware_rev );
+ break;
+
+ case HOST_NAME:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Host Name: %s",
+ tvb_format_text(tvb, idx, avp_len));
+ break;
+
+ case VENDOR_NAME:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Vendor Name: %s",
+ tvb_format_text(tvb, idx, avp_len));
+ break;
+
+ case ASSIGNED_TUNNEL_ID:
+ proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_assigned_tunnel_id, tvb, idx, 2, ENC_BIG_ENDIAN);
+ break;
+
+ case RECEIVE_WINDOW_SIZE:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
+ "Receive Window Size: %u",
+ tvb_get_ntohs(tvb, idx));
+ break;
+
+ case CHALLENGE:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "CHAP Challenge: %s",
+ tvb_bytes_to_str(tvb, idx, avp_len));
+ break;
+
+ case CAUSE_CODE:
+ /*
+ * XXX - export stuff from the Q.931 dissector
+ * to dissect the cause code and cause message,
+ * and use it.
+ */
+ if (avp_len < 2)
+ break;
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
+ "Cause Code: %u",
+ tvb_get_ntohs(tvb, idx));
+ idx += 2;
+ avp_len -= 2;
+
+ if (avp_len < 1)
+ break;
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 1,
+ "Cause Msg: %u",
+ tvb_get_guint8(tvb, idx));
+ idx += 1;
+ avp_len -= 1;
+
+ if (avp_len == 0)
+ break;
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Advisory Msg: %s",
+ tvb_format_text(tvb, idx, avp_len));
+ break;
+
+ case CHALLENGE_RESPONSE:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 16,
+ "CHAP Challenge Response: %s",
+ tvb_bytes_to_str(tvb, idx, 16));
+ break;
+
+ case ASSIGNED_SESSION:
+ proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_assigned_session_id, tvb, idx, 2, ENC_BIG_ENDIAN);
+ break;
+
+ case CALL_SERIAL_NUMBER:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "Call Serial Number: %u",
+ tvb_get_ntohl(tvb, idx));
+ break;
+
+ case MINIMUM_BPS:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "Minimum BPS: %u",
+ tvb_get_ntohl(tvb, idx));
+ break;
+
+ case MAXIMUM_BPS:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "Maximum BPS: %u",
+ tvb_get_ntohl(tvb, idx));
+ break;
+
+ case BEARER_TYPE:
+ bits = tvb_get_ntohl(tvb, idx);
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "Analog Bearer Type: %s",
+ (BEARER_ANALOG(bits)) ? "True" : "False");
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "Digital Bearer Type: %s",
+ (BEARER_DIGITAL(bits)) ? "True" : "False");
+ break;
+
+ case FRAMING_TYPE:
+ bits = tvb_get_ntohl(tvb, idx);
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "Async Framing Type: %s",
+ (FRAMING_ASYNC(bits)) ? "True" : "False");
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "Sync Framing Type: %s",
+ (FRAMING_SYNC(bits)) ? "True" : "False");
+ break;
+
+ case CALLED_NUMBER:
+ if (avp_len == 0)
+ break;
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Called Number: %s",
+ tvb_format_text(tvb, idx, avp_len));
+ break;
+
+ case CALLING_NUMBER:
+ if (avp_len == 0)
+ break;
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Calling Number: %s",
+ tvb_format_text(tvb, idx, avp_len));
+ break;
+
+ case SUB_ADDRESS:
+ if (avp_len == 0)
+ break;
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Sub-Address: %s",
+ tvb_format_text(tvb, idx, avp_len));
+ break;
+
+ case TX_CONNECT_SPEED:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "Connect Speed: %u",
+ tvb_get_ntohl(tvb, idx));
+ break;
+
+ case PHYSICAL_CHANNEL:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "Physical Channel: %u",
+ tvb_get_ntohl(tvb, idx));
+ break;
+
+ case INITIAL_RECEIVED_LCP_CONFREQ:
+ te = proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Initial Received LCP CONFREQ: %s",
+ tvb_bytes_to_str(tvb, idx, avp_len));
+ l2tp_lcp_avp_tree = proto_item_add_subtree(te, ett_l2tp_lcp);
+ next_tvb = tvb_new_subset(tvb, idx, avp_len, avp_len);
+ call_dissector(ppp_lcp_options_handle, next_tvb, pinfo, l2tp_lcp_avp_tree );
+ break;
+
+ case LAST_SENT_LCP_CONFREQ:
+ te = proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Last Sent LCP CONFREQ: %s",
+ tvb_bytes_to_str(tvb, idx, avp_len));
+ l2tp_lcp_avp_tree = proto_item_add_subtree(te, ett_l2tp_lcp);
+ next_tvb = tvb_new_subset(tvb, idx, avp_len, avp_len);
+ call_dissector(ppp_lcp_options_handle, next_tvb, pinfo, l2tp_lcp_avp_tree );
+ break;
+
+ case LAST_RECEIVED_LCP_CONFREQ:
+ te = proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Last Received LCP CONFREQ: %s",
+ tvb_bytes_to_str(tvb, idx, avp_len));
+ l2tp_lcp_avp_tree = proto_item_add_subtree(te, ett_l2tp_lcp);
+ next_tvb = tvb_new_subset(tvb, idx, avp_len, avp_len);
+ call_dissector(ppp_lcp_options_handle, next_tvb, pinfo, l2tp_lcp_avp_tree );
+ break;
+
+ case PROXY_AUTHEN_TYPE:
+ msg_type = tvb_get_ntohs(tvb, idx);
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
+ "Proxy Authen Type: %s",
+ val_to_str(msg_type, authen_type_vals, "Unknown (%u)"));
+ break;
+
+ case PROXY_AUTHEN_NAME:
+ if (avp_len == 0)
+ break;
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Proxy Authen Name: %s",
+ tvb_format_text(tvb, idx, avp_len));
+ break;
+
+ case PROXY_AUTHEN_CHALLENGE:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Proxy Authen Challenge: %s",
+ tvb_bytes_to_str(tvb, idx, avp_len));
+ break;
+
+ case PROXY_AUTHEN_ID:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx + 1, 1,
+ "Proxy Authen ID: %u",
+ tvb_get_guint8(tvb, idx + 1));
+ break;
+
+ case PROXY_AUTHEN_RESPONSE:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Proxy Authen Response: %s",
+ tvb_bytes_to_str(tvb, idx, avp_len));
+ break;
+
+ case CALL_STATUS_AVPS:
+ if (avp_len < 2)
+ break;
+ idx += 2;
+ avp_len -= 2;
+
+ if (avp_len < 4)
+ break;
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "CRC Errors: %u", tvb_get_ntohl(tvb, idx));
+ idx += 4;
+ avp_len -= 4;
+
+ if (avp_len < 4)
+ break;
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "Framing Errors: %u", tvb_get_ntohl(tvb, idx));
+ idx += 4;
+ avp_len -= 4;
+
+ if (avp_len < 4)
+ break;
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "Hardware Overruns: %u", tvb_get_ntohl(tvb, idx));
+ idx += 4;
+ avp_len -= 4;
+
+ if (avp_len < 4)
+ break;
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "Buffer Overruns: %u", tvb_get_ntohl(tvb, idx));
+ idx += 4;
+ avp_len -= 4;
+
+ if (avp_len < 4)
+ break;
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "Time-out Errors: %u", tvb_get_ntohl(tvb, idx));
+ idx += 4;
+ avp_len -= 4;
+
+ if (avp_len < 4)
+ break;
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "Alignment Errors: %u", tvb_get_ntohl(tvb, idx));
+ idx += 4;
+ avp_len -= 4;
+ break;
+
+ case ACCM:
+ if (avp_len < 2)
+ break;
+ idx += 2;
+ avp_len -= 2;
+
+ if (avp_len < 4)
+ break;
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "Send ACCM: %u", tvb_get_ntohl(tvb, idx));
+ idx += 4;
+ avp_len -= 4;
+
+ if (avp_len < 4)
+ break;
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "Receive ACCM: %u", tvb_get_ntohl(tvb, idx));
+ idx += 4;
+ avp_len -= 4;
+ break;
+
+ case RANDOM_VECTOR:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Random Vector: %s",
+ tvb_bytes_to_str(tvb, idx, avp_len));
+ break;
+
+ case PRIVATE_GROUP_ID:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Private Group ID: %s",
+ tvb_bytes_to_str(tvb, idx, avp_len));
+ break;
+
+ case RX_CONNECT_SPEED:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "Rx Connect Speed: %u",
+ tvb_get_ntohl(tvb, idx));
+ break;
+
+ case PPP_DISCONNECT_CAUSE_CODE:
+ if (avp_len < 2)
+ break;
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
+ "Disconnect Code: %u",
+ tvb_get_ntohs(tvb, idx));
+ idx += 2;
+ avp_len -= 2;
+
+ if (avp_len < 2)
+ break;
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
+ "Control Protocol Number: %u",
+ tvb_get_ntohs(tvb, idx));
+ idx += 2;
+ avp_len -= 2;
+
+ if (avp_len < 1)
+ break;
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 1,
+ "Direction: %s",
+ val_to_str(tvb_get_guint8(tvb, idx),
+ cause_code_direction_vals,
+ "Reserved (%u)"));
+ idx += 1;
+ avp_len -= 1;
+
+ if (avp_len == 0)
+ break;
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Message: %s",
+ tvb_format_text(tvb, idx, avp_len));
+ break;
+
+ case MESSAGE_DIGEST:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Message Digest: %s",
+ tvb_bytes_to_str(tvb, idx, avp_len));
+ break;
+ case ROUTER_ID:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 4,
+ "Router ID: %u",
+ tvb_get_ntohl(tvb, idx));
+ break;
+ case ASSIGNED_CONTROL_CONN_ID:
+ proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_assigned_control_conn_id,
+ tvb, idx, 4, ENC_BIG_ENDIAN);
+ break;
+ case PW_CAPABILITY_LIST:
+ te = proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Pseudowire Capabilities List");
+ l2tp_avp_tree_sub = proto_item_add_subtree(te, ett_l2tp_avp_sub);
+
+ while (avp_len >= 2) {
+ int pw_type = tvb_get_ntohs(tvb, idx);
+ proto_tree_add_text(l2tp_avp_tree_sub, tvb, idx,
+ 2, "PW Type: (%u) %s",
+ pw_type,
+ val_to_str(pw_type, pw_types_vals,
+ "Unknown (0x%04x)"));
+ idx += 2;
+ avp_len -= 2;
+ }
+ break;
+ case LOCAL_SESSION_ID:
+ proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_local_session_id,
+ tvb, idx, 4, ENC_BIG_ENDIAN);
+ break;
+ case REMOTE_SESSION_ID:
+ proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_remote_session_id,
+ tvb, idx, 4, ENC_BIG_ENDIAN);
+ break;
+ case ASSIGNED_COOKIE:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Assigned Cookie: %s",
+ tvb_bytes_to_str(tvb, idx, avp_len));
+ break;
+ case REMOTE_END_ID:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Remote End ID: %s",
+ tvb_format_text(tvb, idx, avp_len));
+ break;
+ case PW_TYPE:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
+ "Pseudowire Type: %u - %s",
+ tvb_get_ntohs(tvb, idx),
+ val_to_str(tvb_get_ntohs(tvb, idx),
+ pw_types_vals, "Unknown (0x%04x)"));
+ break;
+ case L2_SPECIFIC_SUBLAYER:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
+ "Layer2 Specific Sublayer: %s",
+ val_to_str(tvb_get_ntohs(tvb, idx),
+ l2_sublayer_vals, "Invalid (%u)"));
+ break;
+ case DATA_SEQUENCING:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
+ "Data Sequencing: %s",
+ val_to_str(tvb_get_ntohs(tvb, idx),
+ data_sequencing_vals, "Invalid (%u)"));
+ break;
+ case CIRCUIT_STATUS:
+ bits = tvb_get_ntohs(tvb, idx);
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
+ "Circuit Status: %s",
+ (CIRCUIT_STATUS_BIT(bits)) ? "Up" : "Down");
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 2,
+ "Circuit Type: %s",
+ (CIRCUIT_TYPE_BIT(bits)) ? "New" : "Existing");
+ break;
+ case PREFERRED_LANGUAGE:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Preferred Language: %s",
+ tvb_format_text(tvb, idx, avp_len));
+ break;
+ case CTL_MSG_AUTH_NONCE:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Nonce: %s",
+ tvb_bytes_to_str(tvb, idx, avp_len));
+ break;
+ case TX_CONNECT_SPEED_V3:
+ {
+ guint32 l_int, h_int;
+ if (avp_len < 8)
+ break;
+
+ h_int = tvb_get_ntohl(tvb, idx);
+ l_int = tvb_get_ntohl(tvb, idx+4);
+ if (!h_int && !l_int) {
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 8,
+ "Tx Connect Speed v3: indeterminable or no physical p2p link");
+ }
+ else {
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 8,
+ "Tx Connect Speed v3: %#x%04x",
+ h_int, l_int);
+ }
+ break;
+ }
+ case RX_CONNECT_SPEED_V3:
+ {
+ guint32 l_int, h_int;
+ if (avp_len < 8)
+ break;
+
+ h_int = tvb_get_ntohl(tvb, idx);
+ l_int = tvb_get_ntohl(tvb, idx+4);
+ if (!h_int && !l_int) {
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 8,
+ "Rx Connect Speed v3: indeterminable or no physical p2p link");
+ }
+ else {
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, 8,
+ "Rx Connect Speed v3: %#x%04x",
+ h_int, l_int);
+ }
+ break;
+ }
+ default:
+ proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
+ "Unknown AVP");
+ break;
+ }
+
+ idx += avp_len;
+ }
}
@@ -1361,149 +1369,149 @@ static void process_control_avps(tvbuff_t *tvb,
*/
static void
process_l2tpv3_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- proto_tree *l2tp_tree, proto_item *l2tp_item, int *pIdx)
+ proto_tree *l2tp_tree, proto_item *l2tp_item, int *pIdx)
{
- int idx = *pIdx;
- int sid;
- guint8 oam_cell = 0;
- proto_tree *l2_specific = NULL;
- proto_item *ti = NULL;
- tvbuff_t *next_tvb;
-
- /* Get Session ID */
- sid = tvb_get_ntohl(tvb, idx);
- idx += 4;
-
- if (check_col(pinfo->cinfo, COL_INFO)) {
- col_add_fstr(pinfo->cinfo,COL_INFO,
- "%s (session id=%u)",
- data_msg, sid);
- }
-
- if (tree) {
- proto_tree_add_item(l2tp_tree, hf_l2tp_sid, tvb, idx-4, 4, ENC_BIG_ENDIAN);
- proto_item_set_len(l2tp_item, idx);
- if (!(tvb_offset_exists(tvb, idx)))
- return;
- if (l2tpv3_cookie != 0)
- proto_tree_add_item(l2tp_tree, hf_l2tp_cookie, tvb, idx, l2tpv3_cookie, ENC_NA);
- }
-
- switch(l2tpv3_l2_specific){
- case L2TPv3_L2_SPECIFIC_DEFAULT:
- if (tree) {
- ti = proto_tree_add_item(tree, hf_l2tp_l2_spec_def,
- tvb, idx + l2tpv3_cookie, 4, ENC_NA);
- l2_specific = proto_item_add_subtree(ti, ett_l2tp_l2_spec);
-
- proto_tree_add_item(l2_specific, hf_l2tp_l2_spec_s, tvb, idx + l2tpv3_cookie,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(l2_specific, hf_l2tp_l2_spec_sequence, tvb,
- idx + l2tpv3_cookie + 1, 3, ENC_BIG_ENDIAN);
- }
- next_tvb = tvb_new_subset_remaining(tvb, idx + l2tpv3_cookie + 4);
- break;
- case L2TPv3_L2_SPECIFIC_DOCSIS_DMPT:
- if (tree) {
- ti = proto_tree_add_item(tree, hf_l2tp_l2_spec_docsis_dmpt,
- tvb, idx + l2tpv3_cookie, 4, ENC_NA);
- l2_specific = proto_item_add_subtree(ti, ett_l2tp_l2_spec);
-
- proto_tree_add_item(l2_specific, hf_l2tp_l2_spec_v, tvb,
- idx + l2tpv3_cookie,1, ENC_BIG_ENDIAN);
-
- proto_tree_add_item(l2_specific, hf_l2tp_l2_spec_s, tvb,
- idx + l2tpv3_cookie,1, ENC_BIG_ENDIAN);
-
- proto_tree_add_item(l2_specific, hf_l2tp_l2_spec_flow_id, tvb,
- idx + l2tpv3_cookie,1, ENC_BIG_ENDIAN);
-
- proto_tree_add_item(l2_specific, hf_l2tp_l2_spec_sequence, tvb,
- idx + l2tpv3_cookie + 2,2, ENC_BIG_ENDIAN);
- }
- next_tvb = tvb_new_subset_remaining(tvb, idx + l2tpv3_cookie + 4);
- break;
- case L2TPv3_L2_SPECIFIC_ATM:
- if (tree) {
- ti = proto_tree_add_item(tree, hf_l2tp_l2_spec_atm,
- tvb, idx + l2tpv3_cookie, 4, ENC_NA);
- l2_specific = proto_item_add_subtree(ti, ett_l2tp_l2_spec);
-
- proto_tree_add_item(l2_specific, hf_l2tp_l2_spec_s, tvb, idx + l2tpv3_cookie,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(l2_specific, hf_l2tp_l2_spec_t, tvb, idx + l2tpv3_cookie,
- 1, ENC_BIG_ENDIAN);
- /*
- * As per RFC 4454, the T bit specifies whether
- * we're transporting an OAM cell or an AAL5 frame.
- */
- oam_cell = tvb_get_guint8(tvb, idx + l2tpv3_cookie) & 0x08;
- proto_tree_add_item(l2_specific, hf_l2tp_l2_spec_g, tvb, idx + l2tpv3_cookie,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(l2_specific, hf_l2tp_l2_spec_c, tvb, idx + l2tpv3_cookie,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(l2_specific, hf_l2tp_l2_spec_u, tvb, idx + l2tpv3_cookie,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(l2_specific, hf_l2tp_l2_spec_sequence, tvb,
- idx + l2tpv3_cookie + 1, 3, ENC_BIG_ENDIAN);
- }
- next_tvb = tvb_new_subset_remaining(tvb, idx + l2tpv3_cookie + 4);
- break;
- case L2TPv3_L2_SPECIFIC_LAPD:
- if (tree)
- proto_tree_add_text(tree, tvb, idx + l2tpv3_cookie + 4, 3,"LAPD info");
- next_tvb = tvb_new_subset_remaining(tvb, idx + l2tpv3_cookie+4+3);
- break;
- case L2TPv3_L2_SPECIFIC_NONE:
- default:
- next_tvb = tvb_new_subset_remaining(tvb, idx + l2tpv3_cookie);
- break;
- }
-
- switch(l2tpv3_protocol){
- case L2TPv3_PROTOCOL_ETH:
- call_dissector(eth_withoutfcs_handle, next_tvb, pinfo, tree);
- break;
- case L2TPv3_PROTOCOL_CHDLC:
- call_dissector(chdlc_handle, next_tvb, pinfo, tree);
- break;
- case L2TPv3_PROTOCOL_FR:
- call_dissector(fr_handle, next_tvb, pinfo, tree);
- break;
- case L2TPv3_PROTOCOL_PPP:
- /*
- * PPP is transported without Address and Control
- * fields, ppp_hdlc_handle can handle that as if if
- * was ACFC (NULL Address and Control)
- */
- call_dissector(ppp_hdlc_handle, next_tvb, pinfo, tree);
- break;
- case L2TPv3_PROTOCOL_IP:
- call_dissector(ip_handle, next_tvb, pinfo, tree);
- break;
- case L2TPv3_PROTOCOL_MPLS:
- call_dissector(mpls_handle, next_tvb, pinfo, tree);
- break;
- case L2TPv3_PROTOCOL_DOCSIS_DMPT:
- call_dissector(mp2t_handle, next_tvb, pinfo, tree);
- break;
- case L2TPv3_PROTOCOL_AAL5:
- if (oam_cell) {
- call_dissector(atm_oam_handle, next_tvb, pinfo, tree);
- } else {
- call_dissector(llc_handle, next_tvb, pinfo, tree);
- }
- break;
- case L2TPv3_PROTOCOL_LAPD:
- call_dissector(lapd_handle, next_tvb, pinfo, tree);
- break;
- case L2TPv3_PROTOCOL_ERICSSON:
- call_dissector(ehdlc_handle, next_tvb, pinfo, tree);
- break;
- default:
- call_dissector(data_handle, next_tvb, pinfo, tree);
- break;
- }
+ int idx = *pIdx;
+ int sid;
+ guint8 oam_cell = 0;
+ proto_tree *l2_specific = NULL;
+ proto_item *ti = NULL;
+ tvbuff_t *next_tvb;
+
+ /* Get Session ID */
+ sid = tvb_get_ntohl(tvb, idx);
+ idx += 4;
+
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_add_fstr(pinfo->cinfo,COL_INFO,
+ "%s (session id=%u)",
+ data_msg, sid);
+ }
+
+ if (tree) {
+ proto_tree_add_item(l2tp_tree, hf_l2tp_sid, tvb, idx-4, 4, ENC_BIG_ENDIAN);
+ proto_item_set_len(l2tp_item, idx);
+ if (!(tvb_offset_exists(tvb, idx)))
+ return;
+ if (l2tpv3_cookie != 0)
+ proto_tree_add_item(l2tp_tree, hf_l2tp_cookie, tvb, idx, l2tpv3_cookie, ENC_NA);
+ }
+
+ switch(l2tpv3_l2_specific){
+ case L2TPv3_L2_SPECIFIC_DEFAULT:
+ if (tree) {
+ ti = proto_tree_add_item(tree, hf_l2tp_l2_spec_def,
+ tvb, idx + l2tpv3_cookie, 4, ENC_NA);
+ l2_specific = proto_item_add_subtree(ti, ett_l2tp_l2_spec);
+
+ proto_tree_add_item(l2_specific, hf_l2tp_l2_spec_s, tvb, idx + l2tpv3_cookie,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(l2_specific, hf_l2tp_l2_spec_sequence, tvb,
+ idx + l2tpv3_cookie + 1, 3, ENC_BIG_ENDIAN);
+ }
+ next_tvb = tvb_new_subset_remaining(tvb, idx + l2tpv3_cookie + 4);
+ break;
+ case L2TPv3_L2_SPECIFIC_DOCSIS_DMPT:
+ if (tree) {
+ ti = proto_tree_add_item(tree, hf_l2tp_l2_spec_docsis_dmpt,
+ tvb, idx + l2tpv3_cookie, 4, ENC_NA);
+ l2_specific = proto_item_add_subtree(ti, ett_l2tp_l2_spec);
+
+ proto_tree_add_item(l2_specific, hf_l2tp_l2_spec_v, tvb,
+ idx + l2tpv3_cookie,1, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(l2_specific, hf_l2tp_l2_spec_s, tvb,
+ idx + l2tpv3_cookie,1, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(l2_specific, hf_l2tp_l2_spec_flow_id, tvb,
+ idx + l2tpv3_cookie,1, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(l2_specific, hf_l2tp_l2_spec_sequence, tvb,
+ idx + l2tpv3_cookie + 2,2, ENC_BIG_ENDIAN);
+ }
+ next_tvb = tvb_new_subset_remaining(tvb, idx + l2tpv3_cookie + 4);
+ break;
+ case L2TPv3_L2_SPECIFIC_ATM:
+ if (tree) {
+ ti = proto_tree_add_item(tree, hf_l2tp_l2_spec_atm,
+ tvb, idx + l2tpv3_cookie, 4, ENC_NA);
+ l2_specific = proto_item_add_subtree(ti, ett_l2tp_l2_spec);
+
+ proto_tree_add_item(l2_specific, hf_l2tp_l2_spec_s, tvb, idx + l2tpv3_cookie,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(l2_specific, hf_l2tp_l2_spec_t, tvb, idx + l2tpv3_cookie,
+ 1, ENC_BIG_ENDIAN);
+ /*
+ * As per RFC 4454, the T bit specifies whether
+ * we're transporting an OAM cell or an AAL5 frame.
+ */
+ oam_cell = tvb_get_guint8(tvb, idx + l2tpv3_cookie) & 0x08;
+ proto_tree_add_item(l2_specific, hf_l2tp_l2_spec_g, tvb, idx + l2tpv3_cookie,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(l2_specific, hf_l2tp_l2_spec_c, tvb, idx + l2tpv3_cookie,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(l2_specific, hf_l2tp_l2_spec_u, tvb, idx + l2tpv3_cookie,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(l2_specific, hf_l2tp_l2_spec_sequence, tvb,
+ idx + l2tpv3_cookie + 1, 3, ENC_BIG_ENDIAN);
+ }
+ next_tvb = tvb_new_subset_remaining(tvb, idx + l2tpv3_cookie + 4);
+ break;
+ case L2TPv3_L2_SPECIFIC_LAPD:
+ if (tree)
+ proto_tree_add_text(tree, tvb, idx + l2tpv3_cookie + 4, 3,"LAPD info");
+ next_tvb = tvb_new_subset_remaining(tvb, idx + l2tpv3_cookie+4+3);
+ break;
+ case L2TPv3_L2_SPECIFIC_NONE:
+ default:
+ next_tvb = tvb_new_subset_remaining(tvb, idx + l2tpv3_cookie);
+ break;
+ }
+
+ switch(l2tpv3_protocol){
+ case L2TPv3_PROTOCOL_ETH:
+ call_dissector(eth_withoutfcs_handle, next_tvb, pinfo, tree);
+ break;
+ case L2TPv3_PROTOCOL_CHDLC:
+ call_dissector(chdlc_handle, next_tvb, pinfo, tree);
+ break;
+ case L2TPv3_PROTOCOL_FR:
+ call_dissector(fr_handle, next_tvb, pinfo, tree);
+ break;
+ case L2TPv3_PROTOCOL_PPP:
+ /*
+ * PPP is transported without Address and Control
+ * fields, ppp_hdlc_handle can handle that as if if
+ * was ACFC (NULL Address and Control)
+ */
+ call_dissector(ppp_hdlc_handle, next_tvb, pinfo, tree);
+ break;
+ case L2TPv3_PROTOCOL_IP:
+ call_dissector(ip_handle, next_tvb, pinfo, tree);
+ break;
+ case L2TPv3_PROTOCOL_MPLS:
+ call_dissector(mpls_handle, next_tvb, pinfo, tree);
+ break;
+ case L2TPv3_PROTOCOL_DOCSIS_DMPT:
+ call_dissector(mp2t_handle, next_tvb, pinfo, tree);
+ break;
+ case L2TPv3_PROTOCOL_AAL5:
+ if (oam_cell) {
+ call_dissector(atm_oam_handle, next_tvb, pinfo, tree);
+ } else {
+ call_dissector(llc_handle, next_tvb, pinfo, tree);
+ }
+ break;
+ case L2TPv3_PROTOCOL_LAPD:
+ call_dissector(lapd_handle, next_tvb, pinfo, tree);
+ break;
+ case L2TPv3_PROTOCOL_ERICSSON:
+ call_dissector(ehdlc_handle, next_tvb, pinfo, tree);
+ break;
+ default:
+ call_dissector(data_handle, next_tvb, pinfo, tree);
+ break;
+ }
}
/*
@@ -1513,38 +1521,38 @@ process_l2tpv3_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
static void
process_l2tpv3_data_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *l2tp_tree = NULL, *ctrl_tree;
- proto_item *l2tp_item = NULL, *ti;
-
- int idx = 0;
- int control;
- int sid;
-
- control = tvb_get_ntohs(tvb, idx);
- idx += 2; /* skip ahead */
- idx += 2; /* Skip the reserved */
- sid = tvb_get_ntohl(tvb, idx);
-
- if (tree) {
- l2tp_item = proto_tree_add_item(tree, proto_l2tp, tvb, 0, -1, ENC_NA);
- l2tp_tree = proto_item_add_subtree(l2tp_item, ett_l2tp);
- proto_item_append_text(l2tp_item, " version 3");
-
- ti = proto_tree_add_text(l2tp_tree, tvb, 0, 2,
- "Packet Type: %s Session Id=%u",
- data_msg, sid);
-
- ctrl_tree = proto_item_add_subtree(ti, ett_l2tp_ctrl);
- proto_tree_add_uint(ctrl_tree, hf_l2tp_type, tvb, 0, 2, control);
- proto_tree_add_boolean(ctrl_tree, hf_l2tp_length_bit, tvb, 0, 2, control);
- proto_tree_add_boolean(ctrl_tree, hf_l2tp_seq_bit, tvb, 0, 2, control);
- proto_tree_add_uint(ctrl_tree, hf_l2tp_version, tvb, 0, 2, control);
- /* Data in v3 over UDP has this reserved */
- proto_tree_add_item(l2tp_tree, hf_l2tp_res, tvb, 2, 2, ENC_BIG_ENDIAN);
- }
-
- /* Call process_l2tpv3_data from Session ID (offset in idx of 4) */
- process_l2tpv3_data(tvb, pinfo, tree, l2tp_tree, l2tp_item, &idx);
+ proto_tree *l2tp_tree = NULL, *ctrl_tree;
+ proto_item *l2tp_item = NULL, *ti;
+
+ int idx = 0;
+ int control;
+ int sid;
+
+ control = tvb_get_ntohs(tvb, idx);
+ idx += 2; /* skip ahead */
+ idx += 2; /* Skip the reserved */
+ sid = tvb_get_ntohl(tvb, idx);
+
+ if (tree) {
+ l2tp_item = proto_tree_add_item(tree, proto_l2tp, tvb, 0, -1, ENC_NA);
+ l2tp_tree = proto_item_add_subtree(l2tp_item, ett_l2tp);
+ proto_item_append_text(l2tp_item, " version 3");
+
+ ti = proto_tree_add_text(l2tp_tree, tvb, 0, 2,
+ "Packet Type: %s Session Id=%u",
+ data_msg, sid);
+
+ ctrl_tree = proto_item_add_subtree(ti, ett_l2tp_ctrl);
+ proto_tree_add_uint(ctrl_tree, hf_l2tp_type, tvb, 0, 2, control);
+ proto_tree_add_boolean(ctrl_tree, hf_l2tp_length_bit, tvb, 0, 2, control);
+ proto_tree_add_boolean(ctrl_tree, hf_l2tp_seq_bit, tvb, 0, 2, control);
+ proto_tree_add_uint(ctrl_tree, hf_l2tp_version, tvb, 0, 2, control);
+ /* Data in v3 over UDP has this reserved */
+ proto_tree_add_item(l2tp_tree, hf_l2tp_res, tvb, 2, 2, ENC_BIG_ENDIAN);
+ }
+
+ /* Call process_l2tpv3_data from Session ID (offset in idx of 4) */
+ process_l2tpv3_data(tvb, pinfo, tree, l2tp_tree, l2tp_item, &idx);
}
/*
@@ -1554,26 +1562,26 @@ process_l2tpv3_data_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
process_l2tpv3_data_ip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *l2tp_tree = NULL;
- proto_item *l2tp_item = NULL;
+ proto_tree *l2tp_tree = NULL;
+ proto_item *l2tp_item = NULL;
- int idx = 0;
- int sid;
+ int idx = 0;
+ int sid;
- sid = tvb_get_ntohl(tvb, idx);
+ sid = tvb_get_ntohl(tvb, idx);
- if (tree) {
- l2tp_item = proto_tree_add_item(tree, proto_l2tp, tvb, 0, -1, ENC_NA);
- l2tp_tree = proto_item_add_subtree(l2tp_item, ett_l2tp);
- proto_item_append_text(l2tp_item, " version 3");
+ if (tree) {
+ l2tp_item = proto_tree_add_item(tree, proto_l2tp, tvb, 0, -1, ENC_NA);
+ l2tp_tree = proto_item_add_subtree(l2tp_item, ett_l2tp);
+ proto_item_append_text(l2tp_item, " version 3");
- proto_tree_add_text(l2tp_tree, tvb, 0, 4,
- "Packet Type: %s Session Id=%u",
- data_msg, sid);
- }
+ proto_tree_add_text(l2tp_tree, tvb, 0, 4,
+ "Packet Type: %s Session Id=%u",
+ data_msg, sid);
+ }
- /* Call process_l2tpv3_data from Session ID (offset in idx of 0) */
- process_l2tpv3_data(tvb, pinfo, tree, l2tp_tree, l2tp_item, &idx);
+ /* Call process_l2tpv3_data from Session ID (offset in idx of 0) */
+ process_l2tpv3_data(tvb, pinfo, tree, l2tp_tree, l2tp_item, &idx);
}
/*
@@ -1583,131 +1591,130 @@ process_l2tpv3_data_ip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
process_l2tpv3_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int baseIdx)
{
- proto_tree *l2tp_tree=NULL, *ctrl_tree;
- proto_item *l2tp_item = NULL, *ti;
-
- int idx = baseIdx;
- int tmp_idx;
- guint16 length = 0; /* Length field */
- guint32 ccid = 0; /* Control Connection ID */
- guint16 avp_type;
- guint16 msg_type;
- guint16 control = 0;
-
- control = tvb_get_ntohs(tvb, idx);
- idx += 2; /* skip ahead */
- if (LENGTH_BIT(control)) { /* length field included ? */
- length = tvb_get_ntohs(tvb, idx);
- idx += 2;
- }
-
- /* Get Control Channel ID */
- ccid = tvb_get_ntohl(tvb, idx);
- idx += 4;
-
- if (check_col(pinfo->cinfo, COL_INFO)) {
- tmp_idx = idx;
-
- if ((LENGTH_BIT(control))&&(length==12)) /* ZLB Message */
- col_add_fstr(pinfo->cinfo, COL_INFO,
- "%s - ZLB (tunnel id=%u)",
- control_msg , ccid);
- else
- {
- if (SEQUENCE_BIT(control)) {
- tmp_idx += 4;
- }
-
- tmp_idx+=4;
-
- avp_type = tvb_get_ntohs(tvb, tmp_idx);
- tmp_idx += 2;
-
- if (avp_type == CONTROL_MESSAGE) {
- /* We print message type */
- msg_type = tvb_get_ntohs(tvb, tmp_idx);
- col_add_fstr(pinfo->cinfo, COL_INFO,
- "%s - %s (tunnel id=%u)",
- control_msg ,
- ((NUM_CONTROL_CALL_TYPES + 1 ) > msg_type) ?
- calltype_short_str[msg_type] : "Unknown",
- ccid);
- }
- else {
- /*
- * This is not a control message.
- * We never pass here except in case of bad l2tp packet!
- */
- col_add_fstr(pinfo->cinfo, COL_INFO,
- "%s (tunnel id=%u)",
- control_msg, ccid);
- }
- }
- }
-
- if (LENGTH_BIT(control)) {
- /*
- * Set the length of this tvbuff to be no longer than the length
- * in the header.
- *
- * XXX - complain if that length is longer than the length of
- * the tvbuff? Have "set_actual_length()" return a Boolean
- * and have its callers check the result?
- */
- set_actual_length(tvb, length+baseIdx);
- }
-
- if (tree) {
- l2tp_item = proto_tree_add_item(tree, proto_l2tp, tvb, 0, -1, ENC_NA);
- l2tp_tree = proto_item_add_subtree(l2tp_item, ett_l2tp);
- proto_item_append_text(l2tp_item, " version 3");
-
- if (baseIdx) {
- proto_tree_add_item(l2tp_tree, hf_l2tp_sid, tvb, 0, 4, ENC_BIG_ENDIAN);
- }
- ti = proto_tree_add_text(l2tp_tree, tvb, baseIdx, 2,
- "Packet Type: %s Control Connection Id=%d",
- (CONTROL_BIT(control) ? control_msg : data_msg), ccid);
-
- ctrl_tree = proto_item_add_subtree(ti, ett_l2tp_ctrl);
- proto_tree_add_uint(ctrl_tree, hf_l2tp_type, tvb, baseIdx, 2, control);
- proto_tree_add_boolean(ctrl_tree, hf_l2tp_length_bit, tvb, baseIdx, 2, control);
- proto_tree_add_boolean(ctrl_tree, hf_l2tp_seq_bit, tvb, baseIdx, 2, control);
- proto_tree_add_uint(ctrl_tree, hf_l2tp_version, tvb, baseIdx, 2, control);
- }
- idx = baseIdx + 2;
- if (LENGTH_BIT(control)) {
- if (tree) {
- proto_tree_add_item(l2tp_tree, hf_l2tp_length, tvb, idx, 2, ENC_BIG_ENDIAN);
- }
- idx += 2;
- }
-
- if (tree) {
- proto_tree_add_item(l2tp_tree, hf_l2tp_ccid, tvb, idx, 4, ENC_BIG_ENDIAN);
- }
- idx += 4;
-
- if (SEQUENCE_BIT(control)) {
- if (tree) {
- proto_tree_add_item(l2tp_tree, hf_l2tp_Ns, tvb, idx, 2, ENC_BIG_ENDIAN);
- }
- idx += 2;
- if (tree) {
- proto_tree_add_item(l2tp_tree, hf_l2tp_Nr, tvb, idx, 2, ENC_BIG_ENDIAN);
- }
- idx += 2;
- }
-
- if (tree && (LENGTH_BIT(control))&&(length==12)) {
- proto_tree_add_text(l2tp_tree, tvb, 0, 0, "Zero Length Bit message");
- }
-
- if (!LENGTH_BIT(control)) {
- return;
- }
-
- process_control_avps(tvb, pinfo, l2tp_tree, idx, length+baseIdx);
+ proto_tree *l2tp_tree = NULL, *ctrl_tree;
+ proto_item *l2tp_item = NULL, *ti;
+
+ int idx = baseIdx;
+ int tmp_idx;
+ guint16 length = 0; /* Length field */
+ guint32 ccid = 0; /* Control Connection ID */
+ guint16 avp_type;
+ guint16 msg_type;
+ guint16 control = 0;
+
+ control = tvb_get_ntohs(tvb, idx);
+ idx += 2; /* skip ahead */
+ if (LENGTH_BIT(control)) { /* length field included ? */
+ length = tvb_get_ntohs(tvb, idx);
+ idx += 2;
+ }
+
+ /* Get Control Channel ID */
+ ccid = tvb_get_ntohl(tvb, idx);
+ idx += 4;
+
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ tmp_idx = idx;
+
+ if ((LENGTH_BIT(control))&&(length==12)) /* ZLB Message */
+ col_add_fstr(pinfo->cinfo, COL_INFO,
+ "%s - ZLB (tunnel id=%u)",
+ control_msg , ccid);
+ else
+ {
+ if (SEQUENCE_BIT(control)) {
+ tmp_idx += 4;
+ }
+
+ tmp_idx+=4;
+
+ avp_type = tvb_get_ntohs(tvb, tmp_idx);
+ tmp_idx += 2;
+
+ if (avp_type == CONTROL_MESSAGE) {
+ /* We print message type */
+ msg_type = tvb_get_ntohs(tvb, tmp_idx);
+ col_add_fstr(pinfo->cinfo, COL_INFO,
+ "%s - %s (tunnel id=%u)",
+ control_msg ,
+ val_to_str(msg_type, l2tp_message_type_short_str_vals, "Unknown (%u)"),
+ ccid);
+ }
+ else {
+ /*
+ * This is not a control message.
+ * We never pass here except in case of bad l2tp packet!
+ */
+ col_add_fstr(pinfo->cinfo, COL_INFO,
+ "%s (tunnel id=%u)",
+ control_msg, ccid);
+ }
+ }
+ }
+
+ if (LENGTH_BIT(control)) {
+ /*
+ * Set the length of this tvbuff to be no longer than the length
+ * in the header.
+ *
+ * XXX - complain if that length is longer than the length of
+ * the tvbuff? Have "set_actual_length()" return a Boolean
+ * and have its callers check the result?
+ */
+ set_actual_length(tvb, length+baseIdx);
+ }
+
+ if (tree) {
+ l2tp_item = proto_tree_add_item(tree, proto_l2tp, tvb, 0, -1, ENC_NA);
+ l2tp_tree = proto_item_add_subtree(l2tp_item, ett_l2tp);
+ proto_item_append_text(l2tp_item, " version 3");
+
+ if (baseIdx) {
+ proto_tree_add_item(l2tp_tree, hf_l2tp_sid, tvb, 0, 4, ENC_BIG_ENDIAN);
+ }
+ ti = proto_tree_add_text(l2tp_tree, tvb, baseIdx, 2,
+ "Packet Type: %s Control Connection Id=%d",
+ (CONTROL_BIT(control) ? control_msg : data_msg), ccid);
+
+ ctrl_tree = proto_item_add_subtree(ti, ett_l2tp_ctrl);
+ proto_tree_add_uint(ctrl_tree, hf_l2tp_type, tvb, baseIdx, 2, control);
+ proto_tree_add_boolean(ctrl_tree, hf_l2tp_length_bit, tvb, baseIdx, 2, control);
+ proto_tree_add_boolean(ctrl_tree, hf_l2tp_seq_bit, tvb, baseIdx, 2, control);
+ proto_tree_add_uint(ctrl_tree, hf_l2tp_version, tvb, baseIdx, 2, control);
+ }
+ idx = baseIdx + 2;
+ if (LENGTH_BIT(control)) {
+ if (tree) {
+ proto_tree_add_item(l2tp_tree, hf_l2tp_length, tvb, idx, 2, ENC_BIG_ENDIAN);
+ }
+ idx += 2;
+ }
+
+ if (tree) {
+ proto_tree_add_item(l2tp_tree, hf_l2tp_ccid, tvb, idx, 4, ENC_BIG_ENDIAN);
+ }
+ idx += 4;
+
+ if (SEQUENCE_BIT(control)) {
+ if (tree) {
+ proto_tree_add_item(l2tp_tree, hf_l2tp_Ns, tvb, idx, 2, ENC_BIG_ENDIAN);
+ }
+ idx += 2;
+ if (tree) {
+ proto_tree_add_item(l2tp_tree, hf_l2tp_Nr, tvb, idx, 2, ENC_BIG_ENDIAN);
+ }
+ idx += 2;
+ }
+
+ if (tree && (LENGTH_BIT(control))&&(length==12)) {
+ proto_tree_add_text(l2tp_tree, tvb, 0, 0, "Zero Length Bit message");
+ }
+
+ if (!LENGTH_BIT(control)) {
+ return;
+ }
+
+ process_control_avps(tvb, pinfo, l2tp_tree, idx, length+baseIdx);
}
/*
@@ -1719,208 +1726,207 @@ process_l2tpv3_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
static int
dissect_l2tp_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *l2tp_tree=NULL, *ctrl_tree;
- proto_item *l2tp_item = NULL, *ti;
- int idx = 0;
- int tmp_idx;
- guint16 length = 0; /* Length field */
- guint16 tid; /* Tunnel ID */
- guint16 cid; /* Call ID */
- guint16 offset_size; /* Offset size */
- guint16 avp_type;
- guint16 msg_type;
- guint16 control;
- tvbuff_t *next_tvb;
-
- /*
- * Don't accept packets that aren't for an L2TP version we know,
- * as they might not be L2TP packets even though they happen
- * to be coming from or going to the L2TP port.
- */
- if (tvb_length(tvb) < 2)
- return 0; /* not enough information to check */
- control = tvb_get_ntohs(tvb, 0);
- switch (L2TP_VERSION(control)) {
-
- case 2:
- case 3:
- break;
-
- default:
- return 0;
- }
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "L2TP");
- col_clear(pinfo->cinfo, COL_INFO);
-
- switch (L2TP_VERSION(control)) {
-
- case 2:
- break;
-
- case 3:
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "L2TPv3");
- if (CONTROL_BIT(control)) {
- /* Call to process l2tp v3 control message */
- process_l2tpv3_control(tvb, pinfo, tree, 0);
- }
- else {
- /* Call to process l2tp v3 data message */
- process_l2tpv3_data_udp(tvb, pinfo, tree);
- }
- return tvb_length(tvb);
- }
-
- if (LENGTH_BIT(control)) { /* length field included ? */
- idx += 2; /* skip ahead */
- length = tvb_get_ntohs(tvb, idx);
- }
-
- /* collect the tunnel id & call id */
- idx += 2;
- tid = tvb_get_ntohs(tvb, idx);
- idx += 2;
- cid = tvb_get_ntohs(tvb, idx);
-
- if (check_col(pinfo->cinfo, COL_INFO)) {
- if (CONTROL_BIT(control)) {
- /* CONTROL MESSAGE */
- tmp_idx = idx;
-
- if ((LENGTH_BIT(control))&&(length==12)) /* ZLB Message */
- col_add_fstr(pinfo->cinfo, COL_INFO,
- "%s - ZLB (tunnel id=%d, session id=%u)",
- control_msg, tid, cid);
- else
- {
- if (SEQUENCE_BIT(control)) {
- tmp_idx += 4;
- }
-
- tmp_idx+=4;
-
- avp_type = tvb_get_ntohs(tvb, (tmp_idx+=2));
-
- if (avp_type == CONTROL_MESSAGE) {
- /* We print message type */
- msg_type = tvb_get_ntohs(tvb, tmp_idx+2);
- col_add_fstr(pinfo->cinfo, COL_INFO,
- "%s - %s (tunnel id=%u, session id=%u)",
- control_msg,
- ((NUM_CONTROL_CALL_TYPES + 1 ) > msg_type) ?
- calltype_short_str[msg_type] : "Unknown",
- tid, cid);
- }
- else
- {
- /*
- * This is not a control message.
- * We never pass here except in case of bad l2tp packet!
- */
- col_add_fstr(pinfo->cinfo, COL_INFO,
- "%s (tunnel id=%u, session id=%u)",
- control_msg, tid, cid);
-
- }
- }
- }
- else {
- /* DATA Message */
- col_add_fstr(pinfo->cinfo, COL_INFO,
- "%s (tunnel id=%u, session id=%u)",
- data_msg, tid, cid);
- }
- }
-
- if (LENGTH_BIT(control)) {
- /*
- * Set the length of this tvbuff to be no longer than the length
- * in the header.
- *
- * XXX - complain if that length is longer than the length of
- * the tvbuff? Have "set_actual_length()" return a Boolean
- * and have its callers check the result?
- */
- set_actual_length(tvb, length);
- }
-
- if (tree) {
- l2tp_item = proto_tree_add_item(tree,proto_l2tp, tvb, 0, -1, ENC_NA);
- l2tp_tree = proto_item_add_subtree(l2tp_item, ett_l2tp);
-
- ti = proto_tree_add_text(l2tp_tree, tvb, 0, 2,
- "Packet Type: %s Tunnel Id=%d Session Id=%d",
- (CONTROL_BIT(control) ? control_msg : data_msg), tid, cid);
-
- ctrl_tree = proto_item_add_subtree(ti, ett_l2tp_ctrl);
- proto_tree_add_uint(ctrl_tree, hf_l2tp_type, tvb, 0, 2, control);
- proto_tree_add_boolean(ctrl_tree, hf_l2tp_length_bit, tvb, 0, 2, control);
- proto_tree_add_boolean(ctrl_tree, hf_l2tp_seq_bit, tvb, 0, 2, control);
- proto_tree_add_boolean(ctrl_tree, hf_l2tp_offset_bit, tvb, 0, 2, control);
- proto_tree_add_boolean(ctrl_tree, hf_l2tp_priority, tvb, 0, 2, control);
- proto_tree_add_uint(ctrl_tree, hf_l2tp_version, tvb, 0, 2, control);
- }
- idx = 2;
- if (LENGTH_BIT(control)) {
- if (tree) {
- proto_tree_add_item(l2tp_tree, hf_l2tp_length, tvb, idx, 2, ENC_BIG_ENDIAN);
- }
- idx += 2;
- }
-
- if (tree) {
- proto_tree_add_item(l2tp_tree, hf_l2tp_tunnel, tvb, idx, 2, ENC_BIG_ENDIAN);
- }
- idx += 2;
- if (tree) {
- proto_tree_add_item(l2tp_tree, hf_l2tp_session, tvb, idx, 2, ENC_BIG_ENDIAN);
- }
- idx += 2;
-
- if (SEQUENCE_BIT(control)) {
- if (tree) {
- proto_tree_add_item(l2tp_tree, hf_l2tp_Ns, tvb, idx, 2, ENC_BIG_ENDIAN);
- }
- idx += 2;
- if (tree) {
- proto_tree_add_item(l2tp_tree, hf_l2tp_Nr, tvb, idx, 2, ENC_BIG_ENDIAN);
- }
- idx += 2;
- }
- if (OFFSET_BIT(control)) {
- offset_size = tvb_get_ntohs(tvb, idx);
- if (tree) {
- proto_tree_add_uint(l2tp_tree, hf_l2tp_offset, tvb, idx, 2,
- offset_size);
- }
- idx += 2;
- if (offset_size != 0) {
- if (tree) {
- proto_tree_add_text(l2tp_tree, tvb, idx, offset_size, "Offset Padding");
- }
- idx += offset_size;
- }
- }
-
- if (tree && (LENGTH_BIT(control))&&(length==12)) {
- proto_tree_add_text(l2tp_tree, tvb, 0, 0, "Zero Length Bit message");
- }
-
- if (!CONTROL_BIT(control)) { /* Data Messages so we are done */
- if (tree)
- proto_item_set_len(l2tp_item, idx);
- /* If we have data, signified by having a length bit, dissect it */
- if (tvb_offset_exists(tvb, idx)) {
- next_tvb = tvb_new_subset_remaining(tvb, idx);
- call_dissector(ppp_hdlc_handle, next_tvb, pinfo, tree);
- }
- return tvb_length(tvb);
- }
-
- if (LENGTH_BIT(control))
- process_control_avps(tvb, pinfo, l2tp_tree, idx, length);
-
- return tvb_length(tvb);
+ proto_tree *l2tp_tree = NULL, *ctrl_tree;
+ proto_item *l2tp_item = NULL, *ti;
+ int idx = 0;
+ int tmp_idx;
+ guint16 length = 0; /* Length field */
+ guint16 tid; /* Tunnel ID */
+ guint16 cid; /* Call ID */
+ guint16 offset_size; /* Offset size */
+ guint16 avp_type;
+ guint16 msg_type;
+ guint16 control;
+ tvbuff_t *next_tvb;
+
+ /*
+ * Don't accept packets that aren't for an L2TP version we know,
+ * as they might not be L2TP packets even though they happen
+ * to be coming from or going to the L2TP port.
+ */
+ if (tvb_length(tvb) < 2)
+ return 0; /* not enough information to check */
+ control = tvb_get_ntohs(tvb, 0);
+ switch (L2TP_VERSION(control)) {
+
+ case 2:
+ case 3:
+ break;
+
+ default:
+ return 0;
+ }
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "L2TP");
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ switch (L2TP_VERSION(control)) {
+
+ case 2:
+ break;
+
+ case 3:
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "L2TPv3");
+ if (CONTROL_BIT(control)) {
+ /* Call to process l2tp v3 control message */
+ process_l2tpv3_control(tvb, pinfo, tree, 0);
+ }
+ else {
+ /* Call to process l2tp v3 data message */
+ process_l2tpv3_data_udp(tvb, pinfo, tree);
+ }
+ return tvb_length(tvb);
+ }
+
+ if (LENGTH_BIT(control)) { /* length field included ? */
+ idx += 2; /* skip ahead */
+ length = tvb_get_ntohs(tvb, idx);
+ }
+
+ /* collect the tunnel id & call id */
+ idx += 2;
+ tid = tvb_get_ntohs(tvb, idx);
+ idx += 2;
+ cid = tvb_get_ntohs(tvb, idx);
+
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ if (CONTROL_BIT(control)) {
+ /* CONTROL MESSAGE */
+ tmp_idx = idx;
+
+ if ((LENGTH_BIT(control))&&(length==12)) /* ZLB Message */
+ col_add_fstr(pinfo->cinfo, COL_INFO,
+ "%s - ZLB (tunnel id=%d, session id=%u)",
+ control_msg, tid, cid);
+ else
+ {
+ if (SEQUENCE_BIT(control)) {
+ tmp_idx += 4;
+ }
+
+ tmp_idx+=4;
+
+ avp_type = tvb_get_ntohs(tvb, (tmp_idx+=2));
+
+ if (avp_type == CONTROL_MESSAGE) {
+ /* We print message type */
+ msg_type = tvb_get_ntohs(tvb, tmp_idx+2);
+ col_add_fstr(pinfo->cinfo, COL_INFO,
+ "%s - %s (tunnel id=%u, session id=%u)",
+ control_msg,
+ val_to_str(msg_type, l2tp_message_type_short_str_vals, "Unknown (%u)"),
+ tid, cid);
+ }
+ else
+ {
+ /*
+ * This is not a control message.
+ * We never pass here except in case of bad l2tp packet!
+ */
+ col_add_fstr(pinfo->cinfo, COL_INFO,
+ "%s (tunnel id=%u, session id=%u)",
+ control_msg, tid, cid);
+
+ }
+ }
+ }
+ else {
+ /* DATA Message */
+ col_add_fstr(pinfo->cinfo, COL_INFO,
+ "%s (tunnel id=%u, session id=%u)",
+ data_msg, tid, cid);
+ }
+ }
+
+ if (LENGTH_BIT(control)) {
+ /*
+ * Set the length of this tvbuff to be no longer than the length
+ * in the header.
+ *
+ * XXX - complain if that length is longer than the length of
+ * the tvbuff? Have "set_actual_length()" return a Boolean
+ * and have its callers check the result?
+ */
+ set_actual_length(tvb, length);
+ }
+
+ if (tree) {
+ l2tp_item = proto_tree_add_item(tree,proto_l2tp, tvb, 0, -1, ENC_NA);
+ l2tp_tree = proto_item_add_subtree(l2tp_item, ett_l2tp);
+
+ ti = proto_tree_add_text(l2tp_tree, tvb, 0, 2,
+ "Packet Type: %s Tunnel Id=%d Session Id=%d",
+ (CONTROL_BIT(control) ? control_msg : data_msg), tid, cid);
+
+ ctrl_tree = proto_item_add_subtree(ti, ett_l2tp_ctrl);
+ proto_tree_add_uint(ctrl_tree, hf_l2tp_type, tvb, 0, 2, control);
+ proto_tree_add_boolean(ctrl_tree, hf_l2tp_length_bit, tvb, 0, 2, control);
+ proto_tree_add_boolean(ctrl_tree, hf_l2tp_seq_bit, tvb, 0, 2, control);
+ proto_tree_add_boolean(ctrl_tree, hf_l2tp_offset_bit, tvb, 0, 2, control);
+ proto_tree_add_boolean(ctrl_tree, hf_l2tp_priority, tvb, 0, 2, control);
+ proto_tree_add_uint(ctrl_tree, hf_l2tp_version, tvb, 0, 2, control);
+ }
+ idx = 2;
+ if (LENGTH_BIT(control)) {
+ if (tree) {
+ proto_tree_add_item(l2tp_tree, hf_l2tp_length, tvb, idx, 2, ENC_BIG_ENDIAN);
+ }
+ idx += 2;
+ }
+
+ if (tree) {
+ proto_tree_add_item(l2tp_tree, hf_l2tp_tunnel, tvb, idx, 2, ENC_BIG_ENDIAN);
+ }
+ idx += 2;
+ if (tree) {
+ proto_tree_add_item(l2tp_tree, hf_l2tp_session, tvb, idx, 2, ENC_BIG_ENDIAN);
+ }
+ idx += 2;
+
+ if (SEQUENCE_BIT(control)) {
+ if (tree) {
+ proto_tree_add_item(l2tp_tree, hf_l2tp_Ns, tvb, idx, 2, ENC_BIG_ENDIAN);
+ }
+ idx += 2;
+ if (tree) {
+ proto_tree_add_item(l2tp_tree, hf_l2tp_Nr, tvb, idx, 2, ENC_BIG_ENDIAN);
+ }
+ idx += 2;
+ }
+ if (OFFSET_BIT(control)) {
+ offset_size = tvb_get_ntohs(tvb, idx);
+ if (tree) {
+ proto_tree_add_uint(l2tp_tree, hf_l2tp_offset, tvb, idx, 2,
+ offset_size);
+ }
+ idx += 2;
+ if (offset_size != 0) {
+ if (tree) {
+ proto_tree_add_text(l2tp_tree, tvb, idx, offset_size, "Offset Padding");
+ }
+ idx += offset_size;
+ }
+ }
+
+ if (tree && (LENGTH_BIT(control))&&(length==12)) {
+ proto_tree_add_text(l2tp_tree, tvb, 0, 0, "Zero Length Bit message");
+ }
+
+ if (!CONTROL_BIT(control)) { /* Data Messages so we are done */
+ if (tree)
+ proto_item_set_len(l2tp_item, idx);
+ /* If we have data, signified by having a length bit, dissect it */
+ if (tvb_offset_exists(tvb, idx)) {
+ next_tvb = tvb_new_subset_remaining(tvb, idx);
+ call_dissector(ppp_hdlc_handle, next_tvb, pinfo, tree);
+ }
+ return tvb_length(tvb);
+ }
+
+ if (LENGTH_BIT(control))
+ process_control_avps(tvb, pinfo, l2tp_tree, idx, length);
+
+ return tvb_length(tvb);
}
@@ -1933,264 +1939,268 @@ dissect_l2tp_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
dissect_l2tp_ip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- int idx = 0;
- guint32 sid; /* Session ID */
-
- /* Only L2TPv3 runs directly over IP */
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "L2TPv3");
-
- col_clear(pinfo->cinfo, COL_INFO);
-
- sid = tvb_get_ntohl(tvb, idx);
- if (sid == 0) {
- /* This is control message */
- /* Call to process l2tp v3 control message */
- process_l2tpv3_control(tvb, pinfo, tree, 4);
- }
- else {
- /* Call to process l2tp v3 data message */
- process_l2tpv3_data_ip(tvb, pinfo, tree);
- }
-
- return;
+ int idx = 0;
+ guint32 sid; /* Session ID */
+
+ /* Only L2TPv3 runs directly over IP */
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "L2TPv3");
+
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ sid = tvb_get_ntohl(tvb, idx);
+ if (sid == 0) {
+ /* This is control message */
+ /* Call to process l2tp v3 control message */
+ process_l2tpv3_control(tvb, pinfo, tree, 4);
+ }
+ else {
+ /* Call to process l2tp v3 data message */
+ process_l2tpv3_data_ip(tvb, pinfo, tree);
+ }
+
+ return;
}
/* registration with the filtering engine */
void
proto_register_l2tp(void)
{
- static hf_register_info hf[] = {
- { &hf_l2tp_type,
- { "Type", "l2tp.type", FT_UINT16, BASE_DEC, VALS(l2tp_type_vals), 0x8000,
- "Type bit", HFILL }},
+ static hf_register_info hf[] = {
+ { &hf_l2tp_type,
+ { "Type", "l2tp.type", FT_UINT16, BASE_DEC, VALS(l2tp_type_vals), 0x8000,
+ "Type bit", HFILL }},
+
+ { &hf_l2tp_length_bit,
+ { "Length Bit", "l2tp.length_bit", FT_BOOLEAN, 16, TFS(&l2tp_length_bit_truth), 0x4000,
+ NULL, HFILL }},
- { &hf_l2tp_length_bit,
- { "Length Bit", "l2tp.length_bit", FT_BOOLEAN, 16, TFS(&l2tp_length_bit_truth), 0x4000,
- NULL, HFILL }},
+ { &hf_l2tp_seq_bit,
+ { "Sequence Bit", "l2tp.seq_bit", FT_BOOLEAN, 16, TFS(&l2tp_seq_bit_truth), 0x0800,
+ NULL, HFILL }},
- { &hf_l2tp_seq_bit,
- { "Sequence Bit", "l2tp.seq_bit", FT_BOOLEAN, 16, TFS(&l2tp_seq_bit_truth), 0x0800,
- NULL, HFILL }},
+ { &hf_l2tp_offset_bit,
+ { "Offset bit", "l2tp.offset_bit", FT_BOOLEAN, 16, TFS(&l2tp_offset_bit_truth), 0x0200,
+ NULL, HFILL }},
- { &hf_l2tp_offset_bit,
- { "Offset bit", "l2tp.offset_bit", FT_BOOLEAN, 16, TFS(&l2tp_offset_bit_truth), 0x0200,
- NULL, HFILL }},
+ { &hf_l2tp_priority,
+ { "Priority", "l2tp.priority", FT_BOOLEAN, 16, TFS(&l2tp_priority_truth), 0x0100,
+ "Priority bit", HFILL }},
- { &hf_l2tp_priority,
- { "Priority", "l2tp.priority", FT_BOOLEAN, 16, TFS(&l2tp_priority_truth), 0x0100,
- "Priority bit", HFILL }},
+ { &hf_l2tp_version,
+ { "Version", "l2tp.version", FT_UINT16, BASE_DEC, NULL, 0x000f,
+ NULL, HFILL }},
- { &hf_l2tp_version,
- { "Version", "l2tp.version", FT_UINT16, BASE_DEC, NULL, 0x000f,
- NULL, HFILL }},
+ { &hf_l2tp_length,
+ { "Length","l2tp.length", FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
- { &hf_l2tp_length,
- { "Length","l2tp.length", FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { &hf_l2tp_tunnel,
+ { "Tunnel ID","l2tp.tunnel", FT_UINT16, BASE_DEC, NULL, 0x0, /* Probably should be FT_BYTES */
+ NULL, HFILL }},
- { &hf_l2tp_tunnel,
- { "Tunnel ID","l2tp.tunnel", FT_UINT16, BASE_DEC, NULL, 0x0, /* Probably should be FT_BYTES */
- NULL, HFILL }},
+ { &hf_l2tp_session,
+ { "Session ID","l2tp.session", FT_UINT16, BASE_DEC, NULL, 0x0, /* Probably should be FT_BYTES */
+ NULL, HFILL }},
- { &hf_l2tp_session,
- { "Session ID","l2tp.session", FT_UINT16, BASE_DEC, NULL, 0x0, /* Probably should be FT_BYTES */
- NULL, HFILL }},
+ { &hf_l2tp_Ns,
+ { "Ns","l2tp.Ns", FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
- { &hf_l2tp_Ns,
- { "Ns","l2tp.Ns", FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { &hf_l2tp_Nr,
+ { "Nr","l2tp.Nr", FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
- { &hf_l2tp_Nr,
- { "Nr","l2tp.Nr", FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { &hf_l2tp_offset,
+ { "Offset","l2tp.offset", FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Number of octest past the L2TP header at which thepayload data starts.", HFILL }},
- { &hf_l2tp_offset,
- { "Offset","l2tp.offset", FT_UINT16, BASE_DEC, NULL, 0x0,
- "Number of octest past the L2TP header at which thepayload data starts.", HFILL }},
+ { &hf_l2tp_avp_mandatory,
+ { "Mandatory", "l2tp.avp.mandatory", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "Mandatory AVP", HFILL }},
- { &hf_l2tp_avp_mandatory,
- { "Mandatory", "l2tp.avp.mandatory", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "Mandatory AVP", HFILL }},
+ { &hf_l2tp_avp_hidden,
+ { "Hidden", "l2tp.avp.hidden", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "Hidden AVP", HFILL }},
- { &hf_l2tp_avp_hidden,
- { "Hidden", "l2tp.avp.hidden", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "Hidden AVP", HFILL }},
-
- { &hf_l2tp_avp_length,
- { "Length", "l2tp.avp.length", FT_UINT16, BASE_DEC, NULL, 0,
- "AVP Length", HFILL }},
-
- { &hf_l2tp_avp_vendor_id,
- { "Vendor ID", "l2tp.avp.vendor_id", FT_UINT16, BASE_DEC|BASE_EXT_STRING, &sminmpec_values_ext, 0,
- "AVP Vendor ID", HFILL }},
-
- { &hf_l2tp_avp_type,
- { "Type", "l2tp.avp.type", FT_UINT16, BASE_DEC, VALS(avp_type_vals), 0,
- "AVP Type", HFILL }},
-
- { &hf_l2tp_tie_breaker,
- { "Tie Breaker", "l2tp.tie_breaker", FT_UINT64, BASE_HEX, NULL, 0,
- NULL, HFILL }},
-
- { &hf_l2tp_sid,
- { "Session ID","l2tp.sid", FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_l2tp_ccid,
- { "Control Connection ID","l2tp.ccid", FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_l2tp_res,
- { "Reserved","l2tp.res", FT_UINT16, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_l2tp_cookie,
- { "Cookie","l2tp.cookie", FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_l2tp_l2_spec_def,
- { "Default L2-Specific Sublayer","l2tp.l2_spec_def", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_l2tp_l2_spec_atm,
- { "ATM-Specific Sublayer","l2tp.l2_spec_atm", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_l2tp_l2_spec_docsis_dmpt,
- { "DOCSIS DMPT - Specific Sublayer","l2tp.l2_spec_docsis_dmpt", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_l2tp_l2_spec_v,
- { "V-bit","l2tp.l2_spec_v", FT_BOOLEAN, 8, NULL, 0x80,
- "VCCV Bit", HFILL }},
-
- { &hf_l2tp_l2_spec_s,
- { "S-bit","l2tp.l2_spec_s", FT_BOOLEAN, 8, NULL, 0x40,
- "Sequence Bit", HFILL }},
-
- { &hf_l2tp_l2_spec_t,
- { "T-bit","l2tp.l2_spec_t", FT_BOOLEAN, 8, NULL, 0x08,
- "Transport Type Bit", HFILL }},
-
- { &hf_l2tp_l2_spec_g,
- { "G-bit","l2tp.l2_spec_g", FT_BOOLEAN, 8, NULL, 0x04,
- "EFCI Bit", HFILL }},
-
- { &hf_l2tp_l2_spec_c,
- { "C-bit","l2tp.l2_spec_c", FT_BOOLEAN, 8, NULL, 0x02,
- "CLP Bit", HFILL }},
-
- { &hf_l2tp_l2_spec_u,
- { "U-bit","l2tp.l2_spec_u", FT_BOOLEAN, 8, NULL, 0x01,
- "C/R Bit", HFILL }},
-
- { &hf_l2tp_l2_spec_flow_id,
- { "Flow ID","l2tp.l2_spec_flow_id", FT_UINT8, BASE_HEX, NULL, FLOW_ID_MASK,
- NULL, HFILL }},
-
- { &hf_l2tp_l2_spec_sequence,
- { "Sequence Number","l2tp.l2_spec_sequence", FT_UINT24, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_l2tp_cisco_avp_type,
- { "Type", "l2tp.avp.ciscotype", FT_UINT16, BASE_DEC, VALS(cisco_avp_type_vals), 0,
- "AVP Type", HFILL }},
-
- { &hf_l2tp_avp_assigned_tunnel_id,
- { "Assigned Tunnel ID", "l2tp.avp.assigned_tunnel_id", FT_UINT16, BASE_DEC, NULL, 0,
- NULL, HFILL }},
-
- { &hf_l2tp_avp_assigned_control_conn_id,
- { "Assigned Control Connection ID", "l2tp.avp.assigned_control_conn_id", FT_UINT32, BASE_DEC, NULL, 0,
- NULL, HFILL }},
-
- { &hf_l2tp_avp_assigned_session_id,
- { "Assigned Session ID", "l2tp.avp.assigned_session_id", FT_UINT16, BASE_DEC, NULL, 0,
- NULL, HFILL }},
-
- { &hf_l2tp_avp_remote_session_id,
- { "Remote Session ID", "l2tp.avp.remote_session_id", FT_UINT32, BASE_DEC, NULL, 0,
- NULL, HFILL }},
-
- { &hf_l2tp_avp_local_session_id,
- { "Local Session ID", "l2tp.avp.local_session_id", FT_UINT32, BASE_DEC, NULL, 0,
- NULL, HFILL }},
- };
-
- static gint *ett[] = {
- &ett_l2tp,
- &ett_l2tp_ctrl,
- &ett_l2tp_avp,
- &ett_l2tp_avp_sub,
- &ett_l2tp_l2_spec,
- &ett_l2tp_lcp,
- };
-
- module_t *l2tp_module;
-
- proto_l2tp = proto_register_protocol(
- "Layer 2 Tunneling Protocol", "L2TP", "l2tp");
- proto_register_field_array(proto_l2tp, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
-
- l2tp_module = prefs_register_protocol(proto_l2tp, NULL);
-
- prefs_register_enum_preference(l2tp_module,
- "cookie_size",
- "L2TPv3 Cookie Size",
- "L2TPv3 Cookie Size",
- &l2tpv3_cookie,
- l2tpv3_cookies,
- FALSE);
-
- prefs_register_enum_preference(l2tp_module,
- "l2_specific",
- "L2TPv3 L2-Specific Sublayer",
- "L2TPv3 L2-Specific Sublayer",
- &l2tpv3_l2_specific,
- l2tpv3_l2_specifics,
- FALSE);
-
- prefs_register_enum_preference(l2tp_module,
- "protocol",
- "Decode L2TPv3 packet contents as this protocol",
- "Decode L2TPv3 packet contents as this protocol",
- &l2tpv3_protocol,
- l2tpv3_protocols,
- FALSE);
+ { &hf_l2tp_avp_length,
+ { "Length", "l2tp.avp.length", FT_UINT16, BASE_DEC, NULL, 0,
+ "AVP Length", HFILL }},
+
+ { &hf_l2tp_avp_vendor_id,
+ { "Vendor ID", "l2tp.avp.vendor_id", FT_UINT16, BASE_DEC|BASE_EXT_STRING, &sminmpec_values_ext, 0,
+ "AVP Vendor ID", HFILL }},
+
+ { &hf_l2tp_avp_type,
+ { "Type", "l2tp.avp.type", FT_UINT16, BASE_DEC, VALS(avp_type_vals), 0,
+ "AVP Type", HFILL }},
+
+ { &hf_l2tp_tie_breaker,
+ { "Tie Breaker", "l2tp.tie_breaker", FT_UINT64, BASE_HEX, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_l2tp_sid,
+ { "Session ID","l2tp.sid", FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_l2tp_ccid,
+ { "Control Connection ID","l2tp.ccid", FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_l2tp_res,
+ { "Reserved","l2tp.res", FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_l2tp_cookie,
+ { "Cookie","l2tp.cookie", FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_l2tp_l2_spec_def,
+ { "Default L2-Specific Sublayer","l2tp.l2_spec_def", FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_l2tp_l2_spec_atm,
+ { "ATM-Specific Sublayer","l2tp.l2_spec_atm", FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_l2tp_l2_spec_docsis_dmpt,
+ { "DOCSIS DMPT - Specific Sublayer","l2tp.l2_spec_docsis_dmpt", FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_l2tp_l2_spec_v,
+ { "V-bit","l2tp.l2_spec_v", FT_BOOLEAN, 8, NULL, 0x80,
+ "VCCV Bit", HFILL }},
+
+ { &hf_l2tp_l2_spec_s,
+ { "S-bit","l2tp.l2_spec_s", FT_BOOLEAN, 8, NULL, 0x40,
+ "Sequence Bit", HFILL }},
+
+ { &hf_l2tp_l2_spec_t,
+ { "T-bit","l2tp.l2_spec_t", FT_BOOLEAN, 8, NULL, 0x08,
+ "Transport Type Bit", HFILL }},
+
+ { &hf_l2tp_l2_spec_g,
+ { "G-bit","l2tp.l2_spec_g", FT_BOOLEAN, 8, NULL, 0x04,
+ "EFCI Bit", HFILL }},
+
+ { &hf_l2tp_l2_spec_c,
+ { "C-bit","l2tp.l2_spec_c", FT_BOOLEAN, 8, NULL, 0x02,
+ "CLP Bit", HFILL }},
+
+ { &hf_l2tp_l2_spec_u,
+ { "U-bit","l2tp.l2_spec_u", FT_BOOLEAN, 8, NULL, 0x01,
+ "C/R Bit", HFILL }},
+
+ { &hf_l2tp_l2_spec_flow_id,
+ { "Flow ID","l2tp.l2_spec_flow_id", FT_UINT8, BASE_HEX, NULL, FLOW_ID_MASK,
+ NULL, HFILL }},
+
+ { &hf_l2tp_l2_spec_sequence,
+ { "Sequence Number","l2tp.l2_spec_sequence", FT_UINT24, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_l2tp_cisco_avp_type,
+ { "Type", "l2tp.avp.ciscotype", FT_UINT16, BASE_DEC, VALS(cisco_avp_type_vals), 0,
+ "AVP Type", HFILL }},
+
+ { &hf_l2tp_avp_message_type,
+ { "Message Type", "l2tp.avp.message_type", FT_UINT16, BASE_DEC, VALS(message_type_vals), 0,
+ NULL, HFILL }},
+
+ { &hf_l2tp_avp_assigned_tunnel_id,
+ { "Assigned Tunnel ID", "l2tp.avp.assigned_tunnel_id", FT_UINT16, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_l2tp_avp_assigned_control_conn_id,
+ { "Assigned Control Connection ID", "l2tp.avp.assigned_control_conn_id", FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_l2tp_avp_assigned_session_id,
+ { "Assigned Session ID", "l2tp.avp.assigned_session_id", FT_UINT16, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_l2tp_avp_remote_session_id,
+ { "Remote Session ID", "l2tp.avp.remote_session_id", FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_l2tp_avp_local_session_id,
+ { "Local Session ID", "l2tp.avp.local_session_id", FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ };
+
+ static gint *ett[] = {
+ &ett_l2tp,
+ &ett_l2tp_ctrl,
+ &ett_l2tp_avp,
+ &ett_l2tp_avp_sub,
+ &ett_l2tp_l2_spec,
+ &ett_l2tp_lcp,
+ };
+
+ module_t *l2tp_module;
+
+ proto_l2tp = proto_register_protocol(
+ "Layer 2 Tunneling Protocol", "L2TP", "l2tp");
+ proto_register_field_array(proto_l2tp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ l2tp_module = prefs_register_protocol(proto_l2tp, NULL);
+
+ prefs_register_enum_preference(l2tp_module,
+ "cookie_size",
+ "L2TPv3 Cookie Size",
+ "L2TPv3 Cookie Size",
+ &l2tpv3_cookie,
+ l2tpv3_cookies,
+ FALSE);
+
+ prefs_register_enum_preference(l2tp_module,
+ "l2_specific",
+ "L2TPv3 L2-Specific Sublayer",
+ "L2TPv3 L2-Specific Sublayer",
+ &l2tpv3_l2_specific,
+ l2tpv3_l2_specifics,
+ FALSE);
+
+ prefs_register_enum_preference(l2tp_module,
+ "protocol",
+ "Decode L2TPv3 packet contents as this protocol",
+ "Decode L2TPv3 packet contents as this protocol",
+ &l2tpv3_protocol,
+ l2tpv3_protocols,
+ FALSE);
}
void
proto_reg_handoff_l2tp(void)
{
- dissector_handle_t l2tp_udp_handle;
- dissector_handle_t l2tp_ip_handle;
-
- l2tp_udp_handle = new_create_dissector_handle(dissect_l2tp_udp, proto_l2tp);
- dissector_add_uint("udp.port", UDP_PORT_L2TP, l2tp_udp_handle);
-
- l2tp_ip_handle = create_dissector_handle(dissect_l2tp_ip, proto_l2tp);
- dissector_add_uint("ip.proto", IP_PROTO_L2TP, l2tp_ip_handle);
-
- /*
- * Get a handle for the PPP-in-HDLC-like-framing dissector.
- */
- ppp_hdlc_handle = find_dissector("ppp_hdlc");
- ppp_lcp_options_handle = find_dissector("ppp_lcp_options");
-
- /*
- * Get a handle for the dissectors used in v3.
- */
- eth_withoutfcs_handle = find_dissector("eth_withoutfcs");
- chdlc_handle = find_dissector("chdlc");
- fr_handle = find_dissector("fr");
- ip_handle = find_dissector("ip");
- mpls_handle = find_dissector("mpls");
- atm_oam_handle = find_dissector("atm_oam_cell");
- llc_handle = find_dissector("llc");
- lapd_handle = find_dissector("lapd");
- mp2t_handle = find_dissector("mp2t");
- ehdlc_handle = find_dissector("ehdlc");
- data_handle = find_dissector("data");
+ dissector_handle_t l2tp_udp_handle;
+ dissector_handle_t l2tp_ip_handle;
+
+ l2tp_udp_handle = new_create_dissector_handle(dissect_l2tp_udp, proto_l2tp);
+ dissector_add_uint("udp.port", UDP_PORT_L2TP, l2tp_udp_handle);
+
+ l2tp_ip_handle = create_dissector_handle(dissect_l2tp_ip, proto_l2tp);
+ dissector_add_uint("ip.proto", IP_PROTO_L2TP, l2tp_ip_handle);
+
+ /*
+ * Get a handle for the PPP-in-HDLC-like-framing dissector.
+ */
+ ppp_hdlc_handle = find_dissector("ppp_hdlc");
+ ppp_lcp_options_handle = find_dissector("ppp_lcp_options");
+
+ /*
+ * Get a handle for the dissectors used in v3.
+ */
+ eth_withoutfcs_handle = find_dissector("eth_withoutfcs");
+ chdlc_handle = find_dissector("chdlc");
+ fr_handle = find_dissector("fr");
+ ip_handle = find_dissector("ip");
+ mpls_handle = find_dissector("mpls");
+ atm_oam_handle = find_dissector("atm_oam_cell");
+ llc_handle = find_dissector("llc");
+ lapd_handle = find_dissector("lapd");
+ mp2t_handle = find_dissector("mp2t");
+ ehdlc_handle = find_dissector("ehdlc");
+ data_handle = find_dissector("data");
}
diff --git a/epan/dissectors/packet-laplink.c b/epan/dissectors/packet-laplink.c
index 6978f2c741..6d1e1cf05b 100644
--- a/epan/dissectors/packet-laplink.c
+++ b/epan/dissectors/packet-laplink.c
@@ -27,8 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-lcsap.c b/epan/dissectors/packet-lcsap.c
index b99711abc6..9bdcf01c10 100644
--- a/epan/dissectors/packet-lcsap.c
+++ b/epan/dissectors/packet-lcsap.c
@@ -1,7 +1,7 @@
/* Do not modify this file. */
/* It is created automatically by the ASN.1 to Wireshark dissector compiler */
/* packet-lcsap.c */
-/* ../../../tools/asn2wrs.py -p lcsap -c ../../../asn1/lcsap/lcsap.cnf -s ../../../asn1/lcsap/packet-lcsap-template -D ../../../asn1/lcsap -O ../../../epan/dissectors LCS-AP-CommonDataTypes.asn LCS-AP-Constants.asn LCS-AP-Containers.asn LCS-AP-IEs.asn LCS-AP-PDU-Contents.asn LCS-AP-PDU-Descriptions.asn */
+/* ../../tools/asn2wrs.py -p lcsap -c ./lcsap.cnf -s ./packet-lcsap-template -D . -O ../../epan/dissectors LCS-AP-CommonDataTypes.asn LCS-AP-Constants.asn LCS-AP-Containers.asn LCS-AP-IEs.asn LCS-AP-PDU-Contents.asn LCS-AP-PDU-Descriptions.asn */
/* Input file: packet-lcsap-template.c */
@@ -106,7 +106,8 @@ typedef enum _ProtocolIE_ID_enum {
id_Return_Error_Cause = 18,
id_Source_Identity = 19,
id_UE_Positioning_Capability = 20,
- id_Velocity_Estimate = 21
+ id_Velocity_Estimate = 21,
+ id_LCS_Service_Type_ID = 22
} ProtocolIE_ID_enum;
/*--- End of included file: packet-lcsap-val.h ---*/
@@ -134,6 +135,7 @@ static int hf_lcsap_LCS_Cause_PDU = -1; /* LCS_Cause */
static int hf_lcsap_LCS_Client_Type_PDU = -1; /* LCS_Client_Type */
static int hf_lcsap_LCS_Priority_PDU = -1; /* LCS_Priority */
static int hf_lcsap_LCS_QoS_PDU = -1; /* LCS_QoS */
+static int hf_lcsap_LCS_Service_Type_ID_PDU = -1; /* LCS_Service_Type_ID */
static int hf_lcsap_MultipleAPDUs_PDU = -1; /* MultipleAPDUs */
static int hf_lcsap_Network_Element_PDU = -1; /* Network_Element */
static int hf_lcsap_Payload_Type_PDU = -1; /* Payload_Type */
@@ -151,11 +153,11 @@ static int hf_lcsap_Reset_Request_PDU = -1; /* Reset_Request */
static int hf_lcsap_Reset_Acknowledge_PDU = -1; /* Reset_Acknowledge */
static int hf_lcsap_LCS_AP_PDU_PDU = -1; /* LCS_AP_PDU */
static int hf_lcsap_ProtocolIE_Container_item = -1; /* ProtocolIE_Field */
-static int hf_lcsap_ieid = -1; /* ProtocolIE_ID */
+static int hf_lcsap_id = -1; /* ProtocolIE_ID */
static int hf_lcsap_criticality = -1; /* Criticality */
static int hf_lcsap_ie_field_value = -1; /* T_ie_field_value */
static int hf_lcsap_ProtocolExtensionContainer_item = -1; /* ProtocolExtensionField */
-static int hf_lcsap_extid = -1; /* ProtocolExtensionID */
+static int hf_lcsap_ext_id = -1; /* ProtocolExtensionID */
static int hf_lcsap_extensionValue = -1; /* T_extensionValue */
static int hf_lcsap_direction_Of_Altitude = -1; /* Direction_Of_Altitude */
static int hf_lcsap_altitude = -1; /* Altitude */
@@ -186,7 +188,7 @@ static int hf_lcsap_degreesLongitude = -1; /* DegreesLongitude */
static int hf_lcsap_pLMN_ID = -1; /* PLMN_ID */
static int hf_lcsap_eNB_ID = -1; /* ENB_ID */
static int hf_lcsap_GNSS_Positioning_Data_Set_item = -1; /* GNSS_Positioning_Method_And_Usage */
-static int hf_lcsap_bearing = -1; /* Bearing */
+static int hf_lcsap_bearing = -1; /* INTEGER_0_359 */
static int hf_lcsap_horizontal_Speed = -1; /* INTEGER_0_2047 */
static int hf_lcsap_horizontal_Speed_And_Bearing = -1; /* Horizontal_Speed_And_Bearing */
static int hf_lcsap_vertical_Velocity = -1; /* Vertical_Velocity */
@@ -345,7 +347,7 @@ dissect_lcsap_ProcedureCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 255U, &ProcedureCode, FALSE);
-#line 101 "../../asn1/lcsap/lcsap.cnf"
+#line 100 "../../asn1/lcsap/lcsap.cnf"
if (check_col(actx->pinfo->cinfo, COL_INFO))
{
@@ -414,6 +416,7 @@ static const value_string lcsap_ProtocolIE_ID_vals[] = {
{ id_Source_Identity, "id-Source-Identity" },
{ id_UE_Positioning_Capability, "id-UE-Positioning-Capability" },
{ id_Velocity_Estimate, "id-Velocity-Estimate" },
+ { id_LCS_Service_Type_ID, "id-LCS-Service-Type-ID" },
{ 0, NULL }
};
@@ -423,7 +426,7 @@ dissect_lcsap_ProtocolIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 65535U, &ProtocolIE_ID, FALSE);
-#line 53 "../../asn1/lcsap/lcsap.cnf"
+#line 52 "../../asn1/lcsap/lcsap.cnf"
if (tree) {
proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str(ProtocolIE_ID, VALS(lcsap_ProtocolIE_ID_vals), "unknown (%d)"));
}
@@ -442,7 +445,7 @@ dissect_lcsap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
static const per_sequence_t ProtocolIE_Field_sequence[] = {
- { &hf_lcsap_ieid , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_ProtocolIE_ID },
+ { &hf_lcsap_id , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_ProtocolIE_ID },
{ &hf_lcsap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_Criticality },
{ &hf_lcsap_ie_field_value, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_T_ie_field_value },
{ NULL, 0, 0, NULL }
@@ -481,7 +484,7 @@ dissect_lcsap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
static const per_sequence_t ProtocolExtensionField_sequence[] = {
- { &hf_lcsap_extid , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_ProtocolExtensionID },
+ { &hf_lcsap_ext_id , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_ProtocolExtensionID },
{ &hf_lcsap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_Criticality },
{ &hf_lcsap_extensionValue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_T_extensionValue },
{ NULL, 0, 0, NULL }
@@ -513,7 +516,7 @@ dissect_lcsap_ProtocolExtensionContainer(tvbuff_t *tvb _U_, int offset _U_, asn1
static int
dissect_lcsap_APDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 74 "../../asn1/lcsap/lcsap.cnf"
+#line 73 "../../asn1/lcsap/lcsap.cnf"
tvbuff_t *parameter_tvb=NULL;
@@ -567,7 +570,7 @@ dissect_lcsap_Accuracy_Fulfillment_Indicator(tvbuff_t *tvb _U_, int offset _U_,
static int
dissect_lcsap_Altitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
- 1U, 65535U, NULL, FALSE);
+ 0U, 65535U, NULL, FALSE);
return offset;
}
@@ -616,16 +619,6 @@ dissect_lcsap_Angle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
static int
-dissect_lcsap_Bearing(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
- 0U, 359U, NULL, FALSE);
-
- return offset;
-}
-
-
-
-static int
dissect_lcsap_CellIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
28, 28, FALSE, NULL);
@@ -678,7 +671,7 @@ dissect_lcsap_DegreesLongitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
static int
dissect_lcsap_PLMN_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 172 "../../asn1/lcsap/lcsap.cnf"
+#line 171 "../../asn1/lcsap/lcsap.cnf"
tvbuff_t *parameter_tvb=NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
3, 3, FALSE, &parameter_tvb);
@@ -1066,6 +1059,16 @@ dissect_lcsap_Horizontal_Accuracy(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static int
+dissect_lcsap_INTEGER_0_359(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 359U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
dissect_lcsap_INTEGER_0_2047(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 2047U, NULL, FALSE);
@@ -1075,7 +1078,7 @@ dissect_lcsap_INTEGER_0_2047(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static const per_sequence_t Horizontal_Speed_And_Bearing_sequence[] = {
- { &hf_lcsap_bearing , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_Bearing },
+ { &hf_lcsap_bearing , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_INTEGER_0_359 },
{ &hf_lcsap_horizontal_Speed, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_INTEGER_0_2047 },
{ NULL, 0, 0, NULL }
};
@@ -1434,6 +1437,16 @@ dissect_lcsap_LCS_QoS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p
}
+
+static int
+dissect_lcsap_LCS_Service_Type_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 127U, NULL, FALSE);
+
+ return offset;
+}
+
+
static const per_sequence_t MultipleAPDUs_sequence_of[1] = {
{ &hf_lcsap_MultipleAPDUs_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_APDU },
};
@@ -1678,7 +1691,7 @@ static const per_sequence_t Connectionless_Information_sequence[] = {
static int
dissect_lcsap_Connectionless_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 70 "../../asn1/lcsap/lcsap.cnf"
+#line 69 "../../asn1/lcsap/lcsap.cnf"
PayloadType = 1; /* LPPa */
@@ -1924,6 +1937,14 @@ static int dissect_LCS_QoS_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_
offset += 7; offset >>= 3;
return offset;
}
+static int dissect_LCS_Service_Type_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
+ int offset = 0;
+ asn1_ctx_t asn1_ctx;
+ asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
+ offset = dissect_lcsap_LCS_Service_Type_ID(tvb, offset, &asn1_ctx, tree, hf_lcsap_LCS_Service_Type_ID_PDU);
+ offset += 7; offset >>= 3;
+ return offset;
+}
static int dissect_MultipleAPDUs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
int offset = 0;
asn1_ctx_t asn1_ctx;
@@ -2141,6 +2162,7 @@ proto_reg_handoff_lcsap(void)
dissector_add_uint("lcsap.ies", id_Source_Identity, new_create_dissector_handle(dissect_Network_Element_PDU, proto_lcsap));
dissector_add_uint("lcsap.ies", id_UE_Positioning_Capability, new_create_dissector_handle(dissect_UE_Positioning_Capability_PDU, proto_lcsap));
dissector_add_uint("lcsap.ies", id_Velocity_Estimate, new_create_dissector_handle(dissect_Velocity_Estimate_PDU, proto_lcsap));
+ dissector_add_uint("lcsap.extension", id_LCS_Service_Type_ID, new_create_dissector_handle(dissect_LCS_Service_Type_ID_PDU, proto_lcsap));
dissector_add_uint("lcsap.proc.imsg", id_Location_Service_Request, new_create_dissector_handle(dissect_Location_Request_PDU, proto_lcsap));
dissector_add_uint("lcsap.proc.sout", id_Location_Service_Request, new_create_dissector_handle(dissect_Location_Response_PDU, proto_lcsap));
dissector_add_uint("lcsap.proc.uout", id_Location_Service_Request, new_create_dissector_handle(dissect_Location_Response_PDU, proto_lcsap));
@@ -2227,6 +2249,10 @@ void proto_register_lcsap(void) {
{ "LCS-QoS", "lcsap.LCS_QoS",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_lcsap_LCS_Service_Type_ID_PDU,
+ { "LCS-Service-Type-ID", "lcsap.LCS_Service_Type_ID",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
{ &hf_lcsap_MultipleAPDUs_PDU,
{ "MultipleAPDUs", "lcsap.MultipleAPDUs",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -2295,8 +2321,8 @@ void proto_register_lcsap(void) {
{ "ProtocolIE-Field", "lcsap.ProtocolIE_Field",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_lcsap_ieid,
- { "ieid", "lcsap.ieid",
+ { &hf_lcsap_id,
+ { "id", "lcsap.id",
FT_UINT32, BASE_DEC, VALS(lcsap_ProtocolIE_ID_vals), 0,
"ProtocolIE_ID", HFILL }},
{ &hf_lcsap_criticality,
@@ -2311,8 +2337,8 @@ void proto_register_lcsap(void) {
{ "ProtocolExtensionField", "lcsap.ProtocolExtensionField",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_lcsap_extid,
- { "extid", "lcsap.extid",
+ { &hf_lcsap_ext_id,
+ { "id", "lcsap.id",
FT_UINT8, BASE_DEC, VALS(lcsap_ProtocolIE_ID_vals), 0,
"ProtocolExtensionID", HFILL }},
{ &hf_lcsap_extensionValue,
@@ -2438,7 +2464,7 @@ void proto_register_lcsap(void) {
{ &hf_lcsap_bearing,
{ "bearing", "lcsap.bearing",
FT_UINT32, BASE_DEC, NULL, 0,
- NULL, HFILL }},
+ "INTEGER_0_359", HFILL }},
{ &hf_lcsap_horizontal_Speed,
{ "horizontal-Speed", "lcsap.horizontal_Speed",
FT_UINT32, BASE_DEC, NULL, 0,
diff --git a/epan/dissectors/packet-ldap.c b/epan/dissectors/packet-ldap.c
index 8c432ec961..a9d689c4bd 100644
--- a/epan/dissectors/packet-ldap.c
+++ b/epan/dissectors/packet-ldap.c
@@ -9,7 +9,7 @@
/* packet-ldap.c
* Routines for ldap packet dissection
*
- * See RFC 1777 (LDAP v2), RFC 2251 (LDAP v3), and RFC 2222 (SASL).
+ * See RFC 1777 (LDAP v2), RFC 4511 (LDAP v3), and RFC 2222 (SASL).
*
* $Id$
*
@@ -112,6 +112,7 @@
#include <epan/dissectors/packet-dcerpc.h>
#include <epan/asn1.h>
#include <epan/expert.h>
+#include <epan/uat.h>
#include "packet-ldap.h"
#include "packet-ntlmssp.h"
@@ -341,7 +342,7 @@ static int hf_ldap_graceAuthNsRemaining = -1; /* INTEGER_0_maxInt */
static int hf_ldap_error = -1; /* T_error */
/*--- End of included file: packet-ldap-hf.c ---*/
-#line 188 "../../asn1/ldap/packet-ldap-template.c"
+#line 189 "../../asn1/ldap/packet-ldap-template.c"
/* Initialize the subtree pointers */
static gint ett_ldap = -1;
@@ -414,7 +415,7 @@ static gint ett_ldap_PasswordPolicyResponseValue = -1;
static gint ett_ldap_T_warning = -1;
/*--- End of included file: packet-ldap-ett.c ---*/
-#line 199 "../../asn1/ldap/packet-ldap-template.c"
+#line 200 "../../asn1/ldap/packet-ldap-template.c"
static dissector_table_t ldap_name_dissector_table=NULL;
static const char *object_identifier_id = NULL; /* LDAP OID */
@@ -457,7 +458,7 @@ static const value_string ldap_ProtocolOp_choice_vals[] = {
{ 3, "searchRequest" },
{ 4, "searchResEntry" },
{ 5, "searchResDone" },
- { 6, "searchResRef" },
+ { 6, "searchResRef" },
{ 7, "modifyRequest" },
{ 8, "modifyResponse" },
{ 9, "addRequest" },
@@ -606,6 +607,139 @@ static const true_false_string tfs_ntver_vl = {
"Global Catalog not requested"
};
+/* Stuff for generation/handling of fields for custom AttributeValues */
+typedef struct _attribute_type_t {
+ gchar* attribute_type;
+ gchar* attribute_desc;
+} attribute_type_t;
+
+static attribute_type_t* attribute_types = NULL;
+static guint num_attribute_types = 0;
+
+static GHashTable* attribute_types_hash = NULL;
+
+static void
+attribute_types_update_cb(void *r, const char **err)
+{
+ attribute_type_t *rec = (attribute_type_t *)r;
+ char c;
+
+ if (rec->attribute_type == NULL) {
+ *err = ep_strdup_printf("Attribute type can't be empty");
+ return;
+ }
+
+ g_strstrip(rec->attribute_type);
+ if (rec->attribute_type[0] == 0) {
+ *err = ep_strdup_printf("Attribute type can't be empty");
+ return;
+ }
+
+ /* Check for invalid characters (to avoid asserting out when
+ * registering the field).
+ */
+ c = proto_check_field_name(rec->attribute_type);
+ if (c) {
+ *err = ep_strdup_printf("Attribute type can't contain '%c'", c);
+ return;
+ }
+
+ *err = NULL;
+}
+
+static void *
+attribute_types_copy_cb(void* n, const void* o, size_t siz _U_)
+{
+ attribute_type_t* new_rec = (attribute_type_t*)n;
+ const attribute_type_t* old_rec = (const attribute_type_t*)o;
+
+ new_rec->attribute_type = g_strdup(old_rec->attribute_type);
+ new_rec->attribute_desc = g_strdup(old_rec->attribute_desc);
+
+ return new_rec;
+}
+
+static void
+attribute_types_free_cb(void*r)
+{
+ attribute_type_t* rec = (attribute_type_t*)r;
+
+ if (rec->attribute_type) g_free(rec->attribute_type);
+ if (rec->attribute_desc) g_free(rec->attribute_desc);
+}
+
+UAT_CSTRING_CB_DEF(attribute_types, attribute_type, attribute_type_t)
+UAT_CSTRING_CB_DEF(attribute_types, attribute_desc, attribute_type_t)
+
+/*
+ *
+ */
+static gint*
+get_hf_for_header(char* attribute_type)
+{
+ gint* hf_id = NULL;
+
+ if (attribute_types_hash) {
+ hf_id = (gint*) g_hash_table_lookup(attribute_types_hash, attribute_type);
+ } else {
+ hf_id = NULL;
+ }
+
+ return hf_id;
+}
+
+/*
+ *
+ */
+static void
+attribute_types_initialize_cb(void)
+{
+ static hf_register_info* hf;
+ gint* hf_id;
+ guint i;
+ gchar* attribute_type;
+
+ if (attribute_types_hash) {
+ guint hf_size = g_hash_table_size (attribute_types_hash);
+ /* Unregister all fields */
+ for (i = 0; i < hf_size; i++) {
+ proto_unregister_field (proto_ldap, *(hf[i].p_id));
+
+ g_free (hf[i].p_id);
+ g_free ((char *) hf[i].hfinfo.name);
+ g_free ((char *) hf[i].hfinfo.abbrev);
+ g_free ((char *) hf[i].hfinfo.blurb);
+ }
+ g_hash_table_destroy (attribute_types_hash);
+ g_free (hf);
+ attribute_types_hash = NULL;
+ }
+
+ if (num_attribute_types) {
+ attribute_types_hash = g_hash_table_new(g_str_hash, g_str_equal);
+ hf = g_new0(hf_register_info,num_attribute_types);
+
+ for (i = 0; i < num_attribute_types; i++) {
+ hf_id = g_new(gint,1);
+ *hf_id = -1;
+ attribute_type = g_strdup(attribute_types[i].attribute_type);
+
+ hf[i].p_id = hf_id;
+ hf[i].hfinfo.name = attribute_type;
+ hf[i].hfinfo.abbrev = g_strdup_printf("ldap.AttributeValue.%s", attribute_type);
+ hf[i].hfinfo.type = FT_STRING;
+ hf[i].hfinfo.display = BASE_NONE;
+ hf[i].hfinfo.strings = NULL;
+ hf[i].hfinfo.blurb = g_strdup(attribute_types[i].attribute_desc);
+ hf[i].hfinfo.same_name_prev = NULL;
+ hf[i].hfinfo.same_name_next = NULL;
+
+ g_hash_table_insert(attribute_types_hash, attribute_type, hf_id);
+ }
+
+ proto_register_field_array(proto_ldap, hf, num_attribute_types);
+ }
+}
/* MS-ADTS specification, section 7.3.1.1, NETLOGON_NT_VERSION Options Bits */
static int dissect_mscldap_ntver_flags(proto_tree *parent_tree, tvbuff_t *tvb, int offset)
@@ -717,7 +851,7 @@ dissect_ldap_AssertionValue(gboolean implicit_tag, tvbuff_t *tvb, int offset, as
/* This octet string contained a GUID */
dissect_dcerpc_uuid_t(tvb, offset, actx->pinfo, tree, drep, hf_ldap_guid, &uuid);
- ldapvalue_string=ep_alloc(1024);
+ ldapvalue_string=(char*)ep_alloc(1024);
g_snprintf(ldapvalue_string, 1023, "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
uuid.Data1, uuid.Data2, uuid.Data3,
uuid.Data4[0], uuid.Data4[1],
@@ -733,7 +867,7 @@ dissect_ldap_AssertionValue(gboolean implicit_tag, tvbuff_t *tvb, int offset, as
/* get flag value to populate ldapvalue_string */
flags=tvb_get_letohl(tvb, offset);
- ldapvalue_string=ep_alloc(1024);
+ ldapvalue_string=(char*)ep_alloc(1024);
g_snprintf(ldapvalue_string, 1023, "0x%08x",flags);
/* populate bitmask subtree */
@@ -769,7 +903,7 @@ dissect_ldap_AssertionValue(gboolean implicit_tag, tvbuff_t *tvb, int offset, as
if(is_ascii){
ldapvalue_string=ep_strndup(str, len);
} else {
- ldapvalue_string=ep_alloc(3*len);
+ ldapvalue_string=(char*)ep_alloc(3*len);
for(i=0;i<len;i++){
g_snprintf(ldapvalue_string+i*3,3,"%02x",str[i]&0xff);
ldapvalue_string[3*i+2]=':';
@@ -803,7 +937,6 @@ static gint Filter_length;
static gint Filter_elements;
/* Global variables */
-char *mechanism = NULL;
static gint MessageID =-1;
static gint ProtocolOp = -1;
static gint result = 0;
@@ -897,7 +1030,7 @@ ldap_match_call_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu
}
/* if we cant reuse the old one, grab a new chunk */
if(!lcrp){
- lcrp=se_alloc(sizeof(ldap_call_response_t));
+ lcrp=se_new(ldap_call_response_t);
}
lcrp->messageId=messageId;
lcrp->req_frame=pinfo->fd->num;
@@ -1002,7 +1135,7 @@ dissect_ldap_INTEGER_1_127(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off
static int
dissect_ldap_LDAPString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 324 "../../asn1/ldap/ldap.cnf"
+#line 322 "../../asn1/ldap/ldap.cnf"
tvbuff_t *parameter_tvb = NULL;
const char *ldapstring = NULL;
gchar *sc = NULL; /* semi-colon pointer */
@@ -1117,7 +1250,7 @@ ldap_conv_info_t *ldap_info;
NULL);
- ldap_info = actx->pinfo->private_data;
+ ldap_info = (ldap_conv_info_t *)actx->pinfo->private_data;
ldap_info->auth_type = LDAP_AUTH_SIMPLE;
actx->pinfo->private_data = ldap_info;
@@ -1139,7 +1272,7 @@ char *mechanism = NULL;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
&parameter_tvb);
- ldap_info = actx->pinfo->private_data;
+ ldap_info = (ldap_conv_info_t *)actx->pinfo->private_data;
ldap_info->auth_type = LDAP_AUTH_SASL;
if (!parameter_tvb)
@@ -1162,9 +1295,7 @@ char *mechanism = NULL;
* Otherwise, if the saved mechanism is an empty string (null),
* save this mechanism.
*/
- if (mechanism == NULL) {
- mechanism = ldap_info->auth_mech;
- } else {
+ if (mechanism != NULL) {
g_free(ldap_info->auth_mech);
ldap_info->auth_mech = mechanism;
}
@@ -1179,7 +1310,7 @@ char *mechanism = NULL;
static int
dissect_ldap_Credentials(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 214 "../../asn1/ldap/ldap.cnf"
+#line 212 "../../asn1/ldap/ldap.cnf"
tvbuff_t *parameter_tvb;
ldap_conv_info_t *ldap_info;
@@ -1194,7 +1325,7 @@ gint32 tag;
if (!parameter_tvb)
return offset;
- ldap_info = actx->pinfo->private_data;
+ ldap_info = (ldap_conv_info_t *)actx->pinfo->private_data;
get_ber_identifier(parameter_tvb, 0, &ber_class, &pc, &tag);
/*if ((ldap_info->auth_mech != NULL) && (strcmp(ldap_info->auth_mech, "GSS-SPNEGO") == 0) && (ber_class==BER_CLASS_CON)) {*/
@@ -1245,7 +1376,7 @@ dissect_ldap_SaslCredentials(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o
static int
dissect_ldap_T_ntlmsspNegotiate(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 705 "../../asn1/ldap/ldap.cnf"
+#line 704 "../../asn1/ldap/ldap.cnf"
/* make sure the protocol op comes first */
ldap_do_protocolop(actx->pinfo);
@@ -1261,7 +1392,7 @@ dissect_ldap_T_ntlmsspNegotiate(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
static int
dissect_ldap_T_ntlmsspAuth(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 712 "../../asn1/ldap/ldap.cnf"
+#line 711 "../../asn1/ldap/ldap.cnf"
/* make sure the protocol op comes first */
ldap_do_protocolop(actx->pinfo);
@@ -1292,7 +1423,7 @@ static const ber_choice_t AuthenticationChoice_choice[] = {
static int
dissect_ldap_AuthenticationChoice(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 495 "../../asn1/ldap/ldap.cnf"
+#line 494 "../../asn1/ldap/ldap.cnf"
gint branch = -1;
gint auth = -1;
const gchar *valstr;
@@ -1399,7 +1530,7 @@ static const value_string ldap_BindResponse_resultCode_vals[] = {
static int
dissect_ldap_BindResponse_resultCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 444 "../../asn1/ldap/ldap.cnf"
+#line 442 "../../asn1/ldap/ldap.cnf"
const gchar *valstr;
@@ -1426,7 +1557,7 @@ dissect_ldap_BindResponse_resultCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U
static int
dissect_ldap_T_bindResponse_matchedDN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 719 "../../asn1/ldap/ldap.cnf"
+#line 718 "../../asn1/ldap/ldap.cnf"
tvbuff_t *new_tvb=NULL;
offset = dissect_ber_octet_string(FALSE, actx, tree, tvb, offset, hf_ldap_matchedDN, &new_tvb);
@@ -1487,7 +1618,7 @@ dissect_ldap_Referral(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _
static int
dissect_ldap_ServerSaslCreds(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 254 "../../asn1/ldap/ldap.cnf"
+#line 252 "../../asn1/ldap/ldap.cnf"
tvbuff_t *parameter_tvb = NULL;
ldap_conv_info_t *ldap_info;
@@ -1605,7 +1736,7 @@ dissect_ldap_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_,
static int
dissect_ldap_UnbindRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 517 "../../asn1/ldap/ldap.cnf"
+#line 516 "../../asn1/ldap/ldap.cnf"
implicit_tag = TRUE; /* correct problem with asn2wrs */
@@ -1635,7 +1766,7 @@ static const value_string ldap_T_scope_vals[] = {
static int
dissect_ldap_T_scope(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 412 "../../asn1/ldap/ldap.cnf"
+#line 410 "../../asn1/ldap/ldap.cnf"
guint32 scope = 0xffff;
const gchar *valstr;
@@ -1701,7 +1832,7 @@ static int
dissect_ldap_T_and_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_ldap_Filter(implicit_tag, tvb, offset, actx, tree, hf_index);
-#line 563 "../../asn1/ldap/ldap.cnf"
+#line 562 "../../asn1/ldap/ldap.cnf"
if(and_filter_string){
and_filter_string=ep_strdup_printf("(&%s%s)",and_filter_string,Filter_string);
} else {
@@ -1719,7 +1850,7 @@ static const ber_sequence_t T_and_set_of[1] = {
static int
dissect_ldap_T_and(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 570 "../../asn1/ldap/ldap.cnf"
+#line 569 "../../asn1/ldap/ldap.cnf"
proto_tree *tr=NULL;
proto_item *it=NULL;
const char *old_and_filter_string=and_filter_string;
@@ -1752,7 +1883,7 @@ static int
dissect_ldap_T_or_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_ldap_Filter(implicit_tag, tvb, offset, actx, tree, hf_index);
-#line 590 "../../asn1/ldap/ldap.cnf"
+#line 589 "../../asn1/ldap/ldap.cnf"
if(or_filter_string){
or_filter_string=ep_strdup_printf("(|%s%s)",or_filter_string,Filter_string);
} else {
@@ -1771,7 +1902,7 @@ static const ber_sequence_t T_or_set_of[1] = {
static int
dissect_ldap_T_or(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 598 "../../asn1/ldap/ldap.cnf"
+#line 597 "../../asn1/ldap/ldap.cnf"
proto_tree *tr=NULL;
proto_item *it=NULL;
const char *old_or_filter_string=or_filter_string;
@@ -1802,7 +1933,7 @@ static int
dissect_ldap_T_not(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_ldap_Filter(implicit_tag, tvb, offset, actx, tree, hf_index);
-#line 619 "../../asn1/ldap/ldap.cnf"
+#line 618 "../../asn1/ldap/ldap.cnf"
Filter_string=ep_strdup_printf("(!%s)",string_or_null(Filter_string));
@@ -1840,7 +1971,7 @@ static int
dissect_ldap_T_equalityMatch(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_ldap_AttributeValueAssertion(implicit_tag, tvb, offset, actx, tree, hf_index);
-#line 540 "../../asn1/ldap/ldap.cnf"
+#line 539 "../../asn1/ldap/ldap.cnf"
Filter_string=ep_strdup_printf("(%s=%s)",
string_or_null(attributedesc_string),
string_or_null(ldapvalue_string));
@@ -1871,7 +2002,7 @@ dissect_ldap_T_substringFilter_substrings_item(gboolean implicit_tag _U_, tvbuff
T_substringFilter_substrings_item_choice, hf_index, ett_ldap_T_substringFilter_substrings_item,
NULL);
-#line 645 "../../asn1/ldap/ldap.cnf"
+#line 644 "../../asn1/ldap/ldap.cnf"
if (substring_item_final) {
substring_value=ep_strdup_printf("%s%s",
(substring_value?substring_value:"*"),
@@ -1911,7 +2042,7 @@ static const ber_sequence_t SubstringFilter_sequence[] = {
static int
dissect_ldap_SubstringFilter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 659 "../../asn1/ldap/ldap.cnf"
+#line 658 "../../asn1/ldap/ldap.cnf"
proto_tree *tr=NULL;
proto_item *it=NULL;
const char *old_substring_value=substring_value;
@@ -1946,7 +2077,7 @@ static int
dissect_ldap_T_greaterOrEqual(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_ldap_AttributeValueAssertion(implicit_tag, tvb, offset, actx, tree, hf_index);
-#line 546 "../../asn1/ldap/ldap.cnf"
+#line 545 "../../asn1/ldap/ldap.cnf"
Filter_string=ep_strdup_printf("(%s>=%s)",
string_or_null(attributedesc_string),
string_or_null(ldapvalue_string));
@@ -1962,7 +2093,7 @@ static int
dissect_ldap_T_lessOrEqual(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_ldap_AttributeValueAssertion(implicit_tag, tvb, offset, actx, tree, hf_index);
-#line 552 "../../asn1/ldap/ldap.cnf"
+#line 551 "../../asn1/ldap/ldap.cnf"
Filter_string=ep_strdup_printf("(%s<=%s)",
string_or_null(attributedesc_string),
string_or_null(ldapvalue_string));
@@ -1978,7 +2109,7 @@ static int
dissect_ldap_T_present(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_ldap_AttributeDescription(implicit_tag, tvb, offset, actx, tree, hf_index);
-#line 616 "../../asn1/ldap/ldap.cnf"
+#line 615 "../../asn1/ldap/ldap.cnf"
Filter_string=ep_strdup_printf("(%s=*)",string_or_null(Filter_string));
@@ -1991,7 +2122,7 @@ static int
dissect_ldap_T_approxMatch(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_ldap_AttributeValueAssertion(implicit_tag, tvb, offset, actx, tree, hf_index);
-#line 558 "../../asn1/ldap/ldap.cnf"
+#line 557 "../../asn1/ldap/ldap.cnf"
Filter_string=ep_strdup_printf("(%s~=%s)",
string_or_null(attributedesc_string),
string_or_null(ldapvalue_string));
@@ -2013,7 +2144,7 @@ dissect_ldap_MatchingRuleId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
static int
dissect_ldap_T_dnAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 622 "../../asn1/ldap/ldap.cnf"
+#line 621 "../../asn1/ldap/ldap.cnf"
gboolean val;
offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, &val);
@@ -2048,7 +2179,7 @@ dissect_ldap_MatchingRuleAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
static int
dissect_ldap_T_extensibleMatch(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 631 "../../asn1/ldap/ldap.cnf"
+#line 630 "../../asn1/ldap/ldap.cnf"
attr_type=NULL;
matching_rule_string=NULL;
ldapvalue_string=NULL;
@@ -2057,7 +2188,7 @@ dissect_ldap_T_extensibleMatch(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
offset = dissect_ldap_MatchingRuleAssertion(implicit_tag, tvb, offset, actx, tree, hf_index);
-#line 637 "../../asn1/ldap/ldap.cnf"
+#line 636 "../../asn1/ldap/ldap.cnf"
Filter_string=ep_strdup_printf("(%s:%s%s%s=%s)",
(attr_type?attr_type:""),
(matching_rule_dnattr?"dn:":""),
@@ -2100,7 +2231,7 @@ static const ber_choice_t Filter_choice[] = {
static int
dissect_ldap_Filter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 681 "../../asn1/ldap/ldap.cnf"
+#line 680 "../../asn1/ldap/ldap.cnf"
proto_tree *tr=NULL;
proto_item *it=NULL;
attributedesc_string=NULL;
@@ -2136,7 +2267,7 @@ dissect_ldap_Filter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_
static int
dissect_ldap_T_filter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 529 "../../asn1/ldap/ldap.cnf"
+#line 528 "../../asn1/ldap/ldap.cnf"
Filter_string=NULL;
Filter_elements = 0;
Filter_length = 0;
@@ -2144,7 +2275,7 @@ dissect_ldap_T_filter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _
offset = dissect_ldap_Filter(implicit_tag, tvb, offset, actx, tree, hf_index);
-#line 534 "../../asn1/ldap/ldap.cnf"
+#line 533 "../../asn1/ldap/ldap.cnf"
Filter_string=NULL;
and_filter_string=NULL;
Filter_elements = 0;
@@ -2202,41 +2333,42 @@ dissect_ldap_SearchRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off
static int
dissect_ldap_AttributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 460 "../../asn1/ldap/ldap.cnf"
+#line 458 "../../asn1/ldap/ldap.cnf"
tvbuff_t *next_tvb = NULL;
gchar *string;
guint32 i, len;
int old_offset = offset;
+ gint *hf_id;
/* attr_type, should be set before calling this function */
/* extract the value of the octetstring */
offset = dissect_ber_octet_string(FALSE, actx, NULL, tvb, offset, hf_index, &next_tvb);
+ /* first check if we have a custom attribute type configured */
+ if ((hf_id = get_hf_for_header (attr_type)) != NULL)
+ proto_tree_add_item (tree, *hf_id, next_tvb, 0, tvb_length_remaining(next_tvb, 0), ENC_UTF_8|ENC_NA);
+
/* if we have an attribute type that isn't binary see if there is a better dissector */
- if(!attr_type || !next_tvb || !dissector_try_string(ldap_name_dissector_table, attr_type, next_tvb, actx->pinfo, tree)) {
- offset = old_offset;
+ else if(!attr_type || !next_tvb || !dissector_try_string(ldap_name_dissector_table, attr_type, next_tvb, actx->pinfo, tree)) {
+ offset = old_offset;
- /* do the default thing */
- offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
+ /* do the default thing */
+ offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
NULL);
- }
-
- len = tvb_length_remaining(next_tvb, 0);
-
- for(i = 0; i < len; i++)
- if(!g_ascii_isprint(tvb_get_guint8(next_tvb, i)))
- break;
+ len = tvb_length_remaining(next_tvb, 0);
- if(i == len) {
- string = tvb_get_ephemeral_string(next_tvb, 0, tvb_length_remaining(next_tvb, 0));
-
-
- proto_item_set_text(actx->created_item, "%s", string);
+ for(i = 0; i < len; i++)
+ if(!g_ascii_isprint(tvb_get_guint8(next_tvb, i)))
+ break;
+ if(i == len) {
+ string = tvb_get_ephemeral_string(next_tvb, 0, tvb_length_remaining(next_tvb, 0));
+ proto_item_set_text(actx->created_item, "AttributeValue: %s", string);
+ }
}
@@ -2361,7 +2493,7 @@ static const value_string ldap_T_resultCode_vals[] = {
static int
dissect_ldap_T_resultCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 428 "../../asn1/ldap/ldap.cnf"
+#line 426 "../../asn1/ldap/ldap.cnf"
const gchar *valstr;
@@ -2428,7 +2560,7 @@ dissect_ldap_SEQUENCE_OF_LDAPURL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, i
static int
dissect_ldap_SearchResultReference(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 822 "../../asn1/ldap/ldap.cnf"
+#line 821 "../../asn1/ldap/ldap.cnf"
offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
hf_index, BER_CLASS_APP, 19, TRUE, dissect_ldap_SEQUENCE_OF_LDAPURL);
@@ -2705,7 +2837,7 @@ dissect_ldap_CompareResponse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o
static int
dissect_ldap_AbandonRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 829 "../../asn1/ldap/ldap.cnf"
+#line 828 "../../asn1/ldap/ldap.cnf"
offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
hf_index, BER_CLASS_APP, 16, TRUE, dissect_ldap_MessageID);
@@ -2776,7 +2908,7 @@ dissect_ldap_LDAPOID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U
static int
dissect_ldap_T_requestValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 754 "../../asn1/ldap/ldap.cnf"
+#line 753 "../../asn1/ldap/ldap.cnf"
if((object_identifier_id != NULL) && oid_has_dissector(object_identifier_id)) {
offset = call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree);
@@ -2925,12 +3057,12 @@ dissect_ldap_ExtendedResponse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
static int
dissect_ldap_T_intermediateResponse_responseValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 762 "../../asn1/ldap/ldap.cnf"
+#line 761 "../../asn1/ldap/ldap.cnf"
const gchar *name;
-#line 766 "../../asn1/ldap/ldap.cnf"
+#line 765 "../../asn1/ldap/ldap.cnf"
if(ldm_tree && object_identifier_id) {
proto_item_set_text(ldm_tree, "%s %s", "IntermediateResponse", object_identifier_id);
name = oid_resolved_from_string(object_identifier_id);
@@ -3111,7 +3243,7 @@ dissect_ldap_ControlType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offse
static int
dissect_ldap_T_controlValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 735 "../../asn1/ldap/ldap.cnf"
+#line 734 "../../asn1/ldap/ldap.cnf"
gint8 ber_class;
gboolean pc, ind;
gint32 tag;
@@ -3296,7 +3428,7 @@ dissect_ldap_DirSyncFlagsSubEntry(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
static int
dissect_ldap_DirSyncFlags(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 779 "../../asn1/ldap/ldap.cnf"
+#line 778 "../../asn1/ldap/ldap.cnf"
gint8 ber_class;
gboolean pc;
gint32 tag;
@@ -3705,7 +3837,7 @@ static void dissect_PasswordPolicyResponseValue_PDU(tvbuff_t *tvb _U_, packet_in
/*--- End of included file: packet-ldap-fn.c ---*/
-#line 745 "../../asn1/ldap/packet-ldap-template.c"
+#line 878 "../../asn1/ldap/packet-ldap-template.c"
static void
dissect_ldap_payload(tvbuff_t *tvb, packet_info *pinfo,
@@ -3812,275 +3944,298 @@ static void
ldap_frame_end(void)
{
ldap_found_in_frame = FALSE;
-}
+ attr_type = NULL;
+ ldapvalue_string = NULL;
+/* ? */
+ attributedesc_string = NULL;
+ Filter_string = NULL;
+ and_filter_string = NULL;
+ object_identifier_id = NULL;
+ or_filter_string = NULL;
-static void
-dissect_ldap_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean is_mscldap)
-{
- int offset = 0;
- conversation_t *conversation;
- gboolean doing_sasl_security = FALSE;
- guint length_remaining;
- ldap_conv_info_t *ldap_info = NULL;
- proto_item *ldap_item = NULL;
- proto_tree *ldap_tree = NULL;
+ substring_item_any = NULL;
+ substring_item_final = NULL;
+ substring_item_init = NULL;
+ substring_value = NULL;
- ldm_tree = NULL;
+ ldm_tree = NULL;
- conversation = find_or_create_conversation(pinfo);
+ Filter_elements = 0;
+ Filter_length = 0;
+ do_protocolop = FALSE;
+ result = 0;
- /*
- * Do we already have a type and mechanism?
- */
- ldap_info = (ldap_conv_info_t *)conversation_get_proto_data(conversation, proto_ldap);
- if (ldap_info == NULL) {
- /* No. Attach that information to the conversation, and add
- * it to the list of information structures.
- */
- ldap_info = g_malloc0(sizeof(ldap_conv_info_t));
- ldap_info->matched=g_hash_table_new(ldap_info_hash_matched, ldap_info_equal_matched);
- ldap_info->unmatched=g_hash_table_new(ldap_info_hash_unmatched, ldap_info_equal_unmatched);
-
- conversation_add_proto_data(conversation, proto_ldap, ldap_info);
-
- ldap_info->next = ldap_info_items;
- ldap_info_items = ldap_info;
-
- }
+/* seems to be ok, but reset just in case */
+ matching_rule_string = NULL;
+}
- switch (ldap_info->auth_type) {
- case LDAP_AUTH_SASL:
- /*
- * It's SASL; are we using a security layer?
- */
- if (ldap_info->first_auth_frame != 0 &&
- pinfo->fd->num >= ldap_info->first_auth_frame) {
- doing_sasl_security = TRUE; /* yes */
- }
- }
+static void
+ dissect_ldap_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean is_mscldap)
+{
+ int offset = 0;
+ conversation_t *conversation;
+ gboolean doing_sasl_security = FALSE;
+ guint length_remaining;
+ ldap_conv_info_t *ldap_info = NULL;
+ proto_item *ldap_item = NULL;
+ proto_tree *ldap_tree = NULL;
- length_remaining = tvb_ensure_length_remaining(tvb, offset);
+ ldm_tree = NULL;
- /* It might still be a packet containing a SASL security layer
- * but its just that we never saw the BIND packet.
- * check if it looks like it could be a SASL blob here
- * and in that case just assume it is GSS-SPNEGO
- */
- if(!doing_sasl_security && (tvb_bytes_exist(tvb, offset, 5))
- &&(tvb_get_ntohl(tvb, offset)<=(guint)(tvb_reported_length_remaining(tvb, offset)-4))
- &&(tvb_get_guint8(tvb, offset+4)==0x60) ){
- ldap_info->auth_type=LDAP_AUTH_SASL;
- ldap_info->first_auth_frame=pinfo->fd->num;
- ldap_info->auth_mech=g_strdup("GSS-SPNEGO");
- doing_sasl_security=TRUE;
- }
+ conversation = find_or_create_conversation(pinfo);
- /*
- * This is the first PDU, set the Protocol column and clear the
- * Info column.
- */
- col_set_str(pinfo->cinfo, COL_PROTOCOL, pinfo->current_proto);
-
- if(ldap_found_in_frame) {
- /* we have already dissected an ldap PDU in this frame - add a separator and set a fence */
- col_append_str(pinfo->cinfo, COL_INFO, " | ");
- col_set_fence(pinfo->cinfo, COL_INFO);
- } else {
- col_clear(pinfo->cinfo, COL_INFO);
- register_frame_end_routine (ldap_frame_end);
- ldap_found_in_frame = TRUE;
- }
+ /*
+ * Do we already have a type and mechanism?
+ */
+ ldap_info = (ldap_conv_info_t *)conversation_get_proto_data(conversation, proto_ldap);
+ if (ldap_info == NULL) {
+ /* No. Attach that information to the conversation, and add
+ * it to the list of information structures.
+ */
+ ldap_info = g_new0(ldap_conv_info_t,1);
+ ldap_info->matched=g_hash_table_new(ldap_info_hash_matched, ldap_info_equal_matched);
+ ldap_info->unmatched=g_hash_table_new(ldap_info_hash_unmatched, ldap_info_equal_unmatched);
+
+ conversation_add_proto_data(conversation, proto_ldap, ldap_info);
+
+ ldap_info->next = ldap_info_items;
+ ldap_info_items = ldap_info;
- ldap_item = proto_tree_add_item(tree, is_mscldap?proto_cldap:proto_ldap, tvb, 0, -1, FALSE);
- ldap_tree = proto_item_add_subtree(ldap_item, ett_ldap);
+ }
- /*
- * Might we be doing a SASL security layer and, if so, *are* we doing
- * one?
- *
- * Just because we've seen a bind reply for SASL, that doesn't mean
- * that we're using a SASL security layer; I've seen captures in
- * which some SASL negotiations lead to a security layer being used
- * and other negotiations don't, and it's not obvious what's different
- * in the two negotiations. Therefore, we assume that if the first
- * byte is 0, it's a length for a SASL security layer (that way, we
- * never reassemble more than 16 megabytes, protecting us from
- * chewing up *too* much memory), and otherwise that it's an LDAP
- * message (actually, if it's an LDAP message it should begin with 0x30,
- * but we want to parse garbage as LDAP messages rather than really
- * huge lengths).
- */
+ switch (ldap_info->auth_type) {
+ case LDAP_AUTH_SASL:
+ /*
+ * It's SASL; are we using a security layer?
+ */
+ if (ldap_info->first_auth_frame != 0 &&
+ pinfo->fd->num >= ldap_info->first_auth_frame) {
+ doing_sasl_security = TRUE; /* yes */
+ }
+ }
- if (doing_sasl_security && tvb_get_guint8(tvb, offset) == 0) {
- proto_item *sasl_item = NULL;
- proto_tree *sasl_tree = NULL;
- tvbuff_t *sasl_tvb;
- guint sasl_len, sasl_msg_len, length;
- /*
- * Yes. The frame begins with a 4-byte big-endian length.
- * And we know we have at least 6 bytes
- */
+ length_remaining = tvb_ensure_length_remaining(tvb, offset);
+
+ /* It might still be a packet containing a SASL security layer
+ * but its just that we never saw the BIND packet.
+ * check if it looks like it could be a SASL blob here
+ * and in that case just assume it is GSS-SPNEGO
+ */
+ if(!doing_sasl_security && (tvb_bytes_exist(tvb, offset, 5))
+ &&(tvb_get_ntohl(tvb, offset)<=(guint)(tvb_reported_length_remaining(tvb, offset)-4))
+ &&(tvb_get_guint8(tvb, offset+4)==0x60) ){
+ ldap_info->auth_type=LDAP_AUTH_SASL;
+ ldap_info->first_auth_frame=pinfo->fd->num;
+ ldap_info->auth_mech=g_strdup("GSS-SPNEGO");
+ doing_sasl_security=TRUE;
+ }
- /*
- * Get the SASL length, which is the length of data in the buffer
- * following the length (i.e., it's 4 less than the total length).
- *
- * XXX - do we need to reassemble buffers? For now, we
- * assume that each LDAP message is entirely contained within
- * a buffer.
- */
- sasl_len = tvb_get_ntohl(tvb, offset);
- sasl_msg_len = sasl_len + 4;
- if (sasl_msg_len < 4) {
- /*
- * The message length was probably so large that the total length
- * overflowed.
- *
- * Report this as an error.
- */
- show_reported_bounds_error(tvb, pinfo, tree);
- return;
- }
+ /*
+ * This is the first PDU, set the Protocol column and clear the
+ * Info column.
+ */
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, pinfo->current_proto);
+
+ if(ldap_found_in_frame) {
+ /* we have already dissected an ldap PDU in this frame - add a separator and set a fence */
+ col_append_str(pinfo->cinfo, COL_INFO, " | ");
+ col_set_fence(pinfo->cinfo, COL_INFO);
+ } else {
+ col_clear(pinfo->cinfo, COL_INFO);
+ register_frame_end_routine (ldap_frame_end);
+ ldap_found_in_frame = TRUE;
+ }
- /*
- * Construct a tvbuff containing the amount of the payload we have
- * available. Make its reported length the amount of data in the PDU.
- *
- * XXX - if reassembly isn't enabled. the subdissector will throw a
- * BoundsError exception, rather than a ReportedBoundsError exception.
- * We really want a tvbuff where the length is "length", the reported
- * length is "plen", and the "if the snapshot length were infinite"
- * length is the minimum of the reported length of the tvbuff handed
- * to us and "plen", with a new type of exception thrown if the offset
- * is within the reported length but beyond that third length, with
- * that exception getting the "Unreassembled Packet" error.
- */
- length = length_remaining;
- if (length > sasl_msg_len) length = sasl_msg_len;
- sasl_tvb = tvb_new_subset(tvb, offset, length, sasl_msg_len);
+ ldap_item = proto_tree_add_item(tree, is_mscldap?proto_cldap:proto_ldap, tvb, 0, -1, ENC_NA);
+ ldap_tree = proto_item_add_subtree(ldap_item, ett_ldap);
- if (ldap_tree) {
- proto_tree_add_uint(ldap_tree, hf_ldap_sasl_buffer_length, sasl_tvb, 0, 4,
- sasl_len);
+ /*
+ * Might we be doing a SASL security layer and, if so, *are* we doing
+ * one?
+ *
+ * Just because we've seen a bind reply for SASL, that doesn't mean
+ * that we're using a SASL security layer; I've seen captures in
+ * which some SASL negotiations lead to a security layer being used
+ * and other negotiations don't, and it's not obvious what's different
+ * in the two negotiations. Therefore, we assume that if the first
+ * byte is 0, it's a length for a SASL security layer (that way, we
+ * never reassemble more than 16 megabytes, protecting us from
+ * chewing up *too* much memory), and otherwise that it's an LDAP
+ * message (actually, if it's an LDAP message it should begin with 0x30,
+ * but we want to parse garbage as LDAP messages rather than really
+ * huge lengths).
+ */
+
+ if (doing_sasl_security && tvb_get_guint8(tvb, offset) == 0) {
+ proto_item *sasl_item = NULL;
+ proto_tree *sasl_tree = NULL;
+ tvbuff_t *sasl_tvb;
+ guint sasl_len, sasl_msg_len, length;
+ /*
+ * Yes. The frame begins with a 4-byte big-endian length.
+ * And we know we have at least 6 bytes
+ */
+
+ /*
+ * Get the SASL length, which is the length of data in the buffer
+ * following the length (i.e., it's 4 less than the total length).
+ *
+ * XXX - do we need to reassemble buffers? For now, we
+ * assume that each LDAP message is entirely contained within
+ * a buffer.
+ */
+ sasl_len = tvb_get_ntohl(tvb, offset);
+ sasl_msg_len = sasl_len + 4;
+ if (sasl_msg_len < 4) {
+ /*
+ * The message length was probably so large that the total length
+ * overflowed.
+ *
+ * Report this as an error.
+ */
+ show_reported_bounds_error(tvb, pinfo, tree);
+ return;
+ }
- sasl_item = proto_tree_add_text(ldap_tree, sasl_tvb, 0, sasl_msg_len, "SASL Buffer");
- sasl_tree = proto_item_add_subtree(sasl_item, ett_ldap_sasl_blob);
- }
+ /*
+ * Construct a tvbuff containing the amount of the payload we have
+ * available. Make its reported length the amount of data in the PDU.
+ *
+ * XXX - if reassembly isn't enabled. the subdissector will throw a
+ * BoundsError exception, rather than a ReportedBoundsError exception.
+ * We really want a tvbuff where the length is "length", the reported
+ * length is "plen", and the "if the snapshot length were infinite"
+ * length is the minimum of the reported length of the tvbuff handed
+ * to us and "plen", with a new type of exception thrown if the offset
+ * is within the reported length but beyond that third length, with
+ * that exception getting the "Unreassembled Packet" error.
+ */
+ length = length_remaining;
+ if (length > sasl_msg_len) length = sasl_msg_len;
+ sasl_tvb = tvb_new_subset(tvb, offset, length, sasl_msg_len);
+
+ if (ldap_tree) {
+ proto_tree_add_uint(ldap_tree, hf_ldap_sasl_buffer_length, sasl_tvb, 0, 4,
+ sasl_len);
+
+ sasl_item = proto_tree_add_text(ldap_tree, sasl_tvb, 0, sasl_msg_len, "SASL Buffer");
+ sasl_tree = proto_item_add_subtree(sasl_item, ett_ldap_sasl_blob);
+ }
- if (ldap_info->auth_mech != NULL &&
- ((strcmp(ldap_info->auth_mech, "GSS-SPNEGO") == 0) ||
- /* auth_mech may have been set from the bind */
- (strcmp(ldap_info->auth_mech, "GSSAPI") == 0))) {
- tvbuff_t *gssapi_tvb, *plain_tvb = NULL, *decr_tvb= NULL;
- int ver_len;
- int length;
-
- /*
- * This is GSS-API (using SPNEGO, but we should be done with
- * the negotiation by now).
- *
- * Dissect the GSS_Wrap() token; it'll return the length of
- * the token, from which we compute the offset in the tvbuff at
- * which the plaintext data, i.e. the LDAP message, begins.
- */
- length = tvb_length_remaining(sasl_tvb, 4);
- if ((guint)length > sasl_len)
- length = sasl_len;
- gssapi_tvb = tvb_new_subset(sasl_tvb, 4, length, sasl_len);
-
- /* Attempt decryption of the GSSAPI wrapped data if possible */
- pinfo->decrypt_gssapi_tvb=DECRYPT_GSSAPI_NORMAL;
- pinfo->gssapi_wrap_tvb=NULL;
- pinfo->gssapi_encrypted_tvb=NULL;
- pinfo->gssapi_decrypted_tvb=NULL;
- ver_len = call_dissector(gssapi_wrap_handle, gssapi_tvb, pinfo, sasl_tree);
- /* if we could unwrap, do a tvb shuffle */
- if(pinfo->gssapi_decrypted_tvb){
- decr_tvb=pinfo->gssapi_decrypted_tvb;
- }
- /* tidy up */
- pinfo->decrypt_gssapi_tvb=0;
- pinfo->gssapi_wrap_tvb=NULL;
- pinfo->gssapi_encrypted_tvb=NULL;
- pinfo->gssapi_decrypted_tvb=NULL;
-
- /*
- * if len is 0 it probably mean that we got a PDU that is not
- * aligned to the start of the segment.
- */
- if(ver_len==0){
- return;
- }
+ if (ldap_info->auth_mech != NULL &&
+ ((strcmp(ldap_info->auth_mech, "GSS-SPNEGO") == 0) ||
+ /* auth_mech may have been set from the bind */
+ (strcmp(ldap_info->auth_mech, "GSSAPI") == 0))) {
+ tvbuff_t *gssapi_tvb, *plain_tvb = NULL, *decr_tvb= NULL;
+ int ver_len;
+ int tmp_length;
+
+ /*
+ * This is GSS-API (using SPNEGO, but we should be done with
+ * the negotiation by now).
+ *
+ * Dissect the GSS_Wrap() token; it'll return the length of
+ * the token, from which we compute the offset in the tvbuff at
+ * which the plaintext data, i.e. the LDAP message, begins.
+ */
+ tmp_length = tvb_length_remaining(sasl_tvb, 4);
+ if ((guint)tmp_length > sasl_len)
+ tmp_length = sasl_len;
+ gssapi_tvb = tvb_new_subset(sasl_tvb, 4, tmp_length, sasl_len);
+
+ /* Attempt decryption of the GSSAPI wrapped data if possible */
+ pinfo->decrypt_gssapi_tvb=DECRYPT_GSSAPI_NORMAL;
+ pinfo->gssapi_wrap_tvb=NULL;
+ pinfo->gssapi_encrypted_tvb=NULL;
+ pinfo->gssapi_decrypted_tvb=NULL;
+ ver_len = call_dissector(gssapi_wrap_handle, gssapi_tvb, pinfo, sasl_tree);
+ /* if we could unwrap, do a tvb shuffle */
+ if(pinfo->gssapi_decrypted_tvb){
+ decr_tvb=pinfo->gssapi_decrypted_tvb;
+ }
+ /* tidy up */
+ pinfo->decrypt_gssapi_tvb=0;
+ pinfo->gssapi_wrap_tvb=NULL;
+ pinfo->gssapi_encrypted_tvb=NULL;
+ pinfo->gssapi_decrypted_tvb=NULL;
+
+ /*
+ * if len is 0 it probably mean that we got a PDU that is not
+ * aligned to the start of the segment.
+ */
+ if(ver_len==0){
+ return;
+ }
- /*
- * if we don't have unwrapped data,
- * see if the wrapping involved encryption of the
- * data; if not, just use the plaintext data.
- */
- if (!decr_tvb) {
- if(!pinfo->gssapi_data_encrypted){
- plain_tvb = tvb_new_subset_remaining(gssapi_tvb, ver_len);
- }
- }
+ /*
+ * if we don't have unwrapped data,
+ * see if the wrapping involved encryption of the
+ * data; if not, just use the plaintext data.
+ */
+ if (!decr_tvb) {
+ if(!pinfo->gssapi_data_encrypted){
+ plain_tvb = tvb_new_subset_remaining(gssapi_tvb, ver_len);
+ }
+ }
- if (decr_tvb) {
- proto_item *enc_item = NULL;
- proto_tree *enc_tree = NULL;
-
- /*
- * The LDAP message was encrypted in the packet, and has
- * been decrypted; dissect the decrypted LDAP message.
- */
- col_set_str(pinfo->cinfo, COL_INFO, "SASL GSS-API Privacy (decrypted): ");
-
- if (sasl_tree) {
- enc_item = proto_tree_add_text(sasl_tree, gssapi_tvb, ver_len, -1,
- "GSS-API Encrypted payload (%d byte%s)",
- sasl_len - ver_len,
- plurality(sasl_len - ver_len, "", "s"));
- enc_tree = proto_item_add_subtree(enc_item, ett_ldap_payload);
- }
- dissect_ldap_payload(decr_tvb, pinfo, enc_tree, ldap_info, is_mscldap);
- } else if (plain_tvb) {
- proto_item *plain_item = NULL;
- proto_tree *plain_tree = NULL;
-
- /*
- * The LDAP message wasn't encrypted in the packet;
- * dissect the plain LDAP message.
- */
- col_set_str(pinfo->cinfo, COL_INFO, "SASL GSS-API Integrity: ");
-
- if (sasl_tree) {
- plain_item = proto_tree_add_text(sasl_tree, gssapi_tvb, ver_len, -1,
- "GSS-API payload (%d byte%s)",
- sasl_len - ver_len,
- plurality(sasl_len - ver_len, "", "s"));
- plain_tree = proto_item_add_subtree(plain_item, ett_ldap_payload);
- }
-
- dissect_ldap_payload(plain_tvb, pinfo, plain_tree, ldap_info, is_mscldap);
- } else {
- /*
- * The LDAP message was encrypted in the packet, and was
- * not decrypted; just show it as encrypted data.
- */
- col_add_fstr(pinfo->cinfo, COL_INFO, "SASL GSS-API Privacy: payload (%d byte%s)",
- sasl_len - ver_len,
- plurality(sasl_len - ver_len, "", "s"));
-
- if (sasl_tree) {
- proto_tree_add_text(sasl_tree, gssapi_tvb, ver_len, -1,
- "GSS-API Encrypted payload (%d byte%s)",
- sasl_len - ver_len,
- plurality(sasl_len - ver_len, "", "s"));
- }
- }
- }
- } else {
- /* plain LDAP, so dissect the payload */
- dissect_ldap_payload(tvb, pinfo, ldap_tree, ldap_info, is_mscldap);
- }
+ if (decr_tvb) {
+ proto_item *enc_item = NULL;
+ proto_tree *enc_tree = NULL;
+
+ /*
+ * The LDAP message was encrypted in the packet, and has
+ * been decrypted; dissect the decrypted LDAP message.
+ */
+ col_set_str(pinfo->cinfo, COL_INFO, "SASL GSS-API Privacy (decrypted): ");
+
+ if (sasl_tree) {
+ enc_item = proto_tree_add_text(sasl_tree, gssapi_tvb, ver_len, -1,
+ "GSS-API Encrypted payload (%d byte%s)",
+ sasl_len - ver_len,
+ plurality(sasl_len - ver_len, "", "s"));
+ enc_tree = proto_item_add_subtree(enc_item, ett_ldap_payload);
+ }
+ dissect_ldap_payload(decr_tvb, pinfo, enc_tree, ldap_info, is_mscldap);
+ } else if (plain_tvb) {
+ proto_item *plain_item = NULL;
+ proto_tree *plain_tree = NULL;
+
+ /*
+ * The LDAP message wasn't encrypted in the packet;
+ * dissect the plain LDAP message.
+ */
+ col_set_str(pinfo->cinfo, COL_INFO, "SASL GSS-API Integrity: ");
+
+ if (sasl_tree) {
+ plain_item = proto_tree_add_text(sasl_tree, gssapi_tvb, ver_len, -1,
+ "GSS-API payload (%d byte%s)",
+ sasl_len - ver_len,
+ plurality(sasl_len - ver_len, "", "s"));
+ plain_tree = proto_item_add_subtree(plain_item, ett_ldap_payload);
+ }
+
+ dissect_ldap_payload(plain_tvb, pinfo, plain_tree, ldap_info, is_mscldap);
+ } else {
+ /*
+ * The LDAP message was encrypted in the packet, and was
+ * not decrypted; just show it as encrypted data.
+ */
+ col_add_fstr(pinfo->cinfo, COL_INFO, "SASL GSS-API Privacy: payload (%d byte%s)",
+ sasl_len - ver_len,
+ plurality(sasl_len - ver_len, "", "s"));
+
+ if (sasl_tree) {
+ proto_tree_add_text(sasl_tree, gssapi_tvb, ver_len, -1,
+ "GSS-API Encrypted payload (%d byte%s)",
+ sasl_len - ver_len,
+ plurality(sasl_len - ver_len, "", "s"));
+ }
+ }
+ }
+ } else {
+ /* plain LDAP, so dissect the payload */
+ dissect_ldap_payload(tvb, pinfo, ldap_tree, ldap_info, is_mscldap);
+ }
}
/*
@@ -4254,6 +4409,7 @@ static void dissect_NetLogon_PDU(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr
switch(itype){
case LOGON_SAM_LOGON_RESPONSE:
+ bc = tvb_length_remaining(tvb, offset);
/* logon server name */
fn = get_unicode_or_ascii_string(tvb,&offset,TRUE,&fn_len,FALSE,FALSE,&bc);
proto_tree_add_string(tree, hf_mscldap_nb_hostname, tvb,offset, fn_len, fn);
@@ -4583,7 +4739,7 @@ dissect_ldap_guid(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* This octet string contained a GUID */
dissect_dcerpc_uuid_t(tvb, 0, pinfo, tree, drep, hf_ldap_guid, &uuid);
- ldapvalue_string=ep_alloc(1024);
+ ldapvalue_string=(char*)ep_alloc(1024);
g_snprintf(ldapvalue_string, 1023, "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
uuid.Data1, uuid.Data2, uuid.Data3,
uuid.Data4[0], uuid.Data4[1],
@@ -4598,7 +4754,7 @@ dissect_ldap_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
guint32 sasl_len;
guint32 ldap_len;
gboolean ind;
- conversation_t *conversation;
+ conversation_t *conversation;
ldap_conv_info_t *ldap_info = NULL;
/*
@@ -4729,6 +4885,12 @@ this_was_not_normal_ldap:
/* we are done */
return;
}
+ /* Ok it might be a strange case of SASL still
+ * It has been seen with Exchange setup to MS AD
+ * when Exchange pretend that there is SASL but in fact data are still
+ * in clear*/
+ if ((sasl_len + 4) == (guint32)tvb_length_remaining(tvb, 0))
+ tcp_dissect_pdus(tvb, pinfo, tree, ldap_desegment, 4, get_sasl_ldap_pdu_len, dissect_sasl_ldap_pdu);
end:
return;
}
@@ -5610,7 +5772,7 @@ void proto_register_ldap(void) {
NULL, HFILL }},
/*--- End of included file: packet-ldap-hfarr.c ---*/
-#line 2069 "../../asn1/ldap/packet-ldap-template.c"
+#line 2232 "../../asn1/ldap/packet-ldap-template.c"
};
/* List of subtrees */
@@ -5685,11 +5847,18 @@ void proto_register_ldap(void) {
&ett_ldap_T_warning,
/*--- End of included file: packet-ldap-ettarr.c ---*/
-#line 2082 "../../asn1/ldap/packet-ldap-template.c"
+#line 2245 "../../asn1/ldap/packet-ldap-template.c"
+ };
+ /* UAT for header fields */
+ static uat_field_t custom_attribute_types_uat_fields[] = {
+ UAT_FLD_CSTRING(attribute_types, attribute_type, "Attribute type", "Attribute type"),
+ UAT_FLD_CSTRING(attribute_types, attribute_desc, "Description", "Description of the value matching type"),
+ UAT_END_FIELDS
};
- module_t *ldap_module;
-
+ module_t *ldap_module;
+ uat_t *attributes_uat;
+
/* Register protocol */
proto_ldap = proto_register_protocol(PNAME, PSNAME, PFNAME);
/* Register fields and subtrees */
@@ -5713,6 +5882,25 @@ void proto_register_ldap(void) {
prefs_register_uint_preference(ldap_module, "ssl.port", "LDAPS TCP Port",
"Set the port for LDAP operations over SSL",
10, &global_ldaps_tcp_port);
+ /* UAT */
+ attributes_uat = uat_new("Custom LDAP AttributeValue types",
+ sizeof(attribute_type_t),
+ "custom_ldap_attribute_types",
+ TRUE,
+ (void*) &attribute_types,
+ &num_attribute_types,
+ UAT_CAT_FIELDS,
+ NULL,
+ attribute_types_copy_cb,
+ attribute_types_update_cb,
+ attribute_types_free_cb,
+ attribute_types_initialize_cb,
+ custom_attribute_types_uat_fields);
+
+ prefs_register_uat_preference(ldap_module, "custom_ldap_attribute_types",
+ "Custom AttributeValue types",
+ "A table to define custom LDAP attribute type values for which fields can be setup and used for filtering/data extraction etc.",
+ attributes_uat);
prefs_register_obsolete_preference(ldap_module, "max_pdu");
@@ -5816,7 +6004,7 @@ proto_reg_handoff_ldap(void)
/*--- End of included file: packet-ldap-dis-tab.c ---*/
-#line 2196 "../../asn1/ldap/packet-ldap-template.c"
+#line 2385 "../../asn1/ldap/packet-ldap-template.c"
}
diff --git a/epan/dissectors/packet-ldp.c b/epan/dissectors/packet-ldp.c
index 198c2d2814..5f494eb3dc 100644
--- a/epan/dissectors/packet-ldp.c
+++ b/epan/dissectors/packet-ldp.c
@@ -11,6 +11,8 @@
* (c) Copyright 2011, Shobhank Sharma <ssharma5@ncsu.edu>
* - update the VCCV bitmaps as per RFC 5885
*
+ * (c) Copyright 2012, Aditya Ambadkar and Diana Chris <arambadk,dvchris@ncsu.edu>
+ * - support for the flowlabel sub-tlv as per RFC 6391
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
@@ -184,6 +186,9 @@ static int hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd1 = -1;
static int hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd2 = -1;
static int hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd3 = -1;
static int hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd4 = -1;
+static int hf_ldp_tlv_fec_vc_intparam_flowlabel_t = -1; /* Flow label interface parameter RFC6391 */
+static int hf_ldp_tlv_fec_vc_intparam_flowlabel_r = -1; /* Flow label interface parameter RFC6391 */
+static int hf_ldp_tlv_fec_vc_intparam_flowlabel_res = -1; /* Flow label interface parameter RFC6391 */
static int hf_ldp_tlv_lspid_act_flg = -1;
static int hf_ldp_tlv_lspid_cr_lsp = -1;
static int hf_ldp_tlv_lspid_ldpid = -1;
@@ -275,7 +280,6 @@ static int hf_ldp_tlv_intparam_vccv_cvtype_icmpping = -1;
static int hf_ldp_tlv_intparam_vccv_cvtype_lspping = -1;
static int hf_ldp_tlv_intparam_vccv_cvtype_bfd = -1;
-
static int ett_ldp = -1;
static int ett_ldp_header = -1;
static int ett_ldp_ldpid = -1;
@@ -587,8 +591,7 @@ static const true_false_string fec_vc_tdmopt_f = {
#define FEC_VC_INTERFACEPARAM_FCSRETENT 0x0A
#define FEC_VC_INTERFACEPARAM_TDMOPTION 0x0B
#define FEC_VC_INTERFACEPARAM_VCCV 0x0C
-
-
+#define FEC_VC_INTERFACEPARAM_FLOWLABEL 0x17
static const value_string fec_vc_interfaceparm[] = {
{FEC_VC_INTERFACEPARAM_MTU, "MTU"},
@@ -603,6 +606,7 @@ static const value_string fec_vc_interfaceparm[] = {
{FEC_VC_INTERFACEPARAM_FCSRETENT, "FCS retention indicator"},
{FEC_VC_INTERFACEPARAM_TDMOPTION, "TDM options"},
{FEC_VC_INTERFACEPARAM_VCCV, "VCCV"},
+ {FEC_VC_INTERFACEPARAM_FLOWLABEL, "Flow Label"},
{0, NULL},
};
@@ -611,7 +615,10 @@ static const true_false_string fec_vc_cbit = {
"Control Word NOT Present"
};
-
+static const true_false_string fec_vc_ = {
+ "Control Word Present",
+ "Control Word NOT Present"
+};
static const value_string tlv_atm_merge_vals[] = {
{0, "Merge not supported"},
@@ -877,7 +884,10 @@ dissect_tlv_fec(tvbuff_t *tvb, guint offset, proto_tree *tree, int rem)
&hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd1,
&hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd2,
&hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd3,
- &hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd4
+ &hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd4,
+ &hf_ldp_tlv_fec_vc_intparam_flowlabel_t,
+ &hf_ldp_tlv_fec_vc_intparam_flowlabel_r,
+ &hf_ldp_tlv_fec_vc_intparam_flowlabel_res,
};
proto_tree *ti, *val_tree, *fec_tree=NULL;
@@ -2760,7 +2770,10 @@ dissect_subtlv_interface_parameters(tvbuff_t *tvb, guint offset, proto_tree *tre
32 - hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd1,
33 - hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd2,
34 - hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd3,
- 35 - hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd4
+ 35 - hf_ldp_tlv_fec_vc_intparam_vccv_cvtype_bfd4,
+ 36 - hf_ldp_tlv_fec_vc_intparam_flowlabel_t,
+ 37 - hf_ldp_tlv_fec_vc_intparam_flowlabel_r,
+ 38 - hf_ldp_tlv_fec_vc_intparam_flowlabel_res
};
#endif
proto_tree *ti = proto_tree_add_text(tree, tvb, offset, rem, "Interface Parameter");
@@ -2855,6 +2868,12 @@ dissect_subtlv_interface_parameters(tvbuff_t *tvb, guint offset, proto_tree *tre
proto_tree_add_item(vccvtype_tree, *interface_parameters_hf[31], tvb, offset+3, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(vccvtype_tree, *interface_parameters_hf[32], tvb, offset+3, 1, ENC_BIG_ENDIAN);
break;
+ case FEC_VC_INTERFACEPARAM_FLOWLABEL:
+ proto_item_append_text(ti,": Flow Label for Pseudowire");
+ proto_tree_add_item(vcintparam_tree, *interface_parameters_hf[36], tvb, offset+2, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(vcintparam_tree, *interface_parameters_hf[37], tvb, offset+2, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(vcintparam_tree, *interface_parameters_hf[38], tvb, offset+2, 2, ENC_BIG_ENDIAN);
+ break;
default: /* unknown */
proto_item_append_text(ti," unknown");
proto_tree_add_text(vcintparam_tree,tvb, offset+2, (intparam_len -2), "Unknown data");
@@ -3561,6 +3580,15 @@ proto_register_ldp(void)
{ "BFD BFD PW-ACH-encapsulated, for PW Fault Detection and AC/PW Fault Status Signaling", "ldp.msg.tlv.fec.vc.intparam.vccv.cvtype_bfd4", FT_BOOLEAN, 8,
NULL, 0x20, "VC FEC Interface Param VCCV CV Type BFD PW-ACH-encapsulated, for PW Fault Detection and AC/PW Fault Status Signaling", HFILL }},
+ { &hf_ldp_tlv_fec_vc_intparam_flowlabel_t,
+ { "Flow Label Transmit bit", "ldp.msg.tlv.fec.vc.intparam.flowlabel.t", FT_UINT8, BASE_DEC, NULL, 0x80, NULL, HFILL}},
+
+ { &hf_ldp_tlv_fec_vc_intparam_flowlabel_r,
+ { "Flow Label Receive bit", "ldp.msg.tlv.fec.vc.intparam.flowlabel.r", FT_UINT8, BASE_DEC, NULL, 0x40, NULL, HFILL}},
+
+ { &hf_ldp_tlv_fec_vc_intparam_flowlabel_res,
+ { "Flow Label Reserved", "ldp.msg.tlv.fec.vc.intparam.flowlabel.res", FT_UINT16, BASE_HEX, NULL, 0x3FFF, NULL, HFILL}},
+
{ &hf_ldp_tlv_lspid_act_flg,
{ "Action Indicator Flag", "ldp.msg.tlv.lspid.actflg", FT_UINT16, BASE_HEX,
VALS(ldp_act_flg_vals), 0x000F, NULL, HFILL}},
diff --git a/epan/dissectors/packet-lisp-data.c b/epan/dissectors/packet-lisp-data.c
index cb25b1825e..5d546dea86 100644
--- a/epan/dissectors/packet-lisp-data.c
+++ b/epan/dissectors/packet-lisp-data.c
@@ -293,10 +293,10 @@ proto_reg_handoff_lisp_data(void)
*
* Local variables:
* c-basic-offset: 4
- * tab-width: 4
+ * tab-width: 8
* indent-tabs-mode: nil
* End:
*
- * vi: set shiftwidth=4 tabstop=4 expandtab:
- * :indentSize=4:tabSize=4:noTabs=true:
+ * vi: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
*/
diff --git a/epan/dissectors/packet-lisp.c b/epan/dissectors/packet-lisp.c
index 47b6f0e52c..c9ba624a5b 100644
--- a/epan/dissectors/packet-lisp.c
+++ b/epan/dissectors/packet-lisp.c
@@ -1041,10 +1041,10 @@ proto_reg_handoff_lisp(void)
*
* Local variables:
* c-basic-offset: 4
- * tab-width: 4
+ * tab-width: 8
* indent-tabs-mode: nil
* End:
*
- * vi: set shiftwidth=4 tabstop=4 expandtab:
- * :indentSize=4:tabSize=4:noTabs=true:
+ * vi: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
*/
diff --git a/epan/dissectors/packet-lldp.c b/epan/dissectors/packet-lldp.c
index 782f10b6d4..2815be7d8a 100644
--- a/epan/dissectors/packet-lldp.c
+++ b/epan/dissectors/packet-lldp.c
@@ -32,15 +32,17 @@
#endif
#include <glib.h>
-
#include <epan/packet.h>
#include <epan/emem.h>
#include <epan/etypes.h>
#include <epan/oui.h>
#include <epan/afn.h>
-
+#include <epan/addr_resolv.h>
#include "packet-lldp.h"
+/* Sub Dissector Tables */
+static dissector_table_t oui_unique_code_table;
+
/* Initialize the protocol and registered fields */
static int proto_lldp = -1;
static int hf_lldp_tlv_type = -1;
@@ -89,6 +91,7 @@ static int hf_profinet_green_period_begin_valid = -1;
static int hf_profinet_green_period_begin_offset = -1;
static int hf_cisco_subtype = -1;
static int hf_unknown_subtype = -1;
+static int hf_unknown_subtype_content = -1;
/* Initialize the subtree pointers */
static gint ett_lldp = -1;
@@ -1324,6 +1327,15 @@ dissect_ieee_802_1_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
/* Dissect IEEE 802.1Qbg TLVs */
static void
+dissect_oui_default_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 offset)
+{
+ guint8 subType;
+ subType = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint(tree, hf_unknown_subtype, tvb, offset, 1, subType);
+ proto_tree_add_item(tree, hf_unknown_subtype_content, tvb, (offset+1), -1, ENC_NA);
+}
+
+static void
dissect_ieee_802_1qbg_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 offset)
{
guint8 subType;
@@ -1334,7 +1346,6 @@ dissect_ieee_802_1qbg_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
proto_tree *evb_capabilities_subtree = NULL;
proto_item *tf = NULL;
-
subType = tvb_get_guint8(tvb, tempOffset);
if (tree)
@@ -1439,13 +1450,14 @@ dissect_ieee_802_1qbg_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
/* Dissect IEEE 802.3 TLVs */
static void
-dissect_ieee_802_3_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 offset, guint16 tlvLen)
+dissect_ieee_802_3_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 offset)
{
guint8 subType;
guint8 tempByte;
guint16 tempShort;
guint32 tempLong;
guint32 tempOffset = offset;
+ guint16 tlvLen = tvb_length(tvb)-offset;
proto_tree *mac_phy_flags = NULL;
proto_tree *autoneg_advertised_subtree = NULL;
@@ -1835,9 +1847,10 @@ dissect_ieee_802_3_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
/* Dissect Media TLVs */
static void
-dissect_media_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 offset, guint16 tlvLen)
+dissect_media_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 offset)
{
guint32 tempOffset = offset;
+ guint16 tlvLen = tvb_length(tvb)-offset;
guint8 subType;
guint16 tempShort;
guint16 tempVLAN;
@@ -1849,7 +1862,6 @@ dissect_media_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint
proto_tree *media_flags = NULL;
proto_item *tf = NULL;
-
/* Get subtype */
subType = tvb_get_guint8(tvb, tempOffset);
if (tree)
@@ -2379,7 +2391,7 @@ dissect_profinet_period(tvbuff_t *tvb, proto_tree *tree, guint32 offset, const g
/* Dissect PROFINET TLVs */
static void
-dissect_profinet_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 offset, guint16 tlvLen2)
+dissect_profinet_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 offset)
{
guint8 subType;
proto_item *tf = NULL;
@@ -2504,7 +2516,7 @@ dissect_profinet_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gu
break;
}
default:
- proto_tree_add_item(tree, hf_unknown_subtype, tvb, offset, tlvLen2-1, ENC_NA);
+ proto_tree_add_item(tree, hf_unknown_subtype, tvb, offset, -1, ENC_NA);
}
}
@@ -2567,25 +2579,32 @@ dissect_organizational_specific_tlv(tvbuff_t *tvb, packet_info *pinfo, proto_tre
{
guint16 tempLen;
guint16 tempShort;
- guint32 oui;
+ guint32 oui, tLength = tvb_length(tvb);
guint8 subType;
const char *ouiStr;
const char *subTypeStr;
proto_tree *org_tlv_tree = NULL;
proto_item *tf = NULL;
-
/* Get tlv type and length */
tempShort = tvb_get_ntohs(tvb, offset);
/* Get tlv length */
tempLen = TLV_INFO_LEN(tempShort);
-
/* Get OUI value */
oui = tvb_get_ntoh24(tvb, (offset+2));
subType = tvb_get_guint8(tvb, (offset+5));
+ /* check for registered dissectors for the OUI If none found continue, else call dissector */
+ if( dissector_try_uint(oui_unique_code_table, oui, tvb, pinfo, tree) ) {
+ return tLength;
+ }
+ /* maintain previous OUI names. If not included, look in manuf database for OUI */
ouiStr = val_to_str(oui, tlv_oui_subtype_vals, "Unknown");
+ if (strcmp(ouiStr, "Unknown")==0) {
+ ouiStr = uint_get_manuf_name_if_known(oui);
+ if(ouiStr==NULL) ouiStr="Unknown";
+ }
switch(oui)
{
case OUI_IEEE_802_1:
@@ -2607,16 +2626,13 @@ dissect_organizational_specific_tlv(tvbuff_t *tvb, packet_info *pinfo, proto_tre
subTypeStr = val_to_str(subType, ieee_802_1qbg_subtypes, "Unknown subtype 0x%x");
break;
default:
- subTypeStr = "Unknown";
+ subTypeStr = ep_strdup_printf("Unknown (%d)",subType);
break;
}
-
if (tree)
{
- tf = proto_tree_add_text(tree, tvb, offset, (tempLen + 2), "%s - %s",
- ouiStr, subTypeStr);
+ tf = proto_tree_add_text(tree, tvb, offset, tLength, "%s - %s", ouiStr, subTypeStr);
org_tlv_tree = proto_item_add_subtree(tf, ett_org_spc_tlv);
-
proto_tree_add_item(org_tlv_tree, hf_lldp_tlv_type, tvb, offset, 2, ENC_BIG_ENDIAN);
}
if (tempLen < 4)
@@ -2624,42 +2640,41 @@ dissect_organizational_specific_tlv(tvbuff_t *tvb, packet_info *pinfo, proto_tre
if (tree)
proto_tree_add_uint_format(org_tlv_tree, hf_lldp_tlv_len, tvb, offset, 2,
tempShort, "TLV Length: %u (too short, must be >= 4)", tempLen);
-
- return (tempLen + 2);
+ return tLength;
}
if (tree)
{
proto_tree_add_item(org_tlv_tree, hf_lldp_tlv_len, tvb, offset, 2, ENC_BIG_ENDIAN);
/* Display organizational unique id */
- proto_tree_add_uint(org_tlv_tree, hf_org_spc_oui, tvb, (offset+2), 3, oui);
+ proto_tree_add_uint(org_tlv_tree, hf_org_spc_oui, tvb, (offset + 2), 3, oui);
}
switch (oui)
{
case OUI_IEEE_802_1:
- dissect_ieee_802_1_tlv(tvb, pinfo, org_tlv_tree, (offset+5));
+ dissect_ieee_802_1_tlv(tvb, pinfo, org_tlv_tree, (offset + 5));
break;
case OUI_IEEE_802_3:
- dissect_ieee_802_3_tlv(tvb, pinfo, org_tlv_tree, (offset+5), (guint16) (tempLen-3));
+ dissect_ieee_802_3_tlv(tvb, pinfo, org_tlv_tree, (offset + 5));
break;
case OUI_MEDIA_ENDPOINT:
- dissect_media_tlv(tvb, pinfo, org_tlv_tree, (offset+5), (guint16) (tempLen-3));
+ dissect_media_tlv(tvb, pinfo, org_tlv_tree, (offset + 5));
break;
case OUI_PROFINET:
- dissect_profinet_tlv(tvb, pinfo, org_tlv_tree, (offset+5), (guint16) (tempLen-3));
+ dissect_profinet_tlv(tvb, pinfo, org_tlv_tree, (offset + 5));
break;
case OUI_CISCO_2:
- dissect_cisco_tlv(tvb, pinfo, org_tlv_tree, (offset+5));
+ dissect_cisco_tlv(tvb, pinfo, org_tlv_tree, (offset + 5));
break;
case OUI_IEEE_802_1QBG:
- dissect_ieee_802_1qbg_tlv(tvb, pinfo, org_tlv_tree, (offset+5));
+ dissect_ieee_802_1qbg_tlv(tvb, pinfo, org_tlv_tree, (offset + 5));
break;
default:
- proto_tree_add_item(org_tlv_tree, hf_unknown_subtype, tvb, (offset+5), (guint16) (tempLen-3), ENC_NA);
+ dissect_oui_default_tlv(tvb, pinfo, org_tlv_tree, (offset + 5));
}
- return (tempLen + 2);
+ return offset + tvb_length(tvb);
}
/* Dissect Unknown TLV */
@@ -2697,7 +2712,7 @@ dissect_lldp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_item *ti;
proto_tree *lldp_tree = NULL;
-
+ tvbuff_t *new_tvb = NULL;
guint32 offset = 0;
gint32 rtnValue = 0;
guint16 tempShort;
@@ -2753,45 +2768,46 @@ dissect_lldp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
tempShort = tvb_get_ntohs(tvb, offset);
tempType = TLV_TYPE(tempShort);
-
+ /* pass only TLV to dissectors, Zero offset (point to front of tlv) */
+ new_tvb = tvb_new_subset(tvb, offset, TLV_INFO_LEN(tempShort)+2, TLV_INFO_LEN(tempShort)+2);
switch (tempType)
{
case CHASSIS_ID_TLV_TYPE:
- rtnValue = dissect_lldp_chassis_id(tvb, pinfo, lldp_tree, offset);
+ rtnValue = dissect_lldp_chassis_id(new_tvb, pinfo, lldp_tree, 0);
rtnValue = -1; /* Duplicate chassis id tlv */
col_set_str(pinfo->cinfo, COL_INFO, "Duplicate Chassis ID TLV");
break;
case PORT_ID_TLV_TYPE:
- rtnValue = dissect_lldp_port_id(tvb, pinfo, lldp_tree, offset);
+ rtnValue = dissect_lldp_port_id(new_tvb, pinfo, lldp_tree, 0);
rtnValue = -1; /* Duplicate port id tlv */
col_set_str(pinfo->cinfo, COL_INFO, "Duplicate Port ID TLV");
break;
case TIME_TO_LIVE_TLV_TYPE:
- rtnValue = dissect_lldp_time_to_live(tvb, pinfo, lldp_tree, offset);
+ rtnValue = dissect_lldp_time_to_live(new_tvb, pinfo, lldp_tree, 0);
rtnValue = -1; /* Duplicate time-to-live tlv */
col_set_str(pinfo->cinfo, COL_INFO, "Duplicate Time-To-Live TLV");
break;
case END_OF_LLDPDU_TLV_TYPE:
- rtnValue = dissect_lldp_end_of_lldpdu(tvb, pinfo, lldp_tree, offset);
+ rtnValue = dissect_lldp_end_of_lldpdu(new_tvb, pinfo, lldp_tree, 0);
break;
case PORT_DESCRIPTION_TLV_TYPE:
- rtnValue = dissect_lldp_port_desc(tvb, pinfo, lldp_tree, offset);
+ rtnValue = dissect_lldp_port_desc(new_tvb, pinfo, lldp_tree, 0);
break;
case SYSTEM_NAME_TLV_TYPE:
case SYSTEM_DESCRIPTION_TLV_TYPE:
- rtnValue = dissect_lldp_system_name(tvb, pinfo, lldp_tree, offset);
+ rtnValue = dissect_lldp_system_name(new_tvb, pinfo, lldp_tree, 0);
break;
case SYSTEM_CAPABILITIES_TLV_TYPE:
- rtnValue = dissect_lldp_system_capabilities(tvb, pinfo, lldp_tree, offset);
+ rtnValue = dissect_lldp_system_capabilities(new_tvb, pinfo, lldp_tree, 0);
break;
case MANAGEMENT_ADDR_TLV_TYPE:
- rtnValue = dissect_lldp_management_address(tvb, pinfo, lldp_tree, offset);
+ rtnValue = dissect_lldp_management_address(new_tvb, pinfo, lldp_tree, 0);
break;
case ORGANIZATION_SPECIFIC_TLV_TYPE:
- rtnValue = dissect_organizational_specific_tlv(tvb, pinfo, lldp_tree, offset);
+ rtnValue = dissect_organizational_specific_tlv(new_tvb, pinfo, lldp_tree, 0);
break;
default:
- rtnValue = dissect_lldp_unknown_tlv(tvb, pinfo, lldp_tree, offset);
+ rtnValue = dissect_lldp_unknown_tlv(new_tvb, pinfo, lldp_tree, 0);
break;
}
@@ -2874,12 +2890,12 @@ proto_register_lldp(void)
NULL, 0, NULL, HFILL }
},
{ &hf_mgn_obj_id,
- { "Object Identifier", "lldp.mgn.obj.id", FT_BYTES, BASE_NONE,
+ { "Object Identifier", "lldp.mgn.obj.id", FT_OID, BASE_NONE,
NULL, 0, NULL, HFILL }
},
{ &hf_org_spc_oui,
{ "Organization Unique Code", "lldp.orgtlv.oui", FT_UINT24, BASE_HEX,
- VALS(tlv_oui_subtype_vals), 0x0, NULL, HFILL }
+ NULL, 0x0, NULL, HFILL }
},
{ &hf_ieee_802_1_subtype,
{ "IEEE 802.1 Subtype", "lldp.ieee.802_1.subtype", FT_UINT8, BASE_HEX,
@@ -2990,7 +3006,11 @@ proto_register_lldp(void)
VALS(cisco_subtypes), 0x0, NULL, HFILL }
},
{ &hf_unknown_subtype,
- { "Unknown Subtype Content","lldp.unknown_subtype", FT_BYTES, BASE_NONE,
+ { "Unknown Subtype","lldp.unknown_subtype", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }
+ },
+ { &hf_unknown_subtype_content,
+ { "Unknown Subtype Content","lldp.unknown_subtype.content", FT_BYTES, BASE_NONE,
NULL, 0x0, NULL, HFILL }
},
};
@@ -3027,6 +3047,7 @@ proto_register_lldp(void)
/* Required function calls to register the header fields and subtrees used */
proto_register_field_array(proto_lldp, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
+ oui_unique_code_table = register_dissector_table("lldp.orgtlv.oui", "LLDP OUI", FT_UINT24, BASE_HEX );
}
void
diff --git a/epan/dissectors/packet-lldp.h b/epan/dissectors/packet-lldp.h
index dd479c360d..b7dfa74efc 100644
--- a/epan/dissectors/packet-lldp.h
+++ b/epan/dissectors/packet-lldp.h
@@ -29,12 +29,18 @@
#ifndef PACKET_LLDP_H__
#define PACKET_LLDP_H__
+#include "oui.h"
+
static const value_string tlv_oui_subtype_vals[] = {
- { OUI_IEEE_802_1, "IEEE 802.1" },
- { OUI_IEEE_802_3, "IEEE 802.3" },
- { OUI_MEDIA_ENDPOINT, "TIA" },
+ /* Currently, the manuf file calls this "Ieee8021"; "IEEE 802.1" looks better */
+ { OUI_IEEE_802_1, "IEEE 802.1" },
+ /* Currently, the manuf file calls this "Ieee8023"; "IEEE 802.3" looks better */
+ { OUI_IEEE_802_3, "IEEE 802.3" },
+ /* Currently, the manuf file calls this "Telecomm"; "TIA TR-41 Committee" looks better */
+ { OUI_MEDIA_ENDPOINT, "TIA TR-41 Committee" },
+ /* Currently, the manuf file calls this "Profibus" */
{ OUI_PROFINET, "PROFINET" },
- { OUI_CISCO_2, "Cisco" },
+ /* Currently, the manuf file calls this "Procurve", as it's assigned to HP! */
{ OUI_IEEE_802_1QBG, "IEEE 802.1Qbg" },
{ 0, NULL }
};
diff --git a/epan/dissectors/packet-llrp.c b/epan/dissectors/packet-llrp.c
new file mode 100644
index 0000000000..e09957dfd2
--- /dev/null
+++ b/epan/dissectors/packet-llrp.c
@@ -0,0 +1,991 @@
+/* packet-llrp.c
+ * Routines for Low Level Reader Protocol dissection
+ * Copyright 2012, Evan Huus <eapache@gmail.com>
+ *
+ * http://www.gs1.org/gsmp/kc/epcglobal/llrp
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+#include <epan/prefs.h>
+#include <epan/expert.h>
+
+#define LLRP_PORT 5084
+
+/* Initialize the protocol and registered fields */
+static int proto_llrp = -1;
+static int hf_llrp_version = -1;
+static int hf_llrp_type = -1;
+static int hf_llrp_length = -1;
+static int hf_llrp_id = -1;
+static int hf_llrp_cur_ver = -1;
+static int hf_llrp_sup_ver = -1;
+static int hf_llrp_req_cap = -1;
+static int hf_llrp_req_conf = -1;
+static int hf_llrp_rospec = -1;
+static int hf_llrp_antenna_id = -1;
+static int hf_llrp_gpi_port = -1;
+static int hf_llrp_gpo_port = -1;
+static int hf_llrp_rest_fact = -1;
+static int hf_llrp_accessspec = -1;
+static int hf_llrp_vendor = -1;
+static int hf_llrp_tlv_type = -1;
+static int hf_llrp_tv_type = -1;
+static int hf_llrp_tlv_len = -1;
+static int hf_llrp_param = -1;
+
+/* Initialize the subtree pointers */
+static gint ett_llrp = -1;
+static gint ett_llrp_param = -1;
+
+/* Message Types */
+#define LLRP_TYPE_GET_READER_CAPABILITES 1
+#define LLRP_TYPE_GET_READER_CONFIG 2
+#define LLRP_TYPE_SET_READER_CONFIG 3
+#define LLRP_TYPE_CLOSE_CONNECTION_RESPONSE 4
+#define LLRP_TYPE_GET_READER_CAPABILITES_RESPONSE 11
+#define LLRP_TYPE_GET_READER_CONFIG_RESPONSE 12
+#define LLRP_TYPE_SET_READER_CONFIG_RESPONSE 13
+#define LLRP_TYPE_CLOSE_CONNECTION 14
+#define LLRP_TYPE_ADD_ROSPEC 20
+#define LLRP_TYPE_DELETE_ROSPEC 21
+#define LLRP_TYPE_START_ROSPEC 22
+#define LLRP_TYPE_STOP_ROSPEC 23
+#define LLRP_TYPE_ENABLE_ROSPEC 24
+#define LLRP_TYPE_DISABLE_ROSPEC 25
+#define LLRP_TYPE_GET_ROSPECS 26
+#define LLRP_TYPE_ADD_ROSPEC_RESPONSE 30
+#define LLRP_TYPE_DELETE_ROSPEC_RESPONSE 31
+#define LLRP_TYPE_START_ROSPEC_RESPONSE 32
+#define LLRP_TYPE_STOP_ROSPEC_RESPONSE 33
+#define LLRP_TYPE_ENABLE_ROSPEC_RESPONSE 34
+#define LLRP_TYPE_DISABLE_ROSPEC_RESPONSE 35
+#define LLRP_TYPE_GET_ROSPECS_RESPONSE 36
+#define LLRP_TYPE_ADD_ACCESSSPEC 40
+#define LLRP_TYPE_DELETE_ACCESSSPEC 41
+#define LLRP_TYPE_ENABLE_ACCESSSPEC 42
+#define LLRP_TYPE_DISABLE_ACCESSSPEC 43
+#define LLRP_TYPE_GET_ACCESSSPECS 44
+#define LLRP_TYPE_CLIENT_REQUEST_OP 45
+#define LLRP_TYPE_GET_SUPPORTED_VERSION 46
+#define LLRP_TYPE_SET_PROTOCOL_VERSION 47
+#define LLRP_TYPE_ADD_ACCESSSPEC_RESPONSE 50
+#define LLRP_TYPE_DELETE_ACCESSSPEC_RESPONSE 51
+#define LLRP_TYPE_ENABLE_ACCESSSPEC_RESPONSE 52
+#define LLRP_TYPE_DISABLE_ACCESSSPEC_RESPONSE 53
+#define LLRP_TYPE_GET_ACCESSSPECS_RESPONSE 54
+#define LLRP_TYPE_CLIENT_RESQUEST_OP_RESPONSE 55
+#define LLRP_TYPE_GET_SUPPORTED_VERSION_RESPONSE 56
+#define LLRP_TYPE_SET_PROTOCOL_VERSION_RESPONSE 57
+#define LLRP_TYPE_GET_REPORT 60
+#define LLRP_TYPE_RO_ACCESS_REPORT 61
+#define LLRP_TYPE_KEEPALIVE 62
+#define LLRP_TYPE_READER_EVENT_NOTIFICATION 63
+#define LLRP_TYPE_ENABLE_EVENTS_AND_REPORTS 64
+#define LLRP_TYPE_KEEPALIVE_ACK 72
+#define LLRP_TYPE_ERROR_MESSAGE 100
+#define LLRP_TYPE_CUSTOM_MESSAGE 1023
+
+static const value_string message_types[] = {
+ { LLRP_TYPE_GET_READER_CAPABILITES, "Get Reader Capabilites" },
+ { LLRP_TYPE_GET_READER_CONFIG, "Get Reader Config" },
+ { LLRP_TYPE_SET_READER_CONFIG, "Set Reader Config" },
+ { LLRP_TYPE_CLOSE_CONNECTION_RESPONSE, "Close Connection Response" },
+ { LLRP_TYPE_GET_READER_CAPABILITES_RESPONSE, "Get Reader Capabilites Response" },
+ { LLRP_TYPE_GET_READER_CONFIG_RESPONSE, "Get Reader Config Response" },
+ { LLRP_TYPE_SET_READER_CONFIG_RESPONSE, "Set Reader Config Response" },
+ { LLRP_TYPE_CLOSE_CONNECTION, "Close Connection" },
+ { LLRP_TYPE_ADD_ROSPEC, "Add ROSpec" },
+ { LLRP_TYPE_DELETE_ROSPEC, "Delete ROSpec" },
+ { LLRP_TYPE_START_ROSPEC, "Start ROSpec" },
+ { LLRP_TYPE_STOP_ROSPEC, "Stop ROSpec" },
+ { LLRP_TYPE_ENABLE_ROSPEC, "Enable ROSpec" },
+ { LLRP_TYPE_DISABLE_ROSPEC, "Disable ROSpec" },
+ { LLRP_TYPE_GET_ROSPECS, "Get ROSpecs" },
+ { LLRP_TYPE_ADD_ROSPEC_RESPONSE, "Add ROSpec Response" },
+ { LLRP_TYPE_DELETE_ROSPEC_RESPONSE, "Delete ROSpec Response" },
+ { LLRP_TYPE_START_ROSPEC_RESPONSE, "Start ROSpec Response" },
+ { LLRP_TYPE_STOP_ROSPEC_RESPONSE, "Stop ROSpec Response" },
+ { LLRP_TYPE_ENABLE_ROSPEC_RESPONSE, "Enable ROSpec Response" },
+ { LLRP_TYPE_DISABLE_ROSPEC_RESPONSE, "Disable ROSpec Response" },
+ { LLRP_TYPE_GET_ROSPECS_RESPONSE, "Get ROSpecs Response" },
+ { LLRP_TYPE_ADD_ACCESSSPEC, "Add AccessSpec" },
+ { LLRP_TYPE_DELETE_ACCESSSPEC, "Delete AccessSpec" },
+ { LLRP_TYPE_ENABLE_ACCESSSPEC, "Enable AccessSpec" },
+ { LLRP_TYPE_DISABLE_ACCESSSPEC, "Disable AccessSpec" },
+ { LLRP_TYPE_GET_ACCESSSPECS, "Get AccessSpecs" },
+ { LLRP_TYPE_CLIENT_REQUEST_OP, "Client Request OP" },
+ { LLRP_TYPE_GET_SUPPORTED_VERSION, "Get Supported Version" },
+ { LLRP_TYPE_SET_PROTOCOL_VERSION, "Set Protocol Version" },
+ { LLRP_TYPE_ADD_ACCESSSPEC_RESPONSE, "Add AccessSpec Response" },
+ { LLRP_TYPE_DELETE_ACCESSSPEC_RESPONSE, "Delete AccessSpec Response" },
+ { LLRP_TYPE_ENABLE_ACCESSSPEC_RESPONSE, "Enable AccessSpec Response" },
+ { LLRP_TYPE_DISABLE_ACCESSSPEC_RESPONSE, "Disable AccessSpec Response" },
+ { LLRP_TYPE_GET_ACCESSSPECS_RESPONSE, "Get AccessSpecs Response" },
+ { LLRP_TYPE_CLIENT_RESQUEST_OP_RESPONSE, "Client Resquest OP Response" },
+ { LLRP_TYPE_GET_SUPPORTED_VERSION_RESPONSE, "Get Supported Version Response" },
+ { LLRP_TYPE_SET_PROTOCOL_VERSION_RESPONSE, "Set Protocol Version Response" },
+ { LLRP_TYPE_GET_REPORT, "Get Report" },
+ { LLRP_TYPE_RO_ACCESS_REPORT, "RO Access Report" },
+ { LLRP_TYPE_KEEPALIVE, "Keepalive" },
+ { LLRP_TYPE_READER_EVENT_NOTIFICATION, "Reader Event Notification" },
+ { LLRP_TYPE_ENABLE_EVENTS_AND_REPORTS, "Enable Events And Reports" },
+ { LLRP_TYPE_KEEPALIVE_ACK, "Keepalive Ack" },
+ { LLRP_TYPE_ERROR_MESSAGE, "Error Message" },
+ { LLRP_TYPE_CUSTOM_MESSAGE, "Custom Message" },
+ { 0, NULL }
+};
+
+/* Versions */
+#define LLRP_VERS_1_0_1 0x01
+#define LLRP_VERS_1_1 0x02
+
+static const value_string llrp_versions[] = {
+ { LLRP_VERS_1_0_1, "1.0.1" },
+ { LLRP_VERS_1_1, "1.1" },
+ { 0, NULL }
+};
+
+/* Capabilities */
+#define LLRP_CAP_ALL 0
+#define LLRP_CAP_GENERAL_DEVICE 1
+#define LLRP_CAP_LLRP 2
+#define LLRP_CAP_REGULATORY 3
+#define LLRP_CAP_AIR_PROTOCOL 4
+
+static const value_string capabilities_request[] = {
+ { LLRP_CAP_ALL, "All" },
+ { LLRP_CAP_GENERAL_DEVICE, "General Device Capabilities" },
+ { LLRP_CAP_LLRP, "LLRP Capabilites" },
+ { LLRP_CAP_REGULATORY, "Regulatory Capabilities" },
+ { LLRP_CAP_AIR_PROTOCOL, "Air Protocol LLRP Capabilities" },
+ { 0, NULL }
+};
+
+/* Configurations */
+#define LLRP_CONF_ALL 0
+#define LLRP_CONF_IDENTIFICATION 1
+#define LLRP_CONF_ANTENNA_PROPERTIES 2
+#define LLRP_CONF_ANTENNA_CONFIGURATION 3
+#define LLRP_CONF_RO_REPORT_SPEC 4
+#define LLRP_CONF_READER_EVENT_NOTIFICATION_SPEC 5
+#define LLRP_CONF_ACCESS_REPORT_SPEC 6
+#define LLRP_CONF_LLRP_CONFIGURATION_STATE 7
+#define LLRP_CONF_KEEPALIVE_SPEC 8
+#define LLRP_CONF_GPI_PORT_CURRENT_STATE 9
+#define LLRP_CONF_GPO_WRITE_DATA 10
+#define LLRP_CONF_EVENTS_AND_REPORTS 11
+
+static const value_string config_request[] = {
+ { LLRP_CONF_ALL, "All" },
+ { LLRP_CONF_IDENTIFICATION, "Identification" },
+ { LLRP_CONF_ANTENNA_PROPERTIES, "Antenna Properties" },
+ { LLRP_CONF_ANTENNA_CONFIGURATION, "Antenna Configuration" },
+ { LLRP_CONF_RO_REPORT_SPEC, "RO Report Spec" },
+ { LLRP_CONF_READER_EVENT_NOTIFICATION_SPEC, "Reader Event Notification Spec" },
+ { LLRP_CONF_ACCESS_REPORT_SPEC, "Access Report Spec" },
+ { LLRP_CONF_LLRP_CONFIGURATION_STATE, "LLRP Configuration State" },
+ { LLRP_CONF_KEEPALIVE_SPEC, "Keepalive Spec" },
+ { LLRP_CONF_GPI_PORT_CURRENT_STATE, "GPI Port Current State" },
+ { LLRP_CONF_GPO_WRITE_DATA, "GPO Write Data" },
+ { LLRP_CONF_EVENTS_AND_REPORTS, "Events and Reports" },
+ { 0, NULL }
+};
+
+/* TLV Parameter Types */
+#define LLRP_TLV_UTC_TIMESTAMP 128
+#define LLRP_TLV_UPTIME 129
+#define LLRP_TLV_GENERAL_DEVICE_CAP 137
+#define LLRP_TLV_RECEIVE_SENSE_ENTRY 139
+#define LLRP_TLV_ANTENNA_AIR_PROTO 140
+#define LLRP_TLV_GPIO_CAPABILITIES 141
+#define LLRP_TLV_LLRP_CAPABILITIES 142
+#define LLRP_TLV_REGU_CAPABILITIES 143
+#define LLRP_TLV_UHF_CAPABILITIES 144
+#define LLRP_TLV_XMIT_POWER_LEVEL_ENTRY 145
+#define LLRP_TLV_FREQ_INFORMATION 146
+#define LLRP_TLV_FREQ_HOP_TABLE 147
+#define LLRP_TLV_FIXED_FREQ_TABLE 148
+#define LLRP_TLV_ANTENNA_RCV_SENSE_RANGE 149
+#define LLRP_TLV_RO_SPEC 177
+#define LLRP_TLV_RO_BOUND_SPEC 178
+#define LLRP_TLV_RO_SPEC_START_TRIGGER 179
+#define LLRP_TLV_PER_TRIGGER_VAL 180
+#define LLRP_TLV_GPI_TRIGGER_VAL 181
+#define LLRP_TLV_RO_SPEC_STOP_TRIGGER 182
+#define LLRP_TLV_AI_SPEC 183
+#define LLRP_TLV_AI_SPEC_STOP 184
+#define LLRP_TLV_TAG_OBSERV_TRIGGER 185
+#define LLRP_TLV_INVENTORY_PARAM_SPEC 186
+#define LLRP_TLV_RF_SURVEY_SPEC 187
+#define LLRP_TLV_RF_SURVEY_SPEC_STOP_TR 188
+#define LLRP_TLV_ACCESS_SPEC 207
+#define LLRP_TLV_ACCESS_SPEC_STOP_TRIG 208
+#define LLRP_TLV_ACCESS_COMMAND 209
+#define LLRP_TLV_CLIENT_REQ_OP_SPEC 210
+#define LLRP_TLV_CLIENT_REQ_RESPONSE 211
+#define LLRP_TLV_LLRP_CONF_STATE_VAL 217
+#define LLRP_TLV_IDENT 218
+#define LLRP_TLV_GPO_WRITE_DATA 219
+#define LLRP_TLV_KEEPALIVE_SPEC 220
+#define LLRP_TLV_ANTENNA_PROPS 221
+#define LLRP_TLV_ANTENNA_CONF 222
+#define LLRP_TLV_RF_RECEIVER 223
+#define LLRP_TLV_RF_TRANSMITTER 224
+#define LLRP_TLV_GPI_PORT_CURRENT_STATE 225
+#define LLRP_TLV_EVENTS_AND_REPORTS 226
+#define LLRP_TLV_RO_REPORT_SPEC 237
+#define LLRP_TLV_TAG_REPORT_CONTENT_SEL 238
+#define LLRP_TLV_ACCESS_REPORT_SPEC 239
+#define LLRP_TLV_TAG_REPORT_DATA 240
+#define LLRP_TLV_EPC_DATA 241
+#define LLRP_TLV_RF_SURVEY_REPORT_DATA 242
+#define LLRP_TLV_FREQ_RSSI_LEVEL_ENTRY 243
+#define LLRP_TLV_READER_EVENT_NOTI_SPEC 244
+#define LLRP_TLV_EVENT_NOTIF_STATE 245
+#define LLRP_TLV_READER_EVENT_NOTI_DATA 246
+#define LLRP_TLV_HOPPING_EVENT 247
+#define LLRP_TLV_GPI_EVENT 248
+#define LLRP_TLV_RO_SPEC_EVENT 249
+#define LLRP_TLV_REPORT_BUF_LEVEL_WARN 250
+#define LLRP_TLV_REPORT_BUF_OVERFLOW_ERR 251
+#define LLRP_TLV_READER_EXCEPTION_EVENT 252
+#define LLRP_TLV_RF_SURVEY_EVENT 253
+#define LLRP_TLV_AI_SPEC_EVENT 254
+#define LLRP_TLV_ANTENNA_EVENT 255
+#define LLRP_TLV_CONN_ATTEMPT_EVENT 256
+#define LLRP_TLV_CONN_CLOSE_EVENT 257
+#define LLRP_TLV_LLRP_STATUS 287
+#define LLRP_TLV_FIELD_ERROR 288
+#define LLRP_TLV_PARAM_ERROR 289
+#define LLRP_TLV_C1G2_LLRP_CAP 327
+#define LLRP_TLV_C1G2_UHF_RF_MD_TBL 328
+#define LLRP_TLV_C1G2_UHF_RF_MD_TBL_ENT 329
+#define LLRP_TLV_C1G2_INVENTORY_COMMAND 330
+#define LLRP_TLV_C1G2_FILTER 331
+#define LLRP_TLV_C1G2_TAG_INV_MASK 332
+#define LLRP_TLV_C1G2_TAG_INV_AWARE_FLTR 333
+#define LLRP_TLV_C1G2_TAG_INV_UNAWR_FLTR 334
+#define LLRP_TLV_C1G2_RF_CONTROL 335
+#define LLRP_TLV_C1G2_SINGULATION_CTRL 336
+#define LLRP_TLV_C1G2_TAG_INV_AWARE_SING 337
+#define LLRP_TLV_C1G2_TAG_SPEC 338
+#define LLRP_TLV_C1G2_TARGET_TAG 339
+#define LLRP_TLV_C1G2_READ 341
+#define LLRP_TLV_C1G2_WRITE 342
+#define LLRP_TLV_C1G2_KILL 343
+#define LLRP_TLV_C1G2_LOCK 344
+#define LLRP_TLV_C1G2_LOCK_PAYLOAD 345
+#define LLRP_TLV_C1G2_BLK_ERASE 346
+#define LLRP_TLV_C1G2_BLK_WRITE 347
+#define LLRP_TLV_C1G2_EPC_MEMORY_SLCTOR 348
+#define LLRP_TLV_C1G2_READ_OP_SPEC_RES 349
+#define LLRP_TLV_C1G2_WRT_OP_SPEC_RES 350
+#define LLRP_TLV_C1G2_KILL_OP_SPEC_RES 351
+#define LLRP_TLV_C1G2_LOCK_OP_SPEC_RES 352
+#define LLRP_TLV_C1G2_BLK_ERS_OP_SPC_RES 353
+#define LLRP_TLV_C1G2_BLK_WRT_OP_SPC_RES 354
+#define LLRP_TLV_LOOP_SPEC 355
+#define LLRP_TLV_MAX_RECEIVE_SENSE 363
+#define LLRP_TLV_RF_SURVEY_FREQ_CAP 365
+
+static const value_string tlv_type[] = {
+ { LLRP_TLV_UTC_TIMESTAMP, "UTC Timestamp" },
+ { LLRP_TLV_UPTIME, "Uptime" },
+ { LLRP_TLV_GENERAL_DEVICE_CAP, "General Device Capabilities" },
+ { LLRP_TLV_RECEIVE_SENSE_ENTRY, "Receive Sensitivity Entry" },
+ { LLRP_TLV_ANTENNA_AIR_PROTO, "Antenna Air Protocol" },
+ { LLRP_TLV_GPIO_CAPABILITIES, "GPIO Capabilities" },
+ { LLRP_TLV_LLRP_CAPABILITIES, "LLRP Capabilities" },
+ { LLRP_TLV_REGU_CAPABILITIES, "REGU Capabilities" },
+ { LLRP_TLV_UHF_CAPABILITIES, "UHF Capabilities" },
+ { LLRP_TLV_XMIT_POWER_LEVEL_ENTRY, "Transmit Power Level Entry" },
+ { LLRP_TLV_FREQ_INFORMATION, "Frequency Information" },
+ { LLRP_TLV_FREQ_HOP_TABLE, "Frequenct Hop Table" },
+ { LLRP_TLV_FIXED_FREQ_TABLE, "Fixed Frequency Table" },
+ { LLRP_TLV_ANTENNA_RCV_SENSE_RANGE, "Antenna RCV Sensitivity Range" },
+ { LLRP_TLV_RO_SPEC, "RO Spec" },
+ { LLRP_TLV_RO_BOUND_SPEC, "RO Bound Spec" },
+ { LLRP_TLV_RO_SPEC_START_TRIGGER, "RO Spec Start Trigger" },
+ { LLRP_TLV_PER_TRIGGER_VAL, "PER Trigger Value" },
+ { LLRP_TLV_GPI_TRIGGER_VAL, "GPI Trigger Value" },
+ { LLRP_TLV_RO_SPEC_STOP_TRIGGER, "RO Spec Stop Trigger" },
+ { LLRP_TLV_AI_SPEC, "AI Spec" },
+ { LLRP_TLV_AI_SPEC_STOP, "AI Spec Stop" },
+ { LLRP_TLV_TAG_OBSERV_TRIGGER, "Tag Observation Trigger" },
+ { LLRP_TLV_INVENTORY_PARAM_SPEC, "Inventory Parameter Spec ID" },
+ { LLRP_TLV_RF_SURVEY_SPEC, "RF Survey Spec" },
+ { LLRP_TLV_RF_SURVEY_SPEC_STOP_TR, "RF Survey Spec Stop Trigger" },
+ { LLRP_TLV_ACCESS_SPEC, "Access Spec" },
+ { LLRP_TLV_ACCESS_SPEC_STOP_TRIG, "Access Spec Stop Trigger" },
+ { LLRP_TLV_ACCESS_COMMAND, "Access Command" },
+ { LLRP_TLV_CLIENT_REQ_OP_SPEC, "Client Request Op Spec" },
+ { LLRP_TLV_CLIENT_REQ_RESPONSE, "Client Request Response" },
+ { LLRP_TLV_LLRP_CONF_STATE_VAL, "LLRP Configuration State Value" },
+ { LLRP_TLV_IDENT, "Identification" },
+ { LLRP_TLV_GPO_WRITE_DATA, "GPO Write Data" },
+ { LLRP_TLV_KEEPALIVE_SPEC, "Keepalive Spec" },
+ { LLRP_TLV_ANTENNA_PROPS, "Antenna Properties" },
+ { LLRP_TLV_ANTENNA_CONF, "Antenna Configuration" },
+ { LLRP_TLV_RF_RECEIVER, "RF Receiver" },
+ { LLRP_TLV_RF_TRANSMITTER, "RF Transmitter" },
+ { LLRP_TLV_GPI_PORT_CURRENT_STATE, "GPI Port Current State" },
+ { LLRP_TLV_EVENTS_AND_REPORTS, "Events And Reports" },
+ { LLRP_TLV_RO_REPORT_SPEC, "RO Report Spec" },
+ { LLRP_TLV_TAG_REPORT_CONTENT_SEL, "Tag Report Content Selector" },
+ { LLRP_TLV_ACCESS_REPORT_SPEC, "Access Report Spec" },
+ { LLRP_TLV_TAG_REPORT_DATA, "Tag Report Data" },
+ { LLRP_TLV_EPC_DATA, "EPC Data" },
+ { LLRP_TLV_RF_SURVEY_REPORT_DATA, "RF Survey Report Data" },
+ { LLRP_TLV_FREQ_RSSI_LEVEL_ENTRY, "Frequency RSSI Level Entry" },
+ { LLRP_TLV_READER_EVENT_NOTI_SPEC, "Reader Event Notification Spec" },
+ { LLRP_TLV_EVENT_NOTIF_STATE, "Event Notification State" },
+ { LLRP_TLV_READER_EVENT_NOTI_DATA, "Reader Event Notification Data" },
+ { LLRP_TLV_HOPPING_EVENT, "Hopping Event" },
+ { LLRP_TLV_GPI_EVENT, "GPI Event" },
+ { LLRP_TLV_RO_SPEC_EVENT, "RO Spec Event" },
+ { LLRP_TLV_REPORT_BUF_LEVEL_WARN, "Report Buffer Level Warning Event" },
+ { LLRP_TLV_REPORT_BUF_OVERFLOW_ERR, "Report Buffer Overflow Error Event" },
+ { LLRP_TLV_READER_EXCEPTION_EVENT, "Reader Exception Event" },
+ { LLRP_TLV_RF_SURVEY_EVENT, "RF Survey Event" },
+ { LLRP_TLV_AI_SPEC_EVENT, "AI Spec Event" },
+ { LLRP_TLV_ANTENNA_EVENT, "ANTENNA Event" },
+ { LLRP_TLV_CONN_ATTEMPT_EVENT, "CONN Attempt Event" },
+ { LLRP_TLV_CONN_CLOSE_EVENT, "CONN Close Event" },
+ { LLRP_TLV_LLRP_STATUS, "LLRP Status" },
+ { LLRP_TLV_FIELD_ERROR, "Field Error" },
+ { LLRP_TLV_PARAM_ERROR, "Param Error" },
+ { LLRP_TLV_C1G2_LLRP_CAP, "C1G2 LLRP Capabilities" },
+ { LLRP_TLV_C1G2_UHF_RF_MD_TBL, "C1G2 UHF RF Mode Table" },
+ { LLRP_TLV_C1G2_UHF_RF_MD_TBL_ENT, "C1G2 UHF RF Mode Table Entry" },
+ { LLRP_TLV_C1G2_INVENTORY_COMMAND, "C1G2 Inventory Command" },
+ { LLRP_TLV_C1G2_FILTER, "C1G2 Filter" },
+ { LLRP_TLV_C1G2_TAG_INV_MASK, "C1G2 Tag Inventory Mask" },
+ { LLRP_TLV_C1G2_TAG_INV_AWARE_FLTR, "C1G2 Tag Inventory State-Aware Filtre Action" },
+ { LLRP_TLV_C1G2_TAG_INV_UNAWR_FLTR, "C1G2 Tag Inventory State-Unaware Filter Action" },
+ { LLRP_TLV_C1G2_RF_CONTROL, "C1G2 RF Control" },
+ { LLRP_TLV_C1G2_SINGULATION_CTRL, "C1G2 Singulation Control" },
+ { LLRP_TLV_C1G2_TAG_INV_AWARE_SING, "C1G2 Tag Inventory State-Aware Singulation" },
+ { LLRP_TLV_C1G2_TAG_SPEC, "C1G2 Tag Spec" },
+ { LLRP_TLV_C1G2_TARGET_TAG, "C1G2 Target Tag" },
+ { LLRP_TLV_C1G2_READ, "C1G2 Read" },
+ { LLRP_TLV_C1G2_WRITE, "C1G2 Write" },
+ { LLRP_TLV_C1G2_KILL, "C1G2 Kill" },
+ { LLRP_TLV_C1G2_LOCK, "C1G2 Lock" },
+ { LLRP_TLV_C1G2_LOCK_PAYLOAD, "C1G2 Lock Payload" },
+ { LLRP_TLV_C1G2_BLK_ERASE, "C1G2 Block Erase" },
+ { LLRP_TLV_C1G2_BLK_WRITE, "C1G2 Block Write" },
+ { LLRP_TLV_C1G2_EPC_MEMORY_SLCTOR, "C1G2 EPC Memory Selector" },
+ { LLRP_TLV_C1G2_READ_OP_SPEC_RES, "C1G2 Read Op Spec Result" },
+ { LLRP_TLV_C1G2_WRT_OP_SPEC_RES, "C1G2 Write Op Spec Result" },
+ { LLRP_TLV_C1G2_KILL_OP_SPEC_RES, "C1G2 Kill Op Spec Result" },
+ { LLRP_TLV_C1G2_LOCK_OP_SPEC_RES, "C1G2 Lock Op Spec Result" },
+ { LLRP_TLV_C1G2_BLK_ERS_OP_SPC_RES, "C1G2 Block Erase Op Spec Result" },
+ { LLRP_TLV_C1G2_BLK_WRT_OP_SPC_RES, "C1G2 Block Write Op Spec Result" },
+ { LLRP_TLV_LOOP_SPEC, "Loop Spec" },
+ { LLRP_TLV_MAX_RECEIVE_SENSE, "Maximum Receive Sensitivity" },
+ { LLRP_TLV_RF_SURVEY_FREQ_CAP, "RF Survey Frequency Capabilities" },
+ { 0, NULL }
+};
+
+/* TV Parameter Types */
+#define LLRP_TV_ANTENNA_ID 1
+#define LLRP_TV_FIRST_SEEN_TIME_UTC 2
+#define LLRP_TV_FIRST_SEEN_TIME_UPTIME 3
+#define LLRP_TV_LAST_SEEN_TIME_UTC 4
+#define LLRP_TV_LAST_SEEN_TIME_UPTIME 5
+#define LLRP_TV_PEAK_RSSI 6
+#define LLRP_TV_CHANNEL_INDEX 7
+#define LLRP_TV_TAG_SEEN_COUNT 8
+#define LLRP_TV_RO_SPEC_ID 9
+#define LLRP_TV_INVENTORY_PARAM_SPEC_ID 10
+#define LLRP_TV_C1G2_CRC 11
+#define LLRP_TV_C1G2_PC 12
+#define LLRP_TV_EPC96 13
+#define LLRP_TV_SPEC_INDEX 14
+#define LLRP_TV_CLIENT_REQ_OP_SPEC_RES 15
+#define LLRP_TV_ACCESS_SPEC_ID 16
+#define LLRP_TV_OP_SPEC_ID 17
+#define LLRP_TV_C1G2_SINGULATION_DET 18
+#define LLRP_TV_C1G2_XPC_W1 19
+#define LLRP_TV_C1G2_XPC_W2 20
+
+/* Since TV's don't have a length field,
+ * use these values instead */
+#define LLRP_TV_LEN_ANTENNA_ID 2
+#define LLRP_TV_LEN_FIRST_SEEN_TIME_UTC 8
+#define LLRP_TV_LEN_FIRST_SEEN_TIME_UPTIME 8
+#define LLRP_TV_LEN_LAST_SEEN_TIME_UTC 8
+#define LLRP_TV_LEN_LAST_SEEN_TIME_UPTIME 8
+#define LLRP_TV_LEN_PEAK_RSSI 1
+#define LLRP_TV_LEN_CHANNEL_INDEX 2
+#define LLRP_TV_LEN_TAG_SEEN_COUNT 2
+#define LLRP_TV_LEN_RO_SPEC_ID 4
+#define LLRP_TV_LEN_INVENTORY_PARAM_SPEC_ID 2
+#define LLRP_TV_LEN_C1G2_CRC 2
+#define LLRP_TV_LEN_C1G2_PC 2
+#define LLRP_TV_LEN_EPC96 2
+#define LLRP_TV_LEN_SPEC_INDEX 2
+#define LLRP_TV_LEN_CLIENT_REQ_OP_SPEC_RES 2
+#define LLRP_TV_LEN_ACCESS_SPEC_ID 4
+#define LLRP_TV_LEN_OP_SPEC_ID 2
+#define LLRP_TV_LEN_C1G2_SINGULATION_DET 4
+#define LLRP_TV_LEN_C1G2_XPC_W1 2
+#define LLRP_TV_LEN_C1G2_XPC_W2 2
+
+static const value_string tv_type[] = {
+ { LLRP_TV_ANTENNA_ID, "Antenna ID" },
+ { LLRP_TV_FIRST_SEEN_TIME_UTC, "First Seen Timestamp UTC" },
+ { LLRP_TV_FIRST_SEEN_TIME_UPTIME, "First Seen Timestamp Uptime" },
+ { LLRP_TV_LAST_SEEN_TIME_UTC, "Last Seen Timestamp UTC" },
+ { LLRP_TV_LAST_SEEN_TIME_UPTIME, "Last Seen Timestamp Uptime" },
+ { LLRP_TV_PEAK_RSSI, "Peak RSSI" },
+ { LLRP_TV_CHANNEL_INDEX, "Channel Index" },
+ { LLRP_TV_TAG_SEEN_COUNT, "Tag Seen Count" },
+ { LLRP_TV_RO_SPEC_ID, "RO Spec ID" },
+ { LLRP_TV_INVENTORY_PARAM_SPEC_ID, "Inventory Parameter Spec ID" },
+ { LLRP_TV_C1G2_CRC, "C1G2 CRC" },
+ { LLRP_TV_C1G2_PC, "C1G2 PC" },
+ { LLRP_TV_EPC96, "EPC-96" },
+ { LLRP_TV_SPEC_INDEX, "Spec Index" },
+ { LLRP_TV_CLIENT_REQ_OP_SPEC_RES, "Client Request Op Spec Result" },
+ { LLRP_TV_ACCESS_SPEC_ID, "Access Spec ID" },
+ { LLRP_TV_OP_SPEC_ID, "Op Spec ID" },
+ { LLRP_TV_C1G2_SINGULATION_DET, "C1G2 Singulation Details" },
+ { LLRP_TV_C1G2_XPC_W1, "C1G2 XPC W1" },
+ { LLRP_TV_C1G2_XPC_W2, "C1G2 XPC W2" },
+ { 0, NULL }
+};
+
+/* Misc */
+#define LLRP_ROSPEC_ALL 0
+#define LLRP_ANTENNA_ALL 0
+#define LLRP_GPI_PORT_ALL 0
+#define LLRP_GPO_PORT_ALL 0
+#define LLRP_ACCESSSPEC_ALL 0
+#define LLRP_TLV_LEN_MIN 4
+#define LLRP_LEN_MIN 10
+
+static void
+dissect_llrp_parameters(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ guint offset)
+{
+ guint8 has_length;
+ guint16 len, type;
+ guint real_len;
+ proto_item *ti;
+ proto_tree *param_tree;
+
+ while (tvb_reported_length_remaining(tvb, offset) > 0)
+ {
+ has_length = !(tvb_get_guint8(tvb, offset) & 0x80);
+
+ if (has_length)
+ {
+ len = tvb_get_ntohs(tvb, offset + 2);
+
+ if (len < LLRP_TLV_LEN_MIN)
+ real_len = LLRP_TLV_LEN_MIN;
+ else if (len > tvb_reported_length_remaining(tvb, offset))
+ real_len = tvb_reported_length_remaining(tvb, offset);
+ else
+ real_len = len;
+
+ ti = proto_tree_add_none_format(tree, hf_llrp_param, tvb,
+ offset, real_len, "TLV Parameter");
+ param_tree = proto_item_add_subtree(ti, ett_llrp_param);
+
+ proto_tree_add_item(param_tree, hf_llrp_tlv_type, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ ti = proto_tree_add_item(param_tree, hf_llrp_tlv_len, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ if (len != real_len)
+ expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR,
+ "Invalid length field: claimed %u, should be %u.",
+ len, real_len);
+ offset += 2;
+
+ /* TODO: Decode actual TLV parameter fields */
+
+ /* The len field includes the 4-byte parameter header that we've
+ * already accounted for in offset */
+ offset += real_len - 4;
+ }
+ else
+ {
+ type = tvb_get_guint8(tvb, offset) & 0x7F;
+
+ /* TODO: Decode actual TV fields rather than just jumping
+ * ahead the correct length */
+ switch (type)
+ {
+ case LLRP_TV_ANTENNA_ID:
+ real_len = LLRP_TV_LEN_ANTENNA_ID; break;
+ case LLRP_TV_FIRST_SEEN_TIME_UTC:
+ real_len = LLRP_TV_LEN_FIRST_SEEN_TIME_UTC; break;
+ case LLRP_TV_FIRST_SEEN_TIME_UPTIME:
+ real_len = LLRP_TV_LEN_FIRST_SEEN_TIME_UPTIME; break;
+ case LLRP_TV_LAST_SEEN_TIME_UTC:
+ real_len = LLRP_TV_LEN_LAST_SEEN_TIME_UTC; break;
+ case LLRP_TV_LAST_SEEN_TIME_UPTIME:
+ real_len = LLRP_TV_LEN_LAST_SEEN_TIME_UPTIME; break;
+ case LLRP_TV_PEAK_RSSI:
+ real_len = LLRP_TV_LEN_PEAK_RSSI; break;
+ case LLRP_TV_CHANNEL_INDEX:
+ real_len = LLRP_TV_LEN_CHANNEL_INDEX; break;
+ case LLRP_TV_TAG_SEEN_COUNT:
+ real_len = LLRP_TV_LEN_TAG_SEEN_COUNT; break;
+ case LLRP_TV_RO_SPEC_ID:
+ real_len = LLRP_TV_LEN_RO_SPEC_ID; break;
+ case LLRP_TV_INVENTORY_PARAM_SPEC_ID:
+ real_len = LLRP_TV_LEN_INVENTORY_PARAM_SPEC_ID; break;
+ case LLRP_TV_C1G2_CRC:
+ real_len = LLRP_TV_LEN_C1G2_CRC; break;
+ case LLRP_TV_C1G2_PC:
+ real_len = LLRP_TV_LEN_C1G2_PC; break;
+ case LLRP_TV_EPC96:
+ real_len = LLRP_TV_LEN_EPC96; break;
+ case LLRP_TV_SPEC_INDEX:
+ real_len = LLRP_TV_LEN_SPEC_INDEX; break;
+ case LLRP_TV_CLIENT_REQ_OP_SPEC_RES:
+ real_len = LLRP_TV_LEN_CLIENT_REQ_OP_SPEC_RES; break;
+ case LLRP_TV_ACCESS_SPEC_ID:
+ real_len = LLRP_TV_LEN_ACCESS_SPEC_ID; break;
+ case LLRP_TV_OP_SPEC_ID:
+ real_len = LLRP_TV_LEN_OP_SPEC_ID; break;
+ case LLRP_TV_C1G2_SINGULATION_DET:
+ real_len = LLRP_TV_LEN_C1G2_SINGULATION_DET; break;
+ case LLRP_TV_C1G2_XPC_W1:
+ real_len = LLRP_TV_LEN_C1G2_XPC_W1; break;
+ case LLRP_TV_C1G2_XPC_W2:
+ real_len = LLRP_TV_LEN_C1G2_XPC_W2; break;
+ default:
+ /* ???
+ * No need to mark it, since the hf_llrp_tv_type field
+ * will already show up as 'unknown'. */
+ real_len = 0;
+ break;
+ };
+
+ ti = proto_tree_add_none_format(tree, hf_llrp_param, tvb,
+ offset, real_len + 1, "TV Parameter");
+ param_tree = proto_item_add_subtree(ti, ett_llrp_param);
+
+ proto_tree_add_item(param_tree, hf_llrp_tv_type, tvb,
+ offset, 1, ENC_NA);
+ offset++;
+
+ /* Unlike for TLV's, real_len for TV's doesn't include the standard
+ * header length, so just add it straight to the offset. */
+ offset += real_len;
+ }
+ }
+}
+
+static void
+dissect_llrp_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ guint16 type, guint offset)
+{
+ guint8 requested_data;
+ guint16 antenna_id, gpi_port, gpo_port;
+ guint32 spec_id;
+ proto_item *ti;
+
+ switch (type)
+ {
+ /* Simple cases just have normal TLV or TV parameters */
+ case LLRP_TYPE_CLOSE_CONNECTION_RESPONSE:
+ case LLRP_TYPE_GET_READER_CAPABILITES_RESPONSE:
+ case LLRP_TYPE_ADD_ROSPEC:
+ case LLRP_TYPE_ADD_ROSPEC_RESPONSE:
+ case LLRP_TYPE_DELETE_ROSPEC_RESPONSE:
+ case LLRP_TYPE_START_ROSPEC_RESPONSE:
+ case LLRP_TYPE_STOP_ROSPEC_RESPONSE:
+ case LLRP_TYPE_ENABLE_ROSPEC_RESPONSE:
+ case LLRP_TYPE_DISABLE_ROSPEC_RESPONSE:
+ case LLRP_TYPE_GET_ROSPECS_RESPONSE:
+ case LLRP_TYPE_ADD_ACCESSSPEC:
+ case LLRP_TYPE_ADD_ACCESSSPEC_RESPONSE:
+ case LLRP_TYPE_DELETE_ACCESSSPEC_RESPONSE:
+ case LLRP_TYPE_ENABLE_ACCESSSPEC_RESPONSE:
+ case LLRP_TYPE_DISABLE_ACCESSSPEC_RESPONSE:
+ case LLRP_TYPE_GET_ACCESSSPECS:
+ case LLRP_TYPE_CLIENT_REQUEST_OP:
+ case LLRP_TYPE_CLIENT_RESQUEST_OP_RESPONSE:
+ case LLRP_TYPE_RO_ACCESS_REPORT:
+ case LLRP_TYPE_READER_EVENT_NOTIFICATION:
+ case LLRP_TYPE_ERROR_MESSAGE:
+ case LLRP_TYPE_GET_READER_CONFIG_RESPONSE:
+ case LLRP_TYPE_SET_READER_CONFIG_RESPONSE:
+ case LLRP_TYPE_SET_PROTOCOL_VERSION_RESPONSE:
+ case LLRP_TYPE_GET_ACCESSSPECS_RESPONSE:
+ case LLRP_TYPE_GET_REPORT:
+ case LLRP_TYPE_ENABLE_EVENTS_AND_REPORTS:
+ dissect_llrp_parameters(tvb, pinfo, tree, offset);
+ break;
+ /* Some just have an ROSpec ID */
+ case LLRP_TYPE_START_ROSPEC:
+ case LLRP_TYPE_STOP_ROSPEC:
+ case LLRP_TYPE_ENABLE_ROSPEC:
+ case LLRP_TYPE_DISABLE_ROSPEC:
+ case LLRP_TYPE_DELETE_ROSPEC:
+ spec_id = tvb_get_ntohl(tvb, offset);
+ if (spec_id == LLRP_ROSPEC_ALL)
+ proto_tree_add_uint_format(tree, hf_llrp_rospec, tvb,
+ offset, 4, spec_id, "All ROSpecs (%u)", spec_id);
+ else
+ proto_tree_add_item(tree, hf_llrp_rospec, tvb,
+ offset, 4, ENC_BIG_ENDIAN);
+ break;
+ /* Some just have an AccessSpec ID */
+ case LLRP_TYPE_ENABLE_ACCESSSPEC:
+ case LLRP_TYPE_DELETE_ACCESSSPEC:
+ case LLRP_TYPE_DISABLE_ACCESSSPEC:
+ spec_id = tvb_get_ntohl(tvb, offset);
+ if (spec_id == LLRP_ACCESSSPEC_ALL)
+ proto_tree_add_uint_format(tree, hf_llrp_accessspec, tvb,
+ offset, 4, spec_id, "All Access Specs (%u)", spec_id);
+ else
+ proto_tree_add_item(tree, hf_llrp_accessspec, tvb,
+ offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_llrp_accessspec, tvb, offset, 4, ENC_BIG_ENDIAN);
+ break;
+ case LLRP_TYPE_GET_READER_CAPABILITES:
+ proto_tree_add_item(tree, hf_llrp_req_cap, tvb, offset, 1, ENC_NA);
+ offset++;
+ dissect_llrp_parameters(tvb, pinfo, tree, offset);
+ break;
+ /* GET_READER_CONFIG is complicated */
+ case LLRP_TYPE_GET_READER_CONFIG:
+ requested_data = tvb_get_guint8(tvb, offset + 2);
+ switch (requested_data)
+ {
+ case LLRP_CONF_ALL:
+ antenna_id = tvb_get_ntohs(tvb, offset);
+ if (antenna_id == LLRP_ANTENNA_ALL)
+ proto_tree_add_uint_format(tree, hf_llrp_antenna_id, tvb,
+ offset, 2, antenna_id, "All Antennas (%u)", antenna_id);
+ else
+ proto_tree_add_item(tree, hf_llrp_antenna_id, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(tree, hf_llrp_req_conf, tvb,
+ offset, 1, ENC_NA);
+ offset++;
+ gpi_port = tvb_get_ntohs(tvb, offset);
+ if (gpi_port == LLRP_GPI_PORT_ALL)
+ proto_tree_add_uint_format(tree, hf_llrp_gpi_port, tvb,
+ offset, 2, gpi_port, "All GPI Ports (%u)", gpi_port);
+ else
+ proto_tree_add_item(tree, hf_llrp_gpi_port, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ gpo_port = tvb_get_ntohs(tvb, offset);
+ if (gpo_port == LLRP_GPO_PORT_ALL)
+ proto_tree_add_uint_format(tree, hf_llrp_gpo_port, tvb,
+ offset, 2, gpo_port, "All GPO Ports (%u)", gpo_port);
+ else
+ proto_tree_add_item(tree, hf_llrp_gpo_port, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ break;
+ case LLRP_CONF_ANTENNA_PROPERTIES:
+ case LLRP_CONF_ANTENNA_CONFIGURATION:
+ antenna_id = tvb_get_ntohs(tvb, offset);
+ if (antenna_id == LLRP_ANTENNA_ALL)
+ proto_tree_add_uint_format(tree, hf_llrp_antenna_id, tvb,
+ offset, 2, antenna_id, "All Antennas (%u)", antenna_id);
+ else
+ proto_tree_add_item(tree, hf_llrp_antenna_id, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(tree, hf_llrp_req_conf, tvb,
+ offset, 1, ENC_NA);
+ offset++;
+ offset += 4; /* Skip both GPI and GPO ports */
+ break;
+ case LLRP_CONF_IDENTIFICATION:
+ case LLRP_CONF_RO_REPORT_SPEC:
+ case LLRP_CONF_READER_EVENT_NOTIFICATION_SPEC:
+ case LLRP_CONF_ACCESS_REPORT_SPEC:
+ case LLRP_CONF_LLRP_CONFIGURATION_STATE:
+ case LLRP_CONF_KEEPALIVE_SPEC:
+ case LLRP_CONF_EVENTS_AND_REPORTS:
+ offset += 2; /* Skip antenna ID */
+ proto_tree_add_item(tree, hf_llrp_req_conf, tvb,
+ offset, 1, ENC_NA);
+ offset++;
+ offset += 4; /* Skip both GPI and GPO ports */
+ break;
+ case LLRP_CONF_GPI_PORT_CURRENT_STATE:
+ offset += 2; /* Skip antenna ID */
+ proto_tree_add_item(tree, hf_llrp_req_conf, tvb,
+ offset, 1, ENC_NA);
+ offset++;
+ gpi_port = tvb_get_ntohs(tvb, offset);
+ if (gpi_port == LLRP_GPI_PORT_ALL)
+ proto_tree_add_uint_format(tree, hf_llrp_gpi_port, tvb,
+ offset, 2, gpi_port, "All GPI Ports (%u)", gpi_port);
+ else
+ proto_tree_add_item(tree, hf_llrp_gpi_port, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ offset += 2; /* Skip GPO Port */
+ break;
+ case LLRP_CONF_GPO_WRITE_DATA:
+ offset += 2; /* Skip antenna ID */
+ proto_tree_add_item(tree, hf_llrp_req_conf, tvb,
+ offset, 1, ENC_NA);
+ offset++;
+ offset += 2; /* Skip GPI Port */
+ gpo_port = tvb_get_ntohs(tvb, offset);
+ if (gpo_port == LLRP_GPO_PORT_ALL)
+ proto_tree_add_uint_format(tree, hf_llrp_gpo_port, tvb,
+ offset, 2, gpo_port, "All GPO Ports (%u)", gpo_port);
+ else
+ proto_tree_add_item(tree, hf_llrp_gpo_port, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ break;
+ default:
+ offset += 2; /* Skip antenna ID */
+ ti = proto_tree_add_item(tree, hf_llrp_req_conf, tvb,
+ offset, 1, ENC_NA);
+ expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR,
+ "Unrecognized configuration request: %u",
+ requested_data);
+ offset++;
+ offset += 4; /* Skip both GPI and GPO ports */
+ break;
+ };
+ dissect_llrp_parameters(tvb, pinfo, tree, offset);
+ break;
+ /* END GET_READER_CONFIG */
+ /* Misc */
+ case LLRP_TYPE_SET_READER_CONFIG:
+ proto_tree_add_item(tree, hf_llrp_rest_fact, tvb, offset, 1, ENC_NA);
+ offset++;
+ dissect_llrp_parameters(tvb, pinfo, tree, offset);
+ break;
+ case LLRP_TYPE_SET_PROTOCOL_VERSION:
+ proto_tree_add_item(tree, hf_llrp_version, tvb, offset, 1, ENC_NA);
+ break;
+ case LLRP_TYPE_GET_SUPPORTED_VERSION_RESPONSE:
+ proto_tree_add_item(tree, hf_llrp_cur_ver, tvb, offset, 1, ENC_NA);
+ offset++;
+ proto_tree_add_item(tree, hf_llrp_sup_ver, tvb, offset, 1, ENC_NA);
+ offset++;
+ dissect_llrp_parameters(tvb, pinfo, tree, offset);
+ break;
+ case LLRP_TYPE_CUSTOM_MESSAGE:
+ proto_tree_add_item(tree, hf_llrp_vendor, tvb, offset, 4, ENC_BIG_ENDIAN);
+ break;
+ /* Some have no extra data expected */
+ case LLRP_TYPE_KEEPALIVE:
+ case LLRP_TYPE_KEEPALIVE_ACK:
+ case LLRP_TYPE_CLOSE_CONNECTION:
+ case LLRP_TYPE_GET_ROSPECS:
+ case LLRP_TYPE_GET_SUPPORTED_VERSION:
+ break;
+ default:
+ /* We shouldn't be called if we don't already recognize the value */
+ DISSECTOR_ASSERT_NOT_REACHED();
+ };
+}
+
+/* Code to actually dissect the packets */
+static int
+dissect_llrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ proto_item *ti;
+ proto_tree *llrp_tree;
+ guint16 type;
+ guint32 len;
+ guint offset = 0;
+
+ /* Check that there's enough data */
+ if (tvb_reported_length(tvb) < LLRP_LEN_MIN)
+ return 0;
+
+ /* Make entries in Protocol column and Info column on summary display */
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "LLRP");
+
+ col_set_str(pinfo->cinfo, COL_INFO, "LLRP Message");
+
+ type = tvb_get_ntohs(tvb, offset) & 0x03FF;
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (%s)",
+ val_to_str(type, message_types, "Unknown Type: %d"));
+
+ ti = proto_tree_add_item(tree, proto_llrp, tvb, offset, -1, ENC_NA);
+ llrp_tree = proto_item_add_subtree(ti, ett_llrp);
+
+ proto_tree_add_item(llrp_tree, hf_llrp_version, tvb, offset, 1, ENC_NA);
+ proto_tree_add_item(llrp_tree, hf_llrp_type, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ ti = proto_tree_add_item(llrp_tree, hf_llrp_length, tvb, offset, 4, ENC_BIG_ENDIAN);
+ len = tvb_get_ntohl(tvb, offset);
+ if (len > tvb_reported_length(tvb))
+ {
+ expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR,
+ "Incorrect length field: claimed %u, but only have %u.",
+ len, tvb_reported_length(tvb));
+ }
+ offset += 4;
+
+ proto_tree_add_item(llrp_tree, hf_llrp_id, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ if (match_strval(type, message_types))
+ dissect_llrp_message(tvb, pinfo, llrp_tree, type, offset);
+
+ return tvb_length(tvb);
+}
+
+void
+proto_register_llrp(void)
+{
+ /* Setup list of header fields See Section 1.6.1 for details*/
+ static hf_register_info hf[] = {
+ { &hf_llrp_version,
+ { "Version", "llrp.version", FT_UINT8, BASE_DEC, VALS(llrp_versions), 0x1C,
+ NULL, HFILL }},
+
+ { &hf_llrp_type,
+ { "Type", "llrp.type", FT_UINT16, BASE_DEC, VALS(message_types), 0x03FF,
+ NULL, HFILL }},
+
+ { &hf_llrp_length,
+ { "Length", "llrp.length", FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_llrp_id,
+ { "ID", "llrp.id", FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_llrp_cur_ver,
+ { "Current Version", "llrp.cur_ver", FT_UINT8, BASE_DEC, VALS(llrp_versions), 0,
+ NULL, HFILL }},
+
+ { &hf_llrp_sup_ver,
+ { "Supported Version", "llrp.sup_ver", FT_UINT8, BASE_DEC, VALS(llrp_versions), 0,
+ "The max supported protocol version.", HFILL }},
+
+ { &hf_llrp_req_cap,
+ { "Requested Capabilities", "llrp.req_cap", FT_UINT8, BASE_DEC, VALS(capabilities_request), 0,
+ NULL, HFILL }},
+
+ { &hf_llrp_req_conf,
+ { "Requested Configuration", "llrp.req_conf", FT_UINT8, BASE_DEC, VALS(config_request), 0,
+ NULL, HFILL }},
+
+ { &hf_llrp_rospec,
+ { "ROSpec ID", "llrp.rospec", FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_llrp_antenna_id,
+ { "Antenna ID", "llrp.antenna_id", FT_UINT16, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_llrp_gpi_port,
+ { "GPI Port Number", "llrp.gpi_port", FT_UINT16, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_llrp_gpo_port,
+ { "GPO Port Number", "llrp.gpo_port", FT_UINT16, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_llrp_rest_fact,
+ { "Restore Factory Settings", "llrp.rest_fact", FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x80,
+ NULL, HFILL }},
+
+ { &hf_llrp_accessspec,
+ { "Access Spec ID", "llrp.accessspec", FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_llrp_vendor,
+ { "Vendor ID", "llrp.vendor", FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+
+ { &hf_llrp_tlv_type,
+ { "Type", "llrp.tlv_type", FT_UINT16, BASE_DEC, VALS(tlv_type), 0x03FF,
+ "The type of TLV.", HFILL }},
+
+ { &hf_llrp_tv_type,
+ { "Type", "llrp.tv_type", FT_UINT8, BASE_DEC, VALS(tv_type), 0x7F,
+ "The type of TV.", HFILL }},
+
+ { &hf_llrp_tlv_len,
+ { "Length", "llrp.tlv_len", FT_UINT16, BASE_DEC, NULL, 0,
+ "The length of this TLV.", HFILL }},
+
+ { &hf_llrp_param,
+ { "Parameter", "llrp.param", FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }}
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_llrp,
+ &ett_llrp_param
+ };
+
+ /* Register the protocol name and description */
+ proto_llrp = proto_register_protocol("Low Level Reader Protocol",
+ "LLRP", "llrp");
+
+ /* Required function calls to register the header fields and subtrees used */
+ proto_register_field_array(proto_llrp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+}
+
+void
+proto_reg_handoff_llrp(void)
+{
+ dissector_handle_t llrp_handle;
+
+ llrp_handle = new_create_dissector_handle(dissect_llrp, proto_llrp);
+ dissector_add_uint("tcp.port", LLRP_PORT, llrp_handle);
+}
+
+
+/*
+ * Editor modelines - http://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vi: set shiftwidth=4 tabstop=4 expandtab:
+ * :indentSize=4:tabSize=4:noTabs=true:
+ */
diff --git a/epan/dissectors/packet-llt.c b/epan/dissectors/packet-llt.c
index 463dd26532..7325eaf297 100644
--- a/epan/dissectors/packet-llt.c
+++ b/epan/dissectors/packet-llt.c
@@ -27,8 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-lmp.c b/epan/dissectors/packet-lmp.c
index 2c37bf10ea..749f96496e 100644
--- a/epan/dissectors/packet-lmp.c
+++ b/epan/dissectors/packet-lmp.c
@@ -2359,7 +2359,7 @@ proto_register_lmp(void)
FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }},
{&hf_lmp_filter[LMPF_VAL_BEGIN_VERIFY_ENCTYPE],
{ "Encoding Type", "lmp.begin_verify.enctype",
- FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(&gmpls_lsp_enc_rvals), 0x0,
+ FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(gmpls_lsp_enc_rvals), 0x0,
NULL, HFILL }},
{&hf_lmp_filter[LMPF_VAL_VERIFY_ID],
{ "Verify-ID", "lmp.verifyid", FT_UINT32, BASE_DEC, NULL, 0x0,
@@ -2413,10 +2413,10 @@ proto_register_lmp(void)
NULL, HFILL }},
{&hf_lmp_filter[LMPF_VAL_DATA_LINK_SUBOBJ_SWITCHING_TYPE],
{ "Interface Switching Capability", "lmp.data_link_switching", FT_UINT8, BASE_DEC|BASE_RANGE_STRING,
- RVALS(&gmpls_switching_type_rvals), 0x0, NULL, HFILL }},
+ RVALS(gmpls_switching_type_rvals), 0x0, NULL, HFILL }},
{&hf_lmp_filter[LMPF_VAL_DATA_LINK_SUBOBJ_LSP_ENCODING],
{ "LSP Encoding Type", "lmp.data_link_encoding", FT_UINT8, BASE_DEC|BASE_RANGE_STRING,
- RVALS(&gmpls_lsp_enc_rvals), 0x0, NULL, HFILL }},
+ RVALS(gmpls_lsp_enc_rvals), 0x0, NULL, HFILL }},
{&hf_lmp_filter[LMPF_VAL_ERROR],
{ "Error Code", "lmp.error", FT_UINT32, BASE_HEX, NULL, 0x0,
@@ -2675,10 +2675,10 @@ proto_register_lmp(void)
NULL, HFILL }},
{&hf_lmp_filter[LMPF_VAL_LAD_INFO_SUBOBJ_SWITCHING_TYPE],
{ "Interface Switching Capability", "lmp.lad_switching", FT_UINT8, BASE_DEC|BASE_RANGE_STRING,
- RVALS(&gmpls_switching_type_rvals), 0x0, NULL, HFILL }},
+ RVALS(gmpls_switching_type_rvals), 0x0, NULL, HFILL }},
{&hf_lmp_filter[LMPF_VAL_LAD_INFO_SUBOBJ_LSP_ENCODING],
{ "LSP Encoding Type", "lmp.lad_encoding", FT_UINT8, BASE_DEC|BASE_RANGE_STRING,
- RVALS(&gmpls_lsp_enc_rvals), 0x0, NULL, HFILL }},
+ RVALS(gmpls_lsp_enc_rvals), 0x0, NULL, HFILL }},
};
for (i=0; i<NUM_LMP_SUBTREES; i++) {
diff --git a/epan/dissectors/packet-lpp.c b/epan/dissectors/packet-lpp.c
index d330ac824a..f2e5246dfa 100644
--- a/epan/dissectors/packet-lpp.c
+++ b/epan/dissectors/packet-lpp.c
@@ -7867,7 +7867,7 @@ dissect_lpp_LPP_Message(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
proto_tree_add_item(tree, proto_lpp, tvb, 0, -1, ENC_NA);
- col_append_str(actx->pinfo->cinfo, COL_PROTOCOL, "/LPP");
+ col_append_sep_str(actx->pinfo->cinfo, COL_PROTOCOL, "/", "LPP");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_lpp_LPP_Message, LPP_Message_sequence);
diff --git a/epan/dissectors/packet-lsc.c b/epan/dissectors/packet-lsc.c
index 3d7c89c125..1e56e16746 100644
--- a/epan/dissectors/packet-lsc.c
+++ b/epan/dissectors/packet-lsc.c
@@ -27,8 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-lte-rrc.c b/epan/dissectors/packet-lte-rrc.c
index c24f60c1db..0e9621d209 100644
--- a/epan/dissectors/packet-lte-rrc.c
+++ b/epan/dissectors/packet-lte-rrc.c
@@ -9,7 +9,7 @@
/* packet-lte-rrc-template.c
* Routines for Evolved Universal Terrestrial Radio Access (E-UTRA);
* Radio Resource Control (RRC) protocol specification
- * (3GPP TS 36.331 V10.4.0 Release 10) packet dissection
+ * (3GPP TS 36.331 V10.5.0 Release 10) packet dissection
* Copyright 2008, Vincent Helfre
*
* $Id$
@@ -112,6 +112,33 @@ static gint lte_rrc_si_or_psi_geran_val = -1;
#define maxLogMeas_r10 4060
#define maxReestabInfo 32
+typedef enum _T_targetRAT_Type_enum {
+ T_targetRAT_Type_utra = 0,
+ T_targetRAT_Type_geran = 1,
+ T_targetRAT_Type_cdma2000_1XRTT = 2,
+ T_targetRAT_Type_cdma2000_HRPD = 3,
+ T_targetRAT_Type_spare4 = 4,
+ T_targetRAT_Type_spare3 = 5,
+ T_targetRAT_Type_spare2 = 6,
+ T_targetRAT_Type_spare1 = 7
+} T_targetRAT_Type_enum;
+
+typedef enum _SI_OrPSI_GERAN_enum {
+ SI_OrPSI_GERAN_si = 0,
+ SI_OrPSI_GERAN_psi = 1
+} SI_OrPSI_GERAN_enum;
+
+typedef enum _RAT_Type_enum {
+ RAT_Type_eutra = 0,
+ RAT_Type_utra = 1,
+ RAT_Type_geran_cs = 2,
+ RAT_Type_geran_ps = 3,
+ RAT_Type_cdma2000_1XRTT = 4,
+ RAT_Type_spare3 = 5,
+ RAT_Type_spare2 = 6,
+ RAT_Type_spare1 = 7
+} RAT_Type_enum;
+
/*--- End of included file: packet-lte-rrc-val.h ---*/
#line 59 "../../asn1/lte-rrc/packet-lte-rrc-template.c"
@@ -135,6 +162,7 @@ static int hf_lte_rrc_lte_rrc_HandoverCommand_PDU = -1; /* HandoverCommand */
static int hf_lte_rrc_lte_rrc_HandoverPreparationInformation_PDU = -1; /* HandoverPreparationInformation */
static int hf_lte_rrc_lte_rrc_UERadioAccessCapabilityInformation_PDU = -1; /* UERadioAccessCapabilityInformation */
static int hf_lte_rrc_SystemInformationBlockType1_PDU = -1; /* SystemInformationBlockType1 */
+static int hf_lte_rrc_UE_EUTRA_Capability_v9a0_IEs_PDU = -1; /* UE_EUTRA_Capability_v9a0_IEs */
static int hf_lte_rrc_SystemInformationBlockType1_v890_IEs_PDU = -1; /* SystemInformationBlockType1_v890_IEs */
static int hf_lte_rrc_message = -1; /* BCCH_BCH_MessageType */
static int hf_lte_rrc_message_01 = -1; /* BCCH_DL_SCH_MessageType */
@@ -461,10 +489,10 @@ static int hf_lte_rrc_criticalExtensions_20 = -1; /* T_criticalExtensions_20 */
static int hf_lte_rrc_c1_20 = -1; /* T_c1_20 */
static int hf_lte_rrc_rrcConnectionReject_r8 = -1; /* RRCConnectionReject_r8_IEs */
static int hf_lte_rrc_criticalExtensionsFuture_20 = -1; /* T_criticalExtensionsFuture_20 */
-static int hf_lte_rrc_waitTime = -1; /* INTEGER_1_16 */
+static int hf_lte_rrc_waitTime = -1; /* T_waitTime */
static int hf_lte_rrc_nonCriticalExtension_50 = -1; /* RRCConnectionReject_v8a0_IEs */
static int hf_lte_rrc_nonCriticalExtension_51 = -1; /* RRCConnectionReject_v1020_IEs */
-static int hf_lte_rrc_extendedWaitTime_r10 = -1; /* INTEGER_1_1800 */
+static int hf_lte_rrc_extendedWaitTime_r10 = -1; /* T_extendedWaitTime_r10 */
static int hf_lte_rrc_nonCriticalExtension_52 = -1; /* T_nonCriticalExtension_23 */
static int hf_lte_rrc_criticalExtensions_21 = -1; /* T_criticalExtensions_21 */
static int hf_lte_rrc_c1_21 = -1; /* T_c1_21 */
@@ -481,6 +509,7 @@ static int hf_lte_rrc_utra_FDD_r9 = -1; /* CellInfoListUTRA_FDD_r9 */
static int hf_lte_rrc_utra_TDD_r9 = -1; /* CellInfoListUTRA_TDD_r9 */
static int hf_lte_rrc_utra_TDD_r10 = -1; /* CellInfoListUTRA_TDD_r10 */
static int hf_lte_rrc_nonCriticalExtension_55 = -1; /* RRCConnectionRelease_v1020_IEs */
+static int hf_lte_rrc_extendedWaitTime_r10_01 = -1; /* T_extendedWaitTime_r10_01 */
static int hf_lte_rrc_nonCriticalExtension_56 = -1; /* T_nonCriticalExtension_24 */
static int hf_lte_rrc_eutra = -1; /* ARFCN_ValueEUTRA */
static int hf_lte_rrc_geran_01 = -1; /* CarrierFreqsGERAN */
@@ -521,7 +550,7 @@ static int hf_lte_rrc_utra_BCCH_Container_r9_01 = -1; /* T_utra_BCCH_Container_
static int hf_lte_rrc_CellInfoListUTRA_TDD_r10_item = -1; /* CellInfoUTRA_TDD_r10 */
static int hf_lte_rrc_physCellId_r10_01 = -1; /* PhysCellIdUTRA_TDD */
static int hf_lte_rrc_carrierFreq_r10_01 = -1; /* ARFCN_ValueUTRA */
-static int hf_lte_rrc_utra_BCCH_Container_r10 = -1; /* OCTET_STRING */
+static int hf_lte_rrc_utra_BCCH_Container_r10 = -1; /* T_utra_BCCH_Container_r10 */
static int hf_lte_rrc_criticalExtensions_22 = -1; /* T_criticalExtensions_22 */
static int hf_lte_rrc_rrcConnectionRequest_r8 = -1; /* RRCConnectionRequest_r8_IEs */
static int hf_lte_rrc_criticalExtensionsFuture_22 = -1; /* T_criticalExtensionsFuture_22 */
@@ -616,7 +645,7 @@ static int hf_lte_rrc_si_Periodicity = -1; /* T_si_Periodicity */
static int hf_lte_rrc_sib_MappingInfo = -1; /* SIB_MappingInfo */
static int hf_lte_rrc_SIB_MappingInfo_item = -1; /* SIB_Type */
static int hf_lte_rrc_q_QualMin_r9 = -1; /* Q_QualMin_r9 */
-static int hf_lte_rrc_q_QualMinOffset_r9 = -1; /* INTEGER_1_8 */
+static int hf_lte_rrc_q_QualMinOffset_r9 = -1; /* T_q_QualMinOffset_r9 */
static int hf_lte_rrc_criticalExtensions_29 = -1; /* T_criticalExtensions_29 */
static int hf_lte_rrc_c1_25 = -1; /* T_c1_25 */
static int hf_lte_rrc_ueCapabilityEnquiry_r8 = -1; /* UECapabilityEnquiry_r8_IEs */
@@ -667,7 +696,7 @@ static int hf_lte_rrc_failedPCellId_r10 = -1; /* T_failedPCellId_r10 */
static int hf_lte_rrc_cellGlobalId_r10 = -1; /* CellGlobalIdEUTRA */
static int hf_lte_rrc_pci_arfcn_r10 = -1; /* T_pci_arfcn_r10 */
static int hf_lte_rrc_reestablishmentCellId_r10 = -1; /* CellGlobalIdEUTRA */
-static int hf_lte_rrc_timeConnFailure_r10 = -1; /* INTEGER_0_1023 */
+static int hf_lte_rrc_timeConnFailure_r10 = -1; /* T_timeConnFailure_r10 */
static int hf_lte_rrc_connectionFailureType_r10 = -1; /* T_connectionFailureType_r10 */
static int hf_lte_rrc_previousPCellId_r10 = -1; /* CellGlobalIdEUTRA */
static int hf_lte_rrc_MeasResultList2EUTRA_r9_item = -1; /* MeasResult2EUTRA_r9 */
@@ -777,10 +806,11 @@ static int hf_lte_rrc_t_ReselectionUTRA = -1; /* T_Reselection */
static int hf_lte_rrc_t_ReselectionUTRA_SF = -1; /* SpeedStateScaleFactors */
static int hf_lte_rrc_CarrierFreqListUTRA_FDD_item = -1; /* CarrierFreqUTRA_FDD */
static int hf_lte_rrc_q_RxLevMin_01 = -1; /* INTEGER_M60_M13 */
-static int hf_lte_rrc_p_MaxUTRA = -1; /* INTEGER_M50_33 */
-static int hf_lte_rrc_q_QualMin = -1; /* INTEGER_M24_0 */
+static int hf_lte_rrc_p_MaxUTRA = -1; /* T_p_MaxUTRA */
+static int hf_lte_rrc_q_QualMin = -1; /* T_q_QualMin */
static int hf_lte_rrc_threshX_Q_r9_01 = -1; /* T_threshX_Q_r9_01 */
static int hf_lte_rrc_CarrierFreqListUTRA_TDD_item = -1; /* CarrierFreqUTRA_TDD */
+static int hf_lte_rrc_p_MaxUTRA_01 = -1; /* T_p_MaxUTRA_01 */
static int hf_lte_rrc_t_ReselectionGERAN = -1; /* T_Reselection */
static int hf_lte_rrc_t_ReselectionGERAN_SF = -1; /* SpeedStateScaleFactors */
static int hf_lte_rrc_carrierFreqsInfoList = -1; /* CarrierFreqsInfoListGERAN */
@@ -788,7 +818,7 @@ static int hf_lte_rrc_CarrierFreqsInfoListGERAN_item = -1; /* CarrierFreqsInfoG
static int hf_lte_rrc_commonInfo = -1; /* T_commonInfo */
static int hf_lte_rrc_ncc_Permitted = -1; /* BIT_STRING_SIZE_8 */
static int hf_lte_rrc_q_RxLevMin_02 = -1; /* INTEGER_0_45 */
-static int hf_lte_rrc_p_MaxGERAN = -1; /* INTEGER_0_39 */
+static int hf_lte_rrc_p_MaxGERAN = -1; /* T_p_MaxGERAN */
static int hf_lte_rrc_systemTimeInfo = -1; /* SystemTimeInfoCDMA2000 */
static int hf_lte_rrc_searchWindowSize = -1; /* INTEGER_0_15 */
static int hf_lte_rrc_parametersHRPD = -1; /* T_parametersHRPD */
@@ -833,7 +863,7 @@ static int hf_lte_rrc_ac_Barring15_r9 = -1; /* INTEGER_0_7 */
static int hf_lte_rrc_ac_BarringMsg_r9 = -1; /* INTEGER_0_7 */
static int hf_lte_rrc_ac_BarringReg_r9 = -1; /* INTEGER_0_7 */
static int hf_lte_rrc_ac_BarringEmg_r9 = -1; /* INTEGER_0_7 */
-static int hf_lte_rrc_hnb_Name = -1; /* OCTET_STRING_SIZE_1_48 */
+static int hf_lte_rrc_hnb_Name = -1; /* T_hnb_Name */
static int hf_lte_rrc_messageIdentifier = -1; /* BIT_STRING_SIZE_16 */
static int hf_lte_rrc_serialNumber = -1; /* BIT_STRING_SIZE_16 */
static int hf_lte_rrc_warningType = -1; /* OCTET_STRING_SIZE_2 */
@@ -949,7 +979,7 @@ static int hf_lte_rrc_setup_09 = -1; /* T_setup_09 */
static int hf_lte_rrc_periodicPHR_Timer = -1; /* T_periodicPHR_Timer */
static int hf_lte_rrc_prohibitPHR_Timer = -1; /* T_prohibitPHR_Timer */
static int hf_lte_rrc_dl_PathlossChange = -1; /* T_dl_PathlossChange */
-static int hf_lte_rrc_sr_ProhibitTimer_r9 = -1; /* INTEGER_0_7 */
+static int hf_lte_rrc_sr_ProhibitTimer_r9 = -1; /* T_sr_ProhibitTimer_r9 */
static int hf_lte_rrc_mac_MainConfig_v1020 = -1; /* T_mac_MainConfig_v1020 */
static int hf_lte_rrc_sCellDeactivationTimer_r10 = -1; /* T_sCellDeactivationTimer_r10 */
static int hf_lte_rrc_extendedBSR_Sizes_r10 = -1; /* T_extendedBSR_Sizes_r10 */
@@ -977,7 +1007,7 @@ static int hf_lte_rrc_sf2048 = -1; /* INTEGER_0_2047 */
static int hf_lte_rrc_sf2560 = -1; /* INTEGER_0_2559 */
static int hf_lte_rrc_shortDRX = -1; /* T_shortDRX */
static int hf_lte_rrc_shortDRX_Cycle = -1; /* T_shortDRX_Cycle */
-static int hf_lte_rrc_drxShortCycleTimer = -1; /* INTEGER_1_16 */
+static int hf_lte_rrc_drxShortCycleTimer = -1; /* T_drxShortCycleTimer */
static int hf_lte_rrc_discardTimer = -1; /* T_discardTimer */
static int hf_lte_rrc_rlc_AM = -1; /* T_rlc_AM */
static int hf_lte_rrc_statusReportRequired = -1; /* BOOLEAN */
@@ -998,7 +1028,7 @@ static int hf_lte_rrc_profile0x0102 = -1; /* BOOLEAN */
static int hf_lte_rrc_profile0x0103 = -1; /* BOOLEAN */
static int hf_lte_rrc_profile0x0104 = -1; /* BOOLEAN */
static int hf_lte_rrc_rn_IntegrityProtection_r10 = -1; /* T_rn_IntegrityProtection_r10 */
-static int hf_lte_rrc_referenceSignalPower = -1; /* INTEGER_M60_50 */
+static int hf_lte_rrc_referenceSignalPower = -1; /* T_referenceSignalPower */
static int hf_lte_rrc_p_b = -1; /* INTEGER_0_3 */
static int hf_lte_rrc_p_a = -1; /* T_p_a */
static int hf_lte_rrc_phich_Duration = -1; /* T_phich_Duration */
@@ -1236,7 +1266,7 @@ static int hf_lte_rrc_setup_19 = -1; /* T_setup_18 */
static int hf_lte_rrc_srs_Bandwidth = -1; /* T_srs_Bandwidth */
static int hf_lte_rrc_srs_HoppingBandwidth = -1; /* T_srs_HoppingBandwidth */
static int hf_lte_rrc_freqDomainPosition = -1; /* INTEGER_0_23 */
-static int hf_lte_rrc_duration = -1; /* BOOLEAN */
+static int hf_lte_rrc_duration = -1; /* T_duration */
static int hf_lte_rrc_srs_ConfigIndex = -1; /* INTEGER_0_1023 */
static int hf_lte_rrc_transmissionComb = -1; /* INTEGER_0_1 */
static int hf_lte_rrc_cyclicShift_01 = -1; /* T_cyclicShift */
@@ -1268,8 +1298,8 @@ static int hf_lte_rrc_setup_24 = -1; /* T_setup_23 */
static int hf_lte_rrc_semiPersistSchedIntervalUL = -1; /* T_semiPersistSchedIntervalUL */
static int hf_lte_rrc_implicitReleaseAfter = -1; /* T_implicitReleaseAfter */
static int hf_lte_rrc_p0_Persistent = -1; /* T_p0_Persistent */
-static int hf_lte_rrc_p0_NominalPUSCH_Persistent = -1; /* INTEGER_M126_24 */
-static int hf_lte_rrc_p0_UE_PUSCH_Persistent = -1; /* INTEGER_M8_7 */
+static int hf_lte_rrc_p0_NominalPUSCH_Persistent = -1; /* T_p0_NominalPUSCH_Persistent */
+static int hf_lte_rrc_p0_UE_PUSCH_Persistent = -1; /* T_p0_UE_PUSCH_Persistent */
static int hf_lte_rrc_twoIntervalsConfig = -1; /* T_twoIntervalsConfig */
static int hf_lte_rrc_N1PUCCH_AN_PersistentList_item = -1; /* INTEGER_0_2047 */
static int hf_lte_rrc_subframeAssignment = -1; /* T_subframeAssignment */
@@ -1279,24 +1309,24 @@ static int hf_lte_rrc_tpc_RNTI = -1; /* BIT_STRING_SIZE_16 */
static int hf_lte_rrc_tpc_Index = -1; /* TPC_Index */
static int hf_lte_rrc_indexOfFormat3 = -1; /* INTEGER_1_15 */
static int hf_lte_rrc_indexOfFormat3A = -1; /* INTEGER_1_31 */
-static int hf_lte_rrc_p0_NominalPUSCH = -1; /* INTEGER_M126_24 */
+static int hf_lte_rrc_p0_NominalPUSCH = -1; /* T_p0_NominalPUSCH */
static int hf_lte_rrc_alpha = -1; /* T_alpha */
-static int hf_lte_rrc_p0_NominalPUCCH = -1; /* INTEGER_M127_M96 */
+static int hf_lte_rrc_p0_NominalPUCCH = -1; /* T_p0_NominalPUCCH */
static int hf_lte_rrc_deltaFList_PUCCH = -1; /* DeltaFList_PUCCH */
static int hf_lte_rrc_deltaPreambleMsg3 = -1; /* INTEGER_M1_6 */
static int hf_lte_rrc_deltaF_PUCCH_Format3_r10 = -1; /* T_deltaF_PUCCH_Format3_r10 */
static int hf_lte_rrc_deltaF_PUCCH_Format1bCS_r10 = -1; /* T_deltaF_PUCCH_Format1bCS_r10 */
-static int hf_lte_rrc_p0_NominalPUSCH_r10 = -1; /* INTEGER_M126_24 */
+static int hf_lte_rrc_p0_NominalPUSCH_r10 = -1; /* T_p0_NominalPUSCH_r10 */
static int hf_lte_rrc_alpha_r10 = -1; /* T_alpha_r10 */
-static int hf_lte_rrc_p0_UE_PUSCH = -1; /* INTEGER_M8_7 */
+static int hf_lte_rrc_p0_UE_PUSCH = -1; /* T_p0_UE_PUSCH */
static int hf_lte_rrc_deltaMCS_Enabled = -1; /* T_deltaMCS_Enabled */
static int hf_lte_rrc_accumulationEnabled = -1; /* BOOLEAN */
-static int hf_lte_rrc_p0_UE_PUCCH = -1; /* INTEGER_M8_7 */
+static int hf_lte_rrc_p0_UE_PUCCH = -1; /* T_p0_UE_PUCCH */
static int hf_lte_rrc_pSRS_Offset = -1; /* INTEGER_0_15 */
static int hf_lte_rrc_filterCoefficient = -1; /* FilterCoefficient */
static int hf_lte_rrc_deltaTxD_OffsetListPUCCH_r10 = -1; /* DeltaTxD_OffsetListPUCCH_r10 */
static int hf_lte_rrc_pSRS_OffsetAp_r10 = -1; /* INTEGER_0_15 */
-static int hf_lte_rrc_p0_UE_PUSCH_r10 = -1; /* INTEGER_M8_7 */
+static int hf_lte_rrc_p0_UE_PUSCH_r10 = -1; /* T_p0_UE_PUSCH_r10 */
static int hf_lte_rrc_deltaMCS_Enabled_r10 = -1; /* T_deltaMCS_Enabled_r10 */
static int hf_lte_rrc_accumulationEnabled_r10 = -1; /* BOOLEAN */
static int hf_lte_rrc_pSRS_Offset_r10 = -1; /* INTEGER_0_15 */
@@ -1390,7 +1420,7 @@ static int hf_lte_rrc_measIdToRemoveList = -1; /* MeasIdToRemoveList */
static int hf_lte_rrc_measIdToAddModList = -1; /* MeasIdToAddModList */
static int hf_lte_rrc_quantityConfig = -1; /* QuantityConfig */
static int hf_lte_rrc_measGapConfig = -1; /* MeasGapConfig */
-static int hf_lte_rrc_s_Measure = -1; /* RSRP_Range */
+static int hf_lte_rrc_s_Measure = -1; /* S_Measure */
static int hf_lte_rrc_speedStatePars = -1; /* T_speedStatePars */
static int hf_lte_rrc_setup_26 = -1; /* T_setup_25 */
static int hf_lte_rrc_timeToTrigger_SF = -1; /* SpeedStateScaleFactors */
@@ -1541,8 +1571,8 @@ static int hf_lte_rrc_si_RequestForHO_r9 = -1; /* T_si_RequestForHO_r9 */
static int hf_lte_rrc_ue_RxTxTimeDiffPeriodical_r9 = -1; /* T_ue_RxTxTimeDiffPeriodical_r9 */
static int hf_lte_rrc_includeLocationInfo_r10 = -1; /* T_includeLocationInfo_r10 */
static int hf_lte_rrc_reportAddNeighMeas_r10 = -1; /* T_reportAddNeighMeas_r10 */
-static int hf_lte_rrc_threshold_RSRP = -1; /* RSRP_Range */
-static int hf_lte_rrc_threshold_RSRQ = -1; /* RSRQ_Range */
+static int hf_lte_rrc_threshold_RSRP = -1; /* Threshold_RSRP_Range */
+static int hf_lte_rrc_threshold_RSRQ = -1; /* Threshold_RSRQ_Range */
static int hf_lte_rrc_triggerType_01 = -1; /* T_triggerType_01 */
static int hf_lte_rrc_event_01 = -1; /* T_event_01 */
static int hf_lte_rrc_eventId_01 = -1; /* T_eventId_01 */
@@ -1562,6 +1592,8 @@ static int hf_lte_rrc_purpose_03 = -1; /* T_purpose_03 */
static int hf_lte_rrc_reportAmount_01 = -1; /* T_reportAmount_01 */
static int hf_lte_rrc_si_RequestForHO_r9_01 = -1; /* T_si_RequestForHO_r9_01 */
static int hf_lte_rrc_reportQuantityUTRA_FDD_r10 = -1; /* T_reportQuantityUTRA_FDD_r10 */
+static int hf_lte_rrc_utra_RSCP_01 = -1; /* Threshold_utra_RSRP */
+static int hf_lte_rrc_utra_EcN0_01 = -1; /* Threshold_utra_EcN0 */
static int hf_lte_rrc_ReportConfigToAddModList_item = -1; /* ReportConfigToAddMod */
static int hf_lte_rrc_reportConfig = -1; /* T_reportConfig */
static int hf_lte_rrc_reportConfigEUTRA = -1; /* ReportConfigEUTRA */
@@ -1609,16 +1641,27 @@ static int hf_lte_rrc_csg_ProximityIndicationParameters_r9 = -1; /* CSG_Proximi
static int hf_lte_rrc_neighCellSI_AcquisitionParameters_r9 = -1; /* NeighCellSI_AcquisitionParameters_r9 */
static int hf_lte_rrc_son_Parameters_r9 = -1; /* SON_Parameters_r9 */
static int hf_lte_rrc_nonCriticalExtension_88 = -1; /* UE_EUTRA_Capability_v940_IEs */
+static int hf_lte_rrc_lateNonCriticalExtension_01 = -1; /* T_lateNonCriticalExtension */
static int hf_lte_rrc_nonCriticalExtension_89 = -1; /* UE_EUTRA_Capability_v1020_IEs */
+static int hf_lte_rrc_featureGroupIndRel9Add_r9 = -1; /* T_featureGroupIndRel9Add_r9 */
+static int hf_lte_rrc_fdd_Add_UE_EUTRA_Capabilities_r9 = -1; /* UE_EUTRA_CapabilityAddXDD_Mode_r9 */
+static int hf_lte_rrc_tdd_Add_UE_EUTRA_Capabilities_r9 = -1; /* UE_EUTRA_CapabilityAddXDD_Mode_r9 */
+static int hf_lte_rrc_nonCriticalExtension_90 = -1; /* T_nonCriticalExtension_38 */
static int hf_lte_rrc_ue_Category_v1020 = -1; /* INTEGER_6_8 */
static int hf_lte_rrc_phyLayerParameters_v1020 = -1; /* PhyLayerParameters_v1020 */
static int hf_lte_rrc_rf_Parameters_v1020 = -1; /* RF_Parameters_v1020 */
static int hf_lte_rrc_measParameters_v1020 = -1; /* MeasParameters_v1020 */
-static int hf_lte_rrc_featureGroupIndicators_v1020 = -1; /* T_featureGroupIndicators_v1020 */
+static int hf_lte_rrc_featureGroupIndRel10_r10 = -1; /* T_featureGroupIndRel10_r10 */
static int hf_lte_rrc_interRAT_ParametersCDMA2000_v1020 = -1; /* IRAT_ParametersCDMA2000_1XRTT_v1020 */
static int hf_lte_rrc_ue_BasedNetwPerfMeasParameters_r10 = -1; /* UE_BasedNetwPerfMeasParameters_r10 */
static int hf_lte_rrc_interRAT_ParametersUTRA_TDD_v1020 = -1; /* IRAT_ParametersUTRA_TDD_v1020 */
-static int hf_lte_rrc_nonCriticalExtension_90 = -1; /* T_nonCriticalExtension_38 */
+static int hf_lte_rrc_nonCriticalExtension_91 = -1; /* T_nonCriticalExtension_39 */
+static int hf_lte_rrc_phyLayerParameters_r9 = -1; /* PhyLayerParameters */
+static int hf_lte_rrc_featureGroupIndicators_r9 = -1; /* T_featureGroupIndicators_r9 */
+static int hf_lte_rrc_featureGroupIndRel9Add_r9_01 = -1; /* T_featureGroupIndRel9Add_r9_01 */
+static int hf_lte_rrc_interRAT_ParametersGERAN_r9 = -1; /* IRAT_ParametersGERAN */
+static int hf_lte_rrc_interRAT_ParametersUTRA_r9 = -1; /* IRAT_ParametersUTRA_v920 */
+static int hf_lte_rrc_interRAT_ParametersCDMA2000_r9 = -1; /* IRAT_ParametersCDMA2000_1XRTT_v920 */
static int hf_lte_rrc_supportedROHC_Profiles = -1; /* T_supportedROHC_Profiles */
static int hf_lte_rrc_maxNumberROHC_ContextSessions = -1; /* T_maxNumberROHC_ContextSessions */
static int hf_lte_rrc_ue_TxAntennaSelectionSupported = -1; /* BOOLEAN */
@@ -1738,7 +1781,7 @@ static int hf_lte_rrc_c1_31 = -1; /* T_c1_31 */
static int hf_lte_rrc_handoverCommand_r8 = -1; /* HandoverCommand_r8_IEs */
static int hf_lte_rrc_criticalExtensionsFuture_35 = -1; /* T_criticalExtensionsFuture_35 */
static int hf_lte_rrc_handoverCommandMessage = -1; /* T_handoverCommandMessage */
-static int hf_lte_rrc_nonCriticalExtension_91 = -1; /* T_nonCriticalExtension_39 */
+static int hf_lte_rrc_nonCriticalExtension_92 = -1; /* T_nonCriticalExtension_40 */
static int hf_lte_rrc_criticalExtensions_36 = -1; /* T_criticalExtensions_36 */
static int hf_lte_rrc_c1_32 = -1; /* T_c1_32 */
static int hf_lte_rrc_handoverPreparationInformation_r8 = -1; /* HandoverPreparationInformation_r8_IEs */
@@ -1747,15 +1790,15 @@ static int hf_lte_rrc_ue_RadioAccessCapabilityInfo = -1; /* UE_CapabilityRAT_Co
static int hf_lte_rrc_as_Config = -1; /* AS_Config */
static int hf_lte_rrc_rrm_Config = -1; /* RRM_Config */
static int hf_lte_rrc_as_Context = -1; /* AS_Context */
-static int hf_lte_rrc_nonCriticalExtension_92 = -1; /* HandoverPreparationInformation_v920_IEs */
+static int hf_lte_rrc_nonCriticalExtension_93 = -1; /* HandoverPreparationInformation_v920_IEs */
static int hf_lte_rrc_ue_ConfigRelease_r9 = -1; /* T_ue_ConfigRelease_r9 */
-static int hf_lte_rrc_nonCriticalExtension_93 = -1; /* T_nonCriticalExtension_40 */
+static int hf_lte_rrc_nonCriticalExtension_94 = -1; /* T_nonCriticalExtension_41 */
static int hf_lte_rrc_criticalExtensions_37 = -1; /* T_criticalExtensions_37 */
static int hf_lte_rrc_c1_33 = -1; /* T_c1_33 */
static int hf_lte_rrc_ueRadioAccessCapabilityInformation_r8 = -1; /* UERadioAccessCapabilityInformation_r8_IEs */
static int hf_lte_rrc_criticalExtensionsFuture_37 = -1; /* T_criticalExtensionsFuture_37 */
static int hf_lte_rrc_ue_RadioAccessCapabilityInfo_01 = -1; /* T_ue_RadioAccessCapabilityInfo */
-static int hf_lte_rrc_nonCriticalExtension_94 = -1; /* T_nonCriticalExtension_41 */
+static int hf_lte_rrc_nonCriticalExtension_95 = -1; /* T_nonCriticalExtension_42 */
static int hf_lte_rrc_sourceMeasConfig = -1; /* MeasConfig */
static int hf_lte_rrc_sourceRadioResourceConfig = -1; /* RadioResourceConfigDedicated */
static int hf_lte_rrc_sourceSecurityAlgorithmConfig = -1; /* SecurityAlgorithmConfig */
@@ -1813,6 +1856,38 @@ static int hf_lte_rrc_eutra_cap_feat_group_ind_29 = -1;
static int hf_lte_rrc_eutra_cap_feat_group_ind_30 = -1;
static int hf_lte_rrc_eutra_cap_feat_group_ind_31 = -1;
static int hf_lte_rrc_eutra_cap_feat_group_ind_32 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_33 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_34 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_35 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_36 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_37 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_38 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_39 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_40 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_41 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_42 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_43 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_44 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_45 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_46 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_47 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_48 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_49 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_50 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_51 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_52 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_53 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_54 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_55 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_56 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_57 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_58 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_59 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_60 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_61 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_62 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_63 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_64 = -1;
static int hf_lte_rrc_eutra_cap_feat_group_ind_101 = -1;
static int hf_lte_rrc_eutra_cap_feat_group_ind_102 = -1;
static int hf_lte_rrc_eutra_cap_feat_group_ind_103 = -1;
@@ -2609,8 +2684,11 @@ static gint ett_lte_rrc_UE_EUTRA_Capability = -1;
static gint ett_lte_rrc_T_interRAT_Parameters = -1;
static gint ett_lte_rrc_UE_EUTRA_Capability_v920_IEs = -1;
static gint ett_lte_rrc_UE_EUTRA_Capability_v940_IEs = -1;
-static gint ett_lte_rrc_UE_EUTRA_Capability_v1020_IEs = -1;
+static gint ett_lte_rrc_UE_EUTRA_Capability_v9a0_IEs = -1;
static gint ett_lte_rrc_T_nonCriticalExtension_38 = -1;
+static gint ett_lte_rrc_UE_EUTRA_Capability_v1020_IEs = -1;
+static gint ett_lte_rrc_T_nonCriticalExtension_39 = -1;
+static gint ett_lte_rrc_UE_EUTRA_CapabilityAddXDD_Mode_r9 = -1;
static gint ett_lte_rrc_PDCP_Parameters = -1;
static gint ett_lte_rrc_T_supportedROHC_Profiles = -1;
static gint ett_lte_rrc_PhyLayerParameters = -1;
@@ -2680,20 +2758,20 @@ static gint ett_lte_rrc_T_criticalExtensions_35 = -1;
static gint ett_lte_rrc_T_c1_31 = -1;
static gint ett_lte_rrc_T_criticalExtensionsFuture_35 = -1;
static gint ett_lte_rrc_HandoverCommand_r8_IEs = -1;
-static gint ett_lte_rrc_T_nonCriticalExtension_39 = -1;
+static gint ett_lte_rrc_T_nonCriticalExtension_40 = -1;
static gint ett_lte_rrc_HandoverPreparationInformation = -1;
static gint ett_lte_rrc_T_criticalExtensions_36 = -1;
static gint ett_lte_rrc_T_c1_32 = -1;
static gint ett_lte_rrc_T_criticalExtensionsFuture_36 = -1;
static gint ett_lte_rrc_HandoverPreparationInformation_r8_IEs = -1;
static gint ett_lte_rrc_HandoverPreparationInformation_v920_IEs = -1;
-static gint ett_lte_rrc_T_nonCriticalExtension_40 = -1;
+static gint ett_lte_rrc_T_nonCriticalExtension_41 = -1;
static gint ett_lte_rrc_UERadioAccessCapabilityInformation = -1;
static gint ett_lte_rrc_T_criticalExtensions_37 = -1;
static gint ett_lte_rrc_T_c1_33 = -1;
static gint ett_lte_rrc_T_criticalExtensionsFuture_37 = -1;
static gint ett_lte_rrc_UERadioAccessCapabilityInformation_r8_IEs = -1;
-static gint ett_lte_rrc_T_nonCriticalExtension_41 = -1;
+static gint ett_lte_rrc_T_nonCriticalExtension_42 = -1;
static gint ett_lte_rrc_AS_Config = -1;
static gint ett_lte_rrc_AS_Context = -1;
static gint ett_lte_rrc_ReestablishmentInfo = -1;
@@ -2704,12 +2782,14 @@ static gint ett_lte_rrc_CandidateCellInfoList_r10 = -1;
static gint ett_lte_rrc_CandidateCellInfo_r10 = -1;
/*--- End of included file: packet-lte-rrc-ett.c ---*/
-#line 134 "../../asn1/lte-rrc/packet-lte-rrc-template.c"
+#line 166 "../../asn1/lte-rrc/packet-lte-rrc-template.c"
static gint ett_lte_rrc_featureGroupIndicators = -1;
-static gint ett_lte_rrc_featureGroupIndicatorsV1020 = -1;
+static gint ett_lte_rrc_featureGroupIndRel9Add = -1;
+static gint ett_lte_rrc_featureGroupIndRel10 = -1;
static gint ett_lte_rrc_neighCellConfig = -1;
static gint ett_lte_rrc_absTimeInfo = -1;
+static gint ett_lte_rrc_nas_SecurityParam = -1;
/* Forward declarations */
static int dissect_DL_DCCH_Message_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);
@@ -2717,12 +2797,12 @@ static int dissect_UECapabilityInformation_PDU(tvbuff_t *tvb _U_, packet_info *p
int dissect_lte_rrc_UE_EUTRA_Capability_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);
static const true_false_string lte_rrc_eutra_cap_feat_group_ind_1_val = {
- "Intra-subframe freq hopping for PUSCH scheduled by UL grant; DCI format 3a; PDSCH transmission mode 5; Aperiodic CQI/PMI/RI report on PUSCH: Mode 2-0 and 2-2 - Supported",
- "Intra-subframe freq hopping for PUSCH scheduled by UL grant; DCI format 3a; PDSCH transmission mode 5; Aperiodic CQI/PMI/RI report on PUSCH: Mode 2-0 and 2-2 - Not supported"
+ "Intra-subframe freq hopping for PUSCH scheduled by UL grant; DCI format 3a; PDSCH transmission mode 5; Aperiodic CQI/PMI/RI report on PUSCH: Mode 2-0 & 2-2 - Supported",
+ "Intra-subframe freq hopping for PUSCH scheduled by UL grant; DCI format 3a; PDSCH transmission mode 5; Aperiodic CQI/PMI/RI report on PUSCH: Mode 2-0 & 2-2 - Not supported"
};
static const true_false_string lte_rrc_eutra_cap_feat_group_ind_2_val = {
- "Simultaneous CQI and ACK/NACK on PUCCH (format 2a/2b); Absolute TPC command for PUSCH; Resource alloc type 1 for PDSCH; Periodic CQI/PMI/RI report on PUCCH: Mode 2-0 and 2-1 - Supported",
- "Simultaneous CQI and ACK/NACK on PUCCH (format 2a/2b); Absolute TPC command for PUSCH; Resource alloc type 1 for PDSCH; Periodic CQI/PMI/RI report on PUCCH: Mode 2-0 and 2-1 - Not supported"
+ "Simultaneous CQI & ACK/NACK on PUCCH (format 2a/2b); Absolute TPC command for PUSCH; Resource alloc type 1 for PDSCH; Periodic CQI/PMI/RI report on PUCCH: Mode 2-0 & 2-1 - Supported",
+ "Simultaneous CQI & ACK/NACK on PUCCH (format 2a/2b); Absolute TPC command for PUSCH; Resource alloc type 1 for PDSCH; Periodic CQI/PMI/RI report on PUCCH: Mode 2-0 & 2-1 - Not supported"
};
static const true_false_string lte_rrc_eutra_cap_feat_group_ind_3_val = {
"5bit RLC UM SN; 7bit PDCP SN - Supported",
@@ -2844,6 +2924,134 @@ static const true_false_string lte_rrc_eutra_cap_feat_group_ind_32_val = {
"Undefined - Supported",
"Undefined - Not supported"
};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_33_val = {
+ "Inter-RAT ANR features for UTRAN - Supported",
+ "Inter-RAT ANR features for UTRAN - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_34_val = {
+ "Inter-RAT ANR features for GERAN - Supported",
+ "Inter-RAT ANR features for GERAN - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_35_val = {
+ "Inter-RAT ANR features for 1xRTT - Supported",
+ "Inter-RAT ANR features for 1xRTT - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_36_val = {
+ "Inter-RAT ANR features for HRPD - Supported",
+ "Inter-RAT ANR features for HRPD - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_37_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_38_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_39_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_40_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_41_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_42_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_43_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_44_val = {
+ "DCI format 3a; Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-0 & 2-2; PUCCH format 2a & 2b; Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-0 & 2-1 - Supported",
+ "DCI format 3a; Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-0 & 2-2; PUCCH format 2a & 2b; Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-0 & 2-1 - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_45_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_46_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_47_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_48_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_49_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_50_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_51_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_52_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_53_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_54_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_55_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_56_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_57_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_58_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_59_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_60_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_61_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_62_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_63_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
+static const true_false_string lte_rrc_eutra_cap_feat_group_ind_64_val = {
+ "Undefined - Supported",
+ "Undefined - Not supported"
+};
static const true_false_string lte_rrc_eutra_cap_feat_group_ind_101_val = {
"DMRS with OCC (orthogonal cover code) and SGH (sequence group hopping) disabling - Supported",
"DMRS with OCC (orthogonal cover code) and SGH (sequence group hopping) disabling - Not supported"
@@ -2973,10 +3181,1122 @@ static const true_false_string lte_rrc_eutra_cap_feat_group_ind_132_val = {
"Undefined - Not supported"
};
+static const value_string lte_rrc_q_RxLevMin_vals[] = {
+ { -70, "-140dBm"},
+ { -69, "-138dBm"},
+ { -68, "-136dBm"},
+ { -67, "-134dBm"},
+ { -66, "-132dBm"},
+ { -65, "-130dBm"},
+ { -64, "-128dBm"},
+ { -63, "-126dBm"},
+ { -62, "-124dBm"},
+ { -61, "-122dBm"},
+ { -60, "-120dBm"},
+ { -59, "-118dBm"},
+ { -58, "-116dBm"},
+ { -57, "-114dBm"},
+ { -56, "-112dBm"},
+ { -55, "-110dBm"},
+ { -54, "-108dBm"},
+ { -53, "-106dBm"},
+ { -52, "-104dBm"},
+ { -51, "-102dBm"},
+ { -50, "-100dBm"},
+ { -49, "-98dBm"},
+ { -48, "-96dBm"},
+ { -47, "-94dBm"},
+ { -46, "-92dBm"},
+ { -45, "-90dBm"},
+ { -44, "-88dBm"},
+ { -43, "-86dBm"},
+ { -42, "-84dBm"},
+ { -41, "-82dBm"},
+ { -40, "-80dBm"},
+ { -39, "-78dBm"},
+ { -38, "-76dBm"},
+ { -37, "-74dBm"},
+ { -36, "-72dBm"},
+ { -35, "-70dBm"},
+ { -34, "-68dBm"},
+ { -33, "-66dBm"},
+ { -32, "-64dBm"},
+ { -31, "-62dBm"},
+ { -30, "-60dBm"},
+ { -29, "-58dBm"},
+ { -28, "-56dBm"},
+ { -27, "-54dBm"},
+ { -26, "-52dBm"},
+ { -25, "-50dBm"},
+ { -24, "-48dBm"},
+ { -23, "-46dBm"},
+ { -22, "-44dBm"},
+ { 0, NULL}
+};
+static value_string_ext lte_rrc_q_RxLevMin_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_q_RxLevMin_vals);
+
+static const value_string lte_rrc_q_RxLevMinOffset_vals[] = {
+ { 1, "2dB"},
+ { 2, "4dB"},
+ { 3, "6dB"},
+ { 4, "8dB"},
+ { 5, "10dB"},
+ { 6, "12dB"},
+ { 7, "14dB"},
+ { 8, "16dB"},
+ { 0, NULL}
+};
+
+static const value_string lte_rrc_utra_q_RxLevMin_vals[] = {
+ { -60, "-119dBm"},
+ { -59, "-117dBm"},
+ { -58, "-115dBm"},
+ { -57, "-113dBm"},
+ { -56, "-111dBm"},
+ { -55, "-109dBm"},
+ { -54, "-107dBm"},
+ { -53, "-105dBm"},
+ { -52, "-103dBm"},
+ { -51, "-101dBm"},
+ { -50, "-99dBm"},
+ { -49, "-97dBm"},
+ { -48, "-95dBm"},
+ { -47, "-93dBm"},
+ { -46, "-91dBm"},
+ { -45, "-89dBm"},
+ { -44, "-87dBm"},
+ { -43, "-85dBm"},
+ { -42, "-83dBm"},
+ { -41, "-81dBm"},
+ { -40, "-79dBm"},
+ { -39, "-77dBm"},
+ { -38, "-75dBm"},
+ { -37, "-73dBm"},
+ { -36, "-71dBm"},
+ { -35, "-69dBm"},
+ { -34, "-67dBm"},
+ { -33, "-65dBm"},
+ { -32, "-63dBm"},
+ { -31, "-61dBm"},
+ { -30, "-59dBm"},
+ { -29, "-57dBm"},
+ { -28, "-55dBm"},
+ { -27, "-53dBm"},
+ { -26, "-51dBm"},
+ { -25, "-49dBm"},
+ { -24, "-47dBm"},
+ { -23, "-45dBm"},
+ { -22, "-43dBm"},
+ { -21, "-41dBm"},
+ { -20, "-39dBm"},
+ { -19, "-37dBm"},
+ { -18, "-35dBm"},
+ { -17, "-33dBm"},
+ { -16, "-31dBm"},
+ { -15, "-29dBm"},
+ { -14, "-27dBm"},
+ { -13, "-25dBm"},
+ { 0, NULL}
+};
+static value_string_ext lte_rrc_utra_q_RxLevMin_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_utra_q_RxLevMin_vals);
+
+static const value_string lte_rrc_geran_q_RxLevMin_vals[] = {
+ { 0 , "-115dBm"},
+ { 1 , "-113dBm"},
+ { 2 , "-111dBm"},
+ { 3 , "-109dBm"},
+ { 4 , "-107dBm"},
+ { 5 , "-105dBm"},
+ { 6 , "-103dBm"},
+ { 7 , "-101dBm"},
+ { 8 , "-99dBm"},
+ { 9 , "-97dBm"},
+ { 10, "-95dBm"},
+ { 11, "-93dBm"},
+ { 12, "-91dBm"},
+ { 13, "-89dBm"},
+ { 14, "-87dBm"},
+ { 15, "-85dBm"},
+ { 16, "-83dBm"},
+ { 17, "-81dBm"},
+ { 18, "-79dBm"},
+ { 19, "-77dBm"},
+ { 20, "-75dBm"},
+ { 21, "-73dBm"},
+ { 22, "-71dBm"},
+ { 23, "-69dBm"},
+ { 24, "-67dBm"},
+ { 25, "-65dBm"},
+ { 26, "-63dBm"},
+ { 27, "-61dBm"},
+ { 28, "-59dBm"},
+ { 29, "-57dBm"},
+ { 30, "-55dBm"},
+ { 31, "-53dBm"},
+ { 32, "-51dBm"},
+ { 33, "-49dBm"},
+ { 34, "-47dBm"},
+ { 35, "-45dBm"},
+ { 36, "-43dBm"},
+ { 37, "-41dBm"},
+ { 38, "-39dBm"},
+ { 39, "-37dBm"},
+ { 40, "-35dBm"},
+ { 41, "-33dBm"},
+ { 42, "-31dBm"},
+ { 43, "-29dBm"},
+ { 44, "-27dBm"},
+ { 45, "-25dBm"},
+ { 0, NULL}
+};
+static value_string_ext lte_rrc_geran_q_RxLevMin_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_geran_q_RxLevMin_vals);
+
+static const value_string lte_rrc_nomPDSCH_RS_EPRE_Offset_vals[] = {
+ { -1, "-2dB"},
+ { 0, "0dB"},
+ { 1, "2dB"},
+ { 2, "4dB"},
+ { 3, "6dB"},
+ { 4, "8dB"},
+ { 5, "10dB"},
+ { 6, "12dB"},
+ { 0, NULL}
+};
+
+static const value_string lte_rrc_deltaPreambleMsg3_vals[] = {
+ { -1, "-2dB"},
+ { 0, "0dB"},
+ { 1, "2dB"},
+ { 2, "4dB"},
+ { 3, "6dB"},
+ { 4, "8dB"},
+ { 5, "10dB"},
+ { 6, "12dB"},
+ { 0, NULL}
+};
+
+static const value_string lte_rrc_ReselectionThreshold_vals[] = {
+ { 0 , "0dB"},
+ { 1 , "2dB"},
+ { 2 , "4dB"},
+ { 3 , "6dB"},
+ { 4 , "8dB"},
+ { 5 , "10dB"},
+ { 6 , "12dB"},
+ { 7 , "14dB"},
+ { 8 , "16dB"},
+ { 9 , "18dB"},
+ { 10, "20dB"},
+ { 11, "22dB"},
+ { 12, "24dB"},
+ { 13, "26dB"},
+ { 14, "28dB"},
+ { 15, "30dB"},
+ { 16, "32dB"},
+ { 17, "34dB"},
+ { 18, "36dB"},
+ { 19, "38dB"},
+ { 20, "40dB"},
+ { 21, "42dB"},
+ { 22, "44dB"},
+ { 23, "46dB"},
+ { 24, "48dB"},
+ { 25, "50dB"},
+ { 26, "52dB"},
+ { 27, "54dB"},
+ { 28, "56dB"},
+ { 29, "58dB"},
+ { 30, "60dB"},
+ { 31, "62dB"},
+ { 0, NULL}
+};
+static value_string_ext lte_rrc_ReselectionThreshold_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_ReselectionThreshold_vals);
+
+static const value_string lte_rrc_Hysteresis_vals[] = {
+ { 0 , "0dB"},
+ { 1 , "0.5dB"},
+ { 2 , "1dB"},
+ { 3 , "1.5dB"},
+ { 4 , "2dB"},
+ { 5 , "2.5dB"},
+ { 6 , "3dB"},
+ { 7 , "3.5dB"},
+ { 8 , "4dB"},
+ { 9 , "4.5dB"},
+ { 10, "5dB"},
+ { 11, "5.5dB"},
+ { 12, "6dB"},
+ { 13, "6.5dB"},
+ { 14, "7dB"},
+ { 15, "7.5dB"},
+ { 16, "8dB"},
+ { 17, "8.5dB"},
+ { 18, "9dB"},
+ { 19, "9.5dB"},
+ { 20, "10dB"},
+ { 21, "10.5dB"},
+ { 22, "11dB"},
+ { 23, "11.5dB"},
+ { 24, "12dB"},
+ { 25, "12.5dB"},
+ { 26, "13dB"},
+ { 27, "13.5dB"},
+ { 28, "14dB"},
+ { 29, "14.5dB"},
+ { 30, "15dB"},
+ { 0, NULL}
+};
+static value_string_ext lte_rrc_Hysteresis_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_Hysteresis_vals);
+
+static const value_string lte_rrc_s_Measure_vals[] = {
+ { 0, "disabled"},
+ { 1, "-139dBm"},
+ { 2, "-138dBm"},
+ { 3, "-137dBm"},
+ { 4, "-136dBm"},
+ { 5, "-135dBm"},
+ { 6, "-134dBm"},
+ { 7, "-133dBm"},
+ { 8, "-132dBm"},
+ { 9, "-131dBm"},
+ { 10, "-130dBm"},
+ { 11, "-129dBm"},
+ { 12, "-128dBm"},
+ { 13, "-127dBm"},
+ { 14, "-126dBm"},
+ { 15, "-125dBm"},
+ { 16, "-124dBm"},
+ { 17, "-123dBm"},
+ { 18, "-122dBm"},
+ { 19, "-121dBm"},
+ { 20, "-120dBm"},
+ { 21, "-119dBm"},
+ { 22, "-118dBm"},
+ { 23, "-117dBm"},
+ { 24, "-116dBm"},
+ { 25, "-115dBm"},
+ { 26, "-114dBm"},
+ { 27, "-113dBm"},
+ { 28, "-112dBm"},
+ { 29, "-111dBm"},
+ { 30, "-110dBm"},
+ { 31, "-109dBm"},
+ { 32, "-108dBm"},
+ { 33, "-107dBm"},
+ { 34, "-106dBm"},
+ { 35, "-105dBm"},
+ { 36, "-104dBm"},
+ { 37, "-103dBm"},
+ { 38, "-102dBm"},
+ { 39, "-101dBm"},
+ { 40, "-100dBm"},
+ { 41, "-99dBm"},
+ { 42, "-98dBm"},
+ { 43, "-97dBm"},
+ { 44, "-96dBm"},
+ { 45, "-95dBm"},
+ { 46, "-94dBm"},
+ { 47, "-93dBm"},
+ { 48, "-92dBm"},
+ { 49, "-91dBm"},
+ { 50, "-90dBm"},
+ { 51, "-89dBm"},
+ { 52, "-88dBm"},
+ { 53, "-87dBm"},
+ { 54, "-86dBm"},
+ { 55, "-85dBm"},
+ { 56, "-84dBm"},
+ { 57, "-83dBm"},
+ { 58, "-82dBm"},
+ { 59, "-81dBm"},
+ { 60, "-80dBm"},
+ { 61, "-79dBm"},
+ { 62, "-78dBm"},
+ { 63, "-77dBm"},
+ { 64, "-76dBm"},
+ { 65, "-75dBm"},
+ { 66, "-74dBm"},
+ { 67, "-73dBm"},
+ { 68, "-72dBm"},
+ { 69, "-71dBm"},
+ { 70, "-70dBm"},
+ { 71, "-69dBm"},
+ { 72, "-68dBm"},
+ { 73, "-67dBm"},
+ { 74, "-66dBm"},
+ { 75, "-65dBm"},
+ { 76, "-64dBm"},
+ { 77, "-63dBm"},
+ { 78, "-62dBm"},
+ { 79, "-61dBm"},
+ { 80, "-60dBm"},
+ { 81, "-59dBm"},
+ { 82, "-58dBm"},
+ { 83, "-57dBm"},
+ { 84, "-56dBm"},
+ { 85, "-55dBm"},
+ { 86, "-54dBm"},
+ { 87, "-53dBm"},
+ { 88, "-52dBm"},
+ { 89, "-51dBm"},
+ { 90, "-50dBm"},
+ { 91, "-49dBm"},
+ { 92, "-48dBm"},
+ { 93, "-47dBm"},
+ { 94, "-46dBm"},
+ { 95, "-45dBm"},
+ { 96, "-44dBm"},
+ { 97, "-43dBm"},
+ { 0, NULL}
+};
+static value_string_ext lte_rrc_s_Measure_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_s_Measure_vals);
+
+static const value_string lte_rrc_utra_EcN0_vals[] = {
+ { 0 , "CPICH Ec/Io < -24dB"},
+ { 1 , "-24dB <= CPICH Ec/Io < -23.5dB"},
+ { 2 , "-23.5dB <= CPICH Ec/Io < -23dB"},
+ { 3 , "-23dB <= CPICH Ec/Io < -22.5dB"},
+ { 4 , "-22.5dB <= CPICH Ec/Io < -22dB"},
+ { 5 , "-22dB <= CPICH Ec/Io < -21.5dB"},
+ { 6 , "-21.5dB <= CPICH Ec/Io < -21dB"},
+ { 7 , "-21dB <= CPICH Ec/Io < -20.5dB"},
+ { 8 , "-20.5dB <= CPICH Ec/Io < -20dB"},
+ { 9 , "-20dB <= CPICH Ec/Io < -19.5dB"},
+ { 10, "-19.5dB <= CPICH Ec/Io < -19dB"},
+ { 11, "-19dB <= CPICH Ec/Io < -18.5dB"},
+ { 12, "-18.5dB <= CPICH Ec/Io < -18dB"},
+ { 13, "-18dB <= CPICH Ec/Io < -17.5dB"},
+ { 14, "-17.5dB <= CPICH Ec/Io < -17dB"},
+ { 15, "-17dB <= CPICH Ec/Io < -16.5dB"},
+ { 16, "-16.5dB <= CPICH Ec/Io < -16dB"},
+ { 17, "-16dB <= CPICH Ec/Io < -15.5dB"},
+ { 18, "-15.5dB <= CPICH Ec/Io < -15dB"},
+ { 19, "-15dB <= CPICH Ec/Io < -14.5dB"},
+ { 20, "-14.5dB <= CPICH Ec/Io < -14dB"},
+ { 21, "-14dB <= CPICH Ec/Io < -13.5dB"},
+ { 22, "-13.5dB <= CPICH Ec/Io < -13dB"},
+ { 23, "-13dB <= CPICH Ec/Io < -12.5dB"},
+ { 24, "-12.5dB <= CPICH Ec/Io < -12dB"},
+ { 25, "-12dB <= CPICH Ec/Io < -11.5dB"},
+ { 26, "-11.5dB <= CPICH Ec/Io < -11dB"},
+ { 27, "-11dB <= CPICH Ec/Io < -10.5dB"},
+ { 28, "-10.5dB <= CPICH Ec/Io < -10dB"},
+ { 29, "-10dB <= CPICH Ec/Io < -9.5dB"},
+ { 30, "-9.5dB <= CPICH Ec/Io < -9dB"},
+ { 31, "-9dB <= CPICH Ec/Io < -8.5dB"},
+ { 32, "-8.5dB <= CPICH Ec/Io < -8dB"},
+ { 33, "-8dB <= CPICH Ec/Io < -7.5dB"},
+ { 34, "-7.5dB <= CPICH Ec/Io < -7dB"},
+ { 35, "-7dB <= CPICH Ec/Io < -6.5dB"},
+ { 36, "-6.5dB <= CPICH Ec/Io < -6dB"},
+ { 37, "-6dB <= CPICH Ec/Io < -5.5dB"},
+ { 38, "-5.5dB <= CPICH Ec/Io < -5dB"},
+ { 39, "-5dB <= CPICH Ec/Io < -4.5dB"},
+ { 40, "-4.5dB <= CPICH Ec/Io < -4dB"},
+ { 41, "-4dB <= CPICH Ec/Io < -3.5dB"},
+ { 42, "-3.5dB <= CPICH Ec/Io < -3dB"},
+ { 43, "-3dB <= CPICH Ec/Io < -2.5dB"},
+ { 44, "-2.5dB <= CPICH Ec/Io < -2dB"},
+ { 45, "-2dB <= CPICH Ec/Io < -1.5dB"},
+ { 46, "-1.5dB <= CPICH Ec/Io < -1dB"},
+ { 47, "-1dB <= CPICH Ec/Io < -0.5dB"},
+ { 48, "-0.5dB <= CPICH Ec/Io < 0dB"},
+ { 49, "0dB <= CPICH Ec/Io"},
+ { 0, NULL}
+};
+static value_string_ext lte_rrc_utra_EcN0_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_utra_EcN0_vals);
+
+static const value_string lte_rrc_utra_RSCP_vals[] = {
+ { -5, "RSCP < -120dBm"},
+ { -4, "-120dBm <= RSCP < -119dBm"},
+ { -3, "-119dBm <= RSCP < -118dBm"},
+ { -2, "-118dBm <= RSCP < -117dBm"},
+ { -1, "-117dBm <= RSCP < -116dBm"},
+ { 0, "-116dBm <= RSCP < -115dBm"},
+ { 1, "-115dBm <= RSCP < -114dBm"},
+ { 2, "-114dBm <= RSCP < -113dBm"},
+ { 3, "-113dBm <= RSCP < -112dBm"},
+ { 4, "-112dBm <= RSCP < -111dBm"},
+ { 5, "-111dBm <= RSCP < -110dBm"},
+ { 6, "-110dBm <= RSCP < -109dBm"},
+ { 7, "-109dBm <= RSCP < -108dBm"},
+ { 8, "-108dBm <= RSCP < -107dBm"},
+ { 9, "-107dBm <= RSCP < -106dBm"},
+ { 10, "-106dBm <= RSCP < -105dBm"},
+ { 11, "-105dBm <= RSCP < -104dBm"},
+ { 12, "-104dBm <= RSCP < -103dBm"},
+ { 13, "-103dBm <= RSCP < -102dBm"},
+ { 14, "-102dBm <= RSCP < -101dBm"},
+ { 15, "-101dBm <= RSCP < -100dBm"},
+ { 16, "-100dBm <= RSCP < -99dBm"},
+ { 17, "-99dBm <= RSCP < -98dBm"},
+ { 18, "-98dBm <= RSCP < -97dBm"},
+ { 19, "-97dBm <= RSCP < -96dBm"},
+ { 20, "-96dBm <= RSCP < -95dBm"},
+ { 21, "-95dBm <= RSCP < -94dBm"},
+ { 22, "-94dBm <= RSCP < -93dBm"},
+ { 23, "-93dBm <= RSCP < -92dBm"},
+ { 24, "-92dBm <= RSCP < -91dBm"},
+ { 25, "-91dBm <= RSCP < -90dBm"},
+ { 26, "-90dBm <= RSCP < -89dBm"},
+ { 27, "-89dBm <= RSCP < -88dBm"},
+ { 28, "-88dBm <= RSCP < -87dBm"},
+ { 29, "-87dBm <= RSCP < -86dBm"},
+ { 30, "-86dBm <= RSCP < -85dBm"},
+ { 31, "-85dBm <= RSCP < -84dBm"},
+ { 32, "-84dBm <= RSCP < -83dBm"},
+ { 33, "-83dBm <= RSCP < -82dBm"},
+ { 34, "-82dBm <= RSCP < -81dBm"},
+ { 35, "-81dBm <= RSCP < -80dBm"},
+ { 36, "-80dBm <= RSCP < -79dBm"},
+ { 37, "-79dBm <= RSCP < -78dBm"},
+ { 38, "-78dBm <= RSCP < -77dBm"},
+ { 39, "-77dBm <= RSCP < -76dBm"},
+ { 40, "-76dBm <= RSCP < -75dBm"},
+ { 41, "-75dBm <= RSCP < -74dBm"},
+ { 42, "-74dBm <= RSCP < -73dBm"},
+ { 43, "-73dBm <= RSCP < -72dBm"},
+ { 44, "-72dBm <= RSCP < -71dBm"},
+ { 45, "-71dBm <= RSCP < -70dBm"},
+ { 46, "-70dBm <= RSCP < -69dBm"},
+ { 47, "-69dBm <= RSCP < -68dBm"},
+ { 48, "-68dBm <= RSCP < -67dBm"},
+ { 49, "-67dBm <= RSCP < -66dBm"},
+ { 50, "-66dBm <= RSCP < -65dBm"},
+ { 51, "-65dBm <= RSCP < -64dBm"},
+ { 52, "-64dBm <= RSCP < -63dBm"},
+ { 53, "-63dBm <= RSCP < -62dBm"},
+ { 54, "-62dBm <= RSCP < -61dBm"},
+ { 55, "-61dBm <= RSCP < -60dBm"},
+ { 56, "-60dBm <= RSCP < -59dBm"},
+ { 57, "-59dBm <= RSCP < -58dBm"},
+ { 58, "-58dBm <= RSCP < -57dBm"},
+ { 59, "-57dBm <= RSCP < -56dBm"},
+ { 60, "-56dBm <= RSCP < -55dBm"},
+ { 61, "-55dBm <= RSCP < -54dBm"},
+ { 62, "-54dBm <= RSCP < -53dBm"},
+ { 63, "-53dBm <= RSCP < -52dBm"},
+ { 64, "-52dBm <= RSCP < -51dBm"},
+ { 65, "-51dBm <= RSCP < -50dBm"},
+ { 66, "-50dBm <= RSCP < -49dBm"},
+ { 67, "-49dBm <= RSCP < -48dBm"},
+ { 68, "-48dBm <= RSCP < -47dBm"},
+ { 69, "-47dBm <= RSCP < -46dBm"},
+ { 70, "-46dBm <= RSCP < -45dBm"},
+ { 71, "-45dBm <= RSCP < -44dBm"},
+ { 72, "-44dBm <= RSCP < -43dBm"},
+ { 73, "-43dBm <= RSCP < -42dBm"},
+ { 74, "-42dBm <= RSCP < -41dBm"},
+ { 75, "-41dBm <= RSCP < -40dBm"},
+ { 76, "-40dBm <= RSCP < -39dBm"},
+ { 77, "-39dBm <= RSCP < -38dBm"},
+ { 78, "-38dBm <= RSCP < -37dBm"},
+ { 79, "-37dBm <= RSCP < -36dBm"},
+ { 80, "-36dBm <= RSCP < -35dBm"},
+ { 81, "-35dBm <= RSCP < -34dBm"},
+ { 82, "-34dBm <= RSCP < -33dBm"},
+ { 83, "-33dBm <= RSCP < -32dBm"},
+ { 84, "-32dBm <= RSCP < -31dBm"},
+ { 85, "-31dBm <= RSCP < -30dBm"},
+ { 86, "-30dBm <= RSCP < -29dBm"},
+ { 87, "-29dBm <= RSCP < -28dBm"},
+ { 88, "-28dBm <= RSCP < -27dBm"},
+ { 89, "-27dBm <= RSCP < -26dBm"},
+ { 90, "-26dBm <= RSCP < -25dBm"},
+ { 91, "-25dBm <= RSCP"},
+ { 0, NULL}
+};
+static value_string_ext lte_rrc_utra_RSCP_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_utra_RSCP_vals);
+
+static const value_string lte_rrc_a3_a6_Offset_vals[] = {
+ { -30, "-15dB"},
+ { -29, "-14.5dB"},
+ { -28, "-14dB"},
+ { -27, "-13.5dB"},
+ { -26, "-13dB"},
+ { -25, "-12.5dB"},
+ { -24, "-12dB"},
+ { -23, "-11.5dB"},
+ { -22, "-11dB"},
+ { -21, "-10.5dB"},
+ { -20, "-10dB"},
+ { -19, "-9.5dB"},
+ { -18, "-9dB"},
+ { -17, "-8.5dB"},
+ { -16, "-8dB"},
+ { -15, "-7.5dB"},
+ { -14, "-7dB"},
+ { -13, "-6.5dB"},
+ { -12, "-6dB"},
+ { -11, "-5.5dB"},
+ { -10, "-5dB"},
+ { -9, "-4.5dB"},
+ { -8, "-4dB"},
+ { -7, "-3.5dB"},
+ { -6, "-3dB"},
+ { -5, "-2.5dB"},
+ { -4, "-2dB"},
+ { -3, "-1.5dB"},
+ { -2, "-1dB"},
+ { -1, "-0.5dB"},
+ { 0, "0dB"},
+ { 1, "0.5dB"},
+ { 2, "1dB"},
+ { 3, "1.5dB"},
+ { 4, "2dB"},
+ { 5, "2.5dB"},
+ { 6, "3dB"},
+ { 7, "3.5dB"},
+ { 8, "4dB"},
+ { 9, "4.5dB"},
+ { 10, "5dB"},
+ { 11, "5.5dB"},
+ { 12, "6dB"},
+ { 13, "6.5dB"},
+ { 14, "7dB"},
+ { 15, "7.5dB"},
+ { 16, "8dB"},
+ { 17, "8.5dB"},
+ { 18, "9dB"},
+ { 19, "9.5dB"},
+ { 20, "10dB"},
+ { 21, "10.5dB"},
+ { 22, "11dB"},
+ { 23, "11.5dB"},
+ { 24, "12dB"},
+ { 25, "12.5dB"},
+ { 26, "13dB"},
+ { 27, "13.5dB"},
+ { 28, "14dB"},
+ { 29, "14.5dB"},
+ { 30, "15dB"},
+ { 0, NULL}
+};
+static value_string_ext lte_rrc_a3_a6_Offset_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_a3_a6_Offset_vals);
+
+static const value_string lte_rrc_threshold_RSRP_vals[] = {
+ { 0, "-140dBm"},
+ { 1, "-139dBm"},
+ { 2, "-138dBm"},
+ { 3, "-137dBm"},
+ { 4, "-136dBm"},
+ { 5, "-135dBm"},
+ { 6, "-134dBm"},
+ { 7, "-133dBm"},
+ { 8, "-132dBm"},
+ { 9, "-131dBm"},
+ { 10, "-130dBm"},
+ { 11, "-129dBm"},
+ { 12, "-128dBm"},
+ { 13, "-127dBm"},
+ { 14, "-126dBm"},
+ { 15, "-125dBm"},
+ { 16, "-124dBm"},
+ { 17, "-123dBm"},
+ { 18, "-122dBm"},
+ { 19, "-121dBm"},
+ { 20, "-120dBm"},
+ { 21, "-119dBm"},
+ { 22, "-118dBm"},
+ { 23, "-117dBm"},
+ { 24, "-116dBm"},
+ { 25, "-115dBm"},
+ { 26, "-114dBm"},
+ { 27, "-113dBm"},
+ { 28, "-112dBm"},
+ { 29, "-111dBm"},
+ { 30, "-110dBm"},
+ { 31, "-109dBm"},
+ { 32, "-108dBm"},
+ { 33, "-107dBm"},
+ { 34, "-106dBm"},
+ { 35, "-105dBm"},
+ { 36, "-104dBm"},
+ { 37, "-103dBm"},
+ { 38, "-102dBm"},
+ { 39, "-101dBm"},
+ { 40, "-100dBm"},
+ { 41, "-99dBm"},
+ { 42, "-98dBm"},
+ { 43, "-97dBm"},
+ { 44, "-96dBm"},
+ { 45, "-95dBm"},
+ { 46, "-94dBm"},
+ { 47, "-93dBm"},
+ { 48, "-92dBm"},
+ { 49, "-91dBm"},
+ { 50, "-90dBm"},
+ { 51, "-89dBm"},
+ { 52, "-88dBm"},
+ { 53, "-87dBm"},
+ { 54, "-86dBm"},
+ { 55, "-85dBm"},
+ { 56, "-84dBm"},
+ { 57, "-83dBm"},
+ { 58, "-82dBm"},
+ { 59, "-81dBm"},
+ { 60, "-80dBm"},
+ { 61, "-79dBm"},
+ { 62, "-78dBm"},
+ { 63, "-77dBm"},
+ { 64, "-76dBm"},
+ { 65, "-75dBm"},
+ { 66, "-74dBm"},
+ { 67, "-73dBm"},
+ { 68, "-72dBm"},
+ { 69, "-71dBm"},
+ { 70, "-70dBm"},
+ { 71, "-69dBm"},
+ { 72, "-68dBm"},
+ { 73, "-67dBm"},
+ { 74, "-66dBm"},
+ { 75, "-65dBm"},
+ { 76, "-64dBm"},
+ { 77, "-63dBm"},
+ { 78, "-62dBm"},
+ { 79, "-61dBm"},
+ { 80, "-60dBm"},
+ { 81, "-59dBm"},
+ { 82, "-58dBm"},
+ { 83, "-57dBm"},
+ { 84, "-56dBm"},
+ { 85, "-55dBm"},
+ { 86, "-54dBm"},
+ { 87, "-53dBm"},
+ { 88, "-52dBm"},
+ { 89, "-51dBm"},
+ { 90, "-50dBm"},
+ { 91, "-49dBm"},
+ { 92, "-48dBm"},
+ { 93, "-47dBm"},
+ { 94, "-46dBm"},
+ { 95, "-45dBm"},
+ { 96, "-44dBm"},
+ { 97, "-43dBm"},
+ { 0, NULL}
+};
+static value_string_ext lte_rrc_threshold_RSRP_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_threshold_RSRP_vals);
+
+static const value_string lte_rrc_threshold_RSRQ_vals[] = {
+ { 0, "-20dB"},
+ { 1, "-19.5dB"},
+ { 2, "-19dB"},
+ { 3, "-18.5dB"},
+ { 4, "-18dB"},
+ { 5, "-17.5dB"},
+ { 6, "-17dB"},
+ { 7, "-16.5dB"},
+ { 8, "-16dB"},
+ { 9, "-15.5dB"},
+ { 10, "-15dB"},
+ { 11, "-14.5dB"},
+ { 12, "-14dB"},
+ { 13, "-13.5dB"},
+ { 14, "-13dB"},
+ { 15, "-12.5dB"},
+ { 16, "-12dB"},
+ { 17, "-11.5dB"},
+ { 18, "-11dB"},
+ { 19, "-10.5dB"},
+ { 20, "-10dB"},
+ { 21, "-9.5dB"},
+ { 22, "-9dB"},
+ { 23, "-8.5dB"},
+ { 24, "-8dB"},
+ { 25, "-7.5dB"},
+ { 26, "-7dB"},
+ { 27, "-6.5dB"},
+ { 28, "-6dB"},
+ { 29, "-5.5dB"},
+ { 30, "-5dB"},
+ { 31, "-4.5dB"},
+ { 32, "-4dB"},
+ { 33, "-3.5dB"},
+ { 34, "-3dB"},
+ { 0, NULL}
+};
+static value_string_ext lte_rrc_threshold_RSRQ_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_threshold_RSRQ_vals);
+
+static const value_string lte_rrc_thresholdGERAN_vals[] = {
+ { 0 , "-110dBm"},
+ { 1 , "-109dBm"},
+ { 2 , "-108dBm"},
+ { 3 , "-107dBm"},
+ { 4 , "-106dBm"},
+ { 5 , "-105dBm"},
+ { 6 , "-104dBm"},
+ { 7 , "-103dBm"},
+ { 8 , "-102dBm"},
+ { 9 , "-101dBm"},
+ { 10, "-100dBm"},
+ { 11, "-99dBm"},
+ { 12, "-98dBm"},
+ { 13, "-97dBm"},
+ { 14, "-96dBm"},
+ { 15, "-95dBm"},
+ { 16, "-94dBm"},
+ { 17, "-93dBm"},
+ { 18, "-92dBm"},
+ { 19, "-91dBm"},
+ { 20, "-90dBm"},
+ { 21, "-89dBm"},
+ { 22, "-88dBm"},
+ { 23, "-87dBm"},
+ { 24, "-86dBm"},
+ { 25, "-85dBm"},
+ { 26, "-84dBm"},
+ { 27, "-83dBm"},
+ { 28, "-82dBm"},
+ { 29, "-81dBm"},
+ { 30, "-80dBm"},
+ { 31, "-79dBm"},
+ { 32, "-78dBm"},
+ { 33, "-77dBm"},
+ { 34, "-76dBm"},
+ { 35, "-75dBm"},
+ { 36, "-74dBm"},
+ { 37, "-73dBm"},
+ { 38, "-72dBm"},
+ { 39, "-71dBm"},
+ { 40, "-70dBm"},
+ { 41, "-69dBm"},
+ { 42, "-68dBm"},
+ { 43, "-67dBm"},
+ { 44, "-66dBm"},
+ { 45, "-65dBm"},
+ { 46, "-64dBm"},
+ { 47, "-63dBm"},
+ { 48, "-62dBm"},
+ { 49, "-61dBm"},
+ { 50, "-60dBm"},
+ { 51, "-59dBm"},
+ { 52, "-58dBm"},
+ { 53, "-57dBm"},
+ { 54, "-56dBm"},
+ { 55, "-55dBm"},
+ { 56, "-54dBm"},
+ { 57, "-53dBm"},
+ { 58, "-52dBm"},
+ { 59, "-51dBm"},
+ { 60, "-50dBm"},
+ { 61, "-49dBm"},
+ { 62, "-48dBm"},
+ { 63, "-47dBm"},
+ { 0, NULL}
+};
+static value_string_ext lte_rrc_thresholdGERAN_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_thresholdGERAN_vals);
+
+static const value_string lte_rrc_thresholdUTRA_EcN0_vals[] = {
+ { 0 , "-24.5dB"},
+ { 1 , "-24dB"},
+ { 2 , "-23.5dB"},
+ { 3 , "-23dB"},
+ { 4 , "-22.5dB"},
+ { 5 , "-22dB"},
+ { 6 , "-21.5dB"},
+ { 7 , "-21dB"},
+ { 8 , "-20.5dB"},
+ { 9 , "-20dB"},
+ { 10, "-19.5dB"},
+ { 11, "-19dB"},
+ { 12, "-18.5dB"},
+ { 13, "-18dB"},
+ { 14, "-17.5dB"},
+ { 15, "-17dB"},
+ { 16, "-16.5dB"},
+ { 17, "-16dB"},
+ { 18, "-15.5dB"},
+ { 19, "-15dB"},
+ { 20, "-14.5dB"},
+ { 21, "-14dB"},
+ { 22, "-13.5dB"},
+ { 23, "-13dB"},
+ { 24, "-12.5dB"},
+ { 25, "-12dB"},
+ { 26, "-11.5dB"},
+ { 27, "-11dB"},
+ { 28, "-10.5dB"},
+ { 29, "-10dB"},
+ { 30, "-9.5dB"},
+ { 31, "-9dB"},
+ { 32, "-8.5dB"},
+ { 33, "-8dB"},
+ { 34, "-7.5dB"},
+ { 35, "-7dB"},
+ { 36, "-6.5dB"},
+ { 37, "-6dB"},
+ { 38, "-5.5dB"},
+ { 39, "-5dB"},
+ { 40, "-4.5dB"},
+ { 41, "-4dB"},
+ { 42, "-3.5dB"},
+ { 43, "-3dB"},
+ { 44, "-2.5dB"},
+ { 45, "-2dB"},
+ { 46, "-1.5dB"},
+ { 47, "-1dB"},
+ { 48, "-0.5dB"},
+ { 49, "0dB"},
+ { 0, NULL}
+};
+static value_string_ext lte_rrc_thresholdUTRA_EcN0_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_thresholdUTRA_EcN0_vals);
+
+static const value_string lte_rrc_thresholdUTRA_RSCP_vals[] = {
+ { -5, "-120dBm"},
+ { -4, "-119dBm"},
+ { -3, "-118dBm"},
+ { -2, "-117dBm"},
+ { -1, "-116dBm"},
+ { 0, "-115dBm"},
+ { 1, "-114dBm"},
+ { 2, "-113dBm"},
+ { 3, "-112dBm"},
+ { 4, "-111dBm"},
+ { 5, "-110dBm"},
+ { 6, "-109dBm"},
+ { 7, "-108dBm"},
+ { 8, "-107dBm"},
+ { 9, "-106dBm"},
+ { 10, "-105dBm"},
+ { 11, "-104dBm"},
+ { 12, "-103dBm"},
+ { 13, "-102dBm"},
+ { 14, "-101dBm"},
+ { 15, "-100dBm"},
+ { 16, "-99dBm"},
+ { 17, "-98dBm"},
+ { 18, "-97dBm"},
+ { 19, "-96dBm"},
+ { 20, "-95dBm"},
+ { 21, "-94dBm"},
+ { 22, "-93dBm"},
+ { 23, "-92dBm"},
+ { 24, "-91dBm"},
+ { 25, "-90dBm"},
+ { 26, "-89dBm"},
+ { 27, "-88dBm"},
+ { 28, "-87dBm"},
+ { 29, "-86dBm"},
+ { 30, "-85dBm"},
+ { 31, "-84dBm"},
+ { 32, "-83dBm"},
+ { 33, "-82dBm"},
+ { 34, "-81dBm"},
+ { 35, "-80dBm"},
+ { 36, "-79dBm"},
+ { 37, "-78dBm"},
+ { 38, "-77dBm"},
+ { 39, "-76dBm"},
+ { 40, "-75dBm"},
+ { 41, "-74dBm"},
+ { 42, "-73dBm"},
+ { 43, "-72dBm"},
+ { 44, "-71dBm"},
+ { 45, "-70dBm"},
+ { 46, "-69dBm"},
+ { 47, "-68dBm"},
+ { 48, "-67dBm"},
+ { 49, "-66dBm"},
+ { 50, "-65dBm"},
+ { 51, "-64dBm"},
+ { 52, "-63dBm"},
+ { 53, "-62dBm"},
+ { 54, "-61dBm"},
+ { 55, "-60dBm"},
+ { 56, "-59dBm"},
+ { 57, "-58dBm"},
+ { 58, "-57dBm"},
+ { 59, "-56dBm"},
+ { 60, "-55dBm"},
+ { 61, "-54dBm"},
+ { 62, "-53dBm"},
+ { 63, "-52dBm"},
+ { 64, "-51dBm"},
+ { 65, "-50dBm"},
+ { 66, "-49dBm"},
+ { 67, "-48dBm"},
+ { 68, "-47dBm"},
+ { 69, "-46dBm"},
+ { 70, "-45dBm"},
+ { 71, "-44dBm"},
+ { 72, "-43dBm"},
+ { 73, "-42dBm"},
+ { 74, "-41dBm"},
+ { 75, "-40dBm"},
+ { 76, "-39dBm"},
+ { 77, "-38dBm"},
+ { 78, "-37dBm"},
+ { 79, "-36dBm"},
+ { 80, "-35dBm"},
+ { 81, "-34dBm"},
+ { 82, "-33dBm"},
+ { 83, "-32dBm"},
+ { 84, "-31dBm"},
+ { 85, "-30dBm"},
+ { 86, "-29dBm"},
+ { 87, "-28dBm"},
+ { 88, "-27dBm"},
+ { 89, "-26dBm"},
+ { 90, "-25dBm"},
+ { 91, "-24dBm"},
+ { 0, NULL}
+};
+static value_string_ext lte_rrc_thresholdUTRA_RSCP_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_thresholdUTRA_RSCP_vals);
+
+static const value_string lte_rrc_RSRP_Range_vals[] = {
+ { 0, "RSRP < -140dBm"},
+ { 1, "-140dBm <= RSRP < -139dBm"},
+ { 2, "-139dBm <= RSRP < -138dBm"},
+ { 3, "-138dBm <= RSRP < -137dBm"},
+ { 4, "-137dBm <= RSRP < -136dBm"},
+ { 5, "-136dBm <= RSRP < -135dBm"},
+ { 6, "-135dBm <= RSRP < -134dBm"},
+ { 7, "-134dBm <= RSRP < -133dBm"},
+ { 8, "-133dBm <= RSRP < -132dBm"},
+ { 9, "-132dBm <= RSRP < -131dBm"},
+ { 10, "-131dBm <= RSRP < -130dBm"},
+ { 11, "-130dBm <= RSRP < -129dBm"},
+ { 12, "-129dBm <= RSRP < -128dBm"},
+ { 13, "-128dBm <= RSRP < -127dBm"},
+ { 14, "-127dBm <= RSRP < -126dBm"},
+ { 15, "-126dBm <= RSRP < -125dBm"},
+ { 16, "-125dBm <= RSRP < -124dBm"},
+ { 17, "-124dBm <= RSRP < -123dBm"},
+ { 18, "-123dBm <= RSRP < -122dBm"},
+ { 19, "-122dBm <= RSRP < -121dBm"},
+ { 20, "-121dBm <= RSRP < -120dBm"},
+ { 21, "-120dBm <= RSRP < -119dBm"},
+ { 22, "-119dBm <= RSRP < -118dBm"},
+ { 23, "-118dBm <= RSRP < -117dBm"},
+ { 24, "-117dBm <= RSRP < -116dBm"},
+ { 25, "-116dBm <= RSRP < -115dBm"},
+ { 26, "-115dBm <= RSRP < -114dBm"},
+ { 27, "-114dBm <= RSRP < -113dBm"},
+ { 28, "-113dBm <= RSRP < -112dBm"},
+ { 29, "-112dBm <= RSRP < -111dBm"},
+ { 30, "-111dBm <= RSRP < -110dBm"},
+ { 31, "-110dBm <= RSRP < -109dBm"},
+ { 32, "-109dBm <= RSRP < -108dBm"},
+ { 33, "-108dBm <= RSRP < -107dBm"},
+ { 34, "-107dBm <= RSRP < -106dBm"},
+ { 35, "-106dBm <= RSRP < -105dBm"},
+ { 36, "-105dBm <= RSRP < -104dBm"},
+ { 37, "-104dBm <= RSRP < -103dBm"},
+ { 38, "-103dBm <= RSRP < -102dBm"},
+ { 39, "-102dBm <= RSRP < -101dBm"},
+ { 40, "-101dBm <= RSRP < -100dBm"},
+ { 41, "-100dBm <= RSRP < -99dBm"},
+ { 42, "-99dBm <= RSRP < -98dBm"},
+ { 43, "-98dBm <= RSRP < -97dBm"},
+ { 44, "-97dBm <= RSRP < -96dBm"},
+ { 45, "-96dBm <= RSRP < -95dBm"},
+ { 46, "-95dBm <= RSRP < -94dBm"},
+ { 47, "-94dBm <= RSRP < -93dBm"},
+ { 48, "-93dBm <= RSRP < -92dBm"},
+ { 49, "-92dBm <= RSRP < -91dBm"},
+ { 50, "-91dBm <= RSRP < -90dBm"},
+ { 51, "-90dBm <= RSRP < -89dBm"},
+ { 52, "-89dBm <= RSRP < -88dBm"},
+ { 53, "-88dBm <= RSRP < -87dBm"},
+ { 54, "-87dBm <= RSRP < -86dBm"},
+ { 55, "-86dBm <= RSRP < -85dBm"},
+ { 56, "-85dBm <= RSRP < -84dBm"},
+ { 57, "-84dBm <= RSRP < -83dBm"},
+ { 58, "-83dBm <= RSRP < -82dBm"},
+ { 59, "-82dBm <= RSRP < -81dBm"},
+ { 60, "-81dBm <= RSRP < -80dBm"},
+ { 61, "-80dBm <= RSRP < -79dBm"},
+ { 62, "-79dBm <= RSRP < -78dBm"},
+ { 63, "-78dBm <= RSRP < -77dBm"},
+ { 64, "-77dBm <= RSRP < -76dBm"},
+ { 65, "-76dBm <= RSRP < -75dBm"},
+ { 66, "-75dBm <= RSRP < -74dBm"},
+ { 67, "-74dBm <= RSRP < -73dBm"},
+ { 68, "-73dBm <= RSRP < -72dBm"},
+ { 69, "-72dBm <= RSRP < -71dBm"},
+ { 70, "-71dBm <= RSRP < -70dBm"},
+ { 71, "-70dBm <= RSRP < -69dBm"},
+ { 72, "-69dBm <= RSRP < -68dBm"},
+ { 73, "-68dBm <= RSRP < -67dBm"},
+ { 74, "-67dBm <= RSRP < -66dBm"},
+ { 75, "-66dBm <= RSRP < -65dBm"},
+ { 76, "-65dBm <= RSRP < -64dBm"},
+ { 77, "-64dBm <= RSRP < -63dBm"},
+ { 78, "-63dBm <= RSRP < -62dBm"},
+ { 79, "-62dBm <= RSRP < -61dBm"},
+ { 80, "-61dBm <= RSRP < -60dBm"},
+ { 81, "-60dBm <= RSRP < -59dBm"},
+ { 82, "-59dBm <= RSRP < -58dBm"},
+ { 83, "-58dBm <= RSRP < -57dBm"},
+ { 84, "-57dBm <= RSRP < -56dBm"},
+ { 85, "-56dBm <= RSRP < -55dBm"},
+ { 86, "-55dBm <= RSRP < -54dBm"},
+ { 87, "-54dBm <= RSRP < -53dBm"},
+ { 88, "-53dBm <= RSRP < -52dBm"},
+ { 89, "-52dBm <= RSRP < -51dBm"},
+ { 90, "-51dBm <= RSRP < -50dBm"},
+ { 91, "-50dBm <= RSRP < -49dBm"},
+ { 92, "-49dBm <= RSRP < -48dBm"},
+ { 93, "-48dBm <= RSRP < -47dBm"},
+ { 94, "-47dBm <= RSRP < -46dBm"},
+ { 95, "-46dBm <= RSRP < -45dBm"},
+ { 96, "-45dBm <= RSRP < -44dBm"},
+ { 97, "-44dBm <= RSRP"},
+ { 0, NULL}
+};
+static value_string_ext lte_rrc_RSRP_Range_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_RSRP_Range_vals);
+
+static const value_string lte_rrc_RSRQ_Range_vals[] = {
+ { 0, "RSRQ < -19.5dB"},
+ { 1, "-19.5dB <= RSRQ < -19dB"},
+ { 2, "-19dB <= RSRQ < -18.5dB"},
+ { 3, "-18.5dB <= RSRQ < -18dB"},
+ { 4, "-18dB <= RSRQ < -17.5dB"},
+ { 5, "-17.5dB <= RSRQ < -17dB"},
+ { 6, "-17dB <= RSRQ < -16.5dB"},
+ { 7, "-16.5dB <= RSRQ < -16dB"},
+ { 8, "-16dB <= RSRQ < -15.5dB"},
+ { 9, "-15.5dB <= RSRQ < -15dB"},
+ { 10, "-15dB <= RSRQ < -14.5dB"},
+ { 11, "-14.5dB <= RSRQ < -14dB"},
+ { 12, "-14dB <= RSRQ < -13.5dB"},
+ { 13, "-13.5dB <= RSRQ < -13dB"},
+ { 14, "-13dB <= RSRQ < -12.5dB"},
+ { 15, "-12.5dB <= RSRQ < -12dB"},
+ { 16, "-12dB <= RSRQ < -11.5dB"},
+ { 17, "-11.5dB <= RSRQ < -11dB"},
+ { 18, "-11dB <= RSRQ < -10.5dB"},
+ { 19, "-10.5dB <= RSRQ < -10dB"},
+ { 20, "-10dB <= RSRQ < -9.5dB"},
+ { 21, "-9.5dB <= RSRQ < -9dB"},
+ { 22, "-9dB <= RSRQ < -8.5dB"},
+ { 23, "-8.5dB <= RSRQ < -8dB"},
+ { 24, "-8dB <= RSRQ < -7.5dB"},
+ { 25, "-7.5dB <= RSRQ < -7dB"},
+ { 26, "-7dB <= RSRQ < -6.5dB"},
+ { 27, "-6.5dB <= RSRQ < -6dB"},
+ { 28, "-6dB <= RSRQ < -5.5dB"},
+ { 29, "-5.5dB <= RSRQ < -5dB"},
+ { 30, "-5dB <= RSRQ < -4.5dB"},
+ { 31, "-4.5dB <= RSRQ < -4dB"},
+ { 32, "-4dB <= RSRQ < -3.5dB"},
+ { 33, "-3.5dB <= RSRQ < -3dB"},
+ { 34, "-3dB <= RSRQ"},
+ { 0, NULL}
+};
+static value_string_ext lte_rrc_RSRQ_Range_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_RSRQ_Range_vals);
+
+static const true_false_string lte_rrc_duration_val = {
+ "indefinite",
+ "single"
+};
+
+
/*--- Included file: packet-lte-rrc-fn.c ---*/
#line 1 "../../asn1/lte-rrc/packet-lte-rrc-fn.c"
/*--- PDUs declarations ---*/
static int dissect_SystemInformationBlockType1_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);
+static int dissect_UE_EUTRA_Capability_v9a0_IEs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);
static int dissect_SystemInformationBlockType1_v890_IEs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);
@@ -3681,10 +5001,13 @@ dissect_lte_rrc_PRACH_ConfigSIB(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
static int
-dissect_lte_rrc_INTEGER_M60_50(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lte_rrc_T_referenceSignalPower(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
-60, 50U, NULL, FALSE);
+ proto_item_append_text(actx->created_item, "dBm");
+
+
return offset;
}
@@ -3700,7 +5023,7 @@ dissect_lte_rrc_INTEGER_0_3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static const per_sequence_t PDSCH_ConfigCommon_sequence[] = {
- { &hf_lte_rrc_referenceSignalPower, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_M60_50 },
+ { &hf_lte_rrc_referenceSignalPower, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_referenceSignalPower },
{ &hf_lte_rrc_p_b , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_0_3 },
{ NULL, 0, 0, NULL }
};
@@ -3980,10 +5303,13 @@ dissect_lte_rrc_SoundingRS_UL_ConfigCommon(tvbuff_t *tvb _U_, int offset _U_, as
static int
-dissect_lte_rrc_INTEGER_M126_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lte_rrc_T_p0_NominalPUSCH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
-126, 24U, NULL, FALSE);
+ proto_item_append_text(actx->created_item, "dBm");
+
+
return offset;
}
@@ -4012,10 +5338,13 @@ dissect_lte_rrc_T_alpha(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
static int
-dissect_lte_rrc_INTEGER_M127_M96(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lte_rrc_T_p0_NominalPUCCH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
-127, -96, NULL, FALSE);
+ proto_item_append_text(actx->created_item, "dBm");
+
+
return offset;
}
@@ -4135,9 +5464,9 @@ dissect_lte_rrc_INTEGER_M1_6(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static const per_sequence_t UplinkPowerControlCommon_sequence[] = {
- { &hf_lte_rrc_p0_NominalPUSCH, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_M126_24 },
+ { &hf_lte_rrc_p0_NominalPUSCH, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_p0_NominalPUSCH },
{ &hf_lte_rrc_alpha , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_alpha },
- { &hf_lte_rrc_p0_NominalPUCCH, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_M127_M96 },
+ { &hf_lte_rrc_p0_NominalPUCCH, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_p0_NominalPUCCH },
{ &hf_lte_rrc_deltaFList_PUCCH, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_DeltaFList_PUCCH },
{ &hf_lte_rrc_deltaPreambleMsg3, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_M1_6 },
{ NULL, 0, 0, NULL }
@@ -4872,6 +6201,9 @@ dissect_lte_rrc_P_Max(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
-30, 33U, NULL, FALSE);
+ proto_item_append_text(actx->created_item, "dBm");
+
+
return offset;
}
@@ -4946,6 +6278,9 @@ dissect_lte_rrc_T_Reselection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 7U, NULL, FALSE);
+ proto_item_append_text(actx->created_item, "s");
+
+
return offset;
}
@@ -5028,6 +6363,9 @@ dissect_lte_rrc_ReselectionThresholdQ_r9(tvbuff_t *tvb _U_, int offset _U_, asn1
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 31U, NULL, FALSE);
+ proto_item_append_text(actx->created_item, "dB");
+
+
return offset;
}
@@ -5068,6 +6406,9 @@ dissect_lte_rrc_Q_QualMin_r9(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
-34, -3, NULL, FALSE);
+ proto_item_append_text(actx->created_item, "dB");
+
+
return offset;
}
@@ -5151,6 +6492,8 @@ static const value_string lte_rrc_Q_OffsetRange_vals[] = {
{ 0, NULL }
};
+static value_string_ext lte_rrc_Q_OffsetRange_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_Q_OffsetRange_vals);
+
static int
dissect_lte_rrc_Q_OffsetRange(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -5417,20 +6760,26 @@ dissect_lte_rrc_INTEGER_M60_M13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
static int
-dissect_lte_rrc_INTEGER_M50_33(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lte_rrc_T_p_MaxUTRA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
-50, 33U, NULL, FALSE);
+ proto_item_append_text(actx->created_item, "dBm");
+
+
return offset;
}
static int
-dissect_lte_rrc_INTEGER_M24_0(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lte_rrc_T_q_QualMin(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
-24, 0U, NULL, FALSE);
+ proto_item_append_text(actx->created_item, "dB");
+
+
return offset;
}
@@ -5469,8 +6818,8 @@ static const per_sequence_t CarrierFreqUTRA_FDD_sequence[] = {
{ &hf_lte_rrc_threshX_High, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lte_rrc_ReselectionThreshold },
{ &hf_lte_rrc_threshX_Low , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lte_rrc_ReselectionThreshold },
{ &hf_lte_rrc_q_RxLevMin_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_M60_M13 },
- { &hf_lte_rrc_p_MaxUTRA , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_M50_33 },
- { &hf_lte_rrc_q_QualMin , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_M24_0 },
+ { &hf_lte_rrc_p_MaxUTRA , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_p_MaxUTRA },
+ { &hf_lte_rrc_q_QualMin , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_q_QualMin },
{ &hf_lte_rrc_dummy_eag_field, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lte_rrc_CarrierFreqUTRA_FDD_eag_1 },
{ NULL, 0, 0, NULL }
};
@@ -5498,13 +6847,26 @@ dissect_lte_rrc_CarrierFreqListUTRA_FDD(tvbuff_t *tvb _U_, int offset _U_, asn1_
}
+
+static int
+dissect_lte_rrc_T_p_MaxUTRA_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -50, 33U, NULL, FALSE);
+
+ proto_item_append_text(actx->created_item, "dBm");
+
+
+ return offset;
+}
+
+
static const per_sequence_t CarrierFreqUTRA_TDD_sequence[] = {
{ &hf_lte_rrc_carrierFreq_02, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lte_rrc_ARFCN_ValueUTRA },
{ &hf_lte_rrc_cellReselectionPriority, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lte_rrc_CellReselectionPriority },
{ &hf_lte_rrc_threshX_High, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lte_rrc_ReselectionThreshold },
{ &hf_lte_rrc_threshX_Low , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lte_rrc_ReselectionThreshold },
{ &hf_lte_rrc_q_RxLevMin_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_M60_M13 },
- { &hf_lte_rrc_p_MaxUTRA , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_M50_33 },
+ { &hf_lte_rrc_p_MaxUTRA_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_p_MaxUTRA_01 },
{ NULL, 0, 0, NULL }
};
@@ -5676,10 +7038,13 @@ dissect_lte_rrc_INTEGER_0_45(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static int
-dissect_lte_rrc_INTEGER_0_39(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lte_rrc_T_p_MaxGERAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 39U, NULL, FALSE);
+ proto_item_append_text(actx->created_item, "dBm");
+
+
return offset;
}
@@ -5688,7 +7053,7 @@ static const per_sequence_t T_commonInfo_sequence[] = {
{ &hf_lte_rrc_cellReselectionPriority, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_CellReselectionPriority },
{ &hf_lte_rrc_ncc_Permitted, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_BIT_STRING_SIZE_8 },
{ &hf_lte_rrc_q_RxLevMin_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_0_45 },
- { &hf_lte_rrc_p_MaxGERAN , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_INTEGER_0_39 },
+ { &hf_lte_rrc_p_MaxGERAN , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_p_MaxGERAN },
{ &hf_lte_rrc_threshX_High, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_ReselectionThreshold },
{ &hf_lte_rrc_threshX_Low , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_ReselectionThreshold },
{ NULL, 0, 0, NULL }
@@ -5865,10 +7230,10 @@ static const value_string lte_rrc_BandclassCDMA2000_vals[] = {
{ 15, "bc15" },
{ 16, "bc16" },
{ 17, "bc17" },
- { 18, "spare14" },
- { 19, "spare13" },
- { 20, "spare12" },
- { 21, "spare11" },
+ { 18, "bc18-v9a0" },
+ { 19, "bc19-v9a0" },
+ { 20, "bc20-v9a0" },
+ { 21, "bc21-v9a0" },
{ 22, "spare10" },
{ 23, "spare9" },
{ 24, "spare8" },
@@ -5882,6 +7247,8 @@ static const value_string lte_rrc_BandclassCDMA2000_vals[] = {
{ 0, NULL }
};
+static value_string_ext lte_rrc_BandclassCDMA2000_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_BandclassCDMA2000_vals);
+
static int
dissect_lte_rrc_BandclassCDMA2000(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -6352,16 +7719,22 @@ dissect_lte_rrc_SystemInformationBlockType8(tvbuff_t *tvb _U_, int offset _U_, a
static int
-dissect_lte_rrc_OCTET_STRING_SIZE_1_48(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
- 1, 48, FALSE, NULL);
+dissect_lte_rrc_T_hnb_Name(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ tvbuff_t *hnb_name_tvb = NULL;
+
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, -1,
+ 1, 48, FALSE, &hnb_name_tvb);
+
+ proto_tree_add_unicode_string(tree, hf_index, hnb_name_tvb, 0, -1,
+ tvb_get_ephemeral_string_enc(hnb_name_tvb, 0, tvb_length(hnb_name_tvb), ENC_UTF_8 | ENC_NA));
+
return offset;
}
static const per_sequence_t SystemInformationBlockType9_sequence[] = {
- { &hf_lte_rrc_hnb_Name , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lte_rrc_OCTET_STRING_SIZE_1_48 },
+ { &hf_lte_rrc_hnb_Name , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lte_rrc_T_hnb_Name },
{ &hf_lte_rrc_lateNonCriticalExtension, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_lte_rrc_OCTET_STRING },
{ NULL, 0, 0, NULL }
};
@@ -7235,9 +8608,22 @@ dissect_lte_rrc_T_ims_EmergencySupport_r9(tvbuff_t *tvb _U_, int offset _U_, asn
}
+
+static int
+dissect_lte_rrc_T_q_QualMinOffset_r9(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 8U, NULL, FALSE);
+
+ proto_item_append_text(actx->created_item, "dB");
+
+
+ return offset;
+}
+
+
static const per_sequence_t CellSelectionInfo_v920_sequence[] = {
{ &hf_lte_rrc_q_QualMin_r9, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_Q_QualMin_r9 },
- { &hf_lte_rrc_q_QualMinOffset_r9, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_INTEGER_1_8 },
+ { &hf_lte_rrc_q_QualMinOffset_r9, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_q_QualMinOffset_r9 },
{ NULL, 0, 0, NULL }
};
@@ -8209,6 +9595,8 @@ static const value_string lte_rrc_T_PollRetransmit_vals[] = {
{ 0, NULL }
};
+static value_string_ext lte_rrc_T_PollRetransmit_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_T_PollRetransmit_vals);
+
static int
dissect_lte_rrc_T_PollRetransmit(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -8346,6 +9734,8 @@ static const value_string lte_rrc_T_Reordering_vals[] = {
{ 0, NULL }
};
+static value_string_ext lte_rrc_T_Reordering_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_T_Reordering_vals);
+
static int
dissect_lte_rrc_T_Reordering(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -8424,6 +9814,8 @@ static const value_string lte_rrc_T_StatusProhibit_vals[] = {
{ 0, NULL }
};
+static value_string_ext lte_rrc_T_StatusProhibit_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_T_StatusProhibit_vals);
+
static int
dissect_lte_rrc_T_StatusProhibit(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -9177,6 +10569,8 @@ static const value_string lte_rrc_T_drx_InactivityTimer_vals[] = {
{ 0, NULL }
};
+static value_string_ext lte_rrc_T_drx_InactivityTimer_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_T_drx_InactivityTimer_vals);
+
static int
dissect_lte_rrc_T_drx_InactivityTimer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -9231,6 +10625,16 @@ dissect_lte_rrc_INTEGER_0_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static int
+dissect_lte_rrc_INTEGER_0_39(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 39U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
dissect_lte_rrc_INTEGER_0_79(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 79U, NULL, FALSE);
@@ -9399,9 +10803,22 @@ dissect_lte_rrc_T_shortDRX_Cycle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
}
+
+static int
+dissect_lte_rrc_T_drxShortCycleTimer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 16U, NULL, FALSE);
+
+ proto_item_append_text(actx->created_item, " (multiples of shortDRX-Cycle)");
+
+
+ return offset;
+}
+
+
static const per_sequence_t T_shortDRX_sequence[] = {
{ &hf_lte_rrc_shortDRX_Cycle, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_shortDRX_Cycle },
- { &hf_lte_rrc_drxShortCycleTimer, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_1_16 },
+ { &hf_lte_rrc_drxShortCycleTimer, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_drxShortCycleTimer },
{ NULL, 0, 0, NULL }
};
@@ -9554,8 +10971,21 @@ dissect_lte_rrc_T_phr_Config(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
+
+static int
+dissect_lte_rrc_T_sr_ProhibitTimer_r9(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 7U, NULL, FALSE);
+
+ proto_item_append_text(actx->created_item, " (number of SR periods)");
+
+
+ return offset;
+}
+
+
static const per_sequence_t MAC_MainConfig_eag_1_sequence[] = {
- { &hf_lte_rrc_sr_ProhibitTimer_r9, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_INTEGER_0_7 },
+ { &hf_lte_rrc_sr_ProhibitTimer_r9, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_sr_ProhibitTimer_r9 },
{ NULL, 0, 0, NULL }
};
@@ -9881,17 +11311,33 @@ dissect_lte_rrc_T_implicitReleaseAfter(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static int
-dissect_lte_rrc_INTEGER_M8_7(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lte_rrc_T_p0_NominalPUSCH_Persistent(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -126, 24U, NULL, FALSE);
+
+ proto_item_append_text(actx->created_item, "dBm");
+
+
+ return offset;
+}
+
+
+
+static int
+dissect_lte_rrc_T_p0_UE_PUSCH_Persistent(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
-8, 7U, NULL, FALSE);
+ proto_item_append_text(actx->created_item, "dB");
+
+
return offset;
}
static const per_sequence_t T_p0_Persistent_sequence[] = {
- { &hf_lte_rrc_p0_NominalPUSCH_Persistent, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_M126_24 },
- { &hf_lte_rrc_p0_UE_PUSCH_Persistent, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_M8_7 },
+ { &hf_lte_rrc_p0_NominalPUSCH_Persistent, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_p0_NominalPUSCH_Persistent },
+ { &hf_lte_rrc_p0_UE_PUSCH_Persistent, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_p0_UE_PUSCH_Persistent },
{ NULL, 0, 0, NULL }
};
@@ -10112,6 +11558,19 @@ dissect_lte_rrc_PUSCH_ConfigDedicated(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
}
+
+static int
+dissect_lte_rrc_T_p0_UE_PUSCH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -8, 7U, NULL, FALSE);
+
+ proto_item_append_text(actx->created_item, "dB");
+
+
+ return offset;
+}
+
+
static const value_string lte_rrc_T_deltaMCS_Enabled_vals[] = {
{ 0, "en0" },
{ 1, "en1" },
@@ -10128,6 +11587,19 @@ dissect_lte_rrc_T_deltaMCS_Enabled(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
+
+static int
+dissect_lte_rrc_T_p0_UE_PUCCH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -8, 7U, NULL, FALSE);
+
+ proto_item_append_text(actx->created_item, "dB");
+
+
+ return offset;
+}
+
+
static const value_string lte_rrc_FilterCoefficient_vals[] = {
{ 0, "fc0" },
{ 1, "fc1" },
@@ -10159,10 +11631,10 @@ dissect_lte_rrc_FilterCoefficient(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t UplinkPowerControlDedicated_sequence[] = {
- { &hf_lte_rrc_p0_UE_PUSCH , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_M8_7 },
+ { &hf_lte_rrc_p0_UE_PUSCH , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_p0_UE_PUSCH },
{ &hf_lte_rrc_deltaMCS_Enabled, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_deltaMCS_Enabled },
{ &hf_lte_rrc_accumulationEnabled, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_BOOLEAN },
- { &hf_lte_rrc_p0_UE_PUCCH , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_M8_7 },
+ { &hf_lte_rrc_p0_UE_PUCCH , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_p0_UE_PUCCH },
{ &hf_lte_rrc_pSRS_Offset , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_0_15 },
{ &hf_lte_rrc_filterCoefficient, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_FilterCoefficient },
{ NULL, 0, 0, NULL }
@@ -10428,6 +11900,17 @@ dissect_lte_rrc_INTEGER_0_23(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static int
+dissect_lte_rrc_T_duration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ actx->created_item = proto_tree_add_bits_item(tree, hf_index, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+
+ return offset;
+}
+
+
+
+static int
dissect_lte_rrc_INTEGER_0_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 1U, NULL, FALSE);
@@ -10462,7 +11945,7 @@ static const per_sequence_t T_setup_18_sequence[] = {
{ &hf_lte_rrc_srs_Bandwidth, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_srs_Bandwidth },
{ &hf_lte_rrc_srs_HoppingBandwidth, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_srs_HoppingBandwidth },
{ &hf_lte_rrc_freqDomainPosition, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_0_23 },
- { &hf_lte_rrc_duration , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_BOOLEAN },
+ { &hf_lte_rrc_duration , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_duration },
{ &hf_lte_rrc_srs_ConfigIndex, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_0_1023 },
{ &hf_lte_rrc_transmissionComb, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_0_1 },
{ &hf_lte_rrc_cyclicShift_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_cyclicShift },
@@ -12659,10 +14142,26 @@ col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionReestablishmentReject
static int
-dissect_lte_rrc_INTEGER_1_1800(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lte_rrc_T_waitTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 16U, NULL, FALSE);
+
+ proto_item_append_text(actx->created_item, "s");
+
+
+ return offset;
+}
+
+
+
+static int
+dissect_lte_rrc_T_extendedWaitTime_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1U, 1800U, NULL, FALSE);
+ proto_item_append_text(actx->created_item, "s");
+
+
return offset;
}
@@ -12681,7 +14180,7 @@ dissect_lte_rrc_T_nonCriticalExtension_23(tvbuff_t *tvb _U_, int offset _U_, asn
static const per_sequence_t RRCConnectionReject_v1020_IEs_sequence[] = {
- { &hf_lte_rrc_extendedWaitTime_r10, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_INTEGER_1_1800 },
+ { &hf_lte_rrc_extendedWaitTime_r10, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_extendedWaitTime_r10 },
{ &hf_lte_rrc_nonCriticalExtension_52, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_nonCriticalExtension_23 },
{ NULL, 0, 0, NULL }
};
@@ -12711,7 +14210,7 @@ dissect_lte_rrc_RRCConnectionReject_v8a0_IEs(tvbuff_t *tvb _U_, int offset _U_,
static const per_sequence_t RRCConnectionReject_r8_IEs_sequence[] = {
- { &hf_lte_rrc_waitTime , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_1_16 },
+ { &hf_lte_rrc_waitTime , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_waitTime },
{ &hf_lte_rrc_nonCriticalExtension_50, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_RRCConnectionReject_v8a0_IEs },
{ NULL, 0, 0, NULL }
};
@@ -13500,14 +14999,14 @@ col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverFromEUTRAPreparationReques
static const value_string lte_rrc_T_targetRAT_Type_vals[] = {
- { 0, "utra" },
- { 1, "geran" },
- { 2, "cdma2000-1XRTT" },
- { 3, "cdma2000-HRPD" },
- { 4, "spare4" },
- { 5, "spare3" },
- { 6, "spare2" },
- { 7, "spare1" },
+ { T_targetRAT_Type_utra, "utra" },
+ { T_targetRAT_Type_geran, "geran" },
+ { T_targetRAT_Type_cdma2000_1XRTT, "cdma2000-1XRTT" },
+ { T_targetRAT_Type_cdma2000_HRPD, "cdma2000-HRPD" },
+ { T_targetRAT_Type_spare4, "spare4" },
+ { T_targetRAT_Type_spare3, "spare3" },
+ { T_targetRAT_Type_spare2, "spare2" },
+ { T_targetRAT_Type_spare1, "spare1" },
{ 0, NULL }
};
@@ -13533,12 +15032,12 @@ dissect_lte_rrc_T_targetRAT_MessageContainer(tvbuff_t *tvb _U_, int offset _U_,
if(target_rat_msg_cont_tvb){
guint8 byte;
switch(lte_rrc_ho_target_rat_type_value){
- case 0:
+ case T_targetRAT_Type_utra:
/* utra */
if (rrc_irat_ho_to_utran_cmd_handle)
call_dissector(rrc_irat_ho_to_utran_cmd_handle, target_rat_msg_cont_tvb, actx->pinfo, tree);
break;
- case 1:
+ case T_targetRAT_Type_geran:
/* geran */
byte = tvb_get_guint8(target_rat_msg_cont_tvb, 0);
if (byte == 0x06) {
@@ -13551,10 +15050,10 @@ dissect_lte_rrc_T_targetRAT_MessageContainer(tvbuff_t *tvb _U_, int offset _U_,
}
}
break;
- case 2:
+ case T_targetRAT_Type_cdma2000_1XRTT:
/* cdma2000-1XRTT */
break;
- case 3:
+ case T_targetRAT_Type_cdma2000_HRPD:
/* cdma2000-HRPD */
break;
default:
@@ -13580,7 +15079,7 @@ dissect_lte_rrc_T_nas_SecurityParamFromEUTRA(tvbuff_t *tvb _U_, int offset _U_,
length = tvb_length(nas_sec_param_from_eutra_tvb);
item = proto_tree_add_text(tree, nas_sec_param_from_eutra_tvb, 0, length, "NAS security parameters from E-UTRA");
- subtree = proto_item_add_subtree(item, hf_lte_rrc_nas_SecurityParamFromEUTRA);
+ subtree = proto_item_add_subtree(item, ett_lte_rrc_nas_SecurityParam);
de_emm_sec_par_from_eutra(nas_sec_param_from_eutra_tvb, subtree, actx->pinfo, 0, length, NULL, 0);
@@ -13597,13 +15096,13 @@ dissect_lte_rrc_SystemInfoListGERAN_item(tvbuff_t *tvb _U_, int offset _U_, asn1
if (sys_info_list_tvb) {
switch (lte_rrc_si_or_psi_geran_val) {
- case 0:
+ case SI_OrPSI_GERAN_si:
/* SI message */
if (gsm_a_dtap_handle) {
call_dissector(gsm_a_dtap_handle, sys_info_list_tvb ,actx->pinfo, tree);
}
break;
- case 1:
+ case SI_OrPSI_GERAN_psi:
/* PSI message */
if (gsm_rlcmac_dl_handle) {
call_dissector(gsm_rlcmac_dl_handle, sys_info_list_tvb ,actx->pinfo, tree);
@@ -13634,14 +15133,14 @@ dissect_lte_rrc_SystemInfoListGERAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const value_string lte_rrc_SI_OrPSI_GERAN_vals[] = {
- { 0, "si" },
- { 1, "psi" },
+ { SI_OrPSI_GERAN_si, "si" },
+ { SI_OrPSI_GERAN_psi, "psi" },
{ 0, NULL }
};
static const per_choice_t SI_OrPSI_GERAN_choice[] = {
- { 0, &hf_lte_rrc_si , ASN1_NO_EXTENSIONS , dissect_lte_rrc_SystemInfoListGERAN },
- { 1, &hf_lte_rrc_psi , ASN1_NO_EXTENSIONS , dissect_lte_rrc_SystemInfoListGERAN },
+ { SI_OrPSI_GERAN_si, &hf_lte_rrc_si , ASN1_NO_EXTENSIONS , dissect_lte_rrc_SystemInfoListGERAN },
+ { SI_OrPSI_GERAN_psi, &hf_lte_rrc_psi , ASN1_NO_EXTENSIONS , dissect_lte_rrc_SystemInfoListGERAN },
{ 0, NULL, 0, NULL }
};
@@ -14291,6 +15790,9 @@ dissect_lte_rrc_Q_OffsetRangeInterRAT(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
-15, 15U, NULL, FALSE);
+ proto_item_append_text(actx->created_item, "dB");
+
+
return offset;
}
@@ -14659,6 +16161,15 @@ dissect_lte_rrc_RSRP_Range(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
static int
+dissect_lte_rrc_Threshold_RSRP_Range(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_lte_rrc_RSRP_Range(tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+
+static int
dissect_lte_rrc_RSRQ_Range(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 34U, NULL, FALSE);
@@ -14667,6 +16178,15 @@ dissect_lte_rrc_RSRQ_Range(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
}
+
+static int
+dissect_lte_rrc_Threshold_RSRQ_Range(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_lte_rrc_RSRQ_Range(tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
static const value_string lte_rrc_ThresholdEUTRA_vals[] = {
{ 0, "threshold-RSRP" },
{ 1, "threshold-RSRQ" },
@@ -14674,8 +16194,8 @@ static const value_string lte_rrc_ThresholdEUTRA_vals[] = {
};
static const per_choice_t ThresholdEUTRA_choice[] = {
- { 0, &hf_lte_rrc_threshold_RSRP, ASN1_NO_EXTENSIONS , dissect_lte_rrc_RSRP_Range },
- { 1, &hf_lte_rrc_threshold_RSRQ, ASN1_NO_EXTENSIONS , dissect_lte_rrc_RSRQ_Range },
+ { 0, &hf_lte_rrc_threshold_RSRP, ASN1_NO_EXTENSIONS , dissect_lte_rrc_Threshold_RSRP_Range },
+ { 1, &hf_lte_rrc_threshold_RSRQ, ASN1_NO_EXTENSIONS , dissect_lte_rrc_Threshold_RSRQ_Range },
{ 0, NULL, 0, NULL }
};
@@ -15129,7 +16649,7 @@ dissect_lte_rrc_ReportConfigEUTRA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static int
-dissect_lte_rrc_INTEGER_M5_91(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lte_rrc_Threshold_utra_RSRP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
-5, 91U, NULL, FALSE);
@@ -15139,7 +16659,7 @@ dissect_lte_rrc_INTEGER_M5_91(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
static int
-dissect_lte_rrc_INTEGER_0_49(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lte_rrc_Threshold_utra_EcN0(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 49U, NULL, FALSE);
@@ -15154,8 +16674,8 @@ static const value_string lte_rrc_ThresholdUTRA_vals[] = {
};
static const per_choice_t ThresholdUTRA_choice[] = {
- { 0, &hf_lte_rrc_utra_RSCP , ASN1_NO_EXTENSIONS , dissect_lte_rrc_INTEGER_M5_91 },
- { 1, &hf_lte_rrc_utra_EcN0 , ASN1_NO_EXTENSIONS , dissect_lte_rrc_INTEGER_0_49 },
+ { 0, &hf_lte_rrc_utra_RSCP_01, ASN1_NO_EXTENSIONS , dissect_lte_rrc_Threshold_utra_RSRP },
+ { 1, &hf_lte_rrc_utra_EcN0_01, ASN1_NO_EXTENSIONS , dissect_lte_rrc_Threshold_utra_EcN0 },
{ 0, NULL, 0, NULL }
};
@@ -15784,6 +17304,15 @@ dissect_lte_rrc_MeasGapConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
}
+
+static int
+dissect_lte_rrc_S_Measure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_lte_rrc_RSRP_Range(tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
static const per_sequence_t T_setup_25_sequence[] = {
{ &hf_lte_rrc_mobilityStateParameters, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_MobilityStateParameters },
{ &hf_lte_rrc_timeToTrigger_SF, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_SpeedStateScaleFactors },
@@ -15830,7 +17359,7 @@ static const per_sequence_t MeasConfig_sequence[] = {
{ &hf_lte_rrc_measIdToAddModList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lte_rrc_MeasIdToAddModList },
{ &hf_lte_rrc_quantityConfig, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lte_rrc_QuantityConfig },
{ &hf_lte_rrc_measGapConfig, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lte_rrc_MeasGapConfig },
- { &hf_lte_rrc_s_Measure , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lte_rrc_RSRP_Range },
+ { &hf_lte_rrc_s_Measure , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lte_rrc_S_Measure },
{ &hf_lte_rrc_preRegistrationInfoHRPD, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lte_rrc_PreRegistrationInfoHRPD },
{ &hf_lte_rrc_speedStatePars, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lte_rrc_T_speedStatePars },
{ NULL, 0, 0, NULL }
@@ -16181,7 +17710,7 @@ dissect_lte_rrc_T_nas_SecurityParamToEUTRA(tvbuff_t *tvb _U_, int offset _U_, as
length = tvb_length(nas_sec_param_to_eutra_tvb);
item = proto_tree_add_text(tree, nas_sec_param_to_eutra_tvb, 0, length, "NAS security parameters to E-UTRA");
- subtree = proto_item_add_subtree(item, hf_lte_rrc_nas_SecurityParamToEUTRA);
+ subtree = proto_item_add_subtree(item, ett_lte_rrc_nas_SecurityParam);
de_emm_sec_par_to_eutra(nas_sec_param_to_eutra_tvb, subtree, actx->pinfo, 0, length, NULL, 0);
@@ -16428,6 +17957,19 @@ dissect_lte_rrc_T_ul_FreqInfo_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
+
+static int
+dissect_lte_rrc_T_p0_NominalPUSCH_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -126, 24U, NULL, FALSE);
+
+ proto_item_append_text(actx->created_item, "dBm");
+
+
+ return offset;
+}
+
+
static const value_string lte_rrc_T_alpha_r10_vals[] = {
{ 0, "al0" },
{ 1, "al04" },
@@ -16451,7 +17993,7 @@ dissect_lte_rrc_T_alpha_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static const per_sequence_t UplinkPowerControlCommonSCell_r10_sequence[] = {
- { &hf_lte_rrc_p0_NominalPUSCH_r10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_M126_24 },
+ { &hf_lte_rrc_p0_NominalPUSCH_r10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_p0_NominalPUSCH_r10 },
{ &hf_lte_rrc_alpha_r10 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_alpha_r10 },
{ NULL, 0, 0, NULL }
};
@@ -16651,6 +18193,19 @@ dissect_lte_rrc_PUSCH_ConfigDedicatedSCell_r10(tvbuff_t *tvb _U_, int offset _U_
}
+
+static int
+dissect_lte_rrc_T_p0_UE_PUSCH_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -8, 7U, NULL, FALSE);
+
+ proto_item_append_text(actx->created_item, "dB");
+
+
+ return offset;
+}
+
+
static const value_string lte_rrc_T_deltaMCS_Enabled_r10_vals[] = {
{ 0, "en0" },
{ 1, "en1" },
@@ -16684,7 +18239,7 @@ dissect_lte_rrc_T_pathlossReferenceLinking_r10(tvbuff_t *tvb _U_, int offset _U_
static const per_sequence_t UplinkPowerControlDedicatedSCell_r10_sequence[] = {
- { &hf_lte_rrc_p0_UE_PUSCH_r10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_M8_7 },
+ { &hf_lte_rrc_p0_UE_PUSCH_r10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_p0_UE_PUSCH_r10 },
{ &hf_lte_rrc_deltaMCS_Enabled_r10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_deltaMCS_Enabled_r10 },
{ &hf_lte_rrc_accumulationEnabled_r10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_BOOLEAN },
{ &hf_lte_rrc_pSRS_Offset_r10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_0_15 },
@@ -17270,7 +18825,7 @@ static const per_sequence_t CellInfoGERAN_r9_sequence[] = {
static int
dissect_lte_rrc_CellInfoGERAN_r9(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- lte_rrc_si_or_psi_geran_val = 0; /* SI message */
+ lte_rrc_si_or_psi_geran_val = SI_OrPSI_GERAN_si; /* SI message */
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_lte_rrc_CellInfoGERAN_r9, CellInfoGERAN_r9_sequence);
@@ -17382,10 +18937,25 @@ dissect_lte_rrc_CellInfoListUTRA_TDD_r9(tvbuff_t *tvb _U_, int offset _U_, asn1_
}
+
+static int
+dissect_lte_rrc_T_utra_BCCH_Container_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ tvbuff_t *utra_bcch_cont_tvb = NULL;
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, FALSE, &utra_bcch_cont_tvb);
+
+ if (utra_bcch_cont_tvb && rrc_sys_info_cont_handle)
+ call_dissector(rrc_sys_info_cont_handle, utra_bcch_cont_tvb, actx->pinfo, tree);
+
+
+ return offset;
+}
+
+
static const per_sequence_t CellInfoUTRA_TDD_r10_sequence[] = {
{ &hf_lte_rrc_physCellId_r10_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_PhysCellIdUTRA_TDD },
{ &hf_lte_rrc_carrierFreq_r10_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_ARFCN_ValueUTRA },
- { &hf_lte_rrc_utra_BCCH_Container_r10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_OCTET_STRING },
+ { &hf_lte_rrc_utra_BCCH_Container_r10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_utra_BCCH_Container_r10 },
{ NULL, 0, 0, NULL }
};
@@ -17438,6 +19008,19 @@ dissect_lte_rrc_T_cellInfoList_r9(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
+
+static int
+dissect_lte_rrc_T_extendedWaitTime_r10_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 1800U, NULL, FALSE);
+
+ proto_item_append_text(actx->created_item, "s");
+
+
+ return offset;
+}
+
+
static const per_sequence_t T_nonCriticalExtension_24_sequence[] = {
{ NULL, 0, 0, NULL }
};
@@ -17452,7 +19035,7 @@ dissect_lte_rrc_T_nonCriticalExtension_24(tvbuff_t *tvb _U_, int offset _U_, asn
static const per_sequence_t RRCConnectionRelease_v1020_IEs_sequence[] = {
- { &hf_lte_rrc_extendedWaitTime_r10, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_INTEGER_1_1800 },
+ { &hf_lte_rrc_extendedWaitTime_r10_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_extendedWaitTime_r10_01 },
{ &hf_lte_rrc_nonCriticalExtension_56, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_nonCriticalExtension_24 },
{ NULL, 0, 0, NULL }
};
@@ -17729,14 +19312,14 @@ col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeCommand ");
static const value_string lte_rrc_RAT_Type_vals[] = {
- { 0, "eutra" },
- { 1, "utra" },
- { 2, "geran-cs" },
- { 3, "geran-ps" },
- { 4, "cdma2000-1XRTT" },
- { 5, "spare3" },
- { 6, "spare2" },
- { 7, "spare1" },
+ { RAT_Type_eutra, "eutra" },
+ { RAT_Type_utra, "utra" },
+ { RAT_Type_geran_cs, "geran-cs" },
+ { RAT_Type_geran_ps, "geran-ps" },
+ { RAT_Type_cdma2000_1XRTT, "cdma2000-1XRTT" },
+ { RAT_Type_spare3, "spare3" },
+ { RAT_Type_spare2, "spare2" },
+ { RAT_Type_spare1, "spare1" },
{ 0, NULL }
};
@@ -19677,6 +21260,26 @@ dissect_lte_rrc_T_cgi_Info_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
}
+
+static int
+dissect_lte_rrc_INTEGER_M5_91(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -5, 91U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_lte_rrc_INTEGER_0_49(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 49U, NULL, FALSE);
+
+ return offset;
+}
+
+
static const per_sequence_t T_eag_1_02_sequence[] = {
{ &hf_lte_rrc_additionalSI_Info_r9, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_AdditionalSI_Info_r9 },
{ NULL, 0, 0, NULL }
@@ -21035,15 +22638,15 @@ if(ue_eutra_cap_tvb){
proto_tree *subtree;
guint8 byte;
switch(lte_rrc_rat_type_value){
- case 0:
+ case RAT_Type_eutra:
/* eutra */
dissect_lte_rrc_UE_EUTRA_Capability_PDU(ue_eutra_cap_tvb, actx->pinfo, tree);
break;
- case 1:
+ case RAT_Type_utra:
/* utra */
dissect_rrc_InterRATHandoverInfo_PDU(ue_eutra_cap_tvb, actx->pinfo, tree);
break;
- case 2:
+ case RAT_Type_geran_cs:
/* geran-cs */
/* Mobile Station Classmark 2 is formatted as TLV with the two first bytes set to 0x33 0x03 */
item = proto_tree_add_text(tree, ue_eutra_cap_tvb, 0, 5, "Mobile Station Classmark 2");
@@ -21065,7 +22668,7 @@ if(ue_eutra_cap_tvb){
subtree = proto_item_add_subtree(item, ett_lte_rrc_UE_CapabilityRAT_Container);
de_ms_cm_3(ue_eutra_cap_tvb, subtree, actx->pinfo, 5, length, NULL, 0);
break;
- case 3:
+ case RAT_Type_geran_ps:
/* geran-ps */
/* MS Radio Access Capability is formatted as V */
length = tvb_length(ue_eutra_cap_tvb);
@@ -21073,7 +22676,7 @@ if(ue_eutra_cap_tvb){
subtree = proto_item_add_subtree(item, ett_lte_rrc_UE_CapabilityRAT_Container);
de_gmm_ms_radio_acc_cap(ue_eutra_cap_tvb, subtree, actx->pinfo, 0, length, NULL, 0);
break;
- case 4:
+ case RAT_Type_cdma2000_1XRTT:
/* cdma2000-1XRTT */
/* dissection of "A21 Mobile Subscription Information" could be added to packet-ansi_a.c */
break;
@@ -21843,6 +23446,20 @@ dissect_lte_rrc_T_failedPCellId_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
+
+static int
+dissect_lte_rrc_T_timeConnFailure_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ guint32 timeConnFailure_val;
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 1023U, &timeConnFailure_val, FALSE);
+
+
+ proto_item_append_text(actx->created_item, " (%dms)", 100*timeConnFailure_val);
+
+ return offset;
+}
+
+
static const value_string lte_rrc_T_connectionFailureType_r10_vals[] = {
{ 0, "rlf" },
{ 1, "hof" },
@@ -21863,7 +23480,7 @@ static const per_sequence_t RLF_Report_r9_eag_1_sequence[] = {
{ &hf_lte_rrc_locationInfo_r10, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_LocationInfo_r10 },
{ &hf_lte_rrc_failedPCellId_r10, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_failedPCellId_r10 },
{ &hf_lte_rrc_reestablishmentCellId_r10, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_CellGlobalIdEUTRA },
- { &hf_lte_rrc_timeConnFailure_r10, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_INTEGER_0_1023 },
+ { &hf_lte_rrc_timeConnFailure_r10, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_timeConnFailure_r10 },
{ &hf_lte_rrc_connectionFailureType_r10, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_connectionFailureType_r10 },
{ &hf_lte_rrc_previousPCellId_r10, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_CellGlobalIdEUTRA },
{ NULL, 0, 0, NULL }
@@ -23117,69 +24734,69 @@ dissect_lte_rrc_T_featureGroupIndicators(tvbuff_t *tvb _U_, int offset _U_, asn1
proto_tree *subtree;
gint curr_bit_offset = 0;
subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_featureGroupIndicators);
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_1, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_1, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_2, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_2, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_3, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_3, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_4, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_4, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_5, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_5, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_6, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_6, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_7, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_7, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_8, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_8, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_9, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_9, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_10, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_10, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_11, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_11, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_12, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_12, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_13, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_13, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_14, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_14, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_15, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_15, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_16, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_16, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_17, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_17, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_18, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_18, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_19, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_19, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_20, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_20, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_21, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_21, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_22, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_22, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_23, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_23, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_24, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_24, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_25, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_25, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_26, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_26, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_27, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_27, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_28, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_28, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_29, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_29, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_30, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_30, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_31, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_31, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_32, featureGroupIndicators_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_32, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
}
@@ -23224,6 +24841,8 @@ static const value_string lte_rrc_SupportedBandUTRA_FDD_vals[] = {
{ 0, NULL }
};
+static value_string_ext lte_rrc_SupportedBandUTRA_FDD_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_SupportedBandUTRA_FDD_vals);
+
static int
dissect_lte_rrc_SupportedBandUTRA_FDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -23971,6 +25590,16 @@ dissect_lte_rrc_SON_Parameters_r9(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static int
+dissect_lte_rrc_T_lateNonCriticalExtension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_octet_string_containing_pdu_new(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, FALSE, dissect_UE_EUTRA_Capability_v9a0_IEs_PDU);
+
+ return offset;
+}
+
+
+
+static int
dissect_lte_rrc_INTEGER_6_8(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
6U, 8U, NULL, FALSE);
@@ -24331,79 +25960,79 @@ dissect_lte_rrc_MeasParameters_v1020(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
static int
-dissect_lte_rrc_T_featureGroupIndicators_v1020(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- tvbuff_t *featureGroupIndicatorsV1020_tvb=NULL;
+dissect_lte_rrc_T_featureGroupIndRel10_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ tvbuff_t *featureGroupIndRel10_tvb=NULL;
offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
- 32, 32, FALSE, &featureGroupIndicatorsV1020_tvb);
+ 32, 32, FALSE, &featureGroupIndRel10_tvb);
- if(featureGroupIndicatorsV1020_tvb){
+ if(featureGroupIndRel10_tvb){
/* Dissect featureGroupIndicators-v1020 */
proto_tree *subtree;
gint curr_bit_offset = 0;
- subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_featureGroupIndicatorsV1020);
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_101, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_featureGroupIndRel10);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_101, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_102, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_102, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_103, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_103, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_104, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_104, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_105, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_105, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_106, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_106, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_107, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_107, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_108, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_108, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_109, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_109, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_110, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_110, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_111, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_111, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_112, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_112, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_113, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_113, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_114, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_114, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_115, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_115, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_116, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_116, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_117, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_117, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_118, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_118, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_119, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_119, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_120, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_120, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_121, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_121, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_122, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_122, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_123, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_123, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_124, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_124, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_125, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_125, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_126, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_126, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_127, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_127, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_128, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_128, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_129, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_129, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_130, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_130, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_131, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_131, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
- proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_132, featureGroupIndicatorsV1020_tvb, curr_bit_offset, 1, FALSE);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_132, featureGroupIndRel10_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
curr_bit_offset++;
}
@@ -24515,14 +26144,14 @@ dissect_lte_rrc_IRAT_ParametersUTRA_TDD_v1020(tvbuff_t *tvb _U_, int offset _U_,
}
-static const per_sequence_t T_nonCriticalExtension_38_sequence[] = {
+static const per_sequence_t T_nonCriticalExtension_39_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_lte_rrc_T_nonCriticalExtension_38(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lte_rrc_T_nonCriticalExtension_39(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_lte_rrc_T_nonCriticalExtension_38, T_nonCriticalExtension_38_sequence);
+ ett_lte_rrc_T_nonCriticalExtension_39, T_nonCriticalExtension_39_sequence);
return offset;
}
@@ -24533,11 +26162,11 @@ static const per_sequence_t UE_EUTRA_Capability_v1020_IEs_sequence[] = {
{ &hf_lte_rrc_phyLayerParameters_v1020, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_PhyLayerParameters_v1020 },
{ &hf_lte_rrc_rf_Parameters_v1020, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_RF_Parameters_v1020 },
{ &hf_lte_rrc_measParameters_v1020, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_MeasParameters_v1020 },
- { &hf_lte_rrc_featureGroupIndicators_v1020, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_featureGroupIndicators_v1020 },
+ { &hf_lte_rrc_featureGroupIndRel10_r10, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_featureGroupIndRel10_r10 },
{ &hf_lte_rrc_interRAT_ParametersCDMA2000_v1020, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_IRAT_ParametersCDMA2000_1XRTT_v1020 },
{ &hf_lte_rrc_ue_BasedNetwPerfMeasParameters_r10, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_UE_BasedNetwPerfMeasParameters_r10 },
{ &hf_lte_rrc_interRAT_ParametersUTRA_TDD_v1020, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_IRAT_ParametersUTRA_TDD_v1020 },
- { &hf_lte_rrc_nonCriticalExtension_90, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_nonCriticalExtension_38 },
+ { &hf_lte_rrc_nonCriticalExtension_91, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_nonCriticalExtension_39 },
{ NULL, 0, 0, NULL }
};
@@ -24551,7 +26180,7 @@ dissect_lte_rrc_UE_EUTRA_Capability_v1020_IEs(tvbuff_t *tvb _U_, int offset _U_,
static const per_sequence_t UE_EUTRA_Capability_v940_IEs_sequence[] = {
- { &hf_lte_rrc_lateNonCriticalExtension, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_OCTET_STRING },
+ { &hf_lte_rrc_lateNonCriticalExtension_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_lateNonCriticalExtension },
{ &hf_lte_rrc_nonCriticalExtension_89, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_UE_EUTRA_Capability_v1020_IEs },
{ NULL, 0, 0, NULL }
};
@@ -24611,6 +26240,305 @@ dissect_lte_rrc_UE_EUTRA_Capability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static int
+dissect_lte_rrc_T_featureGroupIndRel9Add_r9(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ tvbuff_t *featureGroupIndRel9Add_tvb=NULL;
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 32, 32, FALSE, &featureGroupIndRel9Add_tvb);
+
+ if(featureGroupIndRel9Add_tvb){
+ /* Dissect featureGroupIndicators */
+ proto_tree *subtree;
+ gint curr_bit_offset = 0;
+ subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_featureGroupIndRel9Add);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_33, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_34, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_35, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_36, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_37, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_38, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_39, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_40, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_41, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_42, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_43, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_44, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_45, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_46, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_47, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_48, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_49, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_50, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_51, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_52, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_53, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_54, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_55, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_56, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_57, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_58, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_59, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_60, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_61, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_62, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_63, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_64, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ }
+
+
+ return offset;
+}
+
+
+
+static int
+dissect_lte_rrc_T_featureGroupIndicators_r9(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ tvbuff_t *featureGroupIndicators_tvb=NULL;
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 32, 32, FALSE, &featureGroupIndicators_tvb);
+
+ if(featureGroupIndicators_tvb){
+ /* Dissect featureGroupIndicators */
+ proto_tree *subtree;
+ gint curr_bit_offset = 0;
+ subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_featureGroupIndicators);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_1, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_2, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_3, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_4, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_5, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_6, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_7, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_8, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_9, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_10, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_11, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_12, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_13, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_14, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_15, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_16, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_17, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_18, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_19, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_20, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_21, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_22, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_23, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_24, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_25, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_26, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_27, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_28, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_29, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_30, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_31, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_32, featureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ }
+
+
+ return offset;
+}
+
+
+
+static int
+dissect_lte_rrc_T_featureGroupIndRel9Add_r9_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ tvbuff_t *featureGroupIndRel9Add_tvb=NULL;
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 32, 32, FALSE, &featureGroupIndRel9Add_tvb);
+
+ if(featureGroupIndRel9Add_tvb){
+ /* Dissect featureGroupIndicators */
+ proto_tree *subtree;
+ gint curr_bit_offset = 0;
+ subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_featureGroupIndRel9Add);
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_33, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_34, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_35, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_36, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_37, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_38, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_39, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_40, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_41, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_42, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_43, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_44, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_45, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_46, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_47, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_48, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_49, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_50, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_51, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_52, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_53, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_54, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_55, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_56, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_57, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_58, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_59, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_60, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_61, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_62, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_63, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_64, featureGroupIndRel9Add_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_bit_offset++;
+ }
+
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_EUTRA_CapabilityAddXDD_Mode_r9_sequence[] = {
+ { &hf_lte_rrc_phyLayerParameters_r9, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lte_rrc_PhyLayerParameters },
+ { &hf_lte_rrc_featureGroupIndicators_r9, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lte_rrc_T_featureGroupIndicators_r9 },
+ { &hf_lte_rrc_featureGroupIndRel9Add_r9_01, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lte_rrc_T_featureGroupIndRel9Add_r9_01 },
+ { &hf_lte_rrc_interRAT_ParametersGERAN_r9, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lte_rrc_IRAT_ParametersGERAN },
+ { &hf_lte_rrc_interRAT_ParametersUTRA_r9, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lte_rrc_IRAT_ParametersUTRA_v920 },
+ { &hf_lte_rrc_interRAT_ParametersCDMA2000_r9, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lte_rrc_IRAT_ParametersCDMA2000_1XRTT_v920 },
+ { &hf_lte_rrc_neighCellSI_AcquisitionParameters_r9, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lte_rrc_NeighCellSI_AcquisitionParameters_r9 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lte_rrc_UE_EUTRA_CapabilityAddXDD_Mode_r9(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_lte_rrc_UE_EUTRA_CapabilityAddXDD_Mode_r9, UE_EUTRA_CapabilityAddXDD_Mode_r9_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtension_38_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lte_rrc_T_nonCriticalExtension_38(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_lte_rrc_T_nonCriticalExtension_38, T_nonCriticalExtension_38_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_EUTRA_Capability_v9a0_IEs_sequence[] = {
+ { &hf_lte_rrc_featureGroupIndRel9Add_r9, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_featureGroupIndRel9Add_r9 },
+ { &hf_lte_rrc_fdd_Add_UE_EUTRA_Capabilities_r9, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_UE_EUTRA_CapabilityAddXDD_Mode_r9 },
+ { &hf_lte_rrc_tdd_Add_UE_EUTRA_Capabilities_r9, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_UE_EUTRA_CapabilityAddXDD_Mode_r9 },
+ { &hf_lte_rrc_nonCriticalExtension_90, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_nonCriticalExtension_38 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lte_rrc_UE_EUTRA_Capability_v9a0_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_lte_rrc_UE_EUTRA_Capability_v9a0_IEs, UE_EUTRA_Capability_v9a0_IEs_sequence);
+
+ return offset;
+}
+
+
+
+static int
dissect_lte_rrc_T_handoverCommandMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_octet_string_containing_pdu_new(tvb, offset, actx, tree, hf_index,
NO_BOUND, NO_BOUND, FALSE, dissect_DL_DCCH_Message_PDU);
@@ -24619,14 +26547,14 @@ dissect_lte_rrc_T_handoverCommandMessage(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_nonCriticalExtension_39_sequence[] = {
+static const per_sequence_t T_nonCriticalExtension_40_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_lte_rrc_T_nonCriticalExtension_39(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lte_rrc_T_nonCriticalExtension_40(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_lte_rrc_T_nonCriticalExtension_39, T_nonCriticalExtension_39_sequence);
+ ett_lte_rrc_T_nonCriticalExtension_40, T_nonCriticalExtension_40_sequence);
return offset;
}
@@ -24634,7 +26562,7 @@ dissect_lte_rrc_T_nonCriticalExtension_39(tvbuff_t *tvb _U_, int offset _U_, asn
static const per_sequence_t HandoverCommand_r8_IEs_sequence[] = {
{ &hf_lte_rrc_handoverCommandMessage, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_handoverCommandMessage },
- { &hf_lte_rrc_nonCriticalExtension_91, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_nonCriticalExtension_39 },
+ { &hf_lte_rrc_nonCriticalExtension_92, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_nonCriticalExtension_40 },
{ NULL, 0, 0, NULL }
};
@@ -24859,6 +26787,8 @@ static const value_string lte_rrc_T_ue_InactiveTime_vals[] = {
{ 0, NULL }
};
+static value_string_ext lte_rrc_T_ue_InactiveTime_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_T_ue_InactiveTime_vals);
+
static int
dissect_lte_rrc_T_ue_InactiveTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -25020,14 +26950,14 @@ dissect_lte_rrc_T_ue_ConfigRelease_r9(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
}
-static const per_sequence_t T_nonCriticalExtension_40_sequence[] = {
+static const per_sequence_t T_nonCriticalExtension_41_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_lte_rrc_T_nonCriticalExtension_40(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lte_rrc_T_nonCriticalExtension_41(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_lte_rrc_T_nonCriticalExtension_40, T_nonCriticalExtension_40_sequence);
+ ett_lte_rrc_T_nonCriticalExtension_41, T_nonCriticalExtension_41_sequence);
return offset;
}
@@ -25035,7 +26965,7 @@ dissect_lte_rrc_T_nonCriticalExtension_40(tvbuff_t *tvb _U_, int offset _U_, asn
static const per_sequence_t HandoverPreparationInformation_v920_IEs_sequence[] = {
{ &hf_lte_rrc_ue_ConfigRelease_r9, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_ue_ConfigRelease_r9 },
- { &hf_lte_rrc_nonCriticalExtension_93, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_nonCriticalExtension_40 },
+ { &hf_lte_rrc_nonCriticalExtension_94, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_nonCriticalExtension_41 },
{ NULL, 0, 0, NULL }
};
@@ -25053,7 +26983,7 @@ static const per_sequence_t HandoverPreparationInformation_r8_IEs_sequence[] = {
{ &hf_lte_rrc_as_Config , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_AS_Config },
{ &hf_lte_rrc_rrm_Config , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_RRM_Config },
{ &hf_lte_rrc_as_Context , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_AS_Context },
- { &hf_lte_rrc_nonCriticalExtension_92, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_HandoverPreparationInformation_v920_IEs },
+ { &hf_lte_rrc_nonCriticalExtension_93, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_HandoverPreparationInformation_v920_IEs },
{ NULL, 0, 0, NULL }
};
@@ -25159,14 +27089,14 @@ dissect_lte_rrc_T_ue_RadioAccessCapabilityInfo(tvbuff_t *tvb _U_, int offset _U_
}
-static const per_sequence_t T_nonCriticalExtension_41_sequence[] = {
+static const per_sequence_t T_nonCriticalExtension_42_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_lte_rrc_T_nonCriticalExtension_41(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lte_rrc_T_nonCriticalExtension_42(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_lte_rrc_T_nonCriticalExtension_41, T_nonCriticalExtension_41_sequence);
+ ett_lte_rrc_T_nonCriticalExtension_42, T_nonCriticalExtension_42_sequence);
return offset;
}
@@ -25174,7 +27104,7 @@ dissect_lte_rrc_T_nonCriticalExtension_41(tvbuff_t *tvb _U_, int offset _U_, asn
static const per_sequence_t UERadioAccessCapabilityInformation_r8_IEs_sequence[] = {
{ &hf_lte_rrc_ue_RadioAccessCapabilityInfo_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_ue_RadioAccessCapabilityInfo },
- { &hf_lte_rrc_nonCriticalExtension_94, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_nonCriticalExtension_41 },
+ { &hf_lte_rrc_nonCriticalExtension_95, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_nonCriticalExtension_42 },
{ NULL, 0, 0, NULL }
};
@@ -25383,6 +27313,14 @@ static int dissect_SystemInformationBlockType1_PDU(tvbuff_t *tvb _U_, packet_inf
offset += 7; offset >>= 3;
return offset;
}
+static int dissect_UE_EUTRA_Capability_v9a0_IEs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
+ int offset = 0;
+ asn1_ctx_t asn1_ctx;
+ asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
+ offset = dissect_lte_rrc_UE_EUTRA_Capability_v9a0_IEs(tvb, offset, &asn1_ctx, tree, hf_lte_rrc_UE_EUTRA_Capability_v9a0_IEs_PDU);
+ offset += 7; offset >>= 3;
+ return offset;
+}
static int dissect_SystemInformationBlockType1_v890_IEs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
int offset = 0;
asn1_ctx_t asn1_ctx;
@@ -25394,7 +27332,7 @@ static int dissect_SystemInformationBlockType1_v890_IEs_PDU(tvbuff_t *tvb _U_, p
/*--- End of included file: packet-lte-rrc-fn.c ---*/
-#line 402 "../../asn1/lte-rrc/packet-lte-rrc-template.c"
+#line 1675 "../../asn1/lte-rrc/packet-lte-rrc-template.c"
static void
dissect_lte_rrc_DL_CCCH(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
@@ -25558,6 +27496,10 @@ void proto_register_lte_rrc(void) {
{ "SystemInformationBlockType1", "lte-rrc.SystemInformationBlockType1",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_lte_rrc_UE_EUTRA_Capability_v9a0_IEs_PDU,
+ { "UE-EUTRA-Capability-v9a0-IEs", "lte-rrc.UE_EUTRA_Capability_v9a0_IEs",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_lte_rrc_SystemInformationBlockType1_v890_IEs_PDU,
{ "SystemInformationBlockType1-v890-IEs", "lte-rrc.SystemInformationBlockType1_v890_IEs",
FT_NONE, BASE_NONE, NULL, 0,
@@ -26865,7 +28807,7 @@ void proto_register_lte_rrc(void) {
{ &hf_lte_rrc_waitTime,
{ "waitTime", "lte-rrc.waitTime",
FT_UINT32, BASE_DEC, NULL, 0,
- "INTEGER_1_16", HFILL }},
+ NULL, HFILL }},
{ &hf_lte_rrc_nonCriticalExtension_50,
{ "nonCriticalExtension", "lte-rrc.nonCriticalExtension",
FT_NONE, BASE_NONE, NULL, 0,
@@ -26877,7 +28819,7 @@ void proto_register_lte_rrc(void) {
{ &hf_lte_rrc_extendedWaitTime_r10,
{ "extendedWaitTime-r10", "lte-rrc.extendedWaitTime_r10",
FT_UINT32, BASE_DEC, NULL, 0,
- "INTEGER_1_1800", HFILL }},
+ NULL, HFILL }},
{ &hf_lte_rrc_nonCriticalExtension_52,
{ "nonCriticalExtension", "lte-rrc.nonCriticalExtension",
FT_NONE, BASE_NONE, NULL, 0,
@@ -26942,6 +28884,10 @@ void proto_register_lte_rrc(void) {
{ "nonCriticalExtension", "lte-rrc.nonCriticalExtension",
FT_NONE, BASE_NONE, NULL, 0,
"RRCConnectionRelease_v1020_IEs", HFILL }},
+ { &hf_lte_rrc_extendedWaitTime_r10_01,
+ { "extendedWaitTime-r10", "lte-rrc.extendedWaitTime_r10",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "T_extendedWaitTime_r10_01", HFILL }},
{ &hf_lte_rrc_nonCriticalExtension_56,
{ "nonCriticalExtension", "lte-rrc.nonCriticalExtension",
FT_NONE, BASE_NONE, NULL, 0,
@@ -27044,7 +28990,7 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_bandClass,
{ "bandClass", "lte-rrc.bandClass",
- FT_UINT32, BASE_DEC, VALS(lte_rrc_BandclassCDMA2000_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_BandclassCDMA2000_vals_ext, 0,
"BandclassCDMA2000", HFILL }},
{ &hf_lte_rrc_BandClassPriorityList1XRTT_item,
{ "BandClassPriority1XRTT", "lte-rrc.BandClassPriority1XRTT",
@@ -27105,7 +29051,7 @@ void proto_register_lte_rrc(void) {
{ &hf_lte_rrc_utra_BCCH_Container_r10,
{ "utra-BCCH-Container-r10", "lte-rrc.utra_BCCH_Container_r10",
FT_BYTES, BASE_NONE, NULL, 0,
- "OCTET_STRING", HFILL }},
+ NULL, HFILL }},
{ &hf_lte_rrc_criticalExtensions_22,
{ "criticalExtensions", "lte-rrc.criticalExtensions",
FT_UINT32, BASE_DEC, VALS(lte_rrc_T_criticalExtensions_22_vals), 0,
@@ -27404,11 +29350,11 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_q_RxLevMin,
{ "q-RxLevMin", "lte-rrc.q_RxLevMin",
- FT_INT32, BASE_DEC, NULL, 0,
+ FT_INT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_q_RxLevMin_vals_ext, 0,
NULL, HFILL }},
{ &hf_lte_rrc_q_RxLevMinOffset,
{ "q-RxLevMinOffset", "lte-rrc.q_RxLevMinOffset",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_DEC, VALS(lte_rrc_q_RxLevMinOffset_vals), 0,
"INTEGER_1_8", HFILL }},
{ &hf_lte_rrc_p_Max,
{ "p-Max", "lte-rrc.p_Max",
@@ -27485,7 +29431,7 @@ void proto_register_lte_rrc(void) {
{ &hf_lte_rrc_q_QualMinOffset_r9,
{ "q-QualMinOffset-r9", "lte-rrc.q_QualMinOffset_r9",
FT_UINT32, BASE_DEC, NULL, 0,
- "INTEGER_1_8", HFILL }},
+ "T_q_QualMinOffset_r9", HFILL }},
{ &hf_lte_rrc_criticalExtensions_29,
{ "criticalExtensions", "lte-rrc.criticalExtensions",
FT_UINT32, BASE_DEC, VALS(lte_rrc_T_criticalExtensions_29_vals), 0,
@@ -27640,11 +29586,11 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_rsrpResult_r9,
{ "rsrpResult-r9", "lte-rrc.rsrpResult_r9",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_RSRP_Range_vals_ext, 0,
"RSRP_Range", HFILL }},
{ &hf_lte_rrc_rsrqResult_r9,
{ "rsrqResult-r9", "lte-rrc.rsrqResult_r9",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_RSRQ_Range_vals_ext, 0,
"RSRQ_Range", HFILL }},
{ &hf_lte_rrc_measResultNeighCells_r9,
{ "measResultNeighCells-r9", "lte-rrc.measResultNeighCells_r9",
@@ -27689,7 +29635,7 @@ void proto_register_lte_rrc(void) {
{ &hf_lte_rrc_timeConnFailure_r10,
{ "timeConnFailure-r10", "lte-rrc.timeConnFailure_r10",
FT_UINT32, BASE_DEC, NULL, 0,
- "INTEGER_0_1023", HFILL }},
+ NULL, HFILL }},
{ &hf_lte_rrc_connectionFailureType_r10,
{ "connectionFailureType-r10", "lte-rrc.connectionFailureType_r10",
FT_UINT32, BASE_DEC, VALS(lte_rrc_T_connectionFailureType_r10_vals), 0,
@@ -27764,11 +29710,11 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_rsrpResult_r10,
{ "rsrpResult-r10", "lte-rrc.rsrpResult_r10",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_RSRP_Range_vals_ext, 0,
"RSRP_Range", HFILL }},
{ &hf_lte_rrc_rsrqResult_r10,
{ "rsrqResult-r10", "lte-rrc.rsrqResult_r10",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_RSRQ_Range_vals_ext, 0,
"RSRQ_Range", HFILL }},
{ &hf_lte_rrc_measResultNeighCells_r10,
{ "measResultNeighCells-r10", "lte-rrc.measResultNeighCells_r10",
@@ -27964,11 +29910,11 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_s_NonIntraSearch,
{ "s-NonIntraSearch", "lte-rrc.s_NonIntraSearch",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_ReselectionThreshold_vals_ext, 0,
"ReselectionThreshold", HFILL }},
{ &hf_lte_rrc_threshServingLow,
{ "threshServingLow", "lte-rrc.threshServingLow",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_ReselectionThreshold_vals_ext, 0,
"ReselectionThreshold", HFILL }},
{ &hf_lte_rrc_intraFreqCellReselectionInfo,
{ "intraFreqCellReselectionInfo", "lte-rrc.intraFreqCellReselectionInfo",
@@ -27976,7 +29922,7 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_s_IntraSearch,
{ "s-IntraSearch", "lte-rrc.s_IntraSearch",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_ReselectionThreshold_vals_ext, 0,
"ReselectionThreshold", HFILL }},
{ &hf_lte_rrc_allowedMeasBandwidth,
{ "allowedMeasBandwidth", "lte-rrc.allowedMeasBandwidth",
@@ -28004,7 +29950,7 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_s_IntraSearchP_r9,
{ "s-IntraSearchP-r9", "lte-rrc.s_IntraSearchP_r9",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_ReselectionThreshold_vals_ext, 0,
"ReselectionThreshold", HFILL }},
{ &hf_lte_rrc_s_IntraSearchQ_r9,
{ "s-IntraSearchQ-r9", "lte-rrc.s_IntraSearchQ_r9",
@@ -28016,7 +29962,7 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_s_NonIntraSearchP_r9,
{ "s-NonIntraSearchP-r9", "lte-rrc.s_NonIntraSearchP_r9",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_ReselectionThreshold_vals_ext, 0,
"ReselectionThreshold", HFILL }},
{ &hf_lte_rrc_s_NonIntraSearchQ_r9,
{ "s-NonIntraSearchQ-r9", "lte-rrc.s_NonIntraSearchQ_r9",
@@ -28044,7 +29990,7 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_q_OffsetCell,
{ "q-OffsetCell", "lte-rrc.q_OffsetCell",
- FT_UINT32, BASE_DEC, VALS(lte_rrc_Q_OffsetRange_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_Q_OffsetRange_vals_ext, 0,
"Q_OffsetRange", HFILL }},
{ &hf_lte_rrc_IntraFreqBlackCellList_item,
{ "PhysCellIdRange", "lte-rrc.PhysCellIdRange",
@@ -28064,15 +30010,15 @@ void proto_register_lte_rrc(void) {
"ARFCN_ValueEUTRA", HFILL }},
{ &hf_lte_rrc_threshX_High,
{ "threshX-High", "lte-rrc.threshX_High",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_ReselectionThreshold_vals_ext, 0,
"ReselectionThreshold", HFILL }},
{ &hf_lte_rrc_threshX_Low,
{ "threshX-Low", "lte-rrc.threshX_Low",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_ReselectionThreshold_vals_ext, 0,
"ReselectionThreshold", HFILL }},
{ &hf_lte_rrc_q_OffsetFreq,
{ "q-OffsetFreq", "lte-rrc.q_OffsetFreq",
- FT_UINT32, BASE_DEC, VALS(lte_rrc_Q_OffsetRange_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_Q_OffsetRange_vals_ext, 0,
"Q_OffsetRange", HFILL }},
{ &hf_lte_rrc_interFreqNeighCellList,
{ "interFreqNeighCellList", "lte-rrc.interFreqNeighCellList",
@@ -28124,16 +30070,16 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_q_RxLevMin_01,
{ "q-RxLevMin", "lte-rrc.q_RxLevMin",
- FT_INT32, BASE_DEC, NULL, 0,
+ FT_INT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_utra_q_RxLevMin_vals_ext, 0,
"INTEGER_M60_M13", HFILL }},
{ &hf_lte_rrc_p_MaxUTRA,
{ "p-MaxUTRA", "lte-rrc.p_MaxUTRA",
FT_INT32, BASE_DEC, NULL, 0,
- "INTEGER_M50_33", HFILL }},
+ NULL, HFILL }},
{ &hf_lte_rrc_q_QualMin,
{ "q-QualMin", "lte-rrc.q_QualMin",
FT_INT32, BASE_DEC, NULL, 0,
- "INTEGER_M24_0", HFILL }},
+ NULL, HFILL }},
{ &hf_lte_rrc_threshX_Q_r9_01,
{ "threshX-Q-r9", "lte-rrc.threshX_Q_r9",
FT_NONE, BASE_NONE, NULL, 0,
@@ -28142,6 +30088,10 @@ void proto_register_lte_rrc(void) {
{ "CarrierFreqUTRA-TDD", "lte-rrc.CarrierFreqUTRA_TDD",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_lte_rrc_p_MaxUTRA_01,
+ { "p-MaxUTRA", "lte-rrc.p_MaxUTRA",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "T_p_MaxUTRA_01", HFILL }},
{ &hf_lte_rrc_t_ReselectionGERAN,
{ "t-ReselectionGERAN", "lte-rrc.t_ReselectionGERAN",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -28168,12 +30118,12 @@ void proto_register_lte_rrc(void) {
"BIT_STRING_SIZE_8", HFILL }},
{ &hf_lte_rrc_q_RxLevMin_02,
{ "q-RxLevMin", "lte-rrc.q_RxLevMin",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_geran_q_RxLevMin_vals_ext, 0,
"INTEGER_0_45", HFILL }},
{ &hf_lte_rrc_p_MaxGERAN,
{ "p-MaxGERAN", "lte-rrc.p_MaxGERAN",
FT_UINT32, BASE_DEC, NULL, 0,
- "INTEGER_0_39", HFILL }},
+ NULL, HFILL }},
{ &hf_lte_rrc_systemTimeInfo,
{ "systemTimeInfo", "lte-rrc.systemTimeInfo",
FT_NONE, BASE_NONE, NULL, 0,
@@ -28353,7 +30303,7 @@ void proto_register_lte_rrc(void) {
{ &hf_lte_rrc_hnb_Name,
{ "hnb-Name", "lte-rrc.hnb_Name",
FT_STRING, BASE_NONE, NULL, 0,
- "OCTET_STRING_SIZE_1_48", HFILL }},
+ NULL, HFILL }},
{ &hf_lte_rrc_messageIdentifier,
{ "messageIdentifier", "lte-rrc.messageIdentifier",
FT_BYTES, BASE_NONE, NULL, 0,
@@ -28516,7 +30466,7 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_nomPDSCH_RS_EPRE_Offset,
{ "nomPDSCH-RS-EPRE-Offset", "lte-rrc.nomPDSCH_RS_EPRE_Offset",
- FT_INT32, BASE_DEC, NULL, 0,
+ FT_INT32, BASE_DEC, VALS(lte_rrc_nomPDSCH_RS_EPRE_Offset_vals), 0,
"INTEGER_M1_6", HFILL }},
{ &hf_lte_rrc_cqi_ReportPeriodic,
{ "cqi-ReportPeriodic", "lte-rrc.cqi_ReportPeriodic",
@@ -28564,7 +30514,7 @@ void proto_register_lte_rrc(void) {
"CQI_ReportModeAperiodic", HFILL }},
{ &hf_lte_rrc_nomPDSCH_RS_EPRE_Offset_r10,
{ "nomPDSCH-RS-EPRE-Offset-r10", "lte-rrc.nomPDSCH_RS_EPRE_Offset_r10",
- FT_INT32, BASE_DEC, NULL, 0,
+ FT_INT32, BASE_DEC, VALS(lte_rrc_nomPDSCH_RS_EPRE_Offset_vals), 0,
"INTEGER_M1_6", HFILL }},
{ &hf_lte_rrc_cqi_ReportPeriodicSCell_r10,
{ "cqi-ReportPeriodicSCell-r10", "lte-rrc.cqi_ReportPeriodicSCell_r10",
@@ -28817,7 +30767,7 @@ void proto_register_lte_rrc(void) {
{ &hf_lte_rrc_sr_ProhibitTimer_r9,
{ "sr-ProhibitTimer-r9", "lte-rrc.sr_ProhibitTimer_r9",
FT_UINT32, BASE_DEC, NULL, 0,
- "INTEGER_0_7", HFILL }},
+ NULL, HFILL }},
{ &hf_lte_rrc_mac_MainConfig_v1020,
{ "mac-MainConfig-v1020", "lte-rrc.mac_MainConfig_v1020",
FT_NONE, BASE_NONE, NULL, 0,
@@ -28844,7 +30794,7 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_drx_InactivityTimer,
{ "drx-InactivityTimer", "lte-rrc.drx_InactivityTimer",
- FT_UINT32, BASE_DEC, VALS(lte_rrc_T_drx_InactivityTimer_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_T_drx_InactivityTimer_vals_ext, 0,
NULL, HFILL }},
{ &hf_lte_rrc_drx_RetransmissionTimer,
{ "drx-RetransmissionTimer", "lte-rrc.drx_RetransmissionTimer",
@@ -28929,7 +30879,7 @@ void proto_register_lte_rrc(void) {
{ &hf_lte_rrc_drxShortCycleTimer,
{ "drxShortCycleTimer", "lte-rrc.drxShortCycleTimer",
FT_UINT32, BASE_DEC, NULL, 0,
- "INTEGER_1_16", HFILL }},
+ NULL, HFILL }},
{ &hf_lte_rrc_discardTimer,
{ "discardTimer", "lte-rrc.discardTimer",
FT_UINT32, BASE_DEC, VALS(lte_rrc_T_discardTimer_vals), 0,
@@ -29013,7 +30963,7 @@ void proto_register_lte_rrc(void) {
{ &hf_lte_rrc_referenceSignalPower,
{ "referenceSignalPower", "lte-rrc.referenceSignalPower",
FT_INT32, BASE_DEC, NULL, 0,
- "INTEGER_M60_50", HFILL }},
+ NULL, HFILL }},
{ &hf_lte_rrc_p_b,
{ "p-b", "lte-rrc.p_b",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -29724,7 +31674,7 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_t_PollRetransmit,
{ "t-PollRetransmit", "lte-rrc.t_PollRetransmit",
- FT_UINT32, BASE_DEC, VALS(lte_rrc_T_PollRetransmit_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_T_PollRetransmit_vals_ext, 0,
NULL, HFILL }},
{ &hf_lte_rrc_pollPDU,
{ "pollPDU", "lte-rrc.pollPDU",
@@ -29740,11 +31690,11 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_t_Reordering,
{ "t-Reordering", "lte-rrc.t_Reordering",
- FT_UINT32, BASE_DEC, VALS(lte_rrc_T_Reordering_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_T_Reordering_vals_ext, 0,
NULL, HFILL }},
{ &hf_lte_rrc_t_StatusProhibit,
{ "t-StatusProhibit", "lte-rrc.t_StatusProhibit",
- FT_UINT32, BASE_DEC, VALS(lte_rrc_T_StatusProhibit_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_T_StatusProhibit_vals_ext, 0,
NULL, HFILL }},
{ &hf_lte_rrc_sn_FieldLength,
{ "sn-FieldLength", "lte-rrc.sn_FieldLength",
@@ -29964,8 +31914,8 @@ void proto_register_lte_rrc(void) {
"INTEGER_0_23", HFILL }},
{ &hf_lte_rrc_duration,
{ "duration", "lte-rrc.duration",
- FT_BOOLEAN, BASE_NONE, NULL, 0,
- "BOOLEAN", HFILL }},
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_duration_val), 0,
+ NULL, HFILL }},
{ &hf_lte_rrc_srs_ConfigIndex,
{ "srs-ConfigIndex", "lte-rrc.srs_ConfigIndex",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -30093,11 +32043,11 @@ void proto_register_lte_rrc(void) {
{ &hf_lte_rrc_p0_NominalPUSCH_Persistent,
{ "p0-NominalPUSCH-Persistent", "lte-rrc.p0_NominalPUSCH_Persistent",
FT_INT32, BASE_DEC, NULL, 0,
- "INTEGER_M126_24", HFILL }},
+ NULL, HFILL }},
{ &hf_lte_rrc_p0_UE_PUSCH_Persistent,
{ "p0-UE-PUSCH-Persistent", "lte-rrc.p0_UE_PUSCH_Persistent",
FT_INT32, BASE_DEC, NULL, 0,
- "INTEGER_M8_7", HFILL }},
+ NULL, HFILL }},
{ &hf_lte_rrc_twoIntervalsConfig,
{ "twoIntervalsConfig", "lte-rrc.twoIntervalsConfig",
FT_UINT32, BASE_DEC, VALS(lte_rrc_T_twoIntervalsConfig_vals), 0,
@@ -30137,7 +32087,7 @@ void proto_register_lte_rrc(void) {
{ &hf_lte_rrc_p0_NominalPUSCH,
{ "p0-NominalPUSCH", "lte-rrc.p0_NominalPUSCH",
FT_INT32, BASE_DEC, NULL, 0,
- "INTEGER_M126_24", HFILL }},
+ NULL, HFILL }},
{ &hf_lte_rrc_alpha,
{ "alpha", "lte-rrc.alpha",
FT_UINT32, BASE_DEC, VALS(lte_rrc_T_alpha_vals), 0,
@@ -30145,14 +32095,14 @@ void proto_register_lte_rrc(void) {
{ &hf_lte_rrc_p0_NominalPUCCH,
{ "p0-NominalPUCCH", "lte-rrc.p0_NominalPUCCH",
FT_INT32, BASE_DEC, NULL, 0,
- "INTEGER_M127_M96", HFILL }},
+ NULL, HFILL }},
{ &hf_lte_rrc_deltaFList_PUCCH,
{ "deltaFList-PUCCH", "lte-rrc.deltaFList_PUCCH",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_lte_rrc_deltaPreambleMsg3,
{ "deltaPreambleMsg3", "lte-rrc.deltaPreambleMsg3",
- FT_INT32, BASE_DEC, NULL, 0,
+ FT_INT32, BASE_DEC, VALS(lte_rrc_deltaPreambleMsg3_vals), 0,
"INTEGER_M1_6", HFILL }},
{ &hf_lte_rrc_deltaF_PUCCH_Format3_r10,
{ "deltaF-PUCCH-Format3-r10", "lte-rrc.deltaF_PUCCH_Format3_r10",
@@ -30165,7 +32115,7 @@ void proto_register_lte_rrc(void) {
{ &hf_lte_rrc_p0_NominalPUSCH_r10,
{ "p0-NominalPUSCH-r10", "lte-rrc.p0_NominalPUSCH_r10",
FT_INT32, BASE_DEC, NULL, 0,
- "INTEGER_M126_24", HFILL }},
+ NULL, HFILL }},
{ &hf_lte_rrc_alpha_r10,
{ "alpha-r10", "lte-rrc.alpha_r10",
FT_UINT32, BASE_DEC, VALS(lte_rrc_T_alpha_r10_vals), 0,
@@ -30173,7 +32123,7 @@ void proto_register_lte_rrc(void) {
{ &hf_lte_rrc_p0_UE_PUSCH,
{ "p0-UE-PUSCH", "lte-rrc.p0_UE_PUSCH",
FT_INT32, BASE_DEC, NULL, 0,
- "INTEGER_M8_7", HFILL }},
+ NULL, HFILL }},
{ &hf_lte_rrc_deltaMCS_Enabled,
{ "deltaMCS-Enabled", "lte-rrc.deltaMCS_Enabled",
FT_UINT32, BASE_DEC, VALS(lte_rrc_T_deltaMCS_Enabled_vals), 0,
@@ -30185,7 +32135,7 @@ void proto_register_lte_rrc(void) {
{ &hf_lte_rrc_p0_UE_PUCCH,
{ "p0-UE-PUCCH", "lte-rrc.p0_UE_PUCCH",
FT_INT32, BASE_DEC, NULL, 0,
- "INTEGER_M8_7", HFILL }},
+ NULL, HFILL }},
{ &hf_lte_rrc_pSRS_Offset,
{ "pSRS-Offset", "lte-rrc.pSRS_Offset",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -30205,7 +32155,7 @@ void proto_register_lte_rrc(void) {
{ &hf_lte_rrc_p0_UE_PUSCH_r10,
{ "p0-UE-PUSCH-r10", "lte-rrc.p0_UE_PUSCH_r10",
FT_INT32, BASE_DEC, NULL, 0,
- "INTEGER_M8_7", HFILL }},
+ NULL, HFILL }},
{ &hf_lte_rrc_deltaMCS_Enabled_r10,
{ "deltaMCS-Enabled-r10", "lte-rrc.deltaMCS_Enabled_r10",
FT_UINT32, BASE_DEC, VALS(lte_rrc_T_deltaMCS_Enabled_r10_vals), 0,
@@ -30580,8 +32530,8 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_s_Measure,
{ "s-Measure", "lte-rrc.s_Measure",
- FT_UINT32, BASE_DEC, NULL, 0,
- "RSRP_Range", HFILL }},
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_s_Measure_vals_ext, 0,
+ NULL, HFILL }},
{ &hf_lte_rrc_speedStatePars,
{ "speedStatePars", "lte-rrc.speedStatePars",
FT_UINT32, BASE_DEC, VALS(lte_rrc_T_speedStatePars_vals), 0,
@@ -30672,7 +32622,7 @@ void proto_register_lte_rrc(void) {
"PhysCellIdCDMA2000", HFILL }},
{ &hf_lte_rrc_offsetFreq_01,
{ "offsetFreq", "lte-rrc.offsetFreq",
- FT_UINT32, BASE_DEC, VALS(lte_rrc_Q_OffsetRange_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_Q_OffsetRange_vals_ext, 0,
"Q_OffsetRange", HFILL }},
{ &hf_lte_rrc_cellsToAddModList_01,
{ "cellsToAddModList", "lte-rrc.cellsToAddModList",
@@ -30704,7 +32654,7 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_cellIndividualOffset,
{ "cellIndividualOffset", "lte-rrc.cellIndividualOffset",
- FT_UINT32, BASE_DEC, VALS(lte_rrc_Q_OffsetRange_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_Q_OffsetRange_vals_ext, 0,
"Q_OffsetRange", HFILL }},
{ &hf_lte_rrc_BlackCellsToAddModList_item,
{ "BlackCellsToAddMod", "lte-rrc.BlackCellsToAddMod",
@@ -30812,11 +32762,11 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_rsrpResult,
{ "rsrpResult", "lte-rrc.rsrpResult",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_RSRP_Range_vals_ext, 0,
"RSRP_Range", HFILL }},
{ &hf_lte_rrc_rsrqResult,
{ "rsrqResult", "lte-rrc.rsrqResult",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_RSRQ_Range_vals_ext, 0,
"RSRQ_Range", HFILL }},
{ &hf_lte_rrc_measResultNeighCells,
{ "measResultNeighCells", "lte-rrc.measResultNeighCells",
@@ -30884,11 +32834,11 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_rsrpResultSCell_r10,
{ "rsrpResultSCell-r10", "lte-rrc.rsrpResultSCell_r10",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_RSRP_Range_vals_ext, 0,
"RSRP_Range", HFILL }},
{ &hf_lte_rrc_rsrqResultSCell_r10,
{ "rsrqResultSCell-r10", "lte-rrc.rsrqResultSCell_r10",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_RSRQ_Range_vals_ext, 0,
"RSRQ_Range", HFILL }},
{ &hf_lte_rrc_measResultBestNeighCell_r10,
{ "measResultBestNeighCell-r10", "lte-rrc.measResultBestNeighCell_r10",
@@ -30896,11 +32846,11 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_rsrpResultNCell_r10,
{ "rsrpResultNCell-r10", "lte-rrc.rsrpResultNCell_r10",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_RSRP_Range_vals_ext, 0,
"RSRP_Range", HFILL }},
{ &hf_lte_rrc_rsrqResultNCell_r10,
{ "rsrqResultNCell-r10", "lte-rrc.rsrqResultNCell_r10",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_RSRQ_Range_vals_ext, 0,
"RSRQ_Range", HFILL }},
{ &hf_lte_rrc_MeasResultListUTRA_item,
{ "MeasResultUTRA", "lte-rrc.MeasResultUTRA",
@@ -30936,11 +32886,11 @@ void proto_register_lte_rrc(void) {
"T_measResult_01", HFILL }},
{ &hf_lte_rrc_utra_RSCP,
{ "utra-RSCP", "lte-rrc.utra_RSCP",
- FT_INT32, BASE_DEC, NULL, 0,
+ FT_INT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_utra_RSCP_vals_ext, 0,
"INTEGER_M5_91", HFILL }},
{ &hf_lte_rrc_utra_EcN0,
{ "utra-EcN0", "lte-rrc.utra_EcN0",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_utra_EcN0_vals_ext, 0,
"INTEGER_0_49", HFILL }},
{ &hf_lte_rrc_MeasResultListGERAN_item,
{ "MeasResultGERAN", "lte-rrc.MeasResultGERAN",
@@ -30960,7 +32910,7 @@ void proto_register_lte_rrc(void) {
"T_measResult_02", HFILL }},
{ &hf_lte_rrc_rssi,
{ "rssi", "lte-rrc.rssi",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &gsm_a_rr_rxlev_vals_ext, 0,
"INTEGER_0_63", HFILL }},
{ &hf_lte_rrc_preRegistrationStatusHRPD,
{ "preRegistrationStatusHRPD", "lte-rrc.preRegistrationStatusHRPD",
@@ -31092,7 +33042,7 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_a3_Offset,
{ "a3-Offset", "lte-rrc.a3_Offset",
- FT_INT32, BASE_DEC, NULL, 0,
+ FT_INT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_a3_a6_Offset_vals_ext, 0,
"INTEGER_M30_30", HFILL }},
{ &hf_lte_rrc_reportOnLeave,
{ "reportOnLeave", "lte-rrc.reportOnLeave",
@@ -31124,7 +33074,7 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_a6_Offset_r10,
{ "a6-Offset-r10", "lte-rrc.a6_Offset_r10",
- FT_INT32, BASE_DEC, NULL, 0,
+ FT_INT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_a3_a6_Offset_vals_ext, 0,
"INTEGER_M30_30", HFILL }},
{ &hf_lte_rrc_a6_ReportOnLeave_r10,
{ "a6-ReportOnLeave-r10", "lte-rrc.a6_ReportOnLeave_r10",
@@ -31132,7 +33082,7 @@ void proto_register_lte_rrc(void) {
"BOOLEAN", HFILL }},
{ &hf_lte_rrc_hysteresis,
{ "hysteresis", "lte-rrc.hysteresis",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_Hysteresis_vals_ext, 0,
NULL, HFILL }},
{ &hf_lte_rrc_timeToTrigger,
{ "timeToTrigger", "lte-rrc.timeToTrigger",
@@ -31184,12 +33134,12 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_threshold_RSRP,
{ "threshold-RSRP", "lte-rrc.threshold_RSRP",
- FT_UINT32, BASE_DEC, NULL, 0,
- "RSRP_Range", HFILL }},
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_threshold_RSRP_vals_ext, 0,
+ "Threshold_RSRP_Range", HFILL }},
{ &hf_lte_rrc_threshold_RSRQ,
{ "threshold-RSRQ", "lte-rrc.threshold_RSRQ",
- FT_UINT32, BASE_DEC, NULL, 0,
- "RSRQ_Range", HFILL }},
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_threshold_RSRQ_vals_ext, 0,
+ "Threshold_RSRQ_Range", HFILL }},
{ &hf_lte_rrc_triggerType_01,
{ "triggerType", "lte-rrc.triggerType",
FT_UINT32, BASE_DEC, VALS(lte_rrc_T_triggerType_01_vals), 0,
@@ -31216,7 +33166,7 @@ void proto_register_lte_rrc(void) {
"ThresholdUTRA", HFILL }},
{ &hf_lte_rrc_b1_ThresholdGERAN,
{ "b1-ThresholdGERAN", "lte-rrc.b1_ThresholdGERAN",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_thresholdGERAN_vals_ext, 0,
"ThresholdGERAN", HFILL }},
{ &hf_lte_rrc_b1_ThresholdCDMA2000,
{ "b1-ThresholdCDMA2000", "lte-rrc.b1_ThresholdCDMA2000",
@@ -31240,7 +33190,7 @@ void proto_register_lte_rrc(void) {
"ThresholdUTRA", HFILL }},
{ &hf_lte_rrc_b2_Threshold2GERAN,
{ "b2-Threshold2GERAN", "lte-rrc.b2_Threshold2GERAN",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_thresholdGERAN_vals_ext, 0,
"ThresholdGERAN", HFILL }},
{ &hf_lte_rrc_b2_Threshold2CDMA2000,
{ "b2-Threshold2CDMA2000", "lte-rrc.b2_Threshold2CDMA2000",
@@ -31266,6 +33216,14 @@ void proto_register_lte_rrc(void) {
{ "reportQuantityUTRA-FDD-r10", "lte-rrc.reportQuantityUTRA_FDD_r10",
FT_UINT32, BASE_DEC, VALS(lte_rrc_T_reportQuantityUTRA_FDD_r10_vals), 0,
NULL, HFILL }},
+ { &hf_lte_rrc_utra_RSCP_01,
+ { "utra-RSCP", "lte-rrc.utra_RSCP",
+ FT_INT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_thresholdUTRA_RSCP_vals_ext, 0,
+ "Threshold_utra_RSRP", HFILL }},
+ { &hf_lte_rrc_utra_EcN0_01,
+ { "utra-EcN0", "lte-rrc.utra_EcN0",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_thresholdUTRA_EcN0_vals_ext, 0,
+ "Threshold_utra_EcN0", HFILL }},
{ &hf_lte_rrc_ReportConfigToAddModList_item,
{ "ReportConfigToAddMod", "lte-rrc.ReportConfigToAddMod",
FT_NONE, BASE_NONE, NULL, 0,
@@ -31454,10 +33412,30 @@ void proto_register_lte_rrc(void) {
{ "nonCriticalExtension", "lte-rrc.nonCriticalExtension",
FT_NONE, BASE_NONE, NULL, 0,
"UE_EUTRA_Capability_v940_IEs", HFILL }},
+ { &hf_lte_rrc_lateNonCriticalExtension_01,
+ { "lateNonCriticalExtension", "lte-rrc.lateNonCriticalExtension",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_lte_rrc_nonCriticalExtension_89,
{ "nonCriticalExtension", "lte-rrc.nonCriticalExtension",
FT_NONE, BASE_NONE, NULL, 0,
"UE_EUTRA_Capability_v1020_IEs", HFILL }},
+ { &hf_lte_rrc_featureGroupIndRel9Add_r9,
+ { "featureGroupIndRel9Add-r9", "lte-rrc.featureGroupIndRel9Add_r9",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lte_rrc_fdd_Add_UE_EUTRA_Capabilities_r9,
+ { "fdd-Add-UE-EUTRA-Capabilities-r9", "lte-rrc.fdd_Add_UE_EUTRA_Capabilities_r9",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UE_EUTRA_CapabilityAddXDD_Mode_r9", HFILL }},
+ { &hf_lte_rrc_tdd_Add_UE_EUTRA_Capabilities_r9,
+ { "tdd-Add-UE-EUTRA-Capabilities-r9", "lte-rrc.tdd_Add_UE_EUTRA_Capabilities_r9",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UE_EUTRA_CapabilityAddXDD_Mode_r9", HFILL }},
+ { &hf_lte_rrc_nonCriticalExtension_90,
+ { "nonCriticalExtension", "lte-rrc.nonCriticalExtension",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_nonCriticalExtension_38", HFILL }},
{ &hf_lte_rrc_ue_Category_v1020,
{ "ue-Category-v1020", "lte-rrc.ue_Category_v1020",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -31474,8 +33452,8 @@ void proto_register_lte_rrc(void) {
{ "measParameters-v1020", "lte-rrc.measParameters_v1020",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_lte_rrc_featureGroupIndicators_v1020,
- { "featureGroupIndicators-v1020", "lte-rrc.featureGroupIndicators_v1020",
+ { &hf_lte_rrc_featureGroupIndRel10_r10,
+ { "featureGroupIndRel10-r10", "lte-rrc.featureGroupIndRel10_r10",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_lte_rrc_interRAT_ParametersCDMA2000_v1020,
@@ -31490,10 +33468,34 @@ void proto_register_lte_rrc(void) {
{ "interRAT-ParametersUTRA-TDD-v1020", "lte-rrc.interRAT_ParametersUTRA_TDD_v1020",
FT_NONE, BASE_NONE, NULL, 0,
"IRAT_ParametersUTRA_TDD_v1020", HFILL }},
- { &hf_lte_rrc_nonCriticalExtension_90,
+ { &hf_lte_rrc_nonCriticalExtension_91,
{ "nonCriticalExtension", "lte-rrc.nonCriticalExtension",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtension_38", HFILL }},
+ "T_nonCriticalExtension_39", HFILL }},
+ { &hf_lte_rrc_phyLayerParameters_r9,
+ { "phyLayerParameters-r9", "lte-rrc.phyLayerParameters_r9",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "PhyLayerParameters", HFILL }},
+ { &hf_lte_rrc_featureGroupIndicators_r9,
+ { "featureGroupIndicators-r9", "lte-rrc.featureGroupIndicators_r9",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lte_rrc_featureGroupIndRel9Add_r9_01,
+ { "featureGroupIndRel9Add-r9", "lte-rrc.featureGroupIndRel9Add_r9",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "T_featureGroupIndRel9Add_r9_01", HFILL }},
+ { &hf_lte_rrc_interRAT_ParametersGERAN_r9,
+ { "interRAT-ParametersGERAN-r9", "lte-rrc.interRAT_ParametersGERAN_r9",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "IRAT_ParametersGERAN", HFILL }},
+ { &hf_lte_rrc_interRAT_ParametersUTRA_r9,
+ { "interRAT-ParametersUTRA-r9", "lte-rrc.interRAT_ParametersUTRA_r9",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "IRAT_ParametersUTRA_v920", HFILL }},
+ { &hf_lte_rrc_interRAT_ParametersCDMA2000_r9,
+ { "interRAT-ParametersCDMA2000-r9", "lte-rrc.interRAT_ParametersCDMA2000_r9",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "IRAT_ParametersCDMA2000_1XRTT_v920", HFILL }},
{ &hf_lte_rrc_supportedROHC_Profiles,
{ "supportedROHC-Profiles", "lte-rrc.supportedROHC_Profiles",
FT_NONE, BASE_NONE, NULL, 0,
@@ -31668,7 +33670,7 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_SupportedBandListUTRA_FDD_item,
{ "SupportedBandUTRA-FDD", "lte-rrc.SupportedBandUTRA_FDD",
- FT_UINT32, BASE_DEC, VALS(lte_rrc_SupportedBandUTRA_FDD_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_SupportedBandUTRA_FDD_vals_ext, 0,
NULL, HFILL }},
{ &hf_lte_rrc_supportedBandListUTRA_TDD128,
{ "supportedBandListUTRA-TDD128", "lte-rrc.supportedBandListUTRA_TDD128",
@@ -31732,7 +33734,7 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_SupportedBandListHRPD_item,
{ "BandclassCDMA2000", "lte-rrc.BandclassCDMA2000",
- FT_UINT32, BASE_DEC, VALS(lte_rrc_BandclassCDMA2000_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_BandclassCDMA2000_vals_ext, 0,
NULL, HFILL }},
{ &hf_lte_rrc_supportedBandList1XRTT,
{ "supportedBandList1XRTT", "lte-rrc.supportedBandList1XRTT",
@@ -31760,7 +33762,7 @@ void proto_register_lte_rrc(void) {
"T_e_CSFB_dual_1XRTT_r10", HFILL }},
{ &hf_lte_rrc_SupportedBandList1XRTT_item,
{ "BandclassCDMA2000", "lte-rrc.BandclassCDMA2000",
- FT_UINT32, BASE_DEC, VALS(lte_rrc_BandclassCDMA2000_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_BandclassCDMA2000_vals_ext, 0,
NULL, HFILL }},
{ &hf_lte_rrc_intraFreqProximityIndication_r9,
{ "intraFreqProximityIndication-r9", "lte-rrc.intraFreqProximityIndication_r9",
@@ -31970,10 +33972,10 @@ void proto_register_lte_rrc(void) {
{ "handoverCommandMessage", "lte-rrc.handoverCommandMessage",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_lte_rrc_nonCriticalExtension_91,
+ { &hf_lte_rrc_nonCriticalExtension_92,
{ "nonCriticalExtension", "lte-rrc.nonCriticalExtension",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtension_39", HFILL }},
+ "T_nonCriticalExtension_40", HFILL }},
{ &hf_lte_rrc_criticalExtensions_36,
{ "criticalExtensions", "lte-rrc.criticalExtensions",
FT_UINT32, BASE_DEC, VALS(lte_rrc_T_criticalExtensions_36_vals), 0,
@@ -32006,7 +34008,7 @@ void proto_register_lte_rrc(void) {
{ "as-Context", "lte-rrc.as_Context",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_lte_rrc_nonCriticalExtension_92,
+ { &hf_lte_rrc_nonCriticalExtension_93,
{ "nonCriticalExtension", "lte-rrc.nonCriticalExtension",
FT_NONE, BASE_NONE, NULL, 0,
"HandoverPreparationInformation_v920_IEs", HFILL }},
@@ -32014,10 +34016,10 @@ void proto_register_lte_rrc(void) {
{ "ue-ConfigRelease-r9", "lte-rrc.ue_ConfigRelease_r9",
FT_UINT32, BASE_DEC, VALS(lte_rrc_T_ue_ConfigRelease_r9_vals), 0,
NULL, HFILL }},
- { &hf_lte_rrc_nonCriticalExtension_93,
+ { &hf_lte_rrc_nonCriticalExtension_94,
{ "nonCriticalExtension", "lte-rrc.nonCriticalExtension",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtension_40", HFILL }},
+ "T_nonCriticalExtension_41", HFILL }},
{ &hf_lte_rrc_criticalExtensions_37,
{ "criticalExtensions", "lte-rrc.criticalExtensions",
FT_UINT32, BASE_DEC, VALS(lte_rrc_T_criticalExtensions_37_vals), 0,
@@ -32038,10 +34040,10 @@ void proto_register_lte_rrc(void) {
{ "ue-RadioAccessCapabilityInfo", "lte-rrc.ue_RadioAccessCapabilityInfo",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_lte_rrc_nonCriticalExtension_94,
+ { &hf_lte_rrc_nonCriticalExtension_95,
{ "nonCriticalExtension", "lte-rrc.nonCriticalExtension",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtension_41", HFILL }},
+ "T_nonCriticalExtension_42", HFILL }},
{ &hf_lte_rrc_sourceMeasConfig,
{ "sourceMeasConfig", "lte-rrc.sourceMeasConfig",
FT_NONE, BASE_NONE, NULL, 0,
@@ -32112,7 +34114,7 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_ue_InactiveTime,
{ "ue-InactiveTime", "lte-rrc.ue_InactiveTime",
- FT_UINT32, BASE_DEC, VALS(lte_rrc_T_ue_InactiveTime_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &lte_rrc_T_ue_InactiveTime_vals_ext, 0,
NULL, HFILL }},
{ &hf_lte_rrc_candidateCellInfoList_r10,
{ "candidateCellInfoList-r10", "lte-rrc.candidateCellInfoList_r10",
@@ -32124,7 +34126,7 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
/*--- End of included file: packet-lte-rrc-hfarr.c ---*/
-#line 507 "../../asn1/lte-rrc/packet-lte-rrc-template.c"
+#line 1780 "../../asn1/lte-rrc/packet-lte-rrc-template.c"
{ &hf_lte_rrc_eutra_cap_feat_group_ind_1,
{ "Indicator 1", "lte-rrc.eutra_cap_feat_group_ind_1",
@@ -32254,6 +34256,134 @@ void proto_register_lte_rrc(void) {
{ "Indicator 32", "lte-rrc.eutra_cap_feat_group_ind_32",
FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_32_val), 0,
"EUTRA Feature Group Indicator 32", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_33,
+ { "Indicator 33", "lte-rrc.eutra_cap_feat_group_ind_33",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_33_val), 0,
+ "EUTRA Feature Group Indicator 33", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_34,
+ { "Indicator 34", "lte-rrc.eutra_cap_feat_group_ind_34",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_34_val), 0,
+ "EUTRA Feature Group Indicator 34", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_35,
+ { "Indicator 35", "lte-rrc.eutra_cap_feat_group_ind_35",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_35_val), 0,
+ "EUTRA Feature Group Indicator 35", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_36,
+ { "Indicator 36", "lte-rrc.eutra_cap_feat_group_ind_36",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_36_val), 0,
+ "EUTRA Feature Group Indicator 36", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_37,
+ { "Indicator 37", "lte-rrc.eutra_cap_feat_group_ind_37",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_37_val), 0,
+ "EUTRA Feature Group Indicator 37", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_38,
+ { "Indicator 38", "lte-rrc.eutra_cap_feat_group_ind_38",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_38_val), 0,
+ "EUTRA Feature Group Indicator 38", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_39,
+ { "Indicator 39", "lte-rrc.eutra_cap_feat_group_ind_39",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_39_val), 0,
+ "EUTRA Feature Group Indicator 39", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_40,
+ { "Indicator 40", "lte-rrc.eutra_cap_feat_group_ind_40",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_40_val), 0,
+ "EUTRA Feature Group Indicator 40", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_41,
+ { "Indicator 41", "lte-rrc.eutra_cap_feat_group_ind_41",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_41_val), 0,
+ "EUTRA Feature Group Indicator 41", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_42,
+ { "Indicator 42", "lte-rrc.eutra_cap_feat_group_ind_42",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_42_val), 0,
+ "EUTRA Feature Group Indicator 42", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_43,
+ { "Indicator 43", "lte-rrc.eutra_cap_feat_group_ind_43",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_43_val), 0,
+ "EUTRA Feature Group Indicator 43", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_44,
+ { "Indicator 44", "lte-rrc.eutra_cap_feat_group_ind_44",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_44_val), 0,
+ "EUTRA Feature Group Indicator 44", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_45,
+ { "Indicator 45", "lte-rrc.eutra_cap_feat_group_ind_45",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_45_val), 0,
+ "EUTRA Feature Group Indicator 45", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_46,
+ { "Indicator 46", "lte-rrc.eutra_cap_feat_group_ind_46",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_46_val), 0,
+ "EUTRA Feature Group Indicator 46", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_47,
+ { "Indicator 47", "lte-rrc.eutra_cap_feat_group_ind_47",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_47_val), 0,
+ "EUTRA Feature Group Indicator 47", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_48,
+ { "Indicator 48", "lte-rrc.eutra_cap_feat_group_ind_48",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_48_val), 0,
+ "EUTRA Feature Group Indicator 48", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_49,
+ { "Indicator 49", "lte-rrc.eutra_cap_feat_group_ind_49",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_49_val), 0,
+ "EUTRA Feature Group Indicator 49", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_50,
+ { "Indicator 50", "lte-rrc.eutra_cap_feat_group_ind_50",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_50_val), 0,
+ "EUTRA Feature Group Indicator 50", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_51,
+ { "Indicator 51", "lte-rrc.eutra_cap_feat_group_ind_51",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_51_val), 0,
+ "EUTRA Feature Group Indicator 51", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_52,
+ { "Indicator 52", "lte-rrc.eutra_cap_feat_group_ind_52",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_52_val), 0,
+ "EUTRA Feature Group Indicator 52", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_53,
+ { "Indicator 53", "lte-rrc.eutra_cap_feat_group_ind_53",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_53_val), 0,
+ "EUTRA Feature Group Indicator 53", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_54,
+ { "Indicator 54", "lte-rrc.eutra_cap_feat_group_ind_54",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_54_val), 0,
+ "EUTRA Feature Group Indicator 54", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_55,
+ { "Indicator 55", "lte-rrc.eutra_cap_feat_group_ind_55",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_55_val), 0,
+ "EUTRA Feature Group Indicator 55", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_56,
+ { "Indicator 56", "lte-rrc.eutra_cap_feat_group_ind_56",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_56_val), 0,
+ "EUTRA Feature Group Indicator 56", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_57,
+ { "Indicator 57", "lte-rrc.eutra_cap_feat_group_ind_57",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_57_val), 0,
+ "EUTRA Feature Group Indicator 57", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_58,
+ { "Indicator 58", "lte-rrc.eutra_cap_feat_group_ind_58",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_58_val), 0,
+ "EUTRA Feature Group Indicator 58", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_59,
+ { "Indicator 59", "lte-rrc.eutra_cap_feat_group_ind_59",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_59_val), 0,
+ "EUTRA Feature Group Indicator 59", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_60,
+ { "Indicator 60", "lte-rrc.eutra_cap_feat_group_ind_60",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_60_val), 0,
+ "EUTRA Feature Group Indicator 60", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_61,
+ { "Indicator 61", "lte-rrc.eutra_cap_feat_group_ind_61",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_61_val), 0,
+ "EUTRA Feature Group Indicator 61", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_62,
+ { "Indicator 62", "lte-rrc.eutra_cap_feat_group_ind_62",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_62_val), 0,
+ "EUTRA Feature Group Indicator 62", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_63,
+ { "Indicator 63", "lte-rrc.eutra_cap_feat_group_ind_63",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_63_val), 0,
+ "EUTRA Feature Group Indicator 63", HFILL }},
+ { &hf_lte_rrc_eutra_cap_feat_group_ind_64,
+ { "Indicator 64", "lte-rrc.eutra_cap_feat_group_ind_64",
+ FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_64_val), 0,
+ "EUTRA Feature Group Indicator 64", HFILL }},
{ &hf_lte_rrc_eutra_cap_feat_group_ind_101,
{ "Indicator 101", "lte-rrc.eutra_cap_feat_group_ind_101",
FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_101_val), 0,
@@ -33147,8 +35277,11 @@ void proto_register_lte_rrc(void) {
&ett_lte_rrc_T_interRAT_Parameters,
&ett_lte_rrc_UE_EUTRA_Capability_v920_IEs,
&ett_lte_rrc_UE_EUTRA_Capability_v940_IEs,
- &ett_lte_rrc_UE_EUTRA_Capability_v1020_IEs,
+ &ett_lte_rrc_UE_EUTRA_Capability_v9a0_IEs,
&ett_lte_rrc_T_nonCriticalExtension_38,
+ &ett_lte_rrc_UE_EUTRA_Capability_v1020_IEs,
+ &ett_lte_rrc_T_nonCriticalExtension_39,
+ &ett_lte_rrc_UE_EUTRA_CapabilityAddXDD_Mode_r9,
&ett_lte_rrc_PDCP_Parameters,
&ett_lte_rrc_T_supportedROHC_Profiles,
&ett_lte_rrc_PhyLayerParameters,
@@ -33218,20 +35351,20 @@ void proto_register_lte_rrc(void) {
&ett_lte_rrc_T_c1_31,
&ett_lte_rrc_T_criticalExtensionsFuture_35,
&ett_lte_rrc_HandoverCommand_r8_IEs,
- &ett_lte_rrc_T_nonCriticalExtension_39,
+ &ett_lte_rrc_T_nonCriticalExtension_40,
&ett_lte_rrc_HandoverPreparationInformation,
&ett_lte_rrc_T_criticalExtensions_36,
&ett_lte_rrc_T_c1_32,
&ett_lte_rrc_T_criticalExtensionsFuture_36,
&ett_lte_rrc_HandoverPreparationInformation_r8_IEs,
&ett_lte_rrc_HandoverPreparationInformation_v920_IEs,
- &ett_lte_rrc_T_nonCriticalExtension_40,
+ &ett_lte_rrc_T_nonCriticalExtension_41,
&ett_lte_rrc_UERadioAccessCapabilityInformation,
&ett_lte_rrc_T_criticalExtensions_37,
&ett_lte_rrc_T_c1_33,
&ett_lte_rrc_T_criticalExtensionsFuture_37,
&ett_lte_rrc_UERadioAccessCapabilityInformation_r8_IEs,
- &ett_lte_rrc_T_nonCriticalExtension_41,
+ &ett_lte_rrc_T_nonCriticalExtension_42,
&ett_lte_rrc_AS_Config,
&ett_lte_rrc_AS_Context,
&ett_lte_rrc_ReestablishmentInfo,
@@ -33242,10 +35375,11 @@ void proto_register_lte_rrc(void) {
&ett_lte_rrc_CandidateCellInfo_r10,
/*--- End of included file: packet-lte-rrc-ettarr.c ---*/
-#line 770 "../../asn1/lte-rrc/packet-lte-rrc-template.c"
+#line 2171 "../../asn1/lte-rrc/packet-lte-rrc-template.c"
&ett_lte_rrc_featureGroupIndicators,
- &ett_lte_rrc_featureGroupIndicatorsV1020,
+ &ett_lte_rrc_featureGroupIndRel9Add,
+ &ett_lte_rrc_featureGroupIndRel10,
&ett_lte_rrc_neighCellConfig,
&ett_lte_rrc_absTimeInfo,
};
@@ -33283,7 +35417,7 @@ void proto_register_lte_rrc(void) {
/*--- End of included file: packet-lte-rrc-dis-reg.c ---*/
-#line 795 "../../asn1/lte-rrc/packet-lte-rrc-template.c"
+#line 2197 "../../asn1/lte-rrc/packet-lte-rrc-template.c"
}
diff --git a/epan/dissectors/packet-ltp.c b/epan/dissectors/packet-ltp.c
index f80e145658..1f697abd38 100644
--- a/epan/dissectors/packet-ltp.c
+++ b/epan/dissectors/packet-ltp.c
@@ -437,6 +437,17 @@ dissect_report_segment(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ltp_tree,
expert_add_info_format(pinfo, ltp_tree, PI_UNDECODED, PI_ERROR, "Negative reception claim count: %d", rcpt_clm_cnt);
return 0;
}
+ /* Each reception claim is at least 2 bytes, so if the count is larger than the
+ * max number of claims we can possibly squeeze into the remaining tvbuff, then
+ * the packet is malformed.
+ */
+ if (rcpt_clm_cnt > tvb_length_remaining(tvb, frame_offset + segment_offset) / 2) {
+ proto_item_set_end(ltp_rpt_item, tvb, frame_offset + segment_offset);
+ expert_add_info_format(pinfo, ltp_tree, PI_MALFORMED, PI_ERROR,
+ "Reception claim count impossibly large: %d > %d", rcpt_clm_cnt,
+ tvb_length_remaining(tvb, frame_offset + segment_offset) / 2);
+ return 0;
+ }
proto_tree_add_uint(ltp_rpt_tree, hf_ltp_rpt_clm_cnt, tvb, frame_offset + segment_offset, rcpt_clm_cnt_size, rcpt_clm_cnt);
segment_offset += rcpt_clm_cnt_size;
diff --git a/epan/dissectors/packet-lwapp.c b/epan/dissectors/packet-lwapp.c
index 37b35e902a..aa012610da 100644
--- a/epan/dissectors/packet-lwapp.c
+++ b/epan/dissectors/packet-lwapp.c
@@ -73,11 +73,11 @@ static dissector_handle_t data_handle;
static gboolean swap_frame_control;
typedef struct {
- guint8 flags;
- guint8 fragmentId;
+ guint8 flags;
+ guint8 fragmentId;
guint16 length;
- guint8 rssi;
- guint8 snr;
+ guint8 rssi;
+ guint8 snr;
} LWAPP_Header;
typedef struct {
@@ -86,9 +86,9 @@ typedef struct {
} CNTL_Data_Header;
typedef struct {
- guint8 type;
- guint8 seqNo;
- guint16 length;
+ guint8 type;
+ guint8 seqNo;
+ guint16 length;
} CNTL_Header;
#if 0
@@ -164,83 +164,86 @@ typedef enum
DATA_TRANSFER,
DATA_TRANSFER_RES,
RESET_REQ_CLEAR_CONFIG
- }CNTLMsgType;
+ } CNTLMsgType;
static const value_string control_msg_vals[] = {
- {DISCOVERY_REQUEST, "DISCOVERY_REQUEST"},
- {DISCOVERY_REPLY, "DISCOVERY_REPLY"},
- {JOIN_REQUEST, "JOIN_REQUEST"},
- {JOIN_REPLY, "JOIN_REPLY"},
- {HANDOFF_REQUEST, "HANDOFF_REQUEST"},
- {HANDOFF_REPLY, "HANDOFF_REPLY"},
- {HANDOFF_COMMAND, "HANDOFF_COMMAND"},
- {HANDOFF_RESPONSE, "HANDOFF_RESPONSE"},
- {HANDOFF_CONFIRM, "HANDOFF_CONFIRM"},
- {CONFIGURE_REQUEST, "CONFIGURE_REQUEST"},
- {CONFIGURE_RESPONSE, "CONFIGURE_RESPONSE"},
- {CONFIGURE_COMMAND, "CONFIGURE_COMMAND"},
- {CONFIGURE_COMMAND_RES, "CONFIGURE_COMMAND_RES"},
- {STATISTICS_INFO, "STATISTICS_INFO"},
- {STATISTICS_INFO_RES, "STATISTICS_INFO_RES"},
- {CHANGE_STATE_EVENT, "CHANGE_STATE_EVENT"},
- {CHANGE_STATE_EVENT_RES, "CHANGE_STATE_EVENT_RES"},
- {RRM_CONTROL_REQ, "RRM_CONTROL_REQ"},
- {RRM_CONTROL_RES, "RRM_CONTROL_RES"},
- {RRM_DATA_REQ, "RRM_DATA_REQ"},
- {RRM_DATA_RES, "RRM_DATA_RES"},
- {ECHO_REQUEST, "ECHO_REQUEST"},
- {ECHO_RESPONSE, "ECHO_RESPONSE"},
- {IMAGE_DATA, "IMAGE_DATA"},
- {IMAGE_DATA_RES, "IMAGE_DATA_RES"},
- {RESET_REQ, "RESET_REQ"},
- {RESET_RES, "RESET_RES"},
- {I_AM_UP_RES, "I_AM_UP_RES"},
- {I_AM_UP_RES, "I_AM_UP_RES"},
- {KEY_UPDATE_REQ, "KEY_UPDATE_REQ"},
- {KEY_UPDATE_RES, "KEY_UPDATE_RES"},
- {PRIMARY_DISCOVERY_REQ, "PRIMARY_DISCOVERY_REQ"},
- {PRIMARY_DISCOVERY_RES, "PRIMARY_DISCOVERY_RES"},
- {DATA_TRANSFER, "DATA_TRANSFER"},
- {DATA_TRANSFER_RES, "DATA_TRANSFER_RES"},
- {RESET_REQ_CLEAR_CONFIG, "RESET_REQ_CLEAR_CONFIG"},
+ {DISCOVERY_REQUEST , "DISCOVERY_REQUEST"},
+ {DISCOVERY_REPLY , "DISCOVERY_REPLY"},
+ {JOIN_REQUEST , "JOIN_REQUEST"},
+ {JOIN_REPLY , "JOIN_REPLY"},
+ {HANDOFF_REQUEST , "HANDOFF_REQUEST"},
+ {HANDOFF_REPLY , "HANDOFF_REPLY"},
+ {HANDOFF_COMMAND , "HANDOFF_COMMAND"},
+ {HANDOFF_RESPONSE , "HANDOFF_RESPONSE"},
+ {HANDOFF_CONFIRM , "HANDOFF_CONFIRM"},
+ {CONFIGURE_REQUEST , "CONFIGURE_REQUEST"},
+ {CONFIGURE_RESPONSE , "CONFIGURE_RESPONSE"},
+ {CONFIGURE_COMMAND , "CONFIGURE_COMMAND"},
+ {CONFIGURE_COMMAND_RES , "CONFIGURE_COMMAND_RES"},
+ {STATISTICS_INFO , "STATISTICS_INFO"},
+ {STATISTICS_INFO_RES , "STATISTICS_INFO_RES"},
+ {CHANGE_STATE_EVENT , "CHANGE_STATE_EVENT"},
+ {CHANGE_STATE_EVENT_RES , "CHANGE_STATE_EVENT_RES"},
+ {RRM_CONTROL_REQ , "RRM_CONTROL_REQ"},
+ {RRM_CONTROL_RES , "RRM_CONTROL_RES"},
+ {RRM_DATA_REQ , "RRM_DATA_REQ"},
+ {RRM_DATA_RES , "RRM_DATA_RES"},
+ {ECHO_REQUEST , "ECHO_REQUEST"},
+ {ECHO_RESPONSE , "ECHO_RESPONSE"},
+ {IMAGE_DATA , "IMAGE_DATA"},
+ {IMAGE_DATA_RES , "IMAGE_DATA_RES"},
+ {RESET_REQ , "RESET_REQ"},
+ {RESET_RES , "RESET_RES"},
+ {I_AM_UP_RES , "I_AM_UP_RES"},
+ {I_AM_UP_RES , "I_AM_UP_RES"},
+ {KEY_UPDATE_REQ , "KEY_UPDATE_REQ"},
+ {KEY_UPDATE_RES , "KEY_UPDATE_RES"},
+ {PRIMARY_DISCOVERY_REQ , "PRIMARY_DISCOVERY_REQ"},
+ {PRIMARY_DISCOVERY_RES , "PRIMARY_DISCOVERY_RES"},
+ {DATA_TRANSFER , "DATA_TRANSFER"},
+ {DATA_TRANSFER_RES , "DATA_TRANSFER_RES"},
+ {RESET_REQ_CLEAR_CONFIG , "RESET_REQ_CLEAR_CONFIG"},
{ 0, NULL}
};
+static value_string_ext control_msg_vals_ext = VALUE_STRING_EXT_INIT(control_msg_vals);
+
#if 0
static const value_string control_tag_vals[] = {
- {RESULT_CODE, "RESULT_CODE"},
- {MWAR_ADDR_PAYLOAD, "MWAR_ADDR_PAYLOAD"},
- {RAD_PAYLOAD, "RAD_PAYLOAD"},
- {RAD_SLOT_PAYLOAD, "RAD_SLOT_PAYLOAD"},
- {RAD_NAME_PAYLOAD, "RAD_NAME_PAYLOAD"},
- {MWAR_PAYLOAD, "MWAR_PAYLOAD"},
- {VAP_PAYLOAD, "VAP_PAYLOAD"},
- {STATION_CFG_PAYLOAD, "STATION_CFG_PAYLOAD"},
- {OPERATION_RATE_SET_PAYLOAD, "OPERATION_RATE_SET_PAYLOAD"},
- {MULTI_DOMAIN_CAPABILITY_PAYLOAD, "MULTI_DOMAIN_CAPABILITY_PAYLOAD"},
- {MAC_OPERATION_PAYLOAD, "MAC_OPERATION_PAYLOAD"},
- {PHY_TX_POWER_PAYLOAD, "PHY_TX_POWER_PAYLOAD"},
- {PHY_TX_POWER_LEVEL_PAYLOAD, "PHY_TX_POWER_LEVEL_PAYLOAD"},
- {PHY_DSSS_PAYLOAD, "PHY_DSSS_PAYLOAD"},
- {PHY_OFDM_PAYLOAD, "PHY_OFDM_PAYLOAD"},
- {SUPPORTED_RATES_PAYLOAD, "SUPPORTED_RATES_PAYLOAD"},
- {AUTH_PAYLOAD, "AUTH_PAYLOAD"},
- {TEST_PAYLOAD, "TEST_PAYLOAD"},
- {RRM_NEIGHBOR_CTRL_PAYLOAD, "RRM_NEIGHBOR_CTRL_PAYLOAD"},
- {RRM_NOISE_CTRL_PAYLOAD, "RRM_NOISE_CTRL_PAYLOAD"},
- {RRM_NOISE_DATA_PAYLOAD, "RRM_NOISE_DATA_PAYLOAD"},
- {RRM_INTERFERENCE_CTRL_PAYLOAD, "RRM_INTERFERENCE_CTRL_PAYLOAD"},
- {RRM_INTERFERENCE_DATA_PAYLOAD, "RRM_INTERFERENCE_DATA_PAYLOAD"},
- {RRM_LOAD_CTRL_PAYLOAD, "RRM_LOAD_CTRL_PAYLOAD"},
- {RRM_LOAD_DATA_PAYLOAD, "RRM_LOAD_DATA_PAYLOAD"},
- {CHANGE_STATE_EVENT_PAYLOAD, "CHANGE_STATE_EVENT_PAYLOAD"},
- {ADMIN_STATE_PAYLOAD, "ADMIN_STATE_PAYLOAD"},
- {DELETE_VAP_PAYLOAD, "DELETE_VAP_PAYLOAD"},
- {ADD_MOBILE_PAYLOAD, "ADD_MOBILE_PAYLOAD"},
- {DELETE_MOBILE_PAYLOAD, "DELETE_MOBILE_PAYLOAD"},
+ {RESULT_CODE , "RESULT_CODE"},
+ {MWAR_ADDR_PAYLOAD , "MWAR_ADDR_PAYLOAD"},
+ {RAD_PAYLOAD , "RAD_PAYLOAD"},
+ {RAD_SLOT_PAYLOAD , "RAD_SLOT_PAYLOAD"},
+ {RAD_NAME_PAYLOAD , "RAD_NAME_PAYLOAD"},
+ {MWAR_PAYLOAD , "MWAR_PAYLOAD"},
+ {VAP_PAYLOAD , "VAP_PAYLOAD"},
+ {STATION_CFG_PAYLOAD , "STATION_CFG_PAYLOAD"},
+ {OPERATION_RATE_SET_PAYLOAD , "OPERATION_RATE_SET_PAYLOAD"},
+ {MULTI_DOMAIN_CAPABILITY_PAYLOAD , "MULTI_DOMAIN_CAPABILITY_PAYLOAD"},
+ {MAC_OPERATION_PAYLOAD , "MAC_OPERATION_PAYLOAD"},
+ {PHY_TX_POWER_PAYLOAD , "PHY_TX_POWER_PAYLOAD"},
+ {PHY_TX_POWER_LEVEL_PAYLOAD , "PHY_TX_POWER_LEVEL_PAYLOAD"},
+ {PHY_DSSS_PAYLOAD , "PHY_DSSS_PAYLOAD"},
+ {PHY_OFDM_PAYLOAD , "PHY_OFDM_PAYLOAD"},
+ {SUPPORTED_RATES_PAYLOAD , "SUPPORTED_RATES_PAYLOAD"},
+ {AUTH_PAYLOAD , "AUTH_PAYLOAD"},
+ {TEST_PAYLOAD , "TEST_PAYLOAD"},
+ {RRM_NEIGHBOR_CTRL_PAYLOAD , "RRM_NEIGHBOR_CTRL_PAYLOAD"},
+ {RRM_NOISE_CTRL_PAYLOAD , "RRM_NOISE_CTRL_PAYLOAD"},
+ {RRM_NOISE_DATA_PAYLOAD , "RRM_NOISE_DATA_PAYLOAD"},
+ {RRM_INTERFERENCE_CTRL_PAYLOAD , "RRM_INTERFERENCE_CTRL_PAYLOAD"},
+ {RRM_INTERFERENCE_DATA_PAYLOAD , "RRM_INTERFERENCE_DATA_PAYLOAD"},
+ {RRM_LOAD_CTRL_PAYLOAD , "RRM_LOAD_CTRL_PAYLOAD"},
+ {RRM_LOAD_DATA_PAYLOAD , "RRM_LOAD_DATA_PAYLOAD"},
+ {CHANGE_STATE_EVENT_PAYLOAD , "CHANGE_STATE_EVENT_PAYLOAD"},
+ {ADMIN_STATE_PAYLOAD , "ADMIN_STATE_PAYLOAD"},
+ {DELETE_VAP_PAYLOAD , "DELETE_VAP_PAYLOAD"},
+ {ADD_MOBILE_PAYLOAD , "ADD_MOBILE_PAYLOAD"},
+ {DELETE_MOBILE_PAYLOAD , "DELETE_MOBILE_PAYLOAD"},
{0, NULL}
};
+static value_string_ext control_tag_vals_ext = VALUE_STRING_EXT_INIT(control_tag_vals);
#endif
static const true_false_string lwapp_flags_type = {
@@ -248,21 +251,17 @@ static const true_false_string lwapp_flags_type = {
"Encapsulated 80211"
};
-static const true_false_string lwapp_set_truth = {
- "Not Set",
- "Set"
-};
-
/*
* dissect lwapp control packets. This is not fully implemented,
* but it's a good start.
*/
-static void dissect_control(tvbuff_t *tvb, packet_info *pinfo,
+static void
+dissect_control(tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree)
{
- CNTL_Header header;
- proto_tree *control_tree;
- tvbuff_t *next_tvb;
+ CNTL_Header header;
+ proto_tree *control_tree;
+ tvbuff_t *next_tvb;
/* Set up structures needed to add the protocol subtree and manage it */
proto_item *ti;
@@ -284,26 +283,26 @@ static void dissect_control(tvbuff_t *tvb, packet_info *pinfo,
if (check_col(pinfo->cinfo, COL_INFO)) {
col_append_str(pinfo->cinfo, COL_INFO,
- val_to_str(header.type, control_msg_vals, "Bad Type: 0x%02x"));
+ val_to_str_ext(header.type, &control_msg_vals_ext, "Bad Type: 0x%02x"));
}
/* In the interest of speed, if "tree" is NULL, don't do any work not
necessary to generate protocol tree items. */
if (tree) {
- /* create display subtree for the protocol */
- ti = proto_tree_add_item(tree, proto_lwapp_control, tvb, offset,
- -1, ENC_NA);
- control_tree = proto_item_add_subtree(ti, ett_lwapp_control);
+ /* create display subtree for the protocol */
+ ti = proto_tree_add_item(tree, proto_lwapp_control, tvb, offset,
+ -1, ENC_NA);
+ control_tree = proto_item_add_subtree(ti, ett_lwapp_control);
- proto_tree_add_uint(control_tree, hf_lwapp_control_type,
+ proto_tree_add_uint(control_tree, hf_lwapp_control_type,
tvb, offset, 1, header.type);
offset++;
- proto_tree_add_uint(control_tree, hf_lwapp_control_seq_no,
+ proto_tree_add_uint(control_tree, hf_lwapp_control_seq_no,
tvb, offset, 1, header.seqNo);
offset++;
- proto_tree_add_uint(control_tree, hf_lwapp_control_length,
+ proto_tree_add_uint(control_tree, hf_lwapp_control_length,
tvb, offset, 2, header.length);
offset += 2;
@@ -319,29 +318,30 @@ static void dissect_control(tvbuff_t *tvb, packet_info *pinfo,
* the start of the packet, so it simply re-calls the ethernet
* dissector on the packet.
*/
-static void dissect_lwapp_l3(tvbuff_t *tvb, packet_info *pinfo,
+static void
+dissect_lwapp_l3(tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree)
{
/* Set up structures needed to add the protocol subtree and manage it */
- proto_item *ti;
- proto_tree *lwapp_tree;
- gint offset=0;
- tvbuff_t *next_client;
+ proto_item *ti;
+ proto_tree *lwapp_tree;
+ gint offset = 0;
+ tvbuff_t *next_client;
/* Make entries in Protocol column and Info column on summary display */
col_set_str(pinfo->cinfo, COL_PROTOCOL, "LWAPP-L3");
col_set_str(pinfo->cinfo, COL_INFO, "802.3 Packets over Layer 3");
if (tree) {
- /* create display subtree for the protocol */
- ti = proto_tree_add_item(tree, proto_lwapp_l3, tvb, offset,
- -1, ENC_NA);
- lwapp_tree = proto_item_add_subtree(ti, ett_lwapp_l3);
+ /* create display subtree for the protocol */
+ ti = proto_tree_add_item(tree, proto_lwapp_l3, tvb, offset,
+ -1, ENC_NA);
+ lwapp_tree = proto_item_add_subtree(ti, ett_lwapp_l3);
} else {
lwapp_tree = NULL;
}
/* Dissect as Ethernet */
- next_client = tvb_new_subset_remaining(tvb, 0);
+ next_client = tvb_new_subset_remaining(tvb, 0);
call_dissector(eth_withoutfcs_handle, next_client, pinfo, lwapp_tree);
return;
@@ -353,7 +353,8 @@ static void dissect_lwapp_l3(tvbuff_t *tvb, packet_info *pinfo,
* lwapp payload in the data, and doesn't care whether the data was
* from a UDP packet, or a Layer 2 one.
*/
-static void dissect_lwapp(tvbuff_t *tvb, packet_info *pinfo,
+static void
+dissect_lwapp(tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree)
{
LWAPP_Header header;
@@ -410,9 +411,9 @@ static void dissect_lwapp(tvbuff_t *tvb, packet_info *pinfo,
necessary to generate protocol tree items. */
if (tree) {
- /* create display subtree for the protocol */
- ti = proto_tree_add_item(tree, proto_lwapp, tvb, offset, -1, ENC_NA);
- lwapp_tree = proto_item_add_subtree(ti, ett_lwapp);
+ /* create display subtree for the protocol */
+ ti = proto_tree_add_item(tree, proto_lwapp, tvb, offset, -1, ENC_NA);
+ lwapp_tree = proto_item_add_subtree(ti, ett_lwapp);
if (have_destmac) {
proto_tree_add_ether(lwapp_tree, hf_lwapp_control_mac, tvb, offset,
@@ -420,42 +421,42 @@ static void dissect_lwapp(tvbuff_t *tvb, packet_info *pinfo,
offset += 6;
}
- proto_tree_add_uint(lwapp_tree, hf_lwapp_version,
+ proto_tree_add_uint(lwapp_tree, hf_lwapp_version,
tvb, offset, 1, version);
- proto_tree_add_uint(lwapp_tree, hf_lwapp_slotid,
+ proto_tree_add_uint(lwapp_tree, hf_lwapp_slotid,
tvb, offset, 1, slotId);
- flags_tree = proto_item_add_subtree(lwapp_tree, ett_lwapp_flags);
- proto_tree_add_boolean(flags_tree, hf_lwapp_flags_type,
+ flags_tree = proto_item_add_subtree(lwapp_tree, ett_lwapp_flags);
+ proto_tree_add_boolean(flags_tree, hf_lwapp_flags_type,
tvb, offset, 1, header.flags);
- proto_tree_add_boolean(flags_tree, hf_lwapp_flags_fragment,
+ proto_tree_add_boolean(flags_tree, hf_lwapp_flags_fragment,
tvb, offset, 1, header.flags);
- proto_tree_add_boolean(flags_tree, hf_lwapp_flags_fragment_type,
+ proto_tree_add_boolean(flags_tree, hf_lwapp_flags_fragment_type,
tvb, offset, 1, header.flags);
offset++;
- proto_tree_add_uint(lwapp_tree, hf_lwapp_fragment_id,
+ proto_tree_add_uint(lwapp_tree, hf_lwapp_fragment_id,
tvb, offset, 1, header.fragmentId);
offset++;
- proto_tree_add_uint(lwapp_tree, hf_lwapp_length,
+ proto_tree_add_uint(lwapp_tree, hf_lwapp_length,
tvb, offset, 2, header.length);
offset += 2;
- proto_tree_add_uint(lwapp_tree, hf_lwapp_rssi,
+ proto_tree_add_uint(lwapp_tree, hf_lwapp_rssi,
tvb, offset, 1, header.rssi);
offset++;
- proto_tree_add_uint(lwapp_tree, hf_lwapp_snr,
+ proto_tree_add_uint(lwapp_tree, hf_lwapp_snr,
tvb, offset, 1, header.snr);
offset++;
} /* tree */
- next_client = tvb_new_subset(tvb, (have_destmac?6:0) + sizeof(LWAPP_Header), -1, -1);
+ next_client = tvb_new_subset_remaining(tvb, (have_destmac?6:0) + sizeof(LWAPP_Header));
if ((header.flags & LWAPP_FLAGS_T) == 0) {
- call_dissector(swap_frame_control ? wlan_bsfc_handle : wlan_handle,
- next_client, pinfo, tree);
+ call_dissector(swap_frame_control ? wlan_bsfc_handle : wlan_handle,
+ next_client, pinfo, tree);
} else {
dissect_control(next_client, pinfo, tree);
}
@@ -479,11 +480,11 @@ proto_register_lwapp(void)
TFS(&lwapp_flags_type), LWAPP_FLAGS_T, NULL, HFILL }},
{ &hf_lwapp_flags_fragment,
{ "Fragment", "lwapp.flags.fragment", FT_BOOLEAN, 8,
- TFS(&lwapp_set_truth), LWAPP_FLAGS_F,
+ TFS(&tfs_set_notset), LWAPP_FLAGS_F,
NULL, HFILL }},
{ &hf_lwapp_flags_fragment_type,
{ "Fragment Type", "lwapp.flags.fragmentType", FT_BOOLEAN, 8,
- TFS(&lwapp_set_truth), LWAPP_FLAGS_FT,
+ TFS(&tfs_set_notset), LWAPP_FLAGS_FT,
NULL, HFILL }},
{ &hf_lwapp_fragment_id,
{ "Fragment Id","lwapp.fragmentId", FT_UINT8, BASE_HEX,
@@ -504,7 +505,7 @@ proto_register_lwapp(void)
{ "AP Identity", "lwapp.apid", FT_ETHER, BASE_NONE, NULL, 0x0,
"Access Point Identity", HFILL }},
{ &hf_lwapp_control_type,
- { "Control Type", "lwapp.control.type", FT_UINT8, BASE_DEC, NULL, 0x00,
+ { "Control Type", "lwapp.control.type", FT_UINT8, BASE_DEC|BASE_EXT_STRING, &control_msg_vals_ext, 0x00,
NULL, HFILL }},
{ &hf_lwapp_control_seq_no,
{ "Control Sequence Number", "lwapp.control.seqno", FT_UINT8, BASE_DEC, NULL, 0x00,
@@ -535,8 +536,8 @@ proto_register_lwapp(void)
lwapp_module = prefs_register_protocol(proto_lwapp, NULL);
prefs_register_bool_preference(lwapp_module,"swap_fc","Swap Frame Control",
- "Swap frame control bytes (needed for some APs",
- &swap_frame_control);
+ "Swap frame control bytes (needed for some APs",
+ &swap_frame_control);
} /* proto_register_diameter */
diff --git a/epan/dissectors/packet-lwres.c b/epan/dissectors/packet-lwres.c
index 60c9e8692f..9b7700db12 100644
--- a/epan/dissectors/packet-lwres.c
+++ b/epan/dissectors/packet-lwres.c
@@ -28,12 +28,10 @@
#include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-#include <time.h>
#include <string.h>
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/prefs.h>
#include "packet-dns.h"
diff --git a/epan/dissectors/packet-m3ap.c b/epan/dissectors/packet-m3ap.c
index e6f76b7382..66cc301ae1 100644
--- a/epan/dissectors/packet-m3ap.c
+++ b/epan/dissectors/packet-m3ap.c
@@ -47,6 +47,8 @@
#include "packet-ber.h"
#include "packet-per.h"
#include "packet-e212.h"
+#include "packet-gtpv2.h"
+#include "packet-ntp.h"
#define PNAME "M3 Application Protocol"
#define PSNAME "M3AP"
@@ -62,7 +64,7 @@ static dissector_handle_t m3ap_handle=NULL;
#define maxPrivateIEs 65535
#define maxProtocolExtensions 65535
#define maxProtocolIEs 65535
-#define maxnoofMBMSServiceAreasPerMCE 65536
+#define maxnoofMBMSServiceAreaIdentitiesPerMCE 65536
#define maxnooferrors 256
#define maxNrOfIndividualM3ConnectionsToReset 256
@@ -104,11 +106,14 @@ typedef enum _ProtocolIE_ID_enum {
} ProtocolIE_ID_enum;
/*--- End of included file: packet-m3ap-val.h ---*/
-#line 52 "../../asn1/m3ap/packet-m3ap-template.c"
+#line 54 "../../asn1/m3ap/packet-m3ap-template.c"
/* Initialize the protocol and registered fields */
static int proto_m3ap = -1;
+static int hf_m3ap_Absolute_Time_ofMBMS_Data_value = -1;
+static int hf_m3ap_IPAddress = -1;
+
/*--- Included file: packet-m3ap-hf.c ---*/
#line 1 "../../asn1/m3ap/packet-m3ap-hf.c"
@@ -210,7 +215,7 @@ static int hf_m3ap_successfulOutcome_value = -1; /* SuccessfulOutcome_value */
static int hf_m3ap_unsuccessfulOutcome_value = -1; /* UnsuccessfulOutcome_value */
/*--- End of included file: packet-m3ap-hf.c ---*/
-#line 57 "../../asn1/m3ap/packet-m3ap-template.c"
+#line 62 "../../asn1/m3ap/packet-m3ap-template.c"
/* Initialize the subtree pointers */
static int ett_m3ap = -1;
@@ -265,12 +270,12 @@ static gint ett_m3ap_SuccessfulOutcome = -1;
static gint ett_m3ap_UnsuccessfulOutcome = -1;
/*--- End of included file: packet-m3ap-ett.c ---*/
-#line 62 "../../asn1/m3ap/packet-m3ap-template.c"
+#line 67 "../../asn1/m3ap/packet-m3ap-template.c"
enum{
- INITIATING_MESSAGE,
- SUCCESSFUL_OUTCOME,
- UNSUCCESSFUL_OUTCOME
+ INITIATING_MESSAGE,
+ SUCCESSFUL_OUTCOME,
+ UNSUCCESSFUL_OUTCOME
};
/* Global variables */
@@ -375,7 +380,7 @@ dissect_m3ap_ProcedureCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 255U, &ProcedureCode, FALSE);
-#line 63 "../../asn1/m3ap/m3ap.cnf"
+#line 66 "../../asn1/m3ap/m3ap.cnf"
col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%s",
val_to_str_ext(ProcedureCode, &m3ap_ProcedureCode_vals_ext,
"unknown message"));
@@ -419,7 +424,7 @@ dissect_m3ap_ProtocolIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, maxProtocolIEs, &ProtocolIE_ID, FALSE);
-#line 48 "../../asn1/m3ap/m3ap.cnf"
+#line 51 "../../asn1/m3ap/m3ap.cnf"
if (tree) {
proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str_ext(ProtocolIE_ID, &m3ap_ProtocolIE_ID_vals_ext, "unknown (%d)"));
}
@@ -499,7 +504,7 @@ static const per_sequence_t ProtocolIE_ContainerList_sequence_of[1] = {
static int
dissect_m3ap_ProtocolIE_ContainerList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 88 "../../asn1/m3ap/m3ap.cnf"
+#line 91 "../../asn1/m3ap/m3ap.cnf"
static const asn1_par_def_t ProtocolIE_ContainerList_pars[] = {
{ "lowerBound", ASN1_PAR_INTEGER },
{ "upperBound", ASN1_PAR_INTEGER },
@@ -596,8 +601,23 @@ dissect_m3ap_PrivateIE_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
static int
dissect_m3ap_Absolute_Time_ofMBMS_Data(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 146 "../../asn1/m3ap/m3ap.cnf"
+ tvbuff_t *parameter_tvb=NULL;
+ const gchar *time_str;
+ gint tvb_len;
+
offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
- 64, 64, FALSE, NULL);
+ 64, 64, FALSE, &parameter_tvb);
+
+
+ if (!parameter_tvb)
+ return offset;
+
+ tvb_len = tvb_length(parameter_tvb);
+
+ time_str = tvb_ntp_fmt_ts(parameter_tvb, 0);
+ proto_tree_add_string(tree, hf_m3ap_Absolute_Time_ofMBMS_Data_value, parameter_tvb, 0, tvb_len, time_str);
+
return offset;
}
@@ -879,8 +899,16 @@ dissect_m3ap_ExtendedMCE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static int
dissect_m3ap_PLMN_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 122 "../../asn1/m3ap/m3ap.cnf"
+ tvbuff_t *parameter_tvb=NULL;
+
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
- 3, 3, FALSE, NULL);
+ 3, 3, FALSE, &parameter_tvb);
+
+ if (!parameter_tvb)
+ return offset;
+ dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, tree, 0, FALSE);
+
return offset;
}
@@ -942,8 +970,20 @@ dissect_m3ap_GTP_TEID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p
static int
dissect_m3ap_IPAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 133 "../../asn1/m3ap/m3ap.cnf"
+ tvbuff_t *parameter_tvb=NULL;
+ gint tvb_len;
+
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
- 4, 16, TRUE, NULL);
+ 4, 16, TRUE, &parameter_tvb);
+
+
+ if (!parameter_tvb)
+ return offset;
+
+ tvb_len = tvb_length(parameter_tvb);
+ proto_tree_add_item(tree, hf_m3ap_IPAddress, parameter_tvb, 0, tvb_len, ENC_BIG_ENDIAN);
+
return offset;
}
@@ -1024,8 +1064,21 @@ dissect_m3ap_MBMSServiceArea1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
static int
dissect_m3ap_MBMS_Service_Area(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 162 "../../asn1/m3ap/m3ap.cnf"
+ tvbuff_t *parameter_tvb=NULL;
+ guint16 tvb_len;
+
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
- NO_BOUND, NO_BOUND, FALSE, NULL);
+ NO_BOUND, NO_BOUND, FALSE, &parameter_tvb);
+
+
+ if (!parameter_tvb)
+ return offset;
+
+ tvb_len = tvb_length(parameter_tvb);
+
+ dissect_gtpv2_mbms_service_area(parameter_tvb, actx->pinfo, tree, actx->created_item, tvb_len, 0, 0);
+
return offset;
}
@@ -1034,8 +1087,21 @@ dissect_m3ap_MBMS_Service_Area(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
static int
dissect_m3ap_MBMS_Session_Duration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 176 "../../asn1/m3ap/m3ap.cnf"
+ tvbuff_t *parameter_tvb=NULL;
+ guint16 tvb_len;
+
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
- 3, 3, FALSE, NULL);
+ 3, 3, FALSE, &parameter_tvb);
+
+ if (!parameter_tvb)
+ return offset;
+
+ tvb_len = tvb_length(parameter_tvb);
+
+ proto_item_append_text(actx->created_item, " ");
+ dissect_gtpv2_mbms_session_duration(parameter_tvb, actx->pinfo, tree, actx->created_item, tvb_len, 0, 0);
+
return offset;
}
@@ -1064,8 +1130,20 @@ dissect_m3ap_MCEname(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr
static int
dissect_m3ap_MinimumTimeToMBMSDataTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 192 "../../asn1/m3ap/m3ap.cnf"
+ tvbuff_t *parameter_tvb=NULL;
+ guint16 tvb_len;
+
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
- 1, 1, FALSE, NULL);
+ 1, 1, FALSE, &parameter_tvb);
+
+
+ if (!parameter_tvb)
+ return offset;
+
+ tvb_len = tvb_length(parameter_tvb);
+ dissect_gtpv2_mbms_time_to_data_xfer(parameter_tvb, actx->pinfo, tree, actx->created_item, tvb_len, 0, 0);
+
return offset;
}
@@ -1141,6 +1219,9 @@ static const per_sequence_t MBMSSessionStartRequest_sequence[] = {
static int
dissect_m3ap_MBMSSessionStartRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 206 "../../asn1/m3ap/m3ap.cnf"
+ col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Start Request ");
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_m3ap_MBMSSessionStartRequest, MBMSSessionStartRequest_sequence);
@@ -1155,6 +1236,9 @@ static const per_sequence_t MBMSSessionStartResponse_sequence[] = {
static int
dissect_m3ap_MBMSSessionStartResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 208 "../../asn1/m3ap/m3ap.cnf"
+ col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Start Response ");
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_m3ap_MBMSSessionStartResponse, MBMSSessionStartResponse_sequence);
@@ -1169,6 +1253,9 @@ static const per_sequence_t MBMSSessionStartFailure_sequence[] = {
static int
dissect_m3ap_MBMSSessionStartFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 210 "../../asn1/m3ap/m3ap.cnf"
+ col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Start Failure ");
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_m3ap_MBMSSessionStartFailure, MBMSSessionStartFailure_sequence);
@@ -1183,6 +1270,9 @@ static const per_sequence_t MBMSSessionStopRequest_sequence[] = {
static int
dissect_m3ap_MBMSSessionStopRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 212 "../../asn1/m3ap/m3ap.cnf"
+ col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Stop Request ");
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_m3ap_MBMSSessionStopRequest, MBMSSessionStopRequest_sequence);
@@ -1197,6 +1287,9 @@ static const per_sequence_t MBMSSessionStopResponse_sequence[] = {
static int
dissect_m3ap_MBMSSessionStopResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 214 "../../asn1/m3ap/m3ap.cnf"
+ col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Stop Response ");
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_m3ap_MBMSSessionStopResponse, MBMSSessionStopResponse_sequence);
@@ -1211,6 +1304,9 @@ static const per_sequence_t MBMSSessionUpdateRequest_sequence[] = {
static int
dissect_m3ap_MBMSSessionUpdateRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 216 "../../asn1/m3ap/m3ap.cnf"
+ col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Update Request ");
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_m3ap_MBMSSessionUpdateRequest, MBMSSessionUpdateRequest_sequence);
@@ -1225,6 +1321,9 @@ static const per_sequence_t MBMSSessionUpdateResponse_sequence[] = {
static int
dissect_m3ap_MBMSSessionUpdateResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 218 "../../asn1/m3ap/m3ap.cnf"
+ col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Update Response ");
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_m3ap_MBMSSessionUpdateResponse, MBMSSessionUpdateResponse_sequence);
@@ -1239,6 +1338,9 @@ static const per_sequence_t MBMSSessionUpdateFailure_sequence[] = {
static int
dissect_m3ap_MBMSSessionUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 220 "../../asn1/m3ap/m3ap.cnf"
+ col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Update Failure ");
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_m3ap_MBMSSessionUpdateFailure, MBMSSessionUpdateFailure_sequence);
@@ -1253,6 +1355,9 @@ static const per_sequence_t ErrorIndication_sequence[] = {
static int
dissect_m3ap_ErrorIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 222 "../../asn1/m3ap/m3ap.cnf"
+ col_set_str(actx->pinfo->cinfo, COL_INFO,"Error Indication ");
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_m3ap_ErrorIndication, ErrorIndication_sequence);
@@ -1267,6 +1372,9 @@ static const per_sequence_t Reset_sequence[] = {
static int
dissect_m3ap_Reset(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 224 "../../asn1/m3ap/m3ap.cnf"
+ col_set_str(actx->pinfo->cinfo, COL_INFO,"Reset ");
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_m3ap_Reset, Reset_sequence);
@@ -1332,6 +1440,9 @@ static const per_sequence_t ResetAcknowledge_sequence[] = {
static int
dissect_m3ap_ResetAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 226 "../../asn1/m3ap/m3ap.cnf"
+ col_set_str(actx->pinfo->cinfo, COL_INFO,"Reset Acknowledge ");
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_m3ap_ResetAcknowledge, ResetAcknowledge_sequence);
@@ -1360,6 +1471,9 @@ static const per_sequence_t PrivateMessage_sequence[] = {
static int
dissect_m3ap_PrivateMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 228 "../../asn1/m3ap/m3ap.cnf"
+ col_set_str(actx->pinfo->cinfo, COL_INFO,"Private Message ");
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_m3ap_PrivateMessage, PrivateMessage_sequence);
@@ -1374,6 +1488,9 @@ static const per_sequence_t M3SetupRequest_sequence[] = {
static int
dissect_m3ap_M3SetupRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 236 "../../asn1/m3ap/m3ap.cnf"
+ col_set_str(actx->pinfo->cinfo, COL_INFO,"M3 Setup Request ");
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_m3ap_M3SetupRequest, M3SetupRequest_sequence);
@@ -1389,7 +1506,7 @@ static int
dissect_m3ap_MBMSServiceAreaListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
ett_m3ap_MBMSServiceAreaListItem, MBMSServiceAreaListItem_sequence_of,
- 1, maxnoofMBMSServiceAreasPerMCE, FALSE);
+ 1, maxnoofMBMSServiceAreaIdentitiesPerMCE, FALSE);
return offset;
}
@@ -1402,6 +1519,9 @@ static const per_sequence_t M3SetupResponse_sequence[] = {
static int
dissect_m3ap_M3SetupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 238 "../../asn1/m3ap/m3ap.cnf"
+ col_set_str(actx->pinfo->cinfo, COL_INFO,"M3 Setup Response ");
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_m3ap_M3SetupResponse, M3SetupResponse_sequence);
@@ -1416,6 +1536,11 @@ static const per_sequence_t M3SetupFailure_sequence[] = {
static int
dissect_m3ap_M3SetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 240 "../../asn1/m3ap/m3ap.cnf"
+ col_set_str(actx->pinfo->cinfo, COL_INFO,"M3 Setup Failure ");
+
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_m3ap_M3SetupFailure, M3SetupFailure_sequence);
@@ -1430,6 +1555,9 @@ static const per_sequence_t MCEConfigurationUpdate_sequence[] = {
static int
dissect_m3ap_MCEConfigurationUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 230 "../../asn1/m3ap/m3ap.cnf"
+ col_set_str(actx->pinfo->cinfo, COL_INFO,"MCE Configuration Update ");
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_m3ap_MCEConfigurationUpdate, MCEConfigurationUpdate_sequence);
@@ -1444,6 +1572,9 @@ static const per_sequence_t MCEConfigurationUpdateAcknowledge_sequence[] = {
static int
dissect_m3ap_MCEConfigurationUpdateAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 232 "../../asn1/m3ap/m3ap.cnf"
+ col_set_str(actx->pinfo->cinfo, COL_INFO,"MCE Configuration Update Acknowledge ");
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_m3ap_MCEConfigurationUpdateAcknowledge, MCEConfigurationUpdateAcknowledge_sequence);
@@ -1458,6 +1589,9 @@ static const per_sequence_t MCEConfigurationUpdateFailure_sequence[] = {
static int
dissect_m3ap_MCEConfigurationUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 234 "../../asn1/m3ap/m3ap.cnf"
+ col_set_str(actx->pinfo->cinfo, COL_INFO,"MCE Configuration Update Failure ");
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_m3ap_MCEConfigurationUpdateFailure, MCEConfigurationUpdateFailure_sequence);
@@ -1468,7 +1602,7 @@ dissect_m3ap_MCEConfigurationUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, as
static int
dissect_m3ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 70 "../../asn1/m3ap/m3ap.cnf"
+#line 73 "../../asn1/m3ap/m3ap.cnf"
message_type = INITIATING_MESSAGE;
offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
@@ -1496,7 +1630,7 @@ dissect_m3ap_InitiatingMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
static int
dissect_m3ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 73 "../../asn1/m3ap/m3ap.cnf"
+#line 76 "../../asn1/m3ap/m3ap.cnf"
message_type = SUCCESSFUL_OUTCOME;
offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
@@ -1524,7 +1658,7 @@ dissect_m3ap_SuccessfulOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
static int
dissect_m3ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 76 "../../asn1/m3ap/m3ap.cnf"
+#line 79 "../../asn1/m3ap/m3ap.cnf"
message_type = UNSUCCESSFUL_OUTCOME;
@@ -1892,57 +2026,67 @@ static int dissect_M3AP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto
/*--- End of included file: packet-m3ap-fn.c ---*/
-#line 90 "../../asn1/m3ap/packet-m3ap-template.c"
+#line 95 "../../asn1/m3ap/packet-m3ap-template.c"
static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- return (dissector_try_uint(m3ap_ies_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
+ return (dissector_try_uint(m3ap_ies_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
}
static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- return (dissector_try_uint(m3ap_extension_dissector_table, ProtocolExtensionID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
+ return (dissector_try_uint(m3ap_extension_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
}
static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- return (dissector_try_uint(m3ap_proc_imsg_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
+ return (dissector_try_uint(m3ap_proc_imsg_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
}
static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- return (dissector_try_uint(m3ap_proc_sout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
+ return (dissector_try_uint(m3ap_proc_sout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
}
static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- return (dissector_try_uint(m3ap_proc_uout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
+ return (dissector_try_uint(m3ap_proc_uout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
}
static void
dissect_m3ap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *m3ap_item = NULL;
- proto_tree *m3ap_tree = NULL;
+ proto_item *m3ap_item = NULL;
+ proto_tree *m3ap_tree = NULL;
- /* make entry in the Protocol column on summary display */
- if (check_col(pinfo->cinfo, COL_PROTOCOL))
- col_set_str(pinfo->cinfo, COL_PROTOCOL, PNAME);
+ /* make entry in the Protocol column on summary display */
+ if (check_col(pinfo->cinfo, COL_PROTOCOL))
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, PNAME);
- /* create the m3ap protocol tree */
- if (tree) {
- m3ap_item = proto_tree_add_item(tree, proto_m3ap, tvb, 0, -1, FALSE);
- m3ap_tree = proto_item_add_subtree(m3ap_item, ett_m3ap);
+ /* create the m3ap protocol tree */
+ if (tree) {
+ m3ap_item = proto_tree_add_item(tree, proto_m3ap, tvb, 0, -1, ENC_NA);
+ m3ap_tree = proto_item_add_subtree(m3ap_item, ett_m3ap);
- dissect_M3AP_PDU_PDU(tvb, pinfo, m3ap_tree);
- }
+ dissect_M3AP_PDU_PDU(tvb, pinfo, m3ap_tree);
+ }
}
/*--- proto_register_m3ap -------------------------------------------*/
void proto_register_m3ap(void) {
/* List of fields */
static hf_register_info hf[] = {
+ { &hf_m3ap_Absolute_Time_ofMBMS_Data_value,
+ { "Absolute-Time-ofMBMS-Data-value", "m3ap.Absolute_Time_ofMBMS_Data_value",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_m3ap_IPAddress,
+ { "IPAddress", "m3ap.IPAddress",
+ FT_IPv6, BASE_NONE, NULL, 0,
+ NULL, HFILL }
+ },
/*--- Included file: packet-m3ap-hfarr.c ---*/
@@ -2333,7 +2477,7 @@ void proto_register_m3ap(void) {
"UnsuccessfulOutcome_value", HFILL }},
/*--- End of included file: packet-m3ap-hfarr.c ---*/
-#line 142 "../../asn1/m3ap/packet-m3ap-template.c"
+#line 157 "../../asn1/m3ap/packet-m3ap-template.c"
};
/* List of subtrees */
@@ -2389,7 +2533,7 @@ void proto_register_m3ap(void) {
&ett_m3ap_UnsuccessfulOutcome,
/*--- End of included file: packet-m3ap-ettarr.c ---*/
-#line 148 "../../asn1/m3ap/packet-m3ap-template.c"
+#line 163 "../../asn1/m3ap/packet-m3ap-template.c"
};
@@ -2405,8 +2549,6 @@ void proto_register_m3ap(void) {
m3ap_proc_imsg_dissector_table = register_dissector_table("m3ap.proc.imsg", "M3AP-ELEMENTARY-PROCEDURE InitiatingMessage", FT_UINT32, BASE_DEC);
m3ap_proc_sout_dissector_table = register_dissector_table("m3ap.proc.sout", "M3AP-ELEMENTARY-PROCEDURE SuccessfulOutcome", FT_UINT32, BASE_DEC);
m3ap_proc_uout_dissector_table = register_dissector_table("m3ap.proc.uout", "M3AP-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", FT_UINT32, BASE_DEC);
-
-
}
@@ -2414,13 +2556,13 @@ void proto_register_m3ap(void) {
void
proto_reg_handoff_m3ap(void)
{
- static gboolean inited = FALSE;
- static guint SctpPort;
+ static gboolean inited = FALSE;
+ static guint SctpPort;
- if( !inited ) {
- m3ap_handle = create_dissector_handle(dissect_m3ap, proto_m3ap);
- dissector_add_uint("sctp.ppi", PROTO_3GPP_M3AP_PROTOCOL_ID, m3ap_handle);
- inited = TRUE;
+ if( !inited ) {
+ m3ap_handle = create_dissector_handle(dissect_m3ap, proto_m3ap);
+ dissector_add_uint("sctp.ppi", PROTO_3GPP_M3AP_PROTOCOL_ID, m3ap_handle);
+ inited = TRUE;
/*--- Included file: packet-m3ap-dis-tab.c ---*/
#line 1 "../../asn1/m3ap/packet-m3ap-dis-tab.c"
@@ -2466,17 +2608,17 @@ proto_reg_handoff_m3ap(void)
/*--- End of included file: packet-m3ap-dis-tab.c ---*/
-#line 180 "../../asn1/m3ap/packet-m3ap-template.c"
- }
- else {
- if (SctpPort != 0) {
- dissector_delete_uint("sctp.port", SctpPort, m3ap_handle);
- }
- }
-
- SctpPort = global_m3ap_port;
- if (SctpPort != 0) {
- dissector_add_uint("sctp.port", SctpPort, m3ap_handle);
- }
+#line 193 "../../asn1/m3ap/packet-m3ap-template.c"
+ dissector_add_uint("m3ap.extension", 17, new_create_dissector_handle(dissect_AllocationAndRetentionPriority_PDU, proto_m3ap));
+ }
+ else {
+ if (SctpPort != 0) {
+ dissector_delete_uint("sctp.port", SctpPort, m3ap_handle);
+ }
+ }
+ SctpPort = global_m3ap_port;
+ if (SctpPort != 0) {
+ dissector_add_uint("sctp.port", SctpPort, m3ap_handle);
+ }
}
diff --git a/epan/dissectors/packet-m3ua.c b/epan/dissectors/packet-m3ua.c
index f7a31b3b9a..fbf608aa34 100644
--- a/epan/dissectors/packet-m3ua.c
+++ b/epan/dissectors/packet-m3ua.c
@@ -36,9 +36,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-maap.c b/epan/dissectors/packet-maap.c
new file mode 100644
index 0000000000..c95058b12a
--- /dev/null
+++ b/epan/dissectors/packet-maap.c
@@ -0,0 +1,222 @@
+/* packet-maap.c
+ * Routines for 802.3 MAC Address Allocation Protocol defined by IEEE1722
+ * Copyright 2012, Jason Damori, Biamp Systems <jdamori at biamp dot com>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+/* #include <stdio.h> */
+
+#include <epan/packet.h>
+#include <epan/etypes.h>
+
+/* MAAP starts after common 1722 header */
+#define MAAP_START_OFFSET 1
+
+/* MAAP Field Offsets */
+#define MAAP_MSG_TYPE_OFFSET 0+MAAP_START_OFFSET
+#define MAAP_VERSION_OFFSET 1+MAAP_START_OFFSET
+#define MAAP_STREAM_ID_OFFSET 3+MAAP_START_OFFSET
+#define MAAP_REQ_START_ADDR_OFFSET 11+MAAP_START_OFFSET
+#define MAAP_REQ_COUNT_OFFSET 17+MAAP_START_OFFSET
+#define MAAP_CONFLICT_START_ADDR_OFFSET 19+MAAP_START_OFFSET
+#define MAAP_CONFLICT_COUNT_OFFSET 25+MAAP_START_OFFSET
+
+/* Bit Field Masks */
+#define MAAP_MSG_TYPE_MASK 0x0f
+#define MAAP_VERSION_MASK 0xf8
+#define MAAP_DATA_LEN_MASK 0x07ff
+
+/* MAAP message_type */
+#define MAAP_MSG_TYPE_RESERVED_0 0x00
+#define MAAP_MSG_TYPE_PROBE 0x01
+#define MAAP_MSG_TYPE_DEFEND 0x02
+#define MAAP_MSG_TYPE_ANNOUNCE 0x03
+#define MAAP_MSG_TYPE_RESERVED_4 0x04
+#define MAAP_MSG_TYPE_RESERVED_5 0x05
+
+static const value_string maap_msg_type_vals [] = {
+ {MAAP_MSG_TYPE_PROBE, "MAAP_PROBE"},
+ {MAAP_MSG_TYPE_DEFEND, "MAAP_DEFEND"},
+ {MAAP_MSG_TYPE_ANNOUNCE, "MAAP_ANNOUNCE"},
+ {0, NULL}
+};
+
+/**********************************************************/
+/* Initialize the protocol and registered fields */
+/**********************************************************/
+static int proto_maap = -1;
+
+/* MAAP PDU */
+static int hf_maap_message_type = -1;
+static int hf_maap_version = -1;
+static int hf_maap_data_length = -1;
+static int hf_maap_stream_id = -1;
+static int hf_maap_req_start_addr = -1;
+static int hf_maap_req_count = -1;
+static int hf_maap_conflict_start_addr = -1;
+static int hf_maap_conflict_count = -1;
+
+/* Initialize the subtree pointers */
+static int ett_maap = -1;
+
+static void
+dissect_maap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ guint8 maap_msg_type = 0;
+ proto_item *maap_item = NULL;
+ proto_tree *maap_tree = NULL;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "MAAP");
+
+ /* The maap msg type will be handy in a moment */
+ maap_msg_type = tvb_get_guint8(tvb, MAAP_MSG_TYPE_OFFSET);
+ maap_msg_type &= 0x0f;
+
+ col_clear(pinfo->cinfo,COL_INFO);
+ /* Display the name of the packet type in the info column. */
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s:",
+ val_to_str(maap_msg_type, maap_msg_type_vals,
+ "Unknown Type(0x%02x)"));
+
+ /* Now, we'll add the start and conflict addresses and counts to the info column as appropriate */
+ switch (maap_msg_type)
+ {
+ case MAAP_MSG_TYPE_PROBE:
+ case MAAP_MSG_TYPE_ANNOUNCE:
+ col_append_fstr(pinfo->cinfo, COL_INFO, " req_start=%s, cnt=%d",
+ tvb_ether_to_str(tvb, MAAP_REQ_START_ADDR_OFFSET),
+ tvb_get_ntohs(tvb, MAAP_REQ_COUNT_OFFSET));
+
+ break;
+ case MAAP_MSG_TYPE_DEFEND:
+ col_append_fstr(pinfo->cinfo, COL_INFO, " conflict_start=%s, cnt=%d",
+ tvb_ether_to_str(tvb, MAAP_CONFLICT_START_ADDR_OFFSET),
+ tvb_get_ntohs(tvb, MAAP_CONFLICT_COUNT_OFFSET));
+ break;
+ default:
+ /* no info for reserved or unknown msg types */
+ break;
+ }
+
+
+ if (tree) {
+ maap_item = proto_tree_add_item(tree, proto_maap, tvb, MAAP_START_OFFSET, -1, ENC_NA);
+ maap_tree = proto_item_add_subtree(maap_item, ett_maap);
+
+ proto_tree_add_item(maap_tree, hf_maap_message_type, tvb, MAAP_MSG_TYPE_OFFSET, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(maap_tree, hf_maap_version, tvb, MAAP_VERSION_OFFSET, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(maap_tree, hf_maap_data_length, tvb, MAAP_VERSION_OFFSET, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(maap_tree, hf_maap_stream_id, tvb, MAAP_STREAM_ID_OFFSET, 8, ENC_BIG_ENDIAN);
+ proto_tree_add_item(maap_tree, hf_maap_req_start_addr, tvb, MAAP_REQ_START_ADDR_OFFSET, 6, ENC_NA);
+ proto_tree_add_item(maap_tree, hf_maap_req_count, tvb, MAAP_REQ_COUNT_OFFSET, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(maap_tree, hf_maap_conflict_start_addr, tvb, MAAP_CONFLICT_START_ADDR_OFFSET, 6, ENC_NA);
+ proto_tree_add_item(maap_tree, hf_maap_conflict_count, tvb, MAAP_CONFLICT_COUNT_OFFSET, 2, ENC_BIG_ENDIAN);
+ }
+} /* end dissect_maap() */
+
+/* Register the protocol with Wireshark */
+void
+proto_register_maap(void)
+{
+ static hf_register_info hf[] = {
+ { &hf_maap_message_type,
+ { "Message Type", "maap.message_type",
+ FT_UINT8, BASE_HEX,
+ VALS(maap_msg_type_vals), MAAP_MSG_TYPE_MASK,
+ NULL, HFILL }},
+
+ { &hf_maap_version,
+ { "MAAP Version", "maap.version",
+ FT_UINT8, BASE_HEX,
+ NULL, MAAP_VERSION_MASK,
+ NULL, HFILL }},
+
+ { &hf_maap_data_length,
+ { "Data Length", "maap.data_length",
+ FT_UINT16, BASE_HEX,
+ NULL, MAAP_DATA_LEN_MASK,
+ NULL, HFILL }},
+
+ { &hf_maap_stream_id,
+ { "Stream ID", "maap.stream_id",
+ FT_UINT64, BASE_HEX,
+ NULL, 0x00,
+ NULL, HFILL }},
+
+ { &hf_maap_req_start_addr,
+ { "Requested Start Address", "maap.req_start_addr",
+ FT_ETHER, BASE_NONE,
+ NULL, 0x00,
+ NULL, HFILL }},
+
+ { &hf_maap_req_count,
+ { "Request Count", "maap.req_count",
+ FT_UINT16, BASE_HEX,
+ NULL, 0x00,
+ NULL, HFILL }},
+
+ { &hf_maap_conflict_start_addr,
+ { "Conflict Start Address", "maap.conflict_start_addr",
+ FT_ETHER, BASE_NONE,
+ NULL, 0x00,
+ NULL, HFILL }},
+
+ { &hf_maap_conflict_count,
+ { "Conflict Count", "maap.conflict_count",
+ FT_UINT16, BASE_HEX,
+ NULL, 0x00,
+ NULL, HFILL }}
+ }; /* end of static hf_register_info hf[] = */
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = { &ett_maap };
+
+ /* Register the protocol name and description */
+ if (-1 == proto_maap)
+ {
+ proto_maap = proto_register_protocol (
+ "IEEE 1722 MAAP Protocol", /* name */
+ "MAAP", /* short name */
+ "maap" /* abbrev */
+ );
+ }
+
+ /* Required function calls to register the header fields and subtrees used */
+ proto_register_field_array(proto_maap, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+} /* end proto_register_maap() */
+
+void
+proto_reg_handoff_maap(void)
+{
+ dissector_handle_t maap_handle;
+
+ maap_handle = create_dissector_handle(dissect_maap, proto_maap);
+ dissector_add_uint("ieee1722.subtype", 0x7E, maap_handle);
+}
diff --git a/epan/dissectors/packet-mac-lte.c b/epan/dissectors/packet-mac-lte.c
index b24c689735..46b581dad2 100644
--- a/epan/dissectors/packet-mac-lte.c
+++ b/epan/dissectors/packet-mac-lte.c
@@ -37,7 +37,7 @@
/* Described in:
* 3GPP TS 36.321 Evolved Universal Terrestrial Radio Access (E-UTRA)
- * Medium Access Control (MAC) protocol specification (Release 8)
+ * Medium Access Control (MAC) protocol specification (Release 10)
*/
@@ -97,6 +97,7 @@ static int hf_mac_lte_context_phy_dl_tb = -1;
/* Out-of-band events */
static int hf_mac_lte_oob_send_preamble = -1;
static int hf_mac_lte_oob_send_sr = -1;
+static int hf_mac_lte_number_of_srs = -1;
static int hf_mac_lte_oob_sr_failure = -1;
/* MAC SCH/MCH header fields */
@@ -164,6 +165,11 @@ static int hf_mac_lte_control_long_bsr_buffer_size_0 = -1;
static int hf_mac_lte_control_long_bsr_buffer_size_1 = -1;
static int hf_mac_lte_control_long_bsr_buffer_size_2 = -1;
static int hf_mac_lte_control_long_bsr_buffer_size_3 = -1;
+static int hf_mac_lte_control_short_ext_bsr_buffer_size = -1;
+static int hf_mac_lte_control_long_ext_bsr_buffer_size_0 = -1;
+static int hf_mac_lte_control_long_ext_bsr_buffer_size_1 = -1;
+static int hf_mac_lte_control_long_ext_bsr_buffer_size_2 = -1;
+static int hf_mac_lte_control_long_ext_bsr_buffer_size_3 = -1;
static int hf_mac_lte_control_crnti = -1;
static int hf_mac_lte_control_timing_advance = -1;
static int hf_mac_lte_control_timing_advance_reserved = -1;
@@ -175,7 +181,29 @@ static int hf_mac_lte_control_ue_contention_resolution_time_since_msg3 = -1;
static int hf_mac_lte_control_power_headroom = -1;
static int hf_mac_lte_control_power_headroom_reserved = -1;
static int hf_mac_lte_control_power_headroom_level = -1;
-static int hf_mac_lte_control_padding = -1;
+static int hf_mac_lte_control_ext_power_headroom = -1;
+static int hf_mac_lte_control_ext_power_headroom_c7 = -1;
+static int hf_mac_lte_control_ext_power_headroom_c6 = -1;
+static int hf_mac_lte_control_ext_power_headroom_c5 = -1;
+static int hf_mac_lte_control_ext_power_headroom_c4 = -1;
+static int hf_mac_lte_control_ext_power_headroom_c3 = -1;
+static int hf_mac_lte_control_ext_power_headroom_c2 = -1;
+static int hf_mac_lte_control_ext_power_headroom_c1 = -1;
+static int hf_mac_lte_control_ext_power_headroom_reserved = -1;
+static int hf_mac_lte_control_ext_power_headroom_power_backoff = -1;
+static int hf_mac_lte_control_ext_power_headroom_value = -1;
+static int hf_mac_lte_control_ext_power_headroom_level = -1;
+static int hf_mac_lte_control_ext_power_headroom_reserved2 = -1;
+static int hf_mac_lte_control_ext_power_headroom_pcmaxc = -1;
+static int hf_mac_lte_control_activation_deactivation = -1;
+static int hf_mac_lte_control_activation_deactivation_c7 = -1;
+static int hf_mac_lte_control_activation_deactivation_c6 = -1;
+static int hf_mac_lte_control_activation_deactivation_c5 = -1;
+static int hf_mac_lte_control_activation_deactivation_c4 = -1;
+static int hf_mac_lte_control_activation_deactivation_c3 = -1;
+static int hf_mac_lte_control_activation_deactivation_c2 = -1;
+static int hf_mac_lte_control_activation_deactivation_c1 = -1;
+static int hf_mac_lte_control_activation_deactivation_reserved = -1;
static int hf_mac_lte_control_mch_scheduling_info = -1;
static int hf_mac_lte_control_mch_scheduling_info_lcid = -1;
static int hf_mac_lte_control_mch_scheduling_info_stop_mtch = -1;
@@ -216,8 +244,11 @@ static int ett_mac_lte_rar_ul_grant = -1;
static int ett_mac_lte_bsr = -1;
static int ett_mac_lte_bch = -1;
static int ett_mac_lte_pch = -1;
+static int ett_mac_lte_activation_deactivation = -1;
static int ett_mac_lte_contention_resolution = -1;
static int ett_mac_lte_power_headroom = -1;
+static int ett_mac_lte_extended_power_headroom = -1;
+static int ett_mac_lte_extended_power_headroom_cell = -1;
static int ett_mac_lte_mch_scheduling_info = -1;
static int ett_mac_lte_oob = -1;
@@ -302,7 +333,27 @@ static const value_string modulation_type_vals[] =
{ 0, NULL }
};
+static const true_false_string mac_lte_scell_ph_vals = {
+ "Reported",
+ "Not reported"
+};
+
+static const true_false_string mac_lte_power_backoff_vals = {
+ "Applied",
+ "Not applied"
+};
+static const true_false_string mac_lte_ph_value_vals = {
+ "Based on reference format",
+ "Based on real transmission"
+};
+
+static const true_false_string mac_lte_scell_status_vals = {
+ "Activated",
+ "Deactivated"
+};
+
+#define ACTIVATION_DEACTIVATION_LCID 0x1b
#define UE_CONTENTION_RESOLUTION_IDENTITY_LCID 0x1c
#define TIMING_ADVANCE_LCID 0x1d
#define DRX_COMMAND_LCID 0x1e
@@ -321,6 +372,7 @@ static const value_string dlsch_lcid_vals[] =
{ 8, "8"},
{ 9, "9"},
{ 10, "10"},
+ { ACTIVATION_DEACTIVATION_LCID , "Activation/Deactivation"},
{ UE_CONTENTION_RESOLUTION_IDENTITY_LCID, "UE Contention Resolution Identity"},
{ TIMING_ADVANCE_LCID , "Timing Advance"},
{ DRX_COMMAND_LCID , "DRX Command"},
@@ -328,31 +380,33 @@ static const value_string dlsch_lcid_vals[] =
{ 0, NULL }
};
-#define POWER_HEADROOM_REPORT_LCID 0x1a
-#define CRNTI_LCID 0x1b
-#define TRUNCATED_BSR_LCID 0x1c
-#define SHORT_BSR_LCID 0x1d
-#define LONG_BSR_LCID 0x1e
+#define EXTENDED_POWER_HEADROOM_REPORT_LCID 0x19
+#define POWER_HEADROOM_REPORT_LCID 0x1a
+#define CRNTI_LCID 0x1b
+#define TRUNCATED_BSR_LCID 0x1c
+#define SHORT_BSR_LCID 0x1d
+#define LONG_BSR_LCID 0x1e
static const value_string ulsch_lcid_vals[] =
{
- { 0, "CCCH"},
- { 1, "1"},
- { 2, "2"},
- { 3, "3"},
- { 4, "4"},
- { 5, "5"},
- { 6, "6"},
- { 7, "7"},
- { 8, "8"},
- { 9, "9"},
- { 10, "10"},
- { POWER_HEADROOM_REPORT_LCID, "Power Headroom Report"},
- { CRNTI_LCID, "C-RNTI"},
- { TRUNCATED_BSR_LCID, "Truncated BSR"},
- { SHORT_BSR_LCID, "Short BSR"},
- { LONG_BSR_LCID, "Long BSR"},
- { PADDING_LCID, "Padding" },
+ { 0, "CCCH"},
+ { 1, "1"},
+ { 2, "2"},
+ { 3, "3"},
+ { 4, "4"},
+ { 5, "5"},
+ { 6, "6"},
+ { 7, "7"},
+ { 8, "8"},
+ { 9, "9"},
+ { 10, "10"},
+ { EXTENDED_POWER_HEADROOM_REPORT_LCID, "Extended Power Headroom Report"},
+ { POWER_HEADROOM_REPORT_LCID, "Power Headroom Report"},
+ { CRNTI_LCID, "C-RNTI"},
+ { TRUNCATED_BSR_LCID, "Truncated BSR"},
+ { SHORT_BSR_LCID, "Short BSR"},
+ { LONG_BSR_LCID, "Long BSR"},
+ { PADDING_LCID, "Padding" },
{ 0, NULL }
};
@@ -432,22 +486,22 @@ static const value_string rar_bi_vals[] =
static const value_string buffer_size_vals[] =
{
{ 0, "BS = 0"},
- { 1, "0 < BS <= 10"},
- { 2, "10 < BS <= 12"},
- { 3, "12 < BS <= 14"},
- { 4, "14 < BS <= 17"},
- { 5, "17 < BS <= 19"},
- { 6, "19 < BS <= 22"},
- { 7, "22 < BS <= 26"},
- { 8, "26 < BS <= 31"},
- { 9, "31 < BS <= 36"},
- { 10, "36 < BS <= 42"},
- { 11, "42 < BS <= 49"},
- { 12, "49 < BS <= 57"},
- { 13, "47 < BS <= 67"},
- { 14, "67 < BS <= 78"},
- { 15, "78 < BS <= 91"},
- { 16, "91 < BS <= 107"},
+ { 1, "0 < BS <= 10"},
+ { 2, "10 < BS <= 12"},
+ { 3, "12 < BS <= 14"},
+ { 4, "14 < BS <= 17"},
+ { 5, "17 < BS <= 19"},
+ { 6, "19 < BS <= 22"},
+ { 7, "22 < BS <= 26"},
+ { 8, "26 < BS <= 31"},
+ { 9, "31 < BS <= 36"},
+ { 10, "36 < BS <= 42"},
+ { 11, "42 < BS <= 49"},
+ { 12, "49 < BS <= 57"},
+ { 13, "47 < BS <= 67"},
+ { 14, "67 < BS <= 78"},
+ { 15, "78 < BS <= 91"},
+ { 16, "91 < BS <= 107"},
{ 17, "107 < BS <= 125"},
{ 18, "125 < BS <= 146"},
{ 19, "146 < BS <= 171"},
@@ -462,7 +516,7 @@ static const value_string buffer_size_vals[] =
{ 28, "603 < BS <= 706"},
{ 29, "706 < BS <= 826"},
{ 30, "826 < BS <= 967"},
- { 31, "967 < BS <= 1132"},
+ { 31, "967 < BS <= 1132"},
{ 32, "1132 < BS <= 1326"},
{ 33, "1326 < BS <= 1552"},
{ 34, "1552 < BS <= 1817"},
@@ -497,8 +551,79 @@ static const value_string buffer_size_vals[] =
{ 63, "BS > 150000"},
{ 0, NULL }
};
+static value_string_ext buffer_size_vals_ext = VALUE_STRING_EXT_INIT(buffer_size_vals);
-static const value_string power_headroom_size_vals[] =
+static const value_string ext_buffer_size_vals[] =
+{
+ { 0, "BS = 0"},
+ { 1, "0 < BS <= 10"},
+ { 2, "10 < BS <= 13"},
+ { 3, "13 < BS <= 16"},
+ { 4, "16 < BS <= 19"},
+ { 5, "19 < BS <= 23"},
+ { 6, "23 < BS <= 29"},
+ { 7, "29 < BS <= 35"},
+ { 8, "35 < BS <= 43"},
+ { 9, "43 < BS <= 53"},
+ { 10, "53 < BS <= 65"},
+ { 11, "65 < BS <= 80"},
+ { 12, "80 < BS <= 98"},
+ { 13, "98 < BS <= 120"},
+ { 14, "120 < BS <= 147"},
+ { 15, "147 < BS <= 181"},
+ { 16, "181 < BS <= 223"},
+ { 17, "223 < BS <= 274"},
+ { 18, "274 < BS <= 337"},
+ { 19, "337 < BS <= 414"},
+ { 20, "414 < BS <= 509"},
+ { 21, "509 < BS <= 625"},
+ { 22, "625 < BS <= 769"},
+ { 23, "769 < BS <= 945"},
+ { 24, "945 < BS <= 1162"},
+ { 25, "1162 < BS <= 1429"},
+ { 26, "1429 < BS <= 1757"},
+ { 27, "1757 < BS <= 2161"},
+ { 28, "2161 < BS <= 2657"},
+ { 29, "2657 < BS <= 3267"},
+ { 30, "3267 < BS <= 4017"},
+ { 31, "4017 < BS <= 4940"},
+ { 32, "4940 < BS <= 6074"},
+ { 33, "6074 < BS <= 7469"},
+ { 34, "7469 < BS <= 9185"},
+ { 35, "9185 < BS <= 11294"},
+ { 36, "11294 < BS <= 13888"},
+ { 37, "13888 < BS <= 17077"},
+ { 38, "17077 < BS <= 20999"},
+ { 39, "20999 < BS <= 25822"},
+ { 40, "25822 < BS <= 31752"},
+ { 41, "31752 < BS <= 39045"},
+ { 42, "39045 < BS <= 48012"},
+ { 43, "48012 < BS <= 59039"},
+ { 44, "59039 < BS <= 72598"},
+ { 45, "72598 < BS <= 89272"},
+ { 46, "89272 < BS <= 109774"},
+ { 47, "109774 < BS <= 134986"},
+ { 48, "134986 < BS <= 165989"},
+ { 49, "165989 < BS <= 204111"},
+ { 50, "204111 < BS <= 250990"},
+ { 51, "250990 < BS <= 308634"},
+ { 52, "308634 < BS <= 379519"},
+ { 53, "379519 < BS <= 466683"},
+ { 54, "466683 < BS <= 573866"},
+ { 55, "573866 < BS <= 705666"},
+ { 56, "705666 < BS <= 867737"},
+ { 57, "867737 < BS <= 1067031"},
+ { 58, "1067031 < BS <= 1312097"},
+ { 59, "1312097 < BS <= 1613447"},
+ { 60, "1613447 < BS <= 1984009"},
+ { 61, "1984009 < BS <= 2439678"},
+ { 62, "2439678 < BS <= 3000000"},
+ { 63, "BS > 3000000"},
+ { 0, NULL }
+};
+static value_string_ext ext_buffer_size_vals_ext = VALUE_STRING_EXT_INIT(ext_buffer_size_vals);
+
+static const value_string power_headroom_vals[] =
{
{ 0, "-23 <= PH < -22"},
{ 1, "-22 <= PH < -21"},
@@ -566,6 +691,77 @@ static const value_string power_headroom_size_vals[] =
{ 63, "PH >= 40"},
{ 0, NULL }
};
+static value_string_ext power_headroom_vals_ext = VALUE_STRING_EXT_INIT(power_headroom_vals);
+
+static const value_string pcmaxc_vals[] =
+{
+ { 0, "Pcmax,c < -29"},
+ { 1, "-29 <= Pcmax,c < -28"},
+ { 2, "-28 <= Pcmax,c < -27"},
+ { 3, "-27 <= Pcmax,c < -26"},
+ { 4, "-26 <= Pcmax,c < -25"},
+ { 5, "-25 <= Pcmax,c < -24"},
+ { 6, "-24 <= Pcmax,c < -23"},
+ { 7, "-23 <= Pcmax,c < -22"},
+ { 8, "-22 <= Pcmax,c < -21"},
+ { 9, "-21 <= Pcmax,c < -20"},
+ { 10, "-20 <= Pcmax,c < -19"},
+ { 11, "-19 <= Pcmax,c < -18"},
+ { 12, "-18 <= Pcmax,c < -17"},
+ { 13, "-17 <= Pcmax,c < -16"},
+ { 14, "-16 <= Pcmax,c < -15"},
+ { 15, "-15 <= Pcmax,c < -14"},
+ { 16, "-14 <= Pcmax,c < -13"},
+ { 17, "-13 <= Pcmax,c < -12"},
+ { 18, "-12 <= Pcmax,c < -11"},
+ { 19, "-11 <= Pcmax,c < -10"},
+ { 20, "-10 <= Pcmax,c < -9"},
+ { 21, "-9 <= Pcmax,c < -8"},
+ { 22, "-8 <= Pcmax,c < -7"},
+ { 23, "-7 <= Pcmax,c < -6"},
+ { 24, "-6 <= Pcmax,c < -5"},
+ { 25, "-5 <= Pcmax,c < -4"},
+ { 26, "-4 <= Pcmax,c < -3"},
+ { 27, "-3 <= Pcmax,c < -2"},
+ { 28, "-2 <= Pcmax,c < -1"},
+ { 29, "-1 <= Pcmax,c < 0"},
+ { 30, "0 <= Pcmax,c < 1"},
+ { 31, "1 <= Pcmax,c < 2"},
+ { 32, "2 <= Pcmax,c < 3"},
+ { 33, "3 <= Pcmax,c < 4"},
+ { 34, "4 <= Pcmax,c < 5"},
+ { 35, "5 <= Pcmax,c < 6"},
+ { 36, "6 <= Pcmax,c < 7"},
+ { 37, "7 <= Pcmax,c < 8"},
+ { 38, "8 <= Pcmax,c < 9"},
+ { 39, "9 <= Pcmax,c < 10"},
+ { 40, "10 <= Pcmax,c < 11"},
+ { 41, "11 <= Pcmax,c < 12"},
+ { 42, "12 <= Pcmax,c < 13"},
+ { 43, "13 <= Pcmax,c < 14"},
+ { 44, "14 <= Pcmax,c < 15"},
+ { 45, "15 <= Pcmax,c < 16"},
+ { 46, "16 <= Pcmax,c < 17"},
+ { 47, "17 <= Pcmax,c < 18"},
+ { 48, "18 <= Pcmax,c < 19"},
+ { 49, "19 <= Pcmax,c < 20"},
+ { 50, "20 <= Pcmax,c < 21"},
+ { 51, "21 <= Pcmax,c < 22"},
+ { 52, "22 <= Pcmax,c < 23"},
+ { 53, "23 <= Pcmax,c < 24"},
+ { 54, "24 <= Pcmax,c < 25"},
+ { 55, "25 <= Pcmax,c < 26"},
+ { 56, "26 <= Pcmax,c < 27"},
+ { 57, "27 <= Pcmax,c < 28"},
+ { 58, "28 <= Pcmax,c < 29"},
+ { 59, "29 <= Pcmax,c < 30"},
+ { 60, "30 <= Pcmax,c < 31"},
+ { 61, "31 <= Pcmax,c < 32"},
+ { 62, "32 <= Pcmax,c < 33"},
+ { 63, "33 <= Pcmax,c"},
+ { 0, NULL }
+};
+static value_string_ext pcmaxc_vals_ext = VALUE_STRING_EXT_INIT(pcmaxc_vals);
static const value_string header_only_vals[] =
{
@@ -985,7 +1181,7 @@ gboolean dissect_mac_lte_context_fields(struct mac_lte_info *p_mac_lte_info, tv
p_mac_lte_info->subframeNumber = tvb_get_ntohs(tvb, offset);
offset += 2;
break;
- case MAC_LTE_PREDFINED_DATA_TAG:
+ case MAC_LTE_PREDEFINED_DATA_TAG:
p_mac_lte_info->isPredefinedData = tvb_get_guint8(tvb, offset);
offset++;
break;
@@ -998,6 +1194,9 @@ gboolean dissect_mac_lte_context_fields(struct mac_lte_info *p_mac_lte_info, tv
p_mac_lte_info->detailed_phy_info.dl_info.crc_status = tvb_get_guint8(tvb, offset);
offset++;
break;
+ case MAC_LTE_EXT_BSR_SIZES_TAG:
+ p_mac_lte_info->isExtendedBSRSizes = TRUE;
+ break;
case MAC_LTE_PAYLOAD_TAG:
/* Have reached data, so set payload length and get out of loop */
@@ -1289,16 +1488,16 @@ static gint dissect_rar_entry(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
proto_item *pdu_ti,
gint offset, guint8 rapid)
{
- guint8 reserved;
- guint start_body_offset = offset;
+ guint8 reserved;
+ guint start_body_offset = offset;
proto_item *ti;
proto_item *rar_body_ti;
proto_tree *rar_body_tree;
proto_tree *ul_grant_tree;
proto_item *ul_grant_ti;
- guint16 timing_advance;
- guint32 ul_grant;
- guint16 temp_crnti;
+ guint16 timing_advance;
+ guint32 ul_grant;
+ guint16 temp_crnti;
/* Create tree for this Body */
rar_body_ti = proto_tree_add_item(tree,
@@ -1379,17 +1578,17 @@ static gint dissect_rar_entry(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
static void dissect_rar(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *pdu_ti,
gint offset, mac_lte_info *p_mac_lte_info, mac_lte_tap_info *tap_info)
{
- gint number_of_rars = 0; /* No of RAR bodies expected following headers */
- guint8 *rapids = ep_alloc(MAX_RAR_PDUS * sizeof(guint8));
- gboolean backoff_indicator_seen = FALSE;
- guint8 backoff_indicator = 0;
- guint8 extension;
- gint n;
+ gint number_of_rars = 0; /* No of RAR bodies expected following headers */
+ guint8 *rapids = ep_alloc(MAX_RAR_PDUS * sizeof(guint8));
+ gboolean backoff_indicator_seen = FALSE;
+ guint8 backoff_indicator = 0;
+ guint8 extension;
+ gint n;
proto_tree *rar_headers_tree;
proto_item *ti;
proto_item *rar_headers_ti;
proto_item *padding_length_ti;
- int start_headers_offset = offset;
+ int start_headers_offset = offset;
write_pdu_label_and_info(pdu_ti, NULL, pinfo,
"RAR (RA-RNTI=%u, SF=%u) ",
@@ -1640,6 +1839,7 @@ static int is_fixed_sized_control_element(guint8 lcid, guint8 direction)
else {
/* Assume Downlink */
switch (lcid) {
+ case ACTIVATION_DEACTIVATION_LCID:
case UE_CONTENTION_RESOLUTION_IDENTITY_LCID:
case TIMING_ADVANCE_LCID:
case DRX_COMMAND_LCID:
@@ -1670,7 +1870,7 @@ static void call_rlc_dissector(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr
guint8 UMSequenceNumberLength,
guint8 priority)
{
- tvbuff_t *srb_tvb = tvb_new_subset(tvb, offset, data_length, data_length);
+ tvbuff_t *srb_tvb = tvb_new_subset(tvb, offset, data_length, data_length);
struct rlc_lte_info *p_rlc_lte_info;
/* Get RLC dissector handle */
@@ -2025,12 +2225,12 @@ static SRResult *GetSRResult(guint32 frameNum, gboolean can_create)
static void TrackSRInfo(SREvent event, packet_info *pinfo, proto_tree *tree,
tvbuff_t *tvb, mac_lte_info *p_mac_lte_info, gint idx, proto_item *event_ti)
{
- SRResult *result = NULL;
- SRState *state;
- SRResult *resultForSRFrame = NULL;
+ SRResult *result = NULL;
+ SRState *state;
+ SRResult *resultForSRFrame = NULL;
- guint16 rnti;
- guint16 ueid;
+ guint16 rnti;
+ guint16 ueid;
proto_item *ti;
/* Get appropriate identifiers */
@@ -2350,7 +2550,7 @@ static void lookup_rlc_channel_from_lcid(guint8 lcid,
/* Zero params (in case no match is found) */
*rlc_channel_type = rlcRaw;
*UM_seqnum_length = 0;
- *drb_id = 0;
+ *drb_id = 0;
if (global_mac_lte_lcid_drb_source == (int)FromStaticTable) {
@@ -2417,16 +2617,16 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree
proto_item *retx_ti,
proto_tree *context_tree)
{
- guint8 extension;
- volatile guint16 n;
+ guint8 extension;
+ volatile guint16 n;
proto_item *truncated_ti;
proto_item *padding_length_ti;
proto_item *hidden_root_ti;
/* Keep track of LCIDs and lengths as we dissect the header */
volatile guint16 number_of_headers = 0;
- guint8 lcids[MAX_HEADERS_IN_PDU];
- gint16 pdu_lengths[MAX_HEADERS_IN_PDU];
+ guint8 lcids[MAX_HEADERS_IN_PDU];
+ gint16 pdu_lengths[MAX_HEADERS_IN_PDU];
proto_item *pdu_header_ti;
proto_tree *pdu_header_tree;
@@ -2759,6 +2959,45 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree
/****************************/
/* DL-SCH Control PDUs */
switch (lcids[n]) {
+ case ACTIVATION_DEACTIVATION_LCID:
+ {
+ proto_item *ad_ti;
+ proto_tree *ad_tree;
+ proto_item *ti;
+ guint8 reserved;
+
+ /* Create AD root */
+ ad_ti = proto_tree_add_string_format(tree,
+ hf_mac_lte_control_activation_deactivation,
+ tvb, offset, 1,
+ "",
+ "Activation/Deactivation");
+ ad_tree = proto_item_add_subtree(ad_ti, ett_mac_lte_activation_deactivation);
+
+ proto_tree_add_item(ad_tree, hf_mac_lte_control_activation_deactivation_c7,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ad_tree, hf_mac_lte_control_activation_deactivation_c6,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ad_tree, hf_mac_lte_control_activation_deactivation_c5,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ad_tree, hf_mac_lte_control_activation_deactivation_c4,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ad_tree, hf_mac_lte_control_activation_deactivation_c3,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ad_tree, hf_mac_lte_control_activation_deactivation_c2,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ad_tree, hf_mac_lte_control_activation_deactivation_c1,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ ti = proto_tree_add_item(ad_tree, hf_mac_lte_control_activation_deactivation_reserved,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ reserved = tvb_get_guint8(tvb, offset) & 0x01;
+ if (reserved != 0) {
+ expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR,
+ "Activation/Deactivation Reserved bit not zero");
+ }
+ offset++;
+ }
+ break;
case UE_CONTENTION_RESOLUTION_IDENTITY_LCID:
{
proto_item *cr_ti;
@@ -2907,6 +3146,160 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree
/**********************************/
/* UL-SCH Control PDUs */
switch (lcids[n]) {
+ case EXTENDED_POWER_HEADROOM_REPORT_LCID:
+ {
+ proto_item *ephr_ti;
+ proto_tree *ephr_tree;
+ proto_item *ti;
+ proto_tree *ephr_cell_tree;
+ proto_item *ephr_cell_ti;
+ guint8 scell_bitmap;
+ guint8 scell_count;
+ guint8 byte;
+ guint i;
+ guint32 curr_offset = offset;
+ guint32 computed_header_offset;
+
+ if (pdu_lengths[n] == -1) {
+ /* Control Element size is the remaining PDU */
+ pdu_lengths[n] = (gint16)tvb_length_remaining(tvb, curr_offset);
+ }
+
+ /* Create EPHR root */
+ ephr_ti = proto_tree_add_string_format(tree,
+ hf_mac_lte_control_ext_power_headroom,
+ tvb, curr_offset, pdu_lengths[n],
+ "",
+ "Extended Power Headroom");
+ ephr_tree = proto_item_add_subtree(ephr_ti, ett_mac_lte_extended_power_headroom);
+
+ scell_bitmap = tvb_get_guint8(tvb, curr_offset);
+ proto_tree_add_item(ephr_tree, hf_mac_lte_control_ext_power_headroom_c7,
+ tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ephr_tree, hf_mac_lte_control_ext_power_headroom_c6,
+ tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ephr_tree, hf_mac_lte_control_ext_power_headroom_c5,
+ tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ephr_tree, hf_mac_lte_control_ext_power_headroom_c4,
+ tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ephr_tree, hf_mac_lte_control_ext_power_headroom_c3,
+ tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ephr_tree, hf_mac_lte_control_ext_power_headroom_c2,
+ tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ephr_tree, hf_mac_lte_control_ext_power_headroom_c1,
+ tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* Check Reserved bit */
+ ti = proto_tree_add_item(ephr_tree, hf_mac_lte_control_ext_power_headroom_reserved,
+ tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ if (scell_bitmap & 0x01) {
+ expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR,
+ "Extended Power Headroom Reserved bit not zero");
+ }
+ curr_offset++;
+
+ /* Compute expected header size to deduce if PH Type 2 report is present or not */
+ /* First count the number of SCells */
+ for (i = 0, scell_count = 0; i < 7; i++) {
+ if (scell_bitmap & (0x80>>i)) {
+ scell_count++;
+ }
+ }
+ /* Now quickly parse the header */
+ computed_header_offset = curr_offset;
+ for (i = 0; i < scell_count; i++) {
+ if (tvb_get_guint8(tvb, computed_header_offset) & 0x80) {
+ computed_header_offset++;
+ }
+ computed_header_offset++;
+ }
+
+ if ((gint16)(computed_header_offset + 1 - curr_offset) != pdu_lengths[n]) {
+ /* PH Type 2 is present */
+ if (tvb_get_guint8(tvb, computed_header_offset) & 0x80) {
+ computed_header_offset++;
+ }
+ computed_header_offset++;
+ if ((gint16)(computed_header_offset + 1 - curr_offset) != pdu_lengths[n]) {
+ expert_add_info_format(pinfo, ephr_ti, PI_MALFORMED, PI_ERROR,
+ "Control Element has an unexpected size (computed=%d, actual=%d)",
+ computed_header_offset + 1 - curr_offset, pdu_lengths[n]);
+ offset += pdu_lengths[n];
+ break;
+ }
+ byte = tvb_get_guint8(tvb, curr_offset);
+ ephr_cell_ti = proto_tree_add_text(ephr_tree, tvb, curr_offset, ((byte&0x80)?2:1), "PCell");
+ ephr_cell_tree = proto_item_add_subtree(ephr_cell_ti, ett_mac_lte_extended_power_headroom_cell);
+ proto_tree_add_item(ephr_cell_tree, hf_mac_lte_control_ext_power_headroom_power_backoff,
+ tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ephr_cell_tree, hf_mac_lte_control_ext_power_headroom_value,
+ tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ephr_cell_tree, hf_mac_lte_control_ext_power_headroom_level,
+ tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_item_append_text(ephr_cell_ti, " (%s)",
+ val_to_str_ext_const((byte&0x3f), &power_headroom_vals_ext, "Unknown"));
+ curr_offset++;
+ if (byte & 0x80) {
+ /* Pcmax,c field is present */
+ byte = tvb_get_guint8(tvb, curr_offset);
+ /* Check 2 Reserved bits */
+ ti = proto_tree_add_item(ephr_cell_tree, hf_mac_lte_control_ext_power_headroom_reserved2,
+ tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ if (byte & 0xc0) {
+ expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR,
+ "Extended Power Headroom Reserved bits not zero (found 0x%x)",
+ (byte & 0xc0) >> 6);
+ }
+ proto_tree_add_item(ephr_cell_tree, hf_mac_lte_control_ext_power_headroom_pcmaxc,
+ tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_item_append_text(ephr_cell_ti, " (%s)",
+ val_to_str_ext_const((byte&0x3f), &pcmaxc_vals_ext, "Unknown"));
+ curr_offset++;
+ }
+ } else {
+ if ((gint16)(computed_header_offset + 1 - curr_offset) != pdu_lengths[n]) {
+ expert_add_info_format(pinfo, ephr_ti, PI_MALFORMED, PI_ERROR,
+ "Control Element has an unexpected size (computed=%d, actual=%d)",
+ computed_header_offset + 1 - curr_offset, pdu_lengths[n]);
+ offset += pdu_lengths[n];
+ break;
+ }
+ }
+ for (i = 1, scell_bitmap>>=1; i <= 7; i++, scell_bitmap>>=1) {
+ if (scell_bitmap & 0x01) {
+ byte = tvb_get_guint8(tvb, curr_offset);
+ ephr_cell_ti = proto_tree_add_text(ephr_tree, tvb, curr_offset, ((byte&0x80)?2:1), "SCell Index %u", i);
+ ephr_cell_tree = proto_item_add_subtree(ephr_cell_ti, ett_mac_lte_extended_power_headroom_cell);
+ proto_tree_add_item(ephr_cell_tree, hf_mac_lte_control_ext_power_headroom_power_backoff,
+ tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ephr_cell_tree, hf_mac_lte_control_ext_power_headroom_value,
+ tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ephr_cell_tree, hf_mac_lte_control_ext_power_headroom_level,
+ tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_item_append_text(ephr_cell_ti, " (%s)",
+ val_to_str_ext_const((byte&0x3f), &power_headroom_vals_ext, "Unknown"));
+ curr_offset++;
+ if (byte & 0x80) {
+ /* Pcmax,c field is present */
+ byte = tvb_get_guint8(tvb, curr_offset);
+ /* Check 2 Reserved bits */
+ ti = proto_tree_add_item(ephr_cell_tree, hf_mac_lte_control_ext_power_headroom_reserved2,
+ tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ if (byte & 0xc0) {
+ expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR,
+ "Extended Power Headroom Reserved bits not zero (found 0x%x)",
+ (byte & 0xc0) >> 6);
+ }
+ proto_tree_add_item(ephr_cell_tree, hf_mac_lte_control_ext_power_headroom_pcmaxc,
+ tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_item_append_text(ephr_cell_ti, " (%s)",
+ val_to_str_ext_const((byte&0x3f), &pcmaxc_vals_ext, "Unknown"));
+ curr_offset++;
+ }
+ }
+ }
+ offset += pdu_lengths[n];
+ }
+ break;
case POWER_HEADROOM_REPORT_LCID:
{
proto_item *phr_ti;
@@ -2939,7 +3332,7 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree
/* Show value in root label */
proto_item_append_text(phr_ti, " (%s)",
- val_to_str_const(level, power_headroom_size_vals, "Unknown"));
+ val_to_str_ext_const(level, &power_headroom_vals_ext, "Unknown"));
offset++;
}
@@ -2958,6 +3351,16 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree
proto_item *buffer_size_ti;
guint8 lcgid;
guint8 buffer_size;
+ int hfindex;
+ value_string_ext *p_vs_ext;
+
+ if (p_mac_lte_info->isExtendedBSRSizes) {
+ hfindex = hf_mac_lte_control_short_ext_bsr_buffer_size;
+ p_vs_ext = &ext_buffer_size_vals_ext;
+ } else {
+ hfindex = hf_mac_lte_control_short_bsr_buffer_size;
+ p_vs_ext = &buffer_size_vals_ext;
+ }
bsr_ti = proto_tree_add_string_format(tree,
hf_mac_lte_control_bsr,
@@ -2972,7 +3375,7 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree
tvb, offset, 1, ENC_BIG_ENDIAN);
/* Buffer Size */
buffer_size = tvb_get_guint8(tvb, offset) & 0x3f;
- buffer_size_ti = proto_tree_add_item(bsr_tree, hf_mac_lte_control_short_bsr_buffer_size,
+ buffer_size_ti = proto_tree_add_item(bsr_tree, hfindex,
tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
if (buffer_size >= global_mac_lte_bsr_warn_threshold) {
@@ -2980,13 +3383,14 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree
"UE %u - BSR for LCG %u exceeds threshold: %u (%s)",
p_mac_lte_info->ueid,
lcgid,
- buffer_size, val_to_str_const(buffer_size, buffer_size_vals, "Unknown"));
+ buffer_size,
+ val_to_str_ext_const(buffer_size, p_vs_ext, "Unknown"));
}
proto_item_append_text(bsr_ti, " (lcgid=%u %s)",
lcgid,
- val_to_str_const(buffer_size, buffer_size_vals, "Unknown"));
+ val_to_str_ext_const(buffer_size, &buffer_size_vals_ext, "Unknown"));
}
break;
case LONG_BSR_LCID:
@@ -2995,6 +3399,23 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree
proto_item *bsr_ti;
proto_item *buffer_size_ti;
guint8 buffer_size[4];
+ int hfindex[4];
+ value_string_ext *p_vs_ext;
+
+ if (p_mac_lte_info->isExtendedBSRSizes) {
+ hfindex[0] = hf_mac_lte_control_long_ext_bsr_buffer_size_0;
+ hfindex[1] = hf_mac_lte_control_long_ext_bsr_buffer_size_1;
+ hfindex[2] = hf_mac_lte_control_long_ext_bsr_buffer_size_2;
+ hfindex[3] = hf_mac_lte_control_long_ext_bsr_buffer_size_3;
+ p_vs_ext = &ext_buffer_size_vals_ext;
+ } else {
+ hfindex[0] = hf_mac_lte_control_long_bsr_buffer_size_0;
+ hfindex[1] = hf_mac_lte_control_long_bsr_buffer_size_1;
+ hfindex[2] = hf_mac_lte_control_long_bsr_buffer_size_2;
+ hfindex[3] = hf_mac_lte_control_long_bsr_buffer_size_3;
+ p_vs_ext = &buffer_size_vals_ext;
+ }
+
bsr_ti = proto_tree_add_string_format(tree,
hf_mac_lte_control_bsr,
tvb, offset, 3,
@@ -3003,18 +3424,19 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree
bsr_tree = proto_item_add_subtree(bsr_ti, ett_mac_lte_bsr);
/* LCID Group 0 */
- buffer_size_ti = proto_tree_add_item(bsr_tree, hf_mac_lte_control_long_bsr_buffer_size_0,
+ buffer_size_ti = proto_tree_add_item(bsr_tree, hfindex[0],
tvb, offset, 1, ENC_BIG_ENDIAN);
buffer_size[0] = (tvb_get_guint8(tvb, offset) & 0xfc) >> 2;
if (buffer_size[0] >= global_mac_lte_bsr_warn_threshold) {
expert_add_info_format(pinfo, buffer_size_ti, PI_SEQUENCE, PI_WARN,
"UE %u - BSR for LCG 0 exceeds threshold: %u (%s)",
p_mac_lte_info->ueid,
- buffer_size[0], val_to_str_const(buffer_size[0], buffer_size_vals, "Unknown"));
+ buffer_size[0],
+ val_to_str_ext_const(buffer_size[0], p_vs_ext, "Unknown"));
}
/* LCID Group 1 */
- buffer_size_ti = proto_tree_add_item(bsr_tree, hf_mac_lte_control_long_bsr_buffer_size_1,
+ buffer_size_ti = proto_tree_add_item(bsr_tree, hfindex[1],
tvb, offset, 2, ENC_BIG_ENDIAN);
buffer_size[1] = ((tvb_get_guint8(tvb, offset) & 0x03) << 4) | ((tvb_get_guint8(tvb, offset+1) & 0xf0) >> 4);
offset++;
@@ -3022,11 +3444,12 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree
expert_add_info_format(pinfo, buffer_size_ti, PI_SEQUENCE, PI_WARN,
"UE %u - BSR for LCG 1 exceeds threshold: %u (%s)",
p_mac_lte_info->ueid,
- buffer_size[1], val_to_str_const(buffer_size[1], buffer_size_vals, "Unknown"));
+ buffer_size[1],
+ val_to_str_ext_const(buffer_size[1], p_vs_ext, "Unknown"));
}
/* LCID Group 2 */
- buffer_size_ti = proto_tree_add_item(bsr_tree, hf_mac_lte_control_long_bsr_buffer_size_2,
+ buffer_size_ti = proto_tree_add_item(bsr_tree, hfindex[2],
tvb, offset, 2, ENC_BIG_ENDIAN);
buffer_size[2] = ((tvb_get_guint8(tvb, offset) & 0x0f) << 2) | ((tvb_get_guint8(tvb, offset+1) & 0xc0) >> 6);
@@ -3035,11 +3458,12 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree
expert_add_info_format(pinfo, buffer_size_ti, PI_SEQUENCE, PI_WARN,
"UE %u - BSR for LCG 2 exceeds threshold: %u (%s)",
p_mac_lte_info->ueid,
- buffer_size[2], val_to_str_const(buffer_size[2], buffer_size_vals, "Unknown"));
+ buffer_size[2],
+ val_to_str_ext_const(buffer_size[2], p_vs_ext, "Unknown"));
}
/* LCID Group 3 */
- buffer_size_ti = proto_tree_add_item(bsr_tree, hf_mac_lte_control_long_bsr_buffer_size_3,
+ buffer_size_ti = proto_tree_add_item(bsr_tree, hfindex[3],
tvb, offset, 1, ENC_BIG_ENDIAN);
buffer_size[3] = tvb_get_guint8(tvb, offset) & 0x3f;
offset++;
@@ -3047,15 +3471,16 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree
expert_add_info_format(pinfo, buffer_size_ti, PI_SEQUENCE, PI_WARN,
"UE %u - BSR for LCG 3 exceeds threshold: %u (%s)",
p_mac_lte_info->ueid,
- buffer_size[3], val_to_str_const(buffer_size[3], buffer_size_vals, "Unknown"));
+ buffer_size[3],
+ val_to_str_ext_const(buffer_size[3], p_vs_ext, "Unknown"));
}
/* Append summary to parent */
proto_item_append_text(bsr_ti, " 0:(%s) 1:(%s) 2:(%s) 3:(%s)",
- val_to_str_const(buffer_size[0], buffer_size_vals, "Unknown"),
- val_to_str_const(buffer_size[1], buffer_size_vals, "Unknown"),
- val_to_str_const(buffer_size[2], buffer_size_vals, "Unknown"),
- val_to_str_const(buffer_size[3], buffer_size_vals, "Unknown"));
+ val_to_str_ext_const(buffer_size[0], p_vs_ext, "Unknown"),
+ val_to_str_ext_const(buffer_size[1], p_vs_ext, "Unknown"),
+ val_to_str_ext_const(buffer_size[2], p_vs_ext, "Unknown"),
+ val_to_str_ext_const(buffer_size[3], p_vs_ext, "Unknown"));
}
break;
case PADDING_LCID:
@@ -3285,8 +3710,8 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree
static void dissect_mch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *pdu_ti,
volatile guint32 offset, mac_lte_info *p_mac_lte_info)
{
- guint8 extension;
- volatile guint16 n;
+ guint8 extension;
+ volatile guint16 n;
proto_item *truncated_ti;
proto_item *padding_length_ti;
proto_item *hidden_root_ti;
@@ -3440,7 +3865,7 @@ static void dissect_mch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, pro
tvb, offset*8 + 1, 7, &length, ENC_BIG_ENDIAN);
offset++;
}
- if ((lcids[number_of_headers] == MCH_SCHEDULING_INFO_LCID) && (length & 0x01)) {
+ if ((lcids[number_of_headers] == MCH_SCHEDULING_INFO_LCID) && (length & 0x01)) {
expert_add_info_format(pinfo, lcid_ti, PI_MALFORMED, PI_WARN,
"MCH Scheduling Information MAC Control Element should have an even size");
}
@@ -3682,15 +4107,15 @@ static void dissect_mch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, pro
/* Main dissection function. */
void dissect_mac_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *mac_lte_tree;
- proto_item *pdu_ti;
- proto_tree *context_tree;
- proto_item *context_ti;
- proto_item *retx_ti = NULL;
- proto_item *ti;
- gint offset = 0;
- struct mac_lte_info *p_mac_lte_info = NULL;
- gint n;
+ proto_tree *mac_lte_tree;
+ proto_item *pdu_ti;
+ proto_tree *context_tree;
+ proto_item *context_ti;
+ proto_item *retx_ti = NULL;
+ proto_item *ti;
+ gint offset = 0;
+ struct mac_lte_info *p_mac_lte_info = NULL;
+ gint n;
/* Allocate and zero tap struct */
mac_lte_tap_info *tap_info = ep_alloc0(sizeof(mac_lte_tap_info));
@@ -3777,6 +4202,12 @@ void dissect_mac_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
p_mac_lte_info->rach_attempt_number);
break;
case ltemac_send_sr:
+ /* Count of SRs */
+ ti = proto_tree_add_uint(mac_lte_tree, hf_mac_lte_number_of_srs,
+ tvb, 0, 0, p_mac_lte_info->number_of_srs);
+ PROTO_ITEM_SET_GENERATED(ti);
+
+
for (n=0; n < p_mac_lte_info->number_of_srs; n++) {
proto_item *sr_ti;
proto_tree *sr_tree;
@@ -4113,8 +4544,7 @@ void dissect_mac_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Initializes the hash tables each time a new
* file is loaded or re-loaded in wireshark */
-static void
-mac_lte_init_protocol(void)
+static void mac_lte_init_protocol(void)
{
/* Destroy any existing tables. */
if (mac_lte_msg3_hash) {
@@ -4172,7 +4602,7 @@ mac_lte_init_protocol(void)
static void* lcid_drb_mapping_copy_cb(void* dest, const void* orig, size_t len _U_)
{
const lcid_drb_mapping_t *o = orig;
- lcid_drb_mapping_t *d = dest;
+ lcid_drb_mapping_t *d = dest;
/* Copy all items over */
d->lcid = o->lcid;
@@ -4395,7 +4825,7 @@ void proto_register_mac_lte(void)
},
{ &hf_mac_lte_context_phy_dl_retx,
{ "DL Retx",
- "mac-lte.dl-phy.dl-retx", FT_BOOLEAN, BASE_DEC, NULL, 0x0,
+ "mac-lte.dl-phy.dl-retx", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
NULL, HFILL
}
},
@@ -4443,6 +4873,12 @@ void proto_register_mac_lte(void)
NULL, HFILL
}
},
+ { &hf_mac_lte_number_of_srs,
+ { "Number of SRs",
+ "mac-lte.sr-req.count", FT_UINT32, BASE_DEC, 0, 0x0,
+ "Number of UEs doing SR in this frame", HFILL
+ }
+ },
{ &hf_mac_lte_oob_sr_failure,
{ "Scheduling Request failure",
"mac-lte.sr-failure", FT_NONE, BASE_NONE, NULL, 0x0,
@@ -4766,31 +5202,61 @@ void proto_register_mac_lte(void)
},
{ &hf_mac_lte_control_short_bsr_buffer_size,
{ "Buffer Size",
- "mac-lte.control.bsr.buffer-size", FT_UINT8, BASE_DEC, VALS(buffer_size_vals), 0x3f,
+ "mac-lte.control.bsr.buffer-size", FT_UINT8, BASE_DEC|BASE_EXT_STRING, &buffer_size_vals_ext, 0x3f,
"Buffer Size available in all channels in group", HFILL
}
},
{ &hf_mac_lte_control_long_bsr_buffer_size_0,
{ "Buffer Size 0",
- "mac-lte.control.bsr.buffer-size-0", FT_UINT8, BASE_DEC, VALS(buffer_size_vals), 0xfc,
+ "mac-lte.control.bsr.buffer-size-0", FT_UINT8, BASE_DEC|BASE_EXT_STRING, &buffer_size_vals_ext, 0xfc,
"Buffer Size available in logical channel group 0", HFILL
}
},
{ &hf_mac_lte_control_long_bsr_buffer_size_1,
{ "Buffer Size 1",
- "mac-lte.control.bsr.buffer-size-1", FT_UINT16, BASE_DEC, VALS(buffer_size_vals), 0x03f0,
+ "mac-lte.control.bsr.buffer-size-1", FT_UINT16, BASE_DEC|BASE_EXT_STRING, &buffer_size_vals_ext, 0x03f0,
"Buffer Size available in logical channel group 1", HFILL
}
},
{ &hf_mac_lte_control_long_bsr_buffer_size_2,
{ "Buffer Size 2",
- "mac-lte.control.bsr.buffer-size-2", FT_UINT16, BASE_DEC, VALS(buffer_size_vals), 0x0fc0,
+ "mac-lte.control.bsr.buffer-size-2", FT_UINT16, BASE_DEC|BASE_EXT_STRING, &buffer_size_vals_ext, 0x0fc0,
"Buffer Size available in logical channel group 2", HFILL
}
},
{ &hf_mac_lte_control_long_bsr_buffer_size_3,
{ "Buffer Size 3",
- "mac-lte.control.bsr.buffer-size-3", FT_UINT8, BASE_DEC, VALS(buffer_size_vals), 0x3f,
+ "mac-lte.control.bsr.buffer-size-3", FT_UINT8, BASE_DEC|BASE_EXT_STRING, &buffer_size_vals_ext, 0x3f,
+ "Buffer Size available in logical channel group 3", HFILL
+ }
+ },
+ { &hf_mac_lte_control_short_ext_bsr_buffer_size,
+ { "Buffer Size",
+ "mac-lte.control.bsr.buffer-size", FT_UINT8, BASE_DEC|BASE_EXT_STRING, &ext_buffer_size_vals_ext, 0x3f,
+ "Buffer Size available in all channels in group", HFILL
+ }
+ },
+ { &hf_mac_lte_control_long_ext_bsr_buffer_size_0,
+ { "Buffer Size 0",
+ "mac-lte.control.bsr.buffer-size-0", FT_UINT8, BASE_DEC|BASE_EXT_STRING, &ext_buffer_size_vals_ext, 0xfc,
+ "Buffer Size available in logical channel group 0", HFILL
+ }
+ },
+ { &hf_mac_lte_control_long_ext_bsr_buffer_size_1,
+ { "Buffer Size 1",
+ "mac-lte.control.bsr.buffer-size-1", FT_UINT16, BASE_DEC|BASE_EXT_STRING, &ext_buffer_size_vals_ext, 0x03f0,
+ "Buffer Size available in logical channel group 1", HFILL
+ }
+ },
+ { &hf_mac_lte_control_long_ext_bsr_buffer_size_2,
+ { "Buffer Size 2",
+ "mac-lte.control.bsr.buffer-size-2", FT_UINT16, BASE_DEC|BASE_EXT_STRING, &ext_buffer_size_vals_ext, 0x0fc0,
+ "Buffer Size available in logical channel group 2", HFILL
+ }
+ },
+ { &hf_mac_lte_control_long_ext_bsr_buffer_size_3,
+ { "Buffer Size 3",
+ "mac-lte.control.bsr.buffer-size-3", FT_UINT8, BASE_DEC|BASE_EXT_STRING, &ext_buffer_size_vals_ext, 0x3f,
"Buffer Size available in logical channel group 3", HFILL
}
},
@@ -4857,15 +5323,148 @@ void proto_register_mac_lte(void)
},
{ &hf_mac_lte_control_power_headroom_level,
{ "Power Headroom Level",
- "mac-lte.control.power-headroom.level", FT_UINT8, BASE_DEC,
- VALS(power_headroom_size_vals), 0x3f, "Power Headroom Level in dB", HFILL
+ "mac-lte.control.power-headroom.level", FT_UINT8, BASE_DEC|BASE_EXT_STRING,
+ &power_headroom_vals_ext, 0x3f, "Power Headroom Level in dB", HFILL
}
},
- { &hf_mac_lte_control_padding,
- { "Padding",
- "mac-lte.control.padding", FT_NONE, BASE_NONE, 0, 0x0,
- NULL, HFILL
+ { &hf_mac_lte_control_ext_power_headroom,
+ { "Extended Power Headroom",
+ "mac-lte.control.ext-power-headroom", FT_STRING, BASE_NONE,
+ 0, 0x0, NULL, HFILL
+ }
+ },
+ { &hf_mac_lte_control_ext_power_headroom_c7,
+ { "SCell Index 7 Power Headroom",
+ "mac-lte.control.ext-power-headroom.c7", FT_BOOLEAN, 8,
+ TFS(&mac_lte_scell_ph_vals), 0x80, NULL, HFILL
+ }
+ },
+ { &hf_mac_lte_control_ext_power_headroom_c6,
+ { "SCell Index 6 Power Headroom",
+ "mac-lte.control.ext-power-headroom.c6", FT_BOOLEAN, 8,
+ TFS(&mac_lte_scell_ph_vals), 0x40, NULL, HFILL
+ }
+ },
+ { &hf_mac_lte_control_ext_power_headroom_c5,
+ { "SCell Index 5 Power Headroom",
+ "mac-lte.control.ext-power-headroom.c5", FT_BOOLEAN, 8,
+ TFS(&mac_lte_scell_ph_vals), 0x20, NULL, HFILL
+ }
+ },
+ { &hf_mac_lte_control_ext_power_headroom_c4,
+ { "SCell Index 4 Power Headroom",
+ "mac-lte.control.ext-power-headroom.c4", FT_BOOLEAN, 8,
+ TFS(&mac_lte_scell_ph_vals), 0x10, NULL, HFILL
+ }
+ },
+ { &hf_mac_lte_control_ext_power_headroom_c3,
+ { "SCell Index 3 Power Headroom",
+ "mac-lte.control.ext-power-headroom.c3", FT_BOOLEAN, 8,
+ TFS(&mac_lte_scell_ph_vals), 0x08, NULL, HFILL
+ }
+ },
+ { &hf_mac_lte_control_ext_power_headroom_c2,
+ { "SCell Index 2 Power Headroom",
+ "mac-lte.control.ext-power-headroom.c2", FT_BOOLEAN, 8,
+ TFS(&mac_lte_scell_ph_vals), 0x04, NULL, HFILL
+ }
+ },
+ { &hf_mac_lte_control_ext_power_headroom_c1,
+ { "SCell Index 1 Power Headroom",
+ "mac-lte.control.ext-power-headroom.c1", FT_BOOLEAN, 8,
+ TFS(&mac_lte_scell_ph_vals), 0x02, NULL, HFILL
+ }
+ },
+ { &hf_mac_lte_control_ext_power_headroom_reserved,
+ { "Reserved",
+ "mac-lte.control.ext-power-headroom.reserved", FT_UINT8, BASE_DEC,
+ 0, 0x01, "Reserved bit, should be 0", HFILL
+ }
+ },
+ { &hf_mac_lte_control_ext_power_headroom_power_backoff,
+ { "Power Backoff",
+ "mac-lte.control.ext-power-headroom.power-backoff", FT_BOOLEAN, 8,
+ TFS(&mac_lte_power_backoff_vals), 0x80, NULL, HFILL
+ }
+ },
+ { &hf_mac_lte_control_ext_power_headroom_value,
+ { "Power Headroom Value",
+ "mac-lte.control.ext-power-headroom.power-headroom-value", FT_BOOLEAN, 8,
+ TFS(&mac_lte_ph_value_vals), 0x40, NULL, HFILL
+ }
+ },
+ { &hf_mac_lte_control_ext_power_headroom_level,
+ { "Power Headroom Level",
+ "mac-lte.control.ext-power-headroom.level", FT_UINT8, BASE_DEC|BASE_EXT_STRING,
+ &power_headroom_vals_ext, 0x3f, "Power Headroom Level in dB", HFILL
+ }
+ },
+ { &hf_mac_lte_control_ext_power_headroom_reserved2,
+ { "Reserved",
+ "mac-lte.control.ext-power-headroom.reserved2", FT_UINT8, BASE_DEC,
+ 0, 0xc0, "Reserved bits, should be 0", HFILL
+ }
+ },
+ { &hf_mac_lte_control_ext_power_headroom_pcmaxc,
+ { "Configured UE Transmit Power",
+ "mac-lte.control.ext-power-headroom.pcmaxc", FT_UINT8, BASE_DEC|BASE_EXT_STRING,
+ &pcmaxc_vals_ext, 0x3f, "Pcmax,c in dBm", HFILL
+ }
+ },
+
+ { &hf_mac_lte_control_activation_deactivation,
+ { "Activation/Deactivation",
+ "mac-lte.control.activation-deactivation", FT_STRING, BASE_NONE,
+ 0, 0x0, NULL, HFILL
+ }
+ },
+ { &hf_mac_lte_control_activation_deactivation_c7,
+ { "SCell Index 7 Status",
+ "mac-lte.control.activation-deactivation.c7", FT_BOOLEAN, 8,
+ TFS(&mac_lte_scell_status_vals), 0x80, NULL, HFILL
+ }
+ },
+ { &hf_mac_lte_control_activation_deactivation_c6,
+ { "SCell Index 6 Status",
+ "mac-lte.control.activation-deactivation.c6", FT_BOOLEAN, 8,
+ TFS(&mac_lte_scell_status_vals), 0x40, NULL, HFILL
+ }
+ },
+ { &hf_mac_lte_control_activation_deactivation_c5,
+ { "SCell Index 5 Status",
+ "mac-lte.control.activation-deactivation.c5", FT_BOOLEAN, 8,
+ TFS(&mac_lte_scell_status_vals), 0x20, NULL, HFILL
+ }
+ },
+ { &hf_mac_lte_control_activation_deactivation_c4,
+ { "SCell Index 4 Status",
+ "mac-lte.control.activation-deactivation.c4", FT_BOOLEAN, 8,
+ TFS(&mac_lte_scell_status_vals), 0x10, NULL, HFILL
+ }
+ },
+ { &hf_mac_lte_control_activation_deactivation_c3,
+ { "SCell Index 3 Status",
+ "mac-lte.control.activation-deactivation.c3", FT_BOOLEAN, 8,
+ TFS(&mac_lte_scell_status_vals), 0x08, NULL, HFILL
+ }
+ },
+ { &hf_mac_lte_control_activation_deactivation_c2,
+ { "SCell Index 2 Status",
+ "mac-lte.control.activation-deactivation.c2", FT_BOOLEAN, 8,
+ TFS(&mac_lte_scell_status_vals), 0x04, NULL, HFILL
+ }
+ },
+ { &hf_mac_lte_control_activation_deactivation_c1,
+ { "SCell Index 1 Status",
+ "mac-lte.control.activation-deactivation.c1", FT_BOOLEAN, 8,
+ TFS(&mac_lte_scell_status_vals), 0x02, NULL, HFILL
+ }
+ },
+ { &hf_mac_lte_control_activation_deactivation_reserved,
+ { "Reserved",
+ "mac-lte.control.activation-deactivation.reserved", FT_UINT8, BASE_DEC,
+ 0, 0x01, "Reserved bit, should be 0", HFILL
}
},
@@ -5001,8 +5600,11 @@ void proto_register_mac_lte(void)
&ett_mac_lte_bch,
&ett_mac_lte_bsr,
&ett_mac_lte_pch,
+ &ett_mac_lte_activation_deactivation,
&ett_mac_lte_contention_resolution,
&ett_mac_lte_power_headroom,
+ &ett_mac_lte_extended_power_headroom,
+ &ett_mac_lte_extended_power_headroom_cell,
&ett_mac_lte_mch_scheduling_info,
&ett_mac_lte_oob
};
@@ -5193,8 +5795,7 @@ void set_mac_lte_proto_data(packet_info *pinfo, mac_lte_info *p_mac_lte_info)
p_add_proto_data(pinfo->fd, proto_mac_lte, p_mac_lte_info);
}
-void
-proto_reg_handoff_mac_lte(void)
+void proto_reg_handoff_mac_lte(void)
{
static dissector_handle_t mac_lte_handle;
if (!mac_lte_handle) {
diff --git a/epan/dissectors/packet-mac-lte.h b/epan/dissectors/packet-mac-lte.h
index a1cce9ac71..f3ea3671e4 100644
--- a/epan/dissectors/packet-mac-lte.h
+++ b/epan/dissectors/packet-mac-lte.h
@@ -117,6 +117,9 @@ typedef struct mac_lte_info
guint8 reTxCount;
guint8 isPHICHNACK; /* FALSE=PDCCH retx grant, TRUE=PHICH NACK */
+ /* UL only. Indicates if the R10 extendedBSR-Sizes parameter is set */
+ gboolean isExtendedBSRSizes;
+
/* DL only. Status of CRC check */
mac_lte_crc_status crcStatusValid;
@@ -236,7 +239,7 @@ int is_mac_lte_frame_retx(packet_info *pinfo, guint8 direction);
#define MAC_LTE_SUBFRAME_TAG 0x04
/* 2 bytes, network order */
-#define MAC_LTE_PREDFINED_DATA_TAG 0x05
+#define MAC_LTE_PREDEFINED_DATA_TAG 0x05
/* 1 byte */
#define MAC_LTE_RETX_TAG 0x06
@@ -245,6 +248,8 @@ int is_mac_lte_frame_retx(packet_info *pinfo, guint8 direction);
#define MAC_LTE_CRC_STATUS_TAG 0x07
/* 1 byte */
+#define MAC_LTE_EXT_BSR_SIZES_TAG 0x08
+/* 0 byte */
/* MAC PDU. Following this tag comes the actual MAC PDU (there is no length, the PDU
continues until the end of the frame) */
diff --git a/epan/dissectors/packet-mactelnet.c b/epan/dissectors/packet-mactelnet.c
index c048919a07..5c13ead97c 100644
--- a/epan/dissectors/packet-mactelnet.c
+++ b/epan/dissectors/packet-mactelnet.c
@@ -33,11 +33,9 @@
#endif
#include <glib.h>
-#include <string.h>
#include <epan/packet.h>
#include <epan/prefs.h>
-#include <epan/addr_resolv.h>
#define PROTO_TAG_MACTELNET "MAC-Telnet"
@@ -77,307 +75,343 @@ static dissector_handle_t data_handle;
/* Packet types */
static const value_string packettypenames[] = {
- { 0, "Start session" },
- { 1, "Data" },
- { 2, "Acknowledge" },
- { 4, "Ping request" },
- { 5, "Ping response" },
- { 255, "End session" },
- { 0, NULL }
+ { 0, "Start session" },
+ { 1, "Data" },
+ { 2, "Acknowledge" },
+ { 4, "Ping request" },
+ { 5, "Ping response" },
+ { 255, "End session" },
+ { 0, NULL }
};
/* Known client types */
static const value_string clienttypenames[] = {
- { 0x0015, "MAC Telnet" },
- { 0x0f90, "Winbox" },
- { 0, NULL }
+ { 0x0015, "MAC Telnet" },
+ { 0x0f90, "Winbox" },
+ { 0, NULL }
};
/* Known control-packet types */
static const value_string controlpackettypenames[] = {
- { 0, "Begin authentication" },
- { 1, "Encryption key" },
- { 2, "Password" },
- { 3, "Username" },
- { 4, "Terminal type" },
- { 5, "Terminal width" },
- { 6, "Terminal height" },
- { 9, "End authentication" },
- { 0, NULL }
+ { 0, "Begin authentication" },
+ { 1, "Encryption key" },
+ { 2, "Password" },
+ { 3, "Username" },
+ { 4, "Terminal type" },
+ { 5, "Terminal width" },
+ { 6, "Terminal height" },
+ { 9, "End authentication" },
+ { 0, NULL }
};
static int
dissect_mactelnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *mactelnet_item;
- proto_tree *mactelnet_tree;
- proto_item *mactelnet_control_item;
- proto_tree *mactelnet_control_tree;
- int foundping = -1;
- int foundclient = -1;
- int foundserver = -1;
- guint16 type;
-
- /* Check that there's enough data */
- if (tvb_length(tvb) < 18)
- return 0;
-
- /* Make entries in Protocol column and Info column on summary display */
- col_set_str(pinfo->cinfo, COL_PROTOCOL, PROTO_TAG_MACTELNET);
-
- /* Get the type byte */
- type = tvb_get_guint8(tvb, 1);
-
- if ((type == 4 || type == 5)) { /* Ping */
- foundping = 1;
- } else {
- int i = 0;
- while (clienttypenames[i].strptr != NULL) {
- if (tvb_get_ntohs(tvb, 14) == clienttypenames[i].value) {
- foundserver = i;
- break;
- }
- if (tvb_get_ntohs(tvb, 16) == clienttypenames[i].value) {
- foundclient = i;
- break;
- }
- i++;
- }
- }
-
- /* Not a mactelnet packet */
- if (foundping < 0 && foundclient < 0 && foundserver < 0) {
- return 0;
- }
-
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s > %s Direction: %s Type: %s",
- tvb_ether_to_str(tvb, 2),
- tvb_ether_to_str(tvb, 8),
- (foundclient >= 0 || type == 4 ? "Client->Server" : "Server->Client" ),
- val_to_str(type, packettypenames, "Unknown Type:0x%02x")
- );
-
- if (tree) {
- guint32 offset = 0;
-
- /* create display subtree for the protocol */
- mactelnet_item = proto_tree_add_item(tree, proto_mactelnet, tvb, 0, -1, ENC_NA);
- mactelnet_tree = proto_item_add_subtree(mactelnet_item, ett_mactelnet);
-
- /* ver(1) */
- proto_tree_add_item(mactelnet_tree, hf_mactelnet_protocolver, tvb, offset, 1, ENC_NA);
- offset++;
-
- /* ptype(1) */
- proto_tree_add_item(mactelnet_tree, hf_mactelnet_type, tvb, offset, 1, ENC_NA);
- offset++;
-
- /* saddr(6) */
- proto_tree_add_item(mactelnet_tree, hf_mactelnet_source_mac, tvb, offset, 6, ENC_NA);
- offset += 6;
-
- /* dstaddr(6) */
- proto_tree_add_item(mactelnet_tree, hf_mactelnet_destination_mac, tvb, offset, 6, ENC_NA);
- offset += 6;
-
- if (foundserver >= 0) {
- /* Server to client */
-
- /* sessionid(2) */
- proto_tree_add_item(mactelnet_tree, hf_mactelnet_session_id, tvb, offset+2, 2, ENC_BIG_ENDIAN);
- offset += 2;
-
- /* clienttype(2) */
- proto_tree_add_item(mactelnet_tree, hf_mactelnet_client_type, tvb, offset-2, 2, ENC_BIG_ENDIAN);
- offset += 2;
- } else if (foundclient >= 0) {
- /* Client to server */
-
- /* sessionid(2) */
- proto_tree_add_item(mactelnet_tree, hf_mactelnet_session_id, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
-
- /* clienttype(2) */
- proto_tree_add_item(mactelnet_tree, hf_mactelnet_client_type, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
- } else if (foundping >= 0) {
- /* Skip empty data */
- offset += 4;
- }
-
- if (foundping < 0) {
- /* counter(4) */
- proto_tree_add_item(mactelnet_tree, hf_mactelnet_databytes, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
- }
-
- /* Data packets only */
- if (type == 1) {
- while(tvb_reported_length_remaining(tvb, offset) > 0) {
- if (tvb_reported_length_remaining(tvb, offset) > 4 && tvb_get_ntohl(tvb, offset) == control_packet) {
- guint8 datatype;
- guint32 datalength;
-
- /* Add subtree for control packet */
- mactelnet_control_item = proto_tree_add_item(mactelnet_tree, hf_mactelnet_control, tvb, offset, -1, ENC_NA);
- mactelnet_control_tree = proto_item_add_subtree(mactelnet_control_item, ett_mactelnet);
- /* Control packet magic number (4) */
- proto_tree_add_item(mactelnet_control_tree, hf_mactelnet_control_packet, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
-
- /* Control packet type (1) */
- datatype = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(mactelnet_control_tree, hf_mactelnet_datatype, tvb, offset, 1, ENC_NA);
- offset++;
-
- /* Control packet length (4) */
- datalength = tvb_get_ntohl(tvb, offset);
- proto_tree_add_item(mactelnet_control_tree, hf_mactelnet_control_length, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
-
- switch (datatype) {
- case 1: /* Encryption Key */
- proto_tree_add_item(mactelnet_control_tree, hf_mactelnet_control_encryption_key, tvb, offset, datalength, ENC_NA);
- break;
-
- case 2: /* Password */
- proto_tree_add_item(mactelnet_control_tree, hf_mactelnet_control_password, tvb, offset, datalength, ENC_NA);
- break;
-
- case 3: /* Username */
- proto_tree_add_item(mactelnet_control_tree, hf_mactelnet_control_username, tvb, offset, datalength, ENC_ASCII|ENC_NA);
- break;
-
- case 4: /* Terminal type */
- proto_tree_add_item(mactelnet_control_tree, hf_mactelnet_control_terminal, tvb, offset, datalength, ENC_ASCII|ENC_NA);
- break;
-
- case 5: /* Terminal width */
- proto_tree_add_item(mactelnet_control_tree, hf_mactelnet_control_width, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- break;
-
- case 6: /* Terminal height */
- proto_tree_add_item(mactelnet_control_tree, hf_mactelnet_control_height, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- break;
-
- case 9: /* End authentication (no data) */
- break;
- }
- proto_item_set_len (mactelnet_control_item, datalength + 9);
- offset += datalength;
- } else {
- /* Data packet, let wireshark handle it */
- tvbuff_t *next_client = tvb_new_subset_remaining(tvb, offset);
- return call_dissector(data_handle, next_client, pinfo, mactelnet_tree);
- }
- }
- } else if (type == 4 || type == 5) {
- /* Data packet, let wireshark handle it */
- tvbuff_t *next_client = tvb_new_subset_remaining(tvb, offset);
- return call_dissector(data_handle, next_client, pinfo, mactelnet_tree);
- }
-
-
- }
- return tvb_reported_length(tvb);
+ proto_item *mactelnet_item;
+ proto_tree *mactelnet_tree;
+ proto_item *mactelnet_control_item;
+ proto_tree *mactelnet_control_tree;
+ int foundping = -1;
+ int foundclient = -1;
+ int foundserver = -1;
+ guint16 type;
+
+ /* Check that there's enough data */
+ if (tvb_length(tvb) < 18)
+ return 0;
+
+ /* Get the type byte */
+ type = tvb_get_guint8(tvb, 1);
+
+ if ((type == 4) || (type == 5)) { /* Ping */
+ foundping = 1;
+ } else {
+ int i = 0;
+ while (clienttypenames[i].strptr != NULL) {
+ if (tvb_get_ntohs(tvb, 14) == clienttypenames[i].value) {
+ foundserver = i;
+ break;
+ }
+ if (tvb_get_ntohs(tvb, 16) == clienttypenames[i].value) {
+ foundclient = i;
+ break;
+ }
+ i++;
+ }
+ }
+
+ /* Not a mactelnet packet */
+ if ((foundping < 0) && (foundclient < 0) && (foundserver < 0)) {
+ return 0;
+ }
+
+ /* Make entries in Protocol column and Info column on summary display */
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, PROTO_TAG_MACTELNET);
+
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s > %s Direction: %s Type: %s",
+ tvb_ether_to_str(tvb, 2),
+ tvb_ether_to_str(tvb, 8),
+ ((foundclient >= 0) || (type == 4) ? "Client->Server" : "Server->Client" ),
+ val_to_str(type, packettypenames, "Unknown Type:0x%02x")
+ );
+ }
+
+ if (tree) {
+ guint32 offset = 0;
+
+ /* create display subtree for the protocol */
+ mactelnet_item = proto_tree_add_item(tree, proto_mactelnet, tvb, 0, -1, ENC_NA);
+ mactelnet_tree = proto_item_add_subtree(mactelnet_item, ett_mactelnet);
+
+ /* ver(1) */
+ proto_tree_add_item(mactelnet_tree, hf_mactelnet_protocolver, tvb, offset, 1, ENC_NA);
+ offset += 1;
+
+ /* ptype(1) */
+ proto_tree_add_item(mactelnet_tree, hf_mactelnet_type, tvb, offset, 1, ENC_NA);
+ offset += 1;
+
+ /* saddr(6) */
+ proto_tree_add_item(mactelnet_tree, hf_mactelnet_source_mac, tvb, offset, 6, ENC_NA);
+ offset += 6;
+
+ /* dstaddr(6) */
+ proto_tree_add_item(mactelnet_tree, hf_mactelnet_destination_mac, tvb, offset, 6, ENC_NA);
+ offset += 6;
+
+ if (foundserver >= 0) {
+ /* Server to client */
+
+ /* sessionid(2) */
+ proto_tree_add_item(mactelnet_tree, hf_mactelnet_session_id, tvb, offset+2, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ /* clienttype(2) */
+ proto_tree_add_item(mactelnet_tree, hf_mactelnet_client_type, tvb, offset-2, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ } else if (foundclient >= 0) {
+ /* Client to server */
+
+ /* sessionid(2) */
+ proto_tree_add_item(mactelnet_tree, hf_mactelnet_session_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ /* clienttype(2) */
+ proto_tree_add_item(mactelnet_tree, hf_mactelnet_client_type, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ } else if (foundping >= 0) {
+ /* Skip empty data */
+ offset += 4;
+ }
+
+ if (foundping < 0) {
+ /* counter(4) */
+ proto_tree_add_item(mactelnet_tree, hf_mactelnet_databytes, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ }
+
+ /* Data packets only */
+ if (type == 1) {
+ while(tvb_reported_length_remaining(tvb, offset) > 0) {
+ if ((tvb_reported_length_remaining(tvb, offset) > 4) && (tvb_get_ntohl(tvb, offset) == control_packet)) {
+ guint8 datatype;
+ guint32 datalength;
+
+ /* Add subtree for control packet */
+ mactelnet_control_item = proto_tree_add_item(mactelnet_tree, hf_mactelnet_control, tvb, offset, -1, ENC_NA);
+ mactelnet_control_tree = proto_item_add_subtree(mactelnet_control_item, ett_mactelnet);
+ /* Control packet magic number (4) */
+ proto_tree_add_item(mactelnet_control_tree, hf_mactelnet_control_packet, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ /* Control packet type (1) */
+ datatype = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(mactelnet_control_tree, hf_mactelnet_datatype, tvb, offset, 1, ENC_NA);
+ offset += 1;
+
+ /* Control packet length (4) */
+ datalength = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_item(mactelnet_control_tree, hf_mactelnet_control_length, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ switch (datatype) {
+ case 1: /* Encryption Key */
+ proto_tree_add_item(mactelnet_control_tree, hf_mactelnet_control_encryption_key, tvb, offset, datalength, ENC_NA);
+ break;
+
+ case 2: /* Password */
+ proto_tree_add_item(mactelnet_control_tree, hf_mactelnet_control_password, tvb, offset, datalength, ENC_NA);
+ break;
+
+ case 3: /* Username */
+ proto_tree_add_item(mactelnet_control_tree, hf_mactelnet_control_username, tvb, offset, datalength, ENC_ASCII|ENC_NA);
+ break;
+
+ case 4: /* Terminal type */
+ proto_tree_add_item(mactelnet_control_tree, hf_mactelnet_control_terminal, tvb, offset, datalength, ENC_ASCII|ENC_NA);
+ break;
+
+ case 5: /* Terminal width */
+ proto_tree_add_item(mactelnet_control_tree, hf_mactelnet_control_width, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ break;
+
+ case 6: /* Terminal height */
+ proto_tree_add_item(mactelnet_control_tree, hf_mactelnet_control_height, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ break;
+
+ case 9: /* End authentication (no data) */
+ break;
+ }
+ proto_item_set_len (mactelnet_control_item, datalength + 9);
+ offset += datalength;
+ } else {
+ /* Data packet, let wireshark handle it */
+ tvbuff_t *next_client = tvb_new_subset_remaining(tvb, offset);
+ return call_dissector(data_handle, next_client, pinfo, mactelnet_tree);
+ }
+ }
+ } else if ((type == 4) || (type == 5)) {
+ /* Data packet, let wireshark handle it */
+ tvbuff_t *next_client = tvb_new_subset_remaining(tvb, offset);
+ return call_dissector(data_handle, next_client, pinfo, mactelnet_tree);
+ }
+
+
+ }
+ return tvb_reported_length(tvb);
}
void
proto_register_mactelnet(void)
{
- static hf_register_info hf[] = {
- { &hf_mactelnet_control_packet,
- { "Control Packet Magic Number", "mactelnet.control_packet", FT_UINT32, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
- { &hf_mactelnet_type,
- { "Type", "mactelnet.type", FT_UINT8, BASE_DEC, VALS(packettypenames), 0x0,
- "Packet Type", HFILL }},
- { &hf_mactelnet_protocolver,
- { "Protocol Version", "mactelnet.protocol_version", FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
- { &hf_mactelnet_source_mac,
- { "Source MAC", "mactelnet.source_mac", FT_ETHER, BASE_NONE, NULL , 0x0,
- NULL, HFILL }},
- { &hf_mactelnet_destination_mac,
- { "Destination MAC", "mactelnet.destination_mac", FT_ETHER, BASE_NONE, NULL , 0x0,
- NULL, HFILL }},
- { &hf_mactelnet_session_id,
- { "Session ID", "mactelnet.session_id", FT_UINT16, BASE_HEX, NULL , 0x0,
- "Session ID for this connection", HFILL }},
- { &hf_mactelnet_client_type,
- { "Client Type", "mactelnet.client_type", FT_UINT16, BASE_HEX, VALS(clienttypenames) , 0x0,
- NULL, HFILL }},
- { &hf_mactelnet_databytes,
- { "Session Data Bytes", "mactelnet.session_bytes", FT_UINT32, BASE_DEC, NULL , 0x0,
- "Session data bytes received", HFILL }},
- { &hf_mactelnet_datatype,
- { "Data Packet Type", "mactelnet.data_type", FT_UINT8, BASE_HEX, VALS(controlpackettypenames) , 0x0,
- NULL, HFILL }},
- { &hf_mactelnet_control,
- { "Control Packet", "mactelnet.control", FT_NONE, BASE_NONE, NULL , 0x0,
- NULL, HFILL }},
- { &hf_mactelnet_control_length,
- { "Control Data Length", "mactelnet.control_length", FT_UINT32, BASE_DEC, NULL , 0x0,
- "Control packet length", HFILL }},
- { &hf_mactelnet_control_encryption_key,
- { "Encryption Key", "mactelnet.control_encryptionkey", FT_BYTES, BASE_NONE, NULL , 0x0,
- "Login encryption key", HFILL }},
- { &hf_mactelnet_control_password,
- { "Password MD5", "mactelnet.control_password", FT_BYTES, BASE_NONE, NULL , 0x0,
- "Null padded MD5 password", HFILL }},
- { &hf_mactelnet_control_username,
- { "Username", "mactelnet.control_username", FT_STRING, BASE_NONE, NULL , 0x0,
- NULL, HFILL }},
- { &hf_mactelnet_control_terminal,
- { "Terminal Type", "mactelnet.control_terminaltype", FT_STRING, BASE_NONE, NULL , 0x0,
- NULL, HFILL }},
- { &hf_mactelnet_control_width,
- { "Terminal Width", "mactelnet.control_width", FT_UINT16, BASE_DEC, NULL , 0x0,
- NULL, HFILL }},
- { &hf_mactelnet_control_height,
- { "Terminal Height", "mactelnet.control_height", FT_UINT16, BASE_DEC, NULL , 0x0,
- NULL, HFILL }}
- };
-
- /* Setup protocol subtree array */
- static gint *ett[] = {
- &ett_mactelnet,
- &ett_mactelnet_control,
- };
-
- module_t *mactelnet_module;
-
- /* Register the protocol name and description */
- proto_mactelnet = proto_register_protocol ("MikroTik MAC-Telnet Protocol", PROTO_TAG_MACTELNET, "mactelnet");
-
- /* Required function calls to register the header fields and subtrees used */
- proto_register_field_array (proto_mactelnet, hf, array_length (hf));
- proto_register_subtree_array (ett, array_length (ett));
-
- mactelnet_module = prefs_register_protocol(proto_mactelnet, proto_reg_handoff_mactelnet);
-
- prefs_register_uint_preference(mactelnet_module, "port", "UDP Port",
- "MAC-Telnet UDP port if other than the default",
- 10, &global_mactelnet_port);
+ static hf_register_info hf[] = {
+ { &hf_mactelnet_control_packet,
+ { "Control Packet Magic Number", "mactelnet.control_packet",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mactelnet_type,
+ { "Type", "mactelnet.type",
+ FT_UINT8, BASE_DEC, VALS(packettypenames), 0x0,
+ "Packet Type", HFILL }
+ },
+ { &hf_mactelnet_protocolver,
+ { "Protocol Version", "mactelnet.protocol_version",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mactelnet_source_mac,
+ { "Source MAC", "mactelnet.source_mac",
+ FT_ETHER, BASE_NONE, NULL , 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mactelnet_destination_mac,
+ { "Destination MAC", "mactelnet.destination_mac",
+ FT_ETHER, BASE_NONE, NULL , 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mactelnet_session_id,
+ { "Session ID", "mactelnet.session_id",
+ FT_UINT16, BASE_HEX, NULL , 0x0,
+ "Session ID for this connection", HFILL }
+ },
+ { &hf_mactelnet_client_type,
+ { "Client Type", "mactelnet.client_type",
+ FT_UINT16, BASE_HEX, VALS(clienttypenames) , 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mactelnet_databytes,
+ { "Session Data Bytes", "mactelnet.session_bytes",
+ FT_UINT32, BASE_DEC, NULL , 0x0,
+ "Session data bytes received", HFILL }
+ },
+ { &hf_mactelnet_datatype,
+ { "Data Packet Type", "mactelnet.data_type",
+ FT_UINT8, BASE_HEX, VALS(controlpackettypenames) , 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mactelnet_control,
+ { "Control Packet", "mactelnet.control",
+ FT_NONE, BASE_NONE, NULL , 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mactelnet_control_length,
+ { "Control Data Length", "mactelnet.control_length",
+ FT_UINT32, BASE_DEC, NULL , 0x0,
+ "Control packet length", HFILL }
+ },
+ { &hf_mactelnet_control_encryption_key,
+ { "Encryption Key", "mactelnet.control_encryptionkey",
+ FT_BYTES, BASE_NONE, NULL , 0x0,
+ "Login encryption key", HFILL }
+ },
+ { &hf_mactelnet_control_password,
+ { "Password MD5", "mactelnet.control_password",
+ FT_BYTES, BASE_NONE, NULL , 0x0,
+ "Null padded MD5 password", HFILL }
+ },
+ { &hf_mactelnet_control_username,
+ { "Username", "mactelnet.control_username",
+ FT_STRING, BASE_NONE, NULL , 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mactelnet_control_terminal,
+ { "Terminal Type", "mactelnet.control_terminaltype",
+ FT_STRING, BASE_NONE, NULL , 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mactelnet_control_width,
+ { "Terminal Width", "mactelnet.control_width",
+ FT_UINT16, BASE_DEC, NULL , 0x0,
+ NULL, HFILL }
+ },
+ { &hf_mactelnet_control_height,
+ { "Terminal Height", "mactelnet.control_height",
+ FT_UINT16, BASE_DEC, NULL , 0x0,
+ NULL, HFILL }
+ }
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_mactelnet,
+ &ett_mactelnet_control,
+ };
+
+ module_t *mactelnet_module;
+
+ /* Register the protocol name and description */
+ proto_mactelnet = proto_register_protocol ("MikroTik MAC-Telnet Protocol", PROTO_TAG_MACTELNET, "mactelnet");
+
+ /* Required function calls to register the header fields and subtrees used */
+ proto_register_field_array (proto_mactelnet, hf, array_length (hf));
+ proto_register_subtree_array (ett, array_length (ett));
+
+ mactelnet_module = prefs_register_protocol(proto_mactelnet, proto_reg_handoff_mactelnet);
+
+ prefs_register_uint_preference(mactelnet_module, "port", "UDP Port",
+ "MAC-Telnet UDP port if other than the default",
+ 10, &global_mactelnet_port);
}
void
proto_reg_handoff_mactelnet(void)
{
- static gboolean initialized = FALSE;
- static guint current_port;
- static dissector_handle_t mactelnet_handle;
-
- if (!initialized) {
- mactelnet_handle = new_create_dissector_handle(dissect_mactelnet, proto_mactelnet);
- data_handle = find_dissector("data");
- initialized = TRUE;
- } else {
- dissector_delete_uint("udp.port", current_port, mactelnet_handle);
- }
-
- current_port = global_mactelnet_port;
- dissector_add_uint("udp.port", current_port, mactelnet_handle);
+ static gboolean initialized = FALSE;
+ static guint current_port;
+ static dissector_handle_t mactelnet_handle;
+
+ if (!initialized) {
+ mactelnet_handle = new_create_dissector_handle(dissect_mactelnet, proto_mactelnet);
+ data_handle = find_dissector("data");
+ initialized = TRUE;
+ } else {
+ dissector_delete_uint("udp.port", current_port, mactelnet_handle);
+ }
+
+ current_port = global_mactelnet_port;
+ dissector_add_uint("udp.port", current_port, mactelnet_handle);
}
diff --git a/epan/dissectors/packet-manolito.c b/epan/dissectors/packet-manolito.c
index 934edfa95f..ad056c67e8 100644
--- a/epan/dissectors/packet-manolito.c
+++ b/epan/dissectors/packet-manolito.c
@@ -29,8 +29,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-mdshdr.c b/epan/dissectors/packet-mdshdr.c
index 8807d3af7a..fb42495cff 100644
--- a/epan/dissectors/packet-mdshdr.c
+++ b/epan/dissectors/packet-mdshdr.c
@@ -8,12 +8,6 @@
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
- * Copied from WHATEVER_FILE_YOU_USED (where "WHATEVER_FILE_YOU_USED"
- * is a dissector file; if you just copied this from README.developer,
- * don't bother with the "Copied from" - you don't even need to put
- * in a "Copied from" if you copied an existing dissector, especially
- * if the bulk of the code in the new dissector is your code)
- *
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
@@ -33,44 +27,36 @@
# include "config.h"
#endif
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
#include <etypes.h>
#include <epan/prefs.h>
-#define MDSHDR_VERSION_OFFSET 0
+#define MDSHDR_VERSION_OFFSET 0
/* Mdshdr Control bits */
-#define MDSHDR_CTL_IDXDIRECT 1
-#define MDSHDR_CTL_IGNACLO 2
-#define MDSHDR_CTL_DRP 4
+#define MDSHDR_CTL_IDXDIRECT 1
+#define MDSHDR_CTL_IGNACLO 2
+#define MDSHDR_CTL_DRP 4
/* OFFSETS OF FIELDS */
-#define MDSHDR_VER_OFFSET 0
-#define MDSHDR_SOF_OFFSET 1
-#define MDSHDR_PKTLEN_OFFSET 2
-#define MDSHDR_DIDX_OFFSET 5
-#define MDSHDR_SIDX_OFFSET 6
+#define MDSHDR_VER_OFFSET 0
+#define MDSHDR_SOF_OFFSET 1
+#define MDSHDR_PKTLEN_OFFSET 2
+#define MDSHDR_DIDX_OFFSET 5
+#define MDSHDR_SIDX_OFFSET 6
#define MDSHDR_VSAN_OFFSET 13
/* Two size definitions are sufficient */
-#define MDSHDR_SIZE_BYTE sizeof (gchar)
-#define MDSHDR_SIZE_INT16 sizeof (guint16)
-#define MDSHDR_SIZE_INT32 sizeof (guint32)
+#define MDSHDR_SIZE_BYTE sizeof(gchar)
+#define MDSHDR_SIZE_INT16 sizeof(guint16)
+#define MDSHDR_SIZE_INT32 sizeof(guint32)
/* Other miscellaneous defines; can't rely on sizeof structs */
-#define MDSHDR_MAX_VERSION 0
+#define MDSHDR_MAX_VERSION 0
#define MDSHDR_HEADER_SIZE 16
-#define MDSHDR_TRAILER_SIZE 6
+#define MDSHDR_TRAILER_SIZE 6
/* SOF Encodings */
#define MDSHDR_SOFc1 0x1
@@ -146,7 +132,6 @@ static const value_string eof_vals[] = {
void proto_reg_handoff_mdshdr(void);
-/* Code to actually dissect the packets */
static void
dissect_mdshdr(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
@@ -155,40 +140,39 @@ dissect_mdshdr(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_item *ti_main, *ti_hdr, *ti_trlr;
proto_item *hidden_item;
proto_tree *mdshdr_tree_main, *mdshdr_tree_hdr, *mdshdr_tree_trlr;
- int offset = 0;
- guint pktlen;
- tvbuff_t *next_tvb;
- guint8 sof, eof;
- guint16 vsan;
- guint8 span_id;
- int trailer_start = 0; /*0 means "no trailer found"*/
-
- /* Make entries in Protocol column and Info column on summary display */
+ int offset = 0;
+ guint pktlen;
+ tvbuff_t *next_tvb;
+ guint8 sof, eof;
+ guint16 vsan;
+ guint8 span_id;
+ int trailer_start = 0; /*0 means "no trailer found"*/
+
col_set_str(pinfo->cinfo, COL_PROTOCOL, "MDS Header");
col_clear(pinfo->cinfo, COL_INFO);
- sof = tvb_get_guint8 (tvb, offset+MDSHDR_SOF_OFFSET) & 0x0F;
- pktlen = tvb_get_ntohs (tvb, offset+MDSHDR_PKTLEN_OFFSET) & 0x1FFF;
- vsan = tvb_get_ntohs (tvb, offset+MDSHDR_VSAN_OFFSET) & 0x0FFF;
- span_id = (tvb_get_ntohs (tvb, offset+MDSHDR_VSAN_OFFSET) & 0xF000) >> 12;
+ sof = tvb_get_guint8(tvb, offset+MDSHDR_SOF_OFFSET) & 0x0F;
+ pktlen = tvb_get_ntohs(tvb, offset+MDSHDR_PKTLEN_OFFSET) & 0x1FFF;
+ vsan = tvb_get_ntohs(tvb, offset+MDSHDR_VSAN_OFFSET) & 0x0FFF;
+ span_id = (tvb_get_ntohs(tvb, offset+MDSHDR_VSAN_OFFSET) & 0xF000) >> 12;
/* The Mdshdr trailer is at the end of the frame */
- if (tvb_length (tvb) >= MDSHDR_HEADER_SIZE + pktlen
- /* Avoid header/trailer overlap if something wrong */
- && pktlen >= MDSHDR_TRAILER_SIZE ) {
+ if ((tvb_length(tvb) >= (MDSHDR_HEADER_SIZE + pktlen))
+ /* Avoid header/trailer overlap if something wrong */
+ && (pktlen >= MDSHDR_TRAILER_SIZE)) {
trailer_start = MDSHDR_HEADER_SIZE + pktlen - MDSHDR_TRAILER_SIZE;
- eof = tvb_get_guint8 (tvb, trailer_start);
- tvb_set_reported_length (tvb, MDSHDR_HEADER_SIZE+pktlen);
+ eof = tvb_get_guint8(tvb, trailer_start);
+ tvb_set_reported_length(tvb, MDSHDR_HEADER_SIZE+pktlen);
}
else {
eof = MDSHDR_EOF_UNKNOWN;
}
- pinfo->src_idx = (tvb_get_ntohs (tvb, MDSHDR_SIDX_OFFSET) & 0x3FF);
- pinfo->dst_idx = (tvb_get_ntohs (tvb, MDSHDR_DIDX_OFFSET) & 0xFFC) >> 2;
- pinfo->vsan = vsan;
+ pinfo->src_idx = (tvb_get_ntohs(tvb, MDSHDR_SIDX_OFFSET) & 0x3FF);
+ pinfo->dst_idx = (tvb_get_ntohs(tvb, MDSHDR_DIDX_OFFSET) & 0xFFC) >> 2;
+ pinfo->vsan = vsan;
pinfo->sof_eof = 0;
if ((sof == MDSHDR_SOFi3) || (sof == MDSHDR_SOFi2) || (sof == MDSHDR_SOFi1)
@@ -206,103 +190,99 @@ dissect_mdshdr(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
pinfo->sof_eof |= PINFO_EOF_INVALID;
}
- /* In the interest of speed, if "tree" is NULL, don't do any work not
- necessary to generate protocol tree items. */
if (tree) {
+ ti_main = proto_tree_add_protocol_format(tree, proto_mdshdr, tvb, 0,
+ MDSHDR_HEADER_SIZE+pktlen,
+ "MDS Header(%s/%s)",
+ val_to_str(sof, sof_vals, "Unknown(%u)"),
+ val_to_str(eof, eof_vals, "Unknown(%u)"));
- /* create display subtree for the protocol */
- ti_main = proto_tree_add_protocol_format (tree, proto_mdshdr, tvb, 0,
- MDSHDR_HEADER_SIZE+pktlen,
- "MDS Header(%s/%s)",
- val_to_str(sof, sof_vals, "Unknown(%u)"),
- val_to_str(eof, eof_vals, "Unknown(%u)"));
-
- mdshdr_tree_main = proto_item_add_subtree (ti_main, ett_mdshdr);
+ mdshdr_tree_main = proto_item_add_subtree(ti_main, ett_mdshdr);
/* Add Header part as subtree first */
- ti_hdr = proto_tree_add_text (mdshdr_tree_main, tvb, MDSHDR_VER_OFFSET,
- MDSHDR_HEADER_SIZE, "MDS Header");
+ ti_hdr = proto_tree_add_text(mdshdr_tree_main, tvb, MDSHDR_VER_OFFSET,
+ MDSHDR_HEADER_SIZE, "MDS Header");
- mdshdr_tree_hdr = proto_item_add_subtree (ti_hdr, ett_mdshdr_hdr);
- hidden_item = proto_tree_add_item (mdshdr_tree_hdr, hf_mdshdr_sof, tvb, MDSHDR_SOF_OFFSET,
- MDSHDR_SIZE_BYTE, ENC_BIG_ENDIAN);
+ mdshdr_tree_hdr = proto_item_add_subtree(ti_hdr, ett_mdshdr_hdr);
+ hidden_item = proto_tree_add_item(mdshdr_tree_hdr, hf_mdshdr_sof, tvb, MDSHDR_SOF_OFFSET,
+ MDSHDR_SIZE_BYTE, ENC_BIG_ENDIAN);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- proto_tree_add_item (mdshdr_tree_hdr, hf_mdshdr_pkt_len, tvb, MDSHDR_PKTLEN_OFFSET,
- MDSHDR_SIZE_INT16, ENC_BIG_ENDIAN);
- proto_tree_add_item (mdshdr_tree_hdr, hf_mdshdr_dstidx, tvb, MDSHDR_DIDX_OFFSET,
- MDSHDR_SIZE_INT16, ENC_BIG_ENDIAN);
- proto_tree_add_item (mdshdr_tree_hdr, hf_mdshdr_srcidx, tvb, MDSHDR_SIDX_OFFSET,
- MDSHDR_SIZE_INT16, ENC_BIG_ENDIAN);
- proto_tree_add_item (mdshdr_tree_hdr, hf_mdshdr_vsan, tvb, MDSHDR_VSAN_OFFSET,
- MDSHDR_SIZE_INT16, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mdshdr_tree_hdr, hf_mdshdr_pkt_len, tvb, MDSHDR_PKTLEN_OFFSET,
+ MDSHDR_SIZE_INT16, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mdshdr_tree_hdr, hf_mdshdr_dstidx, tvb, MDSHDR_DIDX_OFFSET,
+ MDSHDR_SIZE_INT16, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mdshdr_tree_hdr, hf_mdshdr_srcidx, tvb, MDSHDR_SIDX_OFFSET,
+ MDSHDR_SIZE_INT16, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mdshdr_tree_hdr, hf_mdshdr_vsan, tvb, MDSHDR_VSAN_OFFSET,
+ MDSHDR_SIZE_INT16, ENC_BIG_ENDIAN);
hidden_item = proto_tree_add_uint(mdshdr_tree_hdr, hf_mdshdr_span,
- tvb, MDSHDR_VSAN_OFFSET,
- MDSHDR_SIZE_BYTE, span_id);
+ tvb, MDSHDR_VSAN_OFFSET,
+ MDSHDR_SIZE_BYTE, span_id);
PROTO_ITEM_SET_HIDDEN(hidden_item);
/* Add Mdshdr Trailer part */
- if (tvb_length (tvb) >= MDSHDR_HEADER_SIZE + pktlen
- && 0 != trailer_start) {
- ti_trlr = proto_tree_add_text (mdshdr_tree_main, tvb, trailer_start,
- MDSHDR_TRAILER_SIZE,
- "MDS Trailer");
- mdshdr_tree_trlr = proto_item_add_subtree (ti_trlr, ett_mdshdr_trlr);
-
- proto_tree_add_item (mdshdr_tree_trlr, hf_mdshdr_eof, tvb,
- trailer_start, MDSHDR_SIZE_BYTE, ENC_BIG_ENDIAN);
- proto_tree_add_item (mdshdr_tree_trlr, hf_mdshdr_fccrc, tvb,
- trailer_start+2, MDSHDR_SIZE_INT32, ENC_BIG_ENDIAN);
+ if (tvb_length(tvb) >= MDSHDR_HEADER_SIZE + pktlen
+ && 0 != trailer_start) {
+ ti_trlr = proto_tree_add_text(mdshdr_tree_main, tvb, trailer_start,
+ MDSHDR_TRAILER_SIZE,
+ "MDS Trailer");
+ mdshdr_tree_trlr = proto_item_add_subtree(ti_trlr, ett_mdshdr_trlr);
+
+ proto_tree_add_item(mdshdr_tree_trlr, hf_mdshdr_eof, tvb,
+ trailer_start, MDSHDR_SIZE_BYTE, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mdshdr_tree_trlr, hf_mdshdr_fccrc, tvb,
+ trailer_start+2, MDSHDR_SIZE_INT32, ENC_BIG_ENDIAN);
}
else {
- proto_tree_add_text (mdshdr_tree_main, tvb, 0, 0, "MDS Trailer: Not Found");
+ proto_tree_add_text(mdshdr_tree_main, tvb, 0, 0, "MDS Trailer: Not Found");
}
}
- /* If this protocol has a sub-dissector call it here, see section 1.8 */
- if (tvb_length (tvb) >= MDSHDR_HEADER_SIZE + pktlen
- && 0 != pktlen /*if something wrong*/) {
- next_tvb = tvb_new_subset (tvb, MDSHDR_HEADER_SIZE, pktlen, pktlen);
+ if (tvb_length(tvb) >= MDSHDR_HEADER_SIZE + pktlen
+ && 0 != pktlen /*if something wrong*/) {
+ next_tvb = tvb_new_subset(tvb, MDSHDR_HEADER_SIZE, pktlen, pktlen);
/* XXX what to do with the rest of this frame? --ArtemTamazov */
}
else {
- next_tvb = tvb_new_subset_remaining (tvb, MDSHDR_HEADER_SIZE);
+ next_tvb = tvb_new_subset_remaining(tvb, MDSHDR_HEADER_SIZE);
}
/* Call the Fibre Channel dissector */
if (fc_dissector_handle) {
- call_dissector (fc_dissector_handle, next_tvb, pinfo, tree);
+ call_dissector(fc_dissector_handle, next_tvb, pinfo, tree);
}
else {
- call_dissector (data_handle, next_tvb, pinfo, tree);
+ call_dissector(data_handle, next_tvb, pinfo, tree);
}
}
-/* Register the protocol with Wireshark. This format is require because a script
- * is used to build the C function that calls all the protocol registration.
- */
-
void
proto_register_mdshdr(void)
{
-/* Setup list of header fields See Section 1.6.1 for details*/
static hf_register_info hf[] = {
{ &hf_mdshdr_sof,
{"SOF", "mdshdr.sof", FT_UINT8, BASE_DEC, VALS(sof_vals), 0x0, NULL, HFILL}},
+
{ &hf_mdshdr_pkt_len,
{"Packet Len", "mdshdr.plen", FT_UINT16, BASE_DEC, NULL, 0x1FFF, NULL, HFILL}},
+
{ &hf_mdshdr_dstidx,
{"Dst Index", "mdshdr.dstidx", FT_UINT16, BASE_HEX, NULL, 0xFFC, NULL, HFILL}},
+
{ &hf_mdshdr_srcidx,
{"Src Index", "mdshdr.srcidx", FT_UINT16, BASE_HEX, NULL, 0x3FF, NULL, HFILL}},
+
{ &hf_mdshdr_vsan,
{"VSAN", "mdshdr.vsan", FT_UINT16, BASE_DEC, NULL, 0x0FFF, NULL, HFILL}},
+
{ &hf_mdshdr_eof,
{"EOF", "mdshdr.eof", FT_UINT8, BASE_DEC, VALS(eof_vals), 0x0, NULL, HFILL}},
+
{ &hf_mdshdr_span,
- {"SPAN Frame", "mdshdr.span", FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}},
+ {"SPAN Frame", "mdshdr.span", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+
{ &hf_mdshdr_fccrc,
{"CRC", "mdshdr.crc", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL}},
};
@@ -318,31 +298,25 @@ proto_register_mdshdr(void)
/* Register the protocol name and description */
proto_mdshdr = proto_register_protocol("MDS Header", "MDS Header", "mdshdr");
-/* Required function calls to register the header fields and subtrees used */
proto_register_field_array(proto_mdshdr, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
- mdshdr_module = prefs_register_protocol (proto_mdshdr, proto_reg_handoff_mdshdr);
- prefs_register_bool_preference (mdshdr_module, "decode_if_etype_zero",
- "Decode as MDS Header if Ethertype == 0",
- "A frame is considered for decoding as MDSHDR if either "
- "ethertype is 0xFCFC or zero. Turn this flag off if you "
- "you don't want ethertype zero to be decoded as MDSHDR. "
- "This might be useful to avoid problems with test frames.",
- &decode_if_zero_etype);
+ mdshdr_module = prefs_register_protocol(proto_mdshdr, proto_reg_handoff_mdshdr);
+ prefs_register_bool_preference(mdshdr_module, "decode_if_etype_zero",
+ "Decode as MDS Header if Ethertype == 0",
+ "A frame is considered for decoding as MDSHDR if either "
+ "ethertype is 0xFCFC or zero. Turn this flag off if you "
+ "you don't want ethertype zero to be decoded as MDSHDR. "
+ "This might be useful to avoid problems with test frames.",
+ &decode_if_zero_etype);
}
-
-/* If this dissector uses sub-dissector registration add a registration routine.
- This format is required because a script is used to find these routines and
- create the code that calls these routines.
-*/
void
proto_reg_handoff_mdshdr(void)
{
static dissector_handle_t mdshdr_handle;
- static gboolean registered_for_zero_etype = FALSE;
- static gboolean mdshdr_prefs_initialized = FALSE;
+ static gboolean registered_for_zero_etype = FALSE;
+ static gboolean mdshdr_prefs_initialized = FALSE;
if (!mdshdr_prefs_initialized) {
/*
@@ -352,10 +326,10 @@ proto_reg_handoff_mdshdr(void)
* ethertype ETHERTYPE_FCFT, and fetch the data and Fibre
* Channel handles.
*/
- mdshdr_handle = create_dissector_handle (dissect_mdshdr, proto_mdshdr);
- dissector_add_uint ("ethertype", ETHERTYPE_FCFT, mdshdr_handle);
- data_handle = find_dissector ("data");
- fc_dissector_handle = find_dissector ("fc");
+ mdshdr_handle = create_dissector_handle(dissect_mdshdr, proto_mdshdr);
+ dissector_add_uint("ethertype", ETHERTYPE_FCFT, mdshdr_handle);
+ data_handle = find_dissector("data");
+ fc_dissector_handle = find_dissector("fc");
mdshdr_prefs_initialized = TRUE;
}
@@ -370,7 +344,7 @@ proto_reg_handoff_mdshdr(void)
* do so.
*/
if (!registered_for_zero_etype) {
- dissector_add_uint ("ethertype", ETHERTYPE_UNK, mdshdr_handle);
+ dissector_add_uint("ethertype", ETHERTYPE_UNK, mdshdr_handle);
registered_for_zero_etype = TRUE;
}
} else {
@@ -380,7 +354,7 @@ proto_reg_handoff_mdshdr(void)
* undo that registration.
*/
if (registered_for_zero_etype) {
- dissector_delete_uint ("ethertype", ETHERTYPE_UNK, mdshdr_handle);
+ dissector_delete_uint("ethertype", ETHERTYPE_UNK, mdshdr_handle);
registered_for_zero_etype = FALSE;
}
}
diff --git a/epan/dissectors/packet-megaco.c b/epan/dissectors/packet-megaco.c
index bf23f31128..8a7d985b50 100644
--- a/epan/dissectors/packet-megaco.c
+++ b/epan/dissectors/packet-megaco.c
@@ -159,9 +159,11 @@ static int megaco_tap = -1;
* a detailed tree that expresses a somewhat more semantically meaningful
* decode.
*/
+static guint global_megaco_txt_sctp_port = PORT_MEGACO_TXT;
static guint global_megaco_txt_tcp_port = PORT_MEGACO_TXT;
static guint global_megaco_txt_udp_port = PORT_MEGACO_TXT;
#if 0
+static guint global_megaco_bin_sctp_port = PORT_MEGACO_BIN;
static guint global_megaco_bin_tcp_port = PORT_MEGACO_BIN;
static guint global_megaco_bin_udp_port = PORT_MEGACO_BIN;
#endif
@@ -325,6 +327,8 @@ dissect_megaco_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
gint tvb_RBRKT, tvb_LBRKT, RBRKT_counter, LBRKT_counter;
guint token_index=0;
guint32 dword;
+ guchar needle;
+ guint8 first;
gcp_msg_t* msg = NULL;
gcp_trx_t* trx = NULL;
@@ -343,14 +347,8 @@ dissect_megaco_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
tvb_len = tvb_length(tvb);
megaco_tree = NULL;
ti = NULL;
- tvb_previous_offset = 0;
- tvb_current_offset = 0;
tvb_offset = 0;
tvb_next_offset = 0;
- tvb_command_start_offset = 0;
- tvb_command_end_offset = 0;
- tvb_RBRKT = 0;
- tvb_LBRKT = 0;
RBRKT_counter = 0;
LBRKT_counter = 0;
@@ -424,23 +422,32 @@ dissect_megaco_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
"Sorry, no \"/\" in the MEGACO header, I can't parse this packet");
return;
}
- tvb_previous_offset = tvb_previous_offset + 1;
- /* As version should follow /, just add 1, works till ver 9 */
- tvb_current_offset = tvb_previous_offset + 1;
+ /* skip / */
+ tvb_previous_offset++;
+
+ /* assume at least one digit in version */
+ tvb_current_offset = tvb_previous_offset + 1;
+
+ if (isdigit(tvb_get_guint8(tvb, tvb_current_offset))) {
+ /* 2-digit version */
+ tvb_current_offset++;
+ }
tokenlen = tvb_current_offset - tvb_previous_offset;
ver_offset = tvb_previous_offset;
ver_length = tokenlen;
- /* Pos of version + 2 should take us past version + SEP */
+ tvb_previous_offset = tvb_current_offset;
+ tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_previous_offset);
+
+ if (tvb_previous_offset == tvb_current_offset) {
+ proto_tree_add_text(megaco_tree, tvb, 0, -1,
+ "[ Parse error: missing SEP in MEGACO header ]");
+ return;
+ }
- tvb_previous_offset = tvb_previous_offset + 2;
- /* in case of CRLF */
- if (tvb_get_guint8(tvb, tvb_current_offset ) == '\n')
- tvb_previous_offset++;
- if (tvb_get_guint8(tvb, tvb_current_offset ) == '\r')
- tvb_previous_offset++;
+ tvb_previous_offset = tvb_current_offset;
/* mId should follow here,
* mId = (( domainAddress / domainName ) [":" portNumber]) / mtpAddress / deviceName
@@ -452,14 +459,16 @@ dissect_megaco_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
* pathNAME = ["*"] NAME *("/" / "*"/ ALPHA / DIGIT /"_" / "$" )["@" pathDomainName ]
*/
- tokenlen = tvb_find_line_end( tvb, tvb_previous_offset, -1, &tvb_next_offset, FALSE);
- /* accept white spaces as SEParator too */
- if ( (tvb_current_offset=tvb_find_guint8(tvb, tvb_previous_offset, tokenlen, ' ')) != -1 ) {
- /* SEP after mID might be spaces only */
- tokenlen = tvb_current_offset-tvb_previous_offset;
- tvb_next_offset = megaco_tvb_skip_wsp(tvb, tvb_current_offset);
+ tvb_current_offset = tvb_pbrk_guint8(tvb, tvb_current_offset, -1, " \t\r\n", &needle);
+ if (tvb_current_offset == -1) {
+ proto_tree_add_text(megaco_tree, tvb, 0, -1,
+ "[ Parse error: no body in MEGACO message (missing SEP after mId) ]");
+ return;
}
+ tokenlen = tvb_current_offset - tvb_previous_offset;
+ tvb_next_offset = megaco_tvb_skip_wsp(tvb, tvb_current_offset);
+
/* At this point we should point to the "\n" ending the mId element
* or to the next character after white space SEP
*/
@@ -482,6 +491,8 @@ dissect_megaco_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
PROTO_ITEM_SET_HIDDEN(hidden_item);
}
}
+ col_clear(pinfo->cinfo, COL_INFO);
+ first = 1;
do{
tvb_previous_offset = tvb_next_offset;
@@ -508,9 +519,6 @@ dissect_megaco_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
* actionRequest *(COMMA actionRequest) RBRKT
* TransToken = ("Transaction" / "T")
*/
- tempchar = tvb_get_guint8(tvb, tvb_previous_offset);
- if ( (tempchar >= 'a')&& (tempchar <= 'z'))
- tempchar = tempchar - 0x20;
/* Find token length */
for (tvb_offset=tvb_previous_offset; tvb_offset < tvb_len-1; tvb_offset++){
@@ -554,7 +562,6 @@ dissect_megaco_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
* transactionAck = transactionID / (transactionID "-" transactionID)
*/
case RESPONSEACKTOKEN:
- trx_type = GCP_TRX_ACK;
tvb_LBRKT = tvb_find_guint8(tvb, tvb_offset, tvb_transaction_end_offset, '{');
tvb_offset = tvb_LBRKT;
@@ -572,12 +579,13 @@ dissect_megaco_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
tvb_current_offset = megaco_tvb_skip_wsp_return(tvb, tvb_current_offset)-1; /* cut last RBRKT */
len = tvb_current_offset - tvb_previous_offset;
+ if (!first) {
+ col_append_str(pinfo->cinfo, COL_INFO, " ");
+ }
if (check_col(pinfo->cinfo, COL_INFO) )
- col_append_fstr(pinfo->cinfo, COL_INFO, " %s TransactionResponseAck",
+ col_append_fstr(pinfo->cinfo, COL_INFO, "%s TransactionResponseAck",
tvb_format_text(tvb,tvb_previous_offset,len));
- trx_id = strtoul(tvb_format_text(tvb,tvb_offset,len),NULL,10);
-
if(tree)
my_proto_tree_add_string(message_body_tree, hf_megaco_transid, tvb,
tvb_previous_offset, len,
@@ -586,11 +594,9 @@ dissect_megaco_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if(global_megaco_raw_text){
tvb_raw_text_add(tvb, megaco_tree);
}
- tvb_previous_offset = tvb_LBRKT +1;
return;
/* Pe and PN is transactionPending, P+"any char" is transactionReply */
case PENDINGTOKEN:
- trx_type = GCP_TRX_PENDING;
tvb_offset = tvb_find_guint8(tvb, tvb_previous_offset, tvb_transaction_end_offset, '=')+1;
tvb_offset = megaco_tvb_skip_wsp(tvb, tvb_offset);
@@ -607,10 +613,12 @@ dissect_megaco_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
tvb_previous_offset, tokenlen,
"Pending" );
+ if (!first) {
+ col_append_str(pinfo->cinfo, COL_INFO, " ");
+ }
if (check_col(pinfo->cinfo, COL_INFO) )
- col_append_fstr(pinfo->cinfo, COL_INFO, " %s Pending",
+ col_append_fstr(pinfo->cinfo, COL_INFO, "%s Pending",
tvb_format_text(tvb,tvb_offset,len));
- trx_id = strtoul(tvb_format_text(tvb,tvb_offset,len),NULL,10);
if(tree)
my_proto_tree_add_string(message_body_tree, hf_megaco_transid, tvb,
@@ -670,8 +678,11 @@ dissect_megaco_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
tvb_offset = megaco_tvb_skip_wsp(tvb, tvb_offset);
tvb_current_offset = megaco_tvb_skip_wsp_return(tvb, tvb_current_offset-1);
len = tvb_current_offset - tvb_offset;
+ if (!first) {
+ col_append_str(pinfo->cinfo, COL_INFO, " ");
+ }
if (check_col(pinfo->cinfo, COL_INFO) )
- col_append_fstr(pinfo->cinfo, COL_INFO, " %s Request",
+ col_append_fstr(pinfo->cinfo, COL_INFO, "%s Request",
tvb_format_text(tvb,tvb_offset,len));
trx_id = strtoul(tvb_format_text(tvb,tvb_offset,len),NULL,10);
if(tree)
@@ -1357,6 +1368,7 @@ nextcontext:
tvb_next_offset = tvb_transaction_end_offset;
+ first = 0;
}
while( tvb_transaction_end_offset < tvb_len - 2);
@@ -1423,9 +1435,6 @@ dissect_megaco_descriptors(tvbuff_t *tvb, proto_tree *megaco_tree_command_line,
tvb_len = tvb_length(tvb);
- tvb_RBRKT = 0;
- tvb_LBRKT = 0;
-
tvb_LBRKT = megaco_tvb_skip_wsp(tvb, tvb_descriptors_start_offset +1);
@@ -1544,8 +1553,6 @@ dissect_megaco_descriptors(tvbuff_t *tvb, proto_tree *megaco_tree_command_line,
break;
}
- tokenlen = (tvb_RBRKT+1) - tvb_previous_offset;
-
tvb_current_offset = tvb_find_guint8(tvb, tvb_RBRKT, tvb_len, ',');
if (tvb_current_offset == -1 || tvb_descriptors_end_offset < tvb_current_offset){
tvb_current_offset = tvb_descriptors_end_offset;
@@ -1564,10 +1571,6 @@ dissect_megaco_modemdescriptor(tvbuff_t *tvb, proto_tree *megaco_tree_command_li
gint tokenlen;
- tokenlen = 0;
-
-
-
tokenlen = (tvb_RBRKT+1) - tvb_previous_offset;
proto_tree_add_string(megaco_tree_command_line, hf_megaco_modem_descriptor, tvb,
tvb_previous_offset, tokenlen,
@@ -1581,8 +1584,6 @@ dissect_megaco_multiplexdescriptor(tvbuff_t *tvb, proto_tree *megaco_tree_comman
gint tokenlen;
- tokenlen = 0;
-
tokenlen = (tvb_RBRKT+1) - tvb_previous_offset;
proto_tree_add_string(megaco_tree_command_line, hf_megaco_multiplex_descriptor, tvb,
tvb_previous_offset, tokenlen,
@@ -1660,11 +1661,6 @@ dissect_megaco_mediadescriptor(tvbuff_t *tvb, proto_tree *megaco_tree_command_li
proto_tree *megaco_mediadescriptor_tree, *megaco_mediadescriptor_ti;
- tokenlen = 0;
- tvb_next_offset = 0;
- tvb_current_offset = 0;
- tvb_offset = 0;
-
/*
megaco_mediadescriptor_ti = proto_tree_add_text(megaco_tree_command_line,tvb,tvb_previous_offset,tokenlen,"Media Descriptor");
megaco_mediadescriptor_tree = proto_item_add_subtree(megaco_mediadescriptor_ti, ett_megaco_mediadescriptor);
@@ -1927,12 +1923,6 @@ dissect_megaco_eventsdescriptor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *m
gint requested_event_start_offset, requested_event_end_offset;
proto_tree *megaco_requestedevent_tree, *megaco_requestedevent_ti;
- tokenlen = 0;
- tvb_current_offset = 0;
- tvb_next_offset = 0;
- tvb_help_offset = 0;
- tvb_events_end_offset = 0;
- tvb_help_offset = 0;
requested_event_start_offset = 0;
requested_event_end_offset = 0;
@@ -2078,13 +2068,6 @@ dissect_megaco_signaldescriptor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *m
gint requested_signal_start_offset, requested_signal_end_offset;
proto_tree *megaco_requestedsignal_tree, *megaco_requestedsignal_ti;
- tokenlen = 0;
- tvb_current_offset = 0;
- tvb_next_offset = 0;
- tvb_help_offset = 0;
- tvb_signals_end_offset = 0;
- tvb_signals_start_offset = 0;
- tvb_LBRKT = 0;
requested_signal_start_offset = 0;
requested_signal_end_offset = 0;
@@ -2475,8 +2458,6 @@ dissect_megaco_digitmapdescriptor(tvbuff_t *tvb, proto_tree *megaco_tree_command
gint tokenlen;
- tokenlen = 0;
-
tokenlen = tvb_RBRKT - tvb_previous_offset;
proto_tree_add_string(megaco_tree_command_line, hf_megaco_digitmap_descriptor, tvb,
tvb_previous_offset, tokenlen,
@@ -2490,8 +2471,6 @@ dissect_megaco_statisticsdescriptor(tvbuff_t *tvb, proto_tree *megaco_tree_comma
gint tokenlen;
- tokenlen = 0;
-
tokenlen = (tvb_RBRKT+1) - tvb_previous_offset;
proto_tree_add_string(megaco_tree_command_line, hf_megaco_statistics_descriptor, tvb,
tvb_previous_offset, tokenlen,
@@ -2507,16 +2486,9 @@ dissect_megaco_observedeventsdescriptor(tvbuff_t *tvb, packet_info *pinfo, proto
gint tvb_observedevents_end_offset, tvb_LBRKT;
proto_tree *megaco_observedeventsdescriptor_tree, *megaco_observedeventsdescriptor_ti;
- guint8 tempchar;
gint requested_event_start_offset, requested_event_end_offset, param_start_offset, param_end_offset;
proto_tree *megaco_observedevent_tree, *megaco_observedevent_ti;
- tokenlen = 0;
- tvb_current_offset = 0;
- tvb_next_offset = 0;
- tvb_help_offset = 0;
- tvb_observedevents_end_offset = 0;
- tvb_LBRKT = 0;
requested_event_start_offset = 0;
requested_event_end_offset = 0;
@@ -2620,11 +2592,6 @@ dissect_megaco_observedeventsdescriptor(tvbuff_t *tvb, packet_info *pinfo, proto
if ( tvb_help_offset < tvb_RBRKT && tvb_help_offset != -1 ){
- tvb_help_offset = megaco_tvb_skip_wsp(tvb, requested_event_start_offset +1);
- tempchar = tvb_get_guint8(tvb, tvb_help_offset);
- if ( (tempchar >= 'a')&& (tempchar <= 'z'))
- tempchar = tempchar - 0x20;
-
requested_event_start_offset = megaco_tvb_skip_wsp(tvb, requested_event_start_offset +1)-1;
requested_event_end_offset = megaco_tvb_skip_wsp_return(tvb, requested_event_end_offset-1);
@@ -2685,8 +2652,6 @@ dissect_megaco_topologydescriptor(tvbuff_t *tvb, proto_tree *megaco_tree_command
gint tokenlen;
- tokenlen = 0;
-
tokenlen = (tvb_RBRKT+1) - tvb_previous_offset;
proto_tree_add_string(megaco_tree_command_line, hf_megaco_topology_descriptor, tvb,
tvb_previous_offset, tokenlen,
@@ -2702,13 +2667,6 @@ dissect_megaco_Packagesdescriptor(tvbuff_t *tvb, proto_tree *megaco_tree_command
gint tvb_packages_end_offset, tvb_LBRKT;
proto_tree *megaco_packagesdescriptor_tree, *megaco_packagesdescriptor_ti;
- tokenlen = 0;
- tvb_current_offset = 0;
- tvb_next_offset = 0;
- tvb_help_offset = 0;
- tvb_packages_end_offset = 0;
- tvb_LBRKT = 0;
-
tokenlen = (tvb_RBRKT+1) - tvb_previous_offset;
megaco_packagesdescriptor_ti = proto_tree_add_item(megaco_tree_command_line,hf_megaco_packages_descriptor,tvb,tvb_previous_offset,tokenlen, ENC_ASCII|ENC_NA);
@@ -2900,9 +2858,6 @@ dissect_megaco_errordescriptor(tvbuff_t *tvb, proto_tree *megaco_tree_command_li
proto_item* item;
proto_item* hidden_item;
- tokenlen = 0;
- tvb_current_offset = 0;
-
tvb_current_offset = tvb_find_guint8(tvb, tvb_previous_offset , tvb_RBRKT, '=');
tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_current_offset +1);
tvb_get_nstringz0(tvb,tvb_current_offset,4,error);
@@ -2938,9 +2893,6 @@ dissect_megaco_TerminationStatedescriptor(tvbuff_t *tvb, proto_tree *megaco_medi
proto_tree *megaco_TerminationState_tree, *megaco_TerminationState_ti;
- tokenlen = 0;
- tvb_offset = 0;
-
tvb_offset = tvb_find_guint8(tvb, tvb_current_offset , tvb_next_offset, '=');
tokenlen = tvb_next_offset - tvb_current_offset;
@@ -2967,10 +2919,7 @@ dissect_megaco_TerminationStatedescriptor(tvbuff_t *tvb, proto_tree *megaco_medi
tvb_offset = tvb_next_offset;
}
- tempchar = tvb_get_guint8(tvb, tvb_current_offset);
tokenlen = tvb_offset - tvb_current_offset;
- if ( (tempchar >= 'a')&& (tempchar <= 'z'))
- tempchar = tempchar - 0x20;
proto_tree_add_string(megaco_TerminationState_tree, hf_megaco_Service_State, tvb,
tvb_current_offset, tokenlen,
@@ -2986,10 +2935,7 @@ dissect_megaco_TerminationStatedescriptor(tvbuff_t *tvb, proto_tree *megaco_medi
tvb_offset = tvb_next_offset;
}
- tempchar = tvb_get_guint8(tvb, tvb_current_offset);
tokenlen = tvb_offset - tvb_current_offset;
- if ( (tempchar >= 'a')&& (tempchar <= 'z'))
- tempchar = tempchar - 0x20;
proto_tree_add_string(megaco_TerminationState_tree, hf_megaco_Event_Buffer_Control, tvb,
tvb_current_offset, tokenlen,
@@ -3004,10 +2950,7 @@ dissect_megaco_TerminationStatedescriptor(tvbuff_t *tvb, proto_tree *megaco_medi
tvb_offset = tvb_next_offset;
}
- tempchar = tvb_get_guint8(tvb, tvb_current_offset);
tokenlen = tvb_offset - tvb_current_offset;
- if ( (tempchar >= 'a')&& (tempchar <= 'z'))
- tempchar = tempchar - 0x20;
proto_tree_add_string(megaco_TerminationState_tree, hf_megaco_Event_Buffer_Control, tvb,
tvb_current_offset, tokenlen,
@@ -3047,8 +2990,6 @@ dissect_megaco_Localdescriptor(tvbuff_t *tvb, proto_tree *megaco_mediadescriptor
proto_tree *megaco_localdescriptor_tree, *megaco_localdescriptor_ti;
- tokenlen = 0;
-
tokenlen = tvb_next_offset - tvb_current_offset;
@@ -3145,13 +3086,11 @@ dissect_megaco_LocalControldescriptor(tvbuff_t *tvb, proto_tree *megaco_mediades
/*proto_tree *megaco_LocalControl_tree, *megaco_LocalControl_ti; */
- tokenlen = 0;
tvb_offset = 0;
- tvb_help_offset = 0;
-
- tokenlen = tvb_next_offset - tvb_current_offset;
/*
+ tokenlen = tvb_next_offset - tvb_current_offset;
+
megaco_LocalControl_ti = proto_tree_add_item(megaco_mediadescriptor_tree,hf_megaco_LocalControl_descriptor,tvb,tvb_current_offset,tokenlen, ENC_ASCII|ENC_NA);
megaco_LocalControl_tree = proto_item_add_subtree(megaco_LocalControl_ti, ett_megaco_LocalControldescriptor);
*/
@@ -3283,7 +3222,8 @@ dissect_megaco_LocalControldescriptor(tvbuff_t *tvb, proto_tree *megaco_mediades
tokenlen));
tvb_get_nstringz0(tvb,tvb_current_offset,3,code_str);
- proto_item_append_text(item,"[ %s ]", val_to_str(strtoul(code_str,NULL,16), dscp_vals,"Unknown (%u)"));
+ proto_item_append_text(item,"[ %s ]",
+ val_to_str_ext(strtoul(code_str,NULL,16), &dscp_vals_ext,"Unknown (%u)"));
tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_offset +1);
break;
@@ -3402,7 +3342,7 @@ static gint megaco_tvb_find_token(tvbuff_t* tvb, gint offset, gint maxlength){
guchar needle;
do {
- pos = tvb_pbrk_guint8(tvb, pos + 1, maxlength,(guint8*)"{}", &needle);
+ pos = tvb_pbrk_guint8(tvb, pos + 1, maxlength, "{}", &needle);
if(pos == -1)
return -1;
switch(needle){
@@ -3597,6 +3537,11 @@ proto_register_megaco(void)
megaco_module = prefs_register_protocol(proto_megaco, proto_reg_handoff_megaco);
+ prefs_register_uint_preference(megaco_module, "sctp.txt_port",
+ "MEGACO Text SCTP Port",
+ "Set the SCTP port for MEGACO text messages",
+ 10, &global_megaco_txt_sctp_port);
+
prefs_register_uint_preference(megaco_module, "tcp.txt_port",
"MEGACO Text TCP Port",
"Set the TCP port for MEGACO text messages",
@@ -3608,6 +3553,11 @@ proto_register_megaco(void)
10, &global_megaco_txt_udp_port);
#if 0
+ prefs_register_uint_preference(megaco_module, "sctp.bin_port",
+ "MEGACO Binary SCTP Port",
+ "Set the SCTP port for MEGACO binary messages",
+ 10, &global_megaco_bin_sctp_port);
+
prefs_register_uint_preference(megaco_module, "tcp.bin_port",
"MEGACO Binary TCP Port",
"Set the TCP port for MEGACO binary messages",
@@ -3655,9 +3605,11 @@ proto_reg_handoff_megaco(void)
* Variables to allow for proper deletion of dissector registration when
* the user changes port from the gui.
*/
+ static guint txt_sctp_port;
static guint txt_tcp_port;
static guint txt_udp_port;
#if 0
+ static guint bin_sctp_port;
static guint bin_tcp_port;
static guint bin_udp_port;
#endif
@@ -3675,17 +3627,19 @@ proto_reg_handoff_megaco(void)
dissector_add_uint("sctp.ppi", H248_PAYLOAD_PROTOCOL_ID, megaco_text_handle);
megaco_prefs_initialized = TRUE;
- }
- else {
+ } else {
+ dissector_delete_uint("sctp.port", txt_sctp_port, megaco_text_handle);
dissector_delete_uint("tcp.port", txt_tcp_port, megaco_text_tcp_handle);
dissector_delete_uint("udp.port", txt_udp_port, megaco_text_handle);
}
/* Set our port number for future use */
+ txt_sctp_port = global_megaco_txt_sctp_port;
txt_tcp_port = global_megaco_txt_tcp_port;
txt_udp_port = global_megaco_txt_udp_port;
+ dissector_add_uint("sctp.port", global_megaco_txt_sctp_port, megaco_text_handle);
dissector_add_uint("tcp.port", global_megaco_txt_tcp_port, megaco_text_tcp_handle);
dissector_add_uint("udp.port", global_megaco_txt_udp_port, megaco_text_handle);
diff --git a/epan/dissectors/packet-memcache.c b/epan/dissectors/packet-memcache.c
index 173db03793..9a11c33d69 100644
--- a/epan/dissectors/packet-memcache.c
+++ b/epan/dissectors/packet-memcache.c
@@ -37,11 +37,11 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <ctype.h>
+
#include <glib.h>
-#include <epan/conversation.h>
#include <epan/packet.h>
+#include <epan/conversation.h>
#include <epan/strutil.h>
#include <epan/base64.h>
#include <epan/emem.h>
@@ -595,10 +595,10 @@ dissect_memcache (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset += key_len;
dissect_value (tvb, pinfo, memcache_tree, offset, value_len, opcode, request);
- offset += value_len;
+ /*offset += value_len;*/
} else if (body_len) {
proto_tree_add_item (memcache_tree, hf_value, tvb, offset, body_len, ENC_ASCII|ENC_NA);
- offset += body_len;
+ /*offset += body_len;*/
col_append_fstr (pinfo->cinfo, COL_INFO, " (%s)",
val_to_str (status, status_vals, "Unknown status: %d"));
@@ -1031,8 +1031,6 @@ incr_dissector (tvbuff_t *tvb, proto_tree *tree, int offset)
}
proto_tree_add_item (tree, hf_uint64_response, tvb, offset, tokenlen, ENC_BIG_ENDIAN);
- offset += (int) (next_token - line);
- line = next_token;
/* CRLF */
tokenlen = get_token_len (line, lineend, &next_token);
@@ -1149,11 +1147,8 @@ stat_dissector (tvbuff_t *tvb, proto_tree *tree, int offset)
return -1; /* invalid token */
}
proto_tree_add_item (tree, hf_name_value, tvb, offset, tokenlen, ENC_ASCII|ENC_NA);
- offset += (int) (next_token - line);
- line = next_token;
offset = next_offset;
- occurrences = 0;
}
return offset;
@@ -1264,9 +1259,6 @@ get_response_dissector (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
cas = (guint64) strtoul (response_chars, NULL, 10);
proto_tree_add_uint64 (tree, hf_cas, tvb, offset, tokenlen, cas);
- offset += (int) (next_token - line);
- line = next_token;
-
/* CRLF */
tokenlen = get_token_len (line, lineend, &next_token);
if (tokenlen != 0) {
@@ -1360,7 +1352,6 @@ memcache_response_dissector (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
{
proto_tree_add_item (tree, hf_response, tvb, offset, tokenlen, ENC_ASCII|ENC_NA);
offset += (int) (next_token - line);
- line = next_token;
return offset;
}
@@ -1487,7 +1478,6 @@ memcache_request_dissector (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
proto_tree_add_item (tree, hf_noreply, tvb, offset, tokenlen, ENC_ASCII|ENC_NA);
}
offset += (int) (next_token - line);
- line = next_token;
}
offset += 2 ; /* go past /r/n*/
@@ -1655,7 +1645,6 @@ memcache_request_dissector (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
/* noreply */
proto_tree_add_item (tree, hf_noreply, tvb, offset, tokenlen, ENC_ASCII|ENC_NA);
offset += (int) (next_token - line);
- line = next_token;
} else {
return -1; /* expecting CRLF and if not noreply*/
}
diff --git a/epan/dissectors/packet-mesh.c b/epan/dissectors/packet-mesh.c
index a9fdf4ef47..5b7d520888 100644
--- a/epan/dissectors/packet-mesh.c
+++ b/epan/dissectors/packet-mesh.c
@@ -28,8 +28,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-mikey.c b/epan/dissectors/packet-mikey.c
index f22693b6e3..796d8acaad 100644
--- a/epan/dissectors/packet-mikey.c
+++ b/epan/dissectors/packet-mikey.c
@@ -982,7 +982,14 @@ dissect_payload_sp_param(enum sp_prot_t proto, tvbuff_t *tvb, proto_tree *tree)
}
if (tree) {
- param_ti = proto_tree_add_item(tree, hfindex, tvb, 2, length, FALSE);
+ /*
+ * All the parameters in question are either FT_BYTES,
+ * in which case the byte order is inapplicable, or
+ * FT_UINT8, in which case it could be given as
+ * FT_BIG_ENDIAN as per bigger FT_UINT values, but
+ * ENC_NA also works, as there's only one byte.
+ */
+ param_ti = proto_tree_add_item(tree, hfindex, tvb, 2, length, ENC_NA);
param_tree = proto_item_add_subtree(param_ti, ett_mikey_sp_param);
proto_tree_add_item(param_tree, hf_mikey[POS_SP_PARAM_F_TYPE], tvb, 0, 1, ENC_BIG_ENDIAN);
diff --git a/epan/dissectors/packet-mim.c b/epan/dissectors/packet-mim.c
index 2df0d29f3e..4f1a3743f8 100644
--- a/epan/dissectors/packet-mim.c
+++ b/epan/dissectors/packet-mim.c
@@ -380,7 +380,7 @@ proto_reg_handoff_fabricpath(void)
/*
dissector_handle_t fp_handle;
fp_handle = new_create_dissector_handle(dissect_fp, proto_fp);
- dissector_add("ethertype", ETHERTYPE_DCE, fp_handle);
+ dissector_add_uint("ethertype", ETHERTYPE_DCE, fp_handle);
*/
static gboolean prefs_initialized = FALSE;
diff --git a/epan/dissectors/packet-miop.c b/epan/dissectors/packet-miop.c
index abf342a430..e72f6a6b8f 100644
--- a/epan/dissectors/packet-miop.c
+++ b/epan/dissectors/packet-miop.c
@@ -133,7 +133,7 @@ static void dissect_miop (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree
guint16 packet_length;
guint packet_number;
guint number_of_packets;
- gboolean little_endian;
+ guint byte_order;
guint32 unique_id_len;
@@ -167,20 +167,20 @@ static void dissect_miop (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree
}
flags = tvb_get_guint8(tvb, 5);
- little_endian = flags & 0x01;
+ byte_order = (flags & 0x01) ? ENC_LITTLE_ENDIAN : ENC_BIG_ENDIAN;
- if (little_endian) {
- packet_length = tvb_get_letohs(tvb, 6);
- packet_number = tvb_get_letohl(tvb, 8);
- number_of_packets = tvb_get_letohl(tvb, 12);
- unique_id_len = tvb_get_letohl(tvb, 16);
- }
- else {
+ if (byte_order == ENC_BIG_ENDIAN) {
packet_length = tvb_get_ntohs(tvb, 6);
packet_number = tvb_get_ntohl(tvb, 8);
number_of_packets = tvb_get_ntohl(tvb, 12);
unique_id_len = tvb_get_ntohl(tvb, 16);
}
+ else {
+ packet_length = tvb_get_letohs(tvb, 6);
+ packet_number = tvb_get_letohl(tvb, 8);
+ number_of_packets = tvb_get_letohl(tvb, 12);
+ unique_id_len = tvb_get_letohl(tvb, 16);
+ }
col_add_fstr (pinfo->cinfo, COL_INFO, "MIOP %u.%u Packet s=%d (%u of %u)",
version_major, version_minor, packet_length,
@@ -209,14 +209,14 @@ static void dissect_miop (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree
proto_tree_add_uint_format_value(miop_tree, hf_miop_flags, tvb, offset, 1,
flags, "0x%02x (%s)", flags, flags_strbuf->str);
offset++;
- proto_tree_add_item(miop_tree, hf_miop_packet_length, tvb, offset, 2, little_endian);
+ proto_tree_add_item(miop_tree, hf_miop_packet_length, tvb, offset, 2, byte_order);
offset += 2;
- proto_tree_add_item(miop_tree, hf_miop_packet_number, tvb, offset, 4, little_endian);
+ proto_tree_add_item(miop_tree, hf_miop_packet_number, tvb, offset, 4, byte_order);
offset += 4;
- proto_tree_add_item(miop_tree, hf_miop_number_of_packets, tvb, offset, 4, little_endian);
+ proto_tree_add_item(miop_tree, hf_miop_number_of_packets, tvb, offset, 4, byte_order);
offset += 4;
- ti = proto_tree_add_item(miop_tree, hf_miop_unique_id_len, tvb, offset, 4, little_endian);
+ ti = proto_tree_add_item(miop_tree, hf_miop_unique_id_len, tvb, offset, 4, byte_order);
if (unique_id_len >= MIOP_MAX_UNIQUE_ID_LENGTH) {
expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_WARN,
@@ -227,7 +227,7 @@ static void dissect_miop (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree
offset += 4;
proto_tree_add_item(miop_tree, hf_miop_unique_id, tvb, offset, unique_id_len,
- little_endian);
+ byte_order);
if (packet_number == 0) {
/* It is the first packet of the collection
diff --git a/epan/dissectors/packet-mip.c b/epan/dissectors/packet-mip.c
index e42ae6d771..d7e3db2941 100644
--- a/epan/dissectors/packet-mip.c
+++ b/epan/dissectors/packet-mip.c
@@ -30,10 +30,7 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
-#include <time.h>
#include <epan/packet.h>
#include <epan/sminmpec.h>
@@ -263,7 +260,6 @@ static const value_string mip_ext_types[]= {
{128, "Deprecated (2001 Aug 31)"},
{129, "SKIP Firewall Traversal Extension"}, /*[RFC2356]*/
{130, "Encapsulating Delivery Style Extension"}, /*[RFC3024]*/
- {131, "Mobile Node NAI"}, /*[RFC2794]*/
{MN_NAI_EXT, "Mobile Node NAI Extension"},
{MF_CHALLENGE_EXT, "MN-FA Challenge Extension"},
{OLD_NVSE_EXT, "Normal Vendor/Organization Specific Extension"},
diff --git a/epan/dissectors/packet-mip6.c b/epan/dissectors/packet-mip6.c
index be131b1fea..553b699636 100644
--- a/epan/dissectors/packet-mip6.c
+++ b/epan/dissectors/packet-mip6.c
@@ -1681,7 +1681,7 @@ static const ip_tcp_opt mip6_opts[] = {
MIP6_PAD1, /* 0 Pad1 [RFC3775] */
"Pad1",
NULL,
- NO_LENGTH,
+ OPT_LEN_NO_LENGTH,
0,
NULL,
},
@@ -1689,7 +1689,7 @@ static const ip_tcp_opt mip6_opts[] = {
MIP6_PADN, /* 1 PadN [RFC3775] */
"PadN",
&ett_mip6_opt_padn,
- VARIABLE_LENGTH,
+ OPT_LEN_VARIABLE_LENGTH,
0,
dissect_mip6_opt_padn
},
@@ -1697,7 +1697,7 @@ static const ip_tcp_opt mip6_opts[] = {
MIP6_BRA, /* 2 Binding Refresh Advice */
"Binding Refresh Advice",
&ett_mip6_opt_bra,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
MIP6_BRA_LEN,
dissect_mip6_opt_bra
},
@@ -1705,7 +1705,7 @@ static const ip_tcp_opt mip6_opts[] = {
MIP6_ACOA, /*3 Alternate Care-of Address */
"Alternate Care-of Address",
&ett_mip6_opt_acoa,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
MIP6_ACOA_LEN,
dissect_mip6_opt_acoa
},
@@ -1713,7 +1713,7 @@ static const ip_tcp_opt mip6_opts[] = {
MIP6_NI, /* 4 Nonce Indices */
"Nonce Indices",
&ett_mip6_opt_ni,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
MIP6_NI_LEN,
dissect_mip6_opt_ni
},
@@ -1721,7 +1721,7 @@ static const ip_tcp_opt mip6_opts[] = {
MIP6_AUTD, /* 5 Authorization Data */
"Authorization Data",
&ett_mip6_opt_bad,
- VARIABLE_LENGTH,
+ OPT_LEN_VARIABLE_LENGTH,
0,
dissect_mip6_opt_bad
},
@@ -1729,7 +1729,7 @@ static const ip_tcp_opt mip6_opts[] = {
MIP6_MNP, /* 6 Mobile Network Prefix Option */
"Mobile Network Prefix",
&ett_mip6_nemo_opt_mnp,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
MIP6_NEMO_MNP_LEN,
dissect_mip6_nemo_opt_mnp
},
@@ -1737,7 +1737,7 @@ static const ip_tcp_opt mip6_opts[] = {
MIP6_MHLLA, /* 7 Mobility Header Link-Layer Address option [RFC5568] */
"Mobility Header Link-Layer Address option",
&ett_fmip6_opt_lla,
- VARIABLE_LENGTH,
+ OPT_LEN_VARIABLE_LENGTH,
FMIP6_LLA_MINLEN,
dissect_fmip6_opt_lla
},
@@ -1745,7 +1745,7 @@ static const ip_tcp_opt mip6_opts[] = {
MIP6_MNID, /* 8 MN-ID-OPTION-TYPE */
"Mobile Node Identifier",
&ett_mip6_opt_mnid,
- VARIABLE_LENGTH,
+ OPT_LEN_VARIABLE_LENGTH,
MIP6_MNID_MINLEN,
dissect_mip6_opt_mnid
},
@@ -1753,7 +1753,7 @@ static const ip_tcp_opt mip6_opts[] = {
MIP6_VSM, /* 19 Vendor Specific Mobility Option [RFC5094] */
"Vendor Specific Mobility",
&ett_mip6_opt_vsm,
- VARIABLE_LENGTH,
+ OPT_LEN_VARIABLE_LENGTH,
MIP6_VSM_MINLEN,
dissect_mip6_opt_vsm
},
@@ -1761,7 +1761,7 @@ static const ip_tcp_opt mip6_opts[] = {
MIP6_SSM, /* 20 Service Selection Mobility Option [RFC5149] */
"Service Selection Mobility",
&ett_mip6_opt_ssm,
- VARIABLE_LENGTH,
+ OPT_LEN_VARIABLE_LENGTH,
MIP6_SSM_MINLEN,
dissect_mip6_opt_ssm
},
@@ -1769,7 +1769,7 @@ static const ip_tcp_opt mip6_opts[] = {
MIP6_HNP, /* 22 Home Network Prefix Option [RFC5213] */
"Home Network Prefix",
&ett_pmip6_opt_hnp,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
MIP6_NEMO_MNP_LEN,
dissect_mip6_nemo_opt_mnp
},
@@ -1777,7 +1777,7 @@ static const ip_tcp_opt mip6_opts[] = {
MIP6_MOHI, /* 23 Handoff Indicator Option [RFC5213] */
"Handoff Indicator Option",
&ett_pmip6_opt_hi,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
PMIP6_HI_LEN,
dissect_pmip6_opt_hi
},
@@ -1785,7 +1785,7 @@ static const ip_tcp_opt mip6_opts[] = {
MIP6_ATT, /* 24 Access Technology Type Option [RFC5213] */
"Access Technology Type Option",
&ett_pmip6_opt_att,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
PMIP6_ATT_LEN,
dissect_pmip6_opt_att
},
@@ -1793,7 +1793,7 @@ static const ip_tcp_opt mip6_opts[] = {
MIP6_LLA, /* 26 Link-local Address Option [RFC5213 */
"Link-local Address",
&ett_pmip6_opt_lla,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
PMIP6_LLA_LEN,
dissect_pmip6_opt_lla
},
@@ -1802,7 +1802,7 @@ static const ip_tcp_opt mip6_opts[] = {
MIP6_TS, /* 27 Timestamp */
"Timestamp",
&ett_pmip6_opt_ts,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
PMIP6_TS_LEN,
dissect_pmip6_opt_ts
},
@@ -1810,7 +1810,7 @@ static const ip_tcp_opt mip6_opts[] = {
MIP6_RC, /* 28 Restart Counter [RFC5847] */
"Restart Counter",
&ett_pmip6_opt_rc,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
PMIP6_RC_LEN,
dissect_pmip6_opt_rc
},
@@ -1818,7 +1818,7 @@ static const ip_tcp_opt mip6_opts[] = {
MIP6_IPV4HA, /* 29 IPv4 Home Address [RFC5555] */
"IPv4 Home Address",
&ett_mip6_opt_ipv4ha,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
MIP6_IPV4HA_LEN,
dissect_pmip6_opt_ipv4ha
},
@@ -1826,7 +1826,7 @@ static const ip_tcp_opt mip6_opts[] = {
MIP6_IPV4AA, /* 30 IPv4 Address Acknowledgement [RFC5555] */
"IPv4 Address Acknowledgement",
&ett_mip6_opt_ipv4aa,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
MIP6_IPV4AA_LEN,
dissect_pmip6_opt_ipv4aa
},
@@ -1834,7 +1834,7 @@ static const ip_tcp_opt mip6_opts[] = {
MIP6_GREK, /* 33 GRE Key Option [RFC5845] */
"GRE Key",
&ett_pmip6_opt_grek,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
PMIP6_GREK_LEN,
dissect_pmip6_opt_grek
},
@@ -1842,7 +1842,7 @@ static const ip_tcp_opt mip6_opts[] = {
MIP6_IPV4HAREQ, /* 36 IPv4 Home Address Request [RFC5844] */
"IPv4 Home Address Request",
&ett_mip6_opt_ipv4hareq,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
MIP6_IPV4HAREQ_LEN,
dissect_pmip6_opt_ipv4hareq
},
@@ -1850,7 +1850,7 @@ static const ip_tcp_opt mip6_opts[] = {
MIP6_IPV4HAREP, /* 37 IPv4 Home Address Reply [RFC5844] */
"IPv4 Home Address Reply",
&ett_mip6_opt_ipv4harep,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
MIP6_IPV4HAREP_LEN,
dissect_pmip6_opt_ipv4harep
},
@@ -1858,7 +1858,7 @@ static const ip_tcp_opt mip6_opts[] = {
MIP6_IPV4DRA, /* 38 IPv4 Default-Router Address [RFC5844] */
"IPv4 Default-Router Address",
&ett_mip6_opt_ipv4dra,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
MIP6_IPV4DRA_LEN,
dissect_pmip6_opt_ipv4dra
},
@@ -1894,13 +1894,13 @@ dissect_mipv6_options(tvbuff_t *tvb, int offset, guint length,
break;
}
if (optp == &opttab[nopts]) {
- /* We assume that the only NO_LENGTH options are Pad1 options,
- * so that we can treat unknown options as VARIABLE_LENGTH with a
+ /* We assume that the only OPT_LEN_NO_LENGTH options are Pad1 options,
+ * so that we can treat unknown options as OPT_LEN_VARIABLE_LENGTH with a
* minimum of 0, and at least be able to move on to the next option
* by using the length in the option.
*/
optp = NULL; /* indicate that we don't know this option */
- len_type = VARIABLE_LENGTH;
+ len_type = OPT_LEN_VARIABLE_LENGTH;
optlen = 0;
g_snprintf(name_str, sizeof name_str, "Unknown (0x%02x)", opt);
name = name_str;
@@ -1912,7 +1912,7 @@ dissect_mipv6_options(tvbuff_t *tvb, int offset, guint length,
dissect = optp->dissect;
}
--length; /* account for type byte */
- if (len_type != NO_LENGTH) {
+ if (len_type != OPT_LEN_NO_LENGTH) {
/* Option has a length. Is it in the packet? */
if (length == 0) {
/* Bogus - packet must at least include
@@ -1930,14 +1930,14 @@ dissect_mipv6_options(tvbuff_t *tvb, int offset, guint length,
"%s (option length = %u byte%s says option goes past end of options)",
name, len, plurality(len, "", "s"));
return;
- } else if (len_type == FIXED_LENGTH && len != optlen) {
+ } else if (len_type == OPT_LEN_FIXED_LENGTH && len != optlen) {
/* Bogus - option length isn't what it's supposed to be for this
option. */
proto_tree_add_text(opt_tree, tvb, offset, len + 2,
"%s (with option length = %u byte%s; should be %u)", name,
len, plurality(len, "", "s"), optlen);
return;
- } else if (len_type == VARIABLE_LENGTH && len < optlen) {
+ } else if (len_type == OPT_LEN_VARIABLE_LENGTH && len < optlen) {
/* Bogus - option length is less than what it's supposed to be for
this option. */
proto_tree_add_text(opt_tree, tvb, offset, len + 2,
diff --git a/epan/dissectors/packet-mmse.c b/epan/dissectors/packet-mmse.c
index ea65607f12..0cacccbfb8 100644
--- a/epan/dissectors/packet-mmse.c
+++ b/epan/dissectors/packet-mmse.c
@@ -37,8 +37,6 @@
# include "config.h"
#endif
-#include <stdio.h>
-#include <stdlib.h>
#include <string.h>
#include <glib.h>
diff --git a/epan/dissectors/packet-mndp.c b/epan/dissectors/packet-mndp.c
index 9e2c1b7c2a..07dac66446 100644
--- a/epan/dissectors/packet-mndp.c
+++ b/epan/dissectors/packet-mndp.c
@@ -39,7 +39,6 @@
#include <glib.h>
#include <epan/packet.h>
#include <epan/emem.h>
-#include <epan/expert.h>
/* protocol handles */
static int proto_mndp = -1;
@@ -220,32 +219,31 @@ static int
dissect_mndp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_item *ti;
- proto_tree *mndp_tree = NULL;
- guint32 offset = 0;
- guint32 packet_length;
+ proto_tree *mndp_tree;
+ guint32 offset = 0;
+ guint32 packet_length;
- if (check_col(pinfo->cinfo, COL_PROTOCOL))
- col_set_str(pinfo->cinfo, COL_PROTOCOL, PROTO_SHORT_NAME);
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, PROTO_SHORT_NAME);
packet_length = tvb_length(tvb);
- if (tree) {
- /* Header dissection */
- ti = proto_tree_add_item(tree, proto_mndp, tvb, offset, -1,
- ENC_NA);
- mndp_tree = proto_item_add_subtree(ti, ett_mndp);
-
- proto_tree_add_item(mndp_tree, hf_mndp_header_unknown, tvb, offset, 2,
- ENC_NA);
- offset += 2;
- proto_tree_add_item(mndp_tree, hf_mndp_header_seqno, tvb, offset, 2,
- ENC_BIG_ENDIAN);
- offset += 2;
-
- while (offset < packet_length)
- offset = dissect_tlv(tvb, pinfo, mndp_tree,
- offset, 0, mndp_body_tlv_vals);
+ /* Header dissection */
+ ti = proto_tree_add_item(tree, proto_mndp, tvb, offset, -1,
+ ENC_NA);
+ mndp_tree = proto_item_add_subtree(ti, ett_mndp);
+
+ proto_tree_add_item(mndp_tree, hf_mndp_header_unknown, tvb, offset, 2,
+ ENC_NA);
+ offset += 2;
+ proto_tree_add_item(mndp_tree, hf_mndp_header_seqno, tvb, offset, 2,
+ ENC_BIG_ENDIAN);
+ offset += 2;
+
+ while (offset < packet_length) {
+ offset = dissect_tlv(tvb, pinfo, mndp_tree,
+ offset, 0, mndp_body_tlv_vals);
}
+
return offset;
}
@@ -340,7 +338,7 @@ proto_register_mndp(void)
0x0, NULL, HFILL }},
{ &hf_mndp_unpack,
- { "Unpack", "mndp.unpack", FT_UINT8, BASE_NONE, VALS(mndp_unpack_vals),
+ { "Unpack", "mndp.unpack", FT_UINT8, BASE_DEC, VALS(mndp_unpack_vals),
0x0, NULL, HFILL }},
{ &hf_mndp_ipv6address,
@@ -363,7 +361,6 @@ proto_reg_handoff_mndp(void)
{
dissector_handle_t mndp_handle;
-
mndp_handle = new_create_dissector_handle(dissect_mndp_static, proto_mndp);
dissector_add_uint("udp.port", PORT_MNDP, mndp_handle);
/* heur_dissector_add("udp", dissect_mndp_heur, proto_mndp); */
diff --git a/epan/dissectors/packet-moldudp.c b/epan/dissectors/packet-moldudp.c
new file mode 100644
index 0000000000..b480aa01df
--- /dev/null
+++ b/epan/dissectors/packet-moldudp.c
@@ -0,0 +1,285 @@
+/* packet-moldudp.c
+ * Routines for MoldUDP dissection
+ * Copyright 2012, Evan Huus <eapache@gmail.com>
+ *
+ * http://www.nasdaqtrader.com/content/technicalsupport/specifications/dataproducts/moldudp.pdf
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+#include <epan/prefs.h>
+#include <epan/expert.h>
+
+void proto_reg_handoff_moldudp(void);
+
+/* Initialize the protocol and registered fields */
+static int proto_moldudp = -1;
+static int hf_moldudp_session = -1;
+static int hf_moldudp_sequence = -1;
+static int hf_moldudp_count = -1;
+static int hf_moldudp_msgblk = -1;
+static int hf_moldudp_msgseq = -1;
+static int hf_moldudp_msglen = -1;
+static int hf_moldudp_msgdata = -1;
+
+#define MOLDUDP_SESSION_LEN 10
+#define MOLDUDP_SEQUENCE_LEN 4
+#define MOLDUDP_COUNT_LEN 2
+#define MOLDUDP_MSGLEN_LEN 2
+
+#define MOLDUDP_HEARTBEAT 0x0000
+
+/* Global port pref */
+static guint pf_moldudp_port = 0;
+
+/* Initialize the subtree pointers */
+static gint ett_moldudp = -1;
+static gint ett_moldudp_msgblk = -1;
+
+/* Code to dissect a message block */
+guint
+dissect_moldudp_msgblk(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ guint offset, guint32 sequence)
+{
+ proto_item *ti;
+ proto_tree *blk_tree;
+ guint16 msglen, real_msglen, whole_len;
+ guint remaining;
+
+ if (tvb_reported_length(tvb) - offset < MOLDUDP_MSGLEN_LEN)
+ return 0;
+
+ msglen = tvb_get_letohs(tvb, offset);
+ remaining = tvb_reported_length(tvb) - offset - MOLDUDP_MSGLEN_LEN;
+
+ if (msglen == 0)
+ col_set_str(pinfo->cinfo, COL_INFO, "MoldUDP Messages (End Of Session)");
+
+ if (tvb_reported_length(tvb) < (offset + MOLDUDP_MSGLEN_LEN))
+ real_msglen = 0;
+ else if (msglen <= remaining)
+ real_msglen = msglen;
+ else
+ real_msglen = remaining;
+
+ /* msglen and real_msglen only count the data section, and don't
+ * include the two bytes for the length field itself. */
+ whole_len = real_msglen + MOLDUDP_MSGLEN_LEN;
+
+ ti = proto_tree_add_item(tree, hf_moldudp_msgblk,
+ tvb, offset, whole_len, ENC_NA);
+
+ blk_tree = proto_item_add_subtree(ti, ett_moldudp_msgblk);
+
+ ti = proto_tree_add_uint(blk_tree, hf_moldudp_msgseq,
+ tvb, offset, 0, sequence);
+
+ PROTO_ITEM_SET_GENERATED(ti);
+
+ ti = proto_tree_add_item(blk_tree, hf_moldudp_msglen,
+ tvb, offset, MOLDUDP_MSGLEN_LEN, ENC_LITTLE_ENDIAN);
+
+ if (msglen != real_msglen)
+ expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR,
+ "Invalid Message Length (claimed %u, found %u)",
+ msglen, real_msglen);
+
+ offset += MOLDUDP_MSGLEN_LEN;
+
+ proto_tree_add_item(blk_tree, hf_moldudp_msgdata,
+ tvb, offset, real_msglen, ENC_NA);
+
+ return whole_len;
+}
+
+/* Code to actually dissect the packets */
+static int
+dissect_moldudp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ proto_item *ti;
+ proto_tree *moldudp_tree;
+ guint offset = 0;
+ guint16 count, real_count = 0;
+ guint32 sequence;
+
+ /* Check that there's enough data */
+ if (tvb_reported_length(tvb) < (MOLDUDP_SESSION_LEN +
+ MOLDUDP_SEQUENCE_LEN +
+ MOLDUDP_COUNT_LEN))
+ return 0;
+
+ /* Make entries in Protocol column and Info column on summary display */
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "MoldUDP");
+
+ /* Clear the info column so it's sane if we crash. We fill it in later when
+ * we've dissected more of the packet. */
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ count = tvb_get_letohs(tvb, MOLDUDP_SESSION_LEN + MOLDUDP_SEQUENCE_LEN);
+
+ if (count == MOLDUDP_HEARTBEAT)
+ col_set_str(pinfo->cinfo, COL_INFO, "MoldUDP Heartbeat");
+ else
+ col_set_str(pinfo->cinfo, COL_INFO, "MoldUDP Messages");
+
+ /* create display subtree for the protocol */
+ ti = proto_tree_add_item(tree, proto_moldudp,
+ tvb, offset, -1, ENC_NA);
+
+ moldudp_tree = proto_item_add_subtree(ti, ett_moldudp);
+
+ proto_tree_add_item(moldudp_tree, hf_moldudp_session,
+ tvb, offset, MOLDUDP_SESSION_LEN, ENC_ASCII|ENC_NA);
+ offset += MOLDUDP_SESSION_LEN;
+
+ sequence = tvb_get_letohl(tvb, offset);
+ proto_tree_add_item(moldudp_tree, hf_moldudp_sequence,
+ tvb, offset, MOLDUDP_SEQUENCE_LEN, ENC_LITTLE_ENDIAN);
+ offset += MOLDUDP_SEQUENCE_LEN;
+
+ ti = proto_tree_add_item(moldudp_tree, hf_moldudp_count,
+ tvb, offset, MOLDUDP_COUNT_LEN, ENC_LITTLE_ENDIAN);
+ offset += MOLDUDP_COUNT_LEN;
+
+ while (tvb_reported_length(tvb) >= offset + MOLDUDP_MSGLEN_LEN)
+ {
+ offset += dissect_moldudp_msgblk(tvb, pinfo, moldudp_tree,
+ offset, sequence++);
+ real_count++;
+ }
+
+ if (real_count != count)
+ {
+ expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR,
+ "Invalid Message Count (claimed %u, found %u)",
+ count, real_count);
+ }
+
+ /* Return the amount of data this dissector was able to dissect */
+ return tvb_length(tvb);
+}
+
+
+/* Register the protocol with Wireshark */
+void
+proto_register_moldudp(void)
+{
+ module_t *moldudp_module;
+
+ /* Setup list of header fields */
+ static hf_register_info hf[] = {
+
+ { &hf_moldudp_session,
+ { "Session", "moldudp.session", FT_STRING, BASE_NONE, NULL, 0,
+ "The session to which this packet belongs.", HFILL }},
+
+ { &hf_moldudp_sequence,
+ { "Sequence", "moldudp.sequence", FT_UINT32, BASE_DEC, NULL, 0,
+ "The sequence number of the first message in this packet.", HFILL }},
+
+ { &hf_moldudp_count,
+ { "Count", "moldudp.count", FT_UINT16, BASE_DEC, NULL, 0,
+ "The number of messages contained in this packet.", HFILL }},
+
+ { &hf_moldudp_msgblk,
+ { "Message Block", "moldudp.msgblock", FT_NONE, BASE_NONE, NULL, 0,
+ "A message.", HFILL }},
+
+ { &hf_moldudp_msglen,
+ { "Length", "moldudp.msglen", FT_UINT16, BASE_DEC, NULL, 0,
+ "The length of this message.", HFILL }},
+
+ { &hf_moldudp_msgseq,
+ { "Sequence", "moldudp.msgseq", FT_UINT32, BASE_DEC, NULL, 0,
+ "The sequence number of this message.", HFILL }},
+
+ { &hf_moldudp_msgdata,
+ { "Payload", "moldudp.msgdata", FT_BYTES, BASE_NONE, NULL, 0,
+ "The payload data of this message.", HFILL }}
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_moldudp,
+ &ett_moldudp_msgblk
+ };
+
+ /* Register the protocol name and description */
+ proto_moldudp = proto_register_protocol("MoldUDP",
+ "MoldUDP", "moldudp");
+
+ /* Required function calls to register the header fields and subtrees used */
+ proto_register_field_array(proto_moldudp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ /* Register preferences module */
+ moldudp_module = prefs_register_protocol(proto_moldudp,
+ proto_reg_handoff_moldudp);
+
+ /* Register a sample port preference */
+ prefs_register_uint_preference(moldudp_module, "udp.port", "MoldUDP UDP Port",
+ "MoldUDP UDP port to capture on.",
+ 10, &pf_moldudp_port);
+}
+
+
+void
+proto_reg_handoff_moldudp(void)
+{
+ static gboolean initialized = FALSE;
+ static dissector_handle_t moldudp_handle;
+ static int currentPort;
+
+ if (!initialized) {
+
+ moldudp_handle = new_create_dissector_handle(dissect_moldudp,
+ proto_moldudp);
+ initialized = TRUE;
+ } else {
+
+ dissector_delete_uint("udp.port", currentPort, moldudp_handle);
+ }
+
+ currentPort = pf_moldudp_port;
+
+ dissector_add_uint("udp.port", currentPort, moldudp_handle);
+
+}
+
+/*
+ * Editor modelines - http://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vi: set shiftwidth=4 tabstop=4 expandtab:
+ * :indentSize=4:tabSize=4:noTabs=true:
+ */
diff --git a/epan/dissectors/packet-moldudp64.c b/epan/dissectors/packet-moldudp64.c
new file mode 100644
index 0000000000..df751eeb84
--- /dev/null
+++ b/epan/dissectors/packet-moldudp64.c
@@ -0,0 +1,293 @@
+/* packet-moldudp64.c
+ * Routines for MoldUDP64 dissection
+ * Copyright 2012, Evan Huus <eapache@gmail.com>
+ *
+ * http://www.nasdaqtrader.com/content/technicalsupport/specifications/dataproducts/moldudp64.pdf
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+#include <epan/prefs.h>
+#include <epan/expert.h>
+
+void proto_reg_handoff_moldudp64(void);
+
+/* Initialize the protocol and registered fields */
+static int proto_moldudp64 = -1;
+static int hf_moldudp64_session = -1;
+static int hf_moldudp64_sequence = -1;
+static int hf_moldudp64_count = -1;
+static int hf_moldudp64_msgblk = -1;
+static int hf_moldudp64_msglen = -1;
+static int hf_moldudp64_msgseq = -1;
+static int hf_moldudp64_msgdata = -1;
+
+#define MOLDUDP64_SESSION_LEN 10
+#define MOLDUDP64_SEQUENCE_LEN 8
+#define MOLDUDP64_COUNT_LEN 2
+#define MOLDUDP64_MSGLEN_LEN 2
+
+#define MOLDUDP64_HEARTBEAT 0x0000
+#define MOLDUDP64_ENDOFSESS 0xFFFF
+
+/* Global port pref */
+static guint pf_moldudp64_port = 0;
+
+/* Initialize the subtree pointers */
+static gint ett_moldudp64 = -1;
+static gint ett_moldudp64_msgblk = -1;
+
+/* Code to dissect a message block */
+guint
+dissect_moldudp64_msgblk(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ guint offset, guint64 sequence)
+{
+ proto_item *ti;
+ proto_tree *blk_tree;
+ guint16 msglen, real_msglen, whole_len;
+ guint remaining;
+
+ if (tvb_length_remaining(tvb, offset) < MOLDUDP64_MSGLEN_LEN)
+ return 0;
+
+ msglen = tvb_get_ntohs(tvb, offset);
+ remaining = tvb_reported_length(tvb) - offset - MOLDUDP64_MSGLEN_LEN;
+
+ if (remaining < (offset + MOLDUDP64_MSGLEN_LEN))
+ real_msglen = 0;
+ else if (msglen <= remaining)
+ real_msglen = msglen;
+ else
+ real_msglen = remaining;
+
+ /* msglen and real_msglen only count the data section, and don't
+ * include the two bytes for the length field itself. */
+ whole_len = real_msglen + MOLDUDP64_MSGLEN_LEN;
+
+ ti = proto_tree_add_item(tree, hf_moldudp64_msgblk,
+ tvb, offset, whole_len, ENC_NA);
+
+ blk_tree = proto_item_add_subtree(ti, ett_moldudp64_msgblk);
+
+ ti = proto_tree_add_uint64(blk_tree, hf_moldudp64_msgseq,
+ tvb, offset, 0, sequence);
+
+ PROTO_ITEM_SET_GENERATED(ti);
+
+ ti = proto_tree_add_item(blk_tree, hf_moldudp64_msglen,
+ tvb, offset, MOLDUDP64_MSGLEN_LEN, ENC_BIG_ENDIAN);
+
+ if (msglen != real_msglen)
+ expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR,
+ "Invalid Message Length (claimed %u, found %u)",
+ msglen, real_msglen);
+
+ offset += MOLDUDP64_MSGLEN_LEN;
+
+ proto_tree_add_item(blk_tree, hf_moldudp64_msgdata,
+ tvb, offset, real_msglen, ENC_NA);
+
+ return whole_len;
+}
+
+/* Code to actually dissect the packets */
+static int
+dissect_moldudp64(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ proto_item *ti;
+ proto_tree *moldudp64_tree;
+ guint offset = 0;
+ guint16 count, real_count = 0;
+ guint64 sequence;
+
+ /* Check that there's enough data */
+ if (tvb_reported_length(tvb) < (MOLDUDP64_SESSION_LEN +
+ MOLDUDP64_SEQUENCE_LEN +
+ MOLDUDP64_COUNT_LEN))
+ return 0;
+
+ /* Make entries in Protocol column and Info column on summary display */
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "MoldUDP64");
+
+ /* Clear the info column so it's sane if we crash. We fill it in later when
+ * we've dissected more of the packet. */
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ sequence = tvb_get_ntoh64(tvb, MOLDUDP64_SESSION_LEN);
+ count = tvb_get_ntohs(tvb, MOLDUDP64_SESSION_LEN + MOLDUDP64_SEQUENCE_LEN);
+
+ if (count == MOLDUDP64_HEARTBEAT)
+ col_set_str(pinfo->cinfo, COL_INFO, "MoldUDP64 Heartbeat");
+ else if (count == MOLDUDP64_ENDOFSESS)
+ col_set_str(pinfo->cinfo, COL_INFO, "MoldUDP64 End Of Session");
+ else
+ col_set_str(pinfo->cinfo, COL_INFO, "MoldUDP64 Messages");
+
+ /* create display subtree for the protocol */
+ ti = proto_tree_add_item(tree, proto_moldudp64,
+ tvb, offset, -1, ENC_NA);
+
+ moldudp64_tree = proto_item_add_subtree(ti, ett_moldudp64);
+
+ proto_tree_add_item(moldudp64_tree, hf_moldudp64_session,
+ tvb, offset, MOLDUDP64_SESSION_LEN, ENC_ASCII|ENC_NA);
+ offset += MOLDUDP64_SESSION_LEN;
+
+ proto_tree_add_item(moldudp64_tree, hf_moldudp64_sequence,
+ tvb, offset, MOLDUDP64_SEQUENCE_LEN, ENC_BIG_ENDIAN);
+ offset += MOLDUDP64_SEQUENCE_LEN;
+
+ ti = proto_tree_add_item(moldudp64_tree, hf_moldudp64_count,
+ tvb, offset, MOLDUDP64_COUNT_LEN, ENC_BIG_ENDIAN);
+ offset += MOLDUDP64_COUNT_LEN;
+
+ while (tvb_reported_length(tvb) >= offset + MOLDUDP64_MSGLEN_LEN)
+ {
+ offset += dissect_moldudp64_msgblk(tvb, pinfo, moldudp64_tree,
+ offset, sequence++);
+ real_count++;
+ }
+
+ if (count == MOLDUDP64_ENDOFSESS)
+ {
+ if (real_count != 0)
+ {
+ expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR,
+ "End Of Session packet with extra data.");
+ }
+ }
+ else if (real_count != count)
+ {
+ expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR,
+ "Invalid Message Count (claimed %u, found %u)",
+ count, real_count);
+ }
+
+ /* Return the amount of data this dissector was able to dissect */
+ return tvb_length(tvb);
+}
+
+
+/* Register the protocol with Wireshark */
+void
+proto_register_moldudp64(void)
+{
+ module_t *moldudp64_module;
+
+ /* Setup list of header fields */
+ static hf_register_info hf[] = {
+
+ { &hf_moldudp64_session,
+ { "Session", "moldudp64.session", FT_STRING, BASE_NONE, NULL, 0,
+ "The session to which this packet belongs.", HFILL }},
+
+ { &hf_moldudp64_sequence,
+ { "Sequence", "moldudp64.sequence", FT_UINT64, BASE_DEC, NULL, 0,
+ "The sequence number of the first message in this packet.", HFILL }},
+
+ { &hf_moldudp64_count,
+ { "Count", "moldudp64.count", FT_UINT16, BASE_DEC, NULL, 0,
+ "The number of messages contained in this packet.", HFILL }},
+
+ { &hf_moldudp64_msgblk,
+ { "Message Block", "moldudp64.msgblock", FT_NONE, BASE_NONE, NULL, 0,
+ "A message.", HFILL }},
+
+ { &hf_moldudp64_msglen,
+ { "Length", "moldudp64.msglen", FT_UINT16, BASE_DEC, NULL, 0,
+ "The length of this message.", HFILL }},
+
+ { &hf_moldudp64_msgseq,
+ { "Sequence", "moldudp64.msgseq", FT_UINT64, BASE_DEC, NULL, 0,
+ "The sequence number of this message.", HFILL }},
+
+ { &hf_moldudp64_msgdata,
+ { "Payload", "moldudp64.msgdata", FT_BYTES, BASE_NONE, NULL, 0,
+ "The payload data of this message.", HFILL }}
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_moldudp64,
+ &ett_moldudp64_msgblk
+ };
+
+ /* Register the protocol name and description */
+ proto_moldudp64 = proto_register_protocol("MoldUDP64",
+ "MoldUDP64", "moldudp64");
+
+ /* Required function calls to register the header fields and subtrees used */
+ proto_register_field_array(proto_moldudp64, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ /* Register preferences module */
+ moldudp64_module = prefs_register_protocol(proto_moldudp64,
+ proto_reg_handoff_moldudp64);
+
+ /* Register a sample port preference */
+ prefs_register_uint_preference(moldudp64_module, "udp.port", "MoldUDP64 UDP Port",
+ "MoldUDP64 UDP port to dissect on.",
+ 10, &pf_moldudp64_port);
+}
+
+
+void
+proto_reg_handoff_moldudp64(void)
+{
+ static gboolean initialized = FALSE;
+ static dissector_handle_t moldudp64_handle;
+ static int currentPort;
+
+ if (!initialized) {
+
+ moldudp64_handle = new_create_dissector_handle(dissect_moldudp64,
+ proto_moldudp64);
+ initialized = TRUE;
+ } else {
+
+ dissector_delete_uint("udp.port", currentPort, moldudp64_handle);
+ }
+
+ currentPort = pf_moldudp64_port;
+
+ dissector_add_uint("udp.port", currentPort, moldudp64_handle);
+
+}
+
+/*
+ * Editor modelines - http://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vi: set shiftwidth=4 tabstop=4 expandtab:
+ * :indentSize=4:tabSize=4:noTabs=true:
+ */
diff --git a/epan/dissectors/packet-mp2t.c b/epan/dissectors/packet-mp2t.c
index 347bbae35b..39e9e62607 100644
--- a/epan/dissectors/packet-mp2t.c
+++ b/epan/dissectors/packet-mp2t.c
@@ -190,11 +190,13 @@ static const value_string mp2t_pid_vals[] = {
{ 0, NULL }
};
+
+/* Values below according ETSI ETR 289 */
static const value_string mp2t_tsc_vals[] = {
{ 0, "Not scrambled" },
- { 1, "User-defined" },
- { 2, "User-defined" },
- { 3, "User-defined" },
+ { 1, "Reserved" },
+ { 2, "Packet scrambled with Even Key" },
+ { 3, "Packet scrambled with Odd Key" },
{ 0, NULL }
};
@@ -503,9 +505,9 @@ mp2t_get_packet_length(tvbuff_t *tvb, guint offset, packet_info *pinfo,
pkt_len = tvb_get_ntohs(len_tvb, offset + 2) + 6;
break;
case pid_pload_pes:
- pkt_len = tvb_get_ntohs(len_tvb, offset + 3);
+ pkt_len = tvb_get_ntohs(len_tvb, offset + 4);
if (pkt_len) /* A size of 0 means size not bounded */
- pkt_len += 2;
+ pkt_len += 6;
break;
case pid_pload_sect:
pkt_len = (tvb_get_ntohs(len_tvb, offset + 1) & 0xFFF) + 3;
@@ -778,7 +780,7 @@ mp2t_process_fragmented_payload(tvbuff_t *tvb, gint offset, guint remaining_len,
/* There are remaining bytes. Add them to the fragment list */
- if (frag_cur_pos + remaining_len >= frag_tot_len) {
+ if ((frag_tot_len && frag_cur_pos + remaining_len >= frag_tot_len) || (!frag_tot_len && pusi_flag)) {
mp2t_fragment_handle(tvb, offset, pinfo, tree, frag_id, frag_cur_pos, remaining_len, TRUE, pid_analysis->pload_type);
frag_id++;
fragmentation = FALSE;
@@ -965,7 +967,7 @@ dissect_tsp(tvbuff_t *tvb, volatile gint offset, packet_info *pinfo,
guint32 cc;
guint32 pusi_flag;
- /* guint8 pointer; */
+ guint32 tsc;
proto_item *ti = NULL;
proto_item *hi = NULL;
@@ -983,6 +985,7 @@ dissect_tsp(tvbuff_t *tvb, volatile gint offset, packet_info *pinfo,
pid = (header & MP2T_PID_MASK) >> MP2T_PID_SHIFT;
cc = (header & MP2T_CC_MASK) >> MP2T_CC_SHIFT;
+ tsc = (header & MP2T_TSC_MASK);
pusi_flag = (header & 0x00400000);
proto_item_append_text(ti, " PID=0x%x CC=%d", pid, cc);
col_set_str(pinfo->cinfo, COL_PROTOCOL, "MPEG TS");
@@ -999,12 +1002,6 @@ dissect_tsp(tvbuff_t *tvb, volatile gint offset, packet_info *pinfo,
afci = proto_tree_add_item( mp2t_header_tree, hf_mp2t_afc, tvb, offset, 4, ENC_BIG_ENDIAN);
proto_tree_add_item( mp2t_header_tree, hf_mp2t_cc, tvb, offset, 4, ENC_BIG_ENDIAN);
-
- /*
- if (pusi_flag)
- pointer = tvb_get_guint8(tvb, offset);
- */
-
afc = (header & MP2T_AFC_MASK) >> MP2T_AFC_SHIFT;
pid_analysis = get_pid_analysis(pid, conv);
@@ -1021,7 +1018,6 @@ dissect_tsp(tvbuff_t *tvb, volatile gint offset, packet_info *pinfo,
if (pid_analysis->pload_type == pid_pload_docsis && afc) {
/* DOCSIS packets should not have an adaptation field */
proto_item_append_text(afci, " (Invalid for DOCSIS packets, should be 0)");
- return;
}
if (pid_analysis->pload_type == pid_pload_null) {
@@ -1237,7 +1233,12 @@ dissect_tsp(tvbuff_t *tvb, volatile gint offset, packet_info *pinfo,
offset += payload_len;
}
- mp2t_process_fragmented_payload(tvb, offset, payload_len, pinfo, tree, mp2t_tree, pusi_flag, pid_analysis);
+ if (!tsc) {
+ mp2t_process_fragmented_payload(tvb, offset, payload_len, pinfo, tree, mp2t_tree, pusi_flag, pid_analysis);
+ } else {
+ /* Payload is scrambled */
+ col_set_str(pinfo->cinfo, COL_INFO, "Scrambled TS payload");
+ }
return;
}
@@ -1336,7 +1337,7 @@ proto_register_mp2t(void)
{ &hf_mp2t_analysis_skips, {
"TS Continuity Counter Skips", "mp2t.analysis.skips",
FT_UINT8, BASE_DEC, NULL, 0x0,
- "Missing TS frames accoding to CC counter values", HFILL
+ "Missing TS frames according to CC counter values", HFILL
} } ,
{ &hf_mp2t_analysis_drops, {
"Some frames dropped", "mp2t.analysis.drops",
diff --git a/epan/dissectors/packet-mp4ves.c b/epan/dissectors/packet-mp4ves.c
index e2a008b081..159fa11102 100644
--- a/epan/dissectors/packet-mp4ves.c
+++ b/epan/dissectors/packet-mp4ves.c
@@ -361,7 +361,6 @@ dissect_mp4ves_visual_object_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_t
*/
static const value_string mp4ves_aspect_ratio_info_vals[] = {
- { 0x0, "reserved" },
{ 0x0, "Forbidden" },
{ 0x1, "1:1 (Square)" },
{ 0x2, "12:11 (625-type for 4:3 picture)" },
@@ -903,7 +902,7 @@ proto_register_mp4ves(void)
},
{ &hf_mp4ves_start_code,
{ "Start code", "mp4ves.start_code",
- FT_UINT8, BASE_RANGE_STRING|BASE_HEX, RVALS(&mp4ves_startcode_vals), 0x0,
+ FT_UINT8, BASE_RANGE_STRING|BASE_HEX, RVALS(mp4ves_startcode_vals), 0x0,
NULL, HFILL }
},
{ &hf_mp4ves_vop_coding_type,
diff --git a/epan/dissectors/packet-mpeg-ca.c b/epan/dissectors/packet-mpeg-ca.c
new file mode 100644
index 0000000000..566bc3414e
--- /dev/null
+++ b/epan/dissectors/packet-mpeg-ca.c
@@ -0,0 +1,155 @@
+/* packet-mpeg-ca.c
+ * Routines for MPEG2 (ISO/ISO 13818-1) Conditional Access Table (CA) dissection
+ * Copyright 2012, Guy Martin <gmsoft@tuxicoman.be>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+#include <epan/dissectors/packet-mpeg-sect.h>
+
+#include "packet-mpeg-descriptor.h"
+
+static int proto_mpeg_ca = -1;
+static int hf_mpeg_ca_reserved = -1;
+static int hf_mpeg_ca_version_number = -1;
+static int hf_mpeg_ca_current_next_indicator = -1;
+static int hf_mpeg_ca_section_number = -1;
+static int hf_mpeg_ca_last_section_number = -1;
+
+static gint ett_mpeg_ca = -1;
+
+#define MPEG_CA_TID 0x01
+
+#define MPEG_CA_RESERVED_MASK 0xFFFFC0
+#define MPEG_CA_VERSION_NUMBER_MASK 0x00003E
+#define MPEG_CA_CURRENT_NEXT_INDICATOR_MASK 0x000001
+
+static const value_string mpeg_ca_cur_next_vals[] = {
+
+ { 0x0, "Not yet applicable" },
+ { 0x1, "Currently applicable" },
+ { 0x0, NULL }
+
+};
+
+static void
+dissect_mpeg_ca(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+
+ guint offset = 0, length = 0;
+
+ proto_item *ti = NULL;
+ proto_tree *mpeg_ca_tree = NULL;
+
+ /* The TVB should start right after the section_length in the Section packet */
+
+ col_clear(pinfo->cinfo, COL_INFO);
+ col_set_str(pinfo->cinfo, COL_INFO, "Conditional Access Table (CA)");
+
+ if (!tree)
+
+ return;
+
+ ti = proto_tree_add_item(tree, proto_mpeg_ca, tvb, offset, -1, ENC_NA);
+ mpeg_ca_tree = proto_item_add_subtree(ti, ett_mpeg_ca);
+
+ offset += packet_mpeg_sect_header(tvb, offset, mpeg_ca_tree, &length, NULL);
+ length -= 4;
+
+ proto_tree_add_item(mpeg_ca_tree, hf_mpeg_ca_reserved, tvb, offset, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mpeg_ca_tree, hf_mpeg_ca_version_number, tvb, offset, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mpeg_ca_tree, hf_mpeg_ca_current_next_indicator, tvb, offset, 3, ENC_BIG_ENDIAN);
+ offset += 3;
+
+ proto_tree_add_item(mpeg_ca_tree, hf_mpeg_ca_section_number, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(mpeg_ca_tree, hf_mpeg_ca_last_section_number, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ /* Parse all the programs */
+ while (offset < length)
+ offset += proto_mpeg_descriptor_dissect(tvb, offset, mpeg_ca_tree);
+
+ packet_mpeg_sect_crc(tvb, pinfo, mpeg_ca_tree, 0, offset);
+
+}
+
+
+void
+proto_register_mpeg_ca(void)
+{
+
+ static hf_register_info hf[] = {
+
+ { &hf_mpeg_ca_reserved, {
+ "Reserved", "mpeg_ca.reserved",
+ FT_UINT24, BASE_HEX, NULL, MPEG_CA_RESERVED_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_ca_version_number, {
+ "Version Number", "mpeg_ca.version",
+ FT_UINT24, BASE_HEX, NULL, MPEG_CA_VERSION_NUMBER_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_ca_current_next_indicator, {
+ "Current/Next Indicator", "mpeg_ca.cur_next_ind",
+ FT_UINT24, BASE_HEX, VALS(mpeg_ca_cur_next_vals), MPEG_CA_CURRENT_NEXT_INDICATOR_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_ca_section_number, {
+ "Section Number", "mpeg_ca.sect_num",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_ca_last_section_number, {
+ "Last Section Number", "mpeg_ca.last_sect_num",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ };
+
+ static gint *ett[] = {
+ &ett_mpeg_ca,
+ };
+
+ proto_mpeg_ca = proto_register_protocol("MPEG2 Conditional Access Table", "MPEG CA", "mpeg_ca");
+
+ proto_register_field_array(proto_mpeg_ca, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+}
+
+
+void proto_reg_handoff_mpeg_ca(void)
+{
+ dissector_handle_t mpeg_ca_handle;
+
+ mpeg_ca_handle = create_dissector_handle(dissect_mpeg_ca, proto_mpeg_ca);
+ dissector_add_uint("mpeg_sect.tid", MPEG_CA_TID, mpeg_ca_handle);
+}
diff --git a/epan/dissectors/packet-mpeg-descriptor.c b/epan/dissectors/packet-mpeg-descriptor.c
new file mode 100644
index 0000000000..94442e9e2d
--- /dev/null
+++ b/epan/dissectors/packet-mpeg-descriptor.c
@@ -0,0 +1,3828 @@
+/* packet-mpeg-descriptor.c
+ * Routines for MPEG2 (ISO/ISO 13818-1 and co) descriptors
+ * Copyright 2012, Guy Martin <gmsoft@tuxicoman.be>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+#include <epan/packet.h>
+#include <epan/dissectors/packet-mpeg-sect.h>
+
+static int proto_mpeg_descriptor = -1;
+static int hf_mpeg_descriptor_tag = -1;
+static int hf_mpeg_descriptor_length = -1;
+static int hf_mpeg_descriptor_data = -1;
+static gint ett_mpeg_descriptor = -1;
+
+static const value_string mpeg_descriptor_tag_vals[] = {
+ /* From ISO/IEC 13818-1 */
+ { 0x00, "Reserved" },
+ { 0x01, "Reserved" },
+ { 0x02, "Video Stream Descriptor" },
+ { 0x03, "Audio Stream Descriptor" },
+ { 0x04, "Hierarchy Descriptor" },
+ { 0x05, "Registration Descriptor" },
+ { 0x06, "Data Stream Alignment Descriptor" },
+ { 0x07, "Target Background Grid Descriptor" },
+ { 0x08, "Video Window Descriptor" },
+ { 0x09, "CA Descriptor" },
+ { 0x0A, "ISO 639 Language Descriptor" },
+ { 0x0B, "System Clock Descriptor" },
+ { 0x0C, "Multiplex Buffer Utilization Descriptor" },
+ { 0x0D, "Copyright Descriptor" },
+ { 0x0E, "Maximum Bitrate Descriptor" },
+ { 0x0F, "Private Data Indicator Descriptor" },
+ { 0x10, "Smoothing Buffer Descriptor" },
+ { 0x11, "STD Descriptor" },
+ { 0x12, "IBP Descriptor" },
+ { 0x1B, "MPEG 4 Video Descriptor" },
+ { 0x1C, "MPEG 4 Audio Descriptor" },
+ { 0x1D, "IOD Descriptor" },
+ { 0x1E, "SL Descriptor" },
+ { 0x1F, "FMC Descriptor" },
+ { 0x20, "External ES ID Descriptor" },
+ { 0x21, "MuxCode Descriptor" },
+ { 0x22, "FmxBufferSize Descriptor" },
+ { 0x23, "MultiplexBuffer Descriptor" },
+ { 0x24, "Content Labeling Descriptor" },
+ { 0x25, "Metadata Pointer Descriptor" },
+ { 0x26, "Metadata Descriptor" },
+ { 0x27, "Metadata STD Descriptor" },
+ { 0x28, "AVC Video Descriptor" },
+ { 0x29, "IPMP Descriptor" },
+ { 0x2A, "AVC Timing and HRD Descriptor" },
+ { 0x2B, "MPEG2 AAC Descriptor" },
+ { 0x2C, "FlexMuxTiming Descriptor" },
+
+ /* From ETSI TR 101 202 */
+ { 0x13, "Carousel Identifier Descriptor" },
+ { 0x14, "Association Tag Descriptor" },
+ { 0x15, "Deferred Association Tag Descriptor" },
+
+ /* From ETSI EN 300 468 */
+ { 0x40, "Network Name Descriptor" },
+ { 0x41, "Service List Descriptor" },
+ { 0x42, "Stuffing Descriptor" },
+ { 0x43, "Satellite Delivery System Descriptor" },
+ { 0x44, "Cable Delivery System Descriptor" },
+ { 0x45, "VBI Data Descriptor" },
+ { 0x46, "VBI Teletext Descriptor" },
+ { 0x47, "Bouquet Name Descriptor" },
+ { 0x48, "Service Descriptor" },
+ { 0x49, "Country Availability Descriptor" },
+ { 0x4A, "Linkage Descriptor" },
+ { 0x4B, "NVOD Reference Descriptor" },
+ { 0x4C, "Time Shifted Service Descriptor" },
+ { 0x4D, "Short Event Descriptor" },
+ { 0x4E, "Extended Event Descriptor" },
+ { 0x4F, "Time Shifted Event Descriptor" },
+ { 0x50, "Component Descriptor" },
+ { 0x51, "Mosaic Descriptor" },
+ { 0x52, "Stream Identifier Descriptor" },
+ { 0x53, "CA Identifier Descriptor" },
+ { 0x54, "Content Descriptor" },
+ { 0x55, "Parent Rating Descriptor" },
+ { 0x56, "Teletext Descriptor" },
+ { 0x57, "Telephone Descriptor" },
+ { 0x58, "Local Time Offset Descriptor" },
+ { 0x59, "Subtitling Descriptor" },
+ { 0x5A, "Terrestrial Delivery System Descriptor" },
+ { 0x5B, "Multilingual Network Name Descriptor" },
+ { 0x5C, "Multilingual Bouquet Name Descriptor" },
+ { 0x5D, "Multilingual Service Name Descriptor" },
+ { 0x5E, "Multilingual Component Descriptor" },
+ { 0x5F, "Private Data Specifier Descriptor" },
+ { 0x60, "Service Move Descriptor" },
+ { 0x61, "Short Smoothing Buffer Descriptor" },
+ { 0x62, "Frequency List Descriptor" },
+ { 0x63, "Partial Transport Stream Descriptor" },
+ { 0x64, "Data Broadcast Descriptor" },
+ { 0x65, "Scrambling Descriptor" },
+ { 0x66, "Data Broadcast ID Descriptor" },
+ { 0x67, "Transport Stream Descriptor" },
+ { 0x68, "DSNG Descriptor" },
+ { 0x69, "PDC Descriptor" },
+ { 0x6A, "AC-3 Descriptor" },
+ { 0x6B, "Ancillary Data Descriptor" },
+ { 0x6C, "Cell List Descriptor" },
+ { 0x6D, "Cell Frequency Link Descriptor" },
+ { 0x6E, "Announcement Support Descriptor" },
+ { 0x6F, "Application Signalling Descriptor" },
+ { 0x70, "Adaptation Field Data Descriptor" },
+ { 0x71, "Service Identifier Descriptor" },
+ { 0x72, "Service Availability Descriptor" },
+ { 0x73, "Default Authority Descriptor" },
+ { 0x74, "Related Content Descriptor" },
+ { 0x75, "TVA ID Descriptor" },
+ { 0x76, "Content Identifier Descriptor" },
+ { 0x77, "Time Slice FEC Identifier Descriptor" },
+ { 0x78, "ECM Repetition Rate Descriptor" },
+ { 0x79, "S2 Satellite Delivery System Descriptor" },
+ { 0x7A, "Enhanced AC-3 Descriptor" },
+ { 0x7B, "DTS Descriptor" },
+ { 0x7C, "AAC Descriptor" },
+ { 0x7D, "XAIT Content Location Descriptor" },
+ { 0x7E, "FTA Content Management Descriptor" },
+ { 0x7F, "Extension Descriptor" },
+
+ /* From ETSI EN 301 790 */
+ { 0xA0, "Network Layer Info Descriptor" },
+ { 0xA1, "Correction Message Descriptor" },
+ { 0xA2, "Logon Initialize Descriptor" },
+ { 0xA3, "ACQ Assign Descriptor" },
+ { 0xA4, "SYNC Assign Descriptor" },
+ { 0xA5, "Encrypted Logon ID Descriptor" },
+ { 0xA6, "Echo Value Descriptor" },
+ { 0xA7, "RCS Content Descriptor" },
+ { 0xA8, "Satellite Forward Link Descriptor" },
+ { 0xA9, "Satellite Return Link Descriptor" },
+ { 0xAA, "Table Update Descriptor" },
+ { 0xAB, "Contention Control Descriptor" },
+ { 0xAC, "Correction Control Descriptor" },
+ { 0xAD, "Forward Interaction Path Descriptor" },
+ { 0xAE, "Return Interaction Path Descriptor" },
+ { 0xAf, "Connection Control Descriptor" },
+ { 0xB0, "Mobility Control Descriptor" },
+ { 0xB1, "Correction Message Extension Descriptor" },
+ { 0xB2, "Return Transmission Modes Descriptor" },
+ { 0xB3, "Mesh Logon Initialize Descriptor" },
+ { 0xB5, "Implementation Type Descriptor" },
+ { 0xB6, "LL FEC Identifier Descriptor" },
+
+ { 0x00, NULL}
+};
+
+/* 0x02 Video Stream Descriptor */
+static int hf_mpeg_descr_video_stream_multiple_frame_rate_flag = -1;
+static int hf_mpeg_descr_video_stream_frame_rate_code = -1;
+static int hf_mpeg_descr_video_stream_mpeg1_only_flag = -1;
+static int hf_mpeg_descr_video_stream_constrained_parameter_flag = -1;
+static int hf_mpeg_descr_video_stream_still_picture_flag = -1;
+static int hf_mpeg_descr_video_stream_profile_and_level_indication = -1;
+static int hf_mpeg_descr_video_stream_chroma_format = -1;
+static int hf_mpeg_descr_video_stream_frame_rate_extension_flag = -1;
+static int hf_mpeg_descr_video_stream_reserved = -1;
+
+#define MPEG_DESCR_VIDEO_STREAM_MULTIPLE_FRAME_RATE_FLAG_MASK 0x80
+#define MPEG_DESCR_VIDEO_STREAM_FRAME_RATE_CODE_MASK 0x78
+#define MPEG_DESCR_VIDEO_STREAM_MPEG1_ONLY_FLAG_MASK 0x04
+#define MPEG_DESCR_VIDEO_STREAM_CONSTRAINED_PARAMETER_FLAG_MASK 0x02
+#define MPEG_DESCR_VIDEO_STREAM_STILL_PICTURE_FLAG_MASK 0x01
+#define MPEG_DESCR_VIDEO_STREAM_CHROMA_FORMAT_MASK 0xC0
+#define MPEG_DESCR_VIDEO_STREAM_FRAME_RATE_EXTENSION_FLAG_MASK 0x20
+#define MPEG_DESCR_VIDEO_STREAM_RESERVED_MASK 0x1F
+
+static const value_string mpeg_descr_video_stream_multiple_frame_rate_flag_vals[] = {
+ { 0x00, "Single frame rate present" },
+ { 0x01, "Multiple frame rate present" },
+
+ { 0x00, NULL }
+};
+
+static void
+proto_mpeg_descriptor_dissect_video_stream(tvbuff_t *tvb, guint offset, proto_tree *tree)
+{
+
+ guint8 mpeg1_only_flag = 0;
+
+ mpeg1_only_flag = tvb_get_guint8(tvb, offset) & MPEG_DESCR_VIDEO_STREAM_MPEG1_ONLY_FLAG_MASK;
+ proto_tree_add_item(tree, hf_mpeg_descr_video_stream_multiple_frame_rate_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_video_stream_frame_rate_code, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_video_stream_mpeg1_only_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_video_stream_constrained_parameter_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_video_stream_still_picture_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ offset++;
+
+ if (mpeg1_only_flag == 0) {
+
+ proto_tree_add_item(tree, hf_mpeg_descr_video_stream_profile_and_level_indication, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_video_stream_chroma_format, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_video_stream_frame_rate_extension_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_video_stream_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
+ }
+}
+
+/* 0x03 Audio Stream Descriptor */
+static int hf_mpeg_descr_audio_stream_free_format_flag = -1;
+static int hf_mpeg_descr_audio_stream_id = -1;
+static int hf_mpeg_descr_audio_stream_layer = -1;
+static int hf_mpeg_descr_audio_stream_variable_rate_audio_indicator = -1;
+static int hf_mpeg_descr_audio_stream_reserved = -1;
+
+#define MPEG_DESCR_AUDIO_STREAM_FREE_FORMAT_FLAG_MASK 0x80
+#define MPEG_DESCR_AUDIO_STREAM_ID_MASK 0x40
+#define MPEG_DESCR_AUDIO_STREAM_LAYER_MASK 0x30
+#define MPEG_DESCR_AUDIO_STREAM_VARIABLE_RATE_AUDIO_INDICATOR_MASK 0x08
+#define MPEG_DESCR_AUDIO_STREAM_RESERVED_MASK 0x07
+
+static const value_string mpeg_descr_audio_stream_free_format_flag_vals[] = {
+ { 0x00, "bitrate_index is not 0" },
+ { 0x01, "One more more audio frame has bitrate_index = 0" },
+
+ { 0x00, NULL }
+};
+
+static const value_string mpeg_descr_audio_stream_id_vals[] = {
+ { 0x00, "ID not set to 1 in all the frames" },
+ { 0x01, "ID set to 1 in all the frames" },
+
+ { 0x00, NULL }
+};
+
+static const value_string mpeg_descr_audio_stream_variable_rate_audio_indicator_vals[] = {
+ { 0x00, "Constant bitrate" },
+ { 0x01, "Variable bitrate" },
+
+ { 0x00, NULL }
+
+};
+
+static void
+proto_mpeg_descriptor_dissect_audio_stream(tvbuff_t *tvb, guint offset, proto_tree *tree)
+{
+ proto_tree_add_item(tree, hf_mpeg_descr_audio_stream_free_format_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_audio_stream_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_audio_stream_layer, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_audio_stream_variable_rate_audio_indicator, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_audio_stream_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
+}
+
+/* 0x06 Data Stream Alignment Descriptor */
+static int hf_mpeg_descr_data_stream_alignment = -1;
+
+static const value_string mpeg_descr_data_stream_alignment_vals[] = {
+ { 0x00, "Reserved" },
+ { 0x01, "Slice, or video access unit" },
+ { 0x02, "Video access unit" },
+ { 0x03, "GOP, or SEQ" },
+ { 0x04, "SEQ" },
+
+ { 0x00, NULL }
+};
+
+static void
+proto_mpeg_descriptor_dissect_data_stream_alignment(tvbuff_t *tvb, guint offset, proto_tree *tree)
+{
+ proto_tree_add_item(tree, hf_mpeg_descr_data_stream_alignment, tvb, offset, 1, ENC_BIG_ENDIAN);
+}
+
+/* 0x09 CA Descriptor */
+static int hf_mpeg_descr_ca_system_id = -1;
+static int hf_mpeg_descr_ca_reserved = -1;
+static int hf_mpeg_descr_ca_pid = -1;
+static int hf_mpeg_descr_ca_private = -1;
+
+#define MPEG_DESCR_CA_RESERVED_MASK 0xE000
+#define MPEG_DESCR_CA_PID_MASK 0x1FFF
+
+static void
+proto_mpeg_descriptor_dissect_ca(tvbuff_t *tvb, guint offset, guint8 len, proto_tree *tree)
+{
+ proto_tree_add_item(tree, hf_mpeg_descr_ca_system_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_ca_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_ca_pid, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ if (len > 4)
+ proto_tree_add_item(tree, hf_mpeg_descr_ca_private, tvb, offset, len - 4, ENC_NA);
+}
+
+
+/* 0x0A ISO 639 Language Descriptor */
+static int hf_mpeg_descr_iso639_lang = -1;
+static int hf_mpeg_descr_iso639_type = -1;
+
+static const value_string mpeg_descr_iso639_type_vals[] = {
+ { 0x00, "Undefined" },
+ { 0x01, "Clean Effects" },
+ { 0x02, "Hearing Impaired" },
+ { 0x03, "Visual Impaired Comentary" },
+
+ { 0x00, NULL }
+};
+
+static void
+proto_mpeg_descriptor_dissect_iso639(tvbuff_t *tvb, guint offset, guint8 len, proto_tree *tree)
+{
+ if (len > 1)
+ proto_tree_add_item(tree, hf_mpeg_descr_iso639_lang, tvb, offset, len - 1, ENC_ASCII|ENC_NA);
+ offset += len - 1;
+ proto_tree_add_item(tree, hf_mpeg_descr_iso639_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+}
+
+/* 0x0B System Clock Descriptor */
+static int hf_mpeg_descr_system_clock_external_clock_reference_indicator = -1;
+static int hf_mpeg_descr_system_clock_reserved1 = -1;
+static int hf_mpeg_descr_system_clock_accuracy_integer = -1;
+static int hf_mpeg_descr_system_clock_accuracy_exponent = -1;
+static int hf_mpeg_descr_system_clock_reserved2 = -1;
+
+#define MPEG_DESCR_SYSTEM_CLOCK_EXTERNAL_CLOCK_REFERENCE_INDICATOR_MASK 0x80
+#define MPEG_DESCR_SYSTEM_CLOCK_RESERVED1_MASK 0x40
+#define MPEG_DESCR_SYSTEM_CLOCK_ACCURACY_INTEGER_MASK 0x3F
+#define MPEG_DESCR_SYSTEM_CLOCK_ACCURACY_EXPONENT_MASK 0xE0
+#define MPEG_DESCR_SYSTEM_CLOCK_RESERVED2_MASK 0x1F
+
+static void
+proto_mpeg_descriptor_dissect_system_clock(tvbuff_t *tvb, guint offset, proto_tree *tree)
+{
+ proto_tree_add_item(tree, hf_mpeg_descr_system_clock_external_clock_reference_indicator, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_system_clock_reserved1, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_system_clock_accuracy_integer, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_system_clock_accuracy_exponent, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_system_clock_reserved2, tvb, offset, 1, ENC_BIG_ENDIAN);
+}
+
+/* 0x0E Maximum Bitrate Descriptor */
+static int hf_mpeg_descr_max_bitrate_reserved = -1;
+static int hf_mpeg_descr_max_bitrate = -1;
+
+#define MPEG_DESCR_MAX_BITRATE_RESERVED_MASK 0xC00000
+#define MPEG_DESCR_MAX_BITRATE_MASK 0x3FFFFF
+
+static void
+proto_mpeg_descriptor_dissect_max_bitrate(tvbuff_t *tvb, guint offset, proto_tree *tree)
+{
+ proto_item *rate_item = NULL;
+ guint32 rate = 0;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_max_bitrate_reserved, tvb, offset, 3, ENC_BIG_ENDIAN);
+ rate = tvb_get_ntoh24(tvb, offset) & MPEG_DESCR_MAX_BITRATE_MASK;
+ rate_item = proto_tree_add_item(tree, hf_mpeg_descr_max_bitrate, tvb, offset, 3, ENC_BIG_ENDIAN);
+ proto_item_append_text(rate_item, " (%u bytes/sec)", rate * 50);
+}
+
+/* 0x10 Smoothing Buffer Descriptor */
+static int hf_mpeg_descr_smoothing_buffer_reserved1 = -1;
+static int hf_mpeg_descr_smoothing_buffer_leak_rate = -1;
+static int hf_mpeg_descr_smoothing_buffer_reserved2 = -1;
+static int hf_mpeg_descr_smoothing_buffer_size = -1;
+
+#define MPEG_DESCR_SMOOTHING_BUFFER_RESERVED1_MASK 0xC00000
+#define MPEG_DESCR_SMOOTHING_BUFFER_LEAK_RATE_MASK 0x3FFFFF
+#define MPEG_DESCR_SMOOTHING_BUFFER_RESERVED2_MASK 0xC00000
+#define MPEG_DESCR_SMOOTHING_BUFFER_SIZE_MASK 0x3FFFFF
+
+static void
+proto_mpeg_descriptor_dissect_smoothing_buffer(tvbuff_t *tvb, guint offset, proto_tree *tree)
+{
+ proto_item *leak_rate_item = NULL;
+ guint32 leak_rate = 0;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_smoothing_buffer_reserved1, tvb, offset, 3, ENC_BIG_ENDIAN);
+ leak_rate = tvb_get_ntoh24(tvb, offset) & MPEG_DESCR_SMOOTHING_BUFFER_LEAK_RATE_MASK;
+ leak_rate_item = proto_tree_add_item(tree, hf_mpeg_descr_smoothing_buffer_leak_rate, tvb, offset, 3, ENC_BIG_ENDIAN);
+ proto_item_append_text(leak_rate_item, " (%u bytes/sec)", leak_rate * 400 / 8);
+ offset += 3;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_smoothing_buffer_reserved2, tvb, offset, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_smoothing_buffer_size, tvb, offset, 3, ENC_BIG_ENDIAN);
+
+}
+
+/* 0x11 STD Descriptor */
+static int hf_mpeg_descr_std_reserved = -1;
+static int hf_mpeg_descr_std_leak_valid = -1;
+
+#define MPEG_DESCR_STD_RESERVED_MASK 0xFE
+#define MPEG_DESCR_STD_LEAK_VALID_MASK 0x01
+
+static void
+proto_mpeg_descriptor_dissect_std(tvbuff_t *tvb, guint offset, proto_tree *tree)
+{
+ proto_tree_add_item(tree, hf_mpeg_descr_std_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_std_leak_valid, tvb, offset, 1, ENC_BIG_ENDIAN);
+}
+
+/* 0x13 Carousel Identifier Descriptor */
+static int hf_mpeg_descr_carousel_identifier_id = -1;
+static int hf_mpeg_descr_carousel_identifier_format_id = -1;
+static int hf_mpeg_descr_carousel_identifier_module_version = -1;
+static int hf_mpeg_descr_carousel_identifier_module_id = -1;
+static int hf_mpeg_descr_carousel_identifier_block_size = -1;
+static int hf_mpeg_descr_carousel_identifier_module_size = -1;
+static int hf_mpeg_descr_carousel_identifier_compression_method = -1;
+static int hf_mpeg_descr_carousel_identifier_original_size = -1;
+static int hf_mpeg_descr_carousel_identifier_timeout = -1;
+static int hf_mpeg_descr_carousel_identifier_object_key_len = -1;
+static int hf_mpeg_descr_carousel_identifier_object_key_data = -1;
+static int hf_mpeg_descr_carousel_identifier_private = -1;
+
+static const value_string mpeg_descr_carousel_identifier_format_id_vals[] = {
+ { 0x00, "No Format Specifier" },
+ { 0x01, "Format Specifier" },
+
+ { 0, NULL }
+};
+
+static void
+proto_mpeg_descriptor_dissect_carousel_identifier(tvbuff_t *tvb, guint offset, guint8 len, proto_tree *tree)
+{
+ guint8 key_len = 0, format_id = 0;
+ guint private_len = 0;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_carousel_identifier_id, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ format_id = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_mpeg_descr_carousel_identifier_format_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ if (format_id == 0x01) {
+ proto_tree_add_item(tree, hf_mpeg_descr_carousel_identifier_module_version, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_carousel_identifier_module_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_carousel_identifier_block_size, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_carousel_identifier_module_size, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_carousel_identifier_compression_method, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_carousel_identifier_original_size, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_carousel_identifier_timeout, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ key_len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_mpeg_descr_carousel_identifier_object_key_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_carousel_identifier_object_key_data, tvb, offset, key_len, ENC_NA);
+ offset += key_len;
+
+ if (len > 20 + key_len)
+ private_len = len - 20 - key_len;
+
+ } else {
+ if (len > 5)
+ private_len = len - 5;
+ }
+
+ if (private_len)
+ proto_tree_add_item(tree, hf_mpeg_descr_carousel_identifier_private, tvb, offset, private_len, ENC_NA);
+
+}
+
+/* 0x14 Association Tag Descriptor */
+static int hf_mpeg_descr_association_tag = -1;
+static int hf_mpeg_descr_association_tag_use = -1;
+static int hf_mpeg_descr_association_tag_selector_len = -1;
+static int hf_mpeg_descr_association_tag_transaction_id = -1;
+static int hf_mpeg_descr_association_tag_timeout = -1;
+static int hf_mpeg_descr_association_tag_selector_bytes = -1;
+static int hf_mpeg_descr_association_tag_private_bytes = -1;
+
+static void
+proto_mpeg_descriptor_dissect_association_tag(tvbuff_t *tvb, guint offset, guint8 len, proto_tree *tree)
+{
+ guint end = offset + len;
+ guint16 use = 0;
+ guint8 selector_len = 0;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_association_tag, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ use = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_item(tree, hf_mpeg_descr_association_tag_use, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ selector_len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_mpeg_descr_association_tag_selector_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset ++;
+
+ if (use == 0x00) {
+ if (selector_len != 8)
+ return;
+ proto_tree_add_item(tree, hf_mpeg_descr_association_tag_transaction_id, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_association_tag_timeout, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ } else {
+ proto_tree_add_item(tree, hf_mpeg_descr_association_tag_selector_bytes, tvb, offset, selector_len, ENC_NA);
+ offset += selector_len;
+ }
+
+ if (offset < end)
+ proto_tree_add_item(tree, hf_mpeg_descr_association_tag_private_bytes, tvb, offset, end - offset, ENC_NA);
+}
+
+/* 0x28 AVC Video Descriptor */
+static int hf_mpeg_descr_avc_vid_profile_idc = -1;
+static int hf_mpeg_descr_avc_vid_constraint_set0_flag = -1;
+static int hf_mpeg_descr_avc_vid_constraint_set1_flag = -1;
+static int hf_mpeg_descr_avc_vid_constraint_set2_flag = -1;
+static int hf_mpeg_descr_avc_vid_compatible_flags = -1;
+static int hf_mpeg_descr_avc_vid_level_idc = -1;
+static int hf_mpeg_descr_avc_vid_still_present = -1;
+static int hf_mpeg_descr_avc_vid_24h_picture_flag = -1;
+static int hf_mpeg_descr_avc_vid_reserved = -1;
+
+#define MPEG_DESCR_AVC_VID_CONSTRAINT_SET0_FLAG_MASK 0x80
+#define MPEG_DESCR_AVC_VID_CONSTRAINT_SET1_FLAG_MASK 0x40
+#define MPEG_DESCR_AVC_VID_CONSTRAINT_SET2_FLAG_MASK 0x20
+#define MPEG_DESCR_AVC_VID_COMPATIBLE_FLAGS_MASK 0x1F
+#define MPEG_DESCR_AVC_VID_STILL_PRESENT_MASK 0x80
+#define MPEG_DESCR_AVC_VID_24H_PICTURE_FLAG_MASK 0x40
+#define MPEG_DESCR_AVC_VID_RESERVED_MASK 0x3F
+
+static void
+proto_mpeg_descriptor_dissect_avc_vid(tvbuff_t *tvb, guint offset, proto_tree *tree)
+{
+ proto_tree_add_item(tree, hf_mpeg_descr_avc_vid_profile_idc, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_avc_vid_constraint_set0_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_avc_vid_constraint_set1_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_avc_vid_constraint_set2_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_avc_vid_compatible_flags, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_avc_vid_level_idc, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_avc_vid_still_present, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_avc_vid_24h_picture_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_avc_vid_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
+}
+
+/* 0x40 Network Name Descriptor */
+static int hf_mpeg_descr_network_name_descriptor = -1;
+
+static void
+proto_mpeg_descriptor_dissect_network_name(tvbuff_t *tvb, guint offset, guint8 len, proto_tree *tree)
+{
+ proto_tree_add_item(tree, hf_mpeg_descr_network_name_descriptor, tvb, offset, len, ENC_ASCII|ENC_NA);
+}
+
+/* 0x41 Service List Descriptor */
+static int hf_mpeg_descr_service_list_id = -1;
+static int hf_mpeg_descr_service_list_type = -1;
+
+static gint ett_mpeg_descriptor_service_list = -1;
+
+static void
+proto_mpeg_descriptor_dissect_service_list(tvbuff_t *tvb, guint offset, guint8 len, proto_tree *tree)
+{
+ guint end = offset + len;
+ guint16 svc_id;
+ proto_item *si = NULL;
+ proto_tree *svc_tree = NULL;
+
+
+ while (offset < end) {
+ svc_id = tvb_get_ntohs(tvb, offset);
+
+ si = proto_tree_add_text(tree, tvb, offset, 3, "Service 0x%02x", svc_id);
+ svc_tree = proto_item_add_subtree(si, ett_mpeg_descriptor_service_list);
+
+ proto_tree_add_item(svc_tree, hf_mpeg_descr_service_list_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(svc_tree, hf_mpeg_descr_service_list_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ }
+}
+
+/* 0x42 Stuffing Descriptor */
+static int hf_mpeg_descr_stuffing = -1;
+
+static void
+proto_mpeg_descriptor_stuffing(tvbuff_t *tvb, guint offset, guint8 len, proto_tree *tree)
+{
+ proto_tree_add_item(tree, hf_mpeg_descr_stuffing, tvb, offset, len, ENC_NA);
+}
+
+/* 0x43 Satellite Delivery System Descriptor */
+static int hf_mpeg_descr_satellite_delivery_frequency = -1;
+static int hf_mpeg_descr_satellite_delivery_orbital_position = -1;
+static int hf_mpeg_descr_satellite_delivery_west_east_flag = -1;
+static int hf_mpeg_descr_satellite_delivery_polarization = -1;
+static int hf_mpeg_descr_satellite_delivery_roll_off = -1;
+static int hf_mpeg_descr_satellite_delivery_zero = -1;
+static int hf_mpeg_descr_satellite_delivery_modulation_system = -1;
+static int hf_mpeg_descr_satellite_delivery_modulation_type = -1;
+static int hf_mpeg_descr_satellite_delivery_symbol_rate = -1;
+static int hf_mpeg_descr_satellite_delivery_fec_inner = -1;
+
+#define MPEG_DESCR_SATELLITE_DELIVERY_WEST_EAST_FLAG_MASK 0x80
+#define MPEG_DESCR_SATELLITE_DELIVERY_POLARIZATION_MASK 0x60
+#define MPEG_DESCR_SATELLITE_DELIVERY_ROLL_OFF_MASK 0x18
+#define MPEG_DESCR_SATELLITE_DELIVERY_ZERO_MASK 0x18
+#define MPEG_DESCR_SATELLITE_DELIVERY_MODULATION_SYSTEM_MASK 0x06
+#define MPEG_DESCR_SATELLITE_DELIVERY_MODULATION_TYPE_MASK 0x01
+#define MPEG_DESCR_SATELLITE_DELIVERY_FEC_INNER_MASK 0x0F
+
+static const value_string mpeg_descr_satellite_delivery_west_east_flag_vals[] = {
+ { 0x0, "West" },
+ { 0x1, "East" },
+
+ { 0x0, NULL }
+};
+
+static const value_string mpeg_descr_satellite_delivery_polarization_vals[] = {
+ { 0x0, "Linear - Horizontal" },
+ { 0x1, "Linear - Vertical" },
+ { 0x2, "Circular - Left" },
+ { 0x3, "Circular - Right" },
+
+ { 0x0, NULL }
+};
+
+static const value_string mpeg_descr_satellite_delivery_roll_off_vals[] = {
+ { 0x0, "alpha = 0,35" },
+ { 0x1, "alpha = 0,25" },
+ { 0x2, "alpha = 0,20" },
+
+ { 0x0, NULL }
+};
+
+static const value_string mpeg_descr_satellite_delivery_modulation_system_vals[] = {
+ { 0x0, "DVB-S" },
+ { 0x1, "DVB-S2" },
+
+ { 0x0, NULL }
+};
+
+static const value_string mpeg_descr_satellite_delivery_modulation_type_vals[] = {
+ { 0x0, "Auto" },
+ { 0x1, "QPSK" },
+ { 0x2, "8PSK" },
+ { 0x3, "16-QAM (n/a for DVB-S2)" },
+
+ { 0x0, NULL }
+};
+
+static const value_string mpeg_descr_satellite_delivery_fec_inner_vals[] = {
+ { 0x0, "Not defined" },
+ { 0x1, "1/2 convolutional code rate" },
+ { 0x2, "2/3 convolutional code rate" },
+ { 0x3, "3/4 convolutional code rate" },
+ { 0x4, "5/6 convolutional code rate" },
+ { 0x5, "7/8 convolutional code rate" },
+ { 0x6, "8/9 convolutional code rate" },
+ { 0x7, "3/5 convolutional code rate" },
+ { 0x8, "4/5 convolutional code rate" },
+ { 0x9, "9/10 convolutional code rate" },
+ { 0xF, "No convolutional coding" },
+
+ { 0x0, NULL }
+};
+
+static void
+proto_mpeg_descriptor_dissect_satellite_delivery(tvbuff_t *tvb, guint offset, proto_tree *tree)
+{
+
+ guint32 frequency = 0, symbol_rate = 0;
+ guint16 orbital_position = 0;
+ guint8 modulation_system = 0;
+
+ frequency = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_string_format_value(tree, hf_mpeg_descr_satellite_delivery_frequency, tvb, offset, 4,
+ "Frequency", "%2u%01u,%01u%02u%02u GHz",
+ MPEG_SECT_BCD44_TO_DEC(frequency >> 24),
+ MPEG_SECT_BCD44_TO_DEC(frequency >> 16) / 10,
+ MPEG_SECT_BCD44_TO_DEC(frequency >> 16) % 10,
+ MPEG_SECT_BCD44_TO_DEC(frequency >> 8),
+ MPEG_SECT_BCD44_TO_DEC(frequency));
+ offset += 4;
+
+ orbital_position = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_string_format_value(tree, hf_mpeg_descr_satellite_delivery_orbital_position, tvb, offset, 2,
+ "Orbital Position", "%2u%1u,%1u degrees",
+ MPEG_SECT_BCD44_TO_DEC(orbital_position >> 8),
+ MPEG_SECT_BCD44_TO_DEC(orbital_position) / 10,
+ MPEG_SECT_BCD44_TO_DEC(orbital_position) % 10);
+ offset += 2;
+
+ modulation_system = tvb_get_guint8(tvb, offset) & MPEG_DESCR_SATELLITE_DELIVERY_MODULATION_SYSTEM_MASK;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_satellite_delivery_west_east_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_satellite_delivery_polarization, tvb, offset, 1, ENC_BIG_ENDIAN);
+ if (modulation_system)
+ proto_tree_add_item(tree, hf_mpeg_descr_satellite_delivery_roll_off, tvb, offset, 1, ENC_BIG_ENDIAN);
+ else
+ proto_tree_add_item(tree, hf_mpeg_descr_satellite_delivery_zero, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_satellite_delivery_modulation_system, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_satellite_delivery_modulation_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ symbol_rate = tvb_get_ntohl(tvb, offset) >> 4;
+ proto_tree_add_string_format_value(tree, hf_mpeg_descr_satellite_delivery_symbol_rate, tvb, offset, 4,
+ "Symbol Rate", "%2u%02u%02u%01u,%01u KSymbol/s",
+ MPEG_SECT_BCD44_TO_DEC(symbol_rate >> 24),
+ MPEG_SECT_BCD44_TO_DEC(symbol_rate >> 16),
+ MPEG_SECT_BCD44_TO_DEC(symbol_rate >> 8),
+ MPEG_SECT_BCD44_TO_DEC(symbol_rate) / 10,
+ MPEG_SECT_BCD44_TO_DEC(symbol_rate) % 10);
+
+ offset += 3;
+ proto_tree_add_item(tree, hf_mpeg_descr_satellite_delivery_fec_inner, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+}
+
+/* 0x44 Cable Delivery System Descriptor */
+static int hf_mpeg_descr_cable_delivery_frequency = -1;
+static int hf_mpeg_descr_cable_delivery_reserved = -1;
+static int hf_mpeg_descr_cable_delivery_fec_outer = -1;
+static int hf_mpeg_descr_cable_delivery_modulation = -1;
+static int hf_mpeg_descr_cable_delivery_symbol_rate = -1;
+static int hf_mpeg_descr_cable_delivery_fec_inner = -1;
+
+#define MPEG_DESCR_CABLE_DELIVERY_RESERVED_MASK 0xFFF0
+#define MPEG_DESCR_CABLE_DELIVERY_FEC_OUTER_MASK 0x000F
+#define MPEG_DESCR_CABLE_DELIVERY_FEC_INNER_MASK 0x0F
+
+static const value_string mpeg_descr_cable_delivery_fec_outer_vals[] = {
+ { 0x0, "Not defined" },
+ { 0x1, "No outer FEC coding" },
+ { 0x2, "RS(204/188)" },
+
+ { 0x0, NULL }
+};
+
+static const value_string mpeg_descr_cable_delivery_modulation_vals[] = {
+ { 0x00, "Not defined" },
+ { 0x01, "16-QAM" },
+ { 0x02, "32-QAM" },
+ { 0x03, "64-QAM" },
+ { 0x04, "128-QAM" },
+ { 0x05, "256-QAM" },
+
+ { 0x0, NULL }
+};
+
+static const value_string mpeg_descr_cable_delivery_fec_inner_vals[] = {
+ { 0x0, "Not defined" },
+ { 0x1, "1/2 convolutional code rate" },
+ { 0x2, "2/3 convolutional code rate" },
+ { 0x3, "3/4 convolutional code rate" },
+ { 0x4, "5/6 convolutional code rate" },
+ { 0x5, "7/8 convolutional code rate" },
+ { 0x6, "8/9 convolutional code rate" },
+ { 0x7, "3/5 convolutional code rate" },
+ { 0x8, "4/5 convolutional code rate" },
+ { 0x9, "9/10 convolutional code rate" },
+ { 0xF, "No convolutional coding" },
+
+ { 0x0, NULL }
+};
+
+static void
+proto_mpeg_descriptor_dissect_cable_delivery(tvbuff_t *tvb, guint offset, proto_tree *tree) {
+
+ guint32 frequency = 0, symbol_rate = 0;
+
+ frequency = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_string_format_value(tree, hf_mpeg_descr_cable_delivery_frequency, tvb, offset, 4,
+ "Frequency", "%2u%02u,%02u%02u MHz",
+ MPEG_SECT_BCD44_TO_DEC(frequency >> 24),
+ MPEG_SECT_BCD44_TO_DEC(frequency >> 16),
+ MPEG_SECT_BCD44_TO_DEC(frequency >> 8),
+ MPEG_SECT_BCD44_TO_DEC(frequency));
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_cable_delivery_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_cable_delivery_fec_outer, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_cable_delivery_modulation, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ symbol_rate = tvb_get_ntohl(tvb, offset) >> 4;
+ proto_tree_add_string_format_value(tree, hf_mpeg_descr_cable_delivery_symbol_rate, tvb, offset, 4,
+ "Symbol Rate", "%2u%02u%02u%01u,%01u KSymbol/s",
+ MPEG_SECT_BCD44_TO_DEC(symbol_rate >> 24),
+ MPEG_SECT_BCD44_TO_DEC(symbol_rate >> 16),
+ MPEG_SECT_BCD44_TO_DEC(symbol_rate >> 8),
+ MPEG_SECT_BCD44_TO_DEC(symbol_rate) / 10,
+ MPEG_SECT_BCD44_TO_DEC(symbol_rate) % 10);
+
+ offset += 3;
+ proto_tree_add_item(tree, hf_mpeg_descr_cable_delivery_fec_inner, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+
+}
+
+/* 0x45 VBI Data Descriptor */
+static int hf_mpeg_descr_vbi_data_service_id = -1;
+static int hf_mpeg_descr_vbi_data_descr_len = -1;
+static int hf_mpeg_descr_vbi_data_reserved1 = -1;
+static int hf_mpeg_descr_vbi_data_field_parity = -1;
+static int hf_mpeg_descr_vbi_data_line_offset = -1;
+static int hf_mpeg_descr_vbi_data_reserved2 = -1;
+
+#define MPEG_DESCR_VBI_DATA_RESERVED1_MASK 0xC0
+#define MPEG_DESCR_VBI_DATA_FIELD_PARITY_MASK 0x20
+#define MPEG_DESCR_VBI_DATA_LINE_OFFSET_MASK 0x1F
+
+static gint ett_mpeg_descriptor_vbi_data_service = -1;
+
+static const value_string mpeg_descr_vbi_data_service_id_vals[] = {
+
+ { 0x00, "Reserved" },
+ { 0x01, "EBU Teletext" },
+ { 0x02, "Inverted Teletext" },
+ { 0x03, "Reserved" },
+ { 0x04, "VPS" },
+ { 0x05, "WSS" },
+ { 0x06, "Closed Captioning" },
+ { 0x07, "Monochrome 4:2:2 samples" },
+
+ { 0, NULL }
+};
+
+static const value_string mpeg_descr_vbi_data_field_parity_vals[] = {
+ { 0x00, "Second (even) field of frame" },
+ { 0x01, "First (odd) field of frame" },
+
+ { 0, NULL }
+};
+
+static void
+proto_mpeg_descriptor_dissect_vbi_data(tvbuff_t *tvb, guint offset, guint8 len, proto_tree *tree)
+{
+
+ guint8 svc_id = 0, svc_len = 0;
+ guint end = offset + len, svc_end = 0;
+ proto_item *si = NULL;
+ proto_tree *svc_tree = NULL;
+
+ while (offset < end) {
+ svc_id = tvb_get_guint8(tvb, offset);
+ svc_len = tvb_get_guint8(tvb, offset + 1);
+ si = proto_tree_add_text(tree, tvb, offset, svc_len + 2, "Service 0x%02x", svc_id);
+ svc_tree = proto_item_add_subtree(si, ett_mpeg_descriptor_vbi_data_service);
+
+ proto_tree_add_item(svc_tree, hf_mpeg_descr_vbi_data_service_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(svc_tree, hf_mpeg_descr_vbi_data_descr_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ switch (svc_id) {
+ case 0x01:
+ case 0x02:
+ case 0x04:
+ case 0x05:
+ case 0x06:
+ case 0x07:
+ svc_end = offset + svc_len;
+ while (offset < svc_end) {
+ proto_tree_add_item(svc_tree, hf_mpeg_descr_vbi_data_reserved1, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(svc_tree, hf_mpeg_descr_vbi_data_field_parity, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(svc_tree, hf_mpeg_descr_vbi_data_line_offset, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ }
+ break;
+ default:
+ proto_tree_add_item(svc_tree, hf_mpeg_descr_vbi_data_reserved2, tvb, offset, svc_len, ENC_NA);
+ offset += svc_len;
+ break;
+ }
+
+ }
+}
+
+/* 0x47 Bouquet Name Descriptor */
+static int hf_mpeg_descr_bouquet_name = -1;
+
+static void
+proto_mpeg_descriptor_dissect_bouquet_name(tvbuff_t *tvb, guint offset, guint8 len, proto_tree *tree)
+{
+ proto_tree_add_item(tree, hf_mpeg_descr_bouquet_name, tvb, offset, len, ENC_ASCII|ENC_NA);
+}
+
+/* 0x48 Service Descriptor */
+static int hf_mpeg_descr_service_type = -1;
+static int hf_mpeg_descr_service_provider_name_length = -1;
+static int hf_mpeg_descr_service_provider = -1;
+static int hf_mpeg_descr_service_name_length = -1;
+static int hf_mpeg_descr_service_name = -1;
+
+static const value_string mpeg_descr_service_type_vals[] = {
+
+ { 0x00, "reserved" },
+ { 0x01, "digital television service" },
+ { 0x02, "digital radio sound service" },
+ { 0x03, "Teletext service" },
+ { 0x04, "NVOD reference service" },
+ { 0x05, "NVOD time-shifted service" },
+ { 0x06, "mosaic service" },
+ { 0x07, "FM radio service" },
+ { 0x08, "DVB SRM service" },
+ { 0x09, "reserved" },
+ { 0x0A, "advanced codec digital radio sound service" },
+ { 0x0B, "advanced codec mosaic service" },
+ { 0x0C, "data broadcast service" },
+ { 0x0D, "reserved for Common Interface Usage (EN 50221)" },
+ { 0x0E, "RCS Map (see EN 301 790)" },
+ { 0x0F, "RCS FLS (see EN 301 790)" },
+ { 0x10, "DVB MHP service" },
+ { 0x11, "MPEG-2 HD digital television service" },
+ { 0x16, "advanced codec SD digital television service" },
+ { 0x17, "advanced codec SD NVOD time-shifted service" },
+ { 0x18, "advanced codec SD NVOD reference service" },
+ { 0x19, "advanced codec HD digital television service" },
+ { 0x1A, "advanced codec HD NVOD time-shifted service" },
+
+ { 0x00, NULL }
+
+};
+
+static void
+proto_mpeg_descriptor_dissect_service(tvbuff_t *tvb, guint offset, proto_tree *tree)
+{
+ guint8 descr_len = 0, name_len = 0;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_service_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ descr_len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_mpeg_descr_service_provider_name_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_service_provider, tvb, offset, descr_len, ENC_ASCII|ENC_NA);
+ offset += descr_len;
+
+ name_len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_mpeg_descr_service_name_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_service_name, tvb, offset, name_len, ENC_ASCII|ENC_NA);
+
+}
+
+/* 0x4A Linkage Descriptor */
+static int hf_mpeg_descr_linkage_transport_stream_id = -1;
+static int hf_mpeg_descr_linkage_original_network_id = -1;
+static int hf_mpeg_descr_linkage_service_id = -1;
+static int hf_mpeg_descr_linkage_linkage_type = -1;
+
+static int hf_mpeg_descr_linkage_hand_over_type = -1;
+static int hf_mpeg_descr_linkage_reserved1 = -1;
+static int hf_mpeg_descr_linkage_origin_type = -1;
+static int hf_mpeg_descr_linkage_network_id = -1;
+static int hf_mpeg_descr_linkage_initial_service_id = -1;
+
+static int hf_mpeg_descr_linkage_target_event_id = -1;
+static int hf_mpeg_descr_linkage_target_listed = -1;
+static int hf_mpeg_descr_linkage_event_simulcast = -1;
+static int hf_mpeg_descr_linkage_reserved2 = -1;
+
+static int hf_mpeg_descr_linkage_interactive_network_id = -1;
+static int hf_mpeg_descr_linkage_population_id_loop_count = -1;
+static int hf_mpeg_descr_linkage_population_id = -1;
+static int hf_mpeg_descr_linkage_population_id_base = -1;
+static int hf_mpeg_descr_linkage_population_id_mask = -1;
+
+static int hf_mpeg_descr_linkage_private_data_byte = -1;
+
+static gint ett_mpeg_descriptor_linkage_population_id = -1;
+
+#define MPEG_DESCR_LINKAGE_HAND_OVER_TYPE_MASK 0xF0
+#define MPEG_DESCR_LINKAGE_HAND_OVER_TYPE_SHIFT 0x04
+#define MPEG_DESCR_LINKAGE_RESERVED1_MASK 0x0E
+#define MPEG_DESCR_LINKAGE_ORIGIN_TYPE_MASK 0x01
+
+#define MPEG_DESCR_LINKAGE_TARGET_LISTED_MASK 0x80
+#define MPEG_DESCR_LINKAGE_EVENT_SIMULCAST_MASK 0x40
+#define MPEG_DESCR_LINKAGE_RESERVED2_MASK 0x3F
+
+static const value_string mpeg_descr_linkage_linkage_type_vals[] = {
+ { 0x01, "Information service" },
+ { 0x02, "EPG service" },
+ { 0x03, "CA replacement service" },
+ { 0x04, "TS containing complete Network/Bouquet SI" },
+ { 0x05, "Service replacement service" },
+ { 0x06, "Data broadcast service" },
+ { 0x07, "RCS Map" },
+ { 0x08, "Mobile hand-over" },
+ { 0x09, "System Software Update Service" },
+ { 0x0A, "TS containing SSU BAT or NIT" },
+ { 0x0B, "IP/MAC Notification Service" },
+ { 0x0C, "TS containing INT BAT or NIT" },
+ { 0x0D, "Event linkage" },
+ { 0x81, "RCS FLS" },
+
+ { 0x00, NULL }
+};
+
+static const value_string mpeg_descr_linkage_hand_over_type_vals[] = {
+ { 0x01, "DVB hand-over to an identical service in a neighbouring country" },
+ { 0x02, "DVB hand-over to a local variation of the same service" },
+ { 0x03, "DVB hand-over to an associated service" },
+
+ { 0x00, NULL }
+};
+
+static const value_string mpeg_descr_linkage_origin_type_vals[] = {
+ { 0x0, "NIT" },
+ { 0x1, "SDT" },
+
+ { 0x0, NULL }
+};
+
+static const value_string mpeg_descr_linkage_target_listed_vals[] = {
+ { 0x0, "Service may not be included in SDT" },
+ { 0x1, "Service should be included in SDT" },
+
+ { 0x0, NULL}
+};
+
+static const value_string mpeg_descr_linkage_event_simulcast_vals[] = {
+ { 0x0, "Events are offset in time" },
+ { 0x1, "Target and source events are being sumulcast" },
+
+ { 0x0, NULL }
+};
+
+static void
+proto_mpeg_descriptor_dissect_linkage(tvbuff_t *tvb, guint offset, guint8 len, proto_tree *tree)
+{
+
+ guint8 linkage_type, hand_over_type, origin_type;
+ guint end = offset + len;
+ guint population_id_loop_count = 0;
+ guint16 population_id_base = 0, population_id_mask = 0;
+ proto_item *pi = NULL;
+ proto_tree *population_tree = NULL;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_linkage_transport_stream_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_linkage_original_network_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_linkage_service_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_linkage_linkage_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ linkage_type = tvb_get_guint8(tvb, offset);
+ offset++;
+
+ if (linkage_type == 0x08) {
+ proto_tree_add_item(tree, hf_mpeg_descr_linkage_hand_over_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_linkage_reserved1, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_linkage_origin_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ hand_over_type = (tvb_get_guint8(tvb, offset) & MPEG_DESCR_LINKAGE_HAND_OVER_TYPE_MASK) >> MPEG_DESCR_LINKAGE_HAND_OVER_TYPE_SHIFT;
+ origin_type = tvb_get_guint8(tvb, offset) & MPEG_DESCR_LINKAGE_ORIGIN_TYPE_MASK;
+ offset++;
+
+ if (hand_over_type == 1 || hand_over_type == 2 || hand_over_type == 3) {
+ proto_tree_add_item(tree, hf_mpeg_descr_linkage_network_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ }
+
+ if (origin_type) {
+ proto_tree_add_item(tree, hf_mpeg_descr_linkage_initial_service_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ }
+
+ } else if (linkage_type == 0x0D) {
+ proto_tree_add_item(tree, hf_mpeg_descr_linkage_target_event_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_linkage_target_listed, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_linkage_event_simulcast, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_linkage_reserved2, tvb, offset, 1, ENC_BIG_ENDIAN);
+ } else if (linkage_type == 0x81) {
+ proto_tree_add_item(tree, hf_mpeg_descr_linkage_interactive_network_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ population_id_loop_count = tvb_get_guint8(tvb, offset) + 1;
+ proto_tree_add_item(tree, hf_mpeg_descr_linkage_population_id_loop_count, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ while (population_id_loop_count--) {
+
+ population_id_base = tvb_get_ntohs(tvb, offset);
+ population_id_mask = tvb_get_ntohs(tvb, offset + 2);
+ pi = proto_tree_add_string_format_value(tree, hf_mpeg_descr_linkage_population_id, tvb, offset, 4, "Population ID", "0x%04x/0x%04x",
+ population_id_base, population_id_mask);
+ population_tree = proto_item_add_subtree(pi, ett_mpeg_descriptor_linkage_population_id);
+
+ proto_tree_add_item(population_tree, hf_mpeg_descr_linkage_population_id_base, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(population_tree, hf_mpeg_descr_linkage_population_id_mask, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ }
+
+ }
+
+ if (end - offset > 0)
+ proto_tree_add_item(tree, hf_mpeg_descr_linkage_private_data_byte, tvb, offset, end - offset, ENC_NA);
+}
+
+/* 0x4D Short Event Descriptor */
+static int hf_mpeg_descr_short_event_lang_code = -1;
+static int hf_mpeg_descr_short_event_name_length = -1;
+static int hf_mpeg_descr_short_event_name = -1;
+static int hf_mpeg_descr_short_event_text_length = -1;
+static int hf_mpeg_descr_short_event_text = -1;
+
+static void
+proto_mpeg_descriptor_dissect_short_event(tvbuff_t *tvb, guint offset, proto_tree *tree)
+{
+ guint8 name_len = 0, text_len = 0;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_short_event_lang_code, tvb, offset, 3, ENC_ASCII|ENC_NA);
+ offset += 3;
+
+ name_len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_mpeg_descr_short_event_name_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_short_event_name, tvb, offset, name_len, ENC_ASCII|ENC_NA);
+ offset += name_len;
+
+ text_len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_mpeg_descr_short_event_text_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_short_event_text, tvb, offset, text_len, ENC_ASCII|ENC_NA);
+
+}
+
+/* 0x4E Extended Event Descriptor */
+static int hf_mpeg_descr_extended_event_descriptor_number = -1;
+static int hf_mpeg_descr_extended_event_last_descriptor_number = -1;
+static int hf_mpeg_descr_extended_event_lang_code = -1;
+static int hf_mpeg_descr_extended_event_length_of_items = -1;
+static int hf_mpeg_descr_extended_event_item_description_length = -1;
+static int hf_mpeg_descr_extended_event_item_description_char = -1;
+static int hf_mpeg_descr_extended_event_item_length = -1;
+static int hf_mpeg_descr_extended_event_item_char = -1;
+static int hf_mpeg_descr_extended_event_text_length = -1;
+static int hf_mpeg_descr_extended_event_text_char = -1;
+
+#define MPEG_DESCR_EXTENDED_EVENT_DESCRIPTOR_NUMBER_MASK 0xF0
+#define MPEG_DESCR_EXTENDED_EVENT_LAST_DESCRIPTOR_NUMBER_MASK 0x0F
+
+static gint ett_mpeg_descriptor_extended_event_item = -1;
+
+static void
+proto_mpeg_descriptor_dissect_extended_event(tvbuff_t *tvb, guint offset, proto_tree *tree)
+{
+
+ guint8 items_len = 0, item_descr_len = 0, item_len = 0, text_len = 0;
+ guint items_end = 0;
+ proto_item *ii = NULL;
+ proto_tree *item_tree = NULL;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_extended_event_descriptor_number, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_extended_event_last_descriptor_number, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_extended_event_lang_code, tvb, offset, 3, ENC_ASCII|ENC_NA);
+ offset += 3;
+
+ items_len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_mpeg_descr_extended_event_length_of_items, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ items_end = offset + items_len;
+
+ while (offset < items_end) {
+ ii = proto_tree_add_text(tree, tvb, offset, 0, "Item");
+ item_tree = proto_item_add_subtree(ii, ett_mpeg_descriptor_extended_event_item);
+
+ item_descr_len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(item_tree, hf_mpeg_descr_extended_event_item_description_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(item_tree, hf_mpeg_descr_extended_event_item_description_char, tvb, offset, item_descr_len, ENC_ASCII|ENC_NA);
+ offset += item_descr_len;
+
+ item_len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(item_tree, hf_mpeg_descr_extended_event_item_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(item_tree, hf_mpeg_descr_extended_event_item_char, tvb, offset, item_len, ENC_ASCII|ENC_NA);
+ offset += item_len;
+ }
+
+ text_len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_mpeg_descr_extended_event_text_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_extended_event_text_char, tvb, offset, text_len, ENC_ASCII|ENC_NA);
+
+}
+
+/* 0x50 Component Descriptor */
+static int hf_mpeg_descr_component_reserved = -1;
+static int hf_mpeg_descr_component_stream_content = -1;
+static int hf_mpeg_descr_component_type = -1;
+static int hf_mpeg_descr_component_content_type = -1;
+static int hf_mpeg_descr_component_tag = -1;
+static int hf_mpeg_descr_component_lang_code = -1;
+static int hf_mpeg_descr_component_text = -1;
+
+#define MPEG_DESCR_COMPONENT_RESERVED_MASK 0xF0
+#define MPEG_DESCR_COMPONENT_STREAM_CONTENT_MASK 0x0F
+#define MPEG_DESCR_COMPONENT_CONTENT_TYPE_MASK 0x0FFF
+
+static gint ett_mpeg_descriptor_component_content_type = -1;
+
+static const value_string mpeg_descr_component_stream_content_vals[] = {
+
+ { 0x01, "Video (MPEG-2)" },
+ { 0x02, "Audio (MPEG-1 Layer 2)" },
+ { 0x03, "EBU Data (Teletext, Subtitle, ...)" },
+ { 0x04, "Audio (AC-3)" },
+ { 0x05, "Video (H.264/AVC)" },
+ { 0x06, "Audio (HE-AAC)" },
+ { 0x07, "Audio (DTS)" },
+
+ { 0x0, NULL }
+};
+
+static const value_string mpeg_descr_component_content_type_vals[] = {
+
+ { 0x0101, "MPEG-2 video, 4:3 aspect ratio, 25 Hz" },
+ { 0x0102, "MPEG-2 video, 16:9 aspect ratio with pan vectors, 25 Hz" },
+ { 0x0103, "MPEG-2 video, 16:9 aspect ratio without pan vectors, 25 Hz" },
+ { 0x0104, "MPEG-2 video, > 16:9 aspect ratio, 25 Hz" },
+ { 0x0105, "MPEG-2 video, 4:3 aspect ratio, 30 Hz" },
+ { 0x0106, "MPEG-2 video, 16:9 aspect ratio with pan vectors, 30 Hz" },
+ { 0x0107, "MPEG-2 video, 16:9 aspect ratio without pan vectors, 30 Hz" },
+ { 0x0108, "MPEG-2 video, > 16:9 aspect ratio, 30 Hz" },
+ { 0x0109, "MPEG-2 high definition video, 4:3 aspect ratio, 25 Hz" },
+ { 0x010A, "MPEG-2 high definition video, 16:9 aspect ratio with pan vectors, 25 Hz" },
+ { 0x010B, "MPEG-2 high definition video, 16:9 aspect ratio without pan vectors, 25 Hz" },
+ { 0x010C, "MPEG-2 high definition video, > 16:9 aspect ratio, 25 Hz" },
+ { 0x010D, "MPEG-2 high definition video, 4:3 aspect ratio, 30 Hz" },
+ { 0x010E, "MPEG-2 high definition video, 16:9 aspect ratio with pan vectors, 30 Hz" },
+ { 0x010F, "MPEG-2 high definition video, 16:9 aspect ratio without pan vectors, 30 Hz" },
+ { 0x0110, "MPEG-2 high definition video, > 16:9 aspect ratio, 30 Hz" },
+ { 0x0201, "MPEG-1 Layer 2 audio, single mono channel" },
+ { 0x0202, "MPEG-1 Layer 2 audio, dual mono channel" },
+ { 0x0203, "MPEG-1 Layer 2 audio, stereo" },
+ { 0x0204, "MPEG-1 Layer 2 audio, multi-lingual, multi-channel" },
+ { 0x0205, "MPEG-1 Layer 2 audio, surround sound" },
+ { 0x0240, "MPEG-1 Layer 2 audio description for the visually impaired" },
+ { 0x0241, "MPEG-1 Layer 2 audio for the hard of hearing" },
+ { 0x0242, "receiver-mixed supplementary audio as per annex E of TS 101 154 [9]" },
+ { 0x0247, "MPEG-1 Layer 2 audio, receiver mix audio description as per annex E of TS 101 154 [9]" },
+ { 0x0248, "MPEG-1 Layer 2 audio, broadcaster mix audio description" },
+ { 0x0301, "EBU Teletext subtitles" },
+ { 0x0302, "associated EBU Teletext" },
+ { 0x0303, "VBI data" },
+ { 0x0310, "DVB subtitles (normal) with no monitor aspect ratio criticality" },
+ { 0x0311, "DVB subtitles (normal) for display on 4:3 aspect ratio monitor" },
+ { 0x0312, "DVB subtitles (normal) for display on 16:9 aspect ratio monitor" },
+ { 0x0313, "DVB subtitles (normal) for display on 2.21:1 aspect ratio monitor" },
+ { 0x0314, "DVB subtitles (normal) for display on a high definition monitor" },
+ { 0x0320, "DVB subtitles (for the hard of hearing) with no monitor aspect ratio criticality" },
+ { 0x0321, "DVB subtitles (for the hard of hearing) for display on 4:3 aspect ratio monitor" },
+ { 0x0322, "DVB subtitles (for the hard of hearing) for display on 16:9 aspect ratio monitor" },
+ { 0x0323, "DVB subtitles (for the hard of hearing) for display on 2.21:1 aspect ratio monitor" },
+ { 0x0324, "DVB subtitles (for the hard of hearing) for display on a high definition monitor" },
+ { 0x0330, "Open (in-vision) sign language interpretation for the deaf" },
+ { 0x0331, "Closed sign language interpretation for the deaf" },
+ { 0x0340, "video up-sampled from standard definition source material" },
+ { 0x0501, "H.264/AVC standard definition video, 4:3 aspect ratio, 25 Hz" },
+ { 0x0503, "H.264/AVC standard definition video, 16:9 aspect ratio, 25 Hz" },
+ { 0x0504, "H.264/AVC standard definition video, > 16:9 aspect ratio, 25 Hz" },
+ { 0x0505, "H.264/AVC standard definition video, 4:3 aspect ratio, 30 Hz" },
+ { 0x0507, "H.264/AVC standard definition video, 16:9 aspect ratio, 30 Hz" },
+ { 0x0508, "H.264/AVC standard definition video, > 16:9 aspect ratio, 30 Hz" },
+ { 0x050B, "H.264/AVC high definition video, 16:9 aspect ratio, 25 Hz" },
+ { 0x050C, "H.264/AVC high definition video, > 16:9 aspect ratio, 25 Hz" },
+ { 0x050F, "H.264/AVC high definition video, 16:9 aspect ratio, 30 Hz" },
+ { 0x0510, "H.264/AVC high definition video, > 16:9 aspect ratio, 30 Hz" },
+ { 0x0601, "HE-AAC audio, single mono channel" },
+ { 0x0603, "HE-AAC audio, stereo" },
+ { 0x0605, "HE-AAC audio, surround sound" },
+ { 0x0640, "HE-AAC audio description for the visually impaired" },
+ { 0x0641, "HE-AAC audio for the hard of hearing" },
+ { 0x0642, "HE-AAC receiver-mixed supplementary audio as per annex E of TS 101 154 [9]" },
+ { 0x0643, "HE-AAC v2 audio, stereo" },
+ { 0x0644, "HE-AAC v2 audio description for the visually impaired" },
+ { 0x0645, "HE-AAC v2 audio for the hard of hearing" },
+ { 0x0646, "HE-AAC v2 receiver-mixed supplementary audio as per annex E of TS 101 154 [9]" },
+ { 0x0647, "HE-AAC receiver mix audio description for the visually impaired" },
+ { 0x0648, "HE-AAC broadcaster mix audio description for the visually impaired" },
+ { 0x0649, "HE-AAC v2 receiver mix audio description for the visually impaired" },
+ { 0x064A, "HE-AAC v2 broadcaster mix audio description for the visually impaired" },
+ { 0x0801, "DVB SRM data" },
+
+ { 0x0, NULL }
+};
+
+
+static void
+proto_mpeg_descriptor_dissect_component(tvbuff_t *tvb, guint offset, guint8 len, proto_tree *tree)
+{
+
+ proto_item *cti = NULL;
+ proto_tree *content_type_tree = NULL;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_component_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ cti = proto_tree_add_item(tree, hf_mpeg_descr_component_content_type, tvb, offset, 2, ENC_BIG_ENDIAN);
+ content_type_tree = proto_item_add_subtree(cti, ett_mpeg_descriptor_component_content_type);
+
+ proto_tree_add_item(content_type_tree, hf_mpeg_descr_component_stream_content, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(content_type_tree, hf_mpeg_descr_component_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_component_tag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_component_lang_code, tvb, offset, 3, ENC_ASCII|ENC_NA);
+ offset += 3;
+
+ if (offset < len)
+ proto_tree_add_item(tree, hf_mpeg_descr_component_text, tvb, offset, len - offset, ENC_ASCII|ENC_NA);
+}
+
+/* 0x52 Stream Identifier Descriptor */
+static int hf_mpeg_descr_stream_identifier_component_tag = -1;
+
+static void
+proto_mpeg_descriptor_dissect_stream_identifier(tvbuff_t *tvb, guint offset, proto_tree *tree)
+{
+ proto_tree_add_item(tree, hf_mpeg_descr_stream_identifier_component_tag, tvb, offset, 1, ENC_BIG_ENDIAN);
+}
+
+/* 0x53 CA Identifier Descriptor */
+static int hf_mpeg_descr_ca_identifier_system_id = -1;
+
+static void
+proto_mpeg_descriptor_dissect_ca_identifier(tvbuff_t *tvb, guint offset, guint8 len, proto_tree *tree)
+{
+ guint end = offset + len;
+
+ while (offset < end) {
+ proto_tree_add_item(tree, hf_mpeg_descr_ca_identifier_system_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ }
+
+}
+
+/* 0x54 Content Descriptor */
+static int hf_mpeg_descr_content_nibble = -1;
+static int hf_mpeg_descr_content_nibble_level_1 = -1;
+static int hf_mpeg_descr_content_nibble_level_2 = -1;
+static int hf_mpeg_descr_content_user_byte = -1;
+
+#define MPEG_DESCR_CONTENT_NIBBLE_LEVEL_1_MASK 0xF0
+#define MPEG_DESCR_CONTENT_NIBBLE_LEVEL_2_MASK 0x0F
+
+static gint ett_mpeg_descriptor_content_nibble = -1;
+
+static const value_string mpeg_descr_content_nibble_vals[] = {
+
+ { 0x10, "movie/drama (general)" },
+ { 0x11, "detective/thriller" },
+ { 0x12, "adventure/western/war" },
+ { 0x13, "science fiction/fantasy/horror" },
+ { 0x14, "comedy" },
+ { 0x15, "soap/melodrama/folkloric" },
+ { 0x16, "romance" },
+ { 0x17, "serious/classical/religious/historical movie/drama" },
+ { 0x18, "adult movie/drama" },
+ { 0x1F, "user defined (movie/drama)" },
+
+ { 0x20, "news/current affairs (general)" },
+ { 0x21, "news/weather report" },
+ { 0x22, "news magazine" },
+ { 0x23, "documentary" },
+ { 0x24, "discussion/interview/debate" },
+ { 0x2F, "user defined (news/current affairs)" },
+
+ { 0x30, "show/game show (general)" },
+ { 0x31, "game show/quiz/contest" },
+ { 0x32, "variety show" },
+ { 0x33, "talk show" },
+ { 0x3F, "user defined (show/game show)" },
+
+ { 0x40, "sports (general)" },
+ { 0x41, "special events (Olympic Games, World Cup, etc.)" },
+ { 0x42, "sports magazines" },
+ { 0x43, "football/soccer" },
+ { 0x44, "tennis/squash" },
+ { 0x45, "team sports (excluding football)" },
+ { 0x46, "athletics" },
+ { 0x47, "motor sport" },
+ { 0x48, "water sport" },
+ { 0x49, "winter sports" },
+ { 0x4A, "equestrian" },
+ { 0x4B, "martial sports" },
+ { 0x4F, "user defined (sports)" },
+
+ { 0x50, "children's/youth programmes (general)" },
+ { 0x51, "pre-school children's programmes" },
+ { 0x52, "entertainment programmes for 6 to14" },
+ { 0x53, "entertainment programmes for 10 to 16" },
+ { 0x54, "informational/educational/school programmes" },
+ { 0x55, "cartoons/puppets" },
+ { 0x5F, "user defined (children's/youth programmes)" },
+
+ { 0x60, "music/ballet/dance (general)" },
+ { 0x61, "rock/pop" },
+ { 0x62, "serious music/classical music" },
+ { 0x63, "folk/traditional music" },
+ { 0x64, "jazz" },
+ { 0x65, "musical/opera" },
+ { 0x66, "ballet" },
+ { 0x6F, "user defined (music/ballet/dance)" },
+
+ { 0x70, "arts/culture (without music, general)" },
+ { 0x71, "performing arts" },
+ { 0x72, "fine arts" },
+ { 0x73, "religion" },
+ { 0x74, "popular culture/traditional arts" },
+ { 0x75, "literature" },
+ { 0x76, "film/cinema" },
+ { 0x77, "experimental film/video" },
+ { 0x78, "broadcasting/press" },
+ { 0x79, "new media" },
+ { 0x7A, "arts/culture magazines" },
+ { 0x7B, "fashion" },
+ { 0x7F, "user defined (arts/culture)" },
+
+ { 0x80, "social/political issues/economics (general)" },
+ { 0x81, "magazines/reports/documentary" },
+ { 0x82, "economics/social advisory" },
+ { 0x83, "remarkable people" },
+ { 0x8F, "user defined (social/political issues/economics)" },
+
+ { 0x90, "education/science/factual topics (general)" },
+ { 0x91, "nature/animals/environment" },
+ { 0x92, "technology/natural sciences" },
+ { 0x93, "medicine/physiology/psychology" },
+ { 0x94, "foreign countries/expeditions" },
+ { 0x95, "social/spiritual sciences" },
+ { 0x96, "further education" },
+ { 0x97, "languages" },
+ { 0x9F, "user defined (education/science/factual topics)" },
+
+ { 0xA0, "leisure hobbies (general)" },
+ { 0xA1, "tourism/travel" },
+ { 0xA2, "handicraft" },
+ { 0xA3, "motoring" },
+ { 0xA4, "fitness and health" },
+ { 0xA5, "cooking" },
+ { 0xA6, "advertisement/shopping" },
+ { 0xA7, "gardening" },
+ { 0xAF, "user defined (leisure hobbies)" },
+
+ { 0xB0, "original language" },
+ { 0xB1, "black and white" },
+ { 0xB2, "unpublished" },
+ { 0xB3, "live broadcast" },
+ { 0xBF, "user defined (special charateristics)" },
+
+ { 0x00, NULL }
+
+};
+
+static const value_string mpeg_descr_content_nibble_level_1_vals[] = {
+
+ { 0x1, "Movie/Drama" },
+ { 0x2, "News/Current affairs" },
+ { 0x3, "Show/Game show" },
+ { 0x4, "Sports" },
+ { 0x5, "Children's/Youth programmes" },
+ { 0x6, "Music/Ballet/Dance" },
+ { 0x7, "Arts/Culture (without music)" },
+ { 0x8, "Social/Political issues/Economics" },
+ { 0x9, "Education/Science/Factual topics" },
+ { 0xA, "Leisure hobbies" },
+ { 0xB, "Special characteristics" },
+
+ { 0x00, NULL }
+};
+
+static void
+proto_mpeg_descriptor_dissect_content(tvbuff_t *tvb, guint offset, guint8 len, proto_tree *tree)
+{
+ proto_item *ni = NULL;
+ proto_tree *nibble_tree = NULL;
+ guint end = offset + len;
+
+ while (offset < end) {
+ ni = proto_tree_add_item(tree, hf_mpeg_descr_content_nibble, tvb, offset, 1, ENC_BIG_ENDIAN);
+ nibble_tree = proto_item_add_subtree(ni, ett_mpeg_descriptor_content_nibble);
+
+ proto_tree_add_item(nibble_tree, hf_mpeg_descr_content_nibble_level_1, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(nibble_tree, hf_mpeg_descr_content_nibble_level_2, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_content_user_byte, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ }
+
+}
+
+/* 0x55 Parental Rating Descriptor */
+static int hf_mpeg_descr_parental_rating_country_code = -1;
+static int hf_mpeg_descr_parental_rating_rating = -1;
+
+static const value_string mpeg_descr_parental_rating_vals[] = {
+ { 0x00, "Undefined" },
+ { 0x01, "Minimum 4 year old" },
+ { 0x02, "Minimum 5 year old" },
+ { 0x03, "Minimum 6 year old" },
+ { 0x04, "Minimum 7 year old" },
+ { 0x05, "Minimum 8 year old" },
+ { 0x06, "Minimum 9 year old" },
+ { 0x07, "Minimum 10 year old" },
+ { 0x08, "Minimum 11 year old" },
+ { 0x09, "Minimum 12 year old" },
+ { 0x0A, "Minimum 13 year old" },
+ { 0x0B, "Minimum 14 year old" },
+ { 0x0C, "Minimum 15 year old" },
+ { 0x0D, "Minimum 16 year old" },
+ { 0x0E, "Minimum 17 year old" },
+ { 0x0F, "Minimum 18 year old" },
+
+ { 0x00, NULL }
+};
+
+static void
+proto_mpeg_descriptor_dissect_parental_rating(tvbuff_t *tvb, guint offset, proto_tree *tree)
+{
+ proto_tree_add_item(tree, hf_mpeg_descr_parental_rating_country_code, tvb, offset, 3, ENC_ASCII|ENC_NA);
+ offset += 3;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_parental_rating_rating, tvb, offset, 1, ENC_NA);
+}
+
+/* 0x56 Teletext Descriptor */
+static int hf_mpeg_descr_teletext_lang_code = -1;
+static int hf_mpeg_descr_teletext_type = -1;
+static int hf_mpeg_descr_teletext_magazine_number = -1;
+static int hf_mpeg_descr_teletext_page_number = -1;
+
+#define MPEG_DESCR_TELETEXT_TYPE_MASK 0xF8
+#define MPEG_DESCR_TELETEXT_MAGAZINE_NUMBER_MASK 0x07
+
+static const value_string mpeg_descr_teletext_type_vals[] = {
+ { 0x00, "Reserved" },
+ { 0x01, "Initial Teletext Page" },
+ { 0x02, "Teletext Subtitle Page" },
+ { 0x03, "Additional Information Page" },
+ { 0x04, "Programme Schedule Page" },
+ { 0x05, "Teletext Subtitle Page for hearing impaired people" },
+
+ { 0, NULL }
+
+};
+
+static void
+proto_mpeg_descriptor_dissect_teletext(tvbuff_t *tvb, guint offset, guint8 len, proto_tree *tree)
+{
+ guint end = offset + len;
+
+ while (offset < end) {
+ proto_tree_add_item(tree, hf_mpeg_descr_teletext_lang_code, tvb, offset, 3, ENC_ASCII|ENC_NA);
+ offset += 3;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_teletext_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_teletext_magazine_number, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_teletext_page_number, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ }
+}
+
+/* 0x58 Local Time Offset Descriptor */
+static int hf_mpeg_descr_local_time_offset_country_code = -1;
+static int hf_mpeg_descr_local_time_offset_region_id = -1;
+static int hf_mpeg_descr_local_time_offset_reserved = -1;
+static int hf_mpeg_descr_local_time_offset_polarity = -1;
+static int hf_mpeg_descr_local_time_offset_offset = -1;
+static int hf_mpeg_descr_local_time_offset_time_of_change = -1;
+static int hf_mpeg_descr_local_time_offset_next_time_offset = -1;
+
+#define MPEG_DESCR_LOCAL_TIME_OFFSET_COUNTRY_REGION_ID_MASK 0xFC
+#define MPEG_DESCR_LOCAL_TIME_OFFSET_RESERVED_MASK 0x02
+#define MPEG_DESCR_LOCAL_TIME_OFFSET_POLARITY 0x01
+
+static const value_string mpeg_descr_local_time_offset_polarity_vals[] = {
+ { 0x0, "Positive (local time ahead of UTC)" },
+ { 0x1, "Negative (local time behind UTC)" },
+
+ { 0x0, NULL }
+};
+
+static void
+proto_mpeg_descriptor_dissect_local_time_offset(tvbuff_t *tvb, guint offset, guint8 len, proto_tree *tree)
+{
+ guint end = offset + len;
+ guint16 time_offset = 0;
+ nstime_t time_of_change;
+
+ while (offset < end) {
+ proto_tree_add_item(tree, hf_mpeg_descr_local_time_offset_country_code, tvb, offset, 3, ENC_ASCII|ENC_NA);
+ offset += 3;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_local_time_offset_region_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_local_time_offset_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_local_time_offset_polarity, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ time_offset = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_string_format_value(tree, hf_mpeg_descr_local_time_offset_offset, tvb, offset, 2,
+ "Local Time Offset", "%02u:%02u",
+ MPEG_SECT_BCD44_TO_DEC(time_offset >> 8),
+ MPEG_SECT_BCD44_TO_DEC(time_offset));
+ offset += 2;
+
+
+ if (packet_mpeg_sect_mjd_to_utc_time(tvb, offset, &time_of_change) < 0) {
+ proto_tree_add_text(tree, tvb, offset, 5, "Time of Change : Unparseable time");
+ } else {
+ proto_tree_add_time_format(tree, hf_mpeg_descr_local_time_offset_time_of_change, tvb, offset, 5,
+ &time_of_change, "Time of Change : %s UTC",
+ abs_time_to_str(&time_of_change, ABSOLUTE_TIME_UTC, FALSE));
+ }
+ offset += 5;
+
+ time_offset = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_string_format_value(tree, hf_mpeg_descr_local_time_offset_next_time_offset, tvb, offset, 2,
+ "Next Time Offset", "%02u:%02u",
+ MPEG_SECT_BCD44_TO_DEC(time_offset >> 8),
+ MPEG_SECT_BCD44_TO_DEC(time_offset));
+ offset += 2;
+ }
+}
+
+/* 0x59 Subtitling Descriptor */
+static int hf_mpeg_descr_subtitling_lang_code = -1;
+static int hf_mpeg_descr_subtitling_type = -1;
+static int hf_mpeg_descr_subtitling_composition_page_id = -1;
+static int hf_mpeg_descr_subtitling_ancillary_page_id = -1;
+
+
+static const value_string mpeg_descr_subtitling_type_vals[] = {
+ { 0x01, "EBU Teletext subtitles" },
+ { 0x02, "associated EBU Teletext" },
+ { 0x03, "VBI data" },
+ { 0x10, "DVB subtitles (normal) with no monitor aspect ratio criticality" },
+ { 0x11, "DVB subtitles (normal) for display on 4:3 aspect ratio monitor" },
+ { 0x12, "DVB subtitles (normal) for display on 16:9 aspect ratio monitor" },
+ { 0x13, "DVB subtitles (normal) for display on 2.21:1 aspect ratio monitor" },
+ { 0x14, "DVB subtitles (normal) for display on a high definition monitor" },
+ { 0x20, "DVB subtitles (for the hard of hearing) with no monitor aspect ratio criticality" },
+ { 0x21, "DVB subtitles (for the hard of hearing) for display on 4:3 aspect ratio monitor" },
+ { 0x22, "DVB subtitles (for the hard of hearing) for display on 16:9 aspect ratio monitor" },
+ { 0x23, "DVB subtitles (for the hard of hearing) for display on 2.21:1 aspect ratio monitor" },
+ { 0x24, "DVB subtitles (for the hard of hearing) for display on a high definition monitor" },
+ { 0x30, "Open (in-vision) sign language interpretation for the deaf" },
+ { 0x31, "Closed sign language interpretation for the deaf" },
+ { 0x40, "video up-sampled from standard definition source material" },
+
+ { 0, NULL }
+};
+
+static void
+proto_mpeg_descriptor_dissect_subtitling(tvbuff_t *tvb, guint offset, guint8 len, proto_tree *tree)
+{
+ guint end = offset + len;
+
+ while (offset < end) {
+ proto_tree_add_item(tree, hf_mpeg_descr_subtitling_lang_code, tvb, offset, 3, ENC_ASCII|ENC_NA);
+ offset += 3;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_subtitling_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_subtitling_composition_page_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_subtitling_ancillary_page_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ }
+}
+
+/* 0x5A Terrestrial Delivery System Descriptor */
+static int hf_mpeg_descr_terrestrial_delivery_centre_frequency = -1;
+static int hf_mpeg_descr_terrestrial_delivery_bandwidth = -1;
+static int hf_mpeg_descr_terrestrial_delivery_priority = -1;
+static int hf_mpeg_descr_terrestrial_delivery_time_slicing_indicator = -1;
+static int hf_mpeg_descr_terrestrial_delivery_mpe_fec_indicator = -1;
+static int hf_mpeg_descr_terrestrial_delivery_reserved1 = -1;
+static int hf_mpeg_descr_terrestrial_delivery_constellation = -1;
+static int hf_mpeg_descr_terrestrial_delivery_hierarchy_information = -1;
+static int hf_mpeg_descr_terrestrial_delivery_code_rate_hp_stream = -1;
+static int hf_mpeg_descr_terrestrial_delivery_code_rate_lp_stream = -1;
+static int hf_mpeg_descr_terrestrial_delivery_guard_interval = -1;
+static int hf_mpeg_descr_terrestrial_delivery_transmission_mode = -1;
+static int hf_mpeg_descr_terrestrial_delivery_other_frequency_flag = -1;
+static int hf_mpeg_descr_terrestrial_delivery_reserved2 = -1;
+
+#define MPEG_DESCR_TERRESTRIAL_DELIVERY_BANDWIDTH_MASK 0xE0
+#define MPEG_DESCR_TERRESTRIAL_DELIVERY_PRIORITY_MASK 0x10
+#define MPEG_DESCR_TERRESTRIAL_DELIVERY_TIME_SLICING_INDICATOR_MASK 0x08
+#define MPEG_DESCR_TERRESTRIAL_DELIVERY_MPE_FEC_INDICATOR_MASK 0x04
+#define MPEG_DESCR_TERRESTRIAL_DELIVERY_RESERVED1_MASK 0x03
+#define MPEG_DESCR_TERRESTRIAL_DELIVERY_CONSTELLATION_MASK 0xC0
+#define MPEG_DESCR_TERRESTRIAL_DELIVERY_HIERARCHY_INFORMATION_MASK 0x38
+#define MPEG_DESCR_TERRESTRIAL_DELIVERY_CODE_RATE_HP_STREAM_MASK 0x07
+#define MPEG_DESCR_TERRESTRIAL_DELIVERY_CODE_RATE_LP_STREAM_MASK 0xE0
+#define MPEG_DESCR_TERRESTRIAL_DELIVERY_GUARD_INTERVAL_MASK 0x18
+#define MPEG_DESCR_TERRESTRIAL_DELIVERY_TRANSMISSION_MODE_MASK 0x06
+#define MPEG_DESCR_TERRESTRIAL_DELIVERY_OTHER_FREQUENCY_FLAG_MASK 0x01
+
+static const value_string mpeg_descr_terrestrial_delivery_bandwidth_vals[] = {
+ { 0x0, "8 MHz" },
+ { 0x1, "7 MHz" },
+ { 0x2, "6 MHz" },
+ { 0x3, "5 Mhz" },
+
+ { 0x0, NULL }
+};
+
+static const value_string mpeg_descr_terrestrial_delivery_priority_vals[] = {
+ { 0x0, "Low Priority" },
+ { 0x1, "High Priority (or N/A if not hierarchical stream)" },
+
+ { 0x0, NULL }
+};
+
+static const value_string mpeg_descr_terrestrial_delivery_time_slicing_indicator_vals[] = {
+ { 0x0, "At least one elementary stream uses Time Slicing" },
+ { 0x1, "Time Slicing not used" },
+
+ { 0x0, NULL }
+};
+
+static const value_string mpeg_descr_terrestrial_delivery_mpe_fec_indicator_vals[] = {
+ { 0x0, "At least one elementary stream uses MPE-FEC" },
+ { 0x1, "MPE-FEC not used" },
+
+ { 0x0, NULL }
+};
+
+static const value_string mpeg_descr_terrestrial_delivery_constellation_vals[] = {
+ { 0x0, "QPSK" },
+ { 0x1, "16-QAM" },
+ { 0x2, "64-QAM" },
+
+ { 0x0, NULL }
+};
+
+static const value_string mpeg_descr_terrestrial_delivery_hierarchy_information_vals[] = {
+ { 0x0, "Non-hierarchical, native interleaver" },
+ { 0x1, "alpha = 1, native interleaver" },
+ { 0x2, "alpha = 2, native interleaver" },
+ { 0x3, "alpha = 4, native interleaver" },
+ { 0x4, "Non-hierarchical, in-depth interleaver" },
+ { 0x5, "alpha = 1, in-depth interleaver" },
+ { 0x6, "alpha = 2, in-depth interleaver" },
+ { 0x7, "alpha = 4, in-depth interleaver" },
+
+ { 0x0, NULL }
+};
+
+static const value_string mpeg_descr_terrestrial_delivery_code_rate_vals[] = {
+ { 0x0, "1/2 convolutional code rate" },
+ { 0x1, "2/3 convolutional code rate" },
+ { 0x2, "3/4 convolutional code rate" },
+ { 0x3, "5/6 convolutional code rate" },
+ { 0x4, "7/8 convolutional code rate" },
+
+ { 0x0, NULL }
+};
+
+static const value_string mpeg_descr_terrestrial_delivery_guard_interval_vals[] = {
+ { 0x0, "1/32" },
+ { 0x1, "1/16" },
+ { 0x2, "1/8" },
+ { 0x3, "1/4" },
+
+ { 0x0, NULL }
+};
+
+static const value_string mpeg_descr_terrestrial_delivery_other_frequency_flag_vals[] = {
+ { 0x0, "No other frequency is in use" },
+ { 0x1, "One or more frequencies are in use" },
+
+ { 0x0, NULL }
+};
+
+static const value_string mpeg_descr_terrestrial_delivery_transmission_mode_vals[] = {
+ { 0x0, "2k mode" },
+ { 0x1, "8k mode" },
+ { 0x2, "4k mode" },
+
+ { 0x0, NULL }
+};
+
+static void
+proto_mpeg_descriptor_dissect_terrestrial_delivery(tvbuff_t *tvb, guint offset, proto_tree *tree)
+{
+ guint32 centre_freq;
+
+ centre_freq = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_string_format_value(tree, hf_mpeg_descr_terrestrial_delivery_centre_frequency, tvb, offset, 4,
+ "CentreFrequency", "%u0 Hz", centre_freq);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_terrestrial_delivery_bandwidth, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_terrestrial_delivery_priority, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_terrestrial_delivery_time_slicing_indicator, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_terrestrial_delivery_mpe_fec_indicator, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_terrestrial_delivery_reserved1, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_terrestrial_delivery_constellation, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_terrestrial_delivery_hierarchy_information, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_terrestrial_delivery_code_rate_hp_stream, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_terrestrial_delivery_code_rate_lp_stream, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_terrestrial_delivery_guard_interval, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_terrestrial_delivery_transmission_mode, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_terrestrial_delivery_other_frequency_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_terrestrial_delivery_reserved2, tvb, offset, 4, ENC_BIG_ENDIAN);
+
+}
+
+
+/* 0x5F Private Data Specifier */
+static int hf_mpeg_descr_private_data_specifier_id = -1;
+
+static void
+proto_mpeg_descriptor_dissect_private_data_specifier(tvbuff_t *tvb, guint offset, proto_tree *tree)
+{
+ proto_tree_add_item(tree, hf_mpeg_descr_private_data_specifier_id, tvb, offset, 4, ENC_BIG_ENDIAN);
+}
+
+/* 0x64 Data Broadcast Descriptor */
+static int hf_mpeg_descr_data_bcast_bcast_id = -1;
+static int hf_mpeg_descr_data_bcast_component_tag = -1;
+static int hf_mpeg_descr_data_bcast_selector_len = -1;
+static int hf_mpeg_descr_data_bcast_selector_bytes = -1;
+static int hf_mpeg_descr_data_bcast_lang_code = -1;
+static int hf_mpeg_descr_data_bcast_text_len = -1;
+static int hf_mpeg_descr_data_bcast_text = -1;
+
+static const value_string mpeg_descr_data_bcast_id_vals[] = {
+
+ { 0x0001, "Data pipe" },
+ { 0x0002, "Asynchronous data stream" },
+ { 0x0003, "Synchronous data stream" },
+ { 0x0004, "Synchronised data stream" },
+ { 0x0005, "Multi protocol encapsulation" },
+ { 0x0006, "Data Carousel" },
+ { 0x0007, "Object Carousel" },
+ { 0x0008, "DVB ATM streams" },
+ { 0x0009, "Higher Protocols based on asynchronous data streams" },
+ { 0x000A, "System Software Update service" },
+ { 0x000B, "IP/MAC Notification service" },
+ { 0x00F0, "MHP Object Carousel" },
+ { 0x00F1, "MHP Multiprotocol Encapsulation" },
+ /* See dvbservices.com for complete and current list */
+
+ { 0, NULL }
+};
+
+static void
+proto_mpeg_descriptor_dissect_data_bcast(tvbuff_t *tvb, guint offset, proto_tree *tree)
+{
+
+ guint8 selector_len = 0, text_len = 0;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_data_bcast_bcast_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_data_bcast_component_tag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ selector_len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_mpeg_descr_data_bcast_selector_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ if (selector_len > 0) {
+ proto_tree_add_item(tree, hf_mpeg_descr_data_bcast_selector_bytes, tvb, offset, selector_len, ENC_NA);
+ offset += selector_len;
+ }
+
+ proto_tree_add_item(tree, hf_mpeg_descr_data_bcast_lang_code, tvb, offset, 3, ENC_ASCII|ENC_NA);
+ offset += 3;
+
+ text_len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_mpeg_descr_data_bcast_text_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ if (text_len > 0)
+ proto_tree_add_item(tree, hf_mpeg_descr_data_bcast_text, tvb, offset, text_len, ENC_ASCII|ENC_NA);
+}
+
+/* 0x66 Data Broadcast ID Descriptor */
+static int hf_mpeg_descr_data_bcast_id_bcast_id = -1;
+static int hf_mpeg_descr_data_bcast_id_id_selector_bytes = -1;
+
+static void
+proto_mpeg_descriptor_dissect_data_bcast_id(tvbuff_t *tvb, guint offset, guint8 len, proto_tree *tree)
+{
+ proto_tree_add_item(tree, hf_mpeg_descr_data_bcast_id_bcast_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ if (len > 2)
+ proto_tree_add_item(tree, hf_mpeg_descr_data_bcast_id_id_selector_bytes, tvb, offset, len - 2, ENC_NA);
+}
+
+/* 0x6A AC-3 Descriptor */
+static int hf_mpeg_descr_ac3_component_type_flag = -1;
+static int hf_mpeg_descr_ac3_bsid_flag = -1;
+static int hf_mpeg_descr_ac3_mainid_flag = -1;
+static int hf_mpeg_descr_ac3_asvc_flag = -1;
+static int hf_mpeg_descr_ac3_reserved = -1;
+static int hf_mpeg_descr_ac3_component_type_reserved_flag = -1;
+static int hf_mpeg_descr_ac3_component_type_full_service_flag = -1;
+static int hf_mpeg_descr_ac3_component_type_service_type_flags = -1;
+static int hf_mpeg_descr_ac3_component_type_number_of_channels_flags = -1;
+static int hf_mpeg_descr_ac3_bsid = -1;
+static int hf_mpeg_descr_ac3_mainid = -1;
+static int hf_mpeg_descr_ac3_asvc = -1;
+static int hf_mpeg_descr_ac3_additional_info = -1;
+
+static gint ett_mpeg_descriptor_ac3_component_type = -1;
+
+#define MPEG_DESCR_AC3_COMPONENT_TYPE_FLAG_MASK 0x80
+#define MPEG_DESCR_AC3_BSID_FLAG_MASK 0x40
+#define MPEG_DESCR_AC3_MAINID_FLAG_MASK 0x20
+#define MPEG_DESCR_AC3_ASVC_FLAG_MASK 0x10
+#define MPEG_DESCR_AC3_RESERVED_MASK 0x0F
+
+#define MPEG_DESCR_AC3_COMPONENT_TYPE_RESERVED_FLAG_MASK 0x80
+#define MPEG_DESCR_AC3_COMPONENT_TYPE_FULL_SERVICE_FLAG_MASK 0x40
+#define MPEG_DESCR_AC3_COMPONENT_TYPE_SERVICE_TYPE_FLAGS_MASK 0x38
+#define MPEG_DESCR_AC3_COMPONENT_TYPE_NUMBER_OF_CHANNELS_FLAGS 0x07
+
+static const value_string mpeg_descr_ac3_component_type_flag_vals[] = {
+ { 0x0, "Component type field not included" },
+ { 0x1, "Component type field included" },
+
+ { 0x0, NULL }
+};
+
+static const value_string mpeg_descr_ac3_bsid_flag_vals[] = {
+ { 0x0, "BSID field not included" },
+ { 0x1, "BSID field included" },
+
+ { 0x0, NULL }
+};
+
+static const value_string mpeg_descr_ac3_mainid_flag_vals[] = {
+ { 0x0, "Main ID field not included" },
+ { 0x1, "Main ID field included" },
+
+ { 0x0, NULL }
+};
+
+static const value_string mpeg_descr_ac3_asvc_flag_vals[] = {
+ { 0x0, "ASVC field not included" },
+ { 0x1, "ASVC field included" },
+
+ { 0x0, NULL }
+};
+
+static const value_string mpeg_descr_ac3_component_type_full_service_flag_vals[] = {
+ { 0x0, "Decoded audio stream is intended to be combined with another decoded audio stream" },
+ { 0x1, "Decoded audio stream is a full service" },
+
+ { 0x0, NULL}
+};
+
+static const value_string mpeg_descr_ac3_component_type_service_type_flags_vals[] = {
+ { 0x0, "Complete Main (CM)" },
+ { 0x1, "Music and effects (ME)" },
+ { 0x2, "Visually impaired (VI)" },
+ { 0x3, "Hearing impaired (HI)" },
+ { 0x4, "Dialogue (D)" },
+ { 0x5, "Commentary (C)" },
+ { 0x6, "Emergency (E)" },
+ { 0x7, "Voiceover (VO) if Full Service Flag is 0, else Karaoke" },
+
+ { 0x0, NULL }
+};
+
+static const value_string mpeg_descr_ac3_component_type_number_of_channels_flags_vals[] = {
+ { 0x0, "Mono" },
+ { 0x1, "1+1 Mode" },
+ { 0x2, "2 Channel (stereo)" },
+ { 0x3, "2 Channel Dolby surround encoded (stereo)" },
+ { 0x4, "Multichannel audio (> 2 channels)" },
+
+ { 0x0, NULL }
+};
+
+static void
+proto_mpeg_descriptor_dissect_ac3(tvbuff_t *tvb, guint offset, guint8 len, proto_tree *tree)
+{
+ guint end = offset + len;
+ guint8 flags = 0, component_type = 0;
+
+ proto_item *ci = NULL;
+ proto_tree *component_type_tree = NULL;
+
+ flags = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_mpeg_descr_ac3_component_type_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_ac3_bsid_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_ac3_mainid_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_ac3_asvc_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_ac3_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ if (flags & MPEG_DESCR_AC3_COMPONENT_TYPE_FLAG_MASK) {
+ component_type = tvb_get_guint8(tvb, offset);
+ ci = proto_tree_add_text(tree, tvb, offset, 3, "Component Type 0x%02x", component_type);
+ component_type_tree = proto_item_add_subtree(ci, ett_mpeg_descriptor_ac3_component_type);
+ proto_tree_add_item(component_type_tree, hf_mpeg_descr_ac3_component_type_reserved_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(component_type_tree, hf_mpeg_descr_ac3_component_type_full_service_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(component_type_tree, hf_mpeg_descr_ac3_component_type_service_type_flags, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(component_type_tree, hf_mpeg_descr_ac3_component_type_number_of_channels_flags, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ }
+
+ if (flags & MPEG_DESCR_AC3_BSID_FLAG_MASK) {
+ proto_tree_add_item(tree, hf_mpeg_descr_ac3_bsid, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ }
+
+ if (flags & MPEG_DESCR_AC3_MAINID_FLAG_MASK) {
+ proto_tree_add_item(tree, hf_mpeg_descr_ac3_mainid, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ }
+
+ if (flags & MPEG_DESCR_AC3_ASVC_FLAG_MASK) {
+ proto_tree_add_item(tree, hf_mpeg_descr_ac3_asvc, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ }
+
+ if (offset < end)
+ proto_tree_add_item(tree, hf_mpeg_descr_ac3_additional_info, tvb, offset, end - offset, ENC_NA);
+}
+
+/* 0x73 Default Authority Descriptor */
+static int hf_mpeg_descr_default_authority_name = -1;
+
+static void
+proto_mpeg_descriptor_dissect_default_authority(tvbuff_t *tvb, guint offset, guint8 len, proto_tree *tree)
+{
+ proto_tree_add_item(tree, hf_mpeg_descr_default_authority_name, tvb, offset, len, ENC_ASCII|ENC_NA);
+}
+
+/* 0x76 Content Identifier Descriptor */
+static int hf_mpeg_descr_content_identifier_crid_type = -1;
+static int hf_mpeg_descr_content_identifier_crid_location = -1;
+static int hf_mpeg_descr_content_identifier_crid_length = -1;
+static int hf_mpeg_descr_content_identifier_crid_bytes = -1;
+static int hf_mpeg_descr_content_identifier_cird_ref = -1;
+
+#define MPEG_DESCR_CONTENT_IDENTIFIER_CRID_TYPE_MASK 0xFC
+#define MPEG_DESCR_CONTENT_IDENTIFIER_CRID_LOCATION_MASK 0x03
+
+static gint ett_mpeg_descriptor_content_identifier_crid = -1;
+
+static const value_string mpeg_descr_content_identifier_crid_type_vals[] = {
+ { 0x00, "No type defined" },
+ { 0x01, "CRID references the item of content that this event is an instance of" },
+ { 0x02, "CRID references a series that this event belongs to" },
+ { 0x03, "CRID references a recommendation" },
+
+ { 0, NULL }
+};
+
+static const value_string mpeg_descr_content_identifier_crid_location_vals[] = {
+ { 0x00, "Carried explicitly within descriptor" },
+ { 0x01, "Carried in Content Identifier Table (CIT)" },
+
+ { 0, NULL }
+};
+
+static void
+proto_mpeg_descriptor_dissect_content_identifier(tvbuff_t *tvb, guint offset, guint8 len, proto_tree *tree)
+{
+ guint end = offset + len, crid_len = 0;
+ guint8 crid = 0, crid_location = 0, crid_type = 0;
+
+ proto_item *ci;
+ proto_tree *crid_tree;
+
+ while (offset < end) {
+ crid = tvb_get_guint8(tvb, offset);
+ crid_type = (crid & MPEG_DESCR_CONTENT_IDENTIFIER_CRID_TYPE_MASK) >> 2;
+ crid_location = crid & MPEG_DESCR_CONTENT_IDENTIFIER_CRID_LOCATION_MASK;
+
+ if (crid_location == 0) {
+ crid_len = 2 + tvb_get_guint8(tvb, offset + 1);
+ } else if (crid_location == 1) {
+ crid_len = 3;
+ } else {
+ crid_len = 1;
+ }
+
+ ci = proto_tree_add_text(tree, tvb, offset, crid_len, "CRID type=0%02x", crid_type);
+ crid_tree = proto_item_add_subtree(ci, ett_mpeg_descriptor_content_identifier_crid);
+
+ proto_tree_add_item(crid_tree, hf_mpeg_descr_content_identifier_crid_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(crid_tree, hf_mpeg_descr_content_identifier_crid_location, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ if (crid_location == 0x00) {
+ crid_len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(crid_tree, hf_mpeg_descr_content_identifier_crid_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(crid_tree, hf_mpeg_descr_content_identifier_crid_bytes, tvb, offset, crid_len, ENC_NA);
+ offset += crid_len;
+ } else if (crid_location == 0x01) {
+ proto_tree_add_item(crid_tree, hf_mpeg_descr_content_identifier_cird_ref, tvb, offset, 2, ENC_BIG_ENDIAN);
+ }
+
+ }
+
+
+}
+
+/* 0x7F Extension Descriptor */
+static int hf_mpeg_descr_extension_tag_extension = -1;
+static int hf_mpeg_descr_extension_data = -1;
+
+static const value_string mpeg_descr_extension_tag_extension_vals[] = {
+ { 0x00, "Image Icon Descriptor" },
+ { 0x01, "CPCM Delivery Dignalling Descriptor" },
+ { 0x02, "CP Descriptor" },
+ { 0x03, "CP Identifier Descriptor" },
+ { 0x04, "T2 Delivery System Descriptor" },
+ { 0x05, "SH Delivery System Descriptor" },
+ { 0x06, "Supplementary Audio Descriptor" },
+ { 0x07, "Network Change Notify Descriptor" },
+ { 0x08, "Message Descriptor" },
+ { 0x09, "Target Region Descriptor" },
+ { 0x0A, "Target Region Name Descriptor" },
+ { 0x0B, "Service Relocated Descriptor" },
+
+ { 0x0, NULL }
+};
+
+static void
+proto_mpeg_descriptor_dissect_extension(tvbuff_t *tvb, guint offset, guint8 len, proto_tree *tree)
+{
+ proto_tree_add_item(tree, hf_mpeg_descr_extension_tag_extension, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ len--;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_extension_data, tvb, offset, len, ENC_NA);
+}
+
+/* 0xA2 Logon Initialize Descriptor */
+static int hf_mpeg_descr_logon_initialize_group_id = -1;
+static int hf_mpeg_descr_logon_initialize_logon_id = -1;
+static int hf_mpeg_descr_logon_initialize_continuous_carrier_reserved = -1;
+static int hf_mpeg_descr_logon_initialize_continuous_carrier = -1;
+static int hf_mpeg_descr_logon_initialize_security_handshake_required = -1;
+static int hf_mpeg_descr_logon_initialize_prefix_flag = -1;
+static int hf_mpeg_descr_logon_initialize_data_unit_labelling_flag = -1;
+static int hf_mpeg_descr_logon_initialize_mini_slot_flag = -1;
+static int hf_mpeg_descr_logon_initialize_contention_based_mini_slot_flag = -1;
+static int hf_mpeg_descr_logon_initialize_capacity_type_flag_reserved = -1;
+static int hf_mpeg_descr_logon_initialize_capacity_type_flag = -1;
+static int hf_mpeg_descr_logon_initialize_traffic_burst_type = -1;
+static int hf_mpeg_descr_logon_initialize_connectivity = -1;
+static int hf_mpeg_descr_logon_initialize_return_vpi_reserved = -1;
+static int hf_mpeg_descr_logon_initialize_return_vpi = -1;
+static int hf_mpeg_descr_logon_initialize_return_vci = -1;
+static int hf_mpeg_descr_logon_initialize_return_signalling_vpi_reserved = -1;
+static int hf_mpeg_descr_logon_initialize_return_signalling_vpi = -1;
+static int hf_mpeg_descr_logon_initialize_return_signalling_vci = -1;
+static int hf_mpeg_descr_logon_initialize_forward_signalling_vpi_reserved = -1;
+static int hf_mpeg_descr_logon_initialize_forward_signalling_vpi = -1;
+static int hf_mpeg_descr_logon_initialize_forward_signalling_vci = -1;
+
+static int hf_mpeg_descr_logon_initialize_return_trf_pid = -1;
+static int hf_mpeg_descr_logon_initialize_return_ctrl_mngm_pid_reserved = -1;
+static int hf_mpeg_descr_logon_initialize_return_ctrl_mngm_pid = -1;
+
+static int hf_mpeg_descr_logon_initialize_cra_level = -1;
+static int hf_mpeg_descr_logon_initialize_vbdc_max_reserved = -1;
+static int hf_mpeg_descr_logon_initialize_vbdc_max = -1;
+static int hf_mpeg_descr_logon_initialize_rbdc_max = -1;
+static int hf_mpeg_descr_logon_initialize_rbdc_timeout = -1;
+
+
+#define MPEG_DESCR_LOGON_INITIALIZE_CONTINUOUS_CARRIER_RESERVED_MASK 0xC0
+#define MPEG_DESCR_LOGON_INITIALIZE_CONTINUOUS_CARRIER_MASK 0x20
+#define MPEG_DESCR_LOGON_INITIALIZE_SECURITY_HANDSHAKE_REQUIRED_MASK 0x10
+#define MPEG_DESCR_LOGON_INITIALIZE_PREFIX_FLAG_MASK 0x08
+#define MPEG_DESCR_LOGON_INITIALIZE_DATA_UNIT_LABELLING_FLAG_MASK 0x04
+#define MPEG_DESCR_LOGON_INITIALIZE_MINI_SLOT_FLAG_MASK 0x02
+#define MPEG_DESCR_LOGON_INITIALIZE_CONTENTION_BASED_MINI_SLOT_FLAG_MASK 0x01
+
+#define MPEG_DESCR_LOGON_INITIALIZE_CAPACITY_TYPE_FLAG_RESERVED_MASK 0x80
+#define MPEG_DESCR_LOGON_INITIALIZE_CAPACITY_TYPE_FLAG_MASK 0x40
+#define MPEG_DESCR_LOGON_INITIALIZE_TRAFFIC_BURST_TYPE_MASK 0x20
+
+#define MPEG_DESCR_LOGON_INITIALIZE_RETURN_TRF_PID_MASK 0x1FFF
+#define MPEG_DESCR_LOGON_INITIALIZE_RETURN_CTRL_MNGM_PID_RESERVED_MASK 0xE000
+#define MPEG_DESCR_LOGON_INITIALIZE_RETURN_CTRL_MNGM_PID_MASK 0x1FFF
+
+#define MPEG_DESCR_LOGON_INITIALIZE_CONNECTIVITY_MASK 0x1000
+#define MPEG_DESCR_LOGON_INITIALIZE_RETURN_VPI_RESERVED_MASK 0x0F00
+#define MPEG_DESCR_LOGON_INITIALIZE_RETURN_VPI_MASK 0x00FF
+
+#define MPEG_DESCR_LOGON_INITIALIZE_RETURN_SIGNALLING_VPI_RESERVED_MASK 0x0F00
+#define MPEG_DESCR_LOGON_INITIALIZE_RETURN_SIGNALLING_VPI_MASK 0x00FF
+#define MPEG_DESCR_LOGON_INITIALIZE_FORWARD_SIGNALLING_VPI_RESERVED_MASK 0xFF00
+#define MPEG_DESCR_LOGON_INITIALIZE_FORWARD_SIGNALLING_VPI_MASK 0x00FF
+
+#define MPEG_DESCR_LOGON_INITIALIZE_VDBC_MAX_RESERVED_MASK 0xF800
+#define MPEG_DESCR_LOGON_INITIALIZE_VDBC_MAX_MASK 0x0700
+
+
+static void
+proto_mpeg_descriptor_dissect_logon_initialize(tvbuff_t *tvb, guint offset, guint8 len, proto_tree *tree)
+{
+
+ guint end = offset + len;
+ guint8 flags = 0;
+ guint16 flags2 = 0;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_group_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_logon_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_continuous_carrier_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_continuous_carrier, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_security_handshake_required, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_prefix_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_data_unit_labelling_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_mini_slot_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_contention_based_mini_slot_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ flags = tvb_get_guint8(tvb, offset);
+
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_capacity_type_flag_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_capacity_type_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_traffic_burst_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ if (flags & MPEG_DESCR_LOGON_INITIALIZE_TRAFFIC_BURST_TYPE_MASK) {
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_connectivity, tvb, offset, 2, ENC_BIG_ENDIAN);
+ flags2 = tvb_get_ntohs(tvb, offset);
+ if (flags2 & MPEG_DESCR_LOGON_INITIALIZE_CONNECTIVITY_MASK) {
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_return_signalling_vpi_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_return_signalling_vpi, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_return_signalling_vci, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_forward_signalling_vpi_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_forward_signalling_vpi, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_forward_signalling_vci, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ } else {
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_return_vpi_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_return_vpi, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_return_vci, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ }
+ } else {
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_return_trf_pid, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_return_ctrl_mngm_pid_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_return_ctrl_mngm_pid, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ }
+
+ if (offset < end && (flags & MPEG_DESCR_LOGON_INITIALIZE_CAPACITY_TYPE_FLAG_MASK)) {
+
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_cra_level, tvb, offset, 3, ENC_BIG_ENDIAN);
+ offset += 3;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_vbdc_max_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_vbdc_max, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_rbdc_max, tvb, offset, 3, ENC_BIG_ENDIAN);
+ offset += 3;
+
+ proto_tree_add_item(tree, hf_mpeg_descr_logon_initialize_rbdc_timeout, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ }
+}
+
+/* 0xA7 RCS Content Descriptor */
+static int hf_mpeg_descr_rcs_content_table_id = -1;
+
+static void
+proto_mpeg_descriptor_dissect_rcs_content(tvbuff_t *tvb, guint offset, guint8 len, proto_tree *tree)
+{
+ guint end = offset + len;
+
+ while (offset < end) {
+ proto_tree_add_item(tree, hf_mpeg_descr_rcs_content_table_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ }
+}
+
+/* Common dissector */
+
+guint
+proto_mpeg_descriptor_dissect(tvbuff_t *tvb, guint offset, proto_tree *tree)
+{
+ guint8 tag = 0, len = 0;
+
+ proto_item *di = NULL;
+ proto_tree *descriptor_tree = NULL;
+
+ tag = tvb_get_guint8(tvb, offset);
+ len = tvb_get_guint8(tvb, offset + 1);
+
+
+ di = proto_tree_add_text(tree, tvb, offset, len + 2, "Descriptor Tag=0x%02x", tag);
+ descriptor_tree = proto_item_add_subtree(di, ett_mpeg_descriptor);
+
+ proto_tree_add_item(descriptor_tree, hf_mpeg_descriptor_tag, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(descriptor_tree, hf_mpeg_descriptor_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ if (len == 0)
+ return 2;
+
+ switch (tag) {
+ case 0x02: /* Video Stream Descriptor */
+ proto_mpeg_descriptor_dissect_video_stream(tvb, offset, descriptor_tree);
+ break;
+ case 0x03: /* Audio Stream Descriptor */
+ proto_mpeg_descriptor_dissect_audio_stream(tvb, offset, descriptor_tree);
+ break;
+ case 0x06: /* Data Stream Alignment Descriptor */
+ proto_mpeg_descriptor_dissect_data_stream_alignment(tvb, offset, descriptor_tree);
+ break;
+ case 0x09: /* CA Descriptor */
+ proto_mpeg_descriptor_dissect_ca(tvb, offset, len, descriptor_tree);
+ break;
+ case 0x0A: /* ISO 639 Language Descriptor */
+ proto_mpeg_descriptor_dissect_iso639(tvb, offset, len, descriptor_tree);
+ break;
+ case 0x0B: /* System Clock Descriptor */
+ proto_mpeg_descriptor_dissect_system_clock(tvb, offset, descriptor_tree);
+ break;
+ case 0x0E: /* Maximum Bitrate Descriptor */
+ proto_mpeg_descriptor_dissect_max_bitrate(tvb, offset, descriptor_tree);
+ break;
+ case 0x10: /* Smoothing Buffer Descriptor */
+ proto_mpeg_descriptor_dissect_smoothing_buffer(tvb, offset, descriptor_tree);
+ break;
+ case 0x11: /* STD Descriptor */
+ proto_mpeg_descriptor_dissect_std(tvb, offset, descriptor_tree);
+ break;
+ case 0x13: /* Carousel Identifier Descriptor */
+ proto_mpeg_descriptor_dissect_carousel_identifier(tvb, offset, len, descriptor_tree);
+ break;
+ case 0x14: /* Association Tag Descriptor */
+ proto_mpeg_descriptor_dissect_association_tag(tvb, offset, len, descriptor_tree);
+ break;
+ case 0x28: /* AVC Video Descriptor */
+ proto_mpeg_descriptor_dissect_avc_vid(tvb, offset, descriptor_tree);
+ break;
+ case 0x40: /* Network Name Descriptor */
+ proto_mpeg_descriptor_dissect_network_name(tvb, offset, len, descriptor_tree);
+ break;
+ case 0x41: /* Service List Descriptor */
+ proto_mpeg_descriptor_dissect_service_list(tvb, offset, len, descriptor_tree);
+ break;
+ case 0x42: /* Stuffing Descriptor */
+ proto_mpeg_descriptor_stuffing(tvb, offset, len, descriptor_tree);
+ break;
+ case 0x43: /* Satellite Delivery System Descriptor */
+ proto_mpeg_descriptor_dissect_satellite_delivery(tvb, offset, descriptor_tree);
+ break;
+ case 0x44: /* Cable Delivery System Descriptor */
+ proto_mpeg_descriptor_dissect_cable_delivery(tvb, offset, descriptor_tree);
+ break;
+ case 0x45: /* VBI Data Descriptor */
+ proto_mpeg_descriptor_dissect_vbi_data(tvb, offset, len, descriptor_tree);
+ break;
+ case 0x47: /* Bouquet Name Descriptor */
+ proto_mpeg_descriptor_dissect_bouquet_name(tvb, offset, len, descriptor_tree);
+ break;
+ case 0x48: /* Service Descriptor */
+ proto_mpeg_descriptor_dissect_service(tvb, offset, descriptor_tree);
+ break;
+ case 0x4A: /* Linkage Descriptor */
+ proto_mpeg_descriptor_dissect_linkage(tvb, offset, len, descriptor_tree);
+ break;
+ case 0x4D: /* Short Event Descriptor */
+ proto_mpeg_descriptor_dissect_short_event(tvb, offset, descriptor_tree);
+ break;
+ case 0x4E: /* Extended Event Descriptor */
+ proto_mpeg_descriptor_dissect_extended_event(tvb, offset, descriptor_tree);
+ break;
+ case 0x50: /* Component Descriptor */
+ proto_mpeg_descriptor_dissect_component(tvb, offset, len, descriptor_tree);
+ break;
+ case 0x52: /* Stream Identifier Descriptor */
+ proto_mpeg_descriptor_dissect_stream_identifier(tvb, offset, descriptor_tree);
+ break;
+ case 0x53: /* CA Identifier Descriptor */
+ proto_mpeg_descriptor_dissect_ca_identifier(tvb, offset, len, descriptor_tree);
+ break;
+ case 0x54: /* Content Descriptor */
+ proto_mpeg_descriptor_dissect_content(tvb, offset, len, descriptor_tree);
+ break;
+ case 0x55: /* Parental Rating Descriptor */
+ proto_mpeg_descriptor_dissect_parental_rating(tvb, offset, descriptor_tree);
+ break;
+ case 0x56: /* Teletext Descriptor */
+ proto_mpeg_descriptor_dissect_teletext(tvb, offset, len, descriptor_tree);
+ break;
+ case 0x58: /* Local Time Offset Descriptor */
+ proto_mpeg_descriptor_dissect_local_time_offset(tvb, offset, len, descriptor_tree);
+ break;
+ case 0x59: /* Subtitling Descriptor */
+ proto_mpeg_descriptor_dissect_subtitling(tvb, offset, len, descriptor_tree);
+ break;
+ case 0x5A: /* Terrestrial Delivery System Descriptor */
+ proto_mpeg_descriptor_dissect_terrestrial_delivery(tvb, offset, descriptor_tree);
+ break;
+ case 0x5F: /* Private Data Specifier Descriptor */
+ proto_mpeg_descriptor_dissect_private_data_specifier(tvb, offset, descriptor_tree);
+ break;
+ case 0x64: /* Data Broadcast Descriptor */
+ proto_mpeg_descriptor_dissect_data_bcast(tvb, offset, descriptor_tree);
+ break;
+ case 0x66: /* Data Broadcast ID Descriptor */
+ proto_mpeg_descriptor_dissect_data_bcast_id(tvb, offset, len, descriptor_tree);
+ break;
+ case 0x6A: /* AC-3 Descriptor */
+ proto_mpeg_descriptor_dissect_ac3(tvb, offset, len, descriptor_tree);
+ break;
+ case 0x73: /* Default Authority Descriptor */
+ proto_mpeg_descriptor_dissect_default_authority(tvb, offset, len, descriptor_tree);
+ break;
+ case 0x76: /* Content Identifier Descriptor */
+ proto_mpeg_descriptor_dissect_content_identifier(tvb, offset, len, descriptor_tree);
+ break;
+ case 0x7F: /* Extension Descriptor */
+ proto_mpeg_descriptor_dissect_extension(tvb, offset, len, descriptor_tree);
+ break;
+ case 0xA2: /* Logon Initialize Descriptor */
+ proto_mpeg_descriptor_dissect_logon_initialize(tvb, offset, len, descriptor_tree);
+ break;
+ case 0xA7: /* RCS Content Descriptor */
+ proto_mpeg_descriptor_dissect_rcs_content(tvb, offset, len, descriptor_tree);
+ break;
+ default:
+ proto_tree_add_item(descriptor_tree, hf_mpeg_descriptor_data, tvb, offset, len, ENC_NA);
+ break;
+ }
+
+
+ return len + 2;
+}
+
+
+void
+proto_register_mpeg_descriptor(void)
+{
+
+ static hf_register_info hf[] = {
+ { &hf_mpeg_descriptor_tag, {
+ "Descriptor Tag", "mpeg_descr.tag",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descriptor_tag_vals), 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descriptor_length, {
+ "Descriptor Length", "mpeg_descr.len",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descriptor_data, {
+ "Descriptor Data", "mpeg_descr.data",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0x02 Video Stream Descriptor */
+ { &hf_mpeg_descr_video_stream_multiple_frame_rate_flag, {
+ "Multiple Frame Rate Flag", "mpeg_descr.video_stream.multiple_frame_rate_flag",
+ FT_UINT8, BASE_DEC, VALS(mpeg_descr_video_stream_multiple_frame_rate_flag_vals),
+ MPEG_DESCR_VIDEO_STREAM_MULTIPLE_FRAME_RATE_FLAG_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_video_stream_frame_rate_code, {
+ "Frame Rate Code", "mpeg_descr.video_stream.frame_rate_code",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_VIDEO_STREAM_FRAME_RATE_CODE_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_video_stream_mpeg1_only_flag, {
+ "MPEG1 Only Flag", "mpeg_descr.video_stream.mpeg1_only_flag",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_VIDEO_STREAM_MPEG1_ONLY_FLAG_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_video_stream_constrained_parameter_flag, {
+ "Constrained Parameter Flag", "mpeg_descr.video_stream.constrained_parameter_flag",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_VIDEO_STREAM_CONSTRAINED_PARAMETER_FLAG_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_video_stream_still_picture_flag, {
+ "Still Picture Flag", "mpeg_descr.video_stream.still_picture_flag",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_VIDEO_STREAM_STILL_PICTURE_FLAG_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_video_stream_profile_and_level_indication, {
+ "Profile and Level Indication", "mpeg_descr.video_stream.profile_level_ind",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_video_stream_chroma_format, {
+ "Chroma Format", "mpeg_descr.video_stream.chroma_format",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_video_stream_frame_rate_extension_flag, {
+ "Frame Rate Extension Flag", "mpeg_descr.video_stream.frame_rate_extension_flag",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_VIDEO_STREAM_FRAME_RATE_EXTENSION_FLAG_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_video_stream_reserved, {
+ "Reserved", "mpeg_descr.video_stream.reserved",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_VIDEO_STREAM_RESERVED_MASK, NULL, HFILL
+ } },
+
+ /* 0x03 Audio Stream Descriptor */
+ { &hf_mpeg_descr_audio_stream_free_format_flag, {
+ "Free Format Flag", "mpeg_descr.audio_stream.free_format_flag",
+ FT_UINT8, BASE_DEC, VALS(mpeg_descr_audio_stream_free_format_flag_vals), MPEG_DESCR_AUDIO_STREAM_FREE_FORMAT_FLAG_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_audio_stream_id, {
+ "ID", "mpeg_descr.audio_stream.id",
+ FT_UINT8, BASE_DEC, VALS(mpeg_descr_audio_stream_id_vals), MPEG_DESCR_AUDIO_STREAM_ID_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_audio_stream_layer, {
+ "Layer", "mpeg_descr.audio_stream.layer",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_AUDIO_STREAM_LAYER_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_audio_stream_variable_rate_audio_indicator, {
+ "Variable Rate Audio Indicator", "mpeg_descr.audio_stream.vbr_indicator",
+ FT_UINT8, BASE_DEC, VALS(mpeg_descr_audio_stream_variable_rate_audio_indicator_vals),
+ MPEG_DESCR_AUDIO_STREAM_VARIABLE_RATE_AUDIO_INDICATOR_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_audio_stream_reserved, {
+ "Reserved", "mpeg_descr.audio_stream.reserved",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_AUDIO_STREAM_RESERVED_MASK, NULL, HFILL
+ } },
+
+ /* 0x06 Data Stream Alignment Descriptor */
+ { &hf_mpeg_descr_data_stream_alignment, {
+ "Data Stream Alignment", "mpeg_descr.data_stream_alignment.alignment",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_data_stream_alignment_vals), 0, NULL, HFILL
+ } },
+
+ /* 0x09 CA Descriptor */
+ { &hf_mpeg_descr_ca_system_id, {
+ "System ID", "mpeg_descr.ca.sys_id",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_ca_reserved, {
+ "Reserved", "mpeg_descr.ca.reserved",
+ FT_UINT16, BASE_HEX, NULL, MPEG_DESCR_CA_RESERVED_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_ca_pid, {
+ "CA PID", "mpeg_descr.ca.pid",
+ FT_UINT16, BASE_HEX, NULL, MPEG_DESCR_CA_PID_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_ca_private, {
+ "Private bytes", "mpeg_descr.ca.private",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0x0A ISO 639 Language Descriptor */
+ { &hf_mpeg_descr_iso639_lang, {
+ "ISO 639 Language Code", "mpeg_descr.lang.code",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_iso639_type, {
+ "ISO 639 Language Type", "mpeg_descr.lang.type",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_iso639_type_vals), 0, NULL, HFILL
+ } },
+
+ /* 0x0B System Clock Descriptor */
+ { &hf_mpeg_descr_system_clock_external_clock_reference_indicator, {
+ "External Clock Reference Indicator", "mpeg_descr.sys_clk.external_clk_ref_ind",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_SYSTEM_CLOCK_EXTERNAL_CLOCK_REFERENCE_INDICATOR_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_system_clock_reserved1, {
+ "Reserved", "mpeg_descr.sys_clk.reserved1",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_SYSTEM_CLOCK_RESERVED1_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_system_clock_accuracy_integer, {
+ "Accuracy Integer", "mpeg_descr.sys_clk.accuracy_integer",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_SYSTEM_CLOCK_ACCURACY_INTEGER_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_system_clock_accuracy_exponent, {
+ "Accuracy Exponent", "mpeg_descr.sys_clk.accuracy_exponent",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_SYSTEM_CLOCK_ACCURACY_EXPONENT_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_system_clock_reserved2, {
+ "Reserved", "mpeg_descr.sys_clk.reserved2",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_SYSTEM_CLOCK_RESERVED2_MASK, NULL, HFILL
+ } },
+
+ /* 0x0E Maximum Bitrate Descriptor */
+ { &hf_mpeg_descr_max_bitrate_reserved, {
+ "Maximum Bitrate Reserved", "mpeg_descr.max_bitrate.reserved",
+ FT_UINT24, BASE_HEX, NULL, MPEG_DESCR_MAX_BITRATE_RESERVED_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_max_bitrate, {
+ "Maximum Bitrate", "mpeg_descr.max_bitrate.rate",
+ FT_UINT24, BASE_DEC, NULL, MPEG_DESCR_MAX_BITRATE_MASK, NULL, HFILL
+ } },
+
+ /* 0x10 Smoothing Buffer Descriptor */
+ { &hf_mpeg_descr_smoothing_buffer_reserved1, {
+ "Reserved", "mpeg_descr.smoothing_buf.reserved1",
+ FT_UINT24, BASE_HEX, NULL, MPEG_DESCR_SMOOTHING_BUFFER_RESERVED1_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_smoothing_buffer_leak_rate, {
+ "Leak Rate", "mpeg_descr.smoothing_buf.leak_rate",
+ FT_UINT24, BASE_DEC, NULL, MPEG_DESCR_SMOOTHING_BUFFER_LEAK_RATE_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_smoothing_buffer_reserved2, {
+ "Reserved", "mpeg_descr.smoothing_buf.reserved2",
+ FT_UINT24, BASE_HEX, NULL, MPEG_DESCR_SMOOTHING_BUFFER_RESERVED2_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_smoothing_buffer_size, {
+ "Buffer Size", "mpeg_descr.smoothing_buf.size",
+ FT_UINT24, BASE_DEC, NULL, MPEG_DESCR_SMOOTHING_BUFFER_SIZE_MASK, NULL, HFILL
+ } },
+
+ /* 0x11 STD Descriptor */
+ { &hf_mpeg_descr_std_reserved, {
+ "Reserved", "mpeg_descr.std.reserved",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_STD_RESERVED_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_std_leak_valid, {
+ "Leak Valid", "mpeg_descr.std.leak_valid",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_STD_LEAK_VALID_MASK, NULL, HFILL
+ } },
+
+ /* 0x13 Carousel Identifier Descriptor */
+ { &hf_mpeg_descr_carousel_identifier_id, {
+ "Carousel ID", "mpeg_descr.carousel_identifier.id",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_carousel_identifier_format_id, {
+ "Format ID", "mpeg_descr.carousel_identifier.format_id",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_carousel_identifier_format_id_vals), 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_carousel_identifier_module_version, {
+ "Module Version", "mpeg_descr.carousel_identifier.module_version",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_carousel_identifier_module_id, {
+ "Module ID", "mpeg_descr.carousel_identifier.module_id",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_carousel_identifier_block_size, {
+ "Block Size", "mpeg_descr.carousel_identifier.block_size",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_carousel_identifier_module_size, {
+ "Module Size", "mpeg_descr.carousel_identifier.module_size",
+ FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_carousel_identifier_compression_method, {
+ "Compression Method", "mpeg_descr.carousel_identifier.comp_method",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_carousel_identifier_original_size, {
+ "Original Size", "mpeg_descr.carousel_identifier.orig_size",
+ FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_carousel_identifier_timeout, {
+ "Timeout", "mpeg_descr.carousel_identifier.timeout",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_carousel_identifier_object_key_len, {
+ "Object Key Length", "mpeg_descr.carousel_identifier.key_len",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_carousel_identifier_object_key_data, {
+ "Object Key Data", "mpeg_descr.carousel_identifier.key_data",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_carousel_identifier_private, {
+ "Private Bytes", "mpeg_descr.carousel_identifier.private",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0x14 Association Tag Descriptor */
+ { &hf_mpeg_descr_association_tag, {
+ "Association Tag", "mpeg_descr.assoc_tag.tag",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_association_tag_use, {
+ "Use", "mpeg_descr.assoc_tag.use",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_association_tag_selector_len, {
+ "Selector Length", "mpeg_descr.assoc_tag.selector_len",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_association_tag_transaction_id, {
+ "Transaction ID", "mpeg_descr.assoc_tag.transaction_id",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_association_tag_timeout, {
+ "Timeout", "mpeg_descr.assoc_tag.timeout",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_association_tag_selector_bytes, {
+ "Selector Bytes", "mpeg_descr.assoc_tag.selector_bytes",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_association_tag_private_bytes, {
+ "Private Bytes", "mpeg_descr.assoc_tag.private_bytes",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0x28 AVC Video Descriptor */
+ { &hf_mpeg_descr_avc_vid_profile_idc, {
+ "Profile IDC", "mpeg_descr.avc_vid.profile_idc",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_avc_vid_constraint_set0_flag, {
+ "Constraint Set0 Flag", "mpeg_descr.avc_vid.contraint_set0",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_AVC_VID_CONSTRAINT_SET0_FLAG_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_avc_vid_constraint_set1_flag, {
+ "Constraint Set1 Flag", "mpeg_descr.avc_vid.contraint_set1",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_AVC_VID_CONSTRAINT_SET1_FLAG_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_avc_vid_constraint_set2_flag, {
+ "Constraint Set2 Flag", "mpeg_descr.avc_vid.contraint_set2",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_AVC_VID_CONSTRAINT_SET2_FLAG_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_avc_vid_compatible_flags, {
+ "Constraint Compatible Flags", "mpeg_descr.avc_vid.compatible_flags",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_AVC_VID_COMPATIBLE_FLAGS_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_avc_vid_level_idc, {
+ "Level IDC", "mpeg_descr.avc_vid.level_idc",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_avc_vid_still_present, {
+ "AVC Still Present", "mpeg_descr.avc_vid.still_present",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_AVC_VID_STILL_PRESENT_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_avc_vid_24h_picture_flag, {
+ "AVC 24 Hour Picture Flag", "mpeg_descr.avc_vid.24h_picture_flag",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_AVC_VID_24H_PICTURE_FLAG_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_avc_vid_reserved, {
+ "Reserved", "mpeg_descr.avc_vid.reserved",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_AVC_VID_RESERVED_MASK, NULL, HFILL
+ } },
+
+ /* 0x40 Network Name Descriptor */
+ { &hf_mpeg_descr_network_name_descriptor, {
+ "Network Name", "mpeg_descr.net_name.name",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0x41 Service List Descriptor */
+ { &hf_mpeg_descr_service_list_id, {
+ "Service ID", "mpeg_descr.svc_list.id",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_service_list_type, {
+ "Service Type", "mpeg_descr.svc_list.type",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_service_type_vals), 0, NULL, HFILL
+ } },
+
+ /* 0x42 Stuffing Descriptor */
+ { &hf_mpeg_descr_stuffing, {
+ "Stuffing", "mpeg_descr.stuffing",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0x43 Satellite Delivery System Descriptor */
+ { &hf_mpeg_descr_satellite_delivery_frequency, {
+ "Frequency", "mpeg_descr.sat_delivery.freq",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_satellite_delivery_orbital_position, {
+ "Orbital Position", "mpeg_descr.sat_delivery.orbital_pos",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_satellite_delivery_west_east_flag, {
+ "West East Flag", "mpeg_descr.sat_delivery.west_east_flag",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_satellite_delivery_west_east_flag_vals),
+ MPEG_DESCR_SATELLITE_DELIVERY_WEST_EAST_FLAG_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_satellite_delivery_polarization, {
+ "Polarization", "mpeg_descr.sat_delivery.polarization",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_satellite_delivery_polarization_vals),
+ MPEG_DESCR_SATELLITE_DELIVERY_POLARIZATION_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_satellite_delivery_roll_off, {
+ "Roll Off", "mpeg_descr.sat_delivery.roll_off",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_satellite_delivery_roll_off_vals),
+ MPEG_DESCR_SATELLITE_DELIVERY_ROLL_OFF_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_satellite_delivery_zero, {
+ "Zero", "mpeg_descr.sat_delivery.zero",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_SATELLITE_DELIVERY_ZERO_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_satellite_delivery_modulation_system, {
+ "Modulation System", "mpeg_descr.sat_delivery.modulation_system",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_satellite_delivery_modulation_system_vals),
+ MPEG_DESCR_SATELLITE_DELIVERY_MODULATION_SYSTEM_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_satellite_delivery_modulation_type, {
+ "Modulation Type", "mpeg_descr.sat_delivery.modulation_type",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_satellite_delivery_modulation_type_vals),
+ MPEG_DESCR_SATELLITE_DELIVERY_MODULATION_TYPE_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_satellite_delivery_symbol_rate, {
+ "Symbol Rate", "mpeg_descr.sat_delivery.symbol_rate",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_satellite_delivery_fec_inner, {
+ "FEC Inner", "mpeg_descr.sat_delivery.fec_inner",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_satellite_delivery_fec_inner_vals),
+ MPEG_DESCR_SATELLITE_DELIVERY_FEC_INNER_MASK, NULL, HFILL
+ } },
+
+ /* 0x44 Cable Delivery System Descriptor */
+ { &hf_mpeg_descr_cable_delivery_frequency, {
+ "Frequency", "mpeg_descr.cable_delivery.freq",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_cable_delivery_reserved, {
+ "Reserved", "mpeg_descr.cable_delivery.reserved",
+ FT_UINT16, BASE_HEX, NULL, MPEG_DESCR_CABLE_DELIVERY_RESERVED_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_cable_delivery_fec_outer, {
+ "FEC Outer", "mpeg_descr.cable_delivery.fec_outer",
+ FT_UINT16, BASE_HEX, VALS(mpeg_descr_cable_delivery_fec_outer_vals),
+ MPEG_DESCR_CABLE_DELIVERY_FEC_OUTER_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_cable_delivery_modulation, {
+ "Modulation", "mpeg_descr.cable_delivery.modulation",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_cable_delivery_modulation_vals), 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_cable_delivery_symbol_rate, {
+ "Symbol Rate", "mpeg_descr.cable_delivery.sym_rate",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_cable_delivery_fec_inner, {
+ "FEC Inner", "mpeg_descr.cable_delivery.fec_inner",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_cable_delivery_fec_inner_vals),
+ MPEG_DESCR_CABLE_DELIVERY_FEC_INNER_MASK, NULL, HFILL
+ } },
+
+ /* 0x45 VBI Data Descriptor */
+ { &hf_mpeg_descr_vbi_data_service_id, {
+ "Data Service ID", "mpeg_descr.vbi_data.svc_id",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_vbi_data_service_id_vals), 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_vbi_data_descr_len, {
+ "Data Descriptor Length", "mpeg_descr.vbi_data.decr_len",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_vbi_data_reserved1, {
+ "Reserved", "mpeg_descr.vbi_data.reserved1",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_VBI_DATA_RESERVED1_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_vbi_data_field_parity, {
+ "Field Parity", "mpeg_descr.vbi_data.field_parity",
+ FT_UINT8, BASE_DEC, VALS(mpeg_descr_vbi_data_field_parity_vals),
+ MPEG_DESCR_VBI_DATA_FIELD_PARITY_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_vbi_data_line_offset, {
+ "Line offset", "mpeg_descr.vbi_data.line_offset",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_vbi_data_reserved2, {
+ "Reserved", "mpeg_descr.vbi_data.reserved2",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0x47 Bouquet Name Descriptor */
+ { &hf_mpeg_descr_bouquet_name, {
+ "Bouquet Name Descriptor", "mpeg_descr.bouquet_name.name",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0x48 Service Descriptor */
+ { &hf_mpeg_descr_service_type, {
+ "Service Type", "mpeg_descr.svc.type",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_service_type_vals), 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_service_provider_name_length, {
+ "Provider Name Length", "mpeg_descr.svc.provider_name_len",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_service_provider, {
+ "Service Provided Name", "mpeg_descr.svc.provider_name",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_service_name_length, {
+ "Service Name Length", "mpeg_descr.svc.svc_name_len",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_service_name, {
+ "Service Name", "mpeg_descr.svc.svc_name",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0x4A Linkage Descriptor */
+ { &hf_mpeg_descr_linkage_transport_stream_id, {
+ "Transport Stream ID", "mpeg_descr.linkage.tsid",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_linkage_original_network_id, {
+ "Original Network ID", "mpeg_descr.linkage.original_nid",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_linkage_service_id, {
+ "Service ID", "mpeg_descr.linkage.svc_id",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_linkage_linkage_type, {
+ "Linkage Type", "mpeg_descr.linkage.type",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_linkage_linkage_type_vals), 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_linkage_hand_over_type, {
+ "Hand-Over Type", "mpeg_descr.linkage.hand_over_type",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_LINKAGE_HAND_OVER_TYPE_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_linkage_reserved1, {
+ "Reserved", "mpeg_descr.linkage.reserved1",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_LINKAGE_RESERVED1_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_linkage_origin_type, {
+ "Origin Type", "mpeg_descr.linkage.origin_type",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_linkage_origin_type_vals), 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_linkage_network_id, {
+ "Network ID", "mpeg_descr.linkage.network_id",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_linkage_initial_service_id, {
+ "Initial Service ID", "mpeg_descr.linkage.initial_svc_id",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_linkage_target_event_id, {
+ "Target Event ID", "mpeg_descr.linkage.target_evt_id",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_linkage_target_listed, {
+ "Target Listed", "mpeg_descr.linkage.target_listed",
+ FT_UINT8, BASE_DEC, VALS(mpeg_descr_linkage_target_listed_vals),
+ MPEG_DESCR_LINKAGE_TARGET_LISTED_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_linkage_event_simulcast, {
+ "Event Simulcast", "mpeg_descr.linkage.evt_simulcast",
+ FT_UINT8, BASE_DEC, VALS(mpeg_descr_linkage_event_simulcast_vals),
+ MPEG_DESCR_LINKAGE_EVENT_SIMULCAST_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_linkage_reserved2, {
+ "Reserved", "mpeg_descr.linkage.reserved2",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_LINKAGE_RESERVED2_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_linkage_private_data_byte, {
+ "Private Data", "mpeg_descr.linkage.private_data",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_linkage_interactive_network_id, {
+ "Interactive Network ID", "mpeg_descr.interactive_network_id",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_linkage_population_id_loop_count, {
+ "Population ID loop count", "mpeg_descr.population_id_loop_count",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_linkage_population_id, {
+ "Population ID", "mpeg_descr.population_id",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_linkage_population_id_base, {
+ "Population ID Base", "mpeg_descr.population_id_base",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_linkage_population_id_mask, {
+ "Population ID Mask", "mpeg_descr.population_id_mask",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0x4D Short Event Descriptor */
+ { &hf_mpeg_descr_short_event_lang_code, {
+ "Language Code", "mpeg_descr.short_evt.lang_code",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_short_event_name_length, {
+ "Event Name Length", "mpeg_descr.short_evt.name_len",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_short_event_name, {
+ "Event Name", "mpeg_descr.short_evt.name",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_short_event_text_length, {
+ "Event Text Length", "mpeg_descr.short_evt.txt_len",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_short_event_text, {
+ "Event Text", "mpeg_descr.short_evt.txt",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0x4E Extended Event Descriptor */
+ { &hf_mpeg_descr_extended_event_descriptor_number, {
+ "Descriptor Number", "mpeg_descr.ext_evt.descr_num",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_EXTENDED_EVENT_DESCRIPTOR_NUMBER_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_extended_event_last_descriptor_number, {
+ "Last Descriptor Number", "mpeg_descr.ext_evt.last_descr_num",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_EXTENDED_EVENT_LAST_DESCRIPTOR_NUMBER_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_extended_event_lang_code, {
+ "Language Code", "mpeg_descr.ext_evt.lang_code",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_extended_event_length_of_items, {
+ "Length of items", "mpeg_descr.ext_evt.items_len",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_extended_event_item_description_length, {
+ "Item Description Length", "mpeg_descr.ext_evt.item_descr_len",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_extended_event_item_description_char, {
+ "Item Description", "mpeg_descr.ext_evt.item_descr",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_extended_event_item_length, {
+ "Item Length", "mpeg_descr.ext_evt.item_len",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_extended_event_item_char, {
+ "Item", "mpeg_descr.ext_evt.item",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_extended_event_text_length, {
+ "Text Length", "mpeg_descr.ext_evt.txt_len",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_extended_event_text_char, {
+ "Text", "mpeg_descr.ext_evt.txt",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0x50 Component Descriptor */
+ { &hf_mpeg_descr_component_reserved, {
+ "Reserved", "mpeg_descr.component.reserved",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_COMPONENT_RESERVED_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_component_stream_content, {
+ "Stream Content", "mpeg_descr.component.stream_content",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_component_stream_content_vals),
+ MPEG_DESCR_COMPONENT_STREAM_CONTENT_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_component_type, {
+ "Component Type", "mpeg_descr.component.type",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_component_content_type, {
+ "Stream Content and Component Type", "mpeg_descr.component.content_type",
+ FT_UINT16, BASE_HEX, VALS(mpeg_descr_component_content_type_vals),
+ MPEG_DESCR_COMPONENT_CONTENT_TYPE_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_component_tag, {
+ "Component Tag", "mpeg_descr.component.tag",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_component_lang_code, {
+ "Language Code", "mpeg_descr.component.lang_code",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_component_text, {
+ "Text", "mpeg_descr.component.text",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0x52 Stream Identifier Descriptor */
+ { &hf_mpeg_descr_stream_identifier_component_tag, {
+ "Component Tag", "mpeg_descr.stream_id.component_tag",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0x53 CA Identifier Descriptor */
+ { &hf_mpeg_descr_ca_identifier_system_id, {
+ "CA System ID", "mpeg_descr.ca_id.sys_id",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0x54 Content Descriptor */
+ { &hf_mpeg_descr_content_nibble, {
+ "Nibble Level 1 and 2", "mpeg_descr.content.nibble_1_2",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_content_nibble_vals), 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_content_nibble_level_1, {
+ "Nibble Level 1", "mpeg_descr.content.nibble_lvl_1",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_content_nibble_level_1_vals),
+ MPEG_DESCR_CONTENT_NIBBLE_LEVEL_1_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_content_nibble_level_2, {
+ "Nibble Level 2", "mpeg_descr.content.nibble_lvl_2",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_CONTENT_NIBBLE_LEVEL_2_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_content_user_byte, {
+ "User Byte", "mpeg_descr.content.user",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0x56 Teletext Descriptor */
+ { &hf_mpeg_descr_teletext_lang_code, {
+ "Language Code", "mpeg_descr.teletext.lang_code",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_teletext_type, {
+ "Teletext Type", "mpeg_descr.teletext.type",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_teletext_type_vals),
+ MPEG_DESCR_TELETEXT_TYPE_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_teletext_magazine_number, {
+ "Magazine Number", "mpeg_descr.teletext.magazine_num",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_TELETEXT_MAGAZINE_NUMBER_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_teletext_page_number, {
+ "Page Number", "mpeg_descr.teletext.page_num",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0x55 Parental Rating Descriptor */
+ { &hf_mpeg_descr_parental_rating_country_code, {
+ "Country Code", "mpeg_descr.parental_rating.country_code",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_parental_rating_rating, {
+ "Rating", "mpeg_descr.parental_rating.rating",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_parental_rating_vals), 0, NULL, HFILL
+ } },
+
+ /* 0x58 Local Time Offset Descriptor */
+ { &hf_mpeg_descr_local_time_offset_country_code, {
+ "Country Code", "mpeg_descr.local_time_offset.country_code",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_local_time_offset_region_id, {
+ "Region ID", "mpeg_descr.local_time_offset.region_id",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_LOCAL_TIME_OFFSET_COUNTRY_REGION_ID_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_local_time_offset_reserved, {
+ "Reserved", "mpeg_descr.local_time_offset.reserved",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_LOCAL_TIME_OFFSET_RESERVED_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_local_time_offset_polarity, {
+ "Time Offset Polarity", "mpeg_descr.local_time_offset.polarity",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_local_time_offset_polarity_vals),
+ MPEG_DESCR_LOCAL_TIME_OFFSET_POLARITY, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_local_time_offset_offset, {
+ "Time Offset", "mpeg_descr.local_time_offset.offset",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_local_time_offset_time_of_change, {
+ "Time of Change", "mpeg_descr.local_time_offset.time_of_change",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_local_time_offset_next_time_offset, {
+ "Next Time Offset", "mpeg_descr.local_time_offset.next_time_offset",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0x59 Subtitling Descriptor */
+ { &hf_mpeg_descr_subtitling_lang_code, {
+ "Language Code", "mpeg_descr.subtitling.lang_code",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_subtitling_type, {
+ "Subtitling Type", "mpeg_descr.subtitling.type",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_subtitling_type_vals), 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_subtitling_composition_page_id, {
+ "Composition Page ID", "mpeg_descr.subtitling.composition_page_id",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_subtitling_ancillary_page_id, {
+ "Ancillary Page ID", "mpeg_descr.subtitling.ancillary_page_id",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0x5A Terrestrial Delivery System Descriptor */
+ { &hf_mpeg_descr_terrestrial_delivery_centre_frequency, {
+ "Centre Frequency", "mpeg_descr_terr_delivery.centre_freq",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_terrestrial_delivery_bandwidth, {
+ "Bandwidth", "mpeg_descr_terr_delivery.bandwidth",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_terrestrial_delivery_bandwidth_vals),
+ MPEG_DESCR_TERRESTRIAL_DELIVERY_BANDWIDTH_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_terrestrial_delivery_priority, {
+ "Priority", "mpeg_descr_terr_delivery.priority",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_terrestrial_delivery_priority_vals),
+ MPEG_DESCR_TERRESTRIAL_DELIVERY_PRIORITY_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_terrestrial_delivery_time_slicing_indicator, {
+ "Time Slicing Indicator", "mpeg_descr_terr_delivery.time_slicing_ind",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_terrestrial_delivery_time_slicing_indicator_vals),
+ MPEG_DESCR_TERRESTRIAL_DELIVERY_TIME_SLICING_INDICATOR_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_terrestrial_delivery_mpe_fec_indicator, {
+ "MPE-FEC Indicator", "mpeg_descr_terr_delivery.mpe_fec_ind",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_terrestrial_delivery_mpe_fec_indicator_vals),
+ MPEG_DESCR_TERRESTRIAL_DELIVERY_MPE_FEC_INDICATOR_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_terrestrial_delivery_reserved1, {
+ "Reserved", "mpeg_descr_terr_delivery.reserved1",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_TERRESTRIAL_DELIVERY_RESERVED1_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_terrestrial_delivery_constellation, {
+ "Constellation", "mpeg_descr_terr_delivery.constellation",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_terrestrial_delivery_constellation_vals),
+ MPEG_DESCR_TERRESTRIAL_DELIVERY_CONSTELLATION_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_terrestrial_delivery_hierarchy_information, {
+ "Hierarchy Information", "mpeg_descr_terr_delivery.hierarchy_information",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_terrestrial_delivery_hierarchy_information_vals),
+ MPEG_DESCR_TERRESTRIAL_DELIVERY_HIERARCHY_INFORMATION_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_terrestrial_delivery_code_rate_hp_stream, {
+ "Code Rate High Priority Stream", "mpeg_descr_terr_delivery.code_rate_hp_stream",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_terrestrial_delivery_code_rate_vals),
+ MPEG_DESCR_TERRESTRIAL_DELIVERY_CODE_RATE_HP_STREAM_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_terrestrial_delivery_code_rate_lp_stream, {
+ "Code Rate Low Priority Stream", "mpeg_descr_terr_delivery.code_rate_lp_stream",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_terrestrial_delivery_code_rate_vals),
+ MPEG_DESCR_TERRESTRIAL_DELIVERY_CODE_RATE_LP_STREAM_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_terrestrial_delivery_guard_interval, {
+ "Guard Interval", "mpeg_descr_terr_delivery.guard_interval",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_terrestrial_delivery_guard_interval_vals),
+ MPEG_DESCR_TERRESTRIAL_DELIVERY_GUARD_INTERVAL_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_terrestrial_delivery_transmission_mode, {
+ "Transmission Mode", "mpeg_descr_terr_delivery.transmission_mode",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_terrestrial_delivery_transmission_mode_vals),
+ MPEG_DESCR_TERRESTRIAL_DELIVERY_TRANSMISSION_MODE_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_terrestrial_delivery_other_frequency_flag, {
+ "Other Frequency Flag", "mpeg_descr_terr_delivery.other_freq_flag",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_terrestrial_delivery_other_frequency_flag_vals),
+ MPEG_DESCR_TERRESTRIAL_DELIVERY_OTHER_FREQUENCY_FLAG_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_terrestrial_delivery_reserved2, {
+ "Reserved", "mpeg_descr_terr_delivery.reserved2",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+
+ /* 0x5F Private Data Specifier */
+ { &hf_mpeg_descr_private_data_specifier_id, {
+ "Private Data Specifier", "mpeg_descr.private_data_specifier.id",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0x64 Data Broadcast Descriptor */
+ { &hf_mpeg_descr_data_bcast_bcast_id, {
+ "Data Broadcast ID", "mpeg_descr.data_bcast.id",
+ FT_UINT16, BASE_HEX, VALS(mpeg_descr_data_bcast_id_vals), 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_data_bcast_component_tag, {
+ "Component Tag", "mpeg_descr.data_bcast.component_tag",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_data_bcast_selector_len, {
+ "Selector Length", "mpeg_descr.data_bcast.selector_len",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_data_bcast_selector_bytes, {
+ "Selector Bytes", "mpeg_descr.data_bcast.selector_bytes",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_data_bcast_lang_code, {
+ "Language Code", "mpeg_descr.data_bcast.lang_code",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_data_bcast_text_len, {
+ "Text Length", "mpeg_descr.data_bcast.text_len",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_data_bcast_text, {
+ "Text", "mpeg_descr.data_bcast.text",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0x66 Data Broadcast ID Descriptor */
+ { &hf_mpeg_descr_data_bcast_id_bcast_id, {
+ "Data Broadcast ID", "mpeg_descr.data_bcast_id.id",
+ FT_UINT16, BASE_HEX, VALS(mpeg_descr_data_bcast_id_vals), 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_data_bcast_id_id_selector_bytes, {
+ "ID Selector Bytes", "mpeg_descr.data_bcast_id.id_selector_bytes",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0x6A AC-3 Descriptor */
+ { &hf_mpeg_descr_ac3_component_type_flag, {
+ "Component Type Flag", "mpeg_descr.ac3.component_type_flag",
+ FT_UINT8, BASE_DEC, VALS(mpeg_descr_ac3_component_type_flag_vals),
+ MPEG_DESCR_AC3_COMPONENT_TYPE_FLAG_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_ac3_bsid_flag, {
+ "BSID Flag", "mpeg_descr.ac3.bsid_flag",
+ FT_UINT8, BASE_DEC, VALS(mpeg_descr_ac3_bsid_flag_vals),
+ MPEG_DESCR_AC3_BSID_FLAG_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_ac3_mainid_flag, {
+ "Main ID Flag", "mpeg_descr.ac3_main_id_flag",
+ FT_UINT8, BASE_DEC, VALS(mpeg_descr_ac3_mainid_flag_vals),
+ MPEG_DESCR_AC3_MAINID_FLAG_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_ac3_asvc_flag, {
+ "ASVC Flag", "mpeg_descr.ac3.asvc_flag",
+ FT_UINT8, BASE_DEC, VALS(mpeg_descr_ac3_asvc_flag_vals),
+ MPEG_DESCR_AC3_ASVC_FLAG_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_ac3_reserved, {
+ "Reserved", "mpeg_descr.ac3.reserved",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_AC3_RESERVED_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_ac3_component_type_reserved_flag, {
+ "Type Reserved Flag", "mpeg_descr.ac3.component_type.reserved_flag",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_AC3_COMPONENT_TYPE_RESERVED_FLAG_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_ac3_component_type_full_service_flag, {
+ "Full Service Flag", "mpeg_descr.ac3.component_type.full_service_flag",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_ac3_component_type_full_service_flag_vals),
+ MPEG_DESCR_AC3_COMPONENT_TYPE_FULL_SERVICE_FLAG_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_ac3_component_type_service_type_flags, {
+ "Service Type Flags", "mpeg_descr.ac3.component_type.service_type_flags",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_ac3_component_type_service_type_flags_vals),
+ MPEG_DESCR_AC3_COMPONENT_TYPE_SERVICE_TYPE_FLAGS_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_ac3_component_type_number_of_channels_flags, {
+ "Number of Channels Flags", "mpeg_descr.ac3.component_type.number_chan_flags",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_ac3_component_type_number_of_channels_flags_vals),
+ MPEG_DESCR_AC3_COMPONENT_TYPE_NUMBER_OF_CHANNELS_FLAGS, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_ac3_bsid, {
+ "BSID", "mpeg_descr.ac3.bsid",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_ac3_mainid, {
+ "Main ID", "mpeg_descr.ac3.mainid",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_ac3_asvc, {
+ "ASVC", "mpeg_descr.ac3.asvc",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_ac3_additional_info, {
+ "Additional Info", "mpeg_descr.ac3.additional_info",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0x73 Default Authority Descriptor */
+ { &hf_mpeg_descr_default_authority_name, {
+ "Default Authority Name", "mpeg_descr.default_authority.name",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0x77 Content Identifier Descriptor */
+ { &hf_mpeg_descr_content_identifier_crid_type, {
+ "CRID Type", "mpeg_descr.content_identifier.crid_type",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_content_identifier_crid_type_vals),
+ MPEG_DESCR_CONTENT_IDENTIFIER_CRID_TYPE_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_content_identifier_crid_location, {
+ "CRID Location", "mpeg_descr.content_identifier.crid_location",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_content_identifier_crid_location_vals),
+ MPEG_DESCR_CONTENT_IDENTIFIER_CRID_LOCATION_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_content_identifier_crid_length, {
+ "CRID Length", "mpeg_descr.content_identifier.crid_len",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_content_identifier_crid_bytes, {
+ "CRID Bytes", "mpeg_descr.content_identifier.crid_bytes",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_content_identifier_cird_ref, {
+ "CRID Reference", "mpeg_descr.content_identifier.crid_ref",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0x7F Extension Descriptor */
+ { &hf_mpeg_descr_extension_tag_extension, {
+ "Descriptor Tag Extension", "mpeg_descr.ext.tag",
+ FT_UINT8, BASE_HEX, VALS(mpeg_descr_extension_tag_extension_vals), 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_extension_data, {
+ "Descriptor Extension Data", "mpeg_descr.ext.data",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0xA2 Logon Initialize Descriptor */
+ { &hf_mpeg_descr_logon_initialize_group_id, {
+ "Group ID", "mpeg_descr.logon_init.group_id",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_logon_id, {
+ "Logon ID", "mpeg_descr.logon_init.logon_id",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_continuous_carrier_reserved, {
+ "Continuous Carrier Reserved", "mpeg_descr.logon_init.continuous_carrier_reserved",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_LOGON_INITIALIZE_CONTINUOUS_CARRIER_RESERVED_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_continuous_carrier, {
+ "Continuous Carrier", "mpeg_descr.logon_init.continuous_carrier",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_LOGON_INITIALIZE_CONTINUOUS_CARRIER_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_security_handshake_required, {
+ "Security Handshake Required", "mpeg_descr.logon_init.security_handshake_required",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_LOGON_INITIALIZE_SECURITY_HANDSHAKE_REQUIRED_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_prefix_flag, {
+ "Prefix Flag", "mpeg_descr.logon_init.prefix_flag",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_LOGON_INITIALIZE_PREFIX_FLAG_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_data_unit_labelling_flag, {
+ "Unit Labelling Flag", "mpeg_descr.logon_init.data_unit_labelling_flag",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_LOGON_INITIALIZE_DATA_UNIT_LABELLING_FLAG_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_mini_slot_flag, {
+ "Mini Slot Flag", "mpeg_descr.logon_init.mini_slot_flag",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_LOGON_INITIALIZE_MINI_SLOT_FLAG_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_contention_based_mini_slot_flag, {
+ "Contention Based Mini Slot Flag", "mpeg_descr.logon_init.contention_based_mini_slot_flag",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_LOGON_INITIALIZE_CONTENTION_BASED_MINI_SLOT_FLAG_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_capacity_type_flag_reserved, {
+ "Capacity Type Flag Reserved", "mpeg_descr.logon_init.capactity_type_flag_reserved",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_LOGON_INITIALIZE_CAPACITY_TYPE_FLAG_RESERVED_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_capacity_type_flag, {
+ "Capacity Type Flag", "mpeg_descr.logon_init.capactity_type_flag",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_LOGON_INITIALIZE_CAPACITY_TYPE_FLAG_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_traffic_burst_type, {
+ "Traffic Burst Type", "mpeg_descr.logon_init.traffic_burst_type",
+ FT_UINT8, BASE_DEC, NULL, MPEG_DESCR_LOGON_INITIALIZE_TRAFFIC_BURST_TYPE_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_return_trf_pid, {
+ "Return TRF PID", "mpeg_descr.logon_init.return_trf_pid",
+ FT_UINT16, BASE_HEX, NULL, MPEG_DESCR_LOGON_INITIALIZE_RETURN_TRF_PID_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_return_ctrl_mngm_pid_reserved, {
+ "Return CTRL MNGM PID Reserved", "mpeg_descr.logon_init.return_mngm_pid_reserved",
+ FT_UINT16, BASE_HEX, NULL, MPEG_DESCR_LOGON_INITIALIZE_RETURN_CTRL_MNGM_PID_RESERVED_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_return_ctrl_mngm_pid, {
+ "Return CTRL MNGM PID", "mpeg_descr.logon_init.return_mngm_pid",
+ FT_UINT16, BASE_HEX, NULL, MPEG_DESCR_LOGON_INITIALIZE_RETURN_CTRL_MNGM_PID_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_connectivity, {
+ "Connectivity", "mpeg_descr.logon_init.connectivity",
+ FT_UINT16, BASE_HEX, NULL, MPEG_DESCR_LOGON_INITIALIZE_CONNECTIVITY_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_return_vpi_reserved, {
+ "Return VPI Reserved", "mpeg_descr.logon_init.return_vpi_reserved",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_LOGON_INITIALIZE_RETURN_VPI_RESERVED_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_return_vpi, {
+ "Return VPI", "mpeg_descr.logon_init.return_vpi",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_LOGON_INITIALIZE_RETURN_VPI_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_return_vci, {
+ "Return VCI", "mpeg_descr.logon_init.return_vci",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_return_signalling_vpi_reserved, {
+ "Return Signalling VPI Reserved", "mpeg_descr.logon_init.return_signalling_vpi_reserved",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_LOGON_INITIALIZE_RETURN_SIGNALLING_VPI_RESERVED_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_return_signalling_vpi, {
+ "Return Signalling VPI", "mpeg_descr.logon_init.return_signalling_vpi",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_LOGON_INITIALIZE_RETURN_SIGNALLING_VPI_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_return_signalling_vci, {
+ "Return Signalling VCI", "mpeg_descr.logon_init.return_signalling_vci",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_forward_signalling_vpi_reserved, {
+ "Forward Signalling VPI Reserved", "mpeg_descr.logon_init.forward_signalling_vpi_reserved",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_LOGON_INITIALIZE_RETURN_SIGNALLING_VPI_RESERVED_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_forward_signalling_vpi, {
+ "Forward Signalling VPI", "mpeg_descr.logon_init.forward_signalling_vpi",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_LOGON_INITIALIZE_RETURN_SIGNALLING_VPI_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_forward_signalling_vci, {
+ "Forward Signalling VCI", "mpeg_descr.logon_init.forward_signalling_vci",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_cra_level, {
+ "CRA Level", "mpeg_descr.logon_init.cra_level",
+ FT_UINT24, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_vbdc_max_reserved, {
+ "VDBC Max Reserved", "mpeg_descr.logon_init.vdbc_max_reserved",
+ FT_UINT16, BASE_HEX, NULL, MPEG_DESCR_LOGON_INITIALIZE_VDBC_MAX_RESERVED_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_vbdc_max, {
+ "VDBC Max", "mpeg_descr.logon_init.vdbc_max",
+ FT_UINT16, BASE_DEC, NULL, MPEG_DESCR_LOGON_INITIALIZE_VDBC_MAX_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_rbdc_max, {
+ "RDBC Max", "mpeg_descr.logon_init.rdbc_max",
+ FT_UINT24, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_logon_initialize_rbdc_timeout, {
+ "RDBC Timeout", "mpeg_descr.logon_init.rdbc_timeout",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ /* 0xA7 RCS Content Descriptor */
+ { &hf_mpeg_descr_rcs_content_table_id, {
+ "Table ID", "mpeg_descr.rcs_content.tid",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } }
+ };
+
+ static gint *ett[] = {
+ &ett_mpeg_descriptor,
+ &ett_mpeg_descriptor_extended_event_item,
+ &ett_mpeg_descriptor_component_content_type,
+ &ett_mpeg_descriptor_content_nibble,
+ &ett_mpeg_descriptor_vbi_data_service,
+ &ett_mpeg_descriptor_content_identifier_crid,
+ &ett_mpeg_descriptor_service_list,
+ &ett_mpeg_descriptor_ac3_component_type,
+ &ett_mpeg_descriptor_linkage_population_id
+ };
+
+ proto_mpeg_descriptor = proto_register_protocol("MPEG2 Descriptors", "MPEG Descriptor", "mpeg_descr");
+ proto_register_field_array(proto_mpeg_descriptor, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+}
diff --git a/epan/dissectors/packet-mpeg-descriptor.h b/epan/dissectors/packet-mpeg-descriptor.h
new file mode 100644
index 0000000000..5b4c2becdb
--- /dev/null
+++ b/epan/dissectors/packet-mpeg-descriptor.h
@@ -0,0 +1,35 @@
+/* packet-mpeg-descriptor.c
+ * Routines for MPEG2 (ISO/ISO 13818-1) dissectors
+ * Copyright 2012, Guy Martin <gmsoft@tuxicoman.be>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+
+#ifndef __PACKET_MPEG_DESCRIPTOR_H_
+#define __PACKET_MPEG_DESCRIPTOR_H_
+
+#include <glib.h>
+#include <epan/packet.h>
+
+guint proto_mpeg_descriptor_dissect(tvbuff_t *tvb, guint offset, proto_tree *tree);
+
+#endif
diff --git a/epan/dissectors/packet-mpeg-dsmcc.c b/epan/dissectors/packet-mpeg-dsmcc.c
new file mode 100644
index 0000000000..590c6dd1eb
--- /dev/null
+++ b/epan/dissectors/packet-mpeg-dsmcc.c
@@ -0,0 +1,1063 @@
+/* packet-dsmcc.c
+ *
+ * Routines for ISO/IEC 13818-6 DSM-CC
+ * Copyright 2012, Weston Schmidt <weston_schmidt@alumni.purdue.edu>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+#include <epan/prefs.h>
+#include <epan/expert.h>
+#include <epan/crc32-tvb.h>
+#include <epan/dissectors/packet-mpeg-sect.h>
+
+/* NOTE: Please try to keep this status comment up to date until the spec is
+ * completely implemented - there are a large number of tables in the spec.
+ *
+ * 13818-6 Table status:
+ *
+ * Missing tables:
+ * 3-1 3-2 3-3 3-4 3-6 3-7 3-8 3-9
+ * 4-1 4-6 4-7 4-8 4-9 4-10 4-11 4-12 4-13 4-14 4-15 4-16 4-17 4-*
+ * 5-*
+ * 6-4
+ * 7-5 7-8 7-10 7-12
+ * 8-2 8-3 8-4 8-6
+ * 9-5 9-6
+ * 10-*
+ * 11-*
+ * 12-*
+ *
+ * Dissected tables:
+ * 2-1 2-4 2-6 2-7
+ * 6-1
+ * 7-6 7-7
+ * 9-2
+ *
+ * Validated (all parameters are checked) tables:
+ */
+
+
+static int proto_dsmcc = -1;
+static dissector_handle_t data_handle;
+static gboolean dsmcc_sect_check_crc = FALSE;
+
+/* NOTE: Please add values numerically according to 13818-6 so it is easier to
+ * keep track of what parameters/tables are associated with each other.
+ */
+
+/* table 2-1 dsmccMessageHeader - start */
+static int hf_dsmcc_protocol_discriminator = -1;
+static int hf_dsmcc_type = -1;
+static int hf_dsmcc_message_id = -1;
+static int hf_dsmcc_transaction_id = -1;
+static int hf_dsmcc_header_reserved = -1;
+static int hf_dsmcc_adaptation_length = -1;
+static int hf_dsmcc_message_length = -1;
+/* table 2-1 dsmccMessageHeader - end */
+
+/* table 2-4 dsmccAdaptationHeader - start */
+static int hf_dsmcc_adaptation_type = -1;
+/* table 2-4 dsmccAdaptationHeader - end */
+
+/* table 2-6 dsmccConditionalAccess - start */
+static int hf_dsmcc_adaptation_ca_reserved = -1;
+static int hf_dsmcc_adaptation_ca_system_id = -1;
+static int hf_dsmcc_adaptation_ca_length = -1;
+/* table 2-6 dsmccConditionalAccess - end */
+
+/* table 2-7 dsmccUserId - start */
+static int hf_dsmcc_adaptation_user_id_reserved = -1;
+/* table 2-7 dsmccUserId - end */
+
+/* table 6-1 compatabilityDescriptor - start */
+static int hf_compat_desc_length = -1;
+static int hf_compat_desc_count = -1;
+static int hf_desc_type = -1;
+static int hf_desc_length = -1;
+static int hf_desc_spec_type = -1;
+static int hf_desc_spec_data = -1;
+static int hf_desc_model = -1;
+static int hf_desc_version = -1;
+static int hf_desc_sub_desc_count = -1;
+static int hf_desc_sub_desc_type = -1;
+static int hf_desc_sub_desc_len = -1;
+/* table 6-1 compatabilityDescriptor - end */
+
+/* table 7-3 dsmccDownloadDataHeader - start */
+static int hf_dsmcc_dd_download_id = -1;
+static int hf_dsmcc_dd_message_id = -1;
+/* table 7-3 dsmccDownloadDataHeader - end */
+
+/* table 7-6 dsmccDownloadInfoIndication/InfoResponse - start */
+static int hf_dsmcc_dii_download_id = -1;
+static int hf_dsmcc_dii_block_size = -1;
+static int hf_dsmcc_dii_window_size = -1;
+static int hf_dsmcc_dii_ack_period = -1;
+static int hf_dsmcc_dii_t_c_download_window = -1;
+static int hf_dsmcc_dii_t_c_download_scenario = -1;
+static int hf_dsmcc_dii_number_of_modules = -1;
+static int hf_dsmcc_dii_module_id = -1;
+static int hf_dsmcc_dii_module_size = -1;
+static int hf_dsmcc_dii_module_version = -1;
+static int hf_dsmcc_dii_module_info_length = -1;
+static int hf_dsmcc_dii_private_data_length = -1;
+/* table 7-6 dsmccDownloadInfoIndication/InfoResponse - end */
+
+/* table 7-7 dsmccDownloadDataBlock - start */
+static int hf_dsmcc_ddb_module_id = -1;
+static int hf_dsmcc_ddb_version = -1;
+static int hf_dsmcc_ddb_reserved = -1;
+static int hf_dsmcc_ddb_block_number = -1;
+/* table 7-7 dsmccDownloadDataBlock - end */
+
+/* table 9-2 dsmccSection - start */
+static int hf_dsmcc_table_id = -1;
+static int hf_dsmcc_section_syntax_indicator = -1;
+static int hf_dsmcc_private_indicator = -1;
+static int hf_dsmcc_reserved = -1;
+static int hf_dsmcc_section_length = -1;
+static int hf_dsmcc_table_id_extension = -1;
+static int hf_dsmcc_reserved2 = -1;
+static int hf_dsmcc_version_number = -1;
+static int hf_dsmcc_current_next_indicator = -1;
+static int hf_dsmcc_section_number = -1;
+static int hf_dsmcc_last_section_number = -1;
+static int hf_dsmcc_crc = -1;
+static int hf_dsmcc_checksum = -1;
+/* table 9-2 dsmccSection - end */
+
+/* TODO: this should really live in the ETV dissector, but I'm not sure how
+ * to make the functionality work exactly right yet. Will work on a patch
+ * for this next.
+ */
+static int hf_etv_module_abs_path = -1;
+static int hf_etv_dii_authority = -1;
+
+static gint ett_dsmcc = -1;
+static gint ett_dsmcc_payload = -1;
+static gint ett_dsmcc_header = -1;
+static gint ett_dsmcc_adaptation_header = -1;
+static gint ett_dsmcc_compat = -1;
+static gint ett_dsmcc_compat_sub_desc = -1;
+static gint ett_dsmcc_dii_module = -1;
+
+#define DSMCC_TID_LLCSNAP 0x3a
+#define DSMCC_TID_UN_MSG 0x3b
+#define DSMCC_TID_DD_MSG 0x3c
+#define DSMCC_TID_DESC_LIST 0x3d
+#define DSMCC_TID_PRIVATE 0x3e
+
+#define DSMCC_SSI_MASK 0x8000
+#define DSMCC_PRIVATE_MASK 0x4000
+#define DSMCC_RESERVED_MASK 0x3000
+#define DSMCC_LENGTH_MASK 0x0fff
+
+#define DSMCC_RESERVED2_MASK 0xc0
+#define DSMCC_VERSION_NUMBER_MASK 0x3e
+#define DSMCC_CURRENT_NEXT_INDICATOR_MASK 0x01
+
+static const range_string dsmcc_header_type_vals[] = {
+ { 0, 0, "ISO/IEC 13818-6 Reserved" },
+ { 0x01, 0x01, "ISO/IEC 13818-6 User-to-Network Configuration Message" },
+ { 0x02, 0x02, "ISO/IEC 13818-6 User-to-Network Session Message" },
+ { 0x03, 0x03, "ISO/IEC 13818-6 Download Message" },
+ { 0x04, 0x04, "ISO/IEC 13818-6 SDB Channel Change Protocol Message" },
+ { 0x05, 0x05, "ISO/IEC 13818-6 User-to-Network Pass-Thru Message" },
+ { 0x06, 0x7f, "ISO/IEC 13818-6 Reserved" },
+ { 0x80, 0xff, "User Defined Message Type" },
+ { 0, 0, NULL }
+};
+
+static const range_string dsmcc_adaptation_header_vals[] = {
+ { 0, 0, "ISO/IEC 13818-6 Reserved" },
+ { 0x01, 0x01, "DSM-CC Conditional Access Adaptation Format" },
+ { 0x02, 0x02, "DSM-CC User ID Adaptation Format" },
+ { 0x03, 0x7f, "ISO/IEC 13818-6 Reserved" },
+ { 0x80, 0xff, "User Defeined Adaption Type" },
+ { 0, 0, NULL }
+};
+
+static const value_string dsmcc_payload_name_vals[] = {
+ { DSMCC_TID_LLCSNAP, "LLCSNAP" },
+ { DSMCC_TID_UN_MSG, "User Network Message" },
+ { DSMCC_TID_DD_MSG, "Download Data Message" },
+ { DSMCC_TID_DESC_LIST, "Descriptor List" },
+ { DSMCC_TID_PRIVATE, "Private" },
+ { 0, NULL }
+};
+
+static const value_string dsmcc_dd_message_id_vals[] = {
+ { 0x1001, "Download Info Request" },
+ { 0x1002, "Download Info Indication" },
+ { 0x1003, "Download Data Block" },
+ { 0x1004, "Download Data Request" },
+ { 0x1005, "Download Data Cancel" },
+ { 0x1006, "Download Server Initiate" },
+ { 0, NULL }
+};
+
+static void
+dissect_dsmcc_adaptation_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ tvbuff_t *sub_tvb;
+ guint offset = 0;
+ proto_item *pi;
+ proto_tree *sub_tree;
+ guint8 type, tmp;
+ guint16 ca_len;
+
+ type = tvb_get_guint8(tvb, offset);
+
+ if (1 == type) {
+ pi = proto_tree_add_text(tree, tvb, offset, -1, "Adaptation Header");
+ sub_tree = proto_item_add_subtree(pi, ett_dsmcc_adaptation_header);
+ proto_tree_add_item(sub_tree, hf_dsmcc_adaptation_type, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ tmp = tvb_get_guint8(tvb, offset);
+ pi = proto_tree_add_item(sub_tree, hf_dsmcc_adaptation_ca_reserved, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ if (0xff != tmp) {
+ PROTO_ITEM_SET_GENERATED(pi);
+ expert_add_info_format(pinfo, pi, PI_MALFORMED, PI_ERROR,
+ "Invalid value - should be 0xff");
+ }
+ offset++;
+ proto_tree_add_item(sub_tree, hf_dsmcc_adaptation_ca_system_id, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ ca_len = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_item(sub_tree, hf_dsmcc_adaptation_ca_length, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ sub_tvb = tvb_new_subset(tvb, offset, ca_len, ca_len);
+ call_dissector(data_handle, sub_tvb, pinfo, tree);
+ } else if (2 == type) {
+ pi = proto_tree_add_text(tree, tvb, offset, -1, "Adaptation Header");
+ sub_tree = proto_item_add_subtree(pi, ett_dsmcc_adaptation_header);
+ proto_tree_add_item(sub_tree, hf_dsmcc_adaptation_type, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ tmp = tvb_get_guint8(tvb, offset);
+ pi = proto_tree_add_item(sub_tree, hf_dsmcc_adaptation_user_id_reserved, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ if (0xff != tmp) {
+ PROTO_ITEM_SET_GENERATED(pi);
+ expert_add_info_format(pinfo, pi, PI_MALFORMED, PI_ERROR,
+ "Invalid value - should be 0xff");
+ }
+ offset++;
+ /* TODO: handle the userId */
+ } else {
+ pi = proto_tree_add_text(tree, tvb, offset, -1, "Unknown Adaptation Header");
+ sub_tree = proto_item_add_subtree(pi, ett_dsmcc_adaptation_header);
+ proto_tree_add_item(sub_tree, hf_dsmcc_adaptation_type, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ }
+}
+
+static guint
+dissect_dsmcc_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset,
+ gboolean download_header)
+{
+ tvbuff_t *sub_tvb;
+ proto_item *pi;
+ proto_tree *sub_tree;
+ guint8 prot_disc;
+ guint reserved;
+ guint8 adaptation_len;
+ guint len = 0;
+ int msg_id, tx_id;
+
+ prot_disc = tvb_get_guint8(tvb, offset);
+ reserved = tvb_get_guint8(tvb, 8+offset);
+ adaptation_len = tvb_get_guint8(tvb, 9+offset);
+
+ pi = proto_tree_add_text(tree, tvb, offset, 12+adaptation_len, "DSM-CC Header");
+ sub_tree = proto_item_add_subtree(pi, ett_dsmcc_header);
+ pi = proto_tree_add_item(sub_tree, hf_dsmcc_protocol_discriminator, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ if (0x11 != prot_disc) {
+ PROTO_ITEM_SET_GENERATED(pi);
+ expert_add_info_format(pinfo, pi, PI_MALFORMED, PI_ERROR,
+ "Invalid value - should be 0x11");
+ }
+ offset++;
+ proto_tree_add_item(sub_tree, hf_dsmcc_type, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ if (TRUE == download_header) {
+ msg_id = hf_dsmcc_dd_message_id;
+ tx_id = hf_dsmcc_dd_download_id;
+ } else {
+ msg_id = hf_dsmcc_message_id;
+ tx_id = hf_dsmcc_transaction_id;
+ }
+ proto_tree_add_item(sub_tree, msg_id, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(sub_tree, tx_id, tvb,
+ offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ pi = proto_tree_add_item(sub_tree, hf_dsmcc_header_reserved, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ if (0xff != reserved) {
+ PROTO_ITEM_SET_GENERATED(pi);
+ expert_add_info_format(pinfo, pi, PI_MALFORMED, PI_ERROR,
+ "Invalid value - should be 0xff");
+ }
+ offset++;
+
+ proto_tree_add_item(sub_tree, hf_dsmcc_adaptation_length, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(sub_tree, hf_dsmcc_message_length, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ len = 12;
+ if (0 < adaptation_len) {
+ sub_tvb = tvb_new_subset(tvb, offset, adaptation_len, adaptation_len);
+ dissect_dsmcc_adaptation_header(sub_tvb, pinfo, sub_tree);
+ offset += adaptation_len;
+ }
+
+ return len;
+}
+
+
+static guint
+dissect_dsmcc_dii_compat_desc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ guint offset)
+{
+ gint i, j;
+ guint8 sub_count, sub_len;
+ guint16 len, count;
+ proto_item *pi;
+ proto_tree *compat_tree;
+ proto_tree *desc_sub_tree;
+
+ len = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_item(tree, hf_compat_desc_length, tvb, offset,
+ 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ if (0 < len) {
+ count = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_item(tree, hf_compat_desc_count, tvb, offset,
+ 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ for (i = 0; i < count; i++) {
+ pi = proto_tree_add_text(tree, tvb, offset, len, "Compatibility Descriptor");
+ compat_tree = proto_item_add_subtree(pi, ett_dsmcc_compat);
+ proto_tree_add_item(compat_tree, hf_desc_type, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(compat_tree, hf_desc_length, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(compat_tree, hf_desc_spec_type, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(compat_tree, hf_desc_spec_data, tvb, offset,
+ 3, ENC_BIG_ENDIAN);
+ offset += 3;
+ proto_tree_add_item(compat_tree, hf_desc_model, tvb, offset,
+ 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(compat_tree, hf_desc_version, tvb, offset,
+ 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ sub_count = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(compat_tree, hf_desc_sub_desc_count, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ for (j = 0; j < sub_count; j++) {
+ sub_len = tvb_get_guint8(tvb, offset+1);
+
+ pi = proto_tree_add_text(compat_tree, tvb, offset, sub_len+2, "Sub Descriptor");
+ desc_sub_tree = proto_item_add_subtree(pi, ett_dsmcc_compat_sub_desc);
+ proto_tree_add_item(desc_sub_tree, hf_desc_sub_desc_type, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(desc_sub_tree, hf_desc_sub_desc_len, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ offset += sub_len;
+ }
+ }
+
+ if( 1000 == offset ) {
+ expert_add_info_format( pinfo, NULL, PI_MALFORMED,
+ PI_ERROR, "Invalid CRC" );
+ }
+ }
+
+ return 2 + len;
+}
+
+static void
+dissect_dsmcc_dii(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ guint offset)
+{
+ guint8 module_info_len;
+ guint16 modules, private_data_len;
+ guint16 module_id;
+ guint8 module_version;
+ guint module_size;
+ guint i;
+ proto_item *pi;
+ proto_tree *mod_tree;
+
+ proto_tree_add_item(tree, hf_dsmcc_dii_download_id, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ proto_tree_add_item(tree, hf_dsmcc_dii_block_size, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(tree, hf_dsmcc_dii_window_size, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_dsmcc_dii_ack_period, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_dsmcc_dii_t_c_download_window, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ proto_tree_add_item(tree, hf_dsmcc_dii_t_c_download_scenario, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ offset += dissect_dsmcc_dii_compat_desc(tvb, pinfo, tree, offset);
+ proto_tree_add_item(tree, hf_dsmcc_dii_number_of_modules, tvb, offset, 2, ENC_BIG_ENDIAN);
+ modules = tvb_get_ntohs(tvb, offset);
+ offset += 2;
+
+ for (i = 0; i < modules; i++ ) {
+ module_id = tvb_get_ntohs(tvb, offset);
+ module_size = tvb_get_ntohl(tvb, 2+offset);
+ module_version = tvb_get_guint8(tvb, 6+offset);
+
+ pi = proto_tree_add_text(tree, tvb, offset, -1,
+ "Module Id: 0x%x, Version: %u, Size: %u",
+ module_id, module_version, module_size);
+ mod_tree = proto_item_add_subtree(pi, ett_dsmcc_dii_module);
+ proto_tree_add_item(mod_tree, hf_dsmcc_dii_module_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(mod_tree, hf_dsmcc_dii_module_size, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ proto_tree_add_item(mod_tree, hf_dsmcc_dii_module_version, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ module_info_len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(mod_tree, hf_dsmcc_dii_module_info_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ if (0 < module_info_len) {
+ proto_tree_add_item(mod_tree, hf_etv_module_abs_path, tvb, offset, 1,
+ ENC_ASCII|ENC_NA);
+ offset += module_info_len;
+ }
+ }
+
+ private_data_len = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_item(tree, hf_dsmcc_dii_private_data_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ if (0 < private_data_len) {
+ proto_tree_add_item(tree, hf_etv_dii_authority, tvb, offset, 1,
+ ENC_ASCII|ENC_NA);
+ offset += private_data_len;
+ }
+}
+
+
+static void
+dissect_dsmcc_ddb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ proto_tree *top_tree, guint offset)
+{
+ tvbuff_t *sub_tvb;
+ proto_item *pi;
+ guint8 reserved;
+
+ proto_tree_add_item(tree, hf_dsmcc_ddb_module_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(tree, hf_dsmcc_ddb_version, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ reserved = tvb_get_guint8(tvb, offset);
+ pi = proto_tree_add_item(tree, hf_dsmcc_ddb_reserved, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ if (0xff != reserved) {
+ PROTO_ITEM_SET_GENERATED(pi);
+ expert_add_info_format(pinfo, pi, PI_MALFORMED, PI_ERROR,
+ "Invalid value - should be 0xff");
+ }
+ offset++;
+ proto_tree_add_item(tree, hf_dsmcc_ddb_block_number, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ sub_tvb = tvb_new_subset(tvb, offset, -1, -1);
+ call_dissector(data_handle, sub_tvb, pinfo, top_tree);
+}
+
+
+static void
+dissect_dsmcc_un_download(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ proto_tree *top_tree)
+{
+ proto_item *pi;
+ proto_tree *sub_tree;
+ guint16 msg_id;
+ guint offset = 0;
+
+ msg_id = tvb_get_ntohs(tvb, offset+2);
+
+ pi = proto_tree_add_text(tree, tvb, 0, -1, "User Network Message - %s",
+ val_to_str(msg_id, dsmcc_dd_message_id_vals, "%s"));
+ sub_tree = proto_item_add_subtree(pi, ett_dsmcc_payload);
+
+ switch (msg_id) {
+ case 0x1001:
+ case 0x1002:
+ offset += dissect_dsmcc_header(tvb, pinfo, sub_tree, offset, FALSE);
+ dissect_dsmcc_dii(tvb, pinfo, sub_tree, offset);
+ break;
+ case 0x1003:
+ offset += dissect_dsmcc_header(tvb, pinfo, sub_tree, offset, TRUE);
+ dissect_dsmcc_ddb(tvb, pinfo, sub_tree, top_tree, offset);
+ break;
+ case 0x1004:
+ /* TODO: Add support */
+ break;
+ case 0x1005:
+ /* TODO: Add support */
+ break;
+ case 0x1006:
+ /* TODO: Add support */
+ break;
+ default:
+ break;
+ }
+}
+
+static void
+dissect_dsmcc_un(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ proto_tree *top_tree)
+{
+ guint8 type;
+
+ /* dsmccMessageHeader.dsmccType */
+ type = tvb_get_guint8(tvb, 1);
+
+ switch (type) {
+ case 1: /* user-to-network configuration */
+ /* TODO: Add support */
+ break;
+ case 2: /* user-to-network session */
+ /* TODO: Add support */
+ break;
+ case 3: /* user-to-network download */
+ dissect_dsmcc_un_download(tvb, pinfo, tree, top_tree);
+ break;
+ case 4: /* sdb channel change protocol */
+ /* TODO: Add support */
+ break;
+ case 5: /* user-to-network pass-thru */
+ /* TODO: Add support */
+ break;
+ default:
+ break;
+ }
+}
+
+static gboolean
+dissect_dsmcc_ts(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree_in)
+{
+ proto_item *pi;
+ proto_tree *tree;
+ guint8 tid;
+ guint16 sect_len;
+ guint crc_start;
+ guint32 crc, calculated_crc;
+ const char *label;
+ tvbuff_t *sub_tvb;
+ guint16 ssi;
+ guint offset = 0;
+
+ pi = proto_tree_add_item(tree_in, proto_dsmcc, tvb, 0, -1, ENC_NA);
+ tree = proto_item_add_subtree(pi, ett_dsmcc);
+
+ tid = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_dsmcc_table_id, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ ssi = tvb_get_ntohs(tvb, offset);
+ ssi &= DSMCC_SSI_MASK;
+ proto_tree_add_item(tree, hf_dsmcc_section_syntax_indicator, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_dsmcc_private_indicator, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_dsmcc_reserved, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_dsmcc_section_length, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ sect_len = tvb_get_ntohs(tvb, offset);
+ sect_len &= DSMCC_LENGTH_MASK;
+ offset += 2;
+ crc_start = offset;
+
+ proto_tree_add_item(tree, hf_dsmcc_table_id_extension, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(tree, hf_dsmcc_reserved2, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_dsmcc_version_number, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_dsmcc_current_next_indicator, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_dsmcc_section_number, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_dsmcc_last_section_number, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ sub_tvb = tvb_new_subset(tvb, offset, sect_len-9, sect_len-9);
+ switch (tid) {
+ case DSMCC_TID_LLCSNAP:
+ /* TODO: Add support */
+ break;
+ case DSMCC_TID_UN_MSG:
+ case DSMCC_TID_DD_MSG:
+ dissect_dsmcc_un(sub_tvb, pinfo, tree, tree_in);
+ break;
+ case DSMCC_TID_DESC_LIST:
+ /* TODO: Add support */
+ break;
+ case DSMCC_TID_PRIVATE:
+ /* TODO: Add support */
+ break;
+ default:
+ break;
+ }
+
+ if (ssi) {
+ crc = tvb_get_ntohl(tvb, crc_start+sect_len-4);
+
+ calculated_crc = crc;
+ label = "Unverified";
+ if (dsmcc_sect_check_crc) {
+ label = "Verified";
+ calculated_crc = crc32_mpeg2_tvb_offset(tvb, crc_start, sect_len-4);
+ }
+
+ if (calculated_crc == crc) {
+ proto_tree_add_uint_format( tree, hf_dsmcc_crc, tvb,
+ crc_start+sect_len-4, 4, crc, "CRC: 0x%08x [%s]", crc, label);
+ } else {
+ proto_item *msg_error = NULL;
+
+ msg_error = proto_tree_add_uint_format( tree, hf_dsmcc_crc, tvb,
+ crc_start+sect_len-4, 4, crc,
+ "CRC: 0x%08x [Failed Verification (Calculated: 0x%08x)]",
+ crc, calculated_crc );
+ PROTO_ITEM_SET_GENERATED(msg_error);
+ expert_add_info_format( pinfo, msg_error, PI_MALFORMED,
+ PI_ERROR, "Invalid CRC" );
+ }
+ } else {
+ /* TODO: actually check the checksum */
+ proto_tree_add_item(tree, hf_dsmcc_checksum, tvb,
+ crc_start+sect_len-4, 4, ENC_BIG_ENDIAN);
+ }
+
+ return TRUE;
+}
+
+static void
+dissect_dsmcc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "DSM-CC");
+ dissect_dsmcc_ts(tvb, pinfo, tree);
+}
+
+void
+proto_register_dsmcc(void)
+{
+ /* NOTE: Please add tables numerically according to 13818-6 so it is
+ * easier to keep track of what parameters/tables are associated with
+ * each other.
+ */
+ static hf_register_info hf[] = {
+ /* table 2-1 dsmccMessageHeader - start */
+ { &hf_dsmcc_protocol_discriminator, {
+ "Protocol Discriminator", "dsmcc.protocol",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_type, {
+ "Type", "dsmcc.type",
+ FT_UINT8, BASE_HEX|BASE_RANGE_STRING, RVALS(dsmcc_header_type_vals), 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_message_id, {
+ "Message ID", "dsmcc.message_id",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_transaction_id, {
+ "Transaction ID", "dsmcc.transaction_id",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_header_reserved, {
+ "Reserved", "dsmcc.header_reserved",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_adaptation_length, {
+ "Adaptation Length", "dsmcc.adaptation_length",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_message_length, {
+ "Message Length", "dsmcc.message_length",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+ /* table 2-1 dsmccMessageHeader - end */
+
+
+ /* table 2-4 dsmccAdaptationHeader - start */
+ { &hf_dsmcc_adaptation_type, {
+ "Adaptation Type", "dsmcc.adaptation_header.type",
+ FT_UINT8, BASE_HEX|BASE_RANGE_STRING, RVALS(dsmcc_adaptation_header_vals), 0, NULL, HFILL
+ } },
+ /* table 2-4 dsmccAdaptationHeader - end */
+
+
+ /* table 2-6 dsmccConditionalAccess - start */
+ { &hf_dsmcc_adaptation_ca_reserved, {
+ "Reserved", "dsmcc.adaptation_header.ca.reserved",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_adaptation_ca_system_id, {
+ "System ID", "dsmcc.adaptation_header.ca.system_id",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_adaptation_ca_length, {
+ "System ID", "dsmcc.adaptation_header.ca.length",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+ /* table 2-6 dsmccConditionalAccess - end */
+
+
+ /* table 2-7 dsmccUserId - start */
+ { &hf_dsmcc_adaptation_user_id_reserved, {
+ "Reserved", "dsmcc.adaptation_header.uid.reserved",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+ /* table 2-7 dsmccUserId - start */
+
+
+ /* table 6-1 compatabilityDescriptor - start */
+ { &hf_compat_desc_length, {
+ "Compatibility Descriptor Length", "dsmcc.dii.compat_desc_len",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_compat_desc_count, {
+ "Descriptor Length", "dsmcc.dii.compat_desc_count",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_desc_type, {
+ "Descriptor Type", "dsmcc.dii.compat.type",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_desc_length, {
+ "Descriptor Length", "dsmcc.dii.compat.length",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_desc_spec_type, {
+ "Specifier Type", "dsmcc.dii.compat.spec_type",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_desc_spec_data, {
+ "Specifier Data", "dsmcc.dii.compat.spec_data",
+ FT_UINT24, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_desc_model, {
+ "Model", "dsmcc.dii.compat.model",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_desc_version, {
+ "Version", "dsmcc.dii.compat.version",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_desc_sub_desc_count, {
+ "Version", "dsmcc.dii.compat.sub_count",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_desc_sub_desc_type, {
+ "Type", "dsmcc.dii.compat.sub_type",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_desc_sub_desc_len, {
+ "Length", "dsmcc.dii.compat.sub_len",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+ /* table 6-1 compatabilityDescriptor - end */
+
+
+ /* table 7-3 dsmccDownloadDataHeader - start */
+ { &hf_dsmcc_dd_download_id, {
+ "Download ID", "dsmcc.download_id",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_dd_message_id, {
+ "Message ID", "dsmcc.message_id",
+ FT_UINT16, BASE_HEX, VALS(dsmcc_dd_message_id_vals), 0, NULL, HFILL
+ } },
+ /* table 7-3 dsmccDownloadDataHeader - end */
+
+
+ /* table 7-6 downloadInfoIndication - start */
+ { &hf_dsmcc_dii_download_id, {
+ "Download ID", "dsmcc.dii.download_id",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_dii_block_size, {
+ "Block Size", "dsmcc.dii.block_size",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_dii_window_size, {
+ "Window Size", "dsmcc.dii.window_size",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_dii_ack_period, {
+ "ACK Period", "dsmcc.dii.ack_period",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_dii_t_c_download_window, {
+ "Carousel Download Window", "dsmcc.dii.carousel_download_window",
+ FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_dii_t_c_download_scenario, {
+ "Carousel Download Scenario", "dsmcc.dii.carousel_download_scenario",
+ FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_dii_number_of_modules, {
+ "Number of Modules", "dsmcc.dii.module_count",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_dii_module_id, {
+ "Module ID", "dsmcc.dii.module_id",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_dii_module_size, {
+ "Module Size", "dsmcc.dii.module_size",
+ FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_dii_module_version, {
+ "Module Version", "dsmcc.dii.module_version",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_dii_module_info_length, {
+ "Module Info Length", "dsmcc.dii.module_info_length",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_dii_private_data_length, {
+ "Private Data Length", "dsmcc.dii.private_data_length",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+ /* table 7-6 downloadInfoIndication - end */
+
+
+ /* table 7-7 dsmccDownloadDataBlock - start */
+ { &hf_dsmcc_ddb_module_id, {
+ "Module ID", "dsmcc.ddb.module_id",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_ddb_version, {
+ "Version", "dsmcc.ddb.version",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_ddb_reserved, {
+ "Reserved", "dsmcc.ddb.reserved",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_ddb_block_number, {
+ "Block Number", "dsmcc.ddb.block_num",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+ /* table 7-7 dsmccDownloadDataBlock - end */
+
+
+ /* table 9-2 - start */
+ { &hf_dsmcc_table_id, {
+ "Table ID", "mpeg_sect.table_id",
+ FT_UINT8, BASE_HEX, VALS(dsmcc_payload_name_vals), 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_section_syntax_indicator, {
+ "Session Syntax Indicator", "mpeg_sect.ssi",
+ FT_UINT16, BASE_DEC, NULL, DSMCC_SSI_MASK, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_private_indicator, {
+ "Private Indicator", "dsmcc.private_indicator",
+ FT_UINT16, BASE_DEC, NULL, DSMCC_PRIVATE_MASK, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_reserved, {
+ "Reserved", "mpeg_sect.reserved",
+ FT_UINT16, BASE_HEX, NULL, DSMCC_RESERVED_MASK, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_section_length, {
+ "Length", "mpeg_sect.section_length",
+ FT_UINT16, BASE_DEC, NULL, DSMCC_LENGTH_MASK, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_table_id_extension, {
+ "Table ID Extension", "dsmcc.table_id_extension",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_reserved2, {
+ "Reserved", "dsmcc.reserved2",
+ FT_UINT8, BASE_HEX, NULL, DSMCC_RESERVED2_MASK, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_version_number, {
+ "Version Number", "dsmcc.version_number",
+ FT_UINT8, BASE_DEC, NULL, DSMCC_VERSION_NUMBER_MASK, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_current_next_indicator, {
+ "Current Next Indicator", "dsmcc.current_next_indicator",
+ FT_UINT8, BASE_DEC, NULL, DSMCC_CURRENT_NEXT_INDICATOR_MASK, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_section_number, {
+ "Section Number", "dsmcc.section_number",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_last_section_number, {
+ "Last Section Number", "dsmcc.last_section_number",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_crc, {
+ "CRC 32", "mpeg_sect.crc",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_dsmcc_checksum, {
+ "Checksum", "dsmcc.checksum",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+ /* table 9-2 - end */
+
+
+ { &hf_etv_module_abs_path, {
+ "Module Absolute Path", "etv.dsmcc.dii.module_abs_path",
+ FT_UINT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_etv_dii_authority, {
+ "Authority", "etv.dsmcc.dii.authority",
+ FT_UINT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ } }
+ };
+
+ static gint *ett[] = {
+ &ett_dsmcc,
+ &ett_dsmcc_payload,
+ &ett_dsmcc_adaptation_header,
+ &ett_dsmcc_header,
+ &ett_dsmcc_compat,
+ &ett_dsmcc_compat_sub_desc,
+ &ett_dsmcc_dii_module
+ };
+ module_t *dsmcc_module;
+
+ proto_dsmcc = proto_register_protocol("MPEG DSM-CC", "MPEG DSM-CC", "mpeg-dsmcc");
+
+ proto_register_field_array(proto_dsmcc, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+ new_register_dissector("mp2t-dsmcc", dissect_dsmcc_ts, proto_dsmcc);
+
+ dsmcc_module = prefs_register_protocol(proto_dsmcc, NULL);
+
+ prefs_register_bool_preference(dsmcc_module, "verify_crc",
+ "Verify the section CRC or checksum",
+ "Whether the section dissector should verify the CRC or checksum",
+ &dsmcc_sect_check_crc);
+}
+
+
+void
+proto_reg_handoff_dsmcc(void)
+{
+ dissector_handle_t dsmcc_handle;
+
+ dsmcc_handle = create_dissector_handle(dissect_dsmcc, proto_dsmcc);
+ dissector_add_uint("mpeg_sect.tid", DSMCC_TID_LLCSNAP, dsmcc_handle);
+ dissector_add_uint("mpeg_sect.tid", DSMCC_TID_UN_MSG, dsmcc_handle);
+ dissector_add_uint("mpeg_sect.tid", DSMCC_TID_DD_MSG, dsmcc_handle);
+ dissector_add_uint("mpeg_sect.tid", DSMCC_TID_DESC_LIST, dsmcc_handle);
+ dissector_add_uint("mpeg_sect.tid", DSMCC_TID_PRIVATE, dsmcc_handle);
+ data_handle = find_dissector("data");
+}
+
+
diff --git a/epan/dissectors/packet-mpeg-pat.c b/epan/dissectors/packet-mpeg-pat.c
index e6dd6daf05..1afabb6093 100644
--- a/epan/dissectors/packet-mpeg-pat.c
+++ b/epan/dissectors/packet-mpeg-pat.c
@@ -31,6 +31,7 @@
#include <epan/packet.h>
#include <epan/prefs.h>
+#include <epan/dissectors/packet-mpeg-sect.h>
static int proto_mpeg_pat = -1;
static int hf_mpeg_pat_transport_stream_id = -1;
@@ -48,7 +49,7 @@ static int hf_mpeg_pat_program_map_pid = -1;
static gint ett_mpeg_pat = -1;
static gint ett_mpeg_pat_prog = -1;
-#define MPEG_PAT_TID 0x00
+#define MPEG_PAT_TID 0x00
#define MPEG_PAT_RESERVED_MASK 0xC0
#define MPEG_PAT_VERSION_NUMBER_MASK 0x3E
@@ -58,12 +59,12 @@ static gint ett_mpeg_pat_prog = -1;
#define MPEG_PAT_PROGRAM_MAP_PID_MASK 0x1FFF
static const true_false_string mpeg_pat_cur_next_vals = {
-
+
"Currently applicable", "Not yet applicable"
};
-void
+static void
dissect_mpeg_pat(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
@@ -83,10 +84,8 @@ dissect_mpeg_pat(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ti = proto_tree_add_item(tree, proto_mpeg_pat, tvb, offset, -1, ENC_NA);
mpeg_pat_tree = proto_item_add_subtree(ti, ett_mpeg_pat);
- if (!tree)
- return;
-
- length = tvb_reported_length_remaining(tvb, offset);
+ offset += packet_mpeg_sect_header(tvb, offset, mpeg_pat_tree, &length, NULL);
+ length -= 4;
proto_tree_add_item(mpeg_pat_tree, hf_mpeg_pat_transport_stream_id, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
@@ -104,11 +103,11 @@ dissect_mpeg_pat(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (offset >= length)
return;
-
+
/* Parse all the programs */
while (offset < length) {
-
+
prog_num = tvb_get_ntohs(tvb, offset);
prog_pid = tvb_get_ntohs(tvb, offset + 2) & MPEG_PAT_PROGRAM_MAP_PID_MASK;
@@ -121,11 +120,10 @@ dissect_mpeg_pat(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(mpeg_pat_prog_tree, hf_mpeg_pat_program_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(mpeg_pat_prog_tree, hf_mpeg_pat_program_map_pid, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
-
- }
- return;
+ }
+ packet_mpeg_sect_crc(tvb, pinfo, mpeg_pat_tree, 0, offset);
}
@@ -134,7 +132,7 @@ proto_register_mpeg_pat(void)
{
static hf_register_info hf[] = {
-
+
{ &hf_mpeg_pat_transport_stream_id, {
"Transport Stream ID", "mpeg_pat.tsid",
FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
@@ -159,7 +157,7 @@ proto_register_mpeg_pat(void)
"Section Number", "mpeg_pat.sect_num",
FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
} },
-
+
{ &hf_mpeg_pat_last_section_number, {
"Last Section Number", "mpeg_pat.last_sect_num",
FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
@@ -191,7 +189,7 @@ proto_register_mpeg_pat(void)
proto_register_field_array(proto_mpeg_pat, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
-
+
}
diff --git a/epan/dissectors/packet-mpeg-pes.c b/epan/dissectors/packet-mpeg-pes.c
index e0313154a8..ced2b02502 100644
--- a/epan/dissectors/packet-mpeg-pes.c
+++ b/epan/dissectors/packet-mpeg-pes.c
@@ -781,6 +781,7 @@ dissect_mpeg_pes_header_data(tvbuff_t *tvb, packet_info *pinfo,
if (flags2 & EXTENSION_FLAG2) {
proto_tree_add_item(tree, hf_mpeg_pes_extension2, tvb,
offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
}
}
return offset;
@@ -913,7 +914,7 @@ dissect_mpeg_pes(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
} else if (stream == STREAM_SYSTEM || stream == STREAM_PRIVATE2) {
unsigned data_length = tvb_get_ntohs(tvb, offset / 8);
proto_tree_add_item(tree, hf_mpeg_pes_length, tvb,
- offset / 8, 2, FALSE);
+ offset / 8, 2, ENC_BIG_ENDIAN);
offset += 2 * 8;
proto_tree_add_item(tree, hf_mpeg_pes_data, tvb,
@@ -921,7 +922,7 @@ dissect_mpeg_pes(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
} else if (stream == STREAM_PADDING) {
unsigned padding_length = tvb_get_ntohs(tvb, offset / 8);
proto_tree_add_item(tree, hf_mpeg_pes_length, tvb,
- offset / 8, 2, FALSE);
+ offset / 8, 2, ENC_BIG_ENDIAN);
offset += 2 * 8;
proto_tree_add_item(tree, hf_mpeg_pes_padding, tvb,
@@ -976,7 +977,7 @@ dissect_mpeg_pes(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
} else {
unsigned data_length = tvb_get_ntohs(tvb, offset / 8);
proto_tree_add_item(tree, hf_mpeg_pes_length, tvb,
- offset / 8, 2, FALSE);
+ offset / 8, 2, ENC_BIG_ENDIAN);
offset += 2 * 8;
proto_tree_add_item(tree, hf_mpeg_pes_data, tvb,
diff --git a/epan/dissectors/packet-mpeg-pmt.c b/epan/dissectors/packet-mpeg-pmt.c
new file mode 100644
index 0000000000..6270b31dc6
--- /dev/null
+++ b/epan/dissectors/packet-mpeg-pmt.c
@@ -0,0 +1,307 @@
+/* packet-mpeg-pmt.c
+ * Routines for MPEG2 (ISO/ISO 13818-1) Program Map Table (PMT) dissection
+ * Copyright 2012, Guy Martin <gmsoft@tuxicoman.be>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+#include <epan/dissectors/packet-mpeg-sect.h>
+
+#include "packet-mpeg-descriptor.h"
+
+static int proto_mpeg_pmt = -1;
+static int hf_mpeg_pmt_program_number = -1;
+static int hf_mpeg_pmt_reserved1 = -1;
+static int hf_mpeg_pmt_version_number = -1;
+static int hf_mpeg_pmt_current_next_indicator = -1;
+static int hf_mpeg_pmt_section_number = -1;
+static int hf_mpeg_pmt_last_section_number = -1;
+static int hf_mpeg_pmt_reserved2 = -1;
+static int hf_mpeg_pmt_pcr_pid = -1;
+static int hf_mpeg_pmt_reserved3 = -1;
+static int hf_mpeg_pmt_program_info_length = -1;
+
+
+static int hf_mpeg_pmt_stream_type = -1;
+static int hf_mpeg_pmt_stream_reserved1 = -1;
+static int hf_mpeg_pmt_stream_elementary_pid = -1;
+static int hf_mpeg_pmt_stream_reserved2 = -1;
+static int hf_mpeg_pmt_stream_es_info_length = -1;
+
+static gint ett_mpeg_pmt = -1;
+static gint ett_mpeg_pmt_stream = -1;
+
+#define MPEG_PMT_TID 0x02
+
+#define MPEG_PMT_RESERVED1_MASK 0xC0
+#define MPEG_PMT_VERSION_NUMBER_MASK 0x3E
+#define MPEG_PMT_CURRENT_NEXT_INDICATOR_MASK 0x01
+
+#define MPEG_PMT_RESERVED2_MASK 0xE000
+#define MPEG_PMT_PCR_PID_MASK 0x1FFF
+#define MPEG_PMT_RESERVED3_MASK 0xF000
+#define MPEG_PMT_PROGRAM_INFO_LENGTH_MASK 0x0FFF
+
+#define MPEG_PMT_STREAM_RESERVED1_MASK 0xE000
+#define MPEG_PMT_STREAM_ELEMENTARY_PID_MASK 0x1FFF
+
+#define MPEG_PMT_STREAM_RESERVED2_MASK 0xF000
+#define MPEG_PMT_STREAM_ES_INFO_LENGTH_MASK 0x0FFF
+
+
+static const value_string mpeg_pmt_cur_next_vals[] = {
+
+ { 0x0, "Not yet applicable" },
+ { 0x1, "Currently applicable" },
+
+ { 0x0, NULL }
+
+};
+
+static const value_string mpeg_pmt_stream_type_vals[] = {
+ { 0x00, "ITU-T | ISO/IEC Reserved" },
+ { 0x01, "ISO/IEC 11172 Video" },
+ { 0x02, "ITU-T Rec. H.262 | ISO/IEC 13818-2 Video or ISO/IEC 11172-2 constrained parameter video stream" },
+ { 0x03, "ISO/IEC 11172 Audio" },
+ { 0x04, "ISO/IEC 13818-3 Audio" },
+ { 0x05, "ITU-T Rec. H.222.0 | ISO/IEC 13818-1 private_sections" },
+ { 0x06, "ITU-T Rec. H.222.0 | ISO/IEC 13818-1 PES packets containing private data" },
+ { 0x07, "ISO/IEC 13522 MHEG" },
+ { 0x08, "ITU-T Rec. H.222.0 | ISO/IEC 13818-1 Annex A DSM-CC" },
+ { 0x09, "ITU-T Rec. H.222.1" },
+ { 0x0A, "ISO/IEC 13818-6 type A" },
+ { 0x0B, "ISO/IEC 13818-6 type B" },
+ { 0x0C, "ISO/IEC 13818-6 type C" },
+ { 0x0D, "ISO/IEC 13818-6 type D" },
+ { 0x0E, "ITU-T Rec. H.222.0 | ISO/IEC 13818-1 auxiliary" },
+ { 0x0F, "ISO/IEC 13818-7 Audio with ADTS transport syntax" },
+ { 0x10, "ISO/IEC 14496-2 Visual" },
+ { 0x11, "ISO/IEC 14496-3 Audio with the LATM transport syntax as defined in ISO/IEC 14496-3 / AMD 1" },
+ { 0x12, "ISO/IEC 14496-1 SL-packetized stream or FlexMux stream carried in PES packets" },
+ { 0x13, "ISO/IEC 14496-1 SL-packetized stream or FlexMux stream carried in ISO/IEC14496_sections" },
+ { 0x14, "ISO/IEC 13818-6 Synchronized Download Protocol" },
+ { 0x15, "Metadata carried in PES packets" },
+ { 0x16, "Metadata carried in metadata sections" },
+ { 0x17, "Metadata carried in ISO/IEC 13818-6 Data Carousel" },
+ { 0x18, "Metadata carried in ISO/IEC 13818-6 Object Carousel" },
+ { 0x19, "Metadata carried in ISO/IEC 13818-6 Synchronized Download Protocol" },
+ { 0x1A, "IPMP stream (defined in ISO/IEC 13818-11, MPEG-2 IPMP)" },
+ { 0x1B, "AVC video stream as defined in ITU-T Rec. H.264 | ISO/IEC 14496-10 Video" },
+ { 0x7F, "IPMP stream" },
+ { 0xA1, "ETV-AM BIF Data Stream" },
+ { 0xC0, "ETV-AM EISS Signaling" },
+ { 0x00, NULL }
+};
+
+static void
+dissect_mpeg_pmt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+
+ guint offset = 0, length = 0, descriptor_end = 0;
+ guint16 prog_info_len = 0, es_info_len = 0, pid = 0;
+
+ proto_item *ti = NULL;
+ proto_tree *mpeg_pmt_tree = NULL;
+ proto_item *si = NULL;
+ proto_tree *mpeg_pmt_stream_tree = NULL;
+
+ /* The TVB should start right after the section_length in the Section packet */
+
+ col_clear(pinfo->cinfo, COL_INFO);
+ col_set_str(pinfo->cinfo, COL_INFO, "Program Map Table (PMT)");
+
+ if (!tree)
+ return;
+
+ ti = proto_tree_add_item(tree, proto_mpeg_pmt, tvb, offset, -1, ENC_NA);
+ mpeg_pmt_tree = proto_item_add_subtree(ti, ett_mpeg_pmt);
+
+ offset += packet_mpeg_sect_header(tvb, offset, mpeg_pmt_tree, &length, NULL);
+ length -= 4;
+
+ proto_tree_add_item(mpeg_pmt_tree, hf_mpeg_pmt_program_number, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(mpeg_pmt_tree, hf_mpeg_pmt_reserved1, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mpeg_pmt_tree, hf_mpeg_pmt_version_number, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mpeg_pmt_tree, hf_mpeg_pmt_current_next_indicator, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(mpeg_pmt_tree, hf_mpeg_pmt_section_number, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(mpeg_pmt_tree, hf_mpeg_pmt_last_section_number, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(mpeg_pmt_tree, hf_mpeg_pmt_reserved2, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mpeg_pmt_tree, hf_mpeg_pmt_pcr_pid, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ prog_info_len = tvb_get_ntohs(tvb, offset) & MPEG_PMT_PROGRAM_INFO_LENGTH_MASK;
+ proto_tree_add_item(mpeg_pmt_tree, hf_mpeg_pmt_reserved3, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mpeg_pmt_tree, hf_mpeg_pmt_program_info_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ descriptor_end = offset + prog_info_len;
+ while (offset < descriptor_end)
+ offset += proto_mpeg_descriptor_dissect(tvb, offset, mpeg_pmt_tree);
+
+ while (offset < length) {
+
+ pid = tvb_get_ntohs(tvb, offset + 1) & MPEG_PMT_STREAM_ELEMENTARY_PID_MASK;
+ es_info_len = tvb_get_ntohs(tvb, offset + 3) & MPEG_PMT_STREAM_ES_INFO_LENGTH_MASK;
+
+ si = proto_tree_add_text(mpeg_pmt_tree, tvb, offset, 5 + es_info_len, "Stream PID=0x%04hx", pid);
+ mpeg_pmt_stream_tree = proto_item_add_subtree(si, ett_mpeg_pmt_stream);
+
+ proto_tree_add_item(mpeg_pmt_stream_tree, hf_mpeg_pmt_stream_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(mpeg_pmt_stream_tree, hf_mpeg_pmt_stream_reserved1, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mpeg_pmt_stream_tree, hf_mpeg_pmt_stream_elementary_pid, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(mpeg_pmt_stream_tree, hf_mpeg_pmt_stream_reserved2, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mpeg_pmt_stream_tree, hf_mpeg_pmt_stream_es_info_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ descriptor_end = offset + es_info_len;
+ while (offset < descriptor_end)
+ offset += proto_mpeg_descriptor_dissect(tvb, offset, mpeg_pmt_stream_tree);
+
+ }
+
+ packet_mpeg_sect_crc(tvb, pinfo, mpeg_pmt_tree, 0, offset);
+}
+
+
+void
+proto_register_mpeg_pmt(void)
+{
+
+ static hf_register_info hf[] = {
+
+ { &hf_mpeg_pmt_program_number, {
+ "Program Number", "mpeg_pmt.pg_num",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_pmt_reserved1, {
+ "Reserved", "mpeg_pmt.reserved1",
+ FT_UINT8, BASE_HEX, NULL, MPEG_PMT_RESERVED1_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_pmt_version_number, {
+ "Version Number", "mpeg_pmt.version",
+ FT_UINT8, BASE_HEX, NULL, MPEG_PMT_VERSION_NUMBER_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_pmt_current_next_indicator, {
+ "Current/Next Indicator", "mpeg_pmt.cur_next_ind",
+ FT_UINT8, BASE_HEX, VALS(mpeg_pmt_cur_next_vals), MPEG_PMT_CURRENT_NEXT_INDICATOR_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_pmt_section_number, {
+ "Section Number", "mpeg_pmt.sect_num",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_pmt_last_section_number, {
+ "Last Section Number", "mpeg_pmt.last_sect_num",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_pmt_reserved2, {
+ "Reserved", "mpeg_pmt.reserved2",
+ FT_UINT16, BASE_HEX, NULL, MPEG_PMT_RESERVED2_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_pmt_pcr_pid, {
+ "PCR PID", "mpeg_pmt.pcr_pid",
+ FT_UINT16, BASE_HEX, NULL, MPEG_PMT_PCR_PID_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_pmt_reserved3, {
+ "Reserved", "mpeg_pmt.reserved3",
+ FT_UINT16, BASE_HEX, NULL, MPEG_PMT_RESERVED3_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_pmt_program_info_length, {
+ "Program Info Length", "mpeg_pmt.prog_info_len",
+ FT_UINT16, BASE_HEX, NULL, MPEG_PMT_PROGRAM_INFO_LENGTH_MASK, NULL, HFILL
+ } },
+
+
+ { &hf_mpeg_pmt_stream_type, {
+ "Stream type", "mpeg_pmt.stream.type",
+ FT_UINT8, BASE_HEX, VALS(mpeg_pmt_stream_type_vals), 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_pmt_stream_reserved1, {
+ "Reserved", "mpeg_pmt.stream.reserved1",
+ FT_UINT16, BASE_HEX, NULL, MPEG_PMT_STREAM_RESERVED1_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_pmt_stream_elementary_pid, {
+ "Elementary PID", "mpeg_pmt.stream.elementary_pid",
+ FT_UINT16, BASE_HEX, NULL, MPEG_PMT_STREAM_ELEMENTARY_PID_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_pmt_stream_reserved2, {
+ "Reserved", "mpeg_pmt.stream.reserved2",
+ FT_UINT16, BASE_HEX, NULL, MPEG_PMT_STREAM_RESERVED2_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_pmt_stream_es_info_length, {
+ "ES Info Length", "mpeg_pmt.stream.es_info_len",
+ FT_UINT16, BASE_HEX, NULL, MPEG_PMT_STREAM_ES_INFO_LENGTH_MASK, NULL, HFILL
+ } },
+
+ };
+
+ static gint *ett[] = {
+ &ett_mpeg_pmt,
+ &ett_mpeg_pmt_stream,
+ };
+
+ proto_mpeg_pmt = proto_register_protocol("MPEG2 Program Map Table", "MPEG PMT", "mpeg_pmt");
+
+ proto_register_field_array(proto_mpeg_pmt, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+}
+
+
+void
+proto_reg_handoff_mpeg_pmt(void)
+{
+ dissector_handle_t mpeg_pmt_handle;
+
+ mpeg_pmt_handle = create_dissector_handle(dissect_mpeg_pmt, proto_mpeg_pmt);
+ dissector_add_uint("mpeg_sect.tid", MPEG_PMT_TID, mpeg_pmt_handle);
+}
diff --git a/epan/dissectors/packet-mpeg-sect.c b/epan/dissectors/packet-mpeg-sect.c
index 9341116ed9..44ec68427c 100644
--- a/epan/dissectors/packet-mpeg-sect.c
+++ b/epan/dissectors/packet-mpeg-sect.c
@@ -8,12 +8,6 @@
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
- * Copied from WHATEVER_FILE_YOU_USED (where "WHATEVER_FILE_YOU_USED"
- * is a dissector file; if you just copied this from README.developer,
- * don't bother with the "Copied from" - you don't even need to put
- * in a "Copied from" if you copied an existing dissector, especially
- * if the bulk of the code in the new dissector is your code)
- *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -37,11 +31,13 @@
#include <epan/packet.h>
#include <epan/prefs.h>
+#include <epan/crc32-tvb.h>
+#include <epan/expert.h>
+#include <epan/dissectors/packet-mpeg-sect.h>
static int proto_mpeg_sect = -1;
static int hf_mpeg_sect_table_id = -1;
static int hf_mpeg_sect_syntax_indicator = -1;
-static int hf_mpeg_sect_zero = -1;
static int hf_mpeg_sect_reserved = -1;
static int hf_mpeg_sect_length = -1;
static int hf_mpeg_sect_crc = -1;
@@ -50,11 +46,11 @@ static gint ett_mpeg_sect = -1;
static dissector_table_t mpeg_sect_tid_dissector_table;
-#define MPEG_SECT_TABLE_ID_MASK 0xFF0000
-#define MPEG_SECT_SYNTAX_INDICATOR_MASK 0x008000
-#define MPEG_SECT_ZERO_MASK 0x004000
-#define MPEG_SECT_RESERVED_MASK 0x003000
-#define MPEG_SECT_LENGTH_MASK 0x000FFF
+static gboolean mpeg_sect_check_crc = FALSE;
+
+#define MPEG_SECT_SYNTAX_INDICATOR_MASK 0x8000
+#define MPEG_SECT_RESERVED_MASK 0x7000
+#define MPEG_SECT_LENGTH_MASK 0x0FFF
/* From ISO/IEC 13818-1 */
enum {
@@ -64,24 +60,22 @@ enum {
TID_TS_DESC,
TID_SCENE_DESC,
TID_OBJECT_DESC,
- TID_FORBIDEN = 0xFF,
+ TID_FORBIDEN = 0xFF
};
/* From ETSI EN 300 468 */
enum {
- TID_NIT = 0x40,
+ TID_NIT = 0x40,
TID_NIT_OTHER,
TID_SDT,
TID_SDT_OTHER = 0x46,
- TID_BAT = 0x4A,
- TID_EIT = 0x4E,
+ TID_BAT = 0x4A,
+ TID_EIT = 0x4E,
TID_EIT_OTHER,
- TID_TDT = 0x70,
+ TID_TDT = 0x70,
TID_RST,
TID_ST,
- TID_TOT,
-
-
+ TID_TOT
};
/* From ETSI EN 301 790 */
@@ -95,8 +89,7 @@ enum {
TID_CMT,
TID_TBTP,
TID_PCR,
- TID_TIM = 0xB0,
-
+ TID_TIM = 0xB0
};
/* From ESTI EN 301 192 */
@@ -104,151 +97,251 @@ enum {
TID_DVB_MPE = 0x3E
};
+/* From OC-SP-ETV-AM 1.0-IO5 */
+enum {
+ TID_ETV_EISS = 0xE0,
+ TID_ETV_DII = 0xE3,
+ TID_ETV_DDB = 0xE4
+};
+
+/* From ETSI TS 102 899 */
+enum {
+ TID_AIT = 0x74
+};
+
+
static const value_string mpeg_sect_table_id_vals[] = {
- { TID_PAT, "Program Association Table (PAT)" },
- { TID_CA, "Conditional Access (CA)" },
- { TID_PMT, "Program Map Table (PMT)" },
- { TID_TS_DESC, "Transport Stream Description" },
- { TID_SCENE_DESC, "ISO/IEC 14496 Scene Description" },
+ { TID_PAT, "Program Association Table (PAT)" },
+ { TID_CA, "Conditional Access (CA)" },
+ { TID_PMT, "Program Map Table (PMT)" },
+ { TID_TS_DESC, "Transport Stream Description" },
+ { TID_SCENE_DESC, "ISO/IEC 14496 Scene Description" },
{ TID_OBJECT_DESC, "ISO/IEC 14496 Object Description" },
- { TID_NIT, "Network Information Table (NIT), current network" },
- { TID_NIT_OTHER, "Network Information Table (NIT), other network" },
- { TID_SDT, "Service Description Table (SDT), current network" },
- { TID_SDT_OTHER, "Service Description (SDT), other network" },
- { TID_BAT, "Bouquet Associatoin Table (BAT)" },
- { TID_EIT, "Event Information Table (EIT), actual TS" },
- { TID_EIT_OTHER, "Event Information Table (EIT), other TS" },
- { TID_TDT, "Time and Date Table (TDT)" },
- { TID_RST, "Running Status Table (RST)" },
- { TID_ST, "Stuffing Table (ST)" },
- { TID_TOT, "Time Offset Table (TOT)" },
- { TID_SCT, "Superframe Composition Table (SCT)" },
- { TID_FCT, "Frame Composition Table (FCT)" },
- { TID_TCT, "Time-Slot Composition Table (TCT)" },
- { TID_SPT, "Satellite Position Table (SPT)" },
- { TID_CMT, "Correction Message Table (CMT)" },
- { TID_TBTP, "Terminal Burst Time Plan (TBTP)" },
- { TID_TIM, "Terminal Information Message (TIM)" },
- { TID_DVB_MPE, "DVB MultiProtocol Encapsulation (MPE)" },
- { TID_FORBIDEN, "Forbidden" },
+ { TID_NIT, "Network Information Table (NIT), current network" },
+ { TID_NIT_OTHER, "Network Information Table (NIT), other network" },
+ { TID_SDT, "Service Description Table (SDT), current network" },
+ { TID_SDT_OTHER, "Service Description (SDT), other network" },
+ { TID_BAT, "Bouquet Associatoin Table (BAT)" },
+ { TID_EIT, "Event Information Table (EIT), actual TS" },
+ { TID_EIT_OTHER, "Event Information Table (EIT), other TS" },
+ { TID_TDT, "Time and Date Table (TDT)" },
+ { TID_RST, "Running Status Table (RST)" },
+ { TID_ST, "Stuffing Table (ST)" },
+ { TID_TOT, "Time Offset Table (TOT)" },
+ { TID_AIT, "Application Information Table (AIT)" },
+ { TID_SCT, "Superframe Composition Table (SCT)" },
+ { TID_FCT, "Frame Composition Table (FCT)" },
+ { TID_TCT, "Time-Slot Composition Table (TCT)" },
+ { TID_SPT, "Satellite Position Table (SPT)" },
+ { TID_CMT, "Correction Message Table (CMT)" },
+ { TID_TBTP, "Terminal Burst Time Plan (TBTP)" },
+ { TID_TIM, "Terminal Information Message (TIM)" },
+ { TID_DVB_MPE, "DVB MultiProtocol Encapsulation (MPE)" },
+ { TID_ETV_EISS, "ETV Integrated Signaling Stream (EISS)" },
+ { TID_ETV_DII, "ETV Download Info Indication" },
+ { TID_ETV_DDB, "ETV Download Data Block" },
+ { TID_FORBIDEN, "Forbidden" },
{ 0, NULL }
};
-void
-dissect_mpeg_sect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+/* From packet-dvbci.c
+ read a utc_time field in an apdu and write it to utc_time
+ the encoding of the field is according to DVB-SI specification, section 5.2.5
+ 16bit modified julian day (MJD), 24bit 6*4bit BCD digits hhmmss
+ return the length in bytes or -1 for error */
+gint
+packet_mpeg_sect_mjd_to_utc_time(tvbuff_t *tvb, gint offset, nstime_t *utc_time)
{
+ gint bcd_time_offset; /* start offset of the bcd time in the tvbuff */
+ guint8 hour, min, sec;
+
+ if (!utc_time)
+ return -1;
+
+ nstime_set_zero(utc_time);
+ utc_time->secs = (tvb_get_ntohs(tvb, offset) - 40587) * 86400;
+ bcd_time_offset = offset+2;
+ hour = MPEG_SECT_BCD44_TO_DEC(tvb_get_guint8(tvb, bcd_time_offset));
+ min = MPEG_SECT_BCD44_TO_DEC(tvb_get_guint8(tvb, bcd_time_offset+1));
+ sec = MPEG_SECT_BCD44_TO_DEC(tvb_get_guint8(tvb, bcd_time_offset+2));
+ if (hour>23 || min>59 || sec>59)
+ return -1;
+
+ utc_time->secs += hour*3600 + min*60 + sec;
+ return 5;
+}
- gint offset = 0;
+guint
+packet_mpeg_sect_header(tvbuff_t *tvb, guint offset,
+ proto_tree *tree, guint *sect_len, gboolean *ssi)
+{
+ return packet_mpeg_sect_header_extra(tvb, offset, tree, sect_len,
+ NULL, ssi, NULL);
+}
- guint8 table_id = 0;
- guint16 header = 0;
- guint16 section_length = 0;
- guint16 syntax_indicator = 0;
+guint
+packet_mpeg_sect_header_extra(tvbuff_t *tvb, guint offset, proto_tree *tree,
+ guint *sect_len, guint *reserved, gboolean *ssi,
+ proto_item **items)
+{
+ guint tmp;
+ guint len = 0;
+ proto_item *pi[PACKET_MPEG_SECT_PI__SIZE];
+ gint i;
- proto_item *ti = NULL;
- proto_tree *mpeg_sect_tree = NULL;
+ for (i = 0; i < PACKET_MPEG_SECT_PI__SIZE; i++) {
+ pi[i] = NULL;
+ }
+
+ if (tree) {
+ pi[PACKET_MPEG_SECT_PI__TABLE_ID] =
+ proto_tree_add_item(tree, hf_mpeg_sect_table_id,
+ tvb, offset + len, 1, ENC_BIG_ENDIAN);
+ }
- tvbuff_t *pload_tvb = NULL;
+ len++;
- table_id = tvb_get_guint8(tvb, offset);
- header = tvb_get_ntohs(tvb, offset + 1);
- syntax_indicator = header & MPEG_SECT_SYNTAX_INDICATOR_MASK;
- section_length = header & MPEG_SECT_LENGTH_MASK;
+ if (tree) {
+ pi[PACKET_MPEG_SECT_PI__SSI] =
+ proto_tree_add_item(tree, hf_mpeg_sect_syntax_indicator,
+ tvb, offset + len, 2, ENC_BIG_ENDIAN);
+
+ pi[PACKET_MPEG_SECT_PI__RESERVED] =
+ proto_tree_add_item(tree, hf_mpeg_sect_reserved, tvb,
+ offset + len, 2, ENC_BIG_ENDIAN);
+
+ pi[PACKET_MPEG_SECT_PI__LENGTH] =
+ proto_tree_add_item(tree, hf_mpeg_sect_length, tvb,
+ offset + len, 2, ENC_BIG_ENDIAN);
+ }
- set_actual_length(tvb, section_length + 3);
+ tmp = tvb_get_ntohs(tvb, offset + len);
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "MPEG SECT");
- col_add_fstr(pinfo->cinfo, COL_INFO, "Table ID 0x%08x", table_id);
+ if (sect_len)
+ *sect_len = MPEG_SECT_LENGTH_MASK & tmp;
- ti = proto_tree_add_item(tree, proto_mpeg_sect, tvb, offset, -1, ENC_NA);
- mpeg_sect_tree = proto_item_add_subtree(ti, ett_mpeg_sect);
+ if (reserved)
+ *reserved = (MPEG_SECT_RESERVED_MASK & tmp) >> 12;
- proto_item_append_text(ti, " Table_ID=0x%08x", table_id);
+ if (ssi)
+ *ssi = (MPEG_SECT_SYNTAX_INDICATOR_MASK & tmp);
- if (syntax_indicator) {
- /* Pass everything but the CRC */
- section_length -= sizeof(guint32);
+ if (items) {
+ for (i = 0; i < PACKET_MPEG_SECT_PI__SIZE; i++) {
+ items[i] = pi[i];
+ }
}
- if (tree) {
+ len += 2;
- proto_tree_add_item(mpeg_sect_tree, hf_mpeg_sect_table_id, tvb, offset, 3, ENC_BIG_ENDIAN);
- proto_tree_add_item(mpeg_sect_tree, hf_mpeg_sect_syntax_indicator, tvb, offset, 3, ENC_BIG_ENDIAN);
- proto_tree_add_item(mpeg_sect_tree, hf_mpeg_sect_zero, tvb, offset, 3, ENC_BIG_ENDIAN);
- proto_tree_add_item(mpeg_sect_tree, hf_mpeg_sect_reserved, tvb, offset, 3, ENC_BIG_ENDIAN);
- proto_tree_add_item(mpeg_sect_tree, hf_mpeg_sect_length, tvb, offset, 3, ENC_BIG_ENDIAN);
+ return len;
+}
- offset += 3;
- if (syntax_indicator)
- proto_tree_add_item(mpeg_sect_tree, hf_mpeg_sect_crc, tvb, offset + section_length, 4, ENC_BIG_ENDIAN);
- }
+guint
+packet_mpeg_sect_crc(tvbuff_t *tvb, packet_info *pinfo,
+ proto_tree *tree, guint start, guint end)
+{
+ guint32 crc, calculated_crc;
+ const char *label;
-
- pload_tvb = tvb_new_subset(tvb, 3, section_length, -1);
- dissector_try_uint(mpeg_sect_tid_dissector_table, table_id, pload_tvb, pinfo, tree);
+ crc = tvb_get_ntohl(tvb, end);
- return;
+ calculated_crc = crc;
+ label = "Unverified";
+ if (mpeg_sect_check_crc) {
+ label = "Verified";
+ calculated_crc = crc32_mpeg2_tvb_offset(tvb, start, end);
+ }
+
+ if (calculated_crc == crc) {
+ proto_tree_add_uint_format( tree, hf_mpeg_sect_crc, tvb,
+ end, 4, crc, "CRC: 0x%08x [%s]", crc, label);
+ } else {
+ proto_item *msg_error = NULL;
+
+ msg_error = proto_tree_add_uint_format( tree, hf_mpeg_sect_crc, tvb,
+ end, 4, crc,
+ "CRC: 0x%08x [Failed Verification (Calculated: 0x%08x)]",
+ crc, calculated_crc );
+ PROTO_ITEM_SET_GENERATED(msg_error);
+ expert_add_info_format( pinfo, msg_error, PI_MALFORMED,
+ PI_ERROR, "Invalid CRC" );
+ }
+ return 4;
}
-static gboolean
-heur_dissect_mpeg_sect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static void
+dissect_mpeg_sect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- guint16 section_length = 0;
+ gint offset = 0;
+ guint8 table_id = 0;
+ guint section_length = 0;
+ gboolean syntax_indicator = FALSE;
+
+ proto_item *ti = NULL;
+ proto_tree *mpeg_sect_tree = NULL;
+
+ table_id = tvb_get_guint8(tvb, offset);
+
+ /* Check if a dissector can parse the current table */
+ if (dissector_try_uint(mpeg_sect_tid_dissector_table, table_id, tvb, pinfo, tree))
+ return;
- section_length = (tvb_get_ntohs(tvb, 1) & MPEG_SECT_LENGTH_MASK) + 3;
- if (tvb_length_remaining(tvb, 0) < section_length)
- return FALSE;
+ /* If no dissector is registered, use the common one */
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "MPEG SECT");
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Table ID 0x%02x", table_id);
- dissect_mpeg_sect(tvb, pinfo, tree);
- return TRUE;
+ ti = proto_tree_add_item(tree, proto_mpeg_sect, tvb, offset, -1, ENC_NA);
+ mpeg_sect_tree = proto_item_add_subtree(ti, ett_mpeg_sect);
+
+ proto_item_append_text(ti, " Table_ID=0x%02x", table_id);
+
+ packet_mpeg_sect_header(tvb, offset, mpeg_sect_tree,
+ &section_length, &syntax_indicator);
+
+ if (syntax_indicator)
+ packet_mpeg_sect_crc(tvb, pinfo, mpeg_sect_tree, 0, (section_length-1));
}
+
void
proto_register_mpeg_sect(void)
{
-
static hf_register_info hf[] = {
-
{ &hf_mpeg_sect_table_id, {
"Table ID", "mpeg_sect.tid",
- FT_UINT24, BASE_HEX, VALS(mpeg_sect_table_id_vals), MPEG_SECT_TABLE_ID_MASK, NULL, HFILL
+ FT_UINT8, BASE_HEX, VALS(mpeg_sect_table_id_vals), 0, NULL, HFILL
} },
{ &hf_mpeg_sect_syntax_indicator, {
"Syntax indicator", "mpeg_sect.syntax_indicator",
- FT_UINT24, BASE_DEC, NULL, MPEG_SECT_SYNTAX_INDICATOR_MASK, NULL, HFILL
- } },
-
- { &hf_mpeg_sect_zero, {
- "Zero or reserved", "mpeg_sect.zero",
- FT_UINT24, BASE_DEC, NULL, MPEG_SECT_ZERO_MASK, NULL, HFILL
+ FT_UINT16, BASE_DEC, NULL, MPEG_SECT_SYNTAX_INDICATOR_MASK, NULL, HFILL
} },
{ &hf_mpeg_sect_reserved, {
"Reserved", "mpeg_sect.reserved",
- FT_UINT24, BASE_HEX, NULL, MPEG_SECT_RESERVED_MASK, NULL, HFILL
+ FT_UINT16, BASE_HEX, NULL, MPEG_SECT_RESERVED_MASK, NULL, HFILL
} },
{ &hf_mpeg_sect_length, {
"Length", "mpeg_sect.len",
- FT_UINT24, BASE_DEC, NULL, MPEG_SECT_LENGTH_MASK, NULL, HFILL
+ FT_UINT16, BASE_DEC, NULL, MPEG_SECT_LENGTH_MASK, NULL, HFILL
} },
{ &hf_mpeg_sect_crc, {
"CRC 32", "mpeg_sect.crc",
FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL
- } },
-
-
+ } }
};
static gint *ett[] = {
&ett_mpeg_sect
};
+ module_t *mpeg_sect_module;
proto_mpeg_sect = proto_register_protocol("MPEG2 Section", "MPEG SECT", "mpeg_sect");
register_dissector("mpeg_sect", dissect_mpeg_sect, proto_mpeg_sect);
@@ -256,16 +349,16 @@ proto_register_mpeg_sect(void)
proto_register_field_array(proto_mpeg_sect, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
-
- mpeg_sect_tid_dissector_table = register_dissector_table("mpeg_sect.tid", "MPEG SECT Table ID", FT_UINT8, BASE_HEX);
+ mpeg_sect_module = prefs_register_protocol(proto_mpeg_sect, NULL);
-}
+ prefs_register_bool_preference(mpeg_sect_module,
+ "verify_crc",
+ "Verify the section CRC",
+ "Whether the section dissector should verify the CRC",
+ &mpeg_sect_check_crc);
+ mpeg_sect_tid_dissector_table = register_dissector_table("mpeg_sect.tid",
+ "MPEG SECT Table ID",
+ FT_UINT8, BASE_HEX);
-void
-proto_reg_handoff_mpeg_sect(void)
-{
- heur_dissector_add("mp2t.pid", heur_dissect_mpeg_sect, proto_mpeg_sect);
}
-
-
diff --git a/epan/dissectors/packet-mpeg-sect.h b/epan/dissectors/packet-mpeg-sect.h
new file mode 100644
index 0000000000..69f46e3303
--- /dev/null
+++ b/epan/dissectors/packet-mpeg-sect.h
@@ -0,0 +1,67 @@
+/* packet-mpeg-sect.h
+ * Declarations of exported routines from mpeg-sect dissector
+ * Copyright 2012, Weston Schmidt <weston_schmidt@alumni.purdue.edu>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __PACKET_MPEG_SECT_H_
+#define __PACKET_MPEG_SECT_H__
+
+#define PACKET_MPEG_SECT_PI__TABLE_ID 0
+#define PACKET_MPEG_SECT_PI__SSI 1
+#define PACKET_MPEG_SECT_PI__RESERVED 2
+#define PACKET_MPEG_SECT_PI__LENGTH 3
+#define PACKET_MPEG_SECT_PI__SIZE 4
+
+/* convert a byte that contains two 4bit BCD digits into a decimal value */
+#define MPEG_SECT_BCD44_TO_DEC(x) (((x&0xf0) >> 4) * 10 + (x&0x0f))
+
+/*
+ * Used to read a date provided in MJD format into a utc_time structure
+ */
+extern gint
+packet_mpeg_sect_mjd_to_utc_time(tvbuff_t *tvb, gint offset, nstime_t *utc_time);
+
+/*
+ * Used to process the 'standard' mpeg section header that is described below
+ * and populate the data into the tree
+ */
+extern guint
+packet_mpeg_sect_header(tvbuff_t *tvb, guint offset,
+ proto_tree *tree, guint *sect_len, gboolean *ssi);
+
+/*
+ * Used to return all the values & items for 'strict' processing of the
+ * sub-dissectors that make use of this dissector
+ */
+extern guint
+packet_mpeg_sect_header_extra(tvbuff_t *tvb, guint offset, proto_tree *tree,
+ guint *sect_len, guint *reserved, gboolean *ssi,
+ proto_item **items);
+
+/*
+ * Used to process the mpeg CRC information & report erorrs found with it.
+ */
+extern guint
+packet_mpeg_sect_crc(tvbuff_t *tvb, packet_info *pinfo,
+ proto_tree *tree, guint start, guint end);
+#endif
diff --git a/epan/dissectors/packet-mpls-echo.c b/epan/dissectors/packet-mpls-echo.c
index c4a10c29c2..75ef724800 100644
--- a/epan/dissectors/packet-mpls-echo.c
+++ b/epan/dissectors/packet-mpls-echo.c
@@ -12,7 +12,9 @@
* Krishnamurthy Mayya <krishnamurthy.mayya@ipinfusion.com>
* Nikitha Malgi <malgi.nikitha@ipinfusion.com>
* - Support for LSP Ping extensions as per RFC 6426
- *
+ * Mayuresh Raut <msraut@ncsu.edu>
+ * - Support for LSP ping over MPLS as per RFC 6424
+ *
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
@@ -27,13 +29,13 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-
+
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
-#include <stdlib.h>
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/prefs.h>
#include <epan/sminmpec.h>
@@ -116,6 +118,43 @@ static int hf_mpls_echo_tlv_ds_map_mp_label = -1;
static int hf_mpls_echo_tlv_ds_map_mp_exp = -1;
static int hf_mpls_echo_tlv_ds_map_mp_bos = -1;
static int hf_mpls_echo_tlv_ds_map_mp_proto = -1;
+static int hf_mpls_echo_tlv_dd_map_mtu = -1;
+static int hf_mpls_echo_tlv_dd_map_addr_type = -1;
+static int hf_mpls_echo_tlv_dd_map_res = -1;
+static int hf_mpls_echo_tlv_dd_map_flag_res = -1;
+static int hf_mpls_echo_tlv_dd_map_flag_i = -1;
+static int hf_mpls_echo_tlv_dd_map_flag_n = -1;
+static int hf_mpls_echo_tlv_dd_map_ds_ip = -1;
+static int hf_mpls_echo_tlv_dd_map_int_ip = -1;
+static int hf_mpls_echo_tlv_dd_map_ds_ipv6 = -1;
+static int hf_mpls_echo_tlv_dd_map_int_ipv6 = -1;
+static int hf_mpls_echo_tlv_dd_map_return_code = -1;
+static int hf_mpls_echo_tlv_dd_map_return_subcode = -1;
+static int hf_mpls_echo_tlv_dd_map_subtlv_len = -1;
+static int hf_mpls_echo_tlv_dd_map_ingress_if_num = -1;
+static int hf_mpls_echo_tlv_dd_map_egress_if_num = -1;
+static int hf_mpls_echo_sub_tlv_multipath_type = -1;
+static int hf_mpls_echo_sub_tlv_multipath_length = -1;
+static int hf_mpls_echo_sub_tlv_multipath_value = -1;
+static int hf_mpls_echo_sub_tlv_resv = -1;
+static int hf_mpls_echo_sub_tlv_multipath_info = -1;
+static int hf_mpls_echo_tlv_ddstlv_map_mp_label = -1;
+static int hf_mpls_echo_tlv_ddstlv_map_mp_proto = -1;
+static int hf_mpls_echo_tlv_ddstlv_map_mp_exp = -1;
+static int hf_mpls_echo_tlv_ddstlv_map_mp_bos = -1;
+static int hf_mpls_echo_sub_tlv_multipath_ip = -1;
+static int hf_mpls_echo_sub_tlv_mp_ip_low = -1;
+static int hf_mpls_echo_sub_tlv_mp_ip_high = -1;
+static int hf_mpls_echo_sub_tlv_mp_mask = -1;
+static int hf_mpls_echo_sub_tlv_op_type = -1;
+static int hf_mpls_echo_sub_tlv_addr_type = -1;
+static int hf_mpls_echo_sub_tlv_fec_tlv_value = -1;
+static int hf_mpls_echo_sub_tlv_res = -1;
+static int hf_mpls_echo_sub_tlv_remote_peer_ip = -1;
+static int hf_mpls_echo_sub_tlv_remore_peer_ipv6 = -1;
+static int hf_mpls_echo_tlv_dd_map_type = -1;
+static int hf_mpls_echo_tlv_dd_map_length = -1;
+static int hf_mpls_echo_tlv_dd_map_value = -1;
static int hf_mpls_echo_tlv_padaction = -1;
static int hf_mpls_echo_tlv_padding = -1;
static int hf_mpls_echo_tlv_vendor = -1;
@@ -160,41 +199,48 @@ static gint ett_mpls_echo_tlv = -1;
static gint ett_mpls_echo_tlv_fec = -1;
static gint ett_mpls_echo_tlv_ds_map = -1;
static gint ett_mpls_echo_tlv_ilso = -1;
+static gint ett_mpls_echo_tlv_dd_map = -1;
+static gint ett_mpls_echo_tlv_ddstlv_map = -1;
static guint global_mpls_echo_udp_port = UDP_PORT_MPLS_ECHO;
static const value_string mpls_echo_msgtype[] = {
- {1, "MPLS Echo Request"},
- {2, "MPLS Echo Reply"},
- {3, "MPLS Data Plane Verification Request"},
- {4, "MPLS Data Plane Verification Reply"},
- {0, NULL}
+ {1, "MPLS Echo Request"},
+ {2, "MPLS Echo Reply"},
+ {3, "MPLS Data Plane Verification Request"},
+ {4, "MPLS Data Plane Verification Reply"},
+ {0, NULL}
};
static const value_string mpls_echo_replymode[] = {
- {1, "Do not reply"},
- {2, "Reply via an IPv4/IPv6 UDP packet"},
- {3, "Reply via an IPv4/IPv6 UDP packet with Router Alert"},
- {4, "Reply via application level control channel"},
- {0, NULL}
+ {1, "Do not reply"},
+ {2, "Reply via an IPv4/IPv6 UDP packet"},
+ {3, "Reply via an IPv4/IPv6 UDP packet with Router Alert"},
+ {4, "Reply via application level control channel"},
+ {0, NULL}
};
+/* http://www.iana.org/assignments/mpls-lsp-ping-parameters/mpls-lsp-ping-parameters.xml */
static const value_string mpls_echo_returncode[] = {
- {0, "No return code"},
- {1, "Malformed echo request received"},
- {2, "One or more of the TLVs was not understood"},
- {3, "Replying router is an egress for the FEC at stack depth RSC"},
- {4, "Replying router has no mapping for the FEC at stack depth RSC"},
- {5, "Reserved"},
- {6, "Reserved"},
- {7, "Reserved"},
- {8, "Label switched at stack-depth RSC"},
- {9, "Label switched but no MPLS forwarding at stack-depth RSC"},
- {10, "Mapping for this FEC is not the given label at stack depth RSC"},
- {11, "No label entry at stack-depth RSC"},
- {12, "Protocol not associated with interface at FEC stack depth RSC"},
- {13, "Premature termination, label stack shrinking to a single label"},
- {0, NULL}
+ {0, "No return code"},
+ {1, "Malformed echo request received"},
+ {2, "One or more of the TLVs was not understood"},
+ {3, "Replying router is an egress for the FEC at stack depth RSC"},
+ {4, "Replying router has no mapping for the FEC at stack depth RSC"},
+ {5, "Downstream Mapping Mismatch"}, /*[RFC4379] */
+ {6, "Upstream Interface Index Unknown"}, /*[RFC4379]*/
+ {7, "Reserved"},
+ {8, "Label switched at stack-depth RSC"},
+ {9, "Label switched but no MPLS forwarding at stack-depth RSC"},
+ {10, "Mapping for this FEC is not the given label at stack depth RSC"},
+ {11, "No label entry at stack-depth RSC"},
+ {12, "Protocol not associated with interface at FEC stack depth RSC"},
+ {13, "Premature termination, label stack shrinking to a single label"},
+ {14, "See DDM TLV for meaning of Return Code and Return SubCode"}, /* [RFC6424] */
+ {15, "Label switched with FEC change"}, /* [RFC6424] */
+ /* 16-251 Unassigned */
+ /* 252-255 Reserved for Vendor private use [RFC4379 */
+ {0, NULL}
};
#define TLV_TARGET_FEC_STACK 0x0001
@@ -214,131 +260,183 @@ static const value_string mpls_echo_returncode[] = {
#define TLV_DST_IDENTIFIER 0x000E
/* As per RFC 6426 http://tools.ietf.org/html/rfc6426 Section: 7.3 */
#define TLV_REVERSE_PATH_FEC_STACK 0x0010
+#define TLV_DETAILED_DOWNSTREAM 0x0014 /* [RFC6424] */
#define TLV_VENDOR_PRIVATE_START 0xFC00
#define TLV_VENDOR_PRIVATE_END 0xFFFF
/* MPLS Echo TLV Type names */
static const value_string mpls_echo_tlv_type_names[] = {
- { TLV_TARGET_FEC_STACK, "Target FEC Stack" },
- { TLV_DOWNSTREAM_MAPPING, "Downstream Mapping" },
- { TLV_PAD, "Pad" },
- { TLV_ERROR_CODE, "Error Code" },
- { TLV_VENDOR_CODE, "Vendor Enterprise Code" },
- { TLV_TBD, "TDB" },
- { TLV_ILSO_IPv4, "IPv4 Interface and Label Stack Object" },
- { TLV_ILSO_IPv6, "IPv6 Interface and Label Stack Object" },
- { TLV_ERRORED_TLV, "Errored TLVs" },
- { TLV_REPLY_TOS, "Reply TOS Byte" },
- { TLV_RTO_IPv4, "IPv4 Reply-to Object" },
- { TLV_RTO_IPv6, "IPv6 Reply-to Object" },
- { TLV_VENDOR_PRIVATE_START, "Vendor Private" },
- { TLV_REVERSE_PATH_FEC_STACK, "Reverse-path Target FEC Stack" },
- { TLV_SRC_IDENTIFIER, "Source Identifier TLV" },
- { TLV_DST_IDENTIFIER, "Destination Identifier TLV" },
- { 0, NULL}
+ { TLV_TARGET_FEC_STACK, "Target FEC Stack" },
+ { TLV_DOWNSTREAM_MAPPING, "Downstream Mapping" },
+ { TLV_DETAILED_DOWNSTREAM, "Detailed Downstream Mapping"},
+ { TLV_PAD, "Pad" },
+ { TLV_ERROR_CODE, "Error Code" },
+ { TLV_VENDOR_CODE, "Vendor Enterprise Code" },
+ { TLV_TBD, "TDB" },
+ { TLV_ILSO_IPv4, "IPv4 Interface and Label Stack Object" },
+ { TLV_ILSO_IPv6, "IPv6 Interface and Label Stack Object" },
+ { TLV_ERRORED_TLV, "Errored TLVs" },
+ { TLV_REPLY_TOS, "Reply TOS Byte" },
+ { TLV_RTO_IPv4, "IPv4 Reply-to Object" },
+ { TLV_RTO_IPv6, "IPv6 Reply-to Object" },
+ { TLV_VENDOR_PRIVATE_START, "Vendor Private" },
+ { TLV_REVERSE_PATH_FEC_STACK, "Reverse-path Target FEC Stack" },
+ { TLV_SRC_IDENTIFIER, "Source Identifier TLV" },
+ { TLV_DST_IDENTIFIER, "Destination Identifier TLV" },
+ { 0, NULL}
};
-#define TLV_FEC_STACK_LDP_IPv4 1
-#define TLV_FEC_STACK_LDP_IPv6 2
-#define TLV_FEC_STACK_RSVP_IPv4 3
-#define TLV_FEC_STACK_RSVP_IPv6 4
-#define TLV_FEC_STACK_RES 5
-#define TLV_FEC_STACK_VPN_IPv4 6
-#define TLV_FEC_STACK_VPN_IPv6 7
-#define TLV_FEC_STACK_L2_VPN 8
-#define TLV_FEC_STACK_L2_CID_OLD 9
-#define TLV_FEC_STACK_L2_CID_NEW 10
-#define TLV_FEC_STACK_L2_FEC_129 11
-#define TLV_FEC_STACK_BGP_LAB_v4 12
-#define TLV_FEC_STACK_BGP_LAB_v6 13
-#define TLV_FEC_STACK_GEN_IPv4 14
-#define TLV_FEC_STACK_GEN_IPv6 15
-#define TLV_FEC_STACK_NIL 16
+#define TLV_FEC_STACK_LDP_IPv4 1
+#define TLV_FEC_STACK_LDP_IPv6 2
+#define TLV_FEC_STACK_RSVP_IPv4 3
+#define TLV_FEC_STACK_RSVP_IPv6 4
+#define TLV_FEC_STACK_RES 5
+#define TLV_FEC_STACK_VPN_IPv4 6
+#define TLV_FEC_STACK_VPN_IPv6 7
+#define TLV_FEC_STACK_L2_VPN 8
+#define TLV_FEC_STACK_L2_CID_OLD 9
+#define TLV_FEC_STACK_L2_CID_NEW 10
+#define TLV_FEC_STACK_L2_FEC_129 11
+#define TLV_FEC_STACK_BGP_LAB_v4 12
+#define TLV_FEC_STACK_BGP_LAB_v6 13
+#define TLV_FEC_STACK_GEN_IPv4 14
+#define TLV_FEC_STACK_GEN_IPv6 15
+#define TLV_FEC_STACK_NIL 16
/*As per RFC 6426, http://tools.ietf.org/html/rfc6426 Section: 2.3 */
-#define TLV_FEC_STACK_STATIC_LSP 22
-#define TLV_FEC_STACK_STATIC_PW 23
+#define TLV_FEC_STACK_STATIC_LSP 22
+#define TLV_FEC_STACK_STATIC_PW 23
#define TLV_FEC_VENDOR_PRIVATE_START 0xFC00
#define TLV_FEC_VENDOR_PRIVATE_END 0xFFFF
/* FEC sub-TLV Type names */
static const value_string mpls_echo_tlv_fec_names[] = {
- { TLV_FEC_STACK_LDP_IPv4, "LDP IPv4 prefix"},
- { TLV_FEC_STACK_LDP_IPv6, "LDP IPv6 prefix"},
- { TLV_FEC_STACK_RSVP_IPv4, "RSVP IPv4 Session Query"},
- { TLV_FEC_STACK_RSVP_IPv6, "RSVP IPv6 Session Query"},
- { TLV_FEC_STACK_RES, "Reserved"},
- { TLV_FEC_STACK_VPN_IPv4, "VPN IPv4 prefix"},
- { TLV_FEC_STACK_VPN_IPv6, "VPN IPv6 prefix"},
- { TLV_FEC_STACK_L2_VPN, "L2 VPN endpoint"},
- { TLV_FEC_STACK_L2_CID_OLD, "FEC 128 Pseudowire (old)"},
- { TLV_FEC_STACK_L2_CID_NEW, "FEC 128 Pseudowire (new)"},
- { TLV_FEC_STACK_L2_FEC_129, "FEC 129 Pseudowire"},
- { TLV_FEC_STACK_BGP_LAB_v4, "BGP labeled IPv4 prefix"},
- { TLV_FEC_STACK_BGP_LAB_v6, "BGP labeled IPv6 prefix"},
- { TLV_FEC_STACK_GEN_IPv4, "Generic IPv4 prefix"},
- { TLV_FEC_STACK_GEN_IPv6, "Generic IPv6 prefix"},
- { TLV_FEC_STACK_NIL, "Nil FEC"},
- { TLV_FEC_STACK_STATIC_LSP, "Static LSP"},
- { TLV_FEC_STACK_STATIC_PW, "Static Pseudowire"},
- { TLV_FEC_VENDOR_PRIVATE_START, "Vendor Private"},
+ { TLV_FEC_STACK_LDP_IPv4, "LDP IPv4 prefix"},
+ { TLV_FEC_STACK_LDP_IPv6, "LDP IPv6 prefix"},
+ { TLV_FEC_STACK_RSVP_IPv4, "RSVP IPv4 Session Query"},
+ { TLV_FEC_STACK_RSVP_IPv6, "RSVP IPv6 Session Query"},
+ { TLV_FEC_STACK_RES, "Reserved"},
+ { TLV_FEC_STACK_VPN_IPv4, "VPN IPv4 prefix"},
+ { TLV_FEC_STACK_VPN_IPv6, "VPN IPv6 prefix"},
+ { TLV_FEC_STACK_L2_VPN, "L2 VPN endpoint"},
+ { TLV_FEC_STACK_L2_CID_OLD, "FEC 128 Pseudowire (old)"},
+ { TLV_FEC_STACK_L2_CID_NEW, "FEC 128 Pseudowire (new)"},
+ { TLV_FEC_STACK_L2_FEC_129, "FEC 129 Pseudowire"},
+ { TLV_FEC_STACK_BGP_LAB_v4, "BGP labeled IPv4 prefix"},
+ { TLV_FEC_STACK_BGP_LAB_v6, "BGP labeled IPv6 prefix"},
+ { TLV_FEC_STACK_GEN_IPv4, "Generic IPv4 prefix"},
+ { TLV_FEC_STACK_GEN_IPv6, "Generic IPv6 prefix"},
+ { TLV_FEC_STACK_NIL, "Nil FEC"},
+ { TLV_FEC_STACK_STATIC_LSP, "Static LSP"},
+ { TLV_FEC_STACK_STATIC_PW, "Static Pseudowire"},
+ { TLV_FEC_VENDOR_PRIVATE_START, "Vendor Private"},
+ { 0, NULL}
+};
+
+/* [RFC 6424] */
+#define TLV_FEC_MULTIPATH_DATA 1
+#define TLV_FEC_LABEL_STACK 2
+#define TLV_FEC_STACK_CHANGE 3
+
+static const value_string mpls_echo_subtlv_names[] = {
+ { TLV_FEC_MULTIPATH_DATA, "Multipath data"},
+ { TLV_FEC_LABEL_STACK, "Label stack"},
+ { TLV_FEC_STACK_CHANGE, "FEC stack change"},
{ 0, NULL}
};
-static const value_string mpls_echo_tlv_pad[] = {
- { 1, "Drop Pad TLV from reply" },
- { 2, "Copy Pad TLV to reply" },
+/* [RFC 6424] */
+#define TLV_MULTIPATH_NO_MULTIPATH 0
+#define TLV_MULTIPATH_IP_ADDRESS 2
+#define TLV_MULTIPATH_IP_ADDRESS_RANGE 4
+#define TLV_MULTIPATH_BIT_MASKED_IP 8
+#define TLV_MULTIPATH_BIT_MASKED_LABEL_SET 9
+
+static const value_string mpls_echo_multipathtlv_type[] = {
+ { TLV_MULTIPATH_NO_MULTIPATH, "Empty (Multipath Length = 0)"},
+ { TLV_MULTIPATH_IP_ADDRESS, "IP addresses"},
+ { TLV_MULTIPATH_IP_ADDRESS_RANGE, "low/high address pairs"},
+ { TLV_MULTIPATH_BIT_MASKED_IP, "IP address prefix and bit mask"},
+ { TLV_MULTIPATH_BIT_MASKED_LABEL_SET, "Label prefix and bit mask"},
{ 0, NULL}
};
-#define TLV_ADDR_IPv4 1
-#define TLV_ADDR_UNNUM_IPv4 2
-#define TLV_ADDR_IPv6 3
-#define TLV_ADDR_UNNUM_IPv6 4
+/* [RFC 6424] */
+#define SUB_TLV_FEC_PUSH 1
+#define SUB_TLV_FEC_POP 2
+
+const value_string mpls_echo_subtlv_op_types[] = {
+ { SUB_TLV_FEC_PUSH, "Push"},
+ { SUB_TLV_FEC_POP, "Pop"},
+ { 0, NULL}
+};
+
+/* [RFC 6424] */
+#define SUB_TLV_FEC_UNSPECIFIED 0
+#define SUB_TLV_FEC_IPV4 1
+#define SUB_TLV_FEC_IPV6 2
+
+const value_string mpls_echo_subtlv_addr_types[] = {
+ { SUB_TLV_FEC_UNSPECIFIED, "Unspecified"},
+ { SUB_TLV_FEC_IPV4, "IPv4"},
+ { SUB_TLV_FEC_IPV6, "IPv6"},
+ { 0, NULL}
+};
+
+static const value_string mpls_echo_tlv_pad[] = {
+ { 1, "Drop Pad TLV from reply" },
+ { 2, "Copy Pad TLV to reply" },
+ { 0, NULL}
+};
+
+#define TLV_ADDR_IPv4 1
+#define TLV_ADDR_UNNUM_IPv4 2
+#define TLV_ADDR_IPv6 3
+#define TLV_ADDR_UNNUM_IPv6 4
/* As per RFC 6426, http://tools.ietf.org/html/rfc6426 Section: 2.1 */
-#define TLV_ADDR_NONIP 5
+#define TLV_ADDR_NONIP 5
static const value_string mpls_echo_tlv_addr_type[] = {
- {TLV_ADDR_IPv4, "IPv4 Numbered"},
- {TLV_ADDR_UNNUM_IPv4, "IPv4 Unnumbered"},
- {TLV_ADDR_IPv6, "IPv6 Numbered"},
- {TLV_ADDR_UNNUM_IPv6, "IPv6 Unnumbered"},
- {TLV_ADDR_NONIP, "Non IP"},
- {0, NULL}
+ {TLV_ADDR_IPv4, "IPv4 Numbered"},
+ {TLV_ADDR_UNNUM_IPv4, "IPv4 Unnumbered"},
+ {TLV_ADDR_IPv6, "IPv6 Numbered"},
+ {TLV_ADDR_UNNUM_IPv6, "IPv6 Unnumbered"},
+ {TLV_ADDR_NONIP, "Non IP"},
+ {0, NULL}
};
-#define TLV_DS_MAP_HASH_NO_MP 0
-#define TLV_DS_MAP_HASH_LABEL 1
-#define TLV_DS_MAP_HASH_IP 2
-#define TLV_DS_MAP_HASH_LABEL_RANGE 3
-#define TLV_DS_MAP_HASH_IP_RANGE 4
-#define TLV_DS_MAP_HASH_NO_LABEL 5
-#define TLV_DS_MAP_HASH_ALL_IP 6
-#define TLV_DS_MAP_HASH_NO_MATCH 7
-#define TLV_DS_MAP_HASH_BITMASK_IP 8
-#define TLV_DS_MAP_HASH_BITMASK_LABEL 9
+#define TLV_DS_MAP_HASH_NO_MP 0
+#define TLV_DS_MAP_HASH_LABEL 1
+#define TLV_DS_MAP_HASH_IP 2
+#define TLV_DS_MAP_HASH_LABEL_RANGE 3
+#define TLV_DS_MAP_HASH_IP_RANGE 4
+#define TLV_DS_MAP_HASH_NO_LABEL 5
+#define TLV_DS_MAP_HASH_ALL_IP 6
+#define TLV_DS_MAP_HASH_NO_MATCH 7
+#define TLV_DS_MAP_HASH_BITMASK_IP 8
+#define TLV_DS_MAP_HASH_BITMASK_LABEL 9
static const value_string mpls_echo_tlv_ds_map_hash_type[] = {
- {TLV_DS_MAP_HASH_NO_MP, "no multipath"},
- {TLV_DS_MAP_HASH_LABEL, "label"},
- {TLV_DS_MAP_HASH_IP, "IP address"},
- {TLV_DS_MAP_HASH_LABEL_RANGE, "label range"},
- {TLV_DS_MAP_HASH_IP_RANGE, "IP address range"},
- {TLV_DS_MAP_HASH_NO_LABEL, "no more labels"},
- {TLV_DS_MAP_HASH_ALL_IP, "All IP addresses"},
- {TLV_DS_MAP_HASH_NO_MATCH, "no match"},
- {TLV_DS_MAP_HASH_BITMASK_IP, "Bit-masked IPv4 address set"},
- {TLV_DS_MAP_HASH_BITMASK_LABEL, "Bit-masked label set"},
- {0, NULL}
+ {TLV_DS_MAP_HASH_NO_MP, "no multipath"},
+ {TLV_DS_MAP_HASH_LABEL, "label"},
+ {TLV_DS_MAP_HASH_IP, "IP address"},
+ {TLV_DS_MAP_HASH_LABEL_RANGE, "label range"},
+ {TLV_DS_MAP_HASH_IP_RANGE, "IP address range"},
+ {TLV_DS_MAP_HASH_NO_LABEL, "no more labels"},
+ {TLV_DS_MAP_HASH_ALL_IP, "All IP addresses"},
+ {TLV_DS_MAP_HASH_NO_MATCH, "no match"},
+ {TLV_DS_MAP_HASH_BITMASK_IP, "Bit-masked IPv4 address set"},
+ {TLV_DS_MAP_HASH_BITMASK_LABEL, "Bit-masked label set"},
+ {0, NULL}
};
static const value_string mpls_echo_tlv_ds_map_mp_proto[] = {
- {0, "Unknown"},
- {1, "Static"},
- {2, "BGP"},
- {3, "LDP"},
- {4, "RSVP-TE"},
- {5, "Reserved"},
- {0, NULL}
+ {0, "Unknown"},
+ {1, "Static"},
+ {2, "BGP"},
+ {3, "LDP"},
+ {4, "RSVP-TE"},
+ {5, "Reserved"},
+ {0, NULL}
};
/*
@@ -347,317 +445,483 @@ static const value_string mpls_echo_tlv_ds_map_mp_proto[] = {
static void
dissect_mpls_echo_tlv_fec(tvbuff_t *tvb, guint offset, proto_tree *tree, int rem)
{
- proto_tree *ti = NULL, *tlv_fec_tree = NULL;
- proto_item *hidden_item;
- guint16 idx = 1, nil_idx = 1, type, saved_type;
- int length, nil_length, pad;
- guint32 label;
- guint8 exp, bos, ttl;
-
- if (tree){
- while (rem >= 4){ /* Type, Length */
+ proto_tree *ti = NULL, *tlv_fec_tree = NULL;
+ proto_item *hidden_item;
+ guint16 idx = 1, nil_idx = 1, type, saved_type;
+ int length, nil_length, pad;
+ guint32 label;
+ guint8 exp, bos, ttl;
+
+ if (tree) {
+ while (rem >= 4) { /* Type, Length */
type = tvb_get_ntohs(tvb, offset);
- saved_type = type;
- /* Check for Vendor Private sub-TLVs */
- if(type >= TLV_FEC_VENDOR_PRIVATE_START) /* && <= TLV_FEC_VENDOR_PRIVATE_END always true */
- type = TLV_FEC_VENDOR_PRIVATE_START;
+ saved_type = type;
+ /* Check for Vendor Private sub-TLVs */
+ if (type >= TLV_FEC_VENDOR_PRIVATE_START) /* && <= TLV_FEC_VENDOR_PRIVATE_END always true */
+ type = TLV_FEC_VENDOR_PRIVATE_START;
length = tvb_get_ntohs(tvb, offset + 2);
ti = proto_tree_add_text(tree, tvb, offset, length + 4, "FEC Element %u: %s",
- idx, val_to_str(type, mpls_echo_tlv_fec_names,
- "Unknown FEC type (0x%04X)"));
+ idx, val_to_str(type, mpls_echo_tlv_fec_names,
+ "Unknown FEC type (0x%04X)"));
tlv_fec_tree = proto_item_add_subtree(ti, ett_mpls_echo_tlv_fec);
- if(tlv_fec_tree == NULL) return;
+ if (tlv_fec_tree == NULL) return;
/* FEC sub-TLV Type and Length */
- proto_tree_add_uint_format(tlv_fec_tree, hf_mpls_echo_tlv_fec_type, tvb,
- offset, 2, saved_type, "Type: %s (%u)",
- val_to_str(type, mpls_echo_tlv_fec_names, "Unknown sub-TLV type"), saved_type);
+ proto_tree_add_uint_format(tlv_fec_tree, hf_mpls_echo_tlv_fec_type, tvb,
+ offset, 2, saved_type, "Type: %s (%u)",
+ val_to_str(type, mpls_echo_tlv_fec_names, "Unknown sub-TLV type"), saved_type);
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_len, tvb, offset + 2,
- 2, ENC_BIG_ENDIAN);
+ 2, ENC_BIG_ENDIAN);
- if (length + 4 > rem){
- proto_tree_add_text(tlv_fec_tree, tvb, offset, rem,
- "Error processing FEC sub-TLV: length is %u and reminder is %u",
- length, rem - 4);
- return;
- }
+ if (length + 4 > rem) {
+ proto_tree_add_text(tlv_fec_tree, tvb, offset, rem,
+ "Error processing FEC sub-TLV: length is %u and reminder is %u",
+ length, rem - 4);
+ return;
+ }
/* FEC sub-TLV Value */
switch (type) {
case TLV_FEC_STACK_LDP_IPv4:
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_ldp_ipv4,
- tvb, offset + 4, 4, ENC_BIG_ENDIAN);
+ tvb, offset + 4, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_ldp_ipv4_mask,
- tvb, offset + 8, 1, ENC_BIG_ENDIAN);
+ tvb, offset + 8, 1, ENC_BIG_ENDIAN);
if (length == 8)
proto_tree_add_text(tlv_fec_tree, tvb, offset + 9, 3, "Padding");
break;
- case TLV_FEC_STACK_LDP_IPv6:
+ case TLV_FEC_STACK_LDP_IPv6:
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_ldp_ipv6,
- tvb, offset + 4, 16, ENC_NA);
+ tvb, offset + 4, 16, ENC_NA);
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_ldp_ipv6_mask,
- tvb, offset + 20, 1, ENC_BIG_ENDIAN);
+ tvb, offset + 20, 1, ENC_BIG_ENDIAN);
if (length == 20)
proto_tree_add_text(tlv_fec_tree, tvb, offset + 21, 3, "Padding");
break;
- case TLV_FEC_STACK_RSVP_IPv4:
- if (length != 20){
- proto_tree_add_text(tlv_fec_tree, tvb, offset, rem,
- "Error processing sub-TLV: length is %d, should be 20", length);
- return;
- }
- proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_rsvp_ipv4_ipv4_endpoint,
- tvb, offset + 4, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_rsvp_ip_mbz1,
- tvb, offset + 8, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_rsvp_ip_tunnel_id,
- tvb, offset + 10, 2, ENC_BIG_ENDIAN);
- proto_tree_add_text(tlv_fec_tree, tvb, offset + 12, 4,
- "Extended Tunnel ID: 0x%08X (%s)", tvb_get_ntohl(tvb, offset + 12),
- tvb_ip_to_str(tvb, offset + 12));
- hidden_item = proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_rsvp_ipv4_ext_tunnel_id,
- tvb, offset + 12, 4, ENC_BIG_ENDIAN);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_rsvp_ipv4_ipv4_sender,
- tvb, offset + 16, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_rsvp_ip_mbz2,
- tvb, offset + 20, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_rsvp_ip_lsp_id,
- tvb, offset + 22, 2, ENC_BIG_ENDIAN);
- break;
+ case TLV_FEC_STACK_RSVP_IPv4:
+ if (length != 20) {
+ proto_tree_add_text(tlv_fec_tree, tvb, offset, rem,
+ "Error processing sub-TLV: length is %d, should be 20", length);
+ return;
+ }
+ proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_rsvp_ipv4_ipv4_endpoint,
+ tvb, offset + 4, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_rsvp_ip_mbz1,
+ tvb, offset + 8, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_rsvp_ip_tunnel_id,
+ tvb, offset + 10, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_text(tlv_fec_tree, tvb, offset + 12, 4,
+ "Extended Tunnel ID: 0x%08X (%s)", tvb_get_ntohl(tvb, offset + 12),
+ tvb_ip_to_str(tvb, offset + 12));
+ hidden_item = proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_rsvp_ipv4_ext_tunnel_id,
+ tvb, offset + 12, 4, ENC_BIG_ENDIAN);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_rsvp_ipv4_ipv4_sender,
+ tvb, offset + 16, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_rsvp_ip_mbz2,
+ tvb, offset + 20, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_rsvp_ip_lsp_id,
+ tvb, offset + 22, 2, ENC_BIG_ENDIAN);
+ break;
case TLV_FEC_STACK_RSVP_IPv6:
- if (length != 56){
+ if (length != 56) {
proto_tree_add_text(tlv_fec_tree, tvb, offset, rem,
- "Error processing sub-TLV: length is %d, should be 56", length);
+ "Error processing sub-TLV: length is %d, should be 56", length);
return;
}
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_rsvp_ipv6_ipv6_endpoint,
- tvb, offset + 4, 16, ENC_NA);
+ tvb, offset + 4, 16, ENC_NA);
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_rsvp_ip_mbz1,
- tvb, offset + 20, 2, ENC_BIG_ENDIAN);
+ tvb, offset + 20, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_rsvp_ip_tunnel_id,
- tvb, offset + 22, 2, ENC_BIG_ENDIAN);
+ tvb, offset + 22, 2, ENC_BIG_ENDIAN);
proto_tree_add_text(tlv_fec_tree, tvb, offset + 24, 16,
- "Extended Tunnel ID: 0x%s (%s)",
- tvb_bytes_to_str(tvb, offset + 24, 16),
- tvb_ip6_to_str(tvb, offset + 24));
+ "Extended Tunnel ID: 0x%s (%s)",
+ tvb_bytes_to_str(tvb, offset + 24, 16),
+ tvb_ip6_to_str(tvb, offset + 24));
hidden_item = proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_rsvp_ipv6_ext_tunnel_id,
- tvb, offset + 24, 16, ENC_NA);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
+ tvb, offset + 24, 16, ENC_NA);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_rsvp_ipv6_ipv6_sender,
- tvb, offset + 40, 16, ENC_NA);
+ tvb, offset + 40, 16, ENC_NA);
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_rsvp_ip_mbz2,
- tvb, offset + 56, 2, ENC_BIG_ENDIAN);
+ tvb, offset + 56, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_rsvp_ip_lsp_id,
- tvb, offset + 58, 2, ENC_BIG_ENDIAN);
+ tvb, offset + 58, 2, ENC_BIG_ENDIAN);
break;
case TLV_FEC_STACK_L2_CID_OLD:
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_l2cid_remote,
- tvb, offset + 4, 4, ENC_BIG_ENDIAN);
+ tvb, offset + 4, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_l2cid_vcid,
- tvb, offset + 8, 4, ENC_BIG_ENDIAN);
+ tvb, offset + 8, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_l2cid_encap,
- tvb, offset + 12, 2, ENC_BIG_ENDIAN);
+ tvb, offset + 12, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_l2cid_mbz,
- tvb, offset + 14, 2, ENC_BIG_ENDIAN);
+ tvb, offset + 14, 2, ENC_BIG_ENDIAN);
break;
- case TLV_FEC_STACK_L2_CID_NEW:
- if (length < 14){
+ case TLV_FEC_STACK_L2_CID_NEW:
+ if (length < 14) {
proto_tree_add_text(tlv_fec_tree, tvb, offset, rem,
- "Error processing sub-TLV: length is %d, should be 14", length);
+ "Error processing sub-TLV: length is %d, should be 14", length);
return;
}
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_l2cid_sender,
- tvb, offset + 4, 4, ENC_BIG_ENDIAN);
+ tvb, offset + 4, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_l2cid_remote,
- tvb, offset + 8, 4, ENC_BIG_ENDIAN);
+ tvb, offset + 8, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_l2cid_vcid,
- tvb, offset + 12, 4, ENC_BIG_ENDIAN);
+ tvb, offset + 12, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_l2cid_encap,
- tvb, offset + 16, 2, ENC_BIG_ENDIAN);
+ tvb, offset + 16, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_l2cid_mbz,
- tvb, offset + 18, 2, ENC_BIG_ENDIAN);
+ tvb, offset + 18, 2, ENC_BIG_ENDIAN);
break;
- case TLV_FEC_VENDOR_PRIVATE_START:
- if (length < 4) { /* SMI Enterprise code */
- proto_tree_add_text(tlv_fec_tree, tvb, offset + 4, length,
- "Error processing Vendor Private sub-TLV: length is %d, should be >= 4",
- length);
- } else {
- proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_vendor, tvb,
- offset + 4, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_value, tvb,
- offset + 8, length - 4, ENC_NA);
- }
- break;
- case TLV_FEC_STACK_BGP_LAB_v4:
+ case TLV_FEC_VENDOR_PRIVATE_START:
+ if (length < 4) { /* SMI Enterprise code */
+ proto_tree_add_text(tlv_fec_tree, tvb, offset + 4, length,
+ "Error processing Vendor Private sub-TLV: length is %d, should be >= 4",
+ length);
+ } else {
+ proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_vendor, tvb,
+ offset + 4, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_value, tvb,
+ offset + 8, length - 4, ENC_NA);
+ }
+ break;
+ case TLV_FEC_STACK_BGP_LAB_v4:
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_bgp_nh,
- tvb, offset + 4, 4, ENC_BIG_ENDIAN);
+ tvb, offset + 4, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_bgp_ipv4,
- tvb, offset + 8, 4, ENC_BIG_ENDIAN);
+ tvb, offset + 8, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_bgp_len,
- tvb, offset + 12, 1, ENC_BIG_ENDIAN);
+ tvb, offset + 12, 1, ENC_BIG_ENDIAN);
if (length == 12)
proto_tree_add_text(tlv_fec_tree, tvb, offset + 13, 3, "Padding");
- break;
- case TLV_FEC_STACK_GEN_IPv4:
+ break;
+ case TLV_FEC_STACK_GEN_IPv4:
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_gen_ipv4,
- tvb, offset + 4, 4, ENC_BIG_ENDIAN);
+ tvb, offset + 4, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_gen_ipv4_mask,
- tvb, offset + 8, 1, ENC_BIG_ENDIAN);
+ tvb, offset + 8, 1, ENC_BIG_ENDIAN);
if (length == 8)
proto_tree_add_text(tlv_fec_tree, tvb, offset + 9, 3, "Padding");
- break;
- case TLV_FEC_STACK_GEN_IPv6:
+ break;
+ case TLV_FEC_STACK_GEN_IPv6:
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_gen_ipv6,
- tvb, offset + 4, 16, ENC_NA);
+ tvb, offset + 4, 16, ENC_NA);
proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_gen_ipv6_mask,
- tvb, offset + 20, 1, ENC_BIG_ENDIAN);
+ tvb, offset + 20, 1, ENC_BIG_ENDIAN);
if (length == 20)
proto_tree_add_text(tlv_fec_tree, tvb, offset + 21, 3, "Padding");
- break;
- case TLV_FEC_STACK_NIL:
+ break;
+ case TLV_FEC_STACK_NIL:
nil_length = length;
- while (nil_length >= 4){
- decode_mpls_label(tvb, offset + 4, &label, &exp, &bos, &ttl);
- if (label <= LABEL_MAX_RESERVED){
- proto_tree_add_uint_format(tlv_fec_tree, hf_mpls_echo_tlv_fec_nil_label,
- tvb, offset + 4, 3, label, "Label %u: %u (%s)", nil_idx, label,
- val_to_str(label, special_labels, "Reserved - Unknown"));
- } else {
- proto_tree_add_uint_format(tlv_fec_tree, hf_mpls_echo_tlv_fec_nil_label,
- tvb, offset + 4, 3, label, "Label %u: %u", nil_idx, label);
- }
- nil_length -= 4;
- offset += 4;
- nil_idx++;
- }
- break;
- case TLV_FEC_STACK_STATIC_LSP:
- proto_tree_add_item (tlv_fec_tree, hf_mpls_echo_lspping_tlv_src_gid,
- tvb, (offset + 4), 4, ENC_BIG_ENDIAN);
- proto_tree_add_item (tlv_fec_tree, hf_mpls_echo_lspping_tlv_src_nid,
+ while (nil_length >= 4) {
+ decode_mpls_label(tvb, offset + 4, &label, &exp, &bos, &ttl);
+ if (label <= LABEL_MAX_RESERVED) {
+ proto_tree_add_uint_format(tlv_fec_tree, hf_mpls_echo_tlv_fec_nil_label,
+ tvb, offset + 4, 3, label, "Label %u: %u (%s)", nil_idx, label,
+ val_to_str(label, special_labels, "Reserved - Unknown"));
+ } else {
+ proto_tree_add_uint_format(tlv_fec_tree, hf_mpls_echo_tlv_fec_nil_label,
+ tvb, offset + 4, 3, label, "Label %u: %u", nil_idx, label);
+ }
+ nil_length -= 4;
+ offset += 4;
+ nil_idx++;
+ }
+ break;
+ case TLV_FEC_STACK_STATIC_LSP:
+ proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_lspping_tlv_src_gid,
+ tvb, (offset + 4), 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_lspping_tlv_src_nid,
tvb, (offset + 8), 4, ENC_BIG_ENDIAN);
- proto_tree_add_item (tlv_fec_tree, hf_mpls_echo_lspping_tlv_src_tunnel_no,
+ proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_lspping_tlv_src_tunnel_no,
tvb, (offset + 12), 2, ENC_BIG_ENDIAN);
- proto_tree_add_item (tlv_fec_tree, hf_mpls_echo_lspping_tlv_lsp_no,
- tvb, (offset + 14), 2, ENC_BIG_ENDIAN);
- proto_tree_add_item (tlv_fec_tree, hf_mpls_echo_lspping_tlv_dst_gid,
- tvb, (offset + 16), 4, ENC_BIG_ENDIAN);
- proto_tree_add_item (tlv_fec_tree, hf_mpls_echo_lspping_tlv_dst_nid,
- tvb, (offset + 20), 4, ENC_BIG_ENDIAN);
- proto_tree_add_item (tlv_fec_tree, hf_mpls_echo_lspping_tlv_dst_tunnel_no,
- tvb, (offset + 24), 2, ENC_BIG_ENDIAN);
- proto_tree_add_item (tlv_fec_tree, hf_mpls_echo_lspping_tlv_resv,
- tvb, (offset + 26), 2, ENC_BIG_ENDIAN);
- break;
- case TLV_FEC_STACK_STATIC_PW:
- proto_tree_add_item (tlv_fec_tree, hf_mpls_echo_lspping_tlv_pw_serv_identifier,
+ proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_lspping_tlv_lsp_no,
+ tvb, (offset + 14), 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_lspping_tlv_dst_gid,
+ tvb, (offset + 16), 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_lspping_tlv_dst_nid,
+ tvb, (offset + 20), 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_lspping_tlv_dst_tunnel_no,
+ tvb, (offset + 24), 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_lspping_tlv_resv,
+ tvb, (offset + 26), 2, ENC_BIG_ENDIAN);
+ break;
+ case TLV_FEC_STACK_STATIC_PW:
+ proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_lspping_tlv_pw_serv_identifier,
tvb, (offset + 4), 8, ENC_BIG_ENDIAN);
- proto_tree_add_item (tlv_fec_tree, hf_mpls_echo_lspping_tlv_src_gid,
- tvb, (offset + 12), 4, ENC_BIG_ENDIAN);
- proto_tree_add_item (tlv_fec_tree, hf_mpls_echo_lspping_tlv_src_nid,
- tvb, (offset + 16), 4, ENC_BIG_ENDIAN);
- proto_tree_add_item (tlv_fec_tree, hf_mpls_echo_lspping_tlv_pw_src_ac_id,
- tvb, (offset + 20), 4, ENC_BIG_ENDIAN);
- proto_tree_add_item (tlv_fec_tree, hf_mpls_echo_lspping_tlv_dst_gid,
- tvb, (offset + 24), 4, ENC_BIG_ENDIAN);
- proto_tree_add_item (tlv_fec_tree, hf_mpls_echo_lspping_tlv_dst_nid,
- tvb, (offset + 28), 4, ENC_BIG_ENDIAN);
- proto_tree_add_item (tlv_fec_tree, hf_mpls_echo_lspping_tlv_pw_dst_ac_id,
- tvb, (offset + 32), 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_lspping_tlv_src_gid,
+ tvb, (offset + 12), 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_lspping_tlv_src_nid,
+ tvb, (offset + 16), 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_lspping_tlv_pw_src_ac_id,
+ tvb, (offset + 20), 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_lspping_tlv_dst_gid,
+ tvb, (offset + 24), 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_lspping_tlv_dst_nid,
+ tvb, (offset + 28), 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_lspping_tlv_pw_dst_ac_id,
+ tvb, (offset + 32), 4, ENC_BIG_ENDIAN);
break;
case TLV_FEC_STACK_RES:
case TLV_FEC_STACK_VPN_IPv4:
case TLV_FEC_STACK_VPN_IPv6:
case TLV_FEC_STACK_L2_VPN:
default:
- if(length)
- proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_value,
- tvb, offset + 4, length, ENC_NA);
+ if (length)
+ proto_tree_add_item(tlv_fec_tree, hf_mpls_echo_tlv_fec_value,
+ tvb, offset + 4, length, ENC_NA);
break;
}
- /*
- * Check for padding based on sub-TLV length alignment;
- * FEC sub-TLVs is zero-padded to align to four-octet boundary.
- */
- if (length % 4){
- pad = 4 - (length % 4);
- if (length + 4 + pad > rem){
- proto_tree_add_text(tlv_fec_tree, tvb, offset, rem,
- "Error processing FEC sub-TLV: padded length is %u and reminder is %u",
- length + pad, rem - 4);
- return;
- } else {
- proto_tree_add_text(tlv_fec_tree, tvb, offset + 4 + length, pad, "Padding");
- }
- length += pad;
- }
+ /*
+ * Check for padding based on sub-TLV length alignment;
+ * FEC sub-TLVs is zero-padded to align to four-octet boundary.
+ */
+ if (length % 4) {
+ pad = 4 - (length % 4);
+ if (length + 4 + pad > rem) {
+ proto_tree_add_text(tlv_fec_tree, tvb, offset, rem,
+ "Error processing FEC sub-TLV: padded length is %u and reminder is %u",
+ length + pad, rem - 4);
+ return;
+ } else {
+ proto_tree_add_text(tlv_fec_tree, tvb, offset + 4 + length, pad, "Padding");
+ }
+ length += pad;
+ }
rem -= 4 + length;
offset += 4 + length;
idx++;
- }
}
+ }
}
+
/*
* Dissector for Downstream Mapping TLV
*/
static void
dissect_mpls_echo_tlv_ds_map(tvbuff_t *tvb, guint offset, proto_tree *tree, int rem)
{
- proto_tree *ti = NULL, *tlv_ds_map_tree = NULL;
- guint16 mplen, idx = 1;
+ proto_tree *ti = NULL, *tlv_ds_map_tree = NULL;
+ guint16 mplen, idx = 1;
+ guint32 label;
+ guint8 exp, bos, proto;
+ guint8 hash_type, addr_type;
+
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_mtu, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_addr_type, tvb,
+ offset + 2, 1, ENC_BIG_ENDIAN);
+ ti = proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_res, tvb,
+ offset + 3, 1, ENC_BIG_ENDIAN);
+ tlv_ds_map_tree = proto_item_add_subtree(ti, ett_mpls_echo_tlv_ds_map);
+
+ proto_tree_add_item(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_flag_res, tvb,
+ offset + 3, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_flag_i, tvb,
+ offset + 3, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_flag_n, tvb,
+ offset + 3, 1, ENC_BIG_ENDIAN);
+
+ addr_type = tvb_get_guint8(tvb, offset + 2);
+ switch(addr_type) {
+ case TLV_ADDR_IPv4:
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_ds_ip, tvb,
+ offset + 4, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_int_ip, tvb,
+ offset + 8, 4, ENC_BIG_ENDIAN);
+ break;
+ case TLV_ADDR_UNNUM_IPv4:
+ case TLV_ADDR_UNNUM_IPv6:
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_ds_ip, tvb,
+ offset + 4, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_if_index, tvb,
+ offset + 8, 4, ENC_BIG_ENDIAN);
+ break;
+ case TLV_ADDR_IPv6:
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_ds_ipv6, tvb,
+ offset + 4, 16, ENC_NA);
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_int_ipv6, tvb,
+ offset + 20, 16, ENC_NA);
+ rem -= 24;
+ offset += 24;
+ break;
+ case TLV_ADDR_NONIP :
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_ingress_if_num, tvb,
+ (offset + 4), 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_egress_if_num, tvb,
+ (offset + 8), 4, ENC_BIG_ENDIAN);
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, offset + 4, 8,
+ "Error processing TLV: Unknown Address Type of %u",
+ addr_type);
+ break;
+ }
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_hash_type, tvb,
+ offset + 12, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_depth, tvb,
+ offset + 13, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_muti_len, tvb,
+ offset + 14, 2, ENC_BIG_ENDIAN);
+
+ /* Get the Multipath Length and Hash Type */
+ mplen = tvb_get_ntohs(tvb, offset + 14);
+ hash_type = tvb_get_guint8(tvb, offset + 12);
+
+ rem -= 16;
+ offset += 16;
+ if (rem < mplen) {
+ proto_tree_add_text(tree, tvb, offset, rem,
+ "Error processing TLV: Multi Path length is %d and reminder is %u",
+ mplen, rem);
+ return;
+ }
+ rem -= mplen;
+ if (mplen) {
+ switch(hash_type) {
+ case TLV_DS_MAP_HASH_IP:
+ if (mplen != 4) {
+ proto_tree_add_text(tree, tvb, offset, mplen,
+ "Multi Path length is %u and should be 4", mplen);
+ break;
+ }
+ ti = proto_tree_add_text(tree, tvb, offset, 4,
+ "Multipath Information");
+ tlv_ds_map_tree = proto_item_add_subtree(ti, ett_mpls_echo_tlv_ds_map);
+ proto_tree_add_item(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_mp_ip, tvb,
+ offset, 4, ENC_BIG_ENDIAN);
+ break;
+ case TLV_DS_MAP_HASH_IP_RANGE:
+ if (mplen != 8) {
+ proto_tree_add_text(tree, tvb, offset, mplen,
+ "Multi Path length is %u and should be 8", mplen);
+ break;
+ }
+ ti = proto_tree_add_text(tree, tvb, offset, 8,
+ "Multipath Information");
+ tlv_ds_map_tree = proto_item_add_subtree(ti, ett_mpls_echo_tlv_ds_map);
+ proto_tree_add_item(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_mp_ip_low, tvb,
+ offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_mp_ip_high, tvb,
+ offset + 4, 4, ENC_BIG_ENDIAN);
+ break;
+ case TLV_DS_MAP_HASH_NO_MP:
+ case TLV_DS_MAP_HASH_NO_LABEL:
+ case TLV_DS_MAP_HASH_ALL_IP:
+ case TLV_DS_MAP_HASH_NO_MATCH:
+ proto_tree_add_text(tree, tvb, offset, mplen,
+ "No Multipath Information");
+ break;
+ case TLV_DS_MAP_HASH_BITMASK_IP:
+ if (mplen < 4) {
+ proto_tree_add_text(tree, tvb, offset, mplen,
+ "Multi Path length is %u and should be >= 4", mplen);
+ break;
+ }
+ ti = proto_tree_add_text(tree, tvb, offset, mplen,
+ "Multipath Information");
+ tlv_ds_map_tree = proto_item_add_subtree(ti, ett_mpls_echo_tlv_ds_map);
+ proto_tree_add_item(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_mp_ip, tvb,
+ offset, 4, ENC_BIG_ENDIAN);
+ if (mplen > 4)
+ proto_tree_add_item(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_mp_mask, tvb,
+ offset + 4, mplen - 4, ENC_NA);
+ break;
+ default:
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_mp_value, tvb,
+ offset, mplen, ENC_NA);
+ break;
+ }
+ }
+
+ offset += mplen;
+
+ while (rem >= 4) {
+ decode_mpls_label(tvb, offset, &label, &exp, &bos, &proto);
+ ti = proto_tree_add_text(tree, tvb, offset, 4, "Downstream Label Element %u",
+ idx);
+ tlv_ds_map_tree = proto_item_add_subtree(ti, ett_mpls_echo_tlv_ds_map);
+ proto_item_append_text(ti, ", Label: %u", label);
+ if (label <= LABEL_MAX_RESERVED) {
+ proto_tree_add_uint_format(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_mp_label,
+ tvb, offset, 3, label, "Downstream Label: %u (%s)", label,
+ val_to_str(label, special_labels, "Reserved - Unknown"));
+ proto_item_append_text(ti, " (%s)", val_to_str(label, special_labels,
+ "Reserved - Unknown"));
+ } else {
+ proto_tree_add_uint_format(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_mp_label,
+ tvb, offset, 3, label, "Downstream Label: %u", label);
+ }
+ proto_item_append_text(ti, ", Exp: %u, BOS: %u", exp, bos);
+ proto_tree_add_uint_format(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_mp_exp,
+ tvb, offset + 2, 1, exp, "Downstream Exp: %u", exp);
+ proto_tree_add_uint_format(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_mp_bos,
+ tvb, offset + 2, 1, bos, "Downstream BOS: %u", bos);
+ proto_tree_add_item(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_mp_proto,
+ tvb, offset + 3, 1, ENC_BIG_ENDIAN);
+ proto_item_append_text(ti, ", Protocol: %u (%s)", proto, val_to_str(proto,
+ mpls_echo_tlv_ds_map_mp_proto, "Unknown"));
+ rem -= 4;
+ offset += 4;
+ idx++;
+ }
+}
+
+/* Dissector for Detailed Downstream Mapping TLV - RFC [6424] */
+static void
+dissect_mpls_echo_tlv_dd_map(tvbuff_t *tvb, guint offset, proto_tree *tree, int rem)
+{
+ proto_tree *ddti = NULL, *tlv_dd_map_tree = NULL, *tlv_ddstlv_map_tree = NULL;
+ proto_tree *ddsti = NULL, *ddsti2 = NULL;
+ guint16 subtlv_length, subtlv_type, multipath_length;
+ guint8 addr_type, multipath_type, address_type, fec_tlv_length;
+ guint16 idx = 1;
guint32 label;
- guint8 exp, bos, proto;
- guint8 hash_type, addr_type;
+ guint8 tc, s_bit, proto;
- proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_mtu, tvb,
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_dd_map_mtu, tvb,
offset, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_addr_type, tvb,
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_dd_map_addr_type, tvb,
offset + 2, 1, ENC_BIG_ENDIAN);
- ti = proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_res, tvb,
+ ddti = proto_tree_add_item(tree, hf_mpls_echo_tlv_dd_map_res, tvb,
offset + 3, 1, ENC_BIG_ENDIAN);
- tlv_ds_map_tree = proto_item_add_subtree(ti, ett_mpls_echo_tlv_ds_map);
+ tlv_dd_map_tree = proto_item_add_subtree(ddti, ett_mpls_echo_tlv_dd_map);
- proto_tree_add_item(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_flag_res, tvb,
+ proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_tlv_dd_map_flag_res, tvb,
offset + 3, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_flag_i, tvb,
+ proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_tlv_dd_map_flag_i, tvb,
offset + 3, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_flag_n, tvb,
+ proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_tlv_dd_map_flag_n, tvb,
offset + 3, 1, ENC_BIG_ENDIAN);
addr_type = tvb_get_guint8(tvb, offset + 2);
switch(addr_type){
case TLV_ADDR_IPv4:
- proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_ds_ip, tvb,
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_dd_map_ds_ip, tvb,
offset + 4, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_int_ip, tvb,
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_dd_map_int_ip, tvb,
offset + 8, 4, ENC_BIG_ENDIAN);
break;
- case TLV_ADDR_UNNUM_IPv4:
- case TLV_ADDR_UNNUM_IPv6:
- proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_ds_ip, tvb,
- offset + 4, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_if_index, tvb,
- offset + 8, 4, ENC_BIG_ENDIAN);
- break;
case TLV_ADDR_IPv6:
- proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_ds_ipv6, tvb,
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_dd_map_ds_ipv6, tvb,
offset + 4, 16, ENC_NA);
- proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_int_ipv6, tvb,
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_dd_map_int_ipv6, tvb,
offset + 20, 16, ENC_NA);
rem -= 24;
offset += 24;
break;
case TLV_ADDR_NONIP :
- proto_tree_add_item (tree, hf_mpls_echo_tlv_ds_map_ingress_if_num, tvb,
+ proto_tree_add_item (tree, hf_mpls_echo_tlv_dd_map_ingress_if_num, tvb,
(offset + 4), 4, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_mpls_echo_tlv_ds_map_egress_if_num, tvb,
+ proto_tree_add_item (tree, hf_mpls_echo_tlv_dd_map_egress_if_num, tvb,
(offset + 8), 4, ENC_BIG_ENDIAN);
break;
default:
@@ -666,113 +930,198 @@ dissect_mpls_echo_tlv_ds_map(tvbuff_t *tvb, guint offset, proto_tree *tree, int
addr_type);
break;
}
- proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_hash_type, tvb,
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_dd_map_return_code, tvb,
offset + 12, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_depth, tvb,
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_dd_map_return_subcode, tvb,
offset + 13, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_muti_len, tvb,
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_dd_map_subtlv_len, tvb,
offset + 14, 2, ENC_BIG_ENDIAN);
- /* Get the Multipath Length and Hash Type */
- mplen = tvb_get_ntohs(tvb, offset + 14);
- hash_type = tvb_get_guint8(tvb, offset + 12);
+ /* Get the Sub-tlv Type and Length */
+ subtlv_type = tvb_get_ntohs(tvb, offset + 16);
+ subtlv_length = tvb_get_ntohs(tvb, offset + 18);
- rem -= 16;
- offset += 16;
- if (rem < mplen){
+ rem -= 20;
+ offset += 20;
+ if (rem < subtlv_length){
proto_tree_add_text(tree, tvb, offset, rem,
- "Error processing TLV: Multi Path length is %d and reminder is %u",
- mplen, rem);
+ "Error processing TLV: Sub-tlv length is %d and reminder is %u",
+ subtlv_length, rem);
return;
}
- rem -= mplen;
- if(mplen){
- switch(hash_type){
- case TLV_DS_MAP_HASH_IP:
- if(mplen != 4){
- proto_tree_add_text(tree, tvb, offset, mplen,
- "Multi Path length is %u and should be 4", mplen);
+
+ while(rem > 4) {
+
+ switch(subtlv_type) {
+ case TLV_FEC_MULTIPATH_DATA:
+ multipath_type = tvb_get_guint8(tvb, offset);
+ multipath_length = tvb_get_ntohs(tvb, offset + 1);
+ ddsti = proto_tree_add_text(tree, tvb, offset - 4, multipath_length + 8,
+ "Multipath sub-TLV");
+ tlv_dd_map_tree = proto_item_add_subtree(ddsti, ett_mpls_echo_tlv_dd_map);
+
+ switch(multipath_type) {
+ case TLV_MULTIPATH_NO_MULTIPATH:
+ proto_tree_add_item(tlv_dd_map_tree,
+ hf_mpls_echo_sub_tlv_multipath_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_dd_map_tree,
+ hf_mpls_echo_sub_tlv_multipath_length, tvb, offset + 1, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_sub_tlv_resv, tvb,
+ offset + 3, 1, ENC_BIG_ENDIAN);
+ ddsti2 = proto_tree_add_text(tlv_dd_map_tree, tvb, offset + 4, multipath_length, "Empty (Multipath Length = 0)");
+ tlv_ddstlv_map_tree = proto_item_add_subtree(ddsti2, ett_mpls_echo_tlv_ddstlv_map);
+ proto_tree_add_item(tlv_ddstlv_map_tree,
+ hf_mpls_echo_sub_tlv_multipath_info, tvb, offset + 4, multipath_length, ENC_BIG_ENDIAN);
+ break;
+
+ case TLV_MULTIPATH_IP_ADDRESS:
+ if(multipath_length != 4) {
+ proto_tree_add_text(tlv_dd_map_tree, tvb, offset, multipath_length,
+ "Multi Path length is %u and should be 4", multipath_length);
+ break;
+ }
+ proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_sub_tlv_multipath_type, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_dd_map_tree,
+ hf_mpls_echo_sub_tlv_multipath_length, tvb, offset + 1, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_sub_tlv_resv, tvb,
+ offset + 3, 1, ENC_BIG_ENDIAN);
+
+ ddsti2 = proto_tree_add_text(tlv_dd_map_tree, tvb, offset + 4, multipath_length, "Multipath Information (IP addresses)");
+ tlv_ddstlv_map_tree = proto_item_add_subtree(ddsti2, ett_mpls_echo_tlv_ddstlv_map);
+
+ proto_tree_add_item(tlv_ddstlv_map_tree, hf_mpls_echo_sub_tlv_multipath_ip, tvb,
+ offset + 4, 4, ENC_BIG_ENDIAN);
+ break;
+
+ case TLV_MULTIPATH_IP_ADDRESS_RANGE:
+ if(multipath_length != 8) {
+ proto_tree_add_text(tlv_dd_map_tree, tvb, offset, multipath_length,
+ "Multi Path length is %u and should be 8", multipath_length);
+ break;
+ }
+ proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_sub_tlv_multipath_type, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_dd_map_tree,
+ hf_mpls_echo_sub_tlv_multipath_length, tvb, offset + 1, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_sub_tlv_resv, tvb,
+ offset + 3, 1, ENC_BIG_ENDIAN);
+
+ ddsti2 = proto_tree_add_text(tlv_dd_map_tree, tvb, offset + 4, multipath_length, "Multipath Information (low/high address pairs)");
+ tlv_ddstlv_map_tree = proto_item_add_subtree(ddsti2, ett_mpls_echo_tlv_ddstlv_map);
+
+ proto_tree_add_item(tlv_ddstlv_map_tree, hf_mpls_echo_sub_tlv_mp_ip_low, tvb,
+ offset + 4, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_ddstlv_map_tree, hf_mpls_echo_sub_tlv_mp_ip_high, tvb,
+ offset + 8, 4, ENC_BIG_ENDIAN);
+ break;
+
+ case TLV_MULTIPATH_BIT_MASKED_IP:
+ if(multipath_length < 4) {
+ proto_tree_add_text(tlv_dd_map_tree, tvb, offset, multipath_length,
+ "Multi Path length is %u and should be >= 4", multipath_length);
+ break;
+ }
+ proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_sub_tlv_multipath_type, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_dd_map_tree,
+ hf_mpls_echo_sub_tlv_multipath_length, tvb, offset + 1, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_sub_tlv_resv, tvb,
+ offset + 3, 1, ENC_BIG_ENDIAN);
+
+ ddsti2 = proto_tree_add_text(tlv_dd_map_tree, tvb, offset + 4, multipath_length, "Multipath Information (IP address prefix and bit mask)");
+ tlv_ddstlv_map_tree = proto_item_add_subtree(ddsti2, ett_mpls_echo_tlv_ddstlv_map);
+
+ proto_tree_add_item(tlv_ddstlv_map_tree, hf_mpls_echo_sub_tlv_multipath_ip, tvb,
+ offset + 4, 4, ENC_BIG_ENDIAN);
+ if(multipath_length > 4)
+ proto_tree_add_item(tlv_ddstlv_map_tree, hf_mpls_echo_sub_tlv_mp_mask, tvb, offset + 8, multipath_length - 4, ENC_NA);
+ break;
+
+ case TLV_MULTIPATH_BIT_MASKED_LABEL_SET:
+ proto_tree_add_text(tlv_dd_map_tree, tvb, offset, 1,
+ "Multipath Information (Label prefix and bit mask)");
+ break;
+
+ default:
+ proto_tree_add_text(tlv_dd_map_tree, tvb, offset, 1,
+ "Multipath Type not identified (%u)", multipath_type);
+ proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_sub_tlv_multipath_type, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_dd_map_tree,
+ hf_mpls_echo_sub_tlv_multipath_length, tvb, offset + 1, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_sub_tlv_multipath_value, tvb,
+ offset + 3, rem, ENC_BIG_ENDIAN);
+ break;
+ }
+
+ rem -= (multipath_length + 4);
break;
- }
- ti = proto_tree_add_text(tree, tvb, offset, 4,
- "Multipath Information");
- tlv_ds_map_tree = proto_item_add_subtree(ti, ett_mpls_echo_tlv_ds_map);
- proto_tree_add_item(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_mp_ip, tvb,
- offset, 4, ENC_BIG_ENDIAN);
- break;
- case TLV_DS_MAP_HASH_IP_RANGE:
- if(mplen != 8){
- proto_tree_add_text(tree, tvb, offset, mplen,
- "Multi Path length is %u and should be 8", mplen);
+
+ case TLV_FEC_LABEL_STACK:
+ ddsti = proto_tree_add_text(tree, tvb, offset - 4, subtlv_length + 4, "Label stack sub-TLV");
+ tlv_dd_map_tree = proto_item_add_subtree(ddsti, ett_mpls_echo_tlv_dd_map);
+
+ while (rem >= 4) {
+ decode_mpls_label(tvb, offset, &label, &tc, &s_bit, &proto);
+
+ ddsti2 = proto_tree_add_text(tlv_dd_map_tree,
+ tvb, offset, 4, "Downstream Label Element %u", idx);
+ tlv_ddstlv_map_tree = proto_item_add_subtree(ddsti2, ett_mpls_echo_tlv_ddstlv_map);
+ proto_item_append_text(ddsti2, ", Label: %u , Protocol: %u", label, proto);
+ proto_tree_add_text( tlv_ddstlv_map_tree, tvb, offset, 3, "Label: %u", label);
+ proto_tree_add_text(tlv_ddstlv_map_tree, tvb, offset + 2, 1, "Traffic Class: %u", tc);
+ proto_tree_add_text(tlv_ddstlv_map_tree, tvb, offset + 2, 1, "S bit: %u", s_bit);
+ proto_tree_add_item(tlv_ddstlv_map_tree, hf_mpls_echo_tlv_ddstlv_map_mp_proto,
+ tvb, offset + 3, 1, ENC_BIG_ENDIAN);
+
+ rem -= 4;
+ offset += 4;
+ idx++;
+ }
break;
- }
- ti = proto_tree_add_text(tree, tvb, offset, 8,
- "Multipath Information");
- tlv_ds_map_tree = proto_item_add_subtree(ti, ett_mpls_echo_tlv_ds_map);
- proto_tree_add_item(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_mp_ip_low, tvb,
- offset, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_mp_ip_high, tvb,
- offset + 4, 4, ENC_BIG_ENDIAN);
- break;
- case TLV_DS_MAP_HASH_NO_MP:
- case TLV_DS_MAP_HASH_NO_LABEL:
- case TLV_DS_MAP_HASH_ALL_IP:
- case TLV_DS_MAP_HASH_NO_MATCH:
- proto_tree_add_text(tree, tvb, offset, mplen,
- "No Multipath Information");
- break;
- case TLV_DS_MAP_HASH_BITMASK_IP:
- if(mplen < 4){
- proto_tree_add_text(tree, tvb, offset, mplen,
- "Multi Path length is %u and should be >= 4", mplen);
+
+ case TLV_FEC_STACK_CHANGE:
+ address_type = tvb_get_guint8(tvb, offset + 1);
+ fec_tlv_length = tvb_get_guint8(tvb, offset + 2);
+ ddsti = proto_tree_add_text(tree, tvb, offset - 4, fec_tlv_length + 12, "Stack change sub-TLV");
+ tlv_dd_map_tree = proto_item_add_subtree(ddsti, ett_mpls_echo_tlv_dd_map);
+
+ proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_sub_tlv_op_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_sub_tlv_addr_type, tvb, offset + 1, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_sub_tlv_fec_tlv_value, tvb, offset + 2, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_sub_tlv_res, tvb, offset + 3, 1, ENC_BIG_ENDIAN);
+ switch(address_type) {
+ case SUB_TLV_FEC_UNSPECIFIED:
+ proto_tree_add_text(tlv_dd_map_tree, tvb, offset + 4, 0, "Unspecified (Address Length = 0)");
+ rem += 4;
+ offset -= 4;
+ break;
+ case SUB_TLV_FEC_IPV4:
+ proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_sub_tlv_remote_peer_ip, tvb, offset + 4, 4, ENC_BIG_ENDIAN);
+ break;
+ case SUB_TLV_FEC_IPV6:
+ proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_sub_tlv_remore_peer_ipv6, tvb, offset + 4, 16, ENC_NA);
+ rem -= 12;
+ offset += 12;
+ break;
+ }
+
+ offset -= 8;
+ dissect_mpls_echo_tlv_fec(tvb, offset, tlv_dd_map_tree, fec_tlv_length);
+
+ rem -= (fec_tlv_length + 8);
break;
- }
- ti = proto_tree_add_text(tree, tvb, offset, mplen,
- "Multipath Information");
- tlv_ds_map_tree = proto_item_add_subtree(ti, ett_mpls_echo_tlv_ds_map);
- proto_tree_add_item(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_mp_ip, tvb,
- offset, 4, ENC_BIG_ENDIAN);
- if(mplen > 4)
- proto_tree_add_item(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_mp_mask, tvb,
- offset + 4, mplen - 4, ENC_NA);
- break;
- default:
- proto_tree_add_item(tree, hf_mpls_echo_tlv_ds_map_mp_value, tvb,
- offset, mplen, ENC_NA);
- break;
- }
- }
- offset += mplen;
-
- while (rem >= 4){
- decode_mpls_label(tvb, offset, &label, &exp, &bos, &proto);
- ti = proto_tree_add_text(tree, tvb, offset, 4, "Downstream Label Element %u",
- idx);
- tlv_ds_map_tree = proto_item_add_subtree(ti, ett_mpls_echo_tlv_ds_map);
- proto_item_append_text(ti, ", Label: %u", label);
- if (label <= LABEL_MAX_RESERVED){
- proto_tree_add_uint_format(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_mp_label,
- tvb, offset, 3, label, "Downstream Label: %u (%s)", label,
- val_to_str(label, special_labels, "Reserved - Unknown"));
- proto_item_append_text(ti, " (%s)", val_to_str(label, special_labels,
- "Reserved - Unknown"));
- } else {
- proto_tree_add_uint_format(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_mp_label,
- tvb, offset, 3, label, "Downstream Label: %u", label);
+ default:
+ ddsti = proto_tree_add_text(tree, tvb, offset, subtlv_length, "Error processing sub-TLV");
+ tlv_dd_map_tree = proto_item_add_subtree(ddsti, ett_mpls_echo_tlv_dd_map);
+ proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_tlv_dd_map_type, tvb, offset - 4, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_tlv_dd_map_length, tvb, offset - 2, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_tlv_dd_map_value, tvb, offset, subtlv_length, ENC_BIG_ENDIAN);
+ rem -= subtlv_length;
+ break;
}
- proto_item_append_text(ti, ", Exp: %u, BOS: %u", exp, bos);
- proto_tree_add_uint_format(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_mp_exp,
- tvb, offset + 2, 1, exp, "Downstream Exp: %u", exp);
- proto_tree_add_uint_format(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_mp_bos,
- tvb, offset + 2, 1, bos, "Downstream BOS: %u", bos);
- proto_tree_add_item(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_mp_proto,
- tvb, offset + 3, 1, ENC_BIG_ENDIAN);
- proto_item_append_text(ti, ", Protocol: %u (%s)", proto, val_to_str(proto,
- mpls_echo_tlv_ds_map_mp_proto, "Unknown"));
- rem -= 4;
- offset += 4;
- idx++;
}
}
@@ -782,88 +1131,88 @@ dissect_mpls_echo_tlv_ds_map(tvbuff_t *tvb, guint offset, proto_tree *tree, int
static void
dissect_mpls_echo_tlv_ilso(tvbuff_t *tvb, guint offset, proto_tree *tree, int rem, gboolean is_ipv6)
{
- proto_tree *ti = NULL, *tlv_ilso = NULL;
- guint8 type;
- guint16 idx = 1;
- guint32 label;
- guint8 exp, bos, ttl;
-
- proto_tree_add_item(tree, hf_mpls_echo_tlv_ilso_addr_type, tvb, offset, 1, ENC_BIG_ENDIAN);
- type = tvb_get_guint8(tvb, offset);
- offset += 1;
- rem -= 1;
-
- proto_tree_add_item(tree, hf_mpls_echo_tlv_ilso_mbz, tvb, offset, 3, ENC_BIG_ENDIAN);
- offset += 3;
- rem -= 3;
-
- if ((type == TLV_ADDR_IPv4) || (type == TLV_ADDR_UNNUM_IPv4)) {
- if (is_ipv6) {
- proto_tree_add_text(tree, tvb, offset, 4, "Incorrect address type for TLV ?");
- }
- proto_tree_add_item(tree, hf_mpls_echo_tlv_ilso_ipv4_addr, tvb,
- offset, 4, ENC_BIG_ENDIAN);
- if (type == TLV_ADDR_IPv4) {
- proto_tree_add_item(tree, hf_mpls_echo_tlv_ilso_ipv4_int_addr, tvb,
- offset + 4, 4, ENC_BIG_ENDIAN);
- } else {
- proto_tree_add_item(tree, hf_mpls_echo_tlv_ilso_int_index, tvb,
- offset + 4, 4, ENC_BIG_ENDIAN);
- }
- offset += 8;
- rem -= 8;
- } else if ((type == TLV_ADDR_IPv6) || (type == TLV_ADDR_UNNUM_IPv6)) {
- if (!is_ipv6) {
- proto_tree_add_text(tree, tvb, offset, 16, "Incorrect address type for TLV ?");
- }
-
- proto_tree_add_item(tree, hf_mpls_echo_tlv_ilso_ipv6_addr, tvb,
- offset, 16, ENC_NA);
- if (type == TLV_ADDR_IPv6) {
- proto_tree_add_item(tree, hf_mpls_echo_tlv_ilso_ipv6_int_addr, tvb,
- offset + 16, 16, ENC_NA);
- offset += 32;
- rem -= 32;
- } else {
- proto_tree_add_item(tree, hf_mpls_echo_tlv_ilso_int_index, tvb,
- offset + 16, 4, ENC_BIG_ENDIAN);
- offset += 20;
- rem -= 20;
- }
- } else {
- proto_tree_add_text(tree, tvb, offset, 0, "Incorrect address type for TLV");
- return;
- }
-
+ proto_tree *ti = NULL, *tlv_ilso = NULL;
+ guint8 type;
+ guint16 idx = 1;
+ guint32 label;
+ guint8 exp, bos, ttl;
+
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_ilso_addr_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ type = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ rem -= 1;
+
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_ilso_mbz, tvb, offset, 3, ENC_BIG_ENDIAN);
+ offset += 3;
+ rem -= 3;
+
+ if ((type == TLV_ADDR_IPv4) || (type == TLV_ADDR_UNNUM_IPv4)) {
+ if (is_ipv6) {
+ proto_tree_add_text(tree, tvb, offset, 4, "Incorrect address type for TLV ?");
+ }
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_ilso_ipv4_addr, tvb,
+ offset, 4, ENC_BIG_ENDIAN);
+ if (type == TLV_ADDR_IPv4) {
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_ilso_ipv4_int_addr, tvb,
+ offset + 4, 4, ENC_BIG_ENDIAN);
+ } else {
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_ilso_int_index, tvb,
+ offset + 4, 4, ENC_BIG_ENDIAN);
+ }
+ offset += 8;
+ rem -= 8;
+ } else if ((type == TLV_ADDR_IPv6) || (type == TLV_ADDR_UNNUM_IPv6)) {
+ if (!is_ipv6) {
+ proto_tree_add_text(tree, tvb, offset, 16, "Incorrect address type for TLV ?");
+ }
- while (rem >= 4){
- decode_mpls_label(tvb, offset, &label, &exp, &bos, &ttl);
- ti = proto_tree_add_text(tree, tvb, offset, 4, "Label Stack Element %u",
- idx);
- tlv_ilso = proto_item_add_subtree(ti, ett_mpls_echo_tlv_ilso);
- proto_item_append_text(ti, ", Label: %u", label);
- if (label <= LABEL_MAX_RESERVED){
- proto_tree_add_uint_format(tlv_ilso, hf_mpls_echo_tlv_ilso_label,
- tvb, offset, 3, label, "Label: %u (%s)", label,
- val_to_str(label, special_labels, "Reserved - Unknown"));
- proto_item_append_text(ti, " (%s)", val_to_str(label, special_labels,
- "Reserved - Unknown"));
- } else {
- proto_tree_add_uint_format(tlv_ilso, hf_mpls_echo_tlv_ilso_label,
- tvb, offset, 3, label, "Label: %u", label);
- }
- proto_item_append_text(ti, ", Exp: %u, BOS: %u, TTL: %u",
- exp, bos, ttl);
- proto_tree_add_uint_format(tlv_ilso, hf_mpls_echo_tlv_ilso_exp,
- tvb, offset + 2, 1, exp, "Exp: %u", exp);
- proto_tree_add_uint_format(tlv_ilso, hf_mpls_echo_tlv_ilso_bos,
- tvb, offset + 2, 1, bos, "BOS: %u", bos);
- proto_tree_add_item(tlv_ilso, hf_mpls_echo_tlv_ilso_ttl,
- tvb, offset + 3, 1, ENC_BIG_ENDIAN);
- rem -= 4;
- offset += 4;
- idx++;
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_ilso_ipv6_addr, tvb,
+ offset, 16, ENC_NA);
+ if (type == TLV_ADDR_IPv6) {
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_ilso_ipv6_int_addr, tvb,
+ offset + 16, 16, ENC_NA);
+ offset += 32;
+ rem -= 32;
+ } else {
+ proto_tree_add_item(tree, hf_mpls_echo_tlv_ilso_int_index, tvb,
+ offset + 16, 4, ENC_BIG_ENDIAN);
+ offset += 20;
+ rem -= 20;
}
+ } else {
+ proto_tree_add_text(tree, tvb, offset, 0, "Incorrect address type for TLV");
+ return;
+ }
+
+
+ while (rem >= 4) {
+ decode_mpls_label(tvb, offset, &label, &exp, &bos, &ttl);
+ ti = proto_tree_add_text(tree, tvb, offset, 4, "Label Stack Element %u",
+ idx);
+ tlv_ilso = proto_item_add_subtree(ti, ett_mpls_echo_tlv_ilso);
+ proto_item_append_text(ti, ", Label: %u", label);
+ if (label <= LABEL_MAX_RESERVED) {
+ proto_tree_add_uint_format(tlv_ilso, hf_mpls_echo_tlv_ilso_label,
+ tvb, offset, 3, label, "Label: %u (%s)", label,
+ val_to_str(label, special_labels, "Reserved - Unknown"));
+ proto_item_append_text(ti, " (%s)", val_to_str(label, special_labels,
+ "Reserved - Unknown"));
+ } else {
+ proto_tree_add_uint_format(tlv_ilso, hf_mpls_echo_tlv_ilso_label,
+ tvb, offset, 3, label, "Label: %u", label);
+ }
+ proto_item_append_text(ti, ", Exp: %u, BOS: %u, TTL: %u",
+ exp, bos, ttl);
+ proto_tree_add_uint_format(tlv_ilso, hf_mpls_echo_tlv_ilso_exp,
+ tvb, offset + 2, 1, exp, "Exp: %u", exp);
+ proto_tree_add_uint_format(tlv_ilso, hf_mpls_echo_tlv_ilso_bos,
+ tvb, offset + 2, 1, bos, "BOS: %u", bos);
+ proto_tree_add_item(tlv_ilso, hf_mpls_echo_tlv_ilso_ttl,
+ tvb, offset + 3, 1, ENC_BIG_ENDIAN);
+ rem -= 4;
+ offset += 4;
+ idx++;
+ }
}
static int
@@ -875,13 +1224,13 @@ dissect_mpls_echo_tlv(tvbuff_t *tvb, guint offset, proto_tree *tree, int rem, gb
static void
dissect_mpls_echo_tlv_errored(tvbuff_t *tvb, guint offset, proto_tree *tree, int rem)
{
- int errored_tlv_length;
+ int errored_tlv_length;
- while(rem >= 4){
- errored_tlv_length = dissect_mpls_echo_tlv(tvb, offset, tree, rem, TRUE);
- rem -= errored_tlv_length;
- offset += errored_tlv_length;
- }
+ while(rem >= 4) {
+ errored_tlv_length = dissect_mpls_echo_tlv(tvb, offset, tree, rem, TRUE);
+ rem -= errored_tlv_length;
+ offset += errored_tlv_length;
+ }
}
/*
@@ -890,173 +1239,182 @@ dissect_mpls_echo_tlv_errored(tvbuff_t *tvb, guint offset, proto_tree *tree, int
static int
dissect_mpls_echo_tlv(tvbuff_t *tvb, guint offset, proto_tree *tree, int rem, gboolean in_errored)
{
- guint16 type, saved_type;
- int length;
- proto_tree *ti = NULL, *mpls_echo_tlv_tree = NULL;
-
- length = tvb_reported_length_remaining(tvb, offset);
- rem = MIN(rem, length);
-
- if( rem < 4 ) { /* Type Length */
- if(tree)
- proto_tree_add_text(tree, tvb, offset, rem,
- "Error processing TLV: length is %d, should be >= 4",
- rem);
- return rem;
- }
- type = tvb_get_ntohs(tvb, offset);
- length = tvb_get_ntohs(tvb, offset + 2),
+ guint16 type, saved_type;
+ int length;
+ proto_tree *ti = NULL, *mpls_echo_tlv_tree = NULL;
+
+ length = tvb_reported_length_remaining(tvb, offset);
+ rem = MIN(rem, length);
+
+ if ( rem < 4 ) { /* Type Length */
+ if (tree)
+ proto_tree_add_text(tree, tvb, offset, rem,
+ "Error processing TLV: length is %d, should be >= 4",
+ rem);
+ return rem;
+ }
+ type = tvb_get_ntohs(tvb, offset);
+ length = tvb_get_ntohs(tvb, offset + 2),
rem -= 4; /* do not count Type Length */
- length = MIN(length, rem);
-
- if (tree) {
- /* Check for Vendor Private TLVs */
- saved_type = type;
- if(type >= TLV_VENDOR_PRIVATE_START) /* && <= TLV_VENDOR_PRIVATE_END always true */
- type = TLV_VENDOR_PRIVATE_START;
-
- ti = proto_tree_add_text(tree, tvb, offset, length + 4, "%s%s",
- in_errored ? "Errored TLV Type: " : "",
- val_to_str(type, mpls_echo_tlv_type_names, "Unknown TLV type (0x%04X)"));
- mpls_echo_tlv_tree = proto_item_add_subtree(ti, ett_mpls_echo_tlv);
- if(mpls_echo_tlv_tree == NULL) return length+4;
-
- /* MPLS Echo TLV Type and Length */
- if (in_errored){
- proto_tree_add_uint_format(mpls_echo_tlv_tree, hf_mpls_echo_tlv_errored_type, tvb,
- offset, 2, saved_type, "Errored TLV Type: %s (%u)",
- val_to_str(type, mpls_echo_tlv_type_names, "Unknown TLV type"), saved_type);
- } else {
- proto_tree_add_uint_format(mpls_echo_tlv_tree, hf_mpls_echo_tlv_type, tvb,
- offset, 2, saved_type, "Type: %s (%u)",
- val_to_str(type, mpls_echo_tlv_type_names, "Unknown TLV type"), saved_type);
- }
- proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_tlv_len, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
-
- /* MPLS Echo TLV Value */
- if (length == 0)
- return 4; /* Empty TLV, return Type and Length consumed. */
-
- switch (type) {
- case TLV_TARGET_FEC_STACK:
- dissect_mpls_echo_tlv_fec(tvb, offset + 4, mpls_echo_tlv_tree, length);
- break;
- case TLV_PAD:
- proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_tlv_padaction, tvb,
- offset + 4, 1, ENC_BIG_ENDIAN);
- if (length > 1)
- proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_tlv_padding, tvb,
- offset + 5, length - 1, ENC_NA);
- break;
- case TLV_VENDOR_CODE:
- proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_tlv_vendor, tvb,
- offset + 4, 4, ENC_BIG_ENDIAN);
- break;
- case TLV_ILSO_IPv4:
- if(length < 12) {
- proto_tree_add_text(mpls_echo_tlv_tree, tvb, offset + 4, length,
- "Error processing TLV: length is %d, should be >= 12",
- length);
- break;
- }
- dissect_mpls_echo_tlv_ilso(tvb, offset + 4, mpls_echo_tlv_tree, length, FALSE);
- break;
- case TLV_ILSO_IPv6:
- if(length < 24) {
- proto_tree_add_text(mpls_echo_tlv_tree, tvb, offset + 4, length,
- "Error processing TLV: length is %d, should be >= 24",
- length);
- break;
- }
- dissect_mpls_echo_tlv_ilso(tvb, offset + 4, mpls_echo_tlv_tree, length, TRUE);
- break;
- case TLV_RTO_IPv4:
- if(length != 4) {
- proto_tree_add_text(mpls_echo_tlv_tree, tvb, offset + 4, length,
- "Error processing TLV: length is %d, should be 4",
- length);
- break;
- }
- proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_tlv_rto_ipv4,
- tvb, offset + 4, 4, ENC_BIG_ENDIAN);
- break;
- case TLV_RTO_IPv6:
- if(length != 16) {
- proto_tree_add_text(mpls_echo_tlv_tree, tvb, offset + 4, length,
- "Error processing TLV: length is %d, should be 16",
- length);
- break;
- }
- proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_tlv_rto_ipv6,
- tvb, offset + 4, 16, ENC_NA);
- break;
- case TLV_VENDOR_PRIVATE_START:
- if (length < 4) { /* SMI Enterprise code */
- proto_tree_add_text(mpls_echo_tlv_tree, tvb, offset + 4, length,
- "Error processing Vendor Private TLV: length is %d, should be >= 4",
- length);
- } else {
- proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_tlv_vendor, tvb,
- offset + 4, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_tlv_value, tvb,
- offset + 8, length - 4, ENC_NA);
- }
- break;
- case TLV_DOWNSTREAM_MAPPING:
+ length = MIN(length, rem);
+
+ if (tree) {
+ /* Check for Vendor Private TLVs */
+ saved_type = type;
+ if (type >= TLV_VENDOR_PRIVATE_START) /* && <= TLV_VENDOR_PRIVATE_END always true */
+ type = TLV_VENDOR_PRIVATE_START;
+
+ ti = proto_tree_add_text(tree, tvb, offset, length + 4, "%s%s",
+ in_errored ? "Errored TLV Type: " : "",
+ val_to_str(type, mpls_echo_tlv_type_names, "Unknown TLV type (0x%04X)"));
+ mpls_echo_tlv_tree = proto_item_add_subtree(ti, ett_mpls_echo_tlv);
+ if (mpls_echo_tlv_tree == NULL) return length+4;
+
+ /* MPLS Echo TLV Type and Length */
+ if (in_errored) {
+ proto_tree_add_uint_format(mpls_echo_tlv_tree, hf_mpls_echo_tlv_errored_type, tvb,
+ offset, 2, saved_type, "Errored TLV Type: %s (%u)",
+ val_to_str(type, mpls_echo_tlv_type_names, "Unknown TLV type"), saved_type);
+ } else {
+ proto_tree_add_uint_format(mpls_echo_tlv_tree, hf_mpls_echo_tlv_type, tvb,
+ offset, 2, saved_type, "Type: %s (%u)",
+ val_to_str(type, mpls_echo_tlv_type_names, "Unknown TLV type"), saved_type);
+ }
+ proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_tlv_len, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
+
+ /* MPLS Echo TLV Value */
+ if (length == 0)
+ return 4; /* Empty TLV, return Type and Length consumed. */
+
+ switch (type) {
+ case TLV_TARGET_FEC_STACK:
+ dissect_mpls_echo_tlv_fec(tvb, offset + 4, mpls_echo_tlv_tree, length);
+ break;
+ case TLV_PAD:
+ proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_tlv_padaction, tvb,
+ offset + 4, 1, ENC_BIG_ENDIAN);
+ if (length > 1)
+ proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_tlv_padding, tvb,
+ offset + 5, length - 1, ENC_NA);
+ break;
+ case TLV_VENDOR_CODE:
+ proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_tlv_vendor, tvb,
+ offset + 4, 4, ENC_BIG_ENDIAN);
+ break;
+ case TLV_ILSO_IPv4:
+ if (length < 12) {
+ proto_tree_add_text(mpls_echo_tlv_tree, tvb, offset + 4, length,
+ "Error processing TLV: length is %d, should be >= 12",
+ length);
+ break;
+ }
+ dissect_mpls_echo_tlv_ilso(tvb, offset + 4, mpls_echo_tlv_tree, length, FALSE);
+ break;
+ case TLV_ILSO_IPv6:
+ if (length < 24) {
+ proto_tree_add_text(mpls_echo_tlv_tree, tvb, offset + 4, length,
+ "Error processing TLV: length is %d, should be >= 24",
+ length);
+ break;
+ }
+ dissect_mpls_echo_tlv_ilso(tvb, offset + 4, mpls_echo_tlv_tree, length, TRUE);
+ break;
+ case TLV_RTO_IPv4:
+ if (length != 4) {
+ proto_tree_add_text(mpls_echo_tlv_tree, tvb, offset + 4, length,
+ "Error processing TLV: length is %d, should be 4",
+ length);
+ break;
+ }
+ proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_tlv_rto_ipv4,
+ tvb, offset + 4, 4, ENC_BIG_ENDIAN);
+ break;
+ case TLV_RTO_IPv6:
+ if (length != 16) {
+ proto_tree_add_text(mpls_echo_tlv_tree, tvb, offset + 4, length,
+ "Error processing TLV: length is %d, should be 16",
+ length);
+ break;
+ }
+ proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_tlv_rto_ipv6,
+ tvb, offset + 4, 16, ENC_NA);
+ break;
+ case TLV_VENDOR_PRIVATE_START:
+ if (length < 4) { /* SMI Enterprise code */
+ proto_tree_add_text(mpls_echo_tlv_tree, tvb, offset + 4, length,
+ "Error processing Vendor Private TLV: length is %d, should be >= 4",
+ length);
+ } else {
+ proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_tlv_vendor, tvb,
+ offset + 4, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_tlv_value, tvb,
+ offset + 8, length - 4, ENC_NA);
+ }
+ break;
+ case TLV_DOWNSTREAM_MAPPING:
+ if (length < 16) {
+ proto_tree_add_text(mpls_echo_tlv_tree, tvb, offset + 4, length,
+ "Error processing TLV: length is %d, should be >= 16",
+ length);
+ break;
+ }
+ dissect_mpls_echo_tlv_ds_map(tvb, offset + 4, mpls_echo_tlv_tree, length);
+ break;
+ case TLV_DETAILED_DOWNSTREAM: /* [RFC 6424] */
if(length < 16) {
proto_tree_add_text(mpls_echo_tlv_tree, tvb, offset + 4, length,
- "Error processing TLV: length is %d, should be >= 16",
- length);
- break;
- }
- dissect_mpls_echo_tlv_ds_map(tvb, offset + 4, mpls_echo_tlv_tree, length);
- break;
- case TLV_ERRORED_TLV:
- if (in_errored)
- proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_tlv_value, tvb,
- offset + 4, length, ENC_NA);
- else
- dissect_mpls_echo_tlv_errored(tvb, offset + 4, mpls_echo_tlv_tree, length);
- break;
- case TLV_REPLY_TOS:
- if(length != 4) {
- proto_tree_add_text(mpls_echo_tlv_tree, tvb, offset + 4, length,
- "Error processing TLV: length is %d, should be 4",
+ "Error processing TLV: length is %d, should be >= 16",
length);
break;
}
- proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_tlv_reply_tos, tvb,
- offset + 4, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_tlv_reply_tos_mbz, tvb,
- offset + 5, 3, ENC_BIG_ENDIAN);
+ dissect_mpls_echo_tlv_dd_map(tvb, offset + 4, mpls_echo_tlv_tree, length);
break;
- case TLV_SRC_IDENTIFIER:
- proto_tree_add_item (mpls_echo_tlv_tree, hf_mpls_echo_lspping_tlv_src_addr_gid,
- tvb, (offset + 4), 4, ENC_BIG_ENDIAN);
- proto_tree_add_item (mpls_echo_tlv_tree, hf_mpls_echo_lspping_tlv_src_addr_nid,
- tvb, (offset + 8), 4, ENC_BIG_ENDIAN);
- break;
- case TLV_DST_IDENTIFIER:
- proto_tree_add_item (mpls_echo_tlv_tree, hf_mpls_echo_lspping_tlv_src_addr_gid,
- tvb, (offset + 4), 4, ENC_BIG_ENDIAN);
- proto_tree_add_item (mpls_echo_tlv_tree, hf_mpls_echo_lspping_tlv_src_addr_nid,
- tvb, (offset + 8), 4, ENC_BIG_ENDIAN);
- break;
- case TLV_REVERSE_PATH_FEC_STACK:
- dissect_mpls_echo_tlv_fec (tvb, (offset + 4), mpls_echo_tlv_tree, length);
- break ;
- case TLV_ERROR_CODE:
- default:
- proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_tlv_value, tvb,
- offset + 4, length, ENC_NA);
- break;
- }
+ case TLV_ERRORED_TLV:
+ if (in_errored)
+ proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_tlv_value, tvb,
+ offset + 4, length, ENC_NA);
+ else
+ dissect_mpls_echo_tlv_errored(tvb, offset + 4, mpls_echo_tlv_tree, length);
+ break;
+ case TLV_REPLY_TOS:
+ if (length != 4) {
+ proto_tree_add_text(mpls_echo_tlv_tree, tvb, offset + 4, length,
+ "Error processing TLV: length is %d, should be 4",
+ length);
+ break;
+ }
+ proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_tlv_reply_tos, tvb,
+ offset + 4, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_tlv_reply_tos_mbz, tvb,
+ offset + 5, 3, ENC_BIG_ENDIAN);
+ break;
+ case TLV_SRC_IDENTIFIER:
+ proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_lspping_tlv_src_addr_gid,
+ tvb, (offset + 4), 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_lspping_tlv_src_addr_nid,
+ tvb, (offset + 8), 4, ENC_BIG_ENDIAN);
+ break;
+ case TLV_DST_IDENTIFIER:
+ proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_lspping_tlv_src_addr_gid,
+ tvb, (offset + 4), 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_lspping_tlv_src_addr_nid,
+ tvb, (offset + 8), 4, ENC_BIG_ENDIAN);
+ break;
+ case TLV_REVERSE_PATH_FEC_STACK:
+ dissect_mpls_echo_tlv_fec (tvb, (offset + 4), mpls_echo_tlv_tree, length);
+ break ;
+ case TLV_ERROR_CODE:
+ default:
+ proto_tree_add_item(mpls_echo_tlv_tree, hf_mpls_echo_tlv_value, tvb,
+ offset + 4, length, ENC_NA);
+ break;
}
- return length + 4; /* Length of the Value field + Type Length */
+ }
+ return length + 4; /* Length of the Value field + Type Length */
}
-#define MSGTYPE_MPLS_ECHO(msgtype) ((msgtype == 1) || (msgtype == 2))
-#define MSGTYPE_DATAPLANE(msgtype) ((msgtype == 3) || (msgtype == 4))
+#define MSGTYPE_MPLS_ECHO(msgtype) ((msgtype == 1) || (msgtype == 2))
+#define MSGTYPE_DATAPLANE(msgtype) ((msgtype == 3) || (msgtype == 4))
/*
* Dissector for MPLS Echo (LSP PING) packets
@@ -1064,107 +1422,107 @@ dissect_mpls_echo_tlv(tvbuff_t *tvb, guint offset, proto_tree *tree, int rem, gb
void
dissect_mpls_echo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- int offset = 0, rem = 0, len;
- proto_item *ti = NULL;
- proto_tree *mpls_echo_tree = NULL, *mpls_echo_gflags = NULL;
- guint8 msgtype;
-
- /* If version != 1 we assume it's not an mpls ping packet */
- if (tvb_length(tvb) < 5) {
- return; /* Not enough information to tell version and message type. */
+ int offset = 0, rem = 0, len;
+ proto_item *ti = NULL;
+ proto_tree *mpls_echo_tree = NULL, *mpls_echo_gflags = NULL;
+ guint8 msgtype;
+
+ /* If version != 1 we assume it's not an mpls ping packet */
+ if (tvb_length(tvb) < 5) {
+ return; /* Not enough information to tell version and message type. */
+ }
+ if (tvb_get_ntohs(tvb, 0) != 1) {
+ return; /* Not version 1. */
+ }
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "MPLS ECHO");
+
+ rem = tvb_reported_length_remaining(tvb, offset);
+
+ /* Get the message type and fill in the Column info */
+ msgtype = tvb_get_guint8(tvb, offset + 4);
+
+ /* The minimum fixed part of the packet is 16 Bytes or 32 Bytes depending on Msg Type */
+ if ( ((!MSGTYPE_MPLS_ECHO(msgtype)) && (rem < 16)) ||
+ ((MSGTYPE_MPLS_ECHO(msgtype)) && (rem < 32)) ) {
+ col_set_str(pinfo->cinfo, COL_INFO, "Malformed Message");
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_mpls_echo, tvb, 0, -1, ENC_NA);
+ mpls_echo_tree = proto_item_add_subtree(ti, ett_mpls_echo);
+ proto_tree_add_text(mpls_echo_tree, tvb, offset, rem,
+ "Error processing Message: length is %d, should be >= %u",
+ rem, (MSGTYPE_MPLS_ECHO(msgtype)) ? 32 : 16);
}
- if (tvb_get_ntohs(tvb, 0) != 1) {
- return; /* Not version 1. */
+ return;
+ }
+
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_add_str(pinfo->cinfo, COL_INFO,
+ val_to_str(msgtype, mpls_echo_msgtype, "Unknown Message Type (0x%02X)"));
+
+
+ if (tree) {
+
+ /* Add subtree and dissect the fixed part of the message */
+ ti = proto_tree_add_item(tree, proto_mpls_echo, tvb, 0, -1, ENC_NA);
+ mpls_echo_tree = proto_item_add_subtree(ti, ett_mpls_echo);
+
+ proto_tree_add_item(mpls_echo_tree,
+ hf_mpls_echo_version, tvb, offset, 2, ENC_BIG_ENDIAN);
+
+ if (MSGTYPE_MPLS_ECHO(msgtype)) {
+ ti = proto_tree_add_item(mpls_echo_tree,
+ hf_mpls_echo_gflags, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
+ mpls_echo_gflags = proto_item_add_subtree(ti, ett_mpls_echo_gflags);
+ proto_tree_add_item(mpls_echo_gflags,
+ hf_mpls_echo_flag_sbz, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mpls_echo_gflags,
+ hf_mpls_echo_flag_v, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mpls_echo_gflags,
+ hf_mpls_echo_flag_t, tvb, (offset + 2), 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mpls_echo_gflags,
+ hf_mpls_echo_flag_r, tvb, (offset + 2), 2, ENC_BIG_ENDIAN);
+ } else {
+ proto_tree_add_item(mpls_echo_tree,
+ hf_mpls_echo_mbz, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
}
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "MPLS ECHO");
-
- rem = tvb_reported_length_remaining(tvb, offset);
-
- /* Get the message type and fill in the Column info */
- msgtype = tvb_get_guint8(tvb, offset + 4);
-
- /* The minimum fixed part of the packet is 16 Bytes or 32 Bytes depending on Msg Type */
- if( ((!MSGTYPE_MPLS_ECHO(msgtype)) && (rem < 16)) ||
- ((MSGTYPE_MPLS_ECHO(msgtype)) && (rem < 32)) ) {
- col_set_str(pinfo->cinfo, COL_INFO, "Malformed Message");
- if(tree) {
- ti = proto_tree_add_item(tree, proto_mpls_echo, tvb, 0, -1, ENC_NA);
- mpls_echo_tree = proto_item_add_subtree(ti, ett_mpls_echo);
- proto_tree_add_text(mpls_echo_tree, tvb, offset, rem,
- "Error processing Message: length is %d, should be >= %u",
- rem, (MSGTYPE_MPLS_ECHO(msgtype)) ? 32 : 16);
- }
- return;
+ proto_tree_add_item(mpls_echo_tree,
+ hf_mpls_echo_msgtype, tvb, offset + 4, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mpls_echo_tree,
+ hf_mpls_echo_replymode, tvb, offset + 5, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mpls_echo_tree,
+ hf_mpls_echo_returncode, tvb, offset + 6, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mpls_echo_tree,
+ hf_mpls_echo_returnsubcode, tvb, offset + 7, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mpls_echo_tree,
+ hf_mpls_echo_handle, tvb, offset + 8, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mpls_echo_tree,
+ hf_mpls_echo_sequence, tvb, offset + 12, 4, ENC_BIG_ENDIAN);
+
+ if (MSGTYPE_MPLS_ECHO(msgtype)) {
+ proto_tree_add_item(mpls_echo_tree, hf_mpls_echo_ts_sent, tvb,
+ offset + 16, 8, ENC_TIME_NTP|ENC_BIG_ENDIAN);
+ proto_tree_add_item(mpls_echo_tree, hf_mpls_echo_ts_rec, tvb,
+ offset + 24, 8, ENC_TIME_NTP|ENC_BIG_ENDIAN);
}
- if (check_col(pinfo->cinfo, COL_INFO))
- col_add_str(pinfo->cinfo, COL_INFO,
- val_to_str(msgtype, mpls_echo_msgtype, "Unknown Message Type (0x%02X)"));
+ }
+ if (MSGTYPE_MPLS_ECHO(msgtype)) {
+ offset += 32;
+ rem -= 32;
+ } else {
+ offset += 16;
+ rem -= 16;
+ }
- if (tree) {
-
- /* Add subtree and dissect the fixed part of the message */
- ti = proto_tree_add_item(tree, proto_mpls_echo, tvb, 0, -1, ENC_NA);
- mpls_echo_tree = proto_item_add_subtree(ti, ett_mpls_echo);
-
- proto_tree_add_item(mpls_echo_tree,
- hf_mpls_echo_version, tvb, offset, 2, ENC_BIG_ENDIAN);
-
- if(MSGTYPE_MPLS_ECHO(msgtype)){
- ti = proto_tree_add_item(mpls_echo_tree,
- hf_mpls_echo_gflags, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
- mpls_echo_gflags = proto_item_add_subtree(ti, ett_mpls_echo_gflags);
- proto_tree_add_item(mpls_echo_gflags,
- hf_mpls_echo_flag_sbz, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(mpls_echo_gflags,
- hf_mpls_echo_flag_v, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item (mpls_echo_gflags,
- hf_mpls_echo_flag_t, tvb, (offset + 2), 2, ENC_BIG_ENDIAN);
- proto_tree_add_item (mpls_echo_gflags,
- hf_mpls_echo_flag_r, tvb, (offset + 2), 2, ENC_BIG_ENDIAN);
- } else {
- proto_tree_add_item(mpls_echo_tree,
- hf_mpls_echo_mbz, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
- }
-
- proto_tree_add_item(mpls_echo_tree,
- hf_mpls_echo_msgtype, tvb, offset + 4, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(mpls_echo_tree,
- hf_mpls_echo_replymode, tvb, offset + 5, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(mpls_echo_tree,
- hf_mpls_echo_returncode, tvb, offset + 6, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(mpls_echo_tree,
- hf_mpls_echo_returnsubcode, tvb, offset + 7, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(mpls_echo_tree,
- hf_mpls_echo_handle, tvb, offset + 8, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(mpls_echo_tree,
- hf_mpls_echo_sequence, tvb, offset + 12, 4, ENC_BIG_ENDIAN);
-
- if(MSGTYPE_MPLS_ECHO(msgtype)){
- proto_tree_add_item(mpls_echo_tree, hf_mpls_echo_ts_sent, tvb,
- offset + 16, 8, ENC_TIME_NTP|ENC_BIG_ENDIAN);
- proto_tree_add_item(mpls_echo_tree, hf_mpls_echo_ts_rec, tvb,
- offset + 24, 8, ENC_TIME_NTP|ENC_BIG_ENDIAN);
- }
-
- }
-
- if(MSGTYPE_MPLS_ECHO(msgtype)){
- offset += 32;
- rem -= 32;
- } else {
- offset += 16;
- rem -= 16;
- }
-
- /* Dissect all TLVs */
- while(tvb_reported_length_remaining(tvb, offset) > 0 ) {
- len = dissect_mpls_echo_tlv(tvb, offset, mpls_echo_tree, rem, FALSE);
- offset += len;
- rem -= len;
- }
+ /* Dissect all TLVs */
+ while(tvb_reported_length_remaining(tvb, offset) > 0 ) {
+ len = dissect_mpls_echo_tlv(tvb, offset, mpls_echo_tree, rem, FALSE);
+ offset += len;
+ rem -= len;
+ }
}
@@ -1175,490 +1533,635 @@ void
proto_register_mpls_echo(void)
{
- static hf_register_info hf[] = {
- { &hf_mpls_echo_version,
- { "Version", "mpls_echo.version",
- FT_UINT16, BASE_DEC, NULL, 0x0, "MPLS ECHO Version Number", HFILL}
- },
- { &hf_mpls_echo_mbz,
- { "MBZ", "mpls_echo.mbz",
- FT_UINT16, BASE_HEX, NULL, 0x0, "MPLS ECHO Must be Zero", HFILL}
- },
- { &hf_mpls_echo_gflags,
- { "Global Flags", "mpls_echo.flags",
- FT_UINT16, BASE_HEX, NULL, 0x0, "MPLS ECHO Global Flags", HFILL}
- },
- { &hf_mpls_echo_flag_sbz,
- { "Reserved", "mpls_echo.flag_sbz",
- FT_UINT16, BASE_HEX, NULL, 0xFFF8, "MPLS ECHO Reserved Flags", HFILL}
- },
- { &hf_mpls_echo_flag_v,
- { "Validate FEC Stack", "mpls_echo.flag_v",
- FT_BOOLEAN, 16, NULL, 0x0001, "MPLS ECHO Validate FEC Stack Flag", HFILL}
- },
- { &hf_mpls_echo_flag_t,
- { "Respond only if TTL expired", "mpls_echo.flag_t",
- FT_BOOLEAN, 16, NULL, 0x0002, "MPLS ECHO Respond only if TTL expired Flag", HFILL}
- },
- { &hf_mpls_echo_flag_r,
- { "Validate Reverse Path", "mpls_echo.flag_r",
- FT_BOOLEAN, 16, NULL, 0x0004, "MPLS ECHO Validate Reverse Path Flag", HFILL}
- },
- { &hf_mpls_echo_msgtype,
- { "Message Type", "mpls_echo.msg_type",
- FT_UINT8, BASE_DEC, VALS(mpls_echo_msgtype), 0x0, "MPLS ECHO Message Type", HFILL}
- },
- { &hf_mpls_echo_replymode,
- { "Reply Mode", "mpls_echo.reply_mode",
- FT_UINT8, BASE_DEC, VALS(mpls_echo_replymode), 0x0, "MPLS ECHO Reply Mode", HFILL}
- },
- { &hf_mpls_echo_returncode,
- { "Return Code", "mpls_echo.return_code",
- FT_UINT8, BASE_DEC, VALS(mpls_echo_returncode), 0x0, "MPLS ECHO Return Code", HFILL}
- },
- { &hf_mpls_echo_returnsubcode,
- { "Return Subcode", "mpls_echo.return_subcode",
- FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO Return Subcode", HFILL}
- },
- { &hf_mpls_echo_handle,
- { "Sender's Handle", "mpls_echo.sender_handle",
- FT_UINT32, BASE_HEX, NULL, 0x0, "MPLS ECHO Sender's Handle", HFILL}
- },
- { &hf_mpls_echo_sequence,
- { "Sequence Number", "mpls_echo.sequence",
- FT_UINT32, BASE_DEC, NULL, 0x0, "MPLS ECHO Sequence Number", HFILL}
- },
- { &hf_mpls_echo_ts_sent,
- { "Timestamp Sent", "mpls_echo.timestamp_sent",
- FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0x0, "MPLS ECHO Timestamp Sent", HFILL}
- },
- { &hf_mpls_echo_ts_rec,
- { "Timestamp Received", "mpls_echo.timestamp_rec",
- FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0x0, "MPLS ECHO Timestamp Received", HFILL}
- },
- { &hf_mpls_echo_tlv_type,
- { "Type", "mpls_echo.tlv.type",
- FT_UINT16, BASE_DEC, VALS(mpls_echo_tlv_type_names), 0x0,
- "MPLS ECHO TLV Type", HFILL}
- },
- { &hf_mpls_echo_tlv_len,
- { "Length", "mpls_echo.tlv.len",
- FT_UINT16, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Length", HFILL}
- },
- { &hf_mpls_echo_tlv_value,
- { "Value", "mpls_echo.tlv.value",
- FT_BYTES, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Value", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_type,
- { "Type", "mpls_echo.tlv.fec.type",
- FT_UINT16, BASE_DEC, VALS(mpls_echo_tlv_fec_names), 0x0,
- "MPLS ECHO TLV FEC Stack Type", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_len,
- { "Length", "mpls_echo.tlv.fec.len",
- FT_UINT16, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV FEC Stack Length", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_value,
- { "Value", "mpls_echo.tlv.fec.value",
- FT_BYTES, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack Value", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_ldp_ipv4,
- { "IPv4 Prefix", "mpls_echo.tlv.fec.ldp_ipv4",
- FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack LDP IPv4", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_ldp_ipv4_mask,
- { "Prefix Length", "mpls_echo.tlv.fec.ldp_ipv4_mask",
- FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV FEC Stack LDP IPv4 Prefix Length", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_ldp_ipv6,
- { "IPv6 Prefix", "mpls_echo.tlv.fec.ldp_ipv6",
- FT_IPv6, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack LDP IPv6", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_ldp_ipv6_mask,
- { "Prefix Length", "mpls_echo.tlv.fec.ldp_ipv6_mask",
- FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV FEC Stack LDP IPv6 Prefix Length", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_rsvp_ipv4_ipv4_endpoint,
- { "IPv4 Tunnel endpoint address", "mpls_echo.tlv.fec.rsvp_ipv4_ep",
- FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack RSVP IPv4 Tunnel Endpoint Address", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_rsvp_ipv6_ipv6_endpoint,
- { "IPv6 Tunnel endpoint address", "mpls_echo.tlv.fec.rsvp_ipv6_ep",
- FT_IPv6, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack RSVP IPv6 Tunnel Endpoint Address", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_rsvp_ip_mbz1,
- { "Must Be Zero", "mpls_echo.tlv.fec.rsvp_ip_mbz1",
- FT_UINT16, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV FEC Stack RSVP MBZ", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_rsvp_ip_tunnel_id,
- { "Tunnel ID", "mpls_echo.tlv.fec.rsvp_ip_tun_id",
- FT_UINT16, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV FEC Stack RSVP Tunnel ID", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_rsvp_ipv4_ext_tunnel_id,
- { "Extended Tunnel ID", "mpls_echo.tlv.fec.rsvp_ipv4_ext_tun_id",
- FT_UINT32, BASE_HEX, NULL, 0x0, "MPLS ECHO TLV FEC Stack RSVP IPv4 Extended Tunnel ID", HFILL}
+ static hf_register_info hf[] = {
+ { &hf_mpls_echo_version,
+ { "Version", "mpls_echo.version",
+ FT_UINT16, BASE_DEC, NULL, 0x0, "MPLS ECHO Version Number", HFILL}
+ },
+ { &hf_mpls_echo_mbz,
+ { "MBZ", "mpls_echo.mbz",
+ FT_UINT16, BASE_HEX, NULL, 0x0, "MPLS ECHO Must be Zero", HFILL}
+ },
+ { &hf_mpls_echo_gflags,
+ { "Global Flags", "mpls_echo.flags",
+ FT_UINT16, BASE_HEX, NULL, 0x0, "MPLS ECHO Global Flags", HFILL}
+ },
+ { &hf_mpls_echo_flag_sbz,
+ { "Reserved", "mpls_echo.flag_sbz",
+ FT_UINT16, BASE_HEX, NULL, 0xFFF8, "MPLS ECHO Reserved Flags", HFILL}
+ },
+ { &hf_mpls_echo_flag_v,
+ { "Validate FEC Stack", "mpls_echo.flag_v",
+ FT_BOOLEAN, 16, NULL, 0x0001, "MPLS ECHO Validate FEC Stack Flag", HFILL}
+ },
+ { &hf_mpls_echo_flag_t,
+ { "Respond only if TTL expired", "mpls_echo.flag_t",
+ FT_BOOLEAN, 16, NULL, 0x0002, "MPLS ECHO Respond only if TTL expired Flag", HFILL}
+ },
+ { &hf_mpls_echo_flag_r,
+ { "Validate Reverse Path", "mpls_echo.flag_r",
+ FT_BOOLEAN, 16, NULL, 0x0004, "MPLS ECHO Validate Reverse Path Flag", HFILL}
+ },
+ { &hf_mpls_echo_msgtype,
+ { "Message Type", "mpls_echo.msg_type",
+ FT_UINT8, BASE_DEC, VALS(mpls_echo_msgtype), 0x0, "MPLS ECHO Message Type", HFILL}
+ },
+ { &hf_mpls_echo_replymode,
+ { "Reply Mode", "mpls_echo.reply_mode",
+ FT_UINT8, BASE_DEC, VALS(mpls_echo_replymode), 0x0, "MPLS ECHO Reply Mode", HFILL}
+ },
+ { &hf_mpls_echo_returncode,
+ { "Return Code", "mpls_echo.return_code",
+ FT_UINT8, BASE_DEC, VALS(mpls_echo_returncode), 0x0, "MPLS ECHO Return Code", HFILL}
+ },
+ { &hf_mpls_echo_returnsubcode,
+ { "Return Subcode", "mpls_echo.return_subcode",
+ FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO Return Subcode", HFILL}
+ },
+ { &hf_mpls_echo_handle,
+ { "Sender's Handle", "mpls_echo.sender_handle",
+ FT_UINT32, BASE_HEX, NULL, 0x0, "MPLS ECHO Sender's Handle", HFILL}
+ },
+ { &hf_mpls_echo_sequence,
+ { "Sequence Number", "mpls_echo.sequence",
+ FT_UINT32, BASE_DEC, NULL, 0x0, "MPLS ECHO Sequence Number", HFILL}
+ },
+ { &hf_mpls_echo_ts_sent,
+ { "Timestamp Sent", "mpls_echo.timestamp_sent",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0x0, "MPLS ECHO Timestamp Sent", HFILL}
+ },
+ { &hf_mpls_echo_ts_rec,
+ { "Timestamp Received", "mpls_echo.timestamp_rec",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0x0, "MPLS ECHO Timestamp Received", HFILL}
+ },
+ { &hf_mpls_echo_tlv_type,
+ { "Type", "mpls_echo.tlv.type",
+ FT_UINT16, BASE_DEC, VALS(mpls_echo_tlv_type_names), 0x0,
+ "MPLS ECHO TLV Type", HFILL}
+ },
+ { &hf_mpls_echo_tlv_len,
+ { "Length", "mpls_echo.tlv.len",
+ FT_UINT16, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Length", HFILL}
+ },
+ { &hf_mpls_echo_tlv_value,
+ { "Value", "mpls_echo.tlv.value",
+ FT_BYTES, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Value", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_type,
+ { "Type", "mpls_echo.tlv.fec.type",
+ FT_UINT16, BASE_DEC, VALS(mpls_echo_tlv_fec_names), 0x0,
+ "MPLS ECHO TLV FEC Stack Type", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_len,
+ { "Length", "mpls_echo.tlv.fec.len",
+ FT_UINT16, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV FEC Stack Length", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_value,
+ { "Value", "mpls_echo.tlv.fec.value",
+ FT_BYTES, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack Value", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_ldp_ipv4,
+ { "IPv4 Prefix", "mpls_echo.tlv.fec.ldp_ipv4",
+ FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack LDP IPv4", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_ldp_ipv4_mask,
+ { "Prefix Length", "mpls_echo.tlv.fec.ldp_ipv4_mask",
+ FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV FEC Stack LDP IPv4 Prefix Length", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_ldp_ipv6,
+ { "IPv6 Prefix", "mpls_echo.tlv.fec.ldp_ipv6",
+ FT_IPv6, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack LDP IPv6", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_ldp_ipv6_mask,
+ { "Prefix Length", "mpls_echo.tlv.fec.ldp_ipv6_mask",
+ FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV FEC Stack LDP IPv6 Prefix Length", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_rsvp_ipv4_ipv4_endpoint,
+ { "IPv4 Tunnel endpoint address", "mpls_echo.tlv.fec.rsvp_ipv4_ep",
+ FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack RSVP IPv4 Tunnel Endpoint Address", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_rsvp_ipv6_ipv6_endpoint,
+ { "IPv6 Tunnel endpoint address", "mpls_echo.tlv.fec.rsvp_ipv6_ep",
+ FT_IPv6, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack RSVP IPv6 Tunnel Endpoint Address", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_rsvp_ip_mbz1,
+ { "Must Be Zero", "mpls_echo.tlv.fec.rsvp_ip_mbz1",
+ FT_UINT16, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV FEC Stack RSVP MBZ", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_rsvp_ip_tunnel_id,
+ { "Tunnel ID", "mpls_echo.tlv.fec.rsvp_ip_tun_id",
+ FT_UINT16, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV FEC Stack RSVP Tunnel ID", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_rsvp_ipv4_ext_tunnel_id,
+ { "Extended Tunnel ID", "mpls_echo.tlv.fec.rsvp_ipv4_ext_tun_id",
+ FT_UINT32, BASE_HEX, NULL, 0x0, "MPLS ECHO TLV FEC Stack RSVP IPv4 Extended Tunnel ID", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_rsvp_ipv4_ipv4_sender,
+ { "IPv4 Tunnel sender address", "mpls_echo.tlv.fec.rsvp_ipv4_sender",
+ FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack RSVP IPv4 Sender", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_rsvp_ipv6_ext_tunnel_id,
+ { "Extended Tunnel ID", "mpls_echo.tlv.fec.rsvp_ipv6_ext_tun_id",
+ FT_BYTES, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack RSVP IPv6 Extended Tunnel ID", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_rsvp_ipv6_ipv6_sender,
+ { "IPv6 Tunnel sender address", "mpls_echo.tlv.fec.rsvp_ipv6_sender",
+ FT_IPv6, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack RSVP IPv4 Sender", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_rsvp_ip_mbz2,
+ { "Must Be Zero", "mpls_echo.tlv.fec.rsvp_ip_mbz2",
+ FT_UINT16, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV FEC Stack RSVP MBZ", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_rsvp_ip_lsp_id,
+ { "LSP ID", "mpls_echo.tlv.fec.rsvp_ip_lsp_id",
+ FT_UINT16, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV FEC Stack RSVP LSP ID", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_l2cid_sender,
+ { "Sender's PE Address", "mpls_echo.tlv.fec.l2cid_sender",
+ FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack L2CID Sender", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_l2cid_remote,
+ { "Remote PE Address", "mpls_echo.tlv.fec.l2cid_remote",
+ FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack L2CID Remote", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_l2cid_vcid,
+ { "VC ID", "mpls_echo.tlv.fec.l2cid_vcid",
+ FT_UINT32, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV FEC Stack L2CID VCID", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_l2cid_encap,
+ { "Encapsulation", "mpls_echo.tlv.fec.l2cid_encap",
+ FT_UINT16, BASE_DEC, VALS(fec_vc_types_vals), 0x0, "MPLS ECHO TLV FEC Stack L2CID Encapsulation", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_l2cid_mbz,
+ { "MBZ", "mpls_echo.tlv.fec.l2cid_mbz",
+ FT_UINT16, BASE_HEX, NULL, 0x0, "MPLS ECHO TLV FEC Stack L2CID MBZ", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_bgp_nh,
+ { "BGP Next Hop", "mpls_echo.tlv.fec.bgp_nh",
+ FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack BGP Next Hop", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_bgp_ipv4,
+ { "IPv4 Prefix", "mpls_echo.tlv.fec.bgp_ipv4",
+ FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack BGP IPv4", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_bgp_len,
+ { "Prefix Length", "mpls_echo.tlv.fec.bgp_len",
+ FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV FEC Stack BGP Prefix Length", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_gen_ipv4,
+ { "IPv4 Prefix", "mpls_echo.tlv.fec.gen_ipv4",
+ FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack Generic IPv4", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_gen_ipv4_mask,
+ { "Prefix Length", "mpls_echo.tlv.fec.gen_ipv4_mask",
+ FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV FEC Stack Generic IPv4 Prefix Length", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_gen_ipv6,
+ { "IPv6 Prefix", "mpls_echo.tlv.fec.gen_ipv6",
+ FT_IPv6, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack Generic IPv6", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_gen_ipv6_mask,
+ { "Prefix Length", "mpls_echo.tlv.fec.gen_ipv6_mask",
+ FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV FEC Stack Generic IPv6 Prefix Length", HFILL}
+ },
+ { &hf_mpls_echo_tlv_fec_nil_label,
+ { "Label", "mpls_echo.tlv.fec.nil_label",
+ FT_UINT24, BASE_DEC, VALS(special_labels), 0x0, "MPLS ECHO TLV FEC Stack NIL Label", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ds_map_mtu,
+ { "MTU", "mpls_echo.tlv.ds_map.mtu",
+ FT_UINT16, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Downstream Map MTU", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ds_map_addr_type,
+ { "Address Type", "mpls_echo.tlv.ds_map.addr_type",
+ FT_UINT8, BASE_DEC, VALS(mpls_echo_tlv_addr_type), 0x0,
+ "MPLS ECHO TLV Downstream Map Address Type", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ds_map_res,
+ { "DS Flags", "mpls_echo.tlv.ds_map.res",
+ FT_UINT8, BASE_HEX, NULL, 0x0, "MPLS ECHO TLV Downstream Map DS Flags", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ds_map_flag_res,
+ { "MBZ", "mpls_echo.tlv.ds_map.flag_res",
+ FT_UINT8, BASE_HEX, NULL, 0xFC, "MPLS ECHO TLV Downstream Map Reserved Flags", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ds_map_flag_i,
+ { "Interface and Label Stack Request", "mpls_echo.tlv.ds_map.flag_i",
+ FT_BOOLEAN, 8, NULL, 0x02, "MPLS ECHO TLV Downstream Map I-Flag", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ds_map_flag_n,
+ { "Treat as Non-IP Packet", "mpls_echo.tlv.ds_map.flag_n",
+ FT_BOOLEAN, 8, NULL, 0x01, "MPLS ECHO TLV Downstream Map N-Flag", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ds_map_ds_ip,
+ { "Downstream IP Address", "mpls_echo.tlv.ds_map.ds_ip",
+ FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Downstream Map IP Address", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ds_map_int_ip,
+ { "Downstream Interface Address", "mpls_echo.tlv.ds_map.int_ip",
+ FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Downstream Map Interface Address", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ds_map_if_index,
+ { "Upstream Interface Index", "mpls_echo.tlv.ds_map.if_index",
+ FT_UINT32, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Downstream Map Interface Index", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ds_map_ds_ipv6,
+ { "Downstream IPv6 Address", "mpls_echo.tlv.ds_map.ds_ipv6",
+ FT_IPv6, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Downstream Map IPv6 Address", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ds_map_int_ipv6,
+ { "Downstream Interface IPv6 Address", "mpls_echo.tlv.ds_map.int_ipv6",
+ FT_IPv6, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Downstream Map Interface IPv6 Address", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ds_map_hash_type,
+ { "Multipath Type", "mpls_echo.tlv.ds_map.hash_type",
+ FT_UINT8, BASE_DEC, VALS(mpls_echo_tlv_ds_map_hash_type), 0x0,
+ "MPLS ECHO TLV Downstream Map Multipath Type", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ds_map_depth,
+ { "Depth Limit", "mpls_echo.tlv.ds_map.depth",
+ FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Downstream Map Depth Limit", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ds_map_muti_len,
+ { "Multipath Length", "mpls_echo.tlv.ds_map.multi_len",
+ FT_UINT16, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Downstream Map Multipath Length", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ds_map_mp_ip,
+ { "IP Address", "mpls_echo.tlv.ds_map_mp.ip",
+ FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Downstream Map Multipath IP Address", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ds_map_mp_mask,
+ { "Mask", "mpls_echo.tlv.ds_map_mp.mask",
+ FT_BYTES, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Downstream Map Multipath Mask", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ds_map_mp_ip_low,
+ { "IP Address Low", "mpls_echo.tlv.ds_map_mp.ip_low",
+ FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Downstream Map Multipath Low IP Address", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ds_map_mp_ip_high,
+ { "IP Address High", "mpls_echo.tlv.ds_map_mp.ip_high",
+ FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Downstream Map Multipath High IP Address", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ds_map_mp_value,
+ { "Multipath Value", "mpls_echo.tlv.ds_map_mp.value",
+ FT_BYTES, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Multipath Value", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ds_map_mp_label,
+ { "Downstream Label", "mpls_echo.tlv.ds_map.mp_label",
+ FT_UINT24, BASE_DEC, VALS(special_labels), 0x0, "MPLS ECHO TLV Downstream Map Downstream Label", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ds_map_mp_exp,
+ { "Downstream Experimental", "mpls_echo.tlv.ds_map.mp_exp",
+ FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Downstream Map Downstream Experimental", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ds_map_mp_bos,
+ { "Downstream BOS", "mpls_echo.tlv.ds_map.mp_bos",
+ FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Downstream Map Downstream BOS", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ds_map_mp_proto,
+ { "Downstream Protocol", "mpls_echo.tlv.ds_map.mp_proto",
+ FT_UINT8, BASE_DEC, VALS(mpls_echo_tlv_ds_map_mp_proto), 0x0,
+ "MPLS ECHO TLV Downstream Map Downstream Protocol", HFILL}
+ },
+ { &hf_mpls_echo_tlv_padaction,
+ { "Pad Action", "mpls_echo.tlv.pad_action",
+ FT_UINT8, BASE_DEC, VALS(mpls_echo_tlv_pad), 0x0, "MPLS ECHO Pad TLV Action", HFILL}
+ },
+ { &hf_mpls_echo_tlv_padding,
+ { "Padding", "mpls_echo.tlv.pad_padding",
+ FT_BYTES, BASE_NONE, NULL, 0x0, "MPLS ECHO Pad TLV Padding", HFILL}
+ },
+ { &hf_mpls_echo_tlv_vendor,
+ { "Vendor Id", "mpls_echo.tlv.vendor_id",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &sminmpec_values_ext, 0x0, "MPLS ECHO Vendor Id", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ilso_addr_type,
+ { "Address Type", "mpls_echo.tlv.ilso.addr_type",
+ FT_UINT8, BASE_DEC, VALS(mpls_echo_tlv_addr_type), 0x0,
+ "MPLS ECHO TLV Interface and Label Stack Address Type", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ilso_mbz,
+ { "Must Be Zero", "mpls_echo.tlv.ilso.mbz",
+ FT_UINT24, BASE_HEX, NULL, 0x0, "MPLS ECHO TLV Interface and Label Stack MBZ", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ilso_ipv4_addr,
+ { "Downstream IPv4 Address", "mpls_echo.tlv.ilso_ipv4.addr",
+ FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Interface and Label Stack Address", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ilso_ipv4_int_addr,
+ { "Downstream Interface Address", "mpls_echo.tlv.ilso_ipv4.int_addr",
+ FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Interface and Label Stack Interface Address", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ilso_ipv6_addr,
+ { "Downstream IPv6 Address", "mpls_echo.tlv.ilso_ipv6.addr",
+ FT_IPv6, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Interface and Label Stack Address", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ilso_ipv6_int_addr,
+ { "Downstream Interface Address", "mpls_echo.tlv.ilso_ipv6.int_addr",
+ FT_IPv6, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Interface and Label Stack Interface Address", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ilso_int_index,
+ { "Downstream Interface Index", "mpls_echo.tlv.ilso.int_index",
+ FT_UINT32, BASE_HEX, NULL, 0x0, "MPLS ECHO TLV Interface and Label Stack Interface Index", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ilso_label,
+ { "Label", "mpls_echo.tlv.ilso_ipv4.label",
+ FT_UINT24, BASE_DEC, VALS(special_labels), 0x0, "MPLS ECHO TLV Interface and Label Stack Label", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ilso_exp,
+ { "Exp", "mpls_echo.tlv.ilso_ipv4.exp",
+ FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Interface and Label Stack Exp", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ilso_bos,
+ { "BOS", "mpls_echo.tlv.ilso_ipv4.bos",
+ FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Interface and Label Stack BOS", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ilso_ttl,
+ { "TTL", "mpls_echo.tlv.ilso_ipv4.ttl",
+ FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Interface and Label Stack TTL", HFILL}
+ },
+ { &hf_mpls_echo_tlv_rto_ipv4,
+ { "Reply-to IPv4 Address", "mpls_echo.tlv.rto.ipv4",
+ FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV IPv4 Reply-To Object", HFILL}
+ },
+ { &hf_mpls_echo_tlv_rto_ipv6,
+ { "Reply-to IPv6 Address", "mpls_echo.tlv.rto.ipv6",
+ FT_IPv6, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV IPv6 Reply-To Object", HFILL}
+ },
+ { &hf_mpls_echo_tlv_reply_tos,
+ { "Reply-TOS Byte", "mpls_echo.tlv.reply.tos",
+ FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Reply-TOS Byte", HFILL}
+ },
+ { &hf_mpls_echo_tlv_reply_tos_mbz,
+ { "MBZ", "mpls_echo.tlv.reply.tos.mbz",
+ FT_UINT24, BASE_HEX, NULL, 0x0, "MPLS ECHO TLV Reply-TOS MBZ", HFILL}
+ },
+ { &hf_mpls_echo_tlv_errored_type,
+ { "Errored TLV Type", "mpls_echo.tlv.errored.type",
+ FT_UINT16, BASE_DEC, VALS(mpls_echo_tlv_type_names), 0x0,
+ "MPLS ECHO TLV Errored TLV Type", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ds_map_ingress_if_num,
+ { "Ingress Interface Number", "mpls_echo.tlv.ds_map.ingress.if.num",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "MPLS ECHO TLV DownStream Map Ingress Interface Number", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ds_map_egress_if_num,
+ { "Egress Interface Number", "mpls_echo.tlv.ds_map.egress.if.num",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "MPLS ECHO TLV DownStream Map Egress Interface Number", HFILL}
+ },
+ { &hf_mpls_echo_lspping_tlv_src_gid,
+ { "SRC GLOBAL ID", "mpls_echo_lspping.tlv.src.gid",
+ FT_UINT32, BASE_DEC, NULL, 0x0, "LSP SRC GID", HFILL}
+ },
+ { &hf_mpls_echo_lspping_tlv_src_nid,
+ { "SRC NODE ID", "mpls_echo_lspping.tlv.src.nid",
+ FT_IPv4, BASE_NONE, NULL, 0x0, "LSP SRC NID", HFILL}
+ },
+ { &hf_mpls_echo_lspping_tlv_src_tunnel_no,
+ { "SRC Tunnel Number", "mpls_echo_lspping.tlv.tunnel.no",
+ FT_UINT16, BASE_DEC, NULL, 0x0, "LSP FEC Tunnel Number", HFILL}
+ },
+ { &hf_mpls_echo_lspping_tlv_lsp_no,
+ { "SRC LSP Number", "mpls_echo_lspping.tlv.lsp.no",
+ FT_UINT16, BASE_DEC, NULL, 0x0, "LSP FEC LSP Number", HFILL}
+ },
+ { &hf_mpls_echo_lspping_tlv_dst_gid,
+ { "DST GLOBAL ID", "mpls_echo_lspping.tlv.dst.gid",
+ FT_UINT32, BASE_DEC, NULL, 0x0, "LSP FEC DST GID", HFILL}
+ },
+ { &hf_mpls_echo_lspping_tlv_dst_nid,
+ { "DST NODE ID", "mpls_echo_lspping.tlv.dst.nid",
+ FT_IPv4, BASE_NONE, NULL, 0x0, "LSP FEC DST NID", HFILL}
+ },
+ { &hf_mpls_echo_lspping_tlv_dst_tunnel_no,
+ { "DST Tunnel Number", "mpls_echo_lspping.tlv.dst.tunnel.no",
+ FT_UINT16, BASE_DEC, NULL, 0x0, "LSP FEC DST Tunnel Number", HFILL}
+ },
+ { &hf_mpls_echo_lspping_tlv_resv,
+ { "RESERVED", "mpls_echo_lspping.tlv.resv",
+ FT_UINT16, BASE_DEC, NULL, 0x0, "RESERVED BITS", HFILL}
+ },
+ { &hf_mpls_echo_lspping_tlv_src_addr_gid,
+ { "Global ID", "mpls_echo_lspping.tlv.src.addr.gid",
+ FT_UINT32, BASE_DEC, NULL, 0x0, "SRC ADDR TLV GID", HFILL}
+ },
+ { &hf_mpls_echo_lspping_tlv_src_addr_nid,
+ { "Node ID", "mpls_echo_lspping.tlv.src.addr.nid",
+ FT_IPv4, BASE_NONE, NULL, 0x0, "SRC ADDR TLV NID", HFILL}
+ },
+ { &hf_mpls_echo_lspping_tlv_pw_serv_identifier,
+ { "Service identifier", "mpls_echo_lspping.tlv.pw.serv.identifier",
+ FT_UINT64, BASE_DEC, NULL, 0x0, "PW FEC Service identifier", HFILL}
+ },
+ { &hf_mpls_echo_lspping_tlv_pw_src_ac_id,
+ { "SRC AC ID", "mpls_echo_lspping.tlv.pw.src.ac.id",
+ FT_UINT32, BASE_DEC, NULL, 0x0, "PW FEC SRC AC ID", HFILL}
+ },
+ { &hf_mpls_echo_lspping_tlv_pw_dst_ac_id,
+ { "DST AC ID", "mpls_echo_lspping.tlv.pw.dst.ac.id",
+ FT_UINT32, BASE_DEC, NULL, 0x0, "PW FEC DST AC ID", HFILL}
+ },
+ { &hf_mpls_echo_lspping_tlv_pw_agi_type,
+ { "AGI TYPE", "mpls_echo_lspping.tlv.pw.agi.type",
+ FT_UINT8, BASE_DEC,NULL,0x0, "PW AGI TYPE",HFILL}
+ },
+ { &hf_mpls_echo_lspping_tlv_pw_agi_len,
+ { "AGI Length", "mpls_echo_lspping.tlv.pw.agi.len",
+ FT_UINT8, BASE_DEC,NULL,0x0, "PW AGI LENGTH",HFILL}
+ },
+ { &hf_mpls_echo_lspping_tlv_pw_agi_val,
+ { "AGI VALUE", "mpls_echo_lspping.tlv.pw.agi.val",
+ FT_STRING, BASE_NONE,NULL,0x0, "PW AGI VALUE",HFILL}
+ },
+ { &hf_mpls_echo_tlv_dd_map_mtu,
+ { "MTU", "mpls_echo_.tlv.dd_map.mtu",
+ FT_UINT16, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Detailed Downstream Map MTU", HFILL}
},
- { &hf_mpls_echo_tlv_fec_rsvp_ipv4_ipv4_sender,
- { "IPv4 Tunnel sender address", "mpls_echo.tlv.fec.rsvp_ipv4_sender",
- FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack RSVP IPv4 Sender", HFILL}
+ { &hf_mpls_echo_tlv_dd_map_addr_type,
+ { "Address Type", "mpls_echo.tlv.dd_map.addr_type",
+ FT_UINT8, BASE_DEC, VALS(mpls_echo_tlv_addr_type), 0x0, "MPLS ECHO TLV Detailed Downstream Map Address Type", HFILL}
+ },
+ { &hf_mpls_echo_tlv_dd_map_res,
+ { "DS Flags", "mpls_echo.tlv.dd_map.res",
+ FT_UINT8, BASE_HEX, NULL, 0x0, "MPLS ECHO TLV Detailed Downstream Map DS Flags", HFILL}
+ },
+ { &hf_mpls_echo_tlv_dd_map_flag_res,
+ { "MBZ", "mpls_echo.tlv.dd_map.flag_res",
+ FT_UINT8, BASE_HEX, NULL, 0xFC, "MPLS ECHO TLV Detailed Downstream Map Reserved Flags", HFILL}
+ },
+ { &hf_mpls_echo_tlv_dd_map_flag_i,
+ { "Interface and Label Stack Request", "mpls_echo.tlv.dd_map.flag_i",
+ FT_BOOLEAN, 8, NULL, 0x02, "MPLS ECHO TLV Detailed Downstream Map I-Flag", HFILL}
+ },
+ { &hf_mpls_echo_tlv_dd_map_flag_n,
+ { "Treat as Non-IP Packet", "mpls_echo.tlv.dd_map.flag_n",
+ FT_BOOLEAN, 8, NULL, 0x01, "MPLS ECHO TLV Detailed Downstream Map N-Flag", HFILL}
+ },
+ { &hf_mpls_echo_tlv_dd_map_ds_ip,
+ { "Downstream IP Address", "mpls_echo.tlv.dd_map.ds_ip",
+ FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Detailed Downstream Map IP Address", HFILL}
+ },
+ { &hf_mpls_echo_tlv_dd_map_int_ip,
+ { "Downstream Interface Address", "mpls_echo.tlv.dd_map.int_ip",
+ FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Detailed Downstream Map Interface Address", HFILL}
+ },
+ { &hf_mpls_echo_tlv_dd_map_ds_ipv6,
+ { "Downstream IPv6 Address", "mpls_echo.tlv.dd_map.ds_ipv6",
+ FT_IPv6, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Detailed Downstream Map IPv6 Address", HFILL}
+ },
+ { &hf_mpls_echo_tlv_dd_map_int_ipv6,
+ { "Downstream Interface IPv6 Address", "mpls_echo.tlv.dd_map.int_ipv6",
+ FT_IPv6, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Detailed Downstream Map Interface IPv6 Address", HFILL}
+ },
+ { &hf_mpls_echo_tlv_dd_map_return_code,
+ { "Return Code", "mpls_echo.tlv.dd_map.return_code",
+ FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Detailed Downstream Map Return Code", HFILL}
+ },
+ { &hf_mpls_echo_tlv_dd_map_return_subcode,
+ { "Return Subcode", "mpls_echo.tlv.dd_map.return_subcode",
+ FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Detailed Downstream Map Return Subcode", HFILL}
+ },
+ { &hf_mpls_echo_tlv_dd_map_subtlv_len,
+ { "Subtlv Length", "mpls_echo.tlv.dd_map.subtlv_len",
+ FT_UINT16, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Detailed Downstream Map Subtlv Length", HFILL}
+ },
+ { &hf_mpls_echo_sub_tlv_multipath_type,
+ { "Multipath Type", "mpls_echo.subtlv.dd_map.multipath_type",
+ FT_UINT8, BASE_DEC, NULL, 0x0, "Detailed Downstream Mapping TLV Multipath Data Sub-TLV Multipath Type", HFILL}
+ },
+ { &hf_mpls_echo_sub_tlv_multipath_length,
+ { "Multipath Length", "mpls_echo.subtlv.dd_map.multipath_length",
+ FT_UINT16, BASE_DEC, NULL, 0x0, "Detailed Downstream Mapping TLV Multipath Data Sub-TLV Multipath Length", HFILL}
+ },
+ { &hf_mpls_echo_sub_tlv_multipath_value,
+ { "Multipath Value", "mpls_echo.subtlv.dd_map.multipath_value",
+ FT_BYTES, BASE_NONE, NULL, 0x0, "Detailed Downstream Mapping TLV Multipath Data Sub-TLV Multipath Value", HFILL}
},
- { &hf_mpls_echo_tlv_fec_rsvp_ipv6_ext_tunnel_id,
- { "Extended Tunnel ID", "mpls_echo.tlv.fec.rsvp_ipv6_ext_tun_id",
- FT_BYTES, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack RSVP IPv6 Extended Tunnel ID", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_rsvp_ipv6_ipv6_sender,
- { "IPv6 Tunnel sender address", "mpls_echo.tlv.fec.rsvp_ipv6_sender",
- FT_IPv6, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack RSVP IPv4 Sender", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_rsvp_ip_mbz2,
- { "Must Be Zero", "mpls_echo.tlv.fec.rsvp_ip_mbz2",
- FT_UINT16, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV FEC Stack RSVP MBZ", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_rsvp_ip_lsp_id,
- { "LSP ID", "mpls_echo.tlv.fec.rsvp_ip_lsp_id",
- FT_UINT16, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV FEC Stack RSVP LSP ID", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_l2cid_sender,
- { "Sender's PE Address", "mpls_echo.tlv.fec.l2cid_sender",
- FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack L2CID Sender", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_l2cid_remote,
- { "Remote PE Address", "mpls_echo.tlv.fec.l2cid_remote",
- FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack L2CID Remote", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_l2cid_vcid,
- { "VC ID", "mpls_echo.tlv.fec.l2cid_vcid",
- FT_UINT32, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV FEC Stack L2CID VCID", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_l2cid_encap,
- { "Encapsulation", "mpls_echo.tlv.fec.l2cid_encap",
- FT_UINT16, BASE_DEC, VALS(fec_vc_types_vals), 0x0, "MPLS ECHO TLV FEC Stack L2CID Encapsulation", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_l2cid_mbz,
- { "MBZ", "mpls_echo.tlv.fec.l2cid_mbz",
- FT_UINT16, BASE_HEX, NULL, 0x0, "MPLS ECHO TLV FEC Stack L2CID MBZ", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_bgp_nh,
- { "BGP Next Hop", "mpls_echo.tlv.fec.bgp_nh",
- FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack BGP Next Hop", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_bgp_ipv4,
- { "IPv4 Prefix", "mpls_echo.tlv.fec.bgp_ipv4",
- FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack BGP IPv4", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_bgp_len,
- { "Prefix Length", "mpls_echo.tlv.fec.bgp_len",
- FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV FEC Stack BGP Prefix Length", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_gen_ipv4,
- { "IPv4 Prefix", "mpls_echo.tlv.fec.gen_ipv4",
- FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack Generic IPv4", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_gen_ipv4_mask,
- { "Prefix Length", "mpls_echo.tlv.fec.gen_ipv4_mask",
- FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV FEC Stack Generic IPv4 Prefix Length", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_gen_ipv6,
- { "IPv6 Prefix", "mpls_echo.tlv.fec.gen_ipv6",
- FT_IPv6, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV FEC Stack Generic IPv6", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_gen_ipv6_mask,
- { "Prefix Length", "mpls_echo.tlv.fec.gen_ipv6_mask",
- FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV FEC Stack Generic IPv6 Prefix Length", HFILL}
- },
- { &hf_mpls_echo_tlv_fec_nil_label,
- { "Label", "mpls_echo.tlv.fec.nil_label",
- FT_UINT24, BASE_DEC, VALS(special_labels), 0x0, "MPLS ECHO TLV FEC Stack NIL Label", HFILL}
- },
- { &hf_mpls_echo_tlv_ds_map_mtu,
- { "MTU", "mpls_echo.tlv.ds_map.mtu",
- FT_UINT16, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Downstream Map MTU", HFILL}
- },
- { &hf_mpls_echo_tlv_ds_map_addr_type,
- { "Address Type", "mpls_echo.tlv.ds_map.addr_type",
- FT_UINT8, BASE_DEC, VALS(mpls_echo_tlv_addr_type), 0x0,
- "MPLS ECHO TLV Downstream Map Address Type", HFILL}
- },
- { &hf_mpls_echo_tlv_ds_map_res,
- { "DS Flags", "mpls_echo.tlv.ds_map.res",
- FT_UINT8, BASE_HEX, NULL, 0x0, "MPLS ECHO TLV Downstream Map DS Flags", HFILL}
- },
- { &hf_mpls_echo_tlv_ds_map_flag_res,
- { "MBZ", "mpls_echo.tlv.ds_map.flag_res",
- FT_UINT8, BASE_HEX, NULL, 0xFC, "MPLS ECHO TLV Downstream Map Reserved Flags", HFILL}
- },
- { &hf_mpls_echo_tlv_ds_map_flag_i,
- { "Interface and Label Stack Request", "mpls_echo.tlv.ds_map.flag_i",
- FT_BOOLEAN, 8, NULL, 0x02, "MPLS ECHO TLV Downstream Map I-Flag", HFILL}
- },
- { &hf_mpls_echo_tlv_ds_map_flag_n,
- { "Treat as Non-IP Packet", "mpls_echo.tlv.ds_map.flag_n",
- FT_BOOLEAN, 8, NULL, 0x01, "MPLS ECHO TLV Downstream Map N-Flag", HFILL}
- },
- { &hf_mpls_echo_tlv_ds_map_ds_ip,
- { "Downstream IP Address", "mpls_echo.tlv.ds_map.ds_ip",
- FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Downstream Map IP Address", HFILL}
- },
- { &hf_mpls_echo_tlv_ds_map_int_ip,
- { "Downstream Interface Address", "mpls_echo.tlv.ds_map.int_ip",
- FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Downstream Map Interface Address", HFILL}
- },
- { &hf_mpls_echo_tlv_ds_map_if_index,
- { "Upstream Interface Index", "mpls_echo.tlv.ds_map.if_index",
- FT_UINT32, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Downstream Map Interface Index", HFILL}
- },
- { &hf_mpls_echo_tlv_ds_map_ds_ipv6,
- { "Downstream IPv6 Address", "mpls_echo.tlv.ds_map.ds_ipv6",
- FT_IPv6, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Downstream Map IPv6 Address", HFILL}
- },
- { &hf_mpls_echo_tlv_ds_map_int_ipv6,
- { "Downstream Interface IPv6 Address", "mpls_echo.tlv.ds_map.int_ipv6",
- FT_IPv6, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Downstream Map Interface IPv6 Address", HFILL}
- },
- { &hf_mpls_echo_tlv_ds_map_hash_type,
- { "Multipath Type", "mpls_echo.tlv.ds_map.hash_type",
- FT_UINT8, BASE_DEC, VALS(mpls_echo_tlv_ds_map_hash_type), 0x0,
- "MPLS ECHO TLV Downstream Map Multipath Type", HFILL}
- },
- { &hf_mpls_echo_tlv_ds_map_depth,
- { "Depth Limit", "mpls_echo.tlv.ds_map.depth",
- FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Downstream Map Depth Limit", HFILL}
- },
- { &hf_mpls_echo_tlv_ds_map_muti_len,
- { "Multipath Length", "mpls_echo.tlv.ds_map.multi_len",
- FT_UINT16, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Downstream Map Multipath Length", HFILL}
- },
- { &hf_mpls_echo_tlv_ds_map_mp_ip,
- { "IP Address", "mpls_echo.tlv.ds_map_mp.ip",
- FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Downstream Map Multipath IP Address", HFILL}
- },
- { &hf_mpls_echo_tlv_ds_map_mp_mask,
- { "Mask", "mpls_echo.tlv.ds_map_mp.mask",
- FT_BYTES, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Downstream Map Multipath Mask", HFILL}
- },
- { &hf_mpls_echo_tlv_ds_map_mp_ip_low,
- { "IP Address Low", "mpls_echo.tlv.ds_map_mp.ip_low",
- FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Downstream Map Multipath Low IP Address", HFILL}
- },
- { &hf_mpls_echo_tlv_ds_map_mp_ip_high,
- { "IP Address High", "mpls_echo.tlv.ds_map_mp.ip_high",
- FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Downstream Map Multipath High IP Address", HFILL}
- },
- { &hf_mpls_echo_tlv_ds_map_mp_value,
- { "Multipath Value", "mpls_echo.tlv.ds_map_mp.value",
- FT_BYTES, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Multipath Value", HFILL}
- },
- { &hf_mpls_echo_tlv_ds_map_mp_label,
- { "Downstream Label", "mpls_echo.tlv.ds_map.mp_label",
- FT_UINT24, BASE_DEC, VALS(special_labels), 0x0, "MPLS ECHO TLV Downstream Map Downstream Label", HFILL}
- },
- { &hf_mpls_echo_tlv_ds_map_mp_exp,
- { "Downstream Experimental", "mpls_echo.tlv.ds_map.mp_exp",
- FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Downstream Map Downstream Experimental", HFILL}
- },
- { &hf_mpls_echo_tlv_ds_map_mp_bos,
- { "Downstream BOS", "mpls_echo.tlv.ds_map.mp_bos",
- FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Downstream Map Downstream BOS", HFILL}
- },
- { &hf_mpls_echo_tlv_ds_map_mp_proto,
- { "Downstream Protocol", "mpls_echo.tlv.ds_map.mp_proto",
+ { &hf_mpls_echo_sub_tlv_resv,
+ { "Reserved", "mpls_echo.subtlv.dd_map.reserved",
+ FT_UINT8, BASE_DEC, NULL, 0x0, "Detailed Downstream Mapping TLV Multipath Data Sub-TLV Reserved Bits", HFILL}
+ },
+ { &hf_mpls_echo_sub_tlv_multipath_info,
+ { "Multipath Information", "mpls_echo.subtlv.dd_map.multipath_info",
+ FT_BYTES, BASE_NONE, NULL, 0x0, "Detailed Downstream Mapping TLV Multipath Data Sub-TLV Value", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ddstlv_map_mp_label,
+ { "Downstream Label", "mpls_echo.tlv.ddstlv_map.mp_label",
+ FT_UINT24, BASE_DEC, VALS(special_labels), 0x0, "MPLS ECHO TLV Detailed Downstream Map Downstream Label", HFILL}
+ },
+ { &hf_mpls_echo_tlv_ddstlv_map_mp_proto,
+ { "Downstream Protocol", "mpls_echo.tlv.ddstlv_map.mp_proto",
FT_UINT8, BASE_DEC, VALS(mpls_echo_tlv_ds_map_mp_proto), 0x0,
- "MPLS ECHO TLV Downstream Map Downstream Protocol", HFILL}
- },
- { &hf_mpls_echo_tlv_padaction,
- { "Pad Action", "mpls_echo.tlv.pad_action",
- FT_UINT8, BASE_DEC, VALS(mpls_echo_tlv_pad), 0x0, "MPLS ECHO Pad TLV Action", HFILL}
- },
- { &hf_mpls_echo_tlv_padding,
- { "Padding", "mpls_echo.tlv.pad_padding",
- FT_BYTES, BASE_NONE, NULL, 0x0, "MPLS ECHO Pad TLV Padding", HFILL}
- },
- { &hf_mpls_echo_tlv_vendor,
- { "Vendor Id", "mpls_echo.tlv.vendor_id",
- FT_UINT32, BASE_DEC|BASE_EXT_STRING, &sminmpec_values_ext, 0x0, "MPLS ECHO Vendor Id", HFILL}
- },
- { &hf_mpls_echo_tlv_ilso_addr_type,
- { "Address Type", "mpls_echo.tlv.ilso.addr_type",
- FT_UINT8, BASE_DEC, VALS(mpls_echo_tlv_addr_type), 0x0,
- "MPLS ECHO TLV Interface and Label Stack Address Type", HFILL}
- },
- { &hf_mpls_echo_tlv_ilso_mbz,
- { "Must Be Zero", "mpls_echo.tlv.ilso.mbz",
- FT_UINT24, BASE_HEX, NULL, 0x0, "MPLS ECHO TLV Interface and Label Stack MBZ", HFILL}
- },
- { &hf_mpls_echo_tlv_ilso_ipv4_addr,
- { "Downstream IPv4 Address", "mpls_echo.tlv.ilso_ipv4.addr",
- FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Interface and Label Stack Address", HFILL}
- },
- { &hf_mpls_echo_tlv_ilso_ipv4_int_addr,
- { "Downstream Interface Address", "mpls_echo.tlv.ilso_ipv4.int_addr",
- FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Interface and Label Stack Interface Address", HFILL}
- },
- { &hf_mpls_echo_tlv_ilso_ipv6_addr,
- { "Downstream IPv6 Address", "mpls_echo.tlv.ilso_ipv6.addr",
- FT_IPv6, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Interface and Label Stack Address", HFILL}
- },
- { &hf_mpls_echo_tlv_ilso_ipv6_int_addr,
- { "Downstream Interface Address", "mpls_echo.tlv.ilso_ipv6.int_addr",
- FT_IPv6, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Interface and Label Stack Interface Address", HFILL}
- },
- { &hf_mpls_echo_tlv_ilso_int_index,
- { "Downstream Interface Index", "mpls_echo.tlv.ilso.int_index",
- FT_UINT32, BASE_HEX, NULL, 0x0, "MPLS ECHO TLV Interface and Label Stack Interface Index", HFILL}
- },
- { &hf_mpls_echo_tlv_ilso_label,
- { "Label", "mpls_echo.tlv.ilso_ipv4.label",
- FT_UINT24, BASE_DEC, VALS(special_labels), 0x0, "MPLS ECHO TLV Interface and Label Stack Label", HFILL}
- },
- { &hf_mpls_echo_tlv_ilso_exp,
- { "Exp", "mpls_echo.tlv.ilso_ipv4.exp",
- FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Interface and Label Stack Exp", HFILL}
- },
- { &hf_mpls_echo_tlv_ilso_bos,
- { "BOS", "mpls_echo.tlv.ilso_ipv4.bos",
- FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Interface and Label Stack BOS", HFILL}
- },
- { &hf_mpls_echo_tlv_ilso_ttl,
- { "TTL", "mpls_echo.tlv.ilso_ipv4.ttl",
- FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Interface and Label Stack TTL", HFILL}
- },
- { &hf_mpls_echo_tlv_rto_ipv4,
- { "Reply-to IPv4 Address", "mpls_echo.tlv.rto.ipv4",
- FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV IPv4 Reply-To Object", HFILL}
+ "MPLS ECHO TLV Detailed Downstream Map Downstream Protocol", HFILL}
},
- { &hf_mpls_echo_tlv_rto_ipv6,
- { "Reply-to IPv6 Address", "mpls_echo.tlv.rto.ipv6",
- FT_IPv6, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV IPv6 Reply-To Object", HFILL}
+ { &hf_mpls_echo_tlv_ddstlv_map_mp_exp,
+ { "Downstream Experimental", "mpls_echo.tlv.ddstlv_map.mp_exp",
+ FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Detailed Downstream Map Downstream Experimental", HFILL}
},
- { &hf_mpls_echo_tlv_reply_tos,
- { "Reply-TOS Byte", "mpls_echo.tlv.reply.tos",
- FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Reply-TOS Byte", HFILL}
+ { &hf_mpls_echo_tlv_ddstlv_map_mp_bos,
+ { "Downstream BOS", "mpls_echo.tlv.ddstlv_map.mp_bos",
+ FT_UINT8, BASE_DEC, NULL, 0x0, "MPLS ECHO TLV Detailed Downstream Map Downstream BOS", HFILL}
},
- { &hf_mpls_echo_tlv_reply_tos_mbz,
- { "MBZ", "mpls_echo.tlv.reply.tos.mbz",
- FT_UINT24, BASE_HEX, NULL, 0x0, "MPLS ECHO TLV Reply-TOS MBZ", HFILL}
+ { &hf_mpls_echo_sub_tlv_multipath_ip,
+ { "IP Address", "mpls_echo.tlv.ddstlv_map_mp.ip",
+ FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Detailed Downstream Map Multipath IP Address", HFILL}
},
- { &hf_mpls_echo_tlv_errored_type,
- { "Errored TLV Type", "mpls_echo.tlv.errored.type",
- FT_UINT16, BASE_DEC, VALS(mpls_echo_tlv_type_names), 0x0,
- "MPLS ECHO TLV Errored TLV Type", HFILL}
+ { &hf_mpls_echo_sub_tlv_mp_ip_low,
+ { "IP Address Low", "mpls_echo.tlv.ddstlv_map_mp.ip_low",
+ FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Detailed Downstream Map Multipath Low IP Address", HFILL}
},
- { &hf_mpls_echo_tlv_ds_map_ingress_if_num,
- { "Ingress Interface Number", "mpls_echo.tlv.ds_map.ingress.if.num",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "MPLS ECHO TLV DownStream Map Ingress Interface Number", HFILL}
+ { &hf_mpls_echo_sub_tlv_mp_ip_high,
+ { "IP Address High", "mpls_echo.tlv.ddstlv_map_mp.ip_high",
+ FT_IPv4, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Detailed Downstream Map Multipath High IP Address", HFILL}
},
- { &hf_mpls_echo_tlv_ds_map_egress_if_num,
- { "Egress Interface Number", "mpls_echo.tlv.ds_map.egress.if.num",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "MPLS ECHO TLV DownStream Map Egress Interface Number", HFILL}
+ { &hf_mpls_echo_sub_tlv_mp_mask,
+ { "Mask", "mpls_echo.tlv.ddstlv_map_mp.mask",
+ FT_BYTES, BASE_NONE, NULL, 0x0, "MPLS ECHO TLV Detailed Downstream Map Multipath Mask", HFILL}
},
- { &hf_mpls_echo_lspping_tlv_src_gid,
- { "SRC GLOBAL ID", "mpls_echo_lspping.tlv.src.gid",
- FT_UINT32, BASE_DEC, NULL, 0x0, "LSP SRC GID", HFILL}
+ { &hf_mpls_echo_sub_tlv_op_type,
+ { "Operation Type", "mpls_echo.tlv.ddstlv_map.op_type",
+ FT_UINT8, BASE_DEC, VALS(mpls_echo_subtlv_op_types), 0x0,
+ "MPLS ECHO TLV Detailed Downstream Map Stack Change Operation Type", HFILL}
},
- { &hf_mpls_echo_lspping_tlv_src_nid,
- { "SRC NODE ID", "mpls_echo_lspping.tlv.src.nid",
- FT_IPv4, BASE_NONE, NULL, 0x0, "LSP SRC NID", HFILL}
+ { &hf_mpls_echo_sub_tlv_addr_type,
+ { "Address Type", "mpls_echo.tlv.ddstlv_map.address_type",
+ FT_UINT8, BASE_DEC, VALS(mpls_echo_subtlv_addr_types), 0x0,
+ "MPLS ECHO TLV Detailed Downstream Map Stack Change Address Type", HFILL}
},
- { &hf_mpls_echo_lspping_tlv_src_tunnel_no,
- { "SRC Tunnel Number", "mpls_echo_lspping.tlv.tunnel.no",
- FT_UINT16, BASE_DEC, NULL, 0x0, "LSP FEC Tunnel Number", HFILL}
- },
- { &hf_mpls_echo_lspping_tlv_lsp_no,
- { "SRC LSP Number", "mpls_echo_lspping.tlv.lsp.no",
- FT_UINT16, BASE_DEC, NULL, 0x0, "LSP FEC LSP Number", HFILL}
- },
- { &hf_mpls_echo_lspping_tlv_dst_gid,
- { "DST GLOBAL ID", "mpls_echo_lspping.tlv.dst.gid",
- FT_UINT32, BASE_DEC, NULL, 0x0, "LSP FEC DST GID", HFILL}
- },
- { &hf_mpls_echo_lspping_tlv_dst_nid,
- { "DST NODE ID", "mpls_echo_lspping.tlv.dst.nid",
- FT_IPv4, BASE_NONE, NULL, 0x0, "LSP FEC DST NID", HFILL}
- },
- { &hf_mpls_echo_lspping_tlv_dst_tunnel_no,
- { "DST Tunnel Number", "mpls_echo_lspping.tlv.dst.tunnel.no",
- FT_UINT16, BASE_DEC, NULL, 0x0, "LSP FEC DST Tunnel Number", HFILL}
- },
- { &hf_mpls_echo_lspping_tlv_resv,
- { "RESERVED", "mpls_echo_lspping.tlv.resv",
- FT_UINT16, BASE_DEC, NULL, 0x0, "RESERVED BITS", HFILL}
- },
- { &hf_mpls_echo_lspping_tlv_src_addr_gid,
- { "Global ID", "mpls_echo_lspping.tlv.src.addr.gid",
- FT_UINT32, BASE_DEC, NULL, 0x0, "SRC ADDR TLV GID", HFILL}
- },
- { &hf_mpls_echo_lspping_tlv_src_addr_nid,
- { "Node ID", "mpls_echo_lspping.tlv.src.addr.nid",
- FT_IPv4, BASE_NONE, NULL, 0x0, "SRC ADDR TLV NID", HFILL}
- },
- { &hf_mpls_echo_lspping_tlv_pw_serv_identifier,
- { "Service identifier", "mpls_echo_lspping.tlv.pw.serv.identifier",
- FT_UINT64, BASE_DEC, NULL, 0x0, "PW FEC Service identifier", HFILL}
- },
- { &hf_mpls_echo_lspping_tlv_pw_src_ac_id,
- { "SRC AC ID", "mpls_echo_lspping.tlv.pw.src.ac.id",
- FT_UINT32, BASE_DEC, NULL, 0x0, "PW FEC SRC AC ID", HFILL}
- },
- { &hf_mpls_echo_lspping_tlv_pw_dst_ac_id,
- { "DST AC ID", "mpls_echo_lspping.tlv.pw.dst.ac.id",
- FT_UINT32, BASE_DEC, NULL, 0x0, "PW FEC DST AC ID", HFILL}
- },
- { &hf_mpls_echo_lspping_tlv_pw_agi_type,
- { "AGI TYPE", "mpls_echo_lspping.tlv.pw.agi.type",
- FT_UINT8, BASE_DEC,NULL,0x0, "PW AGI TYPE",HFILL}
- },
- { &hf_mpls_echo_lspping_tlv_pw_agi_len,
- { "AGI Length", "mpls_echo_lspping.tlv.pw.agi.len",
- FT_UINT8, BASE_DEC,NULL,0x0, "PW AGI LENGTH",HFILL}
- },
- { &hf_mpls_echo_lspping_tlv_pw_agi_val,
- { "AGI VALUE", "mpls_echo_lspping.tlv.pw.agi.val",
- FT_STRING, BASE_NONE,NULL,0x0, "PW AGI VALUE",HFILL}
- }
- };
-
- static gint *ett[] = {
- &ett_mpls_echo,
- &ett_mpls_echo_gflags,
- &ett_mpls_echo_tlv,
- &ett_mpls_echo_tlv_fec,
- &ett_mpls_echo_tlv_ds_map,
- &ett_mpls_echo_tlv_ilso
- };
-
- module_t *mpls_echo_module;
-
- proto_mpls_echo = proto_register_protocol("Multiprotocol Label Switching Echo",
- "MPLS Echo", "mpls-echo");
-
- proto_register_field_array(proto_mpls_echo, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
-
- mpls_echo_module = prefs_register_protocol(proto_mpls_echo, proto_reg_handoff_mpls_echo);
- prefs_register_uint_preference(mpls_echo_module, "udp.port", "MPLS Echo UDP Port",
- "Set the UDP port for messages (if other"
- " than the default of 3503)",
- 10, &global_mpls_echo_udp_port);
+ { &hf_mpls_echo_sub_tlv_fec_tlv_value,
+ { "FEC tlv Length", "mpls_echo.subtlv.dd_map.fec_tlv_type",
+ FT_UINT8, BASE_DEC, NULL, 0x0, "Detailed Downstream Map FEC TLV Length", HFILL}
+ },
+ { &hf_mpls_echo_sub_tlv_res,
+ { "Reserved", "mpls_echo.subtlv.dd_map.reserved",
+ FT_UINT8, BASE_DEC, NULL, 0x0, "Detailed Downstream Map FEC Stack Change Reserved Bits", HFILL}
+ },
+ { &hf_mpls_echo_sub_tlv_remote_peer_ip,
+ { "Remote Peer IP Address", "mpls_echo.tlv.dd_map.remote_ip",
+ FT_IPv4, BASE_NONE, NULL, 0x0, "Detailed Downstream Map FEC Stack Change Remote Peer IP Address", HFILL}
+ },
+ { &hf_mpls_echo_sub_tlv_remore_peer_ipv6,
+ { "Remote Peer IPv6 Address", "mpls_echo.tlv.dd_map.remote_ipv6",
+ FT_IPv6, BASE_NONE, NULL, 0x0, "Detailed Downstream Map FEC Stack Change Remote Peer IPv6 Address", HFILL}
+ },
+ { &hf_mpls_echo_tlv_dd_map_type,
+ { "Sub-TLV Type", "mpls_echo.subtlv.dd_map.type",
+ FT_UINT16, BASE_DEC, NULL, 0x0, "Detailed Downstream Mapping TLV Type", HFILL}
+ },
+ { &hf_mpls_echo_tlv_dd_map_length,
+ { "Sub-TLV Length", "mpls_echo.subtlv.dd_map.length",
+ FT_UINT16, BASE_DEC, NULL, 0x0, "Detailed Downstream Mapping TLV Length", HFILL}
+ },
+ { &hf_mpls_echo_tlv_dd_map_value,
+ { "Sub-TLV Value", "mpls_echo.subtlv.dd_map.value",
+ FT_BYTES, BASE_NONE, NULL, 0x0, "Detailed Downstream Mapping TLV Value", HFILL}
+ },
+ };
+
+ static gint *ett[] = {
+ &ett_mpls_echo,
+ &ett_mpls_echo_gflags,
+ &ett_mpls_echo_tlv,
+ &ett_mpls_echo_tlv_fec,
+ &ett_mpls_echo_tlv_ds_map,
+ &ett_mpls_echo_tlv_ilso,
+ &ett_mpls_echo_tlv_dd_map,
+ &ett_mpls_echo_tlv_ddstlv_map
+ };
+
+ module_t *mpls_echo_module;
+
+ proto_mpls_echo = proto_register_protocol("Multiprotocol Label Switching Echo",
+ "MPLS Echo", "mpls-echo");
+
+ proto_register_field_array(proto_mpls_echo, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ mpls_echo_module = prefs_register_protocol(proto_mpls_echo, proto_reg_handoff_mpls_echo);
+ prefs_register_uint_preference(mpls_echo_module, "udp.port", "MPLS Echo UDP Port",
+ "Set the UDP port for messages (if other"
+ " than the default of 3503)",
+ 10, &global_mpls_echo_udp_port);
}
void
proto_reg_handoff_mpls_echo(void)
{
- static gboolean mpls_echo_prefs_initialized = FALSE;
- static dissector_handle_t mpls_echo_handle;
- static guint mpls_echo_udp_port;
-
- if(!mpls_echo_prefs_initialized) {
- mpls_echo_handle = create_dissector_handle(dissect_mpls_echo,
- proto_mpls_echo);
- mpls_echo_prefs_initialized = TRUE;
- } else {
- dissector_delete_uint("udp.port", mpls_echo_udp_port, mpls_echo_handle);
- }
-
- mpls_echo_udp_port = global_mpls_echo_udp_port;
- dissector_add_uint("udp.port", global_mpls_echo_udp_port, mpls_echo_handle);
+ static gboolean mpls_echo_prefs_initialized = FALSE;
+ static dissector_handle_t mpls_echo_handle;
+ static guint mpls_echo_udp_port;
+
+ if (!mpls_echo_prefs_initialized) {
+ mpls_echo_handle = create_dissector_handle(dissect_mpls_echo,
+ proto_mpls_echo);
+ mpls_echo_prefs_initialized = TRUE;
+ } else {
+ dissector_delete_uint("udp.port", mpls_echo_udp_port, mpls_echo_handle);
+ }
+
+ mpls_echo_udp_port = global_mpls_echo_udp_port;
+ dissector_add_uint("udp.port", global_mpls_echo_udp_port, mpls_echo_handle);
}
diff --git a/epan/dissectors/packet-mpls-pm.c b/epan/dissectors/packet-mpls-pm.c
index b65af5a3cd..c5435b1883 100644
--- a/epan/dissectors/packet-mpls-pm.c
+++ b/epan/dissectors/packet-mpls-pm.c
@@ -32,8 +32,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <stdio.h>
#include <glib.h>
#include <epan/packet.h>
@@ -903,7 +901,7 @@ proto_register_mpls_pm(void)
"Control Code",
"mpls.pm.ctrl.code",
FT_UINT8, BASE_RANGE_STRING | BASE_HEX,
- RVALS(&mpls_pm_query_ctrl_code_rvals), 0x0,
+ RVALS(mpls_pm_query_ctrl_code_rvals), 0x0,
"Code identifying the query type", HFILL
}
},
@@ -913,7 +911,7 @@ proto_register_mpls_pm(void)
"Control Code",
"mpls.pm.ctrl.code",
FT_UINT8, BASE_RANGE_STRING | BASE_HEX,
- RVALS(&mpls_pm_response_ctrl_code_rvals), 0x0,
+ RVALS(mpls_pm_response_ctrl_code_rvals), 0x0,
"Code identifying the response type", HFILL
}
},
@@ -965,7 +963,7 @@ proto_register_mpls_pm(void)
"Origin Timestamp Format (OTF)",
"mpls.pm.otf",
FT_UINT8, BASE_RANGE_STRING | BASE_DEC,
- RVALS(&mpls_pm_time_stamp_format_rvals), 0x0F,
+ RVALS(mpls_pm_time_stamp_format_rvals), 0x0F,
NULL, HFILL
}
},
@@ -984,8 +982,8 @@ proto_register_mpls_pm(void)
{
"Differentiated Services Codepoint",
"mpls.pm.ds",
- FT_UINT8, BASE_DEC,
- VALS(dscp_vals), 0x3F,
+ FT_UINT8, BASE_DEC | BASE_EXT_STRING,
+ &dscp_vals_ext, 0x3F,
NULL, HFILL
}
},
@@ -1085,7 +1083,7 @@ proto_register_mpls_pm(void)
"Querier timestamp format (QTF)",
"mpls.pm.qtf",
FT_UINT8, BASE_RANGE_STRING | BASE_DEC,
- RVALS(&mpls_pm_time_stamp_format_rvals), 0xF0,
+ RVALS(mpls_pm_time_stamp_format_rvals), 0xF0,
NULL, HFILL
}
},
@@ -1095,7 +1093,7 @@ proto_register_mpls_pm(void)
"Querier timestamp format (QTF)",
"mpls.pm.qtf",
FT_UINT8, BASE_RANGE_STRING | BASE_DEC,
- RVALS(&mpls_pm_time_stamp_format_rvals), 0x0F,
+ RVALS(mpls_pm_time_stamp_format_rvals), 0x0F,
NULL, HFILL
}
},
@@ -1105,7 +1103,7 @@ proto_register_mpls_pm(void)
"Responder timestamp format (RTF)",
"mpls.pm.rtf",
FT_UINT8, BASE_RANGE_STRING | BASE_DEC,
- RVALS(&mpls_pm_time_stamp_format_rvals), 0x0F,
+ RVALS(mpls_pm_time_stamp_format_rvals), 0x0F,
NULL, HFILL
}
},
@@ -1115,7 +1113,7 @@ proto_register_mpls_pm(void)
"Responder timestamp format (RTF)",
"mpls.pm.rtf",
FT_UINT8, BASE_RANGE_STRING | BASE_DEC,
- RVALS(&mpls_pm_time_stamp_format_rvals), 0xF0,
+ RVALS(mpls_pm_time_stamp_format_rvals), 0xF0,
NULL, HFILL
}
},
@@ -1125,7 +1123,7 @@ proto_register_mpls_pm(void)
"Responder's preferred timestamp format (RPTF)",
"mpls.pm.rptf",
FT_UINT8, BASE_RANGE_STRING | BASE_DEC,
- RVALS(&mpls_pm_time_stamp_format_rvals), 0xF0,
+ RVALS(mpls_pm_time_stamp_format_rvals), 0xF0,
NULL, HFILL
}
},
@@ -1135,7 +1133,7 @@ proto_register_mpls_pm(void)
"Responder's preferred timestamp format (RPTF)",
"mpls.pm.rptf",
FT_UINT8, BASE_RANGE_STRING | BASE_DEC,
- RVALS(&mpls_pm_time_stamp_format_rvals), 0x0F,
+ RVALS(mpls_pm_time_stamp_format_rvals), 0x0F,
NULL, HFILL
}
},
@@ -1439,10 +1437,10 @@ proto_reg_handoff_mpls_pm(void)
*
* Local variables:
* c-basic-offset: 4
- * tab-width: 4
+ * tab-width: 8
* indent-tabs-mode: nil
* End:
*
- * vi: set shiftwidth=4 tabstop=4 expandtab:
- * :indentSize=4:tabSize=4:noTabs=true:
+ * vi: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
*/
diff --git a/epan/dissectors/packet-mpls-psc.c b/epan/dissectors/packet-mpls-psc.c
new file mode 100644
index 0000000000..39a0cc327f
--- /dev/null
+++ b/epan/dissectors/packet-mpls-psc.c
@@ -0,0 +1,269 @@
+/* packet-mpls-psc.c
+ *
+ * Routines for MPLS[-TP] Protection State Coordination (PSC) Protocol: it
+ * should conform to RFC 6378.
+ *
+ * Copyright 2012 _FF_
+ *
+ * Francesco Fondelli <francesco dot fondelli, gmail dot com>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+#include <packet-ip.h>
+
+static gint proto_mpls_psc = -1;
+
+static gint ett_mpls_psc = -1;
+
+static int hf_mpls_psc_ver = -1;
+static int hf_mpls_psc_req = -1;
+static int hf_mpls_psc_pt = -1;
+static int hf_mpls_psc_rev = -1;
+static int hf_mpls_psc_fpath = -1;
+static int hf_mpls_psc_dpath = -1;
+static int hf_mpls_psc_tlvlen = -1;
+
+static dissector_handle_t mpls_psc_handle;
+
+/*
+ * FF: please keep this list in sync with
+ * http://www.iana.org/assignments/mpls-oam-parameters/mpls-oam-parameters.xml
+ * Registry Name: 'MPLS PSC Request'
+ */
+const range_string mpls_psc_req_rvals[] = {
+ { 0, 0, "No Request" },
+ { 1, 1, "Do Not Revert" },
+ { 2, 3, "Unassigned" },
+ { 4, 4, "Wait to Restore" },
+ { 5, 5, "Manual Switch" },
+ { 6, 6, "Unassigned" },
+ { 7, 7, "Signal Degrade" },
+ { 8, 9, "Unassigned" },
+ { 10, 10, "Signal Fail" },
+ { 11, 11, "Unassigned" },
+ { 12, 12, "Forced Switch" },
+ { 13, 13, "Unassigned" },
+ { 14, 14, "Lockout of protection" },
+ { 15, 15, "Unassigned" },
+ { 0, 0, NULL }
+};
+
+const value_string mpls_psc_req_short_vals[] = {
+ { 0, "NR" },
+ { 1, "DNR" },
+ { 4, "WTR" },
+ { 5, "MS" },
+ { 7, "SD" },
+ { 10, "SF" },
+ { 12, "FS" },
+ { 14, "LO" },
+ { 0, NULL }
+};
+
+const range_string mpls_psc_pt_rvals[] = {
+ { 0, 0, "for future extensions" },
+ { 1, 1, "unidirectional switching using a permanent bridge" },
+ { 2, 2, "bidirectional switching using a selector bridge" },
+ { 3, 3, "bidirectional switching using a permanent bridge" },
+ { 0, 0, NULL }
+};
+
+const range_string mpls_psc_rev_rvals[] = {
+ { 0, 0, "non-revertive mode" },
+ { 1, 1, "revertive mode" },
+ { 0, 0, NULL }
+};
+
+const range_string mpls_psc_fpath_rvals[] = {
+ { 0, 0, "protection" },
+ { 1, 1, "working" },
+ { 2, 255, "for future extensions" },
+ { 0, 0, NULL }
+};
+
+const range_string mpls_psc_dpath_rvals[] = {
+ { 0, 0, "protection is not in use" },
+ { 1, 1, "protection is in use" },
+ { 2, 255, "for future extensions" },
+ { 0, 0, NULL }
+};
+
+static void
+dissect_mpls_psc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ proto_item *ti = NULL;
+ proto_tree *psc_tree = NULL;
+ guint32 offset = 0;
+ guint8 req = 0;
+ guint8 fpath = 0;
+ guint8 path = 0;
+
+ /* build cinfo */
+ req = (tvb_get_guint8(tvb, offset) & 0x3C) >> 2;
+ fpath = tvb_get_guint8(tvb, offset + 2);
+ path = tvb_get_guint8(tvb, offset + 3);
+
+ col_clear(pinfo->cinfo, COL_PROTOCOL);
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ col_add_fstr(pinfo->cinfo, COL_PROTOCOL, "PSC");
+
+ col_add_fstr(pinfo->cinfo, COL_INFO,
+ "%s(%u,%u)",
+ val_to_str(req, mpls_psc_req_short_vals, "Unknown-Request"),
+ fpath, path);
+
+ if (!tree) {
+ return;
+ }
+
+ /* create display subtree for the protocol */
+ ti = proto_tree_add_item(tree, proto_mpls_psc, tvb, 0, -1, ENC_NA);
+ psc_tree = proto_item_add_subtree(ti, ett_mpls_psc);
+ /* version */
+ proto_tree_add_item(psc_tree, hf_mpls_psc_ver, tvb, offset, 1, ENC_NA);
+ /* request */
+ proto_tree_add_item(psc_tree, hf_mpls_psc_req, tvb, offset, 1, ENC_NA);
+ /* prot type */
+ proto_tree_add_item(psc_tree, hf_mpls_psc_pt, tvb, offset, 1, ENC_NA);
+ offset += 1;
+ /* prot type */
+ proto_tree_add_item(psc_tree, hf_mpls_psc_rev, tvb, offset, 1, ENC_NA);
+ /* skip reserved1 */
+ offset += 1;
+ /* fpath */
+ proto_tree_add_item(psc_tree, hf_mpls_psc_fpath, tvb, offset, 1, ENC_NA);
+ offset += 1;
+ /* path */
+ proto_tree_add_item(psc_tree, hf_mpls_psc_dpath, tvb, offset, 1, ENC_NA);
+ offset += 1;
+ /* tlv len */
+ proto_tree_add_item(psc_tree, hf_mpls_psc_tlvlen, tvb, offset, 1,
+ ENC_BIG_ENDIAN);
+}
+
+void
+proto_register_mpls_psc(void)
+{
+ static hf_register_info hf[] = {
+ {
+ &hf_mpls_psc_ver,
+ {
+ "Version", "mpls.psc.ver", FT_UINT8, BASE_DEC, NULL,
+ 0xC0, NULL, HFILL
+ }
+ },
+ {
+ &hf_mpls_psc_req,
+ {
+ "Request", "mpls.psc.req", FT_UINT8,
+ BASE_RANGE_STRING | BASE_DEC,
+ RVALS(mpls_psc_req_rvals),
+ 0x3C, NULL, HFILL
+ }
+ },
+ {
+ &hf_mpls_psc_pt,
+ {
+ "Protection Type", "mpls.psc.pt", FT_UINT8,
+ BASE_RANGE_STRING | BASE_DEC,
+ RVALS(mpls_psc_pt_rvals),
+ 0x03, NULL, HFILL
+ }
+ },
+ {
+ &hf_mpls_psc_rev,
+ {
+ "R", "mpls.psc.rev", FT_UINT8,
+ BASE_RANGE_STRING | BASE_DEC,
+ RVALS(mpls_psc_rev_rvals),
+ 0x80, NULL, HFILL
+ }
+ },
+ {
+ &hf_mpls_psc_fpath,
+ {
+ "Fault Path", "mpls.psc.fpath", FT_UINT8,
+ BASE_RANGE_STRING | BASE_DEC,
+ RVALS(mpls_psc_fpath_rvals),
+ 0x0, NULL, HFILL
+ }
+ },
+ {
+ &hf_mpls_psc_dpath,
+ {
+ "Data Path", "mpls.psc.dpath", FT_UINT8,
+ BASE_RANGE_STRING | BASE_DEC,
+ RVALS(mpls_psc_dpath_rvals),
+ 0x0, NULL, HFILL
+ }
+ },
+ {
+ &hf_mpls_psc_tlvlen,
+ {
+ "TLV Length", "mpls.psc.tlvlen", FT_UINT16, BASE_DEC, NULL,
+ 0x0, NULL, HFILL
+ }
+ },
+ };
+
+ static gint *ett[] = {
+ &ett_mpls_psc,
+ };
+
+ proto_mpls_psc =
+ proto_register_protocol("PSC", "MPLS[-TP] Protection State "
+ "Coordination (PSC) Protocol",
+ "mplspsc");
+
+ proto_register_field_array(proto_mpls_psc, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ register_dissector("mpls_psc", dissect_mpls_psc, proto_mpls_psc);
+}
+
+void
+proto_reg_handoff_mpls_psc(void)
+{
+ mpls_psc_handle =
+ create_dissector_handle(dissect_mpls_psc, proto_mpls_psc);
+}
+
+/*
+ * Editor modelines - http://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vi: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
+ */
diff --git a/epan/dissectors/packet-mpls-y1711.c b/epan/dissectors/packet-mpls-y1711.c
new file mode 100644
index 0000000000..8260043834
--- /dev/null
+++ b/epan/dissectors/packet-mpls-y1711.c
@@ -0,0 +1,441 @@
+/* packet-mpls-y1711.c
+ * Routines for (old) ITU-T MPLS OAM: it conforms to ITU-T Y.1711 and RFC 3429
+ *
+ * Copyright 2006, 2011 _FF_
+ *
+ * Francesco Fondelli <francesco dot fondelli, gmail dot com>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/*
+ * FF: NOTES
+ *
+ * - this should dissect OAM pdus (identified by the LABEL_OAM_ALERT = 14
+ * label) as described in ITU-T Y.1711 and RFC 3429.
+ *
+ * - this code used to be (since 2006) in packet-mpls.c ... nobody on this
+ * planet is using Y.1711 today (?), so thanks to the mpls subdissector
+ * table indexed by label value it has been moved here.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+#include <epan/addr_resolv.h>
+
+#include "packet-mpls.h"
+
+static gint proto_mpls_y1711 = -1;
+
+static int hf_mpls_y1711_function_type = -1;
+static int hf_mpls_y1711_ttsi = -1;
+static int hf_mpls_y1711_frequency = -1;
+static int hf_mpls_y1711_defect_type = -1;
+static int hf_mpls_y1711_defect_location = -1;
+static int hf_mpls_y1711_bip16 = -1;
+
+static gint ett_mpls_y1711 = -1;
+
+static dissector_handle_t mpls_y1711_handle;
+
+static const value_string y1711_function_type_vals[] = {
+ {0x00, "Reserved" },
+ {0x01, "CV (Connectivity Verification)" },
+ {0x02, "FDI (Forward Defect Indicator)" },
+ {0x03, "BDI (Backward Defect Indicator)" },
+ {0x04, "Reserved for Performance packets" },
+ {0x05, "Reserved for LB-Req (Loopback Request)" },
+ {0x06, "Reserved for LB-Rsp (Loopback Response)"},
+ {0x07, "FDD (Fast Failure Detection)" },
+ {0, NULL }
+};
+
+static const value_string y1711_frequency_vals[] = {
+ {0x00, "Reserved" },
+ {0x01, "10 ms" },
+ {0x02, "20 ms" },
+ {0x03, "50 ms (default value)"},
+ {0x04, "100 ms" },
+ {0x05, "200 ms" },
+ {0x06, "500 ms" },
+ /* 7-255 Reserved */
+ {0, NULL }
+};
+
+static const value_string y1711_defect_type_vals[] = {
+ {0x0000, "Reserved" },
+ {0x0101, "dServer" },
+ {0x0102, "dPeerME" },
+ {0x0201, "dLOCV" },
+ {0x0202, "dTTSI_Mismatch"},
+ {0x0203, "dTTSI_Mismerge"},
+ {0x0204, "dExcess" },
+ {0x02FF, "dUnknown" },
+ {0xFFFF, "Reserved" },
+ {0, NULL }
+};
+
+static int
+dissect_mpls_y1711(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ proto_tree *mpls_y1711_tree = NULL;
+ struct mplsinfo *mplsinfo = pinfo->private_data;
+ proto_item *ti = NULL;
+ int functype = -1;
+ int offset = 0;
+
+ const guint8 allone[] = { 0xff, 0xff };
+ const guint8 allzero[] = { 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00 };
+
+ /*
+ * if called with main tree == null just set col info with func type
+ * string and return
+ */
+ if (!tree) {
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ if (tvb_bytes_exist(tvb, offset, 1)) {
+ functype = tvb_get_guint8(tvb, offset);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (Y.1711: %s)",
+ (functype == 0x01) ? "CV" :
+ (functype == 0x02) ? "FDI" :
+ (functype == 0x03) ? "BDI" :
+ (functype == 0x07) ? "FDD" :
+ "reserved/unknown");
+ }
+ }
+ return 0;
+ }
+
+ /* sanity checks */
+ if (!tvb_bytes_exist(tvb, offset, 44)) {
+ /*
+ * ITU-T Y.1711, 5.3: PDUs must have a minimum payload length of
+ * 44 bytes
+ */
+ proto_tree_add_text(tree, tvb, offset, -1,
+ "Error: must have a minimum payload "
+ "length of 44 bytes");
+ return 0;
+ }
+
+ ti = proto_tree_add_text(tree, tvb, offset, 44, "Y.1711 OAM");
+ mpls_y1711_tree = proto_item_add_subtree(ti, ett_mpls_y1711);
+
+ if (!mpls_y1711_tree)
+ return 0;
+
+ /* checks for exp, bos and ttl encoding */
+ if (mplsinfo->label != LABEL_OAM_ALERT)
+ proto_tree_add_text(mpls_y1711_tree, tvb, offset - 4, 3,
+ "Warning: Y.1711 but no OAM alert label (%d) ?!",
+ LABEL_OAM_ALERT);
+
+ if (mplsinfo->exp != 0)
+ proto_tree_add_text(mpls_y1711_tree, tvb, offset - 2, 1,
+ "Warning: Exp bits should be 0 for Y.1711");
+
+ if (mplsinfo->bos != 1)
+ proto_tree_add_text(mpls_y1711_tree, tvb, offset - 2, 1,
+ "Warning: S bit should be 1 for Y.1711");
+
+ if (mplsinfo->ttl != 1)
+ proto_tree_add_text(mpls_y1711_tree, tvb, offset - 1, 1,
+ "Warning: TTL should be 1 for Y.1711");
+
+ /* starting dissection */
+ functype = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(mpls_y1711_tree, hf_mpls_y1711_function_type, tvb,
+ offset, 1,
+ ENC_LITTLE_ENDIAN);
+ offset++;
+
+ switch (functype) {
+ case 0x01: /* CV */
+ {
+ guint32 lsrid_ipv4addr;
+
+ /* 3 octets reserved (all 0x00) */
+ if (tvb_memeql(tvb, offset, allzero, 3) == -1) {
+ proto_tree_add_text(mpls_y1711_tree, tvb, offset, 3,
+ "Error: these bytes are reserved and "
+ "must be 0x00");
+ }
+ offset += 3;
+
+ /* ttsi (ipv4 flavor as in RFC 2373) */
+ if (tvb_memeql(tvb, offset, allzero, 10) == -1) {
+ proto_tree_add_text(mpls_y1711_tree, tvb, offset, 10,
+ "Error: these bytes are padding "
+ "and must be 0x00");
+ }
+ offset += 10;
+
+ if (tvb_memeql(tvb, offset, allone, 2) == -1) {
+ proto_tree_add_text(mpls_y1711_tree, tvb, offset, 2,
+ "Error: these bytes are padding "
+ "and must be 0xFF");
+ }
+ offset += 2;
+
+ lsrid_ipv4addr = tvb_get_ipv4(tvb, offset);
+ proto_tree_add_text(mpls_y1711_tree, tvb, offset, 4, "LSR ID: %s",
+ ip_to_str((guint8 *) &lsrid_ipv4addr));
+ offset += 4;
+
+ proto_tree_add_text(mpls_y1711_tree, tvb, offset, 4, "LSP ID: %d",
+ tvb_get_ntohl(tvb, offset));
+ offset += 4;
+
+ /* 18 octets of padding (all 0x00) */
+ if (tvb_memeql(tvb, offset, allzero, 18) == -1) {
+ proto_tree_add_text(mpls_y1711_tree, tvb, offset, 18,
+ "Error: these bytes are padding "
+ "and must be 0x00");
+ }
+ offset += 18;
+ }
+ break;
+
+ case 0x02: /* FDI */
+ case 0x03: /* BDI */
+ {
+ guint32 lsrid_ipv4addr;
+
+ /* 1 octets reserved (all 0x00) */
+ if (tvb_memeql(tvb, offset, allzero, 1) == -1) {
+ proto_tree_add_text(mpls_y1711_tree, tvb, offset, 3,
+ "Error: this byte is reserved "
+ "and must be 0x00");
+ }
+ offset++;
+
+ proto_tree_add_item(mpls_y1711_tree, hf_mpls_y1711_defect_type, tvb,
+ offset, 2,
+ ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ /*
+ * ttsi (ipv4 flavor as in RFC 2373) is optional if not used must
+ * be set to all 0x00
+ */
+ if (tvb_memeql(tvb, offset, allzero, 20) == 0) {
+ proto_tree_add_text(mpls_y1711_tree, tvb, offset, 20,
+ "TTSI not preset (optional for FDI/BDI)");
+ offset += 20;
+ } else {
+ if (tvb_memeql(tvb, offset, allzero, 10) == -1) {
+ proto_tree_add_text(mpls_y1711_tree, tvb, offset, 10,
+ "Error: these bytes are padding and "
+ "must be 0x00");
+ }
+ offset += 10;
+
+ if (tvb_memeql(tvb, offset, allone, 2) == -1) {
+ proto_tree_add_text(mpls_y1711_tree, tvb, offset, 2,
+ "Error: these bytes are padding and "
+ "must be 0xFF");
+ }
+ offset += 2;
+
+ lsrid_ipv4addr = tvb_get_ipv4(tvb, offset);
+ proto_tree_add_text(mpls_y1711_tree, tvb, offset, 4, "LSR ID: %s",
+ ip_to_str((guint8 *) &lsrid_ipv4addr));
+ offset += 4;
+
+ proto_tree_add_text(mpls_y1711_tree, tvb, offset, 4, "LSP ID: %d",
+ tvb_get_ntohl(tvb, offset));
+ offset += 4;
+ }
+
+ /* defect location */
+ proto_tree_add_item(mpls_y1711_tree, hf_mpls_y1711_defect_location, tvb,
+ offset, 4,
+ ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ /* 14 octets of padding (all 0x00) */
+ if (tvb_memeql(tvb, offset, allzero, 14) == -1) {
+ proto_tree_add_text(mpls_y1711_tree, tvb, offset, 14,
+ "Error: these bytes are padding "
+ "and must be 0x00");
+ }
+ offset += 14;
+ }
+ break;
+
+ case 0x07: /* FDD */
+ {
+ guint32 lsrid_ipv4addr;
+
+ /* 3 octets reserved (all 0x00) */
+ if (tvb_memeql(tvb, offset, allzero, 3) == -1) {
+ proto_tree_add_text(mpls_y1711_tree, tvb, offset, 3,
+ "Error: these bytes are "
+ "reserved and must be 0x00");
+ }
+ offset += 3;
+
+ /* ttsi (ipv4 flavor as in RFC 2373) */
+ if (tvb_memeql(tvb, offset, allzero, 10) == -1) {
+ proto_tree_add_text(mpls_y1711_tree, tvb, offset, 10,
+ "Error: these bytes are padding and "
+ "must be 0x00");
+ }
+ offset += 10;
+
+ if (tvb_memeql(tvb, offset, allone, 2) == -1) {
+ proto_tree_add_text(mpls_y1711_tree, tvb, offset, 2,
+ "Error: these bytes are padding and "
+ "must be 0xFF");
+ }
+ offset += 2;
+
+ lsrid_ipv4addr = tvb_get_ipv4(tvb, offset);
+ proto_tree_add_text(mpls_y1711_tree, tvb, offset, 4, "LSR ID: %s",
+ ip_to_str((guint8 *)&lsrid_ipv4addr));
+ offset += 4;
+
+ proto_tree_add_text(mpls_y1711_tree, tvb, offset, 4, "LSP ID: %d",
+ tvb_get_ntohl(tvb,offset));
+ offset += 4;
+
+ proto_tree_add_item(mpls_y1711_tree, hf_mpls_y1711_frequency, tvb,
+ offset, 1,
+ ENC_LITTLE_ENDIAN);
+ offset++;
+
+ /* 17 octets of padding (all 0x00) */
+ if (tvb_memeql(tvb, offset, allzero, 17) == -1) {
+ proto_tree_add_text(mpls_y1711_tree, tvb, offset, 17,
+ "Error: these bytes are padding and "
+ "must be 0x00");
+ }
+ offset += 17;
+ }
+ break;
+
+ default:
+ proto_tree_add_text(mpls_y1711_tree, tvb, offset - 1, -1,
+ "Unknown MPLS Y.1711 PDU");
+ return offset;
+ }
+
+ /* BIP16 */
+ proto_tree_add_item(mpls_y1711_tree, hf_mpls_y1711_bip16, tvb, offset, 2,
+ ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ return offset;
+}
+
+void
+proto_register_mpls_y1711(void)
+{
+ static hf_register_info hf[] = {
+ {
+ &hf_mpls_y1711_function_type,
+ {
+ "Function Type", "mpls.y1711.function_type", FT_UINT8,
+ BASE_HEX, VALS(y1711_function_type_vals),
+ 0x0, "Function Type codepoint", HFILL
+ }
+ },
+ {
+ &hf_mpls_y1711_ttsi,
+ {
+ "Trail Termination Source Identifier",
+ "mpls.y1711.ttsi",
+ FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL
+ }
+ },
+ {
+ &hf_mpls_y1711_frequency,
+ {
+ "Frequency", "mpls.y1711.frequency", FT_UINT8,
+ BASE_HEX, VALS(y1711_frequency_vals), 0x0,
+ "Frequency of probe injection", HFILL
+ }
+ },
+ {
+ &hf_mpls_y1711_defect_type,
+ {
+ "Defect Type", "mpls.y1711.defect_type", FT_UINT16,
+ BASE_HEX, VALS(y1711_defect_type_vals), 0x0, NULL, HFILL
+ }
+ },
+ {
+ &hf_mpls_y1711_defect_location,
+ {
+ "Defect Location (AS)", "mpls.y1711.defect_location",
+ FT_UINT32, BASE_DEC, NULL, 0x0, "Defect Location", HFILL
+ }
+ },
+ {
+ &hf_mpls_y1711_bip16,
+ {
+ "BIP16", "mpls.y1711.bip16", FT_UINT16,
+ BASE_HEX, NULL, 0x0, NULL, HFILL
+ }
+ },
+ };
+
+ static gint *ett[] = {
+ &ett_mpls_y1711
+ };
+
+ proto_mpls_y1711 =
+ proto_register_protocol("MPLS ITU-T Y.1711 OAM",
+ "MPLS ITU-T Y.1711 OAM",
+ "mplsy1711");
+ proto_register_field_array(proto_mpls_y1711, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+ new_register_dissector("mpls_y1711", dissect_mpls_y1711, proto_mpls_y1711);
+}
+
+void
+proto_reg_handoff_mpls_y1711(void)
+{
+ mpls_y1711_handle = find_dissector("mpls_y1711");
+ dissector_add_uint("mpls.label",
+ LABEL_OAM_ALERT /* 14 */,
+ mpls_y1711_handle);
+}
+
+/*
+ * Editor modelines - http://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vi: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
+ */
diff --git a/epan/dissectors/packet-mpls.c b/epan/dissectors/packet-mpls.c
index b4aa0c66fd..94357498a0 100644
--- a/epan/dissectors/packet-mpls.c
+++ b/epan/dissectors/packet-mpls.c
@@ -13,9 +13,9 @@
*
* (c) Copyright 2011, Shobhank Sharma <ssharma5@ncsu.edu>
* - Removed some mpls preferences which are no longer relevant/needed like
- * decode PWAC payloads as PPP traffic and assume all channel types except
+ * decode PWAC payloads as PPP traffic and assume all channel types except
* 0x21 are raw BFD.
- * - MPLS extension from PW-ACH to MPLS Generic Associated Channel as per RFC 5586
+ * - MPLS extension from PW-ACH to MPLS Generic Associated Channel as per RFC 5586
* - Updated Pseudowire Associated Channel Types as per http://www.iana.org/assignments/pwe3-parameters
*
* (c) Copyright 2011, Jaihari Kalijanakiraman <jaiharik@ipinfusion.com>
@@ -24,6 +24,9 @@
* - Identification of BFD CC, BFD CV and ON-Demand CV ACH types as per RFC 6428, RFC 6426
* respectively and the corresponding decoding of messages
*
+ * (c) Copyright 2012, Aditya Ambadkar and Diana Chris <arambadk,dvchris@ncsu.edu>
+ * - Added preference to select BOS label as flowlabel as per RFC 6391
+ *
* $Id$
*
* Wireshark - Network traffic analyzer
@@ -45,19 +48,6 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-/*
- * NOTES
- *
- * This module defines routines to handle Ethernet-encapsulated MPLS IP packets.
- * It should implement all the functionality in <draft-ietf-mpls-label-encaps-07.txt>
- * Multicast MPLS support is not tested yet
- */
-
-/* FF NOTES
- *
- * The OAM patch should dissect OAM pdus as described in ITU-T Y.1711
- */
-
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
@@ -88,7 +78,6 @@ static gint proto_pw_mcw = -1;
static gint ett_mpls = -1;
static gint ett_mpls_pw_ach = -1;
static gint ett_mpls_pw_mcw = -1;
-static gint ett_mpls_oam = -1;
static char PW_ACH[50]="PW Associated Channel Header";
const value_string special_labels[] = {
@@ -97,20 +86,10 @@ const value_string special_labels[] = {
{LABEL_IP6_EXPLICIT_NULL, "IPv6 Explicit-Null"},
{LABEL_IMPLICIT_NULL, "Implicit-Null"},
{LABEL_OAM_ALERT, "OAM Alert"},
- {LABEL_GACH, "Generic Associated Channel Label (GAL)"},
+ {LABEL_GACH, "Generic Associated Channel Label (GAL)"},
{0, NULL }
};
-/* MPLS filter values */
-enum mpls_filter_keys {
- /* MPLS encap properties */
- MPLSF_LABEL,
- MPLSF_EXP,
- MPLSF_BOTTOM_OF_STACK,
- MPLSF_TTL,
- MPLSF_MAX
-};
-
static dissector_handle_t dissector_data;
static dissector_handle_t dissector_ipv6;
static dissector_handle_t dissector_ip;
@@ -120,6 +99,7 @@ static dissector_handle_t dissector_mpls_pm_ilm;
static dissector_handle_t dissector_mpls_pm_dm;
static dissector_handle_t dissector_mpls_pm_dlm_dm;
static dissector_handle_t dissector_mpls_pm_ilm_dm;
+static dissector_handle_t dissector_mpls_psc;
static dissector_handle_t dissector_pw_eth_heuristic;
static dissector_handle_t dissector_pw_fr;
static dissector_handle_t dissector_pw_hdlc_nocw_fr;
@@ -234,11 +214,16 @@ static enum_val_t mpls_default_payload_defs[] = {
}
};
-static int mpls_filter[MPLSF_MAX];
+/* For RFC6391 - Flow aware transport of pseudowire over a mpls PSN*/
+static gboolean mpls_bos_flowlabel = FALSE;
-static gint mpls_default_payload = 0;
+static int hf_mpls_label;
+static int hf_mpls_label_special;
+static int hf_mpls_exp;
+static int hf_mpls_bos;
+static int hf_mpls_ttl;
-static int hf_mpls_1st_nibble = -1;
+static gint mpls_default_payload = 0;
static int hf_mpls_pw_ach_ver = -1;
static int hf_mpls_pw_ach_res = -1;
@@ -248,50 +233,6 @@ static int hf_mpls_pw_mcw_flags = -1;
static int hf_mpls_pw_mcw_length = -1;
static int hf_mpls_pw_mcw_sequence_number = -1;
-static int hf_mpls_oam_function_type = -1;
-static int hf_mpls_oam_ttsi = -1;
-static int hf_mpls_oam_frequency = -1;
-static int hf_mpls_oam_defect_type = -1;
-static int hf_mpls_oam_defect_location = -1;
-static int hf_mpls_oam_bip16 = -1;
-
-static const value_string oam_function_type_vals[] = {
- {0x00, "Reserved"},
- {0x01, "CV (Connectivity Verification)"},
- {0x02, "FDI (Forward Defect Indicator)"},
- {0x03, "BDI (Backward Defect Indicator)"},
- {0x04, "Reserved for Performance packets"},
- {0x05, "Reserved for LB-Req (Loopback Request)"},
- {0x06, "Reserved for LB-Rsp (Loopback Response)"},
- {0x07, "FDD (Fast Failure Detection)"},
- {0, NULL }
-};
-
-static const value_string oam_frequency_vals[] = {
- {0x00, "Reserved"},
- {0x01, "10 ms"},
- {0x02, "20 ms"},
- {0x03, "50 ms (default value)"},
- {0x04, "100 ms"},
- {0x05, "200 ms"},
- {0x06, "500 ms"},
- /* 7-255 Reserved */
- {0, NULL }
-};
-
-static const value_string oam_defect_type_vals[] = {
- {0x0000, "Reserved"},
- {0x0101, "dServer"},
- {0x0102, "dPeerME"},
- {0x0201, "dLOCV"},
- {0x0202, "dTTSI_Mismatch"},
- {0x0203, "dTTSI_Mismerge"},
- {0x0204, "dExcess"},
- {0x02FF, "dUnknown"},
- {0xFFFF, "Reserved"},
- {0, NULL }
-};
-
#if 0 /*not used yet*/
/*
* MPLS PW types
@@ -351,23 +292,22 @@ static const value_string mpls_pwac_types[] = {
{ 0x0021, "IPv4 packet" },
{ 0x0022, "MPLS-TP CC message"},
{ 0x0023, "MPLS-TP CV message"},
- { 0x0024, "Protection State Coordination Protocol - Channel Type (PSC-CT)"},
+ { 0x0024, "Protection State Coordination Protocol (PSC)"},
{ 0x0025, "On-Demand CV"},
{ 0x0026, "LI"},
- { 0x0057, "IPv6 packet" },
+ { 0x0057, "IPv6 packet" },
{ 0x0058, "Fault OAM"},
{ 0x7FF8, "Reserved for Experimental Use"},
{ 0x7FF9, "Reserved for Experimental Use"},
{ 0x7FFA, "Reserved for Experimental Use"},
{ 0x7FFB, "Reserved for Experimental Use"},
- { 0x7FFC, "Reserved for Experimental Use"},
+ { 0x7FFC, "Reserved for Experimental Use"},
{ 0x7FFD, "Reserved for Experimental Use"},
{ 0x7FFE, "Reserved for Experimental Use"},
{ 0x7FFF, "Reserved for Experimental Use"},
{ 0, NULL }
};
-
static dissector_table_t mpls_subdissector_table;
/*
@@ -431,7 +371,7 @@ dissect_pw_ach(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
(channel_type == ACH_TYPE_ONDEMAND_CV)) {
switch (channel_type) {
case ACH_TYPE_BFD_CC:
-
+
proto_tree_add_uint_format (mpls_pw_ach_tree, hf_mpls_pw_ach_channel_type,
tvb, (offset + 2), 2, channel_type,
"Channel Type: %s (0x%04x)",
@@ -440,7 +380,7 @@ dissect_pw_ach(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset = offset + 4;
next_tvb = tvb_new_subset_remaining (tvb, offset);
dissect_bfd_control (next_tvb, pinfo, tree);
-
+
break;
case ACH_TYPE_BFD_CV:
@@ -455,17 +395,17 @@ dissect_pw_ach(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
dissect_bfd_control (next_tvb, pinfo, tree);
next_tvb = tvb_new_subset_remaining (tvb, offset);
dissect_bfd_mep (next_tvb, tree);
-
- break;
- case ACH_TYPE_ONDEMAND_CV:
+ break;
+
+ case ACH_TYPE_ONDEMAND_CV:
proto_tree_add_uint_format (mpls_pw_ach_tree, hf_mpls_pw_ach_channel_type,
tvb, (offset + 2), 2, channel_type,
"Channel Type: %s (0x%04x)",
val_to_str (channel_type, mpls_pwac_types, "On-Demand CV"),
channel_type);
- offset = offset + 4;
+ offset = offset + 4;
next_tvb = tvb_new_subset_remaining (tvb, offset);
dissect_mpls_echo (next_tvb, pinfo, tree);
@@ -473,7 +413,7 @@ dissect_pw_ach(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
return;
}
-
+
proto_tree_add_uint_format(mpls_pw_ach_tree, hf_mpls_pw_ach_channel_type,
tvb, 2, 2, channel_type,
@@ -515,6 +455,10 @@ dissect_pw_ach(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
call_dissector(dissector_mpls_pm_ilm_dm, next_tvb, pinfo, tree);
}
+ else if (channel_type == 0x0024) /* FF: PSC, RFC 6378 */
+ {
+ call_dissector(dissector_mpls_psc, next_tvb, pinfo, tree);
+ }
else
{
call_dissector(dissector_data, next_tvb, pinfo, tree);
@@ -588,216 +532,6 @@ dissect_pw_mcw(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
call_dissector( dissector_data, next_tvb, pinfo, tree );
}
-static int
-dissect_mpls_oam_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree *mpls_tree,
- int offset, guint8 exp, guint8 bos, guint8 ttl)
-{
- proto_tree *mpls_oam_tree = NULL;
- proto_item *ti = NULL;
- int functype = -1;
- const guint8 allone[] = { 0xff, 0xff };
- const guint8 allzero[] = { 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00 };
-
- /* if called with main tree == null just set col info with func type string and return */
- if (!tree) {
- if (check_col(pinfo->cinfo, COL_INFO)) {
- if (tvb_bytes_exist(tvb, offset, 1)) {
- functype = tvb_get_guint8(tvb, offset);
- col_append_fstr(pinfo->cinfo, COL_INFO, " (OAM: %s)",
- (functype == 0x01) ? "CV" :
- (functype == 0x02) ? "FDI" :
- (functype == 0x03) ? "BDI" :
- (functype == 0x07) ? "FDD" : "reserved/unknown");
- }
- }
- return 0;
- }
-
- /* sanity checks */
- if (!mpls_tree)
- return 0;
-
- if (!tvb_bytes_exist(tvb, offset, 44)) {
- /* ITU-T Y.1711, 5.3: OAM pdus must have a minimum payload length of 44 bytes */
- proto_tree_add_text(mpls_tree, tvb, offset, -1, "Error: must have a minimum payload length of 44 bytes");
- return 0;
- }
-
- ti = proto_tree_add_text(mpls_tree, tvb, offset, 44, "MPLS Operation & Maintenance");
- mpls_oam_tree = proto_item_add_subtree(ti, ett_mpls_oam);
-
- if (!mpls_oam_tree)
- return 0;
-
- /* checks for exp, bos and ttl encoding */
-
- if (exp!=0)
- proto_tree_add_text(mpls_oam_tree, tvb, offset - 2, 1, "Warning: Exp bits should be 0 for OAM");
-
- if (bos!=1)
- proto_tree_add_text(mpls_oam_tree, tvb, offset - 2, 1, "Warning: S bit should be 1 for OAM");
-
- if (ttl!=1)
- proto_tree_add_text(mpls_oam_tree, tvb, offset - 1, 1, "Warning: TTL should be 1 for OAM");
-
- /* starting dissection */
-
- functype = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(mpls_oam_tree, hf_mpls_oam_function_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- switch(functype) {
- case 0x01: /* CV */
- {
- guint32 lsrid_ipv4addr;
-
- /* 3 octets reserved (all 0x00) */
- if (tvb_memeql(tvb, offset, allzero, 3) == -1) {
- proto_tree_add_text(mpls_oam_tree, tvb, offset, 3,
- "Error: these bytes are reserved and must be 0x00");
- }
- offset+=3;
-
- /* ttsi (ipv4 flavor as in RFC 2373) */
- if (tvb_memeql(tvb, offset, allzero, 10) == -1) {
- proto_tree_add_text(mpls_oam_tree, tvb, offset, 10,
- "Error: these bytes are padding and must be 0x00");
- }
- offset+=10;
-
- if (tvb_memeql(tvb, offset, allone, 2) == -1) {
- proto_tree_add_text(mpls_oam_tree, tvb, offset, 2,
- "Error: these bytes are padding and must be 0xFF");
- }
- offset+=2;
-
- lsrid_ipv4addr = tvb_get_ipv4(tvb, offset);
- proto_tree_add_text(mpls_oam_tree, tvb, offset, 4, "LSR ID: %s", ip_to_str((guint8 *)&lsrid_ipv4addr));
- offset+=4;
-
- proto_tree_add_text(mpls_oam_tree, tvb, offset, 4, "LSP ID: %d", tvb_get_ntohl(tvb, offset));
- offset+=4;
-
- /* 18 octets of padding (all 0x00) */
- if (tvb_memeql(tvb, offset, allzero, 18) == -1) {
- proto_tree_add_text(mpls_oam_tree, tvb, offset, 18,
- "Error: these bytes are padding and must be 0x00");
- }
- offset+=18;
- }
- break;
-
- case 0x02: /* FDI */
- case 0x03: /* BDI */
- {
- guint32 lsrid_ipv4addr;
-
- /* 1 octets reserved (all 0x00) */
- if (tvb_memeql(tvb, offset, allzero, 1) == -1) {
- proto_tree_add_text(mpls_oam_tree, tvb, offset, 3,
- "Error: this byte is reserved and must be 0x00");
- }
- offset++;
-
- proto_tree_add_item(mpls_oam_tree, hf_mpls_oam_defect_type, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- /* ttsi (ipv4 flavor as in RFC 2373) is optional if not used must be set to all 0x00 */
- if (tvb_memeql(tvb, offset, allzero, 20) == 0) {
- proto_tree_add_text(mpls_oam_tree, tvb, offset, 20, "TTSI not preset (optional for FDI/BDI)");
- offset+=20;
- } else {
- if (tvb_memeql(tvb, offset, allzero, 10) == -1) {
- proto_tree_add_text(mpls_oam_tree, tvb, offset, 10,
- "Error: these bytes are padding and must be 0x00");
- }
- offset+=10;
-
- if (tvb_memeql(tvb, offset, allone, 2) == -1) {
- proto_tree_add_text(mpls_oam_tree, tvb, offset, 2,
- "Error: these bytes are padding and must be 0xFF");
- }
- offset+=2;
-
- lsrid_ipv4addr = tvb_get_ipv4(tvb, offset);
- proto_tree_add_text(mpls_oam_tree, tvb, offset, 4, "LSR ID: %s", ip_to_str((guint8 *)&lsrid_ipv4addr));
- offset+=4;
-
- proto_tree_add_text(mpls_oam_tree, tvb, offset, 4, "LSP ID: %d", tvb_get_ntohl(tvb, offset));
- offset+=4;
- }
-
- /* defect location */
- proto_tree_add_item(mpls_oam_tree, hf_mpls_oam_defect_location, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset+=4;
-
- /* 14 octets of padding (all 0x00) */
- if (tvb_memeql(tvb, offset, allzero, 14) == -1) {
- proto_tree_add_text(mpls_oam_tree, tvb, offset, 14,
- "Error: these bytes are padding and must be 0x00");
- }
- offset+=14;
- }
- break;
-
- case 0x07: /* FDD */
- {
- guint32 lsrid_ipv4addr;
-
- /* 3 octets reserved (all 0x00) */
- if (tvb_memeql(tvb, offset, allzero, 3) == -1) {
- proto_tree_add_text(mpls_oam_tree, tvb, offset, 3,
- "Error: these bytes are reserved and must be 0x00");
- }
- offset+=3;
-
- /* ttsi (ipv4 flavor as in RFC 2373) */
- if (tvb_memeql(tvb, offset, allzero, 10) == -1) {
- proto_tree_add_text(mpls_oam_tree, tvb, offset, 10,
- "Error: these bytes are padding and must be 0x00");
- }
- offset+=10;
-
- if (tvb_memeql(tvb, offset, allone, 2) == -1) {
- proto_tree_add_text(mpls_oam_tree, tvb, offset, 2,
- "Error: these bytes are padding and must be 0xFF");
- }
- offset+=2;
-
- lsrid_ipv4addr = tvb_get_ipv4(tvb, offset);
- proto_tree_add_text(mpls_oam_tree, tvb, offset, 4, "LSR ID: %s", ip_to_str((guint8 *)&lsrid_ipv4addr));
- offset+=4;
-
- proto_tree_add_text(mpls_oam_tree, tvb, offset, 4, "LSP ID: %d", tvb_get_ntohl(tvb, offset));
- offset+=4;
-
- proto_tree_add_item(mpls_oam_tree, hf_mpls_oam_frequency, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- /* 17 octets of padding (all 0x00) */
- if (tvb_memeql(tvb, offset, allzero, 17) == -1) {
- proto_tree_add_text(mpls_oam_tree, tvb, offset, 17,
- "Error: these bytes are padding and must be 0x00");
- }
- offset+=17;
- }
- break;
-
- default:
- proto_tree_add_text(mpls_oam_tree, tvb, offset - 1, -1, "Unknown MPLS OAM pdu");
- return 0;
- }
-
- /* BIP16 */
- proto_tree_add_item(mpls_oam_tree, hf_mpls_oam_bip16, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset+=2;
-
- return offset;
-}
-
static void
dissect_mpls(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
@@ -806,9 +540,12 @@ dissect_mpls(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
guint8 exp;
guint8 bos;
guint8 ttl;
- proto_tree *mpls_tree = NULL;
- proto_item *ti;
+ proto_tree *mpls_tree = NULL;
+ proto_item *ti;
tvbuff_t *next_tvb;
+ struct mplsinfo mplsinfo;
+ int found = 0;
+ guint8 first_nibble;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "MPLS");
@@ -818,116 +555,143 @@ dissect_mpls(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
while (tvb_reported_length_remaining(tvb, offset) > 0) {
decode_mpls_label(tvb, offset, &label, &exp, &bos, &ttl);
- pinfo->mpls_label = label;
+
+ /*
+ * FF: export (last shim in stack) info to subdissectors and
+ * update pinfo
+ */
+ mplsinfo.label = pinfo->mpls_label = label;
+ mplsinfo.exp = exp;
+ mplsinfo.bos = bos;
+ mplsinfo.ttl = ttl;
+ pinfo->private_data = &mplsinfo;
if (tree) {
ti = proto_tree_add_item(tree, proto_mpls, tvb, offset, 4, ENC_NA);
mpls_tree = proto_item_add_subtree(ti, ett_mpls);
- proto_item_append_text(ti, ", Label: %u", label);
+ if (mpls_bos_flowlabel) {
+ proto_item_append_text(ti, ", Label: %u (Flow Label)", label);
+ } else {
+ proto_item_append_text(ti, ", Label: %u", label);
+ }
if (label <= LABEL_MAX_RESERVED){
- proto_tree_add_uint_format(mpls_tree, mpls_filter[MPLSF_LABEL], tvb,
- offset, 3, label, "MPLS Label: %u (%s)",
- label, val_to_str(label, special_labels,
- "Reserved - Unknown"));
- proto_item_append_text(ti, " (%s)", val_to_str(label, special_labels,
- "Reserved - Unknown"));
+ proto_tree_add_item(mpls_tree, hf_mpls_label_special, tvb,
+ offset, 4, ENC_BIG_ENDIAN);
+ proto_item_append_text(ti, " (%s)", val_to_str(label,
+ special_labels, "Reserved - Unknown"));
} else {
- proto_tree_add_uint_format(mpls_tree, mpls_filter[MPLSF_LABEL], tvb,
- offset, 3, label, "MPLS Label: %u", label);
+ proto_tree_add_item(mpls_tree, hf_mpls_label, tvb, offset, 4,
+ ENC_BIG_ENDIAN);
}
- proto_tree_add_uint(mpls_tree,mpls_filter[MPLSF_EXP], tvb,
- offset+2,1, exp);
+ proto_tree_add_item(mpls_tree, hf_mpls_exp, tvb, offset, 4,
+ ENC_BIG_ENDIAN);
proto_item_append_text(ti, ", Exp: %u", exp);
- proto_tree_add_uint(mpls_tree,mpls_filter[MPLSF_BOTTOM_OF_STACK], tvb,
- offset+2,1, bos);
+ proto_tree_add_item(mpls_tree, hf_mpls_bos , tvb, offset, 4,
+ ENC_BIG_ENDIAN);
proto_item_append_text(ti, ", S: %u", bos);
- proto_tree_add_uint(mpls_tree,mpls_filter[MPLSF_TTL], tvb,
- offset+3,1, ttl);
+ proto_tree_add_item(mpls_tree, hf_mpls_ttl, tvb, offset, 4,
+ ENC_BIG_ENDIAN);
proto_item_append_text(ti, ", TTL: %u", ttl);
}
- if (label == LABEL_OAM_ALERT) {
- /* OAM pdus are injected in normal data plane flow in order to test a LSP,
- * they carry no user data.
- */
- dissect_mpls_oam_pdu(tvb, pinfo, tree, mpls_tree, offset + 4, exp, bos, ttl);
- return;
- }
-
offset += 4;
- if (label == LABEL_GACH && !bos)
+ if (label == LABEL_GACH && !bos)
{
- proto_tree_add_text(tree, tvb, 0, -1, "Invalid Label");
- }
-
- if (label == LABEL_GACH && bos) {
- g_strlcpy(PW_ACH,"Generic Associated Channel Header",50);
- next_tvb = tvb_new_subset_remaining(tvb, offset);
- dissect_pw_ach( next_tvb, pinfo, tree );
- return;
- }
- else
- g_strlcpy(PW_ACH,"PW Associated Channel Header",50);
+ proto_tree_add_text(tree, tvb, 0, -1, "Invalid Label");
+ }
+
+ if (label == LABEL_GACH && bos) {
+ g_strlcpy(PW_ACH,"Generic Associated Channel Header",50);
+ next_tvb = tvb_new_subset_remaining(tvb, offset);
+ dissect_pw_ach( next_tvb, pinfo, tree );
+ return;
+ }
+ else
+ g_strlcpy(PW_ACH,"PW Associated Channel Header",50);
if (bos) break;
}
+ first_nibble = (tvb_get_guint8(tvb, offset) >> 4) & 0x0F;
+
next_tvb = tvb_new_subset_remaining(tvb, offset);
- if ( !dissector_try_uint(mpls_subdissector_table, label, next_tvb, pinfo, tree))
- {
- switch ( mpls_default_payload )
- {
- case MDD_PW_SATOP:
- call_dissector(dissector_pw_satop, next_tvb, pinfo, tree);
- break;
- case MDD_PW_CESOPSN:
- call_dissector(dissector_pw_cesopsn, next_tvb, pinfo, tree);
- break;
- case MDD_PW_ETH_HEUR:
- call_dissector(dissector_pw_eth_heuristic, next_tvb, pinfo, tree);
- break;
- case MDD_MPLS_PW_FR_DLCI:
- call_dissector(dissector_pw_fr, next_tvb, pinfo, tree);
- break;
- case MDD_MPLS_PW_HDLC_NOCW_FRPORT:
- call_dissector(dissector_pw_hdlc_nocw_fr, next_tvb, pinfo, tree);
- break;
- case MDD_MPLS_PW_HDLC_NOCW_HDLC_PPP:
- call_dissector(dissector_pw_hdlc_nocw_hdlc_ppp,next_tvb, pinfo, tree);
- break;
- case MDD_MPLS_PW_ETH_CW:
- call_dissector(dissector_pw_eth_cw, next_tvb, pinfo, tree);
- break;
- case MDD_MPLS_PW_ETH_NOCW:
- call_dissector(dissector_pw_eth_nocw, next_tvb, pinfo, tree);
- break;
- case MDD_ITDM:
- call_dissector(dissector_itdm, next_tvb, pinfo, tree);
- break;
- case MDD_MPLS_PW_ATM_N1_CW:
- call_dissector(dissector_mpls_pw_atm_n1_cw, next_tvb, pinfo, tree);
- break;
- case MDD_MPLS_PW_ATM_N1_NOCW:
- call_dissector(dissector_mpls_pw_atm_n1_nocw, next_tvb, pinfo, tree);
- break;
- case MDD_MPLS_PW_ATM_11_OR_AAL5_PDU:
- call_dissector(dissector_mpls_pw_atm_11_aal5pdu, next_tvb, pinfo, tree);
- break;
- case MDD_MPLS_PW_ATM_AAL5_SDU:
- call_dissector(dissector_mpls_pw_atm_aal5_sdu, next_tvb, pinfo, tree);
- break;
- default: /*fallthrough*/
- case MDD_MPLS_PW_GENERIC:
- dissect_pw_mcw(next_tvb, pinfo, tree);
- break;
- }
+ /* 1) explicit label-to-dissector binding ? */
+ found = dissector_try_uint(mpls_subdissector_table, label,
+ next_tvb, pinfo, tree);
+ if (found)
+ return;
+
+ /* 2) use the 1st nibble logic (see BCP 4928, RFC 4385 and 5586) */
+ if (first_nibble == 4) {
+ call_dissector(dissector_ip, next_tvb, pinfo, tree);
+ return;
+ } else if (first_nibble == 6) {
+ call_dissector(dissector_ipv6, next_tvb, pinfo, tree);
+ return;
+ } else if (first_nibble == 1) {
+ dissect_pw_ach(next_tvb, pinfo, tree);
+ return;
+ } else if (first_nibble == 0) {
+ /*
+ * FF: it should be a PW with a CW but... it's not
+ * guaranteed (e.g. an Ethernet PW w/o CW and a DA MAC
+ * address like 00:xx:xx:xx:xx:xx). So, let the user and
+ * eventually any further PW heuristics decide.
+ */
+ }
+
+ /* 3) use the mpls_default_payload info from user */
+ switch (mpls_default_payload) {
+ case MDD_PW_SATOP:
+ call_dissector(dissector_pw_satop, next_tvb, pinfo, tree);
+ break;
+ case MDD_PW_CESOPSN:
+ call_dissector(dissector_pw_cesopsn, next_tvb, pinfo, tree);
+ break;
+ case MDD_PW_ETH_HEUR:
+ call_dissector(dissector_pw_eth_heuristic, next_tvb, pinfo, tree);
+ break;
+ case MDD_MPLS_PW_FR_DLCI:
+ call_dissector(dissector_pw_fr, next_tvb, pinfo, tree);
+ break;
+ case MDD_MPLS_PW_HDLC_NOCW_FRPORT:
+ call_dissector(dissector_pw_hdlc_nocw_fr, next_tvb, pinfo, tree);
+ break;
+ case MDD_MPLS_PW_HDLC_NOCW_HDLC_PPP:
+ call_dissector(dissector_pw_hdlc_nocw_hdlc_ppp,next_tvb, pinfo, tree);
+ break;
+ case MDD_MPLS_PW_ETH_CW:
+ call_dissector(dissector_pw_eth_cw, next_tvb, pinfo, tree);
+ break;
+ case MDD_MPLS_PW_ETH_NOCW:
+ call_dissector(dissector_pw_eth_nocw, next_tvb, pinfo, tree);
+ break;
+ case MDD_ITDM:
+ call_dissector(dissector_itdm, next_tvb, pinfo, tree);
+ break;
+ case MDD_MPLS_PW_ATM_N1_CW:
+ call_dissector(dissector_mpls_pw_atm_n1_cw, next_tvb, pinfo, tree);
+ break;
+ case MDD_MPLS_PW_ATM_N1_NOCW:
+ call_dissector(dissector_mpls_pw_atm_n1_nocw, next_tvb, pinfo, tree);
+ break;
+ case MDD_MPLS_PW_ATM_11_OR_AAL5_PDU:
+ call_dissector(dissector_mpls_pw_atm_11_aal5pdu, next_tvb, pinfo, tree);
+ break;
+ case MDD_MPLS_PW_ATM_AAL5_SDU:
+ call_dissector(dissector_mpls_pw_atm_aal5_sdu, next_tvb, pinfo, tree);
+ break;
+ default: /* fallthrough */
+ case MDD_MPLS_PW_GENERIC:
+ dissect_pw_mcw(next_tvb, pinfo, tree);
+ break;
}
}
@@ -937,26 +701,25 @@ proto_register_mpls(void)
static hf_register_info mplsf_info[] = {
/* MPLS header fields */
- {&mpls_filter[MPLSF_LABEL],
- {"MPLS Label", "mpls.label", FT_UINT32, BASE_DEC, VALS(special_labels), 0x0,
+ {&hf_mpls_label,
+ {"MPLS Label", "mpls.label", FT_UINT32, BASE_DEC, NULL, 0xFFFFF000,
NULL, HFILL }},
- {&mpls_filter[MPLSF_EXP],
- {"MPLS Experimental Bits", "mpls.exp", FT_UINT8, BASE_DEC, NULL, 0x0,
+ {&hf_mpls_label_special,
+ {"MPLS Label", "mpls.label", FT_UINT32, BASE_DEC, VALS(special_labels), 0xFFFFF000,
NULL, HFILL }},
- {&mpls_filter[MPLSF_BOTTOM_OF_STACK],
- {"MPLS Bottom Of Label Stack", "mpls.bottom", FT_UINT8, BASE_DEC, NULL, 0x0,
+ {&hf_mpls_exp,
+ {"MPLS Experimental Bits", "mpls.exp", FT_UINT32, BASE_DEC, NULL, 0x00000E00,
NULL, HFILL }},
- {&mpls_filter[MPLSF_TTL],
- {"MPLS TTL", "mpls.ttl", FT_UINT8, BASE_DEC, NULL, 0x0,
+ {&hf_mpls_bos,
+ {"MPLS Bottom Of Label Stack", "mpls.bottom", FT_UINT32, BASE_DEC, NULL, 0x00000100,
NULL, HFILL }},
- /* 1st nibble */
- {&hf_mpls_1st_nibble,
- {"MPLS 1st nibble", "mpls.1st_nibble", FT_UINT8,
- BASE_DEC, NULL, 0x0, NULL, HFILL }},
+ {&hf_mpls_ttl,
+ {"MPLS TTL", "mpls.ttl", FT_UINT32, BASE_DEC, NULL, 0x0000000FF,
+ NULL, HFILL }},
/* PW Associated Channel Header fields */
{&hf_mpls_pw_ach_ver,
@@ -986,38 +749,12 @@ proto_register_mpls(void)
{"Generic/Preferred PW MPLS Control Word Sequence Number",
"pwmcw.sequence_number", FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }},
-
- /* OAM header fields */
- {&hf_mpls_oam_function_type,
- {"Function Type", "mpls.oam.function_type", FT_UINT8,
- BASE_HEX, VALS(oam_function_type_vals), 0x0, "Function Type codepoint", HFILL }},
-
- {&hf_mpls_oam_ttsi,
- {"Trail Termination Source Identifier", "mpls.oam.ttsi", FT_UINT32,
- BASE_HEX, NULL, 0x0, NULL, HFILL }},
-
- {&hf_mpls_oam_frequency,
- {"Frequency", "mpls.oam.frequency", FT_UINT8,
- BASE_HEX, VALS(oam_frequency_vals), 0x0, "Frequency of probe injection", HFILL }},
-
- {&hf_mpls_oam_defect_type,
- {"Defect Type", "mpls.oam.defect_type", FT_UINT16,
- BASE_HEX, VALS(oam_defect_type_vals), 0x0, NULL, HFILL }},
-
- {&hf_mpls_oam_defect_location,
- {"Defect Location (AS)", "mpls.oam.defect_location", FT_UINT32,
- BASE_DEC, NULL, 0x0, "Defect Location", HFILL }},
-
- {&hf_mpls_oam_bip16,
- {"BIP16", "mpls.oam.bip16", FT_UINT16,
- BASE_HEX, NULL, 0x0, NULL, HFILL }},
};
static gint *ett[] = {
&ett_mpls,
&ett_mpls_pw_ach,
&ett_mpls_pw_mcw,
- &ett_mpls_oam,
};
module_t * module_mpls;
@@ -1046,6 +783,13 @@ proto_register_mpls(void)
&mpls_default_payload,
mpls_default_payload_defs,
FALSE );
+
+ /* RFC6391: Flow aware transport of pseudowire*/
+ prefs_register_bool_preference(module_mpls,
+ "flowlabel_in_mpls_header",
+ "Assume bottom of stack label as Flow label",
+ "Lowest label is used to segregate flows inside a pseudowire",
+ &mpls_bos_flowlabel);
}
void
@@ -1074,6 +818,7 @@ proto_reg_handoff_mpls(void)
dissector_mpls_pm_dm = find_dissector("mpls_pm_dm");
dissector_mpls_pm_dlm_dm = find_dissector("mpls_pm_dlm_dm");
dissector_mpls_pm_ilm_dm = find_dissector("mpls_pm_ilm_dm");
+ dissector_mpls_psc = find_dissector("mpls_psc");
dissector_pw_eth_heuristic = find_dissector("pw_eth_heuristic");
dissector_pw_fr = find_dissector("pw_fr");
dissector_pw_hdlc_nocw_fr = find_dissector("pw_hdlc_nocw_fr");
@@ -1088,3 +833,15 @@ proto_reg_handoff_mpls(void)
dissector_pw_cesopsn = find_dissector("pw_cesopsn_mpls");
}
+/*
+ * Editor modelines
+ *
+ * Local Variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * ex: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
+ */
diff --git a/epan/dissectors/packet-mpls.h b/epan/dissectors/packet-mpls.h
index df038c61d3..d1d367a992 100644
--- a/epan/dissectors/packet-mpls.h
+++ b/epan/dissectors/packet-mpls.h
@@ -38,10 +38,21 @@ enum {
LABEL_ROUTER_ALERT,
LABEL_IP6_EXPLICIT_NULL,
LABEL_IMPLICIT_NULL,
+ LABEL_GACH = 13, /* aka GAL */
LABEL_OAM_ALERT = 14,
LABEL_MAX_RESERVED = 15,
- LABEL_GACH = 13,
- LABEL_INVALID = 0xffffffff
+ LABEL_INVALID = 0xffffffff
+};
+
+/*
+ * FF: private data passed from the MPLS dissector to subdissectors
+ * (pinfo->private_data).
+ */
+struct mplsinfo {
+ guint32 label; /* last mpls label in label stack */
+ guint8 exp; /* former EXP bits of last mpls shim in stack */
+ guint8 bos; /* BOS bit of last mpls shim in stack */
+ guint8 ttl; /* TTL bits of last mpls shim in stack */
};
extern const value_string special_labels[];
@@ -49,7 +60,8 @@ extern void decode_mpls_label(tvbuff_t *tvb, int offset,
guint32 *label, guint8 *exp,
guint8 *bos, guint8 *ttl);
-extern gboolean dissect_try_cw_first_nibble( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree );
+extern gboolean dissect_try_cw_first_nibble(tvbuff_t *tvb, packet_info *pinfo,
+ proto_tree *tree );
void dissect_mpls_echo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
#endif
diff --git a/epan/dissectors/packet-mq.c b/epan/dissectors/packet-mq.c
index e9a6833ccc..4bc4db7ea7 100644
--- a/epan/dissectors/packet-mq.c
+++ b/epan/dissectors/packet-mq.c
@@ -1258,6 +1258,7 @@ dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
col_append_str(pinfo->cinfo, COL_INFO, " | ");
}
iPreviousFrameNumber = pinfo->fd->num;
+ tMsgProps.iOffsetFormat = 0;
if (tvb_length(tvb) >= 4)
{
structId = tvb_get_ntohl(tvb, offset);
@@ -1998,7 +1999,6 @@ dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset += iSizeORRR;
}
}
- structId = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
}
if ((opcode == MQ_TST_MQOPEN || opcode == MQ_TST_MQCLOSE
|| opcode == MQ_TST_MQOPEN_REPLY || opcode == MQ_TST_MQCLOSE_REPLY)
@@ -2011,7 +2011,6 @@ dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(mq_tree, hf_mq_open_options, tvb, offset, 4, int_rep);
}
offset += 4;
- structId = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
}
if ((iSizeMD_gbl = dissect_mq_md(tvb, mqroot_tree, int_rep, string_rep, offset, &tMsgProps)) != 0)
{
@@ -2238,7 +2237,6 @@ dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
offset += iSizeHeader;
iHeadersLength += iSizeHeader;
- structId = (tvb_length_remaining(tvb, offset) >= 4) ? tvb_get_ntohl(tvb, offset) : MQ_STRUCTID_NULL;
}
}
}
diff --git a/epan/dissectors/packet-ms-mms.c b/epan/dissectors/packet-ms-mms.c
index 24be0ffbd4..b3d7f2378e 100644
--- a/epan/dissectors/packet-ms-mms.c
+++ b/epan/dissectors/packet-ms-mms.c
@@ -763,7 +763,7 @@ static void dissect_client_transport_info(tvbuff_t *tvb, packet_info *pinfo, pro
offset += 4;
/* Extract and show the string in tree and info column */
- transport_info = tvb_get_ephemeral_unicode_string(tvb, offset, (length_remaining - 20)/2, ENC_LITTLE_ENDIAN);
+ transport_info = tvb_get_ephemeral_unicode_string(tvb, offset, length_remaining - 20, ENC_LITTLE_ENDIAN);
proto_tree_add_string_format(tree, hf_msmms_command_client_transport_info, tvb,
offset, length_remaining-20,
@@ -864,7 +864,7 @@ static void dissect_server_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
/* Server version string */
if (server_version_length > 1)
{
- server_version = tvb_get_ephemeral_unicode_string(tvb, offset, server_version_length, ENC_LITTLE_ENDIAN);
+ server_version = tvb_get_ephemeral_unicode_string(tvb, offset, server_version_length*2, ENC_LITTLE_ENDIAN);
/* Server version string */
proto_tree_add_string(tree, hf_msmms_command_server_version, tvb,
@@ -880,7 +880,7 @@ static void dissect_server_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
/* Tool version string */
if (tool_version_length > 1)
{
- tool_version = tvb_get_ephemeral_unicode_string(tvb, offset, tool_version_length, ENC_LITTLE_ENDIAN);
+ tool_version = tvb_get_ephemeral_unicode_string(tvb, offset, tool_version_length*2, ENC_LITTLE_ENDIAN);
/* Server version string */
proto_tree_add_string(tree, hf_msmms_command_tool_version, tvb,
@@ -892,7 +892,7 @@ static void dissect_server_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
/* Download update player url string */
if (download_update_player_length > 1)
{
- download_update_player = tvb_get_ephemeral_unicode_string(tvb, offset, download_update_player_length, ENC_LITTLE_ENDIAN);
+ download_update_player = tvb_get_ephemeral_unicode_string(tvb, offset, download_update_player_length*2, ENC_LITTLE_ENDIAN);
proto_tree_add_string(tree, hf_msmms_command_update_url, tvb,
offset, download_update_player_length*2,
@@ -903,14 +903,13 @@ static void dissect_server_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
/* Password encryption type string */
if (password_encryption_type_length > 1)
{
- password_encryption_type = tvb_get_ephemeral_unicode_string(tvb, offset, password_encryption_type_length, ENC_LITTLE_ENDIAN);
+ password_encryption_type = tvb_get_ephemeral_unicode_string(tvb, offset, password_encryption_type_length*2, ENC_LITTLE_ENDIAN);
proto_tree_add_string(tree, hf_msmms_command_password_type, tvb,
offset, password_encryption_type_length*2,
password_encryption_type);
}
- offset += (password_encryption_type_length*2);
-
+/* offset += (password_encryption_type_length*2); */
}
/* Player (client) information */
@@ -929,7 +928,7 @@ static void dissect_client_player_info(tvbuff_t *tvb, packet_info *pinfo, proto_
offset += 4;
/* Extract and show the string in tree and info column */
- player_info = tvb_get_ephemeral_unicode_string(tvb, offset, (length_remaining - 12)/2, ENC_LITTLE_ENDIAN);
+ player_info = tvb_get_ephemeral_unicode_string(tvb, offset, length_remaining - 12, ENC_LITTLE_ENDIAN);
proto_tree_add_string(tree, hf_msmms_command_client_player_info, tvb,
offset, length_remaining-12,
@@ -946,19 +945,8 @@ static void dissect_start_sending_from_info(tvbuff_t *tvb, proto_tree *tree, gui
proto_tree_add_item(tree, hf_msmms_command_prefix1_command_level, tvb, offset, 4, ENC_LITTLE_ENDIAN);
offset += 4;
proto_tree_add_item(tree, hf_msmms_command_prefix2, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset += 4;
/* 40 bytes follow the prefixes... */
- offset += 4;
- offset += 4;
- offset += 4;
- offset += 4;
- offset += 4;
- offset += 4;
- offset += 4;
- offset += 4;
- offset += 4;
- offset += 4;
}
/* Dissect cancel parameters */
@@ -968,7 +956,6 @@ static void dissect_cancel_info(tvbuff_t *tvb, proto_tree *tree, guint offset)
proto_tree_add_item(tree, hf_msmms_command_prefix1_command_level, tvb, offset, 4, ENC_LITTLE_ENDIAN);
offset += 4;
proto_tree_add_item(tree, hf_msmms_command_prefix2, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset += 4;
}
/* Dissect timing test data request */
@@ -978,7 +965,6 @@ static void dissect_timing_test_request(tvbuff_t *tvb, proto_tree *tree, guint o
proto_tree_add_item(tree, hf_msmms_command_prefix1, tvb, offset, 4, ENC_LITTLE_ENDIAN);
offset += 4;
proto_tree_add_item(tree, hf_msmms_command_prefix2, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset += 4;
}
/* Dissect timing test data response */
@@ -999,11 +985,8 @@ static void dissect_timing_test_response(tvbuff_t *tvb, proto_tree *tree, guint
/* Client ID */
proto_tree_add_item(tree, hf_msmms_command_client_id, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset += 4;
- offset += 4;
- offset += 4;
- offset += 4;
- offset += 4;
+
+ /* 20 more bytes... */
}
/* Dissect request for server file */
@@ -1022,7 +1005,7 @@ static void dissect_request_server_file(tvbuff_t *tvb, packet_info *pinfo, proto
offset += 4;
/* File path on server */
- server_file = tvb_get_ephemeral_unicode_string(tvb, offset, (length_remaining - 16)/2, ENC_LITTLE_ENDIAN);
+ server_file = tvb_get_ephemeral_unicode_string(tvb, offset, length_remaining - 16, ENC_LITTLE_ENDIAN);
proto_tree_add_string(tree, hf_msmms_command_server_file, tvb,
offset, length_remaining-16,
@@ -1068,7 +1051,6 @@ static void dissect_media_details(tvbuff_t *tvb, proto_tree *tree, guint offset)
/* Packet length in bytes */
proto_tree_add_item(tree, hf_msmms_command_media_packet_length, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset += 4;
}
/* Dissect header response */
@@ -1079,10 +1061,8 @@ static void dissect_header_response(tvbuff_t *tvb, proto_tree *tree, guint offse
offset += 4;
/* Packet ID type */
proto_tree_add_item(tree, hf_msmms_command_prefix2, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset += 4;
- offset += 4;
- offset += 4;
+ /* 8 more bytes */
}
/* Dissect network timer test response */
@@ -1092,7 +1072,6 @@ static void dissect_network_timer_test_response(tvbuff_t *tvb, proto_tree *tree,
proto_tree_add_item(tree, hf_msmms_command_prefix1_command_level, tvb, offset, 4, ENC_LITTLE_ENDIAN);
offset += 4;
proto_tree_add_item(tree, hf_msmms_command_prefix2, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset += 4;
}
/* Dissect transport info response */
@@ -1112,7 +1091,7 @@ static void dissect_transport_info_response(tvbuff_t *tvb, proto_tree *tree,
offset += 4;
/* Read this strange string */
- strange_string = tvb_get_ephemeral_unicode_string(tvb, offset, (length_remaining - 12)/2, ENC_LITTLE_ENDIAN);
+ strange_string = tvb_get_ephemeral_unicode_string(tvb, offset, length_remaining - 12, ENC_LITTLE_ENDIAN);
proto_tree_add_string(tree, hf_msmms_command_strange_string, tvb,
offset, length_remaining-12,
@@ -1132,7 +1111,6 @@ static void dissect_media_stream_mbr_selector(tvbuff_t *tvb, proto_tree *tree, g
proto_tree_add_item(tree, hf_msmms_stream_selection_stream_id, tvb, offset, 2, ENC_LITTLE_ENDIAN);
offset += 2;
proto_tree_add_item(tree, hf_msmms_stream_selection_action, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset += 2;
}
/* Dissect header request */
@@ -1154,7 +1132,6 @@ static void dissect_header_request(tvbuff_t *tvb, proto_tree *tree, guint offset
/* Header packet ID type */
proto_tree_add_item(tree, hf_msmms_command_header_packet_id_type, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset += 4;
}
/* Dissect stop button pressed */
@@ -1164,7 +1141,6 @@ static void dissect_stop_button_pressed(tvbuff_t *tvb, proto_tree *tree, guint o
proto_tree_add_item(tree, hf_msmms_command_prefix1_command_level, tvb, offset, 4, ENC_LITTLE_ENDIAN);
offset += 4;
proto_tree_add_item(tree, hf_msmms_command_prefix2, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset += 4;
}
diff --git a/epan/dissectors/packet-msdp.c b/epan/dissectors/packet-msdp.c
index 050c7343ad..27b14cb510 100644
--- a/epan/dissectors/packet-msdp.c
+++ b/epan/dissectors/packet-msdp.c
@@ -29,8 +29,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-msproxy.c b/epan/dissectors/packet-msproxy.c
index f9c9593168..f705bba163 100644
--- a/epan/dissectors/packet-msproxy.c
+++ b/epan/dissectors/packet-msproxy.c
@@ -439,18 +439,20 @@ static void dissect_bind(tvbuff_t *tvb, int offset,
-static void dissect_auth(tvbuff_t *tvb, int offset,
+static int dissect_auth(tvbuff_t *tvb, int offset,
proto_tree *tree) {
/* decode the authorization request */
- if ( tree) {
- offset += 134;
+ offset += 134;
+ if ( tree) {
proto_tree_add_text( tree, tvb, offset, 7, "NTLMSSP signature: %.7s",
tvb_get_ephemeral_string( tvb, offset, 7));
- offset += 7;
}
+ offset += 7;
+
+ return offset;
}
@@ -736,7 +738,7 @@ static void dissect_msproxy_request(tvbuff_t *tvb,
-static void dissect_hello_ack(tvbuff_t *tvb, int offset, proto_tree *tree) {
+static int dissect_hello_ack(tvbuff_t *tvb, int offset, proto_tree *tree) {
/* decode the hello acknowledge packet */
@@ -745,18 +747,21 @@ static void dissect_hello_ack(tvbuff_t *tvb, int offset, proto_tree *tree) {
if ( tree) {
proto_tree_add_item( tree, hf_msproxy_serverport, tvb, offset, 2,
ENC_BIG_ENDIAN);
- offset += 2;
-
+ }
+ offset += 2;
+ if ( tree) {
proto_tree_add_item( tree, hf_msproxy_serveraddr, tvb, offset, 4,
ENC_BIG_ENDIAN);
- offset += 4;
}
+ offset += 4;
+
+ return offset;
}
/* XXX - implement me */
-static void dissect_user_info_ack(tvbuff_t *tvb _U_, int offset,
+static int dissect_user_info_ack(tvbuff_t *tvb _U_, int offset,
proto_tree *tree _U_) {
/* decode the response _2 structure */
@@ -765,6 +770,7 @@ static void dissect_user_info_ack(tvbuff_t *tvb _U_, int offset,
offset += 2;
+ return offset;
}
@@ -811,12 +817,14 @@ static void dissect_auth_1_ack(tvbuff_t *tvb, int offset,
/* XXX - implement me */
-static void dissect_msproxy_response_4( tvbuff_t *tvb _U_, int offset,
+static int dissect_msproxy_response_4( tvbuff_t *tvb _U_, int offset,
proto_tree *tree _U_) {
/* decode the response _4 structure */
offset += 134;
+
+ return offset;
}
@@ -868,8 +876,8 @@ static void dissect_tcp_bind_ack( tvbuff_t *tvb, int offset, proto_tree *tree) {
ENC_BIG_ENDIAN);
offset += 16;
- proto_tree_add_uint( tree, hf_msproxy_server_int_port, tvb,
- offset, 2, FALSE);
+ proto_tree_add_item( tree, hf_msproxy_server_int_port, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
offset += 6;
proto_tree_add_item( tree, hf_msproxy_server_ext_port, tvb,
diff --git a/epan/dissectors/packet-mstp.c b/epan/dissectors/packet-mstp.c
index ca96929539..e71c1591fa 100644
--- a/epan/dissectors/packet-mstp.c
+++ b/epan/dissectors/packet-mstp.c
@@ -2,6 +2,14 @@
* Routines for BACnet MS/TP datalink dissection
* Copyright 2008 Steve Karg <skarg@users.sourceforge.net> Alabama
*
+ * This is described in Clause 9 of ANSI/ASHRAE Standard 135-2004,
+ * BACnet - A Data Communication Protocol for Building Automation
+ * and Contrl Networks; clause 9 "describes a Master-Slave/Token-Passing
+ * (MS/TP) data link protocol, which provides the same services to the
+ * network layer as ISO 8802-2 Logical Link Control. It uses services
+ * provided by the EIA-485 physical layer." See section 9.3 for the
+ * frame format.
+ *
* $Id$
*
* Wireshark - Network traffic analyzer
@@ -27,8 +35,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
@@ -434,6 +440,7 @@ proto_reg_handoff_mstp(void)
mstp_handle = find_dissector("mstp");
dissector_add_uint("wtap_encap", WTAP_ENCAP_BACNET_MS_TP, mstp_handle);
+ dissector_add_uint("wtap_encap", WTAP_ENCAP_BACNET_MS_TP_WITH_PHDR, mstp_handle);
bacnet_handle = find_dissector("bacnet");
data_handle = find_dissector("data");
diff --git a/epan/dissectors/packet-mstp.h b/epan/dissectors/packet-mstp.h
index 9ab2aad1d1..d3b3b21ce5 100644
--- a/epan/dissectors/packet-mstp.h
+++ b/epan/dissectors/packet-mstp.h
@@ -26,15 +26,6 @@
#ifndef __MSTP_H__
#define __MSTP_H__
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <glib.h>
-
-#include <epan/packet.h>
-
-
/**
* Returns a value string for the BACnet MS/TP Frame Type.
* @param val
diff --git a/epan/dissectors/packet-multipart.c b/epan/dissectors/packet-multipart.c
index 23a3cd64b2..d7f01a1040 100644
--- a/epan/dissectors/packet-multipart.c
+++ b/epan/dissectors/packet-multipart.c
@@ -60,15 +60,15 @@
#include "config.h"
#endif
-#include <stdlib.h>
#include <string.h>
-#include <epan/prefs.h>
-#include <glib.h>
#include <ctype.h>
-#include <epan/base64.h>
-#include <epan/emem.h>
+
+#include <glib.h>
#include <epan/packet.h>
+#include <epan/prefs.h>
+#include <epan/base64.h>
+#include <epan/emem.h>
#include "packet-imf.h"
@@ -796,6 +796,9 @@ process_body_part(proto_tree *tree, tvbuff_t *tvb, const guint8 *boundary,
return boundary_start + boundary_line_len;
}
+ g_free(filename);
+ g_free(typename);
+
return -1;
}
diff --git a/epan/dissectors/packet-nas_eps.c b/epan/dissectors/packet-nas_eps.c
index 6468363913..cbe432bfa7 100644
--- a/epan/dissectors/packet-nas_eps.c
+++ b/epan/dissectors/packet-nas_eps.c
@@ -23,7 +23,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
- * References: 3GPP TS 24.301 V9.6.0 (2011-03)
+ * References: 3GPP TS 24.301 V10.6.1 (2012-03)
*/
#ifdef HAVE_CONFIG_H
@@ -33,6 +33,7 @@
#include <glib.h>
#include <epan/packet.h>
#include <epan/asn1.h>
+#include <epan/prefs.h>
#include "packet-gsm_map.h"
#include "packet-gsm_a_common.h"
@@ -83,10 +84,11 @@ static int hf_nas_eps_emm_nonce_mme = -1;
static int hf_nas_eps_emm_nonce = -1;
static int hf_nas_eps_emm_paging_id = -1;
static int hf_nas_eps_emm_eps_att_type = -1;
-static int hf_nas_eps_emm_cs_lcs_type = -1;
-static int hf_nas_eps_emm_epc_lcs_type = -1;
-static int hf_nas_eps_emm_emc_bs_type = -1;
-static int hf_nas_eps_emm_ims_vops_type = -1;
+static int hf_nas_eps_emm_esr_ps = -1;
+static int hf_nas_eps_emm_cs_lcs = -1;
+static int hf_nas_eps_emm_epc_lcs = -1;
+static int hf_nas_eps_emm_emc_bs = -1;
+static int hf_nas_eps_emm_ims_vops = -1;
static int hf_nas_eps_emm_nas_key_set_id = -1;
static int hf_nas_eps_tsc = -1;
static int hf_nas_eps_emm_odd_even = -1;
@@ -151,11 +153,12 @@ static int hf_nas_eps_emm_gea4 = -1;
static int hf_nas_eps_emm_gea5 = -1;
static int hf_nas_eps_emm_gea6 = -1;
static int hf_nas_eps_emm_gea7 = -1;
+static int hf_nas_eps_emm_acc_csfb_cap = -1;
static int hf_nas_eps_emm_lpp_cap = -1;
static int hf_nas_eps_emm_lcs_cap = -1;
static int hf_nas_eps_emm_1xsrvcc_cap = -1;
static int hf_nas_eps_emm_nf_cap = -1;
-static int hf_nas_eps_emm_ue_ra_cap_inf_upd_need_flg;
+static int hf_nas_eps_emm_ue_ra_cap_inf_upd_need_flg = -1;
static int hf_nas_eps_emm_ss_code = -1;
static int hf_nas_eps_emm_lcs_ind = -1;
static int hf_nas_eps_emm_gen_msg_cont_type = -1;
@@ -165,7 +168,7 @@ static int hf_nas_eps_emm_apn_ambr_ul_ext = -1;
static int hf_nas_eps_emm_apn_ambr_dl_ext = -1;
static int hf_nas_eps_emm_apn_ambr_ul_ext2 = -1;
static int hf_nas_eps_emm_apn_ambr_dl_ext2 = -1;
-
+static int hf_nas_eps_emm_guti_type = -1;
static int hf_nas_eps_emm_switch_off = -1;
static int hf_nas_eps_emm_detach_type_UL = -1;
static int hf_nas_eps_emm_detach_type_DL = -1;
@@ -215,6 +218,7 @@ static int ett_nas_eps_cmn_add_info = -1;
/* Global variables */
static packet_info *gpinfo;
+static gboolean g_nas_eps_dissect_plain = FALSE;
guint8 eps_nas_gen_msg_cont_type = 0;
@@ -242,9 +246,9 @@ static const value_string nas_msg_emm_strings[] = {
{ 0x52, "Authentication request"},
{ 0x53, "Authentication response"},
{ 0x54, "Authentication reject"},
- { 0x5c, "Authentication failure"},
{ 0x55, "Identity request"},
{ 0x56, "Identity response"},
+ { 0x5c, "Authentication failure"},
{ 0x5d, "Security mode command"},
{ 0x5e, "Security mode complete"},
{ 0x5f, "Security mode reject"},
@@ -258,6 +262,7 @@ static const value_string nas_msg_emm_strings[] = {
{ 0x69, "Uplink generic NAS transport"},
{ 0, NULL }
};
+static value_string_ext nas_msg_emm_strings_ext = VALUE_STRING_EXT_INIT(nas_msg_emm_strings);
/* Table 9.8.2: Message types for EPS session management */
@@ -287,6 +292,7 @@ static const value_string nas_msg_esm_strings[] = {
{ 0xe8, "ESM status"},
{ 0, NULL }
};
+static value_string_ext nas_msg_esm_strings_ext = VALUE_STRING_EXT_INIT(nas_msg_esm_strings);
static const value_string security_header_type_vals[] = {
{ 0, "Plain NAS message, not security protected"},
@@ -311,6 +317,7 @@ static value_string_ext security_header_type_vals_ext = VALUE_STRING_EXT_INIT(se
const value_string nas_eps_common_elem_strings[] = {
{ 0x00, "Additional information" }, /* 9.9.2.0 Additional information */
+ { 0x00, "Device properties" }, /* 9.9.2.0A Device properties */
{ 0x00, "EPS bearer context status" }, /* 9.9.2.1 EPS bearer context status */
{ 0x00, "Location area identification" }, /* 9.9.2.2 Location area identification */
{ 0x00, "Mobile identity" }, /* 9.9.2.3 Mobile identity */
@@ -323,33 +330,34 @@ const value_string nas_eps_common_elem_strings[] = {
{ 0x00, "Supported codec list" }, /* 9.9.2.10 Supported codec list */
{ 0, NULL }
};
+
/* Utility functions */
static guint16
-calc_bitrate(guint8 value){
+calc_bitrate(guint8 value) {
guint16 return_value = value;
- if (value > 63 && value <= 127) {
+ if ((value > 63) && (value <= 127)) {
return_value = 64 + (value - 64) * 8;
}
- else if (value > 127 && value <= 254) {
+ else if ((value > 127) && (value <= 254)) {
return_value = 576 + (value - 128) * 64;
}
- else if (value==0xff) {
+ else if (value == 0xff) {
return_value = 0;
}
return return_value;
}
static guint32
-calc_bitrate_ext(guint8 value){
+calc_bitrate_ext(guint8 value) {
guint32 return_value = 0;
- if (value > 0 && value <= 0x4a) {
+ if ((value > 0) && (value <= 0x4a)) {
return_value = 8600 + value * 100;
}
- else if (value > 0x4a && value <= 0xba) {
+ else if ((value > 0x4a) && (value <= 0xba)) {
return_value = 16 + (value-0x4a);
}
- else if (value > 0xba && value <= 0xfa) {
+ else if ((value > 0xba) && (value <= 0xfa)) {
return_value = 128 + (value-0xba)*2;
}
else {
@@ -365,6 +373,7 @@ gint ett_nas_eps_common_elem[NUM_NAS_EPS_COMMON_ELEM];
typedef enum
{
DE_EPS_CMN_ADD_INFO, /* 9.9.2.0 Additional information */
+ DE_EPS_CMN_DEVICE_PROPERTIES, /* 9.9.2.0A Device properties */
DE_EPS_CMN_EPS_BE_CTX_STATUS, /* 9.9.2.1 EPS bearer context status */
DE_EPS_CMN_LOC_AREA_ID, /* 9.9.2.2 Location area identification */
DE_EPS_CMN_MOB_ID, /* 9.9.2.3 Mobile identity */
@@ -378,6 +387,7 @@ typedef enum
DE_EPS_COMMON_NONE /* NONE */
}
nas_eps_common_elem_idx_t;
+
/*
* 9.9.2 Common information elements
*/
@@ -388,20 +398,20 @@ de_eps_cmn_add_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
{
proto_item *item;
proto_tree *sub_tree;
- tvbuff_t *new_tvb;
+ tvbuff_t *new_tvb;
- item = proto_tree_add_item(tree, hf_nas_eps_cmn_add_info, tvb, offset, len, ENC_NA);
+ item = proto_tree_add_item(tree, hf_nas_eps_cmn_add_info, tvb, offset, len, ENC_NA);
sub_tree = proto_item_add_subtree(item, ett_nas_eps_cmn_add_info);
new_tvb = tvb_new_subset(tvb, offset, len, len);
switch (eps_nas_gen_msg_cont_type) {
- case 1:
- /* LPP */
- dissect_lcsap_Correlation_ID_PDU(new_tvb, pinfo, sub_tree);
- break;
- default:
- break;
+ case 1:
+ /* LPP */
+ dissect_lcsap_Correlation_ID_PDU(new_tvb, pinfo, sub_tree);
+ break;
+ default:
+ break;
}
return(len);
@@ -546,6 +556,7 @@ de_emm_sec_par_to_eutra(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
guint16 (*nas_eps_common_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string, int string_len) = {
/* 9.9.2 Common information elements */
de_eps_cmn_add_info, /* 9.9.2.0 Additional information */
+ NULL, /* 9.9.2.0A Device properties */
de_eps_cmn_eps_be_ctx_status, /* 9.9.2.1 EPS bearer context status */
de_lai, /* 9.9.2.2 Location area identification */
de_mid, /* 9.9.2.3 Mobile identity See subclause 10.5.1.4 in 3GPP TS 24.008*/
@@ -580,10 +591,13 @@ const value_string nas_emm_elem_strings[] = {
{ 0x00, "EPS update type" }, /* 9.9.3.14 EPS update type */
{ 0x00, "ESM message container" }, /* 9.9.3.15 ESM message conta */
{ 0x00, "GPRS timer" }, /* 9.9.3.16 GPRS timer ,See subclause 10.5.7.3 in 3GPP TS 24.008 [6]. */
+ { 0x00, "GPRS timer 2" }, /* 9.9.3.16A GPRS timer 2, See subclause 10.5.7.4 in 3GPP TS 24.008. */
+ { 0x00, "GPRS timer 3" }, /* 9.9.3.16B GPRS timer 3, See subclause 10.5.7.4a in 3GPP TS 24.008. */
{ 0x00, "Identity type 2" }, /* 9.9.3.17 Identity type 2 ,See subclause 10.5.5.9 in 3GPP TS 24.008 [6]. */
{ 0x00, "IMEISV request" }, /* 9.9.3.18 IMEISV request ,See subclause 10.5.5.10 in 3GPP TS 24.008 [6]. */
{ 0x00, "KSI and sequence number" }, /* 9.9.3.19 KSI and sequence number */
{ 0x00, "MS network capability" }, /* 9.9.3.20 MS network capability ,See subclause 10.5.5.12 in 3GPP TS 24.008 [6]. */
+ { 0x00, "MS network feature support" }, /* 9.9.3.20A MS network feature support, See subclause 10.5.1.15 in 3GPP TS 24.008. */
{ 0x00, "NAS key set identifier" }, /* 9.9.3.21 NAS key set identifier */
{ 0x00, "NAS message container" }, /* 9.9.3.22 NAS message container */
{ 0x00, "NAS security algorithms" }, /* 9.9.3.23 NAS security algorithms */
@@ -609,76 +623,81 @@ const value_string nas_emm_elem_strings[] = {
{ 0x00, "Generic message container type" }, /* 9.9.3.42 Generic message container type */
{ 0x00, "Generic message container" }, /* 9.9.3.43 Generic message container */
{ 0x00, "Voice domain preference and UEs usage setting" }, /* 9.9.3.44 Voice domain preference and UEs usage setting */
+ { 0x00, "GUTI type" }, /* 9.9.3.45 GUTI type */
{ 0, NULL }
};
#define NUM_NAS_EMM_ELEM (sizeof(nas_emm_elem_strings)/sizeof(value_string))
gint ett_nas_eps_emm_elem[NUM_NAS_EMM_ELEM];
#if 0
-This enum has been moved to packet-gsm_a_common to
+/* This enum has been moved to packet-gsm_a_common to
make it possible to use element dissection from this dissector
in other dissectors.
It is left here as a comment for easier reference.
-
+*/
+/*
Note this enum must be of the same size as the element decoding list
-
+*/
typedef enum
{
- /. 9.9.3 EPS Mobility Management (EMM) information elements ./
- DE_EMM_ADD_UPD_RES, /. 9.9.3.0A Additional update result ./
- DE_EMM_ADD_UPD_TYPE, /. 9.9.3.0B Additional update type ./
- DE_EMM_AUTH_FAIL_PAR, /. 9.9.3.1 Authentication failure parameter (dissected in packet-gsm_a_dtap.c)./
- DE_EMM_AUTN, /. 9.9.3.2 Authentication parameter AUTN ./
- DE_EMM_AUTH_PAR_RAND, /. 9.9.3.3 Authentication parameter RAND ./
- DE_EMM_AUTH_RESP_PAR, /. 9.9.3.4 Authentication response parameter ./
- DE_EMM_CSFB_RESP, /. 9.9.3.5 CSFB response ./
- DE_EMM_DAYL_SAV_T, /. 9.9.3.6 Daylight saving time ./
- DE_EMM_DET_TYPE, /. 9.9.3.7 Detach type ./
- DE_EMM_DRX_PAR, /. 9.9.3.8 DRX parameter (dissected in packet-gsm_a_gm.c)./
- DE_EMM_CAUSE, /. 9.9.3.9 EMM cause ./
- DE_EMM_ATT_RES, /. 9.9.3.10 EPS attach result (Coded inline ./
- DE_EMM_ATT_TYPE, /. 9.9.3.11 EPS attach type (Coded Inline)./
- DE_EMM_EPS_MID, /. 9.9.3.12 EPS mobile identity ./
- DE_EMM_EPS_NET_FEATURE_SUP, /. 9.9.3.12A EPS network feature support ./
- DE_EMM_EPS_UPD_RES, /. 9.9.3.13 EPS update result ( Coded inline)./
- DE_EMM_EPS_UPD_TYPE, /. 9.9.3.14 EPS update type ./
- DE_EMM_ESM_MSG_CONT, /. 9.9.3.15 ESM message conta ./
- DE_EMM_GPRS_TIMER, /. 9.9.3.16 GPRS timer ,See subclause 10.5.7.3 in 3GPP TS 24.008 [6]. ./
- DE_EMM_ID_TYPE_2, /. 9.9.3.17 Identity type 2 ,See subclause 10.5.5.9 in 3GPP TS 24.008 [6]. ./
- DE_EMM_IMEISV_REQ, /. 9.9.3.18 IMEISV request ,See subclause 10.5.5.10 in 3GPP TS 24.008 [6]. ./
- DE_EMM_KSI_AND_SEQ_NO, /. 9.9.3.19 KSI and sequence number ./
- DE_EMM_MS_NET_CAP, /. 9.9.3.20 MS network capability ,See subclause 10.5.5.12 in 3GPP TS 24.008 [6]. ./
- DE_EMM_NAS_KEY_SET_ID, /. 9.9.3.21 NAS key set identifier (coded inline)./
- DE_EMM_NAS_MSG_CONT, /. 9.9.3.22 NAS message container ./
- DE_EMM_NAS_SEC_ALGS, /. 9.9.3.23 NAS security algorithms ./
- DE_EMM_NET_NAME, /. 9.9.3.24 Network name, See subclause 10.5.3.5a in 3GPP TS 24.008 [6]. ./
- DE_EMM_NONCE, /. 9.9.3.25 Nonce ./
- DE_EMM_PAGING_ID, /. 9.9.3.25A Paging identity ./
- DE_EMM_P_TMSI_SIGN, /. 9.9.3.26 P-TMSI signature, See subclause 10.5.5.8 in 3GPP TS 24.008 [6]. ./
- DE_EMM_SERV_TYPE, /. 9.9.3.27 Service type ./
- DE_EMM_SHORT_MAC, /. 9.9.3.28 Short MAC ./
- DE_EMM_TZ, /. 9.9.3.29 Time zone, See subclause 10.5.3.8 in 3GPP TS 24.008 [6]. ./
- DE_EMM_TZ_AND_T, /. 9.9.3.30 Time zone and time, See subclause 10.5.3.9 in 3GPP TS 24.008 [6]. ./
- DE_EMM_TMSI_STAT, /. 9.9.3.31 TMSI status, See subclause 10.5.5.4 in 3GPP TS 24.008 [6]. ./
- DE_EMM_TRAC_AREA_ID, /. 9.9.3.32 Tracking area identity ./
- DE_EMM_TRAC_AREA_ID_LST, /. 9.9.3.33 Tracking area identity list ./
- DE_EMM_UE_NET_CAP, /. 9.9.3.34 UE network capability ./
- DE_EMM_UE_RA_CAP_INF_UPD_NEED, /. 9.9.3.35 UE radio capability information update needed ./
- DE_EMM_UE_SEC_CAP, /. 9.9.3.36 UE security capability ./
- DE_EMM_EMERG_NUM_LST, /. 9.9.3.37 Emergency Number List ./
- DE_EMM_CLI, /. 9.9.3.38 CLI ./
- DE_EMM_SS_CODE, /. 9.9.3.39 SS Code ./
- DE_EMM_LCS_IND, /. 9.9.3.40 LCS indicator ./
- DE_EMM_LCS_CLIENT_ID, /. 9.9.3.41 LCS client identity ./
- DE_EMM_GEN_MSG_CONT_TYPE, /. 9.9.3.42 Generic message container type ./
- DE_EMM_GEN_MSG_CONT, /. 9.9.3.43 Generic message container ./
- DE_EMM_VOICE_DMN_PREF, /. 9.9.3.44 Voice domain preference and UEs usage setting ./
- DE_EMM_NONE /. NONE ./
-
+ /* 9.9.3 EPS Mobility Management (EMM) information elements */
+ DE_EMM_ADD_UPD_RES, /* 9.9.3.0A Additional update result */
+ DE_EMM_ADD_UPD_TYPE, /* 9.9.3.0B Additional update type */
+ DE_EMM_AUTH_FAIL_PAR, /* 9.9.3.1 Authentication failure parameter (dissected in packet-gsm_a_dtap.c)*/
+ DE_EMM_AUTN, /* 9.9.3.2 Authentication parameter AUTN */
+ DE_EMM_AUTH_PAR_RAND, /* 9.9.3.3 Authentication parameter RAND */
+ DE_EMM_AUTH_RESP_PAR, /* 9.9.3.4 Authentication response parameter */
+ DE_EMM_CSFB_RESP, /* 9.9.3.5 CSFB response */
+ DE_EMM_DAYL_SAV_T, /* 9.9.3.6 Daylight saving time */
+ DE_EMM_DET_TYPE, /* 9.9.3.7 Detach type */
+ DE_EMM_DRX_PAR, /* 9.9.3.8 DRX parameter (dissected in packet-gsm_a_gm.c)*/
+ DE_EMM_CAUSE, /* 9.9.3.9 EMM cause */
+ DE_EMM_ATT_RES, /* 9.9.3.10 EPS attach result (Coded inline */
+ DE_EMM_ATT_TYPE, /* 9.9.3.11 EPS attach type (Coded Inline)*/
+ DE_EMM_EPS_MID, /* 9.9.3.12 EPS mobile identity */
+ DE_EMM_EPS_NET_FEATURE_SUP, /* 9.9.3.12A EPS network feature support */
+ DE_EMM_EPS_UPD_RES, /* 9.9.3.13 EPS update result ( Coded inline)*/
+ DE_EMM_EPS_UPD_TYPE, /* 9.9.3.14 EPS update type */
+ DE_EMM_ESM_MSG_CONT, /* 9.9.3.15 ESM message conta */
+ DE_EMM_GPRS_TIMER, /* 9.9.3.16 GPRS timer ,See subclause 10.5.7.3 in 3GPP TS 24.008 [6]. */
+ DE_EMM_GPRS_TIMER_2, /* 9.9.3.16A GPRS timer 2, See subclause 10.5.7.4 in 3GPP TS 24.008. */
+ DE_EMM_GPRS_TIMER_3, /* 9.9.3.16B GPRS timer 3, See subclause 10.5.7.4a in 3GPP TS 24.008. */
+ DE_EMM_ID_TYPE_2, /* 9.9.3.17 Identity type 2 ,See subclause 10.5.5.9 in 3GPP TS 24.008 [6]. */
+ DE_EMM_IMEISV_REQ, /* 9.9.3.18 IMEISV request ,See subclause 10.5.5.10 in 3GPP TS 24.008 [6]. */
+ DE_EMM_KSI_AND_SEQ_NO, /* 9.9.3.19 KSI and sequence number */
+ DE_EMM_MS_NET_CAP, /* 9.9.3.20 MS network capability ,See subclause 10.5.5.12 in 3GPP TS 24.008 [6]. */
+ DE_EMM_MS_NET_FEAT_SUP, /* 9.9.3.20A MS network feature support, See subclause 10.5.1.15 in 3GPP TS 24.008. */
+ DE_EMM_NAS_KEY_SET_ID, /* 9.9.3.21 NAS key set identifier (coded inline)*/
+ DE_EMM_NAS_MSG_CONT, /* 9.9.3.22 NAS message container */
+ DE_EMM_NAS_SEC_ALGS, /* 9.9.3.23 NAS security algorithms */
+ DE_EMM_NET_NAME, /* 9.9.3.24 Network name, See subclause 10.5.3.5a in 3GPP TS 24.008 [6]. */
+ DE_EMM_NONCE, /* 9.9.3.25 Nonce */
+ DE_EMM_PAGING_ID, /* 9.9.3.25A Paging identity */
+ DE_EMM_P_TMSI_SIGN, /* 9.9.3.26 P-TMSI signature, See subclause 10.5.5.8 in 3GPP TS 24.008 [6]. */
+ DE_EMM_SERV_TYPE, /* 9.9.3.27 Service type */
+ DE_EMM_SHORT_MAC, /* 9.9.3.28 Short MAC */
+ DE_EMM_TZ, /* 9.9.3.29 Time zone, See subclause 10.5.3.8 in 3GPP TS 24.008 [6]. */
+ DE_EMM_TZ_AND_T, /* 9.9.3.30 Time zone and time, See subclause 10.5.3.9 in 3GPP TS 24.008 [6]. */
+ DE_EMM_TMSI_STAT, /* 9.9.3.31 TMSI status, See subclause 10.5.5.4 in 3GPP TS 24.008 [6]. */
+ DE_EMM_TRAC_AREA_ID, /* 9.9.3.32 Tracking area identity */
+ DE_EMM_TRAC_AREA_ID_LST, /* 9.9.3.33 Tracking area identity list */
+ DE_EMM_UE_NET_CAP, /* 9.9.3.34 UE network capability */
+ DE_EMM_UE_RA_CAP_INF_UPD_NEED, /* 9.9.3.35 UE radio capability information update needed */
+ DE_EMM_UE_SEC_CAP, /* 9.9.3.36 UE security capability */
+ DE_EMM_EMERG_NUM_LST, /* 9.9.3.37 Emergency Number List */
+ DE_EMM_CLI, /* 9.9.3.38 CLI */
+ DE_EMM_SS_CODE, /* 9.9.3.39 SS Code */
+ DE_EMM_LCS_IND, /* 9.9.3.40 LCS indicator */
+ DE_EMM_LCS_CLIENT_ID, /* 9.9.3.41 LCS client identity */
+ DE_EMM_GEN_MSG_CONT_TYPE, /* 9.9.3.42 Generic message container type */
+ DE_EMM_GEN_MSG_CONT, /* 9.9.3.43 Generic message container */
+ DE_EMM_VOICE_DMN_PREF, /* 9.9.3.44 Voice domain preference and UEs usage setting */
+ DE_EMM_GUTI_TYPE, /* 9.9.3.45 GUTI type */
+ DE_EMM_NONE /* NONE */
}
nas_emm_elem_idx_t;
-
#endif
+
/* TODO: Update to latest spec */
/* 9.9.3 EPS Mobility Management (EMM) information elements
*/
@@ -698,7 +717,7 @@ de_emm_add_upd_res(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
guint32 curr_offset, bit_offset;
curr_offset = offset;
- bit_offset = (curr_offset<<3)+4;
+ bit_offset = (curr_offset<<3)+4;
proto_tree_add_bits_item(tree, hf_nas_eps_spare_bits, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
bit_offset += 2;
@@ -721,7 +740,7 @@ de_emm_add_upd_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
guint32 curr_offset, bit_offset;
curr_offset = offset;
- bit_offset = (curr_offset<<3)+4;
+ bit_offset = (curr_offset<<3)+4;
proto_tree_add_bits_item(tree, hf_nas_eps_spare_bits, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
bit_offset += 3;
@@ -872,7 +891,8 @@ static const value_string nas_eps_emm_cause_values[] = {
{ 0x18, "Security mode rejected, unspecified"},
{ 0x19, "Not authorized for this CSG"},
{ 0x1a, "Non-EPS authentication unacceptable"},
- { 0x27, "CS domain temporarily not available"},
+ { 0x23, "Requested service option not authorized in this PLMN"},
+ { 0x27, "CS service temporarily not available"},
{ 0x28, "No EPS bearer context activated"},
{ 0x5f, "Semantically incorrect message"},
{ 0x60, "Invalid mandatory information"},
@@ -884,6 +904,7 @@ static const value_string nas_eps_emm_cause_values[] = {
{ 0x6f, "Protocol error, unspecified"},
{ 0, NULL }
};
+static value_string_ext nas_eps_emm_cause_values_ext = VALUE_STRING_EXT_INIT(nas_eps_emm_cause_values);
static guint16
de_emm_cause(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
@@ -936,11 +957,11 @@ static const value_string nas_eps_emm_eps_att_type_vals[] = {
static char *
unpack_eps_mid_digits(tvbuff_t *tvb) {
- int length;
- guint8 octet;
- int i=0;
- int offset = 0;
- char *digit_str;
+ int length;
+ guint8 octet;
+ int i = 0;
+ int offset = 0;
+ char *digit_str;
length = tvb_length(tvb);
@@ -952,7 +973,7 @@ unpack_eps_mid_digits(tvbuff_t *tvb) {
offset++;
/* Loop on following octets to retrieve other identity digits */
- while ( offset < length ){
+ while ( offset < length ) {
octet = tvb_get_guint8(tvb,offset);
digit_str[i] = ((octet & 0x0f) + '0');
@@ -989,9 +1010,9 @@ static const value_string nas_eps_emm_type_of_id_vals[] = {
static guint16
de_emm_eps_mid(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guint8 octet;
- char *digit_str;
+ guint32 curr_offset;
+ guint8 octet;
+ char *digit_str;
tvbuff_t *new_tvb;
curr_offset = offset;
@@ -1000,7 +1021,7 @@ de_emm_eps_mid(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
/* Type of identity (octet 3) */
proto_tree_add_item(tree, hf_nas_eps_emm_odd_even, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_nas_eps_emm_type_of_id, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- switch (octet&0x7){
+ switch (octet&0x7) {
case 1:
/* IMSI */
new_tvb = tvb_new_subset(tvb, curr_offset, len, len );
@@ -1038,6 +1059,10 @@ de_emm_eps_mid(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
/*
* 9.9.3.12A EPS network feature support
*/
+static const true_false_string nas_eps_emm_esr_ps_value = {
+ "network supports use of EXTENDED SERVICE REQUEST to request for packet services",
+ "network does not support use of EXTENDED SERVICE REQUEST to request for packet services"
+};
static const value_string nas_eps_emm_cs_lcs_vals[] = {
{ 0, "no information about support of location services via CS domain is available"},
{ 1, "location services via CS domain not supported"},
@@ -1065,15 +1090,17 @@ de_emm_eps_net_feature_sup(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
curr_offset = offset;
bit_offset = curr_offset << 3;
- proto_tree_add_bits_item(tree, hf_nas_eps_spare_bits, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
- bit_offset += 3;
- proto_tree_add_bits_item(tree, hf_nas_eps_emm_cs_lcs_type, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(tree, hf_nas_eps_spare_bits, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
bit_offset += 2;
- proto_tree_add_bits_item(tree, hf_nas_eps_emm_epc_lcs_type, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(tree, hf_nas_eps_emm_esr_ps, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset += 1;
- proto_tree_add_bits_item(tree, hf_nas_eps_emm_emc_bs_type, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(tree, hf_nas_eps_emm_cs_lcs, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
+ bit_offset += 2;
+ proto_tree_add_bits_item(tree, hf_nas_eps_emm_epc_lcs, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset += 1;
- proto_tree_add_bits_item(tree, hf_nas_eps_emm_ims_vops_type, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(tree, hf_nas_eps_emm_emc_bs, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset += 1;
+ proto_tree_add_bits_item(tree, hf_nas_eps_emm_ims_vops, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
/*bit_offset += 1;*/
return len;
@@ -1121,8 +1148,8 @@ de_emm_esm_msg_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
{
proto_item *item;
proto_tree *sub_tree;
- tvbuff_t *new_tvb;
- guint32 curr_offset;
+ tvbuff_t *new_tvb;
+ guint32 curr_offset;
curr_offset = offset;
@@ -1143,6 +1170,16 @@ de_emm_esm_msg_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
* packet-gsm_a_gm.c
*/
/*
+ * 9.9.3.16A GPRS timer 2
+ * See subclause 10.5.7.4 in 3GPP TS 24.008.
+ * packet-gsm_a_gm.c
+ */
+/*
+ * 9.9.3.16B GPRS timer 3
+ * See subclause 10.5.7.4a in 3GPP TS 24.008.
+ * packet-gsm_a_gm.c
+ */
+/*
* 9.9.3.17 Identity type 2
* See subclause 10.5.5.9 in 3GPP TS 24.008 [6].
*/
@@ -1174,7 +1211,7 @@ static guint16
de_emm_nas_imeisv_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
guint32 curr_offset;
- int bit_offset;
+ int bit_offset;
curr_offset = offset;
@@ -1193,7 +1230,7 @@ static guint16
de_emm_nas_ksi_and_seq_no(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
guint32 curr_offset;
- int bit_offset;
+ int bit_offset;
curr_offset = offset;
bit_offset = curr_offset<<3;
@@ -1209,6 +1246,12 @@ de_emm_nas_ksi_and_seq_no(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
/*
* 9.9.3.20 MS network capability
* See subclause 10.5.5.12 in 3GPP TS 24.008 [6].
+ * packet-gsm_a_gm.c
+ */
+/*
+ * 9.9.3.20A MS network feature support
+ * See subclause 10.5.1.15 in 3GPP TS 24.008.
+ * packet-gsm_a_gm.c
*/
/*
* 9.9.3.21 NAS key set identifier
@@ -1216,10 +1259,9 @@ de_emm_nas_ksi_and_seq_no(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
/*
* Type of security context flag (TSC) (octet 1)
*/
-static const value_string nas_eps_tsc_vals[] = {
- { 0, "Native security context (for KSIasme)"},
- { 1, "Mapped security context (for KSIsgsn)"},
- { 0, NULL }
+static const true_false_string nas_eps_tsc_value = {
+ "Mapped security context (for KSIsgsn)",
+ "Native security context (for KSIasme)"
};
/* NAS key set identifier (octet 1) Bits 3 2 1 */
@@ -1247,7 +1289,7 @@ de_emm_nas_key_set_id_bits(tvbuff_t *tvb, proto_tree *tree, guint32 bit_offset,
bit_offset++;
/* NAS key set identifier (octet 1) */
item = proto_tree_add_bits_item(tree, hf_nas_eps_emm_nas_key_set_id, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
- if(add_string){
+ if (add_string) {
proto_item_append_text(item, "%s", add_string);
}
/*bit_offset+=3;*/
@@ -1285,8 +1327,8 @@ de_emm_nas_msg_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
{
proto_item *item;
proto_tree *sub_tree;
- tvbuff_t *new_tvb;
- guint32 curr_offset;
+ tvbuff_t *new_tvb;
+ guint32 curr_offset;
curr_offset = offset;
@@ -1299,7 +1341,7 @@ de_emm_nas_msg_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
sub_tree = proto_item_add_subtree(item, ett_nas_eps_nas_msg_cont);
new_tvb = tvb_new_subset(tvb, curr_offset, len, len );
- if(gsm_a_dtap_handle)
+ if (gsm_a_dtap_handle)
call_dissector(gsm_a_dtap_handle, new_tvb, gpinfo, sub_tree);
return(len);
@@ -1336,7 +1378,7 @@ static const value_string nas_eps_emm_toc_vals[] = {
static guint16
de_emm_nas_sec_alsgs(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- int bit_offset;
+ int bit_offset;
guint32 curr_offset;
curr_offset = offset;
@@ -1403,11 +1445,13 @@ de_emm_paging_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint3
/*
* 9.9.3.27 Service type
*/
-static const value_string nas_eps_service_type_vals[] = {
- { 0, "Mobile originating CS fallback or 1xCS fallback"},
- { 1, "Mobile terminating CS fallback or 1xCS fallback"},
- { 2, "Mobile originating CS fallback emergency call or 1xCS fallback emergency call"},
- { 0, NULL }
+static const range_string nas_eps_service_type_vals[] = {
+ { 0, 0, "Mobile originating CS fallback or 1xCS fallback"},
+ { 1, 1, "Mobile terminating CS fallback or 1xCS fallback"},
+ { 2, 2, "Mobile originating CS fallback emergency call or 1xCS fallback emergency call"},
+ { 3, 4, "Mobile originating CS fallback or 1xCS fallback"},
+ { 8, 11, "packet services via S1"},
+ { 0, 0, NULL }
};
/*
@@ -1486,16 +1530,16 @@ de_emm_trac_area_id_lst(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
tol = octet >> 5;
n_elem = (octet & 0x1f)+1;
item = proto_tree_add_item(tree, hf_nas_eps_emm_tai_n_elem, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- if(n_elem<16)
+ if (n_elem<16)
proto_item_append_text(item, " [+1 = %u element(s)]", n_elem);
curr_offset++;
- if (tol>2){
+ if (tol>2) {
proto_tree_add_text(tree, tvb, curr_offset, len-(curr_offset-offset) , "Unknown type of list ( Not in 3GPP TS 24.301 version 8.1.0 Release 8 )");
return len;
}
- switch(tol){
+ switch (tol) {
case 0:
/* MCC digit 2 MCC digit 1 octet 2
* MNC digit 3 MCC digit 3 octet 3
@@ -1510,7 +1554,7 @@ de_emm_trac_area_id_lst(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
* TAC k octet 2k+3*
* TAC k (continued) octet 2k+4*
*/
- if (len < (guint)(4+(n_elem*2))){
+ if (len < (guint)(4+(n_elem*2))) {
proto_tree_add_text(tree, tvb, curr_offset, len-1 , "[Wrong number of elements?]");
return len;
}
@@ -1529,12 +1573,12 @@ de_emm_trac_area_id_lst(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
curr_offset+=2;
break;
case 2:
- if (len< (guint)(1+(n_elem*5))){
+ if (len< (guint)(1+(n_elem*5))) {
proto_tree_add_text(tree, tvb, curr_offset, len-1 , "[Wrong number of elements?]");
return len;
}
- for (i=0; i < n_elem; i++){
+ for (i=0; i < n_elem; i++) {
/* type of list = "001" */
/* MCC digit 2 MCC digit 1 octet 2
* MNC digit 3 MCC digit 3 octet 3
@@ -1565,6 +1609,11 @@ static const true_false_string nas_eps_emm_ucs2_supp_flg_value = {
"The UE has no preference between the use of the default alphabet and the use of UCS2",
"The UE has a preference for the default alphabet"
};
+/* ACC-CSFB capability (octet 7, bit 5) */
+static const true_false_string nas_eps_emm_acc_csfb_cap_flg = {
+ "eNodeB-based access class control for CSFB supported",
+ "eNodeB-based access class control for CSFB not supported"
+};
/* LPP capability (octet 7, bit 4) */
static const true_false_string nas_eps_emm_lpp_cap_flg = {
"LTE Positioning Protocol supported",
@@ -1687,8 +1736,10 @@ de_emm_ue_net_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
if ((curr_offset - offset) >= len)
return (len);
- /* Bits 8 to 5 of octet 7 are spare and shall be coded as zero. */
- proto_tree_add_bits_item(tree, hf_nas_eps_spare_bits, tvb, (curr_offset<<3), 4, ENC_BIG_ENDIAN);
+ /* Bits 8 to 6 of octet 7 are spare and shall be coded as zero. */
+ proto_tree_add_bits_item(tree, hf_nas_eps_spare_bits, tvb, (curr_offset<<3), 3, ENC_BIG_ENDIAN);
+ /* ACC-CSFB capability (octet 7, bit 5) */
+ proto_tree_add_item(tree, hf_nas_eps_emm_acc_csfb_cap, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
/* LPP capability (octet 7, bit 4) */
proto_tree_add_item(tree, hf_nas_eps_emm_lpp_cap, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
/* LCS capability (octet 7, bit 3) */
@@ -1776,7 +1827,7 @@ de_emm_ue_sec_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
/* Octets 5, 6, and 7 are optional. If octet 5 is included,
* then also octet 6 shall be included and octet 7 may be included.
*/
- if(len==2)
+ if (len == 2)
return(len);
/* UMTS encryption algorithms supported (octet 5) */
@@ -1817,7 +1868,7 @@ de_emm_ue_sec_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
proto_tree_add_item(tree, hf_nas_eps_emm_uia7, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
curr_offset++;
- if(len==4)
+ if (len == 4)
return(len);
/* Bit 8 of octet 7 is spare and shall be coded as zero. */
@@ -1905,7 +1956,7 @@ de_emm_lcs_ind(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
static guint16
de_emm_lcs_client_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
tvbuff_t *new_tvb;
curr_offset = offset;
@@ -1923,11 +1974,13 @@ de_emm_lcs_client_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gu
/*
* 9.9.3.42 Generic message container type
*/
-static const value_string nas_eps_emm_gen_msg_cont_type_vals[] = {
- { 0, "Reserved"},
- { 1, "LTE Positioning Protocol (LPP) message container"},
- { 2, "Location services message container "},
- { 0, NULL }
+static const range_string nas_eps_emm_gen_msg_cont_type_vals[] = {
+ { 0, 0, "Reserved"},
+ { 1, 1, "LTE Positioning Protocol (LPP) message container"},
+ { 2, 2, "Location services message container"},
+ { 3, 127, "Unused"},
+ { 128, 255, "Reserved"},
+ { 0, 0, NULL }
};
static guint16
@@ -1951,7 +2004,7 @@ de_emm_gen_msg_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
{
proto_item *item;
proto_tree *sub_tree;
- tvbuff_t *new_tvb;
+ tvbuff_t *new_tvb;
item = proto_tree_add_item(tree, hf_nas_eps_gen_msg_cont, tvb, offset, len, ENC_NA);
sub_tree = proto_item_add_subtree(item, ett_nas_eps_gen_msg_cont);
@@ -1959,20 +2012,20 @@ de_emm_gen_msg_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
new_tvb = tvb_new_subset(tvb, offset, len, len);
switch (eps_nas_gen_msg_cont_type) {
- case 1:
- /* LPP */
- if (lpp_handle) {
- call_dissector(lpp_handle, new_tvb, pinfo, sub_tree);
- }
- break;
- case 2:
- /* Location services */
- if (gsm_a_dtap_handle) {
- call_dissector(gsm_a_dtap_handle, new_tvb, pinfo, sub_tree);
- }
- break;
- default:
- break;
+ case 1:
+ /* LPP */
+ if (lpp_handle) {
+ call_dissector(lpp_handle, new_tvb, pinfo, sub_tree);
+ }
+ break;
+ case 2:
+ /* Location services */
+ if (gsm_a_dtap_handle) {
+ call_dissector(gsm_a_dtap_handle, new_tvb, pinfo, sub_tree);
+ }
+ break;
+ default:
+ break;
}
return(len);
@@ -1982,6 +2035,29 @@ de_emm_gen_msg_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
* See subclause 10.5.5.28 in 3GPP TS 24.008 [13].
* packet-gsm_a_dtap.c
*/
+/*
+ * 9.9.3.45 GUTI type
+ */
+static const true_false_string nas_eps_emm_guti_type_value = {
+ "Mapped GUTI",
+ "Native GUTI"
+};
+
+static guint16
+de_emm_guti_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset, bit_offset;
+
+ curr_offset = offset;
+ bit_offset = (curr_offset<<3)+4;
+
+ proto_tree_add_bits_item(tree, hf_nas_eps_spare_bits, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
+ bit_offset += 3;
+ proto_tree_add_bits_item(tree, hf_nas_eps_emm_guti_type, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+
+ return (curr_offset - offset);
+}
/*
* 9.9.4 EPS Session Management (ESM) information elements
@@ -1999,18 +2075,18 @@ static guint16
de_esm_apn_aggr_max_br(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
guint32 curr_offset;
- guint8 octet;
+ guint8 octet;
guint32 dl_total = 0;
guint32 ul_total = 0;
- guint32 bitrate = 0;
+ guint32 bitrate = 0;
curr_offset = offset;
/* APN-AMBR for downlink octet 3 */
octet = tvb_get_guint8(tvb,curr_offset);
- if(octet==0){
+ if (octet == 0) {
proto_tree_add_uint_format(tree, hf_nas_eps_emm_apn_ambr_dl, tvb, curr_offset, 1, octet,
"Reserved");
- }else{
+ } else {
bitrate = calc_bitrate(octet);
dl_total += bitrate;
proto_tree_add_uint_format(tree, hf_nas_eps_emm_apn_ambr_dl, tvb, curr_offset, 1, octet,
@@ -2020,10 +2096,10 @@ de_esm_apn_aggr_max_br(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
/* APN-AMBR for uplink octet 4 */
octet = tvb_get_guint8(tvb,curr_offset);
- if(octet==0){
+ if (octet == 0) {
proto_tree_add_uint_format(tree, hf_nas_eps_emm_apn_ambr_ul, tvb, curr_offset, 1, octet,
"Reserved");
- }else{
+ } else {
bitrate = calc_bitrate(octet);
ul_total += bitrate;
proto_tree_add_uint_format(tree, hf_nas_eps_emm_apn_ambr_ul, tvb, curr_offset, 1, octet,
@@ -2034,10 +2110,10 @@ de_esm_apn_aggr_max_br(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
return(len);
/* APN-AMBR for downlink (extended) octet 5 */
octet = tvb_get_guint8(tvb,curr_offset);
- if(octet==0){
+ if (octet == 0) {
proto_tree_add_uint_format(tree, hf_nas_eps_emm_apn_ambr_dl_ext, tvb, curr_offset, 1, octet,
"Use the value indicated by the APN-AMBR for downlink");
- }else{
+ } else {
bitrate = calc_bitrate_ext(octet);
dl_total += (octet > 0x4a) ? bitrate*1000 : bitrate;
proto_tree_add_uint_format(tree, hf_nas_eps_emm_apn_ambr_dl_ext, tvb, curr_offset, 1, octet,
@@ -2062,10 +2138,10 @@ de_esm_apn_aggr_max_br(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
return(len);
/* APN-AMBR for uplink (extended) octet 6 */
octet = tvb_get_guint8(tvb,curr_offset);
- if(octet==0){
+ if (octet == 0) {
proto_tree_add_uint_format(tree, hf_nas_eps_emm_apn_ambr_ul_ext, tvb, curr_offset, 1, octet,
"Use the value indicated by the APN-AMBR for uplink");
- }else{
+ } else {
bitrate = calc_bitrate_ext(octet);
ul_total += (octet > 0x4a) ? bitrate*1000 : bitrate;
proto_tree_add_uint_format(tree, hf_nas_eps_emm_apn_ambr_ul_ext, tvb, curr_offset, 1, octet,
@@ -2090,10 +2166,10 @@ de_esm_apn_aggr_max_br(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
return(len);
/* APN-AMBR for downlink (extended-2) octet 7 */
octet = tvb_get_guint8(tvb,curr_offset);
- if((octet==0)||(octet==0xff)){
+ if ((octet == 0)||(octet == 0xff)) {
proto_tree_add_uint_format(tree, hf_nas_eps_emm_apn_ambr_dl_ext2, tvb, curr_offset, 1, octet,
"Use the value indicated by the APN-AMBR for downlink and APN-AMBR for downlink (extended)");
- }else{
+ } else {
dl_total += octet*256*1000;
proto_tree_add_uint_format(tree, hf_nas_eps_emm_apn_ambr_dl_ext2, tvb, curr_offset, 1, octet,
"APN-AMBR for downlink (extended-2) : %u Mbps",
@@ -2105,10 +2181,10 @@ de_esm_apn_aggr_max_br(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
return(len);
/* APN-AMBR for uplink (extended-2) octet 8 */
octet = tvb_get_guint8(tvb,curr_offset);
- if((octet==0)||(octet==0xff)){
+ if ((octet == 0)||(octet == 0xff)) {
proto_tree_add_uint_format(tree, hf_nas_eps_emm_apn_ambr_ul_ext2, tvb, curr_offset, 1, octet,
"Use the value indicated by the APN-AMBR for uplink and APN-AMBR for downlink (extended)");
- }else{
+ } else {
ul_total += octet*256*1000;
proto_tree_add_uint_format(tree, hf_nas_eps_emm_apn_ambr_ul_ext2, tvb, curr_offset, 1, octet,
"APN-AMBR for uplink (extended-2) : %u Mbps",
@@ -2120,6 +2196,11 @@ de_esm_apn_aggr_max_br(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
return(len);
}
/*
+ * 9.9.4.2A Connectivity type
+ * See subclause 10.5.6.19 in 3GPP TS 24.008.
+ * packet-gsm_a_gm.c
+ */
+/*
* 9.9.4.3 EPS quality of service
*/
@@ -2147,7 +2228,7 @@ static guint16
de_esm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
guint32 curr_offset;
- guint8 octet;
+ guint8 octet;
curr_offset = offset;
@@ -2158,10 +2239,10 @@ de_esm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offs
return(len);
/* Maximum bit rate for uplink octet 4 */
octet = tvb_get_guint8(tvb,curr_offset);
- if(octet==0){
+ if (octet == 0) {
proto_tree_add_uint_format(tree, hf_nas_eps_mbr_ul, tvb, curr_offset, 1, octet,
"UE->NW Subscribed maximum bit rate for uplink/ NW->UE Reserved");
- }else{
+ } else {
proto_tree_add_uint_format(tree, hf_nas_eps_mbr_ul, tvb, curr_offset, 1, octet,
"Maximum bit rate for uplink : %u kbps", calc_bitrate(octet));
}
@@ -2170,10 +2251,10 @@ de_esm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offs
return(len);
/* Maximum bit rate for downlink octet 5 */
octet = tvb_get_guint8(tvb,curr_offset);
- if(octet==0){
+ if (octet == 0) {
proto_tree_add_uint_format(tree, hf_nas_eps_mbr_dl, tvb, curr_offset, 1, octet,
"UE->NW Subscribed maximum bit rate for downlink/ NW->UE Reserved");
- }else{
+ } else {
proto_tree_add_uint_format(tree, hf_nas_eps_mbr_dl, tvb, curr_offset, 1, octet,
"Maximum bit rate for downlink : %u kbps", calc_bitrate(octet));
}
@@ -2190,7 +2271,7 @@ de_esm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offs
return(len);
/* Guaranteed bit rate for downlink octet 7 */
octet = tvb_get_guint8(tvb,curr_offset);
- proto_tree_add_uint_format(tree, hf_nas_eps_gbr_ul, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format(tree, hf_nas_eps_gbr_dl, tvb, curr_offset, 1, octet,
"Guaranteed bit rate for downlink : %u kbps", calc_bitrate(octet));
curr_offset++;
@@ -2198,10 +2279,10 @@ de_esm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offs
return(len);
/* Maximum bit rate for uplink (extended) octet 8 */
octet = tvb_get_guint8(tvb,curr_offset);
- if(octet==0){
+ if (octet == 0) {
proto_tree_add_uint_format(tree, hf_nas_eps_embr_ul, tvb, curr_offset, 1, octet,
"Use the value indicated by the maximum bit rate for uplink in octet 4.");
- }else{
+ } else {
proto_tree_add_uint_format(tree, hf_nas_eps_embr_ul, tvb, curr_offset, 1, octet,
"Maximum bit rate for uplink(extended) : %u %s",
calc_bitrate_ext(octet),
@@ -2212,11 +2293,11 @@ de_esm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offs
return(len);
/* Maximum bit rate for downlink (extended) octet 9 */
octet = tvb_get_guint8(tvb,curr_offset);
- if(octet==0){
- proto_tree_add_uint_format(tree, hf_nas_eps_embr_ul, tvb, curr_offset, 1, octet,
+ if (octet == 0) {
+ proto_tree_add_uint_format(tree, hf_nas_eps_embr_dl, tvb, curr_offset, 1, octet,
"Use the value indicated by the maximum bit rate for downlink in octet 5.");
- }else{
- proto_tree_add_uint_format(tree, hf_nas_eps_embr_ul, tvb, curr_offset, 1, octet,
+ } else {
+ proto_tree_add_uint_format(tree, hf_nas_eps_embr_dl, tvb, curr_offset, 1, octet,
"Maximum bit rate for downlink(extended) : %u %s",
calc_bitrate_ext(octet),
(octet > 0x4a) ? "Mbps" : "kbps");
@@ -2226,11 +2307,11 @@ de_esm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offs
return(len);
/* Guaranteed bit rate for uplink (extended) octet 10 */
octet = tvb_get_guint8(tvb,curr_offset);
- if(octet==0){
- proto_tree_add_uint_format(tree, hf_nas_eps_embr_ul, tvb, curr_offset, 1, octet,
+ if (octet == 0) {
+ proto_tree_add_uint_format(tree, hf_nas_eps_egbr_ul, tvb, curr_offset, 1, octet,
"Use the value indicated by the Guaranteed bit rate for uplink in octet 6.");
- }else{
- proto_tree_add_uint_format(tree, hf_nas_eps_embr_ul, tvb, curr_offset, 1, octet,
+ } else {
+ proto_tree_add_uint_format(tree, hf_nas_eps_egbr_ul, tvb, curr_offset, 1, octet,
"Guaranteed bit rate for uplink(extended) : %u %s",
calc_bitrate_ext(octet),
(octet > 0x4a) ? "Mbps" : "kbps");
@@ -2240,11 +2321,11 @@ de_esm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offs
return(len);
/* Guaranteed bit rate for downlink (extended) octet 11 */
octet = tvb_get_guint8(tvb,curr_offset);
- if(octet==0){
- proto_tree_add_uint_format(tree, hf_nas_eps_embr_ul, tvb, curr_offset, 1, octet,
+ if (octet == 0) {
+ proto_tree_add_uint_format(tree, hf_nas_eps_egbr_dl, tvb, curr_offset, 1, octet,
"Use the value indicated by the Guaranteed bit rate for downlink in octet 7.");
- }else{
- proto_tree_add_uint_format(tree, hf_nas_eps_embr_ul, tvb, curr_offset, 1, octet,
+ } else {
+ proto_tree_add_uint_format(tree, hf_nas_eps_egbr_dl, tvb, curr_offset, 1, octet,
"Guaranteed bit rate for downlink(extended) : %u %s",
calc_bitrate_ext(octet),
(octet > 0x4a) ? "Mbps" : "kbps");
@@ -2289,6 +2370,7 @@ static const value_string nas_eps_esm_cause_vals[] = {
{ 0x37, "Multiple PDN connections for a given APN not allowed"},
{ 0x38, "Collision with network initiated request"},
{ 0x3b, "Unsupported QCI value"},
+ { 0x3c, "Bearer handling not supported"},
{ 0x51, "Invalid PTI value"},
{ 0x5f, "Semantically incorrect message"},
{ 0x60, "Invalid mandatory information"},
@@ -2301,6 +2383,7 @@ static const value_string nas_eps_esm_cause_vals[] = {
{ 0x70, "APN restriction value incompatible with active EPS bearer context"},
{ 0, NULL }
};
+static value_string_ext nas_eps_esm_cause_vals_ext = VALUE_STRING_EXT_INIT(nas_eps_esm_cause_vals);
static guint16
de_esm_cause(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
@@ -2413,7 +2496,7 @@ static guint16
de_esm_pdn_addr(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
guint32 curr_offset;
- guint8 pdn_type;
+ guint8 pdn_type;
curr_offset = offset;
@@ -2423,7 +2506,7 @@ de_esm_pdn_addr(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
proto_tree_add_item(tree, hf_nas_eps_esm_pdn_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
curr_offset++;
- switch(pdn_type){
+ switch (pdn_type) {
case 1:
/* IPv4 */
proto_tree_add_item(tree, hf_nas_eps_esm_pdn_ipv4, tvb, curr_offset, 4, ENC_BIG_ENDIAN);
@@ -2488,11 +2571,11 @@ static const value_string nas_eps_esm_pdn_type_values[] = {
* See subclause 10.5.6.17 in 3GPP TS 24.008
*/
static const value_string nas_eps_esm_request_type_values[] = {
- { 0x1, "initial request" },
- { 0x2, "Handover" },
- { 0x3, "Unused; shall be interpreted as initial request if received by the network" },
- { 0x4, "emergency" },
- { 0, NULL }
+ { 0x1, "initial request" },
+ { 0x2, "Handover" },
+ { 0x3, "Unused; shall be interpreted as initial request if received by the network" },
+ { 0x4, "emergency" },
+ { 0, NULL }
};
/*
@@ -2534,10 +2617,13 @@ guint16 (*emm_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
NULL, /* 9.9.3.14 EPS update type (Inline)*/
de_emm_esm_msg_cont, /* 9.9.3.15 ESM message conta */
NULL, /* 9.9.3.16 GPRS timer ,See subclause 10.5.7.3 in 3GPP TS 24.008 [6]. (packet-gsm_a_gm.c)*/
+ NULL, /* 9.9.3.16A GPRS timer 2, See subclause 10.5.7.4 in 3GPP TS 24.008. (packet-gsm_a_gm.c)*/
+ NULL, /* 9.9.3.16B GPRS timer 3, See subclause 10.5.7.4a in 3GPP TS 24.008. (packet-gsm_a_gm.c)*/
NULL, /* 9.9.3.17 Identity type 2 ,See subclause 10.5.5.9 in 3GPP TS 24.008 [6]. */
de_emm_nas_imeisv_req, /* 9.9.3.18 IMEISV request ,See subclause 10.5.5.10 in 3GPP TS 24.008 [6]. */
de_emm_nas_ksi_and_seq_no, /* 9.9.3.19 KSI and sequence number */
NULL, /* 9.9.3.20 MS network capability ,See subclause 10.5.5.12 in 3GPP TS 24.008 [6].(packet-gsm_a_gm.c) */
+ NULL, /* 9.9.3.20A MS network feature support, See subclause 10.5.1.15 in 3GPP TS 24.008.(packet-gsm_a_gm.c) */
de_emm_nas_key_set_id, /* 9.9.3.21 NAS key set identifier (Coded Inline) */
de_emm_nas_msg_cont, /* 9.9.3.22 NAS message container */
de_emm_nas_sec_alsgs, /* 9.9.3.23 NAS security algorithms */
@@ -2563,6 +2649,7 @@ guint16 (*emm_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
de_emm_gen_msg_cont_type, /* 9.9.3.42 Generic message container type */
de_emm_gen_msg_cont, /* 9.9.3.43 Generic message container */
NULL, /* 9.9.3.44 Voice domain preference and UE's usage setting */
+ de_emm_guti_type, /* 9.9.3.45 GUTI type */
NULL, /* NONE */
};
@@ -2570,6 +2657,7 @@ guint16 (*emm_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
const value_string nas_esm_elem_strings[] = {
{ 0x00, "Access point name" }, /* 9.9.4.1 Access point name */
{ 0x00, "APN aggregate maximum bit rate" }, /* 9.9.4.2 APN aggregate maximum bit rate */
+ { 0x00, "Connectivity type" }, /* 9.9.4.2A Connectivity type */
{ 0x00, "EPS quality of service" }, /* 9.9.4.3 EPS quality of service */
{ 0x00, "ESM cause" }, /* 9.9.4.4 ESM cause */
{ 0x00, "ESM information transfer flag" }, /* 9.9.4.5 ESM information transfer flag */
@@ -2597,6 +2685,7 @@ typedef enum
{
DE_ESM_APN, /* 9.9.4.1 Access point name */
DE_ESM_APN_AGR_MAX_BR, /* 9.9.4.2 APN aggregate maximum bit rate */
+ DE_ESM_CONNECTIVITY_TYPE, /* 9.9.4.2A Connectivity type */
DE_ESM_EPS_QOS, /* 9.9.4.3 EPS quality of service */
DE_ESM_CAUSE, /* 9.9.4.4 ESM cause */
DE_ESM_INF_TRF_FLG, /* 9.9.4.5 ESM information transfer flag */
@@ -2621,6 +2710,7 @@ nas_esm_elem_idx_t;
guint16 (*esm_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string, int string_len) = {
NULL, /* 9.9.4.1 Access point name */
de_esm_apn_aggr_max_br, /* 9.9.4.2 APN aggregate maximum bit rate */
+ NULL, /* 9.9.4.2A Connectivity type */
de_esm_qos, /* 9.9.4.3 EPS quality of service */
de_esm_cause, /* 9.9.4.4 ESM cause */
de_esm_inf_trf_flg, /* 9.9.4.5 ESM information transfer flag */
@@ -2654,7 +2744,7 @@ nas_emm_attach_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* Spare half octet Spare half octet 9.9.2.7 M V 1/2 */
bit_offset = curr_offset<<3;
@@ -2694,6 +2784,8 @@ nas_emm_attach_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
ELEM_OPT_TLV(0x64, NAS_PDU_TYPE_EMM, DE_EMM_EPS_NET_FEATURE_SUP, NULL);
/* F- Additional update result Additional update result 9.9.3.0A O TV 1 */
ELEM_OPT_TV_SHORT( 0xF0 , NAS_PDU_TYPE_EMM, DE_EMM_ADD_UPD_RES, NULL );
+ /* 5E T3412 extended value GPRS timer 3 9.9.3.16B O TLV 3 */
+ ELEM_OPT_TLV(0x5E, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_3, " - T3412 extended value");
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -2708,7 +2800,7 @@ nas_emm_attach_comp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* ESM message container ESM message container 9.9.3.15 M LV-E 2-n */
ELEM_MAND_LV_E(NAS_PDU_TYPE_EMM, DE_EMM_ESM_MSG_CONT, NULL);
@@ -2728,12 +2820,16 @@ nas_emm_attach_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* * EMM cause EMM cause 9.9.3.9 M V 1 */
ELEM_MAND_V(NAS_PDU_TYPE_EMM, DE_EMM_CAUSE, NULL);
/* 78 ESM message container ESM message container 9.9.3.15 O TLV-E 4-n */
ELEM_OPT_TLV_E(0x78, NAS_PDU_TYPE_EMM, DE_EMM_ESM_MSG_CONT, NULL);
+ /* 5F T3346 value GPRS timer 2 9.9.3.16A O TLV 3 */
+ ELEM_OPT_TLV(0x5F, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2, " - T3346 value");
+ /* 16 T3402 value GPRS timer 2 9.9.3.16A O TLV 3 */
+ ELEM_OPT_TLV(0x16, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2, " - T3402 value");
EXTRANEOUS_DATA_CHECK(curr_len, 0);
@@ -2749,7 +2845,7 @@ nas_emm_attach_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
bit_offset = curr_offset<<3;
@@ -2769,7 +2865,7 @@ nas_emm_attach_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
curr_len--;
curr_offset++;
/* Old GUTI or IMSI EPS mobile identity 9.9.3.12 M LV 5-12 */
- ELEM_MAND_LV(NAS_PDU_TYPE_EMM, DE_EMM_EPS_MID, " - Old GUTI or IMSI");
+ ELEM_MAND_LV(NAS_PDU_TYPE_EMM, DE_EMM_EPS_MID, NULL);
/* UE network capability UE network capability 9.9.3.34 M LV 3-14 */
ELEM_MAND_LV(NAS_PDU_TYPE_EMM, DE_EMM_UE_NET_CAP, NULL);
/* ESM message container ESM message container 9.9.3.15 M LV-E 2-n */
@@ -2798,21 +2894,27 @@ nas_emm_attach_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
ELEM_OPT_TV_SHORT( 0xF0 , NAS_PDU_TYPE_EMM, DE_EMM_ADD_UPD_TYPE, NULL );
/* 5D Voice domain preference and UE's usage setting Voice domain preference and UE's usage setting 9.9.3.44 O TLV 3 */
ELEM_OPT_TLV(0x5D, GSM_A_PDU_TYPE_GM, DE_VOICE_DOMAIN_PREF, NULL);
-
+ /* D- Device properties Device properties 9.9.2.0A O TV 1 */
+ ELEM_OPT_TV_SHORT(0xD0 , GSM_A_PDU_TYPE_GM, DE_DEVICE_PROPERTIES, NULL);
+ /* E- Old GUTI type GUTI type 9.9.3.45 O TV 1 */
+ ELEM_OPT_TV_SHORT(0xE0 , NAS_PDU_TYPE_EMM, DE_EMM_GUTI_TYPE, " - Old GUTI type");
+ /* C- MS network feature support MS network feature support 9.9.3.20A 0 TV 1 */
+ ELEM_OPT_TV_SHORT(0xC0 , GSM_A_PDU_TYPE_COMMON, DE_MS_NET_FEAT_SUP, NULL);
+
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
* 8.2.5 Authentication failure
*/
static void
-nas_emm_attach_fail(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_emm_auth_fail(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
guint32 curr_offset;
guint32 consumed;
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* EMM cause EMM cause 9.9.3.9 M V 1 */
ELEM_MAND_V(NAS_PDU_TYPE_EMM, DE_EMM_CAUSE, NULL);
@@ -2837,7 +2939,7 @@ nas_emm_auth_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint3
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
bit_offset = curr_offset<<3;
/* H1 */
@@ -2878,7 +2980,7 @@ nas_emm_auth_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/*
* Authentication response parameter 9.9.3.4 M LV 5-17
@@ -2900,7 +3002,7 @@ nas_emm_cs_serv_not(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* Paging identity Paging identity 9.9.3.25A M V 1 */
ELEM_MAND_V(NAS_PDU_TYPE_EMM, DE_EMM_PAGING_ID, NULL);
@@ -2935,7 +3037,7 @@ nas_emm_detach_req_UL(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, g
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
proto_tree_add_text(tree, tvb, curr_offset, len,"Up link");
/* NAS key set identifier NAS key set identifier 9.9.3.21 M V 1/2 */
@@ -2953,7 +3055,7 @@ nas_emm_detach_req_UL(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, g
curr_offset++;
/* GUTI or IMSI EPS mobile identity 9.9.3.12 M LV 5-12 */
- ELEM_MAND_LV(NAS_PDU_TYPE_EMM, DE_EMM_EPS_MID, " - GUTI or IMSI");
+ ELEM_MAND_LV(NAS_PDU_TYPE_EMM, DE_EMM_EPS_MID, NULL);
return;
}
@@ -2968,7 +3070,7 @@ nas_emm_detach_req_DL(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, g
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
proto_tree_add_text(tree, tvb, curr_offset, len,"Down link");
/* Spare half octet Spare half octet 9.9.2.7 M V 1/2 */
@@ -2987,7 +3089,7 @@ nas_emm_detach_req_DL(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, g
curr_offset++;
/* No more mandatory elements */
- if (curr_len==0)
+ if (curr_len == 0)
return;
/* EMM cause EMM cause 9.9.3.9 O TV 2 */
@@ -3006,11 +3108,11 @@ nas_emm_detach_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
curr_offset = offset;
/*curr_len = len;*/
- if (pinfo){
- if(pinfo->link_dir==P2P_DIR_UL){
+ if (pinfo) {
+ if (pinfo->link_dir == P2P_DIR_UL) {
nas_emm_detach_req_UL(tvb, tree, pinfo, offset, len);
return;
- }else if(pinfo->link_dir==P2P_DIR_DL){
+ }else if (pinfo->link_dir == P2P_DIR_DL) {
nas_emm_detach_req_DL(tvb, tree, pinfo, offset, len);
return;
}
@@ -3036,7 +3138,7 @@ nas_emm_dl_nas_trans(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gu
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->link_dir = P2P_DIR_DL;
@@ -3056,7 +3158,7 @@ nas_emm_emm_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* 43 Full name for network Network name 9.9.3.24 O TLV 3-? */
ELEM_OPT_TLV(0x43, GSM_A_PDU_TYPE_DTAP, DE_NETWORK_NAME, " - Full name for network");
@@ -3084,7 +3186,7 @@ nas_emm_emm_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* EMM cause EMM cause 9.9.3.9 M V 1 */
ELEM_MAND_V(NAS_PDU_TYPE_EMM, DE_EMM_CAUSE, NULL);
@@ -3103,7 +3205,7 @@ nas_emm_ext_serv_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gu
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
bit_offset = curr_offset<<3;
@@ -3123,6 +3225,8 @@ nas_emm_ext_serv_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gu
ELEM_OPT_TV_SHORT(0xb0, NAS_PDU_TYPE_EMM, DE_EMM_CSFB_RESP, NULL);
/* 57 EPS bearer context status EPS bearer context status 9.9.2.1 O TLV 4 */
ELEM_OPT_TLV(0x57, NAS_PDU_TYPE_COMMON, DE_EPS_CMN_EPS_BE_CTX_STATUS, NULL);
+ /* D- Device properties Device properties 9.9.2.0A O TV 1 */
+ ELEM_OPT_TV_SHORT(0xD0 , GSM_A_PDU_TYPE_GM, DE_DEVICE_PROPERTIES, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -3137,7 +3241,7 @@ nas_emm_guti_realloc_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* GUTI EPS mobile identity 9.9.3.12 M LV 12 */
ELEM_MAND_LV(NAS_PDU_TYPE_EMM, DE_EMM_EPS_MID, " - GUTI");
@@ -3164,7 +3268,7 @@ nas_emm_id_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
bit_offset=curr_offset<<3;
@@ -3196,7 +3300,7 @@ nas_emm_id_res(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* Mobile identity Mobile identity 9.9.2.3 M LV 4-10 */
ELEM_MAND_LV(NAS_PDU_TYPE_COMMON, DE_EPS_CMN_MOB_ID, NULL);
@@ -3217,7 +3321,7 @@ nas_emm_sec_mode_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gu
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* Selected NAS security algorithms NAS security algorithms 9.9.3.23 M V 1 */
ELEM_MAND_V(NAS_PDU_TYPE_EMM, DE_EMM_NAS_SEC_ALGS, " - Selected NAS security algorithms");
@@ -3256,7 +3360,7 @@ nas_emm_sec_mode_comp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, g
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
if (curr_len == 0)
return;
@@ -3277,7 +3381,7 @@ nas_emm_sec_mode_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gu
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* EMM cause EMM cause 9.9.3.9 M V 1 */
ELEM_MAND_V(NAS_PDU_TYPE_EMM, DE_EMM_CAUSE, NULL);
@@ -3296,7 +3400,7 @@ nas_emm_sec_prot_msg(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gu
guint8 security_header_type;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* Security header type Security header type 9.3.1 M V 1/2 */
security_header_type = tvb_get_guint8(tvb,offset)>>4;
@@ -3305,16 +3409,16 @@ nas_emm_sec_prot_msg(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gu
proto_tree_add_item(tree, hf_gsm_a_L3_protocol_discriminator, tvb, 0, 1, ENC_BIG_ENDIAN);
offset++;
/* Message authentication code Message authentication code 9.5 M V 4 */
- if (security_header_type !=0){
+ if (security_header_type != 0) {
/* Message authentication code */
proto_tree_add_item(tree, hf_nas_eps_msg_auth_code, tvb, offset, 4, ENC_BIG_ENDIAN);
offset+=4;
- if ((security_header_type==2)||(security_header_type==4)){
+ if ((security_header_type == 2)||(security_header_type == 4)) {
/* Integrity protected and ciphered = 2, Integrity protected and ciphered with new EPS security context = 4 */
proto_tree_add_text(tree, tvb, offset, len-5,"Ciphered message");
return offset;
}
- }else{
+ } else {
proto_tree_add_text(tree, tvb, offset, len,"Not a security protected message");
return offset;
}
@@ -3336,13 +3440,14 @@ nas_emm_serv_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint3
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* EMM cause EMM cause 9.9.3.9 M V 1 */
ELEM_MAND_V(NAS_PDU_TYPE_EMM, DE_EMM_CAUSE, NULL);
-
/* 5B T3442 value GPRS timer 9.9.3.16 C TV 2 */
ELEM_OPT_TV(0x5b, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER, " - T3442 value");
+ /* 5F T3346 value GPRS timer 2 9.9.3.16A O TLV 3 */
+ ELEM_OPT_TLV(0x5F, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2, " - T3346 value");
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -3366,7 +3471,7 @@ nas_emm_service_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* KSI and sequence number 9.9.3.19 M V 1 */
ELEM_MAND_V(NAS_PDU_TYPE_EMM, DE_EMM_KSI_AND_SEQ_NO, NULL);
@@ -3388,7 +3493,7 @@ nas_emm_trac_area_upd_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* Spare half octet Spare half octet 9.9.2.7 M V 1/2 */
bit_offset = curr_offset<<3;
@@ -3403,7 +3508,7 @@ nas_emm_trac_area_upd_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
curr_len--;
curr_offset++;
/* No more mandatory elements */
- if (curr_len==0)
+ if (curr_len == 0)
return;
/* 5A T3412 value GPRS timer 9.9.3.16 O TV 2 */
ELEM_OPT_TV(0x5a, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER, " - T3412 value");
@@ -3431,6 +3536,8 @@ nas_emm_trac_area_upd_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
ELEM_OPT_TLV(0x64, NAS_PDU_TYPE_EMM, DE_EMM_EPS_NET_FEATURE_SUP, NULL);
/* F- Additional update result Additional update result 9.9.3.0A O TV 1 */
ELEM_OPT_TV_SHORT( 0xF0 , NAS_PDU_TYPE_EMM, DE_EMM_ADD_UPD_RES, NULL );
+ /* 5E T3412 extended value GPRS timer 3 9.9.3.16B O TLV 3 */
+ ELEM_OPT_TLV(0x5E, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_3, " - T3412 extended value");
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -3449,10 +3556,12 @@ nas_emm_trac_area_upd_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* EMM cause EMM cause 9.9.3.9 M V 1 */
ELEM_MAND_V(NAS_PDU_TYPE_EMM, DE_EMM_CAUSE, NULL);
+ /* 5F T3346 value GPRS timer 2 9.9.3.16A O TLV 3 */
+ ELEM_OPT_TLV(0x5F, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2, " - T3346 value");
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -3468,7 +3577,7 @@ nas_emm_trac_area_upd_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
bit_offset = curr_offset<<3;
@@ -3525,6 +3634,12 @@ nas_emm_trac_area_upd_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
ELEM_OPT_TV_SHORT( 0xF0 , NAS_PDU_TYPE_EMM, DE_EMM_ADD_UPD_TYPE, NULL );
/* 5D Voice domain preference and UE's usage setting Voice domain preference and UE's usage setting 9.9.3.44 O TLV 3 */
ELEM_OPT_TLV(0x5D, GSM_A_PDU_TYPE_GM, DE_VOICE_DOMAIN_PREF, NULL);
+ /* E- Old GUTI type GUTI type 9.9.3.45 O TV 1 */
+ ELEM_OPT_TV_SHORT(0xE0 , NAS_PDU_TYPE_EMM, DE_EMM_GUTI_TYPE, " - Old GUTI type");
+ /* D- Device properties Device properties 9.9.2.0A O TV 1 */
+ ELEM_OPT_TV_SHORT(0xD0 , GSM_A_PDU_TYPE_GM, DE_DEVICE_PROPERTIES, NULL);
+ /* C- MS network feature support MS network feature support 9.9.3.20A 0 TV 1 */
+ ELEM_OPT_TV_SHORT(0xC0 , GSM_A_PDU_TYPE_COMMON, DE_MS_NET_FEAT_SUP, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -3540,7 +3655,7 @@ nas_emm_ul_nas_trans(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gu
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->link_dir = P2P_DIR_UL;
@@ -3561,7 +3676,7 @@ nas_emm_dl_gen_nas_trans(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->link_dir = P2P_DIR_DL;
@@ -3588,7 +3703,7 @@ nas_emm_ul_gen_nas_trans(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
pinfo->link_dir = P2P_DIR_UL;
@@ -3618,7 +3733,7 @@ nas_esm_act_ded_eps_bearer_ctx_acc(tvbuff_t *tvb, proto_tree *tree, packet_info
guint32 consumed;
guint curr_len;
- if(len==0)
+ if (len == 0)
return;
curr_offset = offset;
@@ -3644,7 +3759,7 @@ nas_esm_act_ded_eps_bearer_ctx_rej(tvbuff_t *tvb, proto_tree *tree, packet_info
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* This message is sent by UE to the network to reject activation of a dedicated EPS bearer context */
pinfo->link_dir = P2P_DIR_UL;
@@ -3667,7 +3782,7 @@ nas_esm_act_ded_eps_bearer_ctx_req(tvbuff_t *tvb, proto_tree *tree, packet_info
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* This message is sent by the network to the UE to request activation of a dedicated EPS bearer context... */
pinfo->link_dir = P2P_DIR_DL;
@@ -3715,9 +3830,9 @@ nas_esm_act_def_eps_bearer_ctx_acc(tvbuff_t *tvb, proto_tree *tree, packet_info
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
- if(len==0)
+ if (len == 0)
return;
/* This message is sent by the UE to the network to acknowledge activation of a default EPS bearer context */
@@ -3740,7 +3855,7 @@ nas_esm_act_def_eps_bearer_ctx_rej(tvbuff_t *tvb, proto_tree *tree, packet_info
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* This message is sent by UE to the network to reject activation of a default EPS bearer context. */
pinfo->link_dir = P2P_DIR_UL;
@@ -3764,7 +3879,7 @@ nas_esm_act_def_eps_bearer_ctx_req(tvbuff_t *tvb, proto_tree *tree, packet_info
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* This message is sent by the network to the UE to request activation of a default EPS bearer context. */
pinfo->link_dir = P2P_DIR_DL;
@@ -3791,6 +3906,8 @@ nas_esm_act_def_eps_bearer_ctx_req(tvbuff_t *tvb, proto_tree *tree, packet_info
ELEM_OPT_TV( 0x58 , NAS_PDU_TYPE_ESM, DE_ESM_CAUSE , NULL );
/* 27 Protocol configuration options Protocol configuration options 9.9.4.11 O TLV 3-253 */
ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL );
+ /* B- Connectivity type Connectivity type 9.9.4.2A 0 TV 1 */
+ ELEM_OPT_TV_SHORT(0xB0 , GSM_A_PDU_TYPE_GM, DE_SM_CONNECTIVITY_TYPE, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -3806,7 +3923,7 @@ nas_esm_bearer_res_all_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* This message is sent by the network to the UE to reject the allocation of a dedicated bearer resource. */
pinfo->link_dir = P2P_DIR_DL;
@@ -3815,6 +3932,8 @@ nas_esm_bearer_res_all_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
ELEM_MAND_V(NAS_PDU_TYPE_ESM, DE_ESM_CAUSE, NULL);
/* 27 Protocol configuration options Protocol configuration options 9.9.4.11 O TLV 3-253 */
ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL );
+ /* 37 T3396 value GPRS timer 3 9.9.3.16B O TLV 3 */
+ ELEM_OPT_TLV(0x37, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_3, " - T3396 value");
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -3830,7 +3949,7 @@ nas_esm_bearer_res_all_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* This message is sent by the UE to the network to request the allocation of a dedicated bearer resource. */
pinfo->link_dir = P2P_DIR_UL;
@@ -3852,6 +3971,8 @@ nas_esm_bearer_res_all_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
ELEM_MAND_LV(NAS_PDU_TYPE_ESM, DE_ESM_EPS_QOS, " - Required traffic flow QoS");
/* 27 Protocol configuration options Protocol configuration options 9.9.4.11 O TLV 3-253 */
ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL );
+ /* C- Device properties Device properties 9.9.2.0A O TV 1 */
+ ELEM_OPT_TV_SHORT(0xC0 , GSM_A_PDU_TYPE_GM, DE_DEVICE_PROPERTIES, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -3866,7 +3987,7 @@ nas_esm_bearer_res_mod_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* This message is sent by the network to the UE to reject the modification of a dedicated bearer resource. */
pinfo->link_dir = P2P_DIR_DL;
@@ -3875,6 +3996,8 @@ nas_esm_bearer_res_mod_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
ELEM_MAND_V(NAS_PDU_TYPE_ESM, DE_ESM_CAUSE, NULL);
/* 27 Protocol configuration options Protocol configuration options 9.9.4.11 O TLV 3-253 */
ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL );
+ /* 37 T3396 value GPRS timer 3 9.9.3.16B O TLV 3 */
+ ELEM_OPT_TLV(0x37, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_3, " - T3396 value");
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -3889,7 +4012,7 @@ nas_esm_bearer_res_mod_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* This message is sent by the UE to the network to request the modification of a dedicated bearer resource. */
pinfo->link_dir = P2P_DIR_UL;
@@ -3912,6 +4035,8 @@ nas_esm_bearer_res_mod_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
ELEM_OPT_TV( 0x58 , NAS_PDU_TYPE_ESM, DE_ESM_CAUSE , NULL );
/* 27 Protocol configuration options Protocol configuration options 9.9.4.11 O TLV 3-253 */
ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL );
+ /* C- Device properties Device properties 9.9.2.0A O TV 1 */
+ ELEM_OPT_TV_SHORT(0xC0 , GSM_A_PDU_TYPE_GM, DE_DEVICE_PROPERTIES, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -3926,9 +4051,9 @@ nas_esm_deact_eps_bearer_ctx_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *p
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
- if(len==0)
+ if (len == 0)
return;
/* This message is sent by the UE to acknowledge deactivation of the EPS bearer context... */
@@ -3950,7 +4075,7 @@ nas_esm_deact_eps_bearer_ctx_req(tvbuff_t *tvb, proto_tree *tree, packet_info *p
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* This message is sent by the network to request deactivation of an active EPS bearer context. */
pinfo->link_dir = P2P_DIR_DL;
@@ -3974,7 +4099,7 @@ nas_esm_inf_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -3989,9 +4114,9 @@ nas_esm_inf_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
- if(len==0)
+ if (len == 0)
return;
/* This message is sent by the UE to the network in response to an ESM INFORMATION REQUEST... */
@@ -4015,7 +4140,7 @@ nas_esm_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* ESM cause ESM cause 9.9.4.4 M V 1 */
ELEM_MAND_V(NAS_PDU_TYPE_ESM, DE_ESM_CAUSE, NULL);
@@ -4033,9 +4158,9 @@ nas_esm_mod_eps_bearer_ctx_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
- if(len==0)
+ if (len == 0)
return;
/* This message is sent by the UE to the network to acknowledge the modification of an active EPS bearer context. */
@@ -4057,7 +4182,7 @@ nas_esm_mod_eps_bearer_ctx_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* This message is sent by the UE or the network to reject a modification of an active EPS bearer context. */
pinfo->link_dir = P2P_DIR_UL;
@@ -4080,9 +4205,9 @@ nas_esm_mod_eps_bearer_ctx_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
- if(len==0)
+ if (len == 0)
return;
/*This message is sent by the network to inform the UE about events which are relevant for the upper layer... */
@@ -4118,7 +4243,7 @@ nas_esm_notification(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gu
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* Notification indicator Notification indicator 9.9.4.7A M LV 2 */
ELEM_MAND_LV(NAS_PDU_TYPE_ESM, DE_ESM_NOTIF_IND, NULL);
@@ -4137,7 +4262,7 @@ nas_esm_pdn_con_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/*This message is sent by the network to the UE to reject establishment of a PDN connection. */
pinfo->link_dir = P2P_DIR_DL;
@@ -4146,6 +4271,8 @@ nas_esm_pdn_con_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
ELEM_MAND_V(NAS_PDU_TYPE_ESM, DE_ESM_CAUSE, NULL);
/* 27 Protocol configuration options Protocol configuration options 9.9.4.11 O TLV 3-253 */
ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL );
+ /* 37 T3396 value GPRS timer 3 9.9.3.16B O TLV 3 */
+ ELEM_OPT_TLV(0x37, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_3, " - T3396 value");
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -4159,10 +4286,10 @@ nas_esm_pdn_con_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
guint32 curr_offset;
guint32 consumed;
guint curr_len;
- int bit_offset;
+ int bit_offset;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/*This message is sent by the UE to the network to initiate establishment of a PDN connection. */
pinfo->link_dir = P2P_DIR_UL;
@@ -4187,6 +4314,8 @@ nas_esm_pdn_con_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
ELEM_OPT_TLV( 0x28 , GSM_A_PDU_TYPE_GM, DE_ACC_POINT_NAME , NULL );
/* 27 Protocol configuration options 9.9.4.11 O TLV 3-253 */
ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL );
+ /* C- Device properties Device properties 9.9.2.0A O TV 1 */
+ ELEM_OPT_TV_SHORT(0xC0 , GSM_A_PDU_TYPE_GM, DE_DEVICE_PROPERTIES, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -4201,7 +4330,7 @@ nas_esm_pdn_disc_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/*This message is sent by the UE to the network to initiate establishment of a PDN connection. */
pinfo->link_dir = P2P_DIR_UL;
@@ -4224,7 +4353,7 @@ nas_esm_pdn_disc_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
guint curr_len;
curr_offset = offset;
- curr_len = len;
+ curr_len = len;
/* This message is sent by the network to the UE to reject release of a PDN connection. */
pinfo->link_dir = P2P_DIR_DL;
@@ -4283,9 +4412,9 @@ get_nas_esm_msg_params(guint8 oct, const gchar **msg_str, int *ett_tree, int *hf
{
gint idx;
- *msg_str = match_strval_idx((guint32) (oct & 0xff), nas_msg_esm_strings, &idx);
- *ett_tree = ett_nas_msg_esm[idx];
- *hf_idx = hf_nas_eps_msg_esm_type;
+ *msg_str = match_strval_idx_ext((guint32) (oct & 0xff), &nas_msg_esm_strings_ext, &idx);
+ *ett_tree = ett_nas_msg_esm[idx];
+ *hf_idx = hf_nas_eps_msg_esm_type;
*msg_fcn_p = nas_msg_esm_fcn[idx];
return;
@@ -4316,9 +4445,9 @@ static void (*nas_msg_emm_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *p
nas_emm_auth_req, /* Authentication request */
nas_emm_auth_resp, /* Authentication response */
NULL, /* Authentication reject (No IE:s)*/
- nas_emm_attach_fail, /* Authentication failure */
nas_emm_id_req, /* Identity request */
nas_emm_id_res, /* Identity response */
+ nas_emm_auth_fail, /* Authentication failure */
nas_emm_sec_mode_cmd, /* Security mode command */
nas_emm_sec_mode_comp, /* Security mode complete */
nas_emm_sec_mode_rej, /* Security mode reject */
@@ -4339,9 +4468,9 @@ get_nas_emm_msg_params(guint8 oct, const gchar **msg_str, int *ett_tree, int *hf
{
gint idx;
- *msg_str = match_strval_idx((guint32) (oct & 0xff), nas_msg_emm_strings, &idx);
- *ett_tree = ett_nas_msg_emm[idx];
- *hf_idx = hf_nas_eps_msg_emm_type;
+ *msg_str = match_strval_idx_ext((guint32) (oct & 0xff), &nas_msg_emm_strings_ext, &idx);
+ *ett_tree = ett_nas_msg_emm[idx];
+ *hf_idx = hf_nas_eps_msg_emm_type;
*msg_fcn_p = nas_msg_emm_fcn[idx];
return;
@@ -4354,12 +4483,12 @@ get_nas_emm_msg_params(guint8 oct, const gchar **msg_str, int *ett_tree, int *hf
static void
disect_nas_eps_esm_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
- const gchar *msg_str;
- guint32 len;
- gint ett_tree;
- int hf_idx;
- void (*msg_fcn_p)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len);
- guint8 oct;
+ const gchar *msg_str;
+ guint32 len;
+ gint ett_tree;
+ int hf_idx;
+ void (*msg_fcn_p)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len);
+ guint8 oct;
len = tvb_length(tvb);
/*
@@ -4385,9 +4514,9 @@ disect_nas_eps_esm_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
get_nas_esm_msg_params(oct, &msg_str, &ett_tree, &hf_idx, &msg_fcn_p);
- if(msg_str){
+ if (msg_str) {
col_append_sep_str(pinfo->cinfo, COL_INFO, NULL, msg_str);
- }else{
+ } else {
proto_tree_add_text(tree, tvb, offset, 1,"Unknown message 0x%x",oct);
return;
}
@@ -4419,29 +4548,29 @@ disect_nas_eps_esm_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
static void
dissect_nas_eps_emm_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, gboolean second_header)
{
- const gchar *msg_str;
- guint32 len;
- gint ett_tree;
- int hf_idx;
- void (*msg_fcn_p)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len);
- guint8 security_header_type, oct;
+ const gchar *msg_str;
+ guint32 len;
+ gint ett_tree;
+ int hf_idx;
+ void (*msg_fcn_p)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len);
+ guint8 security_header_type, oct;
len = tvb_length(tvb);
/* 9.3.1 Security header type */
- if(second_header){
+ if (second_header) {
security_header_type = tvb_get_guint8(tvb,offset)>>4;
proto_tree_add_item(tree, hf_nas_eps_security_header_type, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_gsm_a_L3_protocol_discriminator, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
- if (security_header_type !=0){
+ if (security_header_type != 0) {
/* Message authentication code */
proto_tree_add_item(tree, hf_nas_eps_msg_auth_code, tvb, offset, 4, ENC_BIG_ENDIAN);
offset+=4;
/* Sequence number */
proto_tree_add_item(tree, hf_nas_eps_seq_no, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
- if ((security_header_type==2)||(security_header_type==4))
+ if ((security_header_type == 2)||(security_header_type == 4))
/* Integrity protected and ciphered = 2, Integrity protected and ciphered with new EPS security context = 4 */
return;
proto_tree_add_item(tree, hf_nas_eps_security_header_type, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -4458,9 +4587,9 @@ dissect_nas_eps_emm_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
get_nas_emm_msg_params(oct, &msg_str, &ett_tree, &hf_idx, &msg_fcn_p);
- if(msg_str){
+ if (msg_str) {
col_append_sep_str(pinfo->cinfo, COL_INFO, NULL, msg_str);
- }else{
+ } else {
proto_tree_add_text(tree, tvb, offset, 1,"Unknown message 0x%x",oct);
return;
}
@@ -4486,6 +4615,56 @@ dissect_nas_eps_emm_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
}
}
+
+static void
+dissect_nas_eps_plain(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ proto_item *item;
+ proto_tree *nas_eps_tree;
+ guint8 pd;
+ int offset = 0;
+
+ /* Save pinfo */
+ gpinfo = pinfo;
+
+ /* make entry in the Protocol column on summary display */
+ col_append_sep_str(pinfo->cinfo, COL_PROTOCOL, "/", "NAS-EPS");
+
+ item = proto_tree_add_item(tree, proto_nas_eps, tvb, 0, -1, ENC_NA);
+ nas_eps_tree = proto_item_add_subtree(item, ett_nas_eps);
+
+ pd = tvb_get_guint8(tvb,offset)&0x0f;
+ switch (pd) {
+ case 2:
+ /* EPS session management messages.
+ * Ref 3GPP TS 24.007 version 8.0.0 Release 8, Table 11.2: Protocol discriminator values
+ */
+ disect_nas_eps_esm_msg(tvb, pinfo, nas_eps_tree, offset);
+ break;
+ case 7:
+ /* EPS mobility management messages.
+ * Ref 3GPP TS 24.007 version 8.0.0 Release 8, Table 11.2: Protocol discriminator values
+ */
+ dissect_nas_eps_emm_msg(tvb, pinfo, nas_eps_tree, offset, TRUE);
+ break;
+ case 15:
+ /* Special conformance testing functions for User Equipment messages.
+ * Ref 3GPP TS 24.007 version 8.0.0 Release 8, Table 11.2: Protocol discriminator values
+ */
+ if (gsm_a_dtap_handle) {
+ tvbuff_t *new_tvb = tvb_new_subset_remaining(tvb, offset);
+ call_dissector(gsm_a_dtap_handle, new_tvb,pinfo, nas_eps_tree);
+ break;
+ } /* else fall through default */
+ default:
+ proto_tree_add_text(nas_eps_tree, tvb, offset, -1, "Not a NAS EPS PD %u(%s)",
+ pd,
+ val_to_str_const(pd, protocol_discriminator_vals, "unknown"));
+ break;
+ }
+
+}
+
/* TS 24.301 8.2.1
* 9 General message format and information elements coding
* 9.1 Overview
@@ -4520,19 +4699,31 @@ dissect_nas_eps_emm_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
static void
dissect_nas_eps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *item;
- proto_tree *nas_eps_tree;
+ proto_item *item;
+ proto_tree *nas_eps_tree;
guint8 pd, security_header_type;
- int offset = 0;
+ int offset = 0;
guint32 len;
guint32 msg_auth_code;
+ len = tvb_length(tvb);
+ /* The protected NAS message header is 6 octets long, and the NAS message header is at least 2 octets long. */
+ /* If the length of the tvbuffer is less than 8 octets, we can safely conclude the message is not protected. */
+ if (len < 8) {
+ dissect_nas_eps_plain(tvb, pinfo, tree);
+ return;
+ }
+
+ if (g_nas_eps_dissect_plain) {
+ dissect_nas_eps_plain(tvb, pinfo, tree);
+ return;
+ }
+
/* Save pinfo */
gpinfo = pinfo;
- len = tvb_length(tvb);
/* make entry in the Protocol column on summary display */
- col_append_str(pinfo->cinfo, COL_PROTOCOL, "/NAS-EPS");
+ col_append_sep_str(pinfo->cinfo, COL_PROTOCOL, "/", "NAS-EPS");
item = proto_tree_add_item(tree, proto_nas_eps, tvb, 0, -1, ENC_NA);
nas_eps_tree = proto_item_add_subtree(item, ett_nas_eps);
@@ -4545,18 +4736,18 @@ dissect_nas_eps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
pd = tvb_get_guint8(tvb,offset)&0x0f;
offset++;
/* Message authentication code Message authentication code 9.5 M V 4 */
- if (security_header_type == 0){
- if(pd==7){
+ if (security_header_type == 0) {
+ if (pd == 7) {
/* Plain EPS mobility management messages. */
dissect_nas_eps_emm_msg(tvb, pinfo, nas_eps_tree, offset, ENC_BIG_ENDIAN);
return;
- }else{
+ } else {
proto_tree_add_text(tree, tvb, offset, len, "All ESM messages should be integrity protected");
return;
}
- }else{
+ } else {
/* SERVICE REQUEST (12) is not a plain NAS message treat separately */
- if (security_header_type == 12){
+ if (security_header_type == 12) {
col_append_sep_str(pinfo->cinfo, COL_INFO, NULL, "SERVICE REQUEST");
nas_emm_service_req(tvb, nas_eps_tree, pinfo, offset, len-offset);
return;
@@ -4565,27 +4756,27 @@ dissect_nas_eps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(nas_eps_tree, hf_nas_eps_msg_auth_code, tvb, offset, 4, ENC_BIG_ENDIAN);
msg_auth_code = tvb_get_ntohl(tvb, offset);
offset+=4;
- if ((security_header_type==2)||(security_header_type==4)){
+ if ((security_header_type == 2)||(security_header_type == 4)) {
/* Possible ciphered message */
- if(msg_auth_code!=0){
+ if (msg_auth_code != 0) {
/* Sequence number Sequence number 9.6 M V 1 */
proto_tree_add_item(nas_eps_tree, hf_nas_eps_seq_no, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
/* Integrity protected and ciphered = 2, Integrity protected and ciphered with new EPS security context = 4 */
- /* Read security_header_type AND pd */
+ /* Read security_header_type AND pd */
pd = tvb_get_guint8(tvb,offset);
/* If pd is in plaintext this message probably isn't ciphered */
- if((pd!=7)&&(pd!=2)&&(pd!=15)){
+ if ((pd != 7) && (pd != 2) && (pd != 15)) {
proto_tree_add_text(nas_eps_tree, tvb, offset, len-6,"Ciphered message");
return;
}
- }else{
+ } else {
/* msg_auth_code == 0, probably not ciphered */
/* Sequence number Sequence number 9.6 M V 1 */
proto_tree_add_item(nas_eps_tree, hf_nas_eps_seq_no, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
}
- }else{
+ } else {
/* Sequence number Sequence number 9.6 M V 1 */
proto_tree_add_item(nas_eps_tree, hf_nas_eps_seq_no, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
@@ -4594,7 +4785,7 @@ dissect_nas_eps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* NAS message NAS message 9.7 M V 1-n */
pd = tvb_get_guint8(tvb,offset)&0x0f;
- switch (pd){
+ switch (pd) {
case 2:
/* EPS session management messages.
* Ref 3GPP TS 24.007 version 8.0.0 Release 8, Table 11.2: Protocol discriminator values
@@ -4611,90 +4802,54 @@ dissect_nas_eps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Special conformance testing functions for User Equipment messages.
* Ref 3GPP TS 24.007 version 8.0.0 Release 8, Table 11.2: Protocol discriminator values
*/
- if (gsm_a_dtap_handle){
- tvbuff_t *new_tvb = tvb_new_subset(tvb, offset, -1, -1);
+ if (gsm_a_dtap_handle) {
+ tvbuff_t *new_tvb = tvb_new_subset_remaining(tvb, offset);
call_dissector(gsm_a_dtap_handle, new_tvb, pinfo, nas_eps_tree);
break;
} /* else fall through default */
default:
- proto_tree_add_text(nas_eps_tree, tvb, offset, -1, "Not a NAS EPS PD %u(%s)",pd,val_to_str(pd, protocol_discriminator_vals,"unknown"));
+ proto_tree_add_text(nas_eps_tree, tvb, offset, -1, "Not a NAS EPS PD %u(%s)",
+ pd,
+ val_to_str_const(pd, protocol_discriminator_vals, "unknown"));
break;
}
}
-static void
-dissect_nas_eps_plain(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+void
+proto_reg_handoff_nas_eps(void)
{
- proto_item *item;
- proto_tree *nas_eps_tree;
- guint8 pd;
- int offset = 0;
-
- /* Save pinfo */
- gpinfo = pinfo;
-
- /* make entry in the Protocol column on summary display */
- col_append_str(pinfo->cinfo, COL_PROTOCOL, "/NAS-EPS");
-
- item = proto_tree_add_item(tree, proto_nas_eps, tvb, 0, -1, ENC_NA);
- nas_eps_tree = proto_item_add_subtree(item, ett_nas_eps);
-
- pd = tvb_get_guint8(tvb,offset)&0x0f;
- switch (pd){
- case 2:
- /* EPS session management messages.
- * Ref 3GPP TS 24.007 version 8.0.0 Release 8, Table 11.2: Protocol discriminator values
- */
- disect_nas_eps_esm_msg(tvb, pinfo, nas_eps_tree, offset);
- break;
- case 7:
- /* EPS mobility management messages.
- * Ref 3GPP TS 24.007 version 8.0.0 Release 8, Table 11.2: Protocol discriminator values
- */
- dissect_nas_eps_emm_msg(tvb, pinfo, nas_eps_tree, offset, TRUE);
- break;
- case 15:
- /* Special conformance testing functions for User Equipment messages.
- * Ref 3GPP TS 24.007 version 8.0.0 Release 8, Table 11.2: Protocol discriminator values
- */
- if (gsm_a_dtap_handle){
- tvbuff_t *new_tvb = tvb_new_subset(tvb, offset, -1, -1);
- call_dissector(gsm_a_dtap_handle, new_tvb,pinfo, nas_eps_tree);
- break;
- } /* else fall through default */
- default:
- proto_tree_add_text(nas_eps_tree, tvb, offset, -1, "Not a NAS EPS PD %u(%s)",pd,val_to_str(pd, protocol_discriminator_vals,"unknown"));
- break;
- }
-
+ gsm_a_dtap_handle = find_dissector("gsm_a_dtap");
+ lpp_handle = find_dissector("lpp");
}
-void proto_register_nas_eps(void) {
- guint i;
- guint last_offset;
+void
+proto_register_nas_eps(void) {
+ guint i;
+ guint last_offset;
+ module_t *nas_eps_module;
/* List of fields */
static hf_register_info hf[] = {
{ &hf_nas_eps_msg_emm_type,
{ "NAS EPS Mobility Management Message Type", "nas_eps.nas_msg_emm_type",
- FT_UINT8, BASE_HEX, VALS(nas_msg_emm_strings), 0x0,
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &nas_msg_emm_strings_ext, 0x0,
NULL, HFILL }
},
{ &hf_nas_eps_common_elem_id,
{ "Element ID", "nas_eps.common.elem_id",
- FT_UINT8, BASE_DEC, NULL, 0,
+ FT_UINT8, BASE_HEX, NULL, 0,
NULL, HFILL }
},
{ &hf_nas_eps_emm_elem_id,
{ "Element ID", "nas_eps.emm.elem_id",
- FT_UINT8, BASE_DEC, NULL, 0,
+ FT_UINT8, BASE_HEX, NULL, 0,
NULL, HFILL }
},
{ &hf_nas_eps_bearer_id,
{ "EPS bearer identity", "nas_eps.bearer_id",
- FT_UINT8, BASE_HEX, NULL, 0xf0,
+ FT_UINT8, BASE_DEC, NULL, 0xf0,
NULL, HFILL }
},
{ &hf_nas_eps_spare_bits,
@@ -4819,7 +4974,7 @@ void proto_register_nas_eps(void) {
},
{ &hf_nas_eps_emm_paging_id,
{ "Paging identity value","nas_eps.emm.paging_id",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_paging_id_vals), 0x0,
+ FT_BOOLEAN, BASE_NONE, TFS(&nas_eps_emm_paging_id_vals), 0x0,
NULL, HFILL }
},
{ &hf_nas_eps_emm_eps_att_type,
@@ -4827,29 +4982,34 @@ void proto_register_nas_eps(void) {
FT_UINT8,BASE_DEC, VALS(nas_eps_emm_eps_att_type_vals), 0x0,
NULL, HFILL }
},
- { &hf_nas_eps_emm_cs_lcs_type,
+ { &hf_nas_eps_emm_esr_ps,
+ { "ESRPS","nas_eps.emm.esr_ps",
+ FT_BOOLEAN ,BASE_NONE, TFS(&nas_eps_emm_esr_ps_value), 0x0,
+ "Support of EXTENDED SERVICE REQUEST for packet services", HFILL }
+ },
+ { &hf_nas_eps_emm_cs_lcs,
{ "CS-LCS","nas_eps.emm.cs_lcs",
FT_UINT8, BASE_DEC, VALS(nas_eps_emm_cs_lcs_vals), 0x0,
"Location services indicator in CS", HFILL }
},
- { &hf_nas_eps_emm_epc_lcs_type,
+ { &hf_nas_eps_emm_epc_lcs,
{ "EPC-LCS","nas_eps.emm.epc_lcs",
FT_BOOLEAN ,BASE_NONE, TFS(&nas_eps_emm_epc_lcs_value), 0x0,
"Location services indicator in EPC", HFILL }
},
- { &hf_nas_eps_emm_emc_bs_type,
+ { &hf_nas_eps_emm_emc_bs,
{ "EMC BS","nas_eps.emm.emc_bs",
FT_BOOLEAN, BASE_NONE, TFS(&nas_eps_emm_emc_bs_value), 0x0,
"Emergency bearer services indicator", HFILL }
},
- { &hf_nas_eps_emm_ims_vops_type,
+ { &hf_nas_eps_emm_ims_vops,
{ "IMS VoPS","nas_eps.emm.ims_vops",
FT_BOOLEAN, BASE_NONE, TFS(&nas_eps_emm_ims_vops_value), 0x0,
"IMS voice over PS session indicator", HFILL }
},
{ &hf_nas_eps_tsc,
{ "Type of security context flag (TSC)","nas_eps.emm.tsc",
- FT_UINT8,BASE_DEC, VALS(nas_eps_tsc_vals), 0x0,
+ FT_BOOLEAN,BASE_DEC, TFS(&nas_eps_tsc_value), 0x0,
NULL, HFILL }
},
{ &hf_nas_eps_emm_nas_key_set_id,
@@ -4944,7 +5104,7 @@ void proto_register_nas_eps(void) {
},
{ &hf_nas_eps_emm_cause,
{ "Cause","nas_eps.emm.cause",
- FT_UINT8, BASE_DEC, VALS(nas_eps_emm_cause_values), 0x0,
+ FT_UINT8, BASE_DEC|BASE_EXT_STRING, &nas_eps_emm_cause_values_ext, 0x0,
NULL, HFILL }
},
{ &hf_nas_eps_emm_id_type2,
@@ -5169,15 +5329,20 @@ void proto_register_nas_eps(void) {
FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x01,
NULL, HFILL }
},
+ { &hf_nas_eps_emm_acc_csfb_cap,
+ { "ACC-CSFB capability","nas_eps.emm.acc_csfb_cap",
+ FT_BOOLEAN, 8, TFS(&nas_eps_emm_acc_csfb_cap_flg), 0x10,
+ "Access class control for CSFB capability", HFILL }
+ },
{ &hf_nas_eps_emm_lpp_cap,
{ "LPP capability","nas_eps.emm.lpp_cap",
FT_BOOLEAN, 8, TFS(&nas_eps_emm_lpp_cap_flg), 0x08,
- NULL, HFILL }
+ "LTE Positioning Protocol capability", HFILL }
},
{ &hf_nas_eps_emm_lcs_cap,
{ "LCS capability","nas_eps.emm.lcs_cap",
FT_BOOLEAN, 8, TFS(&nas_eps_emm_lcs_cap_flg), 0x04,
- NULL, HFILL }
+ "Location services notification mechanisms capability", HFILL }
},
{ &hf_nas_eps_emm_1xsrvcc_cap,
{ "1xSRVCC capability","nas_eps.emm.1xsrvcc_cap",
@@ -5206,7 +5371,7 @@ void proto_register_nas_eps(void) {
},
{ &hf_nas_eps_emm_gen_msg_cont_type,
{ "Container type","nas_eps.emm.gen_msg_cont_type",
- FT_UINT8,BASE_DEC, VALS(nas_eps_emm_gen_msg_cont_type_vals), 0x0,
+ FT_UINT8,BASE_DEC|BASE_RANGE_STRING, RVALS(nas_eps_emm_gen_msg_cont_type_vals), 0x0,
NULL, HFILL }
},
{ &hf_nas_eps_emm_apn_ambr_ul,
@@ -5239,6 +5404,11 @@ void proto_register_nas_eps(void) {
FT_UINT8,BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
+ { &hf_nas_eps_emm_guti_type,
+ { "GUTI type", "nas_eps.emm.guti_type",
+ FT_BOOLEAN, BASE_NONE, TFS(&nas_eps_emm_guti_type_value), 0x0,
+ NULL, HFILL }
+ },
{ &hf_nas_eps_emm_switch_off,
{ "Switch off","nas_eps.emm.switch_off",
FT_UINT8,BASE_DEC, VALS(nas_eps_emm_switch_off_vals), 0x0,
@@ -5301,7 +5471,7 @@ void proto_register_nas_eps(void) {
},
{ &hf_nas_eps_esm_cause,
{ "Cause","nas_eps.esm.cause",
- FT_UINT8,BASE_DEC, VALS(nas_eps_esm_cause_vals), 0x0,
+ FT_UINT8,BASE_DEC|BASE_EXT_STRING, &nas_eps_esm_cause_vals_ext, 0x0,
NULL, HFILL }
},
{ &hf_nas_eps_esm_eit,
@@ -5351,7 +5521,7 @@ void proto_register_nas_eps(void) {
},
{ &hf_nas_eps_service_type,
{ "Service type", "nas_eps.emm.service_type",
- FT_UINT8,BASE_DEC, VALS(nas_eps_service_type_vals), 0x0,
+ FT_UINT8,BASE_DEC|BASE_RANGE_STRING, RVALS(nas_eps_service_type_vals), 0x0,
NULL, HFILL }
},
{ &hf_nas_eps_nas_msg_cont,
@@ -5372,12 +5542,12 @@ void proto_register_nas_eps(void) {
/* ESM hf cvariables */
{ &hf_nas_eps_msg_esm_type,
{ "NAS EPS session management messages", "nas_eps.nas_msg_esm_type",
- FT_UINT8, BASE_HEX, VALS(nas_msg_esm_strings), 0x0,
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &nas_msg_esm_strings_ext, 0x0,
NULL, HFILL }
},
{ &hf_nas_eps_esm_elem_id,
{ "Element ID", "nas_eps.esm.elem_id",
- FT_UINT8, BASE_DEC, NULL, 0,
+ FT_UINT8, BASE_HEX, NULL, 0,
NULL, HFILL }
},
{ &hf_nas_eps_esm_proc_trans_id,
@@ -5386,12 +5556,12 @@ void proto_register_nas_eps(void) {
NULL, HFILL }
},
{ &hf_nas_eps_esm_pdn_type,
- { "PDN type", "nas_eps.nas_eps_esm_pdn_type",
+ { "PDN type", "nas_eps.esm_pdn_type",
FT_UINT8, BASE_DEC, VALS(nas_eps_esm_pdn_type_values), 0x0,
NULL, HFILL }
},
{ &hf_nas_eps_esm_request_type,
- { "Request type", "nas_eps.nas_eps_esm_request_type",
+ { "Request type", "nas_eps.esm_request_type",
FT_UINT8, BASE_DEC, VALS(nas_eps_esm_request_type_values), 0x0,
NULL, HFILL }
},
@@ -5454,11 +5624,9 @@ void proto_register_nas_eps(void) {
/* Register dissector */
register_dissector("nas-eps_plain", dissect_nas_eps_plain, proto_nas_eps);
-}
-void
-proto_reg_handoff_nas_eps(void)
-{
- gsm_a_dtap_handle = find_dissector("gsm_a_dtap");
- lpp_handle = find_dissector("lpp");
+ /* Register configuration options to always dissect as plain messages */
+ nas_eps_module = prefs_register_protocol(proto_nas_eps, proto_reg_handoff_nas_eps);
+
+ prefs_register_bool_preference(nas_eps_module, "dissect_plain", "Force dissect as plain NAS EPS", "Always dissect NAS EPS messages as plain", &g_nas_eps_dissect_plain);
}
diff --git a/epan/dissectors/packet-nbap.c b/epan/dissectors/packet-nbap.c
index c8b5c8d777..4347d34669 100644
--- a/epan/dissectors/packet-nbap.c
+++ b/epan/dissectors/packet-nbap.c
@@ -42,8 +42,12 @@
#include <epan/packet.h>
#include <epan/sctpppids.h>
#include <epan/asn1.h>
+#include <epan/conversation.h>
#include "packet-per.h"
+#include "packet-isup.h"
+#include "packet-umts_fp.h"
+#include "packet-rrc.h"
#ifdef _MSC_VER
/* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */
@@ -54,6 +58,24 @@
#define PSNAME "NBAP"
#define PFNAME "nbap"
+/* Debug */
+#if 0
+#define nbap_debug0(str) g_warning(str)
+#define nbap_debug1(str,p1) g_warning(str,p1)
+#define nbap_debug2(str,p1,p2) g_warning(str,p1,p2)
+#define nbap_debug3(str,p1,p2,p3) g_warning(str,p1,p2,p3)
+#else
+#define nbap_debug0(str)
+#define nbap_debug1(str,p1)
+#define nbap_debug2(str,p1,p2)
+#define nbap_debug3(str,p1,p2,p3)
+#endif
+
+/* Global variables */
+dissector_handle_t fp_handle;
+static guint32 transportLayerAddress_ipv4;
+static guint16 BindingID_port;
+
/*--- Included file: packet-nbap-val.h ---*/
#line 1 "../../asn1/nbap/packet-nbap-val.h"
@@ -1512,12 +1534,13 @@ typedef enum _ProtocolIE_ID_enum {
} ProtocolIE_ID_enum;
/*--- End of included file: packet-nbap-val.h ---*/
-#line 50 "../../asn1/nbap/packet-nbap-template.c"
+#line 72 "../../asn1/nbap/packet-nbap-template.c"
/* Initialize the protocol and registered fields */
static int proto_nbap = -1;
static int hf_nbap_transportLayerAddress_ipv4 = -1;
static int hf_nbap_transportLayerAddress_ipv6 = -1;
+static int hf_nbap_transportLayerAddress_nsap = -1;
/*--- Included file: packet-nbap-hf.c ---*/
@@ -2795,13 +2818,14 @@ static int hf_nbap_toAWS = -1; /* ToAWS */
static int hf_nbap_toAWE = -1; /* ToAWE */
static int hf_nbap_dCH_SpecificInformationList = -1; /* DCH_Specific_FDD_InformationList */
static int hf_nbap_DCH_Specific_FDD_InformationList_item = -1; /* DCH_Specific_FDD_Item */
-static int hf_nbap_dCH_ID = -1; /* DCH_ID */
-static int hf_nbap_ul_TransportFormatSet = -1; /* TransportFormatSet */
-static int hf_nbap_dl_TransportFormatSet = -1; /* TransportFormatSet */
+static int hf_nbap_dCH_ID = -1; /* T_dCH_ID */
+static int hf_nbap_ul_TransportFormatSet = -1; /* T_ul_TransportFormatSet */
+static int hf_nbap_dl_TransportFormatSet = -1; /* T_dl_TransportFormatSet */
static int hf_nbap_allocationRetentionPriority = -1; /* AllocationRetentionPriority */
static int hf_nbap_frameHandlingPriority = -1; /* FrameHandlingPriority */
static int hf_nbap_qE_Selector = -1; /* QE_Selector */
static int hf_nbap_DCH_InformationResponse_item = -1; /* DCH_InformationResponseItem */
+static int hf_nbap_dCH_ID_01 = -1; /* DCH_ID */
static int hf_nbap_DCH_MeasurementOccasion_Information_item = -1; /* DchMeasurementOccasionInformation_Item */
static int hf_nbap_pattern_Sequence_Identifier = -1; /* Pattern_Sequence_Identifier */
static int hf_nbap_status_Flag = -1; /* Status_Flag */
@@ -2815,9 +2839,14 @@ static int hf_nbap_dCH_SpecificInformationList_01 = -1; /* DCH_Specific_TDD_Inf
static int hf_nbap_DCH_Specific_TDD_InformationList_item = -1; /* DCH_Specific_TDD_Item */
static int hf_nbap_ul_CCTrCH_ID = -1; /* CCTrCH_ID */
static int hf_nbap_dl_CCTrCH_ID = -1; /* CCTrCH_ID */
+static int hf_nbap_ul_TransportFormatSet_01 = -1; /* TransportFormatSet */
+static int hf_nbap_dl_TransportFormatSet_01 = -1; /* TransportFormatSet */
static int hf_nbap_FDD_DCHs_to_Modify_item = -1; /* FDD_DCHs_to_ModifyItem */
static int hf_nbap_dCH_SpecificInformationList_02 = -1; /* DCH_ModifySpecificInformation_FDD */
static int hf_nbap_DCH_ModifySpecificInformation_FDD_item = -1; /* DCH_ModifySpecificItem_FDD */
+static int hf_nbap_dCH_ID_02 = -1; /* T_dCH_ID_01 */
+static int hf_nbap_ul_TransportFormatSet_02 = -1; /* T_ul_TransportFormatSet_01 */
+static int hf_nbap_dl_TransportFormatSet_02 = -1; /* T_dl_TransportFormatSet_01 */
static int hf_nbap_TDD_DCHs_to_Modify_item = -1; /* DCH_ModifyItem_TDD */
static int hf_nbap_dCH_SpecificInformationList_03 = -1; /* DCH_ModifySpecificInformation_TDD */
static int hf_nbap_DCH_ModifySpecificInformation_TDD_item = -1; /* DCH_ModifySpecificItem_TDD */
@@ -3743,7 +3772,7 @@ static int hf_nbap_hSDPA_associated_PICH_InfoLCR = -1; /* HSDPA_Associated_PICH
static int hf_nbap_paging_MACFlow_PriorityQueue_InformationLCR = -1; /* Paging_MACFlow_PriorityQueue_Information */
static int hf_nbap_Paging_MACFlows_to_DeleteLCR_item = -1; /* Paging_MACFlows_to_DeleteLCR_Item */
static int hf_nbap_RL_Specific_DCH_Info_item = -1; /* RL_Specific_DCH_Info_Item */
-static int hf_nbap_dCH_id = -1; /* DCH_ID */
+static int hf_nbap_dCH_id = -1; /* T_dCH_id */
static int hf_nbap_transportlayeraddress = -1; /* TransportLayerAddress */
static int hf_nbap_rL_Specific_E_DCH_Information = -1; /* RL_Specific_E_DCH_Information */
static int hf_nbap_RL_Specific_E_DCH_Information_item = -1; /* RL_Specific_E_DCH_Information_Item */
@@ -3972,6 +4001,7 @@ static int hf_nbap_tUTRANGPSDriftRateQuality = -1; /* TUTRANGPSDriftRateQuality
static int hf_nbap_rNC_ID = -1; /* RNC_ID */
static int hf_nbap_uE_AggregateMaximumBitRateDownlink = -1; /* UE_AggregateMaximumBitRateDownlink */
static int hf_nbap_uE_AggregateMaximumBitRateUplink = -1; /* UE_AggregateMaximumBitRateUplink */
+static int hf_nbap_hSDSCH_Physical_Layer_Category_01 = -1; /* T_hSDSCH_Physical_Layer_Category */
static int hf_nbap_UL_Timeslot_Information_item = -1; /* UL_Timeslot_InformationItem */
static int hf_nbap_uL_Code_InformationList = -1; /* TDD_UL_Code_Information */
static int hf_nbap_UL_TimeslotLCR_Information_item = -1; /* UL_TimeslotLCR_InformationItem */
@@ -4008,6 +4038,7 @@ static int hf_nbap_pO1_ForTFCI_Bits = -1; /* PowerOffset */
static int hf_nbap_pO3_ForPilotBits = -1; /* PowerOffset */
static int hf_nbap_FACH_ParametersListIE_CTCH_SetupRqstFDD_item = -1; /* FACH_ParametersItem_CTCH_SetupRqstFDD */
static int hf_nbap_maxFACH_Power = -1; /* DL_Power */
+static int hf_nbap_transportFormatSet_01 = -1; /* T_transportFormatSet */
static int hf_nbap_pCH_Power = -1; /* DL_Power */
static int hf_nbap_pICH_Parameters = -1; /* PICH_Parameters_CTCH_SetupRqstFDD */
static int hf_nbap_pICH_Mode = -1; /* PICH_Mode */
@@ -4807,11 +4838,13 @@ static int hf_nbap_RACH_SubChannelNumbers_subCh1 = -1;
static int hf_nbap_RACH_SubChannelNumbers_subCh0 = -1;
/*--- End of included file: packet-nbap-hf.c ---*/
-#line 57 "../../asn1/nbap/packet-nbap-template.c"
+#line 80 "../../asn1/nbap/packet-nbap-template.c"
/* Initialize the subtree pointers */
static int ett_nbap = -1;
static int ett_nbap_TransportLayerAddress = -1;
+static int ett_nbap_TransportLayerAddress_nsap = -1;
+static int ett_nbap_ib_sg_data = -1;
/*--- Included file: packet-nbap-ett.c ---*/
@@ -6444,13 +6477,92 @@ static gint ett_nbap_UnsuccessfulOutcome = -1;
static gint ett_nbap_Outcome = -1;
/*--- End of included file: packet-nbap-ett.c ---*/
-#line 63 "../../asn1/nbap/packet-nbap-template.c"
+#line 88 "../../asn1/nbap/packet-nbap-template.c"
+
+
+extern int proto_fp;
+
+/*
+ * Structure to build information needed to dissect the FP flow beeing set up.
+ */
+struct _nbap_msg_info_for_fp
+{
+ guint32 ProcedureCode;
+ guint32 ddMode;
+ gboolean is_uplink;
+ gint channel; /* see definitions in packet-umts_fp.h Channel types */
+ guint8 dch_crc_present; /* 0=No, 1=Yes, 2=Unknown */
+};
+
+typedef struct
+{
+ gint num_dch_in_flow;
+ gint next_dch;
+ gint num_ul_chans;
+ gint ul_chan_tf_size[MAX_FP_CHANS];
+ gint ul_chan_num_tbs[MAX_FP_CHANS];
+ gint num_dl_chans;
+ gint dl_chan_tf_size[MAX_FP_CHANS];
+ gint dl_chan_num_tbs[MAX_FP_CHANS];
+
+}nbap_dch_channel_info_t;
+
+nbap_dch_channel_info_t nbap_dch_chnl_info[maxNrOfDCHs];
+
+/* Struct to collect E-DCH data in a packet
+ * As the address data comes before the ddi entries
+ * we save the address to be able to find the conversation and update the
+ * conversation data.
+ */
+typedef struct
+{
+ address crnc_address;
+ guint16 crnc_port;
+ gint no_ddi_entries;
+ guint8 edch_ddi[MAX_EDCH_DDIS];
+ guint edch_macd_pdu_size[MAX_EDCH_DDIS];
+ guint8 edch_type; /* 1 means T2 */
+
+} nbap_edch_channel_info_t;
+
+nbap_edch_channel_info_t nbap_edch_channel_info[maxNrOfEDCHMACdFlows];
+
+typedef struct
+{
+ address crnc_address;
+ guint16 crnc_port;
+ enum fp_rlc_mode rlc_mode;
+ guint32 hsdsch_physical_layer_category;
+} nbap_hsdsch_channel_info_t;
+
+nbap_hsdsch_channel_info_t nbap_hsdsch_channel_info[maxNrOfMACdFlows];
+
+gint g_num_dch_in_flow;
+/* maxNrOfTFs INTEGER ::= 32 */
+gint g_dchs_in_flow_list[maxNrOfTFs];
+struct _nbap_msg_info_for_fp g_nbap_msg_info_for_fp;
/* Global variables */
static guint32 ProcedureCode;
static guint32 ProtocolIE_ID;
static guint32 ddMode;
static const gchar *ProcedureID;
+static guint32 t_dch_id, dch_id, prev_dch_id, commonphysicalchannelid, e_dch_macdflow_id, hsdsch_macdflow_id, e_dch_ddi_value;
+static guint32 MACdPDU_Size, commontransportchannelid;
+static guint num_items;
+static gint paging_indications;
+static guint32 ib_type, segment_type;
+
+enum TransportFormatSet_type_enum
+{
+ NBAP_DCH_UL,
+ NBAP_DCH_DL,
+ NBAP_CPCH,
+ NBAP_FACH,
+ NBAP_PCH
+};
+
+enum TransportFormatSet_type_enum transportFormatSet_type;
/* Dissector tables */
static dissector_table_t nbap_ies_dissector_table;
@@ -8443,8 +8555,12 @@ dissect_nbap_Additional_EDCH_RL_Specific_Information_To_Setup_List(tvbuff_t *tvb
static int
dissect_nbap_E_DCH_MACdFlow_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 651 "../../asn1/nbap/nbap.cnf"
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
- 0U, maxNrOfEDCHMACdFlows_1, NULL, FALSE);
+ 0U, maxNrOfEDCHMACdFlows_1, &e_dch_macdflow_id, FALSE);
+
+
+
return offset;
}
@@ -8453,8 +8569,21 @@ dissect_nbap_E_DCH_MACdFlow_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
static int
dissect_nbap_BindingID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 657 "../../asn1/nbap/nbap.cnf"
+ tvbuff_t *parameter_tvb=NULL;
+
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
- 1, 4, TRUE, NULL);
+ 1, 4, TRUE, &parameter_tvb);
+
+
+ if (!parameter_tvb)
+ return offset;
+ BindingID_port = tvb_get_ntohs(parameter_tvb,0);
+ if(tvb_length(parameter_tvb)==2){
+ proto_item_append_text(actx->created_item, " (%u)",BindingID_port);
+ }
+
+
return offset;
}
@@ -8463,9 +8592,10 @@ dissect_nbap_BindingID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
static int
dissect_nbap_TransportLayerAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 116 "../../asn1/nbap/nbap.cnf"
+#line 574 "../../asn1/nbap/nbap.cnf"
tvbuff_t *parameter_tvb=NULL;
- proto_tree *subtree;
+ proto_item *item;
+ proto_tree *subtree, *nsap_tree;
gint tvb_len;
offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
@@ -8478,12 +8608,23 @@ dissect_nbap_TransportLayerAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
subtree = proto_item_add_subtree(actx->created_item, ett_nbap_TransportLayerAddress);
if (tvb_len==4){
/* IPv4 */
- proto_tree_add_item(subtree, hf_nbap_transportLayerAddress_ipv4, parameter_tvb, 0, tvb_len, FALSE);
+ proto_tree_add_item(subtree, hf_nbap_transportLayerAddress_ipv4, parameter_tvb, 0, tvb_len, ENC_BIG_ENDIAN);
+ transportLayerAddress_ipv4 = tvb_get_ipv4(parameter_tvb, 0);
}
if (tvb_len==16){
/* IPv6 */
- proto_tree_add_item(subtree, hf_nbap_transportLayerAddress_ipv6, parameter_tvb, 0, tvb_len, FALSE);
+ proto_tree_add_item(subtree, hf_nbap_transportLayerAddress_ipv6, parameter_tvb, 0, tvb_len, ENC_NA);
}
+ if (tvb_len==20){
+ item = proto_tree_add_item(subtree, hf_nbap_transportLayerAddress_nsap, parameter_tvb, 0, tvb_len, ENC_NA);
+ nsap_tree = proto_item_add_subtree(item, ett_nbap_TransportLayerAddress_nsap);
+ if(tvb_get_ntoh24(parameter_tvb,0) == 0x350001){
+ /* IPv4 */
+ transportLayerAddress_ipv4 = tvb_get_ipv4(parameter_tvb, 3);
+ }
+ dissect_nsap(parameter_tvb, 0, 20, nsap_tree);
+ }
+
@@ -10220,8 +10361,13 @@ dissect_nbap_BundlingModeIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static int
dissect_nbap_CommonTransportChannelID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 647 "../../asn1/nbap/nbap.cnf"
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
- 0U, 255U, NULL, FALSE);
+ 0U, 255U, &commontransportchannelid, FALSE);
+
+nbap_dch_chnl_info[commontransportchannelid].next_dch = 0;
+
+
return offset;
}
@@ -11025,8 +11171,13 @@ dissect_nbap_Common_E_DCH_HSDPCCH_InfoItem(tvbuff_t *tvb _U_, int offset _U_, as
static int
dissect_nbap_CommonPhysicalChannelID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 643 "../../asn1/nbap/nbap.cnf"
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
- 0U, 255U, NULL, FALSE);
+ 0U, 255U, &commonphysicalchannelid, FALSE);
+
+nbap_dch_chnl_info[commonphysicalchannelid].next_dch = 0;
+
+
return offset;
}
@@ -11263,8 +11414,20 @@ static const value_string nbap_PayloadCRC_PresenceIndicator_vals[] = {
static int
dissect_nbap_PayloadCRC_PresenceIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 608 "../../asn1/nbap/nbap.cnf"
+guint32 payload_crc_value;
+
offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
- 2, NULL, TRUE, 0, NULL);
+ 2, &payload_crc_value, TRUE, 0, NULL);
+
+
+ if(payload_crc_value == 0){
+ g_nbap_msg_info_for_fp.dch_crc_present = TRUE;
+ }else{
+ g_nbap_msg_info_for_fp.dch_crc_present = FALSE;
+ }
+
+
return offset;
}
@@ -11752,8 +11915,18 @@ dissect_nbap_CommonMACFlow_Specific_InfoList(tvbuff_t *tvb _U_, int offset _U_,
static int
dissect_nbap_MACdPDU_Size(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1262 "../../asn1/nbap/nbap.cnf"
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
- 1U, 5000U, NULL, TRUE);
+ 1U, 5000U, &MACdPDU_Size, TRUE);
+
+
+ if (actx->pinfo->fd->flags.visited)
+ {
+ return offset;
+ }
+ nbap_edch_channel_info[e_dch_macdflow_id].edch_macd_pdu_size[num_items-1] = MACdPDU_Size;
+
+
return offset;
}
@@ -14343,7 +14516,7 @@ dissect_nbap_DATA_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr
static int
dissect_nbap_DCH_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
- 0U, 255U, NULL, FALSE);
+ 0U, 255U, &t_dch_id, FALSE);
return offset;
}
@@ -14387,9 +14560,63 @@ dissect_nbap_ToAWE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, prot
static int
+dissect_nbap_T_dCH_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 626 "../../asn1/nbap/nbap.cnf"
+
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 255U, &dch_id, FALSE);
+ if(g_num_dch_in_flow>0){
+ g_dchs_in_flow_list[g_num_dch_in_flow-1]=dch_id;
+ nbap_dch_chnl_info[dch_id].next_dch = 0;
+ if(prev_dch_id != 0){
+ nbap_dch_chnl_info[prev_dch_id].next_dch = dch_id;
+ }
+ }
+
+
+
+ return offset;
+}
+
+
+
+static int
dissect_nbap_TransportFormatSet_NrOfTransportBlocks(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 992 "../../asn1/nbap/nbap.cnf"
+guint32 NrOfTransportBlocks;
+
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
- 0U, 512U, NULL, FALSE);
+ 0U, 512U, &NrOfTransportBlocks, FALSE);
+
+
+ if(num_items>0){
+ switch(transportFormatSet_type){
+ case NBAP_DCH_UL:
+ nbap_dch_chnl_info[dch_id].num_ul_chans++;
+ nbap_dch_chnl_info[dch_id].ul_chan_num_tbs[num_items-1] = NrOfTransportBlocks;
+ break;
+ case NBAP_DCH_DL:
+ nbap_dch_chnl_info[dch_id].num_dl_chans++;
+ nbap_dch_chnl_info[dch_id].dl_chan_num_tbs[num_items-1] = NrOfTransportBlocks;
+ break;
+ case NBAP_CPCH:
+ nbap_dch_chnl_info[commonphysicalchannelid].num_ul_chans++;
+ nbap_dch_chnl_info[commonphysicalchannelid].ul_chan_num_tbs[num_items-1] = NrOfTransportBlocks;
+ nbap_dch_chnl_info[commonphysicalchannelid].num_dl_chans++;
+ nbap_dch_chnl_info[commonphysicalchannelid].dl_chan_num_tbs[num_items-1] = NrOfTransportBlocks;
+ break;
+ case NBAP_PCH:
+ nbap_dch_chnl_info[commontransportchannelid].num_ul_chans++;
+ nbap_dch_chnl_info[commontransportchannelid].ul_chan_num_tbs[num_items-1] = NrOfTransportBlocks;
+ nbap_dch_chnl_info[commontransportchannelid].num_dl_chans++;
+ nbap_dch_chnl_info[commontransportchannelid].dl_chan_num_tbs[num_items-1] = NrOfTransportBlocks;
+ break;
+ default:
+ break;
+ }
+ }
+
+
return offset;
}
@@ -14398,8 +14625,35 @@ dissect_nbap_TransportFormatSet_NrOfTransportBlocks(tvbuff_t *tvb _U_, int offse
static int
dissect_nbap_TransportFormatSet_TransportBlockSize(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1024 "../../asn1/nbap/nbap.cnf"
+guint32 TransportBlockSize;
+
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
- 0U, 5000U, NULL, FALSE);
+ 0U, 5000U, &TransportBlockSize, FALSE);
+
+
+ if(num_items>0){
+ switch(transportFormatSet_type){
+ case NBAP_DCH_UL:
+ nbap_dch_chnl_info[dch_id].ul_chan_tf_size[num_items-1] = TransportBlockSize;
+ break;
+ case NBAP_DCH_DL:
+ nbap_dch_chnl_info[dch_id].dl_chan_tf_size[num_items-1] = TransportBlockSize;
+ break;
+ case NBAP_CPCH:
+ nbap_dch_chnl_info[commonphysicalchannelid].ul_chan_tf_size[num_items-1] = TransportBlockSize;
+ nbap_dch_chnl_info[commonphysicalchannelid].dl_chan_tf_size[num_items-1] = TransportBlockSize;
+ break;
+ case NBAP_PCH:
+ nbap_dch_chnl_info[commontransportchannelid].ul_chan_tf_size[num_items-1] = TransportBlockSize;
+ nbap_dch_chnl_info[commontransportchannelid].dl_chan_tf_size[num_items-1] = TransportBlockSize;
+ break;
+ default:
+ break;
+ }
+ }
+
+
return offset;
}
@@ -14499,6 +14753,11 @@ static const per_sequence_t TransportFormatSet_DynamicPartList_item_sequence[] =
static int
dissect_nbap_TransportFormatSet_DynamicPartList_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 988 "../../asn1/nbap/nbap.cnf"
+ num_items++;
+
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_TransportFormatSet_DynamicPartList_item, TransportFormatSet_DynamicPartList_item_sequence);
@@ -14512,6 +14771,10 @@ static const per_sequence_t TransportFormatSet_DynamicPartList_sequence_of[1] =
static int
dissect_nbap_TransportFormatSet_DynamicPartList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 985 "../../asn1/nbap/nbap.cnf"
+ num_items = 0;
+
+
offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
ett_nbap_TransportFormatSet_DynamicPartList, TransportFormatSet_DynamicPartList_sequence_of,
1, maxNrOfTFs, FALSE);
@@ -14678,6 +14941,34 @@ dissect_nbap_TransportFormatSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
static int
+dissect_nbap_T_ul_TransportFormatSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 963 "../../asn1/nbap/nbap.cnf"
+ transportFormatSet_type = NBAP_DCH_UL;
+ nbap_dch_chnl_info[dch_id].num_ul_chans = 0;
+
+
+ offset = dissect_nbap_TransportFormatSet(tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nbap_T_dl_TransportFormatSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 967 "../../asn1/nbap/nbap.cnf"
+ transportFormatSet_type = NBAP_DCH_DL;
+ nbap_dch_chnl_info[dch_id].num_dl_chans = 0;
+
+
+ offset = dissect_nbap_TransportFormatSet(tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+
+static int
dissect_nbap_FrameHandlingPriority(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 15U, NULL, FALSE);
@@ -14703,9 +14994,9 @@ dissect_nbap_QE_Selector(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
static const per_sequence_t DCH_Specific_FDD_Item_sequence[] = {
- { &hf_nbap_dCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
- { &hf_nbap_ul_TransportFormatSet, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_TransportFormatSet },
- { &hf_nbap_dl_TransportFormatSet, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_TransportFormatSet },
+ { &hf_nbap_dCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_T_dCH_ID },
+ { &hf_nbap_ul_TransportFormatSet, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_T_ul_TransportFormatSet },
+ { &hf_nbap_dl_TransportFormatSet, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_T_dl_TransportFormatSet },
{ &hf_nbap_allocationRetentionPriority, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_AllocationRetentionPriority },
{ &hf_nbap_frameHandlingPriority, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_FrameHandlingPriority },
{ &hf_nbap_qE_Selector , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_QE_Selector },
@@ -14715,9 +15006,17 @@ static const per_sequence_t DCH_Specific_FDD_Item_sequence[] = {
static int
dissect_nbap_DCH_Specific_FDD_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 957 "../../asn1/nbap/nbap.cnf"
+ g_num_dch_in_flow++;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_DCH_Specific_FDD_Item, DCH_Specific_FDD_Item_sequence);
+#line 960 "../../asn1/nbap/nbap.cnf"
+ prev_dch_id = dch_id;
+
+
return offset;
}
@@ -14728,6 +15027,11 @@ static const per_sequence_t DCH_Specific_FDD_InformationList_sequence_of[1] = {
static int
dissect_nbap_DCH_Specific_FDD_InformationList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 953 "../../asn1/nbap/nbap.cnf"
+ g_num_dch_in_flow = 0;
+ prev_dch_id = 0;
+
+
offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
ett_nbap_DCH_Specific_FDD_InformationList, DCH_Specific_FDD_InformationList_sequence_of,
1, maxNrOfDCHs, FALSE);
@@ -14785,7 +15089,7 @@ dissect_nbap_DCH_Indicator_For_E_DCH_HSDPA_Operation(tvbuff_t *tvb _U_, int offs
static const per_sequence_t DCH_InformationResponseItem_sequence[] = {
- { &hf_nbap_dCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
+ { &hf_nbap_dCH_ID_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_bindingID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_BindingID },
{ &hf_nbap_transportLayerAddress, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_TransportLayerAddress },
{ &hf_nbap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_ProtocolExtensionContainer },
@@ -14931,11 +15235,11 @@ dissect_nbap_DCH_MeasurementOccasion_Information(tvbuff_t *tvb _U_, int offset _
static const per_sequence_t DCH_Specific_TDD_Item_sequence[] = {
- { &hf_nbap_dCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
+ { &hf_nbap_dCH_ID_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_ul_CCTrCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_CCTrCH_ID },
{ &hf_nbap_dl_CCTrCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_CCTrCH_ID },
- { &hf_nbap_ul_TransportFormatSet, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_TransportFormatSet },
- { &hf_nbap_dl_TransportFormatSet, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_TransportFormatSet },
+ { &hf_nbap_ul_TransportFormatSet_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_TransportFormatSet },
+ { &hf_nbap_dl_TransportFormatSet_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_TransportFormatSet },
{ &hf_nbap_allocationRetentionPriority, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_AllocationRetentionPriority },
{ &hf_nbap_frameHandlingPriority, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_FrameHandlingPriority },
{ &hf_nbap_qE_Selector , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_QE_Selector },
@@ -14999,10 +15303,53 @@ dissect_nbap_DCH_TDD_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
}
+
+static int
+dissect_nbap_T_dCH_ID_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 638 "../../asn1/nbap/nbap.cnf"
+
+ offset = dissect_nbap_DCH_ID(tvb, offset, actx, tree, hf_index);
+
+ dch_id = t_dch_id;
+
+
+
+ return offset;
+}
+
+
+
+static int
+dissect_nbap_T_ul_TransportFormatSet_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 971 "../../asn1/nbap/nbap.cnf"
+ transportFormatSet_type = NBAP_DCH_UL;
+ nbap_dch_chnl_info[dch_id].num_ul_chans = 0;
+
+
+ offset = dissect_nbap_TransportFormatSet(tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nbap_T_dl_TransportFormatSet_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 975 "../../asn1/nbap/nbap.cnf"
+ transportFormatSet_type = NBAP_DCH_DL;
+ nbap_dch_chnl_info[dch_id].num_dl_chans = 0;
+
+
+ offset = dissect_nbap_TransportFormatSet(tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
static const per_sequence_t DCH_ModifySpecificItem_FDD_sequence[] = {
- { &hf_nbap_dCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
- { &hf_nbap_ul_TransportFormatSet, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_TransportFormatSet },
- { &hf_nbap_dl_TransportFormatSet, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_TransportFormatSet },
+ { &hf_nbap_dCH_ID_02 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_T_dCH_ID_01 },
+ { &hf_nbap_ul_TransportFormatSet_02, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_T_ul_TransportFormatSet_01 },
+ { &hf_nbap_dl_TransportFormatSet_02, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_T_dl_TransportFormatSet_01 },
{ &hf_nbap_allocationRetentionPriority, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_AllocationRetentionPriority },
{ &hf_nbap_frameHandlingPriority, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_FrameHandlingPriority },
{ &hf_nbap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_ProtocolExtensionContainer },
@@ -15066,11 +15413,11 @@ dissect_nbap_FDD_DCHs_to_Modify(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
static const per_sequence_t DCH_ModifySpecificItem_TDD_sequence[] = {
- { &hf_nbap_dCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
+ { &hf_nbap_dCH_ID_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_ul_CCTrCH_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_CCTrCH_ID },
{ &hf_nbap_dl_CCTrCH_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_CCTrCH_ID },
- { &hf_nbap_ul_TransportFormatSet, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_TransportFormatSet },
- { &hf_nbap_dl_TransportFormatSet, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_TransportFormatSet },
+ { &hf_nbap_ul_TransportFormatSet_01, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_TransportFormatSet },
+ { &hf_nbap_dl_TransportFormatSet_01, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_TransportFormatSet },
{ &hf_nbap_allocationRetentionPriority, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_AllocationRetentionPriority },
{ &hf_nbap_frameHandlingPriority, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_FrameHandlingPriority },
{ &hf_nbap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_ProtocolExtensionContainer },
@@ -17459,8 +17806,19 @@ dissect_nbap_E_DCH_HARQ_Combining_Capability(tvbuff_t *tvb _U_, int offset _U_,
static int
dissect_nbap_E_DCH_DDI_Value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1252 "../../asn1/nbap/nbap.cnf"
+
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
- 0U, 62U, NULL, FALSE);
+ 0U, 62U, &e_dch_ddi_value, FALSE);
+
+
+ if (actx->pinfo->fd->flags.visited)
+ {
+ return offset;
+ }
+ nbap_edch_channel_info[e_dch_macdflow_id].edch_ddi[num_items-1] = e_dch_ddi_value;
+
+
return offset;
}
@@ -17582,6 +17940,10 @@ static const per_sequence_t E_DCH_LogicalChannelInformationItem_sequence[] = {
static int
dissect_nbap_E_DCH_LogicalChannelInformationItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1249 "../../asn1/nbap/nbap.cnf"
+ num_items++;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_E_DCH_LogicalChannelInformationItem, E_DCH_LogicalChannelInformationItem_sequence);
@@ -17595,10 +17957,18 @@ static const per_sequence_t E_DCH_LogicalChannelInformation_sequence_of[1] = {
static int
dissect_nbap_E_DCH_LogicalChannelInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1242 "../../asn1/nbap/nbap.cnf"
+ num_items = 0;
+
offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
ett_nbap_E_DCH_LogicalChannelInformation, E_DCH_LogicalChannelInformation_sequence_of,
1, maxNoOfLogicalChannels, FALSE);
+
+ nbap_edch_channel_info[e_dch_macdflow_id].no_ddi_entries = num_items;
+
+
+
return offset;
}
@@ -17620,9 +17990,54 @@ static const per_sequence_t E_DCH_MACdFlow_Specific_InfoItem_sequence[] = {
static int
dissect_nbap_E_DCH_MACdFlow_Specific_InfoItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1198 "../../asn1/nbap/nbap.cnf"
+umts_fp_conversation_info_t *p_conv_data = NULL;
+address null_addr;
+conversation_t *p_conv;
+guint32 no_ddi_entries, i;
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_E_DCH_MACdFlow_Specific_InfoItem, E_DCH_MACdFlow_Specific_InfoItem_sequence);
+
+ if (actx->pinfo->fd->flags.visited)
+ {
+ return offset;
+ }
+ /* Check if we have converstaion info */
+ SET_ADDRESS(&null_addr, AT_NONE, 0, NULL);
+ p_conv = find_conversation(actx->pinfo->fd->num, &nbap_edch_channel_info[e_dch_macdflow_id].crnc_address, &null_addr,
+ PT_UDP,
+ nbap_edch_channel_info[e_dch_macdflow_id].crnc_port, 0, NO_ADDR_B);
+ if(!p_conv)
+ return offset;
+
+ p_conv_data = conversation_get_proto_data(p_conv, proto_fp);
+
+ if(!p_conv_data)
+ return offset;
+ no_ddi_entries = p_conv_data->no_ddi_entries = nbap_edch_channel_info[e_dch_macdflow_id].no_ddi_entries;
+ nbap_debug2("E-DCH-MACdFlow-Specific-InfoItem: e_dch_macdflow_id %u, no_ddi_entries %u",e_dch_macdflow_id,no_ddi_entries);
+ for (i = 0; i < no_ddi_entries; i++) {
+ p_conv_data->edch_ddi[i] = nbap_edch_channel_info[e_dch_macdflow_id].edch_ddi[i];
+ p_conv_data->edch_macd_pdu_size[i] = nbap_edch_channel_info[e_dch_macdflow_id].edch_macd_pdu_size[i];
+ nbap_debug3("E-DCH-MACdFlow-Specific-InfoItem: e_dch_macdflow_id %u edch_ddi %u edch_macd_pdu_size %u",
+ e_dch_macdflow_id,
+ nbap_edch_channel_info[e_dch_macdflow_id].edch_ddi[i],
+ nbap_edch_channel_info[e_dch_macdflow_id].edch_macd_pdu_size[i]
+ );
+ }
+
+ p_conv_data->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present;
+
+ p_conv_data->edch_type = 0; /* 1 means T2 */
+ /* use to display e_dch_macdflow_id */
+ p_conv_data->num_dch_in_flow = 1;
+ p_conv_data->dchs_in_flow_list[0] = e_dch_macdflow_id;
+
+
+
+
return offset;
}
@@ -22356,8 +22771,30 @@ static const value_string nbap_PICH_Mode_vals[] = {
static int
dissect_nbap_PICH_Mode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 739 "../../asn1/nbap/nbap.cnf"
+guint32 PICH_Mode = 0;
offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
- 4, NULL, TRUE, 0, NULL);
+ 4, &PICH_Mode, TRUE, 0, NULL);
+
+
+ switch(PICH_Mode){
+ case 0: /* v18 */
+ paging_indications = 18;
+ break;
+ case 1: /* v36 */
+ paging_indications = 36;
+ break;
+ case 2: /* v72 */
+ paging_indications = 72;
+ break;
+ case 3: /* v144 */
+ paging_indications = 144;
+ break;
+ }
+
+
+
+
return offset;
}
@@ -22505,8 +22942,12 @@ dissect_nbap_HSDSCH_Common_System_Information_ResponseFDD(tvbuff_t *tvb _U_, int
static int
dissect_nbap_HSDSCH_MACdFlow_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 654 "../../asn1/nbap/nbap.cnf"
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
- 0U, maxNrOfMACdFlows_1, NULL, FALSE);
+ 0U, maxNrOfMACdFlows_1, &hsdsch_macdflow_id, FALSE);
+
+
+
return offset;
}
@@ -22523,9 +22964,32 @@ static const per_sequence_t HSDSCH_MACdFlow_Specific_InfoItem_sequence[] = {
static int
dissect_nbap_HSDSCH_MACdFlow_Specific_InfoItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1293 "../../asn1/nbap/nbap.cnf"
+
+ address dst_addr;
+ transportLayerAddress_ipv4 = 0;
+ BindingID_port = 0;
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_HSDSCH_MACdFlow_Specific_InfoItem, HSDSCH_MACdFlow_Specific_InfoItem_sequence);
+
+ if (actx->pinfo->fd->flags.visited||transportLayerAddress_ipv4==0||BindingID_port == 0)
+ {
+ return offset;
+ }
+
+ dst_addr.type=AT_IPv4;
+ dst_addr.len=4;
+ dst_addr.data=(guint8 *)&transportLayerAddress_ipv4;
+
+ /* Set address for collection of HSDSCH entries */
+ COPY_ADDRESS(&(nbap_hsdsch_channel_info[hsdsch_macdflow_id].crnc_address),&dst_addr);
+ nbap_hsdsch_channel_info[hsdsch_macdflow_id].crnc_port = BindingID_port;
+
+
+
+
return offset;
}
@@ -22603,8 +23067,24 @@ static const value_string nbap_RLC_Mode_vals[] = {
static int
dissect_nbap_RLC_Mode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1271 "../../asn1/nbap/nbap.cnf"
+ guint32 rlc_mode;
+
offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
- 2, NULL, TRUE, 0, NULL);
+ 2, &rlc_mode, TRUE, 0, NULL);
+
+ switch(rlc_mode){
+ case 0:
+ /* rLC-AM */
+ nbap_hsdsch_channel_info[hsdsch_macdflow_id].rlc_mode = FP_RLC_AM;
+ break;
+ case 1:
+ /* rLC-UM */
+ nbap_hsdsch_channel_info[hsdsch_macdflow_id].rlc_mode = FP_RLC_UM;
+ break;
+ }
+
+
return offset;
}
@@ -22665,16 +23145,24 @@ dissect_nbap_HSDSCH_MACdFlows_Information(tvbuff_t *tvb _U_, int offset _U_, asn
static int
-dissect_nbap_INTEGER_1_64_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_nbap_T_hSDSCH_Physical_Layer_Category(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1286 "../../asn1/nbap/nbap.cnf"
+ guint32 hsdsch_physical_layer_category;
+
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
- 1U, 64U, NULL, TRUE);
+ 1U, 64U, &hsdsch_physical_layer_category, TRUE);
+
+
+ nbap_hsdsch_channel_info[hsdsch_macdflow_id].hsdsch_physical_layer_category = hsdsch_physical_layer_category;
+
+
return offset;
}
static const per_sequence_t UE_Capability_Information_sequence[] = {
- { &hf_nbap_hSDSCH_Physical_Layer_Category, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_INTEGER_1_64_ },
+ { &hf_nbap_hSDSCH_Physical_Layer_Category_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_T_hSDSCH_Physical_Layer_Category },
{ &hf_nbap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_ProtocolExtensionContainer },
{ NULL, 0, 0, NULL }
};
@@ -22726,9 +23214,84 @@ static const per_sequence_t HSDSCH_FDD_Information_sequence[] = {
static int
dissect_nbap_HSDSCH_FDD_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1315 "../../asn1/nbap/nbap.cnf"
+/*
+ * Collect the information about the HSDSCH MACdFlows set up conversation(s) and set the conversation data.
+ */
+ address null_addr;
+ conversation_t *conversation = NULL;
+ umts_fp_conversation_info_t *umts_fp_conversation_info;
+ guint32 i;
+
+ if (!actx->pinfo->fd->flags.visited){
+ /* Set port to zero use that as an indication of wether we have data or not */
+ for (i = 0; i < maxNrOfMACdFlows; i++) {
+ nbap_hsdsch_channel_info[i].crnc_port = 0;
+ nbap_hsdsch_channel_info[i].rlc_mode = FP_RLC_MODE_UNKNOWN;
+ }
+ }
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_HSDSCH_FDD_Information, HSDSCH_FDD_Information_sequence);
+
+ if (actx->pinfo->fd->flags.visited){
+ return offset;
+ }
+ /* Set port to zero use that as an indication of wether we have data or not */
+ SET_ADDRESS(&null_addr, AT_NONE, 0, NULL);
+ for (i = 0; i < maxNrOfMACdFlows; i++) {
+ if (nbap_hsdsch_channel_info[i].crnc_port != 0){
+ nbap_debug3("HSDSCH-MACdFlows-Information:hsdsch_macdflow_id %u Look for conv on IP %s Port %u",
+ i,
+ ep_address_to_str (&(nbap_hsdsch_channel_info[i].crnc_address)),
+ nbap_hsdsch_channel_info[i].crnc_port);
+ conversation = find_conversation(actx->pinfo->fd->num, &(nbap_hsdsch_channel_info[i].crnc_address), &null_addr,
+ PT_UDP,
+ nbap_hsdsch_channel_info[i].crnc_port, 0, NO_ADDR_B);
+
+
+ if (conversation == NULL) {
+ /* It's not part of any conversation - create a new one. */
+ nbap_debug1("HSDSCH-MACdFlows-Information:Set up conv on Port %u",nbap_hsdsch_channel_info[i].crnc_port);
+ conversation = conversation_new(actx->pinfo->fd->num, &(nbap_hsdsch_channel_info[i].crnc_address),
+ &null_addr, PT_UDP, nbap_hsdsch_channel_info[i].crnc_port,
+ 0, NO_ADDR2|NO_PORT2);
+
+ /* Set dissector */
+ conversation_set_dissector(conversation, fp_handle);
+
+ if(actx->pinfo->link_dir==P2P_DIR_DL){
+ umts_fp_conversation_info = se_new0(umts_fp_conversation_info_t);
+ /* Fill in the HSDSCH relevant data */
+
+ umts_fp_conversation_info->iface_type = IuB_Interface;
+ umts_fp_conversation_info->division = Division_FDD;
+ umts_fp_conversation_info->channel = CHANNEL_HSDSCH;
+ umts_fp_conversation_info->dl_frame_number = 0;
+ umts_fp_conversation_info->ul_frame_number = actx->pinfo->fd->num;
+ SE_COPY_ADDRESS(&(umts_fp_conversation_info->crnc_address), &nbap_hsdsch_channel_info[i].crnc_address);
+ umts_fp_conversation_info->crnc_port = nbap_hsdsch_channel_info[i].crnc_port;
+
+ /* Cheat and use the DCH entries */
+ umts_fp_conversation_info->num_dch_in_flow++;
+ umts_fp_conversation_info->dchs_in_flow_list[umts_fp_conversation_info->num_dch_in_flow -1] = i;
+
+ if(nbap_hsdsch_channel_info[i].hsdsch_physical_layer_category > 12){
+ umts_fp_conversation_info->hsdsch_entity = ehs;
+ }else{
+ umts_fp_conversation_info->hsdsch_entity = hs;
+ }
+ umts_fp_conversation_info->rlc_mode = nbap_hsdsch_channel_info[i].rlc_mode;
+ set_umts_fp_conv_data(conversation, umts_fp_conversation_info);
+ }
+ }
+ }
+ }
+
+
+
+
return offset;
}
@@ -23824,6 +24387,16 @@ dissect_nbap_MAChsResetScheme(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
static int
+dissect_nbap_INTEGER_1_64_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 64U, NULL, TRUE);
+
+ return offset;
+}
+
+
+
+static int
dissect_nbap_NumHS_SCCH_Codes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1U, maxNrOfHSSCCHCodes, NULL, FALSE);
@@ -25018,8 +25591,52 @@ dissect_nbap_IB_OC_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p
static int
dissect_nbap_IB_SG_DATA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 531 "../../asn1/nbap/nbap.cnf"
+ tvbuff_t *parameter_tvb=NULL;
+ proto_tree *subtree;
+
offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
- NO_BOUND, NO_BOUND, FALSE, NULL);
+ NO_BOUND, NO_BOUND, FALSE, &parameter_tvb);
+
+
+ if(!parameter_tvb)
+ return offset;
+ if((segment_type == 5 /*complete-SIB */)||(segment_type == 6 /*complete-SIB-short */)){
+ subtree = proto_item_add_subtree(actx->created_item, ett_nbap_ib_sg_data);
+ }else{
+ return offset;
+ }
+
+ switch(ib_type){
+ case 0:
+ /* mIB */
+ dissect_rrc_MasterInformationBlock_PDU(parameter_tvb, actx->pinfo, subtree);
+ break;
+ case 3:
+ /* iB-Type: sIB1 (3) */
+ dissect_rrc_SysInfoType1_PDU(parameter_tvb, actx->pinfo, subtree);
+ break;
+ case 4:
+ /* iB-Type: sIB2 (4) */
+ dissect_rrc_SysInfoType2_PDU(parameter_tvb, actx->pinfo, subtree);
+ break;
+ case 5:
+ /* iB-Type: sIB3 (5) */
+ dissect_rrc_SysInfoType3_PDU(parameter_tvb, actx->pinfo, subtree);
+ break;
+ case 9:
+ /* iB-Type: sIB7 (9) */
+ dissect_rrc_SysInfoType7_PDU(parameter_tvb, actx->pinfo, subtree);
+ break;
+ case 14:
+ /* iB-Type: sIB12 (14) */
+ dissect_rrc_SysInfoType12_PDU(parameter_tvb, actx->pinfo, subtree);
+ break;
+ default:
+ break;
+ }
+
+
return offset;
}
@@ -25108,8 +25725,12 @@ static const value_string nbap_IB_Type_vals[] = {
static int
dissect_nbap_IB_Type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 518 "../../asn1/nbap/nbap.cnf"
offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
- 26, NULL, TRUE, 15, NULL);
+ 26, &ib_type, TRUE, 15, NULL);
+
+
+
return offset;
}
@@ -27234,8 +27855,23 @@ dissect_nbap_RACH_SubChannelNumbers(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
+
+static int
+dissect_nbap_T_dCH_id(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1050 "../../asn1/nbap/nbap.cnf"
+
+ offset = dissect_nbap_DCH_ID(tvb, offset, actx, tree, hf_index);
+
+ dch_id = t_dch_id;
+
+
+
+ return offset;
+}
+
+
static const per_sequence_t RL_Specific_DCH_Info_Item_sequence[] = {
- { &hf_nbap_dCH_id , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
+ { &hf_nbap_dCH_id , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_T_dCH_id },
{ &hf_nbap_bindingID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_BindingID },
{ &hf_nbap_transportlayeraddress, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_TransportLayerAddress },
{ &hf_nbap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_ProtocolExtensionContainer },
@@ -27244,9 +27880,100 @@ static const per_sequence_t RL_Specific_DCH_Info_Item_sequence[] = {
static int
dissect_nbap_RL_Specific_DCH_Info_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1055 "../../asn1/nbap/nbap.cnf"
+address dst_addr, null_addr;
+conversation_t *conversation = NULL;
+umts_fp_conversation_info_t *umts_fp_conversation_info;
+int i, j, num_tf;
+
+transportLayerAddress_ipv4 = 0;
+BindingID_port = 0;
+dch_id = 0xFFFFFFFF;
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_RL_Specific_DCH_Info_Item, RL_Specific_DCH_Info_Item_sequence);
+
+ if (actx->pinfo->fd->flags.visited||transportLayerAddress_ipv4==0||BindingID_port == 0)
+ {
+ return offset;
+ }
+ SET_ADDRESS(&null_addr, AT_NONE, 0, NULL);
+
+ dst_addr.type=AT_IPv4;
+ dst_addr.len=4;
+ dst_addr.data=(guint8 *)&transportLayerAddress_ipv4;
+
+ conversation = find_conversation(actx->pinfo->fd->num,&dst_addr,
+ &null_addr, PT_UDP, BindingID_port,
+ 0, NO_ADDR_B|NO_PORT_B);
+
+ if (conversation == NULL) {
+ /* It's not part of any conversation - create a new one. */
+ conversation = conversation_new(actx->pinfo->fd->num, &dst_addr,
+ &null_addr, PT_UDP,BindingID_port ,
+ 0, NO_ADDR2|NO_PORT2);
+
+ /* Set dissector */
+ conversation_set_dissector(conversation, fp_handle);
+ if(actx->pinfo->link_dir==P2P_DIR_DL){
+ umts_fp_conversation_info = se_new0(umts_fp_conversation_info_t);
+ /* Fill in the data */
+ umts_fp_conversation_info->iface_type = IuB_Interface;
+ umts_fp_conversation_info->division = Division_FDD;
+ umts_fp_conversation_info->channel = CHANNEL_DCH;
+ umts_fp_conversation_info->dl_frame_number = 0;
+ umts_fp_conversation_info->ul_frame_number = actx->pinfo->fd->num;
+ SE_COPY_ADDRESS(&(umts_fp_conversation_info->crnc_address), &dst_addr);
+ umts_fp_conversation_info->crnc_port = BindingID_port;
+ umts_fp_conversation_info->rlc_mode = FP_RLC_MODE_UNKNOWN;
+
+ /* DCH's in this flow */
+ umts_fp_conversation_info->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present;
+ /* Set data for First or single channel */
+ umts_fp_conversation_info->fp_dch_channel_info[0].num_ul_chans = num_tf = nbap_dch_chnl_info[dch_id].num_ul_chans;
+ for (j = 0; j < num_tf; j++) {
+ umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_tf_size[j] = nbap_dch_chnl_info[dch_id].ul_chan_tf_size[j];
+ umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_num_tbs[j] = nbap_dch_chnl_info[dch_id].ul_chan_num_tbs[j];
+ }
+
+ /* Traffic flows per DCH(DL) */
+ umts_fp_conversation_info->fp_dch_channel_info[0].num_dl_chans = num_tf = nbap_dch_chnl_info[dch_id].num_dl_chans;
+ for (j = 0; j < num_tf; j++) {
+ umts_fp_conversation_info->fp_dch_channel_info[0].dl_chan_tf_size[j] = nbap_dch_chnl_info[dch_id].dl_chan_tf_size[j];
+ umts_fp_conversation_info->fp_dch_channel_info[0].dl_chan_num_tbs[j] = nbap_dch_chnl_info[dch_id].dl_chan_num_tbs[j];
+ }
+
+ /* Set data for associated DCH's if we have any */
+ i = dch_id;
+ umts_fp_conversation_info->dchs_in_flow_list[0] = dch_id;
+ while(nbap_dch_chnl_info[i].next_dch != 0){
+ i = nbap_dch_chnl_info[i].next_dch;
+ umts_fp_conversation_info->num_dch_in_flow++;
+ umts_fp_conversation_info->dchs_in_flow_list[umts_fp_conversation_info->num_dch_in_flow] = i;
+ /* Traffic flows per DCH(UL) */
+ umts_fp_conversation_info->fp_dch_channel_info[umts_fp_conversation_info->num_dch_in_flow].num_ul_chans = num_tf = nbap_dch_chnl_info[i].num_ul_chans;
+ for (j = 0; j < num_tf; j++) {
+ umts_fp_conversation_info->fp_dch_channel_info[umts_fp_conversation_info->num_dch_in_flow].ul_chan_tf_size[j] = nbap_dch_chnl_info[i].ul_chan_tf_size[j];
+ umts_fp_conversation_info->fp_dch_channel_info[umts_fp_conversation_info->num_dch_in_flow].ul_chan_num_tbs[j] = nbap_dch_chnl_info[i].ul_chan_num_tbs[j];
+ }
+
+ /* Traffic flows per DCH(DL) */
+ umts_fp_conversation_info->fp_dch_channel_info[umts_fp_conversation_info->num_dch_in_flow].num_dl_chans = num_tf = nbap_dch_chnl_info[i].num_dl_chans;
+ for (j = 0; j < num_tf; j++) {
+ umts_fp_conversation_info->fp_dch_channel_info[umts_fp_conversation_info->num_dch_in_flow].dl_chan_tf_size[j] = nbap_dch_chnl_info[i].dl_chan_tf_size[j];
+ umts_fp_conversation_info->fp_dch_channel_info[umts_fp_conversation_info->num_dch_in_flow].dl_chan_num_tbs[j] = nbap_dch_chnl_info[i].dl_chan_num_tbs[j];
+ }
+ }
+ umts_fp_conversation_info->num_dch_in_flow++;
+ umts_fp_conversation_info->dchs_in_flow_list[umts_fp_conversation_info->num_dch_in_flow] = i;
+ set_umts_fp_conv_data(conversation, umts_fp_conversation_info);
+ }
+ }
+
+
+
+
return offset;
}
@@ -27275,9 +28002,63 @@ static const per_sequence_t RL_Specific_E_DCH_Information_Item_sequence[] = {
static int
dissect_nbap_RL_Specific_E_DCH_Information_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1145 "../../asn1/nbap/nbap.cnf"
+address dst_addr, null_addr;
+conversation_t *conversation;
+umts_fp_conversation_info_t *umts_fp_conversation_info;
+
+transportLayerAddress_ipv4 = 0;
+BindingID_port = 0;
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_RL_Specific_E_DCH_Information_Item, RL_Specific_E_DCH_Information_Item_sequence);
+
+ if (actx->pinfo->fd->flags.visited||transportLayerAddress_ipv4==0||BindingID_port == 0)
+ {
+ return offset;
+ }
+ SET_ADDRESS(&null_addr, AT_NONE, 0, NULL);
+
+ dst_addr.type=AT_IPv4;
+ dst_addr.len=4;
+ dst_addr.data=(guint8 *)&transportLayerAddress_ipv4;
+
+ conversation = find_conversation(actx->pinfo->fd->num,&dst_addr,
+ &null_addr, PT_UDP, BindingID_port,
+ 0, NO_ADDR_B|NO_PORT_B);
+
+ if (conversation == NULL) {
+ /* It's not part of any conversation - create a new one. */
+ conversation = conversation_new(actx->pinfo->fd->num, &dst_addr,
+ &null_addr, PT_UDP,BindingID_port ,
+ 0, NO_ADDR2|NO_PORT2);
+
+ /* Set dissector */
+ conversation_set_dissector(conversation, fp_handle);
+ if(actx->pinfo->link_dir==P2P_DIR_DL){
+ umts_fp_conversation_info = se_new0(umts_fp_conversation_info_t);
+ /* Fill in the data */
+ umts_fp_conversation_info->iface_type = IuB_Interface;
+ umts_fp_conversation_info->division = Division_FDD;
+ umts_fp_conversation_info->channel = CHANNEL_EDCH;
+ umts_fp_conversation_info->dl_frame_number = 0;
+ umts_fp_conversation_info->ul_frame_number = actx->pinfo->fd->num;
+ SE_COPY_ADDRESS(&(umts_fp_conversation_info->crnc_address), &dst_addr);
+ umts_fp_conversation_info->crnc_port = BindingID_port;
+ umts_fp_conversation_info->rlc_mode = FP_RLC_MODE_UNKNOWN;
+
+ /* Set address for collection of DDI entries */
+ COPY_ADDRESS(&(nbap_edch_channel_info[e_dch_macdflow_id].crnc_address),&dst_addr);
+ nbap_edch_channel_info[e_dch_macdflow_id].crnc_port = BindingID_port;
+
+ set_umts_fp_conv_data(conversation, umts_fp_conversation_info);
+ }
+
+ }
+
+
+
return offset;
}
@@ -28206,8 +28987,12 @@ static const value_string nbap_Segment_Type_vals[] = {
static int
dissect_nbap_Segment_Type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 521 "../../asn1/nbap/nbap.cnf"
offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
- 7, NULL, TRUE, 0, NULL);
+ 7, &segment_type, TRUE, 0, NULL);
+
+
+
return offset;
}
@@ -30535,6 +31320,12 @@ static const per_sequence_t CommonTransportChannelSetupRequestFDD_sequence[] = {
static int
dissect_nbap_CommonTransportChannelSetupRequestFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 146 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"CommonTransportChannelSetupRequest(FDD) ");
+/* CRNC -> Node B */
+actx->pinfo->link_dir=P2P_DIR_DL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_CommonTransportChannelSetupRequestFDD, CommonTransportChannelSetupRequestFDD_sequence);
@@ -30719,9 +31510,102 @@ static const per_sequence_t FACH_ParametersItem_CTCH_SetupRqstFDD_sequence[] = {
static int
dissect_nbap_FACH_ParametersItem_CTCH_SetupRqstFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 861 "../../asn1/nbap/nbap.cnf"
+address dst_addr, null_addr;
+conversation_t *conversation;
+
+umts_fp_conversation_info_t *umts_fp_conversation_info;
+int i, j, num_tf;
+
+transportLayerAddress_ipv4 = 0;
+BindingID_port = 0;
+
+transportFormatSet_type = NBAP_CPCH;
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_FACH_ParametersItem_CTCH_SetupRqstFDD, FACH_ParametersItem_CTCH_SetupRqstFDD_sequence);
+
+ if (actx->pinfo->fd->flags.visited||transportLayerAddress_ipv4==0||BindingID_port == 0)
+ {
+ return offset;
+ }
+ SET_ADDRESS(&null_addr, AT_NONE, 0, NULL);
+
+ dst_addr.type=AT_IPv4;
+ dst_addr.len=4;
+ dst_addr.data=(guint8 *)&transportLayerAddress_ipv4;
+
+ conversation = find_conversation(actx->pinfo->fd->num,&dst_addr,
+ &null_addr, PT_UDP, BindingID_port,
+ 0, NO_ADDR_B|NO_PORT_B);
+
+ if (conversation == NULL) {
+ /* It's not part of any conversation - create a new one. */
+ conversation = conversation_new(actx->pinfo->fd->num, &dst_addr,
+ &null_addr, PT_UDP,BindingID_port ,
+ 0, NO_ADDR2|NO_PORT2);
+
+ /* Set dissector */
+ conversation_set_dissector(conversation, fp_handle);
+ if(actx->pinfo->link_dir==P2P_DIR_DL){
+ umts_fp_conversation_info = se_new0(umts_fp_conversation_info_t);
+ /* Fill in the data */
+ umts_fp_conversation_info->iface_type = IuB_Interface;
+ umts_fp_conversation_info->division = Division_FDD;
+ umts_fp_conversation_info->channel = CHANNEL_FACH_FDD;
+ umts_fp_conversation_info->dl_frame_number = 0;
+ umts_fp_conversation_info->ul_frame_number = actx->pinfo->fd->num;
+ SE_COPY_ADDRESS(&(umts_fp_conversation_info->crnc_address), &dst_addr);
+ umts_fp_conversation_info->crnc_port = BindingID_port;
+ umts_fp_conversation_info->rlc_mode = FP_RLC_MODE_UNKNOWN;
+
+ /* DCH's in this flow */
+ umts_fp_conversation_info->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present;
+ /* Set data for First or single channel */
+ umts_fp_conversation_info->fp_dch_channel_info[0].num_ul_chans = num_tf = nbap_dch_chnl_info[commonphysicalchannelid].num_ul_chans;
+ for (j = 0; j < num_tf; j++) {
+ umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_tf_size[j] = nbap_dch_chnl_info[commonphysicalchannelid].ul_chan_tf_size[j];
+ umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_num_tbs[j] = nbap_dch_chnl_info[commonphysicalchannelid].ul_chan_num_tbs[j];
+ }
+
+ /* Traffic flows per DCH(DL) */
+ umts_fp_conversation_info->fp_dch_channel_info[0].num_dl_chans = num_tf = nbap_dch_chnl_info[commonphysicalchannelid].num_dl_chans;
+ for (j = 0; j < num_tf; j++) {
+ umts_fp_conversation_info->fp_dch_channel_info[0].dl_chan_tf_size[j] = nbap_dch_chnl_info[commonphysicalchannelid].dl_chan_tf_size[j];
+ umts_fp_conversation_info->fp_dch_channel_info[0].dl_chan_num_tbs[j] = nbap_dch_chnl_info[commonphysicalchannelid].dl_chan_num_tbs[j];
+ }
+
+ /* Set data for associated DCH's if we have any */
+ i = commonphysicalchannelid;
+ umts_fp_conversation_info->dchs_in_flow_list[0] = commonphysicalchannelid;
+ while(nbap_dch_chnl_info[i].next_dch != 0){
+ i = nbap_dch_chnl_info[i].next_dch;
+ umts_fp_conversation_info->num_dch_in_flow++;
+ umts_fp_conversation_info->dchs_in_flow_list[umts_fp_conversation_info->num_dch_in_flow] = i;
+ /* Traffic flows per DCH(UL) */
+ umts_fp_conversation_info->fp_dch_channel_info[umts_fp_conversation_info->num_dch_in_flow].num_ul_chans = num_tf = nbap_dch_chnl_info[i].num_ul_chans;
+ for (j = 0; j < num_tf; j++) {
+ umts_fp_conversation_info->fp_dch_channel_info[umts_fp_conversation_info->num_dch_in_flow].ul_chan_tf_size[j] = nbap_dch_chnl_info[i].ul_chan_tf_size[j];
+ umts_fp_conversation_info->fp_dch_channel_info[umts_fp_conversation_info->num_dch_in_flow].ul_chan_num_tbs[j] = nbap_dch_chnl_info[i].ul_chan_num_tbs[j];
+ }
+
+ /* Traffic flows per DCH(DL) */
+ umts_fp_conversation_info->fp_dch_channel_info[umts_fp_conversation_info->num_dch_in_flow].num_dl_chans = num_tf = nbap_dch_chnl_info[i].num_dl_chans;
+ for (j = 0; j < num_tf; j++) {
+ umts_fp_conversation_info->fp_dch_channel_info[umts_fp_conversation_info->num_dch_in_flow].dl_chan_tf_size[j] = nbap_dch_chnl_info[i].dl_chan_tf_size[j];
+ umts_fp_conversation_info->fp_dch_channel_info[umts_fp_conversation_info->num_dch_in_flow].dl_chan_num_tbs[j] = nbap_dch_chnl_info[i].dl_chan_num_tbs[j];
+ }
+ }
+ umts_fp_conversation_info->num_dch_in_flow++;
+ umts_fp_conversation_info->dchs_in_flow_list[umts_fp_conversation_info->num_dch_in_flow] = i;
+ set_umts_fp_conv_data(conversation, umts_fp_conversation_info);
+ }
+
+ }
+
+
+
return offset;
}
@@ -30740,6 +31624,22 @@ dissect_nbap_FACH_ParametersListIE_CTCH_SetupRqstFDD(tvbuff_t *tvb _U_, int offs
}
+
+static int
+dissect_nbap_T_transportFormatSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 979 "../../asn1/nbap/nbap.cnf"
+ transportFormatSet_type = NBAP_PCH;
+ nbap_dch_chnl_info[commontransportchannelid].num_dl_chans = 0;
+ nbap_dch_chnl_info[commontransportchannelid].num_ul_chans = 0;
+
+
+
+ offset = dissect_nbap_TransportFormatSet(tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
static const per_sequence_t PICH_Parameters_CTCH_SetupRqstFDD_sequence[] = {
{ &hf_nbap_commonPhysicalChannelID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_CommonPhysicalChannelID },
{ &hf_nbap_fdd_dl_ChannelisationCodeNumber, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_FDD_DL_ChannelisationCodeNumber },
@@ -30761,7 +31661,7 @@ dissect_nbap_PICH_Parameters_CTCH_SetupRqstFDD(tvbuff_t *tvb _U_, int offset _U_
static const per_sequence_t PCH_ParametersItem_CTCH_SetupRqstFDD_sequence[] = {
{ &hf_nbap_commonTransportChannelID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_CommonTransportChannelID },
- { &hf_nbap_transportFormatSet, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_TransportFormatSet },
+ { &hf_nbap_transportFormatSet_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_T_transportFormatSet },
{ &hf_nbap_toAWS , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_ToAWS },
{ &hf_nbap_toAWE , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_ToAWE },
{ &hf_nbap_pCH_Power , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DL_Power },
@@ -30772,9 +31672,111 @@ static const per_sequence_t PCH_ParametersItem_CTCH_SetupRqstFDD_sequence[] = {
static int
dissect_nbap_PCH_ParametersItem_CTCH_SetupRqstFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 760 "../../asn1/nbap/nbap.cnf"
+
+address dst_addr, null_addr;
+conversation_t *conversation;
+
+umts_fp_conversation_info_t *umts_fp_conversation_info;
+int i, j, num_tf;
+
+transportLayerAddress_ipv4 = 0;
+BindingID_port = 0;
+
+/* There can only be one item, set num_items here to collect the TransportFormatSet data */
+num_items = 1;
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_PCH_ParametersItem_CTCH_SetupRqstFDD, PCH_ParametersItem_CTCH_SetupRqstFDD_sequence);
+
+ if (actx->pinfo->fd->flags.visited||transportLayerAddress_ipv4==0||BindingID_port == 0)
+ {
+ return offset;
+ }
+ SET_ADDRESS(&null_addr, AT_NONE, 0, NULL);
+
+ dst_addr.type=AT_IPv4;
+ dst_addr.len=4;
+ dst_addr.data=(guint8 *)&transportLayerAddress_ipv4;
+
+ conversation = find_conversation(actx->pinfo->fd->num,&dst_addr,
+ &null_addr, PT_UDP, BindingID_port,
+ 0, NO_ADDR_B|NO_PORT_B);
+
+ if (conversation == NULL) {
+ /* It's not part of any conversation - create a new one. */
+ conversation = conversation_new(actx->pinfo->fd->num, &dst_addr,
+ &null_addr, PT_UDP,BindingID_port ,
+ 0, NO_ADDR2|NO_PORT2);
+
+ /* Set dissector */
+ conversation_set_dissector(conversation, fp_handle);
+ if(actx->pinfo->link_dir==P2P_DIR_DL){
+ umts_fp_conversation_info = se_new0(umts_fp_conversation_info_t);
+ /* Fill in the data */
+ umts_fp_conversation_info->iface_type = IuB_Interface;
+ umts_fp_conversation_info->division = Division_FDD;
+ umts_fp_conversation_info->channel = CHANNEL_PCH;
+ umts_fp_conversation_info->dl_frame_number = 0;
+ umts_fp_conversation_info->ul_frame_number = actx->pinfo->fd->num;
+ SE_COPY_ADDRESS(&(umts_fp_conversation_info->crnc_address), &dst_addr);
+ umts_fp_conversation_info->crnc_port = BindingID_port;
+ umts_fp_conversation_info->paging_indications = paging_indications;
+ umts_fp_conversation_info->rlc_mode = FP_RLC_MODE_UNKNOWN;
+
+ /* DCH's in this flow */
+ umts_fp_conversation_info->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present;
+ /* Set data for First or single channel */
+ umts_fp_conversation_info->fp_dch_channel_info[0].num_ul_chans = num_tf = nbap_dch_chnl_info[commontransportchannelid].num_ul_chans;
+ nbap_debug1("PCH-ParametersItem-CTCH-SetupRqstFDD: num_tf %u",num_tf);
+ for (j = 0; j < num_tf; j++) {
+ umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_tf_size[j] = nbap_dch_chnl_info[commontransportchannelid].ul_chan_tf_size[j];
+ umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_num_tbs[j] = nbap_dch_chnl_info[commontransportchannelid].ul_chan_num_tbs[j];
+ nbap_debug2("PCH-ParametersItem-CTCH-SetupRqstFDD:UL tf %u ul_chan_tf_size %u",j, nbap_dch_chnl_info[commontransportchannelid].ul_chan_tf_size[j]);
+ }
+
+ /* Traffic flows per DCH(DL) */
+ umts_fp_conversation_info->fp_dch_channel_info[0].num_dl_chans = num_tf = nbap_dch_chnl_info[commontransportchannelid].num_dl_chans;
+ for (j = 0; j < num_tf; j++) {
+ umts_fp_conversation_info->fp_dch_channel_info[0].dl_chan_tf_size[j] = nbap_dch_chnl_info[commontransportchannelid].dl_chan_tf_size[j];
+ umts_fp_conversation_info->fp_dch_channel_info[0].dl_chan_num_tbs[j] = nbap_dch_chnl_info[commontransportchannelid].dl_chan_num_tbs[j];
+ nbap_debug2("PCH-ParametersItem-CTCH-SetupRqstFDD:DL tf %u ul_chan_tf_size %u",j, nbap_dch_chnl_info[commontransportchannelid].dl_chan_tf_size[j]);
+ }
+
+ /* Set data for associated DCH's if we have any */
+ i = commontransportchannelid;
+ nbap_debug2("PCH-ParametersItem-CTCH-SetupRqstFDD: commontransportchannelid %u next ch %u",commontransportchannelid, nbap_dch_chnl_info[i].next_dch);
+ umts_fp_conversation_info->dchs_in_flow_list[0] = commontransportchannelid;
+ while(nbap_dch_chnl_info[i].next_dch != 0){
+ i = nbap_dch_chnl_info[i].next_dch;
+ umts_fp_conversation_info->num_dch_in_flow++;
+ umts_fp_conversation_info->dchs_in_flow_list[umts_fp_conversation_info->num_dch_in_flow] = i;
+ /* Traffic flows per DCH(UL) */
+ umts_fp_conversation_info->fp_dch_channel_info[umts_fp_conversation_info->num_dch_in_flow].num_ul_chans = num_tf = nbap_dch_chnl_info[i].num_ul_chans;
+ for (j = 0; j < num_tf; j++) {
+ umts_fp_conversation_info->fp_dch_channel_info[umts_fp_conversation_info->num_dch_in_flow].ul_chan_tf_size[j] = nbap_dch_chnl_info[i].ul_chan_tf_size[j];
+ umts_fp_conversation_info->fp_dch_channel_info[umts_fp_conversation_info->num_dch_in_flow].ul_chan_num_tbs[j] = nbap_dch_chnl_info[i].ul_chan_num_tbs[j];
+ }
+
+ /* Traffic flows per DCH(DL) */
+ umts_fp_conversation_info->fp_dch_channel_info[umts_fp_conversation_info->num_dch_in_flow].num_dl_chans = num_tf = nbap_dch_chnl_info[i].num_dl_chans;
+ for (j = 0; j < num_tf; j++) {
+ umts_fp_conversation_info->fp_dch_channel_info[umts_fp_conversation_info->num_dch_in_flow].dl_chan_tf_size[j] = nbap_dch_chnl_info[i].dl_chan_tf_size[j];
+ umts_fp_conversation_info->fp_dch_channel_info[umts_fp_conversation_info->num_dch_in_flow].dl_chan_num_tbs[j] = nbap_dch_chnl_info[i].dl_chan_num_tbs[j];
+ }
+ }
+ umts_fp_conversation_info->num_dch_in_flow++;
+ nbap_debug1("PCH-ParametersItem-CTCH-SetupRqstFDD: num_dch_in_flow %u", umts_fp_conversation_info->num_dch_in_flow);
+ umts_fp_conversation_info->dchs_in_flow_list[umts_fp_conversation_info->num_dch_in_flow] = i;
+ set_umts_fp_conv_data(conversation, umts_fp_conversation_info);
+ }
+
+ }
+
+
+
+
return offset;
}
@@ -30807,9 +31809,77 @@ static const per_sequence_t RACH_ParametersItem_CTCH_SetupRqstFDD_sequence[] = {
static int
dissect_nbap_RACH_ParametersItem_CTCH_SetupRqstFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 672 "../../asn1/nbap/nbap.cnf"
+address dst_addr, null_addr;
+conversation_t *conversation;
+umts_fp_conversation_info_t *umts_fp_conversation_info;
+int j, num_tf;
+
+transportLayerAddress_ipv4 = 0;
+BindingID_port = 0;
+transportFormatSet_type = NBAP_CPCH;
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_RACH_ParametersItem_CTCH_SetupRqstFDD, RACH_ParametersItem_CTCH_SetupRqstFDD_sequence);
+
+ if (actx->pinfo->fd->flags.visited||transportLayerAddress_ipv4==0||BindingID_port == 0)
+ {
+ return offset;
+ }
+ SET_ADDRESS(&null_addr, AT_NONE, 0, NULL);
+
+ dst_addr.type=AT_IPv4;
+ dst_addr.len=4;
+ dst_addr.data=(guint8 *)&transportLayerAddress_ipv4;
+
+ conversation = find_conversation(actx->pinfo->fd->num,&dst_addr,
+ &null_addr, PT_UDP, BindingID_port,
+ 0, NO_ADDR_B|NO_PORT_B);
+
+ if (conversation == NULL) {
+ /* It's not part of any conversation - create a new one. */
+ conversation = conversation_new(actx->pinfo->fd->num, &dst_addr,
+ &null_addr, PT_UDP,BindingID_port ,
+ 0, NO_ADDR2|NO_PORT2);
+
+ /* Set dissector */
+ conversation_set_dissector(conversation, fp_handle);
+ if(actx->pinfo->link_dir==P2P_DIR_DL){
+ umts_fp_conversation_info = se_new0(umts_fp_conversation_info_t);
+ /* Fill in the data */
+ umts_fp_conversation_info->iface_type = IuB_Interface;
+ umts_fp_conversation_info->division = Division_FDD;
+ umts_fp_conversation_info->channel = CHANNEL_RACH_FDD;
+ umts_fp_conversation_info->dl_frame_number = 0;
+ umts_fp_conversation_info->ul_frame_number = actx->pinfo->fd->num;
+ SE_COPY_ADDRESS(&(umts_fp_conversation_info->crnc_address), &dst_addr);
+ umts_fp_conversation_info->crnc_port = BindingID_port;
+ umts_fp_conversation_info->rlc_mode = FP_RLC_MODE_UNKNOWN;
+
+ /* DCH's in this flow */
+ umts_fp_conversation_info->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present;
+ /* Set data for First or single channel */
+ umts_fp_conversation_info->fp_dch_channel_info[0].num_ul_chans = num_tf = nbap_dch_chnl_info[commonphysicalchannelid].num_ul_chans;
+ for (j = 0; j < num_tf; j++) {
+ umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_tf_size[j] = nbap_dch_chnl_info[commonphysicalchannelid].ul_chan_tf_size[j];
+ umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_num_tbs[j] = nbap_dch_chnl_info[commonphysicalchannelid].ul_chan_num_tbs[j];
+ }
+
+ /* Traffic flows per DCH(DL) */
+ umts_fp_conversation_info->fp_dch_channel_info[0].num_dl_chans = num_tf = nbap_dch_chnl_info[commonphysicalchannelid].num_dl_chans;
+ for (j = 0; j < num_tf; j++) {
+ umts_fp_conversation_info->fp_dch_channel_info[0].dl_chan_tf_size[j] = nbap_dch_chnl_info[commonphysicalchannelid].dl_chan_tf_size[j];
+ umts_fp_conversation_info->fp_dch_channel_info[0].dl_chan_num_tbs[j] = nbap_dch_chnl_info[commonphysicalchannelid].dl_chan_num_tbs[j];
+ }
+
+ umts_fp_conversation_info->dchs_in_flow_list[0] = commonphysicalchannelid;
+ umts_fp_conversation_info->num_dch_in_flow=1;
+ set_umts_fp_conv_data(conversation, umts_fp_conversation_info);
+ }
+ }
+
+
return offset;
}
@@ -31047,7 +32117,7 @@ dissect_nbap_Secondary_CCPCH_768_parameterList_CTCH_SetupRqstTDD(tvbuff_t *tvb _
static const per_sequence_t FACH_ParametersItem_CTCH_SetupRqstTDD_sequence[] = {
{ &hf_nbap_commonTransportChannelID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_CommonTransportChannelID },
{ &hf_nbap_fACH_CCTrCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_CCTrCH_ID },
- { &hf_nbap_dl_TransportFormatSet, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_TransportFormatSet },
+ { &hf_nbap_dl_TransportFormatSet_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_TransportFormatSet },
{ &hf_nbap_toAWS , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_ToAWS },
{ &hf_nbap_toAWE , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_ToAWE },
{ &hf_nbap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_ProtocolExtensionContainer },
@@ -31089,7 +32159,7 @@ dissect_nbap_PICH_Parameters_CTCH_SetupRqstTDD(tvbuff_t *tvb _U_, int offset _U_
static const per_sequence_t PCH_ParametersItem_CTCH_SetupRqstTDD_sequence[] = {
{ &hf_nbap_commonTransportChannelID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_CommonTransportChannelID },
{ &hf_nbap_pCH_CCTrCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_CCTrCH_ID },
- { &hf_nbap_dl_TransportFormatSet, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_TransportFormatSet },
+ { &hf_nbap_dl_TransportFormatSet_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_TransportFormatSet },
{ &hf_nbap_toAWS , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_ToAWS },
{ &hf_nbap_toAWE , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_ToAWE },
{ &hf_nbap_pICH_Parameters_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_PICH_Parameters_CTCH_SetupRqstTDD },
@@ -31517,6 +32587,12 @@ static const per_sequence_t CommonTransportChannelSetupResponse_sequence[] = {
static int
dissect_nbap_CommonTransportChannelSetupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 152 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"CommonTransportChannelSetupResponse ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_CommonTransportChannelSetupResponse, CommonTransportChannelSetupResponse_sequence);
@@ -31546,6 +32622,13 @@ static const per_sequence_t CommonTransportChannelSetupFailure_sequence[] = {
static int
dissect_nbap_CommonTransportChannelSetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 158 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"CommonTransportChannelSetupFailure ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_CommonTransportChannelSetupFailure, CommonTransportChannelSetupFailure_sequence);
@@ -32259,6 +33342,12 @@ static const per_sequence_t UnblockResourceIndication_sequence[] = {
static int
dissect_nbap_UnblockResourceIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 482 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"UnblockResourceIndication ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_UnblockResourceIndication, UnblockResourceIndication_sequence);
@@ -32274,6 +33363,12 @@ static const per_sequence_t AuditRequiredIndication_sequence[] = {
static int
dissect_nbap_AuditRequiredIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 392 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"AuditRequiredIndication ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_AuditRequiredIndication, AuditRequiredIndication_sequence);
@@ -32289,6 +33384,12 @@ static const per_sequence_t AuditRequest_sequence[] = {
static int
dissect_nbap_AuditRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 176 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"AuditRequest ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_AuditRequest, AuditRequest_sequence);
@@ -32304,6 +33405,12 @@ static const per_sequence_t AuditResponse_sequence[] = {
static int
dissect_nbap_AuditResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 182 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"AuditResponse ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_AuditResponse, AuditResponse_sequence);
@@ -32892,6 +33999,13 @@ static const per_sequence_t AuditFailure_sequence[] = {
static int
dissect_nbap_AuditFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 188 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"AuditFailure ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_AuditFailure, AuditFailure_sequence);
@@ -32907,6 +34021,12 @@ static const per_sequence_t CommonMeasurementInitiationRequest_sequence[] = {
static int
dissect_nbap_CommonMeasurementInitiationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 253 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"CommonMeasurementInitiationRequest ");
+/* CRNC -> Node B */
+actx->pinfo->link_dir=P2P_DIR_DL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_CommonMeasurementInitiationRequest, CommonMeasurementInitiationRequest_sequence);
@@ -33019,6 +34139,12 @@ static const per_sequence_t CommonMeasurementInitiationResponse_sequence[] = {
static int
dissect_nbap_CommonMeasurementInitiationResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 259 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"CommonMeasurementInitiationResponse ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_CommonMeasurementInitiationResponse, CommonMeasurementInitiationResponse_sequence);
@@ -33129,6 +34255,13 @@ static const per_sequence_t CommonMeasurementInitiationFailure_sequence[] = {
static int
dissect_nbap_CommonMeasurementInitiationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 265 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"CommonMeasurementInitiationFailure ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_CommonMeasurementInitiationFailure, CommonMeasurementInitiationFailure_sequence);
@@ -33144,6 +34277,12 @@ static const per_sequence_t CommonMeasurementReport_sequence[] = {
static int
dissect_nbap_CommonMeasurementReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 398 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"CommonMeasurementReport ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_CommonMeasurementReport, CommonMeasurementReport_sequence);
@@ -33254,6 +34393,12 @@ static const per_sequence_t CommonMeasurementTerminationRequest_sequence[] = {
static int
dissect_nbap_CommonMeasurementTerminationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 404 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"CommonMeasurementTerminationRequest ");
+/* CRNC -> Node B */
+actx->pinfo->link_dir=P2P_DIR_DL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_CommonMeasurementTerminationRequest, CommonMeasurementTerminationRequest_sequence);
@@ -33269,6 +34414,12 @@ static const per_sequence_t CommonMeasurementFailureIndication_sequence[] = {
static int
dissect_nbap_CommonMeasurementFailureIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 410 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"CommonMeasurementFailureIndication ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_CommonMeasurementFailureIndication, CommonMeasurementFailureIndication_sequence);
@@ -33284,6 +34435,12 @@ static const per_sequence_t CellSetupRequestFDD_sequence[] = {
static int
dissect_nbap_CellSetupRequestFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 118 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"CellSetupRequest(FDD) ");
+/* CRNC -> Node B */
+actx->pinfo->link_dir=P2P_DIR_DL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_CellSetupRequestFDD, CellSetupRequestFDD_sequence);
@@ -33810,6 +34967,12 @@ static const per_sequence_t CellSetupResponse_sequence[] = {
static int
dissect_nbap_CellSetupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 124 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"CellSetupResponse ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_CellSetupResponse, CellSetupResponse_sequence);
@@ -33825,6 +34988,13 @@ static const per_sequence_t CellSetupFailure_sequence[] = {
static int
dissect_nbap_CellSetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 130 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"CellSetupFailure ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_CellSetupFailure, CellSetupFailure_sequence);
@@ -34361,6 +35531,12 @@ static const per_sequence_t ResourceStatusIndication_sequence[] = {
static int
dissect_nbap_ResourceStatusIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 386 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"ResourceStatusIndication ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_ResourceStatusIndication, ResourceStatusIndication_sequence);
@@ -35113,6 +36289,12 @@ static const per_sequence_t SystemInformationUpdateRequest_sequence[] = {
static int
dissect_nbap_SystemInformationUpdateRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 232 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"SystemInformationUpdateRequest ");
+/* CRNC -> Node B */
+actx->pinfo->link_dir=P2P_DIR_DL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_SystemInformationUpdateRequest, SystemInformationUpdateRequest_sequence);
@@ -35178,9 +36360,17 @@ static const per_sequence_t MIB_SB_SIB_InformationItem_SystemInfoUpdateRqst_sequ
static int
dissect_nbap_MIB_SB_SIB_InformationItem_SystemInfoUpdateRqst(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 524 "../../asn1/nbap/nbap.cnf"
+
+ ib_type = 10; /* not-Used-sIB8 */
+ segment_type = 0;
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_MIB_SB_SIB_InformationItem_SystemInfoUpdateRqst, MIB_SB_SIB_InformationItem_SystemInfoUpdateRqst_sequence);
+
+
+
return offset;
}
@@ -35238,6 +36428,12 @@ static const per_sequence_t SystemInformationUpdateResponse_sequence[] = {
static int
dissect_nbap_SystemInformationUpdateResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 238 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"SystemInformationUpdateResponse ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_SystemInformationUpdateResponse, SystemInformationUpdateResponse_sequence);
@@ -35253,6 +36449,13 @@ static const per_sequence_t SystemInformationUpdateFailure_sequence[] = {
static int
dissect_nbap_SystemInformationUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 244 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"SystemInformationUpdateFailure ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_SystemInformationUpdateFailure, SystemInformationUpdateFailure_sequence);
@@ -35268,6 +36471,18 @@ static const per_sequence_t RadioLinkSetupRequestFDD_sequence[] = {
static int
dissect_nbap_RadioLinkSetupRequestFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 198 "../../asn1/nbap/nbap.cnf"
+
+ g_nbap_msg_info_for_fp.ProcedureCode = ProcedureCode;
+ g_nbap_msg_info_for_fp.ddMode = ddMode;
+ g_nbap_msg_info_for_fp.is_uplink = TRUE;
+ g_nbap_msg_info_for_fp.dch_crc_present = 2; /* unknown */
+
+ col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkSetupRequest(FDD) ");
+ /* CRNC -> Node B */
+ actx->pinfo->link_dir=P2P_DIR_DL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_RadioLinkSetupRequestFDD, RadioLinkSetupRequestFDD_sequence);
@@ -35738,6 +36953,18 @@ static const per_sequence_t RadioLinkSetupResponseFDD_sequence[] = {
static int
dissect_nbap_RadioLinkSetupResponseFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 210 "../../asn1/nbap/nbap.cnf"
+
+ g_nbap_msg_info_for_fp.ProcedureCode = ProcedureCode;
+ g_nbap_msg_info_for_fp.ddMode = ddMode;
+ g_nbap_msg_info_for_fp.is_uplink = FALSE;
+ g_nbap_msg_info_for_fp.dch_crc_present = 2; /* unknown */
+
+ col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkSetupResponse(FDD) ");
+ /* Node B -> CRNC */
+ actx->pinfo->link_dir=P2P_DIR_UL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_RadioLinkSetupResponseFDD, RadioLinkSetupResponseFDD_sequence);
@@ -35951,6 +37178,13 @@ static const per_sequence_t RadioLinkSetupFailureFDD_sequence[] = {
static int
dissect_nbap_RadioLinkSetupFailureFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 222 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkSetupFailure(FDD) ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_RadioLinkSetupFailureFDD, RadioLinkSetupFailureFDD_sequence);
@@ -37140,6 +38374,17 @@ static const per_sequence_t RadioLinkReconfigurationPrepareFDD_sequence[] = {
static int
dissect_nbap_RadioLinkReconfigurationPrepareFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 290 "../../asn1/nbap/nbap.cnf"
+ col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkReconfigurationPrepare(FDD) ");
+ /* CRNC -> Node B */
+ actx->pinfo->link_dir=P2P_DIR_DL;
+ g_nbap_msg_info_for_fp.ProcedureCode = ProcedureCode;
+ g_nbap_msg_info_for_fp.ddMode = ddMode;
+ g_nbap_msg_info_for_fp.is_uplink = TRUE;
+ g_nbap_msg_info_for_fp.dch_crc_present = 2; /* unknown */
+
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_RadioLinkReconfigurationPrepareFDD, RadioLinkReconfigurationPrepareFDD_sequence);
@@ -37276,7 +38521,7 @@ dissect_nbap_DL_DPCH_Power_Information_RL_ReconfPrepFDD(tvbuff_t *tvb _U_, int o
static const per_sequence_t DCH_DeleteItem_RL_ReconfPrepFDD_sequence[] = {
- { &hf_nbap_dCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
+ { &hf_nbap_dCH_ID_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_ProtocolExtensionContainer },
{ NULL, 0, 0, NULL }
};
@@ -38558,7 +39803,7 @@ dissect_nbap_DL_CCTrCH_InformationDeleteList_RL_ReconfPrepTDD(tvbuff_t *tvb _U_,
static const per_sequence_t DCH_DeleteItem_RL_ReconfPrepTDD_sequence[] = {
- { &hf_nbap_dCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
+ { &hf_nbap_dCH_ID_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_ProtocolExtensionContainer },
{ NULL, 0, 0, NULL }
};
@@ -38752,6 +39997,12 @@ static const per_sequence_t RadioLinkReconfigurationReady_sequence[] = {
static int
dissect_nbap_RadioLinkReconfigurationReady(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 301 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkReconfigurationReady ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_RadioLinkReconfigurationReady, RadioLinkReconfigurationReady_sequence);
@@ -38827,6 +40078,17 @@ static const per_sequence_t RadioLinkReconfigurationFailure_sequence[] = {
static int
dissect_nbap_RadioLinkReconfigurationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 307 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkReconfigurationFailure ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
+col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkReconfigurationFailure ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_RadioLinkReconfigurationFailure, RadioLinkReconfigurationFailure_sequence);
@@ -38924,6 +40186,12 @@ static const per_sequence_t RadioLinkReconfigurationCommit_sequence[] = {
static int
dissect_nbap_RadioLinkReconfigurationCommit(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 416 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkReconfigurationCommit ");
+/* CRNC -> Node B */
+actx->pinfo->link_dir=P2P_DIR_DL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_RadioLinkReconfigurationCommit, RadioLinkReconfigurationCommit_sequence);
@@ -38939,6 +40207,12 @@ static const per_sequence_t RadioLinkReconfigurationCancel_sequence[] = {
static int
dissect_nbap_RadioLinkReconfigurationCancel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 422 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkReconfigurationCancel ");
+/* CRNC -> Node B */
+actx->pinfo->link_dir=P2P_DIR_DL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_RadioLinkReconfigurationCancel, RadioLinkReconfigurationCancel_sequence);
@@ -38954,6 +40228,13 @@ static const per_sequence_t RadioLinkReconfigurationRequestFDD_sequence[] = {
static int
dissect_nbap_RadioLinkReconfigurationRequestFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 317 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkReconfigurationRequestFDD(FDD) ");
+/* CRNC -> Node B */
+actx->pinfo->link_dir=P2P_DIR_DL;
+
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_RadioLinkReconfigurationRequestFDD, RadioLinkReconfigurationRequestFDD_sequence);
@@ -39042,7 +40323,7 @@ dissect_nbap_DL_DPCH_Information_RL_ReconfRqstFDD(tvbuff_t *tvb _U_, int offset
static const per_sequence_t DCH_DeleteItem_RL_ReconfRqstFDD_sequence[] = {
- { &hf_nbap_dCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
+ { &hf_nbap_dCH_ID_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_ProtocolExtensionContainer },
{ NULL, 0, 0, NULL }
};
@@ -39338,7 +40619,7 @@ dissect_nbap_DL_CCTrCH_InformationDeleteItem_RL_ReconfRqstTDD(tvbuff_t *tvb _U_,
static const per_sequence_t DCH_DeleteItem_RL_ReconfRqstTDD_sequence[] = {
- { &hf_nbap_dCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
+ { &hf_nbap_dCH_ID_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_ProtocolExtensionContainer },
{ NULL, 0, 0, NULL }
};
@@ -39459,6 +40740,12 @@ static const per_sequence_t RadioLinkDeletionRequest_sequence[] = {
static int
dissect_nbap_RadioLinkDeletionRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 278 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkDeletionRequest ");
+/* CRNC -> Node B */
+actx->pinfo->link_dir=P2P_DIR_DL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_RadioLinkDeletionRequest, RadioLinkDeletionRequest_sequence);
@@ -39503,6 +40790,12 @@ static const per_sequence_t RadioLinkDeletionResponse_sequence[] = {
static int
dissect_nbap_RadioLinkDeletionResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 284 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkDeletionResponse ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_RadioLinkDeletionResponse, RadioLinkDeletionResponse_sequence);
@@ -39518,6 +40811,12 @@ static const per_sequence_t DL_PowerControlRequest_sequence[] = {
static int
dissect_nbap_DL_PowerControlRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 464 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"DL-PowerControlRequest ");
+/* CRNC -> Node B */
+actx->pinfo->link_dir=P2P_DIR_DL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_DL_PowerControlRequest, DL_PowerControlRequest_sequence);
@@ -39563,6 +40862,12 @@ static const per_sequence_t DL_PowerTimeslotControlRequest_sequence[] = {
static int
dissect_nbap_DL_PowerTimeslotControlRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 470 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"DL-PowerTimeslotControlRequest ");
+/* CRNC -> Node B */
+actx->pinfo->link_dir=P2P_DIR_DL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_DL_PowerTimeslotControlRequest, DL_PowerTimeslotControlRequest_sequence);
@@ -39578,6 +40883,12 @@ static const per_sequence_t DedicatedMeasurementInitiationRequest_sequence[] = {
static int
dissect_nbap_DedicatedMeasurementInitiationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 334 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"DedicatedMeasurementInitiationRequest ");
+/* CRNC -> Node B */
+actx->pinfo->link_dir=P2P_DIR_DL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_DedicatedMeasurementInitiationRequest, DedicatedMeasurementInitiationRequest_sequence);
@@ -39768,6 +41079,12 @@ static const per_sequence_t DedicatedMeasurementInitiationResponse_sequence[] =
static int
dissect_nbap_DedicatedMeasurementInitiationResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 340 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"DedicatedMeasurementInitiationResponse ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_DedicatedMeasurementInitiationResponse, DedicatedMeasurementInitiationResponse_sequence);
@@ -40066,6 +41383,12 @@ static const per_sequence_t DedicatedMeasurementInitiationFailure_sequence[] = {
static int
dissect_nbap_DedicatedMeasurementInitiationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 346 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"DedicatedMeasurementInitiationFailure ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_DedicatedMeasurementInitiationFailure, DedicatedMeasurementInitiationFailure_sequence);
@@ -40081,6 +41404,12 @@ static const per_sequence_t DedicatedMeasurementReport_sequence[] = {
static int
dissect_nbap_DedicatedMeasurementReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 446 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"DedicatedMeasurementReport ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_DedicatedMeasurementReport, DedicatedMeasurementReport_sequence);
@@ -40257,6 +41586,12 @@ static const per_sequence_t DedicatedMeasurementTerminationRequest_sequence[] =
static int
dissect_nbap_DedicatedMeasurementTerminationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 452 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"DedicatedMeasurementTerminationRequest ");
+/* CRNC -> Node B */
+actx->pinfo->link_dir=P2P_DIR_DL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_DedicatedMeasurementTerminationRequest, DedicatedMeasurementTerminationRequest_sequence);
@@ -40272,6 +41607,12 @@ static const per_sequence_t DedicatedMeasurementFailureIndication_sequence[] = {
static int
dissect_nbap_DedicatedMeasurementFailureIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 458 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"DedicatedMeasurementFailureIndication ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_DedicatedMeasurementFailureIndication, DedicatedMeasurementFailureIndication_sequence);
@@ -40287,6 +41628,12 @@ static const per_sequence_t RadioLinkFailureIndication_sequence[] = {
static int
dissect_nbap_RadioLinkFailureIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 428 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkFailureIndication ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_RadioLinkFailureIndication, RadioLinkFailureIndication_sequence);
@@ -40462,6 +41809,12 @@ static const per_sequence_t RadioLinkPreemptionRequiredIndication_sequence[] = {
static int
dissect_nbap_RadioLinkPreemptionRequiredIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 434 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkPreemptionRequiredIndication ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_RadioLinkPreemptionRequiredIndication, RadioLinkPreemptionRequiredIndication_sequence);
@@ -40506,6 +41859,12 @@ static const per_sequence_t RadioLinkRestoreIndication_sequence[] = {
static int
dissect_nbap_RadioLinkRestoreIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 440 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkRestoreIndication ");
+/* CRNC -> Node B */
+actx->pinfo->link_dir=P2P_DIR_DL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_RadioLinkRestoreIndication, RadioLinkRestoreIndication_sequence);
@@ -40678,6 +42037,12 @@ static const per_sequence_t CompressedModeCommand_sequence[] = {
static int
dissect_nbap_CompressedModeCommand(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 476 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"CompressedModeCommand ");
+/* CRNC -> Node B */
+actx->pinfo->link_dir=P2P_DIR_DL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_CompressedModeCommand, CompressedModeCommand_sequence);
@@ -40693,6 +42058,11 @@ static const per_sequence_t ErrorIndication_sequence[] = {
static int
dissect_nbap_ErrorIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 488 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"ErrorIndication ");
+
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_ErrorIndication, ErrorIndication_sequence);
@@ -40707,6 +42077,11 @@ static const per_sequence_t PrivateMessage_sequence[] = {
static int
dissect_nbap_PrivateMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 496 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"PrivateMessage ");
+
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_PrivateMessage, PrivateMessage_sequence);
@@ -40722,6 +42097,12 @@ static const per_sequence_t PhysicalSharedChannelReconfigurationRequestFDD_seque
static int
dissect_nbap_PhysicalSharedChannelReconfigurationRequestFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 352 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"PhysicalSharedChannelReconfigurationRequest(FDD) ");
+/* CRNC -> Node B */
+actx->pinfo->link_dir=P2P_DIR_DL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_PhysicalSharedChannelReconfigurationRequestFDD, PhysicalSharedChannelReconfigurationRequestFDD_sequence);
@@ -43184,6 +44565,12 @@ static const per_sequence_t PhysicalSharedChannelReconfigurationResponse_sequenc
static int
dissect_nbap_PhysicalSharedChannelReconfigurationResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 358 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"PhysicalSharedChannelReconfigurationResponse ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_PhysicalSharedChannelReconfigurationResponse, PhysicalSharedChannelReconfigurationResponse_sequence);
@@ -43229,6 +44616,13 @@ static const per_sequence_t PhysicalSharedChannelReconfigurationFailure_sequence
static int
dissect_nbap_PhysicalSharedChannelReconfigurationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 364 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"PhysicalSharedChannelReconfigurationFailure ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_PhysicalSharedChannelReconfigurationFailure, PhysicalSharedChannelReconfigurationFailure_sequence);
@@ -44683,7 +46077,7 @@ dissect_nbap_BearerRearrangementIndication(tvbuff_t *tvb _U_, int offset _U_, as
static const per_sequence_t DCH_RearrangeItem_Bearer_RearrangeInd_sequence[] = {
- { &hf_nbap_dCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
+ { &hf_nbap_dCH_ID_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_ProtocolExtensionContainer },
{ NULL, 0, 0, NULL }
};
@@ -44971,6 +46365,13 @@ static const per_sequence_t RadioLinkParameterUpdateIndicationFDD_sequence[] = {
static int
dissect_nbap_RadioLinkParameterUpdateIndicationFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 507 "../../asn1/nbap/nbap.cnf"
+col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkParameterUpdateIndication(FDD) ");
+/* Node B -> CRNC */
+actx->pinfo->link_dir=P2P_DIR_UL;
+
+
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_RadioLinkParameterUpdateIndicationFDD, RadioLinkParameterUpdateIndicationFDD_sequence);
@@ -52855,7 +54256,7 @@ static int dissect_NULL_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tre
/*--- End of included file: packet-nbap-fn.c ---*/
-#line 84 "../../asn1/nbap/packet-nbap-template.c"
+#line 188 "../../asn1/nbap/packet-nbap-template.c"
static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
@@ -52915,7 +54316,10 @@ void proto_register_nbap(void) {
{ "transportLayerAddress IPv6", "nbap.transportLayerAddress_ipv6",
FT_IPv6, BASE_NONE, NULL, 0,
NULL, HFILL }},
-
+ { &hf_nbap_transportLayerAddress_nsap,
+ { "transportLayerAddress NSAP", "nbap.transportLayerAddress_NSAP",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
/*--- Included file: packet-nbap-hfarr.c ---*/
#line 1 "../../asn1/nbap/packet-nbap-hfarr.c"
@@ -58018,11 +59422,11 @@ void proto_register_nbap(void) {
{ &hf_nbap_ul_TransportFormatSet,
{ "ul-TransportFormatSet", "nbap.ul_TransportFormatSet",
FT_NONE, BASE_NONE, NULL, 0,
- "TransportFormatSet", HFILL }},
+ NULL, HFILL }},
{ &hf_nbap_dl_TransportFormatSet,
{ "dl-TransportFormatSet", "nbap.dl_TransportFormatSet",
FT_NONE, BASE_NONE, NULL, 0,
- "TransportFormatSet", HFILL }},
+ NULL, HFILL }},
{ &hf_nbap_allocationRetentionPriority,
{ "allocationRetentionPriority", "nbap.allocationRetentionPriority",
FT_NONE, BASE_NONE, NULL, 0,
@@ -58039,6 +59443,10 @@ void proto_register_nbap(void) {
{ "DCH-InformationResponseItem", "nbap.DCH_InformationResponseItem",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_nbap_dCH_ID_01,
+ { "dCH-ID", "nbap.dCH_ID",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
{ &hf_nbap_DCH_MeasurementOccasion_Information_item,
{ "DchMeasurementOccasionInformation-Item", "nbap.DchMeasurementOccasionInformation_Item",
FT_NONE, BASE_NONE, NULL, 0,
@@ -58091,6 +59499,14 @@ void proto_register_nbap(void) {
{ "dl-CCTrCH-ID", "nbap.dl_CCTrCH_ID",
FT_UINT32, BASE_DEC, NULL, 0,
"CCTrCH_ID", HFILL }},
+ { &hf_nbap_ul_TransportFormatSet_01,
+ { "ul-TransportFormatSet", "nbap.ul_TransportFormatSet",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "TransportFormatSet", HFILL }},
+ { &hf_nbap_dl_TransportFormatSet_01,
+ { "dl-TransportFormatSet", "nbap.dl_TransportFormatSet",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "TransportFormatSet", HFILL }},
{ &hf_nbap_FDD_DCHs_to_Modify_item,
{ "FDD-DCHs-to-ModifyItem", "nbap.FDD_DCHs_to_ModifyItem",
FT_NONE, BASE_NONE, NULL, 0,
@@ -58103,6 +59519,18 @@ void proto_register_nbap(void) {
{ "DCH-ModifySpecificItem-FDD", "nbap.DCH_ModifySpecificItem_FDD",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_nbap_dCH_ID_02,
+ { "dCH-ID", "nbap.dCH_ID",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "T_dCH_ID_01", HFILL }},
+ { &hf_nbap_ul_TransportFormatSet_02,
+ { "ul-TransportFormatSet", "nbap.ul_TransportFormatSet",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_ul_TransportFormatSet_01", HFILL }},
+ { &hf_nbap_dl_TransportFormatSet_02,
+ { "dl-TransportFormatSet", "nbap.dl_TransportFormatSet",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_dl_TransportFormatSet_01", HFILL }},
{ &hf_nbap_TDD_DCHs_to_Modify_item,
{ "DCH-ModifyItem-TDD", "nbap.DCH_ModifyItem_TDD",
FT_NONE, BASE_NONE, NULL, 0,
@@ -62719,6 +64147,10 @@ void proto_register_nbap(void) {
{ "uE-AggregateMaximumBitRateUplink", "nbap.uE_AggregateMaximumBitRateUplink",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
+ { &hf_nbap_hSDSCH_Physical_Layer_Category_01,
+ { "hSDSCH-Physical-Layer-Category", "nbap.hSDSCH_Physical_Layer_Category",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
{ &hf_nbap_UL_Timeslot_Information_item,
{ "UL-Timeslot-InformationItem", "nbap.UL_Timeslot_InformationItem",
FT_NONE, BASE_NONE, NULL, 0,
@@ -62863,6 +64295,10 @@ void proto_register_nbap(void) {
{ "maxFACH-Power", "nbap.maxFACH_Power",
FT_INT32, BASE_DEC, NULL, 0,
"DL_Power", HFILL }},
+ { &hf_nbap_transportFormatSet_01,
+ { "transportFormatSet", "nbap.transportFormatSet",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_nbap_pCH_Power,
{ "pCH-Power", "nbap.pCH_Power",
FT_INT32, BASE_DEC, NULL, 0,
@@ -66049,13 +67485,15 @@ void proto_register_nbap(void) {
NULL, HFILL }},
/*--- End of included file: packet-nbap-hfarr.c ---*/
-#line 145 "../../asn1/nbap/packet-nbap-template.c"
+#line 252 "../../asn1/nbap/packet-nbap-template.c"
};
/* List of subtrees */
static gint *ett[] = {
&ett_nbap,
&ett_nbap_TransportLayerAddress,
+ &ett_nbap_TransportLayerAddress_nsap,
+ &ett_nbap_ib_sg_data,
/*--- Included file: packet-nbap-ettarr.c ---*/
#line 1 "../../asn1/nbap/packet-nbap-ettarr.c"
@@ -67687,7 +69125,7 @@ void proto_register_nbap(void) {
&ett_nbap_Outcome,
/*--- End of included file: packet-nbap-ettarr.c ---*/
-#line 152 "../../asn1/nbap/packet-nbap-template.c"
+#line 261 "../../asn1/nbap/packet-nbap-template.c"
};
@@ -67717,6 +69155,7 @@ proto_reg_handoff_nbap(void)
dissector_handle_t nbap_handle;
nbap_handle = find_dissector("nbap");
+ fp_handle = find_dissector("fp");
dissector_add_uint("sctp.ppi", NBAP_PAYLOAD_PROTOCOL_ID, nbap_handle);
dissector_add_handle("sctp.port", nbap_handle); /* for "decode-as" */
@@ -68817,7 +70256,7 @@ proto_reg_handoff_nbap(void)
/*--- End of included file: packet-nbap-dis-tab.c ---*/
-#line 185 "../../asn1/nbap/packet-nbap-template.c"
+#line 295 "../../asn1/nbap/packet-nbap-template.c"
}
diff --git a/epan/dissectors/packet-nbd.c b/epan/dissectors/packet-nbd.c
index e373b98d8a..936c754181 100644
--- a/epan/dissectors/packet-nbd.c
+++ b/epan/dissectors/packet-nbd.c
@@ -28,18 +28,15 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-
-#include <epan/prefs.h>
-
#include <glib.h>
+
#include <epan/packet.h>
+#include <epan/prefs.h>
#include <epan/conversation.h>
#include <epan/emem.h>
#include "packet-tcp.h"
-static gint proto_nbd = -1;
+static gint proto_nbd = -1;
static int hf_nbd_magic = -1;
static int hf_nbd_type = -1;
static int hf_nbd_error = -1;
diff --git a/epan/dissectors/packet-nbns.c b/epan/dissectors/packet-nbns.c
index 0321e6283e..e9f1d457b1 100644
--- a/epan/dissectors/packet-nbns.c
+++ b/epan/dissectors/packet-nbns.c
@@ -450,7 +450,7 @@ dissect_nbns_query(tvbuff_t *tvb, int offset, int nbns_data_offset,
proto_tree_add_text(q_tree, tvb, offset, 2, "Class: %s",
dns_class_name(class));
- offset += 2;
+ /*offset += 2;*/
}
return data_offset - data_start;
@@ -956,7 +956,7 @@ dissect_nbns_answer(tvbuff_t *tvb, int offset, int nbns_data_offset,
"Session data packet size: %u",
tvb_get_ntohs(tvb, cur_offset));
cur_offset += 2;
- data_len -= 2;
+ /*data_len -= 2;*/
out:
break;
@@ -1127,7 +1127,7 @@ dissect_nbns(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
"Authoritative nameservers");
if (add > 0)
- cur_off += dissect_answer_records(tvb, cur_off,
+ /*cur_off += */dissect_answer_records(tvb, cur_off,
nbns_data_offset,
add, NULL, nbns_tree, opcode,
"Additional records");
@@ -1192,7 +1192,6 @@ dissect_nbdgm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_item *ti = NULL;
struct nbdgm_header header;
int flags;
- int message_index;
tvbuff_t *next_tvb;
static const value_string error_codes[] = {
@@ -1240,11 +1239,6 @@ dissect_nbdgm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
break;
}
- message_index = header.msg_type - 0x0f;
- if (message_index < 1 || message_index > 8) {
- message_index = 0;
- }
-
col_add_str(pinfo->cinfo, COL_INFO,
val_to_str(header.msg_type, nbds_msgtype_vals,
"Unknown message type (0x%02X)"));
diff --git a/epan/dissectors/packet-ncp.c b/epan/dissectors/packet-ncp.c
index b65658dbca..6dbf14ddbe 100644
--- a/epan/dissectors/packet-ncp.c
+++ b/epan/dissectors/packet-ncp.c
@@ -46,16 +46,10 @@
# include "config.h"
#endif
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-
#include <string.h>
+
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/emem.h>
#include <epan/prefs.h>
@@ -402,7 +396,7 @@ dissect_ncp_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
* conversation in our hash, create
* one */
if (request_value == NULL) {
- request_value = mncp_hash_insert(conversation, nw_connection, header.task, pinfo);
+ mncp_hash_insert(conversation, nw_connection, header.task, pinfo);
}
} else {
/* It's not part of any conversation
@@ -410,7 +404,7 @@ dissect_ncp_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
*/
conversation = conversation_new(pinfo->fd->num, &pinfo->src,
&pinfo->dst, PT_NCP, (guint32) pinfo->srcport, (guint32) pinfo->destport, 0);
- request_value = mncp_hash_insert(conversation, nw_connection, header.task, pinfo);
+ mncp_hash_insert(conversation, nw_connection, header.task, pinfo);
}
/* If this is a request packet then we
* might have a new task
@@ -445,7 +439,7 @@ dissect_ncp_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
* conversation in our hash, create
* one */
if (request_value == NULL) {
- request_value = mncp_hash_insert(conversation, nw_connection, header.task, pinfo);
+ mncp_hash_insert(conversation, nw_connection, header.task, pinfo);
}
} else {
/* It's not part of any conversation
@@ -453,7 +447,7 @@ dissect_ncp_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
*/
conversation = conversation_new(pinfo->fd->num, &pinfo->src,
&pinfo->dst, PT_NCP, (guint32) pinfo->srcport, (guint32) pinfo->destport, 0);
- request_value = mncp_hash_insert(conversation, nw_connection, header.task, pinfo);
+ mncp_hash_insert(conversation, nw_connection, header.task, pinfo);
}
/* find the record telling us the request
* made that caused this reply
diff --git a/epan/dissectors/packet-ndp.c b/epan/dissectors/packet-ndp.c
index b6180c4b43..74201e049c 100644
--- a/epan/dissectors/packet-ndp.c
+++ b/epan/dissectors/packet-ndp.c
@@ -1,58 +1,55 @@
/* packet-ndp.c
-* Routines for the disassembly of the Nortel Discovery Protocol, formerly
-* the SynOptics Network Management Protocol (SONMP).
-* (c) Copyright Giles Scott <giles.scott1 [AT] arubanetworks.com>
-*
-* $Id$
-*
-* Wireshark - Network traffic analyzer
-* By Gerald Combs <gerald@wireshark.org>
-* Copyright 1998 Gerald Combs
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License
-* as published by the Free Software Foundation; either version 2
-* of the License, or (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program; if not, write to the Free Software
-* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*
-* This protocol has gone by many names over the years:
-*
-* Bay Discovery Protocol (BDP), Bay Topology Protocol, Bay Network Management
-* Protocol (BNMP), Nortel Management MIB (NMM), Nortel Topology Discovery
-* Protocol (NTDP), SynOptics Network Management Protocol (SONMP).
-* (source: Wikipedia article on "Nortel Discovery Protocol")
-*
-*/
-
+ * Routines for the disassembly of the Nortel Discovery Protocol, formerly
+ * the SynOptics Network Management Protocol (SONMP).
+ * (c) Copyright Giles Scott <giles.scott1 [AT] arubanetworks.com>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * This protocol has gone by many names over the years:
+ *
+ * Bay Discovery Protocol (BDP), Bay Topology Protocol, Bay Network Management
+ * Protocol (BNMP), Nortel Management MIB (NMM), Nortel Topology Discovery
+ * Protocol (NTDP), SynOptics Network Management Protocol (SONMP).
+ * (source: Wikipedia article on "Nortel Discovery Protocol")
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
#include "config.h"
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
#endif
-#include <stdlib.h>
-
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/nlpid.h>
/* Although this protocol is proprietary it is documented in the SynOptics MIB's
-* So I'm not giving anything away :-)
-* The only thing I have not done is decode the segment identifier;
-* This changes so much depending on whether the chassis supports
-* multi-segment autotopology. As the 5000 is now EOL don't see much point.
-*
-* MIB's s5emt104.mib, s5tcs112.mib, synro199.mib these should be available via
-* http://www.nortelnetworks.com
-*/
+ * So I'm not giving anything away :-)
+ * The only thing I have not done is decode the segment identifier;
+ * This changes so much depending on whether the chassis supports
+ * multi-segment autotopology. As the 5000 is now EOL don't see much point.
+ *
+ * MIB's s5emt104.mib, s5tcs112.mib, synro199.mib these should be available via
+ * http://www.nortelnetworks.com
+ */
/* chassis types */
@@ -337,43 +334,43 @@ dissect_ndp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
void
proto_register_ndp(void)
{
- static hf_register_info hf[] = {
+ static hf_register_info hf[] = {
{ &hf_ndp_ip_address,
- { "IP address", "ndp.ipaddress", FT_IPv4, BASE_NONE, NULL, 0x0,
- "IP address of the Network Management Module (NMM))", HFILL }},
+ { "IP address", "ndp.ipaddress", FT_IPv4, BASE_NONE, NULL, 0x0,
+ "IP address of the Network Management Module (NMM))", HFILL }},
{ &hf_ndp_segment_identifier,
- { "Segment Identifier", "ndp.segmentident", FT_UINT24, BASE_HEX, NULL, 0x0,
- "Segment id of the segment from which the agent is sending the topology message", HFILL }},
+ { "Segment Identifier", "ndp.segmentident", FT_UINT24, BASE_HEX, NULL, 0x0,
+ "Segment id of the segment from which the agent is sending the topology message", HFILL }},
{ &hf_ndp_chassis_type,
- { "Chassis type", "ndp.chassis", FT_UINT8, BASE_DEC|BASE_EXT_STRING,
- &ndp_chassis_val_ext, 0x0,
- "Chassis type of the agent sending the topology message", HFILL }},
+ { "Chassis type", "ndp.chassis", FT_UINT8, BASE_DEC|BASE_EXT_STRING,
+ &ndp_chassis_val_ext, 0x0,
+ "Chassis type of the agent sending the topology message", HFILL }},
{ &hf_ndp_backplane_type,
- { "Backplane type", "ndp.backplane", FT_UINT8, BASE_DEC|BASE_EXT_STRING,
- &ndp_backplane_val_ext, 0x0,
- "Backplane type of the agent sending the topology message", HFILL }},
+ { "Backplane type", "ndp.backplane", FT_UINT8, BASE_DEC|BASE_EXT_STRING,
+ &ndp_backplane_val_ext, 0x0,
+ "Backplane type of the agent sending the topology message", HFILL }},
{ &hf_ndp_state,
- { "State", "ndp.state", FT_UINT8, BASE_DEC,
- VALS(ndp_state_val), 0x0,
- "Current state of this Network Management Module (NMM)", HFILL }},
+ { "State", "ndp.state", FT_UINT8, BASE_DEC,
+ VALS(ndp_state_val), 0x0,
+ "Current state of this Network Management Module (NMM)", HFILL }},
{ &hf_ndp_number_of_links,
- { "Number of links", "ndp.numberoflinks", FT_UINT8, BASE_DEC, NULL, 0x0,
- "Number of interconnect ports", HFILL }},
- };
+ { "Number of links", "ndp.numberoflinks", FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Number of interconnect ports", HFILL }},
+ };
- static gint *ett[] = {
+ static gint *ett[] = {
&ett_ndp,
- };
- proto_ndp = proto_register_protocol("Nortel Discovery Protocol", "NDP", "ndp");
- proto_register_field_array(proto_ndp, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ };
+ proto_ndp = proto_register_protocol("Nortel Discovery Protocol", "NDP", "ndp");
+ proto_register_field_array(proto_ndp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
- register_dissector("ndp", dissect_ndp, proto_ndp);
+ register_dissector("ndp", dissect_ndp, proto_ndp);
}
void
@@ -384,8 +381,8 @@ proto_reg_handoff_ndp(void)
ndp_handle = find_dissector("ndp");
dissector_add_uint("llc.nortel_pid", 0x01a1, ndp_handle); /* flatnet hello */
- dissector_add_uint("llc.nortel_pid", 0x01a2, ndp_handle); /* Segment hello */
- /* not got round to adding this but its really old, so I'm not sure people will see it */
+ dissector_add_uint("llc.nortel_pid", 0x01a2, ndp_handle); /* Segment hello */
+ /* not got round to adding this but it's really old, so I'm not sure people will see it */
/* it uses a different packet format */
/* dissector_add_uint("llc.nortel_pid", 0x01a3, ndp_handle); */ /* Bridge hello */
}
diff --git a/epan/dissectors/packet-ndps.c b/epan/dissectors/packet-ndps.c
index 74e3ad2b9c..ebdca22553 100644
--- a/epan/dissectors/packet-ndps.c
+++ b/epan/dissectors/packet-ndps.c
@@ -2034,7 +2034,7 @@ ndps_string(tvbuff_t* tvb, int hfinfo, proto_tree *ndps_tree, int offset, char *
/*
* Unicode.
*/
- string = tvb_get_ephemeral_unicode_string(tvb, foffset, str_length/2, ENC_LITTLE_ENDIAN);
+ string = tvb_get_ephemeral_unicode_string(tvb, foffset, str_length, ENC_LITTLE_ENDIAN);
}
foffset += str_length;
proto_tree_add_string(ndps_tree, hfinfo, tvb, offset, str_length + 4, string);
diff --git a/epan/dissectors/packet-netbios.c b/epan/dissectors/packet-netbios.c
index d6ec41e23f..554136d099 100644
--- a/epan/dissectors/packet-netbios.c
+++ b/epan/dissectors/packet-netbios.c
@@ -30,7 +30,6 @@
# include "config.h"
#endif
-#include <string.h>
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-netdump.c b/epan/dissectors/packet-netdump.c
index ab70ea2af6..11dd1c6990 100644
--- a/epan/dissectors/packet-netdump.c
+++ b/epan/dissectors/packet-netdump.c
@@ -28,8 +28,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-netflow.c b/epan/dissectors/packet-netflow.c
index d4fbe3843b..026a1647c3 100644
--- a/epan/dissectors/packet-netflow.c
+++ b/epan/dissectors/packet-netflow.c
@@ -1343,10 +1343,10 @@ static int hf_cflow_transport_rtp_payload_type_string = -1; /* ID: 3
static int hf_cflow_transport_bytes_out_of_order = -1; /* ID: 37071 */
static int hf_cflow_transport_packets_out_of_order = -1; /* ID: 37074 */
static int hf_cflow_transport_packets_out_of_order_string = -1; /* ID: 37074 */
-static int hf_cflow_transport_tcp_window_size_min = -1; /* ID: 37083 */
+static int hf_cflow_transport_tcp_window_size_min = -1; /* ID: 37083 */
static int hf_cflow_transport_tcp_window_size_min_string = -1; /* ID: 37083 */
static int hf_cflow_transport_tcp_window_size_max = -1; /* ID: 37084 */
-static int hf_cflow_transport_tcp_window_size_max_string = -1; /* ID: 37084 */
+static int hf_cflow_transport_tcp_window_size_max_string = -1; /* ID: 37084 */
static int hf_cflow_transport_tcp_window_size_mean = -1; /* ID: 37085 */
static int hf_cflow_transport_tcp_window_size_mean_string = -1; /* ID: 37085 */
static int hf_cflow_transport_tcp_maximum_segment_size = -1; /* ID: 37086 */
@@ -5883,12 +5883,12 @@ proto_register_netflow(void)
},
{&hf_cflow_inputint,
{"InputInt", "cflow.inputint",
- FT_UINT16, BASE_DEC, NULL, 0x0,
+ FT_UINT32, BASE_DEC, NULL, 0x0,
"Flow Input Interface", HFILL}
},
{&hf_cflow_outputint,
{"OutputInt", "cflow.outputint",
- FT_UINT16, BASE_DEC, NULL, 0x0,
+ FT_UINT32, BASE_DEC, NULL, 0x0,
"Flow Output Interface", HFILL}
},
{&hf_cflow_flows,
diff --git a/epan/dissectors/packet-netperfmeter.c b/epan/dissectors/packet-netperfmeter.c
index 5ccbb8db21..9b896890d3 100644
--- a/epan/dissectors/packet-netperfmeter.c
+++ b/epan/dissectors/packet-netperfmeter.c
@@ -233,16 +233,17 @@ static hf_register_info hf[] = {
};
-#define ADD_FIELD(tree, field) proto_tree_add_item(tree, hf_##field, message_tvb, offset_##field, length_##field, FALSE)
+#define ADD_FIELD_UINT(tree, field) proto_tree_add_item(tree, hf_##field, message_tvb, offset_##field, length_##field, ENC_BIG_ENDIAN)
+#define ADD_FIELD_STRING(tree, field) proto_tree_add_item(tree, hf_##field, message_tvb, offset_##field, length_##field, ENC_ASCII|ENC_NA)
static void
dissect_npmp_acknowledge_message(tvbuff_t *message_tvb, proto_tree *message_tree)
{
- ADD_FIELD(message_tree, acknowledge_flowid);
- ADD_FIELD(message_tree, acknowledge_measurementid);
- ADD_FIELD(message_tree, acknowledge_streamid);
- ADD_FIELD(message_tree, acknowledge_status);
+ ADD_FIELD_UINT(message_tree, acknowledge_flowid);
+ ADD_FIELD_UINT(message_tree, acknowledge_measurementid);
+ ADD_FIELD_UINT(message_tree, acknowledge_streamid);
+ ADD_FIELD_UINT(message_tree, acknowledge_status);
}
@@ -256,12 +257,12 @@ dissect_npmp_add_flow_message(tvbuff_t *message_tvb, proto_tree *message_tree)
guint32 onoffvalue;
unsigned int i;
- ADD_FIELD(message_tree, addflow_flowid);
- ADD_FIELD(message_tree, addflow_measurementid);
- ADD_FIELD(message_tree, addflow_streamid);
- ADD_FIELD(message_tree, addflow_protocol);
- ADD_FIELD(message_tree, addflow_flags);
- ADD_FIELD(message_tree, addflow_description);
+ ADD_FIELD_UINT(message_tree, addflow_flowid);
+ ADD_FIELD_UINT(message_tree, addflow_measurementid);
+ ADD_FIELD_UINT(message_tree, addflow_streamid);
+ ADD_FIELD_UINT(message_tree, addflow_protocol);
+ ADD_FIELD_UINT(message_tree, addflow_flags);
+ ADD_FIELD_STRING(message_tree, addflow_description);
proto_tree_add_double_format_value(message_tree, hf_addflow_ordered, message_tvb, offset_addflow_ordered, length_addflow_ordered,
100.0 * tvb_get_ntohl(message_tvb, offset_addflow_ordered) / (double)0xffffffff, "%1.3f%%",
@@ -275,23 +276,23 @@ dissect_npmp_add_flow_message(tvbuff_t *message_tvb, proto_tree *message_tree)
retranstrials, (retranstrials & (1 << 31)) ? "%u ms" : "%u trials",
retranstrials &~ (1 << 31));
- ADD_FIELD(message_tree, addflow_frameraterng);
- ADD_FIELD(message_tree, addflow_framerate1);
- ADD_FIELD(message_tree, addflow_framerate2);
- ADD_FIELD(message_tree, addflow_framerate3);
- ADD_FIELD(message_tree, addflow_framerate4);
- ADD_FIELD(message_tree, addflow_framesizerng);
- ADD_FIELD(message_tree, addflow_framesize1);
- ADD_FIELD(message_tree, addflow_framesize2);
- ADD_FIELD(message_tree, addflow_framesize3);
- ADD_FIELD(message_tree, addflow_framesize4);
- ADD_FIELD(message_tree, addflow_rcvbuffersize);
- ADD_FIELD(message_tree, addflow_sndbuffersize);
- ADD_FIELD(message_tree, addflow_maxmsgsize);
- ADD_FIELD(message_tree, addflow_cmt);
- ADD_FIELD(message_tree, addflow_ccid);
-
- onoffitem = ADD_FIELD(message_tree, addflow_onoffevents);
+ ADD_FIELD_UINT(message_tree, addflow_frameraterng);
+ ADD_FIELD_UINT(message_tree, addflow_framerate1);
+ ADD_FIELD_UINT(message_tree, addflow_framerate2);
+ ADD_FIELD_UINT(message_tree, addflow_framerate3);
+ ADD_FIELD_UINT(message_tree, addflow_framerate4);
+ ADD_FIELD_UINT(message_tree, addflow_framesizerng);
+ ADD_FIELD_UINT(message_tree, addflow_framesize1);
+ ADD_FIELD_UINT(message_tree, addflow_framesize2);
+ ADD_FIELD_UINT(message_tree, addflow_framesize3);
+ ADD_FIELD_UINT(message_tree, addflow_framesize4);
+ ADD_FIELD_UINT(message_tree, addflow_rcvbuffersize);
+ ADD_FIELD_UINT(message_tree, addflow_sndbuffersize);
+ ADD_FIELD_UINT(message_tree, addflow_maxmsgsize);
+ ADD_FIELD_UINT(message_tree, addflow_cmt);
+ ADD_FIELD_UINT(message_tree, addflow_ccid);
+
+ onoffitem = ADD_FIELD_UINT(message_tree, addflow_onoffevents);
onoffevents = tvb_get_ntohs(message_tvb, offset_addflow_onoffevents);
if (onoffevents > 0) {
@@ -309,19 +310,19 @@ dissect_npmp_add_flow_message(tvbuff_t *message_tvb, proto_tree *message_tree)
static void
dissect_npmp_remove_flow_message(tvbuff_t *message_tvb, proto_tree *message_tree)
{
- ADD_FIELD(message_tree, removeflow_flowid);
- ADD_FIELD(message_tree, removeflow_measurementid);
- ADD_FIELD(message_tree, removeflow_streamid);
+ ADD_FIELD_UINT(message_tree, removeflow_flowid);
+ ADD_FIELD_UINT(message_tree, removeflow_measurementid);
+ ADD_FIELD_UINT(message_tree, removeflow_streamid);
}
static void
dissect_npmp_identify_flow_message(tvbuff_t *message_tvb, proto_tree *message_tree)
{
- ADD_FIELD(message_tree, identifyflow_magicnumber);
- ADD_FIELD(message_tree, identifyflow_flowid);
- ADD_FIELD(message_tree, identifyflow_measurementid);
- ADD_FIELD(message_tree, identifyflow_streamid);
+ ADD_FIELD_UINT(message_tree, identifyflow_magicnumber);
+ ADD_FIELD_UINT(message_tree, identifyflow_flowid);
+ ADD_FIELD_UINT(message_tree, identifyflow_measurementid);
+ ADD_FIELD_UINT(message_tree, identifyflow_streamid);
}
@@ -330,14 +331,14 @@ dissect_npmp_data_message(tvbuff_t *message_tvb, proto_tree *message_tree)
{
const guint16 message_length = tvb_get_ntohs(message_tvb, offset_message_length);
- ADD_FIELD(message_tree, data_flowid);
- ADD_FIELD(message_tree, data_measurementid);
- ADD_FIELD(message_tree, data_streamid);
- ADD_FIELD(message_tree, data_padding);
- ADD_FIELD(message_tree, data_frameid);
- ADD_FIELD(message_tree, data_packetseqnumber);
- ADD_FIELD(message_tree, data_byteseqnumber);
- ADD_FIELD(message_tree, data_timestamp);
+ ADD_FIELD_UINT(message_tree, data_flowid);
+ ADD_FIELD_UINT(message_tree, data_measurementid);
+ ADD_FIELD_UINT(message_tree, data_streamid);
+ ADD_FIELD_UINT(message_tree, data_padding);
+ ADD_FIELD_UINT(message_tree, data_frameid);
+ ADD_FIELD_UINT(message_tree, data_packetseqnumber);
+ ADD_FIELD_UINT(message_tree, data_byteseqnumber);
+ ADD_FIELD_UINT(message_tree, data_timestamp);
if (message_length > offset_data_payload) {
proto_tree_add_item(message_tree, hf_data_payload, message_tvb, offset_data_payload, message_length - offset_data_payload, ENC_NA);
}
@@ -347,14 +348,14 @@ dissect_npmp_data_message(tvbuff_t *message_tvb, proto_tree *message_tree)
static void
dissect_npmp_start_message(tvbuff_t *message_tvb, proto_tree *message_tree)
{
- ADD_FIELD(message_tree, start_measurementid);
+ ADD_FIELD_UINT(message_tree, start_measurementid);
}
static void
dissect_npmp_stop_message(tvbuff_t *message_tvb, proto_tree *message_tree)
{
- ADD_FIELD(message_tree, stop_measurementid);
+ ADD_FIELD_UINT(message_tree, stop_measurementid);
}
@@ -378,9 +379,9 @@ dissect_npmp_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *npmp
col_add_fstr(pinfo->cinfo, COL_INFO, "%s ", val_to_str(type, message_type_values, "Unknown NetPerfMeterProtocol type"));
}
- ADD_FIELD(npmp_tree, message_type);
- ADD_FIELD(npmp_tree, message_flags);
- ADD_FIELD(npmp_tree, message_length);
+ ADD_FIELD_UINT(npmp_tree, message_type);
+ ADD_FIELD_UINT(npmp_tree, message_flags);
+ ADD_FIELD_UINT(npmp_tree, message_length);
switch (type) {
case NETPERFMETER_ACKNOWLEDGE:
diff --git a/epan/dissectors/packet-netsync.c b/epan/dissectors/packet-netsync.c
index 5eb92df4a9..98ace57722 100644
--- a/epan/dissectors/packet-netsync.c
+++ b/epan/dissectors/packet-netsync.c
@@ -30,9 +30,8 @@
#include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-#include <time.h>
+#include <glib.h>
+
#include <epan/packet.h>
#include <epan/addr_resolv.h>
#include <epan/prefs.h>
diff --git a/epan/dissectors/packet-newmail.c b/epan/dissectors/packet-newmail.c
index 9e795b694e..7f8e92216b 100644
--- a/epan/dissectors/packet-newmail.c
+++ b/epan/dissectors/packet-newmail.c
@@ -8,12 +8,6 @@
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
- * Copied from WHATEVER_FILE_YOU_USED (where "WHATEVER_FILE_YOU_USED"
- * is a dissector file; if you just copied this from README.developer,
- * don't bother with the "Copied from" - you don't even need to put
- * in a "Copied from" if you copied an existing dissector, especially
- * if the bulk of the code in the new dissector is your code)
- *
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
@@ -33,14 +27,11 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
#include <epan/prefs.h>
-/* Forward declaration we need below */
void proto_reg_handoff_newmail(void);
/* Variables for preferences */
@@ -97,25 +88,23 @@ proto_register_newmail(void)
module_t *newmail_module;
- /* Register the protocol name and description */
proto_newmail = proto_register_protocol("Microsoft Exchange New Mail Notification",
"NEWMAIL", "newmail");
- /* Required function calls to register the header fields and subtrees used */
proto_register_field_array(proto_newmail, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
- /* Register the dissector without a port yet */
register_dissector("newmail", dissect_newmail, proto_newmail);
- /* Register preferences module */
newmail_module = prefs_register_protocol(proto_newmail,
proto_reg_handoff_newmail);
prefs_register_uint_preference(newmail_module,
"default_port",
"Default UDP port (optional)",
- "Always dissect this port's traffic as newmail notifications. Additional ports will be dynamically registered as they are seen in MAPI register push notification packets.",
+ "Always dissect this port's traffic as newmail notifications."
+ " Additional ports will be dynamically registered as they"
+ " are seen in MAPI register push notification packets.",
10, &preference_default_port);
}
@@ -125,20 +114,20 @@ proto_reg_handoff_newmail(void)
{
static gboolean inited = FALSE;
static dissector_handle_t newmail_handle;
- static guint preference_default_port_last;
+ static guint preference_default_port_last;
if(!inited) {
newmail_handle = find_dissector("newmail");
dissector_add_handle("udp.port", newmail_handle); /* for 'decode-as' */
inited = TRUE;
} else {
- if (preference_default_port_last != 0) {
- dissector_delete_uint("udp.port", preference_default_port_last, newmail_handle);
- }
- }
+ if (preference_default_port_last != 0) {
+ dissector_delete_uint("udp.port", preference_default_port_last, newmail_handle);
+ }
+ }
if(preference_default_port != 0) {
dissector_add_uint("udp.port", preference_default_port, newmail_handle);
}
- preference_default_port_last = preference_default_port;
+ preference_default_port_last = preference_default_port;
}
diff --git a/epan/dissectors/packet-nflog.c b/epan/dissectors/packet-nflog.c
new file mode 100644
index 0000000000..cfc9104aad
--- /dev/null
+++ b/epan/dissectors/packet-nflog.c
@@ -0,0 +1,406 @@
+/* packet-nflog.c
+ * Copyright 2011,2012 Jakub Zawadzki <darkjames-ws@darkjames.pl>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+#include <epan/prefs.h>
+#include <epan/aftypes.h>
+
+/* nfulnl_attr_type enum from <linux/netfilter/nfnetlink_log.h> */
+enum ws_nfulnl_attr_type {
+ WS_NFULA_UNSPEC,
+ WS_NFULA_PACKET_HDR,
+ WS_NFULA_MARK, /* __u32 nfmark */
+ WS_NFULA_TIMESTAMP, /* nfulnl_msg_packet_timestamp */
+ WS_NFULA_IFINDEX_INDEV, /* __u32 ifindex */
+ WS_NFULA_IFINDEX_OUTDEV, /* __u32 ifindex */
+ WS_NFULA_IFINDEX_PHYSINDEV, /* __u32 ifindex */
+ WS_NFULA_IFINDEX_PHYSOUTDEV, /* __u32 ifindex */
+ WS_NFULA_HWADDR, /* nfulnl_msg_packet_hw */
+ WS_NFULA_PAYLOAD, /* opaque data payload */
+ WS_NFULA_PREFIX, /* string prefix */
+ WS_NFULA_UID, /* user id of socket */
+ WS_NFULA_SEQ, /* instance-local sequence number */
+ WS_NFULA_SEQ_GLOBAL, /* global sequence number */
+ WS_NFULA_GID, /* group id of socket */
+ WS_NFULA_HWTYPE, /* hardware type */
+ WS_NFULA_HWHEADER, /* hardware header */
+ WS_NFULA_HWLEN, /* hardware header length */
+};
+
+#define BYTE_ORDER_AUTO 0
+#define BYTE_ORDER_BE 1
+#define BYTE_ORDER_LE 2
+#define BYTE_ORDER_HOST 3
+
+static enum_val_t byte_order_types[] = {
+ { "Auto", "Auto", BYTE_ORDER_AUTO },
+ { "Host", "Host", BYTE_ORDER_HOST },
+ { "LE", "Little Endian", BYTE_ORDER_LE },
+ { "BE", "Big Endian", BYTE_ORDER_BE },
+ { NULL, NULL, 0 }
+};
+
+static gint nflog_byte_order = BYTE_ORDER_AUTO;
+
+static int proto_nflog = -1;
+
+static int ett_nflog = -1;
+static int ett_nflog_tlv = -1;
+
+static int hf_nflog_family = -1;
+static int hf_nflog_version = -1;
+static int hf_nflog_resid = -1;
+static int hf_nflog_encoding = -1;
+
+static int hf_nflog_tlv = -1;
+static int hf_nflog_tlv_length = -1;
+static int hf_nflog_tlv_type = -1;
+static int hf_nflog_tlv_prefix = -1;
+static int hf_nflog_tlv_uid = -1;
+static int hf_nflog_tlv_gid = -1;
+static int hf_nflog_tlv_timestamp = -1;
+static int hf_nflog_tlv_unknown = -1;
+
+static dissector_handle_t ip_handle;
+static dissector_handle_t ip6_handle;
+static dissector_handle_t data_handle;
+
+static const value_string _linux_family_vals[] = {
+ { LINUX_AF_INET, "IP" },
+ { LINUX_AF_INET6, "IPv6" },
+ { 0, NULL }
+};
+
+static const value_string _encoding_vals[] = {
+ { ENC_BIG_ENDIAN, "Big Endian" },
+ { ENC_LITTLE_ENDIAN, "Little Endian" },
+/* { ENC_NA, "Unknown" }, */ /* ENC_NA has the same value as ENC_BIG_ENDIAN */
+ { 0, NULL }
+};
+
+static const value_string nflog_tlv_vals[] = {
+ { WS_NFULA_UNSPEC, "NFULA_UNSPEC" },
+ { WS_NFULA_PACKET_HDR, "NFULA_PACKET_HDR" },
+ { WS_NFULA_MARK, "NFULA_MARK" },
+ { WS_NFULA_TIMESTAMP, "NFULA_TIMESTAMP" },
+ { WS_NFULA_IFINDEX_INDEV, "NFULA_IFINDEX_INDEV" },
+ { WS_NFULA_IFINDEX_OUTDEV, "NFULA_IFINDEX_OUTDEV" },
+ { WS_NFULA_IFINDEX_PHYSINDEV, "NFULA_IFINDEX_PHYSINDEV" },
+ { WS_NFULA_IFINDEX_PHYSOUTDEV, "NFULA_IFINDEX_PHYSOUTDEV" },
+ { WS_NFULA_HWADDR, "NFULA_HWADDR" },
+ { WS_NFULA_PAYLOAD, "NFULA_PAYLOAD" },
+ { WS_NFULA_PREFIX, "NFULA_PREFIX" },
+ { WS_NFULA_UID, "NFULA_UID" },
+ { WS_NFULA_SEQ, "NFULA_SEQ" },
+ { WS_NFULA_SEQ_GLOBAL, "NFULA_SEQ_GLOBAL" },
+ { WS_NFULA_GID, "NFULA_GID" },
+ { WS_NFULA_HWTYPE, "NFULA_HWTYPE" },
+ { WS_NFULA_HWHEADER, "NFULA_HWHEADER" },
+ { WS_NFULA_HWLEN, "NFULA_HWLEN" },
+ { 0, NULL }
+};
+
+static int
+nflog_tvb_test_order(tvbuff_t *tvb, int offset, guint16 (*val16_get)(tvbuff_t *, int))
+{
+ while (tvb_length_remaining(tvb, offset) > 4) {
+ guint16 tlv_len = val16_get(tvb, offset + 0);
+ guint16 tlv_type;
+
+ /* malformed */
+ if (tlv_len < 4)
+ return 0;
+
+ tlv_type = (val16_get(tvb, offset + 2) & 0x7fff);
+
+ if (tlv_type >= 0x100)
+ break;
+
+ if (tlv_type)
+ return 1;
+
+ offset += ((tlv_len + 3) & ~3); /* next TLV aligned to 4B */
+ }
+ return 0;
+}
+
+static int
+nflog_tvb_byte_order(tvbuff_t *tvb, int tlv_offset)
+{
+ switch (nflog_byte_order) {
+ case BYTE_ORDER_BE:
+ return ENC_BIG_ENDIAN;
+
+ case BYTE_ORDER_LE:
+ return ENC_LITTLE_ENDIAN;
+
+ case BYTE_ORDER_HOST:
+ return (G_BYTE_ORDER == G_LITTLE_ENDIAN) ?
+ ENC_LITTLE_ENDIAN :
+ ENC_BIG_ENDIAN;
+ }
+
+ if (nflog_tvb_test_order(tvb, tlv_offset, tvb_get_ntohs))
+ return ENC_BIG_ENDIAN;
+
+ if (nflog_tvb_test_order(tvb, tlv_offset, tvb_get_letohs))
+ return ENC_LITTLE_ENDIAN;
+
+ return ENC_NA; /* ENC_NA same as ENC_BIG_ENDIAN */
+}
+
+static void
+dissect_nflog(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ const int start_tlv_offset = 4;
+
+ proto_tree *nflog_tree = NULL;
+ proto_item *ti;
+
+ int offset = 0;
+
+ tvbuff_t *next_tvb = NULL;
+ int aftype;
+
+ int enc;
+ guint16 (*val16_get)(tvbuff_t *, int);
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "NFLOG");
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ aftype = tvb_get_guint8(tvb, 0);
+ enc = nflog_tvb_byte_order(tvb, start_tlv_offset);
+ switch (enc) {
+ case ENC_LITTLE_ENDIAN:
+ val16_get = tvb_get_letohs;
+ break;
+
+ case ENC_BIG_ENDIAN:
+ default:
+ val16_get = tvb_get_ntohs;
+ break;
+ }
+
+ /* Header */
+ if (proto_field_is_referenced(tree, proto_nflog)) {
+ ti = proto_tree_add_item(tree, proto_nflog, tvb, 0, -1, ENC_NA);
+ nflog_tree = proto_item_add_subtree(ti, ett_nflog);
+
+ proto_tree_add_item(nflog_tree, hf_nflog_family, tvb, offset, 1, ENC_NA);
+ offset += 1;
+
+ proto_tree_add_item(nflog_tree, hf_nflog_version, tvb, offset, 1, ENC_NA);
+ offset += 1;
+
+ proto_tree_add_item(nflog_tree, hf_nflog_resid, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ ti = proto_tree_add_uint(nflog_tree, hf_nflog_encoding,
+ tvb, offset, tvb_length_remaining(tvb, offset), enc);
+ PROTO_ITEM_SET_GENERATED(ti);
+ }
+
+ offset = start_tlv_offset;
+ /* TLVs */
+ while (tvb_length_remaining(tvb, offset) >= 4) {
+ guint16 tlv_len = val16_get(tvb, offset + 0);
+ guint16 tlv_type;
+ guint16 value_len;
+
+ proto_tree *tlv_tree;
+
+ /* malformed */
+ if (tlv_len < 4)
+ return;
+
+ value_len = tlv_len - 4;
+ tlv_type = (val16_get(tvb, offset + 2) & 0x7fff);
+
+ if (nflog_tree) {
+ gboolean handled = FALSE;
+
+ ti = proto_tree_add_bytes_format(nflog_tree, hf_nflog_tlv,
+ tvb, offset, tlv_len, NULL,
+ "TLV Type: %s (%u), Length: %u",
+ val_to_str_const(tlv_type, nflog_tlv_vals, "Unknown"),
+ tlv_type, tlv_len);
+ tlv_tree = proto_item_add_subtree(ti, ett_nflog_tlv);
+
+ proto_tree_add_item(tlv_tree, hf_nflog_tlv_length, tvb, offset + 0, 2, enc);
+ proto_tree_add_item(tlv_tree, hf_nflog_tlv_type, tvb, offset + 2, 2, enc);
+ switch (tlv_type) {
+ case WS_NFULA_PAYLOAD:
+ handled = TRUE;
+ break;
+
+ case WS_NFULA_PREFIX:
+ if (value_len >= 1) {
+ proto_tree_add_item(tlv_tree, hf_nflog_tlv_prefix,
+ tvb, offset + 4, value_len, ENC_NA);
+ handled = TRUE;
+ }
+ break;
+
+ case WS_NFULA_UID:
+ if (value_len == 4) {
+ proto_tree_add_item(tlv_tree, hf_nflog_tlv_uid,
+ tvb, offset + 4, value_len, ENC_BIG_ENDIAN);
+ handled = TRUE;
+ }
+ break;
+
+ case WS_NFULA_GID:
+ if (value_len == 4) {
+ proto_tree_add_item(tlv_tree, hf_nflog_tlv_gid,
+ tvb, offset + 4, value_len, ENC_BIG_ENDIAN);
+ handled = TRUE;
+ }
+ break;
+
+ case WS_NFULA_TIMESTAMP:
+ if (value_len == 16) {
+ nstime_t ts;
+
+ ts.secs = tvb_get_ntoh64(tvb, offset + 4);
+ /* XXX - add an "expert info" warning if this is >= 10^9? */
+ ts.nsecs = (int)tvb_get_ntoh64(tvb, offset + 12);
+ proto_tree_add_time(tlv_tree, hf_nflog_tlv_timestamp,
+ tvb, offset + 4, value_len, &ts);
+ handled = TRUE;
+ }
+ break;
+ }
+
+ if (!handled)
+ proto_tree_add_item(tlv_tree, hf_nflog_tlv_unknown,
+ tvb, offset + 4, value_len, ENC_NA);
+ }
+
+ if (tlv_type == WS_NFULA_PAYLOAD)
+ next_tvb = tvb_new_subset(tvb, offset + 4, value_len, value_len);
+
+ offset += ((tlv_len + 3) & ~3); /* next TLV aligned to 4B */
+ }
+
+ if (next_tvb) {
+ switch (aftype) {
+ case LINUX_AF_INET:
+ call_dissector(ip_handle, next_tvb, pinfo, tree);
+ break;
+ case LINUX_AF_INET6:
+ call_dissector(ip6_handle, next_tvb, pinfo, tree);
+ break;
+ default:
+ call_dissector(data_handle, next_tvb, pinfo, tree);
+ break;
+ }
+ }
+}
+
+void
+proto_register_nflog(void)
+{
+ static hf_register_info hf[] = {
+ /* Header */
+ { &hf_nflog_family,
+ { "Family", "nflog.family", FT_UINT8, BASE_DEC, VALS(_linux_family_vals), 0x00, NULL, HFILL }
+ },
+ { &hf_nflog_version,
+ { "Version", "nflog.version", FT_UINT8, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_nflog_resid,
+ { "Resource id", "nflog.res_id", FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+
+ { &hf_nflog_encoding,
+ { "Encoding", "nflog.encoding", FT_UINT32, BASE_HEX, VALS(_encoding_vals), 0x00, NULL, HFILL }
+ },
+
+ /* TLV */
+ { &hf_nflog_tlv,
+ { "TLV", "nflog.tlv", FT_BYTES, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_nflog_tlv_length,
+ { "Length", "nflog.tlv_length", FT_UINT16, BASE_DEC, NULL, 0x00, "TLV Length", HFILL }
+ },
+ { &hf_nflog_tlv_type,
+ { "Type", "nflog.tlv_type", FT_UINT16, BASE_DEC, VALS(nflog_tlv_vals), 0x7fff, "TLV Type", HFILL }
+ },
+ /* TLV values */
+ { &hf_nflog_tlv_prefix,
+ { "Prefix", "nflog.prefix", FT_STRINGZ, BASE_NONE, NULL, 0x00, "TLV Prefix Value", HFILL }
+ },
+ { &hf_nflog_tlv_uid,
+ { "UID", "nflog.uid", FT_INT32, BASE_DEC, NULL, 0x00, "TLV UID Value", HFILL }
+ },
+ { &hf_nflog_tlv_gid,
+ { "GID", "nflog.gid", FT_INT32, BASE_DEC, NULL, 0x00, "TLV GID Value", HFILL }
+ },
+ { &hf_nflog_tlv_timestamp,
+ { "Timestamp", "nflog.timestamp", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x00, "TLV Timestamp Value", HFILL }
+ },
+ { &hf_nflog_tlv_unknown,
+ { "Value", "nflog.tlv_value", FT_BYTES, BASE_NONE, NULL, 0x00, "TLV Value", HFILL }
+ },
+ };
+
+ static gint *ett[] = {
+ &ett_nflog,
+ &ett_nflog_tlv
+ };
+
+ module_t *pref;
+
+ proto_nflog = proto_register_protocol("Linux Netfilter NFLOG", "NFLOG", "nflog");
+
+ pref = prefs_register_protocol(proto_nflog, NULL);
+ prefs_register_enum_preference(pref, "byte_order_type", "Byte Order", "Byte Order",
+ &nflog_byte_order, byte_order_types, FALSE);
+
+ register_dissector("nflog", dissect_nflog, proto_nflog);
+
+ proto_register_field_array(proto_nflog, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+}
+
+void
+proto_reg_handoff_nflog(void)
+{
+ dissector_handle_t nflog_handle;
+
+ ip_handle = find_dissector("ip");
+ ip6_handle = find_dissector("ipv6");
+ data_handle = find_dissector("data");
+
+ nflog_handle = find_dissector("nflog");
+ dissector_add_uint("wtap_encap", WTAP_ENCAP_NFLOG, nflog_handle);
+}
+
diff --git a/epan/dissectors/packet-nfs.c b/epan/dissectors/packet-nfs.c
index 359a949811..2525157286 100644
--- a/epan/dissectors/packet-nfs.c
+++ b/epan/dissectors/packet-nfs.c
@@ -402,6 +402,7 @@ static int hf_nfs_r_netid = -1;
static int hf_nfs_gsshandle4 = -1;
static int hf_nfs_r_addr = -1;
static int hf_nfs_createmode4 = -1;
+static int hf_nfs_op_mask = -1;
/* NFSv4.1 */
static int hf_nfs_length4_minlength = -1;
@@ -2305,7 +2306,7 @@ dissect_fhandle_data_CELERRA(tvbuff_t* tvb, packet_info *pinfo _U_, proto_tree *
proto_tree_add_uint(obj_tree, hf_nfs_fh_obj_gen, tvb, offset+36, 4, obj_gen);
}
}
-};
+}
static void
dissect_fhandle_data_unknown(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
@@ -4567,7 +4568,7 @@ static int
dissect_nfs3_remove_call(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree)
{
- guint32 hash;
+ guint32 hash = 0;
char *name=NULL;
offset = dissect_diropargs3(tvb, offset, pinfo, tree, "object", &hash, &name);
@@ -4600,7 +4601,7 @@ static int
dissect_nfs3_rmdir_call(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree)
{
- guint32 hash;
+ guint32 hash = 0;
char *name=NULL;
offset = dissect_diropargs3(tvb, offset, pinfo, tree, "object", &hash, &name);
@@ -4618,7 +4619,7 @@ static int
dissect_nfs3_getattr_call(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree* tree)
{
- guint32 hash;
+ guint32 hash = 0;
offset = dissect_nfs_fh3(tvb, offset, pinfo, tree, "object", &hash);
@@ -4706,7 +4707,7 @@ static int
dissect_nfs3_setattr_call(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree* tree)
{
- guint32 hash;
+ guint32 hash = 0;
offset = dissect_nfs_fh3 (tvb, offset, pinfo, tree, "object", &hash);
offset = dissect_sattr3 (tvb, offset, tree, "new_attributes");
@@ -4751,7 +4752,7 @@ static int
dissect_nfs3_lookup_call(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree* tree)
{
- guint32 hash;
+ guint32 hash = 0;
char *name=NULL;
offset = dissect_diropargs3 (tvb, offset, pinfo, tree, "what", &hash, &name);
@@ -4770,7 +4771,7 @@ dissect_nfs3_lookup_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
{
guint32 status;
const char *err;
- guint32 hash;
+ guint32 hash = 0;
offset = dissect_nfsstat3(tvb, offset, tree, &status);
switch (status) {
@@ -4813,7 +4814,7 @@ static const true_false_string tfs_access_rights = {"allowed", "*Access Denied*"
proto_tree*
display_access_items(tvbuff_t* tvb, int offset, packet_info* pinfo, proto_tree* tree,
- guint32 amask, char mtype, int version, GString* optext, char* label)
+ guint32 amask, char mtype, int version, GString* optext, const char* label)
{
gboolean nfsv3 = (version==3 ? TRUE : FALSE);
proto_item* access_item = NULL;
@@ -4990,7 +4991,7 @@ dissect_access_reply(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree*
static int
dissect_nfs3_access_call(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree* tree)
{
- guint32 fhhash, *acc_request, amask;
+ guint32 fhhash = 0, *acc_request, amask;
rpc_call_info_value *civ;
offset = dissect_nfs_fh3(tvb, offset, pinfo, tree, "object", &fhhash);
@@ -5040,7 +5041,7 @@ static int
dissect_nfs3_readlink_call(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree* tree)
{
- guint32 hash;
+ guint32 hash = 0;
offset = dissect_nfs_fh3(tvb, offset, pinfo, tree, "object", &hash);
@@ -5089,7 +5090,7 @@ dissect_nfs3_read_call(tvbuff_t *tvb, int offset, packet_info *pinfo,
{
guint64 off;
guint32 len;
- guint32 hash;
+ guint32 hash = 0;
offset = dissect_nfs_fh3(tvb, offset, pinfo, tree, "file", &hash);
@@ -5178,7 +5179,7 @@ dissect_nfs3_write_call(tvbuff_t *tvb, int offset, packet_info *pinfo,
guint64 off;
guint32 len;
guint32 stable;
- guint32 hash;
+ guint32 hash = 0;
offset = dissect_nfs_fh3 (tvb, offset, pinfo, tree, "file", &hash);
@@ -5271,7 +5272,7 @@ dissect_nfs3_create_call(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree* tree)
{
guint32 mode;
- guint32 hash;
+ guint32 hash = 0;
char *name=NULL;
offset = dissect_diropargs3 (tvb, offset, pinfo, tree, "where", &hash, &name);
@@ -5328,7 +5329,7 @@ static int
dissect_nfs3_mkdir_call(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree* tree)
{
- guint32 hash;
+ guint32 hash = 0;
char *name=NULL;
offset = dissect_diropargs3(tvb, offset, pinfo, tree, "where", &hash, &name);
@@ -5374,7 +5375,7 @@ static int
dissect_nfs3_symlink_call(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree* tree)
{
- guint32 from_hash;
+ guint32 from_hash = 0;
char *from_name=NULL;
char *to_name=NULL;
@@ -5422,7 +5423,7 @@ dissect_nfs3_mknod_call(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree* tree)
{
guint32 type;
- guint32 hash;
+ guint32 hash = 0;
char *name=NULL;
const char *type_str;
@@ -5532,9 +5533,9 @@ static int
dissect_nfs3_rename_call(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree* tree)
{
- guint32 from_hash;
+ guint32 from_hash = 0;
char *from_name=NULL;
- guint32 to_hash;
+ guint32 to_hash = 0;
char *to_name=NULL;
offset = dissect_diropargs3(tvb, offset, pinfo, tree, "from", &from_hash, &from_name);
@@ -5581,8 +5582,8 @@ static int
dissect_nfs3_link_call(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree* tree)
{
- guint32 from_hash;
- guint32 to_hash;
+ guint32 from_hash = 0;
+ guint32 to_hash = 0;
char *to_name=NULL;
offset = dissect_nfs_fh3 (tvb, offset, pinfo, tree, "file", &from_hash);
@@ -5631,7 +5632,7 @@ static int
dissect_nfs3_readdir_call(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree* tree)
{
- guint32 hash;
+ guint32 hash = 0;
offset = dissect_nfs_fh3 (tvb, offset, pinfo, tree, "dir", &hash);
offset = dissect_rpc_uint64(tvb, tree, hf_nfs_cookie3, offset);
@@ -5847,7 +5848,7 @@ static int
dissect_nfs3_fsstat_call(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree* tree)
{
- guint32 hash;
+ guint32 hash = 0;
offset = dissect_nfs_fh3(tvb, offset, pinfo, tree, "object", &hash);
@@ -5915,7 +5916,7 @@ static int
dissect_nfs3_fsinfo_call(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree* tree)
{
- guint32 hash;
+ guint32 hash = 0;
offset = dissect_nfs_fh3(tvb, offset, pinfo, tree, "object", &hash);
@@ -6044,7 +6045,7 @@ static int
dissect_nfs3_pathconf_call(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree* tree)
{
- guint32 hash;
+ guint32 hash = 0;
offset = dissect_nfs_fh3(tvb, offset, pinfo, tree, "object", &hash);
@@ -6106,7 +6107,7 @@ static int
dissect_nfs3_commit_call(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree* tree)
{
- guint32 hash;
+ guint32 hash = 0;
offset = dissect_nfs_fh3(tvb, offset, pinfo, tree, "file", &hash);
offset = dissect_rpc_uint64(tvb, tree, hf_nfs_offset3, offset);
@@ -8086,6 +8087,7 @@ static const value_string names_nfsv4_operation[] = {
{ NFS4_OP_VERIFY, "VERIFY" },
{ NFS4_OP_WRITE, "WRITE" },
{ NFS4_OP_RELEASE_LOCKOWNER, "RELEASE_LOCKOWNER" },
+ { NFS4_OP_BACKCHANNEL_CTL, "BACKCHANNEL_CTL" },
{ NFS4_OP_BIND_CONN_TO_SESSION, "BIND_CONN_TO_SESSION" },
{ NFS4_OP_EXCHANGE_ID, "EXCHANGE_ID" },
{ NFS4_OP_CREATE_SESSION, "CREATE_SESSION" },
@@ -8359,7 +8361,7 @@ dissect_nfs_state_protect_bitmap4(tvbuff_t *tvb, int offset,
proto_item *op_fitem = NULL;
proto_tree *op_newftree = NULL;
guint32 *bitmap=NULL;
- guint32 fattr;
+ guint32 op;
guint32 i;
gint j;
guint32 sl;
@@ -8387,10 +8389,10 @@ dissect_nfs_state_protect_bitmap4(tvbuff_t *tvb, int offset,
bitmap[i] = tvb_get_ntohl(tvb, offset);
sl = 0x00000001;
for (j = 0; j < 32; j++) {
- fattr = 32 * i + j;
+ op = 32 * i + j;
if (bitmap[i] & sl) {
op_fitem = proto_tree_add_uint(newftree,
- hf_nfs_recc_attr, tvb, offset, 4, fattr);
+ hf_nfs_op_mask, tvb, offset, 4, op);
if (op_fitem == NULL) break;
op_newftree = proto_item_add_subtree(op_fitem, ett_nfs_bitmap4);
if (op_newftree == NULL) break;
@@ -9050,7 +9052,7 @@ dissect_nfs_argop4(tvbuff_t *tvb, int offset, packet_info *pinfo,
ops = MAX_NFSV4_OPS;
}
- op_summary = g_malloc(sizeof(nfsv4_operation_summary) * ops);
+ op_summary = g_malloc0(sizeof(nfsv4_operation_summary) * ops);
if (fitem) {
ftree = proto_item_add_subtree(fitem, ett_nfs_argop4);
@@ -9624,6 +9626,13 @@ dissect_nfs_argop4(tvbuff_t *tvb, int offset, packet_info *pinfo,
}
}
+ for (ops_counter=0; ops_counter<ops; ops_counter++)
+ {
+ if (op_summary[ops_counter].optext)
+ g_string_free(op_summary[ops_counter].optext, TRUE);
+ }
+
+ g_free(op_summary);
return offset;
}
@@ -9707,7 +9716,7 @@ dissect_nfs_resop4(tvbuff_t *tvb, int offset, packet_info *pinfo,
ops = MAX_NFSV4_OPS;
}
- op_summary = g_malloc(sizeof(nfsv4_operation_summary) * ops);
+ op_summary = g_malloc0(sizeof(nfsv4_operation_summary) * ops);
if (fitem) {
ftree = proto_item_add_subtree(fitem, ett_nfs_resop4);
@@ -10041,6 +10050,13 @@ dissect_nfs_resop4(tvbuff_t *tvb, int offset, packet_info *pinfo,
}
}
+ for (ops_counter=0; ops_counter<ops; ops_counter++)
+ {
+ if (op_summary[ops_counter].optext)
+ g_string_free(op_summary[ops_counter].optext, TRUE);
+ }
+
+ g_free(op_summary);
return offset;
}
@@ -10645,7 +10661,7 @@ proto_register_nfs(void)
"V4 Procedure", "nfs.procedure_v4", FT_UINT32, BASE_DEC,
VALS(nfsv4_proc_vals), 0, NULL, HFILL }},
{ &hf_nfs_impl_id4_len, {
- "Implemetation ID length", "nfs.impl_id4.length", FT_UINT32, BASE_DEC,
+ "Implementation ID length", "nfs.impl_id4.length", FT_UINT32, BASE_DEC,
NULL, 0, NULL, HFILL }},
{ &hf_nfs_fh_length, {
"length", "nfs.fh.length", FT_UINT32, BASE_DEC,
@@ -12262,6 +12278,10 @@ proto_register_nfs(void)
"S_IXOTH", "nfs.mode3.xoth", FT_BOOLEAN, 32,
TFS(&tfs_yes_no), 0x001, NULL, HFILL }},
+ { &hf_nfs_op_mask, {
+ "op_mask", "nfs.op_mask", FT_UINT32, BASE_DEC,
+ VALS(names_nfsv4_operation), 0, "Operation Mask", HFILL }},
+
/* Hidden field for v2, v3, and v4 status */
{ &hf_nfs_nfsstat, {
"Status", "nfs.status", FT_UINT32, BASE_DEC,
diff --git a/epan/dissectors/packet-nfs.h b/epan/dissectors/packet-nfs.h
index 508c7658b0..09764999b3 100644
--- a/epan/dissectors/packet-nfs.h
+++ b/epan/dissectors/packet-nfs.h
@@ -197,7 +197,7 @@ extern int dissect_fattr(tvbuff_t *tvb, int offset, proto_tree *tree,
const char* name);
extern proto_tree* display_access_items(tvbuff_t* tvb, int offset, packet_info* pinfo, proto_tree* tree,
- guint32 amask, char mtype, int version, GString* optext, char* label);
+ guint32 amask, char mtype, int version, GString* optext, const char* label);
extern int dissect_access_reply(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree* tree,
int version, GString *optext);
diff --git a/epan/dissectors/packet-nhrp.c b/epan/dissectors/packet-nhrp.c
index 94009dcb05..dcc1fc3e7a 100644
--- a/epan/dissectors/packet-nhrp.c
+++ b/epan/dissectors/packet-nhrp.c
@@ -32,10 +32,10 @@
# include "config.h"
#endif
-#include <stdlib.h>
#include <string.h>
-#include <ctype.h>
+
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/addr_resolv.h>
#include <epan/expert.h>
@@ -51,11 +51,8 @@
#include "packet-nhrp.h"
/* forward reference */
-void proto_register_nhrp(void);
-void proto_reg_handoff_nhrp(void);
-void dissect_nhrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static void _dissect_nhrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- gboolean nested, gboolean codeinfo);
+ gboolean nested, gboolean codeinfo);
static int proto_nhrp = -1;
static int hf_nhrp_hdr_afn = -1;
@@ -87,7 +84,9 @@ static int hf_nhrp_flag_U2 = -1;
static int hf_nhrp_flag_S = -1;
static int hf_nhrp_flag_NAT = -1;
static int hf_nhrp_src_nbma_addr = -1;
-static int hf_nhrp_src_nbma_saddr = -1; /* TBD: Not used */
+#if 0
+static int hf_nhrp_src_nbma_saddr = -1; /* TBD: Not used */
+#endif
static int hf_nhrp_src_prot_addr = -1;
static int hf_nhrp_dst_prot_addr = -1;
static int hf_nhrp_request_id = -1;
@@ -106,15 +105,21 @@ static int hf_nhrp_cli_saddr_tl_len = -1;
static int hf_nhrp_cli_prot_len = -1;
static int hf_nhrp_pref = -1;
static int hf_nhrp_client_nbma_addr = -1;
-static int hf_nhrp_client_nbma_saddr = -1; /* TBD: Not used */
+#if 0
+static int hf_nhrp_client_nbma_saddr = -1; /* TBD: Not used */
+#endif
static int hf_nhrp_client_prot_addr = -1;
static int hf_nhrp_ext_C = -1;
static int hf_nhrp_ext_type = -1;
static int hf_nhrp_ext_len = -1;
-static int hf_nhrp_ext_value = -1; /* TBD: Not used */
+#if 0
+static int hf_nhrp_ext_value = -1; /* TBD: Not used */
+#endif
static int hf_nhrp_error_code = -1;
static int hf_nhrp_error_offset = -1;
-static int hf_nhrp_error_packet = -1; /* TBD: Not used */
+#if 0
+static int hf_nhrp_error_packet = -1; /* TBD: Not used */
+#endif
static int hf_nhrp_auth_ext_reserved = -1;
static int hf_nhrp_auth_ext_spi = -1;
@@ -124,6 +129,7 @@ static int hf_nhrp_devcap_ext_srccap = -1;
static int hf_nhrp_devcap_ext_srccap_V = -1;
static int hf_nhrp_devcap_ext_dstcap = -1;
static int hf_nhrp_devcap_ext_dstcap_V = -1;
+static int hf_nhrp_unknown_ext_value = -1;
static gint ett_nhrp = -1;
static gint ett_nhrp_hdr = -1;
@@ -143,110 +149,112 @@ static gint ett_nhrp_devcap_ext_srccap = -1;
static gint ett_nhrp_devcap_ext_dstcap = -1;
/* NHRP Packet Types */
-#define NHRP_RESOLUTION_REQ 1
-#define NHRP_RESOLUTION_REPLY 2
-#define NHRP_REGISTRATION_REQ 3
-#define NHRP_REGISTRATION_REPLY 4
-#define NHRP_PURGE_REQ 5
-#define NHRP_PURGE_REPLY 6
-#define NHRP_ERROR_INDICATION 7
-#define NHRP_TRAFFIC_INDICATION 8
+#define NHRP_RESOLUTION_REQ 1
+#define NHRP_RESOLUTION_REPLY 2
+#define NHRP_REGISTRATION_REQ 3
+#define NHRP_REGISTRATION_REPLY 4
+#define NHRP_PURGE_REQ 5
+#define NHRP_PURGE_REPLY 6
+#define NHRP_ERROR_INDICATION 7
+#define NHRP_TRAFFIC_INDICATION 8
/* NHRP Extension Types */
-#define NHRP_EXT_NULL 0 /* End of Extension */
-#define NHRP_EXT_RESP_ADDR 3 /* Responder Address Extension */
-#define NHRP_EXT_FWD_RECORD 4 /* NHRP Forward Transit NHS Record Extension */
-#define NHRP_EXT_REV_RECORD 5 /* NHRP Reverse Transit NHS Record Extension */
-#define NHRP_EXT_AUTH 7 /* NHRP Authentication Extension */
-#define NHRP_EXT_VENDOR_PRIV 8 /* NHRP Vendor Private Extension */
-#define NHRP_EXT_NAT_ADDRESS 9 /* Cisco NAT Address Extension */
-#define NHRP_EXT_DEV_CAPABILITIES 9 /* RFC 2735: Device Capabilities Extension */
-#define NHRP_EXT_MOBILE_AUTH 10 /* RFC 2520: NHRP Mobile NHC Authentication Extension */
+#define NHRP_EXT_NULL 0 /* End of Extension */
+#define NHRP_EXT_RESP_ADDR 3 /* Responder Address Extension */
+#define NHRP_EXT_FWD_RECORD 4 /* NHRP Forward Transit NHS Record Extension */
+#define NHRP_EXT_REV_RECORD 5 /* NHRP Reverse Transit NHS Record Extension */
+#define NHRP_EXT_AUTH 7 /* NHRP Authentication Extension */
+#define NHRP_EXT_VENDOR_PRIV 8 /* NHRP Vendor Private Extension */
+#define NHRP_EXT_NAT_ADDRESS 9 /* Cisco NAT Address Extension */
+#define NHRP_EXT_DEV_CAPABILITIES 9 /* RFC 2735: Device Capabilities Extension */
+#define NHRP_EXT_MOBILE_AUTH 10 /* RFC 2520: NHRP Mobile NHC Authentication Extension */
/* NHRP Error Codes */
-#define NHRP_ERR_UNRECOGNIZED_EXT 0x0001
-#define NHRP_ERR_NHRP_LOOP_DETECT 0x0003
-#define NHRP_ERR_PROT_ADDR_UNREACHABLE 0x0006
-#define NHRP_ERR_PROT_ERROR 0x0007
-#define NHRP_ERR_SDU_SIZE_EXCEEDED 0x0008
-#define NHRP_ERR_INV_EXT 0x0009
-#define NHRP_ERR_INV_RESOLUTION_REPLY 0x000a
-#define NHRP_ERR_AUTH_FAILURE 0x000b
-#define NHRP_ERR_HOP_COUNT_EXCEEDED 0x000f
-#define NHRP_ERR_VPN_MISMATCH 0x0010 /* RFC 2735 */
-#define NHRP_ERR_VPN_UNSUPPORTED 0x0011 /* RFC 2735 */
+#define NHRP_ERR_UNRECOGNIZED_EXT 0x0001
+#define NHRP_ERR_NHRP_LOOP_DETECT 0x0003
+#define NHRP_ERR_PROT_ADDR_UNREACHABLE 0x0006
+#define NHRP_ERR_PROT_ERROR 0x0007
+#define NHRP_ERR_SDU_SIZE_EXCEEDED 0x0008
+#define NHRP_ERR_INV_EXT 0x0009
+#define NHRP_ERR_INV_RESOLUTION_REPLY 0x000a
+#define NHRP_ERR_AUTH_FAILURE 0x000b
+#define NHRP_ERR_HOP_COUNT_EXCEEDED 0x000f
+#define NHRP_ERR_VPN_MISMATCH 0x0010 /* RFC 2735 */
+#define NHRP_ERR_VPN_UNSUPPORTED 0x0011 /* RFC 2735 */
/* NHRP CIE codes */
-#define NHRP_CODE_SUCCESS 0x00
-#define NHRP_CODE_ADMIN_PROHIBITED 0x04
-#define NHRP_CODE_INSUFFICIENT_RESOURCES 0x05
-#define NHRP_CODE_NO_BINDING_EXISTS 0x0c
-#define NHRP_CODE_NON_UNIQUE_BINDING 0x0d
-#define NHRP_CODE_ALREADY_REGISTERED 0x0e
+#define NHRP_CODE_SUCCESS 0x00
+#define NHRP_CODE_ADMIN_PROHIBITED 0x04
+#define NHRP_CODE_INSUFFICIENT_RESOURCES 0x05
+#define NHRP_CODE_NO_BINDING_EXISTS 0x0c
+#define NHRP_CODE_NON_UNIQUE_BINDING 0x0d
+#define NHRP_CODE_ALREADY_REGISTERED 0x0e
/* NHRP Subnetwork layer address type/length */
-#define NHRP_SHTL_TYPE_MASK 0x40
-#define NHRP_SHTL_LEN_MASK 0x3F
-#define NHRP_SHTL_TYPE(val) (((val) & (NHRP_SHTL_TYPE_MASK)) >> 6)
-#define NHRP_SHTL_LEN(val) ((val) & (NHRP_SHTL_LEN_MASK))
+#define NHRP_SHTL_TYPE_MASK 0x40
+#define NHRP_SHTL_LEN_MASK 0x3F
+#define NHRP_SHTL_TYPE(val) (((val) & (NHRP_SHTL_TYPE_MASK)) >> 6)
+#define NHRP_SHTL_LEN(val) ((val) & (NHRP_SHTL_LEN_MASK))
-#define NHRP_SHTL_TYPE_NSAP 0
-#define NHRP_SHTL_TYPE_E164 1
+#define NHRP_SHTL_TYPE_NSAP 0
+#define NHRP_SHTL_TYPE_E164 1
static const value_string nhrp_shtl_type_vals[] = {
- { NHRP_SHTL_TYPE_NSAP, "NSAP format" },
- { NHRP_SHTL_TYPE_E164, "Native E.164 format" },
- { 0, NULL }
+ { NHRP_SHTL_TYPE_NSAP, "NSAP format" },
+ { NHRP_SHTL_TYPE_E164, "Native E.164 format" },
+ { 0, NULL }
};
static const value_string nhrp_op_type_vals[] = {
- { NHRP_RESOLUTION_REQ, "NHRP Resolution Request" },
- { NHRP_RESOLUTION_REPLY, "NHRP Resolution Reply" },
- { NHRP_REGISTRATION_REQ, "NHRP Registration Request" },
- { NHRP_REGISTRATION_REPLY, "NHRP Registration Reply" },
- { NHRP_PURGE_REQ, "NHRP Purge Request" },
- { NHRP_PURGE_REPLY, "NHRP Purge Reply" },
- { NHRP_ERROR_INDICATION, "NHRP Error Indication" },
- { NHRP_TRAFFIC_INDICATION, "NHRP Traffic Indication" },
- { 0, NULL }
+ { NHRP_RESOLUTION_REQ, "NHRP Resolution Request" },
+ { NHRP_RESOLUTION_REPLY, "NHRP Resolution Reply" },
+ { NHRP_REGISTRATION_REQ, "NHRP Registration Request" },
+ { NHRP_REGISTRATION_REPLY, "NHRP Registration Reply" },
+ { NHRP_PURGE_REQ, "NHRP Purge Request" },
+ { NHRP_PURGE_REPLY, "NHRP Purge Reply" },
+ { NHRP_ERROR_INDICATION, "NHRP Error Indication" },
+ { NHRP_TRAFFIC_INDICATION, "NHRP Traffic Indication" },
+ { 0, NULL }
};
static const value_string ext_type_vals[] = {
- { NHRP_EXT_NULL, "End of Extension" },
- { NHRP_EXT_RESP_ADDR, "Responder Address Extension" },
- { NHRP_EXT_FWD_RECORD, "Forward Transit NHS Record Extension" },
- { NHRP_EXT_REV_RECORD, "Reverse Transit NHS Record Extension" },
- { NHRP_EXT_AUTH, "NHRP Authentication Extension" },
- { NHRP_EXT_VENDOR_PRIV, "NHRP Vendor Private Extension" },
- { NHRP_EXT_NAT_ADDRESS, "Cisco NAT Address Extension" },
- { NHRP_EXT_DEV_CAPABILITIES,"Device Capabilities Extension" },
- { NHRP_EXT_MOBILE_AUTH, "Mobile NHC Authentication Extension" },
- { 0, NULL }
+ { NHRP_EXT_NULL, "End of Extension" },
+ { NHRP_EXT_RESP_ADDR, "Responder Address Extension" },
+ { NHRP_EXT_FWD_RECORD, "Forward Transit NHS Record Extension" },
+ { NHRP_EXT_REV_RECORD, "Reverse Transit NHS Record Extension" },
+ { NHRP_EXT_AUTH, "NHRP Authentication Extension" },
+ { NHRP_EXT_VENDOR_PRIV, "NHRP Vendor Private Extension" },
+ { NHRP_EXT_NAT_ADDRESS, "Cisco NAT Address Extension" },
+#if 0 /* Dup (which is handled in the code) */
+ { NHRP_EXT_DEV_CAPABILITIES,"Device Capabilities Extension" },
+#endif
+ { NHRP_EXT_MOBILE_AUTH, "Mobile NHC Authentication Extension" },
+ { 0, NULL }
};
static const value_string nhrp_error_code_vals[] = {
- { NHRP_ERR_UNRECOGNIZED_EXT, "Unrecognized Extension" },
- { NHRP_ERR_NHRP_LOOP_DETECT, "NHRP Loop Detected" },
- { NHRP_ERR_PROT_ADDR_UNREACHABLE, "Protocol Address Unreachable" },
- { NHRP_ERR_PROT_ERROR, "Protocol Error" },
- { NHRP_ERR_SDU_SIZE_EXCEEDED, "NHRP SDU Size Exceeded" },
- { NHRP_ERR_INV_EXT, "Invalid Extension" },
- { NHRP_ERR_INV_RESOLUTION_REPLY, "Invalid NHRP Resolution Reply Received" },
- { NHRP_ERR_AUTH_FAILURE, "Authentication Failure" },
- { NHRP_ERR_HOP_COUNT_EXCEEDED, "Hop Count Exceeded" },
- { NHRP_ERR_VPN_MISMATCH, "VPN Mismatch" },
- { NHRP_ERR_VPN_UNSUPPORTED, "VPN Unsupported" },
- { 0, NULL }
+ { NHRP_ERR_UNRECOGNIZED_EXT, "Unrecognized Extension" },
+ { NHRP_ERR_NHRP_LOOP_DETECT, "NHRP Loop Detected" },
+ { NHRP_ERR_PROT_ADDR_UNREACHABLE, "Protocol Address Unreachable" },
+ { NHRP_ERR_PROT_ERROR, "Protocol Error" },
+ { NHRP_ERR_SDU_SIZE_EXCEEDED, "NHRP SDU Size Exceeded" },
+ { NHRP_ERR_INV_EXT, "Invalid Extension" },
+ { NHRP_ERR_INV_RESOLUTION_REPLY, "Invalid NHRP Resolution Reply Received" },
+ { NHRP_ERR_AUTH_FAILURE, "Authentication Failure" },
+ { NHRP_ERR_HOP_COUNT_EXCEEDED, "Hop Count Exceeded" },
+ { NHRP_ERR_VPN_MISMATCH, "VPN Mismatch" },
+ { NHRP_ERR_VPN_UNSUPPORTED, "VPN Unsupported" },
+ { 0, NULL }
};
static const value_string nhrp_cie_code_vals[] = {
- { NHRP_CODE_SUCCESS, "Success" },
- { NHRP_CODE_ADMIN_PROHIBITED, "Administratively Prohibited" },
- { NHRP_CODE_INSUFFICIENT_RESOURCES, "Insufficient Resources" },
- { NHRP_CODE_NO_BINDING_EXISTS, "No Interworking Layer Address to NBMA Address Binding Exists" },
- { NHRP_CODE_NON_UNIQUE_BINDING, "Binding Exists But Is Not Unique" },
- { NHRP_CODE_ALREADY_REGISTERED, "Unique Internetworking Layer Address Already Registered" },
- { 0, NULL }
+ { NHRP_CODE_SUCCESS, "Success" },
+ { NHRP_CODE_ADMIN_PROHIBITED, "Administratively Prohibited" },
+ { NHRP_CODE_INSUFFICIENT_RESOURCES, "Insufficient Resources" },
+ { NHRP_CODE_NO_BINDING_EXISTS, "No Interworking Layer Address to NBMA Address Binding Exists" },
+ { NHRP_CODE_NON_UNIQUE_BINDING, "Binding Exists But Is Not Unique" },
+ { NHRP_CODE_ALREADY_REGISTERED, "Unique Internetworking Layer Address Already Registered" },
+ { 0, NULL }
};
static dissector_table_t osinl_subdissector_table;
@@ -256,952 +264,1156 @@ static dissector_table_t ethertype_subdissector_table;
static dissector_handle_t data_handle;
typedef struct _e_nhrp {
- guint16 ar_afn;
- guint16 ar_pro_type;
- guint32 ar_pro_type_oui;
- guint16 ar_pro_type_pid;
- guint8 ar_hopCnt;
- guint16 ar_pktsz;
- guint16 ar_chksum;
- guint16 ar_extoff;
- guint8 ar_op_version;
- guint8 ar_op_type;
- guint8 ar_shtl;
- guint8 ar_sstl;
+ guint16 ar_afn;
+ guint16 ar_pro_type;
+ guint32 ar_pro_type_oui;
+ guint16 ar_pro_type_pid;
+ guint8 ar_hopCnt;
+ guint16 ar_pktsz;
+ guint16 ar_chksum;
+ guint16 ar_extoff;
+ guint8 ar_op_version;
+ guint8 ar_op_type;
+ guint8 ar_shtl;
+ guint8 ar_sstl;
} e_nhrp_hdr;
static guint16 nhrp_checksum(const guint8 *ptr, int len)
{
- vec_t cksum_vec[1];
+ vec_t cksum_vec[1];
- cksum_vec[0].ptr = ptr;
- cksum_vec[0].len = len;
- return in_cksum(&cksum_vec[0], 1);
+ cksum_vec[0].ptr = ptr;
+ cksum_vec[0].len = len;
+ return in_cksum(&cksum_vec[0], 1);
}
-void dissect_nhrp_hdr(tvbuff_t *tvb,
- packet_info *pinfo,
- proto_tree *tree,
- gint *pOffset,
- gint *pMandLen,
- gint *pExtLen,
- oui_info_t **pOuiInfo,
- e_nhrp_hdr *hdr)
+void dissect_nhrp_hdr(tvbuff_t *tvb,
+ packet_info *pinfo,
+ proto_tree *tree,
+ gint *pOffset,
+ gint *pMandLen,
+ gint *pExtLen,
+ oui_info_t **pOuiInfo,
+ e_nhrp_hdr *hdr)
{
- gint offset = *pOffset;
- const gchar *pro_type_str;
- guint total_len = tvb_reported_length(tvb);
- guint16 ipcsum, rx_chksum;
-
- proto_item *nhrp_tree_item = NULL;
- proto_tree *nhrp_tree = NULL;
- proto_item *shtl_tree_item = NULL;
- proto_tree *shtl_tree = NULL;
- proto_item *sstl_tree_item = NULL;
- proto_tree *sstl_tree = NULL;
- proto_item *ti;
-
- nhrp_tree_item = proto_tree_add_text(tree, tvb, offset, 20, "NHRP Fixed Header");
- nhrp_tree = proto_item_add_subtree(nhrp_tree_item, ett_nhrp_hdr);
-
- hdr->ar_pktsz = tvb_get_ntohs(tvb, 10);
- if (total_len > hdr->ar_pktsz) {
- total_len = hdr->ar_pktsz;
- }
-
- hdr->ar_afn = tvb_get_ntohs(tvb, offset);
- proto_tree_add_item(nhrp_tree, hf_nhrp_hdr_afn, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
-
- hdr->ar_pro_type = tvb_get_ntohs(tvb, offset);
- if (hdr->ar_pro_type <= 0xFF) {
- /* It's an NLPID */
- pro_type_str = val_to_str(hdr->ar_pro_type, nlpid_vals,
- "Unknown NLPID");
- } else if (hdr->ar_pro_type <= 0x3FF) {
- /* Reserved for future use by the IETF */
- pro_type_str = "Reserved for future use by the IETF";
- } else if (hdr->ar_pro_type <= 0x04FF) {
- /* Allocated for use by the ATM Forum */
- pro_type_str = "Allocated for use by the ATM Forum";
- } else if (hdr->ar_pro_type <= 0x05FF) {
- /* Experimental/Local use */
- pro_type_str = "Experimental/Local use";
- } else {
- pro_type_str = val_to_str(hdr->ar_pro_type, etype_vals,
- "Unknown Ethertype");
- }
- proto_tree_add_uint_format(nhrp_tree, hf_nhrp_hdr_pro_type, tvb, offset, 2,
- hdr->ar_pro_type, "Protocol Type (short form): %s (0x%04x)",
- pro_type_str, hdr->ar_pro_type);
- offset += 2;
-
- if (hdr->ar_pro_type == NLPID_SNAP) {
- /*
- * The long form protocol type is a SNAP OUI and PID.
- */
- hdr->ar_pro_type_oui = tvb_get_ntoh24(tvb, offset);
- proto_tree_add_uint(nhrp_tree, hf_nhrp_hdr_pro_snap_oui,
- tvb, offset, 3, hdr->ar_pro_type_oui);
- offset += 3;
-
- hdr->ar_pro_type_pid = tvb_get_ntohs(tvb, offset);
- *pOuiInfo = get_snap_oui_info(hdr->ar_pro_type_oui);
- if (*pOuiInfo != NULL) {
- proto_tree_add_uint(nhrp_tree,
- *(*pOuiInfo)->field_info->p_id,
- tvb, offset, 2, hdr->ar_pro_type_pid);
- } else {
- proto_tree_add_uint(nhrp_tree, hf_nhrp_hdr_pro_snap_pid,
- tvb, offset, 2, hdr->ar_pro_type_pid);
- }
- } else {
- /*
- * XXX - we should check that this is zero, as RFC 2332
- * says it should be zero.
- */
- proto_tree_add_text(nhrp_tree, tvb, offset, 5,
- "Protocol Type (long form): %s",
- tvb_bytes_to_str(tvb, offset, 5));
- offset += 5;
- }
-
- proto_tree_add_item(nhrp_tree, hf_nhrp_hdr_hopcnt, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset += 1;
-
- proto_tree_add_item(nhrp_tree, hf_nhrp_hdr_pktsz, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
-
- rx_chksum = tvb_get_ntohs(tvb, offset);
- if (tvb_bytes_exist(tvb, 0, total_len)) {
- ipcsum = nhrp_checksum(tvb_get_ptr(tvb, 0, total_len),
- total_len);
- if (ipcsum == 0) {
- proto_tree_add_uint_format(nhrp_tree, hf_nhrp_hdr_chksum, tvb, offset, 2, rx_chksum,
- "NHRP Packet checksum: 0x%04x [correct]", rx_chksum);
- } else {
- proto_tree_add_uint_format(nhrp_tree, hf_nhrp_hdr_chksum, tvb, offset, 2, rx_chksum,
- "NHRP Packet checksum: 0x%04x [incorrect, should be 0x%04x]", rx_chksum,
- in_cksum_shouldbe(rx_chksum, ipcsum));
- }
- } else {
- proto_tree_add_uint_format(nhrp_tree, hf_nhrp_hdr_chksum, tvb, offset, 2, rx_chksum,
- "NHRP Packet checksum: 0x%04x [not all data available]", rx_chksum);
- }
- offset += 2;
-
- hdr->ar_extoff = tvb_get_ntohs(tvb, offset);
- ti = proto_tree_add_item(nhrp_tree, hf_nhrp_hdr_extoff, tvb, offset, 2, ENC_BIG_ENDIAN);
- if (hdr->ar_extoff != 0 && hdr->ar_extoff < 20) {
- expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR,
- "Extension offset is less than the fixed header length");
- }
- offset += 2;
-
- hdr->ar_op_version = tvb_get_guint8(tvb, offset);
- proto_tree_add_uint_format(nhrp_tree, hf_nhrp_hdr_version, tvb, offset, 1,
- hdr->ar_op_version, "Version : %u (%s)", hdr->ar_op_version,
- (hdr->ar_op_version == 1) ? "NHRP - rfc2332" : "Unknown");
- offset += 1;
- proto_tree_add_item(nhrp_tree, hf_nhrp_hdr_op_type, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset += 1;
-
- hdr->ar_shtl = tvb_get_guint8(tvb, offset);
- shtl_tree_item = proto_tree_add_uint_format(nhrp_tree, hf_nhrp_hdr_shtl,
- tvb, offset, 1, hdr->ar_shtl, "Source Address Type/Len: %s/%u",
- val_to_str(NHRP_SHTL_TYPE(hdr->ar_shtl), nhrp_shtl_type_vals, "Unknown Type"),
- NHRP_SHTL_LEN(hdr->ar_shtl));
- shtl_tree = proto_item_add_subtree(shtl_tree_item, ett_nhrp_hdr_shtl);
- proto_tree_add_item(shtl_tree, hf_nhrp_hdr_shtl_type, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(shtl_tree, hf_nhrp_hdr_shtl_len, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset += 1;
-
- hdr->ar_sstl = tvb_get_guint8(tvb, offset);
- sstl_tree_item = proto_tree_add_uint_format(nhrp_tree, hf_nhrp_hdr_sstl,
- tvb, offset, 1, hdr->ar_sstl, "Source SubAddress Type/Len: %s/%u",
- val_to_str(NHRP_SHTL_TYPE(hdr->ar_sstl), nhrp_shtl_type_vals, "Unknown Type"),
- NHRP_SHTL_LEN(hdr->ar_sstl));
- sstl_tree = proto_item_add_subtree(sstl_tree_item, ett_nhrp_hdr_sstl);
- proto_tree_add_item(sstl_tree, hf_nhrp_hdr_sstl_type, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(sstl_tree, hf_nhrp_hdr_sstl_len, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset += 1;
-
- *pOffset = offset;
- if (hdr->ar_extoff != 0) {
- if (hdr->ar_extoff >= 20) {
- *pMandLen = hdr->ar_extoff - 20;
- *pExtLen = total_len - hdr->ar_extoff;
- } else {
- /* Error */
- *pMandLen = 0;
- *pExtLen = 0;
- }
- }
- else {
- if (total_len >= 20)
- *pMandLen = total_len - 20;
- else {
- /* "Can't happen" - we would have thrown an exception */
- *pMandLen = 0;
- }
- *pExtLen = 0;
- }
+ gint offset = *pOffset;
+ const gchar *pro_type_str;
+ guint total_len = tvb_reported_length(tvb);
+ guint16 ipcsum, rx_chksum;
+
+ proto_item *nhrp_tree_item;
+ proto_tree *nhrp_tree;
+ proto_item *shtl_tree_item;
+ proto_tree *shtl_tree;
+ proto_item *sstl_tree_item;
+ proto_tree *sstl_tree;
+ proto_item *ti;
+
+ nhrp_tree_item = proto_tree_add_text(tree, tvb, offset, 20, "NHRP Fixed Header");
+ nhrp_tree = proto_item_add_subtree(nhrp_tree_item, ett_nhrp_hdr);
+
+ hdr->ar_pktsz = tvb_get_ntohs(tvb, 10);
+ if (total_len > hdr->ar_pktsz) {
+ total_len = hdr->ar_pktsz;
+ }
+
+ hdr->ar_afn = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_item(nhrp_tree, hf_nhrp_hdr_afn, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ hdr->ar_pro_type = tvb_get_ntohs(tvb, offset);
+ if (hdr->ar_pro_type <= 0xFF) {
+ /* It's an NLPID */
+ pro_type_str = val_to_str_const(hdr->ar_pro_type, nlpid_vals,
+ "Unknown NLPID");
+ } else if (hdr->ar_pro_type <= 0x3FF) {
+ /* Reserved for future use by the IETF */
+ pro_type_str = "Reserved for future use by the IETF";
+ } else if (hdr->ar_pro_type <= 0x04FF) {
+ /* Allocated for use by the ATM Forum */
+ pro_type_str = "Allocated for use by the ATM Forum";
+ } else if (hdr->ar_pro_type <= 0x05FF) {
+ /* Experimental/Local use */
+ pro_type_str = "Experimental/Local use";
+ } else {
+ pro_type_str = val_to_str_const(hdr->ar_pro_type, etype_vals,
+ "Unknown Ethertype");
+ }
+ proto_tree_add_uint_format(nhrp_tree, hf_nhrp_hdr_pro_type, tvb, offset, 2,
+ hdr->ar_pro_type, "Protocol Type (short form): %s (0x%04x)",
+ pro_type_str, hdr->ar_pro_type);
+ offset += 2;
+
+ if (hdr->ar_pro_type == NLPID_SNAP) {
+ /*
+ * The long form protocol type is a SNAP OUI and PID.
+ */
+ hdr->ar_pro_type_oui = tvb_get_ntoh24(tvb, offset);
+ proto_tree_add_uint(nhrp_tree, hf_nhrp_hdr_pro_snap_oui,
+ tvb, offset, 3, hdr->ar_pro_type_oui);
+ offset += 3;
+
+ hdr->ar_pro_type_pid = tvb_get_ntohs(tvb, offset);
+ *pOuiInfo = get_snap_oui_info(hdr->ar_pro_type_oui);
+ if (*pOuiInfo != NULL) {
+ proto_tree_add_uint(nhrp_tree,
+ *(*pOuiInfo)->field_info->p_id,
+ tvb, offset, 2, hdr->ar_pro_type_pid);
+ } else {
+ proto_tree_add_uint(nhrp_tree, hf_nhrp_hdr_pro_snap_pid,
+ tvb, offset, 2, hdr->ar_pro_type_pid);
+ }
+ } else {
+ /*
+ * XXX - we should check that this is zero, as RFC 2332
+ * says it should be zero.
+ */
+ proto_tree_add_text(nhrp_tree, tvb, offset, 5,
+ "Protocol Type (long form): %s",
+ tvb_bytes_to_str(tvb, offset, 5));
+ offset += 5;
+ }
+
+ proto_tree_add_item(nhrp_tree, hf_nhrp_hdr_hopcnt, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+
+ proto_tree_add_item(nhrp_tree, hf_nhrp_hdr_pktsz, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ rx_chksum = tvb_get_ntohs(tvb, offset);
+ if (tvb_bytes_exist(tvb, 0, total_len)) {
+ ipcsum = nhrp_checksum(tvb_get_ptr(tvb, 0, total_len),
+ total_len);
+ if (ipcsum == 0) {
+ proto_tree_add_uint_format(nhrp_tree, hf_nhrp_hdr_chksum, tvb, offset, 2, rx_chksum,
+ "NHRP Packet checksum: 0x%04x [correct]", rx_chksum);
+ } else {
+ proto_tree_add_uint_format(nhrp_tree, hf_nhrp_hdr_chksum, tvb, offset, 2, rx_chksum,
+ "NHRP Packet checksum: 0x%04x [incorrect, should be 0x%04x]", rx_chksum,
+ in_cksum_shouldbe(rx_chksum, ipcsum));
+ }
+ } else {
+ proto_tree_add_uint_format(nhrp_tree, hf_nhrp_hdr_chksum, tvb, offset, 2, rx_chksum,
+ "NHRP Packet checksum: 0x%04x [not all data available]", rx_chksum);
+ }
+ offset += 2;
+
+ hdr->ar_extoff = tvb_get_ntohs(tvb, offset);
+ ti = proto_tree_add_item(nhrp_tree, hf_nhrp_hdr_extoff, tvb, offset, 2, ENC_BIG_ENDIAN);
+ if (hdr->ar_extoff != 0 && hdr->ar_extoff < 20) {
+ expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR,
+ "Extension offset is less than the fixed header length");
+ }
+ offset += 2;
+
+ hdr->ar_op_version = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint_format(nhrp_tree, hf_nhrp_hdr_version, tvb, offset, 1,
+ hdr->ar_op_version, "Version : %u (%s)", hdr->ar_op_version,
+ (hdr->ar_op_version == 1) ? "NHRP - rfc2332" : "Unknown");
+ offset += 1;
+ proto_tree_add_item(nhrp_tree, hf_nhrp_hdr_op_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+
+ hdr->ar_shtl = tvb_get_guint8(tvb, offset);
+ shtl_tree_item = proto_tree_add_uint_format(nhrp_tree, hf_nhrp_hdr_shtl,
+ tvb, offset, 1, hdr->ar_shtl, "Source Address Type/Len: %s/%u",
+ val_to_str_const(NHRP_SHTL_TYPE(hdr->ar_shtl), nhrp_shtl_type_vals, "Unknown Type"),
+ NHRP_SHTL_LEN(hdr->ar_shtl));
+ shtl_tree = proto_item_add_subtree(shtl_tree_item, ett_nhrp_hdr_shtl);
+ proto_tree_add_item(shtl_tree, hf_nhrp_hdr_shtl_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(shtl_tree, hf_nhrp_hdr_shtl_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+
+ hdr->ar_sstl = tvb_get_guint8(tvb, offset);
+ sstl_tree_item = proto_tree_add_uint_format(nhrp_tree, hf_nhrp_hdr_sstl,
+ tvb, offset, 1, hdr->ar_sstl, "Source SubAddress Type/Len: %s/%u",
+ val_to_str_const(NHRP_SHTL_TYPE(hdr->ar_sstl), nhrp_shtl_type_vals, "Unknown Type"),
+ NHRP_SHTL_LEN(hdr->ar_sstl));
+ sstl_tree = proto_item_add_subtree(sstl_tree_item, ett_nhrp_hdr_sstl);
+ proto_tree_add_item(sstl_tree, hf_nhrp_hdr_sstl_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(sstl_tree, hf_nhrp_hdr_sstl_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+
+ *pOffset = offset;
+ if (hdr->ar_extoff != 0) {
+ if (hdr->ar_extoff >= 20) {
+ *pMandLen = hdr->ar_extoff - 20;
+ *pExtLen = total_len - hdr->ar_extoff;
+ } else {
+ /* Error */
+ *pMandLen = 0;
+ *pExtLen = 0;
+ }
+ }
+ else {
+ if (total_len >= 20)
+ *pMandLen = total_len - 20;
+ else {
+ /* "Can't happen" - we would have thrown an exception */
+ *pMandLen = 0;
+ }
+ *pExtLen = 0;
+ }
}
-void dissect_cie_list(tvbuff_t *tvb,
- packet_info *pinfo,
- proto_tree *tree,
- gint offset,
- gint cieEnd,
- e_nhrp_hdr *hdr,
- gint isReq,
- gboolean codeinfo)
+void dissect_cie_list(tvbuff_t *tvb,
+ packet_info *pinfo,
+ proto_tree *tree,
+ gint offset,
+ gint cieEnd,
+ e_nhrp_hdr *hdr,
+ gint isReq,
+ gboolean codeinfo)
{
- proto_item *cli_addr_tree_item = NULL;
- proto_tree *cli_addr_tree = NULL;
- proto_item *cli_saddr_tree_item = NULL;
- proto_tree *cli_saddr_tree = NULL;
- guint8 val;
-
- while ((offset + 12) <= cieEnd) {
- guint cli_addr_len = tvb_get_guint8(tvb, offset + 8);
- guint cli_saddr_len = tvb_get_guint8(tvb, offset + 9);
- guint cli_prot_len = tvb_get_guint8(tvb, offset + 10);
- guint cie_len = 12 + cli_addr_len + cli_saddr_len + cli_prot_len;
- proto_item *cie_tree_item = proto_tree_add_text(tree, tvb, offset, cie_len, "Client Information Entry");
- proto_tree *cie_tree = proto_item_add_subtree(cie_tree_item, ett_nhrp_cie);
-
- if (isReq) {
- proto_tree_add_item(cie_tree, hf_nhrp_code, tvb, offset, 1, ENC_BIG_ENDIAN);
- }
- else {
- guint8 code = tvb_get_guint8(tvb, offset);
- if ( codeinfo ) {
- col_append_fstr(pinfo->cinfo, COL_INFO, ", Code=%s",
- val_to_str(code, nhrp_cie_code_vals, "Unknown (%u)"));
- }
- proto_tree_add_text(cie_tree, tvb, offset, 1, "Code: %s",
- val_to_str(code, nhrp_cie_code_vals, "Unknown (%u)"));
- }
- offset += 1;
-
- proto_tree_add_item(cie_tree, hf_nhrp_prefix_len, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset += 1;
-
- proto_tree_add_item(cie_tree, hf_nhrp_unused, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
-
- proto_tree_add_item(cie_tree, hf_nhrp_mtu, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
-
- proto_tree_add_item(cie_tree, hf_nhrp_holding_time, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
-
- val = tvb_get_guint8(tvb, offset);
- cli_addr_tree_item = proto_tree_add_uint_format(cie_tree,
- hf_nhrp_cli_addr_tl, tvb, offset, 1, val,
- "Client Address Type/Len: %s/%u",
- val_to_str(NHRP_SHTL_TYPE(val), nhrp_shtl_type_vals, "Unknown Type"),
- NHRP_SHTL_LEN(val));
- cli_addr_tree = proto_item_add_subtree(cli_addr_tree_item, ett_nhrp_cie_cli_addr_tl);
- proto_tree_add_item(cli_addr_tree, hf_nhrp_cli_addr_tl_type, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(cli_addr_tree, hf_nhrp_cli_addr_tl_len, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset += 1;
-
- val = tvb_get_guint8(tvb, offset);
- cli_saddr_tree_item = proto_tree_add_uint_format(cie_tree,
- hf_nhrp_cli_saddr_tl, tvb, offset, 1, val,
- "Client Sub Address Type/Len: %s/%u",
- val_to_str(NHRP_SHTL_TYPE(val), nhrp_shtl_type_vals, "Unknown Type"),
- NHRP_SHTL_LEN(val));
- cli_saddr_tree = proto_item_add_subtree(cli_saddr_tree_item, ett_nhrp_cie_cli_saddr_tl);
- proto_tree_add_item(cli_saddr_tree, hf_nhrp_cli_saddr_tl_type, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(cli_saddr_tree, hf_nhrp_cli_saddr_tl_len, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset += 1;
-
- proto_tree_add_item(cie_tree, hf_nhrp_cli_prot_len, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset += 1;
-
- proto_tree_add_item(cie_tree, hf_nhrp_pref, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset += 1;
-
- if (cli_addr_len) {
- switch (hdr->ar_afn) {
-
- case AFNUM_INET:
- if (cli_addr_len == 4)
- proto_tree_add_item(cie_tree, hf_nhrp_client_nbma_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
- else {
- proto_tree_add_text(cie_tree, tvb, offset, cli_addr_len,
- "Client NBMA Address: %s",
- tvb_bytes_to_str(tvb, offset, cli_addr_len));
- }
- break;
-
- default:
- proto_tree_add_text(cie_tree, tvb, offset, cli_addr_len,
- "Client NBMA Address: %s",
- tvb_bytes_to_str(tvb, offset, cli_addr_len));
- break;
- }
- offset += cli_addr_len;
- }
-
- if (cli_saddr_len) {
- proto_tree_add_text(cie_tree, tvb, offset, cli_saddr_len,
- "Client NBMA Sub Address: %s",
- tvb_bytes_to_str(tvb, offset, cli_saddr_len));
- }
-
- if (cli_prot_len) {
- if (cli_prot_len == 4)
- proto_tree_add_ipv4(cie_tree, hf_nhrp_client_prot_addr, tvb, offset, 4, FALSE);
- else {
- proto_tree_add_text(cie_tree, tvb, offset, cli_prot_len,
- "Client Protocol Address: %s",
- tvb_bytes_to_str(tvb, offset, cli_prot_len));
- }
- offset += cli_prot_len;
- }
- }
+ proto_item *cli_addr_tree_item;
+ proto_tree *cli_addr_tree;
+ proto_item *cli_saddr_tree_item;
+ proto_tree *cli_saddr_tree;
+ guint8 val;
+
+ while ((offset + 12) <= cieEnd) {
+ guint cli_addr_len = tvb_get_guint8(tvb, offset + 8);
+ guint cli_saddr_len = tvb_get_guint8(tvb, offset + 9);
+ guint cli_prot_len = tvb_get_guint8(tvb, offset + 10);
+ guint cie_len = 12 + cli_addr_len + cli_saddr_len + cli_prot_len;
+ proto_item *cie_tree_item = proto_tree_add_text(tree, tvb, offset, cie_len, "Client Information Entry");
+ proto_tree *cie_tree = proto_item_add_subtree(cie_tree_item, ett_nhrp_cie);
+
+ if (isReq) {
+ proto_tree_add_item(cie_tree, hf_nhrp_code, tvb, offset, 1, ENC_BIG_ENDIAN);
+ }
+ else {
+ guint8 code = tvb_get_guint8(tvb, offset);
+ if ( codeinfo ) {
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", Code=%s",
+ val_to_str(code, nhrp_cie_code_vals, "Unknown (%u)"));
+ }
+ proto_tree_add_text(cie_tree, tvb, offset, 1, "Code: %s",
+ val_to_str(code, nhrp_cie_code_vals, "Unknown (%u)"));
+ }
+ offset += 1;
+
+ proto_tree_add_item(cie_tree, hf_nhrp_prefix_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+
+ proto_tree_add_item(cie_tree, hf_nhrp_unused, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(cie_tree, hf_nhrp_mtu, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(cie_tree, hf_nhrp_holding_time, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ val = tvb_get_guint8(tvb, offset);
+ cli_addr_tree_item = proto_tree_add_uint_format(cie_tree,
+ hf_nhrp_cli_addr_tl, tvb, offset, 1, val,
+ "Client Address Type/Len: %s/%u",
+ val_to_str_const(NHRP_SHTL_TYPE(val), nhrp_shtl_type_vals, "Unknown Type"),
+ NHRP_SHTL_LEN(val));
+ cli_addr_tree = proto_item_add_subtree(cli_addr_tree_item, ett_nhrp_cie_cli_addr_tl);
+ proto_tree_add_item(cli_addr_tree, hf_nhrp_cli_addr_tl_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(cli_addr_tree, hf_nhrp_cli_addr_tl_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+
+ val = tvb_get_guint8(tvb, offset);
+ cli_saddr_tree_item = proto_tree_add_uint_format(cie_tree,
+ hf_nhrp_cli_saddr_tl, tvb, offset, 1, val,
+ "Client Sub Address Type/Len: %s/%u",
+ val_to_str_const(NHRP_SHTL_TYPE(val), nhrp_shtl_type_vals, "Unknown Type"),
+ NHRP_SHTL_LEN(val));
+ cli_saddr_tree = proto_item_add_subtree(cli_saddr_tree_item, ett_nhrp_cie_cli_saddr_tl);
+ proto_tree_add_item(cli_saddr_tree, hf_nhrp_cli_saddr_tl_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(cli_saddr_tree, hf_nhrp_cli_saddr_tl_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+
+ proto_tree_add_item(cie_tree, hf_nhrp_cli_prot_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+
+ proto_tree_add_item(cie_tree, hf_nhrp_pref, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+
+ if (cli_addr_len) {
+ switch (hdr->ar_afn) {
+
+ case AFNUM_INET:
+ if (cli_addr_len == 4)
+ proto_tree_add_item(cie_tree, hf_nhrp_client_nbma_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
+ else {
+ proto_tree_add_text(cie_tree, tvb, offset, cli_addr_len,
+ "Client NBMA Address: %s",
+ tvb_bytes_to_str(tvb, offset, cli_addr_len));
+ }
+ break;
+
+ default:
+ proto_tree_add_text(cie_tree, tvb, offset, cli_addr_len,
+ "Client NBMA Address: %s",
+ tvb_bytes_to_str(tvb, offset, cli_addr_len));
+ break;
+ }
+ offset += cli_addr_len;
+ }
+
+ if (cli_saddr_len) {
+ proto_tree_add_text(cie_tree, tvb, offset, cli_saddr_len,
+ "Client NBMA Sub Address: %s",
+ tvb_bytes_to_str(tvb, offset, cli_saddr_len));
+ }
+
+ if (cli_prot_len) {
+ if (cli_prot_len == 4)
+ proto_tree_add_item(cie_tree, hf_nhrp_client_prot_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
+ else {
+ proto_tree_add_text(cie_tree, tvb, offset, cli_prot_len,
+ "Client Protocol Address: %s",
+ tvb_bytes_to_str(tvb, offset, cli_prot_len));
+ }
+ offset += cli_prot_len;
+ }
+ }
}
-void dissect_nhrp_mand(tvbuff_t *tvb,
- packet_info *pinfo,
- proto_tree *tree,
- gint *pOffset,
- gint mandLen,
- oui_info_t *oui_info,
- e_nhrp_hdr *hdr,
- guint *srcLen,
- gboolean codeinfo)
+void dissect_nhrp_mand(tvbuff_t *tvb,
+ packet_info *pinfo,
+ proto_tree *tree,
+ gint *pOffset,
+ gint mandLen,
+ oui_info_t *oui_info,
+ e_nhrp_hdr *hdr,
+ guint *srcLen,
+ gboolean codeinfo)
{
- gint offset = *pOffset;
- gint mandEnd = offset + mandLen;
- guint8 ssl, shl;
- guint16 flags;
- guint dstLen;
- gboolean isReq = 0;
- gboolean isErr = 0;
- gboolean isInd = 0;
-
- proto_item *nhrp_tree_item = NULL;
- proto_item *flag_item = NULL;
- proto_tree *nhrp_tree = NULL;
- proto_tree *flag_tree = NULL;
-
- tvb_ensure_bytes_exist(tvb, offset, mandLen);
-
- switch (hdr->ar_op_type)
- {
- case NHRP_RESOLUTION_REPLY:
- case NHRP_REGISTRATION_REPLY:
- case NHRP_PURGE_REPLY:
- break;
- case NHRP_RESOLUTION_REQ:
- case NHRP_REGISTRATION_REQ:
- case NHRP_PURGE_REQ:
- isReq = 1;
- break;
- case NHRP_ERROR_INDICATION: /* This needs special treatment */
- isErr = 1;
- isInd = 1;
- break;
- case NHRP_TRAFFIC_INDICATION:
- isInd = 1;
- break;
- }
- nhrp_tree_item = proto_tree_add_text(tree, tvb, offset, mandLen, "NHRP Mandatory Part");
- nhrp_tree = proto_item_add_subtree(nhrp_tree_item, ett_nhrp_mand);
-
- *srcLen = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(nhrp_tree, hf_nhrp_src_proto_len, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset += 1;
-
- dstLen = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(nhrp_tree, hf_nhrp_dst_proto_len, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset += 1;
-
- if (!isInd) {
- flags = tvb_get_ntohs(tvb, offset);
- flag_item = proto_tree_add_uint(nhrp_tree, hf_nhrp_flags, tvb, offset, 2, flags);
- flag_tree = proto_item_add_subtree(flag_item, ett_nhrp_mand_flag);
-
- switch (hdr->ar_op_type)
- {
- case NHRP_RESOLUTION_REQ:
- case NHRP_RESOLUTION_REPLY:
- proto_tree_add_boolean(flag_tree, hf_nhrp_flag_Q, tvb, offset, 2, flags);
- proto_tree_add_boolean(flag_tree, hf_nhrp_flag_A, tvb, offset, 2, flags);
- proto_tree_add_boolean(flag_tree, hf_nhrp_flag_D, tvb, offset, 2, flags);
- proto_tree_add_boolean(flag_tree, hf_nhrp_flag_U1, tvb, offset, 2, flags);
- proto_tree_add_boolean(flag_tree, hf_nhrp_flag_S, tvb, offset, 2, flags);
- break;
- case NHRP_REGISTRATION_REQ:
- case NHRP_REGISTRATION_REPLY:
- proto_tree_add_boolean(flag_tree, hf_nhrp_flag_U2, tvb, offset, 2, flags);
- break;
-
- case NHRP_PURGE_REQ:
- case NHRP_PURGE_REPLY:
- proto_tree_add_boolean(flag_tree, hf_nhrp_flag_N, tvb, offset, 2, flags);
- break;
- }
- proto_tree_add_boolean(flag_tree, hf_nhrp_flag_NAT, tvb, offset, 2, flags);
-
- offset += 2;
-
- col_append_fstr(pinfo->cinfo, COL_INFO, ", ID=%u", tvb_get_ntohl(tvb, offset));
- proto_tree_add_item(nhrp_tree, hf_nhrp_request_id, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
- }
- else if (isErr) {
- offset += 2;
-
- col_append_fstr(pinfo->cinfo, COL_INFO, ", %s",
- val_to_str(tvb_get_ntohs(tvb, offset), nhrp_error_code_vals, "Unknown Error (%u)"));
- proto_tree_add_item(nhrp_tree, hf_nhrp_error_code, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
-
- proto_tree_add_item(nhrp_tree, hf_nhrp_error_offset, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
- }
- else {
- offset += 6;
- }
-
- shl = NHRP_SHTL_LEN(hdr->ar_shtl);
- if (shl) {
- switch (hdr->ar_afn) {
-
- case AFNUM_INET:
- if (shl == 4)
- proto_tree_add_item(nhrp_tree, hf_nhrp_src_nbma_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
- else {
- proto_tree_add_text(nhrp_tree, tvb, offset, shl,
- "Source NBMA Address: %s",
- tvb_bytes_to_str(tvb, offset, shl));
- }
- break;
-
- default:
- proto_tree_add_text(nhrp_tree, tvb, offset, shl,
- "Source NBMA Address: %s",
- tvb_bytes_to_str(tvb, offset, shl));
- break;
- }
- offset += shl;
- }
-
- ssl = NHRP_SHTL_LEN(hdr->ar_sstl);
- if (ssl) {
- proto_tree_add_text(nhrp_tree, tvb, offset, ssl,
- "Source NBMA Sub Address: %s",
- tvb_bytes_to_str(tvb, offset, ssl));
- offset += ssl;
- }
-
- if (*srcLen == 4) {
- proto_tree_add_item(nhrp_tree, hf_nhrp_src_prot_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
- }
- else if (*srcLen) {
- proto_tree_add_text(nhrp_tree, tvb, offset, *srcLen,
- "Source Protocol Address: %s",
- tvb_bytes_to_str(tvb, offset, *srcLen));
- offset += *srcLen;
- }
-
- if (dstLen == 4) {
- proto_tree_add_item(nhrp_tree, hf_nhrp_dst_prot_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
- }
- else if (dstLen) {
- proto_tree_add_text(nhrp_tree, tvb, offset, dstLen,
- "Destination Protocol Address: %s",
- tvb_bytes_to_str(tvb, offset, dstLen));
- offset += dstLen;
- }
-
- if (isInd) {
- gboolean save_in_error_pkt;
- gint pkt_len = mandEnd - offset;
- proto_item *ind_tree_item = proto_tree_add_text(tree, tvb, offset, pkt_len, "Packet Causing Indication");
- proto_tree *ind_tree = proto_item_add_subtree(ind_tree_item, ett_nhrp_indication);
- gboolean dissected;
- tvbuff_t *sub_tvb;
-
- save_in_error_pkt = pinfo->flags.in_error_pkt;
- pinfo->flags.in_error_pkt = TRUE;
- sub_tvb = tvb_new_subset_remaining(tvb, offset);
- if (isErr) {
- _dissect_nhrp(sub_tvb, pinfo, ind_tree, TRUE, FALSE);
- }
- else {
- if (hdr->ar_pro_type <= 0xFF) {
- /* It's an NLPID */
- if (hdr->ar_pro_type == NLPID_SNAP) {
- /*
- * Dissect based on the SNAP OUI
- * and PID.
- */
- if (hdr->ar_pro_type_oui == 0x000000) {
- /*
- * "Should not happen", as
- * the protocol type should
- * be the Ethertype, but....
- */
- dissected = dissector_try_uint(
- ethertype_subdissector_table,
- hdr->ar_pro_type_pid,
- sub_tvb, pinfo, ind_tree);
- } else {
- /*
- * If we have a dissector
- * table, use it, otherwise
- * just dissect as data.
- */
- if (oui_info != NULL) {
- dissected = dissector_try_uint(
- oui_info->table,
- hdr->ar_pro_type_pid,
- sub_tvb, pinfo,
- ind_tree);
- } else
- dissected = FALSE;
- }
- } else {
- /*
- * Dissect based on the NLPID.
- */
- dissected = dissector_try_uint(
- osinl_subdissector_table,
- hdr->ar_pro_type, sub_tvb, pinfo,
- ind_tree) ||
- dissector_try_uint(
- osinl_excl_subdissector_table,
- hdr->ar_pro_type, sub_tvb, pinfo,
- ind_tree);
- }
- } else if (hdr->ar_pro_type <= 0x3FF) {
- /* Reserved for future use by the IETF */
- dissected = FALSE;
- } else if (hdr->ar_pro_type <= 0x04FF) {
- /* Allocated for use by the ATM Forum */
- dissected = FALSE;
- } else if (hdr->ar_pro_type <= 0x05FF) {
- /* Experimental/Local use */
- dissected = FALSE;
- } else {
- dissected = dissector_try_uint(
- ethertype_subdissector_table,
- hdr->ar_pro_type, sub_tvb, pinfo, ind_tree);
- }
- if (!dissected) {
- call_dissector(data_handle, sub_tvb, pinfo,
- ind_tree);
- }
- }
- pinfo->flags.in_error_pkt = save_in_error_pkt;
- offset = mandEnd;
- }
-
- /* According to RFC 2332, section 5.2.7, there shouldn't be any extensions
- * in the Error Indication packet. */
- if (isErr && tvb_reported_length_remaining(tvb, offset)) {
- expert_add_info_format(pinfo, tree, PI_MALFORMED, PI_ERROR,
- "Extensions not allowed per RFC2332 section 5.2.7");
- }
-
- dissect_cie_list(tvb, pinfo, nhrp_tree, offset, mandEnd, hdr, isReq, codeinfo);
-
- *pOffset = mandEnd;
+ gint offset = *pOffset;
+ gint mandEnd = offset + mandLen;
+ guint8 ssl, shl;
+ guint16 flags;
+ guint dstLen;
+ gboolean isReq = FALSE;
+ gboolean isErr = FALSE;
+ gboolean isInd = FALSE;
+
+ proto_item *nhrp_tree_item;
+ proto_tree *nhrp_tree;
+
+ tvb_ensure_bytes_exist(tvb, offset, mandLen);
+
+ switch (hdr->ar_op_type)
+ {
+ case NHRP_RESOLUTION_REPLY:
+ case NHRP_REGISTRATION_REPLY:
+ case NHRP_PURGE_REPLY:
+ break;
+ case NHRP_RESOLUTION_REQ:
+ case NHRP_REGISTRATION_REQ:
+ case NHRP_PURGE_REQ:
+ isReq = TRUE;
+ break;
+ case NHRP_ERROR_INDICATION: /* This needs special treatment */
+ isErr = TRUE;
+ isInd = TRUE;
+ break;
+ case NHRP_TRAFFIC_INDICATION:
+ isInd = TRUE;
+ break;
+ }
+ nhrp_tree_item = proto_tree_add_text(tree, tvb, offset, mandLen, "NHRP Mandatory Part");
+ nhrp_tree = proto_item_add_subtree(nhrp_tree_item, ett_nhrp_mand);
+
+ *srcLen = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(nhrp_tree, hf_nhrp_src_proto_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+
+ dstLen = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(nhrp_tree, hf_nhrp_dst_proto_len, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+
+ if (!isInd) {
+ proto_item *flag_item;
+ proto_tree *flag_tree;
+ flags = tvb_get_ntohs(tvb, offset);
+ flag_item = proto_tree_add_uint(nhrp_tree, hf_nhrp_flags, tvb, offset, 2, flags);
+ flag_tree = proto_item_add_subtree(flag_item, ett_nhrp_mand_flag);
+
+ switch (hdr->ar_op_type)
+ {
+ case NHRP_RESOLUTION_REQ:
+ case NHRP_RESOLUTION_REPLY:
+ proto_tree_add_boolean(flag_tree, hf_nhrp_flag_Q, tvb, offset, 2, flags);
+ proto_tree_add_boolean(flag_tree, hf_nhrp_flag_A, tvb, offset, 2, flags);
+ proto_tree_add_boolean(flag_tree, hf_nhrp_flag_D, tvb, offset, 2, flags);
+ proto_tree_add_boolean(flag_tree, hf_nhrp_flag_U1, tvb, offset, 2, flags);
+ proto_tree_add_boolean(flag_tree, hf_nhrp_flag_S, tvb, offset, 2, flags);
+ break;
+ case NHRP_REGISTRATION_REQ:
+ case NHRP_REGISTRATION_REPLY:
+ proto_tree_add_boolean(flag_tree, hf_nhrp_flag_U2, tvb, offset, 2, flags);
+ break;
+
+ case NHRP_PURGE_REQ:
+ case NHRP_PURGE_REPLY:
+ proto_tree_add_boolean(flag_tree, hf_nhrp_flag_N, tvb, offset, 2, flags);
+ break;
+ }
+ proto_tree_add_boolean(flag_tree, hf_nhrp_flag_NAT, tvb, offset, 2, flags);
+
+ offset += 2;
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", ID=%u", tvb_get_ntohl(tvb, offset));
+ proto_tree_add_item(nhrp_tree, hf_nhrp_request_id, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ }
+ else if (isErr) {
+ offset += 2;
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", %s",
+ val_to_str(tvb_get_ntohs(tvb, offset), nhrp_error_code_vals, "Unknown Error (%u)"));
+ proto_tree_add_item(nhrp_tree, hf_nhrp_error_code, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(nhrp_tree, hf_nhrp_error_offset, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ }
+ else {
+ offset += 6;
+ }
+
+ shl = NHRP_SHTL_LEN(hdr->ar_shtl);
+ if (shl) {
+ switch (hdr->ar_afn) {
+
+ case AFNUM_INET:
+ if (shl == 4)
+ proto_tree_add_item(nhrp_tree, hf_nhrp_src_nbma_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
+ else {
+ proto_tree_add_text(nhrp_tree, tvb, offset, shl,
+ "Source NBMA Address: %s",
+ tvb_bytes_to_str(tvb, offset, shl));
+ }
+ break;
+
+ default:
+ proto_tree_add_text(nhrp_tree, tvb, offset, shl,
+ "Source NBMA Address: %s",
+ tvb_bytes_to_str(tvb, offset, shl));
+ break;
+ }
+ offset += shl;
+ }
+
+ ssl = NHRP_SHTL_LEN(hdr->ar_sstl);
+ if (ssl) {
+ proto_tree_add_text(nhrp_tree, tvb, offset, ssl,
+ "Source NBMA Sub Address: %s",
+ tvb_bytes_to_str(tvb, offset, ssl));
+ offset += ssl;
+ }
+
+ if (*srcLen == 4) {
+ proto_tree_add_item(nhrp_tree, hf_nhrp_src_prot_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ }
+ else if (*srcLen) {
+ proto_tree_add_text(nhrp_tree, tvb, offset, *srcLen,
+ "Source Protocol Address: %s",
+ tvb_bytes_to_str(tvb, offset, *srcLen));
+ offset += *srcLen;
+ }
+
+ if (dstLen == 4) {
+ proto_tree_add_item(nhrp_tree, hf_nhrp_dst_prot_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ }
+ else if (dstLen) {
+ proto_tree_add_text(nhrp_tree, tvb, offset, dstLen,
+ "Destination Protocol Address: %s",
+ tvb_bytes_to_str(tvb, offset, dstLen));
+ offset += dstLen;
+ }
+
+ if (isInd) {
+ gboolean save_in_error_pkt;
+ gint pkt_len = mandEnd - offset;
+ proto_item *ind_tree_item = proto_tree_add_text(tree, tvb, offset, pkt_len, "Packet Causing Indication");
+ proto_tree *ind_tree = proto_item_add_subtree(ind_tree_item, ett_nhrp_indication);
+ gboolean dissected;
+ tvbuff_t *sub_tvb;
+
+ save_in_error_pkt = pinfo->flags.in_error_pkt;
+ pinfo->flags.in_error_pkt = TRUE;
+ sub_tvb = tvb_new_subset_remaining(tvb, offset);
+ if (isErr) {
+ _dissect_nhrp(sub_tvb, pinfo, ind_tree, TRUE, FALSE);
+ }
+ else {
+ if (hdr->ar_pro_type <= 0xFF) {
+ /* It's an NLPID */
+ if (hdr->ar_pro_type == NLPID_SNAP) {
+ /*
+ * Dissect based on the SNAP OUI
+ * and PID.
+ */
+ if (hdr->ar_pro_type_oui == 0x000000) {
+ /*
+ * "Should not happen", as
+ * the protocol type should
+ * be the Ethertype, but....
+ */
+ dissected = dissector_try_uint(
+ ethertype_subdissector_table,
+ hdr->ar_pro_type_pid,
+ sub_tvb, pinfo, ind_tree);
+ } else {
+ /*
+ * If we have a dissector
+ * table, use it, otherwise
+ * just dissect as data.
+ */
+ if (oui_info != NULL) {
+ dissected = dissector_try_uint(
+ oui_info->table,
+ hdr->ar_pro_type_pid,
+ sub_tvb, pinfo,
+ ind_tree);
+ } else
+ dissected = FALSE;
+ }
+ } else {
+ /*
+ * Dissect based on the NLPID.
+ */
+ dissected = dissector_try_uint(
+ osinl_subdissector_table,
+ hdr->ar_pro_type, sub_tvb, pinfo,
+ ind_tree) ||
+ dissector_try_uint(
+ osinl_excl_subdissector_table,
+ hdr->ar_pro_type, sub_tvb, pinfo,
+ ind_tree);
+ }
+ } else if (hdr->ar_pro_type <= 0x3FF) {
+ /* Reserved for future use by the IETF */
+ dissected = FALSE;
+ } else if (hdr->ar_pro_type <= 0x04FF) {
+ /* Allocated for use by the ATM Forum */
+ dissected = FALSE;
+ } else if (hdr->ar_pro_type <= 0x05FF) {
+ /* Experimental/Local use */
+ dissected = FALSE;
+ } else {
+ dissected = dissector_try_uint(
+ ethertype_subdissector_table,
+ hdr->ar_pro_type, sub_tvb, pinfo, ind_tree);
+ }
+ if (!dissected) {
+ call_dissector(data_handle, sub_tvb, pinfo,
+ ind_tree);
+ }
+ }
+ pinfo->flags.in_error_pkt = save_in_error_pkt;
+ offset = mandEnd;
+ }
+
+ /* According to RFC 2332, section 5.2.7, there shouldn't be any extensions
+ * in the Error Indication packet. */
+ if (isErr && tvb_reported_length_remaining(tvb, offset)) {
+ expert_add_info_format(pinfo, tree, PI_MALFORMED, PI_ERROR,
+ "Extensions not allowed per RFC2332 section 5.2.7");
+ }
+
+ dissect_cie_list(tvb, pinfo, nhrp_tree, offset, mandEnd, hdr, isReq, codeinfo);
+
+ *pOffset = mandEnd;
}
-void dissect_nhrp_ext(tvbuff_t *tvb,
- packet_info *pinfo,
- proto_tree *tree,
- gint *pOffset,
- gint extLen,
- e_nhrp_hdr *hdr,
- guint srcLen,
- gboolean nested)
+void dissect_nhrp_ext(tvbuff_t *tvb,
+ packet_info *pinfo,
+ proto_tree *tree,
+ gint *pOffset,
+ gint extLen,
+ e_nhrp_hdr *hdr,
+ guint srcLen,
+ gboolean nested)
{
- gint offset = *pOffset;
- gint extEnd = offset + extLen;
-
- proto_item *nhrp_tree_item = NULL;
- proto_tree *nhrp_tree = NULL;
- proto_item *ti = NULL;
-
- tvb_ensure_bytes_exist(tvb, offset, extLen);
-
- while ((offset + 4) <= extEnd)
- {
- gint extTypeC = tvb_get_ntohs(tvb, offset);
- gint extType = extTypeC & 0x3FFF;
- guint len = tvb_get_ntohs(tvb, offset+2);
-
- if ((extType == NHRP_EXT_NAT_ADDRESS) && (len == 8)) {
- /* Assume it's not really a Cisco NAT extension, but a device
- * capabilities extension instead (see RFC 2735). */
- nhrp_tree_item = proto_tree_add_text(tree, tvb, offset,
- len + 4, "Device Capabilities Extension");
- }
- else {
- nhrp_tree_item = proto_tree_add_text(tree, tvb, offset,
- len + 4, "%s",
- val_to_str(extType, ext_type_vals, "Unknown (%u)"));
- }
- nhrp_tree = proto_item_add_subtree(nhrp_tree_item, ett_nhrp_ext);
- proto_tree_add_boolean(nhrp_tree, hf_nhrp_ext_C, tvb, offset, 2, extTypeC);
- proto_tree_add_item(nhrp_tree, hf_nhrp_ext_type, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
-
- proto_tree_add_item(nhrp_tree, hf_nhrp_ext_len, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
-
- if (len && (extType != NHRP_EXT_NULL)) {
- tvb_ensure_bytes_exist(tvb, offset, len);
- if ((extType == NHRP_EXT_NAT_ADDRESS) && (len == 8)) {
- /* Assume it's not really a Cisco NAT extension, but a device
- * capabilities extension instead (see RFC 2735). */
- proto_item *devcap_item;
- proto_tree *devcap_tree;
- proto_item *cap_item;
- proto_tree *cap_tree;
-
- devcap_item = proto_tree_add_text(nhrp_tree, tvb, offset, len,
- "Extension Data: Src is %sVPN-aware; Dst is %sVPN-aware",
- tvb_get_ntohl(tvb, offset) & 1 ? "" : "non-",
- tvb_get_ntohl(tvb, offset + 4) & 1 ? "" : "non-");
- devcap_tree = proto_item_add_subtree(devcap_item, ett_nhrp_devcap_ext);
- cap_item = proto_tree_add_item(devcap_tree, hf_nhrp_devcap_ext_srccap, tvb, offset, 4, ENC_BIG_ENDIAN);
- cap_tree = proto_item_add_subtree(cap_item, ett_nhrp_devcap_ext_srccap);
- proto_tree_add_item(cap_tree, hf_nhrp_devcap_ext_srccap_V, tvb, offset, 4, ENC_BIG_ENDIAN);
-
- cap_item = proto_tree_add_item(devcap_tree, hf_nhrp_devcap_ext_dstcap, tvb, offset + 4, 4, ENC_BIG_ENDIAN);
- cap_tree = proto_item_add_subtree(cap_item, ett_nhrp_devcap_ext_dstcap);
- proto_tree_add_item(cap_tree, hf_nhrp_devcap_ext_dstcap_V, tvb, offset + 4, 4, ENC_BIG_ENDIAN);
- goto skip_switch;
- }
-
- switch (extType) {
- case NHRP_EXT_RESP_ADDR:
- case NHRP_EXT_FWD_RECORD:
- case NHRP_EXT_REV_RECORD:
- case NHRP_EXT_NAT_ADDRESS:
- dissect_cie_list(tvb, pinfo, nhrp_tree,
- offset, offset + len, hdr, 0, FALSE);
- break;
-
- case NHRP_EXT_AUTH:
- case NHRP_EXT_MOBILE_AUTH:
- if (len < (4 + srcLen)) {
- ti = proto_tree_add_text(nhrp_tree, tvb, offset, len,
- "Malformed Extension: %s",
- tvb_bytes_to_str(tvb, offset, len));
- expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR,
- "Incomplete Authentication Extension");
- }
- else {
- proto_item *auth_item;
- proto_tree *auth_tree;
-
- auth_item = proto_tree_add_text(nhrp_tree, tvb, offset, len,
- "Extension Data: SPI=%u: Data=%s", tvb_get_ntohs(tvb, offset + 2),
- tvb_bytes_to_str(tvb, offset + 4, len - 4));
- auth_tree = proto_item_add_subtree(auth_item, ett_nhrp_auth_ext);
- proto_tree_add_item(auth_tree, hf_nhrp_auth_ext_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(auth_tree, hf_nhrp_auth_ext_spi, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
- if (srcLen == 4)
- proto_tree_add_item(auth_tree, hf_nhrp_auth_ext_src_addr, tvb, offset + 4, 4, ENC_BIG_ENDIAN);
- else if (srcLen) {
- proto_tree_add_text(auth_tree, tvb, offset + 4, srcLen,
- "Source Address: %s",
- tvb_bytes_to_str(tvb, offset + 4, srcLen));
- }
- if (len > (4 + srcLen)) {
- proto_tree_add_text(auth_tree, tvb, offset + 4 + srcLen, len - (4 + srcLen),
- "Data: %s", tvb_bytes_to_str(tvb, offset + 4 + srcLen, len - (4 + srcLen)));
- }
- }
- break;
-
- case NHRP_EXT_VENDOR_PRIV:
- if (len < 3) {
- ti = proto_tree_add_text(nhrp_tree, tvb, offset, len,
- "Malformed Extension: %s",
- tvb_bytes_to_str(tvb, offset, len));
- expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR,
- "Incomplete Vendor-Private Extension");
- }
- else {
- proto_item *vendor_item;
- proto_tree *vendor_tree;
- gchar manuf[3];
-
- tvb_memcpy(tvb, manuf, offset, 3);
- vendor_item = proto_tree_add_text(nhrp_tree, tvb, offset, len,
- "Extension Data: Vendor ID=%s, Data=%s", get_manuf_name(manuf),
- tvb_bytes_to_str(tvb, offset + 3, len - 3));
- vendor_tree = proto_item_add_subtree(vendor_item, ett_nhrp_vendor_ext);
- proto_tree_add_bytes_format(vendor_tree, hf_nhrp_vendor_ext_id, tvb,
- offset, 3, manuf, "Vendor ID: %s", get_manuf_name(manuf));
- if (len > 3) {
- proto_tree_add_text(vendor_tree, tvb, offset + 3, len - 3,
- "Data: %s", tvb_bytes_to_str(tvb, offset + 3, len - 3));
- }
- }
- break;
-
- default:
- proto_tree_add_text(nhrp_tree, tvb, offset, len,
- "Extension Value: %s",
- tvb_bytes_to_str(tvb, offset, len));
- break;
- }
+ gint offset = *pOffset;
+ gint extEnd = offset + extLen;
+
+ proto_item *ti;
+
+ tvb_ensure_bytes_exist(tvb, offset, extLen);
+
+ while ((offset + 4) <= extEnd)
+ {
+ proto_item *nhrp_tree_item;
+ proto_tree *nhrp_tree;
+ gint extTypeC = tvb_get_ntohs(tvb, offset);
+ gint extType = extTypeC & 0x3FFF;
+ guint len = tvb_get_ntohs(tvb, offset+2);
+
+ if ((extType == NHRP_EXT_NAT_ADDRESS) && (len == 8)) {
+ /* Assume it's not really a Cisco NAT extension, but a device
+ * capabilities extension instead (see RFC 2735). */
+ nhrp_tree_item = proto_tree_add_text(tree, tvb, offset,
+ len + 4, "Device Capabilities Extension");
+ }
+ else {
+ nhrp_tree_item = proto_tree_add_text(tree, tvb, offset,
+ len + 4, "%s",
+ val_to_str(extType, ext_type_vals, "Unknown (%u)"));
+ }
+ nhrp_tree = proto_item_add_subtree(nhrp_tree_item, ett_nhrp_ext);
+ proto_tree_add_boolean(nhrp_tree, hf_nhrp_ext_C, tvb, offset, 2, extTypeC);
+ proto_tree_add_item(nhrp_tree, hf_nhrp_ext_type, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(nhrp_tree, hf_nhrp_ext_len, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ if (len && (extType != NHRP_EXT_NULL)) {
+ tvb_ensure_bytes_exist(tvb, offset, len);
+ if ((extType == NHRP_EXT_NAT_ADDRESS) && (len == 8)) {
+ /* Assume it's not really a Cisco NAT extension, but a device
+ * capabilities extension instead (see RFC 2735). */
+ proto_item *devcap_item;
+ proto_tree *devcap_tree;
+ proto_item *cap_item;
+ proto_tree *cap_tree;
+
+ devcap_item = proto_tree_add_text(nhrp_tree, tvb, offset, len,
+ "Extension Data: Src is %sVPN-aware; Dst is %sVPN-aware",
+ tvb_get_ntohl(tvb, offset) & 1 ? "" : "non-",
+ tvb_get_ntohl(tvb, offset + 4) & 1 ? "" : "non-");
+ devcap_tree = proto_item_add_subtree(devcap_item, ett_nhrp_devcap_ext);
+ cap_item = proto_tree_add_item(devcap_tree, hf_nhrp_devcap_ext_srccap, tvb, offset, 4, ENC_BIG_ENDIAN);
+ cap_tree = proto_item_add_subtree(cap_item, ett_nhrp_devcap_ext_srccap);
+ proto_tree_add_item(cap_tree, hf_nhrp_devcap_ext_srccap_V, tvb, offset, 4, ENC_BIG_ENDIAN);
+
+ cap_item = proto_tree_add_item(devcap_tree, hf_nhrp_devcap_ext_dstcap, tvb, offset + 4, 4, ENC_BIG_ENDIAN);
+ cap_tree = proto_item_add_subtree(cap_item, ett_nhrp_devcap_ext_dstcap);
+ proto_tree_add_item(cap_tree, hf_nhrp_devcap_ext_dstcap_V, tvb, offset + 4, 4, ENC_BIG_ENDIAN);
+ goto skip_switch;
+ }
+
+ switch (extType) {
+ case NHRP_EXT_RESP_ADDR:
+ case NHRP_EXT_FWD_RECORD:
+ case NHRP_EXT_REV_RECORD:
+ case NHRP_EXT_NAT_ADDRESS:
+ dissect_cie_list(tvb, pinfo, nhrp_tree,
+ offset, offset + len, hdr, 0, FALSE);
+ break;
+
+ case NHRP_EXT_AUTH:
+ case NHRP_EXT_MOBILE_AUTH:
+ if (len < (4 + srcLen)) {
+ ti = proto_tree_add_text(nhrp_tree, tvb, offset, len,
+ "Malformed Extension: %s",
+ tvb_bytes_to_str(tvb, offset, len));
+ expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR,
+ "Incomplete Authentication Extension");
+ }
+ else {
+ proto_item *auth_item;
+ proto_tree *auth_tree;
+
+ auth_item = proto_tree_add_text(nhrp_tree, tvb, offset, len,
+ "Extension Data: SPI=%u: Data=%s", tvb_get_ntohs(tvb, offset + 2),
+ tvb_bytes_to_str(tvb, offset + 4, len - 4));
+ auth_tree = proto_item_add_subtree(auth_item, ett_nhrp_auth_ext);
+ proto_tree_add_item(auth_tree, hf_nhrp_auth_ext_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(auth_tree, hf_nhrp_auth_ext_spi, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
+ if (srcLen == 4)
+ proto_tree_add_item(auth_tree, hf_nhrp_auth_ext_src_addr, tvb, offset + 4, 4, ENC_BIG_ENDIAN);
+ else if (srcLen) {
+ proto_tree_add_text(auth_tree, tvb, offset + 4, srcLen,
+ "Source Address: %s",
+ tvb_bytes_to_str(tvb, offset + 4, srcLen));
+ }
+ if (len > (4 + srcLen)) {
+ proto_tree_add_text(auth_tree, tvb, offset + 4 + srcLen, len - (4 + srcLen),
+ "Data: %s", tvb_bytes_to_str(tvb, offset + 4 + srcLen, len - (4 + srcLen)));
+ }
+ }
+ break;
+
+ case NHRP_EXT_VENDOR_PRIV:
+ if (len < 3) {
+ ti = proto_tree_add_text(nhrp_tree, tvb, offset, len,
+ "Malformed Extension: %s",
+ tvb_bytes_to_str(tvb, offset, len));
+ expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR,
+ "Incomplete Vendor-Private Extension");
+ }
+ else {
+ proto_item *vendor_item;
+ proto_tree *vendor_tree;
+ gchar manuf[3];
+
+ tvb_memcpy(tvb, manuf, offset, 3);
+ vendor_item = proto_tree_add_text(nhrp_tree, tvb, offset, len,
+ "Extension Data: Vendor ID=%s, Data=%s", get_manuf_name(manuf),
+ tvb_bytes_to_str(tvb, offset + 3, len - 3));
+ vendor_tree = proto_item_add_subtree(vendor_item, ett_nhrp_vendor_ext);
+ proto_tree_add_bytes_format(vendor_tree, hf_nhrp_vendor_ext_id, tvb,
+ offset, 3, manuf, "Vendor ID: %s", get_manuf_name(manuf));
+ if (len > 3) {
+ proto_tree_add_text(vendor_tree, tvb, offset + 3, len - 3,
+ "Data: %s", tvb_bytes_to_str(tvb, offset + 3, len - 3));
+ }
+ }
+ break;
+
+ default:
+ proto_tree_add_item(nhrp_tree, hf_nhrp_unknown_ext_value, tvb,
+ offset, len, ENC_NA);
+ break;
+ }
skip_switch:
- offset += len;
- }
-
- if (!nested) {
- len = tvb_reported_length_remaining(tvb, offset);
- if ((extType == NHRP_EXT_NULL) && len) {
- ti = proto_tree_add_text(tree, tvb, offset, len,
- "Unknown Data (%d bytes)", len);
- expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR,
- "Superfluous data follows End Extension");
- break;
- }
- }
- }
-
- *pOffset = extEnd;
+ offset += len;
+ }
+
+ if (!nested) {
+ len = tvb_reported_length_remaining(tvb, offset);
+ if ((extType == NHRP_EXT_NULL) && len) {
+ ti = proto_tree_add_text(tree, tvb, offset, len,
+ "Unknown Data (%d bytes)", len);
+ expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR,
+ "Superfluous data follows End Extension");
+ break;
+ }
+ }
+ }
+
+ *pOffset = extEnd;
}
void dissect_nhrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- _dissect_nhrp(tvb, pinfo, tree, FALSE, TRUE);
+ _dissect_nhrp(tvb, pinfo, tree, FALSE, TRUE);
}
static void _dissect_nhrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- gboolean nested, gboolean codeinfo)
+ gboolean nested, gboolean codeinfo)
{
- e_nhrp_hdr hdr;
- gint mandLen = 0;
- gint extLen = 0;
- gint offset = 0;
- proto_item *ti = NULL;
- proto_tree *nhrp_tree = NULL;
- oui_info_t *oui_info;
- guint srcLen = 0;
-
- memset(&hdr, 0, sizeof(e_nhrp_hdr));
- hdr.ar_op_type = tvb_get_guint8(tvb, 17);
-
- if ( !nested ) {
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "NHRP");
- col_clear(pinfo->cinfo, COL_INFO);
- col_add_str(pinfo->cinfo, COL_INFO,
- val_to_str(hdr.ar_op_type, nhrp_op_type_vals,
- "0x%02X - unknown"));
- }
-
- ti = proto_tree_add_protocol_format(tree, proto_nhrp, tvb, 0, -1,
- "Next Hop Resolution Protocol (%s)",
- val_to_str(hdr.ar_op_type, nhrp_op_type_vals, "0x%02X - unknown"));
- nhrp_tree = proto_item_add_subtree(ti, ett_nhrp);
-
- dissect_nhrp_hdr(tvb, pinfo, nhrp_tree, &offset, &mandLen, &extLen,
- &oui_info, &hdr);
- if (mandLen) {
- dissect_nhrp_mand(tvb, pinfo, nhrp_tree, &offset, mandLen,
- oui_info, &hdr, &srcLen, codeinfo);
- }
-
- if (extLen) {
- dissect_nhrp_ext(tvb, pinfo, nhrp_tree, &offset, extLen, &hdr, srcLen, nested);
- }
+ e_nhrp_hdr hdr;
+ gint mandLen = 0;
+ gint extLen = 0;
+ gint offset = 0;
+ proto_item *ti;
+ proto_tree *nhrp_tree;
+ oui_info_t *oui_info = NULL;
+ guint srcLen = 0;
+
+ if (!nested) {
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "NHRP");
+ col_clear(pinfo->cinfo, COL_INFO);
+ }
+
+ memset(&hdr, 0, sizeof(e_nhrp_hdr));
+ hdr.ar_op_type = tvb_get_guint8(tvb, 17);
+
+ if (!nested) {
+ col_add_str(pinfo->cinfo, COL_INFO,
+ val_to_str(hdr.ar_op_type, nhrp_op_type_vals,
+ "0x%02X - unknown"));
+ }
+
+ ti = proto_tree_add_protocol_format(tree, proto_nhrp, tvb, 0, -1,
+ "Next Hop Resolution Protocol (%s)",
+ val_to_str(hdr.ar_op_type, nhrp_op_type_vals, "0x%02X - unknown"));
+ nhrp_tree = proto_item_add_subtree(ti, ett_nhrp);
+
+ dissect_nhrp_hdr(tvb, pinfo, nhrp_tree, &offset, &mandLen, &extLen,
+ &oui_info, &hdr);
+ if (mandLen) {
+ dissect_nhrp_mand(tvb, pinfo, nhrp_tree, &offset, mandLen,
+ oui_info, &hdr, &srcLen, codeinfo);
+ }
+
+ if (extLen) {
+ dissect_nhrp_ext(tvb, pinfo, nhrp_tree, &offset, extLen, &hdr, srcLen, nested);
+ }
}
void
proto_register_nhrp(void)
{
- static hf_register_info hf[] = {
-
- { &hf_nhrp_hdr_afn,
- { "Address Family Number", "nhrp.hdr.afn", FT_UINT16, BASE_HEX_DEC, VALS(afn_vals), 0x0, NULL, HFILL }},
- { &hf_nhrp_hdr_pro_type,
- { "Protocol Type (short form)", "nhrp.hdr.pro.type",FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_hdr_pro_snap_oui,
- { "Protocol Type (long form) - OUI", "nhrp.hdr.pro.snap.oui",FT_UINT24, BASE_HEX, VALS(oui_vals), 0x0, NULL, HFILL }},
- { &hf_nhrp_hdr_pro_snap_pid,
- { "Protocol Type (long form) - PID", "nhrp.hdr.pro.snap.pid",FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_hdr_hopcnt,
- { "Hop Count", "nhrp.hdr.hopcnt", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_hdr_pktsz,
- { "Packet Length", "nhrp.hdr.pktsz", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_hdr_chksum,
- { "Packet Checksum", "nhrp.hdr.chksum", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_hdr_extoff,
- { "Extension Offset", "nhrp.hdr.extoff", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_hdr_version,
- { "Version", "nhrp.hdr.version", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_hdr_op_type,
- { "NHRP Packet Type", "nhrp.hdr.op.type", FT_UINT8, BASE_DEC, VALS(nhrp_op_type_vals), 0x0, NULL, HFILL }},
- { &hf_nhrp_hdr_shtl,
- { "Source Address Type/Len", "nhrp.hdr.shtl", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_hdr_shtl_type,
- { "Type", "nhrp.hdr.shtl.type", FT_UINT8, BASE_DEC, VALS(nhrp_shtl_type_vals), NHRP_SHTL_TYPE_MASK, NULL, HFILL }},
- { &hf_nhrp_hdr_shtl_len,
- { "Length", "nhrp.hdr.shtl.len", FT_UINT8, BASE_DEC, NULL, NHRP_SHTL_LEN_MASK, NULL, HFILL }},
- { &hf_nhrp_hdr_sstl,
- { "Source SubAddress Type/Len", "nhrp.hdr.sstl", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_hdr_sstl_type,
- { "Type", "nhrp.hdr.sstl.type", FT_UINT8, BASE_DEC, VALS(nhrp_shtl_type_vals), NHRP_SHTL_TYPE_MASK, NULL, HFILL }},
- { &hf_nhrp_hdr_sstl_len,
- { "Length", "nhrp.hdr.sstl.len", FT_UINT8, BASE_DEC, NULL, NHRP_SHTL_LEN_MASK, NULL, HFILL }},
-
- { &hf_nhrp_src_proto_len,
- { "Source Protocol Len", "nhrp.src.prot.len",FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_dst_proto_len,
- { "Destination Protocol Len", "nhrp.dst.prot.len",FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_flags,
- { "Flags", "nhrp.flags", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_flag_Q,
- { "Is Router", "nhrp.flag.q", FT_BOOLEAN, 16, NULL, 0x8000, NULL, HFILL }},
- { &hf_nhrp_flag_N,
- { "Expected Purge Reply", "nhrp.flag.n", FT_BOOLEAN, 16, NULL, 0x8000, NULL, HFILL }},
- { &hf_nhrp_flag_A,
- { "Authoritative", "nhrp.flag.a", FT_BOOLEAN, 16, NULL, 0x4000, "A bit", HFILL }},
- { &hf_nhrp_flag_D,
- { "Stable Association", "nhrp.flag.d", FT_BOOLEAN, 16, NULL, 0x2000, "D bit", HFILL }},
- { &hf_nhrp_flag_U1,
- { "Uniqueness Bit", "nhrp.flag.u1", FT_BOOLEAN, 16, NULL, 0x1000, "U bit", HFILL }},
- { &hf_nhrp_flag_U2,
- { "Uniqueness Bit", "nhrp.flag.u1", FT_BOOLEAN, 16, NULL, 0x8000, "U bit", HFILL }},
- { &hf_nhrp_flag_S,
- { "Stable Binding", "nhrp.flag.s", FT_BOOLEAN, 16, NULL, 0x0800, "S bit", HFILL }},
- { &hf_nhrp_flag_NAT,
- { "Cisco NAT Supported", "nhrp.flag.nat", FT_BOOLEAN, 16, NULL, 0x0002, "NAT bit", HFILL }},
- { &hf_nhrp_request_id,
- { "Request ID", "nhrp.reqid", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_src_nbma_addr,
- { "Source NBMA Address", "nhrp.src.nbma.addr",FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_src_nbma_saddr,
- { "Source NBMA Sub Address", "nhrp.src.nbma.saddr",FT_UINT_BYTES,BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_src_prot_addr,
- { "Source Protocol Address", "nhrp.src.prot.addr",FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_dst_prot_addr,
- { "Destination Protocol Address", "nhrp.dst.prot.addr",FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }},
-
- { &hf_nhrp_code,
- { "Code", "nhrp.code", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_prefix_len,
- { "Prefix Length", "nhrp.prefix", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_unused,
- { "Unused", "nhrp.unused", FT_UINT16,BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_mtu,
- { "Max Transmission Unit", "nhrp.mtu", FT_UINT16,BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_holding_time,
- { "Holding Time (s)", "nhrp.htime", FT_UINT16,BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_cli_addr_tl,
- { "Client Address Type/Len", "nhrp.cli.addr_tl", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_cli_addr_tl_type,
- { "Type", "nhrp.cli.addr_tl.type", FT_UINT8, BASE_DEC, VALS(nhrp_shtl_type_vals), NHRP_SHTL_TYPE_MASK, NULL, HFILL }},
- { &hf_nhrp_cli_addr_tl_len,
- { "Length", "nhrp.cli.addr_tl.len", FT_UINT8, BASE_DEC, NULL, NHRP_SHTL_LEN_MASK, NULL, HFILL }},
- { &hf_nhrp_cli_saddr_tl,
- { "Client Sub Address Type/Len","nhrp.cli.saddr_tl", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_cli_saddr_tl_type,
- { "Type", "nhrp.cli.saddr_tl.type", FT_UINT8, BASE_DEC, VALS(nhrp_shtl_type_vals), NHRP_SHTL_TYPE_MASK, NULL, HFILL }},
- { &hf_nhrp_cli_saddr_tl_len,
- { "Length", "nhrp.cli.saddr_tl.len", FT_UINT8, BASE_DEC, NULL, NHRP_SHTL_LEN_MASK, NULL, HFILL }},
- { &hf_nhrp_cli_prot_len,
- { "Client Protocol Length", "nhrp.prot.len", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_pref,
- { "CIE Preference Value", "nhrp.pref", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_client_nbma_addr,
- { "Client NBMA Address", "nhrp.client.nbma.addr", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_client_nbma_saddr,
- { "Client NBMA Sub Address", "nhrp.client.nbma.saddr",FT_UINT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_client_prot_addr,
- { "Client Protocol Address", "nhrp.client.prot.addr", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }},
-
- { &hf_nhrp_ext_C,
- { "Compulsory Flag", "nhrp.ext.c", FT_BOOLEAN, 16, NULL, 0x8000, NULL, HFILL }},
- { &hf_nhrp_ext_type,
- { "Extension Type", "nhrp.ext.type", FT_UINT16, BASE_HEX, NULL, 0x3FFF, NULL, HFILL }},
- { &hf_nhrp_ext_len,
- { "Extension length", "nhrp.ext.len", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_ext_value,
- { "Extension Value", "nhrp.ext.val", FT_UINT_BYTES,BASE_NONE, NULL, 0x0, NULL, HFILL }},
-
- { &hf_nhrp_error_code,
- { "Error Code", "nhrp.err.code", FT_UINT16, BASE_DEC, VALS(nhrp_error_code_vals), 0x0, NULL, HFILL }},
- { &hf_nhrp_error_offset,
- { "Error Offset", "nhrp.err.offset", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_error_packet,
- { "Errored Packet", "nhrp.err.pkt", FT_UINT_BYTES,BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_auth_ext_reserved,
- { "Reserved", "nhrp.auth_ext.reserved", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_auth_ext_spi,
- { "SPI", "nhrp.auth_ext.spi", FT_UINT16, BASE_DEC, NULL, 0x0, "Security Parameter Index", HFILL }},
- { &hf_nhrp_auth_ext_src_addr,
- { "Source Address", "nhrp.auth_ext.src_addr",FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_vendor_ext_id ,
- { "Vendor ID", "nhrp.vendor_ext.id", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_devcap_ext_srccap,
- { "Source Capabilities", "nhrp.devcap_ext.srccap", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_devcap_ext_srccap_V,
- { "VPN-aware", "nhrp.devcap_ext.srccap.V", FT_BOOLEAN, 32, NULL, 0x00000001, NULL, HFILL }},
- { &hf_nhrp_devcap_ext_dstcap,
- { "Destination Capabilities", "nhrp.devcap_ext.dstcap", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
- { &hf_nhrp_devcap_ext_dstcap_V,
- { "VPN-aware", "nhrp.devcap_ext.dstcap.V", FT_BOOLEAN, 32, NULL, 0x00000001, NULL, HFILL }},
- };
-
- static gint *ett[] = {
- &ett_nhrp,
- &ett_nhrp_hdr,
- &ett_nhrp_hdr_shtl,
- &ett_nhrp_hdr_sstl,
- &ett_nhrp_mand,
- &ett_nhrp_ext,
- &ett_nhrp_mand_flag,
- &ett_nhrp_cie,
- &ett_nhrp_cie_cli_addr_tl,
- &ett_nhrp_cie_cli_saddr_tl,
- &ett_nhrp_indication,
- &ett_nhrp_auth_ext,
- &ett_nhrp_vendor_ext,
- &ett_nhrp_devcap_ext,
- &ett_nhrp_devcap_ext_srccap,
- &ett_nhrp_devcap_ext_dstcap
- };
-
- proto_nhrp = proto_register_protocol(
- "NBMA Next Hop Resolution Protocol",
- "NHRP",
- "nhrp");
- proto_register_field_array(proto_nhrp, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ static hf_register_info hf[] = {
+
+ { &hf_nhrp_hdr_afn,
+ { "Address Family Number", "nhrp.hdr.afn",
+ FT_UINT16, BASE_HEX_DEC, VALS(afn_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_hdr_pro_type,
+ { "Protocol Type (short form)", "nhrp.hdr.pro.type",
+ FT_UINT16, BASE_HEX_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_hdr_pro_snap_oui,
+ { "Protocol Type (long form) - OUI", "nhrp.hdr.pro.snap.oui",
+ FT_UINT24, BASE_HEX, VALS(oui_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_hdr_pro_snap_pid,
+ { "Protocol Type (long form) - PID", "nhrp.hdr.pro.snap.pid",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_hdr_hopcnt,
+ { "Hop Count", "nhrp.hdr.hopcnt",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_hdr_pktsz,
+ { "Packet Length", "nhrp.hdr.pktsz",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_hdr_chksum,
+ { "Packet Checksum", "nhrp.hdr.chksum",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_hdr_extoff,
+ { "Extension Offset", "nhrp.hdr.extoff",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_hdr_version,
+ { "Version", "nhrp.hdr.version",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_hdr_op_type,
+ { "NHRP Packet Type", "nhrp.hdr.op.type",
+ FT_UINT8, BASE_DEC, VALS(nhrp_op_type_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_hdr_shtl,
+ { "Source Address Type/Len", "nhrp.hdr.shtl",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_hdr_shtl_type,
+ { "Type", "nhrp.hdr.shtl.type",
+ FT_UINT8, BASE_DEC, VALS(nhrp_shtl_type_vals), NHRP_SHTL_TYPE_MASK,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_hdr_shtl_len,
+ { "Length", "nhrp.hdr.shtl.len",
+ FT_UINT8, BASE_DEC, NULL, NHRP_SHTL_LEN_MASK,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_hdr_sstl,
+ { "Source SubAddress Type/Len", "nhrp.hdr.sstl",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_hdr_sstl_type,
+ { "Type", "nhrp.hdr.sstl.type",
+ FT_UINT8, BASE_DEC, VALS(nhrp_shtl_type_vals), NHRP_SHTL_TYPE_MASK,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_hdr_sstl_len,
+ { "Length", "nhrp.hdr.sstl.len",
+ FT_UINT8, BASE_DEC, NULL, NHRP_SHTL_LEN_MASK,
+ NULL, HFILL }
+ },
+
+ { &hf_nhrp_src_proto_len,
+ { "Source Protocol Len", "nhrp.src.prot.len",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_dst_proto_len,
+ { "Destination Protocol Len", "nhrp.dst.prot.len",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_flags,
+ { "Flags", "nhrp.flags",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_flag_Q,
+ { "Is Router", "nhrp.flag.q",
+ FT_BOOLEAN, 16, NULL, 0x8000,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_flag_N,
+ { "Expected Purge Reply", "nhrp.flag.n",
+ FT_BOOLEAN, 16, NULL, 0x8000,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_flag_A,
+ { "Authoritative", "nhrp.flag.a",
+ FT_BOOLEAN, 16, NULL, 0x4000,
+ "A bit", HFILL }
+ },
+ { &hf_nhrp_flag_D,
+ { "Stable Association", "nhrp.flag.d",
+ FT_BOOLEAN, 16, NULL, 0x2000,
+ "D bit", HFILL }
+ },
+ { &hf_nhrp_flag_U1,
+ { "Uniqueness Bit", "nhrp.flag.u1",
+ FT_BOOLEAN, 16, NULL, 0x1000,
+ "U bit", HFILL }
+ },
+ { &hf_nhrp_flag_U2,
+ { "Uniqueness Bit", "nhrp.flag.u1",
+ FT_BOOLEAN, 16, NULL, 0x8000,
+ "U bit", HFILL }
+ },
+ { &hf_nhrp_flag_S,
+ { "Stable Binding", "nhrp.flag.s",
+ FT_BOOLEAN, 16, NULL, 0x0800,
+ "S bit", HFILL }
+ },
+ { &hf_nhrp_flag_NAT,
+ { "Cisco NAT Supported", "nhrp.flag.nat",
+ FT_BOOLEAN, 16, NULL, 0x0002,
+ "NAT bit", HFILL }
+ },
+ { &hf_nhrp_request_id,
+ { "Request ID", "nhrp.reqid",
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_src_nbma_addr,
+ { "Source NBMA Address", "nhrp.src.nbma.addr",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+#if 0
+ { &hf_nhrp_src_nbma_saddr,
+ { "Source NBMA Sub Address", "nhrp.src.nbma.saddr",
+ FT_UINT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+#endif
+ { &hf_nhrp_src_prot_addr,
+ { "Source Protocol Address", "nhrp.src.prot.addr",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_dst_prot_addr,
+ { "Destination Protocol Address", "nhrp.dst.prot.addr",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+
+ { &hf_nhrp_code,
+ { "Code", "nhrp.code",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_prefix_len,
+ { "Prefix Length", "nhrp.prefix",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_unused,
+ { "Unused", "nhrp.unused",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_mtu,
+ { "Max Transmission Unit", "nhrp.mtu",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_holding_time,
+ { "Holding Time (s)", "nhrp.htime",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_cli_addr_tl,
+ { "Client Address Type/Len", "nhrp.cli.addr_tl",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_cli_addr_tl_type,
+ { "Type", "nhrp.cli.addr_tl.type",
+ FT_UINT8, BASE_DEC, VALS(nhrp_shtl_type_vals), NHRP_SHTL_TYPE_MASK,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_cli_addr_tl_len,
+ { "Length", "nhrp.cli.addr_tl.len",
+ FT_UINT8, BASE_DEC, NULL, NHRP_SHTL_LEN_MASK,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_cli_saddr_tl,
+ { "Client Sub Address Type/Len", "nhrp.cli.saddr_tl",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_cli_saddr_tl_type,
+ { "Type", "nhrp.cli.saddr_tl.type",
+ FT_UINT8, BASE_DEC, VALS(nhrp_shtl_type_vals), NHRP_SHTL_TYPE_MASK,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_cli_saddr_tl_len,
+ { "Length", "nhrp.cli.saddr_tl.len",
+ FT_UINT8, BASE_DEC, NULL, NHRP_SHTL_LEN_MASK,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_cli_prot_len,
+ { "Client Protocol Length", "nhrp.prot.len",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_pref,
+ { "CIE Preference Value", "nhrp.pref",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_client_nbma_addr,
+ { "Client NBMA Address", "nhrp.client.nbma.addr",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+#if 0
+ { &hf_nhrp_client_nbma_saddr,
+ { "Client NBMA Sub Address", "nhrp.client.nbma.saddr",
+ FT_UINT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+#endif
+ { &hf_nhrp_client_prot_addr,
+ { "Client Protocol Address", "nhrp.client.prot.addr",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+
+ { &hf_nhrp_ext_C,
+ { "Compulsory Flag", "nhrp.ext.c",
+ FT_BOOLEAN, 16, NULL, 0x8000,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_ext_type,
+ { "Extension Type", "nhrp.ext.type",
+ FT_UINT16, BASE_HEX, NULL, 0x3FFF,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_ext_len,
+ { "Extension length", "nhrp.ext.len",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+#if 0
+ { &hf_nhrp_ext_value,
+ { "Extension Value", "nhrp.ext.val",
+ FT_UINT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+#endif
+
+ { &hf_nhrp_error_code,
+ { "Error Code", "nhrp.err.code",
+ FT_UINT16, BASE_DEC, VALS(nhrp_error_code_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_error_offset,
+ { "Error Offset", "nhrp.err.offset",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+#if 0
+ { &hf_nhrp_error_packet,
+ { "Errored Packet", "nhrp.err.pkt",
+ FT_UINT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+#endif
+ { &hf_nhrp_auth_ext_reserved,
+ { "Reserved", "nhrp.auth_ext.reserved",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_auth_ext_spi,
+ { "SPI", "nhrp.auth_ext.spi",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Security Parameter Index", HFILL }
+ },
+ { &hf_nhrp_auth_ext_src_addr,
+ { "Source Address", "nhrp.auth_ext.src_addr",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_vendor_ext_id ,
+ { "Vendor ID", "nhrp.vendor_ext.id",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_devcap_ext_srccap,
+ { "Source Capabilities", "nhrp.devcap_ext.srccap",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_devcap_ext_srccap_V,
+ { "VPN-aware", "nhrp.devcap_ext.srccap.V",
+ FT_BOOLEAN, 32, NULL, 0x00000001,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_devcap_ext_dstcap,
+ { "Destination Capabilities", "nhrp.devcap_ext.dstcap",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_devcap_ext_dstcap_V,
+ { "VPN-aware", "nhrp.devcap_ext.dstcap.V",
+ FT_BOOLEAN, 32, NULL, 0x00000001,
+ NULL, HFILL }
+ },
+ { &hf_nhrp_unknown_ext_value,
+ { "Extension Value", "nhrp.unknown_ext.value",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ };
+
+ static gint *ett[] = {
+ &ett_nhrp,
+ &ett_nhrp_hdr,
+ &ett_nhrp_hdr_shtl,
+ &ett_nhrp_hdr_sstl,
+ &ett_nhrp_mand,
+ &ett_nhrp_ext,
+ &ett_nhrp_mand_flag,
+ &ett_nhrp_cie,
+ &ett_nhrp_cie_cli_addr_tl,
+ &ett_nhrp_cie_cli_saddr_tl,
+ &ett_nhrp_indication,
+ &ett_nhrp_auth_ext,
+ &ett_nhrp_vendor_ext,
+ &ett_nhrp_devcap_ext,
+ &ett_nhrp_devcap_ext_srccap,
+ &ett_nhrp_devcap_ext_dstcap
+ };
+
+ proto_nhrp = proto_register_protocol(
+ "NBMA Next Hop Resolution Protocol",
+ "NHRP",
+ "nhrp");
+ proto_register_field_array(proto_nhrp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_nhrp(void)
{
- dissector_handle_t nhrp_handle;
+ dissector_handle_t nhrp_handle;
- data_handle = find_dissector("data");
+ data_handle = find_dissector("data");
- osinl_subdissector_table = find_dissector_table("osinl");
- osinl_excl_subdissector_table = find_dissector_table("osinl.excl");
- ethertype_subdissector_table = find_dissector_table("ethertype");
+ osinl_subdissector_table = find_dissector_table("osinl");
+ osinl_excl_subdissector_table = find_dissector_table("osinl.excl");
+ ethertype_subdissector_table = find_dissector_table("ethertype");
- nhrp_handle = create_dissector_handle(dissect_nhrp, proto_nhrp);
- dissector_add_uint("ip.proto", IP_PROTO_NARP, nhrp_handle);
- dissector_add_uint("gre.proto", GRE_NHRP, nhrp_handle);
- dissector_add_uint("llc.iana_pid", IANA_PID_MARS_NHRP_CONTROL, nhrp_handle);
+ nhrp_handle = create_dissector_handle(dissect_nhrp, proto_nhrp);
+ dissector_add_uint("ip.proto", IP_PROTO_NARP, nhrp_handle);
+ dissector_add_uint("gre.proto", GRE_NHRP, nhrp_handle);
+ dissector_add_uint("llc.iana_pid", IANA_PID_MARS_NHRP_CONTROL, nhrp_handle);
}
diff --git a/epan/dissectors/packet-nhrp.h b/epan/dissectors/packet-nhrp.h
index 1b3b4f8268..36aa2896cf 100644
--- a/epan/dissectors/packet-nhrp.h
+++ b/epan/dissectors/packet-nhrp.h
@@ -28,7 +28,4 @@
void capture_nhrp(const guchar *, int, int, packet_counts *);
-/* Export the DSCP value-string table for other protocols */
-/*extern const value_string dscp_vals[];*/
-
#endif
diff --git a/epan/dissectors/packet-noe.c b/epan/dissectors/packet-noe.c
index 4c15320341..5ab27306ef 100644
--- a/epan/dissectors/packet-noe.c
+++ b/epan/dissectors/packet-noe.c
@@ -28,1440 +28,1454 @@
#endif
#include <glib.h>
+
#include "epan/packet.h"
-#include "epan/prefs.h"
-#include "epan/tap.h"
-#include "epan/value_string.h"
-
-#define OPCODE_C_context 0
-#define OPCODE_C_terminal 1
-#define OPCODE_C_keyboard 2
-#define OPCODE_C_audioconfig 3
-#define OPCODE_C_security 4
-#define OPCODE_C_leds 5
-#define OPCODE_C_screen 6
-#define OPCODE_C_date 7
-#define OPCODE_C_AOMV 8
-#define OPCODE_C_bluetooth 9
-#define OPCODE_C_callstate 12
-#define OPCODE_C_resource 13
-#define OPCODE_C_widgets_default 14
-#define OPCODE_C_framebox 128
-#define OPCODE_C_tabbox 129
-#define OPCODE_C_listbox 130
-#define OPCODE_C_actionlistbox 131
-#define OPCODE_C_textbox 132
-#define OPCODE_C_actionbox 133
-#define OPCODE_C_inputbox 134
-#define OPCODE_C_checkbox 135
-#define OPCODE_C_datebox 136
-#define OPCODE_C_timerbox 137
-#define OPCODE_C_popupbox 138
-#define OPCODE_C_dialogbox 139
-#define OPCODE_C_sliderbar 140
-#define OPCODE_C_progressbar 141
-#define OPCODE_C_imagebox 142
-#define OPCODE_C_iconbox 143
-#define OPCODE_C_AOMVbox 144
-#define OPCODE_C_telephonicbox 145
-#define OPCODE_C_keyboard_context 146
-#define OPCODE_C_AOMEL 147
-#define OPCODE_C_AOM10 148
-#define OPCODE_C_AOM40 149
-#define OPCODE_C_idletimer 150
+
+#define OPCODE_C_context 0
+#define OPCODE_C_terminal 1
+#define OPCODE_C_keyboard 2
+#define OPCODE_C_audioconfig 3
+#define OPCODE_C_security 4
+#define OPCODE_C_leds 5
+#define OPCODE_C_screen 6
+#define OPCODE_C_date 7
+#define OPCODE_C_AOMV 8
+#define OPCODE_C_bluetooth 9
+#define OPCODE_C_callstate 12
+#define OPCODE_C_resource 13
+#define OPCODE_C_widgets_default 14
+#define OPCODE_C_framebox 128
+#define OPCODE_C_tabbox 129
+#define OPCODE_C_listbox 130
+#define OPCODE_C_actionlistbox 131
+#define OPCODE_C_textbox 132
+#define OPCODE_C_actionbox 133
+#define OPCODE_C_inputbox 134
+#define OPCODE_C_checkbox 135
+#define OPCODE_C_datebox 136
+#define OPCODE_C_timerbox 137
+#define OPCODE_C_popupbox 138
+#define OPCODE_C_dialogbox 139
+#define OPCODE_C_sliderbar 140
+#define OPCODE_C_progressbar 141
+#define OPCODE_C_imagebox 142
+#define OPCODE_C_iconbox 143
+#define OPCODE_C_AOMVbox 144
+#define OPCODE_C_telephonicbox 145
+#define OPCODE_C_keyboard_context 146
+#define OPCODE_C_AOMEL 147
+#define OPCODE_C_AOM10 148
+#define OPCODE_C_AOM40 149
+#define OPCODE_C_idletimer 150
#define OPCODE_C_telephonicboxitem 151
-#define OPCODE_C_bluetooth_device 152
-#define OPCODE_C_headerbox 153
-#define OPCODE_C_ime_context 154
+#define OPCODE_C_bluetooth_device 152
+#define OPCODE_C_headerbox 153
+#define OPCODE_C_ime_context 154
static const value_string val_str_class[] = {
- {OPCODE_C_context, "Context"},
- {OPCODE_C_terminal, "Terminal"},
- {OPCODE_C_keyboard, "Keyboard"},
- {OPCODE_C_audioconfig, "AudioConfig"},
- {OPCODE_C_security, "Security"},
- {OPCODE_C_leds, "Leds"},
- {OPCODE_C_screen, "Screen"},
- {OPCODE_C_date, "Date"},
- {OPCODE_C_AOMV, "AOMV"},
- {OPCODE_C_bluetooth, "Bluetooth"},
- {OPCODE_C_callstate, "Callstate"},
- {OPCODE_C_framebox, "FrameBox"},
- {OPCODE_C_tabbox, "TabBox"},
- {OPCODE_C_listbox, "ListBox"},
- {OPCODE_C_actionlistbox, "ActionlistBox"},
- {OPCODE_C_textbox, "TextBox"},
- {OPCODE_C_actionbox, "ActionBox"},
- {OPCODE_C_inputbox, "InputBox"},
- {OPCODE_C_checkbox, "CheckBox"},
- {OPCODE_C_datebox, "DateBox"},
- {OPCODE_C_timerbox, "TimerBox"},
- {OPCODE_C_popupbox, "PopupBox"},
- {OPCODE_C_dialogbox, "DialogBox"},
- {OPCODE_C_sliderbar, "SliderBar"},
- {OPCODE_C_progressbar, "ProgressBar"},
- {OPCODE_C_imagebox, "ImageBox"},
- {OPCODE_C_iconbox, "IconBox"},
- {OPCODE_C_AOMVbox, "AOMVBox"},
- {OPCODE_C_telephonicbox, "TelephonicBox"},
- {OPCODE_C_keyboard_context, "Keyboard_context"},
- {OPCODE_C_AOMEL, "AOMEL"},
- {OPCODE_C_AOM10, "AOM10"},
- {OPCODE_C_AOM40, "AOM40"},
- {OPCODE_C_idletimer, "IdleTimer"},
- {OPCODE_C_telephonicboxitem, "TelephonicBoxItem"},
- {OPCODE_C_bluetooth_device, "Bluetooth_device"},
- {OPCODE_C_headerbox, "HeaderBox"},
- {OPCODE_C_ime_context, "ime_context"},
- {0, NULL}
+ {OPCODE_C_context , "Context"},
+ {OPCODE_C_terminal , "Terminal"},
+ {OPCODE_C_keyboard , "Keyboard"},
+ {OPCODE_C_audioconfig , "AudioConfig"},
+ {OPCODE_C_security , "Security"},
+ {OPCODE_C_leds , "Leds"},
+ {OPCODE_C_screen , "Screen"},
+ {OPCODE_C_date , "Date"},
+ {OPCODE_C_AOMV , "AOMV"},
+ {OPCODE_C_bluetooth , "Bluetooth"},
+ {OPCODE_C_callstate , "Callstate"},
+ {OPCODE_C_framebox , "FrameBox"},
+ {OPCODE_C_tabbox , "TabBox"},
+ {OPCODE_C_listbox , "ListBox"},
+ {OPCODE_C_actionlistbox , "ActionlistBox"},
+ {OPCODE_C_textbox , "TextBox"},
+ {OPCODE_C_actionbox , "ActionBox"},
+ {OPCODE_C_inputbox , "InputBox"},
+ {OPCODE_C_checkbox , "CheckBox"},
+ {OPCODE_C_datebox , "DateBox"},
+ {OPCODE_C_timerbox , "TimerBox"},
+ {OPCODE_C_popupbox , "PopupBox"},
+ {OPCODE_C_dialogbox , "DialogBox"},
+ {OPCODE_C_sliderbar , "SliderBar"},
+ {OPCODE_C_progressbar , "ProgressBar"},
+ {OPCODE_C_imagebox , "ImageBox"},
+ {OPCODE_C_iconbox , "IconBox"},
+ {OPCODE_C_AOMVbox , "AOMVBox"},
+ {OPCODE_C_telephonicbox , "TelephonicBox"},
+ {OPCODE_C_keyboard_context , "Keyboard_context"},
+ {OPCODE_C_AOMEL , "AOMEL"},
+ {OPCODE_C_AOM10 , "AOM10"},
+ {OPCODE_C_AOM40 , "AOM40"},
+ {OPCODE_C_idletimer , "IdleTimer"},
+ {OPCODE_C_telephonicboxitem , "TelephonicBoxItem"},
+ {OPCODE_C_bluetooth_device , "Bluetooth_device"},
+ {OPCODE_C_headerbox , "HeaderBox"},
+ {OPCODE_C_ime_context , "ime_context"},
+ {0, NULL}
};
-
-#define OPCODE_P_B_objectid 0
-#define OPCODE_P_B_ownership 1
-#define OPCODE_P_B_reset_mode 2
-#define OPCODE_P_B_mtu 3
-#define OPCODE_P_B_negative_ack 4
-#define OPCODE_P_B_type 5
-#define OPCODE_P_B_help_timeout 6
-#define OPCODE_P_B_longpress 7
-#define OPCODE_P_B_count 8
-#define OPCODE_P_B_eventmode 9
-#define OPCODE_P_B_numpad_ownership 10
-#define OPCODE_P_B_navigator_ownership 11
-#define OPCODE_P_B_telephony_ownership 12
-#define OPCODE_P_B_progkeys_ownership 13
-#define OPCODE_P_B_alphakeys_ownership 14
-#define OPCODE_P_B_numpad_eventmode 15
-#define OPCODE_P_B_onoff 16
-#define OPCODE_P_B_bpp 17
-#define OPCODE_P_B_w 18
-#define OPCODE_P_B_h 19
-#define OPCODE_P_B_contrast 20
-#define OPCODE_P_B_clearscreen 21
-#define OPCODE_P_B_year 24
-#define OPCODE_P_B_month 25
-#define OPCODE_P_B_day 26
-#define OPCODE_P_B_m 27
-#define OPCODE_P_B_s 28
-#define OPCODE_P_B_enable 29
-#define OPCODE_P_B_address 30
-#define OPCODE_P_B_port 31
-#define OPCODE_P_B_protocol 32
-#define OPCODE_P_B_name 33
-#define OPCODE_P_B_checked 34
-#define OPCODE_P_B_unchecked 35
-#define OPCODE_P_B_anchorid 36
-#define OPCODE_P_B_grid 37
-#define OPCODE_P_B_x 38
-#define OPCODE_P_B_y 39
-#define OPCODE_P_B_visible 40
-#define OPCODE_P_B_border 41
-#define OPCODE_P_B_fontid 42
-#define OPCODE_P_B_active 43
-#define OPCODE_P_B_halign 44
-#define OPCODE_P_B_valign 45
-#define OPCODE_P_B_size 46
-#define OPCODE_P_B_mode 47
-#define OPCODE_P_B_showevent 48
-#define OPCODE_P_B_showactive 49
-#define OPCODE_P_B_action_active 50
-#define OPCODE_P_B_action_count 51
-#define OPCODE_P_B_foreground 52
-#define OPCODE_P_B_background 53
-#define OPCODE_P_B_icon 54
-#define OPCODE_P_B_label 55
-#define OPCODE_P_B_value 56
-#define OPCODE_P_B_password 57
-#define OPCODE_P_B_cursor 58
-#define OPCODE_P_B_mask 59
-#define OPCODE_P_B_qos_ticket 60
-#define OPCODE_P_B_focus 61
-#define OPCODE_P_B_state 62
-#define OPCODE_P_B_format 63
-#define OPCODE_P_B_incdec 64
-#define OPCODE_P_B_value_notify 65
-#define OPCODE_P_B_timeout 66
-#define OPCODE_P_B_min 67
-#define OPCODE_P_B_max 68
-#define OPCODE_P_B_data 69
-#define OPCODE_P_B_custversion 70
-#define OPCODE_P_B_L10Nversion 71
-#define OPCODE_P_B_append 72
-#define OPCODE_P_B_shortpress 73
-#define OPCODE_P_B_autorepeat 74
-#define OPCODE_P_B_repetition 75
-#define OPCODE_P_B_vsplit 76
-#define OPCODE_P_B_accesskey 77
-#define OPCODE_P_B_realcount 78
-#define OPCODE_P_B_start 79
-#define OPCODE_P_B_modal 80
-#define OPCODE_P_B_session_timeout 81
-#define OPCODE_P_B_softkeys_ownership 82
-#define OPCODE_P_B_ringings_count 83
-#define OPCODE_P_B_cod 84
-#define OPCODE_P_B_bonded 85
-#define OPCODE_P_B_link_key 86
-#define OPCODE_P_B_pin 87
-#define OPCODE_P_B_term_type 88
-#define OPCODE_P_B_link_type 89
-#define OPCODE_P_B_circular 90
-#define OPCODE_P_B_autospread 91
-#define OPCODE_P_B_backlight_timeout 92
-#define OPCODE_P_B_screensaver_timeout 93
-#define OPCODE_P_B_cycling 94
-#define OPCODE_P_B_CS_idle_state 95
-#define OPCODE_P_B_PS_idle_state 96
-#define OPCODE_P_B_bonded_devices 97
-#define OPCODE_P_B_serialnum 98
-#define OPCODE_P_B_hardversion 99
-#define OPCODE_P_B_softversion 100
-#define OPCODE_P_B_rom_size 101
-#define OPCODE_P_B_ram_size 102
-#define OPCODE_P_B_reset_cause 103
-#define OPCODE_P_B_cycling_time 104
-#define OPCODE_P_B_inputborder 106
-#define OPCODE_P_B_disablelongpress 107
-#define OPCODE_P_B_all_icons_off 108
-#define OPCODE_P_B_all_labels_off 109
-#define OPCODE_P_B_widgets_size 110
-#define OPCODE_P_B_list_type 111
-#define OPCODE_P_B_frame_type 112
-#define OPCODE_P_B_bth_ringing 113
-#define OPCODE_P_B_URI 114
-#define OPCODE_P_B_fetch_timeout 115
-#define OPCODE_P_B_mask_subst 116
-#define OPCODE_P_B_use_customisation 117
-#define OPCODE_P_B_ADTTS_request 118
-#define OPCODE_P_B_AP_mac_notify 119
-#define OPCODE_P_B_page_active 120
-#define OPCODE_P_B_overwrite 121
-#define OPCODE_P_B_ime_lock 122
-#define OPCODE_P_B_method 123
-#define OPCODE_P_B_login 124
-#define OPCODE_P_B_binary_suffix 125
-#define OPCODE_P_B_binary_count 126
-#define OPCODE_P_B_SIPCversion 127
-#define OPCODE_P_A_dflt 128
-#define OPCODE_P_A_shift 129
-#define OPCODE_P_A_alt 130
-#define OPCODE_P_A_key_ownership 131
-#define OPCODE_P_A_key_eventmode 132
-#define OPCODE_P_A_value 133
-#define OPCODE_P_A_mode 134
-#define OPCODE_P_A_color 135
-#define OPCODE_P_A_type 136
-#define OPCODE_P_A_icon 137
-#define OPCODE_P_A_label 138
-#define OPCODE_P_A_ownership 139
-#define OPCODE_P_A_enable 140
-#define OPCODE_P_A_state 141
-#define OPCODE_P_A_name 142
-#define OPCODE_P_A_number 143
-#define OPCODE_P_A_action_icon 144
-#define OPCODE_P_A_action_label 145
-#define OPCODE_P_A_action_value 146
-#define OPCODE_P_A_today 147
-#define OPCODE_P_A_tomorrow 148
-#define OPCODE_P_A_action_key 149
-#define OPCODE_P_A_code 150
-#define OPCODE_P_A_data 151
-#define OPCODE_P_A_delay_max_handset 152
+static value_string_ext val_str_class_ext = VALUE_STRING_EXT_INIT(val_str_class);
+
+#define OPCODE_P_B_objectid 0
+#define OPCODE_P_B_ownership 1
+#define OPCODE_P_B_reset_mode 2
+#define OPCODE_P_B_mtu 3
+#define OPCODE_P_B_negative_ack 4
+#define OPCODE_P_B_type 5
+#define OPCODE_P_B_help_timeout 6
+#define OPCODE_P_B_longpress 7
+#define OPCODE_P_B_count 8
+#define OPCODE_P_B_eventmode 9
+#define OPCODE_P_B_numpad_ownership 10
+#define OPCODE_P_B_navigator_ownership 11
+#define OPCODE_P_B_telephony_ownership 12
+#define OPCODE_P_B_progkeys_ownership 13
+#define OPCODE_P_B_alphakeys_ownership 14
+#define OPCODE_P_B_numpad_eventmode 15
+#define OPCODE_P_B_onoff 16
+#define OPCODE_P_B_bpp 17
+#define OPCODE_P_B_w 18
+#define OPCODE_P_B_h 19
+#define OPCODE_P_B_contrast 20
+#define OPCODE_P_B_clearscreen 21
+#define OPCODE_P_B_year 24
+#define OPCODE_P_B_month 25
+#define OPCODE_P_B_day 26
+#define OPCODE_P_B_m 27
+#define OPCODE_P_B_s 28
+#define OPCODE_P_B_enable 29
+#define OPCODE_P_B_address 30
+#define OPCODE_P_B_port 31
+#define OPCODE_P_B_protocol 32
+#define OPCODE_P_B_name 33
+#define OPCODE_P_B_checked 34
+#define OPCODE_P_B_unchecked 35
+#define OPCODE_P_B_anchorid 36
+#define OPCODE_P_B_grid 37
+#define OPCODE_P_B_x 38
+#define OPCODE_P_B_y 39
+#define OPCODE_P_B_visible 40
+#define OPCODE_P_B_border 41
+#define OPCODE_P_B_fontid 42
+#define OPCODE_P_B_active 43
+#define OPCODE_P_B_halign 44
+#define OPCODE_P_B_valign 45
+#define OPCODE_P_B_size 46
+#define OPCODE_P_B_mode 47
+#define OPCODE_P_B_showevent 48
+#define OPCODE_P_B_showactive 49
+#define OPCODE_P_B_action_active 50
+#define OPCODE_P_B_action_count 51
+#define OPCODE_P_B_foreground 52
+#define OPCODE_P_B_background 53
+#define OPCODE_P_B_icon 54
+#define OPCODE_P_B_label 55
+#define OPCODE_P_B_value 56
+#define OPCODE_P_B_password 57
+#define OPCODE_P_B_cursor 58
+#define OPCODE_P_B_mask 59
+#define OPCODE_P_B_qos_ticket 60
+#define OPCODE_P_B_focus 61
+#define OPCODE_P_B_state 62
+#define OPCODE_P_B_format 63
+#define OPCODE_P_B_incdec 64
+#define OPCODE_P_B_value_notify 65
+#define OPCODE_P_B_timeout 66
+#define OPCODE_P_B_min 67
+#define OPCODE_P_B_max 68
+#define OPCODE_P_B_data 69
+#define OPCODE_P_B_custversion 70
+#define OPCODE_P_B_L10Nversion 71
+#define OPCODE_P_B_append 72
+#define OPCODE_P_B_shortpress 73
+#define OPCODE_P_B_autorepeat 74
+#define OPCODE_P_B_repetition 75
+#define OPCODE_P_B_vsplit 76
+#define OPCODE_P_B_accesskey 77
+#define OPCODE_P_B_realcount 78
+#define OPCODE_P_B_start 79
+#define OPCODE_P_B_modal 80
+#define OPCODE_P_B_session_timeout 81
+#define OPCODE_P_B_softkeys_ownership 82
+#define OPCODE_P_B_ringings_count 83
+#define OPCODE_P_B_cod 84
+#define OPCODE_P_B_bonded 85
+#define OPCODE_P_B_link_key 86
+#define OPCODE_P_B_pin 87
+#define OPCODE_P_B_term_type 88
+#define OPCODE_P_B_link_type 89
+#define OPCODE_P_B_circular 90
+#define OPCODE_P_B_autospread 91
+#define OPCODE_P_B_backlight_timeout 92
+#define OPCODE_P_B_screensaver_timeout 93
+#define OPCODE_P_B_cycling 94
+#define OPCODE_P_B_CS_idle_state 95
+#define OPCODE_P_B_PS_idle_state 96
+#define OPCODE_P_B_bonded_devices 97
+#define OPCODE_P_B_serialnum 98
+#define OPCODE_P_B_hardversion 99
+#define OPCODE_P_B_softversion 100
+#define OPCODE_P_B_rom_size 101
+#define OPCODE_P_B_ram_size 102
+#define OPCODE_P_B_reset_cause 103
+#define OPCODE_P_B_cycling_time 104
+#define OPCODE_P_B_inputborder 106
+#define OPCODE_P_B_disablelongpress 107
+#define OPCODE_P_B_all_icons_off 108
+#define OPCODE_P_B_all_labels_off 109
+#define OPCODE_P_B_widgets_size 110
+#define OPCODE_P_B_list_type 111
+#define OPCODE_P_B_frame_type 112
+#define OPCODE_P_B_bth_ringing 113
+#define OPCODE_P_B_URI 114
+#define OPCODE_P_B_fetch_timeout 115
+#define OPCODE_P_B_mask_subst 116
+#define OPCODE_P_B_use_customisation 117
+#define OPCODE_P_B_ADTTS_request 118
+#define OPCODE_P_B_AP_mac_notify 119
+#define OPCODE_P_B_page_active 120
+#define OPCODE_P_B_overwrite 121
+#define OPCODE_P_B_ime_lock 122
+#define OPCODE_P_B_method 123
+#define OPCODE_P_B_login 124
+#define OPCODE_P_B_binary_suffix 125
+#define OPCODE_P_B_binary_count 126
+#define OPCODE_P_B_SIPCversion 127
+#define OPCODE_P_A_dflt 128
+#define OPCODE_P_A_shift 129
+#define OPCODE_P_A_alt 130
+#define OPCODE_P_A_key_ownership 131
+#define OPCODE_P_A_key_eventmode 132
+#define OPCODE_P_A_value 133
+#define OPCODE_P_A_mode 134
+#define OPCODE_P_A_color 135
+#define OPCODE_P_A_type 136
+#define OPCODE_P_A_icon 137
+#define OPCODE_P_A_label 138
+#define OPCODE_P_A_ownership 139
+#define OPCODE_P_A_enable 140
+#define OPCODE_P_A_state 141
+#define OPCODE_P_A_name 142
+#define OPCODE_P_A_number 143
+#define OPCODE_P_A_action_icon 144
+#define OPCODE_P_A_action_label 145
+#define OPCODE_P_A_action_value 146
+#define OPCODE_P_A_today 147
+#define OPCODE_P_A_tomorrow 148
+#define OPCODE_P_A_action_key 149
+#define OPCODE_P_A_code 150
+#define OPCODE_P_A_data 151
+#define OPCODE_P_A_delay_max_handset 152
#define OPCODE_P_A_delay_max_handsfree 153
-#define OPCODE_P_A_delay_tx 154
-#define OPCODE_P_A_delay_rx 155
-#define OPCODE_P_A_pem_data 156
-#define OPCODE_P_A_serial_number 157
-#define OPCODE_P_A_owner_name 158
-#define OPCODE_P_A_issuer_name 159
-#define OPCODE_P_A_end_date 160
+#define OPCODE_P_A_delay_tx 154
+#define OPCODE_P_A_delay_rx 155
+#define OPCODE_P_A_pem_data 156
+#define OPCODE_P_A_serial_number 157
+#define OPCODE_P_A_owner_name 158
+#define OPCODE_P_A_issuer_name 159
+#define OPCODE_P_A_end_date 160
static const value_string val_str_props[] = {
- {OPCODE_P_B_objectid, "objectid"},
- {OPCODE_P_B_ownership, "ownership"},
- {OPCODE_P_B_reset_mode, "reset_mode"},
- {OPCODE_P_B_mtu, "mtu"},
- {OPCODE_P_B_negative_ack, "negative_ack"},
- {OPCODE_P_B_type, "type"},
- {OPCODE_P_B_help_timeout, "help_timeout"},
- {OPCODE_P_B_longpress, "longpress"},
- {OPCODE_P_B_count, "count"},
- {OPCODE_P_B_eventmode, "eventmode"},
- {OPCODE_P_B_numpad_ownership, "numpad_ownership"},
- {OPCODE_P_B_navigator_ownership, "navigator_ownership"},
- {OPCODE_P_B_telephony_ownership, "telephony_ownership"},
- {OPCODE_P_B_progkeys_ownership, "progkeys_ownership"},
- {OPCODE_P_B_alphakeys_ownership, "alphakeys_ownership"},
- {OPCODE_P_B_numpad_eventmode, "numpad_eventmode"},
- {OPCODE_P_B_onoff, "onoff"},
- {OPCODE_P_B_bpp, "bpp"},
- {OPCODE_P_B_w, "w"},
- {OPCODE_P_B_h, "h"},
- {OPCODE_P_B_contrast, "contrast"},
- {OPCODE_P_B_clearscreen, "clearscreen"},
- {OPCODE_P_B_year, "year"},
- {OPCODE_P_B_month, "month"},
- {OPCODE_P_B_day, "day"},
- {OPCODE_P_B_m, "m"},
- {OPCODE_P_B_s, "s"},
- {OPCODE_P_B_enable, "enable"},
- {OPCODE_P_B_address, "address"},
- {OPCODE_P_B_name, "name"},
- {OPCODE_P_B_anchorid, "anchorid"},
- {OPCODE_P_B_grid, "grid"},
- {OPCODE_P_B_x, "x"},
- {OPCODE_P_B_y, "y"},
- {OPCODE_P_B_visible, "visible"},
- {OPCODE_P_B_border, "border"},
- {OPCODE_P_B_fontid, "fontid"},
- {OPCODE_P_B_active, "active"},
- {OPCODE_P_B_halign, "halign"},
- {OPCODE_P_B_valign, "valign"},
- {OPCODE_P_B_size, "size"},
- {OPCODE_P_B_mode, "mode"},
- {OPCODE_P_B_showevent, "showevent"},
- {OPCODE_P_B_showactive, "showactive"},
- {OPCODE_P_B_icon, "icon"},
- {OPCODE_P_B_label, "label"},
- {OPCODE_P_B_value, "value"},
- {OPCODE_P_B_password, "password"},
- {OPCODE_P_B_cursor, "cursor"},
- {OPCODE_P_B_mask, "mask"},
- {OPCODE_P_B_qos_ticket, "qos_ticket"},
- {OPCODE_P_B_focus, "focus"},
- {OPCODE_P_B_state, "state"},
- {OPCODE_P_B_format, "format"},
- {OPCODE_P_B_incdec, "incdec"},
- {OPCODE_P_B_value_notify, "value_notify"},
- {OPCODE_P_B_timeout, "timeout"},
- {OPCODE_P_B_min, "min"},
- {OPCODE_P_B_max, "max"},
- {OPCODE_P_B_data, "data"},
- {OPCODE_P_B_custversion, "custversion"},
- {OPCODE_P_B_L10Nversion, "L10Nversion"},
- {OPCODE_P_B_append, "append"},
- {OPCODE_P_B_shortpress, "shortpress"},
- {OPCODE_P_B_autorepeat, "autorepeat"},
- {OPCODE_P_B_repetition, "repetition"},
- {OPCODE_P_B_vsplit, "vsplit"},
- {OPCODE_P_B_accesskey, "accesskey"},
- {OPCODE_P_B_realcount, "realcount"},
- {OPCODE_P_B_start, "start"},
- {OPCODE_P_B_modal, "modal"},
- {OPCODE_P_B_session_timeout, "session_timeout"},
- {OPCODE_P_B_softkeys_ownership, "softkeys_ownership"},
- {OPCODE_P_B_ringings_count, "ringings_count"},
- {OPCODE_P_B_cod, "cod"},
- {OPCODE_P_B_bonded, "bonded"},
- {OPCODE_P_B_link_key, "link_key"},
- {OPCODE_P_B_pin, "pin"},
- {OPCODE_P_B_term_type, "term_type"},
- {OPCODE_P_B_link_type, "link_type"},
- {OPCODE_P_B_circular, "circular"},
- {OPCODE_P_B_autospread, "autospread"},
- {OPCODE_P_B_backlight_timeout, "backlight_timeout"},
- {OPCODE_P_B_screensaver_timeout, "screensaver_timeout"},
- {OPCODE_P_B_cycling, "cycling"},
- {OPCODE_P_B_CS_idle_state, "CS_idle_state"},
- {OPCODE_P_B_PS_idle_state, "PS_idle_state"},
- {OPCODE_P_B_bonded_devices, "bonded_devices"},
- {OPCODE_P_B_serialnum, "serialnum"},
- {OPCODE_P_B_hardversion, "hardversion"},
- {OPCODE_P_B_softversion, "softversion"},
- {OPCODE_P_B_rom_size, "rom_size"},
- {OPCODE_P_B_ram_size, "ram_size"},
- {OPCODE_P_B_reset_cause, "reset_cause"},
- {OPCODE_P_B_cycling_time, "cycling_time"},
- {OPCODE_P_B_inputborder, "inputborder"},
- {OPCODE_P_B_disablelongpress, "disablelongpress"},
- {OPCODE_P_B_all_icons_off, "all_icons_off"},
- {OPCODE_P_B_all_labels_off, "all_labels_off"},
- {OPCODE_P_B_widgets_size, "widgets_size"},
- {OPCODE_P_B_list_type, "list_type"},
- {OPCODE_P_B_frame_type, "frame_type"},
- {OPCODE_P_B_bth_ringing, "bth_ringing"},
- {OPCODE_P_B_URI, "URI"},
- {OPCODE_P_B_fetch_timeout, "fetch_timeout"},
- {OPCODE_P_B_mask_subst, "mask_subst"},
- {OPCODE_P_B_use_customisation, "use_customisation"},
- {OPCODE_P_B_page_active, "page_active"},
- {OPCODE_P_B_overwrite, "overwrite"},
- {OPCODE_P_B_ime_lock, "ime_lock"},
- {OPCODE_P_B_method, "method"},
- {OPCODE_P_B_login, "login"},
- {OPCODE_P_B_binary_suffix, "binary_suffix"},
- {OPCODE_P_B_binary_count, "binary_count"},
- {OPCODE_P_B_SIPCversion, "SIPCversion"},
- {OPCODE_P_A_key_ownership, "key_ownership"},
- {OPCODE_P_A_key_eventmode, "key_eventmode"},
- {OPCODE_P_A_value, "value"},
- {OPCODE_P_A_mode, "mode"},
- {OPCODE_P_A_color, "color"},
- {OPCODE_P_A_type, "type"},
- {OPCODE_P_A_icon, "icon"},
- {OPCODE_P_A_label, "label"},
- {OPCODE_P_A_ownership, "ownership"},
- {OPCODE_P_A_enable, "enable"},
- {OPCODE_P_A_state, "state"},
- {OPCODE_P_A_name, "name"},
- {OPCODE_P_A_number, "number"},
- {OPCODE_P_A_action_icon, "action_icon"},
- {OPCODE_P_A_action_label, "action_label"},
- {OPCODE_P_A_action_value, "action_value"},
- {OPCODE_P_A_today, "today"},
- {OPCODE_P_A_tomorrow, "tomorrow"},
- {OPCODE_P_A_code, "code"},
- {OPCODE_P_A_data, "data"},
- {OPCODE_P_A_delay_max_handset, "delay_max_handset"},
- {OPCODE_P_A_delay_max_handsfree, "delay_max_handsfree"},
- {OPCODE_P_A_delay_tx, "delay_tx"},
- {OPCODE_P_A_delay_rx, "delay_rx"},
- {OPCODE_P_A_pem_data, "pem_data"},
- {OPCODE_P_A_serial_number, "serial_number"},
- {OPCODE_P_A_owner_name, "owner_name"},
- {OPCODE_P_A_issuer_name, "issuer_name"},
- {OPCODE_P_A_end_date, "end_date"},
- {0, NULL}
+ {OPCODE_P_B_objectid , "objectid"},
+ {OPCODE_P_B_ownership , "ownership"},
+ {OPCODE_P_B_reset_mode , "reset_mode"},
+ {OPCODE_P_B_mtu , "mtu"},
+ {OPCODE_P_B_negative_ack , "negative_ack"},
+ {OPCODE_P_B_type , "type"},
+ {OPCODE_P_B_help_timeout , "help_timeout"},
+ {OPCODE_P_B_longpress , "longpress"},
+ {OPCODE_P_B_count , "count"},
+ {OPCODE_P_B_eventmode , "eventmode"},
+ {OPCODE_P_B_numpad_ownership , "numpad_ownership"},
+ {OPCODE_P_B_navigator_ownership , "navigator_ownership"},
+ {OPCODE_P_B_telephony_ownership , "telephony_ownership"},
+ {OPCODE_P_B_progkeys_ownership , "progkeys_ownership"},
+ {OPCODE_P_B_alphakeys_ownership , "alphakeys_ownership"},
+ {OPCODE_P_B_numpad_eventmode , "numpad_eventmode"},
+ {OPCODE_P_B_onoff , "onoff"},
+ {OPCODE_P_B_bpp , "bpp"},
+ {OPCODE_P_B_w , "w"},
+ {OPCODE_P_B_h , "h"},
+ {OPCODE_P_B_contrast , "contrast"},
+ {OPCODE_P_B_clearscreen , "clearscreen"},
+ {OPCODE_P_B_year , "year"},
+ {OPCODE_P_B_month , "month"},
+ {OPCODE_P_B_day , "day"},
+ {OPCODE_P_B_m , "m"},
+ {OPCODE_P_B_s , "s"},
+ {OPCODE_P_B_enable , "enable"},
+ {OPCODE_P_B_address , "address"},
+ {OPCODE_P_B_name , "name"},
+ {OPCODE_P_B_anchorid , "anchorid"},
+ {OPCODE_P_B_grid , "grid"},
+ {OPCODE_P_B_x , "x"},
+ {OPCODE_P_B_y , "y"},
+ {OPCODE_P_B_visible , "visible"},
+ {OPCODE_P_B_border , "border"},
+ {OPCODE_P_B_fontid , "fontid"},
+ {OPCODE_P_B_active , "active"},
+ {OPCODE_P_B_halign , "halign"},
+ {OPCODE_P_B_valign , "valign"},
+ {OPCODE_P_B_size , "size"},
+ {OPCODE_P_B_mode , "mode"},
+ {OPCODE_P_B_showevent , "showevent"},
+ {OPCODE_P_B_showactive , "showactive"},
+ {OPCODE_P_B_icon , "icon"},
+ {OPCODE_P_B_label , "label"},
+ {OPCODE_P_B_value , "value"},
+ {OPCODE_P_B_password , "password"},
+ {OPCODE_P_B_cursor , "cursor"},
+ {OPCODE_P_B_mask , "mask"},
+ {OPCODE_P_B_qos_ticket , "qos_ticket"},
+ {OPCODE_P_B_focus , "focus"},
+ {OPCODE_P_B_state , "state"},
+ {OPCODE_P_B_format , "format"},
+ {OPCODE_P_B_incdec , "incdec"},
+ {OPCODE_P_B_value_notify , "value_notify"},
+ {OPCODE_P_B_timeout , "timeout"},
+ {OPCODE_P_B_min , "min"},
+ {OPCODE_P_B_max , "max"},
+ {OPCODE_P_B_data , "data"},
+ {OPCODE_P_B_custversion , "custversion"},
+ {OPCODE_P_B_L10Nversion , "L10Nversion"},
+ {OPCODE_P_B_append , "append"},
+ {OPCODE_P_B_shortpress , "shortpress"},
+ {OPCODE_P_B_autorepeat , "autorepeat"},
+ {OPCODE_P_B_repetition , "repetition"},
+ {OPCODE_P_B_vsplit , "vsplit"},
+ {OPCODE_P_B_accesskey , "accesskey"},
+ {OPCODE_P_B_realcount , "realcount"},
+ {OPCODE_P_B_start , "start"},
+ {OPCODE_P_B_modal , "modal"},
+ {OPCODE_P_B_session_timeout , "session_timeout"},
+ {OPCODE_P_B_softkeys_ownership , "softkeys_ownership"},
+ {OPCODE_P_B_ringings_count , "ringings_count"},
+ {OPCODE_P_B_cod , "cod"},
+ {OPCODE_P_B_bonded , "bonded"},
+ {OPCODE_P_B_link_key , "link_key"},
+ {OPCODE_P_B_pin , "pin"},
+ {OPCODE_P_B_term_type , "term_type"},
+ {OPCODE_P_B_link_type , "link_type"},
+ {OPCODE_P_B_circular , "circular"},
+ {OPCODE_P_B_autospread , "autospread"},
+ {OPCODE_P_B_backlight_timeout , "backlight_timeout"},
+ {OPCODE_P_B_screensaver_timeout , "screensaver_timeout"},
+ {OPCODE_P_B_cycling , "cycling"},
+ {OPCODE_P_B_CS_idle_state , "CS_idle_state"},
+ {OPCODE_P_B_PS_idle_state , "PS_idle_state"},
+ {OPCODE_P_B_bonded_devices , "bonded_devices"},
+ {OPCODE_P_B_serialnum , "serialnum"},
+ {OPCODE_P_B_hardversion , "hardversion"},
+ {OPCODE_P_B_softversion , "softversion"},
+ {OPCODE_P_B_rom_size , "rom_size"},
+ {OPCODE_P_B_ram_size , "ram_size"},
+ {OPCODE_P_B_reset_cause , "reset_cause"},
+ {OPCODE_P_B_cycling_time , "cycling_time"},
+ {OPCODE_P_B_inputborder , "inputborder"},
+ {OPCODE_P_B_disablelongpress , "disablelongpress"},
+ {OPCODE_P_B_all_icons_off , "all_icons_off"},
+ {OPCODE_P_B_all_labels_off , "all_labels_off"},
+ {OPCODE_P_B_widgets_size , "widgets_size"},
+ {OPCODE_P_B_list_type , "list_type"},
+ {OPCODE_P_B_frame_type , "frame_type"},
+ {OPCODE_P_B_bth_ringing , "bth_ringing"},
+ {OPCODE_P_B_URI , "URI"},
+ {OPCODE_P_B_fetch_timeout , "fetch_timeout"},
+ {OPCODE_P_B_mask_subst , "mask_subst"},
+ {OPCODE_P_B_use_customisation , "use_customisation"},
+ {OPCODE_P_B_page_active , "page_active"},
+ {OPCODE_P_B_overwrite , "overwrite"},
+ {OPCODE_P_B_ime_lock , "ime_lock"},
+ {OPCODE_P_B_method , "method"},
+ {OPCODE_P_B_login , "login"},
+ {OPCODE_P_B_binary_suffix , "binary_suffix"},
+ {OPCODE_P_B_binary_count , "binary_count"},
+ {OPCODE_P_B_SIPCversion , "SIPCversion"},
+ {OPCODE_P_A_key_ownership , "key_ownership"},
+ {OPCODE_P_A_key_eventmode , "key_eventmode"},
+ {OPCODE_P_A_value , "value"},
+ {OPCODE_P_A_mode , "mode"},
+ {OPCODE_P_A_color , "color"},
+ {OPCODE_P_A_type , "type"},
+ {OPCODE_P_A_icon , "icon"},
+ {OPCODE_P_A_label , "label"},
+ {OPCODE_P_A_ownership , "ownership"},
+ {OPCODE_P_A_enable , "enable"},
+ {OPCODE_P_A_state , "state"},
+ {OPCODE_P_A_name , "name"},
+ {OPCODE_P_A_number , "number"},
+ {OPCODE_P_A_action_icon , "action_icon"},
+ {OPCODE_P_A_action_label , "action_label"},
+ {OPCODE_P_A_action_value , "action_value"},
+ {OPCODE_P_A_today , "today"},
+ {OPCODE_P_A_tomorrow , "tomorrow"},
+ {OPCODE_P_A_code , "code"},
+ {OPCODE_P_A_data , "data"},
+ {OPCODE_P_A_delay_max_handset , "delay_max_handset"},
+ {OPCODE_P_A_delay_max_handsfree , "delay_max_handsfree"},
+ {OPCODE_P_A_delay_tx , "delay_tx"},
+ {OPCODE_P_A_delay_rx , "delay_rx"},
+ {OPCODE_P_A_pem_data , "pem_data"},
+ {OPCODE_P_A_serial_number , "serial_number"},
+ {OPCODE_P_A_owner_name , "owner_name"},
+ {OPCODE_P_A_issuer_name , "issuer_name"},
+ {OPCODE_P_A_end_date , "end_date"},
+ {0, NULL}
};
-
-#define OPCODE_EVT_CONTEXT_SWITCH 0
-#define OPCODE_EVT_RESET 1
-#define OPCODE_EVT_KEY_PRESS 2
-#define OPCODE_EVT_KEY_RELEASE 3
-#define OPCODE_EVT_KEY_SHORTPRESS 4
-#define OPCODE_EVT_KEY_LONGPRESS 5
-#define OPCODE_EVT_ONHOOK 6
-#define OPCODE_EVT_OFFHOOK 7
-#define OPCODE_EVT_HELP 8
-#define OPCODE_EVT_WIDGETS_GC 9
-#define OPCODE_EVT_ERROR_PROTOCOL 10
-#define OPCODE_EVT_ERROR_CREATE 11
-#define OPCODE_EVT_ERROR_DELETE 12
-#define OPCODE_EVT_ERROR_SET_PROPERTY 13
-#define OPCODE_EVT_ERROR_GET_PROPERTY 14
-#define OPCODE_EVT_SUCCESS_CREATE 15
-#define OPCODE_EVT_SUCCESS_DELETE 16
-#define OPCODE_EVT_SUCCESS_SET_PROPERTY 17
-#define OPCODE_EVT_ERROR_INSERT_ITEM 18
-#define OPCODE_EVT_ERROR_DELETE_ITEM 19
-#define OPCODE_EVT_SUCCESS_INSERT_ITEM 20
-#define OPCODE_EVT_DEVICE_PRESENCE 21
-#define OPCODE_EVT_KEY_LINE 22
-#define OPCODE_EVT_SUCCESS_DELETE_ITEM 23
-#define OPCODE_EVT_BT_BONDING_RESULT 24
-#define OPCODE_EVT_BT_KEY_SHORTPRESS 25
-#define OPCODE_EVT_BT_KEY_LONGPRESS 26
-#define OPCODE_EVT_BT_KEY_VERYLONGPRESS 27
-#define OPCODE_EVT_LOCAL_APPLICATION 28
-#define OPCODE_EVT_WARNING_CREATE 29
-#define OPCODE_EVT_WARNING_SET_PROPERTY 30
-#define OPCODE_EVT_ARP_SPOOFING 31
-#define OPCODE_EVT_CHAR_NOT_FOUND 32
-#define OPCODE_EVT_CHAR_BAD_LENGTH 33
-#define OPCODE_EVT_QOS_TICKET 34
-#define OPCODE_EVT_UA3_ERROR 35
-#define OPCODE_EVT_TABBOX 128
-#define OPCODE_EVT_LISTBOX 129
-#define OPCODE_EVT_LISTBOX_FIRST 130
-#define OPCODE_EVT_LISTBOX_LAST 131
-#define OPCODE_EVT_ACTIONLISTBOX 132
-#define OPCODE_EVT_ACTIONBOX 133
-#define OPCODE_EVT_INPUTBOX 134
-#define OPCODE_EVT_INPUTBOX_FOCUS_LOST 135
-#define OPCODE_EVT_CHECKBOX 136
-#define OPCODE_EVT_TIMERBOX 137
-#define OPCODE_EVT_POPUPBOX_TIMEOUT 138
-#define OPCODE_EVT_DIALOGBOX 139
-#define OPCODE_EVT_SLIDERBAR 140
-#define OPCODE_EVT_PROGRESSBAR 141
-#define OPCODE_EVT_AOMVBOX 142
-#define OPCODE_EVT_TELEPHONICBOX_FOCUS 143
-#define OPCODE_EVT_AOM_INSERTED 144
-#define OPCODE_EVT_AOM_REMOVED 145
-#define OPCODE_EVT_AOM_KEY_PRESS 146
-#define OPCODE_EVT_IDLETIMER 147
-#define OPCODE_EVT_GET_PROPERTY_RESULT 148
-#define OPCODE_EVT_AOM_KEY_RELEASE 149
-#define OPCODE_EVT_POPUPBOX_DISMISSED 150
-#define OPCODE_EVT_DIALOGBOX_TIMEOUT 151
-#define OPCODE_EVT_DIALOGBOX_DISMISSED 152
-#define OPCODE_EVT_BT_BONDED_DEVICE 153
-#define OPCODE_EVT_BT_INQUIRY_RESULT 154
-#define OPCODE_EVT_BT_NAME_DISCOVERY 155
-#define OPCODE_EVT_IME_REMOTEOPEN 156
-#define OPCODE_EVT_BT_BATTERY 158
-#define OPCODE_EVT_IME_LIST 159
-#define OPCODE_EVT_IME_CHANGE 160
-#define OPCODE_EVT_IME_OPEN 161
-#define OPCODE_EVT_TELEPHONICBOX_EVENT 162
-#define OPCODE_EVT_ACTLISTBOX_TIMEOUT 163
+static value_string_ext val_str_props_ext = VALUE_STRING_EXT_INIT(val_str_props);
+
+#define OPCODE_EVT_CONTEXT_SWITCH 0
+#define OPCODE_EVT_RESET 1
+#define OPCODE_EVT_KEY_PRESS 2
+#define OPCODE_EVT_KEY_RELEASE 3
+#define OPCODE_EVT_KEY_SHORTPRESS 4
+#define OPCODE_EVT_KEY_LONGPRESS 5
+#define OPCODE_EVT_ONHOOK 6
+#define OPCODE_EVT_OFFHOOK 7
+#define OPCODE_EVT_HELP 8
+#define OPCODE_EVT_WIDGETS_GC 9
+#define OPCODE_EVT_ERROR_PROTOCOL 10
+#define OPCODE_EVT_ERROR_CREATE 11
+#define OPCODE_EVT_ERROR_DELETE 12
+#define OPCODE_EVT_ERROR_SET_PROPERTY 13
+#define OPCODE_EVT_ERROR_GET_PROPERTY 14
+#define OPCODE_EVT_SUCCESS_CREATE 15
+#define OPCODE_EVT_SUCCESS_DELETE 16
+#define OPCODE_EVT_SUCCESS_SET_PROPERTY 17
+#define OPCODE_EVT_ERROR_INSERT_ITEM 18
+#define OPCODE_EVT_ERROR_DELETE_ITEM 19
+#define OPCODE_EVT_SUCCESS_INSERT_ITEM 20
+#define OPCODE_EVT_DEVICE_PRESENCE 21
+#define OPCODE_EVT_KEY_LINE 22
+#define OPCODE_EVT_SUCCESS_DELETE_ITEM 23
+#define OPCODE_EVT_BT_BONDING_RESULT 24
+#define OPCODE_EVT_BT_KEY_SHORTPRESS 25
+#define OPCODE_EVT_BT_KEY_LONGPRESS 26
+#define OPCODE_EVT_BT_KEY_VERYLONGPRESS 27
+#define OPCODE_EVT_LOCAL_APPLICATION 28
+#define OPCODE_EVT_WARNING_CREATE 29
+#define OPCODE_EVT_WARNING_SET_PROPERTY 30
+#define OPCODE_EVT_ARP_SPOOFING 31
+#define OPCODE_EVT_CHAR_NOT_FOUND 32
+#define OPCODE_EVT_CHAR_BAD_LENGTH 33
+#define OPCODE_EVT_QOS_TICKET 34
+#define OPCODE_EVT_UA3_ERROR 35
+#define OPCODE_EVT_TABBOX 128
+#define OPCODE_EVT_LISTBOX 129
+#define OPCODE_EVT_LISTBOX_FIRST 130
+#define OPCODE_EVT_LISTBOX_LAST 131
+#define OPCODE_EVT_ACTIONLISTBOX 132
+#define OPCODE_EVT_ACTIONBOX 133
+#define OPCODE_EVT_INPUTBOX 134
+#define OPCODE_EVT_INPUTBOX_FOCUS_LOST 135
+#define OPCODE_EVT_CHECKBOX 136
+#define OPCODE_EVT_TIMERBOX 137
+#define OPCODE_EVT_POPUPBOX_TIMEOUT 138
+#define OPCODE_EVT_DIALOGBOX 139
+#define OPCODE_EVT_SLIDERBAR 140
+#define OPCODE_EVT_PROGRESSBAR 141
+#define OPCODE_EVT_AOMVBOX 142
+#define OPCODE_EVT_TELEPHONICBOX_FOCUS 143
+#define OPCODE_EVT_AOM_INSERTED 144
+#define OPCODE_EVT_AOM_REMOVED 145
+#define OPCODE_EVT_AOM_KEY_PRESS 146
+#define OPCODE_EVT_IDLETIMER 147
+#define OPCODE_EVT_GET_PROPERTY_RESULT 148
+#define OPCODE_EVT_AOM_KEY_RELEASE 149
+#define OPCODE_EVT_POPUPBOX_DISMISSED 150
+#define OPCODE_EVT_DIALOGBOX_TIMEOUT 151
+#define OPCODE_EVT_DIALOGBOX_DISMISSED 152
+#define OPCODE_EVT_BT_BONDED_DEVICE 153
+#define OPCODE_EVT_BT_INQUIRY_RESULT 154
+#define OPCODE_EVT_BT_NAME_DISCOVERY 155
+#define OPCODE_EVT_IME_REMOTEOPEN 156
+#define OPCODE_EVT_BT_BATTERY 158
+#define OPCODE_EVT_IME_LIST 159
+#define OPCODE_EVT_IME_CHANGE 160
+#define OPCODE_EVT_IME_OPEN 161
+#define OPCODE_EVT_TELEPHONICBOX_EVENT 162
+#define OPCODE_EVT_ACTLISTBOX_TIMEOUT 163
#define OPCODE_EVT_ACTLISTBOX_DISMISSED 164
-#define OPCODE_EVT_ADTTS_RESPONSE 165
-#define OPCODE_EVT_AP_MAC 166
+#define OPCODE_EVT_ADTTS_RESPONSE 165
+#define OPCODE_EVT_AP_MAC 166
static const value_string val_str_event[] = {
- {OPCODE_EVT_CONTEXT_SWITCH, "EVT_CONTEXT_SWITCH"},
- {OPCODE_EVT_RESET, "EVT_RESET"},
- {OPCODE_EVT_KEY_PRESS, "EVT_KEY_PRESS"},
- {OPCODE_EVT_KEY_RELEASE, "EVT_KEY_RELEASE"},
- {OPCODE_EVT_KEY_SHORTPRESS, "EVT_KEY_SHORTPRESS"},
- {OPCODE_EVT_KEY_LONGPRESS, "EVT_KEY_LONGPRESS"},
- {OPCODE_EVT_ONHOOK, "EVT_ONHOOK"},
- {OPCODE_EVT_OFFHOOK, "EVT_OFFHOOK"},
- {OPCODE_EVT_HELP, "EVT_HELP"},
- {OPCODE_EVT_WIDGETS_GC, "EVT_WIDGETS_GC"},
- {OPCODE_EVT_ERROR_PROTOCOL, "EVT_ERROR_PROTOCOL"},
- {OPCODE_EVT_ERROR_CREATE, "EVT_ERROR_CREATE"},
- {OPCODE_EVT_ERROR_DELETE, "EVT_ERROR_DELETE"},
- {OPCODE_EVT_ERROR_SET_PROPERTY, "EVT_ERROR_SET_PROPERTY"},
- {OPCODE_EVT_ERROR_GET_PROPERTY, "EVT_ERROR_GET_PROPERTY"},
- {OPCODE_EVT_SUCCESS_CREATE, "EVT_SUCCESS_CREATE"},
- {OPCODE_EVT_SUCCESS_DELETE, "EVT_SUCCESS_DELETE"},
- {OPCODE_EVT_SUCCESS_SET_PROPERTY, "EVT_SUCCESS_SET_PROPERTY"},
- {OPCODE_EVT_ERROR_INSERT_ITEM, "EVT_ERROR_INSERT_ITEM"},
- {OPCODE_EVT_ERROR_DELETE_ITEM, "EVT_ERROR_DELETE_ITEM"},
- {OPCODE_EVT_SUCCESS_INSERT_ITEM, "EVT_SUCCESS_INSERT_ITEM"},
- {OPCODE_EVT_DEVICE_PRESENCE, "EVT_DEVICE_PRESENCE"},
- {OPCODE_EVT_KEY_LINE, "EVT_KEY_LINE"},
- {OPCODE_EVT_SUCCESS_DELETE_ITEM, "EVT_SUCCESS_DELETE_ITEM"},
- {OPCODE_EVT_BT_BONDING_RESULT, "EVT_BT_BONDING_RESULT"},
- {OPCODE_EVT_BT_KEY_SHORTPRESS, "EVT_BT_KEY_SHORTPRESS"},
- {OPCODE_EVT_BT_KEY_LONGPRESS, "EVT_BT_KEY_LONGPRESS"},
- {OPCODE_EVT_BT_KEY_VERYLONGPRESS, "EVT_BT_KEY_VERYLONGPRESS"},
- {OPCODE_EVT_LOCAL_APPLICATION, "EVT_LOCAL_APPLICATION"},
- {OPCODE_EVT_WARNING_CREATE, "EVT_WARNING_CREATE"},
- {OPCODE_EVT_WARNING_SET_PROPERTY, "EVT_WARNING_SET_PROPERTY"},
- {OPCODE_EVT_ARP_SPOOFING, "EVT_ARP_SPOOFING"},
- {OPCODE_EVT_CHAR_NOT_FOUND, "EVT_CHAR_NOT_FOUND"},
- {OPCODE_EVT_QOS_TICKET, "EVT_QOS_TICKET"},
- {OPCODE_EVT_UA3_ERROR, "EVT_UA3_ERROR"},
- {OPCODE_EVT_TABBOX, "EVT_TABBOX"},
- {OPCODE_EVT_LISTBOX, "EVT_LISTBOX"},
- {OPCODE_EVT_LISTBOX_FIRST, "EVT_LISTBOX_FIRST"},
- {OPCODE_EVT_LISTBOX_LAST, "EVT_LISTBOX_LAST"},
- {OPCODE_EVT_ACTIONLISTBOX, "EVT_ACTIONLISTBOX"},
- {OPCODE_EVT_ACTIONBOX, "EVT_ACTIONBOX"},
- {OPCODE_EVT_INPUTBOX, "EVT_INPUTBOX"},
- {OPCODE_EVT_INPUTBOX_FOCUS_LOST, "EVT_INPUTBOX_FOCUS_LOST"},
- {OPCODE_EVT_CHECKBOX, "EVT_CHECKBOX"},
- {OPCODE_EVT_TIMERBOX, "EVT_TIMERBOX"},
- {OPCODE_EVT_POPUPBOX_TIMEOUT, "EVT_POPUPBOX_TIMEOUT"},
- {OPCODE_EVT_DIALOGBOX, "EVT_DIALOGBOX"},
- {OPCODE_EVT_SLIDERBAR, "EVT_SLIDERBAR"},
- {OPCODE_EVT_PROGRESSBAR, "EVT_PROGRESSBAR"},
- {OPCODE_EVT_AOMVBOX, "EVT_AOMVBOX"},
- {OPCODE_EVT_TELEPHONICBOX_FOCUS, "EVT_TELEPHONICBOX_FOCUS"},
- {OPCODE_EVT_AOM_INSERTED, "EVT_AOM_INSERTED"},
- {OPCODE_EVT_AOM_REMOVED, "EVT_AOM_REMOVED"},
- {OPCODE_EVT_AOM_KEY_PRESS, "EVT_AOM_KEY_PRESS"},
- {OPCODE_EVT_IDLETIMER, "EVT_IDLETIMER"},
- {OPCODE_EVT_GET_PROPERTY_RESULT, "EVT_GET_PROPERTY_RESULT"},
- {OPCODE_EVT_AOM_KEY_RELEASE, "EVT_AOM_KEY_RELEASE"},
- {OPCODE_EVT_POPUPBOX_DISMISSED, "EVT_POPUPBOX_DISMISSED"},
- {OPCODE_EVT_DIALOGBOX_TIMEOUT, "EVT_DIALOGBOX_TIMEOUT"},
- {OPCODE_EVT_DIALOGBOX_DISMISSED, "EVT_DIALOGBOX_DISMISSED"},
- {OPCODE_EVT_BT_BONDED_DEVICE, "EVT_BT_BONDED_DEVICE"},
- {OPCODE_EVT_BT_INQUIRY_RESULT, "EVT_BT_INQUIRY_RESULT"},
- {OPCODE_EVT_BT_NAME_DISCOVERY, "EVT_BT_NAME_DISCOVERY"},
- {OPCODE_EVT_IME_REMOTEOPEN, "EVT_IME_REMOTEOPEN"},
- {OPCODE_EVT_BT_BATTERY, "EVT_BT_BATTERY"},
- {OPCODE_EVT_IME_LIST, "EVT_IME_LIST"},
- {OPCODE_EVT_IME_CHANGE, "EVT_IME_CHANGE"},
- {OPCODE_EVT_IME_OPEN, "EVT_IME_OPEN"},
- {OPCODE_EVT_TELEPHONICBOX_EVENT, "EVT_TELEPHONICBOX_EVENT"},
- {OPCODE_EVT_ACTLISTBOX_TIMEOUT, "EVT_ACTLISTBOX_TIMEOUT"},
- {OPCODE_EVT_ACTLISTBOX_DISMISSED, "EVT_ACTLISTBOX_DISMISSED"},
- {0, NULL}
+ {OPCODE_EVT_CONTEXT_SWITCH , "EVT_CONTEXT_SWITCH"},
+ {OPCODE_EVT_RESET , "EVT_RESET"},
+ {OPCODE_EVT_KEY_PRESS , "EVT_KEY_PRESS"},
+ {OPCODE_EVT_KEY_RELEASE , "EVT_KEY_RELEASE"},
+ {OPCODE_EVT_KEY_SHORTPRESS , "EVT_KEY_SHORTPRESS"},
+ {OPCODE_EVT_KEY_LONGPRESS , "EVT_KEY_LONGPRESS"},
+ {OPCODE_EVT_ONHOOK , "EVT_ONHOOK"},
+ {OPCODE_EVT_OFFHOOK , "EVT_OFFHOOK"},
+ {OPCODE_EVT_HELP , "EVT_HELP"},
+ {OPCODE_EVT_WIDGETS_GC , "EVT_WIDGETS_GC"},
+ {OPCODE_EVT_ERROR_PROTOCOL , "EVT_ERROR_PROTOCOL"},
+ {OPCODE_EVT_ERROR_CREATE , "EVT_ERROR_CREATE"},
+ {OPCODE_EVT_ERROR_DELETE , "EVT_ERROR_DELETE"},
+ {OPCODE_EVT_ERROR_SET_PROPERTY , "EVT_ERROR_SET_PROPERTY"},
+ {OPCODE_EVT_ERROR_GET_PROPERTY , "EVT_ERROR_GET_PROPERTY"},
+ {OPCODE_EVT_SUCCESS_CREATE , "EVT_SUCCESS_CREATE"},
+ {OPCODE_EVT_SUCCESS_DELETE , "EVT_SUCCESS_DELETE"},
+ {OPCODE_EVT_SUCCESS_SET_PROPERTY , "EVT_SUCCESS_SET_PROPERTY"},
+ {OPCODE_EVT_ERROR_INSERT_ITEM , "EVT_ERROR_INSERT_ITEM"},
+ {OPCODE_EVT_ERROR_DELETE_ITEM , "EVT_ERROR_DELETE_ITEM"},
+ {OPCODE_EVT_SUCCESS_INSERT_ITEM , "EVT_SUCCESS_INSERT_ITEM"},
+ {OPCODE_EVT_DEVICE_PRESENCE , "EVT_DEVICE_PRESENCE"},
+ {OPCODE_EVT_KEY_LINE , "EVT_KEY_LINE"},
+ {OPCODE_EVT_SUCCESS_DELETE_ITEM , "EVT_SUCCESS_DELETE_ITEM"},
+ {OPCODE_EVT_BT_BONDING_RESULT , "EVT_BT_BONDING_RESULT"},
+ {OPCODE_EVT_BT_KEY_SHORTPRESS , "EVT_BT_KEY_SHORTPRESS"},
+ {OPCODE_EVT_BT_KEY_LONGPRESS , "EVT_BT_KEY_LONGPRESS"},
+ {OPCODE_EVT_BT_KEY_VERYLONGPRESS , "EVT_BT_KEY_VERYLONGPRESS"},
+ {OPCODE_EVT_LOCAL_APPLICATION , "EVT_LOCAL_APPLICATION"},
+ {OPCODE_EVT_WARNING_CREATE , "EVT_WARNING_CREATE"},
+ {OPCODE_EVT_WARNING_SET_PROPERTY , "EVT_WARNING_SET_PROPERTY"},
+ {OPCODE_EVT_ARP_SPOOFING , "EVT_ARP_SPOOFING"},
+ {OPCODE_EVT_CHAR_NOT_FOUND , "EVT_CHAR_NOT_FOUND"},
+ {OPCODE_EVT_QOS_TICKET , "EVT_QOS_TICKET"},
+ {OPCODE_EVT_UA3_ERROR , "EVT_UA3_ERROR"},
+ {OPCODE_EVT_TABBOX , "EVT_TABBOX"},
+ {OPCODE_EVT_LISTBOX , "EVT_LISTBOX"},
+ {OPCODE_EVT_LISTBOX_FIRST , "EVT_LISTBOX_FIRST"},
+ {OPCODE_EVT_LISTBOX_LAST , "EVT_LISTBOX_LAST"},
+ {OPCODE_EVT_ACTIONLISTBOX , "EVT_ACTIONLISTBOX"},
+ {OPCODE_EVT_ACTIONBOX , "EVT_ACTIONBOX"},
+ {OPCODE_EVT_INPUTBOX , "EVT_INPUTBOX"},
+ {OPCODE_EVT_INPUTBOX_FOCUS_LOST , "EVT_INPUTBOX_FOCUS_LOST"},
+ {OPCODE_EVT_CHECKBOX , "EVT_CHECKBOX"},
+ {OPCODE_EVT_TIMERBOX , "EVT_TIMERBOX"},
+ {OPCODE_EVT_POPUPBOX_TIMEOUT , "EVT_POPUPBOX_TIMEOUT"},
+ {OPCODE_EVT_DIALOGBOX , "EVT_DIALOGBOX"},
+ {OPCODE_EVT_SLIDERBAR , "EVT_SLIDERBAR"},
+ {OPCODE_EVT_PROGRESSBAR , "EVT_PROGRESSBAR"},
+ {OPCODE_EVT_AOMVBOX , "EVT_AOMVBOX"},
+ {OPCODE_EVT_TELEPHONICBOX_FOCUS , "EVT_TELEPHONICBOX_FOCUS"},
+ {OPCODE_EVT_AOM_INSERTED , "EVT_AOM_INSERTED"},
+ {OPCODE_EVT_AOM_REMOVED , "EVT_AOM_REMOVED"},
+ {OPCODE_EVT_AOM_KEY_PRESS , "EVT_AOM_KEY_PRESS"},
+ {OPCODE_EVT_IDLETIMER , "EVT_IDLETIMER"},
+ {OPCODE_EVT_GET_PROPERTY_RESULT , "EVT_GET_PROPERTY_RESULT"},
+ {OPCODE_EVT_AOM_KEY_RELEASE , "EVT_AOM_KEY_RELEASE"},
+ {OPCODE_EVT_POPUPBOX_DISMISSED , "EVT_POPUPBOX_DISMISSED"},
+ {OPCODE_EVT_DIALOGBOX_TIMEOUT , "EVT_DIALOGBOX_TIMEOUT"},
+ {OPCODE_EVT_DIALOGBOX_DISMISSED , "EVT_DIALOGBOX_DISMISSED"},
+ {OPCODE_EVT_BT_BONDED_DEVICE , "EVT_BT_BONDED_DEVICE"},
+ {OPCODE_EVT_BT_INQUIRY_RESULT , "EVT_BT_INQUIRY_RESULT"},
+ {OPCODE_EVT_BT_NAME_DISCOVERY , "EVT_BT_NAME_DISCOVERY"},
+ {OPCODE_EVT_IME_REMOTEOPEN , "EVT_IME_REMOTEOPEN"},
+ {OPCODE_EVT_BT_BATTERY , "EVT_BT_BATTERY"},
+ {OPCODE_EVT_IME_LIST , "EVT_IME_LIST"},
+ {OPCODE_EVT_IME_CHANGE , "EVT_IME_CHANGE"},
+ {OPCODE_EVT_IME_OPEN , "EVT_IME_OPEN"},
+ {OPCODE_EVT_TELEPHONICBOX_EVENT , "EVT_TELEPHONICBOX_EVENT"},
+ {OPCODE_EVT_ACTLISTBOX_TIMEOUT , "EVT_ACTLISTBOX_TIMEOUT"},
+ {OPCODE_EVT_ACTLISTBOX_DISMISSED , "EVT_ACTLISTBOX_DISMISSED"},
+ {0, NULL}
};
+static value_string_ext val_str_event_ext = VALUE_STRING_EXT_INIT(val_str_event);
-#define P_BASIC 0
+#define P_BASIC 0
#define P_ARRAY 128
#define P_INVALID 255
#define P_INVALID_INDEX 255
-#define C_STATIC 0
-#define C_DYNAMIC 128
-#define C_INVALID 255
+#define C_STATIC 0
+#define C_DYNAMIC 128
+#define C_INVALID 255
-#define E_INVALID 255
+#define E_INVALID 255
/*-----------------------------------------------------------------------------
globals
---------------------------------------------------------------------------*/
-static int proto_noe = -1;
-static gint ett_noe = -1;
-static gint ett_body = -1;
-static gint ett_property = -1;
-static gint ett_value = -1;
-static int hf_noe_length = -1;
-static int hf_noe_server = -1;
-static int hf_noe_method_ack = -1;
-static int hf_noe_method = -1;
-static int hf_noe_class = -1;
-static int hf_noe_event = -1;
-static int hf_noe_objectid = -1;
-static int hf_noe_method_index = -1;
-static int hf_noe_pcode = -1;
-static int hf_noe_psize = -1;
-static int hf_noe_aindx = -1;
-static int hf_noe_errcode = -1;
+static int proto_noe = -1;
+static gint ett_noe = -1;
+static gint ett_body = -1;
+static gint ett_property = -1;
+static gint ett_value = -1;
+static int hf_noe_length = -1;
+static int hf_noe_server = -1;
+static int hf_noe_method_ack = -1;
+static int hf_noe_method = -1;
+static int hf_noe_class = -1;
+static int hf_noe_event = -1;
+static int hf_noe_objectid = -1;
+static int hf_noe_method_index = -1;
+static int hf_noe_pcode = -1;
+static int hf_noe_psize = -1;
+static int hf_noe_aindx = -1;
+static int hf_noe_errcode = -1;
static const value_string servers_vals[] = {
- {0x15, "Call Server"},
- {0x16, "Presentation Server"},
- {0, NULL}
+ {0x15, "Call Server"},
+ {0x16, "Presentation Server"},
+ {0, NULL}
};
static const value_string servers_short_vals[] = {
- {0x15, "CS"},
- {0x16, "PS"},
- {0, NULL}
+ {0x15, "CS"},
+ {0x16, "PS"},
+ {0, NULL}
};
+
enum
{
- METHOD_CREATE = 0x00,
- METHOD_DELETE = 0x01,
- METHOD_SET_PROPERTY = 0x02,
- METHOD_GET_PROPERTY = 0x03,
- METHOD_NOTIFY = 0x04,
- METHOD_DELETE_ITEM = 0x05,
- METHOD_INSERT_ITEM = 0x06,
- METHOD_INVALID
+ METHOD_CREATE = 0x00,
+ METHOD_DELETE = 0x01,
+ METHOD_SET_PROPERTY = 0x02,
+ METHOD_GET_PROPERTY = 0x03,
+ METHOD_NOTIFY = 0x04,
+ METHOD_DELETE_ITEM = 0x05,
+ METHOD_INSERT_ITEM = 0x06,
+ METHOD_INVALID
};
static const value_string methods_vals[] = {
- {METHOD_CREATE, "Create"},
- {METHOD_DELETE, "Delete"},
- {METHOD_SET_PROPERTY, "SetProperty"},
- {METHOD_GET_PROPERTY, "GetProperty"},
- {METHOD_NOTIFY, "Notify"},
- {METHOD_DELETE_ITEM, "DeleteItem"},
- {METHOD_INSERT_ITEM, "InsertItem"},
- {0, NULL}
+ {METHOD_CREATE , "Create"},
+ {METHOD_DELETE , "Delete"},
+ {METHOD_SET_PROPERTY , "SetProperty"},
+ {METHOD_GET_PROPERTY , "GetProperty"},
+ {METHOD_NOTIFY , "Notify"},
+ {METHOD_DELETE_ITEM , "DeleteItem"},
+ {METHOD_INSERT_ITEM , "InsertItem"},
+ {0, NULL}
};
-#define ERROR_INVALID_METHOD 0
-#define ERROR_UNKNOWN_CLASS 1
-#define ERROR_STATIC_CLASS 2
-#define ERROR_DUPLICATE_OBJECTID 3
-#define ERROR_UNKNOWN_PROPERTY_ 4
-#define ERROR_BAD_INDEX 5
-#define ERROR_BAD_LENGTH__ 6
-#define ERROR_REQUIRED_MISSING 7
-#define ERROR_BAD_VALUE 8
-#define ERROR_READONLY_PROPERTY 9
-#define ERROR_UNKNOWN_OBJECTID 10
-#define ERROR_INVALID_CONTAINER 11
-#define ERROR_PROPERTY_VMIN 12
-#define ERROR_PROPERTY_VMAX 13
-#define ERROR_POSITIVE_ACK 14
-#define ERROR_NOT_IMPLEMENTED 15
-#define ERROR_INVALID_CLASS 16
-#define ERROR_INVALID_PROPERTY 17
-#define ERROR_BAD_UTF8 18
-
-#define ERROR_MESSAGE_DROP 128
-#define ERROR_MAX_SET_PROPERTY 129
-#define ERROR_INTERNAL 130
+#define ERROR_INVALID_METHOD 0
+#define ERROR_UNKNOWN_CLASS 1
+#define ERROR_STATIC_CLASS 2
+#define ERROR_DUPLICATE_OBJECTID 3
+#define ERROR_UNKNOWN_PROPERTY_ 4
+#define ERROR_BAD_INDEX 5
+#define ERROR_BAD_LENGTH__ 6
+#define ERROR_REQUIRED_MISSING 7
+#define ERROR_BAD_VALUE 8
+#define ERROR_READONLY_PROPERTY 9
+#define ERROR_UNKNOWN_OBJECTID 10
+#define ERROR_INVALID_CONTAINER 11
+#define ERROR_PROPERTY_VMIN 12
+#define ERROR_PROPERTY_VMAX 13
+#define ERROR_POSITIVE_ACK 14
+#define ERROR_NOT_IMPLEMENTED 15
+#define ERROR_INVALID_CLASS 16
+#define ERROR_INVALID_PROPERTY 17
+#define ERROR_BAD_UTF8 18
+
+#define ERROR_MESSAGE_DROP 128
+#define ERROR_MAX_SET_PROPERTY 129
+#define ERROR_INTERNAL 130
static const value_string errcode_vals[] = {
- {ERROR_INVALID_METHOD , "An invalid method opcode was received"},
- {ERROR_UNKNOWN_CLASS , "An invalid class opcode was received"},
- {ERROR_STATIC_CLASS , "Trying to create or delete a static class"},
- {ERROR_DUPLICATE_OBJECTID , "Trying to create an existing object"},
- {ERROR_UNKNOWN_PROPERTY_ , "Property opcode doesn't exist in specified class"},
- {ERROR_BAD_INDEX , "Bad property index (array overflow)"},
- {ERROR_BAD_LENGTH__ , "Short message or bad property length"},
- {ERROR_REQUIRED_MISSING , "A required property was not specified in create method"},
- {ERROR_BAD_VALUE , "Bad property value"},
- {ERROR_READONLY_PROPERTY , "Trying to set a read-only property"},
- {ERROR_UNKNOWN_OBJECTID , "The specified object doesn't exist (delete, setProperty or getProperty methods)"},
- {ERROR_INVALID_CONTAINER , "Invalid container"},
- {ERROR_PROPERTY_VMIN , "Property value < property minimum value"},
- {ERROR_PROPERTY_VMAX , "Property value > property maximum value"},
- {ERROR_POSITIVE_ACK , "Positive ack requested with a getProperty method"},
- {ERROR_NOT_IMPLEMENTED , "The specified property is not implemented"},
- {ERROR_INVALID_CLASS , "Invalid class specified with insertItem and deleteItem"},
- {ERROR_INVALID_PROPERTY , "Invalid property specified with insertItem and deleteItem"},
- {ERROR_BAD_UTF8 , "Invalid UTF8 value in UA message"},
- {ERROR_MESSAGE_DROP , "Decoder queue is full"},
- {ERROR_MAX_SET_PROPERTY , "A maximum of 256 properties can be received in a setProperty method"},
- {ERROR_INTERNAL , "Internal error"},
- {0, NULL}
+ {ERROR_INVALID_METHOD , "An invalid method opcode was received"},
+ {ERROR_UNKNOWN_CLASS , "An invalid class opcode was received"},
+ {ERROR_STATIC_CLASS , "Trying to create or delete a static class"},
+ {ERROR_DUPLICATE_OBJECTID , "Trying to create an existing object"},
+ {ERROR_UNKNOWN_PROPERTY_ , "Property opcode doesn't exist in specified class"},
+ {ERROR_BAD_INDEX , "Bad property index (array overflow)"},
+ {ERROR_BAD_LENGTH__ , "Short message or bad property length"},
+ {ERROR_REQUIRED_MISSING , "A required property was not specified in create method"},
+ {ERROR_BAD_VALUE , "Bad property value"},
+ {ERROR_READONLY_PROPERTY , "Trying to set a read-only property"},
+ {ERROR_UNKNOWN_OBJECTID , "The specified object doesn't exist (delete, setProperty or getProperty methods)"},
+ {ERROR_INVALID_CONTAINER , "Invalid container"},
+ {ERROR_PROPERTY_VMIN , "Property value < property minimum value"},
+ {ERROR_PROPERTY_VMAX , "Property value > property maximum value"},
+ {ERROR_POSITIVE_ACK , "Positive ack requested with a getProperty method"},
+ {ERROR_NOT_IMPLEMENTED , "The specified property is not implemented"},
+ {ERROR_INVALID_CLASS , "Invalid class specified with insertItem and deleteItem"},
+ {ERROR_INVALID_PROPERTY , "Invalid property specified with insertItem and deleteItem"},
+ {ERROR_BAD_UTF8 , "Invalid UTF8 value in UA message"},
+ {ERROR_MESSAGE_DROP , "Decoder queue is full"},
+ {ERROR_MAX_SET_PROPERTY , "A maximum of 256 properties can be received in a setProperty method"},
+ {ERROR_INTERNAL , "Internal error"},
+ {0, NULL}
};
+static value_string_ext errcode_vals_ext = VALUE_STRING_EXT_INIT(errcode_vals);
static const value_string str_key_name[] = {
- {0x00 , "Null Char."},
- {0x01 , "Start Of Header"},
- {0x02 , "Start Of Text"},
- {0x03 , "End Of Text"},
- {0x04 , "End Of Transmission"},
- {0x05 , "Enquiry"},
- {0x06 , "Acknowledgment"},
- {0x07 , "Bell"},
- {0x08 , "Backspace"},
- {0x09 , "Horizontal Tab"},
- {0x0A , "Line Feed"},
- {0x0B , "Vertical Tab"},
- {0x0C , "Form Feed"},
- {0x0D , "Enter"},
- {0x0E , "Shift Out"},
- {0x0F , "Shift In"},
- {0x10 , "Data Link Escape"},
- {0x11 , "Device Control 1"},
- {0x12 , "Device Control 2"},
- {0x13 , "Device Control 3"},
- {0x14 , "Device Control 4"},
- {0x15 , "Negative Acknowledgment"},
- {0x16 , "Synchronous Idle"},
- {0x17 , "End Of Trans. Block"},
- {0x18 , "Cancel"},
- {0x19 , "End Of Medium"},
- {0x1A , "Substitute"},
- {0x1B , "Escape"},
- {0x1C , "File Separator"},
- {0x1D , "Group Separator"},
- {0x1E , "Request To Send"},
- {0x1F , "Unit Separator"},
- {0x20 , "Space"},
- {0x7F , "Delete"},
- {0xE0 , "a`"},
- {0xE7 , "c,"},
- {0xE8 , "e`"},
- {0xE9 , "e'"},
- {0xF9 , "u`"},
- {0x20AC , "Euro Character"},
- {0xE100 , "Release"},
- {0xE101 , "Bis"},
- {0xE102 , "Message"},
- {0xE103 , "Handsfree"},
- {0xE104 , "Mute"},
- {0xE105 , "Volume Dec"},
- {0xE106 , "Volume Inc"},
- {0xE107 , "Hookswitch"},
- {0xE110 , "Ok"},
- {0xE111 , "Left"},
- {0xE112 , "Right"},
- {0xE113 , "Down"},
- {0xE114 , "Up"},
- {0xE115 , "Home"},
- {0xE116 , "Help"},
- {0xE117 , "Directory"},
- {0xE120 , "ProgKey 0"},
- {0xE121 , "ProgKey 1"},
- {0xE122 , "ProgKey 2"},
- {0xE123 , "ProgKey 3"},
- {0xE124 , "ProgKey 4"},
- {0xE125 , "ProgKey 5"},
- {0xE130 , "SoftKey 0"},
- {0xE131 , "SoftKey 1"},
- {0xE132 , "SoftKey 2"},
- {0xE133 , "SoftKey 3"},
- {0xE134 , "SoftKey 4"},
- {0xE135 , "SoftKey 5"},
- {0xE136 , "SoftKey 6"},
- {0xE137 , "SoftKey 7"},
- {0xE138 , "SoftKey 8"},
- {0xE139 , "SoftKey 9"},
- {0, NULL}
+ {0x00 , "Null Char."},
+ {0x01 , "Start Of Header"},
+ {0x02 , "Start Of Text"},
+ {0x03 , "End Of Text"},
+ {0x04 , "End Of Transmission"},
+ {0x05 , "Enquiry"},
+ {0x06 , "Acknowledgment"},
+ {0x07 , "Bell"},
+ {0x08 , "Backspace"},
+ {0x09 , "Horizontal Tab"},
+ {0x0A , "Line Feed"},
+ {0x0B , "Vertical Tab"},
+ {0x0C , "Form Feed"},
+ {0x0D , "Enter"},
+ {0x0E , "Shift Out"},
+ {0x0F , "Shift In"},
+ {0x10 , "Data Link Escape"},
+ {0x11 , "Device Control 1"},
+ {0x12 , "Device Control 2"},
+ {0x13 , "Device Control 3"},
+ {0x14 , "Device Control 4"},
+ {0x15 , "Negative Acknowledgment"},
+ {0x16 , "Synchronous Idle"},
+ {0x17 , "End Of Trans. Block"},
+ {0x18 , "Cancel"},
+ {0x19 , "End Of Medium"},
+ {0x1A , "Substitute"},
+ {0x1B , "Escape"},
+ {0x1C , "File Separator"},
+ {0x1D , "Group Separator"},
+ {0x1E , "Request To Send"},
+ {0x1F , "Unit Separator"},
+ {0x20 , "Space"},
+ {0x7F , "Delete"},
+ {0xE0 , "a`"},
+ {0xE7 , "c,"},
+ {0xE8 , "e`"},
+ {0xE9 , "e'"},
+ {0xF9 , "u`"},
+ {0x20AC , "Euro Character"},
+ {0xE100 , "Release"},
+ {0xE101 , "Bis"},
+ {0xE102 , "Message"},
+ {0xE103 , "Handsfree"},
+ {0xE104 , "Mute"},
+ {0xE105 , "Volume Dec"},
+ {0xE106 , "Volume Inc"},
+ {0xE107 , "Hookswitch"},
+ {0xE110 , "Ok"},
+ {0xE111 , "Left"},
+ {0xE112 , "Right"},
+ {0xE113 , "Down"},
+ {0xE114 , "Up"},
+ {0xE115 , "Home"},
+ {0xE116 , "Help"},
+ {0xE117 , "Directory"},
+ {0xE120 , "ProgKey 0"},
+ {0xE121 , "ProgKey 1"},
+ {0xE122 , "ProgKey 2"},
+ {0xE123 , "ProgKey 3"},
+ {0xE124 , "ProgKey 4"},
+ {0xE125 , "ProgKey 5"},
+ {0xE130 , "SoftKey 0"},
+ {0xE131 , "SoftKey 1"},
+ {0xE132 , "SoftKey 2"},
+ {0xE133 , "SoftKey 3"},
+ {0xE134 , "SoftKey 4"},
+ {0xE135 , "SoftKey 5"},
+ {0xE136 , "SoftKey 6"},
+ {0xE137 , "SoftKey 7"},
+ {0xE138 , "SoftKey 8"},
+ {0xE139 , "SoftKey 9"},
+ {0, NULL}
};
-
+static value_string_ext str_key_name_ext = VALUE_STRING_EXT_INIT(str_key_name);
/*-----------------------------------------------------------------------------
- DECODE UTF8 TO UNICODE
- This function translates an UTF8 vale to an UNICODE one.
- Need to have at least 48 bits value.
- ---------------------------------------------------------------------------*/
+ DECODE UTF8 TO UNICODE
+ This function translates an UTF8 vale to an UNICODE one.
+ Need to have at least 48 bits value.
+ ---------------------------------------------------------------------------*/
static guint64 decode_utf8(guint64 utf8)
{
- static guint64 unicode;
-
- if(utf8 <= G_GUINT64_CONSTANT(0xFF))
- {
- unicode =
- utf8 & G_GUINT64_CONSTANT(0x7F);
- }
- else if(utf8 <= G_GUINT64_CONSTANT(0xFFFF))
- {
- unicode =
- ((utf8 & G_GUINT64_CONSTANT(0x1F00) >> 2) +
- (utf8 & G_GUINT64_CONSTANT(0x3F)));
- }
- else if(utf8 <= G_GUINT64_CONSTANT(0xFFFFFF))
- {
- unicode =
- ((utf8 & G_GUINT64_CONSTANT(0x0F0000)) >> 4) +
- ((utf8 & G_GUINT64_CONSTANT(0x3F00)) >> 2) +
- (utf8 & G_GUINT64_CONSTANT(0x3F));
- }
- else if(utf8 <= G_GUINT64_CONSTANT(0xFFFFFFFF))
- {
- unicode =
- ((utf8 & G_GUINT64_CONSTANT(0x07000000)) >> 6) +
- ((utf8 & G_GUINT64_CONSTANT(0x3F0000)) >> 4) +
- ((utf8 & G_GUINT64_CONSTANT(0x3F00)) >> 2) +
- (utf8 & G_GUINT64_CONSTANT(0x3F));
- }
- else if(utf8 <= G_GUINT64_CONSTANT(0xFFFFFFFFFF))
- {
- unicode =
- ((utf8 & G_GUINT64_CONSTANT(0x0300000000)) >> 8) +
- ((utf8 & G_GUINT64_CONSTANT(0x3F000000)) >> 6) +
- ((utf8 & G_GUINT64_CONSTANT(0x3F0000)) >> 4) +
- ((utf8 & G_GUINT64_CONSTANT(0x3F00)) >> 2) +
- (utf8 & G_GUINT64_CONSTANT(0x3F));
- }
- else if(utf8 <= G_GUINT64_CONSTANT(0xFFFFFFFFFFFF))
- {
- unicode =
- ((utf8 & G_GUINT64_CONSTANT(0x010000000000)) >> 10) +
- ((utf8 & G_GUINT64_CONSTANT(0x3F00000000)) >> 8) +
- ((utf8 & G_GUINT64_CONSTANT(0x3F000000)) >> 6) +
- ((utf8 & G_GUINT64_CONSTANT(0x3F0000)) >> 4) +
- ((utf8 & G_GUINT64_CONSTANT(0x3F00)) >> 2) +
- (utf8 & G_GUINT64_CONSTANT(0x3F));
- }
- else
- {
- unicode = G_GUINT64_CONSTANT(0);
- }
- return unicode;
-}
+ static guint64 unicode;
+
+ if (utf8 <= G_GUINT64_CONSTANT(0xFF))
+ {
+ unicode =
+ utf8 & G_GUINT64_CONSTANT(0x7F);
+ }
+ else if (utf8 <= G_GUINT64_CONSTANT(0xFFFF))
+ {
+ unicode =
+ ((utf8 & G_GUINT64_CONSTANT(0x1F00) >> 2) +
+ (utf8 & G_GUINT64_CONSTANT(0x3F)));
+ }
+ else if (utf8 <= G_GUINT64_CONSTANT(0xFFFFFF))
+ {
+ unicode =
+ ((utf8 & G_GUINT64_CONSTANT(0x0F0000)) >> 4) +
+ ((utf8 & G_GUINT64_CONSTANT(0x3F00)) >> 2) +
+ (utf8 & G_GUINT64_CONSTANT(0x3F));
+ }
+ else if (utf8 <= G_GUINT64_CONSTANT(0xFFFFFFFF))
+ {
+ unicode =
+ ((utf8 & G_GUINT64_CONSTANT(0x07000000)) >> 6) +
+ ((utf8 & G_GUINT64_CONSTANT(0x3F0000)) >> 4) +
+ ((utf8 & G_GUINT64_CONSTANT(0x3F00)) >> 2) +
+ (utf8 & G_GUINT64_CONSTANT(0x3F));
+ }
+ else if (utf8 <= G_GUINT64_CONSTANT(0xFFFFFFFFFF))
+ {
+ unicode =
+ ((utf8 & G_GUINT64_CONSTANT(0x0300000000)) >> 8) +
+ ((utf8 & G_GUINT64_CONSTANT(0x3F000000)) >> 6) +
+ ((utf8 & G_GUINT64_CONSTANT(0x3F0000)) >> 4) +
+ ((utf8 & G_GUINT64_CONSTANT(0x3F00)) >> 2) +
+ (utf8 & G_GUINT64_CONSTANT(0x3F));
+ }
+ else if (utf8 <= G_GUINT64_CONSTANT(0xFFFFFFFFFFFF))
+ {
+ unicode =
+ ((utf8 & G_GUINT64_CONSTANT(0x010000000000)) >> 10) +
+ ((utf8 & G_GUINT64_CONSTANT(0x3F00000000)) >> 8) +
+ ((utf8 & G_GUINT64_CONSTANT(0x3F000000)) >> 6) +
+ ((utf8 & G_GUINT64_CONSTANT(0x3F0000)) >> 4) +
+ ((utf8 & G_GUINT64_CONSTANT(0x3F00)) >> 2) +
+ (utf8 & G_GUINT64_CONSTANT(0x3F));
+ }
+ else
+ {
+ unicode = G_GUINT64_CONSTANT(0);
+ }
+ return unicode;
+}
/*-----------------------------------------------------------------------------
- DECODE KEY NAME
- This function translates an UNICODE to the name associated.
- Need to have at least 48 bits value.
- ---------------------------------------------------------------------------*/
+ DECODE KEY NAME
+ This function translates an UNICODE to the name associated.
+ Need to have at least 48 bits value.
+ ---------------------------------------------------------------------------*/
static char *decode_key_name(int unicode)
{
- static char key_name[10];
-
- if((unicode <= 0x20)
- || (unicode == 0x7F)
- || (unicode == 0xE0)
- || (unicode == 0xE7)
- || (unicode == 0xE8)
- || (unicode == 0xE9)
- || (unicode == 0xF9))
- {
- g_snprintf(key_name, 10, "%s", val_to_str(unicode, str_key_name, "Unknown"));
- }
- else if(unicode <= 0xFF)
- {
- g_snprintf(key_name, 10, "%c", unicode);
- }
- else
- {
- g_snprintf(key_name, 10, "%s", val_to_str(unicode, str_key_name, "Unknown"));
- }
- return key_name;
-}
+ char *key_name;
+
+ key_name = ep_alloc(10);
+
+ if ((unicode <= 0x20)
+ || (unicode == 0x7F)
+ || (unicode == 0xE0)
+ || (unicode == 0xE7)
+ || (unicode == 0xE8)
+ || (unicode == 0xE9)
+ || (unicode == 0xF9))
+ {
+ g_snprintf(key_name, 10, "%s", val_to_str_ext_const(unicode, &str_key_name_ext, "Unknown"));
+ }
+ else if (unicode <= 0xFF)
+ {
+ g_snprintf(key_name, 10, "%c", unicode);
+ }
+ else
+ {
+ g_snprintf(key_name, 10, "%s", val_to_str_ext_const(unicode, &str_key_name_ext, "Unknown"));
+ }
+ return key_name;
+}
/*-----------------------------------------------------------------------------
- DECODE EVT ERROR
- ---------------------------------------------------------------------------*/
-static void
-decode_evt_error(proto_tree *tree, tvbuff_t *tvb, guint offset, guint length)
+ DECODE EVT ERROR
+ ---------------------------------------------------------------------------*/
+static void decode_evt_error(proto_tree *tree,
+ tvbuff_t *tvb,
+ guint offset,
+ guint length)
{
- guint8 method, class, property;
- guint16 errcode;
- guint32 Pdata;
-
- errcode = tvb_get_ntohs (tvb, offset);
- proto_tree_add_uint_format_value(tree, hf_noe_errcode, tvb, offset, 2,
- errcode, "%s (%d)", val_to_str(errcode, VALS(errcode_vals), "Unknown"), errcode);
- offset += 2;
- length -= 2;
-
- method = tvb_get_guint8(tvb, offset);
- proto_tree_add_uint_format_value(tree, hf_noe_method, tvb, offset, 1,
- method, "%s (%d)", val_to_str(method, VALS(methods_vals), "Unknown"), method);
- offset ++;
- length --;
-
- class = tvb_get_guint8(tvb, offset);
- proto_tree_add_int_format_value(tree, hf_noe_class, tvb, offset, 1,
- class, "%s (%d)", val_to_str(class, val_str_class, "Unknown"), class);
- offset ++;
- length --;
-
- proto_tree_add_uint(tree, hf_noe_objectid, tvb, offset, 2, tvb_get_ntohs(tvb, offset));
- offset += 2;
- length -= 2;
-
- property = tvb_get_guint8(tvb, offset);
- proto_tree_add_int_format_value(tree, hf_noe_pcode, tvb, offset, 1,
- property, "%s (0x%02x)", val_to_str(property, val_str_props, "Unknown"), property);
- offset ++;
- length --;
-
- proto_tree_add_item(tree, hf_noe_aindx, tvb, offset, 1, ENC_NA);
- offset ++;
- length --;
-
- proto_tree_add_uint(tree, hf_noe_length, tvb, offset, 2, tvb_get_ntohs(tvb, offset));
- offset += 2;
- length -= 2;
-
- Pdata = tvb_get_ntohl (tvb, offset);
- proto_tree_add_text(tree,
- tvb,
- offset,
- 4,
- "Value: %x",
- Pdata);
- offset += 4;
- length -= 4;
-
- proto_tree_add_text(tree,
- tvb,
- offset,
- length,
- "Message: %s",
- tvb_bytes_to_str(tvb, offset, length));
+ guint8 method, class, property;
+ guint16 errcode;
+ guint32 Pdata;
+
+ if (!tree)
+ return;
+
+ errcode = tvb_get_ntohs (tvb, offset);
+ proto_tree_add_uint_format_value(tree, hf_noe_errcode, tvb, offset, 2,
+ errcode, "%s (%d)", val_to_str_ext_const(errcode, &errcode_vals_ext, "Unknown"), errcode);
+ offset += 2;
+ length -= 2;
+
+ method = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint_format_value(tree, hf_noe_method, tvb, offset, 1,
+ method, "%s (%d)", val_to_str_const(method, methods_vals, "Unknown"), method);
+ offset += 1;
+ length -= 1;
+
+ class = tvb_get_guint8(tvb, offset);
+ proto_tree_add_int_format_value(tree, hf_noe_class, tvb, offset, 1,
+ class, "%s (%d)", val_to_str_ext_const(class, &val_str_class_ext, "Unknown"), class);
+ offset += 1;
+ length -= 1;
+
+ proto_tree_add_uint(tree, hf_noe_objectid, tvb, offset, 2, tvb_get_ntohs(tvb, offset));
+ offset += 2;
+ length -= 2;
+
+ property = tvb_get_guint8(tvb, offset);
+ proto_tree_add_int_format_value(tree, hf_noe_pcode, tvb, offset, 1,
+ property, "%s (0x%02x)", val_to_str_ext_const(property, &val_str_props_ext, "Unknown"), property);
+ offset += 1;
+ length -= 1;
+
+ proto_tree_add_item(tree, hf_noe_aindx, tvb, offset, 1, ENC_NA);
+ offset += 1;
+ length -= 1;
+
+ proto_tree_add_uint(tree, hf_noe_length, tvb, offset, 2, tvb_get_ntohs(tvb, offset));
+ offset += 2;
+ length -= 2;
+
+ Pdata = tvb_get_ntohl (tvb, offset);
+ proto_tree_add_text(tree,
+ tvb,
+ offset,
+ 4,
+ "Value: %x",
+ Pdata);
+ offset += 4;
+ length -= 4;
+
+ proto_tree_add_text(tree,
+ tvb,
+ offset,
+ length,
+ "Message: %s",
+ tvb_bytes_to_str(tvb, offset, length));
}
/*-----------------------------------------------------------------------------
- MESSAGE BODY DECODER
- This function decodes the message body of an 0x15 (and 0x16) UA3G message.
- ---------------------------------------------------------------------------*/
-static void decode_tlv(proto_tree *tree, tvbuff_t *tvb, guint offset, guint length)
+ MESSAGE BODY DECODER
+ This function decodes the message body of an 0x15 (and 0x16) UA3G message.
+ ---------------------------------------------------------------------------*/
+static void decode_tlv(proto_tree *tree,
+ tvbuff_t *tvb,
+ guint offset,
+ guint length)
{
- proto_item *property_item, *value_item;
- proto_tree *property_tree, *value_tree;
- guint8 property_type;
- guint16 property_length, property_value_index;
-/* guint64 property_index = 0;*/
-
- /* add text to the frame tree */
- property_item = proto_tree_add_text(tree,
- tvb,
- offset,
- length,
- "NOE Message Body");
- property_tree = proto_item_add_subtree(property_item, ett_body);
-
- while(length > 0)
- {
- property_type = tvb_get_guint8(tvb, offset);
- proto_tree_add_int_format_value(property_tree, hf_noe_pcode, tvb, offset, 1,
- property_type, "%s (0x%02x)", val_to_str(property_type, val_str_props, "Unknown"), property_type);
- offset++;
- length--;
-
- if(property_type >= P_ARRAY)
- {
- proto_tree_add_item(property_item, hf_noe_aindx, tvb, offset, 1, ENC_NA);
- offset++;
- length--;
- }
-
- property_length = tvb_get_guint8(tvb, offset);
- if(property_length & 0x80)
- {
- property_length = tvb_get_ntohs(tvb, offset);
- property_length &= 0x7fff;
- proto_tree_add_uint(property_tree, hf_noe_psize, tvb, offset, 2,
- tvb_get_guint8(tvb, offset) * 256 + tvb_get_guint8(tvb, offset+1));
- offset += 2;
- length -= 2;
- }
- else
- {
- proto_tree_add_uint(property_tree, hf_noe_psize, tvb, offset, 1,
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- }
-
- switch(property_length)
- {
- case 0:
- {
- break;
- }
- case 1:
- {
- proto_tree_add_text(property_item,
- tvb,
- offset,
- 1,
- "Value: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- break;
- }
- case 2:
- {
- guint16 property_value;
- property_value = tvb_get_ntohs(tvb, offset);
- proto_tree_add_text(property_item,
- tvb,
- offset,
- 2,
- "Value: %d",
- property_value);
- offset += 2;
- length -= 2;
- break;
- }
- case 3:
- {
- guint32 property_value;
- property_value = tvb_get_ntoh24(tvb, offset);
- proto_tree_add_text(property_item,
- tvb,
- offset,
- 3,
- "Value: %u",
- property_value);
- offset += 3;
- length -= 3;
- break;
- }
- case 4:
- {
- guint32 property_value;
- property_value = tvb_get_ntohl(tvb, offset);
- proto_tree_add_text(property_item,
- tvb,
- offset,
- 4,
- "Value: %u",
- property_value);
- offset += 4;
- length -= 4;
- break;
- }
- default:
- {
- /* add text to the frame tree */
- value_item = proto_tree_add_text(property_item,
- tvb,
- offset,
- property_length,
- "Value (> 4 bytes)");
-
- value_tree = proto_item_add_subtree(value_item, ett_value);
-
- property_value_index = 0;
- while(property_length > 0)
- {
- property_value_index++;
- proto_tree_add_text(value_tree,
- tvb,
- offset,
- 1,
- "Value %5d: 0x%02x",
- property_value_index, tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- property_length--;
- }
- break;
- }
- }
- }
+ proto_item *property_item, *value_item;
+ proto_tree *property_tree, *value_tree;
+ guint8 property_type;
+ guint16 property_length, property_value_index;
+/* guint64 property_index;*/
+
+ /* add text to the frame tree */
+ property_item = proto_tree_add_text(tree,
+ tvb,
+ offset,
+ length,
+ "NOE Message Body");
+ property_tree = proto_item_add_subtree(property_item, ett_body);
+
+ while(length > 0)
+ {
+ property_type = tvb_get_guint8(tvb, offset);
+ proto_tree_add_int_format_value(property_tree, hf_noe_pcode, tvb, offset, 1,
+ property_type, "%s (0x%02x)", val_to_str_ext_const(property_type, &val_str_props_ext, "Unknown"), property_type);
+ offset += 1;
+ length -= 1;
+
+ if (property_type >= P_ARRAY)
+ {
+ proto_tree_add_item(property_item, hf_noe_aindx, tvb, offset, 1, ENC_NA);
+ offset += 1;
+ length -= 1;
+ }
+
+ property_length = tvb_get_guint8(tvb, offset);
+ if (property_length & 0x80)
+ {
+ property_length = tvb_get_ntohs(tvb, offset);
+ property_length &= 0x7fff;
+ proto_tree_add_uint(property_tree, hf_noe_psize, tvb, offset, 2,
+ tvb_get_guint8(tvb, offset) * 256 + tvb_get_guint8(tvb, offset+1));
+ offset += 2;
+ length -= 2;
+ }
+ else
+ {
+ proto_tree_add_uint(property_tree, hf_noe_psize, tvb, offset, 1,
+ tvb_get_guint8(tvb, offset));
+ offset += 1;
+ length -= 1;
+ }
+
+ switch(property_length)
+ {
+ case 0:
+ {
+ break;
+ }
+ case 1:
+ {
+ proto_tree_add_text(property_item,
+ tvb,
+ offset,
+ 1,
+ "Value: %d",
+ tvb_get_guint8(tvb, offset));
+ offset += 1;
+ length -= 1;
+ break;
+ }
+ case 2:
+ {
+ guint16 property_value;
+ property_value = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_text(property_item,
+ tvb,
+ offset,
+ 2,
+ "Value: %d",
+ property_value);
+ offset += 2;
+ length -= 2;
+ break;
+ }
+ case 3:
+ {
+ guint32 property_value;
+ property_value = tvb_get_ntoh24(tvb, offset);
+ proto_tree_add_text(property_item,
+ tvb,
+ offset,
+ 3,
+ "Value: %u",
+ property_value);
+ offset += 3;
+ length -= 3;
+ break;
+ }
+ case 4:
+ {
+ guint32 property_value;
+ property_value = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_text(property_item,
+ tvb,
+ offset,
+ 4,
+ "Value: %u",
+ property_value);
+ offset += 4;
+ length -= 4;
+ break;
+ }
+ default:
+ {
+ /* add text to the frame tree */
+ value_item = proto_tree_add_text(property_item,
+ tvb,
+ offset,
+ property_length,
+ "Value (> 4 bytes)");
+
+ value_tree = proto_item_add_subtree(value_item, ett_value);
+
+ property_value_index = 0;
+ while(property_length > 0)
+ {
+ property_value_index += 1;
+ proto_tree_add_text(value_tree,
+ tvb,
+ offset,
+ 1,
+ "Value %5d: 0x%02x",
+ property_value_index, tvb_get_guint8(tvb, offset));
+ offset += 1;
+ length -= 1;
+ property_length -= 1;
+ }
+ break;
+ }
+ }
+ }
}
/*-----------------------------------------------------------------------------
- GETPROPERTY MESSAGE BODY DECODER
- This function decodes the message body of an 0x15 (and 0x16) UA3G message.
- ---------------------------------------------------------------------------*/
-static void decode_getproperty_tlv(proto_tree *tree, tvbuff_t *tvb, guint offset, guint length)
+ GETPROPERTY MESSAGE BODY DECODER
+ This function decodes the message body of an 0x15 (and 0x16) UA3G message.
+ ---------------------------------------------------------------------------*/
+static void decode_getproperty_tlv(proto_tree *tree,
+ tvbuff_t *tvb,
+ guint offset,
+ guint length)
{
- proto_item *body_item;
- proto_tree *body_tree;
- guint8 body_type;
-
- /* add text to the frame tree */
- body_item = proto_tree_add_text(tree,
- tvb,
- offset,
- length,
- "NOE Message Body");
- body_tree = proto_item_add_subtree(body_item, ett_property);
-
- while(length > 0)
- {
- body_type = tvb_get_guint8(tvb, offset);
- proto_tree_add_int_format_value(body_tree, hf_noe_pcode, tvb, offset, 1,
- body_type, "%s (0x%02x)", val_to_str(body_type, val_str_props, "Unknown"), body_type);
-
- offset++;
- length--;
-
- if(body_type >= P_ARRAY)
- {
- proto_tree_add_item(body_item, hf_noe_aindx, tvb, offset, 1, ENC_NA);
- offset++;
- length--;
- }
- }
+ proto_item *body_item;
+ proto_tree *body_tree;
+ guint8 body_type;
+
+ /* add text to the frame tree */
+ body_item = proto_tree_add_text(tree,
+ tvb,
+ offset,
+ length,
+ "NOE Message Body");
+ body_tree = proto_item_add_subtree(body_item, ett_property);
+
+ while(length > 0)
+ {
+ body_type = tvb_get_guint8(tvb, offset);
+ proto_tree_add_int_format_value(body_tree, hf_noe_pcode, tvb, offset, 1,
+ body_type, "%s (0x%02x)", val_to_str_ext_const(body_type, &val_str_props_ext, "Unknown"), body_type);
+
+ offset += 1;
+ length -= 1;
+
+ if (body_type >= P_ARRAY)
+ {
+ proto_tree_add_item(body_item, hf_noe_aindx, tvb, offset, 1, ENC_NA);
+ offset += 1;
+ length -= 1;
+ }
+ }
}
/*-----------------------------------------------------------------------------
- TERMINAL TO SERVER EVENT MESSAGE BODY DECODER
- This function decodes the message body of an 0x15 (and 0x16) UA3G message.
- ---------------------------------------------------------------------------*/
-static void decode_evt(proto_tree *tree,
- tvbuff_t *tvb,
- packet_info *pinfo,
- guint offset,
- guint length)
+ TERMINAL TO SERVER EVENT MESSAGE BODY DECODER
+ This function decodes the message body of an 0x15 (and 0x16) UA3G message.
+ ---------------------------------------------------------------------------*/
+static void decode_evt(proto_tree *tree,
+ tvbuff_t *tvb,
+ packet_info *pinfo,
+ guint offset,
+ guint length)
{
- guint8 event = tvb_get_guint8(tvb, offset);
-
- proto_tree_add_uint_format_value(tree,
- hf_noe_event,
- tvb,
- offset,
- 1,
- event,
- "%s (%d)",
- val_to_str(event, val_str_event, "Unknown"),
- event);
-
- /* add text to the frame "INFO" column */
- if(check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, " %s",
- val_to_str(event, val_str_event, "Unknown"));
- /* update text of the main proto item */
- proto_item_append_text(tree, ", %s",
- val_to_str(event, val_str_event, "Unknown"));
-
- offset++;
- length--;
-
- switch(event)
- {
- case OPCODE_EVT_BT_KEY_SHORTPRESS:
- case OPCODE_EVT_BT_KEY_LONGPRESS:
- case OPCODE_EVT_BT_KEY_VERYLONGPRESS:
- case OPCODE_EVT_KEY_LINE:
- case OPCODE_EVT_ONHOOK:
- case OPCODE_EVT_OFFHOOK:
- {
- static const value_string str_struct[] = {
- {0x00, "RJ9 Plug"},
- {0x01, "BT Handset Link"},
- {0, NULL}
- };
- proto_tree_add_text(tree,
- tvb,
- offset,
- length,
- "Value: %s (%d)",
- val_to_str(tvb_get_guint8(tvb, offset), str_struct, "Unknown"), tvb_get_guint8(tvb, offset));
- break;
- }
- case OPCODE_EVT_KEY_PRESS:
- case OPCODE_EVT_KEY_RELEASE:
- case OPCODE_EVT_KEY_SHORTPRESS:
- case OPCODE_EVT_KEY_LONGPRESS:
- case OPCODE_EVT_HELP:
- {
- /* utf8_value is the utf8 value to translate into Unicode with the decode_uft8 function */
- guint64 utf8_value = 0;
- guint64 unicode_value;
- static char key_name[30];
- int pt_length = length;
- int pt_offset = offset;
-
- while(pt_length > 0)
- {
- utf8_value = (utf8_value << 8) + tvb_get_guint8(tvb, pt_offset);
- pt_offset ++;
- pt_length --;
- }
- unicode_value = decode_utf8(utf8_value);
- g_snprintf(key_name, 30, "\"%s\"", decode_key_name((int)unicode_value));
-
- /* add text to the frame "INFO" column */
- if(check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
- key_name);
- /* update text of the main proto item */
- proto_item_append_text(tree, ", %s",
- key_name);
-
- proto_tree_add_text(tree,
- tvb,
- offset,
- length,
- "Key Name: %s (UTF-8 Value: %s, Unicode Value: 0x%" G_GINT64_MODIFIER "x)",
- key_name,
- tvb_bytes_to_str(tvb, offset, length),
- unicode_value);
- break;
- }
- case OPCODE_EVT_ERROR_PROTOCOL:
- case OPCODE_EVT_ERROR_CREATE:
- case OPCODE_EVT_ERROR_DELETE:
- case OPCODE_EVT_ERROR_SET_PROPERTY:
- case OPCODE_EVT_ERROR_GET_PROPERTY:
- {
- decode_evt_error(tree, tvb, offset, length);
- break;
- }
- case OPCODE_EVT_CONTEXT_SWITCH:
- {
- proto_tree_add_text(tree,
- tvb,
- offset,
- 1,
- "Context: %s",
- val_to_str(tvb_get_guint8(tvb, offset),
- VALS(servers_vals),
- "Unknown"));
- break;
- }
- case OPCODE_EVT_SUCCESS_CREATE:
- case OPCODE_EVT_SUCCESS_DELETE:
- case OPCODE_EVT_SUCCESS_SET_PROPERTY:
- case OPCODE_EVT_SUCCESS_INSERT_ITEM:
- case OPCODE_EVT_SUCCESS_DELETE_ITEM:
- {
- proto_tree_add_uint(tree, hf_noe_objectid, tvb, offset, 2, tvb_get_ntohs(tvb, offset));
- break;
- }
- case OPCODE_EVT_WIDGETS_GC:
- {
- proto_tree_add_text(tree,
- tvb,
- offset,
- 4,
- "FreeMem: %d bytes",
- tvb_get_ntohl(tvb, offset));
- break;
- }
- case OPCODE_EVT_BT_BONDING_RESULT:
- {
- proto_tree_add_uint(tree, hf_noe_objectid, tvb, offset, 2, tvb_get_ntohs(tvb, offset));
- offset += 2;
- /*Fix Clang Warning*/
- /*length -= 2;*/
-
- proto_tree_add_text(tree,
- tvb,
- offset,
- 1,
- "Bonded: %d",
- tvb_get_ntohs(tvb, offset));
- offset += 1;
- /*Fix Clang Warning*/
- /*length -= 1;*/
-
- proto_tree_add_text(tree,
- tvb,
- offset,
- 1,
- "Value: %d",
- tvb_get_ntohs(tvb, offset));
- break;
- }
- default:
- {
- proto_tree_add_uint(tree, hf_noe_objectid, tvb, offset, 2, tvb_get_ntohs(tvb, offset));
- offset += 2;
- length -= 2;
-
- if(length > 0)
- decode_tlv(tree, tvb, offset, length);
- break;
- }
- }
+ guint8 event = tvb_get_guint8(tvb, offset);
+
+ proto_tree_add_uint_format_value(tree,
+ hf_noe_event,
+ tvb,
+ offset,
+ 1,
+ event,
+ "%s (%d)",
+ val_to_str_ext_const(event, &val_str_event_ext, "Unknown"),
+ event);
+
+ /* add text to the frame "INFO" column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s",
+ val_to_str_ext_const(event, &val_str_event_ext, "Unknown"));
+ /* update text of the main proto item */
+ /* XXX: Just dups the above proto_tree_add_uint_format_value() ?? */
+ proto_item_append_text(tree, ", %s",
+ val_to_str_ext_const(event, &val_str_event_ext, "Unknown"));
+
+ offset += 1;
+ length -= 1;
+
+ switch(event)
+ {
+ case OPCODE_EVT_BT_KEY_SHORTPRESS:
+ case OPCODE_EVT_BT_KEY_LONGPRESS:
+ case OPCODE_EVT_BT_KEY_VERYLONGPRESS:
+ case OPCODE_EVT_KEY_LINE:
+ case OPCODE_EVT_ONHOOK:
+ case OPCODE_EVT_OFFHOOK:
+ {
+ static const value_string str_struct[] = {
+ {0x00, "RJ9 Plug"},
+ {0x01, "BT Handset Link"},
+ {0, NULL}
+ };
+ proto_tree_add_text(tree,
+ tvb,
+ offset,
+ length,
+ "Value: %s (%d)",
+ val_to_str_const(tvb_get_guint8(tvb, offset), str_struct, "Unknown"), tvb_get_guint8(tvb, offset));
+ break;
+ }
+ case OPCODE_EVT_KEY_PRESS:
+ case OPCODE_EVT_KEY_RELEASE:
+ case OPCODE_EVT_KEY_SHORTPRESS:
+ case OPCODE_EVT_KEY_LONGPRESS:
+ case OPCODE_EVT_HELP:
+ {
+ /* utf8_value is the utf8 value to translate into Unicode with the decode_uft8 function */
+ guint64 utf8_value = 0;
+ guint64 unicode_value;
+ char *key_name;
+ int pt_length = length;
+ int pt_offset = offset;
+
+ while(pt_length > 0)
+ {
+ utf8_value = (utf8_value << 8) + tvb_get_guint8(tvb, pt_offset);
+ pt_offset += 1;
+ pt_length -= 1;
+ }
+ unicode_value = decode_utf8(utf8_value);
+ key_name = ep_alloc(30);
+ g_snprintf(key_name, 30, "\"%s\"", decode_key_name((int)unicode_value));
+
+ /* add text to the frame "INFO" column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
+ key_name);
+ /* update text of the main proto item */
+ proto_item_append_text(tree, ", %s",
+ key_name);
+
+ proto_tree_add_text(tree,
+ tvb,
+ offset,
+ length,
+ "Key Name: %s (UTF-8 Value: %s, Unicode Value: 0x%" G_GINT64_MODIFIER "x)",
+ key_name,
+ tvb_bytes_to_str(tvb, offset, length),
+ unicode_value);
+ break;
+ }
+ case OPCODE_EVT_ERROR_PROTOCOL:
+ case OPCODE_EVT_ERROR_CREATE:
+ case OPCODE_EVT_ERROR_DELETE:
+ case OPCODE_EVT_ERROR_SET_PROPERTY:
+ case OPCODE_EVT_ERROR_GET_PROPERTY:
+ {
+ decode_evt_error(tree, tvb, offset, length);
+ break;
+ }
+ case OPCODE_EVT_CONTEXT_SWITCH:
+ {
+ proto_tree_add_text(tree,
+ tvb,
+ offset,
+ 1,
+ "Context: %s",
+ val_to_str_const(tvb_get_guint8(tvb, offset),
+ servers_vals,
+ "Unknown"));
+ break;
+ }
+ case OPCODE_EVT_SUCCESS_CREATE:
+ case OPCODE_EVT_SUCCESS_DELETE:
+ case OPCODE_EVT_SUCCESS_SET_PROPERTY:
+ case OPCODE_EVT_SUCCESS_INSERT_ITEM:
+ case OPCODE_EVT_SUCCESS_DELETE_ITEM:
+ {
+ proto_tree_add_uint(tree, hf_noe_objectid, tvb, offset, 2, tvb_get_ntohs(tvb, offset));
+ break;
+ }
+ case OPCODE_EVT_WIDGETS_GC:
+ {
+ proto_tree_add_text(tree,
+ tvb,
+ offset,
+ 4,
+ "FreeMem: %d bytes",
+ tvb_get_ntohl(tvb, offset));
+ break;
+ }
+ case OPCODE_EVT_BT_BONDING_RESULT:
+ {
+ proto_tree_add_uint(tree, hf_noe_objectid, tvb, offset, 2, tvb_get_ntohs(tvb, offset));
+ offset += 2;
+ /*length -= 2;*/
+
+ proto_tree_add_text(tree,
+ tvb,
+ offset,
+ 1,
+ "Bonded: %d",
+ tvb_get_ntohs(tvb, offset));
+ offset += 1;
+ /*length -= 1;*/
+
+ proto_tree_add_text(tree,
+ tvb,
+ offset,
+ 1,
+ "Value: %d",
+ tvb_get_ntohs(tvb, offset));
+ break;
+ }
+ default:
+ {
+ proto_tree_add_uint(tree, hf_noe_objectid, tvb, offset, 2, tvb_get_ntohs(tvb, offset));
+ offset += 2;
+ length -= 2;
+
+ if (length > 0)
+ decode_tlv(tree, tvb, offset, length);
+ break;
+ }
+ }
}
/*-----------------------------------------------------------------------------
- METHOD DECODER
- This function decodes the method of an 0x15 (and 0x16) UA3G message.
- ---------------------------------------------------------------------------*/
-static void decode_mtd(proto_tree *tree,
- tvbuff_t *tvb,
- packet_info *pinfo,
- guint8 method,
- guint offset,
- guint length)
+ METHOD DECODER
+ This function decodes the method of an 0x15 (and 0x16) UA3G message.
+ ---------------------------------------------------------------------------*/
+static void decode_mtd(proto_tree *tree,
+ tvbuff_t *tvb,
+ packet_info *pinfo,
+ guint8 method,
+ guint offset,
+ guint length)
{
- guint8 class = tvb_get_guint8(tvb, offset);
-
- proto_tree_add_int_format_value(tree,
- hf_noe_class,
- tvb,
- offset,
- 1,
- class,
- "%s (%d)",
- val_to_str(class, val_str_class, "Unknown"),
- class);
-
- /* add text to the frame "INFO" column */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, " %s",
- val_to_str(class, val_str_class, "Unknown"));
- /* update text of the main proto item */
- proto_item_append_text(tree, ", %s",
- val_to_str(class, val_str_class, "Unknown"));
-
- offset++;
- length--;
-
- if(class >= C_DYNAMIC)
- {
- proto_tree_add_uint(tree, hf_noe_objectid, tvb, offset, 2, tvb_get_ntohs(tvb, offset));
- offset += 2;
- length -= 2;
- }
-
- switch(method)
- {
- case METHOD_INSERT_ITEM:
- {
- proto_tree_add_uint(tree,
- hf_noe_method_index,
- tvb,
- offset,
- 1,
- tvb_get_guint8(tvb, offset));
- offset += 1;
- length -= 1;
- if(length > 0)
- decode_tlv(tree, tvb, offset, length);
- break;
- }
- case METHOD_DELETE_ITEM:
- {
- proto_tree_add_uint(tree,
- hf_noe_method_index,
- tvb,
- offset,
- 1,
- tvb_get_guint8(tvb, offset));
- break;
- }
- case METHOD_GET_PROPERTY:
- {
- decode_getproperty_tlv(tree, tvb, offset, length);
- break;
- }
- default:
- {
- if(length > 0)
- decode_tlv(tree, tvb, offset, length);
- break;
- }
- }
+ guint8 class = tvb_get_guint8(tvb, offset);
+
+ proto_tree_add_int_format_value(tree,
+ hf_noe_class,
+ tvb,
+ offset,
+ 1,
+ class,
+ "%s (%d)",
+ val_to_str_ext_const(class, &val_str_class_ext, "Unknown"),
+ class);
+
+ /* add text to the frame "INFO" column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s",
+ val_to_str_ext_const(class, &val_str_class_ext, "Unknown"));
+ /* update text of the main proto item */
+ /* XXX: Just dups the above proto_tree_add_int_format_value() ?? */
+ proto_item_append_text(tree, ", %s",
+ val_to_str_ext_const(class, &val_str_class_ext, "Unknown"));
+
+ offset += 1;
+ length -= 1;
+
+ if (class >= C_DYNAMIC)
+ {
+ proto_tree_add_uint(tree, hf_noe_objectid, tvb, offset, 2, tvb_get_ntohs(tvb, offset));
+ offset += 2;
+ length -= 2;
+ }
+
+ switch(method)
+ {
+ case METHOD_INSERT_ITEM:
+ {
+ proto_tree_add_uint(tree,
+ hf_noe_method_index,
+ tvb,
+ offset,
+ 1,
+ tvb_get_guint8(tvb, offset));
+ offset += 1;
+ length -= 1;
+ if (length > 0)
+ decode_tlv(tree, tvb, offset, length);
+ break;
+ }
+ case METHOD_DELETE_ITEM:
+ {
+ proto_tree_add_uint(tree,
+ hf_noe_method_index,
+ tvb,
+ offset,
+ 1,
+ tvb_get_guint8(tvb, offset));
+ break;
+ }
+ case METHOD_GET_PROPERTY:
+ {
+ decode_getproperty_tlv(tree, tvb, offset, length);
+ break;
+ }
+ default:
+ {
+ if (length > 0)
+ decode_tlv(tree, tvb, offset, length);
+ break;
+ }
+ }
}
/*-----------------------------------------------------------------------------
NOE DISSECTOR
---------------------------------------------------------------------------*/
-static void dissect_noe(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static void dissect_noe(tvbuff_t *tvb,
+ packet_info *pinfo,
+ proto_tree *tree)
{
- proto_item *noe_item = NULL;
- proto_tree *noe_tree = NULL;
- gint length = 0;
- guint8 server = 0;
- gint offset = 0;
- guint8 method = 0xff;
- guint8 methodack = 0;
-
- (void)pinfo;
-
- if(tree)
- {
- noe_item = proto_tree_add_item(tree, proto_noe, tvb, 0, -1, ENC_NA);
- noe_tree = proto_item_add_subtree(noe_item, ett_noe);
-
- length = tvb_get_letohs(tvb, offset);
-
- proto_tree_add_uint(noe_tree,
- hf_noe_length,
- tvb,
- offset,
- 2,
- length);
- offset += 2;
-
- server = tvb_get_guint8(tvb, offset);
-
- /* add text to the frame "INFO" column */
- if(check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, " - NOE Protocol (%s)",
- val_to_str(server, VALS(servers_short_vals), "Unknown"));
-
- proto_tree_add_uint(noe_tree,
- hf_noe_server,
- tvb,
- offset,
- 1,
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
-
- /* update text of the main proto item */
- proto_item_append_text(noe_item, ", %s",
- val_to_str(server, VALS(servers_short_vals), "Unknown"));
-
- method = tvb_get_guint8(tvb, offset);
- methodack = (method & 0x80) ? 1 : 0;
- method = (method & 0x7f);
-
- proto_tree_add_uint_format_value(noe_tree,
- hf_noe_method,
- tvb,
- offset,
- 1,
- method,
- "%s (%d)",
- val_to_str(method, VALS(methods_vals), "Unknown"),
- method);
-
- if(method >= METHOD_INVALID)
- return;
-
- /* add text to the frame "INFO" column */
- if(check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
- val_to_str(method, VALS(methods_vals), "Unknown"));
-
- /* update text of the main proto item */
- proto_item_append_text(noe_item, ", %s",
- val_to_str(method, VALS(methods_vals), "Unknown"));
-
- if(method == METHOD_NOTIFY)
- {
- offset++;
- length--;
- decode_evt(noe_tree, tvb, pinfo, offset, length);
- }
- else
- /* Create, Delete, SetProperty, GetProperty, DeleteItem, InsertItem properties */
- {
- proto_tree_add_boolean(noe_tree,
- hf_noe_method_ack,
- tvb,
- offset,
- 1,
- methodack);
- offset++;
- length--;
- decode_mtd(noe_tree, tvb, pinfo, method, offset, length);
- }
- }
+ proto_item *noe_item;
+ proto_tree *noe_tree;
+ gint length;
+ guint8 server;
+ guint8 method;
+ gboolean methodack;
+ gint offset = 0;
+
+ noe_item = proto_tree_add_item(tree, proto_noe, tvb, 0, -1, ENC_NA);
+ noe_tree = proto_item_add_subtree(noe_item, ett_noe);
+
+ length = tvb_get_letohs(tvb, offset);
+
+ proto_tree_add_uint(noe_tree,
+ hf_noe_length,
+ tvb,
+ offset,
+ 2,
+ length);
+ offset += 2;
+
+ server = tvb_get_guint8(tvb, offset);
+
+ /* add text to the frame "INFO" column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, " - NOE Protocol (%s)",
+ val_to_str_const(server, servers_short_vals, "Unknown"));
+
+ proto_tree_add_uint(noe_tree,
+ hf_noe_server,
+ tvb,
+ offset,
+ 1,
+ server);
+ offset += 1;
+ length -= 1;;
+
+ /* update text of the main proto item */
+ proto_item_append_text(noe_item, ", %s",
+ val_to_str_const(server, servers_short_vals, "Unknown"));
+
+ method = tvb_get_guint8(tvb, offset);
+ methodack = (method & 0x80) != 0;
+ method = (method & 0x7f);
+
+ proto_tree_add_uint_format_value(noe_tree,
+ hf_noe_method,
+ tvb,
+ offset,
+ 1,
+ method,
+ "%s (%d)",
+ val_to_str_const(method, methods_vals, "Unknown"),
+ method);
+
+ if (method >= METHOD_INVALID)
+ return;
+
+ /* add text to the frame "INFO" column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
+ val_to_str_const(method, methods_vals, "Unknown"));
+
+ /* update text of the main proto item */
+ proto_item_append_text(noe_item, ", %s",
+ val_to_str_const(method, methods_vals, "Unknown"));
+
+ if (method == METHOD_NOTIFY)
+ {
+ offset += 1;
+ length -= 1;
+ decode_evt(noe_tree, tvb, pinfo, offset, length);
+ }
+ else
+ /* Create, Delete, SetProperty, GetProperty, DeleteItem, InsertItem properties */
+ {
+ proto_tree_add_boolean(noe_tree,
+ hf_noe_method_ack,
+ tvb,
+ offset,
+ 1,
+ methodack);
+ offset += 1;
+ length -= 1;
+ decode_mtd(noe_tree, tvb, pinfo, method, offset, length);
+ }
}
@@ -1471,184 +1485,181 @@ static void dissect_noe(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
---------------------------------------------------------------------------*/
void proto_register_noe(void)
{
- static hf_register_info hf_noe[] =
- {
- { &hf_noe_length,
- {
- "Length",
- "noe.length",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- "Method Length",
- HFILL
- }
- },
- { &hf_noe_server,
- {
- "Server",
- "noe.server",
- FT_UINT8,
- BASE_HEX,
- VALS(servers_vals),
- 0x0,
- "Method Opcode",
- HFILL
- }
- },
- { &hf_noe_method_ack,
- {
- "Ack",
- "noe.method_ack",
- FT_BOOLEAN,
- BASE_NONE,
- NULL,
- 0x0,
- "Method Acknowlege",
- HFILL
- }
- },
- { &hf_noe_method,
- {
- "Method",
- "noe.method",
- FT_UINT8,
- BASE_DEC,
- VALS(methods_vals),
- 0x0,
- "Method Opcode",
- HFILL
- }
- },
- { &hf_noe_class,
- {
- "Class",
- "noe.class",
- FT_INT8,
- BASE_DEC,
- NULL,
- 0x0,
- "Class Opcode",
- HFILL
- }
- },
- { &hf_noe_event,
- {
- "Event",
- "noe.event",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- "Event Opcode",
- HFILL
- }
- },
- { &hf_noe_objectid,
- {
- "Objectid",
- "noe.objectid",
- FT_UINT16,
- BASE_HEX,
- NULL,
- 0x0,
- "Object Identifier",
- HFILL
- }
- },
- { &hf_noe_method_index,
- {
- "ItemIndx",
- "noe.item_index",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- "Delete/Insert Index",
- HFILL
- }
- },
- { &hf_noe_pcode,
- {
- "Property",
- "noe.property",
- FT_INT8,
- BASE_DEC,
- NULL,
- 0x0,
- "Property Identifier",
- HFILL
- }
- },
- { &hf_noe_psize,
- {
- "PropLength",
- "noe.prop_len",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- "Property Length",
- HFILL
- }
- },
- { &hf_noe_errcode,
- {
- "ErrCode",
- "noe.errcode",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- "Error Code",
- HFILL
- }
- },
- { &hf_noe_aindx,
- {
- "ArrIndex",
- "noe.array_index",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- "Array Index",
- HFILL
- }
- }
- };
-
- static gint *ett[] =
- {
- &ett_noe,
- &ett_body,
- &ett_property,
- &ett_value,
- };
-
- /* NOE dissector registration */
- proto_noe = proto_register_protocol("NOE Protocol", "NOE", "noe");
-
- proto_register_field_array(proto_noe, hf_noe, array_length(hf_noe));
-
- register_dissector("noe", dissect_noe, proto_noe);
-
- /* Common subtree array registration */
- proto_register_subtree_array(ett, array_length(ett));
+ static hf_register_info hf_noe[] =
+ {
+ { &hf_noe_length,
+ {
+ "Length",
+ "noe.length",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "Method Length",
+ HFILL
+ }
+ },
+ { &hf_noe_server,
+ {
+ "Server",
+ "noe.server",
+ FT_UINT8,
+ BASE_HEX,
+ VALS(servers_vals),
+ 0x0,
+ "Method Opcode",
+ HFILL
+ }
+ },
+ { &hf_noe_method_ack,
+ {
+ "Ack",
+ "noe.method_ack",
+ FT_BOOLEAN,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ "Method Acknowledge",
+ HFILL
+ }
+ },
+ { &hf_noe_method,
+ {
+ "Method",
+ "noe.method",
+ FT_UINT8,
+ BASE_DEC,
+ VALS(methods_vals),
+ 0x0,
+ "Method Opcode",
+ HFILL
+ }
+ },
+ { &hf_noe_class,
+ {
+ "Class",
+ "noe.class",
+ FT_INT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "Class Opcode",
+ HFILL
+ }
+ },
+ { &hf_noe_event,
+ {
+ "Event",
+ "noe.event",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "Event Opcode",
+ HFILL
+ }
+ },
+ { &hf_noe_objectid,
+ {
+ "Objectid",
+ "noe.objectid",
+ FT_UINT16,
+ BASE_HEX,
+ NULL,
+ 0x0,
+ "Object Identifier",
+ HFILL
+ }
+ },
+ { &hf_noe_method_index,
+ {
+ "ItemIndx",
+ "noe.item_index",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "Delete/Insert Index",
+ HFILL
+ }
+ },
+ { &hf_noe_pcode,
+ {
+ "Property",
+ "noe.property",
+ FT_INT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "Property Identifier",
+ HFILL
+ }
+ },
+ { &hf_noe_psize,
+ {
+ "PropLength",
+ "noe.prop_len",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "Property Length",
+ HFILL
+ }
+ },
+ { &hf_noe_errcode,
+ {
+ "ErrCode",
+ "noe.errcode",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "Error Code",
+ HFILL
+ }
+ },
+ { &hf_noe_aindx,
+ {
+ "ArrIndex",
+ "noe.array_index",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "Array Index",
+ HFILL
+ }
+ }
+ };
+
+ static gint *ett[] =
+ {
+ &ett_noe,
+ &ett_body,
+ &ett_property,
+ &ett_value,
+ };
+
+ /* NOE dissector registration */
+ proto_noe = proto_register_protocol("NOE Protocol", "NOE", "noe");
+
+ proto_register_field_array(proto_noe, hf_noe, array_length(hf_noe));
+
+ register_dissector("noe", dissect_noe, proto_noe);
+
+ /* Common subtree array registration */
+ proto_register_subtree_array(ett, array_length(ett));
}
void proto_reg_handoff_noe(void)
{
- dissector_handle_t handle_noe = find_dissector("noe");
+#if 0 /* Future */
+ dissector_handle_t handle_noe = find_dissector("noe");
- /* hooking of UA on UAUDP */
- register_dissector_table("ua.opcode",
- "ua.opcode",
- FT_UINT8,
- BASE_HEX);
-
- dissector_add_uint("ua.opcode", 0x15, handle_noe);
+ /* hooking of NOE on UA */
+ dissector_add_uint("ua.opcode", 0x15, handle_noe);
+#endif
}
diff --git a/epan/dissectors/packet-nstrace.c b/epan/dissectors/packet-nstrace.c
index a5d07683f8..d7800c8ebd 100644
--- a/epan/dissectors/packet-nstrace.c
+++ b/epan/dissectors/packet-nstrace.c
@@ -41,7 +41,18 @@ static int hf_ns_devno = -1;
static int hf_ns_vlantag = -1;
static int hf_ns_coreid = -1;
+static int hf_ns_snode = -1;
+static int hf_ns_dnode = -1;
+static int hf_ns_clflags = -1;
+static int hf_ns_clflags_res = -1;
+static int hf_ns_clflags_rssh = -1;
+static int hf_ns_clflags_rss = -1;
+static int hf_ns_clflags_dfd = -1;
+static int hf_ns_clflags_fr = -1;
+static int hf_ns_clflags_fp = -1;
+
static gint ett_ns = -1;
+static gint ett_ns_flags = -1;
static const value_string ns_dir_vals[] = {
{ NSPR_PDPKTRACEFULLTX_V10, "TX" },
@@ -64,31 +75,49 @@ static const value_string ns_dir_vals[] = {
{ NSPR_PDPKTRACEPARTRX_V21, "RX" },
{ NSPR_PDPKTRACEFULLTX_V22, "TX" },
{ NSPR_PDPKTRACEFULLTX_V23, "TX" },
+ { NSPR_PDPKTRACEFULLTX_V24, "TX" },
{ NSPR_PDPKTRACEFULLTXB_V22, "TXB" },
{ NSPR_PDPKTRACEFULLTXB_V23, "TXB" },
+ { NSPR_PDPKTRACEFULLTXB_V24, "TXB" },
{ NSPR_PDPKTRACEFULLRX_V22, "RX" },
{ NSPR_PDPKTRACEFULLRX_V23, "RX" },
+ { NSPR_PDPKTRACEFULLRX_V24, "RX" },
+ { NSPR_PDPKTRACEFULLNEWRX_V24, "NEW_RX" },
{ NSPR_PDPKTRACEPARTTX_V22, "TX" },
{ NSPR_PDPKTRACEPARTTX_V23, "TX" },
+ { NSPR_PDPKTRACEPARTTX_V24, "TX" },
{ NSPR_PDPKTRACEPARTTXB_V22, "TXB" },
{ NSPR_PDPKTRACEPARTTXB_V23, "TXB" },
+ { NSPR_PDPKTRACEPARTTXB_V24, "TXB" },
{ NSPR_PDPKTRACEPARTRX_V22, "RX" },
{ NSPR_PDPKTRACEPARTRX_V23, "RX" },
+ { NSPR_PDPKTRACEPARTRX_V24, "RX" },
+ { NSPR_PDPKTRACEPARTNEWRX_V24, "NEW_RX" },
{ 0, NULL }
};
static dissector_handle_t eth_withoutfcs_handle;
+#define CL_FP 0x01
+#define CL_FR 0x02
+#define CL_DFD 0x04
+#define CL_RSS 0x08
+#define CL_RSSH 0x10
+#define CL_RES 0xE0
static void
dissect_nstrace(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *ns_tree = NULL;
- proto_item *ti = NULL;
+ proto_tree *ns_tree = NULL, *flagtree = NULL;
+ proto_item *ti = NULL, *flagitem = NULL;
struct nstr_phdr *pnstr = &(pinfo->pseudo_header->nstr);
tvbuff_t *next_tvb_eth_client;
- guint8 offset;
-
+ guint8 offset;
+ guint i, bpos;
+ emem_strbuf_t *flags_strbuf = ep_strbuf_new_label("None");
+ const gchar *flags[] = {"FP", "FR", "DFD", "SRSS", "RSSH"};
+ gboolean first_flag = TRUE;
+ guint8 flagoffset, flagval;
ti = proto_tree_add_protocol_format(tree, proto_nstrace, tvb, 0, pnstr->eth_offset, "NetScaler Packet Trace");
ns_tree = proto_item_add_subtree(ti, ett_ns);
@@ -98,6 +127,37 @@ dissect_nstrace(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
switch (pnstr->rec_type)
{
+
+ case NSPR_HEADER_VERSION204:
+
+ flagoffset = pnstr->clflags_offset;
+ flagval = tvb_get_guint8(tvb, flagoffset);
+
+ for (i = 0; i < 5; i++) {
+ bpos = 1 << i;
+ if (flagval & bpos) {
+ if (first_flag) {
+ ep_strbuf_truncate(flags_strbuf, 0);
+ }
+ ep_strbuf_append_printf(flags_strbuf, "%s%s", first_flag ? "" : ", ", flags[i]);
+ first_flag = FALSE;
+ }
+ }
+
+ proto_tree_add_item(ns_tree, hf_ns_snode, tvb, pnstr->srcnodeid_offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ns_tree, hf_ns_dnode, tvb, pnstr->destnodeid_offset, 2, ENC_LITTLE_ENDIAN);
+
+ flagitem = proto_tree_add_uint_format(ns_tree, hf_ns_clflags, tvb, flagoffset, 1, flagval,
+ "Cluster Flags: 0x%02x (%s)", flagval, flags_strbuf->str);
+ flagtree = proto_item_add_subtree(flagitem, ett_ns_flags);
+
+ proto_tree_add_boolean(flagtree, hf_ns_clflags_res, tvb, flagoffset, 1, flagval);
+ proto_tree_add_boolean(flagtree, hf_ns_clflags_rssh, tvb, flagoffset, 1, flagval);
+ proto_tree_add_boolean(flagtree, hf_ns_clflags_rss, tvb, flagoffset, 1, flagval);
+ proto_tree_add_boolean(flagtree, hf_ns_clflags_dfd, tvb, flagoffset, 1, flagval);
+ proto_tree_add_boolean(flagtree, hf_ns_clflags_fr, tvb, flagoffset, 1, flagval);
+ proto_tree_add_boolean(flagtree, hf_ns_clflags_fp, tvb, flagoffset, 1, flagval);
+
case NSPR_HEADER_VERSION203:
proto_tree_add_item(ns_tree, hf_ns_coreid, tvb, pnstr->coreid_offset, 2, ENC_LITTLE_ENDIAN);
/* fall through to next case */
@@ -161,10 +221,46 @@ proto_register_ns(void)
{ "Vlan", "nstrace.vlan", FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }},
+ { &hf_ns_snode,
+ { "Source Node", "nstrace.snode", FT_INT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_ns_dnode,
+ { "Destination Node", "nstrace.dnode", FT_INT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_ns_clflags,
+ { "Cluster Flags", "nstrace.flags", FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_ns_clflags_res,
+ { "Reserved", "nstrace.flags.res", FT_BOOLEAN, 8, TFS(&tfs_set_notset), CL_RES,
+ NULL, HFILL}},
+
+ { &hf_ns_clflags_rssh,
+ { "RSSHASH", "nstrace.flags.rssh", FT_BOOLEAN, 8, TFS(&tfs_set_notset), CL_RSSH,
+ NULL, HFILL}},
+
+ { &hf_ns_clflags_rss,
+ { "SRSS", "nstrace.flags.srss", FT_BOOLEAN, 8, TFS(&tfs_set_notset), CL_RSS,
+ NULL, HFILL}},
+
+ { &hf_ns_clflags_dfd,
+ { "DFD", "nstrace.flags.dfd", FT_BOOLEAN, 8, TFS(&tfs_set_notset), CL_DFD,
+ NULL, HFILL}},
+
+ { &hf_ns_clflags_fr,
+ { "Flow receiver (FR)", "nstrace.flags.fr", FT_BOOLEAN, 8, TFS(&tfs_set_notset), CL_FR,
+ NULL, HFILL}},
+
+ { &hf_ns_clflags_fp,
+ { "Flow processor (FP)", "nstrace.flags.fp", FT_BOOLEAN, 8, TFS(&tfs_set_notset), CL_FP,
+ NULL, HFILL}},
};
static gint *ett[] = {
&ett_ns,
+ &ett_ns_flags,
};
proto_nstrace = proto_register_protocol("NetScaler Trace", "NS Trace", "ns");
diff --git a/epan/dissectors/packet-nt-tpcp.c b/epan/dissectors/packet-nt-tpcp.c
index cd27809e82..e457f63e74 100644
--- a/epan/dissectors/packet-nt-tpcp.c
+++ b/epan/dissectors/packet-nt-tpcp.c
@@ -27,14 +27,10 @@
# include "config.h"
#endif
-#include <stdlib.h>
#include <string.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/addr_resolv.h> /* this is for get_hostname and get_udp_port */
@@ -81,6 +77,7 @@ static const value_string type_vals[] = {
/* Version info */
#define TPCP_VER_1 1
#define TPCP_VER_2 2
+
#define TPCP_VER_1_LENGTH 16
#define TPCP_VER_2_LENGTH 28
@@ -107,10 +104,10 @@ static gint ett_tpcp_flags = -1;
static void
dissect_tpcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- tpcpdu_t tpcph;
+ tpcpdu_t tpcph;
proto_tree *tpcp_tree = NULL, *field_tree = NULL;
proto_item *ti, *tf;
- guint8 length = TPCP_VER_1_LENGTH;
+ guint8 length = TPCP_VER_1_LENGTH;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "TPCP");
col_clear(pinfo->cinfo, COL_INFO);
@@ -118,7 +115,7 @@ dissect_tpcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* need to find out which version!! */
tpcph.version = tvb_get_guint8(tvb, 0);
/* as version 1 and 2 are so similar use the same structure, just don't use as much for version 1*/
- /* XXX: Doing a memcpy into a struct is *not* kosher */
+ /* XXX: Doing a memcpy into a struct is *not* kosher */
if (tpcph.version == TPCP_VER_1) {
length = TPCP_VER_1_LENGTH;
tvb_memcpy(tvb, (guint8 *) &tpcph, 0, length);
@@ -133,7 +130,7 @@ dissect_tpcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
tpcph.id = g_ntohs(tpcph.id);
tpcph.flags = g_ntohs(tpcph.flags);
tpcph.cport = g_ntohs(tpcph.cport);
- tpcph.signature = g_ntohl(tpcph.signature);
+ tpcph.signature = g_ntohl(tpcph.signature);
if (check_col(pinfo->cinfo, COL_INFO))
col_add_fstr(pinfo->cinfo, COL_INFO,"%s id %d CPort %s CIP %s SIP %s",
@@ -237,22 +234,22 @@ proto_register_tpcp(void)
};
- static gint *ett[] = {
- &ett_tpcp,
- &ett_tpcp_flags,
- };
+ static gint *ett[] = {
+ &ett_tpcp,
+ &ett_tpcp_flags,
+ };
- proto_tpcp = proto_register_protocol("Alteon - Transparent Proxy Cache Protocol",
- "TPCP", "tpcp");
- proto_register_field_array(proto_tpcp, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ proto_tpcp = proto_register_protocol("Alteon - Transparent Proxy Cache Protocol",
+ "TPCP", "tpcp");
+ proto_register_field_array(proto_tpcp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_tpcp(void)
{
- dissector_handle_t tpcp_handle;
+ dissector_handle_t tpcp_handle;
- tpcp_handle = create_dissector_handle(dissect_tpcp, proto_tpcp);
- dissector_add_uint("udp.port", UDP_PORT_TPCP, tpcp_handle);
+ tpcp_handle = create_dissector_handle(dissect_tpcp, proto_tpcp);
+ dissector_add_uint("udp.port", UDP_PORT_TPCP, tpcp_handle);
}
diff --git a/epan/dissectors/packet-ntlmssp.c b/epan/dissectors/packet-ntlmssp.c
index 262a198400..8a3f2ef1f8 100644
--- a/epan/dissectors/packet-ntlmssp.c
+++ b/epan/dissectors/packet-ntlmssp.c
@@ -313,7 +313,7 @@ static void printnbyte(const guint8* tab,int nb,const char* txt,const char* txt2
fprintf(stderr,"%s ",txt);
for(i=0;i<nb;i++)
{
- fprintf(stderr,"%02hhX ",*(tab+i));
+ fprintf(stderr,"%02X ",*(tab+i));
}
fprintf(stderr,"%s",txt2);
}
diff --git a/epan/dissectors/packet-ntp.c b/epan/dissectors/packet-ntp.c
index 15678e3002..fdb2288156 100644
--- a/epan/dissectors/packet-ntp.c
+++ b/epan/dissectors/packet-ntp.c
@@ -29,9 +29,8 @@
# include "config.h"
#endif
-#include <string.h>
-#include <time.h>
#include <math.h>
+
#include <glib.h>
#include <epan/packet.h>
@@ -585,11 +584,11 @@ static tvbparse_wanted_t* want_ignore;
const char *
tvb_ntp_fmt_ts(tvbuff_t *tvb, gint offset)
{
- guint32 tempstmp, tempfrac;
- time_t temptime;
- struct tm *bd;
- double fractime;
- char *buff;
+ guint32 tempstmp, tempfrac;
+ time_t temptime;
+ struct tm *bd;
+ double fractime;
+ char *buff;
tempstmp = tvb_get_ntohl(tvb, offset);
tempfrac = tvb_get_ntohl(tvb, offset+4);
@@ -606,7 +605,7 @@ tvb_ntp_fmt_ts(tvbuff_t *tvb, gint offset)
fractime = bd->tm_sec + tempfrac / NTP_FLOAT_DENOM;
buff=ep_alloc(NTP_TS_SIZE);
g_snprintf(buff, NTP_TS_SIZE,
- "%s %2d, %d %02d:%02d:%09.6f UTC",
+ "%s %2d, %d %02d:%02d:%09.6f UTC",
mon_names[bd->tm_mon],
bd->tm_mday,
bd->tm_year + 1900,
@@ -635,7 +634,7 @@ dissect_ntp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_tree *ntp_tree;
proto_item *ti = NULL;
- guint8 flags;
+ guint8 flags;
void (*dissector)(tvbuff_t *, proto_item *, guint8);
col_set_str(pinfo->cinfo, COL_PROTOCOL, "NTP");
@@ -679,17 +678,17 @@ dissect_ntp_std(tvbuff_t *tvb, proto_tree *ntp_tree, guint8 flags)
{
proto_tree *flags_tree;
proto_item *tf;
- guint8 stratum;
- guint8 ppoll;
- gint8 precision;
- double rootdelay;
- double rootdispersion;
- guint32 refid_addr;
+ guint8 stratum;
+ guint8 ppoll;
+ gint8 precision;
+ double rootdelay;
+ double rootdispersion;
+ guint32 refid_addr;
const gchar *buffc;
gchar *buff;
- int i;
- int macofs;
- gint maclen;
+ int i;
+ int macofs;
+ gint maclen;
tf = proto_tree_add_uint(ntp_tree, hf_ntp_flags, tvb, 0, 1, flags);
@@ -845,10 +844,10 @@ dissect_ntp_ext(tvbuff_t *tvb, proto_tree *ntp_tree, int offset)
{
proto_tree *ext_tree, *flags_tree;
proto_item *tf;
- guint16 extlen;
- int endoffset;
- guint8 flags;
- guint32 vallen, vallen_round, siglen;
+ guint16 extlen;
+ int endoffset;
+ guint8 flags;
+ guint32 vallen, vallen_round, siglen;
extlen = tvb_get_ntohs(tvb, offset+2);
if (extlen < 8) {
@@ -1031,18 +1030,18 @@ dissect_ntp_ctrl_clockstatus(tvbuff_t *tvb, proto_tree *status_tree, guint16 off
static void
dissect_ntp_ctrl(tvbuff_t *tvb, proto_tree *ntp_tree, guint8 flags)
{
- proto_tree *flags_tree;
- proto_item *tf;
- guint8 flags2;
-
- proto_tree *status_tree, *data_tree, *item_tree;
- proto_item *ts, *td, *ti;
- guint16 status;
- guint16 associd;
- guint16 datalen;
- guint16 data_offset;
-
- tvbparse_t *tt;
+ proto_tree *flags_tree;
+ proto_item *tf;
+ guint8 flags2;
+
+ proto_tree *status_tree, *data_tree, *item_tree;
+ proto_item *ts, *td, *ti;
+ guint16 status;
+ guint16 associd;
+ guint16 datalen;
+ guint16 data_offset;
+
+ tvbparse_t *tt;
tvbparse_elem_t *element;
tf = proto_tree_add_uint(ntp_tree, hf_ntp_flags, tvb, 0, 1, flags);
@@ -1194,7 +1193,7 @@ dissect_ntp_priv(tvbuff_t *tvb, proto_tree *ntp_tree, guint8 flags)
{
proto_tree *flags_tree;
proto_item *tf;
- guint8 auth_seq, impl, reqcode;
+ guint8 auth_seq, impl, reqcode;
tf = proto_tree_add_uint(ntp_tree, hf_ntp_flags, tvb, 0, 1, flags);
@@ -1317,88 +1316,88 @@ proto_register_ntp(void)
NULL, 0, NULL, HFILL }},
{ &hf_ntpctrl_flags2, {
- "Flags 2", "ntpctrl.flags2", FT_UINT8, BASE_HEX,
+ "Flags 2", "ntp.ctrl.flags2", FT_UINT8, BASE_HEX,
NULL, 0, "Flags (Response/Error/More/Opcode)", HFILL }},
{ &hf_ntpctrl_flags2_r, {
- "Response bit", "ntpctrl.flags2.r", FT_UINT8, BASE_DEC,
+ "Response bit", "ntp.ctrl.flags2.r", FT_UINT8, BASE_DEC,
VALS(ctrl_r_types), NTPCTRL_R_MASK, NULL, HFILL }},
{ &hf_ntpctrl_flags2_error, {
- "Error bit", "ntpctrl.flags2.error", FT_UINT8, BASE_DEC,
+ "Error bit", "ntp.ctrl.flags2.error", FT_UINT8, BASE_DEC,
NULL, NTPCTRL_ERROR_MASK, NULL, HFILL }},
{ &hf_ntpctrl_flags2_more, {
- "More bit", "ntpctrl.flags2.more", FT_UINT8, BASE_DEC,
+ "More bit", "ntp.ctrl.flags2.more", FT_UINT8, BASE_DEC,
NULL, NTPCTRL_MORE_MASK, NULL, HFILL }},
{ &hf_ntpctrl_flags2_opcode, {
- "Opcode", "ntpctrl.flags2.opcode", FT_UINT8, BASE_DEC,
+ "Opcode", "ntp.ctrl.flags2.opcode", FT_UINT8, BASE_DEC,
VALS(ctrl_op_types), NTPCTRL_OP_MASK, NULL, HFILL }},
{ &hf_ntpctrl_sequence, {
- "Sequence", "ntpctrl.sequence", FT_UINT16, BASE_DEC,
+ "Sequence", "ntp.ctrl.sequence", FT_UINT16, BASE_DEC,
NULL, 0, NULL, HFILL }},
{ &hf_ntpctrl_status, {
- "Status", "ntpctrl.status", FT_UINT16, BASE_DEC,
+ "Status", "ntp.ctrl.status", FT_UINT16, BASE_DEC,
NULL, 0, NULL, HFILL }},
{ &hf_ntpctrl_error_status_word, {
- "Error Status Word", "ntpctrl.err_status", FT_UINT16, BASE_DEC,
+ "Error Status Word", "ntp.ctrl.err_status", FT_UINT16, BASE_DEC,
VALS(ctrl_err_status_types), NTP_CTRL_ERRSTATUS_CODE_MASK, NULL, HFILL }},
{ &hf_ntpctrl_sys_status_li, {
- "Leap Indicator", "ntpctrl.sys_status.li", FT_UINT16, BASE_DEC,
+ "Leap Indicator", "ntp.ctrl.sys_status.li", FT_UINT16, BASE_DEC,
VALS(li_types), NTPCTRL_SYSSTATUS_LI_MASK, "Warning of an impending leap second to be inserted or deleted in the last minute of the current month", HFILL }},
{ &hf_ntpctrl_sys_status_clksrc, {
- "Clock Source", "ntpctrl.sys_status.clksrc", FT_UINT16, BASE_DEC,
+ "Clock Source", "ntp.ctrl.sys_status.clksrc", FT_UINT16, BASE_DEC,
VALS(ctrl_sys_status_clksource_types), NTPCTRL_SYSSTATUS_CLK_MASK, NULL, HFILL }},
{ &hf_ntpctrl_sys_status_count, {
- "System Event Counter", "ntpctrl.sys_status.count", FT_UINT16, BASE_DEC,
+ "System Event Counter", "ntp.ctrl.sys_status.count", FT_UINT16, BASE_DEC,
NULL, NTPCTRL_SYSSTATUS_COUNT_MASK, NULL, HFILL }},
{ &hf_ntpctrl_sys_status_code, {
- "System Event Code", "ntpctrl.sys_status.code", FT_UINT16, BASE_DEC,
+ "System Event Code", "ntp.ctrl.sys_status.code", FT_UINT16, BASE_DEC,
VALS(ctrl_sys_status_event_types), NTPCTRL_SYSSTATUS_CODE_MASK, NULL, HFILL }},
{ &hf_ntpctrl_peer_status_b0, {
- "Peer Status", "ntpctrl.peer_status.config", FT_UINT16, BASE_DEC,
+ "Peer Status", "ntp.ctrl.peer_status.config", FT_UINT16, BASE_DEC,
VALS(ctrl_peer_status_config_types), NTPCTRL_PEERSTATUS_CONFIG_MASK, NULL, HFILL }},
{ &hf_ntpctrl_peer_status_b1, {
- "Peer Status", "ntpctrl.peer_status.authenable", FT_UINT16, BASE_DEC,
+ "Peer Status", "ntp.ctrl.peer_status.authenable", FT_UINT16, BASE_DEC,
VALS(ctrl_peer_status_authenable_types), NTPCTRL_PEERSTATUS_AUTHENABLE_MASK, NULL, HFILL }},
{ &hf_ntpctrl_peer_status_b2, {
- "Peer Status", "ntpctrl.peer_status.authentic", FT_UINT16, BASE_DEC,
+ "Peer Status", "ntp.ctrl.peer_status.authentic", FT_UINT16, BASE_DEC,
VALS(ctrl_peer_status_authentic_types), NTPCTRL_PEERSTATUS_AUTHENTIC_MASK, NULL, HFILL }},
{ &hf_ntpctrl_peer_status_b3, {
- "Peer Status", "ntpctrl.peer_status.reach", FT_UINT16, BASE_DEC,
+ "Peer Status", "ntp.ctrl.peer_status.reach", FT_UINT16, BASE_DEC,
VALS(ctrl_peer_status_reach_types), NTPCTRL_PEERSTATUS_REACH_MASK, NULL, HFILL }},
{ &hf_ntpctrl_peer_status_b4, {
- "Peer Status: reserved", "ntpctrl.peer_status.reserved", FT_UINT16, BASE_DEC,
+ "Peer Status: reserved", "ntp.ctrl.peer_status.reserved", FT_UINT16, BASE_DEC,
NULL, NTPCTRL_PEERSTATUS_RESERVED_MASK, NULL, HFILL }},
{ &hf_ntpctrl_peer_status_selection, {
- "Peer Selection", "ntpctrl.peer_status.selection", FT_UINT16, BASE_DEC,
+ "Peer Selection", "ntp.ctrl.peer_status.selection", FT_UINT16, BASE_DEC,
VALS(ctrl_peer_status_selection_types), NTPCTRL_PEERSTATUS_SEL_MASK, NULL, HFILL }},
{ &hf_ntpctrl_peer_status_count, {
- "Peer Event Counter", "ntpctrl.peer_status.count", FT_UINT16, BASE_DEC,
+ "Peer Event Counter", "ntp.ctrl.peer_status.count", FT_UINT16, BASE_DEC,
NULL, NTPCTRL_PEERSTATUS_COUNT_MASK, NULL, HFILL }},
{ &hf_ntpctrl_peer_status_code, {
- "Peer Event Code", "ntpctrl.peer_status.code", FT_UINT16, BASE_DEC,
+ "Peer Event Code", "ntp.ctrl.peer_status.code", FT_UINT16, BASE_DEC,
VALS(ctrl_peer_status_event_types), NTPCTRL_PEERSTATUS_CODE_MASK, NULL, HFILL }},
{ &hf_ntpctrl_clk_status, {
- "Clock Status", "ntpctrl.clock_status.status", FT_UINT16, BASE_DEC,
+ "Clock Status", "ntp.ctrl.clock_status.status", FT_UINT16, BASE_DEC,
VALS(ctrl_clk_status_types), NTPCTRL_CLKSTATUS_STATUS_MASK, NULL, HFILL }},
{ &hf_ntpctrl_clk_status_code, {
- "Clock Event Code", "ntpctrl.clock_status.code", FT_UINT16, BASE_DEC,
+ "Clock Event Code", "ntp.ctrl.clock_status.code", FT_UINT16, BASE_DEC,
NULL, NTPCTRL_CLKSTATUS_CODE_MASK, NULL, HFILL }},
{ &hf_ntpctrl_data, {
- "Data", "ntpctrl.data", FT_NONE, BASE_NONE,
+ "Data", "ntp.ctrl.data", FT_NONE, BASE_NONE,
NULL, 0, NULL, HFILL }},
{ &hf_ntpctrl_item, {
- "Item", "ntpctrl.item", FT_NONE, BASE_NONE,
+ "Item", "ntp.ctrl.item", FT_NONE, BASE_NONE,
NULL, 0, NULL, HFILL }},
{ &hf_ntpctrl_associd, {
- "AssociationID", "ntpctrl.associd", FT_UINT16, BASE_DEC,
+ "AssociationID", "ntp.ctrl.associd", FT_UINT16, BASE_DEC,
NULL, 0, NULL, HFILL }},
{ &hf_ntpctrl_offset, {
- "Offset", "ntpctrl.offset", FT_UINT16, BASE_DEC,
+ "Offset", "ntp.ctrl.offset", FT_UINT16, BASE_DEC,
NULL, 0, NULL, HFILL }},
{ &hf_ntpctrl_count, {
- "Count", "ntpctrl.count", FT_UINT16, BASE_DEC,
+ "Count", "ntp.ctrl.count", FT_UINT16, BASE_DEC,
NULL, 0, NULL, HFILL }},
{ &hf_ntpctrl_trapmsg, {
- "Trap message", "ntpctrl.trapmsg", FT_STRING, BASE_NONE,
+ "Trap message", "ntp.ctrl.trapmsg", FT_STRING, BASE_NONE,
NULL, 0, NULL, HFILL }},
{ &hf_ntppriv_flags_r, {
@@ -1422,7 +1421,7 @@ proto_register_ntp(void)
{ &hf_ntppriv_reqcode, {
"Request code", "ntppriv.reqcode", FT_UINT8, BASE_DEC,
VALS(priv_rc_types), 0, NULL, HFILL }}
- };
+ };
static gint *ett[] = {
&ett_ntp,
&ett_ntp_flags,
diff --git a/epan/dissectors/packet-oipf.c b/epan/dissectors/packet-oipf.c
new file mode 100644
index 0000000000..e0423ccb17
--- /dev/null
+++ b/epan/dissectors/packet-oipf.c
@@ -0,0 +1,194 @@
+/* packet-oipf.c
+ * Dissector for Open IPTV Forum protocols
+ * Copyright 2012, Martin Kaiser <martin@kaiser.cx>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+/* This dissector supports the CI+ Content and Service Protection Gateway
+ (CSPG-CI+) as defined in in Open IPTV Forum Specification Volume 7 V2.1
+ http://www.openiptvforum.org/release_2.html */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+#include <epan/packet.h>
+
+static int proto_oipf_ciplus = -1;
+
+static dissector_handle_t oipf_ciplus_handle;
+
+static gint ett_oipf_ciplus = -1;
+
+static int hf_oipf_ciplus_cmd_id = -1;
+static int hf_oipf_ciplus_ca_sys_id = -1;
+static int hf_oipf_ciplus_trx_id = -1;
+static int hf_oipf_ciplus_send_datatype_nbr = -1;
+static int hf_oipf_ciplus_dat_id = -1;
+static int hf_oipf_ciplus_dat_len = -1;
+static int hf_oipf_ciplus_data = -1;
+
+/* the application id for this protocol in the CI+ SAS resource
+ this is actually a 64bit hex number, we can't use a 64bit number as a key
+ for the dissector table directly, we have to process it as a string
+ (the string must not be a local variable as glib stores a pointer to
+ it in the hash table) */
+static gchar *sas_app_id_str_oipf = "0x0108113101190000";
+
+static const value_string oipf_ciplus_cmd_id[] = {
+ { 0x01, "send_msg" },
+ { 0x02, "reply_msg" },
+ { 0x03, "parental_control_info" },
+ { 0x04, "rights_info" },
+ { 0x05, "system_info" },
+ { 0, NULL }
+};
+
+static const value_string oipf_ciplus_dat_id[] = {
+ { 0x01, "oipf_ca_vendor_specific_information" },
+ { 0x02, "oipf_country_code" },
+ { 0x03, "oipf_parental_control_url" },
+ { 0x04, "oipf_rating_type" },
+ { 0x05, "oipf_rating_value" },
+ { 0x06, "oipf_rights_issuer_url" },
+ { 0x07, "oipf_access_status" },
+ { 0x08, "oipf_status" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_oipf_ciplus(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
+{
+ gint msg_len;
+ proto_item *ti;
+ proto_tree *oipf_ciplus_tree = NULL;
+ guint offset = 0;
+ guint8 i, send_datatype_nbr;
+ guint16 dat_len;
+
+ /* an OIPF CI+ message minimally contains command_id (1 byte),
+ ca sys id (2 bytes), transaction id (4 bytes) and
+ number of sent datatypes (1 byte) */
+ msg_len = tvb_reported_length(tvb);
+ if (msg_len < 8)
+ return 0;
+
+ if (tree) {
+ ti = proto_tree_add_text(tree, tvb, 0, msg_len, "Open IPTV Forum CSPG-CI+");
+ oipf_ciplus_tree = proto_item_add_subtree(ti, ett_oipf_ciplus);
+ }
+
+ proto_tree_add_item(oipf_ciplus_tree, hf_oipf_ciplus_cmd_id,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(oipf_ciplus_tree, hf_oipf_ciplus_ca_sys_id,
+ tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(oipf_ciplus_tree, hf_oipf_ciplus_trx_id,
+ tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ send_datatype_nbr = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(oipf_ciplus_tree, hf_oipf_ciplus_send_datatype_nbr,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ for (i=0; i<send_datatype_nbr; i++) {
+ proto_tree_add_item(oipf_ciplus_tree, hf_oipf_ciplus_dat_id,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ dat_len = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_item(oipf_ciplus_tree, hf_oipf_ciplus_dat_len,
+ tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(oipf_ciplus_tree, hf_oipf_ciplus_data,
+ tvb, offset, dat_len, ENC_BIG_ENDIAN);
+ offset += dat_len;
+ }
+
+ return offset;
+}
+
+void
+proto_register_oipf(void)
+{
+ static gint *ett[] = {
+ &ett_oipf_ciplus
+ };
+
+ static hf_register_info hf[] = {
+ { &hf_oipf_ciplus_cmd_id,
+ { "Command ID", "oipf.ciplus.cmd_id", FT_UINT8, BASE_HEX,
+ VALS(oipf_ciplus_cmd_id), 0, NULL, HFILL } },
+ { &hf_oipf_ciplus_ca_sys_id,
+ { "CA system ID", "oipf.ciplus.ca_system_id", FT_UINT16, BASE_HEX,
+ NULL, 0, NULL, HFILL } },
+ { &hf_oipf_ciplus_trx_id,
+ { "Transaction ID", "oipf.ciplus.transaction_id",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL } },
+ { &hf_oipf_ciplus_send_datatype_nbr,
+ { "Number of data items", "oipf.ciplus.num_items", FT_UINT8,
+ BASE_DEC, NULL, 0, NULL, HFILL } },
+ { &hf_oipf_ciplus_dat_id,
+ { "Datatype ID", "oipf.ciplus.datatype_id", FT_UINT8, BASE_HEX,
+ VALS(oipf_ciplus_dat_id), 0, NULL, HFILL } },
+ { &hf_oipf_ciplus_dat_len,
+ { "Datatype length", "oipf.ciplus.datatype_len", FT_UINT16,
+ BASE_DEC, NULL, 0, NULL, HFILL } },
+ { &hf_oipf_ciplus_data,
+ { "Data", "oipf.ciplus.data", FT_BYTES, BASE_NONE,
+ NULL, 0, NULL, HFILL } }
+ };
+
+ proto_oipf_ciplus = proto_register_protocol(
+ "Open IPTV Forum CSPG-CI+", "OIPF CI+", "oipf.ciplus");
+ proto_register_field_array(proto_oipf_ciplus, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ oipf_ciplus_handle =
+ new_create_dissector_handle(dissect_oipf_ciplus, proto_oipf_ciplus);
+}
+
+
+void
+proto_reg_handoff_oipf(void)
+{
+ dissector_add_string("dvb-ci.sas.app_id_str",
+ sas_app_id_str_oipf, oipf_ciplus_handle);
+}
+
+/*
+ * Editor modelines - http://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vi: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
+ */
diff --git a/epan/dissectors/packet-olsr.c b/epan/dissectors/packet-olsr.c
index 504d1beab6..3d6fbd2540 100644
--- a/epan/dissectors/packet-olsr.c
+++ b/epan/dissectors/packet-olsr.c
@@ -34,17 +34,8 @@
# include "config.h"
#endif
-#include <stdlib.h>
#include <string.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-omron-fins.c b/epan/dissectors/packet-omron-fins.c
index 2641f28229..f3c14f608b 100644
--- a/epan/dissectors/packet-omron-fins.c
+++ b/epan/dissectors/packet-omron-fins.c
@@ -788,7 +788,7 @@ static const value_string omron_days[] = {
static const value_string omron_file_parameter_codes[] = {
{ 0x0000, "Write new file, do not overwrite" },
{ 0x0001, "Write new file, overwrite" },
- { 0x0002, "Appened to file " },
+ { 0x0002, "Append to file " },
{ 0x0003, "Overwite file" },
{ 0, NULL } };
@@ -3291,22 +3291,22 @@ proto_register_omron_fins(void)
{ "Gateway Count", "omron.gct", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_omron_dna,
- { "Destination network address", "omron.dna", FT_UINT8, BASE_RANGE_STRING|BASE_HEX, RVALS(&omron_dna_range), 0x0, NULL, HFILL }},
+ { "Destination network address", "omron.dna", FT_UINT8, BASE_RANGE_STRING|BASE_HEX, RVALS(omron_dna_range), 0x0, NULL, HFILL }},
{ &hf_omron_da1,
- { "Destination node number", "omron.da1", FT_UINT8, BASE_RANGE_STRING|BASE_HEX, RVALS(&omron_da1_range), 0x0, NULL, HFILL }},
+ { "Destination node number", "omron.da1", FT_UINT8, BASE_RANGE_STRING|BASE_HEX, RVALS(omron_da1_range), 0x0, NULL, HFILL }},
{ &hf_omron_da2,
- { "Destination unit address", "omron.da2", FT_UINT8, BASE_RANGE_STRING|BASE_HEX, RVALS(&omron_da2_range), 0x0, NULL, HFILL }},
+ { "Destination unit address", "omron.da2", FT_UINT8, BASE_RANGE_STRING|BASE_HEX, RVALS(omron_da2_range), 0x0, NULL, HFILL }},
{ &hf_omron_sna,
- { "Source network address", "omron.sna", FT_UINT8, BASE_RANGE_STRING|BASE_HEX, RVALS(&omron_sna_range), 0x0, NULL, HFILL }},
+ { "Source network address", "omron.sna", FT_UINT8, BASE_RANGE_STRING|BASE_HEX, RVALS(omron_sna_range), 0x0, NULL, HFILL }},
{ &hf_omron_sa1,
- { "Source node number", "omron.sa1", FT_UINT8, BASE_RANGE_STRING|BASE_HEX, RVALS(&omron_sa1_range), 0x0, NULL, HFILL }},
+ { "Source node number", "omron.sa1", FT_UINT8, BASE_RANGE_STRING|BASE_HEX, RVALS(omron_sa1_range), 0x0, NULL, HFILL }},
{ &hf_omron_sa2,
- { "Source unit address", "omron.sa2", FT_UINT8, BASE_RANGE_STRING|BASE_HEX, RVALS(&omron_sa2_range), 0x0, NULL, HFILL }},
+ { "Source unit address", "omron.sa2", FT_UINT8, BASE_RANGE_STRING|BASE_HEX, RVALS(omron_sa2_range), 0x0, NULL, HFILL }},
{ &hf_omron_sid,
{ "Service ID", "omron.sid", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
@@ -3590,7 +3590,7 @@ proto_register_omron_fins(void)
{ &hf_omron_network_address,
{ "Network address", "omron.network_address", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_omron_error_reset_fals_no,
- { "Error reset FAL no.", "omron.error_reset_fals_no", FT_UINT16, BASE_RANGE_STRING|BASE_HEX, RVALS(&omron_error_reset_range), 0x0, NULL, HFILL }},
+ { "Error reset FAL no.", "omron.error_reset_fals_no", FT_UINT16, BASE_RANGE_STRING|BASE_HEX, RVALS(omron_error_reset_range), 0x0, NULL, HFILL }},
{ &hf_omron_beginning_record_no,
{ "Beginning record no.", "omron.beginning_record_no", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_omron_no_of_records,
diff --git a/epan/dissectors/packet-opensafety.c b/epan/dissectors/packet-opensafety.c
index b1e4d461da..2eee959363 100644
--- a/epan/dissectors/packet-opensafety.c
+++ b/epan/dissectors/packet-opensafety.c
@@ -50,6 +50,7 @@
#include <epan/expert.h>
#include <epan/strutil.h>
#include <epan/dissectors/packet-udp.h>
+#include <epan/dissectors/packet-frame.h>
#include <wsutil/crc8.h>
#include <wsutil/crc16.h>
@@ -253,6 +254,24 @@ static const true_false_string opensafety_sacmd_blk = { "Block Transfer", "Norm
#define OPENSAFETY_SPDO_CONNECTION_VALID 0x04
+static const value_string sod_idx_names[] = {
+ /* SSDO dictionary names, only names that are in common use are presented */
+
+ { 0x10180000, "Device Vendor Information" },
+ { 0x10180001, "VendorID" },
+ { 0x10180002, "ProductCode" },
+ { 0x10180003, "RevisionNumber" },
+ { 0x10180004, "SerialNumber" },
+ { 0x10180005, "FirmWareChecksum" },
+ { 0x10180006, "Parameter Checksum" },
+ { 0x10180007, "Parameter Timestamp" },
+
+ { 0x10190000, "Unique Device ID" },
+ { 0x101A0000, "Parameter Download" },
+ { 0x101B0000, "SCM Parameters" },
+
+ { 0, NULL }
+};
static const value_string abort_codes[] = {
@@ -377,6 +396,7 @@ static int hf_oss_ssdo_sacmd_end_segment = -1;
static int hf_oss_ssdo_sacmd_block_transfer = -1;
static int hf_oss_scm_udid = -1;
+static int hf_oss_scm_udid_auto = -1;
static int hf_oss_scm_udid_valid = -1;
static int hf_oss_spdo_connection_valid = -1;
@@ -389,14 +409,48 @@ static int hf_oss_spdo_time_request_to = -1;
static int hf_oss_spdo_time_request_from = -1;
static const char *global_scm_udid = "00:00:00:00:00:00";
+static gboolean global_scm_udid_autoset = TRUE;
static gboolean global_udp_frame2_first = FALSE;
static gboolean global_mbtcp_big_endian = FALSE;
static guint global_network_udp_port = UDP_PORT_OPENSAFETY;
static guint global_network_udp_port_sercosiii = UDP_PORT_SIII;
+static gboolean bDissector_Called_Once_Before = FALSE;
+/* Using local_scm_udid as read variable for global_scm_udid, to
+ * enable automatic detection of scm udid */
+static char *local_scm_udid = NULL;
+
+/* Resets the dissector in case the dissection is malformed and the dissector crashes */
+static void
+reset_dissector(void)
+{
+ bDissector_Called_Once_Before = FALSE;
+}
+
+static void
+setup_dissector(void)
+{
+ if ( local_scm_udid != NULL )
+ local_scm_udid = NULL;
+}
+
void proto_register_opensafety(void);
void proto_reg_handoff_opensafety(void);
+void opensafety_add_expert_note(packet_info *pinfo, proto_item *pi, int group, int severity, const char *format, ...)
+{
+ va_list ap;
+
+ va_start(ap, format);
+ expert_add_info_format(pinfo, pi, group, severity, format, ap);
+ va_end(ap);
+}
+
+#define opensafety_add_warning(pinf, pi, fmt) opensafety_add_expert_note (pinf, pi, PI_PROTOCOL, PI_WARN, fmt)
+#define opensafety_add_warning1(pinf, pi, fmt, arg1) opensafety_add_expert_note (pinf, pi, PI_PROTOCOL, PI_WARN, fmt, arg1)
+#define opensafety_add_error(pinf, pi, fmt) opensafety_add_expert_note (pinf, pi, PI_MALFORMED, PI_ERROR, fmt)
+#define opensafety_add_note(pinf, pi, fmt) opensafety_add_expert_note (pinf, pi, PI_UNDECODED, PI_NOTE, fmt)
+
/* Conversation functions */
/* This is defined by the specification. The Address field is 10 bits long, and the node with the number
@@ -418,7 +472,7 @@ void proto_reg_handoff_opensafety(void);
psf_item = proto_tree_add_uint_format_value(psf_tree, hf_oss_msg_network, message_tvb, posnet, 2, sdn, "0x%04X", sdn); \
} else if ( sdn <= 0 ) { \
psf_item = proto_tree_add_uint_format_value(psf_tree, hf_oss_msg_network, message_tvb, posnet, 2, sdn * -1, "0x%04X", sdn * -1); \
- expert_add_info_format(pinfo, psf_item, PI_UNDECODED, PI_NOTE, "SCM UDID unknown, assuming 00 as first UDID octet" ); \
+ opensafety_add_note(pinfo, psf_item, "SCM UDID unknown, assuming 00 as first UDID octet" ); \
} \
PROTO_ITEM_SET_GENERATED(psf_item); \
}
@@ -437,7 +491,7 @@ void proto_reg_handoff_opensafety(void);
psf_item = proto_tree_add_uint_format_value(psf_tree, hf_oss_msg_network, message_tvb, posnet, 2, sdn, "0x%04X", sdn); \
} else if ( sdn <= 0 ) { \
psf_item = proto_tree_add_uint_format_value(psf_tree, hf_oss_msg_network, message_tvb, posnet, 2, sdn * -1, "0x%04X", sdn * -1); \
- expert_add_info_format(pinfo, psf_item, PI_UNDECODED, PI_NOTE, "SCM UDID unknown, assuming 00 as first UDID octet" ); \
+ opensafety_add_note(pinfo, psf_item, "SCM UDID unknown, assuming 00 as first UDID octet" ); \
} \
PROTO_ITEM_SET_GENERATED(psf_item); \
}
@@ -452,10 +506,10 @@ void proto_reg_handoff_opensafety(void);
static guint16
findFrame1Position ( guint8 byteStream[], guint8 dataLength, gboolean checkIfSlimMistake )
{
- guint16 i_wFrame1Position = 0;
+ guint16 i_wFrame1Position = 0;
guint16 i_payloadLength, i_calculatedLength = 0;
- guint16 i_offset = 0, calcCRC = 0, frameCRC = 0;
- guint8 b_tempByte = 0;
+ guint16 i_offset = 0, calcCRC = 0, frameCRC = 0;
+ guint8 b_tempByte = 0;
/*
* First, a normal package get's assumed. Calculation of frame 1 position is
@@ -514,11 +568,11 @@ findFrame1Position ( guint8 byteStream[], guint8 dataLength, gboolean checkIfSli
/*
* This function applies the given UDID to the bytestream, considering the start of frame 2
*/
-static guint8 * unxorFrame(guint dataLength, guint8 byteStream[], guint16 frameStart1, guint16 frameStart2, guint8 scmUDID[])
+static guint8 *unxorFrame(guint dataLength, guint8 byteStream[], guint16 frameStart1, guint16 frameStart2, guint8 scmUDID[])
{
guint8 * pb_sendMemBlock;
- guint k;
- guint8 frame1Size;
+ guint k;
+ guint8 frame1Size;
frame1Size = ( frameStart2 > frameStart1 ? frameStart2 : dataLength - frameStart1 );
frame1Size = MIN(frame1Size, dataLength);
@@ -533,11 +587,11 @@ static guint8 * unxorFrame(guint dataLength, guint8 byteStream[], guint16 frameS
return pb_sendMemBlock;
}
-static guint8 findSafetyFrame ( guint8 * pBuffer, guint32 length, guint u_Offset, gboolean b_frame2first, guint *u_frameOffset, guint *u_frameLength )
+static guint8 findSafetyFrame ( guint8 *pBuffer, guint32 length, guint u_Offset, gboolean b_frame2first, guint *u_frameOffset, guint *u_frameLength )
{
- guint n;
- guint16 crc, calcCrc;
- guint8 b_ID, b_Length, crcOffset, leftShifted;
+ guint n;
+ guint16 crc, calcCrc;
+ guint8 b_ID, b_Length, crcOffset, leftShifted;
gboolean found;
found = 0;
@@ -622,14 +676,14 @@ static guint8 findSafetyFrame ( guint8 * pBuffer, guint32 length, guint u_Offset
static void
dissect_opensafety_spdo_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *opensafety_tree,
- guint8 * bytes, guint16 frameStart1, guint16 frameStart2 , gboolean validSCMUDID)
+ guint8 *bytes, guint16 frameStart1, guint16 frameStart2 , gboolean validSCMUDID)
{
proto_item *item;
proto_tree *spdo_tree;
- guint16 ct;
- gint16 taddr;
- guint dataLength;
- guint8 tr, b_ID, conn_Valid;
+ guint16 ct;
+ gint16 taddr;
+ guint dataLength;
+ guint8 tr, b_ID, conn_Valid;
dataLength = tvb_get_guint8(message_tvb, OSS_FRAME_POS_LEN + frameStart1);
b_ID = ( bytes[frameStart1 + 1] >> 3 ) << 3;
@@ -647,9 +701,6 @@ dissect_opensafety_spdo_message(tvbuff_t *message_tvb, packet_info *pinfo, proto
/* An SPDO get's always send by the producer, to everybody else */
PACKET_SENDER( pinfo, OSS_FRAME_ADDR(bytes, frameStart1), OSS_FRAME_POS_ADDR + frameStart1, frameStart2, taddr );
- if ( taddr < 0 )
- taddr = 0;
-
item = proto_tree_add_uint_format_value(opensafety_tree, hf_oss_msg_category, message_tvb,
OSS_FRAME_POS_ID + frameStart1, 1, OPENSAFETY_SPDO_MESSAGE_TYPE,
"%s", val_to_str_const(OPENSAFETY_SPDO_MESSAGE_TYPE, message_id_values, "Unknown") );
@@ -711,19 +762,21 @@ dissect_opensafety_spdo_message(tvbuff_t *message_tvb, packet_info *pinfo, proto
static void
-dissect_opensafety_ssdo_message(tvbuff_t *message_tvb , packet_info * pinfo, proto_tree *opensafety_tree ,
- guint8 * bytes, guint16 frameStart1, guint16 frameStart2 , gboolean validSCMUDID)
+dissect_opensafety_ssdo_message(tvbuff_t *message_tvb , packet_info *pinfo, proto_tree *opensafety_tree ,
+ guint8 *bytes, guint16 frameStart1, guint16 frameStart2 , gboolean validSCMUDID)
{
proto_item *item;
proto_tree *ssdo_tree, *ssdo_sacmd_tree;
- guint16 taddr = 0 ;
- guint32 abortcode;
- guint8 db0Offset, db0, sacmd, payloadOffset, payloadSize, n;
- guint dataLength;
- gboolean isRequest;
- guint8 * payload;
+ guint16 taddr = 0, sdn = 0;
+ guint32 abortcode, ssdoIndex, ssdoSubIndex;
+ guint8 db0Offset, db0, sacmd, payloadOffset, payloadSize, n;
+ guint dataLength;
+ gint calcDataLength;
+ gboolean isResponse, decodePayload;
+ guint8 *payload;
dataLength = tvb_get_guint8(message_tvb, OSS_FRAME_POS_LEN + frameStart1);
+ decodePayload = FALSE;
db0Offset = frameStart1 + OSS_FRAME_POS_DATA;
db0 = bytes[db0Offset];
@@ -732,22 +785,27 @@ dissect_opensafety_ssdo_message(tvbuff_t *message_tvb , packet_info * pinfo, pro
if ( ( sacmd & OPENSAFETY_SSDO_SACMD_TGL ) == OPENSAFETY_SSDO_SACMD_TGL )
sacmd = sacmd & ( ~OPENSAFETY_SSDO_SACMD_TGL );
- isRequest = ( ( OSS_FRAME_ID(bytes, frameStart1) & 0x04 ) == 0x04 );
+ isResponse = ( ( OSS_FRAME_ID(bytes, frameStart1) & 0x04 ) == 0x04 );
if ( validSCMUDID )
{
/* taddr is the 4th octet in the second frame */
taddr = OSS_FRAME_ADDR(bytes, frameStart2 + 3);
+ sdn = ( OSS_FRAME_ADDR(bytes, frameStart1) ^ OSS_FRAME_ADDR(bytes, frameStart2) );
- PACKET_SENDER_RECEIVER( pinfo, OSS_FRAME_ADDR(bytes, frameStart1), frameStart1, taddr, frameStart2 + 3,
- frameStart2,
- ( ( OSS_FRAME_ADDR(bytes, frameStart1) ) ^ ( OSS_FRAME_ADDR(bytes, frameStart2) ) ));
+ PACKET_SENDER_RECEIVER ( pinfo, OSS_FRAME_ADDR(bytes, frameStart1), frameStart1, taddr,
+ frameStart2 + 3, frameStart2, sdn );
}
- else if ( ! isRequest )
+ else if ( ! isResponse )
{
PACKET_RECEIVER(pinfo, OSS_FRAME_ADDR(bytes, frameStart1), frameStart1, frameStart2,
-1 * ( ( OSS_FRAME_ADDR(bytes, frameStart1) ) ^ ( OSS_FRAME_ADDR(bytes, frameStart2) ) ) );
}
+ else if ( isResponse )
+ {
+ PACKET_SENDER(pinfo, OSS_FRAME_ADDR(bytes, frameStart1), frameStart1, frameStart2,
+ -1 * ( ( OSS_FRAME_ADDR(bytes, frameStart1) ) ^ ( OSS_FRAME_ADDR(bytes, frameStart2) ) ) );
+ }
if ( ( OSS_FRAME_ID(bytes, frameStart1) == OPENSAFETY_MSG_SSDO_SLIM_SERVICE_REQUEST ) ||
( OSS_FRAME_ID(bytes, frameStart1) == OPENSAFETY_MSG_SSDO_SLIM_SERVICE_RESPONSE ) )
@@ -773,7 +831,8 @@ dissect_opensafety_ssdo_message(tvbuff_t *message_tvb , packet_info * pinfo, pro
OSS_FRAME_ID(bytes, frameStart1),
"%s", val_to_str_const(OSS_FRAME_ID(bytes, frameStart1), message_type_values, "Unknown") );
- if ( isRequest )
+
+ if ( isResponse )
{
if ( validSCMUDID )
{
@@ -785,7 +844,7 @@ dissect_opensafety_ssdo_message(tvbuff_t *message_tvb , packet_info * pinfo, pro
proto_tree_add_uint(ssdo_tree, hf_oss_ssdo_server, message_tvb, frameStart1, 2, OSS_FRAME_ADDR(bytes, frameStart1));
}
}
- else if ( ! isRequest )
+ else if ( ! isResponse )
{
if ( validSCMUDID )
{
@@ -818,9 +877,24 @@ dissect_opensafety_ssdo_message(tvbuff_t *message_tvb , packet_info * pinfo, pro
( sacmd == OPENSAFETY_MSG_SSDO_ABORT )
)
{
- proto_tree_add_uint(ssdo_tree, hf_oss_ssdo_sod_index, message_tvb, db0Offset + 1, 2,
- ((guint16)(bytes[db0Offset + 2] << 8) + bytes[db0Offset + 1]));
- proto_tree_add_uint(ssdo_tree, hf_oss_ssdo_sod_subindex, message_tvb, db0Offset + 3, 1, bytes[db0Offset + 3]);
+ ssdoIndex = ((guint16)(bytes[db0Offset + 2] << 8) + bytes[db0Offset + 1]);
+ ssdoSubIndex = bytes[db0Offset + 3];
+
+ proto_tree_add_uint_format_value(ssdo_tree, hf_oss_ssdo_sod_index, message_tvb, db0Offset + 1, 2,
+ ssdoIndex, "0x%04X (%s)", ssdoIndex,
+ val_to_str_const(((guint32) (ssdoIndex << 16)), sod_idx_names, "Unknown") );
+ col_append_fstr(pinfo->cinfo, COL_INFO, " [%s", val_to_str_const(((guint32) (ssdoIndex << 16)), sod_idx_names, "0x%04X"));
+
+ /* Some SOD downloads (0x101A for instance) don't have sub-indeces */
+ if ( ssdoSubIndex != 0x0 )
+ {
+ proto_tree_add_uint_format_value(ssdo_tree, hf_oss_ssdo_sod_subindex, message_tvb, db0Offset + 3, 1,
+ ssdoSubIndex, "0x%02X (%s)", ssdoSubIndex,
+ val_to_str_const(((guint32) (ssdoIndex << 16) + ssdoSubIndex), sod_idx_names, "Unknown") );
+ col_append_fstr(pinfo->cinfo, COL_INFO, " - %s",
+ val_to_str_const(((guint32) (ssdoIndex << 16) + ssdoSubIndex), sod_idx_names, "0x%02X"));
+ }
+ col_append_fstr(pinfo->cinfo, COL_INFO, "%s", "]" );
payloadOffset += 3;
}
@@ -835,63 +909,82 @@ dissect_opensafety_ssdo_message(tvbuff_t *message_tvb , packet_info * pinfo, pro
val_to_str_const(abortcode, abort_codes, "Unknown"));
- } else if ( ( isRequest && (sacmd == OPENSAFETY_MSG_SSDO_DOWNLOAD_INITIATE_SEGMENTED ||
- sacmd == OPENSAFETY_MSG_SSDO_DOWNLOAD_INITIATE_EXPEDITED ||
- sacmd == OPENSAFETY_MSG_SSDO_DOWNLOAD_SEGMENT_MIDDLE ||
- sacmd == OPENSAFETY_MSG_SSDO_DOWNLOAD_SEGMENT_END
- ) ) ||
- ( !isRequest && (sacmd == OPENSAFETY_MSG_SSDO_UPLOAD_INITIATE_EXPEDITED ||
- sacmd == OPENSAFETY_MSG_SSDO_UPLOAD_INITIATE_SEGMENTED ||
- sacmd == OPENSAFETY_MSG_SSDO_UPLOAD_SEGMENT_MIDDLE ||
- sacmd == OPENSAFETY_MSG_SSDO_UPLOAD_SEGMENT_END
- ) )
- )
- {
- if ( ( sacmd == OPENSAFETY_MSG_SSDO_DOWNLOAD_INITIATE_SEGMENTED ) || ( sacmd == OPENSAFETY_MSG_SSDO_UPLOAD_INITIATE_SEGMENTED ) )
+ } else {
+
+ /* Either the SSDO msg is a response, then data is sent by the server and only in uploads,
+ * or the message is a request, then data is comming from the client and payload data is
+ * sent in downloads */
+ if ( ( isResponse && (sacmd == OPENSAFETY_MSG_SSDO_UPLOAD_INITIATE_SEGMENTED ||
+ sacmd == OPENSAFETY_MSG_SSDO_UPLOAD_INITIATE_EXPEDITED ||
+ sacmd == OPENSAFETY_MSG_SSDO_UPLOAD_SEGMENT_MIDDLE ||
+ sacmd == OPENSAFETY_MSG_SSDO_UPLOAD_SEGMENT_END ) )||
+ ( !isResponse && (sacmd == OPENSAFETY_MSG_SSDO_DOWNLOAD_INITIATE_SEGMENTED ||
+ sacmd == OPENSAFETY_MSG_SSDO_DOWNLOAD_INITIATE_EXPEDITED ||
+ sacmd == OPENSAFETY_MSG_SSDO_DOWNLOAD_SEGMENT_MIDDLE ||
+ sacmd == OPENSAFETY_MSG_SSDO_DOWNLOAD_SEGMENT_END ) ) )
+ {
+ decodePayload = TRUE;
+ }
+
+ if ( decodePayload )
{
- payloadOffset += 4;
- /* using payloadSize as helper var for for-loop */
- payloadSize = dataLength - (payloadOffset - db0Offset);
- payload = (guint8*)ep_alloc(sizeof(guint8)*payloadSize);
- for ( n = 0; n < payloadSize; n++)
- payload[payloadSize - n - 1] = bytes[frameStart1 + OSS_FRAME_POS_DATA + (payloadOffset - db0Offset) + n];
-
- /* reading real size */
- payloadSize = 0;
- for ( n = 0; n < 4; n++ )
+
+ /* If payload data has to be calculated, either a total size is given, or not */
+ if ( ( sacmd == OPENSAFETY_MSG_SSDO_DOWNLOAD_INITIATE_SEGMENTED ) ||
+ ( sacmd == OPENSAFETY_MSG_SSDO_UPLOAD_INITIATE_SEGMENTED )
+ )
{
- payloadSize += ( bytes[frameStart1 + OSS_FRAME_POS_DATA + 4 + n] ) << (8 * n);
- }
+ payloadOffset += 4;
+ /* using payloadSize as helper var for for-loop */
+ payloadSize = dataLength - (payloadOffset - db0Offset);
+ payload = (guint8*)ep_alloc(sizeof(guint8)*payloadSize);
+ for ( n = 0; n < payloadSize; n++)
+ payload[payloadSize - n - 1] = bytes[frameStart1 + OSS_FRAME_POS_DATA + (payloadOffset - db0Offset) + n];
+
+ /* reading real size */
+ payloadSize = 0;
+ for ( n = 0; n < 4; n++ )
+ {
+ payloadSize += ( bytes[frameStart1 + OSS_FRAME_POS_DATA + 4 + n] ) << (8 * n);
+ }
- proto_tree_add_uint_format_value(ssdo_tree, hf_oss_ssdo_payload_size, message_tvb, payloadOffset - 4, 4,
- payloadSize, "%d octets total (%d octets in this frame)", payloadSize, dataLength - (payloadOffset - db0Offset));
- proto_tree_add_bytes(ssdo_tree, hf_oss_ssdo_payload, message_tvb, payloadOffset,
- dataLength - (payloadOffset - db0Offset), payload );
- }
- else
- {
- payloadSize = dataLength - (payloadOffset - db0Offset);
- payload = (guint8*)ep_alloc(sizeof(guint8)*payloadSize);
- for ( n = 0; n < payloadSize; n++)
- payload[payloadSize - n - 1] = bytes[frameStart1 + OSS_FRAME_POS_DATA + (payloadOffset - db0Offset) + n];
+ calcDataLength = dataLength - (payloadOffset - db0Offset);
- item = proto_tree_add_uint_format_value(ssdo_tree, hf_oss_ssdo_payload_size, message_tvb, 0, 0, payloadSize,
- "%d octets", payloadSize);
- PROTO_ITEM_SET_GENERATED(item);
- proto_tree_add_bytes(ssdo_tree, hf_oss_ssdo_payload, message_tvb, payloadOffset, payloadSize, payload );
+ item = proto_tree_add_uint_format_value(ssdo_tree, hf_oss_ssdo_payload_size, message_tvb, payloadOffset - 4, 4,
+ payloadSize, "%d octets total (%d octets in this frame)", payloadSize, calcDataLength);
+ if ( (gint) calcDataLength > (gint) 0 )
+ {
+ proto_tree_add_bytes(ssdo_tree, hf_oss_ssdo_payload, message_tvb, payloadOffset, calcDataLength, payload );
+ } else {
+ opensafety_add_warning1(pinfo, item, "Calculation for payload length yielded non-positive result [%d]", (guint) calcDataLength );
+ }
+ }
+ else
+ {
+ payloadSize = dataLength - (payloadOffset - db0Offset);
+ payload = (guint8*)ep_alloc(sizeof(guint8)*payloadSize);
+ for ( n = 0; n < payloadSize; n++)
+ payload[payloadSize - n - 1] = bytes[frameStart1 + OSS_FRAME_POS_DATA + (payloadOffset - db0Offset) + n];
+
+ item = proto_tree_add_uint_format_value(ssdo_tree, hf_oss_ssdo_payload_size, message_tvb, 0, 0, payloadSize,
+ "%d octets", payloadSize);
+ PROTO_ITEM_SET_GENERATED(item);
+ proto_tree_add_bytes(ssdo_tree, hf_oss_ssdo_payload, message_tvb, payloadOffset, payloadSize, payload );
+ }
}
}
}
static void
dissect_opensafety_snmt_message(tvbuff_t *message_tvb, packet_info *pinfo , proto_tree *opensafety_tree,
- guint8 * bytes, guint16 frameStart1, guint16 frameStart2 )
+ guint8 *bytes, guint16 frameStart1, guint16 frameStart2 )
{
proto_item *item;
proto_tree *snmt_tree;
- guint16 addr, taddr;
- guint8 db0, byte;
- guint dataLength;
+ guint16 addr, taddr, sdn;
+ guint8 db0, byte;
+ guint dataLength;
+ char *tempString;
dataLength = OSS_FRAME_LENGTH(bytes, frameStart1);
@@ -899,6 +992,8 @@ dissect_opensafety_snmt_message(tvbuff_t *message_tvb, packet_info *pinfo , prot
addr = OSS_FRAME_ADDR(bytes, frameStart1);
/* taddr is the 4th octet in the second frame */
taddr = OSS_FRAME_ADDR(bytes, frameStart2 + 3);
+ /* domain is xor'ed on the first field in the second frame. As this is also addr, it is easy to obtain */
+ sdn = OSS_FRAME_ADDR(bytes, frameStart2) ^ addr;
db0 = -1;
if (dataLength > 0)
@@ -907,13 +1002,12 @@ dissect_opensafety_snmt_message(tvbuff_t *message_tvb, packet_info *pinfo , prot
if ( ( (OSS_FRAME_ID(bytes, frameStart1) ^ OPENSAFETY_MSG_SNMT_SERVICE_RESPONSE) == 0 ) &&
( (db0 ^ OPENSAFETY_MSG_SNMT_EXT_SCM_SET_TO_STOP) == 0 || (db0 ^ OPENSAFETY_MSG_SNMT_EXT_SCM_SET_TO_OP) == 0 ) )
{
- PACKET_RECEIVER( pinfo, addr, OSS_FRAME_POS_ADDR + frameStart1, frameStart2,
- ( OSS_FRAME_ADDR(bytes, frameStart1) ^ OSS_FRAME_ADDR(bytes, frameStart2) ) );
+ PACKET_RECEIVER( pinfo, addr, OSS_FRAME_POS_ADDR + frameStart1, frameStart2, sdn );
}
else
{
- PACKET_SENDER_RECEIVER ( pinfo, taddr, frameStart2 + 3, addr, OSS_FRAME_POS_ADDR + frameStart1, frameStart2,
- ( OSS_FRAME_ADDR(bytes, frameStart1) ^ OSS_FRAME_ADDR(bytes, frameStart2) ) );
+ PACKET_SENDER_RECEIVER ( pinfo, taddr, OSS_FRAME_POS_ADDR + frameStart1, frameStart2 + 3, addr,
+ frameStart2, sdn );
}
item = proto_tree_add_uint_format_value(opensafety_tree, hf_oss_msg_category, message_tvb, OSS_FRAME_POS_ID + frameStart1, 1,
@@ -960,8 +1054,21 @@ dissect_opensafety_snmt_message(tvbuff_t *message_tvb, packet_info *pinfo , prot
}
else if ( (db0 ^ OPENSAFETY_MSG_SNMT_EXT_SN_ASSIGNED_UDID_SCM) == 0 )
{
- proto_tree_add_ether(snmt_tree, hf_oss_snmt_udid, message_tvb, OSS_FRAME_POS_DATA + frameStart1 + 1,
+ item = proto_tree_add_ether(snmt_tree, hf_oss_snmt_udid, message_tvb, OSS_FRAME_POS_DATA + frameStart1 + 1,
6, tvb_get_ptr(message_tvb, OSS_FRAME_POS_DATA + frameStart1 + 1, 6));
+
+ if ( global_scm_udid_autoset == TRUE )
+ {
+ tempString = ep_alloc0(128 * sizeof(char));
+ g_snprintf ( tempString, 18, "%s", tvb_bytes_to_str_punct(message_tvb, OSS_FRAME_POS_DATA + frameStart1 + 1, 6, ':' ) );
+ if ( memcmp ( global_scm_udid, tempString, 17 ) != 0 )
+ {
+ local_scm_udid = se_alloc0(18 * sizeof(char));
+ g_snprintf(local_scm_udid, 18, "%s", tempString );
+ expert_add_info_format(pinfo, item, PI_PROTOCOL, PI_NOTE, "Auto detected payload as SCM UDID [%s].", tempString);
+ }
+ }
+
}
}
@@ -979,8 +1086,21 @@ dissect_opensafety_snmt_message(tvbuff_t *message_tvb, packet_info *pinfo , prot
{
proto_tree_add_uint(snmt_tree, hf_oss_snmt_master, message_tvb, OSS_FRAME_POS_ADDR + frameStart1, 2, addr);
proto_tree_add_uint(snmt_tree, hf_oss_snmt_slave, message_tvb, frameStart2 + 3, 2, taddr);
- proto_tree_add_ether(snmt_tree, hf_oss_snmt_udid, message_tvb, OSS_FRAME_POS_DATA + frameStart1 + 1,
+ item = proto_tree_add_ether(snmt_tree, hf_oss_snmt_udid, message_tvb, OSS_FRAME_POS_DATA + frameStart1 + 1,
6, tvb_get_ptr(message_tvb, OSS_FRAME_POS_DATA + frameStart1 + 1, 6));
+
+ if ( global_scm_udid_autoset == TRUE )
+ {
+ tempString = ep_alloc0(18 * sizeof(char));
+ g_snprintf ( tempString, 18, "%s", tvb_bytes_to_str_punct(message_tvb, OSS_FRAME_POS_DATA + frameStart1 + 1, 6, ':' ) );
+ if ( memcmp ( global_scm_udid, tempString, 17 ) != 0 )
+ {
+ local_scm_udid = se_alloc0(18 * sizeof(char));
+ g_snprintf(local_scm_udid, 18, "%s", tempString );
+ expert_add_info_format(pinfo, item, PI_PROTOCOL, PI_NOTE, "Auto detected payload as SCM UDID [%s].", tempString);
+ }
+ }
+
}
else
{
@@ -1030,15 +1150,15 @@ dissect_opensafety_snmt_message(tvbuff_t *message_tvb, packet_info *pinfo , prot
}
static gboolean
-dissect_opensafety_checksum(tvbuff_t *message_tvb, proto_tree *opensafety_tree, guint8 * bytes, guint16 frameStart1 )
+dissect_opensafety_checksum(tvbuff_t *message_tvb, proto_tree *opensafety_tree, guint8 *bytes, guint16 frameStart1 )
{
- guint16 frameCrc;
- guint16 calcCrc;
- guint dataLength;
- proto_item * item;
+ guint16 frameCrc;
+ guint16 calcCrc;
+ guint dataLength;
+ proto_item *item;
proto_tree *checksum_tree;
- gint start;
- gint length;
+ gint start;
+ gint length;
dataLength = OSS_FRAME_LENGTH(bytes, frameStart1);
start = OSS_FRAME_POS_DATA + dataLength + frameStart1;
@@ -1071,13 +1191,13 @@ dissect_opensafety_message(guint16 frameStart1, guint16 frameStart2, guint8 type
tvbuff_t *message_tvb, packet_info *pinfo,
proto_item *opensafety_item, proto_tree *opensafety_tree, guint8 u_nrInPackage)
{
- guint8 b_ID;
- guint length;
- guint8 * bytes;
+ guint8 b_ID;
+ guint length;
+ guint8 *bytes;
GByteArray *scmUDID = NULL;
- gboolean validSCMUDID;
- proto_item * item;
- gboolean messageTypeUnknown, crcValid;
+ gboolean validSCMUDID;
+ proto_item *item;
+ gboolean messageTypeUnknown, crcValid;
messageTypeUnknown = FALSE;
length = tvb_length(message_tvb);
@@ -1102,7 +1222,8 @@ dissect_opensafety_message(guint16 frameStart1, guint16 frameStart2, guint8 type
{
validSCMUDID = FALSE;
scmUDID = g_byte_array_new();
- if ( hex_str_to_bytes(global_scm_udid, scmUDID, TRUE) && scmUDID->len == 6 )
+
+ if ( hex_str_to_bytes((local_scm_udid != NULL ? local_scm_udid : global_scm_udid), scmUDID, TRUE) && scmUDID->len == 6 )
{
validSCMUDID = TRUE;
bytes = unxorFrame(length, bytes, frameStart1, frameStart2, scmUDID->data);
@@ -1117,15 +1238,18 @@ dissect_opensafety_message(guint16 frameStart1, guint16 frameStart2, guint8 type
}
}
- if ( strlen ( global_scm_udid ) > 0 && scmUDID->len == 6 )
+ if ( strlen ( (local_scm_udid != NULL ? local_scm_udid : global_scm_udid) ) > 0 && scmUDID->len == 6 )
{
- item = proto_tree_add_string(opensafety_tree, hf_oss_scm_udid, message_tvb, 0, 0, global_scm_udid);
+ if ( local_scm_udid != NULL )
+ item = proto_tree_add_string(opensafety_tree, hf_oss_scm_udid_auto, message_tvb, 0, 0, local_scm_udid);
+ else
+ item = proto_tree_add_string(opensafety_tree, hf_oss_scm_udid, message_tvb, 0, 0, global_scm_udid);
PROTO_ITEM_SET_GENERATED(item);
}
item = proto_tree_add_boolean(opensafety_tree, hf_oss_scm_udid_valid, message_tvb, 0, 0, validSCMUDID);
if ( scmUDID->len != 6 )
- expert_add_info_format(pinfo, item, PI_MALFORMED, PI_WARN, "openSAFETY protocol settings are invalid! SCM UDID first octet will be assumed to be 00" );
+ opensafety_add_warning(pinfo, item, "openSAFETY protocol settings are invalid! SCM UDID first octet will be assumed to be 00" );
PROTO_ITEM_SET_GENERATED(item);
g_byte_array_free( scmUDID, TRUE);
@@ -1145,10 +1269,11 @@ dissect_opensafety_message(guint16 frameStart1, guint16 frameStart2, guint8 type
}
crcValid = FALSE;
- item = proto_tree_add_uint(opensafety_tree, hf_oss_length, message_tvb, OSS_FRAME_POS_LEN + frameStart1, 1, OSS_FRAME_LENGTH(bytes, frameStart1));
+ item = proto_tree_add_uint(opensafety_tree, hf_oss_length,
+ message_tvb, OSS_FRAME_POS_LEN + frameStart1, 1, OSS_FRAME_LENGTH(bytes, frameStart1));
if ( messageTypeUnknown )
{
- expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "Unknown openSAFETY message type" );
+ opensafety_add_error(pinfo, item, "Unknown openSAFETY message type" );
}
else
{
@@ -1157,8 +1282,7 @@ dissect_opensafety_message(guint16 frameStart1, guint16 frameStart2, guint8 type
if ( ! crcValid )
{
- expert_add_info_format(pinfo, opensafety_item, PI_MALFORMED, PI_ERROR,
- "Frame 1 CRC invalid => possible error in package" );
+ opensafety_add_error(pinfo, opensafety_item, "Frame 1 CRC invalid => possible error in package" );
}
/* with SNMT's we can check if the ID's for the frames match. Rare randomized packages do have
@@ -1168,8 +1292,7 @@ dissect_opensafety_message(guint16 frameStart1, guint16 frameStart2, guint8 type
{
if ( OSS_FRAME_ID(bytes, frameStart1) != OSS_FRAME_ID(bytes, frameStart2) )
{
- expert_add_info_format(pinfo, opensafety_item, PI_MALFORMED, PI_ERROR,
- "Frame 1 is valid, frame 2 id is invalid => error in openSAFETY frame" );
+ opensafety_add_error(pinfo, opensafety_item, "Frame 1 is valid, frame 2 id is invalid => error in openSAFETY frame" );
}
}
}
@@ -1178,25 +1301,29 @@ dissect_opensafety_message(guint16 frameStart1, guint16 frameStart2, guint8 type
}
static gboolean
-opensafety_package_dissector(const gchar * protocolName, const gchar * sub_diss_handle,
+opensafety_package_dissector(const gchar *protocolName, const gchar *sub_diss_handle,
gboolean b_frame2First, gboolean do_byte_swap, guint8 force_nr_in_package,
tvbuff_t *message_tvb , packet_info *pinfo , proto_tree *tree )
{
- tvbuff_t *next_tvb;
- guint length, len, frameOffset, frameLength, nodeAddress;
- guint8 *bytes, *bytesOffset;
- gboolean handled, dissectorCalled, call_sub_dissector, markAsMalformed;
- guint8 type, found, packageCounter, i, tempByte;
- guint16 frameStart1, frameStart2;
- gint reported_len;
- dissector_handle_t protocol_dissector = NULL;
- proto_item *opensafety_item;
- proto_tree *opensafety_tree;
-
- handled = FALSE;
- dissectorCalled = FALSE;
+ tvbuff_t *next_tvb;
+ guint length, len, frameOffset, frameLength, nodeAddress;
+ guint8 *bytes, *bytesOffset;
+ gboolean handled, dissectorCalled, call_sub_dissector, markAsMalformed;
+ guint8 type, found, packageCounter, i, tempByte;
+ guint16 frameStart1, frameStart2;
+ gint reported_len;
+ dissector_handle_t protocol_dissector = NULL;
+ proto_item *opensafety_item;
+ proto_tree *opensafety_tree;
+
+ handled = FALSE;
+ dissectorCalled = FALSE;
call_sub_dissector = FALSE;
- markAsMalformed = FALSE;
+ markAsMalformed = FALSE;
+
+ /* registering frame end routine, to prevent a malformed dissection preventing
+ * further dissector calls (see bug #6950) */
+ register_frame_end_routine(reset_dissector);
length = tvb_length(message_tvb);
/* Minimum package length is 11 */
@@ -1380,7 +1507,7 @@ opensafety_package_dissector(const gchar * protocolName, const gchar * sub_diss_
if ( tree && markAsMalformed )
{
if ( OSS_FRAME_ADDR(bytesOffset, frameStart1) > 1024 )
- expert_add_info_format(pinfo, opensafety_item, PI_MALFORMED, PI_ERROR, "SPDO address is invalid" );
+ opensafety_add_error(pinfo, opensafety_item, "SPDO address is invalid" );
}
handled = TRUE;
}
@@ -1405,16 +1532,15 @@ opensafety_package_dissector(const gchar * protocolName, const gchar * sub_diss_
static gboolean
dissect_opensafety_epl(tvbuff_t *message_tvb , packet_info *pinfo , proto_tree *tree )
{
- static gboolean calledOnce = FALSE;
- gboolean result = FALSE;
- guint8 firstByte;
+ gboolean result = FALSE;
+ guint8 firstByte;
/* We will call the epl dissector by using call_dissector(). The epl dissector will then call
* the heuristic openSAFETY dissector again. By setting this information, we prevent a dissector
* loop */
- if ( calledOnce == FALSE )
+ if ( bDissector_Called_Once_Before == FALSE )
{
- calledOnce = TRUE;
+ bDissector_Called_Once_Before = TRUE;
firstByte = ( tvb_get_guint8(message_tvb, 0) << 1 );
@@ -1425,7 +1551,7 @@ dissect_opensafety_epl(tvbuff_t *message_tvb , packet_info *pinfo , proto_tree *
FALSE, FALSE, 0, message_tvb, pinfo, tree);
}
- calledOnce = FALSE;
+ bDissector_Called_Once_Before = FALSE;
}
return result;
@@ -1435,9 +1561,8 @@ dissect_opensafety_epl(tvbuff_t *message_tvb , packet_info *pinfo , proto_tree *
static gboolean
dissect_opensafety_siii(tvbuff_t *message_tvb , packet_info *pinfo , proto_tree *tree )
{
- static gboolean calledOnce = FALSE;
- gboolean result = FALSE;
- guint8 firstByte;
+ gboolean result = FALSE;
+ guint8 firstByte;
if ( pinfo->ipproto == IPPROTO_UDP )
{
@@ -1450,9 +1575,9 @@ dissect_opensafety_siii(tvbuff_t *message_tvb , packet_info *pinfo , proto_tree
/* We will call the SercosIII dissector by using call_dissector(). The SercosIII dissector will
* then call the heuristic openSAFETY dissector again. By setting this information, we prevent
* a dissector loop. */
- if ( calledOnce == FALSE )
+ if ( bDissector_Called_Once_Before == FALSE )
{
- calledOnce = TRUE;
+ bDissector_Called_Once_Before = TRUE;
/* No frames can be sent in AT messages, therefore those get filtered right away */
firstByte = ( tvb_get_guint8(message_tvb, 0) << 1 );
if ( ( firstByte & 0x40 ) == 0x40 )
@@ -1460,7 +1585,7 @@ dissect_opensafety_siii(tvbuff_t *message_tvb , packet_info *pinfo , proto_tree
result = opensafety_package_dissector("openSAFETY/SercosIII", "sercosiii",
FALSE, FALSE, 0, message_tvb, pinfo, tree);
}
- calledOnce = FALSE;
+ bDissector_Called_Once_Before = FALSE;
}
return result;
@@ -1469,18 +1594,17 @@ dissect_opensafety_siii(tvbuff_t *message_tvb , packet_info *pinfo , proto_tree
static gboolean
dissect_opensafety_pn_io(tvbuff_t *message_tvb , packet_info *pinfo , proto_tree *tree )
{
- static gboolean calledOnce = FALSE;
- gboolean result = FALSE;
+ gboolean result = FALSE;
- /* We will call the epl dissector by using call_dissector(). The epl dissector will then call
+ /* We will call the pn_io dissector by using call_dissector(). The epl dissector will then call
* the heuristic openSAFETY dissector again. By setting this information, we prevent a dissector
* loop */
- if ( calledOnce == FALSE )
+ if ( bDissector_Called_Once_Before == FALSE )
{
- calledOnce = TRUE;
+ bDissector_Called_Once_Before = TRUE;
result = opensafety_package_dissector("openSAFETY/Profinet IO", "pn_io",
FALSE, FALSE, 0, message_tvb, pinfo, tree);
- calledOnce = FALSE;
+ bDissector_Called_Once_Before = FALSE;
}
return result;
@@ -1499,7 +1623,7 @@ dissect_opensafety_mbtcp(tvbuff_t *message_tvb , packet_info *pinfo , proto_tree
static gboolean
dissect_opensafety_udpdata(tvbuff_t *message_tvb , packet_info *pinfo , proto_tree *tree )
{
- gboolean result = FALSE;
+ gboolean result = FALSE;
static guint32 frameNum = 0;
static guint32 frameIdx = 0;
@@ -1528,8 +1652,8 @@ static void
apply_prefs ( void )
{
static gboolean opensafety_init = FALSE;
- static guint opensafety_udp_port_number;
- static guint opensafety_udp_siii_port_number;
+ static guint opensafety_udp_port_number;
+ static guint opensafety_udp_siii_port_number;
/* It only should delete dissectors, if run for any time except the first */
if ( opensafety_init )
@@ -1565,6 +1689,9 @@ proto_register_opensafety(void)
{ &hf_oss_scm_udid,
{ "SCM UDID Configured", "opensafety.scm_udid",
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_oss_scm_udid_auto,
+ { "SCM UDID Auto Detect", "opensafety.scm_udid_auto",
+ FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_oss_scm_udid_valid,
{ "SCM UDID Valid", "opensafety.scm_udid_valid",
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
@@ -1574,7 +1701,7 @@ proto_register_opensafety(void)
FT_UINT8, BASE_HEX, VALS(message_type_values), 0x0, NULL, HFILL } },
{ &hf_oss_msg_category,
{ "Type", "opensafety.msg.type",
- FT_UINT16, BASE_NONE, VALS(message_id_values), 0x0, NULL, HFILL } },
+ FT_UINT16, BASE_HEX, VALS(message_id_values), 0x0, NULL, HFILL } },
{ &hf_oss_msg_direction,
{ "Direction", "opensafety.msg.direction",
FT_BOOLEAN, BASE_NONE, TFS(&opensafety_message_direction), 0x0, NULL, HFILL } },
@@ -1699,7 +1826,7 @@ proto_register_opensafety(void)
/* SPDO Specific fields */
{ &hf_oss_spdo_connection_valid,
{ "Connection Valid Bit", "opensafety.spdo.connection_valid",
- FT_BOOLEAN, 8, TFS(&opensafety_set_notset), 0x0, NULL, HFILL } },
+ FT_BOOLEAN, BASE_NONE, TFS(&opensafety_set_notset), 0x0, NULL, HFILL } },
{ &hf_oss_spdo_payload,
{ "SPDO Payload", "opensafety.spdo.payload",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
@@ -1751,6 +1878,10 @@ proto_register_opensafety(void)
"SCM UDID (xx:xx:xx:xx:xx:xx)",
"To be able to fully dissect SSDO and SPDO packages, a valid UDID for the SCM has to be provided",
&global_scm_udid);
+ prefs_register_bool_preference(opensafety_module, "scm_udid_autoset",
+ "Set SCM UDID if detected in stream",
+ "Automatically assign a detected SCM UDID (by reading SNMT->SNTM_assign_UDID_SCM) and set it for the file",
+ &global_scm_udid_autoset);
prefs_register_uint_preference(opensafety_module, "network_udp_port",
"Port used for Generic UDP",
"Port used by any UDP demo implementation to transport data", 10,
@@ -1810,6 +1941,12 @@ proto_reg_handoff_opensafety(void)
*/
dissector_add_uint("ethertype", ETHERTYPE_PROFINET, find_dissector("opensafety_pnio"));
}
+
+ register_init_routine ( setup_dissector );
+
+ /* registering frame end routine, to prevent a malformed dissection preventing
+ * further dissector calls (see bug #6950) */
+ register_frame_end_routine(reset_dissector);
}
}
diff --git a/epan/dissectors/packet-openwire.c b/epan/dissectors/packet-openwire.c
new file mode 100644
index 0000000000..90c20356ba
--- /dev/null
+++ b/epan/dissectors/packet-openwire.c
@@ -0,0 +1,2011 @@
+/* packet-openwire.c
+ * Routines for ActiveMQ OpenWire protocol
+ *
+ * metatech <metatechbe@gmail.com>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/*
+ OpenWire has two wire formats :
+ - "loose" : more verbose, less CPU-intensive, less network-intensive (1-pass)
+ - "tight" : more compact, more CPU-intensive, more network-intensive (2-pass)
+ This dissector only supports the "loose" syntax, which is not the default.
+ This dissector only supports version 6 of the protocol.
+ It can be changed on the broker in the activemq.xml file by specifying "tightEncodingEnabled=false" :
+
+ <transportConnectors>
+ <transportConnector name="tcp-connector" uri="tcp://0.0.0.0:61616?wireFormat.tightEncodingEnabled=false&amp;wireFormat.cacheEnabled=false"/>
+ </transportConnectors>
+
+ Note : The WIREFORMAT_INFO command is always sent in "loose" format.
+
+*/
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+#include <epan/conversation.h>
+#include <epan/prefs.h>
+#include <epan/expert.h>
+#include "packet-tcp.h"
+
+static int proto_openwire = -1;
+static int hf_openwire_none = -1;
+static int hf_openwire_length = -1;
+static int hf_openwire_command = -1;
+
+static int hf_openwire_command_id = -1;
+static int hf_openwire_command_response_required = -1;
+
+static int hf_openwire_response_correlationid = -1;
+
+static int hf_openwire_dataresponse_data = -1;
+
+static int hf_openwire_exceptionresponse_exception = -1;
+
+static int hf_openwire_connectionerror_exception = -1;
+static int hf_openwire_connectionerror_connectionid = -1;
+
+static int hf_openwire_controlcommand_command = -1;
+
+static int hf_openwire_wireformatinfo_magic = -1;
+static int hf_openwire_wireformatinfo_version = -1;
+static int hf_openwire_wireformatinfo_data = -1;
+static int hf_openwire_wireformatinfo_length = -1;
+
+static int hf_openwire_sessioninfo_sessionid = -1;
+
+static int hf_openwire_connectioninfo_connectionid = -1;
+static int hf_openwire_connectioninfo_clientid = -1;
+static int hf_openwire_connectioninfo_password = -1;
+static int hf_openwire_connectioninfo_username = -1;
+static int hf_openwire_connectioninfo_brokerpath = -1;
+static int hf_openwire_connectioninfo_brokermasterconnector = -1;
+static int hf_openwire_connectioninfo_manageable = -1;
+static int hf_openwire_connectioninfo_clientmaster = -1;
+static int hf_openwire_connectioninfo_faulttolerant = -1;
+static int hf_openwire_connectioninfo_failoverreconnect = -1;
+
+static int hf_openwire_destinationinfo_connectionid = -1;
+static int hf_openwire_destinationinfo_destination = -1;
+static int hf_openwire_destinationinfo_operationtype = -1;
+static int hf_openwire_destinationinfo_timeout = -1;
+static int hf_openwire_destinationinfo_brokerpath = -1;
+
+static int hf_openwire_brokerinfo_brokerid = -1;
+static int hf_openwire_brokerinfo_brokerurl = -1;
+static int hf_openwire_brokerinfo_peerbrokerinfos = -1;
+static int hf_openwire_brokerinfo_brokername = -1;
+static int hf_openwire_brokerinfo_slavebroker = -1;
+static int hf_openwire_brokerinfo_masterbroker = -1;
+static int hf_openwire_brokerinfo_faulttolerantconfiguration = -1;
+static int hf_openwire_brokerinfo_duplexconnection = -1;
+static int hf_openwire_brokerinfo_networkconnection = -1;
+static int hf_openwire_brokerinfo_connectionid = -1;
+static int hf_openwire_brokerinfo_brokeruploadurl = -1;
+static int hf_openwire_brokerinfo_networkproperties = -1;
+
+static int hf_openwire_connectioncontrol_close = -1;
+static int hf_openwire_connectioncontrol_exit = -1;
+static int hf_openwire_connectioncontrol_faulttolerant = -1;
+static int hf_openwire_connectioncontrol_resume = -1;
+static int hf_openwire_connectioncontrol_suspend = -1;
+static int hf_openwire_connectioncontrol_connectedbrokers = -1;
+static int hf_openwire_connectioncontrol_reconnectto = -1;
+static int hf_openwire_connectioncontrol_rebalanceconnection = -1;
+
+static int hf_openwire_consumercontrol_destination = -1;
+static int hf_openwire_consumercontrol_close = -1;
+static int hf_openwire_consumercontrol_consumerid = -1;
+static int hf_openwire_consumercontrol_prefetch = -1;
+static int hf_openwire_consumercontrol_flush = -1;
+static int hf_openwire_consumercontrol_start = -1;
+static int hf_openwire_consumercontrol_stop = -1;
+
+static int hf_openwire_consumerinfo_consumerid = -1;
+static int hf_openwire_consumerinfo_browser = -1;
+static int hf_openwire_consumerinfo_destination = -1;
+static int hf_openwire_consumerinfo_prefetchsize = -1;
+static int hf_openwire_consumerinfo_maximumpendingmessagelimit = -1;
+static int hf_openwire_consumerinfo_dispatchasync = -1;
+static int hf_openwire_consumerinfo_selector = -1;
+static int hf_openwire_consumerinfo_subscriptionname = -1;
+static int hf_openwire_consumerinfo_nolocal = -1;
+static int hf_openwire_consumerinfo_exclusive = -1;
+static int hf_openwire_consumerinfo_retroactive = -1;
+static int hf_openwire_consumerinfo_priority = -1;
+static int hf_openwire_consumerinfo_brokerpath = -1;
+static int hf_openwire_consumerinfo_additionalpredicate = -1;
+static int hf_openwire_consumerinfo_networksubscription = -1;
+static int hf_openwire_consumerinfo_optimizedacknowledge = -1;
+static int hf_openwire_consumerinfo_norangeacks = -1;
+static int hf_openwire_consumerinfo_networkconsumerpath = -1;
+
+static int hf_openwire_producerinfo_producerid = -1;
+static int hf_openwire_producerinfo_destination = -1;
+static int hf_openwire_producerinfo_brokerpath = -1;
+static int hf_openwire_producerinfo_dispatchasync = -1;
+static int hf_openwire_producerinfo_windowsize = -1;
+
+static int hf_openwire_removeinfo_objectid = -1;
+static int hf_openwire_removeinfo_lastdeliveredsequenceid = -1;
+
+static int hf_openwire_removesubscriptioninfo_connectionid = -1;
+static int hf_openwire_removesubscriptioninfo_subscriptionname = -1;
+static int hf_openwire_removesubscriptioninfo_clientid = -1;
+
+static int hf_openwire_transactioninfo_connectionid = -1;
+static int hf_openwire_transactioninfo_transactionid = -1;
+static int hf_openwire_transactioninfo_type = -1;
+
+static int hf_openwire_producerack_producerid = -1;
+static int hf_openwire_producerack_size = -1;
+
+
+static int hf_openwire_messagedispatch_consumerid = -1;
+static int hf_openwire_messagedispatch_destination = -1;
+static int hf_openwire_messagedispatch_message = -1;
+static int hf_openwire_messagedispatch_redeliverycounter = -1;
+
+static int hf_openwire_messageack_destination = -1;
+static int hf_openwire_messageack_transactionid = -1;
+static int hf_openwire_messageack_consumerid = -1;
+static int hf_openwire_messageack_acktype = -1;
+static int hf_openwire_messageack_firstmessageid = -1;
+static int hf_openwire_messageack_lastmessageid = -1;
+static int hf_openwire_messageack_messagecount = -1;
+
+static int hf_openwire_messagepull_consumerid = -1;
+static int hf_openwire_messagepull_destinationid = -1;
+static int hf_openwire_messagepull_timeout = -1;
+static int hf_openwire_messagepull_correlationid = -1;
+static int hf_openwire_messagepull_messageid = -1;
+
+static int hf_openwire_message_producerid = -1;
+static int hf_openwire_message_destination = -1;
+static int hf_openwire_message_transactionid = -1;
+static int hf_openwire_message_originaldestination = -1;
+static int hf_openwire_message_messageid = -1;
+static int hf_openwire_message_originaldestinationid = -1;
+static int hf_openwire_message_groupid = -1;
+static int hf_openwire_message_groupsequence = -1;
+static int hf_openwire_message_correlationid = -1;
+static int hf_openwire_message_persistent = -1;
+static int hf_openwire_message_expiration = -1;
+static int hf_openwire_message_priority = -1;
+static int hf_openwire_message_replyto = -1;
+static int hf_openwire_message_timestamp = -1;
+static int hf_openwire_message_type = -1;
+static int hf_openwire_message_body = -1;
+static int hf_openwire_message_properties = -1;
+static int hf_openwire_message_datastructure = -1;
+static int hf_openwire_message_targetconsumerid = -1;
+static int hf_openwire_message_compressed = -1;
+static int hf_openwire_message_redeliverycount = -1;
+static int hf_openwire_message_brokerpath = -1;
+static int hf_openwire_message_arrival = -1;
+static int hf_openwire_message_userid = -1;
+static int hf_openwire_message_receivedbydfbridge = -1;
+static int hf_openwire_message_droppable = -1;
+static int hf_openwire_message_cluster = -1;
+static int hf_openwire_message_brokerintime = -1;
+static int hf_openwire_message_brokerouttime = -1;
+
+static int hf_openwire_producerid_connectionid = -1;
+static int hf_openwire_producerid_value = -1;
+static int hf_openwire_producerid_sessionid = -1;
+
+static int hf_openwire_consumerid_connectionid = -1;
+static int hf_openwire_consumerid_value = -1;
+static int hf_openwire_consumerid_sessionid = -1;
+
+static int hf_openwire_destination_name = -1;
+
+static int hf_openwire_messageid_producerid = -1;
+static int hf_openwire_messageid_producersequenceid = -1;
+static int hf_openwire_messageid_brokersequenceid = -1;
+
+static int hf_openwire_connectionid_value = -1;
+
+static int hf_openwire_sessionid_connectionid = -1;
+static int hf_openwire_sessionid_value = -1;
+
+static int hf_openwire_brokerid_value = -1;
+
+static int hf_openwire_localtransactionid_value = -1;
+static int hf_openwire_localtransactionid_connectionid = -1;
+
+static int hf_openwire_xatransactionid_formatid = -1;
+static int hf_openwire_xatransactionid_globaltransactionid = -1;
+static int hf_openwire_xatransactionid_branchqualifier = -1;
+
+static int hf_openwire_map_length = -1;
+static int hf_openwire_map_key = -1;
+static int hf_openwire_map_entry = -1;
+
+static int hf_openwire_throwable_class = -1;
+static int hf_openwire_throwable_message = -1;
+static int hf_openwire_throwable_element = -1;
+static int hf_openwire_throwable_classname = -1;
+static int hf_openwire_throwable_methodname = -1;
+static int hf_openwire_throwable_filename = -1;
+static int hf_openwire_throwable_linenumber = -1;
+
+static int hf_openwire_type_integer = -1;
+static int hf_openwire_type_short = -1;
+static int hf_openwire_type_string = -1;
+static int hf_openwire_type_bytes = -1;
+static int hf_openwire_type_boolean = -1;
+static int hf_openwire_type_byte = -1;
+static int hf_openwire_type_char = -1;
+static int hf_openwire_type_notnull = -1;
+static int hf_openwire_type_long = -1;
+static int hf_openwire_type_float = -1;
+static int hf_openwire_type_double = -1;
+static int hf_openwire_type_object = -1;
+static int hf_openwire_type = -1;
+
+static int hf_openwire_cached_inlined = -1;
+static int hf_openwire_cached_id = -1;
+static int hf_openwire_cached_enabled = -1;
+
+static gint ett_openwire = -1;
+static gint ett_openwire_type = -1;
+
+static dissector_handle_t openwire_tcp_handle;
+
+static gboolean openwire_desegment = TRUE;
+static gboolean openwire_verbose_type = FALSE;
+
+#define OPENWIRE_PORT_TCP 61616
+
+#define OPENWIRE_MAGIC_PART_1 0x41637469 /* "Acti" */
+#define OPENWIRE_MAGIC_PART_2 0x76654D51 /* "veMQ" */
+#define OPENWIRE_BOOLEAN_FALSE 0x00
+#define OPENWIRE_BOOLEAN_TRUE 0x01
+
+#define OPENWIRE_WIREFORMAT_INFO 1
+#define OPENWIRE_BROKER_INFO 2
+#define OPENWIRE_CONNECTION_INFO 3
+#define OPENWIRE_SESSION_INFO 4
+#define OPENWIRE_CONSUMER_INFO 5
+#define OPENWIRE_PRODUCER_INFO 6
+#define OPENWIRE_TRANSACTION_INFO 7
+#define OPENWIRE_DESTINATION_INFO 8
+#define OPENWIRE_REMOVE_SUBSCRIPTION_INFO 9
+#define OPENWIRE_KEEP_ALIVE_INFO 10
+#define OPENWIRE_SHUTDOWN_INFO 11
+#define OPENWIRE_REMOVE_INFO 12
+#define OPENWIRE_CONTROL_COMMAND 14
+#define OPENWIRE_FLUSH_COMMAND 15
+#define OPENWIRE_CONNECTION_ERROR 16
+#define OPENWIRE_CONSUMER_CONTROL 17
+#define OPENWIRE_CONNECTION_CONTROL 18
+#define OPENWIRE_PRODUCER_ACK 19
+#define OPENWIRE_MESSAGE_PULL 20
+#define OPENWIRE_MESSAGE_DISPATCH 21
+#define OPENWIRE_MESSAGE_ACK 22
+#define OPENWIRE_ACTIVEMQ_MESSAGE 23
+#define OPENWIRE_ACTIVEMQ_BYTES_MESSAGE 24
+#define OPENWIRE_ACTIVEMQ_MAP_MESSAGE 25
+#define OPENWIRE_ACTIVEMQ_OBJECT_MESSAGE 26
+#define OPENWIRE_ACTIVEMQ_STREAM_MESSAGE 27
+#define OPENWIRE_ACTIVEMQ_TEXT_MESSAGE 28
+#define OPENWIRE_ACTIVEMQ_BLOB_MESSAGE 29
+#define OPENWIRE_RESPONSE 30
+#define OPENWIRE_EXCEPTION_RESPONSE 31
+#define OPENWIRE_DATA_RESPONSE 32
+#define OPENWIRE_DATA_ARRAY_RESPONSE 33
+#define OPENWIRE_INTEGER_RESPONSE 34
+#define OPENWIRE_DISCOVERY_EVENT 40
+#define OPENWIRE_JOURNAL_ACK 50
+#define OPENWIRE_JOURNAL_REMOVE 52
+#define OPENWIRE_JOURNAL_TRACE 53
+#define OPENWIRE_JOURNAL_TRANSACTION 54
+#define OPENWIRE_DURABLE_SUBSCRIPTION_INFO 55
+#define OPENWIRE_PARTIAL_COMMAND 60
+#define OPENWIRE_PARTIAL_LAST_COMMAND 61
+#define OPENWIRE_REPLAY 65
+#define OPENWIRE_BYTE_TYPE 70
+#define OPENWIRE_CHAR_TYPE 71
+#define OPENWIRE_SHORT_TYPE 72
+#define OPENWIRE_INTEGER_TYPE 73
+#define OPENWIRE_LONG_TYPE 74
+#define OPENWIRE_DOUBLE_TYPE 75
+#define OPENWIRE_FLOAT_TYPE 76
+#define OPENWIRE_STRING_TYPE 77
+#define OPENWIRE_BOOLEAN_TYPE 78
+#define OPENWIRE_BYTE_ARRAY_TYPE 79
+#define OPENWIRE_MESSAGE_DISPATCH_NOTIFICATION 90
+#define OPENWIRE_NETWORK_BRIDGE_FILTER 91
+#define OPENWIRE_ACTIVEMQ_QUEUE 100
+#define OPENWIRE_ACTIVEMQ_TOPIC 101
+#define OPENWIRE_ACTIVEMQ_TEMP_QUEUE 102
+#define OPENWIRE_ACTIVEMQ_TEMP_TOPIC 103
+#define OPENWIRE_MESSAGE_ID 110
+#define OPENWIRE_ACTIVEMQ_LOCAL_TRANSACTION_ID 111
+#define OPENWIRE_ACTIVEMQ_XA_TRANSACTION_ID 112
+#define OPENWIRE_CONNECTION_ID 120
+#define OPENWIRE_SESSION_ID 121
+#define OPENWIRE_CONSUMER_ID 122
+#define OPENWIRE_PRODUCER_ID 123
+#define OPENWIRE_BROKER_ID 124
+
+static const value_string openwire_opcode_vals[] = {
+ { OPENWIRE_WIREFORMAT_INFO, "WireFormatInfo" },
+ { OPENWIRE_BROKER_INFO, "BrokerInfo" },
+ { OPENWIRE_CONNECTION_INFO, "ConnectionInfo" },
+ { OPENWIRE_SESSION_INFO, "SessionInfo" },
+ { OPENWIRE_CONSUMER_INFO, "ConsumerInfo" },
+ { OPENWIRE_PRODUCER_INFO, "ProducerInfo" },
+ { OPENWIRE_TRANSACTION_INFO, "TransactionInfo" },
+ { OPENWIRE_DESTINATION_INFO, "DestinationInfo" },
+ { OPENWIRE_REMOVE_SUBSCRIPTION_INFO, "RemoveSubscriptionInfo" },
+ { OPENWIRE_KEEP_ALIVE_INFO, "KeepAliveInfo" },
+ { OPENWIRE_SHUTDOWN_INFO, "ShutdownInfo" },
+ { OPENWIRE_REMOVE_INFO, "RemoveInfo" },
+ { OPENWIRE_CONTROL_COMMAND, "ControlCommand" },
+ { OPENWIRE_FLUSH_COMMAND, "FlushCommand" },
+ { OPENWIRE_CONNECTION_ERROR, "ConnectionError" },
+ { OPENWIRE_CONSUMER_CONTROL, "ConsumerControl" },
+ { OPENWIRE_CONNECTION_CONTROL, "ConnectionControl" },
+ { OPENWIRE_PRODUCER_ACK, "ProducerAck" },
+ { OPENWIRE_MESSAGE_PULL, "MessagePull" },
+ { OPENWIRE_MESSAGE_DISPATCH, "MessageDispatch" },
+ { OPENWIRE_MESSAGE_ACK, "MessageAck" },
+ { OPENWIRE_ACTIVEMQ_MESSAGE, "ActiveMQMessage" },
+ { OPENWIRE_ACTIVEMQ_BYTES_MESSAGE, "ActiveMQBytesMessage" },
+ { OPENWIRE_ACTIVEMQ_MAP_MESSAGE, "ActiveMQMapMessage" },
+ { OPENWIRE_ACTIVEMQ_OBJECT_MESSAGE, "ActiveMQObjectMessage" },
+ { OPENWIRE_ACTIVEMQ_STREAM_MESSAGE, "ActiveMQStreamMessage" },
+ { OPENWIRE_ACTIVEMQ_TEXT_MESSAGE, "ActiveMQTextMessage" },
+ { OPENWIRE_ACTIVEMQ_BLOB_MESSAGE, "ActiveMQBlobMessage" },
+ { OPENWIRE_RESPONSE, "Response" },
+ { OPENWIRE_EXCEPTION_RESPONSE, "ExceptionResponse" },
+ { OPENWIRE_DATA_RESPONSE, "DataResponse" },
+ { OPENWIRE_DATA_ARRAY_RESPONSE, "DataArrayResponse" },
+ { OPENWIRE_INTEGER_RESPONSE, "IntegerResponse" },
+ { OPENWIRE_DISCOVERY_EVENT, "DiscoveryEvent" },
+ { OPENWIRE_JOURNAL_ACK, "JournalTopicAck" },
+ { OPENWIRE_JOURNAL_REMOVE, "JournalQueueAck" },
+ { OPENWIRE_JOURNAL_TRACE, "JournalTrace" },
+ { OPENWIRE_JOURNAL_TRANSACTION, "JournalTransaction" },
+ { OPENWIRE_DURABLE_SUBSCRIPTION_INFO, "SubscriptionInfo" },
+ { OPENWIRE_PARTIAL_COMMAND, "PartialCommand" },
+ { OPENWIRE_PARTIAL_LAST_COMMAND, "LastPartialCommand" },
+ { OPENWIRE_REPLAY, "ReplayCommand" },
+ { OPENWIRE_BYTE_TYPE, "Byte" },
+ { OPENWIRE_CHAR_TYPE, "Char" },
+ { OPENWIRE_SHORT_TYPE, "Short" },
+ { OPENWIRE_INTEGER_TYPE, "Integer" },
+ { OPENWIRE_LONG_TYPE, "Long" },
+ { OPENWIRE_DOUBLE_TYPE, "Double" },
+ { OPENWIRE_FLOAT_TYPE, "Float" },
+ { OPENWIRE_STRING_TYPE, "String" },
+ { OPENWIRE_BOOLEAN_TYPE, "Boolean" },
+ { OPENWIRE_BYTE_ARRAY_TYPE, "ByteArray" },
+ { OPENWIRE_MESSAGE_DISPATCH_NOTIFICATION, "MessageDispatchNotification" },
+ { OPENWIRE_NETWORK_BRIDGE_FILTER, "NetworkBridgeFilter" },
+ { OPENWIRE_ACTIVEMQ_QUEUE, "ActiveMQQueue" },
+ { OPENWIRE_ACTIVEMQ_TOPIC, "ActiveMQTopic" },
+ { OPENWIRE_ACTIVEMQ_TEMP_QUEUE, "ActiveMQTempQueue" },
+ { OPENWIRE_ACTIVEMQ_TEMP_TOPIC, "ActiveMQTempTopic" },
+ { OPENWIRE_MESSAGE_ID, "MessageId" },
+ { OPENWIRE_ACTIVEMQ_LOCAL_TRANSACTION_ID, "LocalTransactionId" },
+ { OPENWIRE_ACTIVEMQ_XA_TRANSACTION_ID, "XATransactionId" },
+ { OPENWIRE_CONNECTION_ID, "ConnectionId" },
+ { OPENWIRE_SESSION_ID, "SessionId" },
+ { OPENWIRE_CONSUMER_ID, "ConsumerId" },
+ { OPENWIRE_PRODUCER_ID, "ProducerId" },
+ { OPENWIRE_BROKER_ID, "BrokerId" },
+ { 0, NULL }
+};
+
+static value_string_ext openwire_opcode_vals_ext = VALUE_STRING_EXT_INIT(openwire_opcode_vals);
+
+#define OPENWIRE_COMMAND_INNER -5
+#define OPENWIRE_TYPE_OBJECT_ARRAY -4
+#define OPENWIRE_TYPE_CACHED -3
+#define OPENWIRE_TYPE_NESTED -2
+#define OPENWIRE_TYPE_THROWABLE -1
+#define OPENWIRE_TYPE_NULL 0
+#define OPENWIRE_TYPE_BOOLEAN 1
+#define OPENWIRE_TYPE_BYTE 2
+#define OPENWIRE_TYPE_CHAR 3
+#define OPENWIRE_TYPE_SHORT 4
+#define OPENWIRE_TYPE_INTEGER 5
+#define OPENWIRE_TYPE_LONG 6
+#define OPENWIRE_TYPE_DOUBLE 7
+#define OPENWIRE_TYPE_FLOAT 8
+#define OPENWIRE_TYPE_STRING 9
+#define OPENWIRE_TYPE_BYTE_ARRAY 10
+#define OPENWIRE_TYPE_MAP 11
+#define OPENWIRE_TYPE_LIST 12
+#define OPENWIRE_TYPE_BIG_STRING 13
+
+static const value_string openwire_type_vals[] = {
+ { OPENWIRE_TYPE_THROWABLE, "Throwable" },
+ { OPENWIRE_TYPE_OBJECT_ARRAY, "ObjectArray" },
+ { OPENWIRE_TYPE_NULL, "Null" },
+ { OPENWIRE_TYPE_BOOLEAN, "Boolean" },
+ { OPENWIRE_TYPE_BYTE, "Byte" },
+ { OPENWIRE_TYPE_CHAR, "Char" },
+ { OPENWIRE_TYPE_SHORT, "Short" },
+ { OPENWIRE_TYPE_INTEGER, "Integer" },
+ { OPENWIRE_TYPE_LONG, "Long" },
+ { OPENWIRE_TYPE_DOUBLE, "Double" },
+ { OPENWIRE_TYPE_FLOAT, "Float" },
+ { OPENWIRE_TYPE_STRING, "String" },
+ { OPENWIRE_TYPE_BYTE_ARRAY, "ByteArray" },
+ { OPENWIRE_TYPE_MAP, "Map" },
+ { OPENWIRE_TYPE_LIST, "List" },
+ { OPENWIRE_TYPE_BIG_STRING, "BigString" },
+ { OPENWIRE_ACTIVEMQ_MESSAGE, "ActiveMQMessage" },
+ { OPENWIRE_ACTIVEMQ_BYTES_MESSAGE, "ActiveMQBytesMessage" },
+ { OPENWIRE_ACTIVEMQ_MAP_MESSAGE, "ActiveMQMapMessage" },
+ { OPENWIRE_ACTIVEMQ_OBJECT_MESSAGE, "ActiveMQObjectMessage" },
+ { OPENWIRE_ACTIVEMQ_STREAM_MESSAGE, "ActiveMQStreamMessage" },
+ { OPENWIRE_ACTIVEMQ_TEXT_MESSAGE, "ActiveMQTextMessage" },
+ { OPENWIRE_ACTIVEMQ_BLOB_MESSAGE, "ActiveMQBlobMessage" },
+ { OPENWIRE_ACTIVEMQ_QUEUE, "ActiveMQQueue" },
+ { OPENWIRE_ACTIVEMQ_TOPIC, "ActiveMQTopic" },
+ { OPENWIRE_ACTIVEMQ_TEMP_QUEUE, "ActiveMQTempQueue" },
+ { OPENWIRE_ACTIVEMQ_TEMP_TOPIC, "ActiveMQTempTopic" },
+ { OPENWIRE_MESSAGE_ID, "MessageId" },
+ { OPENWIRE_ACTIVEMQ_LOCAL_TRANSACTION_ID, "LocalTransactionId" },
+ { OPENWIRE_ACTIVEMQ_XA_TRANSACTION_ID, "XATransactionId" },
+ { OPENWIRE_CONNECTION_ID, "ConnectionId" },
+ { OPENWIRE_SESSION_ID, "SessionId" },
+ { OPENWIRE_CONSUMER_ID, "ConsumerId" },
+ { OPENWIRE_PRODUCER_ID, "ProducerId" },
+ { OPENWIRE_BROKER_ID, "BrokerId" },
+ { 0, NULL }
+};
+
+static value_string_ext openwire_type_vals_ext = VALUE_STRING_EXT_INIT(openwire_type_vals);
+
+#define OPENWIRE_TRANSACTIONTYPE_BEGIN 0
+#define OPENWIRE_TRANSACTIONTYPE_PREPARE 1
+#define OPENWIRE_TRANSACTIONTYPE_COMMIT_ONE_PHASE 2
+#define OPENWIRE_TRANSACTIONTYPE_COMMIT_TWO_PHASE 3
+#define OPENWIRE_TRANSACTIONTYPE_ROLLBACK 4
+#define OPENWIRE_TRANSACTIONTYPE_RECOVER 5
+#define OPENWIRE_TRANSACTIONTYPE_FORGET 6
+#define OPENWIRE_TRANSACTIONTYPE_END 7
+
+static const value_string openwire_transaction_type_vals[] = {
+ { OPENWIRE_TRANSACTIONTYPE_BEGIN, "Begin" },
+ { OPENWIRE_TRANSACTIONTYPE_PREPARE, "Prepare" },
+ { OPENWIRE_TRANSACTIONTYPE_COMMIT_ONE_PHASE, "CommitOnePhase" },
+ { OPENWIRE_TRANSACTIONTYPE_COMMIT_TWO_PHASE, "CommitTwoPhase" },
+ { OPENWIRE_TRANSACTIONTYPE_ROLLBACK, "Rollback" },
+ { OPENWIRE_TRANSACTIONTYPE_RECOVER, "Recover" },
+ { OPENWIRE_TRANSACTIONTYPE_FORGET, "Forget" },
+ { OPENWIRE_TRANSACTIONTYPE_END, "End" },
+ { 0, NULL }
+};
+
+static value_string_ext openwire_transaction_type_vals_ext = VALUE_STRING_EXT_INIT(openwire_transaction_type_vals);
+
+#define OPENWIRE_MESSAGE_ACK_TYPE_DELIVERED 0
+#define OPENWIRE_MESSAGE_ACK_TYPE_POISON 1
+#define OPENWIRE_MESSAGE_ACK_TYPE_STANDARD 2
+#define OPENWIRE_MESSAGE_ACK_TYPE_REDELIVERED 3
+#define OPENWIRE_MESSAGE_ACK_TYPE_INDIVIDUAL 4
+#define OPENWIRE_MESSAGE_ACK_TYPE_UNMATCHED 5
+
+static const value_string openwire_message_ack_type_vals[] = {
+ { OPENWIRE_MESSAGE_ACK_TYPE_DELIVERED, "Delivered" },
+ { OPENWIRE_MESSAGE_ACK_TYPE_POISON, "Poison" },
+ { OPENWIRE_MESSAGE_ACK_TYPE_STANDARD, "Standard" },
+ { OPENWIRE_MESSAGE_ACK_TYPE_REDELIVERED, "Redelivered" },
+ { OPENWIRE_MESSAGE_ACK_TYPE_INDIVIDUAL, "Individual" },
+ { OPENWIRE_MESSAGE_ACK_TYPE_UNMATCHED, "Unmatched" },
+ { 0, NULL }
+};
+
+#define OPENWIRE_OPERATION_TYPE_ADD 0
+#define OPENWIRE_OPERATION_TYPE_REMOVE 1
+
+static const value_string openwire_operation_type_vals[] = {
+ { OPENWIRE_OPERATION_TYPE_ADD, "Add" },
+ { OPENWIRE_OPERATION_TYPE_REMOVE, "Remove" },
+ { 0, NULL }
+};
+
+typedef struct openwire_conv_data {
+ gboolean caching;
+ gboolean tight;
+} openwire_conv_data;
+
+static void
+openwire_init(void)
+{
+}
+
+static void
+validate_boolean(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, int offset, proto_item *boolean_item)
+{
+ /* Sanity check of boolean : must be 0x00 or 0x01 */
+ guint8 booleanByte;
+ booleanByte = tvb_get_guint8(tvb, offset);
+ if (booleanByte != OPENWIRE_BOOLEAN_FALSE && booleanByte != OPENWIRE_BOOLEAN_TRUE)
+ {
+ expert_add_info_format(pinfo, boolean_item, PI_MALFORMED, PI_ERROR,
+ "OpenWire encoding not supported by Wireshark or dissector bug");
+ THROW(ReportedBoundsError);
+ }
+}
+
+static int
+particularize(int specificField, int genericField)
+{
+ return (specificField == hf_openwire_none ? genericField : specificField);
+}
+
+static void
+detect_protocol_options(tvbuff_t *tvb, packet_info *pinfo, int offset, int iCommand)
+{
+ /* This function is level-2 heuristic to detect the protocol options, after the level-1 heuristic to detect the protocol.
+ The WireFormatInfo structure reliably declares whether tight encoding and/or caching are used.
+ However, only the response must be used, which is the result of the "negotiation" handshake with the server.
+ However, if the capture is started after the connection initial handshake, it must be deduced in a heuristic way.
+ For the sake of generality, we do not consider the handshake, but only the heuristic way.
+ */
+ if (tvb_length_remaining(tvb, offset) >= 12)
+ {
+ /* Only check commands which start with a "OPENWIRE_TYPE_CACHED" object */
+ if (iCommand == OPENWIRE_SESSION_INFO
+ || iCommand == OPENWIRE_DESTINATION_INFO
+ || iCommand == OPENWIRE_CONNECTION_INFO
+ || iCommand == OPENWIRE_CONSUMER_INFO
+ || iCommand == OPENWIRE_PRODUCER_INFO
+ || iCommand == OPENWIRE_BROKER_INFO
+ || iCommand == OPENWIRE_TRANSACTION_INFO
+ || iCommand == OPENWIRE_REMOVE_SUBSCRIPTION_INFO
+ || iCommand == OPENWIRE_MESSAGE_DISPATCH
+ || iCommand == OPENWIRE_MESSAGE_ACK
+ || iCommand == OPENWIRE_MESSAGE_PULL)
+ {
+ conversation_t *conv = NULL;
+ openwire_conv_data *cd = NULL;
+ conv = find_or_create_conversation(pinfo);
+ cd = (openwire_conv_data*)conversation_get_proto_data(conv, proto_openwire);
+ if (!cd)
+ {
+ guint8 present, type;
+ gint command_id = 0;
+
+ present = tvb_get_guint8(tvb, offset + 10);
+ type = tvb_get_guint8(tvb, offset + 11);
+ command_id = tvb_get_ntohl(tvb, offset + 5);
+
+ cd = se_alloc(sizeof(openwire_conv_data));
+ cd->caching = FALSE;
+ cd->tight = FALSE;
+ if (command_id > (1 << 24))
+ {
+ /* If "tight" encoding is enabled, the command_id first byte is non-zero.
+ This can be misdetected with "loose" encoding if the capture is started after 16 millions commands on the connection,
+ which we will assume that it happens very rarely. */
+ cd->tight = TRUE;
+ }
+ else
+ {
+ if (present == OPENWIRE_BOOLEAN_TRUE && type == OPENWIRE_TYPE_NULL)
+ {
+ /* If a cached object is not-null, it should be the "NULL" object.
+ This can be misdetected with "loose" encoding if the capture is started after 256 cached objects on the connection,
+ which we will assume that it happens rarely. */
+ cd->caching = TRUE;
+ }
+ }
+ conversation_add_proto_data(conv, proto_openwire, cd);
+ }
+ }
+ }
+ else if ((tvb_get_guint8(tvb, 4) == OPENWIRE_KEEP_ALIVE_INFO)
+ && (tvb_length(tvb) == 11))
+ {
+ /* If the capture is started after a long-lived connection is started,
+ a keep-alive command of 11 bytes detects tight encoding (not caching stays unknown).
+ */
+ conversation_t *conv = NULL;
+ openwire_conv_data *cd = NULL;
+ conv = find_or_create_conversation(pinfo);
+ cd = (openwire_conv_data*)conversation_get_proto_data(conv, proto_openwire);
+ if (!cd)
+ {
+ cd = se_alloc(sizeof(openwire_conv_data));
+ cd->tight = TRUE;
+ cd->caching = FALSE; /* Dummy value */
+ conversation_add_proto_data(conv, proto_openwire, cd);
+ }
+ }
+}
+
+static gboolean
+retrieve_caching(packet_info *pinfo)
+{
+ conversation_t *conv;
+ openwire_conv_data *cd;
+
+ conv = find_or_create_conversation(pinfo);
+ cd = (openwire_conv_data*)conversation_get_proto_data(conv, proto_openwire);
+ if (cd) return cd->caching;
+ /* Default : non-caching is recommended */
+ return FALSE;
+}
+
+static gboolean
+retrieve_tight(packet_info *pinfo)
+{
+ conversation_t *conv;
+ openwire_conv_data *cd;
+
+ conv = find_or_create_conversation(pinfo);
+ cd = (openwire_conv_data*)conversation_get_proto_data(conv, proto_openwire);
+ if (cd && cd->tight) return TRUE;
+ return FALSE;
+}
+
+static int
+dissect_openwire_command(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, int parentType);
+
+static int
+dissect_openwire_type(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, int field, int type, int parentType, gboolean nullable)
+{
+ gint startOffset = offset;
+ proto_item *boolean_item = NULL;
+ emem_strbuf_t *cache_strbuf = ep_strbuf_new_label("");
+
+ if (type == OPENWIRE_TYPE_CACHED && retrieve_caching(pinfo) == TRUE && tvb_length_remaining(tvb, offset) >= 3)
+ {
+ guint8 inlined = 0;
+ gint cachedID = 0;
+ proto_item * cached_item = NULL;
+ inlined = tvb_get_guint8(tvb, offset + 0) == OPENWIRE_BOOLEAN_TRUE ? TRUE : FALSE;
+ cachedID = tvb_get_ntohs(tvb, offset + 1);
+ ep_strbuf_append_printf(cache_strbuf, " (CachedID: %d)", cachedID);
+ if (openwire_verbose_type)
+ {
+ proto_tree_add_item(tree, hf_openwire_cached_inlined, tvb, offset, 1, ENC_BIG_ENDIAN);
+ }
+ cached_item = proto_tree_add_item(tree, hf_openwire_cached_id, tvb, offset + 1, 2, ENC_BIG_ENDIAN);
+ if (!openwire_verbose_type)
+ {
+ /* Hide it but allow it in search filters */
+ PROTO_ITEM_SET_HIDDEN(cached_item);
+ }
+ if (inlined == FALSE)
+ {
+ proto_item *ti;
+ ti = proto_tree_add_item(tree, particularize(field, hf_openwire_type_object), tvb, startOffset, 3, ENC_NA);
+ proto_item_append_text(ti, "%s", cache_strbuf->str);
+ return 3;
+ }
+ else
+ {
+ offset += 3;
+ }
+ }
+ if (nullable == TRUE && (type == OPENWIRE_TYPE_NESTED || type == OPENWIRE_TYPE_CACHED || type == OPENWIRE_COMMAND_INNER) && tvb_length_remaining(tvb, offset) >= 1)
+ {
+ nullable = tvb_get_guint8(tvb, offset + 0) == OPENWIRE_BOOLEAN_FALSE ? TRUE : FALSE;
+ if (openwire_verbose_type)
+ {
+ boolean_item = proto_tree_add_item(tree, hf_openwire_type_notnull, tvb, offset, 1, ENC_BIG_ENDIAN);
+ }
+ validate_boolean(tvb, pinfo, tree, offset, boolean_item);
+ if (nullable == TRUE)
+ {
+ proto_tree_add_item(tree, particularize(field, hf_openwire_none), tvb, offset, 1, ENC_NA);
+ return offset - startOffset + 1;
+ }
+ offset += 1;
+ }
+ if (type == OPENWIRE_COMMAND_INNER && tvb_length_remaining(tvb, offset) >= 1)
+ {
+ proto_item * inner_item = NULL;
+ proto_tree * object_tree = NULL;
+ guint8 iCommand = parentType;
+ iCommand = tvb_get_guint8(tvb, offset + 0);
+ inner_item = proto_tree_add_item(tree, particularize(field, hf_openwire_none), tvb, startOffset, -1, ENC_NA);
+ proto_item_append_text(inner_item, ": %s", val_to_str_ext(iCommand, &openwire_opcode_vals_ext, "Unknown (0x%02x)"));
+ object_tree = proto_item_add_subtree(inner_item, ett_openwire_type);
+ return (1 + dissect_openwire_command(tvb, pinfo, object_tree, offset, parentType));
+ }
+ if ((type == OPENWIRE_TYPE_NESTED || type == OPENWIRE_TYPE_CACHED) && tvb_length_remaining(tvb, offset) >= 1)
+ {
+ type = tvb_get_guint8(tvb, offset + 0);
+ if (openwire_verbose_type)
+ {
+ proto_tree_add_item(tree, hf_openwire_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ }
+ offset += 1;
+ }
+ if (nullable == TRUE && tvb_length_remaining(tvb, offset) >= 1)
+ {
+ nullable = tvb_get_guint8(tvb, offset + 0) == OPENWIRE_BOOLEAN_FALSE ? TRUE : FALSE;
+ if (openwire_verbose_type)
+ {
+ boolean_item = proto_tree_add_item(tree, hf_openwire_type_notnull, tvb, offset, 1, ENC_BIG_ENDIAN);
+ }
+ validate_boolean(tvb, pinfo, tree, offset, boolean_item);
+ if (nullable == TRUE)
+ {
+ proto_tree_add_item(tree, particularize(field, hf_openwire_none), tvb, offset, 1, ENC_NA);
+ return offset - startOffset + 1;
+ }
+ offset += 1;
+ }
+
+ /* First check for primitives types */
+ if (type == OPENWIRE_TYPE_NULL)
+ {
+ offset += 0;
+ }
+ else if (type == OPENWIRE_TYPE_INTEGER && tvb_length_remaining(tvb, offset) >= 4)
+ {
+ proto_tree_add_item(tree, particularize(field, hf_openwire_type_integer), tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ }
+ else if (type == OPENWIRE_TYPE_SHORT && tvb_length_remaining(tvb, offset) >= 2)
+ {
+ proto_tree_add_item(tree, particularize(field, hf_openwire_type_short), tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ }
+ else if (type == OPENWIRE_TYPE_LONG && tvb_length_remaining(tvb, offset) >= 8)
+ {
+ proto_tree_add_item(tree, particularize(field, hf_openwire_type_long), tvb, offset, 8, ENC_BIG_ENDIAN);
+ offset += 8;
+ }
+ else if (type == OPENWIRE_TYPE_BOOLEAN && tvb_length_remaining(tvb, offset) >= 1)
+ {
+ boolean_item = proto_tree_add_item(tree, particularize(field, hf_openwire_type_boolean), tvb, offset, 1, ENC_BIG_ENDIAN);
+ validate_boolean(tvb, pinfo, tree, offset, boolean_item);
+ offset += 1;
+ }
+ else if (type == OPENWIRE_TYPE_BYTE && tvb_length_remaining(tvb, offset) >= 1)
+ {
+ proto_tree_add_item(tree, particularize(field, hf_openwire_type_byte), tvb, offset, 1, ENC_NA);
+ offset += 1;
+ }
+ else if (type == OPENWIRE_TYPE_CHAR && tvb_length_remaining(tvb, offset) >= 2)
+ {
+ proto_tree_add_item(tree, particularize(field, hf_openwire_type_char), tvb, offset, 2, ENC_NA);
+ offset += 2;
+ }
+ else if (type == OPENWIRE_TYPE_FLOAT && tvb_length_remaining(tvb, offset) >= 4)
+ {
+ proto_tree_add_item(tree, particularize(field, hf_openwire_type_float), tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ }
+ else if (type == OPENWIRE_TYPE_DOUBLE && tvb_length_remaining(tvb, offset) >= 8)
+ {
+ proto_tree_add_item(tree, particularize(field, hf_openwire_type_double), tvb, offset, 8, ENC_BIG_ENDIAN);
+ offset += 8;
+ }
+ else if (type == OPENWIRE_TYPE_STRING && tvb_length_remaining(tvb, offset) >= 2)
+ {
+ gint iStringLength = 0;
+ iStringLength = tvb_get_ntohs(tvb, offset);
+ if (openwire_verbose_type)
+ {
+ proto_tree_add_item(tree, hf_openwire_type_short, tvb, offset, 2, ENC_BIG_ENDIAN);
+ }
+ if (tvb_length_remaining(tvb, offset) >= 2 + iStringLength)
+ {
+ proto_tree_add_item(tree, particularize(field, hf_openwire_type_string), tvb, offset + 2, iStringLength, ENC_NA);
+ offset += 2 + iStringLength;
+ }
+ }
+ else if (type == OPENWIRE_TYPE_BIG_STRING && tvb_length_remaining(tvb, offset) >= 4)
+ {
+ gint iStringLength = 0;
+ iStringLength = tvb_get_ntohl(tvb, offset);
+ if (openwire_verbose_type)
+ {
+ proto_tree_add_item(tree, hf_openwire_type_integer, tvb, offset, 4, ENC_BIG_ENDIAN);
+ }
+ if (tvb_length_remaining(tvb, offset) >= 4 + iStringLength)
+ {
+ proto_tree_add_item(tree, particularize(field, hf_openwire_type_string), tvb, offset + 4, iStringLength, ENC_NA);
+ offset += 4 + iStringLength;
+ }
+ }
+ else if (type == OPENWIRE_TYPE_BYTE_ARRAY && tvb_length_remaining(tvb, offset) >= 4)
+ {
+ gint iArrayLength = 0;
+ iArrayLength = tvb_get_ntohl(tvb, offset);
+ if (openwire_verbose_type)
+ {
+ proto_tree_add_item(tree, hf_openwire_type_integer, tvb, offset, 4, ENC_BIG_ENDIAN);
+ }
+ if (tvb_length_remaining(tvb, offset) >= 4 + iArrayLength)
+ {
+ proto_item * array_item = NULL;
+ proto_tree * object_tree = NULL;
+ array_item = proto_tree_add_item(tree, particularize(field, hf_openwire_type_bytes), tvb, offset + 4, iArrayLength, ENC_NA);
+ object_tree = proto_item_add_subtree(array_item, ett_openwire_type);
+ if (field == hf_openwire_message_body)
+ {
+ tvbuff_t* next_tvb = NULL;
+ if (parentType == OPENWIRE_ACTIVEMQ_TEXT_MESSAGE)
+ {
+ dissect_openwire_type(tvb, pinfo, object_tree, offset + 4, hf_openwire_none, OPENWIRE_TYPE_BIG_STRING, type, FALSE);
+ next_tvb = tvb_new_subset(tvb, offset + 4, iArrayLength, iArrayLength);
+ add_new_data_source(pinfo, next_tvb, "Body");
+ }
+ else if (parentType == OPENWIRE_ACTIVEMQ_MAP_MESSAGE)
+ {
+ dissect_openwire_type(tvb, pinfo, object_tree, offset + 4, hf_openwire_none, OPENWIRE_TYPE_MAP, type, FALSE);
+ }
+ else if (parentType == OPENWIRE_ACTIVEMQ_STREAM_MESSAGE)
+ {
+ gint streamOffset = offset + 4;
+ while (streamOffset < offset + 4 + iArrayLength)
+ {
+ streamOffset += dissect_openwire_type(tvb, pinfo, object_tree, streamOffset, hf_openwire_none, OPENWIRE_TYPE_NESTED, type, FALSE);
+ }
+ }
+ else if (parentType == OPENWIRE_ACTIVEMQ_BYTES_MESSAGE
+ || parentType == OPENWIRE_ACTIVEMQ_OBJECT_MESSAGE
+ || parentType == OPENWIRE_ACTIVEMQ_BLOB_MESSAGE)
+ {
+ next_tvb = tvb_new_subset(tvb, offset + 4, iArrayLength, iArrayLength);
+ add_new_data_source(pinfo, next_tvb, "Body");
+ expert_add_info_format(pinfo, array_item, PI_UNDECODED, PI_NOTE, "OpenWire body type not supported by Wireshark");
+ }
+ }
+ else if (field == hf_openwire_message_properties)
+ {
+ dissect_openwire_type(tvb, pinfo, object_tree, offset + 4, hf_openwire_none, OPENWIRE_TYPE_MAP, type, FALSE);
+ }
+ offset += 4 + iArrayLength;
+ }
+ }
+ else if (tvb_length_remaining(tvb, offset) >= 1)
+ {
+ /* Check for complex types */
+ proto_tree *object_tree;
+ proto_item *ti;
+ ti = proto_tree_add_item(tree, particularize(field, hf_openwire_type_object), tvb, startOffset, -1, ENC_NA);
+ proto_item_append_text(ti, ": %s", val_to_str_ext(type, &openwire_type_vals_ext, "Unknown (0x%02x)"));
+ proto_item_append_text(ti, "%s", cache_strbuf->str);
+
+ object_tree = proto_item_add_subtree(ti, ett_openwire_type);
+
+ if (type == OPENWIRE_TYPE_OBJECT_ARRAY && tvb_length_remaining(tvb, offset) >= 2)
+ {
+ gint iArrayLength;
+ int iArrayItem = 0;
+ iArrayLength = tvb_get_ntohs(tvb, offset);
+ if (openwire_verbose_type)
+ {
+ proto_tree_add_item(object_tree, hf_openwire_type_short, tvb, offset + 0, 2, ENC_BIG_ENDIAN);
+ }
+ proto_item_append_text(ti, " (Size : %d)", iArrayLength);
+ offset += 2;
+ for (iArrayItem = 0; iArrayItem < iArrayLength; iArrayItem++)
+ {
+ if (tvb_length_remaining(tvb, offset) >= 0)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_none, OPENWIRE_TYPE_NESTED, type, TRUE);
+ }
+ }
+ }
+ else if (type == OPENWIRE_TYPE_MAP && tvb_length_remaining(tvb, offset) >= 4)
+ {
+ int iMapItem = 0;
+ int iMapLength = 0;
+ iMapLength = tvb_get_ntohl(tvb, offset);
+ if (openwire_verbose_type)
+ {
+ proto_tree_add_item(object_tree, hf_openwire_map_length, tvb, offset, 4, ENC_BIG_ENDIAN);
+ }
+ proto_item_append_text(ti, " (Size : %d)", iMapLength);
+ offset += 4;
+ if (iMapLength > 0)
+ {
+ for (iMapItem = 0; iMapItem < iMapLength; iMapItem++)
+ {
+ proto_item * map_entry = NULL;
+ proto_tree * entry_tree = NULL;
+ map_entry = proto_tree_add_item(object_tree, hf_openwire_map_entry, tvb, offset, 0, ENC_NA);
+ entry_tree = proto_item_add_subtree(map_entry, ett_openwire_type);
+ if (tvb_length_remaining(tvb, offset) >= 0)
+ {
+ gint entryStartOffset = offset;
+ /* Key */
+ offset += dissect_openwire_type(tvb, pinfo, entry_tree, offset, hf_openwire_map_key, OPENWIRE_TYPE_STRING, type, FALSE);
+ /* Value */
+ offset += dissect_openwire_type(tvb, pinfo, entry_tree, offset, hf_openwire_none, OPENWIRE_TYPE_NESTED, type, FALSE);
+ proto_item_set_len(map_entry, offset - entryStartOffset);
+ }
+ }
+ }
+ }
+ else if (type == OPENWIRE_TYPE_THROWABLE && tvb_length_remaining(tvb, offset) >= 2)
+ {
+ gint iStackTraceDepth, iStackTraceItem;
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_throwable_class, OPENWIRE_TYPE_STRING, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_throwable_message, OPENWIRE_TYPE_STRING, type, TRUE);
+ iStackTraceDepth = tvb_get_ntohs(tvb, offset);
+ if (openwire_verbose_type)
+ {
+ proto_tree_add_item(tree, hf_openwire_type_short, tvb, offset, 2, ENC_BIG_ENDIAN);
+ }
+ offset += 2;
+ if (iStackTraceDepth > 0)
+ {
+ for (iStackTraceItem = 0; iStackTraceItem < iStackTraceDepth; iStackTraceItem++)
+ {
+ proto_item *element;
+ proto_tree *element_tree;
+ gint startElementOffset = offset;
+ element = proto_tree_add_item(object_tree, hf_openwire_throwable_element, tvb, startElementOffset, -1, ENC_NA);
+ element_tree = proto_item_add_subtree(element, ett_openwire_type);
+
+ if (tvb_length_remaining(tvb, offset) >= 0)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, element_tree, offset, hf_openwire_throwable_classname, OPENWIRE_TYPE_STRING, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, element_tree, offset, hf_openwire_throwable_methodname, OPENWIRE_TYPE_STRING, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, element_tree, offset, hf_openwire_throwable_filename, OPENWIRE_TYPE_STRING, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, element_tree, offset, hf_openwire_throwable_linenumber, OPENWIRE_TYPE_INTEGER, type, FALSE);
+ proto_item_set_len(element, offset - startElementOffset);
+ }
+ }
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_exceptionresponse_exception, OPENWIRE_TYPE_THROWABLE, type, TRUE);
+ }
+ }
+ else if (type == OPENWIRE_TYPE_LIST && tvb_length_remaining(tvb, offset) >= 4)
+ {
+ /* TODO (unused) */
+ }
+ else if (type == OPENWIRE_CONNECTION_ID && tvb_length_remaining(tvb, offset) >= 1)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_connectionid_value, OPENWIRE_TYPE_STRING, type, TRUE);
+ }
+ else if (type == OPENWIRE_SESSION_ID && tvb_length_remaining(tvb, offset) >= 2)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_sessionid_connectionid, OPENWIRE_TYPE_STRING, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_sessionid_value, OPENWIRE_TYPE_LONG, type, FALSE);
+ }
+ else if (type == OPENWIRE_CONSUMER_ID && tvb_length_remaining(tvb, offset) >= 3)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_consumerid_connectionid, OPENWIRE_TYPE_STRING, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_consumerid_value, OPENWIRE_TYPE_LONG, type, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_consumerid_sessionid, OPENWIRE_TYPE_LONG, type, FALSE);
+ }
+ else if (type == OPENWIRE_PRODUCER_ID && tvb_length_remaining(tvb, offset) >= 3)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_producerid_connectionid, OPENWIRE_TYPE_STRING, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_producerid_value, OPENWIRE_TYPE_LONG, type, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_producerid_sessionid, OPENWIRE_TYPE_LONG, type, FALSE);
+ }
+ else if (type == OPENWIRE_BROKER_ID && tvb_length_remaining(tvb, offset) >= 1)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_brokerid_value, OPENWIRE_TYPE_STRING, type, TRUE);
+ }
+ else if (type == OPENWIRE_MESSAGE_ID && tvb_length_remaining(tvb, offset) >= 3)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_messageid_producerid, OPENWIRE_TYPE_CACHED, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_messageid_producersequenceid, OPENWIRE_TYPE_LONG, type, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_messageid_brokersequenceid, OPENWIRE_TYPE_LONG, type, FALSE);
+ }
+ else if (type == OPENWIRE_ACTIVEMQ_LOCAL_TRANSACTION_ID && tvb_length_remaining(tvb, offset) >= 2)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_localtransactionid_value, OPENWIRE_TYPE_LONG, type, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_localtransactionid_connectionid, OPENWIRE_TYPE_CACHED, type, TRUE);
+ }
+ else if (type == OPENWIRE_ACTIVEMQ_XA_TRANSACTION_ID && tvb_length_remaining(tvb, offset) >= 3)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_xatransactionid_formatid, OPENWIRE_TYPE_INTEGER, type, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_xatransactionid_globaltransactionid, OPENWIRE_TYPE_BYTE_ARRAY, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_xatransactionid_branchqualifier, OPENWIRE_TYPE_BYTE_ARRAY, type, TRUE);
+ }
+ else if ((type == OPENWIRE_ACTIVEMQ_QUEUE
+ || type == OPENWIRE_ACTIVEMQ_TOPIC
+ || type == OPENWIRE_ACTIVEMQ_TEMP_QUEUE
+ || type == OPENWIRE_ACTIVEMQ_TEMP_TOPIC)
+ && tvb_length_remaining(tvb, offset) >= 1)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_destination_name, OPENWIRE_TYPE_STRING, type, TRUE);
+ }
+ else if (type == OPENWIRE_ACTIVEMQ_MESSAGE
+ || type == OPENWIRE_ACTIVEMQ_BYTES_MESSAGE
+ || type == OPENWIRE_ACTIVEMQ_MAP_MESSAGE
+ || type == OPENWIRE_ACTIVEMQ_OBJECT_MESSAGE
+ || type == OPENWIRE_ACTIVEMQ_STREAM_MESSAGE
+ || type == OPENWIRE_ACTIVEMQ_TEXT_MESSAGE
+ || type == OPENWIRE_ACTIVEMQ_BLOB_MESSAGE)
+ {
+ if (parentType != type)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_command_id, OPENWIRE_TYPE_INTEGER, type, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_command_response_required, OPENWIRE_TYPE_BOOLEAN, type, FALSE);
+ }
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_producerid, OPENWIRE_TYPE_CACHED, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_destination, OPENWIRE_TYPE_CACHED, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_transactionid, OPENWIRE_TYPE_CACHED, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_originaldestination, OPENWIRE_TYPE_CACHED, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_messageid, OPENWIRE_TYPE_NESTED, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_originaldestinationid, OPENWIRE_TYPE_CACHED, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_groupid, OPENWIRE_TYPE_STRING, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_groupsequence, OPENWIRE_TYPE_INTEGER, type, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_correlationid, OPENWIRE_TYPE_STRING, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_persistent, OPENWIRE_TYPE_BOOLEAN, type, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_expiration, OPENWIRE_TYPE_LONG, type, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_priority, OPENWIRE_TYPE_BYTE, type, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_replyto, OPENWIRE_TYPE_NESTED, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_timestamp, OPENWIRE_TYPE_LONG, type, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_type, OPENWIRE_TYPE_STRING, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_body, OPENWIRE_TYPE_BYTE_ARRAY, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_properties, OPENWIRE_TYPE_BYTE_ARRAY, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_datastructure, OPENWIRE_COMMAND_INNER, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_targetconsumerid, OPENWIRE_TYPE_CACHED, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_compressed, OPENWIRE_TYPE_BOOLEAN, type, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_redeliverycount, OPENWIRE_TYPE_INTEGER, type, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_brokerpath, OPENWIRE_TYPE_OBJECT_ARRAY, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_arrival, OPENWIRE_TYPE_LONG, type, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_userid, OPENWIRE_TYPE_STRING, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_receivedbydfbridge, OPENWIRE_TYPE_BOOLEAN, type, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_droppable, OPENWIRE_TYPE_BOOLEAN, type, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_cluster, OPENWIRE_TYPE_OBJECT_ARRAY, type, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_brokerintime, OPENWIRE_TYPE_LONG, type, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, object_tree, offset, hf_openwire_message_brokerouttime, OPENWIRE_TYPE_LONG, type, FALSE);
+ }
+ else if (tvb_length_remaining(tvb, offset) > 0)
+ {
+ expert_add_info_format(pinfo, object_tree, PI_UNDECODED, PI_NOTE, "OpenWire type not supported by Wireshark : %d", type);
+ offset += tvb_length_remaining(tvb, offset);
+ }
+ proto_item_set_len(ti, offset - startOffset);
+
+ }
+ return (offset - startOffset);
+}
+
+static int
+dissect_openwire_command(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, int parentType)
+{
+ gint startOffset = offset;
+ guint8 iCommand;
+
+ iCommand = tvb_get_guint8(tvb, offset + 0);
+
+ proto_tree_add_item(tree, hf_openwire_command, tvb, offset + 0, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+
+ if (iCommand == OPENWIRE_WIREFORMAT_INFO)
+ {
+ if (tvb_length_remaining(tvb, offset) >= 17)
+ {
+ proto_tree_add_item(tree, hf_openwire_wireformatinfo_magic, tvb, offset + 0, 8, ENC_NA);
+ proto_tree_add_item(tree, hf_openwire_wireformatinfo_version, tvb, offset + 8, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_openwire_wireformatinfo_data, tvb, offset + 12, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_openwire_wireformatinfo_length, tvb, offset + 13, 4, ENC_BIG_ENDIAN);
+ offset += 17;
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_none, OPENWIRE_TYPE_MAP, iCommand, FALSE);
+ }
+ }
+ else
+ {
+ if (tvb_length_remaining(tvb, offset) >= 5)
+ {
+ proto_tree_add_item(tree, hf_openwire_command_id, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_openwire_command_response_required, tvb, offset + 4, 1, ENC_BIG_ENDIAN);
+ offset += 5;
+ if (iCommand == OPENWIRE_SHUTDOWN_INFO || iCommand == OPENWIRE_KEEP_ALIVE_INFO || iCommand == OPENWIRE_FLUSH_COMMAND)
+ {
+ /* No additional fields */
+ }
+ else if (iCommand == OPENWIRE_SESSION_INFO)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_sessioninfo_sessionid, OPENWIRE_TYPE_CACHED, iCommand, TRUE);
+ }
+ else if (iCommand == OPENWIRE_DESTINATION_INFO)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_destinationinfo_connectionid, OPENWIRE_TYPE_CACHED, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_destinationinfo_destination, OPENWIRE_TYPE_CACHED, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_destinationinfo_operationtype, OPENWIRE_TYPE_BYTE, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_destinationinfo_timeout, OPENWIRE_TYPE_LONG, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_destinationinfo_brokerpath, OPENWIRE_TYPE_OBJECT_ARRAY, iCommand, TRUE);
+ }
+ else if (iCommand == OPENWIRE_CONNECTION_INFO)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_connectioninfo_connectionid, OPENWIRE_TYPE_CACHED, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_connectioninfo_clientid, OPENWIRE_TYPE_STRING, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_connectioninfo_password, OPENWIRE_TYPE_STRING, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_connectioninfo_username, OPENWIRE_TYPE_STRING, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_connectioninfo_brokerpath, OPENWIRE_TYPE_OBJECT_ARRAY, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_connectioninfo_brokermasterconnector, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_connectioninfo_manageable, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_connectioninfo_clientmaster, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_connectioninfo_faulttolerant, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_connectioninfo_failoverreconnect, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ }
+ else if (iCommand == OPENWIRE_CONNECTION_CONTROL)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_connectioncontrol_close, OPENWIRE_TYPE_BOOLEAN, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_connectioncontrol_exit, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_connectioncontrol_faulttolerant, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_connectioncontrol_resume, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_connectioncontrol_suspend, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_connectioncontrol_connectedbrokers, OPENWIRE_TYPE_STRING, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_connectioncontrol_reconnectto, OPENWIRE_TYPE_STRING, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_connectioncontrol_rebalanceconnection, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ }
+ else if (iCommand == OPENWIRE_CONSUMER_INFO)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_consumerinfo_consumerid, OPENWIRE_TYPE_CACHED, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_consumerinfo_browser, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_consumerinfo_destination, OPENWIRE_TYPE_CACHED, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_consumerinfo_prefetchsize, OPENWIRE_TYPE_INTEGER, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_consumerinfo_maximumpendingmessagelimit, OPENWIRE_TYPE_INTEGER, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_consumerinfo_dispatchasync, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_consumerinfo_selector, OPENWIRE_TYPE_STRING, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_consumerinfo_subscriptionname, OPENWIRE_TYPE_STRING, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_consumerinfo_nolocal, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_consumerinfo_exclusive, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_consumerinfo_retroactive, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_consumerinfo_priority, OPENWIRE_TYPE_BYTE, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_consumerinfo_brokerpath, OPENWIRE_TYPE_OBJECT_ARRAY, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_consumerinfo_additionalpredicate, OPENWIRE_TYPE_NESTED, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_consumerinfo_networksubscription, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_consumerinfo_optimizedacknowledge, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_consumerinfo_norangeacks, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_consumerinfo_networkconsumerpath, OPENWIRE_TYPE_OBJECT_ARRAY, iCommand, TRUE);
+ }
+ else if (iCommand == OPENWIRE_PRODUCER_INFO)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_producerinfo_producerid, OPENWIRE_TYPE_CACHED, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_producerinfo_destination, OPENWIRE_TYPE_CACHED, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_producerinfo_brokerpath, OPENWIRE_TYPE_OBJECT_ARRAY, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_producerinfo_dispatchasync, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_producerinfo_windowsize, OPENWIRE_TYPE_INTEGER, iCommand, FALSE);
+ }
+ else if (iCommand == OPENWIRE_CONSUMER_CONTROL)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_consumercontrol_destination, OPENWIRE_TYPE_NESTED, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_consumercontrol_close, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_consumercontrol_consumerid, OPENWIRE_TYPE_NESTED, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_consumercontrol_prefetch, OPENWIRE_TYPE_INTEGER, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_consumercontrol_flush, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_consumercontrol_start, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_consumercontrol_stop, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ }
+ else if (iCommand == OPENWIRE_BROKER_INFO)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_brokerinfo_brokerid, OPENWIRE_TYPE_CACHED, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_brokerinfo_brokerurl, OPENWIRE_TYPE_STRING, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_brokerinfo_peerbrokerinfos, OPENWIRE_TYPE_OBJECT_ARRAY, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_brokerinfo_brokername, OPENWIRE_TYPE_STRING, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_brokerinfo_slavebroker, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_brokerinfo_masterbroker, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_brokerinfo_faulttolerantconfiguration, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_brokerinfo_duplexconnection, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_brokerinfo_networkconnection, OPENWIRE_TYPE_BOOLEAN, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_brokerinfo_connectionid, OPENWIRE_TYPE_LONG, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_brokerinfo_brokeruploadurl, OPENWIRE_TYPE_STRING, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_brokerinfo_networkproperties, OPENWIRE_TYPE_STRING, iCommand, TRUE);
+ }
+ else if (iCommand == OPENWIRE_TRANSACTION_INFO)
+ {
+ guint8 iTransactionType;
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_transactioninfo_connectionid, OPENWIRE_TYPE_CACHED, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_transactioninfo_transactionid, OPENWIRE_TYPE_CACHED, iCommand, TRUE);
+ if (tvb_length_remaining(tvb, offset) >= 1)
+ {
+ iTransactionType = tvb_get_guint8(tvb, offset);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_transactioninfo_type, OPENWIRE_TYPE_BYTE, iCommand, FALSE);
+ proto_item_append_text(tree, " (%s)", val_to_str_ext(iTransactionType, &openwire_transaction_type_vals_ext, "Unknown (0x%02x)"));
+ }
+ }
+ else if (iCommand == OPENWIRE_PRODUCER_ACK)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_producerack_producerid, OPENWIRE_TYPE_NESTED, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_producerack_size, OPENWIRE_TYPE_INTEGER, iCommand, FALSE);
+ }
+ else if (iCommand == OPENWIRE_REMOVE_INFO)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_removeinfo_objectid, OPENWIRE_TYPE_CACHED, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_removeinfo_lastdeliveredsequenceid, OPENWIRE_TYPE_LONG, iCommand, FALSE);
+ }
+ else if (iCommand == OPENWIRE_REMOVE_SUBSCRIPTION_INFO)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_removesubscriptioninfo_connectionid, OPENWIRE_TYPE_CACHED, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_removesubscriptioninfo_subscriptionname, OPENWIRE_TYPE_STRING, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_removesubscriptioninfo_clientid, OPENWIRE_TYPE_STRING, iCommand, TRUE);
+ }
+ else if (iCommand == OPENWIRE_MESSAGE_DISPATCH)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_messagedispatch_consumerid, OPENWIRE_TYPE_CACHED, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_messagedispatch_destination, OPENWIRE_TYPE_CACHED, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_messagedispatch_message, OPENWIRE_TYPE_NESTED, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_messagedispatch_redeliverycounter, OPENWIRE_TYPE_INTEGER, iCommand, FALSE);
+ }
+ else if (iCommand == OPENWIRE_MESSAGE_ACK)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_messageack_destination, OPENWIRE_TYPE_CACHED, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_messageack_transactionid, OPENWIRE_TYPE_CACHED, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_messageack_consumerid, OPENWIRE_TYPE_CACHED, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_messageack_acktype, OPENWIRE_TYPE_BYTE, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_messageack_firstmessageid, OPENWIRE_TYPE_NESTED, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_messageack_lastmessageid, OPENWIRE_TYPE_NESTED, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_messageack_messagecount, OPENWIRE_TYPE_INTEGER, iCommand, FALSE);
+ }
+ else if (iCommand == OPENWIRE_MESSAGE_PULL)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_messagepull_consumerid, OPENWIRE_TYPE_CACHED, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_messagepull_destinationid, OPENWIRE_TYPE_CACHED, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_messagepull_timeout, OPENWIRE_TYPE_LONG, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_messagepull_correlationid, OPENWIRE_TYPE_STRING, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_messagepull_messageid, OPENWIRE_TYPE_NESTED, iCommand, TRUE);
+ }
+ else if (iCommand == OPENWIRE_RESPONSE)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_response_correlationid, OPENWIRE_TYPE_INTEGER, iCommand, FALSE);
+ }
+ else if (iCommand == OPENWIRE_DATA_RESPONSE)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_response_correlationid, OPENWIRE_TYPE_INTEGER, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_dataresponse_data, OPENWIRE_COMMAND_INNER, iCommand, TRUE);
+ }
+ else if (iCommand == OPENWIRE_CONNECTION_ERROR)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_connectionerror_exception, OPENWIRE_TYPE_THROWABLE, iCommand, TRUE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_connectionerror_connectionid, OPENWIRE_TYPE_NESTED, iCommand, TRUE);
+ }
+ else if (iCommand == OPENWIRE_EXCEPTION_RESPONSE)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_response_correlationid, OPENWIRE_TYPE_INTEGER, iCommand, FALSE);
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_exceptionresponse_exception, OPENWIRE_TYPE_THROWABLE, iCommand, TRUE);
+ }
+ else if (iCommand == OPENWIRE_CONTROL_COMMAND)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_controlcommand_command, OPENWIRE_TYPE_STRING, iCommand, TRUE);
+ }
+ else if (iCommand == OPENWIRE_ACTIVEMQ_MESSAGE
+ || iCommand == OPENWIRE_ACTIVEMQ_BYTES_MESSAGE
+ || iCommand == OPENWIRE_ACTIVEMQ_MAP_MESSAGE
+ || iCommand == OPENWIRE_ACTIVEMQ_OBJECT_MESSAGE
+ || iCommand == OPENWIRE_ACTIVEMQ_STREAM_MESSAGE
+ || iCommand == OPENWIRE_ACTIVEMQ_TEXT_MESSAGE
+ || iCommand == OPENWIRE_ACTIVEMQ_BLOB_MESSAGE)
+ {
+ offset += dissect_openwire_type(tvb, pinfo, tree, offset, hf_openwire_none, iCommand, parentType, FALSE);
+ }
+ else if (tvb_length_remaining(tvb, offset) > 0)
+ {
+ expert_add_info_format(pinfo, tree, PI_UNDECODED, PI_NOTE, "OpenWire command not supported by Wireshark: %d", iCommand);
+ }
+ }
+ }
+ return (offset - startOffset);
+}
+
+static void
+dissect_openwire(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ gint offset = 0;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "OpenWire");
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ if (tvb_length_remaining(tvb, offset) >= 5)
+ {
+ guint8 iCommand;
+ proto_tree *openwireroot_tree;
+ proto_item *ti;
+ gboolean caching;
+
+ iCommand = tvb_get_guint8(tvb, offset + 4);
+
+ if (check_col(pinfo->cinfo, COL_INFO))
+ {
+ col_append_sep_str(pinfo->cinfo, COL_INFO, " | ",
+ val_to_str_ext(iCommand, &openwire_opcode_vals_ext, "Unknown (0x%02x)"));
+ col_set_fence(pinfo->cinfo, COL_INFO);
+ }
+
+ detect_protocol_options(tvb, pinfo, offset, iCommand);
+
+ ti = proto_tree_add_item(tree, proto_openwire, tvb, offset, -1, ENC_NA);
+ proto_item_append_text(ti, " (%s)", val_to_str_ext(iCommand, &openwire_opcode_vals_ext, "Unknown (0x%02x)"));
+ openwireroot_tree = proto_item_add_subtree(ti, ett_openwire);
+
+ proto_tree_add_item(openwireroot_tree, hf_openwire_length, tvb, offset + 0, 4, ENC_BIG_ENDIAN);
+
+ /* Abort dissection if tight encoding is enabled*/
+ if (iCommand != OPENWIRE_WIREFORMAT_INFO && retrieve_tight(pinfo) == TRUE)
+ {
+ proto_tree_add_item(openwireroot_tree, hf_openwire_command, tvb, offset + 4, 1, ENC_BIG_ENDIAN);
+ expert_add_info_format(pinfo, openwireroot_tree, PI_UNDECODED, PI_NOTE,
+ "OpenWire tight encoding not supported by Wireshark, use wireFormat.tightEncodingEnabled=false");
+ return;
+ }
+
+ caching = retrieve_caching(pinfo);
+ if (caching)
+ {
+ proto_tree_add_boolean(openwireroot_tree, hf_openwire_cached_enabled, tvb, offset, 0, caching);
+ }
+
+ offset += 4;
+ offset += dissect_openwire_command(tvb, pinfo, openwireroot_tree, offset, iCommand);
+ if (tvb_length_remaining(tvb, offset) > 0)
+ {
+ expert_add_info_format(pinfo, tree, PI_UNDECODED, PI_NOTE, "OpenWire command fields unknown to Wireshark: %d", iCommand);
+ }
+ }
+}
+
+static guint
+get_openwire_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
+{
+ if (tvb_length_remaining(tvb, offset) >= 5)
+ {
+ return (tvb_get_ntohl(tvb, offset) + 4);
+ }
+ return 0;
+}
+
+static void
+dissect_openwire_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ tcp_dissect_pdus(tvb, pinfo, tree, openwire_desegment, 5, get_openwire_pdu_len, dissect_openwire);
+}
+
+
+static gboolean
+dissect_openwire_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ conversation_t *conversation;
+ gboolean detected = FALSE;
+
+ if (tvb_length(tvb) == 10 || tvb_length(tvb) == 11)
+ {
+ /* KeepAlive is sent by default every 30 second. It is 10 bytes (loose) or 11 bytes (tight) long. */
+ if ((tvb_get_guint8(tvb, 4) == OPENWIRE_KEEP_ALIVE_INFO)
+ && (tvb_get_ntohl(tvb, 0) + 4 == tvb_length(tvb)))
+ {
+ detected = TRUE;
+ }
+ }
+ else if (tvb_length(tvb) == 14 || tvb_length(tvb) == 15)
+ {
+ /* Response is sent after several commands. It is 14 bytes (loose) or 15 bytes (tight) long. */
+ if ((tvb_get_guint8(tvb, 4) == OPENWIRE_RESPONSE)
+ && (tvb_get_ntohl(tvb, 0) + 4 == tvb_length(tvb)))
+ {
+ detected = TRUE;
+ }
+ }
+ else if (tvb_length(tvb) >= 13)
+ {
+ /* Only the WIREFORMAT_INFO command contains a "magic". It is the first command sent on a connection.
+ If the capture was started after this command, a manual "Decode As..." might be required.
+ */
+ if ((tvb_get_guint8(tvb, 4) == OPENWIRE_WIREFORMAT_INFO)
+ && (tvb_get_ntohl(tvb, 5) == OPENWIRE_MAGIC_PART_1)
+ && (tvb_get_ntohl(tvb, 9) == OPENWIRE_MAGIC_PART_2))
+ {
+ detected = TRUE;
+ }
+ }
+ if (detected)
+ {
+ /* Register this dissector for this conversation */
+ conversation = find_or_create_conversation(pinfo);
+ conversation_set_dissector(conversation, openwire_tcp_handle);
+
+ /* Dissect the packet */
+ dissect_openwire(tvb, pinfo, tree);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void
+proto_register_openwire(void)
+{
+ static hf_register_info hf[] = {
+ { &hf_openwire_length,
+ { "Length", "openwire.length", FT_UINT32, BASE_DEC, NULL, 0x0, "OpenWire length", HFILL }},
+
+ { &hf_openwire_command,
+ { "Command", "openwire.command", FT_UINT8, BASE_DEC, VALS(openwire_opcode_vals), 0x0, "Openwire command", HFILL }},
+
+ { &hf_openwire_command_id,
+ { "Command Id", "openwire.command.id", FT_UINT32, BASE_DEC, NULL, 0x0, "Openwire command id", HFILL }},
+
+ { &hf_openwire_command_response_required,
+ { "Command response required", "openwire.command.response_required", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire command response required", HFILL }},
+
+ { &hf_openwire_response_correlationid,
+ { "CorrelationId", "openwire.response.correlationid", FT_INT32, BASE_DEC, NULL, 0x0, "Openwire Response CorrelationId", HFILL }},
+
+ { &hf_openwire_dataresponse_data,
+ { "Data", "openwire.responsedata.data", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire ResponseData Data", HFILL }},
+
+ { &hf_openwire_exceptionresponse_exception,
+ { "Exception", "openwire.exceptionresponse.exception", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire ExceptionResponse Exception", HFILL }},
+
+ { &hf_openwire_connectionerror_exception,
+ { "Exception", "openwire.connectionerror.exception", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire ConnectionError Exception", HFILL }},
+
+ { &hf_openwire_connectionerror_connectionid,
+ { "ConnectionId", "openwire.connectionerror.connectionid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire ConnectionError ConnectionId", HFILL }},
+
+ { &hf_openwire_controlcommand_command,
+ { "Command", "openwire.controlcommand.command", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire ControlCommand Command", HFILL }},
+
+ { &hf_openwire_wireformatinfo_magic,
+ { "Magic", "openwire.wireformatinfo.magic", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire WireFormatInfo Magic", HFILL }},
+
+ { &hf_openwire_wireformatinfo_version,
+ { "Version", "openwire.wireformatinfo.version", FT_UINT32, BASE_DEC, NULL, 0x0, "Openwire WireFormatInfo Version", HFILL }},
+
+ { &hf_openwire_wireformatinfo_data,
+ { "Data", "openwire.wireformatinfo.data", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire WireFormatInfo Data", HFILL }},
+
+ { &hf_openwire_wireformatinfo_length,
+ { "Length", "openwire.wireformatinfo.length", FT_UINT32, BASE_DEC, NULL, 0x0, "Openwire WireFormatInfo Length", HFILL }},
+
+ { &hf_openwire_sessioninfo_sessionid,
+ { "SessionId", "openwire.sessioninfo.sessionid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire SessionInfo SessionId", HFILL }},
+
+ { &hf_openwire_destinationinfo_connectionid,
+ { "ConnectionId", "openwire.destinationinfo.connectionid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire DestinationInfo ConnectionId", HFILL }},
+
+ { &hf_openwire_destinationinfo_destination,
+ { "Destination", "openwire.destinationinfo.destination", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire DestinationInfo Destination", HFILL }},
+
+ { &hf_openwire_destinationinfo_operationtype,
+ { "OperationType", "openwire.destinationinfo.operationtype", FT_UINT8, BASE_DEC, VALS(openwire_operation_type_vals), 0x0, "Openwire DestinationInfo OperationType", HFILL }},
+
+ { &hf_openwire_destinationinfo_timeout,
+ { "Timeout", "openwire.destinationinfo.timeout", FT_INT64, BASE_DEC, NULL, 0x0, "Openwire DestinationInfo Timeout", HFILL }},
+
+ { &hf_openwire_destinationinfo_brokerpath,
+ { "BrokerPath", "openwire.destinationinfo.brokerpath", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire DestinationInfo BrokerPath", HFILL }},
+
+ { &hf_openwire_brokerinfo_brokerid,
+ { "BrokerId", "openwire.brokerinfo.brokerid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire BrokerInfo BrokerId", HFILL }},
+
+ { &hf_openwire_brokerinfo_brokerurl,
+ { "BrokerURL", "openwire.brokerinfo.brokerurl", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire BrokerInfo BrokerURL", HFILL }},
+
+ { &hf_openwire_brokerinfo_peerbrokerinfos,
+ { "PeerBrokerInfos", "openwire.brokerinfo.peerbrokerinfos", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire BrokerInfo PeerBrokerInfos", HFILL }},
+
+ { &hf_openwire_brokerinfo_brokername,
+ { "BrokerName", "openwire.brokerinfo.brokername", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire BrokerInfo BrokerName", HFILL }},
+
+ { &hf_openwire_brokerinfo_slavebroker,
+ { "SlaveBroker", "openwire.brokerinfo.slavebroker", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire BrokerInfo SlaveBroker", HFILL }},
+
+ { &hf_openwire_brokerinfo_masterbroker,
+ { "MasterBroker", "openwire.brokerinfo.masterbroker", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire BrokerInfo MasterBroker", HFILL }},
+
+ { &hf_openwire_brokerinfo_faulttolerantconfiguration,
+ { "FaultTolerantConfiguration", "openwire.brokerinfo.faulttolerantconfiguration", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire BrokerInfo FaultTolerantConfiguration", HFILL }},
+
+ { &hf_openwire_brokerinfo_duplexconnection,
+ { "DuplexConnection", "openwire.brokerinfo.duplexconnection", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire BrokerInfo DuplexConnection", HFILL }},
+
+ { &hf_openwire_brokerinfo_networkconnection,
+ { "NetworkConnection", "openwire.brokerinfo.networkconnection", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire BrokerInfo NetworkConnection", HFILL }},
+
+ { &hf_openwire_brokerinfo_connectionid,
+ { "ConnectionId", "openwire.brokerinfo.connectionid", FT_INT64, BASE_DEC, NULL, 0x0, "Openwire BrokerInfo ConnectionId", HFILL }},
+
+ { &hf_openwire_brokerinfo_brokeruploadurl,
+ { "BrokerUploadUrl", "openwire.brokerinfo.brokeruploadurl", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire BrokerInfo BrokerUploadUrl", HFILL }},
+
+ { &hf_openwire_brokerinfo_networkproperties,
+ { "NetworkProperties", "openwire.brokerinfo.networkproperties", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire BrokerInfo NetworkProperties", HFILL }},
+
+ { &hf_openwire_connectioninfo_connectionid,
+ { "ConnectionId", "openwire.connectioninfo.connectionid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire ConnectionInfo ConnectionId", HFILL }},
+
+ { &hf_openwire_connectioninfo_clientid,
+ { "ClientId", "openwire.connectioninfo.clientid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire ConnectionInfo ClientId", HFILL }},
+
+ { &hf_openwire_connectioninfo_password,
+ { "Password", "openwire.connectioninfo.password", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire ConnectionInfo Password", HFILL }},
+
+ { &hf_openwire_connectioninfo_username,
+ { "UserName", "openwire.connectioninfo.username", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire ConnectionInfo UserName", HFILL }},
+
+ { &hf_openwire_connectioninfo_brokerpath,
+ { "BrokerPath", "openwire.connectioninfo.brokerpath", FT_BYTES, BASE_NONE, NULL, 0x0, "Openwire ConnectionInfo BrokerPath", HFILL }},
+
+ { &hf_openwire_connectioninfo_brokermasterconnector,
+ { "BrokerMasterConnector", "openwire.connectioninfo.brokermasterconnector", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire ConnectionInfo BrokerMasterConnector", HFILL }},
+
+ { &hf_openwire_connectioninfo_manageable,
+ { "Manageable", "openwire.connectioninfo.manageable", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire ConnectionInfo Manageable", HFILL }},
+
+ { &hf_openwire_connectioninfo_clientmaster,
+ { "ClientMaster", "openwire.connectioninfo.clientmaster", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire ConnectionInfo ClientMaster", HFILL }},
+
+ { &hf_openwire_connectioninfo_faulttolerant,
+ { "FaultTolerant", "openwire.connectioninfo.faulttolerant", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire ConnectionInfo FaultTolerant", HFILL }},
+
+ { &hf_openwire_connectioninfo_failoverreconnect,
+ { "FailoverReconnect", "openwire.connectioninfo.failoverreconnect", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire ConnectionInfo FailoverReconnect", HFILL } },
+
+ { &hf_openwire_consumerinfo_consumerid,
+ { "ConsumerId", "openwire.consumerinfo.consumerid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire ConsumerInfo ConsumerId", HFILL }},
+
+ { &hf_openwire_consumerinfo_browser,
+ { "Browser", "openwire.consumerinfo.browser", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire ConsumerInfo Browser", HFILL }},
+
+ { &hf_openwire_consumerinfo_destination,
+ { "Destination", "openwire.consumerinfo.destination", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire ConsumerInfo Destination", HFILL }},
+
+ { &hf_openwire_consumerinfo_prefetchsize,
+ { "PrefetchSize", "openwire.consumerinfo.prefetchsize", FT_INT32, BASE_DEC, NULL, 0x0, "Openwire ConsumerInfo PrefetchSize", HFILL }},
+
+ { &hf_openwire_consumerinfo_maximumpendingmessagelimit,
+ { "MaximumPendingMessageLimit", "openwire.consumerinfo.maximumpendingmessagelimit", FT_INT32, BASE_DEC, NULL, 0x0, "Openwire ConsumerInfo MaximumPendingMessageLimit", HFILL }},
+
+ { &hf_openwire_consumerinfo_dispatchasync,
+ { "DispatchAsync", "openwire.consumerinfo.dispatchasync", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire ConsumerInfo DispatchAsync", HFILL }},
+
+ { &hf_openwire_consumerinfo_selector,
+ { "Selector", "openwire.consumerinfo.selector", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire ConsumerInfo Selector", HFILL }},
+
+ { &hf_openwire_consumerinfo_subscriptionname,
+ { "SubscriptionName", "openwire.consumerinfo.subscriptionname", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire ConsumerInfo SubscriptionName", HFILL }},
+
+ { &hf_openwire_consumerinfo_nolocal,
+ { "NoLocal", "openwire.consumerinfo.nolocal", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire ConsumerInfo NoLocal", HFILL }},
+
+ { &hf_openwire_consumerinfo_exclusive,
+ { "Exclusive", "openwire.consumerinfo.exclusive", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire ConsumerInfo Exclusive", HFILL }},
+
+ { &hf_openwire_consumerinfo_retroactive,
+ { "RetroActive", "openwire.consumerinfo.retroactive", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire ConsumerInfo RetroActive", HFILL }},
+
+ { &hf_openwire_consumerinfo_priority,
+ { "Priority", "openwire.consumerinfo.priority", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire ConsumerInfo Priority", HFILL }},
+
+ { &hf_openwire_consumerinfo_brokerpath,
+ { "BrokerPath", "openwire.consumerinfo.brokerpath", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire ConsumerInfo BrokerPath", HFILL }},
+
+ { &hf_openwire_consumerinfo_additionalpredicate,
+ { "AdditionalPredicate", "openwire.consumerinfo.additionalpredicate", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire ConsumerInfo AdditionalPredicate", HFILL }},
+
+ { &hf_openwire_consumerinfo_networksubscription,
+ { "NetworkSubscription", "openwire.consumerinfo.networksubscription", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire ConsumerInfo NetworkSubscription", HFILL }},
+
+ { &hf_openwire_consumerinfo_optimizedacknowledge,
+ { "OptimizedAcknowledge", "openwire.consumerinfo.optimizedacknowledge", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire ConsumerInfo OptimizedAcknowledge", HFILL }},
+
+ { &hf_openwire_consumerinfo_norangeacks,
+ { "NoRangeAcks", "openwire.consumerinfo.norangeacks", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire ConsumerInfo NoRangeAcks", HFILL }},
+
+ { &hf_openwire_consumerinfo_networkconsumerpath,
+ { "NetworkConsumerPath", "openwire.consumerinfo.networkconsumerpath", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire ConsumerInfo NetworkConsumerPath", HFILL }},
+
+ { &hf_openwire_consumercontrol_destination,
+ { "Destination", "openwire.consumercontrol.destination", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire ConsumerControl Destination", HFILL }},
+
+ { &hf_openwire_consumercontrol_close,
+ { "Close", "openwire.consumercontrol.close", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire ConsumerControl Close", HFILL }},
+
+ { &hf_openwire_consumercontrol_consumerid,
+ { "ConsumerId", "openwire.consumercontrol.consumerid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire ConsumerControl ConsumerId", HFILL }},
+
+ { &hf_openwire_consumercontrol_prefetch,
+ { "Prefetch", "openwire.consumercontrol.prefetch", FT_INT32, BASE_DEC, NULL, 0x0, "Openwire ConsumerControl Prefetch", HFILL }},
+
+ { &hf_openwire_consumercontrol_flush,
+ { "Flush", "openwire.consumercontrol.flush", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire ConsumerControl Flush", HFILL }},
+
+ { &hf_openwire_consumercontrol_start,
+ { "Start", "openwire.consumercontrol.start", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire ConsumerControl Start", HFILL }},
+
+ { &hf_openwire_consumercontrol_stop,
+ { "Stop", "openwire.consumercontrol.stop", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire ConsumerControl Stop", HFILL }},
+
+ { &hf_openwire_connectioncontrol_close,
+ { "Close", "openwire.connectioncontrol.close", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire ConnectionControl Close", HFILL }},
+
+ { &hf_openwire_connectioncontrol_exit,
+ { "Exit", "openwire.connectioncontrol.exit", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire ConnectionControl Exit", HFILL }},
+
+ { &hf_openwire_connectioncontrol_faulttolerant,
+ { "FaultTolerant", "openwire.connectioncontrol.faulttolerant", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire ConnectionControl FaultTolerant", HFILL }},
+
+ { &hf_openwire_connectioncontrol_resume,
+ { "Resume", "openwire.connectioncontrol.resume", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire ConnectionControl Resume", HFILL }},
+
+ { &hf_openwire_connectioncontrol_suspend,
+ { "Suspend", "openwire.connectioncontrol.suspend", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire ConnectionControl Suspend", HFILL }},
+
+ { &hf_openwire_connectioncontrol_connectedbrokers,
+ { "ConnectedBrokers", "openwire.connectioncontrol.connectedbrokers", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire ConnectionControl ConnectedBrokers", HFILL }},
+
+ { &hf_openwire_connectioncontrol_reconnectto,
+ { "ReconnectTo", "openwire.connectioncontrol.reconnectto", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire ConnectionControl ReconnectTo", HFILL }},
+
+ { &hf_openwire_connectioncontrol_rebalanceconnection,
+ { "RebalanceConnection", "openwire.connectioncontrol.rebalanceconnection", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire ConnectionControl RebalanceConnection", HFILL }},
+
+ { &hf_openwire_removeinfo_objectid,
+ { "ObjectId", "openwire.removeinfo.objectid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire RemoveInfo ObjectId", HFILL }},
+
+ { &hf_openwire_removeinfo_lastdeliveredsequenceid,
+ { "LastDeliveredSequenceId", "openwire.removeinfo.lastdeliveredsequenceid", FT_INT64, BASE_DEC, NULL, 0x0, "Openwire RemoveInfo LastDeliveredSequenceId" , HFILL }},
+
+ { &hf_openwire_removesubscriptioninfo_connectionid,
+ { "ConnectionId", "openwire.removesubscriptioninfo.connectionid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire RemoveSubscriptionInfo ConnectionId", HFILL } },
+
+ { &hf_openwire_removesubscriptioninfo_subscriptionname,
+ { "SubscriptionName", "openwire.removesubscriptioninfo.subscriptionname", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire RemoveSubscriptionInfo SubscriptionName", HFILL }},
+
+ { &hf_openwire_removesubscriptioninfo_clientid,
+ { "ClientId", "openwire.removesubscriptioninfo.clientid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire RemoveSubscriptionInfo ClientId", HFILL }},
+
+ { &hf_openwire_producerinfo_producerid,
+ { "ProducerId", "openwire.producerinfo.producerid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire ProducerInfo ProducerId", HFILL }},
+
+ { &hf_openwire_producerinfo_destination,
+ { "Destination", "openwire.producerinfo.destination", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire ProducerInfo Destination", HFILL }},
+
+ { &hf_openwire_producerinfo_brokerpath,
+ { "BrokerPath", "openwire.producerinfo.brokerpath", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire ProducerInfo BrokerPath", HFILL }},
+
+ { &hf_openwire_producerinfo_dispatchasync,
+ { "DispatchAsync", "openwire.producerinfo.dispatchasync", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire ProducerInfo DispatchAsync", HFILL }},
+
+ { &hf_openwire_producerinfo_windowsize,
+ { "WindowSize", "openwire.producerinfo.windowsize", FT_INT32, BASE_DEC, NULL, 0x0, "Openwire ProducerInfo WindowSize", HFILL }},
+
+ { &hf_openwire_transactioninfo_connectionid,
+ { "ConnectionId", "openwire.transactioninfo.connectionid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire TransactionInfo ConnectionId", HFILL }},
+
+ { &hf_openwire_transactioninfo_transactionid,
+ { "TransactionId", "openwire.transactioninfo.transactionid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire TransactionInfo TransactionId", HFILL }},
+
+ { &hf_openwire_transactioninfo_type,
+ { "Type", "openwire.transactioninfo.type", FT_UINT8, BASE_DEC, VALS(openwire_transaction_type_vals), 0x0, "Openwire TransactionInfo Type", HFILL }},
+
+ { &hf_openwire_producerack_producerid,
+ { "ProducerId", "openwire.producerack.producerid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire ProducerAck ProducerId", HFILL }},
+
+ { &hf_openwire_producerack_size,
+ { "Size", "openwire.producerack.size", FT_INT32, BASE_DEC, NULL, 0x0, "Openwire ProducerAck Size", HFILL }},
+
+ { &hf_openwire_messagedispatch_consumerid,
+ { "ConsumerId", "openwire.messagedispatch.consumerid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire MessageDispatch ConsumerId", HFILL }},
+
+ { &hf_openwire_messagedispatch_destination,
+ { "Destination", "openwire.messagedispatch.destination", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire MessageDispatch Destination", HFILL }},
+
+ { &hf_openwire_messagedispatch_message,
+ { "Message", "openwire.messagedispatch.message", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire MessageDispatch Message", HFILL }},
+
+ { &hf_openwire_messagedispatch_redeliverycounter,
+ { "RedeliveryCounter", "openwire.messagedispatch.redeliverycounter", FT_INT32, BASE_DEC, NULL, 0x0, "Openwire MessageDispatch RedeliveryCounter", HFILL }},
+
+ { &hf_openwire_messageack_destination,
+ { "Destination", "openwire.messageack.destination", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire MessageAck Destination", HFILL }},
+
+ { &hf_openwire_messageack_transactionid,
+ { "TransactionId", "openwire.messageack.transactionid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire MessageAck TransactionId", HFILL }},
+
+ { &hf_openwire_messageack_consumerid,
+ { "ConsumerId", "openwire.messageack.consumerid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire MessageAck ConsumerId", HFILL }},
+
+ { &hf_openwire_messageack_acktype,
+ { "AckType", "openwire.messageack.acktype", FT_UINT8, BASE_DEC, VALS(openwire_message_ack_type_vals), 0x0, "Openwire MessageAck AckType", HFILL }},
+
+ { &hf_openwire_messageack_firstmessageid,
+ { "FirstMessageId", "openwire.messageack.firstmessageid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire MessageAck FirstMessageId", HFILL }},
+
+ { &hf_openwire_messageack_lastmessageid,
+ { "LastMessageId", "openwire.messageack.lastmessageid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire MessageAck LastMessageId", HFILL }},
+
+ { &hf_openwire_messageack_messagecount,
+ { "MessageCount", "openwire.messageack.messagecount", FT_INT32, BASE_DEC, NULL, 0x0, "Openwire MessageAck MessageCount", HFILL }},
+
+ { &hf_openwire_messagepull_consumerid,
+ { "ConsumerId", "openwire.messagepull.consumerid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire MessagePull ConsumerId", HFILL }},
+
+ { &hf_openwire_messagepull_destinationid,
+ { "DestinationId", "openwire.messagepull.destinationid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire MessagePull DestinationId", HFILL }},
+
+ { &hf_openwire_messagepull_timeout,
+ { "Timeout", "openwire.messagepull.timeout", FT_INT64, BASE_DEC, NULL, 0x0, "Openwire MessagePull Timeout", HFILL }},
+
+ { &hf_openwire_messagepull_correlationid,
+ { "CorrelationId", "openwire.messagepull.correlationid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire MessagePull CorrelationId", HFILL }},
+
+ { &hf_openwire_messagepull_messageid,
+ { "MessageId", "openwire.messagepull.messageid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire MessagePull MessageId", HFILL }},
+
+ { &hf_openwire_message_producerid,
+ { "ProducerId", "openwire.message.producerid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire message ProducerID", HFILL }},
+
+ { &hf_openwire_message_destination,
+ { "Destination", "openwire.message.destination", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire message Destination", HFILL }},
+
+ { &hf_openwire_message_transactionid,
+ { "TransactionId", "openwire.message.transactionid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire message TransactionId", HFILL }},
+
+ { &hf_openwire_message_originaldestination,
+ { "OriginalDestination", "openwire.message.originaldestination", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire message OriginalDestination", HFILL }},
+
+ { &hf_openwire_message_messageid,
+ { "MessageId", "openwire.message.messageid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire message MessageId", HFILL }},
+
+ { &hf_openwire_message_originaldestinationid,
+ { "OriginalDestinationId", "openwire.message.originaldestinationid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire message OriginalDestinationId", HFILL }},
+
+ { &hf_openwire_message_groupid,
+ { "GroupID", "openwire.message.groupid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire message GroupID", HFILL }},
+
+ { &hf_openwire_message_groupsequence,
+ { "GroupSequence", "openwire.message.groupsequence", FT_INT32, BASE_DEC, NULL, 0x0, "Openwire message GroupSequence", HFILL }},
+
+ { &hf_openwire_message_correlationid,
+ { "CorrelationId", "openwire.message.correlationid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire message CorrelationID", HFILL }},
+
+ { &hf_openwire_message_persistent,
+ { "Persistent", "openwire.message.persistent", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire message Persistent", HFILL }},
+
+ { &hf_openwire_message_expiration,
+ { "Expiration", "openwire.message.expiration", FT_INT64, BASE_DEC, NULL, 0x0, "Openwire message Expiration", HFILL }},
+
+ { &hf_openwire_message_priority,
+ { "Priority", "openwire.message.priority", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire message Priority", HFILL }},
+
+ { &hf_openwire_message_replyto,
+ { "ReplyTo", "openwire.message.replyto", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire message ReplyTo", HFILL }},
+
+ { &hf_openwire_message_timestamp,
+ { "Timestamp", "openwire.message.timestamp", FT_INT64, BASE_DEC, NULL, 0x0, "Openwire message Timestamp", HFILL }},
+
+ { &hf_openwire_message_type,
+ { "Type", "openwire.message.type", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire message Type", HFILL }},
+
+ { &hf_openwire_message_body,
+ { "Body", "openwire.message.body", FT_BYTES, BASE_NONE, NULL, 0x0, "Openwire message Body", HFILL }},
+
+ { &hf_openwire_message_properties,
+ { "Properties", "openwire.message.properties", FT_BYTES, BASE_NONE, NULL, 0x0, "Openwire message Properties", HFILL }},
+
+ { &hf_openwire_message_datastructure,
+ { "DataStructure", "openwire.message.datastructure", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire message DataStructure", HFILL }},
+
+ { &hf_openwire_message_targetconsumerid,
+ { "TargetConsumerId", "openwire.message.targetconsumerid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire message TargetConsumerId", HFILL }},
+
+ { &hf_openwire_message_compressed,
+ { "Compressed", "openwire.message.compressed", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire message Compressed", HFILL }},
+
+ { &hf_openwire_message_redeliverycount,
+ { "RedeliveryCount", "openwire.message.redeliverycount", FT_INT32, BASE_DEC, NULL, 0x0, "Openwire message RedeliveryCount", HFILL }},
+
+ { &hf_openwire_message_brokerpath,
+ { "BrokerPath", "openwire.message.brokerpath", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire message BrokerPath", HFILL }},
+
+ { &hf_openwire_message_arrival,
+ { "Arrival", "openwire.message.arrival", FT_INT64, BASE_DEC, NULL, 0x0, "Openwire message Arrival", HFILL }},
+
+ { &hf_openwire_message_userid,
+ { "UserID", "openwire.message.userid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire message UserID", HFILL }},
+
+ { &hf_openwire_message_receivedbydfbridge,
+ { "RecievedByDFBridge", "openwire.message.receivedbydfbridge", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire message ReceivedByDFBridge", HFILL }},
+
+ { &hf_openwire_message_droppable,
+ { "Droppable", "openwire.message.droppable", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire message Droppable", HFILL }},
+
+ { &hf_openwire_message_cluster,
+ { "Cluster", "openwire.message.cluster", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire message Cluster", HFILL }},
+
+ { &hf_openwire_message_brokerintime,
+ { "BrokerInTime", "openwire.message.brokerintime", FT_INT64, BASE_DEC, NULL, 0x0, "Openwire message BrokerInTime", HFILL }},
+
+ { &hf_openwire_message_brokerouttime,
+ { "BrokerOutTime", "openwire.message.brokerouttime", FT_INT64, BASE_DEC, NULL, 0x0, "Openwire message BrokerOutTime", HFILL }},
+
+ { &hf_openwire_producerid_connectionid,
+ { "ConnectionId", "openwire.producerid.connectionid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire ProducerId ConnectionId", HFILL }},
+
+ { &hf_openwire_producerid_value,
+ { "Value", "openwire.producerid.value", FT_INT64, BASE_DEC, NULL, 0x0, "Openwire ProducerId Value", HFILL }},
+
+ { &hf_openwire_producerid_sessionid,
+ { "SessionId", "openwire.producerid.sessionid", FT_INT64, BASE_DEC, NULL, 0x0, "Openwire ProducerId SessionId", HFILL }},
+
+ { &hf_openwire_consumerid_connectionid,
+ { "ConnectionId", "openwire.consumerid.connectionid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire ConsumerId ConnectionId", HFILL }},
+
+ { &hf_openwire_consumerid_value,
+ { "Value", "openwire.consumerid.value", FT_INT64, BASE_DEC, NULL, 0x0, "Openwire ConsumerId Value", HFILL }},
+
+ { &hf_openwire_consumerid_sessionid,
+ { "SessionId", "openwire.consumerid.sessionid", FT_INT64, BASE_DEC, NULL, 0x0, "Openwire ConsumerId SessionId", HFILL }},
+
+ { &hf_openwire_destination_name,
+ { "Name", "openwire.destination.name", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire Destination Name", HFILL }},
+
+ { &hf_openwire_messageid_producerid,
+ { "ProducerId", "openwire.messageid.producerid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire MessageId ProducerId", HFILL }},
+
+ { &hf_openwire_messageid_producersequenceid,
+ { "ProducerSequenceId", "openwire.messageid.producersequenceid", FT_INT64, BASE_DEC, NULL, 0x0, "Openwire MessageId ProducerSequenceId", HFILL }},
+
+ { &hf_openwire_messageid_brokersequenceid,
+ { "BrokerSequenceId", "openwire.messageid.brokersequenceid", FT_INT64, BASE_DEC, NULL, 0x0, "Openwire MessageId BrokerSequenceId", HFILL }},
+
+ { &hf_openwire_connectionid_value,
+ { "Value", "openwire.connectionid.value", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire ConnectionId Value", HFILL }},
+
+ { &hf_openwire_sessionid_connectionid,
+ { "Connection", "openwire.sessionid.connectionid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire SessionId ConnectionId", HFILL }},
+
+ { &hf_openwire_sessionid_value,
+ { "Value", "openwire.sessionid.value", FT_INT64, BASE_DEC, NULL, 0x0, "Openwire SessionId Value", HFILL }},
+
+ { &hf_openwire_brokerid_value,
+ { "Value", "openwire.brokerid.value", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire BrokerId Value", HFILL }},
+
+ { &hf_openwire_localtransactionid_value,
+ { "Value", "openwire.localtransactionid.value", FT_INT64, BASE_DEC, NULL, 0x0, "Openwire LocalTransactionId Value", HFILL }},
+
+ { &hf_openwire_localtransactionid_connectionid,
+ { "ConnectionId", "openwire.localtransactionid.connectionid", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire LocalTransactionId ConnecctionId", HFILL }},
+
+ { &hf_openwire_xatransactionid_formatid,
+ { "FormatId", "openwire.xatransactionid.formatid", FT_INT32, BASE_DEC, NULL, 0x0, "Openwire XATransactionId FormatId", HFILL }},
+
+ { &hf_openwire_xatransactionid_globaltransactionid,
+ { "GlobalTransactionId", "openwire.xatransactionid.globaltransactionid", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire XATransactionId GlobalTransactionId", HFILL }},
+
+ { &hf_openwire_xatransactionid_branchqualifier,
+ { "BranchQualifier", "openwire.xatransactionid.branchqualifier", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire XATransactionId BranchQualifier", HFILL }},
+
+ { &hf_openwire_none,
+ { "Generic field", "openwire.generic", FT_BYTES, BASE_NONE, NULL, 0x0, "Openwire integer type", HFILL }},
+
+ { &hf_openwire_map_length,
+ { "Length", "openwire.map.length", FT_INT32, BASE_DEC, NULL, 0x0, "Openwire map length", HFILL }},
+
+ { &hf_openwire_map_key,
+ { "Key", "openwire.map.key", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire map Key", HFILL }},
+
+ { &hf_openwire_map_entry,
+ { "Entry", "openwire.map.entry", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire map Entry", HFILL }},
+
+ { &hf_openwire_throwable_class,
+ { "Class", "openwire.throwable.class", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire Throwable Class", HFILL }},
+
+ { &hf_openwire_throwable_message,
+ { "Message", "openwire.throwable.message", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire Throwable Message", HFILL }},
+
+ { &hf_openwire_throwable_element,
+ { "Element", "openwire.throwable.element", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire Throwable Element", HFILL }},
+
+ { &hf_openwire_throwable_classname,
+ { "ClassName", "openwire.throwable.classname", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire Throwable ClassName", HFILL }},
+
+ { &hf_openwire_throwable_methodname,
+ { "MethodName", "openwire.throwable.methodname", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire Throwable MethodName", HFILL }},
+
+ { &hf_openwire_throwable_filename,
+ { "FileName", "openwire.throwable.filename", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire Throwable FileName", HFILL }},
+
+ { &hf_openwire_throwable_linenumber,
+ { "LineNumber", "openwire.throwable.filename", FT_UINT32, BASE_DEC, NULL, 0x0, "Openwire Throwable LineNumber", HFILL }},
+
+ { &hf_openwire_type_integer,
+ { "Integer", "openwire.type.integer", FT_INT32, BASE_DEC, NULL, 0x0, "Openwire Integer type", HFILL }},
+
+ { &hf_openwire_type_short,
+ { "Short", "openwire.type.short", FT_INT32, BASE_DEC, NULL, 0x0, "Openwire Short type", HFILL }},
+
+ { &hf_openwire_type_string,
+ { "String", "openwire.type.string", FT_STRINGZ, BASE_NONE, NULL, 0x0, "Openwire String type", HFILL }},
+
+ { &hf_openwire_type_bytes,
+ { "Bytes", "openwire.type.bytes", FT_BYTES, BASE_NONE, NULL, 0x0, "Openwire Bytes type", HFILL }},
+
+ { &hf_openwire_type_boolean,
+ { "Boolean", "openwire.type.boolean", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire Boolean type", HFILL }},
+
+ { &hf_openwire_type_byte,
+ { "Byte", "openwire.type.byte", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire Byte type", HFILL }},
+
+ { &hf_openwire_type_char,
+ { "Char", "openwire.type.char", FT_UINT16, BASE_DEC, NULL, 0x0, "Openwire Char type", HFILL }},
+
+ { &hf_openwire_type_long,
+ { "Long", "openwire.type.long", FT_INT64, BASE_DEC, NULL, 0x0, "Openwire Cong type", HFILL }},
+
+ { &hf_openwire_type_float,
+ { "Float", "openwire.type.float", FT_FLOAT, BASE_NONE, NULL, 0x0, "Openwire Float type", HFILL }},
+
+ { &hf_openwire_type_double,
+ { "Double", "openwire.type.double", FT_DOUBLE, BASE_NONE, NULL, 0x0, "Openwire Double type", HFILL }},
+
+ { &hf_openwire_type_notnull,
+ { "NotNull", "openwire.type.notnull", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire NotNull type", HFILL }},
+
+ { &hf_openwire_cached_inlined,
+ { "Inlined", "openwire.cached.inlined", FT_UINT8, BASE_DEC, NULL, 0x0, "Openwire Cached Inlined", HFILL }},
+
+ { &hf_openwire_cached_id,
+ { "CachedID", "openwire.cached.id", FT_UINT16, BASE_DEC, NULL, 0x0, "Openwire Cached ID", HFILL }},
+
+ { &hf_openwire_cached_enabled,
+ { "CachedEnabled", "openwire.cached.enabled", FT_BOOLEAN, BASE_NONE, NULL, 0x0, "Openwire Cached Enabled", HFILL }},
+
+ { &hf_openwire_type_object,
+ { "Object", "openwire.type.object", FT_NONE, BASE_NONE, NULL, 0x0, "Openwire object", HFILL }},
+
+ { &hf_openwire_type,
+ { "Type", "openwire.type", FT_UINT8, BASE_DEC, VALS(openwire_type_vals), 0x0, "Openwire type", HFILL }}
+
+ };
+ static gint *ett[] = {
+ &ett_openwire,
+ &ett_openwire_type
+ };
+
+ module_t *openwire_module;
+
+ proto_openwire = proto_register_protocol("OpenWire", "OpenWire", "openwire");
+ proto_register_field_array(proto_openwire, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ openwire_module = prefs_register_protocol(proto_openwire, NULL);
+ prefs_register_bool_preference(openwire_module, "desegment",
+ "Reassemble Openwire messages spanning multiple TCP segments",
+ "Whether the Openwire dissector should reassemble messages spanning multiple TCP segments."
+ " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
+ &openwire_desegment);
+ prefs_register_bool_preference(openwire_module, "verbose_type",
+ "Show verbose type information",
+ "Whether verbose type and length information are displayed in the protocol tree",
+ &openwire_verbose_type);
+ register_init_routine(&openwire_init);
+}
+
+void
+proto_reg_handoff_openwire(void)
+{
+ heur_dissector_add("tcp", dissect_openwire_heur, proto_openwire);
+ openwire_tcp_handle = create_dissector_handle(dissect_openwire_tcp, proto_openwire);
+ dissector_add_handle("tcp.port", openwire_tcp_handle);
+}
diff --git a/epan/dissectors/packet-opsi.c b/epan/dissectors/packet-opsi.c
index 9904200d22..cc13559392 100644
--- a/epan/dissectors/packet-opsi.c
+++ b/epan/dissectors/packet-opsi.c
@@ -27,8 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-osi-options.c b/epan/dissectors/packet-osi-options.c
index 79c6b06f7b..2449524de9 100644
--- a/epan/dissectors/packet-osi-options.c
+++ b/epan/dissectors/packet-osi-options.c
@@ -229,7 +229,7 @@ dissect_option_route( guchar parm_type, int offset, guchar parm_len,
netl = tvb_get_guint8(tvb, next_hop + 2 );
this_hop = offset + 2; /* points to first netl */
- ti = proto_tree_add_text( tree, tvb, offset + next_hop, netl,
+ proto_tree_add_text( tree, tvb, offset + next_hop, netl,
"Source Routing: %s ( Next Hop Highlighted In Data Buffer )",
(tvb_get_guint8(tvb, offset) == 0) ? "Partial Source Routing" :
"Complete Source Routing" );
diff --git a/epan/dissectors/packet-osi.c b/epan/dissectors/packet-osi.c
index a302d75038..5cb6739b86 100644
--- a/epan/dissectors/packet-osi.c
+++ b/epan/dissectors/packet-osi.c
@@ -29,10 +29,10 @@
# include "config.h"
#endif
-#include <ctype.h>
#include <glib.h>
-#include <epan/prefs.h>
+
#include <epan/packet.h>
+#include <epan/prefs.h>
#include <epan/llcsaps.h>
#include <epan/aftypes.h>
#include <epan/nlpid.h>
@@ -54,12 +54,12 @@ static guint global_tcp_port_osi_over_tpkt = 0;
cksum_status_t
calc_checksum( tvbuff_t *tvb, int offset, guint len, guint checksum) {
- const gchar *buffer;
- guint available_len;
+ const gchar *buffer;
+ guint available_len;
const guint8 *p;
- guint32 c0, c1;
- guint seglen;
- guint i;
+ guint32 c0, c1;
+ guint seglen;
+ guint i;
if ( 0 == checksum )
return( NO_CKSUM );
@@ -99,7 +99,7 @@ calc_checksum( tvbuff_t *tvb, int offset, guint len, guint checksum) {
len -= seglen;
}
if (c0 != 0 || c1 != 0)
- return( CKSUM_NOT_OK ); /* XXX - what should the checksum field be? */
+ return( CKSUM_NOT_OK ); /* XXX - what should the checksum field be? */
else
return( CKSUM_OK );
}
@@ -107,14 +107,14 @@ calc_checksum( tvbuff_t *tvb, int offset, guint len, guint checksum) {
cksum_status_t
check_and_get_checksum( tvbuff_t *tvb, int offset, guint len, guint checksum, int offset_check, guint16* result) {
- const gchar *buffer;
- guint available_len;
+ const gchar *buffer;
+ guint available_len;
const guint8 *p;
- guint8 discard = 0;
- guint32 c0, c1, factor;
- guint seglen, initlen = len;
- guint i;
- int block, x, y;
+ guint8 discard = 0;
+ guint32 c0, c1, factor;
+ guint seglen, initlen = len;
+ guint i;
+ int block, x, y;
if ( 0 == checksum )
return( NO_CKSUM );
@@ -191,7 +191,7 @@ check_and_get_checksum( tvbuff_t *tvb, int offset, guint len, guint checksum, in
*result = ( x << 8 ) | ( y & 0xFF );
if (*result != checksum)
- return( CKSUM_NOT_OK ); /* XXX - what should the checksum field be? */
+ return( CKSUM_NOT_OK ); /* XXX - what should the checksum field be? */
else
return( CKSUM_OK );
}
@@ -209,26 +209,26 @@ check_and_get_checksum( tvbuff_t *tvb, int offset, guint len, guint checksum, in
* means T.70 for an IPI and X.29 for an SPI.
*/
const value_string nlpid_vals[] = {
- { NLPID_NULL, "NULL" },
- { NLPID_SPI_X_29, "X.29" },
- { NLPID_X_633, "X.633" },
- { NLPID_Q_931, "Q.931" },
- { NLPID_Q_2931, "Q.2931" },
- { NLPID_Q_2119, "Q.2119" },
- { NLPID_SNAP, "SNAP" },
- { NLPID_ISO8473_CLNP, "CLNP" },
- { NLPID_ISO9542_ESIS, "ESIS" },
- { NLPID_ISO10589_ISIS, "ISIS" },
- { NLPID_ISO10747_IDRP, "IDRP" },
- { NLPID_ISO9542X25_ESIS, "ESIS (X.25)" },
- { NLPID_ISO10030, "ISO 10030" },
- { NLPID_ISO11577, "ISO 11577" },
- { NLPID_COMPRESSED, "Data compression protocol" },
- { NLPID_IP, "IP" },
- { NLPID_SNDCF, "SubNetwork Dependent Convergence Function"},
- { NLPID_IP6, "IPv6" },
- { NLPID_PPP, "PPP" },
- { 0, NULL },
+ { NLPID_NULL, "NULL" },
+ { NLPID_SPI_X_29, "X.29" },
+ { NLPID_X_633, "X.633" },
+ { NLPID_Q_931, "Q.931" },
+ { NLPID_Q_2931, "Q.2931" },
+ { NLPID_Q_2119, "Q.2119" },
+ { NLPID_SNAP, "SNAP" },
+ { NLPID_ISO8473_CLNP, "CLNP" },
+ { NLPID_ISO9542_ESIS, "ESIS" },
+ { NLPID_ISO10589_ISIS, "ISIS" },
+ { NLPID_ISO10747_IDRP, "IDRP" },
+ { NLPID_ISO9542X25_ESIS, "ESIS (X.25)" },
+ { NLPID_ISO10030, "ISO 10030" },
+ { NLPID_ISO11577, "ISO 11577" },
+ { NLPID_COMPRESSED, "Data compression protocol" },
+ { NLPID_IP, "IP" },
+ { NLPID_SNDCF, "SubNetwork Dependent Convergence Function"},
+ { NLPID_IP6, "IPv6" },
+ { NLPID_PPP, "PPP" },
+ { 0, NULL },
};
static dissector_table_t osinl_subdissector_table;
@@ -244,7 +244,7 @@ dissect_osi_tpkt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void dissect_osi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- guint8 nlpid;
+ guint8 nlpid;
tvbuff_t *new_tvb;
pinfo->current_proto = "OSI";
@@ -274,7 +274,7 @@ static void dissect_osi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
default:
col_set_str(pinfo->cinfo, COL_PROTOCOL, "ISO");
if (check_col(pinfo->cinfo, COL_INFO)) {
- col_add_fstr(pinfo->cinfo, COL_INFO, "Unknown ISO protocol (%02x)", nlpid);
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Unknown ISO protocol (%02x)", nlpid);
}
call_dissector(data_handle,tvb, pinfo, tree);
break;
@@ -284,9 +284,9 @@ static void dissect_osi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
void
proto_reg_handoff_osi(void)
{
- static gboolean osi_prefs_initialized = FALSE;
+ static gboolean osi_prefs_initialized = FALSE;
static dissector_handle_t osi_tpkt_handle;
- static guint tcp_port_osi_over_tpkt;
+ static guint tcp_port_osi_over_tpkt;
if (!osi_prefs_initialized) {
osi_handle = create_dissector_handle(dissect_osi, proto_osi);
@@ -299,10 +299,10 @@ proto_reg_handoff_osi(void)
dissector_add_uint("chdlctype", CHDLCTYPE_OSI, osi_handle);
dissector_add_uint("null.type", BSD_AF_ISO, osi_handle);
dissector_add_uint("gre.proto", SAP_OSINL5, osi_handle);
- dissector_add_uint("ip.proto", IP_PROTO_ISOIP, osi_handle); /* ISO-TP4 ISO Transport Protocol Class 4 [RFC905,RC77] */
+ dissector_add_uint("ip.proto", IP_PROTO_ISOIP, osi_handle); /* ISO-TP4 ISO Transport Protocol Class 4 [RFC905,RC77] */
data_handle = find_dissector("data");
ppp_handle = find_dissector("ppp");
-
+
osi_tpkt_handle = create_dissector_handle(dissect_osi_tpkt, proto_osi);
dissector_add_handle("tcp.port", osi_tpkt_handle); /* for 'decode-as' */
@@ -338,7 +338,7 @@ proto_register_osi(void)
* (typically non OSI protocols like IP,IPv6,PPP */
osinl_excl_subdissector_table = register_dissector_table("osinl.excl",
"OSI excl NLPID", FT_UINT8, BASE_HEX);
-
+
proto_osi = proto_register_protocol("OSI", "OSI", "osi");
/* Preferences how OSI protocols should be dissected */
osi_module = prefs_register_protocol(proto_osi, proto_reg_handoff_osi);
diff --git a/epan/dissectors/packet-ospf.c b/epan/dissectors/packet-ospf.c
index fe70639210..aeb7aed275 100644
--- a/epan/dissectors/packet-ospf.c
+++ b/epan/dissectors/packet-ospf.c
@@ -1088,7 +1088,7 @@ dissect_ospf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (ospf_msg_type_to_filter(packet_type) != -1) {
hidden_item = proto_tree_add_item(ospf_header_tree,
hf_ospf_filter[ospf_msg_type_to_filter(packet_type)],
- tvb, 1, 1, FALSE);
+ tvb, 1, 1, ENC_BIG_ENDIAN);
PROTO_ITEM_SET_HIDDEN(hidden_item);
}
proto_tree_add_text(ospf_header_tree, tvb, 2, 2, "Packet Length: %u",
@@ -2550,7 +2550,7 @@ dissect_ospf_v2_lsa(tvbuff_t *tvb, int offset, proto_tree *tree,
if (ospf_ls_type_to_filter(ls_type) != -1) {
hidden_item = proto_tree_add_item(ospf_lsa_tree,
hf_ospf_filter[ospf_ls_type_to_filter(ls_type)], tvb,
- offset + 3, 1, FALSE);
+ offset + 3, 1, ENC_BIG_ENDIAN);
PROTO_ITEM_SET_HIDDEN(hidden_item);
}
@@ -3363,7 +3363,7 @@ proto_register_ospf(void)
BASE_HEX, NULL, 0x0, NULL, HFILL }},
{&hf_ospf_filter[OSPFF_LS_MPLS_BC_MODEL_ID],
{ "MPLS/DSTE Bandwidth Constraints Model Id", "ospf.mpls.bc", FT_UINT8,
- BASE_RANGE_STRING | BASE_DEC, RVALS(&mpls_link_stlv_bcmodel_rvals), 0x0,
+ BASE_RANGE_STRING | BASE_DEC, RVALS(mpls_link_stlv_bcmodel_rvals), 0x0,
NULL, HFILL }},
{&hf_ospf_filter[OSPFF_LS_OIF_LOCAL_NODE_ID],
diff --git a/epan/dissectors/packet-p1.c b/epan/dissectors/packet-p1.c
index a79208b643..61b3d19eed 100644
--- a/epan/dissectors/packet-p1.c
+++ b/epan/dissectors/packet-p1.c
@@ -10699,7 +10699,7 @@ void proto_register_p1(void) {
NULL, HFILL }},
/*--- End of included file: packet-p1-hfarr.c ---*/
-#line 259 "../../asn1/p1/packet-p1-template.c"
+#line 258 "../../asn1/p1/packet-p1-template.c"
};
/* List of subtrees */
@@ -10898,7 +10898,7 @@ void proto_register_p1(void) {
&ett_p1_SEQUENCE_SIZE_1_ub_recipients_OF_PerRecipientProbeSubmissionFields,
/*--- End of included file: packet-p1-ettarr.c ---*/
-#line 272 "../../asn1/p1/packet-p1-template.c"
+#line 271 "../../asn1/p1/packet-p1-template.c"
};
module_t *p1_module;
@@ -11091,7 +11091,7 @@ void proto_reg_handoff_p1(void) {
/*--- End of included file: packet-p1-dis-tab.c ---*/
-#line 308 "../../asn1/p1/packet-p1-template.c"
+#line 307 "../../asn1/p1/packet-p1-template.c"
/* APPLICATION CONTEXT */
diff --git a/epan/dissectors/packet-packetbb.c b/epan/dissectors/packet-packetbb.c
index 8f6b014dac..a262ed2676 100644
--- a/epan/dissectors/packet-packetbb.c
+++ b/epan/dissectors/packet-packetbb.c
@@ -80,7 +80,10 @@ static int hf_packetbb_msgheader_flags_mhashopcount = -1;
static int hf_packetbb_msgheader_flags_mhasseqnr = -1;
static int hf_packetbb_msgheader_addresssize = -1;
static int hf_packetbb_msgheader_size = -1;
-static int hf_packetbb_msgheader_origaddr[4] = { -1, -1, -1, -1 };
+static int hf_packetbb_msgheader_origaddripv4 = -1;
+static int hf_packetbb_msgheader_origaddripv6 = -1;
+static int hf_packetbb_msgheader_origaddrmac = -1;
+static int hf_packetbb_msgheader_origaddrcustom = -1;
static int hf_packetbb_msgheader_hoplimit = -1;
static int hf_packetbb_msgheader_hopcount = -1;
static int hf_packetbb_msgheader_seqnr = -1;
@@ -597,8 +600,28 @@ static int dissect_pbb_message(tvbuff_t *tvb, proto_tree *tree, guint offset) {
/* originator address */
if ((messageFlags & MSG_HEADER_HASORIG) != 0) {
- proto_tree_add_item(header_tree, hf_packetbb_msgheader_origaddr[addressType],
- tvb, offset, addressSize, FALSE);
+ switch (addressSize) {
+ case 4:
+ /* IPv4 */
+ proto_tree_add_item(header_tree, hf_packetbb_msgheader_origaddripv4,
+ tvb, offset, addressSize, ENC_BIG_ENDIAN);
+ break;
+ case 16:
+ /* IPv6 */
+ proto_tree_add_item(header_tree, hf_packetbb_msgheader_origaddripv6,
+ tvb, offset, addressSize, ENC_NA);
+ break;
+ case 6:
+ /* MAC */
+ proto_tree_add_item(header_tree, hf_packetbb_msgheader_origaddrmac,
+ tvb, offset, addressSize, ENC_NA);
+ break;
+ default:
+ /* Unknown */
+ proto_tree_add_item(header_tree, hf_packetbb_msgheader_origaddrcustom,
+ tvb, offset, addressSize, ENC_NA);
+ break;
+ }
offset += addressSize;
}
@@ -816,24 +839,24 @@ void proto_register_packetbb(void) {
FT_UINT8, BASE_DEC, NULL, 0,
NULL, HFILL }
},
- { &hf_packetbb_msgheader_origaddr[0],
+ { &hf_packetbb_msgheader_origaddripv4,
{ "Originator address", "packetbb.msg.origaddr4",
FT_IPv4, BASE_NONE, NULL, 0,
NULL, HFILL }
},
- { &hf_packetbb_msgheader_origaddr[1],
+ { &hf_packetbb_msgheader_origaddripv6,
{ "Originator address", "packetbb.msg.origaddr6",
FT_IPv6, BASE_NONE, NULL, 0,
NULL, HFILL }
},
- { &hf_packetbb_msgheader_origaddr[2],
+ { &hf_packetbb_msgheader_origaddrmac,
{ "Originator address", "packetbb.msg.origaddrmac",
FT_ETHER, BASE_NONE, NULL, 0,
NULL, HFILL }
},
- { &hf_packetbb_msgheader_origaddr[3],
+ { &hf_packetbb_msgheader_origaddrcustom,
{ "Originator address", "packetbb.msg.origaddrcustom",
- FT_UINT_BYTES, BASE_NONE, NULL, 0,
+ FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }
},
{ &hf_packetbb_msgheader_hoplimit,
diff --git a/epan/dissectors/packet-parlay.c b/epan/dissectors/packet-parlay.c
new file mode 100644
index 0000000000..6f02e4020b
--- /dev/null
+++ b/epan/dissectors/packet-parlay.c
@@ -0,0 +1,105135 @@
+/* packet-parlay.c
+ *
+ * $Id$
+ *
+ * Routines for IDL dissection
+ *
+ * Autogenerated from idl2wrs
+ * Copyright 2001 Frank Singleton <frank.singleton@ericsson.com>
+ */
+
+
+/*
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs
+ * Copyright 1999 - 2006 Gerald Combs
+ */
+
+static int hf_operationrequest = -1;/* Request_Operation field */
+
+
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <gmodule.h>
+
+#include <string.h>
+#include <glib.h>
+#include <epan/packet.h>
+#include <epan/proto.h>
+#include <epan/dissectors/packet-giop.h>
+
+#ifdef _MSC_VER
+/* disable warning: "unreference local variable" */
+#pragma warning(disable:4101)
+#endif
+
+
+static proto_tree *start_dissecting(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ptree, int *offset);
+
+
+
+/* Struct prototype declaration Start */
+
+
+/* Struct = IDL:org/csapi/TpAddress:1.0 */
+
+static void decode_org_csapi_TpAddress_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/TpAddressRange:1.0 */
+
+static void decode_org_csapi_TpAddressRange_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/TpCAIElements:1.0 */
+
+static void decode_org_csapi_TpCAIElements_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/TpChargeAdviceInfo:1.0 */
+
+static void decode_org_csapi_TpChargeAdviceInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/TpChargePerTime:1.0 */
+
+static void decode_org_csapi_TpChargePerTime_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/TpAoCInfo:1.0 */
+
+static void decode_org_csapi_TpAoCInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/TpTimeInterval:1.0 */
+
+static void decode_org_csapi_TpTimeInterval_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/TpStructuredAttributeValue:1.0 */
+
+static void decode_org_csapi_TpStructuredAttributeValue_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/TpAttribute:1.0 */
+
+static void decode_org_csapi_TpAttribute_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpFaultStats:1.0 */
+
+static void decode_org_csapi_fw_TpFaultStats_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpFaultStatsRecord:1.0 */
+
+static void decode_org_csapi_fw_TpFaultStatsRecord_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpLoadPolicy:1.0 */
+
+static void decode_org_csapi_fw_TpLoadPolicy_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpLoadStatisticData:1.0 */
+
+static void decode_org_csapi_fw_TpLoadStatisticData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpLoadThreshold:1.0 */
+
+static void decode_org_csapi_fw_TpLoadThreshold_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpLoadInitVal:1.0 */
+
+static void decode_org_csapi_fw_TpLoadInitVal_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpProperty:1.0 */
+
+static void decode_org_csapi_fw_TpProperty_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpClientAppDescription:1.0 */
+
+static void decode_org_csapi_fw_TpClientAppDescription_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpEntOp:1.0 */
+
+static void decode_org_csapi_fw_TpEntOp_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpSag:1.0 */
+
+static void decode_org_csapi_fw_TpSag_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpServiceProperty:1.0 */
+
+static void decode_org_csapi_fw_TpServiceProperty_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpServiceDescription:1.0 */
+
+static void decode_org_csapi_fw_TpServiceDescription_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpService:1.0 */
+
+static void decode_org_csapi_fw_TpService_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpServiceProfileDescription:1.0 */
+
+static void decode_org_csapi_fw_TpServiceProfileDescription_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpServiceTypeProperty:1.0 */
+
+static void decode_org_csapi_fw_TpServiceTypeProperty_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpServiceTypeDescription:1.0 */
+
+static void decode_org_csapi_fw_TpServiceTypeDescription_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpSignatureAndServiceMgr:1.0 */
+
+static void decode_org_csapi_fw_TpSignatureAndServiceMgr_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpPerson:1.0 */
+
+static void decode_org_csapi_fw_TpPerson_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpServiceContractDescription:1.0 */
+
+static void decode_org_csapi_fw_TpServiceContractDescription_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpLoadStatistic:1.0 */
+
+static void decode_org_csapi_fw_TpLoadStatistic_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpServiceContract:1.0 */
+
+static void decode_org_csapi_fw_TpServiceContract_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpServiceProfile:1.0 */
+
+static void decode_org_csapi_fw_TpServiceProfile_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpAuthDomain:1.0 */
+
+static void decode_org_csapi_fw_TpAuthDomain_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpSagProfilePair:1.0 */
+
+static void decode_org_csapi_fw_TpSagProfilePair_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpAddSagMembersConflict:1.0 */
+
+static void decode_org_csapi_fw_TpAddSagMembersConflict_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpAssignSagToServiceProfileConflict:1.0 */
+
+static void decode_org_csapi_fw_TpAssignSagToServiceProfileConflict_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpServiceTypePropertyValue:1.0 */
+
+static void decode_org_csapi_fw_TpServiceTypePropertyValue_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpFwMigrationServiceAvailableInfo:1.0 */
+
+static void decode_org_csapi_fw_TpFwMigrationServiceAvailableInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/fw/TpFwAgreementInfo:1.0 */
+
+static void decode_org_csapi_fw_TpFwAgreementInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/ui/TpUIMessageCriteria:1.0 */
+
+static void decode_org_csapi_ui_TpUIMessageCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/ui/TpUIEventInfo:1.0 */
+
+static void decode_org_csapi_ui_TpUIEventInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/ui/TpUIEventCriteria:1.0 */
+
+static void decode_org_csapi_ui_TpUIEventCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/ui/TpUIEventCriteriaResult:1.0 */
+
+static void decode_org_csapi_ui_TpUIEventCriteriaResult_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/ui/TpUIEventNotificationInfo:1.0 */
+
+static void decode_org_csapi_ui_TpUIEventNotificationInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/ui/TpUIRecognitionProperty:1.0 */
+
+static void decode_org_csapi_ui_TpUIRecognitionProperty_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/ui/TpUIRecognitionCriteria:1.0 */
+
+static void decode_org_csapi_ui_TpUIRecognitionCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/ui/TpUICollectCriteria:1.0 */
+
+static void decode_org_csapi_ui_TpUICollectCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/ui/TpUIWordOverride:1.0 */
+
+static void decode_org_csapi_ui_TpUIWordOverride_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/ui/TpUISynthesisInfoData:1.0 */
+
+static void decode_org_csapi_ui_TpUISynthesisInfoData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/TpCallError:1.0 */
+
+static void decode_org_csapi_cc_TpCallError_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/TpCallEndedReport:1.0 */
+
+static void decode_org_csapi_cc_TpCallEndedReport_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/TpCallInfoReport:1.0 */
+
+static void decode_org_csapi_cc_TpCallInfoReport_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/TpCallServiceCode:1.0 */
+
+static void decode_org_csapi_cc_TpCallServiceCode_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/TpCallTreatment:1.0 */
+
+static void decode_org_csapi_cc_TpCallTreatment_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/TpCallChargePlan:1.0 */
+
+static void decode_org_csapi_cc_TpCallChargePlan_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/gccs/TpCallEventCriteria:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallEventCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/gccs/TpCallEventCriteriaResult:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallEventCriteriaResult_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/gccs/TpCallReleaseCause:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallReleaseCause_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/gccs/TpCallReport:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallReport_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/gccs/TpCallReportRequest:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallReportRequest_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/gccs/TpCallEventInfo:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallEventInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/gccs/TpCallEndedReport:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallEndedReport_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/gccs/TpCallInfoReport:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallInfoReport_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/gccs/TpCallTreatment:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallTreatment_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/gccs/TpCallIdentifier:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/TpCallNotificationScope:1.0 */
+
+static void decode_org_csapi_cc_TpCallNotificationScope_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/TpCallNotificationReportScope:1.0 */
+
+static void decode_org_csapi_cc_TpCallNotificationReportScope_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/TpCallEventRequest:1.0 */
+
+static void decode_org_csapi_cc_TpCallEventRequest_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/TpCallNotificationRequest:1.0 */
+
+static void decode_org_csapi_cc_TpCallNotificationRequest_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/TpNotificationRequested:1.0 */
+
+static void decode_org_csapi_cc_TpNotificationRequested_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/TpCallLegConnectionProperties:1.0 */
+
+static void decode_org_csapi_cc_TpCallLegConnectionProperties_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/TpCallEventInfo:1.0 */
+
+static void decode_org_csapi_cc_TpCallEventInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/TpNotificationRequestedSetEntry:1.0 */
+
+static void decode_org_csapi_cc_TpNotificationRequestedSetEntry_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/TpCarrier:1.0 */
+
+static void decode_org_csapi_cc_TpCarrier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/TpCallNotificationInfo:1.0 */
+
+static void decode_org_csapi_cc_TpCallNotificationInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/TpCallLegInfoReport:1.0 */
+
+static void decode_org_csapi_cc_TpCallLegInfoReport_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/TpCallLegProperty:1.0 */
+
+static void decode_org_csapi_cc_TpCallLegProperty_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/mpccs/TpMultiPartyCallIdentifier:1.0 */
+
+static void decode_org_csapi_cc_mpccs_TpMultiPartyCallIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/mpccs/TpCallLegIdentifier:1.0 */
+
+static void decode_org_csapi_cc_mpccs_TpCallLegIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/mpccs/TpAppCallLegCallBack:1.0 */
+
+static void decode_org_csapi_cc_mpccs_TpAppCallLegCallBack_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/mmccs/TpCallSuperviseVolume:1.0 */
+
+static void decode_org_csapi_cc_mmccs_TpCallSuperviseVolume_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/mmccs/TpMediaStreamRequest:1.0 */
+
+static void decode_org_csapi_cc_mmccs_TpMediaStreamRequest_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/mmccs/TpMediaStream:1.0 */
+
+static void decode_org_csapi_cc_mmccs_TpMediaStream_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/mmccs/TpNotificationMediaRequest:1.0 */
+
+static void decode_org_csapi_cc_mmccs_TpNotificationMediaRequest_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/mmccs/TpMediaNotificationRequested:1.0 */
+
+static void decode_org_csapi_cc_mmccs_TpMediaNotificationRequested_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/mmccs/TpMultiMediaCallIdentifier:1.0 */
+
+static void decode_org_csapi_cc_mmccs_TpMultiMediaCallIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/mmccs/TpMultiMediaCallLegIdentifier:1.0 */
+
+static void decode_org_csapi_cc_mmccs_TpMultiMediaCallLegIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/mmccs/TpAppMultiMediaCallLegCallBack:1.0 */
+
+static void decode_org_csapi_cc_mmccs_TpAppMultiMediaCallLegCallBack_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/cccs/TpMonoMediaConfPolicy:1.0 */
+
+static void decode_org_csapi_cc_cccs_TpMonoMediaConfPolicy_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/cccs/TpJoinEventInfo:1.0 */
+
+static void decode_org_csapi_cc_cccs_TpJoinEventInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/cccs/TpConfSearchCriteria:1.0 */
+
+static void decode_org_csapi_cc_cccs_TpConfSearchCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/cccs/TpConfSearchResult:1.0 */
+
+static void decode_org_csapi_cc_cccs_TpConfSearchResult_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/cccs/TpMultiMediaConfPolicy:1.0 */
+
+static void decode_org_csapi_cc_cccs_TpMultiMediaConfPolicy_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/cccs/TpResourceReservation:1.0 */
+
+static void decode_org_csapi_cc_cccs_TpResourceReservation_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/cccs/TpConfCallIdentifier:1.0 */
+
+static void decode_org_csapi_cc_cccs_TpConfCallIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cc/cccs/TpSubConfCallIdentifier:1.0 */
+
+static void decode_org_csapi_cc_cccs_TpSubConfCallIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/ui/TpUIIdentifier:1.0 */
+
+static void decode_org_csapi_ui_TpUIIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/ui/TpUICallIdentifier:1.0 */
+
+static void decode_org_csapi_ui_TpUICallIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mm/TpLocationResponseTime:1.0 */
+
+static void decode_org_csapi_mm_TpLocationResponseTime_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mm/TpLocationTrigger:1.0 */
+
+static void decode_org_csapi_mm_TpLocationTrigger_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mm/TpLocationRequest:1.0 */
+
+static void decode_org_csapi_mm_TpLocationRequest_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mm/TpGeographicalPosition:1.0 */
+
+static void decode_org_csapi_mm_TpGeographicalPosition_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mm/TpMobilityStopAssignmentData:1.0 */
+
+static void decode_org_csapi_mm_TpMobilityStopAssignmentData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mm/TpUlExtendedData:1.0 */
+
+static void decode_org_csapi_mm_TpUlExtendedData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mm/TpUserLocation:1.0 */
+
+static void decode_org_csapi_mm_TpUserLocation_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mm/TpUserLocationExtended:1.0 */
+
+static void decode_org_csapi_mm_TpUserLocationExtended_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mm/TpLocationTriggerCamel:1.0 */
+
+static void decode_org_csapi_mm_TpLocationTriggerCamel_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mm/TpUserLocationCamel:1.0 */
+
+static void decode_org_csapi_mm_TpUserLocationCamel_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mm/TpUserLocationEmergencyRequest:1.0 */
+
+static void decode_org_csapi_mm_TpUserLocationEmergencyRequest_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mm/TpUserLocationEmergency:1.0 */
+
+static void decode_org_csapi_mm_TpUserLocationEmergency_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mm/TpUserStatus:1.0 */
+
+static void decode_org_csapi_mm_TpUserStatus_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mm/TpTriggeredStatusRequest:1.0 */
+
+static void decode_org_csapi_mm_TpTriggeredStatusRequest_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mm/TpTriggeredStatusRequestSetEntry:1.0 */
+
+static void decode_org_csapi_mm_TpTriggeredStatusRequestSetEntry_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mm/TpPeriodicLocationRequest:1.0 */
+
+static void decode_org_csapi_mm_TpPeriodicLocationRequest_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mm/TpPeriodicLocationRequestSetEntry:1.0 */
+
+static void decode_org_csapi_mm_TpPeriodicLocationRequestSetEntry_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mm/TpTriggeredLocationRequest:1.0 */
+
+static void decode_org_csapi_mm_TpTriggeredLocationRequest_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mm/TpTriggeredLocationRequestSetEntry:1.0 */
+
+static void decode_org_csapi_mm_TpTriggeredLocationRequestSetEntry_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mm/TpUserStatusIndicatorExtended:1.0 */
+
+static void decode_org_csapi_mm_TpUserStatusIndicatorExtended_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mm/TpUserInfo:1.0 */
+
+static void decode_org_csapi_mm_TpUserInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mm/TpNetworkStatusIndicator:1.0 */
+
+static void decode_org_csapi_mm_TpNetworkStatusIndicator_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mm/TpUserStatusExtended:1.0 */
+
+static void decode_org_csapi_mm_TpUserStatusExtended_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mm/TpBindingNotificationCriteria:1.0 */
+
+static void decode_org_csapi_mm_TpBindingNotificationCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/termcap/TpTerminalCapabilities:1.0 */
+
+static void decode_org_csapi_termcap_TpTerminalCapabilities_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/termcap/TpTerminalCapabilityScope:1.0 */
+
+static void decode_org_csapi_termcap_TpTerminalCapabilityScope_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/dsc/TpChargePerVolume:1.0 */
+
+static void decode_org_csapi_dsc_TpChargePerVolume_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/dsc/TpDataSessionChargePlan:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionChargePlan_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/dsc/TpDataSessionError:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionError_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/dsc/TpDataSessionEventCriteria:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionEventCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/dsc/TpDataSessionEventInfo:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionEventInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/dsc/TpDataSessionReleaseCause:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionReleaseCause_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/dsc/TpDataSessionReport:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionReport_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/dsc/TpDataSessionReportRequest:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionReportRequest_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/dsc/TpDataSessionSuperviseVolume:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionSuperviseVolume_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/dsc/TpDataSessionEventCriteriaResult:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionEventCriteriaResult_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/dsc/TpDataSessionIdentifier:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/gms/TpGMSNewMessageArrivedInfo:1.0 */
+
+static void decode_org_csapi_gms_TpGMSNewMessageArrivedInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/gms/TpGMSNewMessageArrivedCriteria:1.0 */
+
+static void decode_org_csapi_gms_TpGMSNewMessageArrivedCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/gms/TpMailboxIdentifier:1.0 */
+
+static void decode_org_csapi_gms_TpMailboxIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/gms/TpMailboxFolderIdentifier:1.0 */
+
+static void decode_org_csapi_gms_TpMailboxFolderIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cm/TpNameDescrpTagTimePeriod:1.0 */
+
+static void decode_org_csapi_cm_TpNameDescrpTagTimePeriod_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cm/TpNameDescrpTagTimeOfDay:1.0 */
+
+static void decode_org_csapi_cm_TpNameDescrpTagTimeOfDay_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cm/TpNameDescrpTagString:1.0 */
+
+static void decode_org_csapi_cm_TpNameDescrpTagString_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cm/TpNameDescrpTagMonth:1.0 */
+
+static void decode_org_csapi_cm_TpNameDescrpTagMonth_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cm/TpNameDescrpTagInt:1.0 */
+
+static void decode_org_csapi_cm_TpNameDescrpTagInt_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cm/TpNameDescrpTagDir:1.0 */
+
+static void decode_org_csapi_cm_TpNameDescrpTagDir_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cm/TpNameDescrpTagDayOfWeek:1.0 */
+
+static void decode_org_csapi_cm_TpNameDescrpTagDayOfWeek_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cm/TpNameDescrpTagDateTime:1.0 */
+
+static void decode_org_csapi_cm_TpNameDescrpTagDateTime_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cm/TpLossDescriptor:1.0 */
+
+static void decode_org_csapi_cm_TpLossDescriptor_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cm/TpLoadDescriptor:1.0 */
+
+static void decode_org_csapi_cm_TpLoadDescriptor_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cm/TpJitterDescriptor:1.0 */
+
+static void decode_org_csapi_cm_TpJitterDescriptor_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cm/TpEndpoint:1.0 */
+
+static void decode_org_csapi_cm_TpEndpoint_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cm/TpDelayDescriptor:1.0 */
+
+static void decode_org_csapi_cm_TpDelayDescriptor_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cm/TpNameDescrpTagExcessLoadAction:1.0 */
+
+static void decode_org_csapi_cm_TpNameDescrpTagExcessLoadAction_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cm/TpValidityInfo:1.0 */
+
+static void decode_org_csapi_cm_TpValidityInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cm/TpProvisionedQoSInfo:1.0 */
+
+static void decode_org_csapi_cm_TpProvisionedQoSInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cm/TpPipeQoSInfo:1.0 */
+
+static void decode_org_csapi_cm_TpPipeQoSInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cm/TpDsCodepoint:1.0 */
+
+static void decode_org_csapi_cm_TpDsCodepoint_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cm/TpIPSubnet:1.0 */
+
+static void decode_org_csapi_cm_TpIPSubnet_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/am/TpBalanceInfo:1.0 */
+
+static void decode_org_csapi_am_TpBalanceInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/am/TpChargingEventInfo:1.0 */
+
+static void decode_org_csapi_am_TpChargingEventInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/am/TpBalance:1.0 */
+
+static void decode_org_csapi_am_TpBalance_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/am/TpTransactionHistory:1.0 */
+
+static void decode_org_csapi_am_TpTransactionHistory_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/am/TpChargingEventCriteria:1.0 */
+
+static void decode_org_csapi_am_TpChargingEventCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/am/TpChargingEventCriteriaResult:1.0 */
+
+static void decode_org_csapi_am_TpChargingEventCriteriaResult_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/am/TpBalanceExpiryDate:1.0 */
+
+static void decode_org_csapi_am_TpBalanceExpiryDate_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/am/TpVoucher:1.0 */
+
+static void decode_org_csapi_am_TpVoucher_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cs/TpMerchantAccountID:1.0 */
+
+static void decode_org_csapi_cs_TpMerchantAccountID_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cs/TpCorrelationID:1.0 */
+
+static void decode_org_csapi_cs_TpCorrelationID_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cs/TpAmount:1.0 */
+
+static void decode_org_csapi_cs_TpAmount_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cs/TpChargingPrice:1.0 */
+
+static void decode_org_csapi_cs_TpChargingPrice_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cs/TpVolume:1.0 */
+
+static void decode_org_csapi_cs_TpVolume_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cs/TpChargingSessionID:1.0 */
+
+static void decode_org_csapi_cs_TpChargingSessionID_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cs/TpPriceVolume:1.0 */
+
+static void decode_org_csapi_cs_TpPriceVolume_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cs/TpApplicationDescription:1.0 */
+
+static void decode_org_csapi_cs_TpApplicationDescription_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/cs/TpChargingParameter:1.0 */
+
+static void decode_org_csapi_cs_TpChargingParameter_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/policy/TpPolicyEvent:1.0 */
+
+static void decode_org_csapi_policy_TpPolicyEvent_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/policy/TpPolicyNameValue:1.0 */
+
+static void decode_org_csapi_policy_TpPolicyNameValue_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/policy/TpPolicyType/TpPolicyRecordType:1.0 */
+
+static void decode_org_csapi_policy_TpPolicyType_TpPolicyRecordType_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/policy/TpPolicyType/TpPolicyListType:1.0 */
+
+static void decode_org_csapi_policy_TpPolicyType_TpPolicyListType_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/policy/TpPolicyVar:1.0 */
+
+static void decode_org_csapi_policy_TpPolicyVar_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/policy/TpPolicyConditionListElement:1.0 */
+
+static void decode_org_csapi_policy_TpPolicyConditionListElement_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/policy/TpPolicyActionListElement:1.0 */
+
+static void decode_org_csapi_policy_TpPolicyActionListElement_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMAttributeDef:1.0 */
+
+static void decode_org_csapi_pam_TpPAMAttributeDef_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMAttribute:1.0 */
+
+static void decode_org_csapi_pam_TpPAMAttribute_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMPresenceData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMPresenceData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMAvailabilityProfile:1.0 */
+
+static void decode_org_csapi_pam_TpPAMAvailabilityProfile_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMCommunicationContext:1.0 */
+
+static void decode_org_csapi_pam_TpPAMCommunicationContext_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMContext:1.0 */
+
+static void decode_org_csapi_pam_TpPAMContext_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMAccessControlData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMAccessControlData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMICEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMICEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMICNotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMICNotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMIDEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMIDEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMIDNotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMIDNotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMGMCEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMGMCEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMGMCNotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMGMCNotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMACEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMACEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMACNotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMACNotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMADEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMADEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMADNotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMADNotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMAAEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMAAEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMAANotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMAANotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMAUEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMAUEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMAUNotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMAUNotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMCCEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMCCEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMCCNotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMCCNotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMACPSEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMACPSEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMACPSNotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMACPSNotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMAPSEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMAPSEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMAPSNotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMAPSNotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMIPSEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMIPSEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMIPSNotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMIPSNotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMAVCEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMAVCEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMAVCNotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMAVCNotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMWCEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMWCEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMWCNotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMWCNotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/pam/TpPAMErrorInfo:1.0 */
+
+static void decode_org_csapi_pam_TpPAMErrorInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mmm/TpMailboxIdentifier:1.0 */
+
+static void decode_org_csapi_mmm_TpMailboxIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mmm/TpMultiMediaMessagingIdentifier:1.0 */
+
+static void decode_org_csapi_mmm_TpMultiMediaMessagingIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mmm/TpListMessagesCriteria:1.0 */
+
+static void decode_org_csapi_mmm_TpListMessagesCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mmm/TpMailboxFolderStatusInformation:1.0 */
+
+static void decode_org_csapi_mmm_TpMailboxFolderStatusInformation_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mmm/TpMessageDescription:1.0 */
+
+static void decode_org_csapi_mmm_TpMessageDescription_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mmm/TpBodyPartDescription:1.0 */
+
+static void decode_org_csapi_mmm_TpBodyPartDescription_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mmm/TpBodyPart:1.0 */
+
+static void decode_org_csapi_mmm_TpBodyPart_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mmm/TpGenericHeaderField:1.0 */
+
+static void decode_org_csapi_mmm_TpGenericHeaderField_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mmm/TpMessageInfoPropertyError:1.0 */
+
+static void decode_org_csapi_mmm_TpMessageInfoPropertyError_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mmm/TpNewMailboxMessageArrivedCriteria:1.0 */
+
+static void decode_org_csapi_mmm_TpNewMailboxMessageArrivedCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mmm/TpNewMailboxMessageArrivedInfo:1.0 */
+
+static void decode_org_csapi_mmm_TpNewMailboxMessageArrivedInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mmm/TpQueryStatusReport:1.0 */
+
+static void decode_org_csapi_mmm_TpQueryStatusReport_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mmm/TpTerminatingAddressList:1.0 */
+
+static void decode_org_csapi_mmm_TpTerminatingAddressList_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mmm/TpNewMessageArrivedCriteria:1.0 */
+
+static void decode_org_csapi_mmm_TpNewMessageArrivedCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mmm/TpMessagingNotificationRequested:1.0 */
+
+static void decode_org_csapi_mmm_TpMessagingNotificationRequested_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mmm/TpMessagingNotificationRequestedSetEntry:1.0 */
+
+static void decode_org_csapi_mmm_TpMessagingNotificationRequestedSetEntry_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:org/csapi/mmm/TpNewMessageArrivedInfo:1.0 */
+
+static void decode_org_csapi_mmm_TpNewMessageArrivedInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct prototype declaration End */
+
+
+/* Union prototype declaration Start */
+
+
+
+/* Union = IDL:org/csapi/TpAoCOrder:1.0 */
+
+static void decode_org_csapi_TpAoCOrder_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/TpSimpleAttributeValue:1.0 */
+
+static void decode_org_csapi_TpSimpleAttributeValue_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/TpAttributeValue:1.0 */
+
+static void decode_org_csapi_TpAttributeValue_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/fw/TpFwEventCriteria:1.0 */
+
+static void decode_org_csapi_fw_TpFwEventCriteria_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/fw/TpLoadStatisticEntityID:1.0 */
+
+static void decode_org_csapi_fw_TpLoadStatisticEntityID_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/fw/TpLoadStatisticInfo:1.0 */
+
+static void decode_org_csapi_fw_TpLoadStatisticInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/fw/TpDomainID:1.0 */
+
+static void decode_org_csapi_fw_TpDomainID_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/fw/TpMigrationAdditionalInfo:1.0 */
+
+static void decode_org_csapi_fw_TpMigrationAdditionalInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/fw/TpFwEventInfo:1.0 */
+
+static void decode_org_csapi_fw_TpFwEventInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/ui/TpUIVariableInfo:1.0 */
+
+static void decode_org_csapi_ui_TpUIVariableInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/ui/TpUIInfo:1.0 */
+
+static void decode_org_csapi_ui_TpUIInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/cc/TpCallAdditionalErrorInfo:1.0 */
+
+static void decode_org_csapi_cc_TpCallAdditionalErrorInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/cc/TpCallLoadControlMechanism:1.0 */
+
+static void decode_org_csapi_cc_TpCallLoadControlMechanism_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/cc/TpCallAdditionalTreatmentInfo:1.0 */
+
+static void decode_org_csapi_cc_TpCallAdditionalTreatmentInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/cc/TpCallPartyToChargeAdditionalInfo:1.0 */
+
+static void decode_org_csapi_cc_TpCallPartyToChargeAdditionalInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/cc/gccs/TpCallAppInfo:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallAppInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/cc/gccs/TpCallAdditionalReportInfo:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallAdditionalReportInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/cc/gccs/TpCallAdditionalReportCriteria:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallAdditionalReportCriteria_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/cc/TpCallAdditionalEventInfo:1.0 */
+
+static void decode_org_csapi_cc_TpCallAdditionalEventInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/cc/TpAdditionalCallEventCriteria:1.0 */
+
+static void decode_org_csapi_cc_TpAdditionalCallEventCriteria_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/cc/TpCallAppInfo:1.0 */
+
+static void decode_org_csapi_cc_TpCallAppInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/cc/mpccs/TpAppMultiPartyCallBack:1.0 */
+
+static void decode_org_csapi_cc_mpccs_TpAppMultiPartyCallBack_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/cc/mmccs/TpMediaStreamDataTypeRequest:1.0 */
+
+static void decode_org_csapi_cc_mmccs_TpMediaStreamDataTypeRequest_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/cc/mmccs/TpAppMultiMediaCallBack:1.0 */
+
+static void decode_org_csapi_cc_mmccs_TpAppMultiMediaCallBack_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/cc/cccs/TpConfPolicy:1.0 */
+
+static void decode_org_csapi_cc_cccs_TpConfPolicy_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/ui/TpUITargetObject:1.0 */
+
+static void decode_org_csapi_ui_TpUITargetObject_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/mm/TpBindingEntry:1.0 */
+
+static void decode_org_csapi_mm_TpBindingEntry_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/dsc/TpDataSessionChargeOrder:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionChargeOrder_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/dsc/TpDataSessionAdditionalErrorInfo:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionAdditionalErrorInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/dsc/TpDataSessionAdditionalReportInfo:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionAdditionalReportInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/gms/TpMessageInfoProperty:1.0 */
+
+static void decode_org_csapi_gms_TpMessageInfoProperty_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/gms/TpMailboxInfoProperty:1.0 */
+
+static void decode_org_csapi_gms_TpMailboxInfoProperty_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/gms/TpMessagingEventInfo:1.0 */
+
+static void decode_org_csapi_gms_TpMessagingEventInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/gms/TpMessagingEventCriteria:1.0 */
+
+static void decode_org_csapi_gms_TpMessagingEventCriteria_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/gms/TpFolderInfoProperty:1.0 */
+
+static void decode_org_csapi_gms_TpFolderInfoProperty_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/cs/TpChargingParameterValue:1.0 */
+
+static void decode_org_csapi_cs_TpChargingParameterValue_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/cs/TpAppInformation:1.0 */
+
+static void decode_org_csapi_cs_TpAppInformation_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/policy/TpPolicyType:1.0 */
+
+static void decode_org_csapi_policy_TpPolicyType_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/pam/TpPAMContextData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMContextData_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/pam/TpPAMEventInfo:1.0 */
+
+static void decode_org_csapi_pam_TpPAMEventInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/pam/TpPAMNotificationInfo:1.0 */
+
+static void decode_org_csapi_pam_TpPAMNotificationInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/pam/TpPAMPreferenceData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMPreferenceData_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/mmm/TpFolderInfoProperty:1.0 */
+
+static void decode_org_csapi_mmm_TpFolderInfoProperty_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/mmm/TpMailboxInfoProperty:1.0 */
+
+static void decode_org_csapi_mmm_TpMailboxInfoProperty_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/mmm/TpMessageInfoProperty:1.0 */
+
+static void decode_org_csapi_mmm_TpMessageInfoProperty_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/mmm/TpMessageHeaderField:1.0 */
+
+static void decode_org_csapi_mmm_TpMessageHeaderField_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/mmm/TpDeliveryTime:1.0 */
+
+static void decode_org_csapi_mmm_TpDeliveryTime_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/mmm/TpMessageTreatment:1.0 */
+
+static void decode_org_csapi_mmm_TpMessageTreatment_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/mmm/TpMessagingEventCriteria:1.0 */
+
+static void decode_org_csapi_mmm_TpMessagingEventCriteria_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+
+/* Union = IDL:org/csapi/mmm/TpMessagingEventInfo:1.0 */
+
+static void decode_org_csapi_mmm_TpMessagingEventInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+
+/* Union prototype declaration End */
+
+
+
+/* Initialise the protocol and subtree pointers */
+
+static int proto_parlay = -1;
+
+static gint ett_parlay = -1;
+
+
+/* Initialise the initial Alignment */
+
+static guint32 boundary = GIOP_HEADER_SIZE; /* initial value */
+
+
+
+/* Initialise the Registered fields */
+
+/* TODO - Use registered fields */
+
+/*
+ * IDL Operations Start
+ */
+
+static const char org_csapi_IpService_setCallback_op[] = "setCallback" ;
+static const char org_csapi_IpService_setCallbackWithSessionID_op[] = "setCallbackWithSessionID" ;
+static const char org_csapi_fw_fw_access_trust_and_security_IpInitial_initiateAuthentication_op[] = "initiateAuthentication" ;
+static const char org_csapi_fw_fw_access_trust_and_security_IpInitial_initiateAuthenticationWithVersion_op[] = "initiateAuthenticationWithVersion" ;
+static const char org_csapi_fw_fw_access_trust_and_security_IpAuthentication_requestAccess_op[] = "requestAccess" ;
+static const char org_csapi_fw_fw_access_trust_and_security_IpClientAccess_terminateAccess_op[] = "terminateAccess" ;
+static const char org_csapi_fw_fw_access_trust_and_security_IpAccess_obtainInterface_op[] = "obtainInterface" ;
+static const char org_csapi_fw_fw_access_trust_and_security_IpAccess_obtainInterfaceWithCallback_op[] = "obtainInterfaceWithCallback" ;
+static const char org_csapi_fw_fw_access_trust_and_security_IpAccess_endAccess_op[] = "endAccess" ;
+static const char org_csapi_fw_fw_access_trust_and_security_IpAccess_listInterfaces_op[] = "listInterfaces" ;
+static const char org_csapi_fw_fw_access_trust_and_security_IpAccess_releaseInterface_op[] = "releaseInterface" ;
+static const char org_csapi_fw_fw_access_trust_and_security_IpAccess_selectSigningAlgorithm_op[] = "selectSigningAlgorithm" ;
+static const char org_csapi_fw_fw_access_trust_and_security_IpAccess_terminateAccess_op[] = "terminateAccess" ;
+static const char org_csapi_fw_fw_access_trust_and_security_IpAccess_relinquishInterface_op[] = "relinquishInterface" ;
+static const char org_csapi_fw_fw_access_trust_and_security_IpClientAPILevelAuthentication_authenticate_op[] = "authenticate" ;
+static const char org_csapi_fw_fw_access_trust_and_security_IpClientAPILevelAuthentication_abortAuthentication_op[] = "abortAuthentication" ;
+static const char org_csapi_fw_fw_access_trust_and_security_IpClientAPILevelAuthentication_authenticationSucceeded_op[] = "authenticationSucceeded" ;
+static const char org_csapi_fw_fw_access_trust_and_security_IpClientAPILevelAuthentication_challenge_op[] = "challenge" ;
+static const char org_csapi_fw_fw_access_trust_and_security_IpAPILevelAuthentication_selectEncryptionMethod_op[] = "selectEncryptionMethod" ;
+static const char org_csapi_fw_fw_access_trust_and_security_IpAPILevelAuthentication_authenticate_op[] = "authenticate" ;
+static const char org_csapi_fw_fw_access_trust_and_security_IpAPILevelAuthentication_abortAuthentication_op[] = "abortAuthentication" ;
+static const char org_csapi_fw_fw_access_trust_and_security_IpAPILevelAuthentication_authenticationSucceeded_op[] = "authenticationSucceeded" ;
+static const char org_csapi_fw_fw_access_trust_and_security_IpAPILevelAuthentication_selectAuthenticationMechanism_op[] = "selectAuthenticationMechanism" ;
+static const char org_csapi_fw_fw_access_trust_and_security_IpAPILevelAuthentication_challenge_op[] = "challenge" ;
+static const char org_csapi_fw_fw_application_notification_IpAppEventNotification_reportNotification_op[] = "reportNotification" ;
+static const char org_csapi_fw_fw_application_notification_IpAppEventNotification_notificationTerminated_op[] = "notificationTerminated" ;
+static const char org_csapi_fw_fw_application_notification_IpEventNotification_createNotification_op[] = "createNotification" ;
+static const char org_csapi_fw_fw_application_notification_IpEventNotification_destroyNotification_op[] = "destroyNotification" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppFaultManager_activityTestRes_op[] = "activityTestRes" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppFaultManager_appActivityTestReq_op[] = "appActivityTestReq" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppFaultManager_fwFaultReportInd_op[] = "fwFaultReportInd" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppFaultManager_fwFaultRecoveryInd_op[] = "fwFaultRecoveryInd" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppFaultManager_svcUnavailableInd_op[] = "svcUnavailableInd" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppFaultManager_genFaultStatsRecordRes_op[] = "genFaultStatsRecordRes" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppFaultManager_fwUnavailableInd_op[] = "fwUnavailableInd" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppFaultManager_activityTestErr_op[] = "activityTestErr" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppFaultManager_genFaultStatsRecordErr_op[] = "genFaultStatsRecordErr" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppFaultManager_appUnavailableInd_op[] = "appUnavailableInd" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppFaultManager_genFaultStatsRecordReq_op[] = "genFaultStatsRecordReq" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppFaultManager_svcAvailStatusInd_op[] = "svcAvailStatusInd" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppFaultManager_generateFaultStatisticsRecordRes_op[] = "generateFaultStatisticsRecordRes" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppFaultManager_generateFaultStatisticsRecordErr_op[] = "generateFaultStatisticsRecordErr" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppFaultManager_generateFaultStatisticsRecordReq_op[] = "generateFaultStatisticsRecordReq" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppFaultManager_fwAvailStatusInd_op[] = "fwAvailStatusInd" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppLoadManager_queryAppLoadReq_op[] = "queryAppLoadReq" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppLoadManager_queryLoadRes_op[] = "queryLoadRes" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppLoadManager_queryLoadErr_op[] = "queryLoadErr" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppLoadManager_loadLevelNotification_op[] = "loadLevelNotification" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppLoadManager_resumeNotification_op[] = "resumeNotification" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppLoadManager_suspendNotification_op[] = "suspendNotification" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppLoadManager_createLoadLevelNotification_op[] = "createLoadLevelNotification" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppLoadManager_destroyLoadLevelNotification_op[] = "destroyLoadLevelNotification" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppLoadManager_queryAppLoadStatsReq_op[] = "queryAppLoadStatsReq" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppLoadManager_queryLoadStatsRes_op[] = "queryLoadStatsRes" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppLoadManager_queryLoadStatsErr_op[] = "queryLoadStatsErr" ;
+static const char org_csapi_fw_fw_application_integrity_IpLoadManager_reportLoad_op[] = "reportLoad" ;
+static const char org_csapi_fw_fw_application_integrity_IpLoadManager_queryLoadReq_op[] = "queryLoadReq" ;
+static const char org_csapi_fw_fw_application_integrity_IpLoadManager_queryAppLoadRes_op[] = "queryAppLoadRes" ;
+static const char org_csapi_fw_fw_application_integrity_IpLoadManager_queryAppLoadErr_op[] = "queryAppLoadErr" ;
+static const char org_csapi_fw_fw_application_integrity_IpLoadManager_createLoadLevelNotification_op[] = "createLoadLevelNotification" ;
+static const char org_csapi_fw_fw_application_integrity_IpLoadManager_destroyLoadLevelNotification_op[] = "destroyLoadLevelNotification" ;
+static const char org_csapi_fw_fw_application_integrity_IpLoadManager_resumeNotification_op[] = "resumeNotification" ;
+static const char org_csapi_fw_fw_application_integrity_IpLoadManager_suspendNotification_op[] = "suspendNotification" ;
+static const char org_csapi_fw_fw_application_integrity_IpLoadManager_queryLoadStatsReq_op[] = "queryLoadStatsReq" ;
+static const char org_csapi_fw_fw_application_integrity_IpLoadManager_queryAppLoadStatsRes_op[] = "queryAppLoadStatsRes" ;
+static const char org_csapi_fw_fw_application_integrity_IpLoadManager_queryAppLoadStatsErr_op[] = "queryAppLoadStatsErr" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppOAM_systemDateTimeQuery_op[] = "systemDateTimeQuery" ;
+static const char org_csapi_fw_fw_application_integrity_IpOAM_systemDateTimeQuery_op[] = "systemDateTimeQuery" ;
+static const char org_csapi_fw_fw_application_integrity_IpFaultManager_activityTestReq_op[] = "activityTestReq" ;
+static const char org_csapi_fw_fw_application_integrity_IpFaultManager_appActivityTestRes_op[] = "appActivityTestRes" ;
+static const char org_csapi_fw_fw_application_integrity_IpFaultManager_svcUnavailableInd_op[] = "svcUnavailableInd" ;
+static const char org_csapi_fw_fw_application_integrity_IpFaultManager_genFaultStatsRecordReq_op[] = "genFaultStatsRecordReq" ;
+static const char org_csapi_fw_fw_application_integrity_IpFaultManager_appActivityTestErr_op[] = "appActivityTestErr" ;
+static const char org_csapi_fw_fw_application_integrity_IpFaultManager_appUnavailableInd_op[] = "appUnavailableInd" ;
+static const char org_csapi_fw_fw_application_integrity_IpFaultManager_genFaultStatsRecordRes_op[] = "genFaultStatsRecordRes" ;
+static const char org_csapi_fw_fw_application_integrity_IpFaultManager_genFaultStatsRecordErr_op[] = "genFaultStatsRecordErr" ;
+static const char org_csapi_fw_fw_application_integrity_IpFaultManager_appAvailStatusInd_op[] = "appAvailStatusInd" ;
+static const char org_csapi_fw_fw_application_integrity_IpFaultManager_generateFaultStatisticsRecordReq_op[] = "generateFaultStatisticsRecordReq" ;
+static const char org_csapi_fw_fw_application_integrity_IpFaultManager_generateFaultStatisticsRecordRes_op[] = "generateFaultStatisticsRecordRes" ;
+static const char org_csapi_fw_fw_application_integrity_IpFaultManager_generateFaultStatisticsRecordErr_op[] = "generateFaultStatisticsRecordErr" ;
+static const char org_csapi_fw_fw_application_integrity_IpHeartBeatMgmt_enableHeartBeat_op[] = "enableHeartBeat" ;
+static const char org_csapi_fw_fw_application_integrity_IpHeartBeatMgmt_disableHeartBeat_op[] = "disableHeartBeat" ;
+static const char org_csapi_fw_fw_application_integrity_IpHeartBeatMgmt_changeInterval_op[] = "changeInterval" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppHeartBeat_pulse_op[] = "pulse" ;
+static const char org_csapi_fw_fw_application_integrity_IpHeartBeat_pulse_op[] = "pulse" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppHeartBeatMgmt_enableAppHeartBeat_op[] = "enableAppHeartBeat" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppHeartBeatMgmt_disableAppHeartBeat_op[] = "disableAppHeartBeat" ;
+static const char org_csapi_fw_fw_application_integrity_IpAppHeartBeatMgmt_changeInterval_op[] = "changeInterval" ;
+static const char org_csapi_fw_fw_application_discovery_IpServiceDiscovery_listServiceTypes_op[] = "listServiceTypes" ;
+static const char org_csapi_fw_fw_application_discovery_IpServiceDiscovery_describeServiceType_op[] = "describeServiceType" ;
+static const char org_csapi_fw_fw_application_discovery_IpServiceDiscovery_discoverService_op[] = "discoverService" ;
+static const char org_csapi_fw_fw_application_discovery_IpServiceDiscovery_listSubscribedServices_op[] = "listSubscribedServices" ;
+static const char org_csapi_fw_fw_application_service_agreement_IpAppServiceAgreementManagement_signServiceAgreement_op[] = "signServiceAgreement" ;
+static const char org_csapi_fw_fw_application_service_agreement_IpAppServiceAgreementManagement_terminateServiceAgreement_op[] = "terminateServiceAgreement" ;
+static const char org_csapi_fw_fw_application_service_agreement_IpServiceAgreementManagement_signServiceAgreement_op[] = "signServiceAgreement" ;
+static const char org_csapi_fw_fw_application_service_agreement_IpServiceAgreementManagement_terminateServiceAgreement_op[] = "terminateServiceAgreement" ;
+static const char org_csapi_fw_fw_application_service_agreement_IpServiceAgreementManagement_selectService_op[] = "selectService" ;
+static const char org_csapi_fw_fw_application_service_agreement_IpServiceAgreementManagement_initiateSignServiceAgreement_op[] = "initiateSignServiceAgreement" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileManagement_createServiceProfile_op[] = "createServiceProfile" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileManagement_modifyServiceProfile_op[] = "modifyServiceProfile" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileManagement_deleteServiceProfile_op[] = "deleteServiceProfile" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileManagement_assign_op[] = "assign" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileManagement_deassign_op[] = "deassign" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileManagement_requestConflictInfo_op[] = "requestConflictInfo" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileInfoQuery_listServiceProfiles_op[] = "listServiceProfiles" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileInfoQuery_describeServiceProfile_op[] = "describeServiceProfile" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileInfoQuery_listAssignedMembers_op[] = "listAssignedMembers" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceContractManagement_createServiceContract_op[] = "createServiceContract" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceContractManagement_modifyServiceContract_op[] = "modifyServiceContract" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceContractManagement_deleteServiceContract_op[] = "deleteServiceContract" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceContractInfoQuery_describeServiceContract_op[] = "describeServiceContract" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceContractInfoQuery_listServiceContracts_op[] = "listServiceContracts" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceContractInfoQuery_listServiceProfiles_op[] = "listServiceProfiles" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpEntOpAccountManagement_modifyEntOpAccount_op[] = "modifyEntOpAccount" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpEntOpAccountManagement_deleteEntOpAccount_op[] = "deleteEntOpAccount" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpEntOpAccountInfoQuery_describeEntOpAccount_op[] = "describeEntOpAccount" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_createClientApp_op[] = "createClientApp" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_modifyClientApp_op[] = "modifyClientApp" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_deleteClientApp_op[] = "deleteClientApp" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_createSAG_op[] = "createSAG" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_modifySAG_op[] = "modifySAG" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_deleteSAG_op[] = "deleteSAG" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_addSAGMembers_op[] = "addSAGMembers" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_removeSAGMembers_op[] = "removeSAGMembers" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_requestConflictInfo_op[] = "requestConflictInfo" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppInfoQuery_describeClientApp_op[] = "describeClientApp" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppInfoQuery_listClientApps_op[] = "listClientApps" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppInfoQuery_describeSAG_op[] = "describeSAG" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppInfoQuery_listSAGs_op[] = "listSAGs" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppInfoQuery_listSAGMembers_op[] = "listSAGMembers" ;
+static const char org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppInfoQuery_listClientAppMembership_op[] = "listClientAppMembership" ;
+static const char org_csapi_fw_fw_enterprise_operator_notification_IpClientEventNotification_reportNotification_op[] = "reportNotification" ;
+static const char org_csapi_fw_fw_enterprise_operator_notification_IpClientEventNotification_notificationTerminated_op[] = "notificationTerminated" ;
+static const char org_csapi_fw_fw_enterprise_operator_notification_IpEventNotification_createNotification_op[] = "createNotification" ;
+static const char org_csapi_fw_fw_enterprise_operator_notification_IpEventNotification_destroyNotification_op[] = "destroyNotification" ;
+static const char org_csapi_fw_fw_service_discovery_IpFwServiceDiscovery_listServiceTypes_op[] = "listServiceTypes" ;
+static const char org_csapi_fw_fw_service_discovery_IpFwServiceDiscovery_describeServiceType_op[] = "describeServiceType" ;
+static const char org_csapi_fw_fw_service_discovery_IpFwServiceDiscovery_discoverService_op[] = "discoverService" ;
+static const char org_csapi_fw_fw_service_discovery_IpFwServiceDiscovery_listRegisteredServices_op[] = "listRegisteredServices" ;
+static const char org_csapi_fw_fw_service_service_lifecycle_IpServiceInstanceLifecycleManager_createServiceManager_op[] = "createServiceManager" ;
+static const char org_csapi_fw_fw_service_service_lifecycle_IpServiceInstanceLifecycleManager_destroyServiceManager_op[] = "destroyServiceManager" ;
+static const char org_csapi_fw_fw_service_service_registration_IpFwServiceRegistration_registerService_op[] = "registerService" ;
+static const char org_csapi_fw_fw_service_service_registration_IpFwServiceRegistration_announceServiceAvailability_op[] = "announceServiceAvailability" ;
+static const char org_csapi_fw_fw_service_service_registration_IpFwServiceRegistration_unregisterService_op[] = "unregisterService" ;
+static const char org_csapi_fw_fw_service_service_registration_IpFwServiceRegistration_describeService_op[] = "describeService" ;
+static const char org_csapi_fw_fw_service_service_registration_IpFwServiceRegistration_unannounceService_op[] = "unannounceService" ;
+static const char org_csapi_fw_fw_service_service_registration_IpFwServiceRegistration_registerServiceSubType_op[] = "registerServiceSubType" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcLoadManager_querySvcLoadReq_op[] = "querySvcLoadReq" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcLoadManager_queryLoadRes_op[] = "queryLoadRes" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcLoadManager_queryLoadErr_op[] = "queryLoadErr" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcLoadManager_loadLevelNotification_op[] = "loadLevelNotification" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcLoadManager_suspendNotification_op[] = "suspendNotification" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcLoadManager_resumeNotification_op[] = "resumeNotification" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcLoadManager_createLoadLevelNotification_op[] = "createLoadLevelNotification" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcLoadManager_destroyLoadLevelNotification_op[] = "destroyLoadLevelNotification" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcLoadManager_querySvcLoadStatsReq_op[] = "querySvcLoadStatsReq" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcLoadManager_queryLoadStatsRes_op[] = "queryLoadStatsRes" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcLoadManager_queryLoadStatsErr_op[] = "queryLoadStatsErr" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwLoadManager_reportLoad_op[] = "reportLoad" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwLoadManager_queryLoadReq_op[] = "queryLoadReq" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwLoadManager_querySvcLoadRes_op[] = "querySvcLoadRes" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwLoadManager_querySvcLoadErr_op[] = "querySvcLoadErr" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwLoadManager_createLoadLevelNotification_op[] = "createLoadLevelNotification" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwLoadManager_destroyLoadLevelNotification_op[] = "destroyLoadLevelNotification" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwLoadManager_suspendNotification_op[] = "suspendNotification" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwLoadManager_resumeNotification_op[] = "resumeNotification" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwLoadManager_queryLoadStatsReq_op[] = "queryLoadStatsReq" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwLoadManager_querySvcLoadStatsRes_op[] = "querySvcLoadStatsRes" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwLoadManager_querySvcLoadStatsErr_op[] = "querySvcLoadStatsErr" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcFaultManager_activityTestRes_op[] = "activityTestRes" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcFaultManager_svcActivityTestReq_op[] = "svcActivityTestReq" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcFaultManager_fwFaultReportInd_op[] = "fwFaultReportInd" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcFaultManager_fwFaultRecoveryInd_op[] = "fwFaultRecoveryInd" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcFaultManager_fwUnavailableInd_op[] = "fwUnavailableInd" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcFaultManager_svcUnavailableInd_op[] = "svcUnavailableInd" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcFaultManager_appUnavailableInd_op[] = "appUnavailableInd" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcFaultManager_genFaultStatsRecordRes_op[] = "genFaultStatsRecordRes" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcFaultManager_activityTestErr_op[] = "activityTestErr" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcFaultManager_genFaultStatsRecordErr_op[] = "genFaultStatsRecordErr" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcFaultManager_genFaultStatsRecordReq_op[] = "genFaultStatsRecordReq" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcFaultManager_generateFaultStatsRecordReq_op[] = "generateFaultStatsRecordReq" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcFaultManager_appAvailStatusInd_op[] = "appAvailStatusInd" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcFaultManager_generateFaultStatisticsRecordRes_op[] = "generateFaultStatisticsRecordRes" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcFaultManager_generateFaultStatisticsRecordErr_op[] = "generateFaultStatisticsRecordErr" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcFaultManager_generateFaultStatisticsRecordReq_op[] = "generateFaultStatisticsRecordReq" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcFaultManager_fwAvailStatusInd_op[] = "fwAvailStatusInd" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwFaultManager_activityTestReq_op[] = "activityTestReq" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwFaultManager_svcActivityTestRes_op[] = "svcActivityTestRes" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwFaultManager_appUnavailableInd_op[] = "appUnavailableInd" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwFaultManager_genFaultStatsRecordReq_op[] = "genFaultStatsRecordReq" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwFaultManager_svcUnavailableInd_op[] = "svcUnavailableInd" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwFaultManager_svcActivityTestErr_op[] = "svcActivityTestErr" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwFaultManager_genFaultStatsRecordRes_op[] = "genFaultStatsRecordRes" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwFaultManager_genFaultStatsRecordErr_op[] = "genFaultStatsRecordErr" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwFaultManager_generateFaultStatsRecordRes_op[] = "generateFaultStatsRecordRes" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwFaultManager_generateFaultStatsRecordErr_op[] = "generateFaultStatsRecordErr" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwFaultManager_svcAvailStatusInd_op[] = "svcAvailStatusInd" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwFaultManager_generateFaultStatisticsRecordReq_op[] = "generateFaultStatisticsRecordReq" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwFaultManager_generateFaultStatisticsRecordRes_op[] = "generateFaultStatisticsRecordRes" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwFaultManager_generateFaultStatisticsRecordErr_op[] = "generateFaultStatisticsRecordErr" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcOAM_systemDateTimeQuery_op[] = "systemDateTimeQuery" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwOAM_systemDateTimeQuery_op[] = "systemDateTimeQuery" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwHeartBeatMgmt_enableHeartBeat_op[] = "enableHeartBeat" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwHeartBeatMgmt_disableHeartBeat_op[] = "disableHeartBeat" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwHeartBeatMgmt_changeInterval_op[] = "changeInterval" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcHeartBeat_pulse_op[] = "pulse" ;
+static const char org_csapi_fw_fw_service_integrity_IpFwHeartBeat_pulse_op[] = "pulse" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcHeartBeatMgmt_enableSvcHeartBeat_op[] = "enableSvcHeartBeat" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcHeartBeatMgmt_disableSvcHeartBeat_op[] = "disableSvcHeartBeat" ;
+static const char org_csapi_fw_fw_service_integrity_IpSvcHeartBeatMgmt_changeInterval_op[] = "changeInterval" ;
+static const char org_csapi_fw_fw_service_notification_IpFwEventNotification_createNotification_op[] = "createNotification" ;
+static const char org_csapi_fw_fw_service_notification_IpFwEventNotification_destroyNotification_op[] = "destroyNotification" ;
+static const char org_csapi_fw_fw_service_notification_IpSvcEventNotification_reportNotification_op[] = "reportNotification" ;
+static const char org_csapi_fw_fw_service_notification_IpSvcEventNotification_notificationTerminated_op[] = "notificationTerminated" ;
+static const char org_csapi_cc_gccs_IpAppCall_routeRes_op[] = "routeRes" ;
+static const char org_csapi_cc_gccs_IpAppCall_routeErr_op[] = "routeErr" ;
+static const char org_csapi_cc_gccs_IpAppCall_getCallInfoRes_op[] = "getCallInfoRes" ;
+static const char org_csapi_cc_gccs_IpAppCall_getCallInfoErr_op[] = "getCallInfoErr" ;
+static const char org_csapi_cc_gccs_IpAppCall_superviseCallRes_op[] = "superviseCallRes" ;
+static const char org_csapi_cc_gccs_IpAppCall_superviseCallErr_op[] = "superviseCallErr" ;
+static const char org_csapi_cc_gccs_IpAppCall_callFaultDetected_op[] = "callFaultDetected" ;
+static const char org_csapi_cc_gccs_IpAppCall_getMoreDialledDigitsRes_op[] = "getMoreDialledDigitsRes" ;
+static const char org_csapi_cc_gccs_IpAppCall_getMoreDialledDigitsErr_op[] = "getMoreDialledDigitsErr" ;
+static const char org_csapi_cc_gccs_IpAppCall_callEnded_op[] = "callEnded" ;
+static const char org_csapi_cc_gccs_IpCall_routeReq_op[] = "routeReq" ;
+static const char org_csapi_cc_gccs_IpCall_release_op[] = "release" ;
+static const char org_csapi_cc_gccs_IpCall_deassignCall_op[] = "deassignCall" ;
+static const char org_csapi_cc_gccs_IpCall_getCallInfoReq_op[] = "getCallInfoReq" ;
+static const char org_csapi_cc_gccs_IpCall_setCallChargePlan_op[] = "setCallChargePlan" ;
+static const char org_csapi_cc_gccs_IpCall_setAdviceOfCharge_op[] = "setAdviceOfCharge" ;
+static const char org_csapi_cc_gccs_IpCall_getMoreDialledDigitsReq_op[] = "getMoreDialledDigitsReq" ;
+static const char org_csapi_cc_gccs_IpCall_superviseCallReq_op[] = "superviseCallReq" ;
+static const char org_csapi_cc_gccs_IpCall_continueProcessing_op[] = "continueProcessing" ;
+static const char org_csapi_cc_gccs_IpAppCallControlManager_callAborted_op[] = "callAborted" ;
+static const char org_csapi_cc_gccs_IpAppCallControlManager_callEventNotify_op[] = "callEventNotify" ;
+static const char org_csapi_cc_gccs_IpAppCallControlManager_callNotificationInterrupted_op[] = "callNotificationInterrupted" ;
+static const char org_csapi_cc_gccs_IpAppCallControlManager_callNotificationContinued_op[] = "callNotificationContinued" ;
+static const char org_csapi_cc_gccs_IpAppCallControlManager_callOverloadEncountered_op[] = "callOverloadEncountered" ;
+static const char org_csapi_cc_gccs_IpAppCallControlManager_callOverloadCeased_op[] = "callOverloadCeased" ;
+static const char org_csapi_cc_gccs_IpAppCallControlManager_abortMultipleCalls_op[] = "abortMultipleCalls" ;
+static const char org_csapi_cc_gccs_IpCallControlManager_createCall_op[] = "createCall" ;
+static const char org_csapi_cc_gccs_IpCallControlManager_enableCallNotification_op[] = "enableCallNotification" ;
+static const char org_csapi_cc_gccs_IpCallControlManager_disableCallNotification_op[] = "disableCallNotification" ;
+static const char org_csapi_cc_gccs_IpCallControlManager_setCallLoadControl_op[] = "setCallLoadControl" ;
+static const char org_csapi_cc_gccs_IpCallControlManager_changeCallNotification_op[] = "changeCallNotification" ;
+static const char org_csapi_cc_gccs_IpCallControlManager_getCriteria_op[] = "getCriteria" ;
+static const char org_csapi_cc_mpccs_IpAppCallLeg_eventReportRes_op[] = "eventReportRes" ;
+static const char org_csapi_cc_mpccs_IpAppCallLeg_eventReportErr_op[] = "eventReportErr" ;
+static const char org_csapi_cc_mpccs_IpAppCallLeg_attachMediaRes_op[] = "attachMediaRes" ;
+static const char org_csapi_cc_mpccs_IpAppCallLeg_attachMediaErr_op[] = "attachMediaErr" ;
+static const char org_csapi_cc_mpccs_IpAppCallLeg_detachMediaRes_op[] = "detachMediaRes" ;
+static const char org_csapi_cc_mpccs_IpAppCallLeg_detachMediaErr_op[] = "detachMediaErr" ;
+static const char org_csapi_cc_mpccs_IpAppCallLeg_getInfoRes_op[] = "getInfoRes" ;
+static const char org_csapi_cc_mpccs_IpAppCallLeg_getInfoErr_op[] = "getInfoErr" ;
+static const char org_csapi_cc_mpccs_IpAppCallLeg_routeErr_op[] = "routeErr" ;
+static const char org_csapi_cc_mpccs_IpAppCallLeg_superviseRes_op[] = "superviseRes" ;
+static const char org_csapi_cc_mpccs_IpAppCallLeg_superviseErr_op[] = "superviseErr" ;
+static const char org_csapi_cc_mpccs_IpAppCallLeg_callLegEnded_op[] = "callLegEnded" ;
+static const char org_csapi_cc_mpccs_IpMultiPartyCallControlManager_createCall_op[] = "createCall" ;
+static const char org_csapi_cc_mpccs_IpMultiPartyCallControlManager_createNotification_op[] = "createNotification" ;
+static const char org_csapi_cc_mpccs_IpMultiPartyCallControlManager_destroyNotification_op[] = "destroyNotification" ;
+static const char org_csapi_cc_mpccs_IpMultiPartyCallControlManager_changeNotification_op[] = "changeNotification" ;
+static const char org_csapi_cc_mpccs_IpMultiPartyCallControlManager_getNotification_op[] = "getNotification" ;
+static const char org_csapi_cc_mpccs_IpMultiPartyCallControlManager_setCallLoadControl_op[] = "setCallLoadControl" ;
+static const char org_csapi_cc_mpccs_IpMultiPartyCallControlManager_enableNotifications_op[] = "enableNotifications" ;
+static const char org_csapi_cc_mpccs_IpMultiPartyCallControlManager_disableNotifications_op[] = "disableNotifications" ;
+static const char org_csapi_cc_mpccs_IpMultiPartyCallControlManager_getNextNotification_op[] = "getNextNotification" ;
+static const char org_csapi_cc_mpccs_IpCallLeg_routeReq_op[] = "routeReq" ;
+static const char org_csapi_cc_mpccs_IpCallLeg_eventReportReq_op[] = "eventReportReq" ;
+static const char org_csapi_cc_mpccs_IpCallLeg_release_op[] = "release" ;
+static const char org_csapi_cc_mpccs_IpCallLeg_getInfoReq_op[] = "getInfoReq" ;
+static const char org_csapi_cc_mpccs_IpCallLeg_getCall_op[] = "getCall" ;
+static const char org_csapi_cc_mpccs_IpCallLeg_attachMediaReq_op[] = "attachMediaReq" ;
+static const char org_csapi_cc_mpccs_IpCallLeg_detachMediaReq_op[] = "detachMediaReq" ;
+static const char org_csapi_cc_mpccs_IpCallLeg_getCurrentDestinationAddress_op[] = "getCurrentDestinationAddress" ;
+static const char org_csapi_cc_mpccs_IpCallLeg_continueProcessing_op[] = "continueProcessing" ;
+static const char org_csapi_cc_mpccs_IpCallLeg_setChargePlan_op[] = "setChargePlan" ;
+static const char org_csapi_cc_mpccs_IpCallLeg_setAdviceOfCharge_op[] = "setAdviceOfCharge" ;
+static const char org_csapi_cc_mpccs_IpCallLeg_superviseReq_op[] = "superviseReq" ;
+static const char org_csapi_cc_mpccs_IpCallLeg_deassign_op[] = "deassign" ;
+static const char org_csapi_cc_mpccs_IpCallLeg_getProperties_op[] = "getProperties" ;
+static const char org_csapi_cc_mpccs_IpCallLeg_setProperties_op[] = "setProperties" ;
+static const char org_csapi_cc_mpccs_IpAppMultiPartyCall_getInfoRes_op[] = "getInfoRes" ;
+static const char org_csapi_cc_mpccs_IpAppMultiPartyCall_getInfoErr_op[] = "getInfoErr" ;
+static const char org_csapi_cc_mpccs_IpAppMultiPartyCall_superviseRes_op[] = "superviseRes" ;
+static const char org_csapi_cc_mpccs_IpAppMultiPartyCall_superviseErr_op[] = "superviseErr" ;
+static const char org_csapi_cc_mpccs_IpAppMultiPartyCall_callEnded_op[] = "callEnded" ;
+static const char org_csapi_cc_mpccs_IpAppMultiPartyCall_createAndRouteCallLegErr_op[] = "createAndRouteCallLegErr" ;
+static const char org_csapi_cc_mpccs_IpMultiPartyCall_getCallLegs_op[] = "getCallLegs" ;
+static const char org_csapi_cc_mpccs_IpMultiPartyCall_createCallLeg_op[] = "createCallLeg" ;
+static const char org_csapi_cc_mpccs_IpMultiPartyCall_createAndRouteCallLegReq_op[] = "createAndRouteCallLegReq" ;
+static const char org_csapi_cc_mpccs_IpMultiPartyCall_release_op[] = "release" ;
+static const char org_csapi_cc_mpccs_IpMultiPartyCall_deassignCall_op[] = "deassignCall" ;
+static const char org_csapi_cc_mpccs_IpMultiPartyCall_getInfoReq_op[] = "getInfoReq" ;
+static const char org_csapi_cc_mpccs_IpMultiPartyCall_setChargePlan_op[] = "setChargePlan" ;
+static const char org_csapi_cc_mpccs_IpMultiPartyCall_setAdviceOfCharge_op[] = "setAdviceOfCharge" ;
+static const char org_csapi_cc_mpccs_IpMultiPartyCall_superviseReq_op[] = "superviseReq" ;
+static const char org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_reportNotification_op[] = "reportNotification" ;
+static const char org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_callAborted_op[] = "callAborted" ;
+static const char org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_managerInterrupted_op[] = "managerInterrupted" ;
+static const char org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_managerResumed_op[] = "managerResumed" ;
+static const char org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_callOverloadEncountered_op[] = "callOverloadEncountered" ;
+static const char org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_callOverloadCeased_op[] = "callOverloadCeased" ;
+static const char org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_abortMultipleCalls_op[] = "abortMultipleCalls" ;
+static const char org_csapi_cc_mmccs_IpAppMultiMediaCall_superviseVolumeRes_op[] = "superviseVolumeRes" ;
+static const char org_csapi_cc_mmccs_IpAppMultiMediaCall_superviseVolumeErr_op[] = "superviseVolumeErr" ;
+static const char org_csapi_cc_mmccs_IpAppMultiMediaCallLeg_mediaStreamMonitorRes_op[] = "mediaStreamMonitorRes" ;
+static const char org_csapi_cc_mmccs_IpMultiMediaStream_subtract_op[] = "subtract" ;
+static const char org_csapi_cc_mmccs_IpMultiMediaCallLeg_mediaStreamAllow_op[] = "mediaStreamAllow" ;
+static const char org_csapi_cc_mmccs_IpMultiMediaCallLeg_mediaStreamMonitorReq_op[] = "mediaStreamMonitorReq" ;
+static const char org_csapi_cc_mmccs_IpMultiMediaCallLeg_getMediaStreams_op[] = "getMediaStreams" ;
+static const char org_csapi_cc_mmccs_IpMultiMediaCall_superviseVolumeReq_op[] = "superviseVolumeReq" ;
+static const char org_csapi_cc_mmccs_IpAppMultiMediaCallControlManager_reportMediaNotification_op[] = "reportMediaNotification" ;
+static const char org_csapi_cc_mmccs_IpMultiMediaCallControlManager_createMediaNotification_op[] = "createMediaNotification" ;
+static const char org_csapi_cc_mmccs_IpMultiMediaCallControlManager_destroyMediaNotification_op[] = "destroyMediaNotification" ;
+static const char org_csapi_cc_mmccs_IpMultiMediaCallControlManager_changeMediaNotification_op[] = "changeMediaNotification" ;
+static const char org_csapi_cc_mmccs_IpMultiMediaCallControlManager_getMediaNotification_op[] = "getMediaNotification" ;
+static const char org_csapi_cc_cccs_IpAppSubConfCall_chairSelection_op[] = "chairSelection" ;
+static const char org_csapi_cc_cccs_IpAppSubConfCall_floorRequest_op[] = "floorRequest" ;
+static const char org_csapi_cc_cccs_IpAppConfCall_partyJoined_op[] = "partyJoined" ;
+static const char org_csapi_cc_cccs_IpAppConfCall_leaveMonitorRes_op[] = "leaveMonitorRes" ;
+static const char org_csapi_cc_cccs_IpConfCallControlManager_createConference_op[] = "createConference" ;
+static const char org_csapi_cc_cccs_IpConfCallControlManager_checkResources_op[] = "checkResources" ;
+static const char org_csapi_cc_cccs_IpConfCallControlManager_reserveResources_op[] = "reserveResources" ;
+static const char org_csapi_cc_cccs_IpConfCallControlManager_freeResources_op[] = "freeResources" ;
+static const char org_csapi_cc_cccs_IpAppConfCallControlManager_conferenceCreated_op[] = "conferenceCreated" ;
+static const char org_csapi_cc_cccs_IpSubConfCall_splitSubConference_op[] = "splitSubConference" ;
+static const char org_csapi_cc_cccs_IpSubConfCall_mergeSubConference_op[] = "mergeSubConference" ;
+static const char org_csapi_cc_cccs_IpSubConfCall_moveCallLeg_op[] = "moveCallLeg" ;
+static const char org_csapi_cc_cccs_IpSubConfCall_inspectVideo_op[] = "inspectVideo" ;
+static const char org_csapi_cc_cccs_IpSubConfCall_inspectVideoCancel_op[] = "inspectVideoCancel" ;
+static const char org_csapi_cc_cccs_IpSubConfCall_appointSpeaker_op[] = "appointSpeaker" ;
+static const char org_csapi_cc_cccs_IpSubConfCall_chairSelection_op[] = "chairSelection" ;
+static const char org_csapi_cc_cccs_IpSubConfCall_changeConferencePolicy_op[] = "changeConferencePolicy" ;
+static const char org_csapi_cc_cccs_IpConfCall_getSubConferences_op[] = "getSubConferences" ;
+static const char org_csapi_cc_cccs_IpConfCall_createSubConference_op[] = "createSubConference" ;
+static const char org_csapi_cc_cccs_IpConfCall_leaveMonitorReq_op[] = "leaveMonitorReq" ;
+static const char org_csapi_cc_cccs_IpConfCall_getConferenceAddress_op[] = "getConferenceAddress" ;
+static const char org_csapi_ui_IpAppUI_sendInfoRes_op[] = "sendInfoRes" ;
+static const char org_csapi_ui_IpAppUI_sendInfoErr_op[] = "sendInfoErr" ;
+static const char org_csapi_ui_IpAppUI_sendInfoAndCollectRes_op[] = "sendInfoAndCollectRes" ;
+static const char org_csapi_ui_IpAppUI_sendInfoAndCollectErr_op[] = "sendInfoAndCollectErr" ;
+static const char org_csapi_ui_IpAppUI_userInteractionFaultDetected_op[] = "userInteractionFaultDetected" ;
+static const char org_csapi_ui_IpAppUICall_recordMessageRes_op[] = "recordMessageRes" ;
+static const char org_csapi_ui_IpAppUICall_recordMessageErr_op[] = "recordMessageErr" ;
+static const char org_csapi_ui_IpAppUICall_deleteMessageRes_op[] = "deleteMessageRes" ;
+static const char org_csapi_ui_IpAppUICall_deleteMessageErr_op[] = "deleteMessageErr" ;
+static const char org_csapi_ui_IpAppUICall_abortActionRes_op[] = "abortActionRes" ;
+static const char org_csapi_ui_IpAppUICall_abortActionErr_op[] = "abortActionErr" ;
+static const char org_csapi_ui_IpAppUICall_getMessageRes_op[] = "getMessageRes" ;
+static const char org_csapi_ui_IpAppUICall_getMessageErr_op[] = "getMessageErr" ;
+static const char org_csapi_ui_IpAppUIManager_userInteractionAborted_op[] = "userInteractionAborted" ;
+static const char org_csapi_ui_IpAppUIManager_userInteractionNotificationInterrupted_op[] = "userInteractionNotificationInterrupted" ;
+static const char org_csapi_ui_IpAppUIManager_userInteractionNotificationContinued_op[] = "userInteractionNotificationContinued" ;
+static const char org_csapi_ui_IpAppUIManager_reportEventNotification_op[] = "reportEventNotification" ;
+static const char org_csapi_ui_IpAppUIManager_abortMultipleUserInteractions_op[] = "abortMultipleUserInteractions" ;
+static const char org_csapi_ui_IpUI_sendInfoReq_op[] = "sendInfoReq" ;
+static const char org_csapi_ui_IpUI_sendInfoAndCollectReq_op[] = "sendInfoAndCollectReq" ;
+static const char org_csapi_ui_IpUI_release_op[] = "release" ;
+static const char org_csapi_ui_IpUI_setOriginatingAddress_op[] = "setOriginatingAddress" ;
+static const char org_csapi_ui_IpUI_getOriginatingAddress_op[] = "getOriginatingAddress" ;
+static const char org_csapi_ui_IpUICall_recordMessageReq_op[] = "recordMessageReq" ;
+static const char org_csapi_ui_IpUICall_deleteMessageReq_op[] = "deleteMessageReq" ;
+static const char org_csapi_ui_IpUICall_abortActionReq_op[] = "abortActionReq" ;
+static const char org_csapi_ui_IpUICall_getMessageReq_op[] = "getMessageReq" ;
+static const char org_csapi_ui_IpUIManager_createUI_op[] = "createUI" ;
+static const char org_csapi_ui_IpUIManager_createUICall_op[] = "createUICall" ;
+static const char org_csapi_ui_IpUIManager_createNotification_op[] = "createNotification" ;
+static const char org_csapi_ui_IpUIManager_destroyNotification_op[] = "destroyNotification" ;
+static const char org_csapi_ui_IpUIManager_changeNotification_op[] = "changeNotification" ;
+static const char org_csapi_ui_IpUIManager_getNotification_op[] = "getNotification" ;
+static const char org_csapi_ui_IpUIManager_enableNotifications_op[] = "enableNotifications" ;
+static const char org_csapi_ui_IpUIManager_disableNotifications_op[] = "disableNotifications" ;
+static const char org_csapi_ui_IpAppUIAdminManager_getMessageRes_op[] = "getMessageRes" ;
+static const char org_csapi_ui_IpAppUIAdminManager_getMessageErr_op[] = "getMessageErr" ;
+static const char org_csapi_ui_IpAppUIAdminManager_deleteMessageRes_op[] = "deleteMessageRes" ;
+static const char org_csapi_ui_IpAppUIAdminManager_deleteMessageErr_op[] = "deleteMessageErr" ;
+static const char org_csapi_ui_IpAppUIAdminManager_putMessageRes_op[] = "putMessageRes" ;
+static const char org_csapi_ui_IpAppUIAdminManager_putMessageErr_op[] = "putMessageErr" ;
+static const char org_csapi_ui_IpAppUIAdminManager_getMessageListRes_op[] = "getMessageListRes" ;
+static const char org_csapi_ui_IpAppUIAdminManager_getMessageListErr_op[] = "getMessageListErr" ;
+static const char org_csapi_ui_IpUIAdminManager_getMessageReq_op[] = "getMessageReq" ;
+static const char org_csapi_ui_IpUIAdminManager_putMessageReq_op[] = "putMessageReq" ;
+static const char org_csapi_ui_IpUIAdminManager_deleteMessageReq_op[] = "deleteMessageReq" ;
+static const char org_csapi_ui_IpUIAdminManager_getMessageListReq_op[] = "getMessageListReq" ;
+static const char org_csapi_mm_ul_IpAppUserLocation_locationReportRes_op[] = "locationReportRes" ;
+static const char org_csapi_mm_ul_IpAppUserLocation_locationReportErr_op[] = "locationReportErr" ;
+static const char org_csapi_mm_ul_IpAppUserLocation_extendedLocationReportRes_op[] = "extendedLocationReportRes" ;
+static const char org_csapi_mm_ul_IpAppUserLocation_extendedLocationReportErr_op[] = "extendedLocationReportErr" ;
+static const char org_csapi_mm_ul_IpAppUserLocation_periodicLocationReport_op[] = "periodicLocationReport" ;
+static const char org_csapi_mm_ul_IpAppUserLocation_periodicLocationReportErr_op[] = "periodicLocationReportErr" ;
+static const char org_csapi_mm_ul_IpUserLocation_locationReportReq_op[] = "locationReportReq" ;
+static const char org_csapi_mm_ul_IpUserLocation_extendedLocationReportReq_op[] = "extendedLocationReportReq" ;
+static const char org_csapi_mm_ul_IpUserLocation_periodicLocationReportingStartReq_op[] = "periodicLocationReportingStartReq" ;
+static const char org_csapi_mm_ul_IpUserLocation_periodicLocationReportingStop_op[] = "periodicLocationReportingStop" ;
+static const char org_csapi_mm_ul_IpUserLocation_getNextPeriodicLocationRequest_op[] = "getNextPeriodicLocationRequest" ;
+static const char org_csapi_mm_ul_IpAppTriggeredUserLocation_triggeredLocationReport_op[] = "triggeredLocationReport" ;
+static const char org_csapi_mm_ul_IpAppTriggeredUserLocation_triggeredLocationReportErr_op[] = "triggeredLocationReportErr" ;
+static const char org_csapi_mm_ul_IpTriggeredUserLocation_triggeredLocationReportingStartReq_op[] = "triggeredLocationReportingStartReq" ;
+static const char org_csapi_mm_ul_IpTriggeredUserLocation_triggeredLocationReportingStop_op[] = "triggeredLocationReportingStop" ;
+static const char org_csapi_mm_ul_IpTriggeredUserLocation_getNextTriggeredLocationRequest_op[] = "getNextTriggeredLocationRequest" ;
+static const char org_csapi_mm_ulc_IpAppUserLocationCamel_locationReportRes_op[] = "locationReportRes" ;
+static const char org_csapi_mm_ulc_IpAppUserLocationCamel_locationReportErr_op[] = "locationReportErr" ;
+static const char org_csapi_mm_ulc_IpAppUserLocationCamel_periodicLocationReport_op[] = "periodicLocationReport" ;
+static const char org_csapi_mm_ulc_IpAppUserLocationCamel_periodicLocationReportErr_op[] = "periodicLocationReportErr" ;
+static const char org_csapi_mm_ulc_IpAppUserLocationCamel_triggeredLocationReport_op[] = "triggeredLocationReport" ;
+static const char org_csapi_mm_ulc_IpAppUserLocationCamel_triggeredLocationReportErr_op[] = "triggeredLocationReportErr" ;
+static const char org_csapi_mm_ulc_IpUserLocationCamel_locationReportReq_op[] = "locationReportReq" ;
+static const char org_csapi_mm_ulc_IpUserLocationCamel_periodicLocationReportingStartReq_op[] = "periodicLocationReportingStartReq" ;
+static const char org_csapi_mm_ulc_IpUserLocationCamel_periodicLocationReportingStop_op[] = "periodicLocationReportingStop" ;
+static const char org_csapi_mm_ulc_IpUserLocationCamel_triggeredLocationReportingStartReq_op[] = "triggeredLocationReportingStartReq" ;
+static const char org_csapi_mm_ulc_IpUserLocationCamel_triggeredLocationReportingStop_op[] = "triggeredLocationReportingStop" ;
+static const char org_csapi_mm_ulc_IpUserLocationCamel_getNextPeriodicLocationRequest_op[] = "getNextPeriodicLocationRequest" ;
+static const char org_csapi_mm_ulc_IpUserLocationCamel_getNextTriggeredLocationRequest_op[] = "getNextTriggeredLocationRequest" ;
+static const char org_csapi_mm_ule_IpAppUserLocationEmergency_emergencyLocationReport_op[] = "emergencyLocationReport" ;
+static const char org_csapi_mm_ule_IpAppUserLocationEmergency_emergencyLocationReportErr_op[] = "emergencyLocationReportErr" ;
+static const char org_csapi_mm_ule_IpUserLocationEmergency_emergencyLocationReportReq_op[] = "emergencyLocationReportReq" ;
+static const char org_csapi_mm_ule_IpUserLocationEmergency_subscribeEmergencyLocationReports_op[] = "subscribeEmergencyLocationReports" ;
+static const char org_csapi_mm_ule_IpUserLocationEmergency_unSubscribeEmergencyLocationReports_op[] = "unSubscribeEmergencyLocationReports" ;
+static const char org_csapi_mm_us_IpAppUserStatus_statusReportRes_op[] = "statusReportRes" ;
+static const char org_csapi_mm_us_IpAppUserStatus_statusReportErr_op[] = "statusReportErr" ;
+static const char org_csapi_mm_us_IpAppUserStatus_triggeredStatusReport_op[] = "triggeredStatusReport" ;
+static const char org_csapi_mm_us_IpAppUserStatus_triggeredStatusReportErr_op[] = "triggeredStatusReportErr" ;
+static const char org_csapi_mm_us_IpAppUserStatus_extendedStatusReportRes_op[] = "extendedStatusReportRes" ;
+static const char org_csapi_mm_us_IpAppUserStatus_extendedStatusReportErr_op[] = "extendedStatusReportErr" ;
+static const char org_csapi_mm_us_IpAppUserStatus_extTriggeredStatusReport_op[] = "extTriggeredStatusReport" ;
+static const char org_csapi_mm_us_IpAppUserStatus_extTriggeredStatusReportErr_op[] = "extTriggeredStatusReportErr" ;
+static const char org_csapi_mm_us_IpUserStatus_statusReportReq_op[] = "statusReportReq" ;
+static const char org_csapi_mm_us_IpUserStatus_triggeredStatusReportingStartReq_op[] = "triggeredStatusReportingStartReq" ;
+static const char org_csapi_mm_us_IpUserStatus_triggeredStatusReportingStop_op[] = "triggeredStatusReportingStop" ;
+static const char org_csapi_mm_us_IpUserStatus_getNextTriggeredStatusRequest_op[] = "getNextTriggeredStatusRequest" ;
+static const char org_csapi_mm_us_IpUserStatus_extendedStatusReportReq_op[] = "extendedStatusReportReq" ;
+static const char org_csapi_mm_us_IpUserStatus_extTriggeredStatusReportingStartReq_op[] = "extTriggeredStatusReportingStartReq" ;
+static const char org_csapi_mm_us_IpUserStatus_extTriggeredStatusReportingStop_op[] = "extTriggeredStatusReportingStop" ;
+static const char org_csapi_mm_ub_IpAppUserBinding_triggeredBindingRequestNotification_op[] = "triggeredBindingRequestNotification" ;
+static const char org_csapi_mm_ub_IpAppUserBinding_triggeredBindingRequestNotificationStartErr_op[] = "triggeredBindingRequestNotificationStartErr" ;
+static const char org_csapi_mm_ub_IpUserBinding_triggeredBindingRequestNotificationStartReq_op[] = "triggeredBindingRequestNotificationStartReq" ;
+static const char org_csapi_mm_ub_IpUserBinding_triggeredBindingRequestNotificationStop_op[] = "triggeredBindingRequestNotificationStop" ;
+static const char org_csapi_termcap_IpTerminalCapabilities_getTerminalCapabilities_op[] = "getTerminalCapabilities" ;
+static const char org_csapi_termcap_IpAppExtendedTerminalCapabilities_triggeredTerminalCapabilityReport_op[] = "triggeredTerminalCapabilityReport" ;
+static const char org_csapi_termcap_IpAppExtendedTerminalCapabilities_triggeredTerminalCapabilityReportErr_op[] = "triggeredTerminalCapabilityReportErr" ;
+static const char org_csapi_termcap_IpExtendedTerminalCapabilities_triggeredTerminalCapabilityStartReq_op[] = "triggeredTerminalCapabilityStartReq" ;
+static const char org_csapi_termcap_IpExtendedTerminalCapabilities_triggeredTerminalCapabilityStop_op[] = "triggeredTerminalCapabilityStop" ;
+static const char org_csapi_dsc_IpAppDataSession_connectRes_op[] = "connectRes" ;
+static const char org_csapi_dsc_IpAppDataSession_connectErr_op[] = "connectErr" ;
+static const char org_csapi_dsc_IpAppDataSession_superviseDataSessionRes_op[] = "superviseDataSessionRes" ;
+static const char org_csapi_dsc_IpAppDataSession_superviseDataSessionErr_op[] = "superviseDataSessionErr" ;
+static const char org_csapi_dsc_IpAppDataSession_dataSessionFaultDetected_op[] = "dataSessionFaultDetected" ;
+static const char org_csapi_dsc_IpAppDataSessionControlManager_dataSessionAborted_op[] = "dataSessionAborted" ;
+static const char org_csapi_dsc_IpAppDataSessionControlManager_reportNotification_op[] = "reportNotification" ;
+static const char org_csapi_dsc_IpAppDataSessionControlManager_dataSessionNotificationContinued_op[] = "dataSessionNotificationContinued" ;
+static const char org_csapi_dsc_IpAppDataSessionControlManager_dataSessionNotificationInterrupted_op[] = "dataSessionNotificationInterrupted" ;
+static const char org_csapi_dsc_IpAppDataSessionControlManager_abortMultipleDataSessions_op[] = "abortMultipleDataSessions" ;
+static const char org_csapi_dsc_IpDataSession_connectReq_op[] = "connectReq" ;
+static const char org_csapi_dsc_IpDataSession_release_op[] = "release" ;
+static const char org_csapi_dsc_IpDataSession_superviseDataSessionReq_op[] = "superviseDataSessionReq" ;
+static const char org_csapi_dsc_IpDataSession_setDataSessionChargePlan_op[] = "setDataSessionChargePlan" ;
+static const char org_csapi_dsc_IpDataSession_setAdviceOfCharge_op[] = "setAdviceOfCharge" ;
+static const char org_csapi_dsc_IpDataSession_deassignDataSession_op[] = "deassignDataSession" ;
+static const char org_csapi_dsc_IpDataSession_continueProcessing_op[] = "continueProcessing" ;
+static const char org_csapi_dsc_IpDataSessionControlManager_createNotification_op[] = "createNotification" ;
+static const char org_csapi_dsc_IpDataSessionControlManager_destroyNotification_op[] = "destroyNotification" ;
+static const char org_csapi_dsc_IpDataSessionControlManager_changeNotification_op[] = "changeNotification" ;
+static const char org_csapi_dsc_IpDataSessionControlManager_enableNotifications_op[] = "enableNotifications" ;
+static const char org_csapi_dsc_IpDataSessionControlManager_disableNotifications_op[] = "disableNotifications" ;
+static const char org_csapi_dsc_IpDataSessionControlManager_getNotifications_op[] = "getNotifications" ;
+static const char org_csapi_dsc_IpDataSessionControlManager_createNotifications_op[] = "createNotifications" ;
+static const char org_csapi_gms_IpMessagingManager_openMailbox_op[] = "openMailbox" ;
+static const char org_csapi_gms_IpMessagingManager_enableMessagingNotification_op[] = "enableMessagingNotification" ;
+static const char org_csapi_gms_IpMessagingManager_disableMessagingNotification_op[] = "disableMessagingNotification" ;
+static const char org_csapi_gms_IpAppMessagingManager_mailboxTerminated_op[] = "mailboxTerminated" ;
+static const char org_csapi_gms_IpAppMessagingManager_mailboxFaultDetected_op[] = "mailboxFaultDetected" ;
+static const char org_csapi_gms_IpAppMessagingManager_messagingEventNotify_op[] = "messagingEventNotify" ;
+static const char org_csapi_gms_IpAppMessagingManager_messagingNotificationTerminated_op[] = "messagingNotificationTerminated" ;
+static const char org_csapi_gms_IpMailbox_close_op[] = "close" ;
+static const char org_csapi_gms_IpMailbox_lock_op[] = "lock" ;
+static const char org_csapi_gms_IpMailbox_unlock_op[] = "unlock" ;
+static const char org_csapi_gms_IpMailbox_getInfoAmount_op[] = "getInfoAmount" ;
+static const char org_csapi_gms_IpMailbox_getInfoProperties_op[] = "getInfoProperties" ;
+static const char org_csapi_gms_IpMailbox_setInfoProperties_op[] = "setInfoProperties" ;
+static const char org_csapi_gms_IpMailbox_openFolder_op[] = "openFolder" ;
+static const char org_csapi_gms_IpMailbox_createFolder_op[] = "createFolder" ;
+static const char org_csapi_gms_IpMailbox_remove_op[] = "remove" ;
+static const char org_csapi_gms_IpMessage_getInfoAmount_op[] = "getInfoAmount" ;
+static const char org_csapi_gms_IpMessage_getInfoProperties_op[] = "getInfoProperties" ;
+static const char org_csapi_gms_IpMessage_setInfoProperties_op[] = "setInfoProperties" ;
+static const char org_csapi_gms_IpMessage_remove_op[] = "remove" ;
+static const char org_csapi_gms_IpMessage_getContent_op[] = "getContent" ;
+static const char org_csapi_gms_IpMailboxFolder_getInfoAmount_op[] = "getInfoAmount" ;
+static const char org_csapi_gms_IpMailboxFolder_getInfoProperties_op[] = "getInfoProperties" ;
+static const char org_csapi_gms_IpMailboxFolder_setInfoProperties_op[] = "setInfoProperties" ;
+static const char org_csapi_gms_IpMailboxFolder_putMessage_op[] = "putMessage" ;
+static const char org_csapi_gms_IpMailboxFolder_getMessage_op[] = "getMessage" ;
+static const char org_csapi_gms_IpMailboxFolder_close_op[] = "close" ;
+static const char org_csapi_gms_IpMailboxFolder_remove_op[] = "remove" ;
+static const char org_csapi_cm_IpVPrP_getVPrPID_op[] = "getVPrPID" ;
+static const char org_csapi_cm_IpVPrP_getSlaID_op[] = "getSlaID" ;
+static const char org_csapi_cm_IpVPrP_getStatus_op[] = "getStatus" ;
+static const char org_csapi_cm_IpVPrP_getProvisionedQoSInfo_op[] = "getProvisionedQoSInfo" ;
+static const char org_csapi_cm_IpVPrP_getValidityInfo_op[] = "getValidityInfo" ;
+static const char org_csapi_cm_IpVPrP_getPipeQoSInfo_op[] = "getPipeQoSInfo" ;
+static const char org_csapi_cm_IpVPrP_getDsCodepoint_op[] = "getDsCodepoint" ;
+static const char org_csapi_cm_IpVPrN_getVPrPList_op[] = "getVPrPList" ;
+static const char org_csapi_cm_IpVPrN_getVPrP_op[] = "getVPrP" ;
+static const char org_csapi_cm_IpVPrN_createVPrP_op[] = "createVPrP" ;
+static const char org_csapi_cm_IpVPrN_deleteVPrP_op[] = "deleteVPrP" ;
+static const char org_csapi_cm_IpQoSMenu_getTemplate_op[] = "getTemplate" ;
+static const char org_csapi_cm_IpQoSMenu_getTemplateList_op[] = "getTemplateList" ;
+static const char org_csapi_cm_IpConnectivityManager_getQoSMenu_op[] = "getQoSMenu" ;
+static const char org_csapi_cm_IpConnectivityManager_getEnterpriseNetwork_op[] = "getEnterpriseNetwork" ;
+static const char org_csapi_cm_IpQoSTemplate_getTemplateType_op[] = "getTemplateType" ;
+static const char org_csapi_cm_IpQoSTemplate_getDescription_op[] = "getDescription" ;
+static const char org_csapi_cm_IpQoSTemplate_setSlaID_op[] = "setSlaID" ;
+static const char org_csapi_cm_IpQoSTemplate_getPipeQoSInfo_op[] = "getPipeQoSInfo" ;
+static const char org_csapi_cm_IpQoSTemplate_setPipeQoSInfo_op[] = "setPipeQoSInfo" ;
+static const char org_csapi_cm_IpQoSTemplate_getValidityInfo_op[] = "getValidityInfo" ;
+static const char org_csapi_cm_IpQoSTemplate_setValidityInfo_op[] = "setValidityInfo" ;
+static const char org_csapi_cm_IpQoSTemplate_setProvisionedQoSInfo_op[] = "setProvisionedQoSInfo" ;
+static const char org_csapi_cm_IpQoSTemplate_getProvisionedQoSInfo_op[] = "getProvisionedQoSInfo" ;
+static const char org_csapi_cm_IpQoSTemplate_getDsCodepoint_op[] = "getDsCodepoint" ;
+static const char org_csapi_cm_IpEnterpriseNetwork_getSiteList_op[] = "getSiteList" ;
+static const char org_csapi_cm_IpEnterpriseNetwork_getVPrN_op[] = "getVPrN" ;
+static const char org_csapi_cm_IpEnterpriseNetwork_getSite_op[] = "getSite" ;
+static const char org_csapi_cm_IpEnterpriseNetworkSite_getSAPList_op[] = "getSAPList" ;
+static const char org_csapi_cm_IpEnterpriseNetworkSite_getSiteID_op[] = "getSiteID" ;
+static const char org_csapi_cm_IpEnterpriseNetworkSite_getSiteLocation_op[] = "getSiteLocation" ;
+static const char org_csapi_cm_IpEnterpriseNetworkSite_getSiteDescription_op[] = "getSiteDescription" ;
+static const char org_csapi_cm_IpEnterpriseNetworkSite_getIPSubnet_op[] = "getIPSubnet" ;
+static const char org_csapi_cm_IpEnterpriseNetworkSite_getSAPIPSubnet_op[] = "getSAPIPSubnet" ;
+static const char org_csapi_am_IpAppAccountManager_reportNotification_op[] = "reportNotification" ;
+static const char org_csapi_am_IpAppAccountManager_queryBalanceRes_op[] = "queryBalanceRes" ;
+static const char org_csapi_am_IpAppAccountManager_queryBalanceErr_op[] = "queryBalanceErr" ;
+static const char org_csapi_am_IpAppAccountManager_retrieveTransactionHistoryRes_op[] = "retrieveTransactionHistoryRes" ;
+static const char org_csapi_am_IpAppAccountManager_retrieveTransactionHistoryErr_op[] = "retrieveTransactionHistoryErr" ;
+static const char org_csapi_am_IpAppAccountManager_queryBalanceExpiryDateRes_op[] = "queryBalanceExpiryDateRes" ;
+static const char org_csapi_am_IpAppAccountManager_queryBalanceExpiryDateErr_op[] = "queryBalanceExpiryDateErr" ;
+static const char org_csapi_am_IpAppAccountManager_updateBalanceRes_op[] = "updateBalanceRes" ;
+static const char org_csapi_am_IpAppAccountManager_updateBalanceErr_op[] = "updateBalanceErr" ;
+static const char org_csapi_am_IpAppAccountManager_createVoucherRes_op[] = "createVoucherRes" ;
+static const char org_csapi_am_IpAppAccountManager_createVoucherErr_op[] = "createVoucherErr" ;
+static const char org_csapi_am_IpAppAccountManager_destroyVoucherRes_op[] = "destroyVoucherRes" ;
+static const char org_csapi_am_IpAppAccountManager_destroyVoucherErr_op[] = "destroyVoucherErr" ;
+static const char org_csapi_am_IpAppAccountManager_queryVoucherRes_op[] = "queryVoucherRes" ;
+static const char org_csapi_am_IpAppAccountManager_queryVoucherErr_op[] = "queryVoucherErr" ;
+static const char org_csapi_am_IpAppAccountManager_queryUserVouchersRes_op[] = "queryUserVouchersRes" ;
+static const char org_csapi_am_IpAppAccountManager_queryUserVouchersErr_op[] = "queryUserVouchersErr" ;
+static const char org_csapi_am_IpAccountManager_createNotification_op[] = "createNotification" ;
+static const char org_csapi_am_IpAccountManager_destroyNotification_op[] = "destroyNotification" ;
+static const char org_csapi_am_IpAccountManager_queryBalanceReq_op[] = "queryBalanceReq" ;
+static const char org_csapi_am_IpAccountManager_changeNotification_op[] = "changeNotification" ;
+static const char org_csapi_am_IpAccountManager_getNotification_op[] = "getNotification" ;
+static const char org_csapi_am_IpAccountManager_retrieveTransactionHistoryReq_op[] = "retrieveTransactionHistoryReq" ;
+static const char org_csapi_am_IpAccountManager_enableNotifications_op[] = "enableNotifications" ;
+static const char org_csapi_am_IpAccountManager_disableNotifications_op[] = "disableNotifications" ;
+static const char org_csapi_am_IpAccountManager_queryBalanceExpiryDateReq_op[] = "queryBalanceExpiryDateReq" ;
+static const char org_csapi_am_IpAccountManager_updateBalanceReq_op[] = "updateBalanceReq" ;
+static const char org_csapi_am_IpAccountManager_createVoucherReq_op[] = "createVoucherReq" ;
+static const char org_csapi_am_IpAccountManager_destroyVoucherReq_op[] = "destroyVoucherReq" ;
+static const char org_csapi_am_IpAccountManager_queryVoucherReq_op[] = "queryVoucherReq" ;
+static const char org_csapi_am_IpAccountManager_queryUserVouchersReq_op[] = "queryUserVouchersReq" ;
+static const char org_csapi_cs_IpAppChargingSession_creditAmountErr_op[] = "creditAmountErr" ;
+static const char org_csapi_cs_IpAppChargingSession_creditAmountRes_op[] = "creditAmountRes" ;
+static const char org_csapi_cs_IpAppChargingSession_creditUnitErr_op[] = "creditUnitErr" ;
+static const char org_csapi_cs_IpAppChargingSession_creditUnitRes_op[] = "creditUnitRes" ;
+static const char org_csapi_cs_IpAppChargingSession_debitAmountErr_op[] = "debitAmountErr" ;
+static const char org_csapi_cs_IpAppChargingSession_debitAmountRes_op[] = "debitAmountRes" ;
+static const char org_csapi_cs_IpAppChargingSession_debitUnitErr_op[] = "debitUnitErr" ;
+static const char org_csapi_cs_IpAppChargingSession_debitUnitRes_op[] = "debitUnitRes" ;
+static const char org_csapi_cs_IpAppChargingSession_directCreditAmountErr_op[] = "directCreditAmountErr" ;
+static const char org_csapi_cs_IpAppChargingSession_directCreditAmountRes_op[] = "directCreditAmountRes" ;
+static const char org_csapi_cs_IpAppChargingSession_directCreditUnitErr_op[] = "directCreditUnitErr" ;
+static const char org_csapi_cs_IpAppChargingSession_directCreditUnitRes_op[] = "directCreditUnitRes" ;
+static const char org_csapi_cs_IpAppChargingSession_directDebitAmountErr_op[] = "directDebitAmountErr" ;
+static const char org_csapi_cs_IpAppChargingSession_directDebitAmountRes_op[] = "directDebitAmountRes" ;
+static const char org_csapi_cs_IpAppChargingSession_directDebitUnitErr_op[] = "directDebitUnitErr" ;
+static const char org_csapi_cs_IpAppChargingSession_directDebitUnitRes_op[] = "directDebitUnitRes" ;
+static const char org_csapi_cs_IpAppChargingSession_extendLifeTimeErr_op[] = "extendLifeTimeErr" ;
+static const char org_csapi_cs_IpAppChargingSession_extendLifeTimeRes_op[] = "extendLifeTimeRes" ;
+static const char org_csapi_cs_IpAppChargingSession_rateErr_op[] = "rateErr" ;
+static const char org_csapi_cs_IpAppChargingSession_rateRes_op[] = "rateRes" ;
+static const char org_csapi_cs_IpAppChargingSession_reserveAmountErr_op[] = "reserveAmountErr" ;
+static const char org_csapi_cs_IpAppChargingSession_reserveAmountRes_op[] = "reserveAmountRes" ;
+static const char org_csapi_cs_IpAppChargingSession_reserveUnitErr_op[] = "reserveUnitErr" ;
+static const char org_csapi_cs_IpAppChargingSession_reserveUnitRes_op[] = "reserveUnitRes" ;
+static const char org_csapi_cs_IpAppChargingSession_sessionEnded_op[] = "sessionEnded" ;
+static const char org_csapi_cs_IpChargingSession_creditAmountReq_op[] = "creditAmountReq" ;
+static const char org_csapi_cs_IpChargingSession_creditUnitReq_op[] = "creditUnitReq" ;
+static const char org_csapi_cs_IpChargingSession_debitAmountReq_op[] = "debitAmountReq" ;
+static const char org_csapi_cs_IpChargingSession_debitUnitReq_op[] = "debitUnitReq" ;
+static const char org_csapi_cs_IpChargingSession_directCreditAmountReq_op[] = "directCreditAmountReq" ;
+static const char org_csapi_cs_IpChargingSession_directCreditUnitReq_op[] = "directCreditUnitReq" ;
+static const char org_csapi_cs_IpChargingSession_directDebitAmountReq_op[] = "directDebitAmountReq" ;
+static const char org_csapi_cs_IpChargingSession_directDebitUnitReq_op[] = "directDebitUnitReq" ;
+static const char org_csapi_cs_IpChargingSession_extendLifeTimeReq_op[] = "extendLifeTimeReq" ;
+static const char org_csapi_cs_IpChargingSession_getAmountLeft_op[] = "getAmountLeft" ;
+static const char org_csapi_cs_IpChargingSession_getLifeTimeLeft_op[] = "getLifeTimeLeft" ;
+static const char org_csapi_cs_IpChargingSession_getUnitLeft_op[] = "getUnitLeft" ;
+static const char org_csapi_cs_IpChargingSession_rateReq_op[] = "rateReq" ;
+static const char org_csapi_cs_IpChargingSession_release_op[] = "release" ;
+static const char org_csapi_cs_IpChargingSession_reserveAmountReq_op[] = "reserveAmountReq" ;
+static const char org_csapi_cs_IpChargingSession_reserveUnitReq_op[] = "reserveUnitReq" ;
+static const char org_csapi_cs_IpAppChargingManager_sessionAborted_op[] = "sessionAborted" ;
+static const char org_csapi_cs_IpAppChargingManager_abortMultipleChargingSessions_op[] = "abortMultipleChargingSessions" ;
+static const char org_csapi_cs_IpChargingManager_createChargingSession_op[] = "createChargingSession" ;
+static const char org_csapi_cs_IpChargingManager_createSplitChargingSession_op[] = "createSplitChargingSession" ;
+static const char org_csapi_policy_evaluation_IpAppPolicyDomain_reportNotification_op[] = "reportNotification" ;
+static const char org_csapi_policy_evaluation_IpAppPolicyDomain_evalPolicyRes_op[] = "evalPolicyRes" ;
+static const char org_csapi_policy_evaluation_IpAppPolicyDomain_evalPolicyErr_op[] = "evalPolicyErr" ;
+static const char org_csapi_policy_evaluation_IpPolicyEvalManager_evalPolicy_op[] = "evalPolicy" ;
+static const char org_csapi_policy_evaluation_IpPolicyEvalManager_evalPolicyReq_op[] = "evalPolicyReq" ;
+static const char org_csapi_policy_evaluation_IpPolicyEvalManager_abortEvalPolicyReq_op[] = "abortEvalPolicyReq" ;
+static const char org_csapi_policy_evaluation_IpPolicyEvalManager_generateEvent_op[] = "generateEvent" ;
+static const char org_csapi_policy_evaluation_IpPolicyEvalManager_createNotification_op[] = "createNotification" ;
+static const char org_csapi_policy_evaluation_IpPolicyEvalManager_destroyNotification_op[] = "destroyNotification" ;
+static const char org_csapi_policy_provisioning_IpPolicy_getAttribute_op[] = "getAttribute" ;
+static const char org_csapi_policy_provisioning_IpPolicy_setAttribute_op[] = "setAttribute" ;
+static const char org_csapi_policy_provisioning_IpPolicy_getAttributes_op[] = "getAttributes" ;
+static const char org_csapi_policy_provisioning_IpPolicy_setAttributes_op[] = "setAttributes" ;
+static const char org_csapi_policy_provisioning_IpPolicyIterator_getList_op[] = "getList" ;
+static const char org_csapi_policy_provisioning_IpPolicyRepository_getParentRepository_op[] = "getParentRepository" ;
+static const char org_csapi_policy_provisioning_IpPolicyRepository_createRepository_op[] = "createRepository" ;
+static const char org_csapi_policy_provisioning_IpPolicyRepository_getRepository_op[] = "getRepository" ;
+static const char org_csapi_policy_provisioning_IpPolicyRepository_removeRepository_op[] = "removeRepository" ;
+static const char org_csapi_policy_provisioning_IpPolicyRepository_getRepositoryCount_op[] = "getRepositoryCount" ;
+static const char org_csapi_policy_provisioning_IpPolicyRepository_getRepositoryIterator_op[] = "getRepositoryIterator" ;
+static const char org_csapi_policy_provisioning_IpPolicyRepository_createCondition_op[] = "createCondition" ;
+static const char org_csapi_policy_provisioning_IpPolicyRepository_getCondition_op[] = "getCondition" ;
+static const char org_csapi_policy_provisioning_IpPolicyRepository_removeCondition_op[] = "removeCondition" ;
+static const char org_csapi_policy_provisioning_IpPolicyRepository_getConditionCount_op[] = "getConditionCount" ;
+static const char org_csapi_policy_provisioning_IpPolicyRepository_getConditionIterator_op[] = "getConditionIterator" ;
+static const char org_csapi_policy_provisioning_IpPolicyRepository_createAction_op[] = "createAction" ;
+static const char org_csapi_policy_provisioning_IpPolicyRepository_getAction_op[] = "getAction" ;
+static const char org_csapi_policy_provisioning_IpPolicyRepository_removeAction_op[] = "removeAction" ;
+static const char org_csapi_policy_provisioning_IpPolicyRepository_getActionCount_op[] = "getActionCount" ;
+static const char org_csapi_policy_provisioning_IpPolicyRepository_getActionIterator_op[] = "getActionIterator" ;
+static const char org_csapi_policy_provisioning_IpPolicyRule_getParentGroup_op[] = "getParentGroup" ;
+static const char org_csapi_policy_provisioning_IpPolicyRule_getParentDomain_op[] = "getParentDomain" ;
+static const char org_csapi_policy_provisioning_IpPolicyRule_createCondition_op[] = "createCondition" ;
+static const char org_csapi_policy_provisioning_IpPolicyRule_getCondition_op[] = "getCondition" ;
+static const char org_csapi_policy_provisioning_IpPolicyRule_removeCondition_op[] = "removeCondition" ;
+static const char org_csapi_policy_provisioning_IpPolicyRule_getConditionCount_op[] = "getConditionCount" ;
+static const char org_csapi_policy_provisioning_IpPolicyRule_getConditionIterator_op[] = "getConditionIterator" ;
+static const char org_csapi_policy_provisioning_IpPolicyRule_createAction_op[] = "createAction" ;
+static const char org_csapi_policy_provisioning_IpPolicyRule_getAction_op[] = "getAction" ;
+static const char org_csapi_policy_provisioning_IpPolicyRule_removeAction_op[] = "removeAction" ;
+static const char org_csapi_policy_provisioning_IpPolicyRule_getActionCount_op[] = "getActionCount" ;
+static const char org_csapi_policy_provisioning_IpPolicyRule_getActionIterator_op[] = "getActionIterator" ;
+static const char org_csapi_policy_provisioning_IpPolicyRule_setValidityPeriodConditionByName_op[] = "setValidityPeriodConditionByName" ;
+static const char org_csapi_policy_provisioning_IpPolicyRule_setValidityPeriodCondition_op[] = "setValidityPeriodCondition" ;
+static const char org_csapi_policy_provisioning_IpPolicyRule_getValidityPeriodCondition_op[] = "getValidityPeriodCondition" ;
+static const char org_csapi_policy_provisioning_IpPolicyRule_unsetValidityPeriodCondition_op[] = "unsetValidityPeriodCondition" ;
+static const char org_csapi_policy_provisioning_IpPolicyRule_setConditionList_op[] = "setConditionList" ;
+static const char org_csapi_policy_provisioning_IpPolicyRule_getConditionList_op[] = "getConditionList" ;
+static const char org_csapi_policy_provisioning_IpPolicyRule_setActionList_op[] = "setActionList" ;
+static const char org_csapi_policy_provisioning_IpPolicyRule_getActionList_op[] = "getActionList" ;
+static const char org_csapi_policy_provisioning_IpPolicyManager_createDomain_op[] = "createDomain" ;
+static const char org_csapi_policy_provisioning_IpPolicyManager_getDomain_op[] = "getDomain" ;
+static const char org_csapi_policy_provisioning_IpPolicyManager_removeDomain_op[] = "removeDomain" ;
+static const char org_csapi_policy_provisioning_IpPolicyManager_getDomainCount_op[] = "getDomainCount" ;
+static const char org_csapi_policy_provisioning_IpPolicyManager_getDomainIterator_op[] = "getDomainIterator" ;
+static const char org_csapi_policy_provisioning_IpPolicyManager_findMatchingDomains_op[] = "findMatchingDomains" ;
+static const char org_csapi_policy_provisioning_IpPolicyManager_createRepository_op[] = "createRepository" ;
+static const char org_csapi_policy_provisioning_IpPolicyManager_getRepository_op[] = "getRepository" ;
+static const char org_csapi_policy_provisioning_IpPolicyManager_removeRepository_op[] = "removeRepository" ;
+static const char org_csapi_policy_provisioning_IpPolicyManager_getRepositoryCount_op[] = "getRepositoryCount" ;
+static const char org_csapi_policy_provisioning_IpPolicyManager_getRepositoryIterator_op[] = "getRepositoryIterator" ;
+static const char org_csapi_policy_provisioning_IpPolicyManager_startTransaction_op[] = "startTransaction" ;
+static const char org_csapi_policy_provisioning_IpPolicyManager_commitTransaction_op[] = "commitTransaction" ;
+static const char org_csapi_policy_provisioning_IpPolicyManager_abortTransaction_op[] = "abortTransaction" ;
+static const char org_csapi_policy_provisioning_IpPolicyGroup_getParentDomain_op[] = "getParentDomain" ;
+static const char org_csapi_policy_provisioning_IpPolicyGroup_getParentGroup_op[] = "getParentGroup" ;
+static const char org_csapi_policy_provisioning_IpPolicyGroup_createGroup_op[] = "createGroup" ;
+static const char org_csapi_policy_provisioning_IpPolicyGroup_getGroup_op[] = "getGroup" ;
+static const char org_csapi_policy_provisioning_IpPolicyGroup_removeGroup_op[] = "removeGroup" ;
+static const char org_csapi_policy_provisioning_IpPolicyGroup_getGroupCount_op[] = "getGroupCount" ;
+static const char org_csapi_policy_provisioning_IpPolicyGroup_getGroupIterator_op[] = "getGroupIterator" ;
+static const char org_csapi_policy_provisioning_IpPolicyGroup_createRule_op[] = "createRule" ;
+static const char org_csapi_policy_provisioning_IpPolicyGroup_getRule_op[] = "getRule" ;
+static const char org_csapi_policy_provisioning_IpPolicyGroup_removeRule_op[] = "removeRule" ;
+static const char org_csapi_policy_provisioning_IpPolicyGroup_getRuleCount_op[] = "getRuleCount" ;
+static const char org_csapi_policy_provisioning_IpPolicyGroup_getRuleIterator_op[] = "getRuleIterator" ;
+static const char org_csapi_policy_provisioning_IpPolicyEventDefinition_setRequiredAttributes_op[] = "setRequiredAttributes" ;
+static const char org_csapi_policy_provisioning_IpPolicyEventDefinition_setOptionalAttributes_op[] = "setOptionalAttributes" ;
+static const char org_csapi_policy_provisioning_IpPolicyEventDefinition_getRequiredAttributes_op[] = "getRequiredAttributes" ;
+static const char org_csapi_policy_provisioning_IpPolicyEventDefinition_getOptionalAttributes_op[] = "getOptionalAttributes" ;
+static const char org_csapi_policy_provisioning_IpPolicyEventDefinition_getParentDomain_op[] = "getParentDomain" ;
+static const char org_csapi_policy_provisioning_IpPolicyCondition_getParentRepository_op[] = "getParentRepository" ;
+static const char org_csapi_policy_provisioning_IpPolicyCondition_getParentRule_op[] = "getParentRule" ;
+static const char org_csapi_policy_provisioning_IpPolicyAction_getParentRepository_op[] = "getParentRepository" ;
+static const char org_csapi_policy_provisioning_IpPolicyAction_getParentRule_op[] = "getParentRule" ;
+static const char org_csapi_policy_provisioning_IpPolicySignature_setInputVariables_op[] = "setInputVariables" ;
+static const char org_csapi_policy_provisioning_IpPolicySignature_setOutputVariables_op[] = "setOutputVariables" ;
+static const char org_csapi_policy_provisioning_IpPolicySignature_getInputVariables_op[] = "getInputVariables" ;
+static const char org_csapi_policy_provisioning_IpPolicySignature_getOutputVariables_op[] = "getOutputVariables" ;
+static const char org_csapi_policy_provisioning_IpPolicySignature_setGroupNames_op[] = "setGroupNames" ;
+static const char org_csapi_policy_provisioning_IpPolicySignature_setPolicyRoles_op[] = "setPolicyRoles" ;
+static const char org_csapi_policy_provisioning_IpPolicySignature_getGroupNames_op[] = "getGroupNames" ;
+static const char org_csapi_policy_provisioning_IpPolicySignature_getPolicyRoles_op[] = "getPolicyRoles" ;
+static const char org_csapi_policy_provisioning_IpPolicySignature_getParentDomain_op[] = "getParentDomain" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_getParentDomain_op[] = "getParentDomain" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_createDomain_op[] = "createDomain" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_getDomain_op[] = "getDomain" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_removeDomain_op[] = "removeDomain" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_getDomainCount_op[] = "getDomainCount" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_getDomainIterator_op[] = "getDomainIterator" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_createGroup_op[] = "createGroup" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_getGroup_op[] = "getGroup" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_removeGroup_op[] = "removeGroup" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_getGroupCount_op[] = "getGroupCount" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_getGroupIterator_op[] = "getGroupIterator" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_createRule_op[] = "createRule" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_getRule_op[] = "getRule" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_removeRule_op[] = "removeRule" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_getRuleCount_op[] = "getRuleCount" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_getRuleIterator_op[] = "getRuleIterator" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_createEventDefinition_op[] = "createEventDefinition" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_getEventDefinition_op[] = "getEventDefinition" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_removeEventDefinition_op[] = "removeEventDefinition" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_getEventDefinitionCount_op[] = "getEventDefinitionCount" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_getEventDefinitionIterator_op[] = "getEventDefinitionIterator" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_createVariableSet_op[] = "createVariableSet" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_getVariableSet_op[] = "getVariableSet" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_removeVariableSet_op[] = "removeVariableSet" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_getVariableSetCount_op[] = "getVariableSetCount" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_getVariableSetIterator_op[] = "getVariableSetIterator" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_createVariable_op[] = "createVariable" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_setVariableValue_op[] = "setVariableValue" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_getVariableType_op[] = "getVariableType" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_getVariableValue_op[] = "getVariableValue" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_getVariable_op[] = "getVariable" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_removeVariable_op[] = "removeVariable" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_createSignature_op[] = "createSignature" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_getSignature_op[] = "getSignature" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_removeSignature_op[] = "removeSignature" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_getSignatureCount_op[] = "getSignatureCount" ;
+static const char org_csapi_policy_provisioning_IpPolicyDomain_getSignatureIterator_op[] = "getSignatureIterator" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityManagement_createIdentity_op[] = "createIdentity" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityManagement_deleteIdentity_op[] = "deleteIdentity" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityManagement_isIdentity_op[] = "isIdentity" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityManagement_createGroupIdentity_op[] = "createGroupIdentity" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityManagement_deleteGroupIdentity_op[] = "deleteGroupIdentity" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityManagement_addToGroup_op[] = "addToGroup" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityManagement_removeFromGroup_op[] = "removeFromGroup" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityManagement_listMembers_op[] = "listMembers" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityManagement_isGroupIdentity_op[] = "isGroupIdentity" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityManagement_listGroupMembership_op[] = "listGroupMembership" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityManagement_addAlias_op[] = "addAlias" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityManagement_removeAliases_op[] = "removeAliases" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityManagement_listAliases_op[] = "listAliases" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityManagement_lookupByAlias_op[] = "lookupByAlias" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityManagement_associateTypes_op[] = "associateTypes" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityManagement_disassociateTypes_op[] = "disassociateTypes" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityManagement_listTypesOfIdentity_op[] = "listTypesOfIdentity" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityManagement_hasType_op[] = "hasType" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityManagement_getIdentityAttributes_op[] = "getIdentityAttributes" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityManagement_setIdentityAttributes_op[] = "setIdentityAttributes" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentManagement_createAgent_op[] = "createAgent" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentManagement_deleteAgent_op[] = "deleteAgent" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentManagement_isAgent_op[] = "isAgent" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentManagement_enableCapabilities_op[] = "enableCapabilities" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentManagement_disableCapabilities_op[] = "disableCapabilities" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentManagement_listEnabledCapabilities_op[] = "listEnabledCapabilities" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentManagement_listAllCapabilities_op[] = "listAllCapabilities" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentManagement_isCapableOf_op[] = "isCapableOf" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentManagement_associateTypes_op[] = "associateTypes" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentManagement_disassociateTypes_op[] = "disassociateTypes" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentManagement_listTypesOfAgent_op[] = "listTypesOfAgent" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentManagement_hasType_op[] = "hasType" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentManagement_getAgentAttributes_op[] = "getAgentAttributes" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentManagement_setAgentAttributes_op[] = "setAgentAttributes" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentAssignment_assignAgent_op[] = "assignAgent" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentAssignment_unassignAgent_op[] = "unassignAgent" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentAssignment_listAssignedAgents_op[] = "listAssignedAgents" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentAssignment_listAssociatedIdentitiesOfAgent_op[] = "listAssociatedIdentitiesOfAgent" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentAssignment_listAssignedAgentsByCapability_op[] = "listAssignedAgentsByCapability" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentAssignment_listCapabilitiesOfIdentity_op[] = "listCapabilitiesOfIdentity" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentAssignment_isIdentityCapableOf_op[] = "isIdentityCapableOf" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_createIdentityAttribute_op[] = "createIdentityAttribute" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_deleteIdentityAttribute_op[] = "deleteIdentityAttribute" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_getIdentityAttributeDefinition_op[] = "getIdentityAttributeDefinition" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_listAllIdentityAttributes_op[] = "listAllIdentityAttributes" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_createIdentityType_op[] = "createIdentityType" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_deleteIdentityType_op[] = "deleteIdentityType" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_listIdentityTypes_op[] = "listIdentityTypes" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_addIdentityTypeAttributes_op[] = "addIdentityTypeAttributes" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_removeIdentityTypeAttributes_op[] = "removeIdentityTypeAttributes" ;
+static const char org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_listIdentityTypeAttributes_op[] = "listIdentityTypeAttributes" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentTypeManagement_createAgentAttribute_op[] = "createAgentAttribute" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentTypeManagement_deleteAgentAttribute_op[] = "deleteAgentAttribute" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentTypeManagement_getAgentAttributeDefinition_op[] = "getAgentAttributeDefinition" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentTypeManagement_listAllAgentAttributes_op[] = "listAllAgentAttributes" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentTypeManagement_createAgentType_op[] = "createAgentType" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentTypeManagement_deleteAgentType_op[] = "deleteAgentType" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentTypeManagement_listAgentTypes_op[] = "listAgentTypes" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentTypeManagement_addAgentTypeAttributes_op[] = "addAgentTypeAttributes" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentTypeManagement_removeAgentTypeAttributes_op[] = "removeAgentTypeAttributes" ;
+static const char org_csapi_pam_provisioning_IpPAMAgentTypeManagement_listAgentTypeAttributes_op[] = "listAgentTypeAttributes" ;
+static const char org_csapi_pam_provisioning_IpPAMCapabilityManagement_createCapabilityAttribute_op[] = "createCapabilityAttribute" ;
+static const char org_csapi_pam_provisioning_IpPAMCapabilityManagement_deleteCapabilityAttribute_op[] = "deleteCapabilityAttribute" ;
+static const char org_csapi_pam_provisioning_IpPAMCapabilityManagement_getCapabilityAttributeDefinition_op[] = "getCapabilityAttributeDefinition" ;
+static const char org_csapi_pam_provisioning_IpPAMCapabilityManagement_listAllCapabilityAttributes_op[] = "listAllCapabilityAttributes" ;
+static const char org_csapi_pam_provisioning_IpPAMCapabilityManagement_createCapability_op[] = "createCapability" ;
+static const char org_csapi_pam_provisioning_IpPAMCapabilityManagement_deleteCapability_op[] = "deleteCapability" ;
+static const char org_csapi_pam_provisioning_IpPAMCapabilityManagement_listCapabilities_op[] = "listCapabilities" ;
+static const char org_csapi_pam_provisioning_IpPAMCapabilityManagement_addCapabilityAttributes_op[] = "addCapabilityAttributes" ;
+static const char org_csapi_pam_provisioning_IpPAMCapabilityManagement_removeCapabilityAttributes_op[] = "removeCapabilityAttributes" ;
+static const char org_csapi_pam_provisioning_IpPAMCapabilityManagement_listCapabilityAttributes_op[] = "listCapabilityAttributes" ;
+static const char org_csapi_pam_provisioning_IpPAMCapabilityManagement_assignCapabilitiesToType_op[] = "assignCapabilitiesToType" ;
+static const char org_csapi_pam_provisioning_IpPAMCapabilityManagement_unassignCapabilitiesFromType_op[] = "unassignCapabilitiesFromType" ;
+static const char org_csapi_pam_provisioning_IpPAMCapabilityManagement_listCapabilitiesOfType_op[] = "listCapabilitiesOfType" ;
+static const char org_csapi_pam_provisioning_IpPAMProvisioningManager_getAuthToken_op[] = "getAuthToken" ;
+static const char org_csapi_pam_provisioning_IpPAMProvisioningManager_obtainInterface_op[] = "obtainInterface" ;
+static const char org_csapi_pam_provisioning_IpPAMProvisioningManager_getAccessControl_op[] = "getAccessControl" ;
+static const char org_csapi_pam_provisioning_IpPAMProvisioningManager_setAccessControl_op[] = "setAccessControl" ;
+static const char org_csapi_pam_access_IpPAMIdentityPresence_setIdentityPresence_op[] = "setIdentityPresence" ;
+static const char org_csapi_pam_access_IpPAMIdentityPresence_setIdentityPresenceExpiration_op[] = "setIdentityPresenceExpiration" ;
+static const char org_csapi_pam_access_IpPAMIdentityPresence_getIdentityPresence_op[] = "getIdentityPresence" ;
+static const char org_csapi_pam_access_IpPAMAgentPresence_setAgentPresence_op[] = "setAgentPresence" ;
+static const char org_csapi_pam_access_IpPAMAgentPresence_setCapabilityPresence_op[] = "setCapabilityPresence" ;
+static const char org_csapi_pam_access_IpPAMAgentPresence_setAgentPresenceExpiration_op[] = "setAgentPresenceExpiration" ;
+static const char org_csapi_pam_access_IpPAMAgentPresence_setCapabilityPresenceExpiration_op[] = "setCapabilityPresenceExpiration" ;
+static const char org_csapi_pam_access_IpPAMAgentPresence_getAgentPresence_op[] = "getAgentPresence" ;
+static const char org_csapi_pam_access_IpPAMAgentPresence_getCapabilityPresence_op[] = "getCapabilityPresence" ;
+static const char org_csapi_pam_access_IpAppPAMPreferenceCheck_computeAvailability_op[] = "computeAvailability" ;
+static const char org_csapi_pam_access_IpPAMAvailability_getAvailability_op[] = "getAvailability" ;
+static const char org_csapi_pam_access_IpPAMAvailability_getPreference_op[] = "getPreference" ;
+static const char org_csapi_pam_access_IpPAMAvailability_setPreference_op[] = "setPreference" ;
+static const char org_csapi_pam_access_IpPAMPresenceAvailabilityManager_getAuthToken_op[] = "getAuthToken" ;
+static const char org_csapi_pam_access_IpPAMPresenceAvailabilityManager_obtainInterface_op[] = "obtainInterface" ;
+static const char org_csapi_pam_access_IpPAMPresenceAvailabilityManager_getAccessControl_op[] = "getAccessControl" ;
+static const char org_csapi_pam_access_IpPAMPresenceAvailabilityManager_setAccessControl_op[] = "setAccessControl" ;
+static const char org_csapi_pam_access_IpPAMPresenceAvailabilityManager_activateService_op[] = "activateService" ;
+static const char org_csapi_pam_access_IpPAMPresenceAvailabilityManager_deactivateService_op[] = "deactivateService" ;
+static const char org_csapi_pam_access_IpPAMPresenceAvailabilityManager_isActiveIdentity_op[] = "isActiveIdentity" ;
+static const char org_csapi_pam_event_IpAppPAMEventHandler_eventNotify_op[] = "eventNotify" ;
+static const char org_csapi_pam_event_IpAppPAMEventHandler_eventNotifyErr_op[] = "eventNotifyErr" ;
+static const char org_csapi_pam_event_IpPAMEventHandler_isRegistered_op[] = "isRegistered" ;
+static const char org_csapi_pam_event_IpPAMEventHandler_registerAppInterface_op[] = "registerAppInterface" ;
+static const char org_csapi_pam_event_IpPAMEventHandler_registerForEvent_op[] = "registerForEvent" ;
+static const char org_csapi_pam_event_IpPAMEventHandler_deregisterAppInterface_op[] = "deregisterAppInterface" ;
+static const char org_csapi_pam_event_IpPAMEventHandler_deregisterFromEvent_op[] = "deregisterFromEvent" ;
+static const char org_csapi_pam_event_IpPAMEventManager_getAuthToken_op[] = "getAuthToken" ;
+static const char org_csapi_pam_event_IpPAMEventManager_obtainInterface_op[] = "obtainInterface" ;
+static const char org_csapi_pam_event_IpPAMEventManager_getAccessControl_op[] = "getAccessControl" ;
+static const char org_csapi_pam_event_IpPAMEventManager_setAccessControl_op[] = "setAccessControl" ;
+static const char org_csapi_pam_event_IpPAMEventManager_activateService_op[] = "activateService" ;
+static const char org_csapi_pam_event_IpPAMEventManager_deactivateService_op[] = "deactivateService" ;
+static const char org_csapi_pam_event_IpPAMEventManager_isActiveIdentity_op[] = "isActiveIdentity" ;
+static const char org_csapi_mmm_IpAppMultiMediaMessagingManager_mailboxTerminated_op[] = "mailboxTerminated" ;
+static const char org_csapi_mmm_IpAppMultiMediaMessagingManager_reportNotification_op[] = "reportNotification" ;
+static const char org_csapi_mmm_IpAppMultiMediaMessagingManager_notificationsInterrupted_op[] = "notificationsInterrupted" ;
+static const char org_csapi_mmm_IpAppMultiMediaMessagingManager_notificationsResumed_op[] = "notificationsResumed" ;
+static const char org_csapi_mmm_IpAppMultiMediaMessagingManager_multiMediaMessagingTerminated_op[] = "multiMediaMessagingTerminated" ;
+static const char org_csapi_mmm_IpAppMultiMediaMessagingManager_terminateMultipleMailboxes_op[] = "terminateMultipleMailboxes" ;
+static const char org_csapi_mmm_IpAppMultiMediaMessagingManager_terminateMultipleMultiMediaMessagingSessions_op[] = "terminateMultipleMultiMediaMessagingSessions" ;
+static const char org_csapi_mmm_IpMultiMediaMessagingManager_openMailbox_op[] = "openMailbox" ;
+static const char org_csapi_mmm_IpMultiMediaMessagingManager_openMultiMediaMessaging_op[] = "openMultiMediaMessaging" ;
+static const char org_csapi_mmm_IpMultiMediaMessagingManager_createNotification_op[] = "createNotification" ;
+static const char org_csapi_mmm_IpMultiMediaMessagingManager_destroyNotification_op[] = "destroyNotification" ;
+static const char org_csapi_mmm_IpMultiMediaMessagingManager_changeNotification_op[] = "changeNotification" ;
+static const char org_csapi_mmm_IpMultiMediaMessagingManager_getNextNotification_op[] = "getNextNotification" ;
+static const char org_csapi_mmm_IpMultiMediaMessagingManager_enableNotifications_op[] = "enableNotifications" ;
+static const char org_csapi_mmm_IpMultiMediaMessagingManager_disableNotifications_op[] = "disableNotifications" ;
+static const char org_csapi_mmm_IpAppMailbox_createFolderRes_op[] = "createFolderRes" ;
+static const char org_csapi_mmm_IpAppMailbox_createFolderErr_op[] = "createFolderErr" ;
+static const char org_csapi_mmm_IpAppMailbox_getFoldersRes_op[] = "getFoldersRes" ;
+static const char org_csapi_mmm_IpAppMailbox_getFoldersErr_op[] = "getFoldersErr" ;
+static const char org_csapi_mmm_IpAppMailbox_deleteFolderRes_op[] = "deleteFolderRes" ;
+static const char org_csapi_mmm_IpAppMailbox_deleteFolderErr_op[] = "deleteFolderErr" ;
+static const char org_csapi_mmm_IpAppMailbox_copyFolderRes_op[] = "copyFolderRes" ;
+static const char org_csapi_mmm_IpAppMailbox_copyFolderErr_op[] = "copyFolderErr" ;
+static const char org_csapi_mmm_IpAppMailbox_moveFolderRes_op[] = "moveFolderRes" ;
+static const char org_csapi_mmm_IpAppMailbox_moveFolderErr_op[] = "moveFolderErr" ;
+static const char org_csapi_mmm_IpAppMailbox_putMessageRes_op[] = "putMessageRes" ;
+static const char org_csapi_mmm_IpAppMailbox_putMessageErr_op[] = "putMessageErr" ;
+static const char org_csapi_mmm_IpAppMailbox_copyMessageRes_op[] = "copyMessageRes" ;
+static const char org_csapi_mmm_IpAppMailbox_copyMessageErr_op[] = "copyMessageErr" ;
+static const char org_csapi_mmm_IpAppMailbox_moveMessageRes_op[] = "moveMessageRes" ;
+static const char org_csapi_mmm_IpAppMailbox_moveMessageErr_op[] = "moveMessageErr" ;
+static const char org_csapi_mmm_IpAppMailbox_deleteMessageRes_op[] = "deleteMessageRes" ;
+static const char org_csapi_mmm_IpAppMailbox_deleteMessageErr_op[] = "deleteMessageErr" ;
+static const char org_csapi_mmm_IpAppMailbox_listMessagesRes_op[] = "listMessagesRes" ;
+static const char org_csapi_mmm_IpAppMailbox_listMessagesErr_op[] = "listMessagesErr" ;
+static const char org_csapi_mmm_IpAppMailbox_listMessageBodyPartsRes_op[] = "listMessageBodyPartsRes" ;
+static const char org_csapi_mmm_IpAppMailbox_listMessageBodyPartsErr_op[] = "listMessageBodyPartsErr" ;
+static const char org_csapi_mmm_IpAppMailbox_getMessageBodyPartsRes_op[] = "getMessageBodyPartsRes" ;
+static const char org_csapi_mmm_IpAppMailbox_getMessageBodyPartsErr_op[] = "getMessageBodyPartsErr" ;
+static const char org_csapi_mmm_IpAppMailbox_getMessageHeadersRes_op[] = "getMessageHeadersRes" ;
+static const char org_csapi_mmm_IpAppMailbox_getMessageHeadersErr_op[] = "getMessageHeadersErr" ;
+static const char org_csapi_mmm_IpAppMailbox_getMessageContentRes_op[] = "getMessageContentRes" ;
+static const char org_csapi_mmm_IpAppMailbox_getMessageContentErr_op[] = "getMessageContentErr" ;
+static const char org_csapi_mmm_IpAppMailbox_getFullMessageRes_op[] = "getFullMessageRes" ;
+static const char org_csapi_mmm_IpAppMailbox_getFullMessageErr_op[] = "getFullMessageErr" ;
+static const char org_csapi_mmm_IpAppMailbox_getMailboxInfoPropertiesRes_op[] = "getMailboxInfoPropertiesRes" ;
+static const char org_csapi_mmm_IpAppMailbox_getFolderInfoPropertiesRes_op[] = "getFolderInfoPropertiesRes" ;
+static const char org_csapi_mmm_IpAppMailbox_getMessageInfoPropertiesRes_op[] = "getMessageInfoPropertiesRes" ;
+static const char org_csapi_mmm_IpAppMailbox_setMessageInfoPropertiesRes_op[] = "setMessageInfoPropertiesRes" ;
+static const char org_csapi_mmm_IpAppMailbox_setMessageInfoPropertiesErr_op[] = "setMessageInfoPropertiesErr" ;
+static const char org_csapi_mmm_IpAppMailbox_getMailboxInfoPropertiesErr_op[] = "getMailboxInfoPropertiesErr" ;
+static const char org_csapi_mmm_IpAppMailbox_getFolderInfoPropertiesErr_op[] = "getFolderInfoPropertiesErr" ;
+static const char org_csapi_mmm_IpAppMailbox_getMessageInfoPropertiesErr_op[] = "getMessageInfoPropertiesErr" ;
+static const char org_csapi_mmm_IpMailbox_close_op[] = "close" ;
+static const char org_csapi_mmm_IpMailbox_createFolderReq_op[] = "createFolderReq" ;
+static const char org_csapi_mmm_IpMailbox_getFoldersReq_op[] = "getFoldersReq" ;
+static const char org_csapi_mmm_IpMailbox_deleteFolderReq_op[] = "deleteFolderReq" ;
+static const char org_csapi_mmm_IpMailbox_copyFolderReq_op[] = "copyFolderReq" ;
+static const char org_csapi_mmm_IpMailbox_moveFolderReq_op[] = "moveFolderReq" ;
+static const char org_csapi_mmm_IpMailbox_putMessageReq_op[] = "putMessageReq" ;
+static const char org_csapi_mmm_IpMailbox_copyMessageReq_op[] = "copyMessageReq" ;
+static const char org_csapi_mmm_IpMailbox_moveMessageReq_op[] = "moveMessageReq" ;
+static const char org_csapi_mmm_IpMailbox_deleteMessageReq_op[] = "deleteMessageReq" ;
+static const char org_csapi_mmm_IpMailbox_listMessagesReq_op[] = "listMessagesReq" ;
+static const char org_csapi_mmm_IpMailbox_listMessageBodyPartsReq_op[] = "listMessageBodyPartsReq" ;
+static const char org_csapi_mmm_IpMailbox_getMessageBodyPartsReq_op[] = "getMessageBodyPartsReq" ;
+static const char org_csapi_mmm_IpMailbox_getMessageHeadersReq_op[] = "getMessageHeadersReq" ;
+static const char org_csapi_mmm_IpMailbox_getMessageContentReq_op[] = "getMessageContentReq" ;
+static const char org_csapi_mmm_IpMailbox_getFullMessageReq_op[] = "getFullMessageReq" ;
+static const char org_csapi_mmm_IpMailbox_getMailboxInfoPropertiesReq_op[] = "getMailboxInfoPropertiesReq" ;
+static const char org_csapi_mmm_IpMailbox_getFolderInfoPropertiesReq_op[] = "getFolderInfoPropertiesReq" ;
+static const char org_csapi_mmm_IpMailbox_getMessageInfoPropertiesReq_op[] = "getMessageInfoPropertiesReq" ;
+static const char org_csapi_mmm_IpMailbox_setMessageInfoPropertiesReq_op[] = "setMessageInfoPropertiesReq" ;
+static const char org_csapi_mmm_IpAppMultiMediaMessaging_sendMessageRes_op[] = "sendMessageRes" ;
+static const char org_csapi_mmm_IpAppMultiMediaMessaging_sendMessageErr_op[] = "sendMessageErr" ;
+static const char org_csapi_mmm_IpAppMultiMediaMessaging_cancelMessageRes_op[] = "cancelMessageRes" ;
+static const char org_csapi_mmm_IpAppMultiMediaMessaging_cancelMessageErr_op[] = "cancelMessageErr" ;
+static const char org_csapi_mmm_IpAppMultiMediaMessaging_queryStatusRes_op[] = "queryStatusRes" ;
+static const char org_csapi_mmm_IpAppMultiMediaMessaging_queryStatusErr_op[] = "queryStatusErr" ;
+static const char org_csapi_mmm_IpAppMultiMediaMessaging_messageStatusReport_op[] = "messageStatusReport" ;
+static const char org_csapi_mmm_IpAppMultiMediaMessaging_messageReceived_op[] = "messageReceived" ;
+static const char org_csapi_mmm_IpMultiMediaMessaging_sendMessageReq_op[] = "sendMessageReq" ;
+static const char org_csapi_mmm_IpMultiMediaMessaging_cancelMessageReq_op[] = "cancelMessageReq" ;
+static const char org_csapi_mmm_IpMultiMediaMessaging_queryStatusReq_op[] = "queryStatusReq" ;
+static const char org_csapi_mmm_IpMultiMediaMessaging_close_op[] = "close" ;
+
+/*
+ * IDL Operations End
+ */
+
+/* Begin Exception (containing members) String Declare */
+
+
+static const char user_exception_org_csapi_P_INVALID_ASSIGNMENT_ID[] = "IDL:org/csapi/P_INVALID_ASSIGNMENT_ID:1.0" ;
+static const char user_exception_org_csapi_P_INVALID_TIME_AND_DATE_FORMAT[] = "IDL:org/csapi/P_INVALID_TIME_AND_DATE_FORMAT:1.0" ;
+static const char user_exception_org_csapi_P_INVALID_EVENT_TYPE[] = "IDL:org/csapi/P_INVALID_EVENT_TYPE:1.0" ;
+static const char user_exception_org_csapi_P_INVALID_INTERFACE_NAME[] = "IDL:org/csapi/P_INVALID_INTERFACE_NAME:1.0" ;
+static const char user_exception_org_csapi_P_INVALID_INTERFACE_TYPE[] = "IDL:org/csapi/P_INVALID_INTERFACE_TYPE:1.0" ;
+static const char user_exception_org_csapi_P_UNKNOWN_SUBSCRIBER[] = "IDL:org/csapi/P_UNKNOWN_SUBSCRIBER:1.0" ;
+static const char user_exception_org_csapi_P_INFORMATION_NOT_AVAILABLE[] = "IDL:org/csapi/P_INFORMATION_NOT_AVAILABLE:1.0" ;
+static const char user_exception_org_csapi_P_INVALID_CRITERIA[] = "IDL:org/csapi/P_INVALID_CRITERIA:1.0" ;
+static const char user_exception_org_csapi_P_INVALID_SESSION_ID[] = "IDL:org/csapi/P_INVALID_SESSION_ID:1.0" ;
+static const char user_exception_org_csapi_TpCommonExceptions[] = "IDL:org/csapi/TpCommonExceptions:1.0" ;
+static const char user_exception_org_csapi_P_INVALID_CURRENCY[] = "IDL:org/csapi/P_INVALID_CURRENCY:1.0" ;
+static const char user_exception_org_csapi_P_INVALID_AMOUNT[] = "IDL:org/csapi/P_INVALID_AMOUNT:1.0" ;
+static const char user_exception_org_csapi_P_APPLICATION_NOT_ACTIVATED[] = "IDL:org/csapi/P_APPLICATION_NOT_ACTIVATED:1.0" ;
+static const char user_exception_org_csapi_P_INVALID_ADDRESS[] = "IDL:org/csapi/P_INVALID_ADDRESS:1.0" ;
+static const char user_exception_org_csapi_P_UNSUPPORTED_ADDRESS_PLAN[] = "IDL:org/csapi/P_UNSUPPORTED_ADDRESS_PLAN:1.0" ;
+static const char user_exception_org_csapi_P_UNAUTHORISED_PARAMETER_VALUE[] = "IDL:org/csapi/P_UNAUTHORISED_PARAMETER_VALUE:1.0" ;
+static const char user_exception_org_csapi_P_INVALID_VERSION[] = "IDL:org/csapi/P_INVALID_VERSION:1.0" ;
+static const char user_exception_org_csapi_P_INVALID_NETWORK_STATE[] = "IDL:org/csapi/P_INVALID_NETWORK_STATE:1.0" ;
+static const char user_exception_org_csapi_fw_P_INVALID_SERVICE_ID[] = "IDL:org/csapi/fw/P_INVALID_SERVICE_ID:1.0" ;
+static const char user_exception_org_csapi_fw_P_SERVICE_ACCESS_DENIED[] = "IDL:org/csapi/fw/P_SERVICE_ACCESS_DENIED:1.0" ;
+static const char user_exception_org_csapi_fw_P_ACCESS_DENIED[] = "IDL:org/csapi/fw/P_ACCESS_DENIED:1.0" ;
+static const char user_exception_org_csapi_fw_P_SERVICE_NOT_ENABLED[] = "IDL:org/csapi/fw/P_SERVICE_NOT_ENABLED:1.0" ;
+static const char user_exception_org_csapi_fw_P_NO_ACCEPTABLE_ENCRYPTION_CAPABILITY[] = "IDL:org/csapi/fw/P_NO_ACCEPTABLE_ENCRYPTION_CAPABILITY:1.0" ;
+static const char user_exception_org_csapi_fw_P_INVALID_AGREEMENT_TEXT[] = "IDL:org/csapi/fw/P_INVALID_AGREEMENT_TEXT:1.0" ;
+static const char user_exception_org_csapi_fw_P_INVALID_SERVICE_TOKEN[] = "IDL:org/csapi/fw/P_INVALID_SERVICE_TOKEN:1.0" ;
+static const char user_exception_org_csapi_fw_P_INVALID_SIGNATURE[] = "IDL:org/csapi/fw/P_INVALID_SIGNATURE:1.0" ;
+static const char user_exception_org_csapi_fw_P_INVALID_SIGNING_ALGORITHM[] = "IDL:org/csapi/fw/P_INVALID_SIGNING_ALGORITHM:1.0" ;
+static const char user_exception_org_csapi_fw_P_INVALID_DOMAIN_ID[] = "IDL:org/csapi/fw/P_INVALID_DOMAIN_ID:1.0" ;
+static const char user_exception_org_csapi_fw_P_INVALID_PROPERTY[] = "IDL:org/csapi/fw/P_INVALID_PROPERTY:1.0" ;
+static const char user_exception_org_csapi_fw_P_INVALID_ACCESS_TYPE[] = "IDL:org/csapi/fw/P_INVALID_ACCESS_TYPE:1.0" ;
+static const char user_exception_org_csapi_fw_P_ILLEGAL_SERVICE_TYPE[] = "IDL:org/csapi/fw/P_ILLEGAL_SERVICE_TYPE:1.0" ;
+static const char user_exception_org_csapi_fw_P_UNKNOWN_SERVICE_TYPE[] = "IDL:org/csapi/fw/P_UNKNOWN_SERVICE_TYPE:1.0" ;
+static const char user_exception_org_csapi_fw_P_MISSING_MANDATORY_PROPERTY[] = "IDL:org/csapi/fw/P_MISSING_MANDATORY_PROPERTY:1.0" ;
+static const char user_exception_org_csapi_fw_P_DUPLICATE_PROPERTY_NAME[] = "IDL:org/csapi/fw/P_DUPLICATE_PROPERTY_NAME:1.0" ;
+static const char user_exception_org_csapi_fw_P_PROPERTY_TYPE_MISMATCH[] = "IDL:org/csapi/fw/P_PROPERTY_TYPE_MISMATCH:1.0" ;
+static const char user_exception_org_csapi_fw_P_INVALID_CLIENT_APP_ID[] = "IDL:org/csapi/fw/P_INVALID_CLIENT_APP_ID:1.0" ;
+static const char user_exception_org_csapi_fw_P_INVALID_AUTH_TYPE[] = "IDL:org/csapi/fw/P_INVALID_AUTH_TYPE:1.0" ;
+static const char user_exception_org_csapi_fw_P_INVALID_SAG_ID[] = "IDL:org/csapi/fw/P_INVALID_SAG_ID:1.0" ;
+static const char user_exception_org_csapi_fw_P_INVALID_SERVICE_PROFILE_ID[] = "IDL:org/csapi/fw/P_INVALID_SERVICE_PROFILE_ID:1.0" ;
+static const char user_exception_org_csapi_fw_P_INVALID_SERVICE_CONTRACT_ID[] = "IDL:org/csapi/fw/P_INVALID_SERVICE_CONTRACT_ID:1.0" ;
+static const char user_exception_org_csapi_fw_P_INVALID_ACTIVITY_TEST_ID[] = "IDL:org/csapi/fw/P_INVALID_ACTIVITY_TEST_ID:1.0" ;
+static const char user_exception_org_csapi_fw_P_ILLEGAL_SERVICE_ID[] = "IDL:org/csapi/fw/P_ILLEGAL_SERVICE_ID:1.0" ;
+static const char user_exception_org_csapi_fw_P_UNKNOWN_SERVICE_ID[] = "IDL:org/csapi/fw/P_UNKNOWN_SERVICE_ID:1.0" ;
+static const char user_exception_org_csapi_fw_P_SERVICE_TYPE_UNAVAILABLE[] = "IDL:org/csapi/fw/P_SERVICE_TYPE_UNAVAILABLE:1.0" ;
+static const char user_exception_org_csapi_fw_P_INVALID_ADDITION_TO_SAG[] = "IDL:org/csapi/fw/P_INVALID_ADDITION_TO_SAG:1.0" ;
+static const char user_exception_org_csapi_fw_P_INVALID_SAG_TO_SERVICE_PROFILE_ASSIGNMENT[] = "IDL:org/csapi/fw/P_INVALID_SAG_TO_SERVICE_PROFILE_ASSIGNMENT:1.0" ;
+static const char user_exception_org_csapi_fw_P_NO_ACCEPTABLE_AUTHENTICATION_MECHANISM[] = "IDL:org/csapi/fw/P_NO_ACCEPTABLE_AUTHENTICATION_MECHANISM:1.0" ;
+static const char user_exception_org_csapi_fw_P_NO_ACCEPTABLE_SIGNING_ALGORITHM[] = "IDL:org/csapi/fw/P_NO_ACCEPTABLE_SIGNING_ALGORITHM:1.0" ;
+static const char user_exception_org_csapi_ui_P_ID_NOT_FOUND[] = "IDL:org/csapi/ui/P_ID_NOT_FOUND:1.0" ;
+static const char user_exception_org_csapi_ui_P_ILLEGAL_ID[] = "IDL:org/csapi/ui/P_ILLEGAL_ID:1.0" ;
+static const char user_exception_org_csapi_ui_P_ILLEGAL_RANGE[] = "IDL:org/csapi/ui/P_ILLEGAL_RANGE:1.0" ;
+static const char user_exception_org_csapi_ui_P_INVALID_COLLECTION_CRITERIA[] = "IDL:org/csapi/ui/P_INVALID_COLLECTION_CRITERIA:1.0" ;
+static const char user_exception_org_csapi_mm_P_REQUESTED_ACCURACY_CANNOT_BE_DELIVERED[] = "IDL:org/csapi/mm/P_REQUESTED_ACCURACY_CANNOT_BE_DELIVERED:1.0" ;
+static const char user_exception_org_csapi_mm_P_REQUESTED_RESPONSE_TIME_CANNOT_BE_DELIVERED[] = "IDL:org/csapi/mm/P_REQUESTED_RESPONSE_TIME_CANNOT_BE_DELIVERED:1.0" ;
+static const char user_exception_org_csapi_mm_P_INVALID_REPORTING_INTERVAL[] = "IDL:org/csapi/mm/P_INVALID_REPORTING_INTERVAL:1.0" ;
+static const char user_exception_org_csapi_mm_P_TRIGGER_CONDITIONS_NOT_SUBSCRIBED[] = "IDL:org/csapi/mm/P_TRIGGER_CONDITIONS_NOT_SUBSCRIBED:1.0" ;
+static const char user_exception_org_csapi_termcap_P_INVALID_TERMINAL_ID[] = "IDL:org/csapi/termcap/P_INVALID_TERMINAL_ID:1.0" ;
+static const char user_exception_org_csapi_gms_P_GMS_INVALID_FOLDER_ID[] = "IDL:org/csapi/gms/P_GMS_INVALID_FOLDER_ID:1.0" ;
+static const char user_exception_org_csapi_gms_P_GMS_INSUFFICIENT_PRIVILEGE[] = "IDL:org/csapi/gms/P_GMS_INSUFFICIENT_PRIVILEGE:1.0" ;
+static const char user_exception_org_csapi_gms_P_GMS_INVALID_AUTHENTICATION_INFORMATION[] = "IDL:org/csapi/gms/P_GMS_INVALID_AUTHENTICATION_INFORMATION:1.0" ;
+static const char user_exception_org_csapi_gms_P_GMS_INVALID_MAILBOX[] = "IDL:org/csapi/gms/P_GMS_INVALID_MAILBOX:1.0" ;
+static const char user_exception_org_csapi_gms_P_GMS_INVALID_MESSAGE_ID[] = "IDL:org/csapi/gms/P_GMS_INVALID_MESSAGE_ID:1.0" ;
+static const char user_exception_org_csapi_gms_P_GMS_LOCKING_LOCKED_MAILBOX[] = "IDL:org/csapi/gms/P_GMS_LOCKING_LOCKED_MAILBOX:1.0" ;
+static const char user_exception_org_csapi_gms_P_GMS_MESSAGE_NOT_REMOVED[] = "IDL:org/csapi/gms/P_GMS_MESSAGE_NOT_REMOVED:1.0" ;
+static const char user_exception_org_csapi_gms_P_GMS_NUMBER_NOT_POSITIVE[] = "IDL:org/csapi/gms/P_GMS_NUMBER_NOT_POSITIVE:1.0" ;
+static const char user_exception_org_csapi_gms_P_GMS_UNLOCKING_UNLOCKED_MAILBOX[] = "IDL:org/csapi/gms/P_GMS_UNLOCKING_UNLOCKED_MAILBOX:1.0" ;
+static const char user_exception_org_csapi_gms_P_GMS_MAILBOX_LOCKED[] = "IDL:org/csapi/gms/P_GMS_MAILBOX_LOCKED:1.0" ;
+static const char user_exception_org_csapi_gms_P_GMS_CANNOT_UNLOCK_MAILBOX[] = "IDL:org/csapi/gms/P_GMS_CANNOT_UNLOCK_MAILBOX:1.0" ;
+static const char user_exception_org_csapi_gms_P_GMS_PROPERTY_NOT_SET[] = "IDL:org/csapi/gms/P_GMS_PROPERTY_NOT_SET:1.0" ;
+static const char user_exception_org_csapi_gms_P_GMS_FOLDER_IS_OPEN[] = "IDL:org/csapi/gms/P_GMS_FOLDER_IS_OPEN:1.0" ;
+static const char user_exception_org_csapi_gms_P_GMS_MAILBOX_OPEN[] = "IDL:org/csapi/gms/P_GMS_MAILBOX_OPEN:1.0" ;
+static const char user_exception_org_csapi_cm_P_UNKNOWN_VPRP_ID[] = "IDL:org/csapi/cm/P_UNKNOWN_VPRP_ID:1.0" ;
+static const char user_exception_org_csapi_cm_P_UNKNOWN_SLA_ID[] = "IDL:org/csapi/cm/P_UNKNOWN_SLA_ID:1.0" ;
+static const char user_exception_org_csapi_cm_P_UNKNOWN_STATUS[] = "IDL:org/csapi/cm/P_UNKNOWN_STATUS:1.0" ;
+static const char user_exception_org_csapi_cm_P_UNKNOWN_QOS_INFO[] = "IDL:org/csapi/cm/P_UNKNOWN_QOS_INFO:1.0" ;
+static const char user_exception_org_csapi_cm_P_UNKNOWN_VALIDITY_INFO[] = "IDL:org/csapi/cm/P_UNKNOWN_VALIDITY_INFO:1.0" ;
+static const char user_exception_org_csapi_cm_P_UNKNOWN_PIPEQOSINFO[] = "IDL:org/csapi/cm/P_UNKNOWN_PIPEQOSINFO:1.0" ;
+static const char user_exception_org_csapi_cm_P_UNKNOWN_DSCODEPOINT[] = "IDL:org/csapi/cm/P_UNKNOWN_DSCODEPOINT:1.0" ;
+static const char user_exception_org_csapi_cm_P_ILLEGAL_VPRPID[] = "IDL:org/csapi/cm/P_ILLEGAL_VPRPID:1.0" ;
+static const char user_exception_org_csapi_cm_P_ILLEGAL_REF_VALUE[] = "IDL:org/csapi/cm/P_ILLEGAL_REF_VALUE:1.0" ;
+static const char user_exception_org_csapi_cm_P_UNKNOWN_INTERFACE[] = "IDL:org/csapi/cm/P_UNKNOWN_INTERFACE:1.0" ;
+static const char user_exception_org_csapi_cm_P_CANT_DELETE_VPRP[] = "IDL:org/csapi/cm/P_CANT_DELETE_VPRP:1.0" ;
+static const char user_exception_org_csapi_cm_P_UNKNOWN_TEMPLATES[] = "IDL:org/csapi/cm/P_UNKNOWN_TEMPLATES:1.0" ;
+static const char user_exception_org_csapi_cm_P_UNKNOWN_MENU[] = "IDL:org/csapi/cm/P_UNKNOWN_MENU:1.0" ;
+static const char user_exception_org_csapi_cm_P_UNKNOWN_ENTERPRISE_NETWORK[] = "IDL:org/csapi/cm/P_UNKNOWN_ENTERPRISE_NETWORK:1.0" ;
+static const char user_exception_org_csapi_cm_P_UNKNOWN_TEMPLATE_TYPE[] = "IDL:org/csapi/cm/P_UNKNOWN_TEMPLATE_TYPE:1.0" ;
+static const char user_exception_org_csapi_cm_P_UNKNOWN_DESCRIPTION[] = "IDL:org/csapi/cm/P_UNKNOWN_DESCRIPTION:1.0" ;
+static const char user_exception_org_csapi_cm_P_ILLEGAL_SLA_ID[] = "IDL:org/csapi/cm/P_ILLEGAL_SLA_ID:1.0" ;
+static const char user_exception_org_csapi_cm_P_ILLEGAL_TAG[] = "IDL:org/csapi/cm/P_ILLEGAL_TAG:1.0" ;
+static const char user_exception_org_csapi_cm_P_ILLEGAL_VALUE[] = "IDL:org/csapi/cm/P_ILLEGAL_VALUE:1.0" ;
+static const char user_exception_org_csapi_cm_P_ILLEGAL_COMBINATION[] = "IDL:org/csapi/cm/P_ILLEGAL_COMBINATION:1.0" ;
+static const char user_exception_org_csapi_cm_P_UNKNOWN_SITES[] = "IDL:org/csapi/cm/P_UNKNOWN_SITES:1.0" ;
+static const char user_exception_org_csapi_cm_P_UNKNOWN_VPRN[] = "IDL:org/csapi/cm/P_UNKNOWN_VPRN:1.0" ;
+static const char user_exception_org_csapi_cm_P_ILLEGAL_SITE_ID[] = "IDL:org/csapi/cm/P_ILLEGAL_SITE_ID:1.0" ;
+static const char user_exception_org_csapi_cm_P_UNKNOWN_SITE_ID[] = "IDL:org/csapi/cm/P_UNKNOWN_SITE_ID:1.0" ;
+static const char user_exception_org_csapi_cm_P_UNKNOWN_SAPS[] = "IDL:org/csapi/cm/P_UNKNOWN_SAPS:1.0" ;
+static const char user_exception_org_csapi_cm_P_UNKNOWN_SITE_LOCATION[] = "IDL:org/csapi/cm/P_UNKNOWN_SITE_LOCATION:1.0" ;
+static const char user_exception_org_csapi_cm_P_UNKNOWN_SITE_DESCRIPTION[] = "IDL:org/csapi/cm/P_UNKNOWN_SITE_DESCRIPTION:1.0" ;
+static const char user_exception_org_csapi_cm_P_UNKNOWN_IPSUBNET[] = "IDL:org/csapi/cm/P_UNKNOWN_IPSUBNET:1.0" ;
+static const char user_exception_org_csapi_cm_P_UNKNOWN_SAP[] = "IDL:org/csapi/cm/P_UNKNOWN_SAP:1.0" ;
+static const char user_exception_org_csapi_cm_P_UNKNOWN_VPRP[] = "IDL:org/csapi/cm/P_UNKNOWN_VPRP:1.0" ;
+static const char user_exception_org_csapi_am_P_UNAUTHORIZED_APPLICATION[] = "IDL:org/csapi/am/P_UNAUTHORIZED_APPLICATION:1.0" ;
+static const char user_exception_org_csapi_cs_P_INVALID_USER[] = "IDL:org/csapi/cs/P_INVALID_USER:1.0" ;
+static const char user_exception_org_csapi_cs_P_INVALID_ACCOUNT[] = "IDL:org/csapi/cs/P_INVALID_ACCOUNT:1.0" ;
+static const char user_exception_org_csapi_cs_P_INVALID_REQUEST_NUMBER[] = "IDL:org/csapi/cs/P_INVALID_REQUEST_NUMBER:1.0" ;
+static const char user_exception_org_csapi_cs_P_INVALID_VOLUME[] = "IDL:org/csapi/cs/P_INVALID_VOLUME:1.0" ;
+static const char user_exception_org_csapi_policy_P_ACCESS_VIOLATION[] = "IDL:org/csapi/policy/P_ACCESS_VIOLATION:1.0" ;
+static const char user_exception_org_csapi_policy_P_SYNTAX_ERROR[] = "IDL:org/csapi/policy/P_SYNTAX_ERROR:1.0" ;
+static const char user_exception_org_csapi_policy_P_NAME_SPACE_ERROR[] = "IDL:org/csapi/policy/P_NAME_SPACE_ERROR:1.0" ;
+static const char user_exception_org_csapi_policy_P_NO_TRANSACTION_IN_PROCESS[] = "IDL:org/csapi/policy/P_NO_TRANSACTION_IN_PROCESS:1.0" ;
+static const char user_exception_org_csapi_policy_P_TRANSACTION_IN_PROCESS[] = "IDL:org/csapi/policy/P_TRANSACTION_IN_PROCESS:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_UNKNOWN_TYPE[] = "IDL:org/csapi/pam/P_PAM_UNKNOWN_TYPE:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_UNKNOWN_MEMBER[] = "IDL:org/csapi/pam/P_PAM_UNKNOWN_MEMBER:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_UNKNOWN_IDENTITY[] = "IDL:org/csapi/pam/P_PAM_UNKNOWN_IDENTITY:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_UNKNOWN_GROUP[] = "IDL:org/csapi/pam/P_PAM_UNKNOWN_GROUP:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_UNKNOWN_CAPABILITY[] = "IDL:org/csapi/pam/P_PAM_UNKNOWN_CAPABILITY:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_UNKNOWN_ATTRIBUTES[] = "IDL:org/csapi/pam/P_PAM_UNKNOWN_ATTRIBUTES:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_UNKNOWN_ATTRIBUTE[] = "IDL:org/csapi/pam/P_PAM_UNKNOWN_ATTRIBUTE:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_UNKNOWN_ASSIGNMENT[] = "IDL:org/csapi/pam/P_PAM_UNKNOWN_ASSIGNMENT:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_UNKNOWN_ALIAS[] = "IDL:org/csapi/pam/P_PAM_UNKNOWN_ALIAS:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_UNKNOWN_AGENT[] = "IDL:org/csapi/pam/P_PAM_UNKNOWN_AGENT:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_UNASSIGNED_ALIAS[] = "IDL:org/csapi/pam/P_PAM_UNASSIGNED_ALIAS:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_TYPE_EXISTS[] = "IDL:org/csapi/pam/P_PAM_TYPE_EXISTS:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_TYPE_ASSOCIATED[] = "IDL:org/csapi/pam/P_PAM_TYPE_ASSOCIATED:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_NOT_REGISTERED[] = "IDL:org/csapi/pam/P_PAM_NOT_REGISTERED:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_NOT_MEMBER[] = "IDL:org/csapi/pam/P_PAM_NOT_MEMBER:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_NO_CAPABILITY[] = "IDL:org/csapi/pam/P_PAM_NO_CAPABILITY:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_MEMBER_EXISTS[] = "IDL:org/csapi/pam/P_PAM_MEMBER_EXISTS:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_IS_CYCLIC[] = "IDL:org/csapi/pam/P_PAM_IS_CYCLIC:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_IDENTITY_EXISTS[] = "IDL:org/csapi/pam/P_PAM_IDENTITY_EXISTS:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_DISASSOCIATED_TYPE[] = "IDL:org/csapi/pam/P_PAM_DISASSOCIATED_TYPE:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_ATTRIBUTE_EXISTS[] = "IDL:org/csapi/pam/P_PAM_ATTRIBUTE_EXISTS:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_ALIAS_NOT_UNIQUE[] = "IDL:org/csapi/pam/P_PAM_ALIAS_NOT_UNIQUE:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_ALIAS_EXISTS[] = "IDL:org/csapi/pam/P_PAM_ALIAS_EXISTS:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_AGENT_EXISTS[] = "IDL:org/csapi/pam/P_PAM_AGENT_EXISTS:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_UNAVAILABLE_INTERFACE[] = "IDL:org/csapi/pam/P_PAM_UNAVAILABLE_INTERFACE:1.0" ;
+static const char user_exception_org_csapi_pam_P_PAM_INVALID_CREDENTIAL[] = "IDL:org/csapi/pam/P_PAM_INVALID_CREDENTIAL:1.0" ;
+static const char user_exception_org_csapi_mmm_P_MMM_INVALID_AUTHENTICATION_INFORMATION[] = "IDL:org/csapi/mmm/P_MMM_INVALID_AUTHENTICATION_INFORMATION:1.0" ;
+static const char user_exception_org_csapi_mmm_P_MMM_INVALID_MAILBOX[] = "IDL:org/csapi/mmm/P_MMM_INVALID_MAILBOX:1.0" ;
+static const char user_exception_org_csapi_mmm_P_MMM_INVALID_DELIVERY_TYPE[] = "IDL:org/csapi/mmm/P_MMM_INVALID_DELIVERY_TYPE:1.0" ;
+static const char user_exception_org_csapi_mmm_P_MMM_MAX_MESSAGE_SIZE_EXCEEDED[] = "IDL:org/csapi/mmm/P_MMM_MAX_MESSAGE_SIZE_EXCEEDED:1.0" ;
+static const char user_exception_org_csapi_mmm_P_MMM_INVALID_FOLDER_ID[] = "IDL:org/csapi/mmm/P_MMM_INVALID_FOLDER_ID:1.0" ;
+static const char user_exception_org_csapi_mmm_P_MMM_INVALID_MESSAGE_ID[] = "IDL:org/csapi/mmm/P_MMM_INVALID_MESSAGE_ID:1.0" ;
+static const char user_exception_org_csapi_mmm_P_MMM_INVALID_PART_ID[] = "IDL:org/csapi/mmm/P_MMM_INVALID_PART_ID:1.0" ;
+static const char user_exception_org_csapi_mmm_P_MMM_DELIVERY_TYPE_ADDRESS_TYPE_MISMATCH[] = "IDL:org/csapi/mmm/P_MMM_DELIVERY_TYPE_ADDRESS_TYPE_MISMATCH:1.0" ;
+static const char user_exception_org_csapi_mmm_P_MMM_DELIVERY_TYPE_MESSAGE_TYPE_MISMATCH[] = "IDL:org/csapi/mmm/P_MMM_DELIVERY_TYPE_MESSAGE_TYPE_MISMATCH:1.0" ;
+static const char user_exception_org_csapi_mmm_P_MMM_INVALID_PROPERTY[] = "IDL:org/csapi/mmm/P_MMM_INVALID_PROPERTY:1.0" ;
+static const char user_exception_org_csapi_mmm_P_MMM_INVALID_DELIVERY_TIME[] = "IDL:org/csapi/mmm/P_MMM_INVALID_DELIVERY_TIME:1.0" ;
+static const char user_exception_org_csapi_mmm_P_MMM_INVALID_VALIDITY_TIME[] = "IDL:org/csapi/mmm/P_MMM_INVALID_VALIDITY_TIME:1.0" ;
+static const char user_exception_org_csapi_mmm_P_MMM_MAX_SUBJECT_SIZE_EXCEEDED[] = "IDL:org/csapi/mmm/P_MMM_MAX_SUBJECT_SIZE_EXCEEDED:1.0" ;
+static const char user_exception_org_csapi_mmm_P_MMM_INFORMATION_NOT_AVAILABLE[] = "IDL:org/csapi/mmm/P_MMM_INFORMATION_NOT_AVAILABLE:1.0" ;
+static const char user_exception_org_csapi_mmm_P_MMM_CANNOT_CANCEL[] = "IDL:org/csapi/mmm/P_MMM_CANNOT_CANCEL:1.0" ;
+static const char user_exception_org_csapi_mmm_P_MMM_INVALID_HEADER[] = "IDL:org/csapi/mmm/P_MMM_INVALID_HEADER:1.0" ;
+
+/* End Exception (containing members) String Declare */
+
+/*
+ * IDL Attributes Start
+ */
+
+
+/*
+ * IDL Attributes End
+ */
+
+/*
+ * IDL Enums Start
+ */
+
+/*
+ * Enum = IDL:org/csapi/TpAddressError:1.0
+ */
+
+static const value_string org_csapi_TpAddressError[] = {
+
+ { 0, "P_ADDRESS_INVALID_UNDEFINED" },
+ { 1, "P_ADDRESS_INVALID_MISSING" },
+ { 2, "P_ADDRESS_INVALID_MISSING_ELEMENT" },
+ { 3, "P_ADDRESS_INVALID_OUT_OF_RANGE" },
+ { 4, "P_ADDRESS_INVALID_INCOMPLETE" },
+ { 5, "P_ADDRESS_INVALID_CANNOT_DECODE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/TpAddressPlan:1.0
+ */
+
+static const value_string org_csapi_TpAddressPlan[] = {
+
+ { 0, "P_ADDRESS_PLAN_NOT_PRESENT" },
+ { 1, "P_ADDRESS_PLAN_UNDEFINED" },
+ { 2, "P_ADDRESS_PLAN_IP" },
+ { 3, "P_ADDRESS_PLAN_MULTICAST" },
+ { 4, "P_ADDRESS_PLAN_UNICAST" },
+ { 5, "P_ADDRESS_PLAN_E164" },
+ { 6, "P_ADDRESS_PLAN_AESA" },
+ { 7, "P_ADDRESS_PLAN_URL" },
+ { 8, "P_ADDRESS_PLAN_NSAP" },
+ { 9, "P_ADDRESS_PLAN_SMTP" },
+ { 10, "P_ADDRESS_PLAN_MSMAIL" },
+ { 11, "P_ADDRESS_PLAN_X400" },
+ { 12, "P_ADDRESS_PLAN_SIP" },
+ { 13, "P_ADDRESS_PLAN_ANY" },
+ { 14, "P_ADDRESS_PLAN_NATIONAL" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/TpAddressPresentation:1.0
+ */
+
+static const value_string org_csapi_TpAddressPresentation[] = {
+
+ { 0, "P_ADDRESS_PRESENTATION_UNDEFINED" },
+ { 1, "P_ADDRESS_PRESENTATION_ALLOWED" },
+ { 2, "P_ADDRESS_PRESENTATION_RESTRICTED" },
+ { 3, "P_ADDRESS_PRESENTATION_ADDRESS_NOT_AVAILABLE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/TpAddressScreening:1.0
+ */
+
+static const value_string org_csapi_TpAddressScreening[] = {
+
+ { 0, "P_ADDRESS_SCREENING_UNDEFINED" },
+ { 1, "P_ADDRESS_SCREENING_USER_VERIFIED_PASSED" },
+ { 2, "P_ADDRESS_SCREENING_USER_NOT_VERIFIED" },
+ { 3, "P_ADDRESS_SCREENING_USER_VERIFIED_FAILED" },
+ { 4, "P_ADDRESS_SCREENING_NETWORK" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/TpCallAoCOrderCategory:1.0
+ */
+
+static const value_string org_csapi_TpCallAoCOrderCategory[] = {
+
+ { 0, "P_CHARGE_ADVICE_INFO" },
+ { 1, "P_CHARGE_PER_TIME" },
+ { 2, "P_CHARGE_NETWORK" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/TpDataSessionQosClass:1.0
+ */
+
+static const value_string org_csapi_TpDataSessionQosClass[] = {
+
+ { 0, "P_DATA_SESSION_QOS_CLASS_CONVERSATIONAL" },
+ { 1, "P_DATA_SESSION_QOS_CLASS_STREAMING" },
+ { 2, "P_DATA_SESSION_QOS_CLASS_INTERACTIVE" },
+ { 3, "P_DATA_SESSION_QOS_CLASS_BACKGROUND" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/TpSimpleAttributeTypeInfo:1.0
+ */
+
+static const value_string org_csapi_TpSimpleAttributeTypeInfo[] = {
+
+ { 0, "P_BOOLEAN" },
+ { 1, "P_OCTET" },
+ { 2, "P_CHAR" },
+ { 3, "P_WCHAR" },
+ { 4, "P_STRING" },
+ { 5, "P_WSTRING" },
+ { 6, "P_INT16" },
+ { 7, "P_UNSIGNED_INT16" },
+ { 8, "P_INT32" },
+ { 9, "P_UNSIGNED_INT32" },
+ { 10, "P_INT64" },
+ { 11, "P_UNSIGNED_INT64" },
+ { 12, "P_FLOAT" },
+ { 13, "P_DOUBLE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/TpAttributeTagInfo:1.0
+ */
+
+static const value_string org_csapi_TpAttributeTagInfo[] = {
+
+ { 0, "P_SIMPLE_TYPE" },
+ { 1, "P_STRUCTURED_TYPE" },
+ { 2, "P_XML_TYPE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/fw/TpAPIUnavailReason:1.0
+ */
+
+static const value_string org_csapi_fw_TpAPIUnavailReason[] = {
+
+ { 0, "API_UNAVAILABLE_UNDEFINED" },
+ { 1, "API_UNAVAILABLE_LOCAL_FAILURE" },
+ { 2, "API_UNAVAILABLE_GATEWAY_FAILURE" },
+ { 3, "API_UNAVAILABLE_OVERLOADED" },
+ { 4, "API_UNAVAILABLE_CLOSED" },
+ { 5, "API_UNAVAILABLE_PROTOCOL_FAILURE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/fw/TpDomainIDType:1.0
+ */
+
+static const value_string org_csapi_fw_TpDomainIDType[] = {
+
+ { 0, "P_FW" },
+ { 1, "P_CLIENT_APPLICATION" },
+ { 2, "P_ENT_OP" },
+ { 3, "P_SERVICE_INSTANCE" },
+ { 4, "P_SERVICE_SUPPLIER" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/fw/TpFwEventName:1.0
+ */
+
+static const value_string org_csapi_fw_TpFwEventName[] = {
+
+ { 0, "P_EVENT_FW_NAME_UNDEFINED" },
+ { 1, "P_EVENT_FW_SERVICE_AVAILABLE" },
+ { 2, "P_EVENT_FW_SERVICE_UNAVAILABLE" },
+ { 3, "P_EVENT_FW_MIGRATION_SERVICE_AVAILABLE" },
+ { 4, "P_EVENT_FW_APP_SESSION_CREATED" },
+ { 5, "P_EVENT_FW_APP_SESSION_TERMINATED" },
+ { 6, "P_EVENT_FW_APP_AGREEMENT_SIGNED" },
+ { 7, "P_EVENT_FW_APP_AGREEMENT_ENDED" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/fw/TpFWExceptionType:1.0
+ */
+
+static const value_string org_csapi_fw_TpFWExceptionType[] = {
+
+ { 0, "P_FW_DUMMY" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/fw/TpFwUnavailReason:1.0
+ */
+
+static const value_string org_csapi_fw_TpFwUnavailReason[] = {
+
+ { 0, "FW_UNAVAILABLE_UNDEFINED" },
+ { 1, "FW_UNAVAILABLE_LOCAL_FAILURE" },
+ { 2, "FW_UNAVAILABLE_GATEWAY_FAILURE" },
+ { 3, "FW_UNAVAILABLE_OVERLOADED" },
+ { 4, "FW_UNAVAILABLE_CLOSED" },
+ { 5, "FW_UNAVAILABLE_PROTOCOL_FAILURE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/fw/TpInterfaceFault:1.0
+ */
+
+static const value_string org_csapi_fw_TpInterfaceFault[] = {
+
+ { 0, "INTERFACE_FAULT_UNDEFINED" },
+ { 1, "INTERFACE_FAULT_LOCAL_FAILURE" },
+ { 2, "INTERFACE_FAULT_GATEWAY_FAILURE" },
+ { 3, "INTERFACE_FAULT_PROTOCOL_ERROR" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/fw/TpLoadLevel:1.0
+ */
+
+static const value_string org_csapi_fw_TpLoadLevel[] = {
+
+ { 0, "LOAD_LEVEL_NORMAL" },
+ { 1, "LOAD_LEVEL_OVERLOAD" },
+ { 2, "LOAD_LEVEL_SEVERE_OVERLOAD" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/fw/TpLoadStatisticEntityType:1.0
+ */
+
+static const value_string org_csapi_fw_TpLoadStatisticEntityType[] = {
+
+ { 0, "P_LOAD_STATISTICS_FW_TYPE" },
+ { 1, "P_LOAD_STATISTICS_SVC_TYPE" },
+ { 2, "P_LOAD_STATISTICS_APP_TYPE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/fw/TpLoadStatisticInfoType:1.0
+ */
+
+static const value_string org_csapi_fw_TpLoadStatisticInfoType[] = {
+
+ { 0, "P_LOAD_STATISTICS_VALID" },
+ { 1, "P_LOAD_STATISTICS_INVALID" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/fw/TpLoadStatusError:1.0
+ */
+
+static const value_string org_csapi_fw_TpLoadStatusError[] = {
+
+ { 0, "LOAD_STATUS_ERROR_UNDEFINED" },
+ { 1, "LOAD_STATUS_ERROR_UNAVAILABLE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/fw/TpServiceTypePropertyMode:1.0
+ */
+
+static const value_string org_csapi_fw_TpServiceTypePropertyMode[] = {
+
+ { 0, "NORMAL" },
+ { 1, "MANDATORY" },
+ { 2, "READONLY" },
+ { 3, "MANDATORY_READONLY" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/fw/TpSvcUnavailReason:1.0
+ */
+
+static const value_string org_csapi_fw_TpSvcUnavailReason[] = {
+
+ { 0, "SERVICE_UNAVAILABLE_UNDEFINED" },
+ { 1, "SERVICE_UNAVAILABLE_LOCAL_FAILURE" },
+ { 2, "SERVICE_UNAVAILABLE_GATEWAY_FAILURE" },
+ { 3, "SERVICE_UNAVAILABLE_OVERLOADED" },
+ { 4, "SERVICE_UNAVAILABLE_CLOSED" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/fw/TpLoadStatisticError:1.0
+ */
+
+static const value_string org_csapi_fw_TpLoadStatisticError[] = {
+
+ { 0, "P_LOAD_INFO_ERROR_UNDEFINED" },
+ { 1, "P_LOAD_INFO_UNAVAILABLE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/fw/TpSubjectType:1.0
+ */
+
+static const value_string org_csapi_fw_TpSubjectType[] = {
+
+ { 0, "P_SUBJECT_UNDEFINED" },
+ { 1, "P_SUBJECT_CLIENT_APP" },
+ { 2, "P_SUBJECT_FW" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/fw/TpFaultStatisticsError:1.0
+ */
+
+static const value_string org_csapi_fw_TpFaultStatisticsError[] = {
+
+ { 0, "P_FAULT_INFO_ERROR_UNDEFINED" },
+ { 1, "P_FAULT_INFO_UNAVAILABLE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/fw/TpSvcAvailStatusReason:1.0
+ */
+
+static const value_string org_csapi_fw_TpSvcAvailStatusReason[] = {
+
+ { 0, "SVC_UNAVAILABLE_UNDEFINED" },
+ { 1, "SVC_UNAVAILABLE_LOCAL_FAILURE" },
+ { 2, "SVC_UNAVAILABLE_GATEWAY_FAILURE" },
+ { 3, "SVC_UNAVAILABLE_OVERLOADED" },
+ { 4, "SVC_UNAVAILABLE_CLOSED" },
+ { 5, "SVC_UNAVAILABLE_NO_RESPONSE" },
+ { 6, "SVC_UNAVAILABLE_SW_UPGRADE" },
+ { 7, "SVC_AVAILABLE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/fw/TpAppAvailStatusReason:1.0
+ */
+
+static const value_string org_csapi_fw_TpAppAvailStatusReason[] = {
+
+ { 0, "APP_UNAVAILABLE_UNDEFINED" },
+ { 1, "APP_UNAVAILABLE_LOCAL_FAILURE" },
+ { 2, "APP_UNAVAILABLE_REMOTE_FAILURE" },
+ { 3, "APP_UNAVAILABLE_OVERLOADED" },
+ { 4, "APP_UNAVAILABLE_CLOSED" },
+ { 5, "APP_UNAVAILABLE_NO_RESPONSE" },
+ { 6, "APP_UNAVAILABLE_SW_UPGRADE" },
+ { 7, "APP_AVAILABLE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/fw/TpMigrationAdditionalInfoType:1.0
+ */
+
+static const value_string org_csapi_fw_TpMigrationAdditionalInfoType[] = {
+
+ { 0, "P_MIGRATION_INFO_UNDEFINED" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/fw/TpFwAvailStatusReason:1.0
+ */
+
+static const value_string org_csapi_fw_TpFwAvailStatusReason[] = {
+
+ { 0, "FRAMEWORK_UNAVAILABLE_UNDEFINED" },
+ { 1, "FRAMEWORK_UNAVAILABLE_LOCAL_FAILURE" },
+ { 2, "FRAMEWORK_UNAVAILABLE_REMOTE_FAILURE" },
+ { 3, "FRAMEWORK_UNAVAILABLE_OVERLOADED" },
+ { 4, "FRAMEWORK_UNAVAILABLE_CLOSED" },
+ { 5, "FRAMEWORK_UNAVAILABLE_PROTOCOL_FAILURE" },
+ { 6, "FRAMEWORK_UNAVAILABLE_SW_UPGRADE" },
+ { 7, "FRAMEWORK_AVAILABLE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/ui/TpUIVariablePartType:1.0
+ */
+
+static const value_string org_csapi_ui_TpUIVariablePartType[] = {
+
+ { 0, "P_UI_VARIABLE_PART_INT" },
+ { 1, "P_UI_VARIABLE_PART_ADDRESS" },
+ { 2, "P_UI_VARIABLE_PART_TIME" },
+ { 3, "P_UI_VARIABLE_PART_DATE" },
+ { 4, "P_UI_VARIABLE_PART_PRICE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/ui/TpUIReport:1.0
+ */
+
+static const value_string org_csapi_ui_TpUIReport[] = {
+
+ { 0, "P_UI_REPORT_UNDEFINED" },
+ { 1, "P_UI_REPORT_INFO_SENT" },
+ { 2, "P_UI_REPORT_INFO_COLLECTED" },
+ { 3, "P_UI_REPORT_NO_INPUT" },
+ { 4, "P_UI_REPORT_TIMEOUT" },
+ { 5, "P_UI_REPORT_MESSAGE_STORED" },
+ { 6, "P_UI_REPORT_MESSAGE_NOT_STORED" },
+ { 7, "P_UI_REPORT_MESSAGE_DELETED" },
+ { 8, "P_UI_REPORT_MESSAGE_NOT_DELETED" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/ui/TpUIInfoType:1.0
+ */
+
+static const value_string org_csapi_ui_TpUIInfoType[] = {
+
+ { 0, "P_UI_INFO_ID" },
+ { 1, "P_UI_INFO_DATA" },
+ { 2, "P_UI_INFO_ADDRESS" },
+ { 3, "P_UI_INFO_BIN_DATA" },
+ { 4, "P_UI_INFO_UUENCODED" },
+ { 5, "P_UI_INFO_MIME" },
+ { 6, "P_UI_INFO_WAVE" },
+ { 7, "P_UI_INFO_AU" },
+ { 8, "P_UI_INFO_VXML" },
+ { 9, "P_UI_INFO_SYNTHESIS" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/ui/TpUIFault:1.0
+ */
+
+static const value_string org_csapi_ui_TpUIFault[] = {
+
+ { 0, "P_UI_FAULT_UNDEFINED" },
+ { 1, "P_UI_CALL_ENDED" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/ui/TpUIEventInfoDataType:1.0
+ */
+
+static const value_string org_csapi_ui_TpUIEventInfoDataType[] = {
+
+ { 0, "P_UI_EVENT_DATA_TYPE_UNDEFINED" },
+ { 1, "P_UI_EVENT_DATA_TYPE_UNSPECIFIED" },
+ { 2, "P_UI_EVENT_DATA_TYPE_TEXT" },
+ { 3, "P_UI_EVENT_DATA_TYPE_USSD_DATA" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/ui/TpUIError:1.0
+ */
+
+static const value_string org_csapi_ui_TpUIError[] = {
+
+ { 0, "P_UI_ERROR_UNDEFINED" },
+ { 1, "P_UI_ERROR_ILLEGAL_INFO" },
+ { 2, "P_UI_ERROR_ID_NOT_FOUND" },
+ { 3, "P_UI_ERROR_RESOURCE_UNAVAILABLE" },
+ { 4, "P_UI_ERROR_ILLEGAL_RANGE" },
+ { 5, "P_UI_ERROR_IMPROPER_USER_RESPONSE" },
+ { 6, "P_UI_ERROR_ABANDON" },
+ { 7, "P_UI_ERROR_NO_OPERATION_ACTIVE" },
+ { 8, "P_UI_ERROR_NO_SPACE_AVAILABLE" },
+ { 9, "P_UI_ERROR_RESOURCE_TIMEOUT" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/ui/TpUICollectMode:1.0
+ */
+
+static const value_string org_csapi_ui_TpUICollectMode[] = {
+
+ { 0, "P_UI_COLLECT_MODE_DTMF" },
+ { 1, "P_UI_COLLECT_MODE_VOICE" },
+ { 2, "P_UI_COLLECT_MODE_DTMFANDVOICE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/ui/TpUIPronounceType:1.0
+ */
+
+static const value_string org_csapi_ui_TpUIPronounceType[] = {
+
+ { 0, "P_UI_PRONOUNCE_IPA" },
+ { 1, "P_UI_PRONOUNCE_SOUNDSLIKE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/ui/TpUISynthesisRange:1.0
+ */
+
+static const value_string org_csapi_ui_TpUISynthesisRange[] = {
+
+ { 0, "P_UI_RANGE_CALMER" },
+ { 1, "P_UI_RANGE_CALM" },
+ { 2, "P_UI_RANGE_AVERAGE" },
+ { 3, "P_UI_RANGE_EXCITED" },
+ { 4, "P_UI_RANGE_MORE_EXCITED" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/ui/TpUISynthesisRate:1.0
+ */
+
+static const value_string org_csapi_ui_TpUISynthesisRate[] = {
+
+ { 0, "P_UI_RATE_SLOW" },
+ { 1, "P_UI_RATE_AVERAGE" },
+ { 2, "P_UI_RATE_FAST" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/ui/TpUISynthesisAge:1.0
+ */
+
+static const value_string org_csapi_ui_TpUISynthesisAge[] = {
+
+ { 0, "P_UI_AGE_CHILD" },
+ { 1, "P_UI_AGE_YOUNG_ADULT" },
+ { 2, "P_UI_AGE_ADULT" },
+ { 3, "P_UI_AGE_OLDER_ADULT" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/ui/TpUISynthesisGender:1.0
+ */
+
+static const value_string org_csapi_ui_TpUISynthesisGender[] = {
+
+ { 0, "P_UI_GENDER_MALE" },
+ { 1, "P_UI_GENDER_FEMALE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/TpReleaseCause:1.0
+ */
+
+static const value_string org_csapi_cc_TpReleaseCause[] = {
+
+ { 0, "P_UNDEFINED" },
+ { 1, "P_USER_NOT_AVAILABLE" },
+ { 2, "P_BUSY" },
+ { 3, "P_NO_ANSWER" },
+ { 4, "P_NOT_REACHABLE" },
+ { 5, "P_ROUTING_FAILURE" },
+ { 6, "P_PREMATURE_DISCONNECT" },
+ { 7, "P_DISCONNECTED" },
+ { 8, "P_CALL_RESTRICTED" },
+ { 9, "P_UNAVAILABLE_RESOURCE" },
+ { 10, "P_GENERAL_FAILURE" },
+ { 11, "P_TIMER_EXPIRY" },
+ { 12, "P_UNSUPPORTED_MEDIA" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/TpCallMonitorMode:1.0
+ */
+
+static const value_string org_csapi_cc_TpCallMonitorMode[] = {
+
+ { 0, "P_CALL_MONITOR_MODE_INTERRUPT" },
+ { 1, "P_CALL_MONITOR_MODE_NOTIFY" },
+ { 2, "P_CALL_MONITOR_MODE_DO_NOT_MONITOR" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/TpCallBearerService:1.0
+ */
+
+static const value_string org_csapi_cc_TpCallBearerService[] = {
+
+ { 0, "P_CALL_BEARER_SERVICE_UNKNOWN" },
+ { 1, "P_CALL_BEARER_SERVICE_SPEECH" },
+ { 2, "P_CALL_BEARER_SERVICE_DIGITALUNRESTRICTED" },
+ { 3, "P_CALL_BEARER_SERVICE_DIGITALRESTRICTED" },
+ { 4, "P_CALL_BEARER_SERVICE_AUDIO" },
+ { 5, "P_CALL_BEARER_SERVICE_DIGITALUNRESTRICTEDTONES" },
+ { 6, "P_CALL_BEARER_SERVICE_VIDEO" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/TpCallChargeOrderCategory:1.0
+ */
+
+static const value_string org_csapi_cc_TpCallChargeOrderCategory[] = {
+
+ { 0, "P_CALL_CHARGE_TRANSPARENT" },
+ { 1, "P_CALL_CHARGE_PREDEFINED_SET" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/TpCallErrorType:1.0
+ */
+
+static const value_string org_csapi_cc_TpCallErrorType[] = {
+
+ { 0, "P_CALL_ERROR_UNDEFINED" },
+ { 1, "P_CALL_ERROR_INVALID_ADDRESS" },
+ { 2, "P_CALL_ERROR_INVALID_STATE" },
+ { 3, "P_CALL_ERROR_RESOURCE_UNAVAILABLE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/TpCallLoadControlMechanismType:1.0
+ */
+
+static const value_string org_csapi_cc_TpCallLoadControlMechanismType[] = {
+
+ { 0, "P_CALL_LOAD_CONTROL_PER_INTERVAL" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/TpCallNetworkAccessType:1.0
+ */
+
+static const value_string org_csapi_cc_TpCallNetworkAccessType[] = {
+
+ { 0, "P_CALL_NETWORK_ACCESS_TYPE_UNKNOWN" },
+ { 1, "P_CALL_NETWORK_ACCESS_TYPE_POT" },
+ { 2, "P_CALL_NETWORK_ACCESS_TYPE_ISDN" },
+ { 3, "P_CALL_NETWORK_ACCESS_TYPE_DIALUPINTERNET" },
+ { 4, "P_CALL_NETWORK_ACCESS_TYPE_XDSL" },
+ { 5, "P_CALL_NETWORK_ACCESS_TYPE_WIRELESS" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/TpCallPartyCategory:1.0
+ */
+
+static const value_string org_csapi_cc_TpCallPartyCategory[] = {
+
+ { 0, "P_CALL_PARTY_CATEGORY_UNKNOWN" },
+ { 1, "P_CALL_PARTY_CATEGORY_OPERATOR_F" },
+ { 2, "P_CALL_PARTY_CATEGORY_OPERATOR_E" },
+ { 3, "P_CALL_PARTY_CATEGORY_OPERATOR_G" },
+ { 4, "P_CALL_PARTY_CATEGORY_OPERATOR_R" },
+ { 5, "P_CALL_PARTY_CATEGORY_OPERATOR_S" },
+ { 6, "P_CALL_PARTY_CATEGORY_ORDINARY_SUB" },
+ { 7, "P_CALL_PARTY_CATEGORY_PRIORITY_SUB" },
+ { 8, "P_CALL_PARTY_CATEGORY_DATA_CALL" },
+ { 9, "P_CALL_PARTY_CATEGORY_TEST_CALL" },
+ { 10, "P_CALL_PARTY_CATEGORY_PAYPHONE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/TpCallServiceCodeType:1.0
+ */
+
+static const value_string org_csapi_cc_TpCallServiceCodeType[] = {
+
+ { 0, "P_CALL_SERVICE_CODE_UNDEFINED" },
+ { 1, "P_CALL_SERVICE_CODE_DIGITS" },
+ { 2, "P_CALL_SERVICE_CODE_FACILITY" },
+ { 3, "P_CALL_SERVICE_CODE_U2U" },
+ { 4, "P_CALL_SERVICE_CODE_HOOKFLASH" },
+ { 5, "P_CALL_SERVICE_CODE_RECALL" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/TpCallTeleService:1.0
+ */
+
+static const value_string org_csapi_cc_TpCallTeleService[] = {
+
+ { 0, "P_CALL_TELE_SERVICE_UNKNOWN" },
+ { 1, "P_CALL_TELE_SERVICE_TELEPHONY" },
+ { 2, "P_CALL_TELE_SERVICE_FAX_2_3" },
+ { 3, "P_CALL_TELE_SERVICE_FAX_4_I" },
+ { 4, "P_CALL_TELE_SERVICE_FAX_4_II_III" },
+ { 5, "P_CALL_TELE_SERVICE_VIDEOTEX_SYN" },
+ { 6, "P_CALL_TELE_SERVICE_VIDEOTEX_INT" },
+ { 7, "P_CALL_TELE_SERVICE_TELEX" },
+ { 8, "P_CALL_TELE_SERVICE_MHS" },
+ { 9, "P_CALL_TELE_SERVICE_OSI" },
+ { 10, "P_CALL_TELE_SERVICE_FTAM" },
+ { 11, "P_CALL_TELE_SERVICE_VIDEO" },
+ { 12, "P_CALL_TELE_SERVICE_VIDEO_CONF" },
+ { 13, "P_CALL_TELE_SERVICE_AUDIOGRAPH_CONF" },
+ { 14, "P_CALL_TELE_SERVICE_MULTIMEDIA" },
+ { 15, "P_CALL_TELE_SERVICE_CS_INI_H221" },
+ { 16, "P_CALL_TELE_SERVICE_CS_SUB_H221" },
+ { 17, "P_CALL_TELE_SERVICE_CS_INI_CALL" },
+ { 18, "P_CALL_TELE_SERVICE_DATATRAFFIC" },
+ { 19, "P_CALL_TELE_SERVICE_EMERGENCY_CALLS" },
+ { 20, "P_CALL_TELE_SERVICE_SMS_MT_PP" },
+ { 21, "P_CALL_TELE_SERVICE_SMS_MO_PP" },
+ { 22, "P_CALL_TELE_SERVICE_CELL_BROADCAST" },
+ { 23, "P_CALL_TELE_SERVICE_ALT_SPEECH_FAX_3" },
+ { 24, "P_CALL_TELE_SERVICE_AUTOMATIC_FAX_3" },
+ { 25, "P_CALL_TELE_SERVICE_VOICE_GROUP_CALL" },
+ { 26, "P_CALL_TELE_SERVICE_VOICE_BROADCAST" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/TpCallTreatmentType:1.0
+ */
+
+static const value_string org_csapi_cc_TpCallTreatmentType[] = {
+
+ { 0, "P_CALL_TREATMENT_DEFAULT" },
+ { 1, "P_CALL_TREATMENT_RELEASE" },
+ { 2, "P_CALL_TREATMENT_SIAR" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/TpCallPartyToChargeType:1.0
+ */
+
+static const value_string org_csapi_cc_TpCallPartyToChargeType[] = {
+
+ { 0, "P_CALL_PARTY_ORIGINATING" },
+ { 1, "P_CALL_PARTY_DESTINATION" },
+ { 2, "P_CALL_PARTY_SPECIAL" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/gccs/TpCallNotificationType:1.0
+ */
+
+static const value_string org_csapi_cc_gccs_TpCallNotificationType[] = {
+
+ { 0, "P_ORIGINATING" },
+ { 1, "P_TERMINATING" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/gccs/TpCallAppInfoType:1.0
+ */
+
+static const value_string org_csapi_cc_gccs_TpCallAppInfoType[] = {
+
+ { 0, "P_CALL_APP_UNDEFINED" },
+ { 1, "P_CALL_APP_ALERTING_MECHANISM" },
+ { 2, "P_CALL_APP_NETWORK_ACCESS_TYPE" },
+ { 3, "P_CALL_APP_TELE_SERVICE" },
+ { 4, "P_CALL_APP_BEARER_SERVICE" },
+ { 5, "P_CALL_APP_PARTY_CATEGORY" },
+ { 6, "P_CALL_APP_PRESENTATION_ADDRESS" },
+ { 7, "P_CALL_APP_GENERIC_INFO" },
+ { 8, "P_CALL_APP_ADDITIONAL_ADDRESS" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/gccs/TpCallReportType:1.0
+ */
+
+static const value_string org_csapi_cc_gccs_TpCallReportType[] = {
+
+ { 0, "P_CALL_REPORT_UNDEFINED" },
+ { 1, "P_CALL_REPORT_PROGRESS" },
+ { 2, "P_CALL_REPORT_ALERTING" },
+ { 3, "P_CALL_REPORT_ANSWER" },
+ { 4, "P_CALL_REPORT_BUSY" },
+ { 5, "P_CALL_REPORT_NO_ANSWER" },
+ { 6, "P_CALL_REPORT_DISCONNECT" },
+ { 7, "P_CALL_REPORT_REDIRECTED" },
+ { 8, "P_CALL_REPORT_SERVICE_CODE" },
+ { 9, "P_CALL_REPORT_ROUTING_FAILURE" },
+ { 10, "P_CALL_REPORT_QUEUED" },
+ { 11, "P_CALL_REPORT_NOT_REACHABLE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/gccs/TpCallFault:1.0
+ */
+
+static const value_string org_csapi_cc_gccs_TpCallFault[] = {
+
+ { 0, "P_CALL_FAULT_UNDEFINED" },
+ { 1, "P_CALL_TIMEOUT_ON_RELEASE" },
+ { 2, "P_CALL_TIMEOUT_ON_INTERRUPT" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/TpCallAppInfoType:1.0
+ */
+
+static const value_string org_csapi_cc_TpCallAppInfoType[] = {
+
+ { 0, "P_CALL_APP_UNDEFINED" },
+ { 1, "P_CALL_APP_ALERTING_MECHANISM" },
+ { 2, "P_CALL_APP_NETWORK_ACCESS_TYPE" },
+ { 3, "P_CALL_APP_TELE_SERVICE" },
+ { 4, "P_CALL_APP_BEARER_SERVICE" },
+ { 5, "P_CALL_APP_PARTY_CATEGORY" },
+ { 6, "P_CALL_APP_PRESENTATION_ADDRESS" },
+ { 7, "P_CALL_APP_GENERIC_INFO" },
+ { 8, "P_CALL_APP_ADDITIONAL_ADDRESS" },
+ { 9, "P_CALL_APP_ORIGINAL_DESTINATION_ADDRESS" },
+ { 10, "P_CALL_APP_REDIRECTING_ADDRESS" },
+ { 11, "P_CALL_APP_HIGH_PROBABILITY_COMPLETION" },
+ { 12, "P_CALL_APP_CARRIER" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/TpCallEventType:1.0
+ */
+
+static const value_string org_csapi_cc_TpCallEventType[] = {
+
+ { 0, "P_CALL_EVENT_UNDEFINED" },
+ { 1, "P_CALL_EVENT_ORIGINATING_CALL_ATTEMPT" },
+ { 2, "P_CALL_EVENT_ORIGINATING_CALL_ATTEMPT_AUTHORISED" },
+ { 3, "P_CALL_EVENT_ADDRESS_COLLECTED" },
+ { 4, "P_CALL_EVENT_ADDRESS_ANALYSED" },
+ { 5, "P_CALL_EVENT_ORIGINATING_SERVICE_CODE" },
+ { 6, "P_CALL_EVENT_ORIGINATING_RELEASE" },
+ { 7, "P_CALL_EVENT_TERMINATING_CALL_ATTEMPT" },
+ { 8, "P_CALL_EVENT_TERMINATING_CALL_ATTEMPT_AUTHORISED" },
+ { 9, "P_CALL_EVENT_ALERTING" },
+ { 10, "P_CALL_EVENT_ANSWER" },
+ { 11, "P_CALL_EVENT_TERMINATING_RELEASE" },
+ { 12, "P_CALL_EVENT_REDIRECTED" },
+ { 13, "P_CALL_EVENT_TERMINATING_SERVICE_CODE" },
+ { 14, "P_CALL_EVENT_QUEUED" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/TpCallLegAttachMechanism:1.0
+ */
+
+static const value_string org_csapi_cc_TpCallLegAttachMechanism[] = {
+
+ { 0, "P_CALLLEG_ATTACH_IMPLICITLY" },
+ { 1, "P_CALLLEG_ATTACH_EXPLICITLY" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/TpCarrierSelectionField:1.0
+ */
+
+static const value_string org_csapi_cc_TpCarrierSelectionField[] = {
+
+ { 0, "P_CIC_UNDEFINED" },
+ { 1, "P_CIC_NO_INPUT" },
+ { 2, "P_CIC_INPUT" },
+ { 3, "P_CIC_UNDETERMINED" },
+ { 4, "P_CIC_NOT_PRESCRIBED" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/mpccs/TpAppMultiPartyCallBackRefType:1.0
+ */
+
+static const value_string org_csapi_cc_mpccs_TpAppMultiPartyCallBackRefType[] = {
+
+ { 0, "P_APP_CALLBACK_UNDEFINED" },
+ { 1, "P_APP_MULTIPARTY_CALL_CALLBACK" },
+ { 2, "P_APP_CALL_LEG_CALLBACK" },
+ { 3, "P_APP_CALL_AND_CALL_LEG_CALLBACK" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/mmccs/TpMediaStreamDirection:1.0
+ */
+
+static const value_string org_csapi_cc_mmccs_TpMediaStreamDirection[] = {
+
+ { 0, "P_SEND_ONLY" },
+ { 1, "P_RECEIVE_ONLY" },
+ { 2, "P_SEND_RECEIVE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/mmccs/TpMediaStreamEventType:1.0
+ */
+
+static const value_string org_csapi_cc_mmccs_TpMediaStreamEventType[] = {
+
+ { 0, "P_MEDIA_STREAM_ADDED" },
+ { 1, "P_MEDIA_STREAM_SUBTRACTED" },
+ { 2, "P_MEDIA_STREAM_QOS_CLASS_CHANGED" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/mmccs/TpMediaStreamDataTypeRequestType:1.0
+ */
+
+static const value_string org_csapi_cc_mmccs_TpMediaStreamDataTypeRequestType[] = {
+
+ { 0, "P_AUDIO_CAPABILITIES" },
+ { 1, "P_VIDEO_CAPABILITIES" },
+ { 2, "P_DATA_CAPABILITIES" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/mmccs/TpAppMultiMediaCallBackRefType:1.0
+ */
+
+static const value_string org_csapi_cc_mmccs_TpAppMultiMediaCallBackRefType[] = {
+
+ { 0, "P_APP_CALLBACK_UNDEFINED" },
+ { 1, "P_APP_MULTIMEDIA_CALL_CALLBACK" },
+ { 2, "P_APP_CALL_LEG_CALLBACK" },
+ { 3, "P_APP_CALL_AND_CALL_LEG_CALLBACK" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/cccs/TpConfPolicyType:1.0
+ */
+
+static const value_string org_csapi_cc_cccs_TpConfPolicyType[] = {
+
+ { 0, "P_CONFERENCE_POLICY_UNDEFINED" },
+ { 1, "P_CONFERENCE_POLICY_MONOMEDIA" },
+ { 2, "P_CONFERENCE_POLICY_MULTIMEDIA" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cc/cccs/TpVideoHandlingType:1.0
+ */
+
+static const value_string org_csapi_cc_cccs_TpVideoHandlingType[] = {
+
+ { 0, "P_MIXED_VIDEO" },
+ { 1, "P_SWITCHED_VIDEO_CHAIR_CONTROLLED" },
+ { 2, "P_SWITCHED_VIDEO_VOICE_CONTROLLED" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/ui/TpUITargetObjectType:1.0
+ */
+
+static const value_string org_csapi_ui_TpUITargetObjectType[] = {
+
+ { 0, "P_UI_TARGET_OBJECT_CALL" },
+ { 1, "P_UI_TARGET_OBJECT_MULTI_PARTY_CALL" },
+ { 2, "P_UI_TARGET_OBJECT_CALL_LEG" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mm/TpLocationPriority:1.0
+ */
+
+static const value_string org_csapi_mm_TpLocationPriority[] = {
+
+ { 0, "P_M_NORMAL" },
+ { 1, "P_M_HIGH" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mm/TpLocationResponseIndicator:1.0
+ */
+
+static const value_string org_csapi_mm_TpLocationResponseIndicator[] = {
+
+ { 0, "P_M_NO_DELAY" },
+ { 1, "P_M_LOW_DELAY" },
+ { 2, "P_M_DELAY_TOLERANT" },
+ { 3, "P_M_USE_TIMER_VALUE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mm/TpLocationTriggerCriteria:1.0
+ */
+
+static const value_string org_csapi_mm_TpLocationTriggerCriteria[] = {
+
+ { 0, "P_UL_ENTERING_AREA" },
+ { 1, "P_UL_LEAVING_AREA" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mm/TpLocationType:1.0
+ */
+
+static const value_string org_csapi_mm_TpLocationType[] = {
+
+ { 0, "P_M_CURRENT" },
+ { 1, "P_M_CURRENT_OR_LAST_KNOWN" },
+ { 2, "P_M_INITIAL" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mm/TpLocationUncertaintyShape:1.0
+ */
+
+static const value_string org_csapi_mm_TpLocationUncertaintyShape[] = {
+
+ { 0, "P_M_SHAPE_NONE" },
+ { 1, "P_M_SHAPE_CIRCLE" },
+ { 2, "P_M_SHAPE_CIRCLE_SECTOR" },
+ { 3, "P_M_SHAPE_CIRCLE_ARC_STRIPE" },
+ { 4, "P_M_SHAPE_ELLIPSE" },
+ { 5, "P_M_SHAPE_ELLIPSE_SECTOR" },
+ { 6, "P_M_SHAPE_ELLIPSE_ARC_STRIPE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mm/TpMobilityDiagnostic:1.0
+ */
+
+static const value_string org_csapi_mm_TpMobilityDiagnostic[] = {
+
+ { 0, "P_M_NO_INFORMATION" },
+ { 1, "P_M_APPL_NOT_IN_PRIV_EXCEPT_LST" },
+ { 2, "P_M_CALL_TO_USER_NOT_SETUP" },
+ { 3, "P_M_PRIVACY_OVERRIDE_NOT_APPLIC" },
+ { 4, "P_M_DISALL_BY_LOCAL_REGULAT_REQ" },
+ { 5, "P_M_CONGESTION" },
+ { 6, "P_M_INSUFFICIENT_RESOURCES" },
+ { 7, "P_M_INSUFFICIENT_MEAS_DATA" },
+ { 8, "P_M_INCONSISTENT_MEAS_DATA" },
+ { 9, "P_M_LOC_PROC_NOT_COMPLETED" },
+ { 10, "P_M_LOC_PROC_NOT_SUPP_BY_USER" },
+ { 11, "P_M_QOS_NOT_ATTAINABLE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mm/TpMobilityError:1.0
+ */
+
+static const value_string org_csapi_mm_TpMobilityError[] = {
+
+ { 0, "P_M_OK" },
+ { 1, "P_M_SYSTEM_FAILURE" },
+ { 2, "P_M_UNAUTHORIZED_NETWORK" },
+ { 3, "P_M_UNAUTHORIZED_APPLICATION" },
+ { 4, "P_M_UNKNOWN_SUBSCRIBER" },
+ { 5, "P_M_ABSENT_SUBSCRIBER" },
+ { 6, "P_M_POSITION_METHOD_FAILURE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mm/TpMobilityStopScope:1.0
+ */
+
+static const value_string org_csapi_mm_TpMobilityStopScope[] = {
+
+ { 0, "P_M_ALL_IN_ASSIGNMENT" },
+ { 1, "P_M_SPECIFIED_USERS" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mm/TpTerminalType:1.0
+ */
+
+static const value_string org_csapi_mm_TpTerminalType[] = {
+
+ { 0, "P_M_FIXED" },
+ { 1, "P_M_MOBILE" },
+ { 2, "P_M_IP" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mm/TpUserLocationEmergencyTrigger:1.0
+ */
+
+static const value_string org_csapi_mm_TpUserLocationEmergencyTrigger[] = {
+
+ { 0, "P_ULE_CALL_ORIGINATION" },
+ { 1, "P_ULE_CALL_RELEASE" },
+ { 2, "P_ULE_LOCATION_REQUEST" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mm/TpUserStatusIndicator:1.0
+ */
+
+static const value_string org_csapi_mm_TpUserStatusIndicator[] = {
+
+ { 0, "P_US_REACHABLE" },
+ { 1, "P_US_NOT_REACHABLE" },
+ { 2, "P_US_BUSY" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mm/TpAuthStatusIndicator:1.0
+ */
+
+static const value_string org_csapi_mm_TpAuthStatusIndicator[] = {
+
+ { 0, "P_AUTHENTICATED_FOR_NETWORK_ONLY" },
+ { 1, "P_AUTHENTICATED_FOR_NETWORK_AND_IP_SERVICES" },
+ { 2, "P_NOT_AUTHENTICATED" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mm/TpAccessTechnology:1.0
+ */
+
+static const value_string org_csapi_mm_TpAccessTechnology[] = {
+
+ { 0, "P_MOBILE_ACCESS_PS" },
+ { 1, "P_MOBILE_ACCESS_CS" },
+ { 2, "P_FIXED_ACCESS" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mm/TpRoamingStatus:1.0
+ */
+
+static const value_string org_csapi_mm_TpRoamingStatus[] = {
+
+ { 0, "P_UNKNOWN_ROAMING_STATUS" },
+ { 1, "P_HOME_USER" },
+ { 2, "P_NATIONAL_ROAMING" },
+ { 3, "P_INTERNATIONAL_ROAMING" },
+ { 4, "P_OPERATOR_ROAMING" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mm/TpBindingEntryType:1.0
+ */
+
+static const value_string org_csapi_mm_TpBindingEntryType[] = {
+
+ { 0, "P_UB_UNDEFINED" },
+ { 1, "P_UB_EXPIRES" },
+ { 2, "P_UB_CONTACT_ADDRESS" },
+ { 3, "P_UB_PREFERENCE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/termcap/TpTerminalCapabilitiesError:1.0
+ */
+
+static const value_string org_csapi_termcap_TpTerminalCapabilitiesError[] = {
+
+ { 0, "P_TERMCAP_ERROR_UNDEFINED" },
+ { 1, "P_TERMCAP_INVALID_TERMINALID" },
+ { 2, "P_TERMCAP_SYSTEM_FAILURE" },
+ { 3, "P_TERMCAP_INFO_UNAVAILABLE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/termcap/TpTerminalCapabilityScopeType:1.0
+ */
+
+static const value_string org_csapi_termcap_TpTerminalCapabilityScopeType[] = {
+
+ { 0, "P_TERMINAL_CAPABILITY_SCOPE_TYPE_UNDEFINED" },
+ { 1, "P_TERMINAL_CAPABILITY_SCOPE_TYPE_CCPP" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/dsc/TpDataSessionChargeOrderCategory:1.0
+ */
+
+static const value_string org_csapi_dsc_TpDataSessionChargeOrderCategory[] = {
+
+ { 0, "P_DATA_SESSION_CHARGE_PER_VOLUME" },
+ { 1, "P_DATA_SESSION_CHARGE_NETWORK" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/dsc/TpDataSessionErrorType:1.0
+ */
+
+static const value_string org_csapi_dsc_TpDataSessionErrorType[] = {
+
+ { 0, "P_DATA_SESSION_ERROR_UNDEFINED" },
+ { 1, "P_DATA_SESSION_ERROR_INVALID_ADDRESS" },
+ { 2, "P_DATA_SESSION_ERROR_INVALID_STATE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/dsc/TpDataSessionFault:1.0
+ */
+
+static const value_string org_csapi_dsc_TpDataSessionFault[] = {
+
+ { 0, "P_DATA_SESSION_FAULT_UNDEFINED" },
+ { 1, "P_DATA_SESSION_FAULT_USER_ABORTED" },
+ { 2, "P_DATA_SESSION_TIMEOUT_ON_RELEASE" },
+ { 3, "P_DATA_SESSION_TIMEOUT_ON_INTERRUPT" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/dsc/TpDataSessionMonitorMode:1.0
+ */
+
+static const value_string org_csapi_dsc_TpDataSessionMonitorMode[] = {
+
+ { 0, "P_DATA_SESSION_MONITOR_MODE_INTERRUPT" },
+ { 1, "P_DATA_SESSION_MONITOR_MODE_NOTIFY" },
+ { 2, "P_DATA_SESSION_MONITOR_MODE_DO_NOT_MONITOR" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/dsc/TpDataSessionReportType:1.0
+ */
+
+static const value_string org_csapi_dsc_TpDataSessionReportType[] = {
+
+ { 0, "P_DATA_SESSION_REPORT_UNDEFINED" },
+ { 1, "P_DATA_SESSION_REPORT_CONNECTED" },
+ { 2, "P_DATA_SESSION_REPORT_DISCONNECT" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/gms/TpMessagingFault:1.0
+ */
+
+static const value_string org_csapi_gms_TpMessagingFault[] = {
+
+ { 0, "P_MESSAGING_FAULT_UNDEFINED" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/gms/TpMessagingEventName:1.0
+ */
+
+static const value_string org_csapi_gms_TpMessagingEventName[] = {
+
+ { 0, "P_EVENT_GMS_NAME_UNDEFINED" },
+ { 1, "P_EVENT_GMS_NEW_MESSAGE_ARRIVED" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/gms/TpMessageStatus:1.0
+ */
+
+static const value_string org_csapi_gms_TpMessageStatus[] = {
+
+ { 0, "P_MESSAGING_MESSAGE_STATUS_READ_MESSAGE" },
+ { 1, "P_MESSAGING_MESSAGE_STATUS_UNREAD_MESSAGE" },
+ { 2, "P_MESSAGING_MESSAGE_STATUS_FORWARDED_MESSAGE" },
+ { 3, "P_MESSAGING_MESSAGE_STATUS_REPLIED_TO_MESSAGE" },
+ { 4, "P_MESSAGING_MESSAGE_STATUS_SAVED_OR_UNSENT_MESSAGE" },
+ { 5, "P_MESSAGING_MESSAGE_STATUS_NOTIFICATION_THAT_A_MESSAGE_WAS_DELIVERED" },
+ { 6, "P_MESSAGING_MESSAGE_STATUS_NOTIFICATION_THAT_A_MESSAGE_WAS_READ" },
+ { 7, "P_MESSAGING_MESSAGE_STATUS_NOTIFICATION_THAT_A_MESSAGE_WAS_NOT_DELIVERED" },
+ { 8, "P_MESSAGING_MESSAGE_STATUS_NOTIFICATION_THAT_A_MESSAGE_WAS_NOT_READ" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/gms/TpMessagePriority:1.0
+ */
+
+static const value_string org_csapi_gms_TpMessagePriority[] = {
+
+ { 0, "P_MESSAGING_MESSAGE_PRIORITY_UNDEFINED" },
+ { 1, "P_MESSAGING_MESSAGE_PRIORITY_HIGH" },
+ { 2, "P_MESSAGING_MESSAGE_PRIORITY_LOW" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/gms/TpMessageInfoPropertyName:1.0
+ */
+
+static const value_string org_csapi_gms_TpMessageInfoPropertyName[] = {
+
+ { 0, "P_MESSAGING_MESSAGE_UNDEFINED" },
+ { 1, "P_MESSAGING_MESSAGE_ID" },
+ { 2, "P_MESSAGING_MESSAGE_SUBJECT" },
+ { 3, "P_MESSAGING_MESSAGE_DATE_SENT" },
+ { 4, "P_MESSAGING_MESSAGE_DATE_RECEIVED" },
+ { 5, "P_MESSAGING_MESSAGE_DATE_CHANGED" },
+ { 6, "P_MESSAGING_MESSAGE_SENT_FROM" },
+ { 7, "P_MESSAGING_MESSAGE_SENT_TO" },
+ { 8, "P_MESSAGING_MESSAGE_CC_TO" },
+ { 9, "P_MESSAGING_MESSAGE_BCC_TO" },
+ { 10, "P_MESSAGING_MESSAGE_SIZE" },
+ { 11, "P_MESSAGING_MESSAGE_PRIORITY" },
+ { 12, "P_MESSAGING_MESSAGE_FORMAT" },
+ { 13, "P_MESSAGING_MESSAGE_FOLDER" },
+ { 14, "P_MESSAGING_MESSAGE_STATUS" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/gms/TpMessageFormat:1.0
+ */
+
+static const value_string org_csapi_gms_TpMessageFormat[] = {
+
+ { 0, "P_MESSAGING_MESSAGE_FORMAT_UNDEFINED" },
+ { 1, "P_MESSAGING_MESSAGE_FORMAT_TEXT" },
+ { 2, "P_MESSAGING_MESSAGE_FORMAT_BINARY" },
+ { 3, "P_MESSAGING_MESSAGE_FORMAT_UUENCODED" },
+ { 4, "P_MESSAGING_MESSAGE_FORMAT_MIME" },
+ { 5, "P_MESSAGING_MESSAGE_FORMAT_WAVE" },
+ { 6, "P_MESSAGING_MESSAGE_FORMAT_AU" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/gms/TpMailboxInfoPropertyName:1.0
+ */
+
+static const value_string org_csapi_gms_TpMailboxInfoPropertyName[] = {
+
+ { 0, "P_MESSAGING_MAILBOX_UNDEFINED" },
+ { 1, "P_MESSAGING_MAILBOX_ID" },
+ { 2, "P_MESSAGING_MAILBOX_OWNER" },
+ { 3, "P_MESSAGING_MAILBOX_FOLDER" },
+ { 4, "P_MESSAGING_MAILBOX_DATE_CREATED" },
+ { 5, "P_MESSAGING_MAILBOX_DATE_CHANGED" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/gms/TpFolderInfoPropertyName:1.0
+ */
+
+static const value_string org_csapi_gms_TpFolderInfoPropertyName[] = {
+
+ { 0, "P_MESSAGING_FOLDER_UNDEFINED" },
+ { 1, "P_MESSAGING_FOLDER_ID" },
+ { 2, "P_MESSAGING_FOLDER_MESSAGE" },
+ { 3, "P_MESSAGING_FOLDER_SUBFOLDER" },
+ { 4, "P_MESSAGING_FOLDER_DATE_CREATED" },
+ { 5, "P_MESSAGING_FOLDER_DATE_CHANGED" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cm/TpTrafficDirection:1.0
+ */
+
+static const value_string org_csapi_cm_TpTrafficDirection[] = {
+
+ { 0, "UNIDIRECTIONAL" },
+ { 1, "BIDIRECTIONAL" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cm/TpTagValue:1.0
+ */
+
+static const value_string org_csapi_cm_TpTagValue[] = {
+
+ { 0, "PROVIDER_SPECIFIED" },
+ { 1, "OPERATOR_SPECIFIED" },
+ { 2, "UNSPECIFIED" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cm/TpSiteOrSap:1.0
+ */
+
+static const value_string org_csapi_cm_TpSiteOrSap[] = {
+
+ { 0, "SITE" },
+ { 1, "SAP" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cm/TpIPVersion:1.0
+ */
+
+static const value_string org_csapi_cm_TpIPVersion[] = {
+
+ { 0, "VERSION_UNKNOWN" },
+ { 1, "VERSION_IPV4" },
+ { 2, "VERSION_IPV6" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cm/TpIPv4AddType:1.0
+ */
+
+static const value_string org_csapi_cm_TpIPv4AddType[] = {
+
+ { 0, "IPV4_ADD_CLASS_A" },
+ { 1, "IPV4_ADD_CLASS_B" },
+ { 2, "IPV4_ADD_CLASS_C" },
+ { 3, "IPV4_ADD_CLASS_D" },
+ { 4, "IPV4_ADD_CLASS_E" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cm/TpAction:1.0
+ */
+
+static const value_string org_csapi_cm_TpAction[] = {
+
+ { 0, "DROP" },
+ { 1, "TRANSMIT" },
+ { 2, "RESHAPE" },
+ { 3, "REMARK" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cm/TpVprpStatus:1.0
+ */
+
+static const value_string org_csapi_cm_TpVprpStatus[] = {
+
+ { 0, "ACTIVE" },
+ { 1, "PENDING" },
+ { 2, "DISALLOWED" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/am/TpChargingEventName:1.0
+ */
+
+static const value_string org_csapi_am_TpChargingEventName[] = {
+
+ { 0, "P_AM_CHARGING" },
+ { 1, "P_AM_RECHARGING" },
+ { 2, "P_AM_ACCOUNT_LOW" },
+ { 3, "P_AM_ACCOUNT_ZERO" },
+ { 4, "P_AM_ACCOUNT_DISABLED" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/am/TpBalanceQueryError:1.0
+ */
+
+static const value_string org_csapi_am_TpBalanceQueryError[] = {
+
+ { 0, "P_BALANCE_QUERY_OK" },
+ { 1, "P_BALANCE_QUERY_ERROR_UNDEFINED" },
+ { 2, "P_BALANCE_QUERY_UNKNOWN_SUBSCRIBER" },
+ { 3, "P_BALANCE_QUERY_UNAUTHORIZED_APPLICATION" },
+ { 4, "P_BALANCE_QUERY_SYSTEM_FAILURE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/am/TpTransactionHistoryStatus:1.0
+ */
+
+static const value_string org_csapi_am_TpTransactionHistoryStatus[] = {
+
+ { 0, "P_AM_TRANSACTION_ERROR_UNSPECIFIED" },
+ { 1, "P_AM_TRANSACTION_INVALID_INTERVAL" },
+ { 2, "P_AM_TRANSACTION_UNKNOWN_ACCOUNT" },
+ { 3, "P_AM_TRANSACTION_UNAUTHORIZED_APPLICATION" },
+ { 4, "P_AM_TRANSACTION_PROCESSING_ERROR" },
+ { 5, "P_AM_TRANSACTION_SYSTEM_FAILURE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/am/TpVoucherError:1.0
+ */
+
+static const value_string org_csapi_am_TpVoucherError[] = {
+
+ { 0, "P_VOUCHER_OK" },
+ { 1, "P_VOUCHER_UNDEFINED" },
+ { 2, "P_VOUCHER_UNKNOWN_SUBSCRIBER" },
+ { 3, "P_VOUCHER_UNAUTHORIZED_APPLICATION" },
+ { 4, "P_VOUCHER_SYSTEM_FAILURE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cs/TpChargingParameterValueType:1.0
+ */
+
+static const value_string org_csapi_cs_TpChargingParameterValueType[] = {
+
+ { 0, "P_CHS_PARAMETER_INT32" },
+ { 1, "P_CHS_PARAMETER_FLOAT" },
+ { 2, "P_CHS_PARAMETER_STRING" },
+ { 3, "P_CHS_PARAMETER_BOOLEAN" },
+ { 4, "P_CHS_PARAMETER_OCTETSET" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cs/TpChargingError:1.0
+ */
+
+static const value_string org_csapi_cs_TpChargingError[] = {
+
+ { 0, "P_CHS_ERR_UNDEFINED" },
+ { 1, "P_CHS_ERR_ACCOUNT" },
+ { 2, "P_CHS_ERR_USER" },
+ { 3, "P_CHS_ERR_PARAMETER" },
+ { 4, "P_CHS_ERR_NO_DEBIT" },
+ { 5, "P_CHS_ERR_NO_CREDIT" },
+ { 6, "P_CHS_ERR_VOLUMES" },
+ { 7, "P_CHS_ERR_CURRENCY" },
+ { 8, "P_CHS_ERR_NO_EXTEND" },
+ { 9, "P_CHS_ERR_RESERVATION_LIMIT" },
+ { 10, "P_CHS_ERR_CONFIRMATION_REQUIRED" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cs/TpSessionEndedCause:1.0
+ */
+
+static const value_string org_csapi_cs_TpSessionEndedCause[] = {
+
+ { 0, "P_CHS_CAUSE_UNDEFINED" },
+ { 1, "P_CHS_CAUSE_TIMER_EXPIRED" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/cs/TpAppInformationType:1.0
+ */
+
+static const value_string org_csapi_cs_TpAppInformationType[] = {
+
+ { 0, "P_APP_INF_TIMESTAMP" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/policy/TpPolicyConditionListType:1.0
+ */
+
+static const value_string org_csapi_policy_TpPolicyConditionListType[] = {
+
+ { 0, "P_PM_DNF" },
+ { 1, "P_PM_CNF" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/policy/TpPolicyConditionType:1.0
+ */
+
+static const value_string org_csapi_policy_TpPolicyConditionType[] = {
+
+ { 0, "P_PM_TIME_PERIOD_CONDITION" },
+ { 1, "P_PM_EVENT_CONDITION" },
+ { 2, "P_PM_EXPRESSION_CONDITION" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/policy/TpPolicyActionType:1.0
+ */
+
+static const value_string org_csapi_policy_TpPolicyActionType[] = {
+
+ { 0, "P_PM_EVENT_ACTION" },
+ { 1, "P_PM_EXPRESSION_ACTION" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/policy/TpPolicyTypeInfo:1.0
+ */
+
+static const value_string org_csapi_policy_TpPolicyTypeInfo[] = {
+
+ { 0, "P_PM_SIMPLE_TYPE" },
+ { 1, "P_PM_TYPE_RECORD" },
+ { 2, "P_PM_TYPE_LIST" },
+ { 3, "P_PM_STRUCTURED_TYPE" },
+ { 4, "P_PM_XML_TYPE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/pam/TpPAMContextName:1.0
+ */
+
+static const value_string org_csapi_pam_TpPAMContextName[] = {
+
+ { 0, "PAM_CONTEXT_ANY" },
+ { 1, "PAM_CONTEXT_COMMUNICATION" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/pam/TpPAMACLDefault:1.0
+ */
+
+static const value_string org_csapi_pam_TpPAMACLDefault[] = {
+
+ { 0, "PAM_ACCESS_ALLOW" },
+ { 1, "PAM_ACCESS_DENY" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/pam/TpPAMPreferenceType:1.0
+ */
+
+static const value_string org_csapi_pam_TpPAMPreferenceType[] = {
+
+ { 0, "PAM_ACCESS_LIST" },
+ { 1, "PAM_EXTERNAL_CONTROL" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/pam/TpPAMEventName:1.0
+ */
+
+static const value_string org_csapi_pam_TpPAMEventName[] = {
+
+ { 0, "PAM_CE_IDENTITY_PRESENCE_SET" },
+ { 1, "PAM_CE_AVAILABILITY_CHANGED" },
+ { 2, "PAM_CE_WATCHERS_CHANGED" },
+ { 3, "PAM_CE_IDENTITY_CREATED" },
+ { 4, "PAM_CE_IDENTITY_DELETED" },
+ { 5, "PAM_CE_GROUP_MEMBERSHIP_CHANGED" },
+ { 6, "PAM_CE_AGENT_CREATED" },
+ { 7, "PAM_CE_AGENT_DELETED" },
+ { 8, "PAM_CE_AGENT_ASSIGNED" },
+ { 9, "PAM_CE_AGENT_UNASSIGNED" },
+ { 10, "PAM_CE_CAPABILITY_CHANGED" },
+ { 11, "PAM_CE_AGENT_CAPABILITY_PRESENCE_SET" },
+ { 12, "PAM_CE_AGENT_PRESENCE_SET" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/pam/TpPAMwatcherChangeType:1.0
+ */
+
+static const value_string org_csapi_pam_TpPAMwatcherChangeType[] = {
+
+ { 0, "PAM_WATCHERS_PERIODIC" },
+ { 1, "PAM_WATCHERS_ADDED" },
+ { 2, "PAM_WATCHERS_DELETED" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/pam/TpPAMErrorCause:1.0
+ */
+
+static const value_string org_csapi_pam_TpPAMErrorCause[] = {
+
+ { 0, "P_PAM_CAUSE_UNDEFINED" },
+ { 1, "P_PAM_CAUSE_INVALID_ADDRESS" },
+ { 2, "P_PAM_CAUSE_SYSTEM_FAILURE" },
+ { 3, "P_PAM_CAUSE_INFO_UNAVAILABLE" },
+ { 4, "P_PAM_CAUSE_EVENT_REGISTRATION_CANCELLED" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mmm/TpFolderInfoPropertyName:1.0
+ */
+
+static const value_string org_csapi_mmm_TpFolderInfoPropertyName[] = {
+
+ { 0, "P_MMM_FOLDER_UNDEFINED" },
+ { 1, "P_MMM_FOLDER_DATE_CREATED" },
+ { 2, "P_MMM_FOLDER_DATE_CHANGED" },
+ { 3, "P_MMM_FOLDER_SIZE" },
+ { 4, "P_MMM_FOLDER_NUMBER_OF_MESSAGES" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mmm/TpMailboxInfoPropertyName:1.0
+ */
+
+static const value_string org_csapi_mmm_TpMailboxInfoPropertyName[] = {
+
+ { 0, "P_MMM_MAILBOX_UNDEFINED" },
+ { 1, "P_MMM_MAILBOX_OWNER" },
+ { 2, "P_MMM_MAILBOX_DATE_CREATED" },
+ { 3, "P_MMM_MAILBOX_DATE_CHANGED" },
+ { 4, "P_MMM_MAILBOX_SIZE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mmm/TpMessageInfoPropertyName:1.0
+ */
+
+static const value_string org_csapi_mmm_TpMessageInfoPropertyName[] = {
+
+ { 0, "P_MMM_MESSAGE_UNDEFINED" },
+ { 1, "P_MMM_MESSAGE_DATE_CREATED" },
+ { 2, "P_MMM_MESSAGE_DATE_RECEIVED" },
+ { 3, "P_MMM_MESSAGE_DATE_CHANGED" },
+ { 4, "P_MMM_MESSAGE_SIZE" },
+ { 5, "P_MMM_MESSAGE_STATUS" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mmm/TpMessagePriority:1.0
+ */
+
+static const value_string org_csapi_mmm_TpMessagePriority[] = {
+
+ { 0, "P_MMM_MESSAGE_PRIORITY_UNDEFINED" },
+ { 1, "P_MMM_MESSAGE_PRIORITY_HIGH" },
+ { 2, "P_MMM_MESSAGE_PRIORITY_LOW" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mmm/TpMessageHeaderFieldType:1.0
+ */
+
+static const value_string org_csapi_mmm_TpMessageHeaderFieldType[] = {
+
+ { 0, "P_MESSAGE_DATE_SENT" },
+ { 1, "P_MESSAGE_SENT_FROM" },
+ { 2, "P_MESSAGE_SENDER" },
+ { 3, "P_MESSAGE_REPLY_TO" },
+ { 4, "P_MESSAGE_SENT_TO" },
+ { 5, "P_MESSAGE_CC_TO" },
+ { 6, "P_MESSAGE_BCC_TO" },
+ { 7, "P_MESSAGE_RFC822_MESSAGE_ID" },
+ { 8, "P_MESSAGE_IN_REPLY_TO" },
+ { 9, "P_MESSAGE_REFERENCES" },
+ { 10, "P_MESSAGE_SUBJECT" },
+ { 11, "P_MESSAGE_COMMENTS" },
+ { 12, "P_MESSAGE_KEYWORDS" },
+ { 13, "P_MESSAGE_TRACE_FIELD" },
+ { 14, "P_MESSAGE_RESENT_FIELD" },
+ { 15, "P_MESSAGE_MIME_VERSION" },
+ { 16, "P_MESSAGE_MIME_CONTENT" },
+ { 17, "P_MESSAGE_MIME_ENCODING" },
+ { 18, "P_MESSAGE_MIME_ID" },
+ { 19, "P_MESSAGE_MIME_DESCRIPTION" },
+ { 20, "P_MESSAGE_MIME_DISPOSITION" },
+ { 21, "P_MESSAGE_MIME_EXTENSION_FIELD" },
+ { 22, "P_MESSAGE_EXTENSION_FIELD" },
+ { 23, "P_MESSAGE_PRIORITY" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mmm/TpMailboxMessageStatus:1.0
+ */
+
+static const value_string org_csapi_mmm_TpMailboxMessageStatus[] = {
+
+ { 0, "P_MMM_RECEIVED_MSG_STATUS_READ" },
+ { 1, "P_MMM_RECEIVED_MSG_STATUS_UNREAD" },
+ { 2, "P_MMM_RECEIVED_MSG_STATUS_FORWARDED" },
+ { 3, "P_MMM_RECEIVED_MSG_STATUS_REPLIED_TO" },
+ { 4, "P_MMM_DRAFT_MSG_STATUS_SAVED_OR_UNSENT" },
+ { 5, "P_MMM_SENT_MSG_STATUS_SENT" },
+ { 6, "P_MMM_SENT_MSG_STATUS_DELIVERED" },
+ { 7, "P_MMM_SENT_MSG_STATUS_READ" },
+ { 8, "P_MMM_SENT_MSG_STATUS_DELETED_UNREAD" },
+ { 9, "P_MMM_SENT_MSG_STATUS_NOT_DELIVERABLE" },
+ { 10, "P_MMM_SENT_MSG_STATUS_EXPIRED" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mmm/TpSetPropertyError:1.0
+ */
+
+static const value_string org_csapi_mmm_TpSetPropertyError[] = {
+
+ { 0, "P_MMM_PROPERTY_NOT_SET" },
+ { 1, "P_MMM_PROPERTY_READONLY" },
+ { 2, "P_MMM_PROPERTY_INSUFFICIENT_PRIVILEGE" },
+ { 3, "P_MMM_PROPERTY_NAME_UNKNOWN" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mmm/TpMessagingEventName:1.0
+ */
+
+static const value_string org_csapi_mmm_TpMessagingEventName[] = {
+
+ { 0, "P_EVENT_MSG_NAME_UNDEFINED" },
+ { 1, "P_EVENT_MSG_NEW_MAILBOX_MESSAGE_ARRIVED" },
+ { 2, "P_EVENT_MSG_NEW_MESSAGE_ARRIVED" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mmm/TpDeliveryTimeType:1.0
+ */
+
+static const value_string org_csapi_mmm_TpDeliveryTimeType[] = {
+
+ { 0, "P_MMM_SEND_IMMEDIATE" },
+ { 1, "P_MMM_DELIVERY_TIME" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mmm/TpMessageTreatmentType:1.0
+ */
+
+static const value_string org_csapi_mmm_TpMessageTreatmentType[] = {
+
+ { 0, "P_MMM_TREATMENT_UNDEFINED" },
+ { 1, "P_MMM_TREATMENT_REPORT_REQUESTED" },
+ { 2, "P_MMM_TREATMENT_BILLING_ID" },
+ { 3, "P_MMM_TREATMENT_DELIVERY_TIME" },
+ { 4, "P_MMM_TREATMENT_VALIDITY_TIME" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:org/csapi/mmm/TpMessagingError:1.0
+ */
+
+static const value_string org_csapi_mmm_TpMessagingError[] = {
+
+ { 0, "P_MMM_ERROR_UNDEFINED" },
+ { 1, "P_MMM_ERROR_INVALID_AUTHENTICATION_INFORMATION" },
+ { 2, "P_MMM_ERROR_INVALID_MAILBOX" },
+ { 3, "P_MMM_ERROR_INVALID_DELIVERY_TYPE" },
+ { 4, "P_MMM_ERROR_MAX_MESSAGE_SIZE_EXCEEDED" },
+ { 5, "P_MMM_ERROR_INVALID_FOLDER_ID" },
+ { 6, "P_MMM_ERROR_INVALID_MESSAGE_ID" },
+ { 7, "P_MMM_ERROR_INVALID_PART_ID" },
+ { 8, "P_MMM_ERROR_DELIVERY_TYPE_ADDRESS_TYPE_MISMATCH" },
+ { 9, "P_MMM_ERROR_DELIVERY_TYPE_MESSAGE_TYPE_MISMATCH" },
+ { 10, "P_MMM_ERROR_INVALID_DELIVERY_TIME" },
+ { 11, "P_MMM_ERROR_INVALID_VALIDITY_TIME" },
+ { 12, "P_MMM_ERROR_MAX_SUBJECT_SIZE_EXCEEDED" },
+ { 13, "P_MMM_ERROR_INVALID_ID" },
+ { 14, "P_MMM_ERROR_INVALID_NESTING_LEVEL" },
+ { 15, "P_MMM_ERROR_INVALID_CRITERIA" },
+ { 16, "P_MMM_ERROR_INFORMATION_NOT_AVAILABLE" },
+ { 17, "P_MMM_ERROR_CANNOT_CANCEL" },
+ { 18, "P_MMM_ERROR_INVALID_HEADER" },
+ { 19, "P_MMM_INVALID_NETWORK_STATE" },
+ { 20, "P_MMM_ERROR_RESOURCE_UNAVAILABLE" },
+ { 21, "P_MMM_ERROR_RESOURCE_TIMEOUT" },
+ { 0, NULL },
+};
+
+/*
+ * IDL Enums End
+ */
+
+/* Begin Exception Helper Functions */
+
+
+/* Exception = IDL:org/csapi/P_INVALID_ASSIGNMENT_ID:1.0 */
+
+static void decode_ex_org_csapi_P_INVALID_ASSIGNMENT_ID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_ASSIGNMENT_ID_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/P_INVALID_TIME_AND_DATE_FORMAT:1.0 */
+
+static void decode_ex_org_csapi_P_INVALID_TIME_AND_DATE_FORMAT(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_TIME_AND_DATE_FORMAT_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/P_INVALID_EVENT_TYPE:1.0 */
+
+static void decode_ex_org_csapi_P_INVALID_EVENT_TYPE(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_EVENT_TYPE_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/P_INVALID_INTERFACE_NAME:1.0 */
+
+static void decode_ex_org_csapi_P_INVALID_INTERFACE_NAME(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_INTERFACE_NAME_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/P_INVALID_INTERFACE_TYPE:1.0 */
+
+static void decode_ex_org_csapi_P_INVALID_INTERFACE_TYPE(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_INTERFACE_TYPE_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/P_UNKNOWN_SUBSCRIBER:1.0 */
+
+static void decode_ex_org_csapi_P_UNKNOWN_SUBSCRIBER(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNKNOWN_SUBSCRIBER_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/P_INFORMATION_NOT_AVAILABLE:1.0 */
+
+static void decode_ex_org_csapi_P_INFORMATION_NOT_AVAILABLE(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INFORMATION_NOT_AVAILABLE_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/P_INVALID_CRITERIA:1.0 */
+
+static void decode_ex_org_csapi_P_INVALID_CRITERIA(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_CRITERIA_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/P_INVALID_SESSION_ID:1.0 */
+
+static void decode_ex_org_csapi_P_INVALID_SESSION_ID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_SESSION_ID_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/TpCommonExceptions:1.0 */
+
+static void decode_ex_org_csapi_TpCommonExceptions(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCommonExceptions_ExceptionType = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpCommonExceptions_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/P_INVALID_CURRENCY:1.0 */
+
+static void decode_ex_org_csapi_P_INVALID_CURRENCY(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_CURRENCY_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/P_INVALID_AMOUNT:1.0 */
+
+static void decode_ex_org_csapi_P_INVALID_AMOUNT(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_AMOUNT_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/P_APPLICATION_NOT_ACTIVATED:1.0 */
+
+static void decode_ex_org_csapi_P_APPLICATION_NOT_ACTIVATED(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_APPLICATION_NOT_ACTIVATED_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/P_INVALID_ADDRESS:1.0 */
+
+static void decode_ex_org_csapi_P_INVALID_ADDRESS(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_ADDRESS_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/P_UNSUPPORTED_ADDRESS_PLAN:1.0 */
+
+static void decode_ex_org_csapi_P_UNSUPPORTED_ADDRESS_PLAN(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNSUPPORTED_ADDRESS_PLAN_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/P_UNAUTHORISED_PARAMETER_VALUE:1.0 */
+
+static void decode_ex_org_csapi_P_UNAUTHORISED_PARAMETER_VALUE(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNAUTHORISED_PARAMETER_VALUE_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/P_INVALID_VERSION:1.0 */
+
+static void decode_ex_org_csapi_P_INVALID_VERSION(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_VERSION_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/P_INVALID_NETWORK_STATE:1.0 */
+
+static void decode_ex_org_csapi_P_INVALID_NETWORK_STATE(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_NETWORK_STATE_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_INVALID_SERVICE_ID:1.0 */
+
+static void decode_ex_org_csapi_fw_P_INVALID_SERVICE_ID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_SERVICE_ID_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_SERVICE_ACCESS_DENIED:1.0 */
+
+static void decode_ex_org_csapi_fw_P_SERVICE_ACCESS_DENIED(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_SERVICE_ACCESS_DENIED_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_ACCESS_DENIED:1.0 */
+
+static void decode_ex_org_csapi_fw_P_ACCESS_DENIED(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_ACCESS_DENIED_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_SERVICE_NOT_ENABLED:1.0 */
+
+static void decode_ex_org_csapi_fw_P_SERVICE_NOT_ENABLED(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_SERVICE_NOT_ENABLED_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_NO_ACCEPTABLE_ENCRYPTION_CAPABILITY:1.0 */
+
+static void decode_ex_org_csapi_fw_P_NO_ACCEPTABLE_ENCRYPTION_CAPABILITY(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_NO_ACCEPTABLE_ENCRYPTION_CAPABILITY_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_INVALID_AGREEMENT_TEXT:1.0 */
+
+static void decode_ex_org_csapi_fw_P_INVALID_AGREEMENT_TEXT(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_AGREEMENT_TEXT_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_INVALID_SERVICE_TOKEN:1.0 */
+
+static void decode_ex_org_csapi_fw_P_INVALID_SERVICE_TOKEN(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_SERVICE_TOKEN_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_INVALID_SIGNATURE:1.0 */
+
+static void decode_ex_org_csapi_fw_P_INVALID_SIGNATURE(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_SIGNATURE_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_INVALID_SIGNING_ALGORITHM:1.0 */
+
+static void decode_ex_org_csapi_fw_P_INVALID_SIGNING_ALGORITHM(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_SIGNING_ALGORITHM_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_INVALID_DOMAIN_ID:1.0 */
+
+static void decode_ex_org_csapi_fw_P_INVALID_DOMAIN_ID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_DOMAIN_ID_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_INVALID_PROPERTY:1.0 */
+
+static void decode_ex_org_csapi_fw_P_INVALID_PROPERTY(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_PROPERTY_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_INVALID_ACCESS_TYPE:1.0 */
+
+static void decode_ex_org_csapi_fw_P_INVALID_ACCESS_TYPE(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_ACCESS_TYPE_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_ILLEGAL_SERVICE_TYPE:1.0 */
+
+static void decode_ex_org_csapi_fw_P_ILLEGAL_SERVICE_TYPE(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_ILLEGAL_SERVICE_TYPE_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_UNKNOWN_SERVICE_TYPE:1.0 */
+
+static void decode_ex_org_csapi_fw_P_UNKNOWN_SERVICE_TYPE(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNKNOWN_SERVICE_TYPE_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_MISSING_MANDATORY_PROPERTY:1.0 */
+
+static void decode_ex_org_csapi_fw_P_MISSING_MANDATORY_PROPERTY(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_MISSING_MANDATORY_PROPERTY_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_DUPLICATE_PROPERTY_NAME:1.0 */
+
+static void decode_ex_org_csapi_fw_P_DUPLICATE_PROPERTY_NAME(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_DUPLICATE_PROPERTY_NAME_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_PROPERTY_TYPE_MISMATCH:1.0 */
+
+static void decode_ex_org_csapi_fw_P_PROPERTY_TYPE_MISMATCH(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PROPERTY_TYPE_MISMATCH_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_INVALID_CLIENT_APP_ID:1.0 */
+
+static void decode_ex_org_csapi_fw_P_INVALID_CLIENT_APP_ID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_CLIENT_APP_ID_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_INVALID_AUTH_TYPE:1.0 */
+
+static void decode_ex_org_csapi_fw_P_INVALID_AUTH_TYPE(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_AUTH_TYPE_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_INVALID_SAG_ID:1.0 */
+
+static void decode_ex_org_csapi_fw_P_INVALID_SAG_ID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_SAG_ID_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_INVALID_SERVICE_PROFILE_ID:1.0 */
+
+static void decode_ex_org_csapi_fw_P_INVALID_SERVICE_PROFILE_ID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_SERVICE_PROFILE_ID_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_INVALID_SERVICE_CONTRACT_ID:1.0 */
+
+static void decode_ex_org_csapi_fw_P_INVALID_SERVICE_CONTRACT_ID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_SERVICE_CONTRACT_ID_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_INVALID_ACTIVITY_TEST_ID:1.0 */
+
+static void decode_ex_org_csapi_fw_P_INVALID_ACTIVITY_TEST_ID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_ACTIVITY_TEST_ID_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_ILLEGAL_SERVICE_ID:1.0 */
+
+static void decode_ex_org_csapi_fw_P_ILLEGAL_SERVICE_ID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_ILLEGAL_SERVICE_ID_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_UNKNOWN_SERVICE_ID:1.0 */
+
+static void decode_ex_org_csapi_fw_P_UNKNOWN_SERVICE_ID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNKNOWN_SERVICE_ID_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_SERVICE_TYPE_UNAVAILABLE:1.0 */
+
+static void decode_ex_org_csapi_fw_P_SERVICE_TYPE_UNAVAILABLE(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_SERVICE_TYPE_UNAVAILABLE_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_INVALID_ADDITION_TO_SAG:1.0 */
+
+static void decode_ex_org_csapi_fw_P_INVALID_ADDITION_TO_SAG(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_ADDITION_TO_SAG_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_INVALID_SAG_TO_SERVICE_PROFILE_ASSIGNMENT:1.0 */
+
+static void decode_ex_org_csapi_fw_P_INVALID_SAG_TO_SERVICE_PROFILE_ASSIGNMENT(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_SAG_TO_SERVICE_PROFILE_ASSIGNMENT_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_NO_ACCEPTABLE_AUTHENTICATION_MECHANISM:1.0 */
+
+static void decode_ex_org_csapi_fw_P_NO_ACCEPTABLE_AUTHENTICATION_MECHANISM(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_NO_ACCEPTABLE_AUTHENTICATION_MECHANISM_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/fw/P_NO_ACCEPTABLE_SIGNING_ALGORITHM:1.0 */
+
+static void decode_ex_org_csapi_fw_P_NO_ACCEPTABLE_SIGNING_ALGORITHM(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_NO_ACCEPTABLE_SIGNING_ALGORITHM_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/ui/P_ID_NOT_FOUND:1.0 */
+
+static void decode_ex_org_csapi_ui_P_ID_NOT_FOUND(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_ID_NOT_FOUND_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/ui/P_ILLEGAL_ID:1.0 */
+
+static void decode_ex_org_csapi_ui_P_ILLEGAL_ID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_ILLEGAL_ID_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/ui/P_ILLEGAL_RANGE:1.0 */
+
+static void decode_ex_org_csapi_ui_P_ILLEGAL_RANGE(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_ILLEGAL_RANGE_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/ui/P_INVALID_COLLECTION_CRITERIA:1.0 */
+
+static void decode_ex_org_csapi_ui_P_INVALID_COLLECTION_CRITERIA(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_COLLECTION_CRITERIA_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/mm/P_REQUESTED_ACCURACY_CANNOT_BE_DELIVERED:1.0 */
+
+static void decode_ex_org_csapi_mm_P_REQUESTED_ACCURACY_CANNOT_BE_DELIVERED(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_REQUESTED_ACCURACY_CANNOT_BE_DELIVERED_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/mm/P_REQUESTED_RESPONSE_TIME_CANNOT_BE_DELIVERED:1.0 */
+
+static void decode_ex_org_csapi_mm_P_REQUESTED_RESPONSE_TIME_CANNOT_BE_DELIVERED(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_REQUESTED_RESPONSE_TIME_CANNOT_BE_DELIVERED_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/mm/P_INVALID_REPORTING_INTERVAL:1.0 */
+
+static void decode_ex_org_csapi_mm_P_INVALID_REPORTING_INTERVAL(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_REPORTING_INTERVAL_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/mm/P_TRIGGER_CONDITIONS_NOT_SUBSCRIBED:1.0 */
+
+static void decode_ex_org_csapi_mm_P_TRIGGER_CONDITIONS_NOT_SUBSCRIBED(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_TRIGGER_CONDITIONS_NOT_SUBSCRIBED_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/termcap/P_INVALID_TERMINAL_ID:1.0 */
+
+static void decode_ex_org_csapi_termcap_P_INVALID_TERMINAL_ID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_TERMINAL_ID_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/gms/P_GMS_INVALID_FOLDER_ID:1.0 */
+
+static void decode_ex_org_csapi_gms_P_GMS_INVALID_FOLDER_ID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_GMS_INVALID_FOLDER_ID_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/gms/P_GMS_INSUFFICIENT_PRIVILEGE:1.0 */
+
+static void decode_ex_org_csapi_gms_P_GMS_INSUFFICIENT_PRIVILEGE(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_GMS_INSUFFICIENT_PRIVILEGE_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/gms/P_GMS_INVALID_AUTHENTICATION_INFORMATION:1.0 */
+
+static void decode_ex_org_csapi_gms_P_GMS_INVALID_AUTHENTICATION_INFORMATION(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_GMS_INVALID_AUTHENTICATION_INFORMATION_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/gms/P_GMS_INVALID_MAILBOX:1.0 */
+
+static void decode_ex_org_csapi_gms_P_GMS_INVALID_MAILBOX(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_GMS_INVALID_MAILBOX_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/gms/P_GMS_INVALID_MESSAGE_ID:1.0 */
+
+static void decode_ex_org_csapi_gms_P_GMS_INVALID_MESSAGE_ID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_GMS_INVALID_MESSAGE_ID_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/gms/P_GMS_LOCKING_LOCKED_MAILBOX:1.0 */
+
+static void decode_ex_org_csapi_gms_P_GMS_LOCKING_LOCKED_MAILBOX(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_GMS_LOCKING_LOCKED_MAILBOX_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/gms/P_GMS_MESSAGE_NOT_REMOVED:1.0 */
+
+static void decode_ex_org_csapi_gms_P_GMS_MESSAGE_NOT_REMOVED(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_GMS_MESSAGE_NOT_REMOVED_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/gms/P_GMS_NUMBER_NOT_POSITIVE:1.0 */
+
+static void decode_ex_org_csapi_gms_P_GMS_NUMBER_NOT_POSITIVE(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_GMS_NUMBER_NOT_POSITIVE_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/gms/P_GMS_UNLOCKING_UNLOCKED_MAILBOX:1.0 */
+
+static void decode_ex_org_csapi_gms_P_GMS_UNLOCKING_UNLOCKED_MAILBOX(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_GMS_UNLOCKING_UNLOCKED_MAILBOX_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/gms/P_GMS_MAILBOX_LOCKED:1.0 */
+
+static void decode_ex_org_csapi_gms_P_GMS_MAILBOX_LOCKED(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_GMS_MAILBOX_LOCKED_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/gms/P_GMS_CANNOT_UNLOCK_MAILBOX:1.0 */
+
+static void decode_ex_org_csapi_gms_P_GMS_CANNOT_UNLOCK_MAILBOX(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_GMS_CANNOT_UNLOCK_MAILBOX_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/gms/P_GMS_PROPERTY_NOT_SET:1.0 */
+
+static void decode_ex_org_csapi_gms_P_GMS_PROPERTY_NOT_SET(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_GMS_PROPERTY_NOT_SET_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/gms/P_GMS_FOLDER_IS_OPEN:1.0 */
+
+static void decode_ex_org_csapi_gms_P_GMS_FOLDER_IS_OPEN(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_GMS_FOLDER_IS_OPEN_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/gms/P_GMS_MAILBOX_OPEN:1.0 */
+
+static void decode_ex_org_csapi_gms_P_GMS_MAILBOX_OPEN(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_GMS_MAILBOX_OPEN_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_UNKNOWN_VPRP_ID:1.0 */
+
+static void decode_ex_org_csapi_cm_P_UNKNOWN_VPRP_ID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNKNOWN_VPRP_ID_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_UNKNOWN_SLA_ID:1.0 */
+
+static void decode_ex_org_csapi_cm_P_UNKNOWN_SLA_ID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNKNOWN_SLA_ID_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_UNKNOWN_STATUS:1.0 */
+
+static void decode_ex_org_csapi_cm_P_UNKNOWN_STATUS(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNKNOWN_STATUS_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_UNKNOWN_QOS_INFO:1.0 */
+
+static void decode_ex_org_csapi_cm_P_UNKNOWN_QOS_INFO(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNKNOWN_QOS_INFO_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_UNKNOWN_VALIDITY_INFO:1.0 */
+
+static void decode_ex_org_csapi_cm_P_UNKNOWN_VALIDITY_INFO(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNKNOWN_VALIDITY_INFO_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_UNKNOWN_PIPEQOSINFO:1.0 */
+
+static void decode_ex_org_csapi_cm_P_UNKNOWN_PIPEQOSINFO(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNKNOWN_PIPEQOSINFO_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_UNKNOWN_DSCODEPOINT:1.0 */
+
+static void decode_ex_org_csapi_cm_P_UNKNOWN_DSCODEPOINT(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNKNOWN_DSCODEPOINT_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_ILLEGAL_VPRPID:1.0 */
+
+static void decode_ex_org_csapi_cm_P_ILLEGAL_VPRPID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_ILLEGAL_VPRPID_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_ILLEGAL_REF_VALUE:1.0 */
+
+static void decode_ex_org_csapi_cm_P_ILLEGAL_REF_VALUE(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_ILLEGAL_REF_VALUE_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_UNKNOWN_INTERFACE:1.0 */
+
+static void decode_ex_org_csapi_cm_P_UNKNOWN_INTERFACE(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNKNOWN_INTERFACE_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_CANT_DELETE_VPRP:1.0 */
+
+static void decode_ex_org_csapi_cm_P_CANT_DELETE_VPRP(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_CANT_DELETE_VPRP_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_UNKNOWN_TEMPLATES:1.0 */
+
+static void decode_ex_org_csapi_cm_P_UNKNOWN_TEMPLATES(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNKNOWN_TEMPLATES_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_UNKNOWN_MENU:1.0 */
+
+static void decode_ex_org_csapi_cm_P_UNKNOWN_MENU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNKNOWN_MENU_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_UNKNOWN_ENTERPRISE_NETWORK:1.0 */
+
+static void decode_ex_org_csapi_cm_P_UNKNOWN_ENTERPRISE_NETWORK(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNKNOWN_ENTERPRISE_NETWORK_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_UNKNOWN_TEMPLATE_TYPE:1.0 */
+
+static void decode_ex_org_csapi_cm_P_UNKNOWN_TEMPLATE_TYPE(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNKNOWN_TEMPLATE_TYPE_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_UNKNOWN_DESCRIPTION:1.0 */
+
+static void decode_ex_org_csapi_cm_P_UNKNOWN_DESCRIPTION(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNKNOWN_DESCRIPTION_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_ILLEGAL_SLA_ID:1.0 */
+
+static void decode_ex_org_csapi_cm_P_ILLEGAL_SLA_ID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_ILLEGAL_SLA_ID_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_ILLEGAL_TAG:1.0 */
+
+static void decode_ex_org_csapi_cm_P_ILLEGAL_TAG(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_ILLEGAL_TAG_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_ILLEGAL_VALUE:1.0 */
+
+static void decode_ex_org_csapi_cm_P_ILLEGAL_VALUE(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_ILLEGAL_VALUE_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_ILLEGAL_COMBINATION:1.0 */
+
+static void decode_ex_org_csapi_cm_P_ILLEGAL_COMBINATION(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_ILLEGAL_COMBINATION_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_UNKNOWN_SITES:1.0 */
+
+static void decode_ex_org_csapi_cm_P_UNKNOWN_SITES(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNKNOWN_SITES_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_UNKNOWN_VPRN:1.0 */
+
+static void decode_ex_org_csapi_cm_P_UNKNOWN_VPRN(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNKNOWN_VPRN_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_ILLEGAL_SITE_ID:1.0 */
+
+static void decode_ex_org_csapi_cm_P_ILLEGAL_SITE_ID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_ILLEGAL_SITE_ID_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_UNKNOWN_SITE_ID:1.0 */
+
+static void decode_ex_org_csapi_cm_P_UNKNOWN_SITE_ID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNKNOWN_SITE_ID_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_UNKNOWN_SAPS:1.0 */
+
+static void decode_ex_org_csapi_cm_P_UNKNOWN_SAPS(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNKNOWN_SAPS_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_UNKNOWN_SITE_LOCATION:1.0 */
+
+static void decode_ex_org_csapi_cm_P_UNKNOWN_SITE_LOCATION(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNKNOWN_SITE_LOCATION_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_UNKNOWN_SITE_DESCRIPTION:1.0 */
+
+static void decode_ex_org_csapi_cm_P_UNKNOWN_SITE_DESCRIPTION(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNKNOWN_SITE_DESCRIPTION_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_UNKNOWN_IPSUBNET:1.0 */
+
+static void decode_ex_org_csapi_cm_P_UNKNOWN_IPSUBNET(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNKNOWN_IPSUBNET_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_UNKNOWN_SAP:1.0 */
+
+static void decode_ex_org_csapi_cm_P_UNKNOWN_SAP(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNKNOWN_SAP_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cm/P_UNKNOWN_VPRP:1.0 */
+
+static void decode_ex_org_csapi_cm_P_UNKNOWN_VPRP(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNKNOWN_VPRP_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/am/P_UNAUTHORIZED_APPLICATION:1.0 */
+
+static void decode_ex_org_csapi_am_P_UNAUTHORIZED_APPLICATION(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_UNAUTHORIZED_APPLICATION_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cs/P_INVALID_USER:1.0 */
+
+static void decode_ex_org_csapi_cs_P_INVALID_USER(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_USER_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cs/P_INVALID_ACCOUNT:1.0 */
+
+static void decode_ex_org_csapi_cs_P_INVALID_ACCOUNT(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_ACCOUNT_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cs/P_INVALID_REQUEST_NUMBER:1.0 */
+
+static void decode_ex_org_csapi_cs_P_INVALID_REQUEST_NUMBER(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_REQUEST_NUMBER_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/cs/P_INVALID_VOLUME:1.0 */
+
+static void decode_ex_org_csapi_cs_P_INVALID_VOLUME(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_INVALID_VOLUME_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/policy/P_ACCESS_VIOLATION:1.0 */
+
+static void decode_ex_org_csapi_policy_P_ACCESS_VIOLATION(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_ACCESS_VIOLATION_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/policy/P_SYNTAX_ERROR:1.0 */
+
+static void decode_ex_org_csapi_policy_P_SYNTAX_ERROR(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_SYNTAX_ERROR_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/policy/P_NAME_SPACE_ERROR:1.0 */
+
+static void decode_ex_org_csapi_policy_P_NAME_SPACE_ERROR(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_NAME_SPACE_ERROR_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/policy/P_NO_TRANSACTION_IN_PROCESS:1.0 */
+
+static void decode_ex_org_csapi_policy_P_NO_TRANSACTION_IN_PROCESS(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_NO_TRANSACTION_IN_PROCESS_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/policy/P_TRANSACTION_IN_PROCESS:1.0 */
+
+static void decode_ex_org_csapi_policy_P_TRANSACTION_IN_PROCESS(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_TRANSACTION_IN_PROCESS_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_UNKNOWN_TYPE:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_UNKNOWN_TYPE(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_UNKNOWN_TYPE_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_UNKNOWN_MEMBER:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_UNKNOWN_MEMBER(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_UNKNOWN_MEMBER_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_UNKNOWN_IDENTITY:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_UNKNOWN_IDENTITY(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_UNKNOWN_IDENTITY_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_UNKNOWN_GROUP:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_UNKNOWN_GROUP(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_UNKNOWN_GROUP_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_UNKNOWN_CAPABILITY:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_UNKNOWN_CAPABILITY(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_UNKNOWN_CAPABILITY_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_UNKNOWN_ATTRIBUTES:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_UNKNOWN_ATTRIBUTES(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_UNKNOWN_ATTRIBUTES_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_UNKNOWN_ATTRIBUTE:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_UNKNOWN_ATTRIBUTE(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_UNKNOWN_ATTRIBUTE_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_UNKNOWN_ASSIGNMENT:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_UNKNOWN_ASSIGNMENT(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_UNKNOWN_ASSIGNMENT_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_UNKNOWN_ALIAS:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_UNKNOWN_ALIAS(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_UNKNOWN_ALIAS_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_UNKNOWN_AGENT:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_UNKNOWN_AGENT(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_UNKNOWN_AGENT_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_UNASSIGNED_ALIAS:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_UNASSIGNED_ALIAS(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_UNASSIGNED_ALIAS_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_TYPE_EXISTS:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_TYPE_EXISTS(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_TYPE_EXISTS_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_TYPE_ASSOCIATED:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_TYPE_ASSOCIATED(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_TYPE_ASSOCIATED_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_NOT_REGISTERED:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_NOT_REGISTERED(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_NOT_REGISTERED_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_NOT_MEMBER:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_NOT_MEMBER(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_NOT_MEMBER_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_NO_CAPABILITY:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_NO_CAPABILITY(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_NO_CAPABILITY_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_MEMBER_EXISTS:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_MEMBER_EXISTS(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_MEMBER_EXISTS_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_IS_CYCLIC:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_IS_CYCLIC(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_IS_CYCLIC_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_IDENTITY_EXISTS:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_IDENTITY_EXISTS(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_IDENTITY_EXISTS_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_DISASSOCIATED_TYPE:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_DISASSOCIATED_TYPE(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_DISASSOCIATED_TYPE_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_ATTRIBUTE_EXISTS:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_ATTRIBUTE_EXISTS(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_ATTRIBUTE_EXISTS_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_ALIAS_NOT_UNIQUE:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_ALIAS_NOT_UNIQUE(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_ALIAS_NOT_UNIQUE_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_ALIAS_EXISTS:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_ALIAS_EXISTS(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_ALIAS_EXISTS_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_AGENT_EXISTS:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_AGENT_EXISTS(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_AGENT_EXISTS_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_UNAVAILABLE_INTERFACE:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_UNAVAILABLE_INTERFACE(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_UNAVAILABLE_INTERFACE_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/pam/P_PAM_INVALID_CREDENTIAL:1.0 */
+
+static void decode_ex_org_csapi_pam_P_PAM_INVALID_CREDENTIAL(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_PAM_INVALID_CREDENTIAL_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/mmm/P_MMM_INVALID_AUTHENTICATION_INFORMATION:1.0 */
+
+static void decode_ex_org_csapi_mmm_P_MMM_INVALID_AUTHENTICATION_INFORMATION(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_MMM_INVALID_AUTHENTICATION_INFORMATION_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/mmm/P_MMM_INVALID_MAILBOX:1.0 */
+
+static void decode_ex_org_csapi_mmm_P_MMM_INVALID_MAILBOX(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_MMM_INVALID_MAILBOX_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/mmm/P_MMM_INVALID_DELIVERY_TYPE:1.0 */
+
+static void decode_ex_org_csapi_mmm_P_MMM_INVALID_DELIVERY_TYPE(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_MMM_INVALID_DELIVERY_TYPE_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/mmm/P_MMM_MAX_MESSAGE_SIZE_EXCEEDED:1.0 */
+
+static void decode_ex_org_csapi_mmm_P_MMM_MAX_MESSAGE_SIZE_EXCEEDED(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_MMM_MAX_MESSAGE_SIZE_EXCEEDED_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/mmm/P_MMM_INVALID_FOLDER_ID:1.0 */
+
+static void decode_ex_org_csapi_mmm_P_MMM_INVALID_FOLDER_ID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_MMM_INVALID_FOLDER_ID_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/mmm/P_MMM_INVALID_MESSAGE_ID:1.0 */
+
+static void decode_ex_org_csapi_mmm_P_MMM_INVALID_MESSAGE_ID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_MMM_INVALID_MESSAGE_ID_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/mmm/P_MMM_INVALID_PART_ID:1.0 */
+
+static void decode_ex_org_csapi_mmm_P_MMM_INVALID_PART_ID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_MMM_INVALID_PART_ID_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/mmm/P_MMM_DELIVERY_TYPE_ADDRESS_TYPE_MISMATCH:1.0 */
+
+static void decode_ex_org_csapi_mmm_P_MMM_DELIVERY_TYPE_ADDRESS_TYPE_MISMATCH(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_MMM_DELIVERY_TYPE_ADDRESS_TYPE_MISMATCH_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/mmm/P_MMM_DELIVERY_TYPE_MESSAGE_TYPE_MISMATCH:1.0 */
+
+static void decode_ex_org_csapi_mmm_P_MMM_DELIVERY_TYPE_MESSAGE_TYPE_MISMATCH(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_MMM_DELIVERY_TYPE_MESSAGE_TYPE_MISMATCH_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/mmm/P_MMM_INVALID_PROPERTY:1.0 */
+
+static void decode_ex_org_csapi_mmm_P_MMM_INVALID_PROPERTY(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_MMM_INVALID_PROPERTY_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/mmm/P_MMM_INVALID_DELIVERY_TIME:1.0 */
+
+static void decode_ex_org_csapi_mmm_P_MMM_INVALID_DELIVERY_TIME(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_MMM_INVALID_DELIVERY_TIME_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/mmm/P_MMM_INVALID_VALIDITY_TIME:1.0 */
+
+static void decode_ex_org_csapi_mmm_P_MMM_INVALID_VALIDITY_TIME(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_MMM_INVALID_VALIDITY_TIME_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/mmm/P_MMM_MAX_SUBJECT_SIZE_EXCEEDED:1.0 */
+
+static void decode_ex_org_csapi_mmm_P_MMM_MAX_SUBJECT_SIZE_EXCEEDED(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_MMM_MAX_SUBJECT_SIZE_EXCEEDED_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/mmm/P_MMM_INFORMATION_NOT_AVAILABLE:1.0 */
+
+static void decode_ex_org_csapi_mmm_P_MMM_INFORMATION_NOT_AVAILABLE(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_MMM_INFORMATION_NOT_AVAILABLE_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/mmm/P_MMM_CANNOT_CANCEL:1.0 */
+
+static void decode_ex_org_csapi_mmm_P_MMM_CANNOT_CANCEL(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_MMM_CANNOT_CANCEL_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Exception = IDL:org/csapi/mmm/P_MMM_INVALID_HEADER:1.0 */
+
+static void decode_ex_org_csapi_mmm_P_MMM_INVALID_HEADER(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"P_MMM_INVALID_HEADER_ExtraInformation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+
+/* End Exception Helper Functions */
+
+/*
+ * Main delegator for exception handling
+ *
+ */
+
+static gboolean decode_user_exception(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *ptree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+ /*gboolean stream_is_big_endian _U_;*/ /* big endianess */
+ proto_tree *tree _U_;
+
+ if (!header->exception_id)
+ return FALSE;
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_P_INVALID_ASSIGNMENT_ID) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_P_INVALID_ASSIGNMENT_ID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/P_INVALID_ASSIGNMENT_ID:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_P_INVALID_TIME_AND_DATE_FORMAT) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_P_INVALID_TIME_AND_DATE_FORMAT(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/P_INVALID_TIME_AND_DATE_FORMAT:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_P_INVALID_EVENT_TYPE) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_P_INVALID_EVENT_TYPE(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/P_INVALID_EVENT_TYPE:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_P_INVALID_INTERFACE_NAME) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_P_INVALID_INTERFACE_NAME(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/P_INVALID_INTERFACE_NAME:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_P_INVALID_INTERFACE_TYPE) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_P_INVALID_INTERFACE_TYPE(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/P_INVALID_INTERFACE_TYPE:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_P_UNKNOWN_SUBSCRIBER) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_P_UNKNOWN_SUBSCRIBER(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/P_UNKNOWN_SUBSCRIBER:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_P_INFORMATION_NOT_AVAILABLE) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_P_INFORMATION_NOT_AVAILABLE(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/P_INFORMATION_NOT_AVAILABLE:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_P_INVALID_CRITERIA) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_P_INVALID_CRITERIA(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/P_INVALID_CRITERIA:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_P_INVALID_SESSION_ID) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_P_INVALID_SESSION_ID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/P_INVALID_SESSION_ID:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_TpCommonExceptions) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_TpCommonExceptions(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/TpCommonExceptions:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_P_INVALID_CURRENCY) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_P_INVALID_CURRENCY(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/P_INVALID_CURRENCY:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_P_INVALID_AMOUNT) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_P_INVALID_AMOUNT(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/P_INVALID_AMOUNT:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_P_APPLICATION_NOT_ACTIVATED) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_P_APPLICATION_NOT_ACTIVATED(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/P_APPLICATION_NOT_ACTIVATED:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_P_INVALID_ADDRESS) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_P_INVALID_ADDRESS(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/P_INVALID_ADDRESS:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_P_UNSUPPORTED_ADDRESS_PLAN) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_P_UNSUPPORTED_ADDRESS_PLAN(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/P_UNSUPPORTED_ADDRESS_PLAN:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_P_UNAUTHORISED_PARAMETER_VALUE) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_P_UNAUTHORISED_PARAMETER_VALUE(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/P_UNAUTHORISED_PARAMETER_VALUE:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_P_INVALID_VERSION) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_P_INVALID_VERSION(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/P_INVALID_VERSION:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_P_INVALID_NETWORK_STATE) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_P_INVALID_NETWORK_STATE(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/P_INVALID_NETWORK_STATE:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_INVALID_SERVICE_ID) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_INVALID_SERVICE_ID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_INVALID_SERVICE_ID:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_SERVICE_ACCESS_DENIED) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_SERVICE_ACCESS_DENIED(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_SERVICE_ACCESS_DENIED:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_ACCESS_DENIED) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_ACCESS_DENIED(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_ACCESS_DENIED:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_SERVICE_NOT_ENABLED) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_SERVICE_NOT_ENABLED(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_SERVICE_NOT_ENABLED:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_NO_ACCEPTABLE_ENCRYPTION_CAPABILITY) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_NO_ACCEPTABLE_ENCRYPTION_CAPABILITY(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_NO_ACCEPTABLE_ENCRYPTION_CAPABILITY:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_INVALID_AGREEMENT_TEXT) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_INVALID_AGREEMENT_TEXT(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_INVALID_AGREEMENT_TEXT:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_INVALID_SERVICE_TOKEN) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_INVALID_SERVICE_TOKEN(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_INVALID_SERVICE_TOKEN:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_INVALID_SIGNATURE) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_INVALID_SIGNATURE(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_INVALID_SIGNATURE:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_INVALID_SIGNING_ALGORITHM) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_INVALID_SIGNING_ALGORITHM(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_INVALID_SIGNING_ALGORITHM:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_INVALID_DOMAIN_ID) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_INVALID_DOMAIN_ID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_INVALID_DOMAIN_ID:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_INVALID_PROPERTY) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_INVALID_PROPERTY(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_INVALID_PROPERTY:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_INVALID_ACCESS_TYPE) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_INVALID_ACCESS_TYPE(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_INVALID_ACCESS_TYPE:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_ILLEGAL_SERVICE_TYPE) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_ILLEGAL_SERVICE_TYPE(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_ILLEGAL_SERVICE_TYPE:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_UNKNOWN_SERVICE_TYPE) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_UNKNOWN_SERVICE_TYPE(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_UNKNOWN_SERVICE_TYPE:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_MISSING_MANDATORY_PROPERTY) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_MISSING_MANDATORY_PROPERTY(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_MISSING_MANDATORY_PROPERTY:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_DUPLICATE_PROPERTY_NAME) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_DUPLICATE_PROPERTY_NAME(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_DUPLICATE_PROPERTY_NAME:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_PROPERTY_TYPE_MISMATCH) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_PROPERTY_TYPE_MISMATCH(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_PROPERTY_TYPE_MISMATCH:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_INVALID_CLIENT_APP_ID) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_INVALID_CLIENT_APP_ID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_INVALID_CLIENT_APP_ID:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_INVALID_AUTH_TYPE) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_INVALID_AUTH_TYPE(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_INVALID_AUTH_TYPE:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_INVALID_SAG_ID) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_INVALID_SAG_ID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_INVALID_SAG_ID:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_INVALID_SERVICE_PROFILE_ID) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_INVALID_SERVICE_PROFILE_ID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_INVALID_SERVICE_PROFILE_ID:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_INVALID_SERVICE_CONTRACT_ID) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_INVALID_SERVICE_CONTRACT_ID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_INVALID_SERVICE_CONTRACT_ID:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_INVALID_ACTIVITY_TEST_ID) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_INVALID_ACTIVITY_TEST_ID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_INVALID_ACTIVITY_TEST_ID:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_ILLEGAL_SERVICE_ID) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_ILLEGAL_SERVICE_ID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_ILLEGAL_SERVICE_ID:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_UNKNOWN_SERVICE_ID) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_UNKNOWN_SERVICE_ID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_UNKNOWN_SERVICE_ID:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_SERVICE_TYPE_UNAVAILABLE) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_SERVICE_TYPE_UNAVAILABLE(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_SERVICE_TYPE_UNAVAILABLE:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_INVALID_ADDITION_TO_SAG) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_INVALID_ADDITION_TO_SAG(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_INVALID_ADDITION_TO_SAG:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_INVALID_SAG_TO_SERVICE_PROFILE_ASSIGNMENT) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_INVALID_SAG_TO_SERVICE_PROFILE_ASSIGNMENT(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_INVALID_SAG_TO_SERVICE_PROFILE_ASSIGNMENT:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_NO_ACCEPTABLE_AUTHENTICATION_MECHANISM) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_NO_ACCEPTABLE_AUTHENTICATION_MECHANISM(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_NO_ACCEPTABLE_AUTHENTICATION_MECHANISM:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_fw_P_NO_ACCEPTABLE_SIGNING_ALGORITHM) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_fw_P_NO_ACCEPTABLE_SIGNING_ALGORITHM(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/fw/P_NO_ACCEPTABLE_SIGNING_ALGORITHM:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_ui_P_ID_NOT_FOUND) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_ui_P_ID_NOT_FOUND(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/ui/P_ID_NOT_FOUND:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_ui_P_ILLEGAL_ID) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_ui_P_ILLEGAL_ID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/ui/P_ILLEGAL_ID:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_ui_P_ILLEGAL_RANGE) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_ui_P_ILLEGAL_RANGE(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/ui/P_ILLEGAL_RANGE:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_ui_P_INVALID_COLLECTION_CRITERIA) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_ui_P_INVALID_COLLECTION_CRITERIA(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/ui/P_INVALID_COLLECTION_CRITERIA:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_mm_P_REQUESTED_ACCURACY_CANNOT_BE_DELIVERED) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_mm_P_REQUESTED_ACCURACY_CANNOT_BE_DELIVERED(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/mm/P_REQUESTED_ACCURACY_CANNOT_BE_DELIVERED:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_mm_P_REQUESTED_RESPONSE_TIME_CANNOT_BE_DELIVERED) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_mm_P_REQUESTED_RESPONSE_TIME_CANNOT_BE_DELIVERED(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/mm/P_REQUESTED_RESPONSE_TIME_CANNOT_BE_DELIVERED:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_mm_P_INVALID_REPORTING_INTERVAL) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_mm_P_INVALID_REPORTING_INTERVAL(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/mm/P_INVALID_REPORTING_INTERVAL:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_mm_P_TRIGGER_CONDITIONS_NOT_SUBSCRIBED) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_mm_P_TRIGGER_CONDITIONS_NOT_SUBSCRIBED(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/mm/P_TRIGGER_CONDITIONS_NOT_SUBSCRIBED:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_termcap_P_INVALID_TERMINAL_ID) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_termcap_P_INVALID_TERMINAL_ID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/termcap/P_INVALID_TERMINAL_ID:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_gms_P_GMS_INVALID_FOLDER_ID) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_gms_P_GMS_INVALID_FOLDER_ID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/gms/P_GMS_INVALID_FOLDER_ID:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_gms_P_GMS_INSUFFICIENT_PRIVILEGE) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_gms_P_GMS_INSUFFICIENT_PRIVILEGE(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/gms/P_GMS_INSUFFICIENT_PRIVILEGE:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_gms_P_GMS_INVALID_AUTHENTICATION_INFORMATION) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_gms_P_GMS_INVALID_AUTHENTICATION_INFORMATION(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/gms/P_GMS_INVALID_AUTHENTICATION_INFORMATION:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_gms_P_GMS_INVALID_MAILBOX) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_gms_P_GMS_INVALID_MAILBOX(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/gms/P_GMS_INVALID_MAILBOX:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_gms_P_GMS_INVALID_MESSAGE_ID) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_gms_P_GMS_INVALID_MESSAGE_ID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/gms/P_GMS_INVALID_MESSAGE_ID:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_gms_P_GMS_LOCKING_LOCKED_MAILBOX) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_gms_P_GMS_LOCKING_LOCKED_MAILBOX(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/gms/P_GMS_LOCKING_LOCKED_MAILBOX:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_gms_P_GMS_MESSAGE_NOT_REMOVED) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_gms_P_GMS_MESSAGE_NOT_REMOVED(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/gms/P_GMS_MESSAGE_NOT_REMOVED:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_gms_P_GMS_NUMBER_NOT_POSITIVE) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_gms_P_GMS_NUMBER_NOT_POSITIVE(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/gms/P_GMS_NUMBER_NOT_POSITIVE:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_gms_P_GMS_UNLOCKING_UNLOCKED_MAILBOX) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_gms_P_GMS_UNLOCKING_UNLOCKED_MAILBOX(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/gms/P_GMS_UNLOCKING_UNLOCKED_MAILBOX:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_gms_P_GMS_MAILBOX_LOCKED) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_gms_P_GMS_MAILBOX_LOCKED(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/gms/P_GMS_MAILBOX_LOCKED:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_gms_P_GMS_CANNOT_UNLOCK_MAILBOX) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_gms_P_GMS_CANNOT_UNLOCK_MAILBOX(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/gms/P_GMS_CANNOT_UNLOCK_MAILBOX:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_gms_P_GMS_PROPERTY_NOT_SET) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_gms_P_GMS_PROPERTY_NOT_SET(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/gms/P_GMS_PROPERTY_NOT_SET:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_gms_P_GMS_FOLDER_IS_OPEN) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_gms_P_GMS_FOLDER_IS_OPEN(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/gms/P_GMS_FOLDER_IS_OPEN:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_gms_P_GMS_MAILBOX_OPEN) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_gms_P_GMS_MAILBOX_OPEN(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/gms/P_GMS_MAILBOX_OPEN:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_UNKNOWN_VPRP_ID) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_UNKNOWN_VPRP_ID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_UNKNOWN_VPRP_ID:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_UNKNOWN_SLA_ID) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_UNKNOWN_SLA_ID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_UNKNOWN_SLA_ID:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_UNKNOWN_STATUS) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_UNKNOWN_STATUS(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_UNKNOWN_STATUS:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_UNKNOWN_QOS_INFO) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_UNKNOWN_QOS_INFO(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_UNKNOWN_QOS_INFO:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_UNKNOWN_VALIDITY_INFO) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_UNKNOWN_VALIDITY_INFO(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_UNKNOWN_VALIDITY_INFO:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_UNKNOWN_PIPEQOSINFO) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_UNKNOWN_PIPEQOSINFO(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_UNKNOWN_PIPEQOSINFO:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_UNKNOWN_DSCODEPOINT) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_UNKNOWN_DSCODEPOINT(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_UNKNOWN_DSCODEPOINT:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_ILLEGAL_VPRPID) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_ILLEGAL_VPRPID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_ILLEGAL_VPRPID:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_ILLEGAL_REF_VALUE) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_ILLEGAL_REF_VALUE(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_ILLEGAL_REF_VALUE:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_UNKNOWN_INTERFACE) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_UNKNOWN_INTERFACE(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_UNKNOWN_INTERFACE:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_CANT_DELETE_VPRP) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_CANT_DELETE_VPRP(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_CANT_DELETE_VPRP:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_UNKNOWN_TEMPLATES) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_UNKNOWN_TEMPLATES(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_UNKNOWN_TEMPLATES:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_UNKNOWN_MENU) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_UNKNOWN_MENU(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_UNKNOWN_MENU:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_UNKNOWN_ENTERPRISE_NETWORK) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_UNKNOWN_ENTERPRISE_NETWORK(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_UNKNOWN_ENTERPRISE_NETWORK:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_UNKNOWN_TEMPLATE_TYPE) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_UNKNOWN_TEMPLATE_TYPE(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_UNKNOWN_TEMPLATE_TYPE:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_UNKNOWN_DESCRIPTION) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_UNKNOWN_DESCRIPTION(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_UNKNOWN_DESCRIPTION:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_ILLEGAL_SLA_ID) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_ILLEGAL_SLA_ID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_ILLEGAL_SLA_ID:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_ILLEGAL_TAG) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_ILLEGAL_TAG(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_ILLEGAL_TAG:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_ILLEGAL_VALUE) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_ILLEGAL_VALUE(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_ILLEGAL_VALUE:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_ILLEGAL_COMBINATION) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_ILLEGAL_COMBINATION(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_ILLEGAL_COMBINATION:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_UNKNOWN_SITES) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_UNKNOWN_SITES(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_UNKNOWN_SITES:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_UNKNOWN_VPRN) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_UNKNOWN_VPRN(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_UNKNOWN_VPRN:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_ILLEGAL_SITE_ID) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_ILLEGAL_SITE_ID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_ILLEGAL_SITE_ID:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_UNKNOWN_SITE_ID) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_UNKNOWN_SITE_ID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_UNKNOWN_SITE_ID:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_UNKNOWN_SAPS) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_UNKNOWN_SAPS(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_UNKNOWN_SAPS:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_UNKNOWN_SITE_LOCATION) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_UNKNOWN_SITE_LOCATION(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_UNKNOWN_SITE_LOCATION:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_UNKNOWN_SITE_DESCRIPTION) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_UNKNOWN_SITE_DESCRIPTION(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_UNKNOWN_SITE_DESCRIPTION:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_UNKNOWN_IPSUBNET) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_UNKNOWN_IPSUBNET(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_UNKNOWN_IPSUBNET:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_UNKNOWN_SAP) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_UNKNOWN_SAP(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_UNKNOWN_SAP:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cm_P_UNKNOWN_VPRP) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cm_P_UNKNOWN_VPRP(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cm/P_UNKNOWN_VPRP:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_am_P_UNAUTHORIZED_APPLICATION) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_am_P_UNAUTHORIZED_APPLICATION(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/am/P_UNAUTHORIZED_APPLICATION:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cs_P_INVALID_USER) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cs_P_INVALID_USER(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cs/P_INVALID_USER:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cs_P_INVALID_ACCOUNT) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cs_P_INVALID_ACCOUNT(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cs/P_INVALID_ACCOUNT:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cs_P_INVALID_REQUEST_NUMBER) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cs_P_INVALID_REQUEST_NUMBER(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cs/P_INVALID_REQUEST_NUMBER:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_cs_P_INVALID_VOLUME) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_cs_P_INVALID_VOLUME(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/cs/P_INVALID_VOLUME:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_policy_P_ACCESS_VIOLATION) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_policy_P_ACCESS_VIOLATION(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/policy/P_ACCESS_VIOLATION:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_policy_P_SYNTAX_ERROR) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_policy_P_SYNTAX_ERROR(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/policy/P_SYNTAX_ERROR:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_policy_P_NAME_SPACE_ERROR) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_policy_P_NAME_SPACE_ERROR(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/policy/P_NAME_SPACE_ERROR:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_policy_P_NO_TRANSACTION_IN_PROCESS) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_policy_P_NO_TRANSACTION_IN_PROCESS(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/policy/P_NO_TRANSACTION_IN_PROCESS:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_policy_P_TRANSACTION_IN_PROCESS) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_policy_P_TRANSACTION_IN_PROCESS(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/policy/P_TRANSACTION_IN_PROCESS:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_UNKNOWN_TYPE) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_UNKNOWN_TYPE(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_UNKNOWN_TYPE:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_UNKNOWN_MEMBER) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_UNKNOWN_MEMBER(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_UNKNOWN_MEMBER:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_UNKNOWN_IDENTITY) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_UNKNOWN_IDENTITY(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_UNKNOWN_IDENTITY:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_UNKNOWN_GROUP) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_UNKNOWN_GROUP(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_UNKNOWN_GROUP:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_UNKNOWN_CAPABILITY) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_UNKNOWN_CAPABILITY(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_UNKNOWN_CAPABILITY:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_UNKNOWN_ATTRIBUTES) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_UNKNOWN_ATTRIBUTES(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_UNKNOWN_ATTRIBUTES:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_UNKNOWN_ATTRIBUTE) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_UNKNOWN_ATTRIBUTE(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_UNKNOWN_ATTRIBUTE:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_UNKNOWN_ASSIGNMENT) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_UNKNOWN_ASSIGNMENT(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_UNKNOWN_ASSIGNMENT:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_UNKNOWN_ALIAS) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_UNKNOWN_ALIAS(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_UNKNOWN_ALIAS:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_UNKNOWN_AGENT) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_UNKNOWN_AGENT(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_UNKNOWN_AGENT:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_UNASSIGNED_ALIAS) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_UNASSIGNED_ALIAS(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_UNASSIGNED_ALIAS:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_TYPE_EXISTS) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_TYPE_EXISTS(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_TYPE_EXISTS:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_TYPE_ASSOCIATED) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_TYPE_ASSOCIATED(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_TYPE_ASSOCIATED:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_NOT_REGISTERED) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_NOT_REGISTERED(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_NOT_REGISTERED:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_NOT_MEMBER) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_NOT_MEMBER(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_NOT_MEMBER:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_NO_CAPABILITY) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_NO_CAPABILITY(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_NO_CAPABILITY:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_MEMBER_EXISTS) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_MEMBER_EXISTS(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_MEMBER_EXISTS:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_IS_CYCLIC) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_IS_CYCLIC(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_IS_CYCLIC:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_IDENTITY_EXISTS) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_IDENTITY_EXISTS(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_IDENTITY_EXISTS:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_DISASSOCIATED_TYPE) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_DISASSOCIATED_TYPE(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_DISASSOCIATED_TYPE:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_ATTRIBUTE_EXISTS) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_ATTRIBUTE_EXISTS(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_ATTRIBUTE_EXISTS:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_ALIAS_NOT_UNIQUE) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_ALIAS_NOT_UNIQUE(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_ALIAS_NOT_UNIQUE:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_ALIAS_EXISTS) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_ALIAS_EXISTS(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_ALIAS_EXISTS:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_AGENT_EXISTS) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_AGENT_EXISTS(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_AGENT_EXISTS:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_UNAVAILABLE_INTERFACE) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_UNAVAILABLE_INTERFACE(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_UNAVAILABLE_INTERFACE:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_pam_P_PAM_INVALID_CREDENTIAL) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_pam_P_PAM_INVALID_CREDENTIAL(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/pam/P_PAM_INVALID_CREDENTIAL:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_mmm_P_MMM_INVALID_AUTHENTICATION_INFORMATION) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_mmm_P_MMM_INVALID_AUTHENTICATION_INFORMATION(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/mmm/P_MMM_INVALID_AUTHENTICATION_INFORMATION:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_mmm_P_MMM_INVALID_MAILBOX) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_mmm_P_MMM_INVALID_MAILBOX(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/mmm/P_MMM_INVALID_MAILBOX:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_mmm_P_MMM_INVALID_DELIVERY_TYPE) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_mmm_P_MMM_INVALID_DELIVERY_TYPE(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/mmm/P_MMM_INVALID_DELIVERY_TYPE:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_mmm_P_MMM_MAX_MESSAGE_SIZE_EXCEEDED) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_mmm_P_MMM_MAX_MESSAGE_SIZE_EXCEEDED(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/mmm/P_MMM_MAX_MESSAGE_SIZE_EXCEEDED:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_mmm_P_MMM_INVALID_FOLDER_ID) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_mmm_P_MMM_INVALID_FOLDER_ID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/mmm/P_MMM_INVALID_FOLDER_ID:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_mmm_P_MMM_INVALID_MESSAGE_ID) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_mmm_P_MMM_INVALID_MESSAGE_ID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/mmm/P_MMM_INVALID_MESSAGE_ID:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_mmm_P_MMM_INVALID_PART_ID) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_mmm_P_MMM_INVALID_PART_ID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/mmm/P_MMM_INVALID_PART_ID:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_mmm_P_MMM_DELIVERY_TYPE_ADDRESS_TYPE_MISMATCH) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_mmm_P_MMM_DELIVERY_TYPE_ADDRESS_TYPE_MISMATCH(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/mmm/P_MMM_DELIVERY_TYPE_ADDRESS_TYPE_MISMATCH:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_mmm_P_MMM_DELIVERY_TYPE_MESSAGE_TYPE_MISMATCH) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_mmm_P_MMM_DELIVERY_TYPE_MESSAGE_TYPE_MISMATCH(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/mmm/P_MMM_DELIVERY_TYPE_MESSAGE_TYPE_MISMATCH:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_mmm_P_MMM_INVALID_PROPERTY) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_mmm_P_MMM_INVALID_PROPERTY(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/mmm/P_MMM_INVALID_PROPERTY:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_mmm_P_MMM_INVALID_DELIVERY_TIME) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_mmm_P_MMM_INVALID_DELIVERY_TIME(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/mmm/P_MMM_INVALID_DELIVERY_TIME:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_mmm_P_MMM_INVALID_VALIDITY_TIME) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_mmm_P_MMM_INVALID_VALIDITY_TIME(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/mmm/P_MMM_INVALID_VALIDITY_TIME:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_mmm_P_MMM_MAX_SUBJECT_SIZE_EXCEEDED) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_mmm_P_MMM_MAX_SUBJECT_SIZE_EXCEEDED(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/mmm/P_MMM_MAX_SUBJECT_SIZE_EXCEEDED:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_mmm_P_MMM_INFORMATION_NOT_AVAILABLE) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_mmm_P_MMM_INFORMATION_NOT_AVAILABLE(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/mmm/P_MMM_INFORMATION_NOT_AVAILABLE:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_mmm_P_MMM_CANNOT_CANCEL) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_mmm_P_MMM_CANNOT_CANCEL(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/mmm/P_MMM_CANNOT_CANCEL:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_org_csapi_mmm_P_MMM_INVALID_HEADER) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_org_csapi_mmm_P_MMM_INVALID_HEADER(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:org/csapi/mmm/P_MMM_INVALID_HEADER:1.0 */
+ return TRUE;
+ }
+
+
+
+ return FALSE; /* user exception not found */
+
+}
+
+/* Begin Attribute Helper Functions */
+
+
+/* End Attribute Helper Functions */
+
+/*
+ * IDL:org/csapi/IpService/setCallback:1.0
+ */
+
+static void decode_org_csapi_IpService_setCallback(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/IpService/setCallbackWithSessionID:1.0
+ */
+
+static void decode_org_csapi_IpService_setCallbackWithSessionID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_access/trust_and_security/IpInitial/initiateAuthentication:1.0
+ */
+
+static void decode_org_csapi_fw_fw_access_trust_and_security_IpInitial_initiateAuthentication(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_fw_TpAuthDomain" */
+
+
+
+ decode_org_csapi_fw_TpAuthDomain_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpAuthDomain" */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"authType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_fw_TpAuthDomain" */
+
+
+
+ decode_org_csapi_fw_TpAuthDomain_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpAuthDomain" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_access/trust_and_security/IpInitial/initiateAuthenticationWithVersion:1.0
+ */
+
+static void decode_org_csapi_fw_fw_access_trust_and_security_IpInitial_initiateAuthenticationWithVersion(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_fw_TpAuthDomain" */
+
+
+
+ decode_org_csapi_fw_TpAuthDomain_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpAuthDomain" */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"authType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"frameworkVersion (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_fw_TpAuthDomain" */
+
+
+
+ decode_org_csapi_fw_TpAuthDomain_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpAuthDomain" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_access/trust_and_security/IpAuthentication/requestAccess:1.0
+ */
+
+static void decode_org_csapi_fw_fw_access_trust_and_security_IpAuthentication_requestAccess(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"accessType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_access/trust_and_security/IpClientAccess/terminateAccess:1.0
+ */
+
+static void decode_org_csapi_fw_fw_access_trust_and_security_IpClientAccess_terminateAccess(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_digitalSignature;
+ guint32 i_digitalSignature;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"terminationText (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"signingAlgorithm (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_digitalSignature = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of digitalSignature = %u",u_octet4_loop_digitalSignature);
+ }
+
+ for (i_digitalSignature=0; i_digitalSignature < u_octet4_loop_digitalSignature; i_digitalSignature++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"digitalSignature = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_access/trust_and_security/IpAccess/obtainInterface:1.0
+ */
+
+static void decode_org_csapi_fw_fw_access_trust_and_security_IpAccess_obtainInterface(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"interfaceName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_access/trust_and_security/IpAccess/obtainInterfaceWithCallback:1.0
+ */
+
+static void decode_org_csapi_fw_fw_access_trust_and_security_IpAccess_obtainInterfaceWithCallback(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"interfaceName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_access/trust_and_security/IpAccess/endAccess:1.0
+ */
+
+static void decode_org_csapi_fw_fw_access_trust_and_security_IpAccess_endAccess(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_endAccessProperties;
+ guint32 i_endAccessProperties;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_endAccessProperties = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of endAccessProperties = %u",u_octet4_loop_endAccessProperties);
+ }
+
+ for (i_endAccessProperties=0; i_endAccessProperties < u_octet4_loop_endAccessProperties; i_endAccessProperties++) {
+
+ /* Begin struct "org_csapi_fw_TpProperty" */
+
+
+
+ decode_org_csapi_fw_TpProperty_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpProperty" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_access/trust_and_security/IpAccess/listInterfaces:1.0
+ */
+
+static void decode_org_csapi_fw_fw_access_trust_and_security_IpAccess_listInterfaces(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpInterfaceNameList;
+ guint32 i_TpInterfaceNameList;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpInterfaceNameList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpInterfaceNameList = %u",u_octet4_loop_TpInterfaceNameList);
+ }
+
+ for (i_TpInterfaceNameList=0; i_TpInterfaceNameList < u_octet4_loop_TpInterfaceNameList; i_TpInterfaceNameList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpInterfaceNameList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_access/trust_and_security/IpAccess/releaseInterface:1.0
+ */
+
+static void decode_org_csapi_fw_fw_access_trust_and_security_IpAccess_releaseInterface(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"interfaceName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_access/trust_and_security/IpAccess/selectSigningAlgorithm:1.0
+ */
+
+static void decode_org_csapi_fw_fw_access_trust_and_security_IpAccess_selectSigningAlgorithm(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"signingAlgorithmCaps (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpSigningAlgorithm (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_access/trust_and_security/IpAccess/terminateAccess:1.0
+ */
+
+static void decode_org_csapi_fw_fw_access_trust_and_security_IpAccess_terminateAccess(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_digitalSignature;
+ guint32 i_digitalSignature;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"terminationText (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_digitalSignature = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of digitalSignature = %u",u_octet4_loop_digitalSignature);
+ }
+
+ for (i_digitalSignature=0; i_digitalSignature < u_octet4_loop_digitalSignature; i_digitalSignature++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"digitalSignature = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_access/trust_and_security/IpAccess/relinquishInterface:1.0
+ */
+
+static void decode_org_csapi_fw_fw_access_trust_and_security_IpAccess_relinquishInterface(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_digitalSignature;
+ guint32 i_digitalSignature;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"interfaceName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"terminationText (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_digitalSignature = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of digitalSignature = %u",u_octet4_loop_digitalSignature);
+ }
+
+ for (i_digitalSignature=0; i_digitalSignature < u_octet4_loop_digitalSignature; i_digitalSignature++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"digitalSignature = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_access/trust_and_security/IpClientAPILevelAuthentication/authenticate:1.0
+ */
+
+static void decode_org_csapi_fw_fw_access_trust_and_security_IpClientAPILevelAuthentication_authenticate(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_challenge;
+ guint32 i_challenge;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpOctetSet;
+ guint32 i_TpOctetSet;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_challenge = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of challenge = %u",u_octet4_loop_challenge);
+ }
+
+ for (i_challenge=0; i_challenge < u_octet4_loop_challenge; i_challenge++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"challenge = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpOctetSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpOctetSet = %u",u_octet4_loop_TpOctetSet);
+ }
+
+ for (i_TpOctetSet=0; i_TpOctetSet < u_octet4_loop_TpOctetSet; i_TpOctetSet++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpOctetSet = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_access/trust_and_security/IpClientAPILevelAuthentication/abortAuthentication:1.0
+ */
+
+static void decode_org_csapi_fw_fw_access_trust_and_security_IpClientAPILevelAuthentication_abortAuthentication(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_access/trust_and_security/IpClientAPILevelAuthentication/authenticationSucceeded:1.0
+ */
+
+static void decode_org_csapi_fw_fw_access_trust_and_security_IpClientAPILevelAuthentication_authenticationSucceeded(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_access/trust_and_security/IpClientAPILevelAuthentication/challenge:1.0
+ */
+
+static void decode_org_csapi_fw_fw_access_trust_and_security_IpClientAPILevelAuthentication_challenge(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_challenge;
+ guint32 i_challenge;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpOctetSet;
+ guint32 i_TpOctetSet;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_challenge = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of challenge = %u",u_octet4_loop_challenge);
+ }
+
+ for (i_challenge=0; i_challenge < u_octet4_loop_challenge; i_challenge++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"challenge = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpOctetSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpOctetSet = %u",u_octet4_loop_TpOctetSet);
+ }
+
+ for (i_TpOctetSet=0; i_TpOctetSet < u_octet4_loop_TpOctetSet; i_TpOctetSet++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpOctetSet = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_access/trust_and_security/IpAPILevelAuthentication/selectEncryptionMethod:1.0
+ */
+
+static void decode_org_csapi_fw_fw_access_trust_and_security_IpAPILevelAuthentication_selectEncryptionMethod(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"encryptionCaps (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpEncryptionCapability (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_access/trust_and_security/IpAPILevelAuthentication/authenticate:1.0
+ */
+
+static void decode_org_csapi_fw_fw_access_trust_and_security_IpAPILevelAuthentication_authenticate(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_challenge;
+ guint32 i_challenge;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpOctetSet;
+ guint32 i_TpOctetSet;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_challenge = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of challenge = %u",u_octet4_loop_challenge);
+ }
+
+ for (i_challenge=0; i_challenge < u_octet4_loop_challenge; i_challenge++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"challenge = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpOctetSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpOctetSet = %u",u_octet4_loop_TpOctetSet);
+ }
+
+ for (i_TpOctetSet=0; i_TpOctetSet < u_octet4_loop_TpOctetSet; i_TpOctetSet++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpOctetSet = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_access/trust_and_security/IpAPILevelAuthentication/abortAuthentication:1.0
+ */
+
+static void decode_org_csapi_fw_fw_access_trust_and_security_IpAPILevelAuthentication_abortAuthentication(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_access/trust_and_security/IpAPILevelAuthentication/authenticationSucceeded:1.0
+ */
+
+static void decode_org_csapi_fw_fw_access_trust_and_security_IpAPILevelAuthentication_authenticationSucceeded(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_access/trust_and_security/IpAPILevelAuthentication/selectAuthenticationMechanism:1.0
+ */
+
+static void decode_org_csapi_fw_fw_access_trust_and_security_IpAPILevelAuthentication_selectAuthenticationMechanism(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"authMechanismList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpAuthMechanism (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_access/trust_and_security/IpAPILevelAuthentication/challenge:1.0
+ */
+
+static void decode_org_csapi_fw_fw_access_trust_and_security_IpAPILevelAuthentication_challenge(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_challenge;
+ guint32 i_challenge;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpOctetSet;
+ guint32 i_TpOctetSet;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_challenge = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of challenge = %u",u_octet4_loop_challenge);
+ }
+
+ for (i_challenge=0; i_challenge < u_octet4_loop_challenge; i_challenge++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"challenge = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpOctetSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpOctetSet = %u",u_octet4_loop_TpOctetSet);
+ }
+
+ for (i_TpOctetSet=0; i_TpOctetSet < u_octet4_loop_TpOctetSet; i_TpOctetSet++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpOctetSet = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/notification/IpAppEventNotification/reportNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_notification_IpAppEventNotification_reportNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin union "org_csapi_fw_TpFwEventInfo" */
+
+
+ decode_org_csapi_fw_TpFwEventInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_fw_TpFwEventInfo" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/notification/IpAppEventNotification/notificationTerminated:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_notification_IpAppEventNotification_notificationTerminated(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/notification/IpEventNotification/createNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_notification_IpEventNotification_createNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin union "org_csapi_fw_TpFwEventCriteria" */
+
+
+ decode_org_csapi_fw_TpFwEventCriteria_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_fw_TpFwEventCriteria" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/notification/IpEventNotification/destroyNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_notification_IpEventNotification_destroyNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppFaultManager/activityTestRes:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_activityTestRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"activityTestID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"activityTestResult (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppFaultManager/appActivityTestReq:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_appActivityTestReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"activityTestID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppFaultManager/fwFaultReportInd:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_fwFaultReportInd(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"fault = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpInterfaceFault,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppFaultManager/fwFaultRecoveryInd:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_fwFaultRecoveryInd(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"fault = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpInterfaceFault,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppFaultManager/svcUnavailableInd:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_svcUnavailableInd(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"reason = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpSvcUnavailReason,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppFaultManager/genFaultStatsRecordRes:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_genFaultStatsRecordRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_serviceIDs;
+ guint32 i_serviceIDs;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_fw_TpFaultStatsRecord" */
+
+
+
+ decode_org_csapi_fw_TpFaultStatsRecord_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpFaultStatsRecord" */
+
+ u_octet4_loop_serviceIDs = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of serviceIDs = %u",u_octet4_loop_serviceIDs);
+ }
+
+ for (i_serviceIDs=0; i_serviceIDs < u_octet4_loop_serviceIDs; i_serviceIDs++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceIDs (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppFaultManager/fwUnavailableInd:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_fwUnavailableInd(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"reason = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpFwUnavailReason,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppFaultManager/activityTestErr:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_activityTestErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"activityTestID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppFaultManager/genFaultStatsRecordErr:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_genFaultStatsRecordErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ guint32 u_octet4_loop_serviceIDs;
+ guint32 i_serviceIDs;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"faultStatisticsError = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpFaultStatisticsError,"Unknown Enum Value"));
+ }
+
+ u_octet4_loop_serviceIDs = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of serviceIDs = %u",u_octet4_loop_serviceIDs);
+ }
+
+ for (i_serviceIDs=0; i_serviceIDs < u_octet4_loop_serviceIDs; i_serviceIDs++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceIDs (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppFaultManager/appUnavailableInd:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_appUnavailableInd(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppFaultManager/genFaultStatsRecordReq:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_genFaultStatsRecordReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_TpTimeInterval" */
+
+
+
+ decode_org_csapi_TpTimeInterval_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpTimeInterval" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppFaultManager/svcAvailStatusInd:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_svcAvailStatusInd(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"reason = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpSvcAvailStatusReason,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppFaultManager/generateFaultStatisticsRecordRes:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_generateFaultStatisticsRecordRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_serviceIDs;
+ guint32 i_serviceIDs;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"faultStatsReqID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_fw_TpFaultStatsRecord" */
+
+
+
+ decode_org_csapi_fw_TpFaultStatsRecord_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpFaultStatsRecord" */
+
+ u_octet4_loop_serviceIDs = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of serviceIDs = %u",u_octet4_loop_serviceIDs);
+ }
+
+ for (i_serviceIDs=0; i_serviceIDs < u_octet4_loop_serviceIDs; i_serviceIDs++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceIDs (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppFaultManager/generateFaultStatisticsRecordErr:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_generateFaultStatisticsRecordErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_faultStatistics;
+ guint32 i_faultStatistics;
+ guint32 u_octet4;
+ guint32 u_octet4_loop_serviceIDs;
+ guint32 i_serviceIDs;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"faultStatsReqID = %i",s_octet4);
+ }
+
+ u_octet4_loop_faultStatistics = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of faultStatistics = %u",u_octet4_loop_faultStatistics);
+ }
+
+ for (i_faultStatistics=0; i_faultStatistics < u_octet4_loop_faultStatistics; i_faultStatistics++) {
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"faultStatistics = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpFaultStatisticsError,"Unknown Enum Value"));
+ }
+
+ }
+
+ u_octet4_loop_serviceIDs = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of serviceIDs = %u",u_octet4_loop_serviceIDs);
+ }
+
+ for (i_serviceIDs=0; i_serviceIDs < u_octet4_loop_serviceIDs; i_serviceIDs++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceIDs (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppFaultManager/generateFaultStatisticsRecordReq:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_generateFaultStatisticsRecordReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"faultStatsReqID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_TpTimeInterval" */
+
+
+
+ decode_org_csapi_TpTimeInterval_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpTimeInterval" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppFaultManager/fwAvailStatusInd:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_fwAvailStatusInd(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"reason = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpFwAvailStatusReason,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppLoadManager/queryAppLoadReq:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppLoadManager_queryAppLoadReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_TpTimeInterval" */
+
+
+
+ decode_org_csapi_TpTimeInterval_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpTimeInterval" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppLoadManager/queryLoadRes:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppLoadManager_queryLoadRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_loadStatistics;
+ guint32 i_loadStatistics;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_loadStatistics = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of loadStatistics = %u",u_octet4_loop_loadStatistics);
+ }
+
+ for (i_loadStatistics=0; i_loadStatistics < u_octet4_loop_loadStatistics; i_loadStatistics++) {
+
+ /* Begin struct "org_csapi_fw_TpLoadStatistic" */
+
+
+
+ decode_org_csapi_fw_TpLoadStatistic_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpLoadStatistic" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppLoadManager/queryLoadErr:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppLoadManager_queryLoadErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"loadStatisticsError = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpLoadStatisticError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppLoadManager/loadLevelNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppLoadManager_loadLevelNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_loadStatistics;
+ guint32 i_loadStatistics;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_loadStatistics = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of loadStatistics = %u",u_octet4_loop_loadStatistics);
+ }
+
+ for (i_loadStatistics=0; i_loadStatistics < u_octet4_loop_loadStatistics; i_loadStatistics++) {
+
+ /* Begin struct "org_csapi_fw_TpLoadStatistic" */
+
+
+
+ decode_org_csapi_fw_TpLoadStatistic_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpLoadStatistic" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppLoadManager/resumeNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppLoadManager_resumeNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppLoadManager/suspendNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppLoadManager_suspendNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppLoadManager/createLoadLevelNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppLoadManager_createLoadLevelNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppLoadManager/destroyLoadLevelNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppLoadManager_destroyLoadLevelNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppLoadManager/queryAppLoadStatsReq:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppLoadManager_queryAppLoadStatsReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"loadStatsReqID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_TpTimeInterval" */
+
+
+
+ decode_org_csapi_TpTimeInterval_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpTimeInterval" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppLoadManager/queryLoadStatsRes:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppLoadManager_queryLoadStatsRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_loadStatistics;
+ guint32 i_loadStatistics;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"loadStatsReqID = %i",s_octet4);
+ }
+
+ u_octet4_loop_loadStatistics = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of loadStatistics = %u",u_octet4_loop_loadStatistics);
+ }
+
+ for (i_loadStatistics=0; i_loadStatistics < u_octet4_loop_loadStatistics; i_loadStatistics++) {
+
+ /* Begin struct "org_csapi_fw_TpLoadStatistic" */
+
+
+
+ decode_org_csapi_fw_TpLoadStatistic_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpLoadStatistic" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppLoadManager/queryLoadStatsErr:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppLoadManager_queryLoadStatsErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"loadStatsReqID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"loadStatisticsError = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpLoadStatisticError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpLoadManager/reportLoad:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpLoadManager_reportLoad(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"loadLevel = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpLoadLevel,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpLoadManager/queryLoadReq:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpLoadManager_queryLoadReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_serviceIDs;
+ guint32 i_serviceIDs;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_serviceIDs = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of serviceIDs = %u",u_octet4_loop_serviceIDs);
+ }
+
+ for (i_serviceIDs=0; i_serviceIDs < u_octet4_loop_serviceIDs; i_serviceIDs++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceIDs (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ /* Begin struct "org_csapi_TpTimeInterval" */
+
+
+
+ decode_org_csapi_TpTimeInterval_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpTimeInterval" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpLoadManager/queryAppLoadRes:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpLoadManager_queryAppLoadRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_loadStatistics;
+ guint32 i_loadStatistics;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_loadStatistics = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of loadStatistics = %u",u_octet4_loop_loadStatistics);
+ }
+
+ for (i_loadStatistics=0; i_loadStatistics < u_octet4_loop_loadStatistics; i_loadStatistics++) {
+
+ /* Begin struct "org_csapi_fw_TpLoadStatistic" */
+
+
+
+ decode_org_csapi_fw_TpLoadStatistic_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpLoadStatistic" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpLoadManager/queryAppLoadErr:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpLoadManager_queryAppLoadErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"loadStatisticsError = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpLoadStatisticError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpLoadManager/createLoadLevelNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpLoadManager_createLoadLevelNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_serviceIDs;
+ guint32 i_serviceIDs;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_serviceIDs = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of serviceIDs = %u",u_octet4_loop_serviceIDs);
+ }
+
+ for (i_serviceIDs=0; i_serviceIDs < u_octet4_loop_serviceIDs; i_serviceIDs++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceIDs (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpLoadManager/destroyLoadLevelNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpLoadManager_destroyLoadLevelNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_serviceIDs;
+ guint32 i_serviceIDs;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_serviceIDs = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of serviceIDs = %u",u_octet4_loop_serviceIDs);
+ }
+
+ for (i_serviceIDs=0; i_serviceIDs < u_octet4_loop_serviceIDs; i_serviceIDs++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceIDs (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpLoadManager/resumeNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpLoadManager_resumeNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_serviceIDs;
+ guint32 i_serviceIDs;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_serviceIDs = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of serviceIDs = %u",u_octet4_loop_serviceIDs);
+ }
+
+ for (i_serviceIDs=0; i_serviceIDs < u_octet4_loop_serviceIDs; i_serviceIDs++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceIDs (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpLoadManager/suspendNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpLoadManager_suspendNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_serviceIDs;
+ guint32 i_serviceIDs;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_serviceIDs = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of serviceIDs = %u",u_octet4_loop_serviceIDs);
+ }
+
+ for (i_serviceIDs=0; i_serviceIDs < u_octet4_loop_serviceIDs; i_serviceIDs++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceIDs (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpLoadManager/queryLoadStatsReq:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpLoadManager_queryLoadStatsReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_serviceIDs;
+ guint32 i_serviceIDs;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"loadStatsReqID = %i",s_octet4);
+ }
+
+ u_octet4_loop_serviceIDs = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of serviceIDs = %u",u_octet4_loop_serviceIDs);
+ }
+
+ for (i_serviceIDs=0; i_serviceIDs < u_octet4_loop_serviceIDs; i_serviceIDs++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceIDs (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ /* Begin struct "org_csapi_TpTimeInterval" */
+
+
+
+ decode_org_csapi_TpTimeInterval_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpTimeInterval" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpLoadManager/queryAppLoadStatsRes:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpLoadManager_queryAppLoadStatsRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_loadStatistics;
+ guint32 i_loadStatistics;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"loadStatsReqID = %i",s_octet4);
+ }
+
+ u_octet4_loop_loadStatistics = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of loadStatistics = %u",u_octet4_loop_loadStatistics);
+ }
+
+ for (i_loadStatistics=0; i_loadStatistics < u_octet4_loop_loadStatistics; i_loadStatistics++) {
+
+ /* Begin struct "org_csapi_fw_TpLoadStatistic" */
+
+
+
+ decode_org_csapi_fw_TpLoadStatistic_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpLoadStatistic" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpLoadManager/queryAppLoadStatsErr:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpLoadManager_queryAppLoadStatsErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"loadStatsReqID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"loadStatisticsError = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpLoadStatisticError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppOAM/systemDateTimeQuery:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppOAM_systemDateTimeQuery(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"systemDateAndTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpDateAndTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpOAM/systemDateTimeQuery:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpOAM_systemDateTimeQuery(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"clientDateAndTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpDateAndTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpFaultManager/activityTestReq:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpFaultManager_activityTestReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"activityTestID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"svcID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpFaultManager/appActivityTestRes:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpFaultManager_appActivityTestRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"activityTestID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"activityTestResult (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpFaultManager/svcUnavailableInd:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpFaultManager_svcUnavailableInd(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpFaultManager/genFaultStatsRecordReq:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpFaultManager_genFaultStatsRecordReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_serviceIDs;
+ guint32 i_serviceIDs;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_TpTimeInterval" */
+
+
+
+ decode_org_csapi_TpTimeInterval_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpTimeInterval" */
+
+ u_octet4_loop_serviceIDs = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of serviceIDs = %u",u_octet4_loop_serviceIDs);
+ }
+
+ for (i_serviceIDs=0; i_serviceIDs < u_octet4_loop_serviceIDs; i_serviceIDs++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceIDs (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpFaultManager/appActivityTestErr:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpFaultManager_appActivityTestErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"activityTestID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpFaultManager/appUnavailableInd:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpFaultManager_appUnavailableInd(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpFaultManager/genFaultStatsRecordRes:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpFaultManager_genFaultStatsRecordRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_fw_TpFaultStatsRecord" */
+
+
+
+ decode_org_csapi_fw_TpFaultStatsRecord_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpFaultStatsRecord" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpFaultManager/genFaultStatsRecordErr:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpFaultManager_genFaultStatsRecordErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"faultStatisticsError = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpFaultStatisticsError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpFaultManager/appAvailStatusInd:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpFaultManager_appAvailStatusInd(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"reason = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpAppAvailStatusReason,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpFaultManager/generateFaultStatisticsRecordReq:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpFaultManager_generateFaultStatisticsRecordReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_serviceIDs;
+ guint32 i_serviceIDs;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"faultStatsReqID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_TpTimeInterval" */
+
+
+
+ decode_org_csapi_TpTimeInterval_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpTimeInterval" */
+
+ u_octet4_loop_serviceIDs = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of serviceIDs = %u",u_octet4_loop_serviceIDs);
+ }
+
+ for (i_serviceIDs=0; i_serviceIDs < u_octet4_loop_serviceIDs; i_serviceIDs++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceIDs (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpFaultManager/generateFaultStatisticsRecordRes:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpFaultManager_generateFaultStatisticsRecordRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"faultStatsReqID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_fw_TpFaultStatsRecord" */
+
+
+
+ decode_org_csapi_fw_TpFaultStatsRecord_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpFaultStatsRecord" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpFaultManager/generateFaultStatisticsRecordErr:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpFaultManager_generateFaultStatisticsRecordErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"faultStatsReqID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"faultStatisticsError = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpFaultStatisticsError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpHeartBeatMgmt/enableHeartBeat:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpHeartBeatMgmt_enableHeartBeat(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"interval = %i",s_octet4);
+ }
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpHeartBeatMgmt/disableHeartBeat:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpHeartBeatMgmt_disableHeartBeat(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpHeartBeatMgmt/changeInterval:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpHeartBeatMgmt_changeInterval(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"interval = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppHeartBeat/pulse:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppHeartBeat_pulse(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpHeartBeat/pulse:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpHeartBeat_pulse(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppHeartBeatMgmt/enableAppHeartBeat:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppHeartBeatMgmt_enableAppHeartBeat(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"interval = %i",s_octet4);
+ }
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppHeartBeatMgmt/disableAppHeartBeat:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppHeartBeatMgmt_disableAppHeartBeat(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/integrity/IpAppHeartBeatMgmt/changeInterval:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_integrity_IpAppHeartBeatMgmt_changeInterval(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"interval = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/discovery/IpServiceDiscovery/listServiceTypes:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_discovery_IpServiceDiscovery_listServiceTypes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpServiceTypeNameList;
+ guint32 i_TpServiceTypeNameList;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpServiceTypeNameList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpServiceTypeNameList = %u",u_octet4_loop_TpServiceTypeNameList);
+ }
+
+ for (i_TpServiceTypeNameList=0; i_TpServiceTypeNameList < u_octet4_loop_TpServiceTypeNameList; i_TpServiceTypeNameList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceTypeNameList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/discovery/IpServiceDiscovery/describeServiceType:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_discovery_IpServiceDiscovery_describeServiceType(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_fw_TpServiceTypeDescription" */
+
+
+
+ decode_org_csapi_fw_TpServiceTypeDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpServiceTypeDescription" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/discovery/IpServiceDiscovery/discoverService:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_discovery_IpServiceDiscovery_discoverService(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_desiredPropertyList;
+ guint32 i_desiredPropertyList;
+ gint32 s_octet4;
+ guint32 u_octet4_loop_TpServiceList;
+ guint32 i_TpServiceList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceTypeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_desiredPropertyList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of desiredPropertyList = %u",u_octet4_loop_desiredPropertyList);
+ }
+
+ for (i_desiredPropertyList=0; i_desiredPropertyList < u_octet4_loop_desiredPropertyList; i_desiredPropertyList++) {
+
+ /* Begin struct "org_csapi_fw_TpServiceProperty" */
+
+
+
+ decode_org_csapi_fw_TpServiceProperty_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpServiceProperty" */
+
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"max = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpServiceList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpServiceList = %u",u_octet4_loop_TpServiceList);
+ }
+
+ for (i_TpServiceList=0; i_TpServiceList < u_octet4_loop_TpServiceList; i_TpServiceList++) {
+
+ /* Begin struct "org_csapi_fw_TpService" */
+
+
+
+ decode_org_csapi_fw_TpService_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpService" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/discovery/IpServiceDiscovery/listSubscribedServices:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_discovery_IpServiceDiscovery_listSubscribedServices(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpServiceList;
+ guint32 i_TpServiceList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpServiceList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpServiceList = %u",u_octet4_loop_TpServiceList);
+ }
+
+ for (i_TpServiceList=0; i_TpServiceList < u_octet4_loop_TpServiceList; i_TpServiceList++) {
+
+ /* Begin struct "org_csapi_fw_TpService" */
+
+
+
+ decode_org_csapi_fw_TpService_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpService" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/service_agreement/IpAppServiceAgreementManagement/signServiceAgreement:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_service_agreement_IpAppServiceAgreementManagement_signServiceAgreement(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpOctetSet;
+ guint32 i_TpOctetSet;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceToken (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agreementText (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"signingAlgorithm (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpOctetSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpOctetSet = %u",u_octet4_loop_TpOctetSet);
+ }
+
+ for (i_TpOctetSet=0; i_TpOctetSet < u_octet4_loop_TpOctetSet; i_TpOctetSet++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpOctetSet = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/service_agreement/IpAppServiceAgreementManagement/terminateServiceAgreement:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_service_agreement_IpAppServiceAgreementManagement_terminateServiceAgreement(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_digitalSignature;
+ guint32 i_digitalSignature;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceToken (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"terminationText (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_digitalSignature = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of digitalSignature = %u",u_octet4_loop_digitalSignature);
+ }
+
+ for (i_digitalSignature=0; i_digitalSignature < u_octet4_loop_digitalSignature; i_digitalSignature++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"digitalSignature = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/service_agreement/IpServiceAgreementManagement/signServiceAgreement:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_service_agreement_IpServiceAgreementManagement_signServiceAgreement(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceToken (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agreementText (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"signingAlgorithm (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_fw_TpSignatureAndServiceMgr" */
+
+
+
+ decode_org_csapi_fw_TpSignatureAndServiceMgr_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpSignatureAndServiceMgr" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/service_agreement/IpServiceAgreementManagement/terminateServiceAgreement:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_service_agreement_IpServiceAgreementManagement_terminateServiceAgreement(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_digitalSignature;
+ guint32 i_digitalSignature;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceToken (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"terminationText (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_digitalSignature = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of digitalSignature = %u",u_octet4_loop_digitalSignature);
+ }
+
+ for (i_digitalSignature=0; i_digitalSignature < u_octet4_loop_digitalSignature; i_digitalSignature++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"digitalSignature = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/service_agreement/IpServiceAgreementManagement/selectService:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_service_agreement_IpServiceAgreementManagement_selectService(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceToken (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_application/service_agreement/IpServiceAgreementManagement/initiateSignServiceAgreement:1.0
+ */
+
+static void decode_org_csapi_fw_fw_application_service_agreement_IpServiceAgreementManagement_initiateSignServiceAgreement(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceToken (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceProfileManagement/createServiceProfile:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileManagement_createServiceProfile(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_fw_TpServiceProfileDescription" */
+
+
+
+ decode_org_csapi_fw_TpServiceProfileDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpServiceProfileDescription" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceProfileID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceProfileManagement/modifyServiceProfile:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileManagement_modifyServiceProfile(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_fw_TpServiceProfile" */
+
+
+
+ decode_org_csapi_fw_TpServiceProfile_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpServiceProfile" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceProfileManagement/deleteServiceProfile:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileManagement_deleteServiceProfile(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceProfileID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceProfileManagement/assign:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileManagement_assign(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"sagID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceProfileID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceProfileManagement/deassign:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileManagement_deassign(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"sagID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceProfileID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceProfileManagement/requestConflictInfo:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileManagement_requestConflictInfo(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpAssignSagToServiceProfileConflictList;
+ guint32 i_TpAssignSagToServiceProfileConflictList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpAssignSagToServiceProfileConflictList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpAssignSagToServiceProfileConflictList = %u",u_octet4_loop_TpAssignSagToServiceProfileConflictList);
+ }
+
+ for (i_TpAssignSagToServiceProfileConflictList=0; i_TpAssignSagToServiceProfileConflictList < u_octet4_loop_TpAssignSagToServiceProfileConflictList; i_TpAssignSagToServiceProfileConflictList++) {
+
+ /* Begin struct "org_csapi_fw_TpAssignSagToServiceProfileConflict" */
+
+
+
+ decode_org_csapi_fw_TpAssignSagToServiceProfileConflict_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpAssignSagToServiceProfileConflict" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceProfileInfoQuery/listServiceProfiles:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileInfoQuery_listServiceProfiles(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpServiceProfileIDList;
+ guint32 i_TpServiceProfileIDList;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpServiceProfileIDList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpServiceProfileIDList = %u",u_octet4_loop_TpServiceProfileIDList);
+ }
+
+ for (i_TpServiceProfileIDList=0; i_TpServiceProfileIDList < u_octet4_loop_TpServiceProfileIDList; i_TpServiceProfileIDList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceProfileIDList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceProfileInfoQuery/describeServiceProfile:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileInfoQuery_describeServiceProfile(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceProfileID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_fw_TpServiceProfileDescription" */
+
+
+
+ decode_org_csapi_fw_TpServiceProfileDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpServiceProfileDescription" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceProfileInfoQuery/listAssignedMembers:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileInfoQuery_listAssignedMembers(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpSagIDList;
+ guint32 i_TpSagIDList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceProfileID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpSagIDList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpSagIDList = %u",u_octet4_loop_TpSagIDList);
+ }
+
+ for (i_TpSagIDList=0; i_TpSagIDList < u_octet4_loop_TpSagIDList; i_TpSagIDList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpSagIDList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceContractManagement/createServiceContract:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceContractManagement_createServiceContract(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_fw_TpServiceContractDescription" */
+
+
+
+ decode_org_csapi_fw_TpServiceContractDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpServiceContractDescription" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceContractID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceContractManagement/modifyServiceContract:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceContractManagement_modifyServiceContract(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_fw_TpServiceContract" */
+
+
+
+ decode_org_csapi_fw_TpServiceContract_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpServiceContract" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceContractManagement/deleteServiceContract:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceContractManagement_deleteServiceContract(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceContractID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceContractInfoQuery/describeServiceContract:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceContractInfoQuery_describeServiceContract(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceContractID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_fw_TpServiceContractDescription" */
+
+
+
+ decode_org_csapi_fw_TpServiceContractDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpServiceContractDescription" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceContractInfoQuery/listServiceContracts:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceContractInfoQuery_listServiceContracts(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpServiceContractIDList;
+ guint32 i_TpServiceContractIDList;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpServiceContractIDList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpServiceContractIDList = %u",u_octet4_loop_TpServiceContractIDList);
+ }
+
+ for (i_TpServiceContractIDList=0; i_TpServiceContractIDList < u_octet4_loop_TpServiceContractIDList; i_TpServiceContractIDList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceContractIDList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceContractInfoQuery/listServiceProfiles:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceContractInfoQuery_listServiceProfiles(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpServiceProfileIDList;
+ guint32 i_TpServiceProfileIDList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceContractID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpServiceProfileIDList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpServiceProfileIDList = %u",u_octet4_loop_TpServiceProfileIDList);
+ }
+
+ for (i_TpServiceProfileIDList=0; i_TpServiceProfileIDList < u_octet4_loop_TpServiceProfileIDList; i_TpServiceProfileIDList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceProfileIDList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpEntOpAccountManagement/modifyEntOpAccount:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpEntOpAccountManagement_modifyEntOpAccount(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_enterpriseOperatorProperties;
+ guint32 i_enterpriseOperatorProperties;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_enterpriseOperatorProperties = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of enterpriseOperatorProperties = %u",u_octet4_loop_enterpriseOperatorProperties);
+ }
+
+ for (i_enterpriseOperatorProperties=0; i_enterpriseOperatorProperties < u_octet4_loop_enterpriseOperatorProperties; i_enterpriseOperatorProperties++) {
+
+ /* Begin struct "org_csapi_fw_TpProperty" */
+
+
+
+ decode_org_csapi_fw_TpProperty_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpProperty" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpEntOpAccountManagement/deleteEntOpAccount:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpEntOpAccountManagement_deleteEntOpAccount(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpEntOpAccountInfoQuery/describeEntOpAccount:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpEntOpAccountInfoQuery_describeEntOpAccount(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_fw_TpEntOp" */
+
+
+
+ decode_org_csapi_fw_TpEntOp_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpEntOp" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppManagement/createClientApp:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_createClientApp(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_fw_TpClientAppDescription" */
+
+
+
+ decode_org_csapi_fw_TpClientAppDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpClientAppDescription" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppManagement/modifyClientApp:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_modifyClientApp(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_fw_TpClientAppDescription" */
+
+
+
+ decode_org_csapi_fw_TpClientAppDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpClientAppDescription" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppManagement/deleteClientApp:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_deleteClientApp(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"clientAppID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppManagement/createSAG:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_createSAG(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_clientAppIDs;
+ guint32 i_clientAppIDs;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_fw_TpSag" */
+
+
+
+ decode_org_csapi_fw_TpSag_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpSag" */
+
+ u_octet4_loop_clientAppIDs = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of clientAppIDs = %u",u_octet4_loop_clientAppIDs);
+ }
+
+ for (i_clientAppIDs=0; i_clientAppIDs < u_octet4_loop_clientAppIDs; i_clientAppIDs++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"clientAppIDs (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppManagement/modifySAG:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_modifySAG(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_fw_TpSag" */
+
+
+
+ decode_org_csapi_fw_TpSag_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpSag" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppManagement/deleteSAG:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_deleteSAG(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"sagID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppManagement/addSAGMembers:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_addSAGMembers(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_clientAppIDs;
+ guint32 i_clientAppIDs;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"sagID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_clientAppIDs = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of clientAppIDs = %u",u_octet4_loop_clientAppIDs);
+ }
+
+ for (i_clientAppIDs=0; i_clientAppIDs < u_octet4_loop_clientAppIDs; i_clientAppIDs++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"clientAppIDs (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppManagement/removeSAGMembers:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_removeSAGMembers(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_clientAppIDList;
+ guint32 i_clientAppIDList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"sagID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_clientAppIDList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of clientAppIDList = %u",u_octet4_loop_clientAppIDList);
+ }
+
+ for (i_clientAppIDList=0; i_clientAppIDList < u_octet4_loop_clientAppIDList; i_clientAppIDList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"clientAppIDList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppManagement/requestConflictInfo:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_requestConflictInfo(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpAddSagMembersConflictList;
+ guint32 i_TpAddSagMembersConflictList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpAddSagMembersConflictList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpAddSagMembersConflictList = %u",u_octet4_loop_TpAddSagMembersConflictList);
+ }
+
+ for (i_TpAddSagMembersConflictList=0; i_TpAddSagMembersConflictList < u_octet4_loop_TpAddSagMembersConflictList; i_TpAddSagMembersConflictList++) {
+
+ /* Begin struct "org_csapi_fw_TpAddSagMembersConflict" */
+
+
+
+ decode_org_csapi_fw_TpAddSagMembersConflict_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpAddSagMembersConflict" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppInfoQuery/describeClientApp:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppInfoQuery_describeClientApp(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"clientAppID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_fw_TpClientAppDescription" */
+
+
+
+ decode_org_csapi_fw_TpClientAppDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpClientAppDescription" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppInfoQuery/listClientApps:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppInfoQuery_listClientApps(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpClientAppIDList;
+ guint32 i_TpClientAppIDList;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpClientAppIDList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpClientAppIDList = %u",u_octet4_loop_TpClientAppIDList);
+ }
+
+ for (i_TpClientAppIDList=0; i_TpClientAppIDList < u_octet4_loop_TpClientAppIDList; i_TpClientAppIDList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpClientAppIDList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppInfoQuery/describeSAG:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppInfoQuery_describeSAG(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"sagID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpSagDescription (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppInfoQuery/listSAGs:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppInfoQuery_listSAGs(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpSagIDList;
+ guint32 i_TpSagIDList;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpSagIDList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpSagIDList = %u",u_octet4_loop_TpSagIDList);
+ }
+
+ for (i_TpSagIDList=0; i_TpSagIDList < u_octet4_loop_TpSagIDList; i_TpSagIDList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpSagIDList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppInfoQuery/listSAGMembers:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppInfoQuery_listSAGMembers(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpClientAppIDList;
+ guint32 i_TpClientAppIDList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"sagID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpClientAppIDList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpClientAppIDList = %u",u_octet4_loop_TpClientAppIDList);
+ }
+
+ for (i_TpClientAppIDList=0; i_TpClientAppIDList < u_octet4_loop_TpClientAppIDList; i_TpClientAppIDList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpClientAppIDList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppInfoQuery/listClientAppMembership:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppInfoQuery_listClientAppMembership(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpSagIDList;
+ guint32 i_TpSagIDList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"clientAppID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpSagIDList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpSagIDList = %u",u_octet4_loop_TpSagIDList);
+ }
+
+ for (i_TpSagIDList=0; i_TpSagIDList < u_octet4_loop_TpSagIDList; i_TpSagIDList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpSagIDList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/notification/IpClientEventNotification/reportNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_notification_IpClientEventNotification_reportNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin union "org_csapi_fw_TpFwEventInfo" */
+
+
+ decode_org_csapi_fw_TpFwEventInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_fw_TpFwEventInfo" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/notification/IpClientEventNotification/notificationTerminated:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_notification_IpClientEventNotification_notificationTerminated(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/notification/IpEventNotification/createNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_notification_IpEventNotification_createNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin union "org_csapi_fw_TpFwEventCriteria" */
+
+
+ decode_org_csapi_fw_TpFwEventCriteria_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_fw_TpFwEventCriteria" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_enterprise_operator/notification/IpEventNotification/destroyNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_enterprise_operator_notification_IpEventNotification_destroyNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/discovery/IpFwServiceDiscovery/listServiceTypes:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_discovery_IpFwServiceDiscovery_listServiceTypes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpServiceTypeNameList;
+ guint32 i_TpServiceTypeNameList;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpServiceTypeNameList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpServiceTypeNameList = %u",u_octet4_loop_TpServiceTypeNameList);
+ }
+
+ for (i_TpServiceTypeNameList=0; i_TpServiceTypeNameList < u_octet4_loop_TpServiceTypeNameList; i_TpServiceTypeNameList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceTypeNameList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/discovery/IpFwServiceDiscovery/describeServiceType:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_discovery_IpFwServiceDiscovery_describeServiceType(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_fw_TpServiceTypeDescription" */
+
+
+
+ decode_org_csapi_fw_TpServiceTypeDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpServiceTypeDescription" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/discovery/IpFwServiceDiscovery/discoverService:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_discovery_IpFwServiceDiscovery_discoverService(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_desiredPropertyList;
+ guint32 i_desiredPropertyList;
+ gint32 s_octet4;
+ guint32 u_octet4_loop_TpServiceList;
+ guint32 i_TpServiceList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceTypeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_desiredPropertyList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of desiredPropertyList = %u",u_octet4_loop_desiredPropertyList);
+ }
+
+ for (i_desiredPropertyList=0; i_desiredPropertyList < u_octet4_loop_desiredPropertyList; i_desiredPropertyList++) {
+
+ /* Begin struct "org_csapi_fw_TpServiceProperty" */
+
+
+
+ decode_org_csapi_fw_TpServiceProperty_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpServiceProperty" */
+
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"max = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpServiceList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpServiceList = %u",u_octet4_loop_TpServiceList);
+ }
+
+ for (i_TpServiceList=0; i_TpServiceList < u_octet4_loop_TpServiceList; i_TpServiceList++) {
+
+ /* Begin struct "org_csapi_fw_TpService" */
+
+
+
+ decode_org_csapi_fw_TpService_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpService" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/discovery/IpFwServiceDiscovery/listRegisteredServices:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_discovery_IpFwServiceDiscovery_listRegisteredServices(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpServiceList;
+ guint32 i_TpServiceList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpServiceList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpServiceList = %u",u_octet4_loop_TpServiceList);
+ }
+
+ for (i_TpServiceList=0; i_TpServiceList < u_octet4_loop_TpServiceList; i_TpServiceList++) {
+
+ /* Begin struct "org_csapi_fw_TpService" */
+
+
+
+ decode_org_csapi_fw_TpService_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpService" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/service_lifecycle/IpServiceInstanceLifecycleManager/createServiceManager:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_service_lifecycle_IpServiceInstanceLifecycleManager_createServiceManager(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_serviceProperties;
+ guint32 i_serviceProperties;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"application (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_serviceProperties = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of serviceProperties = %u",u_octet4_loop_serviceProperties);
+ }
+
+ for (i_serviceProperties=0; i_serviceProperties < u_octet4_loop_serviceProperties; i_serviceProperties++) {
+
+ /* Begin struct "org_csapi_fw_TpServiceProperty" */
+
+
+
+ decode_org_csapi_fw_TpServiceProperty_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpServiceProperty" */
+
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceInstanceID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/service_lifecycle/IpServiceInstanceLifecycleManager/destroyServiceManager:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_service_lifecycle_IpServiceInstanceLifecycleManager_destroyServiceManager(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceInstance (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/service_registration/IpFwServiceRegistration/registerService:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_service_registration_IpFwServiceRegistration_registerService(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_servicePropertyList;
+ guint32 i_servicePropertyList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceTypeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_servicePropertyList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of servicePropertyList = %u",u_octet4_loop_servicePropertyList);
+ }
+
+ for (i_servicePropertyList=0; i_servicePropertyList < u_octet4_loop_servicePropertyList; i_servicePropertyList++) {
+
+ /* Begin struct "org_csapi_fw_TpServiceProperty" */
+
+
+
+ decode_org_csapi_fw_TpServiceProperty_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpServiceProperty" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/service_registration/IpFwServiceRegistration/announceServiceAvailability:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_service_registration_IpFwServiceRegistration_announceServiceAvailability(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/service_registration/IpFwServiceRegistration/unregisterService:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_service_registration_IpFwServiceRegistration_unregisterService(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/service_registration/IpFwServiceRegistration/describeService:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_service_registration_IpFwServiceRegistration_describeService(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_fw_TpServiceDescription" */
+
+
+
+ decode_org_csapi_fw_TpServiceDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpServiceDescription" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/service_registration/IpFwServiceRegistration/unannounceService:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_service_registration_IpFwServiceRegistration_unannounceService(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/service_registration/IpFwServiceRegistration/registerServiceSubType:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_service_registration_IpFwServiceRegistration_registerServiceSubType(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_servicePropertyList;
+ guint32 i_servicePropertyList;
+ guint32 u_octet4_loop_extendedServicePropertyList;
+ guint32 i_extendedServicePropertyList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceTypeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_servicePropertyList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of servicePropertyList = %u",u_octet4_loop_servicePropertyList);
+ }
+
+ for (i_servicePropertyList=0; i_servicePropertyList < u_octet4_loop_servicePropertyList; i_servicePropertyList++) {
+
+ /* Begin struct "org_csapi_fw_TpServiceProperty" */
+
+
+
+ decode_org_csapi_fw_TpServiceProperty_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpServiceProperty" */
+
+ }
+
+ u_octet4_loop_extendedServicePropertyList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of extendedServicePropertyList = %u",u_octet4_loop_extendedServicePropertyList);
+ }
+
+ for (i_extendedServicePropertyList=0; i_extendedServicePropertyList < u_octet4_loop_extendedServicePropertyList; i_extendedServicePropertyList++) {
+
+ /* Begin struct "org_csapi_fw_TpServiceTypePropertyValue" */
+
+
+
+ decode_org_csapi_fw_TpServiceTypePropertyValue_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpServiceTypePropertyValue" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcLoadManager/querySvcLoadReq:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcLoadManager_querySvcLoadReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_TpTimeInterval" */
+
+
+
+ decode_org_csapi_TpTimeInterval_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpTimeInterval" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcLoadManager/queryLoadRes:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcLoadManager_queryLoadRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_loadStatistics;
+ guint32 i_loadStatistics;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_loadStatistics = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of loadStatistics = %u",u_octet4_loop_loadStatistics);
+ }
+
+ for (i_loadStatistics=0; i_loadStatistics < u_octet4_loop_loadStatistics; i_loadStatistics++) {
+
+ /* Begin struct "org_csapi_fw_TpLoadStatistic" */
+
+
+
+ decode_org_csapi_fw_TpLoadStatistic_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpLoadStatistic" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcLoadManager/queryLoadErr:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcLoadManager_queryLoadErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"loadStatisticsError = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpLoadStatisticError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcLoadManager/loadLevelNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcLoadManager_loadLevelNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_loadStatistics;
+ guint32 i_loadStatistics;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_loadStatistics = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of loadStatistics = %u",u_octet4_loop_loadStatistics);
+ }
+
+ for (i_loadStatistics=0; i_loadStatistics < u_octet4_loop_loadStatistics; i_loadStatistics++) {
+
+ /* Begin struct "org_csapi_fw_TpLoadStatistic" */
+
+
+
+ decode_org_csapi_fw_TpLoadStatistic_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpLoadStatistic" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcLoadManager/suspendNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcLoadManager_suspendNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcLoadManager/resumeNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcLoadManager_resumeNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcLoadManager/createLoadLevelNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcLoadManager_createLoadLevelNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcLoadManager/destroyLoadLevelNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcLoadManager_destroyLoadLevelNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcLoadManager/querySvcLoadStatsReq:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcLoadManager_querySvcLoadStatsReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"loadStatsReqID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_TpTimeInterval" */
+
+
+
+ decode_org_csapi_TpTimeInterval_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpTimeInterval" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcLoadManager/queryLoadStatsRes:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcLoadManager_queryLoadStatsRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_loadStatistics;
+ guint32 i_loadStatistics;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"loadStatsReqID = %i",s_octet4);
+ }
+
+ u_octet4_loop_loadStatistics = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of loadStatistics = %u",u_octet4_loop_loadStatistics);
+ }
+
+ for (i_loadStatistics=0; i_loadStatistics < u_octet4_loop_loadStatistics; i_loadStatistics++) {
+
+ /* Begin struct "org_csapi_fw_TpLoadStatistic" */
+
+
+
+ decode_org_csapi_fw_TpLoadStatistic_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpLoadStatistic" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcLoadManager/queryLoadStatsErr:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcLoadManager_queryLoadStatsErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"loadStatsReqID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"loadStatisticsError = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpLoadStatisticError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwLoadManager/reportLoad:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwLoadManager_reportLoad(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"loadLevel = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpLoadLevel,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwLoadManager/queryLoadReq:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwLoadManager_queryLoadReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"querySubject = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpSubjectType,"Unknown Enum Value"));
+ }
+
+ /* Begin struct "org_csapi_TpTimeInterval" */
+
+
+
+ decode_org_csapi_TpTimeInterval_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpTimeInterval" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwLoadManager/querySvcLoadRes:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwLoadManager_querySvcLoadRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_loadStatistics;
+ guint32 i_loadStatistics;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_loadStatistics = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of loadStatistics = %u",u_octet4_loop_loadStatistics);
+ }
+
+ for (i_loadStatistics=0; i_loadStatistics < u_octet4_loop_loadStatistics; i_loadStatistics++) {
+
+ /* Begin struct "org_csapi_fw_TpLoadStatistic" */
+
+
+
+ decode_org_csapi_fw_TpLoadStatistic_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpLoadStatistic" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwLoadManager/querySvcLoadErr:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwLoadManager_querySvcLoadErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"loadStatisticError = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpLoadStatisticError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwLoadManager/createLoadLevelNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwLoadManager_createLoadLevelNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"notificationSubject = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpSubjectType,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwLoadManager/destroyLoadLevelNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwLoadManager_destroyLoadLevelNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"notificationSubject = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpSubjectType,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwLoadManager/suspendNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwLoadManager_suspendNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"notificationSubject = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpSubjectType,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwLoadManager/resumeNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwLoadManager_resumeNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"notificationSubject = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpSubjectType,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwLoadManager/queryLoadStatsReq:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwLoadManager_queryLoadStatsReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"loadStatsReqID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"querySubject = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpSubjectType,"Unknown Enum Value"));
+ }
+
+ /* Begin struct "org_csapi_TpTimeInterval" */
+
+
+
+ decode_org_csapi_TpTimeInterval_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpTimeInterval" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwLoadManager/querySvcLoadStatsRes:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwLoadManager_querySvcLoadStatsRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_loadStatistics;
+ guint32 i_loadStatistics;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"loadStatsReqID = %i",s_octet4);
+ }
+
+ u_octet4_loop_loadStatistics = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of loadStatistics = %u",u_octet4_loop_loadStatistics);
+ }
+
+ for (i_loadStatistics=0; i_loadStatistics < u_octet4_loop_loadStatistics; i_loadStatistics++) {
+
+ /* Begin struct "org_csapi_fw_TpLoadStatistic" */
+
+
+
+ decode_org_csapi_fw_TpLoadStatistic_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpLoadStatistic" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwLoadManager/querySvcLoadStatsErr:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwLoadManager_querySvcLoadStatsErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"loadStatsReqID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"loadStatisticError = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpLoadStatisticError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcFaultManager/activityTestRes:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_activityTestRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"activityTestID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"activityTestResult (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcFaultManager/svcActivityTestReq:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_svcActivityTestReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"activityTestID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcFaultManager/fwFaultReportInd:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_fwFaultReportInd(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"fault = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpInterfaceFault,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcFaultManager/fwFaultRecoveryInd:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_fwFaultRecoveryInd(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"fault = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpInterfaceFault,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcFaultManager/fwUnavailableInd:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_fwUnavailableInd(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"reason = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpFwUnavailReason,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcFaultManager/svcUnavailableInd:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_svcUnavailableInd(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcFaultManager/appUnavailableInd:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_appUnavailableInd(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcFaultManager/genFaultStatsRecordRes:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_genFaultStatsRecordRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_fw_TpFaultStatsRecord" */
+
+
+
+ decode_org_csapi_fw_TpFaultStatsRecord_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpFaultStatsRecord" */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"recordSubject = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpSubjectType,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcFaultManager/activityTestErr:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_activityTestErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"activityTestID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcFaultManager/genFaultStatsRecordErr:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_genFaultStatsRecordErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"faultStatisticsError = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpFaultStatisticsError,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"recordSubject = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpSubjectType,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcFaultManager/genFaultStatsRecordReq:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_genFaultStatsRecordReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_serviceIDs;
+ guint32 i_serviceIDs;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_TpTimeInterval" */
+
+
+
+ decode_org_csapi_TpTimeInterval_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpTimeInterval" */
+
+ u_octet4_loop_serviceIDs = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of serviceIDs = %u",u_octet4_loop_serviceIDs);
+ }
+
+ for (i_serviceIDs=0; i_serviceIDs < u_octet4_loop_serviceIDs; i_serviceIDs++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceIDs (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcFaultManager/generateFaultStatsRecordReq:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_generateFaultStatsRecordReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_TpTimeInterval" */
+
+
+
+ decode_org_csapi_TpTimeInterval_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpTimeInterval" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcFaultManager/appAvailStatusInd:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_appAvailStatusInd(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"reason = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpAppAvailStatusReason,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcFaultManager/generateFaultStatisticsRecordRes:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_generateFaultStatisticsRecordRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"faultStatsReqID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_fw_TpFaultStatsRecord" */
+
+
+
+ decode_org_csapi_fw_TpFaultStatsRecord_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpFaultStatsRecord" */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"recordSubject = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpSubjectType,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcFaultManager/generateFaultStatisticsRecordErr:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_generateFaultStatisticsRecordErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"faultStatsReqID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"faultStatisticsError = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpFaultStatisticsError,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"recordSubject = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpSubjectType,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcFaultManager/generateFaultStatisticsRecordReq:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_generateFaultStatisticsRecordReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"faultStatsReqID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_TpTimeInterval" */
+
+
+
+ decode_org_csapi_TpTimeInterval_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpTimeInterval" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcFaultManager/fwAvailStatusInd:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_fwAvailStatusInd(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"reason = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpFwAvailStatusReason,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwFaultManager/activityTestReq:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_activityTestReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"activityTestID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"testSubject = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpSubjectType,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwFaultManager/svcActivityTestRes:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_svcActivityTestRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"activityTestID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"activityTestResult (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwFaultManager/appUnavailableInd:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_appUnavailableInd(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwFaultManager/genFaultStatsRecordReq:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_genFaultStatsRecordReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_TpTimeInterval" */
+
+
+
+ decode_org_csapi_TpTimeInterval_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpTimeInterval" */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"recordSubject = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpSubjectType,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwFaultManager/svcUnavailableInd:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_svcUnavailableInd(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"reason = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpSvcUnavailReason,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwFaultManager/svcActivityTestErr:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_svcActivityTestErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"activityTestID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwFaultManager/genFaultStatsRecordRes:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_genFaultStatsRecordRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_serviceIDs;
+ guint32 i_serviceIDs;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_fw_TpFaultStatsRecord" */
+
+
+
+ decode_org_csapi_fw_TpFaultStatsRecord_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpFaultStatsRecord" */
+
+ u_octet4_loop_serviceIDs = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of serviceIDs = %u",u_octet4_loop_serviceIDs);
+ }
+
+ for (i_serviceIDs=0; i_serviceIDs < u_octet4_loop_serviceIDs; i_serviceIDs++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceIDs (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwFaultManager/genFaultStatsRecordErr:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_genFaultStatsRecordErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ guint32 u_octet4_loop_serviceIDs;
+ guint32 i_serviceIDs;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"faultStatisticsError = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpFaultStatisticsError,"Unknown Enum Value"));
+ }
+
+ u_octet4_loop_serviceIDs = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of serviceIDs = %u",u_octet4_loop_serviceIDs);
+ }
+
+ for (i_serviceIDs=0; i_serviceIDs < u_octet4_loop_serviceIDs; i_serviceIDs++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"serviceIDs (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwFaultManager/generateFaultStatsRecordRes:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_generateFaultStatsRecordRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_fw_TpFaultStatsRecord" */
+
+
+
+ decode_org_csapi_fw_TpFaultStatsRecord_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpFaultStatsRecord" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwFaultManager/generateFaultStatsRecordErr:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_generateFaultStatsRecordErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"faultStatisticsError = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpFaultStatisticsError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwFaultManager/svcAvailStatusInd:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_svcAvailStatusInd(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"reason = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpSvcAvailStatusReason,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwFaultManager/generateFaultStatisticsRecordReq:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_generateFaultStatisticsRecordReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"faultStatsReqID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_TpTimeInterval" */
+
+
+
+ decode_org_csapi_TpTimeInterval_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpTimeInterval" */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"recordSubject = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpSubjectType,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwFaultManager/generateFaultStatisticsRecordRes:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_generateFaultStatisticsRecordRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"faultStatsReqID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_fw_TpFaultStatsRecord" */
+
+
+
+ decode_org_csapi_fw_TpFaultStatsRecord_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpFaultStatsRecord" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwFaultManager/generateFaultStatisticsRecordErr:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_generateFaultStatisticsRecordErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"faultStatsReqID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"faultStatisticsError = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpFaultStatisticsError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcOAM/systemDateTimeQuery:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcOAM_systemDateTimeQuery(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"systemDateAndTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpDateAndTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwOAM/systemDateTimeQuery:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwOAM_systemDateTimeQuery(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"clientDateAndTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpDateAndTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwHeartBeatMgmt/enableHeartBeat:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwHeartBeatMgmt_enableHeartBeat(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"interval = %i",s_octet4);
+ }
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwHeartBeatMgmt/disableHeartBeat:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwHeartBeatMgmt_disableHeartBeat(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwHeartBeatMgmt/changeInterval:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwHeartBeatMgmt_changeInterval(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"interval = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcHeartBeat/pulse:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcHeartBeat_pulse(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpFwHeartBeat/pulse:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpFwHeartBeat_pulse(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcHeartBeatMgmt/enableSvcHeartBeat:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcHeartBeatMgmt_enableSvcHeartBeat(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"interval = %i",s_octet4);
+ }
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcHeartBeatMgmt/disableSvcHeartBeat:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcHeartBeatMgmt_disableSvcHeartBeat(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/integrity/IpSvcHeartBeatMgmt/changeInterval:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_integrity_IpSvcHeartBeatMgmt_changeInterval(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"interval = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/notification/IpFwEventNotification/createNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_notification_IpFwEventNotification_createNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin union "org_csapi_fw_TpFwEventCriteria" */
+
+
+ decode_org_csapi_fw_TpFwEventCriteria_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_fw_TpFwEventCriteria" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/notification/IpFwEventNotification/destroyNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_notification_IpFwEventNotification_destroyNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/notification/IpSvcEventNotification/reportNotification:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_notification_IpSvcEventNotification_reportNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin union "org_csapi_fw_TpFwEventInfo" */
+
+
+ decode_org_csapi_fw_TpFwEventInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_fw_TpFwEventInfo" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/fw/fw_service/notification/IpSvcEventNotification/notificationTerminated:1.0
+ */
+
+static void decode_org_csapi_fw_fw_service_notification_IpSvcEventNotification_notificationTerminated(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpAppCall/routeRes:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpAppCall_routeRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_gccs_TpCallReport" */
+
+
+
+ decode_org_csapi_cc_gccs_TpCallReport_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_gccs_TpCallReport" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpAppCall/routeErr:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpAppCall_routeErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_TpCallError" */
+
+
+
+ decode_org_csapi_cc_TpCallError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallError" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpAppCall/getCallInfoRes:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpAppCall_getCallInfoRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_gccs_TpCallInfoReport" */
+
+
+
+ decode_org_csapi_cc_gccs_TpCallInfoReport_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_gccs_TpCallInfoReport" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpAppCall/getCallInfoErr:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpAppCall_getCallInfoErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_TpCallError" */
+
+
+
+ decode_org_csapi_cc_TpCallError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallError" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpAppCall/superviseCallRes:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpAppCall_superviseCallRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"report = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"usedTime = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpAppCall/superviseCallErr:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpAppCall_superviseCallErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_TpCallError" */
+
+
+
+ decode_org_csapi_cc_TpCallError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallError" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpAppCall/callFaultDetected:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpAppCall_callFaultDetected(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"fault = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_gccs_TpCallFault,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpAppCall/getMoreDialledDigitsRes:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpAppCall_getMoreDialledDigitsRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"digits (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpAppCall/getMoreDialledDigitsErr:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpAppCall_getMoreDialledDigitsErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_TpCallError" */
+
+
+
+ decode_org_csapi_cc_TpCallError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallError" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpAppCall/callEnded:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpAppCall_callEnded(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_gccs_TpCallEndedReport" */
+
+
+
+ decode_org_csapi_cc_gccs_TpCallEndedReport_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_gccs_TpCallEndedReport" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpCall/routeReq:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpCall_routeReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_responseRequested;
+ guint32 i_responseRequested;
+ guint32 u_octet4_loop_appInfo;
+ guint32 i_appInfo;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ u_octet4_loop_responseRequested = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of responseRequested = %u",u_octet4_loop_responseRequested);
+ }
+
+ for (i_responseRequested=0; i_responseRequested < u_octet4_loop_responseRequested; i_responseRequested++) {
+
+ /* Begin struct "org_csapi_cc_gccs_TpCallReportRequest" */
+
+
+
+ decode_org_csapi_cc_gccs_TpCallReportRequest_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_gccs_TpCallReportRequest" */
+
+ }
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ u_octet4_loop_appInfo = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of appInfo = %u",u_octet4_loop_appInfo);
+ }
+
+ for (i_appInfo=0; i_appInfo < u_octet4_loop_appInfo; i_appInfo++) {
+
+ /* Begin union "org_csapi_cc_gccs_TpCallAppInfo" */
+
+
+ decode_org_csapi_cc_gccs_TpCallAppInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cc_gccs_TpCallAppInfo" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpCall/release:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpCall_release(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_gccs_TpCallReleaseCause" */
+
+
+
+ decode_org_csapi_cc_gccs_TpCallReleaseCause_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_gccs_TpCallReleaseCause" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpCall/deassignCall:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpCall_deassignCall(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpCall/getCallInfoReq:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpCall_getCallInfoReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callInfoRequested = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpCall/setCallChargePlan:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpCall_setCallChargePlan(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_TpCallChargePlan" */
+
+
+
+ decode_org_csapi_cc_TpCallChargePlan_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallChargePlan" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpCall/setAdviceOfCharge:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpCall_setAdviceOfCharge(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_TpAoCInfo" */
+
+
+
+ decode_org_csapi_TpAoCInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAoCInfo" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"tariffSwitch = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpCall/getMoreDialledDigitsReq:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpCall_getMoreDialledDigitsReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"length = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpCall/superviseCallReq:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpCall_superviseCallReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"time = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"treatment = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpCall/continueProcessing:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpCall_continueProcessing(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpAppCallControlManager/callAborted:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpAppCallControlManager_callAborted(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callReference = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpAppCallControlManager/callEventNotify:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpAppCallControlManager_callEventNotify(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_cc_gccs_TpCallIdentifier" */
+
+
+
+ decode_org_csapi_cc_gccs_TpCallIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_gccs_TpCallIdentifier" */
+
+ /* Begin struct "org_csapi_cc_gccs_TpCallEventInfo" */
+
+
+
+ decode_org_csapi_cc_gccs_TpCallEventInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_gccs_TpCallEventInfo" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpAppCallControlManager/callNotificationInterrupted:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpAppCallControlManager_callNotificationInterrupted(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpAppCallControlManager/callNotificationContinued:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpAppCallControlManager_callNotificationContinued(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpAppCallControlManager/callOverloadEncountered:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpAppCallControlManager_callOverloadEncountered(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpAppCallControlManager/callOverloadCeased:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpAppCallControlManager_callOverloadCeased(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpAppCallControlManager/abortMultipleCalls:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpAppCallControlManager_abortMultipleCalls(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_callReferenceSet;
+ guint32 i_callReferenceSet;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_callReferenceSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of callReferenceSet = %u",u_octet4_loop_callReferenceSet);
+ }
+
+ for (i_callReferenceSet=0; i_callReferenceSet < u_octet4_loop_callReferenceSet; i_callReferenceSet++) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callReferenceSet = %i",s_octet4);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpCallControlManager/createCall:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpCallControlManager_createCall(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_cc_gccs_TpCallIdentifier" */
+
+
+
+ decode_org_csapi_cc_gccs_TpCallIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_gccs_TpCallIdentifier" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpCallControlManager/enableCallNotification:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpCallControlManager_enableCallNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ /* Begin struct "org_csapi_cc_gccs_TpCallEventCriteria" */
+
+
+
+ decode_org_csapi_cc_gccs_TpCallEventCriteria_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_gccs_TpCallEventCriteria" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpCallControlManager/disableCallNotification:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpCallControlManager_disableCallNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpCallControlManager/setCallLoadControl:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpCallControlManager_setCallLoadControl(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"duration = %i",s_octet4);
+ }
+
+ /* Begin union "org_csapi_cc_TpCallLoadControlMechanism" */
+
+
+ decode_org_csapi_cc_TpCallLoadControlMechanism_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cc_TpCallLoadControlMechanism" */
+
+ /* Begin struct "org_csapi_cc_gccs_TpCallTreatment" */
+
+
+
+ decode_org_csapi_cc_gccs_TpCallTreatment_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_gccs_TpCallTreatment" */
+
+ /* Begin struct "org_csapi_TpAddressRange" */
+
+
+
+ decode_org_csapi_TpAddressRange_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddressRange" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpCallControlManager/changeCallNotification:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpCallControlManager_changeCallNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_gccs_TpCallEventCriteria" */
+
+
+
+ decode_org_csapi_cc_gccs_TpCallEventCriteria_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_gccs_TpCallEventCriteria" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/gccs/IpCallControlManager/getCriteria:1.0
+ */
+
+static void decode_org_csapi_cc_gccs_IpCallControlManager_getCriteria(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpCallEventCriteriaResultSet;
+ guint32 i_TpCallEventCriteriaResultSet;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpCallEventCriteriaResultSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpCallEventCriteriaResultSet = %u",u_octet4_loop_TpCallEventCriteriaResultSet);
+ }
+
+ for (i_TpCallEventCriteriaResultSet=0; i_TpCallEventCriteriaResultSet < u_octet4_loop_TpCallEventCriteriaResultSet; i_TpCallEventCriteriaResultSet++) {
+
+ /* Begin struct "org_csapi_cc_gccs_TpCallEventCriteriaResult" */
+
+
+
+ decode_org_csapi_cc_gccs_TpCallEventCriteriaResult_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_gccs_TpCallEventCriteriaResult" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpAppCallLeg/eventReportRes:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpAppCallLeg_eventReportRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_TpCallEventInfo" */
+
+
+
+ decode_org_csapi_cc_TpCallEventInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallEventInfo" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpAppCallLeg/eventReportErr:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpAppCallLeg_eventReportErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_TpCallError" */
+
+
+
+ decode_org_csapi_cc_TpCallError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallError" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpAppCallLeg/attachMediaRes:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpAppCallLeg_attachMediaRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpAppCallLeg/attachMediaErr:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpAppCallLeg_attachMediaErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_TpCallError" */
+
+
+
+ decode_org_csapi_cc_TpCallError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallError" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpAppCallLeg/detachMediaRes:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpAppCallLeg_detachMediaRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpAppCallLeg/detachMediaErr:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpAppCallLeg_detachMediaErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_TpCallError" */
+
+
+
+ decode_org_csapi_cc_TpCallError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallError" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpAppCallLeg/getInfoRes:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpAppCallLeg_getInfoRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_TpCallLegInfoReport" */
+
+
+
+ decode_org_csapi_cc_TpCallLegInfoReport_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallLegInfoReport" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpAppCallLeg/getInfoErr:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpAppCallLeg_getInfoErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_TpCallError" */
+
+
+
+ decode_org_csapi_cc_TpCallError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallError" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpAppCallLeg/routeErr:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpAppCallLeg_routeErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_TpCallError" */
+
+
+
+ decode_org_csapi_cc_TpCallError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallError" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpAppCallLeg/superviseRes:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpAppCallLeg_superviseRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"report = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"usedTime = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpAppCallLeg/superviseErr:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpAppCallLeg_superviseErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_TpCallError" */
+
+
+
+ decode_org_csapi_cc_TpCallError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallError" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpAppCallLeg/callLegEnded:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpAppCallLeg_callLegEnded(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpReleaseCause,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpMultiPartyCallControlManager/createCall:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpMultiPartyCallControlManager_createCall(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_cc_mpccs_TpMultiPartyCallIdentifier" */
+
+
+
+ decode_org_csapi_cc_mpccs_TpMultiPartyCallIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mpccs_TpMultiPartyCallIdentifier" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpMultiPartyCallControlManager/createNotification:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpMultiPartyCallControlManager_createNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ /* Begin struct "org_csapi_cc_TpCallNotificationRequest" */
+
+
+
+ decode_org_csapi_cc_TpCallNotificationRequest_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallNotificationRequest" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpMultiPartyCallControlManager/destroyNotification:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpMultiPartyCallControlManager_destroyNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpMultiPartyCallControlManager/changeNotification:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpMultiPartyCallControlManager_changeNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_TpCallNotificationRequest" */
+
+
+
+ decode_org_csapi_cc_TpCallNotificationRequest_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallNotificationRequest" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpMultiPartyCallControlManager/getNotification:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpMultiPartyCallControlManager_getNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpNotificationRequestedSet;
+ guint32 i_TpNotificationRequestedSet;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpNotificationRequestedSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpNotificationRequestedSet = %u",u_octet4_loop_TpNotificationRequestedSet);
+ }
+
+ for (i_TpNotificationRequestedSet=0; i_TpNotificationRequestedSet < u_octet4_loop_TpNotificationRequestedSet; i_TpNotificationRequestedSet++) {
+
+ /* Begin struct "org_csapi_cc_TpNotificationRequested" */
+
+
+
+ decode_org_csapi_cc_TpNotificationRequested_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpNotificationRequested" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpMultiPartyCallControlManager/setCallLoadControl:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpMultiPartyCallControlManager_setCallLoadControl(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"duration = %i",s_octet4);
+ }
+
+ /* Begin union "org_csapi_cc_TpCallLoadControlMechanism" */
+
+
+ decode_org_csapi_cc_TpCallLoadControlMechanism_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cc_TpCallLoadControlMechanism" */
+
+ /* Begin struct "org_csapi_cc_TpCallTreatment" */
+
+
+
+ decode_org_csapi_cc_TpCallTreatment_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallTreatment" */
+
+ /* Begin struct "org_csapi_TpAddressRange" */
+
+
+
+ decode_org_csapi_TpAddressRange_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddressRange" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpMultiPartyCallControlManager/enableNotifications:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpMultiPartyCallControlManager_enableNotifications(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpMultiPartyCallControlManager/disableNotifications:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpMultiPartyCallControlManager_disableNotifications(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpMultiPartyCallControlManager/getNextNotification:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpMultiPartyCallControlManager_getNextNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"reset = %u",u_octet1);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_cc_TpNotificationRequestedSetEntry" */
+
+
+
+ decode_org_csapi_cc_TpNotificationRequestedSetEntry_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpNotificationRequestedSetEntry" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpCallLeg/routeReq:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpCallLeg_routeReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_appInfo;
+ guint32 i_appInfo;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ u_octet4_loop_appInfo = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of appInfo = %u",u_octet4_loop_appInfo);
+ }
+
+ for (i_appInfo=0; i_appInfo < u_octet4_loop_appInfo; i_appInfo++) {
+
+ /* Begin union "org_csapi_cc_TpCallAppInfo" */
+
+
+ decode_org_csapi_cc_TpCallAppInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cc_TpCallAppInfo" */
+
+ }
+
+ /* Begin struct "org_csapi_cc_TpCallLegConnectionProperties" */
+
+
+
+ decode_org_csapi_cc_TpCallLegConnectionProperties_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallLegConnectionProperties" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpCallLeg/eventReportReq:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpCallLeg_eventReportReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_eventsRequested;
+ guint32 i_eventsRequested;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ u_octet4_loop_eventsRequested = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of eventsRequested = %u",u_octet4_loop_eventsRequested);
+ }
+
+ for (i_eventsRequested=0; i_eventsRequested < u_octet4_loop_eventsRequested; i_eventsRequested++) {
+
+ /* Begin struct "org_csapi_cc_TpCallEventRequest" */
+
+
+
+ decode_org_csapi_cc_TpCallEventRequest_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallEventRequest" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpCallLeg/release:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpCallLeg_release(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpReleaseCause,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpCallLeg/getInfoReq:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpCallLeg_getInfoReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegInfoRequested = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpCallLeg/getCall:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpCallLeg_getCall(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_cc_mpccs_TpMultiPartyCallIdentifier" */
+
+
+
+ decode_org_csapi_cc_mpccs_TpMultiPartyCallIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mpccs_TpMultiPartyCallIdentifier" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpCallLeg/attachMediaReq:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpCallLeg_attachMediaReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpCallLeg/detachMediaReq:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpCallLeg_detachMediaReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpCallLeg/getCurrentDestinationAddress:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpCallLeg_getCurrentDestinationAddress(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpCallLeg/continueProcessing:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpCallLeg_continueProcessing(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpCallLeg/setChargePlan:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpCallLeg_setChargePlan(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_TpCallChargePlan" */
+
+
+
+ decode_org_csapi_cc_TpCallChargePlan_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallChargePlan" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpCallLeg/setAdviceOfCharge:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpCallLeg_setAdviceOfCharge(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_TpAoCInfo" */
+
+
+
+ decode_org_csapi_TpAoCInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAoCInfo" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"tariffSwitch = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpCallLeg/superviseReq:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpCallLeg_superviseReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"time = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"treatment = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpCallLeg/deassign:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpCallLeg_deassign(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpCallLeg/getProperties:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpCallLeg_getProperties(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_propertyNames;
+ guint32 i_propertyNames;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpCallLegPropertyList;
+ guint32 i_TpCallLegPropertyList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ u_octet4_loop_propertyNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of propertyNames = %u",u_octet4_loop_propertyNames);
+ }
+
+ for (i_propertyNames=0; i_propertyNames < u_octet4_loop_propertyNames; i_propertyNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"propertyNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpCallLegPropertyList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpCallLegPropertyList = %u",u_octet4_loop_TpCallLegPropertyList);
+ }
+
+ for (i_TpCallLegPropertyList=0; i_TpCallLegPropertyList < u_octet4_loop_TpCallLegPropertyList; i_TpCallLegPropertyList++) {
+
+ /* Begin struct "org_csapi_cc_TpCallLegProperty" */
+
+
+
+ decode_org_csapi_cc_TpCallLegProperty_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallLegProperty" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpCallLeg/setProperties:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpCallLeg_setProperties(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_properties;
+ guint32 i_properties;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ u_octet4_loop_properties = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of properties = %u",u_octet4_loop_properties);
+ }
+
+ for (i_properties=0; i_properties < u_octet4_loop_properties; i_properties++) {
+
+ /* Begin struct "org_csapi_cc_TpCallLegProperty" */
+
+
+
+ decode_org_csapi_cc_TpCallLegProperty_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallLegProperty" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpAppMultiPartyCall/getInfoRes:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpAppMultiPartyCall_getInfoRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_TpCallInfoReport" */
+
+
+
+ decode_org_csapi_cc_TpCallInfoReport_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallInfoReport" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpAppMultiPartyCall/getInfoErr:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpAppMultiPartyCall_getInfoErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_TpCallError" */
+
+
+
+ decode_org_csapi_cc_TpCallError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallError" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpAppMultiPartyCall/superviseRes:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpAppMultiPartyCall_superviseRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"report = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"usedTime = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpAppMultiPartyCall/superviseErr:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpAppMultiPartyCall_superviseErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_TpCallError" */
+
+
+
+ decode_org_csapi_cc_TpCallError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallError" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpAppMultiPartyCall/callEnded:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpAppMultiPartyCall_callEnded(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_TpCallEndedReport" */
+
+
+
+ decode_org_csapi_cc_TpCallEndedReport_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallEndedReport" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpAppMultiPartyCall/createAndRouteCallLegErr:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpAppMultiPartyCall_createAndRouteCallLegErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_mpccs_TpCallLegIdentifier" */
+
+
+
+ decode_org_csapi_cc_mpccs_TpCallLegIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mpccs_TpCallLegIdentifier" */
+
+ /* Begin struct "org_csapi_cc_TpCallError" */
+
+
+
+ decode_org_csapi_cc_TpCallError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallError" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpMultiPartyCall/getCallLegs:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpMultiPartyCall_getCallLegs(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_TpCallLegIdentifierSet;
+ guint32 i_TpCallLegIdentifierSet;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpCallLegIdentifierSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpCallLegIdentifierSet = %u",u_octet4_loop_TpCallLegIdentifierSet);
+ }
+
+ for (i_TpCallLegIdentifierSet=0; i_TpCallLegIdentifierSet < u_octet4_loop_TpCallLegIdentifierSet; i_TpCallLegIdentifierSet++) {
+
+ /* Begin struct "org_csapi_cc_mpccs_TpCallLegIdentifier" */
+
+
+
+ decode_org_csapi_cc_mpccs_TpCallLegIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mpccs_TpCallLegIdentifier" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpMultiPartyCall/createCallLeg:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpMultiPartyCall_createCallLeg(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_cc_mpccs_TpCallLegIdentifier" */
+
+
+
+ decode_org_csapi_cc_mpccs_TpCallLegIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mpccs_TpCallLegIdentifier" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpMultiPartyCall/createAndRouteCallLegReq:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpMultiPartyCall_createAndRouteCallLegReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_eventsRequested;
+ guint32 i_eventsRequested;
+ guint32 u_octet4_loop_appInfo;
+ guint32 i_appInfo;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ u_octet4_loop_eventsRequested = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of eventsRequested = %u",u_octet4_loop_eventsRequested);
+ }
+
+ for (i_eventsRequested=0; i_eventsRequested < u_octet4_loop_eventsRequested; i_eventsRequested++) {
+
+ /* Begin struct "org_csapi_cc_TpCallEventRequest" */
+
+
+
+ decode_org_csapi_cc_TpCallEventRequest_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallEventRequest" */
+
+ }
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ u_octet4_loop_appInfo = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of appInfo = %u",u_octet4_loop_appInfo);
+ }
+
+ for (i_appInfo=0; i_appInfo < u_octet4_loop_appInfo; i_appInfo++) {
+
+ /* Begin union "org_csapi_cc_TpCallAppInfo" */
+
+
+ decode_org_csapi_cc_TpCallAppInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cc_TpCallAppInfo" */
+
+ }
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_cc_mpccs_TpCallLegIdentifier" */
+
+
+
+ decode_org_csapi_cc_mpccs_TpCallLegIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mpccs_TpCallLegIdentifier" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpMultiPartyCall/release:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpMultiPartyCall_release(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpReleaseCause,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpMultiPartyCall/deassignCall:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpMultiPartyCall_deassignCall(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpMultiPartyCall/getInfoReq:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpMultiPartyCall_getInfoReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callInfoRequested = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpMultiPartyCall/setChargePlan:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpMultiPartyCall_setChargePlan(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_TpCallChargePlan" */
+
+
+
+ decode_org_csapi_cc_TpCallChargePlan_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallChargePlan" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpMultiPartyCall/setAdviceOfCharge:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpMultiPartyCall_setAdviceOfCharge(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_TpAoCInfo" */
+
+
+
+ decode_org_csapi_TpAoCInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAoCInfo" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"tariffSwitch = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpMultiPartyCall/superviseReq:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpMultiPartyCall_superviseReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"time = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"treatment = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpAppMultiPartyCallControlManager/reportNotification:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_reportNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_callLegReferenceSet;
+ guint32 i_callLegReferenceSet;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_cc_mpccs_TpMultiPartyCallIdentifier" */
+
+
+
+ decode_org_csapi_cc_mpccs_TpMultiPartyCallIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mpccs_TpMultiPartyCallIdentifier" */
+
+ u_octet4_loop_callLegReferenceSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of callLegReferenceSet = %u",u_octet4_loop_callLegReferenceSet);
+ }
+
+ for (i_callLegReferenceSet=0; i_callLegReferenceSet < u_octet4_loop_callLegReferenceSet; i_callLegReferenceSet++) {
+
+ /* Begin struct "org_csapi_cc_mpccs_TpCallLegIdentifier" */
+
+
+
+ decode_org_csapi_cc_mpccs_TpCallLegIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mpccs_TpCallLegIdentifier" */
+
+ }
+
+ /* Begin struct "org_csapi_cc_TpCallNotificationInfo" */
+
+
+
+ decode_org_csapi_cc_TpCallNotificationInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallNotificationInfo" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin union "org_csapi_cc_mpccs_TpAppMultiPartyCallBack" */
+
+
+ decode_org_csapi_cc_mpccs_TpAppMultiPartyCallBack_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cc_mpccs_TpAppMultiPartyCallBack" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpAppMultiPartyCallControlManager/callAborted:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_callAborted(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callReference = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpAppMultiPartyCallControlManager/managerInterrupted:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_managerInterrupted(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpAppMultiPartyCallControlManager/managerResumed:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_managerResumed(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpAppMultiPartyCallControlManager/callOverloadEncountered:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_callOverloadEncountered(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpAppMultiPartyCallControlManager/callOverloadCeased:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_callOverloadCeased(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mpccs/IpAppMultiPartyCallControlManager/abortMultipleCalls:1.0
+ */
+
+static void decode_org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_abortMultipleCalls(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_callReferenceSet;
+ guint32 i_callReferenceSet;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_callReferenceSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of callReferenceSet = %u",u_octet4_loop_callReferenceSet);
+ }
+
+ for (i_callReferenceSet=0; i_callReferenceSet < u_octet4_loop_callReferenceSet; i_callReferenceSet++) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callReferenceSet = %i",s_octet4);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mmccs/IpAppMultiMediaCall/superviseVolumeRes:1.0
+ */
+
+static void decode_org_csapi_cc_mmccs_IpAppMultiMediaCall_superviseVolumeRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"report = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_mmccs_TpCallSuperviseVolume" */
+
+
+
+ decode_org_csapi_cc_mmccs_TpCallSuperviseVolume_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mmccs_TpCallSuperviseVolume" */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"qualityOfService = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_TpDataSessionQosClass,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mmccs/IpAppMultiMediaCall/superviseVolumeErr:1.0
+ */
+
+static void decode_org_csapi_cc_mmccs_IpAppMultiMediaCall_superviseVolumeErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_TpCallError" */
+
+
+
+ decode_org_csapi_cc_TpCallError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallError" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mmccs/IpAppMultiMediaCallLeg/mediaStreamMonitorRes:1.0
+ */
+
+static void decode_org_csapi_cc_mmccs_IpAppMultiMediaCallLeg_mediaStreamMonitorRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_streams;
+ guint32 i_streams;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ u_octet4_loop_streams = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of streams = %u",u_octet4_loop_streams);
+ }
+
+ for (i_streams=0; i_streams < u_octet4_loop_streams; i_streams++) {
+
+ /* Begin struct "org_csapi_cc_mmccs_TpMediaStream" */
+
+
+
+ decode_org_csapi_cc_mmccs_TpMediaStream_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mmccs_TpMediaStream" */
+
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"type = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_mmccs_TpMediaStreamEventType,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mmccs/IpMultiMediaStream/subtract:1.0
+ */
+
+static void decode_org_csapi_cc_mmccs_IpMultiMediaStream_subtract(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mediaStreamSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mmccs/IpMultiMediaCallLeg/mediaStreamAllow:1.0
+ */
+
+static void decode_org_csapi_cc_mmccs_IpMultiMediaCallLeg_mediaStreamAllow(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_mediaStreamList;
+ guint32 i_mediaStreamList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ u_octet4_loop_mediaStreamList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of mediaStreamList = %u",u_octet4_loop_mediaStreamList);
+ }
+
+ for (i_mediaStreamList=0; i_mediaStreamList < u_octet4_loop_mediaStreamList; i_mediaStreamList++) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mediaStreamList = %i",s_octet4);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mmccs/IpMultiMediaCallLeg/mediaStreamMonitorReq:1.0
+ */
+
+static void decode_org_csapi_cc_mmccs_IpMultiMediaCallLeg_mediaStreamMonitorReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_mediaStreamEventCriteria;
+ guint32 i_mediaStreamEventCriteria;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ u_octet4_loop_mediaStreamEventCriteria = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of mediaStreamEventCriteria = %u",u_octet4_loop_mediaStreamEventCriteria);
+ }
+
+ for (i_mediaStreamEventCriteria=0; i_mediaStreamEventCriteria < u_octet4_loop_mediaStreamEventCriteria; i_mediaStreamEventCriteria++) {
+
+ /* Begin struct "org_csapi_cc_mmccs_TpMediaStreamRequest" */
+
+
+
+ decode_org_csapi_cc_mmccs_TpMediaStreamRequest_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mmccs_TpMediaStreamRequest" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mmccs/IpMultiMediaCallLeg/getMediaStreams:1.0
+ */
+
+static void decode_org_csapi_cc_mmccs_IpMultiMediaCallLeg_getMediaStreams(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_TpMediaStreamSet;
+ guint32 i_TpMediaStreamSet;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpMediaStreamSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpMediaStreamSet = %u",u_octet4_loop_TpMediaStreamSet);
+ }
+
+ for (i_TpMediaStreamSet=0; i_TpMediaStreamSet < u_octet4_loop_TpMediaStreamSet; i_TpMediaStreamSet++) {
+
+ /* Begin struct "org_csapi_cc_mmccs_TpMediaStream" */
+
+
+
+ decode_org_csapi_cc_mmccs_TpMediaStream_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mmccs_TpMediaStream" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mmccs/IpMultiMediaCall/superviseVolumeReq:1.0
+ */
+
+static void decode_org_csapi_cc_mmccs_IpMultiMediaCall_superviseVolumeReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_mmccs_TpCallSuperviseVolume" */
+
+
+
+ decode_org_csapi_cc_mmccs_TpCallSuperviseVolume_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mmccs_TpCallSuperviseVolume" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"treatment = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mmccs/IpAppMultiMediaCallControlManager/reportMediaNotification:1.0
+ */
+
+static void decode_org_csapi_cc_mmccs_IpAppMultiMediaCallControlManager_reportMediaNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_callLegReferenceSet;
+ guint32 i_callLegReferenceSet;
+ guint32 u_octet4_loop_mediaStreams;
+ guint32 i_mediaStreams;
+ guint32 u_octet4;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_cc_mmccs_TpMultiMediaCallIdentifier" */
+
+
+
+ decode_org_csapi_cc_mmccs_TpMultiMediaCallIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mmccs_TpMultiMediaCallIdentifier" */
+
+ u_octet4_loop_callLegReferenceSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of callLegReferenceSet = %u",u_octet4_loop_callLegReferenceSet);
+ }
+
+ for (i_callLegReferenceSet=0; i_callLegReferenceSet < u_octet4_loop_callLegReferenceSet; i_callLegReferenceSet++) {
+
+ /* Begin struct "org_csapi_cc_mmccs_TpMultiMediaCallLegIdentifier" */
+
+
+
+ decode_org_csapi_cc_mmccs_TpMultiMediaCallLegIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mmccs_TpMultiMediaCallLegIdentifier" */
+
+ }
+
+ u_octet4_loop_mediaStreams = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of mediaStreams = %u",u_octet4_loop_mediaStreams);
+ }
+
+ for (i_mediaStreams=0; i_mediaStreams < u_octet4_loop_mediaStreams; i_mediaStreams++) {
+
+ /* Begin struct "org_csapi_cc_mmccs_TpMediaStream" */
+
+
+
+ decode_org_csapi_cc_mmccs_TpMediaStream_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mmccs_TpMediaStream" */
+
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"type = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_mmccs_TpMediaStreamEventType,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"qualityOfService = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_TpDataSessionQosClass,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin union "org_csapi_cc_mmccs_TpAppMultiMediaCallBack" */
+
+
+ decode_org_csapi_cc_mmccs_TpAppMultiMediaCallBack_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cc_mmccs_TpAppMultiMediaCallBack" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mmccs/IpMultiMediaCallControlManager/createMediaNotification:1.0
+ */
+
+static void decode_org_csapi_cc_mmccs_IpMultiMediaCallControlManager_createMediaNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ /* Begin struct "org_csapi_cc_mmccs_TpNotificationMediaRequest" */
+
+
+
+ decode_org_csapi_cc_mmccs_TpNotificationMediaRequest_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mmccs_TpNotificationMediaRequest" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mmccs/IpMultiMediaCallControlManager/destroyMediaNotification:1.0
+ */
+
+static void decode_org_csapi_cc_mmccs_IpMultiMediaCallControlManager_destroyMediaNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mmccs/IpMultiMediaCallControlManager/changeMediaNotification:1.0
+ */
+
+static void decode_org_csapi_cc_mmccs_IpMultiMediaCallControlManager_changeMediaNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_mmccs_TpNotificationMediaRequest" */
+
+
+
+ decode_org_csapi_cc_mmccs_TpNotificationMediaRequest_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mmccs_TpNotificationMediaRequest" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/mmccs/IpMultiMediaCallControlManager/getMediaNotification:1.0
+ */
+
+static void decode_org_csapi_cc_mmccs_IpMultiMediaCallControlManager_getMediaNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpMediaNotificationRequestedSet;
+ guint32 i_TpMediaNotificationRequestedSet;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpMediaNotificationRequestedSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpMediaNotificationRequestedSet = %u",u_octet4_loop_TpMediaNotificationRequestedSet);
+ }
+
+ for (i_TpMediaNotificationRequestedSet=0; i_TpMediaNotificationRequestedSet < u_octet4_loop_TpMediaNotificationRequestedSet; i_TpMediaNotificationRequestedSet++) {
+
+ /* Begin struct "org_csapi_cc_mmccs_TpMediaNotificationRequested" */
+
+
+
+ decode_org_csapi_cc_mmccs_TpMediaNotificationRequested_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mmccs_TpMediaNotificationRequested" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/cccs/IpAppSubConfCall/chairSelection:1.0
+ */
+
+static void decode_org_csapi_cc_cccs_IpAppSubConfCall_chairSelection(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"subConferenceSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/cccs/IpAppSubConfCall/floorRequest:1.0
+ */
+
+static void decode_org_csapi_cc_cccs_IpAppSubConfCall_floorRequest(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"subConferenceSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/cccs/IpAppConfCall/partyJoined:1.0
+ */
+
+static void decode_org_csapi_cc_cccs_IpAppConfCall_partyJoined(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"conferenceSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_mpccs_TpCallLegIdentifier" */
+
+
+
+ decode_org_csapi_cc_mpccs_TpCallLegIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mpccs_TpCallLegIdentifier" */
+
+ /* Begin struct "org_csapi_cc_cccs_TpJoinEventInfo" */
+
+
+
+ decode_org_csapi_cc_cccs_TpJoinEventInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_cccs_TpJoinEventInfo" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/cccs/IpAppConfCall/leaveMonitorRes:1.0
+ */
+
+static void decode_org_csapi_cc_cccs_IpAppConfCall_leaveMonitorRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"conferenceSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLeg = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/cccs/IpConfCallControlManager/createConference:1.0
+ */
+
+static void decode_org_csapi_cc_cccs_IpConfCallControlManager_createConference(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"numberOfSubConferences = %i",s_octet4);
+ }
+
+ /* Begin union "org_csapi_cc_cccs_TpConfPolicy" */
+
+
+ decode_org_csapi_cc_cccs_TpConfPolicy_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cc_cccs_TpConfPolicy" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"numberOfParticipants = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"duration = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_cc_cccs_TpConfCallIdentifier" */
+
+
+
+ decode_org_csapi_cc_cccs_TpConfCallIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_cccs_TpConfCallIdentifier" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/cccs/IpConfCallControlManager/checkResources:1.0
+ */
+
+static void decode_org_csapi_cc_cccs_IpConfCallControlManager_checkResources(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_cc_cccs_TpConfSearchCriteria" */
+
+
+
+ decode_org_csapi_cc_cccs_TpConfSearchCriteria_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_cccs_TpConfSearchCriteria" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_cc_cccs_TpConfSearchResult" */
+
+
+
+ decode_org_csapi_cc_cccs_TpConfSearchResult_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_cccs_TpConfSearchResult" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/cccs/IpConfCallControlManager/reserveResources:1.0
+ */
+
+static void decode_org_csapi_cc_cccs_IpConfCallControlManager_reserveResources(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"startTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"numberOfParticipants = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"duration = %i",s_octet4);
+ }
+
+ /* Begin union "org_csapi_cc_cccs_TpConfPolicy" */
+
+
+ decode_org_csapi_cc_cccs_TpConfPolicy_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cc_cccs_TpConfPolicy" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_cc_cccs_TpResourceReservation" */
+
+
+
+ decode_org_csapi_cc_cccs_TpResourceReservation_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_cccs_TpResourceReservation" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/cccs/IpConfCallControlManager/freeResources:1.0
+ */
+
+static void decode_org_csapi_cc_cccs_IpConfCallControlManager_freeResources(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_cc_cccs_TpResourceReservation" */
+
+
+
+ decode_org_csapi_cc_cccs_TpResourceReservation_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_cccs_TpResourceReservation" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/cccs/IpAppConfCallControlManager/conferenceCreated:1.0
+ */
+
+static void decode_org_csapi_cc_cccs_IpAppConfCallControlManager_conferenceCreated(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_cc_cccs_TpConfCallIdentifier" */
+
+
+
+ decode_org_csapi_cc_cccs_TpConfCallIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_cccs_TpConfCallIdentifier" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/cccs/IpSubConfCall/splitSubConference:1.0
+ */
+
+static void decode_org_csapi_cc_cccs_IpSubConfCall_splitSubConference(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_callLegList;
+ guint32 i_callLegList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"subConferenceSessionID = %i",s_octet4);
+ }
+
+ u_octet4_loop_callLegList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of callLegList = %u",u_octet4_loop_callLegList);
+ }
+
+ for (i_callLegList=0; i_callLegList < u_octet4_loop_callLegList; i_callLegList++) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLegList = %i",s_octet4);
+ }
+
+ }
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_cc_cccs_TpSubConfCallIdentifier" */
+
+
+
+ decode_org_csapi_cc_cccs_TpSubConfCallIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_cccs_TpSubConfCallIdentifier" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/cccs/IpSubConfCall/mergeSubConference:1.0
+ */
+
+static void decode_org_csapi_cc_cccs_IpSubConfCall_mergeSubConference(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"subConferenceCallSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"targetSubConferenceCall = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/cccs/IpSubConfCall/moveCallLeg:1.0
+ */
+
+static void decode_org_csapi_cc_cccs_IpSubConfCall_moveCallLeg(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"subConferenceCallSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"targetSubConferenceCall = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"callLeg = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/cccs/IpSubConfCall/inspectVideo:1.0
+ */
+
+static void decode_org_csapi_cc_cccs_IpSubConfCall_inspectVideo(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"subConferenceSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"inspectedCallLeg = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/cccs/IpSubConfCall/inspectVideoCancel:1.0
+ */
+
+static void decode_org_csapi_cc_cccs_IpSubConfCall_inspectVideoCancel(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"subConferenceSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/cccs/IpSubConfCall/appointSpeaker:1.0
+ */
+
+static void decode_org_csapi_cc_cccs_IpSubConfCall_appointSpeaker(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"subConferenceSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"speakerCallLeg = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/cccs/IpSubConfCall/chairSelection:1.0
+ */
+
+static void decode_org_csapi_cc_cccs_IpSubConfCall_chairSelection(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"subConferenceSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"chairCallLeg = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/cccs/IpSubConfCall/changeConferencePolicy:1.0
+ */
+
+static void decode_org_csapi_cc_cccs_IpSubConfCall_changeConferencePolicy(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"subConferenceSessionID = %i",s_octet4);
+ }
+
+ /* Begin union "org_csapi_cc_cccs_TpConfPolicy" */
+
+
+ decode_org_csapi_cc_cccs_TpConfPolicy_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cc_cccs_TpConfPolicy" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/cccs/IpConfCall/getSubConferences:1.0
+ */
+
+static void decode_org_csapi_cc_cccs_IpConfCall_getSubConferences(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_TpSubConfCallIdentifierSet;
+ guint32 i_TpSubConfCallIdentifierSet;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"conferenceSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpSubConfCallIdentifierSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpSubConfCallIdentifierSet = %u",u_octet4_loop_TpSubConfCallIdentifierSet);
+ }
+
+ for (i_TpSubConfCallIdentifierSet=0; i_TpSubConfCallIdentifierSet < u_octet4_loop_TpSubConfCallIdentifierSet; i_TpSubConfCallIdentifierSet++) {
+
+ /* Begin struct "org_csapi_cc_cccs_TpSubConfCallIdentifier" */
+
+
+
+ decode_org_csapi_cc_cccs_TpSubConfCallIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_cccs_TpSubConfCallIdentifier" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/cccs/IpConfCall/createSubConference:1.0
+ */
+
+static void decode_org_csapi_cc_cccs_IpConfCall_createSubConference(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"conferenceSessionID = %i",s_octet4);
+ }
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ /* Begin union "org_csapi_cc_cccs_TpConfPolicy" */
+
+
+ decode_org_csapi_cc_cccs_TpConfPolicy_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cc_cccs_TpConfPolicy" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_cc_cccs_TpSubConfCallIdentifier" */
+
+
+
+ decode_org_csapi_cc_cccs_TpSubConfCallIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_cccs_TpSubConfCallIdentifier" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/cccs/IpConfCall/leaveMonitorReq:1.0
+ */
+
+static void decode_org_csapi_cc_cccs_IpConfCall_leaveMonitorReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"conferenceSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cc/cccs/IpConfCall/getConferenceAddress:1.0
+ */
+
+static void decode_org_csapi_cc_cccs_IpConfCall_getConferenceAddress(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"conferenceSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUI/sendInfoRes:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUI_sendInfoRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"userInteractionSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"response = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUIReport,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUI/sendInfoErr:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUI_sendInfoErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"userInteractionSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUIError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUI/sendInfoAndCollectRes:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUI_sendInfoAndCollectRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"userInteractionSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"response = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUIReport,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"collectedInfo (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUI/sendInfoAndCollectErr:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUI_sendInfoAndCollectErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"userInteractionSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUIError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUI/userInteractionFaultDetected:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUI_userInteractionFaultDetected(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"userInteractionSessionID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"fault = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUIFault,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUICall/recordMessageRes:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUICall_recordMessageRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"userInteractionSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"response = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUIReport,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"messageID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUICall/recordMessageErr:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUICall_recordMessageErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"userInteractionSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUIError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUICall/deleteMessageRes:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUICall_deleteMessageRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"usrInteractionSessionID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"response = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUIReport,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUICall/deleteMessageErr:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUICall_deleteMessageErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"usrInteractionSessionID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUIError,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUICall/abortActionRes:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUICall_abortActionRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"userInteractionSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUICall/abortActionErr:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUICall_abortActionErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"userInteractionSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUIError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUICall/getMessageRes:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUICall_getMessageRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"userInteractionSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ /* Begin union "org_csapi_ui_TpUIInfo" */
+
+
+ decode_org_csapi_ui_TpUIInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_ui_TpUIInfo" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUICall/getMessageErr:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUICall_getMessageErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"userInteractionSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUIError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUIManager/userInteractionAborted:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUIManager_userInteractionAborted(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_ui_TpUIIdentifier" */
+
+
+
+ decode_org_csapi_ui_TpUIIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_ui_TpUIIdentifier" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUIManager/userInteractionNotificationInterrupted:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUIManager_userInteractionNotificationInterrupted(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUIManager/userInteractionNotificationContinued:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUIManager_userInteractionNotificationContinued(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUIManager/reportEventNotification:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUIManager_reportEventNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_ui_TpUIIdentifier" */
+
+
+
+ decode_org_csapi_ui_TpUIIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_ui_TpUIIdentifier" */
+
+ /* Begin struct "org_csapi_ui_TpUIEventNotificationInfo" */
+
+
+
+ decode_org_csapi_ui_TpUIEventNotificationInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_ui_TpUIEventNotificationInfo" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUIManager/abortMultipleUserInteractions:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUIManager_abortMultipleUserInteractions(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_userInteractionSet;
+ guint32 i_userInteractionSet;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_userInteractionSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of userInteractionSet = %u",u_octet4_loop_userInteractionSet);
+ }
+
+ for (i_userInteractionSet=0; i_userInteractionSet < u_octet4_loop_userInteractionSet; i_userInteractionSet++) {
+
+ /* Begin struct "org_csapi_ui_TpUIIdentifier" */
+
+
+
+ decode_org_csapi_ui_TpUIIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_ui_TpUIIdentifier" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpUI/sendInfoReq:1.0
+ */
+
+static void decode_org_csapi_ui_IpUI_sendInfoReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_variableInfo;
+ guint32 i_variableInfo;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"userInteractionSessionID = %i",s_octet4);
+ }
+
+ /* Begin union "org_csapi_ui_TpUIInfo" */
+
+
+ decode_org_csapi_ui_TpUIInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_ui_TpUIInfo" */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"language (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_variableInfo = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of variableInfo = %u",u_octet4_loop_variableInfo);
+ }
+
+ for (i_variableInfo=0; i_variableInfo < u_octet4_loop_variableInfo; i_variableInfo++) {
+
+ /* Begin union "org_csapi_ui_TpUIVariableInfo" */
+
+
+ decode_org_csapi_ui_TpUIVariableInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_ui_TpUIVariableInfo" */
+
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"repeatIndicator = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"responseRequested = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpUI/sendInfoAndCollectReq:1.0
+ */
+
+static void decode_org_csapi_ui_IpUI_sendInfoAndCollectReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_variableInfo;
+ guint32 i_variableInfo;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"userInteractionSessionID = %i",s_octet4);
+ }
+
+ /* Begin union "org_csapi_ui_TpUIInfo" */
+
+
+ decode_org_csapi_ui_TpUIInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_ui_TpUIInfo" */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"language (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_variableInfo = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of variableInfo = %u",u_octet4_loop_variableInfo);
+ }
+
+ for (i_variableInfo=0; i_variableInfo < u_octet4_loop_variableInfo; i_variableInfo++) {
+
+ /* Begin union "org_csapi_ui_TpUIVariableInfo" */
+
+
+ decode_org_csapi_ui_TpUIVariableInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_ui_TpUIVariableInfo" */
+
+ }
+
+ /* Begin struct "org_csapi_ui_TpUICollectCriteria" */
+
+
+
+ decode_org_csapi_ui_TpUICollectCriteria_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_ui_TpUICollectCriteria" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"responseRequested = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpUI/release:1.0
+ */
+
+static void decode_org_csapi_ui_IpUI_release(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"userInteractionSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpUI/setOriginatingAddress:1.0
+ */
+
+static void decode_org_csapi_ui_IpUI_setOriginatingAddress(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"userInteractionSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"origin (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpUI/getOriginatingAddress:1.0
+ */
+
+static void decode_org_csapi_ui_IpUI_getOriginatingAddress(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"userInteractionSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpString (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpUICall/recordMessageReq:1.0
+ */
+
+static void decode_org_csapi_ui_IpUICall_recordMessageReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"userInteractionSessionID = %i",s_octet4);
+ }
+
+ /* Begin union "org_csapi_ui_TpUIInfo" */
+
+
+ decode_org_csapi_ui_TpUIInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_ui_TpUIInfo" */
+
+ /* Begin struct "org_csapi_ui_TpUIMessageCriteria" */
+
+
+
+ decode_org_csapi_ui_TpUIMessageCriteria_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_ui_TpUIMessageCriteria" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpUICall/deleteMessageReq:1.0
+ */
+
+static void decode_org_csapi_ui_IpUICall_deleteMessageReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"usrInteractionSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"messageID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpUICall/abortActionReq:1.0
+ */
+
+static void decode_org_csapi_ui_IpUICall_abortActionReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"userInteractionSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpUICall/getMessageReq:1.0
+ */
+
+static void decode_org_csapi_ui_IpUICall_getMessageReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"userInteractionSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"messageID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpUIManager/createUI:1.0
+ */
+
+static void decode_org_csapi_ui_IpUIManager_createUI(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_ui_TpUIIdentifier" */
+
+
+
+ decode_org_csapi_ui_TpUIIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_ui_TpUIIdentifier" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpUIManager/createUICall:1.0
+ */
+
+static void decode_org_csapi_ui_IpUIManager_createUICall(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ /* Begin union "org_csapi_ui_TpUITargetObject" */
+
+
+ decode_org_csapi_ui_TpUITargetObject_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_ui_TpUITargetObject" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_ui_TpUICallIdentifier" */
+
+
+
+ decode_org_csapi_ui_TpUICallIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_ui_TpUICallIdentifier" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpUIManager/createNotification:1.0
+ */
+
+static void decode_org_csapi_ui_IpUIManager_createNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ /* Begin struct "org_csapi_ui_TpUIEventCriteria" */
+
+
+
+ decode_org_csapi_ui_TpUIEventCriteria_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_ui_TpUIEventCriteria" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpUIManager/destroyNotification:1.0
+ */
+
+static void decode_org_csapi_ui_IpUIManager_destroyNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpUIManager/changeNotification:1.0
+ */
+
+static void decode_org_csapi_ui_IpUIManager_changeNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_ui_TpUIEventCriteria" */
+
+
+
+ decode_org_csapi_ui_TpUIEventCriteria_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_ui_TpUIEventCriteria" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpUIManager/getNotification:1.0
+ */
+
+static void decode_org_csapi_ui_IpUIManager_getNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpUIEventCriteriaResultSet;
+ guint32 i_TpUIEventCriteriaResultSet;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpUIEventCriteriaResultSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpUIEventCriteriaResultSet = %u",u_octet4_loop_TpUIEventCriteriaResultSet);
+ }
+
+ for (i_TpUIEventCriteriaResultSet=0; i_TpUIEventCriteriaResultSet < u_octet4_loop_TpUIEventCriteriaResultSet; i_TpUIEventCriteriaResultSet++) {
+
+ /* Begin struct "org_csapi_ui_TpUIEventCriteriaResult" */
+
+
+
+ decode_org_csapi_ui_TpUIEventCriteriaResult_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_ui_TpUIEventCriteriaResult" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpUIManager/enableNotifications:1.0
+ */
+
+static void decode_org_csapi_ui_IpUIManager_enableNotifications(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpUIManager/disableNotifications:1.0
+ */
+
+static void decode_org_csapi_ui_IpUIManager_disableNotifications(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUIAdminManager/getMessageRes:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUIAdminManager_getMessageRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"usrInteractionSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ /* Begin union "org_csapi_ui_TpUIInfo" */
+
+
+ decode_org_csapi_ui_TpUIInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_ui_TpUIInfo" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUIAdminManager/getMessageErr:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUIAdminManager_getMessageErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"usrInteractionSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUIError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUIAdminManager/deleteMessageRes:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUIAdminManager_deleteMessageRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"usrInteractionSessionID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"response = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUIReport,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUIAdminManager/deleteMessageErr:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUIAdminManager_deleteMessageErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"usrInteractionSessionID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUIError,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUIAdminManager/putMessageRes:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUIAdminManager_putMessageRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"usrInteractionSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"messageID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUIAdminManager/putMessageErr:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUIAdminManager_putMessageErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"usrInteractionSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUIError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUIAdminManager/getMessageListRes:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUIAdminManager_getMessageListRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_messageIDList;
+ guint32 i_messageIDList;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"usrInteractionSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ u_octet4_loop_messageIDList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of messageIDList = %u",u_octet4_loop_messageIDList);
+ }
+
+ for (i_messageIDList=0; i_messageIDList < u_octet4_loop_messageIDList; i_messageIDList++) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"messageIDList = %i",s_octet4);
+ }
+
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"final = %u",u_octet1);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpAppUIAdminManager/getMessageListErr:1.0
+ */
+
+static void decode_org_csapi_ui_IpAppUIAdminManager_getMessageListErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"usrInteractionSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUIError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpUIAdminManager/getMessageReq:1.0
+ */
+
+static void decode_org_csapi_ui_IpUIAdminManager_getMessageReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"usrInteractionSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"messageID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpUIAdminManager/putMessageReq:1.0
+ */
+
+static void decode_org_csapi_ui_IpUIAdminManager_putMessageReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"usrInteractionSessionID = %i",s_octet4);
+ }
+
+ /* Begin union "org_csapi_ui_TpUIInfo" */
+
+
+ decode_org_csapi_ui_TpUIInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_ui_TpUIInfo" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpUIAdminManager/deleteMessageReq:1.0
+ */
+
+static void decode_org_csapi_ui_IpUIAdminManager_deleteMessageReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"usrInteractionSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"messageID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/ui/IpUIAdminManager/getMessageListReq:1.0
+ */
+
+static void decode_org_csapi_ui_IpUIAdminManager_getMessageListReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"usrInteractionSessionID = %i",s_octet4);
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"reset = %u",u_octet1);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ul/IpAppUserLocation/locationReportRes:1.0
+ */
+
+static void decode_org_csapi_mm_ul_IpAppUserLocation_locationReportRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_locations;
+ guint32 i_locations;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+ u_octet4_loop_locations = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of locations = %u",u_octet4_loop_locations);
+ }
+
+ for (i_locations=0; i_locations < u_octet4_loop_locations; i_locations++) {
+
+ /* Begin struct "org_csapi_mm_TpUserLocation" */
+
+
+
+ decode_org_csapi_mm_TpUserLocation_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpUserLocation" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ul/IpAppUserLocation/locationReportErr:1.0
+ */
+
+static void decode_org_csapi_mm_ul_IpAppUserLocation_locationReportErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityError,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"diagnostic = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityDiagnostic,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ul/IpAppUserLocation/extendedLocationReportRes:1.0
+ */
+
+static void decode_org_csapi_mm_ul_IpAppUserLocation_extendedLocationReportRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_locations;
+ guint32 i_locations;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+ u_octet4_loop_locations = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of locations = %u",u_octet4_loop_locations);
+ }
+
+ for (i_locations=0; i_locations < u_octet4_loop_locations; i_locations++) {
+
+ /* Begin struct "org_csapi_mm_TpUserLocationExtended" */
+
+
+
+ decode_org_csapi_mm_TpUserLocationExtended_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpUserLocationExtended" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ul/IpAppUserLocation/extendedLocationReportErr:1.0
+ */
+
+static void decode_org_csapi_mm_ul_IpAppUserLocation_extendedLocationReportErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityError,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"diagnostic = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityDiagnostic,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ul/IpAppUserLocation/periodicLocationReport:1.0
+ */
+
+static void decode_org_csapi_mm_ul_IpAppUserLocation_periodicLocationReport(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_locations;
+ guint32 i_locations;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+ u_octet4_loop_locations = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of locations = %u",u_octet4_loop_locations);
+ }
+
+ for (i_locations=0; i_locations < u_octet4_loop_locations; i_locations++) {
+
+ /* Begin struct "org_csapi_mm_TpUserLocationExtended" */
+
+
+
+ decode_org_csapi_mm_TpUserLocationExtended_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpUserLocationExtended" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ul/IpAppUserLocation/periodicLocationReportErr:1.0
+ */
+
+static void decode_org_csapi_mm_ul_IpAppUserLocation_periodicLocationReportErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityError,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"diagnostic = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityDiagnostic,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ul/IpUserLocation/locationReportReq:1.0
+ */
+
+static void decode_org_csapi_mm_ul_IpUserLocation_locationReportReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_users;
+ guint32 i_users;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ u_octet4_loop_users = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of users = %u",u_octet4_loop_users);
+ }
+
+ for (i_users=0; i_users < u_octet4_loop_users; i_users++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ul/IpUserLocation/extendedLocationReportReq:1.0
+ */
+
+static void decode_org_csapi_mm_ul_IpUserLocation_extendedLocationReportReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_users;
+ guint32 i_users;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ u_octet4_loop_users = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of users = %u",u_octet4_loop_users);
+ }
+
+ for (i_users=0; i_users < u_octet4_loop_users; i_users++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ /* Begin struct "org_csapi_mm_TpLocationRequest" */
+
+
+
+ decode_org_csapi_mm_TpLocationRequest_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpLocationRequest" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ul/IpUserLocation/periodicLocationReportingStartReq:1.0
+ */
+
+static void decode_org_csapi_mm_ul_IpUserLocation_periodicLocationReportingStartReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_users;
+ guint32 i_users;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ u_octet4_loop_users = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of users = %u",u_octet4_loop_users);
+ }
+
+ for (i_users=0; i_users < u_octet4_loop_users; i_users++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ /* Begin struct "org_csapi_mm_TpLocationRequest" */
+
+
+
+ decode_org_csapi_mm_TpLocationRequest_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpLocationRequest" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"reportingInterval = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ul/IpUserLocation/periodicLocationReportingStop:1.0
+ */
+
+static void decode_org_csapi_mm_ul_IpUserLocation_periodicLocationReportingStop(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_mm_TpMobilityStopAssignmentData" */
+
+
+
+ decode_org_csapi_mm_TpMobilityStopAssignmentData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpMobilityStopAssignmentData" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ul/IpUserLocation/getNextPeriodicLocationRequest:1.0
+ */
+
+static void decode_org_csapi_mm_ul_IpUserLocation_getNextPeriodicLocationRequest(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"reset = %u",u_octet1);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_mm_TpPeriodicLocationRequestSetEntry" */
+
+
+
+ decode_org_csapi_mm_TpPeriodicLocationRequestSetEntry_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpPeriodicLocationRequestSetEntry" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ul/IpAppTriggeredUserLocation/triggeredLocationReport:1.0
+ */
+
+static void decode_org_csapi_mm_ul_IpAppTriggeredUserLocation_triggeredLocationReport(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_mm_TpUserLocationExtended" */
+
+
+
+ decode_org_csapi_mm_TpUserLocationExtended_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpUserLocationExtended" */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"criterion = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpLocationTriggerCriteria,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ul/IpAppTriggeredUserLocation/triggeredLocationReportErr:1.0
+ */
+
+static void decode_org_csapi_mm_ul_IpAppTriggeredUserLocation_triggeredLocationReportErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityError,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"diagnostic = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityDiagnostic,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ul/IpTriggeredUserLocation/triggeredLocationReportingStartReq:1.0
+ */
+
+static void decode_org_csapi_mm_ul_IpTriggeredUserLocation_triggeredLocationReportingStartReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_users;
+ guint32 i_users;
+ guint32 u_octet4_loop_triggers;
+ guint32 i_triggers;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ u_octet4_loop_users = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of users = %u",u_octet4_loop_users);
+ }
+
+ for (i_users=0; i_users < u_octet4_loop_users; i_users++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ /* Begin struct "org_csapi_mm_TpLocationRequest" */
+
+
+
+ decode_org_csapi_mm_TpLocationRequest_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpLocationRequest" */
+
+ u_octet4_loop_triggers = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of triggers = %u",u_octet4_loop_triggers);
+ }
+
+ for (i_triggers=0; i_triggers < u_octet4_loop_triggers; i_triggers++) {
+
+ /* Begin struct "org_csapi_mm_TpLocationTrigger" */
+
+
+
+ decode_org_csapi_mm_TpLocationTrigger_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpLocationTrigger" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ul/IpTriggeredUserLocation/triggeredLocationReportingStop:1.0
+ */
+
+static void decode_org_csapi_mm_ul_IpTriggeredUserLocation_triggeredLocationReportingStop(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_mm_TpMobilityStopAssignmentData" */
+
+
+
+ decode_org_csapi_mm_TpMobilityStopAssignmentData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpMobilityStopAssignmentData" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ul/IpTriggeredUserLocation/getNextTriggeredLocationRequest:1.0
+ */
+
+static void decode_org_csapi_mm_ul_IpTriggeredUserLocation_getNextTriggeredLocationRequest(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"reset = %u",u_octet1);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_mm_TpTriggeredLocationRequestSetEntry" */
+
+
+
+ decode_org_csapi_mm_TpTriggeredLocationRequestSetEntry_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpTriggeredLocationRequestSetEntry" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ulc/IpAppUserLocationCamel/locationReportRes:1.0
+ */
+
+static void decode_org_csapi_mm_ulc_IpAppUserLocationCamel_locationReportRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_locations;
+ guint32 i_locations;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+ u_octet4_loop_locations = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of locations = %u",u_octet4_loop_locations);
+ }
+
+ for (i_locations=0; i_locations < u_octet4_loop_locations; i_locations++) {
+
+ /* Begin struct "org_csapi_mm_TpUserLocationCamel" */
+
+
+
+ decode_org_csapi_mm_TpUserLocationCamel_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpUserLocationCamel" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ulc/IpAppUserLocationCamel/locationReportErr:1.0
+ */
+
+static void decode_org_csapi_mm_ulc_IpAppUserLocationCamel_locationReportErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityError,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"diagnostic = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityDiagnostic,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ulc/IpAppUserLocationCamel/periodicLocationReport:1.0
+ */
+
+static void decode_org_csapi_mm_ulc_IpAppUserLocationCamel_periodicLocationReport(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_locations;
+ guint32 i_locations;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+ u_octet4_loop_locations = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of locations = %u",u_octet4_loop_locations);
+ }
+
+ for (i_locations=0; i_locations < u_octet4_loop_locations; i_locations++) {
+
+ /* Begin struct "org_csapi_mm_TpUserLocationCamel" */
+
+
+
+ decode_org_csapi_mm_TpUserLocationCamel_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpUserLocationCamel" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ulc/IpAppUserLocationCamel/periodicLocationReportErr:1.0
+ */
+
+static void decode_org_csapi_mm_ulc_IpAppUserLocationCamel_periodicLocationReportErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityError,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"diagnostic = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityDiagnostic,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ulc/IpAppUserLocationCamel/triggeredLocationReport:1.0
+ */
+
+static void decode_org_csapi_mm_ulc_IpAppUserLocationCamel_triggeredLocationReport(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_mm_TpUserLocationCamel" */
+
+
+
+ decode_org_csapi_mm_TpUserLocationCamel_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpUserLocationCamel" */
+
+ /* Begin struct "org_csapi_mm_TpLocationTriggerCamel" */
+
+
+
+ decode_org_csapi_mm_TpLocationTriggerCamel_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpLocationTriggerCamel" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ulc/IpAppUserLocationCamel/triggeredLocationReportErr:1.0
+ */
+
+static void decode_org_csapi_mm_ulc_IpAppUserLocationCamel_triggeredLocationReportErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityError,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"diagnostic = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityDiagnostic,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ulc/IpUserLocationCamel/locationReportReq:1.0
+ */
+
+static void decode_org_csapi_mm_ulc_IpUserLocationCamel_locationReportReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_users;
+ guint32 i_users;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ u_octet4_loop_users = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of users = %u",u_octet4_loop_users);
+ }
+
+ for (i_users=0; i_users < u_octet4_loop_users; i_users++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ulc/IpUserLocationCamel/periodicLocationReportingStartReq:1.0
+ */
+
+static void decode_org_csapi_mm_ulc_IpUserLocationCamel_periodicLocationReportingStartReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_users;
+ guint32 i_users;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ u_octet4_loop_users = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of users = %u",u_octet4_loop_users);
+ }
+
+ for (i_users=0; i_users < u_octet4_loop_users; i_users++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"reportingInterval = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ulc/IpUserLocationCamel/periodicLocationReportingStop:1.0
+ */
+
+static void decode_org_csapi_mm_ulc_IpUserLocationCamel_periodicLocationReportingStop(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_mm_TpMobilityStopAssignmentData" */
+
+
+
+ decode_org_csapi_mm_TpMobilityStopAssignmentData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpMobilityStopAssignmentData" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ulc/IpUserLocationCamel/triggeredLocationReportingStartReq:1.0
+ */
+
+static void decode_org_csapi_mm_ulc_IpUserLocationCamel_triggeredLocationReportingStartReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_users;
+ guint32 i_users;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ u_octet4_loop_users = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of users = %u",u_octet4_loop_users);
+ }
+
+ for (i_users=0; i_users < u_octet4_loop_users; i_users++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ /* Begin struct "org_csapi_mm_TpLocationTriggerCamel" */
+
+
+
+ decode_org_csapi_mm_TpLocationTriggerCamel_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpLocationTriggerCamel" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ulc/IpUserLocationCamel/triggeredLocationReportingStop:1.0
+ */
+
+static void decode_org_csapi_mm_ulc_IpUserLocationCamel_triggeredLocationReportingStop(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_mm_TpMobilityStopAssignmentData" */
+
+
+
+ decode_org_csapi_mm_TpMobilityStopAssignmentData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpMobilityStopAssignmentData" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ulc/IpUserLocationCamel/getNextPeriodicLocationRequest:1.0
+ */
+
+static void decode_org_csapi_mm_ulc_IpUserLocationCamel_getNextPeriodicLocationRequest(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"reset = %u",u_octet1);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_mm_TpPeriodicLocationRequestSetEntry" */
+
+
+
+ decode_org_csapi_mm_TpPeriodicLocationRequestSetEntry_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpPeriodicLocationRequestSetEntry" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ulc/IpUserLocationCamel/getNextTriggeredLocationRequest:1.0
+ */
+
+static void decode_org_csapi_mm_ulc_IpUserLocationCamel_getNextTriggeredLocationRequest(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"reset = %u",u_octet1);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_mm_TpTriggeredLocationRequestSetEntry" */
+
+
+
+ decode_org_csapi_mm_TpTriggeredLocationRequestSetEntry_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpTriggeredLocationRequestSetEntry" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ule/IpAppUserLocationEmergency/emergencyLocationReport:1.0
+ */
+
+static void decode_org_csapi_mm_ule_IpAppUserLocationEmergency_emergencyLocationReport(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_mm_TpUserLocationEmergency" */
+
+
+
+ decode_org_csapi_mm_TpUserLocationEmergency_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpUserLocationEmergency" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ule/IpAppUserLocationEmergency/emergencyLocationReportErr:1.0
+ */
+
+static void decode_org_csapi_mm_ule_IpAppUserLocationEmergency_emergencyLocationReportErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityError,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"diagnostic = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityDiagnostic,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ule/IpUserLocationEmergency/emergencyLocationReportReq:1.0
+ */
+
+static void decode_org_csapi_mm_ule_IpUserLocationEmergency_emergencyLocationReportReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ /* Begin struct "org_csapi_mm_TpUserLocationEmergencyRequest" */
+
+
+
+ decode_org_csapi_mm_TpUserLocationEmergencyRequest_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpUserLocationEmergencyRequest" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ule/IpUserLocationEmergency/subscribeEmergencyLocationReports:1.0
+ */
+
+static void decode_org_csapi_mm_ule_IpUserLocationEmergency_subscribeEmergencyLocationReports(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ule/IpUserLocationEmergency/unSubscribeEmergencyLocationReports:1.0
+ */
+
+static void decode_org_csapi_mm_ule_IpUserLocationEmergency_unSubscribeEmergencyLocationReports(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/us/IpAppUserStatus/statusReportRes:1.0
+ */
+
+static void decode_org_csapi_mm_us_IpAppUserStatus_statusReportRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_status;
+ guint32 i_status;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+ u_octet4_loop_status = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of status = %u",u_octet4_loop_status);
+ }
+
+ for (i_status=0; i_status < u_octet4_loop_status; i_status++) {
+
+ /* Begin struct "org_csapi_mm_TpUserStatus" */
+
+
+
+ decode_org_csapi_mm_TpUserStatus_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpUserStatus" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/us/IpAppUserStatus/statusReportErr:1.0
+ */
+
+static void decode_org_csapi_mm_us_IpAppUserStatus_statusReportErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityError,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"diagnostic = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityDiagnostic,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/us/IpAppUserStatus/triggeredStatusReport:1.0
+ */
+
+static void decode_org_csapi_mm_us_IpAppUserStatus_triggeredStatusReport(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_mm_TpUserStatus" */
+
+
+
+ decode_org_csapi_mm_TpUserStatus_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpUserStatus" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/us/IpAppUserStatus/triggeredStatusReportErr:1.0
+ */
+
+static void decode_org_csapi_mm_us_IpAppUserStatus_triggeredStatusReportErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityError,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"diagnostic = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityDiagnostic,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/us/IpAppUserStatus/extendedStatusReportRes:1.0
+ */
+
+static void decode_org_csapi_mm_us_IpAppUserStatus_extendedStatusReportRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_status;
+ guint32 i_status;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+ u_octet4_loop_status = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of status = %u",u_octet4_loop_status);
+ }
+
+ for (i_status=0; i_status < u_octet4_loop_status; i_status++) {
+
+ /* Begin struct "org_csapi_mm_TpUserStatusExtended" */
+
+
+
+ decode_org_csapi_mm_TpUserStatusExtended_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpUserStatusExtended" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/us/IpAppUserStatus/extendedStatusReportErr:1.0
+ */
+
+static void decode_org_csapi_mm_us_IpAppUserStatus_extendedStatusReportErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityError,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"diagnostic = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityDiagnostic,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/us/IpAppUserStatus/extTriggeredStatusReport:1.0
+ */
+
+static void decode_org_csapi_mm_us_IpAppUserStatus_extTriggeredStatusReport(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_mm_TpUserStatusExtended" */
+
+
+
+ decode_org_csapi_mm_TpUserStatusExtended_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpUserStatusExtended" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/us/IpAppUserStatus/extTriggeredStatusReportErr:1.0
+ */
+
+static void decode_org_csapi_mm_us_IpAppUserStatus_extTriggeredStatusReportErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityError,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"diagnostic = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityDiagnostic,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/us/IpUserStatus/statusReportReq:1.0
+ */
+
+static void decode_org_csapi_mm_us_IpUserStatus_statusReportReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_users;
+ guint32 i_users;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ u_octet4_loop_users = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of users = %u",u_octet4_loop_users);
+ }
+
+ for (i_users=0; i_users < u_octet4_loop_users; i_users++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/us/IpUserStatus/triggeredStatusReportingStartReq:1.0
+ */
+
+static void decode_org_csapi_mm_us_IpUserStatus_triggeredStatusReportingStartReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_users;
+ guint32 i_users;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ u_octet4_loop_users = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of users = %u",u_octet4_loop_users);
+ }
+
+ for (i_users=0; i_users < u_octet4_loop_users; i_users++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/us/IpUserStatus/triggeredStatusReportingStop:1.0
+ */
+
+static void decode_org_csapi_mm_us_IpUserStatus_triggeredStatusReportingStop(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_mm_TpMobilityStopAssignmentData" */
+
+
+
+ decode_org_csapi_mm_TpMobilityStopAssignmentData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpMobilityStopAssignmentData" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/us/IpUserStatus/getNextTriggeredStatusRequest:1.0
+ */
+
+static void decode_org_csapi_mm_us_IpUserStatus_getNextTriggeredStatusRequest(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"reset = %u",u_octet1);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_mm_TpTriggeredStatusRequestSetEntry" */
+
+
+
+ decode_org_csapi_mm_TpTriggeredStatusRequestSetEntry_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpTriggeredStatusRequestSetEntry" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/us/IpUserStatus/extendedStatusReportReq:1.0
+ */
+
+static void decode_org_csapi_mm_us_IpUserStatus_extendedStatusReportReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_users;
+ guint32 i_users;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ u_octet4_loop_users = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of users = %u",u_octet4_loop_users);
+ }
+
+ for (i_users=0; i_users < u_octet4_loop_users; i_users++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/us/IpUserStatus/extTriggeredStatusReportingStartReq:1.0
+ */
+
+static void decode_org_csapi_mm_us_IpUserStatus_extTriggeredStatusReportingStartReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_users;
+ guint32 i_users;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ u_octet4_loop_users = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of users = %u",u_octet4_loop_users);
+ }
+
+ for (i_users=0; i_users < u_octet4_loop_users; i_users++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/us/IpUserStatus/extTriggeredStatusReportingStop:1.0
+ */
+
+static void decode_org_csapi_mm_us_IpUserStatus_extTriggeredStatusReportingStop(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_mm_TpMobilityStopAssignmentData" */
+
+
+
+ decode_org_csapi_mm_TpMobilityStopAssignmentData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpMobilityStopAssignmentData" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ub/IpAppUserBinding/triggeredBindingRequestNotification:1.0
+ */
+
+static void decode_org_csapi_mm_ub_IpAppUserBinding_triggeredBindingRequestNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_contactInformation;
+ guint32 i_contactInformation;
+ guint32 u_octet4_loop_TpBindingSet;
+ guint32 i_TpBindingSet;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ u_octet4_loop_contactInformation = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of contactInformation = %u",u_octet4_loop_contactInformation);
+ }
+
+ for (i_contactInformation=0; i_contactInformation < u_octet4_loop_contactInformation; i_contactInformation++) {
+
+ u_octet4_loop_contactInformation = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of contactInformation = %u",u_octet4_loop_contactInformation);
+ }
+
+ for (i_contactInformation=0; i_contactInformation < u_octet4_loop_contactInformation; i_contactInformation++) {
+
+ /* Begin union "org_csapi_mm_TpBindingEntry" */
+
+
+ decode_org_csapi_mm_TpBindingEntry_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_mm_TpBindingEntry" */
+
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpBindingSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpBindingSet = %u",u_octet4_loop_TpBindingSet);
+ }
+
+ for (i_TpBindingSet=0; i_TpBindingSet < u_octet4_loop_TpBindingSet; i_TpBindingSet++) {
+
+ u_octet4_loop_TpBindingSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpBindingSet = %u",u_octet4_loop_TpBindingSet);
+ }
+
+ for (i_TpBindingSet=0; i_TpBindingSet < u_octet4_loop_TpBindingSet; i_TpBindingSet++) {
+
+ /* Begin union "org_csapi_mm_TpBindingEntry" */
+
+
+ decode_org_csapi_mm_TpBindingEntry_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_mm_TpBindingEntry" */
+
+ }
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ub/IpAppUserBinding/triggeredBindingRequestNotificationStartErr:1.0
+ */
+
+static void decode_org_csapi_mm_ub_IpAppUserBinding_triggeredBindingRequestNotificationStartErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityError,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"diagnostic = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityDiagnostic,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ub/IpUserBinding/triggeredBindingRequestNotificationStartReq:1.0
+ */
+
+static void decode_org_csapi_mm_ub_IpUserBinding_triggeredBindingRequestNotificationStartReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_users;
+ guint32 i_users;
+ guint32 u_octet4_loop_criteria;
+ guint32 i_criteria;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ u_octet4_loop_users = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of users = %u",u_octet4_loop_users);
+ }
+
+ for (i_users=0; i_users < u_octet4_loop_users; i_users++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ u_octet4_loop_criteria = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of criteria = %u",u_octet4_loop_criteria);
+ }
+
+ for (i_criteria=0; i_criteria < u_octet4_loop_criteria; i_criteria++) {
+
+ /* Begin struct "org_csapi_mm_TpBindingNotificationCriteria" */
+
+
+
+ decode_org_csapi_mm_TpBindingNotificationCriteria_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpBindingNotificationCriteria" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mm/ub/IpUserBinding/triggeredBindingRequestNotificationStop:1.0
+ */
+
+static void decode_org_csapi_mm_ub_IpUserBinding_triggeredBindingRequestNotificationStop(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/termcap/IpTerminalCapabilities/getTerminalCapabilities:1.0
+ */
+
+static void decode_org_csapi_termcap_IpTerminalCapabilities_getTerminalCapabilities(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"terminalIdentity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_termcap_TpTerminalCapabilities" */
+
+
+
+ decode_org_csapi_termcap_TpTerminalCapabilities_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_termcap_TpTerminalCapabilities" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/termcap/IpAppExtendedTerminalCapabilities/triggeredTerminalCapabilityReport:1.0
+ */
+
+static void decode_org_csapi_termcap_IpAppExtendedTerminalCapabilities_triggeredTerminalCapabilityReport(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_terminals;
+ guint32 i_terminals;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ u_octet4_loop_terminals = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of terminals = %u",u_octet4_loop_terminals);
+ }
+
+ for (i_terminals=0; i_terminals < u_octet4_loop_terminals; i_terminals++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"criteria = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_termcap_TpTerminalCapabilities" */
+
+
+
+ decode_org_csapi_termcap_TpTerminalCapabilities_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_termcap_TpTerminalCapabilities" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/termcap/IpAppExtendedTerminalCapabilities/triggeredTerminalCapabilityReportErr:1.0
+ */
+
+static void decode_org_csapi_termcap_IpAppExtendedTerminalCapabilities_triggeredTerminalCapabilityReportErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_terminals;
+ guint32 i_terminals;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+ u_octet4_loop_terminals = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of terminals = %u",u_octet4_loop_terminals);
+ }
+
+ for (i_terminals=0; i_terminals < u_octet4_loop_terminals; i_terminals++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_termcap_TpTerminalCapabilitiesError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/termcap/IpExtendedTerminalCapabilities/triggeredTerminalCapabilityStartReq:1.0
+ */
+
+static void decode_org_csapi_termcap_IpExtendedTerminalCapabilities_triggeredTerminalCapabilityStartReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_terminals;
+ guint32 i_terminals;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ u_octet4_loop_terminals = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of terminals = %u",u_octet4_loop_terminals);
+ }
+
+ for (i_terminals=0; i_terminals < u_octet4_loop_terminals; i_terminals++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ /* Begin struct "org_csapi_termcap_TpTerminalCapabilityScope" */
+
+
+
+ decode_org_csapi_termcap_TpTerminalCapabilityScope_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_termcap_TpTerminalCapabilityScope" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"criteria = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/termcap/IpExtendedTerminalCapabilities/triggeredTerminalCapabilityStop:1.0
+ */
+
+static void decode_org_csapi_termcap_IpExtendedTerminalCapabilities_triggeredTerminalCapabilityStop(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/dsc/IpAppDataSession/connectRes:1.0
+ */
+
+static void decode_org_csapi_dsc_IpAppDataSession_connectRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"dataSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_dsc_TpDataSessionReport" */
+
+
+
+ decode_org_csapi_dsc_TpDataSessionReport_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_dsc_TpDataSessionReport" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/dsc/IpAppDataSession/connectErr:1.0
+ */
+
+static void decode_org_csapi_dsc_IpAppDataSession_connectErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"dataSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_dsc_TpDataSessionError" */
+
+
+
+ decode_org_csapi_dsc_TpDataSessionError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_dsc_TpDataSessionError" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/dsc/IpAppDataSession/superviseDataSessionRes:1.0
+ */
+
+static void decode_org_csapi_dsc_IpAppDataSession_superviseDataSessionRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"dataSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"report = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_dsc_TpDataSessionSuperviseVolume" */
+
+
+
+ decode_org_csapi_dsc_TpDataSessionSuperviseVolume_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_dsc_TpDataSessionSuperviseVolume" */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"qualityOfService = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_TpDataSessionQosClass,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/dsc/IpAppDataSession/superviseDataSessionErr:1.0
+ */
+
+static void decode_org_csapi_dsc_IpAppDataSession_superviseDataSessionErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"dataSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_dsc_TpDataSessionError" */
+
+
+
+ decode_org_csapi_dsc_TpDataSessionError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_dsc_TpDataSessionError" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/dsc/IpAppDataSession/dataSessionFaultDetected:1.0
+ */
+
+static void decode_org_csapi_dsc_IpAppDataSession_dataSessionFaultDetected(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"dataSessionID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"fault = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_dsc_TpDataSessionFault,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/dsc/IpAppDataSessionControlManager/dataSessionAborted:1.0
+ */
+
+static void decode_org_csapi_dsc_IpAppDataSessionControlManager_dataSessionAborted(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"dataSession = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/dsc/IpAppDataSessionControlManager/reportNotification:1.0
+ */
+
+static void decode_org_csapi_dsc_IpAppDataSessionControlManager_reportNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_dsc_TpDataSessionIdentifier" */
+
+
+
+ decode_org_csapi_dsc_TpDataSessionIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_dsc_TpDataSessionIdentifier" */
+
+ /* Begin struct "org_csapi_dsc_TpDataSessionEventInfo" */
+
+
+
+ decode_org_csapi_dsc_TpDataSessionEventInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_dsc_TpDataSessionEventInfo" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/dsc/IpAppDataSessionControlManager/dataSessionNotificationContinued:1.0
+ */
+
+static void decode_org_csapi_dsc_IpAppDataSessionControlManager_dataSessionNotificationContinued(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/dsc/IpAppDataSessionControlManager/dataSessionNotificationInterrupted:1.0
+ */
+
+static void decode_org_csapi_dsc_IpAppDataSessionControlManager_dataSessionNotificationInterrupted(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/dsc/IpAppDataSessionControlManager/abortMultipleDataSessions:1.0
+ */
+
+static void decode_org_csapi_dsc_IpAppDataSessionControlManager_abortMultipleDataSessions(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_dataSessionSet;
+ guint32 i_dataSessionSet;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_dataSessionSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of dataSessionSet = %u",u_octet4_loop_dataSessionSet);
+ }
+
+ for (i_dataSessionSet=0; i_dataSessionSet < u_octet4_loop_dataSessionSet; i_dataSessionSet++) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"dataSessionSet = %i",s_octet4);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/dsc/IpDataSession/connectReq:1.0
+ */
+
+static void decode_org_csapi_dsc_IpDataSession_connectReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_responseRequested;
+ guint32 i_responseRequested;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"dataSessionID = %i",s_octet4);
+ }
+
+ u_octet4_loop_responseRequested = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of responseRequested = %u",u_octet4_loop_responseRequested);
+ }
+
+ for (i_responseRequested=0; i_responseRequested < u_octet4_loop_responseRequested; i_responseRequested++) {
+
+ /* Begin struct "org_csapi_dsc_TpDataSessionReportRequest" */
+
+
+
+ decode_org_csapi_dsc_TpDataSessionReportRequest_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_dsc_TpDataSessionReportRequest" */
+
+ }
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/dsc/IpDataSession/release:1.0
+ */
+
+static void decode_org_csapi_dsc_IpDataSession_release(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"dataSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_dsc_TpDataSessionReleaseCause" */
+
+
+
+ decode_org_csapi_dsc_TpDataSessionReleaseCause_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_dsc_TpDataSessionReleaseCause" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/dsc/IpDataSession/superviseDataSessionReq:1.0
+ */
+
+static void decode_org_csapi_dsc_IpDataSession_superviseDataSessionReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"dataSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"treatment = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_dsc_TpDataSessionSuperviseVolume" */
+
+
+
+ decode_org_csapi_dsc_TpDataSessionSuperviseVolume_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_dsc_TpDataSessionSuperviseVolume" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/dsc/IpDataSession/setDataSessionChargePlan:1.0
+ */
+
+static void decode_org_csapi_dsc_IpDataSession_setDataSessionChargePlan(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"dataSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_dsc_TpDataSessionChargePlan" */
+
+
+
+ decode_org_csapi_dsc_TpDataSessionChargePlan_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_dsc_TpDataSessionChargePlan" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/dsc/IpDataSession/setAdviceOfCharge:1.0
+ */
+
+static void decode_org_csapi_dsc_IpDataSession_setAdviceOfCharge(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"dataSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_TpAoCInfo" */
+
+
+
+ decode_org_csapi_TpAoCInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAoCInfo" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"tariffSwitch = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/dsc/IpDataSession/deassignDataSession:1.0
+ */
+
+static void decode_org_csapi_dsc_IpDataSession_deassignDataSession(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"dataSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/dsc/IpDataSession/continueProcessing:1.0
+ */
+
+static void decode_org_csapi_dsc_IpDataSession_continueProcessing(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"dataSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/dsc/IpDataSessionControlManager/createNotification:1.0
+ */
+
+static void decode_org_csapi_dsc_IpDataSessionControlManager_createNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ /* Begin struct "org_csapi_dsc_TpDataSessionEventCriteria" */
+
+
+
+ decode_org_csapi_dsc_TpDataSessionEventCriteria_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_dsc_TpDataSessionEventCriteria" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/dsc/IpDataSessionControlManager/destroyNotification:1.0
+ */
+
+static void decode_org_csapi_dsc_IpDataSessionControlManager_destroyNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/dsc/IpDataSessionControlManager/changeNotification:1.0
+ */
+
+static void decode_org_csapi_dsc_IpDataSessionControlManager_changeNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_dsc_TpDataSessionEventCriteria" */
+
+
+
+ decode_org_csapi_dsc_TpDataSessionEventCriteria_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_dsc_TpDataSessionEventCriteria" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/dsc/IpDataSessionControlManager/enableNotifications:1.0
+ */
+
+static void decode_org_csapi_dsc_IpDataSessionControlManager_enableNotifications(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/dsc/IpDataSessionControlManager/disableNotifications:1.0
+ */
+
+static void decode_org_csapi_dsc_IpDataSessionControlManager_disableNotifications(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/dsc/IpDataSessionControlManager/getNotifications:1.0
+ */
+
+static void decode_org_csapi_dsc_IpDataSessionControlManager_getNotifications(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpDataSessionEventCriteriaResultSet;
+ guint32 i_TpDataSessionEventCriteriaResultSet;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpDataSessionEventCriteriaResultSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpDataSessionEventCriteriaResultSet = %u",u_octet4_loop_TpDataSessionEventCriteriaResultSet);
+ }
+
+ for (i_TpDataSessionEventCriteriaResultSet=0; i_TpDataSessionEventCriteriaResultSet < u_octet4_loop_TpDataSessionEventCriteriaResultSet; i_TpDataSessionEventCriteriaResultSet++) {
+
+ /* Begin struct "org_csapi_dsc_TpDataSessionEventCriteriaResult" */
+
+
+
+ decode_org_csapi_dsc_TpDataSessionEventCriteriaResult_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_dsc_TpDataSessionEventCriteriaResult" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/dsc/IpDataSessionControlManager/createNotifications:1.0
+ */
+
+static void decode_org_csapi_dsc_IpDataSessionControlManager_createNotifications(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ /* Begin struct "org_csapi_dsc_TpDataSessionEventCriteria" */
+
+
+
+ decode_org_csapi_dsc_TpDataSessionEventCriteria_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_dsc_TpDataSessionEventCriteria" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpMessagingManager/openMailbox:1.0
+ */
+
+static void decode_org_csapi_gms_IpMessagingManager_openMailbox(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"authenticationInfo (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_gms_TpMailboxIdentifier" */
+
+
+
+ decode_org_csapi_gms_TpMailboxIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_gms_TpMailboxIdentifier" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpMessagingManager/enableMessagingNotification:1.0
+ */
+
+static void decode_org_csapi_gms_IpMessagingManager_enableMessagingNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ /* Begin union "org_csapi_gms_TpMessagingEventCriteria" */
+
+
+ decode_org_csapi_gms_TpMessagingEventCriteria_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_gms_TpMessagingEventCriteria" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpMessagingManager/disableMessagingNotification:1.0
+ */
+
+static void decode_org_csapi_gms_IpMessagingManager_disableMessagingNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpAppMessagingManager/mailboxTerminated:1.0
+ */
+
+static void decode_org_csapi_gms_IpAppMessagingManager_mailboxTerminated(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpAppMessagingManager/mailboxFaultDetected:1.0
+ */
+
+static void decode_org_csapi_gms_IpAppMessagingManager_mailboxFaultDetected(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"fault = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_gms_TpMessagingFault,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpAppMessagingManager/messagingEventNotify:1.0
+ */
+
+static void decode_org_csapi_gms_IpAppMessagingManager_messagingEventNotify(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ /* Begin union "org_csapi_gms_TpMessagingEventInfo" */
+
+
+ decode_org_csapi_gms_TpMessagingEventInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_gms_TpMessagingEventInfo" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpAppMessagingManager/messagingNotificationTerminated:1.0
+ */
+
+static void decode_org_csapi_gms_IpAppMessagingManager_messagingNotificationTerminated(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpMailbox/close:1.0
+ */
+
+static void decode_org_csapi_gms_IpMailbox_close(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpMailbox/lock:1.0
+ */
+
+static void decode_org_csapi_gms_IpMailbox_lock(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpMailbox/unlock:1.0
+ */
+
+static void decode_org_csapi_gms_IpMailbox_unlock(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpMailbox/getInfoAmount:1.0
+ */
+
+static void decode_org_csapi_gms_IpMailbox_getInfoAmount(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpInt32 = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpMailbox/getInfoProperties:1.0
+ */
+
+static void decode_org_csapi_gms_IpMailbox_getInfoProperties(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_TpMailboxInfoPropertySet;
+ guint32 i_TpMailboxInfoPropertySet;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"firstProperty = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"numberOfProperties = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpMailboxInfoPropertySet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpMailboxInfoPropertySet = %u",u_octet4_loop_TpMailboxInfoPropertySet);
+ }
+
+ for (i_TpMailboxInfoPropertySet=0; i_TpMailboxInfoPropertySet < u_octet4_loop_TpMailboxInfoPropertySet; i_TpMailboxInfoPropertySet++) {
+
+ /* Begin union "org_csapi_gms_TpMailboxInfoProperty" */
+
+
+ decode_org_csapi_gms_TpMailboxInfoProperty_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_gms_TpMailboxInfoProperty" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpMailbox/setInfoProperties:1.0
+ */
+
+static void decode_org_csapi_gms_IpMailbox_setInfoProperties(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_mailboxInfoProperties;
+ guint32 i_mailboxInfoProperties;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"firstProperty = %i",s_octet4);
+ }
+
+ u_octet4_loop_mailboxInfoProperties = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of mailboxInfoProperties = %u",u_octet4_loop_mailboxInfoProperties);
+ }
+
+ for (i_mailboxInfoProperties=0; i_mailboxInfoProperties < u_octet4_loop_mailboxInfoProperties; i_mailboxInfoProperties++) {
+
+ /* Begin union "org_csapi_gms_TpMailboxInfoProperty" */
+
+
+ decode_org_csapi_gms_TpMailboxInfoProperty_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_gms_TpMailboxInfoProperty" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpMailbox/openFolder:1.0
+ */
+
+static void decode_org_csapi_gms_IpMailbox_openFolder(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"folderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_gms_TpMailboxFolderIdentifier" */
+
+
+
+ decode_org_csapi_gms_TpMailboxFolderIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_gms_TpMailboxFolderIdentifier" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpMailbox/createFolder:1.0
+ */
+
+static void decode_org_csapi_gms_IpMailbox_createFolder(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"folderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpMailbox/remove:1.0
+ */
+
+static void decode_org_csapi_gms_IpMailbox_remove(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"authenticationInfo (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpMessage/getInfoAmount:1.0
+ */
+
+static void decode_org_csapi_gms_IpMessage_getInfoAmount(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"folderSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"messageID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpInt32 = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpMessage/getInfoProperties:1.0
+ */
+
+static void decode_org_csapi_gms_IpMessage_getInfoProperties(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpMessageInfoPropertySet;
+ guint32 i_TpMessageInfoPropertySet;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"folderSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"messageID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"firstProperty = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"numberOfProperties = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpMessageInfoPropertySet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpMessageInfoPropertySet = %u",u_octet4_loop_TpMessageInfoPropertySet);
+ }
+
+ for (i_TpMessageInfoPropertySet=0; i_TpMessageInfoPropertySet < u_octet4_loop_TpMessageInfoPropertySet; i_TpMessageInfoPropertySet++) {
+
+ /* Begin union "org_csapi_gms_TpMessageInfoProperty" */
+
+
+ decode_org_csapi_gms_TpMessageInfoProperty_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_gms_TpMessageInfoProperty" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpMessage/setInfoProperties:1.0
+ */
+
+static void decode_org_csapi_gms_IpMessage_setInfoProperties(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_messageInfoProperties;
+ guint32 i_messageInfoProperties;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"folderSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"messageID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"firstProperty = %i",s_octet4);
+ }
+
+ u_octet4_loop_messageInfoProperties = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of messageInfoProperties = %u",u_octet4_loop_messageInfoProperties);
+ }
+
+ for (i_messageInfoProperties=0; i_messageInfoProperties < u_octet4_loop_messageInfoProperties; i_messageInfoProperties++) {
+
+ /* Begin union "org_csapi_gms_TpMessageInfoProperty" */
+
+
+ decode_org_csapi_gms_TpMessageInfoProperty_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_gms_TpMessageInfoProperty" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpMessage/remove:1.0
+ */
+
+static void decode_org_csapi_gms_IpMessage_remove(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"folderSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"messageID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpMessage/getContent:1.0
+ */
+
+static void decode_org_csapi_gms_IpMessage_getContent(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"folderSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"messageID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpMessage (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpMailboxFolder/getInfoAmount:1.0
+ */
+
+static void decode_org_csapi_gms_IpMailboxFolder_getInfoAmount(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"folderSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpInt32 = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpMailboxFolder/getInfoProperties:1.0
+ */
+
+static void decode_org_csapi_gms_IpMailboxFolder_getInfoProperties(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_TpFolderInfoPropertySet;
+ guint32 i_TpFolderInfoPropertySet;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"folderSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"firstProperty = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"numberOfProperties = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpFolderInfoPropertySet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpFolderInfoPropertySet = %u",u_octet4_loop_TpFolderInfoPropertySet);
+ }
+
+ for (i_TpFolderInfoPropertySet=0; i_TpFolderInfoPropertySet < u_octet4_loop_TpFolderInfoPropertySet; i_TpFolderInfoPropertySet++) {
+
+ /* Begin union "org_csapi_gms_TpFolderInfoProperty" */
+
+
+ decode_org_csapi_gms_TpFolderInfoProperty_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_gms_TpFolderInfoProperty" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpMailboxFolder/setInfoProperties:1.0
+ */
+
+static void decode_org_csapi_gms_IpMailboxFolder_setInfoProperties(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_folderInfoProperties;
+ guint32 i_folderInfoProperties;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"folderSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"firstProperty = %i",s_octet4);
+ }
+
+ u_octet4_loop_folderInfoProperties = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of folderInfoProperties = %u",u_octet4_loop_folderInfoProperties);
+ }
+
+ for (i_folderInfoProperties=0; i_folderInfoProperties < u_octet4_loop_folderInfoProperties; i_folderInfoProperties++) {
+
+ /* Begin union "org_csapi_gms_TpFolderInfoProperty" */
+
+
+ decode_org_csapi_gms_TpFolderInfoProperty_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_gms_TpFolderInfoProperty" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpMailboxFolder/putMessage:1.0
+ */
+
+static void decode_org_csapi_gms_IpMailboxFolder_putMessage(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_messageInfoProperties;
+ guint32 i_messageInfoProperties;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"folderSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"message (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_messageInfoProperties = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of messageInfoProperties = %u",u_octet4_loop_messageInfoProperties);
+ }
+
+ for (i_messageInfoProperties=0; i_messageInfoProperties < u_octet4_loop_messageInfoProperties; i_messageInfoProperties++) {
+
+ /* Begin union "org_csapi_gms_TpMessageInfoProperty" */
+
+
+ decode_org_csapi_gms_TpMessageInfoProperty_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_gms_TpMessageInfoProperty" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpMailboxFolder/getMessage:1.0
+ */
+
+static void decode_org_csapi_gms_IpMailboxFolder_getMessage(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"folderSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"messageID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpMailboxFolder/close:1.0
+ */
+
+static void decode_org_csapi_gms_IpMailboxFolder_close(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"folderSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/gms/IpMailboxFolder/remove:1.0
+ */
+
+static void decode_org_csapi_gms_IpMailboxFolder_remove(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"folderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpVPrP/getVPrPID:1.0
+ */
+
+static void decode_org_csapi_cm_IpVPrP_getVPrPID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpString (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpVPrP/getSlaID:1.0
+ */
+
+static void decode_org_csapi_cm_IpVPrP_getSlaID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpString (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpVPrP/getStatus:1.0
+ */
+
+static void decode_org_csapi_cm_IpVPrP_getStatus(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"Operation_Return_Value = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cm_TpVprpStatus,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpVPrP/getProvisionedQoSInfo:1.0
+ */
+
+static void decode_org_csapi_cm_IpVPrP_getProvisionedQoSInfo(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_cm_TpProvisionedQoSInfo" */
+
+
+
+ decode_org_csapi_cm_TpProvisionedQoSInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpProvisionedQoSInfo" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpVPrP/getValidityInfo:1.0
+ */
+
+static void decode_org_csapi_cm_IpVPrP_getValidityInfo(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_cm_TpValidityInfo" */
+
+
+
+ decode_org_csapi_cm_TpValidityInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpValidityInfo" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpVPrP/getPipeQoSInfo:1.0
+ */
+
+static void decode_org_csapi_cm_IpVPrP_getPipeQoSInfo(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_cm_TpPipeQoSInfo" */
+
+
+
+ decode_org_csapi_cm_TpPipeQoSInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpPipeQoSInfo" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpVPrP/getDsCodepoint:1.0
+ */
+
+static void decode_org_csapi_cm_IpVPrP_getDsCodepoint(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_cm_TpDsCodepoint" */
+
+
+
+ decode_org_csapi_cm_TpDsCodepoint_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpDsCodepoint" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpVPrN/getVPrPList:1.0
+ */
+
+static void decode_org_csapi_cm_IpVPrN_getVPrPList(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpStringList;
+ guint32 i_TpStringList;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpStringList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpStringList = %u",u_octet4_loop_TpStringList);
+ }
+
+ for (i_TpStringList=0; i_TpStringList < u_octet4_loop_TpStringList; i_TpStringList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpStringList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpVPrN/getVPrP:1.0
+ */
+
+static void decode_org_csapi_cm_IpVPrN_getVPrP(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"vPrPID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpVPrN/createVPrP:1.0
+ */
+
+static void decode_org_csapi_cm_IpVPrN_createVPrP(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpVPrN/deleteVPrP:1.0
+ */
+
+static void decode_org_csapi_cm_IpVPrN_deleteVPrP(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"vPrPID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpQoSMenu/getTemplate:1.0
+ */
+
+static void decode_org_csapi_cm_IpQoSMenu_getTemplate(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"templateType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpQoSMenu/getTemplateList:1.0
+ */
+
+static void decode_org_csapi_cm_IpQoSMenu_getTemplateList(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpStringList;
+ guint32 i_TpStringList;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpStringList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpStringList = %u",u_octet4_loop_TpStringList);
+ }
+
+ for (i_TpStringList=0; i_TpStringList < u_octet4_loop_TpStringList; i_TpStringList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpStringList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpConnectivityManager/getQoSMenu:1.0
+ */
+
+static void decode_org_csapi_cm_IpConnectivityManager_getQoSMenu(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpConnectivityManager/getEnterpriseNetwork:1.0
+ */
+
+static void decode_org_csapi_cm_IpConnectivityManager_getEnterpriseNetwork(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpQoSTemplate/getTemplateType:1.0
+ */
+
+static void decode_org_csapi_cm_IpQoSTemplate_getTemplateType(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpString (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpQoSTemplate/getDescription:1.0
+ */
+
+static void decode_org_csapi_cm_IpQoSTemplate_getDescription(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpString (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpQoSTemplate/setSlaID:1.0
+ */
+
+static void decode_org_csapi_cm_IpQoSTemplate_setSlaID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"slaID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpQoSTemplate/getPipeQoSInfo:1.0
+ */
+
+static void decode_org_csapi_cm_IpQoSTemplate_getPipeQoSInfo(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_cm_TpPipeQoSInfo" */
+
+
+
+ decode_org_csapi_cm_TpPipeQoSInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpPipeQoSInfo" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpQoSTemplate/setPipeQoSInfo:1.0
+ */
+
+static void decode_org_csapi_cm_IpQoSTemplate_setPipeQoSInfo(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_cm_TpPipeQoSInfo" */
+
+
+
+ decode_org_csapi_cm_TpPipeQoSInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpPipeQoSInfo" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpQoSTemplate/getValidityInfo:1.0
+ */
+
+static void decode_org_csapi_cm_IpQoSTemplate_getValidityInfo(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_cm_TpValidityInfo" */
+
+
+
+ decode_org_csapi_cm_TpValidityInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpValidityInfo" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpQoSTemplate/setValidityInfo:1.0
+ */
+
+static void decode_org_csapi_cm_IpQoSTemplate_setValidityInfo(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_cm_TpValidityInfo" */
+
+
+
+ decode_org_csapi_cm_TpValidityInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpValidityInfo" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpQoSTemplate/setProvisionedQoSInfo:1.0
+ */
+
+static void decode_org_csapi_cm_IpQoSTemplate_setProvisionedQoSInfo(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_cm_TpProvisionedQoSInfo" */
+
+
+
+ decode_org_csapi_cm_TpProvisionedQoSInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpProvisionedQoSInfo" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpQoSTemplate/getProvisionedQoSInfo:1.0
+ */
+
+static void decode_org_csapi_cm_IpQoSTemplate_getProvisionedQoSInfo(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_cm_TpProvisionedQoSInfo" */
+
+
+
+ decode_org_csapi_cm_TpProvisionedQoSInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpProvisionedQoSInfo" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpQoSTemplate/getDsCodepoint:1.0
+ */
+
+static void decode_org_csapi_cm_IpQoSTemplate_getDsCodepoint(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_cm_TpDsCodepoint" */
+
+
+
+ decode_org_csapi_cm_TpDsCodepoint_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpDsCodepoint" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpEnterpriseNetwork/getSiteList:1.0
+ */
+
+static void decode_org_csapi_cm_IpEnterpriseNetwork_getSiteList(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpStringList;
+ guint32 i_TpStringList;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpStringList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpStringList = %u",u_octet4_loop_TpStringList);
+ }
+
+ for (i_TpStringList=0; i_TpStringList < u_octet4_loop_TpStringList; i_TpStringList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpStringList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpEnterpriseNetwork/getVPrN:1.0
+ */
+
+static void decode_org_csapi_cm_IpEnterpriseNetwork_getVPrN(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpEnterpriseNetwork/getSite:1.0
+ */
+
+static void decode_org_csapi_cm_IpEnterpriseNetwork_getSite(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"siteID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpEnterpriseNetworkSite/getSAPList:1.0
+ */
+
+static void decode_org_csapi_cm_IpEnterpriseNetworkSite_getSAPList(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpStringList;
+ guint32 i_TpStringList;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpStringList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpStringList = %u",u_octet4_loop_TpStringList);
+ }
+
+ for (i_TpStringList=0; i_TpStringList < u_octet4_loop_TpStringList; i_TpStringList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpStringList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpEnterpriseNetworkSite/getSiteID:1.0
+ */
+
+static void decode_org_csapi_cm_IpEnterpriseNetworkSite_getSiteID(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpString (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpEnterpriseNetworkSite/getSiteLocation:1.0
+ */
+
+static void decode_org_csapi_cm_IpEnterpriseNetworkSite_getSiteLocation(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpString (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpEnterpriseNetworkSite/getSiteDescription:1.0
+ */
+
+static void decode_org_csapi_cm_IpEnterpriseNetworkSite_getSiteDescription(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpString (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpEnterpriseNetworkSite/getIPSubnet:1.0
+ */
+
+static void decode_org_csapi_cm_IpEnterpriseNetworkSite_getIPSubnet(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_cm_TpIPSubnet" */
+
+
+
+ decode_org_csapi_cm_TpIPSubnet_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpIPSubnet" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cm/IpEnterpriseNetworkSite/getSAPIPSubnet:1.0
+ */
+
+static void decode_org_csapi_cm_IpEnterpriseNetworkSite_getSAPIPSubnet(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"sapID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_cm_TpIPSubnet" */
+
+
+
+ decode_org_csapi_cm_TpIPSubnet_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpIPSubnet" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAppAccountManager/reportNotification:1.0
+ */
+
+static void decode_org_csapi_am_IpAppAccountManager_reportNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_am_TpChargingEventInfo" */
+
+
+
+ decode_org_csapi_am_TpChargingEventInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_am_TpChargingEventInfo" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAppAccountManager/queryBalanceRes:1.0
+ */
+
+static void decode_org_csapi_am_IpAppAccountManager_queryBalanceRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_balances;
+ guint32 i_balances;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"queryId = %i",s_octet4);
+ }
+
+ u_octet4_loop_balances = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of balances = %u",u_octet4_loop_balances);
+ }
+
+ for (i_balances=0; i_balances < u_octet4_loop_balances; i_balances++) {
+
+ /* Begin struct "org_csapi_am_TpBalance" */
+
+
+
+ decode_org_csapi_am_TpBalance_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_am_TpBalance" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAppAccountManager/queryBalanceErr:1.0
+ */
+
+static void decode_org_csapi_am_IpAppAccountManager_queryBalanceErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"queryId = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_am_TpBalanceQueryError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAppAccountManager/retrieveTransactionHistoryRes:1.0
+ */
+
+static void decode_org_csapi_am_IpAppAccountManager_retrieveTransactionHistoryRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_transactionHistory;
+ guint32 i_transactionHistory;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"retrievalID = %i",s_octet4);
+ }
+
+ u_octet4_loop_transactionHistory = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of transactionHistory = %u",u_octet4_loop_transactionHistory);
+ }
+
+ for (i_transactionHistory=0; i_transactionHistory < u_octet4_loop_transactionHistory; i_transactionHistory++) {
+
+ /* Begin struct "org_csapi_am_TpTransactionHistory" */
+
+
+
+ decode_org_csapi_am_TpTransactionHistory_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_am_TpTransactionHistory" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAppAccountManager/retrieveTransactionHistoryErr:1.0
+ */
+
+static void decode_org_csapi_am_IpAppAccountManager_retrieveTransactionHistoryErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"retrievalID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"transactionHistoryError = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_am_TpTransactionHistoryStatus,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAppAccountManager/queryBalanceExpiryDateRes:1.0
+ */
+
+static void decode_org_csapi_am_IpAppAccountManager_queryBalanceExpiryDateRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_dates;
+ guint32 i_dates;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"queryId = %i",s_octet4);
+ }
+
+ u_octet4_loop_dates = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of dates = %u",u_octet4_loop_dates);
+ }
+
+ for (i_dates=0; i_dates < u_octet4_loop_dates; i_dates++) {
+
+ /* Begin struct "org_csapi_am_TpBalanceExpiryDate" */
+
+
+
+ decode_org_csapi_am_TpBalanceExpiryDate_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_am_TpBalanceExpiryDate" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAppAccountManager/queryBalanceExpiryDateErr:1.0
+ */
+
+static void decode_org_csapi_am_IpAppAccountManager_queryBalanceExpiryDateErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"queryId = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_am_TpBalanceQueryError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAppAccountManager/updateBalanceRes:1.0
+ */
+
+static void decode_org_csapi_am_IpAppAccountManager_updateBalanceRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestId = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_am_TpBalance" */
+
+
+
+ decode_org_csapi_am_TpBalance_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_am_TpBalance" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAppAccountManager/updateBalanceErr:1.0
+ */
+
+static void decode_org_csapi_am_IpAppAccountManager_updateBalanceErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestId = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_am_TpBalanceQueryError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAppAccountManager/createVoucherRes:1.0
+ */
+
+static void decode_org_csapi_am_IpAppAccountManager_createVoucherRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestId = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"voucherId = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAppAccountManager/createVoucherErr:1.0
+ */
+
+static void decode_org_csapi_am_IpAppAccountManager_createVoucherErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestId = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_am_TpVoucherError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAppAccountManager/destroyVoucherRes:1.0
+ */
+
+static void decode_org_csapi_am_IpAppAccountManager_destroyVoucherRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestId = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"voucherId = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAppAccountManager/destroyVoucherErr:1.0
+ */
+
+static void decode_org_csapi_am_IpAppAccountManager_destroyVoucherErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestId = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"voucherId = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_am_TpVoucherError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAppAccountManager/queryVoucherRes:1.0
+ */
+
+static void decode_org_csapi_am_IpAppAccountManager_queryVoucherRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"queryId = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_am_TpVoucher" */
+
+
+
+ decode_org_csapi_am_TpVoucher_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_am_TpVoucher" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAppAccountManager/queryVoucherErr:1.0
+ */
+
+static void decode_org_csapi_am_IpAppAccountManager_queryVoucherErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"queryId = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"voucherId = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_am_TpVoucherError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAppAccountManager/queryUserVouchersRes:1.0
+ */
+
+static void decode_org_csapi_am_IpAppAccountManager_queryUserVouchersRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_vouchers;
+ guint32 i_vouchers;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"queryId = %i",s_octet4);
+ }
+
+ u_octet4_loop_vouchers = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of vouchers = %u",u_octet4_loop_vouchers);
+ }
+
+ for (i_vouchers=0; i_vouchers < u_octet4_loop_vouchers; i_vouchers++) {
+
+ /* Begin struct "org_csapi_am_TpVoucher" */
+
+
+
+ decode_org_csapi_am_TpVoucher_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_am_TpVoucher" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAppAccountManager/queryUserVouchersErr:1.0
+ */
+
+static void decode_org_csapi_am_IpAppAccountManager_queryUserVouchersErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"queryId = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_am_TpVoucherError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAccountManager/createNotification:1.0
+ */
+
+static void decode_org_csapi_am_IpAccountManager_createNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ /* Begin struct "org_csapi_am_TpChargingEventCriteria" */
+
+
+
+ decode_org_csapi_am_TpChargingEventCriteria_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_am_TpChargingEventCriteria" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAccountManager/destroyNotification:1.0
+ */
+
+static void decode_org_csapi_am_IpAccountManager_destroyNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentId = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAccountManager/queryBalanceReq:1.0
+ */
+
+static void decode_org_csapi_am_IpAccountManager_queryBalanceReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_users;
+ guint32 i_users;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_users = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of users = %u",u_octet4_loop_users);
+ }
+
+ for (i_users=0; i_users < u_octet4_loop_users; i_users++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAccountManager/changeNotification:1.0
+ */
+
+static void decode_org_csapi_am_IpAccountManager_changeNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_am_TpChargingEventCriteria" */
+
+
+
+ decode_org_csapi_am_TpChargingEventCriteria_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_am_TpChargingEventCriteria" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAccountManager/getNotification:1.0
+ */
+
+static void decode_org_csapi_am_IpAccountManager_getNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpChargingEventCriteriaResultSet;
+ guint32 i_TpChargingEventCriteriaResultSet;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpChargingEventCriteriaResultSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpChargingEventCriteriaResultSet = %u",u_octet4_loop_TpChargingEventCriteriaResultSet);
+ }
+
+ for (i_TpChargingEventCriteriaResultSet=0; i_TpChargingEventCriteriaResultSet < u_octet4_loop_TpChargingEventCriteriaResultSet; i_TpChargingEventCriteriaResultSet++) {
+
+ /* Begin struct "org_csapi_am_TpChargingEventCriteriaResult" */
+
+
+
+ decode_org_csapi_am_TpChargingEventCriteriaResult_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_am_TpChargingEventCriteriaResult" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAccountManager/retrieveTransactionHistoryReq:1.0
+ */
+
+static void decode_org_csapi_am_IpAccountManager_retrieveTransactionHistoryReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ /* Begin struct "org_csapi_TpTimeInterval" */
+
+
+
+ decode_org_csapi_TpTimeInterval_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpTimeInterval" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAccountManager/enableNotifications:1.0
+ */
+
+static void decode_org_csapi_am_IpAccountManager_enableNotifications(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAccountManager/disableNotifications:1.0
+ */
+
+static void decode_org_csapi_am_IpAccountManager_disableNotifications(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAccountManager/queryBalanceExpiryDateReq:1.0
+ */
+
+static void decode_org_csapi_am_IpAccountManager_queryBalanceExpiryDateReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_users;
+ guint32 i_users;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_users = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of users = %u",u_octet4_loop_users);
+ }
+
+ for (i_users=0; i_users < u_octet4_loop_users; i_users++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAccountManager/updateBalanceReq:1.0
+ */
+
+static void decode_org_csapi_am_IpAccountManager_updateBalanceReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint8 u_octet1;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"debit = %u",u_octet1);
+ }
+
+ /* Begin struct "org_csapi_am_TpBalanceInfo" */
+
+
+
+ decode_org_csapi_am_TpBalanceInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_am_TpBalanceInfo" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"period = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAccountManager/createVoucherReq:1.0
+ */
+
+static void decode_org_csapi_am_IpAccountManager_createVoucherReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ /* Begin struct "org_csapi_am_TpBalanceInfo" */
+
+
+
+ decode_org_csapi_am_TpBalanceInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_am_TpBalanceInfo" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAccountManager/destroyVoucherReq:1.0
+ */
+
+static void decode_org_csapi_am_IpAccountManager_destroyVoucherReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"voucherId = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAccountManager/queryVoucherReq:1.0
+ */
+
+static void decode_org_csapi_am_IpAccountManager_queryVoucherReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"voucherId = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/am/IpAccountManager/queryUserVouchersReq:1.0
+ */
+
+static void decode_org_csapi_am_IpAccountManager_queryUserVouchersReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingSession/creditAmountErr:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingSession_creditAmountErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cs_TpChargingError,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumberNextRequest = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingSession/creditAmountRes:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingSession_creditAmountRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cs_TpChargingPrice" */
+
+
+
+ decode_org_csapi_cs_TpChargingPrice_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpChargingPrice" */
+
+ /* Begin struct "org_csapi_cs_TpChargingPrice" */
+
+
+
+ decode_org_csapi_cs_TpChargingPrice_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpChargingPrice" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumberNextRequest = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingSession/creditUnitErr:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingSession_creditUnitErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cs_TpChargingError,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumberNextRequest = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingSession/creditUnitRes:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingSession_creditUnitRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_creditedVolumes;
+ guint32 i_creditedVolumes;
+ guint32 u_octet4_loop_reservedUnitsLeft;
+ guint32 i_reservedUnitsLeft;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+ u_octet4_loop_creditedVolumes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of creditedVolumes = %u",u_octet4_loop_creditedVolumes);
+ }
+
+ for (i_creditedVolumes=0; i_creditedVolumes < u_octet4_loop_creditedVolumes; i_creditedVolumes++) {
+
+ /* Begin struct "org_csapi_cs_TpVolume" */
+
+
+
+ decode_org_csapi_cs_TpVolume_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpVolume" */
+
+ }
+
+ u_octet4_loop_reservedUnitsLeft = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of reservedUnitsLeft = %u",u_octet4_loop_reservedUnitsLeft);
+ }
+
+ for (i_reservedUnitsLeft=0; i_reservedUnitsLeft < u_octet4_loop_reservedUnitsLeft; i_reservedUnitsLeft++) {
+
+ /* Begin struct "org_csapi_cs_TpVolume" */
+
+
+
+ decode_org_csapi_cs_TpVolume_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpVolume" */
+
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumberNextRequest = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingSession/debitAmountErr:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingSession_debitAmountErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cs_TpChargingError,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumberNextRequest = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingSession/debitAmountRes:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingSession_debitAmountRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cs_TpChargingPrice" */
+
+
+
+ decode_org_csapi_cs_TpChargingPrice_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpChargingPrice" */
+
+ /* Begin struct "org_csapi_cs_TpChargingPrice" */
+
+
+
+ decode_org_csapi_cs_TpChargingPrice_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpChargingPrice" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumberNextRequest = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingSession/debitUnitErr:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingSession_debitUnitErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cs_TpChargingError,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumberNextRequest = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingSession/debitUnitRes:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingSession_debitUnitRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_debitedVolumes;
+ guint32 i_debitedVolumes;
+ guint32 u_octet4_loop_reservedUnitsLeft;
+ guint32 i_reservedUnitsLeft;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+ u_octet4_loop_debitedVolumes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of debitedVolumes = %u",u_octet4_loop_debitedVolumes);
+ }
+
+ for (i_debitedVolumes=0; i_debitedVolumes < u_octet4_loop_debitedVolumes; i_debitedVolumes++) {
+
+ /* Begin struct "org_csapi_cs_TpVolume" */
+
+
+
+ decode_org_csapi_cs_TpVolume_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpVolume" */
+
+ }
+
+ u_octet4_loop_reservedUnitsLeft = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of reservedUnitsLeft = %u",u_octet4_loop_reservedUnitsLeft);
+ }
+
+ for (i_reservedUnitsLeft=0; i_reservedUnitsLeft < u_octet4_loop_reservedUnitsLeft; i_reservedUnitsLeft++) {
+
+ /* Begin struct "org_csapi_cs_TpVolume" */
+
+
+
+ decode_org_csapi_cs_TpVolume_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpVolume" */
+
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumberNextRequest = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingSession/directCreditAmountErr:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingSession_directCreditAmountErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cs_TpChargingError,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumberNextRequest = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingSession/directCreditAmountRes:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingSession_directCreditAmountRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cs_TpChargingPrice" */
+
+
+
+ decode_org_csapi_cs_TpChargingPrice_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpChargingPrice" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumberNextRequest = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingSession/directCreditUnitErr:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingSession_directCreditUnitErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cs_TpChargingError,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumberNextRequest = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingSession/directCreditUnitRes:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingSession_directCreditUnitRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_creditedVolumes;
+ guint32 i_creditedVolumes;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+ u_octet4_loop_creditedVolumes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of creditedVolumes = %u",u_octet4_loop_creditedVolumes);
+ }
+
+ for (i_creditedVolumes=0; i_creditedVolumes < u_octet4_loop_creditedVolumes; i_creditedVolumes++) {
+
+ /* Begin struct "org_csapi_cs_TpVolume" */
+
+
+
+ decode_org_csapi_cs_TpVolume_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpVolume" */
+
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumberNextRequest = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingSession/directDebitAmountErr:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingSession_directDebitAmountErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cs_TpChargingError,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumberNextRequest = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingSession/directDebitAmountRes:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingSession_directDebitAmountRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cs_TpChargingPrice" */
+
+
+
+ decode_org_csapi_cs_TpChargingPrice_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpChargingPrice" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumberNextRequest = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingSession/directDebitUnitErr:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingSession_directDebitUnitErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cs_TpChargingError,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumberNextRequest = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingSession/directDebitUnitRes:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingSession_directDebitUnitRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_debitedVolumes;
+ guint32 i_debitedVolumes;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+ u_octet4_loop_debitedVolumes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of debitedVolumes = %u",u_octet4_loop_debitedVolumes);
+ }
+
+ for (i_debitedVolumes=0; i_debitedVolumes < u_octet4_loop_debitedVolumes; i_debitedVolumes++) {
+
+ /* Begin struct "org_csapi_cs_TpVolume" */
+
+
+
+ decode_org_csapi_cs_TpVolume_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpVolume" */
+
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumberNextRequest = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingSession/extendLifeTimeErr:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingSession_extendLifeTimeErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cs_TpChargingError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingSession/extendLifeTimeRes:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingSession_extendLifeTimeRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionTimeLeft = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingSession/rateErr:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingSession_rateErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cs_TpChargingError,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingSession/rateRes:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingSession_rateRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_rates;
+ guint32 i_rates;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ u_octet4_loop_rates = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of rates = %u",u_octet4_loop_rates);
+ }
+
+ for (i_rates=0; i_rates < u_octet4_loop_rates; i_rates++) {
+
+ /* Begin struct "org_csapi_cs_TpPriceVolume" */
+
+
+
+ decode_org_csapi_cs_TpPriceVolume_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpPriceVolume" */
+
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"validityTimeLeft = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingSession/reserveAmountErr:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingSession_reserveAmountErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cs_TpChargingError,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumberNextRequest = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingSession/reserveAmountRes:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingSession_reserveAmountRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cs_TpChargingPrice" */
+
+
+
+ decode_org_csapi_cs_TpChargingPrice_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpChargingPrice" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionTimeLeft = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumberNextRequest = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingSession/reserveUnitErr:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingSession_reserveUnitErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cs_TpChargingError,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumberNextRequest = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingSession/reserveUnitRes:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingSession_reserveUnitRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_reservedUnits;
+ guint32 i_reservedUnits;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+ u_octet4_loop_reservedUnits = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of reservedUnits = %u",u_octet4_loop_reservedUnits);
+ }
+
+ for (i_reservedUnits=0; i_reservedUnits < u_octet4_loop_reservedUnits; i_reservedUnits++) {
+
+ /* Begin struct "org_csapi_cs_TpVolume" */
+
+
+
+ decode_org_csapi_cs_TpVolume_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpVolume" */
+
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionTimeLeft = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumberNextRequest = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingSession/sessionEnded:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingSession_sessionEnded(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"report = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cs_TpSessionEndedCause,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpChargingSession/creditAmountReq:1.0
+ */
+
+static void decode_org_csapi_cs_IpChargingSession_creditAmountReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cs_TpApplicationDescription" */
+
+
+
+ decode_org_csapi_cs_TpApplicationDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpApplicationDescription" */
+
+ /* Begin struct "org_csapi_cs_TpChargingPrice" */
+
+
+
+ decode_org_csapi_cs_TpChargingPrice_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpChargingPrice" */
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"closeReservation = %u",u_octet1);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpChargingSession/creditUnitReq:1.0
+ */
+
+static void decode_org_csapi_cs_IpChargingSession_creditUnitReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_volumes;
+ guint32 i_volumes;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cs_TpApplicationDescription" */
+
+
+
+ decode_org_csapi_cs_TpApplicationDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpApplicationDescription" */
+
+ u_octet4_loop_volumes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of volumes = %u",u_octet4_loop_volumes);
+ }
+
+ for (i_volumes=0; i_volumes < u_octet4_loop_volumes; i_volumes++) {
+
+ /* Begin struct "org_csapi_cs_TpVolume" */
+
+
+
+ decode_org_csapi_cs_TpVolume_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpVolume" */
+
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"closeReservation = %u",u_octet1);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpChargingSession/debitAmountReq:1.0
+ */
+
+static void decode_org_csapi_cs_IpChargingSession_debitAmountReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cs_TpApplicationDescription" */
+
+
+
+ decode_org_csapi_cs_TpApplicationDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpApplicationDescription" */
+
+ /* Begin struct "org_csapi_cs_TpChargingPrice" */
+
+
+
+ decode_org_csapi_cs_TpChargingPrice_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpChargingPrice" */
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"closeReservation = %u",u_octet1);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpChargingSession/debitUnitReq:1.0
+ */
+
+static void decode_org_csapi_cs_IpChargingSession_debitUnitReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_volumes;
+ guint32 i_volumes;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cs_TpApplicationDescription" */
+
+
+
+ decode_org_csapi_cs_TpApplicationDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpApplicationDescription" */
+
+ u_octet4_loop_volumes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of volumes = %u",u_octet4_loop_volumes);
+ }
+
+ for (i_volumes=0; i_volumes < u_octet4_loop_volumes; i_volumes++) {
+
+ /* Begin struct "org_csapi_cs_TpVolume" */
+
+
+
+ decode_org_csapi_cs_TpVolume_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpVolume" */
+
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"closeReservation = %u",u_octet1);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpChargingSession/directCreditAmountReq:1.0
+ */
+
+static void decode_org_csapi_cs_IpChargingSession_directCreditAmountReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_chargingParameters;
+ guint32 i_chargingParameters;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cs_TpApplicationDescription" */
+
+
+
+ decode_org_csapi_cs_TpApplicationDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpApplicationDescription" */
+
+ u_octet4_loop_chargingParameters = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of chargingParameters = %u",u_octet4_loop_chargingParameters);
+ }
+
+ for (i_chargingParameters=0; i_chargingParameters < u_octet4_loop_chargingParameters; i_chargingParameters++) {
+
+ /* Begin struct "org_csapi_cs_TpChargingParameter" */
+
+
+
+ decode_org_csapi_cs_TpChargingParameter_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpChargingParameter" */
+
+ }
+
+ /* Begin struct "org_csapi_cs_TpChargingPrice" */
+
+
+
+ decode_org_csapi_cs_TpChargingPrice_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpChargingPrice" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpChargingSession/directCreditUnitReq:1.0
+ */
+
+static void decode_org_csapi_cs_IpChargingSession_directCreditUnitReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_chargingParameters;
+ guint32 i_chargingParameters;
+ guint32 u_octet4_loop_volumes;
+ guint32 i_volumes;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cs_TpApplicationDescription" */
+
+
+
+ decode_org_csapi_cs_TpApplicationDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpApplicationDescription" */
+
+ u_octet4_loop_chargingParameters = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of chargingParameters = %u",u_octet4_loop_chargingParameters);
+ }
+
+ for (i_chargingParameters=0; i_chargingParameters < u_octet4_loop_chargingParameters; i_chargingParameters++) {
+
+ /* Begin struct "org_csapi_cs_TpChargingParameter" */
+
+
+
+ decode_org_csapi_cs_TpChargingParameter_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpChargingParameter" */
+
+ }
+
+ u_octet4_loop_volumes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of volumes = %u",u_octet4_loop_volumes);
+ }
+
+ for (i_volumes=0; i_volumes < u_octet4_loop_volumes; i_volumes++) {
+
+ /* Begin struct "org_csapi_cs_TpVolume" */
+
+
+
+ decode_org_csapi_cs_TpVolume_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpVolume" */
+
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpChargingSession/directDebitAmountReq:1.0
+ */
+
+static void decode_org_csapi_cs_IpChargingSession_directDebitAmountReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_chargingParameters;
+ guint32 i_chargingParameters;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cs_TpApplicationDescription" */
+
+
+
+ decode_org_csapi_cs_TpApplicationDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpApplicationDescription" */
+
+ u_octet4_loop_chargingParameters = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of chargingParameters = %u",u_octet4_loop_chargingParameters);
+ }
+
+ for (i_chargingParameters=0; i_chargingParameters < u_octet4_loop_chargingParameters; i_chargingParameters++) {
+
+ /* Begin struct "org_csapi_cs_TpChargingParameter" */
+
+
+
+ decode_org_csapi_cs_TpChargingParameter_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpChargingParameter" */
+
+ }
+
+ /* Begin struct "org_csapi_cs_TpChargingPrice" */
+
+
+
+ decode_org_csapi_cs_TpChargingPrice_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpChargingPrice" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpChargingSession/directDebitUnitReq:1.0
+ */
+
+static void decode_org_csapi_cs_IpChargingSession_directDebitUnitReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_chargingParameters;
+ guint32 i_chargingParameters;
+ guint32 u_octet4_loop_volumes;
+ guint32 i_volumes;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cs_TpApplicationDescription" */
+
+
+
+ decode_org_csapi_cs_TpApplicationDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpApplicationDescription" */
+
+ u_octet4_loop_chargingParameters = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of chargingParameters = %u",u_octet4_loop_chargingParameters);
+ }
+
+ for (i_chargingParameters=0; i_chargingParameters < u_octet4_loop_chargingParameters; i_chargingParameters++) {
+
+ /* Begin struct "org_csapi_cs_TpChargingParameter" */
+
+
+
+ decode_org_csapi_cs_TpChargingParameter_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpChargingParameter" */
+
+ }
+
+ u_octet4_loop_volumes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of volumes = %u",u_octet4_loop_volumes);
+ }
+
+ for (i_volumes=0; i_volumes < u_octet4_loop_volumes; i_volumes++) {
+
+ /* Begin struct "org_csapi_cs_TpVolume" */
+
+
+
+ decode_org_csapi_cs_TpVolume_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpVolume" */
+
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpChargingSession/extendLifeTimeReq:1.0
+ */
+
+static void decode_org_csapi_cs_IpChargingSession_extendLifeTimeReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpChargingSession/getAmountLeft:1.0
+ */
+
+static void decode_org_csapi_cs_IpChargingSession_getAmountLeft(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_cs_TpChargingPrice" */
+
+
+
+ decode_org_csapi_cs_TpChargingPrice_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpChargingPrice" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpChargingSession/getLifeTimeLeft:1.0
+ */
+
+static void decode_org_csapi_cs_IpChargingSession_getLifeTimeLeft(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpInt32 = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpChargingSession/getUnitLeft:1.0
+ */
+
+static void decode_org_csapi_cs_IpChargingSession_getUnitLeft(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_TpVolumeSet;
+ guint32 i_TpVolumeSet;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpVolumeSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpVolumeSet = %u",u_octet4_loop_TpVolumeSet);
+ }
+
+ for (i_TpVolumeSet=0; i_TpVolumeSet < u_octet4_loop_TpVolumeSet; i_TpVolumeSet++) {
+
+ /* Begin struct "org_csapi_cs_TpVolume" */
+
+
+
+ decode_org_csapi_cs_TpVolume_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpVolume" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpChargingSession/rateReq:1.0
+ */
+
+static void decode_org_csapi_cs_IpChargingSession_rateReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_chargingParameters;
+ guint32 i_chargingParameters;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ u_octet4_loop_chargingParameters = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of chargingParameters = %u",u_octet4_loop_chargingParameters);
+ }
+
+ for (i_chargingParameters=0; i_chargingParameters < u_octet4_loop_chargingParameters; i_chargingParameters++) {
+
+ /* Begin struct "org_csapi_cs_TpChargingParameter" */
+
+
+
+ decode_org_csapi_cs_TpChargingParameter_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpChargingParameter" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpChargingSession/release:1.0
+ */
+
+static void decode_org_csapi_cs_IpChargingSession_release(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpChargingSession/reserveAmountReq:1.0
+ */
+
+static void decode_org_csapi_cs_IpChargingSession_reserveAmountReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_chargingParameters;
+ guint32 i_chargingParameters;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cs_TpApplicationDescription" */
+
+
+
+ decode_org_csapi_cs_TpApplicationDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpApplicationDescription" */
+
+ u_octet4_loop_chargingParameters = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of chargingParameters = %u",u_octet4_loop_chargingParameters);
+ }
+
+ for (i_chargingParameters=0; i_chargingParameters < u_octet4_loop_chargingParameters; i_chargingParameters++) {
+
+ /* Begin struct "org_csapi_cs_TpChargingParameter" */
+
+
+
+ decode_org_csapi_cs_TpChargingParameter_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpChargingParameter" */
+
+ }
+
+ /* Begin struct "org_csapi_cs_TpChargingPrice" */
+
+
+
+ decode_org_csapi_cs_TpChargingPrice_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpChargingPrice" */
+
+ /* Begin struct "org_csapi_cs_TpChargingPrice" */
+
+
+
+ decode_org_csapi_cs_TpChargingPrice_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpChargingPrice" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpChargingSession/reserveUnitReq:1.0
+ */
+
+static void decode_org_csapi_cs_IpChargingSession_reserveUnitReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_chargingParameters;
+ guint32 i_chargingParameters;
+ guint32 u_octet4_loop_volumes;
+ guint32 i_volumes;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cs_TpApplicationDescription" */
+
+
+
+ decode_org_csapi_cs_TpApplicationDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpApplicationDescription" */
+
+ u_octet4_loop_chargingParameters = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of chargingParameters = %u",u_octet4_loop_chargingParameters);
+ }
+
+ for (i_chargingParameters=0; i_chargingParameters < u_octet4_loop_chargingParameters; i_chargingParameters++) {
+
+ /* Begin struct "org_csapi_cs_TpChargingParameter" */
+
+
+
+ decode_org_csapi_cs_TpChargingParameter_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpChargingParameter" */
+
+ }
+
+ u_octet4_loop_volumes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of volumes = %u",u_octet4_loop_volumes);
+ }
+
+ for (i_volumes=0; i_volumes < u_octet4_loop_volumes; i_volumes++) {
+
+ /* Begin struct "org_csapi_cs_TpVolume" */
+
+
+
+ decode_org_csapi_cs_TpVolume_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpVolume" */
+
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestNumber = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingManager/sessionAborted:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingManager_sessionAborted(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpAppChargingManager/abortMultipleChargingSessions:1.0
+ */
+
+static void decode_org_csapi_cs_IpAppChargingManager_abortMultipleChargingSessions(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_chargingSessionSet;
+ guint32 i_chargingSessionSet;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_chargingSessionSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of chargingSessionSet = %u",u_octet4_loop_chargingSessionSet);
+ }
+
+ for (i_chargingSessionSet=0; i_chargingSessionSet < u_octet4_loop_chargingSessionSet; i_chargingSessionSet++) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"chargingSessionSet = %i",s_octet4);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpChargingManager/createChargingSession:1.0
+ */
+
+static void decode_org_csapi_cs_IpChargingManager_createChargingSession(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"sessionDescription (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin struct "org_csapi_cs_TpMerchantAccountID" */
+
+
+
+ decode_org_csapi_cs_TpMerchantAccountID_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpMerchantAccountID" */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ /* Begin struct "org_csapi_cs_TpCorrelationID" */
+
+
+
+ decode_org_csapi_cs_TpCorrelationID_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpCorrelationID" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_cs_TpChargingSessionID" */
+
+
+
+ decode_org_csapi_cs_TpChargingSessionID_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpChargingSessionID" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/cs/IpChargingManager/createSplitChargingSession:1.0
+ */
+
+static void decode_org_csapi_cs_IpChargingManager_createSplitChargingSession(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_users;
+ guint32 i_users;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"sessionDescription (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin struct "org_csapi_cs_TpMerchantAccountID" */
+
+
+
+ decode_org_csapi_cs_TpMerchantAccountID_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpMerchantAccountID" */
+
+ u_octet4_loop_users = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of users = %u",u_octet4_loop_users);
+ }
+
+ for (i_users=0; i_users < u_octet4_loop_users; i_users++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ /* Begin struct "org_csapi_cs_TpCorrelationID" */
+
+
+
+ decode_org_csapi_cs_TpCorrelationID_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpCorrelationID" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_cs_TpChargingSessionID" */
+
+
+
+ decode_org_csapi_cs_TpChargingSessionID_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpChargingSessionID" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/evaluation/IpAppPolicyDomain/reportNotification:1.0
+ */
+
+static void decode_org_csapi_policy_evaluation_IpAppPolicyDomain_reportNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_policy_TpPolicyEvent" */
+
+
+
+ decode_org_csapi_policy_TpPolicyEvent_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_policy_TpPolicyEvent" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/evaluation/IpAppPolicyDomain/evalPolicyRes:1.0
+ */
+
+static void decode_org_csapi_policy_evaluation_IpAppPolicyDomain_evalPolicyRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_outputVariables;
+ guint32 i_outputVariables;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ u_octet4_loop_outputVariables = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of outputVariables = %u",u_octet4_loop_outputVariables);
+ }
+
+ for (i_outputVariables=0; i_outputVariables < u_octet4_loop_outputVariables; i_outputVariables++) {
+
+ /* Begin struct "org_csapi_policy_TpPolicyNameValue" */
+
+
+
+ decode_org_csapi_policy_TpPolicyNameValue_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_policy_TpPolicyNameValue" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/evaluation/IpAppPolicyDomain/evalPolicyErr:1.0
+ */
+
+static void decode_org_csapi_policy_evaluation_IpAppPolicyDomain_evalPolicyErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/evaluation/IpPolicyEvalManager/evalPolicy:1.0
+ */
+
+static void decode_org_csapi_policy_evaluation_IpPolicyEvalManager_evalPolicy(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_inputVariables;
+ guint32 i_inputVariables;
+ guint32 u_octet4_loop_TpPolicyNameValueList;
+ guint32 i_TpPolicyNameValueList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"domainName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"signatureName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_inputVariables = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of inputVariables = %u",u_octet4_loop_inputVariables);
+ }
+
+ for (i_inputVariables=0; i_inputVariables < u_octet4_loop_inputVariables; i_inputVariables++) {
+
+ /* Begin struct "org_csapi_policy_TpPolicyNameValue" */
+
+
+
+ decode_org_csapi_policy_TpPolicyNameValue_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_policy_TpPolicyNameValue" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPolicyNameValueList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPolicyNameValueList = %u",u_octet4_loop_TpPolicyNameValueList);
+ }
+
+ for (i_TpPolicyNameValueList=0; i_TpPolicyNameValueList < u_octet4_loop_TpPolicyNameValueList; i_TpPolicyNameValueList++) {
+
+ /* Begin struct "org_csapi_policy_TpPolicyNameValue" */
+
+
+
+ decode_org_csapi_policy_TpPolicyNameValue_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_policy_TpPolicyNameValue" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/evaluation/IpPolicyEvalManager/evalPolicyReq:1.0
+ */
+
+static void decode_org_csapi_policy_evaluation_IpPolicyEvalManager_evalPolicyReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_inputVariables;
+ guint32 i_inputVariables;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"domainName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"signatureName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_inputVariables = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of inputVariables = %u",u_octet4_loop_inputVariables);
+ }
+
+ for (i_inputVariables=0; i_inputVariables < u_octet4_loop_inputVariables; i_inputVariables++) {
+
+ /* Begin struct "org_csapi_policy_TpPolicyNameValue" */
+
+
+
+ decode_org_csapi_policy_TpPolicyNameValue_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_policy_TpPolicyNameValue" */
+
+ }
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/evaluation/IpPolicyEvalManager/abortEvalPolicyReq:1.0
+ */
+
+static void decode_org_csapi_policy_evaluation_IpPolicyEvalManager_abortEvalPolicyReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"domainName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/evaluation/IpPolicyEvalManager/generateEvent:1.0
+ */
+
+static void decode_org_csapi_policy_evaluation_IpPolicyEvalManager_generateEvent(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_attributes;
+ guint32 i_attributes;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"domainName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"eventDefinitionName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_attributes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributes = %u",u_octet4_loop_attributes);
+ }
+
+ for (i_attributes=0; i_attributes < u_octet4_loop_attributes; i_attributes++) {
+
+ /* Begin struct "org_csapi_TpAttribute" */
+
+
+
+ decode_org_csapi_TpAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAttribute" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/evaluation/IpPolicyEvalManager/createNotification:1.0
+ */
+
+static void decode_org_csapi_policy_evaluation_IpPolicyEvalManager_createNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_events;
+ guint32 i_events;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"domainName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ u_octet4_loop_events = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of events = %u",u_octet4_loop_events);
+ }
+
+ for (i_events=0; i_events < u_octet4_loop_events; i_events++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"events (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/evaluation/IpPolicyEvalManager/destroyNotification:1.0
+ */
+
+static void decode_org_csapi_policy_evaluation_IpPolicyEvalManager_destroyNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_events;
+ guint32 i_events;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ u_octet4_loop_events = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of events = %u",u_octet4_loop_events);
+ }
+
+ for (i_events=0; i_events < u_octet4_loop_events; i_events++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"events (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicy/getAttribute:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicy_getAttribute(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_TpAttribute" */
+
+
+
+ decode_org_csapi_TpAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAttribute" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicy/setAttribute:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicy_setAttribute(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_TpAttribute" */
+
+
+
+ decode_org_csapi_TpAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAttribute" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicy/getAttributes:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicy_getAttributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_attributeNames;
+ guint32 i_attributeNames;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpAttributeSet;
+ guint32 i_TpAttributeSet;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_attributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributeNames = %u",u_octet4_loop_attributeNames);
+ }
+
+ for (i_attributeNames=0; i_attributeNames < u_octet4_loop_attributeNames; i_attributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpAttributeSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpAttributeSet = %u",u_octet4_loop_TpAttributeSet);
+ }
+
+ for (i_TpAttributeSet=0; i_TpAttributeSet < u_octet4_loop_TpAttributeSet; i_TpAttributeSet++) {
+
+ /* Begin struct "org_csapi_TpAttribute" */
+
+
+
+ decode_org_csapi_TpAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAttribute" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicy/setAttributes:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicy_setAttributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_targetAttributes;
+ guint32 i_targetAttributes;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_targetAttributes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of targetAttributes = %u",u_octet4_loop_targetAttributes);
+ }
+
+ for (i_targetAttributes=0; i_targetAttributes < u_octet4_loop_targetAttributes; i_targetAttributes++) {
+
+ /* Begin struct "org_csapi_TpAttribute" */
+
+
+
+ decode_org_csapi_TpAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAttribute" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyIterator/getList:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyIterator_getList(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_TpStringSet;
+ guint32 i_TpStringSet;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"startIndex = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"numberRequested = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpStringSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpStringSet = %u",u_octet4_loop_TpStringSet);
+ }
+
+ for (i_TpStringSet=0; i_TpStringSet < u_octet4_loop_TpStringSet; i_TpStringSet++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpStringSet (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRepository/getParentRepository:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRepository_getParentRepository(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRepository/createRepository:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRepository_createRepository(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"repositoryName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRepository/getRepository:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRepository_getRepository(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"repositoryName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRepository/removeRepository:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRepository_removeRepository(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"repositoryName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRepository/getRepositoryCount:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRepository_getRepositoryCount(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpInt32 = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRepository/getRepositoryIterator:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRepository_getRepositoryIterator(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRepository/createCondition:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRepository_createCondition(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_conditionAttributes;
+ guint32 i_conditionAttributes;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"conditionName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"conditionType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_policy_TpPolicyConditionType,"Unknown Enum Value"));
+ }
+
+ u_octet4_loop_conditionAttributes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of conditionAttributes = %u",u_octet4_loop_conditionAttributes);
+ }
+
+ for (i_conditionAttributes=0; i_conditionAttributes < u_octet4_loop_conditionAttributes; i_conditionAttributes++) {
+
+ /* Begin struct "org_csapi_TpAttribute" */
+
+
+
+ decode_org_csapi_TpAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAttribute" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRepository/getCondition:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRepository_getCondition(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"conditionName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRepository/removeCondition:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRepository_removeCondition(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"conditionName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRepository/getConditionCount:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRepository_getConditionCount(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpInt32 = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRepository/getConditionIterator:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRepository_getConditionIterator(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRepository/createAction:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRepository_createAction(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_actionAttributes;
+ guint32 i_actionAttributes;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"actionName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"actionType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_policy_TpPolicyActionType,"Unknown Enum Value"));
+ }
+
+ u_octet4_loop_actionAttributes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of actionAttributes = %u",u_octet4_loop_actionAttributes);
+ }
+
+ for (i_actionAttributes=0; i_actionAttributes < u_octet4_loop_actionAttributes; i_actionAttributes++) {
+
+ /* Begin struct "org_csapi_TpAttribute" */
+
+
+
+ decode_org_csapi_TpAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAttribute" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRepository/getAction:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRepository_getAction(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"actionName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRepository/removeAction:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRepository_removeAction(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"actionName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRepository/getActionCount:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRepository_getActionCount(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpInt32 = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRepository/getActionIterator:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRepository_getActionIterator(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRule/getParentGroup:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRule_getParentGroup(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRule/getParentDomain:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRule_getParentDomain(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRule/createCondition:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRule_createCondition(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_conditionAttributes;
+ guint32 i_conditionAttributes;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"conditionName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"conditionType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_policy_TpPolicyConditionType,"Unknown Enum Value"));
+ }
+
+ u_octet4_loop_conditionAttributes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of conditionAttributes = %u",u_octet4_loop_conditionAttributes);
+ }
+
+ for (i_conditionAttributes=0; i_conditionAttributes < u_octet4_loop_conditionAttributes; i_conditionAttributes++) {
+
+ /* Begin struct "org_csapi_TpAttribute" */
+
+
+
+ decode_org_csapi_TpAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAttribute" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRule/getCondition:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRule_getCondition(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"conditionName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRule/removeCondition:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRule_removeCondition(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"conditionName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRule/getConditionCount:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRule_getConditionCount(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpInt32 = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRule/getConditionIterator:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRule_getConditionIterator(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRule/createAction:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRule_createAction(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_actionAttributes;
+ guint32 i_actionAttributes;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"actionName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"actionType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_policy_TpPolicyActionType,"Unknown Enum Value"));
+ }
+
+ u_octet4_loop_actionAttributes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of actionAttributes = %u",u_octet4_loop_actionAttributes);
+ }
+
+ for (i_actionAttributes=0; i_actionAttributes < u_octet4_loop_actionAttributes; i_actionAttributes++) {
+
+ /* Begin struct "org_csapi_TpAttribute" */
+
+
+
+ decode_org_csapi_TpAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAttribute" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRule/getAction:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRule_getAction(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"actionName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRule/removeAction:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRule_removeAction(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"actionName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRule/getActionCount:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRule_getActionCount(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpInt32 = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRule/getActionIterator:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRule_getActionIterator(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRule/setValidityPeriodConditionByName:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRule_setValidityPeriodConditionByName(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"conditionName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRule/setValidityPeriodCondition:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRule_setValidityPeriodCondition(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRule/getValidityPeriodCondition:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRule_getValidityPeriodCondition(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRule/unsetValidityPeriodCondition:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRule_unsetValidityPeriodCondition(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRule/setConditionList:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRule_setConditionList(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_conditionList;
+ guint32 i_conditionList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_conditionList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of conditionList = %u",u_octet4_loop_conditionList);
+ }
+
+ for (i_conditionList=0; i_conditionList < u_octet4_loop_conditionList; i_conditionList++) {
+
+ /* Begin struct "org_csapi_policy_TpPolicyConditionListElement" */
+
+
+
+ decode_org_csapi_policy_TpPolicyConditionListElement_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_policy_TpPolicyConditionListElement" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRule/getConditionList:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRule_getConditionList(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpPolicyConditionList;
+ guint32 i_TpPolicyConditionList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPolicyConditionList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPolicyConditionList = %u",u_octet4_loop_TpPolicyConditionList);
+ }
+
+ for (i_TpPolicyConditionList=0; i_TpPolicyConditionList < u_octet4_loop_TpPolicyConditionList; i_TpPolicyConditionList++) {
+
+ /* Begin struct "org_csapi_policy_TpPolicyConditionListElement" */
+
+
+
+ decode_org_csapi_policy_TpPolicyConditionListElement_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_policy_TpPolicyConditionListElement" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRule/setActionList:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRule_setActionList(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_actionList;
+ guint32 i_actionList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_actionList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of actionList = %u",u_octet4_loop_actionList);
+ }
+
+ for (i_actionList=0; i_actionList < u_octet4_loop_actionList; i_actionList++) {
+
+ /* Begin struct "org_csapi_policy_TpPolicyActionListElement" */
+
+
+
+ decode_org_csapi_policy_TpPolicyActionListElement_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_policy_TpPolicyActionListElement" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyRule/getActionList:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyRule_getActionList(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpPolicyActionList;
+ guint32 i_TpPolicyActionList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPolicyActionList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPolicyActionList = %u",u_octet4_loop_TpPolicyActionList);
+ }
+
+ for (i_TpPolicyActionList=0; i_TpPolicyActionList < u_octet4_loop_TpPolicyActionList; i_TpPolicyActionList++) {
+
+ /* Begin struct "org_csapi_policy_TpPolicyActionListElement" */
+
+
+
+ decode_org_csapi_policy_TpPolicyActionListElement_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_policy_TpPolicyActionListElement" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyManager/createDomain:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyManager_createDomain(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"domainName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyManager/getDomain:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyManager_getDomain(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"domainName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyManager/removeDomain:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyManager_removeDomain(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"domainName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyManager/getDomainCount:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyManager_getDomainCount(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpInt32 = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyManager/getDomainIterator:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyManager_getDomainIterator(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyManager/findMatchingDomains:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyManager_findMatchingDomains(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_matchingAttributes;
+ guint32 i_matchingAttributes;
+ guint32 u_octet4_loop_TpStringSet;
+ guint32 i_TpStringSet;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_matchingAttributes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of matchingAttributes = %u",u_octet4_loop_matchingAttributes);
+ }
+
+ for (i_matchingAttributes=0; i_matchingAttributes < u_octet4_loop_matchingAttributes; i_matchingAttributes++) {
+
+ /* Begin struct "org_csapi_TpAttribute" */
+
+
+
+ decode_org_csapi_TpAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAttribute" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpStringSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpStringSet = %u",u_octet4_loop_TpStringSet);
+ }
+
+ for (i_TpStringSet=0; i_TpStringSet < u_octet4_loop_TpStringSet; i_TpStringSet++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpStringSet (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyManager/createRepository:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyManager_createRepository(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"repositoryName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyManager/getRepository:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyManager_getRepository(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"repositoryName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyManager/removeRepository:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyManager_removeRepository(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"repositoryName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyManager/getRepositoryCount:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyManager_getRepositoryCount(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpInt32 = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyManager/getRepositoryIterator:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyManager_getRepositoryIterator(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyManager/startTransaction:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyManager_startTransaction(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyManager/commitTransaction:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyManager_commitTransaction(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpBoolean = %u",u_octet1);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyManager/abortTransaction:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyManager_abortTransaction(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyGroup/getParentDomain:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyGroup_getParentDomain(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyGroup/getParentGroup:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyGroup_getParentGroup(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyGroup/createGroup:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyGroup_createGroup(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"groupName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyGroup/getGroup:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyGroup_getGroup(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"groupName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyGroup/removeGroup:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyGroup_removeGroup(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"groupName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyGroup/getGroupCount:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyGroup_getGroupCount(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpInt32 = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyGroup/getGroupIterator:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyGroup_getGroupIterator(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyGroup/createRule:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyGroup_createRule(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ruleName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyGroup/getRule:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyGroup_getRule(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ruleName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyGroup/removeRule:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyGroup_removeRule(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ruleName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyGroup/getRuleCount:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyGroup_getRuleCount(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpInt32 = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyGroup/getRuleIterator:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyGroup_getRuleIterator(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyEventDefinition/setRequiredAttributes:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyEventDefinition_setRequiredAttributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_requiredAttributes;
+ guint32 i_requiredAttributes;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_requiredAttributes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of requiredAttributes = %u",u_octet4_loop_requiredAttributes);
+ }
+
+ for (i_requiredAttributes=0; i_requiredAttributes < u_octet4_loop_requiredAttributes; i_requiredAttributes++) {
+
+ /* Begin struct "org_csapi_TpAttribute" */
+
+
+
+ decode_org_csapi_TpAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAttribute" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyEventDefinition/setOptionalAttributes:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyEventDefinition_setOptionalAttributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_optionalAttributes;
+ guint32 i_optionalAttributes;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_optionalAttributes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of optionalAttributes = %u",u_octet4_loop_optionalAttributes);
+ }
+
+ for (i_optionalAttributes=0; i_optionalAttributes < u_octet4_loop_optionalAttributes; i_optionalAttributes++) {
+
+ /* Begin struct "org_csapi_TpAttribute" */
+
+
+
+ decode_org_csapi_TpAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAttribute" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyEventDefinition/getRequiredAttributes:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyEventDefinition_getRequiredAttributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpAttributeSet;
+ guint32 i_TpAttributeSet;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpAttributeSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpAttributeSet = %u",u_octet4_loop_TpAttributeSet);
+ }
+
+ for (i_TpAttributeSet=0; i_TpAttributeSet < u_octet4_loop_TpAttributeSet; i_TpAttributeSet++) {
+
+ /* Begin struct "org_csapi_TpAttribute" */
+
+
+
+ decode_org_csapi_TpAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAttribute" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyEventDefinition/getOptionalAttributes:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyEventDefinition_getOptionalAttributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpAttributeSet;
+ guint32 i_TpAttributeSet;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpAttributeSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpAttributeSet = %u",u_octet4_loop_TpAttributeSet);
+ }
+
+ for (i_TpAttributeSet=0; i_TpAttributeSet < u_octet4_loop_TpAttributeSet; i_TpAttributeSet++) {
+
+ /* Begin struct "org_csapi_TpAttribute" */
+
+
+
+ decode_org_csapi_TpAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAttribute" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyEventDefinition/getParentDomain:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyEventDefinition_getParentDomain(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyCondition/getParentRepository:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyCondition_getParentRepository(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyCondition/getParentRule:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyCondition_getParentRule(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyAction/getParentRepository:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyAction_getParentRepository(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyAction/getParentRule:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyAction_getParentRule(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicySignature/setInputVariables:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicySignature_setInputVariables(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_inputVariables;
+ guint32 i_inputVariables;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_inputVariables = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of inputVariables = %u",u_octet4_loop_inputVariables);
+ }
+
+ for (i_inputVariables=0; i_inputVariables < u_octet4_loop_inputVariables; i_inputVariables++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"inputVariables (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicySignature/setOutputVariables:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicySignature_setOutputVariables(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_outputVariables;
+ guint32 i_outputVariables;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_outputVariables = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of outputVariables = %u",u_octet4_loop_outputVariables);
+ }
+
+ for (i_outputVariables=0; i_outputVariables < u_octet4_loop_outputVariables; i_outputVariables++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"outputVariables (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicySignature/getInputVariables:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicySignature_getInputVariables(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpStringSet;
+ guint32 i_TpStringSet;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpStringSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpStringSet = %u",u_octet4_loop_TpStringSet);
+ }
+
+ for (i_TpStringSet=0; i_TpStringSet < u_octet4_loop_TpStringSet; i_TpStringSet++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpStringSet (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicySignature/getOutputVariables:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicySignature_getOutputVariables(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpStringSet;
+ guint32 i_TpStringSet;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpStringSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpStringSet = %u",u_octet4_loop_TpStringSet);
+ }
+
+ for (i_TpStringSet=0; i_TpStringSet < u_octet4_loop_TpStringSet; i_TpStringSet++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpStringSet (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicySignature/setGroupNames:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicySignature_setGroupNames(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_groupNames;
+ guint32 i_groupNames;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_groupNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of groupNames = %u",u_octet4_loop_groupNames);
+ }
+
+ for (i_groupNames=0; i_groupNames < u_octet4_loop_groupNames; i_groupNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"groupNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicySignature/setPolicyRoles:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicySignature_setPolicyRoles(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_roleNames;
+ guint32 i_roleNames;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_roleNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of roleNames = %u",u_octet4_loop_roleNames);
+ }
+
+ for (i_roleNames=0; i_roleNames < u_octet4_loop_roleNames; i_roleNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"roleNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicySignature/getGroupNames:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicySignature_getGroupNames(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpStringSet;
+ guint32 i_TpStringSet;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpStringSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpStringSet = %u",u_octet4_loop_TpStringSet);
+ }
+
+ for (i_TpStringSet=0; i_TpStringSet < u_octet4_loop_TpStringSet; i_TpStringSet++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpStringSet (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicySignature/getPolicyRoles:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicySignature_getPolicyRoles(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpStringSet;
+ guint32 i_TpStringSet;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpStringSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpStringSet = %u",u_octet4_loop_TpStringSet);
+ }
+
+ for (i_TpStringSet=0; i_TpStringSet < u_octet4_loop_TpStringSet; i_TpStringSet++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpStringSet (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicySignature/getParentDomain:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicySignature_getParentDomain(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/getParentDomain:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_getParentDomain(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/createDomain:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_createDomain(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"domainName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/getDomain:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_getDomain(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"domainName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/removeDomain:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_removeDomain(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"domainName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/getDomainCount:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_getDomainCount(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpInt32 = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/getDomainIterator:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_getDomainIterator(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/createGroup:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_createGroup(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"groupName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/getGroup:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_getGroup(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"groupName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/removeGroup:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_removeGroup(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"groupName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/getGroupCount:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_getGroupCount(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpInt32 = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/getGroupIterator:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_getGroupIterator(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/createRule:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_createRule(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ruleName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/getRule:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_getRule(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ruleName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/removeRule:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_removeRule(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ruleName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/getRuleCount:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_getRuleCount(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpInt32 = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/getRuleIterator:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_getRuleIterator(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/createEventDefinition:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_createEventDefinition(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_requiredAttributes;
+ guint32 i_requiredAttributes;
+ guint32 u_octet4_loop_optionalAttributes;
+ guint32 i_optionalAttributes;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"eventDefinitionName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_requiredAttributes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of requiredAttributes = %u",u_octet4_loop_requiredAttributes);
+ }
+
+ for (i_requiredAttributes=0; i_requiredAttributes < u_octet4_loop_requiredAttributes; i_requiredAttributes++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"requiredAttributes (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_optionalAttributes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of optionalAttributes = %u",u_octet4_loop_optionalAttributes);
+ }
+
+ for (i_optionalAttributes=0; i_optionalAttributes < u_octet4_loop_optionalAttributes; i_optionalAttributes++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"optionalAttributes (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/getEventDefinition:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_getEventDefinition(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"eventDefinitionName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/removeEventDefinition:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_removeEventDefinition(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"eventDefinitionName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/getEventDefinitionCount:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_getEventDefinitionCount(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpInt32 = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/getEventDefinitionIterator:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_getEventDefinitionIterator(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/createVariableSet:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_createVariableSet(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"variableSetName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/getVariableSet:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_getVariableSet(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpPolicyVarSet;
+ guint32 i_TpPolicyVarSet;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"variableSetName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPolicyVarSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPolicyVarSet = %u",u_octet4_loop_TpPolicyVarSet);
+ }
+
+ for (i_TpPolicyVarSet=0; i_TpPolicyVarSet < u_octet4_loop_TpPolicyVarSet; i_TpPolicyVarSet++) {
+
+ /* Begin struct "org_csapi_policy_TpPolicyVar" */
+
+
+
+ decode_org_csapi_policy_TpPolicyVar_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_policy_TpPolicyVar" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/removeVariableSet:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_removeVariableSet(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"variableSetName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/getVariableSetCount:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_getVariableSetCount(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpInt32 = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/getVariableSetIterator:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_getVariableSetIterator(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/createVariable:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_createVariable(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"variableSetName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"variableName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin union "org_csapi_policy_TpPolicyType" */
+
+
+ decode_org_csapi_policy_TpPolicyType_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_policy_TpPolicyType" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/setVariableValue:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_setVariableValue(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"variableSetName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"variableName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ get_CDR_any(tvb,tree,offset,stream_is_big_endian, boundary, header);
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/getVariableType:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_getVariableType(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"variableSetName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"variableName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin union "org_csapi_policy_TpPolicyType" */
+
+
+ decode_org_csapi_policy_TpPolicyType_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_policy_TpPolicyType" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/getVariableValue:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_getVariableValue(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"variableSetName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"variableName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_any(tvb,tree,offset,stream_is_big_endian, boundary, header);
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/getVariable:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_getVariable(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"variableSetName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"variableName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_policy_TpPolicyVar" */
+
+
+
+ decode_org_csapi_policy_TpPolicyVar_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_policy_TpPolicyVar" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/removeVariable:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_removeVariable(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"variablSetName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"variableName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/createSignature:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_createSignature(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"signatureName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/getSignature:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_getSignature(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"signatureName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/removeSignature:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_removeSignature(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"signatureName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/getSignatureCount:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_getSignatureCount(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpInt32 = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/policy/provisioning/IpPolicyDomain/getSignatureIterator:1.0
+ */
+
+static void decode_org_csapi_policy_provisioning_IpPolicyDomain_getSignatureIterator(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityManagement/createIdentity:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_createIdentity(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_identityTypes;
+ guint32 i_identityTypes;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_identityTypes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of identityTypes = %u",u_octet4_loop_identityTypes);
+ }
+
+ for (i_identityTypes=0; i_identityTypes < u_octet4_loop_identityTypes; i_identityTypes++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identityTypes (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityManagement/deleteIdentity:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_deleteIdentity(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityManagement/isIdentity:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_isIdentity(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpBoolean = %u",u_octet1);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityManagement/createGroupIdentity:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_createGroupIdentity(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_identityTypes;
+ guint32 i_identityTypes;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_identityTypes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of identityTypes = %u",u_octet4_loop_identityTypes);
+ }
+
+ for (i_identityTypes=0; i_identityTypes < u_octet4_loop_identityTypes; i_identityTypes++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identityTypes (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityManagement/deleteGroupIdentity:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_deleteGroupIdentity(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityManagement/addToGroup:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_addToGroup(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"group (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"member (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityManagement/removeFromGroup:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_removeFromGroup(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"group (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityManagement/listMembers:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_listMembers(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpPAMFQNameList;
+ guint32 i_TpPAMFQNameList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPAMFQNameList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMFQNameList = %u",u_octet4_loop_TpPAMFQNameList);
+ }
+
+ for (i_TpPAMFQNameList=0; i_TpPAMFQNameList < u_octet4_loop_TpPAMFQNameList; i_TpPAMFQNameList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMFQNameList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityManagement/isGroupIdentity:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_isGroupIdentity(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpBoolean = %u",u_octet1);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityManagement/listGroupMembership:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_listGroupMembership(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpPAMFQNameList;
+ guint32 i_TpPAMFQNameList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPAMFQNameList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMFQNameList = %u",u_octet4_loop_TpPAMFQNameList);
+ }
+
+ for (i_TpPAMFQNameList=0; i_TpPAMFQNameList < u_octet4_loop_TpPAMFQNameList; i_TpPAMFQNameList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMFQNameList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityManagement/addAlias:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_addAlias(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"alias (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityManagement/removeAliases:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_removeAliases(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"alias (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityManagement/listAliases:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_listAliases(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpPAMFQNameList;
+ guint32 i_TpPAMFQNameList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPAMFQNameList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMFQNameList = %u",u_octet4_loop_TpPAMFQNameList);
+ }
+
+ for (i_TpPAMFQNameList=0; i_TpPAMFQNameList < u_octet4_loop_TpPAMFQNameList; i_TpPAMFQNameList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMFQNameList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityManagement/lookupByAlias:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_lookupByAlias(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"alias (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMFQName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityManagement/associateTypes:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_associateTypes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_identityTypes;
+ guint32 i_identityTypes;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_identityTypes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of identityTypes = %u",u_octet4_loop_identityTypes);
+ }
+
+ for (i_identityTypes=0; i_identityTypes < u_octet4_loop_identityTypes; i_identityTypes++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identityTypes (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityManagement/disassociateTypes:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_disassociateTypes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_identityTypes;
+ guint32 i_identityTypes;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_identityTypes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of identityTypes = %u",u_octet4_loop_identityTypes);
+ }
+
+ for (i_identityTypes=0; i_identityTypes < u_octet4_loop_identityTypes; i_identityTypes++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identityTypes (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityManagement/listTypesOfIdentity:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_listTypesOfIdentity(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpPAMFQNameList;
+ guint32 i_TpPAMFQNameList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPAMFQNameList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMFQNameList = %u",u_octet4_loop_TpPAMFQNameList);
+ }
+
+ for (i_TpPAMFQNameList=0; i_TpPAMFQNameList < u_octet4_loop_TpPAMFQNameList; i_TpPAMFQNameList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMFQNameList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityManagement/hasType:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_hasType(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"typeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpBoolean = %u",u_octet1);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityManagement/getIdentityAttributes:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_getIdentityAttributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_attributeNames;
+ guint32 i_attributeNames;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpPAMAttributeList;
+ guint32 i_TpPAMAttributeList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identityType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_attributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributeNames = %u",u_octet4_loop_attributeNames);
+ }
+
+ for (i_attributeNames=0; i_attributeNames < u_octet4_loop_attributeNames; i_attributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPAMAttributeList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAttributeList = %u",u_octet4_loop_TpPAMAttributeList);
+ }
+
+ for (i_TpPAMAttributeList=0; i_TpPAMAttributeList < u_octet4_loop_TpPAMAttributeList; i_TpPAMAttributeList++) {
+
+ /* Begin struct "org_csapi_pam_TpPAMAttribute" */
+
+
+
+ decode_org_csapi_pam_TpPAMAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAttribute" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityManagement/setIdentityAttributes:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_setIdentityAttributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_attributes;
+ guint32 i_attributes;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identityType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_attributes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributes = %u",u_octet4_loop_attributes);
+ }
+
+ for (i_attributes=0; i_attributes < u_octet4_loop_attributes; i_attributes++) {
+
+ /* Begin struct "org_csapi_pam_TpPAMAttribute" */
+
+
+
+ decode_org_csapi_pam_TpPAMAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAttribute" */
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentManagement/createAgent:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentManagement_createAgent(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_agentTypes;
+ guint32 i_agentTypes;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_agentTypes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of agentTypes = %u",u_octet4_loop_agentTypes);
+ }
+
+ for (i_agentTypes=0; i_agentTypes < u_octet4_loop_agentTypes; i_agentTypes++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentTypes (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentManagement/deleteAgent:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentManagement_deleteAgent(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentManagement/isAgent:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentManagement_isAgent(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpBoolean = %u",u_octet1);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentManagement/enableCapabilities:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentManagement_enableCapabilities(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_capabilities;
+ guint32 i_capabilities;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_capabilities = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of capabilities = %u",u_octet4_loop_capabilities);
+ }
+
+ for (i_capabilities=0; i_capabilities < u_octet4_loop_capabilities; i_capabilities++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"capabilities (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentManagement/disableCapabilities:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentManagement_disableCapabilities(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_capabilities;
+ guint32 i_capabilities;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_capabilities = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of capabilities = %u",u_octet4_loop_capabilities);
+ }
+
+ for (i_capabilities=0; i_capabilities < u_octet4_loop_capabilities; i_capabilities++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"capabilities (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentManagement/listEnabledCapabilities:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentManagement_listEnabledCapabilities(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpPAMCapabilityList;
+ guint32 i_TpPAMCapabilityList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPAMCapabilityList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMCapabilityList = %u",u_octet4_loop_TpPAMCapabilityList);
+ }
+
+ for (i_TpPAMCapabilityList=0; i_TpPAMCapabilityList < u_octet4_loop_TpPAMCapabilityList; i_TpPAMCapabilityList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMCapabilityList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentManagement/listAllCapabilities:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentManagement_listAllCapabilities(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpPAMCapabilityList;
+ guint32 i_TpPAMCapabilityList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPAMCapabilityList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMCapabilityList = %u",u_octet4_loop_TpPAMCapabilityList);
+ }
+
+ for (i_TpPAMCapabilityList=0; i_TpPAMCapabilityList < u_octet4_loop_TpPAMCapabilityList; i_TpPAMCapabilityList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMCapabilityList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentManagement/isCapableOf:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentManagement_isCapableOf(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"capability (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpBoolean = %u",u_octet1);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentManagement/associateTypes:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentManagement_associateTypes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_agentTypes;
+ guint32 i_agentTypes;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_agentTypes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of agentTypes = %u",u_octet4_loop_agentTypes);
+ }
+
+ for (i_agentTypes=0; i_agentTypes < u_octet4_loop_agentTypes; i_agentTypes++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentTypes (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentManagement/disassociateTypes:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentManagement_disassociateTypes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_agentTypes;
+ guint32 i_agentTypes;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_agentTypes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of agentTypes = %u",u_octet4_loop_agentTypes);
+ }
+
+ for (i_agentTypes=0; i_agentTypes < u_octet4_loop_agentTypes; i_agentTypes++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentTypes (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentManagement/listTypesOfAgent:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentManagement_listTypesOfAgent(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpStringList;
+ guint32 i_TpStringList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpStringList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpStringList = %u",u_octet4_loop_TpStringList);
+ }
+
+ for (i_TpStringList=0; i_TpStringList < u_octet4_loop_TpStringList; i_TpStringList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpStringList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentManagement/hasType:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentManagement_hasType(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"typeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpBoolean = %u",u_octet1);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentManagement/getAgentAttributes:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentManagement_getAgentAttributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_attributeNames;
+ guint32 i_attributeNames;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpPAMAttributeList;
+ guint32 i_TpPAMAttributeList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_attributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributeNames = %u",u_octet4_loop_attributeNames);
+ }
+
+ for (i_attributeNames=0; i_attributeNames < u_octet4_loop_attributeNames; i_attributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPAMAttributeList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAttributeList = %u",u_octet4_loop_TpPAMAttributeList);
+ }
+
+ for (i_TpPAMAttributeList=0; i_TpPAMAttributeList < u_octet4_loop_TpPAMAttributeList; i_TpPAMAttributeList++) {
+
+ /* Begin struct "org_csapi_pam_TpPAMAttribute" */
+
+
+
+ decode_org_csapi_pam_TpPAMAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAttribute" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentManagement/setAgentAttributes:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentManagement_setAgentAttributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_attributes;
+ guint32 i_attributes;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_attributes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributes = %u",u_octet4_loop_attributes);
+ }
+
+ for (i_attributes=0; i_attributes < u_octet4_loop_attributes; i_attributes++) {
+
+ /* Begin struct "org_csapi_pam_TpPAMAttribute" */
+
+
+
+ decode_org_csapi_pam_TpPAMAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAttribute" */
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentAssignment/assignAgent:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentAssignment_assignAgent(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentAssignment/unassignAgent:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentAssignment_unassignAgent(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentAssignment/listAssignedAgents:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentAssignment_listAssignedAgents(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpPAMFQNameList;
+ guint32 i_TpPAMFQNameList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPAMFQNameList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMFQNameList = %u",u_octet4_loop_TpPAMFQNameList);
+ }
+
+ for (i_TpPAMFQNameList=0; i_TpPAMFQNameList < u_octet4_loop_TpPAMFQNameList; i_TpPAMFQNameList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMFQNameList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentAssignment/listAssociatedIdentitiesOfAgent:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentAssignment_listAssociatedIdentitiesOfAgent(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpPAMFQNameList;
+ guint32 i_TpPAMFQNameList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPAMFQNameList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMFQNameList = %u",u_octet4_loop_TpPAMFQNameList);
+ }
+
+ for (i_TpPAMFQNameList=0; i_TpPAMFQNameList < u_octet4_loop_TpPAMFQNameList; i_TpPAMFQNameList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMFQNameList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentAssignment/listAssignedAgentsByCapability:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentAssignment_listAssignedAgentsByCapability(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpPAMFQNameList;
+ guint32 i_TpPAMFQNameList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"capability (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPAMFQNameList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMFQNameList = %u",u_octet4_loop_TpPAMFQNameList);
+ }
+
+ for (i_TpPAMFQNameList=0; i_TpPAMFQNameList < u_octet4_loop_TpPAMFQNameList; i_TpPAMFQNameList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMFQNameList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentAssignment/listCapabilitiesOfIdentity:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentAssignment_listCapabilitiesOfIdentity(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpPAMCapabilityList;
+ guint32 i_TpPAMCapabilityList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPAMCapabilityList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMCapabilityList = %u",u_octet4_loop_TpPAMCapabilityList);
+ }
+
+ for (i_TpPAMCapabilityList=0; i_TpPAMCapabilityList < u_octet4_loop_TpPAMCapabilityList; i_TpPAMCapabilityList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMCapabilityList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentAssignment/isIdentityCapableOf:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentAssignment_isIdentityCapableOf(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"capability (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpBoolean = %u",u_octet1);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityTypeManagement/createIdentityAttribute:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_createIdentityAttribute(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_pam_TpPAMAttributeDef" */
+
+
+
+ decode_org_csapi_pam_TpPAMAttributeDef_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAttributeDef" */
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityTypeManagement/deleteIdentityAttribute:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_deleteIdentityAttribute(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityTypeManagement/getIdentityAttributeDefinition:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_getIdentityAttributeDefinition(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_pam_TpPAMAttributeDef" */
+
+
+
+ decode_org_csapi_pam_TpPAMAttributeDef_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAttributeDef" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityTypeManagement/listAllIdentityAttributes:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_listAllIdentityAttributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpStringList;
+ guint32 i_TpStringList;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpStringList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpStringList = %u",u_octet4_loop_TpStringList);
+ }
+
+ for (i_TpStringList=0; i_TpStringList < u_octet4_loop_TpStringList; i_TpStringList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpStringList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityTypeManagement/createIdentityType:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_createIdentityType(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_attributeNames;
+ guint32 i_attributeNames;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"typeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_attributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributeNames = %u",u_octet4_loop_attributeNames);
+ }
+
+ for (i_attributeNames=0; i_attributeNames < u_octet4_loop_attributeNames; i_attributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityTypeManagement/deleteIdentityType:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_deleteIdentityType(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"typeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityTypeManagement/listIdentityTypes:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_listIdentityTypes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpStringList;
+ guint32 i_TpStringList;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpStringList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpStringList = %u",u_octet4_loop_TpStringList);
+ }
+
+ for (i_TpStringList=0; i_TpStringList < u_octet4_loop_TpStringList; i_TpStringList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpStringList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityTypeManagement/addIdentityTypeAttributes:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_addIdentityTypeAttributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_attributeNames;
+ guint32 i_attributeNames;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"typeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_attributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributeNames = %u",u_octet4_loop_attributeNames);
+ }
+
+ for (i_attributeNames=0; i_attributeNames < u_octet4_loop_attributeNames; i_attributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityTypeManagement/removeIdentityTypeAttributes:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_removeIdentityTypeAttributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_attributeNames;
+ guint32 i_attributeNames;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"typeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_attributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributeNames = %u",u_octet4_loop_attributeNames);
+ }
+
+ for (i_attributeNames=0; i_attributeNames < u_octet4_loop_attributeNames; i_attributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMIdentityTypeManagement/listIdentityTypeAttributes:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_listIdentityTypeAttributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpStringList;
+ guint32 i_TpStringList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"typeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpStringList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpStringList = %u",u_octet4_loop_TpStringList);
+ }
+
+ for (i_TpStringList=0; i_TpStringList < u_octet4_loop_TpStringList; i_TpStringList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpStringList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentTypeManagement/createAgentAttribute:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentTypeManagement_createAgentAttribute(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_pam_TpPAMAttributeDef" */
+
+
+
+ decode_org_csapi_pam_TpPAMAttributeDef_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAttributeDef" */
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentTypeManagement/deleteAgentAttribute:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentTypeManagement_deleteAgentAttribute(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentTypeManagement/getAgentAttributeDefinition:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentTypeManagement_getAgentAttributeDefinition(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_pam_TpPAMAttributeDef" */
+
+
+
+ decode_org_csapi_pam_TpPAMAttributeDef_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAttributeDef" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentTypeManagement/listAllAgentAttributes:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentTypeManagement_listAllAgentAttributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpStringList;
+ guint32 i_TpStringList;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpStringList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpStringList = %u",u_octet4_loop_TpStringList);
+ }
+
+ for (i_TpStringList=0; i_TpStringList < u_octet4_loop_TpStringList; i_TpStringList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpStringList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentTypeManagement/createAgentType:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentTypeManagement_createAgentType(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_attributeNames;
+ guint32 i_attributeNames;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"typeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_attributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributeNames = %u",u_octet4_loop_attributeNames);
+ }
+
+ for (i_attributeNames=0; i_attributeNames < u_octet4_loop_attributeNames; i_attributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentTypeManagement/deleteAgentType:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentTypeManagement_deleteAgentType(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"typeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentTypeManagement/listAgentTypes:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentTypeManagement_listAgentTypes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpStringList;
+ guint32 i_TpStringList;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpStringList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpStringList = %u",u_octet4_loop_TpStringList);
+ }
+
+ for (i_TpStringList=0; i_TpStringList < u_octet4_loop_TpStringList; i_TpStringList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpStringList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentTypeManagement/addAgentTypeAttributes:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentTypeManagement_addAgentTypeAttributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_attributeNames;
+ guint32 i_attributeNames;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"typeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_attributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributeNames = %u",u_octet4_loop_attributeNames);
+ }
+
+ for (i_attributeNames=0; i_attributeNames < u_octet4_loop_attributeNames; i_attributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentTypeManagement/removeAgentTypeAttributes:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentTypeManagement_removeAgentTypeAttributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_attributeNames;
+ guint32 i_attributeNames;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"typeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_attributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributeNames = %u",u_octet4_loop_attributeNames);
+ }
+
+ for (i_attributeNames=0; i_attributeNames < u_octet4_loop_attributeNames; i_attributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMAgentTypeManagement/listAgentTypeAttributes:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMAgentTypeManagement_listAgentTypeAttributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpStringList;
+ guint32 i_TpStringList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"typeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpStringList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpStringList = %u",u_octet4_loop_TpStringList);
+ }
+
+ for (i_TpStringList=0; i_TpStringList < u_octet4_loop_TpStringList; i_TpStringList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpStringList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMCapabilityManagement/createCapabilityAttribute:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_createCapabilityAttribute(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_pam_TpPAMAttributeDef" */
+
+
+
+ decode_org_csapi_pam_TpPAMAttributeDef_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAttributeDef" */
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMCapabilityManagement/deleteCapabilityAttribute:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_deleteCapabilityAttribute(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMCapabilityManagement/getCapabilityAttributeDefinition:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_getCapabilityAttributeDefinition(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_pam_TpPAMAttributeDef" */
+
+
+
+ decode_org_csapi_pam_TpPAMAttributeDef_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAttributeDef" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMCapabilityManagement/listAllCapabilityAttributes:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_listAllCapabilityAttributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpStringList;
+ guint32 i_TpStringList;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpStringList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpStringList = %u",u_octet4_loop_TpStringList);
+ }
+
+ for (i_TpStringList=0; i_TpStringList < u_octet4_loop_TpStringList; i_TpStringList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpStringList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMCapabilityManagement/createCapability:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_createCapability(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_attributeNames;
+ guint32 i_attributeNames;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"capabilityName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_attributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributeNames = %u",u_octet4_loop_attributeNames);
+ }
+
+ for (i_attributeNames=0; i_attributeNames < u_octet4_loop_attributeNames; i_attributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMCapabilityManagement/deleteCapability:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_deleteCapability(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"capabilityName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMCapabilityManagement/listCapabilities:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_listCapabilities(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpPAMCapabilityList;
+ guint32 i_TpPAMCapabilityList;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPAMCapabilityList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMCapabilityList = %u",u_octet4_loop_TpPAMCapabilityList);
+ }
+
+ for (i_TpPAMCapabilityList=0; i_TpPAMCapabilityList < u_octet4_loop_TpPAMCapabilityList; i_TpPAMCapabilityList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMCapabilityList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMCapabilityManagement/addCapabilityAttributes:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_addCapabilityAttributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_attributeNames;
+ guint32 i_attributeNames;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"capabilityName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_attributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributeNames = %u",u_octet4_loop_attributeNames);
+ }
+
+ for (i_attributeNames=0; i_attributeNames < u_octet4_loop_attributeNames; i_attributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMCapabilityManagement/removeCapabilityAttributes:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_removeCapabilityAttributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_attributeNames;
+ guint32 i_attributeNames;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"capabilityName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_attributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributeNames = %u",u_octet4_loop_attributeNames);
+ }
+
+ for (i_attributeNames=0; i_attributeNames < u_octet4_loop_attributeNames; i_attributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMCapabilityManagement/listCapabilityAttributes:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_listCapabilityAttributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpStringList;
+ guint32 i_TpStringList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"capabilityName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpStringList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpStringList = %u",u_octet4_loop_TpStringList);
+ }
+
+ for (i_TpStringList=0; i_TpStringList < u_octet4_loop_TpStringList; i_TpStringList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpStringList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMCapabilityManagement/assignCapabilitiesToType:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_assignCapabilitiesToType(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_capabilities;
+ guint32 i_capabilities;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_capabilities = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of capabilities = %u",u_octet4_loop_capabilities);
+ }
+
+ for (i_capabilities=0; i_capabilities < u_octet4_loop_capabilities; i_capabilities++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"capabilities (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMCapabilityManagement/unassignCapabilitiesFromType:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_unassignCapabilitiesFromType(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_capabilities;
+ guint32 i_capabilities;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_capabilities = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of capabilities = %u",u_octet4_loop_capabilities);
+ }
+
+ for (i_capabilities=0; i_capabilities < u_octet4_loop_capabilities; i_capabilities++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"capabilities (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMCapabilityManagement/listCapabilitiesOfType:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_listCapabilitiesOfType(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpPAMCapabilityList;
+ guint32 i_TpPAMCapabilityList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPAMCapabilityList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMCapabilityList = %u",u_octet4_loop_TpPAMCapabilityList);
+ }
+
+ for (i_TpPAMCapabilityList=0; i_TpPAMCapabilityList < u_octet4_loop_TpPAMCapabilityList; i_TpPAMCapabilityList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMCapabilityList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMProvisioningManager/getAuthToken:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMProvisioningManager_getAuthToken(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_askerData;
+ guint32 i_askerData;
+ guint32 u_octet4_loop_TpPAMCredential;
+ guint32 i_TpPAMCredential;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_askerData = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of askerData = %u",u_octet4_loop_askerData);
+ }
+
+ for (i_askerData=0; i_askerData < u_octet4_loop_askerData; i_askerData++) {
+
+ /* Begin struct "org_csapi_TpAttribute" */
+
+
+
+ decode_org_csapi_TpAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAttribute" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPAMCredential = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMCredential = %u",u_octet4_loop_TpPAMCredential);
+ }
+
+ for (i_TpPAMCredential=0; i_TpPAMCredential < u_octet4_loop_TpPAMCredential; i_TpPAMCredential++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpPAMCredential = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMProvisioningManager/obtainInterface:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMProvisioningManager_obtainInterface(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"interfaceName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMProvisioningManager/getAccessControl:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMProvisioningManager_getAccessControl(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_pam_TpPAMAccessControlData" */
+
+
+
+ decode_org_csapi_pam_TpPAMAccessControlData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAccessControlData" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/provisioning/IpPAMProvisioningManager/setAccessControl:1.0
+ */
+
+static void decode_org_csapi_pam_provisioning_IpPAMProvisioningManager_setAccessControl(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"operation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin struct "org_csapi_pam_TpPAMAccessControlData" */
+
+
+
+ decode_org_csapi_pam_TpPAMAccessControlData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAccessControlData" */
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/access/IpPAMIdentityPresence/setIdentityPresence:1.0
+ */
+
+static void decode_org_csapi_pam_access_IpPAMIdentityPresence_setIdentityPresence(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_attributes;
+ guint32 i_attributes;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identityType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_attributes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributes = %u",u_octet4_loop_attributes);
+ }
+
+ for (i_attributes=0; i_attributes < u_octet4_loop_attributes; i_attributes++) {
+
+ /* Begin struct "org_csapi_pam_TpPAMAttribute" */
+
+
+
+ decode_org_csapi_pam_TpPAMAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAttribute" */
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/access/IpPAMIdentityPresence/setIdentityPresenceExpiration:1.0
+ */
+
+static void decode_org_csapi_pam_access_IpPAMIdentityPresence_setIdentityPresenceExpiration(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_attributeNames;
+ guint32 i_attributeNames;
+ gint64 s_octet8;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identityType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_attributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributeNames = %u",u_octet4_loop_attributeNames);
+ }
+
+ for (i_attributeNames=0; i_attributeNames < u_octet4_loop_attributeNames; i_attributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ s_octet8 = get_CDR_long_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-8,8,"expiresIn = %" G_GINT64_MODIFIER "d",s_octet8);
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/access/IpPAMIdentityPresence/getIdentityPresence:1.0
+ */
+
+static void decode_org_csapi_pam_access_IpPAMIdentityPresence_getIdentityPresence(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_attributeNames;
+ guint32 i_attributeNames;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpPAMAttributeList;
+ guint32 i_TpPAMAttributeList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identityType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_attributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributeNames = %u",u_octet4_loop_attributeNames);
+ }
+
+ for (i_attributeNames=0; i_attributeNames < u_octet4_loop_attributeNames; i_attributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPAMAttributeList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAttributeList = %u",u_octet4_loop_TpPAMAttributeList);
+ }
+
+ for (i_TpPAMAttributeList=0; i_TpPAMAttributeList < u_octet4_loop_TpPAMAttributeList; i_TpPAMAttributeList++) {
+
+ /* Begin struct "org_csapi_pam_TpPAMAttribute" */
+
+
+
+ decode_org_csapi_pam_TpPAMAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAttribute" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/access/IpPAMAgentPresence/setAgentPresence:1.0
+ */
+
+static void decode_org_csapi_pam_access_IpPAMAgentPresence_setAgentPresence(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_attributes;
+ guint32 i_attributes;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agent (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_attributes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributes = %u",u_octet4_loop_attributes);
+ }
+
+ for (i_attributes=0; i_attributes < u_octet4_loop_attributes; i_attributes++) {
+
+ /* Begin struct "org_csapi_pam_TpPAMAttribute" */
+
+
+
+ decode_org_csapi_pam_TpPAMAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAttribute" */
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/access/IpPAMAgentPresence/setCapabilityPresence:1.0
+ */
+
+static void decode_org_csapi_pam_access_IpPAMAgentPresence_setCapabilityPresence(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_attributes;
+ guint32 i_attributes;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agent (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"capability (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_attributes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributes = %u",u_octet4_loop_attributes);
+ }
+
+ for (i_attributes=0; i_attributes < u_octet4_loop_attributes; i_attributes++) {
+
+ /* Begin struct "org_csapi_pam_TpPAMAttribute" */
+
+
+
+ decode_org_csapi_pam_TpPAMAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAttribute" */
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/access/IpPAMAgentPresence/setAgentPresenceExpiration:1.0
+ */
+
+static void decode_org_csapi_pam_access_IpPAMAgentPresence_setAgentPresenceExpiration(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_attributeNames;
+ guint32 i_attributeNames;
+ gint64 s_octet8;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agent (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_attributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributeNames = %u",u_octet4_loop_attributeNames);
+ }
+
+ for (i_attributeNames=0; i_attributeNames < u_octet4_loop_attributeNames; i_attributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ s_octet8 = get_CDR_long_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-8,8,"expiresIn = %" G_GINT64_MODIFIER "d",s_octet8);
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/access/IpPAMAgentPresence/setCapabilityPresenceExpiration:1.0
+ */
+
+static void decode_org_csapi_pam_access_IpPAMAgentPresence_setCapabilityPresenceExpiration(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_attributeNames;
+ guint32 i_attributeNames;
+ gint64 s_octet8;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agent (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"capability (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_attributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributeNames = %u",u_octet4_loop_attributeNames);
+ }
+
+ for (i_attributeNames=0; i_attributeNames < u_octet4_loop_attributeNames; i_attributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ s_octet8 = get_CDR_long_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-8,8,"expiresIn = %" G_GINT64_MODIFIER "d",s_octet8);
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/access/IpPAMAgentPresence/getAgentPresence:1.0
+ */
+
+static void decode_org_csapi_pam_access_IpPAMAgentPresence_getAgentPresence(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_attributeNames;
+ guint32 i_attributeNames;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpPAMAttributeList;
+ guint32 i_TpPAMAttributeList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agent (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agentType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_attributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributeNames = %u",u_octet4_loop_attributeNames);
+ }
+
+ for (i_attributeNames=0; i_attributeNames < u_octet4_loop_attributeNames; i_attributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPAMAttributeList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAttributeList = %u",u_octet4_loop_TpPAMAttributeList);
+ }
+
+ for (i_TpPAMAttributeList=0; i_TpPAMAttributeList < u_octet4_loop_TpPAMAttributeList; i_TpPAMAttributeList++) {
+
+ /* Begin struct "org_csapi_pam_TpPAMAttribute" */
+
+
+
+ decode_org_csapi_pam_TpPAMAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAttribute" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/access/IpPAMAgentPresence/getCapabilityPresence:1.0
+ */
+
+static void decode_org_csapi_pam_access_IpPAMAgentPresence_getCapabilityPresence(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_attributeNames;
+ guint32 i_attributeNames;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpPAMAttributeList;
+ guint32 i_TpPAMAttributeList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"agent (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"capability (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_attributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributeNames = %u",u_octet4_loop_attributeNames);
+ }
+
+ for (i_attributeNames=0; i_attributeNames < u_octet4_loop_attributeNames; i_attributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPAMAttributeList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAttributeList = %u",u_octet4_loop_TpPAMAttributeList);
+ }
+
+ for (i_TpPAMAttributeList=0; i_TpPAMAttributeList < u_octet4_loop_TpPAMAttributeList; i_TpPAMAttributeList++) {
+
+ /* Begin struct "org_csapi_pam_TpPAMAttribute" */
+
+
+
+ decode_org_csapi_pam_TpPAMAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAttribute" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/access/IpAppPAMPreferenceCheck/computeAvailability:1.0
+ */
+
+static void decode_org_csapi_pam_access_IpAppPAMPreferenceCheck_computeAvailability(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_attributeNames;
+ guint32 i_attributeNames;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpPAMAvailabilityProfileList;
+ guint32 i_TpPAMAvailabilityProfileList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin struct "org_csapi_pam_TpPAMContext" */
+
+
+
+ decode_org_csapi_pam_TpPAMContext_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMContext" */
+
+ u_octet4_loop_attributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributeNames = %u",u_octet4_loop_attributeNames);
+ }
+
+ for (i_attributeNames=0; i_attributeNames < u_octet4_loop_attributeNames; i_attributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPAMAvailabilityProfileList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAvailabilityProfileList = %u",u_octet4_loop_TpPAMAvailabilityProfileList);
+ }
+
+ for (i_TpPAMAvailabilityProfileList=0; i_TpPAMAvailabilityProfileList < u_octet4_loop_TpPAMAvailabilityProfileList; i_TpPAMAvailabilityProfileList++) {
+
+ /* Begin struct "org_csapi_pam_TpPAMAvailabilityProfile" */
+
+
+
+ decode_org_csapi_pam_TpPAMAvailabilityProfile_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAvailabilityProfile" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/access/IpPAMAvailability/getAvailability:1.0
+ */
+
+static void decode_org_csapi_pam_access_IpPAMAvailability_getAvailability(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_attributeNames;
+ guint32 i_attributeNames;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpPAMAvailabilityProfileList;
+ guint32 i_TpPAMAvailabilityProfileList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin struct "org_csapi_pam_TpPAMContext" */
+
+
+
+ decode_org_csapi_pam_TpPAMContext_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMContext" */
+
+ u_octet4_loop_attributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of attributeNames = %u",u_octet4_loop_attributeNames);
+ }
+
+ for (i_attributeNames=0; i_attributeNames < u_octet4_loop_attributeNames; i_attributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"attributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPAMAvailabilityProfileList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAvailabilityProfileList = %u",u_octet4_loop_TpPAMAvailabilityProfileList);
+ }
+
+ for (i_TpPAMAvailabilityProfileList=0; i_TpPAMAvailabilityProfileList < u_octet4_loop_TpPAMAvailabilityProfileList; i_TpPAMAvailabilityProfileList++) {
+
+ /* Begin struct "org_csapi_pam_TpPAMAvailabilityProfile" */
+
+
+
+ decode_org_csapi_pam_TpPAMAvailabilityProfile_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAvailabilityProfile" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/access/IpPAMAvailability/getPreference:1.0
+ */
+
+static void decode_org_csapi_pam_access_IpPAMAvailability_getPreference(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin struct "org_csapi_pam_TpPAMContext" */
+
+
+
+ decode_org_csapi_pam_TpPAMContext_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMContext" */
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin union "org_csapi_pam_TpPAMPreferenceData" */
+
+
+ decode_org_csapi_pam_TpPAMPreferenceData_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_pam_TpPAMPreferenceData" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/access/IpPAMAvailability/setPreference:1.0
+ */
+
+static void decode_org_csapi_pam_access_IpPAMAvailability_setPreference(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin struct "org_csapi_pam_TpPAMContext" */
+
+
+
+ decode_org_csapi_pam_TpPAMContext_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMContext" */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"operation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin union "org_csapi_pam_TpPAMPreferenceData" */
+
+
+ decode_org_csapi_pam_TpPAMPreferenceData_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_pam_TpPAMPreferenceData" */
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/access/IpPAMPresenceAvailabilityManager/getAuthToken:1.0
+ */
+
+static void decode_org_csapi_pam_access_IpPAMPresenceAvailabilityManager_getAuthToken(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_askerData;
+ guint32 i_askerData;
+ guint32 u_octet4_loop_TpPAMCredential;
+ guint32 i_TpPAMCredential;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_askerData = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of askerData = %u",u_octet4_loop_askerData);
+ }
+
+ for (i_askerData=0; i_askerData < u_octet4_loop_askerData; i_askerData++) {
+
+ /* Begin struct "org_csapi_TpAttribute" */
+
+
+
+ decode_org_csapi_TpAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAttribute" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPAMCredential = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMCredential = %u",u_octet4_loop_TpPAMCredential);
+ }
+
+ for (i_TpPAMCredential=0; i_TpPAMCredential < u_octet4_loop_TpPAMCredential; i_TpPAMCredential++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpPAMCredential = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/access/IpPAMPresenceAvailabilityManager/obtainInterface:1.0
+ */
+
+static void decode_org_csapi_pam_access_IpPAMPresenceAvailabilityManager_obtainInterface(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"interfaceName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/access/IpPAMPresenceAvailabilityManager/getAccessControl:1.0
+ */
+
+static void decode_org_csapi_pam_access_IpPAMPresenceAvailabilityManager_getAccessControl(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_pam_TpPAMAccessControlData" */
+
+
+
+ decode_org_csapi_pam_TpPAMAccessControlData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAccessControlData" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/access/IpPAMPresenceAvailabilityManager/setAccessControl:1.0
+ */
+
+static void decode_org_csapi_pam_access_IpPAMPresenceAvailabilityManager_setAccessControl(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"operation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin struct "org_csapi_pam_TpPAMAccessControlData" */
+
+
+
+ decode_org_csapi_pam_TpPAMAccessControlData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAccessControlData" */
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/access/IpPAMPresenceAvailabilityManager/activateService:1.0
+ */
+
+static void decode_org_csapi_pam_access_IpPAMPresenceAvailabilityManager_activateService(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/access/IpPAMPresenceAvailabilityManager/deactivateService:1.0
+ */
+
+static void decode_org_csapi_pam_access_IpPAMPresenceAvailabilityManager_deactivateService(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/access/IpPAMPresenceAvailabilityManager/isActiveIdentity:1.0
+ */
+
+static void decode_org_csapi_pam_access_IpPAMPresenceAvailabilityManager_isActiveIdentity(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpBoolean = %u",u_octet1);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/event/IpAppPAMEventHandler/eventNotify:1.0
+ */
+
+static void decode_org_csapi_pam_event_IpAppPAMEventHandler_eventNotify(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_eventInfo;
+ guint32 i_eventInfo;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"eventID = %i",s_octet4);
+ }
+
+ u_octet4_loop_eventInfo = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of eventInfo = %u",u_octet4_loop_eventInfo);
+ }
+
+ for (i_eventInfo=0; i_eventInfo < u_octet4_loop_eventInfo; i_eventInfo++) {
+
+ /* Begin union "org_csapi_pam_TpPAMNotificationInfo" */
+
+
+ decode_org_csapi_pam_TpPAMNotificationInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_pam_TpPAMNotificationInfo" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/event/IpAppPAMEventHandler/eventNotifyErr:1.0
+ */
+
+static void decode_org_csapi_pam_event_IpAppPAMEventHandler_eventNotifyErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"eventID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_pam_TpPAMErrorInfo" */
+
+
+
+ decode_org_csapi_pam_TpPAMErrorInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMErrorInfo" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/event/IpPAMEventHandler/isRegistered:1.0
+ */
+
+static void decode_org_csapi_pam_event_IpPAMEventHandler_isRegistered(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"clientID = %i",s_octet4);
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpBoolean = %u",u_octet1);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/event/IpPAMEventHandler/registerAppInterface:1.0
+ */
+
+static void decode_org_csapi_pam_event_IpPAMEventHandler_registerAppInterface(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpPAMClientID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/event/IpPAMEventHandler/registerForEvent:1.0
+ */
+
+static void decode_org_csapi_pam_event_IpPAMEventHandler_registerForEvent(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_eventList;
+ guint32 i_eventList;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"clientID = %i",s_octet4);
+ }
+
+ u_octet4_loop_eventList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of eventList = %u",u_octet4_loop_eventList);
+ }
+
+ for (i_eventList=0; i_eventList < u_octet4_loop_eventList; i_eventList++) {
+
+ /* Begin union "org_csapi_pam_TpPAMEventInfo" */
+
+
+ decode_org_csapi_pam_TpPAMEventInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_pam_TpPAMEventInfo" */
+
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"validFor = %i",s_octet4);
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpPAMEventID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/event/IpPAMEventHandler/deregisterAppInterface:1.0
+ */
+
+static void decode_org_csapi_pam_event_IpPAMEventHandler_deregisterAppInterface(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"clientID = %i",s_octet4);
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/event/IpPAMEventHandler/deregisterFromEvent:1.0
+ */
+
+static void decode_org_csapi_pam_event_IpPAMEventHandler_deregisterFromEvent(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"eventID = %i",s_octet4);
+ }
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/event/IpPAMEventManager/getAuthToken:1.0
+ */
+
+static void decode_org_csapi_pam_event_IpPAMEventManager_getAuthToken(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_askerData;
+ guint32 i_askerData;
+ guint32 u_octet4_loop_TpPAMCredential;
+ guint32 i_TpPAMCredential;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_askerData = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of askerData = %u",u_octet4_loop_askerData);
+ }
+
+ for (i_askerData=0; i_askerData < u_octet4_loop_askerData; i_askerData++) {
+
+ /* Begin struct "org_csapi_TpAttribute" */
+
+
+
+ decode_org_csapi_TpAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAttribute" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_TpPAMCredential = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMCredential = %u",u_octet4_loop_TpPAMCredential);
+ }
+
+ for (i_TpPAMCredential=0; i_TpPAMCredential < u_octet4_loop_TpPAMCredential; i_TpPAMCredential++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpPAMCredential = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/event/IpPAMEventManager/obtainInterface:1.0
+ */
+
+static void decode_org_csapi_pam_event_IpPAMEventManager_obtainInterface(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"interfaceName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/event/IpPAMEventManager/getAccessControl:1.0
+ */
+
+static void decode_org_csapi_pam_event_IpPAMEventManager_getAccessControl(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_pam_TpPAMAccessControlData" */
+
+
+
+ decode_org_csapi_pam_TpPAMAccessControlData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAccessControlData" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/event/IpPAMEventManager/setAccessControl:1.0
+ */
+
+static void decode_org_csapi_pam_event_IpPAMEventManager_setAccessControl(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"operation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin struct "org_csapi_pam_TpPAMAccessControlData" */
+
+
+
+ decode_org_csapi_pam_TpPAMAccessControlData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAccessControlData" */
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/event/IpPAMEventManager/activateService:1.0
+ */
+
+static void decode_org_csapi_pam_event_IpPAMEventManager_activateService(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/event/IpPAMEventManager/deactivateService:1.0
+ */
+
+static void decode_org_csapi_pam_event_IpPAMEventManager_deactivateService(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/pam/event/IpPAMEventManager/isActiveIdentity:1.0
+ */
+
+static void decode_org_csapi_pam_event_IpPAMEventManager_isActiveIdentity(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_authToken;
+ guint32 i_authToken;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_authToken = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of authToken = %u",u_octet4_loop_authToken);
+ }
+
+ for (i_authToken=0; i_authToken < u_octet4_loop_authToken; i_authToken++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"authToken = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpBoolean = %u",u_octet1);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMultiMediaMessagingManager/mailboxTerminated:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMultiMediaMessagingManager_mailboxTerminated(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_mmm_TpMailboxIdentifier" */
+
+
+
+ decode_org_csapi_mmm_TpMailboxIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpMailboxIdentifier" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMultiMediaMessagingManager/reportNotification:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMultiMediaMessagingManager_reportNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_eventInfo;
+ guint32 i_eventInfo;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ u_octet4_loop_eventInfo = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of eventInfo = %u",u_octet4_loop_eventInfo);
+ }
+
+ for (i_eventInfo=0; i_eventInfo < u_octet4_loop_eventInfo; i_eventInfo++) {
+
+ /* Begin union "org_csapi_mmm_TpMessagingEventInfo" */
+
+
+ decode_org_csapi_mmm_TpMessagingEventInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_mmm_TpMessagingEventInfo" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMultiMediaMessagingManager/notificationsInterrupted:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMultiMediaMessagingManager_notificationsInterrupted(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMultiMediaMessagingManager/notificationsResumed:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMultiMediaMessagingManager_notificationsResumed(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMultiMediaMessagingManager/multiMediaMessagingTerminated:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMultiMediaMessagingManager_multiMediaMessagingTerminated(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_mmm_TpMultiMediaMessagingIdentifier" */
+
+
+
+ decode_org_csapi_mmm_TpMultiMediaMessagingIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpMultiMediaMessagingIdentifier" */
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMultiMediaMessagingManager/terminateMultipleMailboxes:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMultiMediaMessagingManager_terminateMultipleMailboxes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_mailboxSet;
+ guint32 i_mailboxSet;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_mailboxSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of mailboxSet = %u",u_octet4_loop_mailboxSet);
+ }
+
+ for (i_mailboxSet=0; i_mailboxSet < u_octet4_loop_mailboxSet; i_mailboxSet++) {
+
+ /* Begin struct "org_csapi_mmm_TpMailboxIdentifier" */
+
+
+
+ decode_org_csapi_mmm_TpMailboxIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpMailboxIdentifier" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMultiMediaMessagingManager/terminateMultipleMultiMediaMessagingSessions:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMultiMediaMessagingManager_terminateMultipleMultiMediaMessagingSessions(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_multiMediaMessagingSet;
+ guint32 i_multiMediaMessagingSet;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_multiMediaMessagingSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of multiMediaMessagingSet = %u",u_octet4_loop_multiMediaMessagingSet);
+ }
+
+ for (i_multiMediaMessagingSet=0; i_multiMediaMessagingSet < u_octet4_loop_multiMediaMessagingSet; i_multiMediaMessagingSet++) {
+
+ /* Begin struct "org_csapi_mmm_TpMultiMediaMessagingIdentifier" */
+
+
+
+ decode_org_csapi_mmm_TpMultiMediaMessagingIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpMultiMediaMessagingIdentifier" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMultiMediaMessagingManager/openMailbox:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMultiMediaMessagingManager_openMailbox(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"mailboxID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"authenticationInfo (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_mmm_TpMailboxIdentifier" */
+
+
+
+ decode_org_csapi_mmm_TpMailboxIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpMailboxIdentifier" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMultiMediaMessagingManager/openMultiMediaMessaging:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMultiMediaMessagingManager_openMultiMediaMessaging(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ /* Begin struct "org_csapi_mmm_TpTerminatingAddressList" */
+
+
+
+ decode_org_csapi_mmm_TpTerminatingAddressList_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpTerminatingAddressList" */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_mmm_TpMultiMediaMessagingIdentifier" */
+
+
+
+ decode_org_csapi_mmm_TpMultiMediaMessagingIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpMultiMediaMessagingIdentifier" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMultiMediaMessagingManager/createNotification:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMultiMediaMessagingManager_createNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_eventCriteria;
+ guint32 i_eventCriteria;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ u_octet4_loop_eventCriteria = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of eventCriteria = %u",u_octet4_loop_eventCriteria);
+ }
+
+ for (i_eventCriteria=0; i_eventCriteria < u_octet4_loop_eventCriteria; i_eventCriteria++) {
+
+ /* Begin union "org_csapi_mmm_TpMessagingEventCriteria" */
+
+
+ decode_org_csapi_mmm_TpMessagingEventCriteria_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_mmm_TpMessagingEventCriteria" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMultiMediaMessagingManager/destroyNotification:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMultiMediaMessagingManager_destroyNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMultiMediaMessagingManager/changeNotification:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMultiMediaMessagingManager_changeNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_eventCriteria;
+ guint32 i_eventCriteria;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ u_octet4_loop_eventCriteria = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of eventCriteria = %u",u_octet4_loop_eventCriteria);
+ }
+
+ for (i_eventCriteria=0; i_eventCriteria < u_octet4_loop_eventCriteria; i_eventCriteria++) {
+
+ /* Begin union "org_csapi_mmm_TpMessagingEventCriteria" */
+
+
+ decode_org_csapi_mmm_TpMessagingEventCriteria_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_mmm_TpMessagingEventCriteria" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMultiMediaMessagingManager/getNextNotification:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMultiMediaMessagingManager_getNextNotification(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"reset = %u",u_octet1);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "org_csapi_mmm_TpMessagingNotificationRequestedSetEntry" */
+
+
+
+ decode_org_csapi_mmm_TpMessagingNotificationRequestedSetEntry_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpMessagingNotificationRequestedSetEntry" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMultiMediaMessagingManager/enableNotifications:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMultiMediaMessagingManager_enableNotifications(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMultiMediaMessagingManager/disableNotifications:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMultiMediaMessagingManager_disableNotifications(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/createFolderRes:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_createFolderRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"folderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/createFolderErr:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_createFolderErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessagingError,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"errorDetails (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/getFoldersRes:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_getFoldersRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_folderNames;
+ guint32 i_folderNames;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"folderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_folderNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of folderNames = %u",u_octet4_loop_folderNames);
+ }
+
+ for (i_folderNames=0; i_folderNames < u_octet4_loop_folderNames; i_folderNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"folderNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/getFoldersErr:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_getFoldersErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"folderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessagingError,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"errorDetails (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/deleteFolderRes:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_deleteFolderRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/deleteFolderErr:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_deleteFolderErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessagingError,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"errorDetails (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/copyFolderRes:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_copyFolderRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/copyFolderErr:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_copyFolderErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessagingError,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"errorDetails (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/moveFolderRes:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_moveFolderRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/moveFolderErr:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_moveFolderErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessagingError,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"errorDetails (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/putMessageRes:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_putMessageRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"messageID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/putMessageErr:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_putMessageErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessagingError,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"errorDetails (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/copyMessageRes:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_copyMessageRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/copyMessageErr:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_copyMessageErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessagingError,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"errorDetails (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/moveMessageRes:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_moveMessageRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/moveMessageErr:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_moveMessageErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessagingError,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"errorDetails (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/deleteMessageRes:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_deleteMessageRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/deleteMessageErr:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_deleteMessageErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessagingError,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"errorDetails (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/listMessagesRes:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_listMessagesRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_messageList;
+ guint32 i_messageList;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+ u_octet4_loop_messageList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of messageList = %u",u_octet4_loop_messageList);
+ }
+
+ for (i_messageList=0; i_messageList < u_octet4_loop_messageList; i_messageList++) {
+
+ /* Begin struct "org_csapi_mmm_TpMessageDescription" */
+
+
+
+ decode_org_csapi_mmm_TpMessageDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpMessageDescription" */
+
+ }
+
+ /* Begin struct "org_csapi_mmm_TpMailboxFolderStatusInformation" */
+
+
+
+ decode_org_csapi_mmm_TpMailboxFolderStatusInformation_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpMailboxFolderStatusInformation" */
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"final = %u",u_octet1);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/listMessagesErr:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_listMessagesErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessagingError,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"errorDetails (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/listMessageBodyPartsRes:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_listMessageBodyPartsRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_partsList;
+ guint32 i_partsList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+ u_octet4_loop_partsList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of partsList = %u",u_octet4_loop_partsList);
+ }
+
+ for (i_partsList=0; i_partsList < u_octet4_loop_partsList; i_partsList++) {
+
+ /* Begin struct "org_csapi_mmm_TpBodyPartDescription" */
+
+
+
+ decode_org_csapi_mmm_TpBodyPartDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpBodyPartDescription" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/listMessageBodyPartsErr:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_listMessageBodyPartsErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessagingError,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"errorDetails (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/getMessageBodyPartsRes:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_getMessageBodyPartsRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_bodyParts;
+ guint32 i_bodyParts;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+ u_octet4_loop_bodyParts = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of bodyParts = %u",u_octet4_loop_bodyParts);
+ }
+
+ for (i_bodyParts=0; i_bodyParts < u_octet4_loop_bodyParts; i_bodyParts++) {
+
+ /* Begin struct "org_csapi_mmm_TpBodyPart" */
+
+
+
+ decode_org_csapi_mmm_TpBodyPart_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpBodyPart" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/getMessageBodyPartsErr:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_getMessageBodyPartsErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessagingError,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"errorDetails (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/getMessageHeadersRes:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_getMessageHeadersRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_headers;
+ guint32 i_headers;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+ u_octet4_loop_headers = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of headers = %u",u_octet4_loop_headers);
+ }
+
+ for (i_headers=0; i_headers < u_octet4_loop_headers; i_headers++) {
+
+ /* Begin union "org_csapi_mmm_TpMessageHeaderField" */
+
+
+ decode_org_csapi_mmm_TpMessageHeaderField_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_mmm_TpMessageHeaderField" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/getMessageHeadersErr:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_getMessageHeadersErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessagingError,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"errorDetails (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/getMessageContentRes:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_getMessageContentRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_content;
+ guint32 i_content;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"contentType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"contentTransferEncoding (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_content = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of content = %u",u_octet4_loop_content);
+ }
+
+ for (i_content=0; i_content < u_octet4_loop_content; i_content++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"content = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/getMessageContentErr:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_getMessageContentErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessagingError,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"errorDetails (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/getFullMessageRes:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_getFullMessageRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_message;
+ guint32 i_message;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+ u_octet4_loop_message = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of message = %u",u_octet4_loop_message);
+ }
+
+ for (i_message=0; i_message < u_octet4_loop_message; i_message++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"message = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/getFullMessageErr:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_getFullMessageErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessagingError,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"errorDetails (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/getMailboxInfoPropertiesRes:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_getMailboxInfoPropertiesRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_returnedProperties;
+ guint32 i_returnedProperties;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+ u_octet4_loop_returnedProperties = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of returnedProperties = %u",u_octet4_loop_returnedProperties);
+ }
+
+ for (i_returnedProperties=0; i_returnedProperties < u_octet4_loop_returnedProperties; i_returnedProperties++) {
+
+ /* Begin union "org_csapi_mmm_TpMailboxInfoProperty" */
+
+
+ decode_org_csapi_mmm_TpMailboxInfoProperty_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_mmm_TpMailboxInfoProperty" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/getFolderInfoPropertiesRes:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_getFolderInfoPropertiesRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_returnedProperties;
+ guint32 i_returnedProperties;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"folderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_returnedProperties = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of returnedProperties = %u",u_octet4_loop_returnedProperties);
+ }
+
+ for (i_returnedProperties=0; i_returnedProperties < u_octet4_loop_returnedProperties; i_returnedProperties++) {
+
+ /* Begin union "org_csapi_mmm_TpFolderInfoProperty" */
+
+
+ decode_org_csapi_mmm_TpFolderInfoProperty_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_mmm_TpFolderInfoProperty" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/getMessageInfoPropertiesRes:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_getMessageInfoPropertiesRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_returnedProperties;
+ guint32 i_returnedProperties;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"messageID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_returnedProperties = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of returnedProperties = %u",u_octet4_loop_returnedProperties);
+ }
+
+ for (i_returnedProperties=0; i_returnedProperties < u_octet4_loop_returnedProperties; i_returnedProperties++) {
+
+ /* Begin union "org_csapi_mmm_TpMessageInfoProperty" */
+
+
+ decode_org_csapi_mmm_TpMessageInfoProperty_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_mmm_TpMessageInfoProperty" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/setMessageInfoPropertiesRes:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_setMessageInfoPropertiesRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_propertiesUpdated;
+ guint32 i_propertiesUpdated;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"messageID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_propertiesUpdated = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of propertiesUpdated = %u",u_octet4_loop_propertiesUpdated);
+ }
+
+ for (i_propertiesUpdated=0; i_propertiesUpdated < u_octet4_loop_propertiesUpdated; i_propertiesUpdated++) {
+
+ /* Begin union "org_csapi_mmm_TpMessageInfoProperty" */
+
+
+ decode_org_csapi_mmm_TpMessageInfoProperty_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_mmm_TpMessageInfoProperty" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/setMessageInfoPropertiesErr:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_setMessageInfoPropertiesErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_propertiesNotUpdated;
+ guint32 i_propertiesNotUpdated;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"messageID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_propertiesNotUpdated = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of propertiesNotUpdated = %u",u_octet4_loop_propertiesNotUpdated);
+ }
+
+ for (i_propertiesNotUpdated=0; i_propertiesNotUpdated < u_octet4_loop_propertiesNotUpdated; i_propertiesNotUpdated++) {
+
+ /* Begin struct "org_csapi_mmm_TpMessageInfoPropertyError" */
+
+
+
+ decode_org_csapi_mmm_TpMessageInfoPropertyError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpMessageInfoPropertyError" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/getMailboxInfoPropertiesErr:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_getMailboxInfoPropertiesErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessagingError,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"errorDetails (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/getFolderInfoPropertiesErr:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_getFolderInfoPropertiesErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessagingError,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"errorDetails (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMailbox/getMessageInfoPropertiesErr:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMailbox_getMessageInfoPropertiesErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"requestID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessagingError,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"errorDetails (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMailbox/close:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMailbox_close(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMailbox/createFolderReq:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMailbox_createFolderReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"folderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMailbox/getFoldersReq:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMailbox_getFoldersReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"folderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMailbox/deleteFolderReq:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMailbox_deleteFolderReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"folderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMailbox/copyFolderReq:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMailbox_copyFolderReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"sourceFolderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"destinationFolderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMailbox/moveFolderReq:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMailbox_moveFolderReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"sourceFolderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"destinationFolderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMailbox/putMessageReq:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMailbox_putMessageReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_message;
+ guint32 i_message;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"folderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_message = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of message = %u",u_octet4_loop_message);
+ }
+
+ for (i_message=0; i_message < u_octet4_loop_message; i_message++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"message = %u",u_octet1);
+ }
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMailbox/copyMessageReq:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMailbox_copyMessageReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"fromFolderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"toFolderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"messageID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMailbox/moveMessageReq:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMailbox_moveMessageReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"fromFolderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"toFolderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"messageID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMailbox/deleteMessageReq:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMailbox_deleteMessageReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"fromFolderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"messageID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMailbox/listMessagesReq:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMailbox_listMessagesReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"folderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin struct "org_csapi_mmm_TpListMessagesCriteria" */
+
+
+
+ decode_org_csapi_mmm_TpListMessagesCriteria_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpListMessagesCriteria" */
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"reset = %u",u_octet1);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMailbox/listMessageBodyPartsReq:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMailbox_listMessageBodyPartsReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"folderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"messageID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"maxNestingLevel = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMailbox/getMessageBodyPartsReq:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMailbox_getMessageBodyPartsReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_partIDs;
+ guint32 i_partIDs;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"folderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"messageID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_partIDs = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of partIDs = %u",u_octet4_loop_partIDs);
+ }
+
+ for (i_partIDs=0; i_partIDs < u_octet4_loop_partIDs; i_partIDs++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"partIDs (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMailbox/getMessageHeadersReq:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMailbox_getMessageHeadersReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"folderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"messageID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMailbox/getMessageContentReq:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMailbox_getMessageContentReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"folderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"messageID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMailbox/getFullMessageReq:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMailbox_getFullMessageReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"folderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"messageID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMailbox/getMailboxInfoPropertiesReq:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMailbox_getMailboxInfoPropertiesReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMailbox/getFolderInfoPropertiesReq:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMailbox_getFolderInfoPropertiesReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"folderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMailbox/getMessageInfoPropertiesReq:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMailbox_getMessageInfoPropertiesReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"messageID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMailbox/setMessageInfoPropertiesReq:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMailbox_setMessageInfoPropertiesReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_properties;
+ guint32 i_properties;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"mailboxSessionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"messageID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_properties = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of properties = %u",u_octet4_loop_properties);
+ }
+
+ for (i_properties=0; i_properties < u_octet4_loop_properties; i_properties++) {
+
+ /* Begin union "org_csapi_mmm_TpMessageInfoProperty" */
+
+
+ decode_org_csapi_mmm_TpMessageInfoProperty_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_mmm_TpMessageInfoProperty" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMultiMediaMessaging/sendMessageRes:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMultiMediaMessaging_sendMessageRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMultiMediaMessaging/sendMessageErr:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMultiMediaMessaging_sendMessageErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessagingError,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"errorDetails (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMultiMediaMessaging/cancelMessageRes:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMultiMediaMessaging_cancelMessageRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMultiMediaMessaging/cancelMessageErr:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMultiMediaMessaging_cancelMessageErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessagingError,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"errorDetails (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMultiMediaMessaging/queryStatusRes:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMultiMediaMessaging_queryStatusRes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_result;
+ guint32 i_result;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ u_octet4_loop_result = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of result = %u",u_octet4_loop_result);
+ }
+
+ for (i_result=0; i_result < u_octet4_loop_result; i_result++) {
+
+ /* Begin struct "org_csapi_mmm_TpQueryStatusReport" */
+
+
+
+ decode_org_csapi_mmm_TpQueryStatusReport_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpQueryStatusReport" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMultiMediaMessaging/queryStatusErr:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMultiMediaMessaging_queryStatusErr(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessagingError,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"errorDetails (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMultiMediaMessaging/messageStatusReport:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMultiMediaMessaging_messageStatusReport(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"deliveryReportType = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"deliveryReportInfo (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpAppMultiMediaMessaging/messageReceived:1.0
+ */
+
+static void decode_org_csapi_mmm_IpAppMultiMediaMessaging_messageReceived(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_message;
+ guint32 i_message;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_headers;
+ guint32 i_headers;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ u_octet4_loop_message = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of message = %u",u_octet4_loop_message);
+ }
+
+ for (i_message=0; i_message < u_octet4_loop_message; i_message++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"message = %u",u_octet1);
+ }
+
+ }
+
+ u_octet4_loop_headers = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of headers = %u",u_octet4_loop_headers);
+ }
+
+ for (i_headers=0; i_headers < u_octet4_loop_headers; i_headers++) {
+
+ /* Begin union "org_csapi_mmm_TpMessageHeaderField" */
+
+
+ decode_org_csapi_mmm_TpMessageHeaderField_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_mmm_TpMessageHeaderField" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMultiMediaMessaging/sendMessageReq:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMultiMediaMessaging_sendMessageReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_messageTreatment;
+ guint32 i_messageTreatment;
+ guint32 u_octet4_loop_message;
+ guint32 i_message;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_additionalHeaders;
+ guint32 i_additionalHeaders;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ /* Begin struct "org_csapi_mmm_TpTerminatingAddressList" */
+
+
+
+ decode_org_csapi_mmm_TpTerminatingAddressList_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpTerminatingAddressList" */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"deliveryType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_messageTreatment = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of messageTreatment = %u",u_octet4_loop_messageTreatment);
+ }
+
+ for (i_messageTreatment=0; i_messageTreatment < u_octet4_loop_messageTreatment; i_messageTreatment++) {
+
+ /* Begin union "org_csapi_mmm_TpMessageTreatment" */
+
+
+ decode_org_csapi_mmm_TpMessageTreatment_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_mmm_TpMessageTreatment" */
+
+ }
+
+ u_octet4_loop_message = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of message = %u",u_octet4_loop_message);
+ }
+
+ for (i_message=0; i_message < u_octet4_loop_message; i_message++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"message = %u",u_octet1);
+ }
+
+ }
+
+ u_octet4_loop_additionalHeaders = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of additionalHeaders = %u",u_octet4_loop_additionalHeaders);
+ }
+
+ for (i_additionalHeaders=0; i_additionalHeaders < u_octet4_loop_additionalHeaders; i_additionalHeaders++) {
+
+ /* Begin union "org_csapi_mmm_TpMessageHeaderField" */
+
+
+ decode_org_csapi_mmm_TpMessageHeaderField_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_mmm_TpMessageHeaderField" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAssignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMultiMediaMessaging/cancelMessageReq:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMultiMediaMessaging_cancelMessageReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMultiMediaMessaging/queryStatusReq:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMultiMediaMessaging_queryStatusReq(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"assignmentID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:org/csapi/mmm/IpMultiMediaMessaging/close:1.0
+ */
+
+static void decode_org_csapi_mmm_IpMultiMediaMessaging_close(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"sessionID = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/* Struct = IDL:org/csapi/TpAddress:1.0 */
+
+static void decode_org_csapi_TpAddress_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAddress_Plan = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_TpAddressPlan,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpAddress_AddrString (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpAddress_Name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAddress_Presentation = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_TpAddressPresentation,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAddress_Screening = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_TpAddressScreening,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpAddress_SubAddressString (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/TpAddressRange:1.0 */
+
+static void decode_org_csapi_TpAddressRange_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAddressRange_Plan = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_TpAddressPlan,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpAddressRange_AddrString (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpAddressRange_Name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpAddressRange_SubAddressString (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/TpCAIElements:1.0 */
+
+static void decode_org_csapi_TpCAIElements_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCAIElements_UnitsPerInterval = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCAIElements_SecondsPerTimeInterval = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCAIElements_ScalingFactor = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCAIElements_UnitIncrement = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCAIElements_UnitsPerDataInterval = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCAIElements_SegmentsPerDataInterval = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCAIElements_InitialSecsPerTimeInterval = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/TpChargeAdviceInfo:1.0 */
+
+static void decode_org_csapi_TpChargeAdviceInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_TpCAIElements" */
+
+
+
+ decode_org_csapi_TpCAIElements_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpCAIElements" */
+
+ /* Begin struct "org_csapi_TpCAIElements" */
+
+
+
+ decode_org_csapi_TpCAIElements_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpCAIElements" */
+
+}
+
+/* Struct = IDL:org/csapi/TpChargePerTime:1.0 */
+
+static void decode_org_csapi_TpChargePerTime_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpChargePerTime_InitialCharge = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpChargePerTime_CurrentChargePerMinute = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpChargePerTime_NextChargePerMinute = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/TpAoCInfo:1.0 */
+
+static void decode_org_csapi_TpAoCInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin union "org_csapi_TpAoCOrder" */
+
+
+ decode_org_csapi_TpAoCOrder_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_TpAoCOrder" */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpAoCInfo_Currency (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/TpTimeInterval:1.0 */
+
+static void decode_org_csapi_TpTimeInterval_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpTimeInterval_StartTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpTimeInterval_StopTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/TpStructuredAttributeValue:1.0 */
+
+static void decode_org_csapi_TpStructuredAttributeValue_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpStructuredAttributeValue_Type (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ get_CDR_any(tvb,tree,offset,stream_is_big_endian, boundary, header);
+
+}
+
+/* Struct = IDL:org/csapi/TpAttribute:1.0 */
+
+static void decode_org_csapi_TpAttribute_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpAttribute_AttributeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin union "org_csapi_TpAttributeValue" */
+
+
+ decode_org_csapi_TpAttributeValue_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_TpAttributeValue" */
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpFaultStats:1.0 */
+
+static void decode_org_csapi_fw_TpFaultStats_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpFaultStats_Fault = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpInterfaceFault,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpFaultStats_Occurrences = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpFaultStats_MaxDuration = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpFaultStats_TotalDuration = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpFaultStats_NumberOfClientsAffected = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpFaultStatsRecord:1.0 */
+
+static void decode_org_csapi_fw_TpFaultStatsRecord_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpFaultStatsRecord_FaultStatsSet;
+ guint32 i_TpFaultStatsRecord_FaultStatsSet;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_TpTimeInterval" */
+
+
+
+ decode_org_csapi_TpTimeInterval_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpTimeInterval" */
+
+ u_octet4_loop_TpFaultStatsRecord_FaultStatsSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpFaultStatsRecord_FaultStatsSet = %u",u_octet4_loop_TpFaultStatsRecord_FaultStatsSet);
+ }
+
+ for (i_TpFaultStatsRecord_FaultStatsSet=0; i_TpFaultStatsRecord_FaultStatsSet < u_octet4_loop_TpFaultStatsRecord_FaultStatsSet; i_TpFaultStatsRecord_FaultStatsSet++) {
+
+ /* Begin struct "org_csapi_fw_TpFaultStats" */
+
+
+
+ decode_org_csapi_fw_TpFaultStats_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpFaultStats" */
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpLoadPolicy:1.0 */
+
+static void decode_org_csapi_fw_TpLoadPolicy_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpLoadPolicy_LoadPolicy (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpLoadStatisticData:1.0 */
+
+static void decode_org_csapi_fw_TpLoadStatisticData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gfloat my_float;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ my_float = get_CDR_float(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpLoadStatisticData_LoadValue = %.6e",my_float);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpLoadStatisticData_LoadLevel = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpLoadLevel,"Unknown Enum Value"));
+ }
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpLoadThreshold:1.0 */
+
+static void decode_org_csapi_fw_TpLoadThreshold_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gfloat my_float;
+
+ /* Operation specific Variable declarations End */
+
+ my_float = get_CDR_float(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpLoadThreshold_LoadThreshold = %.6e",my_float);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpLoadInitVal:1.0 */
+
+static void decode_org_csapi_fw_TpLoadInitVal_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpLoadInitVal_LoadLevel = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpLoadLevel,"Unknown Enum Value"));
+ }
+
+ /* Begin struct "org_csapi_fw_TpLoadThreshold" */
+
+
+
+ decode_org_csapi_fw_TpLoadThreshold_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpLoadThreshold" */
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpProperty:1.0 */
+
+static void decode_org_csapi_fw_TpProperty_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpProperty_PropertyName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpProperty_PropertyValue (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpClientAppDescription:1.0 */
+
+static void decode_org_csapi_fw_TpClientAppDescription_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpClientAppDescription_ClientAppProperties;
+ guint32 i_TpClientAppDescription_ClientAppProperties;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpClientAppDescription_ClientAppID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_TpClientAppDescription_ClientAppProperties = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpClientAppDescription_ClientAppProperties = %u",u_octet4_loop_TpClientAppDescription_ClientAppProperties);
+ }
+
+ for (i_TpClientAppDescription_ClientAppProperties=0; i_TpClientAppDescription_ClientAppProperties < u_octet4_loop_TpClientAppDescription_ClientAppProperties; i_TpClientAppDescription_ClientAppProperties++) {
+
+ /* Begin struct "org_csapi_fw_TpProperty" */
+
+
+
+ decode_org_csapi_fw_TpProperty_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpProperty" */
+
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpClientAppDescription_HasAccessSession = %u",u_octet1);
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpClientAppDescription_HasServiceInstances = %u",u_octet1);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpEntOp:1.0 */
+
+static void decode_org_csapi_fw_TpEntOp_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpEntOp_EntOpProperties;
+ guint32 i_TpEntOp_EntOpProperties;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpEntOp_EntOpID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_TpEntOp_EntOpProperties = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpEntOp_EntOpProperties = %u",u_octet4_loop_TpEntOp_EntOpProperties);
+ }
+
+ for (i_TpEntOp_EntOpProperties=0; i_TpEntOp_EntOpProperties < u_octet4_loop_TpEntOp_EntOpProperties; i_TpEntOp_EntOpProperties++) {
+
+ /* Begin struct "org_csapi_fw_TpProperty" */
+
+
+
+ decode_org_csapi_fw_TpProperty_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpProperty" */
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpSag:1.0 */
+
+static void decode_org_csapi_fw_TpSag_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpSag_SagID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpSag_SagDescription (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpServiceProperty:1.0 */
+
+static void decode_org_csapi_fw_TpServiceProperty_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpServiceProperty_ServicePropertyValueList;
+ guint32 i_TpServiceProperty_ServicePropertyValueList;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceProperty_ServicePropertyName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_TpServiceProperty_ServicePropertyValueList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpServiceProperty_ServicePropertyValueList = %u",u_octet4_loop_TpServiceProperty_ServicePropertyValueList);
+ }
+
+ for (i_TpServiceProperty_ServicePropertyValueList=0; i_TpServiceProperty_ServicePropertyValueList < u_octet4_loop_TpServiceProperty_ServicePropertyValueList; i_TpServiceProperty_ServicePropertyValueList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceProperty_ServicePropertyValueList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpServiceDescription:1.0 */
+
+static void decode_org_csapi_fw_TpServiceDescription_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpServiceDescription_ServicePropertyList;
+ guint32 i_TpServiceDescription_ServicePropertyList;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceDescription_ServiceTypeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_TpServiceDescription_ServicePropertyList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpServiceDescription_ServicePropertyList = %u",u_octet4_loop_TpServiceDescription_ServicePropertyList);
+ }
+
+ for (i_TpServiceDescription_ServicePropertyList=0; i_TpServiceDescription_ServicePropertyList < u_octet4_loop_TpServiceDescription_ServicePropertyList; i_TpServiceDescription_ServicePropertyList++) {
+
+ /* Begin struct "org_csapi_fw_TpServiceProperty" */
+
+
+
+ decode_org_csapi_fw_TpServiceProperty_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpServiceProperty" */
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpService:1.0 */
+
+static void decode_org_csapi_fw_TpService_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpService_ServiceID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin struct "org_csapi_fw_TpServiceDescription" */
+
+
+
+ decode_org_csapi_fw_TpServiceDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpServiceDescription" */
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpServiceProfileDescription:1.0 */
+
+static void decode_org_csapi_fw_TpServiceProfileDescription_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpServiceProfileDescription_ServiceSubscriptionProperties;
+ guint32 i_TpServiceProfileDescription_ServiceSubscriptionProperties;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceProfileDescription_ServiceContractID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceProfileDescription_ServiceStartDate (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceProfileDescription_ServiceEndDate (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceProfileDescription_ServiceTypeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_TpServiceProfileDescription_ServiceSubscriptionProperties = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpServiceProfileDescription_ServiceSubscriptionProperties = %u",u_octet4_loop_TpServiceProfileDescription_ServiceSubscriptionProperties);
+ }
+
+ for (i_TpServiceProfileDescription_ServiceSubscriptionProperties=0; i_TpServiceProfileDescription_ServiceSubscriptionProperties < u_octet4_loop_TpServiceProfileDescription_ServiceSubscriptionProperties; i_TpServiceProfileDescription_ServiceSubscriptionProperties++) {
+
+ /* Begin struct "org_csapi_fw_TpServiceProperty" */
+
+
+
+ decode_org_csapi_fw_TpServiceProperty_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpServiceProperty" */
+
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpServiceProfileDescription_InUse = %u",u_octet1);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceProfileDescription_ServiceID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpServiceTypeProperty:1.0 */
+
+static void decode_org_csapi_fw_TpServiceTypeProperty_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceTypeProperty_ServicePropertyName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpServiceTypeProperty_ServiceTypePropertyMode = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpServiceTypePropertyMode,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceTypeProperty_ServicePropertyTypeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpServiceTypeDescription:1.0 */
+
+static void decode_org_csapi_fw_TpServiceTypeDescription_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpServiceTypeDescription_ServiceTypePropertyList;
+ guint32 i_TpServiceTypeDescription_ServiceTypePropertyList;
+ guint32 u_octet4_loop_TpServiceTypeDescription_ServiceTypeNameList;
+ guint32 i_TpServiceTypeDescription_ServiceTypeNameList;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpServiceTypeDescription_ServiceTypePropertyList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpServiceTypeDescription_ServiceTypePropertyList = %u",u_octet4_loop_TpServiceTypeDescription_ServiceTypePropertyList);
+ }
+
+ for (i_TpServiceTypeDescription_ServiceTypePropertyList=0; i_TpServiceTypeDescription_ServiceTypePropertyList < u_octet4_loop_TpServiceTypeDescription_ServiceTypePropertyList; i_TpServiceTypeDescription_ServiceTypePropertyList++) {
+
+ /* Begin struct "org_csapi_fw_TpServiceTypeProperty" */
+
+
+
+ decode_org_csapi_fw_TpServiceTypeProperty_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpServiceTypeProperty" */
+
+ }
+
+ u_octet4_loop_TpServiceTypeDescription_ServiceTypeNameList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpServiceTypeDescription_ServiceTypeNameList = %u",u_octet4_loop_TpServiceTypeDescription_ServiceTypeNameList);
+ }
+
+ for (i_TpServiceTypeDescription_ServiceTypeNameList=0; i_TpServiceTypeDescription_ServiceTypeNameList < u_octet4_loop_TpServiceTypeDescription_ServiceTypeNameList; i_TpServiceTypeDescription_ServiceTypeNameList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceTypeDescription_ServiceTypeNameList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpServiceTypeDescription_AvailableOrUnavailable = %u",u_octet1);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpSignatureAndServiceMgr:1.0 */
+
+static void decode_org_csapi_fw_TpSignatureAndServiceMgr_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpSignatureAndServiceMgr_DigitalSignature;
+ guint32 i_TpSignatureAndServiceMgr_DigitalSignature;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpSignatureAndServiceMgr_DigitalSignature = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpSignatureAndServiceMgr_DigitalSignature = %u",u_octet4_loop_TpSignatureAndServiceMgr_DigitalSignature);
+ }
+
+ for (i_TpSignatureAndServiceMgr_DigitalSignature=0; i_TpSignatureAndServiceMgr_DigitalSignature < u_octet4_loop_TpSignatureAndServiceMgr_DigitalSignature; i_TpSignatureAndServiceMgr_DigitalSignature++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpSignatureAndServiceMgr_DigitalSignature = %u",u_octet1);
+ }
+
+ }
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpPerson:1.0 */
+
+static void decode_org_csapi_fw_TpPerson_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpPerson_PersonProperties;
+ guint32 i_TpPerson_PersonProperties;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPerson_PersonName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPerson_PostalAddress (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPerson_TelephoneNumber (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPerson_Email (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPerson_HomePage (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_TpPerson_PersonProperties = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPerson_PersonProperties = %u",u_octet4_loop_TpPerson_PersonProperties);
+ }
+
+ for (i_TpPerson_PersonProperties=0; i_TpPerson_PersonProperties < u_octet4_loop_TpPerson_PersonProperties; i_TpPerson_PersonProperties++) {
+
+ /* Begin struct "org_csapi_fw_TpProperty" */
+
+
+
+ decode_org_csapi_fw_TpProperty_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpProperty" */
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpServiceContractDescription:1.0 */
+
+static void decode_org_csapi_fw_TpServiceContractDescription_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpServiceContractDescription_ServiceSubscriptionProperties;
+ guint32 i_TpServiceContractDescription_ServiceSubscriptionProperties;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_fw_TpPerson" */
+
+
+
+ decode_org_csapi_fw_TpPerson_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpPerson" */
+
+ /* Begin struct "org_csapi_fw_TpPerson" */
+
+
+
+ decode_org_csapi_fw_TpPerson_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpPerson" */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceContractDescription_ServiceStartDate (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceContractDescription_ServiceEndDate (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceContractDescription_ServiceTypeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceContractDescription_ServiceID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_TpServiceContractDescription_ServiceSubscriptionProperties = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpServiceContractDescription_ServiceSubscriptionProperties = %u",u_octet4_loop_TpServiceContractDescription_ServiceSubscriptionProperties);
+ }
+
+ for (i_TpServiceContractDescription_ServiceSubscriptionProperties=0; i_TpServiceContractDescription_ServiceSubscriptionProperties < u_octet4_loop_TpServiceContractDescription_ServiceSubscriptionProperties; i_TpServiceContractDescription_ServiceSubscriptionProperties++) {
+
+ /* Begin struct "org_csapi_fw_TpServiceProperty" */
+
+
+
+ decode_org_csapi_fw_TpServiceProperty_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpServiceProperty" */
+
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpServiceContractDescription_InUse = %u",u_octet1);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpLoadStatistic:1.0 */
+
+static void decode_org_csapi_fw_TpLoadStatistic_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin union "org_csapi_fw_TpLoadStatisticEntityID" */
+
+
+ decode_org_csapi_fw_TpLoadStatisticEntityID_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_fw_TpLoadStatisticEntityID" */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpLoadStatistic_TimeStamp (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin union "org_csapi_fw_TpLoadStatisticInfo" */
+
+
+ decode_org_csapi_fw_TpLoadStatisticInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_fw_TpLoadStatisticInfo" */
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpServiceContract:1.0 */
+
+static void decode_org_csapi_fw_TpServiceContract_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceContract_ServiceContractID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin struct "org_csapi_fw_TpServiceContractDescription" */
+
+
+
+ decode_org_csapi_fw_TpServiceContractDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpServiceContractDescription" */
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpServiceProfile:1.0 */
+
+static void decode_org_csapi_fw_TpServiceProfile_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceProfile_ServiceProfileID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin struct "org_csapi_fw_TpServiceProfileDescription" */
+
+
+
+ decode_org_csapi_fw_TpServiceProfileDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpServiceProfileDescription" */
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpAuthDomain:1.0 */
+
+static void decode_org_csapi_fw_TpAuthDomain_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin union "org_csapi_fw_TpDomainID" */
+
+
+ decode_org_csapi_fw_TpDomainID_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_fw_TpDomainID" */
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpSagProfilePair:1.0 */
+
+static void decode_org_csapi_fw_TpSagProfilePair_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpSagProfilePair_Sag (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpSagProfilePair_ServiceProfile (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpAddSagMembersConflict:1.0 */
+
+static void decode_org_csapi_fw_TpAddSagMembersConflict_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpAddSagMembersConflict_ClientApplication (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin struct "org_csapi_fw_TpSagProfilePair" */
+
+
+
+ decode_org_csapi_fw_TpSagProfilePair_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpSagProfilePair" */
+
+ /* Begin struct "org_csapi_fw_TpSagProfilePair" */
+
+
+
+ decode_org_csapi_fw_TpSagProfilePair_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpSagProfilePair" */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpAddSagMembersConflict_Service (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpAssignSagToServiceProfileConflict:1.0 */
+
+static void decode_org_csapi_fw_TpAssignSagToServiceProfileConflict_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpAssignSagToServiceProfileConflict_ClientApplication (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin struct "org_csapi_fw_TpSagProfilePair" */
+
+
+
+ decode_org_csapi_fw_TpSagProfilePair_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpSagProfilePair" */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpAssignSagToServiceProfileConflict_Service (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpServiceTypePropertyValue:1.0 */
+
+static void decode_org_csapi_fw_TpServiceTypePropertyValue_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpServiceTypePropertyValue_ServicePropertyValueList;
+ guint32 i_TpServiceTypePropertyValue_ServicePropertyValueList;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceTypePropertyValue_ServicePropertyName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpServiceTypePropertyValue_ServiceTypePropertyMode = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpServiceTypePropertyMode,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceTypePropertyValue_ServicePropertyTypeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_TpServiceTypePropertyValue_ServicePropertyValueList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpServiceTypePropertyValue_ServicePropertyValueList = %u",u_octet4_loop_TpServiceTypePropertyValue_ServicePropertyValueList);
+ }
+
+ for (i_TpServiceTypePropertyValue_ServicePropertyValueList=0; i_TpServiceTypePropertyValue_ServicePropertyValueList < u_octet4_loop_TpServiceTypePropertyValue_ServicePropertyValueList; i_TpServiceTypePropertyValue_ServicePropertyValueList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpServiceTypePropertyValue_ServicePropertyValueList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpFwMigrationServiceAvailableInfo:1.0 */
+
+static void decode_org_csapi_fw_TpFwMigrationServiceAvailableInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpFwMigrationServiceAvailableInfo_MigrationAdditionalInfo;
+ guint32 i_TpFwMigrationServiceAvailableInfo_MigrationAdditionalInfo;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpFwMigrationServiceAvailableInfo_ServiceType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpFwMigrationServiceAvailableInfo_ServiceID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpFwMigrationServiceAvailableInfo_CompatibleServiceID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpFwMigrationServiceAvailableInfo_BackwardCompatibilityLevel = %u",u_octet1);
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpFwMigrationServiceAvailableInfo_MigrationRequired = %u",u_octet1);
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpFwMigrationServiceAvailableInfo_DataMigrated = %u",u_octet1);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpFwMigrationServiceAvailableInfo_MigrationDataAndTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_TpFwMigrationServiceAvailableInfo_MigrationAdditionalInfo = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpFwMigrationServiceAvailableInfo_MigrationAdditionalInfo = %u",u_octet4_loop_TpFwMigrationServiceAvailableInfo_MigrationAdditionalInfo);
+ }
+
+ for (i_TpFwMigrationServiceAvailableInfo_MigrationAdditionalInfo=0; i_TpFwMigrationServiceAvailableInfo_MigrationAdditionalInfo < u_octet4_loop_TpFwMigrationServiceAvailableInfo_MigrationAdditionalInfo; i_TpFwMigrationServiceAvailableInfo_MigrationAdditionalInfo++) {
+
+ /* Begin union "org_csapi_fw_TpMigrationAdditionalInfo" */
+
+
+ decode_org_csapi_fw_TpMigrationAdditionalInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_fw_TpMigrationAdditionalInfo" */
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/fw/TpFwAgreementInfo:1.0 */
+
+static void decode_org_csapi_fw_TpFwAgreementInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpFwAgreementInfo_ClientApplicationID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpFwAgreementInfo_ServiceID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpFwAgreementInfo_ServiceContractID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpFwAgreementInfo_ServiceProfileID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/ui/TpUIMessageCriteria:1.0 */
+
+static void decode_org_csapi_ui_TpUIMessageCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUIMessageCriteria_EndSequence (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUIMessageCriteria_MaxMessageTime = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUIMessageCriteria_MaxMessageSize = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/ui/TpUIEventInfo:1.0 */
+
+static void decode_org_csapi_ui_TpUIEventInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUIEventInfo_ServiceCode (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUIEventInfo_DataTypeIndication = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUIEventInfoDataType,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUIEventInfo_DataString (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/ui/TpUIEventCriteria:1.0 */
+
+static void decode_org_csapi_ui_TpUIEventCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_TpAddressRange" */
+
+
+
+ decode_org_csapi_TpAddressRange_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddressRange" */
+
+ /* Begin struct "org_csapi_TpAddressRange" */
+
+
+
+ decode_org_csapi_TpAddressRange_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddressRange" */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUIEventCriteria_ServiceCode (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/ui/TpUIEventCriteriaResult:1.0 */
+
+static void decode_org_csapi_ui_TpUIEventCriteriaResult_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_ui_TpUIEventCriteria" */
+
+
+
+ decode_org_csapi_ui_TpUIEventCriteria_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_ui_TpUIEventCriteria" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUIEventCriteriaResult_AssignmentID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/ui/TpUIEventNotificationInfo:1.0 */
+
+static void decode_org_csapi_ui_TpUIEventNotificationInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpUIEventNotificationInfo_UIEventData;
+ guint32 i_TpUIEventNotificationInfo_UIEventData;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUIEventNotificationInfo_ServiceCode (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUIEventNotificationInfo_DataTypeIndication = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUIEventInfoDataType,"Unknown Enum Value"));
+ }
+
+ u_octet4_loop_TpUIEventNotificationInfo_UIEventData = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpUIEventNotificationInfo_UIEventData = %u",u_octet4_loop_TpUIEventNotificationInfo_UIEventData);
+ }
+
+ for (i_TpUIEventNotificationInfo_UIEventData=0; i_TpUIEventNotificationInfo_UIEventData < u_octet4_loop_TpUIEventNotificationInfo_UIEventData; i_TpUIEventNotificationInfo_UIEventData++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpUIEventNotificationInfo_UIEventData = %u",u_octet1);
+ }
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/ui/TpUIRecognitionProperty:1.0 */
+
+static void decode_org_csapi_ui_TpUIRecognitionProperty_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUIRecognitionProperty_PropertyName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUIRecognitionProperty_PropertyValue (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/ui/TpUIRecognitionCriteria:1.0 */
+
+static void decode_org_csapi_ui_TpUIRecognitionCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpUIRecognitionCriteria_Properties;
+ guint32 i_TpUIRecognitionCriteria_Properties;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUIRecognitionCriteria_SpeakerID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_TpUIRecognitionCriteria_Properties = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpUIRecognitionCriteria_Properties = %u",u_octet4_loop_TpUIRecognitionCriteria_Properties);
+ }
+
+ for (i_TpUIRecognitionCriteria_Properties=0; i_TpUIRecognitionCriteria_Properties < u_octet4_loop_TpUIRecognitionCriteria_Properties; i_TpUIRecognitionCriteria_Properties++) {
+
+ /* Begin struct "org_csapi_ui_TpUIRecognitionProperty" */
+
+
+
+ decode_org_csapi_ui_TpUIRecognitionProperty_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_ui_TpUIRecognitionProperty" */
+
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUIRecognitionCriteria_Grammar (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/ui/TpUICollectCriteria:1.0 */
+
+static void decode_org_csapi_ui_TpUICollectCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUICollectCriteria_MinLength = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUICollectCriteria_MaxLength = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUICollectCriteria_EndSequence (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUICollectCriteria_StartTimeout = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUICollectCriteria_InterCharTimeout = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUICollectCriteria_CollectMode = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUICollectMode,"Unknown Enum Value"));
+ }
+
+ /* Begin struct "org_csapi_ui_TpUIRecognitionCriteria" */
+
+
+
+ decode_org_csapi_ui_TpUIRecognitionCriteria_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_ui_TpUIRecognitionCriteria" */
+
+}
+
+/* Struct = IDL:org/csapi/ui/TpUIWordOverride:1.0 */
+
+static void decode_org_csapi_ui_TpUIWordOverride_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUIWordOverride_Spelling (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUIWordOverride_PronounceType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUIPronounceType,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUIWordOverride_PronounceAs (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/ui/TpUISynthesisInfoData:1.0 */
+
+static void decode_org_csapi_ui_TpUISynthesisInfoData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpUISynthesisInfoData_WordOverrideSet;
+ guint32 i_TpUISynthesisInfoData_WordOverrideSet;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUISynthesisInfoData_SpeakerGender = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUISynthesisGender,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUISynthesisInfoData_SpeakerAge = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUISynthesisAge,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUISynthesisInfoData_SpeakerRate = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUISynthesisRate,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUISynthesisInfoData_SpeakerRange = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUISynthesisRange,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUISynthesisInfoData_TextData (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_TpUISynthesisInfoData_WordOverrideSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpUISynthesisInfoData_WordOverrideSet = %u",u_octet4_loop_TpUISynthesisInfoData_WordOverrideSet);
+ }
+
+ for (i_TpUISynthesisInfoData_WordOverrideSet=0; i_TpUISynthesisInfoData_WordOverrideSet < u_octet4_loop_TpUISynthesisInfoData_WordOverrideSet; i_TpUISynthesisInfoData_WordOverrideSet++) {
+
+ /* Begin struct "org_csapi_ui_TpUIWordOverride" */
+
+
+
+ decode_org_csapi_ui_TpUIWordOverride_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_ui_TpUIWordOverride" */
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/TpCallError:1.0 */
+
+static void decode_org_csapi_cc_TpCallError_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpCallError_ErrorTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallError_ErrorType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallErrorType,"Unknown Enum Value"));
+ }
+
+ /* Begin union "org_csapi_cc_TpCallAdditionalErrorInfo" */
+
+
+ decode_org_csapi_cc_TpCallAdditionalErrorInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cc_TpCallAdditionalErrorInfo" */
+
+}
+
+/* Struct = IDL:org/csapi/cc/TpCallEndedReport:1.0 */
+
+static void decode_org_csapi_cc_TpCallEndedReport_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallEndedReport_CallLegSessionID = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallEndedReport_Cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpReleaseCause,"Unknown Enum Value"));
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/TpCallInfoReport:1.0 */
+
+static void decode_org_csapi_cc_TpCallInfoReport_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallInfoReport_CallInfoType = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpCallInfoReport_CallInitiationStartTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpCallInfoReport_CallConnectedToResourceTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpCallInfoReport_CallConnectedToDestinationTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpCallInfoReport_CallEndTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallInfoReport_Cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpReleaseCause,"Unknown Enum Value"));
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/TpCallServiceCode:1.0 */
+
+static void decode_org_csapi_cc_TpCallServiceCode_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallServiceCode_CallServiceCodeType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallServiceCodeType,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpCallServiceCode_ServiceCodeValue (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/cc/TpCallTreatment:1.0 */
+
+static void decode_org_csapi_cc_TpCallTreatment_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallTreatment_CallTreatmentType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallTreatmentType,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallTreatment_ReleaseCause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpReleaseCause,"Unknown Enum Value"));
+ }
+
+ /* Begin union "org_csapi_cc_TpCallAdditionalTreatmentInfo" */
+
+
+ decode_org_csapi_cc_TpCallAdditionalTreatmentInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cc_TpCallAdditionalTreatmentInfo" */
+
+}
+
+/* Struct = IDL:org/csapi/cc/TpCallChargePlan:1.0 */
+
+static void decode_org_csapi_cc_TpCallChargePlan_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ guint32 u_octet4_loop_TpCallChargePlan_TransparentCharge;
+ guint32 i_TpCallChargePlan_TransparentCharge;
+ guint8 u_octet1;
+ gint32 s_octet4;
+ guint32 u_octet4_loop_TpCallChargePlan_AdditionalInfo;
+ guint32 i_TpCallChargePlan_AdditionalInfo;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallChargePlan_ChargeOrderType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallChargeOrderCategory,"Unknown Enum Value"));
+ }
+
+ u_octet4_loop_TpCallChargePlan_TransparentCharge = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpCallChargePlan_TransparentCharge = %u",u_octet4_loop_TpCallChargePlan_TransparentCharge);
+ }
+
+ for (i_TpCallChargePlan_TransparentCharge=0; i_TpCallChargePlan_TransparentCharge < u_octet4_loop_TpCallChargePlan_TransparentCharge; i_TpCallChargePlan_TransparentCharge++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpCallChargePlan_TransparentCharge = %u",u_octet1);
+ }
+
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallChargePlan_ChargePlan = %i",s_octet4);
+ }
+
+ u_octet4_loop_TpCallChargePlan_AdditionalInfo = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpCallChargePlan_AdditionalInfo = %u",u_octet4_loop_TpCallChargePlan_AdditionalInfo);
+ }
+
+ for (i_TpCallChargePlan_AdditionalInfo=0; i_TpCallChargePlan_AdditionalInfo < u_octet4_loop_TpCallChargePlan_AdditionalInfo; i_TpCallChargePlan_AdditionalInfo++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpCallChargePlan_AdditionalInfo = %u",u_octet1);
+ }
+
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallChargePlan_PartyToCharge = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallPartyToChargeType,"Unknown Enum Value"));
+ }
+
+ /* Begin union "org_csapi_cc_TpCallPartyToChargeAdditionalInfo" */
+
+
+ decode_org_csapi_cc_TpCallPartyToChargeAdditionalInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cc_TpCallPartyToChargeAdditionalInfo" */
+
+}
+
+/* Struct = IDL:org/csapi/cc/gccs/TpCallEventCriteria:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallEventCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_TpAddressRange" */
+
+
+
+ decode_org_csapi_TpAddressRange_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddressRange" */
+
+ /* Begin struct "org_csapi_TpAddressRange" */
+
+
+
+ decode_org_csapi_TpAddressRange_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddressRange" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallEventCriteria_CallEventName = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallEventCriteria_CallNotificationType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_gccs_TpCallNotificationType,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallEventCriteria_MonitorMode = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallMonitorMode,"Unknown Enum Value"));
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/gccs/TpCallEventCriteriaResult:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallEventCriteriaResult_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_cc_gccs_TpCallEventCriteria" */
+
+
+
+ decode_org_csapi_cc_gccs_TpCallEventCriteria_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_gccs_TpCallEventCriteria" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallEventCriteriaResult_AssignmentID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/gccs/TpCallReleaseCause:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallReleaseCause_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallReleaseCause_Value = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallReleaseCause_Location = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/gccs/TpCallReport:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallReport_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallReport_MonitorMode = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallMonitorMode,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpCallReport_CallEventTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallReport_CallReportType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_gccs_TpCallReportType,"Unknown Enum Value"));
+ }
+
+ /* Begin union "org_csapi_cc_gccs_TpCallAdditionalReportInfo" */
+
+
+ decode_org_csapi_cc_gccs_TpCallAdditionalReportInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cc_gccs_TpCallAdditionalReportInfo" */
+
+}
+
+/* Struct = IDL:org/csapi/cc/gccs/TpCallReportRequest:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallReportRequest_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallReportRequest_MonitorMode = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallMonitorMode,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallReportRequest_CallReportType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_gccs_TpCallReportType,"Unknown Enum Value"));
+ }
+
+ /* Begin union "org_csapi_cc_gccs_TpCallAdditionalReportCriteria" */
+
+
+ decode_org_csapi_cc_gccs_TpCallAdditionalReportCriteria_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cc_gccs_TpCallAdditionalReportCriteria" */
+
+}
+
+/* Struct = IDL:org/csapi/cc/gccs/TpCallEventInfo:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallEventInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpCallEventInfo_CallAppInfo;
+ guint32 i_TpCallEventInfo_CallAppInfo;
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ u_octet4_loop_TpCallEventInfo_CallAppInfo = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpCallEventInfo_CallAppInfo = %u",u_octet4_loop_TpCallEventInfo_CallAppInfo);
+ }
+
+ for (i_TpCallEventInfo_CallAppInfo=0; i_TpCallEventInfo_CallAppInfo < u_octet4_loop_TpCallEventInfo_CallAppInfo; i_TpCallEventInfo_CallAppInfo++) {
+
+ /* Begin union "org_csapi_cc_gccs_TpCallAppInfo" */
+
+
+ decode_org_csapi_cc_gccs_TpCallAppInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cc_gccs_TpCallAppInfo" */
+
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallEventInfo_CallEventName = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallEventInfo_CallNotificationType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_gccs_TpCallNotificationType,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallEventInfo_MonitorMode = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallMonitorMode,"Unknown Enum Value"));
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/gccs/TpCallEndedReport:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallEndedReport_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallEndedReport_CallLegSessionID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_cc_gccs_TpCallReleaseCause" */
+
+
+
+ decode_org_csapi_cc_gccs_TpCallReleaseCause_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_gccs_TpCallReleaseCause" */
+
+}
+
+/* Struct = IDL:org/csapi/cc/gccs/TpCallInfoReport:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallInfoReport_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallInfoReport_CallInfoType = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpCallInfoReport_CallInitiationStartTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpCallInfoReport_CallConnectedToResourceTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpCallInfoReport_CallConnectedToDestinationTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpCallInfoReport_CallEndTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin struct "org_csapi_cc_gccs_TpCallReleaseCause" */
+
+
+
+ decode_org_csapi_cc_gccs_TpCallReleaseCause_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_gccs_TpCallReleaseCause" */
+
+}
+
+/* Struct = IDL:org/csapi/cc/gccs/TpCallTreatment:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallTreatment_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallTreatment_CallTreatmentType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallTreatmentType,"Unknown Enum Value"));
+ }
+
+ /* Begin struct "org_csapi_cc_gccs_TpCallReleaseCause" */
+
+
+
+ decode_org_csapi_cc_gccs_TpCallReleaseCause_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_gccs_TpCallReleaseCause" */
+
+ /* Begin union "org_csapi_cc_TpCallAdditionalTreatmentInfo" */
+
+
+ decode_org_csapi_cc_TpCallAdditionalTreatmentInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cc_TpCallAdditionalTreatmentInfo" */
+
+}
+
+/* Struct = IDL:org/csapi/cc/gccs/TpCallIdentifier:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallIdentifier_CallSessionID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/TpCallNotificationScope:1.0 */
+
+static void decode_org_csapi_cc_TpCallNotificationScope_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_TpAddressRange" */
+
+
+
+ decode_org_csapi_TpAddressRange_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddressRange" */
+
+ /* Begin struct "org_csapi_TpAddressRange" */
+
+
+
+ decode_org_csapi_TpAddressRange_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddressRange" */
+
+}
+
+/* Struct = IDL:org/csapi/cc/TpCallNotificationReportScope:1.0 */
+
+static void decode_org_csapi_cc_TpCallNotificationReportScope_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+}
+
+/* Struct = IDL:org/csapi/cc/TpCallEventRequest:1.0 */
+
+static void decode_org_csapi_cc_TpCallEventRequest_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallEventRequest_CallEventType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallEventType,"Unknown Enum Value"));
+ }
+
+ /* Begin union "org_csapi_cc_TpAdditionalCallEventCriteria" */
+
+
+ decode_org_csapi_cc_TpAdditionalCallEventCriteria_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cc_TpAdditionalCallEventCriteria" */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallEventRequest_CallMonitorMode = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallMonitorMode,"Unknown Enum Value"));
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/TpCallNotificationRequest:1.0 */
+
+static void decode_org_csapi_cc_TpCallNotificationRequest_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpCallNotificationRequest_CallEventsRequested;
+ guint32 i_TpCallNotificationRequest_CallEventsRequested;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_cc_TpCallNotificationScope" */
+
+
+
+ decode_org_csapi_cc_TpCallNotificationScope_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallNotificationScope" */
+
+ u_octet4_loop_TpCallNotificationRequest_CallEventsRequested = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpCallNotificationRequest_CallEventsRequested = %u",u_octet4_loop_TpCallNotificationRequest_CallEventsRequested);
+ }
+
+ for (i_TpCallNotificationRequest_CallEventsRequested=0; i_TpCallNotificationRequest_CallEventsRequested < u_octet4_loop_TpCallNotificationRequest_CallEventsRequested; i_TpCallNotificationRequest_CallEventsRequested++) {
+
+ /* Begin struct "org_csapi_cc_TpCallEventRequest" */
+
+
+
+ decode_org_csapi_cc_TpCallEventRequest_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallEventRequest" */
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/TpNotificationRequested:1.0 */
+
+static void decode_org_csapi_cc_TpNotificationRequested_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_cc_TpCallNotificationRequest" */
+
+
+
+ decode_org_csapi_cc_TpCallNotificationRequest_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallNotificationRequest" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpNotificationRequested_AssignmentID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/TpCallLegConnectionProperties:1.0 */
+
+static void decode_org_csapi_cc_TpCallLegConnectionProperties_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallLegConnectionProperties_AttachMechanism = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallLegAttachMechanism,"Unknown Enum Value"));
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/TpCallEventInfo:1.0 */
+
+static void decode_org_csapi_cc_TpCallEventInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallEventInfo_CallEventType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallEventType,"Unknown Enum Value"));
+ }
+
+ /* Begin union "org_csapi_cc_TpCallAdditionalEventInfo" */
+
+
+ decode_org_csapi_cc_TpCallAdditionalEventInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cc_TpCallAdditionalEventInfo" */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallEventInfo_CallMonitorMode = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallMonitorMode,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpCallEventInfo_CallEventTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/cc/TpNotificationRequestedSetEntry:1.0 */
+
+static void decode_org_csapi_cc_TpNotificationRequestedSetEntry_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpNotificationRequestedSetEntry_NotificationRequestSet;
+ guint32 i_TpNotificationRequestedSetEntry_NotificationRequestSet;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpNotificationRequestedSetEntry_NotificationRequestSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpNotificationRequestedSetEntry_NotificationRequestSet = %u",u_octet4_loop_TpNotificationRequestedSetEntry_NotificationRequestSet);
+ }
+
+ for (i_TpNotificationRequestedSetEntry_NotificationRequestSet=0; i_TpNotificationRequestedSetEntry_NotificationRequestSet < u_octet4_loop_TpNotificationRequestedSetEntry_NotificationRequestSet; i_TpNotificationRequestedSetEntry_NotificationRequestSet++) {
+
+ /* Begin struct "org_csapi_cc_TpNotificationRequested" */
+
+
+
+ decode_org_csapi_cc_TpNotificationRequested_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpNotificationRequested" */
+
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpNotificationRequestedSetEntry_Final = %u",u_octet1);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/TpCarrier:1.0 */
+
+static void decode_org_csapi_cc_TpCarrier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpCarrier_CarrierID;
+ guint32 i_TpCarrier_CarrierID;
+ guint8 u_octet1;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpCarrier_CarrierID = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpCarrier_CarrierID = %u",u_octet4_loop_TpCarrier_CarrierID);
+ }
+
+ for (i_TpCarrier_CarrierID=0; i_TpCarrier_CarrierID < u_octet4_loop_TpCarrier_CarrierID; i_TpCarrier_CarrierID++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpCarrier_CarrierID = %u",u_octet1);
+ }
+
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCarrier_CarrierSelectionField = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCarrierSelectionField,"Unknown Enum Value"));
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/TpCallNotificationInfo:1.0 */
+
+static void decode_org_csapi_cc_TpCallNotificationInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpCallNotificationInfo_CallAppInfo;
+ guint32 i_TpCallNotificationInfo_CallAppInfo;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_cc_TpCallNotificationReportScope" */
+
+
+
+ decode_org_csapi_cc_TpCallNotificationReportScope_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallNotificationReportScope" */
+
+ u_octet4_loop_TpCallNotificationInfo_CallAppInfo = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpCallNotificationInfo_CallAppInfo = %u",u_octet4_loop_TpCallNotificationInfo_CallAppInfo);
+ }
+
+ for (i_TpCallNotificationInfo_CallAppInfo=0; i_TpCallNotificationInfo_CallAppInfo < u_octet4_loop_TpCallNotificationInfo_CallAppInfo; i_TpCallNotificationInfo_CallAppInfo++) {
+
+ /* Begin union "org_csapi_cc_TpCallAppInfo" */
+
+
+ decode_org_csapi_cc_TpCallAppInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cc_TpCallAppInfo" */
+
+ }
+
+ /* Begin struct "org_csapi_cc_TpCallEventInfo" */
+
+
+
+ decode_org_csapi_cc_TpCallEventInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallEventInfo" */
+
+}
+
+/* Struct = IDL:org/csapi/cc/TpCallLegInfoReport:1.0 */
+
+static void decode_org_csapi_cc_TpCallLegInfoReport_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpCallLegInfoReport_CallAppInfo;
+ guint32 i_TpCallLegInfoReport_CallAppInfo;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallLegInfoReport_CallLegInfoType = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpCallLegInfoReport_CallLegStartTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpCallLegInfoReport_CallLegConnectedToResourceTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpCallLegInfoReport_CallLegConnectedToAddressTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpCallLegInfoReport_CallLegEndTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallLegInfoReport_CallLegReleaseCause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpReleaseCause,"Unknown Enum Value"));
+ }
+
+ u_octet4_loop_TpCallLegInfoReport_CallAppInfo = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpCallLegInfoReport_CallAppInfo = %u",u_octet4_loop_TpCallLegInfoReport_CallAppInfo);
+ }
+
+ for (i_TpCallLegInfoReport_CallAppInfo=0; i_TpCallLegInfoReport_CallAppInfo < u_octet4_loop_TpCallLegInfoReport_CallAppInfo; i_TpCallLegInfoReport_CallAppInfo++) {
+
+ /* Begin union "org_csapi_cc_TpCallAppInfo" */
+
+
+ decode_org_csapi_cc_TpCallAppInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cc_TpCallAppInfo" */
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/TpCallLegProperty:1.0 */
+
+static void decode_org_csapi_cc_TpCallLegProperty_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpCallLegProperty_CallLegPropertyName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpCallLegProperty_CallLegPropertyValue (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/cc/mpccs/TpMultiPartyCallIdentifier:1.0 */
+
+static void decode_org_csapi_cc_mpccs_TpMultiPartyCallIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMultiPartyCallIdentifier_CallSessionID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/mpccs/TpCallLegIdentifier:1.0 */
+
+static void decode_org_csapi_cc_mpccs_TpCallLegIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallLegIdentifier_CallLegSessionID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/mpccs/TpAppCallLegCallBack:1.0 */
+
+static void decode_org_csapi_cc_mpccs_TpAppCallLegCallBack_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpAppCallLegCallBack_AppCallLegSet;
+ guint32 i_TpAppCallLegCallBack_AppCallLegSet;
+
+ /* Operation specific Variable declarations End */
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ u_octet4_loop_TpAppCallLegCallBack_AppCallLegSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpAppCallLegCallBack_AppCallLegSet = %u",u_octet4_loop_TpAppCallLegCallBack_AppCallLegSet);
+ }
+
+ for (i_TpAppCallLegCallBack_AppCallLegSet=0; i_TpAppCallLegCallBack_AppCallLegSet < u_octet4_loop_TpAppCallLegCallBack_AppCallLegSet; i_TpAppCallLegCallBack_AppCallLegSet++) {
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/mmccs/TpCallSuperviseVolume:1.0 */
+
+static void decode_org_csapi_cc_mmccs_TpCallSuperviseVolume_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallSuperviseVolume_VolumeQuantity = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallSuperviseVolume_VolumeUnit = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/mmccs/TpMediaStreamRequest:1.0 */
+
+static void decode_org_csapi_cc_mmccs_TpMediaStreamRequest_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMediaStreamRequest_Direction = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_mmccs_TpMediaStreamDirection,"Unknown Enum Value"));
+ }
+
+ /* Begin union "org_csapi_cc_mmccs_TpMediaStreamDataTypeRequest" */
+
+
+ decode_org_csapi_cc_mmccs_TpMediaStreamDataTypeRequest_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cc_mmccs_TpMediaStreamDataTypeRequest" */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMediaStreamRequest_MediaMonitorMode = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallMonitorMode,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMediaStreamRequest_EventType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_mmccs_TpMediaStreamEventType,"Unknown Enum Value"));
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/mmccs/TpMediaStream:1.0 */
+
+static void decode_org_csapi_cc_mmccs_TpMediaStream_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMediaStream_Direction = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_mmccs_TpMediaStreamDirection,"Unknown Enum Value"));
+ }
+
+ /* Begin union "org_csapi_cc_mmccs_TpMediaStreamDataTypeRequest" */
+
+
+ decode_org_csapi_cc_mmccs_TpMediaStreamDataTypeRequest_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cc_mmccs_TpMediaStreamDataTypeRequest" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMediaStream_ChannelSessionID = %i",s_octet4);
+ }
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+}
+
+/* Struct = IDL:org/csapi/cc/mmccs/TpNotificationMediaRequest:1.0 */
+
+static void decode_org_csapi_cc_mmccs_TpNotificationMediaRequest_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpNotificationMediaRequest_MediaStreamsRequested;
+ guint32 i_TpNotificationMediaRequest_MediaStreamsRequested;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_cc_TpCallNotificationScope" */
+
+
+
+ decode_org_csapi_cc_TpCallNotificationScope_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallNotificationScope" */
+
+ u_octet4_loop_TpNotificationMediaRequest_MediaStreamsRequested = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpNotificationMediaRequest_MediaStreamsRequested = %u",u_octet4_loop_TpNotificationMediaRequest_MediaStreamsRequested);
+ }
+
+ for (i_TpNotificationMediaRequest_MediaStreamsRequested=0; i_TpNotificationMediaRequest_MediaStreamsRequested < u_octet4_loop_TpNotificationMediaRequest_MediaStreamsRequested; i_TpNotificationMediaRequest_MediaStreamsRequested++) {
+
+ /* Begin struct "org_csapi_cc_mmccs_TpMediaStreamRequest" */
+
+
+
+ decode_org_csapi_cc_mmccs_TpMediaStreamRequest_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mmccs_TpMediaStreamRequest" */
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/mmccs/TpMediaNotificationRequested:1.0 */
+
+static void decode_org_csapi_cc_mmccs_TpMediaNotificationRequested_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_cc_mmccs_TpNotificationMediaRequest" */
+
+
+
+ decode_org_csapi_cc_mmccs_TpNotificationMediaRequest_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mmccs_TpNotificationMediaRequest" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMediaNotificationRequested_AssignmentID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/mmccs/TpMultiMediaCallIdentifier:1.0 */
+
+static void decode_org_csapi_cc_mmccs_TpMultiMediaCallIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMultiMediaCallIdentifier_MMCallSessionID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/mmccs/TpMultiMediaCallLegIdentifier:1.0 */
+
+static void decode_org_csapi_cc_mmccs_TpMultiMediaCallLegIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMultiMediaCallLegIdentifier_MMCallLegSessionID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/mmccs/TpAppMultiMediaCallLegCallBack:1.0 */
+
+static void decode_org_csapi_cc_mmccs_TpAppMultiMediaCallLegCallBack_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpAppMultiMediaCallLegCallBack_AppCallLegSet;
+ guint32 i_TpAppMultiMediaCallLegCallBack_AppCallLegSet;
+
+ /* Operation specific Variable declarations End */
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ u_octet4_loop_TpAppMultiMediaCallLegCallBack_AppCallLegSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpAppMultiMediaCallLegCallBack_AppCallLegSet = %u",u_octet4_loop_TpAppMultiMediaCallLegCallBack_AppCallLegSet);
+ }
+
+ for (i_TpAppMultiMediaCallLegCallBack_AppCallLegSet=0; i_TpAppMultiMediaCallLegCallBack_AppCallLegSet < u_octet4_loop_TpAppMultiMediaCallLegCallBack_AppCallLegSet; i_TpAppMultiMediaCallLegCallBack_AppCallLegSet++) {
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/cccs/TpMonoMediaConfPolicy:1.0 */
+
+static void decode_org_csapi_cc_cccs_TpMonoMediaConfPolicy_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpMonoMediaConfPolicy_JoinAllowed = %u",u_octet1);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/cccs/TpJoinEventInfo:1.0 */
+
+static void decode_org_csapi_cc_cccs_TpJoinEventInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpJoinEventInfo_CallAppInfo;
+ guint32 i_TpJoinEventInfo_CallAppInfo;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ u_octet4_loop_TpJoinEventInfo_CallAppInfo = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpJoinEventInfo_CallAppInfo = %u",u_octet4_loop_TpJoinEventInfo_CallAppInfo);
+ }
+
+ for (i_TpJoinEventInfo_CallAppInfo=0; i_TpJoinEventInfo_CallAppInfo < u_octet4_loop_TpJoinEventInfo_CallAppInfo; i_TpJoinEventInfo_CallAppInfo++) {
+
+ /* Begin union "org_csapi_cc_TpCallAppInfo" */
+
+
+ decode_org_csapi_cc_TpCallAppInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cc_TpCallAppInfo" */
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/cccs/TpConfSearchCriteria:1.0 */
+
+static void decode_org_csapi_cc_cccs_TpConfSearchCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpConfSearchCriteria_StartSearch (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpConfSearchCriteria_StopSearch (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpConfSearchCriteria_RequestedResources = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpConfSearchCriteria_RequestedDuration = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/cccs/TpConfSearchResult:1.0 */
+
+static void decode_org_csapi_cc_cccs_TpConfSearchResult_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint8 u_octet1;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpConfSearchResult_MatchFound = %u",u_octet1);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpConfSearchResult_ActualStartTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpConfSearchResult_ActualResources = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpConfSearchResult_ActualDuration = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/cccs/TpMultiMediaConfPolicy:1.0 */
+
+static void decode_org_csapi_cc_cccs_TpMultiMediaConfPolicy_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint8 u_octet1;
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpMultiMediaConfPolicy_JoinAllowed = %u",u_octet1);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMultiMediaConfPolicy_MediaAllowed = %i",s_octet4);
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpMultiMediaConfPolicy_Chaired = %u",u_octet1);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMultiMediaConfPolicy_VideoHandling = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_cccs_TpVideoHandlingType,"Unknown Enum Value"));
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/cccs/TpResourceReservation:1.0 */
+
+static void decode_org_csapi_cc_cccs_TpResourceReservation_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpResourceReservation_ReservationID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/cccs/TpConfCallIdentifier:1.0 */
+
+static void decode_org_csapi_cc_cccs_TpConfCallIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpConfCallIdentifier_ConfCallSessionID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cc/cccs/TpSubConfCallIdentifier:1.0 */
+
+static void decode_org_csapi_cc_cccs_TpSubConfCallIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpSubConfCallIdentifier_SubConfCallSessionID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/ui/TpUIIdentifier:1.0 */
+
+static void decode_org_csapi_ui_TpUIIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUIIdentifier_UserInteractionSessionID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/ui/TpUICallIdentifier:1.0 */
+
+static void decode_org_csapi_ui_TpUICallIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUICallIdentifier_UserInteractionSessionID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mm/TpLocationResponseTime:1.0 */
+
+static void decode_org_csapi_mm_TpLocationResponseTime_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpLocationResponseTime_ResponseTime = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpLocationResponseIndicator,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpLocationResponseTime_TimerValue = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mm/TpLocationTrigger:1.0 */
+
+static void decode_org_csapi_mm_TpLocationTrigger_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gfloat my_float;
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ my_float = get_CDR_float(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpLocationTrigger_Longitude = %.6e",my_float);
+ }
+
+ my_float = get_CDR_float(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpLocationTrigger_Latitude = %.6e",my_float);
+ }
+
+ my_float = get_CDR_float(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpLocationTrigger_AreaSemiMajor = %.6e",my_float);
+ }
+
+ my_float = get_CDR_float(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpLocationTrigger_AreaSemiMinor = %.6e",my_float);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpLocationTrigger_AngleOfSemiMajor = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpLocationTrigger_Criterion = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpLocationTriggerCriteria,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpLocationTrigger_ReportingInterval = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mm/TpLocationRequest:1.0 */
+
+static void decode_org_csapi_mm_TpLocationRequest_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gfloat my_float;
+ guint8 u_octet1;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ my_float = get_CDR_float(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpLocationRequest_RequestedAccuracy = %.6e",my_float);
+ }
+
+ /* Begin struct "org_csapi_mm_TpLocationResponseTime" */
+
+
+
+ decode_org_csapi_mm_TpLocationResponseTime_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpLocationResponseTime" */
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpLocationRequest_AltitudeRequested = %u",u_octet1);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpLocationRequest_Type = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpLocationType,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpLocationRequest_Priority = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpLocationPriority,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpLocationRequest_RequestedLocationMethod (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/mm/TpGeographicalPosition:1.0 */
+
+static void decode_org_csapi_mm_TpGeographicalPosition_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gfloat my_float;
+ guint32 u_octet4;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ my_float = get_CDR_float(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpGeographicalPosition_Longitude = %.6e",my_float);
+ }
+
+ my_float = get_CDR_float(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpGeographicalPosition_Latitude = %.6e",my_float);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpGeographicalPosition_TypeOfUncertaintyShape = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpLocationUncertaintyShape,"Unknown Enum Value"));
+ }
+
+ my_float = get_CDR_float(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpGeographicalPosition_UncertaintyInnerSemiMajor = %.6e",my_float);
+ }
+
+ my_float = get_CDR_float(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpGeographicalPosition_UncertaintyOuterSemiMajor = %.6e",my_float);
+ }
+
+ my_float = get_CDR_float(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpGeographicalPosition_UncertaintyInnerSemiMinor = %.6e",my_float);
+ }
+
+ my_float = get_CDR_float(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpGeographicalPosition_UncertaintyOuterSemiMinor = %.6e",my_float);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpGeographicalPosition_AngleOfSemiMajor = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpGeographicalPosition_SegmentStartAngle = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpGeographicalPosition_SegmentEndAngle = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mm/TpMobilityStopAssignmentData:1.0 */
+
+static void decode_org_csapi_mm_TpMobilityStopAssignmentData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ guint32 u_octet4_loop_TpMobilityStopAssignmentData_Users;
+ guint32 i_TpMobilityStopAssignmentData_Users;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMobilityStopAssignmentData_AssignmentId = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMobilityStopAssignmentData_StopScope = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityStopScope,"Unknown Enum Value"));
+ }
+
+ u_octet4_loop_TpMobilityStopAssignmentData_Users = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpMobilityStopAssignmentData_Users = %u",u_octet4_loop_TpMobilityStopAssignmentData_Users);
+ }
+
+ for (i_TpMobilityStopAssignmentData_Users=0; i_TpMobilityStopAssignmentData_Users < u_octet4_loop_TpMobilityStopAssignmentData_Users; i_TpMobilityStopAssignmentData_Users++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mm/TpUlExtendedData:1.0 */
+
+static void decode_org_csapi_mm_TpUlExtendedData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ guint8 u_octet1;
+ gfloat my_float;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_mm_TpGeographicalPosition" */
+
+
+
+ decode_org_csapi_mm_TpGeographicalPosition_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpGeographicalPosition" */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUlExtendedData_TerminalType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpTerminalType,"Unknown Enum Value"));
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpUlExtendedData_AltitudePresent = %u",u_octet1);
+ }
+
+ my_float = get_CDR_float(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUlExtendedData_Altitude = %.6e",my_float);
+ }
+
+ my_float = get_CDR_float(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUlExtendedData_UncertaintyAltitude = %.6e",my_float);
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpUlExtendedData_TimestampPresent = %u",u_octet1);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUlExtendedData_Timestamp (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUlExtendedData_UsedLocationMethod (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/mm/TpUserLocation:1.0 */
+
+static void decode_org_csapi_mm_TpUserLocation_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUserLocation_StatusCode = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityError,"Unknown Enum Value"));
+ }
+
+ /* Begin struct "org_csapi_mm_TpGeographicalPosition" */
+
+
+
+ decode_org_csapi_mm_TpGeographicalPosition_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpGeographicalPosition" */
+
+}
+
+/* Struct = IDL:org/csapi/mm/TpUserLocationExtended:1.0 */
+
+static void decode_org_csapi_mm_TpUserLocationExtended_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ guint32 u_octet4_loop_TpUserLocationExtended_Locations;
+ guint32 i_TpUserLocationExtended_Locations;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUserLocationExtended_StatusCode = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityError,"Unknown Enum Value"));
+ }
+
+ u_octet4_loop_TpUserLocationExtended_Locations = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpUserLocationExtended_Locations = %u",u_octet4_loop_TpUserLocationExtended_Locations);
+ }
+
+ for (i_TpUserLocationExtended_Locations=0; i_TpUserLocationExtended_Locations < u_octet4_loop_TpUserLocationExtended_Locations; i_TpUserLocationExtended_Locations++) {
+
+ /* Begin struct "org_csapi_mm_TpUlExtendedData" */
+
+
+
+ decode_org_csapi_mm_TpUlExtendedData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpUlExtendedData" */
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mm/TpLocationTriggerCamel:1.0 */
+
+static void decode_org_csapi_mm_TpLocationTriggerCamel_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpLocationTriggerCamel_UpdateInsideVlr = %u",u_octet1);
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpLocationTriggerCamel_UpdateOutsideVlr = %u",u_octet1);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mm/TpUserLocationCamel:1.0 */
+
+static void decode_org_csapi_mm_TpUserLocationCamel_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ guint8 u_octet1;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUserLocationCamel_StatusCode = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityError,"Unknown Enum Value"));
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpUserLocationCamel_GeographicalPositionPresent = %u",u_octet1);
+ }
+
+ /* Begin struct "org_csapi_mm_TpGeographicalPosition" */
+
+
+
+ decode_org_csapi_mm_TpGeographicalPosition_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpGeographicalPosition" */
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpUserLocationCamel_TimestampPresent = %u",u_octet1);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUserLocationCamel_Timestamp (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpUserLocationCamel_VlrNumberPresent = %u",u_octet1);
+ }
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpUserLocationCamel_LocationNumberPresent = %u",u_octet1);
+ }
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpUserLocationCamel_CellIdOrLaiPresent = %u",u_octet1);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUserLocationCamel_CellIdOrLai (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/mm/TpUserLocationEmergencyRequest:1.0 */
+
+static void decode_org_csapi_mm_TpUserLocationEmergencyRequest_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint8 u_octet1;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpUserLocationEmergencyRequest_UserAddressPresent = %u",u_octet1);
+ }
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpUserLocationEmergencyRequest_NaEsrdPresent = %u",u_octet1);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUserLocationEmergencyRequest_NaEsrd (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpUserLocationEmergencyRequest_NaEsrkPresent = %u",u_octet1);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUserLocationEmergencyRequest_NaEsrk (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpUserLocationEmergencyRequest_ImeiPresent = %u",u_octet1);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUserLocationEmergencyRequest_Imei (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin struct "org_csapi_mm_TpLocationRequest" */
+
+
+
+ decode_org_csapi_mm_TpLocationRequest_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpLocationRequest" */
+
+}
+
+/* Struct = IDL:org/csapi/mm/TpUserLocationEmergency:1.0 */
+
+static void decode_org_csapi_mm_TpUserLocationEmergency_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ guint8 u_octet1;
+ gchar *seq = NULL;
+ gfloat my_float;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUserLocationEmergency_StatusCode = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityError,"Unknown Enum Value"));
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpUserLocationEmergency_UserIdPresent = %u",u_octet1);
+ }
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpUserLocationEmergency_NaEsrdPresent = %u",u_octet1);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUserLocationEmergency_NaEsrd (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpUserLocationEmergency_NaEsrkPresent = %u",u_octet1);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUserLocationEmergency_NaEsrk (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpUserLocationEmergency_ImeiPresent = %u",u_octet1);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUserLocationEmergency_Imei (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUserLocationEmergency_TriggeringEvent = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpUserLocationEmergencyTrigger,"Unknown Enum Value"));
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpUserLocationEmergency_GeographicalPositionPresent = %u",u_octet1);
+ }
+
+ /* Begin struct "org_csapi_mm_TpGeographicalPosition" */
+
+
+
+ decode_org_csapi_mm_TpGeographicalPosition_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpGeographicalPosition" */
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpUserLocationEmergency_AltitudePresent = %u",u_octet1);
+ }
+
+ my_float = get_CDR_float(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUserLocationEmergency_Altitude = %.6e",my_float);
+ }
+
+ my_float = get_CDR_float(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUserLocationEmergency_UncertaintyAltitude = %.6e",my_float);
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpUserLocationEmergency_TimestampPresent = %u",u_octet1);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUserLocationEmergency_Timestamp (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUserLocationEmergency_UsedLocationMethod (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/mm/TpUserStatus:1.0 */
+
+static void decode_org_csapi_mm_TpUserStatus_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUserStatus_StatusCode = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityError,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUserStatus_Status = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpUserStatusIndicator,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUserStatus_TerminalType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpTerminalType,"Unknown Enum Value"));
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mm/TpTriggeredStatusRequest:1.0 */
+
+static void decode_org_csapi_mm_TpTriggeredStatusRequest_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpTriggeredStatusRequest_Users;
+ guint32 i_TpTriggeredStatusRequest_Users;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpTriggeredStatusRequest_Users = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpTriggeredStatusRequest_Users = %u",u_octet4_loop_TpTriggeredStatusRequest_Users);
+ }
+
+ for (i_TpTriggeredStatusRequest_Users=0; i_TpTriggeredStatusRequest_Users < u_octet4_loop_TpTriggeredStatusRequest_Users; i_TpTriggeredStatusRequest_Users++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpTriggeredStatusRequest_AssignmentID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mm/TpTriggeredStatusRequestSetEntry:1.0 */
+
+static void decode_org_csapi_mm_TpTriggeredStatusRequestSetEntry_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpTriggeredStatusRequestSetEntry_Requests;
+ guint32 i_TpTriggeredStatusRequestSetEntry_Requests;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpTriggeredStatusRequestSetEntry_Requests = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpTriggeredStatusRequestSetEntry_Requests = %u",u_octet4_loop_TpTriggeredStatusRequestSetEntry_Requests);
+ }
+
+ for (i_TpTriggeredStatusRequestSetEntry_Requests=0; i_TpTriggeredStatusRequestSetEntry_Requests < u_octet4_loop_TpTriggeredStatusRequestSetEntry_Requests; i_TpTriggeredStatusRequestSetEntry_Requests++) {
+
+ /* Begin struct "org_csapi_mm_TpTriggeredStatusRequest" */
+
+
+
+ decode_org_csapi_mm_TpTriggeredStatusRequest_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpTriggeredStatusRequest" */
+
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpTriggeredStatusRequestSetEntry_Final = %u",u_octet1);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mm/TpPeriodicLocationRequest:1.0 */
+
+static void decode_org_csapi_mm_TpPeriodicLocationRequest_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpPeriodicLocationRequest_Users;
+ guint32 i_TpPeriodicLocationRequest_Users;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpPeriodicLocationRequest_Users = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPeriodicLocationRequest_Users = %u",u_octet4_loop_TpPeriodicLocationRequest_Users);
+ }
+
+ for (i_TpPeriodicLocationRequest_Users=0; i_TpPeriodicLocationRequest_Users < u_octet4_loop_TpPeriodicLocationRequest_Users; i_TpPeriodicLocationRequest_Users++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ /* Begin struct "org_csapi_mm_TpLocationRequest" */
+
+
+
+ decode_org_csapi_mm_TpLocationRequest_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpLocationRequest" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpPeriodicLocationRequest_ReportingInterval = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpPeriodicLocationRequest_AssignmentID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mm/TpPeriodicLocationRequestSetEntry:1.0 */
+
+static void decode_org_csapi_mm_TpPeriodicLocationRequestSetEntry_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpPeriodicLocationRequestSetEntry_Requests;
+ guint32 i_TpPeriodicLocationRequestSetEntry_Requests;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpPeriodicLocationRequestSetEntry_Requests = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPeriodicLocationRequestSetEntry_Requests = %u",u_octet4_loop_TpPeriodicLocationRequestSetEntry_Requests);
+ }
+
+ for (i_TpPeriodicLocationRequestSetEntry_Requests=0; i_TpPeriodicLocationRequestSetEntry_Requests < u_octet4_loop_TpPeriodicLocationRequestSetEntry_Requests; i_TpPeriodicLocationRequestSetEntry_Requests++) {
+
+ /* Begin struct "org_csapi_mm_TpPeriodicLocationRequest" */
+
+
+
+ decode_org_csapi_mm_TpPeriodicLocationRequest_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpPeriodicLocationRequest" */
+
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpPeriodicLocationRequestSetEntry_Final = %u",u_octet1);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mm/TpTriggeredLocationRequest:1.0 */
+
+static void decode_org_csapi_mm_TpTriggeredLocationRequest_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpTriggeredLocationRequest_Users;
+ guint32 i_TpTriggeredLocationRequest_Users;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpTriggeredLocationRequest_Users = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpTriggeredLocationRequest_Users = %u",u_octet4_loop_TpTriggeredLocationRequest_Users);
+ }
+
+ for (i_TpTriggeredLocationRequest_Users=0; i_TpTriggeredLocationRequest_Users < u_octet4_loop_TpTriggeredLocationRequest_Users; i_TpTriggeredLocationRequest_Users++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ /* Begin struct "org_csapi_mm_TpLocationRequest" */
+
+
+
+ decode_org_csapi_mm_TpLocationRequest_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpLocationRequest" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpTriggeredLocationRequest_AssignmentID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mm/TpTriggeredLocationRequestSetEntry:1.0 */
+
+static void decode_org_csapi_mm_TpTriggeredLocationRequestSetEntry_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpTriggeredLocationRequestSetEntry_Requests;
+ guint32 i_TpTriggeredLocationRequestSetEntry_Requests;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpTriggeredLocationRequestSetEntry_Requests = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpTriggeredLocationRequestSetEntry_Requests = %u",u_octet4_loop_TpTriggeredLocationRequestSetEntry_Requests);
+ }
+
+ for (i_TpTriggeredLocationRequestSetEntry_Requests=0; i_TpTriggeredLocationRequestSetEntry_Requests < u_octet4_loop_TpTriggeredLocationRequestSetEntry_Requests; i_TpTriggeredLocationRequestSetEntry_Requests++) {
+
+ /* Begin struct "org_csapi_mm_TpTriggeredLocationRequest" */
+
+
+
+ decode_org_csapi_mm_TpTriggeredLocationRequest_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpTriggeredLocationRequest" */
+
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpTriggeredLocationRequestSetEntry_Final = %u",u_octet1);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mm/TpUserStatusIndicatorExtended:1.0 */
+
+static void decode_org_csapi_mm_TpUserStatusIndicatorExtended_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUserStatusIndicatorExtended_UserStatusIndicator = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpUserStatusIndicator,"Unknown Enum Value"));
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpUserStatusIndicatorExtended_PDPContextActive = %u",u_octet1);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mm/TpUserInfo:1.0 */
+
+static void decode_org_csapi_mm_TpUserInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUserInfo_UserName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUserInfo_Password (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/mm/TpNetworkStatusIndicator:1.0 */
+
+static void decode_org_csapi_mm_TpNetworkStatusIndicator_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpNetworkStatusIndicator_CountryCode (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpNetworkStatusIndicator_MobileNetworkCode (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpNetworkStatusIndicator_AccessTechnology = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpAccessTechnology,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpNetworkStatusIndicator_RoamingStatus = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpRoamingStatus,"Unknown Enum Value"));
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mm/TpUserStatusExtended:1.0 */
+
+static void decode_org_csapi_mm_TpUserStatusExtended_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUserStatusExtended_UserID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUserStatusExtended_StatusCode = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpMobilityError,"Unknown Enum Value"));
+ }
+
+ /* Begin struct "org_csapi_mm_TpUserStatusIndicatorExtended" */
+
+
+
+ decode_org_csapi_mm_TpUserStatusIndicatorExtended_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpUserStatusIndicatorExtended" */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUserStatusExtended_TerminalType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpTerminalType,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUserStatusExtended_AuthenticationStatus = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpAuthStatusIndicator,"Unknown Enum Value"));
+ }
+
+ /* Begin struct "org_csapi_mm_TpNetworkStatusIndicator" */
+
+
+
+ decode_org_csapi_mm_TpNetworkStatusIndicator_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpNetworkStatusIndicator" */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUserStatusExtended_UserIPAddress (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUserStatusExtended_UserMSISDN (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin struct "org_csapi_mm_TpUserInfo" */
+
+
+
+ decode_org_csapi_mm_TpUserInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mm_TpUserInfo" */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUserStatusExtended_UserConnectionID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpUserStatusExtended_AccessPointName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/mm/TpBindingNotificationCriteria:1.0 */
+
+static void decode_org_csapi_mm_TpBindingNotificationCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_TpBindingNotificationCriteria_ContactAddressSet;
+ guint32 i_TpBindingNotificationCriteria_ContactAddressSet;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpBindingNotificationCriteria_NotificationCriteriaType = %i",s_octet4);
+ }
+
+ u_octet4_loop_TpBindingNotificationCriteria_ContactAddressSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpBindingNotificationCriteria_ContactAddressSet = %u",u_octet4_loop_TpBindingNotificationCriteria_ContactAddressSet);
+ }
+
+ for (i_TpBindingNotificationCriteria_ContactAddressSet=0; i_TpBindingNotificationCriteria_ContactAddressSet < u_octet4_loop_TpBindingNotificationCriteria_ContactAddressSet; i_TpBindingNotificationCriteria_ContactAddressSet++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/termcap/TpTerminalCapabilities:1.0 */
+
+static void decode_org_csapi_termcap_TpTerminalCapabilities_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpTerminalCapabilities_TerminalCapabilities (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpTerminalCapabilities_StatusCode = %u",u_octet1);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/termcap/TpTerminalCapabilityScope:1.0 */
+
+static void decode_org_csapi_termcap_TpTerminalCapabilityScope_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpTerminalCapabilityScope_ScopeType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_termcap_TpTerminalCapabilityScopeType,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpTerminalCapabilityScope_Scope (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/dsc/TpChargePerVolume:1.0 */
+
+static void decode_org_csapi_dsc_TpChargePerVolume_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpChargePerVolume_InitialCharge = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpChargePerVolume_CurrentChargePerKilobyte = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpChargePerVolume_NextChargePerKilobyte = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/dsc/TpDataSessionChargePlan:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionChargePlan_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin union "org_csapi_dsc_TpDataSessionChargeOrder" */
+
+
+ decode_org_csapi_dsc_TpDataSessionChargeOrder_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_dsc_TpDataSessionChargeOrder" */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpDataSessionChargePlan_Currency (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpDataSessionChargePlan_AdditionalInfo (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/dsc/TpDataSessionError:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionError_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpDataSessionError_ErrorTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpDataSessionError_ErrorType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_dsc_TpDataSessionErrorType,"Unknown Enum Value"));
+ }
+
+ /* Begin union "org_csapi_dsc_TpDataSessionAdditionalErrorInfo" */
+
+
+ decode_org_csapi_dsc_TpDataSessionAdditionalErrorInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_dsc_TpDataSessionAdditionalErrorInfo" */
+
+}
+
+/* Struct = IDL:org/csapi/dsc/TpDataSessionEventCriteria:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionEventCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_TpAddressRange" */
+
+
+
+ decode_org_csapi_TpAddressRange_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddressRange" */
+
+ /* Begin struct "org_csapi_TpAddressRange" */
+
+
+
+ decode_org_csapi_TpAddressRange_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddressRange" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpDataSessionEventCriteria_DataSessionEventName = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpDataSessionEventCriteria_MonitorMode = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_dsc_TpDataSessionMonitorMode,"Unknown Enum Value"));
+ }
+
+}
+
+/* Struct = IDL:org/csapi/dsc/TpDataSessionEventInfo:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionEventInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpDataSessionEventInfo_DataSessionEventName = %i",s_octet4);
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpDataSessionEventInfo_MonitorMode = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_dsc_TpDataSessionMonitorMode,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpDataSessionEventInfo_QoSClass = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_TpDataSessionQosClass,"Unknown Enum Value"));
+ }
+
+}
+
+/* Struct = IDL:org/csapi/dsc/TpDataSessionReleaseCause:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionReleaseCause_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpDataSessionReleaseCause_Value = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpDataSessionReleaseCause_Location = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/dsc/TpDataSessionReport:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionReport_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpDataSessionReport_MonitorMode = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_dsc_TpDataSessionMonitorMode,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpDataSessionReport_DataSessionEventTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpDataSessionReport_DataSessionReportType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_dsc_TpDataSessionReportType,"Unknown Enum Value"));
+ }
+
+ /* Begin union "org_csapi_dsc_TpDataSessionAdditionalReportInfo" */
+
+
+ decode_org_csapi_dsc_TpDataSessionAdditionalReportInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_dsc_TpDataSessionAdditionalReportInfo" */
+
+}
+
+/* Struct = IDL:org/csapi/dsc/TpDataSessionReportRequest:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionReportRequest_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpDataSessionReportRequest_MonitorMode = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_dsc_TpDataSessionMonitorMode,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpDataSessionReportRequest_DataSessionReportType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_dsc_TpDataSessionReportType,"Unknown Enum Value"));
+ }
+
+}
+
+/* Struct = IDL:org/csapi/dsc/TpDataSessionSuperviseVolume:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionSuperviseVolume_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpDataSessionSuperviseVolume_VolumeQuantity = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpDataSessionSuperviseVolume_VolumeUnit = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/dsc/TpDataSessionEventCriteriaResult:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionEventCriteriaResult_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_dsc_TpDataSessionEventCriteria" */
+
+
+
+ decode_org_csapi_dsc_TpDataSessionEventCriteria_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_dsc_TpDataSessionEventCriteria" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpDataSessionEventCriteriaResult_AssignmentID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/dsc/TpDataSessionIdentifier:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpDataSessionIdentifier_DataSessionID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/gms/TpGMSNewMessageArrivedInfo:1.0 */
+
+static void decode_org_csapi_gms_TpGMSNewMessageArrivedInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpGMSNewMessageArrivedInfo_FolderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpGMSNewMessageArrivedInfo_MessageID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpGMSNewMessageArrivedInfo_NumberOfProperties = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/gms/TpGMSNewMessageArrivedCriteria:1.0 */
+
+static void decode_org_csapi_gms_TpGMSNewMessageArrivedCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpGMSNewMessageArrivedCriteria_AuthenticationInfo (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/gms/TpMailboxIdentifier:1.0 */
+
+static void decode_org_csapi_gms_TpMailboxIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMailboxIdentifier_SessionID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/gms/TpMailboxFolderIdentifier:1.0 */
+
+static void decode_org_csapi_gms_TpMailboxFolderIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMailboxFolderIdentifier_SessionID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cm/TpNameDescrpTagTimePeriod:1.0 */
+
+static void decode_org_csapi_cm_TpNameDescrpTagTimePeriod_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpNameDescrpTagTimePeriod_duration = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cm/TpNameDescrpTagTimeOfDay:1.0 */
+
+static void decode_org_csapi_cm_TpNameDescrpTagTimeOfDay_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpNameDescrpTagTimeOfDay_name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpNameDescrpTagTimeOfDay_description (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpNameDescrpTagTimeOfDay_tag = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cm_TpTagValue,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpNameDescrpTagTimeOfDay_value (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/cm/TpNameDescrpTagString:1.0 */
+
+static void decode_org_csapi_cm_TpNameDescrpTagString_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpNameDescrpTagString_name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpNameDescrpTagString_description (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpNameDescrpTagString_tag = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cm_TpTagValue,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpNameDescrpTagString_value (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/cm/TpNameDescrpTagMonth:1.0 */
+
+static void decode_org_csapi_cm_TpNameDescrpTagMonth_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpNameDescrpTagMonth_name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpNameDescrpTagMonth_description (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpNameDescrpTagMonth_tag = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cm_TpTagValue,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpNameDescrpTagMonth_value = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cm/TpNameDescrpTagInt:1.0 */
+
+static void decode_org_csapi_cm_TpNameDescrpTagInt_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpNameDescrpTagInt_name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpNameDescrpTagInt_description (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpNameDescrpTagInt_tag = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cm_TpTagValue,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpNameDescrpTagInt_value = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cm/TpNameDescrpTagDir:1.0 */
+
+static void decode_org_csapi_cm_TpNameDescrpTagDir_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpNameDescrpTagDir_name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpNameDescrpTagDir_description (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpNameDescrpTagDir_tag = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cm_TpTagValue,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpNameDescrpTagDir_value = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cm_TpTrafficDirection,"Unknown Enum Value"));
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cm/TpNameDescrpTagDayOfWeek:1.0 */
+
+static void decode_org_csapi_cm_TpNameDescrpTagDayOfWeek_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpNameDescrpTagDayOfWeek_name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpNameDescrpTagDayOfWeek_description (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpNameDescrpTagDayOfWeek_tag = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cm_TpTagValue,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpNameDescrpTagDayOfWeek_value = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cm/TpNameDescrpTagDateTime:1.0 */
+
+static void decode_org_csapi_cm_TpNameDescrpTagDateTime_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpNameDescrpTagDateTime_name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpNameDescrpTagDateTime_description (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpNameDescrpTagDateTime_tag = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cm_TpTagValue,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpNameDescrpTagDateTime_value (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/cm/TpLossDescriptor:1.0 */
+
+static void decode_org_csapi_cm_TpLossDescriptor_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagInt_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagInt_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagInt_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagInt_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagInt_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagString" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagString_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagString" */
+
+}
+
+/* Struct = IDL:org/csapi/cm/TpLoadDescriptor:1.0 */
+
+static void decode_org_csapi_cm_TpLoadDescriptor_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagInt_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagInt_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagInt_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagInt_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagInt_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagInt_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagInt_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagString" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagString_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagString" */
+
+}
+
+/* Struct = IDL:org/csapi/cm/TpJitterDescriptor:1.0 */
+
+static void decode_org_csapi_cm_TpJitterDescriptor_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagInt_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagInt_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagInt_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagInt_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagInt_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagString" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagString_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagString" */
+
+}
+
+/* Struct = IDL:org/csapi/cm/TpEndpoint:1.0 */
+
+static void decode_org_csapi_cm_TpEndpoint_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpEndpoint_type = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cm_TpSiteOrSap,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpEndpoint_id (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/cm/TpDelayDescriptor:1.0 */
+
+static void decode_org_csapi_cm_TpDelayDescriptor_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagInt_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagInt_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagInt_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagInt_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagInt_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagInt" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagString" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagString_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagString" */
+
+}
+
+/* Struct = IDL:org/csapi/cm/TpNameDescrpTagExcessLoadAction:1.0 */
+
+static void decode_org_csapi_cm_TpNameDescrpTagExcessLoadAction_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpNameDescrpTagExcessLoadAction_name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpNameDescrpTagExcessLoadAction_description (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpNameDescrpTagExcessLoadAction_tag = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cm_TpTagValue,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpNameDescrpTagExcessLoadAction_value = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cm_TpAction,"Unknown Enum Value"));
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cm/TpValidityInfo:1.0 */
+
+static void decode_org_csapi_cm_TpValidityInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagDateTime" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagDateTime_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagDateTime" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagTimePeriod" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagTimePeriod_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagTimePeriod" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagTimeOfDay" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagTimeOfDay_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagTimeOfDay" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagTimePeriod" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagTimePeriod_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagTimePeriod" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagDayOfWeek" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagDayOfWeek_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagDayOfWeek" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagMonth" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagMonth_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagMonth" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagString" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagString_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagString" */
+
+}
+
+/* Struct = IDL:org/csapi/cm/TpProvisionedQoSInfo:1.0 */
+
+static void decode_org_csapi_cm_TpProvisionedQoSInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_cm_TpDelayDescriptor" */
+
+
+
+ decode_org_csapi_cm_TpDelayDescriptor_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpDelayDescriptor" */
+
+ /* Begin struct "org_csapi_cm_TpLossDescriptor" */
+
+
+
+ decode_org_csapi_cm_TpLossDescriptor_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpLossDescriptor" */
+
+ /* Begin struct "org_csapi_cm_TpJitterDescriptor" */
+
+
+
+ decode_org_csapi_cm_TpJitterDescriptor_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpJitterDescriptor" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagExcessLoadAction" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagExcessLoadAction_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagExcessLoadAction" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagString" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagString_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagString" */
+
+}
+
+/* Struct = IDL:org/csapi/cm/TpPipeQoSInfo:1.0 */
+
+static void decode_org_csapi_cm_TpPipeQoSInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagDir" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagDir_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagDir" */
+
+ /* Begin struct "org_csapi_cm_TpEndpoint" */
+
+
+
+ decode_org_csapi_cm_TpEndpoint_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpEndpoint" */
+
+ /* Begin struct "org_csapi_cm_TpEndpoint" */
+
+
+
+ decode_org_csapi_cm_TpEndpoint_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpEndpoint" */
+
+ /* Begin struct "org_csapi_cm_TpLoadDescriptor" */
+
+
+
+ decode_org_csapi_cm_TpLoadDescriptor_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpLoadDescriptor" */
+
+ /* Begin struct "org_csapi_cm_TpLoadDescriptor" */
+
+
+
+ decode_org_csapi_cm_TpLoadDescriptor_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpLoadDescriptor" */
+
+ /* Begin struct "org_csapi_cm_TpNameDescrpTagString" */
+
+
+
+ decode_org_csapi_cm_TpNameDescrpTagString_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cm_TpNameDescrpTagString" */
+
+}
+
+/* Struct = IDL:org/csapi/cm/TpDsCodepoint:1.0 */
+
+static void decode_org_csapi_cm_TpDsCodepoint_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpDsCodepoint_match (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpDsCodepoint_mask (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/cm/TpIPSubnet:1.0 */
+
+static void decode_org_csapi_cm_TpIPSubnet_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpIPSubnet_subnetNumber (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpIPSubnet_subnetMask (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpIPSubnet_addressType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cm_TpIPv4AddType,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpIPSubnet_IPVersionSupport = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cm_TpIPVersion,"Unknown Enum Value"));
+ }
+
+}
+
+/* Struct = IDL:org/csapi/am/TpBalanceInfo:1.0 */
+
+static void decode_org_csapi_am_TpBalanceInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpBalanceInfo_Currency (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpBalanceInfo_ValuePartA = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpBalanceInfo_ValuePartB = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpBalanceInfo_Exponent = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpBalanceInfo_AdditionalInfo (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/am/TpChargingEventInfo:1.0 */
+
+static void decode_org_csapi_am_TpChargingEventInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpChargingEventInfo_ChargingEventName = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_am_TpChargingEventName,"Unknown Enum Value"));
+ }
+
+ /* Begin struct "org_csapi_am_TpBalanceInfo" */
+
+
+
+ decode_org_csapi_am_TpBalanceInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_am_TpBalanceInfo" */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpChargingEventInfo_ChargingEventTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/am/TpBalance:1.0 */
+
+static void decode_org_csapi_am_TpBalance_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpBalance_StatusCode = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_am_TpBalanceQueryError,"Unknown Enum Value"));
+ }
+
+ /* Begin struct "org_csapi_am_TpBalanceInfo" */
+
+
+
+ decode_org_csapi_am_TpBalanceInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_am_TpBalanceInfo" */
+
+}
+
+/* Struct = IDL:org/csapi/am/TpTransactionHistory:1.0 */
+
+static void decode_org_csapi_am_TpTransactionHistory_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpTransactionHistory_TransactionID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpTransactionHistory_TimeStamp (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpTransactionHistory_AdditionalInfo (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/am/TpChargingEventCriteria:1.0 */
+
+static void decode_org_csapi_am_TpChargingEventCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpChargingEventCriteria_ChargingEvents;
+ guint32 i_TpChargingEventCriteria_ChargingEvents;
+ guint32 u_octet4;
+ guint32 u_octet4_loop_TpChargingEventCriteria_Users;
+ guint32 i_TpChargingEventCriteria_Users;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpChargingEventCriteria_ChargingEvents = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpChargingEventCriteria_ChargingEvents = %u",u_octet4_loop_TpChargingEventCriteria_ChargingEvents);
+ }
+
+ for (i_TpChargingEventCriteria_ChargingEvents=0; i_TpChargingEventCriteria_ChargingEvents < u_octet4_loop_TpChargingEventCriteria_ChargingEvents; i_TpChargingEventCriteria_ChargingEvents++) {
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpChargingEventCriteria_ChargingEvents = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_am_TpChargingEventName,"Unknown Enum Value"));
+ }
+
+ }
+
+ u_octet4_loop_TpChargingEventCriteria_Users = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpChargingEventCriteria_Users = %u",u_octet4_loop_TpChargingEventCriteria_Users);
+ }
+
+ for (i_TpChargingEventCriteria_Users=0; i_TpChargingEventCriteria_Users < u_octet4_loop_TpChargingEventCriteria_Users; i_TpChargingEventCriteria_Users++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/am/TpChargingEventCriteriaResult:1.0 */
+
+static void decode_org_csapi_am_TpChargingEventCriteriaResult_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_am_TpChargingEventCriteria" */
+
+
+
+ decode_org_csapi_am_TpChargingEventCriteria_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_am_TpChargingEventCriteria" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpChargingEventCriteriaResult_AssignmentID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/am/TpBalanceExpiryDate:1.0 */
+
+static void decode_org_csapi_am_TpBalanceExpiryDate_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpBalanceExpiryDate_StatusCode = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_am_TpBalanceQueryError,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpBalanceExpiryDate_ExpiryDate (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/am/TpVoucher:1.0 */
+
+static void decode_org_csapi_am_TpVoucher_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpVoucher_VoucherID = %i",s_octet4);
+ }
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ /* Begin struct "org_csapi_am_TpBalanceInfo" */
+
+
+
+ decode_org_csapi_am_TpBalanceInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_am_TpBalanceInfo" */
+
+}
+
+/* Struct = IDL:org/csapi/cs/TpMerchantAccountID:1.0 */
+
+static void decode_org_csapi_cs_TpMerchantAccountID_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpMerchantAccountID_MerchantID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMerchantAccountID_AccountID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cs/TpCorrelationID:1.0 */
+
+static void decode_org_csapi_cs_TpCorrelationID_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCorrelationID_CorrelationID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCorrelationID_CorrelationType = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cs/TpAmount:1.0 */
+
+static void decode_org_csapi_cs_TpAmount_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAmount_Number = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAmount_Exponent = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cs/TpChargingPrice:1.0 */
+
+static void decode_org_csapi_cs_TpChargingPrice_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpChargingPrice_Currency (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin struct "org_csapi_cs_TpAmount" */
+
+
+
+ decode_org_csapi_cs_TpAmount_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpAmount" */
+
+}
+
+/* Struct = IDL:org/csapi/cs/TpVolume:1.0 */
+
+static void decode_org_csapi_cs_TpVolume_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_cs_TpAmount" */
+
+
+
+ decode_org_csapi_cs_TpAmount_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpAmount" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpVolume_Unit = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cs/TpChargingSessionID:1.0 */
+
+static void decode_org_csapi_cs_TpChargingSessionID_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpChargingSessionID_ChargingSessionID = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpChargingSessionID_RequestNumberFirstRequest = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cs/TpPriceVolume:1.0 */
+
+static void decode_org_csapi_cs_TpPriceVolume_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_cs_TpChargingPrice" */
+
+
+
+ decode_org_csapi_cs_TpChargingPrice_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpChargingPrice" */
+
+ /* Begin struct "org_csapi_cs_TpVolume" */
+
+
+
+ decode_org_csapi_cs_TpVolume_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cs_TpVolume" */
+
+}
+
+/* Struct = IDL:org/csapi/cs/TpApplicationDescription:1.0 */
+
+static void decode_org_csapi_cs_TpApplicationDescription_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpApplicationDescription_AppInformation;
+ guint32 i_TpApplicationDescription_AppInformation;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpApplicationDescription_Text (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_TpApplicationDescription_AppInformation = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpApplicationDescription_AppInformation = %u",u_octet4_loop_TpApplicationDescription_AppInformation);
+ }
+
+ for (i_TpApplicationDescription_AppInformation=0; i_TpApplicationDescription_AppInformation < u_octet4_loop_TpApplicationDescription_AppInformation; i_TpApplicationDescription_AppInformation++) {
+
+ /* Begin union "org_csapi_cs_TpAppInformation" */
+
+
+ decode_org_csapi_cs_TpAppInformation_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cs_TpAppInformation" */
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/cs/TpChargingParameter:1.0 */
+
+static void decode_org_csapi_cs_TpChargingParameter_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpChargingParameter_ParameterID = %i",s_octet4);
+ }
+
+ /* Begin union "org_csapi_cs_TpChargingParameterValue" */
+
+
+ decode_org_csapi_cs_TpChargingParameterValue_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_cs_TpChargingParameterValue" */
+
+}
+
+/* Struct = IDL:org/csapi/policy/TpPolicyEvent:1.0 */
+
+static void decode_org_csapi_policy_TpPolicyEvent_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpPolicyEvent_Attributes;
+ guint32 i_TpPolicyEvent_Attributes;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpPolicyEvent_EventID = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPolicyEvent_TimeGenerated (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_TpPolicyEvent_Attributes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPolicyEvent_Attributes = %u",u_octet4_loop_TpPolicyEvent_Attributes);
+ }
+
+ for (i_TpPolicyEvent_Attributes=0; i_TpPolicyEvent_Attributes < u_octet4_loop_TpPolicyEvent_Attributes; i_TpPolicyEvent_Attributes++) {
+
+ /* Begin struct "org_csapi_TpAttribute" */
+
+
+
+ decode_org_csapi_TpAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAttribute" */
+
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPolicyEvent_EventDefinitionName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPolicyEvent_EventDomainName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/policy/TpPolicyNameValue:1.0 */
+
+static void decode_org_csapi_policy_TpPolicyNameValue_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPolicyNameValue_Name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ get_CDR_any(tvb,tree,offset,stream_is_big_endian, boundary, header);
+
+}
+
+/* Struct = IDL:org/csapi/policy/TpPolicyType/TpPolicyRecordType:1.0 */
+
+static void decode_org_csapi_policy_TpPolicyType_TpPolicyRecordType_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpPolicyRecordType_Names;
+ guint32 i_TpPolicyRecordType_Names;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpPolicyRecordType_Types;
+ guint32 i_TpPolicyRecordType_Types;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpPolicyRecordType_Names = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPolicyRecordType_Names = %u",u_octet4_loop_TpPolicyRecordType_Names);
+ }
+
+ for (i_TpPolicyRecordType_Names=0; i_TpPolicyRecordType_Names < u_octet4_loop_TpPolicyRecordType_Names; i_TpPolicyRecordType_Names++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPolicyRecordType_Names (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_TpPolicyRecordType_Types = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPolicyRecordType_Types = %u",u_octet4_loop_TpPolicyRecordType_Types);
+ }
+
+ for (i_TpPolicyRecordType_Types=0; i_TpPolicyRecordType_Types < u_octet4_loop_TpPolicyRecordType_Types; i_TpPolicyRecordType_Types++) {
+
+ /* Begin union "org_csapi_policy_TpPolicyType" */
+
+
+ decode_org_csapi_policy_TpPolicyType_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_policy_TpPolicyType" */
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/policy/TpPolicyType/TpPolicyListType:1.0 */
+
+static void decode_org_csapi_policy_TpPolicyType_TpPolicyListType_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpPolicyListType_ElementType;
+ guint32 i_TpPolicyListType_ElementType;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpPolicyListType_ElementType = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPolicyListType_ElementType = %u",u_octet4_loop_TpPolicyListType_ElementType);
+ }
+
+ for (i_TpPolicyListType_ElementType=0; i_TpPolicyListType_ElementType < u_octet4_loop_TpPolicyListType_ElementType; i_TpPolicyListType_ElementType++) {
+
+ /* Begin union "org_csapi_policy_TpPolicyType" */
+
+
+ decode_org_csapi_policy_TpPolicyType_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_policy_TpPolicyType" */
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/policy/TpPolicyVar:1.0 */
+
+static void decode_org_csapi_policy_TpPolicyVar_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPolicyVar_VarName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin union "org_csapi_policy_TpPolicyType" */
+
+
+ decode_org_csapi_policy_TpPolicyType_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_policy_TpPolicyType" */
+
+ get_CDR_any(tvb,tree,offset,stream_is_big_endian, boundary, header);
+
+}
+
+/* Struct = IDL:org/csapi/policy/TpPolicyConditionListElement:1.0 */
+
+static void decode_org_csapi_policy_TpPolicyConditionListElement_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpPolicyConditionListElement_GroupNumber = %i",s_octet4);
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpPolicyConditionListElement_Negated = %u",u_octet1);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/policy/TpPolicyActionListElement:1.0 */
+
+static void decode_org_csapi_policy_TpPolicyActionListElement_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpPolicyActionListElement_SequenceNumber = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMAttributeDef:1.0 */
+
+static void decode_org_csapi_pam_TpPAMAttributeDef_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAttributeDef_Name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAttributeDef_Type (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpPAMAttributeDef_IsStatic = %u",u_octet1);
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpPAMAttributeDef_IsRevertOnExpiration = %u",u_octet1);
+ }
+
+ get_CDR_any(tvb,tree,offset,stream_is_big_endian, boundary, header);
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMAttribute:1.0 */
+
+static void decode_org_csapi_pam_TpPAMAttribute_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint64 s_octet8;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAttribute_AttributeName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin union "org_csapi_TpAttributeValue" */
+
+
+ decode_org_csapi_TpAttributeValue_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_TpAttributeValue" */
+
+ s_octet8 = get_CDR_long_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-8,8,"TpPAMAttribute_ExpiresIn = %" G_GINT64_MODIFIER "d",s_octet8);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMPresenceData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMPresenceData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMPresenceData_Name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMPresenceData_subscriberStatus (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMPresenceData_networkStatus (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMPresenceData_communicationMeans (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMPresenceData_subscriberProvidedLocation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMPresenceData_networkProvidedLocation (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpPAMPresenceData_Priority = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMPresenceData_otherInfo (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMAvailabilityProfile:1.0 */
+
+static void decode_org_csapi_pam_TpPAMAvailabilityProfile_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAvailabilityProfile_PrivacyCode (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin struct "org_csapi_pam_TpPAMPresenceData" */
+
+
+
+ decode_org_csapi_pam_TpPAMPresenceData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMPresenceData" */
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMCommunicationContext:1.0 */
+
+static void decode_org_csapi_pam_TpPAMCommunicationContext_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMCommunicationContext_CommunicationCapability (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMContext:1.0 */
+
+static void decode_org_csapi_pam_TpPAMContext_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpPAMContext_AskerData;
+ guint32 i_TpPAMContext_AskerData;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin union "org_csapi_pam_TpPAMContextData" */
+
+
+ decode_org_csapi_pam_TpPAMContextData_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_pam_TpPAMContextData" */
+
+ u_octet4_loop_TpPAMContext_AskerData = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMContext_AskerData = %u",u_octet4_loop_TpPAMContext_AskerData);
+ }
+
+ for (i_TpPAMContext_AskerData=0; i_TpPAMContext_AskerData < u_octet4_loop_TpPAMContext_AskerData; i_TpPAMContext_AskerData++) {
+
+ /* Begin struct "org_csapi_TpAttribute" */
+
+
+
+ decode_org_csapi_TpAttribute_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAttribute" */
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMAccessControlData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMAccessControlData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ guint32 u_octet4_loop_TpPAMAccessControlData_AllowList;
+ guint32 i_TpPAMAccessControlData_AllowList;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpPAMAccessControlData_DenyList;
+ guint32 i_TpPAMAccessControlData_DenyList;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpPAMAccessControlData_DefaultPolicy = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_pam_TpPAMACLDefault,"Unknown Enum Value"));
+ }
+
+ u_octet4_loop_TpPAMAccessControlData_AllowList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAccessControlData_AllowList = %u",u_octet4_loop_TpPAMAccessControlData_AllowList);
+ }
+
+ for (i_TpPAMAccessControlData_AllowList=0; i_TpPAMAccessControlData_AllowList < u_octet4_loop_TpPAMAccessControlData_AllowList; i_TpPAMAccessControlData_AllowList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAccessControlData_AllowList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_TpPAMAccessControlData_DenyList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAccessControlData_DenyList = %u",u_octet4_loop_TpPAMAccessControlData_DenyList);
+ }
+
+ for (i_TpPAMAccessControlData_DenyList=0; i_TpPAMAccessControlData_DenyList < u_octet4_loop_TpPAMAccessControlData_DenyList; i_TpPAMAccessControlData_DenyList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAccessControlData_DenyList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMICEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMICEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpPAMICEventData_IdentityType;
+ guint32 i_TpPAMICEventData_IdentityType;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpPAMICEventData_IdentityType = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMICEventData_IdentityType = %u",u_octet4_loop_TpPAMICEventData_IdentityType);
+ }
+
+ for (i_TpPAMICEventData_IdentityType=0; i_TpPAMICEventData_IdentityType < u_octet4_loop_TpPAMICEventData_IdentityType; i_TpPAMICEventData_IdentityType++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMICEventData_IdentityType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMICNotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMICNotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpPAMICNotificationData_Identities;
+ guint32 i_TpPAMICNotificationData_Identities;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpPAMICNotificationData_Identities = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMICNotificationData_Identities = %u",u_octet4_loop_TpPAMICNotificationData_Identities);
+ }
+
+ for (i_TpPAMICNotificationData_Identities=0; i_TpPAMICNotificationData_Identities < u_octet4_loop_TpPAMICNotificationData_Identities; i_TpPAMICNotificationData_Identities++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMICNotificationData_Identities (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMIDEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMIDEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpPAMIDEventData_IdentityName;
+ guint32 i_TpPAMIDEventData_IdentityName;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpPAMIDEventData_IdentityType;
+ guint32 i_TpPAMIDEventData_IdentityType;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpPAMIDEventData_IdentityName = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMIDEventData_IdentityName = %u",u_octet4_loop_TpPAMIDEventData_IdentityName);
+ }
+
+ for (i_TpPAMIDEventData_IdentityName=0; i_TpPAMIDEventData_IdentityName < u_octet4_loop_TpPAMIDEventData_IdentityName; i_TpPAMIDEventData_IdentityName++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMIDEventData_IdentityName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_TpPAMIDEventData_IdentityType = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMIDEventData_IdentityType = %u",u_octet4_loop_TpPAMIDEventData_IdentityType);
+ }
+
+ for (i_TpPAMIDEventData_IdentityType=0; i_TpPAMIDEventData_IdentityType < u_octet4_loop_TpPAMIDEventData_IdentityType; i_TpPAMIDEventData_IdentityType++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMIDEventData_IdentityType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMIDNotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMIDNotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpPAMIDNotificationData_Identities;
+ guint32 i_TpPAMIDNotificationData_Identities;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpPAMIDNotificationData_Identities = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMIDNotificationData_Identities = %u",u_octet4_loop_TpPAMIDNotificationData_Identities);
+ }
+
+ for (i_TpPAMIDNotificationData_Identities=0; i_TpPAMIDNotificationData_Identities < u_octet4_loop_TpPAMIDNotificationData_Identities; i_TpPAMIDNotificationData_Identities++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMIDNotificationData_Identities (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMGMCEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMGMCEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpPAMGMCEventData_GroupName;
+ guint32 i_TpPAMGMCEventData_GroupName;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpPAMGMCEventData_GroupType;
+ guint32 i_TpPAMGMCEventData_GroupType;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpPAMGMCEventData_GroupName = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMGMCEventData_GroupName = %u",u_octet4_loop_TpPAMGMCEventData_GroupName);
+ }
+
+ for (i_TpPAMGMCEventData_GroupName=0; i_TpPAMGMCEventData_GroupName < u_octet4_loop_TpPAMGMCEventData_GroupName; i_TpPAMGMCEventData_GroupName++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMGMCEventData_GroupName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_TpPAMGMCEventData_GroupType = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMGMCEventData_GroupType = %u",u_octet4_loop_TpPAMGMCEventData_GroupType);
+ }
+
+ for (i_TpPAMGMCEventData_GroupType=0; i_TpPAMGMCEventData_GroupType < u_octet4_loop_TpPAMGMCEventData_GroupType; i_TpPAMGMCEventData_GroupType++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMGMCEventData_GroupType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMGMCNotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMGMCNotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpPAMGMCNotificationData_Groups;
+ guint32 i_TpPAMGMCNotificationData_Groups;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpPAMGMCNotificationData_Groups = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMGMCNotificationData_Groups = %u",u_octet4_loop_TpPAMGMCNotificationData_Groups);
+ }
+
+ for (i_TpPAMGMCNotificationData_Groups=0; i_TpPAMGMCNotificationData_Groups < u_octet4_loop_TpPAMGMCNotificationData_Groups; i_TpPAMGMCNotificationData_Groups++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMGMCNotificationData_Groups (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMACEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMACEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpPAMACEventData_AgentType;
+ guint32 i_TpPAMACEventData_AgentType;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpPAMACEventData_AgentType = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMACEventData_AgentType = %u",u_octet4_loop_TpPAMACEventData_AgentType);
+ }
+
+ for (i_TpPAMACEventData_AgentType=0; i_TpPAMACEventData_AgentType < u_octet4_loop_TpPAMACEventData_AgentType; i_TpPAMACEventData_AgentType++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMACEventData_AgentType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMACNotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMACNotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpPAMACNotificationData_Agents;
+ guint32 i_TpPAMACNotificationData_Agents;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpPAMACNotificationData_Agents = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMACNotificationData_Agents = %u",u_octet4_loop_TpPAMACNotificationData_Agents);
+ }
+
+ for (i_TpPAMACNotificationData_Agents=0; i_TpPAMACNotificationData_Agents < u_octet4_loop_TpPAMACNotificationData_Agents; i_TpPAMACNotificationData_Agents++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMACNotificationData_Agents (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMADEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMADEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpPAMADEventData_AgentName;
+ guint32 i_TpPAMADEventData_AgentName;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpPAMADEventData_AgentType;
+ guint32 i_TpPAMADEventData_AgentType;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpPAMADEventData_AgentName = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMADEventData_AgentName = %u",u_octet4_loop_TpPAMADEventData_AgentName);
+ }
+
+ for (i_TpPAMADEventData_AgentName=0; i_TpPAMADEventData_AgentName < u_octet4_loop_TpPAMADEventData_AgentName; i_TpPAMADEventData_AgentName++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMADEventData_AgentName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_TpPAMADEventData_AgentType = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMADEventData_AgentType = %u",u_octet4_loop_TpPAMADEventData_AgentType);
+ }
+
+ for (i_TpPAMADEventData_AgentType=0; i_TpPAMADEventData_AgentType < u_octet4_loop_TpPAMADEventData_AgentType; i_TpPAMADEventData_AgentType++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMADEventData_AgentType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMADNotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMADNotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpPAMADNotificationData_Agents;
+ guint32 i_TpPAMADNotificationData_Agents;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpPAMADNotificationData_Agents = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMADNotificationData_Agents = %u",u_octet4_loop_TpPAMADNotificationData_Agents);
+ }
+
+ for (i_TpPAMADNotificationData_Agents=0; i_TpPAMADNotificationData_Agents < u_octet4_loop_TpPAMADNotificationData_Agents; i_TpPAMADNotificationData_Agents++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMADNotificationData_Agents (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMAAEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMAAEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpPAMAAEventData_IdentityName;
+ guint32 i_TpPAMAAEventData_IdentityName;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpPAMAAEventData_IdentityType;
+ guint32 i_TpPAMAAEventData_IdentityType;
+ guint32 u_octet4_loop_TpPAMAAEventData_AgentName;
+ guint32 i_TpPAMAAEventData_AgentName;
+ guint32 u_octet4_loop_TpPAMAAEventData_AgentType;
+ guint32 i_TpPAMAAEventData_AgentType;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpPAMAAEventData_IdentityName = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAAEventData_IdentityName = %u",u_octet4_loop_TpPAMAAEventData_IdentityName);
+ }
+
+ for (i_TpPAMAAEventData_IdentityName=0; i_TpPAMAAEventData_IdentityName < u_octet4_loop_TpPAMAAEventData_IdentityName; i_TpPAMAAEventData_IdentityName++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAAEventData_IdentityName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_TpPAMAAEventData_IdentityType = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAAEventData_IdentityType = %u",u_octet4_loop_TpPAMAAEventData_IdentityType);
+ }
+
+ for (i_TpPAMAAEventData_IdentityType=0; i_TpPAMAAEventData_IdentityType < u_octet4_loop_TpPAMAAEventData_IdentityType; i_TpPAMAAEventData_IdentityType++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAAEventData_IdentityType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_TpPAMAAEventData_AgentName = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAAEventData_AgentName = %u",u_octet4_loop_TpPAMAAEventData_AgentName);
+ }
+
+ for (i_TpPAMAAEventData_AgentName=0; i_TpPAMAAEventData_AgentName < u_octet4_loop_TpPAMAAEventData_AgentName; i_TpPAMAAEventData_AgentName++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAAEventData_AgentName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_TpPAMAAEventData_AgentType = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAAEventData_AgentType = %u",u_octet4_loop_TpPAMAAEventData_AgentType);
+ }
+
+ for (i_TpPAMAAEventData_AgentType=0; i_TpPAMAAEventData_AgentType < u_octet4_loop_TpPAMAAEventData_AgentType; i_TpPAMAAEventData_AgentType++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAAEventData_AgentType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMAANotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMAANotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAANotificationData_Identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAANotificationData_Agent (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMAUEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMAUEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpPAMAUEventData_IdentityName;
+ guint32 i_TpPAMAUEventData_IdentityName;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpPAMAUEventData_IdentityType;
+ guint32 i_TpPAMAUEventData_IdentityType;
+ guint32 u_octet4_loop_TpPAMAUEventData_AgentName;
+ guint32 i_TpPAMAUEventData_AgentName;
+ guint32 u_octet4_loop_TpPAMAUEventData_AgentType;
+ guint32 i_TpPAMAUEventData_AgentType;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpPAMAUEventData_IdentityName = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAUEventData_IdentityName = %u",u_octet4_loop_TpPAMAUEventData_IdentityName);
+ }
+
+ for (i_TpPAMAUEventData_IdentityName=0; i_TpPAMAUEventData_IdentityName < u_octet4_loop_TpPAMAUEventData_IdentityName; i_TpPAMAUEventData_IdentityName++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAUEventData_IdentityName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_TpPAMAUEventData_IdentityType = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAUEventData_IdentityType = %u",u_octet4_loop_TpPAMAUEventData_IdentityType);
+ }
+
+ for (i_TpPAMAUEventData_IdentityType=0; i_TpPAMAUEventData_IdentityType < u_octet4_loop_TpPAMAUEventData_IdentityType; i_TpPAMAUEventData_IdentityType++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAUEventData_IdentityType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_TpPAMAUEventData_AgentName = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAUEventData_AgentName = %u",u_octet4_loop_TpPAMAUEventData_AgentName);
+ }
+
+ for (i_TpPAMAUEventData_AgentName=0; i_TpPAMAUEventData_AgentName < u_octet4_loop_TpPAMAUEventData_AgentName; i_TpPAMAUEventData_AgentName++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAUEventData_AgentName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_TpPAMAUEventData_AgentType = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAUEventData_AgentType = %u",u_octet4_loop_TpPAMAUEventData_AgentType);
+ }
+
+ for (i_TpPAMAUEventData_AgentType=0; i_TpPAMAUEventData_AgentType < u_octet4_loop_TpPAMAUEventData_AgentType; i_TpPAMAUEventData_AgentType++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAUEventData_AgentType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMAUNotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMAUNotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAUNotificationData_Identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAUNotificationData_Agent (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMCCEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMCCEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpPAMCCEventData_IdentityName;
+ guint32 i_TpPAMCCEventData_IdentityName;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpPAMCCEventData_IdentityType;
+ guint32 i_TpPAMCCEventData_IdentityType;
+ guint32 u_octet4_loop_TpPAMCCEventData_Capabilities;
+ guint32 i_TpPAMCCEventData_Capabilities;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpPAMCCEventData_IdentityName = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMCCEventData_IdentityName = %u",u_octet4_loop_TpPAMCCEventData_IdentityName);
+ }
+
+ for (i_TpPAMCCEventData_IdentityName=0; i_TpPAMCCEventData_IdentityName < u_octet4_loop_TpPAMCCEventData_IdentityName; i_TpPAMCCEventData_IdentityName++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMCCEventData_IdentityName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_TpPAMCCEventData_IdentityType = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMCCEventData_IdentityType = %u",u_octet4_loop_TpPAMCCEventData_IdentityType);
+ }
+
+ for (i_TpPAMCCEventData_IdentityType=0; i_TpPAMCCEventData_IdentityType < u_octet4_loop_TpPAMCCEventData_IdentityType; i_TpPAMCCEventData_IdentityType++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMCCEventData_IdentityType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_TpPAMCCEventData_Capabilities = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMCCEventData_Capabilities = %u",u_octet4_loop_TpPAMCCEventData_Capabilities);
+ }
+
+ for (i_TpPAMCCEventData_Capabilities=0; i_TpPAMCCEventData_Capabilities < u_octet4_loop_TpPAMCCEventData_Capabilities; i_TpPAMCCEventData_Capabilities++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMCCEventData_Capabilities (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMCCNotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMCCNotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpPAMCCNotificationData_Capabilities;
+ guint32 i_TpPAMCCNotificationData_Capabilities;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMCCNotificationData_Identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_TpPAMCCNotificationData_Capabilities = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMCCNotificationData_Capabilities = %u",u_octet4_loop_TpPAMCCNotificationData_Capabilities);
+ }
+
+ for (i_TpPAMCCNotificationData_Capabilities=0; i_TpPAMCCNotificationData_Capabilities < u_octet4_loop_TpPAMCCNotificationData_Capabilities; i_TpPAMCCNotificationData_Capabilities++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMCCNotificationData_Capabilities (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMACPSEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMACPSEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpPAMACPSEventData_AgentName;
+ guint32 i_TpPAMACPSEventData_AgentName;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpPAMACPSEventData_AgentType;
+ guint32 i_TpPAMACPSEventData_AgentType;
+ guint32 u_octet4_loop_TpPAMACPSEventData_Capabilities;
+ guint32 i_TpPAMACPSEventData_Capabilities;
+ guint32 u_octet4_loop_TpPAMACPSEventData_AttributeNames;
+ guint32 i_TpPAMACPSEventData_AttributeNames;
+ gint64 s_octet8;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpPAMACPSEventData_AgentName = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMACPSEventData_AgentName = %u",u_octet4_loop_TpPAMACPSEventData_AgentName);
+ }
+
+ for (i_TpPAMACPSEventData_AgentName=0; i_TpPAMACPSEventData_AgentName < u_octet4_loop_TpPAMACPSEventData_AgentName; i_TpPAMACPSEventData_AgentName++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMACPSEventData_AgentName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_TpPAMACPSEventData_AgentType = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMACPSEventData_AgentType = %u",u_octet4_loop_TpPAMACPSEventData_AgentType);
+ }
+
+ for (i_TpPAMACPSEventData_AgentType=0; i_TpPAMACPSEventData_AgentType < u_octet4_loop_TpPAMACPSEventData_AgentType; i_TpPAMACPSEventData_AgentType++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMACPSEventData_AgentType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_TpPAMACPSEventData_Capabilities = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMACPSEventData_Capabilities = %u",u_octet4_loop_TpPAMACPSEventData_Capabilities);
+ }
+
+ for (i_TpPAMACPSEventData_Capabilities=0; i_TpPAMACPSEventData_Capabilities < u_octet4_loop_TpPAMACPSEventData_Capabilities; i_TpPAMACPSEventData_Capabilities++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMACPSEventData_Capabilities (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_TpPAMACPSEventData_AttributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMACPSEventData_AttributeNames = %u",u_octet4_loop_TpPAMACPSEventData_AttributeNames);
+ }
+
+ for (i_TpPAMACPSEventData_AttributeNames=0; i_TpPAMACPSEventData_AttributeNames < u_octet4_loop_TpPAMACPSEventData_AttributeNames; i_TpPAMACPSEventData_AttributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMACPSEventData_AttributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ s_octet8 = get_CDR_long_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-8,8,"TpPAMACPSEventData_ReportingPeriod = %" G_GINT64_MODIFIER "d",s_octet8);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMACPSNotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMACPSNotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpPAMACPSNotificationData_AttributeNames;
+ guint32 i_TpPAMACPSNotificationData_AttributeNames;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMACPSNotificationData_Agent (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMACPSNotificationData_Capability (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_TpPAMACPSNotificationData_AttributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMACPSNotificationData_AttributeNames = %u",u_octet4_loop_TpPAMACPSNotificationData_AttributeNames);
+ }
+
+ for (i_TpPAMACPSNotificationData_AttributeNames=0; i_TpPAMACPSNotificationData_AttributeNames < u_octet4_loop_TpPAMACPSNotificationData_AttributeNames; i_TpPAMACPSNotificationData_AttributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMACPSNotificationData_AttributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMAPSEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMAPSEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpPAMAPSEventData_AgentName;
+ guint32 i_TpPAMAPSEventData_AgentName;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpPAMAPSEventData_AgentType;
+ guint32 i_TpPAMAPSEventData_AgentType;
+ guint32 u_octet4_loop_TpPAMAPSEventData_AttributeNames;
+ guint32 i_TpPAMAPSEventData_AttributeNames;
+ gint64 s_octet8;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpPAMAPSEventData_AgentName = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAPSEventData_AgentName = %u",u_octet4_loop_TpPAMAPSEventData_AgentName);
+ }
+
+ for (i_TpPAMAPSEventData_AgentName=0; i_TpPAMAPSEventData_AgentName < u_octet4_loop_TpPAMAPSEventData_AgentName; i_TpPAMAPSEventData_AgentName++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAPSEventData_AgentName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_TpPAMAPSEventData_AgentType = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAPSEventData_AgentType = %u",u_octet4_loop_TpPAMAPSEventData_AgentType);
+ }
+
+ for (i_TpPAMAPSEventData_AgentType=0; i_TpPAMAPSEventData_AgentType < u_octet4_loop_TpPAMAPSEventData_AgentType; i_TpPAMAPSEventData_AgentType++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAPSEventData_AgentType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_TpPAMAPSEventData_AttributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAPSEventData_AttributeNames = %u",u_octet4_loop_TpPAMAPSEventData_AttributeNames);
+ }
+
+ for (i_TpPAMAPSEventData_AttributeNames=0; i_TpPAMAPSEventData_AttributeNames < u_octet4_loop_TpPAMAPSEventData_AttributeNames; i_TpPAMAPSEventData_AttributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAPSEventData_AttributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ s_octet8 = get_CDR_long_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-8,8,"TpPAMAPSEventData_ReportingPeriod = %" G_GINT64_MODIFIER "d",s_octet8);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMAPSNotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMAPSNotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpPAMAPSNotificationData_AttributeNames;
+ guint32 i_TpPAMAPSNotificationData_AttributeNames;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAPSNotificationData_Agent (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_TpPAMAPSNotificationData_AttributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAPSNotificationData_AttributeNames = %u",u_octet4_loop_TpPAMAPSNotificationData_AttributeNames);
+ }
+
+ for (i_TpPAMAPSNotificationData_AttributeNames=0; i_TpPAMAPSNotificationData_AttributeNames < u_octet4_loop_TpPAMAPSNotificationData_AttributeNames; i_TpPAMAPSNotificationData_AttributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAPSNotificationData_AttributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMIPSEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMIPSEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpPAMIPSEventData_IdentityName;
+ guint32 i_TpPAMIPSEventData_IdentityName;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpPAMIPSEventData_IdentityType;
+ guint32 i_TpPAMIPSEventData_IdentityType;
+ guint32 u_octet4_loop_TpPAMIPSEventData_AttributeNames;
+ guint32 i_TpPAMIPSEventData_AttributeNames;
+ gint64 s_octet8;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpPAMIPSEventData_IdentityName = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMIPSEventData_IdentityName = %u",u_octet4_loop_TpPAMIPSEventData_IdentityName);
+ }
+
+ for (i_TpPAMIPSEventData_IdentityName=0; i_TpPAMIPSEventData_IdentityName < u_octet4_loop_TpPAMIPSEventData_IdentityName; i_TpPAMIPSEventData_IdentityName++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMIPSEventData_IdentityName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_TpPAMIPSEventData_IdentityType = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMIPSEventData_IdentityType = %u",u_octet4_loop_TpPAMIPSEventData_IdentityType);
+ }
+
+ for (i_TpPAMIPSEventData_IdentityType=0; i_TpPAMIPSEventData_IdentityType < u_octet4_loop_TpPAMIPSEventData_IdentityType; i_TpPAMIPSEventData_IdentityType++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMIPSEventData_IdentityType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_TpPAMIPSEventData_AttributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMIPSEventData_AttributeNames = %u",u_octet4_loop_TpPAMIPSEventData_AttributeNames);
+ }
+
+ for (i_TpPAMIPSEventData_AttributeNames=0; i_TpPAMIPSEventData_AttributeNames < u_octet4_loop_TpPAMIPSEventData_AttributeNames; i_TpPAMIPSEventData_AttributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMIPSEventData_AttributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ s_octet8 = get_CDR_long_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-8,8,"TpPAMIPSEventData_ReportingPeriod = %" G_GINT64_MODIFIER "d",s_octet8);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMIPSNotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMIPSNotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpPAMIPSNotificationData_Attributes;
+ guint32 i_TpPAMIPSNotificationData_Attributes;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMIPSNotificationData_Identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_TpPAMIPSNotificationData_Attributes = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMIPSNotificationData_Attributes = %u",u_octet4_loop_TpPAMIPSNotificationData_Attributes);
+ }
+
+ for (i_TpPAMIPSNotificationData_Attributes=0; i_TpPAMIPSNotificationData_Attributes < u_octet4_loop_TpPAMIPSNotificationData_Attributes; i_TpPAMIPSNotificationData_Attributes++) {
+
+ /* Begin struct "org_csapi_pam_TpPAMPresenceData" */
+
+
+
+ decode_org_csapi_pam_TpPAMPresenceData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMPresenceData" */
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMAVCEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMAVCEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpPAMAVCEventData_IdentityName;
+ guint32 i_TpPAMAVCEventData_IdentityName;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpPAMAVCEventData_IdentityType;
+ guint32 i_TpPAMAVCEventData_IdentityType;
+ guint32 u_octet4_loop_TpPAMAVCEventData_PAMContext;
+ guint32 i_TpPAMAVCEventData_PAMContext;
+ guint32 u_octet4_loop_TpPAMAVCEventData_AttributeNames;
+ guint32 i_TpPAMAVCEventData_AttributeNames;
+ gint64 s_octet8;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpPAMAVCEventData_IdentityName = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAVCEventData_IdentityName = %u",u_octet4_loop_TpPAMAVCEventData_IdentityName);
+ }
+
+ for (i_TpPAMAVCEventData_IdentityName=0; i_TpPAMAVCEventData_IdentityName < u_octet4_loop_TpPAMAVCEventData_IdentityName; i_TpPAMAVCEventData_IdentityName++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAVCEventData_IdentityName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_TpPAMAVCEventData_IdentityType = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAVCEventData_IdentityType = %u",u_octet4_loop_TpPAMAVCEventData_IdentityType);
+ }
+
+ for (i_TpPAMAVCEventData_IdentityType=0; i_TpPAMAVCEventData_IdentityType < u_octet4_loop_TpPAMAVCEventData_IdentityType; i_TpPAMAVCEventData_IdentityType++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAVCEventData_IdentityType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_TpPAMAVCEventData_PAMContext = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAVCEventData_PAMContext = %u",u_octet4_loop_TpPAMAVCEventData_PAMContext);
+ }
+
+ for (i_TpPAMAVCEventData_PAMContext=0; i_TpPAMAVCEventData_PAMContext < u_octet4_loop_TpPAMAVCEventData_PAMContext; i_TpPAMAVCEventData_PAMContext++) {
+
+ /* Begin struct "org_csapi_pam_TpPAMContext" */
+
+
+
+ decode_org_csapi_pam_TpPAMContext_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMContext" */
+
+ }
+
+ u_octet4_loop_TpPAMAVCEventData_AttributeNames = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAVCEventData_AttributeNames = %u",u_octet4_loop_TpPAMAVCEventData_AttributeNames);
+ }
+
+ for (i_TpPAMAVCEventData_AttributeNames=0; i_TpPAMAVCEventData_AttributeNames < u_octet4_loop_TpPAMAVCEventData_AttributeNames; i_TpPAMAVCEventData_AttributeNames++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAVCEventData_AttributeNames (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ s_octet8 = get_CDR_long_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-8,8,"TpPAMAVCEventData_ReportingPeriod = %" G_GINT64_MODIFIER "d",s_octet8);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMAVCNotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMAVCNotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpPAMAVCNotificationData_Availability;
+ guint32 i_TpPAMAVCNotificationData_Availability;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMAVCNotificationData_Identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_TpPAMAVCNotificationData_Availability = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMAVCNotificationData_Availability = %u",u_octet4_loop_TpPAMAVCNotificationData_Availability);
+ }
+
+ for (i_TpPAMAVCNotificationData_Availability=0; i_TpPAMAVCNotificationData_Availability < u_octet4_loop_TpPAMAVCNotificationData_Availability; i_TpPAMAVCNotificationData_Availability++) {
+
+ /* Begin struct "org_csapi_pam_TpPAMAvailabilityProfile" */
+
+
+
+ decode_org_csapi_pam_TpPAMAvailabilityProfile_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAvailabilityProfile" */
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMWCEventData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMWCEventData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpPAMWCEventData_Events;
+ guint32 i_TpPAMWCEventData_Events;
+ guint32 u_octet4;
+ guint32 u_octet4_loop_TpPAMWCEventData_IdentityName;
+ guint32 i_TpPAMWCEventData_IdentityName;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpPAMWCEventData_IdentityType;
+ guint32 i_TpPAMWCEventData_IdentityType;
+ gint64 s_octet8;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpPAMWCEventData_Events = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMWCEventData_Events = %u",u_octet4_loop_TpPAMWCEventData_Events);
+ }
+
+ for (i_TpPAMWCEventData_Events=0; i_TpPAMWCEventData_Events < u_octet4_loop_TpPAMWCEventData_Events; i_TpPAMWCEventData_Events++) {
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpPAMWCEventData_Events = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_pam_TpPAMEventName,"Unknown Enum Value"));
+ }
+
+ }
+
+ u_octet4_loop_TpPAMWCEventData_IdentityName = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMWCEventData_IdentityName = %u",u_octet4_loop_TpPAMWCEventData_IdentityName);
+ }
+
+ for (i_TpPAMWCEventData_IdentityName=0; i_TpPAMWCEventData_IdentityName < u_octet4_loop_TpPAMWCEventData_IdentityName; i_TpPAMWCEventData_IdentityName++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMWCEventData_IdentityName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_TpPAMWCEventData_IdentityType = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMWCEventData_IdentityType = %u",u_octet4_loop_TpPAMWCEventData_IdentityType);
+ }
+
+ for (i_TpPAMWCEventData_IdentityType=0; i_TpPAMWCEventData_IdentityType < u_octet4_loop_TpPAMWCEventData_IdentityType; i_TpPAMWCEventData_IdentityType++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMWCEventData_IdentityType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ s_octet8 = get_CDR_long_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-8,8,"TpPAMWCEventData_ReportingPeriod = %" G_GINT64_MODIFIER "d",s_octet8);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMWCNotificationData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMWCNotificationData_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpPAMWCNotificationData_Watchers;
+ guint32 i_TpPAMWCNotificationData_Watchers;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpPAMWCNotificationData_Event = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_pam_TpPAMEventName,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpPAMWCNotificationData_ChangeType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_pam_TpPAMwatcherChangeType,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMWCNotificationData_Identity (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_TpPAMWCNotificationData_Watchers = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpPAMWCNotificationData_Watchers = %u",u_octet4_loop_TpPAMWCNotificationData_Watchers);
+ }
+
+ for (i_TpPAMWCNotificationData_Watchers=0; i_TpPAMWCNotificationData_Watchers < u_octet4_loop_TpPAMWCNotificationData_Watchers; i_TpPAMWCNotificationData_Watchers++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpPAMWCNotificationData_Watchers (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/pam/TpPAMErrorInfo:1.0 */
+
+static void decode_org_csapi_pam_TpPAMErrorInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpPAMErrorInfo_Cause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_pam_TpPAMErrorCause,"Unknown Enum Value"));
+ }
+
+ /* Begin union "org_csapi_pam_TpPAMNotificationInfo" */
+
+
+ decode_org_csapi_pam_TpPAMNotificationInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_pam_TpPAMNotificationInfo" */
+
+}
+
+/* Struct = IDL:org/csapi/mmm/TpMailboxIdentifier:1.0 */
+
+static void decode_org_csapi_mmm_TpMailboxIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMailboxIdentifier_SessionID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mmm/TpMultiMediaMessagingIdentifier:1.0 */
+
+static void decode_org_csapi_mmm_TpMultiMediaMessagingIdentifier_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMultiMediaMessagingIdentifier_SessionID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mmm/TpListMessagesCriteria:1.0 */
+
+static void decode_org_csapi_mmm_TpListMessagesCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpListMessagesCriteria_OnlyUnreadMessages = %u",u_octet1);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mmm/TpMailboxFolderStatusInformation:1.0 */
+
+static void decode_org_csapi_mmm_TpMailboxFolderStatusInformation_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMailboxFolderStatusInformation_TotalMessageCount = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mmm/TpMessageDescription:1.0 */
+
+static void decode_org_csapi_mmm_TpMessageDescription_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpMessageDescription_To;
+ guint32 i_TpMessageDescription_To;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpMessageDescription_MessageID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ u_octet4_loop_TpMessageDescription_To = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpMessageDescription_To = %u",u_octet4_loop_TpMessageDescription_To);
+ }
+
+ for (i_TpMessageDescription_To=0; i_TpMessageDescription_To < u_octet4_loop_TpMessageDescription_To; i_TpMessageDescription_To++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpMessageDescription_Subject (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpMessageDescription_ReceivedDate (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMessageDescription_Size = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mmm/TpBodyPartDescription:1.0 */
+
+static void decode_org_csapi_mmm_TpBodyPartDescription_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpBodyPartDescription_ContentDescription (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpBodyPartDescription_ContentSize = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpBodyPartDescription_ContentType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpBodyPartDescription_ContentTransferEncoding (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpBodyPartDescription_ContentID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpBodyPartDescription_ContentDisposition (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpBodyPartDescription_PartID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpBodyPartDescription_NestingLevel = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mmm/TpBodyPart:1.0 */
+
+static void decode_org_csapi_mmm_TpBodyPart_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpBodyPart_BodyPartContent;
+ guint32 i_TpBodyPart_BodyPartContent;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_mmm_TpBodyPartDescription" */
+
+
+
+ decode_org_csapi_mmm_TpBodyPartDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpBodyPartDescription" */
+
+ u_octet4_loop_TpBodyPart_BodyPartContent = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpBodyPart_BodyPartContent = %u",u_octet4_loop_TpBodyPart_BodyPartContent);
+ }
+
+ for (i_TpBodyPart_BodyPartContent=0; i_TpBodyPart_BodyPartContent < u_octet4_loop_TpBodyPart_BodyPartContent; i_TpBodyPart_BodyPartContent++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpBodyPart_BodyPartContent = %u",u_octet1);
+ }
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mmm/TpGenericHeaderField:1.0 */
+
+static void decode_org_csapi_mmm_TpGenericHeaderField_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpGenericHeaderField_FieldName (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpGenericHeaderField_FieldValue (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/mmm/TpMessageInfoPropertyError:1.0 */
+
+static void decode_org_csapi_mmm_TpMessageInfoPropertyError_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMessageInfoPropertyError_MessagePropertyName = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessageInfoPropertyName,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMessageInfoPropertyError_Error = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpSetPropertyError,"Unknown Enum Value"));
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mmm/TpNewMailboxMessageArrivedCriteria:1.0 */
+
+static void decode_org_csapi_mmm_TpNewMailboxMessageArrivedCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpNewMailboxMessageArrivedCriteria_MailboxID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpNewMailboxMessageArrivedCriteria_AuthenticationInfo (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:org/csapi/mmm/TpNewMailboxMessageArrivedInfo:1.0 */
+
+static void decode_org_csapi_mmm_TpNewMailboxMessageArrivedInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_TpNewMailboxMessageArrivedInfo_MessageDescription;
+ guint32 i_TpNewMailboxMessageArrivedInfo_MessageDescription;
+ guint32 u_octet4_loop_TpNewMailboxMessageArrivedInfo_ExtendedHeaderInformation;
+ guint32 i_TpNewMailboxMessageArrivedInfo_ExtendedHeaderInformation;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpNewMailboxMessageArrivedInfo_MailboxID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"TpNewMailboxMessageArrivedInfo_FolderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_TpNewMailboxMessageArrivedInfo_MessageDescription = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpNewMailboxMessageArrivedInfo_MessageDescription = %u",u_octet4_loop_TpNewMailboxMessageArrivedInfo_MessageDescription);
+ }
+
+ for (i_TpNewMailboxMessageArrivedInfo_MessageDescription=0; i_TpNewMailboxMessageArrivedInfo_MessageDescription < u_octet4_loop_TpNewMailboxMessageArrivedInfo_MessageDescription; i_TpNewMailboxMessageArrivedInfo_MessageDescription++) {
+
+ /* Begin struct "org_csapi_mmm_TpMessageDescription" */
+
+
+
+ decode_org_csapi_mmm_TpMessageDescription_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpMessageDescription" */
+
+ }
+
+ u_octet4_loop_TpNewMailboxMessageArrivedInfo_ExtendedHeaderInformation = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpNewMailboxMessageArrivedInfo_ExtendedHeaderInformation = %u",u_octet4_loop_TpNewMailboxMessageArrivedInfo_ExtendedHeaderInformation);
+ }
+
+ for (i_TpNewMailboxMessageArrivedInfo_ExtendedHeaderInformation=0; i_TpNewMailboxMessageArrivedInfo_ExtendedHeaderInformation < u_octet4_loop_TpNewMailboxMessageArrivedInfo_ExtendedHeaderInformation; i_TpNewMailboxMessageArrivedInfo_ExtendedHeaderInformation++) {
+
+ /* Begin union "org_csapi_mmm_TpMessageHeaderField" */
+
+
+ decode_org_csapi_mmm_TpMessageHeaderField_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_mmm_TpMessageHeaderField" */
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mmm/TpQueryStatusReport:1.0 */
+
+static void decode_org_csapi_mmm_TpQueryStatusReport_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpQueryStatusReport_ReportedStatus = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mmm/TpTerminatingAddressList:1.0 */
+
+static void decode_org_csapi_mmm_TpTerminatingAddressList_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpTerminatingAddressList_ToAddressList;
+ guint32 i_TpTerminatingAddressList_ToAddressList;
+ guint32 u_octet4_loop_TpTerminatingAddressList_CcAddressList;
+ guint32 i_TpTerminatingAddressList_CcAddressList;
+ guint32 u_octet4_loop_TpTerminatingAddressList_BccAddressList;
+ guint32 i_TpTerminatingAddressList_BccAddressList;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpTerminatingAddressList_ToAddressList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpTerminatingAddressList_ToAddressList = %u",u_octet4_loop_TpTerminatingAddressList_ToAddressList);
+ }
+
+ for (i_TpTerminatingAddressList_ToAddressList=0; i_TpTerminatingAddressList_ToAddressList < u_octet4_loop_TpTerminatingAddressList_ToAddressList; i_TpTerminatingAddressList_ToAddressList++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ u_octet4_loop_TpTerminatingAddressList_CcAddressList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpTerminatingAddressList_CcAddressList = %u",u_octet4_loop_TpTerminatingAddressList_CcAddressList);
+ }
+
+ for (i_TpTerminatingAddressList_CcAddressList=0; i_TpTerminatingAddressList_CcAddressList < u_octet4_loop_TpTerminatingAddressList_CcAddressList; i_TpTerminatingAddressList_CcAddressList++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ u_octet4_loop_TpTerminatingAddressList_BccAddressList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpTerminatingAddressList_BccAddressList = %u",u_octet4_loop_TpTerminatingAddressList_BccAddressList);
+ }
+
+ for (i_TpTerminatingAddressList_BccAddressList=0; i_TpTerminatingAddressList_BccAddressList < u_octet4_loop_TpTerminatingAddressList_BccAddressList; i_TpTerminatingAddressList_BccAddressList++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mmm/TpNewMessageArrivedCriteria:1.0 */
+
+static void decode_org_csapi_mmm_TpNewMessageArrivedCriteria_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_TpAddressRange" */
+
+
+
+ decode_org_csapi_TpAddressRange_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddressRange" */
+
+ /* Begin struct "org_csapi_TpAddressRange" */
+
+
+
+ decode_org_csapi_TpAddressRange_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddressRange" */
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpNewMessageArrivedCriteria_CreateMultiMediaMessagingSession = %u",u_octet1);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mmm/TpMessagingNotificationRequested:1.0 */
+
+static void decode_org_csapi_mmm_TpMessagingNotificationRequested_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpMessagingNotificationRequested_EventCriteria;
+ guint32 i_TpMessagingNotificationRequested_EventCriteria;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpMessagingNotificationRequested_EventCriteria = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpMessagingNotificationRequested_EventCriteria = %u",u_octet4_loop_TpMessagingNotificationRequested_EventCriteria);
+ }
+
+ for (i_TpMessagingNotificationRequested_EventCriteria=0; i_TpMessagingNotificationRequested_EventCriteria < u_octet4_loop_TpMessagingNotificationRequested_EventCriteria; i_TpMessagingNotificationRequested_EventCriteria++) {
+
+ /* Begin union "org_csapi_mmm_TpMessagingEventCriteria" */
+
+
+ decode_org_csapi_mmm_TpMessagingEventCriteria_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_mmm_TpMessagingEventCriteria" */
+
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMessagingNotificationRequested_AssignmentID = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mmm/TpMessagingNotificationRequestedSetEntry:1.0 */
+
+static void decode_org_csapi_mmm_TpMessagingNotificationRequestedSetEntry_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpMessagingNotificationRequestedSetEntry_MessagingNotificationRequestedSet;
+ guint32 i_TpMessagingNotificationRequestedSetEntry_MessagingNotificationRequestedSet;
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_TpMessagingNotificationRequestedSetEntry_MessagingNotificationRequestedSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpMessagingNotificationRequestedSetEntry_MessagingNotificationRequestedSet = %u",u_octet4_loop_TpMessagingNotificationRequestedSetEntry_MessagingNotificationRequestedSet);
+ }
+
+ for (i_TpMessagingNotificationRequestedSetEntry_MessagingNotificationRequestedSet=0; i_TpMessagingNotificationRequestedSetEntry_MessagingNotificationRequestedSet < u_octet4_loop_TpMessagingNotificationRequestedSetEntry_MessagingNotificationRequestedSet; i_TpMessagingNotificationRequestedSetEntry_MessagingNotificationRequestedSet++) {
+
+ /* Begin struct "org_csapi_mmm_TpMessagingNotificationRequested" */
+
+
+
+ decode_org_csapi_mmm_TpMessagingNotificationRequested_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpMessagingNotificationRequested" */
+
+ }
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpMessagingNotificationRequestedSetEntry_Final = %u",u_octet1);
+ }
+
+}
+
+/* Struct = IDL:org/csapi/mmm/TpNewMessageArrivedInfo:1.0 */
+
+static void decode_org_csapi_mmm_TpNewMessageArrivedInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_TpNewMessageArrivedInfo_DestinationAddressSet;
+ guint32 i_TpNewMessageArrivedInfo_DestinationAddressSet;
+ guint32 u_octet4_loop_TpNewMessageArrivedInfo_Message;
+ guint32 i_TpNewMessageArrivedInfo_Message;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_TpNewMessageArrivedInfo_Headers;
+ guint32 i_TpNewMessageArrivedInfo_Headers;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ u_octet4_loop_TpNewMessageArrivedInfo_DestinationAddressSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpNewMessageArrivedInfo_DestinationAddressSet = %u",u_octet4_loop_TpNewMessageArrivedInfo_DestinationAddressSet);
+ }
+
+ for (i_TpNewMessageArrivedInfo_DestinationAddressSet=0; i_TpNewMessageArrivedInfo_DestinationAddressSet < u_octet4_loop_TpNewMessageArrivedInfo_DestinationAddressSet; i_TpNewMessageArrivedInfo_DestinationAddressSet++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ u_octet4_loop_TpNewMessageArrivedInfo_Message = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpNewMessageArrivedInfo_Message = %u",u_octet4_loop_TpNewMessageArrivedInfo_Message);
+ }
+
+ for (i_TpNewMessageArrivedInfo_Message=0; i_TpNewMessageArrivedInfo_Message < u_octet4_loop_TpNewMessageArrivedInfo_Message; i_TpNewMessageArrivedInfo_Message++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"TpNewMessageArrivedInfo_Message = %u",u_octet1);
+ }
+
+ }
+
+ u_octet4_loop_TpNewMessageArrivedInfo_Headers = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TpNewMessageArrivedInfo_Headers = %u",u_octet4_loop_TpNewMessageArrivedInfo_Headers);
+ }
+
+ for (i_TpNewMessageArrivedInfo_Headers=0; i_TpNewMessageArrivedInfo_Headers < u_octet4_loop_TpNewMessageArrivedInfo_Headers; i_TpNewMessageArrivedInfo_Headers++) {
+
+ /* Begin union "org_csapi_mmm_TpMessageHeaderField" */
+
+
+ decode_org_csapi_mmm_TpMessageHeaderField_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_mmm_TpMessageHeaderField" */
+
+ }
+
+ /* Begin struct "org_csapi_mmm_TpMultiMediaMessagingIdentifier" */
+
+
+
+ decode_org_csapi_mmm_TpMultiMediaMessagingIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpMultiMediaMessagingIdentifier" */
+
+}
+
+/* Union = IDL:org/csapi/TpAoCOrder:1.0 */
+
+static void decode_org_csapi_TpAoCOrder_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpAoCOrder;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/TpAoCOrder:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAoCOrder = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_TpCallAoCOrderCategory,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/TpCallAoCOrderCategory:1.0
+ */
+
+ disc_s_TpAoCOrder = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpAoCOrder == 0 ) {
+
+ /* Begin struct "org_csapi_TpChargeAdviceInfo" */
+
+
+
+ decode_org_csapi_TpChargeAdviceInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpChargeAdviceInfo" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpAoCOrder == 1 ) {
+
+ /* Begin struct "org_csapi_TpChargePerTime" */
+
+
+
+ decode_org_csapi_TpChargePerTime_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpChargePerTime" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpAoCOrder == 2 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"NetworkCharge (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+}
+
+/* Union = IDL:org/csapi/TpSimpleAttributeValue:1.0 */
+
+static void decode_org_csapi_TpSimpleAttributeValue_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpSimpleAttributeValue;
+ guint8 u_octet1;
+ gint8 s_octet1;
+ gchar *seq = NULL;
+ gint16 s_octet2;
+ guint16 u_octet2;
+ gint32 s_octet4;
+ gint64 s_octet8;
+ guint64 u_octet8;
+ gfloat my_float;
+ gdouble my_double;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/TpSimpleAttributeValue:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpSimpleAttributeValue = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_TpSimpleAttributeTypeInfo,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/TpSimpleAttributeTypeInfo:1.0
+ */
+
+ disc_s_TpSimpleAttributeValue = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpSimpleAttributeValue == 0 ) {
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"BooleanValue = %u",u_octet1);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpSimpleAttributeValue == 1 ) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"OctetValue = %u",u_octet1);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpSimpleAttributeValue == 2 ) {
+
+ u_octet1 = get_CDR_char(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"CharValue = %u",u_octet1);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpSimpleAttributeValue == 3 ) {
+
+ s_octet1 = get_CDR_wchar(tvb, &seq, offset, header);
+ if (tree) {
+ if (s_octet1 > 0)
+ proto_tree_add_text(tree,tvb,*offset-1-s_octet1,1,"length = %u",s_octet1);
+
+ if (s_octet1 < 0)
+ s_octet1 = -s_octet1;
+
+ if (s_octet1 > 0)
+ proto_tree_add_text(tree,tvb,*offset-s_octet1,s_octet1,"WCharValue = %s",seq);
+
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpSimpleAttributeValue == 4 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"StringValue (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpSimpleAttributeValue == 5 ) {
+
+ u_octet4 = get_CDR_wstring(tvb, &seq, offset, stream_is_big_endian, boundary, header);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"WStringValue (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpSimpleAttributeValue == 6 ) {
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Int16Value = %i",s_octet2);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpSimpleAttributeValue == 7 ) {
+
+ u_octet2 = get_CDR_ushort(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"UnsignedInt16Value = %u",u_octet2);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpSimpleAttributeValue == 8 ) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"Int32Value = %i",s_octet4);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpSimpleAttributeValue == 9 ) {
+
+ u_octet4 = get_CDR_ulong(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"UnsignedInt32Value = %u",u_octet4);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpSimpleAttributeValue == 10 ) {
+
+ s_octet8 = get_CDR_long_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-8,8,"Int64Value = %" G_GINT64_MODIFIER "d",s_octet8);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpSimpleAttributeValue == 11 ) {
+
+ u_octet8 = get_CDR_ulong_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-8,8,"UnsignedInt64Value = %" G_GINT64_MODIFIER "u",u_octet8);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpSimpleAttributeValue == 12 ) {
+
+ my_float = get_CDR_float(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"FloatValue = %.6e",my_float);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpSimpleAttributeValue == 13 ) {
+
+ my_double = get_CDR_double(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-8,8,"DoubleValue = %.15e",my_double);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+}
+
+/* Union = IDL:org/csapi/TpAttributeValue:1.0 */
+
+static void decode_org_csapi_TpAttributeValue_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpAttributeValue;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/TpAttributeValue:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAttributeValue = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_TpAttributeTagInfo,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/TpAttributeTagInfo:1.0
+ */
+
+ disc_s_TpAttributeValue = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpAttributeValue == 0 ) {
+
+ /* Begin union "org_csapi_TpSimpleAttributeValue" */
+
+
+ decode_org_csapi_TpSimpleAttributeValue_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_TpSimpleAttributeValue" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpAttributeValue == 1 ) {
+
+ /* Begin struct "org_csapi_TpStructuredAttributeValue" */
+
+
+
+ decode_org_csapi_TpStructuredAttributeValue_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpStructuredAttributeValue" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpAttributeValue == 2 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"XMLValue (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+}
+
+/* Union = IDL:org/csapi/fw/TpFwEventCriteria:1.0 */
+
+static void decode_org_csapi_fw_TpFwEventCriteria_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpFwEventCriteria;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_ServiceTypeNameList;
+ guint32 i_ServiceTypeNameList;
+ guint32 u_octet4_loop_UnavailableServiceTypeNameList;
+ guint32 i_UnavailableServiceTypeNameList;
+ guint32 u_octet4_loop_CompatibleServiceTypeNameList;
+ guint32 i_CompatibleServiceTypeNameList;
+ guint32 u_octet4_loop_SessionCreatedList;
+ guint32 i_SessionCreatedList;
+ guint32 u_octet4_loop_SessionTerminatedList;
+ guint32 i_SessionTerminatedList;
+ guint32 u_octet4_loop_AgreementSignedList;
+ guint32 i_AgreementSignedList;
+ guint32 u_octet4_loop_AgreementEndedList;
+ guint32 i_AgreementEndedList;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/fw/TpFwEventCriteria:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpFwEventCriteria = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpFwEventName,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/fw/TpFwEventName:1.0
+ */
+
+ disc_s_TpFwEventCriteria = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpFwEventCriteria == 0 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"EventNameUndefined (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpFwEventCriteria == 1 ) {
+
+ u_octet4_loop_ServiceTypeNameList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of ServiceTypeNameList = %u",u_octet4_loop_ServiceTypeNameList);
+ }
+
+ for (i_ServiceTypeNameList=0; i_ServiceTypeNameList < u_octet4_loop_ServiceTypeNameList; i_ServiceTypeNameList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ServiceTypeNameList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpFwEventCriteria == 2 ) {
+
+ u_octet4_loop_UnavailableServiceTypeNameList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of UnavailableServiceTypeNameList = %u",u_octet4_loop_UnavailableServiceTypeNameList);
+ }
+
+ for (i_UnavailableServiceTypeNameList=0; i_UnavailableServiceTypeNameList < u_octet4_loop_UnavailableServiceTypeNameList; i_UnavailableServiceTypeNameList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"UnavailableServiceTypeNameList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpFwEventCriteria == 3 ) {
+
+ u_octet4_loop_CompatibleServiceTypeNameList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of CompatibleServiceTypeNameList = %u",u_octet4_loop_CompatibleServiceTypeNameList);
+ }
+
+ for (i_CompatibleServiceTypeNameList=0; i_CompatibleServiceTypeNameList < u_octet4_loop_CompatibleServiceTypeNameList; i_CompatibleServiceTypeNameList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"CompatibleServiceTypeNameList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpFwEventCriteria == 4 ) {
+
+ u_octet4_loop_SessionCreatedList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of SessionCreatedList = %u",u_octet4_loop_SessionCreatedList);
+ }
+
+ for (i_SessionCreatedList=0; i_SessionCreatedList < u_octet4_loop_SessionCreatedList; i_SessionCreatedList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"SessionCreatedList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpFwEventCriteria == 5 ) {
+
+ u_octet4_loop_SessionTerminatedList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of SessionTerminatedList = %u",u_octet4_loop_SessionTerminatedList);
+ }
+
+ for (i_SessionTerminatedList=0; i_SessionTerminatedList < u_octet4_loop_SessionTerminatedList; i_SessionTerminatedList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"SessionTerminatedList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpFwEventCriteria == 6 ) {
+
+ u_octet4_loop_AgreementSignedList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AgreementSignedList = %u",u_octet4_loop_AgreementSignedList);
+ }
+
+ for (i_AgreementSignedList=0; i_AgreementSignedList < u_octet4_loop_AgreementSignedList; i_AgreementSignedList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AgreementSignedList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpFwEventCriteria == 7 ) {
+
+ u_octet4_loop_AgreementEndedList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AgreementEndedList = %u",u_octet4_loop_AgreementEndedList);
+ }
+
+ for (i_AgreementEndedList=0; i_AgreementEndedList < u_octet4_loop_AgreementEndedList; i_AgreementEndedList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AgreementEndedList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+}
+
+/* Union = IDL:org/csapi/fw/TpLoadStatisticEntityID:1.0 */
+
+static void decode_org_csapi_fw_TpLoadStatisticEntityID_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpLoadStatisticEntityID;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/fw/TpLoadStatisticEntityID:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpLoadStatisticEntityID = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpLoadStatisticEntityType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/fw/TpLoadStatisticEntityType:1.0
+ */
+
+ disc_s_TpLoadStatisticEntityID = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpLoadStatisticEntityID == 0 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"FrameworkID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpLoadStatisticEntityID == 1 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ServiceID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpLoadStatisticEntityID == 2 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ClientAppID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+}
+
+/* Union = IDL:org/csapi/fw/TpLoadStatisticInfo:1.0 */
+
+static void decode_org_csapi_fw_TpLoadStatisticInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpLoadStatisticInfo;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/fw/TpLoadStatisticInfo:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpLoadStatisticInfo = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpLoadStatisticInfoType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/fw/TpLoadStatisticInfoType:1.0
+ */
+
+ disc_s_TpLoadStatisticInfo = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpLoadStatisticInfo == 0 ) {
+
+ /* Begin struct "org_csapi_fw_TpLoadStatisticData" */
+
+
+
+ decode_org_csapi_fw_TpLoadStatisticData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpLoadStatisticData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpLoadStatisticInfo == 1 ) {
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"LoadStatisticError = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpLoadStatisticError,"Unknown Enum Value"));
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+}
+
+/* Union = IDL:org/csapi/fw/TpDomainID:1.0 */
+
+static void decode_org_csapi_fw_TpDomainID_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpDomainID;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/fw/TpDomainID:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpDomainID = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpDomainIDType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/fw/TpDomainIDType:1.0
+ */
+
+ disc_s_TpDomainID = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpDomainID == 0 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"FwID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpDomainID == 1 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ClientAppID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpDomainID == 2 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"EntOpID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpDomainID == 3 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ServiceID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpDomainID == 4 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ServiceSupplierID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+}
+
+/* Union = IDL:org/csapi/fw/TpMigrationAdditionalInfo:1.0 */
+
+static void decode_org_csapi_fw_TpMigrationAdditionalInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ /*Manual Fix Clang Warning gint32 disc_s_TpMigrationAdditionalInfo;*/
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/fw/TpMigrationAdditionalInfo:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMigrationAdditionalInfo = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpMigrationAdditionalInfoType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/fw/TpMigrationAdditionalInfoType:1.0
+ */
+
+ /*Manual Fix Clang Warning disc_s_TpMigrationAdditionalInfo = (gint32) u_octet4;*/ /* save Enum Value discriminant and cast to gint32 */
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/fw/TpFwEventInfo:1.0 */
+
+static void decode_org_csapi_fw_TpFwEventInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpFwEventInfo;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_ServiceIDList;
+ guint32 i_ServiceIDList;
+ guint32 u_octet4_loop_UnavailableServiceIDList;
+ guint32 i_UnavailableServiceIDList;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/fw/TpFwEventInfo:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpFwEventInfo = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_fw_TpFwEventName,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/fw/TpFwEventName:1.0
+ */
+
+ disc_s_TpFwEventInfo = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpFwEventInfo == 0 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"EventNameUndefined (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpFwEventInfo == 1 ) {
+
+ u_octet4_loop_ServiceIDList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of ServiceIDList = %u",u_octet4_loop_ServiceIDList);
+ }
+
+ for (i_ServiceIDList=0; i_ServiceIDList < u_octet4_loop_ServiceIDList; i_ServiceIDList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ServiceIDList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpFwEventInfo == 2 ) {
+
+ u_octet4_loop_UnavailableServiceIDList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of UnavailableServiceIDList = %u",u_octet4_loop_UnavailableServiceIDList);
+ }
+
+ for (i_UnavailableServiceIDList=0; i_UnavailableServiceIDList < u_octet4_loop_UnavailableServiceIDList; i_UnavailableServiceIDList++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"UnavailableServiceIDList (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpFwEventInfo == 3 ) {
+
+ /* Begin struct "org_csapi_fw_TpFwMigrationServiceAvailableInfo" */
+
+
+
+ decode_org_csapi_fw_TpFwMigrationServiceAvailableInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpFwMigrationServiceAvailableInfo" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpFwEventInfo == 4 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AppSessionCreated (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpFwEventInfo == 5 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AppSessionTerminated (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpFwEventInfo == 6 ) {
+
+ /* Begin struct "org_csapi_fw_TpFwAgreementInfo" */
+
+
+
+ decode_org_csapi_fw_TpFwAgreementInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpFwAgreementInfo" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpFwEventInfo == 7 ) {
+
+ /* Begin struct "org_csapi_fw_TpFwAgreementInfo" */
+
+
+
+ decode_org_csapi_fw_TpFwAgreementInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_fw_TpFwAgreementInfo" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+}
+
+/* Union = IDL:org/csapi/ui/TpUIVariableInfo:1.0 */
+
+static void decode_org_csapi_ui_TpUIVariableInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpUIVariableInfo;
+ gint32 s_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/ui/TpUIVariableInfo:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUIVariableInfo = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUIVariablePartType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/ui/TpUIVariablePartType:1.0
+ */
+
+ disc_s_TpUIVariableInfo = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpUIVariableInfo == 0 ) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"VariablePartInteger = %i",s_octet4);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpUIVariableInfo == 1 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"VariablePartAddress (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpUIVariableInfo == 2 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"VariablePartTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpUIVariableInfo == 3 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"VariablePartDate (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpUIVariableInfo == 4 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"VariablePartPrice (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+}
+
+/* Union = IDL:org/csapi/ui/TpUIInfo:1.0 */
+
+static void decode_org_csapi_ui_TpUIInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpUIInfo;
+ gint32 s_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_InfoBinData;
+ guint32 i_InfoBinData;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_InfoMimeData;
+ guint32 i_InfoMimeData;
+ guint32 u_octet4_loop_InfoWaveData;
+ guint32 i_InfoWaveData;
+ guint32 u_octet4_loop_InfoAuData;
+ guint32 i_InfoAuData;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/ui/TpUIInfo:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUIInfo = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUIInfoType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/ui/TpUIInfoType:1.0
+ */
+
+ disc_s_TpUIInfo = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpUIInfo == 0 ) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"InfoID = %i",s_octet4);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpUIInfo == 1 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"InfoData (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpUIInfo == 2 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"InfoAddress (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpUIInfo == 3 ) {
+
+ u_octet4_loop_InfoBinData = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of InfoBinData = %u",u_octet4_loop_InfoBinData);
+ }
+
+ for (i_InfoBinData=0; i_InfoBinData < u_octet4_loop_InfoBinData; i_InfoBinData++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"InfoBinData = %u",u_octet1);
+ }
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpUIInfo == 4 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"InfoUUEncData (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpUIInfo == 5 ) {
+
+ u_octet4_loop_InfoMimeData = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of InfoMimeData = %u",u_octet4_loop_InfoMimeData);
+ }
+
+ for (i_InfoMimeData=0; i_InfoMimeData < u_octet4_loop_InfoMimeData; i_InfoMimeData++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"InfoMimeData = %u",u_octet1);
+ }
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpUIInfo == 6 ) {
+
+ u_octet4_loop_InfoWaveData = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of InfoWaveData = %u",u_octet4_loop_InfoWaveData);
+ }
+
+ for (i_InfoWaveData=0; i_InfoWaveData < u_octet4_loop_InfoWaveData; i_InfoWaveData++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"InfoWaveData = %u",u_octet1);
+ }
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpUIInfo == 7 ) {
+
+ u_octet4_loop_InfoAuData = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of InfoAuData = %u",u_octet4_loop_InfoAuData);
+ }
+
+ for (i_InfoAuData=0; i_InfoAuData < u_octet4_loop_InfoAuData; i_InfoAuData++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"InfoAuData = %u",u_octet1);
+ }
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpUIInfo == 8 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"InfoVXMLData (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpUIInfo == 9 ) {
+
+ /* Begin struct "org_csapi_ui_TpUISynthesisInfoData" */
+
+
+
+ decode_org_csapi_ui_TpUISynthesisInfoData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_ui_TpUISynthesisInfoData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+}
+
+/* Union = IDL:org/csapi/cc/TpCallAdditionalErrorInfo:1.0 */
+
+static void decode_org_csapi_cc_TpCallAdditionalErrorInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpCallAdditionalErrorInfo;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/cc/TpCallAdditionalErrorInfo:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallAdditionalErrorInfo = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallErrorType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/cc/TpCallErrorType:1.0
+ */
+
+ disc_s_TpCallAdditionalErrorInfo = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpCallAdditionalErrorInfo == 1 ) {
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"CallErrorInvalidAddress = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_TpAddressError,"Unknown Enum Value"));
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/cc/TpCallLoadControlMechanism:1.0 */
+
+static void decode_org_csapi_cc_TpCallLoadControlMechanism_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpCallLoadControlMechanism;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/cc/TpCallLoadControlMechanism:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallLoadControlMechanism = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallLoadControlMechanismType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/cc/TpCallLoadControlMechanismType:1.0
+ */
+
+ disc_s_TpCallLoadControlMechanism = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpCallLoadControlMechanism == 0 ) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"CallLoadControlPerInterval = %i",s_octet4);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+}
+
+/* Union = IDL:org/csapi/cc/TpCallAdditionalTreatmentInfo:1.0 */
+
+static void decode_org_csapi_cc_TpCallAdditionalTreatmentInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpCallAdditionalTreatmentInfo;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/cc/TpCallAdditionalTreatmentInfo:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallAdditionalTreatmentInfo = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallTreatmentType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/cc/TpCallTreatmentType:1.0
+ */
+
+ disc_s_TpCallAdditionalTreatmentInfo = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpCallAdditionalTreatmentInfo == 2 ) {
+
+ /* Begin union "org_csapi_ui_TpUIInfo" */
+
+
+ decode_org_csapi_ui_TpUIInfo_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_ui_TpUIInfo" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/cc/TpCallPartyToChargeAdditionalInfo:1.0 */
+
+static void decode_org_csapi_cc_TpCallPartyToChargeAdditionalInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpCallPartyToChargeAdditionalInfo;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/cc/TpCallPartyToChargeAdditionalInfo:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallPartyToChargeAdditionalInfo = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallPartyToChargeType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/cc/TpCallPartyToChargeType:1.0
+ */
+
+ disc_s_TpCallPartyToChargeAdditionalInfo = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpCallPartyToChargeAdditionalInfo == 2 ) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/cc/gccs/TpCallAppInfo:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallAppInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpCallAppInfo;
+ gint32 s_octet4;
+ gchar *seq = NULL;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/cc/gccs/TpCallAppInfo:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallAppInfo = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_gccs_TpCallAppInfoType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/cc/gccs/TpCallAppInfoType:1.0
+ */
+
+ disc_s_TpCallAppInfo = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpCallAppInfo == 1 ) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"CallAppAlertingMechanism = %i",s_octet4);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAppInfo == 2 ) {
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"CallAppNetworkAccessType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallNetworkAccessType,"Unknown Enum Value"));
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAppInfo == 3 ) {
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"CallAppTeleService = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallTeleService,"Unknown Enum Value"));
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAppInfo == 4 ) {
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"CallAppBearerService = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallBearerService,"Unknown Enum Value"));
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAppInfo == 5 ) {
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"CallAppPartyCategory = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallPartyCategory,"Unknown Enum Value"));
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAppInfo == 6 ) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAppInfo == 7 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"CallAppGenericInfo (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAppInfo == 8 ) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/cc/gccs/TpCallAdditionalReportInfo:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallAdditionalReportInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpCallAdditionalReportInfo;
+ gchar *seq = NULL;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/cc/gccs/TpCallAdditionalReportInfo:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallAdditionalReportInfo = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_gccs_TpCallReportType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/cc/gccs/TpCallReportType:1.0
+ */
+
+ disc_s_TpCallAdditionalReportInfo = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpCallAdditionalReportInfo == 4 ) {
+
+ /* Begin struct "org_csapi_cc_gccs_TpCallReleaseCause" */
+
+
+
+ decode_org_csapi_cc_gccs_TpCallReleaseCause_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_gccs_TpCallReleaseCause" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAdditionalReportInfo == 6 ) {
+
+ /* Begin struct "org_csapi_cc_gccs_TpCallReleaseCause" */
+
+
+
+ decode_org_csapi_cc_gccs_TpCallReleaseCause_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_gccs_TpCallReleaseCause" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAdditionalReportInfo == 7 ) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAdditionalReportInfo == 8 ) {
+
+ /* Begin struct "org_csapi_cc_TpCallServiceCode" */
+
+
+
+ decode_org_csapi_cc_TpCallServiceCode_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallServiceCode" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAdditionalReportInfo == 9 ) {
+
+ /* Begin struct "org_csapi_cc_gccs_TpCallReleaseCause" */
+
+
+
+ decode_org_csapi_cc_gccs_TpCallReleaseCause_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_gccs_TpCallReleaseCause" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAdditionalReportInfo == 10 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"QueueStatus (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAdditionalReportInfo == 11 ) {
+
+ /* Begin struct "org_csapi_cc_gccs_TpCallReleaseCause" */
+
+
+
+ decode_org_csapi_cc_gccs_TpCallReleaseCause_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_gccs_TpCallReleaseCause" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/cc/gccs/TpCallAdditionalReportCriteria:1.0 */
+
+static void decode_org_csapi_cc_gccs_TpCallAdditionalReportCriteria_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpCallAdditionalReportCriteria;
+ gint32 s_octet4;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/cc/gccs/TpCallAdditionalReportCriteria:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallAdditionalReportCriteria = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_gccs_TpCallReportType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/cc/gccs/TpCallReportType:1.0
+ */
+
+ disc_s_TpCallAdditionalReportCriteria = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpCallAdditionalReportCriteria == 5 ) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"NoAnswerDuration = %i",s_octet4);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAdditionalReportCriteria == 8 ) {
+
+ /* Begin struct "org_csapi_cc_TpCallServiceCode" */
+
+
+
+ decode_org_csapi_cc_TpCallServiceCode_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallServiceCode" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/cc/TpCallAdditionalEventInfo:1.0 */
+
+static void decode_org_csapi_cc_TpCallAdditionalEventInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpCallAdditionalEventInfo;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/cc/TpCallAdditionalEventInfo:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallAdditionalEventInfo = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallEventType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/cc/TpCallEventType:1.0
+ */
+
+ disc_s_TpCallAdditionalEventInfo = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpCallAdditionalEventInfo == 3 ) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAdditionalEventInfo == 4 ) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAdditionalEventInfo == 5 ) {
+
+ /* Begin struct "org_csapi_cc_TpCallServiceCode" */
+
+
+
+ decode_org_csapi_cc_TpCallServiceCode_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallServiceCode" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAdditionalEventInfo == 6 ) {
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"OriginatingReleaseCause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpReleaseCause,"Unknown Enum Value"));
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAdditionalEventInfo == 11 ) {
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TerminatingReleaseCause = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpReleaseCause,"Unknown Enum Value"));
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAdditionalEventInfo == 12 ) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAdditionalEventInfo == 13 ) {
+
+ /* Begin struct "org_csapi_cc_TpCallServiceCode" */
+
+
+
+ decode_org_csapi_cc_TpCallServiceCode_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallServiceCode" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/cc/TpAdditionalCallEventCriteria:1.0 */
+
+static void decode_org_csapi_cc_TpAdditionalCallEventCriteria_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpAdditionalCallEventCriteria;
+ gint32 s_octet4;
+ guint32 u_octet4_loop_OriginatingServiceCode;
+ guint32 i_OriginatingServiceCode;
+ guint32 u_octet4_loop_OriginatingReleaseCauseSet;
+ guint32 i_OriginatingReleaseCauseSet;
+ guint32 u_octet4_loop_TerminatingReleaseCauseSet;
+ guint32 i_TerminatingReleaseCauseSet;
+ guint32 u_octet4_loop_TerminatingServiceCode;
+ guint32 i_TerminatingServiceCode;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/cc/TpAdditionalCallEventCriteria:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAdditionalCallEventCriteria = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallEventType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/cc/TpCallEventType:1.0
+ */
+
+ disc_s_TpAdditionalCallEventCriteria = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpAdditionalCallEventCriteria == 3 ) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"MinAddressLength = %i",s_octet4);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpAdditionalCallEventCriteria == 5 ) {
+
+ u_octet4_loop_OriginatingServiceCode = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of OriginatingServiceCode = %u",u_octet4_loop_OriginatingServiceCode);
+ }
+
+ for (i_OriginatingServiceCode=0; i_OriginatingServiceCode < u_octet4_loop_OriginatingServiceCode; i_OriginatingServiceCode++) {
+
+ /* Begin struct "org_csapi_cc_TpCallServiceCode" */
+
+
+
+ decode_org_csapi_cc_TpCallServiceCode_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallServiceCode" */
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpAdditionalCallEventCriteria == 6 ) {
+
+ u_octet4_loop_OriginatingReleaseCauseSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of OriginatingReleaseCauseSet = %u",u_octet4_loop_OriginatingReleaseCauseSet);
+ }
+
+ for (i_OriginatingReleaseCauseSet=0; i_OriginatingReleaseCauseSet < u_octet4_loop_OriginatingReleaseCauseSet; i_OriginatingReleaseCauseSet++) {
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"OriginatingReleaseCauseSet = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpReleaseCause,"Unknown Enum Value"));
+ }
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpAdditionalCallEventCriteria == 11 ) {
+
+ u_octet4_loop_TerminatingReleaseCauseSet = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TerminatingReleaseCauseSet = %u",u_octet4_loop_TerminatingReleaseCauseSet);
+ }
+
+ for (i_TerminatingReleaseCauseSet=0; i_TerminatingReleaseCauseSet < u_octet4_loop_TerminatingReleaseCauseSet; i_TerminatingReleaseCauseSet++) {
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TerminatingReleaseCauseSet = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpReleaseCause,"Unknown Enum Value"));
+ }
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpAdditionalCallEventCriteria == 13 ) {
+
+ u_octet4_loop_TerminatingServiceCode = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of TerminatingServiceCode = %u",u_octet4_loop_TerminatingServiceCode);
+ }
+
+ for (i_TerminatingServiceCode=0; i_TerminatingServiceCode < u_octet4_loop_TerminatingServiceCode; i_TerminatingServiceCode++) {
+
+ /* Begin struct "org_csapi_cc_TpCallServiceCode" */
+
+
+
+ decode_org_csapi_cc_TpCallServiceCode_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCallServiceCode" */
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/cc/TpCallAppInfo:1.0 */
+
+static void decode_org_csapi_cc_TpCallAppInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpCallAppInfo;
+ gint32 s_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_CallAppCarrier;
+ guint32 i_CallAppCarrier;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/cc/TpCallAppInfo:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpCallAppInfo = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallAppInfoType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/cc/TpCallAppInfoType:1.0
+ */
+
+ disc_s_TpCallAppInfo = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpCallAppInfo == 1 ) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"CallAppAlertingMechanism = %i",s_octet4);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAppInfo == 2 ) {
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"CallAppNetworkAccessType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallNetworkAccessType,"Unknown Enum Value"));
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAppInfo == 3 ) {
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"CallAppTeleService = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallTeleService,"Unknown Enum Value"));
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAppInfo == 4 ) {
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"CallAppBearerService = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallBearerService,"Unknown Enum Value"));
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAppInfo == 5 ) {
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"CallAppPartyCategory = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_TpCallPartyCategory,"Unknown Enum Value"));
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAppInfo == 6 ) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAppInfo == 7 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"CallAppGenericInfo (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAppInfo == 8 ) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAppInfo == 9 ) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAppInfo == 10 ) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAppInfo == 11 ) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"CallHighProbabilityCompletion = %i",s_octet4);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpCallAppInfo == 12 ) {
+
+ u_octet4_loop_CallAppCarrier = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of CallAppCarrier = %u",u_octet4_loop_CallAppCarrier);
+ }
+
+ for (i_CallAppCarrier=0; i_CallAppCarrier < u_octet4_loop_CallAppCarrier; i_CallAppCarrier++) {
+
+ /* Begin struct "org_csapi_cc_TpCarrier" */
+
+
+
+ decode_org_csapi_cc_TpCarrier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_TpCarrier" */
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/cc/mpccs/TpAppMultiPartyCallBack:1.0 */
+
+static void decode_org_csapi_cc_mpccs_TpAppMultiPartyCallBack_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpAppMultiPartyCallBack;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/cc/mpccs/TpAppMultiPartyCallBack:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAppMultiPartyCallBack = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_mpccs_TpAppMultiPartyCallBackRefType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/cc/mpccs/TpAppMultiPartyCallBackRefType:1.0
+ */
+
+ disc_s_TpAppMultiPartyCallBack = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpAppMultiPartyCallBack == 1 ) {
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpAppMultiPartyCallBack == 2 ) {
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpAppMultiPartyCallBack == 3 ) {
+
+ /* Begin struct "org_csapi_cc_mpccs_TpAppCallLegCallBack" */
+
+
+
+ decode_org_csapi_cc_mpccs_TpAppCallLegCallBack_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mpccs_TpAppCallLegCallBack" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/cc/mmccs/TpMediaStreamDataTypeRequest:1.0 */
+
+static void decode_org_csapi_cc_mmccs_TpMediaStreamDataTypeRequest_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpMediaStreamDataTypeRequest;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/cc/mmccs/TpMediaStreamDataTypeRequest:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMediaStreamDataTypeRequest = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_mmccs_TpMediaStreamDataTypeRequestType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/cc/mmccs/TpMediaStreamDataTypeRequestType:1.0
+ */
+
+ disc_s_TpMediaStreamDataTypeRequest = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpMediaStreamDataTypeRequest == 0 ) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"Audio = %i",s_octet4);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMediaStreamDataTypeRequest == 1 ) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"Video = %i",s_octet4);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMediaStreamDataTypeRequest == 2 ) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"Data = %i",s_octet4);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+}
+
+/* Union = IDL:org/csapi/cc/mmccs/TpAppMultiMediaCallBack:1.0 */
+
+static void decode_org_csapi_cc_mmccs_TpAppMultiMediaCallBack_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpAppMultiMediaCallBack;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/cc/mmccs/TpAppMultiMediaCallBack:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAppMultiMediaCallBack = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_mmccs_TpAppMultiMediaCallBackRefType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/cc/mmccs/TpAppMultiMediaCallBackRefType:1.0
+ */
+
+ disc_s_TpAppMultiMediaCallBack = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpAppMultiMediaCallBack == 1 ) {
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpAppMultiMediaCallBack == 2 ) {
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpAppMultiMediaCallBack == 3 ) {
+
+ /* Begin struct "org_csapi_cc_mmccs_TpAppMultiMediaCallLegCallBack" */
+
+
+
+ decode_org_csapi_cc_mmccs_TpAppMultiMediaCallLegCallBack_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mmccs_TpAppMultiMediaCallLegCallBack" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/cc/cccs/TpConfPolicy:1.0 */
+
+static void decode_org_csapi_cc_cccs_TpConfPolicy_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpConfPolicy;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/cc/cccs/TpConfPolicy:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpConfPolicy = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cc_cccs_TpConfPolicyType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/cc/cccs/TpConfPolicyType:1.0
+ */
+
+ disc_s_TpConfPolicy = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpConfPolicy == 1 ) {
+
+ /* Begin struct "org_csapi_cc_cccs_TpMonoMediaConfPolicy" */
+
+
+
+ decode_org_csapi_cc_cccs_TpMonoMediaConfPolicy_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_cccs_TpMonoMediaConfPolicy" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpConfPolicy == 2 ) {
+
+ /* Begin struct "org_csapi_cc_cccs_TpMultiMediaConfPolicy" */
+
+
+
+ decode_org_csapi_cc_cccs_TpMultiMediaConfPolicy_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_cccs_TpMultiMediaConfPolicy" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/ui/TpUITargetObject:1.0 */
+
+static void decode_org_csapi_ui_TpUITargetObject_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpUITargetObject;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/ui/TpUITargetObject:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpUITargetObject = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_ui_TpUITargetObjectType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/ui/TpUITargetObjectType:1.0
+ */
+
+ disc_s_TpUITargetObject = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpUITargetObject == 0 ) {
+
+ /* Begin struct "org_csapi_cc_gccs_TpCallIdentifier" */
+
+
+
+ decode_org_csapi_cc_gccs_TpCallIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_gccs_TpCallIdentifier" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpUITargetObject == 1 ) {
+
+ /* Begin struct "org_csapi_cc_mpccs_TpMultiPartyCallIdentifier" */
+
+
+
+ decode_org_csapi_cc_mpccs_TpMultiPartyCallIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mpccs_TpMultiPartyCallIdentifier" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpUITargetObject == 2 ) {
+
+ /* Begin struct "org_csapi_cc_mpccs_TpCallLegIdentifier" */
+
+
+
+ decode_org_csapi_cc_mpccs_TpCallLegIdentifier_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_cc_mpccs_TpCallLegIdentifier" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+}
+
+/* Union = IDL:org/csapi/mm/TpBindingEntry:1.0 */
+
+static void decode_org_csapi_mm_TpBindingEntry_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpBindingEntry;
+ gint32 s_octet4;
+ gfloat my_float;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/mm/TpBindingEntry:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpBindingEntry = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mm_TpBindingEntryType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/mm/TpBindingEntryType:1.0
+ */
+
+ disc_s_TpBindingEntry = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpBindingEntry == 1 ) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"UBExpires = %i",s_octet4);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpBindingEntry == 2 ) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpBindingEntry == 3 ) {
+
+ my_float = get_CDR_float(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"UBPreference = %.6e",my_float);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/dsc/TpDataSessionChargeOrder:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionChargeOrder_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpDataSessionChargeOrder;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/dsc/TpDataSessionChargeOrder:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpDataSessionChargeOrder = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_dsc_TpDataSessionChargeOrderCategory,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/dsc/TpDataSessionChargeOrderCategory:1.0
+ */
+
+ disc_s_TpDataSessionChargeOrder = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpDataSessionChargeOrder == 0 ) {
+
+ /* Begin struct "org_csapi_dsc_TpChargePerVolume" */
+
+
+
+ decode_org_csapi_dsc_TpChargePerVolume_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_dsc_TpChargePerVolume" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpDataSessionChargeOrder == 1 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"NetworkCharge (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+}
+
+/* Union = IDL:org/csapi/dsc/TpDataSessionAdditionalErrorInfo:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionAdditionalErrorInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpDataSessionAdditionalErrorInfo;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/dsc/TpDataSessionAdditionalErrorInfo:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpDataSessionAdditionalErrorInfo = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_dsc_TpDataSessionErrorType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/dsc/TpDataSessionErrorType:1.0
+ */
+
+ disc_s_TpDataSessionAdditionalErrorInfo = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpDataSessionAdditionalErrorInfo == 1 ) {
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"DataSessionErrorInvalidAddress = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_TpAddressError,"Unknown Enum Value"));
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/dsc/TpDataSessionAdditionalReportInfo:1.0 */
+
+static void decode_org_csapi_dsc_TpDataSessionAdditionalReportInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpDataSessionAdditionalReportInfo;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/dsc/TpDataSessionAdditionalReportInfo:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpDataSessionAdditionalReportInfo = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_dsc_TpDataSessionReportType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/dsc/TpDataSessionReportType:1.0
+ */
+
+ disc_s_TpDataSessionAdditionalReportInfo = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpDataSessionAdditionalReportInfo == 2 ) {
+
+ /* Begin struct "org_csapi_dsc_TpDataSessionReleaseCause" */
+
+
+
+ decode_org_csapi_dsc_TpDataSessionReleaseCause_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_dsc_TpDataSessionReleaseCause" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/gms/TpMessageInfoProperty:1.0 */
+
+static void decode_org_csapi_gms_TpMessageInfoProperty_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpMessageInfoProperty;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/gms/TpMessageInfoProperty:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMessageInfoProperty = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_gms_TpMessageInfoPropertyName,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/gms/TpMessageInfoPropertyName:1.0
+ */
+
+ disc_s_TpMessageInfoProperty = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpMessageInfoProperty == 1 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MessagingMessageID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageInfoProperty == 2 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MessagingMessageSubject (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageInfoProperty == 3 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MessagingMessageDateSent (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageInfoProperty == 4 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MessagingMessageDateReceived (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageInfoProperty == 5 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MessagingMessageDateChanged (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageInfoProperty == 6 ) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageInfoProperty == 7 ) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageInfoProperty == 8 ) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageInfoProperty == 9 ) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageInfoProperty == 10 ) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"MessagingMessageSize = %i",s_octet4);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageInfoProperty == 11 ) {
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"MessagingMessagePriority = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_gms_TpMessagePriority,"Unknown Enum Value"));
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageInfoProperty == 12 ) {
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"MessagingMessageFormat = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_gms_TpMessageFormat,"Unknown Enum Value"));
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageInfoProperty == 13 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MessagingMessageFolder (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageInfoProperty == 14 ) {
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"MessagingMessageStatus = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_gms_TpMessageStatus,"Unknown Enum Value"));
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/gms/TpMailboxInfoProperty:1.0 */
+
+static void decode_org_csapi_gms_TpMailboxInfoProperty_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpMailboxInfoProperty;
+ gchar *seq = NULL;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/gms/TpMailboxInfoProperty:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMailboxInfoProperty = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_gms_TpMailboxInfoPropertyName,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/gms/TpMailboxInfoPropertyName:1.0
+ */
+
+ disc_s_TpMailboxInfoProperty = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpMailboxInfoProperty == 1 ) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMailboxInfoProperty == 2 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MessagingMailboxOwner (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMailboxInfoProperty == 3 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MessagingMailboxFolder (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMailboxInfoProperty == 4 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MessagingMailboxDateCreated (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMailboxInfoProperty == 5 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MessagingMailboxDateChanged (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/gms/TpMessagingEventInfo:1.0 */
+
+static void decode_org_csapi_gms_TpMessagingEventInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpMessagingEventInfo;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/gms/TpMessagingEventInfo:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMessagingEventInfo = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_gms_TpMessagingEventName,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/gms/TpMessagingEventName:1.0
+ */
+
+ disc_s_TpMessagingEventInfo = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpMessagingEventInfo == 0 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"EventNameUndefined (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessagingEventInfo == 1 ) {
+
+ /* Begin struct "org_csapi_gms_TpGMSNewMessageArrivedInfo" */
+
+
+
+ decode_org_csapi_gms_TpGMSNewMessageArrivedInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_gms_TpGMSNewMessageArrivedInfo" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+}
+
+/* Union = IDL:org/csapi/gms/TpMessagingEventCriteria:1.0 */
+
+static void decode_org_csapi_gms_TpMessagingEventCriteria_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpMessagingEventCriteria;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/gms/TpMessagingEventCriteria:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMessagingEventCriteria = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_gms_TpMessagingEventName,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/gms/TpMessagingEventName:1.0
+ */
+
+ disc_s_TpMessagingEventCriteria = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpMessagingEventCriteria == 1 ) {
+
+ /* Begin struct "org_csapi_gms_TpGMSNewMessageArrivedCriteria" */
+
+
+
+ decode_org_csapi_gms_TpGMSNewMessageArrivedCriteria_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_gms_TpGMSNewMessageArrivedCriteria" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/gms/TpFolderInfoProperty:1.0 */
+
+static void decode_org_csapi_gms_TpFolderInfoProperty_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpFolderInfoProperty;
+ gchar *seq = NULL;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/gms/TpFolderInfoProperty:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpFolderInfoProperty = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_gms_TpFolderInfoPropertyName,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/gms/TpFolderInfoPropertyName:1.0
+ */
+
+ disc_s_TpFolderInfoProperty = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpFolderInfoProperty == 1 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MessagingFolderID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpFolderInfoProperty == 2 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MessagingFolderMessage (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpFolderInfoProperty == 3 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MessagingFolderSubfolder (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpFolderInfoProperty == 4 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MessagingFolderDateCreated (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpFolderInfoProperty == 5 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MessagingFolderDateChanged (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/cs/TpChargingParameterValue:1.0 */
+
+static void decode_org_csapi_cs_TpChargingParameterValue_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpChargingParameterValue;
+ gint32 s_octet4;
+ gfloat my_float;
+ gchar *seq = NULL;
+ guint8 u_octet1;
+ guint32 u_octet4_loop_OctetValue;
+ guint32 i_OctetValue;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/cs/TpChargingParameterValue:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpChargingParameterValue = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cs_TpChargingParameterValueType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/cs/TpChargingParameterValueType:1.0
+ */
+
+ disc_s_TpChargingParameterValue = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpChargingParameterValue == 0 ) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"IntValue = %i",s_octet4);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpChargingParameterValue == 1 ) {
+
+ my_float = get_CDR_float(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"FloatValue = %.6e",my_float);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpChargingParameterValue == 2 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"StringValue (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpChargingParameterValue == 3 ) {
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"BooleanValue = %u",u_octet1);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpChargingParameterValue == 4 ) {
+
+ u_octet4_loop_OctetValue = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of OctetValue = %u",u_octet4_loop_OctetValue);
+ }
+
+ for (i_OctetValue=0; i_OctetValue < u_octet4_loop_OctetValue; i_OctetValue++) {
+
+ u_octet1 = get_CDR_octet(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"OctetValue = %u",u_octet1);
+ }
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+}
+
+/* Union = IDL:org/csapi/cs/TpAppInformation:1.0 */
+
+static void decode_org_csapi_cs_TpAppInformation_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpAppInformation;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/cs/TpAppInformation:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpAppInformation = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_cs_TpAppInformationType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/cs/TpAppInformationType:1.0
+ */
+
+ disc_s_TpAppInformation = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpAppInformation == 0 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"Timestamp (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+}
+
+/* Union = IDL:org/csapi/policy/TpPolicyType:1.0 */
+
+static void decode_org_csapi_policy_TpPolicyType_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpPolicyType;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/policy/TpPolicyType:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpPolicyType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_policy_TpPolicyTypeInfo,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/policy/TpPolicyTypeInfo:1.0
+ */
+
+ disc_s_TpPolicyType = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpPolicyType == 0 ) {
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"SimpleType = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_TpSimpleAttributeTypeInfo,"Unknown Enum Value"));
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPolicyType == 1 ) {
+
+ /* Begin struct "org_csapi_policy_TpPolicyType_TpPolicyRecordType" */
+
+
+
+ decode_org_csapi_policy_TpPolicyType_TpPolicyRecordType_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_policy_TpPolicyType_TpPolicyRecordType" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPolicyType == 2 ) {
+
+ /* Begin struct "org_csapi_policy_TpPolicyType_TpPolicyListType" */
+
+
+
+ decode_org_csapi_policy_TpPolicyType_TpPolicyListType_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_policy_TpPolicyType_TpPolicyListType" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPolicyType == 3 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"StructuredType (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPolicyType == 4 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"XMLString (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+}
+
+/* Union = IDL:org/csapi/pam/TpPAMContextData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMContextData_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpPAMContextData;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/pam/TpPAMContextData:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpPAMContextData = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_pam_TpPAMContextName,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/pam/TpPAMContextName:1.0
+ */
+
+ disc_s_TpPAMContextData = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpPAMContextData == 1 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMCommunicationContext" */
+
+
+
+ decode_org_csapi_pam_TpPAMCommunicationContext_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMCommunicationContext" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/pam/TpPAMEventInfo:1.0 */
+
+static void decode_org_csapi_pam_TpPAMEventInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpPAMEventInfo;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/pam/TpPAMEventInfo:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpPAMEventInfo = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_pam_TpPAMEventName,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/pam/TpPAMEventName:1.0
+ */
+
+ disc_s_TpPAMEventInfo = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpPAMEventInfo == 0 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMIPSEventData" */
+
+
+
+ decode_org_csapi_pam_TpPAMIPSEventData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMIPSEventData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPAMEventInfo == 1 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMAVCEventData" */
+
+
+
+ decode_org_csapi_pam_TpPAMAVCEventData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAVCEventData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPAMEventInfo == 2 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMWCEventData" */
+
+
+
+ decode_org_csapi_pam_TpPAMWCEventData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMWCEventData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPAMEventInfo == 3 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMICEventData" */
+
+
+
+ decode_org_csapi_pam_TpPAMICEventData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMICEventData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPAMEventInfo == 4 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMIDEventData" */
+
+
+
+ decode_org_csapi_pam_TpPAMIDEventData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMIDEventData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPAMEventInfo == 5 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMGMCEventData" */
+
+
+
+ decode_org_csapi_pam_TpPAMGMCEventData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMGMCEventData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPAMEventInfo == 6 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMACEventData" */
+
+
+
+ decode_org_csapi_pam_TpPAMACEventData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMACEventData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPAMEventInfo == 7 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMADEventData" */
+
+
+
+ decode_org_csapi_pam_TpPAMADEventData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMADEventData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPAMEventInfo == 8 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMAAEventData" */
+
+
+
+ decode_org_csapi_pam_TpPAMAAEventData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAAEventData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPAMEventInfo == 9 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMAUEventData" */
+
+
+
+ decode_org_csapi_pam_TpPAMAUEventData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAUEventData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPAMEventInfo == 10 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMCCEventData" */
+
+
+
+ decode_org_csapi_pam_TpPAMCCEventData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMCCEventData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPAMEventInfo == 11 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMACPSEventData" */
+
+
+
+ decode_org_csapi_pam_TpPAMACPSEventData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMACPSEventData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPAMEventInfo == 12 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMAPSEventData" */
+
+
+
+ decode_org_csapi_pam_TpPAMAPSEventData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAPSEventData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+}
+
+/* Union = IDL:org/csapi/pam/TpPAMNotificationInfo:1.0 */
+
+static void decode_org_csapi_pam_TpPAMNotificationInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpPAMNotificationInfo;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/pam/TpPAMNotificationInfo:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpPAMNotificationInfo = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_pam_TpPAMEventName,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/pam/TpPAMEventName:1.0
+ */
+
+ disc_s_TpPAMNotificationInfo = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpPAMNotificationInfo == 0 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMIPSNotificationData" */
+
+
+
+ decode_org_csapi_pam_TpPAMIPSNotificationData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMIPSNotificationData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPAMNotificationInfo == 1 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMAVCNotificationData" */
+
+
+
+ decode_org_csapi_pam_TpPAMAVCNotificationData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAVCNotificationData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPAMNotificationInfo == 2 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMWCNotificationData" */
+
+
+
+ decode_org_csapi_pam_TpPAMWCNotificationData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMWCNotificationData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPAMNotificationInfo == 3 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMICNotificationData" */
+
+
+
+ decode_org_csapi_pam_TpPAMICNotificationData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMICNotificationData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPAMNotificationInfo == 4 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMIDNotificationData" */
+
+
+
+ decode_org_csapi_pam_TpPAMIDNotificationData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMIDNotificationData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPAMNotificationInfo == 5 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMGMCNotificationData" */
+
+
+
+ decode_org_csapi_pam_TpPAMGMCNotificationData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMGMCNotificationData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPAMNotificationInfo == 6 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMACNotificationData" */
+
+
+
+ decode_org_csapi_pam_TpPAMACNotificationData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMACNotificationData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPAMNotificationInfo == 7 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMADNotificationData" */
+
+
+
+ decode_org_csapi_pam_TpPAMADNotificationData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMADNotificationData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPAMNotificationInfo == 8 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMAANotificationData" */
+
+
+
+ decode_org_csapi_pam_TpPAMAANotificationData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAANotificationData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPAMNotificationInfo == 9 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMAUNotificationData" */
+
+
+
+ decode_org_csapi_pam_TpPAMAUNotificationData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAUNotificationData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPAMNotificationInfo == 10 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMCCNotificationData" */
+
+
+
+ decode_org_csapi_pam_TpPAMCCNotificationData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMCCNotificationData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPAMNotificationInfo == 11 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMACPSNotificationData" */
+
+
+
+ decode_org_csapi_pam_TpPAMACPSNotificationData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMACPSNotificationData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpPAMNotificationInfo == 12 ) {
+
+ /* Begin struct "org_csapi_pam_TpPAMAPSNotificationData" */
+
+
+
+ decode_org_csapi_pam_TpPAMAPSNotificationData_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_pam_TpPAMAPSNotificationData" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+}
+
+/* Union = IDL:org/csapi/pam/TpPAMPreferenceData:1.0 */
+
+static void decode_org_csapi_pam_TpPAMPreferenceData_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpPAMPreferenceData;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/pam/TpPAMPreferenceData:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpPAMPreferenceData = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_pam_TpPAMPreferenceType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/pam/TpPAMPreferenceType:1.0
+ */
+
+ disc_s_TpPAMPreferenceData = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpPAMPreferenceData == 1 ) {
+
+ get_CDR_object(tvb, pinfo, tree, offset, stream_is_big_endian, boundary);
+
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/mmm/TpFolderInfoProperty:1.0 */
+
+static void decode_org_csapi_mmm_TpFolderInfoProperty_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpFolderInfoProperty;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/mmm/TpFolderInfoProperty:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpFolderInfoProperty = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpFolderInfoPropertyName,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/mmm/TpFolderInfoPropertyName:1.0
+ */
+
+ disc_s_TpFolderInfoProperty = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpFolderInfoProperty == 1 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"FolderDateCreated (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpFolderInfoProperty == 2 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"FolderDateChanged (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpFolderInfoProperty == 3 ) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"FolderSize = %i",s_octet4);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpFolderInfoProperty == 4 ) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"FolderNumberOfMessages = %i",s_octet4);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/mmm/TpMailboxInfoProperty:1.0 */
+
+static void decode_org_csapi_mmm_TpMailboxInfoProperty_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpMailboxInfoProperty;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/mmm/TpMailboxInfoProperty:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMailboxInfoProperty = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMailboxInfoPropertyName,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/mmm/TpMailboxInfoPropertyName:1.0
+ */
+
+ disc_s_TpMailboxInfoProperty = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpMailboxInfoProperty == 1 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MailboxOwner (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMailboxInfoProperty == 2 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MailboxDateCreated (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMailboxInfoProperty == 3 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MailboxDateChanged (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMailboxInfoProperty == 4 ) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"MailboxSize = %i",s_octet4);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/mmm/TpMessageInfoProperty:1.0 */
+
+static void decode_org_csapi_mmm_TpMessageInfoProperty_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpMessageInfoProperty;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/mmm/TpMessageInfoProperty:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMessageInfoProperty = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessageInfoPropertyName,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/mmm/TpMessageInfoPropertyName:1.0
+ */
+
+ disc_s_TpMessageInfoProperty = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpMessageInfoProperty == 1 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MessageDateCreated (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageInfoProperty == 2 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MessageDateReceived (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageInfoProperty == 3 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MessageDateChanged (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageInfoProperty == 4 ) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"MessageSize = %i",s_octet4);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageInfoProperty == 5 ) {
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"MessageStatus = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMailboxMessageStatus,"Unknown Enum Value"));
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/mmm/TpMessageHeaderField:1.0 */
+
+static void decode_org_csapi_mmm_TpMessageHeaderField_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpMessageHeaderField;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_From;
+ guint32 i_From;
+ guint32 u_octet4_loop_ReplyTo;
+ guint32 i_ReplyTo;
+ guint32 u_octet4_loop_To;
+ guint32 i_To;
+ guint32 u_octet4_loop_Cc;
+ guint32 i_Cc;
+ guint32 u_octet4_loop_Bcc;
+ guint32 i_Bcc;
+ guint32 u_octet4_loop_InReplyTo;
+ guint32 i_InReplyTo;
+ guint32 u_octet4_loop_References;
+ guint32 i_References;
+ guint32 u_octet4_loop_Keywords;
+ guint32 i_Keywords;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/mmm/TpMessageHeaderField:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMessageHeaderField = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessageHeaderFieldType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/mmm/TpMessageHeaderFieldType:1.0
+ */
+
+ disc_s_TpMessageHeaderField = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpMessageHeaderField == 0 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DateSent (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageHeaderField == 1 ) {
+
+ u_octet4_loop_From = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of From = %u",u_octet4_loop_From);
+ }
+
+ for (i_From=0; i_From < u_octet4_loop_From; i_From++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageHeaderField == 2 ) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageHeaderField == 3 ) {
+
+ u_octet4_loop_ReplyTo = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of ReplyTo = %u",u_octet4_loop_ReplyTo);
+ }
+
+ for (i_ReplyTo=0; i_ReplyTo < u_octet4_loop_ReplyTo; i_ReplyTo++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageHeaderField == 4 ) {
+
+ u_octet4_loop_To = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of To = %u",u_octet4_loop_To);
+ }
+
+ for (i_To=0; i_To < u_octet4_loop_To; i_To++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageHeaderField == 5 ) {
+
+ u_octet4_loop_Cc = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of Cc = %u",u_octet4_loop_Cc);
+ }
+
+ for (i_Cc=0; i_Cc < u_octet4_loop_Cc; i_Cc++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageHeaderField == 6 ) {
+
+ u_octet4_loop_Bcc = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of Bcc = %u",u_octet4_loop_Bcc);
+ }
+
+ for (i_Bcc=0; i_Bcc < u_octet4_loop_Bcc; i_Bcc++) {
+
+ /* Begin struct "org_csapi_TpAddress" */
+
+
+
+ decode_org_csapi_TpAddress_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_TpAddress" */
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageHeaderField == 7 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"RFC822MessageID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageHeaderField == 8 ) {
+
+ u_octet4_loop_InReplyTo = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of InReplyTo = %u",u_octet4_loop_InReplyTo);
+ }
+
+ for (i_InReplyTo=0; i_InReplyTo < u_octet4_loop_InReplyTo; i_InReplyTo++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"InReplyTo (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageHeaderField == 9 ) {
+
+ u_octet4_loop_References = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of References = %u",u_octet4_loop_References);
+ }
+
+ for (i_References=0; i_References < u_octet4_loop_References; i_References++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"References (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageHeaderField == 10 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"Subject (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageHeaderField == 11 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"Comments (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageHeaderField == 12 ) {
+
+ u_octet4_loop_Keywords = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of Keywords = %u",u_octet4_loop_Keywords);
+ }
+
+ for (i_Keywords=0; i_Keywords < u_octet4_loop_Keywords; i_Keywords++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"Keywords (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageHeaderField == 13 ) {
+
+ /* Begin struct "org_csapi_mmm_TpGenericHeaderField" */
+
+
+
+ decode_org_csapi_mmm_TpGenericHeaderField_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpGenericHeaderField" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageHeaderField == 14 ) {
+
+ /* Begin struct "org_csapi_mmm_TpGenericHeaderField" */
+
+
+
+ decode_org_csapi_mmm_TpGenericHeaderField_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpGenericHeaderField" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageHeaderField == 15 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MimeVersion (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageHeaderField == 16 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MimeContent (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageHeaderField == 17 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MimeEncoding (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageHeaderField == 18 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MimeID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageHeaderField == 19 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MimeDescription (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageHeaderField == 20 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"MimeDisposition (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageHeaderField == 21 ) {
+
+ /* Begin struct "org_csapi_mmm_TpGenericHeaderField" */
+
+
+
+ decode_org_csapi_mmm_TpGenericHeaderField_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpGenericHeaderField" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageHeaderField == 22 ) {
+
+ /* Begin struct "org_csapi_mmm_TpGenericHeaderField" */
+
+
+
+ decode_org_csapi_mmm_TpGenericHeaderField_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpGenericHeaderField" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageHeaderField == 23 ) {
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"Priority = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessagePriority,"Unknown Enum Value"));
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+}
+
+/* Union = IDL:org/csapi/mmm/TpDeliveryTime:1.0 */
+
+static void decode_org_csapi_mmm_TpDeliveryTime_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpDeliveryTime;
+ gchar *seq = NULL;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/mmm/TpDeliveryTime:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpDeliveryTime = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpDeliveryTimeType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/mmm/TpDeliveryTimeType:1.0
+ */
+
+ disc_s_TpDeliveryTime = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpDeliveryTime == 1 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DeliveryTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/mmm/TpMessageTreatment:1.0 */
+
+static void decode_org_csapi_mmm_TpMessageTreatment_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpMessageTreatment;
+ gint32 s_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/mmm/TpMessageTreatment:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMessageTreatment = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessageTreatmentType,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/mmm/TpMessageTreatmentType:1.0
+ */
+
+ disc_s_TpMessageTreatment = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpMessageTreatment == 1 ) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"DeliveryReport = %i",s_octet4);
+ }
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageTreatment == 2 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"BillingID (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageTreatment == 3 ) {
+
+ /* Begin union "org_csapi_mmm_TpDeliveryTime" */
+
+
+ decode_org_csapi_mmm_TpDeliveryTime_un(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End union "org_csapi_mmm_TpDeliveryTime" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessageTreatment == 4 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ValidityTime (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+}
+
+/* Union = IDL:org/csapi/mmm/TpMessagingEventCriteria:1.0 */
+
+static void decode_org_csapi_mmm_TpMessagingEventCriteria_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpMessagingEventCriteria;
+ gint16 s_octet2;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/mmm/TpMessagingEventCriteria:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMessagingEventCriteria = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessagingEventName,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/mmm/TpMessagingEventName:1.0
+ */
+
+ disc_s_TpMessagingEventCriteria = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpMessagingEventCriteria == 1 ) {
+
+ /* Begin struct "org_csapi_mmm_TpNewMailboxMessageArrivedCriteria" */
+
+
+
+ decode_org_csapi_mmm_TpNewMailboxMessageArrivedCriteria_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpNewMailboxMessageArrivedCriteria" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessagingEventCriteria == 2 ) {
+
+ /* Begin struct "org_csapi_mmm_TpNewMessageArrivedCriteria" */
+
+
+
+ decode_org_csapi_mmm_TpNewMessageArrivedCriteria_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpNewMessageArrivedCriteria" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+
+ /* Default Union Case Start */
+
+ s_octet2 = get_CDR_short(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-2,2,"Dummy = %i",s_octet2);
+ }
+
+ /* Default Union Case End */
+
+}
+
+/* Union = IDL:org/csapi/mmm/TpMessagingEventInfo:1.0 */
+
+static void decode_org_csapi_mmm_TpMessagingEventInfo_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gint32 disc_s_TpMessagingEventInfo;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ /*
+ * IDL Union Start - IDL:org/csapi/mmm/TpMessagingEventInfo:1.0
+ */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TpMessagingEventInfo = %u (%s)",u_octet4,val_to_str(u_octet4,org_csapi_mmm_TpMessagingEventName,"Unknown Enum Value"));
+ }
+
+ /*
+ * IDL Union - Discriminant - IDL:org/csapi/mmm/TpMessagingEventName:1.0
+ */
+
+ disc_s_TpMessagingEventInfo = (gint32) u_octet4; /* save Enum Value discriminant and cast to gint32 */
+
+ if (disc_s_TpMessagingEventInfo == 0 ) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"EventNameUndefined (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessagingEventInfo == 1 ) {
+
+ /* Begin struct "org_csapi_mmm_TpNewMailboxMessageArrivedInfo" */
+
+
+
+ decode_org_csapi_mmm_TpNewMailboxMessageArrivedInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpNewMailboxMessageArrivedInfo" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+ if (disc_s_TpMessagingEventInfo == 2 ) {
+
+ /* Begin struct "org_csapi_mmm_TpNewMessageArrivedInfo" */
+
+
+
+ decode_org_csapi_mmm_TpNewMessageArrivedInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "org_csapi_mmm_TpNewMessageArrivedInfo" */
+
+ return; /* End Compare for this discriminant type */
+ }
+
+}
+
+/*
+ * Called once we accept the packet as being for us; it sets the
+ * Protocol and Info columns and creates the top-level protocol
+ * tree item.
+ */
+static proto_tree *start_dissecting(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ptree, int *offset) {
+
+ proto_item *ti = NULL;
+ proto_tree *tree = NULL; /* init later, inside if(tree) */
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "PARLAY");
+
+ /*
+ * Do not clear COL_INFO, as nothing is being written there by
+ * this dissector yet. So leave it as is from the GIOP dissector.
+ * TODO: add something useful to COL_INFO
+ * col_clear(pinfo->cinfo, COL_INFO);
+ */
+
+ if (ptree) {
+ ti = proto_tree_add_item(ptree, proto_parlay, tvb, *offset, -1, ENC_NA);
+ tree = proto_item_add_subtree(ti, ett_parlay);
+ }
+ return tree;
+}
+
+static gboolean dissect_parlay(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ptree, int *offset, MessageHeader *header, gchar *operation, gchar *idlname) {
+
+ gboolean stream_is_big_endian; /* big endianess */
+ proto_tree *tree _U_;
+#define process_RequestOperation(){ \
+ proto_item *pi; \
+ if(header->message_type == Reply){ col_append_fstr(pinfo->cinfo, COL_INFO, " op = %s",operation); }; /* fill-up info column */ \
+ pi=proto_tree_add_string_format_value(ptree,hf_operationrequest,tvb,0,0,operation," %s",operation);PROTO_ITEM_SET_GENERATED(pi); /* fill-up the field */ \
+ };
+
+ stream_is_big_endian = is_big_endian(header); /* get endianess */
+
+ /* If we have a USER Exception, then decode it and return */
+
+ if ((header->message_type == Reply) && (header->rep_status == USER_EXCEPTION)) {
+
+ return decode_user_exception(tvb, pinfo, ptree, offset, header, operation, stream_is_big_endian);
+
+ }
+
+ switch(header->message_type) {
+
+ case Request:
+ case Reply:
+
+ if (strcmp(operation, org_csapi_IpService_setCallback_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/IpService") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_IpService_setCallback(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_IpService_setCallbackWithSessionID_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/IpService") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_IpService_setCallbackWithSessionID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_access_trust_and_security_IpInitial_initiateAuthentication_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_access/trust_and_security/IpInitial") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_access_trust_and_security_IpInitial_initiateAuthentication(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_access_trust_and_security_IpInitial_initiateAuthenticationWithVersion_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_access/trust_and_security/IpInitial") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_access_trust_and_security_IpInitial_initiateAuthenticationWithVersion(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_access_trust_and_security_IpAuthentication_requestAccess_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_access/trust_and_security/IpAuthentication") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_access_trust_and_security_IpAuthentication_requestAccess(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_access_trust_and_security_IpClientAccess_terminateAccess_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_access/trust_and_security/IpClientAccess") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_access_trust_and_security_IpClientAccess_terminateAccess(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_access_trust_and_security_IpAccess_obtainInterface_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_access/trust_and_security/IpAccess") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_access_trust_and_security_IpAccess_obtainInterface(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_access_trust_and_security_IpAccess_obtainInterfaceWithCallback_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_access/trust_and_security/IpAccess") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_access_trust_and_security_IpAccess_obtainInterfaceWithCallback(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_access_trust_and_security_IpAccess_endAccess_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_access/trust_and_security/IpAccess") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_access_trust_and_security_IpAccess_endAccess(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_access_trust_and_security_IpAccess_listInterfaces_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_access/trust_and_security/IpAccess") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_access_trust_and_security_IpAccess_listInterfaces(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_access_trust_and_security_IpAccess_releaseInterface_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_access/trust_and_security/IpAccess") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_access_trust_and_security_IpAccess_releaseInterface(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_access_trust_and_security_IpAccess_selectSigningAlgorithm_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_access/trust_and_security/IpAccess") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_access_trust_and_security_IpAccess_selectSigningAlgorithm(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_access_trust_and_security_IpAccess_terminateAccess_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_access/trust_and_security/IpAccess") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_access_trust_and_security_IpAccess_terminateAccess(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_access_trust_and_security_IpAccess_relinquishInterface_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_access/trust_and_security/IpAccess") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_access_trust_and_security_IpAccess_relinquishInterface(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_access_trust_and_security_IpClientAPILevelAuthentication_authenticate_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_access/trust_and_security/IpClientAPILevelAuthentication") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_access_trust_and_security_IpClientAPILevelAuthentication_authenticate(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_access_trust_and_security_IpClientAPILevelAuthentication_abortAuthentication_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_access/trust_and_security/IpClientAPILevelAuthentication") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_access_trust_and_security_IpClientAPILevelAuthentication_abortAuthentication(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_access_trust_and_security_IpClientAPILevelAuthentication_authenticationSucceeded_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_access/trust_and_security/IpClientAPILevelAuthentication") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_access_trust_and_security_IpClientAPILevelAuthentication_authenticationSucceeded(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_access_trust_and_security_IpClientAPILevelAuthentication_challenge_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_access/trust_and_security/IpClientAPILevelAuthentication") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_access_trust_and_security_IpClientAPILevelAuthentication_challenge(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_access_trust_and_security_IpAPILevelAuthentication_selectEncryptionMethod_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_access/trust_and_security/IpAPILevelAuthentication") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_access_trust_and_security_IpAPILevelAuthentication_selectEncryptionMethod(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_access_trust_and_security_IpAPILevelAuthentication_authenticate_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_access/trust_and_security/IpAPILevelAuthentication") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_access_trust_and_security_IpAPILevelAuthentication_authenticate(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_access_trust_and_security_IpAPILevelAuthentication_abortAuthentication_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_access/trust_and_security/IpAPILevelAuthentication") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_access_trust_and_security_IpAPILevelAuthentication_abortAuthentication(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_access_trust_and_security_IpAPILevelAuthentication_authenticationSucceeded_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_access/trust_and_security/IpAPILevelAuthentication") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_access_trust_and_security_IpAPILevelAuthentication_authenticationSucceeded(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_access_trust_and_security_IpAPILevelAuthentication_selectAuthenticationMechanism_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_access/trust_and_security/IpAPILevelAuthentication") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_access_trust_and_security_IpAPILevelAuthentication_selectAuthenticationMechanism(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_access_trust_and_security_IpAPILevelAuthentication_challenge_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_access/trust_and_security/IpAPILevelAuthentication") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_access_trust_and_security_IpAPILevelAuthentication_challenge(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_notification_IpAppEventNotification_reportNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/notification/IpAppEventNotification") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_notification_IpAppEventNotification_reportNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_notification_IpAppEventNotification_notificationTerminated_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/notification/IpAppEventNotification") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_notification_IpAppEventNotification_notificationTerminated(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_notification_IpEventNotification_createNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/notification/IpEventNotification") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_notification_IpEventNotification_createNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_notification_IpEventNotification_destroyNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/notification/IpEventNotification") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_notification_IpEventNotification_destroyNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppFaultManager_activityTestRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_activityTestRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppFaultManager_appActivityTestReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_appActivityTestReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppFaultManager_fwFaultReportInd_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_fwFaultReportInd(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppFaultManager_fwFaultRecoveryInd_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_fwFaultRecoveryInd(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppFaultManager_svcUnavailableInd_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_svcUnavailableInd(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppFaultManager_genFaultStatsRecordRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_genFaultStatsRecordRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppFaultManager_fwUnavailableInd_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_fwUnavailableInd(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppFaultManager_activityTestErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_activityTestErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppFaultManager_genFaultStatsRecordErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_genFaultStatsRecordErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppFaultManager_appUnavailableInd_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_appUnavailableInd(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppFaultManager_genFaultStatsRecordReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_genFaultStatsRecordReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppFaultManager_svcAvailStatusInd_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_svcAvailStatusInd(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppFaultManager_generateFaultStatisticsRecordRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_generateFaultStatisticsRecordRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppFaultManager_generateFaultStatisticsRecordErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_generateFaultStatisticsRecordErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppFaultManager_generateFaultStatisticsRecordReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_generateFaultStatisticsRecordReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppFaultManager_fwAvailStatusInd_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppFaultManager_fwAvailStatusInd(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppLoadManager_queryAppLoadReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppLoadManager_queryAppLoadReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppLoadManager_queryLoadRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppLoadManager_queryLoadRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppLoadManager_queryLoadErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppLoadManager_queryLoadErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppLoadManager_loadLevelNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppLoadManager_loadLevelNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppLoadManager_resumeNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppLoadManager_resumeNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppLoadManager_suspendNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppLoadManager_suspendNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppLoadManager_createLoadLevelNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppLoadManager_createLoadLevelNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppLoadManager_destroyLoadLevelNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppLoadManager_destroyLoadLevelNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppLoadManager_queryAppLoadStatsReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppLoadManager_queryAppLoadStatsReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppLoadManager_queryLoadStatsRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppLoadManager_queryLoadStatsRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppLoadManager_queryLoadStatsErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppLoadManager_queryLoadStatsErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpLoadManager_reportLoad_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpLoadManager_reportLoad(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpLoadManager_queryLoadReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpLoadManager_queryLoadReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpLoadManager_queryAppLoadRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpLoadManager_queryAppLoadRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpLoadManager_queryAppLoadErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpLoadManager_queryAppLoadErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpLoadManager_createLoadLevelNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpLoadManager_createLoadLevelNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpLoadManager_destroyLoadLevelNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpLoadManager_destroyLoadLevelNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpLoadManager_resumeNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpLoadManager_resumeNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpLoadManager_suspendNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpLoadManager_suspendNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpLoadManager_queryLoadStatsReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpLoadManager_queryLoadStatsReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpLoadManager_queryAppLoadStatsRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpLoadManager_queryAppLoadStatsRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpLoadManager_queryAppLoadStatsErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpLoadManager_queryAppLoadStatsErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppOAM_systemDateTimeQuery_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppOAM") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppOAM_systemDateTimeQuery(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpOAM_systemDateTimeQuery_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpOAM") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpOAM_systemDateTimeQuery(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpFaultManager_activityTestReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpFaultManager_activityTestReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpFaultManager_appActivityTestRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpFaultManager_appActivityTestRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpFaultManager_svcUnavailableInd_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpFaultManager_svcUnavailableInd(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpFaultManager_genFaultStatsRecordReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpFaultManager_genFaultStatsRecordReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpFaultManager_appActivityTestErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpFaultManager_appActivityTestErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpFaultManager_appUnavailableInd_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpFaultManager_appUnavailableInd(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpFaultManager_genFaultStatsRecordRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpFaultManager_genFaultStatsRecordRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpFaultManager_genFaultStatsRecordErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpFaultManager_genFaultStatsRecordErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpFaultManager_appAvailStatusInd_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpFaultManager_appAvailStatusInd(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpFaultManager_generateFaultStatisticsRecordReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpFaultManager_generateFaultStatisticsRecordReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpFaultManager_generateFaultStatisticsRecordRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpFaultManager_generateFaultStatisticsRecordRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpFaultManager_generateFaultStatisticsRecordErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpFaultManager_generateFaultStatisticsRecordErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpHeartBeatMgmt_enableHeartBeat_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpHeartBeatMgmt") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpHeartBeatMgmt_enableHeartBeat(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpHeartBeatMgmt_disableHeartBeat_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpHeartBeatMgmt") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpHeartBeatMgmt_disableHeartBeat(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpHeartBeatMgmt_changeInterval_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpHeartBeatMgmt") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpHeartBeatMgmt_changeInterval(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppHeartBeat_pulse_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppHeartBeat") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppHeartBeat_pulse(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpHeartBeat_pulse_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpHeartBeat") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpHeartBeat_pulse(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppHeartBeatMgmt_enableAppHeartBeat_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppHeartBeatMgmt") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppHeartBeatMgmt_enableAppHeartBeat(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppHeartBeatMgmt_disableAppHeartBeat_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppHeartBeatMgmt") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppHeartBeatMgmt_disableAppHeartBeat(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_integrity_IpAppHeartBeatMgmt_changeInterval_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/integrity/IpAppHeartBeatMgmt") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_integrity_IpAppHeartBeatMgmt_changeInterval(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_discovery_IpServiceDiscovery_listServiceTypes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/discovery/IpServiceDiscovery") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_discovery_IpServiceDiscovery_listServiceTypes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_discovery_IpServiceDiscovery_describeServiceType_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/discovery/IpServiceDiscovery") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_discovery_IpServiceDiscovery_describeServiceType(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_discovery_IpServiceDiscovery_discoverService_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/discovery/IpServiceDiscovery") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_discovery_IpServiceDiscovery_discoverService(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_discovery_IpServiceDiscovery_listSubscribedServices_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/discovery/IpServiceDiscovery") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_discovery_IpServiceDiscovery_listSubscribedServices(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_service_agreement_IpAppServiceAgreementManagement_signServiceAgreement_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/service_agreement/IpAppServiceAgreementManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_service_agreement_IpAppServiceAgreementManagement_signServiceAgreement(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_service_agreement_IpAppServiceAgreementManagement_terminateServiceAgreement_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/service_agreement/IpAppServiceAgreementManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_service_agreement_IpAppServiceAgreementManagement_terminateServiceAgreement(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_service_agreement_IpServiceAgreementManagement_signServiceAgreement_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/service_agreement/IpServiceAgreementManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_service_agreement_IpServiceAgreementManagement_signServiceAgreement(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_service_agreement_IpServiceAgreementManagement_terminateServiceAgreement_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/service_agreement/IpServiceAgreementManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_service_agreement_IpServiceAgreementManagement_terminateServiceAgreement(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_service_agreement_IpServiceAgreementManagement_selectService_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/service_agreement/IpServiceAgreementManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_service_agreement_IpServiceAgreementManagement_selectService(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_application_service_agreement_IpServiceAgreementManagement_initiateSignServiceAgreement_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_application/service_agreement/IpServiceAgreementManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_application_service_agreement_IpServiceAgreementManagement_initiateSignServiceAgreement(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileManagement_createServiceProfile_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceProfileManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileManagement_createServiceProfile(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileManagement_modifyServiceProfile_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceProfileManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileManagement_modifyServiceProfile(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileManagement_deleteServiceProfile_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceProfileManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileManagement_deleteServiceProfile(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileManagement_assign_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceProfileManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileManagement_assign(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileManagement_deassign_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceProfileManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileManagement_deassign(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileManagement_requestConflictInfo_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceProfileManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileManagement_requestConflictInfo(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileInfoQuery_listServiceProfiles_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceProfileInfoQuery") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileInfoQuery_listServiceProfiles(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileInfoQuery_describeServiceProfile_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceProfileInfoQuery") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileInfoQuery_describeServiceProfile(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileInfoQuery_listAssignedMembers_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceProfileInfoQuery") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceProfileInfoQuery_listAssignedMembers(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceContractManagement_createServiceContract_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceContractManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceContractManagement_createServiceContract(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceContractManagement_modifyServiceContract_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceContractManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceContractManagement_modifyServiceContract(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceContractManagement_deleteServiceContract_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceContractManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceContractManagement_deleteServiceContract(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceContractInfoQuery_describeServiceContract_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceContractInfoQuery") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceContractInfoQuery_describeServiceContract(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceContractInfoQuery_listServiceContracts_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceContractInfoQuery") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceContractInfoQuery_listServiceContracts(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceContractInfoQuery_listServiceProfiles_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceContractInfoQuery") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpServiceContractInfoQuery_listServiceProfiles(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpEntOpAccountManagement_modifyEntOpAccount_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpEntOpAccountManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpEntOpAccountManagement_modifyEntOpAccount(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpEntOpAccountManagement_deleteEntOpAccount_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpEntOpAccountManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpEntOpAccountManagement_deleteEntOpAccount(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpEntOpAccountInfoQuery_describeEntOpAccount_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpEntOpAccountInfoQuery") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpEntOpAccountInfoQuery_describeEntOpAccount(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_createClientApp_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_createClientApp(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_modifyClientApp_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_modifyClientApp(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_deleteClientApp_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_deleteClientApp(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_createSAG_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_createSAG(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_modifySAG_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_modifySAG(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_deleteSAG_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_deleteSAG(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_addSAGMembers_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_addSAGMembers(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_removeSAGMembers_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_removeSAGMembers(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_requestConflictInfo_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppManagement_requestConflictInfo(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppInfoQuery_describeClientApp_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppInfoQuery") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppInfoQuery_describeClientApp(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppInfoQuery_listClientApps_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppInfoQuery") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppInfoQuery_listClientApps(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppInfoQuery_describeSAG_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppInfoQuery") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppInfoQuery_describeSAG(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppInfoQuery_listSAGs_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppInfoQuery") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppInfoQuery_listSAGs(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppInfoQuery_listSAGMembers_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppInfoQuery") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppInfoQuery_listSAGMembers(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppInfoQuery_listClientAppMembership_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppInfoQuery") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_service_subscription_IpClientAppInfoQuery_listClientAppMembership(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_notification_IpClientEventNotification_reportNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/notification/IpClientEventNotification") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_notification_IpClientEventNotification_reportNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_notification_IpClientEventNotification_notificationTerminated_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/notification/IpClientEventNotification") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_notification_IpClientEventNotification_notificationTerminated(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_notification_IpEventNotification_createNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/notification/IpEventNotification") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_notification_IpEventNotification_createNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_enterprise_operator_notification_IpEventNotification_destroyNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_enterprise_operator/notification/IpEventNotification") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_enterprise_operator_notification_IpEventNotification_destroyNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_discovery_IpFwServiceDiscovery_listServiceTypes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/discovery/IpFwServiceDiscovery") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_discovery_IpFwServiceDiscovery_listServiceTypes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_discovery_IpFwServiceDiscovery_describeServiceType_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/discovery/IpFwServiceDiscovery") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_discovery_IpFwServiceDiscovery_describeServiceType(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_discovery_IpFwServiceDiscovery_discoverService_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/discovery/IpFwServiceDiscovery") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_discovery_IpFwServiceDiscovery_discoverService(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_discovery_IpFwServiceDiscovery_listRegisteredServices_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/discovery/IpFwServiceDiscovery") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_discovery_IpFwServiceDiscovery_listRegisteredServices(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_service_lifecycle_IpServiceInstanceLifecycleManager_createServiceManager_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/service_lifecycle/IpServiceInstanceLifecycleManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_service_lifecycle_IpServiceInstanceLifecycleManager_createServiceManager(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_service_lifecycle_IpServiceInstanceLifecycleManager_destroyServiceManager_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/service_lifecycle/IpServiceInstanceLifecycleManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_service_lifecycle_IpServiceInstanceLifecycleManager_destroyServiceManager(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_service_registration_IpFwServiceRegistration_registerService_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/service_registration/IpFwServiceRegistration") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_service_registration_IpFwServiceRegistration_registerService(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_service_registration_IpFwServiceRegistration_announceServiceAvailability_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/service_registration/IpFwServiceRegistration") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_service_registration_IpFwServiceRegistration_announceServiceAvailability(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_service_registration_IpFwServiceRegistration_unregisterService_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/service_registration/IpFwServiceRegistration") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_service_registration_IpFwServiceRegistration_unregisterService(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_service_registration_IpFwServiceRegistration_describeService_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/service_registration/IpFwServiceRegistration") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_service_registration_IpFwServiceRegistration_describeService(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_service_registration_IpFwServiceRegistration_unannounceService_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/service_registration/IpFwServiceRegistration") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_service_registration_IpFwServiceRegistration_unannounceService(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_service_registration_IpFwServiceRegistration_registerServiceSubType_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/service_registration/IpFwServiceRegistration") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_service_registration_IpFwServiceRegistration_registerServiceSubType(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcLoadManager_querySvcLoadReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcLoadManager_querySvcLoadReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcLoadManager_queryLoadRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcLoadManager_queryLoadRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcLoadManager_queryLoadErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcLoadManager_queryLoadErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcLoadManager_loadLevelNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcLoadManager_loadLevelNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcLoadManager_suspendNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcLoadManager_suspendNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcLoadManager_resumeNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcLoadManager_resumeNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcLoadManager_createLoadLevelNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcLoadManager_createLoadLevelNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcLoadManager_destroyLoadLevelNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcLoadManager_destroyLoadLevelNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcLoadManager_querySvcLoadStatsReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcLoadManager_querySvcLoadStatsReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcLoadManager_queryLoadStatsRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcLoadManager_queryLoadStatsRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcLoadManager_queryLoadStatsErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcLoadManager_queryLoadStatsErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwLoadManager_reportLoad_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwLoadManager_reportLoad(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwLoadManager_queryLoadReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwLoadManager_queryLoadReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwLoadManager_querySvcLoadRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwLoadManager_querySvcLoadRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwLoadManager_querySvcLoadErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwLoadManager_querySvcLoadErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwLoadManager_createLoadLevelNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwLoadManager_createLoadLevelNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwLoadManager_destroyLoadLevelNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwLoadManager_destroyLoadLevelNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwLoadManager_suspendNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwLoadManager_suspendNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwLoadManager_resumeNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwLoadManager_resumeNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwLoadManager_queryLoadStatsReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwLoadManager_queryLoadStatsReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwLoadManager_querySvcLoadStatsRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwLoadManager_querySvcLoadStatsRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwLoadManager_querySvcLoadStatsErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwLoadManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwLoadManager_querySvcLoadStatsErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcFaultManager_activityTestRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_activityTestRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcFaultManager_svcActivityTestReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_svcActivityTestReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcFaultManager_fwFaultReportInd_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_fwFaultReportInd(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcFaultManager_fwFaultRecoveryInd_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_fwFaultRecoveryInd(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcFaultManager_fwUnavailableInd_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_fwUnavailableInd(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcFaultManager_svcUnavailableInd_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_svcUnavailableInd(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcFaultManager_appUnavailableInd_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_appUnavailableInd(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcFaultManager_genFaultStatsRecordRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_genFaultStatsRecordRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcFaultManager_activityTestErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_activityTestErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcFaultManager_genFaultStatsRecordErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_genFaultStatsRecordErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcFaultManager_genFaultStatsRecordReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_genFaultStatsRecordReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcFaultManager_generateFaultStatsRecordReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_generateFaultStatsRecordReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcFaultManager_appAvailStatusInd_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_appAvailStatusInd(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcFaultManager_generateFaultStatisticsRecordRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_generateFaultStatisticsRecordRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcFaultManager_generateFaultStatisticsRecordErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_generateFaultStatisticsRecordErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcFaultManager_generateFaultStatisticsRecordReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_generateFaultStatisticsRecordReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcFaultManager_fwAvailStatusInd_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcFaultManager_fwAvailStatusInd(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwFaultManager_activityTestReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_activityTestReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwFaultManager_svcActivityTestRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_svcActivityTestRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwFaultManager_appUnavailableInd_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_appUnavailableInd(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwFaultManager_genFaultStatsRecordReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_genFaultStatsRecordReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwFaultManager_svcUnavailableInd_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_svcUnavailableInd(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwFaultManager_svcActivityTestErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_svcActivityTestErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwFaultManager_genFaultStatsRecordRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_genFaultStatsRecordRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwFaultManager_genFaultStatsRecordErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_genFaultStatsRecordErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwFaultManager_generateFaultStatsRecordRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_generateFaultStatsRecordRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwFaultManager_generateFaultStatsRecordErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_generateFaultStatsRecordErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwFaultManager_svcAvailStatusInd_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_svcAvailStatusInd(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwFaultManager_generateFaultStatisticsRecordReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_generateFaultStatisticsRecordReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwFaultManager_generateFaultStatisticsRecordRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_generateFaultStatisticsRecordRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwFaultManager_generateFaultStatisticsRecordErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwFaultManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwFaultManager_generateFaultStatisticsRecordErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcOAM_systemDateTimeQuery_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcOAM") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcOAM_systemDateTimeQuery(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwOAM_systemDateTimeQuery_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwOAM") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwOAM_systemDateTimeQuery(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwHeartBeatMgmt_enableHeartBeat_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwHeartBeatMgmt") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwHeartBeatMgmt_enableHeartBeat(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwHeartBeatMgmt_disableHeartBeat_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwHeartBeatMgmt") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwHeartBeatMgmt_disableHeartBeat(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwHeartBeatMgmt_changeInterval_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwHeartBeatMgmt") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwHeartBeatMgmt_changeInterval(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcHeartBeat_pulse_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcHeartBeat") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcHeartBeat_pulse(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpFwHeartBeat_pulse_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpFwHeartBeat") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpFwHeartBeat_pulse(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcHeartBeatMgmt_enableSvcHeartBeat_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcHeartBeatMgmt") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcHeartBeatMgmt_enableSvcHeartBeat(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcHeartBeatMgmt_disableSvcHeartBeat_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcHeartBeatMgmt") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcHeartBeatMgmt_disableSvcHeartBeat(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_integrity_IpSvcHeartBeatMgmt_changeInterval_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/integrity/IpSvcHeartBeatMgmt") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_integrity_IpSvcHeartBeatMgmt_changeInterval(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_notification_IpFwEventNotification_createNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/notification/IpFwEventNotification") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_notification_IpFwEventNotification_createNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_notification_IpFwEventNotification_destroyNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/notification/IpFwEventNotification") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_notification_IpFwEventNotification_destroyNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_notification_IpSvcEventNotification_reportNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/notification/IpSvcEventNotification") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_notification_IpSvcEventNotification_reportNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_fw_fw_service_notification_IpSvcEventNotification_notificationTerminated_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/fw/fw_service/notification/IpSvcEventNotification") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_fw_fw_service_notification_IpSvcEventNotification_notificationTerminated(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpAppCall_routeRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpAppCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpAppCall_routeRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpAppCall_routeErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpAppCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpAppCall_routeErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpAppCall_getCallInfoRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpAppCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpAppCall_getCallInfoRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpAppCall_getCallInfoErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpAppCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpAppCall_getCallInfoErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpAppCall_superviseCallRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpAppCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpAppCall_superviseCallRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpAppCall_superviseCallErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpAppCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpAppCall_superviseCallErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpAppCall_callFaultDetected_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpAppCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpAppCall_callFaultDetected(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpAppCall_getMoreDialledDigitsRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpAppCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpAppCall_getMoreDialledDigitsRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpAppCall_getMoreDialledDigitsErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpAppCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpAppCall_getMoreDialledDigitsErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpAppCall_callEnded_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpAppCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpAppCall_callEnded(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpCall_routeReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpCall_routeReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpCall_release_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpCall_release(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpCall_deassignCall_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpCall_deassignCall(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpCall_getCallInfoReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpCall_getCallInfoReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpCall_setCallChargePlan_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpCall_setCallChargePlan(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpCall_setAdviceOfCharge_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpCall_setAdviceOfCharge(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpCall_getMoreDialledDigitsReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpCall_getMoreDialledDigitsReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpCall_superviseCallReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpCall_superviseCallReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpCall_continueProcessing_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpCall_continueProcessing(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpAppCallControlManager_callAborted_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpAppCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpAppCallControlManager_callAborted(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpAppCallControlManager_callEventNotify_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpAppCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpAppCallControlManager_callEventNotify(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpAppCallControlManager_callNotificationInterrupted_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpAppCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpAppCallControlManager_callNotificationInterrupted(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpAppCallControlManager_callNotificationContinued_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpAppCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpAppCallControlManager_callNotificationContinued(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpAppCallControlManager_callOverloadEncountered_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpAppCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpAppCallControlManager_callOverloadEncountered(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpAppCallControlManager_callOverloadCeased_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpAppCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpAppCallControlManager_callOverloadCeased(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpAppCallControlManager_abortMultipleCalls_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpAppCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpAppCallControlManager_abortMultipleCalls(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpCallControlManager_createCall_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpCallControlManager_createCall(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpCallControlManager_enableCallNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpCallControlManager_enableCallNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpCallControlManager_disableCallNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpCallControlManager_disableCallNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpCallControlManager_setCallLoadControl_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpCallControlManager_setCallLoadControl(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpCallControlManager_changeCallNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpCallControlManager_changeCallNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_gccs_IpCallControlManager_getCriteria_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/gccs/IpCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_gccs_IpCallControlManager_getCriteria(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpAppCallLeg_eventReportRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpAppCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpAppCallLeg_eventReportRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpAppCallLeg_eventReportErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpAppCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpAppCallLeg_eventReportErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpAppCallLeg_attachMediaRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpAppCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpAppCallLeg_attachMediaRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpAppCallLeg_attachMediaErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpAppCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpAppCallLeg_attachMediaErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpAppCallLeg_detachMediaRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpAppCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpAppCallLeg_detachMediaRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpAppCallLeg_detachMediaErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpAppCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpAppCallLeg_detachMediaErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpAppCallLeg_getInfoRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpAppCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpAppCallLeg_getInfoRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpAppCallLeg_getInfoErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpAppCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpAppCallLeg_getInfoErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpAppCallLeg_routeErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpAppCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpAppCallLeg_routeErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpAppCallLeg_superviseRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpAppCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpAppCallLeg_superviseRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpAppCallLeg_superviseErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpAppCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpAppCallLeg_superviseErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpAppCallLeg_callLegEnded_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpAppCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpAppCallLeg_callLegEnded(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpMultiPartyCallControlManager_createCall_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpMultiPartyCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpMultiPartyCallControlManager_createCall(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpMultiPartyCallControlManager_createNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpMultiPartyCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpMultiPartyCallControlManager_createNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpMultiPartyCallControlManager_destroyNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpMultiPartyCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpMultiPartyCallControlManager_destroyNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpMultiPartyCallControlManager_changeNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpMultiPartyCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpMultiPartyCallControlManager_changeNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpMultiPartyCallControlManager_getNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpMultiPartyCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpMultiPartyCallControlManager_getNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpMultiPartyCallControlManager_setCallLoadControl_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpMultiPartyCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpMultiPartyCallControlManager_setCallLoadControl(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpMultiPartyCallControlManager_enableNotifications_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpMultiPartyCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpMultiPartyCallControlManager_enableNotifications(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpMultiPartyCallControlManager_disableNotifications_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpMultiPartyCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpMultiPartyCallControlManager_disableNotifications(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpMultiPartyCallControlManager_getNextNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpMultiPartyCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpMultiPartyCallControlManager_getNextNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpCallLeg_routeReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpCallLeg_routeReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpCallLeg_eventReportReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpCallLeg_eventReportReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpCallLeg_release_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpCallLeg_release(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpCallLeg_getInfoReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpCallLeg_getInfoReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpCallLeg_getCall_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpCallLeg_getCall(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpCallLeg_attachMediaReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpCallLeg_attachMediaReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpCallLeg_detachMediaReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpCallLeg_detachMediaReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpCallLeg_getCurrentDestinationAddress_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpCallLeg_getCurrentDestinationAddress(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpCallLeg_continueProcessing_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpCallLeg_continueProcessing(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpCallLeg_setChargePlan_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpCallLeg_setChargePlan(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpCallLeg_setAdviceOfCharge_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpCallLeg_setAdviceOfCharge(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpCallLeg_superviseReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpCallLeg_superviseReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpCallLeg_deassign_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpCallLeg_deassign(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpCallLeg_getProperties_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpCallLeg_getProperties(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpCallLeg_setProperties_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpCallLeg_setProperties(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpAppMultiPartyCall_getInfoRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpAppMultiPartyCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpAppMultiPartyCall_getInfoRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpAppMultiPartyCall_getInfoErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpAppMultiPartyCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpAppMultiPartyCall_getInfoErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpAppMultiPartyCall_superviseRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpAppMultiPartyCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpAppMultiPartyCall_superviseRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpAppMultiPartyCall_superviseErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpAppMultiPartyCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpAppMultiPartyCall_superviseErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpAppMultiPartyCall_callEnded_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpAppMultiPartyCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpAppMultiPartyCall_callEnded(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpAppMultiPartyCall_createAndRouteCallLegErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpAppMultiPartyCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpAppMultiPartyCall_createAndRouteCallLegErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpMultiPartyCall_getCallLegs_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpMultiPartyCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpMultiPartyCall_getCallLegs(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpMultiPartyCall_createCallLeg_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpMultiPartyCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpMultiPartyCall_createCallLeg(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpMultiPartyCall_createAndRouteCallLegReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpMultiPartyCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpMultiPartyCall_createAndRouteCallLegReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpMultiPartyCall_release_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpMultiPartyCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpMultiPartyCall_release(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpMultiPartyCall_deassignCall_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpMultiPartyCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpMultiPartyCall_deassignCall(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpMultiPartyCall_getInfoReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpMultiPartyCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpMultiPartyCall_getInfoReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpMultiPartyCall_setChargePlan_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpMultiPartyCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpMultiPartyCall_setChargePlan(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpMultiPartyCall_setAdviceOfCharge_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpMultiPartyCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpMultiPartyCall_setAdviceOfCharge(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpMultiPartyCall_superviseReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpMultiPartyCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpMultiPartyCall_superviseReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_reportNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpAppMultiPartyCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_reportNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_callAborted_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpAppMultiPartyCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_callAborted(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_managerInterrupted_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpAppMultiPartyCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_managerInterrupted(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_managerResumed_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpAppMultiPartyCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_managerResumed(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_callOverloadEncountered_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpAppMultiPartyCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_callOverloadEncountered(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_callOverloadCeased_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpAppMultiPartyCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_callOverloadCeased(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_abortMultipleCalls_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mpccs/IpAppMultiPartyCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mpccs_IpAppMultiPartyCallControlManager_abortMultipleCalls(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mmccs_IpAppMultiMediaCall_superviseVolumeRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mmccs/IpAppMultiMediaCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mmccs_IpAppMultiMediaCall_superviseVolumeRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mmccs_IpAppMultiMediaCall_superviseVolumeErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mmccs/IpAppMultiMediaCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mmccs_IpAppMultiMediaCall_superviseVolumeErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mmccs_IpAppMultiMediaCallLeg_mediaStreamMonitorRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mmccs/IpAppMultiMediaCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mmccs_IpAppMultiMediaCallLeg_mediaStreamMonitorRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mmccs_IpMultiMediaStream_subtract_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mmccs/IpMultiMediaStream") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mmccs_IpMultiMediaStream_subtract(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mmccs_IpMultiMediaCallLeg_mediaStreamAllow_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mmccs/IpMultiMediaCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mmccs_IpMultiMediaCallLeg_mediaStreamAllow(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mmccs_IpMultiMediaCallLeg_mediaStreamMonitorReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mmccs/IpMultiMediaCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mmccs_IpMultiMediaCallLeg_mediaStreamMonitorReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mmccs_IpMultiMediaCallLeg_getMediaStreams_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mmccs/IpMultiMediaCallLeg") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mmccs_IpMultiMediaCallLeg_getMediaStreams(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mmccs_IpMultiMediaCall_superviseVolumeReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mmccs/IpMultiMediaCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mmccs_IpMultiMediaCall_superviseVolumeReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mmccs_IpAppMultiMediaCallControlManager_reportMediaNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mmccs/IpAppMultiMediaCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mmccs_IpAppMultiMediaCallControlManager_reportMediaNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mmccs_IpMultiMediaCallControlManager_createMediaNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mmccs/IpMultiMediaCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mmccs_IpMultiMediaCallControlManager_createMediaNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mmccs_IpMultiMediaCallControlManager_destroyMediaNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mmccs/IpMultiMediaCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mmccs_IpMultiMediaCallControlManager_destroyMediaNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mmccs_IpMultiMediaCallControlManager_changeMediaNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mmccs/IpMultiMediaCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mmccs_IpMultiMediaCallControlManager_changeMediaNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_mmccs_IpMultiMediaCallControlManager_getMediaNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/mmccs/IpMultiMediaCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_mmccs_IpMultiMediaCallControlManager_getMediaNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_cccs_IpAppSubConfCall_chairSelection_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/cccs/IpAppSubConfCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_cccs_IpAppSubConfCall_chairSelection(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_cccs_IpAppSubConfCall_floorRequest_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/cccs/IpAppSubConfCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_cccs_IpAppSubConfCall_floorRequest(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_cccs_IpAppConfCall_partyJoined_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/cccs/IpAppConfCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_cccs_IpAppConfCall_partyJoined(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_cccs_IpAppConfCall_leaveMonitorRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/cccs/IpAppConfCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_cccs_IpAppConfCall_leaveMonitorRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_cccs_IpConfCallControlManager_createConference_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/cccs/IpConfCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_cccs_IpConfCallControlManager_createConference(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_cccs_IpConfCallControlManager_checkResources_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/cccs/IpConfCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_cccs_IpConfCallControlManager_checkResources(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_cccs_IpConfCallControlManager_reserveResources_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/cccs/IpConfCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_cccs_IpConfCallControlManager_reserveResources(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_cccs_IpConfCallControlManager_freeResources_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/cccs/IpConfCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_cccs_IpConfCallControlManager_freeResources(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_cccs_IpAppConfCallControlManager_conferenceCreated_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/cccs/IpAppConfCallControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_cccs_IpAppConfCallControlManager_conferenceCreated(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_cccs_IpSubConfCall_splitSubConference_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/cccs/IpSubConfCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_cccs_IpSubConfCall_splitSubConference(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_cccs_IpSubConfCall_mergeSubConference_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/cccs/IpSubConfCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_cccs_IpSubConfCall_mergeSubConference(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_cccs_IpSubConfCall_moveCallLeg_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/cccs/IpSubConfCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_cccs_IpSubConfCall_moveCallLeg(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_cccs_IpSubConfCall_inspectVideo_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/cccs/IpSubConfCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_cccs_IpSubConfCall_inspectVideo(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_cccs_IpSubConfCall_inspectVideoCancel_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/cccs/IpSubConfCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_cccs_IpSubConfCall_inspectVideoCancel(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_cccs_IpSubConfCall_appointSpeaker_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/cccs/IpSubConfCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_cccs_IpSubConfCall_appointSpeaker(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_cccs_IpSubConfCall_chairSelection_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/cccs/IpSubConfCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_cccs_IpSubConfCall_chairSelection(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_cccs_IpSubConfCall_changeConferencePolicy_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/cccs/IpSubConfCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_cccs_IpSubConfCall_changeConferencePolicy(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_cccs_IpConfCall_getSubConferences_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/cccs/IpConfCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_cccs_IpConfCall_getSubConferences(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_cccs_IpConfCall_createSubConference_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/cccs/IpConfCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_cccs_IpConfCall_createSubConference(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_cccs_IpConfCall_leaveMonitorReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/cccs/IpConfCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_cccs_IpConfCall_leaveMonitorReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cc_cccs_IpConfCall_getConferenceAddress_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cc/cccs/IpConfCall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cc_cccs_IpConfCall_getConferenceAddress(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUI_sendInfoRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUI") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUI_sendInfoRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUI_sendInfoErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUI") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUI_sendInfoErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUI_sendInfoAndCollectRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUI") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUI_sendInfoAndCollectRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUI_sendInfoAndCollectErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUI") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUI_sendInfoAndCollectErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUI_userInteractionFaultDetected_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUI") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUI_userInteractionFaultDetected(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUICall_recordMessageRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUICall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUICall_recordMessageRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUICall_recordMessageErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUICall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUICall_recordMessageErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUICall_deleteMessageRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUICall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUICall_deleteMessageRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUICall_deleteMessageErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUICall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUICall_deleteMessageErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUICall_abortActionRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUICall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUICall_abortActionRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUICall_abortActionErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUICall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUICall_abortActionErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUICall_getMessageRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUICall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUICall_getMessageRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUICall_getMessageErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUICall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUICall_getMessageErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUIManager_userInteractionAborted_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUIManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUIManager_userInteractionAborted(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUIManager_userInteractionNotificationInterrupted_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUIManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUIManager_userInteractionNotificationInterrupted(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUIManager_userInteractionNotificationContinued_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUIManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUIManager_userInteractionNotificationContinued(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUIManager_reportEventNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUIManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUIManager_reportEventNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUIManager_abortMultipleUserInteractions_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUIManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUIManager_abortMultipleUserInteractions(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpUI_sendInfoReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpUI") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpUI_sendInfoReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpUI_sendInfoAndCollectReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpUI") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpUI_sendInfoAndCollectReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpUI_release_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpUI") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpUI_release(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpUI_setOriginatingAddress_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpUI") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpUI_setOriginatingAddress(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpUI_getOriginatingAddress_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpUI") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpUI_getOriginatingAddress(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpUICall_recordMessageReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpUICall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpUICall_recordMessageReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpUICall_deleteMessageReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpUICall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpUICall_deleteMessageReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpUICall_abortActionReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpUICall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpUICall_abortActionReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpUICall_getMessageReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpUICall") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpUICall_getMessageReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpUIManager_createUI_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpUIManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpUIManager_createUI(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpUIManager_createUICall_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpUIManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpUIManager_createUICall(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpUIManager_createNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpUIManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpUIManager_createNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpUIManager_destroyNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpUIManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpUIManager_destroyNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpUIManager_changeNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpUIManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpUIManager_changeNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpUIManager_getNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpUIManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpUIManager_getNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpUIManager_enableNotifications_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpUIManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpUIManager_enableNotifications(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpUIManager_disableNotifications_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpUIManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpUIManager_disableNotifications(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUIAdminManager_getMessageRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUIAdminManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUIAdminManager_getMessageRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUIAdminManager_getMessageErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUIAdminManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUIAdminManager_getMessageErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUIAdminManager_deleteMessageRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUIAdminManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUIAdminManager_deleteMessageRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUIAdminManager_deleteMessageErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUIAdminManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUIAdminManager_deleteMessageErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUIAdminManager_putMessageRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUIAdminManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUIAdminManager_putMessageRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUIAdminManager_putMessageErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUIAdminManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUIAdminManager_putMessageErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUIAdminManager_getMessageListRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUIAdminManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUIAdminManager_getMessageListRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpAppUIAdminManager_getMessageListErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpAppUIAdminManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpAppUIAdminManager_getMessageListErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpUIAdminManager_getMessageReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpUIAdminManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpUIAdminManager_getMessageReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpUIAdminManager_putMessageReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpUIAdminManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpUIAdminManager_putMessageReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpUIAdminManager_deleteMessageReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpUIAdminManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpUIAdminManager_deleteMessageReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_ui_IpUIAdminManager_getMessageListReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/ui/IpUIAdminManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_ui_IpUIAdminManager_getMessageListReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ul_IpAppUserLocation_locationReportRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ul/IpAppUserLocation") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ul_IpAppUserLocation_locationReportRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ul_IpAppUserLocation_locationReportErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ul/IpAppUserLocation") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ul_IpAppUserLocation_locationReportErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ul_IpAppUserLocation_extendedLocationReportRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ul/IpAppUserLocation") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ul_IpAppUserLocation_extendedLocationReportRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ul_IpAppUserLocation_extendedLocationReportErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ul/IpAppUserLocation") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ul_IpAppUserLocation_extendedLocationReportErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ul_IpAppUserLocation_periodicLocationReport_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ul/IpAppUserLocation") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ul_IpAppUserLocation_periodicLocationReport(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ul_IpAppUserLocation_periodicLocationReportErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ul/IpAppUserLocation") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ul_IpAppUserLocation_periodicLocationReportErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ul_IpUserLocation_locationReportReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ul/IpUserLocation") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ul_IpUserLocation_locationReportReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ul_IpUserLocation_extendedLocationReportReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ul/IpUserLocation") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ul_IpUserLocation_extendedLocationReportReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ul_IpUserLocation_periodicLocationReportingStartReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ul/IpUserLocation") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ul_IpUserLocation_periodicLocationReportingStartReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ul_IpUserLocation_periodicLocationReportingStop_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ul/IpUserLocation") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ul_IpUserLocation_periodicLocationReportingStop(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ul_IpUserLocation_getNextPeriodicLocationRequest_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ul/IpUserLocation") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ul_IpUserLocation_getNextPeriodicLocationRequest(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ul_IpAppTriggeredUserLocation_triggeredLocationReport_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ul/IpAppTriggeredUserLocation") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ul_IpAppTriggeredUserLocation_triggeredLocationReport(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ul_IpAppTriggeredUserLocation_triggeredLocationReportErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ul/IpAppTriggeredUserLocation") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ul_IpAppTriggeredUserLocation_triggeredLocationReportErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ul_IpTriggeredUserLocation_triggeredLocationReportingStartReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ul/IpTriggeredUserLocation") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ul_IpTriggeredUserLocation_triggeredLocationReportingStartReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ul_IpTriggeredUserLocation_triggeredLocationReportingStop_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ul/IpTriggeredUserLocation") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ul_IpTriggeredUserLocation_triggeredLocationReportingStop(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ul_IpTriggeredUserLocation_getNextTriggeredLocationRequest_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ul/IpTriggeredUserLocation") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ul_IpTriggeredUserLocation_getNextTriggeredLocationRequest(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ulc_IpAppUserLocationCamel_locationReportRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ulc/IpAppUserLocationCamel") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ulc_IpAppUserLocationCamel_locationReportRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ulc_IpAppUserLocationCamel_locationReportErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ulc/IpAppUserLocationCamel") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ulc_IpAppUserLocationCamel_locationReportErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ulc_IpAppUserLocationCamel_periodicLocationReport_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ulc/IpAppUserLocationCamel") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ulc_IpAppUserLocationCamel_periodicLocationReport(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ulc_IpAppUserLocationCamel_periodicLocationReportErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ulc/IpAppUserLocationCamel") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ulc_IpAppUserLocationCamel_periodicLocationReportErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ulc_IpAppUserLocationCamel_triggeredLocationReport_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ulc/IpAppUserLocationCamel") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ulc_IpAppUserLocationCamel_triggeredLocationReport(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ulc_IpAppUserLocationCamel_triggeredLocationReportErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ulc/IpAppUserLocationCamel") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ulc_IpAppUserLocationCamel_triggeredLocationReportErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ulc_IpUserLocationCamel_locationReportReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ulc/IpUserLocationCamel") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ulc_IpUserLocationCamel_locationReportReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ulc_IpUserLocationCamel_periodicLocationReportingStartReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ulc/IpUserLocationCamel") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ulc_IpUserLocationCamel_periodicLocationReportingStartReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ulc_IpUserLocationCamel_periodicLocationReportingStop_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ulc/IpUserLocationCamel") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ulc_IpUserLocationCamel_periodicLocationReportingStop(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ulc_IpUserLocationCamel_triggeredLocationReportingStartReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ulc/IpUserLocationCamel") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ulc_IpUserLocationCamel_triggeredLocationReportingStartReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ulc_IpUserLocationCamel_triggeredLocationReportingStop_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ulc/IpUserLocationCamel") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ulc_IpUserLocationCamel_triggeredLocationReportingStop(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ulc_IpUserLocationCamel_getNextPeriodicLocationRequest_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ulc/IpUserLocationCamel") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ulc_IpUserLocationCamel_getNextPeriodicLocationRequest(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ulc_IpUserLocationCamel_getNextTriggeredLocationRequest_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ulc/IpUserLocationCamel") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ulc_IpUserLocationCamel_getNextTriggeredLocationRequest(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ule_IpAppUserLocationEmergency_emergencyLocationReport_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ule/IpAppUserLocationEmergency") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ule_IpAppUserLocationEmergency_emergencyLocationReport(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ule_IpAppUserLocationEmergency_emergencyLocationReportErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ule/IpAppUserLocationEmergency") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ule_IpAppUserLocationEmergency_emergencyLocationReportErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ule_IpUserLocationEmergency_emergencyLocationReportReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ule/IpUserLocationEmergency") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ule_IpUserLocationEmergency_emergencyLocationReportReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ule_IpUserLocationEmergency_subscribeEmergencyLocationReports_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ule/IpUserLocationEmergency") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ule_IpUserLocationEmergency_subscribeEmergencyLocationReports(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ule_IpUserLocationEmergency_unSubscribeEmergencyLocationReports_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ule/IpUserLocationEmergency") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ule_IpUserLocationEmergency_unSubscribeEmergencyLocationReports(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_us_IpAppUserStatus_statusReportRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/us/IpAppUserStatus") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_us_IpAppUserStatus_statusReportRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_us_IpAppUserStatus_statusReportErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/us/IpAppUserStatus") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_us_IpAppUserStatus_statusReportErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_us_IpAppUserStatus_triggeredStatusReport_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/us/IpAppUserStatus") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_us_IpAppUserStatus_triggeredStatusReport(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_us_IpAppUserStatus_triggeredStatusReportErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/us/IpAppUserStatus") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_us_IpAppUserStatus_triggeredStatusReportErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_us_IpAppUserStatus_extendedStatusReportRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/us/IpAppUserStatus") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_us_IpAppUserStatus_extendedStatusReportRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_us_IpAppUserStatus_extendedStatusReportErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/us/IpAppUserStatus") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_us_IpAppUserStatus_extendedStatusReportErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_us_IpAppUserStatus_extTriggeredStatusReport_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/us/IpAppUserStatus") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_us_IpAppUserStatus_extTriggeredStatusReport(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_us_IpAppUserStatus_extTriggeredStatusReportErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/us/IpAppUserStatus") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_us_IpAppUserStatus_extTriggeredStatusReportErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_us_IpUserStatus_statusReportReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/us/IpUserStatus") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_us_IpUserStatus_statusReportReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_us_IpUserStatus_triggeredStatusReportingStartReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/us/IpUserStatus") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_us_IpUserStatus_triggeredStatusReportingStartReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_us_IpUserStatus_triggeredStatusReportingStop_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/us/IpUserStatus") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_us_IpUserStatus_triggeredStatusReportingStop(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_us_IpUserStatus_getNextTriggeredStatusRequest_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/us/IpUserStatus") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_us_IpUserStatus_getNextTriggeredStatusRequest(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_us_IpUserStatus_extendedStatusReportReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/us/IpUserStatus") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_us_IpUserStatus_extendedStatusReportReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_us_IpUserStatus_extTriggeredStatusReportingStartReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/us/IpUserStatus") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_us_IpUserStatus_extTriggeredStatusReportingStartReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_us_IpUserStatus_extTriggeredStatusReportingStop_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/us/IpUserStatus") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_us_IpUserStatus_extTriggeredStatusReportingStop(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ub_IpAppUserBinding_triggeredBindingRequestNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ub/IpAppUserBinding") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ub_IpAppUserBinding_triggeredBindingRequestNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ub_IpAppUserBinding_triggeredBindingRequestNotificationStartErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ub/IpAppUserBinding") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ub_IpAppUserBinding_triggeredBindingRequestNotificationStartErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ub_IpUserBinding_triggeredBindingRequestNotificationStartReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ub/IpUserBinding") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ub_IpUserBinding_triggeredBindingRequestNotificationStartReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mm_ub_IpUserBinding_triggeredBindingRequestNotificationStop_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mm/ub/IpUserBinding") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mm_ub_IpUserBinding_triggeredBindingRequestNotificationStop(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_termcap_IpTerminalCapabilities_getTerminalCapabilities_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/termcap/IpTerminalCapabilities") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_termcap_IpTerminalCapabilities_getTerminalCapabilities(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_termcap_IpAppExtendedTerminalCapabilities_triggeredTerminalCapabilityReport_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/termcap/IpAppExtendedTerminalCapabilities") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_termcap_IpAppExtendedTerminalCapabilities_triggeredTerminalCapabilityReport(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_termcap_IpAppExtendedTerminalCapabilities_triggeredTerminalCapabilityReportErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/termcap/IpAppExtendedTerminalCapabilities") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_termcap_IpAppExtendedTerminalCapabilities_triggeredTerminalCapabilityReportErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_termcap_IpExtendedTerminalCapabilities_triggeredTerminalCapabilityStartReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/termcap/IpExtendedTerminalCapabilities") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_termcap_IpExtendedTerminalCapabilities_triggeredTerminalCapabilityStartReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_termcap_IpExtendedTerminalCapabilities_triggeredTerminalCapabilityStop_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/termcap/IpExtendedTerminalCapabilities") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_termcap_IpExtendedTerminalCapabilities_triggeredTerminalCapabilityStop(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_dsc_IpAppDataSession_connectRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/dsc/IpAppDataSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_dsc_IpAppDataSession_connectRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_dsc_IpAppDataSession_connectErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/dsc/IpAppDataSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_dsc_IpAppDataSession_connectErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_dsc_IpAppDataSession_superviseDataSessionRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/dsc/IpAppDataSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_dsc_IpAppDataSession_superviseDataSessionRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_dsc_IpAppDataSession_superviseDataSessionErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/dsc/IpAppDataSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_dsc_IpAppDataSession_superviseDataSessionErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_dsc_IpAppDataSession_dataSessionFaultDetected_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/dsc/IpAppDataSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_dsc_IpAppDataSession_dataSessionFaultDetected(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_dsc_IpAppDataSessionControlManager_dataSessionAborted_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/dsc/IpAppDataSessionControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_dsc_IpAppDataSessionControlManager_dataSessionAborted(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_dsc_IpAppDataSessionControlManager_reportNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/dsc/IpAppDataSessionControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_dsc_IpAppDataSessionControlManager_reportNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_dsc_IpAppDataSessionControlManager_dataSessionNotificationContinued_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/dsc/IpAppDataSessionControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_dsc_IpAppDataSessionControlManager_dataSessionNotificationContinued(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_dsc_IpAppDataSessionControlManager_dataSessionNotificationInterrupted_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/dsc/IpAppDataSessionControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_dsc_IpAppDataSessionControlManager_dataSessionNotificationInterrupted(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_dsc_IpAppDataSessionControlManager_abortMultipleDataSessions_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/dsc/IpAppDataSessionControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_dsc_IpAppDataSessionControlManager_abortMultipleDataSessions(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_dsc_IpDataSession_connectReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/dsc/IpDataSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_dsc_IpDataSession_connectReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_dsc_IpDataSession_release_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/dsc/IpDataSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_dsc_IpDataSession_release(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_dsc_IpDataSession_superviseDataSessionReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/dsc/IpDataSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_dsc_IpDataSession_superviseDataSessionReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_dsc_IpDataSession_setDataSessionChargePlan_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/dsc/IpDataSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_dsc_IpDataSession_setDataSessionChargePlan(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_dsc_IpDataSession_setAdviceOfCharge_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/dsc/IpDataSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_dsc_IpDataSession_setAdviceOfCharge(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_dsc_IpDataSession_deassignDataSession_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/dsc/IpDataSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_dsc_IpDataSession_deassignDataSession(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_dsc_IpDataSession_continueProcessing_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/dsc/IpDataSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_dsc_IpDataSession_continueProcessing(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_dsc_IpDataSessionControlManager_createNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/dsc/IpDataSessionControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_dsc_IpDataSessionControlManager_createNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_dsc_IpDataSessionControlManager_destroyNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/dsc/IpDataSessionControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_dsc_IpDataSessionControlManager_destroyNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_dsc_IpDataSessionControlManager_changeNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/dsc/IpDataSessionControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_dsc_IpDataSessionControlManager_changeNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_dsc_IpDataSessionControlManager_enableNotifications_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/dsc/IpDataSessionControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_dsc_IpDataSessionControlManager_enableNotifications(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_dsc_IpDataSessionControlManager_disableNotifications_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/dsc/IpDataSessionControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_dsc_IpDataSessionControlManager_disableNotifications(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_dsc_IpDataSessionControlManager_getNotifications_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/dsc/IpDataSessionControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_dsc_IpDataSessionControlManager_getNotifications(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_dsc_IpDataSessionControlManager_createNotifications_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/dsc/IpDataSessionControlManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_dsc_IpDataSessionControlManager_createNotifications(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpMessagingManager_openMailbox_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpMessagingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpMessagingManager_openMailbox(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpMessagingManager_enableMessagingNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpMessagingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpMessagingManager_enableMessagingNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpMessagingManager_disableMessagingNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpMessagingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpMessagingManager_disableMessagingNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpAppMessagingManager_mailboxTerminated_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpAppMessagingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpAppMessagingManager_mailboxTerminated(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpAppMessagingManager_mailboxFaultDetected_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpAppMessagingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpAppMessagingManager_mailboxFaultDetected(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpAppMessagingManager_messagingEventNotify_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpAppMessagingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpAppMessagingManager_messagingEventNotify(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpAppMessagingManager_messagingNotificationTerminated_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpAppMessagingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpAppMessagingManager_messagingNotificationTerminated(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpMailbox_close_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpMailbox_close(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpMailbox_lock_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpMailbox_lock(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpMailbox_unlock_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpMailbox_unlock(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpMailbox_getInfoAmount_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpMailbox_getInfoAmount(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpMailbox_getInfoProperties_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpMailbox_getInfoProperties(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpMailbox_setInfoProperties_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpMailbox_setInfoProperties(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpMailbox_openFolder_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpMailbox_openFolder(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpMailbox_createFolder_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpMailbox_createFolder(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpMailbox_remove_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpMailbox_remove(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpMessage_getInfoAmount_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpMessage") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpMessage_getInfoAmount(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpMessage_getInfoProperties_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpMessage") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpMessage_getInfoProperties(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpMessage_setInfoProperties_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpMessage") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpMessage_setInfoProperties(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpMessage_remove_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpMessage") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpMessage_remove(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpMessage_getContent_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpMessage") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpMessage_getContent(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpMailboxFolder_getInfoAmount_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpMailboxFolder") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpMailboxFolder_getInfoAmount(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpMailboxFolder_getInfoProperties_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpMailboxFolder") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpMailboxFolder_getInfoProperties(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpMailboxFolder_setInfoProperties_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpMailboxFolder") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpMailboxFolder_setInfoProperties(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpMailboxFolder_putMessage_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpMailboxFolder") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpMailboxFolder_putMessage(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpMailboxFolder_getMessage_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpMailboxFolder") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpMailboxFolder_getMessage(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpMailboxFolder_close_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpMailboxFolder") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpMailboxFolder_close(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_gms_IpMailboxFolder_remove_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/gms/IpMailboxFolder") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_gms_IpMailboxFolder_remove(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpVPrP_getVPrPID_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpVPrP") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpVPrP_getVPrPID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpVPrP_getSlaID_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpVPrP") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpVPrP_getSlaID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpVPrP_getStatus_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpVPrP") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpVPrP_getStatus(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpVPrP_getProvisionedQoSInfo_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpVPrP") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpVPrP_getProvisionedQoSInfo(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpVPrP_getValidityInfo_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpVPrP") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpVPrP_getValidityInfo(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpVPrP_getPipeQoSInfo_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpVPrP") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpVPrP_getPipeQoSInfo(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpVPrP_getDsCodepoint_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpVPrP") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpVPrP_getDsCodepoint(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpVPrN_getVPrPList_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpVPrN") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpVPrN_getVPrPList(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpVPrN_getVPrP_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpVPrN") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpVPrN_getVPrP(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpVPrN_createVPrP_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpVPrN") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpVPrN_createVPrP(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpVPrN_deleteVPrP_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpVPrN") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpVPrN_deleteVPrP(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpQoSMenu_getTemplate_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpQoSMenu") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpQoSMenu_getTemplate(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpQoSMenu_getTemplateList_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpQoSMenu") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpQoSMenu_getTemplateList(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpConnectivityManager_getQoSMenu_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpConnectivityManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpConnectivityManager_getQoSMenu(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpConnectivityManager_getEnterpriseNetwork_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpConnectivityManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpConnectivityManager_getEnterpriseNetwork(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpQoSTemplate_getTemplateType_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpQoSTemplate") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpQoSTemplate_getTemplateType(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpQoSTemplate_getDescription_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpQoSTemplate") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpQoSTemplate_getDescription(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpQoSTemplate_setSlaID_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpQoSTemplate") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpQoSTemplate_setSlaID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpQoSTemplate_getPipeQoSInfo_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpQoSTemplate") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpQoSTemplate_getPipeQoSInfo(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpQoSTemplate_setPipeQoSInfo_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpQoSTemplate") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpQoSTemplate_setPipeQoSInfo(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpQoSTemplate_getValidityInfo_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpQoSTemplate") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpQoSTemplate_getValidityInfo(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpQoSTemplate_setValidityInfo_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpQoSTemplate") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpQoSTemplate_setValidityInfo(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpQoSTemplate_setProvisionedQoSInfo_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpQoSTemplate") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpQoSTemplate_setProvisionedQoSInfo(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpQoSTemplate_getProvisionedQoSInfo_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpQoSTemplate") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpQoSTemplate_getProvisionedQoSInfo(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpQoSTemplate_getDsCodepoint_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpQoSTemplate") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpQoSTemplate_getDsCodepoint(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpEnterpriseNetwork_getSiteList_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpEnterpriseNetwork") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpEnterpriseNetwork_getSiteList(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpEnterpriseNetwork_getVPrN_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpEnterpriseNetwork") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpEnterpriseNetwork_getVPrN(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpEnterpriseNetwork_getSite_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpEnterpriseNetwork") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpEnterpriseNetwork_getSite(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpEnterpriseNetworkSite_getSAPList_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpEnterpriseNetworkSite") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpEnterpriseNetworkSite_getSAPList(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpEnterpriseNetworkSite_getSiteID_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpEnterpriseNetworkSite") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpEnterpriseNetworkSite_getSiteID(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpEnterpriseNetworkSite_getSiteLocation_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpEnterpriseNetworkSite") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpEnterpriseNetworkSite_getSiteLocation(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpEnterpriseNetworkSite_getSiteDescription_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpEnterpriseNetworkSite") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpEnterpriseNetworkSite_getSiteDescription(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpEnterpriseNetworkSite_getIPSubnet_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpEnterpriseNetworkSite") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpEnterpriseNetworkSite_getIPSubnet(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cm_IpEnterpriseNetworkSite_getSAPIPSubnet_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cm/IpEnterpriseNetworkSite") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cm_IpEnterpriseNetworkSite_getSAPIPSubnet(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAppAccountManager_reportNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAppAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAppAccountManager_reportNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAppAccountManager_queryBalanceRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAppAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAppAccountManager_queryBalanceRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAppAccountManager_queryBalanceErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAppAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAppAccountManager_queryBalanceErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAppAccountManager_retrieveTransactionHistoryRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAppAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAppAccountManager_retrieveTransactionHistoryRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAppAccountManager_retrieveTransactionHistoryErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAppAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAppAccountManager_retrieveTransactionHistoryErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAppAccountManager_queryBalanceExpiryDateRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAppAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAppAccountManager_queryBalanceExpiryDateRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAppAccountManager_queryBalanceExpiryDateErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAppAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAppAccountManager_queryBalanceExpiryDateErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAppAccountManager_updateBalanceRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAppAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAppAccountManager_updateBalanceRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAppAccountManager_updateBalanceErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAppAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAppAccountManager_updateBalanceErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAppAccountManager_createVoucherRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAppAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAppAccountManager_createVoucherRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAppAccountManager_createVoucherErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAppAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAppAccountManager_createVoucherErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAppAccountManager_destroyVoucherRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAppAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAppAccountManager_destroyVoucherRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAppAccountManager_destroyVoucherErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAppAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAppAccountManager_destroyVoucherErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAppAccountManager_queryVoucherRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAppAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAppAccountManager_queryVoucherRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAppAccountManager_queryVoucherErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAppAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAppAccountManager_queryVoucherErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAppAccountManager_queryUserVouchersRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAppAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAppAccountManager_queryUserVouchersRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAppAccountManager_queryUserVouchersErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAppAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAppAccountManager_queryUserVouchersErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAccountManager_createNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAccountManager_createNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAccountManager_destroyNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAccountManager_destroyNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAccountManager_queryBalanceReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAccountManager_queryBalanceReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAccountManager_changeNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAccountManager_changeNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAccountManager_getNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAccountManager_getNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAccountManager_retrieveTransactionHistoryReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAccountManager_retrieveTransactionHistoryReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAccountManager_enableNotifications_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAccountManager_enableNotifications(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAccountManager_disableNotifications_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAccountManager_disableNotifications(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAccountManager_queryBalanceExpiryDateReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAccountManager_queryBalanceExpiryDateReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAccountManager_updateBalanceReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAccountManager_updateBalanceReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAccountManager_createVoucherReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAccountManager_createVoucherReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAccountManager_destroyVoucherReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAccountManager_destroyVoucherReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAccountManager_queryVoucherReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAccountManager_queryVoucherReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_am_IpAccountManager_queryUserVouchersReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/am/IpAccountManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_am_IpAccountManager_queryUserVouchersReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingSession_creditAmountErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingSession_creditAmountErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingSession_creditAmountRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingSession_creditAmountRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingSession_creditUnitErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingSession_creditUnitErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingSession_creditUnitRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingSession_creditUnitRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingSession_debitAmountErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingSession_debitAmountErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingSession_debitAmountRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingSession_debitAmountRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingSession_debitUnitErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingSession_debitUnitErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingSession_debitUnitRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingSession_debitUnitRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingSession_directCreditAmountErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingSession_directCreditAmountErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingSession_directCreditAmountRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingSession_directCreditAmountRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingSession_directCreditUnitErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingSession_directCreditUnitErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingSession_directCreditUnitRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingSession_directCreditUnitRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingSession_directDebitAmountErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingSession_directDebitAmountErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingSession_directDebitAmountRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingSession_directDebitAmountRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingSession_directDebitUnitErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingSession_directDebitUnitErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingSession_directDebitUnitRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingSession_directDebitUnitRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingSession_extendLifeTimeErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingSession_extendLifeTimeErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingSession_extendLifeTimeRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingSession_extendLifeTimeRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingSession_rateErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingSession_rateErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingSession_rateRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingSession_rateRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingSession_reserveAmountErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingSession_reserveAmountErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingSession_reserveAmountRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingSession_reserveAmountRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingSession_reserveUnitErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingSession_reserveUnitErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingSession_reserveUnitRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingSession_reserveUnitRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingSession_sessionEnded_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingSession_sessionEnded(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpChargingSession_creditAmountReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpChargingSession_creditAmountReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpChargingSession_creditUnitReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpChargingSession_creditUnitReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpChargingSession_debitAmountReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpChargingSession_debitAmountReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpChargingSession_debitUnitReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpChargingSession_debitUnitReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpChargingSession_directCreditAmountReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpChargingSession_directCreditAmountReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpChargingSession_directCreditUnitReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpChargingSession_directCreditUnitReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpChargingSession_directDebitAmountReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpChargingSession_directDebitAmountReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpChargingSession_directDebitUnitReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpChargingSession_directDebitUnitReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpChargingSession_extendLifeTimeReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpChargingSession_extendLifeTimeReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpChargingSession_getAmountLeft_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpChargingSession_getAmountLeft(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpChargingSession_getLifeTimeLeft_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpChargingSession_getLifeTimeLeft(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpChargingSession_getUnitLeft_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpChargingSession_getUnitLeft(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpChargingSession_rateReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpChargingSession_rateReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpChargingSession_release_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpChargingSession_release(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpChargingSession_reserveAmountReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpChargingSession_reserveAmountReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpChargingSession_reserveUnitReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpChargingSession") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpChargingSession_reserveUnitReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingManager_sessionAborted_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingManager_sessionAborted(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpAppChargingManager_abortMultipleChargingSessions_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpAppChargingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpAppChargingManager_abortMultipleChargingSessions(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpChargingManager_createChargingSession_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpChargingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpChargingManager_createChargingSession(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_cs_IpChargingManager_createSplitChargingSession_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/cs/IpChargingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_cs_IpChargingManager_createSplitChargingSession(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_evaluation_IpAppPolicyDomain_reportNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/evaluation/IpAppPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_evaluation_IpAppPolicyDomain_reportNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_evaluation_IpAppPolicyDomain_evalPolicyRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/evaluation/IpAppPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_evaluation_IpAppPolicyDomain_evalPolicyRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_evaluation_IpAppPolicyDomain_evalPolicyErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/evaluation/IpAppPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_evaluation_IpAppPolicyDomain_evalPolicyErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_evaluation_IpPolicyEvalManager_evalPolicy_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/evaluation/IpPolicyEvalManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_evaluation_IpPolicyEvalManager_evalPolicy(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_evaluation_IpPolicyEvalManager_evalPolicyReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/evaluation/IpPolicyEvalManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_evaluation_IpPolicyEvalManager_evalPolicyReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_evaluation_IpPolicyEvalManager_abortEvalPolicyReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/evaluation/IpPolicyEvalManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_evaluation_IpPolicyEvalManager_abortEvalPolicyReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_evaluation_IpPolicyEvalManager_generateEvent_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/evaluation/IpPolicyEvalManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_evaluation_IpPolicyEvalManager_generateEvent(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_evaluation_IpPolicyEvalManager_createNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/evaluation/IpPolicyEvalManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_evaluation_IpPolicyEvalManager_createNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_evaluation_IpPolicyEvalManager_destroyNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/evaluation/IpPolicyEvalManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_evaluation_IpPolicyEvalManager_destroyNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicy_getAttribute_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicy") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicy_getAttribute(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicy_setAttribute_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicy") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicy_setAttribute(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicy_getAttributes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicy") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicy_getAttributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicy_setAttributes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicy") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicy_setAttributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyIterator_getList_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyIterator") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyIterator_getList(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRepository_getParentRepository_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRepository") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRepository_getParentRepository(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRepository_createRepository_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRepository") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRepository_createRepository(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRepository_getRepository_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRepository") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRepository_getRepository(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRepository_removeRepository_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRepository") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRepository_removeRepository(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRepository_getRepositoryCount_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRepository") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRepository_getRepositoryCount(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRepository_getRepositoryIterator_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRepository") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRepository_getRepositoryIterator(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRepository_createCondition_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRepository") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRepository_createCondition(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRepository_getCondition_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRepository") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRepository_getCondition(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRepository_removeCondition_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRepository") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRepository_removeCondition(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRepository_getConditionCount_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRepository") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRepository_getConditionCount(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRepository_getConditionIterator_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRepository") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRepository_getConditionIterator(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRepository_createAction_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRepository") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRepository_createAction(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRepository_getAction_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRepository") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRepository_getAction(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRepository_removeAction_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRepository") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRepository_removeAction(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRepository_getActionCount_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRepository") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRepository_getActionCount(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRepository_getActionIterator_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRepository") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRepository_getActionIterator(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRule_getParentGroup_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRule") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRule_getParentGroup(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRule_getParentDomain_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRule") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRule_getParentDomain(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRule_createCondition_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRule") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRule_createCondition(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRule_getCondition_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRule") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRule_getCondition(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRule_removeCondition_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRule") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRule_removeCondition(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRule_getConditionCount_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRule") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRule_getConditionCount(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRule_getConditionIterator_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRule") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRule_getConditionIterator(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRule_createAction_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRule") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRule_createAction(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRule_getAction_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRule") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRule_getAction(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRule_removeAction_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRule") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRule_removeAction(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRule_getActionCount_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRule") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRule_getActionCount(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRule_getActionIterator_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRule") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRule_getActionIterator(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRule_setValidityPeriodConditionByName_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRule") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRule_setValidityPeriodConditionByName(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRule_setValidityPeriodCondition_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRule") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRule_setValidityPeriodCondition(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRule_getValidityPeriodCondition_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRule") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRule_getValidityPeriodCondition(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRule_unsetValidityPeriodCondition_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRule") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRule_unsetValidityPeriodCondition(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRule_setConditionList_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRule") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRule_setConditionList(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRule_getConditionList_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRule") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRule_getConditionList(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRule_setActionList_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRule") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRule_setActionList(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyRule_getActionList_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyRule") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyRule_getActionList(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyManager_createDomain_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyManager_createDomain(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyManager_getDomain_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyManager_getDomain(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyManager_removeDomain_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyManager_removeDomain(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyManager_getDomainCount_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyManager_getDomainCount(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyManager_getDomainIterator_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyManager_getDomainIterator(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyManager_findMatchingDomains_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyManager_findMatchingDomains(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyManager_createRepository_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyManager_createRepository(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyManager_getRepository_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyManager_getRepository(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyManager_removeRepository_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyManager_removeRepository(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyManager_getRepositoryCount_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyManager_getRepositoryCount(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyManager_getRepositoryIterator_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyManager_getRepositoryIterator(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyManager_startTransaction_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyManager_startTransaction(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyManager_commitTransaction_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyManager_commitTransaction(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyManager_abortTransaction_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyManager_abortTransaction(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyGroup_getParentDomain_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyGroup") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyGroup_getParentDomain(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyGroup_getParentGroup_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyGroup") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyGroup_getParentGroup(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyGroup_createGroup_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyGroup") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyGroup_createGroup(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyGroup_getGroup_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyGroup") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyGroup_getGroup(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyGroup_removeGroup_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyGroup") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyGroup_removeGroup(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyGroup_getGroupCount_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyGroup") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyGroup_getGroupCount(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyGroup_getGroupIterator_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyGroup") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyGroup_getGroupIterator(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyGroup_createRule_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyGroup") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyGroup_createRule(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyGroup_getRule_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyGroup") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyGroup_getRule(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyGroup_removeRule_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyGroup") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyGroup_removeRule(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyGroup_getRuleCount_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyGroup") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyGroup_getRuleCount(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyGroup_getRuleIterator_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyGroup") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyGroup_getRuleIterator(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyEventDefinition_setRequiredAttributes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyEventDefinition") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyEventDefinition_setRequiredAttributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyEventDefinition_setOptionalAttributes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyEventDefinition") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyEventDefinition_setOptionalAttributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyEventDefinition_getRequiredAttributes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyEventDefinition") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyEventDefinition_getRequiredAttributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyEventDefinition_getOptionalAttributes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyEventDefinition") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyEventDefinition_getOptionalAttributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyEventDefinition_getParentDomain_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyEventDefinition") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyEventDefinition_getParentDomain(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyCondition_getParentRepository_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyCondition") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyCondition_getParentRepository(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyCondition_getParentRule_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyCondition") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyCondition_getParentRule(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyAction_getParentRepository_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyAction") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyAction_getParentRepository(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyAction_getParentRule_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyAction") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyAction_getParentRule(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicySignature_setInputVariables_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicySignature") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicySignature_setInputVariables(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicySignature_setOutputVariables_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicySignature") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicySignature_setOutputVariables(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicySignature_getInputVariables_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicySignature") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicySignature_getInputVariables(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicySignature_getOutputVariables_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicySignature") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicySignature_getOutputVariables(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicySignature_setGroupNames_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicySignature") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicySignature_setGroupNames(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicySignature_setPolicyRoles_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicySignature") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicySignature_setPolicyRoles(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicySignature_getGroupNames_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicySignature") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicySignature_getGroupNames(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicySignature_getPolicyRoles_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicySignature") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicySignature_getPolicyRoles(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicySignature_getParentDomain_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicySignature") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicySignature_getParentDomain(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_getParentDomain_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_getParentDomain(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_createDomain_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_createDomain(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_getDomain_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_getDomain(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_removeDomain_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_removeDomain(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_getDomainCount_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_getDomainCount(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_getDomainIterator_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_getDomainIterator(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_createGroup_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_createGroup(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_getGroup_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_getGroup(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_removeGroup_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_removeGroup(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_getGroupCount_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_getGroupCount(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_getGroupIterator_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_getGroupIterator(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_createRule_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_createRule(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_getRule_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_getRule(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_removeRule_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_removeRule(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_getRuleCount_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_getRuleCount(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_getRuleIterator_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_getRuleIterator(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_createEventDefinition_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_createEventDefinition(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_getEventDefinition_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_getEventDefinition(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_removeEventDefinition_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_removeEventDefinition(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_getEventDefinitionCount_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_getEventDefinitionCount(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_getEventDefinitionIterator_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_getEventDefinitionIterator(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_createVariableSet_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_createVariableSet(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_getVariableSet_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_getVariableSet(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_removeVariableSet_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_removeVariableSet(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_getVariableSetCount_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_getVariableSetCount(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_getVariableSetIterator_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_getVariableSetIterator(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_createVariable_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_createVariable(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_setVariableValue_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_setVariableValue(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_getVariableType_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_getVariableType(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_getVariableValue_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_getVariableValue(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_getVariable_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_getVariable(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_removeVariable_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_removeVariable(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_createSignature_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_createSignature(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_getSignature_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_getSignature(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_removeSignature_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_removeSignature(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_getSignatureCount_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_getSignatureCount(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_policy_provisioning_IpPolicyDomain_getSignatureIterator_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/policy/provisioning/IpPolicyDomain") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_policy_provisioning_IpPolicyDomain_getSignatureIterator(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityManagement_createIdentity_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_createIdentity(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityManagement_deleteIdentity_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_deleteIdentity(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityManagement_isIdentity_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_isIdentity(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityManagement_createGroupIdentity_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_createGroupIdentity(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityManagement_deleteGroupIdentity_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_deleteGroupIdentity(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityManagement_addToGroup_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_addToGroup(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityManagement_removeFromGroup_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_removeFromGroup(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityManagement_listMembers_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_listMembers(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityManagement_isGroupIdentity_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_isGroupIdentity(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityManagement_listGroupMembership_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_listGroupMembership(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityManagement_addAlias_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_addAlias(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityManagement_removeAliases_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_removeAliases(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityManagement_listAliases_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_listAliases(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityManagement_lookupByAlias_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_lookupByAlias(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityManagement_associateTypes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_associateTypes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityManagement_disassociateTypes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_disassociateTypes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityManagement_listTypesOfIdentity_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_listTypesOfIdentity(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityManagement_hasType_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_hasType(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityManagement_getIdentityAttributes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_getIdentityAttributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityManagement_setIdentityAttributes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityManagement_setIdentityAttributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentManagement_createAgent_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentManagement_createAgent(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentManagement_deleteAgent_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentManagement_deleteAgent(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentManagement_isAgent_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentManagement_isAgent(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentManagement_enableCapabilities_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentManagement_enableCapabilities(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentManagement_disableCapabilities_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentManagement_disableCapabilities(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentManagement_listEnabledCapabilities_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentManagement_listEnabledCapabilities(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentManagement_listAllCapabilities_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentManagement_listAllCapabilities(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentManagement_isCapableOf_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentManagement_isCapableOf(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentManagement_associateTypes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentManagement_associateTypes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentManagement_disassociateTypes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentManagement_disassociateTypes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentManagement_listTypesOfAgent_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentManagement_listTypesOfAgent(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentManagement_hasType_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentManagement_hasType(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentManagement_getAgentAttributes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentManagement_getAgentAttributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentManagement_setAgentAttributes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentManagement_setAgentAttributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentAssignment_assignAgent_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentAssignment") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentAssignment_assignAgent(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentAssignment_unassignAgent_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentAssignment") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentAssignment_unassignAgent(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentAssignment_listAssignedAgents_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentAssignment") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentAssignment_listAssignedAgents(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentAssignment_listAssociatedIdentitiesOfAgent_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentAssignment") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentAssignment_listAssociatedIdentitiesOfAgent(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentAssignment_listAssignedAgentsByCapability_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentAssignment") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentAssignment_listAssignedAgentsByCapability(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentAssignment_listCapabilitiesOfIdentity_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentAssignment") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentAssignment_listCapabilitiesOfIdentity(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentAssignment_isIdentityCapableOf_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentAssignment") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentAssignment_isIdentityCapableOf(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_createIdentityAttribute_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityTypeManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_createIdentityAttribute(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_deleteIdentityAttribute_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityTypeManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_deleteIdentityAttribute(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_getIdentityAttributeDefinition_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityTypeManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_getIdentityAttributeDefinition(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_listAllIdentityAttributes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityTypeManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_listAllIdentityAttributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_createIdentityType_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityTypeManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_createIdentityType(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_deleteIdentityType_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityTypeManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_deleteIdentityType(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_listIdentityTypes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityTypeManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_listIdentityTypes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_addIdentityTypeAttributes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityTypeManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_addIdentityTypeAttributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_removeIdentityTypeAttributes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityTypeManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_removeIdentityTypeAttributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_listIdentityTypeAttributes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMIdentityTypeManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMIdentityTypeManagement_listIdentityTypeAttributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentTypeManagement_createAgentAttribute_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentTypeManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentTypeManagement_createAgentAttribute(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentTypeManagement_deleteAgentAttribute_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentTypeManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentTypeManagement_deleteAgentAttribute(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentTypeManagement_getAgentAttributeDefinition_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentTypeManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentTypeManagement_getAgentAttributeDefinition(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentTypeManagement_listAllAgentAttributes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentTypeManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentTypeManagement_listAllAgentAttributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentTypeManagement_createAgentType_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentTypeManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentTypeManagement_createAgentType(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentTypeManagement_deleteAgentType_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentTypeManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentTypeManagement_deleteAgentType(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentTypeManagement_listAgentTypes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentTypeManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentTypeManagement_listAgentTypes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentTypeManagement_addAgentTypeAttributes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentTypeManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentTypeManagement_addAgentTypeAttributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentTypeManagement_removeAgentTypeAttributes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentTypeManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentTypeManagement_removeAgentTypeAttributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMAgentTypeManagement_listAgentTypeAttributes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMAgentTypeManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMAgentTypeManagement_listAgentTypeAttributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMCapabilityManagement_createCapabilityAttribute_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMCapabilityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_createCapabilityAttribute(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMCapabilityManagement_deleteCapabilityAttribute_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMCapabilityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_deleteCapabilityAttribute(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMCapabilityManagement_getCapabilityAttributeDefinition_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMCapabilityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_getCapabilityAttributeDefinition(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMCapabilityManagement_listAllCapabilityAttributes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMCapabilityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_listAllCapabilityAttributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMCapabilityManagement_createCapability_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMCapabilityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_createCapability(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMCapabilityManagement_deleteCapability_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMCapabilityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_deleteCapability(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMCapabilityManagement_listCapabilities_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMCapabilityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_listCapabilities(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMCapabilityManagement_addCapabilityAttributes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMCapabilityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_addCapabilityAttributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMCapabilityManagement_removeCapabilityAttributes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMCapabilityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_removeCapabilityAttributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMCapabilityManagement_listCapabilityAttributes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMCapabilityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_listCapabilityAttributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMCapabilityManagement_assignCapabilitiesToType_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMCapabilityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_assignCapabilitiesToType(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMCapabilityManagement_unassignCapabilitiesFromType_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMCapabilityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_unassignCapabilitiesFromType(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMCapabilityManagement_listCapabilitiesOfType_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMCapabilityManagement") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMCapabilityManagement_listCapabilitiesOfType(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMProvisioningManager_getAuthToken_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMProvisioningManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMProvisioningManager_getAuthToken(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMProvisioningManager_obtainInterface_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMProvisioningManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMProvisioningManager_obtainInterface(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMProvisioningManager_getAccessControl_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMProvisioningManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMProvisioningManager_getAccessControl(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_provisioning_IpPAMProvisioningManager_setAccessControl_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/provisioning/IpPAMProvisioningManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_provisioning_IpPAMProvisioningManager_setAccessControl(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_access_IpPAMIdentityPresence_setIdentityPresence_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/access/IpPAMIdentityPresence") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_access_IpPAMIdentityPresence_setIdentityPresence(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_access_IpPAMIdentityPresence_setIdentityPresenceExpiration_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/access/IpPAMIdentityPresence") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_access_IpPAMIdentityPresence_setIdentityPresenceExpiration(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_access_IpPAMIdentityPresence_getIdentityPresence_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/access/IpPAMIdentityPresence") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_access_IpPAMIdentityPresence_getIdentityPresence(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_access_IpPAMAgentPresence_setAgentPresence_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/access/IpPAMAgentPresence") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_access_IpPAMAgentPresence_setAgentPresence(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_access_IpPAMAgentPresence_setCapabilityPresence_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/access/IpPAMAgentPresence") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_access_IpPAMAgentPresence_setCapabilityPresence(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_access_IpPAMAgentPresence_setAgentPresenceExpiration_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/access/IpPAMAgentPresence") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_access_IpPAMAgentPresence_setAgentPresenceExpiration(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_access_IpPAMAgentPresence_setCapabilityPresenceExpiration_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/access/IpPAMAgentPresence") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_access_IpPAMAgentPresence_setCapabilityPresenceExpiration(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_access_IpPAMAgentPresence_getAgentPresence_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/access/IpPAMAgentPresence") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_access_IpPAMAgentPresence_getAgentPresence(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_access_IpPAMAgentPresence_getCapabilityPresence_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/access/IpPAMAgentPresence") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_access_IpPAMAgentPresence_getCapabilityPresence(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_access_IpAppPAMPreferenceCheck_computeAvailability_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/access/IpAppPAMPreferenceCheck") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_access_IpAppPAMPreferenceCheck_computeAvailability(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_access_IpPAMAvailability_getAvailability_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/access/IpPAMAvailability") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_access_IpPAMAvailability_getAvailability(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_access_IpPAMAvailability_getPreference_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/access/IpPAMAvailability") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_access_IpPAMAvailability_getPreference(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_access_IpPAMAvailability_setPreference_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/access/IpPAMAvailability") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_access_IpPAMAvailability_setPreference(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_access_IpPAMPresenceAvailabilityManager_getAuthToken_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/access/IpPAMPresenceAvailabilityManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_access_IpPAMPresenceAvailabilityManager_getAuthToken(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_access_IpPAMPresenceAvailabilityManager_obtainInterface_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/access/IpPAMPresenceAvailabilityManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_access_IpPAMPresenceAvailabilityManager_obtainInterface(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_access_IpPAMPresenceAvailabilityManager_getAccessControl_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/access/IpPAMPresenceAvailabilityManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_access_IpPAMPresenceAvailabilityManager_getAccessControl(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_access_IpPAMPresenceAvailabilityManager_setAccessControl_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/access/IpPAMPresenceAvailabilityManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_access_IpPAMPresenceAvailabilityManager_setAccessControl(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_access_IpPAMPresenceAvailabilityManager_activateService_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/access/IpPAMPresenceAvailabilityManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_access_IpPAMPresenceAvailabilityManager_activateService(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_access_IpPAMPresenceAvailabilityManager_deactivateService_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/access/IpPAMPresenceAvailabilityManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_access_IpPAMPresenceAvailabilityManager_deactivateService(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_access_IpPAMPresenceAvailabilityManager_isActiveIdentity_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/access/IpPAMPresenceAvailabilityManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_access_IpPAMPresenceAvailabilityManager_isActiveIdentity(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_event_IpAppPAMEventHandler_eventNotify_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/event/IpAppPAMEventHandler") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_event_IpAppPAMEventHandler_eventNotify(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_event_IpAppPAMEventHandler_eventNotifyErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/event/IpAppPAMEventHandler") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_event_IpAppPAMEventHandler_eventNotifyErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_event_IpPAMEventHandler_isRegistered_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/event/IpPAMEventHandler") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_event_IpPAMEventHandler_isRegistered(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_event_IpPAMEventHandler_registerAppInterface_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/event/IpPAMEventHandler") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_event_IpPAMEventHandler_registerAppInterface(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_event_IpPAMEventHandler_registerForEvent_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/event/IpPAMEventHandler") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_event_IpPAMEventHandler_registerForEvent(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_event_IpPAMEventHandler_deregisterAppInterface_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/event/IpPAMEventHandler") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_event_IpPAMEventHandler_deregisterAppInterface(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_event_IpPAMEventHandler_deregisterFromEvent_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/event/IpPAMEventHandler") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_event_IpPAMEventHandler_deregisterFromEvent(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_event_IpPAMEventManager_getAuthToken_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/event/IpPAMEventManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_event_IpPAMEventManager_getAuthToken(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_event_IpPAMEventManager_obtainInterface_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/event/IpPAMEventManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_event_IpPAMEventManager_obtainInterface(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_event_IpPAMEventManager_getAccessControl_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/event/IpPAMEventManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_event_IpPAMEventManager_getAccessControl(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_event_IpPAMEventManager_setAccessControl_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/event/IpPAMEventManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_event_IpPAMEventManager_setAccessControl(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_event_IpPAMEventManager_activateService_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/event/IpPAMEventManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_event_IpPAMEventManager_activateService(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_event_IpPAMEventManager_deactivateService_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/event/IpPAMEventManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_event_IpPAMEventManager_deactivateService(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_pam_event_IpPAMEventManager_isActiveIdentity_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/pam/event/IpPAMEventManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_pam_event_IpPAMEventManager_isActiveIdentity(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMultiMediaMessagingManager_mailboxTerminated_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMultiMediaMessagingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMultiMediaMessagingManager_mailboxTerminated(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMultiMediaMessagingManager_reportNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMultiMediaMessagingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMultiMediaMessagingManager_reportNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMultiMediaMessagingManager_notificationsInterrupted_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMultiMediaMessagingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMultiMediaMessagingManager_notificationsInterrupted(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMultiMediaMessagingManager_notificationsResumed_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMultiMediaMessagingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMultiMediaMessagingManager_notificationsResumed(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMultiMediaMessagingManager_multiMediaMessagingTerminated_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMultiMediaMessagingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMultiMediaMessagingManager_multiMediaMessagingTerminated(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMultiMediaMessagingManager_terminateMultipleMailboxes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMultiMediaMessagingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMultiMediaMessagingManager_terminateMultipleMailboxes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMultiMediaMessagingManager_terminateMultipleMultiMediaMessagingSessions_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMultiMediaMessagingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMultiMediaMessagingManager_terminateMultipleMultiMediaMessagingSessions(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMultiMediaMessagingManager_openMailbox_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMultiMediaMessagingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMultiMediaMessagingManager_openMailbox(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMultiMediaMessagingManager_openMultiMediaMessaging_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMultiMediaMessagingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMultiMediaMessagingManager_openMultiMediaMessaging(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMultiMediaMessagingManager_createNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMultiMediaMessagingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMultiMediaMessagingManager_createNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMultiMediaMessagingManager_destroyNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMultiMediaMessagingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMultiMediaMessagingManager_destroyNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMultiMediaMessagingManager_changeNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMultiMediaMessagingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMultiMediaMessagingManager_changeNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMultiMediaMessagingManager_getNextNotification_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMultiMediaMessagingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMultiMediaMessagingManager_getNextNotification(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMultiMediaMessagingManager_enableNotifications_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMultiMediaMessagingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMultiMediaMessagingManager_enableNotifications(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMultiMediaMessagingManager_disableNotifications_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMultiMediaMessagingManager") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMultiMediaMessagingManager_disableNotifications(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_createFolderRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_createFolderRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_createFolderErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_createFolderErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_getFoldersRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_getFoldersRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_getFoldersErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_getFoldersErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_deleteFolderRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_deleteFolderRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_deleteFolderErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_deleteFolderErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_copyFolderRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_copyFolderRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_copyFolderErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_copyFolderErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_moveFolderRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_moveFolderRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_moveFolderErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_moveFolderErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_putMessageRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_putMessageRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_putMessageErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_putMessageErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_copyMessageRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_copyMessageRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_copyMessageErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_copyMessageErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_moveMessageRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_moveMessageRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_moveMessageErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_moveMessageErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_deleteMessageRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_deleteMessageRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_deleteMessageErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_deleteMessageErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_listMessagesRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_listMessagesRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_listMessagesErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_listMessagesErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_listMessageBodyPartsRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_listMessageBodyPartsRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_listMessageBodyPartsErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_listMessageBodyPartsErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_getMessageBodyPartsRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_getMessageBodyPartsRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_getMessageBodyPartsErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_getMessageBodyPartsErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_getMessageHeadersRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_getMessageHeadersRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_getMessageHeadersErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_getMessageHeadersErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_getMessageContentRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_getMessageContentRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_getMessageContentErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_getMessageContentErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_getFullMessageRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_getFullMessageRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_getFullMessageErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_getFullMessageErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_getMailboxInfoPropertiesRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_getMailboxInfoPropertiesRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_getFolderInfoPropertiesRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_getFolderInfoPropertiesRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_getMessageInfoPropertiesRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_getMessageInfoPropertiesRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_setMessageInfoPropertiesRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_setMessageInfoPropertiesRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_setMessageInfoPropertiesErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_setMessageInfoPropertiesErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_getMailboxInfoPropertiesErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_getMailboxInfoPropertiesErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_getFolderInfoPropertiesErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_getFolderInfoPropertiesErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMailbox_getMessageInfoPropertiesErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMailbox_getMessageInfoPropertiesErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMailbox_close_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMailbox_close(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMailbox_createFolderReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMailbox_createFolderReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMailbox_getFoldersReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMailbox_getFoldersReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMailbox_deleteFolderReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMailbox_deleteFolderReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMailbox_copyFolderReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMailbox_copyFolderReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMailbox_moveFolderReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMailbox_moveFolderReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMailbox_putMessageReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMailbox_putMessageReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMailbox_copyMessageReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMailbox_copyMessageReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMailbox_moveMessageReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMailbox_moveMessageReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMailbox_deleteMessageReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMailbox_deleteMessageReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMailbox_listMessagesReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMailbox_listMessagesReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMailbox_listMessageBodyPartsReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMailbox_listMessageBodyPartsReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMailbox_getMessageBodyPartsReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMailbox_getMessageBodyPartsReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMailbox_getMessageHeadersReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMailbox_getMessageHeadersReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMailbox_getMessageContentReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMailbox_getMessageContentReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMailbox_getFullMessageReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMailbox_getFullMessageReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMailbox_getMailboxInfoPropertiesReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMailbox_getMailboxInfoPropertiesReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMailbox_getFolderInfoPropertiesReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMailbox_getFolderInfoPropertiesReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMailbox_getMessageInfoPropertiesReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMailbox_getMessageInfoPropertiesReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMailbox_setMessageInfoPropertiesReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMailbox") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMailbox_setMessageInfoPropertiesReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMultiMediaMessaging_sendMessageRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMultiMediaMessaging") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMultiMediaMessaging_sendMessageRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMultiMediaMessaging_sendMessageErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMultiMediaMessaging") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMultiMediaMessaging_sendMessageErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMultiMediaMessaging_cancelMessageRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMultiMediaMessaging") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMultiMediaMessaging_cancelMessageRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMultiMediaMessaging_cancelMessageErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMultiMediaMessaging") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMultiMediaMessaging_cancelMessageErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMultiMediaMessaging_queryStatusRes_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMultiMediaMessaging") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMultiMediaMessaging_queryStatusRes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMultiMediaMessaging_queryStatusErr_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMultiMediaMessaging") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMultiMediaMessaging_queryStatusErr(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMultiMediaMessaging_messageStatusReport_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMultiMediaMessaging") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMultiMediaMessaging_messageStatusReport(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpAppMultiMediaMessaging_messageReceived_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpAppMultiMediaMessaging") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpAppMultiMediaMessaging_messageReceived(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMultiMediaMessaging_sendMessageReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMultiMediaMessaging") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMultiMediaMessaging_sendMessageReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMultiMediaMessaging_cancelMessageReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMultiMediaMessaging") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMultiMediaMessaging_cancelMessageReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMultiMediaMessaging_queryStatusReq_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMultiMediaMessaging") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMultiMediaMessaging_queryStatusReq(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, org_csapi_mmm_IpMultiMediaMessaging_close_op) == 0
+ && (!idlname || strcmp(idlname, "org/csapi/mmm/IpMultiMediaMessaging") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_org_csapi_mmm_IpMultiMediaMessaging_close(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+
+ break;
+
+ case CancelRequest:
+ case LocateRequest:
+ case LocateReply:
+ case CloseConnection:
+ case MessageError:
+ case Fragment:
+ return FALSE; /* not handled yet */
+
+ default:
+ return FALSE; /* not handled yet */
+
+ } /* switch */
+
+
+ return FALSE;
+
+} /* End of main dissector */
+
+
+
+/* Register the protocol with Wireshark */
+
+void proto_register_giop_parlay(void) {
+
+ /* setup list of header fields */
+
+ static hf_register_info hf[] = {
+ /* field that indicates the currently ongoing request/reply exchange */
+ {&hf_operationrequest, {"Request_Operation","PARLAY.Request_Operation",FT_STRING,BASE_NONE,NULL,0x0,NULL,HFILL}},
+
+ /* no fields yet */
+
+ };
+
+ /* setup protocol subtree array */
+
+ static gint *ett[] = {
+ &ett_parlay,
+ };
+
+ /* Register the protocol name and description */
+
+ proto_parlay = proto_register_protocol("Parlay Dissector Using GIOP API" , "PARLAY", "giop-parlay" );
+
+ proto_register_field_array(proto_parlay, hf, array_length(hf));
+
+ proto_register_subtree_array(ett,array_length(ett));
+
+}
+
+
+/* register me as handler for these interfaces */
+
+void proto_reg_handoff_giop_parlay(void) {
+
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/IpService", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/am/IpAccountManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/am/IpAppAccountManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cc/cccs/IpAppConfCall", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cc/cccs/IpAppConfCallControlManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cc/cccs/IpAppSubConfCall", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cc/cccs/IpConfCall", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cc/cccs/IpConfCallControlManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cc/cccs/IpSubConfCall", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cc/gccs/IpAppCall", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cc/gccs/IpAppCallControlManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cc/gccs/IpCall", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cc/gccs/IpCallControlManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cc/mmccs/IpAppMultiMediaCall", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cc/mmccs/IpAppMultiMediaCallControlManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cc/mmccs/IpAppMultiMediaCallLeg", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cc/mmccs/IpMultiMediaCall", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cc/mmccs/IpMultiMediaCallControlManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cc/mmccs/IpMultiMediaCallLeg", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cc/mmccs/IpMultiMediaStream", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cc/mpccs/IpAppCallLeg", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cc/mpccs/IpAppMultiPartyCall", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cc/mpccs/IpAppMultiPartyCallControlManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cc/mpccs/IpCallLeg", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cc/mpccs/IpMultiPartyCall", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cc/mpccs/IpMultiPartyCallControlManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cm/IpConnectivityManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cm/IpEnterpriseNetwork", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cm/IpEnterpriseNetworkSite", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cm/IpQoSMenu", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cm/IpQoSTemplate", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cm/IpVPrN", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cm/IpVPrP", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cs/IpAppChargingManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cs/IpAppChargingSession", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cs/IpChargingManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/cs/IpChargingSession", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/dsc/IpAppDataSession", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/dsc/IpAppDataSessionControlManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/dsc/IpDataSession", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/dsc/IpDataSessionControlManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_access/trust_and_security/IpAPILevelAuthentication", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_access/trust_and_security/IpAccess", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_access/trust_and_security/IpAuthentication", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_access/trust_and_security/IpClientAPILevelAuthentication", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_access/trust_and_security/IpClientAccess", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_access/trust_and_security/IpInitial", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_application/discovery/IpServiceDiscovery", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_application/integrity/IpAppFaultManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_application/integrity/IpAppHeartBeat", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_application/integrity/IpAppHeartBeatMgmt", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_application/integrity/IpAppLoadManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_application/integrity/IpAppOAM", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_application/integrity/IpFaultManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_application/integrity/IpHeartBeat", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_application/integrity/IpHeartBeatMgmt", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_application/integrity/IpLoadManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_application/integrity/IpOAM", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_application/notification/IpAppEventNotification", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_application/notification/IpEventNotification", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_application/service_agreement/IpAppServiceAgreementManagement", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_application/service_agreement/IpServiceAgreementManagement", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_enterprise_operator/notification/IpClientEventNotification", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_enterprise_operator/notification/IpEventNotification", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppInfoQuery", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_enterprise_operator/service_subscription/IpClientAppManagement", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_enterprise_operator/service_subscription/IpEntOpAccountInfoQuery", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_enterprise_operator/service_subscription/IpEntOpAccountManagement", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceContractInfoQuery", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceContractManagement", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceProfileInfoQuery", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_enterprise_operator/service_subscription/IpServiceProfileManagement", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_service/discovery/IpFwServiceDiscovery", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_service/integrity/IpFwFaultManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_service/integrity/IpFwHeartBeat", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_service/integrity/IpFwHeartBeatMgmt", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_service/integrity/IpFwLoadManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_service/integrity/IpFwOAM", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_service/integrity/IpSvcFaultManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_service/integrity/IpSvcHeartBeat", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_service/integrity/IpSvcHeartBeatMgmt", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_service/integrity/IpSvcLoadManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_service/integrity/IpSvcOAM", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_service/notification/IpFwEventNotification", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_service/notification/IpSvcEventNotification", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_service/service_lifecycle/IpServiceInstanceLifecycleManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/fw/fw_service/service_registration/IpFwServiceRegistration", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/gms/IpAppMessagingManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/gms/IpMailbox", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/gms/IpMailboxFolder", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/gms/IpMessage", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/gms/IpMessagingManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/mm/ub/IpAppUserBinding", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/mm/ub/IpUserBinding", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/mm/ul/IpAppTriggeredUserLocation", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/mm/ul/IpAppUserLocation", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/mm/ul/IpTriggeredUserLocation", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/mm/ul/IpUserLocation", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/mm/ulc/IpAppUserLocationCamel", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/mm/ulc/IpUserLocationCamel", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/mm/ule/IpAppUserLocationEmergency", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/mm/ule/IpUserLocationEmergency", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/mm/us/IpAppUserStatus", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/mm/us/IpUserStatus", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/mmm/IpAppMailbox", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/mmm/IpAppMultiMediaMessaging", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/mmm/IpAppMultiMediaMessagingManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/mmm/IpMailbox", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/mmm/IpMultiMediaMessaging", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/mmm/IpMultiMediaMessagingManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/pam/access/IpAppPAMPreferenceCheck", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/pam/access/IpPAMAgentPresence", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/pam/access/IpPAMAvailability", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/pam/access/IpPAMIdentityPresence", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/pam/access/IpPAMPresenceAvailabilityManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/pam/event/IpAppPAMEventHandler", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/pam/event/IpPAMEventHandler", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/pam/event/IpPAMEventManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/pam/provisioning/IpPAMAgentAssignment", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/pam/provisioning/IpPAMAgentManagement", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/pam/provisioning/IpPAMAgentTypeManagement", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/pam/provisioning/IpPAMCapabilityManagement", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/pam/provisioning/IpPAMIdentityManagement", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/pam/provisioning/IpPAMIdentityTypeManagement", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/pam/provisioning/IpPAMProvisioningManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/policy/evaluation/IpAppPolicyDomain", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/policy/evaluation/IpPolicyEvalManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/policy/provisioning/IpPolicy", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/policy/provisioning/IpPolicyAction", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/policy/provisioning/IpPolicyCondition", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/policy/provisioning/IpPolicyDomain", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/policy/provisioning/IpPolicyEventDefinition", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/policy/provisioning/IpPolicyGroup", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/policy/provisioning/IpPolicyIterator", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/policy/provisioning/IpPolicyManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/policy/provisioning/IpPolicyRepository", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/policy/provisioning/IpPolicyRule", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/policy/provisioning/IpPolicySignature", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/termcap/IpAppExtendedTerminalCapabilities", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/termcap/IpExtendedTerminalCapabilities", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/termcap/IpTerminalCapabilities", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/ui/IpAppUI", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/ui/IpAppUIAdminManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/ui/IpAppUICall", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/ui/IpAppUIManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/ui/IpUI", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/ui/IpUIAdminManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/ui/IpUICall", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_parlay, "PARLAY", "org/csapi/ui/IpUIManager", proto_parlay ); /* explicit dissector */
+
+
+ /* Register for Heuristic Dissection */
+
+ register_giop_user(dissect_parlay, "PARLAY" ,proto_parlay); /* heuristic dissector */
+
+
+}
+
+
diff --git a/epan/dissectors/packet-pcep.c b/epan/dissectors/packet-pcep.c
index 3a5a3cffcf..52d9620a92 100644
--- a/epan/dissectors/packet-pcep.c
+++ b/epan/dissectors/packet-pcep.c
@@ -25,6 +25,10 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Added support of "A Set of Monitoring Tools for Path Computation Element
+ * (PCE)-Based Architecture" (RFC 5886)
+ * (c) Copyright 2012 Svetoslav Duhovnikov <duhovnikov[AT]gmail.com>
*/
#ifdef HAVE_CONFIG_H
@@ -54,7 +58,12 @@
#define PCEP_CLOSE_OBJ 15
#define PCEP_PATH_KEY_OBJ 16
#define PCEP_XRO_OBJ 17
+#define PCEP_OBJ_MONITORING 19
+#define PCEP_OBJ_PCC_ID_REQ 20
#define PCEP_OF_OBJ 21
+#define PCEP_OBJ_PCE_ID 25
+#define PCEP_OBJ_PROC_TIME 26
+#define PCEP_OBJ_OVERLOAD 27
/*Subobjects of EXPLICIT ROUTE Object*/
#define PCEP_SUB_IPv4 1
@@ -177,6 +186,26 @@
/*Mask for the flags of XRO Object*/
#define PCEP_XRO_F 0x0001
+/*Mask for the flags of MONITORING Object*/
+#define PCEP_OBJ_MONITORING_FLAGS_L 0x000001
+#define PCEP_OBJ_MONITORING_FLAGS_G 0x000002
+#define PCEP_OBJ_MONITORING_FLAGS_P 0x000004
+#define PCEP_OBJ_MONITORING_FLAGS_C 0x000008
+#define PCEP_OBJ_MONITORING_FLAGS_I 0x000010
+#define PCEP_OBJ_MONITORING_FLAGS_RESERVED 0xFFFFE0
+
+/*Define types for PCC-ID-REQ Object*/
+#define PCEP_OBJ_PCC_ID_REQ_IPv4 1
+#define PCEP_OBJ_PCC_ID_REQ_IPv6 2
+
+/*Define types for PCE-ID Object*/
+#define PCEP_OBJ_PCE_ID_IPv4 1
+#define PCEP_OBJ_PCE_ID_IPv6 2
+
+/*Mask for the flags of PROC-TIME Object*/
+#define PCEP_OBJ_PROC_TIME_FLAGS_E 0x0001
+#define PCEP_OBJ_PROC_TIME_FLAGS_RESERVED 0xFFFE
+
/*Mask for the flags of IPv4, IPv6 and UNnumbered InterfaceID Subobjects of RRO Object*/
#define PCEP_SUB_LPA 0x01
#define PCEP_SUB_LPU 0x02
@@ -231,7 +260,31 @@ static gint ett_pcep_obj_close = -1;
static gint ett_pcep_obj_path_key = -1;
static gint ett_pcep_obj_xro = -1;
static gint pcep_xro_flags_f= -1;
+static gint ett_pcep_obj_monitoring = -1;
+static gint pcep_obj_monitoring_flags_reserved = -1;
+static gint pcep_obj_monitoring_flags_l= -1;
+static gint pcep_obj_monitoring_flags_g= -1;
+static gint pcep_obj_monitoring_flags_p= -1;
+static gint pcep_obj_monitoring_flags_c= -1;
+static gint pcep_obj_monitoring_flags_i= -1;
+static gint pcep_obj_monitoring_monitoring_id_number = -1;
+static gint ett_pcep_obj_pcc_id_req = -1;
+static gint pcep_obj_pcc_id_req_ipv4 = -1;
+static gint pcep_obj_pcc_id_req_ipv6 = -1;
static gint ett_pcep_obj_of = -1;
+static gint ett_pcep_obj_pce_id = -1;
+static gint pcep_obj_pce_id_ipv4 = -1;
+static gint pcep_obj_pce_id_ipv6 = -1;
+static gint ett_pcep_obj_proc_time = -1;
+static gint pcep_obj_proc_time_flags_reserved = -1;
+static gint pcep_obj_proc_time_flags_e = -1;
+static gint pcep_obj_proc_time_cur_proc_time = -1;
+static gint pcep_obj_proc_time_min_proc_time = -1;
+static gint pcep_obj_proc_time_max_proc_time = -1;
+static gint pcep_obj_proc_time_ave_proc_time = -1;
+static gint pcep_obj_proc_time_var_proc_time = -1;
+static gint ett_pcep_obj_overload = -1;
+static gint pcep_obj_overload_duration = -1;
static gint pcep_subobj_flags_lpa= -1;
static gint pcep_subobj_flags_lpu= -1;
static gint pcep_subobj_label_flags_gl= -1;
@@ -246,7 +299,9 @@ typedef enum {
PCEP_MSG_PATH_COMPUTATION_REPLY,
PCEP_MSG_NOTIFICATION,
PCEP_MSG_ERROR,
- PCEP_MSG_CLOSE
+ PCEP_MSG_CLOSE,
+ PCEP_MSG_PATH_COMPUTATION_MONITORING_REQUEST,
+ PCEP_MSG_PATH_COMPUTATION_MONITORING_REPLY
} pcep_message_types;
static const value_string message_type_vals[] = {
@@ -257,6 +312,8 @@ static const value_string message_type_vals[] = {
{PCEP_MSG_NOTIFICATION, "NOTIFICATION MESSAGE" },
{PCEP_MSG_ERROR, "ERROR MESSAGE" },
{PCEP_MSG_CLOSE, "CLOSE MESSAGE" },
+ {PCEP_MSG_PATH_COMPUTATION_MONITORING_REQUEST, "PATH COMPUTATION MONITORING REQUEST MESSAGE" },
+ {PCEP_MSG_PATH_COMPUTATION_MONITORING_REPLY, "PATH COMPUTATION MONITORING REPLY MESSAGE" },
{0, NULL }
};
@@ -278,7 +335,12 @@ static const value_string pcep_class_vals[] = {
{PCEP_CLOSE_OBJ, "CLOSE OBJECT" },
{PCEP_PATH_KEY_OBJ, "PATH-KEY OBJECT" },
{PCEP_XRO_OBJ, "EXCLUDE ROUTE OBJECT (XRO)" },
+ {PCEP_OBJ_MONITORING, "MONITORING OBJECT" },
+ {PCEP_OBJ_PCC_ID_REQ, "PCC-ID-REQ OBJECT" },
{PCEP_OF_OBJ, "OBJECTIVE FUNCTION OBJECT (OF)"},
+ {PCEP_OBJ_PCE_ID, "PCE-ID OBJECT" },
+ {PCEP_OBJ_PROC_TIME, "PROC-TIME OBJECT" },
+ {PCEP_OBJ_OVERLOAD, "OVERLOAD OBJECT" },
{0, NULL }
};
@@ -535,6 +597,8 @@ enum pcep_filter_keys{
PCEPF_NOTIFICATION,
PCEPF_ERROR,
PCEPF_CLOSE,
+ PCEPF_PATH_COMPUTATION_MONITORING_REQUEST,
+ PCEPF_PATH_COMPUTATION_MONITORING_REPLY,
PCEPF_OBJECT_CLASS,
PCEPF_OBJ_OPEN,
@@ -558,7 +622,12 @@ enum pcep_filter_keys{
PCEPF_OBJ_CLOSE,
PCEPF_OBJ_PATH_KEY,
PCEPF_OBJ_XRO,
+ PCEPF_OBJ_MONITORING,
+ PCEPF_OBJ_PCC_ID_REQ,
PCEPF_OBJ_OF,
+ PCEPF_OBJ_PCE_ID,
+ PCEPF_OBJ_PROC_TIME,
+ PCEPF_OBJ_OVERLOAD,
PCEPF_SUBOBJ,
PCEPF_SUBOBJ_IPv4,
PCEPF_SUBOBJ_IPv6,
@@ -598,7 +667,12 @@ static gint *ett[] = {
&ett_pcep_obj_close,
&ett_pcep_obj_path_key,
&ett_pcep_obj_xro,
+ &ett_pcep_obj_monitoring,
+ &ett_pcep_obj_pcc_id_req,
&ett_pcep_obj_of,
+ &ett_pcep_obj_pce_id,
+ &ett_pcep_obj_proc_time,
+ &ett_pcep_obj_overload,
&ett_pcep_obj_unknown
};
@@ -616,12 +690,9 @@ dissect_pcep_tlvs(proto_tree *pcep_obj, tvbuff_t *tvb, int offset, gint length,
guint16 tlv_length;
guint16 tlv_type;
int i, j;
- int m = 0;
int padding = 0;
for (j = 0; j < length; j += 4 + tlv_length + padding){
- m = m+1;
-
tlv_type = tvb_get_ntohs(tvb, offset+j);
tlv_length = tvb_get_ntohs(tvb, offset + j + 2);
ti = proto_tree_add_text(pcep_obj, tvb, offset + j, tlv_length+4, "%s", val_to_str(tlv_type, pcep_tlvs_vals, "Unknown TLV (%u). "));
@@ -2040,6 +2111,78 @@ dissect_pcep_xro_obj(proto_tree *pcep_object_tree, tvbuff_t *tvb, int offset2, i
}
/*------------------------------------------------------------------------------
+ * MONITORING OBJECT
+ *------------------------------------------------------------------------------*/
+#define OBJ_MONITORING_MIN_LEN 8
+
+static void
+dissect_pcep_obj_monitoring(proto_tree *pcep_object_tree, tvbuff_t *tvb, int offset2, int obj_length)
+{
+ proto_item *ti;
+ proto_tree *monitoring_flags;
+
+ if (obj_length < OBJ_HDR_LEN + OBJ_MONITORING_MIN_LEN) {
+ proto_tree_add_text(pcep_object_tree, tvb, offset2, obj_length,
+ "Bad MONITORING object length %u, should be >= %u", obj_length,
+ OBJ_HDR_LEN + OBJ_MONITORING_MIN_LEN);
+ return;
+ }
+
+ proto_tree_add_text(pcep_object_tree, tvb, offset2, 1, "Reserved: 0x%02x", tvb_get_guint8(tvb, offset2));
+ ti = proto_tree_add_text(pcep_object_tree, tvb, offset2+1, 3, "Flags: 0x%06x", tvb_get_ntoh24(tvb, offset2+1));
+ monitoring_flags = proto_item_add_subtree(ti, ett_pcep_obj_monitoring);
+ proto_tree_add_item(monitoring_flags, pcep_obj_monitoring_flags_reserved, tvb, offset2 + 1, 3, ENC_NA);
+ proto_tree_add_item(monitoring_flags, pcep_obj_monitoring_flags_i, tvb, offset2 + 1, 3, ENC_NA);
+ proto_tree_add_item(monitoring_flags, pcep_obj_monitoring_flags_c, tvb, offset2 + 1, 3, ENC_NA);
+ proto_tree_add_item(monitoring_flags, pcep_obj_monitoring_flags_p, tvb, offset2 + 1, 3, ENC_NA);
+ proto_tree_add_item(monitoring_flags, pcep_obj_monitoring_flags_g, tvb, offset2 + 1, 3, ENC_NA);
+ proto_tree_add_item(monitoring_flags, pcep_obj_monitoring_flags_l, tvb, offset2 + 1, 3, ENC_NA);
+ proto_tree_add_item(pcep_object_tree, pcep_obj_monitoring_monitoring_id_number, tvb, offset2 + 4, 4, ENC_NA);
+
+ /* The object can have optional TLV(s)*/
+ offset2 += OBJ_MONITORING_MIN_LEN;
+ obj_length -= OBJ_HDR_LEN + OBJ_MONITORING_MIN_LEN;
+ dissect_pcep_tlvs(pcep_object_tree, tvb, offset2, obj_length, ett_pcep_obj_monitoring);
+}
+
+/*------------------------------------------------------------------------------
+ * PCC-ID-REQ OBJECT
+ *------------------------------------------------------------------------------*/
+#define OBJ_PCC_ID_REQ_IPV4_LEN 4
+#define OBJ_PCC_ID_REQ_IPV6_LEN 16
+
+static void
+dissect_pcep_obj_pcc_id_req(proto_tree *pcep_object_tree, tvbuff_t *tvb, int offset2, int obj_length, int type)
+{
+ switch(type)
+ {
+ case PCEP_OBJ_PCC_ID_REQ_IPv4:
+ if (obj_length != OBJ_HDR_LEN + OBJ_PCC_ID_REQ_IPV4_LEN) {
+ proto_tree_add_text(pcep_object_tree, tvb, offset2, obj_length,
+ "Bad IPv4 PCC-ID-REQ object length %u, should be %u", obj_length,
+ OBJ_HDR_LEN + OBJ_PCC_ID_REQ_IPV4_LEN);
+ return;
+ }
+ proto_tree_add_item(pcep_object_tree, pcep_obj_pcc_id_req_ipv4, tvb, offset2, 4, ENC_NA);
+ break;
+
+ case PCEP_OBJ_PCC_ID_REQ_IPv6:
+ if (obj_length != OBJ_HDR_LEN + OBJ_PCC_ID_REQ_IPV6_LEN) {
+ proto_tree_add_text(pcep_object_tree, tvb, offset2, obj_length,
+ "Bad IPv6 PCC-ID-REQ object length %u, should be %u", obj_length,
+ OBJ_HDR_LEN + OBJ_PCC_ID_REQ_IPV6_LEN);
+ return;
+ }
+ proto_tree_add_item(pcep_object_tree, pcep_obj_pcc_id_req_ipv6, tvb, offset2, 16, ENC_NA);
+ break;
+
+ default:
+ proto_tree_add_text(pcep_object_tree, tvb, offset2, obj_length - OBJ_HDR_LEN, "UNKNOWN Type Object (%u)", type);
+ break;
+ }
+}
+
+/*------------------------------------------------------------------------------
* OF OBJECT
*------------------------------------------------------------------------------*/
#define OF_OBJ_MIN_LEN 4
@@ -2066,6 +2209,93 @@ dissect_pcep_of_obj(proto_tree *pcep_object_tree, tvbuff_t *tvb, int offset2, in
dissect_pcep_tlvs(pcep_object_tree, tvb, offset2, obj_length, ett_pcep_obj_open);
}
+/*------------------------------------------------------------------------------
+ * PCE-ID OBJECT
+ *------------------------------------------------------------------------------*/
+#define OBJ_PCE_ID_IPV4_LEN 4
+#define OBJ_PCE_ID_IPV6_LEN 16
+
+static void
+dissect_pcep_obj_pce_id(proto_tree *pcep_object_tree, tvbuff_t *tvb, int offset2, int obj_length, int type)
+{
+ switch(type)
+ {
+ case PCEP_OBJ_PCE_ID_IPv4:
+ if (obj_length != OBJ_HDR_LEN + OBJ_PCE_ID_IPV4_LEN) {
+ proto_tree_add_text(pcep_object_tree, tvb, offset2, obj_length,
+ "Bad IPv4 PCE-ID object length %u, should be %u", obj_length,
+ OBJ_HDR_LEN + OBJ_PCE_ID_IPV4_LEN);
+ return;
+ }
+ proto_tree_add_item(pcep_object_tree, pcep_obj_pce_id_ipv4, tvb, offset2, 4, ENC_NA);
+ break;
+
+ case PCEP_OBJ_PCE_ID_IPv6:
+ if (obj_length != OBJ_HDR_LEN + OBJ_PCE_ID_IPV6_LEN) {
+ proto_tree_add_text(pcep_object_tree, tvb, offset2, obj_length,
+ "Bad IPv6 PCE-ID object length %u, should be %u", obj_length,
+ OBJ_HDR_LEN + OBJ_PCE_ID_IPV6_LEN);
+ return;
+ }
+ proto_tree_add_item(pcep_object_tree, pcep_obj_pce_id_ipv6, tvb, offset2, 16, ENC_NA);
+ break;
+
+ default:
+ proto_tree_add_text(pcep_object_tree, tvb, offset2, obj_length - OBJ_HDR_LEN, "UNKNOWN Type Object (%u)", type);
+ break;
+ }
+}
+
+/*------------------------------------------------------------------------------
+ * PROC-TIME OBJECT
+ *------------------------------------------------------------------------------*/
+#define OBJ_PROC_TIME_LEN 24
+
+static void
+dissect_pcep_obj_proc_time(proto_tree *pcep_object_tree, tvbuff_t *tvb, int offset2, int obj_length)
+{
+ proto_item *ti;
+ proto_tree *proc_time_flags;
+
+ if (obj_length != OBJ_HDR_LEN + OBJ_PROC_TIME_LEN) {
+ proto_tree_add_text(pcep_object_tree, tvb, offset2, obj_length,
+ "Bad PROC-TIME object length %u, should be %u", obj_length,
+ OBJ_HDR_LEN + OBJ_PROC_TIME_LEN);
+ return;
+ }
+
+ proto_tree_add_text(pcep_object_tree, tvb, offset2, 2, "Reserved: 0x%04x", tvb_get_ntohs(tvb, offset2));
+ ti = proto_tree_add_text(pcep_object_tree, tvb, offset2 + 2, 2, "Flags: 0x%04x ", tvb_get_ntohs(tvb, offset2 + 2));
+ proc_time_flags = proto_item_add_subtree(ti, ett_pcep_obj_proc_time);
+ proto_tree_add_item(proc_time_flags, pcep_obj_proc_time_flags_reserved, tvb, offset2 + 2, 2, ENC_NA);
+ proto_tree_add_item(proc_time_flags, pcep_obj_proc_time_flags_e, tvb, offset2 + 2, 2, ENC_NA);
+ proto_tree_add_item(pcep_object_tree, pcep_obj_proc_time_cur_proc_time, tvb, offset2 + 4, 4, ENC_NA);
+ proto_tree_add_item(pcep_object_tree, pcep_obj_proc_time_min_proc_time, tvb, offset2 + 8, 4, ENC_NA);
+ proto_tree_add_item(pcep_object_tree, pcep_obj_proc_time_max_proc_time, tvb, offset2 + 12, 4, ENC_NA);
+ proto_tree_add_item(pcep_object_tree, pcep_obj_proc_time_ave_proc_time, tvb, offset2 + 16, 4, ENC_NA);
+ proto_tree_add_item(pcep_object_tree, pcep_obj_proc_time_var_proc_time, tvb, offset2 + 20, 4, ENC_NA);
+}
+
+/*------------------------------------------------------------------------------
+ * OVERLOAD OBJECT
+ *------------------------------------------------------------------------------*/
+#define OBJ_OVERLOAD_LEN 4
+
+static void
+dissect_pcep_obj_overload(proto_tree *pcep_object_tree, tvbuff_t *tvb, int offset2, int obj_length)
+{
+ if (obj_length != OBJ_HDR_LEN + OBJ_OVERLOAD_LEN) {
+ proto_tree_add_text(pcep_object_tree, tvb, offset2, obj_length,
+ "Bad OVERLOAD object length %u, should be %u", obj_length,
+ OBJ_HDR_LEN + OBJ_OVERLOAD_LEN);
+ return;
+ }
+ proto_tree_add_text(pcep_object_tree, tvb, offset2, 1, "Flags: 0x%02x", tvb_get_guint8(tvb, offset2));
+ proto_tree_add_text(pcep_object_tree, tvb, offset2 + 1, 1, "Reserved: 0x%02x", tvb_get_guint8(tvb, offset2 + 1));
+ proto_tree_add_item(pcep_object_tree, pcep_obj_overload_duration, tvb, offset2 + 2, 2, ENC_NA);
+}
+
+
/*------------------------------------------------------------------------------*/
/* Dissect in Objects */
/*------------------------------------------------------------------------------*/
@@ -2170,11 +2400,36 @@ dissect_pcep_obj_tree(proto_tree *pcep_tree, tvbuff_t *tvb, int len, int offset,
pcep_object_tree = proto_item_add_subtree(pcep_object_item, ett_pcep_obj_xro);
break;
+ case PCEP_OBJ_MONITORING:
+ pcep_object_item = proto_tree_add_item(pcep_tree, pcep_filter[PCEPF_OBJ_MONITORING], tvb, offset, -1, ENC_NA);
+ pcep_object_tree = proto_item_add_subtree(pcep_object_item, ett_pcep_obj_monitoring);
+ break;
+
+ case PCEP_OBJ_PCC_ID_REQ:
+ pcep_object_item = proto_tree_add_item(pcep_tree, pcep_filter[PCEPF_OBJ_PCC_ID_REQ], tvb, offset, -1, ENC_NA);
+ pcep_object_tree = proto_item_add_subtree(pcep_object_item, ett_pcep_obj_pcc_id_req);
+ break;
+
case PCEP_OF_OBJ:
pcep_object_item = proto_tree_add_item(pcep_tree, pcep_filter[PCEPF_OBJ_OF], tvb, offset, -1, ENC_NA);
pcep_object_tree = proto_item_add_subtree(pcep_object_item, ett_pcep_obj_of);
break;
+ case PCEP_OBJ_PCE_ID:
+ pcep_object_item = proto_tree_add_item(pcep_tree, pcep_filter[PCEPF_OBJ_PCE_ID], tvb, offset, -1, ENC_NA);
+ pcep_object_tree = proto_item_add_subtree(pcep_object_item, ett_pcep_obj_pce_id);
+ break;
+
+ case PCEP_OBJ_PROC_TIME:
+ pcep_object_item = proto_tree_add_item(pcep_tree, pcep_filter[PCEPF_OBJ_PROC_TIME], tvb, offset, -1, ENC_NA);
+ pcep_object_tree = proto_item_add_subtree(pcep_object_item, ett_pcep_obj_proc_time);
+ break;
+
+ case PCEP_OBJ_OVERLOAD:
+ pcep_object_item = proto_tree_add_item(pcep_tree, pcep_filter[PCEPF_OBJ_OVERLOAD], tvb, offset, -1, ENC_NA);
+ pcep_object_tree = proto_item_add_subtree(pcep_object_item, ett_pcep_obj_overload);
+ break;
+
default:
pcep_object_item = proto_tree_add_text(pcep_tree, tvb, offset, -1, "Unknown object (%u)", obj_class);
pcep_object_tree = proto_item_add_subtree(pcep_object_item, ett_pcep_obj_unknown);
@@ -2271,10 +2526,30 @@ dissect_pcep_obj_tree(proto_tree *pcep_tree, tvbuff_t *tvb, int len, int offset,
dissect_pcep_xro_obj(pcep_object_tree, tvb, offset+4, obj_length, obj_class);
break;
+ case PCEP_OBJ_MONITORING:
+ dissect_pcep_obj_monitoring(pcep_object_tree, tvb, offset+4, obj_length);
+ break;
+
+ case PCEP_OBJ_PCC_ID_REQ:
+ dissect_pcep_obj_pcc_id_req(pcep_object_tree, tvb, offset+4, obj_length, type);
+ break;
+
case PCEP_OF_OBJ:
dissect_pcep_of_obj(pcep_object_tree, tvb, offset+4, obj_length);
break;
+ case PCEP_OBJ_PCE_ID:
+ dissect_pcep_obj_pce_id(pcep_object_tree, tvb, offset+4, obj_length, type);
+ break;
+
+ case PCEP_OBJ_PROC_TIME:
+ dissect_pcep_obj_proc_time(pcep_object_tree, tvb, offset+4, obj_length);
+ break;
+
+ case PCEP_OBJ_OVERLOAD:
+ dissect_pcep_obj_overload(pcep_object_tree, tvb, offset+4, obj_length);
+ break;
+
default:
proto_tree_add_text(pcep_object_tree, tvb, offset+4, obj_length-OBJ_HDR_LEN, "PCEP Object BODY non defined (%u)", type);
break;
@@ -2336,6 +2611,8 @@ dissect_pcep_msg_tree(tvbuff_t *tvb, proto_tree *tree, guint tree_mode, packet_i
case PCEPF_NOTIFICATION:
case PCEPF_ERROR:
case PCEPF_CLOSE:
+ case PCEPF_PATH_COMPUTATION_MONITORING_REQUEST:
+ case PCEPF_PATH_COMPUTATION_MONITORING_REPLY:
hidden_item = proto_tree_add_boolean(pcep_header_tree, pcep_filter[PCEPF_MSG + message_type], tvb, offset+1, 1, 1);
PROTO_ITEM_SET_HIDDEN(hidden_item);
break;
@@ -2418,6 +2695,12 @@ proto_register_pcep(void){
{&pcep_filter[PCEPF_CLOSE],
{ "Close Message", "pcep.msg.close", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
+ {&pcep_filter[PCEPF_PATH_COMPUTATION_MONITORING_REQUEST],
+ { "Path Computation Monitoring Request Message", "pcep.msg.path.computation.monitoring.request", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+ {&pcep_filter[PCEPF_PATH_COMPUTATION_MONITORING_REPLY],
+ { "Path Computation Monitoring Reply Mesagge", "pcep.msg.path.computation.monitoring.reply", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
/*Object header*/
{&pcep_hdr_obj_flags_reserved,
@@ -2567,10 +2850,88 @@ proto_register_pcep(void){
{&pcep_filter[PCEPF_OBJ_XRO],
{ "EXCLUDE ROUTE object (XRO)", "pcep.obj.xro", FT_NONE, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
+
+ {&pcep_filter[PCEPF_OBJ_MONITORING],
+ { "MONITORING object", "pcep.obj.monitoring", FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+ {&pcep_obj_monitoring_flags_reserved,
+ { "Reserved Flags", "pcep.obj.monitoring.flags.reserved", FT_BOOLEAN, 24, TFS(&tfs_set_notset),
+ PCEP_OBJ_MONITORING_FLAGS_RESERVED, NULL, HFILL }},
+ {&pcep_obj_monitoring_flags_l,
+ { "Liveness (L)", "pcep.obj.monitoring.flags.l", FT_BOOLEAN, 24, TFS(&tfs_set_notset),
+ PCEP_OBJ_MONITORING_FLAGS_L, NULL, HFILL }},
+ {&pcep_obj_monitoring_flags_g,
+ { "General (G)", "pcep.obj.monitoring.flags.g", FT_BOOLEAN, 24, TFS(&tfs_set_notset),
+ PCEP_OBJ_MONITORING_FLAGS_G, NULL, HFILL }},
+ {&pcep_obj_monitoring_flags_p,
+ { "Processing Time (P)", "pcep.obj.monitoring.flags.p", FT_BOOLEAN, 24, TFS(&tfs_set_notset),
+ PCEP_OBJ_MONITORING_FLAGS_P, NULL, HFILL }},
+ {&pcep_obj_monitoring_flags_c,
+ { "Overload (C)", "pcep.obj.monitoring.flags.c", FT_BOOLEAN, 24, TFS(&tfs_set_notset),
+ PCEP_OBJ_MONITORING_FLAGS_C, NULL, HFILL }},
+ {&pcep_obj_monitoring_flags_i,
+ { "Incomplete (I)", "pcep.obj.monitoring.flags.i", FT_BOOLEAN, 24, TFS(&tfs_set_notset),
+ PCEP_OBJ_MONITORING_FLAGS_I, NULL, HFILL }},
+ { &pcep_obj_monitoring_monitoring_id_number,
+ { "Monitoring ID Number", "pcep.obj.monitoring.monidnumber", FT_UINT32, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+
+ {&pcep_filter[PCEPF_OBJ_PCC_ID_REQ],
+ { "PCC-ID-REQ object", "pcep.obj.pccidreq", FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+ { &pcep_obj_pcc_id_req_ipv4,
+ { "IPv4 address", "pcep.obj.pccidreq.ipv4", FT_IPv4, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &pcep_obj_pcc_id_req_ipv6,
+ { "IPv6 address", "pcep.obj.pccidreq.ipv6", FT_IPv6, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+
{&pcep_filter[PCEPF_OBJ_OF],
{ "OBJECTIVE FUNCTION object (OF)", "pcep.obj.of", FT_NONE, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
+ {&pcep_filter[PCEPF_OBJ_PCE_ID],
+ { "PCE-ID object", "pcep.obj.pceid", FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+ { &pcep_obj_pce_id_ipv4,
+ { "IPv4 address", "pcep.obj.pceid.ipv4", FT_IPv4, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &pcep_obj_pce_id_ipv6,
+ { "IPv6 address", "pcep.obj.pceid.ipv6", FT_IPv6, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+
+ {&pcep_filter[PCEPF_OBJ_PROC_TIME],
+ { "PROC-TIME object", "pcep.obj.proctime", FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+ {&pcep_obj_proc_time_flags_reserved,
+ { "Reserved Flags", "pcep.obj.proctime.flags.reserved", FT_BOOLEAN, 16, TFS(&tfs_set_notset),
+ PCEP_OBJ_PROC_TIME_FLAGS_RESERVED, NULL, HFILL }},
+ {&pcep_obj_proc_time_flags_e,
+ { "Estimated (E)", "pcep.obj.proctime.flags.e", FT_BOOLEAN, 16, TFS(&tfs_set_notset),
+ PCEP_OBJ_PROC_TIME_FLAGS_E, NULL, HFILL }},
+ { &pcep_obj_proc_time_cur_proc_time,
+ { "Current processing time", "pcep.obj.proctime.curproctime", FT_UINT32, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &pcep_obj_proc_time_min_proc_time,
+ { "Minimum processing time", "pcep.obj.proctime.minproctime", FT_UINT32, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &pcep_obj_proc_time_max_proc_time,
+ { "Maximum processing time", "pcep.obj.proctime.maxproctime", FT_UINT32, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &pcep_obj_proc_time_ave_proc_time,
+ { "Average processing time", "pcep.obj.proctime.aveproctime", FT_UINT32, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &pcep_obj_proc_time_var_proc_time,
+ { "Variance processing time", "pcep.obj.proctime.varproctime", FT_UINT32, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+
+ {&pcep_filter[PCEPF_OBJ_OVERLOAD],
+ { "OVERLOAD object", "pcep.obj.overload", FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+ { &pcep_obj_overload_duration,
+ { "Overload Duration", "pcep.obj.overload.duration", FT_UINT16, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+
/*Subobjects*/
{&pcep_filter[PCEPF_SUBOBJ],
{ "Type", "pcep.subobj", FT_UINT8, BASE_DEC, VALS(pcep_subobj_vals), 0x0,
diff --git a/epan/dissectors/packet-pcli.c b/epan/dissectors/packet-pcli.c
index d193367465..f010a1680f 100644
--- a/epan/dissectors/packet-pcli.c
+++ b/epan/dissectors/packet-pcli.c
@@ -1,7 +1,7 @@
/* packet-pcli.c
* Routines for Packet Cable Lawful Intercept packet disassembly
* Packet Cable Lawful Intercept is detailed at
- * http://www.packetcable.com/downloads/specs/pkt-sp-esp-I01-991229.pdf
+ * http://www.cablelabs.com/specifications/archives/PKT-SP-ESP-I01-991229.pdf
* Chapter 4 ( Call Content Connection Interface )
*
* $Id$
@@ -33,11 +33,8 @@
#include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-#include <time.h>
-
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/addr_resolv.h>
#include <epan/prefs.h>
diff --git a/epan/dissectors/packet-pcp.c b/epan/dissectors/packet-pcp.c
index 17e1a16d12..fe917051d5 100644
--- a/epan/dissectors/packet-pcp.c
+++ b/epan/dissectors/packet-pcp.c
@@ -27,8 +27,8 @@
#endif
#include <epan/packet.h>
-#include "packet-tcp.h"
#include <epan/expert.h>
+#include "packet-tcp.h"
#define PCP_PORT 44321
#define PCP_HEADER_LEN 12
@@ -222,190 +222,190 @@ static gint ett_pcp_text_ident = -1;
static gint ett_pcp_text_buflen = -1;
static gint ett_pcp_text_buffer = -1;
-/* Packet types */
+/* packet types */
static const value_string packettypenames[] = {
- #define START_OR_ERROR 0x7000
- { 0x7000, "START/ERROR" },
- #define RESULT 0x7001
- { 0x7001, "RESULT" },
- #define PROFILE 0x7002
- { 0x7002, "PROFILE"},
- #define FETCH 0x7003
- { 0x7003, "FETCH"},
- #define DESC_REQ 0x7004
- { 0x7004, "DESC_REQ"},
- #define DESC 0x7005
- { 0x7005, "DESC"},
- #define INSTANCE_REQ 0x7006
- { 0x7006, "INSTANCE_REQ" },
- #define INSTANCE 0x7007
- { 0x7007, "INSTANCE" },
- #define TEXT_REQ 0x7008
- { 0x7008, "TEXT_REQ" },
- #define TEXT 0x7009
- { 0x7009, "TEXT" },
- #define CONTROL_REQ 0x700a
- { 0x700a, "CONTROL_REQ" }, /* unimplemented (pmlc/pmlogger only) */
- #define DATA_X 0x700b
- { 0x700b, "DATA_X" }, /* unimplemented (pmlc/pmlogger only) */
- #define CREDS 0x700c
- { 0x700c, "CREDS" },
- #define PMNS_IDS 0x700d
- { 0x700d, "PMNS_IDS" },
- #define PMNS_NAMES 0x700e
- { 0x700e, "PMNS_NAMES" },
- #define PMNS_CHILD 0x700f
- { 0x700f, "PMNS_CHILD" },
- #define PMNS_TRAVERSE 0x7010 /*also type FINISH as per pcp headers, but I can not see it used */
- { 0x7010, "PMNS_TRAVERSE" },
- { 0, NULL }
+ #define START_OR_ERROR 0x7000
+ { 0x7000, "START/ERROR" },
+ #define RESULT 0x7001
+ { 0x7001, "RESULT" },
+ #define PROFILE 0x7002
+ { 0x7002, "PROFILE"},
+ #define FETCH 0x7003
+ { 0x7003, "FETCH"},
+ #define DESC_REQ 0x7004
+ { 0x7004, "DESC_REQ"},
+ #define DESC 0x7005
+ { 0x7005, "DESC"},
+ #define INSTANCE_REQ 0x7006
+ { 0x7006, "INSTANCE_REQ" },
+ #define INSTANCE 0x7007
+ { 0x7007, "INSTANCE" },
+ #define TEXT_REQ 0x7008
+ { 0x7008, "TEXT_REQ" },
+ #define TEXT 0x7009
+ { 0x7009, "TEXT" },
+ #define CONTROL_REQ 0x700a
+ { 0x700a, "CONTROL_REQ" }, /* unimplemented (pmlc/pmlogger only) */
+ #define DATA_X 0x700b
+ { 0x700b, "DATA_X" }, /* unimplemented (pmlc/pmlogger only) */
+ #define CREDS 0x700c
+ { 0x700c, "CREDS" },
+ #define PMNS_IDS 0x700d
+ { 0x700d, "PMNS_IDS" },
+ #define PMNS_NAMES 0x700e
+ { 0x700e, "PMNS_NAMES" },
+ #define PMNS_CHILD 0x700f
+ { 0x700f, "PMNS_CHILD" },
+ #define PMNS_TRAVERSE 0x7010 /*also type FINISH as per pcp headers, but I can not see it used */
+ { 0x7010, "PMNS_TRAVERSE" },
+ { 0, NULL }
};
static const value_string packettypenames_pm_units_space[] = {
- { 0, "PM_SPACE_BYTE" },
- { 1, "PM_SPACE_KBYTE" },
- { 2, "PM_SPACE_MBYTE" },
- { 3, "PM_SPACE_GBYTE" },
- { 4, "PM_SPACE_TBYTE" },
- { 5, "PM_SPACE_PBYTE" },
- { 6, "PM_SPACE_EBYTE" },
- { 0, NULL }
+ { 0, "PM_SPACE_BYTE" },
+ { 1, "PM_SPACE_KBYTE" },
+ { 2, "PM_SPACE_MBYTE" },
+ { 3, "PM_SPACE_GBYTE" },
+ { 4, "PM_SPACE_TBYTE" },
+ { 5, "PM_SPACE_PBYTE" },
+ { 6, "PM_SPACE_EBYTE" },
+ { 0, NULL }
};
static const value_string packettypenames_pm_units_time[] = {
- { 0, "PM_TIME_NSEC" },
- { 1, "PM_TIME_USEC" },
- { 2, "PM_TIME_MSEC" },
- { 3, "PM_TIME_SEC" },
- { 4, "PM_TIME_MIN" },
- { 5, "PM_TIME_HOUR" },
- { 0, NULL }
+ { 0, "PM_TIME_NSEC" },
+ { 1, "PM_TIME_USEC" },
+ { 2, "PM_TIME_MSEC" },
+ { 3, "PM_TIME_SEC" },
+ { 4, "PM_TIME_MIN" },
+ { 5, "PM_TIME_HOUR" },
+ { 0, NULL }
};
static const value_string packettypenames_pm_types[] = {
- #define PM_TYPE_NOSUPPORT -1
- { -1, "PM_TYPE_NOSUPPORT" },
- #define PM_TYPE_32 0
- { 0, "PM_TYPE_32" },
- #define PM_TYPE_U32 1
- { 1, "PM_TYPE_U32" },
- #define PM_TYPE_64 2
- { 2, "PM_TYPE_64" },
- #define PM_TYPE_U64 3
- { 3, "PM_TYPE_U64" },
- #define PM_TYPE_FLOAT 4
- { 4, "PM_TYPE_FLOAT" },
- #define PM_TYPE_DOUBLE 5
- { 5, "PM_TYPE_DOUBLE" },
- #define PM_TYPE_STRING 6
- { 6, "PM_TYPE_STRING" },
- #define PM_TYPE_AGGREGATE 7
- { 7, "PM_TYPE_AGGREGATE" },
- #define PM_TYPE_AGGREGATE_STATIC 8
- { 8, "PM_TYPE_AGGREGATE_STATIC" },
- #define PM_TYPE_EVENT 9
- { 9, "PM_TYPE_EVENT" },
- #define PM_TYPE_UNKNOWN 255
- { 255, "PM_TYPE_UNKNOWN" },
- { 0, NULL }
+ #define PM_TYPE_NOSUPPORT -1
+ { -1, "PM_TYPE_NOSUPPORT" },
+ #define PM_TYPE_32 0
+ { 0, "PM_TYPE_32" },
+ #define PM_TYPE_U32 1
+ { 1, "PM_TYPE_U32" },
+ #define PM_TYPE_64 2
+ { 2, "PM_TYPE_64" },
+ #define PM_TYPE_U64 3
+ { 3, "PM_TYPE_U64" },
+ #define PM_TYPE_FLOAT 4
+ { 4, "PM_TYPE_FLOAT" },
+ #define PM_TYPE_DOUBLE 5
+ { 5, "PM_TYPE_DOUBLE" },
+ #define PM_TYPE_STRING 6
+ { 6, "PM_TYPE_STRING" },
+ #define PM_TYPE_AGGREGATE 7
+ { 7, "PM_TYPE_AGGREGATE" },
+ #define PM_TYPE_AGGREGATE_STATIC 8
+ { 8, "PM_TYPE_AGGREGATE_STATIC" },
+ #define PM_TYPE_EVENT 9
+ { 9, "PM_TYPE_EVENT" },
+ #define PM_TYPE_UNKNOWN 255
+ { 255, "PM_TYPE_UNKNOWN" },
+ { 0, NULL }
};
static const value_string packettypenames_pm_types_sem[] = {
- { 1, "PM_SEM_COUNTER" },
- { 3, "PM_SEM_INSTANT" },
- { 4, "PM_SEM_DISCRETE" },
- { 0, NULL }
+ { 1, "PM_SEM_COUNTER" },
+ { 3, "PM_SEM_INSTANT" },
+ { 4, "PM_SEM_DISCRETE" },
+ { 0, NULL }
};
static const value_string packettypenames_text_type_format[] = {
- #define PM_TEXT_ONELINE 1
- { 1, "PM_TEXT_ONELINE" },
- #define PM_TEXT_HELP 2
- { 2, "PM_TEXT_HELP" },
- { 0, NULL }
+ #define PM_TEXT_ONELINE 1
+ { 1, "PM_TEXT_ONELINE" },
+ #define PM_TEXT_HELP 2
+ { 2, "PM_TEXT_HELP" },
+ { 0, NULL }
};
static const value_string packettypenames_text_type_ident[] = {
- #define PM_TEXT_PMID 4
- { 1, "PM_TEXT_PMID" },
- #define PM_TEXT_INDOM 8
- { 2, "PM_TEXT_INDOM" },
- { 0, NULL }
+ #define PM_TEXT_PMID 4
+ { 1, "PM_TEXT_PMID" },
+ #define PM_TEXT_INDOM 8
+ { 2, "PM_TEXT_INDOM" },
+ { 0, NULL }
};
static const value_string packettypenames_valfmt[] = {
- #define PM_VAL_INSITU 0
- { 0, "PM_VAL_INSITU" },
- #define PM_VAL_DPTR 1
- { 1, "PM_VAL_DPTR" },
- #define PM_VAL_SPTR 2
- { 2, "PM_VAL_SPTR" },
- { 0, NULL }
+ #define PM_VAL_INSITU 0
+ { 0, "PM_VAL_INSITU" },
+ #define PM_VAL_DPTR 1
+ { 1, "PM_VAL_DPTR" },
+ #define PM_VAL_SPTR 2
+ { 2, "PM_VAL_SPTR" },
+ { 0, NULL }
};
static const value_string packettypenames_errors[] = {
- { -12345, "PM_ERR_GENERIC" },
- { -12346, "PM_ERR_PMNS" },
- { -12347, "PM_ERR_NOPMNS" },
- { -12348, "PM_ERR_DUPPMNS" },
- { -12349, "PM_ERR_TEXT" },
- { -12350, "PM_ERR_APPVERSION" },
- { -12351, "PM_ERR_VALUE" },
- { -12352, "PM_ERR_LICENSE" },
- { -12353, "PM_ERR_TIMEOUT" },
- { -12354, "PM_ERR_NODATA" },
- { -12355, "PM_ERR_RESET" },
- { -12356, "PM_ERR_FILE" },
- { -12357, "PM_ERR_NAME" },
- { -12358, "PM_ERR_PMID" },
- { -12359, "PM_ERR_INDOM" },
- { -12360, "PM_ERR_INST" },
- { -12361, "PM_ERR_UNIT" },
- { -12362, "PM_ERR_CONV" },
- { -12363, "PM_ERR_TRUNC" },
- { -12364, "PM_ERR_SIGN" },
- { -12365, "PM_ERR_PROFILE" },
- { -12366, "PM_ERR_IPC" },
- { -12367, "PM_ERR_NOASCII" },
- { -12368, "PM_ERR_EOF" },
- { -12369, "PM_ERR_NOTHOST" },
- { -12370, "PM_ERR_EOL" },
- { -12371, "PM_ERR_MODE" },
- { -12372, "PM_ERR_LABEL" },
- { -12373, "PM_ERR_LOGREC" },
- { -12374, "PM_ERR_NOTARCHIVE" },
- { -12375, "PM_ERR_LOGFILE" },
- { -12376, "PM_ERR_NOCONTEXT" },
- { -12377, "PM_ERR_PROFILESPEC" },
- { -12378, "PM_ERR_PMID_LOG" },
- { -12379, "PM_ERR_INDOM_LOG" },
- { -12380, "PM_ERR_INST_LOG" },
- { -12381, "PM_ERR_NOPROFILE" },
- { -12386, "PM_ERR_NOAGENT" },
- { -12387, "PM_ERR_PERMISSION" },
- { -12388, "PM_ERR_CONNLIMIT" },
- { -12389, "PM_ERR_AGAIN" },
- { -12390, "PM_ERR_ISCONN" },
- { -12391, "PM_ERR_NOTCONN" },
- { -12392, "PM_ERR_NEEDPORT" },
- { -12393, "PM_ERR_WANTACK" },
- { -12394, "PM_ERR_NONLEAF" },
- { -12395, "PM_ERR_OBJSTYLE" },
- { -12396, "PM_ERR_PMCDLICENSE" },
- { -12397, "PM_ERR_TYPE" },
- { -12442, "PM_ERR_CTXBUSY" },
- { -12443, "PM_ERR_TOOSMALL" },
- { -12444, "PM_ERR_TOOBIG" },
- { -13393, "PM_ERR_PMDAREADY" },
- { -13394, "PM_ERR_PMDANOTREADY" },
- { -21344, "PM_ERR_NYI" },
- { 0, NULL }
+ { -12345, "PM_ERR_GENERIC" },
+ { -12346, "PM_ERR_PMNS" },
+ { -12347, "PM_ERR_NOPMNS" },
+ { -12348, "PM_ERR_DUPPMNS" },
+ { -12349, "PM_ERR_TEXT" },
+ { -12350, "PM_ERR_APPVERSION" },
+ { -12351, "PM_ERR_VALUE" },
+ { -12352, "PM_ERR_LICENSE" },
+ { -12353, "PM_ERR_TIMEOUT" },
+ { -12354, "PM_ERR_NODATA" },
+ { -12355, "PM_ERR_RESET" },
+ { -12356, "PM_ERR_FILE" },
+ { -12357, "PM_ERR_NAME" },
+ { -12358, "PM_ERR_PMID" },
+ { -12359, "PM_ERR_INDOM" },
+ { -12360, "PM_ERR_INST" },
+ { -12361, "PM_ERR_UNIT" },
+ { -12362, "PM_ERR_CONV" },
+ { -12363, "PM_ERR_TRUNC" },
+ { -12364, "PM_ERR_SIGN" },
+ { -12365, "PM_ERR_PROFILE" },
+ { -12366, "PM_ERR_IPC" },
+ { -12367, "PM_ERR_NOASCII" },
+ { -12368, "PM_ERR_EOF" },
+ { -12369, "PM_ERR_NOTHOST" },
+ { -12370, "PM_ERR_EOL" },
+ { -12371, "PM_ERR_MODE" },
+ { -12372, "PM_ERR_LABEL" },
+ { -12373, "PM_ERR_LOGREC" },
+ { -12374, "PM_ERR_NOTARCHIVE" },
+ { -12375, "PM_ERR_LOGFILE" },
+ { -12376, "PM_ERR_NOCONTEXT" },
+ { -12377, "PM_ERR_PROFILESPEC" },
+ { -12378, "PM_ERR_PMID_LOG" },
+ { -12379, "PM_ERR_INDOM_LOG" },
+ { -12380, "PM_ERR_INST_LOG" },
+ { -12381, "PM_ERR_NOPROFILE" },
+ { -12386, "PM_ERR_NOAGENT" },
+ { -12387, "PM_ERR_PERMISSION" },
+ { -12388, "PM_ERR_CONNLIMIT" },
+ { -12389, "PM_ERR_AGAIN" },
+ { -12390, "PM_ERR_ISCONN" },
+ { -12391, "PM_ERR_NOTCONN" },
+ { -12392, "PM_ERR_NEEDPORT" },
+ { -12393, "PM_ERR_WANTACK" },
+ { -12394, "PM_ERR_NONLEAF" },
+ { -12395, "PM_ERR_OBJSTYLE" },
+ { -12396, "PM_ERR_PMCDLICENSE" },
+ { -12397, "PM_ERR_TYPE" },
+ { -12442, "PM_ERR_CTXBUSY" },
+ { -12443, "PM_ERR_TOOSMALL" },
+ { -12444, "PM_ERR_TOOBIG" },
+ { -13393, "PM_ERR_PMDAREADY" },
+ { -13394, "PM_ERR_PMDANOTREADY" },
+ { -21344, "PM_ERR_NYI" },
+ { 0, NULL }
};
static const value_string packettypenames_creds[]= {
- { 1, "CVERSION" },
- { 2, "CAUTH" },
- { 0, NULL }
+ { 1, "CVERSION" },
+ { 2, "CAUTH" },
+ { 0, NULL }
};
/* function prototypes */
@@ -434,874 +434,892 @@ static void dissect_pcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
/* message length for dissect_tcp */
static guint get_pcp_message_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
{
- /* length is at the very start of the packet, after tcp header */
- return (guint)tvb_get_ntohl(tvb, offset);
+ /* length is at the very start of the packet, after tcp header */
+ return (guint)tvb_get_ntohl(tvb, offset);
}
static int dissect_pcp_message_creds(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
- guint32 creds_length;
- guint32 i;
-
- /* Append the type of packet */
- col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]", val_to_str(CREDS, packettypenames, "Unknown Type:0x%02x"));
-
- /* First is the number of creds */
- proto_tree_add_item(tree, hf_pcp_creds_number_of, tvb, offset, 4, ENC_BIG_ENDIAN);
- /* Store the number of creds so we know how long to interate for */
- creds_length = tvb_get_ntohl(tvb, offset);
- offset += 4;
- /* Go through each __pmCreds struct */
- for (i = 0; i < creds_length; i++) {
- /* __pmCred.c_type */
- proto_tree_add_item(tree, hf_pcp_creds_type, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset += 1;
- /* __pmCred.c_vala - Usually the PDU version */
- proto_tree_add_item(tree, hf_pcp_creds_vala, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset += 1;
- /* __pmCred.c_valb - Unused */
- proto_tree_add_item(tree, hf_pcp_creds_valb, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset += 1;
- /* __pmCred.c_valc - Unused */
- proto_tree_add_item(tree, hf_pcp_creds_valc, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset += 1;
- }
- return offset;
+ guint32 creds_length;
+ guint32 i;
+
+ /* append the type of packet */
+ col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]",
+ val_to_str(CREDS, packettypenames, "Unknown Type:0x%02x"));
+
+ /* first is the number of creds */
+ proto_tree_add_item(tree, hf_pcp_creds_number_of, tvb, offset, 4, ENC_BIG_ENDIAN);
+ /* store the number of creds so we know how long to interate for */
+ creds_length = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+ /* go through each __pmCreds struct */
+ for (i = 0; i < creds_length; i++) {
+ /* __pmCred.c_type */
+ proto_tree_add_item(tree, hf_pcp_creds_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ /* __pmCred.c_vala - Usually the PDU version */
+ proto_tree_add_item(tree, hf_pcp_creds_vala, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ /* __pmCred.c_valb - Unused */
+ proto_tree_add_item(tree, hf_pcp_creds_valb, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ /* __pmCred.c_valc - Unused */
+ proto_tree_add_item(tree, hf_pcp_creds_valc, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ }
+ return offset;
}
/* ERROR packet format:
- signed int error
+ signed int error
*/
static int dissect_pcp_message_error(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
- gint32 error_num;
-
- /* append the type of packet, we can't look this up as it clashes with START */
- col_append_str(pinfo->cinfo, COL_INFO, "[ERROR] ");
-
- /* add the error item to the tree and column */
- proto_tree_add_item(tree, hf_pcp_pdu_error, tvb, offset, 4, ENC_BIG_ENDIAN);
- error_num = tvb_get_ntohl(tvb, 4);
- col_append_fstr(pinfo->cinfo, COL_INFO, "error=%s ", val_to_str(error_num, packettypenames_errors, "Unknown Error:%i"));
- offset += 4;
- return offset;
+ gint32 error_num;
+
+ /* append the type of packet, we can't look this up as it clashes with START */
+ col_append_str(pinfo->cinfo, COL_INFO, "[ERROR] ");
+
+ /* add the error item to the tree and column */
+ proto_tree_add_item(tree, hf_pcp_pdu_error, tvb, offset, 4, ENC_BIG_ENDIAN);
+ error_num = tvb_get_ntohl(tvb, 4);
+ col_append_fstr(pinfo->cinfo, COL_INFO, "error=%s ",
+ val_to_str(error_num, packettypenames_errors, "Unknown Error:%i"));
+ offset += 4;
+ return offset;
}
/* START packet format:
- unsigned int sts,
- struct __pmPDUInfo
- |
- |> unsigned int zero : 1 bit
- unsigned int version : 7 bits
- unsigned int licensed : 8 bits
- unsigned int authorize : 16 bits
+ unsigned int sts,
+ struct __pmPDUInfo
+ |
+ |> unsigned int zero : 1 bit
+ unsigned int version : 7 bits
+ unsigned int licensed : 8 bits
+ unsigned int authorize : 16 bits
*/
static int dissect_pcp_message_start(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
- /* create a start tree tree to hold the information*/
- proto_item *pcp_start_item = NULL;
- proto_tree *pcp_start_tree = NULL;
- guint32 bits_offset;
-
- pcp_start_item = proto_tree_add_item(tree, hf_pcp_start, tvb, 0, -1, ENC_NA);
- pcp_start_tree = proto_item_add_subtree(pcp_start_item, ett_pcp);
-
- bits_offset = offset*8;
-
- /* Append the type of packet, we can't look this up as it clashes with ERROR */
- col_append_str(pinfo->cinfo, COL_INFO, "[START]");
-
- /* status */
- proto_tree_add_item(pcp_start_tree, hf_pcp_start_status, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
- bits_offset += 32; /* 4 bytes */
- /* zero bit and version bits */
- proto_tree_add_bits_item(pcp_start_tree, hf_pcp_start_zero, tvb, bits_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_bits_item(pcp_start_tree, hf_pcp_start_version, tvb, bits_offset+1, 7, ENC_BIG_ENDIAN);
- offset += 1;
- /*bits_offset += 8;*/
- /* licensed */
- proto_tree_add_item(pcp_start_tree, hf_pcp_start_licensed, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset += 1;
- /* authorize */
- proto_tree_add_item(pcp_start_tree, hf_pcp_start_authorize, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
- return offset;
+ /* create a start tree tree to hold the information*/
+ proto_item *pcp_start_item;
+ proto_tree *pcp_start_tree;
+ guint32 bits_offset;
+
+ pcp_start_item = proto_tree_add_item(tree, hf_pcp_start, tvb, 0, -1, ENC_NA);
+ pcp_start_tree = proto_item_add_subtree(pcp_start_item, ett_pcp);
+
+ bits_offset = offset*8;
+
+ /* append the type of packet, we can't look this up as it clashes with ERROR */
+ col_append_str(pinfo->cinfo, COL_INFO, "[START]");
+
+ /* status */
+ proto_tree_add_item(pcp_start_tree, hf_pcp_start_status, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ bits_offset += 32; /* 4 bytes */
+ /* zero bit and version bits */
+ proto_tree_add_bits_item(pcp_start_tree, hf_pcp_start_zero, tvb, bits_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(pcp_start_tree, hf_pcp_start_version, tvb, bits_offset+1, 7, ENC_BIG_ENDIAN);
+ offset += 1;
+ /*bits_offset += 8;*/
+ /* licensed */
+ proto_tree_add_item(pcp_start_tree, hf_pcp_start_licensed, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ /* authorize */
+ proto_tree_add_item(pcp_start_tree, hf_pcp_start_authorize, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ return offset;
}
/* PMNS_TRAVERSE packet format:
- guint32 subtype
- guint32 namelen
- char name[sizeof(namelen)] + padding
+ guint32 subtype
+ guint32 namelen
+ char name[sizeof(namelen)] + padding
*/
static int dissect_pcp_message_pmns_traverse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
- proto_item *pcp_pmns_traverse_item = NULL;
- proto_tree *pcp_pmns_traverse_tree = NULL;
- guint32 name_len;
- guint32 padding;
-
- /* Append the type of packet */
- col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]", val_to_str(PMNS_TRAVERSE, packettypenames, "Unknown Type:0x%02x"));
-
- pcp_pmns_traverse_item = proto_tree_add_item(tree, hf_pcp_pmns_traverse, tvb, offset, -1, ENC_NA);
- pcp_pmns_traverse_tree = proto_item_add_subtree(pcp_pmns_traverse_item, ett_pcp);
-
- /* subtype */
- proto_tree_add_item(pcp_pmns_traverse_tree, hf_pcp_pmns_subtype, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
- /* namelen */
- proto_tree_add_item(pcp_pmns_traverse_tree, hf_pcp_pmns_namelen, tvb, offset, 4, ENC_BIG_ENDIAN);
- name_len = tvb_get_ntohl(tvb, offset); /* get the actual length out so we can use it in the next item */
- offset += 4;
- /* name */
- proto_tree_add_item(pcp_pmns_traverse_tree, hf_pcp_pmns_name, tvb, offset, name_len, ENC_ASCII|ENC_NA);
- offset += name_len; /* increment by whatever the length of the name string was */
-
- /* "padding" (not really padding, just what is left over in the old buffer) */
- padding = name_len % 4; /* names are padded to the nearest 4 byte boundary */
- if (padding != 0) { /* if there is padding, keep going till the remainder of mod 4 */
- padding = 4 - padding; /* we want the inverse of the remainder */
-
- proto_tree_add_item(pcp_pmns_traverse_tree, hf_pcp_pdu_padding, tvb, offset, padding, ENC_NA);
- offset += padding;
- }
- return offset;
+ proto_item *pcp_pmns_traverse_item;
+ proto_tree *pcp_pmns_traverse_tree;
+ guint32 name_len;
+ guint32 padding;
+
+ /* append the type of packet */
+ col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]",
+ val_to_str(PMNS_TRAVERSE, packettypenames, "Unknown Type:0x%02x"));
+
+ pcp_pmns_traverse_item = proto_tree_add_item(tree, hf_pcp_pmns_traverse, tvb, offset, -1, ENC_NA);
+ pcp_pmns_traverse_tree = proto_item_add_subtree(pcp_pmns_traverse_item, ett_pcp);
+
+ /* subtype */
+ proto_tree_add_item(pcp_pmns_traverse_tree, hf_pcp_pmns_subtype, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ /* namelen */
+ proto_tree_add_item(pcp_pmns_traverse_tree, hf_pcp_pmns_namelen, tvb, offset, 4, ENC_BIG_ENDIAN);
+ name_len = tvb_get_ntohl(tvb, offset); /* get the actual length out so we can use it in the next item */
+ offset += 4;
+ /* name */
+ proto_tree_add_item(pcp_pmns_traverse_tree, hf_pcp_pmns_name, tvb, offset, name_len, ENC_ASCII|ENC_NA);
+ offset += name_len; /* increment by whatever the length of the name string was */
+
+ /* "padding" (not really padding, just what is left over in the old buffer) */
+ padding = name_len % 4; /* names are padded to the nearest 4 byte boundary */
+ if (padding != 0) { /* if there is padding, keep going till the remainder of mod 4 */
+ padding = 4 - padding; /* we want the inverse of the remainder */
+
+ proto_tree_add_item(pcp_pmns_traverse_tree, hf_pcp_pdu_padding, tvb, offset, padding, ENC_NA);
+ offset += padding;
+ }
+ return offset;
}
/* PMNS_NAMES packet format:
- guint32 nstrbytes (number of str bytes)
- guint32 numstatus (0 if no status. Also, if 0, use name_t, otherwise use name_status_t )
- guint32 numnames
- __pmPDU names (if numstatus = 0, filled with name_t, otherwise name_status_t)
- | |
- | |> -- name_t --
- | int namelen
- | char name[sizeof(namelen)]
- |
- |> -- name_status_t --
- int status
- int namelen
- char name[sizeof(namelen)]
+ guint32 nstrbytes (number of str bytes)
+ guint32 numstatus (0 if no status. Also, if 0, use name_t, otherwise use name_status_t )
+ guint32 numnames
+ __pmPDU names (if numstatus = 0, filled with name_t, otherwise name_status_t)
+ | |
+ | |> -- name_t --
+ | int namelen
+ | char name[sizeof(namelen)]
+ |
+ |> -- name_status_t --
+ int status
+ int namelen
+ char name[sizeof(namelen)]
*/
static int dissect_pcp_message_pmns_names(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
- proto_item *pcp_pmns_names_item = NULL;
- proto_tree *pcp_pmns_names_tree = NULL;
- proto_item *pcp_pmns_names_name_item = NULL;
- proto_tree *pcp_pmns_names_name_tree = NULL;
- guint32 is_pmns_names_status;
- guint32 num_names;
- guint32 name_len;
- guint32 full_name_len;
- guint32 padding;
- guint32 i;
-
- /* Append the type of packet */
- col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]", val_to_str(PMNS_NAMES, packettypenames, "Unknown Type:0x%02x"));
-
- pcp_pmns_names_item = proto_tree_add_item(tree, hf_pcp_pmns_names, tvb, offset, -1, ENC_NA);
- pcp_pmns_names_tree = proto_item_add_subtree(pcp_pmns_names_item, ett_pcp);
-
- /* nstrbytes */
- proto_tree_add_item(pcp_pmns_names_tree, hf_pcp_pmns_names_nstrbytes, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
-
- /* numstatus */
- proto_tree_add_item(pcp_pmns_names_tree, hf_pcp_pmns_names_numstatus, tvb, offset, 4, ENC_BIG_ENDIAN);
- is_pmns_names_status = tvb_get_ntohl(tvb, offset); /* Is the status also present in this PDU? */
- offset += 4;
-
- /* numnames */
- proto_tree_add_item(pcp_pmns_names_tree, hf_pcp_pmns_names_numnames, tvb, offset, 4, ENC_BIG_ENDIAN);
- num_names = tvb_get_ntohl(tvb, offset); /* get the number of names to iterate through */
- offset += 4;
-
- /* nametrees */
- for (i=0; i < num_names; i++) {
- /* Find out the size of the name_t/name_status_t before we create the tree */
- if (is_pmns_names_status) {
- name_len = tvb_get_ntohl(tvb, offset+4);
- full_name_len = name_len + 8;
- } else {
- name_len = tvb_get_ntohl(tvb, offset);
- full_name_len = name_len + 4;
- }
- /* Add a new subtree for each name */
- pcp_pmns_names_name_item = proto_tree_add_item(pcp_pmns_names_tree, hf_pcp_pmns_names_nametree, tvb, offset, full_name_len, ENC_NA);
- pcp_pmns_names_name_tree = proto_item_add_subtree(pcp_pmns_names_name_item, ett_pcp);
-
- if (is_pmns_names_status) {
- /* Print out the name status and increment if we're supposed to have it */
- proto_tree_add_item(pcp_pmns_names_name_tree, hf_pcp_pmns_names_nametree_status, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
- }
- /* namelen */
- proto_tree_add_item(pcp_pmns_names_name_tree, hf_pcp_pmns_names_nametree_namelen, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
- /* name */
- proto_tree_add_item(pcp_pmns_names_name_tree, hf_pcp_pmns_names_nametree_name, tvb, offset, name_len, ENC_ASCII|ENC_NA);
- offset += name_len;
- /* padding */
- padding = name_len % 4; /* names are padded to the nearest 4 byte boundary */
- if (padding != 0) {
- padding = 4 - padding; /* we want the inverse of the remainder */
- /* if there is padding, keep going till the remainder of mod 8 */
- proto_tree_add_item(pcp_pmns_names_name_tree, hf_pcp_pdu_padding, tvb, offset, padding, ENC_NA);
- offset += padding;
- }
- }
- return offset;
+ proto_item *pcp_pmns_names_item;
+ proto_tree *pcp_pmns_names_tree;
+ proto_item *pcp_pmns_names_name_item;
+ proto_tree *pcp_pmns_names_name_tree;
+ guint32 is_pmns_names_status;
+ guint32 num_names;
+ guint32 name_len;
+ guint32 full_name_len;
+ guint32 padding;
+ guint32 i;
+
+ /* append the type of packet */
+ col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]", val_to_str(PMNS_NAMES, packettypenames, "Unknown Type:0x%02x"));
+
+ pcp_pmns_names_item = proto_tree_add_item(tree, hf_pcp_pmns_names, tvb, offset, -1, ENC_NA);
+ pcp_pmns_names_tree = proto_item_add_subtree(pcp_pmns_names_item, ett_pcp);
+
+ /* nstrbytes */
+ proto_tree_add_item(pcp_pmns_names_tree, hf_pcp_pmns_names_nstrbytes, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ /* numstatus */
+ proto_tree_add_item(pcp_pmns_names_tree, hf_pcp_pmns_names_numstatus, tvb, offset, 4, ENC_BIG_ENDIAN);
+ is_pmns_names_status = tvb_get_ntohl(tvb, offset); /* is the status also present in this PDU? */
+ offset += 4;
+
+ /* numnames */
+ proto_tree_add_item(pcp_pmns_names_tree, hf_pcp_pmns_names_numnames, tvb, offset, 4, ENC_BIG_ENDIAN);
+ num_names = tvb_get_ntohl(tvb, offset); /* get the number of names to iterate through */
+ offset += 4;
+
+ /* nametrees */
+ for (i=0; i < num_names; i++) {
+ /* find out the size of the name_t/name_status_t before we create the tree */
+ if (is_pmns_names_status) {
+ name_len = tvb_get_ntohl(tvb, offset+4);
+ full_name_len = name_len + 8;
+ } else {
+ name_len = tvb_get_ntohl(tvb, offset);
+ full_name_len = name_len + 4;
+ }
+ /* add a new subtree for each name */
+ pcp_pmns_names_name_item = proto_tree_add_item(pcp_pmns_names_tree, hf_pcp_pmns_names_nametree,
+ tvb, offset, full_name_len, ENC_NA);
+ pcp_pmns_names_name_tree = proto_item_add_subtree(pcp_pmns_names_name_item, ett_pcp);
+
+ if (is_pmns_names_status) {
+ /* print out the name status and increment if we're supposed to have it */
+ proto_tree_add_item(pcp_pmns_names_name_tree, hf_pcp_pmns_names_nametree_status,
+ tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ }
+ /* namelen */
+ proto_tree_add_item(pcp_pmns_names_name_tree, hf_pcp_pmns_names_nametree_namelen,
+ tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ /* name */
+ proto_tree_add_item(pcp_pmns_names_name_tree, hf_pcp_pmns_names_nametree_name,
+ tvb, offset, name_len, ENC_ASCII|ENC_NA);
+ offset += name_len;
+ /* padding */
+ padding = name_len % 4; /* names are padded to the nearest 4 byte boundary */
+ if (padding != 0) {
+ padding = 4 - padding; /* we want the inverse of the remainder */
+ /* if there is padding, keep going till the remainder of mod 8 */
+ proto_tree_add_item(pcp_pmns_names_name_tree, hf_pcp_pdu_padding, tvb, offset, padding, ENC_NA);
+ offset += padding;
+ }
+ }
+ return offset;
}
/* PMNS_CHILD packet format:
- guint32 subtype
- guint32 namelen
- char name[namelen]
+ guint32 subtype
+ guint32 namelen
+ char name[namelen]
*/
static int dissect_pcp_message_pmns_child(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
- guint32 name_len;
- proto_item *pcp_pmns_child_item = NULL;
- proto_tree *pcp_pmns_child_tree = NULL;
+ proto_item *pcp_pmns_child_item;
+ proto_tree *pcp_pmns_child_tree;
+ guint32 name_len;
- pcp_pmns_child_item = proto_tree_add_item(tree, hf_pcp_pmns_child, tvb, offset, -1, ENC_NA);
- pcp_pmns_child_tree = proto_item_add_subtree(pcp_pmns_child_item, ett_pcp);
+ pcp_pmns_child_item = proto_tree_add_item(tree, hf_pcp_pmns_child, tvb, offset, -1, ENC_NA);
+ pcp_pmns_child_tree = proto_item_add_subtree(pcp_pmns_child_item, ett_pcp);
- /* Append the type of packet */
- col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]", val_to_str(PMNS_CHILD, packettypenames, "Unknown Type:0x%02x"));
+ /* append the type of packet */
+ col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]", val_to_str(PMNS_CHILD, packettypenames, "Unknown Type:0x%02x"));
- /* subtype */
- proto_tree_add_item(pcp_pmns_child_tree, hf_pcp_pmns_subtype, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
+ /* subtype */
+ proto_tree_add_item(pcp_pmns_child_tree, hf_pcp_pmns_subtype, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
- /* namelen */
- proto_tree_add_item(pcp_pmns_child_tree, hf_pcp_pmns_namelen, tvb, offset, 4, ENC_BIG_ENDIAN);
- name_len = tvb_get_ntohl(tvb, offset); /* length of the next value */
- offset += 4;
+ /* namelen */
+ proto_tree_add_item(pcp_pmns_child_tree, hf_pcp_pmns_namelen, tvb, offset, 4, ENC_BIG_ENDIAN);
+ name_len = tvb_get_ntohl(tvb, offset); /* length of the next value */
+ offset += 4;
- /* name */
- proto_tree_add_item(pcp_pmns_child_tree, hf_pcp_pmns_name, tvb, offset, name_len, ENC_ASCII|ENC_NA);
- offset += 4;
- return offset;
+ /* name */
+ proto_tree_add_item(pcp_pmns_child_tree, hf_pcp_pmns_name, tvb, offset, name_len, ENC_ASCII|ENC_NA);
+ offset += 4;
+ return offset;
}
/* PMNS_IDS packet format
- guint32 status
- guint32 numids
- pmID idlist[numids] (where pmID = uint32)
-
+ guint32 status
+ guint32 numids
+ pmID idlist[numids] (where pmID = uint32)
+
*/
static int dissect_pcp_message_pmns_ids(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
- proto_item *pcp_pmns_ids_item = NULL;
- proto_tree *pcp_pmns_ids_tree = NULL;
- guint32 num_ids;
- guint32 i;
-
- /* Append the type of packet */
- col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]", val_to_str(PMNS_IDS, packettypenames, "Unknown Type:0x%02x"));
-
- pcp_pmns_ids_item = proto_tree_add_item(tree, hf_pcp_pmns_ids, tvb, offset, -1, ENC_NA);
- pcp_pmns_ids_tree = proto_item_add_subtree(pcp_pmns_ids_item, ett_pcp);
-
- /* status */
- proto_tree_add_item(pcp_pmns_ids_tree, hf_pcp_pmns_ids_status, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
-
- /* numids */
- proto_tree_add_item(pcp_pmns_ids_tree, hf_pcp_pmns_ids_numids, tvb, offset, 4, ENC_BIG_ENDIAN);
- num_ids = tvb_get_ntohl(tvb, offset);
- offset += 4;
-
- /* pmIDs */
- for (i=0; i<num_ids; i++) {
- /* pmID */
- offset = dissect_pcp_partial_pmid(tvb, pinfo, pcp_pmns_ids_tree, offset);
- }
- return offset;
+ proto_item *pcp_pmns_ids_item;
+ proto_tree *pcp_pmns_ids_tree;
+ guint32 num_ids;
+ guint32 i;
+
+ /* append the type of packet */
+ col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]",
+ val_to_str(PMNS_IDS, packettypenames, "Unknown Type:0x%02x"));
+
+ pcp_pmns_ids_item = proto_tree_add_item(tree, hf_pcp_pmns_ids, tvb, offset, -1, ENC_NA);
+ pcp_pmns_ids_tree = proto_item_add_subtree(pcp_pmns_ids_item, ett_pcp);
+
+ /* status */
+ proto_tree_add_item(pcp_pmns_ids_tree, hf_pcp_pmns_ids_status, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ /* numids */
+ proto_tree_add_item(pcp_pmns_ids_tree, hf_pcp_pmns_ids_numids, tvb, offset, 4, ENC_BIG_ENDIAN);
+ num_ids = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+
+ /* pmIDs */
+ for (i=0; i<num_ids; i++) {
+ /* pmID */
+ offset = dissect_pcp_partial_pmid(tvb, pinfo, pcp_pmns_ids_tree, offset);
+ }
+ return offset;
}
-/* PROFILE packet format
- guint32 ctxnum;
- guint32 g_state;
- guint32 numprof;
- guint32 pad;
- pmProfile profiles[numprof]
- |
- |> pmInDom indom;
- int state;
- int numinst;
- int pad;
+/* PROFILE packet format
+ guint32 ctxnum;
+ guint32 g_state;
+ guint32 numprof;
+ guint32 pad;
+ pmProfile profiles[numprof]
+ |
+ |> pmInDom indom;
+ int state;
+ int numinst;
+ int pad;
*/
static int dissect_pcp_message_profile(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
- proto_item *pcp_profile_item = NULL;
- proto_tree *pcp_profile_tree = NULL;
- proto_item *pcp_profile_profile_item = NULL;
- proto_tree *pcp_profile_profile_tree = NULL;
- guint32 num_prof;
- guint32 i;
-
- /* Append the type of packet */
- col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]", val_to_str(PROFILE, packettypenames, "Unknown Type:0x%02x"));
-
- pcp_profile_item = proto_tree_add_item(tree, hf_pcp_profile, tvb, offset, -1, ENC_NA);
- pcp_profile_tree = proto_item_add_subtree(pcp_profile_item, ett_pcp);
-
- /* ctxnum */
- proto_tree_add_item(pcp_profile_tree, hf_pcp_ctxnum, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
-
- /* g_state */
- proto_tree_add_item(pcp_profile_tree, hf_pcp_profile_g_state, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
-
- /* numprof */
- proto_tree_add_item(pcp_profile_tree, hf_pcp_profile_numprof, tvb, offset, 4, ENC_BIG_ENDIAN);
- num_prof = tvb_get_ntohl(tvb, offset);
- offset += 4;
-
- /* pad */
- proto_tree_add_item(pcp_profile_tree, hf_pcp_pdu_padding, tvb, offset, 4, ENC_NA);
- offset += 4;
-
- /* Iterate through each profile */
- for (i=0; i<num_prof; i++) {
- /* subtree for each profile */
- pcp_profile_profile_item = proto_tree_add_item(pcp_profile_tree, hf_pcp_profile_profile, tvb, offset, 32, ENC_NA);
- pcp_profile_profile_tree = proto_item_add_subtree(pcp_profile_profile_item, ett_pcp);
-
- /* indom */
- proto_tree_add_item(pcp_profile_profile_tree, hf_pcp_instance_indom, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
-
- /* state - include/exclude */
- proto_tree_add_item(pcp_profile_profile_tree, hf_pcp_profile_profile_state, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
-
- /* numinst - number of instances to follow */
- proto_tree_add_item(pcp_profile_profile_tree, hf_pcp_profile_profile_numinst, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
-
- /* padding */
- proto_tree_add_item(pcp_profile_tree, hf_pcp_pdu_padding, tvb, offset, 4, ENC_NA);
- offset += 4;
- }
- return offset;
+ proto_item *pcp_profile_item;
+ proto_tree *pcp_profile_tree;
+ proto_item *pcp_profile_profile_item;
+ proto_tree *pcp_profile_profile_tree;
+ guint32 num_prof;
+ guint32 i;
+
+ /* append the type of packet */
+ col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]", val_to_str(PROFILE, packettypenames, "Unknown Type:0x%02x"));
+
+ pcp_profile_item = proto_tree_add_item(tree, hf_pcp_profile, tvb, offset, -1, ENC_NA);
+ pcp_profile_tree = proto_item_add_subtree(pcp_profile_item, ett_pcp);
+
+ /* ctxnum */
+ proto_tree_add_item(pcp_profile_tree, hf_pcp_ctxnum, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ /* g_state */
+ proto_tree_add_item(pcp_profile_tree, hf_pcp_profile_g_state, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ /* numprof */
+ proto_tree_add_item(pcp_profile_tree, hf_pcp_profile_numprof, tvb, offset, 4, ENC_BIG_ENDIAN);
+ num_prof = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+
+ /* pad */
+ proto_tree_add_item(pcp_profile_tree, hf_pcp_pdu_padding, tvb, offset, 4, ENC_NA);
+ offset += 4;
+
+ /* iterate through each profile */
+ for (i=0; i<num_prof; i++) {
+ /* subtree for each profile */
+ pcp_profile_profile_item = proto_tree_add_item(pcp_profile_tree, hf_pcp_profile_profile, tvb, offset, 32, ENC_NA);
+ pcp_profile_profile_tree = proto_item_add_subtree(pcp_profile_profile_item, ett_pcp);
+
+ /* indom */
+ proto_tree_add_item(pcp_profile_profile_tree, hf_pcp_instance_indom, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ /* state - include/exclude */
+ proto_tree_add_item(pcp_profile_profile_tree, hf_pcp_profile_profile_state, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ /* numinst - number of instances to follow */
+ proto_tree_add_item(pcp_profile_profile_tree, hf_pcp_profile_profile_numinst, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ /* padding */
+ proto_tree_add_item(pcp_profile_tree, hf_pcp_pdu_padding, tvb, offset, 4, ENC_NA);
+ offset += 4;
+ }
+ return offset;
}
-/* FETCH packet format
- guint32 cxtnum
- __pmTimeval when (unsigned int tv_sec, unsigned int tv_usec)
- guint32 numpmid
- pmID pmidlist[1-x] (unsigned int)
+/* FETCH packet format
+ guint32 cxtnum
+ __pmTimeval when (unsigned int tv_sec, unsigned int tv_usec)
+ guint32 numpmid
+ pmID pmidlist[1-x] (unsigned int)
*/
static int dissect_pcp_message_fetch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
- proto_item *pcp_fetch_item = NULL;
- proto_tree *pcp_fetch_tree = NULL;
- guint32 num_pmid;
- guint32 i;
-
- /* Append the type of packet */
- col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]", val_to_str(FETCH, packettypenames, "Unknown Type:0x%02x"));
-
- pcp_fetch_item = proto_tree_add_item(tree, hf_pcp_fetch, tvb, offset, -1, ENC_NA);
- pcp_fetch_tree = proto_item_add_subtree(pcp_fetch_item, ett_pcp);
-
- /* ctxnum */
- proto_tree_add_item(pcp_fetch_tree, hf_pcp_ctxnum, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
-
- /* when */
- offset = dissect_pcp_partial_when(tvb, pinfo, pcp_fetch_tree, offset);
-
- /* numpmid */
- proto_tree_add_item(pcp_fetch_tree, hf_pcp_fetch_numpmid, tvb, offset, 4, ENC_BIG_ENDIAN);
- num_pmid = tvb_get_ntohl(tvb, offset);
- offset += 4;
-
- /* pmIDs*/
- for (i=0; i<num_pmid; i++) {
- /* decode partial PMID message */
- offset = dissect_pcp_partial_pmid(tvb, pinfo, pcp_fetch_tree, offset);
- }
- return offset;
+ proto_item *pcp_fetch_item;
+ proto_tree *pcp_fetch_tree;
+ guint32 num_pmid;
+ guint32 i;
+
+ /* append the type of packet */
+ col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]",
+ val_to_str(FETCH, packettypenames, "Unknown Type:0x%02x"));
+
+ pcp_fetch_item = proto_tree_add_item(tree, hf_pcp_fetch, tvb, offset, -1, ENC_NA);
+ pcp_fetch_tree = proto_item_add_subtree(pcp_fetch_item, ett_pcp);
+
+ /* ctxnum */
+ proto_tree_add_item(pcp_fetch_tree, hf_pcp_ctxnum, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ /* when */
+ offset = dissect_pcp_partial_when(tvb, pinfo, pcp_fetch_tree, offset);
+
+ /* numpmid */
+ proto_tree_add_item(pcp_fetch_tree, hf_pcp_fetch_numpmid, tvb, offset, 4, ENC_BIG_ENDIAN);
+ num_pmid = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+
+ /* pmIDs*/
+ for (i=0; i<num_pmid; i++) {
+ /* decode partial PMID message */
+ offset = dissect_pcp_partial_pmid(tvb, pinfo, pcp_fetch_tree, offset);
+ }
+ return offset;
}
/* RESULT packet format
- __pmTimeval when (unsigned int tv_sec, unsigned int tv_usec)
- int numpmid
- _pmPDU data[1-n] (contains v_list types)
- |
- |> pmID pmid
- int numval
- int valfmt
- __pmValue_PDU vlist[1-n] (contains pmValue PDUs)
- |
- |> int inst
- int offset/value
- (if valfmt == PTR type)
- int8 type
- int24 length
- char value[length]
+ __pmTimeval when (unsigned int tv_sec, unsigned int tv_usec)
+ int numpmid
+ _pmPDU data[1-n] (contains v_list types)
+ |
+ |> pmID pmid
+ int numval
+ int valfmt
+ __pmValue_PDU vlist[1-n] (contains pmValue PDUs)
+ |
+ |> int inst
+ int offset/value
+ (if valfmt == PTR type)
+ int8 type
+ int24 length
+ char value[length]
*/
static int dissect_pcp_message_result(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
- proto_item *pcp_results_item = NULL;
- proto_tree *pcp_results_tree = NULL;
- proto_item *pcp_result_item = NULL;
- proto_tree *pcp_result_tree = NULL;
- proto_item *pcp_result_instance_item = NULL;
- proto_tree *pcp_result_instance_tree = NULL;
- guint32 num_pmid;
- guint32 num_val;
- guint32 offset_start;
- guint32 valfmt_type;
- guint32 value_type;
- guint32 pmvalueblock_offset;
- guint32 pmvalueblock_value_length;
- guint32 i;
- guint32 j;
-
- /* Append the type of packet */
- col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]", val_to_str(RESULT, packettypenames, "Unknown Type:0x%02x"));
-
- pcp_results_item = proto_tree_add_item(tree, hf_pcp_results, tvb, offset, -1, ENC_NA);
- pcp_results_tree = proto_item_add_subtree(pcp_results_item, ett_pcp);
-
- /* when */
- offset = dissect_pcp_partial_when(tvb, pinfo, pcp_results_tree, offset);
-
- /* numpmid */
- proto_tree_add_item(pcp_results_tree, hf_pcp_results_numpmid, tvb, offset, 4, ENC_BIG_ENDIAN);
- num_pmid = tvb_get_ntohl(tvb, offset);
- offset += 4;
-
- /* result */
- for (i=0; i<num_pmid; i++) {
- /* Work out how long each result should be - set starting offset */
- offset_start = offset;
-
- pcp_result_item = proto_tree_add_item(pcp_results_tree, hf_pcp_result, tvb, offset, -1, ENC_NA);
- pcp_result_tree = proto_item_add_subtree(pcp_result_item, ett_pcp);
-
- /* pmID */
- offset = dissect_pcp_partial_pmid(tvb, pinfo, pcp_result_tree, offset);
-
- /* numval */
- proto_tree_add_item(pcp_result_tree, hf_pcp_result_numval, tvb, offset, 4, ENC_BIG_ENDIAN);
- num_val = tvb_get_ntohl(tvb, offset);
- offset += 4;
-
- /* if there are no numvals, then the valfmt isn't sent */
- if (num_val > 0) {
-
- /* valfmt */
- proto_tree_add_item(pcp_result_tree, hf_pcp_result_valfmt, tvb, offset, 4, ENC_BIG_ENDIAN);
- valfmt_type = tvb_get_ntohl(tvb, offset);
- offset += 4;
-
- /* instance */
- for (j=0; j<num_val; j++) {
- /* give the subtree name length of inst (int) + offset/va (int) */
- pcp_result_instance_item = proto_tree_add_item(pcp_result_tree, hf_pcp_instance, tvb, offset, 8, ENC_NA);
- pcp_result_instance_tree = proto_item_add_subtree(pcp_result_instance_item, ett_pcp);
-
- /* inst */
- proto_tree_add_item(pcp_result_instance_tree, hf_pcp_pmid_inst, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
-
- /* valoffset/value: depending on the format, the next 32 bits is the value _OR_ the offset to where
- the value is */
- if (valfmt_type == PM_VAL_INSITU) {
- proto_tree_add_item(pcp_result_instance_tree, hf_pcp_instance_value_insitu, tvb, offset, 4, ENC_BIG_ENDIAN);
- } else {
- /* offset in the packet to find pmValueBlock */
- proto_tree_add_item(pcp_result_instance_tree, hf_pcp_instance_valoffset, tvb, offset, 4, ENC_BIG_ENDIAN);
- /* get the offset (not the offset of the count we are at) but where we should look */
- pmvalueblock_offset = tvb_get_ntohl(tvb, offset);
- pmvalueblock_offset = pmvalueblock_offset * 4; /* offset values are in 32bit units */
-
- /* type */
- value_type = tvb_get_guint8(tvb, pmvalueblock_offset);
- proto_tree_add_item(pcp_result_instance_tree, hf_pcp_pmid_type, tvb, pmvalueblock_offset, 1, ENC_BIG_ENDIAN);
- pmvalueblock_offset += 1;
-
- /* length */
- pmvalueblock_value_length = tvb_get_ntoh24(tvb, pmvalueblock_offset);
- /* Can't add a tree item the ususal way as it is outside of the tree */
- proto_tree_add_item(pcp_result_instance_tree, hf_pcp_instance_vallength, tvb, pmvalueblock_offset, 3, ENC_BIG_ENDIAN);
- pmvalueblock_offset += 3;
-
- /* value - note we go up to the pmvalueblock_value_length - 4, as this value includes the previous 4 bytes */
- switch (value_type) {
- case PM_TYPE_32:
- proto_tree_add_item(pcp_result_instance_tree, hf_pcp_instance_value_int, tvb,
- pmvalueblock_offset, pmvalueblock_value_length-4, ENC_BIG_ENDIAN);
- break;
- case PM_TYPE_U32:
- proto_tree_add_item(pcp_result_instance_tree, hf_pcp_instance_value_uint, tvb,
- pmvalueblock_offset, pmvalueblock_value_length-4, ENC_BIG_ENDIAN);
- break;
- case PM_TYPE_64:
- proto_tree_add_item(pcp_result_instance_tree, hf_pcp_instance_value_int64, tvb,
- pmvalueblock_offset, pmvalueblock_value_length-4, ENC_BIG_ENDIAN);
- break;
- case PM_TYPE_U64:
- proto_tree_add_item(pcp_result_instance_tree, hf_pcp_instance_value_uint64, tvb,
- pmvalueblock_offset, pmvalueblock_value_length-4, ENC_BIG_ENDIAN);
- break;
- case PM_TYPE_FLOAT:
- proto_tree_add_item(pcp_result_instance_tree, hf_pcp_instance_value_float, tvb,
- pmvalueblock_offset, pmvalueblock_value_length-4, ENC_BIG_ENDIAN);
- break;
- case PM_TYPE_DOUBLE:
- proto_tree_add_item(pcp_result_instance_tree, hf_pcp_instance_value_double, tvb,
- pmvalueblock_offset, pmvalueblock_value_length-4, ENC_BIG_ENDIAN);
- break;
- case PM_TYPE_STRING:
- proto_tree_add_item(pcp_result_instance_tree, hf_pcp_instance_value_ptr, tvb,
- pmvalueblock_offset, pmvalueblock_value_length-4, ENC_ASCII|ENC_NA);
- break;
- case PM_TYPE_AGGREGATE:
- proto_tree_add_item(pcp_result_instance_tree, hf_pcp_instance_value_aggr, tvb,
- pmvalueblock_offset, pmvalueblock_value_length-4, ENC_NA);
- case PM_TYPE_AGGREGATE_STATIC:
- proto_tree_add_item(pcp_result_instance_tree, hf_pcp_instance_value_aggr, tvb,
- pmvalueblock_offset, pmvalueblock_value_length-4, ENC_NA);
- break;
- case PM_TYPE_EVENT:
- expert_add_info_format(pinfo, pcp_result_instance_tree, PI_UNDECODED, PI_WARN, "PM_TYPE_EVENT: Unimplemented Value Type");
- break;
- case PM_TYPE_NOSUPPORT:
- expert_add_info_format(pinfo, pcp_result_instance_tree, PI_UNDECODED, PI_WARN, "PM_TYPE_NOSUPPORT: Unsupported Value Type");
+ proto_item *pcp_results_item;
+ proto_tree *pcp_results_tree;
+ proto_item *pcp_result_item;
+ proto_tree *pcp_result_tree;
+ proto_item *pcp_result_instance_item;
+ proto_tree *pcp_result_instance_tree;
+ guint32 num_pmid;
+ guint32 num_val;
+ guint32 offset_start;
+ guint32 valfmt_type;
+ guint32 value_type;
+ guint32 pmvalueblock_offset;
+ guint32 pmvalueblock_value_length;
+ guint32 i;
+ guint32 j;
+
+ /* append the type of packet */
+ col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]", val_to_str(RESULT, packettypenames, "Unknown Type:0x%02x"));
+
+ pcp_results_item = proto_tree_add_item(tree, hf_pcp_results, tvb, offset, -1, ENC_NA);
+ pcp_results_tree = proto_item_add_subtree(pcp_results_item, ett_pcp);
+
+ /* when */
+ offset = dissect_pcp_partial_when(tvb, pinfo, pcp_results_tree, offset);
+
+ /* numpmid */
+ proto_tree_add_item(pcp_results_tree, hf_pcp_results_numpmid, tvb, offset, 4, ENC_BIG_ENDIAN);
+ num_pmid = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+
+ /* result */
+ for (i=0; i<num_pmid; i++) {
+ /* work out how long each result should be - set starting offset */
+ offset_start = offset;
+
+ pcp_result_item = proto_tree_add_item(pcp_results_tree, hf_pcp_result, tvb, offset, -1, ENC_NA);
+ pcp_result_tree = proto_item_add_subtree(pcp_result_item, ett_pcp);
+
+ /* pmID */
+ offset = dissect_pcp_partial_pmid(tvb, pinfo, pcp_result_tree, offset);
+
+ /* numval */
+ proto_tree_add_item(pcp_result_tree, hf_pcp_result_numval, tvb, offset, 4, ENC_BIG_ENDIAN);
+ num_val = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+
+ /* if there are no numvals, then the valfmt isn't sent */
+ if (num_val > 0) {
+
+ /* valfmt */
+ proto_tree_add_item(pcp_result_tree, hf_pcp_result_valfmt, tvb, offset, 4, ENC_BIG_ENDIAN);
+ valfmt_type = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+
+ /* instance */
+ for (j=0; j<num_val; j++) {
+ /* give the subtree name length of inst (int) + offset/va (int) */
+ pcp_result_instance_item = proto_tree_add_item(pcp_result_tree, hf_pcp_instance,
+ tvb, offset, 8, ENC_NA);
+ pcp_result_instance_tree = proto_item_add_subtree(pcp_result_instance_item, ett_pcp);
+
+ /* inst */
+ proto_tree_add_item(pcp_result_instance_tree, hf_pcp_pmid_inst, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ /* valoffset/value: depending on the format, the next 32 bits is the value _OR_ the offset to where
+ the value is */
+ if (valfmt_type == PM_VAL_INSITU) {
+ proto_tree_add_item(pcp_result_instance_tree, hf_pcp_instance_value_insitu,
+ tvb, offset, 4, ENC_BIG_ENDIAN);
+ } else {
+ /* offset in the packet to find pmValueBlock */
+ proto_tree_add_item(pcp_result_instance_tree, hf_pcp_instance_valoffset,
+ tvb, offset, 4, ENC_BIG_ENDIAN);
+ /* get the offset (not the offset of the count we are at) but where we should look */
+ pmvalueblock_offset = tvb_get_ntohl(tvb, offset);
+ pmvalueblock_offset = pmvalueblock_offset * 4; /* offset values are in 32bit units */
+
+ /* type */
+ value_type = tvb_get_guint8(tvb, pmvalueblock_offset);
+ proto_tree_add_item(pcp_result_instance_tree, hf_pcp_pmid_type,
+ tvb, pmvalueblock_offset, 1, ENC_BIG_ENDIAN);
+ pmvalueblock_offset += 1;
+
+ /* length */
+ pmvalueblock_value_length = tvb_get_ntoh24(tvb, pmvalueblock_offset);
+ /* can't add a tree item the ususal way as it is outside of the tree */
+ proto_tree_add_item(pcp_result_instance_tree, hf_pcp_instance_vallength,
+ tvb, pmvalueblock_offset, 3, ENC_BIG_ENDIAN);
+ pmvalueblock_offset += 3;
+
+ /* value - note we go up to the pmvalueblock_value_length - 4,
+ as this value includes the previous 4 bytes */
+ switch (value_type) {
+ case PM_TYPE_32:
+ proto_tree_add_item(pcp_result_instance_tree, hf_pcp_instance_value_int, tvb,
+ pmvalueblock_offset, pmvalueblock_value_length-4, ENC_BIG_ENDIAN);
+ break;
+ case PM_TYPE_U32:
+ proto_tree_add_item(pcp_result_instance_tree, hf_pcp_instance_value_uint, tvb,
+ pmvalueblock_offset, pmvalueblock_value_length-4, ENC_BIG_ENDIAN);
+ break;
+ case PM_TYPE_64:
+ proto_tree_add_item(pcp_result_instance_tree, hf_pcp_instance_value_int64, tvb,
+ pmvalueblock_offset, pmvalueblock_value_length-4, ENC_BIG_ENDIAN);
+ break;
+ case PM_TYPE_U64:
+ proto_tree_add_item(pcp_result_instance_tree, hf_pcp_instance_value_uint64, tvb,
+ pmvalueblock_offset, pmvalueblock_value_length-4, ENC_BIG_ENDIAN);
+ break;
+ case PM_TYPE_FLOAT:
+ proto_tree_add_item(pcp_result_instance_tree, hf_pcp_instance_value_float, tvb,
+ pmvalueblock_offset, pmvalueblock_value_length-4, ENC_BIG_ENDIAN);
+ break;
+ case PM_TYPE_DOUBLE:
+ proto_tree_add_item(pcp_result_instance_tree, hf_pcp_instance_value_double, tvb,
+ pmvalueblock_offset, pmvalueblock_value_length-4, ENC_BIG_ENDIAN);
+ break;
+ case PM_TYPE_STRING:
+ proto_tree_add_item(pcp_result_instance_tree, hf_pcp_instance_value_ptr, tvb,
+ pmvalueblock_offset, pmvalueblock_value_length-4, ENC_ASCII|ENC_NA);
+ break;
+ case PM_TYPE_AGGREGATE:
+ case PM_TYPE_AGGREGATE_STATIC:
+ proto_tree_add_item(pcp_result_instance_tree, hf_pcp_instance_value_aggr, tvb,
+ pmvalueblock_offset, pmvalueblock_value_length-4, ENC_NA);
+ break;
+ case PM_TYPE_EVENT:
+ expert_add_info_format(pinfo, pcp_result_instance_tree, PI_UNDECODED, PI_WARN,
+ "PM_TYPE_EVENT: Unimplemented Value Type");
+ break;
+ case PM_TYPE_NOSUPPORT:
+ expert_add_info_format(pinfo, pcp_result_instance_tree, PI_UNDECODED, PI_WARN,
+ "PM_TYPE_NOSUPPORT: Unsupported Value Type");
+ break;
+ case PM_TYPE_UNKNOWN:
+ expert_add_info_format(pinfo, pcp_result_instance_tree, PI_UNDECODED,
+ PI_WARN, "PM_TYPE_UNKNOWN: Unknown Value Type");
+ break;
+ default:
+ expert_add_info_format(pinfo, pcp_result_instance_tree, PI_UNDECODED, PI_WARN,
+ "Unimplemented Value Type");
break;
- case PM_TYPE_UNKNOWN:
- expert_add_info_format(pinfo, pcp_result_instance_tree, PI_UNDECODED, PI_WARN, "PM_TYPE_UNKNOWN: Unknown Value Type");
- break;
- default:
- expert_add_info_format(pinfo, pcp_result_instance_tree, PI_UNDECODED, PI_WARN, "Unimplemented Value Type");
- break;
- }
- }
- /* bump the offset after the instance value _or_ the offset into the packet (pcp.instance.valoffset) , each being 4 bytes */
- offset += 4;
- }
-
- }
- /* we now know how long the field is */
- proto_item_set_len(pcp_result_tree, offset-offset_start);
-
- }
- return offset;
+ }
+ }
+ /* bump the offset after the instance value _or_ the offset into
+ the packet (pcp.instance.valoffset) , each being 4 bytes */
+ offset += 4;
+ }
+
+ }
+ /* we now know how long the field is */
+ proto_item_set_len(pcp_result_tree, offset-offset_start);
+
+ }
+ return offset;
}
-/* DESC_REQ pcaket format
- pmID pmid (32bit int)
+/* DESC_REQ pcaket format
+ pmID pmid (32bit int)
*/
static int dissect_pcp_message_desc_req(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
- proto_item *pcp_desc_req_item = NULL;
- proto_tree *pcp_desc_req_tree = NULL;
- proto_item *pcp_desc_req_pmid_item = NULL;
- proto_tree *pcp_desc_req_pmid_tree = NULL;
- guint32 bits_offset;
-
- /* Append the type of packet */
- col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]", val_to_str(DESC_REQ, packettypenames, "Unknown Type:0x%02x"));
-
- bits_offset = offset*8;
- /* subtree for packet type */
- pcp_desc_req_item = proto_tree_add_item(tree, hf_pcp_desc_req, tvb, offset, -1, ENC_NA);
- pcp_desc_req_tree = proto_item_add_subtree(pcp_desc_req_item, ett_pcp);
-
- /* subtree for pmid */
- pcp_desc_req_pmid_item = proto_tree_add_item(pcp_desc_req_tree, hf_pcp_pmid, tvb, offset, 4, ENC_BIG_ENDIAN);
- pcp_desc_req_pmid_tree = proto_item_add_subtree(pcp_desc_req_pmid_item, ett_pcp);
-
- /* flag - 1 bit */
- proto_tree_add_bits_item(pcp_desc_req_pmid_tree, hf_pcp_pmid_flag, tvb, bits_offset, 1, ENC_BIG_ENDIAN);
- bits_offset += 1;
- /* domain - 9 bits */
- proto_tree_add_bits_item(pcp_desc_req_pmid_tree, hf_pcp_pmid_domain, tvb, bits_offset, 9, ENC_BIG_ENDIAN);
- bits_offset += 9;
- /* cluster - 12 bits */
- proto_tree_add_bits_item(pcp_desc_req_pmid_tree, hf_pcp_pmid_cluster, tvb, bits_offset, 12, ENC_BIG_ENDIAN);
- bits_offset += 12;
- /* item - 10 bits */
- proto_tree_add_bits_item(pcp_desc_req_pmid_tree, hf_pcp_pmid_item, tvb, bits_offset, 10, ENC_BIG_ENDIAN);
- /*bits_offset += 10;*/
- offset += 4; /* the bytes offset should now be the same as the bits offset, not that we need this anymore */
- return offset;
+ proto_item *pcp_desc_req_item;
+ proto_tree *pcp_desc_req_tree;
+ proto_item *pcp_desc_req_pmid_item;
+ proto_tree *pcp_desc_req_pmid_tree;
+ guint32 bits_offset;
+
+ /* append the type of packet */
+ col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]", val_to_str(DESC_REQ, packettypenames, "Unknown Type:0x%02x"));
+
+ bits_offset = offset*8;
+ /* subtree for packet type */
+ pcp_desc_req_item = proto_tree_add_item(tree, hf_pcp_desc_req, tvb, offset, -1, ENC_NA);
+ pcp_desc_req_tree = proto_item_add_subtree(pcp_desc_req_item, ett_pcp);
+
+ /* subtree for pmid */
+ pcp_desc_req_pmid_item = proto_tree_add_item(pcp_desc_req_tree, hf_pcp_pmid, tvb, offset, 4, ENC_BIG_ENDIAN);
+ pcp_desc_req_pmid_tree = proto_item_add_subtree(pcp_desc_req_pmid_item, ett_pcp);
+
+ /* flag - 1 bit */
+ proto_tree_add_bits_item(pcp_desc_req_pmid_tree, hf_pcp_pmid_flag, tvb, bits_offset, 1, ENC_BIG_ENDIAN);
+ bits_offset += 1;
+ /* domain - 9 bits */
+ proto_tree_add_bits_item(pcp_desc_req_pmid_tree, hf_pcp_pmid_domain, tvb, bits_offset, 9, ENC_BIG_ENDIAN);
+ bits_offset += 9;
+ /* cluster - 12 bits */
+ proto_tree_add_bits_item(pcp_desc_req_pmid_tree, hf_pcp_pmid_cluster, tvb, bits_offset, 12, ENC_BIG_ENDIAN);
+ bits_offset += 12;
+ /* item - 10 bits */
+ proto_tree_add_bits_item(pcp_desc_req_pmid_tree, hf_pcp_pmid_item, tvb, bits_offset, 10, ENC_BIG_ENDIAN);
+ /*bits_offset += 10;*/
+ offset += 4; /* the bytes offset should now be the same as the bits offset, not that we need this anymore */
+ return offset;
}
/* DESC packet format
- pmID pmid
- int type (base data type)
- pmInDom indom
- int sem (semantics of the value: instant? counter? etc..)
- pmUnits units
- |
- v
- signed int dimSpace : 4
- signed int dimTime : 4
- signed int dimCount : 4
- unsigned int scaleSpace : 4
- unsigned int scaleTime : 4
- signed int scaleCount : 4
- unsigned int pad : 8
+ pmID pmid
+ int type (base data type)
+ pmInDom indom
+ int sem (semantics of the value: instant? counter? etc..)
+ pmUnits units
+ |
+ v
+ signed int dimSpace : 4
+ signed int dimTime : 4
+ signed int dimCount : 4
+ unsigned int scaleSpace : 4
+ unsigned int scaleTime : 4
+ signed int scaleCount : 4
+ unsigned int pad : 8
*/
static int dissect_pcp_message_desc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
- proto_item *pcp_desc_item = NULL;
- proto_tree *pcp_desc_tree = NULL;
- proto_item *pcp_desc_units_item = NULL;
- proto_tree *pcp_desc_units_tree = NULL;
- guint32 bits_offset;
-
- /* Append the type of packet */
- col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]", val_to_str(DESC, packettypenames, "Unknown Type:0x%02x"));
-
- /* root desc tree */
- pcp_desc_item = proto_tree_add_item(tree, hf_pcp_desc, tvb, offset, 4, ENC_NA);
- pcp_desc_tree = proto_item_add_subtree(pcp_desc_item, ett_pcp);
-
- /* pmID */
- offset = dissect_pcp_partial_pmid(tvb, pinfo, pcp_desc_tree, offset);
-
- /* type */
- proto_tree_add_item(pcp_desc_tree, hf_pcp_pmid_type, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
-
- /* indom */
- proto_tree_add_item(pcp_desc_tree, hf_pcp_instance_indom, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
-
- /* sem */
- proto_tree_add_item(pcp_desc_tree, hf_pcp_pmid_sem, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
-
- /* pmUnits */
- bits_offset = offset*8; /* create the bits offset */
- pcp_desc_units_item = proto_tree_add_item(pcp_desc_tree, hf_pcp_units, tvb, offset, -1, ENC_NA);
- pcp_desc_units_tree = proto_item_add_subtree(pcp_desc_units_item, ett_pcp);
-
- /* dimspace */
- proto_tree_add_bits_item(pcp_desc_units_tree, hf_pcp_units_dimspace, tvb, bits_offset, 4, ENC_BIG_ENDIAN);
- bits_offset += 4;
- /* dimtime */
- proto_tree_add_bits_item(pcp_desc_units_tree, hf_pcp_units_dimtime, tvb, bits_offset, 4, ENC_BIG_ENDIAN);
- bits_offset += 4;
- /* dimcount */
- proto_tree_add_bits_item(pcp_desc_units_tree, hf_pcp_units_dimcount, tvb, bits_offset, 4, ENC_BIG_ENDIAN);
- bits_offset += 4;
- /* scalespace */
- proto_tree_add_bits_item(pcp_desc_units_tree, hf_pcp_units_scalespace, tvb, bits_offset, 4, ENC_BIG_ENDIAN);
- bits_offset += 4;
- /* scaletime */
- proto_tree_add_bits_item(pcp_desc_units_tree, hf_pcp_units_scaletime, tvb, bits_offset, 4, ENC_BIG_ENDIAN);
- bits_offset += 4;
- /* scalecount */
- proto_tree_add_bits_item(pcp_desc_units_tree, hf_pcp_units_scalecount, tvb, bits_offset, 4, ENC_BIG_ENDIAN);
- /*bits_offset += 4;*/
- /* padding */
- offset += 3; /* total offset of pmunits before */
- proto_tree_add_item(pcp_desc_units_tree, hf_pcp_pdu_padding, tvb, offset, 1, ENC_NA);
- offset += 1;
- /*bits_offset += 8;*/
- return offset;
+ proto_item *pcp_desc_item;
+ proto_tree *pcp_desc_tree;
+ proto_item *pcp_desc_units_item;
+ proto_tree *pcp_desc_units_tree;
+ guint32 bits_offset;
+
+ /* append the type of packet */
+ col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]", val_to_str(DESC, packettypenames, "Unknown Type:0x%02x"));
+
+ /* root desc tree */
+ pcp_desc_item = proto_tree_add_item(tree, hf_pcp_desc, tvb, offset, 4, ENC_NA);
+ pcp_desc_tree = proto_item_add_subtree(pcp_desc_item, ett_pcp);
+
+ /* pmID */
+ offset = dissect_pcp_partial_pmid(tvb, pinfo, pcp_desc_tree, offset);
+
+ /* type */
+ proto_tree_add_item(pcp_desc_tree, hf_pcp_pmid_type, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ /* indom */
+ proto_tree_add_item(pcp_desc_tree, hf_pcp_instance_indom, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ /* sem */
+ proto_tree_add_item(pcp_desc_tree, hf_pcp_pmid_sem, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ /* pmUnits */
+ bits_offset = offset*8; /* create the bits offset */
+ pcp_desc_units_item = proto_tree_add_item(pcp_desc_tree, hf_pcp_units, tvb, offset, -1, ENC_NA);
+ pcp_desc_units_tree = proto_item_add_subtree(pcp_desc_units_item, ett_pcp);
+
+ /* dimspace */
+ proto_tree_add_bits_item(pcp_desc_units_tree, hf_pcp_units_dimspace, tvb, bits_offset, 4, ENC_BIG_ENDIAN);
+ bits_offset += 4;
+ /* dimtime */
+ proto_tree_add_bits_item(pcp_desc_units_tree, hf_pcp_units_dimtime, tvb, bits_offset, 4, ENC_BIG_ENDIAN);
+ bits_offset += 4;
+ /* dimcount */
+ proto_tree_add_bits_item(pcp_desc_units_tree, hf_pcp_units_dimcount, tvb, bits_offset, 4, ENC_BIG_ENDIAN);
+ bits_offset += 4;
+ /* scalespace */
+ proto_tree_add_bits_item(pcp_desc_units_tree, hf_pcp_units_scalespace, tvb, bits_offset, 4, ENC_BIG_ENDIAN);
+ bits_offset += 4;
+ /* scaletime */
+ proto_tree_add_bits_item(pcp_desc_units_tree, hf_pcp_units_scaletime, tvb, bits_offset, 4, ENC_BIG_ENDIAN);
+ bits_offset += 4;
+ /* scalecount */
+ proto_tree_add_bits_item(pcp_desc_units_tree, hf_pcp_units_scalecount, tvb, bits_offset, 4, ENC_BIG_ENDIAN);
+ /*bits_offset += 4;*/
+ /* padding */
+ offset += 3; /* total offset of pmunits before */
+ proto_tree_add_item(pcp_desc_units_tree, hf_pcp_pdu_padding, tvb, offset, 1, ENC_NA);
+ offset += 1;
+ /*bits_offset += 8;*/
+ return offset;
}
-/* INSTANCE_REQ packet format
- pmInDom indom
- __pmTimeval when
- int inst
- int namelen
- char name
+/* INSTANCE_REQ packet format
+ pmInDom indom
+ __pmTimeval when
+ int inst
+ int namelen
+ char name
*/
static int dissect_pcp_message_instance_req(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
- proto_item *pcp_instance_req_item = NULL;
- proto_tree *pcp_instance_req_tree = NULL;
- guint32 name_len;
-
- /* Append the type of packet */
- col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]", val_to_str(INSTANCE_REQ, packettypenames, "Unknown Type:0x%02x"));
-
- pcp_instance_req_item = proto_tree_add_item(tree, hf_pcp_instance_req, tvb, offset, -1, ENC_NA);
- pcp_instance_req_tree = proto_item_add_subtree(pcp_instance_req_item, ett_pcp);
-
- /* indom */
- proto_tree_add_item(pcp_instance_req_tree, hf_pcp_instance_indom, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
-
- /* when */
- offset = dissect_pcp_partial_when(tvb, pinfo, pcp_instance_req_tree, offset);
-
- /* inst */
- proto_tree_add_item(pcp_instance_req_tree, hf_pcp_pmid_inst, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
-
- /* namelen */
- proto_tree_add_item(pcp_instance_req_tree, hf_pcp_instance_namelen, tvb, offset, 4, ENC_BIG_ENDIAN);
- name_len = tvb_get_ntohl(tvb, offset);
- offset += 4;
-
- /* name */
- if (name_len > 0) {
- proto_tree_add_item(pcp_instance_req_tree, hf_pcp_instance_name, tvb, offset, name_len, ENC_ASCII|ENC_NA);
- offset += name_len;
- }
- return offset;
+ proto_item *pcp_instance_req_item;
+ proto_tree *pcp_instance_req_tree;
+ guint32 name_len;
+
+ /* append the type of packet */
+ col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]", val_to_str(INSTANCE_REQ, packettypenames, "Unknown Type:0x%02x"));
+
+ pcp_instance_req_item = proto_tree_add_item(tree, hf_pcp_instance_req, tvb, offset, -1, ENC_NA);
+ pcp_instance_req_tree = proto_item_add_subtree(pcp_instance_req_item, ett_pcp);
+
+ /* indom */
+ proto_tree_add_item(pcp_instance_req_tree, hf_pcp_instance_indom, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ /* when */
+ offset = dissect_pcp_partial_when(tvb, pinfo, pcp_instance_req_tree, offset);
+
+ /* inst */
+ proto_tree_add_item(pcp_instance_req_tree, hf_pcp_pmid_inst, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ /* namelen */
+ proto_tree_add_item(pcp_instance_req_tree, hf_pcp_instance_namelen, tvb, offset, 4, ENC_BIG_ENDIAN);
+ name_len = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+
+ /* name */
+ if (name_len > 0) {
+ proto_tree_add_item(pcp_instance_req_tree, hf_pcp_instance_name, tvb, offset, name_len, ENC_ASCII|ENC_NA);
+ offset += name_len;
+ }
+ return offset;
}
-/* TEXT_REQ packet format
- int ident
- int type
+/* TEXT_REQ packet format
+ int ident
+ int type
*/
static int dissect_pcp_message_text_req(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
- proto_item *pcp_text_req_item = NULL;
- proto_tree *pcp_text_req_tree = NULL;
- proto_item *pcp_text_req_type_item = NULL;
- proto_tree *pcp_text_req_type_tree = NULL;
- guint32 bits_offset;
- guint32 type;
-
- /* Append the type of packet */
- col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]", val_to_str(TEXT_REQ, packettypenames, "Unknown Type:0x%02x"));
-
- pcp_text_req_item = proto_tree_add_item(tree, hf_pcp_text_req, tvb, offset, -1, ENC_NA);
- pcp_text_req_tree = proto_item_add_subtree(pcp_text_req_item, ett_pcp);
-
- /* peek at type to decode ident correctly */
- type = tvb_get_ntohl(tvb, offset + 4);
-
- /* ident */
- if (type & PM_TEXT_PMID) {
- offset = dissect_pcp_partial_pmid(tvb, pinfo, pcp_text_req_tree, offset);
- } else if (type & PM_TEXT_INDOM) {
- proto_tree_add_item(pcp_text_req_tree, hf_pcp_instance_indom, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
- }
-
- /* type */
- pcp_text_req_type_item = proto_tree_add_item(pcp_text_req_tree, hf_pcp_text_type, tvb, offset, 4, ENC_NA);
- pcp_text_req_type_tree = proto_item_add_subtree(pcp_text_req_type_item, ett_pcp);
- bits_offset = offset * 8 + 28;
- proto_tree_add_bits_item(pcp_text_req_type_tree, hf_pcp_text_type_ident, tvb, bits_offset, 2, ENC_BIG_ENDIAN);
- bits_offset += 2;
- proto_tree_add_bits_item(pcp_text_req_type_tree, hf_pcp_text_type_format, tvb, bits_offset, 2, ENC_BIG_ENDIAN);
-
- offset += 4;
- return offset;
+ proto_item *pcp_text_req_item;
+ proto_tree *pcp_text_req_tree;
+ proto_item *pcp_text_req_type_item;
+ proto_tree *pcp_text_req_type_tree;
+ guint32 bits_offset;
+ guint32 type;
+
+ /* append the type of packet */
+ col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]", val_to_str(TEXT_REQ, packettypenames, "Unknown Type:0x%02x"));
+
+ pcp_text_req_item = proto_tree_add_item(tree, hf_pcp_text_req, tvb, offset, -1, ENC_NA);
+ pcp_text_req_tree = proto_item_add_subtree(pcp_text_req_item, ett_pcp);
+
+ /* peek at type to decode ident correctly */
+ type = tvb_get_ntohl(tvb, offset + 4);
+
+ /* ident */
+ if (type & PM_TEXT_PMID) {
+ offset = dissect_pcp_partial_pmid(tvb, pinfo, pcp_text_req_tree, offset);
+ } else if (type & PM_TEXT_INDOM) {
+ proto_tree_add_item(pcp_text_req_tree, hf_pcp_instance_indom, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ }
+
+ /* type */
+ pcp_text_req_type_item = proto_tree_add_item(pcp_text_req_tree, hf_pcp_text_type, tvb, offset, 4, ENC_NA);
+ pcp_text_req_type_tree = proto_item_add_subtree(pcp_text_req_type_item, ett_pcp);
+ bits_offset = offset * 8 + 28;
+ proto_tree_add_bits_item(pcp_text_req_type_tree, hf_pcp_text_type_ident, tvb, bits_offset, 2, ENC_BIG_ENDIAN);
+ bits_offset += 2;
+ proto_tree_add_bits_item(pcp_text_req_type_tree, hf_pcp_text_type_format, tvb, bits_offset, 2, ENC_BIG_ENDIAN);
+
+ offset += 4;
+ return offset;
}
-/* TEXT packet format
- int ident
- int buflen
- char buffer
+/* TEXT packet format
+ int ident
+ int buflen
+ char buffer
*/
static int dissect_pcp_message_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
- proto_item *pcp_text_item = NULL;
- proto_tree *pcp_text_tree = NULL;
- guint32 buflen;
+ proto_item *pcp_text_item;
+ proto_tree *pcp_text_tree;
+ guint32 buflen;
- /* Append the type of packet */
- col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]", val_to_str(TEXT, packettypenames, "Unknown Type:0x%02x"));
+ /* append the type of packet */
+ col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]", val_to_str(TEXT, packettypenames, "Unknown Type:0x%02x"));
- pcp_text_item = proto_tree_add_item(tree, hf_pcp_text, tvb, offset, -1, ENC_NA);
- pcp_text_tree = proto_item_add_subtree(pcp_text_item, ett_pcp);
+ pcp_text_item = proto_tree_add_item(tree, hf_pcp_text, tvb, offset, -1, ENC_NA);
+ pcp_text_tree = proto_item_add_subtree(pcp_text_item, ett_pcp);
- /* ident */
- proto_tree_add_item(pcp_text_tree, hf_pcp_text_ident, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
+ /* ident */
+ proto_tree_add_item(pcp_text_tree, hf_pcp_text_ident, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
- /* buflen */
- buflen = tvb_get_ntohl(tvb, offset);
- proto_tree_add_item(pcp_text_tree, hf_pcp_text_buflen, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
+ /* buflen */
+ buflen = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_item(pcp_text_tree, hf_pcp_text_buflen, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
- /* buffer */
- proto_tree_add_item(pcp_text_tree, hf_pcp_text_buffer, tvb, offset, buflen, ENC_ASCII|ENC_NA);
- offset += buflen;
+ /* buffer */
+ proto_tree_add_item(pcp_text_tree, hf_pcp_text_buffer, tvb, offset, buflen, ENC_ASCII|ENC_NA);
+ offset += buflen;
- return offset;
+ return offset;
}
/* INSTANCE packet type
- pmInDom indom
- int numinst
+ pmInDom indom
+ int numinst
instlist_t instlist[numinst]
- |
- |> int inst
- int namelen
- char name
+ |
+ |> int inst
+ int namelen
+ char name
*/
static int dissect_pcp_message_instance(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
- proto_item *pcp_instances_item = NULL;
- proto_tree *pcp_instances_tree = NULL;
- proto_item *pcp_instance_item = NULL;
- proto_tree *pcp_instance_tree = NULL;
- guint32 num_inst;
- guint32 i;
- guint32 name_len;
- guint32 padding;
-
- /* Append the type of packet */
- col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]", val_to_str(INSTANCE, packettypenames, "Unknown Type:0x%02x"));
-
- pcp_instances_item = proto_tree_add_item(tree, hf_pcp_instances, tvb, offset, -1, ENC_NA);
- pcp_instances_tree = proto_item_add_subtree(pcp_instances_item, ett_pcp);
-
- /* indom */
- proto_tree_add_item(pcp_instances_tree, hf_pcp_instance_indom, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
- /* numinst */
- proto_tree_add_item(pcp_instances_tree, hf_pcp_instances_numinst, tvb, offset, 4, ENC_BIG_ENDIAN);
- num_inst = tvb_get_ntohl(tvb, offset);
- offset += 4;
-
- /* instlist */
- for (i=0; i<num_inst; i++) {
- /* get the size of the name first, so we know how much offset to give */
- name_len = tvb_get_ntohl(tvb, offset+4);
-
- /* give the subtree name length + 2 ints */
- pcp_instance_item = proto_tree_add_item(pcp_instances_tree, hf_pcp_instance, tvb, offset, name_len+8, ENC_NA);
- pcp_instance_tree = proto_item_add_subtree(pcp_instance_item, ett_pcp);
-
- /* inst */
- proto_tree_add_item(pcp_instance_tree, hf_pcp_pmid_inst, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
-
- /* namelen */
- proto_tree_add_item(pcp_instance_tree, hf_pcp_instance_namelen, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
-
- /* name */
- if (name_len > 0) {
- proto_tree_add_item(pcp_instance_tree, hf_pcp_instance_name, tvb, offset, name_len, ENC_ASCII|ENC_NA);
- offset += name_len;
- }
-
- /* padding */
- padding = name_len % 4; /* names are padded to the nearest 4 byte boundary */
- if (padding != 0) { /* if there is padding, keep going till the remainder of mod 4 */
- padding = 4 - padding; /* we want the inverse of the remainder */
-
- proto_tree_add_item(pcp_instance_tree, hf_pcp_pdu_padding, tvb, offset, padding, ENC_NA);
- offset += padding;
- }
- }
- return offset;
+ proto_item *pcp_instances_item;
+ proto_tree *pcp_instances_tree;
+ proto_item *pcp_instance_item;
+ proto_tree *pcp_instance_tree;
+ guint32 num_inst;
+ guint32 i;
+ guint32 name_len;
+ guint32 padding;
+
+ /* append the type of packet */
+ col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]", val_to_str(INSTANCE, packettypenames, "Unknown Type:0x%02x"));
+
+ pcp_instances_item = proto_tree_add_item(tree, hf_pcp_instances, tvb, offset, -1, ENC_NA);
+ pcp_instances_tree = proto_item_add_subtree(pcp_instances_item, ett_pcp);
+
+ /* indom */
+ proto_tree_add_item(pcp_instances_tree, hf_pcp_instance_indom, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ /* numinst */
+ proto_tree_add_item(pcp_instances_tree, hf_pcp_instances_numinst, tvb, offset, 4, ENC_BIG_ENDIAN);
+ num_inst = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+
+ /* instlist */
+ for (i=0; i<num_inst; i++) {
+ /* get the size of the name first, so we know how much offset to give */
+ name_len = tvb_get_ntohl(tvb, offset+4);
+
+ /* give the subtree name length + 2 ints */
+ pcp_instance_item = proto_tree_add_item(pcp_instances_tree, hf_pcp_instance, tvb, offset, name_len+8, ENC_NA);
+ pcp_instance_tree = proto_item_add_subtree(pcp_instance_item, ett_pcp);
+
+ /* inst */
+ proto_tree_add_item(pcp_instance_tree, hf_pcp_pmid_inst, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ /* namelen */
+ proto_tree_add_item(pcp_instance_tree, hf_pcp_instance_namelen, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ /* name */
+ if (name_len > 0) {
+ proto_tree_add_item(pcp_instance_tree, hf_pcp_instance_name, tvb, offset, name_len, ENC_ASCII|ENC_NA);
+ offset += name_len;
+ }
+
+ /* padding */
+ padding = name_len % 4; /* names are padded to the nearest 4 byte boundary */
+ if (padding != 0) { /* if there is padding, keep going till the remainder of mod 4 */
+ padding = 4 - padding; /* we want the inverse of the remainder */
+
+ proto_tree_add_item(pcp_instance_tree, hf_pcp_pdu_padding, tvb, offset, padding, ENC_NA);
+ offset += padding;
+ }
+ }
+ return offset;
}
/* PARTIAL DISSECTOR ROUTINES
@@ -1310,929 +1328,927 @@ static int dissect_pcp_message_instance(tvbuff_t *tvb, packet_info *pinfo, proto
static int dissect_pcp_partial_pmid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset)
{
- proto_item *pcp_pmid_item = NULL;
- proto_tree *pcp_pmid_tree = NULL;
- guint32 bits_offset;
-
- bits_offset = offset * 8;
-
- /* subtree for pmid */
- pcp_pmid_item = proto_tree_add_item(tree, hf_pcp_pmid, tvb, offset, 4, ENC_BIG_ENDIAN);
- pcp_pmid_tree = proto_item_add_subtree(pcp_pmid_item, ett_pcp);
-
- /* flag - 1 bit */
- proto_tree_add_bits_item(pcp_pmid_tree, hf_pcp_pmid_flag, tvb, bits_offset, 1, ENC_BIG_ENDIAN);
- bits_offset += 1;
- /* domain - 9 bits */
- proto_tree_add_bits_item(pcp_pmid_tree, hf_pcp_pmid_domain, tvb, bits_offset, 9, ENC_BIG_ENDIAN);
- bits_offset += 9;
- /* cluster - 12 bits */
- proto_tree_add_bits_item(pcp_pmid_tree, hf_pcp_pmid_cluster, tvb, bits_offset, 12, ENC_BIG_ENDIAN);
- bits_offset += 12;
- /* item - 10 bits */
- proto_tree_add_bits_item(pcp_pmid_tree, hf_pcp_pmid_item, tvb, bits_offset, 10, ENC_BIG_ENDIAN);
- offset += 4;
-
- return offset;
+ proto_item *pcp_pmid_item;
+ proto_tree *pcp_pmid_tree;
+ guint32 bits_offset;
+
+ bits_offset = offset * 8;
+
+ /* subtree for pmid */
+ pcp_pmid_item = proto_tree_add_item(tree, hf_pcp_pmid, tvb, offset, 4, ENC_BIG_ENDIAN);
+ pcp_pmid_tree = proto_item_add_subtree(pcp_pmid_item, ett_pcp);
+
+ /* flag - 1 bit */
+ proto_tree_add_bits_item(pcp_pmid_tree, hf_pcp_pmid_flag, tvb, bits_offset, 1, ENC_BIG_ENDIAN);
+ bits_offset += 1;
+ /* domain - 9 bits */
+ proto_tree_add_bits_item(pcp_pmid_tree, hf_pcp_pmid_domain, tvb, bits_offset, 9, ENC_BIG_ENDIAN);
+ bits_offset += 9;
+ /* cluster - 12 bits */
+ proto_tree_add_bits_item(pcp_pmid_tree, hf_pcp_pmid_cluster, tvb, bits_offset, 12, ENC_BIG_ENDIAN);
+ bits_offset += 12;
+ /* item - 10 bits */
+ proto_tree_add_bits_item(pcp_pmid_tree, hf_pcp_pmid_item, tvb, bits_offset, 10, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ return offset;
}
static int dissect_pcp_partial_when(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset)
{
- proto_item *pcp_when_item = NULL;
- proto_tree *pcp_when_tree = NULL;
+ proto_item *pcp_when_item;
+ proto_tree *pcp_when_tree;
- /* when - create a new subtree for each val */
- pcp_when_item = proto_tree_add_item(tree, hf_pcp_when, tvb, offset, 8, ENC_NA);
- pcp_when_tree = proto_item_add_subtree(pcp_when_item, ett_pcp);
+ /* when - create a new subtree for each val */
+ pcp_when_item = proto_tree_add_item(tree, hf_pcp_when, tvb, offset, 8, ENC_NA);
+ pcp_when_tree = proto_item_add_subtree(pcp_when_item, ett_pcp);
- /* when tv_sec */
- proto_tree_add_item(pcp_when_tree, hf_pcp_when_sec, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
- /* when tv_usec */
- proto_tree_add_item(pcp_when_tree, hf_pcp_when_usec, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
+ /* when tv_sec */
+ proto_tree_add_item(pcp_when_tree, hf_pcp_when_sec, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ /* when tv_usec */
+ proto_tree_add_item(pcp_when_tree, hf_pcp_when_usec, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
- return offset;
+ return offset;
}
/* MAIN DISSECTING ROUTINE (after passed from dissect_tcp, all packets hit function) */
static void dissect_pcp_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- gint32 err_bytes;
- int offset = 0;
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "PCP");
- col_clear(pinfo->cinfo, COL_INFO);
-
- if (tree) {
- proto_item *root_pcp_item = NULL;
- proto_tree *pcp_tree = NULL;
- guint32 packet_type;
-
- root_pcp_item = proto_tree_add_item(tree, proto_pcp, tvb, 0, -1, ENC_NA);
- pcp_tree = proto_item_add_subtree(root_pcp_item, ett_pcp);
-
- packet_type = tvb_get_ntohl(tvb, 4);
-
- /* Check if we are the client requesting or the server */
- if (pinfo->srcport == PCP_PORT) {
- col_add_str(pinfo->cinfo, COL_INFO, "Server > Client ");
- } else {
- col_add_str(pinfo->cinfo, COL_INFO, "Client > Server ");
- }
-
- /* PCP packet length */
- proto_tree_add_item(pcp_tree, hf_pcp_pdu_length, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
- /* PCP Packet type */
- proto_tree_add_item(pcp_tree, hf_pcp_pdu_type, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
- /* PCP Remote PID */
- proto_tree_add_item(pcp_tree, hf_pcp_pdu_pid, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
-
- /* Dissect the rest of the packet depending on the type */
- switch (packet_type) {
- case CREDS:
- dissect_pcp_message_creds(tvb, pinfo, pcp_tree, offset);
- break;
-
- case START_OR_ERROR:
- err_bytes = tvb_get_ntohl(tvb, offset); /* get the first 4 bytes, determine if this is an error or not */
- /* errors are signed and are all negative so check for a negative number.
- its the only way we can differentiate between start/error packets */
- if (err_bytes < 0) {
- dissect_pcp_message_error(tvb, pinfo, pcp_tree, offset);
- } else {
- dissect_pcp_message_start(tvb, pinfo, pcp_tree, offset);
- }
- break;
-
- case PMNS_TRAVERSE:
- dissect_pcp_message_pmns_traverse(tvb, pinfo, pcp_tree, offset);
- break;
-
- case PMNS_NAMES:
- dissect_pcp_message_pmns_names(tvb, pinfo, pcp_tree, offset);
- break;
-
- case PMNS_CHILD:
- dissect_pcp_message_pmns_child(tvb, pinfo, pcp_tree, offset);
- break;
-
- case PMNS_IDS:
- dissect_pcp_message_pmns_ids(tvb, pinfo, pcp_tree, offset);
- break;
-
- case PROFILE:
- dissect_pcp_message_profile(tvb, pinfo, pcp_tree, offset);
- break;
-
- case FETCH:
- dissect_pcp_message_fetch(tvb, pinfo, pcp_tree, offset);
- break;
-
- case RESULT:
- dissect_pcp_message_result(tvb, pinfo, pcp_tree, offset);
- break;
-
- case DESC_REQ:
- dissect_pcp_message_desc_req(tvb, pinfo, pcp_tree, offset);
- break;
-
- case DESC:
- dissect_pcp_message_desc(tvb, pinfo, pcp_tree, offset);
- break;
-
- case INSTANCE_REQ:
- dissect_pcp_message_instance_req(tvb, pinfo, pcp_tree, offset);
- break;
-
- case INSTANCE:
- dissect_pcp_message_instance(tvb, pinfo, pcp_tree, offset);
- break;
-
- case TEXT_REQ:
- dissect_pcp_message_text_req(tvb, pinfo, pcp_tree, offset);
- break;
-
- case TEXT:
- dissect_pcp_message_text(tvb, pinfo, pcp_tree, offset);
- break;
-
- default:
- /* Append the type of packet */
- col_append_str(pinfo->cinfo, COL_INFO, "[UNIMPLEMENTED TYPE]");
- /* if we got here, then we didn't get a packet type that we know of */
- expert_add_info_format(pinfo, pcp_tree, PI_UNDECODED, PI_WARN, "Unimplemented Packet Type");
- break;
- }
- }
+ proto_item *root_pcp_item;
+ proto_tree *pcp_tree;
+ guint32 packet_type;
+ gint32 err_bytes;
+ int offset = 0;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "PCP");
+ col_clear(pinfo->cinfo, COL_INFO);
+
+
+ root_pcp_item = proto_tree_add_item(tree, proto_pcp, tvb, 0, -1, ENC_NA);
+ pcp_tree = proto_item_add_subtree(root_pcp_item, ett_pcp);
+
+ packet_type = tvb_get_ntohl(tvb, 4);
+
+ /* check if we are the client requesting or the server */
+ if (pinfo->srcport == PCP_PORT) {
+ col_add_str(pinfo->cinfo, COL_INFO, "Server > Client ");
+ } else {
+ col_add_str(pinfo->cinfo, COL_INFO, "Client > Server ");
+ }
+
+ /* PCP packet length */
+ proto_tree_add_item(pcp_tree, hf_pcp_pdu_length, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ /* PCP Packet type */
+ proto_tree_add_item(pcp_tree, hf_pcp_pdu_type, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ /* PCP Remote PID */
+ proto_tree_add_item(pcp_tree, hf_pcp_pdu_pid, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ /* dissect the rest of the packet depending on the type */
+ switch (packet_type) {
+ case CREDS:
+ dissect_pcp_message_creds(tvb, pinfo, pcp_tree, offset);
+ break;
+
+ case START_OR_ERROR:
+ err_bytes = tvb_get_ntohl(tvb, offset); /* get the first 4 bytes, determine if this is an error or not */
+ /* errors are signed and are all negative so check for a negative number.
+ It's the only way we can differentiate between start/error packets */
+ if (err_bytes < 0) {
+ dissect_pcp_message_error(tvb, pinfo, pcp_tree, offset);
+ } else {
+ dissect_pcp_message_start(tvb, pinfo, pcp_tree, offset);
+ }
+ break;
+
+ case PMNS_TRAVERSE:
+ dissect_pcp_message_pmns_traverse(tvb, pinfo, pcp_tree, offset);
+ break;
+
+ case PMNS_NAMES:
+ dissect_pcp_message_pmns_names(tvb, pinfo, pcp_tree, offset);
+ break;
+
+ case PMNS_CHILD:
+ dissect_pcp_message_pmns_child(tvb, pinfo, pcp_tree, offset);
+ break;
+
+ case PMNS_IDS:
+ dissect_pcp_message_pmns_ids(tvb, pinfo, pcp_tree, offset);
+ break;
+
+ case PROFILE:
+ dissect_pcp_message_profile(tvb, pinfo, pcp_tree, offset);
+ break;
+
+ case FETCH:
+ dissect_pcp_message_fetch(tvb, pinfo, pcp_tree, offset);
+ break;
+
+ case RESULT:
+ dissect_pcp_message_result(tvb, pinfo, pcp_tree, offset);
+ break;
+
+ case DESC_REQ:
+ dissect_pcp_message_desc_req(tvb, pinfo, pcp_tree, offset);
+ break;
+
+ case DESC:
+ dissect_pcp_message_desc(tvb, pinfo, pcp_tree, offset);
+ break;
+
+ case INSTANCE_REQ:
+ dissect_pcp_message_instance_req(tvb, pinfo, pcp_tree, offset);
+ break;
+
+ case INSTANCE:
+ dissect_pcp_message_instance(tvb, pinfo, pcp_tree, offset);
+ break;
+
+ case TEXT_REQ:
+ dissect_pcp_message_text_req(tvb, pinfo, pcp_tree, offset);
+ break;
+
+ case TEXT:
+ dissect_pcp_message_text(tvb, pinfo, pcp_tree, offset);
+ break;
+
+ default:
+ /* append the type of packet */
+ col_append_str(pinfo->cinfo, COL_INFO, "[UNIMPLEMENTED TYPE]");
+ /* if we got here, then we didn't get a packet type that we know of */
+ expert_add_info_format(pinfo, pcp_tree, PI_UNDECODED, PI_WARN, "Unimplemented Packet Type");
+ break;
+ }
}
static void dissect_pcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- /* Pass all packets through TCP-reassembally */
- tcp_dissect_pdus(tvb, pinfo, tree, TRUE, PCP_HEADER_LEN, get_pcp_message_len, dissect_pcp_message);
+ /* pass all packets through TCP-reassembally */
+ tcp_dissect_pdus(tvb, pinfo, tree, TRUE, PCP_HEADER_LEN, get_pcp_message_len, dissect_pcp_message);
}
-/* Set-up the dissecting */
+/* setup the dissecting */
void proto_register_pcp(void)
{
- static hf_register_info hf[] = {
- { &hf_pcp_pdu_length,
- { "PDU Length", "pcp.length",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pdu_type,
- { "Type", "pcp.type",
- FT_UINT32, BASE_HEX,
- VALS(packettypenames), 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pdu_pid,
- { "From", "pcp.from",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pdu_error,
- { "Error", "pcp.error",
- FT_INT32, BASE_DEC,
- VALS(packettypenames_errors), 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pdu_padding,
- { "Padding", "pcp.padding",
- FT_NONE, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_creds_number_of,
- { "Number of Credentials", "pcp.creds.number",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_creds_type,
- { "Credentials Type", "pcp.creds.type",
- FT_UINT8, BASE_DEC,
- VALS(packettypenames_creds), 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_creds_vala,
- { "Credentials Value A", "pcp.creds.vala",
- FT_UINT8, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_creds_valb,
- { "Credentials Value B", "pcp.creds.valb",
- FT_UINT8, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_creds_valc,
- { "Credentials Value C", "pcp.creds.valc",
- FT_UINT8, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_start,
- { "Start", "pcp.start",
- FT_NONE, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_start_zero,
- { "Start Compatibility Bit", "pcp.start.zero",
- FT_BOOLEAN, 1,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_start_version,
- { "Version", "pcp.start.version",
- FT_UINT8, BASE_DEC, /* Not a real 8 bit int, only uses 7 bits */
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_start_status,
- { "Start Status", "pcp.start.status",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_start_licensed,
- { "Licensed", "pcp.start.licensed",
- FT_UINT8, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_start_authorize,
- { "Authorize", "pcp.start.authorize",
- FT_UINT16, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pmns_traverse,
- { "PMNS Traverse", "pcp.pmns_traverse",
- FT_NONE, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pmns_subtype,
- { "Subtype", "pcp.pmns.subtype",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pmns_namelen,
- { "Name Length", "pcp.pmns.namelen",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pmns_name,
- { "Name", "pcp.pmns.name",
- FT_STRING, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pmns_names,
- { "PMNS Names", "pcp.pmns_names",
- FT_NONE, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pmns_names_nstrbytes,
- { "String Bytes", "pcp.pmns_names.nstrbytes",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pmns_names_numstatus,
- { "Status", "pcp.pmns_names.numstatus",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pmns_names_numnames,
- { "Number of Names", "pcp.pmns_names.numnames",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pmns_names_nametree,
- { "Names", "pcp.pmns_names.nametree",
- FT_NONE, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pmns_names_nametree_status,
- { "Status", "pcp.pmns_names.nametree.status",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pmns_names_nametree_namelen,
- { "Length", "pcp.pmns_names.nametree.namelen",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pmns_names_nametree_name,
- { "Name", "pcp.pmns_names.nametree.name",
- FT_STRING, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pmns_ids,
- { "PMNS IDs", "pcp.pmns_ids",
- FT_NONE, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pmns_ids_status,
- { "Status", "pcp.pmns_ids.status",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pmns_ids_numids,
- { "Number of IDs", "pcp.pmns_ids.numids",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pmns_child,
- { "PMID Child", "pcp.pmns.child",
- FT_NONE, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pmid,
- { "PMID", "pcp.pmid",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pmid_flag,
- { "Flag", "pcp.pmid.flag",
- FT_BOOLEAN, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pmid_domain,
- { "Domain", "pcp.pmid.domain",
- FT_UINT16, BASE_DEC, /* Uses 9 bits */
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pmid_cluster,
- { "Cluster", "pcp.pmid.cluster",
- FT_UINT16, BASE_DEC, /* Uses 12 bits */
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pmid_item,
- { "Item", "pcp.pmid.item",
- FT_UINT16, BASE_DEC, /* Uses 10 bits */
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pmid_type,
- { "Type", "pcp.pmid.type",
- FT_INT8, BASE_DEC,
- VALS(packettypenames_pm_types), 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pmid_sem,
- { "Type Semantics", "pcp.pmid.sem",
- FT_UINT32, BASE_DEC,
- VALS(packettypenames_pm_types_sem), 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_pmid_inst,
- { "Instance", "pcp.pmid.inst",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_profile,
- { "Profile", "pcp.profile",
- FT_NONE, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_ctxnum,
- { "Context Number", "pcp.ctxnum",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_profile_g_state,
- { "Global Include/Exclude State", "pcp.profile.g_state",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_profile_numprof,
- { "Number of Profiles", "pcp.profile.numprof",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_profile_profile,
- { "Each Profile", "pcp.profile.profile",
- FT_NONE, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_profile_profile_state,
- { "Include/Exclude State", "pcp.profile.profile.state",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_profile_profile_numinst,
- { "Number Instances to Follow", "pcp.profile.profile.numinst",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_fetch,
- { "Fetch", "pcp.fetch",
- FT_NONE, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_fetch_numpmid,
- { "Number PMIDs", "pcp.fetch.numpmid",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_when,
- { "Time Value", "pcp.when",
- FT_NONE, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_when_sec,
- { "Seconds", "pcp.when.sec",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_when_usec,
- { "Microseconds", "pcp.when.usec",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_desc_req,
- { "Description Request", "pcp.desc_req",
- FT_NONE, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_desc,
- { "Description Response", "pcp.desc",
- FT_NONE, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_units,
- { "PMID Units", "pcp.units",
- FT_NONE, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_units_dimspace,
- { "Dimension Space", "pcp.units.dimspace",
- FT_UINT8, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_units_dimtime,
- { "Dimension Time", "pcp.units.dimtime",
- FT_UINT8, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_units_dimcount,
- { "Dimension Count", "pcp.units.dimcount",
- FT_UINT8, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_units_scalespace,
- { "Scale Space", "pcp.units.scalespace",
- FT_UINT8, BASE_DEC,
- VALS(packettypenames_pm_units_space), 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_units_scaletime,
- { "Scale Time", "pcp.units.scalespace",
- FT_UINT8, BASE_DEC,
- VALS(packettypenames_pm_units_time), 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_units_scalecount,
- { "Scale Count", "pcp.units.scalecount",
- FT_UINT8, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_instance_req,
- { "Instance Request", "pcp.instance_req",
- FT_NONE, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_instances,
- { "Instance Response", "pcp.instances",
- FT_NONE, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_instances_numinst,
- { "Number of Instances", "pcp.instance_resp.numinst",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_instance,
- { "Instance", "pcp.instance",
- FT_NONE, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_instance_namelen,
- { "Name Length", "pcp.instance.namelen",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_instance_name,
- { "Name", "pcp.instance.name",
- FT_STRING, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_instance_indom,
- { "Instance Domain", "pcp.instance.indom",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_instance_valoffset,
- { "Instance Offset", "pcp.instance.valoffset",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_instance_vallength,
- { "Instance Value Length", "pcp.instance.vallength",
- FT_INT24, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_instance_value_insitu,
- { "Instance Value", "pcp.instance.value",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_instance_value_ptr,
- { "Instance Value", "pcp.instance.value",
- FT_STRING, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_instance_value_int,
- { "Instance Value", "pcp.instance.value",
- FT_INT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_instance_value_uint,
- { "Instance Value", "pcp.instance.value",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_instance_value_int64,
- { "Instance Value", "pcp.instance.value",
- FT_INT64, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_instance_value_uint64,
- { "Instance Value", "pcp.instance.value",
- FT_UINT64, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_instance_value_float,
- { "Instance Value", "pcp.instance.value",
- FT_FLOAT, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_instance_value_double,
- { "Instance Value", "pcp.instance.value",
- FT_DOUBLE, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_instance_value_aggr,
- { "Instance Value", "pcp.instance.value",
- FT_BYTES, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_results,
- { "Fetch Results", "pcp.results",
- FT_NONE, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_results_numpmid,
- { "Number of PMIDs", "pcp.results.numpmid",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_result,
- { "Result", "pcp.result",
- FT_NONE, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_result_numval,
- { "Number of Values", "pcp.result.numval",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_result_valfmt,
- { "Value Encoding Format", "pcp.result.valfmt",
- FT_UINT32, BASE_DEC,
- VALS(packettypenames_valfmt), 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_text_req,
- { "Text Request", "pcp.text_req",
- FT_NONE, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_text_type,
- { "Help Text Type", "pcp.text.type",
- FT_NONE, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_text_type_format,
- { "Text Type Format", "pcp.text.type.format",
- FT_UINT8, BASE_DEC,
- VALS(packettypenames_text_type_format), 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_text_type_ident,
- { "Text Type Ident", "pcp.text.type.ident",
- FT_UINT8, BASE_DEC,
- VALS(packettypenames_text_type_ident), 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_text,
- { "Text Response", "pcp.text",
- FT_NONE, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_text_ident,
- { "Text Ident (raw)", "pcp.text.ident",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_text_buflen,
- { "Text Buffer Length", "pcp.text.buflen",
- FT_UINT32, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- { &hf_pcp_text_buffer,
- { "Text Buffer", "pcp.text.buffer",
- FT_STRING, BASE_NONE,
- NULL, 0x0,
- NULL, HFILL
- },
- },
- };
-
- static gint *ett[] = {
- &ett_pcp,
- &ett_pcp_pdu_length,
- &ett_pcp_pdu_type,
- &ett_pcp_pdu_pid,
- &ett_pcp_pdu_error,
- &ett_pcp_pdu_padding,
- &ett_pcp_creds_number_of,
- &ett_pcp_creds_type,
- &ett_pcp_creds_vala,
- &ett_pcp_creds_valb,
- &ett_pcp_creds_valc,
- &ett_pcp_start,
- &ett_pcp_start_status,
- &ett_pcp_start_zero,
- &ett_pcp_start_version,
- &ett_pcp_start_licensed,
- &ett_pcp_start_authorize,
- &ett_pcp_pmns_traverse,
- &ett_pcp_pmns_subtype,
- &ett_pcp_pmns_namelen,
- &ett_pcp_pmns_name,
- &ett_pcp_pmns_names,
- &ett_pcp_pmns_names_nstrbytes,
- &ett_pcp_pmns_names_numstatus,
- &ett_pcp_pmns_names_numnames,
- &ett_pcp_pmns_names_nametree,
- &ett_pcp_pmns_names_nametree_status,
- &ett_pcp_pmns_names_nametree_namelen,
- &ett_pcp_pmns_names_nametree_name,
- &ett_pcp_pmns_ids,
- &ett_pcp_pmns_ids_status,
- &ett_pcp_pmns_ids_numids,
- &ett_pcp_pmns_child,
- &ett_pcp_pmid,
- &ett_pcp_pmid_flag,
- &ett_pcp_pmid_domain,
- &ett_pcp_pmid_cluster,
- &ett_pcp_pmid_item,
- &ett_pcp_pmid_type,
- &ett_pcp_pmid_sem,
- &ett_pcp_profile,
- &ett_pcp_ctxnum,
- &ett_pcp_profile_g_state,
- &ett_pcp_profile_numprof,
- &ett_pcp_profile_profile,
- &ett_pcp_profile_profile_state,
- &ett_pcp_profile_profile_numinst,
- &ett_pcp_fetch,
- &ett_pcp_fetch_numpmid,
- &ett_pcp_when,
- &ett_pcp_when_sec,
- &ett_pcp_when_usec,
- &ett_pcp_desc_req,
- &ett_pcp_units,
- &ett_pcp_units_dimspace,
- &ett_pcp_units_dimtime,
- &ett_pcp_units_dimcount,
- &ett_pcp_units_scalespace,
- &ett_pcp_units_scaletime,
- &ett_pcp_units_scalecount,
- &ett_pcp_instance,
- &ett_pcp_instance_req,
- &ett_pcp_instance_namelen,
- &ett_pcp_instance_name,
- &ett_pcp_instance_indom,
- &ett_pcp_instance_inst,
- &ett_pcp_instance_valoffset,
- &ett_pcp_instance_vallength,
- &ett_pcp_instance_value_insitu,
- &ett_pcp_instance_value_ptr,
- &ett_pcp_instance_value_int,
- &ett_pcp_instance_value_uint,
- &ett_pcp_instance_value_int64,
- &ett_pcp_instance_value_uint64,
- &ett_pcp_instance_value_float,
- &ett_pcp_instance_value_double,
- &ett_pcp_instance_value_aggr,
- &ett_pcp_instances,
- &ett_pcp_instances_numinst,
- &ett_pcp_results,
- &ett_pcp_results_numpmid,
- &ett_pcp_result,
- &ett_pcp_result_numval,
- &ett_pcp_result_valfmt,
- &ett_pcp_text_req,
- &ett_pcp_text_type,
- &ett_pcp_text_type_format,
- &ett_pcp_text_type_ident,
- &ett_pcp_text,
- &ett_pcp_text_ident,
- &ett_pcp_text_buflen,
- &ett_pcp_text_buffer,
- };
-
- proto_pcp = proto_register_protocol("Performance Co-Pilot", "PCP", "pcp");
-
- proto_register_field_array(proto_pcp, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ static hf_register_info hf[] = {
+ { &hf_pcp_pdu_length,
+ { "PDU Length", "pcp.length",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pdu_type,
+ { "Type", "pcp.type",
+ FT_UINT32, BASE_HEX,
+ VALS(packettypenames), 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pdu_pid,
+ { "From", "pcp.from",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pdu_error,
+ { "Error", "pcp.error",
+ FT_INT32, BASE_DEC,
+ VALS(packettypenames_errors), 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pdu_padding,
+ { "Padding", "pcp.padding",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_creds_number_of,
+ { "Number of Credentials", "pcp.creds.number",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_creds_type,
+ { "Credentials Type", "pcp.creds.type",
+ FT_UINT8, BASE_DEC,
+ VALS(packettypenames_creds), 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_creds_vala,
+ { "Credentials Value A", "pcp.creds.vala",
+ FT_UINT8, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_creds_valb,
+ { "Credentials Value B", "pcp.creds.valb",
+ FT_UINT8, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_creds_valc,
+ { "Credentials Value C", "pcp.creds.valc",
+ FT_UINT8, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_start,
+ { "Start", "pcp.start",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_start_zero,
+ { "Start Compatibility Bit", "pcp.start.zero",
+ FT_BOOLEAN, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_start_version,
+ { "Version", "pcp.start.version",
+ FT_UINT8, BASE_DEC, /* not a real 8 bit int, only uses 7 bits */
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_start_status,
+ { "Start Status", "pcp.start.status",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_start_licensed,
+ { "Licensed", "pcp.start.licensed",
+ FT_UINT8, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_start_authorize,
+ { "Authorize", "pcp.start.authorize",
+ FT_UINT16, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pmns_traverse,
+ { "PMNS Traverse", "pcp.pmns_traverse",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pmns_subtype,
+ { "Subtype", "pcp.pmns.subtype",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pmns_namelen,
+ { "Name Length", "pcp.pmns.namelen",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pmns_name,
+ { "Name", "pcp.pmns.name",
+ FT_STRING, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pmns_names,
+ { "PMNS Names", "pcp.pmns_names",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pmns_names_nstrbytes,
+ { "String Bytes", "pcp.pmns_names.nstrbytes",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pmns_names_numstatus,
+ { "Status", "pcp.pmns_names.numstatus",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pmns_names_numnames,
+ { "Number of Names", "pcp.pmns_names.numnames",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pmns_names_nametree,
+ { "Names", "pcp.pmns_names.nametree",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pmns_names_nametree_status,
+ { "Status", "pcp.pmns_names.nametree.status",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pmns_names_nametree_namelen,
+ { "Length", "pcp.pmns_names.nametree.namelen",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pmns_names_nametree_name,
+ { "Name", "pcp.pmns_names.nametree.name",
+ FT_STRING, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pmns_ids,
+ { "PMNS IDs", "pcp.pmns_ids",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pmns_ids_status,
+ { "Status", "pcp.pmns_ids.status",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pmns_ids_numids,
+ { "Number of IDs", "pcp.pmns_ids.numids",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pmns_child,
+ { "PMID Child", "pcp.pmns.child",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pmid,
+ { "PMID", "pcp.pmid",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pmid_flag,
+ { "Flag", "pcp.pmid.flag",
+ FT_BOOLEAN, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pmid_domain,
+ { "Domain", "pcp.pmid.domain",
+ FT_UINT16, BASE_DEC, /* uses 9 bits */
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pmid_cluster,
+ { "Cluster", "pcp.pmid.cluster",
+ FT_UINT16, BASE_DEC, /* uses 12 bits */
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pmid_item,
+ { "Item", "pcp.pmid.item",
+ FT_UINT16, BASE_DEC, /* uses 10 bits */
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pmid_type,
+ { "Type", "pcp.pmid.type",
+ FT_INT8, BASE_DEC,
+ VALS(packettypenames_pm_types), 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pmid_sem,
+ { "Type Semantics", "pcp.pmid.sem",
+ FT_UINT32, BASE_DEC,
+ VALS(packettypenames_pm_types_sem), 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_pmid_inst,
+ { "Instance", "pcp.pmid.inst",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_profile,
+ { "Profile", "pcp.profile",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_ctxnum,
+ { "Context Number", "pcp.ctxnum",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_profile_g_state,
+ { "Global Include/Exclude State", "pcp.profile.g_state",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_profile_numprof,
+ { "Number of Profiles", "pcp.profile.numprof",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_profile_profile,
+ { "Each Profile", "pcp.profile.profile",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_profile_profile_state,
+ { "Include/Exclude State", "pcp.profile.profile.state",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_profile_profile_numinst,
+ { "Number Instances to Follow", "pcp.profile.profile.numinst",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_fetch,
+ { "Fetch", "pcp.fetch",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_fetch_numpmid,
+ { "Number PMIDs", "pcp.fetch.numpmid",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_when,
+ { "Time Value", "pcp.when",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_when_sec,
+ { "Seconds", "pcp.when.sec",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_when_usec,
+ { "Microseconds", "pcp.when.usec",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_desc_req,
+ { "Description Request", "pcp.desc_req",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_desc,
+ { "Description Response", "pcp.desc",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_units,
+ { "PMID Units", "pcp.units",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_units_dimspace,
+ { "Dimension Space", "pcp.units.dimspace",
+ FT_UINT8, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_units_dimtime,
+ { "Dimension Time", "pcp.units.dimtime",
+ FT_UINT8, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_units_dimcount,
+ { "Dimension Count", "pcp.units.dimcount",
+ FT_UINT8, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_units_scalespace,
+ { "Scale Space", "pcp.units.scalespace",
+ FT_UINT8, BASE_DEC,
+ VALS(packettypenames_pm_units_space), 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_units_scaletime,
+ { "Scale Time", "pcp.units.scalespace",
+ FT_UINT8, BASE_DEC,
+ VALS(packettypenames_pm_units_time), 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_units_scalecount,
+ { "Scale Count", "pcp.units.scalecount",
+ FT_UINT8, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_instance_req,
+ { "Instance Request", "pcp.instance_req",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_instances,
+ { "Instance Response", "pcp.instances",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_instances_numinst,
+ { "Number of Instances", "pcp.instance_resp.numinst",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_instance,
+ { "Instance", "pcp.instance",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_instance_namelen,
+ { "Name Length", "pcp.instance.namelen",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_instance_name,
+ { "Name", "pcp.instance.name",
+ FT_STRING, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_instance_indom,
+ { "Instance Domain", "pcp.instance.indom",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_instance_valoffset,
+ { "Instance Offset", "pcp.instance.valoffset",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_instance_vallength,
+ { "Instance Value Length", "pcp.instance.vallength",
+ FT_INT24, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_instance_value_insitu,
+ { "Instance Value", "pcp.instance.value",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_instance_value_ptr,
+ { "Instance Value", "pcp.instance.value",
+ FT_STRING, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_instance_value_int,
+ { "Instance Value", "pcp.instance.value",
+ FT_INT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_instance_value_uint,
+ { "Instance Value", "pcp.instance.value",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_instance_value_int64,
+ { "Instance Value", "pcp.instance.value",
+ FT_INT64, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_instance_value_uint64,
+ { "Instance Value", "pcp.instance.value",
+ FT_UINT64, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_instance_value_float,
+ { "Instance Value", "pcp.instance.value",
+ FT_FLOAT, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_instance_value_double,
+ { "Instance Value", "pcp.instance.value",
+ FT_DOUBLE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_instance_value_aggr,
+ { "Instance Value", "pcp.instance.value",
+ FT_BYTES, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_results,
+ { "Fetch Results", "pcp.results",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_results_numpmid,
+ { "Number of PMIDs", "pcp.results.numpmid",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_result,
+ { "Result", "pcp.result",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_result_numval,
+ { "Number of Values", "pcp.result.numval",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_result_valfmt,
+ { "Value Encoding Format", "pcp.result.valfmt",
+ FT_UINT32, BASE_DEC,
+ VALS(packettypenames_valfmt), 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_text_req,
+ { "Text Request", "pcp.text_req",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_text_type,
+ { "Help Text Type", "pcp.text.type",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_text_type_format,
+ { "Text Type Format", "pcp.text.type.format",
+ FT_UINT8, BASE_DEC,
+ VALS(packettypenames_text_type_format), 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_text_type_ident,
+ { "Text Type Ident", "pcp.text.type.ident",
+ FT_UINT8, BASE_DEC,
+ VALS(packettypenames_text_type_ident), 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_text,
+ { "Text Response", "pcp.text",
+ FT_NONE, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_text_ident,
+ { "Text Ident (raw)", "pcp.text.ident",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_text_buflen,
+ { "Text Buffer Length", "pcp.text.buflen",
+ FT_UINT32, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_pcp_text_buffer,
+ { "Text Buffer", "pcp.text.buffer",
+ FT_STRING, BASE_NONE,
+ NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ };
+
+ static gint *ett[] = {
+ &ett_pcp,
+ &ett_pcp_pdu_length,
+ &ett_pcp_pdu_type,
+ &ett_pcp_pdu_pid,
+ &ett_pcp_pdu_error,
+ &ett_pcp_pdu_padding,
+ &ett_pcp_creds_number_of,
+ &ett_pcp_creds_type,
+ &ett_pcp_creds_vala,
+ &ett_pcp_creds_valb,
+ &ett_pcp_creds_valc,
+ &ett_pcp_start,
+ &ett_pcp_start_status,
+ &ett_pcp_start_zero,
+ &ett_pcp_start_version,
+ &ett_pcp_start_licensed,
+ &ett_pcp_start_authorize,
+ &ett_pcp_pmns_traverse,
+ &ett_pcp_pmns_subtype,
+ &ett_pcp_pmns_namelen,
+ &ett_pcp_pmns_name,
+ &ett_pcp_pmns_names,
+ &ett_pcp_pmns_names_nstrbytes,
+ &ett_pcp_pmns_names_numstatus,
+ &ett_pcp_pmns_names_numnames,
+ &ett_pcp_pmns_names_nametree,
+ &ett_pcp_pmns_names_nametree_status,
+ &ett_pcp_pmns_names_nametree_namelen,
+ &ett_pcp_pmns_names_nametree_name,
+ &ett_pcp_pmns_ids,
+ &ett_pcp_pmns_ids_status,
+ &ett_pcp_pmns_ids_numids,
+ &ett_pcp_pmns_child,
+ &ett_pcp_pmid,
+ &ett_pcp_pmid_flag,
+ &ett_pcp_pmid_domain,
+ &ett_pcp_pmid_cluster,
+ &ett_pcp_pmid_item,
+ &ett_pcp_pmid_type,
+ &ett_pcp_pmid_sem,
+ &ett_pcp_profile,
+ &ett_pcp_ctxnum,
+ &ett_pcp_profile_g_state,
+ &ett_pcp_profile_numprof,
+ &ett_pcp_profile_profile,
+ &ett_pcp_profile_profile_state,
+ &ett_pcp_profile_profile_numinst,
+ &ett_pcp_fetch,
+ &ett_pcp_fetch_numpmid,
+ &ett_pcp_when,
+ &ett_pcp_when_sec,
+ &ett_pcp_when_usec,
+ &ett_pcp_desc_req,
+ &ett_pcp_units,
+ &ett_pcp_units_dimspace,
+ &ett_pcp_units_dimtime,
+ &ett_pcp_units_dimcount,
+ &ett_pcp_units_scalespace,
+ &ett_pcp_units_scaletime,
+ &ett_pcp_units_scalecount,
+ &ett_pcp_instance,
+ &ett_pcp_instance_req,
+ &ett_pcp_instance_namelen,
+ &ett_pcp_instance_name,
+ &ett_pcp_instance_indom,
+ &ett_pcp_instance_inst,
+ &ett_pcp_instance_valoffset,
+ &ett_pcp_instance_vallength,
+ &ett_pcp_instance_value_insitu,
+ &ett_pcp_instance_value_ptr,
+ &ett_pcp_instance_value_int,
+ &ett_pcp_instance_value_uint,
+ &ett_pcp_instance_value_int64,
+ &ett_pcp_instance_value_uint64,
+ &ett_pcp_instance_value_float,
+ &ett_pcp_instance_value_double,
+ &ett_pcp_instance_value_aggr,
+ &ett_pcp_instances,
+ &ett_pcp_instances_numinst,
+ &ett_pcp_results,
+ &ett_pcp_results_numpmid,
+ &ett_pcp_result,
+ &ett_pcp_result_numval,
+ &ett_pcp_result_valfmt,
+ &ett_pcp_text_req,
+ &ett_pcp_text_type,
+ &ett_pcp_text_type_format,
+ &ett_pcp_text_type_ident,
+ &ett_pcp_text,
+ &ett_pcp_text_ident,
+ &ett_pcp_text_buflen,
+ &ett_pcp_text_buffer,
+ };
+
+ proto_pcp = proto_register_protocol("Performance Co-Pilot", "PCP", "pcp");
+
+ proto_register_field_array(proto_pcp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
void proto_reg_handoff_pcp(void)
{
- dissector_handle_t pcp_handle;
+ dissector_handle_t pcp_handle;
- pcp_handle = create_dissector_handle(dissect_pcp, proto_pcp);
- dissector_add_uint("tcp.port", PCP_PORT, pcp_handle);
+ pcp_handle = create_dissector_handle(dissect_pcp, proto_pcp);
+ dissector_add_uint("tcp.port", PCP_PORT, pcp_handle);
}
/*
@@ -2240,10 +2256,10 @@ void proto_reg_handoff_pcp(void)
*
* Local variables:
* c-basic-offset: 4
-* tab-width: 4
+* tab-width: 8
* indent-tabs-mode: nil
* End:
*
* vi: set shiftwidth=4 tabstop=4 expandtab:
-* :indentSize=4:tabSize=4:noTabs=true:
+* :indentSize=4:tabSize=8:noTabs=true:
*/
diff --git a/epan/dissectors/packet-pdcp-lte.c b/epan/dissectors/packet-pdcp-lte.c
index 9729db588b..7f9d9ba167 100644
--- a/epan/dissectors/packet-pdcp-lte.c
+++ b/epan/dissectors/packet-pdcp-lte.c
@@ -1,4 +1,4 @@
-/* Routines for LTE PDCP/ROHC
+/* Routines for LTE PDCP
*
* Martin Mathieson
*
@@ -42,16 +42,14 @@
/* Described in:
* 3GPP TS 36.323 Evolved Universal Terrestrial Radio Access (E-UTRA)
* Packet Data Convergence Protocol (PDCP) specification
- *
- * RFC 3095 RObust Header Compression (ROHC):
- * Framework and four profiles: RTP, UDP, ESP, and uncompressed
*/
/* TODO:
- - Complete ROHC support for RTP and extend to other profiles (including ROHCv2)
- Support for deciphering
- Verify MAC authentication bytes
+ - Delete old ROHC support from here once sure everything useful useful has
+ been merged into packet-rohc.c
*/
@@ -66,12 +64,14 @@ static int hf_pdcp_lte_direction = -1;
static int hf_pdcp_lte_ueid = -1;
static int hf_pdcp_lte_channel_type = -1;
static int hf_pdcp_lte_channel_id = -1;
-static int hf_pdcp_lte_rohc = -1;
+
+/* static int hf_pdcp_lte_rohc = -1; */
static int hf_pdcp_lte_rohc_compression = -1;
static int hf_pdcp_lte_rohc_mode = -1;
static int hf_pdcp_lte_rohc_rnd = -1;
static int hf_pdcp_lte_rohc_udp_checksum_present = -1;
static int hf_pdcp_lte_rohc_profile = -1;
+
static int hf_pdcp_lte_no_header_pdu = -1;
static int hf_pdcp_lte_plane = -1;
static int hf_pdcp_lte_seqnum_length = -1;
@@ -94,6 +94,7 @@ static int hf_pdcp_lte_bitmap = -1;
static int hf_pdcp_lte_bitmap_not_received = -1;
/* Robust Header Compression Fields */
+#if 0
static int hf_pdcp_lte_rohc_padding = -1;
static int hf_pdcp_lte_rohc_r_0_crc = -1;
static int hf_pdcp_lte_rohc_feedback = -1;
@@ -173,6 +174,7 @@ static int hf_pdcp_lte_rohc_feedback_option_clock = -1;
static int hf_pdcp_lte_rohc_ip_id = -1;
static int hf_pdcp_lte_rohc_udp_checksum = -1;
static int hf_pdcp_lte_rohc_payload = -1;
+#endif
/* Sequence Analysis */
static int hf_pdcp_lte_sequence_analysis = -1;
@@ -235,23 +237,23 @@ static const value_string rohc_mode_vals[] = {
/* Values taken from:
http://www.iana.org/assignments/rohc-pro-ids/rohc-pro-ids.txt */
static const value_string rohc_profile_vals[] = {
- { 0x0000, "ROHC uncompressed" }, /* [RFC5795] */
- { 0x0001, "ROHC RTP" }, /* [RFC3095] */
- { 0x0101, "ROHCv2 RTP" }, /* [RFC5225] */
- { 0x0002, "ROHC UDP" }, /* [RFC3095] */
- { 0x0102, "ROHCv2 UDP" }, /* [RFC5225] */
- { 0x0003, "ROHC ESP" }, /* [RFC3095] */
- { 0x0103, "ROHCv2 ESP" }, /* [RFC5225] */
- { 0x0004, "ROHC IP" }, /* [RFC3843] */
- { 0x0104, "ROHCv2 IP" }, /* [RFC5225] */
- { 0x0005, "ROHC LLA" }, /* [RFC4362] */
- { 0x0105, "ROHC LLA with R-mode" }, /* [RFC3408] */
- { 0x0006, "ROHC TCP" }, /* [RFC4996] */
- { 0x0007, "ROHC RTP/UDP-Lite" }, /* [RFC4019] */
- { 0x0107, "ROHCv2 RTP/UDP-Lite" }, /* [RFC5225] */
- { 0x0008, "ROHC UDP-Lite" }, /* [RFC4019] */
- { 0x0108, "ROHCv2 UDP-Lite" }, /* [RFC5225] */
- { 0, NULL }
+ { 0x0000, "ROHC uncompressed" }, /* [RFC5795] */
+ { 0x0001, "ROHC RTP" }, /* [RFC3095] */
+ { 0x0101, "ROHCv2 RTP" }, /* [RFC5225] */
+ { 0x0002, "ROHC UDP" }, /* [RFC3095] */
+ { 0x0102, "ROHCv2 UDP" }, /* [RFC5225] */
+ { 0x0003, "ROHC ESP" }, /* [RFC3095] */
+ { 0x0103, "ROHCv2 ESP" }, /* [RFC5225] */
+ { 0x0004, "ROHC IP" }, /* [RFC3843] */
+ { 0x0104, "ROHCv2 IP" }, /* [RFC5225] */
+ { 0x0005, "ROHC LLA" }, /* [RFC4362] */
+ { 0x0105, "ROHC LLA with R-mode" }, /* [RFC3408] */
+ { 0x0006, "ROHC TCP" }, /* [RFC4996] */
+ { 0x0007, "ROHC RTP/UDP-Lite" }, /* [RFC4019] */
+ { 0x0107, "ROHCv2 RTP/UDP-Lite" }, /* [RFC5225] */
+ { 0x0008, "ROHC UDP-Lite" }, /* [RFC4019] */
+ { 0x0108, "ROHCv2 UDP-Lite" }, /* [RFC5225] */
+ { 0, NULL }
};
static const value_string pdu_type_vals[] = {
@@ -307,7 +309,6 @@ static dissector_handle_t data_handle;
#define SEQUENCE_ANALYSIS_PDCP_ONLY 2
/* Preference variables */
-static gboolean global_pdcp_show_feedback_option_tag_length = FALSE;
static gboolean global_pdcp_dissect_user_plane_as_ip = FALSE;
static gboolean global_pdcp_dissect_signalling_plane_as_rrc = FALSE;
static gint global_pdcp_check_sequence_numbers = FALSE;
@@ -348,8 +349,8 @@ static GHashTable *pdcp_sequence_analysis_channel_hash = NULL;
/* Equal keys */
static gint pdcp_channel_equal(gconstpointer v, gconstpointer v2)
{
- const pdcp_channel_hash_key* val1 = (pdcp_channel_hash_key *)v;
- const pdcp_channel_hash_key* val2 = (pdcp_channel_hash_key *)v2;
+ const pdcp_channel_hash_key* val1 = (const pdcp_channel_hash_key *)v;
+ const pdcp_channel_hash_key* val2 = (const pdcp_channel_hash_key *)v2;
/* All fields must match */
return (memcmp(val1, val2, sizeof(pdcp_channel_hash_key)) == 0);
@@ -358,7 +359,7 @@ static gint pdcp_channel_equal(gconstpointer v, gconstpointer v2)
/* Compute a hash value for a given key. */
static guint pdcp_channel_hash_func(gconstpointer v)
{
- const pdcp_channel_hash_key* val1 = (pdcp_channel_hash_key *)v;
+ const pdcp_channel_hash_key* val1 = (const pdcp_channel_hash_key *)v;
/* TODO: use multipliers */
return val1->ueId + val1->plane + val1->channelId + val1->direction;
@@ -377,8 +378,8 @@ typedef struct {
static gint pdcp_result_hash_equal(gconstpointer v, gconstpointer v2)
{
- const pdcp_result_hash_key* val1 = (pdcp_result_hash_key *)v;
- const pdcp_result_hash_key* val2 = (pdcp_result_hash_key *)v2;
+ const pdcp_result_hash_key* val1 = (const pdcp_result_hash_key *)v;
+ const pdcp_result_hash_key* val2 = (const pdcp_result_hash_key *)v2;
/* All fields must match */
return (memcmp(val1, val2, sizeof(pdcp_result_hash_key)) == 0);
@@ -387,7 +388,7 @@ static gint pdcp_result_hash_equal(gconstpointer v, gconstpointer v2)
/* Compute a hash value for a given key. */
static guint pdcp_result_hash_func(gconstpointer v)
{
- const pdcp_result_hash_key* val1 = (pdcp_result_hash_key *)v;
+ const pdcp_result_hash_key* val1 = (const pdcp_result_hash_key *)v;
/* TODO: check collision-rate / execution-time of these multipliers? */
return val1->frameNumber + (val1->channelId<<13) +
@@ -401,8 +402,8 @@ static gpointer get_report_hash_key(guint16 SN, guint32 frameNumber,
pdcp_lte_info *p_pdcp_lte_info,
gboolean do_persist)
{
- static pdcp_result_hash_key key;
- pdcp_result_hash_key *p_key;
+ static pdcp_result_hash_key key;
+ pdcp_result_hash_key *p_key;
/* Only allocate a struct when will be adding entry */
if (do_persist) {
@@ -427,13 +428,13 @@ static gpointer get_report_hash_key(guint16 SN, guint32 frameNumber,
/* Info to attach to frame when first read, recording what to show about sequence */
typedef struct
{
- gboolean sequenceExpectedCorrect;
- guint16 sequenceExpected;
- guint32 previousFrameNum;
- guint32 nextFrameNum;
+ gboolean sequenceExpectedCorrect;
+ guint16 sequenceExpected;
+ guint32 previousFrameNum;
+ guint32 nextFrameNum;
- guint16 firstSN;
- guint16 lastSN;
+ guint16 firstSN;
+ guint16 lastSN;
enum { SN_OK, SN_Repeated, SN_MAC_Retx, SN_Retx, SN_Missing} state;
} pdcp_sequence_report_in_frame;
@@ -562,12 +563,12 @@ static void checkChannelSequenceInfo(packet_info *pinfo, tvbuff_t *tvb,
proto_tree *tree)
{
pdcp_channel_hash_key channel_key;
- pdcp_channel_hash_key *p_channel_key;
- pdcp_channel_status *p_channel_status;
- pdcp_sequence_report_in_frame *p_report_in_frame = NULL;
- gboolean createdChannel = FALSE;
- guint16 expectedSequenceNumber = 0;
- guint16 snLimit = 0;
+ pdcp_channel_hash_key *p_channel_key;
+ pdcp_channel_status *p_channel_status;
+ pdcp_sequence_report_in_frame *p_report_in_frame = NULL;
+ gboolean createdChannel = FALSE;
+ guint16 expectedSequenceNumber = 0;
+ guint16 snLimit = 0;
/* If find stat_report_in_frame already, use that and get out */
if (pinfo->fd->flags.visited) {
@@ -635,6 +636,9 @@ static void checkChannelSequenceInfo(packet_info *pinfo, tvbuff_t *tvb,
if (!createdChannel) {
expectedSequenceNumber = (p_channel_status->previousSequenceNumber + 1) % snLimit;
}
+ else {
+ expectedSequenceNumber = sequenceNumber;
+ }
/* Set report for this frame */
/* For PDCP, sequence number is always expectedSequence number */
@@ -764,9 +768,9 @@ static int dissect_pdcp_dynamic_chain(proto_tree *tree,
if (p_pdcp_info->rohc_ip_version == 4) {
proto_tree *dynamic_ipv4_tree;
proto_item *root_ti;
- int tree_start_offset = offset;
- guint8 tos, ttl, rnd, nbo;
- guint16 id;
+ int tree_start_offset = offset;
+ guint8 tos, ttl, rnd, nbo;
+ guint16 id;
/* Create dynamic IPv4 subtree */
root_ti = proto_tree_add_item(tree, hf_pdcp_lte_rohc_dynamic_ipv4, tvb, offset, -1, ENC_NA);
@@ -971,8 +975,8 @@ static int dissect_pdcp_ir_packet(proto_tree *tree,
struct pdcp_lte_info *p_pdcp_info,
packet_info *pinfo)
{
- unsigned char dynamic_chain_present;
- rohc_info *p_rohc_info;
+ unsigned char dynamic_chain_present;
+ rohc_info *p_rohc_info;
col_append_str(pinfo->cinfo, COL_INFO, " IR");
proto_item_append_text(root_item, " (IR)");
@@ -1032,8 +1036,8 @@ static int dissect_pdcp_ir_packet(proto_tree *tree,
/* Add summary to root item */
proto_item_append_text(root_ti, " (prot=%s: %s -> %s)",
val_to_str_const(protocol, ip_protocol_vals, "Unknown"),
- (char*)get_hostname(source),
- (char*)get_hostname(dest));
+ get_hostname(source),
+ get_hostname(dest));
}
/* UDP static part. TODO: also check protocol from last part!? */
@@ -1131,12 +1135,12 @@ static int dissect_pdcp_feedback_feedback2(proto_tree *tree,
packet_info *pinfo)
{
proto_item *ti;
- guint8 ack_type;
- guint8 mode;
- guint8 first_octet;
- guint16 sn;
- const char * full_mode_name;
- int size_remaining;
+ guint8 ack_type;
+ guint8 mode;
+ guint8 first_octet;
+ guint16 sn;
+ const char *full_mode_name;
+ int size_remaining;
proto_item_append_text(item, " (type 2)");
@@ -1246,8 +1250,8 @@ static int dissect_pdcp_feedback_packet(proto_tree *tree,
struct pdcp_lte_info *p_pdcp_info,
packet_info *pinfo)
{
- guint8 code;
- guint8 size;
+ guint8 code;
+ guint8 size;
proto_item *ti;
proto_item *feedback_ti;
proto_tree *feedback_tree;
@@ -1859,12 +1863,12 @@ static gboolean global_pdcp_lte_heur = FALSE;
static gboolean dissect_pdcp_lte_heur(tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree)
{
- gint offset = 0;
+ gint offset = 0;
struct pdcp_lte_info *p_pdcp_lte_info;
tvbuff_t *pdcp_tvb;
- guint8 tag = 0;
- gboolean infoAlreadySet = FALSE;
- gboolean seqnumLengthTagPresent = FALSE;
+ guint8 tag = 0;
+ gboolean infoAlreadySet = FALSE;
+ gboolean seqnumLengthTagPresent = FALSE;
/* This is a heuristic dissector, which means we get all the UDP
* traffic not sent to a known dissector and not claimed by
@@ -1995,20 +1999,20 @@ static gboolean dissect_pdcp_lte_heur(tvbuff_t *tvb, packet_info *pinfo,
/* Main dissection function. */
static void dissect_pdcp_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- const char *mode;
- proto_tree *pdcp_tree = NULL;
- proto_item *root_ti = NULL;
- gint offset = 0;
- gint rohc_offset;
- struct pdcp_lte_info *p_pdcp_info;
- rohc_info *p_rohc_info = NULL;
- tvbuff_t *rohc_tvb = NULL;
+ const char *mode;
+ proto_tree *pdcp_tree = NULL;
+ proto_item *root_ti = NULL;
+ gint offset = 0;
+ gint rohc_offset;
+ struct pdcp_lte_info *p_pdcp_info;
+ rohc_info *p_rohc_info = NULL;
+ tvbuff_t *rohc_tvb = NULL;
#if 0
- proto_tree *rohc_tree = NULL;*/
- proto_item *rohc_ti = NULL;
- guint8 base_header_byte;
- gboolean udp_checksum_needed = TRUE;
- gboolean ip_id_needed = TRUE;
+ proto_tree *rohc_tree = NULL;
+ proto_item *rohc_ti = NULL;
+ guint8 base_header_byte;
+ gboolean udp_checksum_needed = TRUE;
+ gboolean ip_id_needed = TRUE;
#endif
@@ -2022,7 +2026,7 @@ static void dissect_pdcp_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
col_set_writable(pinfo->cinfo, FALSE);
}
else {
- /* TODO: won't help with multiple PDCP PDUs / frame */
+ /* TODO: won't help with multiple PDCP-or-traffic PDUs / frame... */
col_clear(pinfo->cinfo, COL_INFO);
col_set_writable(pinfo->cinfo, TRUE);
}
@@ -2213,8 +2217,8 @@ static void dissect_pdcp_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
/* .. look for error (0) in each bit */
for ( ; bit_offset < 8; bit_offset++) {
if ((tvb_get_guint8(tvb, offset) >> (7-bit_offset) & 0x1) == 0) {
- proto_tree_add_boolean_format_value(bitmap_tree, hf_pdcp_lte_bitmap_not_received, tvb, offset, 1, TRUE,
- " (SN=%u)", sn);
+ proto_tree_add_boolean_bits_format_value(bitmap_tree, hf_pdcp_lte_bitmap_not_received, tvb, offset*8 + bit_offset,
+ 1, 0, " (SN=%u)", sn);
not_received++;
}
sn = (sn + 1) % 4096;
@@ -2223,7 +2227,7 @@ static void dissect_pdcp_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
}
if (bitmap_ti != NULL) {
- proto_item_append_text(bitmap_ti, " (not-received=%u)", not_received);
+ proto_item_append_text(bitmap_ti, " (%u SNs not received)", not_received);
}
write_pdu_label_and_info(root_ti, pinfo, " Status Report (fms=%u) not-received=%u",
fms, not_received);
@@ -2265,7 +2269,7 @@ static void dissect_pdcp_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
}
break;
}
-
+
if (do_analysis) {
checkChannelSequenceInfo(pinfo, tvb, p_pdcp_info,
(guint16)seqnum, pdcp_tree);
@@ -2386,6 +2390,9 @@ static void dissect_pdcp_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
if (global_pdcp_lte_layer_to_show != ShowTrafficLayer) {
col_set_writable(pinfo->cinfo, FALSE);
}
+ else {
+ col_clear(pinfo->cinfo, COL_INFO);
+ }
call_dissector(rohc_handle, rohc_tvb, pinfo, tree);
@@ -2583,8 +2590,7 @@ static void dissect_pdcp_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
/* Initializes the hash tables each time a new
* file is loaded or re-loaded in wireshark */
-static void
-pdcp_lte_init_protocol(void)
+static void pdcp_lte_init_protocol(void)
{
/* Destroy any existing hashes. */
if (pdcp_sequence_analysis_channel_hash) {
@@ -2823,6 +2829,7 @@ void proto_register_pdcp(void)
}
},
+#if 0
{ &hf_pdcp_lte_rohc,
{ "ROHC Message",
"pdcp-lte.rohc", FT_NONE, BASE_NONE, NULL, 0,
@@ -3229,6 +3236,7 @@ void proto_register_pdcp(void)
NULL, HFILL
}
},
+#endif /* rohc fields that aren't used anymore */
};
@@ -3275,6 +3283,9 @@ void proto_register_pdcp(void)
pdcp_lte_module = prefs_register_protocol(proto_pdcp_lte, NULL);
+ /* Obsolete preferences */
+ prefs_register_obsolete_preference(pdcp_lte_module, "show_feedback_option_tag_length");
+
/* Dissect uncompressed user-plane data as IP */
prefs_register_bool_preference(pdcp_lte_module, "show_user_plane_as_ip",
"Show uncompressed User-Plane data as IP",
@@ -3299,11 +3310,6 @@ void proto_register_pdcp(void)
"Attempt to decode ROHC data",
&global_pdcp_dissect_rohc);
- prefs_register_bool_preference(pdcp_lte_module, "show_feedback_option_tag_length",
- "Show ROHC feedback option tag & length",
- "Show ROHC feedback option tag & length",
- &global_pdcp_show_feedback_option_tag_length);
-
prefs_register_bool_preference(pdcp_lte_module, "heuristic_pdcp_lte_over_udp",
"Try Heuristic LTE-PDCP over UDP framing",
"When enabled, use heuristic dissector to find PDCP-LTE frames sent with "
@@ -3315,7 +3321,6 @@ void proto_register_pdcp(void)
"Can show RLC, PDCP or Traffic layer info in Info column",
&global_pdcp_lte_layer_to_show, show_info_col_vals, FALSE);
-
register_init_routine(&pdcp_lte_init_protocol);
}
@@ -3324,7 +3329,7 @@ void proto_reg_handoff_pdcp_lte(void)
/* Add as a heuristic UDP dissector */
heur_dissector_add("udp", dissect_pdcp_lte_heur, proto_pdcp_lte);
- ip_handle = find_dissector("ip");
+ ip_handle = find_dissector("ip");
ipv6_handle = find_dissector("ipv6");
rohc_handle = find_dissector("rohc");
data_handle = find_dissector("data");
diff --git a/epan/dissectors/packet-peekremote.c b/epan/dissectors/packet-peekremote.c
new file mode 100644
index 0000000000..b4779155ce
--- /dev/null
+++ b/epan/dissectors/packet-peekremote.c
@@ -0,0 +1,156 @@
+/* packet-peekremote.c
+ *
+ * Routines for the disassembly of packets sent from Cisco WLAN
+ * Controllers, possibly other Cisco access points, and possibly
+ * other devices such as Aruba access points. See
+ *
+ * http://www.wildpackets.com/elements/omnipeek/OmniPeek_UserGuide.pdf
+ *
+ * which speaks of Aruba access points supporting remote capture and
+ * defaulting to port 5000 for this, and also speaks of Cisco access
+ * points supporting remote capture without any reference to a port
+ * number. The two types of remote capture are described separately;
+ * there's no indication of whether they use the same protocol for
+ * streaming packets but perhaps other protocols for, for example,
+ * discovery and setup, or whether they use different protocols
+ * for streaming packets.
+ *
+ * Tested with frames captured from a Cisco WCS.
+ *
+ * $Id$
+ *
+ * Copyright 2007 Joerg Mayer (see AUTHORS file)
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/*
+ * TODO: Decode meta information.
+ * Check on fillup bytes in capture (fcs sometimes wrong)
+ * From:
+ * http://www.cisco.com/univercd/cc/td/doc/product/wireless/pahcont/oweb.pdf
+ * "It will include information on timestamp, signal strength, packet size
+ * and so on"
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+#include <epan/packet.h>
+
+static int proto_peekremote = -1;
+static gint hf_peekremote_unknown1 = -1;
+static gint hf_peekremote_unknown2 = -1;
+static gint hf_peekremote_unknown3 = -1;
+static gint hf_peekremote_unknown4 = -1;
+static gint hf_peekremote_unknown5 = -1;
+static gint hf_peekremote_unknown6 = -1;
+static gint hf_peekremote_channel = -1;
+static gint hf_peekremote_timestamp = -1;
+static gint ett_peekremote = -1;
+
+static dissector_handle_t ieee80211_handle;
+
+static void
+dissect_peekremote(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ tvbuff_t *next_tvb;
+ proto_tree *peekremote_tree = NULL;
+ proto_item *ti = NULL;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "AIROPEEK");
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_peekremote, tvb, 0, -1, ENC_NA);
+ peekremote_tree = proto_item_add_subtree(ti, ett_peekremote);
+
+ proto_tree_add_item(peekremote_tree, hf_peekremote_unknown1, tvb, 0, 2, ENC_NA);
+ proto_tree_add_item(peekremote_tree, hf_peekremote_unknown2, tvb, 2, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(peekremote_tree, hf_peekremote_unknown3, tvb, 4, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(peekremote_tree, hf_peekremote_unknown4, tvb, 6, 5, ENC_NA);
+ proto_tree_add_item(peekremote_tree, hf_peekremote_timestamp, tvb, 11, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(peekremote_tree, hf_peekremote_unknown5, tvb, 15, 2, ENC_NA);
+ proto_tree_add_item(peekremote_tree, hf_peekremote_channel, tvb, 17, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(peekremote_tree, hf_peekremote_unknown6, tvb, 18, 2, ENC_NA);
+ }
+ next_tvb = tvb_new_subset_remaining(tvb, 20);
+ pinfo->pseudo_header->ieee_802_11.fcs_len = 4;
+ call_dissector(ieee80211_handle, next_tvb, pinfo, tree);
+}
+
+void
+proto_register_peekremote(void)
+{
+ static hf_register_info hf[] = {
+ { &hf_peekremote_unknown1,
+ { "Unknown1", "peekremote.unknown1", FT_BYTES, BASE_NONE, NULL,
+ 0x0, NULL, HFILL }},
+
+ { &hf_peekremote_unknown2,
+ { "caplength1", "peekremote.unknown2", FT_UINT16, BASE_DEC, NULL,
+ 0x0, NULL, HFILL }},
+
+ { &hf_peekremote_unknown3,
+ { "caplength2", "peekremote.unknown3", FT_UINT16, BASE_DEC, NULL,
+ 0x0, NULL, HFILL }},
+
+ { &hf_peekremote_unknown4,
+ { "Unknown4", "peekremote.unknown4", FT_BYTES, BASE_NONE, NULL,
+ 0x0, NULL, HFILL }},
+
+ { &hf_peekremote_unknown5,
+ { "Unknown5", "peekremote.unknown5", FT_BYTES, BASE_NONE, NULL,
+ 0x0, NULL, HFILL }},
+
+ { &hf_peekremote_unknown6,
+ { "Unknown6", "peekremote.unknown6", FT_BYTES, BASE_NONE, NULL,
+ 0x0, NULL, HFILL }},
+
+ { &hf_peekremote_timestamp,
+ { "Timestamp?", "peekremote.timestamp", FT_UINT32, BASE_DEC, NULL,
+ 0x0, NULL, HFILL }},
+
+ { &hf_peekremote_channel,
+ { "Channel", "peekremote.channel", FT_UINT8, BASE_DEC, NULL,
+ 0x0, NULL, HFILL }},
+
+ };
+ static gint *ett[] = {
+ &ett_peekremote,
+ };
+
+ proto_peekremote = proto_register_protocol(
+ "AiroPeek/OmniPeek encapsulated IEEE 802.11", "PEEKREMOTE", "peekremote");
+ proto_register_field_array(proto_peekremote, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+}
+
+void
+proto_reg_handoff_peekremote(void)
+{
+ dissector_handle_t peekremote_handle;
+
+ ieee80211_handle = find_dissector("wlan_datapad");
+
+ peekremote_handle = create_dissector_handle(dissect_peekremote, proto_peekremote);
+ dissector_add_uint("udp.port", 5000, peekremote_handle);
+}
diff --git a/epan/dissectors/packet-per.c b/epan/dissectors/packet-per.c
index 2ac545ccee..3bc11b4a7b 100644
--- a/epan/dissectors/packet-per.c
+++ b/epan/dissectors/packet-per.c
@@ -32,13 +32,12 @@ proper helper routines
# include "config.h"
#endif
-#include <glib.h>
-#include <epan/packet.h>
-
-#include <stdlib.h>
#include <string.h>
#include <math.h>
+#include <glib.h>
+
+#include <epan/packet.h>
#include <epan/oids.h>
#include <epan/to_str.h>
#include <epan/prefs.h>
@@ -207,7 +206,7 @@ dissect_per_open_type_internal(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx,
actx->created_item = proto_tree_add_int(tree, hf_index, val_tvb, 0, type_length, type_length);
proto_item_append_text(actx->created_item, plurality(type_length, " octet", " octets"));
} else {
- actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, type_length, FALSE);
+ actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, type_length, ENC_BIG_ENDIAN);
}
subtree = proto_item_add_subtree(actx->created_item, ett_per_open_type);
}
@@ -447,7 +446,7 @@ dissect_per_GeneralString(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto
offset=dissect_per_length_determinant(tvb, offset, actx, tree, hf_per_GeneralString_length, &length);
- proto_tree_add_item(tree, hf_index, tvb, offset>>3, length, FALSE);
+ proto_tree_add_item(tree, hf_index, tvb, offset>>3, length, ENC_BIG_ENDIAN);
offset+=length*8;
@@ -459,7 +458,7 @@ guint32
dissect_per_null(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
proto_item *ti_tmp;
- ti_tmp = proto_tree_add_item(tree, hf_index, tvb, offset>>3, 1, FALSE);
+ ti_tmp = proto_tree_add_item(tree, hf_index, tvb, offset>>3, 1, ENC_BIG_ENDIAN);
proto_item_append_text(ti_tmp, ": NULL");
return offset;
@@ -507,7 +506,7 @@ DEBUG_ENTRY("dissect_per_sequence_of");
item = proto_tree_add_uint(parent_tree, hf_index, tvb, old_offset>>3, 0, length);
proto_item_append_text(item, (length==1)?" item":" items");
} else {
- item=proto_tree_add_item(parent_tree, hf_index, tvb, old_offset>>3, 0, FALSE);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, old_offset>>3, 0, ENC_BIG_ENDIAN);
}
tree=proto_item_add_subtree(item, ett_index);
@@ -519,17 +518,6 @@ DEBUG_ENTRY("dissect_per_sequence_of");
}
-/* dissect a constrained IA5String that consists of the full ASCII set,
- i.e. no FROM stuff limiting the alphabet
-*/
-guint32
-dissect_per_IA5String(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index, int min_len, int max_len, gboolean has_extension)
-{
- offset=dissect_per_octet_string(tvb, offset, actx, tree, hf_index, min_len, max_len, has_extension, NULL);
-
- return offset;
-}
-
/* XXX we don't do >64k length strings yet */
static guint32
dissect_per_restricted_character_string_sorted(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index, int min_len, int max_len, gboolean has_extension _U_,const char *alphabet, int alphabet_length, tvbuff_t **value_tvb)
@@ -657,7 +645,8 @@ DEBUG_ENTRY("dissect_per_restricted_character_string");
/* ALIGNED PER does not do any remapping of chars if
bitsperchar is 8
*/
- if(bits_per_char==8){
+ /* If alphabet is not provided, do not do any remapping either */
+ if((bits_per_char==8) || (alphabet==NULL)){
buf[char_pos]=val;
} else {
if (val < alphabet_length){
@@ -714,6 +703,18 @@ dissect_per_restricted_character_string(tvbuff_t *tvb, guint32 offset, asn1_ctx_
return dissect_per_restricted_character_string_sorted(tvb, offset, actx, tree, hf_index, min_len, max_len, has_extension, alphabet_ptr, alphabet_length, value_tvb);
}
+/* dissect a constrained IA5String that consists of the full ASCII set,
+ i.e. no FROM stuff limiting the alphabet
+*/
+guint32
+dissect_per_IA5String(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index, int min_len, int max_len, gboolean has_extension)
+{
+ offset=dissect_per_restricted_character_string_sorted(tvb, offset, actx, tree, hf_index, min_len, max_len, has_extension,
+ NULL, 128, NULL);
+
+ return offset;
+}
+
guint32
dissect_per_NumericString(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index, int min_len, int max_len, gboolean has_extension)
{
@@ -771,7 +772,7 @@ dissect_per_BMPString(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tre
length=1024;
}
- str = tvb_get_ephemeral_unicode_string(tvb, offset>>3, length, ENC_BIG_ENDIAN);
+ str = tvb_get_ephemeral_unicode_string(tvb, offset>>3, length*2, ENC_BIG_ENDIAN);
proto_tree_add_string(tree, hf_index, tvb, offset>>3, length*2, str);
@@ -842,7 +843,7 @@ call_sohelper:
item = proto_tree_add_uint(parent_tree, hf_index, tvb, offset>>3, 0, length);
proto_item_append_text(item, (length==1)?" item":" items");
} else {
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset>>3, 0, FALSE);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset>>3, 0, ENC_BIG_ENDIAN);
}
tree=proto_item_add_subtree(item, ett_index);
per_check_items(length, min_len, max_len, actx, item);
@@ -906,7 +907,7 @@ DEBUG_ENTRY("dissect_per_object_identifier");
hfi = proto_registrar_get_nth(hf_index);
if (hfi->type == FT_OID) {
- actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, length, FALSE);
+ actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, length, ENC_BIG_ENDIAN);
} else if (IS_FT_STRING(hfi->type)) {
str = oid_encoded2string(tvb_get_ptr(val_tvb, 0, length), length);
actx->created_item = proto_tree_add_string(tree, hf_index, val_tvb, 0, length, str);
@@ -944,7 +945,7 @@ dissect_per_object_identifier_str(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *act
/* this function reads a single bit */
guint32
-dissect_per_boolean(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index, gboolean *bool_val)
+dissect_per_boolean(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index, gboolean *bool_val)
{
guint8 ch, mask;
gboolean value;
@@ -1163,7 +1164,6 @@ DEBUG_ENTRY("dissect_per_constrained_integer");
}
}
- num_bits=0;
val=0;
timeval.secs=val; timeval.nsecs=0;
/* 10.5.4 If "range" has the value 1, then the result of the encoding shall be an empty bit-field (no bits).*/
@@ -1241,7 +1241,6 @@ DEBUG_ENTRY("dissect_per_constrained_integer");
proto_tree_add_text(tree, tvb, val_start,val_length,"Range = %u Bitfield length %u, %s",range, num_bits, str);
} else if(range==256){
/* 10.5.7.2 */
- num_bits=8;
/* in the aligned case, align to byte boundary */
BYTE_ALIGN_OFFSET(offset);
@@ -1252,7 +1251,6 @@ DEBUG_ENTRY("dissect_per_constrained_integer");
val+=min;
} else if(range<=65536){
/* 10.5.7.3 */
- num_bits=16;
/* in the aligned case, align to byte boundary */
BYTE_ALIGN_OFFSET(offset);
@@ -1359,7 +1357,6 @@ DEBUG_ENTRY("dissect_per_constrained_integer_64b");
}
}
- num_bits=0;
val=0;
timeval.secs=0; timeval.nsecs=0;
/* 10.5.4 If "range" has the value 1, then the result of the encoding shall be an empty bit-field (no bits).*/
@@ -1437,7 +1434,6 @@ DEBUG_ENTRY("dissect_per_constrained_integer_64b");
proto_tree_add_text(tree, tvb, val_start,val_length,"Range = (%" G_GINT64_MODIFIER "u) Bitfield length %u, %s",range, num_bits, str);
} else if(range==256){
/* 10.5.7.2 */
- num_bits=8;
/* in the aligned case, align to byte boundary */
BYTE_ALIGN_OFFSET(offset);
@@ -1448,7 +1444,6 @@ DEBUG_ENTRY("dissect_per_constrained_integer_64b");
val+=min;
} else if(range<=65536){
/* 10.5.7.3 */
- num_bits=16;
/* in the aligned case, align to byte boundary */
BYTE_ALIGN_OFFSET(offset);
@@ -1748,7 +1743,7 @@ dissect_per_sequence(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree
DEBUG_ENTRY("dissect_per_sequence");
- item=proto_tree_add_item(parent_tree, hf_index, tvb, offset>>3, 0, FALSE);
+ item=proto_tree_add_item(parent_tree, hf_index, tvb, offset>>3, 0, ENC_BIG_ENDIAN);
tree=proto_item_add_subtree(item, ett_index);
@@ -1984,7 +1979,7 @@ static tvbuff_t *dissect_per_bit_string_display(tvbuff_t *tvb, guint32 offset, a
add_new_data_source(actx->pinfo, out_tvb, "Bitstring tvb");
if (hfi) {
- actx->created_item = proto_tree_add_item(tree, hf_index, out_tvb, 0, -1, FALSE);
+ actx->created_item = proto_tree_add_item(tree, hf_index, out_tvb, 0, -1, ENC_BIG_ENDIAN);
proto_item_append_text(actx->created_item, " [bit length %u", length);
if (length%8) {
pad_length = 8-(length%8);
@@ -2175,7 +2170,7 @@ guint32
dissect_per_octet_string(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index, int min_len, int max_len, gboolean has_extension, tvbuff_t **value_tvb)
{
gint val_start = 0, val_length;
- guint32 length;
+ guint32 length = 0;
header_field_info *hfi;
tvbuff_t *out_tvb = NULL;
@@ -2253,10 +2248,10 @@ DEBUG_ENTRY("dissect_per_octet_string");
proto_item_append_text(actx->created_item, plurality(val_length, " octet", " octets"));
} else {
if(out_tvb){
- actx->created_item = proto_tree_add_item(tree, hf_index, out_tvb, 0, val_length, FALSE);
+ actx->created_item = proto_tree_add_item(tree, hf_index, out_tvb, 0, val_length, ENC_BIG_ENDIAN);
}else{
/* Length = 0 */
- actx->created_item = proto_tree_add_item(tree, hf_index, tvb, val_start, val_length, FALSE);
+ actx->created_item = proto_tree_add_item(tree, hf_index, tvb, val_start, val_length, ENC_BIG_ENDIAN);
}
}
}
@@ -2354,7 +2349,7 @@ gboolean get_size_constraint_from_stack(asn1_ctx_t *actx, const gchar *name, int
/* NOTE: This sequence type differs from that in ITU-T Rec. X.680 | ISO/IEC 8824-1 for historical reasons. */
static int
-dissect_per_T_direct_reference(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_per_T_direct_reference(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) {
offset = dissect_per_object_identifier_str(tvb, offset, actx, tree, hf_index, &actx->external.direct_reference);
actx->external.direct_ref_present = TRUE;
@@ -2374,7 +2369,7 @@ dissect_per_T_indirect_reference(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
static int
-dissect_per_T_data_value_descriptor(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_per_T_data_value_descriptor(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) {
offset = dissect_per_object_descriptor(tvb, offset, actx, tree, hf_index, &actx->external.data_value_descriptor);
actx->external.data_value_descr_present = TRUE;
@@ -2393,7 +2388,7 @@ dissect_per_T_single_ASN1_type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
static int
-dissect_per_T_octet_aligned(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_per_T_octet_aligned(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) {
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
NO_BOUND, NO_BOUND, FALSE, &actx->external.octet_aligned);
@@ -2408,7 +2403,7 @@ dissect_per_T_octet_aligned(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static int
-dissect_per_T_arbitrary(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_per_T_arbitrary(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) {
offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
NO_BOUND, NO_BOUND, FALSE, &actx->external.arbitrary);
@@ -2436,7 +2431,7 @@ static const per_choice_t External_encoding_choice[] = {
};
static int
-dissect_per_External_encoding(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_per_External_encoding(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_per_External_encoding, External_encoding_choice,
&actx->external.encoding);
diff --git a/epan/dissectors/packet-pgsql.c b/epan/dissectors/packet-pgsql.c
index f5450bdd24..f3dc798b22 100644
--- a/epan/dissectors/packet-pgsql.c
+++ b/epan/dissectors/packet-pgsql.c
@@ -385,7 +385,6 @@ static void dissect_pgsql_fe_msg(guchar type, guint length, tvbuff_t *tvb,
/* Describe, Close */
case 'D':
case 'C':
- i = 0;
c = tvb_get_guint8(tvb, n);
if (c == 'P')
i = hf_portal;
diff --git a/epan/dissectors/packet-pkix1explicit.c b/epan/dissectors/packet-pkix1explicit.c
index 13ccef2d85..3d6d7d5e97 100644
--- a/epan/dissectors/packet-pkix1explicit.c
+++ b/epan/dissectors/packet-pkix1explicit.c
@@ -559,9 +559,9 @@ dissect_pkix1explicit_T_addressFamily(gboolean implicit_tag _U_, tvbuff_t *tvb _
if (!parameter_tvb)
return offset;
subtree = proto_item_add_subtree(actx->created_item, ett_pkix1explicit_addressFamily);
- proto_tree_add_item(subtree, hf_pkix1explicit_addressFamily_afn, parameter_tvb, 0, 2, FALSE);
+ proto_tree_add_item(subtree, hf_pkix1explicit_addressFamily_afn, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
if(tvb_length(parameter_tvb)>2)
- proto_tree_add_item(subtree, hf_pkix1explicit_addressFamily_safi, parameter_tvb, 0, 2, FALSE);
+ proto_tree_add_item(subtree, hf_pkix1explicit_addressFamily_safi, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
@@ -1056,6 +1056,7 @@ void proto_register_pkix1explicit(void) {
/*--- proto_reg_handoff_pkix1explicit -------------------------------------------*/
void proto_reg_handoff_pkix1explicit(void) {
oid_add_from_string("id-pkix","1.3.6.1.5.5.7");
+ oid_add_from_string("id-dsa-with-sha1","1.2.840.10040.4.3");
/*--- Included file: packet-pkix1explicit-dis-tab.c ---*/
#line 1 "../../asn1/pkix1explicit/packet-pkix1explicit-dis-tab.c"
@@ -1066,6 +1067,6 @@ void proto_reg_handoff_pkix1explicit(void) {
/*--- End of included file: packet-pkix1explicit-dis-tab.c ---*/
-#line 144 "../../asn1/pkix1explicit/packet-pkix1explicit-template.c"
+#line 145 "../../asn1/pkix1explicit/packet-pkix1explicit-template.c"
}
diff --git a/epan/dissectors/packet-pktgen.c b/epan/dissectors/packet-pktgen.c
index 6f65874046..553dc9aa0f 100644
--- a/epan/dissectors/packet-pktgen.c
+++ b/epan/dissectors/packet-pktgen.c
@@ -33,10 +33,6 @@
# include "config.h"
#endif
-#if 0
-#include <stdlib.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-pnrp.c b/epan/dissectors/packet-pnrp.c
index 817d41517f..3ebb6cb678 100644
--- a/epan/dissectors/packet-pnrp.c
+++ b/epan/dissectors/packet-pnrp.c
@@ -685,7 +685,7 @@ static int dissect_pnrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Entry Length: Must be 0x0002 */
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_classifier_entryLength, tvb, offset + 10, 2, ENC_BIG_ENDIAN);
/* The actual classifier String */
- proto_tree_add_text(pnrp_message_tree, tvb, offset + 12, tvb_get_ntohs(tvb,offset+6)-8, "Classifier: %s",tvb_get_ephemeral_unicode_string(tvb, offset + 12, (tvb_get_ntohs(tvb,offset+6)-8)/2, ENC_BIG_ENDIAN));
+ proto_tree_add_text(pnrp_message_tree, tvb, offset + 12, tvb_get_ntohs(tvb,offset+6)-8, "Classifier: %s",tvb_get_ephemeral_unicode_string(tvb, offset + 12, tvb_get_ntohs(tvb,offset+6)-8, ENC_BIG_ENDIAN));
}
/* There might be padding, so fill up to the next byte */
@@ -1155,10 +1155,10 @@ void proto_register_pnrp(void)
NULL, HFILL }},
/* Ack Flags */
{ &hf_pnrp_message_ack_flags_reserved,
- { "Reserved", "pnrp.segment.ack.flags.reserved", FT_BOOLEAN, BASE_DEC, NULL, 0x0,
+ { "Reserved", "pnrp.segment.ack.flags.reserved", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_pnrp_message_ack_flags_Nbit,
- { "(N)ot found Bit", "pnrp.segment.ack.flags.Nbit", FT_BOOLEAN, BASE_DEC, NULL, 0x0,
+ { "(N)ot found Bit", "pnrp.segment.ack.flags.Nbit", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
/* Authority Flags */
{ &hf_pnrp_message_authority_flags,
@@ -1184,10 +1184,10 @@ void proto_register_pnrp(void)
NULL, HFILL }},
/* Flood Control Flags */
{ &hf_pnrp_message_flood_flags_reserved1,
- { "Reserved", "pnrp.segment.flood.flags.reserved", FT_BOOLEAN, BASE_DEC, NULL, 0x0,
+ { "Reserved", "pnrp.segment.flood.flags.reserved", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_pnrp_message_flood_flags_Dbit,
- { "(D)on't send ACK", "pnrp.segment.flood.flags.Dbit", FT_BOOLEAN, BASE_DEC, NULL, 0x0,
+ { "(D)on't send ACK", "pnrp.segment.flood.flags.Dbit", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
/* Split Controls */
{ &hf_pnrp_message_splitControls_authorityBuffer,
@@ -1249,7 +1249,7 @@ void proto_register_pnrp(void)
{ "Service Location", "pnrp.encodedCPA.serviceLocation", FT_BYTES,BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_pnrp_encodedCPA_binaryAuthority,
- { "Binary Authoriy", "pnrp.encodedCPA.binaryAuthority", FT_BYTES,BASE_NONE, NULL, 0x0,
+ { "Binary Authority", "pnrp.encodedCPA.binaryAuthority", FT_BYTES,BASE_NONE, NULL, 0x0,
"SHA-1 Hash of PublicKey Data field", HFILL }},
{ &hf_pnrp_encodedCPA_classifiertHash,
{ "Classifiert Hash", "pnrp.encodedCPA.classifierHash", FT_BYTES,BASE_NONE, NULL, 0x0,
diff --git a/epan/dissectors/packet-pop.c b/epan/dissectors/packet-pop.c
index 22897e1efb..0f7e832e66 100644
--- a/epan/dissectors/packet-pop.c
+++ b/epan/dissectors/packet-pop.c
@@ -72,9 +72,10 @@ static gint ett_pop_data_fragments = -1;
static dissector_handle_t data_handle;
static dissector_handle_t imf_handle = NULL;
+static dissector_handle_t ssl_handle = NULL;
-#define TCP_PORT_POP 110
-#define TCP_PORT_SSL_POP 995
+#define TCP_PORT_POP 110
+#define TCP_PORT_SSL_POP 995
/* desegmentation of POP command and response lines */
static gboolean pop_data_desegment = TRUE;
@@ -112,6 +113,8 @@ struct pop_data_val {
gboolean msg_request;
guint32 msg_read_len; /* Length of RETR message read so far */
guint32 msg_tot_len; /* Total length of RETR message */
+ gboolean stls_request; /* Received STLS request */
+ guint32 last_nontls_frame; /* last non-TLS frame; 0 if not known or no TLS */
};
@@ -140,24 +143,6 @@ dissect_pop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
col_set_str(pinfo->cinfo, COL_PROTOCOL, "POP");
- /*
- * Find the end of the first line.
- *
- * Note that "tvb_find_line_end()" will return a value that is
- * not longer than what's in the buffer, so the "tvb_get_ptr()"
- * call won't throw an exception.
- */
- linelen = tvb_find_line_end(tvb, offset, -1, &next_offset, FALSE);
- line = tvb_get_ptr(tvb, offset, linelen);
-
- if (pinfo->match_uint == pinfo->destport) {
- is_request = TRUE;
- is_continuation = FALSE;
- } else {
- is_request = FALSE;
- is_continuation = response_is_continuation(line);
- }
-
frame_data_p = p_get_proto_data(pinfo->fd, proto_pop);
if (!frame_data_p) {
@@ -177,6 +162,44 @@ dissect_pop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
}
+ /* Are we doing TLS? */
+ if (data_val->last_nontls_frame != 0 && pinfo->fd->num > data_val->last_nontls_frame) {
+ guint16 save_can_desegment;
+ guint32 save_last_nontls_frame;
+
+ /* This is TLS, not raw POP/IMF. TLS can desegment */
+ save_can_desegment = pinfo->can_desegment;
+ pinfo->can_desegment = pinfo->saved_can_desegment;
+
+ /* Make sure the SSL dissector will not be called again after decryption */
+ save_last_nontls_frame = data_val->last_nontls_frame;
+ data_val->last_nontls_frame = 0;
+
+ call_dissector(ssl_handle, tvb, pinfo, tree);
+
+ pinfo->can_desegment = save_can_desegment;
+ data_val->last_nontls_frame = save_last_nontls_frame;
+ return;
+ }
+
+ /*
+ * Find the end of the first line.
+ *
+ * Note that "tvb_find_line_end()" will return a value that is
+ * not longer than what's in the buffer, so the "tvb_get_ptr()"
+ * call won't throw an exception.
+ */
+ linelen = tvb_find_line_end(tvb, offset, -1, &next_offset, FALSE);
+ line = tvb_get_ptr(tvb, offset, linelen);
+
+ if (pinfo->match_uint == pinfo->destport) {
+ is_request = TRUE;
+ is_continuation = FALSE;
+ } else {
+ is_request = FALSE;
+ is_continuation = response_is_continuation(line);
+ }
+
if (check_col(pinfo->cinfo, COL_INFO)) {
/*
* Put the first line from the buffer into the summary
@@ -284,6 +307,10 @@ dissect_pop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
g_ascii_strncasecmp(line, "TOP", 3) == 0)
/* the next response will tell us how many bytes */
data_val->msg_request = TRUE;
+
+ if (g_ascii_strncasecmp(line, "STLS", 4) == 0) {
+ data_val->stls_request = TRUE;
+ }
} else {
if (data_val->msg_request) {
/* this is a response to a RETR or TOP command */
@@ -295,6 +322,14 @@ dissect_pop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
data_val->msg_request = FALSE;
}
+
+ if (data_val->stls_request) {
+ if (g_ascii_strncasecmp(line, "+OK ", 4) == 0) {
+ /* This is the last non-TLS frame. */
+ data_val->last_nontls_frame = pinfo->fd->num;
+ }
+ data_val->stls_request = FALSE;
+ }
}
}
@@ -462,4 +497,6 @@ proto_reg_handoff_pop(void)
/* find the IMF dissector */
imf_handle = find_dissector("imf");
+ /* find the SSL dissector */
+ ssl_handle = find_dissector("ssl");
}
diff --git a/epan/dissectors/packet-ppcap.c b/epan/dissectors/packet-ppcap.c
new file mode 100644
index 0000000000..dfef5e6125
--- /dev/null
+++ b/epan/dissectors/packet-ppcap.c
@@ -0,0 +1,589 @@
+/* packet-ppcap.c
+ * Copyright 2012, Ericsson AB
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <glib.h>
+#include <epan/packet.h>
+#include "packet-mtp3.h"
+
+#define INVALID_SSN 0xff
+
+static guint8 ssn;
+
+static dissector_handle_t ppcap_handle;
+static dissector_handle_t mtp3_handle; /* MTP3 handle */
+static dissector_handle_t tcap_handle; /* TCAP handle */
+static dissector_handle_t bssap_handle; /* BSSAP handle */
+static dissector_handle_t ranap_handle; /* RANAP handle */
+static dissector_handle_t h248_handle; /* H248 handle */
+static dissector_handle_t sip_handle; /* SIP handle */
+static dissector_handle_t sccp_handle; /* SCCP handle */
+static dissector_handle_t data_handle; /* DATA handle */
+
+static dissector_table_t sccp_ssn_dissector_table;
+
+static mtp3_addr_pc_t* mtp3_addr_opc;
+static mtp3_addr_pc_t* mtp3_addr_dpc;
+
+static gint ett_ppcap=-1;
+static gint ett_ppcap1=-1;
+static gint ett_ppcap_new=-1;
+
+static const value_string payload_tag_values[] = {
+{1, "Payload Type"},
+{2, "Payload Data"},
+{3, "Source Address"},
+{4, "Destination Address"},
+{256, "Info String"},
+{0, NULL},
+
+};
+
+static const value_string address_type_values[] = {
+{1, "SSN+SPC"},
+{2, "SPC"},
+{3, "IP Address"},
+{4, "Node Id"},
+{0, NULL},
+
+};
+
+/* Initialise the header fields */
+
+static int proto_ppcap= -1;
+static int hf_ppcap_length = -1;
+static int hf_ppcap_payload_type = -1;
+static int hf_ppcap_ssn = -1;
+static int hf_ppcap_spc = -1;
+static int hf_ppcap_ssn1 = -1;
+static int hf_ppcap_spc1 = -1;
+static int hf_ppcap_opc = -1;
+static int hf_ppcap_dpc = -1;
+static int hf_ppcap_source_nodeid = -1;
+static int hf_ppcap_destination_nodeid = -1;
+/*static int hf_ppcap_source_address_type = -1; */
+/*static int hf_ppcap_destination_address_type = -1; */
+static int hf_ppcap_address_type = -1;
+static int hf_ppcap_source_ip_address1 = -1;
+static int hf_ppcap_source_ip_address2 = -1;
+static int hf_ppcap_destination_ip_address1 = -1;
+static int hf_ppcap_destination_ip_address2 = -1;
+static int hf_ppcap_reserved = -1;
+static int hf_ppcap_destreserved = -1;
+static int hf_ppcap_info = -1;
+static int hf_ppcap_payload_data = -1;
+
+/* Initiliaze the subtree pointers*/
+
+void proto_reg_handoff_ppcap(void);
+
+/* PPCAP payload types */
+typedef enum {
+ PPCAP_UNKNOWN = 0,
+ PPCAP_MTP3 = 1,
+ PPCAP_TCAP = 2,
+ PPCAP_BSSAP = 3,
+ PPCAP_RANAP = 4,
+ PPCAP_H248 = 5,
+ PPCAP_SIP = 6,
+ PPCAP_SCCP = 7
+} payload_type_type;
+
+static int dissect_ppcap_payload_type(tvbuff_t *,proto_tree *,int,guint16, payload_type_type *);
+static int dissect_ppcap_source_address(tvbuff_t *,packet_info *,proto_tree *,int,guint16);
+static int dissect_ppcap_destination_address(tvbuff_t *,packet_info *,proto_tree *,int,guint16);
+static int dissect_ppcap_info_string(tvbuff_t *,proto_tree *,int,guint16);
+static int dissect_ppcap_payload_data(tvbuff_t *,packet_info *,proto_tree *,int,guint16, proto_tree *, payload_type_type);
+
+/*Dissecting the function PPCAP */
+
+static void
+dissect_ppcap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ proto_item *ti, *ti1;
+ proto_tree *ppcap_tree, *ppcap_tree1;
+ guint16 msg_type,msg_len;
+ int offset=0;
+ payload_type_type payload_type = PPCAP_UNKNOWN;
+
+ col_clear(pinfo->cinfo, COL_PROTOCOL);
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "PPCAP");
+
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ ti = proto_tree_add_item(tree, proto_ppcap, tvb, 0, -1, ENC_NA);
+ ppcap_tree = proto_item_add_subtree(ti, ett_ppcap);
+
+ while(tvb_length_remaining(tvb, offset)>0)
+ {
+ msg_type=tvb_get_ntohs(tvb, offset);
+ ti1=proto_tree_add_text(ppcap_tree, tvb, offset, 2,"%s", val_to_str(msg_type,payload_tag_values,"Unknown PPCAP message type (%u)"));
+ ppcap_tree1 = proto_item_add_subtree(ti1, ett_ppcap1);
+ offset = offset+2;
+ msg_len=tvb_get_ntohs(tvb, offset);
+ proto_tree_add_item( ppcap_tree1, hf_ppcap_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset = offset+2;
+ switch(msg_type){
+ case 1:
+ payload_type = PPCAP_UNKNOWN;
+ offset = dissect_ppcap_payload_type(tvb,ppcap_tree1,offset, msg_len, &payload_type);
+ break;
+ case 2:
+ offset = dissect_ppcap_payload_data(tvb,pinfo,ppcap_tree1,offset, msg_len, tree, payload_type);
+ break;
+ case 3:
+ offset = dissect_ppcap_source_address(tvb,pinfo,ppcap_tree1,offset, msg_len);
+ break;
+ case 4:
+ offset = dissect_ppcap_destination_address(tvb,pinfo,ppcap_tree1,offset, msg_len);
+ break;
+ case 256:
+ offset = dissect_ppcap_info_string(tvb,ppcap_tree1,offset, msg_len);
+ break;
+ }
+ }
+}
+
+
+/* Dissecting the function Payload type to compare the protocol type */
+
+/*
+ *******************************************************
+ * Payload Type *
+ * *
+ *******************************************************
+*/
+
+
+
+static int
+dissect_ppcap_payload_type(tvbuff_t *tvb,proto_tree * ppcap_tree1, int offset, guint16 msg_len, payload_type_type *payload_type)
+{
+ char *string;
+ string=tvb_get_ephemeral_string(tvb,offset,msg_len);
+
+ if(strcmp(string,"mtp3")==0){
+ *payload_type = PPCAP_MTP3;
+ }else if(strcmp(string,"tcap")==0){
+ *payload_type = PPCAP_TCAP;
+ }else if(strcmp(string,"bssap")==0){
+ *payload_type = PPCAP_BSSAP;
+ }else if(strcmp(string,"ranap")==0){
+ *payload_type = PPCAP_RANAP;
+ }else if(strcmp(string,"h248")==0){
+ *payload_type = PPCAP_H248;
+ }else if(strcmp(string,"sip")==0){
+ *payload_type = PPCAP_SIP;
+ }else if(strcmp(string,"sccp")==0){
+ *payload_type = PPCAP_SCCP;
+ }
+
+ proto_tree_add_item(ppcap_tree1, hf_ppcap_payload_type, tvb, offset, msg_len, ENC_BIG_ENDIAN|ENC_ASCII);
+
+ if(msg_len%4)
+ msg_len=msg_len+(4-(msg_len%4));
+ offset+=msg_len;
+ return offset;
+}
+
+/* Dissecting the function Source Address */
+
+/*
+
+ *******************************************************
+ * Reserved * Address Type *
+ * * *
+ *******************************************************
+ * Address Value *
+ * *
+ *******************************************************
+*/
+
+static int
+dissect_ppcap_source_address(tvbuff_t *tvb,packet_info *pinfo, proto_tree * ppcap_tree1, int offset, guint16 msg_len)
+{
+ int key1;
+ const guchar *src_addr;
+ /*guint32 src_addr1;*/
+ proto_tree_add_item(ppcap_tree1, hf_ppcap_reserved ,tvb, offset , 2 , ENC_BIG_ENDIAN);
+ offset+=2;
+
+ key1=tvb_get_ntohs(tvb, offset);
+ proto_tree_add_item(ppcap_tree1, hf_ppcap_address_type ,tvb, offset , 2 , ENC_BIG_ENDIAN);
+ offset+=2;
+
+ if(key1==1)
+ {
+ proto_tree_add_item(ppcap_tree1,hf_ppcap_ssn,tvb,offset,1,ENC_BIG_ENDIAN);
+ offset+=1;
+ proto_tree_add_item(ppcap_tree1,hf_ppcap_spc,tvb,offset,3,ENC_BIG_ENDIAN);
+ /*src_addr1 = (guint32 )tvb_get_ntoh24(tvb, offset);*/
+ mtp3_addr_opc = ep_alloc0(sizeof(mtp3_addr_pc_t));
+ mtp3_addr_opc->pc = (guint32 )tvb_get_ntoh24(tvb, offset);
+ mtp3_addr_opc->type = 1; /* ITU_STANDARD */
+ mtp3_addr_opc->ni = 0;
+ /*SET_ADDRESS(&pinfo->net_src, AT_SS7PC, sizeof(mtp3_addr_pc_t), (guint8 *) mtp3_addr_opc);*/
+ SET_ADDRESS(&pinfo->src, AT_SS7PC, sizeof(mtp3_addr_pc_t), (guint8 *) mtp3_addr_opc);
+ if(msg_len%4)
+ msg_len=msg_len+(4-(msg_len%4));
+
+ offset+=msg_len-1;
+ return offset;
+ }
+ else if(key1==2)
+ {
+ proto_tree_add_item(ppcap_tree1,hf_ppcap_opc,tvb,offset,msg_len,ENC_BIG_ENDIAN);
+
+ /*src_addr1 = (guint32 )tvb_get_ntoh24(tvb, offset);*/
+ mtp3_addr_opc = ep_alloc0(sizeof(mtp3_addr_pc_t));
+ mtp3_addr_opc->pc = tvb_get_ntohl(tvb, offset);
+ mtp3_addr_opc->type = 1; /* ITU_STANDARD */
+ mtp3_addr_opc->ni = 0;
+ SET_ADDRESS(&pinfo->src, AT_SS7PC, sizeof(mtp3_addr_pc_t), (guint8 *) mtp3_addr_opc);
+ /*src_addr = tvb_get_ptr(tvb, offset, 4);*/
+ /*SET_ADDRESS(&pinfo->net_src, AT_SS7PC, 4, src_addr);*/
+ /*SET_ADDRESS(&pinfo->src, AT_SS7PC, 4, src_addr);*/
+ }
+ else if(key1==3)
+ {
+ if(msg_len%4==0)
+ {
+
+ proto_tree_add_ipv4(ppcap_tree1,hf_ppcap_source_ip_address1 ,tvb,offset,msg_len, tvb_get_ipv4(tvb,offset));
+ src_addr = tvb_get_ptr(tvb, offset, 4);
+ SET_ADDRESS(&pinfo->net_src, AT_IPv4, 4, src_addr);
+ SET_ADDRESS(&pinfo->src, AT_IPv4, 4, src_addr);
+ }
+ else
+ {
+ struct e_in6_addr value;
+ tvb_get_ipv6(tvb, offset, &value);
+ proto_tree_add_ipv6(ppcap_tree1,hf_ppcap_source_ip_address2 ,tvb,offset,msg_len,(guint8*)&value);
+ src_addr = tvb_get_ptr(tvb, offset, 6);
+ SET_ADDRESS(&pinfo->net_src, AT_IPv6, 6, src_addr);
+ SET_ADDRESS(&pinfo->src, AT_IPv6, 6, src_addr);
+ }
+ }
+
+ else if(key1==4)
+
+ {
+ proto_tree_add_item(ppcap_tree1, hf_ppcap_source_nodeid, tvb, offset, msg_len, ENC_BIG_ENDIAN|ENC_ASCII);
+ src_addr = tvb_get_ptr(tvb, offset, msg_len);
+ SET_ADDRESS(&pinfo->net_src, AT_STRINGZ, msg_len, src_addr);
+ SET_ADDRESS(&pinfo->src, AT_STRINGZ, msg_len, src_addr);
+ }
+ if(msg_len%4)
+ msg_len=msg_len+(4-(msg_len%4));
+ offset+=msg_len;
+ return offset;
+}
+
+/* Dissecting the function Destination Address */
+
+/*
+ *******************************************************
+ * Reserved * Address Type *
+ * * *
+ *******************************************************
+ * Address Value *
+ * *
+ *******************************************************
+*/
+
+
+static int
+dissect_ppcap_destination_address(tvbuff_t *tvb,packet_info * pinfo, proto_tree * ppcap_tree1, int offset, guint16 msg_len )
+{
+ int key2;
+ const guchar *dst_addr;
+ /*guint32 dst_addr1;*/
+
+ proto_tree_add_item(ppcap_tree1, hf_ppcap_destreserved ,tvb, offset , 2 , ENC_BIG_ENDIAN);
+ offset+=2;
+
+ key2=tvb_get_ntohs(tvb, offset);
+ proto_tree_add_item(ppcap_tree1, hf_ppcap_address_type ,tvb, offset , 2 , ENC_BIG_ENDIAN);
+ offset+=2;
+
+ if(key2==1)
+ {
+ ssn=tvb_get_guint8(tvb,offset);
+ proto_tree_add_item(ppcap_tree1,hf_ppcap_ssn1,tvb,offset,1,ENC_BIG_ENDIAN);
+ offset+=1;
+
+ proto_tree_add_item(ppcap_tree1,hf_ppcap_spc1,tvb,offset,3,ENC_BIG_ENDIAN);
+
+ /*dst_addr1 = (guint32 )tvb_get_ntoh24(tvb, offset);*/
+ mtp3_addr_dpc = ep_alloc0(sizeof(mtp3_addr_pc_t));
+ mtp3_addr_dpc->pc = (guint32)tvb_get_ntoh24(tvb, offset);
+ mtp3_addr_dpc->type = 1; /* ITU_STANDARD */
+ mtp3_addr_dpc->ni = 0;
+ SET_ADDRESS(&pinfo->dst, AT_SS7PC, sizeof(mtp3_addr_pc_t), (guint8 *) mtp3_addr_dpc);
+ /*dst_addr = tvb_get_ptr(tvb, offset, msg_len-1);
+ SET_ADDRESS(&pinfo->net_dst, AT_SS7PC, msg_len-1, dst_addr);
+ SET_ADDRESS(&pinfo->dst, AT_SS7PC, msg_len-1, dst_addr);*/
+
+ if(msg_len%4)
+ msg_len=msg_len+(4-(msg_len%4));
+
+ offset+=msg_len-1;
+ return offset;
+
+ }
+ else if(key2==2)
+ {
+ proto_tree_add_item(ppcap_tree1,hf_ppcap_dpc,tvb,offset,4,ENC_BIG_ENDIAN);
+
+ /*dst_addr1 = (guint32 )tvb_get_ntoh24(tvb, offset);*/
+ mtp3_addr_dpc = ep_alloc0(sizeof(mtp3_addr_pc_t));
+ mtp3_addr_dpc->pc = tvb_get_ntohl(tvb, offset);
+ mtp3_addr_dpc->type = 1; /* ITU_STANDARD */
+ mtp3_addr_dpc->ni = 0;
+ SET_ADDRESS(&pinfo->dst, AT_SS7PC, sizeof(mtp3_addr_pc_t), (guint8 *) mtp3_addr_dpc);
+ }
+ else if(key2==3)
+ {
+ if(msg_len%4==0)
+ {
+ proto_tree_add_ipv4(ppcap_tree1, hf_ppcap_destination_ip_address1, tvb,offset,msg_len,tvb_get_ipv4(tvb,offset));
+ dst_addr = tvb_get_ptr(tvb, offset, 4);
+ SET_ADDRESS(&pinfo->net_dst, AT_IPv4, 4, dst_addr);
+ SET_ADDRESS(&pinfo->dst, AT_IPv4, 4, dst_addr);
+ }
+ else
+ {
+ struct e_in6_addr value;
+
+ tvb_get_ipv6(tvb,offset,&value);
+ proto_tree_add_ipv6(ppcap_tree1, hf_ppcap_destination_ip_address2, tvb,offset,msg_len,(guint8*)&value);
+ dst_addr = tvb_get_ptr(tvb, offset, 6);
+ SET_ADDRESS(&pinfo->net_dst, AT_IPv6, 6, dst_addr);
+ SET_ADDRESS(&pinfo->dst, AT_IPv6, 6, dst_addr);
+ }
+ }
+
+ else if(key2==4)
+ {
+ char *string;
+ string=tvb_get_string(tvb,offset,msg_len);
+ proto_tree_add_string(ppcap_tree1, hf_ppcap_destination_nodeid, tvb, offset, msg_len , string);
+ dst_addr = tvb_get_ptr(tvb, offset, msg_len);
+ SET_ADDRESS(&pinfo->net_dst, AT_STRINGZ, msg_len, dst_addr);
+ SET_ADDRESS(&pinfo->dst, AT_STRINGZ, msg_len, dst_addr);
+ /*g_free(string);*/
+ }
+
+ if(msg_len%4)
+ msg_len=msg_len+(4-(msg_len%4));
+ offset+=msg_len;
+ return offset;
+}
+
+/* Dissecting the function Info String */
+
+/*
+ *******************************************************
+ * Info *
+ * *
+ *******************************************************
+*/
+
+static int
+dissect_ppcap_info_string(tvbuff_t *tvb, proto_tree * ppcap_tree1, int offset, guint16 msg_len)
+{
+ proto_tree_add_item(ppcap_tree1, hf_ppcap_info ,tvb, offset , msg_len , ENC_ASCII|ENC_NA);
+
+ if(msg_len%4)
+ msg_len = msg_len +( 4- (msg_len%4));
+ offset+=msg_len;
+ return offset;
+}
+
+/* Dissecting the function Payload Data to call the protocol that based upon the type decided in the Payload Type */
+
+/*
+ *******************************************************
+ * Payload Data *
+ * *
+ *******************************************************
+*/
+
+
+static int
+dissect_ppcap_payload_data(tvbuff_t *tvb,packet_info *pinfo, proto_tree * ppcap_tree1, int offset, guint16 msg_len, proto_tree *tree, payload_type_type payload_type)
+{
+ tvbuff_t *next_tvb;
+
+ proto_tree_add_item(ppcap_tree1, hf_ppcap_payload_data ,tvb, offset , msg_len , ENC_NA);
+
+ if(msg_len%4)
+ msg_len = msg_len +( 4- (msg_len%4));
+
+ next_tvb = tvb_new_subset_remaining(tvb, offset);
+
+ switch(payload_type){
+ case PPCAP_MTP3:
+ call_dissector(mtp3_handle ,next_tvb,pinfo ,tree); /* calling the MTP3 handle */
+ break;
+ case PPCAP_TCAP:
+ /*
+ * The protocol which run on TCAP take the SSN value from the SCCP layer which is missing in this case.
+ * So we have made code changes for TCAP handle as below for taking the SSN value from ppcap.
+ */
+ if (ssn != INVALID_SSN && dissector_try_uint(sccp_ssn_dissector_table, ssn, next_tvb, pinfo, tree)) {
+ return offset+msg_len;
+ }else{
+ call_dissector(tcap_handle ,next_tvb,pinfo,tree); /* calling the TCAP handle */
+ }
+ break;
+ case PPCAP_BSSAP:
+ call_dissector(bssap_handle,next_tvb,pinfo,tree); /* calling the BSSAP handle */
+ break;
+ case PPCAP_RANAP:
+ call_dissector(ranap_handle,next_tvb,pinfo,tree); /* calling the RANAP handle */
+ break;
+ case PPCAP_H248:
+ call_dissector(h248_handle,next_tvb,pinfo,tree); /* calling the H248 handle */
+ break;
+ case PPCAP_SIP:
+ call_dissector(sip_handle,next_tvb,pinfo,tree); /* calling the SIP handle */
+ break;
+ case PPCAP_SCCP:
+ call_dissector(sccp_handle,next_tvb,pinfo,tree); /* calling the SCCP handle */
+ break;
+ default:
+ call_dissector(data_handle,next_tvb,pinfo,tree); /* calling the DATA handle */
+ break;
+ }
+
+ offset+=msg_len;
+ return offset;
+}
+
+/* Registering the hf variables */
+
+void proto_register_ppcap(void)
+{
+
+ static hf_register_info hf[] = {
+ { &hf_ppcap_length,
+ { "Length", "ppcap.length",
+ FT_UINT16, BASE_DEC, NULL, 0x00,
+ NULL, HFILL}
+ },
+ { &hf_ppcap_payload_type,
+ { "Payload Type" , "ppcap.payload_type", FT_STRING,
+ BASE_NONE, NULL, 0x0 ,NULL, HFILL}},
+ { &hf_ppcap_reserved,
+ { "Reserved", "ppcap.reserved", FT_UINT16,
+ BASE_DEC, NULL, 0x00, NULL, HFILL}},
+ { &hf_ppcap_address_type,
+ { "Address Type", "ppcap.address_type", FT_UINT16,
+ BASE_DEC, VALS(address_type_values), 0x00 , NULL, HFILL}},
+ /*{ &hf_ppcap_source_address_type,
+ { "Source Address Type", "ppcap.source_address_type", FT_UINT16,
+ BASE_DEC, VALS(address_type_values), 0x00 , NULL, HFILL}},*/
+ { &hf_ppcap_ssn,
+ { "SSN", "ppcap.ssn", FT_UINT16,
+ BASE_DEC, NULL, 0x00, NULL, HFILL}},
+ { &hf_ppcap_spc,
+ {"OPC", "ppcap.spc", FT_UINT16,
+ BASE_DEC, NULL, 0x00, NULL, HFILL}},
+ { &hf_ppcap_opc,
+ { "OPC", "ppcap.opc", FT_UINT16,
+ BASE_DEC, NULL, 0x00, NULL, HFILL}},
+ { &hf_ppcap_source_ip_address1,
+ { "Source IP Addresss", "ppcap.source_ip_address1", FT_IPv4,
+ BASE_NONE, NULL, 0x00, NULL, HFILL}},
+ { &hf_ppcap_source_ip_address2,
+ { "Source IP Address", "ppcap.source_ip_address2", FT_IPv6,
+ BASE_NONE, NULL, 0x00, NULL, HFILL}},
+ { &hf_ppcap_destreserved,
+ { "Reserved", "ppcap.destreserved", FT_UINT16,
+ BASE_DEC, NULL, 0x00, NULL, HFILL}},
+ /*{ &hf_ppcap_destination_address_type,
+ { "Destination Address Type", "ppcap.destination_address_type", FT_UINT16,
+ BASE_DEC, VALS(address_type_values), 0x00, NULL, HFILL}},*/
+ { &hf_ppcap_ssn1,
+ { "SSN", "ppcap.ssn1", FT_UINT8,
+ BASE_DEC, NULL, 0x00, NULL, HFILL}},
+ { &hf_ppcap_spc1,
+ { "DPC", "ppcap.spc1", FT_UINT24,
+ BASE_DEC, NULL, 0x00, NULL, HFILL}},
+ { &hf_ppcap_dpc,
+ { "DPC", "ppcap.dpc", FT_UINT32,
+ BASE_DEC, NULL, 0x00, NULL, HFILL}},
+ { &hf_ppcap_destination_ip_address1,
+ { "Destination IP Address", "ppcap.destination_ip_address1", FT_IPv4,
+ BASE_NONE, NULL, 0x00, NULL, HFILL}},
+ { &hf_ppcap_destination_ip_address2,
+ { "Destination IP Address", "ppcap.destination_ip_address2", FT_IPv6,
+ BASE_NONE, NULL, 0x00, NULL, HFILL}},
+ { &hf_ppcap_source_nodeid,
+ { "Source Node ID", "ppcap.source_nodeid", FT_STRING,
+ BASE_NONE, NULL, 0x00, NULL, HFILL}},
+ { &hf_ppcap_destination_nodeid,
+ { "Destination Node ID", "ppcap.destination_address_value", FT_STRING,
+ BASE_NONE, NULL, 0x00, NULL, HFILL}},
+ { &hf_ppcap_info,
+ { "Info", "ppcap.info", FT_STRING,
+ BASE_NONE, NULL, 0x0000, NULL, HFILL}},
+ { &hf_ppcap_payload_data,
+ { "Payload Data", "ppcap.payload_data", FT_BYTES,
+ BASE_NONE, NULL, 0x0000, NULL, HFILL}},
+ };
+
+ static gint *ett[]= {
+ &ett_ppcap,
+ &ett_ppcap1,
+ &ett_ppcap_new,
+ };
+ proto_ppcap = proto_register_protocol("Proprietary PCAP", "PPCAP", "ppcap");
+ proto_register_field_array(proto_ppcap , hf , array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+ register_dissector("ppcap", dissect_ppcap, proto_ppcap);
+}
+
+void proto_reg_handoff_ppcap(void)
+{
+ /*static gboolean ppcap_initialised = FALSE;*/
+
+ ppcap_handle = find_dissector("ppcap");
+ mtp3_handle = find_dissector("mtp3"); /* calling the protocol MTP3 */
+ tcap_handle = find_dissector("tcap"); /* calling the protocol TCAP */
+ bssap_handle = find_dissector("bssap"); /* calling the protocol BSSAP */
+ ranap_handle = find_dissector("ranap"); /* calling the protocol RANAP */
+ h248_handle = find_dissector("h248"); /* calling the protocol H248 */
+ sip_handle = find_dissector("sip"); /* calling the protocol SIP */
+ sccp_handle = find_dissector("sccp"); /* calling the protocol SCCP */
+ data_handle = find_dissector("data"); /* calling the protocol DATA */
+ sccp_ssn_dissector_table = find_dissector_table("sccp.ssn");
+
+}
diff --git a/epan/dissectors/packet-ppi-antenna.c b/epan/dissectors/packet-ppi-antenna.c
index 9b0899d050..d628034fff 100644
--- a/epan/dissectors/packet-ppi-antenna.c
+++ b/epan/dissectors/packet-ppi-antenna.c
@@ -465,7 +465,7 @@ proto_register_ppi_antenna(void) {
{ &hf_ppi_antennaflags_mimo,
{ "mimo", "ppi_antenna.antennaflags.mimo",
FT_BOOLEAN, 32, NULL, PPI_ANTENNAFLAGS_MASK_MIMO,
- "Antena is part of MIMO system", HFILL } },
+ "Antenna is part of MIMO system", HFILL } },
{ &hf_ppi_antennaflags_horizpol,
{ "horizontally polarized", "ppi_antenna.antennaflags.horizpol",
FT_BOOLEAN, 32, NULL, PPI_ANTENNAFLAGS_MASK_HPOL,
diff --git a/epan/dissectors/packet-ppi.c b/epan/dissectors/packet-ppi.c
index 3cf83d9a5c..8e499c961e 100644
--- a/epan/dissectors/packet-ppi.c
+++ b/epan/dissectors/packet-ppi.c
@@ -727,7 +727,7 @@ dissect_8023_extension(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
#define PADDING4(x) ((((x + 3) >> 2) << 2) - x)
#define ADD_BASIC_TAG(hf_tag) \
if (tree) \
- proto_tree_add_item(ppi_tree, hf_tag, tvb, offset, data_len, FALSE)
+ proto_tree_add_item(ppi_tree, hf_tag, tvb, offset, data_len, ENC_NA)
static void
dissect_ppi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
diff --git a/epan/dissectors/packet-ppp.c b/epan/dissectors/packet-ppp.c
index 49f35793ec..470a28dbd0 100644
--- a/epan/dissectors/packet-ppp.c
+++ b/epan/dissectors/packet-ppp.c
@@ -46,6 +46,7 @@
#include <epan/crc16-tvb.h>
#include <epan/crc32-tvb.h>
#include <epan/ipproto.h>
+#include <epan/addr_resolv.h>
#include "packet-usb.h"
#include "packet-sll.h"
@@ -55,6 +56,13 @@ static int hf_ppp_direction = -1;
static int hf_ppp_address = -1;
static int hf_ppp_control = -1;
static int hf_ppp_protocol = -1;
+static int hf_ppp_code = -1;
+static int hf_ppp_identifier = -1;
+static int hf_ppp_length = -1;
+static int hf_ppp_magic_number = -1;
+static int hf_ppp_oui = -1;
+static int hf_ppp_kind = -1;
+static int hf_ppp_data = -1;
static gint ett_ppp = -1;
@@ -66,13 +74,34 @@ static int proto_lcp = -1;
static gint ett_lcp = -1;
static gint ett_lcp_options = -1;
+static gint ett_lcp_vendor_opt = -1;
+static gint ett_lcp_mru_opt = -1;
+static gint ett_lcp_asyncmap_opt = -1;
static gint ett_lcp_authprot_opt = -1;
static gint ett_lcp_qualprot_opt = -1;
+static gint ett_lcp_magicnumber_opt = - 1;
+static gint ett_lcp_linkqualmon_opt = - 1;
+static gint ett_lcp_pcomp_opt = -1;
+static gint ett_lcp_acccomp_opt = -1;
static gint ett_lcp_fcs_alternatives_opt = -1;
+static gint ett_lcp_self_desc_pad_opt = -1;
static gint ett_lcp_numbered_mode_opt = -1;
static gint ett_lcp_callback_opt = -1;
+static gint ett_lcp_compound_frames_opt = -1;
+static gint ett_lcp_nomdataencap_opt = -1;
+static gint ett_lcp_multilink_mrru_opt = -1;
+static gint ett_lcp_multilink_ssnh_opt = -1;
static gint ett_lcp_multilink_ep_disc_opt = -1;
+static gint ett_lcp_magic_block = -1;
+static gint ett_lcp_dce_identifier_opt = -1;
+static gint ett_lcp_multilink_pp_opt = -1;
+static gint ett_lcp_bacp_link_discrim_opt = -1;
+static gint ett_lcp_auth_opt = -1;
+static gint ett_lcp_cobs_opt = -1;
+static gint ett_lcp_prefix_elision_opt = -1;
+static gint ett_multilink_hdr_fmt_opt = -1;
static gint ett_lcp_internationalization_opt = -1;
+static gint ett_lcp_simple_opt = -1;
static int proto_ipcp = -1;
@@ -80,7 +109,17 @@ static gint ett_ipcp = -1;
static gint ett_ipcp_options = -1;
static gint ett_ipcp_ipaddrs_opt = -1;
static gint ett_ipcp_compress_opt = -1;
-static gint ett_ipcp_iphc_disableprot_opt = -1;
+static gint ett_ipcp_ipaddr_opt = -1;
+static gint ett_ipcp_mobileipv4_opt = -1;
+static gint ett_ipcp_pridns_opt = -1;
+static gint ett_ipcp_secdns_opt = -1;
+static gint ett_ipcp_prinbns_opt = -1;
+static gint ett_ipcp_secnbns_opt = -1;
+
+static gint ett_ipcp_iphc_rtp_compress_opt = -1;
+static gint ett_ipcp_iphc_enhanced_rtp_compress_opt = -1;
+static gint ett_ipcp_iphc_neghdrcomp_opt = -1;
+static gint ett_ipcp_rohc_profiles_opt = -1;
static int proto_vsncp = -1;
@@ -92,11 +131,11 @@ static gint hf_vsnp_pdnid = -1;
static gint ett_vsnp =-1;
-static int proto_osicp = -1;
+static int proto_osinlcp = -1;
-static gint ett_osicp = -1;
-static gint ett_osicp_options = -1;
-static gint ett_osicp_align_npdu_opt = -1;
+static gint ett_osinlcp = -1;
+static gint ett_osinlcp_options = -1;
+static gint ett_osinlcp_align_npdu_opt = -1;
static int proto_bcp = -1;
static int hf_bcp_flags = -1;
@@ -113,12 +152,23 @@ static int proto_ccp = -1;
static gint ett_ccp = -1;
static gint ett_ccp_options = -1;
+static gint ett_ccp_oui_opt = -1;
+static gint ett_ccp_predict1_opt = -1;
+static gint ett_ccp_predict2_opt = -1;
+static gint ett_ccp_puddle_opt = -1;
+static gint ett_ccp_hpppc_opt = -1;
static gint ett_ccp_stac_opt = -1;
-static gint ett_ccp_mppc_opt = -1;
+static gint ett_ccp_stac_opt_check_mode = -1;
+static gint ett_ccp_mppe_opt = -1;
+static gint ett_ccp_mppe_opt_supp_bits = -1;
+static gint ett_ccp_gfza_opt = -1;
+static gint ett_ccp_v42bis_opt = -1;
static gint ett_ccp_bsdcomp_opt = -1;
static gint ett_ccp_lzsdcp_opt = -1;
static gint ett_ccp_mvrca_opt = -1;
+static gint ett_ccp_dce_opt = -1;
static gint ett_ccp_deflate_opt = -1;
+static gint ett_ccp_v44lzjh_opt = -1;
static int proto_cbcp = -1;
@@ -237,9 +287,9 @@ static dissector_handle_t eth_withfcs_handle;
static dissector_handle_t eth_withoutfcs_handle;
static const value_string ppp_direction_vals[] = {
- { P2P_DIR_RECV, "DCE->DTE"},
- { P2P_DIR_SENT, "DTE->DCE"},
- { 0, NULL }
+ {P2P_DIR_RECV, "DCE->DTE"},
+ {P2P_DIR_SENT, "DTE->DCE"},
+ {0, NULL}
};
/* options */
@@ -249,10 +299,10 @@ static gint ppp_fcs_decode = 0; /* 0 = No FCS, 1 = 16 bit FCS, 2 = 32 bit FCS */
#define FCS_32 2
const enum_val_t fcs_options[] = {
- {"none", "None", NO_FCS},
- {"16-bit", "16-Bit", FCS_16},
- {"32-bit", "32-Bit", FCS_32},
- {NULL, NULL, -1}
+ {"none", "None", NO_FCS},
+ {"16-bit", "16-Bit", FCS_16},
+ {"32-bit", "32-Bit", FCS_32},
+ {NULL, NULL, -1}
};
gboolean ppp_vj_decomp = TRUE; /* Default to VJ header decompression */
@@ -269,144 +319,150 @@ static guint pppmux_def_prot_id = 0;
/*
* Used by the GTP dissector as well.
+ * www.iana.org/assignments/ppp-numbers
*/
static const value_string ppp_vals[] = {
- {PPP_PADDING, "Padding Protocol" },
- {PPP_ROHC_SCID, "ROHC small-CID" },
- {PPP_ROHC_LCID, "ROHC large-CID" },
- {PPP_IP, "IP" },
- {PPP_OSI, "OSI" },
- {PPP_XNSIDP, "Xerox NS IDP" },
- {PPP_DEC4, "DECnet Phase IV" },
- {PPP_AT, "Appletalk" },
- {PPP_IPX, "Netware IPX/SPX"},
- {PPP_VJC_COMP, "VJ compressed TCP"},
- {PPP_VJC_UNCOMP, "VJ uncompressed TCP"},
- {PPP_BCP, "Bridging Control Protocol"},
- {PPP_ST, "Stream Protocol (ST-II)" },
- {PPP_VINES, "Vines" },
- {PPP_AT_EDDP, "AppleTalk EDDP" },
- {PPP_AT_SB, "AppleTalk SmartBuffered" },
- {PPP_MP, "Multilink"},
- {PPP_NB, "NETBIOS Framing" },
- {PPP_CISCO, "Cisco Systems" },
- {PPP_ASCOM, "Ascom Timeplex" },
- {PPP_LBLB, "Fujitsu Link Backup and Load Balancing" },
- {PPP_RL, "DCA Remote Lan" },
- {PPP_SDTP, "Serial Data Transport Protocol" },
- {PPP_LLC, "SNA over LLC" },
- {PPP_SNA, "SNA" },
- {PPP_IPV6HC, "IPv6 Header Compression " },
- {PPP_KNX, "KNX Bridging Data" },
- {PPP_ENCRYPT, "Encryption" },
- {PPP_ILE, "Individual Link Encryption" },
- {PPP_IPV6, "IPv6" },
- {PPP_MUX, "PPP Multiplexing"},
- {PPP_VSNP, "Vendor-Specific Network Protocol"},
- {PPP_RTP_FH, "RTP IPHC Full Header" },
- {PPP_RTP_CTCP, "RTP IPHC Compressed TCP" },
- {PPP_RTP_CNTCP, "RTP IPHC Compressed Non TCP" },
- {PPP_RTP_CUDP8, "RTP IPHC Compressed UDP 8" },
- {PPP_RTP_CRTP8, "RTP IPHC Compressed RTP 8" },
- {PPP_STAMPEDE, "Stampede Bridging" },
- {PPP_MPPLUS, "MP+ Protocol" },
- {PPP_NTCITS_IPI, "NTCITS IPI" },
- {PPP_ML_SLCOMP, "single link compression in multilink" },
- {PPP_COMP, "compressed packet" },
- {PPP_STP_HELLO, "802.1D Hello Packet" },
- {PPP_IBM_SR, "IBM Source Routing BPDU" },
- {PPP_DEC_LB, "DEC LANBridge100 Spanning Tree"},
- {PPP_CDP, "Cisco Discovery Protocol" },
- {PPP_NETCS, "Netcs Twin Routing" },
- {PPP_STP, "Scheduled Transfer Protocol" },
- {PPP_EDP, "Extreme Discovery Protocol" },
- {PPP_OSCP, "Optical Supervisory Channel Protocol" },
- {PPP_OSCP2, "Optical Supervisory Channel Protocol" },
- {PPP_LUXCOM, "Luxcom" },
- {PPP_SIGMA, "Sigma Network Systems" },
- {PPP_ACSP, "Apple Client Server Protocol" },
- {PPP_MPLS_UNI, "MPLS Unicast"},
- {PPP_MPLS_MULTI, "MPLS Multicast"},
- {PPP_P12844, "IEEE p1284.4 standard - data packets" },
- {PPP_TETRA, "ETSI TETRA Networks Protocol Type 1" },
- {PPP_MFTP, "Multichannel Flow Treatment Protocol" },
- {PPP_RTP_CTCPND, "RTP IPHC Compressed TCP No Delta" },
- {PPP_RTP_CS, "RTP IPHC Context State" },
- {PPP_RTP_CUDP16, "RTP IPHC Compressed UDP 16" },
- {PPP_RTP_CRDP16, "RTP IPHC Compressed RTP 16" },
- {PPP_CCCP, "Cray Communications Control Protocol" },
- {PPP_CDPD_MNRP, "CDPD Mobile Network Registration Protocol" },
- {PPP_EXPANDAP, "Expand accelerator protocol" },
- {PPP_ODSICP, "ODSICP NCP" },
- {PPP_DOCSIS, "DOCSIS DLL" },
- {PPP_CETACEANNDP, "Cetacean Network Detection Protocol" },
- {PPP_LZS, "Stacker LZS" },
- {PPP_REFTEK, "RefTek Protocol" },
- {PPP_FC, "Fibre Channel" },
- {PPP_EMIT, "EMIT Protocols" },
- {PPP_VSP, "Vendor-Specific Protocol" },
- {PPP_IPCP, "IP Control Protocol" },
- {PPP_OSICP, "OSI Control Protocol" },
- {PPP_XNSIDPCP, "Xerox NS IDP Control Protocol" },
- {PPP_DECNETCP, "DECnet Phase IV Control Protocol" },
- {PPP_ATCP, "AppleTalk Control Protocol" },
- {PPP_IPXCP, "IPX Control Protocol" },
- {PPP_BRIDGENCP, "Bridging NCP" },
- {PPP_SPCP, "Stream Protocol Control Protocol" },
- {PPP_BVCP, "Banyan Vines Control Protocol" },
- {PPP_MLCP, "Multi-Link Control Protocol" },
- {PPP_NBCP, "NETBIOS Framing Control Protocol" },
- {PPP_CISCOCP, "Cisco Systems Control Protocol" },
- {PPP_ASCOMCP, "Ascom Timeplex" },
- {PPP_LBLBCP, "Fujitsu LBLB Control Protocol" },
- {PPP_RLNCP, "DCA Remote Lan Network Control Protocol" },
- {PPP_SDCP, "Serial Data Control Protocol" },
- {PPP_LLCCP, "SNA over LLC Control Protocol" },
- {PPP_SNACP, "SNA Control Protocol" },
- {PPP_KNXCP, "KNX Bridging Control Protocol" },
- {PPP_ECP, "Encryption Control Protocol" },
- {PPP_ILECP, "Individual Encryption Control Protocol" },
- {PPP_IPV6CP, "IPv6 Control Protocol" },
- {PPP_MUXCP, "PPPMux Control Protocol"},
- {PPP_VSNCP, "Vendor-Specific Network Control Protocol"},
- {PPP_STAMPEDECP, "Stampede Bridging Control Protocol" },
- {PPP_MPPCP, "MP+ Control Protocol" },
- {PPP_IPICP, "NTCITS IPI Control Protocol" },
- {PPP_SLCC, "single link compression in multilink control" },
- {PPP_CCP, "Compression Control Protocol" },
- {PPP_CDPCP, "CDP Control Protocol" },
- {PPP_NETCSCP, "Netcs Twin Routing" },
- {PPP_STPCP, "STP - Control Protocol" },
- {PPP_EDPCP, "EDP Control Protocol" },
- {PPP_ACSPC, "Apple Client Server Protocol Control" },
- {PPP_MPLSCP, "MPLS Control Protocol" },
- {PPP_P12844CP, "IEEE p1284.4 standard - Protocol Control" },
- {PPP_TETRACP, "ETSI TETRA TNP1 Control Protocol" },
- {PPP_MFTPCP, "Multichannel Flow Treatment Protocol" },
- {PPP_LCP, "Link Control Protocol" },
- {PPP_PAP, "Password Authentication Protocol" },
- {PPP_LQR, "Link Quality Report protocol" },
- {PPP_SPAP, "Shiva Password Authentication Protocol" },
- {PPP_CBCP, "Callback Control Protocol" },
- {PPP_BACP, "Bandwidth Allocation Control Protocol" },
- {PPP_BAP, "Bandwidth Allocation Protocol" },
- {PPP_VSAP, "Vendor-Specific Authentication Protocol" },
- {PPP_CONTCP, "Container Control Protocol" },
- {PPP_CHAP, "Challenge Handshake Authentication Protocol" },
- {PPP_RSAAP, "RSA Authentication Protocol" },
- {PPP_EAP, "Extensible Authentication Protocol" },
- {PPP_SIEP, "Mitsubishi Security Information Exchange Protocol"},
- {PPP_SBAP, "Stampede Bridging Authorization Protocol" },
- {PPP_PRPAP, "Proprietary Authentication Protocol" },
- {PPP_PRPAP2, "Proprietary Authentication Protocol" },
- {PPP_PRPNIAP, "Proprietary Node ID Authentication Protocol" },
- {0, NULL }
+ {PPP_PADDING, "Padding Protocol"},
+ {PPP_ROHC_SCID, "ROHC small-CID"},
+ {PPP_ROHC_LCID, "ROHC large-CID"},
+ {PPP_IP, "Internet Protocol version 4"},
+ {PPP_OSI, "OSI Network Layer"},
+ {PPP_XNSIDP, "Xerox NS IDP"},
+ {PPP_DEC4, "DECnet Phase IV"},
+ {PPP_AT, "Appletalk"},
+ {PPP_IPX, "Novell IPX"},
+ {PPP_VJC_COMP, "Van Jacobson Compressed TCP/IP"},
+ {PPP_VJC_UNCOMP, "Van Jacobson Uncompressed TCP/IP"},
+ {PPP_BCP, "Bridging PDU"},
+ {PPP_ST, "Stream Protocol (ST-II)"},
+ {PPP_VINES, "Banyan Vines"},
+ {PPP_AT_EDDP, "AppleTalk EDDP"},
+ {PPP_AT_SB, "AppleTalk SmartBuffered"},
+ {PPP_MP, "Multi-Link"},
+ {PPP_NB, "NETBIOS Framing"},
+ {PPP_CISCO, "Cisco Systems"},
+ {PPP_ASCOM, "Ascom Timeplex"},
+ {PPP_LBLB, "Fujitsu Link Backup and Load Balancing (LBLB)"},
+ {PPP_RL, "DCA Remote Lan"},
+ {PPP_SDTP, "Serial Data Transport Protocol (PPP-SDTP)"},
+ {PPP_LLC, "SNA over 802.2"},
+ {PPP_SNA, "SNA"},
+ {PPP_IPV6HC, "IPv6 Header Compression "},
+ {PPP_KNX, "KNX Bridging Data"},
+ {PPP_ENCRYPT, "Encryption"},
+ {PPP_ILE, "Individual Link Encryption"},
+ {PPP_IPV6, "Internet Protocol version 6"},
+ {PPP_MUX, "PPP Muxing"},
+ {PPP_VSNP, "Vendor-Specific Network Protocol (VSNP)"},
+ {PPP_TNP, "TRILL Network Protocol (TNP)"},
+ {PPP_RTP_FH, "RTP IPHC Full Header"},
+ {PPP_RTP_CTCP, "RTP IPHC Compressed TCP"},
+ {PPP_RTP_CNTCP, "RTP IPHC Compressed Non TCP"},
+ {PPP_RTP_CUDP8, "RTP IPHC Compressed UDP 8"},
+ {PPP_RTP_CRTP8, "RTP IPHC Compressed RTP 8"},
+ {PPP_STAMPEDE, "Stampede Bridging"},
+ {PPP_MPPLUS, "MP+ Protocol"},
+ {PPP_NTCITS_IPI, "NTCITS IPI"},
+ {PPP_ML_SLCOMP, "Single link compression in multilink"},
+ {PPP_COMP, "Compressed datagram"},
+ {PPP_STP_HELLO, "802.1d Hello Packets"},
+ {PPP_IBM_SR, "IBM Source Routing BPDU"},
+ {PPP_DEC_LB, "DEC LANBridge100 Spanning Tree"},
+ {PPP_CDP, "Cisco Discovery Protocol"},
+ {PPP_NETCS, "Netcs Twin Routing"},
+ {PPP_STP, "STP - Scheduled Transfer Protocol"},
+ {PPP_EDP, "EDP - Extreme Discovery Protocol"},
+ {PPP_OSCP, "Optical Supervisory Channel Protocol (OSCP)"},
+ {PPP_OSCP2, "Optical Supervisory Channel Protocol (OSCP)"},
+ {PPP_LUXCOM, "Luxcom"},
+ {PPP_SIGMA, "Sigma Network Systems"},
+ {PPP_ACSP, "Apple Client Server Protocol"},
+ {PPP_MPLS_UNI, "MPLS Unicast"},
+ {PPP_MPLS_MULTI, "MPLS Multicast"},
+ {PPP_P12844, "IEEE p1284.4 standard - data packets"},
+ {PPP_TETRA, "ETSI TETRA Network Protocol Type 1"},
+ {PPP_MFTP, "Multichannel Flow Treatment Protocol"},
+ {PPP_RTP_CTCPND, "RTP IPHC Compressed TCP No Delta"},
+ {PPP_RTP_CS, "RTP IPHC Context State"},
+ {PPP_RTP_CUDP16, "RTP IPHC Compressed UDP 16"},
+ {PPP_RTP_CRDP16, "RTP IPHC Compressed RTP 16"},
+ {PPP_CCCP, "Cray Communications Control Protocol"},
+ {PPP_CDPD_MNRP, "CDPD Mobile Network Registration Protocol"},
+ {PPP_EXPANDAP, "Expand accelerator protocol"},
+ {PPP_ODSICP, "ODSICP NCP"},
+ {PPP_DOCSIS, "DOCSIS DLL"},
+ {PPP_CETACEANNDP, "Cetacean Network Detection Protocol"},
+ {PPP_LZS, "Stacker LZS"},
+ {PPP_REFTEK, "RefTek Protocol"},
+ {PPP_FC, "Fibre Channel"},
+ {PPP_EMIT, "EMIT Protocols"},
+ {PPP_VSP, "Vendor-Specific Protocol (VSP)"},
+ {PPP_TLSP, "TRILL Link State Protocol (TLSP)"},
+ {PPP_IPCP, "Internet Protocol Control Protocol"},
+ {PPP_OSINLCP, "OSI Network Layer Control Protocol"},
+ {PPP_XNSIDPCP, "Xerox NS IDP Control Protocol"},
+ {PPP_DECNETCP, "DECnet Phase IV Control Protocol"},
+ {PPP_ATCP, "AppleTalk Control Protocol"},
+ {PPP_IPXCP, "Novell IPX Control Protocol"},
+ {PPP_BRIDGENCP, "Bridging NCP"},
+ {PPP_SPCP, "Stream Protocol Control Protocol"},
+ {PPP_BVCP, "Banyan Vines Control Protocol"},
+ {PPP_MLCP, "Multi-Link Control Protocol"},
+ {PPP_NBCP, "NETBIOS Framing Control Protocol"},
+ {PPP_CISCOCP, "Cisco Systems Control Protocol"},
+ {PPP_ASCOMCP, "Ascom Timeplex"},
+ {PPP_LBLBCP, "Fujitsu LBLB Control Protocol"},
+ {PPP_RLNCP, "DCA Remote Lan Network Control Protocol (RLNCP)"},
+ {PPP_SDCP, "Serial Data Control Protocol (PPP-SDCP)"},
+ {PPP_LLCCP, "SNA over 802.2 Control Protocol"},
+ {PPP_SNACP, "SNA Control Protocol"},
+ {PPP_IP6HCCP, "IP6 Header Compression Control Protocol"},
+ {PPP_KNXCP, "KNX Bridging Control Protocol"},
+ {PPP_ECP, "Encryption Control Protocol"},
+ {PPP_ILECP, "Individual Link Encryption Control Protocol"},
+ {PPP_IPV6CP, "IPv6 Control Protocol"},
+ {PPP_MUXCP, "PPP Muxing Control Protocol"},
+ {PPP_VSNCP, "Vendor-Specific Network Control Protocol (VSNCP)"},
+ {PPP_TNCP, "TRILL Network Control Protocol"},
+ {PPP_STAMPEDECP, "Stampede Bridging Control Protocol"},
+ {PPP_MPPCP, "MP+ Control Protocol"},
+ {PPP_IPICP, "NTCITS IPI Control Protocol"},
+ {PPP_SLCC, "Single link compression in multilink control"},
+ {PPP_CCP, "Compression Control Protocol"},
+ {PPP_CDPCP, "Cisco Discovery Protocol Control Protocol"},
+ {PPP_NETCSCP, "Netcs Twin Routing"},
+ {PPP_STPCP, "STP - Control Protocol"},
+ {PPP_EDPCP, "EDPCP - Extreme Discovery Protocol Control Protocol"},
+ {PPP_ACSPC, "Apple Client Server Protocol Control"},
+ {PPP_MPLSCP, "MPLS Control Protocol"},
+ {PPP_P12844CP, "IEEE p1284.4 standard - Protocol Control"},
+ {PPP_TETRACP, "ETSI TETRA TNP1 Control Protocol"},
+ {PPP_MFTPCP, "Multichannel Flow Treatment Protocol"},
+ {PPP_LCP, "Link Control Protocol"},
+ {PPP_PAP, "Password Authentication Protocol"},
+ {PPP_LQR, "Link Quality Report"},
+ {PPP_SPAP, "Shiva Password Authentication Protocol"},
+ {PPP_CBCP, "Callback Control Protocol (CBCP)"},
+ {PPP_BACP, "BACP Bandwidth Allocation Control Protocol"},
+ {PPP_BAP, "BAP Bandwidth Allocation Protocol"},
+ {PPP_VSAP, "Vendor-Specific Authentication Protocol (VSAP)"},
+ {PPP_CONTCP, "Container Control Protocol"},
+ {PPP_CHAP, "Challenge Handshake Authentication Protocol"},
+ {PPP_RSAAP, "RSA Authentication Protocol"},
+ {PPP_EAP, "Extensible Authentication Protocol"},
+ {PPP_SIEP, "Mitsubishi Security Information Exchange Protocol (SIEP)"},
+ {PPP_SBAP, "Stampede Bridging Authorization Protocol"},
+ {PPP_PRPAP, "Proprietary Authentication Protocol"},
+ {PPP_PRPAP2, "Proprietary Authentication Protocol"},
+ {PPP_PRPNIAP, "Proprietary Node ID Authentication Protocol"},
+ {0, NULL}
};
value_string_ext ppp_vals_ext = VALUE_STRING_EXT_INIT(ppp_vals);
-/* CP (LCP, IPCP, etc.) codes.
+/* CP (LCP, CCP, IPCP, etc.) codes.
* from pppd fsm.h
*/
+#define VNDRSPCFC 0 /* Vendor Specific: RFC 2153 */
#define CONFREQ 1 /* Configuration Request */
#define CONFACK 2 /* Configuration Ack */
#define CONFNAK 3 /* Configuration Nak */
@@ -416,14 +472,16 @@ value_string_ext ppp_vals_ext = VALUE_STRING_EXT_INIT(ppp_vals);
#define CODEREJ 7 /* Code Reject */
static const value_string cp_vals[] = {
- {CONFREQ, "Configuration Request" },
- {CONFACK, "Configuration Ack" },
- {CONFNAK, "Configuration Nak" },
- {CONFREJ, "Configuration Reject" },
- {TERMREQ, "Termination Request" },
- {TERMACK, "Termination Ack" },
- {CODEREJ, "Code Reject" },
- {0, NULL } };
+ {VNDRSPCFC, "Vendor Specific"},
+ {CONFREQ, "Configuration Request"},
+ {CONFACK, "Configuration Ack"},
+ {CONFNAK, "Configuration Nak"},
+ {CONFREJ, "Configuration Reject"},
+ {TERMREQ, "Termination Request"},
+ {TERMACK, "Termination Ack"},
+ {CODEREJ, "Code Reject"},
+ {0, NULL}
+};
/*
* LCP-specific packet types.
@@ -463,52 +521,54 @@ static const value_string cp_vals[] = {
#define BAP_CSRES 8 /* Call Status Response */
static const value_string lcp_vals[] = {
- {CONFREQ, "Configuration Request" },
- {CONFACK, "Configuration Ack" },
- {CONFNAK, "Configuration Nak" },
- {CONFREJ, "Configuration Reject" },
- {TERMREQ, "Termination Request" },
- {TERMACK, "Termination Ack" },
- {CODEREJ, "Code Reject" },
- {PROTREJ, "Protocol Reject" },
- {ECHOREQ, "Echo Request" },
- {ECHOREP, "Echo Reply" },
- {DISCREQ, "Discard Request" },
- {IDENT, "Identification" },
- {TIMEREMAIN, "Time Remaining" },
- {0, NULL }
+ {VNDRSPCFC, "Vendor Specific"},
+ {CONFREQ, "Configuration Request"},
+ {CONFACK, "Configuration Ack"},
+ {CONFNAK, "Configuration Nak"},
+ {CONFREJ, "Configuration Reject"},
+ {TERMREQ, "Termination Request"},
+ {TERMACK, "Termination Ack"},
+ {CODEREJ, "Code Reject"},
+ {PROTREJ, "Protocol Reject"},
+ {ECHOREQ, "Echo Request"},
+ {ECHOREP, "Echo Reply"},
+ {DISCREQ, "Discard Request"},
+ {IDENT, "Identification"},
+ {TIMEREMAIN, "Time Remaining"},
+ {0, NULL}
};
static const value_string ccp_vals[] = {
- {CONFREQ, "Configuration Request" },
- {CONFACK, "Configuration Ack" },
- {CONFNAK, "Configuration Nak" },
- {CONFREJ, "Configuration Reject" },
- {TERMREQ, "Termination Request" },
- {TERMACK, "Termination Ack" },
- {CODEREJ, "Code Reject" },
- {RESETREQ, "Reset Request" },
- {RESETACK, "Reset Ack" },
- {0, NULL }
+ {VNDRSPCFC, "Vendor Specific"},
+ {CONFREQ, "Configuration Request"},
+ {CONFACK, "Configuration Ack"},
+ {CONFNAK, "Configuration Nak"},
+ {CONFREJ, "Configuration Reject"},
+ {TERMREQ, "Termination Request"},
+ {TERMACK, "Termination Ack"},
+ {CODEREJ, "Code Reject"},
+ {RESETREQ, "Reset Request"},
+ {RESETACK, "Reset Ack"},
+ {0, NULL}
};
static const value_string cbcp_vals[] = {
- {CBREQ, "Callback Request" },
- {CBRES, "Callback Response" },
- {CBACK, "Callback Ack" },
- {0, NULL }
+ {CBREQ, "Callback Request"},
+ {CBRES, "Callback Response"},
+ {CBACK, "Callback Ack"},
+ {0, NULL}
};
static const value_string bap_vals[] = {
- {BAP_CREQ, "Call Request" },
- {BAP_CRES, "Call Response" },
- {BAP_CBREQ, "Callback Request" },
- {BAP_CBRES, "Callback Response" },
- {BAP_LDQREQ, "Link Drop Query Request" },
- {BAP_LDQRES, "Link Drop Query Response" },
- {BAP_CSI, "Call Status Indication" },
- {BAP_CSRES, "Call Status Response" },
- {0, NULL }
+ {BAP_CREQ, "Call Request"},
+ {BAP_CRES, "Call Response"},
+ {BAP_CBREQ, "Callback Request"},
+ {BAP_CBRES, "Callback Response"},
+ {BAP_LDQREQ, "Link Drop Query Request"},
+ {BAP_LDQRES, "Link Drop Query Response"},
+ {BAP_CSI, "Call Status Indication"},
+ {BAP_CSRES, "Call Status Response"},
+ {0, NULL}
};
#define BAP_RESP_CODE_REQACK 0x00
@@ -516,11 +576,11 @@ static const value_string bap_vals[] = {
#define BAP_RESP_CODE_REQREJ 0x02
#define BAP_RESP_CODE_REQFULLNAK 0x03
static const value_string bap_resp_code_vals[] = {
- {BAP_RESP_CODE_REQACK, "Request Ack" },
- {BAP_RESP_CODE_REQNAK, "Request Nak" },
- {BAP_RESP_CODE_REQREJ, "Request Rej" },
- {BAP_RESP_CODE_REQFULLNAK, "Request Full Nak" },
- {0, NULL }
+ {BAP_RESP_CODE_REQACK, "Request Ack"},
+ {BAP_RESP_CODE_REQNAK, "Request Nak"},
+ {BAP_RESP_CODE_REQREJ, "Request Rej"},
+ {BAP_RESP_CODE_REQFULLNAK, "Request Full Nak"},
+ {0, NULL}
};
#define BAP_LINK_TYPE_ISDN 0 /* ISDN */
@@ -532,25 +592,25 @@ static const value_string bap_resp_code_vals[] = {
#define BAP_LINK_TYPE_RESV6 6 /* Reserved */
#define BAP_LINK_TYPE_RESV7 7 /* Reserved */
static const value_string bap_link_type_vals[] = {
- {BAP_LINK_TYPE_ISDN, "ISDN" },
- {BAP_LINK_TYPE_X25, "X.25" },
- {BAP_LINK_TYPE_ANALOG, "Analog" },
- {BAP_LINK_TYPE_SD, "Switched Digital (non-ISDN)" },
- {BAP_LINK_TYPE_ISDNOV, "ISDN data over voice" },
- {BAP_LINK_TYPE_RESV5, "Reserved" },
- {BAP_LINK_TYPE_RESV6, "Reserved" },
- {BAP_LINK_TYPE_RESV7, "Reserved" },
- {0, NULL }
+ {BAP_LINK_TYPE_ISDN, "ISDN"},
+ {BAP_LINK_TYPE_X25, "X.25"},
+ {BAP_LINK_TYPE_ANALOG, "Analog"},
+ {BAP_LINK_TYPE_SD, "Switched Digital (non-ISDN)"},
+ {BAP_LINK_TYPE_ISDNOV, "ISDN data over voice"},
+ {BAP_LINK_TYPE_RESV5, "Reserved"},
+ {BAP_LINK_TYPE_RESV6, "Reserved"},
+ {BAP_LINK_TYPE_RESV7, "Reserved"},
+ {0, NULL}
};
#define BAP_PHONE_DELTA_SUBOPT_UNIQ_DIGIT 1 /* Unique Digit */
#define BAP_PHONE_DELTA_SUBOPT_SUBSC_NUM 2 /* Subscriber Number */
#define BAP_PHONE_DELTA_SUBOPT_PHONENUM_SUBADDR 3 /* Phone Number Sub Address */
static const value_string bap_phone_delta_subopt_vals[] = {
- {BAP_PHONE_DELTA_SUBOPT_UNIQ_DIGIT, "Unique Digit" },
- {BAP_PHONE_DELTA_SUBOPT_SUBSC_NUM, "Subscriber Number" },
- {BAP_PHONE_DELTA_SUBOPT_PHONENUM_SUBADDR, "Phone Number Sub Address" },
- {0, NULL }
+ {BAP_PHONE_DELTA_SUBOPT_UNIQ_DIGIT, "Unique Digit"},
+ {BAP_PHONE_DELTA_SUBOPT_SUBSC_NUM, "Subscriber Number"},
+ {BAP_PHONE_DELTA_SUBOPT_PHONENUM_SUBADDR, "Phone Number Sub Address"},
+ {0, NULL}
};
/*
@@ -560,101 +620,101 @@ static const value_string bap_phone_delta_subopt_vals[] = {
* adapted to BAP protocol.
*/
static const value_string q931_cause_code_vals[] = {
- { 0x00, "Call successful" },
- { 0x01, "Unallocated (unassigned) number" },
- { 0x02, "No route to specified transit network" },
- { 0x03, "No route to destination" },
- { 0x04, "Send special information tone" },
- { 0x05, "Misdialled trunk prefix" },
- { 0x06, "Channel unacceptable" },
- { 0x07, "Call awarded and being delivered in an established channel" },
- { 0x08, "Prefix 0 dialed but not allowed" },
- { 0x09, "Prefix 1 dialed but not allowed" },
- { 0x0A, "Prefix 1 dialed but not required" },
- { 0x0B, "More digits received than allowed, call is proceeding" },
- { 0x10, "Normal call clearing" },
- { 0x11, "User busy" },
- { 0x12, "No user responding" },
- { 0x13, "No answer from user (user alerted)" },
- { 0x14, "Subscriber absent" },
- { 0x15, "Call rejected" },
- { 0x16, "Number changed" },
- { 0x17, "Reverse charging rejected" },
- { 0x18, "Call suspended" },
- { 0x19, "Call resumed" },
- { 0x1A, "Non-selected user clearing" },
- { 0x1B, "Destination out of order" },
- { 0x1C, "Invalid number format (incomplete number)" },
- { 0x1D, "Facility rejected" },
- { 0x1E, "Response to STATUS ENQUIRY" },
- { 0x1F, "Normal unspecified" },
- { 0x21, "Circuit out of order" },
- { 0x22, "No circuit/channel available" },
- { 0x23, "Destination unattainable" },
- { 0x25, "Degraded service" },
- { 0x26, "Network out of order" },
- { 0x27, "Transit delay range cannot be achieved" },
- { 0x28, "Throughput range cannot be achieved" },
- { 0x29, "Temporary failure" },
- { 0x2A, "Switching equipment congestion" },
- { 0x2B, "Access information discarded" },
- { 0x2C, "Requested circuit/channel not available" },
- { 0x2D, "Pre-empted" },
- { 0x2E, "Precedence call blocked" },
- { 0x2F, "Resources unavailable, unspecified" },
- { 0x31, "Quality of service unavailable" },
- { 0x32, "Requested facility not subscribed" },
- { 0x33, "Reverse charging not allowed" },
- { 0x34, "Outgoing calls barred" },
- { 0x35, "Outgoing calls barred within CUG" },
- { 0x36, "Incoming calls barred" },
- { 0x37, "Incoming calls barred within CUG" },
- { 0x38, "Call waiting not subscribed" },
- { 0x39, "Bearer capability not authorized" },
- { 0x3A, "Bearer capability not presently available" },
- { 0x3E, "Inconsistency in designated outgoing access information and subscriber class" },
- { 0x3F, "Service or option not available, unspecified" },
- { 0x41, "Bearer capability not implemented" },
- { 0x42, "Channel type not implemented" },
- { 0x43, "Transit network selection not implemented" },
- { 0x44, "Message not implemented" },
- { 0x45, "Requested facility not implemented" },
- { 0x46, "Only restricted digital information bearer capability is available" },
- { 0x4F, "Service or option not implemented, unspecified" },
- { 0x51, "Invalid call reference value" },
- { 0x52, "Identified channel does not exist" },
- { 0x53, "Call identity does not exist for suspended call" },
- { 0x54, "Call identity in use" },
- { 0x55, "No call suspended" },
- { 0x56, "Call having the requested call identity has been cleared" },
- { 0x57, "Called user not member of CUG" },
- { 0x58, "Incompatible destination" },
- { 0x59, "Non-existent abbreviated address entry" },
- { 0x5A, "Destination address missing, and direct call not subscribed" },
- { 0x5B, "Invalid transit network selection (national use)" },
- { 0x5C, "Invalid facility parameter" },
- { 0x5D, "Mandatory information element is missing" },
- { 0x5F, "Invalid message, unspecified" },
- { 0x60, "Mandatory information element is missing" },
- { 0x61, "Message type non-existent or not implemented" },
- { 0x62, "Message not compatible with call state or message type non-existent or not implemented" },
- { 0x63, "Information element non-existent or not implemented" },
- { 0x64, "Invalid information element contents" },
- { 0x65, "Message not compatible with call state" },
- { 0x66, "Recovery on timer expiry" },
- { 0x67, "Parameter non-existent or not implemented - passed on" },
- { 0x6E, "Message with unrecognized parameter discarded" },
- { 0x6F, "Protocol error, unspecified" },
- { 0x7F, "Internetworking, unspecified" },
- { 0xFF, "Non-specific failure" },
- { 0, NULL }
+ {0x00, "Call successful"},
+ {0x01, "Unallocated (unassigned) number"},
+ {0x02, "No route to specified transit network"},
+ {0x03, "No route to destination"},
+ {0x04, "Send special information tone"},
+ {0x05, "Misdialled trunk prefix"},
+ {0x06, "Channel unacceptable"},
+ {0x07, "Call awarded and being delivered in an established channel"},
+ {0x08, "Prefix 0 dialed but not allowed"},
+ {0x09, "Prefix 1 dialed but not allowed"},
+ {0x0A, "Prefix 1 dialed but not required"},
+ {0x0B, "More digits received than allowed, call is proceeding"},
+ {0x10, "Normal call clearing"},
+ {0x11, "User busy"},
+ {0x12, "No user responding"},
+ {0x13, "No answer from user (user alerted)"},
+ {0x14, "Subscriber absent"},
+ {0x15, "Call rejected"},
+ {0x16, "Number changed"},
+ {0x17, "Reverse charging rejected"},
+ {0x18, "Call suspended"},
+ {0x19, "Call resumed"},
+ {0x1A, "Non-selected user clearing"},
+ {0x1B, "Destination out of order"},
+ {0x1C, "Invalid number format (incomplete number)"},
+ {0x1D, "Facility rejected"},
+ {0x1E, "Response to STATUS ENQUIRY"},
+ {0x1F, "Normal unspecified"},
+ {0x21, "Circuit out of order"},
+ {0x22, "No circuit/channel available"},
+ {0x23, "Destination unattainable"},
+ {0x25, "Degraded service"},
+ {0x26, "Network out of order"},
+ {0x27, "Transit delay range cannot be achieved"},
+ {0x28, "Throughput range cannot be achieved"},
+ {0x29, "Temporary failure"},
+ {0x2A, "Switching equipment congestion"},
+ {0x2B, "Access information discarded"},
+ {0x2C, "Requested circuit/channel not available"},
+ {0x2D, "Pre-empted"},
+ {0x2E, "Precedence call blocked"},
+ {0x2F, "Resources unavailable, unspecified"},
+ {0x31, "Quality of service unavailable"},
+ {0x32, "Requested facility not subscribed"},
+ {0x33, "Reverse charging not allowed"},
+ {0x34, "Outgoing calls barred"},
+ {0x35, "Outgoing calls barred within CUG"},
+ {0x36, "Incoming calls barred"},
+ {0x37, "Incoming calls barred within CUG"},
+ {0x38, "Call waiting not subscribed"},
+ {0x39, "Bearer capability not authorized"},
+ {0x3A, "Bearer capability not presently available"},
+ {0x3E, "Inconsistency in designated outgoing access information and subscriber class"},
+ {0x3F, "Service or option not available, unspecified"},
+ {0x41, "Bearer capability not implemented"},
+ {0x42, "Channel type not implemented"},
+ {0x43, "Transit network selection not implemented"},
+ {0x44, "Message not implemented"},
+ {0x45, "Requested facility not implemented"},
+ {0x46, "Only restricted digital information bearer capability is available"},
+ {0x4F, "Service or option not implemented, unspecified"},
+ {0x51, "Invalid call reference value"},
+ {0x52, "Identified channel does not exist"},
+ {0x53, "Call identity does not exist for suspended call"},
+ {0x54, "Call identity in use"},
+ {0x55, "No call suspended"},
+ {0x56, "Call having the requested call identity has been cleared"},
+ {0x57, "Called user not member of CUG"},
+ {0x58, "Incompatible destination"},
+ {0x59, "Non-existent abbreviated address entry"},
+ {0x5A, "Destination address missing, and direct call not subscribed"},
+ {0x5B, "Invalid transit network selection (national use)"},
+ {0x5C, "Invalid facility parameter"},
+ {0x5D, "Mandatory information element is missing"},
+ {0x5F, "Invalid message, unspecified"},
+ {0x60, "Mandatory information element is missing"},
+ {0x61, "Message type non-existent or not implemented"},
+ {0x62, "Message not compatible with call state or message type non-existent or not implemented"},
+ {0x63, "Information element non-existent or not implemented"},
+ {0x64, "Invalid information element contents"},
+ {0x65, "Message not compatible with call state"},
+ {0x66, "Recovery on timer expiry"},
+ {0x67, "Parameter non-existent or not implemented - passed on"},
+ {0x6E, "Message with unrecognized parameter discarded"},
+ {0x6F, "Protocol error, unspecified"},
+ {0x7F, "Internetworking, unspecified"},
+ {0xFF, "Non-specific failure"},
+ {0, NULL}
};
static value_string_ext q931_cause_code_vals_ext = VALUE_STRING_EXT_INIT(q931_cause_code_vals);
static const value_string bap_call_status_opt_action_vals[] = {
- {0, "No retry" },
- {1, "Retry" },
- {0, NULL }
+ {0, "No retry"},
+ {1, "Retry"},
+ {0, NULL}
};
#define STAC_CM_NONE 0
@@ -663,12 +723,12 @@ static const value_string bap_call_status_opt_action_vals[] = {
#define STAC_CM_SN 3
#define STAC_CM_EXTMODE 4
static const value_string stac_checkmode_vals[] = {
- {STAC_CM_NONE, "None" },
- {STAC_CM_LCB, "LCB" },
- {STAC_CM_CRC, "CRC" },
- {STAC_CM_SN, "Sequence Number" },
- {STAC_CM_EXTMODE, "Extended Mode" },
- {0, NULL }
+ {STAC_CM_NONE, "None"},
+ {STAC_CM_LCB, "LCB"},
+ {STAC_CM_CRC, "CRC"},
+ {STAC_CM_SN, "Sequence Number"},
+ {STAC_CM_EXTMODE, "Extended Mode"},
+ {0, NULL}
};
#define LZSDCP_CM_NONE 0
@@ -676,287 +736,270 @@ static const value_string stac_checkmode_vals[] = {
#define LZSDCP_CM_SN 2
#define LZSDCP_CM_SN_LCB 3
static const value_string lzsdcp_checkmode_vals[] = {
- {LZSDCP_CM_NONE, "None" },
- {LZSDCP_CM_LCB, "LCB" },
- {LZSDCP_CM_SN, "Sequence Number" },
- {LZSDCP_CM_SN_LCB, "Sequence Number + LCB" },
- {0, NULL }
+ {LZSDCP_CM_NONE, "None"},
+ {LZSDCP_CM_LCB, "LCB"},
+ {LZSDCP_CM_SN, "Sequence Number"},
+ {LZSDCP_CM_SN_LCB, "Sequence Number + LCB (default)"},
+ {0, NULL}
};
#define LZSDCP_PM_NONE 0
#define LZSDCP_PM_PROC_UNCOMP 1
static const value_string lzsdcp_processmode_vals[] = {
- {LZSDCP_PM_NONE, "None" },
- {LZSDCP_PM_PROC_UNCOMP, "Process-Uncompressed" },
- {0, NULL }
+ {LZSDCP_PM_NONE, "None (default)"},
+ {LZSDCP_PM_PROC_UNCOMP, "Process-Uncompressed"},
+ {0, NULL}
+};
+
+#define DCE_MODE_1 1
+#define DCE_MODE_2 2
+static const value_string dce_mode_vals[] = {
+ {DCE_MODE_1, "No Additional Negotiation"},
+ {DCE_MODE_2, "Full PPP Negotiation and State Machine"},
+ {0, NULL}
};
/*
* Options. (LCP)
*/
-#define CI_MRU 1 /* Maximum Receive Unit */
-#define CI_ASYNCMAP 2 /* Async Control Character Map */
-#define CI_AUTHTYPE 3 /* Authentication Type */
-#define CI_QUALITY 4 /* Quality Protocol */
-#define CI_MAGICNUMBER 5 /* Magic Number */
-#define CI_PCOMPRESSION 7 /* Protocol Field Compression */
-#define CI_ACCOMPRESSION 8 /* Address/Control Field Compression */
-#define CI_FCS_ALTERNATIVES 9 /* FCS Alternatives (RFC 1570) */
-#define CI_SELF_DESCRIBING_PAD 10 /* Self-Describing Pad (RFC 1570) */
-#define CI_NUMBERED_MODE 11 /* Numbered Mode (RFC 1663) */
-#define CI_CALLBACK 13 /* Callback (RFC 1570) */
-#define CI_COMPOUND_FRAMES 15 /* Compound frames (RFC 1570) */
-#define CI_MULTILINK_MRRU 17 /* Multilink MRRU (RFC 1990) */
-#define CI_MULTILINK_SSNH 18 /* Multilink Short Sequence Number
- Header (RFC 1990) */
-#define CI_MULTILINK_EP_DISC 19 /* Multilink Endpoint Discriminator
- (RFC 1990) */
-#define CI_DCE_IDENTIFIER 21 /* DCE Identifier */
-#define CI_MULTILINK_PLUS_PROC 22 /* Multilink Plus Procedure */
-#define CI_LINK_DISC_FOR_BACP 23 /* Link Discriminator for BACP
- (RFC 2125) */
-#define CI_LCP_AUTHENTICATION 24 /* LCP Authentication Option */
-#define CI_COBS 25 /* Consistent Overhead Byte
- Stuffing */
-#define CI_PREFIX_ELISION 26 /* Prefix elision */
-#define CI_MULTILINK_HDR_FMT 27 /* Multilink header format */
-#define CI_INTERNATIONALIZATION 28 /* Internationalization (RFC 2484) */
-#define CI_SDL_ON_SONET_SDH 29 /* Simple Data Link on SONET/SDH */
-
+#define CI_VENDORSPECIFIC 0 /* Vendor Specific [RFC2153] */
+#define CI_MRU 1 /* Maximum Receive Unit [RFC1661] */
+#define CI_ASYNCMAP 2 /* Async Control Character Map */
+#define CI_AUTHPROT 3 /* Authentication Protocol [RFC1661] */
+#define CI_QUALITY 4 /* Quality Protocol [RFC1661] */
+#define CI_MAGICNUMBER 5 /* Magic Number [RFC1661] */
+#define CI_LINKQUALMON 6 /* DEPRECATED (Quality Protocol) [RFC1172] */
+#define CI_PCOMPRESSION 7 /* Protocol Field Compression [RFC1661] */
+#define CI_ACCOMPRESSION 8 /* Address/Control Field Compression
+ [RFC1661] */
+#define CI_FCS_ALTERNATIVES 9 /* FCS Alternatives [RFC1570] */
+#define CI_SELF_DESCRIBING_PAD 10 /* Self-Describing Pad [RFC1570] */
+#define CI_NUMBERED_MODE 11 /* Numbered Mode [RFC1663] */
+#define CI_MULTILINK_PROC 12 /* DEPRECATED (Multi-Link Procedure) */
+#define CI_CALLBACK 13 /* Callback [RFC1570] */
+#define CI_CONNECTTIME 14 /* DEPRECATED (Connect Time) */
+#define CI_COMPOUND_FRAMES 15 /* DEPRECATED (Compound Frames) [RFC1570] */
+#define CI_NOMDATAENCAP 16 /* DEPRECATED (Nominal Data Encapsulation) */
+/* NOTE: IANA lists CI_NOMDATAENCAP as 16, but it is listed as 14 in
+ * http://tools.ietf.org/html/draft-ietf-pppext-dataencap-03.
+ * Which is correct is anyone's guess. */
+#define CI_MULTILINK_MRRU 17 /* Multilink MRRU [RFC1990] */
+#define CI_MULTILINK_SSNH 18 /* Multilink Short Sequence Number Header
+ [RFC1990] */
+#define CI_MULTILINK_EP_DISC 19 /* Multilink Endpoint Discriminator
+ [RFC1990] */
+#define CI_PROP_KEN 20 /* Proprietary [Ken Culbert] ken@funk.com */
+#define CI_DCE_IDENTIFIER 21 /* DCE Identifier [RFC1976]: Warning:
+ Option type 25 in the RFC is incorrect */
+#define CI_MULTILINK_PLUS_PROC 22 /* Multilink Plus Procedure [RFC1934] */
+#define CI_LINK_DISC_FOR_BACP 23 /* Link Discriminator for BACP [RFC2125] */
+#define CI_LCP_AUTHENTICATION 24 /* LCP Authentication Option [Culbert] */
+#define CI_COBS 25 /* Consistent Overhead Byte Stuffing (COBS)
+ [Carlson] */
+#define CI_PREFIX_ELISION 26 /* Prefix elision [RFC2686][RFC2687] */
+#define CI_MULTILINK_HDR_FMT 27 /* Multilink header format
+ [RFC2686][RFC2687] */
+#define CI_INTERNATIONALIZATION 28 /* Internationalization [RFC2484] */
+#define CI_SDL_ON_SONET_SDH 29 /* Simple Data Link on SONET/SDH
+ [RFC2823] */
+#define CI_UNASSIGNED 30 /* Unassigned ... but so are 31-255, so
+ why do they bother specifically
+ mentioning this one, I wonder? */
+
+static int hf_lcp_magic_number = -1;
+static int hf_lcp_data = -1;
+static int hf_lcp_message = -1;
+static int hf_lcp_secs_remaining = -1;
+static int hf_lcp_rej_proto = -1;
+static int hf_lcp_opt_type = -1;
+static int hf_lcp_opt_length = -1;
+static int hf_lcp_opt_oui = -1;
+static int hf_lcp_opt_kind = -1;
+static int hf_lcp_opt_data = -1;
+static int hf_lcp_opt_mru = -1;
+static int hf_lcp_opt_asyncmap = -1;
+static int hf_lcp_opt_asyncmap_nul = -1;
+static int hf_lcp_opt_asyncmap_soh = -1;
+static int hf_lcp_opt_asyncmap_stx = -1;
+static int hf_lcp_opt_asyncmap_etx = -1;
+static int hf_lcp_opt_asyncmap_eot = -1;
+static int hf_lcp_opt_asyncmap_enq = -1;
+static int hf_lcp_opt_asyncmap_ack = -1;
+static int hf_lcp_opt_asyncmap_bel = -1;
+static int hf_lcp_opt_asyncmap_bs = -1;
+static int hf_lcp_opt_asyncmap_ht = -1;
+static int hf_lcp_opt_asyncmap_lf = -1;
+static int hf_lcp_opt_asyncmap_vt = -1;
+static int hf_lcp_opt_asyncmap_ff = -1;
+static int hf_lcp_opt_asyncmap_cr = -1;
+static int hf_lcp_opt_asyncmap_so = -1;
+static int hf_lcp_opt_asyncmap_si = -1;
+static int hf_lcp_opt_asyncmap_dle = -1;
+static int hf_lcp_opt_asyncmap_dc1 = -1;
+static int hf_lcp_opt_asyncmap_dc2 = -1;
+static int hf_lcp_opt_asyncmap_dc3 = -1;
+static int hf_lcp_opt_asyncmap_dc4 = -1;
+static int hf_lcp_opt_asyncmap_nak = -1;
+static int hf_lcp_opt_asyncmap_syn = -1;
+static int hf_lcp_opt_asyncmap_etb = -1;
+static int hf_lcp_opt_asyncmap_can = -1;
+static int hf_lcp_opt_asyncmap_em = -1;
+static int hf_lcp_opt_asyncmap_sub = -1;
+static int hf_lcp_opt_asyncmap_esc = -1;
+static int hf_lcp_opt_asyncmap_fs = -1;
+static int hf_lcp_opt_asyncmap_gs = -1;
+static int hf_lcp_opt_asyncmap_rs = -1;
+static int hf_lcp_opt_asyncmap_us = -1;
+static int hf_lcp_opt_auth_protocol = -1;
+static int hf_lcp_opt_algorithm = -1;
+static int hf_lcp_opt_quality_protocol = -1;
+static int hf_lcp_opt_magic_number = - 1;
+static int hf_lcp_opt_reportingperiod = - 1;
+static int hf_lcp_opt_fcs_alternatives = -1;
+static int hf_lcp_opt_fcs_alternatives_null = -1;
+static int hf_lcp_opt_fcs_alternatives_ccitt16 = -1;
+static int hf_lcp_opt_fcs_alternatives_ccitt32 = -1;
+static int hf_lcp_opt_maximum = -1;
+static int hf_lcp_opt_window = -1;
+static int hf_lcp_opt_hdlc_address = -1;
+static int hf_lcp_opt_operation = -1;
+static int hf_lcp_opt_message = -1;
+static int hf_lcp_opt_mrru = -1;
+static int hf_lcp_opt_ep_disc_class = -1;
+static int hf_lcp_opt_ip_address = -1;
+static int hf_lcp_opt_802_1_address = -1;
+static int hf_lcp_opt_magic_block = -1;
+static int hf_lcp_opt_psndn = -1;
+static int hf_lcp_opt_mode = -1;
+static int hf_lcp_opt_unused = -1;
+static int hf_lcp_opt_link_discrim = -1;
+static int hf_lcp_opt_id = -1;
+static int hf_lcp_opt_cobs_flags = -1;
+static int hf_lcp_opt_cobs_flags_res = -1;
+static int hf_lcp_opt_cobs_flags_pre = -1;
+static int hf_lcp_opt_cobs_flags_zxe = -1;
+static int hf_lcp_opt_class = -1;
+static int hf_lcp_opt_prefix = -1;
+static int hf_lcp_opt_code = -1;
+static int hf_lcp_opt_max_susp_classes = -1;
+static int hf_lcp_opt_MIBenum = -1;
+static int hf_lcp_opt_language_tag = -1;
+
+static void dissect_lcp_vendor_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
static void dissect_lcp_mru_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
static void dissect_lcp_async_map_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
-static void dissect_lcp_protocol_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
static void dissect_lcp_authprot_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
-static void dissect_lcp_magicnumber_opt(const ip_tcp_opt *optp,
- tvbuff_t *tvb, int offset, guint length,
- packet_info *pinfo, proto_tree *tree);
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
+static void dissect_lcp_qualprot_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
+static void dissect_lcp_magicnumber_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
+static void dissect_lcp_linkqualmon_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
+static void dissect_lcp_simple_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
static void dissect_lcp_fcs_alternatives_opt(const ip_tcp_opt *optp,
- tvbuff_t *tvb, int offset, guint length,
- packet_info *pinfo, proto_tree *tree);
-static void dissect_lcp_numbered_mode_opt(const ip_tcp_opt *optp,
- tvbuff_t *tvb, int offset, guint length,
- packet_info *pinfo, proto_tree *tree);
+ tvbuff_t *tvb, int offset, guint length, packet_info *pinfo _U_,
+ proto_tree *tree);
static void dissect_lcp_self_describing_pad_opt(const ip_tcp_opt *optp,
- tvbuff_t *tvb, int offset, guint length,
- packet_info *pinfo, proto_tree *tree);
+ tvbuff_t *tvb, int offset, guint length, packet_info *pinfo _U_,
+ proto_tree *tree);
+static void dissect_lcp_numbered_mode_opt(const ip_tcp_opt *optp,
+ tvbuff_t *tvb, int offset, guint length, packet_info *pinfo _U_,
+ proto_tree *tree);
static void dissect_lcp_callback_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
static void dissect_lcp_multilink_mrru_opt(const ip_tcp_opt *optp,
- tvbuff_t *tvb, int offset, guint length,
- packet_info *pinfo, proto_tree *tree);
+ tvbuff_t *tvb, int offset, guint length, packet_info *pinfo _U_,
+ proto_tree *tree);
static void dissect_lcp_multilink_ep_disc_opt(const ip_tcp_opt *optp,
- tvbuff_t *tvb, int offset, guint length,
- packet_info *pinfo, proto_tree *tree);
-static void dissect_lcp_bap_link_discriminator_opt(const ip_tcp_opt *optp,
- tvbuff_t *tvb, int offset, guint length,
- packet_info *pinfo, proto_tree *tree);
+ tvbuff_t *tvb, int offset, guint length, packet_info *pinfo _U_,
+ proto_tree *tree);
+static void dissect_lcp_dce_identifier_opt(const ip_tcp_opt *optp,
+ tvbuff_t *tvb, int offset, guint length, packet_info *pinfo _U_,
+ proto_tree *tree);
+static void dissect_lcp_multilink_pp_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
+static void dissect_lcp_bacp_link_discriminator_opt(const ip_tcp_opt *optp,
+ tvbuff_t *tvb, int offset, guint length, packet_info *pinfo _U_,
+ proto_tree *tree);
+static void dissect_lcp_auth_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
+static void dissect_lcp_cobs_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
+static void dissect_lcp_prefix_elision_opt(const ip_tcp_opt *optp,
+ tvbuff_t *tvb, int offset, guint length, packet_info *pinfo _U_,
+ proto_tree *tree);
+static void dissect_lcp_multilink_hdr_fmt_opt(const ip_tcp_opt *optp,
+ tvbuff_t *tvb, int offset, guint length, packet_info *pinfo _U_,
+ proto_tree *tree);
static void dissect_lcp_internationalization_opt(const ip_tcp_opt *optp,
- tvbuff_t *tvb, int offset, guint length,
- packet_info *pinfo, proto_tree *tree);
+ tvbuff_t *tvb, int offset, guint length, packet_info *pinfo _U_,
+ proto_tree *tree);
static void dissect_mp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static const ip_tcp_opt lcp_opts[] = {
- {
- CI_MRU,
- "Maximum Receive Unit",
- NULL,
- FIXED_LENGTH,
- 4,
- dissect_lcp_mru_opt
- },
- {
- CI_ASYNCMAP,
- "Async Control Character Map",
- NULL,
- FIXED_LENGTH,
- 6,
- dissect_lcp_async_map_opt
- },
- {
- CI_AUTHTYPE,
- "Authentication protocol",
- &ett_lcp_authprot_opt,
- VARIABLE_LENGTH,
- 4,
- dissect_lcp_authprot_opt
- },
- {
- CI_QUALITY,
- "Quality protocol",
- &ett_lcp_qualprot_opt,
- VARIABLE_LENGTH,
- 4,
- dissect_lcp_protocol_opt
- },
- {
- CI_MAGICNUMBER,
- "Magic number",
- NULL,
- FIXED_LENGTH,
- 6,
- dissect_lcp_magicnumber_opt
- },
- {
- CI_PCOMPRESSION,
- "Protocol field compression",
- NULL,
- FIXED_LENGTH,
- 2,
- NULL
- },
- {
- CI_ACCOMPRESSION,
- "Address/control field compression",
- NULL,
- FIXED_LENGTH,
- 2,
- NULL
- },
- {
- CI_FCS_ALTERNATIVES,
- "FCS alternatives",
- &ett_lcp_fcs_alternatives_opt,
- FIXED_LENGTH,
- 3,
- dissect_lcp_fcs_alternatives_opt
- },
- {
- CI_SELF_DESCRIBING_PAD,
- "Maximum octets of self-describing padding",
- NULL,
- FIXED_LENGTH,
- 3,
- dissect_lcp_self_describing_pad_opt
- },
- {
- CI_NUMBERED_MODE,
- "Numbered mode",
- &ett_lcp_numbered_mode_opt,
- VARIABLE_LENGTH,
- 4,
- dissect_lcp_numbered_mode_opt
- },
- {
- CI_CALLBACK,
- "Callback",
- &ett_lcp_callback_opt,
- VARIABLE_LENGTH,
- 3,
- dissect_lcp_callback_opt,
- },
- {
- CI_COMPOUND_FRAMES,
- "Compound frames",
- NULL,
- FIXED_LENGTH,
- 2,
- NULL
- },
- {
- CI_MULTILINK_MRRU,
- "Multilink MRRU",
- NULL,
- FIXED_LENGTH,
- 4,
- dissect_lcp_multilink_mrru_opt
- },
- {
- CI_MULTILINK_SSNH,
- "Use short sequence number headers",
- NULL,
- FIXED_LENGTH,
- 2,
- NULL
- },
- {
- CI_MULTILINK_EP_DISC,
- "Multilink endpoint discriminator",
- &ett_lcp_multilink_ep_disc_opt,
- VARIABLE_LENGTH,
- 3,
- dissect_lcp_multilink_ep_disc_opt,
- },
- {
- CI_DCE_IDENTIFIER,
- "DCE identifier",
- NULL,
- VARIABLE_LENGTH,
- 2,
- NULL
- },
- {
- CI_MULTILINK_PLUS_PROC,
- "Multilink Plus Procedure",
- NULL,
- VARIABLE_LENGTH,
- 2,
- NULL
- },
- {
- CI_LINK_DISC_FOR_BACP,
- "Link discriminator for BAP",
- NULL,
- FIXED_LENGTH,
- 4,
- dissect_lcp_bap_link_discriminator_opt
- },
- {
- CI_LCP_AUTHENTICATION,
- "LCP authentication",
- NULL,
- VARIABLE_LENGTH,
- 2,
- NULL
- },
- {
- CI_COBS,
- "Consistent Overhead Byte Stuffing",
- NULL,
- VARIABLE_LENGTH,
- 2,
- NULL
- },
- {
- CI_PREFIX_ELISION,
- "Prefix elision",
- NULL,
- VARIABLE_LENGTH,
- 2,
- NULL
- },
- {
- CI_MULTILINK_HDR_FMT,
- "Multilink header format",
- NULL,
- VARIABLE_LENGTH,
- 2,
- NULL
- },
- {
- CI_INTERNATIONALIZATION,
- "Internationalization",
- &ett_lcp_internationalization_opt,
- VARIABLE_LENGTH,
- 7,
- dissect_lcp_internationalization_opt
- },
- {
- CI_SDL_ON_SONET_SDH,
- "Simple data link on SONET/SDH",
- NULL,
- VARIABLE_LENGTH,
- 2,
- NULL
- }
+ {CI_VENDORSPECIFIC, "Vendor Specific", &ett_lcp_vendor_opt,
+ OPT_LEN_VARIABLE_LENGTH, 6, dissect_lcp_vendor_opt},
+ {CI_MRU, "Maximum Receive Unit", &ett_lcp_mru_opt,
+ OPT_LEN_FIXED_LENGTH, 4, dissect_lcp_mru_opt},
+ {CI_ASYNCMAP, "Async Control Character Map", &ett_lcp_asyncmap_opt,
+ OPT_LEN_FIXED_LENGTH, 6, dissect_lcp_async_map_opt},
+ {CI_AUTHPROT, "Authentication Protocol", &ett_lcp_authprot_opt,
+ OPT_LEN_VARIABLE_LENGTH, 4, dissect_lcp_authprot_opt},
+ {CI_QUALITY, "Quality Protocol", &ett_lcp_qualprot_opt,
+ OPT_LEN_VARIABLE_LENGTH, 4, dissect_lcp_qualprot_opt},
+ {CI_MAGICNUMBER, "Magic Number", &ett_lcp_magicnumber_opt,
+ OPT_LEN_FIXED_LENGTH, 6, dissect_lcp_magicnumber_opt},
+ {CI_LINKQUALMON, "Link Quality Monitoring", &ett_lcp_linkqualmon_opt,
+ OPT_LEN_FIXED_LENGTH, 6, dissect_lcp_linkqualmon_opt},
+ {CI_PCOMPRESSION, "Protocol Field Compression", &ett_lcp_pcomp_opt,
+ OPT_LEN_FIXED_LENGTH, 2, dissect_lcp_simple_opt},
+ {CI_ACCOMPRESSION, "Address and Control Field Compression", &ett_lcp_acccomp_opt,
+ OPT_LEN_FIXED_LENGTH, 2, dissect_lcp_simple_opt},
+ {CI_FCS_ALTERNATIVES, "FCS Alternatives", &ett_lcp_fcs_alternatives_opt,
+ OPT_LEN_FIXED_LENGTH, 3, dissect_lcp_fcs_alternatives_opt},
+ {CI_SELF_DESCRIBING_PAD, "Self Describing Pad", &ett_lcp_self_desc_pad_opt,
+ OPT_LEN_FIXED_LENGTH, 3, dissect_lcp_self_describing_pad_opt},
+ {CI_NUMBERED_MODE, "Numbered Mode", &ett_lcp_numbered_mode_opt,
+ OPT_LEN_VARIABLE_LENGTH, 4, dissect_lcp_numbered_mode_opt},
+ /* TODO? CI_MULTILINK_PROC */
+ {CI_CALLBACK, "Callback", &ett_lcp_callback_opt,
+ OPT_LEN_VARIABLE_LENGTH, 3, dissect_lcp_callback_opt},
+ /* TODO? CI_CONNECTTIME */
+ {CI_COMPOUND_FRAMES, "Compound Frames (Deprecated)", &ett_lcp_compound_frames_opt,
+ OPT_LEN_FIXED_LENGTH, 2, dissect_lcp_simple_opt},
+ {CI_NOMDATAENCAP, "Nominal Data Encapsulation (Deprecated)", &ett_lcp_nomdataencap_opt,
+ OPT_LEN_FIXED_LENGTH, 2, dissect_lcp_simple_opt},
+ {CI_MULTILINK_MRRU, "Multilink MRRU", &ett_lcp_multilink_mrru_opt,
+ OPT_LEN_FIXED_LENGTH, 4, dissect_lcp_multilink_mrru_opt},
+ {CI_MULTILINK_SSNH, "Multilink Short Sequence Number Header", &ett_lcp_multilink_ssnh_opt,
+ OPT_LEN_FIXED_LENGTH, 2, dissect_lcp_simple_opt},
+ {CI_MULTILINK_EP_DISC, "Multilink Endpoint Discriminator", &ett_lcp_multilink_ep_disc_opt,
+ OPT_LEN_VARIABLE_LENGTH, 3, dissect_lcp_multilink_ep_disc_opt},
+ /* TODO? CI_PROP_KEN: ken@funk.com: www.funk.com => www.juniper.net */
+ {CI_DCE_IDENTIFIER, "DCE Identifier", &ett_lcp_dce_identifier_opt,
+ OPT_LEN_FIXED_LENGTH, 3, dissect_lcp_dce_identifier_opt},
+ {CI_MULTILINK_PLUS_PROC, "Multi Link Plus Procedure", &ett_lcp_multilink_pp_opt,
+ OPT_LEN_FIXED_LENGTH, 4, dissect_lcp_multilink_pp_opt},
+ {CI_LINK_DISC_FOR_BACP, "Link Discriminator for BACP", &ett_lcp_bacp_link_discrim_opt,
+ OPT_LEN_FIXED_LENGTH, 4, dissect_lcp_bacp_link_discriminator_opt},
+ {CI_LCP_AUTHENTICATION, "LCP Authentication Option", &ett_lcp_auth_opt,
+ OPT_LEN_VARIABLE_LENGTH, 3, dissect_lcp_auth_opt},
+ {CI_COBS, "Consistent Overhead Byte Stuffing (COBS)", &ett_lcp_cobs_opt,
+ OPT_LEN_FIXED_LENGTH, 3, dissect_lcp_cobs_opt},
+ {CI_PREFIX_ELISION, "Prefix Elision", &ett_lcp_prefix_elision_opt,
+ OPT_LEN_VARIABLE_LENGTH, 2, dissect_lcp_prefix_elision_opt},
+ {CI_MULTILINK_HDR_FMT, "Multilink header format", &ett_multilink_hdr_fmt_opt,
+ OPT_LEN_FIXED_LENGTH, 4, dissect_lcp_multilink_hdr_fmt_opt},
+ {CI_INTERNATIONALIZATION, "Internationalization", &ett_lcp_internationalization_opt,
+ OPT_LEN_VARIABLE_LENGTH, 7, dissect_lcp_internationalization_opt},
+ {CI_SDL_ON_SONET_SDH, "Simple Data Link on SONET/SDH", &ett_lcp_simple_opt,
+ OPT_LEN_FIXED_LENGTH, 2, dissect_lcp_simple_opt}
+ /* TODO? CI_UNASSIGNED */
};
#define N_LCP_OPTS (sizeof lcp_opts / sizeof lcp_opts[0])
@@ -977,114 +1020,45 @@ static const ip_tcp_opt lcp_opts[] = {
#define CI_APN_AMBR 10
static void dissect_vsncp_pdnid_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
+ int offset, guint length, packet_info *pinfo, proto_tree *tree);
static void dissect_vsncp_apname_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
+ int offset, guint length, packet_info *pinfo, proto_tree *tree);
static void dissect_vsncp_pdntype_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
+ int offset, guint length, packet_info *pinfo, proto_tree *tree);
static void dissect_vsncp_pdnaddress_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
+ int offset, guint length, packet_info *pinfo, proto_tree *tree);
static void dissect_vsncp_pco_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
+ int offset, guint length, packet_info *pinfo, proto_tree *tree);
static void dissect_vsncp_errorcode_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
+ int offset, guint length, packet_info *pinfo, proto_tree *tree);
static void dissect_vsncp_attachtype_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
+ int offset, guint length, packet_info *pinfo, proto_tree *tree);
static void dissect_vsncp_ipv4address_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
+ int offset, guint length, packet_info *pinfo, proto_tree *tree);
static void dissect_vsncp_addressalloc_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
+ int offset, guint length, packet_info *pinfo, proto_tree *tree);
static const ip_tcp_opt vsncp_opts[] = {
- {
- CI_PDN_IDENTIFIER,
- "PDN Identifier",
- NULL,
- FIXED_LENGTH,
- 3,
- dissect_vsncp_pdnid_opt
- },
- {
- CI_ACCESS_POINT_NM,
- "Access Point Name",
- NULL,
- VARIABLE_LENGTH,
- 2,
- dissect_vsncp_apname_opt
- },
- {
- CI_PDN_TYPE,
- "PDN Type",
- NULL,
- FIXED_LENGTH,
- 3,
- dissect_vsncp_pdntype_opt
- },
- {
- CI_PDN_ADDRESS,
- "PDN Address",
- NULL,
- VARIABLE_LENGTH,
- 3,
- dissect_vsncp_pdnaddress_opt
- },
- {
- CI_PROTOCOL_CONFIG,
- "Protocol Configuration Options",
- NULL,
- VARIABLE_LENGTH,
- 3,
- dissect_vsncp_pco_opt
- },
- {
- CI_ERROR_CODE,
- "Error Code",
- NULL,
- FIXED_LENGTH,
- 3,
- dissect_vsncp_errorcode_opt
- },
- {
- CI_ATTACH_TYPE,
- "Attach Type",
- NULL,
- FIXED_LENGTH,
- 3,
- dissect_vsncp_attachtype_opt
- },
- {
- CI_IPv4DEFAULT_ROUTER,
- "IPv4 Default Router Address",
- NULL,
- FIXED_LENGTH,
- 6,
- dissect_vsncp_ipv4address_opt
- },
- {
- CI_ADDRESS_ALLOC,
- "Address Allocation Cause",
- NULL,
- FIXED_LENGTH,
- 3,
- dissect_vsncp_addressalloc_opt
- },
- {
- CI_APN_AMBR,
- "APN-AMBR",
- NULL,
- VARIABLE_LENGTH,
- 4,
- NULL
- }
+ {CI_PDN_IDENTIFIER, "PDN Identifier", NULL,
+ OPT_LEN_FIXED_LENGTH, 3, dissect_vsncp_pdnid_opt},
+ {CI_ACCESS_POINT_NM, "Access Point Name", NULL,
+ OPT_LEN_VARIABLE_LENGTH, 2, dissect_vsncp_apname_opt},
+ {CI_PDN_TYPE, "PDN Type", NULL,
+ OPT_LEN_FIXED_LENGTH, 3, dissect_vsncp_pdntype_opt},
+ {CI_PDN_ADDRESS, "PDN Address", NULL,
+ OPT_LEN_VARIABLE_LENGTH, 3, dissect_vsncp_pdnaddress_opt},
+ {CI_PROTOCOL_CONFIG, "Protocol Configuration Options", NULL,
+ OPT_LEN_VARIABLE_LENGTH, 3, dissect_vsncp_pco_opt},
+ {CI_ERROR_CODE, "Error Code", NULL,
+ OPT_LEN_FIXED_LENGTH, 3, dissect_vsncp_errorcode_opt},
+ {CI_ATTACH_TYPE, "Attach Type", NULL,
+ OPT_LEN_FIXED_LENGTH, 3, dissect_vsncp_attachtype_opt},
+ {CI_IPv4DEFAULT_ROUTER, "IPv4 Default Router Address", NULL,
+ OPT_LEN_FIXED_LENGTH, 6, dissect_vsncp_ipv4address_opt},
+ {CI_ADDRESS_ALLOC, "Address Allocation Cause", NULL,
+ OPT_LEN_FIXED_LENGTH, 3, dissect_vsncp_addressalloc_opt},
+ {CI_APN_AMBR, "APN-AMBR", NULL,
+ OPT_LEN_VARIABLE_LENGTH, 4, NULL}
};
#define N_VSNCP_OPTS (sizeof vsncp_opts / sizeof vsncp_opts[0])
@@ -1092,108 +1066,112 @@ static const ip_tcp_opt vsncp_opts[] = {
/*
* CHAP Algorithms
*/
-#define CHAP_ALG_MD5 0x05 /* CHAP with MD5 */
-#define CHAP_ALG_MSV1 0x80 /* MS-CHAPv1 */
-#define CHAP_ALG_MSV2 0x81 /* MS-CHAPv2 */
-
-static const value_string chap_alg_vals[] = {
- {CHAP_ALG_MD5, "CHAP with MD5" },
- {CHAP_ALG_MSV1, "MS-CHAP" },
- {CHAP_ALG_MSV2, "MS-CHAP-2" },
- {0, NULL }
+/* 0-4: Reserved */
+#define CHAP_ALG_MD5 5 /* CHAP with MD5 */
+#define CHAP_AGL_SHA1 6 /* CHAP with SHA-1 [Black] */
+/* 7-127: Unassigned */
+#define CHAP_ALG_MSV1 128 /* MS-CHAP */
+#define CHAP_ALG_MSV2 129 /* MS-CHAP-2 */
+
+static const range_string chap_alg_rvals[] = {
+ {0, 4, "Reserved"},
+ {CHAP_ALG_MD5, CHAP_ALG_MD5, "CHAP with MD5"},
+ {CHAP_AGL_SHA1, CHAP_AGL_SHA1, "CHAP with SHA-1"},
+ {CHAP_ALG_MSV1, CHAP_ALG_MSV1, "MS-CHAP"},
+ {CHAP_ALG_MSV2, CHAP_ALG_MSV2, "MS-CHAP-2"},
+ {0, 0, NULL}
};
/*
* Options. (IPCP)
+ * http://tools.ietf.org/html/rfc1172
+ * http://tools.ietf.org/html/rfc1332
+ * http://tools.ietf.org/html/rfc1877
+ * http://tools.ietf.org/html/rfc2290
+ * http://tools.ietf.org/html/rfc3241
+ * http://tools.ietf.org/html/rfc3545
*/
-#define CI_ADDRS 1 /* IP Addresses (deprecated) (RFC 1172) */
-#define CI_COMPRESSTYPE 2 /* Compression Type (RFC 1332) */
-#define CI_ADDR 3 /* IP Address (RFC 1332) */
-#define CI_MOBILE_IPv4 4 /* Mobile IPv4 (RFC 2290) */
-#define CI_MS_DNS1 129 /* Primary DNS value (RFC 1877) */
-#define CI_MS_WINS1 130 /* Primary WINS value (RFC 1877) */
-#define CI_MS_DNS2 131 /* Secondary DNS value (RFC 1877) */
-#define CI_MS_WINS2 132 /* Secondary WINS value (RFC 1877) */
+#define CI_ADDRS 1 /* IP Addresses (deprecated) (RFC 1172) */
+#define CI_COMPRESS_PROTO 2 /* Compression Protocol (RFC 1332) */
+#define CI_ADDR 3 /* IP Address (RFC 1332) */
+#define CI_MOBILE_IPv4 4 /* Mobile IPv4 (RFC 2290) */
+#define CI_PRI_DNS 129 /* Primary DNS value (RFC 1877) */
+#define CI_PRI_NBNS 130 /* Primary NBNS value (RFC 1877) */
+#define CI_SEC_DNS 131 /* Secondary DNS value (RFC 1877) */
+#define CI_SEC_NBNS 132 /* Secondary NBNS value (RFC 1877) */
+
+static int hf_ipcp_opt_type = -1;
+static int hf_ipcp_opt_length = -1;
+static int hf_ipcp_opt_src_address = -1;
+static int hf_ipcp_opt_dst_address = -1;
+static int hf_ipcp_opt_compress_proto = -1;
+static int hf_ipcp_opt_max_cid = -1;
+static int hf_ipcp_opt_mrru = -1;
+static int hf_ipcp_opt_max_slot_id = -1;
+static int hf_ipcp_opt_comp_slot_id = -1;
+static int hf_ipcp_opt_tcp_space = -1;
+static int hf_ipcp_opt_non_tcp_space = -1;
+static int hf_ipcp_opt_f_max_period = -1;
+static int hf_ipcp_opt_f_max_time = -1;
+static int hf_ipcp_opt_max_header = -1;
+static int hf_ipcp_data = -1;
+static int hf_ipcp_opt_ip_address = -1;
+static int hf_ipcp_opt_mobilenodehomeaddr = -1;
+static int hf_ipcp_opt_pri_dns_address = -1;
+static int hf_ipcp_opt_pri_nbns_address = -1;
+static int hf_ipcp_opt_sec_dns_address = -1;
+static int hf_ipcp_opt_sec_nbns_address = -1;
+
+static int hf_ipcp_opt_rohc_type = -1;
+static int hf_ipcp_opt_rohc_length = -1;
+static int hf_ipcp_opt_rohc_profile = -1;
+static int hf_ipcp_opt_iphc_type = -1;
+static int hf_ipcp_opt_iphc_length = -1;
+static int hf_ipcp_opt_iphc_param = -1;
static void dissect_ipcp_addrs_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
-static void dissect_ipcp_addr_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
static void dissect_ipcp_compress_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
-static void dissect_ipcp_iphc_disableprot_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
+static void dissect_ipcp_rohc_profiles_opt(const ip_tcp_opt *optp,
+ tvbuff_t *tvb, int offset, guint length, packet_info *pinfo _U_,
+ proto_tree *tree);
+static void dissect_ipcp_iphc_simple_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
+static void dissect_ipcp_iphc_neghdrcomp_opt(const ip_tcp_opt *optp,
+ tvbuff_t *tvb, int offset, guint length, packet_info *pinfo _U_,
+ proto_tree *tree);
+static void dissect_ipcp_addr_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
+static void dissect_ipcp_mobileipv4_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
+static void dissect_ipcp_pri_dns_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
+static void dissect_ipcp_pri_nbns_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
+static void dissect_ipcp_sec_dns_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
+static void dissect_ipcp_sec_nbns_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
static const ip_tcp_opt ipcp_opts[] = {
- {
- CI_ADDRS,
- "IP addresses (deprecated)",
- &ett_ipcp_ipaddrs_opt,
- FIXED_LENGTH,
- 10,
- dissect_ipcp_addrs_opt
- },
- {
- CI_COMPRESSTYPE,
- "IP compression",
- &ett_ipcp_compress_opt,
- VARIABLE_LENGTH,
- 4,
- dissect_ipcp_compress_opt
- },
- {
- CI_ADDR,
- "IP address",
- NULL,
- FIXED_LENGTH,
- 6,
- dissect_ipcp_addr_opt
- },
- {
- CI_MOBILE_IPv4,
- "Mobile node's home IP address",
- NULL,
- FIXED_LENGTH,
- 6,
- dissect_ipcp_addr_opt
- },
- {
- CI_MS_DNS1,
- "Primary DNS server IP address",
- NULL,
- FIXED_LENGTH,
- 6,
- dissect_ipcp_addr_opt
- },
- {
- CI_MS_WINS1,
- "Primary WINS server IP address",
- NULL,
- FIXED_LENGTH,
- 6,
- dissect_ipcp_addr_opt
- },
- {
- CI_MS_DNS2,
- "Secondary DNS server IP address",
- NULL,
- FIXED_LENGTH,
- 6,
- dissect_ipcp_addr_opt
- },
- {
- CI_MS_WINS2,
- "Secondary WINS server IP address",
- NULL,
- FIXED_LENGTH,
- 6,
- dissect_ipcp_addr_opt
- }
+ {CI_ADDRS, "IP Addresses (deprecated)", &ett_ipcp_ipaddrs_opt,
+ OPT_LEN_FIXED_LENGTH, 10, dissect_ipcp_addrs_opt},
+ {CI_COMPRESS_PROTO, "IP Compression Protocol", &ett_ipcp_compress_opt,
+ OPT_LEN_VARIABLE_LENGTH, 4, dissect_ipcp_compress_opt},
+ {CI_ADDR, "IP address", &ett_ipcp_ipaddr_opt,
+ OPT_LEN_FIXED_LENGTH, 6, dissect_ipcp_addr_opt},
+ {CI_MOBILE_IPv4, "Mobile Node's Home IP Address", &ett_ipcp_mobileipv4_opt,
+ OPT_LEN_FIXED_LENGTH, 6, dissect_ipcp_mobileipv4_opt},
+ {CI_PRI_DNS, "Primary DNS Server IP Address", &ett_ipcp_pridns_opt,
+ OPT_LEN_FIXED_LENGTH, 6, dissect_ipcp_pri_dns_opt},
+ {CI_PRI_NBNS, "Primary NBNS Server IP Address", &ett_ipcp_prinbns_opt,
+ OPT_LEN_FIXED_LENGTH, 6, dissect_ipcp_pri_nbns_opt},
+ {CI_SEC_DNS, "Secondary DNS Server IP Address", &ett_ipcp_secdns_opt,
+ OPT_LEN_FIXED_LENGTH, 6, dissect_ipcp_sec_dns_opt},
+ {CI_SEC_NBNS, "Secondary NBNS Server IP Address", &ett_ipcp_secnbns_opt,
+ OPT_LEN_FIXED_LENGTH, 6, dissect_ipcp_sec_nbns_opt}
};
#define N_IPCP_OPTS (sizeof ipcp_opts / sizeof ipcp_opts[0])
@@ -1202,79 +1180,82 @@ static const ip_tcp_opt ipcp_opts[] = {
/*
* IP Compression options
*/
-#define IPCP_COMPRESS_VJ_1172 0x37 /* value defined in RFC1172 (typo) */
-#define IPCP_COMPRESS_VJ 0x2d /* value defined in RFC1332 (correct) */
-#define IPCP_COMPRESS_IPHC 0x61
+#define IPCP_ROHC 0x0003 /* RFC3241 */
+#define IPCP_COMPRESS_VJ_1172 0x0037 /* value defined in RFC1172 (typo) */
+#define IPCP_COMPRESS_VJ 0x002d /* value defined in RFC1332 (correct) */
+#define IPCP_COMPRESS_IPHC 0x0061 /* RFC3544 (and RFC2509) */
const value_string ipcp_compress_proto_vals[] = {
- { IPCP_COMPRESS_VJ_1172, "VJ compression (RFC1172-typo)" },
- { IPCP_COMPRESS_VJ, "VJ compression" },
- { IPCP_COMPRESS_IPHC, "IPHC compression" },
- { 0, NULL }
+ {IPCP_ROHC, "Robust Header Compression (ROHC)"},
+ {IPCP_COMPRESS_VJ, "VJ compression"},
+ {IPCP_COMPRESS_VJ_1172, "VJ compression (RFC1172-typo)"},
+ {IPCP_COMPRESS_IPHC, "IPHC compression"},
+ {0, NULL}
};
/* IPHC suboptions (RFC2508, 3544) */
#define IPCP_IPHC_CRTP 1
#define IPCP_IPHC_ECRTP 2
-#define IPCP_IPHC_DISABLE_PROTO 3 /* Disable compression for protocol */
+#define IPCP_IPHC_NEGHC 3
-const value_string ipcp_iphc_disable_proto_vals[] = {
- { 1, "TCP" },
- { 2, "Non-TCP" },
- { 0, NULL }
+static const value_string ipcp_iphc_parameter_vals[] = {
+ {1, "The number of contexts for TCP Space is 0"},
+ {2, "The number of contexts for Non TCP Space is 0"},
+ {0, NULL}
};
static const ip_tcp_opt ipcp_iphc_subopts[] = {
- {
- IPCP_IPHC_CRTP,
- "RTP compression (RFC2508)",
- NULL,
- FIXED_LENGTH,
- 2,
- NULL
- },
- {
- IPCP_IPHC_ECRTP,
- "Enhanced RTP compression (RFC3545)",
- NULL,
- FIXED_LENGTH,
- 2,
- NULL
- },
- {
- IPCP_IPHC_DISABLE_PROTO,
- "Enhanced RTP compression (RFC3545)",
- &ett_ipcp_iphc_disableprot_opt,
- FIXED_LENGTH,
- 3,
- dissect_ipcp_iphc_disableprot_opt
- },
+ {IPCP_IPHC_CRTP, "RTP compression (RFC2508)",
+ &ett_ipcp_iphc_rtp_compress_opt, OPT_LEN_FIXED_LENGTH, 2,
+ dissect_ipcp_iphc_simple_opt},
+ {IPCP_IPHC_ECRTP, "Enhanced RTP compression (RFC3545)",
+ &ett_ipcp_iphc_enhanced_rtp_compress_opt, OPT_LEN_FIXED_LENGTH, 2,
+ dissect_ipcp_iphc_simple_opt},
+ {IPCP_IPHC_NEGHC, "Negotiating header compression (RFC3545)",
+ &ett_ipcp_iphc_neghdrcomp_opt, OPT_LEN_FIXED_LENGTH, 3,
+ dissect_ipcp_iphc_neghdrcomp_opt}
};
#define N_IPCP_IPHC_SUBOPTS (sizeof ipcp_iphc_subopts / sizeof ipcp_iphc_subopts[0])
+/* ROHC suboptions */
+#define IPCP_ROHC_PROFILES 1
+
+/* From http://tools.ietf.org/html/rfc3095 */
+static const value_string ipcp_rohc_profile_vals[] = {
+ {0x0000, "ROHC uncompressed -- no compression"},
+ {0x0002, "ROHC UDP -- non-RTP UDP/IP compression"},
+ {0x0003, "ROHC ESP -- ESP/IP compression"},
+ {0, NULL}
+};
+
+static const ip_tcp_opt ipcp_rohc_subopts[] = {
+ {IPCP_ROHC_PROFILES, "Profiles (RFC3241)", &ett_ipcp_rohc_profiles_opt,
+ OPT_LEN_VARIABLE_LENGTH, 2, dissect_ipcp_rohc_profiles_opt}
+};
+
+#define N_IPCP_ROHC_SUBOPTS (sizeof ipcp_rohc_subopts / sizeof ipcp_rohc_subopts[0])
+
/*
- * Options. (OSICP)
+ * Options. (OSINLCP)
*/
-#define CI_OSICP_ALIGN_NPDU 1 /* Alignment of the OSI NPDU (RFC 1377) */
-
-static void dissect_osicp_align_npdu_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
-
-static const ip_tcp_opt osicp_opts[] = {
- {
- CI_OSICP_ALIGN_NPDU,
- "Align-NPDU",
- &ett_osicp_align_npdu_opt,
- FIXED_LENGTH,
- 3,
- dissect_osicp_align_npdu_opt
- }
+#define CI_OSINLCP_ALIGN_NPDU 1 /* Alignment of the OSI NPDU (RFC 1377) */
+
+static int hf_osinlcp_opt_type = -1;
+static int hf_osinlcp_opt_length = -1;
+static int hf_osinlcp_opt_alignment = -1;
+
+static void dissect_osinlcp_align_npdu_opt(const ip_tcp_opt *optp,
+ tvbuff_t *tvb, int offset, guint length, packet_info *pinfo,
+ proto_tree *tree);
+
+static const ip_tcp_opt osinlcp_opts[] = {
+ {CI_OSINLCP_ALIGN_NPDU, "Align-NPDU", &ett_osinlcp_align_npdu_opt,
+ OPT_LEN_FIXED_LENGTH, 3, dissect_osinlcp_align_npdu_opt}
};
-#define N_OSICP_OPTS (sizeof osicp_opts / sizeof osicp_opts[0])
+#define N_OSINLCP_OPTS (sizeof osinlcp_opts / sizeof osinlcp_opts[0])
/*
* Options. (CCP)
@@ -1285,102 +1266,118 @@ static const ip_tcp_opt osicp_opts[] = {
#define CI_CCP_PUDDLE 3 /* Puddle Jumper (RFC1962) */
#define CI_CCP_HPPPC 16 /* Hewlett-Packard PPC (RFC1962) */
#define CI_CCP_STAC 17 /* stac Electronics LZS (RFC1974) */
-#define CI_CCP_MPPC 18 /* Microsoft PPC (RFC2218/3078) */
+#define CI_CCP_MPPE 18 /* Microsoft PPE/C (RFC2218/3078) */
#define CI_CCP_GFZA 19 /* Gandalf FZA (RFC1962) */
#define CI_CCP_V42BIS 20 /* V.42bis compression */
#define CI_CCP_BSDLZW 21 /* BSD LZW Compress (RFC1977) */
#define CI_CCP_LZSDCP 23 /* LZS-DCP (RFC1967) */
#define CI_CCP_MVRCA 24 /* MVRCA (Magnalink) (RFC1975) */
+#define CI_CCP_DCE 25 /* DCE (RFC1976) */
#define CI_CCP_DEFLATE 26 /* Deflate (RFC1979) */
+#define CI_CCP_V44LZJH 27 /* V.44/LZJH (http://www.watersprings.org/pub/id/draft-heath-ppp-v44-01.txt) */
#define CI_CCP_RESERVED 255 /* Reserved (RFC1962) */
-/*
- * Microsoft Point-To-Point Compression (MPPC) and Encryption (MPPE)
- * supported bits.
- */
-#define MPPC_SUPPORTED_BITS_C 0x00000001 /* MPPC negotiation */
-#define MPPE_SUPPORTED_BITS_D 0x00000010 /* Obsolete */
-#define MPPE_SUPPORTED_BITS_L 0x00000020 /* 40-bit encryption */
-#define MPPE_SUPPORTED_BITS_S 0x00000040 /* 128-bit encryption */
-#define MPPE_SUPPORTED_BITS_M 0x00000080 /* 56-bit encryption */
-#define MPPE_SUPPORTED_BITS_H 0x01000000 /* stateless mode */
-
+static int hf_ccp_opt_type = -1;
+static int hf_ccp_opt_length = -1;
+static int hf_ccp_opt_oui = -1;
+static int hf_ccp_opt_subtype = -1;
+static int hf_ccp_opt_data = -1;
+static int hf_ccp_opt_history_count = -1;
+static int hf_ccp_opt_cm = -1;
+static int hf_ccp_opt_cm_reserved = -1;
+static int hf_ccp_opt_cm_check_mode = -1;
+static int hf_ccp_opt_supported_bits = -1;
+static int hf_ccp_opt_supported_bits_h = -1;
+static int hf_ccp_opt_supported_bits_m = -1;
+static int hf_ccp_opt_supported_bits_s = -1;
+static int hf_ccp_opt_supported_bits_l = -1;
+static int hf_ccp_opt_supported_bits_d = -1;
+static int hf_ccp_opt_supported_bits_c = -1;
+static int hf_ccp_opt_history = -1;
+static int hf_ccp_opt_version = -1;
+static int hf_ccp_opt_vd = -1;
+static int hf_ccp_opt_vd_vers = -1;
+static int hf_ccp_opt_vd_dict = -1;
+static int hf_ccp_opt_check_mode = -1;
+static int hf_ccp_opt_process_mode = -1;
+static int hf_ccp_opt_fe = -1;
+static int hf_ccp_opt_p = -1;
+static int hf_ccp_opt_History = -1; /* Different than hf_ccp_opt_history */
+static int hf_ccp_opt_contexts = -1;
+static int hf_ccp_opt_mode = -1;
+static int hf_ccp_opt_window = -1;
+static int hf_ccp_opt_method = -1;
+static int hf_ccp_opt_mbz = -1;
+static int hf_ccp_opt_chk = -1;
+static int hf_ccp_opt_mode_dictcount = -1;
+static int hf_ccp_opt_dict_size = -1;
+static int hf_ccp_opt_history_length = -1;
+
+static void dissect_ccp_oui_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
+static void dissect_ccp_other_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
+#define dissect_ccp_predict1_opt dissect_ccp_other_opt
+#define dissect_ccp_predict2_opt dissect_ccp_other_opt
+#define dissect_ccp_puddle_opt dissect_ccp_other_opt
+#define dissect_ccp_hpppc_opt dissect_ccp_other_opt
static void dissect_ccp_stac_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
-
-static void dissect_ccp_mppc_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
-
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
+static void dissect_ccp_mppe_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
+static void dissect_ccp_gfza_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
+#define dissect_ccp_v42bis_opt dissect_ccp_other_opt
static void dissect_ccp_bsdcomp_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
-
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
static void dissect_ccp_lzsdcp_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
-
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
static void dissect_ccp_mvrca_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
-
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
+static void dissect_ccp_dce_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
static void dissect_ccp_deflate_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
+static void dissect_ccp_v44lzjh_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree);
static const ip_tcp_opt ccp_opts[] = {
- {
- CI_CCP_STAC,
- "Stac Electronics LZS",
- &ett_ccp_stac_opt,
- VARIABLE_LENGTH,
- 5,
- /* In RFC 1974, this is a fixed-length field of size 5,
- but in Ascend Proprietary STAC compression this field
- is 6 octets. Sigh... */
- dissect_ccp_stac_opt
- },
- {
- CI_CCP_MPPC,
- "Microsoft PPC",
- &ett_ccp_mppc_opt,
- FIXED_LENGTH,
- 6,
- dissect_ccp_mppc_opt
- },
- {
- CI_CCP_BSDLZW,
- "BSD Compress",
- &ett_ccp_bsdcomp_opt,
- FIXED_LENGTH,
- 3,
- dissect_ccp_bsdcomp_opt
- },
- {
- CI_CCP_LZSDCP,
- "LZS-DCP",
- &ett_ccp_lzsdcp_opt,
- FIXED_LENGTH,
- 6,
- dissect_ccp_lzsdcp_opt
- },
- {
- CI_CCP_MVRCA,
- "MVRCA (Magnalink)",
- &ett_ccp_mvrca_opt,
- FIXED_LENGTH,
- 4,
- dissect_ccp_mvrca_opt
- },
- {
- CI_CCP_DEFLATE,
- "Deflate",
- &ett_ccp_deflate_opt,
- FIXED_LENGTH,
- 4, /* RFC1979 says the length is 3 but it's actually 4. */
- dissect_ccp_deflate_opt
- },
+
+ {CI_CCP_OUI, "OUI", &ett_ccp_oui_opt,
+ OPT_LEN_VARIABLE_LENGTH, 6, dissect_ccp_oui_opt},
+ {CI_CCP_PREDICT1, "Predictor type 1", &ett_ccp_predict1_opt,
+ OPT_LEN_VARIABLE_LENGTH, 2, dissect_ccp_predict1_opt},
+ {CI_CCP_PREDICT2, "Predictor type 2", &ett_ccp_predict2_opt,
+ OPT_LEN_VARIABLE_LENGTH, 2, dissect_ccp_predict2_opt},
+ {CI_CCP_PUDDLE, "Puddle Jumper", &ett_ccp_puddle_opt,
+ OPT_LEN_VARIABLE_LENGTH, 2, dissect_ccp_puddle_opt},
+ {CI_CCP_HPPPC, "Hewlett-Packard PPC", &ett_ccp_hpppc_opt,
+ OPT_LEN_VARIABLE_LENGTH, 2, dissect_ccp_hpppc_opt},
+ {CI_CCP_STAC, "Stac Electronics LZS", &ett_ccp_stac_opt,
+ /* In RFC 1974, this is a fixed-length field of size 5, but in
+ * Ascend Proprietary STAC compression this field is 6 octets. */
+ OPT_LEN_VARIABLE_LENGTH, 5, dissect_ccp_stac_opt},
+ {CI_CCP_MPPE, "Microsoft PPE/PPC", &ett_ccp_mppe_opt,
+ OPT_LEN_FIXED_LENGTH, 6, dissect_ccp_mppe_opt},
+ {CI_CCP_GFZA, "Gandalf FZA", &ett_ccp_gfza_opt,
+ OPT_LEN_VARIABLE_LENGTH, 3, dissect_ccp_gfza_opt},
+ {CI_CCP_V42BIS, "V.42bis compression", &ett_ccp_v42bis_opt,
+ OPT_LEN_VARIABLE_LENGTH, 2, dissect_ccp_v42bis_opt},
+ {CI_CCP_BSDLZW, "BSD LZW Compress", &ett_ccp_bsdcomp_opt,
+ OPT_LEN_FIXED_LENGTH, 3, dissect_ccp_bsdcomp_opt},
+ {CI_CCP_LZSDCP, "LZS-DCP", &ett_ccp_lzsdcp_opt,
+ OPT_LEN_FIXED_LENGTH, 6, dissect_ccp_lzsdcp_opt},
+ {CI_CCP_MVRCA, "MVRCA (Magnalink)", &ett_ccp_mvrca_opt,
+ OPT_LEN_FIXED_LENGTH, 4, dissect_ccp_mvrca_opt},
+ {CI_CCP_DCE,
+ "PPP for Data Compression in Data Circuit-Terminating Equipment (DCE)",
+ &ett_ccp_dce_opt,
+ OPT_LEN_FIXED_LENGTH, 3, dissect_ccp_dce_opt},
+ {CI_CCP_DEFLATE, "Deflate", &ett_ccp_deflate_opt,
+ /* RFC1979 says the length is 3 but it's actually 4. */
+ OPT_LEN_FIXED_LENGTH, 4, dissect_ccp_deflate_opt},
+ {CI_CCP_V44LZJH, "V.44/LZJH compression", &ett_ccp_v44lzjh_opt,
+ OPT_LEN_VARIABLE_LENGTH, 4, dissect_ccp_v44lzjh_opt}
};
#define N_CCP_OPTS (sizeof ccp_opts / sizeof ccp_opts[0])
@@ -1395,47 +1392,20 @@ static const ip_tcp_opt ccp_opts[] = {
#define CI_CBCP_CB_ANY 4 /* Callback to any of a list of numbers */
static void dissect_cbcp_no_callback_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
+ int offset, guint length, packet_info *pinfo, proto_tree *tree);
static void dissect_cbcp_callback_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
+ int offset, guint length, packet_info *pinfo, proto_tree *tree);
static const ip_tcp_opt cbcp_opts[] = {
- {
- CI_CBCP_NO_CALLBACK,
- "No callback",
- NULL,
- FIXED_LENGTH,
- 2,
- dissect_cbcp_no_callback_opt
- },
- {
- CI_CBCP_CB_USER,
- "Callback to a user-specified number",
- &ett_cbcp_callback_opt,
- VARIABLE_LENGTH,
- 4,
- dissect_cbcp_callback_opt
- },
- {
- CI_CBCP_CB_PRE,
- "Callback to a pre-specified or admin-specified number",
- &ett_cbcp_callback_opt,
- FIXED_LENGTH,
- 3,
- dissect_cbcp_callback_opt
- },
- {
- CI_CBCP_CB_ANY,
- "Callback to any of a list of numbers",
- &ett_cbcp_callback_opt,
- VARIABLE_LENGTH,
- 4,
- dissect_cbcp_callback_opt
- }
-
+ {CI_CBCP_NO_CALLBACK, "No callback", NULL,
+ OPT_LEN_FIXED_LENGTH, 2, dissect_cbcp_no_callback_opt},
+ {CI_CBCP_CB_USER, "Callback to a user-specified number", &ett_cbcp_callback_opt,
+ OPT_LEN_VARIABLE_LENGTH, 4, dissect_cbcp_callback_opt},
+ {CI_CBCP_CB_PRE, "Callback to a pre-specified or admin-specified number", &ett_cbcp_callback_opt,
+ OPT_LEN_FIXED_LENGTH, 3, dissect_cbcp_callback_opt},
+ {CI_CBCP_CB_ANY, "Callback to any of a list of numbers", &ett_cbcp_callback_opt,
+ OPT_LEN_VARIABLE_LENGTH, 4, dissect_cbcp_callback_opt}
};
#define N_CBCP_OPTS (sizeof cbcp_opts / sizeof cbcp_opts[0])
@@ -1445,19 +1415,13 @@ static const ip_tcp_opt cbcp_opts[] = {
*/
#define CI_BACP_FAVORED_PEER 1 /* Favored-Peer */
-static void dissect_bacp_favored_peer_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
+static void dissect_bacp_favored_peer_opt(const ip_tcp_opt *optp,
+ tvbuff_t *tvb, int offset, guint length, packet_info *pinfo,
+ proto_tree *tree);
static const ip_tcp_opt bacp_opts[] = {
- {
- CI_BACP_FAVORED_PEER,
- "Favored-Peer",
- &ett_bacp_favored_peer_opt,
- FIXED_LENGTH,
- 6,
- dissect_bacp_favored_peer_opt
- }
+ {CI_BACP_FAVORED_PEER, "Favored-Peer", &ett_bacp_favored_peer_opt,
+ OPT_LEN_FIXED_LENGTH, 6, dissect_bacp_favored_peer_opt}
};
#define N_BACP_OPTS (sizeof bacp_opts / sizeof bacp_opts[0])
@@ -1473,86 +1437,41 @@ static const ip_tcp_opt bacp_opts[] = {
#define CI_BAP_CALL_STATUS 6 /* Call Status */
static void dissect_bap_link_type_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
-
+ int offset, guint length, packet_info *pinfo, proto_tree *tree);
static void dissect_bap_phone_delta_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
-
+ int offset, guint length, packet_info *pinfo, proto_tree *tree);
static void dissect_bap_link_disc_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
-
+ int offset, guint length, packet_info *pinfo, proto_tree *tree);
static void dissect_bap_reason_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
-
+ int offset, guint length, packet_info *pinfo, proto_tree *tree);
static void dissect_bap_call_status_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
+ int offset, guint length, packet_info *pinfo, proto_tree *tree);
static const ip_tcp_opt bap_opts[] = {
- {
- CI_BAP_LINK_TYPE,
- "Link Type",
- &ett_bap_link_type_opt,
- FIXED_LENGTH,
- 5,
- dissect_bap_link_type_opt
- },
- {
- CI_BAP_PHONE_DELTA,
- "Phone Delta",
- &ett_bap_phone_delta_opt,
- VARIABLE_LENGTH,
- 4,
- dissect_bap_phone_delta_opt
- },
- {
- CI_BAP_NO_PHONE_NUM_NEEDED,
- "No Phone Number Needed",
- NULL,
- FIXED_LENGTH,
- 2,
- NULL
- },
- {
- CI_BAP_REASON,
- "Reason",
- NULL,
- VARIABLE_LENGTH,
- 2,
- dissect_bap_reason_opt
- },
- {
- CI_BAP_LINK_DISC,
- "Link Discriminator",
- NULL,
- FIXED_LENGTH,
- 4,
- dissect_bap_link_disc_opt
- },
- {
- CI_BAP_CALL_STATUS,
- "Call Status",
- &ett_bap_call_status_opt,
- FIXED_LENGTH,
- 4,
- dissect_bap_call_status_opt
- }
+ {CI_BAP_LINK_TYPE, "Link Type", &ett_bap_link_type_opt,
+ OPT_LEN_FIXED_LENGTH, 5, dissect_bap_link_type_opt},
+ {CI_BAP_PHONE_DELTA, "Phone Delta", &ett_bap_phone_delta_opt,
+ OPT_LEN_VARIABLE_LENGTH, 4, dissect_bap_phone_delta_opt},
+ {CI_BAP_NO_PHONE_NUM_NEEDED, "No Phone Number Needed", NULL,
+ OPT_LEN_FIXED_LENGTH, 2, NULL},
+ {CI_BAP_REASON, "Reason", NULL,
+ OPT_LEN_VARIABLE_LENGTH, 2, dissect_bap_reason_opt},
+ {CI_BAP_LINK_DISC, "Link Discriminator", NULL,
+ OPT_LEN_FIXED_LENGTH, 4, dissect_bap_link_disc_opt},
+ {CI_BAP_CALL_STATUS, "Call Status", &ett_bap_call_status_opt,
+ OPT_LEN_FIXED_LENGTH, 4, dissect_bap_call_status_opt}
};
#define N_BAP_OPTS (sizeof bap_opts / sizeof bap_opts[0])
-static void dissect_ppp(tvbuff_t *tvb, packet_info *pinfo,
- proto_tree *tree);
+static void dissect_ppp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static const value_string pap_vals[] = {
- {CONFREQ, "Authenticate-Request" },
- {CONFACK, "Authenticate-Ack" },
- {CONFNAK, "Authenticate-Nak" },
- {0, NULL } };
+ {CONFREQ, "Authenticate-Request"},
+ {CONFACK, "Authenticate-Ack"},
+ {CONFNAK, "Authenticate-Nak"},
+ {0, NULL}
+};
static void dissect_pap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
@@ -1562,18 +1481,19 @@ static void dissect_pap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
#define CHAP_FAIL 4 /* CHAP Failure */
static const value_string chap_vals[] = {
- {CHAP_CHAL, "Challenge" },
- {CHAP_RESP, "Response" },
- {CHAP_SUCC, "Success" },
- {CHAP_FAIL, "Failure" },
- {0, NULL } };
+ {CHAP_CHAL, "Challenge"},
+ {CHAP_RESP, "Response"},
+ {CHAP_SUCC, "Success"},
+ {CHAP_FAIL, "Failure"},
+ {0, NULL}
+};
static void dissect_chap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static const value_string pppmuxcp_vals[] = {
- {CONFREQ, "Configuration Request" },
- {CONFACK, "Configuration Ack" },
- {0, NULL}
+ {CONFREQ, "Configuration Request"},
+ {CONFACK, "Configuration Ack"},
+ {0, NULL}
};
/*
@@ -1583,18 +1503,12 @@ static const value_string pppmuxcp_vals[] = {
#define CI_DEFAULT_PID 1
static void dissect_pppmuxcp_def_pid_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo, proto_tree *tree);
+ int offset, guint length, packet_info *pinfo, proto_tree *tree);
static const ip_tcp_opt pppmuxcp_opts[] = {
- {
- CI_DEFAULT_PID,
- "Default Protocol ID",
- NULL,
- FIXED_LENGTH,
- 4,
- dissect_pppmuxcp_def_pid_opt
- }
+ {CI_DEFAULT_PID, "Default Protocol ID", NULL,
+ OPT_LEN_FIXED_LENGTH, 4, dissect_pppmuxcp_def_pid_opt}
};
#define N_PPPMUXCP_OPTS (sizeof pppmuxcp_opts / sizeof pppmuxcp_opts[0])
@@ -1606,26 +1520,13 @@ static const ip_tcp_opt pppmuxcp_opts[] = {
#define CI_IPV6CP_COMPRESSTYPE 2 /* Compression Type (RFC 2472) */
static void dissect_ipv6cp_if_id_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo,
- proto_tree *tree);
+ int offset, guint length, packet_info *pinfo, proto_tree *tree);
static const ip_tcp_opt ipv6cp_opts[] = {
- {
- CI_IPV6CP_IF_ID,
- "Interface Identifier",
- &ett_ipv6cp_if_id_opt,
- FIXED_LENGTH,
- 10,
- dissect_ipv6cp_if_id_opt
- },
- {
- CI_COMPRESSTYPE,
- "IPv6 compression",
- &ett_ipv6cp_compress_opt,
- VARIABLE_LENGTH,
- 4,
- dissect_ipcp_compress_opt
- },
+ {CI_IPV6CP_IF_ID, "Interface Identifier", &ett_ipv6cp_if_id_opt,
+ OPT_LEN_FIXED_LENGTH, 10, dissect_ipv6cp_if_id_opt},
+ {CI_COMPRESS_PROTO, "IPv6 compression", &ett_ipv6cp_compress_opt,
+ OPT_LEN_VARIABLE_LENGTH, 4, dissect_ipcp_compress_opt}
};
#define N_IPV6CP_OPTS (sizeof ipv6cp_opts / sizeof ipv6cp_opts[0])
@@ -1636,14 +1537,14 @@ static const ip_tcp_opt ipv6cp_opts[] = {
*******************************************************************************
*/
static guint16
-fcs16(tvbuff_t * tvbuff)
+fcs16(tvbuff_t *tvbuff)
{
- guint len = tvb_length(tvbuff)-2;
+ guint len = tvb_length(tvbuff) - 2;
- /* Check for Invalid Length */
- if (len == 0)
- return (0x0000);
- return crc16_ccitt_tvb(tvbuff, len);
+ /* Check for Invalid Length */
+ if (len == 0)
+ return (0x0000);
+ return crc16_ccitt_tvb(tvbuff, len);
}
/*
@@ -1652,399 +1553,529 @@ fcs16(tvbuff_t * tvbuff)
*******************************************************************************
*/
static guint32
-fcs32(tvbuff_t * tvbuff)
+fcs32(tvbuff_t *tvbuff)
{
- guint len = tvb_length(tvbuff)-4;
+ guint len = tvb_length(tvbuff) - 4;
- /* Check for invalid Length */
- if (len == 0)
- return (0x00000000);
- return crc32_ccitt_tvb(tvbuff, len);
+ /* Check for invalid Length */
+ if (len == 0)
+ return (0x00000000);
+ return crc32_ccitt_tvb(tvbuff, len);
}
tvbuff_t *
decode_fcs(tvbuff_t *tvb, proto_tree *fh_tree, int fcs_decode, int proto_offset)
{
- tvbuff_t *next_tvb;
- gint len, reported_len;
- int rx_fcs_offset;
- guint32 rx_fcs_exp;
- guint32 rx_fcs_got;
-
- /*
- * Remove the FCS, if any, from the packet data.
- */
- switch (fcs_decode) {
+ tvbuff_t *next_tvb;
+ gint len, reported_len;
+ int rx_fcs_offset;
+ guint32 rx_fcs_exp;
+ guint32 rx_fcs_got;
- case NO_FCS:
- next_tvb = tvb_new_subset_remaining(tvb, proto_offset);
- break;
-
- case FCS_16:
/*
- * Do we have the entire packet, and does it include a 2-byte FCS?
+ * Remove the FCS, if any, from the packet data.
*/
- len = tvb_length_remaining(tvb, proto_offset);
- reported_len = tvb_reported_length_remaining(tvb, proto_offset);
- if (reported_len < 2 || len < 0) {
- /*
- * The packet is claimed not to even have enough data for a 2-byte FCS,
- * or we're already past the end of the captured data.
- * Don't slice anything off.
- */
- next_tvb = tvb_new_subset_remaining(tvb, proto_offset);
- } else if (len < reported_len) {
- /*
- * The packet is claimed to have enough data for a 2-byte FCS, but
- * we didn't capture all of the packet.
- * Slice off the 2-byte FCS from the reported length, and trim the
- * captured length so it's no more than the reported length; that
- * will slice off what of the FCS, if any, is in the captured
- * length.
- */
- reported_len -= 2;
- if (len > reported_len)
- len = reported_len;
- next_tvb = tvb_new_subset(tvb, proto_offset, len, reported_len);
- } else {
- /*
- * We have the entire packet, and it includes a 2-byte FCS.
- * Slice it off.
- */
- len -= 2;
- reported_len -= 2;
- next_tvb = tvb_new_subset(tvb, proto_offset, len, reported_len);
-
- /*
- * Compute the FCS and put it into the tree.
- */
- rx_fcs_offset = proto_offset + len;
- rx_fcs_exp = fcs16(tvb);
- rx_fcs_got = tvb_get_letohs(tvb, rx_fcs_offset);
- if (rx_fcs_got != rx_fcs_exp) {
- proto_tree_add_text(fh_tree, tvb, rx_fcs_offset, 2,
- "FCS 16: 0x%04x [incorrect, should be 0x%04x]",
- rx_fcs_got, rx_fcs_exp);
- } else {
- proto_tree_add_text(fh_tree, tvb, rx_fcs_offset, 2,
- "FCS 16: 0x%04x [correct]",
- rx_fcs_got);
- }
+ switch (fcs_decode) {
+
+ case NO_FCS:
+ next_tvb = tvb_new_subset_remaining(tvb, proto_offset);
+ break;
+
+ case FCS_16:
+ /*
+ * Do we have the entire packet, and does it include a 2-byte FCS?
+ */
+ len = tvb_length_remaining(tvb, proto_offset);
+ reported_len = tvb_reported_length_remaining(tvb, proto_offset);
+ if (reported_len < 2 || len < 0) {
+ /*
+ * The packet is claimed not to even have enough data for a 2-byte
+ * FCS, or we're already past the end of the captured data.
+ * Don't slice anything off.
+ */
+ next_tvb = tvb_new_subset_remaining(tvb, proto_offset);
+ } else if (len < reported_len) {
+ /*
+ * The packet is claimed to have enough data for a 2-byte FCS, but
+ * we didn't capture all of the packet.
+ * Slice off the 2-byte FCS from the reported length, and trim the
+ * captured length so it's no more than the reported length; that
+ * will slice off what of the FCS, if any, is in the captured
+ * length.
+ */
+ reported_len -= 2;
+ if (len > reported_len)
+ len = reported_len;
+ next_tvb = tvb_new_subset(tvb, proto_offset, len, reported_len);
+ } else {
+ /*
+ * We have the entire packet, and it includes a 2-byte FCS.
+ * Slice it off.
+ */
+ len -= 2;
+ reported_len -= 2;
+ next_tvb = tvb_new_subset(tvb, proto_offset, len, reported_len);
+
+ /*
+ * Compute the FCS and put it into the tree.
+ */
+ rx_fcs_offset = proto_offset + len;
+ rx_fcs_exp = fcs16(tvb);
+ rx_fcs_got = tvb_get_letohs(tvb, rx_fcs_offset);
+ if (rx_fcs_got != rx_fcs_exp) {
+ proto_tree_add_text(fh_tree, tvb, rx_fcs_offset, 2,
+ "FCS 16: 0x%04x [incorrect, should be 0x%04x]",
+ rx_fcs_got, rx_fcs_exp);
+ } else {
+ proto_tree_add_text(fh_tree, tvb, rx_fcs_offset, 2,
+ "FCS 16: 0x%04x [correct]", rx_fcs_got);
+ }
+ }
+ break;
+
+ case FCS_32:
+ /*
+ * Do we have the entire packet, and does it include a 4-byte FCS?
+ */
+ len = tvb_length_remaining(tvb, proto_offset);
+ reported_len = tvb_reported_length_remaining(tvb, proto_offset);
+ if (reported_len < 4) {
+ /*
+ * The packet is claimed not to even have enough data for a 4-byte
+ * FCS. Just pass on the tvbuff as is.
+ */
+ next_tvb = tvb_new_subset_remaining(tvb, proto_offset);
+ } else if (len < reported_len) {
+ /*
+ * The packet is claimed to have enough data for a 4-byte FCS, but
+ * we didn't capture all of the packet.
+ * Slice off the 4-byte FCS from the reported length, and trim the
+ * captured length so it's no more than the reported length; that
+ * will slice off what of the FCS, if any, is in the captured
+ * length.
+ */
+ reported_len -= 4;
+ if (len > reported_len)
+ len = reported_len;
+ next_tvb = tvb_new_subset(tvb, proto_offset, len, reported_len);
+ } else {
+ /*
+ * We have the entire packet, and it includes a 4-byte FCS.
+ * Slice it off.
+ */
+ len -= 4;
+ reported_len -= 4;
+ next_tvb = tvb_new_subset(tvb, proto_offset, len, reported_len);
+
+ /*
+ * Compute the FCS and put it into the tree.
+ */
+ rx_fcs_offset = proto_offset + len;
+ rx_fcs_exp = fcs32(tvb);
+ rx_fcs_got = tvb_get_letohl(tvb, rx_fcs_offset);
+ if (rx_fcs_got != rx_fcs_exp) {
+ proto_tree_add_text(fh_tree, tvb, rx_fcs_offset, 4,
+ "FCS 32: 0x%08x [incorrect, should be 0x%08x]",
+ rx_fcs_got, rx_fcs_exp);
+ } else {
+ proto_tree_add_text(fh_tree, tvb, rx_fcs_offset, 4,
+ "FCS 32: 0x%08x [correct]", rx_fcs_got);
+ }
+ }
+ break;
+
+ default:
+ DISSECTOR_ASSERT_NOT_REACHED();
+ next_tvb = NULL;
+ break;
}
- break;
- case FCS_32:
- /*
- * Do we have the entire packet, and does it include a 4-byte FCS?
- */
- len = tvb_length_remaining(tvb, proto_offset);
- reported_len = tvb_reported_length_remaining(tvb, proto_offset);
- if (reported_len < 4) {
- /*
- * The packet is claimed not to even have enough data for a 4-byte FCS.
- * Just pass on the tvbuff as is.
- */
- next_tvb = tvb_new_subset_remaining(tvb, proto_offset);
- } else if (len < reported_len) {
- /*
- * The packet is claimed to have enough data for a 4-byte FCS, but
- * we didn't capture all of the packet.
- * Slice off the 4-byte FCS from the reported length, and trim the
- * captured length so it's no more than the reported length; that
- * will slice off what of the FCS, if any, is in the captured
- * length.
- */
- reported_len -= 4;
- if (len > reported_len)
- len = reported_len;
- next_tvb = tvb_new_subset(tvb, proto_offset, len, reported_len);
- } else {
- /*
- * We have the entire packet, and it includes a 4-byte FCS.
- * Slice it off.
- */
- len -= 4;
- reported_len -= 4;
- next_tvb = tvb_new_subset(tvb, proto_offset, len, reported_len);
-
- /*
- * Compute the FCS and put it into the tree.
- */
- rx_fcs_offset = proto_offset + len;
- rx_fcs_exp = fcs32(tvb);
- rx_fcs_got = tvb_get_letohl(tvb, rx_fcs_offset);
- if (rx_fcs_got != rx_fcs_exp) {
- proto_tree_add_text(fh_tree, tvb, rx_fcs_offset, 4,
- "FCS 32: 0x%08x [incorrect, should be 0x%08x]",
- rx_fcs_got, rx_fcs_exp);
- } else {
- proto_tree_add_text(fh_tree, tvb, rx_fcs_offset, 4,
- "FCS 32: 0x%08x [correct]",
- rx_fcs_got);
- }
+ return next_tvb;
+}
+
+void
+capture_ppp_hdlc(const guchar *pd, int offset, int len, packet_counts *ld)
+{
+ if (!BYTES_ARE_IN_FRAME(offset, len, 2)) {
+ ld->other++;
+ return;
+ }
+ if (pd[0] == CHDLC_ADDR_UNICAST || pd[0] == CHDLC_ADDR_MULTICAST) {
+ capture_chdlc(pd, offset, len, ld);
+ return;
+ }
+ if (!BYTES_ARE_IN_FRAME(offset, len, 4)) {
+ ld->other++;
+ return;
}
- break;
+ switch (pntohs(&pd[offset + 2])) {
+ case PPP_IP:
+ capture_ip(pd, offset + 4, len, ld);
+ break;
+ case PPP_IPX:
+ capture_ipx(ld);
+ break;
+ case PPP_VINES:
+ capture_vines(ld);
+ break;
+ default:
+ ld->other++;
+ break;
+ }
+}
- default:
- DISSECTOR_ASSERT_NOT_REACHED();
- next_tvb = NULL;
- }
+static void
+dissect_lcp_opt_type_len(tvbuff_t *tvb, int offset, proto_tree *tree,
+ const char *name)
+{
+ guint8 type;
- return next_tvb;
+ type = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint_format_value(tree, hf_lcp_opt_type, tvb, offset, 1,
+ type, "%s (%u)", name, type);
+ proto_tree_add_item(tree, hf_lcp_opt_length, tvb, offset + 1, 1, ENC_NA);
}
-void
-capture_ppp_hdlc( const guchar *pd, int offset, int len, packet_counts *ld ) {
- if (!BYTES_ARE_IN_FRAME(offset, len, 2)) {
- ld->other++;
- return;
- }
- if (pd[0] == CHDLC_ADDR_UNICAST || pd[0] == CHDLC_ADDR_MULTICAST) {
- capture_chdlc(pd, offset, len, ld);
- return;
- }
- if (!BYTES_ARE_IN_FRAME(offset, len, 4)) {
- ld->other++;
- return;
- }
- switch (pntohs(&pd[offset + 2])) {
- case PPP_IP:
- capture_ip(pd, offset + 4, len, ld);
- break;
- case PPP_IPX:
- capture_ipx(ld);
- break;
- case PPP_VINES:
- capture_vines(ld);
- break;
- default:
- ld->other++;
- break;
- }
+static void
+dissect_lcp_vendor_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_tree *field_tree;
+ proto_item *tf, *ti;
+ guint32 oui;
+ const gchar *manuf;
+
+ oui = tvb_get_ntoh24(tvb, offset + 2);
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ ti = proto_tree_add_uint_format_value(field_tree, hf_lcp_opt_oui, tvb,
+ offset + 2, 3, oui, "%02x:%02x:%02x",
+ (oui >> 16) & 0xff, (oui >> 8) & 0xff, oui & 0xff);
+ manuf = uint_get_manuf_name_if_known(oui);
+ if (manuf)
+ proto_item_append_text(ti, "(%s)", manuf);
+
+ proto_tree_add_item(field_tree, hf_lcp_opt_kind, tvb, offset + 5, 1,
+ ENC_NA);
+ if (length > 6) {
+ proto_tree_add_item(field_tree, hf_lcp_opt_data, tvb, offset + 6,
+ length - 6, ENC_NA);
+ }
}
static void
dissect_lcp_mru_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
- guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_text(tree, tvb, offset, length, "%s: %u", optp->name,
- tvb_get_ntohs(tvb, offset + 2));
+ proto_tree *field_tree;
+ proto_item *tf;
+
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %u", optp->name,
+ tvb_get_ntohs(tvb, offset + 2));
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_item(field_tree, hf_lcp_opt_mru, tvb, offset + 2, 2,
+ ENC_BIG_ENDIAN);
}
static void
dissect_lcp_async_map_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
- guint length, packet_info *pinfo _U_,
- proto_tree *tree)
-{
- guint32 map;
- const char *mapstr;
-
- static const char *ctrlchars[32] = {
- "NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL",
- "BS", "HT", "NL", "VT", "NP (FF)", "CR", "SO", "SI",
- "DLE", "DC1 (XON)", "DC2", "DC3 (XOFF)", "DC4", "NAK", "SYN", "ETB",
- "CAN", "EM", "SUB", "ESC", "FS", "GS", "RS", "US"
- };
- gint returned_length, str_index;
- int i;
-
- /*
- * XXX - walk through the map and show the characters to map?
- * Put them in a subtree of this item, and have the top-level item
- * either say "None", "All", or give a list of the characters?)
- */
- map = tvb_get_ntohl(tvb, offset + 2);
- if (map == 0x00000000)
- mapstr = "None"; /* don't map any control characters */
- else if (map == 0xffffffff)
- mapstr = "All"; /* map all control characters */
- else {
-#define MAX_MAPSTR_LEN (32*(10+2)+1)
- mapstr=ep_alloc(MAX_MAPSTR_LEN);
- /*
- * Show the names of the control characters being mapped.
- */
- str_index = 0;
- for (i = 0; i < 32; i++) {
- if (map & (1 << i)) {
- returned_length = g_snprintf((char *)(&mapstr[str_index]), MAX_MAPSTR_LEN-str_index,
- "%s%s", str_index?"":", ", ctrlchars[i]);
- str_index += MIN(returned_length, MAX_MAPSTR_LEN-str_index);
- }
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_tree *field_tree;
+ proto_item *tf, *ti;
+ static const int *asyncmap_fields[] = {
+ &hf_lcp_opt_asyncmap_us, &hf_lcp_opt_asyncmap_rs,
+ &hf_lcp_opt_asyncmap_gs, &hf_lcp_opt_asyncmap_fs,
+ &hf_lcp_opt_asyncmap_esc, &hf_lcp_opt_asyncmap_sub,
+ &hf_lcp_opt_asyncmap_em, &hf_lcp_opt_asyncmap_can,
+ &hf_lcp_opt_asyncmap_etb, &hf_lcp_opt_asyncmap_syn,
+ &hf_lcp_opt_asyncmap_nak, &hf_lcp_opt_asyncmap_dc4,
+ &hf_lcp_opt_asyncmap_dc3, &hf_lcp_opt_asyncmap_dc2,
+ &hf_lcp_opt_asyncmap_dc1, &hf_lcp_opt_asyncmap_dle,
+ &hf_lcp_opt_asyncmap_si, &hf_lcp_opt_asyncmap_so,
+ &hf_lcp_opt_asyncmap_cr, &hf_lcp_opt_asyncmap_ff,
+ &hf_lcp_opt_asyncmap_vt, &hf_lcp_opt_asyncmap_lf,
+ &hf_lcp_opt_asyncmap_ht, &hf_lcp_opt_asyncmap_bs,
+ &hf_lcp_opt_asyncmap_bel, &hf_lcp_opt_asyncmap_ack,
+ &hf_lcp_opt_asyncmap_enq, &hf_lcp_opt_asyncmap_eot,
+ &hf_lcp_opt_asyncmap_etx, &hf_lcp_opt_asyncmap_stx,
+ &hf_lcp_opt_asyncmap_soh, &hf_lcp_opt_asyncmap_nul,
+ NULL
+ };
+
+ static const char *ctrlchars[32] = {
+ "NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL",
+ "BS", "HT", "LF", "VT", "FF", "CR", "SO", "SI",
+ "DLE", "DC1 (XON)", "DC2", "DC3 (XOFF)", "DC4", "NAK", "SYN", "ETB",
+ "CAN", "EM", "SUB", "ESC", "FS", "GS", "RS", "US"
+ };
+
+ gboolean anyctrlchars;
+ guint32 map;
+ int i;
+
+ map = tvb_get_ntohl(tvb, offset + 2);
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s: 0x%08x (",
+ optp->name, map);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ ti = proto_tree_add_bitmask(field_tree, tvb, offset + 2,
+ hf_lcp_opt_asyncmap, *optp->subtree_index, asyncmap_fields,
+ ENC_BIG_ENDIAN);
+ if (map == 0x00000000) {
+ proto_item_append_text(tf, "None)");
+ proto_item_append_text(ti, " (None)");
+ } else if (map == 0xffffffff) {
+ proto_item_append_text(tf, "All)");
+ proto_item_append_text(ti, " (All)");
+ } else {
+ for (anyctrlchars = FALSE, i = 31; i >= 0; i--) {
+ if (map & (1 << i)) {
+ if (anyctrlchars)
+ proto_item_append_text(tf, ", %s", ctrlchars[i]);
+ else {
+ anyctrlchars = TRUE;
+ proto_item_append_text(tf, "%s", ctrlchars[i]);
+ }
+ }
+ }
+ proto_item_append_text(tf, ")");
}
- }
- proto_tree_add_text(tree, tvb, offset, length, "%s: 0x%08x (%s)", optp->name,
- map, mapstr);
}
static void
-dissect_lcp_protocol_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
- guint length, packet_info *pinfo _U_,
- proto_tree *tree)
-{
- guint16 protocol;
- proto_item *tf;
- proto_tree *field_tree = NULL;
-
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %u byte%s",
- optp->name, length, plurality(length, "", "s"));
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
- offset += 2;
- length -= 2;
- protocol = tvb_get_ntohs(tvb, offset);
- proto_tree_add_text(field_tree, tvb, offset, 2, "%s: %s (0x%02x)", optp->name,
- val_to_str_ext_const(protocol, &ppp_vals_ext, "Unknown"), protocol);
- offset += 2;
- length -= 2;
- if (length > 0)
- proto_tree_add_text(field_tree, tvb, offset, length, "Data (%d byte%s)", length,
- plurality(length, "", "s"));
+dissect_lcp_authprot_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_tree *field_tree;
+ proto_item *tf;
+ guint16 protocol;
+
+ protocol = tvb_get_ntohs(tvb, offset + 2);
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %s (0x%02x)",
+ optp->name, val_to_str_ext_const(protocol, &ppp_vals_ext, "Unknown"),
+ protocol);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_item(field_tree, hf_lcp_opt_auth_protocol, tvb, offset + 2,
+ 2, ENC_BIG_ENDIAN);
+
+ if (length > 4) {
+ offset += 4;
+ length -= 4;
+ if (protocol == PPP_CHAP) {
+ proto_tree_add_item(field_tree, hf_lcp_opt_algorithm, tvb, offset,
+ 1, ENC_NA);
+ if (length > 1) {
+ proto_tree_add_item(field_tree, hf_lcp_opt_data, tvb,
+ offset + 1, length - 1, ENC_NA);
+ }
+ } else {
+ proto_tree_add_item(field_tree, hf_lcp_opt_data, tvb, offset,
+ length, ENC_NA);
+ }
+ }
}
static void
-dissect_lcp_authprot_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
- guint length, packet_info *pinfo _U_,
- proto_tree *tree)
-{
- guint16 protocol;
- guint8 algorithm;
- proto_item *tf;
- proto_tree *field_tree = NULL;
-
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %u byte%s",
- optp->name, length, plurality(length, "", "s"));
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
- offset += 2;
- length -= 2;
- protocol = tvb_get_ntohs(tvb, offset);
- proto_tree_add_text(field_tree, tvb, offset, 2, "%s: %s (0x%02x)", optp->name,
- val_to_str_ext_const(protocol, &ppp_vals_ext, "Unknown"), protocol);
- offset += 2;
- length -= 2;
- if (length > 0) {
- if (protocol == PPP_CHAP) {
- algorithm = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(field_tree, tvb, offset, length,
- "Algorithm: %s (0x%02x)",
- val_to_str_const(algorithm, chap_alg_vals, "Unknown"),
- algorithm);
- offset++;
- } else {
- proto_tree_add_text(field_tree, tvb, offset, length, "Data (%d byte%s)", length,
- plurality(length, "", "s"));
+dissect_lcp_qualprot_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_tree *field_tree;
+ proto_item *tf;
+ guint16 protocol;
+
+ protocol = tvb_get_ntohs(tvb, offset + 2);
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %s (0x%02x)",
+ optp->name, val_to_str_ext_const(protocol, &ppp_vals_ext, "Unknown"),
+ protocol);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_item(field_tree, hf_lcp_opt_quality_protocol, tvb,
+ offset + 2, 2, ENC_BIG_ENDIAN);
+
+ if (length > 4) {
+ proto_tree_add_item(field_tree, hf_lcp_opt_data, tvb, offset + 4,
+ length + 4, ENC_NA);
}
- }
}
static void
-dissect_lcp_magicnumber_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+dissect_lcp_magicnumber_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_tree *field_tree;
+ proto_item *tf;
+
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s: 0x%08x",
+ optp->name, tvb_get_ntohl(tvb, offset + 2));
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_item(field_tree, hf_lcp_opt_magic_number, tvb, offset + 2,
+ 4, ENC_BIG_ENDIAN);
+}
+
+static void
+dissect_lcp_linkqualmon_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_tree *field_tree;
+ proto_item *tf;
+ guint32 reportingperiod;
+
+ reportingperiod = tvb_get_ntohl(tvb, offset + 2);
+ tf = proto_tree_add_text(tree, tvb, offset, length,
+ "%s: %u microsecond%s%s", optp->name, reportingperiod,
+ plurality(reportingperiod, "", "s"),
+ reportingperiod ? "" : " [illegal]");
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_uint_format_value(field_tree, hf_lcp_opt_reportingperiod,
+ tvb, offset + 2, 4, reportingperiod, "%u microsecond%s%s",
+ reportingperiod, plurality(reportingperiod, "", "s"),
+ reportingperiod ? "" : "[illegal]");
+}
+
+/* Used for:
+ * Protocol Field Compression
+ * Address and Control Field Compression
+ * Compound Frames (Deprecated)
+ * Nominal Data Encapsulation (Deprecated)
+ * Multilink Short Sequence Number Header
+ * Simple Data Link on SONET/SDH
+ */
+static void
+dissect_lcp_simple_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_text(tree, tvb, offset, length, "%s: 0x%08x", optp->name,
- tvb_get_ntohl(tvb, offset + 2));
+ proto_tree *field_tree;
+ proto_item *tf;
+
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
}
static void
dissect_lcp_fcs_alternatives_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
-{
- proto_item *tf;
- proto_tree *field_tree = NULL;
- guint8 alternatives;
-
- alternatives = tvb_get_guint8(tvb, offset + 2);
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: 0x%02x",
- optp->name, alternatives);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
- offset += 2;
- if (alternatives & 0x1)
- proto_tree_add_text(field_tree, tvb, offset + 2, 1, "%s",
- decode_boolean_bitfield(alternatives, 0x1, 8, "Null FCS", NULL));
- if (alternatives & 0x2)
- proto_tree_add_text(field_tree, tvb, offset + 2, 1, "%s",
- decode_boolean_bitfield(alternatives, 0x2, 8, "CCITT 16-bit FCS", NULL));
- if (alternatives & 0x4)
- proto_tree_add_text(field_tree, tvb, offset + 2, 1, "%s",
- decode_boolean_bitfield(alternatives, 0x4, 8, "CCITT 32-bit FCS", NULL));
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_tree *field_tree;
+ proto_item *tf;
+ static const int *fcs_alternatives_fields[] = {
+ &hf_lcp_opt_fcs_alternatives_ccitt32,
+ &hf_lcp_opt_fcs_alternatives_ccitt16,
+ &hf_lcp_opt_fcs_alternatives_null,
+ NULL
+ };
+
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s: 0x%02x",
+ optp->name, tvb_get_guint8(tvb, offset + 2));
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_bitmask(field_tree, tvb, offset + 2,
+ hf_lcp_opt_fcs_alternatives, *optp->subtree_index,
+ fcs_alternatives_fields, ENC_NA);
}
static void
dissect_lcp_self_describing_pad_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_text(tree, tvb, offset, length, "%s: %u", optp->name,
- tvb_get_guint8(tvb, offset + 2));
+ proto_tree *field_tree;
+ proto_item *tf;
+ guint8 maximum;
+
+ maximum = tvb_get_guint8(tvb, offset + 2);
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %u octet%s%s",
+ optp->name, maximum, plurality(maximum, "", "s"),
+ maximum ? "" : " [invalid]");
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_uint_format_value(field_tree, hf_lcp_opt_maximum, tvb,
+ offset + 2, 1, maximum, "%u octet%s%s", maximum,
+ plurality(maximum, "", "s"), maximum ? "" : " [invalid]");
}
static void
dissect_lcp_numbered_mode_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
-{
- proto_item *tf;
- proto_tree *field_tree = NULL;
-
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %u byte%s",
- optp->name, length, plurality(length, "", "s"));
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
- offset += 2;
- length -= 2;
- proto_tree_add_text(field_tree, tvb, offset, 1, "Window: %u",
- tvb_get_guint8(tvb, offset));
- offset += 1;
- length -= 1;
- if (length > 0)
- proto_tree_add_text(field_tree, tvb, offset, length, "Address (%d byte%s)",
- length, plurality(length, "", "s"));
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_tree *field_tree;
+ proto_item *tf;
+ guint8 window;
+
+ window = tvb_get_guint8(tvb, offset + 2);
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %u frame%s%s",
+ optp->name, window, plurality(window, "", "s"),
+ (window == 0 || window > 127) ? " [invalid]" : "");
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_uint_format_value(field_tree, hf_lcp_opt_window, tvb,
+ offset + 2, 1, window, "%u frame%s%s", window,
+ plurality(window, "", "s"),
+ (window == 0 || window > 127) ? " [invalid]" : "");
+ if (length > 3) {
+ proto_tree_add_item(field_tree, hf_lcp_opt_hdlc_address, tvb,
+ offset + 3, length - 3, ENC_NA);
+ }
}
+/* http://tools.ietf.org/html/rfc1570#section-2.3 only lists 0-4, but
+ * http://tools.ietf.org/html/draft-ietf-pppext-callback-ds-02 lists 5 as
+ * "E.165 number", rather than "unassigned", and
+ * http://msdn.microsoft.com/en-us/library/ff632847%28v=prot.10%29.aspx does
+ * indicate 6 as below. Since 5 is only mentioned in the draft, leave it as
+ * "unassigned"?
+ */
static const value_string callback_op_vals[] = {
- {0, "Location is determined by user authentication" },
- {1, "Message is dialing string" },
- {2, "Message is location identifier" },
- {3, "Message is E.164" },
- {4, "Message is distinguished name" },
- {5, "unassigned"},
- {6, "Location is determined during CBCP negotiation" },
- {0, NULL }
+ {0, "Location is determined by user authentication"},
+ {1, "Message is dialing string"},
+ {2, "Message is location identifier"},
+ {3, "Message is E.164"},
+ {4, "Message is distinguished name"},
+ {5, "unassigned"}, /* "Message is E.165"? */
+ {6, "Location is determined during CBCP negotiation"},
+ {0, NULL}
};
static void
dissect_lcp_callback_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
- guint length, packet_info *pinfo _U_,
- proto_tree *tree)
-{
- proto_item *tf;
- proto_tree *field_tree = NULL;
- guint8 operation;
-
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %u byte%s",
- optp->name, length, plurality(length, "", "s"));
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
- offset += 2;
- length -= 2;
- operation = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(field_tree, tvb, offset, 1, "Operation: %s (0x%02x)",
- val_to_str_const(operation, callback_op_vals, "Unknown"),
- operation);
- offset += 1;
- length -= 1;
- if (length > 0)
- proto_tree_add_text(field_tree, tvb, offset, length, "Message (%d byte%s)",
- length, plurality(length, "", "s"));
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_tree *field_tree;
+ proto_item *tf;
+ guint8 operation;
+
+ operation = tvb_get_guint8(tvb, offset + 2);
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %s", optp->name,
+ val_to_str_const(operation, callback_op_vals, "Unknown"));
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_item(field_tree, hf_lcp_opt_operation, tvb, offset + 2, 1,
+ ENC_NA);
+
+ if (length > 3) {
+ proto_tree_add_item(field_tree, hf_lcp_opt_message, tvb, offset + 3,
+ length - 3, ENC_NA);
+ }
}
+/* http://tools.ietf.org/html/rfc1990#section-5.1.1 */
static void
dissect_lcp_multilink_mrru_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_text(tree, tvb, offset, length, "%s: %u", optp->name,
- tvb_get_ntohs(tvb, offset + 2));
+ proto_tree *field_tree;
+ proto_item *tf;
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %u", optp->name,
+ tvb_get_ntohs(tvb, offset + 2));
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_item(field_tree, hf_lcp_opt_mrru, tvb, offset + 2, 2,
+ ENC_BIG_ENDIAN);
}
#define CLASS_NULL 0
@@ -2055,1224 +2086,1867 @@ dissect_lcp_multilink_mrru_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
#define CLASS_PSDN_DIRECTORY_NUMBER 5
static const value_string multilink_ep_disc_class_vals[] = {
- {CLASS_NULL, "Null" },
- {CLASS_LOCAL, "Locally assigned address" },
- {CLASS_IP, "IP address" },
- {CLASS_IEEE_802_1, "IEEE 802.1 globally assigned MAC address" },
- {CLASS_PPP_MAGIC_NUMBER, "PPP magic-number block" },
- {CLASS_PSDN_DIRECTORY_NUMBER, "Public switched network directory number" },
- {0, NULL }
+ {CLASS_NULL, "Null"},
+ {CLASS_LOCAL, "Locally assigned address"},
+ {CLASS_IP, "Internet Protocol (IP) address"},
+ {CLASS_IEEE_802_1, "IEEE 802.1 globally assigned MAC address"},
+ {CLASS_PPP_MAGIC_NUMBER, "PPP magic-number block"},
+ {CLASS_PSDN_DIRECTORY_NUMBER, "Public switched network directory number"},
+ {0, NULL}
};
static void
dissect_lcp_multilink_ep_disc_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
-{
- proto_item *tf;
- proto_tree *field_tree = NULL;
- guint8 ep_disc_class;
-
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %u byte%s",
- optp->name, length, plurality(length, "", "s"));
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
- offset += 2;
- length -= 2;
- ep_disc_class = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(field_tree, tvb, offset, 1, "Class: %s (%u)",
- val_to_str_const(ep_disc_class, multilink_ep_disc_class_vals, "Unknown"),
- ep_disc_class);
- offset += 1;
- length -= 1;
- if (length > 0) {
- switch (ep_disc_class) {
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_tree *field_tree;
+ proto_tree *magic_tree;
+ proto_item *tf, *tm;
+ guint8 ep_disc_class;
+
+ ep_disc_class = tvb_get_guint8(tvb, offset + 2);
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s: Class: %s",
+ optp->name, val_to_str_const(ep_disc_class,
+ multilink_ep_disc_class_vals, "Unknown"));
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_item(field_tree, hf_lcp_opt_ep_disc_class, tvb, offset + 2,
+ 1, ENC_NA);
+
+ if (length <= 3)
+ return;
+ length -= 3;
+ offset += 3;
+ switch (ep_disc_class) {
case CLASS_NULL:
- proto_tree_add_text(field_tree, tvb, offset, length,
- "Address (%d byte%s), should have been empty",
- length, plurality(length, "", "s"));
- break;
+ break;
case CLASS_LOCAL:
- if (length > 20) {
- proto_tree_add_text(field_tree, tvb, offset, length,
- "Address (%d byte%s), should have been <20",
- length, plurality(length, "", "s"));
- } else {
- proto_tree_add_text(field_tree, tvb, offset, length,
- "Address (%d byte%s)",
- length, plurality(length, "", "s"));
- }
- break;
+ proto_tree_add_item(field_tree, hf_lcp_opt_data, tvb, offset,
+ length <= 20 ? length : 20, ENC_NA);
+ break;
case CLASS_IP:
- if (length != 4) {
- proto_tree_add_text(field_tree, tvb, offset, length,
- "Address (%d byte%s), should have been 4",
- length, plurality(length, "", "s"));
- } else {
- proto_tree_add_text(field_tree, tvb, offset, length,
- "Address: %s", tvb_ip_to_str(tvb, offset));
- }
- break;
+ if (length >= 4) {
+ proto_tree_add_item(field_tree, hf_lcp_opt_ip_address, tvb, offset,
+ 4, ENC_BIG_ENDIAN);
+ } else {
+ proto_tree_add_item(field_tree, hf_lcp_opt_data, tvb, offset,
+ length, ENC_NA);
+ }
+ break;
case CLASS_IEEE_802_1:
- if (length != 6) {
- proto_tree_add_text(field_tree, tvb, offset, length,
- "Address (%d byte%s), should have been 6",
- length, plurality(length, "", "s"));
- } else {
- proto_tree_add_text(field_tree, tvb, offset, length,
- "Address: %s", tvb_ether_to_str(tvb, offset));
- }
- break;
+ if (length >= 6) {
+ proto_tree_add_item(field_tree, hf_lcp_opt_802_1_address, tvb,
+ offset, 6, ENC_NA);
+ } else {
+ proto_tree_add_item(field_tree, hf_lcp_opt_data, tvb, offset,
+ length, ENC_NA);
+ }
+ break;
case CLASS_PPP_MAGIC_NUMBER:
- /* XXX - dissect as 32-bit magic numbers */
- if (length > 20) {
- proto_tree_add_text(field_tree, tvb, offset, length,
- "Address (%d byte%s), should have been <20",
- length, plurality(length, "", "s"));
- } else {
- proto_tree_add_text(field_tree, tvb, offset, length,
- "Address (%d byte%s)",
- length, plurality(length, "", "s"));
- }
- break;
+ if (length % 4) {
+ proto_tree_add_item(field_tree, hf_lcp_opt_data, tvb, offset,
+ length, ENC_NA);
+ } else {
+ tm = proto_tree_add_item(field_tree, hf_lcp_opt_magic_block, tvb,
+ offset, length <= 20 ? length : 20, ENC_NA);
+ magic_tree = proto_item_add_subtree(tm, ett_lcp_magic_block);
+ for ( ; length >= 4; length -= 4, offset += 4) {
+ proto_tree_add_item(magic_tree, hf_lcp_opt_magic_number, tvb,
+ offset, 4, ENC_BIG_ENDIAN);
+ }
+ }
+ break;
case CLASS_PSDN_DIRECTORY_NUMBER:
- if (length > 15) {
- proto_tree_add_text(field_tree, tvb, offset, length,
- "Address (%d byte%s), should have been <20",
- length, plurality(length, "", "s"));
- } else {
- proto_tree_add_text(field_tree, tvb, offset, length,
- "Address (%d byte%s)",
- length, plurality(length, "", "s"));
- }
- break;
+ proto_tree_add_item(field_tree, hf_lcp_opt_psndn, tvb, offset,
+ length > 15 ? 15 : length, ENC_NA);
+ break;
default:
- proto_tree_add_text(field_tree, tvb, offset, length,
- "Address (%d byte%s)",
- length, plurality(length, "", "s"));
- break;
+ proto_tree_add_item(field_tree, hf_lcp_opt_data, tvb, offset, length,
+ ENC_NA);
+ break;
}
- }
}
+static const value_string dce_id_mode_vals[] = {
+ {1, "Mode-1 (No Additional Negotiation)"},
+ {2, "Mode-2 (Full PPP Negotiation and State Machine)"},
+ {0, NULL}
+};
+
static void
-dissect_lcp_bap_link_discriminator_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+dissect_lcp_dce_identifier_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_text(tree, tvb, offset, length,
- "%s: 0x%04x", optp->name,
- tvb_get_ntohs(tvb, offset + 2));
+ proto_tree *field_tree;
+ proto_item *tf;
+ guint8 mode;
+
+ mode = tvb_get_guint8(tvb, offset + 2);
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %s", optp->name,
+ val_to_str_const(mode, dce_id_mode_vals, "Unknown"));
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_item(field_tree, hf_lcp_opt_mode, tvb, offset + 2, 1,
+ ENC_NA);
}
-/* Character set numbers from the IANA charset registry. */
-static const value_string charset_num_vals[] = {
- {105, "UTF-8" },
- {0, NULL }
-};
+static void
+dissect_lcp_multilink_pp_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_tree *field_tree;
+ proto_item *tf;
+
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_item(field_tree, hf_lcp_opt_unused, tvb, offset + 2, 2,
+ ENC_NA);
+}
static void
-dissect_lcp_internationalization_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
-{
- proto_item *tf;
- proto_tree *field_tree = NULL;
- guint32 charset;
-
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %u byte%s",
- optp->name, length, plurality(length, "", "s"));
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
- offset += 2;
- length -= 2;
- charset = tvb_get_ntohl(tvb, offset);
- proto_tree_add_text(field_tree, tvb, offset, 4, "Character set: %s (0x%04x)",
- val_to_str_const(charset, charset_num_vals, "Unknown"),
- charset);
- offset += 4;
- length -= 4;
- if (length > 0) {
- /* XXX - should be displayed as an ASCII string */
- proto_tree_add_text(field_tree, tvb, offset, length, "Language tag (%d byte%s)",
- length, plurality(length, "", "s"));
- }
+dissect_lcp_bacp_link_discriminator_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_tree *field_tree;
+ proto_item *tf;
+
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %u (0x%04x)",
+ optp->name, tvb_get_ntohs(tvb, offset + 2),
+ tvb_get_ntohs(tvb, offset + 2));
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_item(field_tree, hf_lcp_opt_link_discrim, tvb, offset + 2,
+ 2, ENC_BIG_ENDIAN);
}
+/* Assuming it's this one:
+ * http://tools.ietf.org/html/draft-ietf-pppext-link-negot-00
+ */
static void
-dissect_ipcp_addrs_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
-{
- proto_item *tf;
- proto_tree *field_tree = NULL;
-
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %u byte%s",
- optp->name, length, plurality(length, "", "s"));
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
- offset += 2;
- length -= 2;
- proto_tree_add_text(field_tree, tvb, offset, 4,
- "Source IP address: %s",
- tvb_ip_to_str(tvb, offset));
- offset += 4;
- length -= 4;
- proto_tree_add_text(field_tree, tvb, offset, 4,
- "Destination IP address: %s",
- tvb_ip_to_str(tvb, offset));
+dissect_lcp_auth_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_tree *field_tree;
+ proto_item *tf;
+ guint8 id_len;
+
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_item(field_tree, hf_lcp_opt_id, tvb, offset + 2, 1, ENC_NA);
+
+ if (length > 3) {
+ id_len = tvb_get_guint8(tvb, offset + 2);
+ length -= 3;
+ offset += 3;
+ if (id_len < length) {
+ length -= id_len;
+ offset += id_len;
+ proto_tree_add_item(field_tree, hf_lcp_opt_data, tvb, offset,
+ length, ENC_NA);
+ }
+ }
}
+/* Asuming it's this one:
+ * http://tools.ietf.org/html/draft-ietf-pppext-cobs-00
+ */
static void
-dissect_ipcp_addr_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+dissect_lcp_cobs_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_text(tree, tvb, offset, length, "%s: %s", optp->name,
- tvb_ip_to_str(tvb, offset + 2));
+ proto_tree *field_tree;
+ proto_item *tf;
+ static const int *cobs_flags_fields[] = {
+ &hf_lcp_opt_cobs_flags_res,
+ &hf_lcp_opt_cobs_flags_pre,
+ &hf_lcp_opt_cobs_flags_zxe,
+ NULL
+ };
+
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_bitmask(field_tree, tvb, offset + 2, hf_lcp_opt_cobs_flags,
+ *optp->subtree_index, cobs_flags_fields, ENC_NA);
}
static void
-dissect_ipcp_compress_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
-{
- guint8 ub;
- guint16 us;
- proto_item *tf;
- proto_tree *field_tree = NULL;
-
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %u byte%s",
- optp->name, length, plurality(length, "", "s"));
-
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
- offset += 2; /* Skip option type + length */
- length -= 2;
-
- us = tvb_get_ntohs(tvb, offset);
- proto_tree_add_text( field_tree, tvb, offset, 2, "IP compression protocol: %s (0x%04x)",
- val_to_str_const( us, ipcp_compress_proto_vals, "Unknown protocol" ),
- us );
- offset += 2; /* skip protocol */
- length -= 2;
-
- if (length > 0) {
- switch ( us ) {
- case IPCP_COMPRESS_VJ_1172:
- case IPCP_COMPRESS_VJ:
- /* First byte is max slot id */
- ub = tvb_get_guint8( tvb, offset );
- proto_tree_add_text( field_tree, tvb, offset, 1,
- "Max slot id: %u (0x%02x)",
- ub, ub );
- offset++;
- length--;
-
- if ( length > 0 ) {
- /* second byte is "compress slot id" */
- ub = tvb_get_guint8( tvb, offset );
- proto_tree_add_text( field_tree, tvb, offset, 1,
- "Compress slot id: %s (0x%02x)",
- ub ? "yes" : "no", ub );
- offset++;
- length--;
- }
- break;
+dissect_lcp_prefix_elision_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_tree *field_tree;
+ proto_item *tf;
+ guint8 pre_len;
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
+
+ if (length > 2) {
+ length -= 2;
+ offset += 2;
+ while (length >= 2) {
+ proto_tree_add_item(field_tree, hf_lcp_opt_class, tvb, offset, 1,
+ ENC_NA);
+ pre_len = tvb_get_guint8(tvb, offset + 1);
+ if ((guint)(pre_len + 2) <= length) {
+ proto_tree_add_item(field_tree, hf_lcp_opt_prefix, tvb,
+ offset + 2, 1, ENC_NA);
+ length -= (2 + pre_len);
+ } else {
+ /* Prefix length doesn't make sense, so bail out */
+ length = 0;
+ }
+ }
+ }
+}
- case IPCP_COMPRESS_IPHC:
- if ( length < 2 ) {
- break;
- }
- us = tvb_get_ntohs(tvb, offset);
- proto_tree_add_text( field_tree, tvb, offset, 2,
- "TCP space: %u (0x%04x)",
- us, us );
- offset += 2;
- length -= 2;
+static const value_string ml_hdr_fmt_code_vals[] = {
+ {2, "Long sequence number fragment format with classes"},
+ {6, "Short sequence number fragment format with classes"},
+ {0, NULL}
+};
+static void
+dissect_lcp_multilink_hdr_fmt_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_tree *field_tree;
+ proto_item *tf;
- if ( length < 2 ) {
- break;
- }
- us = tvb_get_ntohs(tvb, offset);
- proto_tree_add_text( field_tree, tvb, offset, 2,
- "Non-TCP space: %u (0x%04x)",
- us, us );
- offset += 2;
- length -= 2;
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_item(field_tree, hf_lcp_opt_code, tvb, offset + 2, 1,
+ ENC_NA);
+ proto_tree_add_item(field_tree, hf_lcp_opt_max_susp_classes, tvb,
+ offset + 3, 1, ENC_NA);
+}
- if ( length < 2 ) {
- break;
- }
- us = tvb_get_ntohs(tvb, offset);
- proto_tree_add_text( field_tree, tvb, offset, 2,
- "Max period: %u (0x%04x) compressed packets",
- us, us );
- offset += 2;
- length -= 2;
+/* Character sets from http://www.iana.org/assignments/character-sets. */
+static const value_string charset_vals[] = {
+ {3, "ANSI_X3.4-1968"},
+ {4, "ISO_8859-1:1987"},
+ {5, "ISO_8859-2:1987"},
+ {6, "ISO_8859-3:1988"},
+ {7, "ISO_8859-4:1988"},
+ {8, "ISO_8859-5:1988"},
+ {9, "ISO_8859-6:1987"},
+ {10, "ISO_8859-7:1987"},
+ {11, "ISO_8859-8:1988"},
+ {12, "ISO_8859-9:1989"},
+ {13, "ISO-8859-10"},
+ {14, "ISO_6937-2-add"},
+ {15, "JIS_X0201"},
+ {16, "JIS_Encoding"},
+ {17, "Shift_JIS"},
+ {18, "Extended_UNIX_Code_Packed_Format_for_Japanese"},
+ {19, "Extended_UNIX_Code_Fixed_Width_for_Japanese"},
+ {20, "BS_4730"},
+ {21, "SEN_850200_C"},
+ {22, "IT"},
+ {23, "ES"},
+ {24, "DIN_66003"},
+ {25, "NS_4551-1"},
+ {26, "NF_Z_62-010"},
+ {27, "ISO-10646-UTF-1"},
+ {28, "ISO_646.basic:1983"},
+ {29, "INVARIANT"},
+ {30, "ISO_646.irv:1983"},
+ {31, "NATS-SEFI"},
+ {32, "NATS-SEFI-ADD"},
+ {33, "NATS-DANO"},
+ {34, "NATS-DANO-ADD"},
+ {35, "SEN_850200_B"},
+ {36, "KS_C_5601-1987"},
+ {37, "ISO-2022-KR"},
+ {38, "EUC-KR"},
+ {39, "ISO-2022-JP"},
+ {40, "ISO-2022-JP-2"},
+ {41, "JIS_C6220-1969-jp"},
+ {42, "JIS_C6220-1969-ro"},
+ {43, "PT"},
+ {44, "greek7-old"},
+ {45, "latin-greek"},
+ {46, "NF_Z_62-010_(1973)"},
+ {47, "Latin-greek-1"},
+ {48, "ISO_5427"},
+ {49, "JIS_C6226-1978"},
+ {50, "BS_viewdata"},
+ {51, "INIS"},
+ {52, "INIS-8"},
+ {53, "INIS-cyrillic"},
+ {54, "ISO_5427:1981"},
+ {55, "ISO_5428:1980"},
+ {56, "GB_1988-80"},
+ {57, "GB_2312-80"},
+ {58, "NS_4551-2"},
+ {59, "videotex-suppl"},
+ {60, "PT2"},
+ {61, "ES2"},
+ {62, "MSZ_7795.3"},
+ {63, "JIS_C6226-1983"},
+ {64, "greek7"},
+ {65, "ASMO_449"},
+ {66, "iso-ir-90"},
+ {67, "JIS_C6229-1984-a"},
+ {68, "JIS_C6229-1984-b"},
+ {69, "JIS_C6229-1984-b-add"},
+ {70, "JIS_C6229-1984-hand"},
+ {71, "JIS_C6229-1984-hand-add"},
+ {72, "JIS_C6229-1984-kana"},
+ {73, "ISO_2033-1983"},
+ {74, "ANSI_X3.110-1983"},
+ {75, "T.61-7bit"},
+ {76, "T.61-8bit"},
+ {77, "ECMA-cyrillic"},
+ {78, "CSA_Z243.4-1985-1"},
+ {79, "CSA_Z243.4-1985-2"},
+ {80, "CSA_Z243.4-1985-gr"},
+ {81, "ISO_8859-6-E"},
+ {82, "ISO_8859-6-I"},
+ {83, "T.101-G2"},
+ {84, "ISO_8859-8-E"},
+ {85, "ISO_8859-8-I"},
+ {86, "CSN_369103"},
+ {87, "JUS_I.B1.002"},
+ {88, "IEC_P27-1"},
+ {89, "JUS_I.B1.003-serb"},
+ {90, "JUS_I.B1.003-mac"},
+ {91, "greek-ccitt"},
+ {92, "NC_NC00-10:81"},
+ {93, "ISO_6937-2-25"},
+ {94, "GOST_19768-74"},
+ {95, "ISO_8859-supp"},
+ {96, "ISO_10367-box"},
+ {97, "latin-lap"},
+ {98, "JIS_X0212-1990"},
+ {99, "DS_2089"},
+ {100, "us-dk"},
+ {101, "dk-us"},
+ {102, "KSC5636"},
+ {103, "UNICODE-1-1-UTF-7"},
+ {104, "ISO-2022-CN"},
+ {105, "ISO-2022-CN-EXT"},
+ {106, "UTF-8"},
+ {109, "ISO-8859-13"},
+ {110, "ISO-8859-14"},
+ {111, "ISO-8859-15"},
+ {112, "ISO-8859-16"},
+ {113, "GBK"},
+ {114, "GB18030"},
+ {115, "OSD_EBCDIC_DF04_15"},
+ {116, "OSD_EBCDIC_DF03_IRV"},
+ {117, "OSD_EBCDIC_DF04_1"},
+ {118, "ISO-11548-1"},
+ {119, "KZ-1048"},
+ {1000, "ISO-10646-UCS-2"},
+ {1001, "ISO-10646-UCS-4"},
+ {1002, "ISO-10646-UCS-Basic"},
+ {1003, "ISO-10646-Unicode-Latin1"},
+ {1004, "ISO-10646-J-1"},
+ {1005, "ISO-Unicode-IBM-1261"},
+ {1006, "ISO-Unicode-IBM-1268"},
+ {1007, "ISO-Unicode-IBM-1276"},
+ {1008, "ISO-Unicode-IBM-1264"},
+ {1009, "ISO-Unicode-IBM-1265"},
+ {1010, "UNICODE-1-1"},
+ {1011, "SCSU"},
+ {1012, "UTF-7"},
+ {1013, "UTF-16BE"},
+ {1014, "UTF-16LE"},
+ {1015, "UTF-16"},
+ {1016, "CESU-8"},
+ {1017, "UTF-32"},
+ {1018, "UTF-32BE"},
+ {1019, "UTF-32LE"},
+ {1020, "BOCU-1"},
+ {2000, "ISO-8859-1-Windows-3.0-Latin-1"},
+ {2001, "ISO-8859-1-Windows-3.1-Latin-1"},
+ {2002, "ISO-8859-2-Windows-Latin-2"},
+ {2003, "ISO-8859-9-Windows-Latin-5"},
+ {2004, "hp-roman8"},
+ {2005, "Adobe-Standard-Encoding"},
+ {2006, "Ventura-US"},
+ {2007, "Ventura-International"},
+ {2008, "DEC-MCS"},
+ {2009, "IBM850"},
+ {2010, "IBM852"},
+ {2011, "IBM437"},
+ {2012, "PC8-Danish-Norwegian"},
+ {2013, "IBM862"},
+ {2014, "PC8-Turkish"},
+ {2015, "IBM-Symbols"},
+ {2016, "IBM-Thai"},
+ {2017, "HP-Legal"},
+ {2018, "HP-Pi-font"},
+ {2019, "HP-Math8"},
+ {2020, "Adobe-Symbol-Encoding"},
+ {2021, "HP-DeskTop"},
+ {2022, "Ventura-Math"},
+ {2023, "Microsoft-Publishing"},
+ {2024, "Windows-31J"},
+ {2025, "GB2312"},
+ {2026, "Big5"},
+ {2027, "macintosh"},
+ {2028, "IBM037"},
+ {2029, "IBM038"},
+ {2030, "IBM273"},
+ {2031, "IBM274"},
+ {2032, "IBM275"},
+ {2033, "IBM277"},
+ {2034, "IBM278"},
+ {2035, "IBM280"},
+ {2036, "IBM281"},
+ {2037, "IBM284"},
+ {2038, "IBM285"},
+ {2039, "IBM290"},
+ {2040, "IBM297"},
+ {2041, "IBM420"},
+ {2042, "IBM423"},
+ {2043, "IBM424"},
+ {2044, "IBM500"},
+ {2045, "IBM851"},
+ {2046, "IBM855"},
+ {2047, "IBM857"},
+ {2048, "IBM860"},
+ {2049, "IBM861"},
+ {2050, "IBM863"},
+ {2051, "IBM864"},
+ {2052, "IBM865"},
+ {2053, "IBM868"},
+ {2054, "IBM869"},
+ {2055, "IBM870"},
+ {2056, "IBM871"},
+ {2057, "IBM880"},
+ {2058, "IBM891"},
+ {2059, "IBM903"},
+ {2060, "IBM904"},
+ {2061, "IBM905"},
+ {2062, "IBM918"},
+ {2063, "IBM1026"},
+ {2064, "EBCDIC-AT-DE"},
+ {2065, "EBCDIC-AT-DE-A"},
+ {2066, "EBCDIC-CA-FR"},
+ {2067, "EBCDIC-DK-NO"},
+ {2068, "EBCDIC-DK-NO-A"},
+ {2069, "EBCDIC-FI-SE"},
+ {2070, "EBCDIC-FI-SE-A"},
+ {2071, "EBCDIC-FR"},
+ {2072, "EBCDIC-IT"},
+ {2073, "EBCDIC-PT"},
+ {2074, "EBCDIC-ES"},
+ {2075, "EBCDIC-ES-A"},
+ {2076, "EBCDIC-ES-S"},
+ {2077, "EBCDIC-UK"},
+ {2078, "EBCDIC-US"},
+ {2079, "UNKNOWN-8BIT"},
+ {2080, "MNEMONIC"},
+ {2081, "MNEM"},
+ {2082, "VISCII"},
+ {2083, "VIQR"},
+ {2084, "KOI8-R"},
+ {2085, "HZ-GB-2312"},
+ {2086, "IBM866"},
+ {2087, "IBM775"},
+ {2088, "KOI8-U"},
+ {2089, "IBM00858"},
+ {2090, "IBM00924"},
+ {2091, "IBM01140"},
+ {2092, "IBM01141"},
+ {2093, "IBM01142"},
+ {2094, "IBM01143"},
+ {2095, "IBM01144"},
+ {2096, "IBM01145"},
+ {2097, "IBM01146"},
+ {2098, "IBM01147"},
+ {2099, "IBM01148"},
+ {2100, "IBM01149"},
+ {2101, "Big5-HKSCS"},
+ {2102, "IBM1047"},
+ {2103, "PTCP154"},
+ {2104, "Amiga-1251"},
+ {2105, "KOI7-switched"},
+ {2106, "BRF"},
+ {2107, "TSCII"},
+ {2108, "CP51932"},
+ {2109, "windows-874"},
+ {2250, "windows-1250"},
+ {2251, "windows-1251"},
+ {2252, "windows-1252"},
+ {2253, "windows-1253"},
+ {2254, "windows-1254"},
+ {2255, "windows-1255"},
+ {2256, "windows-1256"},
+ {2257, "windows-1257"},
+ {2258, "windows-1258"},
+ {2259, "TIS-620"},
+ {2260, "CP50220"},
+ {0, NULL}
+};
+value_string_ext charset_vals_ext = VALUE_STRING_EXT_INIT(charset_vals);
+
+static void
+dissect_lcp_internationalization_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_tree *field_tree;
+ proto_item *tf;
+
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_item(field_tree, hf_lcp_opt_MIBenum, tvb, offset + 2, 4,
+ ENC_BIG_ENDIAN);
+ proto_tree_add_item(field_tree, hf_lcp_opt_language_tag, tvb, offset + 6,
+ length - 6, ENC_NA);
+}
+static void
+dissect_ipcp_opt_type_len(tvbuff_t *tvb, int offset, proto_tree *tree,
+ const char *name)
+{
+ guint8 type;
+
+ type = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint_format_value(tree, hf_ipcp_opt_type, tvb, offset, 1,
+ type, "%s (%u)", name, type);
+ proto_tree_add_item(tree, hf_ipcp_opt_length, tvb, offset + 1, 1, ENC_NA);
+}
- if ( length < 2 ) {
+/* http://tools.ietf.org/html/rfc1172#section-5.1 */
+static void
+dissect_ipcp_addrs_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_item *tf;
+ proto_tree *field_tree;
+
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s: Src: %s, Dst: %s",
+ optp->name, tvb_ip_to_str(tvb, offset + 2),
+ tvb_ip_to_str(tvb, offset + 6));
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ipcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_item(field_tree, hf_ipcp_opt_src_address, tvb, offset + 2,
+ 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(field_tree, hf_ipcp_opt_dst_address, tvb, offset + 6,
+ 4, ENC_BIG_ENDIAN);
+}
+
+static const true_false_string tfs_comp_slot_id = {
+ "The slot identifier may be compressed",
+ "The slot identifier must not be compressed"
+};
+
+/* http://tools.ietf.org/html/rfc1332#section-3.2 */
+static void
+dissect_ipcp_compress_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_item *tf;
+ proto_tree *field_tree;
+ guint16 us;
+
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %s", optp->name,
+ val_to_str_const(tvb_get_ntohs(tvb, offset + 2),
+ ipcp_compress_proto_vals, "Unknown"));
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ipcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_item(field_tree, hf_ipcp_opt_compress_proto, tvb,
+ offset + 2, 2, ENC_BIG_ENDIAN);
+
+ us = tvb_get_ntohs(tvb, offset + 2);
+ switch (us) {
+ case IPCP_ROHC:
+ proto_tree_add_item(field_tree, hf_ipcp_opt_max_cid, tvb, offset + 4,
+ 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(field_tree, hf_ipcp_opt_mrru, tvb, offset + 6, 2,
+ ENC_BIG_ENDIAN);
+ proto_tree_add_item(field_tree, hf_ipcp_opt_max_header, tvb,
+ offset + 8, 2, ENC_BIG_ENDIAN);
+
+ if (length > 10) {
+ proto_item *tso;
+ proto_tree *subopt_tree;
+
+ /* suboptions */
+ offset += 10;
+ length -= 10;
+ tso = proto_tree_add_text(field_tree, tvb, offset, length,
+ "Suboptions: (%u byte%s)", length, plurality(length, "", "s"));
+ subopt_tree = proto_item_add_subtree(tso, *optp->subtree_index);
+ dissect_ip_tcp_options(tvb, offset, length, ipcp_rohc_subopts,
+ N_IPCP_ROHC_SUBOPTS, -1, pinfo, subopt_tree, NULL);
+ }
break;
- }
- us = tvb_get_ntohs(tvb, offset);
- proto_tree_add_text( field_tree, tvb, offset, 2,
- "Max time: %u (0x%04x) seconds",
- us, us );
- offset += 2;
- length -= 2;
+ case IPCP_COMPRESS_VJ_1172:
+ case IPCP_COMPRESS_VJ:
+ proto_tree_add_item(field_tree, hf_ipcp_opt_max_slot_id, tvb,
+ offset + 4, 1, ENC_NA);
+ proto_tree_add_item(field_tree, hf_ipcp_opt_comp_slot_id, tvb,
+ offset + 5, 1, ENC_NA);
+ break;
- if ( length < 2 ) {
+ case IPCP_COMPRESS_IPHC:
+ proto_tree_add_item(field_tree, hf_ipcp_opt_tcp_space, tvb, offset + 4,
+ 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(field_tree, hf_ipcp_opt_non_tcp_space, tvb,
+ offset + 6, 2, ENC_BIG_ENDIAN);
+ us = tvb_get_ntohs(tvb, offset + 8);
+ proto_tree_add_uint_format_value(field_tree, hf_ipcp_opt_f_max_period,
+ tvb, offset + 8, 2, us, "%u%s", us,
+ (us == 0) ? " (infinity)" : "");
+ us = tvb_get_ntohs(tvb, offset + 10);
+ proto_tree_add_uint_format_value(field_tree, hf_ipcp_opt_f_max_time,
+ tvb, offset + 10, 2, us, "%u%s", us,
+ (us == 0) ? " (infinity)" : "");
+ proto_tree_add_item(field_tree, hf_ipcp_opt_max_header, tvb,
+ offset + 12, 2, ENC_BIG_ENDIAN);
+
+ if ( length > 14 ) {
+ proto_item *tso;
+ proto_tree *subopt_tree;
+
+ /* suboptions */
+ offset += 14;
+ length -= 14;
+ tso = proto_tree_add_text(field_tree, tvb, offset, length,
+ "Suboptions: (%u byte%s)", length, plurality(length, "", "s"));
+ subopt_tree = proto_item_add_subtree(tso, *optp->subtree_index);
+ dissect_ip_tcp_options(tvb, offset, length, ipcp_iphc_subopts,
+ N_IPCP_IPHC_SUBOPTS, -1, pinfo, subopt_tree, NULL);
+ }
break;
- }
- us = tvb_get_ntohs(tvb, offset);
- proto_tree_add_text( field_tree, tvb, offset, 2,
- "Max header: %u (0x%04x) bytes",
- us, us );
- offset += 2;
- length -= 2;
-
- if ( length > 0 ) {
- /* suboptions */
- tf = proto_tree_add_text(field_tree, tvb, offset, length,
- "Suboptions: (%u byte%s)",
- length, plurality(length, "", "s"));
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
- dissect_ip_tcp_options(tvb, offset, length,
- ipcp_iphc_subopts, N_IPCP_IPHC_SUBOPTS, -1,
- pinfo, field_tree, NULL);
- }
- return;
- }
- if (length > 0) {
- proto_tree_add_text(field_tree, tvb, offset, length,
- "Data (%d byte%s)", length,
- plurality(length, "", "s"));
+ default:
+ if (length > 4) {
+ proto_tree_add_item(field_tree, hf_ipcp_data, tvb, offset + 4,
+ length - 4, ENC_NA);
+ }
+ break;
}
- }
}
static void
-dissect_ipcp_iphc_disableprot_opt(const ip_tcp_opt *optp,
- tvbuff_t *tvb,
- int offset, guint length,
- packet_info *pinfo _U_,
- proto_tree *tree)
+dissect_ipcp_opt_rohc_type_len(tvbuff_t *tvb, int offset, proto_tree *tree,
+ const char *name)
{
- proto_item *tf;
- proto_tree *field_tree;
- guint8 param;
+ guint8 type;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
-
- param = tvb_get_guint8(tvb, offset + 2);
- proto_tree_add_text(field_tree, tvb, offset + 2, 1,
- "Protocol: %s (0x%02x)",
- val_to_str_const( param, ipcp_iphc_disable_proto_vals, "Unknown" ),
- param );
+ type = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint_format_value(tree, hf_ipcp_opt_rohc_type, tvb, offset,
+ 1, type, "%s (%u)", name, type);
+ proto_tree_add_item(tree, hf_ipcp_opt_rohc_length, tvb, offset + 1, 1,
+ ENC_NA);
}
-
static void
-dissect_osicp_align_npdu_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+dissect_ipcp_rohc_profiles_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_item *tf;
- proto_tree *field_tree;
- guint8 alignment;
+ proto_tree *field_tree;
+ proto_item *tf;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ipcp_opt_rohc_type_len(tvb, offset, field_tree, optp->name);
+ if (length <= 2)
+ return;
- alignment = tvb_get_guint8(tvb, offset + 2);
- proto_tree_add_text(field_tree, tvb, offset + 2, 1,
- "Alignment: %u", alignment);
+ for (offset += 2, length -= 2; length >= 2; length -= 2, offset += 2) {
+ proto_tree_add_item(field_tree, hf_ipcp_opt_rohc_profile, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ }
}
static void
-dissect_pppmuxcp_def_pid_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+dissect_ipcp_opt_iphc_type_len(tvbuff_t *tvb, int offset, proto_tree *tree,
+ const char *name)
{
- pppmux_def_prot_id = tvb_get_ntohs(tvb, offset + 2);
- proto_tree_add_text(tree, tvb, offset + 2, length - 2, "%s: %s (0x%02x)",optp->name,
- val_to_str_ext_const(pppmux_def_prot_id, &ppp_vals_ext, "Unknown"), pppmux_def_prot_id);
-}
+ guint8 type;
+ type = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint_format_value(tree, hf_ipcp_opt_iphc_type, tvb, offset,
+ 1, type, "%s (%u)", name, type);
+ proto_tree_add_item(tree, hf_ipcp_opt_iphc_length, tvb, offset + 1, 1,
+ ENC_NA);
+}
static void
-dissect_ccp_stac_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+dissect_ipcp_iphc_simple_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_item *tf;
- proto_tree *field_tree;
- guint8 check_mode;
+ proto_tree *field_tree;
+ proto_item *tf;
- if (length == 6) {
- proto_tree_add_text(tree, tvb, offset, length,
- "%s (Ascend Proprietary version)", optp->name);
- /* We don't know how to decode the following 4 octets, since
- there's no public document that describe their usage. */
- } else {
tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ipcp_opt_iphc_type_len(tvb, offset, field_tree, optp->name);
+}
- proto_tree_add_text(field_tree, tvb, offset + 2, 2,
- "History Count: %u", tvb_get_ntohs(tvb, offset + 2));
- check_mode = tvb_get_guint8(tvb, offset + 4);
- proto_tree_add_text(field_tree, tvb, offset + 4, 1,
- "Check Mode: %s (0x%02X)",
- val_to_str_const(check_mode, stac_checkmode_vals, "Unknown"),
- check_mode);
- }
+static void
+dissect_ipcp_iphc_neghdrcomp_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_tree *field_tree;
+ proto_item *tf;
+
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ipcp_opt_iphc_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_item(field_tree, hf_ipcp_opt_iphc_param, tvb, offset + 2, 1,
+ ENC_NA);
}
static void
-dissect_ccp_mppc_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
-{
- proto_item *tf;
- proto_tree *flags_tree;
- guint32 supported_bits;
-
- supported_bits = tvb_get_ntohl(tvb, offset + 2);
- tf = proto_tree_add_text(tree, tvb, offset, length,
- "%s: Supported Bits: 0x%08X", optp->name, supported_bits);
- flags_tree = proto_item_add_subtree(tf, *optp->subtree_index);
- proto_tree_add_text(flags_tree, tvb, offset + 2, 4, "%s",
- decode_boolean_bitfield(supported_bits, MPPC_SUPPORTED_BITS_C, 8*4,
- "Desire to negotiate MPPC", "NO Desire to negotiate MPPC"));
- proto_tree_add_text(flags_tree, tvb, offset + 2, 4, "%s",
- decode_boolean_bitfield(supported_bits, MPPE_SUPPORTED_BITS_D, 8*4,
- "Obsolete (should NOT be 1)", "Obsolete (should ALWAYS be 0)"));
- proto_tree_add_text(flags_tree, tvb, offset + 2, 4, "%s",
- decode_boolean_bitfield(supported_bits, MPPE_SUPPORTED_BITS_L, 8*4,
- "40-bit encryption ON", "40-bit encryption OFF"));
- proto_tree_add_text(flags_tree, tvb, offset + 2, 4, "%s",
- decode_boolean_bitfield(supported_bits, MPPE_SUPPORTED_BITS_S, 8*4,
- "128-bit encryption ON", "128-bit encryption OFF"));
- proto_tree_add_text(flags_tree, tvb, offset + 2, 4, "%s",
- decode_boolean_bitfield(supported_bits, MPPE_SUPPORTED_BITS_M, 8*4,
- "56-bit encryption ON", "56-bit encryption OFF"));
- proto_tree_add_text(flags_tree, tvb, offset + 2, 4, "%s",
- decode_boolean_bitfield(supported_bits, MPPE_SUPPORTED_BITS_H, 8*4,
- "Stateless mode ON", "Stateless mode OFF"));
+dissect_ipcp_addr_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_item *tf;
+ proto_tree *field_tree;
+
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %s", optp->name,
+ tvb_ip_to_str(tvb, offset + 2));
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ipcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_item(field_tree, hf_ipcp_opt_ip_address, tvb, offset + 2, 4,
+ ENC_BIG_ENDIAN);
}
static void
-dissect_ccp_bsdcomp_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+dissect_ipcp_mobileipv4_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_item *tf;
- proto_tree *field_tree;
+ proto_item *tf;
+ proto_tree *field_tree;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %s", optp->name,
+ tvb_ip_to_str(tvb, offset + 2));
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ipcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_item(field_tree, hf_ipcp_opt_mobilenodehomeaddr, tvb,
+ offset + 2, 4, ENC_BIG_ENDIAN);
+}
- proto_tree_add_text(field_tree, tvb, offset + 2, 1,
- "Version: %u", tvb_get_guint8(tvb, offset + 2) >> 5);
- proto_tree_add_text(field_tree, tvb, offset + 2, 1,
- "Dict: %u bits",
- tvb_get_guint8(tvb, offset + 2) & 0x1f);
+static void
+dissect_ipcp_pri_dns_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_item *tf;
+ proto_tree *field_tree;
+
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %s", optp->name,
+ tvb_ip_to_str(tvb, offset + 2));
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ipcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_item(field_tree, hf_ipcp_opt_pri_dns_address, tvb,
+ offset + 2, 4, ENC_BIG_ENDIAN);
}
static void
-dissect_ccp_lzsdcp_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
-{
- proto_item *tf;
- proto_tree *field_tree;
- guint8 check_mode;
- guint8 process_mode;
-
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
-
- proto_tree_add_text(field_tree, tvb, offset + 2, 2,
- "History Count: %u", tvb_get_ntohs(tvb, offset + 2));
- check_mode = tvb_get_guint8(tvb, offset + 4);
- proto_tree_add_text(field_tree, tvb, offset + 4, 1,
- "Check Mode: %s (0x%02X)",
- val_to_str_const(check_mode, lzsdcp_checkmode_vals, "Unknown"),
- check_mode);
- process_mode = tvb_get_guint8(tvb, offset + 5);
- proto_tree_add_text(field_tree, tvb, offset + 5, 1,
- "Process Mode: %s (0x%02X)",
- val_to_str_const(process_mode, lzsdcp_processmode_vals, "Unknown"),
- process_mode);
+dissect_ipcp_pri_nbns_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_item *tf;
+ proto_tree *field_tree;
+
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %s", optp->name,
+ tvb_ip_to_str(tvb, offset + 2));
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ipcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_item(field_tree, hf_ipcp_opt_pri_nbns_address, tvb,
+ offset + 2, 4, ENC_BIG_ENDIAN);
}
static void
-dissect_ccp_mvrca_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+dissect_ipcp_sec_dns_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_item *tf;
- proto_tree *field_tree;
+ proto_item *tf;
+ proto_tree *field_tree;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %s", optp->name,
+ tvb_ip_to_str(tvb, offset + 2));
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ipcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_item(field_tree, hf_ipcp_opt_sec_dns_address, tvb,
+ offset + 2, 4, ENC_BIG_ENDIAN);
+}
- proto_tree_add_text(field_tree, tvb, offset + 2, 1,
- "Features: %u", tvb_get_guint8(tvb, offset + 2) >> 5);
- proto_tree_add_text(field_tree, tvb, offset + 2, 1,
- "Packet by Packet flag: %s",
- tvb_get_guint8(tvb, offset + 2) & 0x20 ? "true" : "false");
- proto_tree_add_text(field_tree, tvb, offset + 2, 1,
- "History: %u", tvb_get_guint8(tvb, offset + 2) & 0x20);
- proto_tree_add_text(field_tree, tvb, offset + 3, 1,
- "Number of contexts: %u", tvb_get_guint8(tvb, offset + 3));
+static void
+dissect_ipcp_sec_nbns_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_item *tf;
+ proto_tree *field_tree;
+
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %s", optp->name,
+ tvb_ip_to_str(tvb, offset + 2));
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ipcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_item(field_tree, hf_ipcp_opt_sec_nbns_address, tvb,
+ offset + 2, 4, ENC_BIG_ENDIAN);
}
+
static void
-dissect_ccp_deflate_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+dissect_osinlcp_opt_type_len(tvbuff_t *tvb, int offset, proto_tree *tree,
+ const char *name)
{
- proto_item *tf;
- proto_tree *field_tree;
- guint8 method;
+ guint8 type;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ type = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint_format_value(tree, hf_osinlcp_opt_type, tvb, offset, 1,
+ type, "%s (%u)", name, type);
+ proto_tree_add_item(tree, hf_osinlcp_opt_length, tvb, offset + 1, 1,
+ ENC_NA);
+}
+
+static void
+dissect_osinlcp_align_npdu_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_item *tf;
+ proto_tree *field_tree;
- proto_tree_add_text(field_tree, tvb, offset + 2, 1,
- "Window: %u", hi_nibble(tvb_get_guint8(tvb, offset + 2)));
- method = lo_nibble(tvb_get_guint8(tvb, offset + 2));
- proto_tree_add_text(field_tree, tvb, offset + 2, 1,
- "Method: %s (0x%02x)",
- method == 0x08 ? "zlib compression" : "other", method);
- proto_tree_add_text(field_tree, tvb, offset + 3, 1,
- "Sequence number check method: %u",
- tvb_get_guint8(tvb, offset + 2) & 0x03);
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s: Alignment: %u",
+ optp->name, tvb_get_guint8(tvb, offset + 2));
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_osinlcp_opt_type_len(tvb, offset, field_tree, optp->name);
+ proto_tree_add_item(field_tree, hf_osinlcp_opt_alignment, tvb, offset + 2,
+ 1, ENC_NA);
}
static void
-dissect_cbcp_no_callback_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+dissect_pppmuxcp_def_pid_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ pppmux_def_prot_id = tvb_get_ntohs(tvb, offset + 2);
+ proto_tree_add_text(tree, tvb, offset + 2, length - 2, "%s: %s (0x%02x)",
+ optp->name,
+ val_to_str_ext_const(pppmux_def_prot_id, &ppp_vals_ext, "Unknown"),
+ pppmux_def_prot_id);
}
+
static void
-dissect_cbcp_callback_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
-{
- proto_item *tf;
- proto_tree *field_tree;
- proto_tree *addr_tree;
- guint8 addr_type;
- guint addr_len;
-
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
-
- proto_tree_add_text(field_tree, tvb, offset + 2, 1,
- "Callback delay: %u", tvb_get_guint8(tvb, offset + 2));
- offset += 3;
- length -= 3;
-
- while (length > 0) {
- proto_tree_add_text(field_tree, tvb, offset, length,
- "Callback Address");
- addr_type = tvb_get_guint8(tvb, offset);
- addr_tree = proto_item_add_subtree(tf, ett_cbcp_callback_opt_addr);
- proto_tree_add_text(addr_tree, tvb, offset, 1,
- "Address Type: %s (%u)",
- ((addr_type == 1) ? "PSTN/ISDN" : "Other"), addr_type);
- offset++;
- length--;
- addr_len = tvb_strsize(tvb, offset);
- if (addr_len > length) {
- proto_tree_add_text(addr_tree, tvb, offset, length,
- "Address: (runs past end of option)");
- break;
+dissect_ccp_opt_type_len(tvbuff_t *tvb, int offset, proto_tree *tree,
+ const char *name)
+{
+ guint8 type;
+
+ type = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint_format_value(tree, hf_ccp_opt_type, tvb, offset, 1,
+ type, "%s (%u)", name, type);
+ proto_tree_add_item(tree, hf_ccp_opt_length, tvb, offset + 1, 1, ENC_NA);
+}
+
+/* http://tools.ietf.org/html/rfc1962 */
+static void dissect_ccp_oui_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_tree *field_tree;
+ proto_item *tf, *ti;
+ guint32 oui;
+ const gchar *manuf;
+
+ oui = tvb_get_ntoh24(tvb, offset + 2);
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ccp_opt_type_len(tvb, offset, field_tree, optp->name);
+ ti = proto_tree_add_uint_format_value(field_tree, hf_ccp_opt_oui, tvb,
+ offset + 2, 3, oui, "%02x:%02x:%02x",
+ (oui >> 16) & 0xff, (oui >> 8) & 0xff, oui & 0xff);
+ manuf = uint_get_manuf_name_if_known(oui);
+ if (manuf)
+ proto_item_append_text(ti, "(%s)", manuf);
+
+ proto_tree_add_item(field_tree, hf_ccp_opt_subtype, tvb, offset + 5, 1,
+ ENC_NA);
+ if (length > 6) {
+ proto_tree_add_item(field_tree, hf_ccp_opt_data, tvb, offset + 6,
+ length - 6, ENC_NA);
}
- proto_tree_add_text(addr_tree, tvb, offset, addr_len,
- "Address: %s",
- tvb_format_text(tvb, offset, addr_len - 1));
- offset += addr_len;
- length -= addr_len;
- }
}
-static void
-dissect_bacp_favored_peer_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+/* The following configuration option types are mentioned at
+ * http://www.iana.org/assignments/ppp-numbers as referencing RFC1962; however,
+ * RFC1962 only mentions Proprietary Compression OUI in section 4.1. These
+ * others are therefore being treated as section 4.2 "Other Compression Types",
+ * in terms of how they are dissected:
+ * 1) Predictor type 1
+ * 2) Predictor type 2
+ * 3) Puddle Jumper
+ * 16) Hewlett-Packard PPC
+ * 20) V.42bis compression
+ */
+static void dissect_ccp_other_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_item *tf;
- proto_tree *field_tree;
+ proto_tree *field_tree;
+ proto_item *tf;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ccp_opt_type_len(tvb, offset, field_tree, optp->name);
- proto_tree_add_text(field_tree, tvb, offset + 2, 4,
- "Magic number: 0x%08x", tvb_get_ntohl(tvb, offset + 2));
+ if (length > 2) {
+ proto_tree_add_item(field_tree, hf_ccp_opt_data, tvb, offset + 2,
+ length - 2, ENC_NA);
+ }
}
+/* http://tools.ietf.org/html/rfc1974 */
static void
-dissect_bap_link_type_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+dissect_ccp_stac_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_item *tf;
- proto_tree *field_tree;
- guint8 link_type;
+ proto_item *tf;
+ proto_tree *field_tree;
+ const char *stac_ascend = "Stac Electronics LZS (Ascend Proprietary version)";
+ static const int *check_mode_fields[] = {
+ &hf_ccp_opt_cm_reserved,
+ &hf_ccp_opt_cm_check_mode,
+ NULL
+ };
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ if (length == 6) {
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", stac_ascend);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ccp_opt_type_len(tvb, offset, field_tree, stac_ascend);
+
+ /* We don't know how to decode the following 4 octets, since
+ there are no public documents that describe their usage. */
+ proto_tree_add_item(field_tree, hf_ccp_opt_data, tvb, offset + 2,
+ length - 2, ENC_NA);
+ } else {
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ccp_opt_type_len(tvb, offset, field_tree, optp->name);
- proto_tree_add_text(field_tree, tvb, offset + 2, 2,
- "Link Speed: %u kbps", tvb_get_ntohs(tvb, offset + 2));
- link_type = tvb_get_guint8(tvb, offset + 4);
- proto_tree_add_text(field_tree, tvb, offset + 4, 1,
- "Link Type: %s (%u)",
- val_to_str_const(link_type, bap_link_type_vals, "Unknown"),
- link_type);
+ proto_tree_add_item(field_tree, hf_ccp_opt_history_count, tvb,
+ offset + 2, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_bitmask(field_tree, tvb, offset + 4, hf_ccp_opt_cm,
+ ett_ccp_stac_opt_check_mode, check_mode_fields, ENC_NA);
+ }
}
+/*
+ * Microsoft Point-To-Point Compression (MPPC) and Encryption (MPPE)
+ * supported bits.
+ */
+#define MPPC_SUPPORTED_BITS_C 0x00000001 /* MPPC negotiation */
+#define MPPE_SUPPORTED_BITS_D 0x00000010 /* Obsolete */
+#define MPPE_SUPPORTED_BITS_L 0x00000020 /* 40-bit encryption */
+#define MPPE_SUPPORTED_BITS_S 0x00000040 /* 128-bit encryption */
+#define MPPE_SUPPORTED_BITS_M 0x00000080 /* 56-bit encryption */
+#define MPPE_SUPPORTED_BITS_H 0x01000000 /* stateless mode */
+
+static const true_false_string ccp_mppe_h_tfs = {
+ "Stateless mode ON",
+ "Stateless mode OFF"
+};
+static const true_false_string ccp_mppe_m_tfs = {
+ "56-bit encryption ON",
+ "56-bit encryption OFF"
+};
+static const true_false_string ccp_mppe_s_tfs = {
+ "128-bit encryption ON",
+ "128-bit encryption OFF"
+};
+static const true_false_string ccp_mppe_l_tfs = {
+ "40-bit encryption ON",
+ "40-bit encryption OFF"
+};
+static const true_false_string ccp_mppe_d_tfs = {
+ "Obsolete (should NOT be 1)",
+ "Obsolete (should ALWAYS be 0)"
+};
+static const true_false_string ccp_mppe_c_tfs = {
+ "Desire to negotiate MPPC",
+ "No desire to negotiate MPPC"
+};
+
+/* http://tools.ietf.org/html/rfc2118,
+ * http://tools.ietf.org/html/rfc3078 */
static void
-dissect_bap_phone_delta_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
-{
- proto_item *tf;
- proto_tree *field_tree;
- proto_item *ti;
- proto_tree *suboption_tree;
- guint8 subopt_type;
- guint8 subopt_len;
-
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
-
- offset += 2;
- length -= 2;
-
- while (length > 0) {
- subopt_type = tvb_get_guint8(tvb, offset);
- subopt_len = tvb_get_guint8(tvb, offset + 1);
- ti = proto_tree_add_text(field_tree, tvb, offset, subopt_len,
- "Sub-Option (%u byte%s)",
- subopt_len, plurality(subopt_len, "", "s"));
- suboption_tree = proto_item_add_subtree(ti, ett_bap_phone_delta_subopt);
-
- proto_tree_add_text(suboption_tree, tvb, offset, 1,
- "Sub-Option Type: %s (%u)",
- val_to_str_const(subopt_type, bap_phone_delta_subopt_vals, "Unknown"),
- subopt_type);
-
- if (subopt_len < 2) {
- proto_tree_add_text(suboption_tree, tvb, offset + 1, 1,
- "Sub-Option Length: %u (invalid, must be >= 2)", subopt_len);
- return;
- }
- if (subopt_len > length) {
- proto_tree_add_text(suboption_tree, tvb, offset + 1, 1,
- "Sub-Option Length: %u (invalid, must be <= length remaining in option %u)", subopt_len, length);
- return;
- }
+dissect_ccp_mppe_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_item *tf;
+ proto_tree *field_tree;
+ static const int *supported_bits_fields[] = {
+ &hf_ccp_opt_supported_bits_h,
+ &hf_ccp_opt_supported_bits_m,
+ &hf_ccp_opt_supported_bits_s,
+ &hf_ccp_opt_supported_bits_l,
+ &hf_ccp_opt_supported_bits_d,
+ &hf_ccp_opt_supported_bits_c,
+ NULL
+ };
- proto_tree_add_text(suboption_tree, tvb, offset + 1, 1,
- "Sub-Option Length: %u", subopt_len);
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ccp_opt_type_len(tvb, offset, field_tree, optp->name);
- switch (subopt_type) {
- case BAP_PHONE_DELTA_SUBOPT_UNIQ_DIGIT:
- if (subopt_len == 3) {
- proto_tree_add_text(suboption_tree, tvb, offset + 2, 1, "Unique Digit: %u",
- tvb_get_guint8(tvb, offset + 2));
- } else {
- proto_tree_add_text(suboption_tree, tvb, offset + 1, 1,
- "Invalid suboption length: %u (must be == 3)",
- subopt_len);
- }
- break;
- case BAP_PHONE_DELTA_SUBOPT_SUBSC_NUM:
- if (subopt_len > 2) {
- proto_tree_add_text(suboption_tree, tvb, offset + 2, subopt_len - 2,
- "Subscriber Number: %s",
- tvb_format_text(tvb, offset + 2, subopt_len - 2));
- } else {
- proto_tree_add_text(suboption_tree, tvb, offset + 1, 1,
- "Invalid suboption length: %u (must be > 2)",
- subopt_len);
- }
- break;
- case BAP_PHONE_DELTA_SUBOPT_PHONENUM_SUBADDR:
- if (subopt_len > 2) {
- proto_tree_add_text(suboption_tree, tvb, offset + 2, subopt_len - 2,
- "Phone Number Sub Address: %s",
- tvb_format_text(tvb, offset + 2, subopt_len - 2));
- } else {
- proto_tree_add_text(suboption_tree, tvb, offset + 1, 1,
- "Invalid suboption length: %u (must be > 2)",
- subopt_len);
- }
- break;
- default:
- if (subopt_len > 2) {
- proto_tree_add_text(suboption_tree, tvb, offset + 2, subopt_len - 2,
- "Unknown");
- } else {
- proto_tree_add_text(suboption_tree, tvb, offset + 1, 1,
- "Invalid suboption length: %u (must be > 2)",
- subopt_len);
- }
- break;
+ proto_tree_add_bitmask(field_tree, tvb, offset + 2,
+ hf_ccp_opt_supported_bits, ett_ccp_mppe_opt_supp_bits,
+ supported_bits_fields, ENC_BIG_ENDIAN);
+}
+
+/* http://tools.ietf.org/html/rfc1993 */
+static void dissect_ccp_gfza_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_tree *field_tree;
+ proto_item *tf;
+
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ccp_opt_type_len(tvb, offset, field_tree, optp->name);
+
+ proto_tree_add_item(field_tree, hf_ccp_opt_history, tvb, offset + 2, 1,
+ ENC_NA);
+
+ if (length > 3) {
+ proto_tree_add_item(field_tree, hf_ccp_opt_version, tvb, offset + 3,
+ length - 3, ENC_NA);
}
- offset += subopt_len;
- length -= subopt_len;
- }
}
+/* http://tools.ietf.org/html/rfc1977 */
static void
-dissect_bap_reason_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+dissect_ccp_bsdcomp_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
{
- if (length > 2) {
- proto_tree_add_text(tree, tvb, offset, length, "%s: %s",
- optp->name,
- tvb_format_text(tvb, offset + 2, length - 2));
- }
+ proto_item *tf;
+ proto_tree *field_tree;
+ static const int *vd_fields[] = {
+ &hf_ccp_opt_vd_vers,
+ &hf_ccp_opt_vd_dict
+ };
+
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ccp_opt_type_len(tvb, offset, field_tree, optp->name);
+
+ proto_tree_add_bitmask(field_tree, tvb, offset + 2, hf_ccp_opt_vd,
+ *optp->subtree_index, vd_fields, ENC_BIG_ENDIAN);
}
+/* http://tools.ietf.org/html/rfc1967 */
static void
-dissect_bap_link_disc_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+dissect_ccp_lzsdcp_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_text(tree, tvb, offset, length, "%s: 0x%04x",
- optp->name, tvb_get_ntohs(tvb, offset + 2));
+ proto_item *tf;
+ proto_tree *field_tree;
+
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ccp_opt_type_len(tvb, offset, field_tree, optp->name);
+
+ proto_tree_add_item(field_tree, hf_ccp_opt_history_count, tvb,
+ offset + 2, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(field_tree, hf_ccp_opt_check_mode, tvb, offset + 4, 1,
+ ENC_NA);
+ proto_tree_add_item(field_tree, hf_ccp_opt_process_mode, tvb, offset + 5,
+ 1, ENC_NA);
}
+/* http://tools.ietf.org/html/rfc1975 */
static void
-dissect_bap_call_status_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+dissect_ccp_mvrca_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_item *tf;
- proto_tree *field_tree;
- guint8 status, action;
+ proto_item *tf;
+ proto_tree *field_tree;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ccp_opt_type_len(tvb, offset, field_tree, optp->name);
+
+ proto_tree_add_item(field_tree, hf_ccp_opt_fe, tvb, offset + 2, 1, ENC_NA);
+ proto_tree_add_item(field_tree, hf_ccp_opt_p, tvb, offset + 2, 1, ENC_NA);
+ proto_tree_add_item(field_tree, hf_ccp_opt_History, tvb, offset + 2, 1,
+ ENC_NA);
+ proto_tree_add_item(field_tree, hf_ccp_opt_contexts, tvb, offset + 3, 1,
+ ENC_NA);
+}
- status = tvb_get_guint8(tvb, offset + 2);
- proto_tree_add_text(field_tree, tvb, offset + 2, 1,
- "Status: %s (0x%02x)",
- val_to_str_ext_const(status, &q931_cause_code_vals_ext, "Unknown"), status);
+/* http://tools.ietf.org/html/rfc1976 */
+static void
+dissect_ccp_dce_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_item *tf;
+ proto_tree *field_tree;
- action = tvb_get_guint8(tvb, offset + 3);
- proto_tree_add_text(field_tree, tvb, offset + 3, 1,
- "Action: %s (0x%02x)",
- val_to_str_const(action, bap_call_status_opt_action_vals, "Unknown"), action);
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ccp_opt_type_len(tvb, offset, field_tree, optp->name);
+
+ proto_tree_add_item(field_tree, hf_ccp_opt_mode, tvb, offset + 2, 1,
+ ENC_NA);
}
+static const value_string deflate_method_vals[] = {
+ {8, "zlib compression"},
+ {0, NULL}
+};
+
+static const value_string deflate_chk_vals[] = {
+ {0, "sequence number check method"},
+ {0, NULL}
+};
+
+/* http://tools.ietf.org/html/rfc1979 */
static void
-dissect_vsncp_pdnid_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+dissect_ccp_deflate_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
{
- guint8 PDNID;
+ proto_item *tf;
+ proto_tree *field_tree;
+ guint8 window;
- PDNID = tvb_get_guint8(tvb, offset + 2);
- proto_tree_add_text(tree, tvb, offset, length, "%s: 0x%02x",
- optp->name, PDNID);
- offset += 2;
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ccp_opt_type_len(tvb, offset, field_tree, optp->name);
+
+ window = tvb_get_guint8(tvb, offset + 2);
+ proto_tree_add_uint_format_value(field_tree, hf_ccp_opt_window, tvb,
+ offset + 2, 1, window, "%u", 1 << (hi_nibble(window) + 8));
+ proto_tree_add_item(field_tree, hf_ccp_opt_method, tvb, offset + 2, 1,
+ ENC_NA);
+ proto_tree_add_item(field_tree, hf_ccp_opt_mbz, tvb, offset + 3, 1,
+ ENC_NA);
+ proto_tree_add_item(field_tree, hf_ccp_opt_chk, tvb, offset + 3, 1,
+ ENC_NA);
}
-static void
-dissect_vsncp_attachtype_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+static const range_string v44lzjh_mode_dict_rvals[] = {
+ {0, 0, "Datagram Mode (one dictionary and no history)"},
+ {1, 1, "Multi-Datagram Mode (one dictionary with history)"},
+ {2, G_MAXUINT16, "Individual Link Mode" /* "(and proposed number of
+ dictionaries each with a
+ corresponding history" */},
+ {0, 0, NULL}
+};
+
+/* http://www.watersprings.org/pub/id/draft-heath-ppp-v44-01.txt */
+static void dissect_ccp_v44lzjh_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree)
{
- static const value_string attach_vals[] =
- {
- {1, "Initial Attach" },
- {3, "Handover Attach"},
- {0, NULL }
- };
+ proto_item *tf;
+ proto_tree *field_tree;
- guint8 attach;
- attach = tvb_get_guint8(tvb, offset + 2);
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ dissect_ccp_opt_type_len(tvb, offset, field_tree, optp->name);
- if(tree)
- {
- proto_tree_add_text(tree, tvb, offset, length, "%s: %s (0x%02x)",
- optp->name, val_to_str_const(attach , attach_vals, "Unknown"), attach);
- }
- offset += 2;
+ proto_tree_add_item(field_tree, hf_ccp_opt_mode_dictcount, tvb, offset + 2,
+ 2, ENC_BIG_ENDIAN);
+ if (length > 4) {
+ proto_tree_add_item(field_tree, hf_ccp_opt_dict_size, tvb, offset + 4,
+ 2, ENC_BIG_ENDIAN);
+ if (length > 6) {
+ proto_tree_add_item(field_tree, hf_ccp_opt_history_length, tvb,
+ offset + 6, 2, ENC_BIG_ENDIAN);
+ }
+ }
}
+
static void
-dissect_vsncp_pdntype_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+dissect_cbcp_no_callback_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
{
- static const value_string pdntype_vals[] =
- {
- {1, "IPv4" },
- {2, "IPv6" },
- {3, "IPv6/IPv4" },
- {0, NULL }
- };
+ proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+}
+
+static void
+dissect_cbcp_callback_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_item *tf;
+ proto_tree *field_tree;
+ proto_tree *addr_tree;
+ guint8 addr_type;
+ guint addr_len;
+
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
- guint8 pdntype;
- pdntype = tvb_get_guint8(tvb, offset + 2);
+ proto_tree_add_text(field_tree, tvb, offset + 2, 1, "Callback delay: %u",
+ tvb_get_guint8(tvb, offset + 2));
+ offset += 3;
+ length -= 3;
- if(tree)
- {
- proto_tree_add_text(tree, tvb, offset, length, "%s: %s (0x%02x)",
- optp->name, val_to_str_const(pdntype, pdntype_vals, "Unknown"), pdntype);
- }
- offset += 2;
+ while (length > 0) {
+ proto_tree_add_text(field_tree, tvb, offset, length,
+ "Callback Address");
+ addr_type = tvb_get_guint8(tvb, offset);
+ addr_tree = proto_item_add_subtree(tf, ett_cbcp_callback_opt_addr);
+ proto_tree_add_text(addr_tree, tvb, offset, 1, "Address Type: %s (%u)",
+ ((addr_type == 1) ? "PSTN/ISDN" : "Other"), addr_type);
+ offset++;
+ length--;
+ addr_len = tvb_strsize(tvb, offset);
+ if (addr_len > length) {
+ proto_tree_add_text(addr_tree, tvb, offset, length,
+ "Address: (runs past end of option)");
+ break;
+ }
+ proto_tree_add_text(addr_tree, tvb, offset, addr_len, "Address: %s",
+ tvb_format_text(tvb, offset, addr_len - 1));
+ offset += addr_len;
+ length -= addr_len;
+ }
}
static void
-dissect_vsncp_errorcode_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+dissect_bacp_favored_peer_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree)
{
- static const value_string errorcode_vals[] =
- {
- {0, "General Eror" },
- {1, "Unauthorized APN" },
- {2, "PDN Limit Exceeded" },
- {3, "NO PG-W Available" },
- {4, "P-GW Unreachable" },
- {5, "P-GW Reject" },
- {6, "Insufficient Parameters" },
- {7, "Resource Unavailable" },
- {8, "Admin Prohibited" },
- {9, "PDN-ID Already in Use" },
- {10, "Subscription Limitation" },
- {11, "PDN connection already exists for APN" },
- {0, NULL }
- };
+ proto_item *tf;
+ proto_tree *field_tree;
- guint8 pdntype;
- pdntype = tvb_get_guint8(tvb, offset + 2);
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
- if(tree)
- {
- proto_tree_add_text(tree, tvb, offset, length, "%s: %s (0x%02x)",
- optp->name, val_to_str_const(pdntype, errorcode_vals, "Unknown"), pdntype);
- }
- offset += 2;
+ proto_tree_add_text(field_tree, tvb, offset + 2, 4, "Magic number: 0x%08x",
+ tvb_get_ntohl(tvb, offset + 2));
+}
+static void
+dissect_bap_link_type_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_item *tf;
+ proto_tree *field_tree;
+ guint8 link_type;
+
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+
+ proto_tree_add_text(field_tree, tvb, offset + 2, 2, "Link Speed: %u kbps",
+ tvb_get_ntohs(tvb, offset + 2));
+ link_type = tvb_get_guint8(tvb, offset + 4);
+ proto_tree_add_text(field_tree, tvb, offset + 4, 1, "Link Type: %s (%u)",
+ val_to_str_const(link_type, bap_link_type_vals, "Unknown"), link_type);
}
+
static void
-dissect_vsncp_pdnaddress_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+dissect_bap_phone_delta_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
{
- guint8 pdnaddtype;
+ proto_item *tf;
+ proto_tree *field_tree;
+ proto_item *ti;
+ proto_tree *suboption_tree;
+ guint8 subopt_type;
+ guint8 subopt_len;
- static const value_string pdntype_vals[] =
- {
- {0, "Initial Request by UE" },
- {1, "IPv4 Address" },
- {2, "IPv6 Address" },
- {3, "IPv6/IPv4 Address" },
- {0, NULL }
- };
- proto_item *tf;
- proto_tree *field_tree;
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
- tf = proto_tree_add_text(tree, tvb, offset, length,
- "%s: (%d byte%s)", optp->name, length, plurality(length, "", "s"));
+ offset += 2;
+ length -= 2;
+
+ while (length > 0) {
+ subopt_type = tvb_get_guint8(tvb, offset);
+ subopt_len = tvb_get_guint8(tvb, offset + 1);
+ ti = proto_tree_add_text(field_tree, tvb, offset, subopt_len,
+ "Sub-Option (%u byte%s)", subopt_len,
+ plurality(subopt_len, "", "s"));
+ suboption_tree = proto_item_add_subtree(ti,
+ ett_bap_phone_delta_subopt);
+
+ proto_tree_add_text(suboption_tree, tvb, offset, 1,
+ "Sub-Option Type: %s (%u)", val_to_str_const(subopt_type,
+ bap_phone_delta_subopt_vals, "Unknown"), subopt_type);
+
+ if (subopt_len < 2) {
+ proto_tree_add_text(suboption_tree, tvb, offset + 1, 1,
+ "Sub-Option Length: %u (invalid, must be >= 2)", subopt_len);
+ return;
+ }
+ if (subopt_len > length) {
+ proto_tree_add_text(suboption_tree, tvb, offset + 1, 1,
+ "Sub-Option Length: %u (invalid, must be <= length remaining "
+ "in option %u)", subopt_len, length);
+ return;
+ }
- field_tree = proto_item_add_subtree(tf, ett_lcp_options);
+ proto_tree_add_text(suboption_tree, tvb, offset + 1, 1,
+ "Sub-Option Length: %u", subopt_len);
+
+ switch (subopt_type) {
+ case BAP_PHONE_DELTA_SUBOPT_UNIQ_DIGIT:
+ if (subopt_len == 3) {
+ proto_tree_add_text(suboption_tree, tvb, offset + 2, 1,
+ "Unique Digit: %u", tvb_get_guint8(tvb, offset + 2));
+ } else {
+ proto_tree_add_text(suboption_tree, tvb, offset + 1, 1,
+ "Invalid suboption length: %u (must be == 3)", subopt_len);
+ }
+ break;
+ case BAP_PHONE_DELTA_SUBOPT_SUBSC_NUM:
+ if (subopt_len > 2) {
+ proto_tree_add_text(suboption_tree, tvb, offset + 2,
+ subopt_len - 2, "Subscriber Number: %s",
+ tvb_format_text(tvb, offset + 2, subopt_len - 2));
+ } else {
+ proto_tree_add_text(suboption_tree, tvb, offset + 1, 1,
+ "Invalid suboption length: %u (must be > 2)", subopt_len);
+ }
+ break;
+ case BAP_PHONE_DELTA_SUBOPT_PHONENUM_SUBADDR:
+ if (subopt_len > 2) {
+ proto_tree_add_text(suboption_tree, tvb, offset + 2,
+ subopt_len - 2, "Phone Number Sub Address: %s",
+ tvb_format_text(tvb, offset + 2, subopt_len - 2));
+ } else {
+ proto_tree_add_text(suboption_tree, tvb, offset + 1, 1,
+ "Invalid suboption length: %u (must be > 2)", subopt_len);
+ }
+ break;
+ default:
+ if (subopt_len > 2) {
+ proto_tree_add_text(suboption_tree, tvb, offset + 2,
+ subopt_len - 2, "Unknown");
+ } else {
+ proto_tree_add_text(suboption_tree, tvb, offset + 1, 1,
+ "Invalid suboption length: %u (must be > 2)", subopt_len);
+ }
+ break;
+ }
+ offset += subopt_len;
+ length -= subopt_len;
+ }
+}
+static void
+dissect_bap_reason_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ if (length > 2) {
+ proto_tree_add_text(tree, tvb, offset, length, "%s: %s", optp->name,
+ tvb_format_text(tvb, offset + 2, length - 2));
+ }
+}
- pdnaddtype = tvb_get_guint8(tvb, offset + 2);
+static void
+dissect_bap_link_disc_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_tree_add_text(tree, tvb, offset, length, "%s: 0x%04x", optp->name,
+ tvb_get_ntohs(tvb, offset + 2));
+}
- proto_tree_add_text(field_tree, tvb, offset+2, 1, "PDN Type (%s): 0x%02x",
- val_to_str_const(pdnaddtype, pdntype_vals, "Unknown"), pdnaddtype);
+static void
+dissect_bap_call_status_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_item *tf;
+ proto_tree *field_tree;
+ guint8 status, action;
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
+ field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
- switch (pdnaddtype)
- {
- case 1:
- proto_tree_add_text(field_tree, tvb, offset+3, length-3, "%s: %s",
- val_to_str_const(pdnaddtype, pdntype_vals, "Unknown"),
- tvb_ip_to_str(tvb, offset + 3));
- break;
+ status = tvb_get_guint8(tvb, offset + 2);
+ proto_tree_add_text(field_tree, tvb, offset + 2, 1, "Status: %s (0x%02x)",
+ val_to_str_ext_const(status, &q931_cause_code_vals_ext, "Unknown"),
+ status);
- case 2:
- {
- struct e_in6_addr *ad = ep_alloc0(sizeof (struct e_in6_addr));
- tvb_memcpy(tvb, &ad->bytes[8], offset+3, 8);
+ action = tvb_get_guint8(tvb, offset + 3);
+ proto_tree_add_text(field_tree, tvb, offset + 3, 1, "Action: %s (0x%02x)",
+ val_to_str_const(action, bap_call_status_opt_action_vals, "Unknown"),
+ action);
+}
- proto_tree_add_text(field_tree, tvb, offset+3, length-3, "%s: %s",
- val_to_str_const(pdnaddtype, pdntype_vals, "Unknown"), ip6_to_str(ad));
- break;
- }
- case 3:
- {
- struct e_in6_addr *ad = ep_alloc0(sizeof (struct e_in6_addr));
- tvb_memcpy(tvb, &ad->bytes[8], offset+3, 8);
+static void
+dissect_vsncp_pdnid_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ guint8 PDNID;
- proto_tree_add_text(field_tree, tvb, offset+3, length-3, "%s: %s",
- val_to_str_const(pdnaddtype, pdntype_vals, "Unknown"), ip6_to_str(ad));
+ PDNID = tvb_get_guint8(tvb, offset + 2);
+ proto_tree_add_text(tree, tvb, offset, length, "%s: 0x%02x", optp->name,
+ PDNID);
+}
- proto_tree_add_text(field_tree, tvb, offset+11, length-11, "%s: %s",
- val_to_str_const(pdnaddtype, pdntype_vals, "Unknown"),
- tvb_ip_to_str(tvb, offset + 11));
- break;
- }
- default:
- break;
- }
- offset += 2;
+static void
+dissect_vsncp_attachtype_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ static const value_string attach_vals[] = {
+ {1, "Initial Attach"},
+ {3, "Handover Attach"},
+ {0, NULL}
+ };
+ guint8 attach;
+ if (tree) {
+ attach = tvb_get_guint8(tvb, offset + 2);
+ proto_tree_add_text(tree, tvb, offset, length, "%s: %s (0x%02x)",
+ optp->name, val_to_str_const(attach , attach_vals, "Unknown"),
+ attach);
+ }
}
static void
-dissect_vsncp_ipv4address_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+dissect_vsncp_pdntype_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_tree_add_text(tree, tvb, offset, length, "%s: %s", optp->name,
- tvb_ip_to_str(tvb, offset + 2));
- offset += 2;
+ static const value_string pdntype_vals[] = {
+ {1, "IPv4"},
+ {2, "IPv6"},
+ {3, "IPv6/IPv4"},
+ {0, NULL}
+ };
+ guint8 pdntype;
+
+ if (tree) {
+ pdntype = tvb_get_guint8(tvb, offset + 2);
+ proto_tree_add_text(tree, tvb, offset, length, "%s: %s (0x%02x)",
+ optp->name, val_to_str_const(pdntype, pdntype_vals, "Unknown"),
+ pdntype);
+ }
}
static void
-dissect_vsncp_apname_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+dissect_vsncp_errorcode_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
{
- proto_item *tf;
- proto_tree *field_tree;
+ static const value_string errorcode_vals[] = {
+ {0, "General Eror"},
+ {1, "Unauthorized APN"},
+ {2, "PDN Limit Exceeded"},
+ {3, "NO PG-W Available"},
+ {4, "P-GW Unreachable"},
+ {5, "P-GW Reject"},
+ {6, "Insufficient Parameters"},
+ {7, "Resource Unavailable"},
+ {8, "Admin Prohibited"},
+ {9, "PDN-ID Already in Use"},
+ {10, "Subscription Limitation"},
+ {11, "PDN connection already exists for APN"},
+ {0, NULL}
+ };
+ guint8 pdntype;
- tf = proto_tree_add_text(tree, tvb, offset, length,
- "%s: (%d byte%s)", optp->name, length, plurality(length, "", "s"));
+ if (tree) {
+ pdntype = tvb_get_guint8(tvb, offset + 2);
+ proto_tree_add_text(tree, tvb, offset, length, "%s: %s (0x%02x)",
+ optp->name, val_to_str_const(pdntype, errorcode_vals, "Unknown"),
+ pdntype);
+ }
+}
- field_tree = proto_item_add_subtree(tf, ett_lcp_options);
+static void
+dissect_vsncp_pdnaddress_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ guint8 pdnaddtype;
+ static const value_string pdntype_vals[] = {
+ {0, "Initial Request by UE"},
+ {1, "IPv4 Address"},
+ {2, "IPv6 Address"},
+ {3, "IPv6/IPv4 Address"},
+ {0, NULL}
+ };
+ proto_item *tf;
+ proto_tree *field_tree;
+
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s: (%d byte%s)",
+ optp->name, length, plurality(length, "", "s"));
+ field_tree = proto_item_add_subtree(tf, ett_lcp_options);
+
+ pdnaddtype = tvb_get_guint8(tvb, offset + 2);
+ proto_tree_add_text(field_tree, tvb, offset + 2, 1,
+ "PDN Type (%s): 0x%02x",
+ val_to_str_const(pdnaddtype, pdntype_vals, "Unknown"), pdnaddtype);
+
+ switch (pdnaddtype) {
+ case 1:
+ proto_tree_add_text(field_tree, tvb, offset + 3, length - 3, "%s: %s",
+ val_to_str_const(pdnaddtype, pdntype_vals, "Unknown"),
+ tvb_ip_to_str(tvb, offset + 3));
+ break;
- if(length>2)
- {
- guint8 i = 0;
- guint8 j = 1;
- guint8 lengthofapn;
- int off = offset+2;
+ case 2:
+ {
+ struct e_in6_addr *ad = ep_alloc0(sizeof (struct e_in6_addr));
+
+ tvb_memcpy(tvb, &ad->bytes[8], offset + 3, 8);
+ proto_tree_add_text(field_tree, tvb, offset + 3, length - 3, "%s: %s",
+ val_to_str_const(pdnaddtype, pdntype_vals, "Unknown"),
+ ip6_to_str(ad));
+ break;
+ }
- while(i<(length-2))
+ case 3:
{
- lengthofapn = tvb_get_guint8(tvb, off);
- off = off+1;
- proto_tree_add_text(field_tree, tvb, off, lengthofapn,
- "Label%d (%d byte%s): %s", j, lengthofapn, plurality(lengthofapn, "", "s"),
- tvb_format_text(tvb, off, lengthofapn));
- off = off+lengthofapn;
- i = i+lengthofapn+1;
- j++;
+ struct e_in6_addr *ad = ep_alloc0(sizeof (struct e_in6_addr));
+
+ tvb_memcpy(tvb, &ad->bytes[8], offset + 3, 8);
+ proto_tree_add_text(field_tree, tvb, offset + 3, length - 3, "%s: %s",
+ val_to_str_const(pdnaddtype, pdntype_vals, "Unknown"),
+ ip6_to_str(ad));
+ proto_tree_add_text(field_tree, tvb, offset + 11, length - 11,
+ "%s: %s", val_to_str_const(pdnaddtype, pdntype_vals, "Unknown"),
+ tvb_ip_to_str(tvb, offset + 11));
+ break;
+ }
+
+ default:
+ break;
}
- }
}
static void
-dissect_vsncp_addressalloc_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+dissect_vsncp_ipv4address_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree)
{
- static const value_string alloc_vals[] =
- {
- {0, "Null Value (Attach or Handover)" },
- {18, "New PDN type due to network preference" },
- {255, "Success" },
- {0, NULL }
- };
-
- guint8 alloc;
- alloc = tvb_get_guint8(tvb, offset + 2);
+ proto_tree_add_text(tree, tvb, offset, length, "%s: %s", optp->name,
+ tvb_ip_to_str(tvb, offset + 2));
+}
- if(tree)
- {
- proto_tree_add_text(tree, tvb, offset, length, "%s: %s (0x%02x)",
- optp->name, val_to_str_const(alloc, alloc_vals, "Unknown"), alloc);
- }
- offset += 2;
+static void
+dissect_vsncp_apname_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_item *tf;
+ proto_tree *field_tree;
+
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s: (%d byte%s)",
+ optp->name, length, plurality(length, "", "s"));
+ field_tree = proto_item_add_subtree(tf, ett_lcp_options);
+
+ if (length > 2) {
+ guint8 i = 0;
+ guint8 j = 1;
+ guint8 lengthofapn;
+ int off = offset + 2;
+
+ while (i < (length - 2)) {
+ lengthofapn = tvb_get_guint8(tvb, off++);
+ proto_tree_add_text(field_tree, tvb, off, lengthofapn,
+ "Label%d (%d byte%s): %s", j++, lengthofapn,
+ plurality(lengthofapn, "", "s"),
+ tvb_format_text(tvb, off, lengthofapn));
+ off += lengthofapn;
+ i += lengthofapn + 1;
+ }
+ }
}
static void
-dissect_vsncp_pco_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
+dissect_vsncp_addressalloc_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
+ int offset, guint length, packet_info *pinfo _U_, proto_tree *tree)
{
- static const value_string pco_vals[] =
- {
- {0x8021, "IPCP (DNS Address Request)" },
- {0x0001, "P-CSCF Address Request (IPv6)" },
- {0x0003, "DNS Server Address (IPv6)" },
- {0x000A, "IP address allocation via NAS signalling" },
- {0, NULL }
+ static const value_string alloc_vals[] = {
+ {0, "Null Value (Attach or Handover)"},
+ {18, "New PDN type due to network preference"},
+ {255, "Success"},
+ {0, NULL}
};
- int off = offset+3;
- guint8 i = 0;
- guint16 pcotype;
- guint8 len;
-
- proto_item *tf;
- proto_tree *field_tree;
- tf = proto_tree_add_text(tree, tvb, offset, length,
- "%s: (%d byte%s)", optp->name, length, plurality(length, "", "s"));
+ guint8 alloc;
- field_tree = proto_item_add_subtree(tf, ett_lcp_options);
+ if (tree) {
+ alloc = tvb_get_guint8(tvb, offset + 2);
+ proto_tree_add_text(tree, tvb, offset, length, "%s: %s (0x%02x)",
+ optp->name, val_to_str_const(alloc, alloc_vals, "Unknown"), alloc);
+ }
+}
- while(i<length-3)
- {
- pcotype = tvb_get_ntohs(tvb, off);
- len = tvb_get_guint8(tvb, (off+2));
- proto_tree_add_text(field_tree, tvb, off,2, "Protocol: %s (0x%02x)",
- val_to_str_const(pcotype, pco_vals, "Unknown"), pcotype);
- proto_tree_add_text(field_tree, tvb, off+2,1, "Length:(0x%02x)", len);
- if(len >0)
- proto_tree_add_text(field_tree, tvb, off+3,len, "Data (%d byte%s)", len, plurality(len, "", "s"));
+static void
+dissect_vsncp_pco_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ static const value_string pco_vals[] = {
+ {0x8021, "IPCP (DNS Address Request)"},
+ {0x0001, "P-CSCF Address Request (IPv6)"},
+ {0x0003, "DNS Server Address (IPv6)"},
+ {0x000A, "IP address allocation via NAS signalling"},
+ {0, NULL}
+ };
+ int off = offset + 3;
+ guint8 i = 0;
+ guint16 pcotype;
+ guint8 len;
+ proto_item *tf;
+ proto_tree *field_tree;
+
+ tf = proto_tree_add_text(tree, tvb, offset, length, "%s: (%d byte%s)",
+ optp->name, length, plurality(length, "", "s"));
+ field_tree = proto_item_add_subtree(tf, ett_lcp_options);
+
+ while (i < (length - 3)) {
+ pcotype = tvb_get_ntohs(tvb, off);
+ len = tvb_get_guint8(tvb, (off + 2));
+ proto_tree_add_text(field_tree, tvb, off, 2, "Protocol: %s (0x%02x)",
+ val_to_str_const(pcotype, pco_vals, "Unknown"), pcotype);
+ proto_tree_add_text(field_tree, tvb, off + 2, 1, "Length:(0x%02x)",
+ len);
+ if (len > 0) {
+ proto_tree_add_text(field_tree, tvb, off + 3, len,
+ "Data (%d byte%s)", len, plurality(len, "", "s"));
+ }
- off = off+3+len;
- i = i+3+len;
- }
+ off += 3 + len;
+ i += 3 + len;
+ }
}
static void
-dissect_cp( tvbuff_t *tvb, int proto_id, int proto_subtree_index,
- const value_string *proto_vals, int options_subtree_index,
- const ip_tcp_opt *opts, int nopts, packet_info *pinfo,
- proto_tree *tree )
-{
- proto_item *ti;
- proto_tree *fh_tree = NULL;
- proto_item *tf;
- proto_tree *field_tree;
-
- guint8 code;
- guint8 id;
- int length, offset;
- guint16 protocol;
-
- code = tvb_get_guint8(tvb, 0);
- id = tvb_get_guint8(tvb, 1);
- length = tvb_get_ntohs(tvb, 2);
-
- if(check_col(pinfo->cinfo, COL_PROTOCOL))
- col_set_str(pinfo->cinfo, COL_PROTOCOL,
- proto_get_protocol_short_name(find_protocol_by_id(proto_id)));
+dissect_cp(tvbuff_t *tvb, int proto_id, int proto_subtree_index,
+ const value_string *proto_vals, int options_subtree_index,
+ const ip_tcp_opt *opts, int nopts, packet_info *pinfo, proto_tree *tree)
+{
+ proto_item *ti;
+ proto_tree *fh_tree = NULL;
+ guint8 code;
+ int length, offset;
+
+ code = tvb_get_guint8(tvb, 0);
+ length = tvb_get_ntohs(tvb, 2);
- if(check_col(pinfo->cinfo, COL_INFO))
+ col_set_str(pinfo->cinfo, COL_PROTOCOL,
+ proto_get_protocol_short_name(find_protocol_by_id(proto_id)));
col_add_str(pinfo->cinfo, COL_INFO,
- val_to_str_const(code, proto_vals, "Unknown"));
-
- if(tree) {
- ti = proto_tree_add_item(tree, proto_id, tvb, 0, length, ENC_NA);
- fh_tree = proto_item_add_subtree(ti, proto_subtree_index);
- proto_tree_add_text(fh_tree, tvb, 0, 1, "Code: %s (0x%02x)",
- val_to_str_const(code, proto_vals, "Unknown"), code);
- proto_tree_add_text(fh_tree, tvb, 1, 1, "Identifier: 0x%02x",
- id);
- proto_tree_add_text(fh_tree, tvb, 2, 2, "Length: %u",
- length);
- }
- offset = 4;
- length -= 4;
-
- switch (code) {
- case CONFREQ:
- case CONFACK:
- case CONFNAK:
- case CONFREJ:
- if(tree) {
- if (length > 0) {
- tf = proto_tree_add_text(fh_tree, tvb, offset, length,
- "Options: (%d byte%s)", length, plurality(length, "", "s"));
- field_tree = proto_item_add_subtree(tf, options_subtree_index);
- dissect_ip_tcp_options(tvb, offset, length, opts, nopts, -1,
- pinfo, field_tree, NULL);
- }
+ val_to_str_const(code, proto_vals, "Unknown"));
+
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_id, tvb, 0, length, ENC_NA);
+ fh_tree = proto_item_add_subtree(ti, proto_subtree_index);
+ proto_tree_add_uint_format_value(fh_tree, hf_ppp_code, tvb, 0, 1, code,
+ "%s (%u)", val_to_str_const(code, proto_vals, "Unknown"), code);
+ proto_tree_add_item(fh_tree, hf_ppp_identifier, tvb, 1, 1, ENC_NA);
+ proto_tree_add_item(fh_tree, hf_ppp_length, tvb, 2, 2, ENC_BIG_ENDIAN);
}
- break;
-
- case ECHOREQ:
- case ECHOREP:
- case DISCREQ:
- if(tree) {
- proto_tree_add_text(fh_tree, tvb, offset, 4, "Magic number: 0x%08x",
- tvb_get_ntohl(tvb, offset));
- offset += 4;
- length -= 4;
- if (length > 0)
- proto_tree_add_text(fh_tree, tvb, offset, length, "Message (%d byte%s)",
- length, plurality(length, "", "s"));
- }
- break;
-
- case IDENT:
- if(tree) {
- proto_tree_add_text(fh_tree, tvb, offset, 4, "Magic number: 0x%08x",
- tvb_get_ntohl(tvb, offset));
- offset += 4;
- length -= 4;
- if (length > 0)
- proto_tree_add_text(fh_tree, tvb, offset, length, "Message: %s",
- tvb_format_text(tvb, offset, length));
- }
- break;
-
- case TIMEREMAIN:
- if(tree) {
- proto_tree_add_text(fh_tree, tvb, offset, 4, "Magic number: 0x%08x",
- tvb_get_ntohl(tvb, offset));
- offset += 4;
- length -= 4;
- proto_tree_add_text(fh_tree, tvb, offset, 4, "Seconds remaining: %u",
- tvb_get_ntohl(tvb, offset));
- offset += 4;
- length -= 4;
- if (length > 0)
- proto_tree_add_text(fh_tree, tvb, offset, length, "Message (%d byte%s)",
- length, plurality(length, "", "s"));
- }
- break;
-
- case PROTREJ:
- if(tree) {
- gboolean save_in_error_pkt;
- tvbuff_t *next_tvb;
-
- protocol = tvb_get_ntohs(tvb, offset);
- proto_tree_add_text(fh_tree, tvb, offset, 2,
- "Rejected protocol: %s (0x%04x)",
- val_to_str_ext_const(protocol, &ppp_vals_ext, "Unknown"),
- protocol);
- offset += 2;
- length -= 2;
- if (length > 0) {
- proto_tree_add_text(fh_tree, tvb, offset, length,
- "Rejected packet (%d byte%s)",
- length, plurality(length, "", "s"));
-
- /* Save the current value of the "we're inside an error packet"
- flag, and set that flag; subdissectors may treat packets
- that are the payload of error packets differently from
- "real" packets. */
- save_in_error_pkt = pinfo->flags.in_error_pkt;
- pinfo->flags.in_error_pkt = TRUE;
-
- /* Decode the rejected packet. */
- next_tvb = tvb_new_subset(tvb, offset, length, length);
- if (!dissector_try_uint(ppp_subdissector_table, protocol,
- next_tvb, pinfo, fh_tree)) {
- call_dissector(data_handle, next_tvb, pinfo, fh_tree);
+ offset = 4;
+ length -= 4;
+
+ switch (code) {
+ case VNDRSPCFC:
+ if (tree) {
+ guint32 oui;
+ const gchar *manuf;
+
+ proto_tree_add_item(fh_tree, hf_ppp_magic_number, tvb, offset, 4,
+ ENC_BIG_ENDIAN);
+ oui = tvb_get_ntoh24(tvb, offset + 4);
+ ti = proto_tree_add_uint_format_value(fh_tree, hf_ppp_oui, tvb,
+ offset + 4, 3, oui, "%02x:%02x:%02x", (oui >> 16) & 0xff,
+ (oui >> 8) & 0xff, oui & 0xff);
+ manuf = uint_get_manuf_name_if_known(oui);
+ if (manuf)
+ proto_item_append_text(ti, "(%s)", manuf);
+ proto_tree_add_item(fh_tree, hf_ppp_kind, tvb, offset + 7, 1,
+ ENC_NA);
+ if (length > 8) {
+ proto_tree_add_item(fh_tree, hf_ppp_data, tvb, offset + 8,
+ length - 8, ENC_NA);
+ }
}
+ break;
- /* Restore the "we're inside an error packet" flag. */
- pinfo->flags.in_error_pkt = save_in_error_pkt;
- }
+ case CONFREQ:
+ case CONFACK:
+ case CONFNAK:
+ case CONFREJ:
+ if (tree && (length > 0)) {
+ proto_item *tf;
+ proto_tree *field_tree;
+
+ tf = proto_tree_add_text(fh_tree, tvb, offset, length,
+ "Options: (%d byte%s)", length, plurality(length, "", "s"));
+ field_tree = proto_item_add_subtree(tf, options_subtree_index);
+ dissect_ip_tcp_options(tvb, offset, length, opts, nopts, -1, pinfo,
+ field_tree, NULL);
+ }
+ break;
+
+ case CODEREJ:
+ if (tree && (length > 0)) {
+ /* TODO: Decode the rejected packet here ... but wait until we have
+ * a valid capture file with a CODEREJ, since the only capture file
+ * with CODEREJ packets in it that I know of is pppoe.dump.gz from
+ * the menagerie, and that file appears to have malformed CODEREJ
+ * packets as they don't include the Code, Identifier or Length
+ * fields so it's impossible to do the decode. */
+ proto_tree_add_bytes_format(fh_tree, hf_ppp_data, tvb, offset,
+ length, NULL, "Rejected Packet (%d byte%s): %s", length,
+ plurality(length, "", "s"),
+ tvb_bytes_to_str(tvb, offset, length));
+ }
+ break;
+
+ case PROTREJ: /* LCP only: RFC 1661 */
+ if (tree) {
+ proto_tree_add_item(fh_tree, hf_lcp_rej_proto, tvb, offset, 2,
+ ENC_BIG_ENDIAN);
+ }
+ if (length > 2) {
+ gboolean save_in_error_pkt;
+ tvbuff_t *next_tvb;
+ guint16 protocol;
+
+ protocol = tvb_get_ntohs(tvb, offset);
+ offset += 2;
+ length -= 2;
+
+ /*
+ * Save the current value of the "we're inside an error packet"
+ * flag, and set that flag; subdissectors may treat packets that
+ * are the payload of error packets differently from "real"
+ * packets.
+ */
+ save_in_error_pkt = pinfo->flags.in_error_pkt;
+ pinfo->flags.in_error_pkt = TRUE;
+
+ /* Decode the rejected packet. */
+ next_tvb = tvb_new_subset(tvb, offset, length, length);
+ if (!dissector_try_uint(ppp_subdissector_table, protocol, next_tvb,
+ pinfo, fh_tree)) {
+ call_dissector(data_handle, next_tvb, pinfo, fh_tree);
+ }
+
+ /* Restore the "we're inside an error packet" flag. */
+ pinfo->flags.in_error_pkt = save_in_error_pkt;
+ }
+ break;
+
+ case ECHOREQ: /* All 3 are LCP only: RFC 1661 */
+ case ECHOREP:
+ case DISCREQ:
+ if (tree) {
+ proto_tree_add_item(fh_tree, hf_lcp_magic_number, tvb, offset, 4,
+ ENC_BIG_ENDIAN);
+ if (length > 4) {
+ proto_tree_add_item(fh_tree, hf_lcp_data, tvb, offset + 4,
+ length - 4, ENC_NA);
+ }
+ }
+ break;
+
+ case IDENT: /* LCP only: RFC 1570 */
+ if (tree) {
+ proto_tree_add_item(fh_tree, hf_lcp_magic_number, tvb, offset, 4,
+ ENC_BIG_ENDIAN);
+ if (length > 4) {
+ proto_tree_add_item(fh_tree, hf_lcp_message, tvb, offset + 4,
+ length - 4, ENC_NA);
+ }
+ }
+ break;
+
+ case TIMEREMAIN: /* LCP only: RFC 1570 */
+ if (tree) {
+ guint32 secs_remaining;
+
+ proto_tree_add_item(fh_tree, hf_lcp_magic_number, tvb, offset, 4,
+ ENC_BIG_ENDIAN);
+ secs_remaining = tvb_get_ntohl(tvb, offset + 4);
+ proto_tree_add_uint_format_value(fh_tree, hf_lcp_secs_remaining,
+ tvb, offset + 4, 4, secs_remaining, "%u %s", secs_remaining,
+ (secs_remaining == 0xffffffff) ? "(forever)" : "seconds");
+ if (length > 8) {
+ proto_tree_add_item(fh_tree, hf_lcp_message, tvb, offset + 8,
+ length - 8, ENC_NA);
+ }
+ }
+ break;
+
+ case TERMREQ:
+ case TERMACK:
+ case RESETREQ: /* RESETREQ and RESETACK are CCP only: RFC 1962 */
+ case RESETACK:
+ default:
+ if (tree && (length > 0)) {
+ proto_tree_add_item(fh_tree, hf_ppp_data, tvb, offset, length,
+ ENC_NA);
+ }
+ break;
}
- break;
-
- case CODEREJ:
- /* decode the rejected LCP packet here. */
- if (length > 0)
- proto_tree_add_text(fh_tree, tvb, offset, length, "Rejected packet (%d byte%s)",
- length, plurality(length, "", "s"));
- break;
-
- case TERMREQ:
- case TERMACK:
- if (length > 0)
- proto_tree_add_text(fh_tree, tvb, offset, length, "Data (%d byte%s)",
- length, plurality(length, "", "s"));
- break;
-
- default:
- if (length > 0)
- proto_tree_add_text(fh_tree, tvb, offset, length, "Stuff (%d byte%s)",
- length, plurality(length, "", "s"));
- break;
- }
}
/* Protocol field compression */
#define PFC_BIT 0x01
static void
-dissect_ppp_common( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- proto_tree *fh_tree, proto_item *ti, int proto_offset )
-{
- guint16 ppp_prot;
- int proto_len;
- tvbuff_t *next_tvb;
-
- /* Make direction information filterable */
- if (tree &&
- (pinfo->p2p_dir == P2P_DIR_RECV ||
- pinfo->p2p_dir == P2P_DIR_SENT)) {
- proto_item *direction_ti = proto_tree_add_uint(tree, hf_ppp_direction,
- tvb, 0, 0, pinfo->p2p_dir);
- PROTO_ITEM_SET_GENERATED(direction_ti);
- }
-
- ppp_prot = tvb_get_guint8(tvb, 0);
- if (ppp_prot & PFC_BIT) {
- /* Compressed protocol field - just the byte we fetched. */
- proto_len = 1;
- } else {
- /* Uncompressed protocol field - fetch all of it. */
- ppp_prot = tvb_get_ntohs(tvb, 0);
- proto_len = 2;
- }
-
- /* If "ti" is not null, it refers to the top-level "proto_ppp" item
- for PPP, and proto_offset is the length of any stuff in the header
- preceding the protocol type, e.g. an HDLC header; add the length
- of the protocol type field to it, and set the length of that item
- to the result. */
- if (ti != NULL)
- proto_item_set_len(ti, proto_offset + proto_len);
-
- if (tree)
- proto_tree_add_uint(fh_tree, hf_ppp_protocol, tvb, 0, proto_len, ppp_prot);
-
- next_tvb = tvb_new_subset_remaining(tvb, proto_len);
-
- /* do lookup with the subdissector table */
- if (!dissector_try_uint(ppp_subdissector_table, ppp_prot, next_tvb, pinfo, tree)) {
- if (check_col(pinfo->cinfo, COL_PROTOCOL))
- col_add_fstr(pinfo->cinfo, COL_PROTOCOL, "0x%04x", ppp_prot);
- if (check_col(pinfo->cinfo, COL_INFO))
- col_add_fstr(pinfo->cinfo, COL_INFO, "PPP %s (0x%04x)",
- val_to_str_ext_const(ppp_prot, &ppp_vals_ext, "Unknown"), ppp_prot);
- call_dissector(data_handle,next_tvb, pinfo, tree);
- }
+dissect_ppp_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ proto_tree *fh_tree, proto_item *ti, int proto_offset)
+{
+ guint16 ppp_prot;
+ int proto_len;
+ tvbuff_t *next_tvb;
+
+ /* Make direction information filterable */
+ if (tree &&
+ (pinfo->p2p_dir == P2P_DIR_RECV || pinfo->p2p_dir == P2P_DIR_SENT)) {
+ proto_item *direction_ti = proto_tree_add_uint(tree, hf_ppp_direction,
+ tvb, 0, 0, pinfo->p2p_dir);
+ PROTO_ITEM_SET_GENERATED(direction_ti);
+ }
+
+ ppp_prot = tvb_get_guint8(tvb, 0);
+ if (ppp_prot & PFC_BIT) {
+ /* Compressed protocol field - just the byte we fetched. */
+ proto_len = 1;
+ } else {
+ /* Uncompressed protocol field - fetch all of it. */
+ ppp_prot = tvb_get_ntohs(tvb, 0);
+ proto_len = 2;
+ }
+
+ /* If "ti" is not null, it refers to the top-level "proto_ppp" item
+ for PPP, and proto_offset is the length of any stuff in the header
+ preceding the protocol type, e.g. an HDLC header; add the length
+ of the protocol type field to it, and set the length of that item
+ to the result. */
+ if (ti != NULL)
+ proto_item_set_len(ti, proto_offset + proto_len);
+
+ if (tree) {
+ proto_tree_add_uint(fh_tree, hf_ppp_protocol, tvb, 0, proto_len,
+ ppp_prot);
+ }
+
+ next_tvb = tvb_new_subset_remaining(tvb, proto_len);
+
+ /* do lookup with the subdissector table */
+ if (!dissector_try_uint(ppp_subdissector_table, ppp_prot, next_tvb, pinfo,
+ tree)) {
+ col_add_fstr(pinfo->cinfo, COL_PROTOCOL, "0x%04x", ppp_prot);
+ col_add_fstr(pinfo->cinfo, COL_INFO, "PPP %s (0x%04x)",
+ val_to_str_ext_const(ppp_prot, &ppp_vals_ext, "Unknown"),
+ ppp_prot);
+ call_dissector(data_handle,next_tvb, pinfo, tree);
+ }
}
static void
dissect_lcp_options(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- dissect_ip_tcp_options(tvb, 0, tvb_reported_length(tvb), lcp_opts, N_LCP_OPTS,
- -1, pinfo, tree, NULL);
+ dissect_ip_tcp_options(tvb, 0, tvb_reported_length(tvb), lcp_opts,
+ N_LCP_OPTS, -1, pinfo, tree, NULL);
}
/*
@@ -3281,105 +3955,99 @@ dissect_lcp_options(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
dissect_lcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- dissect_cp(tvb, proto_lcp, ett_lcp, lcp_vals, ett_lcp_options,
- lcp_opts, N_LCP_OPTS, pinfo, tree);
+ dissect_cp(tvb, proto_lcp, ett_lcp, lcp_vals, ett_lcp_options, lcp_opts,
+ N_LCP_OPTS, pinfo, tree);
}
static void
dissect_vsncp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti;
- proto_tree *fh_tree = NULL;
- proto_item *tf;
- proto_tree *field_tree;
+ proto_item *ti;
+ proto_tree *fh_tree = NULL;
+ proto_item *tf;
+ proto_tree *field_tree;
+ guint8 code;
+ guint8 id;
+ int length, offset;
+ int OUI;
+
+ static const value_string OUI_vals[] = {
+ {0xcf0002, "3GPP2 Unique Organization Number"},
+ {0, NULL}
+ };
- guint8 code;
- guint8 id;
- int length, offset;
- int OUI;
+ code = tvb_get_guint8(tvb, 0);
+ id = tvb_get_guint8(tvb, 1);
+ length = tvb_get_ntohs(tvb, 2);
+ OUI = tvb_get_ntoh24(tvb, 4);
- static const value_string OUI_vals[] =
- {
- {0xcf0002, "3GPP2 Unique Organization Number" },
- {0, NULL }
- };
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "VSNCP");
+ col_add_str(pinfo->cinfo, COL_INFO,
+ val_to_str_const(code, cp_vals, "Unknown"));
+
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_vsncp, tvb, 0, length, ENC_NA);
+ fh_tree = proto_item_add_subtree(ti, ett_vsncp);
+ proto_tree_add_text(fh_tree, tvb, 0, 1, "Code: %s (0x%02x)",
+ val_to_str_const(code, cp_vals, "Unknown"), code);
+ proto_tree_add_text(fh_tree, tvb, 1, 1, "Identifier: 0x%02x", id);
+ proto_tree_add_text(fh_tree, tvb, 2, 2, "Length: %u", length);
+ proto_tree_add_text(fh_tree, tvb, 4, 3, "OUI: %s (0x%02x)",
+ val_to_str_const(OUI, OUI_vals, "Unknown"), OUI);
+ }
+ offset = 7;
+ length -= 7;
+
+ switch (code) {
+ case CONFREQ:
+ case CONFACK:
+ case CONFNAK:
+ case CONFREJ:
+ case TERMREQ:
+ case TERMACK:
+ if (tree) {
+ if (length > 0) {
+ tf = proto_tree_add_text(fh_tree, tvb, offset, length,
+ "Options: (%d byte%s)", length,
+ plurality(length, "", "s"));
+ field_tree = proto_item_add_subtree(tf, ett_vsncp_options);
+ dissect_ip_tcp_options(tvb, offset, length, vsncp_opts,
+ N_VSNCP_OPTS, -1, pinfo, field_tree, NULL);
+ }
+ }
+ break;
- code = tvb_get_guint8(tvb, 0);
- id = tvb_get_guint8(tvb, 1);
- length = tvb_get_ntohs(tvb, 2);
- OUI = tvb_get_ntoh24(tvb, 4);
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "VSNCP");
- col_add_str(pinfo->cinfo, COL_INFO, val_to_str_const(code, cp_vals, "Unknown"));
-
- if(tree)
- {
- ti = proto_tree_add_item(tree, proto_vsncp, tvb, 0, length, ENC_NA);
- fh_tree = proto_item_add_subtree(ti, ett_vsncp);
- proto_tree_add_text(fh_tree, tvb, 0, 1, "Code: %s (0x%02x)", val_to_str_const(code, cp_vals, "Unknown"), code);
- proto_tree_add_text(fh_tree, tvb, 1, 1, "Identifier: 0x%02x", id);
- proto_tree_add_text(fh_tree, tvb, 2, 2, "Length: %u", length);
- proto_tree_add_text(fh_tree, tvb, 4, 3, "OUI: %s (0x%02x)", val_to_str_const(OUI, OUI_vals, "Unknown"), OUI);
- }
- offset = 7;
- length -= 7;
-
- switch (code)
- {
- case CONFREQ:
- case CONFACK:
- case CONFNAK:
- case CONFREJ:
- case TERMREQ:
- case TERMACK:
- if(tree)
- {
- if (length > 0)
- {
- tf = proto_tree_add_text(fh_tree, tvb, offset, length,
- "Options: (%d byte%s)", length, plurality(length, "", "s"));
- field_tree = proto_item_add_subtree(tf, ett_vsncp_options);
- dissect_ip_tcp_options(tvb, offset, length, vsncp_opts, N_VSNCP_OPTS, -1,
- pinfo, field_tree, NULL);
- }
+ default:
+ /* TODO? */
+ break;
}
- break;
- }
}
static void
dissect_vsnp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *vsnp_item = NULL;
- proto_tree *vsnp_tree = NULL;
- guint32 offset = 0;
-
- /* To pass it on to IP */
- tvbuff_t *next_tvb;
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "VSNP");
-
-
- offset = 0;
-
- if (tree) /* we are being asked for details */
- {
- vsnp_item = proto_tree_add_item(tree, proto_vsnp, tvb, 0, -1, ENC_NA);
- vsnp_tree = proto_item_add_subtree(vsnp_item, ett_vsnp);
-
- proto_tree_add_item(vsnp_tree, hf_vsnp_pdnid, tvb, offset, 1, ENC_BIG_ENDIAN);
- }
- next_tvb = tvb_new_subset_remaining(tvb, 1);
-
- /* do lookup with the subdissector table */
- if (!dissector_try_uint(ppp_subdissector_table, PPP_IP, next_tvb, pinfo, tree))
- {
- col_add_fstr(pinfo->cinfo, COL_PROTOCOL, "0x%04x", PPP_IP);
+ proto_item *vsnp_item = NULL;
+ proto_tree *vsnp_tree = NULL;
+ guint32 offset = 0;
+ tvbuff_t *next_tvb;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "VSNP");
+
+ if (tree) {
+ vsnp_item = proto_tree_add_item(tree, proto_vsnp, tvb, 0, -1, ENC_NA);
+ vsnp_tree = proto_item_add_subtree(vsnp_item, ett_vsnp);
+ proto_tree_add_item(vsnp_tree, hf_vsnp_pdnid, tvb, offset, 1,
+ ENC_BIG_ENDIAN);
+ }
- col_add_fstr(pinfo->cinfo, COL_INFO, "PPP %s (0x%04x)",
- val_to_str_ext_const(PPP_IP, &ppp_vals_ext, "Unknown"), PPP_IP);
- call_dissector(data_handle, next_tvb, pinfo, tree);
- }
+ next_tvb = tvb_new_subset_remaining(tvb, 1);
+ if (!dissector_try_uint(ppp_subdissector_table, PPP_IP, next_tvb, pinfo,
+ tree)) {
+ col_add_fstr(pinfo->cinfo, COL_PROTOCOL, "0x%04x", PPP_IP);
+ col_add_fstr(pinfo->cinfo, COL_INFO, "PPP %s (0x%04x)",
+ val_to_str_ext_const(PPP_IP, &ppp_vals_ext, "Unknown"), PPP_IP);
+ call_dissector(data_handle, next_tvb, pinfo, tree);
+ }
}
/*
@@ -3388,8 +4056,8 @@ dissect_vsnp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
dissect_ipcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- dissect_cp(tvb, proto_ipcp, ett_ipcp, cp_vals, ett_ipcp_options,
- ipcp_opts, N_IPCP_OPTS, pinfo, tree);
+ dissect_cp(tvb, proto_ipcp, ett_ipcp, cp_vals, ett_ipcp_options, ipcp_opts,
+ N_IPCP_OPTS, pinfo, tree);
}
/*
@@ -3408,114 +4076,127 @@ dissect_ipcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
#define BCP_MACT_FDDI_CANON 12
static const value_string bcp_mac_type_vals[] = {
- { BCP_MACT_ETHERNET, "IEEE 802.3/Ethernet" },
- { BCP_MACT_802_4, "IEEE 802.4" },
- { BCP_MACT_802_5_NONCANON, "IEEE 802.5, non-canonical addresses" },
- { BCP_MACT_FDDI_NONCANON, "FDDI, non-canonical addresses" },
- { BCP_MACT_802_5_CANON, "IEEE 802.5, canonical addresses" },
- { BCP_MACT_FDDI_CANON, "FDDI, canonical addresses" },
- { 0, NULL }
+ {BCP_MACT_ETHERNET, "IEEE 802.3/Ethernet"},
+ {BCP_MACT_802_4, "IEEE 802.4"},
+ {BCP_MACT_802_5_NONCANON, "IEEE 802.5, non-canonical addresses"},
+ {BCP_MACT_FDDI_NONCANON, "FDDI, non-canonical addresses"},
+ {BCP_MACT_802_5_CANON, "IEEE 802.5, canonical addresses"},
+ {BCP_MACT_FDDI_CANON, "FDDI, canonical addresses"},
+ {0, NULL}
};
static void
dissect_bcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti = NULL, *flags_item;
- proto_tree *bcp_tree = NULL, *flags_tree;
- int offset = 0;
- guint8 flags;
- guint8 mac_type;
- gint captured_length, reported_length, pad_length;
- tvbuff_t *next_tvb;
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "PPP BCP");
-
- col_clear(pinfo->cinfo, COL_INFO);
-
- if (tree) {
- ti = proto_tree_add_item(tree, proto_bcp, tvb, 0, -1, ENC_NA);
- bcp_tree = proto_item_add_subtree(ti, ett_bcp);
- }
-
- flags = tvb_get_guint8(tvb, offset);
- if (flags & BCP_IS_BCONTROL) {
- col_set_str(pinfo->cinfo, COL_INFO, "Bridge control");
- }
- if (tree) {
- flags_item = proto_tree_add_uint(bcp_tree, hf_bcp_flags, tvb, offset, 1, flags);
- flags_tree = proto_item_add_subtree(flags_item, ett_bcp_flags);
- proto_tree_add_boolean(flags_tree, hf_bcp_fcs_present, tvb, offset, 1, flags);
- proto_tree_add_boolean(flags_tree, hf_bcp_zeropad, tvb, offset, 1, flags);
- proto_tree_add_boolean(flags_tree, hf_bcp_bcontrol, tvb, offset, 1, flags);
- proto_tree_add_uint(flags_tree, hf_bcp_pads, tvb, offset, 1, flags);
- }
- offset++;
-
- mac_type = tvb_get_guint8(tvb, offset);
- if (!(flags & BCP_IS_BCONTROL)) {
- if (check_col(pinfo->cinfo, COL_INFO))
- col_add_str(pinfo->cinfo, COL_INFO,
- val_to_str(mac_type, bcp_mac_type_vals,
- "Unknown MAC type %u"));
- }
- if (tree)
- proto_tree_add_uint(bcp_tree, hf_bcp_mac_type, tvb, offset, 1, mac_type);
- offset++;
-
- switch (mac_type) {
-
- case BCP_MACT_802_4:
- case BCP_MACT_802_5_NONCANON:
- case BCP_MACT_FDDI_NONCANON:
- case BCP_MACT_802_5_CANON:
- case BCP_MACT_FDDI_CANON:
- if (tree)
- proto_tree_add_text(bcp_tree, tvb, offset, 1, "Pad");
+ proto_item *ti = NULL, *flags_item;
+ proto_tree *bcp_tree = NULL, *flags_tree;
+ int offset = 0;
+ guint8 flags;
+ guint8 mac_type;
+ gint captured_length, reported_length, pad_length;
+ tvbuff_t *next_tvb;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "PPP BCP");
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_bcp, tvb, 0, -1, ENC_NA);
+ bcp_tree = proto_item_add_subtree(ti, ett_bcp);
+ }
+
+ flags = tvb_get_guint8(tvb, offset);
+ if (flags & BCP_IS_BCONTROL) {
+ col_set_str(pinfo->cinfo, COL_INFO, "Bridge control");
+ }
+ if (tree) {
+ flags_item = proto_tree_add_uint(bcp_tree, hf_bcp_flags, tvb, offset,
+ 1, flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_bcp_flags);
+ proto_tree_add_boolean(flags_tree, hf_bcp_fcs_present, tvb, offset,
+ 1, flags);
+ proto_tree_add_boolean(flags_tree, hf_bcp_zeropad, tvb, offset, 1,
+ flags);
+ proto_tree_add_boolean(flags_tree, hf_bcp_bcontrol, tvb, offset, 1,
+ flags);
+ proto_tree_add_uint(flags_tree, hf_bcp_pads, tvb, offset, 1, flags);
+ }
offset++;
- break;
- }
-
- if (!(flags & BCP_IS_BCONTROL)) {
- captured_length = tvb_length_remaining(tvb, offset);
- reported_length = tvb_reported_length_remaining(tvb, offset);
- pad_length = flags & BCP_PADS_MASK;
- if (reported_length >= pad_length) {
- reported_length -= pad_length;
- if (captured_length > reported_length)
- captured_length = reported_length;
- next_tvb = tvb_new_subset(tvb, offset, captured_length, reported_length);
- switch (mac_type) {
-
- case BCP_MACT_ETHERNET:
- if (flags & BCP_FCS_PRESENT)
- call_dissector(eth_withfcs_handle, next_tvb, pinfo, tree);
- else
- call_dissector(eth_withoutfcs_handle, next_tvb, pinfo, tree);
- break;
- case BCP_MACT_802_4:
- case BCP_MACT_802_5_NONCANON:
- case BCP_MACT_FDDI_NONCANON:
- case BCP_MACT_802_5_CANON:
- case BCP_MACT_FDDI_CANON:
+ mac_type = tvb_get_guint8(tvb, offset);
+ if (!(flags & BCP_IS_BCONTROL)) {
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_add_str(pinfo->cinfo, COL_INFO,
+ val_to_str(mac_type, bcp_mac_type_vals,
+ "Unknown MAC type %u"));
+ }
+ }
+ if (tree) {
+ proto_tree_add_uint(bcp_tree, hf_bcp_mac_type, tvb, offset, 1,
+ mac_type);
+ }
+ offset++;
+
+ switch (mac_type) {
+
+ case BCP_MACT_802_4:
+ case BCP_MACT_802_5_NONCANON:
+ case BCP_MACT_FDDI_NONCANON:
+ case BCP_MACT_802_5_CANON:
+ case BCP_MACT_FDDI_CANON:
+ if (tree)
+ proto_tree_add_text(bcp_tree, tvb, offset, 1, "Pad");
+ offset++;
break;
- default:
- call_dissector(data_handle, next_tvb, pinfo, tree);
+ default:
+ /* TODO? */
break;
- }
}
- }
+
+ if (!(flags & BCP_IS_BCONTROL)) {
+ captured_length = tvb_length_remaining(tvb, offset);
+ reported_length = tvb_reported_length_remaining(tvb, offset);
+ pad_length = flags & BCP_PADS_MASK;
+ if (reported_length >= pad_length) {
+ reported_length -= pad_length;
+ if (captured_length > reported_length)
+ captured_length = reported_length;
+ next_tvb = tvb_new_subset(tvb, offset, captured_length,
+ reported_length);
+ switch (mac_type) {
+
+ case BCP_MACT_ETHERNET:
+ if (flags & BCP_FCS_PRESENT) {
+ call_dissector(eth_withfcs_handle, next_tvb, pinfo, tree);
+ } else {
+ call_dissector(eth_withoutfcs_handle, next_tvb, pinfo,
+ tree);
+ }
+ break;
+
+ case BCP_MACT_802_4:
+ case BCP_MACT_802_5_NONCANON:
+ case BCP_MACT_FDDI_NONCANON:
+ case BCP_MACT_802_5_CANON:
+ case BCP_MACT_FDDI_CANON:
+ break;
+
+ default:
+ call_dissector(data_handle, next_tvb, pinfo, tree);
+ break;
+ }
+ }
+ }
}
/*
* RFC 1377.
*/
static void
-dissect_osicp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+dissect_osinlcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- dissect_cp(tvb, proto_osicp, ett_osicp, cp_vals, ett_osicp_options,
- osicp_opts, N_OSICP_OPTS, pinfo, tree);
+ dissect_cp(tvb, proto_osinlcp, ett_osinlcp, cp_vals, ett_osinlcp_options,
+ osinlcp_opts, N_OSINLCP_OPTS, pinfo, tree);
}
/*
@@ -3524,20 +4205,20 @@ dissect_osicp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
dissect_ccp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- dissect_cp(tvb, proto_ccp, ett_ccp, ccp_vals, ett_ccp_options,
- ccp_opts, N_CCP_OPTS, pinfo, tree);
+ dissect_cp(tvb, proto_ccp, ett_ccp, ccp_vals, ett_ccp_options, ccp_opts,
+ N_CCP_OPTS, pinfo, tree);
}
/*
* Callback Control Protocol - see
*
- * http://www.linet.gr.jp/~manabe/PPxP/doc/Standards/draft-gidwani-ppp-callback-cp-00.txt
+ * http://www.linet.gr.jp/~manabe/PPxP/doc/Standards/draft-gidwani-ppp-callback-cp-00.txt
*/
static void
dissect_cbcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- dissect_cp(tvb, proto_cbcp, ett_cbcp, cbcp_vals, ett_cbcp_options,
- cbcp_opts, N_CBCP_OPTS, pinfo, tree);
+ dissect_cp(tvb, proto_cbcp, ett_cbcp, cbcp_vals, ett_cbcp_options,
+ cbcp_opts, N_CBCP_OPTS, pinfo, tree);
}
/*
@@ -3546,93 +4227,87 @@ dissect_cbcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
dissect_bacp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- dissect_cp(tvb, proto_bacp, ett_bacp, cp_vals, ett_bacp_options,
- bacp_opts, N_BACP_OPTS, pinfo, tree);
+ dissect_cp(tvb, proto_bacp, ett_bacp, cp_vals, ett_bacp_options, bacp_opts,
+ N_BACP_OPTS, pinfo, tree);
}
static void
dissect_bap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti;
- proto_tree *fh_tree = NULL;
- proto_item *tf;
- proto_tree *field_tree;
-
- guint8 type;
- guint8 id;
- int length, offset;
- guint8 resp_code;
-
- type = tvb_get_guint8(tvb, 0);
- id = tvb_get_guint8(tvb, 1);
- length = tvb_get_ntohs(tvb, 2);
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "PPP BAP");
-
- if(check_col(pinfo->cinfo, COL_INFO))
+ proto_item *ti;
+ proto_tree *fh_tree = NULL;
+ proto_item *tf;
+ proto_tree *field_tree;
+ guint8 type;
+ guint8 id;
+ int length, offset;
+ guint8 resp_code;
+
+ type = tvb_get_guint8(tvb, 0);
+ id = tvb_get_guint8(tvb, 1);
+ length = tvb_get_ntohs(tvb, 2);
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "PPP BAP");
col_add_str(pinfo->cinfo, COL_INFO,
- val_to_str_const(type, bap_vals, "Unknown"));
-
- if(tree) {
- ti = proto_tree_add_item(tree, proto_bap, tvb, 0, length, ENC_NA);
- fh_tree = proto_item_add_subtree(ti, ett_bap_options);
- proto_tree_add_text(fh_tree, tvb, 0, 1, "Type: %s (0x%02x)",
- val_to_str_const(type, bap_vals, "Unknown"), type);
- proto_tree_add_text(fh_tree, tvb, 1, 1, "Identifier: 0x%02x",
- id);
- proto_tree_add_text(fh_tree, tvb, 2, 2, "Length: %u",
- length);
- }
- offset = 4;
- length -= 4;
-
- if (type == BAP_CRES || type == BAP_CBRES ||
- type == BAP_LDQRES || type == BAP_CSRES) {
- resp_code = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(fh_tree, tvb, offset, 1, "Response Code: %s (0x%02x)",
- val_to_str_const(resp_code, bap_resp_code_vals, "Unknown"), resp_code);
- offset++;
- length--;
- }
-
- if(tree) {
- if (length > 0) {
- tf = proto_tree_add_text(fh_tree, tvb, offset, length,
- "Data (%d byte%s)", length, plurality(length, "", "s"));
- field_tree = proto_item_add_subtree(tf, ett_bap_options);
- dissect_ip_tcp_options(tvb, offset, length, bap_opts, N_BAP_OPTS, -1,
- pinfo, field_tree, NULL);
+ val_to_str_const(type, bap_vals, "Unknown"));
+
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_bap, tvb, 0, length, ENC_NA);
+ fh_tree = proto_item_add_subtree(ti, ett_bap_options);
+ proto_tree_add_text(fh_tree, tvb, 0, 1, "Type: %s (0x%02x)",
+ val_to_str_const(type, bap_vals, "Unknown"), type);
+ proto_tree_add_text(fh_tree, tvb, 1, 1, "Identifier: 0x%02x", id);
+ proto_tree_add_text(fh_tree, tvb, 2, 2, "Length: %u", length);
+ }
+ offset = 4;
+ length -= 4;
+
+ if (type == BAP_CRES || type == BAP_CBRES ||
+ type == BAP_LDQRES || type == BAP_CSRES) {
+ resp_code = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(fh_tree, tvb, offset, 1,
+ "Response Code: %s (0x%02x)",
+ val_to_str_const(resp_code, bap_resp_code_vals, "Unknown"),
+ resp_code);
+ offset++;
+ length--;
+ }
+
+ if (tree) {
+ if (length > 0) {
+ tf = proto_tree_add_text(fh_tree, tvb, offset, length,
+ "Data (%d byte%s)", length, plurality(length, "", "s"));
+ field_tree = proto_item_add_subtree(tf, ett_bap_options);
+ dissect_ip_tcp_options(tvb, offset, length, bap_opts, N_BAP_OPTS,
+ -1, pinfo, field_tree, NULL);
+ }
}
- }
}
-#if 0 /* XXX: ToDo ?? */
+#if 0 /* TODO? */
static void
dissect_comp_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti;
- proto_tree *comp_data_tree;
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "PPP Comp");
+ proto_item *ti;
+ proto_tree *comp_data_tree;
- col_set_str(pinfo->cinfo, COL_INFO, "Compressed data");
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "PPP Comp");
+ col_set_str(pinfo->cinfo, COL_INFO, "Compressed data");
- if (tree) {
- ti = proto_tree_add_item(tree, proto_comp_data, tvb, 0, -1, ENC_NA);
- comp_data_tree = proto_item_add_subtree(ti, ett_comp_data);
- }
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_comp_data, tvb, 0, -1, ENC_NA);
+ comp_data_tree = proto_item_add_subtree(ti, ett_comp_data);
+ }
}
#else
static void
dissect_comp_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "PPP Comp");
-
- col_set_str(pinfo->cinfo, COL_INFO, "Compressed data");
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "PPP Comp");
+ col_set_str(pinfo->cinfo, COL_INFO, "Compressed data");
- if (tree) {
- proto_tree_add_item(tree, proto_comp_data, tvb, 0, -1, ENC_NA);
- }
+ if (tree)
+ proto_tree_add_item(tree, proto_comp_data, tvb, 0, -1, ENC_NA);
}
#endif
@@ -3642,8 +4317,8 @@ dissect_comp_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
dissect_pppmuxcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- dissect_cp(tvb,proto_pppmuxcp,ett_pppmuxcp,pppmuxcp_vals,
- ett_pppmuxcp_options,pppmuxcp_opts,N_PPPMUXCP_OPTS,pinfo,tree);
+ dissect_cp(tvb, proto_pppmuxcp, ett_pppmuxcp, pppmuxcp_vals,
+ ett_pppmuxcp_options, pppmuxcp_opts, N_PPPMUXCP_OPTS,pinfo, tree);
}
#define PPPMUX_FLAGS_MASK 0xc0
@@ -3653,106 +4328,105 @@ dissect_pppmuxcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
dissect_pppmux(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *mux_tree, *hdr_tree, *sub_tree, *flag_tree;
- proto_tree *info_tree;
- proto_item *ti = NULL,*sub_ti = NULL;
- guint8 flags, byte;
- guint16 length;
- static guint16 pid;
- tvbuff_t *next_tvb;
- int offset = 0, length_remaining;
- int length_field = 0, pid_field = 0,hdr_length = 0;
+ proto_tree *mux_tree, *hdr_tree, *sub_tree, *flag_tree;
+ proto_tree *info_tree;
+ proto_item *ti = NULL, *sub_ti = NULL;
+ guint8 flags, byte;
+ guint16 length;
+ static guint16 pid;
+ tvbuff_t *next_tvb;
+ int offset = 0, length_remaining;
+ int length_field = 0, pid_field = 0, hdr_length = 0;
- col_set_str(pinfo->cinfo,COL_PROTOCOL, "PPP PPPMux");
+ col_set_str(pinfo->cinfo,COL_PROTOCOL, "PPP PPPMux");
+ col_set_str(pinfo->cinfo, COL_INFO, "PPP Multiplexing");
- col_set_str(pinfo->cinfo, COL_INFO, "PPP Multiplexing");
+ length_remaining = tvb_reported_length(tvb);
- length_remaining = tvb_reported_length(tvb);
-
- if (tree) {
ti = proto_tree_add_item(tree, proto_pppmux, tvb, 0, -1, ENC_NA);
- mux_tree = proto_item_add_subtree(ti,ett_pppmux);
+ mux_tree = proto_item_add_subtree(ti, ett_pppmux);
while (length_remaining > 0) {
-
- flags = tvb_get_guint8(tvb,offset) & PPPMUX_FLAGS_MASK;
-
- if (flags & PPPMUX_LXT_BIT_SET ) {
- length = tvb_get_ntohs(tvb,offset) & 0x3fff;
- length_field = 2;
- } else {
- length = tvb_get_guint8(tvb,offset) & 0x3f;
- length_field = 1;
- }
-
- if (flags & PPPMUX_PFF_BIT_SET) {
- byte = tvb_get_guint8(tvb,offset + length_field);
- if (byte & PFC_BIT) { /* Compressed PID field*/
- pid = byte;
- pid_field = 1;
- } else { /*PID field is 2 bytes*/
- pid = tvb_get_ntohs(tvb,offset + length_field);
- pid_field = 2;
- }
- } else {
- pid_field = 0; /*PID field is 0 bytes*/
- if (!pid){ /*No Last PID, hence use the default */
- if (pppmux_def_prot_id)
- pid = pppmux_def_prot_id;
+ flags = tvb_get_guint8(tvb,offset) & PPPMUX_FLAGS_MASK;
+
+ if (flags & PPPMUX_LXT_BIT_SET) {
+ length = tvb_get_ntohs(tvb,offset) & 0x3fff;
+ length_field = 2;
+ } else {
+ length = tvb_get_guint8(tvb,offset) & 0x3f;
+ length_field = 1;
}
- }
-
- hdr_length = length_field + pid_field;
-
- ti = proto_tree_add_text(mux_tree, tvb, offset, length + length_field,
- "PPPMux Sub-frame");
- sub_tree = proto_item_add_subtree(ti,ett_pppmux_subframe);
- sub_ti = proto_tree_add_text(sub_tree, tvb, offset,
- hdr_length,"Header field");
-
- hdr_tree = proto_item_add_subtree(sub_ti,ett_pppmux_subframe_hdr);
- ti = proto_tree_add_text(hdr_tree, tvb, offset, length_field, "PFF/LXT: 0x%02X",
- flags);
- flag_tree = proto_item_add_subtree(ti,ett_pppmux_subframe_flags);
- proto_tree_add_text(flag_tree,tvb,offset,length_field,"%s",
- decode_boolean_bitfield(flags,0x80,8,"PID Present","PID not present"));
- proto_tree_add_text(flag_tree,tvb,offset,length_field,"%s",
- decode_boolean_bitfield(flags,0x40,8,"2 bytes length field ","1 byte length field"));
-
- proto_tree_add_text(hdr_tree,tvb,offset,length_field,"Sub-frame Length = %u",length);
-
- ti = proto_tree_add_uint(hdr_tree,hf_pppmux_protocol,tvb,offset + length_field,pid_field, pid);
-
- /* if protocol is not present in the sub-frame */
- if (!(flags & PPPMUX_PFF_BIT_SET))
- /* mark this item as generated */
- PROTO_ITEM_SET_GENERATED(ti);
+ if (flags & PPPMUX_PFF_BIT_SET) {
+ byte = tvb_get_guint8(tvb,offset + length_field);
+ if (byte & PFC_BIT) { /* Compressed PID field */
+ pid = byte;
+ pid_field = 1;
+ } else { /* PID field is 2 bytes */
+ pid = tvb_get_ntohs(tvb,offset + length_field);
+ pid_field = 2;
+ }
+ } else {
+ pid_field = 0; /* PID field is 0 bytes */
+ if (!pid) { /* No Last PID, hence use the default */
+ if (pppmux_def_prot_id)
+ pid = pppmux_def_prot_id;
+ }
+ }
- offset += hdr_length;
- length_remaining -= hdr_length;
- length -= pid_field;
+ hdr_length = length_field + pid_field;
+
+ ti = proto_tree_add_text(mux_tree, tvb, offset, length + length_field,
+ "PPPMux Sub-frame");
+ sub_tree = proto_item_add_subtree(ti, ett_pppmux_subframe);
+ sub_ti = proto_tree_add_text(sub_tree, tvb, offset, hdr_length,
+ "Header field");
+
+ hdr_tree = proto_item_add_subtree(sub_ti, ett_pppmux_subframe_hdr);
+ ti = proto_tree_add_text(hdr_tree, tvb, offset, length_field,
+ "PFF/LXT: 0x%02X", flags);
+ flag_tree = proto_item_add_subtree(ti, ett_pppmux_subframe_flags);
+
+ proto_tree_add_text(flag_tree, tvb, offset, length_field, "%s",
+ decode_boolean_bitfield(flags, 0x80, 8,
+ "PID Present", "PID not present"));
+ proto_tree_add_text(flag_tree, tvb, offset, length_field, "%s",
+ decode_boolean_bitfield(flags, 0x40, 8,
+ "2 bytes length field ", "1 byte length field"));
+ proto_tree_add_text(hdr_tree, tvb,offset, length_field,
+ "Sub-frame Length = %u", length);
+
+ ti = proto_tree_add_uint(hdr_tree, hf_pppmux_protocol, tvb,
+ offset + length_field, pid_field, pid);
+
+ /* if protocol is not present in the sub-frame */
+ if (!(flags & PPPMUX_PFF_BIT_SET)) {
+ /* mark this item as generated */
+ PROTO_ITEM_SET_GENERATED(ti);
+ }
- tvb_ensure_bytes_exist (tvb,offset,length);
- sub_ti = proto_tree_add_text(sub_tree,tvb,offset,length,"Information Field");
- info_tree = proto_item_add_subtree(sub_ti,ett_pppmux_subframe_info);
+ offset += hdr_length;
+ length_remaining -= hdr_length;
+ length -= pid_field;
- next_tvb = tvb_new_subset(tvb,offset,length,length);
+ tvb_ensure_bytes_exist (tvb, offset, length);
+ sub_ti = proto_tree_add_text(sub_tree, tvb,offset, length,
+ "Information Field");
+ info_tree = proto_item_add_subtree(sub_ti, ett_pppmux_subframe_info);
+ next_tvb = tvb_new_subset(tvb, offset, length, length);
- if (!dissector_try_uint(ppp_subdissector_table, pid, next_tvb, pinfo, info_tree)) {
- call_dissector(data_handle, next_tvb, pinfo, info_tree);
- }
- offset += length;
- length_remaining -= length;
- } /* While length_remaining */
- pid = 0;
- } /* if tree */
+ if (!dissector_try_uint(ppp_subdissector_table, pid, next_tvb, pinfo,
+ info_tree)) {
+ call_dissector(data_handle, next_tvb, pinfo, info_tree);
+ }
+ offset += length;
+ length_remaining -= length;
+ }
}
/*
* RFC 2508 Internet Protocol Header Compression
*/
-
#define IPHC_CRTP_FH_FLAG_MASK 0xc0
#define IPHC_CRTP_FH_FLAG_POS 6
#define IPHC_CRTP_FH_CID8 1
@@ -3762,107 +4436,110 @@ dissect_pppmux(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
#define IPHC_CRTP_CS_CID16 2
static const value_string iphc_crtp_fh_flags[] = {
- {IPHC_CRTP_FH_CID8, "8-bit Context Id" },
- {IPHC_CRTP_FH_CID16, "16-bit Context Id" },
- {0, NULL }
+ {IPHC_CRTP_FH_CID8, "8-bit Context Id"},
+ {IPHC_CRTP_FH_CID16, "16-bit Context Id"},
+ {0, NULL}
};
static const value_string iphc_crtp_cs_flags[] = {
- {IPHC_CRTP_CS_CID8, "8-bit Context Id" },
- {IPHC_CRTP_CS_CID16, "16-bit Context Id" },
- {0, NULL }
+ {IPHC_CRTP_CS_CID8, "8-bit Context Id"},
+ {IPHC_CRTP_CS_CID16, "16-bit Context Id"},
+ {0, NULL}
};
/*
* 0x61 Packets: Full IP/UDP Header
*/
-
static void
dissect_iphc_crtp_fh(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *fh_tree, *info_tree;
- proto_item *ti = NULL;
-
- guint ip_hdr_len, flags;
- guint length;
- guint hdr_len;
- tvbuff_t *next_tvb;
-
- int offset_seq;
- int offset_cid;
-
- guint8 ip_version;
- guint8 next_protocol;
-
- guchar *ip_packet;
+ proto_tree *fh_tree = NULL, *info_tree = NULL;
+ proto_item *ti = NULL;
+ guint ip_hdr_len, flags;
+ guint length;
+ guint hdr_len;
+ tvbuff_t *next_tvb;
+ int offset_seq;
+ int offset_cid;
+ guint8 ip_version;
+ guint8 next_protocol;
+ guchar *ip_packet;
+
+ length = tvb_reported_length(tvb);
+
+ col_set_str(pinfo->cinfo,COL_PROTOCOL, "CRTP");
+ col_set_str(pinfo->cinfo, COL_INFO, "Full Header");
+
+ /* only dissect IPv4 and UDP */
+ ip_version = tvb_get_guint8(tvb, 0) >> 4;
+ flags = (tvb_get_guint8(tvb, 2) & IPHC_CRTP_FH_FLAG_MASK) >>
+ IPHC_CRTP_FH_FLAG_POS;
+ next_protocol = tvb_get_guint8(tvb, 9);
+
+ if (tree) {
+ ti = proto_tree_add_protocol_format(tree, proto_iphc_crtp, tvb, 0, -1,
+ "%s", val_to_str_ext_const(PPP_RTP_FH, &ppp_vals_ext, "Unknown"));
+ fh_tree = proto_item_add_subtree(ti, ett_iphc_crtp);
+
+ proto_tree_add_item(fh_tree, hf_iphc_crtp_fh_flags, tvb, 2, 1,
+ ENC_BIG_ENDIAN);
+ proto_tree_add_item(fh_tree, hf_iphc_crtp_gen, tvb, 2, 1,
+ ENC_BIG_ENDIAN);
- length = tvb_reported_length(tvb);
-
- col_set_str(pinfo->cinfo,COL_PROTOCOL, "CRTP");
-
- col_set_str(pinfo->cinfo, COL_INFO, "Full Header");
-
- /* only dissect IPv4 and UDP */
- ip_version = tvb_get_guint8(tvb, 0) >> 4;
- next_protocol = tvb_get_guint8(tvb, 9);
-
- if (tree) {
-
- ti = proto_tree_add_protocol_format(tree, proto_iphc_crtp, tvb, 0, -1,
- "%s", val_to_str_ext_const(PPP_RTP_FH, &ppp_vals_ext, "Unknown"));
- fh_tree = proto_item_add_subtree(ti, ett_iphc_crtp);
-
- flags = (tvb_get_guint8(tvb, 2) & IPHC_CRTP_FH_FLAG_MASK) >> IPHC_CRTP_FH_FLAG_POS;
-
- /* flags field */
- proto_tree_add_item(fh_tree, hf_iphc_crtp_fh_flags, tvb, 2, 1, ENC_BIG_ENDIAN);
-
- /* generation field */
- proto_tree_add_item(fh_tree, hf_iphc_crtp_gen, tvb, 2, 1, ENC_BIG_ENDIAN);
+ }
/* calculate length of IP header, assume IPv4 */
ip_hdr_len = (tvb_get_guint8(tvb, 0) & 0x0f) * 4;
- /* calculate total hdr length, assume UDP */
- hdr_len = ip_hdr_len + 8;
-
- if (ip_version != 4) {
- proto_tree_add_text(fh_tree, tvb, 3, -1,
- "IP version is %u: the only supported version is 4",
- ip_version);
- return;
- }
+ if (tree) {
+ /* calculate total hdr length, assume UDP */
+ hdr_len = ip_hdr_len + 8;
- if (next_protocol != IP_PROTO_UDP) {
- proto_tree_add_text(fh_tree, tvb, 3, -1,
- "Next protocol is %s (%u): the only supported protocol is UDP",
- ipprotostr(next_protocol), next_protocol);
- return;
- }
+ if (ip_version != 4) {
+ proto_tree_add_text(fh_tree, tvb, 3, -1,
+ "IP version is %u: the only supported version is 4",
+ ip_version);
+ return;
+ }
- /* context id and sequence fields */
- switch (flags) {
+ if (next_protocol != IP_PROTO_UDP) {
+ proto_tree_add_text(fh_tree, tvb, 3, -1,
+ "Next protocol is %s (%u): the only supported protocol is UDP",
+ ipprotostr(next_protocol), next_protocol);
+ return;
+ }
- case IPHC_CRTP_FH_CID8:
- offset_cid = 3;
- offset_seq = ip_hdr_len + 5;
- proto_tree_add_item(fh_tree, hf_iphc_crtp_cid8, tvb, offset_cid, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(fh_tree, hf_iphc_crtp_seq, tvb, offset_seq, 1, ENC_BIG_ENDIAN);
- break;
+ /* context id and sequence fields */
+ switch (flags) {
+ case IPHC_CRTP_FH_CID8:
+ offset_cid = 3;
+ offset_seq = ip_hdr_len + 5;
+ proto_tree_add_item(fh_tree, hf_iphc_crtp_cid8, tvb, offset_cid, 1,
+ ENC_BIG_ENDIAN);
+ proto_tree_add_item(fh_tree, hf_iphc_crtp_seq, tvb, offset_seq, 1,
+ ENC_BIG_ENDIAN);
+ break;
+
+ case IPHC_CRTP_FH_CID16:
+ offset_seq = 3;
+ offset_cid = ip_hdr_len + 4;
+ proto_tree_add_item(fh_tree, hf_iphc_crtp_seq, tvb, offset_seq, 1,
+ ENC_BIG_ENDIAN);
+ proto_tree_add_item(fh_tree, hf_iphc_crtp_cid16, tvb, offset_cid,
+ 2, ENC_BIG_ENDIAN);
+ break;
+
+ default:
+ /* TODO? */
+ break;
+ }
- case IPHC_CRTP_FH_CID16:
- offset_seq = 3;
- offset_cid = ip_hdr_len + 4;
- proto_tree_add_item(fh_tree, hf_iphc_crtp_seq, tvb, offset_seq, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(fh_tree, hf_iphc_crtp_cid16, tvb, offset_cid, 2, ENC_BIG_ENDIAN);
- break;
+ /* information field */
+ tvb_ensure_bytes_exist (tvb, 0, hdr_len);
+ ti = proto_tree_add_text(fh_tree, tvb, 0,length,"Information Field");
+ info_tree = proto_item_add_subtree(ti,ett_iphc_crtp_info);
}
- /* information field */
- tvb_ensure_bytes_exist (tvb, 0, hdr_len);
- ti = proto_tree_add_text(fh_tree, tvb, 0,length,"Information Field");
- info_tree = proto_item_add_subtree(ti,ett_iphc_crtp_info);
-
/* allocate a copy of the IP packet */
ip_packet = tvb_memdup(tvb, 0, length);
@@ -3877,10 +4554,10 @@ dissect_iphc_crtp_fh(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
add_new_data_source(pinfo, next_tvb, "Decompressed Data");
tvb_set_free_cb(next_tvb, g_free);
- if (!dissector_try_uint(ppp_subdissector_table, PPP_IP, next_tvb, pinfo, info_tree)) {
- call_dissector_only(data_handle, next_tvb, pinfo, info_tree);
+ if (!dissector_try_uint(ppp_subdissector_table, PPP_IP, next_tvb, pinfo,
+ info_tree)) {
+ call_dissector_only(data_handle, next_tvb, pinfo, info_tree);
}
- } /* if tree */
}
/*
@@ -3889,33 +4566,36 @@ dissect_iphc_crtp_fh(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
dissect_iphc_crtp_cudp16(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *cudp_tree;
- proto_item *ti = NULL;
- guint length;
- guint hdr_length;
- int offset = 0;
-
- col_set_str(pinfo->cinfo,COL_PROTOCOL, "CRTP");
+ proto_tree *cudp_tree;
+ proto_item *ti = NULL;
+ guint length;
+ guint hdr_length;
+ int offset = 0;
- col_set_str(pinfo->cinfo, COL_INFO, "Compressed UDP 16");
+ col_set_str(pinfo->cinfo,COL_PROTOCOL, "CRTP");
+ col_set_str(pinfo->cinfo, COL_INFO, "Compressed UDP 16");
- length = tvb_reported_length(tvb);
+ length = tvb_reported_length(tvb);
- if (tree) {
- ti = proto_tree_add_protocol_format(tree, proto_iphc_crtp, tvb, 0, -1,
- "%s", val_to_str_ext_const(PPP_RTP_CUDP16, &ppp_vals_ext, "Unknown"));
- cudp_tree = proto_item_add_subtree(ti, ett_iphc_crtp);
+ if (tree) {
+ ti = proto_tree_add_protocol_format(tree, proto_iphc_crtp, tvb, 0, -1,
+ "%s",
+ val_to_str_ext_const(PPP_RTP_CUDP16, &ppp_vals_ext, "Unknown"));
+ cudp_tree = proto_item_add_subtree(ti, ett_iphc_crtp);
- hdr_length = 3;
+ hdr_length = 3;
- proto_tree_add_item(cudp_tree, hf_iphc_crtp_cid16, tvb, 0, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(cudp_tree, hf_iphc_crtp_seq, tvb, 2, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(cudp_tree, hf_iphc_crtp_cid16, tvb, 0, 2,
+ ENC_BIG_ENDIAN);
+ proto_tree_add_item(cudp_tree, hf_iphc_crtp_seq, tvb, 2, 1,
+ ENC_BIG_ENDIAN);
- offset += hdr_length;
- length -= hdr_length;
+ offset += hdr_length;
+ length -= hdr_length;
- proto_tree_add_text(cudp_tree, tvb, offset, length, "Data (%d bytes)", length);
- } /* if tree */
+ proto_tree_add_text(cudp_tree, tvb, offset, length, "Data (%d bytes)",
+ length);
+ }
}
/*
@@ -3924,33 +4604,36 @@ dissect_iphc_crtp_cudp16(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
dissect_iphc_crtp_cudp8(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *cudp_tree;
- proto_item *ti = NULL;
- guint length;
- guint hdr_length;
- int offset = 0;
+ proto_tree *cudp_tree;
+ proto_item *ti = NULL;
+ guint length;
+ guint hdr_length;
+ int offset = 0;
- col_set_str(pinfo->cinfo,COL_PROTOCOL, "CRTP");
+ col_set_str(pinfo->cinfo,COL_PROTOCOL, "CRTP");
+ col_set_str(pinfo->cinfo, COL_INFO, "Compressed UDP 8");
- col_set_str(pinfo->cinfo, COL_INFO, "Compressed UDP 8");
+ length = tvb_reported_length(tvb);
- length = tvb_reported_length(tvb);
+ if (tree) {
+ ti = proto_tree_add_protocol_format(tree, proto_iphc_crtp, tvb, 0, -1,
+ "%s",
+ val_to_str_ext_const(PPP_RTP_CUDP8, &ppp_vals_ext, "Unknown"));
+ cudp_tree = proto_item_add_subtree(ti, ett_iphc_crtp);
- if (tree) {
- ti = proto_tree_add_protocol_format(tree, proto_iphc_crtp, tvb, 0, -1,
- "%s", val_to_str_ext_const(PPP_RTP_CUDP8, &ppp_vals_ext, "Unknown"));
- cudp_tree = proto_item_add_subtree(ti, ett_iphc_crtp);
+ hdr_length = 2;
- hdr_length = 2;
+ proto_tree_add_item(cudp_tree, hf_iphc_crtp_cid8, tvb, 0, 1,
+ ENC_BIG_ENDIAN);
+ proto_tree_add_item(cudp_tree, hf_iphc_crtp_seq, tvb, 1, 1,
+ ENC_BIG_ENDIAN);
- proto_tree_add_item(cudp_tree, hf_iphc_crtp_cid8, tvb, 0, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(cudp_tree, hf_iphc_crtp_seq, tvb, 1, 1, ENC_BIG_ENDIAN);
+ offset += hdr_length;
+ length -= hdr_length;
- offset += hdr_length;
- length -= hdr_length;
-
- proto_tree_add_text(cudp_tree, tvb, offset, length, "Data (%d bytes)", length);
- } /* if tree */
+ proto_tree_add_text(cudp_tree, tvb, offset, length, "Data (%d bytes)",
+ length);
+ }
}
@@ -3960,52 +4643,56 @@ dissect_iphc_crtp_cudp8(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
dissect_iphc_crtp_cs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *cs_tree;
- proto_item *ti = NULL;
- guint8 flags, cnt;
- guint length, cid_size;
- guint offset = 2, hf;
-
- col_set_str(pinfo->cinfo,COL_PROTOCOL, "CRTP");
-
- col_set_str(pinfo->cinfo, COL_INFO, "Context State");
-
- if (tree) {
-
- ti = proto_tree_add_protocol_format(tree, proto_iphc_crtp, tvb, 0, -1,
- "%s", val_to_str_ext_const(PPP_RTP_CS, &ppp_vals_ext, "Unknown"));
-
- cs_tree = proto_item_add_subtree(ti, ett_iphc_crtp);
-
- proto_tree_add_item(cs_tree, hf_iphc_crtp_cs_flags, tvb, 0, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(cs_tree, hf_iphc_crtp_cs_cnt, tvb, 1, 1, ENC_BIG_ENDIAN);
-
- /* calculate required length */
- flags = tvb_get_guint8(tvb, 0);
- cnt = tvb_get_guint8(tvb, 1);
-
- if (flags == IPHC_CRTP_CS_CID8) {
- hf = hf_iphc_crtp_cid8;
- cid_size = 1;
- length = 3 * cnt;
- } else {
- hf = hf_iphc_crtp_cid16;
- cid_size = 2;
- length = 4 * cnt;
- }
-
- tvb_ensure_bytes_exist(tvb, offset, length);
+ proto_tree *cs_tree;
+ proto_item *ti = NULL;
+ guint8 flags, cnt;
+ guint length, cid_size;
+ guint offset = 2, hf;
+
+ col_set_str(pinfo->cinfo,COL_PROTOCOL, "CRTP");
+ col_set_str(pinfo->cinfo, COL_INFO, "Context State");
+
+ if (tree) {
+ ti = proto_tree_add_protocol_format(tree, proto_iphc_crtp, tvb, 0, -1,
+ "%s", val_to_str_ext_const(PPP_RTP_CS, &ppp_vals_ext, "Unknown"));
+
+ cs_tree = proto_item_add_subtree(ti, ett_iphc_crtp);
+
+ proto_tree_add_item(cs_tree, hf_iphc_crtp_cs_flags, tvb, 0, 1,
+ ENC_BIG_ENDIAN);
+ proto_tree_add_item(cs_tree, hf_iphc_crtp_cs_cnt, tvb, 1, 1,
+ ENC_BIG_ENDIAN);
+
+ /* calculate required length */
+ flags = tvb_get_guint8(tvb, 0);
+ cnt = tvb_get_guint8(tvb, 1);
+
+ if (flags == IPHC_CRTP_CS_CID8) {
+ hf = hf_iphc_crtp_cid8;
+ cid_size = 1;
+ length = 3 * cnt;
+ } else {
+ hf = hf_iphc_crtp_cid16;
+ cid_size = 2;
+ length = 4 * cnt;
+ }
- while (offset < length) {
- proto_tree_add_item(cs_tree, hf, tvb, offset, cid_size, ENC_BIG_ENDIAN);
- offset += cid_size;
- proto_tree_add_item(cs_tree, hf_iphc_crtp_cs_invalid, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(cs_tree, hf_iphc_crtp_seq, tvb, offset, 1, ENC_BIG_ENDIAN);
- ++offset;
- proto_tree_add_item(cs_tree, hf_iphc_crtp_gen, tvb, offset, 1, ENC_BIG_ENDIAN);
- ++offset;
+ tvb_ensure_bytes_exist(tvb, offset, length);
+
+ while (offset < length) {
+ proto_tree_add_item(cs_tree, hf, tvb, offset, cid_size,
+ ENC_BIG_ENDIAN);
+ offset += cid_size;
+ proto_tree_add_item(cs_tree, hf_iphc_crtp_cs_invalid, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(cs_tree, hf_iphc_crtp_seq, tvb, offset, 1,
+ ENC_BIG_ENDIAN);
+ ++offset;
+ proto_tree_add_item(cs_tree, hf_iphc_crtp_gen, tvb, offset, 1,
+ ENC_BIG_ENDIAN);
+ ++offset;
+ }
}
- } /* if tree */
}
@@ -4015,8 +4702,8 @@ dissect_iphc_crtp_cs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
dissect_mplscp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- dissect_cp(tvb, proto_mplscp, ett_mplscp, cp_vals, ett_mplscp_options,
- NULL, 0, pinfo, tree);
+ dissect_cp(tvb, proto_mplscp, ett_mplscp, cp_vals, ett_mplscp_options,
+ NULL, 0, pinfo, tree);
}
/*
@@ -4026,8 +4713,8 @@ dissect_mplscp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
dissect_cdpcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- dissect_cp(tvb, proto_cdpcp, ett_cdpcp, cp_vals, ett_cdpcp_options,
- NULL, 0, pinfo, tree);
+ dissect_cp(tvb, proto_cdpcp, ett_cdpcp, cp_vals, ett_cdpcp_options, NULL,
+ 0, pinfo, tree);
}
static gboolean mp_short_seqno = FALSE; /* Default to long sequence numbers */
@@ -4047,113 +4734,118 @@ static gboolean mp_short_seqno = FALSE; /* Default to long sequence numbers */
static void
dissect_mp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *mp_tree = NULL, *hdr_tree;
- proto_item *ti = NULL;
- guint8 flags;
- const gchar *flag_str;
- gint hdrlen;
- tvbuff_t *next_tvb;
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "PPP MP");
-
- col_set_str(pinfo->cinfo, COL_INFO, "PPP Multilink");
-
- if (tree) {
- ti = proto_tree_add_item(tree, proto_mp, tvb, 0, mp_short_seqno ? 2 : 4, ENC_NA);
- mp_tree = proto_item_add_subtree(ti, ett_mp);
- }
+ proto_tree *mp_tree = NULL, *hdr_tree;
+ proto_item *ti = NULL;
+ guint8 flags;
+ const gchar *flag_str;
+ gint hdrlen;
+ tvbuff_t *next_tvb;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "PPP MP");
+ col_set_str(pinfo->cinfo, COL_INFO, "PPP Multilink");
+
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_mp, tvb, 0,
+ mp_short_seqno ? 2 : 4, ENC_NA);
+ mp_tree = proto_item_add_subtree(ti, ett_mp);
+ }
- flags = tvb_get_guint8(tvb, 0);
+ flags = tvb_get_guint8(tvb, 0);
- if (tree) {
- switch (MP_FRAG(flags)) {
- case MP_FRAG_FIRST:
- flag_str = "First";
- break;
- case MP_FRAG_LAST:
- flag_str = "Last";
- break;
- case MP_FRAG_FIRST|MP_FRAG_LAST:
- flag_str = "First, Last";
- break;
- default:
- flag_str = "Unknown";
- break;
- }
- ti = proto_tree_add_text(mp_tree, tvb, 0, 1, "Fragment: 0x%2X (%s)",
- MP_FRAG(flags), flag_str);
- hdr_tree = proto_item_add_subtree(ti, ett_mp_flags);
- proto_tree_add_boolean(hdr_tree, hf_mp_frag_first, tvb, 0, 1, flags);
- proto_tree_add_boolean(hdr_tree, hf_mp_frag_last, tvb, 0, 1, flags);
- if (mp_short_seqno) {
- proto_tree_add_text(hdr_tree, tvb, 0, 1, "%s",
- decode_boolean_bitfield(flags, MP_FRAG_RESERVED_SHORT, sizeof(flags) * 8,
- "reserved", "reserved"));
- proto_tree_add_item(mp_tree, hf_mp_short_sequence_num, tvb, 0, 2, ENC_BIG_ENDIAN);
- } else {
- proto_tree_add_text(hdr_tree, tvb, 0, 1, "%s",
- decode_boolean_bitfield(flags, MP_FRAG_RESERVED, sizeof(flags) * 8,
- "reserved", "reserved"));
- proto_tree_add_item(mp_tree, hf_mp_sequence_num, tvb, 1, 3, ENC_BIG_ENDIAN);
+ if (tree) {
+ switch (MP_FRAG(flags)) {
+ case MP_FRAG_FIRST:
+ flag_str = "First";
+ break;
+ case MP_FRAG_LAST:
+ flag_str = "Last";
+ break;
+ case MP_FRAG_FIRST|MP_FRAG_LAST:
+ flag_str = "First, Last";
+ break;
+ default:
+ flag_str = "Unknown";
+ break;
+ }
+ ti = proto_tree_add_text(mp_tree, tvb, 0, 1, "Fragment: 0x%2X (%s)",
+ MP_FRAG(flags), flag_str);
+ hdr_tree = proto_item_add_subtree(ti, ett_mp_flags);
+
+ proto_tree_add_boolean(hdr_tree, hf_mp_frag_first, tvb, 0, 1, flags);
+ proto_tree_add_boolean(hdr_tree, hf_mp_frag_last, tvb, 0, 1, flags);
+ if (mp_short_seqno) {
+ proto_tree_add_text(hdr_tree, tvb, 0, 1, "%s",
+ decode_boolean_bitfield(flags, MP_FRAG_RESERVED_SHORT,
+ sizeof(flags) * 8, "reserved", "reserved"));
+ proto_tree_add_item(mp_tree, hf_mp_short_sequence_num, tvb, 0, 2,
+ ENC_BIG_ENDIAN);
+ } else {
+ proto_tree_add_text(hdr_tree, tvb, 0, 1, "%s",
+ decode_boolean_bitfield(flags, MP_FRAG_RESERVED,
+ sizeof(flags) * 8, "reserved", "reserved"));
+ proto_tree_add_item(mp_tree, hf_mp_sequence_num, tvb, 1, 3,
+ ENC_BIG_ENDIAN);
+ }
}
- }
- hdrlen = mp_short_seqno ? 2 : 4;
- if (tvb_reported_length_remaining(tvb, hdrlen) > 0) {
- next_tvb = tvb_new_subset_remaining(tvb, hdrlen);
- dissect_ppp(next_tvb, pinfo, tree);
- }
+ hdrlen = mp_short_seqno ? 2 : 4;
+ if (tvb_reported_length_remaining(tvb, hdrlen) > 0) {
+ next_tvb = tvb_new_subset_remaining(tvb, hdrlen);
+ dissect_ppp(next_tvb, pinfo, tree);
+ }
}
/*
* Handles PPP without HDLC framing, just a protocol field (RFC 1661).
*/
static void
-dissect_ppp( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) {
- proto_item *ti = NULL;
- proto_tree *fh_tree = NULL;
+dissect_ppp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ proto_item *ti = NULL;
+ proto_tree *fh_tree = NULL;
- if(tree) {
- ti = proto_tree_add_item(tree, proto_ppp, tvb, 0, -1, ENC_NA);
- fh_tree = proto_item_add_subtree(ti, ett_ppp);
- }
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_ppp, tvb, 0, -1, ENC_NA);
+ fh_tree = proto_item_add_subtree(ti, ett_ppp);
+ }
- dissect_ppp_common(tvb, pinfo, tree, fh_tree, ti, 0);
+ dissect_ppp_common(tvb, pinfo, tree, fh_tree, ti, 0);
}
static void
dissect_ppp_hdlc_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti = NULL;
- proto_tree *fh_tree = NULL;
- guint8 byte0;
- int proto_offset;
- tvbuff_t *next_tvb;
-
- byte0 = tvb_get_guint8(tvb, 0);
-
- /* PPP HDLC encapsulation */
- if (byte0 == 0xff)
- proto_offset = 2;
- else {
- /* address and control are compressed (NULL) */
- proto_offset = 0;
- }
-
- /* load the top pane info. This should be overwritten by
- the next protocol in the stack */
- if(tree) {
- ti = proto_tree_add_item(tree, proto_ppp, tvb, 0, -1, ENC_NA);
- fh_tree = proto_item_add_subtree(ti, ett_ppp);
- if (byte0 == 0xff) {
- proto_tree_add_item(fh_tree, hf_ppp_address, tvb, 0, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(fh_tree, hf_ppp_control, tvb, 1, 1, ENC_BIG_ENDIAN);
+ proto_item *ti = NULL;
+ proto_tree *fh_tree = NULL;
+ guint8 byte0;
+ int proto_offset;
+ tvbuff_t *next_tvb;
+
+ byte0 = tvb_get_guint8(tvb, 0);
+
+ /* PPP HDLC encapsulation */
+ if (byte0 == 0xff)
+ proto_offset = 2;
+ else {
+ /* address and control are compressed (NULL) */
+ proto_offset = 0;
}
- }
- next_tvb = decode_fcs(tvb, fh_tree, ppp_fcs_decode, proto_offset);
+ /* load the top pane info. This should be overwritten by
+ the next protocol in the stack */
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_ppp, tvb, 0, -1, ENC_NA);
+ fh_tree = proto_item_add_subtree(ti, ett_ppp);
+ if (byte0 == 0xff) {
+ proto_tree_add_item(fh_tree, hf_ppp_address, tvb, 0, 1,
+ ENC_BIG_ENDIAN);
+ proto_tree_add_item(fh_tree, hf_ppp_control, tvb, 1, 1,
+ ENC_BIG_ENDIAN);
+ }
+ }
- dissect_ppp_common(next_tvb, pinfo, tree, fh_tree, ti, proto_offset);
+ next_tvb = decode_fcs(tvb, fh_tree, ppp_fcs_decode, proto_offset);
+ dissect_ppp_common(next_tvb, pinfo, tree, fh_tree, ti, proto_offset);
}
/*
@@ -4161,83 +4853,80 @@ dissect_ppp_hdlc_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
* a PPP in HDLC-like Framing frame (RFC 1662) or a Cisco HDLC frame.
*/
static void
-dissect_ppp_hdlc( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
+dissect_ppp_hdlc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- guint8 byte0;
+ guint8 byte0;
- byte0 = tvb_get_guint8(tvb, 0);
- if (byte0 == CHDLC_ADDR_UNICAST || byte0 == CHDLC_ADDR_MULTICAST) {
- /* Cisco HDLC encapsulation */
- call_dissector(chdlc_handle, tvb, pinfo, tree);
- return;
- }
+ byte0 = tvb_get_guint8(tvb, 0);
+ if (byte0 == CHDLC_ADDR_UNICAST || byte0 == CHDLC_ADDR_MULTICAST) {
+ /* Cisco HDLC encapsulation */
+ call_dissector(chdlc_handle, tvb, pinfo, tree);
+ return;
+ }
- /*
- * XXX - should we have an exported dissector that always dissects PPP,
- * for use when we know the packets are PPP, not CHDLC?
- */
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "PPP");
- switch (pinfo->p2p_dir) {
+ /*
+ * XXX - should we have an exported dissector that always dissects PPP,
+ * for use when we know the packets are PPP, not CHDLC?
+ */
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "PPP");
+ switch (pinfo->p2p_dir) {
- case P2P_DIR_SENT:
- col_set_str(pinfo->cinfo, COL_RES_DL_SRC, "DTE");
- col_set_str(pinfo->cinfo, COL_RES_DL_DST, "DCE");
- break;
+ case P2P_DIR_SENT:
+ col_set_str(pinfo->cinfo, COL_RES_DL_SRC, "DTE");
+ col_set_str(pinfo->cinfo, COL_RES_DL_DST, "DCE");
+ break;
- case P2P_DIR_RECV:
- col_set_str(pinfo->cinfo, COL_RES_DL_SRC, "DCE");
- col_set_str(pinfo->cinfo, COL_RES_DL_DST, "DTE");
- break;
+ case P2P_DIR_RECV:
+ col_set_str(pinfo->cinfo, COL_RES_DL_SRC, "DCE");
+ col_set_str(pinfo->cinfo, COL_RES_DL_DST, "DTE");
+ break;
- default:
- col_set_str(pinfo->cinfo, COL_RES_DL_SRC, "N/A");
- col_set_str(pinfo->cinfo, COL_RES_DL_DST, "N/A");
- break;
- }
+ default:
+ col_set_str(pinfo->cinfo, COL_RES_DL_SRC, "N/A");
+ col_set_str(pinfo->cinfo, COL_RES_DL_DST, "N/A");
+ break;
+ }
- dissect_ppp_hdlc_common(tvb, pinfo, tree);
+ dissect_ppp_hdlc_common(tvb, pinfo, tree);
}
static tvbuff_t*
remove_escape_chars(tvbuff_t *tvb, int offset, int length)
{
- guint8 *buff;
- int i;
- int scanned_len = 0;
- guint8 octet;
- tvbuff_t *next_tvb;
-
- buff = g_malloc(length);
- i = 0;
- while ( scanned_len < length ){
- octet = tvb_get_guint8(tvb,offset);
- if (octet == 0x7d){
- offset++;
- scanned_len++;
- if (scanned_len >= length)
- break;
- octet = tvb_get_guint8(tvb,offset);
- buff[i] = octet ^ 0x20;
- }else{
- buff[i]= octet;
+ guint8 *buff;
+ int i;
+ int scanned_len = 0;
+ guint8 octet;
+ tvbuff_t *next_tvb;
+
+ buff = g_malloc(length);
+ i = 0;
+ while (scanned_len < length) {
+ octet = tvb_get_guint8(tvb, offset);
+ if (octet == 0x7d) {
+ offset++;
+ scanned_len++;
+ if (scanned_len >= length)
+ break;
+ octet = tvb_get_guint8(tvb, offset);
+ buff[i] = octet ^ 0x20;
+ } else {
+ buff[i] = octet;
+ }
+ offset++;
+ scanned_len++;
+ i++;
}
- offset++;
- scanned_len++;
- i++;
- }
- if (i == 0) {
- g_free(buff);
- return NULL;
- }
- next_tvb = tvb_new_child_real_data(tvb, buff,i,i);
-
- /* Arrange that the allocated packet data copy be freed when the
- * tvbuff is freed.
- */
- tvb_set_free_cb( next_tvb, g_free );
-
- return next_tvb;
+ if (i == 0) {
+ g_free(buff);
+ return NULL;
+ }
+ next_tvb = tvb_new_child_real_data(tvb, buff, i, i);
+ /* Arrange that the allocated packet data copy be freed when the tvbuff is
+ * freed. */
+ tvb_set_free_cb(next_tvb, g_free);
+ return next_tvb;
}
/*
@@ -4248,127 +4937,127 @@ remove_escape_chars(tvbuff_t *tvb, int offset, int length)
static void
dissect_ppp_raw_hdlc( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
{
- proto_item *ti;
- proto_tree *bs_tree = NULL;
- gint offset, end_offset, data_offset;
- int length, data_length;
- tvbuff_t *ppp_tvb;
- gboolean first = TRUE;
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "PPP");
-
- if (tree) {
- ti = proto_tree_add_item(tree, proto_ppp_hdlc, tvb, 0, -1, ENC_NA);
- bs_tree = proto_item_add_subtree(ti, ett_ppp_hdlc_data);
- }
-
- /*
- * XXX - this needs to handle a PPP frame split over multiple higher-level
- * packets.
- */
-
- /*
- * Look for a frame delimiter.
- */
- offset = tvb_find_guint8(tvb, 0, -1, 0x7e);
- if (offset == -1) {
- /*
- * None found - this is presumably continued from an earlier
- * packet and continued in a later packet.
- */
- col_set_str(pinfo->cinfo, COL_INFO, "PPP Fragment");
- if (tree)
- proto_tree_add_text(bs_tree, tvb, offset, -1, "PPP Fragment");
- offset++;
- length = tvb_length_remaining(tvb,offset);
- ppp_tvb = remove_escape_chars(tvb, offset,length);
- if (ppp_tvb != NULL) {
- add_new_data_source(pinfo, ppp_tvb, "PPP Fragment");
- call_dissector(data_handle, ppp_tvb, pinfo, tree);
+ proto_item *ti;
+ proto_tree *bs_tree = NULL;
+ gint offset, end_offset, data_offset;
+ int length, data_length;
+ tvbuff_t *ppp_tvb;
+ gboolean first = TRUE;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "PPP");
+
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_ppp_hdlc, tvb, 0, -1, ENC_NA);
+ bs_tree = proto_item_add_subtree(ti, ett_ppp_hdlc_data);
}
- return;
- }
- if (offset != 0) {
+
/*
- * We have some data preceding the first PPP packet;
- * mark it as a PPP fragment.
+ * XXX - this needs to handle a PPP frame split over multiple higher-level
+ * packets.
*/
- col_set_str(pinfo->cinfo, COL_INFO, "PPP Fragment");
- length = offset;
- if (tree)
- proto_tree_add_text(bs_tree, tvb, 0, length, "PPP Fragment");
- if (length != 0) {
- ppp_tvb = remove_escape_chars(tvb, 0, length - 1);
- if (ppp_tvb != NULL) {
- add_new_data_source(pinfo, ppp_tvb, "PPP Fragment");
- call_dissector(data_handle, ppp_tvb, pinfo, tree);
- }
- }
- }
- while ( tvb_reported_length_remaining(tvb, offset) > 0 ){
+
/*
- * Look for the next frame delimiter.
+ * Look for a frame delimiter.
*/
- end_offset = tvb_find_guint8(tvb, offset+1, -1, 0x7e);
- if ( end_offset == -1 ){
- /*
- * We didn't find one. This is probably continued in
- * a later packet.
- */
- if (first) {
+ offset = tvb_find_guint8(tvb, 0, -1, 0x7e);
+ if (offset == -1) {
+ /*
+ * None found - this is presumably continued from an earlier
+ * packet and continued in a later packet.
+ */
col_set_str(pinfo->cinfo, COL_INFO, "PPP Fragment");
- }
- if (tree)
- proto_tree_add_text(bs_tree, tvb, offset, -1, "PPP Fragment");
- offset++;
- length = tvb_length_remaining(tvb, offset);
- ppp_tvb = remove_escape_chars(tvb, offset,length);
- if (ppp_tvb != NULL) {
- add_new_data_source(pinfo, ppp_tvb, "PPP Fragment");
- call_dissector(data_handle, ppp_tvb, pinfo, tree);
- }
- return;
+ if (tree)
+ proto_tree_add_text(bs_tree, tvb, offset, -1, "PPP Fragment");
+ offset++;
+ length = tvb_length_remaining(tvb,offset);
+ ppp_tvb = remove_escape_chars(tvb, offset,length);
+ if (ppp_tvb != NULL) {
+ add_new_data_source(pinfo, ppp_tvb, "PPP Fragment");
+ call_dissector(data_handle, ppp_tvb, pinfo, tree);
+ }
+ return;
}
+ if (offset != 0) {
+ /*
+ * We have some data preceding the first PPP packet;
+ * mark it as a PPP fragment.
+ */
+ col_set_str(pinfo->cinfo, COL_INFO, "PPP Fragment");
+ length = offset;
+ if (tree)
+ proto_tree_add_text(bs_tree, tvb, 0, length, "PPP Fragment");
+ if (length != 0) {
+ ppp_tvb = remove_escape_chars(tvb, 0, length - 1);
+ if (ppp_tvb != NULL) {
+ add_new_data_source(pinfo, ppp_tvb, "PPP Fragment");
+ call_dissector(data_handle, ppp_tvb, pinfo, tree);
+ }
+ }
+ }
+ while (tvb_reported_length_remaining(tvb, offset) > 0) {
+ /*
+ * Look for the next frame delimiter.
+ */
+ end_offset = tvb_find_guint8(tvb, offset + 1, -1, 0x7e);
+ if (end_offset == -1) {
+ /*
+ * We didn't find one. This is probably continued in a later
+ * packet.
+ */
+ if (first)
+ col_set_str(pinfo->cinfo, COL_INFO, "PPP Fragment");
+ if (tree)
+ proto_tree_add_text(bs_tree, tvb, offset, -1, "PPP Fragment");
+ offset++;
+ length = tvb_length_remaining(tvb, offset);
+ ppp_tvb = remove_escape_chars(tvb, offset, length);
+ if (ppp_tvb != NULL) {
+ add_new_data_source(pinfo, ppp_tvb, "PPP Fragment");
+ call_dissector(data_handle, ppp_tvb, pinfo, tree);
+ }
+ return;
+ }
- data_offset = offset+1; /* skip starting frame delimiter */
- data_length = end_offset - data_offset;
-
- /*
- * Is that frame delimiter immediately followed by another one?
- * Some PPP implementations put a frame delimiter at the
- * beginning and the end of each frame, although RFC 1662
- * appears only to require that there be one frame delimiter
- * between adjacent frames:
- *
- * Each frame begins and ends with a Flag Sequence, which is the
- * binary sequence 01111110 (hexadecimal 0x7e). All implementations
- * continuously check for this flag, which is used for frame
- * synchronization.
- *
- * Only one Flag Sequence is required between two frames. Two
- * consecutive Flag Sequences constitute an empty frame, which is
- * silently discarded, and not counted as a FCS error.
- *
- * If the delimiter at the end of this frame is followed by
- * another delimiter, we consider the first delimiter part
- * of this frame.
- */
- if (tvb_offset_exists(tvb, end_offset+1) &&
- tvb_get_guint8(tvb, end_offset+1) == 0x7e)
- end_offset++;
- length = end_offset - offset;
- if (tree)
- proto_tree_add_text(bs_tree, tvb, offset, length, "PPP Data");
- if (length > 1) {
- ppp_tvb = remove_escape_chars(tvb, data_offset, data_length);
- if (ppp_tvb != NULL) {
- add_new_data_source(pinfo, ppp_tvb, "PPP Message");
- dissect_ppp_hdlc_common(ppp_tvb, pinfo, tree);
- first = FALSE;
- }
+ data_offset = offset + 1; /* skip starting frame delimiter */
+ data_length = end_offset - data_offset;
+
+ /*
+ * Is that frame delimiter immediately followed by another one?
+ * Some PPP implementations put a frame delimiter at the
+ * beginning and the end of each frame, although RFC 1662
+ * appears only to require that there be one frame delimiter
+ * between adjacent frames:
+ *
+ * Each frame begins and ends with a Flag Sequence, which is the
+ * binary sequence 01111110 (hexadecimal 0x7e). All implementations
+ * continuously check for this flag, which is used for frame
+ * synchronization.
+ *
+ * Only one Flag Sequence is required between two frames. Two
+ * consecutive Flag Sequences constitute an empty frame, which is
+ * silently discarded, and not counted as a FCS error.
+ *
+ * If the delimiter at the end of this frame is followed by
+ * another delimiter, we consider the first delimiter part
+ * of this frame.
+ */
+ if (tvb_offset_exists(tvb, end_offset + 1) &&
+ tvb_get_guint8(tvb, end_offset+1) == 0x7e) {
+ end_offset++;
+ }
+ length = end_offset - offset;
+ if (tree)
+ proto_tree_add_text(bs_tree, tvb, offset, length, "PPP Data");
+ if (length > 1) {
+ ppp_tvb = remove_escape_chars(tvb, data_offset, data_length);
+ if (ppp_tvb != NULL) {
+ add_new_data_source(pinfo, ppp_tvb, "PPP Message");
+ dissect_ppp_hdlc_common(ppp_tvb, pinfo, tree);
+ first = FALSE;
+ }
+ }
+ offset = end_offset;
}
- offset = end_offset;
- } /* end while */
}
/*
@@ -4384,149 +5073,160 @@ dissect_ppp_raw_hdlc( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
static gboolean
dissect_ppp_usb( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
{
- /* In some cases, the 0x03 normally in byte 3 is escaped so we must look for
- * the 2 byte sequence of 0x7d23 instead of 0x03. The 0x23 is generated by
- * 0x20^0x03 per section 4.2 of: http://tools.ietf.org/html/rfc1662.html. */
- const guchar buf1[3] = {0x7e, 0xff, 0x03};
- const guchar buf2[4] = {0x7e, 0xff, 0x7d, 0x23};
- tvbuff_t *next_tvb;
-
- if ((tvb_memeql(tvb, 0, buf2, sizeof(buf2)) == 0) ||
- (tvb_memeql(tvb, 0, buf1, sizeof(buf1)) == 0)) {
- dissect_ppp_raw_hdlc(tvb, pinfo, tree);
- }
- else if ((tvb_memeql(tvb, 0, &buf1[1], sizeof(buf1) - 1) == 0) ||
- (tvb_memeql(tvb, 0, &buf2[1], sizeof(buf2) - 1) == 0)) {
- /* It's missing the 0x7e framing character. What TODO?
- * Should we try faking it by sticking 0x7e in front? Or try telling
- * dissect_ppp_raw_hdlc() NOT to look for the 0x7e frame deliminator?
- * Or is this a bug in libpcap (used 1.1.0)?
- * Or a bug in the Linux kernel (tested with 2.6.24.4) Or a bug in
- * usbmon? Or is the data we're looking at really just part of the
- * payload and not control data? Well, at least in my case it's
- * definitely not, but not sure if this is always the case. Is this
- * issue applicable only to PPP/USB or PPP/XYZ, in which case a more
- * general solution should be found?
+ /*
+ * In some cases, the 0x03 normally in byte 3 is escaped so we must look
+ * for the 2 byte sequence of 0x7d23 instead of 0x03. The 0x23 is
+ * generated by 0x20^0x03 per section 4.2 of:
+ * http://tools.ietf.org/html/rfc1662.html.
*/
- /* For now, just try skipping the framing I guess??? */
- if ( tvb_get_guint8(tvb, 1) == 0x03)
- next_tvb = tvb_new_subset_remaining(tvb, 2);
- else
- next_tvb = tvb_new_subset_remaining(tvb, 3);
- dissect_ppp(next_tvb, pinfo, tree);
- }
- else if (tvb_get_guint8(tvb, 0) == 0x7e) {
- /* Well, let's guess that since the 1st byte is 0x7e that it really is
- * a PPP frame, and the address and control bytes are compressed (NULL)
- * per http://tools.ietf.org/html/rfc1662, section 3.2. */
- next_tvb = tvb_new_subset_remaining(tvb, 1);
- dissect_ppp_hdlc_common(next_tvb, pinfo, tree);
- }
- else
- return (FALSE);
- return (TRUE);
+ const guchar buf1[3] = {0x7e, 0xff, 0x03};
+ const guchar buf2[4] = {0x7e, 0xff, 0x7d, 0x23};
+ tvbuff_t *next_tvb;
+
+ if ((tvb_memeql(tvb, 0, buf2, sizeof(buf2)) == 0) ||
+ (tvb_memeql(tvb, 0, buf1, sizeof(buf1)) == 0)) {
+ dissect_ppp_raw_hdlc(tvb, pinfo, tree);
+ } else if ((tvb_memeql(tvb, 0, &buf1[1], sizeof(buf1) - 1) == 0) ||
+ (tvb_memeql(tvb, 0, &buf2[1], sizeof(buf2) - 1) == 0)) {
+ /* It's missing the 0x7e framing character. What TODO?
+ * Should we try faking it by sticking 0x7e in front? Or try telling
+ * dissect_ppp_raw_hdlc() NOT to look for the 0x7e frame deliminator?
+ * Or is this a bug in libpcap (used 1.1.0)?
+ * Or a bug in the Linux kernel (tested with 2.6.24.4) Or a bug in
+ * usbmon? Or is the data we're looking at really just part of the
+ * payload and not control data? Well, at least in my case it's
+ * definitely not, but not sure if this is always the case. Is this
+ * issue applicable only to PPP/USB or PPP/XYZ, in which case a more
+ * general solution should be found?
+ */
+ /* For now, just try skipping the framing I guess??? */
+ if (tvb_get_guint8(tvb, 1) == 0x03)
+ next_tvb = tvb_new_subset_remaining(tvb, 2);
+ else
+ next_tvb = tvb_new_subset_remaining(tvb, 3);
+ dissect_ppp(next_tvb, pinfo, tree);
+ } else if (tvb_get_guint8(tvb, 0) == 0x7e) {
+ /* Well, let's guess that since the 1st byte is 0x7e that it really is
+ * a PPP frame, and the address and control bytes are compressed (NULL)
+ * per http://tools.ietf.org/html/rfc1662, section 3.2. */
+ next_tvb = tvb_new_subset_remaining(tvb, 1);
+ dissect_ppp_hdlc_common(next_tvb, pinfo, tree);
+ } else
+ return (FALSE);
+ return (TRUE);
}
void
proto_register_ppp_raw_hdlc(void)
{
- static gint *ett[] = {
- &ett_ppp_hdlc_data
- };
+ static gint *ett[] = {
+ &ett_ppp_hdlc_data
+ };
- proto_ppp_hdlc = proto_register_protocol("PPP In HDLC-Like Framing", "PPP-HDLC", "ppp_hdlc");
- proto_register_subtree_array(ett, array_length(ett));
+ proto_ppp_hdlc = proto_register_protocol("PPP In HDLC-Like Framing",
+ "PPP-HDLC", "ppp_hdlc");
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_ppp_raw_hdlc(void)
{
- dissector_handle_t ppp_raw_hdlc_handle;
+ dissector_handle_t ppp_raw_hdlc_handle;
- ppp_raw_hdlc_handle = create_dissector_handle(dissect_ppp_raw_hdlc, proto_ppp);
- dissector_add_uint("gre.proto", ETHERTYPE_CDMA2000_A10_UBS, ppp_raw_hdlc_handle);
- dissector_add_uint("gre.proto", ETHERTYPE_3GPP2, ppp_raw_hdlc_handle);
+ ppp_raw_hdlc_handle = create_dissector_handle(dissect_ppp_raw_hdlc,
+ proto_ppp);
+ dissector_add_uint("gre.proto", ETHERTYPE_CDMA2000_A10_UBS,
+ ppp_raw_hdlc_handle);
+ dissector_add_uint("gre.proto", ETHERTYPE_3GPP2, ppp_raw_hdlc_handle);
- heur_dissector_add("usb.bulk", dissect_ppp_usb, proto_ppp);
+ heur_dissector_add("usb.bulk", dissect_ppp_usb, proto_ppp);
}
/*
* Handles PAP just as a protocol field
*/
static void
-dissect_pap( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) {
- proto_item *ti, *data_ti;
- proto_tree *fh_tree, *data_tree = NULL;
-
- guint8 code;
- gchar *peer_id, *password, *message;
- guint8 peer_id_length, password_length, message_length;
- int offset = 0;
-
- code = tvb_get_guint8(tvb, 0);
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "PPP PAP");
-
- if(check_col(pinfo->cinfo, COL_INFO))
- col_add_str(pinfo->cinfo, COL_INFO, val_to_str_const(code, pap_vals, "Unknown"));
-
- if(tree) {
- ti = proto_tree_add_item(tree, proto_pap, tvb, 0, -1, ENC_NA);
- fh_tree = proto_item_add_subtree(ti, ett_pap);
- /* Code */
- proto_tree_add_item(fh_tree, hf_pap_code, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset += 1;
-
- /* Identifier */
- proto_tree_add_item(fh_tree, hf_pap_identifier, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset += 1;
-
- /* Length */
- proto_tree_add_item(fh_tree, hf_pap_length, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
-
-
- data_ti = proto_tree_add_item(fh_tree, hf_pap_data, tvb, offset, -1, ENC_NA);
- data_tree = proto_item_add_subtree(data_ti, ett_pap_data);
-
- switch(code){
- case CONFREQ:
- proto_tree_add_item(data_tree, hf_pap_peer_id_length, tvb, offset, 1, ENC_BIG_ENDIAN);
- peer_id_length = tvb_get_guint8(tvb, offset);
- offset +=1;
+dissect_pap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ proto_item *ti, *data_ti;
+ proto_tree *fh_tree, *data_tree = NULL;
+ guint8 code;
+ gchar *peer_id, *password, *message;
+ guint8 peer_id_length, password_length, message_length;
+ int offset = 0;
- proto_tree_add_item(data_tree, hf_pap_peer_id, tvb, offset, peer_id_length, ENC_ASCII|ENC_NA);
- peer_id = tvb_format_text(tvb, offset, peer_id_length);
- offset += peer_id_length;
+ code = tvb_get_guint8(tvb, 0);
- proto_tree_add_item(data_tree, hf_pap_password_length, tvb, offset, 1, ENC_BIG_ENDIAN);
- password_length = tvb_get_guint8(tvb, offset);
- offset +=1;
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "PPP PAP");
+ col_add_str(pinfo->cinfo, COL_INFO,
+ val_to_str_const(code, pap_vals, "Unknown"));
- proto_tree_add_item(data_tree, hf_pap_password, tvb, offset, password_length, ENC_ASCII|ENC_NA);
- password = tvb_format_text(tvb, offset, password_length);
- offset += password_length;
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_pap, tvb, 0, -1, ENC_NA);
+ fh_tree = proto_item_add_subtree(ti, ett_pap);
- col_append_fstr(pinfo->cinfo, COL_INFO, " (Peer-ID='%s', Password='%s')", peer_id, password);
- break;
- case CONFACK:
- case CONFNAK:
- proto_tree_add_item(data_tree, hf_pap_message_length, tvb, offset, 1, ENC_BIG_ENDIAN);
- message_length = tvb_get_guint8(tvb, offset);
- offset +=1;
+ proto_tree_add_item(fh_tree, hf_pap_code, tvb, offset, 1,
+ ENC_BIG_ENDIAN);
+ offset++;
- proto_tree_add_item(data_tree, hf_pap_message, tvb, offset, message_length, ENC_ASCII|ENC_NA);
- message = tvb_format_text(tvb, offset, message_length);
- offset += message_length;
+ proto_tree_add_item(fh_tree, hf_pap_identifier, tvb, offset, 1,
+ ENC_BIG_ENDIAN);
+ offset++;
- col_append_fstr(pinfo->cinfo, COL_INFO, " (Message='%s')", message);
- break;
- default:
- proto_tree_add_item(data_tree, hf_pap_stuff, tvb, offset, -1, ENC_NA);
- break;
+ proto_tree_add_item(fh_tree, hf_pap_length, tvb, offset, 2,
+ ENC_BIG_ENDIAN);
+ offset += 2;
+
+ data_ti = proto_tree_add_item(fh_tree, hf_pap_data, tvb, offset, -1,
+ ENC_NA);
+ data_tree = proto_item_add_subtree(data_ti, ett_pap_data);
+
+ switch (code) {
+ case CONFREQ:
+ proto_tree_add_item(data_tree, hf_pap_peer_id_length, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ peer_id_length = tvb_get_guint8(tvb, offset);
+ offset++;
+
+ proto_tree_add_item(data_tree, hf_pap_peer_id, tvb, offset,
+ peer_id_length, ENC_ASCII|ENC_NA);
+ peer_id = tvb_format_text(tvb, offset, peer_id_length);
+ offset += peer_id_length;
+
+ proto_tree_add_item(data_tree, hf_pap_password_length, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ password_length = tvb_get_guint8(tvb, offset);
+ offset++;
+
+ proto_tree_add_item(data_tree, hf_pap_password, tvb, offset,
+ password_length, ENC_ASCII|ENC_NA);
+ password = tvb_format_text(tvb, offset, password_length);
+
+ col_append_fstr(pinfo->cinfo, COL_INFO,
+ " (Peer-ID='%s', Password='%s')", peer_id, password);
+ break;
+
+ case CONFACK:
+ case CONFNAK:
+ proto_tree_add_item(data_tree, hf_pap_message_length, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ message_length = tvb_get_guint8(tvb, offset);
+ offset +=1;
+
+ proto_tree_add_item(data_tree, hf_pap_message, tvb, offset,
+ message_length, ENC_ASCII|ENC_NA);
+ message = tvb_format_text(tvb, offset, message_length);
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (Message='%s')",
+ message);
+ break;
+
+ default:
+ proto_tree_add_item(data_tree, hf_pap_stuff, tvb, offset, -1,
+ ENC_NA);
+ break;
+ }
}
- }
-
}
/*
@@ -4534,135 +5234,129 @@ dissect_pap( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) {
* Handles CHAP just as a protocol field
*/
static void
-dissect_chap( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) {
- proto_item *ti = NULL;
- proto_tree *fh_tree = NULL;
- proto_item *tf;
- proto_tree *field_tree;
-
- guint8 code, value_size;
- guint32 length;
- int offset;
-
- code = tvb_get_guint8(tvb, 0);
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "PPP CHAP");
-
- if(check_col(pinfo->cinfo, COL_INFO))
+dissect_chap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ proto_item *ti = NULL;
+ proto_tree *fh_tree = NULL;
+ proto_item *tf;
+ proto_tree *field_tree;
+ guint8 code, value_size;
+ guint32 length;
+ int offset;
+
+ code = tvb_get_guint8(tvb, 0);
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "PPP CHAP");
col_add_str(pinfo->cinfo, COL_INFO,
- val_to_str_const(code, chap_vals, "Unknown"));
-
- if(tree) {
- /* Create CHAP protocol tree */
- ti = proto_tree_add_item(tree, proto_chap, tvb, 0, -1, ENC_NA);
- fh_tree = proto_item_add_subtree(ti, ett_chap);
-
- /* Code */
- proto_tree_add_item(fh_tree, hf_chap_code, tvb, 0, 1, ENC_BIG_ENDIAN);
-
- /* Identifier */
- proto_tree_add_item(fh_tree, hf_chap_identifier, tvb, 1, 1, ENC_BIG_ENDIAN);
- }
-
- /* Length - make sure it's valid */
- length = tvb_get_ntohs(tvb, 2);
- if(length < 4) {
- if(tree) {
- proto_tree_add_uint_format(fh_tree, hf_chap_length, tvb, 2, 2, length,
- "Length: %u (invalid, must be >= 4)",
- length);
- }
- return;
- }
- proto_item_set_len(ti, length);
- if(tree) {
- proto_tree_add_item(fh_tree, hf_chap_length, tvb, 2, 2, ENC_BIG_ENDIAN);
- }
-
- /* Offset moved to after length field */
- offset = 4;
- /* Length includes previous 4 bytes, subtract */
- length -= 4;
-
- switch (code) {
- /* Challenge or Response data */
- case CHAP_CHAL:
- case CHAP_RESP:
- if(tree) {
- if (length > 0) {
- guint value_offset=0;
- guint name_offset=0, name_size = 0;
+ val_to_str_const(code, chap_vals, "Unknown"));
- /* Create data subtree */
- tf = proto_tree_add_item(fh_tree, hf_chap_data, tvb, offset, length, ENC_NA);
+ if (tree) {
+ /* Create CHAP protocol tree */
+ ti = proto_tree_add_item(tree, proto_chap, tvb, 0, -1, ENC_NA);
+ fh_tree = proto_item_add_subtree(ti, ett_chap);
- field_tree = proto_item_add_subtree(tf, ett_chap_data);
- length--;
+ proto_tree_add_item(fh_tree, hf_chap_code, tvb, 0, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(fh_tree, hf_chap_identifier, tvb, 1, 1,
+ ENC_BIG_ENDIAN);
+ }
- /* Value size */
- value_size = tvb_get_guint8(tvb, offset);
- if (value_size > length) {
- proto_tree_add_text(field_tree, tvb, offset, 1,
- "Value Size: %d byte%s (invalid, must be <= %u)",
- value_size, plurality(value_size, "", "s"),
- length);
- return;
+ /* Length - make sure it's valid */
+ length = tvb_get_ntohs(tvb, 2);
+ if (length < 4) {
+ if (tree) {
+ proto_tree_add_uint_format(fh_tree, hf_chap_length, tvb, 2, 2,
+ length, "Length: %u (invalid, must be >= 4)", length);
}
- proto_tree_add_item(field_tree, hf_chap_value_size, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
+ return;
+ }
+ proto_item_set_len(ti, length);
+ if (tree) {
+ proto_tree_add_item(fh_tree, hf_chap_length, tvb, 2, 2,
+ ENC_BIG_ENDIAN);
+ }
- /* Value */
- if (length > 0) {
- value_offset = offset;
- proto_tree_add_item(field_tree, hf_chap_value, tvb, offset, value_size, ENC_NA);
-
- /* Move along value_size bytes */
- offset+=value_size;
- length-=value_size;
-
- /* Find name in remaining bytes */
- if (length > 0) {
- tvb_ensure_bytes_exist(tvb, offset, length);
- proto_tree_add_item(field_tree, hf_chap_name, tvb, offset, length, ENC_ASCII|ENC_NA);
- name_offset = offset;
- name_size = length;
- }
-
- /* Show name and value in info column */
- if(check_col(pinfo->cinfo, COL_INFO)){
- col_append_fstr(pinfo->cinfo, COL_INFO, " (NAME='%s%s', VALUE=0x%s)",
- tvb_format_text(tvb, name_offset,
- (name_size > 20) ? 20 : name_size),
- (name_size > 20) ? "..." : "",
- tvb_bytes_to_str(tvb, value_offset, value_size));
- }
+ offset = 4; /* Offset moved to after length field */
+ length -= 4; /* Length includes previous 4 bytes, subtract */
+
+ switch (code) {
+ /* Challenge or Response data */
+ case CHAP_CHAL:
+ case CHAP_RESP:
+ if (tree) {
+ if (length > 0) {
+ guint value_offset = 0;
+ guint name_offset = 0, name_size = 0;
+
+ /* Create data subtree */
+ tf = proto_tree_add_item(fh_tree, hf_chap_data, tvb, offset,
+ length, ENC_NA);
+ field_tree = proto_item_add_subtree(tf, ett_chap_data);
+ length--;
+
+ /* Value size */
+ value_size = tvb_get_guint8(tvb, offset);
+ if (value_size > length) {
+ proto_tree_add_text(field_tree, tvb, offset, 1,
+ "Value Size: %d byte%s (invalid, must be <= %u)",
+ value_size, plurality(value_size, "", "s"), length);
+ return;
+ }
+ proto_tree_add_item(field_tree, hf_chap_value_size, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ /* Value */
+ if (length > 0) {
+ value_offset = offset;
+ proto_tree_add_item(field_tree, hf_chap_value, tvb, offset,
+ value_size, ENC_NA);
+
+ /* Move along value_size bytes */
+ offset += value_size;
+ length -= value_size;
+
+ /* Find name in remaining bytes */
+ if (length > 0) {
+ tvb_ensure_bytes_exist(tvb, offset, length);
+ proto_tree_add_item(field_tree, hf_chap_name, tvb,
+ offset, length, ENC_ASCII|ENC_NA);
+ name_offset = offset;
+ name_size = length;
+ }
+
+ /* Show name and value in info column */
+ col_append_fstr(pinfo->cinfo, COL_INFO,
+ " (NAME='%s%s', VALUE=0x%s)",
+ tvb_format_text(tvb, name_offset,
+ (name_size > 20) ? 20 : name_size),
+ (name_size > 20) ? "..." : "",
+ tvb_bytes_to_str(tvb, value_offset, value_size));
+ }
+ }
}
- }
- }
- break;
+ break;
/* Success or Failure data */
- case CHAP_SUCC:
- case CHAP_FAIL:
- if(tree) {
- if (length > 0) {
- proto_tree_add_item(fh_tree, hf_chap_message, tvb, offset, length, ENC_ASCII|ENC_NA);
- }
- }
+ case CHAP_SUCC:
+ case CHAP_FAIL:
+ if (tree) {
+ if (length > 0) {
+ proto_tree_add_item(fh_tree, hf_chap_message, tvb, offset,
+ length, ENC_ASCII|ENC_NA);
+ }
+ }
- /* Show message in info column */
- if(check_col(pinfo->cinfo, COL_INFO)){
- col_append_fstr(pinfo->cinfo, COL_INFO, " (MESSAGE='%s')",
- tvb_format_text(tvb, offset, length));
- }
- break;
+ /* Show message in info column */
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (MESSAGE='%s')",
+ tvb_format_text(tvb, offset, length));
+ break;
/* Code from unknown code type... */
- default:
- if (length > 0)
- proto_tree_add_text(fh_tree, tvb, offset, length, "Stuff (%u byte%s)",
- length, plurality(length, "", "s"));
- break;
- }
+ default:
+ if (length > 0)
+ proto_tree_add_text(fh_tree, tvb, offset, length,
+ "Stuff (%u byte%s)", length, plurality(length, "", "s"));
+ break;
+ }
}
/*
@@ -4671,943 +5365,1418 @@ dissect_chap( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) {
static void
dissect_ipv6cp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- dissect_cp(tvb, proto_ipv6cp, ett_ipv6cp, cp_vals, ett_ipv6cp_options,
- ipv6cp_opts, N_IPV6CP_OPTS, pinfo, tree);
+ dissect_cp(tvb, proto_ipv6cp, ett_ipv6cp, cp_vals, ett_ipv6cp_options,
+ ipv6cp_opts, N_IPV6CP_OPTS, pinfo, tree);
}
static void
-dissect_ipv6cp_if_id_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
- int offset, guint length, packet_info *pinfo _U_,
- proto_tree *tree)
-{
- proto_tree_add_text(tree, tvb, offset, length, "%s: %02x%02x:%02x%02x:%02x%x:%02x%02x",
- optp->name,
- tvb_get_guint8(tvb, offset + 2),
- tvb_get_guint8(tvb, offset + 3),
- tvb_get_guint8(tvb, offset + 4),
- tvb_get_guint8(tvb, offset + 5),
- tvb_get_guint8(tvb, offset + 6),
- tvb_get_guint8(tvb, offset + 7),
- tvb_get_guint8(tvb, offset + 8),
- tvb_get_guint8(tvb, offset + 9)
- );
+dissect_ipv6cp_if_id_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
+ guint length, packet_info *pinfo _U_, proto_tree *tree)
+{
+ proto_tree_add_text(tree, tvb, offset, length,
+ "%s: %02x%02x:%02x%02x:%02x%x:%02x%02x", optp->name,
+ tvb_get_guint8(tvb, offset + 2), tvb_get_guint8(tvb, offset + 3),
+ tvb_get_guint8(tvb, offset + 4), tvb_get_guint8(tvb, offset + 5),
+ tvb_get_guint8(tvb, offset + 6), tvb_get_guint8(tvb, offset + 7),
+ tvb_get_guint8(tvb, offset + 8), tvb_get_guint8(tvb, offset + 9));
}
void
proto_register_ppp(void)
{
- static hf_register_info hf[] = {
- { &hf_ppp_direction,
- { "Direction", "ppp.direction", FT_UINT8, BASE_DEC,
- VALS(ppp_direction_vals), 0x0, "PPP direction", HFILL }},
-
- { &hf_ppp_address,
- { "Address", "ppp.address", FT_UINT8, BASE_HEX,
- NULL, 0x0, NULL, HFILL }},
-
- { &hf_ppp_control,
- { "Control", "ppp.control", FT_UINT8, BASE_HEX,
- NULL, 0x0, NULL, HFILL }},
-
- { &hf_ppp_protocol,
- { "Protocol", "ppp.protocol", FT_UINT16, BASE_HEX|BASE_EXT_STRING,
- &ppp_vals_ext, 0x0, NULL, HFILL }},
- };
- static gint *ett[] = {
- &ett_ppp
- };
-
- module_t *ppp_module;
-
- proto_ppp = proto_register_protocol("Point-to-Point Protocol", "PPP", "ppp");
- proto_register_field_array(proto_ppp, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
-
-/* subdissector code */
- ppp_subdissector_table = register_dissector_table("ppp.protocol",
- "PPP protocol", FT_UINT16, BASE_HEX);
-
- register_dissector("ppp_hdlc", dissect_ppp_hdlc, proto_ppp);
- register_dissector("ppp_lcp_options", dissect_lcp_options, proto_ppp);
- register_dissector("ppp", dissect_ppp, proto_ppp);
-
- /* Register the preferences for the ppp protocol */
- ppp_module = prefs_register_protocol(proto_ppp, NULL);
-
- prefs_register_enum_preference(ppp_module,
- "fcs_type",
- "PPP Frame Checksum Type",
- "The type of PPP frame checksum (none, 16-bit, 32-bit)",
- &ppp_fcs_decode,
- fcs_options, FALSE);
- prefs_register_bool_preference(ppp_module,
- "decompress_vj",
- "Decompress Van Jacobson-compressed frames",
- "Whether Van Jacobson-compressed PPP frames should be decompressed",
- &ppp_vj_decomp);
- prefs_register_uint_preference(ppp_module,
- "default_proto_id",
- "PPPMuxCP Default PID (in hex)",
- "Default Protocol ID to be used for PPPMuxCP",
- 16, &pppmux_def_prot_id);
+ static hf_register_info hf[] = {
+ { &hf_ppp_direction,
+ { "Direction", "ppp.direction", FT_UINT8, BASE_DEC,
+ VALS(ppp_direction_vals), 0x0, "PPP direction", HFILL }},
+ { &hf_ppp_address,
+ { "Address", "ppp.address", FT_UINT8, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ppp_control,
+ { "Control", "ppp.control", FT_UINT8, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ppp_protocol,
+ { "Protocol", "ppp.protocol", FT_UINT16, BASE_HEX|BASE_EXT_STRING,
+ &ppp_vals_ext, 0x0, NULL, HFILL }},
+ { &hf_ppp_code,
+ { "Code", "ppp.code", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ppp_identifier,
+ { "Identifier", "ppp.identifier", FT_UINT8, BASE_DEC_HEX,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ppp_length,
+ { "Length", "ppp.length", FT_UINT16, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ppp_magic_number,
+ { "Magic Number", "ppp.magic_number", FT_UINT32, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ppp_oui,
+ { "OUI", "ppp.oui", FT_UINT24, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ppp_kind,
+ { "Kind", "ppp.kind", FT_UINT8, BASE_DEC_HEX,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ppp_data,
+ { "Data", "ppp.data", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }}
+ };
+ static gint *ett[] = {
+ &ett_ppp
+ };
+
+ module_t *ppp_module;
+
+ proto_ppp = proto_register_protocol("Point-to-Point Protocol", "PPP",
+ "ppp");
+ proto_register_field_array(proto_ppp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ /* subdissector code */
+ ppp_subdissector_table = register_dissector_table("ppp.protocol",
+ "PPP protocol", FT_UINT16, BASE_HEX);
+
+ register_dissector("ppp_hdlc", dissect_ppp_hdlc, proto_ppp);
+ register_dissector("ppp_lcp_options", dissect_lcp_options, proto_ppp);
+ register_dissector("ppp", dissect_ppp, proto_ppp);
+
+ /* Register the preferences for the ppp protocol */
+ ppp_module = prefs_register_protocol(proto_ppp, NULL);
+
+ prefs_register_enum_preference(ppp_module, "fcs_type",
+ "PPP Frame Checksum Type",
+ "The type of PPP frame checksum (none, 16-bit, 32-bit)",
+ &ppp_fcs_decode, fcs_options, FALSE);
+ prefs_register_bool_preference(ppp_module, "decompress_vj",
+ "Decompress Van Jacobson-compressed frames",
+ "Whether Van Jacobson-compressed PPP frames should be decompressed",
+ &ppp_vj_decomp);
+ prefs_register_uint_preference(ppp_module, "default_proto_id",
+ "PPPMuxCP Default PID (in hex)",
+ "Default Protocol ID to be used for PPPMuxCP",
+ 16, &pppmux_def_prot_id);
}
void
proto_reg_handoff_ppp(void)
{
- dissector_handle_t ppp_hdlc_handle, ppp_handle;
-
- /*
- * Get a handle for the CHDLC dissector.
- */
- chdlc_handle = find_dissector("chdlc");
- data_handle = find_dissector("data");
+ dissector_handle_t ppp_hdlc_handle, ppp_handle;
- ppp_handle = find_dissector("ppp");
- dissector_add_uint("fr.ietf", NLPID_PPP, ppp_handle);
-
- ppp_hdlc_handle = find_dissector("ppp_hdlc");
- dissector_add_uint("wtap_encap", WTAP_ENCAP_PPP, ppp_hdlc_handle);
- dissector_add_uint("wtap_encap", WTAP_ENCAP_PPP_WITH_PHDR, ppp_hdlc_handle);
- dissector_add_uint("sll.ltype", LINUX_SLL_P_PPPHDLC, ppp_hdlc_handle);
- dissector_add_uint("osinl.excl", NLPID_PPP, ppp_handle);
- dissector_add_uint("gre.proto", ETHERTYPE_PPP, ppp_hdlc_handle);
+ /*
+ * Get a handle for the CHDLC dissector.
+ */
+ chdlc_handle = find_dissector("chdlc");
+ data_handle = find_dissector("data");
+
+ ppp_handle = find_dissector("ppp");
+ dissector_add_uint("fr.ietf", NLPID_PPP, ppp_handle);
+
+ ppp_hdlc_handle = find_dissector("ppp_hdlc");
+ dissector_add_uint("wtap_encap", WTAP_ENCAP_PPP, ppp_hdlc_handle);
+ dissector_add_uint("wtap_encap", WTAP_ENCAP_PPP_WITH_PHDR,
+ ppp_hdlc_handle);
+ dissector_add_uint("sll.ltype", LINUX_SLL_P_PPPHDLC, ppp_hdlc_handle);
+ dissector_add_uint("osinl.excl", NLPID_PPP, ppp_handle);
+ dissector_add_uint("gre.proto", ETHERTYPE_PPP, ppp_hdlc_handle);
}
void
proto_register_mp(void)
{
- static hf_register_info hf[] = {
- { &hf_mp_frag_first,
- { "First fragment", "mp.first", FT_BOOLEAN, 8,
- TFS(&tfs_yes_no), MP_FRAG_FIRST, NULL, HFILL }},
-
- { &hf_mp_frag_last,
- { "Last fragment", "mp.last", FT_BOOLEAN, 8,
- TFS(&tfs_yes_no), MP_FRAG_LAST, NULL, HFILL }},
-
- { &hf_mp_sequence_num,
- { "Sequence number", "mp.seq", FT_UINT24, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_mp_short_sequence_num,
- { "Sequence number", "mp.seq", FT_UINT16, BASE_DEC, NULL, 0x0FFF,
- NULL, HFILL }}
- };
- static gint *ett[] = {
- &ett_mp,
- &ett_mp_flags,
- };
+ static hf_register_info hf[] = {
+ { &hf_mp_frag_first,
+ { "First fragment", "mp.first", FT_BOOLEAN, 8,
+ TFS(&tfs_yes_no), MP_FRAG_FIRST, NULL, HFILL }},
+ { &hf_mp_frag_last,
+ { "Last fragment", "mp.last", FT_BOOLEAN, 8,
+ TFS(&tfs_yes_no), MP_FRAG_LAST, NULL, HFILL }},
+ { &hf_mp_sequence_num,
+ { "Sequence number", "mp.seq", FT_UINT24, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_mp_short_sequence_num,
+ { "Short Sequence number", "mp.sseq", FT_UINT16, BASE_DEC,
+ NULL, 0x0FFF, NULL, HFILL }}
+ };
+ static gint *ett[] = {
+ &ett_mp,
+ &ett_mp_flags
+ };
- module_t *mp_module;
+ module_t *mp_module;
- proto_mp = proto_register_protocol("PPP Multilink Protocol", "PPP MP", "mp");
- proto_register_field_array(proto_mp, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ proto_mp = proto_register_protocol("PPP Multilink Protocol", "PPP MP",
+ "mp");
+ proto_register_field_array(proto_mp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
- /* Register the preferences for the PPP multilink protocol */
- mp_module = prefs_register_protocol(proto_mp, NULL);
+ /* Register the preferences for the PPP multilink protocol */
+ mp_module = prefs_register_protocol(proto_mp, NULL);
- prefs_register_bool_preference(mp_module,
- "short_seqno",
- "Short sequence numbers",
- "Whether PPP Multilink frames use 12-bit sequence numbers",
- &mp_short_seqno);
+ prefs_register_bool_preference(mp_module, "short_seqno",
+ "Short sequence numbers",
+ "Whether PPP Multilink frames use 12-bit sequence numbers",
+ &mp_short_seqno);
}
void
proto_reg_handoff_mp(void)
{
- dissector_handle_t mp_handle;
+ dissector_handle_t mp_handle;
- mp_handle = create_dissector_handle(dissect_mp, proto_mp);
- dissector_add_uint("ppp.protocol", PPP_MP, mp_handle);
+ mp_handle = create_dissector_handle(dissect_mp, proto_mp);
+ dissector_add_uint("ppp.protocol", PPP_MP, mp_handle);
}
void
proto_register_lcp(void)
{
- static gint *ett[] = {
- &ett_lcp,
- &ett_lcp_options,
- &ett_lcp_authprot_opt,
- &ett_lcp_qualprot_opt,
- &ett_lcp_fcs_alternatives_opt,
- &ett_lcp_numbered_mode_opt,
- &ett_lcp_callback_opt,
- &ett_lcp_multilink_ep_disc_opt,
- &ett_lcp_internationalization_opt,
- };
+ static hf_register_info hf[] = {
+ { &hf_lcp_magic_number,
+ { "Magic Number", "lcp.magic_number", FT_UINT32, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_lcp_data,
+ { "Data", "lcp.data", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_lcp_message,
+ { "Message", "lcp.message", FT_STRING, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_lcp_secs_remaining,
+ { "Seconds Remaining", "lcp.secs_remaining", FT_UINT32, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_lcp_rej_proto,
+ { "Rejected Protocol", "lcp.rej_proto", FT_UINT16,
+ BASE_HEX | BASE_EXT_STRING, &ppp_vals_ext, 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_type,
+ { "Type", "lcp.opt.type", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_length,
+ { "Length", "lcp.opt.length", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_oui,
+ { "OUI", "lcp.opt.oui", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_kind,
+ { "Kind", "lcp.opt.kind", FT_UINT8, BASE_DEC_HEX,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_data,
+ { "Data", "lcp.opt.data", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_mru,
+ { "Maximum Receive Unit", "lcp.opt.mru", FT_UINT16, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap,
+ { "Async Control Character Map", "lcp.opt.asyncmap", FT_UINT32,
+ BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_nul,
+ { "NUL", "lcp.opt.asyncmap.nul", FT_BOOLEAN, 32,
+ NULL, 0x00000001, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_soh,
+ { "SOH", "lcp.opt.asyncmap.soh", FT_BOOLEAN, 32,
+ NULL, 0x00000002, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_stx,
+ { "STX", "lcp.opt.asyncmap.stx", FT_BOOLEAN, 32,
+ NULL, 0x00000004, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_etx,
+ { "ETX", "lcp.opt.asyncmap.etx", FT_BOOLEAN, 32,
+ NULL, 0x00000008, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_eot,
+ { "EOT", "lcp.opt.asyncmap.eot", FT_BOOLEAN, 32,
+ NULL, 0x00000010, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_enq,
+ { "ENQ", "lcp.opt.asyncmap.enq", FT_BOOLEAN, 32,
+ NULL, 0x00000020, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_ack,
+ { "ACK", "lcp.opt.asyncmap.ack", FT_BOOLEAN, 32,
+ NULL, 0x00000040, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_bel,
+ { "BEL", "lcp.opt.asyncmap.bel", FT_BOOLEAN, 32,
+ NULL, 0x00000080, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_bs,
+ { "BS", "lcp.opt.asyncmap.bs", FT_BOOLEAN, 32,
+ NULL, 0x00000100, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_ht,
+ { "HT", "lcp.opt.asyncmap.ht", FT_BOOLEAN, 32,
+ NULL, 0x00000200, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_lf,
+ { "LF", "lcp.opt.asyncmap.lf", FT_BOOLEAN, 32,
+ NULL, 0x00000400, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_vt,
+ { "VT", "lcp.opt.asyncmap.vt", FT_BOOLEAN, 32,
+ NULL, 0x00000800, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_ff,
+ { "FF", "lcp.opt.asyncmap.ff", FT_BOOLEAN, 32,
+ NULL, 0x00001000, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_cr,
+ { "CR", "lcp.opt.asyncmap.cr", FT_BOOLEAN, 32,
+ NULL, 0x00002000, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_so,
+ { "SO", "lcp.opt.asyncmap.so", FT_BOOLEAN, 32,
+ NULL, 0x00004000, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_si,
+ { "SI", "lcp.opt.asyncmap.si", FT_BOOLEAN, 32,
+ NULL, 0x00008000, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_dle,
+ { "DLE", "lcp.opt.asyncmap.dle", FT_BOOLEAN, 32,
+ NULL, 0x00010000, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_dc1,
+ { "DC1 (XON)", "lcp.opt.asyncmap.dc1", FT_BOOLEAN, 32,
+ NULL, 0x00020000, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_dc2,
+ { "DC2", "lcp.opt.asyncmap.dc2", FT_BOOLEAN, 32,
+ NULL, 0x00040000, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_dc3,
+ { "DC3 (XOFF)", "lcp.opt.asyncmap.dc3", FT_BOOLEAN, 32,
+ NULL, 0x00080000, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_dc4,
+ { "DC4", "lcp.opt.asyncmap.dc4", FT_BOOLEAN, 32,
+ NULL, 0x00100000, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_nak,
+ { "NAK", "lcp.opt.asyncmap.nak", FT_BOOLEAN, 32,
+ NULL, 0x00200000, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_syn,
+ { "SYN", "lcp.opt.asyncmap.syn", FT_BOOLEAN, 32,
+ NULL, 0x00400000, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_etb,
+ { "ETB", "lcp.opt.asyncmap.etb", FT_BOOLEAN, 32,
+ NULL, 0x00800000, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_can,
+ { "CAN", "lcp.opt.asyncmap.can", FT_BOOLEAN, 32,
+ NULL, 0x01000000, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_em,
+ { "EM", "lcp.opt.asyncmap.em", FT_BOOLEAN, 32,
+ NULL, 0x02000000, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_sub,
+ { "SUB", "lcp.opt.asyncmap.sub", FT_BOOLEAN, 32,
+ NULL, 0x04000000, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_esc,
+ { "ESC", "lcp.opt.asyncmap.esc", FT_BOOLEAN, 32,
+ NULL, 0x08000000, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_fs,
+ { "FS", "lcp.opt.asyncmap.fs", FT_BOOLEAN, 32,
+ NULL, 0x10000000, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_gs,
+ { "GS", "lcp.opt.asyncmap.gs", FT_BOOLEAN, 32,
+ NULL, 0x20000000, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_rs,
+ { "RS", "lcp.opt.asyncmap.rs", FT_BOOLEAN, 32,
+ NULL, 0x40000000, NULL, HFILL }},
+ { &hf_lcp_opt_asyncmap_us,
+ { "US", "lcp.opt.asyncmap.us", FT_BOOLEAN, 32,
+ NULL, 0x80000000, NULL, HFILL }},
+ { &hf_lcp_opt_auth_protocol,
+ { "Authentication Protocol", "lcp.opt.auth_protocol", FT_UINT16,
+ BASE_HEX | BASE_EXT_STRING, &ppp_vals_ext, 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_algorithm,
+ { "Algorithm", "lcp.opt.algorithm", FT_UINT8,
+ BASE_DEC | BASE_RANGE_STRING, &chap_alg_rvals,
+ 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_quality_protocol,
+ { "Quality Protocol", "lcp.opt.quality_protocol", FT_UINT16,
+ BASE_HEX | BASE_EXT_STRING, &ppp_vals_ext, 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_magic_number,
+ { "Magic Number", "lcp.opt.magic_number", FT_UINT32, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_reportingperiod,
+ { "Reporting Period", "lcp.opt.reporting_period", FT_UINT32,
+ BASE_DEC, NULL, 0x0,
+ "Maximum time in micro-seconds that the remote end should "
+ "wait between transmission of LCP Link-Quality-Report packets",
+ HFILL }},
+ { &hf_lcp_opt_fcs_alternatives,
+ { "FCS Alternatives", "lcp.opt.fcs_alternatives", FT_UINT8,
+ BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_fcs_alternatives_null,
+ { "NULL FCS", "lcp.opt.fcs_alternatives.null", FT_BOOLEAN, 8,
+ NULL, 0x01, NULL, HFILL }},
+ { &hf_lcp_opt_fcs_alternatives_ccitt16,
+ { "CCITT 16-bit", "lcp.opt.fcs_alternatives.ccitt16", FT_BOOLEAN,
+ 8, NULL, 0x02, NULL, HFILL }},
+ { &hf_lcp_opt_fcs_alternatives_ccitt32,
+ { "CCITT 32-bit", "lcp.opt.fcs_alternatives.ccitt32", FT_BOOLEAN,
+ 8, NULL, 0x04, NULL, HFILL }},
+ { &hf_lcp_opt_maximum,
+ { "Maximum", "lcp.opt.maximum", FT_UINT8, BASE_DEC, NULL, 0x0,
+ "The largest number of padding octets which may be added "
+ "to the frame.", HFILL }},
+ { &hf_lcp_opt_window,
+ { "Window", "lcp.opt.window", FT_UINT8, BASE_DEC, NULL, 0x0,
+ "The number of frames the receiver will buffer.", HFILL }},
+ { &hf_lcp_opt_hdlc_address,
+ { "Address", "lcp.opt.hdlc_address", FT_BYTES, BASE_NONE, NULL,
+ 0x0, "An HDLC Address as specified in ISO 3309.", HFILL }},
+ { &hf_lcp_opt_operation,
+ { "Operation", "lcp.opt.operation", FT_UINT8, BASE_DEC,
+ VALS(callback_op_vals), 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_message,
+ { "Message", "lcp.opt.message", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_mrru,
+ { "MRRU", "lcp.opt.mrru", FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Maximum Receive Reconstructed Unit", HFILL }},
+ { &hf_lcp_opt_ep_disc_class,
+ { "Class", "lcp.opt.ep_disc_class", FT_UINT8, BASE_DEC,
+ VALS(multilink_ep_disc_class_vals), 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_ip_address,
+ { "IP Address", "lcp.opt.ip_address", FT_IPv4, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_802_1_address,
+ { "IEEE 802.1 Address", "lcp.opt.802_1_address", FT_ETHER,
+ BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_magic_block,
+ { "PPP Magic-Number Block", "lcp.opt.magic_block", FT_BYTES,
+ BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_psndn,
+ { "Public Switched Network Directory Number", "lcp.opt.psndn",
+ FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_mode,
+ { "Mode", "lcp.opt.mode", FT_UINT8, BASE_DEC,
+ VALS(dce_id_mode_vals), 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_unused,
+ { "Unused", "lcp.opt.unused", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_link_discrim,
+ { "Link Discriminator", "lcp.opt.link_discrim", FT_UINT16,
+ BASE_DEC_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_id,
+ { "Identification", "lcp.opt.id", FT_UINT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_cobs_flags,
+ { "Flags", "lcp.opt.flags", FT_UINT8, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_cobs_flags_res,
+ { "Reserved", "lcp.opt.flags.reserved", FT_UINT8, BASE_HEX,
+ NULL, 0xFC, NULL, HFILL }},
+ { &hf_lcp_opt_cobs_flags_pre,
+ { "PRE", "lcp.opt.flags.pre", FT_BOOLEAN, 8,
+ NULL, 0x02, "Preemption", HFILL }},
+ { &hf_lcp_opt_cobs_flags_zxe,
+ { "ZXE", "lcp.opt.flags.zxe", FT_BOOLEAN, 8,
+ NULL, 0x01, "Zero pair/run elimination", HFILL }},
+ { &hf_lcp_opt_class,
+ { "Class", "lcp.opt.class", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_prefix,
+ { "Prefix", "lcp.opt.prefix", FT_UINT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_code,
+ { "Code", "lcp.opt.code", FT_UINT8, BASE_DEC,
+ VALS(ml_hdr_fmt_code_vals), 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_max_susp_classes,
+ { "Max suspendable classes", "lcp.opt.max_susp_classes",
+ FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
+ { &hf_lcp_opt_MIBenum,
+ { "MIBenum", "lcp.opt.MIBenum", FT_UINT32,
+ BASE_DEC | BASE_EXT_STRING, &charset_vals_ext, 0x0,
+ "A unique integer value identifying a charset", HFILL }},
+ { &hf_lcp_opt_language_tag,
+ { "Language-Tag", "lcp.opt.language_tag", FT_STRING, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }}
+ };
- proto_lcp = proto_register_protocol("PPP Link Control Protocol", "PPP LCP",
- "lcp");
- proto_register_subtree_array(ett, array_length(ett));
+ static gint *ett[] = {
+ &ett_lcp,
+ &ett_lcp_options,
+ &ett_lcp_vendor_opt,
+ &ett_lcp_mru_opt,
+ &ett_lcp_asyncmap_opt,
+ &ett_lcp_authprot_opt,
+ &ett_lcp_qualprot_opt,
+ &ett_lcp_magicnumber_opt,
+ &ett_lcp_linkqualmon_opt,
+ &ett_lcp_pcomp_opt,
+ &ett_lcp_acccomp_opt,
+ &ett_lcp_fcs_alternatives_opt,
+ &ett_lcp_self_desc_pad_opt,
+ &ett_lcp_numbered_mode_opt,
+ &ett_lcp_callback_opt,
+ &ett_lcp_compound_frames_opt,
+ &ett_lcp_nomdataencap_opt,
+ &ett_lcp_multilink_mrru_opt,
+ &ett_lcp_multilink_ssnh_opt,
+ &ett_lcp_multilink_ep_disc_opt,
+ &ett_lcp_magic_block,
+ &ett_lcp_dce_identifier_opt,
+ &ett_lcp_multilink_pp_opt,
+ &ett_lcp_bacp_link_discrim_opt,
+ &ett_lcp_auth_opt,
+ &ett_lcp_cobs_opt,
+ &ett_lcp_prefix_elision_opt,
+ &ett_multilink_hdr_fmt_opt,
+ &ett_lcp_internationalization_opt,
+ &ett_lcp_simple_opt
+ };
+
+ proto_lcp = proto_register_protocol("PPP Link Control Protocol", "PPP LCP",
+ "lcp");
+ proto_register_field_array(proto_lcp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_lcp(void)
{
- dissector_handle_t lcp_handle;
-
- lcp_handle = create_dissector_handle(dissect_lcp, proto_lcp);
- dissector_add_uint("ppp.protocol", PPP_LCP, lcp_handle);
+ dissector_handle_t lcp_handle;
- /*
- * NDISWAN on Windows translates Ethernet frames from higher-level
- * protocols into PPP frames to hand to the PPP driver, and translates
- * PPP frames from the PPP driver to hand to the higher-level protocols.
- *
- * Apparently the PPP driver, on at least some versions of Windows,
- * passes frames for internal-to-PPP protocols up through NDISWAN;
- * the protocol type field appears to be passed through unchanged
- * (unlike what's done with, for example, the protocol type field
- * for IP, which is mapped from its PPP value to its Ethernet value).
- *
- * This means that we may see, on Ethernet captures, frames for
- * protocols internal to PPP, so we register PPP_LCP with the
- * "ethertype" dissector table as well as the PPP protocol dissector
- * table.
- */
- dissector_add_uint("ethertype", PPP_LCP, lcp_handle);
+ lcp_handle = create_dissector_handle(dissect_lcp, proto_lcp);
+ dissector_add_uint("ppp.protocol", PPP_LCP, lcp_handle);
- /*
- * for GSM-A / MobileL3 / GPRS SM / PCO
- */
- dissector_add_uint("sm_pco.protocol", PPP_LCP, lcp_handle);
+ /*
+ * NDISWAN on Windows translates Ethernet frames from higher-level
+ * protocols into PPP frames to hand to the PPP driver, and translates
+ * PPP frames from the PPP driver to hand to the higher-level protocols.
+ *
+ * Apparently the PPP driver, on at least some versions of Windows,
+ * passes frames for internal-to-PPP protocols up through NDISWAN;
+ * the protocol type field appears to be passed through unchanged
+ * (unlike what's done with, for example, the protocol type field
+ * for IP, which is mapped from its PPP value to its Ethernet value).
+ *
+ * This means that we may see, on Ethernet captures, frames for
+ * protocols internal to PPP, so we register PPP_LCP with the
+ * "ethertype" dissector table as well as the PPP protocol dissector
+ * table.
+ */
+ dissector_add_uint("ethertype", PPP_LCP, lcp_handle);
+ /*
+ * for GSM-A / MobileL3 / GPRS SM / PCO
+ */
+ dissector_add_uint("sm_pco.protocol", PPP_LCP, lcp_handle);
}
void
proto_register_vsncp(void)
{
- static gint *ett[] = {
- &ett_vsncp,
- &ett_vsncp_options,
- };
+ static gint *ett[] = {
+ &ett_vsncp,
+ &ett_vsncp_options
+ };
- proto_vsncp = proto_register_protocol("Vendor Specific Control Protocol", "VSNCP",
- "vsncp");
- proto_register_subtree_array(ett, array_length(ett));
+ proto_vsncp = proto_register_protocol("Vendor Specific Control Protocol",
+ "VSNCP", "vsncp");
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_vsncp(void)
{
- dissector_handle_t vsncp_handle;
+ dissector_handle_t vsncp_handle;
- vsncp_handle = create_dissector_handle(dissect_vsncp, proto_vsncp);
- dissector_add_uint("ppp.protocol", PPP_VSNCP, vsncp_handle);
+ vsncp_handle = create_dissector_handle(dissect_vsncp, proto_vsncp);
+ dissector_add_uint("ppp.protocol", PPP_VSNCP, vsncp_handle);
}
void
proto_register_vsnp(void)
{
- static gint *ett[] = {
- &ett_vsnp,
- };
+ static gint *ett[] = {
+ &ett_vsnp
+ };
- static hf_register_info hf[] = {
- { &hf_vsnp_pdnid,
- { "PDN ID", "vsnp.pdnid",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- }
- };
+ static hf_register_info hf[] = {
+ { &hf_vsnp_pdnid,
+ { "PDN ID", "vsnp.pdnid", FT_UINT8, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }}
+ };
- proto_vsnp = proto_register_protocol("Vendor Specific Network Protocol", "PPP VSNP",
- "vsnp");
- proto_register_subtree_array(ett, array_length(ett));
- proto_register_field_array(proto_vsnp, hf, array_length(hf));
+ proto_vsnp = proto_register_protocol("Vendor Specific Network Protocol",
+ "PPP VSNP", "vsnp");
+ proto_register_subtree_array(ett, array_length(ett));
+ proto_register_field_array(proto_vsnp, hf, array_length(hf));
}
void
proto_reg_handoff_vsnp(void)
{
- dissector_handle_t vsnp_handle;
+ dissector_handle_t vsnp_handle;
- vsnp_handle = create_dissector_handle(dissect_vsnp, proto_vsnp);
- dissector_add_uint("ppp.protocol", PPP_VSNP, vsnp_handle);
+ vsnp_handle = create_dissector_handle(dissect_vsnp, proto_vsnp);
+ dissector_add_uint("ppp.protocol", PPP_VSNP, vsnp_handle);
}
void
proto_register_ipcp(void)
{
- static gint *ett[] = {
- &ett_ipcp,
- &ett_ipcp_options,
- &ett_ipcp_ipaddrs_opt,
- &ett_ipcp_compress_opt,
- };
+ static hf_register_info hf[] = {
+ { &hf_ipcp_opt_type,
+ { "Type", "ipcp.opt.type", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ipcp_opt_length,
+ { "Length", "ipcp.opt.length", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ipcp_opt_src_address,
+ { "Source IP Address", "ipcp.opt.src_address", FT_IPv4, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ipcp_opt_dst_address,
+ { "Destination IP Address", "ipcp.opt.dst_address", FT_IPv4,
+ BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_ipcp_opt_compress_proto,
+ { "IP Compression Protocol", "ipcp.opt.compress_proto", FT_UINT16,
+ BASE_HEX, VALS(ipcp_compress_proto_vals), 0x0, NULL, HFILL }},
+ { &hf_ipcp_opt_max_cid,
+ { "Max CID", "ipcp.opt.max_cid", FT_UINT16, BASE_DEC,
+ NULL, 0x0, "Maximum value of a context identifier", HFILL }},
+ { &hf_ipcp_opt_mrru,
+ { "MRRU", "ipcp.opt.mrru", FT_UINT16, BASE_DEC,
+ NULL, 0x0, "Maximum Reconstructed Reception Unit", HFILL }},
+ { &hf_ipcp_opt_max_slot_id,
+ { "Max Slot ID", "ipcp.opt.max_slot_id", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ipcp_opt_comp_slot_id,
+ { "Comp Slot ID", "ipcp.opt.comp_slot_id", FT_BOOLEAN, 8,
+ TFS(&tfs_comp_slot_id), 0x01, NULL, HFILL }},
+ { &hf_ipcp_opt_tcp_space,
+ { "TCP Space", "ipcp.opt.tcp_space", FT_UINT16, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ipcp_opt_non_tcp_space,
+ { "Non TCP Space", "ipcp.opt.non_tcp_space", FT_UINT16, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ipcp_opt_f_max_period,
+ { "F Max Period", "ipcp.opt.f_max_period", FT_UINT16, BASE_DEC,
+ NULL, 0x0, "Maximum interval between full headers", HFILL }},
+ { &hf_ipcp_opt_f_max_time,
+ { "F Max Time", "ipcp.opt.f_max_time", FT_UINT16, BASE_DEC, NULL,
+ 0x0, "Maximum time interval between full headers", HFILL }},
+ { &hf_ipcp_opt_max_header,
+ { "Max Header", "ipcp.opt.max_header", FT_UINT16, BASE_DEC, NULL,
+ 0x0,
+ "The largest header size in octets that may be compressed",
+ HFILL }},
+ { &hf_ipcp_data,
+ { "Data", "ipcp.data", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ipcp_opt_ip_address,
+ { "IP Address", "ipcp.opt.ip_address", FT_IPv4, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ipcp_opt_mobilenodehomeaddr,
+ { "Mobile Node's Home Address", "ipcp.opt.mobilenodehomeaddress",
+ FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_ipcp_opt_pri_dns_address,
+ { "Primary DNS Address", "ipcp.opt.pri_dns_address",
+ FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_ipcp_opt_pri_nbns_address,
+ { "Primary NBNS Address", "ipcp.opt.pri_nbns_address",
+ FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_ipcp_opt_sec_dns_address,
+ { "Secondary DNS Address", "ipcp.opt.sec_dns_address",
+ FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_ipcp_opt_sec_nbns_address,
+ { "Secondary NBNS Address", "ipcp.opt.sec_nbns_address",
+ FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_ipcp_opt_rohc_type,
+ { "Type", "ipcp.opt.rohc.type", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ipcp_opt_rohc_length,
+ { "Length", "ipcp.opt.rohc.length", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ipcp_opt_rohc_profile,
+ { "Profile", "ipcp.opt.rohc.profile", FT_UINT16, BASE_HEX,
+ VALS(ipcp_rohc_profile_vals), 0x0, NULL, HFILL }},
+ { &hf_ipcp_opt_iphc_type,
+ { "Type", "ipcp.opt.iphc.type", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ipcp_opt_iphc_length,
+ { "Length", "ipcp.opt.iphc.length", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ipcp_opt_iphc_param,
+ { "Parameter", "ipcp.opt.iphc.param", FT_UINT8, BASE_DEC,
+ VALS(ipcp_iphc_parameter_vals), 0x0, NULL, HFILL }}
+ };
+
+ static gint *ett[] = {
+ &ett_ipcp,
+ &ett_ipcp_options,
+ &ett_ipcp_ipaddrs_opt,
+ &ett_ipcp_compress_opt,
+ &ett_ipcp_ipaddr_opt,
+ &ett_ipcp_mobileipv4_opt,
+ &ett_ipcp_pridns_opt,
+ &ett_ipcp_secdns_opt,
+ &ett_ipcp_prinbns_opt,
+ &ett_ipcp_secnbns_opt,
+ &ett_ipcp_iphc_rtp_compress_opt,
+ &ett_ipcp_iphc_enhanced_rtp_compress_opt,
+ &ett_ipcp_iphc_neghdrcomp_opt,
+ &ett_ipcp_rohc_profiles_opt
+ };
- proto_ipcp = proto_register_protocol("PPP IP Control Protocol", "PPP IPCP",
- "ipcp");
- proto_register_subtree_array(ett, array_length(ett));
+ proto_ipcp = proto_register_protocol("PPP IP Control Protocol", "PPP IPCP",
+ "ipcp");
+ proto_register_field_array(proto_ipcp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_ipcp(void)
{
- dissector_handle_t ipcp_handle;
+ dissector_handle_t ipcp_handle;
- ipcp_handle = create_dissector_handle(dissect_ipcp, proto_ipcp);
- dissector_add_uint("ppp.protocol", PPP_IPCP, ipcp_handle);
+ ipcp_handle = create_dissector_handle(dissect_ipcp, proto_ipcp);
+ dissector_add_uint("ppp.protocol", PPP_IPCP, ipcp_handle);
- /*
- * See above comment about NDISWAN for an explanation of why we're
- * registering with the "ethertype" dissector table.
- */
- dissector_add_uint("ethertype", PPP_IPCP, ipcp_handle);
-
- /*
- * for GSM-A / MobileL3 / GPRS SM / PCO
- */
- dissector_add_uint("sm_pco.protocol", PPP_IPCP, ipcp_handle);
+ /*
+ * See above comment about NDISWAN for an explanation of why we're
+ * registering with the "ethertype" dissector table.
+ */
+ dissector_add_uint("ethertype", PPP_IPCP, ipcp_handle);
+ /*
+ * for GSM-A / MobileL3 / GPRS SM / PCO
+ */
+ dissector_add_uint("sm_pco.protocol", PPP_IPCP, ipcp_handle);
}
void
proto_register_bcp(void)
{
- static hf_register_info hf[] = {
- { &hf_bcp_flags,
- { "Flags", "bcp.flags", FT_UINT8, BASE_HEX,
- NULL, 0x0, NULL, HFILL }},
-
- { &hf_bcp_fcs_present,
- { "LAN FCS present", "bcp.flags.fcs_present", FT_BOOLEAN, 8,
- TFS(&tfs_yes_no), BCP_FCS_PRESENT, NULL, HFILL }},
-
- { &hf_bcp_zeropad,
- { "802.3 pad zero-filled", "bcp.flags.zeropad", FT_BOOLEAN, 8,
- TFS(&tfs_yes_no), BCP_ZEROPAD, NULL, HFILL }},
-
- { &hf_bcp_bcontrol,
- { "Bridge control", "bcp.flags.bcontrol", FT_BOOLEAN, 8,
- TFS(&tfs_yes_no), BCP_IS_BCONTROL, NULL, HFILL }},
-
- { &hf_bcp_pads,
- { "Pads", "bcp.pads", FT_UINT8, BASE_DEC,
- NULL, BCP_PADS_MASK, NULL, HFILL }},
-
- { &hf_bcp_mac_type,
- { "MAC Type", "bcp.mac_type", FT_UINT8, BASE_DEC,
- VALS(bcp_mac_type_vals), 0x0, NULL, HFILL }},
+ static hf_register_info hf[] = {
+ { &hf_bcp_flags,
+ { "Flags", "bcp.flags", FT_UINT8, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_bcp_fcs_present,
+ { "LAN FCS present", "bcp.flags.fcs_present", FT_BOOLEAN, 8,
+ TFS(&tfs_yes_no), BCP_FCS_PRESENT, NULL, HFILL }},
+ { &hf_bcp_zeropad,
+ { "802.3 pad zero-filled", "bcp.flags.zeropad", FT_BOOLEAN, 8,
+ TFS(&tfs_yes_no), BCP_ZEROPAD, NULL, HFILL }},
+ { &hf_bcp_bcontrol,
+ { "Bridge control", "bcp.flags.bcontrol", FT_BOOLEAN, 8,
+ TFS(&tfs_yes_no), BCP_IS_BCONTROL, NULL, HFILL }},
+ { &hf_bcp_pads,
+ { "Pads", "bcp.pads", FT_UINT8, BASE_DEC,
+ NULL, BCP_PADS_MASK, NULL, HFILL }},
+ { &hf_bcp_mac_type,
+ { "MAC Type", "bcp.mac_type", FT_UINT8, BASE_DEC,
+ VALS(bcp_mac_type_vals), 0x0, NULL, HFILL }}
+ };
- };
- static gint *ett[] = {
- &ett_bcp,
- &ett_bcp_flags
- };
+ static gint *ett[] = {
+ &ett_bcp,
+ &ett_bcp_flags
+ };
- proto_bcp = proto_register_protocol("PPP Bridging Control Protocol", "PPP BCP", "bcp");
- proto_register_field_array(proto_bcp, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ proto_bcp = proto_register_protocol("PPP Bridging Control Protocol",
+ "PPP BCP", "bcp");
+ proto_register_field_array(proto_bcp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
void
-proto_register_osicp(void)
+proto_register_osinlcp(void)
{
- static gint *ett[] = {
- &ett_osicp,
- &ett_osicp_options,
- &ett_osicp_align_npdu_opt,
- };
+ static hf_register_info hf[] = {
+ { &hf_osinlcp_opt_type,
+ { "Type", "osinlcp.opt.type", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_osinlcp_opt_length,
+ { "Length", "osinlcp.opt.length", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_osinlcp_opt_alignment,
+ { "Alignment", "osinlcp.opt.alignment", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }}
+ };
- proto_osicp = proto_register_protocol("PPP OSI Control Protocol", "PPP OSICP",
- "osicp");
- proto_register_subtree_array(ett, array_length(ett));
+ static gint *ett[] = {
+ &ett_osinlcp,
+ &ett_osinlcp_options,
+ &ett_osinlcp_align_npdu_opt
+ };
+
+ proto_osinlcp = proto_register_protocol(
+ "PPP OSI Network Layer Control Protocol", "PPP OSINLCP", "osinlcp");
+ proto_register_field_array(proto_osinlcp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_bcp(void)
{
- dissector_handle_t bcp_handle;
- eth_withfcs_handle = find_dissector("eth_withfcs");
- eth_withoutfcs_handle = find_dissector("eth_withoutfcs");
+ dissector_handle_t bcp_handle;
- bcp_handle = create_dissector_handle(dissect_bcp, proto_bcp);
- dissector_add_uint("ppp.protocol", PPP_BCP, bcp_handle);
+ eth_withfcs_handle = find_dissector("eth_withfcs");
+ eth_withoutfcs_handle = find_dissector("eth_withoutfcs");
+
+ bcp_handle = create_dissector_handle(dissect_bcp, proto_bcp);
+ dissector_add_uint("ppp.protocol", PPP_BCP, bcp_handle);
}
void
-proto_reg_handoff_osicp(void)
+proto_reg_handoff_osinlcp(void)
{
- dissector_handle_t osicp_handle;
+ dissector_handle_t osinlcp_handle;
- osicp_handle = create_dissector_handle(dissect_osicp, proto_osicp);
- dissector_add_uint("ppp.protocol", PPP_OSICP, osicp_handle);
+ osinlcp_handle = create_dissector_handle(dissect_osinlcp, proto_osinlcp);
+ dissector_add_uint("ppp.protocol", PPP_OSINLCP, osinlcp_handle);
- /*
- * See above comment about NDISWAN for an explanation of why we're
- * registering with the "ethertype" dissector table.
- */
- dissector_add_uint("ethertype", PPP_OSICP, osicp_handle);
+ /*
+ * See above comment about NDISWAN for an explanation of why we're
+ * registering with the "ethertype" dissector table.
+ */
+ dissector_add_uint("ethertype", PPP_OSINLCP, osinlcp_handle);
}
void
proto_register_ccp(void)
{
- static gint *ett[] = {
- &ett_ccp,
- &ett_ccp_options,
- &ett_ccp_stac_opt,
- &ett_ccp_mppc_opt,
- &ett_ccp_bsdcomp_opt,
- &ett_ccp_lzsdcp_opt,
- &ett_ccp_mvrca_opt,
- &ett_ccp_deflate_opt,
- };
+ static hf_register_info hf[] = {
+ { &hf_ccp_opt_type,
+ { "Type", "ccp.opt.type", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ccp_opt_length,
+ { "Length", "ccp.opt.length", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ccp_opt_oui,
+ { "OUI", "ccp.opt.oui", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ccp_opt_subtype,
+ { "Subtype", "ccp.opt.subtype", FT_UINT8, BASE_DEC_HEX,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ccp_opt_history_count,
+ { "History Count", "ccp.opt.history_count", FT_UINT16, BASE_DEC,
+ NULL, 0x0, "The maximum number of compression histories",
+ HFILL }},
+ { &hf_ccp_opt_cm,
+ { "Check Mode Field", "ccp.opt.cm", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ccp_opt_cm_reserved,
+ { "Reserved", "ccp.opt.cm.reserved", FT_UINT8, BASE_DEC,
+ NULL, 0xF8, NULL, HFILL }},
+ { &hf_ccp_opt_cm_check_mode,
+ { "Check Mode", "ccp.opt.cm.check_mode", FT_UINT8, BASE_DEC,
+ VALS(stac_checkmode_vals), 0x07, NULL, HFILL }},
+ { &hf_ccp_opt_supported_bits,
+ { "Supported Bits", "ccp.opt.supported_bits", FT_UINT32, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ccp_opt_supported_bits_h,
+ { "H", "ccp.opt.supported_bits.h", FT_BOOLEAN, 32,
+ TFS(&ccp_mppe_h_tfs), MPPE_SUPPORTED_BITS_H, NULL, HFILL }},
+ { &hf_ccp_opt_supported_bits_m,
+ { "M", "ccp.opt.supported_bits.m", FT_BOOLEAN, 32,
+ TFS(&ccp_mppe_m_tfs), MPPE_SUPPORTED_BITS_M, NULL, HFILL }},
+ { &hf_ccp_opt_supported_bits_s,
+ { "S", "ccp.opt.supported_bits.s", FT_BOOLEAN, 32,
+ TFS(&ccp_mppe_s_tfs), MPPE_SUPPORTED_BITS_S, NULL, HFILL }},
+ { &hf_ccp_opt_supported_bits_l,
+ { "L", "ccp.opt.supported_bits.l", FT_BOOLEAN, 32,
+ TFS(&ccp_mppe_l_tfs), MPPE_SUPPORTED_BITS_L, NULL, HFILL }},
+ { &hf_ccp_opt_supported_bits_d,
+ { "D", "ccp.opt.supported_bits.d", FT_BOOLEAN, 32,
+ TFS(&ccp_mppe_d_tfs), MPPE_SUPPORTED_BITS_D, NULL, HFILL }},
+ { &hf_ccp_opt_supported_bits_c,
+ { "C", "ccp.opt.supported_bits.c", FT_BOOLEAN, 32,
+ TFS(&ccp_mppe_c_tfs), MPPC_SUPPORTED_BITS_C, NULL, HFILL }},
+ { &hf_ccp_opt_history,
+ { "History", "ccp.opt.history", FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Maximum size of the compression history in powers of 2",
+ HFILL }},
+ { &hf_ccp_opt_version,
+ { "Version", "ccp.opt.version", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ccp_opt_vd,
+ { "Vers/Dict", "ccp.opt.vd", FT_UINT8, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ccp_opt_vd_vers,
+ { "Vers", "ccp.opt.vd.vers", FT_UINT8, BASE_DEC,
+ NULL, 0xE0, NULL, HFILL }},
+ { &hf_ccp_opt_vd_dict,
+ { "Dict", "ccp.opt.vd.dict", FT_UINT8, BASE_DEC, NULL,
+ 0x1F, "The size in bits of the largest code used", HFILL }},
+ { &hf_ccp_opt_check_mode,
+ { "Check Mode", "ccp.opt.check_mode", FT_UINT8, BASE_DEC,
+ VALS(&lzsdcp_checkmode_vals), 0x0, NULL, HFILL }},
+ { &hf_ccp_opt_process_mode,
+ { "Process Mode", "ccp.opt.process_mode", FT_UINT8, BASE_DEC,
+ VALS(&lzsdcp_processmode_vals), 0x0, NULL, HFILL }},
+ { &hf_ccp_opt_fe,
+ { "Features", "ccp.opt.fe", FT_UINT8, BASE_DEC,
+ NULL, 0xC0, NULL, HFILL }},
+ { &hf_ccp_opt_p,
+ { "Packet by Packet flag", "ccp.opt.p", FT_BOOLEAN, 8,
+ TFS(&tfs_enabled_disabled), 0x20, NULL, HFILL }},
+ { &hf_ccp_opt_History,
+ { "History", "ccp.opt.History", FT_UINT8, BASE_DEC,
+ NULL, 0x1F, NULL, HFILL }},
+ { &hf_ccp_opt_contexts,
+ { "# Contexts", "ccp.opt.contexts", FT_UINT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ccp_opt_mode,
+ { "Mode", "ccp.opt.mode", FT_UINT8, BASE_DEC,
+ VALS(&dce_mode_vals), 0x0, NULL, HFILL }},
+ { &hf_ccp_opt_window,
+ { "Window", "ccp.opt.window", FT_UINT8, BASE_DEC,
+ NULL, 0xF0, NULL, HFILL }},
+ { &hf_ccp_opt_method,
+ { "Method", "ccp.opt.method", FT_UINT8, BASE_DEC,
+ VALS(&deflate_method_vals), 0x0F, NULL, HFILL }},
+ { &hf_ccp_opt_mbz,
+ { "MBZ", "ccp.opt.mbz", FT_UINT8, BASE_DEC,
+ NULL, 0xFC, NULL, HFILL }},
+ { &hf_ccp_opt_chk,
+ { "Chk", "ccp.opt.chk", FT_UINT8, BASE_DEC,
+ VALS(&deflate_chk_vals), 0x03, NULL, HFILL }},
+ { &hf_ccp_opt_mode_dictcount,
+ { "Mode/Dictionary Count", "ccp.opt.mode_dictcount", FT_UINT16,
+ BASE_DEC | BASE_RANGE_STRING, RVALS(v44lzjh_mode_dict_rvals),
+ 0x0, NULL, HFILL }},
+ { &hf_ccp_opt_dict_size,
+ { "Dictionary Size", "ccp.opt.dict_size", FT_UINT16, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ccp_opt_history_length,
+ { "History Length", "ccp.opt.history_length", FT_UINT16, BASE_DEC,
+ NULL, 0x0, NULL, HFILL }},
+ { &hf_ccp_opt_data,
+ { "Data", "ccp.opt.data", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }},
+ };
+ static gint *ett[] = {
+ &ett_ccp,
+ &ett_ccp_options,
+ &ett_ccp_oui_opt,
+ &ett_ccp_predict1_opt,
+ &ett_ccp_predict2_opt,
+ &ett_ccp_puddle_opt,
+ &ett_ccp_hpppc_opt,
+ &ett_ccp_stac_opt,
+ &ett_ccp_stac_opt_check_mode,
+ &ett_ccp_mppe_opt,
+ &ett_ccp_mppe_opt_supp_bits,
+ &ett_ccp_gfza_opt,
+ &ett_ccp_v42bis_opt,
+ &ett_ccp_bsdcomp_opt,
+ &ett_ccp_lzsdcp_opt,
+ &ett_ccp_mvrca_opt,
+ &ett_ccp_dce_opt,
+ &ett_ccp_deflate_opt,
+ &ett_ccp_v44lzjh_opt
+ };
- proto_ccp = proto_register_protocol("PPP Compression Control Protocol",
- "PPP CCP", "ccp");
- proto_register_subtree_array(ett, array_length(ett));
+ proto_ccp = proto_register_protocol("PPP Compression Control Protocol",
+ "PPP CCP", "ccp");
+ proto_register_field_array(proto_ccp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_ccp(void)
{
- dissector_handle_t ccp_handle;
+ dissector_handle_t ccp_handle;
- ccp_handle = create_dissector_handle(dissect_ccp, proto_ccp);
- dissector_add_uint("ppp.protocol", PPP_CCP, ccp_handle);
+ ccp_handle = create_dissector_handle(dissect_ccp, proto_ccp);
+ dissector_add_uint("ppp.protocol", PPP_CCP, ccp_handle);
- /*
- * See above comment about NDISWAN for an explanation of why we're
- * registering with the "ethertype" dissector table.
- */
- dissector_add_uint("ethertype", PPP_CCP, ccp_handle);
+ /*
+ * See above comment about NDISWAN for an explanation of why we're
+ * registering with the "ethertype" dissector table.
+ */
+ dissector_add_uint("ethertype", PPP_CCP, ccp_handle);
}
void
proto_register_cbcp(void)
{
- static gint *ett[] = {
- &ett_cbcp,
- &ett_cbcp_options,
- &ett_cbcp_callback_opt,
- &ett_cbcp_callback_opt_addr
- };
+ static gint *ett[] = {
+ &ett_cbcp,
+ &ett_cbcp_options,
+ &ett_cbcp_callback_opt,
+ &ett_cbcp_callback_opt_addr
+ };
- proto_cbcp = proto_register_protocol("PPP Callback Control Protocol",
- "PPP CBCP", "cbcp");
- proto_register_subtree_array(ett, array_length(ett));
+ proto_cbcp = proto_register_protocol("PPP Callback Control Protocol",
+ "PPP CBCP", "cbcp");
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_cbcp(void)
{
- dissector_handle_t cbcp_handle;
+ dissector_handle_t cbcp_handle;
- cbcp_handle = create_dissector_handle(dissect_cbcp, proto_cbcp);
- dissector_add_uint("ppp.protocol", PPP_CBCP, cbcp_handle);
+ cbcp_handle = create_dissector_handle(dissect_cbcp, proto_cbcp);
+ dissector_add_uint("ppp.protocol", PPP_CBCP, cbcp_handle);
- /*
- * See above comment about NDISWAN for an explanation of why we're
- * registering with the "ethertype" dissector table.
- */
- dissector_add_uint("ethertype", PPP_CBCP, cbcp_handle);
+ /*
+ * See above comment about NDISWAN for an explanation of why we're
+ * registering with the "ethertype" dissector table.
+ */
+ dissector_add_uint("ethertype", PPP_CBCP, cbcp_handle);
}
void
proto_register_bacp(void)
{
- static gint *ett[] = {
- &ett_bacp,
- &ett_bacp_options,
- &ett_bacp_favored_peer_opt
- };
+ static gint *ett[] = {
+ &ett_bacp,
+ &ett_bacp_options,
+ &ett_bacp_favored_peer_opt
+ };
- proto_bacp = proto_register_protocol("PPP Bandwidth Allocation Control Protocol",
- "PPP BACP", "bacp");
- proto_register_subtree_array(ett, array_length(ett));
+ proto_bacp = proto_register_protocol(
+ "PPP Bandwidth Allocation Control Protocol", "PPP BACP", "bacp");
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_bacp(void)
{
- dissector_handle_t bacp_handle;
+ dissector_handle_t bacp_handle;
- bacp_handle = create_dissector_handle(dissect_bacp, proto_bacp);
- dissector_add_uint("ppp.protocol", PPP_BACP, bacp_handle);
+ bacp_handle = create_dissector_handle(dissect_bacp, proto_bacp);
+ dissector_add_uint("ppp.protocol", PPP_BACP, bacp_handle);
- /*
- * See above comment about NDISWAN for an explanation of why we're
- * registering with the "ethertype" dissector table.
- */
- dissector_add_uint("ethertype", PPP_BACP, bacp_handle);
+ /*
+ * See above comment about NDISWAN for an explanation of why we're
+ * registering with the "ethertype" dissector table.
+ */
+ dissector_add_uint("ethertype", PPP_BACP, bacp_handle);
}
void
proto_register_bap(void)
{
- static gint *ett[] = {
- &ett_bap,
- &ett_bap_options,
- &ett_bap_link_type_opt,
- &ett_bap_phone_delta_opt,
- &ett_bap_phone_delta_subopt,
- &ett_bap_call_status_opt
- };
+ static gint *ett[] = {
+ &ett_bap,
+ &ett_bap_options,
+ &ett_bap_link_type_opt,
+ &ett_bap_phone_delta_opt,
+ &ett_bap_phone_delta_subopt,
+ &ett_bap_call_status_opt
+ };
- proto_bap = proto_register_protocol("PPP Bandwidth Allocation Protocol",
- "PPP BAP", "bap");
- proto_register_subtree_array(ett, array_length(ett));
+ proto_bap = proto_register_protocol("PPP Bandwidth Allocation Protocol",
+ "PPP BAP", "bap");
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_bap(void)
{
- dissector_handle_t bap_handle;
+ dissector_handle_t bap_handle;
- bap_handle = create_dissector_handle(dissect_bap, proto_bap);
- dissector_add_uint("ppp.protocol", PPP_BAP, bap_handle);
+ bap_handle = create_dissector_handle(dissect_bap, proto_bap);
+ dissector_add_uint("ppp.protocol", PPP_BAP, bap_handle);
- /*
- * See above comment about NDISWAN for an explanation of why we're
- * registering with the "ethertype" dissector table.
- */
- dissector_add_uint("ethertype", PPP_BAP, bap_handle);
+ /*
+ * See above comment about NDISWAN for an explanation of why we're
+ * registering with the "ethertype" dissector table.
+ */
+ dissector_add_uint("ethertype", PPP_BAP, bap_handle);
}
void
proto_register_comp_data(void)
{
#if 0 /* See dissect_comp_data() */
- static gint *ett[] = {
- &ett_comp_data
- };
+ static gint *ett[] = {
+ &ett_comp_data
+ };
#endif
- proto_comp_data = proto_register_protocol("PPP Compressed Datagram",
- "PPP Comp", "comp_data");
+ proto_comp_data = proto_register_protocol("PPP Compressed Datagram",
+ "PPP Comp", "comp_data");
#if 0
- proto_register_subtree_array(ett, array_length(ett));
+ proto_register_subtree_array(ett, array_length(ett));
#endif
}
void
proto_reg_handoff_comp_data(void)
{
- dissector_handle_t comp_data_handle;
+ dissector_handle_t comp_data_handle;
- comp_data_handle = create_dissector_handle(dissect_comp_data,
- proto_comp_data);
- dissector_add_uint("ppp.protocol", PPP_COMP, comp_data_handle);
+ comp_data_handle = create_dissector_handle(dissect_comp_data,
+ proto_comp_data);
+ dissector_add_uint("ppp.protocol", PPP_COMP, comp_data_handle);
- /*
- * See above comment about NDISWAN for an explanation of why we're
- * registering with the "ethertype" dissector table.
- */
- dissector_add_uint("ethertype", PPP_COMP, comp_data_handle);
+ /*
+ * See above comment about NDISWAN for an explanation of why we're
+ * registering with the "ethertype" dissector table.
+ */
+ dissector_add_uint("ethertype", PPP_COMP, comp_data_handle);
}
void
proto_register_pap(void)
{
- static gint *ett[] = {
- &ett_pap,
- &ett_pap_data,
- };
-
- static hf_register_info hf[] = {
- { &hf_pap_code,
- { "Code", "pap.code",
- FT_UINT8, BASE_DEC, VALS(pap_vals), 0x0,
- "The Code field is one octet and identifies the type of PAP packet", HFILL }},
- { &hf_pap_identifier,
- { "Identifier", "pap.identifier",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "The Identifier field is one octet and aids in matching requests and replies.", HFILL }},
- { &hf_pap_length,
- { "Length", "pap.length",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "The Length field is two octets and indicates the length of the PAP packet", HFILL }},
- { &hf_pap_data,
- { "Data", "pap.data",
- FT_NONE, BASE_NONE, NULL, 0x0,
- "The format of the Data field is determined by the Code field", HFILL }},
- { &hf_pap_peer_id_length,
- { "Peer-ID-Length", "pap.peer_id.length",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "The Peer-ID-Length field is one octet and indicates the length of the Peer-ID field", HFILL }},
- { &hf_pap_peer_id,
- { "Peer-ID", "pap.peer_id",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The Peer-ID field is zero or more octets and indicates the name of the peer to be authenticated", HFILL }},
- { &hf_pap_password_length,
- { "Password-Length", "pap.password.length",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "The Password-Length field is one octet and indicates the length of the Password field", HFILL }},
- { &hf_pap_password,
- { "Password", "pap.password",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The Password field is zero or more octets and indicates the password to be used for authentication", HFILL }},
- { &hf_pap_message_length,
- { "Message-Length", "pap.message.length",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "The Message-Length field is one octet and indicates the length of the Message field", HFILL }},
- { &hf_pap_message,
- { "Message", "pap.message",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The Message field is zero or more octets, and its contents are implementation dependent.", HFILL }},
- { &hf_pap_stuff,
- { "stuff", "pap.stuff",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }}
- };
-
-
- proto_pap = proto_register_protocol("PPP Password Authentication Protocol", "PPP PAP",
- "pap");
- proto_register_field_array(proto_pap, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ static gint *ett[] = {
+ &ett_pap,
+ &ett_pap_data
+ };
+
+ static hf_register_info hf[] = {
+ { &hf_pap_code,
+ { "Code", "pap.code", FT_UINT8, BASE_DEC, VALS(pap_vals), 0x0,
+ "The Code field is one octet and identifies the type of PAP "
+ "packet", HFILL }},
+ { &hf_pap_identifier,
+ { "Identifier", "pap.identifier", FT_UINT8, BASE_DEC, NULL, 0x0,
+ "The Identifier field is one octet and aids in matching "
+ "requests and replies.", HFILL }},
+ { &hf_pap_length,
+ { "Length", "pap.length", FT_UINT16, BASE_DEC, NULL, 0x0,
+ "The Length field is two octets and indicates the length of "
+ "the PAP packet", HFILL }},
+ { &hf_pap_data,
+ { "Data", "pap.data", FT_NONE, BASE_NONE, NULL, 0x0,
+ "The format of the Data field is determined by the Code field",
+ HFILL }},
+ { &hf_pap_peer_id_length,
+ { "Peer-ID-Length", "pap.peer_id.length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "The Peer-ID-Length field is one octet and indicates the "
+ "length of the Peer-ID field", HFILL }},
+ { &hf_pap_peer_id,
+ { "Peer-ID", "pap.peer_id", FT_STRING, BASE_NONE, NULL, 0x0,
+ "The Peer-ID field is zero or more octets and indicates the "
+ "name of the peer to be authenticated", HFILL }},
+ { &hf_pap_password_length,
+ { "Password-Length", "pap.password.length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "The Password-Length field is one octet and indicates the "
+ "length of the Password field", HFILL }},
+ { &hf_pap_password,
+ { "Password", "pap.password", FT_STRING, BASE_NONE, NULL, 0x0,
+ "The Password field is zero or more octets and indicates the "
+ "password to be used for authentication", HFILL }},
+ { &hf_pap_message_length,
+ { "Message-Length", "pap.message.length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "The Message-Length field is one octet and indicates the "
+ "length of the Message field", HFILL }},
+ { &hf_pap_message,
+ { "Message", "pap.message", FT_STRING, BASE_NONE, NULL, 0x0,
+ "The Message field is zero or more octets, and its contents "
+ "are implementation dependent.", HFILL }},
+ { &hf_pap_stuff,
+ { "stuff", "pap.stuff", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL }}
+ };
+
+ proto_pap = proto_register_protocol("PPP Password Authentication Protocol",
+ "PPP PAP", "pap");
+ proto_register_field_array(proto_pap, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_pap(void)
{
- dissector_handle_t pap_handle;
+ dissector_handle_t pap_handle;
- pap_handle = create_dissector_handle(dissect_pap, proto_pap);
- dissector_add_uint("ppp.protocol", PPP_PAP, pap_handle);
+ pap_handle = create_dissector_handle(dissect_pap, proto_pap);
+ dissector_add_uint("ppp.protocol", PPP_PAP, pap_handle);
- /*
- * See above comment about NDISWAN for an explanation of why we're
- * registering with the "ethertype" dissector table.
- */
- dissector_add_uint("ethertype", PPP_PAP, pap_handle);
+ /*
+ * See above comment about NDISWAN for an explanation of why we're
+ * registering with the "ethertype" dissector table.
+ */
+ dissector_add_uint("ethertype", PPP_PAP, pap_handle);
- /*
- * for GSM-A / MobileL3 / GPRS SM / PCO
- */
- dissector_add_uint("sm_pco.protocol", PPP_PAP, pap_handle);
+ /*
+ * for GSM-A / MobileL3 / GPRS SM / PCO
+ */
+ dissector_add_uint("sm_pco.protocol", PPP_PAP, pap_handle);
}
void
proto_register_chap(void)
{
- static gint *ett[] = {
- &ett_chap,
- &ett_chap_data,
- };
+ static gint *ett[] = {
+ &ett_chap,
+ &ett_chap_data
+ };
- static hf_register_info hf[] =
- {
+ static hf_register_info hf[] = {
{ &hf_chap_code,
- { "Code", "chap.code",
- FT_UINT8, BASE_DEC, VALS(chap_vals), 0x0,
- "CHAP code", HFILL }
- },
+ { "Code", "chap.code", FT_UINT8, BASE_DEC, VALS(chap_vals), 0x0,
+ "CHAP code", HFILL }},
{ &hf_chap_identifier,
- { "Identifier", "chap.identifier",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "CHAP identifier", HFILL }
- },
+ { "Identifier", "chap.identifier", FT_UINT8, BASE_DEC, NULL, 0x0,
+ "CHAP identifier", HFILL }},
{ &hf_chap_length,
- { "Length", "chap.length",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "CHAP length", HFILL }
- },
+ { "Length", "chap.length", FT_UINT16, BASE_DEC, NULL, 0x0,
+ "CHAP length", HFILL }},
{ &hf_chap_data,
- { "Data", "chap.data",
- FT_NONE, BASE_NONE, NULL, 0x0,
- "CHAP Data", HFILL }
- },
+ { "Data", "chap.data", FT_NONE, BASE_NONE, NULL, 0x0,
+ "CHAP Data", HFILL }},
{ &hf_chap_value_size,
- { "Value Size", "chap.value_size",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "CHAP value size", HFILL }
- },
+ { "Value Size", "chap.value_size", FT_UINT8, BASE_DEC, NULL, 0x0,
+ "CHAP value size", HFILL }},
{ &hf_chap_value,
- { "Value", "chap.value",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- "CHAP value data", HFILL }
- },
+ { "Value", "chap.value", FT_BYTES, BASE_NONE, NULL, 0x0,
+ "CHAP value data", HFILL }},
{ &hf_chap_name,
- { "Name", "chap.name",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "CHAP name", HFILL }
- },
+ { "Name", "chap.name", FT_STRING, BASE_NONE, NULL, 0x0,
+ "CHAP name", HFILL }},
{ &hf_chap_message,
- { "Message", "chap.message",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "CHAP message", HFILL }
- }
- };
-
-
- proto_chap = proto_register_protocol("PPP Challenge Handshake Authentication Protocol", "PPP CHAP",
- "chap");
- proto_register_field_array(proto_chap, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ { "Message", "chap.message", FT_STRING, BASE_NONE, NULL, 0x0,
+ "CHAP message", HFILL }}
+ };
+
+ proto_chap = proto_register_protocol(
+ "PPP Challenge Handshake Authentication Protocol", "PPP CHAP", "chap");
+ proto_register_field_array(proto_chap, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_chap(void)
{
- dissector_handle_t chap_handle = create_dissector_handle(dissect_chap, proto_chap);
- dissector_add_uint("ppp.protocol", PPP_CHAP, chap_handle);
+ dissector_handle_t chap_handle = create_dissector_handle(dissect_chap,
+ proto_chap);
+ dissector_add_uint("ppp.protocol", PPP_CHAP, chap_handle);
- /*
- * See above comment about NDISWAN for an explanation of why we're
- * registering with the "ethertype" dissector table.
- */
- dissector_add_uint("ethertype", PPP_CHAP, chap_handle);
+ /*
+ * See above comment about NDISWAN for an explanation of why we're
+ * registering with the "ethertype" dissector table.
+ */
+ dissector_add_uint("ethertype", PPP_CHAP, chap_handle);
- /*
- * for GSM-A / MobileL3 / GPRS SM / PCO
- */
- dissector_add_uint("sm_pco.protocol", PPP_CHAP, chap_handle);
+ /*
+ * for GSM-A / MobileL3 / GPRS SM / PCO
+ */
+ dissector_add_uint("sm_pco.protocol", PPP_CHAP, chap_handle);
}
void
proto_register_pppmuxcp(void)
{
- static gint *ett[] = {
- &ett_pppmuxcp,
- &ett_pppmuxcp_options,
- };
+ static gint *ett[] = {
+ &ett_pppmuxcp,
+ &ett_pppmuxcp_options
+ };
- proto_pppmuxcp = proto_register_protocol("PPPMux Control Protocol",
- "PPP PPPMuxCP",
- "pppmuxcp");
- proto_register_subtree_array(ett, array_length(ett));
+ proto_pppmuxcp = proto_register_protocol("PPPMux Control Protocol",
+ "PPP PPPMuxCP", "pppmuxcp");
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_pppmuxcp(void)
{
- dissector_handle_t muxcp_handle;
+ dissector_handle_t muxcp_handle;
- muxcp_handle = create_dissector_handle(dissect_pppmuxcp, proto_pppmuxcp);
- dissector_add_uint("ppp.protocol", PPP_MUXCP, muxcp_handle);
+ muxcp_handle = create_dissector_handle(dissect_pppmuxcp, proto_pppmuxcp);
+ dissector_add_uint("ppp.protocol", PPP_MUXCP, muxcp_handle);
- /*
- * See above comment about NDISWAN for an explanation of why we're
- * registering with the "ethertype" dissector table.
- */
- dissector_add_uint("ethertype", PPP_MUXCP, muxcp_handle);
+ /*
+ * See above comment about NDISWAN for an explanation of why we're
+ * registering with the "ethertype" dissector table.
+ */
+ dissector_add_uint("ethertype", PPP_MUXCP, muxcp_handle);
}
void
proto_register_pppmux(void)
{
- static hf_register_info hf[] =
- {
- { &hf_pppmux_protocol,
- { "Protocol", "ppp.protocol", FT_UINT16, BASE_HEX|BASE_EXT_STRING,
- &ppp_vals_ext, 0x0,
- "The protocol of the sub-frame.", HFILL }},
+ static hf_register_info hf[] = {
+ { &hf_pppmux_protocol,
+ { "Protocol", "pppmux.protocol", FT_UINT16,
+ BASE_HEX|BASE_EXT_STRING, &ppp_vals_ext, 0x0,
+ "The protocol of the sub-frame.", HFILL }}
};
- static gint *ett[] = {
- &ett_pppmux,
- &ett_pppmux_subframe,
- &ett_pppmux_subframe_hdr,
- &ett_pppmux_subframe_flags,
- &ett_pppmux_subframe_info,
- };
+ static gint *ett[] = {
+ &ett_pppmux,
+ &ett_pppmux_subframe,
+ &ett_pppmux_subframe_hdr,
+ &ett_pppmux_subframe_flags,
+ &ett_pppmux_subframe_info
+ };
- proto_pppmux = proto_register_protocol("PPP Multiplexing",
- "PPP PPPMux",
- "pppmux");
- proto_register_field_array(proto_pppmux, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ proto_pppmux = proto_register_protocol("PPP Multiplexing", "PPP PPPMux",
+ "pppmux");
+ proto_register_field_array(proto_pppmux, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_pppmux(void)
{
- dissector_handle_t pppmux_handle;
+ dissector_handle_t pppmux_handle;
- pppmux_handle = create_dissector_handle(dissect_pppmux, proto_pppmux);
- dissector_add_uint("ppp.protocol", PPP_MUX, pppmux_handle);
+ pppmux_handle = create_dissector_handle(dissect_pppmux, proto_pppmux);
+ dissector_add_uint("ppp.protocol", PPP_MUX, pppmux_handle);
- /*
- * See above comment about NDISWAN for an explanation of why we're
- * registering with the "ethertype" dissector table.
- */
- dissector_add_uint("ethertype", PPP_MUX, pppmux_handle);
+ /*
+ * See above comment about NDISWAN for an explanation of why we're
+ * registering with the "ethertype" dissector table.
+ */
+ dissector_add_uint("ethertype", PPP_MUX, pppmux_handle);
}
void
proto_register_mplscp(void)
{
- static gint *ett[] = {
- &ett_mplscp,
- &ett_mplscp_options,
- };
+ static gint *ett[] = {
+ &ett_mplscp,
+ &ett_mplscp_options
+ };
- proto_mplscp = proto_register_protocol("PPP MPLS Control Protocol",
- "PPP MPLSCP", "mplscp");
- proto_register_subtree_array(ett, array_length(ett));
+ proto_mplscp = proto_register_protocol("PPP MPLS Control Protocol",
+ "PPP MPLSCP", "mplscp");
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_mplscp(void)
{
- dissector_handle_t mplscp_handle;
+ dissector_handle_t mplscp_handle;
- mplscp_handle = create_dissector_handle(dissect_mplscp, proto_mplscp);
- dissector_add_uint("ppp.protocol", PPP_MPLSCP, mplscp_handle);
+ mplscp_handle = create_dissector_handle(dissect_mplscp, proto_mplscp);
+ dissector_add_uint("ppp.protocol", PPP_MPLSCP, mplscp_handle);
- /*
- * See above comment about NDISWAN for an explanation of why we're
- * registering with the "ethertype" dissector table.
- */
- dissector_add_uint("ethertype", PPP_MPLSCP, mplscp_handle);
+ /*
+ * See above comment about NDISWAN for an explanation of why we're
+ * registering with the "ethertype" dissector table.
+ */
+ dissector_add_uint("ethertype", PPP_MPLSCP, mplscp_handle);
}
void
proto_register_cdpcp(void)
{
- static gint *ett[] = {
- &ett_cdpcp,
- &ett_cdpcp_options,
- };
+ static gint *ett[] = {
+ &ett_cdpcp,
+ &ett_cdpcp_options
+ };
- proto_cdpcp = proto_register_protocol("PPP CDP Control Protocol",
- "PPP CDPCP", "cdpcp");
- proto_register_subtree_array(ett, array_length(ett));
+ proto_cdpcp = proto_register_protocol("PPP CDP Control Protocol",
+ "PPP CDPCP", "cdpcp");
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_cdpcp(void)
{
- dissector_handle_t cdpcp_handle;
+ dissector_handle_t cdpcp_handle;
- cdpcp_handle = create_dissector_handle(dissect_cdpcp, proto_cdpcp);
- dissector_add_uint("ppp.protocol", PPP_CDPCP, cdpcp_handle);
+ cdpcp_handle = create_dissector_handle(dissect_cdpcp, proto_cdpcp);
+ dissector_add_uint("ppp.protocol", PPP_CDPCP, cdpcp_handle);
- /*
- * See above comment about NDISWAN for an explanation of why we're
- * registering with the "ethertype" dissector table.
- */
- dissector_add_uint("ethertype", PPP_CDPCP, cdpcp_handle);
+ /*
+ * See above comment about NDISWAN for an explanation of why we're
+ * registering with the "ethertype" dissector table.
+ */
+ dissector_add_uint("ethertype", PPP_CDPCP, cdpcp_handle);
}
void
proto_register_ipv6cp(void)
{
- static gint *ett[] = {
- &ett_ipv6cp,
- &ett_ipv6cp_options,
- &ett_ipv6cp_if_id_opt,
- &ett_ipv6cp_compress_opt,
- &ett_ipcp_iphc_disableprot_opt
- };
+ static gint *ett[] = {
+ &ett_ipv6cp,
+ &ett_ipv6cp_options,
+ &ett_ipv6cp_if_id_opt,
+ &ett_ipv6cp_compress_opt
+ };
- proto_ipv6cp = proto_register_protocol("PPP IPv6 Control Protocol",
- "PPP IPV6CP", "ipv6cp");
- proto_register_subtree_array(ett, array_length(ett));
+ proto_ipv6cp = proto_register_protocol("PPP IPv6 Control Protocol",
+ "PPP IPV6CP", "ipv6cp");
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_ipv6cp(void)
{
- dissector_handle_t ipv6cp_handle;
+ dissector_handle_t ipv6cp_handle;
- ipv6cp_handle = create_dissector_handle(dissect_ipv6cp, proto_ipv6cp);
- dissector_add_uint("ppp.protocol", PPP_IPV6CP, ipv6cp_handle);
+ ipv6cp_handle = create_dissector_handle(dissect_ipv6cp, proto_ipv6cp);
+ dissector_add_uint("ppp.protocol", PPP_IPV6CP, ipv6cp_handle);
- /*
- * See above comment about NDISWAN for an explanation of why we're
- * registering with the "ethertype" dissector table.
- */
- dissector_add_uint("ethertype", PPP_IPV6CP, ipv6cp_handle);
+ /*
+ * See above comment about NDISWAN for an explanation of why we're
+ * registering with the "ethertype" dissector table.
+ */
+ dissector_add_uint("ethertype", PPP_IPV6CP, ipv6cp_handle);
- /*
- * for GSM-A / MobileL3 / GPRS SM / PCO
- */
- dissector_add_uint("sm_pco.protocol", PPP_IPV6CP, ipv6cp_handle);
+ /*
+ * for GSM-A / MobileL3 / GPRS SM / PCO
+ */
+ dissector_add_uint("sm_pco.protocol", PPP_IPV6CP, ipv6cp_handle);
}
void
proto_register_iphc_crtp(void)
{
- static hf_register_info hf[] =
- {
+ static hf_register_info hf[] = {
{ &hf_iphc_crtp_cid16,
- { "Context Id", "crtp.cid",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "The context identifier of the compressed packet.", HFILL }
- },
+ { "Context Id", "crtp.cid", FT_UINT16, BASE_DEC, NULL, 0x0,
+ "The context identifier of the compressed packet.", HFILL }},
{ &hf_iphc_crtp_cid8,
- { "Context Id", "crtp.cid",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "The context identifier of the compressed packet.", HFILL }
- },
+ { "Context Id", "crtp.cid", FT_UINT8, BASE_DEC, NULL, 0x0,
+ "The context identifier of the compressed packet.", HFILL }},
{ &hf_iphc_crtp_gen,
- { "Generation", "crtp.gen",
- FT_UINT8, BASE_DEC, NULL, 0x3f,
- "The generation of the compressed packet.", HFILL }
- },
+ { "Generation", "crtp.gen", FT_UINT8, BASE_DEC, NULL, 0x3f,
+ "The generation of the compressed packet.", HFILL }},
{ &hf_iphc_crtp_seq,
- { "Sequence", "crtp.seq",
- FT_UINT8, BASE_DEC, NULL, 0x0f,
- "The sequence of the compressed packet.", HFILL }
- },
+ { "Sequence", "crtp.seq", FT_UINT8, BASE_DEC, NULL, 0x0f,
+ "The sequence of the compressed packet.", HFILL }},
{ &hf_iphc_crtp_fh_flags,
- { "Flags", "crtp.flags",
- FT_UINT8, BASE_HEX, iphc_crtp_fh_flags, 0xc0,
- "The flags of the full header packet.", HFILL }
- },
+ { "Flags", "crtp.fh_flags", FT_UINT8, BASE_HEX, iphc_crtp_fh_flags,
+ 0xc0, "The flags of the full header packet.", HFILL }},
{ &hf_iphc_crtp_cs_flags,
- { "Flags", "crtp.flags",
- FT_UINT8, BASE_DEC, iphc_crtp_cs_flags, 0x0,
- "The flags of the context state packet.", HFILL }
- },
+ { "Flags", "crtp.cs_flags", FT_UINT8, BASE_DEC, iphc_crtp_cs_flags,
+ 0x0, "The flags of the context state packet.", HFILL }},
{ &hf_iphc_crtp_cs_cnt,
- { "Count", "crtp.cnt",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "The count of the context state packet.", HFILL }
- },
+ { "Count", "crtp.cnt", FT_UINT8, BASE_DEC, NULL, 0x0,
+ "The count of the context state packet.", HFILL }},
{ &hf_iphc_crtp_cs_invalid,
- { "Invalid", "crtp.invalid",
- FT_BOOLEAN, 8, NULL, 0x80,
- "The invalid bit of the context state packet.", HFILL }
- },
+ { "Invalid", "crtp.invalid", FT_BOOLEAN, 8, NULL, 0x80,
+ "The invalid bit of the context state packet.", HFILL }}
+ };
+
+ static gint *ett[] = {
+ &ett_iphc_crtp,
+ &ett_iphc_crtp_hdr,
+ &ett_iphc_crtp_info
};
- static gint *ett[] = {
- &ett_iphc_crtp,
- &ett_iphc_crtp_hdr,
- &ett_iphc_crtp_info,
- };
-
- proto_iphc_crtp = proto_register_protocol("CRTP", "CRTP", "crtp");
- proto_register_field_array(proto_iphc_crtp, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ proto_iphc_crtp = proto_register_protocol("CRTP", "CRTP", "crtp");
+ proto_register_field_array(proto_iphc_crtp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_iphc_crtp(void)
{
- dissector_handle_t fh_handle;
- dissector_handle_t cudp16_handle;
- dissector_handle_t cudp8_handle;
- dissector_handle_t cs_handle;
+ dissector_handle_t fh_handle;
+ dissector_handle_t cudp16_handle;
+ dissector_handle_t cudp8_handle;
+ dissector_handle_t cs_handle;
- fh_handle = create_dissector_handle(dissect_iphc_crtp_fh, proto_iphc_crtp);
- dissector_add_uint("ppp.protocol", PPP_RTP_FH, fh_handle);
+ fh_handle = create_dissector_handle(dissect_iphc_crtp_fh, proto_iphc_crtp);
+ dissector_add_uint("ppp.protocol", PPP_RTP_FH, fh_handle);
- cudp16_handle = create_dissector_handle(dissect_iphc_crtp_cudp16, proto_iphc_crtp);
- dissector_add_uint("ppp.protocol", PPP_RTP_CUDP16, cudp16_handle);
+ cudp16_handle = create_dissector_handle(dissect_iphc_crtp_cudp16,
+ proto_iphc_crtp);
+ dissector_add_uint("ppp.protocol", PPP_RTP_CUDP16, cudp16_handle);
- cudp8_handle = create_dissector_handle(dissect_iphc_crtp_cudp8, proto_iphc_crtp);
- dissector_add_uint("ppp.protocol", PPP_RTP_CUDP8, cudp8_handle);
+ cudp8_handle = create_dissector_handle(dissect_iphc_crtp_cudp8,
+ proto_iphc_crtp);
+ dissector_add_uint("ppp.protocol", PPP_RTP_CUDP8, cudp8_handle);
- cs_handle = create_dissector_handle(dissect_iphc_crtp_cs, proto_iphc_crtp);
- dissector_add_uint("ppp.protocol", PPP_RTP_CS, cs_handle);
+ cs_handle = create_dissector_handle(dissect_iphc_crtp_cs, proto_iphc_crtp);
+ dissector_add_uint("ppp.protocol", PPP_RTP_CS, cs_handle);
- /*
- * See above comment about NDISWAN for an explanation of why we're
- * registering with the "ethertype" dissector table.
- */
- dissector_add_uint("ethertype", PPP_RTP_FH, fh_handle);
- dissector_add_uint("ethertype", PPP_RTP_CUDP16, cudp16_handle);
- dissector_add_uint("ethertype", PPP_RTP_CUDP8, cudp16_handle);
- dissector_add_uint("ethertype", PPP_RTP_CS, cs_handle);
+ /*
+ * See above comment about NDISWAN for an explanation of why we're
+ * registering with the "ethertype" dissector table.
+ */
+ dissector_add_uint("ethertype", PPP_RTP_FH, fh_handle);
+ dissector_add_uint("ethertype", PPP_RTP_CUDP16, cudp16_handle);
+ dissector_add_uint("ethertype", PPP_RTP_CUDP8, cudp16_handle);
+ dissector_add_uint("ethertype", PPP_RTP_CS, cs_handle);
}
+
+/*
+ * Editor modelines - http://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vi: set shiftwidth=4 tabstop=4 expandtab:
+ * :indentSize=4:tabSize=4:noTabs=true:
+ */
diff --git a/epan/dissectors/packet-pppoe.c b/epan/dissectors/packet-pppoe.c
index fe5ca8acfb..412a8d876e 100644
--- a/epan/dissectors/packet-pppoe.c
+++ b/epan/dissectors/packet-pppoe.c
@@ -305,13 +305,23 @@ const value_string datarate_scale_vals[] = {
};
-#define CASE_VSPEC_DSLF_TAG(tag_name, relation, length, hf_var) case tag_name: \
+#define CASE_VSPEC_DSLF_TAG_UINT(tag_name, relation, length, hf_var) case tag_name: \
if (!(poe_tag_length relation length)) { \
expert_add_info_format(pinfo, pppoe_tree, PI_MALFORMED, PI_WARN, "%s: Wrong length: %u (expected %s %d)", \
val_to_str(poe_tag, vspec_tag_vals, "Unknown"), poe_tag_length, #relation, length); \
} else { \
proto_tree_add_item(pppoe_tree, hf_var, tvb, \
- tagstart+2, poe_tag_length, FALSE); \
+ tagstart+2, poe_tag_length, ENC_BIG_ENDIAN); \
+ } \
+ break;
+
+#define CASE_VSPEC_DSLF_TAG_STRING(tag_name, relation, length, hf_var) case tag_name: \
+ if (!(poe_tag_length relation length)) { \
+ expert_add_info_format(pinfo, pppoe_tree, PI_MALFORMED, PI_WARN, "%s: Wrong length: %u (expected %s %d)", \
+ val_to_str(poe_tag, vspec_tag_vals, "Unknown"), poe_tag_length, #relation, length); \
+ } else { \
+ proto_tree_add_item(pppoe_tree, hf_var, tvb, \
+ tagstart+2, poe_tag_length, ENC_ASCII|ENC_NA); \
} \
break;
@@ -351,37 +361,37 @@ dissect_pppoe_subtags_dslf(tvbuff_t *tvb, packet_info *pinfo _U_, int offset, pr
/* Show tag data */
switch (poe_tag)
{
- CASE_VSPEC_DSLF_TAG(PPPOE_TAG_VSPEC_DSLF_CIRCUIT_ID, <=, 63,
+ CASE_VSPEC_DSLF_TAG_STRING(PPPOE_TAG_VSPEC_DSLF_CIRCUIT_ID, <=, 63,
hf_pppoed_tag_vspec_circuit_id)
- CASE_VSPEC_DSLF_TAG(PPPOE_TAG_VSPEC_DSLF_REMOTE_ID, <=, 63,
+ CASE_VSPEC_DSLF_TAG_STRING(PPPOE_TAG_VSPEC_DSLF_REMOTE_ID, <=, 63,
hf_pppoed_tag_vspec_remote_id)
- CASE_VSPEC_DSLF_TAG(PPPOE_TAG_VSPEC_DSLF_ACT_DATA_RATE_UP, ==, 4,
+ CASE_VSPEC_DSLF_TAG_UINT(PPPOE_TAG_VSPEC_DSLF_ACT_DATA_RATE_UP, ==, 4,
hf_pppoed_tag_vspec_act_data_rate_up)
- CASE_VSPEC_DSLF_TAG(PPPOE_TAG_VSPEC_DSLF_ACT_DATA_RATE_DOWN, ==, 4,
+ CASE_VSPEC_DSLF_TAG_UINT(PPPOE_TAG_VSPEC_DSLF_ACT_DATA_RATE_DOWN, ==, 4,
hf_pppoed_tag_vspec_act_data_rate_down)
- CASE_VSPEC_DSLF_TAG(PPPOE_TAG_VSPEC_DSLF_MIN_DATA_RATE_UP, ==, 4,
+ CASE_VSPEC_DSLF_TAG_UINT(PPPOE_TAG_VSPEC_DSLF_MIN_DATA_RATE_UP, ==, 4,
hf_pppoed_tag_vspec_min_data_rate_up)
- CASE_VSPEC_DSLF_TAG(PPPOE_TAG_VSPEC_DSLF_MIN_DATA_RATE_DOWN, ==, 4,
+ CASE_VSPEC_DSLF_TAG_UINT(PPPOE_TAG_VSPEC_DSLF_MIN_DATA_RATE_DOWN, ==, 4,
hf_pppoed_tag_vspec_min_data_rate_down)
- CASE_VSPEC_DSLF_TAG(PPPOE_TAG_VSPEC_DSLF_ATTAINABLE_DATA_RATE_UP, ==, 4,
+ CASE_VSPEC_DSLF_TAG_UINT(PPPOE_TAG_VSPEC_DSLF_ATTAINABLE_DATA_RATE_UP, ==, 4,
hf_pppoed_tag_vspec_attainable_data_rate_up)
- CASE_VSPEC_DSLF_TAG(PPPOE_TAG_VSPEC_DSLF_ATTAINABLE_DATA_RATE_DOWN, ==, 4,
+ CASE_VSPEC_DSLF_TAG_UINT(PPPOE_TAG_VSPEC_DSLF_ATTAINABLE_DATA_RATE_DOWN, ==, 4,
hf_pppoed_tag_vspec_attainable_data_rate_down)
- CASE_VSPEC_DSLF_TAG(PPPOE_TAG_VSPEC_DSLF_MAX_DATA_RATE_UP, ==, 4,
+ CASE_VSPEC_DSLF_TAG_UINT(PPPOE_TAG_VSPEC_DSLF_MAX_DATA_RATE_UP, ==, 4,
hf_pppoed_tag_vspec_max_data_rate_up)
- CASE_VSPEC_DSLF_TAG(PPPOE_TAG_VSPEC_DSLF_MAX_DATA_RATE_DOWN, ==, 4,
+ CASE_VSPEC_DSLF_TAG_UINT(PPPOE_TAG_VSPEC_DSLF_MAX_DATA_RATE_DOWN, ==, 4,
hf_pppoed_tag_vspec_max_data_rate_down)
- CASE_VSPEC_DSLF_TAG(PPPOE_TAG_VSPEC_DSLF_MIN_DATA_RATE_UP_LP, ==, 4,
+ CASE_VSPEC_DSLF_TAG_UINT(PPPOE_TAG_VSPEC_DSLF_MIN_DATA_RATE_UP_LP, ==, 4,
hf_pppoed_tag_vspec_min_data_rate_up_lp)
- CASE_VSPEC_DSLF_TAG(PPPOE_TAG_VSPEC_DSLF_MIN_DATA_RATE_DOWN_LP, ==, 4,
+ CASE_VSPEC_DSLF_TAG_UINT(PPPOE_TAG_VSPEC_DSLF_MIN_DATA_RATE_DOWN_LP, ==, 4,
hf_pppoed_tag_vspec_min_data_rate_down_lp)
- CASE_VSPEC_DSLF_TAG(PPPOE_TAG_VSPEC_DSLF_MAX_INT_DELAY_UP, ==, 4,
+ CASE_VSPEC_DSLF_TAG_UINT(PPPOE_TAG_VSPEC_DSLF_MAX_INT_DELAY_UP, ==, 4,
hf_pppoed_tag_vspec_max_int_delay_up)
- CASE_VSPEC_DSLF_TAG(PPPOE_TAG_VSPEC_DSLF_ACT_INT_DELAY_UP, ==, 4,
+ CASE_VSPEC_DSLF_TAG_UINT(PPPOE_TAG_VSPEC_DSLF_ACT_INT_DELAY_UP, ==, 4,
hf_pppoed_tag_vspec_act_int_delay_up)
- CASE_VSPEC_DSLF_TAG(PPPOE_TAG_VSPEC_DSLF_MAX_INT_DELAY_DOWN, ==, 4,
+ CASE_VSPEC_DSLF_TAG_UINT(PPPOE_TAG_VSPEC_DSLF_MAX_INT_DELAY_DOWN, ==, 4,
hf_pppoed_tag_vspec_max_int_delay_down)
- CASE_VSPEC_DSLF_TAG(PPPOE_TAG_VSPEC_DSLF_ACT_INT_DELAY_DOWN, ==, 4,
+ CASE_VSPEC_DSLF_TAG_UINT(PPPOE_TAG_VSPEC_DSLF_ACT_INT_DELAY_DOWN, ==, 4,
hf_pppoed_tag_vspec_act_int_delay_down)
case PPPOE_TAG_VSPEC_DSLF_ACCESS_LOOP_ENCAPSULATION:
ti = proto_tree_add_item(pppoe_tree, hf_pppoed_tag_vspec_access_loop_encapsulation, tvb,
diff --git a/epan/dissectors/packet-pptp.c b/epan/dissectors/packet-pptp.c
index 49cd3f8fd7..98b398a852 100644
--- a/epan/dissectors/packet-pptp.c
+++ b/epan/dissectors/packet-pptp.c
@@ -294,7 +294,7 @@ dissect_stop_req(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
proto_tree_add_item(tree, hf_pptp_reserved, tvb, offset, 1, ENC_NA);
offset += 1;
- proto_tree_add_item(tree, hf_pptp_reserved, tvb, offset, 2, ENC_NA);;
+ proto_tree_add_item(tree, hf_pptp_reserved, tvb, offset, 2, ENC_NA);
}
static void
@@ -308,7 +308,7 @@ dissect_stop_reply(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
proto_tree_add_item(tree, hf_pptp_error, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
- proto_tree_add_item(tree, hf_pptp_reserved, tvb, offset, 2, ENC_NA);;
+ proto_tree_add_item(tree, hf_pptp_reserved, tvb, offset, 2, ENC_NA);
}
@@ -316,7 +316,7 @@ static void
dissect_echo_req(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
proto_tree *tree)
{
- proto_tree_add_item(tree, hf_pptp_identifier, tvb, offset, 4, ENC_BIG_ENDIAN);;
+ proto_tree_add_item(tree, hf_pptp_identifier, tvb, offset, 4, ENC_BIG_ENDIAN);
}
static void
diff --git a/epan/dissectors/packet-pres.c b/epan/dissectors/packet-pres.c
index 0e09fee4d9..d5a15671f4 100644
--- a/epan/dissectors/packet-pres.c
+++ b/epan/dissectors/packet-pres.c
@@ -1866,7 +1866,7 @@ void proto_register_pres(void) {
NULL, HFILL }},
/*--- End of included file: packet-pres-hfarr.c ---*/
-#line 403 "../../asn1/pres/packet-pres-template.c"
+#line 400 "../../asn1/pres/packet-pres-template.c"
};
/* List of subtrees */
@@ -1913,7 +1913,7 @@ void proto_register_pres(void) {
&ett_pres_UD_type,
/*--- End of included file: packet-pres-ettarr.c ---*/
-#line 409 "../../asn1/pres/packet-pres-template.c"
+#line 406 "../../asn1/pres/packet-pres-template.c"
};
static uat_field_t users_flds[] = {
diff --git a/epan/dissectors/packet-ptp.c b/epan/dissectors/packet-ptp.c
index a02090c191..29a05c9a7f 100644
--- a/epan/dissectors/packet-ptp.c
+++ b/epan/dissectors/packet-ptp.c
@@ -45,10 +45,8 @@
# include "config.h"
#endif
-#include <stdlib.h>
#include <math.h>
-
#include <glib.h>
#include <epan/packet.h>
@@ -3927,12 +3925,12 @@ proto_register_ptp(void)
NULL, HFILL }
},
{ &hf_ptp_fu_preciseorigintimestamp,
- { "preciseOriginTimestamp", "ptp.fu.hf_ptp_fu_preciseorigintimestamp",
+ { "preciseOriginTimestamp", "ptp.fu.preciseorigintimestamp",
FT_RELATIVE_TIME, BASE_NONE, NULL, 0x00,
NULL, HFILL }
},
{ &hf_ptp_fu_preciseorigintimestamp_seconds,
- { "preciseOriginTimestamp (seconds)", "ptp.fu.hf_ptp_fu_preciseorigintimestamp_seconds",
+ { "preciseOriginTimestamp (seconds)", "ptp.fu.preciseorigintimestamp_seconds",
FT_UINT32, BASE_DEC, NULL, 0x00,
NULL, HFILL }
},
diff --git a/epan/dissectors/packet-pvfs2.c b/epan/dissectors/packet-pvfs2.c
index 9642c92749..13ad273497 100644
--- a/epan/dissectors/packet-pvfs2.c
+++ b/epan/dissectors/packet-pvfs2.c
@@ -35,7 +35,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
#include <string.h>
#include <ctype.h>
@@ -1577,7 +1576,7 @@ dissect_pvfs2_io_request(tvbuff_t *tvb, proto_tree *tree, int offset,
/* */
offset += 4;
- offset = dissect_pvfs_pint_request(tvb, tree, offset);
+ /*offset = */dissect_pvfs_pint_request(tvb, tree, offset);
/* TODO: remove this!!! */
offset = tvb_length(tvb) - 16;
@@ -3206,7 +3205,7 @@ dissect_pvfs_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree,
if (mode == TCP_MODE_UNEXP)
{
/* Request */
- offset = dissect_pvfs2_request(tvb, pvfs_tree, offset, pinfo, server_op);
+ /*offset = */dissect_pvfs2_request(tvb, pvfs_tree, offset, pinfo, server_op);
}
else
{
@@ -3225,7 +3224,7 @@ dissect_pvfs_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree,
#endif
{
/* Response */
- offset = dissect_pvfs2_response(tvb, pvfs_tree, offset, pinfo,
+ /*offset = */dissect_pvfs2_response(tvb, pvfs_tree, offset, pinfo,
server_op);
}
}
diff --git a/epan/dissectors/packet-pw-atm.c b/epan/dissectors/packet-pw-atm.c
index 6682ba7f64..038d7c27bf 100644
--- a/epan/dissectors/packet-pw-atm.c
+++ b/epan/dissectors/packet-pw-atm.c
@@ -144,46 +144,46 @@ static dissector_handle_t dh_data;
}\
while(0)
-#define SIZEOF_ATM_CELL_PAYLOAD 48
-#define SIZEOF_N1_PW_CELL_HEADER 4
-#define SIZEOF_11_VCC_PW_CELL_HEADER 1
-#define SIZEOF_11_VPC_PW_CELL_HEADER 3
+#define SIZEOF_ATM_CELL_PAYLOAD 48
+#define SIZEOF_N1_PW_CELL_HEADER 4
+#define SIZEOF_11_VCC_PW_CELL_HEADER 1
+#define SIZEOF_11_VPC_PW_CELL_HEADER 3
#define SIZEOF_N1_PW_CELL (SIZEOF_ATM_CELL_PAYLOAD+SIZEOF_N1_PW_CELL_HEADER)
#define SIZEOF_11_VCC_PW_CELL (SIZEOF_ATM_CELL_PAYLOAD+SIZEOF_11_VCC_PW_CELL_HEADER)
#define SIZEOF_11_VPC_PW_CELL (SIZEOF_ATM_CELL_PAYLOAD+SIZEOF_11_VPC_PW_CELL_HEADER)
-const char pwc_longname_pw_atm_n1_cw[] = "MPLS PW ATM N-to-One encapsulation, with CW";
-const char pwc_longname_pw_atm_n1_nocw[] = "MPLS PW ATM N-to-One encapsulation, no CW";
+const char pwc_longname_pw_atm_n1_cw[] = "MPLS PW ATM N-to-One encapsulation, with CW";
+const char pwc_longname_pw_atm_n1_nocw[] = "MPLS PW ATM N-to-One encapsulation, no CW";
const char pwc_longname_pw_atm_11_or_aal5_pdu[] = "MPLS PW ATM One-to-One or AAL5 PDU encapsulation";
-const char pwc_longname_pw_atm_aal5_sdu[] = "MPLS PW ATM AAL5 CPCS-SDU mode encapsulation";
+const char pwc_longname_pw_atm_aal5_sdu[] = "MPLS PW ATM AAL5 CPCS-SDU mode encapsulation";
-static const char longname_pw_atm_11_vcc[] = "MPLS PW ATM One-to-One VCC Cell Transport";
-static const char longname_pw_atm_11_vpc[] = "MPLS PW ATM One-to-One VPC Cell Transport";
-static const char longname_pw_atm_aal5_pdu[] = "MPLS PW ATM AAL5 PDU encapsulation";
+static const char longname_pw_atm_11_vcc[] = "MPLS PW ATM One-to-One VCC Cell Transport";
+static const char longname_pw_atm_11_vpc[] = "MPLS PW ATM One-to-One VPC Cell Transport";
+static const char longname_pw_atm_aal5_pdu[] = "MPLS PW ATM AAL5 PDU encapsulation";
-static const char shortname_n1_cw[] = "MPLS PW ATM N:1 CW";
-static const char shortname_n1_nocw[] = "MPLS PW ATM N:1 no CW";
-static const char shortname_11_or_aal5_pdu[] = "MPLS PW ATM 1:1 / AAL5 PDU";
-static const char shortname_11_vpc[] = "MPLS PW ATM 1:1 VPC";
-static const char shortname_11_vcc[] = "MPLS PW ATM 1:1 VCC";
-static const char shortname_aal5_sdu[] = "MPLS PW ATM AAL5 SDU";
-static const char shortname_aal5_pdu[] = "MPLS PW ATM AAL5 PDU";
+static const char shortname_n1_cw[] = "MPLS PW ATM N:1 CW";
+static const char shortname_n1_nocw[] = "MPLS PW ATM N:1 no CW";
+static const char shortname_11_or_aal5_pdu[] = "MPLS PW ATM 1:1 / AAL5 PDU";
+static const char shortname_11_vpc[] = "MPLS PW ATM 1:1 VPC";
+static const char shortname_11_vcc[] = "MPLS PW ATM 1:1 VCC";
+static const char shortname_aal5_sdu[] = "MPLS PW ATM AAL5 SDU";
+static const char shortname_aal5_pdu[] = "MPLS PW ATM AAL5 PDU";
/*
* These options are needed to support Nokia AXE and stuff alike.
* Note that these options will affect PW type auto-guessing, if such heuristic
* implemented in the future.
*/
-static gboolean pref_n1_cw_allow_cw_length_nonzero = FALSE;
-static gboolean pref_n1_cw_extend_cw_length_with_rsvd = FALSE;
-static gboolean pref_aal5_sdu_allow_cw_length_nonzero = FALSE;
-static gboolean pref_aal5_sdu_extend_cw_length_with_rsvd= FALSE;
+static gboolean pref_n1_cw_allow_cw_length_nonzero = FALSE;
+static gboolean pref_n1_cw_extend_cw_length_with_rsvd = FALSE;
+static gboolean pref_aal5_sdu_allow_cw_length_nonzero = FALSE;
+static gboolean pref_aal5_sdu_extend_cw_length_with_rsvd = FALSE;
-static
-int pw_cell_size(const pwatm_mode_t mode, const pwatm_submode_t submode)
+static int
+pw_cell_size(const pwatm_mode_t mode, const pwatm_submode_t submode)
{
- switch(mode)
+ switch (mode)
{
case PWATM_MODE_N1_NOCW:
case PWATM_MODE_N1_CW:
@@ -211,10 +211,10 @@ int pw_cell_size(const pwatm_mode_t mode, const pwatm_submode_t submode)
}
}
-static
-int pw_cell_header_size(const pwatm_mode_t mode, const pwatm_submode_t submode)
+static int
+pw_cell_header_size(const pwatm_mode_t mode, const pwatm_submode_t submode)
{
- switch(mode)
+ switch (mode)
{
case PWATM_MODE_N1_NOCW:
case PWATM_MODE_N1_CW:
@@ -240,8 +240,8 @@ int pw_cell_header_size(const pwatm_mode_t mode, const pwatm_submode_t submode)
}
}
-static
-int number_of_cells(const pwatm_mode_t mode
+static int
+number_of_cells(const pwatm_mode_t mode
,const pwatm_submode_t submode
,const gint payload_size
,gint* const remainder_size)
@@ -250,22 +250,22 @@ int number_of_cells(const pwatm_mode_t mode
DISSECTOR_ASSERT(payload_size >= 0);
- switch(mode)
+ switch (mode)
{
case PWATM_MODE_N1_NOCW:
case PWATM_MODE_N1_CW:
case PWATM_MODE_11_VCC:
case PWATM_MODE_11_VPC:
case PWATM_MODE_AAL5_PDU:
- cells = payload_size / pw_cell_size(mode,submode);
- *remainder_size = payload_size - (cells * pw_cell_size(mode,submode));
+ cells = payload_size / pw_cell_size(mode, submode);
+ *remainder_size = payload_size - (cells * pw_cell_size(mode, submode));
return cells;
case PWATM_MODE_AAL5_SDU:
if (PWATM_SUBMODE_ADMIN_CELL == submode)
{
- cells = payload_size / pw_cell_size(mode,submode);
+ cells = payload_size / pw_cell_size(mode, submode);
if (cells > 1) cells = 1; /*max. 1 admin cell may be present in aal5 sdu mode */
- *remainder_size = payload_size - (cells * pw_cell_size(mode,submode));
+ *remainder_size = payload_size - (cells * pw_cell_size(mode, submode));
return cells;
}
else
@@ -282,13 +282,14 @@ int number_of_cells(const pwatm_mode_t mode
}
-static
-void col_append_pw_info(packet_info * pinfo
+static void
+col_append_pw_info(packet_info * pinfo
,const int payload_size
,const int cells
,const int padding_size)
{
- pwatm_private_data_t* pd;
+ pwatm_private_data_t * pd;
+
DISSECTOR_ASSERT(pinfo != NULL);
pd = pinfo->private_data;
@@ -308,7 +309,7 @@ void col_append_pw_info(packet_info * pinfo
col_append_str(pinfo->cinfo, COL_INFO, "Payload size:Bad, ");
col_append_fstr(pinfo->cinfo, COL_INFO, "%d byte%s"
,(int)payload_size
- ,plurality(payload_size,"","s"));
+ ,plurality(payload_size, "", "s"));
}
if (pd->props == 0) /*omit "atm cells" etc if something is wrong*/
@@ -317,7 +318,7 @@ void col_append_pw_info(packet_info * pinfo
if (cells >=0)
col_append_fstr(pinfo->cinfo, COL_INFO, "%d ATM cell%s"
,cells
- ,plurality(cells,"","s"));
+ ,plurality(cells, "", "s"));
/*
* Display ATM-specific attributes which are the same
* across all the cells in the pw packet.
@@ -344,8 +345,8 @@ void col_append_pw_info(packet_info * pinfo
}
-static
-void prepare_pseudo_header_atm(
+static void
+prepare_pseudo_header_atm(
union wtap_pseudo_header * const ph,
const pwatm_private_data_t * const pdata,
const unsigned aal)
@@ -353,7 +354,7 @@ void prepare_pseudo_header_atm(
DISSECTOR_ASSERT(NULL != pdata);
DISSECTOR_ASSERT(NULL != ph);
- memset(ph,0,sizeof(*ph)); /* it is OK to clear unknown values */
+ memset(ph, 0 , sizeof(*ph)); /* it is OK to clear unknown values */
ph->atm.flags = 0; /* status flags */
ph->atm.aal = aal;
ph->atm.type = TRAF_UNKNOWN;
@@ -375,17 +376,17 @@ void prepare_pseudo_header_atm(
}
-static
-void dissect_payload_and_padding(
- tvbuff_t * tvb
+static void
+dissect_payload_and_padding(
+ tvbuff_t * tvb
,packet_info * pinfo
- ,proto_tree * tree
- ,const gint payload_size
- ,const gint padding_size)
+ ,proto_tree * tree
+ ,const gint payload_size
+ ,const gint padding_size)
{
- int dissected;
- tvbuff_t* tvb_2;
- pwatm_private_data_t* pd;
+ int dissected;
+ tvbuff_t * tvb_2;
+ pwatm_private_data_t * pd;
DISSECTOR_ASSERT(NULL != pinfo);
pd = pinfo->private_data;
@@ -395,15 +396,15 @@ void dissect_payload_and_padding(
payload_size > dissected;
++(pd->pw_cell_number))
{
- tvb_2 = tvb_new_subset_remaining(tvb,dissected);
+ tvb_2 = tvb_new_subset_remaining(tvb, dissected);
dissected += call_dissector(dh_cell_header, tvb_2, pinfo, tree);
- tvb_2 = tvb_new_subset_remaining(tvb,dissected);
+ tvb_2 = tvb_new_subset_remaining(tvb, dissected);
/*dissect as oam for specific vci/pti, just like atm dissector does*/
- if (pd->vci >= 0 && pd->pti >=0)
+ if ((pd->vci >= 0) && (pd->pti >=0))
{
- if (atm_is_oam_cell(pd->vci,pd->pti))
+ if (atm_is_oam_cell(pd->vci, pd->pti))
{
pd->cell_mode_oam = TRUE;
}
@@ -411,8 +412,8 @@ void dissect_payload_and_padding(
if (pd->cell_mode_oam)
{
- union wtap_pseudo_header* pseudo_header_save;
- union wtap_pseudo_header ph;
+ union wtap_pseudo_header * pseudo_header_save;
+ union wtap_pseudo_header ph;
tvbuff_t* tvb_3;
int bytes_to_dissect;
/* prepare buffer for old-style dissector */
@@ -421,16 +422,16 @@ void dissect_payload_and_padding(
bytes_to_dissect = SIZEOF_ATM_CELL_PAYLOAD;
else
bytes_to_dissect = (payload_size - dissected);
- tvb_3 = tvb_new_subset(tvb_2,0,bytes_to_dissect,-1);
+ tvb_3 = tvb_new_subset(tvb_2, 0, bytes_to_dissect, -1);
/*aal5_sdu: disable filling columns after 1st (valid) oam cell*/
- if (pd->mode == PWATM_MODE_AAL5_SDU && pd->pw_cell_number > 0)
+ if (pd->mode == PWATM_MODE_AAL5_SDU && (pd->pw_cell_number > 0))
{
pd->enable_fill_columns_by_atm_dissector = FALSE;
}
/* save & prepare new pseudo header for atm aal5 decoding */
pseudo_header_save = pinfo->pseudo_header;
pinfo->pseudo_header = &ph;
- prepare_pseudo_header_atm(&ph,pd,AAL_OAMCELL);
+ prepare_pseudo_header_atm(&ph, pd, AAL_OAMCELL);
call_dissector(dh_atm_oam_cell, tvb_3, pinfo, tree);
dissected += bytes_to_dissect;
@@ -445,22 +446,19 @@ void dissect_payload_and_padding(
if (padding_size != 0)
{
- tvb_2 = tvb_new_subset(tvb
- ,(tvb_reported_length_remaining(tvb, 0) - padding_size)
- ,-1
- ,-1);
+ tvb_2 = tvb_new_subset_remaining(tvb, -padding_size);
call_dissector(dh_padding, tvb_2, pinfo, tree);
}
return;
}
-static
-gboolean too_small_packet_or_notpw(tvbuff_t * tvb
+static gboolean
+too_small_packet_or_notpw(tvbuff_t * tvb
,packet_info * pinfo
- ,proto_tree * tree
- ,const int proto_handler
- ,const char * const proto_name_column)
+ ,proto_tree * tree
+ ,const int proto_handler
+ ,const char * const proto_name_column)
{
gint packet_size;
packet_size = tvb_reported_length_remaining(tvb, 0);
@@ -471,9 +469,9 @@ gboolean too_small_packet_or_notpw(tvbuff_t * tvb
*/
if (packet_size < 4) /* 4 is smallest size which may be sensible (for PWACH dissector) */
{
- if (tree)
+ if (tree || pinfo->cinfo)
{
- proto_item *item;
+ proto_item * item;
item = proto_tree_add_item(tree, proto_handler, tvb, 0, -1, ENC_NA);
expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR,
"PW packet size (%d) is too small to carry sensible information"
@@ -503,19 +501,19 @@ gboolean too_small_packet_or_notpw(tvbuff_t * tvb
*
* This dissector is written according to the latter consideration.
*/
-static
-void dissect_11_or_aal5_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
+static void
+dissect_11_or_aal5_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
{
- const char *proto_name_column;
- const char *proto_name_tree = NULL;
- gint payload_size;
- int cells;
- pwatm_private_data_t pd = PWATM_PRIVATE_DATA_T_INITIALIZER;
- void * pd_save = pinfo->private_data;
- pinfo->private_data = &pd;
+ const char * proto_name_column;
+ const char * proto_name_tree = NULL;
+ gint payload_size;
+ int cells;
+ pwatm_private_data_t pd = PWATM_PRIVATE_DATA_T_INITIALIZER;
+ void * pd_save = pinfo->private_data;
+ pinfo->private_data = &pd;
proto_name_column = &shortname_11_or_aal5_pdu[0];
- if (too_small_packet_or_notpw(tvb,pinfo,tree,proto_11_or_aal5_pdu,proto_name_column))
+ if (too_small_packet_or_notpw(tvb, pinfo, tree, proto_11_or_aal5_pdu, proto_name_column))
{
return;
}
@@ -584,8 +582,8 @@ void dissect_11_or_aal5_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tr
{
gint bad_padding_size;
payload_size = pd.packet_size - (PWC_SIZEOF_CW-1);
- cells = number_of_cells(pd.mode,pd.submode,payload_size,&bad_padding_size);
- if (0 == cells || 0 != bad_padding_size)
+ cells = number_of_cells(pd.mode, pd.submode, payload_size, &bad_padding_size);
+ if ((0 == cells) || (0 != bad_padding_size))
{
pd.props |= PWC_PAY_SIZE_BAD;
}
@@ -594,9 +592,9 @@ void dissect_11_or_aal5_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tr
{ /*aal5_pdu mode*/
gint bad_padding_size;
payload_size = pd.packet_size - PWC_SIZEOF_CW;
- cells = number_of_cells(pd.mode,pd.submode,payload_size,&bad_padding_size);
+ cells = number_of_cells(pd.mode, pd.submode, payload_size, &bad_padding_size);
/* at least 1 cell must be present in the packet in this mode*/
- if (1 > cells || 0 != bad_padding_size)
+ if ((1 > cells) || (0 != bad_padding_size))
{
pd.props |= PWC_PAY_SIZE_BAD;
}
@@ -614,13 +612,13 @@ void dissect_11_or_aal5_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tr
}
}
- if (tree)
+ if (tree || pinfo->cinfo)
{
proto_item* item;
item = proto_tree_add_item(tree, proto_11_or_aal5_pdu, tvb, 0, -1, ENC_NA);
/*overwrite heading line*/
proto_item_set_text(item, proto_name_tree, 0/*-warn gcc 3.4.4*/);
- pwc_item_append_text_n_items(item,cells,"good ATM cell");
+ pwc_item_append_text_n_items(item, cells, "good ATM cell");
{
proto_tree* tree2;
tree2 = proto_item_add_subtree(item, ett_encaps);
@@ -644,11 +642,11 @@ void dissect_11_or_aal5_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tr
{
expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR
,"PW payload size (%d) must be <> 0 and multiple of %d"
- ,(int)payload_size,pw_cell_size(pd.mode,pd.submode));
- if (payload_size != 0 && MODE_11(pd.mode))
+ ,(int)payload_size, pw_cell_size(pd.mode, pd.submode));
+ if ((payload_size != 0) && MODE_11(pd.mode))
{
expert_add_info_format(pinfo, item, PI_MALFORMED, PI_NOTE,
- "PW ATM cell [%.3d] is broken",(int)cells);
+ "PW ATM cell [%.3d] is broken", (int)cells);
}
}
}
@@ -658,10 +656,10 @@ void dissect_11_or_aal5_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tr
tvb_2 = tvb_new_subset(tvb, 0, PWC_SIZEOF_CW, PWC_SIZEOF_CW);
call_dissector(dh_control_word, tvb_2, pinfo, tree);
- tvb_2 = tvb_new_subset(tvb, (PWC_SIZEOF_CW-1), -1, -1);
+ tvb_2 = tvb_new_subset_remaining(tvb, (PWC_SIZEOF_CW-1));
if (MODE_11(pd.mode))
{
- dissect_payload_and_padding(tvb_2,pinfo,tree,payload_size,0);
+ dissect_payload_and_padding(tvb_2, pinfo, tree, payload_size, 0);
}
else
{ /*aal5_pdu mode*/
@@ -675,7 +673,7 @@ void dissect_11_or_aal5_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tr
/* prepare pseudo header for atm aal5 decoding */
pseudo_header_save = pinfo->pseudo_header;
pinfo->pseudo_header = &ph;
- prepare_pseudo_header_atm(&ph,&pd,AAL_5);
+ prepare_pseudo_header_atm(&ph, &pd, AAL_5);
call_dissector(dh_atm_untruncated, tvb_3, pinfo, tree);
/* restore pseudo header */
pinfo->pseudo_header = pseudo_header_save;
@@ -699,21 +697,21 @@ void dissect_11_or_aal5_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tr
}
-static
-void dissect_aal5_sdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
+static void
+dissect_aal5_sdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
{
- const char *proto_name_column;
- gint payload_size;
- gint padding_size;
- int cells;
- pwatm_private_data_t pd = PWATM_PRIVATE_DATA_T_INITIALIZER;
- void * pd_save = pinfo->private_data;
+ const char * proto_name_column;
+ gint payload_size;
+ gint padding_size;
+ int cells;
+ pwatm_private_data_t pd = PWATM_PRIVATE_DATA_T_INITIALIZER;
+ void * pd_save = pinfo->private_data;
pinfo->private_data = &pd;
pd.mode = PWATM_MODE_AAL5_SDU;
proto_name_column = &shortname_aal5_sdu[0];
- if (too_small_packet_or_notpw(tvb,pinfo,tree,proto_aal5_sdu,proto_name_column))
+ if (too_small_packet_or_notpw(tvb, pinfo, tree, proto_aal5_sdu, proto_name_column))
{
return;
}
@@ -774,7 +772,7 @@ void dissect_aal5_sdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
/*keep initial assumptions*/
}
else if (!pref_aal5_sdu_allow_cw_length_nonzero
- && PWATM_SUBMODE_ADMIN_CELL == pd.submode)
+ && (PWATM_SUBMODE_ADMIN_CELL == pd.submode))
{
/*
* The "allow CW.Length != 0" option affects
@@ -822,9 +820,9 @@ void dissect_aal5_sdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
if (PWATM_SUBMODE_ADMIN_CELL == pd.submode)
{
gint bad_padding_size;
- cells = number_of_cells(pd.mode,pd.submode,payload_size,&bad_padding_size);
+ cells = number_of_cells(pd.mode, pd.submode, payload_size, &bad_padding_size);
/* only one atm admin cell is allowed in the packet in this mode*/
- if (1 != cells || 0 != bad_padding_size)
+ if ((1 != cells) || (0 != bad_padding_size))
{
pd.props |= PWC_PAY_SIZE_BAD;
}
@@ -852,7 +850,7 @@ void dissect_aal5_sdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
col_append_pw_info(pinfo, payload_size, cells, padding_size);
}
- if (tree)
+ if (tree || pinfo->cinfo)
{
proto_item* item;
item = proto_tree_add_item(tree, proto_aal5_sdu, tvb, 0, -1, ENC_NA);
@@ -867,10 +865,10 @@ void dissect_aal5_sdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
if (pd.props & PWC_PAY_SIZE_BAD)
{
DISSECTOR_ASSERT(PWATM_SUBMODE_ADMIN_CELL == pd.submode);
- expert_add_info_format(pinfo, item, PI_MALFORMED ,PI_ERROR
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR
,"In ATM admin cell mode,"
" PW payload size (%d) must be == %d (exactly 1 admin cell)"
- ,(int)payload_size,(int)SIZEOF_N1_PW_CELL);
+ ,(int)payload_size, (int)SIZEOF_N1_PW_CELL);
}
}
@@ -882,7 +880,7 @@ void dissect_aal5_sdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
tvb_2 = tvb_new_subset_remaining(tvb, PWC_SIZEOF_CW);
if (PWATM_SUBMODE_ADMIN_CELL == pd.submode)
{
- dissect_payload_and_padding(tvb_2,pinfo,tree,payload_size,padding_size);
+ dissect_payload_and_padding(tvb_2, pinfo, tree, payload_size, padding_size);
}
else /*AAL5 payload*/
{
@@ -896,7 +894,7 @@ void dissect_aal5_sdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
/* prepare pseudo header for atm aal5 decoding */
pseudo_header_save = pinfo->pseudo_header;
pinfo->pseudo_header = &ph;
- prepare_pseudo_header_atm(&ph,&pd,AAL_5);
+ prepare_pseudo_header_atm(&ph, &pd, AAL_5);
call_dissector(dh_atm_truncated, tvb_3, pinfo, tree); /* no PAD and trailer */
/* restore pseudo header */
pinfo->pseudo_header = pseudo_header_save;
@@ -915,21 +913,21 @@ void dissect_aal5_sdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
}
-static
-void dissect_n1_cw(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
+static void
+dissect_n1_cw(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
{
- const char *proto_name_column;
- gint payload_size;
- gint padding_size;
- int cells;
- pwatm_private_data_t pd = PWATM_PRIVATE_DATA_T_INITIALIZER;
- void * pd_save = pinfo->private_data;
+ const char * proto_name_column;
+ gint payload_size;
+ gint padding_size;
+ int cells;
+ pwatm_private_data_t pd = PWATM_PRIVATE_DATA_T_INITIALIZER;
+ void * pd_save = pinfo->private_data;
pinfo->private_data = &pd;
pd.mode = PWATM_MODE_N1_CW;
proto_name_column = &shortname_n1_cw[0];
- if (too_small_packet_or_notpw(tvb,pinfo,tree,proto_n1_cw,proto_name_column))
+ if (too_small_packet_or_notpw(tvb, pinfo, tree, proto_n1_cw, proto_name_column))
{
return;
}
@@ -1019,19 +1017,19 @@ void dissect_n1_cw(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
}
{
gint bad_padding_size;
- cells = number_of_cells(pd.mode,pd.submode,payload_size,&bad_padding_size);
- if (0 == cells || 0 != bad_padding_size)
+ cells = number_of_cells(pd.mode, pd.submode, payload_size, &bad_padding_size);
+ if ((0 == cells) || (0 != bad_padding_size))
{
pd.props |= PWC_PAY_SIZE_BAD;
}
}
}
- if (tree)
+ if (tree || pinfo->cinfo)
{
proto_item* item;
item = proto_tree_add_item(tree, proto_n1_cw, tvb, 0, -1, ENC_NA);
- pwc_item_append_text_n_items(item,cells,"good ATM cell");
+ pwc_item_append_text_n_items(item, cells, "good ATM cell");
{
proto_tree* tree2;
tree2 = proto_item_add_subtree(item, ett_encaps);
@@ -1048,12 +1046,12 @@ void dissect_n1_cw(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
if (payload_size != 0)
{
expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR,
- "PW ATM cell [%.3d] is broken",(int)cells);
+ "PW ATM cell [%.3d] is broken", (int)cells);
}
expert_add_info_format(pinfo, item, PI_MALFORMED
, (payload_size == 0) ? PI_ERROR : PI_NOTE
,"PW payload size (%d) must be <>0 and multiple of %d"
- ,(int)payload_size,(int)SIZEOF_N1_PW_CELL);
+ ,(int)payload_size, (int)SIZEOF_N1_PW_CELL);
}
}
@@ -1063,7 +1061,7 @@ void dissect_n1_cw(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
call_dissector(dh_control_word, tvb_2, pinfo, tree);
tvb_2 = tvb_new_subset_remaining(tvb, PWC_SIZEOF_CW);
- dissect_payload_and_padding(tvb_2,pinfo,tree,payload_size,padding_size);
+ dissect_payload_and_padding(tvb_2, pinfo, tree, payload_size, padding_size);
}
/* fill columns in Packet List */
@@ -1081,14 +1079,14 @@ void dissect_n1_cw(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
}
-static
-void dissect_n1_nocw(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
+static void
+dissect_n1_nocw(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
{
- const char *proto_name_column = &shortname_n1_nocw[0];
- gint payload_size;
- int cells;
- pwatm_private_data_t pd = PWATM_PRIVATE_DATA_T_INITIALIZER;
- void * pd_save = pinfo->private_data;
+ const char * proto_name_column = &shortname_n1_nocw[0];
+ gint payload_size;
+ int cells;
+ pwatm_private_data_t pd = PWATM_PRIVATE_DATA_T_INITIALIZER;
+ void * pd_save = pinfo->private_data;
pinfo->private_data = &pd;
pd.mode = PWATM_MODE_N1_NOCW;
@@ -1100,18 +1098,18 @@ void dissect_n1_nocw(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
payload_size = pd.packet_size;
{
gint bad_padding_size;
- cells = number_of_cells(pd.mode,pd.submode,pd.packet_size,&bad_padding_size);
- if (cells == 0 || bad_padding_size != 0)
+ cells = number_of_cells(pd.mode, pd.submode, pd.packet_size, &bad_padding_size);
+ if ((cells == 0) || (bad_padding_size != 0))
{
pd.props |= PWC_PAY_SIZE_BAD;
}
}
- if (tree)
+ if (tree || pinfo->cinfo)
{
proto_item* item;
item = proto_tree_add_item(tree, proto_n1_nocw, tvb, 0, -1, ENC_NA);
- pwc_item_append_text_n_items(item,cells,"ATM cell");
+ pwc_item_append_text_n_items(item, cells, "ATM cell");
{
proto_tree* tree2;
tree2 = proto_item_add_subtree(item, ett_encaps);
@@ -1128,16 +1126,16 @@ void dissect_n1_nocw(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
if (payload_size != 0)
{
expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR,
- "Last PW ATM cell [%.3d] is broken",(int)cells);
+ "Last PW ATM cell [%.3d] is broken", (int)cells);
}
expert_add_info_format(pinfo, item, PI_MALFORMED
, (payload_size == 0) ? PI_ERROR : PI_NOTE
,"PW payload size (%d) must be <>0 and multiple of %d"
- ,(int)payload_size,(int)SIZEOF_N1_PW_CELL);
+ ,(int)payload_size, (int)SIZEOF_N1_PW_CELL);
}
}
- dissect_payload_and_padding(tvb,pinfo,tree,payload_size,0);
+ dissect_payload_and_padding(tvb, pinfo, tree, payload_size, 0);
/* fill columns in Packet List */
/* overwrite everything written by sub-dissectors */
@@ -1154,8 +1152,8 @@ void dissect_n1_nocw(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
}
-static
-void proto_item_append_text_cwb3_fields(proto_item * item, const pwatm_private_data_t * const pd)
+static void
+proto_item_append_text_cwb3_fields(proto_item * item, const pwatm_private_data_t * const pd)
{
if (NULL == item) return;
DISSECTOR_ASSERT(NULL != pd);
@@ -1175,8 +1173,8 @@ void proto_item_append_text_cwb3_fields(proto_item * item, const pwatm_private_d
}
-static
-void dissect_control_word(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
+static void
+dissect_control_word(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
{
pwatm_private_data_t* pd;
pd = pinfo->private_data;
@@ -1191,7 +1189,7 @@ void dissect_control_word(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree
size = tvb_reported_length_remaining(tvb, 0);
if (size < PWC_SIZEOF_CW)
{
- if (tree)
+ if (tree || pinfo->cinfo)
{
proto_item *item;
item = proto_tree_add_item(tree, proto_control_word, tvb, 0, -1, ENC_NA);
@@ -1203,11 +1201,11 @@ void dissect_control_word(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree
}
}
- if (tree)
+ if (tree || pinfo->cinfo)
{
proto_item* item_top;
item_top = proto_tree_add_item(tree, proto_control_word, tvb, 0, -1, ENC_NA);
- pwc_item_append_cw(item_top,tvb_get_ntohl(tvb, 0),FALSE);
+ pwc_item_append_cw(item_top, tvb_get_ntohl(tvb, 0), FALSE);
{
proto_tree* tree2;
@@ -1260,9 +1258,9 @@ void dissect_control_word(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree
/* reserved bits */
if (MODE_11_OR_AAL5_PDU(pd->mode)
- || (MODE_N1(pd->mode) && !pref_n1_cw_extend_cw_length_with_rsvd)
+ || (MODE_N1(pd->mode) && !pref_n1_cw_extend_cw_length_with_rsvd)
/* for N:1 add RSV only if it is NOT used in length */
- || ((pd->mode == PWATM_MODE_AAL5_SDU) && !pref_aal5_sdu_extend_cw_length_with_rsvd)
+ || ((pd->mode == PWATM_MODE_AAL5_SDU) && !pref_aal5_sdu_extend_cw_length_with_rsvd)
/* for AAl5 SDU add RSV only if it is NOT used in length */)
{
if (MODE_11_OR_AAL5_PDU(pd->mode))
@@ -1289,7 +1287,7 @@ void dissect_control_word(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree
/* length */
if (MODE_N1(pd->mode)
- || (PWATM_MODE_AAL5_SDU == pd->mode))
+ || (PWATM_MODE_AAL5_SDU == pd->mode))
{
{
int hf_len = hf_pref_cw_len;
@@ -1342,7 +1340,7 @@ void dissect_control_word(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree
* no need to highlight item in the tree, therefore
* expert_add_info_format() is not used here.
*/
- item = proto_tree_add_text(tree2,tvb,3,1
+ item = proto_tree_add_text(tree2, tvb, 3, 1
,"ATM-specific byte of CW is fully dissected below as %s%s"
,(PWATM_MODE_11_VPC == pd->mode) ? "a part of " : ""
,"PW ATM Cell Header [000]");
@@ -1358,10 +1356,10 @@ void dissect_control_word(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree
if (PWATM_MODE_AAL5_PDU == pd->mode)
{
tvbuff_t* tvb_2;
- tvb_2 = tvb_new_subset(tvb, (PWC_SIZEOF_CW-1), -1, -1);
+ tvb_2 = tvb_new_subset_remaining(tvb, (PWC_SIZEOF_CW-1));
call_dissector(dh_cell_header, tvb_2, pinfo, tree2);
- proto_item_append_text(item_top,", ");
- proto_item_append_text_cwb3_fields(item_top,pd);
+ proto_item_append_text(item_top, ", ");
+ proto_item_append_text_cwb3_fields(item_top, pd);
}
}
}
@@ -1373,16 +1371,16 @@ void dissect_control_word(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree
/*
* This function is also used to dissect 3rd byte of CW in AAL5 PDU mode.
*/
-static
-int dissect_cell_header(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
+static int
+dissect_cell_header(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
{
pwatm_private_data_t * pd;
- gboolean is_enough_data;
- int dissect_size;
+ gboolean is_enough_data;
+ int dissect_size;
pd = pinfo->private_data;
DISSECTOR_ASSERT (NULL != pd);
- pd->vpi = pd->vci = pd->pti = -1;
+ pd->vpi = pd->vci = pd->pti = -1;
pd->cwb3.clp = pd->cwb3.m = pd->cwb3.v = pd->cwb3.rsv = pd->cwb3.u = pd->cwb3.e = -1;
if (PWATM_MODE_AAL5_PDU == pd->mode)
@@ -1403,7 +1401,7 @@ int dissect_cell_header(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
gint size;
size = tvb_reported_length_remaining(tvb, 0);
- if (size < pw_cell_header_size(pd->mode,pd->submode))
+ if (size < pw_cell_header_size(pd->mode, pd->submode))
{
is_enough_data = FALSE;
dissect_size = size;
@@ -1411,7 +1409,7 @@ int dissect_cell_header(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
else
{
is_enough_data = TRUE;
- dissect_size = pw_cell_header_size(pd->mode,pd->submode);
+ dissect_size = pw_cell_header_size(pd->mode, pd->submode);
}
}
@@ -1437,21 +1435,21 @@ int dissect_cell_header(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
tmp8 = (tvb_get_guint8(tvb, 3));
pd->pti = (tmp8 >> 1) & 0x07;
pd->cwb3.clp = (tmp8 >> 0) & 0x01;
- UPDATE_CUMULATIVE_VALUE(pd->cumulative.vpi,pd->vpi);
- UPDATE_CUMULATIVE_VALUE(pd->cumulative.vci,pd->vci);
- UPDATE_CUMULATIVE_VALUE(pd->cumulative.pti,pd->pti);
- UPDATE_CUMULATIVE_VALUE(pd->cumulative.clp,pd->cwb3.clp);
+ UPDATE_CUMULATIVE_VALUE(pd->cumulative.vpi, pd->vpi);
+ UPDATE_CUMULATIVE_VALUE(pd->cumulative.vci, pd->vci);
+ UPDATE_CUMULATIVE_VALUE(pd->cumulative.pti, pd->pti);
+ UPDATE_CUMULATIVE_VALUE(pd->cumulative.clp, pd->cwb3.clp);
/*
* OAM cell mode is always used for aal5_sdu/admin_cell mode,
* even if pti indicates user cell.
*/
pd->cell_mode_oam =
- (pd->mode == PWATM_MODE_AAL5_SDU && pd->submode == PWATM_SUBMODE_ADMIN_CELL)
+ ((pd->mode == PWATM_MODE_AAL5_SDU) && (pd->submode == PWATM_SUBMODE_ADMIN_CELL))
|| PTI_IS_ADMIN(pd->pti);
break;
case PWATM_MODE_11_VPC:
pd->vci = tvb_get_ntohs(tvb, 1);
- UPDATE_CUMULATIVE_VALUE(pd->cumulative.vci,pd->vci);
+ UPDATE_CUMULATIVE_VALUE(pd->cumulative.vci, pd->vci);
/*fallthrough*/
case PWATM_MODE_11_VCC:
tmp8 = (tvb_get_guint8(tvb, 0));
@@ -1460,8 +1458,8 @@ int dissect_cell_header(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
pd->cwb3.rsv = (tmp8 >> 4) & 0x3;
pd->pti = (tmp8 >> 1) & 0x7;
pd->cwb3.clp = (tmp8 >> 0) & 0x1;
- UPDATE_CUMULATIVE_VALUE(pd->cumulative.pti,pd->pti);
- UPDATE_CUMULATIVE_VALUE(pd->cumulative.clp,pd->cwb3.clp);
+ UPDATE_CUMULATIVE_VALUE(pd->cumulative.pti, pd->pti);
+ UPDATE_CUMULATIVE_VALUE(pd->cumulative.clp, pd->cwb3.clp);
/*
* OAM cell mode is possible if packet contains atm cell (m == 0).
*/
@@ -1475,7 +1473,7 @@ int dissect_cell_header(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
pd->cwb3.u = (tmp8 >> 2) & 0x1;
pd->cwb3.e = (tmp8 >> 1) & 0x1;
pd->cwb3.clp = (tmp8 >> 0) & 0x1;
- UPDATE_CUMULATIVE_VALUE(pd->cumulative.clp,pd->cwb3.clp);
+ UPDATE_CUMULATIVE_VALUE(pd->cumulative.clp, pd->cwb3.clp);
break;
default:
DISSECTOR_ASSERT_NOT_REACHED();
@@ -1483,7 +1481,7 @@ int dissect_cell_header(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
}
}
- if (tree)
+ if (tree || pinfo->cinfo)
{
proto_item* item;
@@ -1498,15 +1496,15 @@ int dissect_cell_header(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
}
else
{
- proto_item_append_text(item," [%.3d]",pd->pw_cell_number);
- proto_item_append_text(item,", ");
+ proto_item_append_text(item, " [%.3d]", pd->pw_cell_number);
+ proto_item_append_text(item, ", ");
if (pd->vpi >= 0)
proto_item_append_text(item, "VPI:%.4u ", (unsigned)(pd->vpi));
if (pd->vci >= 0)
proto_item_append_text(item, "VCI:%.5u ", (unsigned)(pd->vci));
if (pd->pti >= 0)
proto_item_append_text(item, "PTI:%.1u ", (unsigned)(pd->pti));
- proto_item_append_text_cwb3_fields(item,pd);
+ proto_item_append_text_cwb3_fields(item, pd);
}
{
@@ -1516,19 +1514,19 @@ int dissect_cell_header(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
{
proto_item* item2;
if (MODE_N1(pd->mode)
- || (pd->mode == PWATM_MODE_AAL5_SDU && pd->submode == PWATM_SUBMODE_ADMIN_CELL))
+ || ((pd->mode == PWATM_MODE_AAL5_SDU) && (pd->submode == PWATM_SUBMODE_ADMIN_CELL)))
{
proto_tree_add_uint(tree2, hf_cell_h_vpi, tvb, 0, 2, (unsigned)pd->vpi);
proto_tree_add_uint(tree2, hf_cell_h_vci, tvb, 1, 3, (unsigned)pd->vci);
item2 = proto_tree_add_item(tree2, hf_cell_h_pti, tvb, 3, 1, ENC_BIG_ENDIAN);
- if (NULL == match_strval(pd->pti,atm_pt_vals))
+ if (NULL == match_strval(pd->pti, atm_pt_vals))
{
expert_add_info_format(pinfo, item2, PI_UNDECODED, PI_WARN,
"Unknown value of PTI field (%d) in the ATM cell header",
pd->pti);
}
- else if (pd->mode == PWATM_MODE_AAL5_SDU && !PTI_IS_ADMIN(pd->pti))
+ else if ((pd->mode == PWATM_MODE_AAL5_SDU) && !PTI_IS_ADMIN(pd->pti))
{
expert_add_info_format(pinfo, item2, PI_MALFORMED, PI_ERROR,
"ATM admin cell is transerred;"
@@ -1586,7 +1584,7 @@ int dissect_cell_header(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
if (MODE_11(pd->mode))
{
item2 = proto_tree_add_item(tree2, hf_cell_h_pti, tvb, 0, 1, ENC_BIG_ENDIAN);
- if (NULL == match_strval(pd->pti,atm_pt_vals))
+ if (NULL == match_strval(pd->pti, atm_pt_vals))
{
expert_add_info_format(pinfo, item2, PI_UNDECODED, PI_WARN,
"Unknown value of PTI field (%d) in the atm-specific byte"
@@ -1625,11 +1623,11 @@ int dissect_cell_header(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
-static
-int dissect_cell(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
+static int
+dissect_cell(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
{
gboolean is_enough_data;
- int dissect_size;
+ int dissect_size;
{
gint size;
@@ -1650,7 +1648,7 @@ int dissect_cell(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
* NB: do not touch columns -- keep info from previous dissector
*/
- if (tree)
+ if (tree || pinfo->cinfo)
{
proto_item* item;
item = proto_tree_add_item(tree, proto_cell, tvb, 0, dissect_size, ENC_NA);
@@ -1659,10 +1657,10 @@ int dissect_cell(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
pd = pinfo->private_data;
if (NULL != pd)
{
- proto_item_append_text(item," [%.3d]",pd->pw_cell_number);
+ proto_item_append_text(item, " [%.3d]", pd->pw_cell_number);
}
}
- pwc_item_append_text_n_items(item,dissect_size,"byte");
+ pwc_item_append_text_n_items(item, dissect_size, "byte");
if (!is_enough_data)
{
expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR
@@ -1684,7 +1682,8 @@ int dissect_cell(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
}
-void proto_register_pw_atm_ata(void)
+void
+proto_register_pw_atm_ata(void)
{
static const value_string clp_vals[] = {
{ 0, "High priority" },
@@ -1967,7 +1966,8 @@ static hf_register_info hfa_cell[] = {
}
-void proto_reg_handoff_pw_atm_ata(void)
+void
+proto_reg_handoff_pw_atm_ata(void)
{
dissector_handle_t h;
h = find_dissector("mpls_pw_atm_n1_cw");
@@ -1979,12 +1979,12 @@ void proto_reg_handoff_pw_atm_ata(void)
h = find_dissector("mpls_pw_atm_aal5_sdu");
dissector_add_uint( "mpls.label", LABEL_INVALID, h );
- dh_cell = find_dissector("mpls_pw_atm_cell");
- dh_cell_header = find_dissector("mpls_pw_atm_cell_header");
- dh_control_word = find_dissector("mpls_pw_atm_control_word");
- dh_atm_truncated = find_dissector("atm_truncated");
+ dh_cell = find_dissector("mpls_pw_atm_cell");
+ dh_cell_header = find_dissector("mpls_pw_atm_cell_header");
+ dh_control_word = find_dissector("mpls_pw_atm_control_word");
+ dh_atm_truncated = find_dissector("atm_truncated");
dh_atm_untruncated = find_dissector("atm_untruncated");
- dh_atm_oam_cell = find_dissector("atm_oam_cell");
- dh_padding = find_dissector("pw_padding");
- dh_data = find_dissector("data");
+ dh_atm_oam_cell = find_dissector("atm_oam_cell");
+ dh_padding = find_dissector("pw_padding");
+ dh_data = find_dissector("data");
}
diff --git a/epan/dissectors/packet-pw-cesopsn.c b/epan/dissectors/packet-pw-cesopsn.c
index 85a2c2da07..c07aeaefbe 100644
--- a/epan/dissectors/packet-pw-cesopsn.c
+++ b/epan/dissectors/packet-pw-cesopsn.c
@@ -36,8 +36,8 @@
# include "config.h"
#endif
-#include <stdlib.h>
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/expert.h>
diff --git a/epan/dissectors/packet-pw-eth.c b/epan/dissectors/packet-pw-eth.c
index 2c821d40ca..19de8ca4d7 100644
--- a/epan/dissectors/packet-pw-eth.c
+++ b/epan/dissectors/packet-pw-eth.c
@@ -1,5 +1,5 @@
/* packet-pw-eth.c
- * Routines for ethernet PW dissection: it should be conform to RFC 4448.
+ * Routines for ethernet PW dissection: it should conform to RFC 4448.
*
* Copyright 2008 _FF_
*
@@ -30,8 +30,8 @@
# include "config.h"
#endif
-#include <stdlib.h>
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/addr_resolv.h>
@@ -54,75 +54,80 @@ static dissector_handle_t pw_eth_handle_nocw;
static void
dissect_pw_eth_cw(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *pw_eth_tree = NULL;
- proto_item *ti = NULL;
- tvbuff_t *next_tvb = NULL;
- guint16 sequence_number = 0;
-
- if (tvb_reported_length_remaining(tvb, 0) < 4) {
- if (tree)
- proto_tree_add_text(tree, tvb, 0, -1,
- "Error processing Message");
- return;
- }
-
- if (dissect_try_cw_first_nibble(tvb, pinfo, tree))
- return;
-
- sequence_number = tvb_get_ntohs(tvb, 2);
- if (tree) {
- ti = proto_tree_add_boolean(tree, hf_pw_eth_cw,
- tvb, 0, 0, TRUE);
- PROTO_ITEM_SET_HIDDEN(ti);
- ti = proto_tree_add_item(tree, proto_pw_eth_cw,
- tvb, 0, 4, ENC_NA);
- pw_eth_tree = proto_item_add_subtree(ti, ett_pw_eth);
- if (pw_eth_tree == NULL)
- return;
- proto_tree_add_uint_format(pw_eth_tree,
- hf_pw_eth_cw_sequence_number,
- tvb, 2, 2, sequence_number,
- "Sequence Number: %d",
- sequence_number);
- }
- next_tvb = tvb_new_subset_remaining(tvb, 4);
- {
- /*
- * When Ethernet frames being decoded, pinfo->ethertype is extracted
- * from the top-level Ethernet frame. Dissection of Ethernet PW payload
- * overwrites this value as the same dissector is invoked again.
- * This may lead to undesired behavior (like disappearance of "Link"
- * tab from the "Decode as" menu).
- *
- * Let's save/restore ethertype. --ATA
- *
- * XXX it looks that more pinfo members (or even the whole pinfo)
- * XXX should be saved/restored in PW cases. Multilayer encapsulations,
- * XXX like ethernet/mpls/ethernet-pw/ip/vlan, may lead to undesired
- * XXX changes if pinfo->ipproto, ptype etc.
- */
- guint32 etype_save = pinfo->ethertype;
- call_dissector(eth_withoutfcs_handle, next_tvb, pinfo, tree);
- pinfo->ethertype = etype_save;
- }
+ proto_tree *pw_eth_tree = NULL;
+ proto_item *ti = NULL;
+ tvbuff_t *next_tvb = NULL;
+ guint16 sequence_number = 0;
+
+ if (tvb_reported_length_remaining(tvb, 0) < 4) {
+ if (tree)
+ proto_tree_add_text(tree, tvb, 0, -1,
+ "Error processing Message");
+ return;
+ }
+
+ if (dissect_try_cw_first_nibble(tvb, pinfo, tree))
+ return;
+
+ sequence_number = tvb_get_ntohs(tvb, 2);
+
+ if (tree) {
+ ti = proto_tree_add_boolean(tree, hf_pw_eth_cw,
+ tvb, 0, 0, TRUE);
+ PROTO_ITEM_SET_HIDDEN(ti);
+ ti = proto_tree_add_item(tree, proto_pw_eth_cw,
+ tvb, 0, 4, ENC_NA);
+ pw_eth_tree = proto_item_add_subtree(ti, ett_pw_eth);
+
+ if (pw_eth_tree == NULL)
+ return;
+
+ proto_tree_add_uint_format(pw_eth_tree,
+ hf_pw_eth_cw_sequence_number,
+ tvb, 2, 2, sequence_number,
+ "Sequence Number: %d",
+ sequence_number);
+ }
+
+ next_tvb = tvb_new_subset_remaining(tvb, 4);
+ {
+ /*
+ * When Ethernet frames being decoded, pinfo->ethertype is extracted
+ * from the top-level Ethernet frame. Dissection of Ethernet PW payload
+ * overwrites this value as the same dissector is invoked again.
+ * This may lead to undesired behavior (like disappearance of "Link"
+ * tab from the "Decode as" menu).
+ *
+ * Let's save/restore ethertype. --ATA
+ *
+ * XXX it looks that more pinfo members (or even the whole pinfo)
+ * XXX should be saved/restored in PW cases. Multilayer encapsulations,
+ * XXX like ethernet/mpls/ethernet-pw/ip/vlan, may lead to undesired
+ * XXX changes if pinfo->ipproto, ptype etc.
+ */
+ guint32 etype_save = pinfo->ethertype;
+ call_dissector(eth_withoutfcs_handle, next_tvb, pinfo, tree);
+ pinfo->ethertype = etype_save;
+ }
}
static void
dissect_pw_eth_nocw(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- tvbuff_t *next_tvb = NULL;
- proto_item *ti = NULL;
-
- if (tree) {
- ti = proto_tree_add_boolean(tree, hf_pw_eth, tvb, 0, 0, TRUE);
- PROTO_ITEM_SET_HIDDEN(ti);
- }
- next_tvb = tvb_new_subset_remaining(tvb, 0);
- {
- guint32 etype_save = pinfo->ethertype;
- call_dissector(eth_withoutfcs_handle, next_tvb, pinfo, tree);
- pinfo->ethertype = etype_save;
- }
+ tvbuff_t *next_tvb = NULL;
+ proto_item *ti = NULL;
+
+ if (tree) {
+ ti = proto_tree_add_boolean(tree, hf_pw_eth, tvb, 0, 0, TRUE);
+ PROTO_ITEM_SET_HIDDEN(ti);
+ }
+
+ next_tvb = tvb_new_subset_remaining(tvb, 0);
+ {
+ guint32 etype_save = pinfo->ethertype;
+ call_dissector(eth_withoutfcs_handle, next_tvb, pinfo, tree);
+ pinfo->ethertype = etype_save;
+ }
}
/*
@@ -132,101 +137,119 @@ dissect_pw_eth_nocw(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static gboolean
looks_like_plain_eth(tvbuff_t *tvb _U_)
{
- const gchar *manuf_name_da = NULL;
- const gchar *manuf_name_sa = NULL;
+ const gchar *manuf_name_da = NULL;
+ const gchar *manuf_name_sa = NULL;
- if (tvb_reported_length_remaining(tvb, 0) < 14) {
- return FALSE;
- }
+ if (tvb_reported_length_remaining(tvb, 0) < 14) {
+ return FALSE;
+ }
- manuf_name_da = tvb_get_manuf_name_if_known(tvb, 0);
- manuf_name_sa = tvb_get_manuf_name_if_known(tvb, 6);
+ manuf_name_da = tvb_get_manuf_name_if_known(tvb, 0);
+ manuf_name_sa = tvb_get_manuf_name_if_known(tvb, 6);
- if (manuf_name_da && manuf_name_sa) {
- return TRUE;
- }
+ if (manuf_name_da && manuf_name_sa) {
+ return TRUE;
+ }
- return FALSE;
+ return FALSE;
}
static void
dissect_pw_eth_heuristic(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- if (looks_like_plain_eth(tvb)) {
- call_dissector(pw_eth_handle_nocw, tvb, pinfo, tree);
- } else {
- call_dissector(pw_eth_handle_cw, tvb, pinfo, tree);
- }
+ guint8 first_nibble = (tvb_get_guint8(tvb, 0) >> 4) & 0x0F;
+
+ if (looks_like_plain_eth(tvb)) {
+ call_dissector(pw_eth_handle_nocw, tvb, pinfo, tree);
+ }
+
+ if (first_nibble == 0)
+ call_dissector(pw_eth_handle_cw, tvb, pinfo, tree);
+ else
+ call_dissector(pw_eth_handle_nocw, tvb, pinfo, tree);
}
void
proto_register_pw_eth(void)
{
- static hf_register_info hf[] = {
- {
- &hf_pw_eth,
- {
- "PW (ethernet)",
- "pweth", FT_BOOLEAN,
- BASE_NONE, NULL, 0x0, NULL, HFILL
- }
- },
- {
- &hf_pw_eth_cw,
- {
- "PW Control Word (ethernet)",
- "pweth.cw", FT_BOOLEAN,
- BASE_NONE, NULL, 0x0, NULL, HFILL
- }
- },
- {
- &hf_pw_eth_cw_sequence_number,
- {
- "PW sequence number (ethernet)",
- "pweth.cw.sequence_number", FT_UINT16,
- BASE_DEC, NULL, 0x0, NULL, HFILL
- }
- }
- };
-
- static gint *ett[] = {
- &ett_pw_eth
- };
-
- proto_pw_eth_cw =
- proto_register_protocol("PW Ethernet Control Word",
- "Ethernet PW (with CW)",
- "pwethcw");
- proto_pw_eth_nocw =
- proto_register_protocol("Ethernet PW (no CW)", /* not displayed */
- "Ethernet PW (no CW)",
- "pwethnocw");
- proto_pw_eth_heuristic =
- proto_register_protocol("Ethernet PW (CW heuristic)", /* not disp. */
- "Ethernet PW (CW heuristic)",
- "pwethheuristic");
- proto_register_field_array(proto_pw_eth_cw, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
- register_dissector("pw_eth_cw", dissect_pw_eth_cw, proto_pw_eth_cw);
- register_dissector("pw_eth_nocw", dissect_pw_eth_nocw,
- proto_pw_eth_nocw);
- register_dissector("pw_eth_heuristic", dissect_pw_eth_heuristic,
- proto_pw_eth_heuristic);
+ static hf_register_info hf[] = {
+ {
+ &hf_pw_eth,
+ {
+ "PW (ethernet)",
+ "pweth", FT_BOOLEAN,
+ BASE_NONE, NULL, 0x0, NULL, HFILL
+ }
+ },
+ {
+ &hf_pw_eth_cw,
+ {
+ "PW Control Word (ethernet)",
+ "pweth.cw", FT_BOOLEAN,
+ BASE_NONE, NULL, 0x0, NULL, HFILL
+ }
+ },
+ {
+ &hf_pw_eth_cw_sequence_number,
+ {
+ "PW sequence number (ethernet)",
+ "pweth.cw.sequence_number", FT_UINT16,
+ BASE_DEC, NULL, 0x0, NULL, HFILL
+ }
+ }
+ };
+
+ static gint *ett[] = {
+ &ett_pw_eth
+ };
+
+ proto_pw_eth_cw =
+ proto_register_protocol("PW Ethernet Control Word",
+ "Ethernet PW (with CW)",
+ "pwethcw");
+ proto_pw_eth_nocw =
+ proto_register_protocol("Ethernet PW (no CW)", /* not displayed */
+ "Ethernet PW (no CW)",
+ "pwethnocw");
+ proto_pw_eth_heuristic =
+ proto_register_protocol("Ethernet PW (CW heuristic)", /* not disp. */
+ "Ethernet PW (CW heuristic)",
+ "pwethheuristic");
+ proto_register_field_array(proto_pw_eth_cw, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+ register_dissector("pw_eth_cw", dissect_pw_eth_cw, proto_pw_eth_cw);
+ register_dissector("pw_eth_nocw", dissect_pw_eth_nocw,
+ proto_pw_eth_nocw);
+ register_dissector("pw_eth_heuristic", dissect_pw_eth_heuristic,
+ proto_pw_eth_heuristic);
}
void
proto_reg_handoff_pw_eth(void)
{
- dissector_handle_t pw_eth_handle_heuristic;
+ dissector_handle_t pw_eth_handle_heuristic;
- eth_withoutfcs_handle = find_dissector("eth_withoutfcs");
+ eth_withoutfcs_handle = find_dissector("eth_withoutfcs");
- pw_eth_handle_cw = find_dissector("pw_eth_cw");
- dissector_add_uint("mpls.label", LABEL_INVALID, pw_eth_handle_cw);
+ pw_eth_handle_cw = find_dissector("pw_eth_cw");
+ dissector_add_uint("mpls.label", LABEL_INVALID, pw_eth_handle_cw);
- pw_eth_handle_nocw = find_dissector("pw_eth_nocw");
- dissector_add_uint("mpls.label", LABEL_INVALID, pw_eth_handle_nocw);
+ pw_eth_handle_nocw = find_dissector("pw_eth_nocw");
+ dissector_add_uint("mpls.label", LABEL_INVALID, pw_eth_handle_nocw);
- pw_eth_handle_heuristic = find_dissector("pw_eth_heuristic");
- dissector_add_uint("mpls.label", LABEL_INVALID, pw_eth_handle_heuristic);
+ pw_eth_handle_heuristic = find_dissector("pw_eth_heuristic");
+ dissector_add_uint("mpls.label", LABEL_INVALID, pw_eth_handle_heuristic);
}
+
+/*
+ * Editor modelines - http://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vi: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
+ */
diff --git a/epan/dissectors/packet-pw-hdlc.c b/epan/dissectors/packet-pw-hdlc.c
index 10fd560d59..791c39808b 100644
--- a/epan/dissectors/packet-pw-hdlc.c
+++ b/epan/dissectors/packet-pw-hdlc.c
@@ -38,8 +38,8 @@
# include "config.h"
#endif
-#include <stdlib.h>
#include <glib.h>
+
#include <epan/packet.h>
#include "packet-mpls.h"
diff --git a/epan/dissectors/packet-pw-satop.c b/epan/dissectors/packet-pw-satop.c
index bcff66f71b..eca18f0a0b 100644
--- a/epan/dissectors/packet-pw-satop.c
+++ b/epan/dissectors/packet-pw-satop.c
@@ -35,8 +35,8 @@
# include "config.h"
#endif
-#include <stdlib.h>
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/expert.h>
@@ -83,8 +83,6 @@ void dissect_pw_satop(tvbuff_t * tvb_original
,PAY_LIKE_OCTET_ALIGNED_T1
} payload_properties;
- properties = PWC_PACKET_PROPERTIES_T_INITIALIZER;
- payload_properties = PAY_NO_IDEA;
packet_size = tvb_reported_length_remaining(tvb_original, 0);
/*
* FIXME
diff --git a/epan/dissectors/packet-q932-ros.c b/epan/dissectors/packet-q932-ros.c
index 38ff6f331a..e70acdb2a2 100644
--- a/epan/dissectors/packet-q932-ros.c
+++ b/epan/dissectors/packet-q932-ros.c
@@ -248,7 +248,7 @@ dissect_q932_ros_InvokeArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
len = tvb_length_remaining(tvb, offset);
if (len)
- proto_tree_add_item(tree, hf_index, tvb, offset, len, FALSE);
+ proto_tree_add_item(tree, hf_index, tvb, offset, len, ENC_NA);
arg_next_tvb = tvb_new_subset(tvb, offset, len, len);
offset += tvb_length_remaining(tvb, offset);
@@ -326,7 +326,7 @@ dissect_q932_ros_ResultArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
len = tvb_length_remaining(tvb, offset);
if (len)
- proto_tree_add_item(tree, hf_index, tvb, offset, len, FALSE);
+ proto_tree_add_item(tree, hf_index, tvb, offset, len, ENC_NA);
res_next_tvb = tvb_new_subset(tvb, offset, len, len);
offset += tvb_length_remaining(tvb, offset);
@@ -422,7 +422,7 @@ dissect_q932_ros_T_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o
len = tvb_length_remaining(tvb, offset);
if (len)
- proto_tree_add_item(tree, hf_index, tvb, offset, len, FALSE);
+ proto_tree_add_item(tree, hf_index, tvb, offset, len, ENC_NA);
err_next_tvb = tvb_new_subset(tvb, offset, len, len);
offset += tvb_length_remaining(tvb, offset);
diff --git a/epan/dissectors/packet-qsig.c b/epan/dissectors/packet-qsig.c
index 59d71a40db..8e7992202c 100644
--- a/epan/dissectors/packet-qsig.c
+++ b/epan/dissectors/packet-qsig.c
@@ -12564,7 +12564,7 @@ dissect_qsig_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int codeset
ti_ie = proto_tree_add_text(tree, tvb, offset, -1, "%s",
val_to_str(ie_type, VALS(qsig_str_ie_type[codeset]), "unknown (0x%02X)"));
ie_tree = proto_item_add_subtree(ti_ie, ett_qsig_ie);
- proto_tree_add_item(ie_tree, *hf_qsig_ie_type_arr[codeset], tvb, offset, 1, FALSE);
+ proto_tree_add_item(ie_tree, *hf_qsig_ie_type_arr[codeset], tvb, offset, 1, ENC_BIG_ENDIAN);
hidden_item = proto_tree_add_item(ie_tree, hf_qsig_ie_type, tvb, offset, 1, ENC_BIG_ENDIAN);
PROTO_ITEM_SET_HIDDEN(hidden_item);
proto_tree_add_item(ie_tree, hf_qsig_ie_len, tvb, offset + 1, 1, ENC_BIG_ENDIAN);
diff --git a/epan/dissectors/packet-radius.c b/epan/dissectors/packet-radius.c
index a50c5982ea..dca0dad3eb 100644
--- a/epan/dissectors/packet-radius.c
+++ b/epan/dissectors/packet-radius.c
@@ -39,6 +39,12 @@
* See also
*
* http://www.iana.org/assignments/radius-types
+ *
+ * and see
+ *
+ * http://freeradius.org/radiusd/man/dictionary.html
+ *
+ * for the dictionary file syntax.
*/
@@ -116,7 +122,11 @@ static int hf_radius_code = -1;
static int hf_radius_length = -1;
static int hf_radius_authenticator = -1;
+static int hf_radius_chap_password = -1;
+static int hf_radius_chap_ident = -1;
+static int hf_radius_chap_string = -1;
static int hf_radius_framed_ip_address = -1;
+
static int hf_radius_login_ip_host = -1;
static int hf_radius_framed_ipx_network = -1;
@@ -128,7 +138,7 @@ static int hf_radius_ascend_data_filter = -1;
static gint ett_radius = -1;
static gint ett_radius_avp = -1;
static gint ett_eap = -1;
-
+static gint ett_chap = -1;
/*
* Define the tap for radius
*/
@@ -257,7 +267,9 @@ static gboolean radius_call_equal(gconstpointer k1, gconstpointer k2)
return TRUE;
/* check the request and response are of the same code type */
if ((key1->code == RADIUS_PKT_TYPE_ACCESS_REQUEST) &&
- ((key2->code == RADIUS_PKT_TYPE_ACCESS_ACCEPT) || (key2->code == RADIUS_PKT_TYPE_ACCESS_REJECT)))
+ ((key2->code == RADIUS_PKT_TYPE_ACCESS_ACCEPT) ||
+ (key2->code == RADIUS_PKT_TYPE_ACCESS_REJECT) ||
+ (key2->code == RADIUS_PKT_TYPE_ACCESS_CHALLENGE)))
return TRUE;
if ((key1->code == RADIUS_PKT_TYPE_ACCOUNTING_REQUEST) &&
@@ -304,6 +316,22 @@ static guint radius_call_hash(gconstpointer k)
}
+static const gchar *dissect_chap_password(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo _U_) {
+ int len;
+ proto_item *ti;
+ proto_tree *chap_tree;
+
+ len = tvb_length(tvb);
+ if (len != 17)
+ return "[wrong length for CHAP-Password]";
+
+ ti = proto_tree_add_item(tree, hf_radius_chap_password, tvb, 0, len, ENC_NA);
+ chap_tree = proto_item_add_subtree(ti, ett_chap);
+ proto_tree_add_item(chap_tree, hf_radius_chap_ident, tvb, 0, 1, ENC_NA);
+ proto_tree_add_item(chap_tree, hf_radius_chap_string, tvb, 1, 16, ENC_NA);
+ return (tvb_bytes_to_str(tvb, 0, len));
+}
+
static const gchar *dissect_framed_ip_address(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo _U_) {
int len;
guint32 ip;
@@ -472,50 +500,56 @@ static const gchar* dissect_cosine_vpvc(proto_tree* tree, tvbuff_t* tvb, packet_
static void
radius_decrypt_avp(gchar *dest,int dest_len,tvbuff_t *tvb,int offset,int length)
{
- md5_state_t md_ctx;
- md5_byte_t digest[16];
- int i;
- gint totlen, returned_length;
- const guint8 *pd;
+ md5_state_t md_ctx, old_md_ctx;
+ md5_byte_t digest[AUTHENTICATOR_LENGTH];
+ int i, j;
+ gint totlen = 0, returned_length, padded_length;
+ guint8 *pd;
guchar c;
- DISSECTOR_ASSERT(dest_len > 2); /* \"\"\0 */
- dest[0] = '"';
- dest[1] = '\0';
- totlen = 1;
- dest_len -= 1; /* Need to add trailing \" */
+ DISSECTOR_ASSERT(dest_len > 0);
+ dest[0] = '\0';
+ if ( length <= 0 )
+ return;
+
+ /* The max avp length is 253 (255 - 2 for type & length), but only the
+ * User-Password is marked with encrypt=1 in dictionary.rfc2865, and the
+ * User-Password max length is only 128 (130 - 2 for type & length) per
+ * tools.ietf.org/html/rfc2865#section-5.2, so enforce that limit here.
+ */
+ if ( length > 128 )
+ length = 128;
md5_init(&md_ctx);
- md5_append(&md_ctx,(const guint8*)shared_secret,(int)strlen(shared_secret));
- md5_append(&md_ctx,authenticator, AUTHENTICATOR_LENGTH);
- md5_finish(&md_ctx,digest);
-
- pd = tvb_get_ptr(tvb,offset,length);
- for( i = 0 ; i < AUTHENTICATOR_LENGTH && i < length ; i++ ) {
- c = pd[i] ^ digest[i];
- if ( isprint(c) ) {
- returned_length = g_snprintf(&dest[totlen], dest_len-totlen,
- "%c",c);
- totlen += MIN(returned_length, dest_len-totlen-1);
- } else {
- returned_length = g_snprintf(&dest[totlen], dest_len-totlen,
- "\\%03o",c);
- totlen += MIN(returned_length, dest_len-totlen-1);
- }
- }
- while(i<length) {
- if ( isprint(pd[i]) ) {
- returned_length = g_snprintf(&dest[totlen], dest_len-totlen,
- "%c", pd[i]);
- totlen += MIN(returned_length, dest_len-totlen-1);
- } else {
- returned_length = g_snprintf(&dest[totlen], dest_len-totlen,
- "\\%03o", pd[i]);
- totlen += MIN(returned_length, dest_len-totlen-1);
+ md5_append(&md_ctx, (const guint8*)shared_secret, (int)strlen(shared_secret));
+ old_md_ctx = md_ctx;
+ md5_append(&md_ctx, authenticator, AUTHENTICATOR_LENGTH);
+ md5_finish(&md_ctx, digest);
+
+ padded_length = length + ((length % AUTHENTICATOR_LENGTH) ?
+ (AUTHENTICATOR_LENGTH - (length % AUTHENTICATOR_LENGTH)) : 0);
+ pd = ep_alloc0(padded_length);
+ tvb_memcpy(tvb, pd, offset, length);
+
+ for ( i = 0; i < padded_length; i += AUTHENTICATOR_LENGTH ) {
+ for ( j = 0; j < AUTHENTICATOR_LENGTH; j++ ) {
+ c = pd[i + j] ^ digest[j];
+ if ( isprint(c) ) {
+ returned_length = g_snprintf(&dest[totlen], dest_len - totlen,
+ "%c", c);
+ totlen += MIN(returned_length, dest_len - totlen - 1);
+ }
+ else if ( c ) {
+ returned_length = g_snprintf(&dest[totlen], dest_len - totlen,
+ "\\%03o", c);
+ totlen += MIN(returned_length, dest_len - totlen - 1);
+ }
}
- i++;
+
+ md_ctx = old_md_ctx;
+ md5_append(&md_ctx, &pd[i], AUTHENTICATOR_LENGTH);
+ md5_finish(&md_ctx, digest);
}
- g_snprintf(&dest[totlen], dest_len+1-totlen, "%c", '"');
}
@@ -537,7 +571,7 @@ void radius_integer(radius_attr_info_t* a, proto_tree* tree, packet_info *pinfo
break;
case 8: {
guint64 uint64 = tvb_get_ntoh64(tvb,offset);
- proto_tree_add_uint64(tree,a->hf64,tvb,offset,len,uint64);
+ proto_tree_add_uint64(tree,a->hf_alt,tvb,offset,len,uint64);
proto_item_append_text(avp_item, "%" G_GINT64_MODIFIER "u", uint64);
return;
}
@@ -545,7 +579,7 @@ void radius_integer(radius_attr_info_t* a, proto_tree* tree, packet_info *pinfo
proto_item_append_text(avp_item, "[unhandled integer length(%u)]", len);
return;
}
- proto_tree_add_item(tree,a->hf,tvb, offset, len, FALSE);
+ proto_tree_add_item(tree,a->hf,tvb, offset, len, ENC_BIG_ENDIAN);
if (a->vs) {
proto_item_append_text(avp_item, "%s(%u)", val_to_str(uint, a->vs, "Unknown"),uint);
@@ -572,7 +606,7 @@ void radius_signed(radius_attr_info_t* a, proto_tree* tree, packet_info *pinfo _
break;
case 8: {
guint64 uint64 = tvb_get_ntoh64(tvb,offset);
- proto_tree_add_int64(tree,a->hf64,tvb,offset,len,uint64);
+ proto_tree_add_int64(tree,a->hf_alt,tvb,offset,len,uint64);
proto_item_append_text(avp_item, "%" G_GINT64_MODIFIER "u", uint64);
return;
}
@@ -591,10 +625,17 @@ void radius_signed(radius_attr_info_t* a, proto_tree* tree, packet_info *pinfo _
}
void radius_string(radius_attr_info_t* a, proto_tree* tree, packet_info *pinfo _U_, tvbuff_t* tvb, int offset, int len, proto_item* avp_item) {
- if (a->encrypt) {
+ switch (a->encrypt) {
+
+ case 0: /* not encrypted */
+ proto_tree_add_item(tree, a->hf, tvb, offset, len, ENC_UTF_8|ENC_NA);
+ proto_item_append_text(avp_item, "%s", tvb_format_text(tvb, offset, len));
+ break;
+
+ case 1: /* encrypted like User-Password as defined in RFC 2865 */
if (*shared_secret == '\0') {
proto_item_append_text(avp_item, "Encrypted");
- proto_tree_add_item(tree, a->hf, tvb, offset, len, FALSE);
+ proto_tree_add_item(tree, a->hf_alt, tvb, offset, len, ENC_NA);
} else {
gchar *buffer;
buffer=ep_alloc(1024); /* an AVP value can be at most 253 bytes */
@@ -602,14 +643,22 @@ void radius_string(radius_attr_info_t* a, proto_tree* tree, packet_info *pinfo _
proto_item_append_text(avp_item, "Decrypted: %s", buffer);
proto_tree_add_string(tree, a->hf, tvb, offset, len, buffer);
}
- } else {
- proto_tree_add_item(tree, a->hf, tvb, offset, len, FALSE);
- proto_item_append_text(avp_item, "%s", tvb_format_text(tvb, offset, len));
+ break;
+
+ case 2: /* encrypted like Tunnel-Password as defined in RFC 2868 */
+ proto_item_append_text(avp_item, "Encrypted");
+ proto_tree_add_item(tree, a->hf_alt, tvb, offset, len, ENC_NA);
+ break;
+
+ case 3: /* encrypted like Ascend-Send-Secret as defined by Ascend^WLucent^WAlcatel-Lucent */
+ proto_item_append_text(avp_item, "Encrypted");
+ proto_tree_add_item(tree, a->hf_alt, tvb, offset, len, ENC_NA);
+ break;
}
}
void radius_octets(radius_attr_info_t* a, proto_tree* tree, packet_info *pinfo _U_, tvbuff_t* tvb, int offset, int len, proto_item* avp_item) {
- proto_tree_add_item(tree, a->hf, tvb, offset, len, FALSE);
+ proto_tree_add_item(tree, a->hf, tvb, offset, len, ENC_NA);
proto_item_append_text(avp_item, "%s", tvb_bytes_to_str(tvb, offset, len));
}
@@ -624,7 +673,7 @@ void radius_ipaddr(radius_attr_info_t* a, proto_tree* tree, packet_info *pinfo _
ip=tvb_get_ipv4(tvb,offset);
- proto_tree_add_item(tree, a->hf, tvb, offset, len, FALSE);
+ proto_tree_add_item(tree, a->hf, tvb, offset, len, ENC_BIG_ENDIAN);
ip_to_str_buf((guint8 *)&ip, buf, MAX_IP_STR_LEN);
proto_item_append_text(avp_item, "%s", buf);
@@ -639,7 +688,7 @@ void radius_ipv6addr(radius_attr_info_t* a, proto_tree* tree, packet_info *pinfo
return;
}
- proto_tree_add_item(tree, a->hf, tvb, offset, len, FALSE);
+ proto_tree_add_item(tree, a->hf, tvb, offset, len, ENC_NA);
tvb_get_ipv6(tvb, offset, &ipv6_buff);
ip6_to_str_buf(&ipv6_buff, txtbuf);
@@ -669,7 +718,7 @@ void radius_ipv6prefix(radius_attr_info_t* a, proto_tree* tree, packet_info *pin
return;
}
- proto_tree_add_item(tree, a->hf, tvb, offset, len, FALSE);
+ proto_tree_add_item(tree, a->hf, tvb, offset, len, ENC_NA);
/* cannot use tvb_get_ipv6() here, since the prefix most likely is truncated */
memset(&ipv6_buff, 0, sizeof ipv6_buff);
@@ -687,12 +736,12 @@ void radius_combo_ip(radius_attr_info_t* a, proto_tree* tree, packet_info *pinfo
if (len == 4){
ip=tvb_get_ipv4(tvb,offset);
- proto_tree_add_item(tree, a->hf, tvb, offset, len, FALSE);
+ proto_tree_add_item(tree, a->hf, tvb, offset, len, ENC_BIG_ENDIAN);
ip_to_str_buf((guint8 *)&ip, buf, MAX_IP_STR_LEN);
proto_item_append_text(avp_item, "%s", buf);
} else if (len == 16) {
- proto_tree_add_item(tree, a->hf64, tvb, offset, len, FALSE);
+ proto_tree_add_item(tree, a->hf_alt, tvb, offset, len, ENC_NA);
tvb_get_ipv6(tvb, offset, &ipv6_buff);
ip6_to_str_buf(&ipv6_buff, buf);
@@ -713,7 +762,7 @@ void radius_ipxnet(radius_attr_info_t* a, proto_tree* tree, packet_info *pinfo _
net=tvb_get_ntohl(tvb,offset);
- proto_tree_add_item(tree, a->hf, tvb, offset, len, FALSE);
+ proto_tree_add_item(tree, a->hf, tvb, offset, len, ENC_NA);
proto_item_append_text(avp_item, "0x%08X", net);
}
@@ -736,7 +785,7 @@ void radius_date(radius_attr_info_t* a, proto_tree* tree, packet_info *pinfo _U_
* "abinary" is Ascend's binary format for filters. See dissect_ascend_data_filter().
*/
void radius_abinary(radius_attr_info_t* a, proto_tree* tree, packet_info *pinfo _U_, tvbuff_t* tvb, int offset, int len, proto_item* avp_item) {
- proto_tree_add_item(tree, a->hf, tvb, offset, len, FALSE);
+ proto_tree_add_item(tree, a->hf, tvb, offset, len, ENC_NA);
proto_item_append_text(avp_item, "%s", tvb_bytes_to_str(tvb, offset, len));
}
@@ -746,12 +795,12 @@ void radius_ether(radius_attr_info_t* a, proto_tree* tree, packet_info *pinfo _U
return;
}
- proto_tree_add_item(tree, a->hf, tvb, offset, len, FALSE);
+ proto_tree_add_item(tree, a->hf, tvb, offset, len, ENC_NA);
proto_item_append_text(avp_item, "%s", tvb_ether_to_str(tvb, offset));
}
void radius_ifid(radius_attr_info_t* a, proto_tree* tree, packet_info *pinfo _U_, tvbuff_t* tvb, int offset, int len, proto_item* avp_item) {
- proto_tree_add_item(tree, a->hf, tvb, offset, len, FALSE);
+ proto_tree_add_item(tree, a->hf, tvb, offset, len, ENC_NA);
proto_item_append_text(avp_item, "%s", tvb_bytes_to_str(tvb, offset, len));
}
@@ -1508,6 +1557,7 @@ dissect_radius(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case RADIUS_PKT_TYPE_DISCONNECT_NAK:
case RADIUS_PKT_TYPE_COA_ACK:
case RADIUS_PKT_TYPE_COA_NAK:
+ case RADIUS_PKT_TYPE_ACCESS_CHALLENGE:
/* Don't bother finding conversations if we're encapsulated within
* an error packet, such as an ICMP destination unreachable */
if (pinfo->flags.in_error_pkt)
@@ -1620,7 +1670,7 @@ dissect_radius(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
rad_info->req_time.nsecs = radius_call->req_time.nsecs;
}
- if (tree && avplength > 0)
+ if (avplength > 0)
{
/* list the attribute value pairs */
avptf = proto_tree_add_text(radius_tree, tvb, HDR_LENGTH,
@@ -1667,7 +1717,7 @@ static void register_attrs(gpointer k _U_, gpointer v, gpointer p) {
hfri[0].hfinfo.type = FT_UINT32;
hfri[0].hfinfo.display = BASE_DEC;
- hfri[2].p_id = &(a->hf64);
+ hfri[2].p_id = &(a->hf_alt);
hfri[2].hfinfo.name = g_strdup(a->name);
hfri[2].hfinfo.abbrev = abbrev;
hfri[2].hfinfo.type = FT_UINT64;
@@ -1682,7 +1732,7 @@ static void register_attrs(gpointer k _U_, gpointer v, gpointer p) {
hfri[0].hfinfo.type = FT_INT32;
hfri[0].hfinfo.display = BASE_DEC;
- hfri[2].p_id = &(a->hf64);
+ hfri[2].p_id = &(a->hf_alt);
hfri[2].hfinfo.name = g_strdup(a->name);
hfri[2].hfinfo.abbrev = abbrev;
hfri[2].hfinfo.type = FT_INT64;
@@ -1696,6 +1746,20 @@ static void register_attrs(gpointer k _U_, gpointer v, gpointer p) {
} else if (a->type == radius_string) {
hfri[0].hfinfo.type = FT_STRING;
hfri[0].hfinfo.display = BASE_NONE;
+
+ if (a->encrypt != 0) {
+ /*
+ * This attribute is encrypted, so create an
+ * alternative field for the encrypted value.
+ */
+ hfri[2].p_id = &(a->hf_alt);
+ hfri[2].hfinfo.name = g_strdup_printf("%s (encrypted)", a->name);
+ hfri[2].hfinfo.abbrev = g_strdup_printf("%s_encrypted", abbrev);
+ hfri[2].hfinfo.type = FT_BYTES;
+ hfri[2].hfinfo.display = BASE_NONE;
+
+ len_hf++;
+ }
} else if (a->type == radius_octets) {
hfri[0].hfinfo.type = FT_BYTES;
hfri[0].hfinfo.display = BASE_NONE;
@@ -1724,7 +1788,7 @@ static void register_attrs(gpointer k _U_, gpointer v, gpointer p) {
hfri[0].hfinfo.type = FT_IPv4;
hfri[0].hfinfo.display = BASE_NONE;
- hfri[2].p_id = &(a->hf64);
+ hfri[2].p_id = &(a->hf_alt);
hfri[2].hfinfo.name = g_strdup(a->name);
hfri[2].hfinfo.abbrev = g_strdup(abbrev);
hfri[2].hfinfo.type = FT_IPv6;
@@ -1810,11 +1874,11 @@ extern void radius_register_avp_dissector(guint32 vendor_id, guint32 attribute_i
}
if (!dictionary_entry) {
- dictionary_entry = g_malloc(sizeof(radius_attr_info_t));;
+ dictionary_entry = g_malloc(sizeof(radius_attr_info_t));
dictionary_entry->name = g_strdup_printf("Unknown-Attribute-%u",attribute_id);
dictionary_entry->code = attribute_id;
- dictionary_entry->encrypt = FALSE;
+ dictionary_entry->encrypt = 0;
dictionary_entry->type = NULL;
dictionary_entry->vs = NULL;
dictionary_entry->hf = no_dictionary_entry.hf;
@@ -1879,6 +1943,15 @@ static void register_radius_fields(const char* unused _U_) {
{ &(no_dictionary_entry.hf_len),
{ "Unknown-Attribute Length","radius.Unknown_Attribute.length", FT_UINT8, BASE_DEC, NULL, 0x0,
NULL, HFILL }},
+ { &hf_radius_chap_password,
+ { "CHAP-Password","radius.CHAP_Password", FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_radius_chap_ident,
+ { "CHAP Ident","radius.CHAP_Ident", FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_radius_chap_string,
+ { "CHAP String","radius.CHAP_String", FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_radius_framed_ip_address,
{ "Framed-IP-Address","radius.Framed-IP-Address", FT_IPv4, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
@@ -1912,6 +1985,7 @@ static void register_radius_fields(const char* unused _U_) {
&ett_radius,
&ett_radius_avp,
&ett_eap,
+ &ett_chap,
&(no_dictionary_entry.ett),
&(no_vendor.ett),
};
@@ -1967,6 +2041,7 @@ static void register_radius_fields(const char* unused _U_) {
/*
* Handle attributes that have a special format.
*/
+ radius_register_avp_dissector(0,3,dissect_chap_password);
radius_register_avp_dissector(0,8,dissect_framed_ip_address);
radius_register_avp_dissector(0,14,dissect_login_ip_host);
radius_register_avp_dissector(0,23,dissect_framed_ipx_network);
diff --git a/epan/dissectors/packet-radius.h b/epan/dissectors/packet-radius.h
index 4702913f95..9f14753953 100644
--- a/epan/dissectors/packet-radius.h
+++ b/epan/dissectors/packet-radius.h
@@ -93,14 +93,14 @@ typedef const gchar* (radius_avp_dissector_t)(proto_tree*,tvbuff_t*, packet_info
struct _radius_attr_info_t {
const gchar *name;
guint code;
- gboolean encrypt; /* True if attribute has "encrypt=1" option */
+ guint encrypt; /* 0 or value for "encrypt=" option */
gboolean tagged;
radius_attr_dissector_t* type;
radius_avp_dissector_t* dissector;
const value_string *vs;
gint ett;
int hf;
- int hf64;
+ int hf_alt; /* 64-bit version for integers, encrypted version for strings, IPv6 for radius_combo_ip */
int hf_tag;
int hf_len;
GHashTable* tlvs_by_id;
diff --git a/epan/dissectors/packet-ranap.c b/epan/dissectors/packet-ranap.c
index 2809c4ebe2..91d6545fac 100644
--- a/epan/dissectors/packet-ranap.c
+++ b/epan/dissectors/packet-ranap.c
@@ -477,7 +477,7 @@ static int hf_ranap_InformationTransferType_PDU = -1; /* InformationTransferTyp
static int hf_ranap_IntegrityProtectionInformation_PDU = -1; /* IntegrityProtectionInformation */
static int hf_ranap_IntegrityProtectionKey_PDU = -1; /* IntegrityProtectionKey */
static int hf_ranap_InterSystemInformationTransferType_PDU = -1; /* InterSystemInformationTransferType */
-static int hf_ranap_InterSystemInformation_TransparentContainer_PDU = -1; /* InterSystemInformation_TransparentContainer */
+static int hf_ranap_ranap_InterSystemInformation_TransparentContainer_PDU = -1; /* InterSystemInformation_TransparentContainer */
static int hf_ranap_IPMulticastAddress_PDU = -1; /* IPMulticastAddress */
static int hf_ranap_IuSignallingConnectionIdentifier_PDU = -1; /* IuSignallingConnectionIdentifier */
static int hf_ranap_IuTransportAssociation_PDU = -1; /* IuTransportAssociation */
@@ -1656,7 +1656,7 @@ dissect_ranap_ProcedureCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 255U, &ProcedureCode, FALSE);
-#line 93 "../../asn1/ranap/ranap.cnf"
+#line 94 "../../asn1/ranap/ranap.cnf"
col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%s ",
val_to_str_ext_const(ProcedureCode, &ranap_ProcedureCode_vals_ext,
"unknown message"));
@@ -1932,7 +1932,7 @@ dissect_ranap_ProtocolIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 65535U, &ProtocolIE_ID, FALSE);
-#line 77 "../../asn1/ranap/ranap.cnf"
+#line 78 "../../asn1/ranap/ranap.cnf"
if (tree) {
proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str_ext(ProtocolIE_ID, &ranap_ProtocolIE_ID_vals_ext, "unknown (%d)"));
}
@@ -2054,7 +2054,7 @@ static const per_sequence_t ProtocolIE_ContainerList_sequence_of[1] = {
static int
dissect_ranap_ProtocolIE_ContainerList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 117 "../../asn1/ranap/ranap.cnf"
+#line 118 "../../asn1/ranap/ranap.cnf"
static const asn1_par_def_t ProtocolIE_ContainerList_pars[] = {
{ "lowerBound", ASN1_PAR_INTEGER },
{ "upperBound", ASN1_PAR_INTEGER },
@@ -2076,7 +2076,7 @@ static const per_sequence_t ProtocolIE_ContainerPairList_sequence_of[1] = {
static int
dissect_ranap_ProtocolIE_ContainerPairList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 133 "../../asn1/ranap/ranap.cnf"
+#line 134 "../../asn1/ranap/ranap.cnf"
static const asn1_par_def_t ProtocolIE_ContainerPairList_pars[] = {
{ "lowerBound", ASN1_PAR_INTEGER },
{ "upperBound", ASN1_PAR_INTEGER },
@@ -2645,7 +2645,7 @@ dissect_ranap_APN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto
static int
dissect_ranap_PLMNidentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 280 "../../asn1/ranap/ranap.cnf"
+#line 281 "../../asn1/ranap/ranap.cnf"
tvbuff_t *parameter_tvb=NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -4563,7 +4563,7 @@ dissect_ranap_GlobalRNC_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
static int
dissect_ranap_GTP_TEI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 331 "../../asn1/ranap/ranap.cnf"
+#line 332 "../../asn1/ranap/ranap.cnf"
tvbuff_t *parameter_tvb=NULL;
int saved_hf;
@@ -4575,7 +4575,7 @@ dissect_ranap_GTP_TEI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p
if (!parameter_tvb)
return offset;
- proto_tree_add_item(tree, saved_hf, parameter_tvb, 0, 4, FALSE);
+ proto_tree_add_item(tree, saved_hf, parameter_tvb, 0, 4, ENC_BIG_ENDIAN);
@@ -4746,7 +4746,7 @@ dissect_ranap_ImmediateMDT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
static int
dissect_ranap_IMSI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 190 "../../asn1/ranap/ranap.cnf"
+#line 191 "../../asn1/ranap/ranap.cnf"
tvbuff_t* imsi_tvb;
const char *digit_str;
@@ -5595,7 +5595,7 @@ dissect_ranap_LocationReportingTransferInformation(tvbuff_t *tvb _U_, int offset
static int
dissect_ranap_L3_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 268 "../../asn1/ranap/ranap.cnf"
+#line 269 "../../asn1/ranap/ranap.cnf"
tvbuff_t *l3_info_tvb=NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -6015,7 +6015,7 @@ dissect_ranap_MSISDN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr
static int
dissect_ranap_NAS_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 213 "../../asn1/ranap/ranap.cnf"
+#line 214 "../../asn1/ranap/ranap.cnf"
tvbuff_t *nas_pdu_tvb=NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -6053,7 +6053,7 @@ dissect_ranap_NAS_SynchronisationIndicator(tvbuff_t *tvb _U_, int offset _U_, as
static int
dissect_ranap_NewBSS_To_OldBSS_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 260 "../../asn1/ranap/ranap.cnf"
+#line 261 "../../asn1/ranap/ranap.cnf"
tvbuff_t *bss_info_tvb=NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -6142,7 +6142,7 @@ dissect_ranap_Offload_RAB_Parameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
static int
dissect_ranap_OldBSS_ToNewBSS_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 252 "../../asn1/ranap/ranap.cnf"
+#line 253 "../../asn1/ranap/ranap.cnf"
tvbuff_t *bss_info_tvb=NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -7308,7 +7308,7 @@ dissect_ranap_RNSAPRelocationParameters(tvbuff_t *tvb _U_, int offset _U_, asn1_
static int
dissect_ranap_RRC_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 222 "../../asn1/ranap/ranap.cnf"
+#line 223 "../../asn1/ranap/ranap.cnf"
tvbuff_t *rrc_message_tvb=NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -7420,7 +7420,7 @@ dissect_ranap_Service_Handover(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
static int
dissect_ranap_Source_ToTarget_TransparentContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 357 "../../asn1/ranap/ranap.cnf"
+#line 358 "../../asn1/ranap/ranap.cnf"
dissect_ranap_SourceRNC_ToTargetRNC_TransparentContainer(tvb , offset, actx ,tree , hf_ranap_ranap_SourceRNC_ToTargetRNC_TransparentContainer_PDU );
@@ -7497,7 +7497,7 @@ static const per_sequence_t SourceRNC_ToTargetRNC_TransparentContainer_sequence[
static int
dissect_ranap_SourceRNC_ToTargetRNC_TransparentContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 343 "../../asn1/ranap/ranap.cnf"
+#line 344 "../../asn1/ranap/ranap.cnf"
/* If SourceRNC-ToTargetRNC-TransparentContainer is called trough
dissect_ranap_SourceRNC_ToTargetRNC_TransparentContainer_PDU
ProtocolIE_ID may be unset
@@ -7736,7 +7736,7 @@ dissect_ranap_SRVCC_Operation_Possible(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static int
dissect_ranap_Target_ToSource_TransparentContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 367 "../../asn1/ranap/ranap.cnf"
+#line 368 "../../asn1/ranap/ranap.cnf"
dissect_ranap_TargetRNC_ToSourceRNC_TransparentContainer(tvb , offset, actx ,tree , hf_ranap_ranap_TargetRNC_ToSourceRNC_TransparentContainer_PDU );
@@ -7867,9 +7867,9 @@ dissect_ranap_TraceType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
static int
dissect_ranap_TransportLayerAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 303 "../../asn1/ranap/ranap.cnf"
+#line 304 "../../asn1/ranap/ranap.cnf"
tvbuff_t *parameter_tvb=NULL;
- proto_tree *item;
+ proto_item *item;
proto_tree *subtree, *nsap_tree;
gint tvb_len;
@@ -7883,7 +7883,7 @@ dissect_ranap_TransportLayerAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
subtree = proto_item_add_subtree(actx->created_item, ett_ranap_TransportLayerAddress);
if (tvb_len==4){
/* IPv4 */
- proto_tree_add_item(subtree, hf_ranap_transportLayerAddress_ipv4, parameter_tvb, 0, tvb_len, ENC_NA);
+ proto_tree_add_item(subtree, hf_ranap_transportLayerAddress_ipv4, parameter_tvb, 0, tvb_len, ENC_BIG_ENDIAN);
}
if (tvb_len==16){
/* IPv6 */
@@ -8224,7 +8224,7 @@ dissect_ranap_VelocityEstimate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
static int
dissect_ranap_RAB_IE_ContainerList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 143 "../../asn1/ranap/ranap.cnf"
+#line 144 "../../asn1/ranap/ranap.cnf"
asn1_stack_frame_push(actx, "ProtocolIE-ContainerList");
asn1_param_push_integer(actx, 1);
asn1_param_push_integer(actx, maxNrOfRABs);
@@ -8240,7 +8240,7 @@ dissect_ranap_RAB_IE_ContainerList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static int
dissect_ranap_RAB_IE_ContainerPairList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 151 "../../asn1/ranap/ranap.cnf"
+#line 152 "../../asn1/ranap/ranap.cnf"
asn1_stack_frame_push(actx, "ProtocolIE-ContainerPairList");
asn1_param_push_integer(actx, 1);
asn1_param_push_integer(actx, maxNrOfRABs);
@@ -8256,7 +8256,7 @@ dissect_ranap_RAB_IE_ContainerPairList(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static int
dissect_ranap_IuSigConId_IE_ContainerList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 168 "../../asn1/ranap/ranap.cnf"
+#line 169 "../../asn1/ranap/ranap.cnf"
asn1_stack_frame_push(actx, "ProtocolIE-ContainerList");
asn1_param_push_integer(actx, 1);
asn1_param_push_integer(actx, maxNrOfIuSigConIds);
@@ -8272,7 +8272,7 @@ dissect_ranap_IuSigConId_IE_ContainerList(tvbuff_t *tvb _U_, int offset _U_, asn
static int
dissect_ranap_DirectTransfer_IE_ContainerList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 176 "../../asn1/ranap/ranap.cnf"
+#line 177 "../../asn1/ranap/ranap.cnf"
asn1_stack_frame_push(actx, "ProtocolIE-ContainerList");
asn1_param_push_integer(actx, 1);
asn1_param_push_integer(actx, maxNrOfDTs);
@@ -11066,11 +11066,11 @@ static int dissect_InterSystemInformationTransferType_PDU(tvbuff_t *tvb _U_, pac
offset += 7; offset >>= 3;
return offset;
}
-static int dissect_InterSystemInformation_TransparentContainer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
+int dissect_ranap_InterSystemInformation_TransparentContainer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
int offset = 0;
asn1_ctx_t asn1_ctx;
asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
- offset = dissect_ranap_InterSystemInformation_TransparentContainer(tvb, offset, &asn1_ctx, tree, hf_ranap_InterSystemInformation_TransparentContainer_PDU);
+ offset = dissect_ranap_InterSystemInformation_TransparentContainer(tvb, offset, &asn1_ctx, tree, hf_ranap_ranap_InterSystemInformation_TransparentContainer_PDU);
offset += 7; offset >>= 3;
return offset;
}
@@ -13451,7 +13451,7 @@ void proto_register_ranap(void) {
{ "InterSystemInformationTransferType", "ranap.InterSystemInformationTransferType",
FT_UINT32, BASE_DEC, VALS(ranap_InterSystemInformationTransferType_vals), 0,
NULL, HFILL }},
- { &hf_ranap_InterSystemInformation_TransparentContainer_PDU,
+ { &hf_ranap_ranap_InterSystemInformation_TransparentContainer_PDU,
{ "InterSystemInformation-TransparentContainer", "ranap.InterSystemInformation_TransparentContainer",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
@@ -16661,7 +16661,7 @@ proto_reg_handoff_ranap(void)
dissector_add_uint("ranap.extension", id_SourceBSS_ToTargetBSS_TransparentContainer, new_create_dissector_handle(dissect_SourceBSS_ToTargetBSS_TransparentContainer_PDU, proto_ranap));
dissector_add_uint("ranap.extension", id_TransportLayerAddress, new_create_dissector_handle(dissect_TransportLayerAddress_PDU, proto_ranap));
dissector_add_uint("ranap.extension", id_IuTransportAssociation, new_create_dissector_handle(dissect_IuTransportAssociation_PDU, proto_ranap));
- dissector_add_uint("ranap.extension", id_InterSystemInformation_TransparentContainer, new_create_dissector_handle(dissect_InterSystemInformation_TransparentContainer_PDU, proto_ranap));
+ dissector_add_uint("ranap.extension", id_InterSystemInformation_TransparentContainer, new_create_dissector_handle(dissect_ranap_InterSystemInformation_TransparentContainer_PDU, proto_ranap));
dissector_add_uint("ranap.extension", id_TargetBSS_ToSourceBSS_TransparentContainer, new_create_dissector_handle(dissect_TargetBSS_ToSourceBSS_TransparentContainer_PDU, proto_ranap));
dissector_add_uint("ranap.extension", id_Alt_RAB_Parameters, new_create_dissector_handle(dissect_Alt_RAB_Parameters_PDU, proto_ranap));
dissector_add_uint("ranap.extension", id_GERAN_BSC_Container, new_create_dissector_handle(dissect_GERAN_BSC_Container_PDU, proto_ranap));
diff --git a/epan/dissectors/packet-ranap.h b/epan/dissectors/packet-ranap.h
index b4285a2f7f..b92b7ded73 100644
--- a/epan/dissectors/packet-ranap.h
+++ b/epan/dissectors/packet-ranap.h
@@ -39,6 +39,7 @@ int dissect_ranap_EncryptionInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_
int dissect_ranap_IntegrityProtectionInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
int dissect_ranap_Service_Handover(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
int dissect_ranap_TargetRNC_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+int dissect_ranap_InterSystemInformation_TransparentContainer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);
int dissect_ranap_SourceCellID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);
int dissect_ranap_SourceRNC_ToTargetRNC_TransparentContainer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);
int dissect_ranap_TargetRNC_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);
diff --git a/epan/dissectors/packet-rdm.c b/epan/dissectors/packet-rdm.c
index 6d698d2da5..d6e7404135 100644
--- a/epan/dissectors/packet-rdm.c
+++ b/epan/dissectors/packet-rdm.c
@@ -4,13 +4,13 @@
* $Id$
*
* This dissector is written by
+ *
+ * Erwin Rol <erwin@erwinrol.com>
+ * Copyright 2003, 2011, 2012 Erwin Rol
*
* Shaun Jackman <sjackman@gmail.com>
* Copyright 2006 Pathway Connectivity
*
- * Erwin Rol <erwin@erwinrol.com>
- * Copyright 2003 Erwin Rol
- *
* Wireshark - Network traffic analyzer
* Gerald Combs <gerald@wireshark.org>
* Copyright 1999 Gerald Combs
@@ -49,37 +49,1995 @@
#include <glib.h>
#include <epan/packet.h>
+#define RDM_SC_RDM 0xCC
+#define RDM_SC_SUB_MESSAGE 0x01
+
+#define RDM_CC_DISCOVERY_COMMAND 0x10
+#define RDM_CC_DISCOVERY_COMMAND_RESPONSE 0x11
+#define RDM_CC_GET_COMMAND 0x20
+#define RDM_CC_GET_COMMAND_RESPONSE 0x21
+#define RDM_CC_SET_COMMAND 0x30
+#define RDM_CC_SET_COMMAND_RESPONSE 0x31
+
+static const value_string rdm_cc_vals[] = {
+ { RDM_CC_DISCOVERY_COMMAND, "Discovery Command" },
+ { RDM_CC_DISCOVERY_COMMAND_RESPONSE, "Discovery Command Response" },
+ { RDM_CC_GET_COMMAND, "Get Command" },
+ { RDM_CC_GET_COMMAND_RESPONSE, "Get Command Response" },
+ { RDM_CC_SET_COMMAND, "Set Command" },
+ { RDM_CC_SET_COMMAND_RESPONSE, "Set Command Response" },
+ { 0, NULL },
+};
+
+#define RDM_RESPONSE_TYPE_ACK 0x00
+#define RDM_RESPONSE_TYPE_ACK_TIMER 0x01
+#define RDM_RESPONSE_TYPE_NACK_REASON 0x02
+#define RDM_RESPONSE_TYPE_ACK_OVERFLOW 0x03
+
+static const value_string rdm_rt_vals[] = {
+ { RDM_RESPONSE_TYPE_ACK, "Ack" },
+ { RDM_RESPONSE_TYPE_ACK_TIMER, "Ack Timer" },
+ { RDM_RESPONSE_TYPE_NACK_REASON, "Nack Reason" },
+ { RDM_RESPONSE_TYPE_ACK_OVERFLOW, "Ack Overflow" },
+ { 0, NULL },
+};
+
+#define RDM_PARAM_ID_DISC_UNIQUE_BRANCH 0x0001
+#define RDM_PARAM_ID_DISC_MUTE 0x0002
+#define RDM_PARAM_ID_DISC_UN_MUTE 0x0003
+#define RDM_PARAM_ID_PROXIED_DEVICES 0x0010
+#define RDM_PARAM_ID_PROXIED_DEVICE_COUNT 0x0011
+#define RDM_PARAM_ID_COMMS_STATUS 0x0015
+#define RDM_PARAM_ID_QUEUED_MESSAGE 0x0020
+#define RDM_PARAM_ID_STATUS_MESSAGES 0x0030
+#define RDM_PARAM_ID_STATUS_ID_DESCRIPTION 0x0031
+#define RDM_PARAM_ID_CLEAR_STATUS_ID 0x0032
+#define RDM_PARAM_ID_SUB_DEVICE_STATUS_REPORT_THRESHOLD 0x0033
+#define RDM_PARAM_ID_SUPPORTED_PARAMETERS 0x0050
+#define RDM_PARAM_ID_PARAMETER_DESCRIPTION 0x0051
+#define RDM_PARAM_ID_DEVICE_INFO 0x0060
+#define RDM_PARAM_ID_PRODUCT_DETAIL_ID_LIST 0x0070
+#define RDM_PARAM_ID_DEVICE_MODEL_DESCRIPTION 0x0080
+#define RDM_PARAM_ID_MANUFACTURER_LABEL 0x0081
+#define RDM_PARAM_ID_DEVICE_LABEL 0x0082
+#define RDM_PARAM_ID_FACTORY_DEFAULTS 0x0090
+#define RDM_PARAM_ID_LANGUAGE_CAPABILITIES 0x00A0
+#define RDM_PARAM_ID_LANGUAGE 0x00B0
+#define RDM_PARAM_ID_SOFTWARE_VERSION_LABEL 0x00C0
+#define RDM_PARAM_ID_BOOT_SOFTWARE_VERSION_ID 0x00C1
+#define RDM_PARAM_ID_BOOT_SOFTWARE_VERSION_LABEL 0x00C2
+#define RDM_PARAM_ID_DMX_PERSONALITY 0x00E0
+#define RDM_PARAM_ID_DMX_PERSONALITY_DESCRIPTION 0x00E1
+#define RDM_PARAM_ID_DMX_START_ADDRESS 0x00F0
+#define RDM_PARAM_ID_SLOT_INFO 0x0120
+#define RDM_PARAM_ID_SLOT_DESCRIPTION 0x0121
+#define RDM_PARAM_ID_DEFAULT_SLOT_VALUE 0x0122
+#define RDM_PARAM_ID_SENSOR_DEFINITION 0x0200
+#define RDM_PARAM_ID_SENSOR_VALUE 0x0201
+#define RDM_PARAM_ID_RECORD_SENSORS 0x0202
+#define RDM_PARAM_ID_DEVICE_HOURS 0x0400
+#define RDM_PARAM_ID_LAMP_HOURS 0x0401
+#define RDM_PARAM_ID_LAMP_STRIKES 0x0402
+#define RDM_PARAM_ID_LAMP_STATE 0x0403
+#define RDM_PARAM_ID_LAMP_ON_MODE 0x0404
+#define RDM_PARAM_ID_DEVICE_POWER_CYCLES 0x0405
+#define RDM_PARAM_ID_DISPLAY_INVERT 0x0500
+#define RDM_PARAM_ID_DISPLAY_LEVEL 0x0501
+#define RDM_PARAM_ID_PAN_INVERT 0x0600
+#define RDM_PARAM_ID_TILT_INVERT 0x0601
+#define RDM_PARAM_ID_PAN_TILT_SWAP 0x0602
+#define RDM_PARAM_ID_REAL_TIME_CLOCK 0x0603
+#define RDM_PARAM_ID_IDENTIFY_DEVICE 0x1000
+#define RDM_PARAM_ID_RESET_DEVICE 0x1001
+#define RDM_PARAM_ID_POWER_STATE 0x1010
+#define RDM_PARAM_ID_PERFORM_SELFTEST 0x1020
+#define RDM_PARAM_ID_SELF_TEST_DESCRIPTION 0x1021
+#define RDM_PARAM_ID_CAPTURE_PRESET 0x1030
+#define RDM_PARAM_ID_PRESET_PLAYBACK 0x1031
+
+static const value_string rdm_param_id_vals[] = {
+ { RDM_PARAM_ID_DISC_UNIQUE_BRANCH, "DISC_UNIQUE_BRANCH" },
+ { RDM_PARAM_ID_DISC_MUTE, "DISC_MUTE" },
+ { RDM_PARAM_ID_DISC_UN_MUTE, "DISC_UN_MUTE" },
+ { RDM_PARAM_ID_PROXIED_DEVICES, "PROXIED_DEVICES" },
+ { RDM_PARAM_ID_PROXIED_DEVICE_COUNT, "PROXIED_DEVICE_COUNT" },
+ { RDM_PARAM_ID_COMMS_STATUS, "COMMS_STATUS" },
+ { RDM_PARAM_ID_QUEUED_MESSAGE, "QUEUED_MESSAGE" },
+ { RDM_PARAM_ID_STATUS_MESSAGES, "STATUS_MESSAGES" },
+ { RDM_PARAM_ID_STATUS_ID_DESCRIPTION, "STATUS_ID_DESCRIPTION" },
+ { RDM_PARAM_ID_CLEAR_STATUS_ID, "CLEAR_STATUS_ID" },
+ { RDM_PARAM_ID_SUB_DEVICE_STATUS_REPORT_THRESHOLD, "DEVICE_STATUS_REPORT_THRESHOLD" },
+ { RDM_PARAM_ID_SUPPORTED_PARAMETERS, "SUPPORTED_PARAMETERS" },
+ { RDM_PARAM_ID_PARAMETER_DESCRIPTION, "PARAMETER_DESCRIPTION" },
+ { RDM_PARAM_ID_DEVICE_INFO, "DEVICE_INFO" },
+ { RDM_PARAM_ID_PRODUCT_DETAIL_ID_LIST, "PRODUCT_DETAIL_ID_LIST" },
+ { RDM_PARAM_ID_DEVICE_MODEL_DESCRIPTION, "DEVICE_MODEL_DESCRIPTION" },
+ { RDM_PARAM_ID_MANUFACTURER_LABEL, "MANUFACTURER_LABEL" },
+ { RDM_PARAM_ID_DEVICE_LABEL, "DEVICE_LABEL" },
+ { RDM_PARAM_ID_FACTORY_DEFAULTS, "FACTORY_DEFAULTS" },
+ { RDM_PARAM_ID_LANGUAGE_CAPABILITIES, "LANGUAGE_CAPABILITIES" },
+ { RDM_PARAM_ID_LANGUAGE, "LANGUAGE" },
+ { RDM_PARAM_ID_SOFTWARE_VERSION_LABEL, "SOFTWARE_VERSION_LABEL" },
+ { RDM_PARAM_ID_BOOT_SOFTWARE_VERSION_ID, "BOOT_SOFTWARE_VERSION_ID" },
+ { RDM_PARAM_ID_BOOT_SOFTWARE_VERSION_LABEL, "BOOT_SOFTWARE_VERSION_LABEL" },
+ { RDM_PARAM_ID_DMX_PERSONALITY, "DMX_PERSONALITY" },
+ { RDM_PARAM_ID_DMX_PERSONALITY_DESCRIPTION, "DMX_PERSONALITY_DESCRIPTION" },
+ { RDM_PARAM_ID_DMX_START_ADDRESS, "DMX_START_ADDRESS" },
+ { RDM_PARAM_ID_SLOT_INFO, "SLOT_INFO" },
+ { RDM_PARAM_ID_SLOT_DESCRIPTION, "SLOT_DESCRIPTION" },
+ { RDM_PARAM_ID_DEFAULT_SLOT_VALUE, "DEFAULT_SLOT_VALUE" },
+ { RDM_PARAM_ID_SENSOR_DEFINITION, "SENSOR_DEFINITION" },
+ { RDM_PARAM_ID_SENSOR_VALUE, "SENSOR_VALUE" },
+ { RDM_PARAM_ID_RECORD_SENSORS, "RECORD_SENSORS" },
+ { RDM_PARAM_ID_DEVICE_HOURS, "DEVICE_HOURS" },
+ { RDM_PARAM_ID_LAMP_HOURS, "LAMP_HOURS" },
+ { RDM_PARAM_ID_LAMP_STRIKES, "LAMP_STRIKES" },
+ { RDM_PARAM_ID_LAMP_STATE, "LAMP_STATE" },
+ { RDM_PARAM_ID_LAMP_ON_MODE, "LAMP_ON_MODE" },
+ { RDM_PARAM_ID_DEVICE_POWER_CYCLES, "DEVICE_POWER_CYCLES" },
+ { RDM_PARAM_ID_DISPLAY_INVERT, "DISPLAY_INVERT" },
+ { RDM_PARAM_ID_DISPLAY_LEVEL, "DISPLAY_LEVEL" },
+ { RDM_PARAM_ID_PAN_INVERT, "PAN_INVERT" },
+ { RDM_PARAM_ID_TILT_INVERT, "TILT_INVERT" },
+ { RDM_PARAM_ID_PAN_TILT_SWAP, "PAN_TILT_SWAP" },
+ { RDM_PARAM_ID_REAL_TIME_CLOCK, "REAL_TIME_CLOCK" },
+ { RDM_PARAM_ID_IDENTIFY_DEVICE, "IDENTIFY_DEVICE" },
+ { RDM_PARAM_ID_RESET_DEVICE, "RESET_DEVICE" },
+ { RDM_PARAM_ID_POWER_STATE, "POWER_STATE" },
+ { RDM_PARAM_ID_PERFORM_SELFTEST, "PERFORM_SELFTEST" },
+ { RDM_PARAM_ID_SELF_TEST_DESCRIPTION, "SELF_TEST_DESCRIPTION" },
+ { RDM_PARAM_ID_CAPTURE_PRESET, "CAPTURE_PRESET" },
+ { RDM_PARAM_ID_PRESET_PLAYBACK, "PRESET_PLAYBACK" },
+ { 0, NULL },
+};
+
+
+#define RDM_STATUS_NONE 0x00
+#define RMD_STATUS_GET_LAST_MESSAGE 0x01
+#define RDM_STATUS_ADVISORY 0x02
+#define RDM_STATUS_WARNING 0x03
+#define RDM_STATUS_ERROR 0x04
+
+static const value_string rdm_status_vals[] = {
+ { RDM_STATUS_NONE, "None" },
+ { RMD_STATUS_GET_LAST_MESSAGE, "Get Last Message" },
+ { RDM_STATUS_ADVISORY, "Advisory" },
+ { RDM_STATUS_WARNING, "Warning" },
+ { RDM_STATUS_ERROR, "Error" },
+ { 0, NULL },
+};
+
+#define RDM_PREFIX_NONE 0x00
+#define RDM_PREFIX_DECI 0x01
+#define RDM_PREFIX_CENTI 0x02
+#define RDM_PREFIX_MILLI 0x03
+#define RDM_PREFIX_MICRO 0x04
+#define RDM_PREFIX_NANO 0x05
+#define RDM_PREFIX_PICO 0x06
+#define RDM_PREFIX_FEMPTO 0x07
+#define RDM_PREFIX_ATTO 0x08
+#define RDM_PREFIX_ZEPTO 0x09
+#define RDM_PREFIX_YOCTO 0x0A
+#define RDM_PREFIX_DECA 0x11
+#define RDM_PREFIX_HECTO 0x12
+#define RDM_PREFIX_KILO 0x13
+#define RDM_PREFIX_MEGA 0x14
+#define RDM_PREFIX_GIGA 0x15
+#define RDM_PREFIX_TERRA 0x16
+#define RDM_PREFIX_PETA 0x17
+#define RDM_PREFIX_EXA 0x18
+#define RDM_PREFIX_ZETTA 0x19
+#define RDM_PREFIX_YOTTA 0x1A
+
+static const value_string rdm_prefix_vals[] = {
+ { RDM_PREFIX_NONE, "NONE (x1)" },
+ { RDM_PREFIX_DECI, "deci (x10^-1)" },
+ { RDM_PREFIX_CENTI, "centi (x10^-2)" },
+ { RDM_PREFIX_MILLI, "milli (x10^-3)" },
+ { RDM_PREFIX_MICRO, "micro (x10^-6)" },
+ { RDM_PREFIX_NANO, "nano (x10^-9)" },
+ { RDM_PREFIX_PICO, "pico (x10^-12)" },
+ { RDM_PREFIX_FEMPTO, "fempto (x10^-15)" },
+ { RDM_PREFIX_ATTO, "atto (x10^-18)" },
+ { RDM_PREFIX_ZEPTO, "zepto (x10^-21)" },
+ { RDM_PREFIX_YOCTO, "yocto (x10^-24)" },
+ { RDM_PREFIX_DECA, "deca (x10^1)" },
+ { RDM_PREFIX_HECTO, "hecto (x10^2)" },
+ { RDM_PREFIX_KILO, "kilo (x10^3)" },
+ { RDM_PREFIX_MEGA, "mega (x10^6)" },
+ { RDM_PREFIX_GIGA, "giga (x10^9)" },
+ { RDM_PREFIX_TERRA, "terra (x10^12)" },
+ { RDM_PREFIX_PETA, "peta (x10^15)" },
+ { RDM_PREFIX_EXA, "exa (x10^18)" },
+ { RDM_PREFIX_ZETTA, "zetta (x10^21)" },
+ { RDM_PREFIX_YOTTA, "yotta (x10^24)" },
+ { 0, NULL },
+};
+
+#define RDM_UNITS_NONE 0x00
+#define RDM_UNITS_CENTIGRADE 0x01
+#define RDM_UNITS_VOLTS_DC 0x02
+#define RDM_UNITS_VOLTS_AC_PEAK 0x03
+#define RDM_UNITS_VOLTS_AC_RMS 0x04
+#define RDM_UNITS_AMPERE_DC 0x05
+#define RDM_UNITS_AMPERE_AC_PEAK 0x06
+#define RDM_UNITS_AMPERE_AC_RMS 0x07
+#define RDM_UNITS_HERTZ 0x08
+#define RDM_UNITS_OHM 0x09
+#define RDM_UNITS_WATT 0x0A
+#define RDM_UNITS_KILOGRAM 0x0B
+#define RDM_UNITS_METERS 0x0C
+#define RDM_UNITS_METERS_SQUARED 0x0D
+#define RDM_UNITS_METERS_CUBED 0x0E
+#define RDM_UNITS_KILOGRAMMES_PER_METER_CUBED 0x0F
+#define RDM_UNITS_METERS_PER_SECOND 0x10
+#define RDM_UNITS_METERS_PER_SECOND_SQUARED 0x11
+#define RDM_UNITS_NEWTON 0x12
+#define RDM_UNITS_JOULE 0x13
+#define RDM_UNITS_PASCAL 0x14
+#define RDM_UNITS_SECOND 0x15
+#define RDM_UNITS_DEGREE 0x16
+#define RDM_UNITS_STERADIAN 0x17
+#define RDM_UNITS_CANDELA 0x18
+#define RDM_UNITS_LUMEN 0x19
+#define RDM_UNITS_LUX 0x1A
+#define RDM_UNITS_IRE 0x1B
+#define RDM_UNITS_BYTE 0x1C
+
+static const value_string rdm_unit_vals[] = {
+ { RDM_UNITS_NONE, "NONE" },
+ { RDM_UNITS_CENTIGRADE, "Centigrade" },
+ { RDM_UNITS_VOLTS_DC, "Volts DC" },
+ { RDM_UNITS_VOLTS_AC_PEAK, "Volts AC Peak" },
+ { RDM_UNITS_VOLTS_AC_RMS, "Volts AC RMS" },
+ { RDM_UNITS_AMPERE_DC, "Ampere DC" },
+ { RDM_UNITS_AMPERE_AC_PEAK, "Ampere AC Peak" },
+ { RDM_UNITS_AMPERE_AC_RMS, "Ampere AC RMS" },
+ { RDM_UNITS_HERTZ, "Hertz" },
+ { RDM_UNITS_OHM, "Ohm" },
+ { RDM_UNITS_WATT, "Watt" },
+ { RDM_UNITS_KILOGRAM, "Kilogram" },
+ { RDM_UNITS_METERS, "Meters" },
+ { RDM_UNITS_METERS_SQUARED, "Meters Squared" },
+ { RDM_UNITS_METERS_CUBED, "Meters Cubed" },
+ { RDM_UNITS_KILOGRAMMES_PER_METER_CUBED, "Kilogrammes per Meter Cubed" },
+ { RDM_UNITS_METERS_PER_SECOND, "Meters per Second" },
+ { RDM_UNITS_METERS_PER_SECOND_SQUARED, "Meters per Second Squared" },
+ { RDM_UNITS_NEWTON, "Newton" },
+ { RDM_UNITS_JOULE, "Joule" },
+ { RDM_UNITS_PASCAL, "Pascal" },
+ { RDM_UNITS_SECOND, "Second" },
+ { RDM_UNITS_DEGREE, "Degree" },
+ { RDM_UNITS_STERADIAN, "Steradian" },
+ { RDM_UNITS_CANDELA, "Candela" },
+ { RDM_UNITS_LUMEN, "Lumen" },
+ { RDM_UNITS_LUX, "Lux" },
+ { RDM_UNITS_IRE, "Ire" },
+ { RDM_UNITS_BYTE, "Byte" },
+ { 0, NULL },
+};
+
+#define RDM_SENS_TEMPERATURE 0x00
+#define RDM_SENS_VOLTAGE 0x01
+#define RDM_SENS_CURRENT 0x02
+#define RDM_SENS_FREQUENCY 0x03
+#define RDM_SENS_RESISTANCE 0x04
+#define RDM_SENS_POWER 0x05
+#define RDM_SENS_MASS 0x06
+#define RDM_SENS_LENGTH 0x07
+#define RDM_SENS_AREA 0x08
+#define RDM_SENS_VOLUME 0x09
+#define RDM_SENS_DENSITY 0x0A
+#define RDM_SENS_VELOCITY 0x0B
+#define RDM_SENS_ACCELERATION 0x0C
+#define RDM_SENS_FORCE 0x0D
+#define RDM_SENS_ENERGY 0x0E
+#define RDM_SENS_PRESSURE 0x0F
+#define RDM_SENS_TIME 0x10
+#define RDM_SENS_ANGLE 0x11
+#define RDM_SENS_POSITION_X 0x12
+#define RDM_SENS_POSITION_Y 0x13
+#define RDM_SENS_POSITION_Z 0x14
+#define RDM_SENS_ANGULAR_VELOCITY 0x15
+#define RDM_SENS_LUMINOUS_INTENSITY 0x16
+#define RDM_SENS_LUMINOUS_FLUX 0x17
+#define RDM_SENS_ILLUMINANCE 0x18
+#define RDM_SENS_CHROMINANCE_RED 0x19
+#define RDM_SENS_CHROMINANCE_GREEN 0x1A
+#define RDM_SENS_CHROMINANCE_BLUE 0x1B
+#define RDM_SENS_CONTACTS 0x1C
+#define RDM_SENS_MEMORY 0x1D
+#define RDM_SENS_ITEMS 0x1E
+#define RDM_SENS_HUMIDITY 0x1F
+#define RDM_SENS_COUNTER_16BIT 0x20
+#define RDM_SENS_OTHER 0x7F
+
+static const value_string rdm_sensor_type_vals[] = {
+ { RDM_SENS_TEMPERATURE, "Temperature" },
+ { RDM_SENS_VOLTAGE, "Voltage" },
+ { RDM_SENS_CURRENT, "Current" },
+ { RDM_SENS_FREQUENCY, "Frequency" },
+ { RDM_SENS_RESISTANCE, "Resistance" },
+ { RDM_SENS_POWER, "Power" },
+ { RDM_SENS_MASS, "Mass" },
+ { RDM_SENS_LENGTH, "Lenght" },
+ { RDM_SENS_AREA, "Area" },
+ { RDM_SENS_VOLUME, "Volume" },
+ { RDM_SENS_DENSITY, "Density" },
+ { RDM_SENS_VELOCITY, "Velocity" },
+ { RDM_SENS_ACCELERATION, "Acceleration" },
+ { RDM_SENS_FORCE, "Force" },
+ { RDM_SENS_ENERGY, "Energy" },
+ { RDM_SENS_PRESSURE, "Pressure" },
+ { RDM_SENS_TIME, "Time" },
+ { RDM_SENS_ANGLE, "Angle" },
+ { RDM_SENS_POSITION_X, "Position X" },
+ { RDM_SENS_POSITION_Y, "Position Y" },
+ { RDM_SENS_POSITION_Z, "Position Z" },
+ { RDM_SENS_ANGULAR_VELOCITY, "Angular Velocity" },
+ { RDM_SENS_LUMINOUS_INTENSITY, "Luminous Intensity" },
+ { RDM_SENS_LUMINOUS_FLUX, "Luminous Flux" },
+ { RDM_SENS_ILLUMINANCE, "Illuminance" },
+ { RDM_SENS_CHROMINANCE_RED, "Chrominance Red" },
+ { RDM_SENS_CHROMINANCE_GREEN, "Chrominance Green" },
+ { RDM_SENS_CHROMINANCE_BLUE, "Chrominance Blue" },
+ { RDM_SENS_CONTACTS, "Contacts" },
+ { RDM_SENS_MEMORY, "Memory" },
+ { RDM_SENS_ITEMS, "Items" },
+ { RDM_SENS_HUMIDITY, "Humidity" },
+ { RDM_SENS_COUNTER_16BIT, "Counter 16bit" },
+ { RDM_SENS_OTHER, "Other" },
+ { 0, NULL} ,
+};
+
+#define RDM_PRODUCT_CATEGORY_NOT_DECLARED 0x0000
+#define RDM_PRODUCT_CATEGORY_FIXTURE 0x0100
+#define RDM_PRODUCT_CATEGORY_FIXTURE_FIXED 0x0101
+#define RDM_PRODUCT_CATEGORY_FIXTURE_MOVING_YOKE 0x0102
+#define RDM_PRODUCT_CATEGORY_FIXTURE_MOVING_MIRROR 0x0103
+#define RDM_PRODUCT_CATEGORY_FIXTURE_OTHER 0x01FF
+#define RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY 0x0200
+#define RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY_COLOR 0x0201
+#define RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY_YOKE 0x0202
+#define RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY_MIRROR 0x0203
+#define RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY_EFFECT 0x0204
+#define RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY_BEAM 0x0205
+#define RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY_OTHER 0x02FF
+#define RDM_PRODUCT_CATEGORY_PROJECTOR 0x0300
+#define RDM_PRODUCT_CATEGORY_PROJECTOR_FIXED 0x0301
+#define RDM_PRODUCT_CATEGORY_PROJECTOR_MOVING_YOKE 0x0302
+#define RDM_PRODUCT_CATEGORY_PROJECTOR_MOVING_MIRROR 0x0303
+#define RDM_PRODUCT_CATEGORY_PROJECTOR_OTHER 0x03FF
+#define RDM_PRODUCT_CATEGORY_ATMOSPHERIC 0x0400
+#define RDM_PRODUCT_CATEGORY_ATMOSPHERIC_EFFECT 0x0401
+#define RDM_PRODUCT_CATEGORY_ATMOSPHERIC_PYRO 0x0402
+#define RDM_PRODUCT_CATEGORY_ATMOSPHERIC_OTHER 0x04FF
+#define RDM_PRODUCT_CATEGORY_DIMMER 0x0500
+#define RDM_PRODUCT_CATEGORY_DIMMER_AC_INCANDESCENT 0x0501
+#define RDM_PRODUCT_CATEGORY_DIMMER_AC_FLUORESCENT 0x0502
+#define RDM_PRODUCT_CATEGORY_DIMMER_AC_COLDCATHODE 0x0503
+#define RDM_PRODUCT_CATEGORY_DIMMER_AC_NONDIM 0x0504
+#define RDM_PRODUCT_CATEGORY_DIMMER_AC_ELV 0x0505
+#define RDM_PRODUCT_CATEGORY_DIMMER_AC_OTHER 0x0506
+#define RDM_PRODUCT_CATEGORY_DIMMER_DC_LEVEL 0x0507
+#define RDM_PRODUCT_CATEGORY_DIMMER_DC_PWM 0x0508
+#define RDM_PRODUCT_CATEGORY_DIMMER_CS_LED 0x0509
+#define RDM_PRODUCT_CATEGORY_DIMMER_OTHER 0x05FF
+#define RDM_PRODUCT_CATEGORY_POWER 0x0600
+#define RDM_PRODUCT_CATEGORY_POWER_CONTROL 0x0601
+#define RDM_PRODUCT_CATEGORY_POWER_SOURCE 0x0602
+#define RDM_PRODUCT_CATEGORY_POWER_OTHER 0x06FF
+#define RDM_PRODUCT_CATEGORY_SCENIC 0x0700
+#define RDM_PRODUCT_CATEGORY_SCENIC_DRIVE 0x0701
+#define RDM_PRODUCT_CATEGORY_SCENIC_OTHER 0x07FF
+#define RDM_PRODUCT_CATEGORY_DATA 0x0800
+#define RDM_PRODUCT_CATEGORY_DATA_DISTRIBUTION 0x0801
+#define RDM_PRODUCT_CATEGORY_DATA_CONVERSION 0x0802
+#define RDM_PRODUCT_CATEGORY_DATA_OTHER 0x08FF
+#define RDM_PRODUCT_CATEGORY_AV 0x0900
+#define RDM_PRODUCT_CATEGORY_AV_AUDIO 0x0901
+#define RDM_PRODUCT_CATEGORY_AV_VIDEO 0x0902
+#define RDM_PRODUCT_CATEGORY_AV_OTHER 0x09FF
+#define RDM_PRODUCT_CATEGORY_MONITOR 0x0A00
+#define RDM_PRODUCT_CATEGORY_MONITOR_ACLINEPOWER 0x0A01
+#define RDM_PRODUCT_CATEGORY_MONITOR_DCPOWER 0x0A02
+#define RDM_PRODUCT_CATEGORY_MONITOR_ENVIRONMENTAL 0x0A03
+#define RDM_PRODUCT_CATEGORY_MONITOR_OTHER 0x0AFF
+#define RDM_PRODUCT_CATEGORY_CONTROL 0x7000
+#define RDM_PRODUCT_CATEGORY_CONTROL_CONTROLLER 0x7001
+#define RDM_PRODUCT_CATEGORY_CONTROL_BACKUPDEVICE 0x7002
+#define RDM_PRODUCT_CATEGORY_CONTROL_OTHER 0x70FF
+#define RDM_PRODUCT_CATEGORY_TEST 0x7100
+#define RDM_PRODUCT_CATEGORY_TEST_EQUIPMENT 0x7101
+#define RDM_PRODUCT_CATEGORY_TEST_EQUIPMENT_OTHER 0x71FF
+#define RDM_PRODUCT_CATEGORY_OTHER 0x7FFF
+
+static const value_string rdm_product_cat_vals[] = {
+ { RDM_PRODUCT_CATEGORY_NOT_DECLARED, "Not Declared" },
+ { RDM_PRODUCT_CATEGORY_FIXTURE, "Fixture" },
+ { RDM_PRODUCT_CATEGORY_FIXTURE_FIXED, "Fixture Fixed" },
+ { RDM_PRODUCT_CATEGORY_FIXTURE_MOVING_YOKE, "Fixture Moving Yoke" },
+ { RDM_PRODUCT_CATEGORY_FIXTURE_MOVING_MIRROR, "Fixture Moving Mirror" },
+ { RDM_PRODUCT_CATEGORY_FIXTURE_OTHER, "Fixture Other" },
+ { RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY, "Fixture Accessory" },
+ { RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY_COLOR, "Fixture Accessory Color" },
+ { RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY_YOKE, "Fixture Accessory Yoke" },
+ { RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY_MIRROR,"Fixture Accessory Mirror" },
+ { RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY_EFFECT,"Fixture Accessory Effect" },
+ { RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY_BEAM, "Fixture Accessory Beam" },
+ { RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY_OTHER, "Fixture Accessory Other" },
+ { RDM_PRODUCT_CATEGORY_PROJECTOR, "Projector" },
+ { RDM_PRODUCT_CATEGORY_PROJECTOR_FIXED, "Projector Fixed" },
+ { RDM_PRODUCT_CATEGORY_PROJECTOR_MOVING_YOKE, "Projector Moving Yoke" },
+ { RDM_PRODUCT_CATEGORY_PROJECTOR_MOVING_MIRROR, "Projector Moving Mirror" },
+ { RDM_PRODUCT_CATEGORY_PROJECTOR_OTHER, "Projector Other" },
+ { RDM_PRODUCT_CATEGORY_ATMOSPHERIC, "Atmospheric" },
+ { RDM_PRODUCT_CATEGORY_ATMOSPHERIC_EFFECT, "Atmospheric Effect" },
+ { RDM_PRODUCT_CATEGORY_ATMOSPHERIC_PYRO, "Atmospheric Pyro" },
+ { RDM_PRODUCT_CATEGORY_ATMOSPHERIC_OTHER, "Atmospheric Other" },
+ { RDM_PRODUCT_CATEGORY_DIMMER, "Dimmer" },
+ { RDM_PRODUCT_CATEGORY_DIMMER_AC_INCANDESCENT, "Dimmer AC Incandescent" },
+ { RDM_PRODUCT_CATEGORY_DIMMER_AC_FLUORESCENT, "Dimmer AC Fluorescent" },
+ { RDM_PRODUCT_CATEGORY_DIMMER_AC_COLDCATHODE, "Dimmer AC Coldcathode" },
+ { RDM_PRODUCT_CATEGORY_DIMMER_AC_NONDIM, "Dimmer AC Nondim" },
+ { RDM_PRODUCT_CATEGORY_DIMMER_AC_ELV, "Dimmer AC ELV" },
+ { RDM_PRODUCT_CATEGORY_DIMMER_AC_OTHER, "Dimmer AC Other" },
+ { RDM_PRODUCT_CATEGORY_DIMMER_DC_LEVEL, "Dimmer DC Level" },
+ { RDM_PRODUCT_CATEGORY_DIMMER_DC_PWM, "Dimmer DC PWM" },
+ { RDM_PRODUCT_CATEGORY_DIMMER_CS_LED, "Dimmer CS LED" },
+ { RDM_PRODUCT_CATEGORY_DIMMER_OTHER, "Dimmer Other" },
+ { RDM_PRODUCT_CATEGORY_POWER, "Power" },
+ { RDM_PRODUCT_CATEGORY_POWER_CONTROL, "Power Control" },
+ { RDM_PRODUCT_CATEGORY_POWER_SOURCE, "Power Source" },
+ { RDM_PRODUCT_CATEGORY_POWER_OTHER, "Power Other" },
+ { RDM_PRODUCT_CATEGORY_SCENIC, "Scenic" },
+ { RDM_PRODUCT_CATEGORY_SCENIC_DRIVE, "Scenic Drive" },
+ { RDM_PRODUCT_CATEGORY_SCENIC_OTHER, "Scenic Other" },
+ { RDM_PRODUCT_CATEGORY_DATA, "Data" },
+ { RDM_PRODUCT_CATEGORY_DATA_DISTRIBUTION, "Data Distribution" },
+ { RDM_PRODUCT_CATEGORY_DATA_CONVERSION, "Data Conversion" },
+ { RDM_PRODUCT_CATEGORY_DATA_OTHER, "Data Other" },
+ { RDM_PRODUCT_CATEGORY_AV, "AV" },
+ { RDM_PRODUCT_CATEGORY_AV_AUDIO, "AV Audio" },
+ { RDM_PRODUCT_CATEGORY_AV_VIDEO, "AV Video" },
+ { RDM_PRODUCT_CATEGORY_AV_OTHER, "AV Other" },
+ { RDM_PRODUCT_CATEGORY_MONITOR, "Monitor" },
+ { RDM_PRODUCT_CATEGORY_MONITOR_ACLINEPOWER, "Monitor AC Line Power" },
+ { RDM_PRODUCT_CATEGORY_MONITOR_DCPOWER, "Monitor DC Power" },
+ { RDM_PRODUCT_CATEGORY_MONITOR_ENVIRONMENTAL, "Monitor Environmental" },
+ { RDM_PRODUCT_CATEGORY_MONITOR_OTHER, "Monitor Other" },
+ { RDM_PRODUCT_CATEGORY_CONTROL, "Control" },
+ { RDM_PRODUCT_CATEGORY_CONTROL_CONTROLLER, "Control Controller" },
+ { RDM_PRODUCT_CATEGORY_CONTROL_BACKUPDEVICE, "Control Backup Device" },
+ { RDM_PRODUCT_CATEGORY_CONTROL_OTHER, "Control Other" },
+ { RDM_PRODUCT_CATEGORY_TEST, "Test" },
+ { RDM_PRODUCT_CATEGORY_TEST_EQUIPMENT, "Test Equipment" },
+ { RDM_PRODUCT_CATEGORY_TEST_EQUIPMENT_OTHER, "Test Equipment Other" },
+ { RDM_PRODUCT_CATEGORY_OTHER, "Other" },
+ { 0, NULL },
+};
+
static int proto_rdm = -1;
-static int hf_rdm_start_code = -1;
static int hf_rdm_sub_start_code = -1;
static int hf_rdm_message_length = -1;
static int hf_rdm_dest_uid = -1;
static int hf_rdm_src_uid = -1;
static int hf_rdm_transaction_number = -1;
+static int hf_rdm_port_id = -1;
static int hf_rdm_response_type = -1;
static int hf_rdm_message_count = -1;
static int hf_rdm_sub_device = -1;
+static int hf_rdm_mdb = -1;
static int hf_rdm_command_class = -1;
static int hf_rdm_parameter_id = -1;
static int hf_rdm_parameter_data_length = -1;
static int hf_rdm_parameter_data = -1;
+static int hf_rdm_parameter_data_raw = -1;
static int hf_rdm_intron = -1;
static int hf_rdm_checksum = -1;
+static int hf_rdm_checksum_good = -1;
+static int hf_rdm_checksum_bad = -1;
static int hf_rdm_trailer = -1;
+static int hf_rdm_pd_device_label = -1;
+
+static int hf_rdm_pd_manu_label = -1;
+
+static int hf_rdm_pd_dmx_start_address = -1;
+
+static int hf_rdm_pd_queued_message_status = -1;
+
+static int hf_rdm_pd_sensor_nr = -1;
+static int hf_rdm_pd_sensor_type = -1;
+static int hf_rdm_pd_sensor_unit = -1;
+static int hf_rdm_pd_sensor_prefix = -1;
+static int hf_rdm_pd_sensor_value_pres = -1;
+static int hf_rdm_pd_sensor_value_low = -1;
+static int hf_rdm_pd_sensor_value_high = -1;
+static int hf_rdm_pd_sensor_value_rec = -1;
+
+static int hf_rdm_pd_sensor_range_min_value = -1;
+static int hf_rdm_pd_sensor_range_max_value = -1;
+static int hf_rdm_pd_sensor_normal_min_value = -1;
+static int hf_rdm_pd_sensor_normal_max_value = -1;
+static int hf_rdm_pd_sensor_recorded_value_support = -1;
+static int hf_rdm_pd_sensor_description = -1;
+
+static int hf_rdm_pd_device_hours = -1;
+static int hf_rdm_pd_lamp_hours = -1;
+static int hf_rdm_pd_lamp_strikes = -1;
+
+
+static int hf_rdm_pd_proto_vers = -1;
+static int hf_rdm_pd_device_model_id = -1;
+static int hf_rdm_pd_product_cat = -1;
+static int hf_rdm_pd_software_vers_id = -1;
+static int hf_rdm_pd_dmx_footprint = -1;
+static int hf_rdm_pd_dmx_pers_current = -1;
+static int hf_rdm_pd_dmx_pers_total = -1;
+static int hf_rdm_pd_sub_device_count = -1;
+static int hf_rdm_pd_sensor_count = -1;
+
+static int hf_rdm_pd_device_model_description = -1;
+
+static int hf_rdm_pd_disc_unique_branch_lb_uid = -1;
+static int hf_rdm_pd_disc_unique_branch_ub_uid = -1;
+static int hf_rdm_pd_disc_mute_control_field = -1;
+static int hf_rdm_pd_disc_mute_binding_uid = -1;
+static int hf_rdm_pd_disc_unmute_control_field = -1;
+static int hf_rdm_pd_disc_unmute_binding_uid = -1;
+static int hf_rdm_pd_proxied_devices_uid = -1;
+static int hf_rdm_pd_proxied_device_count = -1;
+static int hf_rdm_pd_proxied_device_list_change = -1;
+static int hf_rdm_pd_real_time_clock_year = -1;
+static int hf_rdm_pd_real_time_clock_month = -1;
+static int hf_rdm_pd_real_time_clock_day = -1;
+static int hf_rdm_pd_real_time_clock_hour = -1;
+static int hf_rdm_pd_real_time_clock_minute = -1;
+static int hf_rdm_pd_real_time_clock_second = -1;
+static int hf_rdm_pd_lamp_state = -1;
+static int hf_rdm_pd_lamp_on_mode = -1;
+static int hf_rdm_pd_device_power_cycles = -1;
+static int hf_rdm_pd_display_invert = -1;
+static int hf_rdm_pd_display_level = -1;
+static int hf_rdm_pd_pan_invert = -1;
+static int hf_rdm_pd_tilt_invert = -1;
+static int hf_rdm_pd_tilt_swap = -1;
+static int hf_rdm_pd_selftest_nr = -1;
+static int hf_rdm_pd_selftest_state = -1;
+static int hf_rdm_pd_selftest_description = -1;
+static int hf_rdm_pd_language_code = -1;
+static int hf_rdm_pd_identify_device = -1;
+static int hf_rdm_pd_identify_device_state = -1;
+static int hf_rdm_pd_reset_device = -1;
+static int hf_rdm_pd_power_state = -1;
+static int hf_rdm_pd_capture_preset_scene_nr = -1;
+static int hf_rdm_pd_capture_preset_up_fade_time = -1;
+static int hf_rdm_pd_capture_preset_down_fade_time = -1;
+static int hf_rdm_pd_capture_preset_wait_time = -1;
+static int hf_rdm_pd_preset_playback_mode = -1;
+static int hf_rdm_pd_preset_playback_level = -1;
+static int hf_rdm_pd_parameter_id = -1;
+static int hf_rdm_pd_parameter_pdl_size = -1;
+static int hf_rdm_pd_parameter_data_type = -1;
+static int hf_rdm_pd_parameter_cmd_class = -1;
+static int hf_rdm_pd_parameter_type = -1;
+static int hf_rdm_pd_parameter_unit = -1;
+static int hf_rdm_pd_parameter_prefix = -1;
+static int hf_rdm_pd_parameter_min_value = -1;
+static int hf_rdm_pd_parameter_max_value = -1;
+static int hf_rdm_pd_parameter_default_value = -1;
+static int hf_rdm_pd_parameter_description = -1;
+static int hf_rdm_pd_software_version_label = -1;
+static int hf_rdm_pd_boot_software_version_id = -1;
+static int hf_rdm_pd_boot_software_version_label = -1;
+static int hf_rdm_pd_comms_status_short_msg = -1;
+static int hf_rdm_pd_comms_status_len_mismatch = -1;
+static int hf_rdm_pd_comms_status_csum_fail = -1;
+static int hf_rdm_pd_status_messages_type = -1;
+static int hf_rdm_pd_status_messages_sub_device_id = -1;
+static int hf_rdm_pd_status_messages_id = -1;
+static int hf_rdm_pd_status_messages_data_value_1 = -1;
+static int hf_rdm_pd_status_messages_data_value_2 = -1;
+static int hf_rdm_pd_status_id = -1;
+static int hf_rdm_pd_status_id_description = -1;
+static int hf_rdm_pd_sub_device_status_report_threshold_status_type = -1;
+static int hf_rdm_pd_product_detail_id_list = -1;
+static int hf_rdm_pd_factory_defaults = -1;
+static int hf_rdm_pd_dmx_pers_nr = -1;
+static int hf_rdm_pd_dmx_pers_count = -1;
+static int hf_rdm_pd_dmx_pers_description = -1;
+static int hf_rdm_pd_dmx_pers_slots = -1;
+static int hf_rdm_pd_dmx_pers_text = -1;
+static int hf_rdm_pd_slot_offset = -1;
+static int hf_rdm_pd_slot_type = -1;
+static int hf_rdm_pd_slot_label_id = -1;
+static int hf_rdm_pd_slot_nr = -1;
+static int hf_rdm_pd_slot_description = -1;
+static int hf_rdm_pd_slot_value = -1;
+static int hf_rdm_pd_rec_value_support = -1;
+
+
static int ett_rdm = -1;
static guint16
rdm_checksum(tvbuff_t *tvb, unsigned length)
{
- guint16 sum = 0;
+ guint16 sum = RDM_SC_RDM;
unsigned i;
for (i = 0; i < length; i++)
sum += tvb_get_guint8(tvb, i);
return sum;
}
+static guint
+dissect_rdm_pd_queued_message(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_GET_COMMAND:
+ proto_tree_add_item(tree, hf_rdm_pd_queued_message_status, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_dmx_start_address(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_SET_COMMAND:
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_dmx_start_address, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_device_info(tvbuff_t *tvb _U_, guint offset, proto_tree *tree _U_, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_proto_vers, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+
+ proto_tree_add_item(tree, hf_rdm_pd_device_model_id, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+
+ proto_tree_add_item(tree, hf_rdm_pd_product_cat, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+
+ proto_tree_add_item(tree, hf_rdm_pd_software_vers_id, tvb,
+ offset, 4, ENC_BIG_ENDIAN);
+ offset+=4;
+
+ proto_tree_add_item(tree, hf_rdm_pd_dmx_footprint, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+
+ proto_tree_add_item(tree, hf_rdm_pd_dmx_pers_current, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_rdm_pd_dmx_pers_total, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_rdm_pd_dmx_start_address, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+
+ proto_tree_add_item(tree, hf_rdm_pd_sub_device_count, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_count, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ break;
+ }
+
+ return offset;
+}
+
+
+static guint
+dissect_rdm_pd_device_model_description(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len)
+{
+ switch(cc) {
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_device_model_description, tvb,
+ offset, len, ENC_BIG_ENDIAN);
+ offset+=len;
+ break;
+ }
+
+ return offset;
+}
+
+
+static guint
+dissect_rdm_pd_device_label(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len)
+{
+ switch(cc) {
+ case RDM_CC_SET_COMMAND:
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_device_label, tvb,
+ offset, len, ENC_BIG_ENDIAN);
+ offset+=len;
+ break;
+ }
+
+ return offset;
+}
+
+
+static guint
+dissect_rdm_pd_device_hours(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_SET_COMMAND:
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_device_hours, tvb,
+ offset, 4, ENC_BIG_ENDIAN);
+ offset+=4;
+ break;
+ }
+
+ return offset;
+}
+
+
+static guint
+dissect_rdm_pd_lamp_hours(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_SET_COMMAND:
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_lamp_hours, tvb,
+ offset, 4, ENC_BIG_ENDIAN);
+ offset+=4;
+ break;
+ }
+
+ return offset;
+}
+
+
+static guint
+dissect_rdm_pd_lamp_strikes(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_SET_COMMAND:
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_lamp_strikes, tvb,
+ offset, 4, ENC_BIG_ENDIAN);
+ offset+=4;
+ break;
+ }
+
+ return offset;
+}
+
+
+static guint
+dissect_rdm_pd_sensor_definition(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len)
+{
+ switch(cc) {
+ case RDM_CC_GET_COMMAND:
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_nr, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ break;
+
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_nr, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_type, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_unit, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_prefix, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_range_min_value, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_range_max_value, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_normal_min_value, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_normal_max_value, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_recorded_value_support, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_description, tvb,
+ offset, len - 13, ENC_BIG_ENDIAN);
+ offset += (len - 13);
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_sensor_value(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len)
+{
+ switch(cc) {
+ case RDM_CC_GET_COMMAND:
+ case RDM_CC_SET_COMMAND:
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_nr, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ break;
+
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ case RDM_CC_SET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_nr, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_value_pres, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+
+ if (len == 7 || len == 9) {
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_value_low, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_value_high, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+ }
+
+ if (len == 5 || len == 9) {
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_value_rec, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset+=2;
+ }
+
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_manufacturer_label(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len)
+{
+ switch(cc) {
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_manu_label, tvb,
+ offset, len, ENC_BIG_ENDIAN);
+ offset+=len;
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_disc_unique_branch(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_DISCOVERY_COMMAND:
+ proto_tree_add_item(tree, hf_rdm_pd_disc_unique_branch_lb_uid, tvb,
+ offset, 6, ENC_NA);
+ offset += 6;
+
+ proto_tree_add_item(tree, hf_rdm_pd_disc_unique_branch_ub_uid, tvb,
+ offset, 6, ENC_NA);
+ offset += 6;
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_disc_mute(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len)
+{
+ switch(cc) {
+ case RDM_CC_DISCOVERY_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_disc_mute_control_field, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ if (len > 2) {
+ proto_tree_add_item(tree, hf_rdm_pd_disc_mute_binding_uid, tvb,
+ offset, 6, ENC_NA);
+ offset += 6;
+ }
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_disc_un_mute(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len)
+{
+ switch(cc) {
+ case RDM_CC_DISCOVERY_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_disc_unmute_control_field, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ if (len > 2) {
+ proto_tree_add_item(tree, hf_rdm_pd_disc_unmute_binding_uid, tvb,
+ offset, 6, ENC_NA);
+ offset += 6;
+ }
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_proxied_devices(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len)
+{
+ switch(cc) {
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ while (len >= 6) {
+ proto_tree_add_item(tree, hf_rdm_pd_proxied_devices_uid, tvb,
+ offset, 6, ENC_NA);
+ offset += 6;
+ len -= 6;
+ }
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_proxied_device_count(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_proxied_device_count, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(tree, hf_rdm_pd_proxied_device_list_change, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_comms_status(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_comms_status_short_msg, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(tree, hf_rdm_pd_comms_status_len_mismatch, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(tree, hf_rdm_pd_comms_status_csum_fail, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_status_messages(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len)
+{
+ switch(cc) {
+ case RDM_CC_GET_COMMAND:
+ proto_tree_add_item(tree, hf_rdm_pd_status_messages_type, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ while (len >= 9) {
+ proto_tree_add_item(tree, hf_rdm_pd_status_messages_sub_device_id, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ len -= 2;
+ proto_tree_add_item(tree, hf_rdm_pd_status_messages_type, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ len -= 1;
+ proto_tree_add_item(tree, hf_rdm_pd_status_messages_id, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ len -= 2;
+ proto_tree_add_item(tree, hf_rdm_pd_status_messages_data_value_1, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ len -= 2;
+ proto_tree_add_item(tree, hf_rdm_pd_status_messages_data_value_2, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ len -= 2;
+ }
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_status_id_description(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len)
+{
+ switch(cc) {
+ case RDM_CC_GET_COMMAND:
+ proto_tree_add_item(tree, hf_rdm_pd_status_id, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ break;
+
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_status_id_description, tvb,
+ offset, len, ENC_BIG_ENDIAN);
+ offset += len;
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_clear_status_id(tvbuff_t *tvb _U_, guint offset, proto_tree *tree _U_, guint8 cc _U_, guint8 len _U_)
+{
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_sub_device_status_report_threshold(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_SET_COMMAND:
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_sub_device_status_report_threshold_status_type, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_supported_parameters(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len)
+{
+ switch(cc) {
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ while (len >= 2) {
+ proto_tree_add_item(tree, hf_rdm_pd_parameter_id, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ len -= 2;
+ }
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_parameter_description(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len)
+{
+ switch(cc) {
+ case RDM_CC_GET_COMMAND:
+ proto_tree_add_item(tree, hf_rdm_pd_parameter_id, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ break;
+
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_parameter_id, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(tree, hf_rdm_pd_parameter_pdl_size, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(tree, hf_rdm_pd_parameter_data_type, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(tree, hf_rdm_pd_parameter_cmd_class, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(tree, hf_rdm_pd_parameter_type, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(tree, hf_rdm_pd_parameter_unit, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(tree, hf_rdm_pd_parameter_prefix, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(tree, hf_rdm_pd_parameter_min_value, tvb,
+ offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ proto_tree_add_item(tree, hf_rdm_pd_parameter_max_value, tvb,
+ offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ proto_tree_add_item(tree, hf_rdm_pd_parameter_default_value, tvb,
+ offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ proto_tree_add_item(tree, hf_rdm_pd_parameter_description, tvb,
+ offset, len - 0x14, ENC_BIG_ENDIAN);
+ offset += (len - 0x14);
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_product_detail_id_list(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len)
+{
+ switch(cc) {
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ while (len >= 2) {
+ proto_tree_add_item(tree, hf_rdm_pd_product_detail_id_list, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ len -= 2;
+ }
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_factory_defaults(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_factory_defaults, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_language_capabilities(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len)
+{
+ switch(cc) {
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ while (len >= 2) {
+ proto_tree_add_item(tree, hf_rdm_pd_language_code, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ len -= 2;
+ }
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_language(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_SET_COMMAND:
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_language_code, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_software_version_label(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len)
+{
+ switch(cc) {
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_software_version_label, tvb,
+ offset, len, ENC_BIG_ENDIAN);
+ offset += len;
+
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_boot_software_version_id(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_boot_software_version_id, tvb,
+ offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_boot_software_version_label(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len)
+{
+ switch(cc) {
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_boot_software_version_label, tvb,
+ offset, len, ENC_BIG_ENDIAN);
+ offset += len;
+
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_dmx_personality(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_SET_COMMAND:
+ proto_tree_add_item(tree, hf_rdm_pd_dmx_pers_nr, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_dmx_pers_current, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(tree, hf_rdm_pd_dmx_pers_count, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_dmx_personality_description(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len)
+{
+ switch(cc) {
+ case RDM_CC_GET_COMMAND:
+ proto_tree_add_item(tree, hf_rdm_pd_dmx_pers_description, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_dmx_pers_description, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(tree, hf_rdm_pd_dmx_pers_slots, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(tree, hf_rdm_pd_dmx_pers_text, tvb,
+ offset, (len - 3), ENC_BIG_ENDIAN);
+ offset += (len - 3);
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_slot_info(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len)
+{
+ switch(cc) {
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ while (len >= 5) {
+ proto_tree_add_item(tree, hf_rdm_pd_slot_offset, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ len -= 2;
+ proto_tree_add_item(tree, hf_rdm_pd_slot_type, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ len -= 1;
+ proto_tree_add_item(tree, hf_rdm_pd_slot_label_id, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ len -= 2;
+ }
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_slot_description(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len)
+{
+ switch(cc) {
+ case RDM_CC_GET_COMMAND:
+ proto_tree_add_item(tree, hf_rdm_pd_slot_nr, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ break;
+
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_slot_nr, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(tree, hf_rdm_pd_slot_description, tvb,
+ offset, (len - 2), ENC_BIG_ENDIAN);
+ offset += (len - 2);
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_slot_value(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len)
+{
+ switch(cc) {
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ while (len >= 3) {
+ proto_tree_add_item(tree, hf_rdm_pd_slot_offset, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ len -= 2;
+ proto_tree_add_item(tree, hf_rdm_pd_slot_value, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ len -= 1;
+ }
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_record_sensors(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len)
+{
+ switch(cc) {
+ case RDM_CC_GET_COMMAND:
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_nr, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_nr, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_type, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_unit, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_prefix, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_range_min_value, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_range_max_value, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_normal_min_value, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_normal_max_value, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(tree, hf_rdm_pd_rec_value_support, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(tree, hf_rdm_pd_sensor_description, tvb,
+ offset, (len - 13), ENC_BIG_ENDIAN);
+ offset += (len - 13);
+
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_lamp_state(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_SET_COMMAND:
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_lamp_state, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_lamp_on_mode(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_SET_COMMAND:
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_lamp_on_mode, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_device_power_cycles(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_SET_COMMAND:
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_device_power_cycles, tvb,
+ offset, 4, ENC_BIG_ENDIAN);
+ offset +=4;
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_display_invert(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_SET_COMMAND:
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_display_invert, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_display_level(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_SET_COMMAND:
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_display_level, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_pan_invert(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_SET_COMMAND:
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_pan_invert, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_tilt_invert(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_SET_COMMAND:
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_tilt_invert, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_pan_tilt_swap(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_SET_COMMAND:
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_tilt_swap, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_real_time_clock(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_SET_COMMAND:
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_real_time_clock_year, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(tree, hf_rdm_pd_real_time_clock_month, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(tree, hf_rdm_pd_real_time_clock_day, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(tree, hf_rdm_pd_real_time_clock_hour, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(tree, hf_rdm_pd_real_time_clock_minute, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(tree, hf_rdm_pd_real_time_clock_second, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_identify_device(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_SET_COMMAND:
+ proto_tree_add_item(tree, hf_rdm_pd_identify_device, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_identify_device_state, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_reset_device(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_SET_COMMAND:
+ proto_tree_add_item(tree, hf_rdm_pd_reset_device, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_power_state(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_SET_COMMAND:
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_power_state, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_perform_selftest(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_SET_COMMAND:
+ proto_tree_add_item(tree, hf_rdm_pd_selftest_nr, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_selftest_state, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_self_test_description(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len)
+{
+ switch(cc) {
+ case RDM_CC_GET_COMMAND:
+ proto_tree_add_item(tree, hf_rdm_pd_selftest_nr, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_selftest_nr, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(tree, hf_rdm_pd_selftest_description, tvb,
+ offset, (len - 1), ENC_BIG_ENDIAN);
+ offset += (len - 1);
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_capture_preset(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_SET_COMMAND:
+ proto_tree_add_item(tree, hf_rdm_pd_capture_preset_scene_nr, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(tree, hf_rdm_pd_capture_preset_up_fade_time, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(tree, hf_rdm_pd_capture_preset_down_fade_time, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(tree, hf_rdm_pd_capture_preset_wait_time, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_pd_preset_playback(tvbuff_t *tvb, guint offset, proto_tree *tree, guint8 cc, guint8 len _U_)
+{
+ switch(cc) {
+ case RDM_CC_SET_COMMAND:
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_pd_preset_playback_mode, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(tree, hf_rdm_pd_preset_playback_level, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+ }
+
+ return offset;
+}
+
+static guint
+dissect_rdm_mdb(tvbuff_t *tvb, guint offset, proto_tree *tree)
+{
+ guint8 cc;
+ guint16 param_id;
+ guint8 parameter_data_length;
+ proto_tree *hi,*si, *mdb_tree;
+
+ cc = tvb_get_guint8(tvb, offset + 4);
+
+ switch (cc) {
+ case RDM_CC_DISCOVERY_COMMAND:
+ case RDM_CC_GET_COMMAND:
+ case RDM_CC_SET_COMMAND:
+ proto_tree_add_item(tree, hf_rdm_port_id, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ break;
+
+ case RDM_CC_DISCOVERY_COMMAND_RESPONSE:
+ case RDM_CC_GET_COMMAND_RESPONSE:
+ case RDM_CC_SET_COMMAND_RESPONSE:
+ proto_tree_add_item(tree, hf_rdm_response_type, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ break;
+ }
+
+ proto_tree_add_item(tree, hf_rdm_message_count, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ proto_tree_add_item(tree, hf_rdm_sub_device, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ hi = proto_tree_add_item(tree, hf_rdm_mdb, tvb,
+ offset, -1, ENC_BIG_ENDIAN);
+ mdb_tree = proto_item_add_subtree(hi,ett_rdm);
+
+
+ proto_tree_add_item(mdb_tree, hf_rdm_command_class, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ param_id = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_item(mdb_tree, hf_rdm_parameter_id, tvb,
+ offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ parameter_data_length = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(mdb_tree, hf_rdm_parameter_data_length, tvb,
+ offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ proto_item_set_len( mdb_tree, parameter_data_length + 4);
+
+ if (parameter_data_length > 0) {
+ hi = proto_tree_add_item(mdb_tree, hf_rdm_parameter_data, tvb,
+ offset, parameter_data_length, ENC_BIG_ENDIAN);
+ si = proto_item_add_subtree(hi,ett_rdm);
+
+ switch(param_id) {
+ case RDM_PARAM_ID_SENSOR_VALUE:
+ offset = dissect_rdm_pd_sensor_value(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_QUEUED_MESSAGE:
+ offset = dissect_rdm_pd_queued_message(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_DMX_START_ADDRESS:
+ offset = dissect_rdm_pd_dmx_start_address(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_DEVICE_INFO:
+ offset = dissect_rdm_pd_device_info(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_DEVICE_MODEL_DESCRIPTION:
+ offset = dissect_rdm_pd_device_model_description(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_DEVICE_LABEL:
+ offset = dissect_rdm_pd_device_label(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_DEVICE_HOURS:
+ offset = dissect_rdm_pd_device_hours(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_LAMP_HOURS:
+ offset = dissect_rdm_pd_lamp_hours(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_LAMP_STRIKES:
+ offset = dissect_rdm_pd_lamp_strikes(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_SENSOR_DEFINITION:
+ offset = dissect_rdm_pd_sensor_definition(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_MANUFACTURER_LABEL:
+ offset = dissect_rdm_pd_manufacturer_label(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_DISC_UNIQUE_BRANCH:
+ offset = dissect_rdm_pd_disc_unique_branch(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_DISC_MUTE:
+ offset = dissect_rdm_pd_disc_mute(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_DISC_UN_MUTE:
+ offset = dissect_rdm_pd_disc_un_mute(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_PROXIED_DEVICES:
+ offset = dissect_rdm_pd_proxied_devices(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_PROXIED_DEVICE_COUNT:
+ offset = dissect_rdm_pd_proxied_device_count(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_COMMS_STATUS:
+ offset = dissect_rdm_pd_comms_status(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_STATUS_MESSAGES:
+ offset = dissect_rdm_pd_status_messages(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_STATUS_ID_DESCRIPTION:
+ offset = dissect_rdm_pd_status_id_description(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_CLEAR_STATUS_ID:
+ offset = dissect_rdm_pd_clear_status_id(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_SUB_DEVICE_STATUS_REPORT_THRESHOLD:
+ offset = dissect_rdm_pd_sub_device_status_report_threshold(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_SUPPORTED_PARAMETERS:
+ offset = dissect_rdm_pd_supported_parameters(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_PARAMETER_DESCRIPTION:
+ offset = dissect_rdm_pd_parameter_description(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_PRODUCT_DETAIL_ID_LIST:
+ offset = dissect_rdm_pd_product_detail_id_list(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_FACTORY_DEFAULTS:
+ offset = dissect_rdm_pd_factory_defaults(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_LANGUAGE_CAPABILITIES:
+ offset = dissect_rdm_pd_language_capabilities(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_LANGUAGE:
+ offset = dissect_rdm_pd_language(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_SOFTWARE_VERSION_LABEL:
+ offset = dissect_rdm_pd_software_version_label(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_BOOT_SOFTWARE_VERSION_ID:
+ offset = dissect_rdm_pd_boot_software_version_id(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_BOOT_SOFTWARE_VERSION_LABEL:
+ offset = dissect_rdm_pd_boot_software_version_label(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_DMX_PERSONALITY:
+ offset = dissect_rdm_pd_dmx_personality(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_DMX_PERSONALITY_DESCRIPTION:
+ offset = dissect_rdm_pd_dmx_personality_description(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_SLOT_INFO:
+ offset = dissect_rdm_pd_slot_info(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_SLOT_DESCRIPTION:
+ offset = dissect_rdm_pd_slot_description(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_DEFAULT_SLOT_VALUE:
+ offset = dissect_rdm_pd_slot_value(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_RECORD_SENSORS:
+ offset = dissect_rdm_pd_record_sensors(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_LAMP_STATE:
+ offset = dissect_rdm_pd_lamp_state(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_LAMP_ON_MODE:
+ offset = dissect_rdm_pd_lamp_on_mode(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_DEVICE_POWER_CYCLES:
+ offset = dissect_rdm_pd_device_power_cycles(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_DISPLAY_INVERT:
+ offset = dissect_rdm_pd_display_invert(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_DISPLAY_LEVEL:
+ offset = dissect_rdm_pd_display_level(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_PAN_INVERT:
+ offset = dissect_rdm_pd_pan_invert(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_TILT_INVERT:
+ offset = dissect_rdm_pd_tilt_invert(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_PAN_TILT_SWAP:
+ offset = dissect_rdm_pd_pan_tilt_swap(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_REAL_TIME_CLOCK:
+ offset = dissect_rdm_pd_real_time_clock(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_IDENTIFY_DEVICE:
+ offset = dissect_rdm_pd_identify_device(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_RESET_DEVICE:
+ offset = dissect_rdm_pd_reset_device(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_POWER_STATE:
+ offset = dissect_rdm_pd_power_state(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_PERFORM_SELFTEST:
+ offset = dissect_rdm_pd_perform_selftest(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_SELF_TEST_DESCRIPTION:
+ offset = dissect_rdm_pd_self_test_description(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_CAPTURE_PRESET:
+ offset = dissect_rdm_pd_capture_preset(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ case RDM_PARAM_ID_PRESET_PLAYBACK:
+ offset = dissect_rdm_pd_preset_playback(tvb, offset, si, cc, parameter_data_length);
+ break;
+
+ default:
+ proto_tree_add_item(si, hf_rdm_parameter_data_raw, tvb,
+ offset, parameter_data_length, ENC_NA);
+ offset += parameter_data_length;
+ break;
+ }
+ }
+
+ return offset;
+}
+
static void
dissect_rdm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
@@ -87,18 +2045,17 @@ dissect_rdm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
col_clear(pinfo->cinfo, COL_INFO);
if (tree != NULL) {
- unsigned message_length, checksum, checksum_shouldbe,
- parameter_data_length, offset = 0;
+ gint padding_size;
+ guint16 man_id;
+ guint32 dev_id;
+ unsigned message_length, checksum, checksum_shouldbe, offset = 0;
proto_item *item;
+ proto_tree *checksum_tree;
proto_tree *ti = proto_tree_add_item(tree, proto_rdm, tvb,
offset, -1, ENC_NA);
proto_tree *rdm_tree = proto_item_add_subtree(ti, ett_rdm);
- proto_tree_add_item(rdm_tree, hf_rdm_start_code, tvb,
- offset, 1, ENC_BIG_ENDIAN);
- offset++;
-
proto_tree_add_item(rdm_tree, hf_rdm_sub_start_code, tvb,
offset, 1, ENC_BIG_ENDIAN);
offset++;
@@ -108,10 +2065,17 @@ dissect_rdm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset, 1, ENC_BIG_ENDIAN);
offset++;
+ man_id = tvb_get_ntohs(tvb, offset);
+ dev_id = tvb_get_ntohl(tvb, offset + 2);
+ proto_item_append_text(ti, ", Dst UID: %04x:%08x", man_id, dev_id);
proto_tree_add_item(rdm_tree, hf_rdm_dest_uid, tvb,
offset, 6, ENC_NA);
offset += 6;
+
+ man_id = tvb_get_ntohs(tvb, offset);
+ dev_id = tvb_get_ntohl(tvb, offset + 2);
+ proto_item_append_text(ti, ", Src UID: %04x:%08x", man_id, dev_id);
proto_tree_add_item(rdm_tree, hf_rdm_src_uid, tvb,
offset, 6, ENC_NA);
offset += 6;
@@ -120,41 +2084,13 @@ dissect_rdm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset, 1, ENC_BIG_ENDIAN);
offset++;
- proto_tree_add_item(rdm_tree, hf_rdm_response_type, tvb,
- offset, 1, ENC_BIG_ENDIAN);
- offset++;
-
- proto_tree_add_item(rdm_tree, hf_rdm_message_count, tvb,
- offset, 1, ENC_BIG_ENDIAN);
- offset++;
-
- proto_tree_add_item(rdm_tree, hf_rdm_sub_device, tvb,
- offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
-
- proto_tree_add_item(rdm_tree, hf_rdm_command_class, tvb,
- offset, 1, ENC_BIG_ENDIAN);
- offset++;
-
- proto_tree_add_item(rdm_tree, hf_rdm_parameter_id, tvb,
- offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
-
- parameter_data_length = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(rdm_tree, hf_rdm_parameter_data_length, tvb,
- offset, 1, ENC_BIG_ENDIAN);
- offset++;
-
- if (parameter_data_length > 0) {
- proto_tree_add_item(rdm_tree, hf_rdm_parameter_data, tvb,
- offset, parameter_data_length, ENC_NA);
- offset += parameter_data_length;
- }
+ offset = dissect_rdm_mdb(tvb, offset, rdm_tree);
- if (offset < message_length) {
+ padding_size = offset - (message_length - 1);
+ if (padding_size > 0) {
proto_tree_add_item(rdm_tree, hf_rdm_intron, tvb,
- offset, message_length - offset, ENC_NA);
- offset = message_length;
+ offset, padding_size, ENC_NA);
+ offset += padding_size;
}
checksum_shouldbe = rdm_checksum(tvb, offset);
@@ -162,10 +2098,27 @@ dissect_rdm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
item = proto_tree_add_item(rdm_tree, hf_rdm_checksum, tvb,
offset, 2, ENC_BIG_ENDIAN);
if (checksum == checksum_shouldbe) {
- proto_item_append_text(item, " [correct]");
+ proto_item_append_text(item, " [correct]");
+
+ checksum_tree = proto_item_add_subtree(item, ett_rdm);
+ item = proto_tree_add_boolean(checksum_tree, hf_rdm_checksum_good, tvb,
+ offset, 2, TRUE);
+ PROTO_ITEM_SET_GENERATED(item);
+ item = proto_tree_add_boolean(checksum_tree, hf_rdm_checksum_bad, tvb,
+ offset, 2, FALSE);
+ PROTO_ITEM_SET_GENERATED(item);
} else {
- proto_item_append_text(item, " [incorrect, should be 0x%04x]", checksum_shouldbe);
+ proto_item_append_text(item, " [incorrect, should be 0x%04x]", checksum_shouldbe);
+
+ checksum_tree = proto_item_add_subtree(item, ett_rdm);
+ item = proto_tree_add_boolean(checksum_tree, hf_rdm_checksum_good, tvb,
+ offset, 2, FALSE);
+ PROTO_ITEM_SET_GENERATED(item);
+ item = proto_tree_add_boolean(checksum_tree, hf_rdm_checksum_bad, tvb,
+ offset, 2, TRUE);
+ PROTO_ITEM_SET_GENERATED(item);
}
+
offset += 2;
if (offset < tvb_length(tvb))
@@ -178,11 +2131,6 @@ void
proto_register_rdm(void)
{
static hf_register_info hf[] = {
- { &hf_rdm_start_code,
- { "Start code", "rdm.sc",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
-
{ &hf_rdm_sub_start_code,
{ "Sub-start code", "rdm.ssc",
FT_UINT8, BASE_HEX, NULL, 0x0,
@@ -208,9 +2156,14 @@ proto_register_rdm(void)
FT_UINT8, BASE_DEC, NULL, 0x0,
NULL, HFILL }},
+ { &hf_rdm_port_id,
+ { "Port ID", "rdm.port_id",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
{ &hf_rdm_response_type,
{ "Response type", "rdm.rt",
- FT_UINT8, BASE_HEX, NULL, 0x0,
+ FT_UINT8, BASE_HEX, VALS(rdm_rt_vals), 0x0,
NULL, HFILL }},
{ &hf_rdm_message_count,
@@ -223,14 +2176,19 @@ proto_register_rdm(void)
FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }},
+ { &hf_rdm_mdb,
+ { "Message Data Block", "rdm.mdb",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
{ &hf_rdm_command_class,
{ "Command class", "rdm.cc",
- FT_UINT8, BASE_HEX, NULL, 0x0,
+ FT_UINT8, BASE_HEX, VALS(rdm_cc_vals), 0x0,
NULL, HFILL }},
{ &hf_rdm_parameter_id,
{ "Parameter ID", "rdm.pid",
- FT_UINT16, BASE_HEX, NULL, 0x0,
+ FT_UINT16, BASE_HEX, VALS(rdm_param_id_vals), 0x0,
NULL, HFILL }},
{ &hf_rdm_parameter_data_length,
@@ -240,6 +2198,11 @@ proto_register_rdm(void)
{ &hf_rdm_parameter_data,
{ "Parameter data", "rdm.pd",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_parameter_data_raw,
+ { "Raw Data", "rdm.pd.raw",
FT_BYTES, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
@@ -253,9 +2216,555 @@ proto_register_rdm(void)
FT_UINT16, BASE_HEX, NULL, 0x0,
NULL, HFILL }},
+ { &hf_rdm_checksum_good,
+ { "Good Checksum", "rdm.checksum_good",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "True: checksum matches packet content; False: doesn't match content", HFILL }},
+
+ { &hf_rdm_checksum_bad,
+ { "Bad Checksum", "rdm.checksum_bad",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "True: checksum doesn't match packet content; False: matches content", HFILL }},
+
{ &hf_rdm_trailer,
{ "Trailer", "rdm.trailer",
FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_queued_message_status,
+ { "Status", "rdm.pd.queued_message.status",
+ FT_UINT8, BASE_HEX, VALS(rdm_status_vals), 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_sensor_nr,
+ { "Sensor Nr.", "rdm.pd.sensor.nr",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_sensor_value_pres,
+ { "Sensor Present Value", "rdm.pd.sensor.value.present",
+ FT_INT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_sensor_value_low,
+ { "Sensor Lowest Value", "rdm.pd.sensor.value.lowest",
+ FT_INT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_sensor_value_high,
+ { "Sensor Highest Value", "rdm.pd.sensor.value.highest",
+ FT_INT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_sensor_value_rec,
+ { "Sensor Recorded Value", "rdm.pd.sensor.value.recorded",
+ FT_INT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_sensor_range_min_value,
+ { "Sensor Range Min. Value", "rdm.pd.sensor.range.min_value",
+ FT_INT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_sensor_range_max_value,
+ { "Sensor Range Max. Value", "rdm.pd.sensor.range.max_value",
+ FT_INT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_sensor_normal_min_value,
+ { "Sensor Normal Min. Value", "rdm.pd.sensor.normal.min_value",
+ FT_INT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_sensor_normal_max_value,
+ { "Sensor Normal Max. Value", "rdm.pd.sensor.normal.max_value",
+ FT_INT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_sensor_recorded_value_support,
+ { "Sensor Recorded Value Support", "rdm.pd.sensor.recorded_value_support",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_sensor_type,
+ { "Sensor Type", "rdm.pd.sensor_type",
+ FT_UINT8, BASE_HEX, VALS(rdm_sensor_type_vals), 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_sensor_unit,
+ { "Sensor Unit", "rdm.pd.sensor_unit",
+ FT_UINT8, BASE_HEX, VALS(rdm_unit_vals), 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_sensor_prefix,
+ { "Sensor Prefix", "rdm.pd.sensor_prefix",
+ FT_UINT8, BASE_HEX, VALS(rdm_prefix_vals), 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_sensor_description,
+ { "Sensor Description", "rdm.pd.sensor.description",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_manu_label,
+ { "Manufacturur Label", "rdm.pd.manu_label",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+
+ { &hf_rdm_pd_device_label,
+ { "Device Label", "rdm.pd.device_label",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_dmx_start_address,
+ { "DMX Start Address", "rdm.pd.dmx_start_address",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_device_hours,
+ { "Device Hours", "rdm.pd.device_hours",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_lamp_hours,
+ { "Lamp Hours", "rdm.pd.lamp_hours",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_lamp_strikes,
+ { "Lamp Strikes", "rdm.pd.lamp_strikes",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_proto_vers,
+ { "RDM Protocol Version", "rdm.pd.proto_vers",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_device_model_id,
+ { "Device Model ID", "rdm.pd.device_model_id",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_product_cat,
+ { "Product Category", "rdm.pd.product_cat",
+ FT_UINT16, BASE_HEX, VALS(rdm_product_cat_vals), 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_software_vers_id,
+ { "Software Version ID", "rdm.pd.software_version_id",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_dmx_footprint,
+ { "DMX Footprint", "rdm.pd.dmx_footprint",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_dmx_pers_current,
+ { "Current DMX Personallity", "rdm.pd.dmx_pers_current",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_dmx_pers_total,
+ { "Total nr. DMX Personallities", "rdm.pd.dmx_pers_total",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_sub_device_count,
+ { "Sub-Device Count", "rdm.pd.sub_device_count",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_sensor_count,
+ { "Sensor Count", "rdm.pd.sensor_count",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_device_model_description,
+ { "Device Model Description", "rdm.pd.device_model_description",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_disc_unique_branch_lb_uid,
+ { "Lower Bound UID", "rdm.pd.disc_unique_branch.lb_uid",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_disc_unique_branch_ub_uid,
+ { "Upper Bound UID", "rdm.pd.disc_unique_branch.ub_uid",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_disc_mute_control_field,
+ { "Control Field", "rdm.pd.disc_mute.control_field",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_disc_mute_binding_uid,
+ { "Binding UID", "rdm.pd.disc_mute.binding_uid",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_disc_unmute_control_field,
+ { "Control Field", "rdm.pd.disc_unmute.control_field",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_disc_unmute_binding_uid,
+ { "Binding UID", "rdm.pd.disc_unmute.binding_uid",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_proxied_devices_uid,
+ { "UID", "rdm.pd.proxied_devices.uid",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_proxied_device_count,
+ { "Device Count", "rdm.pd.device_count",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_proxied_device_list_change,
+ { "List Change", "rdm.pd.list_change",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_real_time_clock_year,
+ { "Year", "rdm.pd.real_time_clock.year",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_real_time_clock_month,
+ { "Month", "rdm.pd.real_time_clock.month",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_real_time_clock_day,
+ { "Day", "rdm.pd.real_time_clock.day",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_real_time_clock_hour,
+ { "Hour", "rdm.pd.real_time_clock.hour",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_real_time_clock_minute,
+ { "Minute", "rdm.pd.real_time_clock.minute",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_real_time_clock_second,
+ { "Second", "rdm.pd.real_time_clock.second",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_lamp_state,
+ { "Lamp State", "rdm.pd.lamp_state",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_lamp_on_mode,
+ { "Lamp On Mode", "rdm.pd.lamp_on_mode",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_device_power_cycles,
+ { "Device Power Cycles", "rdm.pd.device_power_cycles",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_display_invert,
+ { "Display Invert", "rdm.pd.display_invert",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_display_level,
+ { "Display Level", "rdm.pd.display_level",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_pan_invert,
+ { "Pan Invert", "rdm.pd.pan_invert",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_tilt_invert,
+ { "Tilt Invert", "rdm.pd.tilt_invert",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_tilt_swap,
+ { "Tilt Swap", "rdm.pd.tilt_swap",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_selftest_nr,
+ { "Selftest Nr.", "rdm.pd.selftest.nr",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_selftest_state,
+ { "Selftest State", "rdm.pd.selftest.state",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_selftest_description,
+ { "Selftest Description", "rdm.pd.selftest.description",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_language_code,
+ { "Language Code", "rdm.pd.language_code",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_identify_device,
+ { "Identify Device", "rdm.pd.identify_device",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_identify_device_state,
+ { "Identify Device State", "rdm.pd.identify_device.state",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_reset_device,
+ { "Reset Device", "rdm.pd.reset_device",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_power_state,
+ { "Power State", "rdm.pd.power_state",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_capture_preset_scene_nr,
+ { "Scene Nr.", "rdm.pd.capture_preset.scene_nr",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_capture_preset_up_fade_time,
+ { "Up Fade Time", "rdm.pd.capture_preset.up_fade_time",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_capture_preset_down_fade_time,
+ { "Down Fade Time", "rdm.pd.capture_preset.down_fade_time",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_capture_preset_wait_time,
+ { "Wait Time", "rdm.pd.capture_preset.wait_time",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_preset_playback_mode,
+ { "Mode", "rdm.pd.preset_playback.mode",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_preset_playback_level,
+ { "Level", "rdm.pd.preset_playback.level",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_parameter_id,
+ { "ID", "rdm.pd.parameter.id",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_parameter_pdl_size,
+ { "PDL Size", "rdm.pd.parameter.pdl_size",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_parameter_data_type,
+ { "Data Type", "rdm.pd.parameter.data_type",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_parameter_cmd_class,
+ { "Command Class", "rdm.pd.parameter.cmd_class",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_parameter_type,
+ { "Type", "rdm.pd.parameter.type",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_parameter_unit,
+ { "Unit", "rdm.pd.parameter.unit",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_parameter_prefix,
+ { "Prefix", "rdm.pd.parameter.prefix",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_parameter_min_value,
+ { "Min. Value", "rdm.pd.parameter.min_value",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_parameter_max_value,
+ { "Max. Value", "rdm.pd.parameter.max_value",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_parameter_default_value,
+ { "Delauft Value", "rdm.pd.parameter.default_value",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_parameter_description,
+ { "Description", "rdm.pd.parameter.description",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_software_version_label,
+ { "Version Label", "rdm.pd.software_version.label",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_boot_software_version_id,
+ { "Version ID", "rdm.pd.boot_software_version.id",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_boot_software_version_label,
+ { "Version Label", "rdm.pd.boot_software_version.label",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_comms_status_short_msg,
+ { "Short Msg", "rdm.pd.comms_status.short_msg",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_comms_status_len_mismatch,
+ { "Len Mismatch", "rdm.pd.comms_status.len_mismatch",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_comms_status_csum_fail,
+ { "Checksum Fail", "rdm.pd.comms_status.csum_fail",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_status_messages_type,
+ { "Type", "rdm.pd.status_messages.type",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_status_messages_sub_device_id,
+ { "Sub. Device ID", "rdm.pd.status_messages.sub_devices_id",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_status_messages_id,
+ { "ID", "rdm.pd.status_messages.id",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_status_messages_data_value_1,
+ { "Data Value 1", "rdm.pd.status_messages.data_value_1",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_status_messages_data_value_2,
+ { "Data Value 2", "rdm.pd.status_messages.data_value_2",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_status_id,
+ { "ID", "rdm.pd.status_id",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_status_id_description,
+ { "Description", "rdm.pd.status_id.description",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_sub_device_status_report_threshold_status_type,
+ { "Status Type", "rdm.pd.sub_device_status_report_threshold.status_type",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_product_detail_id_list,
+ { "Sensor Count", "rdm.pd.product_detail_id_list",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_factory_defaults,
+ { "Factory Defaults", "rdm.pd.factory_defaults",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_dmx_pers_nr,
+ { "DMX Pers. Nr.", "rdm.pd.dmx_pers.nr",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_dmx_pers_count,
+ { "DMX Pers. Count", "rdm.pd.dmx_pers.count",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_dmx_pers_description,
+ { "DMX Pers. Description", "rdm.pd.dmx_pers.description",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_dmx_pers_slots,
+ { "DMX Pers. Slots", "rdm.pd.dmx_pers.slots",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_dmx_pers_text,
+ { "DMX Pers. Text", "rdm.pd.dmx_pers.text",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_slot_offset,
+ { "Slot Offset", "rdm.pd.slot_offset",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_slot_type,
+ { "Slot Type", "rdm.pd.slot_type",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_slot_label_id,
+ { "Slot Label ID", "rdm.pd.slot_label_id",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_slot_nr,
+ { "Slot Nr.", "rdm.pd.slot_nr",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_slot_description,
+ { "Slot Description", "rdm.pd.slot_description",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_slot_value,
+ { "Slot Value", "rdm.pd.slot_value",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_rdm_pd_rec_value_support,
+ { "Rec. Value Support", "rdm.pd.rec_value_support",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }}
};
diff --git a/epan/dissectors/packet-rdp.c b/epan/dissectors/packet-rdp.c
index 12d5d98e52..f5a3d9b1bf 100644
--- a/epan/dissectors/packet-rdp.c
+++ b/epan/dissectors/packet-rdp.c
@@ -29,13 +29,13 @@
#endif
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/prefs.h>
#include <epan/conversation.h>
#include <epan/asn1.h>
#include "packet-tpkt.h"
#include "packet-ssl.h"
-#include "packet-rdp.h"
#include "packet-t124.h"
#define PNAME "Remote Desktop Protocol"
@@ -483,22 +483,22 @@ static int hf_rdp_DaylightBias = -1;
#define CAPSTYPE_BITMAP_CODECS 0x001D
-#define CHANNEL_OPTION_INITIALIZED 0x80000000
-#define CHANNEL_OPTION_ENCRYPT_RDP 0x40000000
-#define CHANNEL_OPTION_ENCRYPT_SC 0x20000000
-#define CHANNEL_OPTION_ENCRYPT_CS 0x10000000
-#define CHANNEL_OPTION_PRI_HIGH 0x08000000
-#define CHANNEL_OPTION_PRI_MED 0x04000000
-#define CHANNEL_OPTION_PRI_LOW 0x02000000
-#define CHANNEL_OPTION_COMPRESS_RDP 0x00800000
-#define CHANNEL_OPTION_COMPRESS 0x00400000
-#define CHANNEL_OPTION_SHOW_PROTOCOL 0x00200000
-#define CHANNEL_OPTION_REMOTE_CONTROL_PERSISTENT 0x00100000
+#define CHANNEL_OPTION_INITIALIZED 0x80000000
+#define CHANNEL_OPTION_ENCRYPT_RDP 0x40000000
+#define CHANNEL_OPTION_ENCRYPT_SC 0x20000000
+#define CHANNEL_OPTION_ENCRYPT_CS 0x10000000
+#define CHANNEL_OPTION_PRI_HIGH 0x08000000
+#define CHANNEL_OPTION_PRI_MED 0x04000000
+#define CHANNEL_OPTION_PRI_LOW 0x02000000
+#define CHANNEL_OPTION_COMPRESS_RDP 0x00800000
+#define CHANNEL_OPTION_COMPRESS 0x00400000
+#define CHANNEL_OPTION_SHOW_PROTOCOL 0x00200000
+#define CHANNEL_OPTION_REMOTE_CONTROL_PERSISTENT 0x00100000
#define MAX_CHANNELS 31
typedef struct rdp_conv_info_t {
- struct rdp_conv_info_t * next;
+ struct rdp_conv_info_t *next;
guint32 staticChannelId;
guint32 encryptionMethod;
guint32 encryptionLevel;
@@ -511,9 +511,10 @@ static rdp_conv_info_t *rdp_conv_info_items;
#define RDP_FI_NONE 0x00
#define RDP_FI_OPTIONAL 0x01
-#define RDP_FI_UNICODE 0x02
-#define RDP_FI_NOINCOFFSET 0x04 /* do not increase the offset */
-#define RDP_FI_SUBTREE 0x08
+#define RDP_FI_STRING 0x02
+#define RDP_FI_UNICODE 0x04
+#define RDP_FI_NOINCOFFSET 0x08 /* do not increase the offset */
+#define RDP_FI_SUBTREE 0x10
typedef struct rdp_field_info_t {
int field;
@@ -525,6 +526,7 @@ typedef struct rdp_field_info_t {
} rdp_field_info_t;
#define FI_FIXEDLEN(_hf_, _len_) { _hf_, _len_, NULL, 0, 0, NULL }
+#define FI_FIXEDLEN_STRING(_hf_, _len_) { _hf_, _len_, NULL, 0, RDP_FI_STRING, NULL }
#define FI_VALUE(_hf_, _len_, _value_) { _hf_, _len_, &_value_, 0, 0, NULL }
#define FI_VARLEN(_hf, _length_) { _hf_, 0, &_length_, 0, 0, NULL }
#define FI_SUBTREE(_hf_, _len_, _ett_, _sf_) { _hf_, _len_, NULL, _ett_, RDP_FI_SUBTREE, _sf_ }
@@ -590,54 +592,54 @@ static const value_string rdp_requestedProtocols_vals[] = {
};
static const value_string rdp_flagsPkt_vals[] = {
- {0, "(None)" },
- {SEC_EXCHANGE_PKT, "Security Exchange PDU" },
- {SEC_INFO_PKT, "Client Info PDU" },
- {SEC_LICENSE_PKT, "Licensing PDU" },
+ {0, "(None)" },
+ {SEC_EXCHANGE_PKT, "Security Exchange PDU" },
+ {SEC_INFO_PKT, "Client Info PDU" },
+ {SEC_LICENSE_PKT, "Licensing PDU" },
{SEC_REDIRECTION_PKT, "Standard Security Server Redirection PDU"},
{0, NULL},
};
static const value_string rdp_encryptionMethod_vals[] = {
- { ENCRYPTION_METHOD_NONE, "None" },
- { ENCRYPTION_METHOD_40BIT, "40-bit RC4" },
+ { ENCRYPTION_METHOD_NONE, "None" },
+ { ENCRYPTION_METHOD_40BIT, "40-bit RC4" },
{ ENCRYPTION_METHOD_128BIT, "128-bit RC4" },
- { ENCRYPTION_METHOD_56BIT, "56-bit RC4" },
- { ENCRYPTION_METHOD_FIPS, "FIPS140-1 3DES" },
+ { ENCRYPTION_METHOD_56BIT, "56-bit RC4" },
+ { ENCRYPTION_METHOD_FIPS, "FIPS140-1 3DES" },
{ 0, NULL},
};
static const value_string rdp_encryptionLevel_vals[] = {
- { ENCRYPTION_LEVEL_NONE, "None" },
- { ENCRYPTION_LEVEL_LOW, "Low" },
+ { ENCRYPTION_LEVEL_NONE, "None" },
+ { ENCRYPTION_LEVEL_LOW, "Low" },
{ ENCRYPTION_LEVEL_CLIENT_COMPATIBLE, "Client Compatible" },
- { ENCRYPTION_LEVEL_HIGH, "High" },
- { ENCRYPTION_LEVEL_FIPS, "FIPS140-1" },
+ { ENCRYPTION_LEVEL_HIGH, "High" },
+ { ENCRYPTION_LEVEL_FIPS, "FIPS140-1" },
{ 0, NULL},
};
static const value_string rdp_bMsgType_vals[] = {
- { LICENSE_REQUEST, "License Request" },
- { PLATFORM_CHALLENGE, "Platform Challenge" },
- { NEW_LICENSE, "New License" },
- { UPGRADE_LICENSE, "Upgrade License" },
- { LICENSE_INFO, "License Info" },
- { NEW_LICENSE_REQUEST, "New License Request" },
+ { LICENSE_REQUEST, "License Request" },
+ { PLATFORM_CHALLENGE, "Platform Challenge" },
+ { NEW_LICENSE, "New License" },
+ { UPGRADE_LICENSE, "Upgrade License" },
+ { LICENSE_INFO, "License Info" },
+ { NEW_LICENSE_REQUEST, "New License Request" },
{ PLATFORM_CHALLENGE_RESPONSE, "Platform Challenge Response" },
- { ERROR_ALERT, "Error Alert" },
+ { ERROR_ALERT, "Error Alert" },
{ 0, NULL},
};
static const value_string rdp_wErrorCode_vals[] = {
- { ERR_INVALID_SERVER_CERTIFICIATE, "Invalid Server Certificate" },
- { ERR_NO_LICENSE, "No License" },
- { ERR_INVALID_MAC, "Invalid MAC" },
- { ERR_INVALID_SCOPE, "Invalid Scope" },
- { ERR_NO_LICENSE_SERVER, "No License Server" },
- { STATUS_VALID_CLIENT, "Valid Client" },
- { ERR_INVALID_CLIENT, "Invalid Client" },
- { ERR_INVALID_PRODUCTID, "Invalid Product Id" },
- { ERR_INVALID_MESSAGE_LEN, "Invalid Message Length" },
+ { ERR_INVALID_SERVER_CERTIFICIATE, "Invalid Server Certificate" },
+ { ERR_NO_LICENSE, "No License" },
+ { ERR_INVALID_MAC, "Invalid MAC" },
+ { ERR_INVALID_SCOPE, "Invalid Scope" },
+ { ERR_NO_LICENSE_SERVER, "No License Server" },
+ { STATUS_VALID_CLIENT, "Valid Client" },
+ { ERR_INVALID_CLIENT, "Invalid Client" },
+ { ERR_INVALID_PRODUCTID, "Invalid Product Id" },
+ { ERR_INVALID_MESSAGE_LEN, "Invalid Message Length" },
{ 0, NULL},
};
@@ -724,33 +726,33 @@ static const value_string rdp_action_vals[] = {
};
static const value_string rdp_capabilityType_vals[] = {
- { CAPSTYPE_GENERAL, "General" },
- { CAPSTYPE_BITMAP, "Bitmap" },
- { CAPSTYPE_ORDER, "Order" },
- { CAPSTYPE_BITMAPCACHE, "Bitmap Cache" },
- { CAPSTYPE_CONTROL, "Control" },
- { CAPSTYPE_ACTIVATION, "Activation" },
- { CAPSTYPE_POINTER, "Pointer" },
- { CAPSTYPE_SHARE, "Share" },
- { CAPSTYPE_COLORCACHE, "Color Cache" },
- { CAPSTYPE_SOUND, "Sound" },
- { CAPSTYPE_INPUT, "Input" },
- { CAPSTYPE_FONT, "Font" },
- { CAPSTYPE_BRUSH, "Brush" },
- { CAPSTYPE_GLYPHCACHE, "Glyph Cache" },
- { CAPSTYPE_OFFSCREENCACHE, "Off-screen Cache" },
- { CAPSTYPE_BITMAPCACHE_HOSTSUPPORT, "Bitmap Cache Host Support" },
- { CAPSTYPE_BITMAPCACHE_REV2, "Bitmap Cache Rev 2" },
+ { CAPSTYPE_GENERAL, "General" },
+ { CAPSTYPE_BITMAP, "Bitmap" },
+ { CAPSTYPE_ORDER, "Order" },
+ { CAPSTYPE_BITMAPCACHE, "Bitmap Cache" },
+ { CAPSTYPE_CONTROL, "Control" },
+ { CAPSTYPE_ACTIVATION, "Activation" },
+ { CAPSTYPE_POINTER, "Pointer" },
+ { CAPSTYPE_SHARE, "Share" },
+ { CAPSTYPE_COLORCACHE, "Color Cache" },
+ { CAPSTYPE_SOUND, "Sound" },
+ { CAPSTYPE_INPUT, "Input" },
+ { CAPSTYPE_FONT, "Font" },
+ { CAPSTYPE_BRUSH, "Brush" },
+ { CAPSTYPE_GLYPHCACHE, "Glyph Cache" },
+ { CAPSTYPE_OFFSCREENCACHE, "Off-screen Cache" },
+ { CAPSTYPE_BITMAPCACHE_HOSTSUPPORT, "Bitmap Cache Host Support" },
+ { CAPSTYPE_BITMAPCACHE_REV2, "Bitmap Cache Rev 2" },
{ CAPSTYPE_BITMAPCACHE_VIRTUALCHANNEL, "Virtual Channel"},
- { CAPSTYPE_DRAWNINEGRIDCACHE, "Draw Nine Grid Cache" },
- { CAPSTYPE_DRAWGDIPLUS, "Draw GDI Plus" },
- { CAPSTYPE_RAIL, "Rail" },
- { CAPSTYPE_WINDOW, "Window" },
- { CAPSTYPE_COMPDESK, "Comp Desk" },
- { CAPSTYPE_MULTIFRAGMENTUPDATE, "Multi-Fragment Update" },
- { CAPSTYPE_LARGE_POINTER, "Large Pointer" },
- { CAPSTYPE_SURFACE_COMMANDS, "Surface Commands" },
- { CAPSTYPE_BITMAP_CODECS, "Bitmap Codecs" },
+ { CAPSTYPE_DRAWNINEGRIDCACHE, "Draw Nine Grid Cache" },
+ { CAPSTYPE_DRAWGDIPLUS, "Draw GDI Plus" },
+ { CAPSTYPE_RAIL, "Rail" },
+ { CAPSTYPE_WINDOW, "Window" },
+ { CAPSTYPE_COMPDESK, "Comp Desk" },
+ { CAPSTYPE_MULTIFRAGMENTUPDATE, "Multi-Fragment Update" },
+ { CAPSTYPE_LARGE_POINTER, "Large Pointer" },
+ { CAPSTYPE_SURFACE_COMMANDS, "Surface Commands" },
+ { CAPSTYPE_BITMAP_CODECS, "Bitmap Codecs" },
{0, NULL },
};
@@ -795,59 +797,63 @@ static int
dissect_rdp_fields(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, rdp_field_info_t *fields)
{
rdp_field_info_t *c;
- int base_offset = offset;
- guint16 length = 0;
- guint16 len = 0;
- proto_item *pi = NULL;
- proto_tree *next_tree = NULL;
- char *string;
+ int base_offset = offset;
+ guint16 length = 0;
+ guint16 len = 0;
+ char *string;
length = tvb_length_remaining(tvb, offset);
- for(c = fields; (c->field != -1) && ((offset - base_offset) < length); c++) {
+ for (c = fields; (c->field != -1) && ((offset - base_offset) < length); c++) {
- if((c->fixedLength == 0) && (c->variableLength)) {
+ if ((c->fixedLength == 0) && (c->variableLength)) {
len = *(c->variableLength);
} else {
len = c->fixedLength;
- if((c->variableLength) && ( c->fixedLength <= 4)) {
+ if ((c->variableLength) && ( c->fixedLength <= 4)) {
- if(c->fixedLength == 1)
- *(c->variableLength) = (guint16)tvb_get_guint8(tvb, offset);
- else if (c->fixedLength == 2)
- *(c->variableLength) = tvb_get_letohs(tvb, offset);
- else if (c->fixedLength == 4)
- *(c->variableLength) = tvb_get_letohl(tvb, offset);
+ if (c->fixedLength == 1)
+ *(c->variableLength) = (guint16)tvb_get_guint8(tvb, offset);
+ else if (c->fixedLength == 2)
+ *(c->variableLength) = tvb_get_letohs(tvb, offset);
+ else if (c->fixedLength == 4)
+ *(c->variableLength) = tvb_get_letohl(tvb, offset);
- *(c->variableLength) += c->offsetOrTree;
+ *(c->variableLength) += c->offsetOrTree;
}
}
if(len) {
- if(c->field != -1)
- pi = proto_tree_add_item(tree, c->field, tvb, offset, len, TRUE);
+ proto_item *pi;
+ if(c->field != -1) {
+ if(c->flags & RDP_FI_STRING)
+ pi = proto_tree_add_item(tree, c->field, tvb, offset, len, ENC_ASCII|ENC_NA);
+ else
+ pi = proto_tree_add_item(tree, c->field, tvb, offset, len, ENC_LITTLE_ENDIAN);
+ }
else
- REPORT_DISSECTOR_BUG("Error!!!!!\n");
+ REPORT_DISSECTOR_BUG("Error!!!!!\n");
- if(c->flags & RDP_FI_UNICODE) {
- string = tvb_get_ephemeral_unicode_string(tvb, offset, len/2, ENC_LITTLE_ENDIAN);
- proto_item_append_text(pi, " (%s)", string);
+ if (c->flags & RDP_FI_UNICODE) {
+ string = tvb_get_ephemeral_unicode_string(tvb, offset, len, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(pi, " (%s)", string);
}
- if(c->flags & RDP_FI_SUBTREE) {
- if(c->offsetOrTree != -1)
- next_tree = proto_item_add_subtree(pi, c->offsetOrTree);
- else
- REPORT_DISSECTOR_BUG("Tree Error!!\n");
+ if (c->flags & RDP_FI_SUBTREE) {
+ proto_tree *next_tree;
+ if (c->offsetOrTree != -1)
+ next_tree = proto_item_add_subtree(pi, c->offsetOrTree);
+ else
+ REPORT_DISSECTOR_BUG("Tree Error!!\n");
- if(c->subfields)
- dissect_rdp_fields(tvb, offset, pinfo, next_tree, c->subfields);
+ if (c->subfields)
+ dissect_rdp_fields(tvb, offset, pinfo, next_tree, c->subfields);
}
- if(!(c->flags & RDP_FI_NOINCOFFSET))
- offset += len;
+ if (!(c->flags & RDP_FI_NOINCOFFSET))
+ offset += len;
}
}
@@ -865,7 +871,7 @@ dissect_rdp_nyi(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree,
nyi_fields[0].fixedLength = tvb_length_remaining(tvb, offset);
offset = dissect_rdp_fields(tvb, offset, pinfo, tree, nyi_fields);
- if((tree != NULL) && (info != NULL))
+ if ((tree != NULL) && (info != NULL))
proto_item_append_text(tree->last_child, " (%s)", info);
return offset;
@@ -882,7 +888,7 @@ dissect_rdp_encrypted(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
enc_fields[0].fixedLength = tvb_length_remaining(tvb, offset);
offset = dissect_rdp_fields(tvb, offset,pinfo, tree, enc_fields);
- if((tree != NULL) && (info != NULL))
+ if ((tree != NULL) && (info != NULL))
proto_item_append_text(tree->last_child, " (%s)", info);
col_append_sep_str(pinfo->cinfo, COL_INFO, ", ", "[Encrypted]");
@@ -894,10 +900,9 @@ dissect_rdp_encrypted(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
static int
dissect_rdp_clientNetworkData(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint16 length, rdp_conv_info_t *rdp_info)
{
- proto_tree *next_tree = NULL;
- proto_item *pi = NULL;
- guint32 channelCount = 0;
- guint16 i = 0;
+ proto_tree *next_tree;
+ proto_item *pi;
+ guint32 channelCount = 0;
rdp_field_info_t net_fields[] = {
{hf_rdp_headerType, 2, NULL, 0, 0, NULL },
@@ -920,7 +925,7 @@ dissect_rdp_clientNetworkData(tvbuff_t *tvb, int offset, packet_info *pinfo, pro
FI_TERMINATOR,
};
rdp_field_info_t channel_fields[] = {
- FI_FIXEDLEN(hf_rdp_name, 8),
+ FI_FIXEDLEN_STRING(hf_rdp_name, 8),
FI_SUBTREE(hf_rdp_options, 4, ett_rdp_options, option_fields),
FI_TERMINATOR
};
@@ -929,28 +934,28 @@ dissect_rdp_clientNetworkData(tvbuff_t *tvb, int offset, packet_info *pinfo, pro
FI_TERMINATOR
};
- pi = proto_tree_add_item(tree, hf_rdp_clientNetworkData, tvb, offset, length, ENC_NA);
-
+ pi = proto_tree_add_item(tree, hf_rdp_clientNetworkData, tvb, offset, length, ENC_NA);
next_tree = proto_item_add_subtree(pi, ett_rdp_clientNetworkData);
offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, net_fields);
- if(channelCount > 0) {
- pi = proto_tree_add_item(next_tree, hf_rdp_channelDefArray, tvb, offset, channelCount * 12, ENC_NA);
+ if (channelCount > 0) {
+ guint16 i;
+ pi = proto_tree_add_item(next_tree, hf_rdp_channelDefArray, tvb, offset, channelCount * 12, ENC_NA);
next_tree = proto_item_add_subtree(pi, ett_rdp_channelDefArray);
- if(rdp_info)
+ if (rdp_info)
rdp_info->maxChannels = MIN(channelCount, MAX_CHANNELS);
for(i = 0; i < MIN(channelCount, MAX_CHANNELS); i++) {
- if(rdp_info) {
+ if (rdp_info) {
rdp_info->channels[i].value = -1; /* unset */
rdp_info->channels[i].strptr = tvb_get_ephemeral_string(tvb, offset, 8);
}
offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, def_fields);
}
- if(rdp_info) {
+ if (rdp_info) {
/* value_strings are normally terminated with a {0, NULL} entry */
rdp_info->channels[i].value = 0;
rdp_info->channels[i].strptr = NULL;
@@ -984,7 +989,7 @@ dissect_rdp_basicSecurityHeader(tvbuff_t *tvb, int offset, packet_info *pinfo, p
offset = dissect_rdp_fields(tvb, offset, pinfo, tree, flags_fields);
- if(flags_ptr)
+ if (flags_ptr)
*flags_ptr = flags;
return offset;
@@ -1007,21 +1012,21 @@ dissect_rdp_securityHeader(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_
};
rdp_field_info_t *fields = NULL;
- if(rdp_info) {
+ if (rdp_info) {
- if(alwaysBasic || (rdp_info->encryptionLevel != ENCRYPTION_LEVEL_NONE))
+ if (alwaysBasic || (rdp_info->encryptionLevel != ENCRYPTION_LEVEL_NONE))
offset = dissect_rdp_basicSecurityHeader(tvb, offset, pinfo, tree, flags_ptr);
- if(rdp_info->encryptionMethod &
- (ENCRYPTION_METHOD_40BIT |
- ENCRYPTION_METHOD_128BIT |
- ENCRYPTION_METHOD_56BIT)) {
+ if (rdp_info->encryptionMethod &
+ (ENCRYPTION_METHOD_40BIT |
+ ENCRYPTION_METHOD_128BIT |
+ ENCRYPTION_METHOD_56BIT)) {
fields = enc_fields;
- } else if(rdp_info->encryptionMethod == ENCRYPTION_METHOD_FIPS) {
+ } else if (rdp_info->encryptionMethod == ENCRYPTION_METHOD_FIPS) {
fields = fips_fields;
}
- if(fields)
+ if (fields)
offset = dissect_rdp_fields(tvb, offset, pinfo, tree, fields);
}
return offset;
@@ -1127,11 +1132,11 @@ dissect_rdp_shareDataHeader(tvbuff_t *tvb, int offset, packet_info *pinfo, proto
FI_TERMINATOR
};
- rdp_field_info_t *fields = NULL;
+ rdp_field_info_t *fields;
offset = dissect_rdp_fields(tvb, offset, pinfo, tree, share_fields);
- if(pduType2 != PDUTYPE2_CONTROL)
+ if (pduType2 != PDUTYPE2_CONTROL)
col_append_sep_str(pinfo->cinfo, COL_INFO, ", ", val_to_str(pduType2, rdp_pduType2_vals, "Unknown"));
fields = NULL;
@@ -1192,11 +1197,11 @@ dissect_rdp_shareDataHeader(tvbuff_t *tvb, int offset, packet_info *pinfo, proto
break;
}
- if(fields) {
+ if (fields) {
offset = dissect_rdp_fields(tvb, offset, pinfo, tree, fields);
}
- if(pduType2 == PDUTYPE2_CONTROL)
+ if (pduType2 == PDUTYPE2_CONTROL)
col_append_sep_str(pinfo->cinfo, COL_INFO, ", ", val_to_str(action, rdp_action_vals, "Unknown"));
return offset;
@@ -1204,10 +1209,10 @@ dissect_rdp_shareDataHeader(tvbuff_t *tvb, int offset, packet_info *pinfo, proto
static int
dissect_rdp_capabilitySets(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint32 numberCapabilities) {
- guint16 i = 0;
- guint16 length = 0;
+ guint16 i;
+ guint16 length;
guint32 lengthCapability;
- int base_offset = offset;
+ int base_offset = offset;
rdp_field_info_t cs_fields[] = {
{hf_rdp_capabilitySetType, 2, NULL, 0, 0, NULL },
@@ -1240,7 +1245,7 @@ dissect_rdp_demandActivePDU(tvbuff_t *tvb, int offset, packet_info *pinfo, proto
{hf_rdp_shareId, 4, NULL, 0, 0, NULL },
{hf_rdp_lengthSourceDescriptor, 2, &lengthSourceDescriptor, 0, 0, NULL },
{hf_rdp_lengthCombinedCapabilities, 2, NULL, 0, 0, NULL },
- {hf_rdp_sourceDescriptor, 0, &lengthSourceDescriptor, 0, 0, NULL },
+ {hf_rdp_sourceDescriptor, 0, &lengthSourceDescriptor, 0, RDP_FI_STRING, NULL },
{hf_rdp_numberCapabilities, 2, &numberCapabilities, 0, 0, NULL },
{hf_rdp_pad2Octets, 2, NULL, 0, 0, NULL },
FI_TERMINATOR
@@ -1287,8 +1292,8 @@ dissect_rdp_confirmActivePDU(tvbuff_t *tvb, int offset, packet_info *pinfo, prot
static proto_tree *
dissect_rdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
{
- proto_item *item = NULL;
- proto_tree *tree = NULL;
+ proto_item *item;
+ proto_tree *tree;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "RDP");
col_clear(pinfo->cinfo, COL_INFO);
@@ -1299,20 +1304,19 @@ dissect_rdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
return tree;
}
-void
+static void
dissect_rdp_SendData(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
- proto_tree *next_tree = NULL;
- proto_item *pi = NULL;
- int offset = 0;
- guint32 flags = 0;
- guint16 length = 0;
- guint32 cbDomain, cbUserName, cbPassword, cbAlternateShell, cbWorkingDir,
- cbClientAddress, cbClientDir, cbAutoReconnectLen, wBlobLen, pduType;
- guint32 bMsgType;
- guint32 encryptedLen = 0;
- int base_offset = 0;
- conversation_t *conversation;
- rdp_conv_info_t *rdp_info = NULL;
+ proto_item *pi;
+ int offset = 0;
+ guint32 flags = 0;
+ guint16 length = 0;
+ guint32 cbDomain, cbUserName, cbPassword, cbAlternateShell, cbWorkingDir,
+ cbClientAddress, cbClientDir, cbAutoReconnectLen, wBlobLen, pduType;
+ guint32 bMsgType;
+ guint32 encryptedLen = 0;
+ int base_offset = 0;
+ conversation_t *conversation;
+ rdp_conv_info_t *rdp_info;
rdp_field_info_t secFlags_fields[] = {
{hf_rdp_flagsPkt, 2, &flags, 0, RDP_FI_NOINCOFFSET, NULL },
@@ -1423,22 +1427,23 @@ dissect_rdp_SendData(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
length = tvb_length_remaining(tvb, offset);
tree = dissect_rdp(tvb, pinfo, tree);
- pi = proto_tree_add_item(tree, hf_rdp_SendData, tvb, offset, length, ENC_NA);
+ pi = proto_tree_add_item(tree, hf_rdp_SendData, tvb, offset, length, ENC_NA);
tree = proto_item_add_subtree(pi, ett_rdp_SendData);
conversation = find_or_create_conversation(pinfo);
rdp_info = conversation_get_proto_data(conversation, proto_rdp);
- if(rdp_info &&
+ if (rdp_info &&
((rdp_info->licenseAgreed == 0) ||
(pinfo->fd->num <= rdp_info->licenseAgreed))) {
/* licensing stage hasn't been completed */
+ proto_tree *next_tree;
flags = tvb_get_letohs(tvb, offset);
switch(flags & SEC_PKT_MASK) {
case SEC_EXCHANGE_PKT:
- pi = proto_tree_add_item(tree, hf_rdp_securityExchangePDU, tvb, offset, length, ENC_NA);
+ pi = proto_tree_add_item(tree, hf_rdp_securityExchangePDU, tvb, offset, length, ENC_NA);
next_tree = proto_item_add_subtree(pi, ett_rdp_securityExchangePDU);
col_append_sep_str(pinfo->cinfo, COL_INFO, " ", "SecurityExchange");
@@ -1448,55 +1453,56 @@ dissect_rdp_SendData(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
break;
case SEC_INFO_PKT:
- pi = proto_tree_add_item(tree, hf_rdp_clientInfoPDU, tvb, offset, length, ENC_NA);
+ pi = proto_tree_add_item(tree, hf_rdp_clientInfoPDU, tvb, offset, length, ENC_NA);
next_tree = proto_item_add_subtree(pi, ett_rdp_clientInfoPDU);
+
col_append_sep_str(pinfo->cinfo, COL_INFO, " ", "ClientInfo");
offset = dissect_rdp_securityHeader(tvb, offset, pinfo, next_tree, rdp_info, TRUE, NULL);
- if(!(flags & SEC_ENCRYPT)) {
+ if (!(flags & SEC_ENCRYPT)) {
- offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, ue_fields);
+ offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, ue_fields);
} else {
- offset = dissect_rdp_encrypted(tvb, offset, pinfo, next_tree, NULL);
+ offset = dissect_rdp_encrypted(tvb, offset, pinfo, next_tree, NULL);
}
break;
case SEC_LICENSE_PKT:
- pi = proto_tree_add_item(tree, hf_rdp_validClientLicenseData, tvb, offset, length, ENC_NA);
+ pi = proto_tree_add_item(tree, hf_rdp_validClientLicenseData, tvb, offset, length, ENC_NA);
next_tree = proto_item_add_subtree(pi, ett_rdp_validClientLicenseData);
offset = dissect_rdp_securityHeader(tvb, offset, pinfo, next_tree, rdp_info, TRUE, NULL);
- if(!(flags & SEC_ENCRYPT)) {
-
- offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, msg_fields);
-
- col_append_sep_str(pinfo->cinfo, COL_INFO, ", ", val_to_str(bMsgType, rdp_bMsgType_vals, "Unknown"));
-
- switch(bMsgType) {
- case LICENSE_REQUEST:
- case PLATFORM_CHALLENGE:
- case NEW_LICENSE:
- case UPGRADE_LICENSE:
- case LICENSE_INFO:
- case NEW_LICENSE_REQUEST:
- case PLATFORM_CHALLENGE_RESPONSE:
- /* RDPELE Not supported */
- offset = dissect_rdp_nyi(tvb, offset, pinfo, next_tree, "RDPELE not implemented");
- break;
- case ERROR_ALERT:
- offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, error_fields);
- rdp_info->licenseAgreed = pinfo->fd->num;
- break;
- default:
- /* Unknown msgType */
- break;
- }
+ if (!(flags & SEC_ENCRYPT)) {
+
+ offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, msg_fields);
+
+ col_append_sep_str(pinfo->cinfo, COL_INFO, ", ", val_to_str(bMsgType, rdp_bMsgType_vals, "Unknown"));
+
+ switch(bMsgType) {
+ case LICENSE_REQUEST:
+ case PLATFORM_CHALLENGE:
+ case NEW_LICENSE:
+ case UPGRADE_LICENSE:
+ case LICENSE_INFO:
+ case NEW_LICENSE_REQUEST:
+ case PLATFORM_CHALLENGE_RESPONSE:
+ /* RDPELE Not supported */
+ offset = dissect_rdp_nyi(tvb, offset, pinfo, next_tree, "RDPELE not implemented");
+ break;
+ case ERROR_ALERT:
+ offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, error_fields);
+ rdp_info->licenseAgreed = pinfo->fd->num;
+ break;
+ default:
+ /* Unknown msgType */
+ break;
+ }
} else {
- offset = dissect_rdp_encrypted(tvb, offset, pinfo, next_tree, NULL);
+ offset = dissect_rdp_encrypted(tvb, offset, pinfo, next_tree, NULL);
- /* XXX: we assume the license is agreed in this exchange */
- rdp_info->licenseAgreed = pinfo->fd->num;
+ /* XXX: we assume the license is agreed in this exchange */
+ rdp_info->licenseAgreed = pinfo->fd->num;
}
break;
case SEC_REDIRECTION_PKT:
@@ -1505,74 +1511,76 @@ dissect_rdp_SendData(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
default:
break;
}
- } else {
-
- if(rdp_info && (t124_get_last_channelId() == rdp_info->staticChannelId)) {
-
- offset = dissect_rdp_securityHeader(tvb, offset, pinfo, tree, rdp_info, FALSE, &flags);
-
- if(!(flags & SEC_ENCRYPT)) {
- pi = proto_tree_add_item(tree, hf_rdp_shareControlHeader, tvb, offset, length, ENC_NA);
- next_tree = proto_item_add_subtree(pi, ett_rdp_shareControlHeader);
-
- offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, ctrl_fields);
-
- pduType &= PDUTYPE_TYPE_MASK; /* mask out just the type */
-
- if(pduType != PDUTYPE_DATAPDU)
- col_append_sep_str(pinfo->cinfo, COL_INFO, ", ", val_to_str(pduType, rdp_pduTypeType_vals, "Unknown"));
-
- switch(pduType) {
- case PDUTYPE_DEMANDACTIVEPDU:
- offset = dissect_rdp_demandActivePDU(tvb, offset, pinfo, next_tree);
- break;
- case PDUTYPE_CONFIRMACTIVEPDU:
- offset = dissect_rdp_confirmActivePDU(tvb, offset, pinfo, next_tree);
- break;
- case PDUTYPE_DEACTIVATEALLPDU:
- break;
- case PDUTYPE_DATAPDU:
- offset = dissect_rdp_shareDataHeader(tvb, offset, pinfo, next_tree);
- break;
- case PDUTYPE_SERVER_REDIR_PKT:
- break;
- default:
- break;
- }
- } else {
- offset = dissect_rdp_encrypted(tvb, offset, pinfo, next_tree, NULL);
- }
+ return;
+ } /* licensing stage */
- /* we may get multiple control headers in a single frame */
- col_set_fence(pinfo->cinfo, COL_INFO);
+ if (rdp_info && (t124_get_last_channelId() == rdp_info->staticChannelId)) {
- offset = base_offset + length;
+ offset = dissect_rdp_securityHeader(tvb, offset, pinfo, tree, rdp_info, FALSE, &flags);
- } else {
+ if (!(flags & SEC_ENCRYPT)) {
+ proto_tree *next_tree;
+ pi = proto_tree_add_item(tree, hf_rdp_shareControlHeader, tvb, offset, length, ENC_NA);
+ next_tree = proto_item_add_subtree(pi, ett_rdp_shareControlHeader);
- col_append_sep_str(pinfo->cinfo, COL_INFO, " ", "Virtual Channel PDU");
+ offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, ctrl_fields);
- offset = dissect_rdp_securityHeader(tvb, offset, pinfo, tree, rdp_info, FALSE, &flags);
+ pduType &= PDUTYPE_TYPE_MASK; /* mask out just the type */
- if(!(flags & SEC_ENCRYPT))
- offset = dissect_rdp_channelPDU(tvb, offset, pinfo, tree);
- else
- offset = dissect_rdp_encrypted(tvb, offset, pinfo, next_tree, "Channel PDU");
+ if (pduType != PDUTYPE_DATAPDU)
+ col_append_sep_str(pinfo->cinfo, COL_INFO, ", ", val_to_str(pduType, rdp_pduTypeType_vals, "Unknown"));
+ switch(pduType) {
+ case PDUTYPE_DEMANDACTIVEPDU:
+ offset = dissect_rdp_demandActivePDU(tvb, offset, pinfo, next_tree);
+ break;
+ case PDUTYPE_CONFIRMACTIVEPDU:
+ offset = dissect_rdp_confirmActivePDU(tvb, offset, pinfo, next_tree);
+ break;
+ case PDUTYPE_DEACTIVATEALLPDU:
+ break;
+ case PDUTYPE_DATAPDU:
+ offset = dissect_rdp_shareDataHeader(tvb, offset, pinfo, next_tree);
+ break;
+ case PDUTYPE_SERVER_REDIR_PKT:
+ break;
+ default:
+ break;
+ }
+ } else {
+
+ offset = dissect_rdp_encrypted(tvb, offset, pinfo, tree, NULL);
}
- }
+
+ /* we may get multiple control headers in a single frame */
+ col_set_fence(pinfo->cinfo, COL_INFO);
+
+ offset = base_offset + length;
+
+ return;
+ } /* (rdp_info && (t124_get_last_channelId() == rdp_info->staticChannelId)) */
+
+ /* Virtual Channel */
+ col_append_sep_str(pinfo->cinfo, COL_INFO, " ", "Virtual Channel PDU");
+
+ offset = dissect_rdp_securityHeader(tvb, offset, pinfo, tree, rdp_info, FALSE, &flags);
+
+ if (!(flags & SEC_ENCRYPT))
+ offset = dissect_rdp_channelPDU(tvb, offset, pinfo, tree);
+ else
+ offset = dissect_rdp_encrypted(tvb, offset, pinfo, tree, "Channel PDU");
}
-void
+static void
dissect_rdp_ClientData(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
- int offset = 0;
- proto_tree *next_tree = NULL;
- proto_item *pi = NULL;
- guint16 type;
- guint16 length;
- conversation_t *conversation;
- rdp_conv_info_t *rdp_info = NULL;
+ int offset = 0;
+ proto_item *pi;
+ proto_tree *next_tree;
+ guint16 type;
+ guint16 length;
+ conversation_t *conversation;
+ rdp_conv_info_t *rdp_info;
rdp_field_info_t header_fields[] = {
{hf_rdp_headerType, 2, NULL, 0, 0, NULL },
@@ -1634,104 +1642,103 @@ dissect_rdp_ClientData(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
rdp_info = conversation_get_proto_data(conversation, proto_rdp);
- if(rdp_info == NULL) {
+ if (rdp_info == NULL) {
rdp_info = g_malloc0(sizeof(rdp_conv_info_t));
- rdp_info->staticChannelId = -1;
+ rdp_info->staticChannelId = -1;
rdp_info->encryptionMethod = 0;
- rdp_info->encryptionLevel = 0;
- rdp_info->licenseAgreed = 0;
- rdp_info->maxChannels = 0;
+ rdp_info->encryptionLevel = 0;
+ rdp_info->licenseAgreed = 0;
+ rdp_info->maxChannels = 0;
conversation_add_proto_data(conversation, proto_rdp, rdp_info);
- rdp_info->next = rdp_conv_info_items;
+ rdp_info->next = rdp_conv_info_items;
rdp_conv_info_items = rdp_info;
}
col_append_sep_str(pinfo->cinfo, COL_INFO, " ", "ClientData");
- pi = proto_tree_add_item(tree, hf_rdp_ClientData, tvb, offset, length, ENC_NA);
+ pi = proto_tree_add_item(tree, hf_rdp_ClientData, tvb, offset, length, ENC_NA);
tree = proto_item_add_subtree(pi, ett_rdp_ClientData);
- while(tvb_length_remaining(tvb, offset) > 0) {
+ while (tvb_length_remaining(tvb, offset) > 0) {
type = tvb_get_letohs(tvb, offset);
length = tvb_get_letohs(tvb, offset+2);
- /* printf("offset=%d, type=%x, length=%d, remaining=%d\n",
- offset, type, length, tvb_length_remaining(tvb, offset)); */
+#if 0
+ printf("offset=%d, type=%x, length=%d, remaining=%d\n",
+ offset, type, length, tvb_length_remaining(tvb, offset));
+#endif
- if(length == 0)
+ if (length == 0)
return;
switch(type) {
case CS_CORE:
- if(tvb_length_remaining(tvb, offset) >= length) {
+ if (tvb_length_remaining(tvb, offset) >= length) {
- pi = proto_tree_add_item(tree, hf_rdp_clientCoreData, tvb, offset, length, ENC_NA);
- next_tree = proto_item_add_subtree(pi, ett_rdp_clientCoreData);
+ pi = proto_tree_add_item(tree, hf_rdp_clientCoreData, tvb, offset, length, ENC_NA);
+ next_tree = proto_item_add_subtree(pi, ett_rdp_clientCoreData);
- offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, core_fields);
+ offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, core_fields);
} else {
- /* block not big enough */
- return;
+ /* block not big enough */
+ return;
}
break;
case CS_SECURITY:
- if(tvb_length_remaining(tvb, offset) >= length) {
+ if (tvb_length_remaining(tvb, offset) >= length) {
- pi = proto_tree_add_item(tree, hf_rdp_clientSecurityData, tvb, offset, length, ENC_NA);
+ pi = proto_tree_add_item(tree, hf_rdp_clientSecurityData, tvb, offset, length, ENC_NA);
+ next_tree = proto_item_add_subtree(pi, ett_rdp_clientSecurityData);
- next_tree = proto_item_add_subtree(pi, ett_rdp_clientSecurityData);
-
- offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, security_fields);
+ offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, security_fields);
} else {
- /* not enough data */
- return;
+ /* not enough data */
+ return;
}
break;
case CS_NET:
- if(tvb_length_remaining(tvb, offset) >= length) {
+ if (tvb_length_remaining(tvb, offset) >= length) {
- offset = dissect_rdp_clientNetworkData(tvb, offset, pinfo, tree,
- length, rdp_info);
+ offset = dissect_rdp_clientNetworkData(tvb, offset, pinfo, tree,
+ length, rdp_info);
} else {
- /* not enough data */
- return;
+ /* not enough data */
+ return;
}
break;
case CS_CLUSTER:
- if(tvb_length_remaining(tvb, offset) >= length) {
-
- pi = proto_tree_add_item(tree, hf_rdp_clientClusterData, tvb, offset, length, ENC_NA);
+ if (tvb_length_remaining(tvb, offset) >= length) {
- next_tree = proto_item_add_subtree(pi, ett_rdp_clientClusterData);
+ pi = proto_tree_add_item(tree, hf_rdp_clientClusterData, tvb, offset, length, ENC_NA);
+ next_tree = proto_item_add_subtree(pi, ett_rdp_clientClusterData);
- offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, cluster_fields);
+ offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, cluster_fields);
} else {
- /* not enough data */
- return;
+ /* not enough data */
+ return;
}
break;
default:
- if(tvb_length_remaining(tvb, offset) >= length) {
-
- pi = proto_tree_add_item(tree, hf_rdp_clientUnknownData, tvb, offset, length, ENC_NA);
+ if (tvb_length_remaining(tvb, offset) >= length) {
- next_tree = proto_item_add_subtree(pi, ett_rdp_clientUnknownData);
+ pi = proto_tree_add_item(tree, hf_rdp_clientUnknownData, tvb, offset, length, ENC_NA);
+ next_tree = proto_item_add_subtree(pi, ett_rdp_clientUnknownData);
- offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, header_fields);
+ offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, header_fields);
- } else {
- return;
- }
+ } else {
+ return;
+ }
break;
}
@@ -1739,23 +1746,22 @@ dissect_rdp_ClientData(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
}
-void
+static void
dissect_rdp_ServerData(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
- int offset = 0;
- proto_tree *next_tree = NULL;
- proto_tree *old_tree = NULL;
- proto_item *pi = NULL;
- guint16 type;
- guint16 length;
- guint32 serverRandomLen = 0;
- guint32 serverCertLen = 0;
- guint32 encryptionMethod = 0;
- guint32 encryptionLevel = 0;
- guint32 channelCount = 0;
- guint32 channelId = 0;
- guint16 i = 0;
- conversation_t *conversation;
- rdp_conv_info_t *rdp_info = NULL;
+ int offset = 0;
+ proto_item *pi;
+ proto_tree *next_tree;
+ guint16 type;
+ guint16 length;
+ guint32 serverRandomLen = 0;
+ guint32 serverCertLen = 0;
+ guint32 encryptionMethod = 0;
+ guint32 encryptionLevel = 0;
+ guint32 channelCount = 0;
+ guint32 channelId = 0;
+ guint16 i = 0;
+ conversation_t *conversation;
+ rdp_conv_info_t *rdp_info;
rdp_field_info_t header_fields[] = {
{hf_rdp_headerType, 2, NULL, 0, 0, NULL },
@@ -1808,137 +1814,133 @@ dissect_rdp_ServerData(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
As soon as we find one we don't recognise, we have to give up parsing
the rest of the data block. */
- tree = dissect_rdp(tvb, pinfo, tree);
+ tree = dissect_rdp(tvb, pinfo, tree);
length = tvb_length_remaining(tvb, offset);
conversation = find_or_create_conversation(pinfo);
rdp_info = conversation_get_proto_data(conversation, proto_rdp);
- if(rdp_info == NULL) {
+ if (rdp_info == NULL) {
rdp_info = g_malloc0(sizeof(rdp_conv_info_t));
- rdp_info->staticChannelId = -1;
+ rdp_info->staticChannelId = -1;
rdp_info->encryptionMethod = 0;
- rdp_info->encryptionLevel = 0;
- rdp_info->licenseAgreed = 0;
- rdp_info->maxChannels = 0;
+ rdp_info->encryptionLevel = 0;
+ rdp_info->licenseAgreed = 0;
+ rdp_info->maxChannels = 0;
conversation_add_proto_data(conversation, proto_rdp, rdp_info);
- rdp_info->next = rdp_conv_info_items;
+ rdp_info->next = rdp_conv_info_items;
rdp_conv_info_items = rdp_info;
}
col_append_sep_str(pinfo->cinfo, COL_INFO, " ", "ServerData");
- pi = proto_tree_add_item(tree, hf_rdp_ServerData, tvb, offset, length, ENC_NA);
+ pi = proto_tree_add_item(tree, hf_rdp_ServerData, tvb, offset, length, ENC_NA);
tree = proto_item_add_subtree(pi, ett_rdp_ServerData);
- while(tvb_length_remaining(tvb, offset) > 0) {
+ while (tvb_length_remaining(tvb, offset) > 0) {
- type = tvb_get_letohs(tvb, offset);
+ type = tvb_get_letohs(tvb, offset);
length = tvb_get_letohs(tvb, offset+2);
/* printf("offset=%d, type=%x, length=%d, remaining=%d\n",
- offset, type, length, tvb_length_remaining(tvb, offset)); */
+ offset, type, length, tvb_length_remaining(tvb, offset)); */
- if(length == 0)
+ if (length == 0)
return;
switch(type) {
case SC_CORE:
- if(tvb_length_remaining(tvb, offset) >= length) {
+ if (tvb_length_remaining(tvb, offset) >= length) {
- pi = proto_tree_add_item(tree, hf_rdp_serverCoreData, tvb, offset, length, ENC_NA);
- next_tree = proto_item_add_subtree(pi, ett_rdp_serverCoreData);
+ pi = proto_tree_add_item(tree, hf_rdp_serverCoreData, tvb, offset, length, ENC_NA);
+ next_tree = proto_item_add_subtree(pi, ett_rdp_serverCoreData);
- offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, sc_fields);
+ offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, sc_fields);
} else {
- /* block not big enough */
- return;
+ /* block not big enough */
+ return;
}
break;
case SC_SECURITY:
- if(tvb_length_remaining(tvb, offset) >= length) {
-
- pi = proto_tree_add_item(tree, hf_rdp_serverSecurityData, tvb, offset, length, ENC_NA);
+ if (tvb_length_remaining(tvb, offset) >= length) {
- next_tree = proto_item_add_subtree(pi, ett_rdp_serverSecurityData);
+ pi = proto_tree_add_item(tree, hf_rdp_serverSecurityData, tvb, offset, length, ENC_NA);
+ next_tree = proto_item_add_subtree(pi, ett_rdp_serverSecurityData);
- offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, ss_fields);
+ offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, ss_fields);
- col_append_sep_fstr(pinfo->cinfo, COL_INFO, " ", "Encryption: %s (%s)",
- val_to_str(encryptionMethod, rdp_encryptionMethod_vals, "Unknown"),
- val_to_str(encryptionLevel, rdp_encryptionLevel_vals, "Unknown"));
+ col_append_sep_fstr(pinfo->cinfo, COL_INFO, " ", "Encryption: %s (%s)",
+ val_to_str(encryptionMethod, rdp_encryptionMethod_vals, "Unknown"),
+ val_to_str(encryptionLevel, rdp_encryptionLevel_vals, "Unknown"));
- if((encryptionLevel != 0) || (encryptionMethod != 0)) {
+ if ((encryptionLevel != 0) || (encryptionMethod != 0)) {
- offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, encryption_fields);
- }
+ offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, encryption_fields);
+ }
- rdp_info->encryptionMethod = encryptionMethod;
- rdp_info->encryptionLevel = encryptionLevel;
+ rdp_info->encryptionMethod = encryptionMethod;
+ rdp_info->encryptionLevel = encryptionLevel;
} else {
- /* not enough data */
- return;
+ /* not enough data */
+ return;
}
break;
case SC_NET:
- if(tvb_length_remaining(tvb, offset) >= length) {
+ if (tvb_length_remaining(tvb, offset) >= length) {
- pi = proto_tree_add_item(tree, hf_rdp_serverNetworkData, tvb, offset, length, ENC_NA);
+ pi = proto_tree_add_item(tree, hf_rdp_serverNetworkData, tvb, offset, length, ENC_NA);
+ next_tree = proto_item_add_subtree(pi, ett_rdp_serverNetworkData);
- next_tree = proto_item_add_subtree(pi, ett_rdp_serverNetworkData);
+ offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, sn_fields);
- offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, sn_fields);
+ rdp_info->staticChannelId = channelId;
+ register_t124_sd_dissector(pinfo, channelId, dissect_rdp_SendData, proto_rdp);
+ if (channelCount > 0) {
+ proto_tree *old_tree;
- rdp_info->staticChannelId = channelId;
- register_t124_sd_dissector(pinfo, channelId, dissect_rdp_SendData, proto_rdp);
- if(channelCount > 0) {
+ array_fields[0].fixedLength = channelCount * 2;
+ dissect_rdp_fields(tvb, offset, pinfo, next_tree, array_fields);
- array_fields[0].fixedLength = channelCount * 2;
- dissect_rdp_fields(tvb, offset, pinfo, next_tree, array_fields);
+ old_tree = next_tree; /* XXX: save not actually req'd ? */
+ if (next_tree)
+ next_tree = proto_item_add_subtree(next_tree->last_child, ett_rdp_channelIdArray);
+ for(i = 0; i < channelCount; i++) {
+ offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, channel_fields);
+ if (i < MAX_CHANNELS)
+ rdp_info->channels[i].value = channelId;
- old_tree = next_tree;
- if(next_tree)
- next_tree = proto_item_add_subtree(next_tree->last_child, ett_rdp_channelIdArray);
- for(i = 0; i < channelCount; i++) {
- offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, channel_fields);
- if(rdp_info) {
- if(i < MAX_CHANNELS)
- rdp_info->channels[i].value = channelId;
-
- /* register SendData on this for now */
- register_t124_sd_dissector(pinfo, channelId, dissect_rdp_SendData, proto_rdp);
- }
- }
- if(channelCount % 2)
- offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, pad_fields);
- next_tree = old_tree;
- }
+ /* register SendData on this for now */
+ register_t124_sd_dissector(pinfo, channelId, dissect_rdp_SendData, proto_rdp);
+ }
+ if (channelCount % 2)
+ offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, pad_fields);
+ next_tree = old_tree;
+ }
} else {
- /* not enough data */
- return;
+ /* not enough data */
+ return;
}
break;
default:
- if(tvb_length_remaining(tvb, offset) >= length) {
-
- pi = proto_tree_add_item(tree, hf_rdp_serverUnknownData, tvb, offset, length, ENC_NA);
+ if (tvb_length_remaining(tvb, offset) >= length) {
- next_tree = proto_item_add_subtree(pi, ett_rdp_serverUnknownData);
+ pi = proto_tree_add_item(tree, hf_rdp_serverUnknownData, tvb, offset, length, ENC_NA);
+ next_tree = proto_item_add_subtree(pi, ett_rdp_serverUnknownData);
- offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, header_fields);
+ offset = dissect_rdp_fields(tvb, offset, pinfo, next_tree, header_fields);
- } else {
- return;
- }
+ } else {
+ return;
+ }
break;
}
@@ -2414,7 +2416,7 @@ proto_register_rdp(void) {
{ &hf_rdp_compressedTypeType,
{ "compressedTypeType", "rdp.compressedType.type",
FT_UINT8, BASE_HEX, VALS(rdp_compressionType_vals),
- PacketCompressionTypeMask,
+ PacketCompressionTypeMask,
NULL, HFILL }},
{ &hf_rdp_compressedTypeCompressed,
{ "compressedTypeCompressed", "rdp.compressedType.compressed",
@@ -2467,7 +2469,7 @@ proto_register_rdp(void) {
{ &hf_rdp_action,
{ "action", "rdp.action",
FT_UINT16, BASE_HEX, VALS(rdp_action_vals),
- 0,
+ 0,
NULL, HFILL }},
{ &hf_rdp_grantId,
{ "grantId", "rdp.grantId",
@@ -2767,37 +2769,37 @@ proto_register_rdp(void) {
/* List of subtrees */
static gint *ett[] = {
- &ett_rdp,
- &ett_rdp_ClientData,
- &ett_rdp_ServerData,
- &ett_rdp_SendData,
- &ett_rdp_capabilitySet,
- &ett_rdp_channelDef,
- &ett_rdp_channelDefArray,
- &ett_rdp_channelFlags,
- &ett_rdp_channelIdArray,
- &ett_rdp_channelPDUHeader,
- &ett_rdp_clientClusterData,
- &ett_rdp_clientCoreData,
- &ett_rdp_clientInfoPDU,
- &ett_rdp_clientNetworkData,
- &ett_rdp_clientSecurityData,
- &ett_rdp_clientUnknownData,
- &ett_rdp_compressedType,
- &ett_rdp_flags,
- &ett_rdp_mapFlags,
- &ett_rdp_options,
- &ett_rdp_pduType,
- &ett_rdp_securityExchangePDU,
- &ett_rdp_serverCoreData,
- &ett_rdp_serverNetworkData,
- &ett_rdp_serverSecurityData,
- &ett_rdp_serverUnknownData,
- &ett_rdp_shareControlHeader,
- &ett_rdp_validClientLicenseData,
- &ett_rdp_StandardDate,
- &ett_rdp_DaylightDate,
- &ett_rdp_clientTimeZone,
+ &ett_rdp,
+ &ett_rdp_ClientData,
+ &ett_rdp_ServerData,
+ &ett_rdp_SendData,
+ &ett_rdp_capabilitySet,
+ &ett_rdp_channelDef,
+ &ett_rdp_channelDefArray,
+ &ett_rdp_channelFlags,
+ &ett_rdp_channelIdArray,
+ &ett_rdp_channelPDUHeader,
+ &ett_rdp_clientClusterData,
+ &ett_rdp_clientCoreData,
+ &ett_rdp_clientInfoPDU,
+ &ett_rdp_clientNetworkData,
+ &ett_rdp_clientSecurityData,
+ &ett_rdp_clientUnknownData,
+ &ett_rdp_compressedType,
+ &ett_rdp_flags,
+ &ett_rdp_mapFlags,
+ &ett_rdp_options,
+ &ett_rdp_pduType,
+ &ett_rdp_securityExchangePDU,
+ &ett_rdp_serverCoreData,
+ &ett_rdp_serverNetworkData,
+ &ett_rdp_serverSecurityData,
+ &ett_rdp_serverUnknownData,
+ &ett_rdp_shareControlHeader,
+ &ett_rdp_validClientLicenseData,
+ &ett_rdp_StandardDate,
+ &ett_rdp_DaylightDate,
+ &ett_rdp_clientTimeZone,
};
module_t *rdp_module;
@@ -2814,9 +2816,9 @@ proto_register_rdp(void) {
rdp_module = prefs_register_protocol(proto_rdp, prefs_register_rdp);
prefs_register_uint_preference(rdp_module, "tcp.port", "RDP TCP Port",
- "Set the port for RDP operations (if other"
- " than the default of 3389)",
- 10, &global_rdp_tcp_port);
+ "Set the port for RDP operations (if other"
+ " than the default of 3389)",
+ 10, &global_rdp_tcp_port);
}
@@ -2840,12 +2842,12 @@ prefs_register_rdp(void) {
/* de-register the old port */
/* port 102 is registered by TPKT - don't undo this! */
- if((tcp_port > 0) && (tcp_port != 102) && tpkt_handle)
+ if ((tcp_port > 0) && (tcp_port != 102) && tpkt_handle)
dissector_delete_uint("tcp.port", tcp_port, tpkt_handle);
/* Set our port number for future use */
tcp_port = global_rdp_tcp_port;
- if((tcp_port > 0) && (tcp_port != 102) && tpkt_handle)
+ if ((tcp_port > 0) && (tcp_port != 102) && tpkt_handle)
dissector_add_uint("tcp.port", tcp_port, tpkt_handle);
}
diff --git a/epan/dissectors/packet-rdp.h b/epan/dissectors/packet-rdp.h
deleted file mode 100644
index 4f15f806df..0000000000
--- a/epan/dissectors/packet-rdp.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* packet-rdp.h
- * Routines for Remote Desktop Protocol (RDP) packet dissection
- *
- * $Id$
- *
- * Copyright (c) 2010 by Graeme Lunt
- *
- * Wireshark - Network traffic analyzer
- * By Gerald Combs <gerald@wireshark.org>
- * Copyright 1999 Gerald Combs
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-/* Find the end of the next IMF field in the tvb.
- * This is not necessarily the first \r\n as there may be continuation lines.
- *
- * If we have found the last field (terminated by \r\n\r\n) we indicate this in last_field .
- */
-
-#ifndef _PACKET_RDP_H
-#define _PACKET_RDP_H
-
-void
-dissect_rdp_SendData(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);
-
-#endif /* _PACKET_RDP_H */
-
diff --git a/epan/dissectors/packet-redbackli.c b/epan/dissectors/packet-redbackli.c
index 2a9660c267..f2cd3a2d16 100644
--- a/epan/dissectors/packet-redbackli.c
+++ b/epan/dissectors/packet-redbackli.c
@@ -29,11 +29,8 @@
#include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-#include <time.h>
-
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/addr_resolv.h>
#include <epan/strutil.h>
diff --git a/epan/dissectors/packet-reload.c b/epan/dissectors/packet-reload.c
index 71f6e79dd8..fc51f6c781 100644
--- a/epan/dissectors/packet-reload.c
+++ b/epan/dissectors/packet-reload.c
@@ -333,8 +333,8 @@ static dissector_handle_t xml_handle;
/* Structure containing transaction specific information */
typedef struct _reload_transaction_t {
- guint32 req_frame;
- guint32 rep_frame;
+ guint32 req_frame;
+ guint32 rep_frame;
nstime_t req_time;
} reload_transaction_t;
@@ -353,27 +353,27 @@ typedef struct _reload_conv_info_t {
#define VERSION_DRAFT 0x01
/* RELOAD Message Methods = (message_code +1) & 0xfffe*/
-#define METHOD_INVALID 0
-#define METHOD_PROBE 2
-#define METHOD_ATTACH 4
-#define METHOD_STORE 8
-#define METHOD_FETCH 10
-#define METHOD_UNUSED_REMOVE 12
-#define METHOD_FIND 14
-#define METHOD_JOIN 16
-#define METHOD_LEAVE 18
-#define METHOD_UPDATE 20
-#define METHOD_ROUTEQUERY 22
-#define METHOD_PING 24
-#define METHOD_STAT 26
-#define METHOD_UNUSED_ATTACHLIGHT 28
-#define METHOD_APPATTACH 30
-#define METHOD_UNUSED_APP_ATTACHLIGHT 32
-#define METHOD_CONFIGUPDATE 34
-#define METHOD_EXP_A 36
-#define METHOD_EXP_B 38
+#define METHOD_INVALID 0
+#define METHOD_PROBE 2
+#define METHOD_ATTACH 4
+#define METHOD_STORE 8
+#define METHOD_FETCH 10
+#define METHOD_UNUSED_REMOVE 12
+#define METHOD_FIND 14
+#define METHOD_JOIN 16
+#define METHOD_LEAVE 18
+#define METHOD_UPDATE 20
+#define METHOD_ROUTEQUERY 22
+#define METHOD_PING 24
+#define METHOD_STAT 26
+#define METHOD_UNUSED_ATTACHLIGHT 28
+#define METHOD_APPATTACH 30
+#define METHOD_UNUSED_APP_ATTACHLIGHT 32
+#define METHOD_CONFIGUPDATE 34
+#define METHOD_EXP_A 36
+#define METHOD_EXP_B 38
#define METHOD_PATH_TRACK 102
-#define METHOD_ERROR 0xfffe
+#define METHOD_ERROR 0xfffe
/* RELOAD Destinationtype */
@@ -383,8 +383,8 @@ typedef struct _reload_conv_info_t {
#define DESTINATIONTYPE_COMPRESSED 3
/* RELOAD forwarding option type */
-#define OPTIONTYPE_RESERVED 0
-#define OPTIONTYPE_EXTENSIVE_ROUTING_MODE 2
+#define OPTIONTYPE_RESERVED 0
+#define OPTIONTYPE_EXTENSIVE_ROUTING_MODE 2
/* RELOAD CandTypes */
#define CANDTYPE_RESERVED 0
@@ -399,140 +399,140 @@ typedef struct _reload_conv_info_t {
#define IPADDRESSPORTTYPE_IPV6 2
/* OverlayLink types */
-#define OVERLAYLINKTYPE_RESERVED 0
-#define OVERLAYLINKTYPE_DTLS_UDP_SR 1
-#define OVERLAYLINKTYPE_DTLS_UDP_SR_NO_ICE 3
-#define OVERLAYLINKTYPE_TLS_TCP_FH_NO_ICE 4
-#define OVERLAYLINKTYPE_EXP_LINK 5
-
-#define ERRORCODE_INVALID 0
-#define ERRORCODE_UNUSED 1
-#define ERRORCODE_FORBIDDEN 2
-#define ERRORCODE_NOTFOUND 3
-#define ERRORCODE_REQUESTTIMEOUT 4
-#define ERRORCODE_GENERATIONCOUNTERTOOLOW 5
-#define ERRORCODE_INCOMPATIBLEWITHOVERLAY 6
-#define ERRORCODE_UNSUPPORTEDFORWARDINGOPTION 7
-#define ERRORCODE_DATATOOLARGE 8
-#define ERRORCODE_DATATOOOLD 9
-#define ERRORCODE_TTLEXCEEDED 10
-#define ERRORCODE_MESSAGETOOLARGE 11
-#define ERRORCODE_UNKNOWNKIND 12
-#define ERRORCODE_UNKNOWNEXTENSION 13
-#define ERRORCODE_RESPONSETOOLARGE 14
-#define ERRORCODE_CONFIGTOOOLD 15
-#define ERRORCODE_CONFIGTOONEW 16
-#define ERRORCODE_INPROGRESS 17
-#define ERRORCODE_EXP_A 18
-#define ERRORCODE_EXP_B 19
-#define ERRORCODE_UNDERLAY_DESTINATION_UNREACHABLE 101
-#define ERRORCODE_UNDERLAY_TIME_EXCEEDED 102
-#define ERRORCODE_MESSAGE_EXPIRED 103
-#define ERRORCODE_MISROUTING 104
-#define ERRORCODE_LOOP_DETECTED 105
-#define ERRORCODE_TTL_HOPS_EXCEEDED 106
+#define OVERLAYLINKTYPE_RESERVED 0
+#define OVERLAYLINKTYPE_DTLS_UDP_SR 1
+#define OVERLAYLINKTYPE_DTLS_UDP_SR_NO_ICE 3
+#define OVERLAYLINKTYPE_TLS_TCP_FH_NO_ICE 4
+#define OVERLAYLINKTYPE_EXP_LINK 5
+
+#define ERRORCODE_INVALID 0
+#define ERRORCODE_UNUSED 1
+#define ERRORCODE_FORBIDDEN 2
+#define ERRORCODE_NOTFOUND 3
+#define ERRORCODE_REQUESTTIMEOUT 4
+#define ERRORCODE_GENERATIONCOUNTERTOOLOW 5
+#define ERRORCODE_INCOMPATIBLEWITHOVERLAY 6
+#define ERRORCODE_UNSUPPORTEDFORWARDINGOPTION 7
+#define ERRORCODE_DATATOOLARGE 8
+#define ERRORCODE_DATATOOOLD 9
+#define ERRORCODE_TTLEXCEEDED 10
+#define ERRORCODE_MESSAGETOOLARGE 11
+#define ERRORCODE_UNKNOWNKIND 12
+#define ERRORCODE_UNKNOWNEXTENSION 13
+#define ERRORCODE_RESPONSETOOLARGE 14
+#define ERRORCODE_CONFIGTOOOLD 15
+#define ERRORCODE_CONFIGTOONEW 16
+#define ERRORCODE_INPROGRESS 17
+#define ERRORCODE_EXP_A 18
+#define ERRORCODE_EXP_B 19
+#define ERRORCODE_UNDERLAY_DESTINATION_UNREACHABLE 101
+#define ERRORCODE_UNDERLAY_TIME_EXCEEDED 102
+#define ERRORCODE_MESSAGE_EXPIRED 103
+#define ERRORCODE_MISROUTING 104
+#define ERRORCODE_LOOP_DETECTED 105
+#define ERRORCODE_TTL_HOPS_EXCEEDED 106
/* Signer identity types */
-#define SIGNERIDENTITYTYPE_RESERVED 0
-#define SIGNERIDENTITYTYPE_CERTHASH 1
-#define SIGNERIDENTITYTYPE_CERTHASHNODEID 2
-#define SIGNERIDENTITYTYPE_NONE 3
+#define SIGNERIDENTITYTYPE_RESERVED 0
+#define SIGNERIDENTITYTYPE_CERTHASH 1
+#define SIGNERIDENTITYTYPE_CERTHASHNODEID 2
+#define SIGNERIDENTITYTYPE_NONE 3
/* Probe information type */
-#define PROBEINFORMATIONTYPE_RESERVED 0
-#define PROBEINFORMATIONTYPE_RESPONSIBLESET 1
-#define PROBEINFORMATIONTYPE_NUMRESOURCES 2
-#define PROBEINFORMATIONTYPE_UPTIME 3
-#define PROBEINFORMATIONTYPE_EXP_PROBE 4
+#define PROBEINFORMATIONTYPE_RESERVED 0
+#define PROBEINFORMATIONTYPE_RESPONSIBLESET 1
+#define PROBEINFORMATIONTYPE_NUMRESOURCES 2
+#define PROBEINFORMATIONTYPE_UPTIME 3
+#define PROBEINFORMATIONTYPE_EXP_PROBE 4
/* Data Kind ID */
-#define DATAKINDID_INVALID 0
-#define DATAKINDID_SIP_REGISTRATION 1
-#define DATAKINDID_TURNSERVICE 2
-#define DATAKINDID_CERTIFICATE_BY_NODE 3
-#define DATAKINDID_RESERVED_ROUTING_TABLE_SIZE 4
-#define DATAKINDID_RESERVED_SOFTWARE_VERSION 5
-#define DATAKINDID_RESERVED_MACHINE_UPTIME 6
-#define DATAKINDID_RESERVED_APP_UPTIME 7
-#define DATAKINDID_RESERVED_MEMORY_FOOTPRINT 8
-#define DATAKINDID_RESERVED_DATASIZE_STORED 9
-#define DATAKINDID_RESERVED_INSTANCES_STORED 10
-#define DATAKINDID_RESERVED_MESSAGES_SENT_RCVD 11
-#define DATAKINDID_RESERVED_EWMA_BYTES_SENT 12
-#define DATAKINDID_RESERVED_EWMA_BYTES_RCVD 13
-#define DATAKINDID_RESERVED_LAST_CONTACT 14
-#define DATAKINDID_RESERVED_RTT 15
-#define DATAKINDID_CERTIFICATE_BY_USER 16
-#define DATAKINDID_REDIR 104
+#define DATAKINDID_INVALID 0
+#define DATAKINDID_SIP_REGISTRATION 1
+#define DATAKINDID_TURNSERVICE 2
+#define DATAKINDID_CERTIFICATE_BY_NODE 3
+#define DATAKINDID_RESERVED_ROUTING_TABLE_SIZE 4
+#define DATAKINDID_RESERVED_SOFTWARE_VERSION 5
+#define DATAKINDID_RESERVED_MACHINE_UPTIME 6
+#define DATAKINDID_RESERVED_APP_UPTIME 7
+#define DATAKINDID_RESERVED_MEMORY_FOOTPRINT 8
+#define DATAKINDID_RESERVED_DATASIZE_STORED 9
+#define DATAKINDID_RESERVED_INSTANCES_STORED 10
+#define DATAKINDID_RESERVED_MESSAGES_SENT_RCVD 11
+#define DATAKINDID_RESERVED_EWMA_BYTES_SENT 12
+#define DATAKINDID_RESERVED_EWMA_BYTES_RCVD 13
+#define DATAKINDID_RESERVED_LAST_CONTACT 14
+#define DATAKINDID_RESERVED_RTT 15
+#define DATAKINDID_CERTIFICATE_BY_USER 16
+#define DATAKINDID_REDIR 104
/* Data model */
-#define DATAMODEL_SINGLE 1
-#define DATAMODEL_ARRAY 2
-#define DATAMODEL_DICTIONARY 3
+#define DATAMODEL_SINGLE 1
+#define DATAMODEL_ARRAY 2
+#define DATAMODEL_DICTIONARY 3
/* Message Extension Type */
-#define MESSAGEEXTENSIONTYPE_RESERVED 0
-#define MESSAGEEXTENSIONTYPE_EXP_EXT 1
-#define MESSAGEEXTENSIONTYPE_SELF_TUNING_DATA 2 /* is 1 */
-#define MESSAGEEXTENSIONTYPE_DIAGNOSTIC_PING 3 /* is 1 */
+#define MESSAGEEXTENSIONTYPE_RESERVED 0
+#define MESSAGEEXTENSIONTYPE_EXP_EXT 1
+#define MESSAGEEXTENSIONTYPE_SELF_TUNING_DATA 2 /* is 1 */
+#define MESSAGEEXTENSIONTYPE_DIAGNOSTIC_PING 3 /* is 1 */
/* Config Update Type */
-#define CONFIGUPDATETYPE_RESERVED 0
-#define CONFIGUPDATETYPE_CONFIG 1
-#define CONFIGUPDATETYPE_KIND 2
+#define CONFIGUPDATETYPE_RESERVED 0
+#define CONFIGUPDATETYPE_CONFIG 1
+#define CONFIGUPDATETYPE_KIND 2
/* Chord Update Type */
-#define CHORDUPDATETYPE_RESERVED 0
-#define CHORDUPDATETYPE_PEER_READY 1
-#define CHORDUPDATETYPE_NEIGHBORS 2
-#define CHORDUPDATETYPE_FULL 3
+#define CHORDUPDATETYPE_RESERVED 0
+#define CHORDUPDATETYPE_PEER_READY 1
+#define CHORDUPDATETYPE_NEIGHBORS 2
+#define CHORDUPDATETYPE_FULL 3
/* Chord Leave Type */
-#define CHORDLEAVETYPE_RESERVED 0
-#define CHORDLEAVETYPE_FROM_SUCC 1
-#define CHORDLEAVETYPE_FROM_PRED 2
+#define CHORDLEAVETYPE_RESERVED 0
+#define CHORDLEAVETYPE_FROM_SUCC 1
+#define CHORDLEAVETYPE_FROM_PRED 2
/* Chord Leave Type */
-#define SIPREGISTRATIONTYPE_URI 1
-#define SIPREGISTRATIONTYPE_ROUTE 2
+#define SIPREGISTRATIONTYPE_URI 1
+#define SIPREGISTRATIONTYPE_ROUTE 2
/* Diagnostic Kind Id Type */
-#define DIAGNOSTICKINDID_RESERVED 0x0000
-#define DIAGNOSTICKINDID_STATUS_INFO 0x0001
-#define DIAGNOSTICKINDID_ROUTING_TABLE_SIZE 0x0002
-#define DIAGNOSTICKINDID_PROCESS_POWER 0x0003
-#define DIAGNOSTICKINDID_BANDWIDTH 0x0004
-#define DIAGNOSTICKINDID_SOFTWARE_VERSION 0x0005
-#define DIAGNOSTICKINDID_MACHINE_UPTIME 0x0006
-#define DIAGNOSTICKINDID_APP_UPTIME 0x0007
-#define DIAGNOSTICKINDID_MEMORY_FOOTPRINT 0x0008
-#define DIAGNOSTICKINDID_DATASIZE_STORED 0x0009
-#define DIAGNOSTICKINDID_INSTANCES_STORED 0x000A
-#define DIAGNOSTICKINDID_MESSAGES_SENT_RCVD 0x000B
-#define DIAGNOSTICKINDID_EWMA_BYTES_SENT 0x000C
-#define DIAGNOSTICKINDID_EWMA_BYTES_RCVD 0x000D
-#define DIAGNOSTICKINDID_UNDERLAY_HOP 0x000E
-#define DIAGNOSTICKINDID_BATTERY_STATUS 0x000F
+#define DIAGNOSTICKINDID_RESERVED 0x0000
+#define DIAGNOSTICKINDID_STATUS_INFO 0x0001
+#define DIAGNOSTICKINDID_ROUTING_TABLE_SIZE 0x0002
+#define DIAGNOSTICKINDID_PROCESS_POWER 0x0003
+#define DIAGNOSTICKINDID_BANDWIDTH 0x0004
+#define DIAGNOSTICKINDID_SOFTWARE_VERSION 0x0005
+#define DIAGNOSTICKINDID_MACHINE_UPTIME 0x0006
+#define DIAGNOSTICKINDID_APP_UPTIME 0x0007
+#define DIAGNOSTICKINDID_MEMORY_FOOTPRINT 0x0008
+#define DIAGNOSTICKINDID_DATASIZE_STORED 0x0009
+#define DIAGNOSTICKINDID_INSTANCES_STORED 0x000A
+#define DIAGNOSTICKINDID_MESSAGES_SENT_RCVD 0x000B
+#define DIAGNOSTICKINDID_EWMA_BYTES_SENT 0x000C
+#define DIAGNOSTICKINDID_EWMA_BYTES_RCVD 0x000D
+#define DIAGNOSTICKINDID_UNDERLAY_HOP 0x000E
+#define DIAGNOSTICKINDID_BATTERY_STATUS 0x000F
/* route modes */
-#define ROUTEMODE_RESERVED 0
-#define ROUTEMODE_DDR 1
-#define ROUTEMODE_RPR 2
+#define ROUTEMODE_RESERVED 0
+#define ROUTEMODE_DDR 1
+#define ROUTEMODE_RPR 2
/* Application IDs */
-#define APPLICATIONID_INVALID 0
-#define APPLICATIONID_SIP_5060 5060
-#define APPLICATIONID_SIP_5061 5061
-#define APPLICATIONID_RESERVED 0xFFFF
+#define APPLICATIONID_INVALID 0
+#define APPLICATIONID_SIP_5060 5060
+#define APPLICATIONID_SIP_5061 5061
+#define APPLICATIONID_RESERVED 0xFFFF
#define TOPOLOGY_PLUGIN_CHORD_RELOAD "CHORD-RELOAD"
/* reload user configuration variables */
-static gboolean reload_defragment = TRUE;
-static guint reload_nodeid_length = 16;
-static const char *reload_topology_plugin= TOPOLOGY_PLUGIN_CHORD_RELOAD;
+static gboolean reload_defragment = TRUE;
+static guint reload_nodeid_length = 16;
+static const char *reload_topology_plugin = TOPOLOGY_PLUGIN_CHORD_RELOAD;
/* Initialize the subtree pointers */
@@ -659,7 +659,7 @@ static const fragment_items reload_frag_items = {
"RELOAD fragments"
};
-static const gint * reload_dmflag_items[] = {
+static const gint *reload_dmflag_items[] = {
&hf_reload_dmflag_status_info,
&hf_reload_dmflag_routing_table_size,
&hf_reload_dmflag_process_power,
@@ -687,28 +687,28 @@ typedef struct _Kind {
} kind_t;
static kind_t predefined_kinds[] = {
- {"INVALID", DATAKINDID_INVALID, -1},
- {"SIP-REGISTRATION",DATAKINDID_SIP_REGISTRATION,DATAMODEL_DICTIONARY},
- {"TURN-SERVICE",DATAKINDID_TURNSERVICE,DATAMODEL_SINGLE},
- {"CERTIFICATE_BY_NODE",DATAKINDID_CERTIFICATE_BY_NODE,DATAMODEL_ARRAY},
- {"RESERVED_ROUTING_TABLE_SIZE",DATAKINDID_RESERVED_ROUTING_TABLE_SIZE,-1},
- {"RESERVED_SOFTWARE_VERSION",DATAKINDID_RESERVED_SOFTWARE_VERSION,-1},
- {"RESERVED_MACHINE_UPTIME",DATAKINDID_RESERVED_MACHINE_UPTIME,-1},
- {"DATAKINDID_RESERVED_APP_UPTIME",DATAKINDID_RESERVED_APP_UPTIME,-1},
- {"RESERVED_MEMORY_FOOTPRINT",DATAKINDID_RESERVED_MEMORY_FOOTPRINT,-1},
- {"RESERVED_DATASIZE_STORED",DATAKINDID_RESERVED_DATASIZE_STORED,-1},
- {"RESERVED_INSTANCES_STORED",DATAKINDID_RESERVED_INSTANCES_STORED,-1},
- {"RESERVED_MESSAGES_SENT_RCVD",DATAKINDID_RESERVED_MESSAGES_SENT_RCVD,-1},
- {"RESERVED_EWMA_BYTES_SENT",DATAKINDID_RESERVED_EWMA_BYTES_SENT,-1},
- {"RESERVED_EWMA_BYTES_RCVD",DATAKINDID_RESERVED_EWMA_BYTES_RCVD,-1},
- {"RESERVED_LAST_CONTACT",DATAKINDID_RESERVED_LAST_CONTACT,-1},
- {"RESERVED_RTT",DATAKINDID_RESERVED_RTT,-1},
- {"CERTIFICATE_BY_USER",DATAKINDID_CERTIFICATE_BY_USER,DATAMODEL_ARRAY},
- {"REDIR",DATAKINDID_REDIR,DATAMODEL_DICTIONARY},
+ {"INVALID" ,DATAKINDID_INVALID, -1},
+ {"SIP-REGISTRATION" ,DATAKINDID_SIP_REGISTRATION, DATAMODEL_DICTIONARY},
+ {"TURN-SERVICE" ,DATAKINDID_TURNSERVICE, DATAMODEL_SINGLE},
+ {"CERTIFICATE_BY_NODE" ,DATAKINDID_CERTIFICATE_BY_NODE, DATAMODEL_ARRAY},
+ {"RESERVED_ROUTING_TABLE_SIZE" ,DATAKINDID_RESERVED_ROUTING_TABLE_SIZE, -1},
+ {"RESERVED_SOFTWARE_VERSION" ,DATAKINDID_RESERVED_SOFTWARE_VERSION, -1},
+ {"RESERVED_MACHINE_UPTIME" ,DATAKINDID_RESERVED_MACHINE_UPTIME, -1},
+ {"DATAKINDID_RESERVED_APP_UPTIME" ,DATAKINDID_RESERVED_APP_UPTIME, -1},
+ {"RESERVED_MEMORY_FOOTPRINT" ,DATAKINDID_RESERVED_MEMORY_FOOTPRINT, -1},
+ {"RESERVED_DATASIZE_STORED" ,DATAKINDID_RESERVED_DATASIZE_STORED, -1},
+ {"RESERVED_INSTANCES_STORED" ,DATAKINDID_RESERVED_INSTANCES_STORED, -1},
+ {"RESERVED_MESSAGES_SENT_RCVD" ,DATAKINDID_RESERVED_MESSAGES_SENT_RCVD, -1},
+ {"RESERVED_EWMA_BYTES_SENT" ,DATAKINDID_RESERVED_EWMA_BYTES_SENT, -1},
+ {"RESERVED_EWMA_BYTES_RCVD" ,DATAKINDID_RESERVED_EWMA_BYTES_RCVD, -1},
+ {"RESERVED_LAST_CONTACT" ,DATAKINDID_RESERVED_LAST_CONTACT, -1},
+ {"RESERVED_RTT" ,DATAKINDID_RESERVED_RTT, -1},
+ {"CERTIFICATE_BY_USER" ,DATAKINDID_CERTIFICATE_BY_USER, DATAMODEL_ARRAY},
+ {"REDIR" ,DATAKINDID_REDIR, DATAMODEL_DICTIONARY},
};
-static kind_t * kindidlist_uats=NULL;
+static kind_t * kindidlist_uats = NULL;
static guint nreloadkinds = 0;
@@ -919,10 +919,10 @@ static const value_string errorcodes [] = {
};
static const value_string signeridentitytypes[] = {
- {SIGNERIDENTITYTYPE_RESERVED, "reserved"},
- {SIGNERIDENTITYTYPE_CERTHASH, "cert_hash"},
- {SIGNERIDENTITYTYPE_CERTHASHNODEID, "cert_hash_node_id"},
- {SIGNERIDENTITYTYPE_NONE, "none"},
+ {SIGNERIDENTITYTYPE_RESERVED, "reserved"},
+ {SIGNERIDENTITYTYPE_CERTHASH, "cert_hash"},
+ {SIGNERIDENTITYTYPE_CERTHASHNODEID, "cert_hash_node_id"},
+ {SIGNERIDENTITYTYPE_NONE, "none"},
{0x00, NULL}
};
@@ -931,7 +931,7 @@ static const value_string probeinformationtypes[] = {
{PROBEINFORMATIONTYPE_RESPONSIBLESET, "responsible_set"},
{PROBEINFORMATIONTYPE_NUMRESOURCES, "num_resources"},
{PROBEINFORMATIONTYPE_UPTIME, "uptime"},
- {PROBEINFORMATIONTYPE_EXP_PROBE, "exp-probe"},
+ {PROBEINFORMATIONTYPE_EXP_PROBE, "exp-probe"},
{0x00, NULL}
};
@@ -945,9 +945,9 @@ static const value_string datamodels[] = {
static const value_string messageextensiontypes[] = {
{MESSAGEEXTENSIONTYPE_RESERVED, "reserved"},
- {MESSAGEEXTENSIONTYPE_SELF_TUNING_DATA, "exp-ext"},
+ {MESSAGEEXTENSIONTYPE_EXP_EXT, "exp-ext"},
{MESSAGEEXTENSIONTYPE_SELF_TUNING_DATA, "sip_tuning_data"},
- {MESSAGEEXTENSIONTYPE_SELF_TUNING_DATA, "Diagnostic_Ping"},
+ {MESSAGEEXTENSIONTYPE_DIAGNOSTIC_PING, "Diagnostic_Ping"},
{0x00, NULL}
};
@@ -968,15 +968,15 @@ static const value_string chordupdatetypes[] = {
};
static const value_string chordleavetypes[] = {
- {CHORDLEAVETYPE_RESERVED, "reserved"},
- {CHORDLEAVETYPE_FROM_SUCC, "from_succ"},
- {CHORDLEAVETYPE_FROM_PRED, "from_pred"},
+ {CHORDLEAVETYPE_RESERVED, "reserved"},
+ {CHORDLEAVETYPE_FROM_SUCC, "from_succ"},
+ {CHORDLEAVETYPE_FROM_PRED, "from_pred"},
{0x00, NULL}
};
static const value_string sipregistrationtypes[] = {
- {SIPREGISTRATIONTYPE_URI, "sip_registration_uri"},
- {SIPREGISTRATIONTYPE_ROUTE, "sip_registration_route"},
+ {SIPREGISTRATIONTYPE_URI, "sip_registration_uri"},
+ {SIPREGISTRATIONTYPE_ROUTE, "sip_registration_route"},
{0x00, NULL}
};
@@ -1001,18 +1001,18 @@ static const value_string diagnostickindids[] = {
};
static const value_string routemodes[] = {
- {ROUTEMODE_RESERVED, "reserved"},
- {ROUTEMODE_DDR, "DDR"},
- {ROUTEMODE_RPR, "RPR"},
+ {ROUTEMODE_RESERVED, "reserved"},
+ {ROUTEMODE_DDR, "DDR"},
+ {ROUTEMODE_RPR, "RPR"},
{0x00, NULL}
};
static const value_string applicationids[] = {
/* Application IDs */
- {APPLICATIONID_INVALID, "INVALID"},
- {APPLICATIONID_SIP_5060, "SIP"},
- {APPLICATIONID_SIP_5061, "SIP"},
- {APPLICATIONID_RESERVED, "Reserved"},
+ {APPLICATIONID_INVALID, "INVALID"},
+ {APPLICATIONID_SIP_5060, "SIP"},
+ {APPLICATIONID_SIP_5061, "SIP"},
+ {APPLICATIONID_RESERVED, "Reserved"},
{0x00, NULL}
};
@@ -1020,7 +1020,7 @@ static const value_string applicationids[] = {
/*
* defragmentation
*/
-static GHashTable *reload_fragment_table = NULL;
+static GHashTable *reload_fragment_table = NULL;
static GHashTable *reload_reassembled_table = NULL;
static void
@@ -1069,14 +1069,14 @@ dissect_opaque_string_or_data(tvbuff_t *tvb, packet_info *pinfo,proto_tree *tree
{
proto_tree *opaque_tree;
proto_item *ti_anchor;
- gint length_index = -1;
- gint32 length = -1;
- int hf = hf_reload_opaque;
- int hf_data = hf_reload_opaque_data;
- guint hf_data_encoding = ENC_NA;
+ gint length_index = -1;
+ gint32 length = -1;
+ int hf = hf_reload_opaque;
+ int hf_data = hf_reload_opaque_data;
+ guint hf_data_encoding = ENC_NA;
- if (anchor_index>=0) {
- hf=anchor_index;
+ if (anchor_index >= 0) {
+ hf = anchor_index;
}
if (is_string) {
@@ -1170,8 +1170,8 @@ static int dissect_resourceid(int anchor, tvbuff_t *tvb, packet_info *pinfo, pro
{
proto_item *ti_local;
proto_tree *local_tree;
- int hf = hf_reload_resourceid;
- guint8 local_length;
+ int hf = hf_reload_resourceid;
+ guint8 local_length;
if (anchor >= 0) {
hf = anchor;
@@ -1204,7 +1204,7 @@ static int dissect_resourceid(int anchor, tvbuff_t *tvb, packet_info *pinfo, pro
static int dissect_nodeid(int anchor, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 offset, guint16 length)
{
proto_item *ti_nodeid;
- int hf = hf_reload_nodeid;
+ int hf = hf_reload_nodeid;
if (anchor >= 0) {
hf = anchor;
@@ -1219,15 +1219,15 @@ static int dissect_nodeid(int anchor, tvbuff_t *tvb, packet_info *pinfo, proto_t
ti_nodeid = proto_tree_add_item(tree, hf, tvb, offset, reload_nodeid_length, ENC_NA);
{
- gboolean allZeros=TRUE;
- gboolean allOnes=TRUE;
+ gboolean allZeros = TRUE;
+ gboolean allOnes = TRUE;
guint i;
for (i=0; i<reload_nodeid_length; i++) {
guint8 byte = tvb_get_guint8(tvb,offset+i);
- if (byte!=0) {
+ if (byte != 0) {
allZeros = FALSE;
- if (allOnes==FALSE) break;
+ if (allOnes == FALSE) break;
}
if (byte != 0xFF) {
allOnes = FALSE;
@@ -1251,11 +1251,11 @@ static int dissect_nodeid(int anchor, tvbuff_t *tvb, packet_info *pinfo, proto_t
static int
dissect_destination(int anchor, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 offset, guint16 length)
{
- guint8 destination_type;
+ guint8 destination_type;
proto_tree *destination_tree;
proto_item *ti_destination;
- guint8 destination_length=0;
- int hf = hf_reload_destination;
+ guint8 destination_length = 0;
+ int hf = hf_reload_destination;
if (anchor >= 0) {
hf = anchor;
@@ -1266,7 +1266,7 @@ dissect_destination(int anchor, tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
if (destination_type & 0x80) {
/* simple compressed case */
ti_destination = proto_tree_add_item(tree, hf, tvb, offset, 2, ENC_NA);
- if (hf==anchor) {
+ if (hf == anchor) {
proto_item_append_text(ti_destination, " (Destination)");
}
proto_item_append_text(ti_destination, ": uint16");
@@ -1279,7 +1279,7 @@ dissect_destination(int anchor, tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
destination_length = tvb_get_guint8(tvb,offset+1);
ti_destination = proto_tree_add_item(tree, hf, tvb, offset, 2+destination_length, ENC_NA);
- if (hf==anchor) {
+ if (hf == anchor) {
proto_item_append_text(ti_destination, " (Destination)");
}
destination_tree = proto_item_add_subtree(ti_destination, ett_reload_destination);
@@ -1317,7 +1317,8 @@ dissect_destination_list(tvbuff_t *tvb, packet_info *pinfo, proto_tree *list_tre
{
gint local_offset = 0;
gint local_increment;
- *numDestinations=0;
+
+ *numDestinations = 0;
while (local_offset +2 <= length) {
local_increment = dissect_destination(-1,tvb, pinfo, list_tree, offset + local_offset, length-local_offset);
if (local_increment <= 0) break;
@@ -1332,8 +1333,8 @@ dissect_probe_information(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
{
proto_item *ti_probe_information;
proto_tree *probe_information_tree;
- guint8 type;
- guint8 probe_length;
+ guint8 type;
+ guint8 probe_length;
type = tvb_get_guint8(tvb, offset);
probe_length = tvb_get_guint8(tvb, offset + 1);
@@ -1392,30 +1393,30 @@ dissect_ipaddressport(int anchor, tvbuff_t *tvb, proto_tree *tree, guint16 offse
{
proto_item *ti_ipaddressport;
proto_tree *ipaddressport_tree;
- guint8 ipaddressport_type;
- guint8 ipaddressport_length;
- int hf = hf_reload_ipaddressport;
+ guint8 ipaddressport_type;
+ guint8 ipaddressport_length;
+ int hf = hf_reload_ipaddressport;
- if (anchor>=0) {
+ if (anchor >= 0) {
hf = anchor;
}
ipaddressport_length = tvb_get_guint8(tvb, offset+1);
ti_ipaddressport = proto_tree_add_item(tree, hf, tvb, offset, ipaddressport_length+2, ENC_NA);
- if (hf==anchor) proto_item_append_text(ti_ipaddressport, " (IpAddressPort)");
+ if (hf == anchor) proto_item_append_text(ti_ipaddressport, " (IpAddressPort)");
ipaddressport_type = tvb_get_guint8(tvb, offset);
proto_item_append_text(ti_ipaddressport, ": %s", val_to_str(ipaddressport_type, ipaddressporttypes,"Unknown Type"));
- if (ipaddressport_type==IPADDRESSPORTTYPE_IPV4) {
+ if (ipaddressport_type == IPADDRESSPORTTYPE_IPV4) {
proto_item_append_text(ti_ipaddressport, " (%s:%d)", tvb_ip_to_str(tvb, offset+2),tvb_get_ntohs(tvb,offset+2+4));
}
- else if (ipaddressport_type==IPADDRESSPORTTYPE_IPV6) {
+ else if (ipaddressport_type == IPADDRESSPORTTYPE_IPV6) {
proto_item_append_text(ti_ipaddressport, " (%s:%d)", tvb_ip6_to_str(tvb, offset+2),tvb_get_ntohs(tvb,offset+2+16));
}
ipaddressport_tree = proto_item_add_subtree(ti_ipaddressport, ett_reload_ipaddressport);
proto_tree_add_item(ipaddressport_tree, hf_reload_ipaddressport_type, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset +=1;
+ offset += 1;
proto_tree_add_uint(ipaddressport_tree, hf_reload_length_uint8, tvb, offset, 1, ipaddressport_length);
- offset +=1;
+ offset += 1;
switch (ipaddressport_type) {
case IPADDRESSPORTTYPE_IPV4:
{
@@ -1454,10 +1455,10 @@ dissect_icecandidates(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
{
proto_item *ti_icecandidates;
proto_tree *icecandidates_tree;
- guint16 icecandidates_offset = 0;
- guint16 icecandidates_length;
- guint16 local_offset = 0;
- int nCandidates = 0;
+ guint16 icecandidates_offset = 0;
+ guint16 icecandidates_length;
+ guint16 local_offset = 0;
+ int nCandidates = 0;
icecandidates_length = tvb_get_ntohs(tvb, offset);
/* Precalculate the length of the icecandidate list */
@@ -1613,11 +1614,11 @@ dissect_attachreqans(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint1
{
proto_item *ti_attachreqans;
proto_tree *attachreqans_tree;
- guint8 ufrag_length;
- guint8 password_length;
- guint8 role_length;
- guint16 icecandidates_length;
- guint16 local_offset = 0;
+ guint8 ufrag_length;
+ guint8 password_length;
+ guint8 role_length;
+ guint16 icecandidates_length;
+ guint16 local_offset = 0;
/* variable length structures: must 1st compute the length ... */
ufrag_length = tvb_get_guint8(tvb,offset+local_offset);
@@ -1675,19 +1676,19 @@ dissect_sipregistration(tvbuff_t *tvb, packet_info *pinfo,proto_tree *tree, guin
{
proto_item *ti_local, *ti_sipregistrationdata;
proto_tree *local_tree, *sipregistrationdata_tree;
- int local_offset = 0;
- guint16 length_field;
- guint8 type;
+ int local_offset = 0;
+ guint16 length_field;
+ guint8 type;
ti_local = proto_tree_add_item(tree, hf_reload_sipregistration, tvb, offset, length, ENC_NA);
local_tree = proto_item_add_subtree(ti_local, ett_reload_sipregistration);
type = tvb_get_guint8(tvb, offset + local_offset);
proto_tree_add_item(local_tree, hf_reload_sipregistration_type, tvb,offset+local_offset,1, ENC_BIG_ENDIAN);
- local_offset +=1;
+ local_offset += 1;
length_field = tvb_get_ntohs(tvb, offset+local_offset);
proto_tree_add_item(local_tree, hf_reload_length_uint16, tvb,offset+local_offset,2, ENC_BIG_ENDIAN);
- local_offset +=2;
+ local_offset += 2;
if (length_field>0) {
ti_sipregistrationdata = proto_tree_add_item(local_tree, hf_reload_sipregistration_data, tvb, offset, length_field, ENC_NA);
sipregistrationdata_tree = proto_item_add_subtree(ti_sipregistrationdata, ett_reload_sipregistration_data);
@@ -1699,17 +1700,17 @@ dissect_sipregistration(tvbuff_t *tvb, packet_info *pinfo,proto_tree *tree, guin
case SIPREGISTRATIONTYPE_ROUTE:
{
- guint16 route_offset = 0;
- guint16 destinations_length;
- int numDestinations=0;
- proto_item * ti_destination_list;
+ guint16 route_offset = 0;
+ guint16 destinations_length;
+ int numDestinations = 0;
+ proto_item *ti_destination_list;
proto_tree *destination_list_tree;
route_offset += dissect_opaque_string(tvb,pinfo, sipregistrationdata_tree, hf_reload_sipregistration_data_contact_prefs, offset+local_offset, 2, length_field);
destinations_length = (guint16) get_opaque_length(tvb, offset+local_offset+route_offset, 2);
ti_destination_list = proto_tree_add_item(sipregistrationdata_tree, hf_reload_sipregistration_data_destination_list, tvb,offset+local_offset+route_offset, length_field-route_offset, ENC_NA);
destination_list_tree = proto_item_add_subtree(ti_destination_list, ett_reload_sipregistration_destination_list);
proto_tree_add_item(destination_list_tree, hf_reload_length_uint16, tvb,offset+local_offset+route_offset, 2, ENC_BIG_ENDIAN);
- route_offset+=2;
+ route_offset += 2;
if (destinations_length>0) {
dissect_destination_list(tvb, pinfo, destination_list_tree, offset+local_offset+route_offset,destinations_length, &numDestinations);
}
@@ -1728,13 +1729,13 @@ dissect_turnserver(tvbuff_t *tvb, proto_tree *tree, guint16 offset, guint16 leng
{
proto_item *ti_local;
proto_tree *local_tree;
- int local_offset = 0;
+ int local_offset = 0;
ti_local = proto_tree_add_item(tree, hf_reload_turnserver, tvb, offset, length, ENC_NA);
local_tree = proto_item_add_subtree(ti_local, ett_reload_turnserver);
proto_tree_add_item(local_tree, hf_reload_turnserver_iteration, tvb,offset,1, ENC_BIG_ENDIAN);
- local_offset +=1;
+ local_offset += 1;
local_offset += dissect_ipaddressport(hf_reload_turnserver_server_address,tvb, local_tree, offset+local_offset);
return local_offset;
@@ -1744,7 +1745,7 @@ static int dissect_redirserviceproviderdata(tvbuff_t *tvb, packet_info *pinfo, p
{
proto_item *ti_local;
proto_tree *local_tree;
- int local_offset = 0;
+ int local_offset = 0;
ti_local = proto_tree_add_item(tree, hf_reload_redirserviceproviderdata, tvb, offset, length, ENC_NA);
local_tree = proto_item_add_subtree(ti_local, ett_reload_redirserviceproviderdata);
@@ -1762,8 +1763,8 @@ static int dissect_redirserviceprovider(tvbuff_t *tvb, packet_info *pinfo, proto
{
proto_item *ti_local;
proto_tree *local_tree;
- int local_offset = 0;
- guint16 length_field;
+ int local_offset = 0;
+ guint16 length_field;
length_field = tvb_get_ntohs(tvb, offset);
@@ -1777,7 +1778,7 @@ static int dissect_redirserviceprovider(tvbuff_t *tvb, packet_info *pinfo, proto
local_tree = proto_item_add_subtree(ti_local, ett_reload_redirserviceprovider);
proto_tree_add_item(local_tree, hf_reload_length_uint16, tvb, offset,2, ENC_BIG_ENDIAN);
- local_offset+=2;
+ local_offset += 2;
local_offset += dissect_redirserviceproviderdata(tvb, pinfo, local_tree, offset+local_offset, length_field);
@@ -1787,9 +1788,10 @@ static int dissect_redirserviceprovider(tvbuff_t *tvb, packet_info *pinfo, proto
static int dissect_datavalue(int anchor, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 offset, guint16 length, gboolean meta, kind_t *kind) {
proto_item *ti_datavalue;
proto_tree *datavalue_tree;
+
if (meta != TRUE) {
int value_length = get_opaque_length(tvb,offset+1,4);
- int hf = hf_reload_datavalue;
+ int hf = hf_reload_datavalue;
if (anchor >= 0) {
hf = anchor;
@@ -1898,7 +1900,7 @@ static int dissect_datavalue(int anchor, tvbuff_t *tvb, packet_info *pinfo, prot
}
static int getDataValueLength(tvbuff_t *tvb, guint16 offset, gboolean meta) {
- if (meta!=TRUE) {
+ if (meta != TRUE) {
int value_length = get_opaque_length(tvb,offset+1,4);
return (1+4+value_length);
}
@@ -1912,10 +1914,10 @@ static int getDataValueLength(tvbuff_t *tvb, guint16 offset, gboolean meta) {
static int dissect_arrayentry(int anchor, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 offset, guint16 length, gboolean meta, kind_t *kind) {
proto_item *ti_arrayentry, *ti_index;
proto_tree *arrayentry_tree;
- int data_length = getDataValueLength(tvb, offset+4, meta);
- int hf = hf_reload_arrayentry;
+ int data_length = getDataValueLength(tvb, offset+4, meta);
+ int hf = hf_reload_arrayentry;
- if (anchor>=0) {
+ if (anchor >= 0) {
hf = anchor;
}
@@ -1933,7 +1935,7 @@ static int dissect_arrayentry(int anchor, tvbuff_t *tvb, packet_info *pinfo, pro
}
dissect_datavalue(hf_reload_arrayentry_value,tvb, pinfo, arrayentry_tree, offset+4, length-4, meta, kind);
- if (hf==anchor) {
+ if (hf == anchor) {
proto_item_append_text(ti_arrayentry, " (ArrayEntry)");
}
@@ -1943,11 +1945,11 @@ static int dissect_arrayentry(int anchor, tvbuff_t *tvb, packet_info *pinfo, pro
static int dissect_dictionaryentry(int anchor, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 offset, guint16 length, gboolean meta, kind_t *kind) {
proto_item *ti_dictionaryentry;
proto_tree *dictionaryentry_tree;
- int local_offset = 0;
- guint16 key_length=0;
- int hf = hf_reload_dictionaryentry;
+ int local_offset = 0;
+ guint16 key_length = 0;
+ int hf = hf_reload_dictionaryentry;
- if (anchor>=0) {
+ if (anchor >= 0) {
hf = anchor;
}
@@ -1978,7 +1980,7 @@ static int dissect_dictionaryentry(int anchor, tvbuff_t *tvb, packet_info *pinfo
dictionaryentry_tree = proto_item_add_subtree(ti_dictionaryentry,ett_reload_dictionaryentry);
- if (hf==anchor) {
+ if (hf == anchor) {
proto_item_append_text(ti_dictionaryentry, " (DictionaryEntry)");
}
@@ -1992,7 +1994,7 @@ static int dissect_dictionaryentry(int anchor, tvbuff_t *tvb, packet_info *pinfo
ti_key = proto_tree_add_item(dictionaryentry_tree, hf_reload_dictionarykey, tvb, offset, 2+key_length, ENC_NA);
key_tree = proto_item_add_subtree(ti_key,ett_reload_dictionaryentry_key);
proto_tree_add_item(key_tree, hf_reload_length_uint16, tvb, offset, 2, ENC_BIG_ENDIAN);
- local_offset+=2;
+ local_offset += 2;
local_offset+= dissect_nodeid(-1, tvb, pinfo, key_tree, offset+2, key_length);
}
break;
@@ -2015,11 +2017,11 @@ static int dissect_dictionaryentry(int anchor, tvbuff_t *tvb, packet_info *pinfo
static int
dissect_signature(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 offset)
{
- int local_offset = 0;
+ int local_offset = 0;
proto_item *ti_signature;
proto_tree *signature_tree;
- guint16 signeridentityvalue_length;
- guint16 signaturevalue_length;
+ guint16 signeridentityvalue_length;
+ guint16 signaturevalue_length;
signeridentityvalue_length = tvb_get_ntohs(tvb, offset +2+1);
@@ -2104,7 +2106,7 @@ dissect_signature(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 o
}
local_offset += signeridentityvalue_length;
}
- local_offset +=dissect_opaque(tvb, pinfo, signature_tree, hf_reload_signature_value, offset + local_offset, 2, -1);
+ local_offset += dissect_opaque(tvb, pinfo, signature_tree, hf_reload_signature_value, offset + local_offset, 2, -1);
return local_offset;
@@ -2116,8 +2118,8 @@ dissect_storeddata(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16
{
proto_item *ti_storeddata;
proto_tree *storeddata_tree;
- guint32 storeddata_length;
- guint32 local_offset = 0;
+ guint32 storeddata_length;
+ guint32 local_offset = 0;
int hf = hf_reload_storeddata;
@@ -2157,7 +2159,7 @@ dissect_storeddata(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16
}
local_offset += 8;
proto_tree_add_item(storeddata_tree, hf_reload_storeddata_lifetime, tvb, offset + local_offset, 4, ENC_BIG_ENDIAN);
- local_offset +=4;
+ local_offset += 4;
if ((NULL != kind) && (kind->id != DATAKINDID_INVALID)) {
switch(kind->data_model) {
case DATAMODEL_SINGLE:
@@ -2186,14 +2188,14 @@ static int
dissect_kindid(int anchor, tvbuff_t *tvb, proto_tree *tree, guint16 offset, kind_t **kind)
{
proto_item *ti_kindid;
- guint32 kindid = 0;
- int hf = hf_reload_kindid;
+ guint32 kindid = 0;
+ int hf = hf_reload_kindid;
- if (anchor>=0) {
+ if (anchor >= 0) {
hf = anchor;
}
- *kind=NULL;
+ *kind = NULL;
kindid = tvb_get_ntohl(tvb, offset);
*kind = getKindFromId(kindid);
@@ -2210,11 +2212,11 @@ dissect_kinddata(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 of
{
proto_item *ti_kinddata;
proto_item *kinddata_tree;
- guint32 values_length;
- guint32 local_offset = 0;
- kind_t *kind;
- int hf = hf_reload_kinddata;
- int nValues = 0;
+ guint32 values_length;
+ guint32 local_offset = 0;
+ kind_t *kind;
+ int hf = hf_reload_kinddata;
+ int nValues = 0;
if (meta) {
hf = hf_reload_statkindresponse;
@@ -2267,11 +2269,11 @@ dissect_kinddata(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 of
static int dissect_nodeid_list(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 offset, guint16 length, int hf, int length_size)
{
- guint16 list_length;
- guint16 local_offset = 0;
- guint16 list_offset = 0;
- guint16 list_increment = 0;
- int nNodeIds=0;
+ guint16 list_length;
+ guint16 local_offset = 0;
+ guint16 list_offset = 0;
+ guint16 list_increment = 0;
+ int nNodeIds = 0;
proto_item *ti_local;
proto_tree *local_tree;
@@ -2305,10 +2307,10 @@ dissect_storekindresponse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
{
proto_item *ti_local;
proto_tree *local_tree;
- guint16 local_offset = 0;
- guint16 local_length = 0;
- guint16 replicas_length;
- kind_t *kind;
+ guint16 local_offset = 0;
+ guint16 local_length = 0;
+ guint16 replicas_length;
+ kind_t *kind;
replicas_length = tvb_get_ntohs(tvb, offset+4+8);
local_length = 4+8+2+replicas_length;
@@ -2334,10 +2336,10 @@ dissect_storeans(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 of
{
proto_item *ti_local, *ti_kind_responses;
proto_tree *local_tree, *kind_responses_tree;
- guint16 local_offset = 0;
- guint16 kind_responses_length;
- guint16 kind_responses_offset=0;
- int nKindResponses=0;
+ guint16 local_offset = 0;
+ guint16 kind_responses_length;
+ guint16 kind_responses_offset = 0;
+ int nKindResponses = 0;
ti_local = proto_tree_add_item(tree, hf_reload_storeans, tvb, offset, length, ENC_NA);
local_tree = proto_item_add_subtree(ti_local, ett_reload_storeans);
@@ -2347,10 +2349,10 @@ dissect_storeans(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 of
proto_item_append_text(ti_kind_responses, " (StoreKindResponse<%d>)", kind_responses_length);
proto_tree_add_item(kind_responses_tree, hf_reload_length_uint16, tvb, offset, 2, ENC_BIG_ENDIAN);
- local_offset +=2;
+ local_offset += 2;
while (kind_responses_offset < kind_responses_length) {
int local_increment = dissect_storekindresponse(tvb, pinfo, kind_responses_tree, offset+local_offset+kind_responses_offset, kind_responses_length-kind_responses_offset);
- if (local_increment<=0) break;
+ if (local_increment <= 0) break;
kind_responses_offset += local_increment;
nKindResponses++;
}
@@ -2363,10 +2365,10 @@ dissect_storeans(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 of
static int
dissect_storereq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 offset, guint16 length)
{
- proto_item * ti_storereq;
- proto_tree * storereq_tree;
- guint32 local_offset = 0;
- guint32 kind_data_length;
+ proto_item *ti_storereq;
+ proto_tree *storereq_tree;
+ guint32 local_offset = 0;
+ guint32 kind_data_length;
local_offset += get_opaque_length(tvb, offset, 1) + 1; /* resource id length */
@@ -2404,11 +2406,11 @@ dissect_storereq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 of
{
- guint32 kind_data_offset = 0;
- guint32 kind_data_increment;
+ guint32 kind_data_offset = 0;
+ guint32 kind_data_increment;
proto_item *ti_kind_data;
proto_tree *kind_data_tree;
- int nKindDatas=0;
+ int nKindDatas = 0;
ti_kind_data = proto_tree_add_item(storereq_tree, hf_reload_store_kind_data, tvb, offset+local_offset,4+kind_data_length, ENC_NA);
proto_item_append_text(ti_kind_data, " (StoreKindData<%d>)", kind_data_length);
@@ -2434,8 +2436,8 @@ dissect_storereq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 of
static int dissect_arrayrange(tvbuff_t *tvb, proto_tree *tree, guint16 offset) {
proto_item *ti;
- gint32 first;
- gint32 last;
+ gint32 first;
+ gint32 last;
ti = proto_tree_add_item(tree, hf_reload_arrayrange, tvb, offset, (16), ENC_NA);
first = tvb_get_ntohl(tvb, offset);
@@ -2454,10 +2456,10 @@ static int dissect_arrayrange(tvbuff_t *tvb, proto_tree *tree, guint16 offset) {
static int
dissect_storeddataspecifier(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 offset, guint16 length)
{
- guint16 length_field, local_offset=0;
+ guint16 length_field, local_offset = 0;
proto_item *ti_storeddataspecifier;
proto_tree *storeddataspecifier_tree;
- kind_t *kind=NULL;
+ kind_t *kind = NULL;
length_field = tvb_get_ntohs(tvb, offset+4+8);
if ((length_field + 4 + 8 + 2) > length) {
@@ -2481,10 +2483,11 @@ dissect_storeddataspecifier(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
{
proto_item *ti_indices;
proto_tree *indices_tree;
- guint16 indices_offset =0;
- guint16 indices_length = tvb_get_ntohs(tvb, offset+local_offset);
- int nIndices=0;
- ti_indices = proto_tree_add_item(storeddataspecifier_tree, hf_reload_storeddataspecifier_indices, tvb, offset+local_offset, 2+indices_length, ENC_NA);
+ guint16 indices_offset = 0;
+ guint16 indices_length = tvb_get_ntohs(tvb, offset+local_offset);
+ int nIndices = 0;
+ ti_indices = proto_tree_add_item(storeddataspecifier_tree, hf_reload_storeddataspecifier_indices,
+ tvb, offset+local_offset, 2+indices_length, ENC_NA);
proto_item_append_text(ti_indices, " (ArrayRange<%d>)", indices_length);
indices_tree = proto_item_add_subtree(ti_indices, ett_reload_storeddataspecifier_indices);
proto_tree_add_item(indices_tree, hf_reload_length_uint16, tvb, offset+local_offset, 2, ENC_BIG_ENDIAN);
@@ -2502,16 +2505,16 @@ dissect_storeddataspecifier(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
{
proto_item *ti_keys;
proto_tree *keys_tree;
- guint16 keys_offset =0;
- guint16 keys_length = tvb_get_ntohs(tvb, offset+local_offset);
- int nKeys=0;
+ guint16 keys_offset = 0;
+ guint16 keys_length = tvb_get_ntohs(tvb, offset+local_offset);
+ int nKeys = 0;
ti_keys = proto_tree_add_item(tree, hf_reload_storeddataspecifier_keys, tvb, offset+local_offset, 2+keys_length, ENC_NA);
keys_tree = proto_item_add_subtree(ti_keys, ett_reload_storeddataspecifier_keys);
local_offset += 2;
while (keys_offset < keys_length) {
guint32 local_increment;
local_increment = dissect_opaque(tvb, pinfo, keys_tree, hf_reload_dictionarykey, offset, 2, keys_length-keys_offset);
- if (local_increment==0) break;
+ if (local_increment == 0) break;
keys_offset += local_increment;
nKeys++;
}
@@ -2536,13 +2539,13 @@ dissect_fetchreq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 of
proto_item *ti_specifiers;
proto_tree *fetchreq_tree;
proto_tree *specifiers_tree;
- guint16 resourceid_length;
- guint16 specifiers_length;
- guint16 specifiers_offset = 0;
- int nSpecifiers = 0;
- guint16 local_offset = 0;
- guint16 local_length =0;
- int hf = hf_reload_fetchreq;
+ guint16 resourceid_length;
+ guint16 specifiers_length;
+ guint16 specifiers_offset = 0;
+ int nSpecifiers = 0;
+ guint16 local_offset = 0;
+ guint16 local_length = 0;
+ int hf = hf_reload_fetchreq;
if (meta == TRUE) {
hf = hf_reload_statreq;
@@ -2590,8 +2593,8 @@ dissect_fetchans(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 of
{
proto_item *ti_fetchans;
proto_tree *fetchans_tree;
- guint32 kind_responses_length;
- guint32 kind_responses_offset = 0;
+ guint32 kind_responses_length;
+ guint32 kind_responses_offset = 0;
kind_responses_length = tvb_get_ntohl(tvb, offset);
if (4 + kind_responses_length > length) {
@@ -2622,9 +2625,9 @@ dissect_statans(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 off
{
proto_item *ti_statans;
proto_tree *statans_tree;
- guint32 kind_responses_length;
- guint32 kind_responses_offset = 0;
- int nResponses=0;
+ guint32 kind_responses_length;
+ guint32 kind_responses_offset = 0;
+ int nResponses = 0;
kind_responses_length = tvb_get_ntohl(tvb, offset);
@@ -2661,8 +2664,8 @@ dissect_chordupdate(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16
{
proto_item *ti_chordupdate;
proto_tree *chordupdate_tree;
- guint16 local_offset = 0;
- guint8 type;
+ guint16 local_offset = 0;
+ guint8 type;
ti_chordupdate = proto_tree_add_item(tree, hf_reload_chordupdate, tvb, offset, length, ENC_NA);
chordupdate_tree = proto_item_add_subtree(ti_chordupdate, ett_reload_chordupdate);
@@ -2710,8 +2713,8 @@ dissect_chordleavedata(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guin
{
proto_item *ti_local;
proto_tree *local_tree;
- guint16 local_offset = 0;
- guint8 type;
+ guint16 local_offset = 0;
+ guint8 type;
ti_local = proto_tree_add_item(tree, hf_reload_chordleave, tvb, offset, length, ENC_NA);
local_tree = proto_item_add_subtree(ti_local, ett_reload_chordleave);
@@ -2739,9 +2742,9 @@ static int dissect_kindid_list(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr
{
proto_item *ti_local;
proto_tree *local_tree;
- int kinds_length=0;
- int kinds_offset=0;
- int nKinds=0;
+ int kinds_length = 0;
+ int kinds_offset = 0;
+ int nKinds = 0;
kinds_length = get_opaque_length(tvb, offset, length_size);
@@ -2770,7 +2773,7 @@ static int dissect_kindid_list(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr
static int dissect_findreq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 offset, guint16 length) {
proto_item *ti_local;
proto_tree *local_tree;
- guint16 local_offset=0;
+ guint16 local_offset = 0;
ti_local = proto_tree_add_item(tree, hf_reload_findreq, tvb, offset, length, ENC_NA);
local_tree = proto_item_add_subtree(ti_local, ett_reload_findreq);
@@ -2784,7 +2787,7 @@ static int dissect_findreq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
static int dissect_findans(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 offset, guint16 length) {
proto_item *ti_local;
proto_tree *local_tree;
- guint16 results_length;
+ guint16 results_length;
ti_local = proto_tree_add_item(tree, hf_reload_findans, tvb, offset, length, ENC_NA);
local_tree = proto_item_add_subtree(ti_local, ett_reload_findans);
@@ -2797,12 +2800,12 @@ static int dissect_findans(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
{
guint16 results_offset = 0;
- int nResults=0;
+ int nResults = 0;
while (results_offset < results_length) {
proto_item *ti_findkinddata;
proto_tree *findkinddata_tree;
- guint16 findkinddata_length;
- kind_t *kind;
+ guint16 findkinddata_length;
+ kind_t *kind;
findkinddata_length = 4/*kind id */ + 1 + get_opaque_length(tvb,offset + 2 + results_offset + 4, 1)/* resourceId */;
if (results_offset + findkinddata_length > results_length) {
ti_findkinddata = proto_tree_add_item(local_tree, hf_reload_findkinddata, tvb, offset + results_offset, results_length - results_offset, ENC_NA);
@@ -2814,7 +2817,7 @@ static int dissect_findans(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
findkinddata_tree = proto_item_add_subtree(ti_findkinddata, ett_reload_findkinddata);
dissect_kindid(hf_reload_kinddata_kind,tvb, findkinddata_tree, offset+2+results_offset,&kind);
dissect_resourceid(hf_reload_findkinddata_closest, tvb, pinfo, findkinddata_tree, offset+2+results_offset+4, results_length - 4 - results_offset);
- if (findkinddata_length<=0) break;
+ if (findkinddata_length <= 0) break;
results_offset += findkinddata_length;
nResults++;
}
@@ -2843,7 +2846,7 @@ static int dissect_extensiveroutingmodeoption(tvbuff_t *tvb, packet_info *pinfo,
{
proto_item *ti_local;
proto_tree *local_tree;
- guint16 local_offset=0;
+ guint16 local_offset = 0;
ti_local = proto_tree_add_item(tree, hf_reload_extensiveroutingmodeoption, tvb, offset, length, ENC_NA);
local_tree = proto_item_add_subtree(ti_local, ett_reload_extensiveroutingmodeoption);
@@ -2857,8 +2860,8 @@ static int dissect_extensiveroutingmodeoption(tvbuff_t *tvb, packet_info *pinfo,
{
proto_item *ti_destination;
proto_tree *destination_tree;
- guint16 destination_length;
- int nDestinations=0;
+ guint16 destination_length;
+ int nDestinations = 0;
destination_length = tvb_get_guint8(tvb, offset+local_offset);
if (destination_length+1+local_offset>length) {
expert_add_info_format(pinfo, ti_local, PI_PROTOCOL, PI_ERROR, "Truncated ExtensiveRoutingModeOption");
@@ -2868,7 +2871,7 @@ static int dissect_extensiveroutingmodeoption(tvbuff_t *tvb, packet_info *pinfo,
proto_item_append_text(ti_destination, " (Destination<%d>)", destination_length);
destination_tree = proto_item_add_subtree(ti_destination, ett_reload_extensiveroutingmode_destination);
proto_tree_add_item(destination_tree, hf_reload_length_uint8, tvb,offset+local_offset, 1, ENC_BIG_ENDIAN);
- local_offset +=1;
+ local_offset += 1;
dissect_destination_list(tvb, pinfo, destination_tree, offset+local_offset, destination_length, &nDestinations);
proto_item_append_text(ti_destination, ": %d elements", nDestinations);
local_offset += destination_length;
@@ -2879,10 +2882,10 @@ static int dissect_extensiveroutingmodeoption(tvbuff_t *tvb, packet_info *pinfo,
static int dissect_forwardingoption(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 offset, guint16 length)
{
proto_item *ti_option;
- guint16 local_offset = 0;
- guint8 option_type = tvb_get_guint8(tvb,offset);
- guint8 option_flags = tvb_get_guint8(tvb, offset+ 1);
- guint16 option_length = tvb_get_ntohs(tvb, offset+ 2);
+ guint16 local_offset = 0;
+ guint8 option_type = tvb_get_guint8(tvb,offset);
+ guint8 option_flags = tvb_get_guint8(tvb, offset+ 1);
+ guint16 option_length = tvb_get_ntohs(tvb, offset+ 2);
proto_tree *option_tree;
ti_option = proto_tree_add_item(tree, hf_reload_forwarding_option, tvb, offset+local_offset, option_length + 4, ENC_NA);
@@ -2926,14 +2929,14 @@ static int dissect_forwardingoption(tvbuff_t *tvb, packet_info *pinfo, proto_tre
static int dissect_dmflag(tvbuff_t *tvb, proto_tree *tree, guint16 offset) {
proto_item *ti_local;
proto_tree *local_tree;
- guint i;
- guint32 bit_offset=offset<<3;
+ guint i;
+ guint32 bit_offset = offset<<3;
ti_local = proto_tree_add_item(tree, hf_reload_dmflags, tvb, offset, 64, ENC_BIG_ENDIAN);
local_tree = proto_item_add_subtree(ti_local, ett_reload_dmflags);
for (i=0; i<(sizeof(reload_dmflag_items)/sizeof(gint *)); i++) {
- if (reload_dmflag_items[i]!=NULL) {
+ if (reload_dmflag_items[i] != NULL) {
proto_tree_add_bits_item(local_tree, *(reload_dmflag_items[i]), tvb, bit_offset+63-i, 1, ENC_BIG_ENDIAN);
}
}
@@ -2944,15 +2947,15 @@ static int dissect_diagnosticextension(tvbuff_t *tvb, packet_info *pinfo, proto_
{
proto_item *ti_local;
proto_tree *local_tree;
- guint16 local_offset=0;
- guint16 local_length = 0;
+ guint16 local_offset = 0;
+ guint16 local_length = 0;
local_length = 2 + 4 + get_opaque_length(tvb, offset+2,4);
ti_local = proto_tree_add_item(tree, hf_reload_diagnosticextension, tvb, offset, local_length, ENC_NA);
local_tree = proto_item_add_subtree(ti_local, ett_reload_diagnosticextension);
proto_tree_add_item(local_tree, hf_reload_diagnosticextension_type, tvb, offset, 2, ENC_BIG_ENDIAN);
- local_offset +=2;
+ local_offset += 2;
local_offset += dissect_opaque(tvb, pinfo, local_tree, hf_reload_diagnosticextension_contents, offset + local_offset, 4, length-2);
return local_offset;
@@ -2961,9 +2964,9 @@ static int dissect_diagnosticextension(tvbuff_t *tvb, packet_info *pinfo, proto_
static int dissect_diagnosticrequest(int anchor, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 offset, guint16 length) {
proto_item *ti_local;
proto_tree *local_tree;
- guint16 local_offset=0;
- guint32 local_length=0;
- int hf = hf_reload_diagnosticrequest;
+ guint16 local_offset = 0;
+ guint32 local_length = 0;
+ int hf = hf_reload_diagnosticrequest;
if (anchor >= 0) {
hf = anchor;
@@ -2973,14 +2976,15 @@ static int dissect_diagnosticrequest(int anchor, tvbuff_t *tvb, packet_info *pin
local_tree = proto_item_add_subtree(ti_local, ett_reload_diagnosticrequest);
proto_tree_add_item(local_tree, hf_reload_diagnostic_expiration, tvb, offset, 8, ENC_TIME_NTP|ENC_BIG_ENDIAN);
- local_offset+=8;
- proto_tree_add_item(local_tree, hf_reload_diagnosticrequest_timestampinitiated, tvb, offset+local_offset, 8, ENC_TIME_NTP|ENC_BIG_ENDIAN);
- local_offset+=8;
+ local_offset += 8;
+ proto_tree_add_item(local_tree, hf_reload_diagnosticrequest_timestampinitiated, tvb,
+ offset+local_offset, 8, ENC_TIME_NTP|ENC_BIG_ENDIAN);
+ local_offset += 8;
local_length = tvb_get_ntohl(tvb, offset+local_offset);
proto_tree_add_item(local_tree, hf_reload_length_uint32, tvb, offset+local_offset, 4, ENC_BIG_ENDIAN);
- local_offset+=4;
+ local_offset += 4;
- local_offset+=dissect_dmflag(tvb, local_tree, offset+local_offset);
+ local_offset += dissect_dmflag(tvb, local_tree, offset+local_offset);
if (local_offset+local_length > length) {
expert_add_info_format(pinfo, ti_local, PI_PROTOCOL, PI_ERROR, "Truncated DiagnosticRequest");
local_length = length-local_offset;
@@ -2988,9 +2992,9 @@ static int dissect_diagnosticrequest(int anchor, tvbuff_t *tvb, packet_info *pin
if (local_length>0) {
proto_item *ti_extensions;
proto_tree *extensions_tree;
- guint16 extensions_offset=0;
- guint32 extensions_length=0;
- int nExtensions = 0;
+ guint16 extensions_offset = 0;
+ guint32 extensions_length = 0;
+ int nExtensions = 0;
ti_extensions = proto_tree_add_item(local_tree, hf_reload_diagnosticrequest_extensions, tvb, offset+local_offset, local_length, ENC_NA);
extensions_tree = proto_item_add_subtree(ti_extensions, ett_reload_diagnosticrequest_extensions);
@@ -3003,13 +3007,13 @@ static int dissect_diagnosticrequest(int anchor, tvbuff_t *tvb, packet_info *pin
proto_tree_add_item(extensions_tree, hf_reload_length_uint32, tvb, offset+local_offset, 4, ENC_BIG_ENDIAN);
while (extensions_offset<extensions_length) {
int local_increment = dissect_diagnosticextension(tvb, pinfo, extensions_tree, offset+4+local_offset+extensions_offset, extensions_length-extensions_offset);
- if (local_increment<=0) break;
+ if (local_increment <= 0) break;
extensions_offset += local_increment;
nExtensions++;
}
proto_item_append_text(ti_extensions, " : %d elements", nExtensions);
}
- local_offset+=local_length;
+ local_offset += local_length;
return local_offset;
}
@@ -3017,7 +3021,7 @@ static int dissect_pathtrackreq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
{
proto_item *ti_local;
proto_tree *local_tree;
- guint16 local_offset=0;
+ guint16 local_offset = 0;
ti_local = proto_tree_add_item(tree, hf_reload_pathtrackreq, tvb, offset, length, ENC_NA);
local_tree = proto_item_add_subtree(ti_local, ett_reload_pathtrackreq);
@@ -3031,18 +3035,18 @@ static int dissect_diagnosticinfo(tvbuff_t *tvb, proto_tree *tree, guint16 offse
{
proto_item *ti_local;
proto_tree *local_tree;
- guint16 local_offset=0;
- guint16 local_length=0;
- guint16 kind;
+ guint16 local_offset = 0;
+ guint16 local_length = 0;
+ guint16 kind;
local_length = 2 + tvb_get_ntohs(tvb, offset+2);
ti_local = proto_tree_add_item(tree, hf_reload_diagnosticinfo, tvb, offset, local_length+4, ENC_NA);
local_tree = proto_item_add_subtree(ti_local, ett_reload_diagnosticinfo);
proto_tree_add_item(local_tree, hf_reload_diagnosticinfo_kind, tvb, offset+local_offset, 2, ENC_BIG_ENDIAN);
- local_offset +=2;
+ local_offset += 2;
proto_tree_add_item(local_tree, hf_reload_length_uint16, tvb, offset+local_offset, 2, ENC_BIG_ENDIAN);
- local_offset+=2;
+ local_offset += 2;
kind = tvb_get_ntohs(tvb, offset);
switch(kind) {
@@ -3086,24 +3090,28 @@ static int dissect_diagnosticinfo(tvbuff_t *tvb, proto_tree *tree, guint16 offse
{
proto_item *ti_instances;
proto_tree *instances_tree;
- guint16 instances_offset = 0;
- int nElements=0;
+ guint16 instances_offset = 0;
+ int nElements = 0;
- ti_instances = proto_tree_add_item(local_tree, hf_reload_diagnosticinfo_instances_stored, tvb, offset+local_offset, length, ENC_NA);
+ ti_instances = proto_tree_add_item(local_tree, hf_reload_diagnosticinfo_instances_stored,\
+ tvb, offset+local_offset, length, ENC_NA);
instances_tree = proto_item_add_subtree(ti_instances, ett_reload_diagnosticinfo_instances_stored);
proto_item_append_text(ti_instances, "[%d]", length);
while (instances_offset < length) {
proto_item *ti_instances_per_kindid;
proto_tree *instances_per_kindid_tree;
- kind_t *kind;
- guint64 instances;
- ti_instances_per_kindid = proto_tree_add_item(instances_tree, hf_reload_diagnosticinfo_instancesstored_info, tvb, offset+local_offset+instances_offset, 12, ENC_NA);
- instances_per_kindid_tree = proto_item_add_subtree(ti_instances_per_kindid, ett_reload_diagnosticinfo_instancesstored_info);
+ kind_t *kind;
+ guint64 instances;
+ ti_instances_per_kindid = proto_tree_add_item(instances_tree, hf_reload_diagnosticinfo_instancesstored_info,
+ tvb, offset+local_offset+instances_offset, 12, ENC_NA);
+ instances_per_kindid_tree = proto_item_add_subtree(ti_instances_per_kindid,
+ ett_reload_diagnosticinfo_instancesstored_info);
dissect_kindid(hf_reload_kinddata_kind, tvb, instances_per_kindid_tree, offset+local_offset+instances_offset, &kind);
- proto_tree_add_item(instances_per_kindid_tree, hf_reload_diagnosticinfo_instancesstored_instances, tvb, offset+local_offset+instances_offset+4, 8, ENC_BIG_ENDIAN);
+ proto_tree_add_item(instances_per_kindid_tree, hf_reload_diagnosticinfo_instancesstored_instances,
+ tvb, offset+local_offset+instances_offset+4, 8, ENC_BIG_ENDIAN);
instances = tvb_get_ntoh64(tvb, offset+local_offset+instances_offset+4);
proto_item_append_text(ti_instances_per_kindid, ": %s/%" G_GINT64_MODIFIER "d", kind->name,instances);
- instances_offset +=12;
+ instances_offset += 12;
nElements++;
}
if (nElements>0) {
@@ -3117,17 +3125,18 @@ static int dissect_diagnosticinfo(tvbuff_t *tvb, proto_tree *tree, guint16 offse
{
proto_item *ti_messages;
proto_tree *messages_tree;
- guint16 messages_offset = 0;
- int nElements=0;
+ guint16 messages_offset = 0;
+ int nElements = 0;
- ti_messages = proto_tree_add_item(local_tree, hf_reload_diagnosticinfo_messages_sent_rcvd, tvb, offset+local_offset, length, ENC_NA);
+ ti_messages = proto_tree_add_item(local_tree, hf_reload_diagnosticinfo_messages_sent_rcvd,
+ tvb, offset+local_offset, length, ENC_NA);
messages_tree = proto_item_add_subtree(ti_messages, ett_reload_diagnosticinfo_messages_sent_rcvd);
proto_item_append_text(ti_messages, "[%d]", length);
while (messages_offset < length) {
proto_item *ti_sent_rcvd;
proto_tree *sent_rcvd_tree;
- guint16 message_code;
+ guint16 message_code;
ti_sent_rcvd = proto_tree_add_item(messages_tree, hf_reload_diagnosticinfo_messages_sent_rcvd_info, tvb, offset+local_offset+messages_offset, 20, ENC_NA);
@@ -3148,9 +3157,11 @@ static int dissect_diagnosticinfo(tvbuff_t *tvb, proto_tree *tree, guint16 offse
val_to_str(MSGCODE_TO_METHOD(message_code), methods_short, "Unknown"),
val_to_str(MSGCODE_TO_CLASS(message_code), classes_short, "Unknown"));
}
- proto_tree_add_item(sent_rcvd_tree, hf_reload_diagnosticinfo_messages_sent, tvb, offset+local_offset+messages_offset+2, 8, ENC_BIG_ENDIAN);
- proto_tree_add_item(sent_rcvd_tree, hf_reload_diagnosticinfo_messages_rcvd, tvb, offset+local_offset+messages_offset+2+8, 8, ENC_BIG_ENDIAN);
- messages_offset +=18;
+ proto_tree_add_item(sent_rcvd_tree, hf_reload_diagnosticinfo_messages_sent,
+ tvb, offset+local_offset+messages_offset+2, 8, ENC_BIG_ENDIAN);
+ proto_tree_add_item(sent_rcvd_tree, hf_reload_diagnosticinfo_messages_rcvd,
+ tvb, offset+local_offset+messages_offset+2+8, 8, ENC_BIG_ENDIAN);
+ messages_offset += 18;
nElements++;
}
if (nElements>0) {
@@ -3188,8 +3199,8 @@ static int dissect_diagnosticinfo(tvbuff_t *tvb, proto_tree *tree, guint16 offse
static int dissect_diagnosticresponse(int anchor, tvbuff_t *tvb, packet_info *pinfo,proto_tree *tree, guint16 offset, guint16 length) {
proto_item *ti_local;
proto_tree *local_tree;
- guint16 local_offset=0;
- int hf = hf_reload_diagnosticresponse;
+ guint16 local_offset = 0;
+ int hf = hf_reload_diagnosticresponse;
if (anchor >= 0) {
hf = anchor;
@@ -3199,18 +3210,19 @@ static int dissect_diagnosticresponse(int anchor, tvbuff_t *tvb, packet_info *pi
local_tree = proto_item_add_subtree(ti_local, ett_reload_diagnosticresponse);
proto_tree_add_item(local_tree, hf_reload_diagnostic_expiration, tvb, offset, 8, ENC_TIME_NTP|ENC_BIG_ENDIAN);
- local_offset+=8;
- proto_tree_add_item(local_tree, hf_reload_diagnosticresponse_timestampreceived, tvb, offset+local_offset, 8, ENC_TIME_NTP|ENC_BIG_ENDIAN);
- local_offset+=8;
+ local_offset += 8;
+ proto_tree_add_item(local_tree, hf_reload_diagnosticresponse_timestampreceived,
+ tvb, offset+local_offset, 8, ENC_TIME_NTP|ENC_BIG_ENDIAN);
+ local_offset += 8;
proto_tree_add_item(local_tree, hf_reload_diagnosticresponse_hopcounter, tvb, offset+local_offset, 1, ENC_BIG_ENDIAN);
{
proto_item *ti_diagnostics;
proto_tree *diagnostics_tree;
- guint16 diagnostics_offset=0;
- guint32 diagnostics_length=0;
- int nDiagnostics = 0;
+ guint16 diagnostics_offset = 0;
+ guint32 diagnostics_length = 0;
+ int nDiagnostics = 0;
diagnostics_length = tvb_get_ntohl(tvb, offset+local_offset);
if (diagnostics_length+local_offset+4>length) {
@@ -3224,7 +3236,7 @@ static int dissect_diagnosticresponse(int anchor, tvbuff_t *tvb, packet_info *pi
local_offset += 4;
while (diagnostics_offset<diagnostics_length) {
int local_increment = dissect_diagnosticinfo(tvb, diagnostics_tree, offset+local_offset+diagnostics_offset, diagnostics_length-diagnostics_offset);
- if (local_increment<=0) break;
+ if (local_increment <= 0) break;
diagnostics_offset += local_increment;
nDiagnostics++;
}
@@ -3239,7 +3251,7 @@ static int dissect_pathtrackans(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
{
proto_item *ti_local;
proto_tree *local_tree;
- guint16 local_offset=0;
+ guint16 local_offset = 0;
ti_local = proto_tree_add_item(tree, hf_reload_pathtrackans, tvb, offset, length, ENC_NA);
local_tree = proto_item_add_subtree(ti_local, ett_reload_pathtrackans);
@@ -3253,7 +3265,7 @@ static int dissect_joinreq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
{
proto_item *ti_local;
proto_tree *local_tree;
- guint16 local_offset=0;
+ guint16 local_offset = 0;
ti_local = proto_tree_add_item(tree, hf_reload_joinreq, tvb, offset, length, ENC_NA);
local_tree = proto_item_add_subtree(ti_local, ett_reload_joinreq);
@@ -3268,13 +3280,13 @@ static int dissect_joinans(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
{
proto_item *ti_local;
proto_tree *local_tree;
- guint16 local_offset=0;
+ guint16 local_offset = 0;
ti_local = proto_tree_add_item(tree, hf_reload_joinans, tvb, offset, length, ENC_NA);
local_tree = proto_item_add_subtree(ti_local, ett_reload_joinans);
- local_offset = dissect_opaque(tvb, pinfo, local_tree, hf_reload_overlay_specific, offset + local_offset, 2,
- length );
+ local_offset = dissect_opaque(tvb, pinfo, local_tree, hf_reload_overlay_specific,
+ offset + local_offset, 2, length );
return local_offset;
}
@@ -3282,27 +3294,30 @@ static int dissect_leavereq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
{
proto_item *ti_local;
proto_tree *local_tree;
- guint16 local_offset=0;
+ guint16 local_offset = 0;
ti_local = proto_tree_add_item(tree, hf_reload_leavereq, tvb, offset, length, ENC_NA);
local_tree = proto_item_add_subtree(ti_local, ett_reload_leavereq);
local_offset += dissect_nodeid(hf_reload_leavereq_leaving_peer_id, tvb, pinfo, local_tree, offset, length);
- if (0==strcmp(TOPOLOGY_PLUGIN_CHORD_RELOAD, reload_topology_plugin)) {
+ if (0 == strcmp(TOPOLOGY_PLUGIN_CHORD_RELOAD, reload_topology_plugin)) {
proto_item *ti_overlay_specific;
proto_tree *overlay_specific_tree;
- guint16 overlay_length;
- ti_overlay_specific = proto_tree_add_item(local_tree, hf_reload_overlay_specific, tvb, offset+local_offset, length - local_offset, ENC_NA);
+ guint16 overlay_length;
+
+ ti_overlay_specific = proto_tree_add_item(local_tree, hf_reload_overlay_specific,
+ tvb, offset+local_offset, length - local_offset, ENC_NA);
overlay_specific_tree = proto_item_add_subtree(ti_overlay_specific, ett_reload_overlay_specific);
proto_tree_add_item(overlay_specific_tree, hf_reload_length_uint16, tvb, offset+local_offset, 2, ENC_BIG_ENDIAN);
+
overlay_length = tvb_get_ntohs(tvb, offset+local_offset);
local_offset+= 2;
dissect_chordleavedata(tvb, pinfo, overlay_specific_tree, offset+local_offset, overlay_length);
local_offset += overlay_length;
}
else {
- local_offset += dissect_opaque(tvb, pinfo, local_tree, hf_reload_overlay_specific, offset + reload_nodeid_length, 2,
- length - local_offset);
+ local_offset += dissect_opaque(tvb, pinfo, local_tree, hf_reload_overlay_specific,
+ offset + reload_nodeid_length, 2, length - local_offset);
}
return local_offset;
@@ -3310,26 +3325,29 @@ static int dissect_leavereq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
static int dissect_probereq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 offset, guint16 length)
{
- proto_item *ti_local, *ti_requested_info;
+ proto_item *ti_local, *ti_requested_info;
proto_tree *local_tree, *requested_info_tree;
- guint8 info_list_length = 0;
+ guint8 info_list_length = 0;
- ti_local = proto_tree_add_item(tree, hf_reload_probereq, tvb, offset, length, ENC_NA);
- local_tree = proto_item_add_subtree(ti_local, ett_reload_probereq);
- ti_requested_info = proto_tree_add_item(local_tree, hf_reload_probereq_requested_info, tvb, offset, length, ENC_NA);
+ ti_local = proto_tree_add_item(tree, hf_reload_probereq, tvb, offset, length, ENC_NA);
+ local_tree = proto_item_add_subtree(ti_local, ett_reload_probereq);
+ ti_requested_info = proto_tree_add_item(local_tree, hf_reload_probereq_requested_info, tvb, offset, length, ENC_NA);
requested_info_tree = proto_item_add_subtree(ti_requested_info, ett_reload_probereq_requested_info);
- info_list_length = tvb_get_guint8(tvb, offset);
+ info_list_length = tvb_get_guint8(tvb, offset);
+
proto_item_append_text(ti_requested_info, " (ProbeInformationType<%d>)", info_list_length);
proto_tree_add_uint(requested_info_tree, hf_reload_length_uint8, tvb, offset, 1, info_list_length);
- if (info_list_length +1> length) {
+
+ if ((info_list_length+1) > length) {
expert_add_info_format(pinfo, ti_requested_info, PI_PROTOCOL, PI_ERROR, "Truncated requested_info");
info_list_length = length - 1;
}
{
int probe_offset = 0;
- int nInfos=0;
+ int nInfos = 0;
while (probe_offset < info_list_length) {
- proto_tree_add_item(requested_info_tree, hf_reload_probe_information_type, tvb, offset + 1 + probe_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(requested_info_tree, hf_reload_probe_information_type,
+ tvb, offset + 1 + probe_offset, 1, ENC_BIG_ENDIAN);
probe_offset += 1;
nInfos++;
}
@@ -3341,11 +3359,11 @@ static int dissect_probereq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
static int dissect_probeans(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 offset, guint16 length)
{
- proto_item *ti_local, *ti_infos;
+ proto_item *ti_local, *ti_infos;
proto_tree *local_tree, *infos_tree;
- guint16 info_list_length = 0;
+ guint16 info_list_length = 0;
- ti_local = proto_tree_add_item(tree, hf_reload_probeans, tvb, offset, length, ENC_NA);
+ ti_local = proto_tree_add_item(tree, hf_reload_probeans, tvb, offset, length, ENC_NA);
local_tree = proto_item_add_subtree(ti_local, ett_reload_probeans);
info_list_length = tvb_get_ntohs(tvb, offset);
@@ -3359,7 +3377,7 @@ static int dissect_probeans(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
{
int probe_offset = 0;
int probe_increment;
- int nInfos = 0;
+ int nInfos = 0;
while (probe_offset < info_list_length) {
probe_increment = dissect_probe_information(tvb, pinfo, infos_tree, offset + 2 + probe_offset, info_list_length - probe_offset);
if (probe_increment <= 0) {
@@ -3375,14 +3393,14 @@ static int dissect_probeans(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
extern gint dissect_reload_messagecontents(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 offset, guint16 length)
{
- guint32 message_body_length;
- guint32 extensions_length;
+ guint32 message_body_length;
+ guint32 extensions_length;
proto_item *ti_message_contents;
proto_tree *message_contents_tree;
- guint16 message_code;
+ guint16 message_code;
message_body_length = tvb_get_ntohl(tvb, offset + 2);
- extensions_length = tvb_get_ntohl(tvb, offset + 2 + 4 + message_body_length);
+ extensions_length = tvb_get_ntohl(tvb, offset + 2 + 4 + message_body_length);
if (2 + 4 + message_body_length + 4 + extensions_length > length) {
ti_message_contents = proto_tree_add_item(tree, hf_reload_message_contents, tvb, offset, length, ENC_NA);
@@ -3398,7 +3416,7 @@ extern gint dissect_reload_messagecontents(tvbuff_t *tvb, packet_info *pinfo, pr
if (message_code != RELOAD_ERROR) {
proto_item *ti_message_body;
proto_tree *message_body_tree;
- gchar *message_type_str = NULL;
+ const gchar *message_type_str = NULL;
/* message_code was already parsed */
{
@@ -3414,7 +3432,7 @@ extern gint dissect_reload_messagecontents(tvbuff_t *tvb, packet_info *pinfo, pr
ti_message_body = proto_tree_add_item(message_contents_tree, hf_reload_message_body, tvb, offset, 4 + message_body_length, ENC_NA);
message_body_tree = proto_item_add_subtree(ti_message_body, ett_reload_message_body);
proto_tree_add_uint(message_body_tree, hf_reload_length_uint32, tvb, offset, 4, message_body_length);
- offset +=4;
+ offset += 4;
if (message_body_length > 0) {
switch(MSGCODE_TO_METHOD(message_code)) {
@@ -3426,17 +3444,19 @@ extern gint dissect_reload_messagecontents(tvbuff_t *tvb, packet_info *pinfo, pr
proto_tree * routequeryreq_tree;
int destination_length;
message_type_str = "RouteQueryReq";
- ti_routequeryreq = proto_tree_add_item(message_body_tree, hf_reload_routequeryreq, tvb, offset, message_body_length, ENC_NA);
+ ti_routequeryreq = proto_tree_add_item(message_body_tree, hf_reload_routequeryreq,
+ tvb, offset, message_body_length, ENC_NA);
routequeryreq_tree = proto_item_add_subtree(ti_routequeryreq, ett_reload_routequeryreq);
proto_tree_add_item(routequeryreq_tree, hf_reload_sendupdate, tvb, offset, 1, ENC_BIG_ENDIAN);
- destination_length = dissect_destination(hf_reload_routequeryreq_destination,tvb, pinfo, routequeryreq_tree, offset + 1, message_body_length - 1 - 2);
+ destination_length = dissect_destination(hf_reload_routequeryreq_destination,
+ tvb, pinfo, routequeryreq_tree, offset + 1, message_body_length - 1 - 2);
dissect_opaque(tvb, pinfo, routequeryreq_tree, hf_reload_overlay_specific, offset + 1 + destination_length, 2, (message_body_length - 1 - destination_length));
}
}
else {
message_type_str = "ChordRouteQueryAns";
/* Answer is entirely Overlay-specific */
- if (0==strcmp(TOPOLOGY_PLUGIN_CHORD_RELOAD, reload_topology_plugin)) {
+ if (0 == strcmp(TOPOLOGY_PLUGIN_CHORD_RELOAD, reload_topology_plugin)) {
dissect_chordroutequeryans(tvb, pinfo, message_body_tree, offset, message_body_length);
}
}
@@ -3581,33 +3601,40 @@ extern gint dissect_reload_messagecontents(tvbuff_t *tvb, packet_info *pinfo, pr
{
proto_item *ti_kinds;
proto_tree *kinds_tree;
- guint32 kinds_length;
- guint32 kinds_offset = 0;
- int nKinds=0;
- ti_kinds = proto_tree_add_item(configupdate_tree, hf_reload_configupdatereq_kinds, tvb, offset+local_offset, configupdate_length, ENC_NA);
- kinds_tree = proto_item_add_subtree(ti_kinds, ett_reload_configupdatereq_kinds);
+ guint32 kinds_length;
+ guint32 kinds_offset = 0;
+ int nKinds = 0;
+
+ ti_kinds = proto_tree_add_item(configupdate_tree, hf_reload_configupdatereq_kinds,
+ tvb, offset+local_offset, configupdate_length, ENC_NA);
+ kinds_tree = proto_item_add_subtree(ti_kinds, ett_reload_configupdatereq_kinds);
kinds_length = get_opaque_length(tvb, offset+local_offset, 3);
proto_item_append_text(ti_kinds, " (KindDescription<%d>)", kinds_length);
- local_offset +=dissect_length(tvb, kinds_tree, offset+local_offset, 3);
+ local_offset += dissect_length(tvb, kinds_tree, offset+local_offset, 3);
while (kinds_offset < kinds_length) {
guint16 local_increment = tvb_get_ntohs(tvb,offset+local_offset+kinds_offset);
if (xml_handle == NULL) {
expert_add_info_format(pinfo, ti_configupdate, PI_PROTOCOL, PI_WARN, "Can not find xml dissector");
- dissect_opaque_string(tvb, pinfo, configupdate_tree, hf_reload_kinddescription, offset+local_offset+kinds_offset, 2, configupdate_length);
+ dissect_opaque_string(tvb, pinfo, configupdate_tree, hf_reload_kinddescription,
+ offset+local_offset+kinds_offset, 2, configupdate_length);
}
else {
proto_item *ti_kinddescription;
proto_tree *kinddescription_tree;
- ti_kinddescription = proto_tree_add_item(kinds_tree, hf_reload_kinddescription, tvb, offset+local_offset+kinds_offset, 2+local_increment, ENC_NA);
+ ti_kinddescription = proto_tree_add_item(kinds_tree, hf_reload_kinddescription,
+ tvb, offset+local_offset+kinds_offset, 2+local_increment, ENC_NA);
kinddescription_tree = proto_item_add_subtree(ti_kinddescription, ett_reload_kinddescription);
- proto_tree_add_item(kinddescription_tree, hf_reload_length_uint16, tvb, offset+local_offset+kinds_offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(kinddescription_tree, hf_reload_length_uint16,
+ tvb, offset+local_offset+kinds_offset, 2, ENC_BIG_ENDIAN);
call_dissector(xml_handle,
- tvb_new_subset(tvb, offset+local_offset+kinds_offset+2, local_increment, length-(offset+local_offset+kinds_offset+2)),
+ tvb_new_subset(tvb, offset+local_offset+kinds_offset+2,
+ local_increment,
+ length-(offset+local_offset+kinds_offset+2)),
pinfo, kinddescription_tree);
}
local_increment += 2;
- if (local_increment<=0) break;
- kinds_offset += local_increment;
+ if (local_increment <= 0) break;
+ kinds_offset += local_increment;
nKinds++;
}
proto_item_append_text(ti_kinds, ": %d elements", nKinds);
@@ -3702,7 +3729,7 @@ extern gint dissect_reload_messagecontents(tvbuff_t *tvb, packet_info *pinfo, pr
break;
case METHOD_UPDATE:
- if (0==strcmp(TOPOLOGY_PLUGIN_CHORD_RELOAD, reload_topology_plugin)) {
+ if (0 == strcmp(TOPOLOGY_PLUGIN_CHORD_RELOAD, reload_topology_plugin)) {
if (IS_REQUEST(message_code)) {
message_type_str = "ChordUpdate";
dissect_chordupdate(tvb, pinfo, message_body_tree, offset, message_body_length);
@@ -3746,15 +3773,17 @@ extern gint dissect_reload_messagecontents(tvbuff_t *tvb, packet_info *pinfo, pr
proto_tree *error_tree;
/* message_code was already parsed */
- proto_tree_add_uint_format_value(message_contents_tree, hf_reload_message_code, tvb, offset, 2, message_code, "Error");
+ proto_tree_add_uint_format_value(message_contents_tree, hf_reload_message_code,
+ tvb, offset, 2, message_code, "Error");
offset += 2;
/* Message body */
- ti_message_body = proto_tree_add_item(message_contents_tree, hf_reload_message_body, tvb, offset, 4 + message_body_length, ENC_NA);
+ ti_message_body = proto_tree_add_item(message_contents_tree, hf_reload_message_body,
+ tvb, offset, 4 + message_body_length, ENC_NA);
message_body_tree = proto_item_add_subtree(ti_message_body, ett_reload_message_body);
error_length = tvb_get_ntohs(tvb, offset);
proto_tree_add_uint(message_body_tree, hf_reload_length_uint32, tvb, offset, 4, message_body_length);
- offset +=4;
+ offset += 4;
error_code = tvb_get_ntohs(tvb, offset);
if (2 + 2 + error_length >length) {
@@ -3762,7 +3791,8 @@ extern gint dissect_reload_messagecontents(tvbuff_t *tvb, packet_info *pinfo, pr
return length;
}
- ti_error = proto_tree_add_item(message_body_tree, hf_reload_error_response, tvb, offset, 2 + 2 + error_length, ENC_NA);
+ ti_error = proto_tree_add_item(message_body_tree, hf_reload_error_response,
+ tvb, offset, 2 + 2 + error_length, ENC_NA);
error_tree = proto_item_add_subtree(ti_error, ett_reload_error_response);
proto_tree_add_item(error_tree, hf_reload_error_response_code, tvb, offset, 2, ENC_BIG_ENDIAN);
proto_item_append_text(ti_error, ": %s", val_to_str(error_code, errorcodes, "Unknown"));
@@ -3845,7 +3875,7 @@ extern gint dissect_reload_messagecontents(tvbuff_t *tvb, packet_info *pinfo, pr
guint32 extension_length;
proto_tree_add_item(extension_tree, hf_reload_length_uint32, tvb, offset+extension_offset+3, 4, ENC_BIG_ENDIAN);
extension_length = tvb_get_ntohl(tvb, offset+extension_offset+3);
- if ((extension_length > 0) && (MSGCODE_TO_METHOD(message_code)==METHOD_PING)) {
+ if ((extension_length > 0) && (MSGCODE_TO_METHOD(message_code) == METHOD_PING)) {
if (IS_REQUEST(message_code)) {
dissect_diagnosticrequest(-1, tvb, pinfo, extension_tree, offset+extension_offset+3+4, extension_length);
}
@@ -3873,32 +3903,32 @@ extern gint dissect_reload_messagecontents(tvbuff_t *tvb, packet_info *pinfo, pr
static int
dissect_reload_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti;
- proto_tree *reload_tree;
- guint32 relo_token;
- guint effective_length;
- guint msg_length, dgram_msg_length;
- guint16 offset;
- conversation_t *conversation;
- reload_conv_info_t *reload_info;
- reload_transaction_t * reload_trans;
- emem_tree_key_t transaction_id_key[2];
- guint32 transaction_id[2];
- guint16 options_length;
- guint16 via_list_length;
- guint16 destination_list_length;
- guint16 message_code;
- guint16 error_code = 0;
- guint32 forwarding_length;
- proto_tree *reload_forwarding_tree;
- const char *msg_class_str;
- const char *msg_method_str = NULL;
- gboolean fragmented = FALSE;
- gboolean last_fragment = FALSE;
- fragment_data *reload_fd_head = NULL;
- guint32 fragment = 0;
- gboolean save_fragmented = FALSE;
- gboolean update_col_info = TRUE;
+ proto_item *ti;
+ proto_tree *reload_tree;
+ guint32 relo_token;
+ guint effective_length;
+ guint msg_length, dgram_msg_length;
+ guint16 offset;
+ conversation_t *conversation;
+ reload_conv_info_t *reload_info;
+ reload_transaction_t *reload_trans;
+ emem_tree_key_t transaction_id_key[2];
+ guint32 transaction_id[2];
+ guint16 options_length;
+ guint16 via_list_length;
+ guint16 destination_list_length;
+ guint16 message_code;
+ guint16 error_code = 0;
+ guint32 forwarding_length;
+ proto_tree *reload_forwarding_tree;
+ const char *msg_class_str;
+ const char *msg_method_str = NULL;
+ gboolean fragmented = FALSE;
+ gboolean last_fragment = FALSE;
+ fragment_data *reload_fd_head = NULL;
+ guint32 fragment = 0;
+ gboolean save_fragmented = FALSE;
+ gboolean update_col_info = TRUE;
offset = 0;
effective_length = tvb_length(tvb);
@@ -3974,10 +4004,10 @@ dissect_reload_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(reload_forwarding_tree, hf_reload_overlay, tvb, 4, 4, ENC_BIG_ENDIAN);
{
proto_item *ti_tmp;
- guint16 tmp;
+ guint16 tmp;
tmp = tvb_get_ntohs(tvb,8);
ti_tmp = proto_tree_add_item(reload_forwarding_tree, hf_reload_configuration_sequence, tvb, 8, 2, ENC_BIG_ENDIAN);
- if (tmp==0) {
+ if (tmp == 0) {
proto_item_append_text(ti_tmp, "\n [sequence value not verified]");
}
}
@@ -3987,7 +4017,7 @@ dissect_reload_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_item *ti_fragment;
proto_tree *fragment_tree;
- guint32 bit_offset;
+ guint32 bit_offset;
fragment = tvb_get_ntohl(tvb,12);
@@ -4016,9 +4046,9 @@ dissect_reload_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_item *ti_tmp;
guint32 tmp;
- tmp =tvb_get_ntohl(tvb,28);
+ tmp = tvb_get_ntohl(tvb,28);
ti_tmp = proto_tree_add_item(reload_forwarding_tree, hf_reload_max_response_length, tvb, 28, 4, ENC_BIG_ENDIAN);
- if (0==tmp) {
+ if (0 == tmp) {
proto_item_append_text(ti_tmp, "\n [Response length not restricted]");
}
}
@@ -4037,7 +4067,7 @@ dissect_reload_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (via_list_length > 0) {
proto_item *ti_vialist;
proto_tree *vialist_tree;
- int numDestinations=0;
+ int numDestinations = 0;
ti_vialist = proto_tree_add_item(reload_forwarding_tree, hf_reload_via_list, tvb, offset, via_list_length, ENC_NA);
vialist_tree = proto_item_add_subtree(ti_vialist, ett_reload_via_list);
@@ -4055,11 +4085,13 @@ dissect_reload_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_item *ti_destination_list;
proto_tree *destination_list_tree;
int numDestinations;
- ti_destination_list = proto_tree_add_item(reload_forwarding_tree, hf_reload_destination_list, tvb, offset, destination_list_length, ENC_NA);
+ ti_destination_list = proto_tree_add_item(reload_forwarding_tree, hf_reload_destination_list,
+ tvb, offset, destination_list_length, ENC_NA);
destination_list_tree = proto_item_add_subtree(ti_destination_list, ett_reload_destination_list);
dissect_destination_list(tvb, pinfo, destination_list_tree, offset, destination_list_length, &numDestinations);
- proto_item_append_text(ti_destination_list, " (Destination<%d>): %d elements",destination_list_length,numDestinations);
+ proto_item_append_text(ti_destination_list, " (Destination<%d>): %d elements",
+ destination_list_length,numDestinations);
}
offset += destination_list_length;
@@ -4069,17 +4101,17 @@ dissect_reload_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
if (options_length > 0) {
- guint16 local_offset = 0;
+ guint16 local_offset = 0;
proto_item *ti_options;
proto_tree *options_tree;
- int nOptions=0;
+ int nOptions = 0;
ti_options = proto_tree_add_item(reload_forwarding_tree, hf_reload_forwarding_options, tvb, offset+local_offset, options_length, ENC_NA);
options_tree = proto_item_add_subtree(ti_options, ett_reload_forwarding_options);
while (local_offset < options_length) {
int local_increment;
local_increment = dissect_forwardingoption(tvb, pinfo, options_tree, offset+local_offset, options_length-local_offset);
- if (0>=local_increment) break;
+ if (0 >= local_increment) break;
local_offset += local_increment;
nOptions++;
}
@@ -4160,7 +4192,7 @@ dissect_reload_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
}
else {
- reload_trans=se_tree_lookup32_array(reload_info->transaction_pdus, transaction_id_key);
+ reload_trans = se_tree_lookup32_array(reload_info->transaction_pdus, transaction_id_key);
}
if (!reload_trans) {
@@ -4395,17 +4427,17 @@ proto_register_reload(void)
}
},
{ &hf_reload_fragment_fragmented,
- { "Fragmented (always set)", "reload.forwarding.fragment.fragmented", FT_BOOLEAN, 1, TFS(&tfs_set_notset), 0x0,
+ { "Fragmented (always set)", "reload.forwarding.fragment.fragmented", FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
NULL, HFILL
}
},
{ &hf_reload_fragment_last_fragment,
- { "Last Fragment", "reload.forwarding.fragment.last", FT_BOOLEAN, 1, TFS(&tfs_set_notset), 0x0,
+ { "Last Fragment", "reload.forwarding.fragment.last", FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
NULL, HFILL
}
},
{ &hf_reload_fragment_reserved,
- { "Reserved (always 0)", "reload.forwarding.fragment.reserved", FT_BOOLEAN, 1, NULL, 0x0,
+ { "Reserved (always 0)", "reload.forwarding.fragment.reserved", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
NULL, HFILL
}
},
@@ -4510,22 +4542,22 @@ proto_register_reload(void)
}
},
{ &hf_reload_forwarding_option_flag_ignore_state_keeping,
- { "IGNORE_STATE_KEEPING", "reload.forwarding.option.flag.ignore_state_keeping", FT_BOOLEAN, 8, TFS(&tfs_set_notset), 0x0,
+ { "IGNORE_STATE_KEEPING", "reload.forwarding.option.flag.ignore_state_keeping", FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
NULL, HFILL
}
},
{ &hf_reload_forwarding_option_flag_response_copy,
- { "RESPONSE_COPY", "reload.forwarding.option.flag.response_copy", FT_BOOLEAN, 8, TFS(&tfs_set_notset), 0x0,
+ { "RESPONSE_COPY", "reload.forwarding.option.flag.response_copy", FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
NULL, HFILL
}
},
{ &hf_reload_forwarding_option_flag_destination_critical,
- { "DESTINATION_CRITICAL", "reload.forwarding.option.flags.destination_critical", FT_BOOLEAN, 8, TFS(&tfs_set_notset), 0x0,
+ { "DESTINATION_CRITICAL", "reload.forwarding.option.flags.destination_critical", FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
NULL, HFILL
}
},
{ &hf_reload_forwarding_option_flag_forward_critical,
- { "FORWARD_CRITICAL", "reload.forwarding.option.flags.forward_critical", FT_BOOLEAN, 8, TFS(&tfs_set_notset), 0x0,
+ { "FORWARD_CRITICAL", "reload.forwarding.option.flags.forward_critical", FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
NULL, HFILL
}
},
@@ -4646,7 +4678,7 @@ proto_register_reload(void)
},
{ &hf_reload_sendupdate,
{ "send_update (Boolean)", "reload.sendupdate", FT_BOOLEAN,
- BASE_DEC, NULL, 0x0, NULL, HFILL
+ BASE_NONE, NULL, 0x0, NULL, HFILL
}
},
{ &hf_reload_message_contents,
@@ -4951,7 +4983,7 @@ proto_register_reload(void)
},
{ &hf_reload_datavalue_exists,
{ "exists (Boolean)", "reload.datavalue.exists", FT_BOOLEAN,
- BASE_DEC, NULL, 0x0, NULL, HFILL
+ BASE_NONE, NULL, 0x0, NULL, HFILL
}
},
{ &hf_reload_datavalue_value,
@@ -5399,77 +5431,77 @@ proto_register_reload(void)
}
},
{ &hf_reload_dmflag_status_info,
- { "STATUS_INFO", "reload.dmflags.status_info", FT_BOOLEAN, 1, TFS(&tfs_set_notset), 0x0,
+ { "STATUS_INFO", "reload.dmflags.status_info", FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
NULL, HFILL
}
},
{ &hf_reload_dmflag_routing_table_size,
- { "ROUTING_TABLE_SIZE", "reload.dmflags.routing_table_size", FT_BOOLEAN, 1, TFS(&tfs_set_notset), 0x0,
+ { "ROUTING_TABLE_SIZE", "reload.dmflags.routing_table_size", FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
NULL, HFILL
}
},
{ &hf_reload_dmflag_process_power,
- { "PROCESS_POWER", "reload.dmflags.process_power", FT_BOOLEAN, 1, TFS(&tfs_set_notset), 0x0,
+ { "PROCESS_POWER", "reload.dmflags.process_power", FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
NULL, HFILL
}
},
{ &hf_reload_dmflag_bandwidth,
- { "BANDWIDTH", "reload.dmflags.bandwidth", FT_BOOLEAN, 1, TFS(&tfs_set_notset), 0x0,
+ { "BANDWIDTH", "reload.dmflags.bandwidth", FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
NULL, HFILL
}
},
{ &hf_reload_dmflag_software_version,
- { "SOFTWARE_VERSION", "reload.dmflags.software_version", FT_BOOLEAN, 1, TFS(&tfs_set_notset), 0x0,
+ { "SOFTWARE_VERSION", "reload.dmflags.software_version", FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
NULL, HFILL
}
},
{ &hf_reload_dmflag_machine_uptime,
- { "MACHINE_UPTIME", "reload.dmflags.machine_uptime", FT_BOOLEAN, 1, TFS(&tfs_set_notset), 0x0,
+ { "MACHINE_UPTIME", "reload.dmflags.machine_uptime", FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
NULL, HFILL
}
},
{ &hf_reload_dmflag_app_uptime,
- { "APP_UPTIME", "reload.dmflags.app_uptime", FT_BOOLEAN, 1, TFS(&tfs_set_notset), 0x0,
+ { "APP_UPTIME", "reload.dmflags.app_uptime", FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
NULL, HFILL
}
},
{ &hf_reload_dmflag_memory_footprint,
- { "MEMORY_FOOTPRINT", "reload.dmflags.memory_footprint", FT_BOOLEAN, 1, TFS(&tfs_set_notset), 0x0,
+ { "MEMORY_FOOTPRINT", "reload.dmflags.memory_footprint", FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
NULL, HFILL
}
},
{ &hf_reload_dmflag_datasize_stored,
- { "DATASIZE_STORED", "reload.dmflags.datasize_stored", FT_BOOLEAN, 1, TFS(&tfs_set_notset), 0x0,
+ { "DATASIZE_STORED", "reload.dmflags.datasize_stored", FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
NULL, HFILL
}
},
{ &hf_reload_dmflag_instances_stored,
- { "INSTANCES_STORED", "reload.dmflags.instances_stored", FT_BOOLEAN, 1, TFS(&tfs_set_notset), 0x0,
+ { "INSTANCES_STORED", "reload.dmflags.instances_stored", FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
NULL, HFILL
}
},
{ &hf_reload_dmflag_messages_sent_rcvd,
- { "MESSAGES_SENT_RCVD", "reload.dmflags.messages_sent_rcvd", FT_BOOLEAN, 1, TFS(&tfs_set_notset), 0x0,
+ { "MESSAGES_SENT_RCVD", "reload.dmflags.messages_sent_rcvd", FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
NULL, HFILL
}
},
{ &hf_reload_dmflag_ewma_bytes_sent,
- { "EWMA_BYTES_SENT", "reload.dmflags.ewma_bytes_sent", FT_BOOLEAN, 1, TFS(&tfs_set_notset), 0x0,
+ { "EWMA_BYTES_SENT", "reload.dmflags.ewma_bytes_sent", FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
NULL, HFILL
}
},
{ &hf_reload_dmflag_ewma_bytes_rcvd,
- { "EWMA_BYTES_RCVD", "reload.dmflags.ewma_bytes_rcvd", FT_BOOLEAN, 1, TFS(&tfs_set_notset), 0x0,
+ { "EWMA_BYTES_RCVD", "reload.dmflags.ewma_bytes_rcvd", FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
NULL, HFILL
}
},
{ &hf_reload_dmflag_underlay_hop,
- { "UNDERLAY_HOP", "reload.dmflags.underlay_hop", FT_BOOLEAN, 1, TFS(&tfs_set_notset), 0x0,
+ { "UNDERLAY_HOP", "reload.dmflags.underlay_hop", FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
NULL, HFILL
}
},
{ &hf_reload_dmflag_battery_status,
- { "BATTERY_STATUS", "reload.dmflags.battery_status", FT_BOOLEAN, 1, TFS(&tfs_set_notset), 0x0,
+ { "BATTERY_STATUS", "reload.dmflags.battery_status", FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
NULL, HFILL
}
},
@@ -5892,7 +5924,7 @@ proto_reg_handoff_reload(void)
{
data_handle = find_dissector("data");
- xml_handle = find_dissector("xml");
+ xml_handle = find_dissector("xml");
heur_dissector_add("udp", dissect_reload_heur, proto_reload);
heur_dissector_add("tcp", dissect_reload_heur, proto_reload);
@@ -5903,10 +5935,10 @@ proto_reg_handoff_reload(void)
*
* Local variables:
* c-basic-offset: 2
- * tab-width: 2
+ * tab-width: 8
* indent-tabs-mode: nil
* End:
*
- * vi: set shiftwidth=2 tabstop=2 expandtab:
- * :indentSize=2:tabSize=2:noTabs=true:
+ * vi: set shiftwidth=2 tabstop=8 expandtab:
+ * :indentSize=2:tabSize=8:noTabs=true:
*/
diff --git a/epan/dissectors/packet-rfc2190.c b/epan/dissectors/packet-rfc2190.c
index df4b60691a..3ed68f94f1 100644
--- a/epan/dissectors/packet-rfc2190.c
+++ b/epan/dissectors/packet-rfc2190.c
@@ -81,52 +81,64 @@ static void
dissect_rfc2190( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
{
proto_item *ti = NULL;
- proto_tree *rfc2190_tree = NULL;
- unsigned int offset = 0;
- unsigned int rfc2190_version = 0;
+ proto_tree *rfc2190_tree = NULL;
+ int offset = 0;
+ unsigned int rfc2190_version = 0;
tvbuff_t *next_tvb;
+ int hdr_len = 0;
rfc2190_version = (tvb_get_guint8( tvb, offset ) & 0xc0 ) >> 6;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "H.263 ");
+ /* Three formats (mode A, mode B and mode C) are defined for H.263
+ * payload header. In mode A, an H.263 payload header of four bytes is
+ * present before actual compressed H.263 video bitstream in a packet.
+ * It allows fragmentation at GOB boundaries. In mode B, an eight byte
+ * H.263 payload header is used and each packet starts at MB boundaries
+ * without the PB-frames option. Finally, a twelve byte H.263 payload
+ * header is defined in mode C to support fragmentation at MB boundaries
+ * for frames that are coded with the PB-frames option.
+ */
if( rfc2190_version == 0x00) {
col_append_str( pinfo->cinfo, COL_INFO, "MODE A ");
+ hdr_len = 4;
}
else if( rfc2190_version == 0x02) {
col_append_str( pinfo->cinfo, COL_INFO, "MODE B ");
+ hdr_len = 8;
}
else if( rfc2190_version == 0x03) {
col_append_str( pinfo->cinfo, COL_INFO, "MODE C ");
+ hdr_len = 12;
}
if ( tree ) {
- ti = proto_tree_add_item( tree, proto_rfc2190, tvb, offset, -1, ENC_NA );
+ ti = proto_tree_add_item( tree, proto_rfc2190, tvb, offset, hdr_len, ENC_NA );
rfc2190_tree = proto_item_add_subtree( ti, ett_rfc2190 );
/* FBIT 1st octet, 1 bit */
- proto_tree_add_boolean( rfc2190_tree, hf_rfc2190_ftype, tvb, offset, 1, tvb_get_guint8( tvb, offset ) & 0x80 );
+ proto_tree_add_item( rfc2190_tree, hf_rfc2190_ftype, tvb, offset, 1, ENC_BIG_ENDIAN );
/* PBIT 1st octet, 1 bit */
- proto_tree_add_boolean( rfc2190_tree, hf_rfc2190_pbframes, tvb, offset, 1, tvb_get_guint8( tvb, offset ) & 0x40 );
+ proto_tree_add_item( rfc2190_tree, hf_rfc2190_pbframes, tvb, offset, 1, ENC_BIG_ENDIAN );
/* SBIT 1st octet, 3 bits */
- proto_tree_add_uint( rfc2190_tree, hf_rfc2190_sbit, tvb, offset, 1, ( tvb_get_guint8( tvb, offset ) & 0x38 ) >> 3 );
+ proto_tree_add_item( rfc2190_tree, hf_rfc2190_sbit, tvb, offset, 1, ENC_BIG_ENDIAN );
/* EBIT 1st octet, 3 bits */
- proto_tree_add_uint( rfc2190_tree, hf_rfc2190_ebit, tvb, offset, 1, tvb_get_guint8( tvb, offset ) & 0x7 );
-
+ proto_tree_add_item( rfc2190_tree, hf_rfc2190_ebit, tvb, offset, 1, ENC_BIG_ENDIAN );
offset++;
/* SRC 2nd octet, 3 bits */
- proto_tree_add_uint( rfc2190_tree, hf_rfc2190_srcformat, tvb, offset, 1, tvb_get_guint8( tvb, offset ) >> 5 );
+ proto_tree_add_item( rfc2190_tree, hf_rfc2190_srcformat, tvb, offset, 1, ENC_BIG_ENDIAN );
if(rfc2190_version == 0x00) { /* MODE A */
/* I flag, 1 bit */
- proto_tree_add_boolean( rfc2190_tree, hf_rfc2190_picture_coding_type, tvb, offset, 1, tvb_get_guint8( tvb, offset ) & 0x10 );
+ proto_tree_add_bits_item(rfc2190_tree, hf_rfc2190_picture_coding_type, tvb, (offset<<3)+3, 1, ENC_BIG_ENDIAN);
/* U flag, 1 bit */
- proto_tree_add_boolean( rfc2190_tree, hf_rfc2190_unrestricted_motion_vector, tvb, offset, 1, tvb_get_guint8( tvb, offset ) & 0x08 );
+ proto_tree_add_bits_item(rfc2190_tree, hf_rfc2190_unrestricted_motion_vector, tvb, (offset<<3)+4, 1, ENC_BIG_ENDIAN);
/* S flag, 1 bit */
- proto_tree_add_boolean( rfc2190_tree, hf_rfc2190_syntax_based_arithmetic, tvb, offset, 1, tvb_get_guint8( tvb, offset ) & 0x04 );
+ proto_tree_add_bits_item(rfc2190_tree, hf_rfc2190_syntax_based_arithmetic, tvb, (offset<<3)+5, 1, ENC_BIG_ENDIAN);
/* A flag, 1 bit */
- proto_tree_add_boolean( rfc2190_tree, hf_rfc2190_advanced_prediction, tvb, offset, 1, tvb_get_guint8( tvb, offset ) & 0x02 );
+ proto_tree_add_bits_item(rfc2190_tree, hf_rfc2190_advanced_prediction, tvb, (offset<<3)+6, 1, ENC_BIG_ENDIAN);
/* Reserved 2nd octect, 1 bit + 3rd octect 3 bits */
proto_tree_add_uint( rfc2190_tree, hf_rfc2190_r, tvb, offset, 2, ( ( tvb_get_guint8( tvb, offset ) & 0x1 ) << 3 ) + ( ( tvb_get_guint8( tvb, offset + 1 ) & 0xe0 ) >> 5 ) );
@@ -134,10 +146,9 @@ dissect_rfc2190( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
offset++;
/* DBQ 3 octect, 2 bits */
- proto_tree_add_uint( rfc2190_tree, hf_rfc2190_dbq, tvb, offset, 1, ( tvb_get_guint8( tvb, offset ) & 0x18 ) >> 3 );
+ proto_tree_add_item( rfc2190_tree, hf_rfc2190_dbq, tvb, offset, 1, ENC_BIG_ENDIAN );
/* TRB 3 octect, 3 bits */
- proto_tree_add_uint( rfc2190_tree, hf_rfc2190_trb, tvb, offset, 1, ( tvb_get_guint8( tvb, offset ) & 0x07 ) );
-
+ proto_tree_add_item( rfc2190_tree, hf_rfc2190_trb, tvb, offset, 1, ENC_BIG_ENDIAN );
offset++;
/* TR 4 octect, 8 bits */
@@ -199,9 +210,9 @@ dissect_rfc2190( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
offset+=2;
/* DBQ 11th octect, 2 bits */
- proto_tree_add_uint( rfc2190_tree, hf_rfc2190_dbq, tvb, offset, 1, ( tvb_get_guint8( tvb, offset ) & 0x18 ) >>3 );
+ proto_tree_add_item( rfc2190_tree, hf_rfc2190_dbq, tvb, offset, 1, ENC_BIG_ENDIAN );
/* TRB 11th octect, 3 bits */
- proto_tree_add_uint( rfc2190_tree, hf_rfc2190_trb, tvb, offset, 1, tvb_get_guint8( tvb, offset ) & 0x07 );
+ proto_tree_add_item( rfc2190_tree, hf_rfc2190_trb, tvb, offset, 1, ENC_BIG_ENDIAN );
offset++;
@@ -227,7 +238,7 @@ dissect_rfc2190( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
/* The rest of the packet is the H.263 stream */
- next_tvb = tvb_new_subset( tvb, offset, tvb_length(tvb) - offset, tvb_reported_length(tvb) - offset);
+ next_tvb = tvb_new_subset_remaining( tvb, offset);
call_dissector(h263_handle,next_tvb,pinfo,tree);
}
@@ -255,9 +266,9 @@ proto_register_rfc2190(void)
"F",
"rfc2190.ftype",
FT_BOOLEAN,
- BASE_NONE,
+ 8,
NULL,
- 0x0,
+ 0x80,
"Indicates the mode of the payload header (MODE A or B/C)", HFILL
}
},
@@ -267,9 +278,9 @@ proto_register_rfc2190(void)
"p/b frame",
"rfc2190.pbframes",
FT_BOOLEAN,
- BASE_NONE,
+ 8,
NULL,
- 0x0,
+ 0x40,
"Optional PB-frames mode as defined by H.263 (MODE C)", HFILL
}
},
@@ -281,7 +292,7 @@ proto_register_rfc2190(void)
FT_UINT8,
BASE_DEC,
NULL,
- 0x0,
+ 0x38,
"Start bit position specifies number of most significant bits that shall be ignored in the first data byte.", HFILL
}
},
@@ -293,7 +304,7 @@ proto_register_rfc2190(void)
FT_UINT8,
BASE_DEC,
NULL,
- 0x0,
+ 0x7,
"End bit position specifies number of least significant bits that shall be ignored in the last data byte.", HFILL
}
},
@@ -305,7 +316,7 @@ proto_register_rfc2190(void)
FT_UINT8,
BASE_DEC,
VALS(h263_srcformat_vals),
- 0x0,
+ 0xe0,
"Source format specifies the resolution of the current picture.", HFILL
}
},
@@ -315,7 +326,7 @@ proto_register_rfc2190(void)
"Inter-coded frame",
"rfc2190.picture_coding_type",
FT_BOOLEAN,
- BASE_NONE,
+ 8,
NULL,
0x0,
"Picture coding type, intra-coded (false) or inter-coded (true)", HFILL
@@ -327,7 +338,7 @@ proto_register_rfc2190(void)
"Motion vector",
"rfc2190.unrestricted_motion_vector",
FT_BOOLEAN,
- BASE_NONE,
+ 8,
NULL,
0x0,
"Unrestricted Motion Vector option for current picture", HFILL
@@ -339,7 +350,7 @@ proto_register_rfc2190(void)
"Syntax-based arithmetic coding",
"rfc2190.syntax_based_arithmetic",
FT_BOOLEAN,
- BASE_NONE,
+ 8,
NULL,
0x0,
"Syntax-based Arithmetic Coding option for current picture", HFILL
@@ -351,7 +362,7 @@ proto_register_rfc2190(void)
"Advanced prediction option",
"rfc2190.advanced_prediction",
FT_BOOLEAN,
- BASE_NONE,
+ 8,
NULL,
0x0,
"Advanced Prediction option for current picture", HFILL
@@ -365,7 +376,7 @@ proto_register_rfc2190(void)
FT_UINT8,
BASE_DEC,
NULL,
- 0x0,
+ 0x18,
"Differential quantization parameter used to calculate quantizer for the B frame based on quantizer for the P frame, when PB-frames option is used.", HFILL
}
},
@@ -377,7 +388,7 @@ proto_register_rfc2190(void)
FT_UINT8,
BASE_DEC,
NULL,
- 0x0,
+ 0x07,
"Temporal Reference for the B frame as defined by H.263", HFILL
}
},
diff --git a/epan/dissectors/packet-rfid-felica.c b/epan/dissectors/packet-rfid-felica.c
index 2a45decc58..4082d5dda1 100644
--- a/epan/dissectors/packet-rfid-felica.c
+++ b/epan/dissectors/packet-rfid-felica.c
@@ -36,10 +36,9 @@
#endif
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/strutil.h>
-#include <ctype.h>
-#include <stdio.h>
static int proto_felica = -1;
@@ -118,8 +117,8 @@ static int hf_felica_status_flag2 = -1;
* val_to_str_const(opcode, felica_opcodes, "Unknown"));
*/
static const value_string felica_commands[] = {
- {CMD_POLLING, "Polling"},
- {CMD_READ_WO_ENCRYPTION, "Read Without Encryption"},
+ {CMD_POLLING, "Polling"},
+ {CMD_READ_WO_ENCRYPTION, "Read Without Encryption"},
{CMD_WRITE_WO_ENCRYPTION, "Write Without Encryption"},
/* End of commands */
@@ -127,8 +126,8 @@ static const value_string felica_commands[] = {
};
static const value_string felica_responses[] = {
- {RES_POLLING, "Polling"},
- {RES_READ_WO_ENCRYPTION, "Read Without Encryption"},
+ {RES_POLLING, "Polling"},
+ {RES_READ_WO_ENCRYPTION, "Read Without Encryption"},
{RES_WRITE_WO_ENCRYPTION, "Write Without Encryption"},
/* End of responses */
@@ -136,8 +135,8 @@ static const value_string felica_responses[] = {
};
static const value_string felica_req_codes[] = {
- {RC_NO_REQ, "No Request"},
- {RC_SYS_REQ, "System Code Request"},
+ {RC_NO_REQ, "No Request"},
+ {RC_SYS_REQ, "System Code Request"},
{RC_COM_PERF_REQ, "Communication Performance Request"},
/* Others are reserved for future use */
@@ -147,11 +146,11 @@ static const value_string felica_req_codes[] = {
};
static const value_string felica_sys_codes[] = {
- {SC_FELICA_LITE, "FeliCa Lite"},
- {SC_NFC_FORUM, "NFC Forum (NDEF)"},
+ {SC_FELICA_LITE, "FeliCa Lite"},
+ {SC_NFC_FORUM, "NFC Forum (NDEF)"},
{SC_FELICA_NW_COMMON_AREA, "FeliCa Networks Common Area"},
- {SC_IRUCA, "IruCa"},
- {SC_DOUBLE_WILDCARD, "Wildcard"},
+ {SC_IRUCA, "IruCa"},
+ {SC_DOUBLE_WILDCARD, "Wildcard"},
/* End of system codes */
{0x00, NULL}
@@ -169,9 +168,9 @@ static void dissect_felica(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_item *item;
proto_tree *felica_tree = NULL;
- guint8 opcode;
- guint8 rwe_pos = 0;
- tvbuff_t *rwe_resp_data_tvb;
+ guint8 opcode;
+ guint8 rwe_pos = 0;
+ tvbuff_t *rwe_resp_data_tvb;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "FeliCa");
col_set_str(pinfo->cinfo, COL_INFO, "FeliCa Packet");
@@ -188,7 +187,7 @@ static void dissect_felica(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case CMD_POLLING:
col_set_str(pinfo->cinfo, COL_INFO, "Polling Request");
if (tree) {
- proto_tree_add_item(felica_tree, hf_felica_command, tvb, 0, 1, ENC_NA);
+ proto_tree_add_item(felica_tree, hf_felica_command, tvb, 0, 1, ENC_NA);
proto_tree_add_item(felica_tree, hf_felica_sys_code, tvb, 1, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(felica_tree, hf_felica_req_code, tvb, 3, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(felica_tree, hf_felica_timeslot, tvb, 4, 1, ENC_BIG_ENDIAN);
@@ -199,8 +198,8 @@ static void dissect_felica(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
col_set_str(pinfo->cinfo, COL_INFO, "Polling Response");
if (tree) {
proto_tree_add_item(felica_tree, hf_felica_response, tvb, 0, 1, ENC_NA);
- proto_tree_add_item(felica_tree, hf_felica_idm, tvb, 1, 8, ENC_BIG_ENDIAN);
- proto_tree_add_item(felica_tree, hf_felica_pnm, tvb, 9, 8, ENC_BIG_ENDIAN);
+ proto_tree_add_item(felica_tree, hf_felica_idm, tvb, 1, 8, ENC_BIG_ENDIAN);
+ proto_tree_add_item(felica_tree, hf_felica_pnm, tvb, 9, 8, ENC_BIG_ENDIAN);
if (tvb_reported_length(tvb) == 19)
proto_tree_add_item(felica_tree, hf_felica_sys_code, tvb, 17, 2, ENC_BIG_ENDIAN);
@@ -216,8 +215,8 @@ static void dissect_felica(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case CMD_READ_WO_ENCRYPTION:
col_set_str(pinfo->cinfo, COL_INFO, "Read Without Encryption Request");
if (tree) {
- proto_tree_add_item(felica_tree, hf_felica_command, tvb, 0, 1, ENC_NA);
- proto_tree_add_item(felica_tree, hf_felica_idm, tvb, 1, 8, ENC_BIG_ENDIAN);
+ proto_tree_add_item(felica_tree, hf_felica_command, tvb, 0, 1, ENC_NA);
+ proto_tree_add_item(felica_tree, hf_felica_idm, tvb, 1, 8, ENC_BIG_ENDIAN);
proto_tree_add_item(felica_tree, hf_felica_nbr_of_svcs, tvb, 9, 1, ENC_BIG_ENDIAN);
/* Service codes are always 2 bytes in length */
@@ -239,10 +238,10 @@ static void dissect_felica(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case RES_READ_WO_ENCRYPTION:
col_set_str(pinfo->cinfo, COL_INFO, "Read Without Encryption Response");
if (tree) {
- proto_tree_add_item(felica_tree, hf_felica_response, tvb, 0, 1, ENC_NA);
- proto_tree_add_item(felica_tree, hf_felica_idm, tvb, 1, 8, ENC_BIG_ENDIAN);
- proto_tree_add_item(felica_tree, hf_felica_status_flag1, tvb, 9, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(felica_tree, hf_felica_status_flag2, tvb, 10, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(felica_tree, hf_felica_response, tvb, 0, 1, ENC_NA);
+ proto_tree_add_item(felica_tree, hf_felica_idm, tvb, 1, 8, ENC_BIG_ENDIAN);
+ proto_tree_add_item(felica_tree, hf_felica_status_flag1, tvb, 9, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(felica_tree, hf_felica_status_flag2, tvb, 10, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(felica_tree, hf_felica_nbr_of_blocks, tvb, 11, 1, ENC_BIG_ENDIAN);
}
rwe_resp_data_tvb = tvb_new_subset_remaining(tvb, 12);
@@ -271,65 +270,92 @@ proto_register_felica(void)
static hf_register_info hf[] = {
{&hf_felica_command,
- { "Command", "felica.cmd", FT_UINT8, BASE_HEX,
- VALS(felica_commands), 0x0, NULL, HFILL }},
+ { "Command", "felica.cmd",
+ FT_UINT8, BASE_HEX, VALS(felica_commands), 0x0,
+ NULL, HFILL }
+ },
{&hf_felica_response,
- { "Response", "felica.res", FT_UINT8, BASE_HEX,
- VALS(felica_responses), 0x0, NULL, HFILL }},
+ { "Response", "felica.res",
+ FT_UINT8, BASE_HEX,
+ VALS(felica_responses), 0x0,
+ NULL, HFILL }
+ },
/* Request Code */
{&hf_felica_req_code,
- { "Request Code", "felica.req.code", FT_UINT8, BASE_HEX,
- VALS(felica_req_codes), 0x0, NULL, HFILL }},
+ { "Request Code", "felica.req.code",
+ FT_UINT8, BASE_HEX, VALS(felica_req_codes), 0x0,
+ NULL, HFILL }
+ },
{&hf_felica_idm,
- { "IDm (Manufacture ID)/NFCID2", "felica.idm", FT_UINT64, BASE_HEX,
- NULL, 0x0, NULL, HFILL }},
+ { "IDm (Manufacture ID)/NFCID2", "felica.idm",
+ FT_UINT64, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
/* System Code */
{&hf_felica_sys_code,
- { "System Code", "felica.sys_code", FT_UINT16, BASE_HEX,
- VALS(felica_sys_codes), 0x0, NULL, HFILL }},
+ { "System Code", "felica.sys_code",
+ FT_UINT16, BASE_HEX, VALS(felica_sys_codes), 0x0,
+ NULL, HFILL }
+ },
/* Service Code */
{&hf_felica_svc_code,
- { "Service Code", "felica.svc_code", FT_UINT16, BASE_HEX,
- NULL, 0x0, NULL, HFILL }},
+ { "Service Code", "felica.svc_code",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
/* Parameter/PAD */
{&hf_felica_pnm,
- { "PNm (Manufacture Parameter)/PAD", "felica.pnm", FT_UINT64, BASE_HEX,
- NULL, 0x0, NULL, HFILL }},
+ { "PNm (Manufacture Parameter)/PAD", "felica.pnm",
+ FT_UINT64, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
/* Number of Services */
{&hf_felica_nbr_of_svcs,
- { "Number of Services", "felica.svcs", FT_UINT8, BASE_DEC,
- NULL, 0x0, NULL, HFILL }},
+ { "Number of Services", "felica.svcs",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
/* Number of Blocks */
{&hf_felica_nbr_of_blocks,
- { "Number of Blocks", "felica.blocks", FT_UINT8, BASE_DEC,
- NULL, 0x0, NULL, HFILL }},
+ { "Number of Blocks", "felica.blocks",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
/* Block ID */
{&hf_felica_block_nbr,
- { "Block Number", "felica.block.nbr", FT_UINT8, BASE_DEC,
- NULL, 0x0, NULL, HFILL }},
+ { "Block Number", "felica.block.nbr",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
/* Status Flag 1 */
{&hf_felica_status_flag1,
- { "Status Flag 1", "felica.status.flag1", FT_UINT8, BASE_HEX,
- NULL, 0x0, NULL, HFILL }},
+ { "Status Flag 1", "felica.status.flag1",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
/* Status Flag 2 */
{&hf_felica_status_flag2,
- { "Status Flag 2", "felica.status.flag2", FT_UINT8, BASE_HEX,
- NULL, 0x0, NULL, HFILL }},
+ { "Status Flag 2", "felica.status.flag2",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
/* Timeslot */
{&hf_felica_timeslot,
- { "Timeslot", "felica.timeslot", FT_UINT8, BASE_HEX,
- NULL, 0x0, NULL, HFILL }}
+ { "Timeslot", "felica.timeslot",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ }
};
static gint *ett[] = {
diff --git a/epan/dissectors/packet-rfid-pn532.c b/epan/dissectors/packet-rfid-pn532.c
new file mode 100644
index 0000000000..d558d9a598
--- /dev/null
+++ b/epan/dissectors/packet-rfid-pn532.c
@@ -0,0 +1,615 @@
+/* packet-rfid-pn532.c
+ * Dissector for the NXP PN532 Protocol
+ *
+ * References:
+ * http://www.nxp.com/documents/user_manual/141520.pdf
+ *
+ * Copyright 2012, Tyson Key <tyson.key@gmail.com>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <glib.h>
+#include <epan/packet.h>
+
+static int proto_pn532 = -1;
+
+/* Device-specific HFs */
+static int hf_pn532_command = -1;
+static int hf_pn532_direction = -1;
+static int hf_pn532_MaxTg = -1;
+static int hf_pn532_Tg = -1;
+static int hf_pn532_NbTg = -1;
+static int hf_pn532_BrTy = -1;
+static int hf_pn532_error = -1;
+static int hf_pn532_payload_length = -1;
+static int hf_pn532_ic_version = -1;
+static int hf_pn532_fw_version = -1;
+static int hf_pn532_fw_revision = -1;
+static int hf_pn532_fw_support = -1;
+
+/* Card type-specific HFs */
+static int hf_pn532_14443a_sak = -1;
+static int hf_pn532_14443a_atqa = -1;
+static int hf_pn532_14443a_uid = -1;
+static int hf_pn532_14443a_ats = -1;
+static int hf_pn532_14443b_pupi = -1;
+static int hf_pn532_14443b_app_data = -1;
+static int hf_pn532_14443b_proto_info = -1;
+
+/* Diagnose hardware status */
+#define DIAGNOSE_REQ 0x00
+#define DIAGNOSE_RSP 0x01
+
+/* Get Firmware Version */
+#define GET_FIRMWARE_VERSION_REQ 0x02
+#define GET_FIRMWARE_VERSION_RSP 0x03
+
+#define GET_GENERAL_STATUS 0x04
+
+/* Read from a chipset register */
+#define READ_REGISTER_REQ 0x06
+#define READ_REGISTER_RSP 0x07
+
+/* Write Register */
+#define WRITE_REGISTER_REQ 0x08
+#define WRITE_REGISTER_RSP 0x09
+
+#define READ_GPIO 0x0C
+#define WRITE_GPIO 0x0E
+#define SET_SERIAL_BAUD_RATE 0x10
+#define SET_PARAMETERS 0x12
+#define SAM_CONFIGURATION 0x14
+#define POWER_DOWN 0x16
+
+/* RF Communication Commands */
+#define RF_CONFIGURATION_REQ 0x32
+#define RF_CONFIGURATION_RSP 0x33
+
+#define RF_REGULATION_TEST 0x58
+
+/* - Initiator Commands - */
+#define IN_JUMP_FOR_DEP 0x56
+#define IN_JUMP_FOR_PSL 0x46
+
+/* List targets (tags) in the field */
+#define IN_LIST_PASSIVE_TARGET_REQ 0x4A
+#define IN_LIST_PASSIVE_TARGET_RSP 0x4B
+
+#define IN_ATR 0x50
+#define IN_PSL 0x4E
+
+/* Data Exchange */
+#define IN_DATA_EXCHANGE_REQ 0x40
+#define IN_DATA_EXCHANGE_RSP 0x41
+
+/* Communicate through */
+#define IN_COMMUNICATE_THRU_REQ 0x42
+#define IN_COMMUNICATE_THRU_RSP 0x43
+
+/* Deselect target token */
+#define IN_DESELECT_REQ 0x44
+#define IN_DESELECT_RSP 0x45
+
+/* Release target token */
+#define IN_RELEASE_REQ 0x52
+#define IN_RELEASE_RSP 0x53
+
+/* Select target token */
+#define IN_SELECT_REQ 0x54
+#define IN_SELECT_RSP 0x55
+
+/* Auto/long-time polling*/
+#define IN_AUTO_POLL_REQ 0x60
+#define IN_AUTO_POLL_RSP 0x61
+
+/* Target Commands */
+#define TG_INIT_AS_TARGET 0x8C
+#define TG_SET_GENERAL_BYTES 0x92
+#define TG_GET_DATA 0x86
+#define TG_SET_DATA 0x8E
+#define TG_SET_METADATA 0x94
+#define TG_GET_INITIATOR_CMD 0x88
+#define TG_RESP_TO_INITIATOR 0x90
+#define TG_GET_TARGET_STATUS 0x8A
+
+/* TFI (Frame Identifier) Directions */
+#define HOST_TO_PN532 0xD4
+#define PN532_TO_HOST 0xD5
+
+/* Baud rate and modulation types */
+#define ISO_IEC_14443A_106 0x00
+#define FELICA_212 0x01
+#define FELICA_424 0x02
+#define ISO_IEC_14443B_106 0x03
+#define JEWEL_14443A_106 0x04
+
+/* Error codes */
+#define NO_ERROR 0x00
+#define UNACCEPTABLE_CMD 0x27
+
+static const value_string pn532_commands[] = {
+ {DIAGNOSE_REQ, "Diagnose"},
+ {DIAGNOSE_RSP, "Diagnose (Response)"},
+
+ /* Discover the device's firmware version */
+ {GET_FIRMWARE_VERSION_REQ, "GetFirmwareVersion"},
+ {GET_FIRMWARE_VERSION_RSP, "GetFirmwareVersion (Response)"},
+
+ {GET_GENERAL_STATUS, "GetGeneralStatus"},
+
+ /* Read from a chipset register */
+ {READ_REGISTER_REQ, "ReadRegister"},
+ {READ_REGISTER_RSP, "ReadRegister (Response)"},
+
+ /* Write to a chipset register */
+ {WRITE_REGISTER_REQ, "WriteRegister"},
+ {WRITE_REGISTER_RSP, "WriteRegister (Response)"},
+
+ {READ_GPIO, "ReadGPIO"},
+ {WRITE_GPIO, "WriteGPIO"},
+ {SET_SERIAL_BAUD_RATE, "SetSerialBaudRate"},
+ {SET_PARAMETERS, "SetParameters"},
+ {SAM_CONFIGURATION, "SAMConfiguration"},
+ {POWER_DOWN, "PowerDown"},
+
+ /* RF Configuration */
+ {RF_CONFIGURATION_REQ, "RFConfiguration"},
+ {RF_CONFIGURATION_RSP, "RFConfiguration (Response)"},
+
+ {RF_REGULATION_TEST, "RFRegulationTest"},
+ {IN_JUMP_FOR_DEP, "InJumpForDEP"},
+ {IN_JUMP_FOR_PSL, "InJumpForPSL"},
+
+ /* List tags in the proximity of the reader's field */
+ {IN_LIST_PASSIVE_TARGET_REQ, "InListPassiveTarget"},
+ {IN_LIST_PASSIVE_TARGET_RSP, "InListPassiveTarget (Response)"},
+
+ {IN_ATR, "InATR"},
+ {IN_PSL, "InPSL"},
+
+ /* Data Exchange */
+ {IN_DATA_EXCHANGE_REQ, "InDataExchange"},
+ {IN_DATA_EXCHANGE_RSP, "InDataExchange (Response)"},
+
+ /* Communicate through */
+ {IN_COMMUNICATE_THRU_REQ, "InCommunicateThru"},
+ {IN_COMMUNICATE_THRU_RSP, "InCommunicateThru (Response)"},
+
+ /* Deselect the target token */
+ {IN_DESELECT_REQ, "InDeselect"},
+ {IN_DESELECT_RSP, "InDeselect (Response)"},
+
+ /* Release the target token */
+ {IN_RELEASE_REQ, "InRelease"},
+ {IN_RELEASE_RSP, "InRelease (Response)"},
+
+ /* Select target token */
+ {IN_SELECT_REQ, "InSelect"},
+ {IN_SELECT_RSP, "InSelect (Response)"},
+
+ /* Automatic/long-time polling */
+ {IN_AUTO_POLL_REQ, "InAutoPoll"},
+ {IN_AUTO_POLL_RSP, "InAutoPoll (Response)"},
+
+ {TG_INIT_AS_TARGET, "TgInitAsTarget"},
+ {TG_SET_GENERAL_BYTES, "TgSetGeneralBytes"},
+ {TG_GET_DATA, "TgGetData"},
+ {TG_SET_DATA, "TgSetData"},
+ {TG_SET_METADATA, "TgSetMetaData"},
+ {TG_GET_INITIATOR_CMD, "TgGetInitiatorCommand"},
+ {TG_RESP_TO_INITIATOR, "TgResponseToInitiator"},
+ {TG_GET_TARGET_STATUS, "TgGetTargetStatus"},
+
+ /* End of commands */
+ {0x00, NULL}
+};
+
+/* TFI - 1 byte frame identifier; specifying direction of communication */
+static const value_string pn532_directions[] = {
+ {HOST_TO_PN532, "Host to PN532"},
+ {PN532_TO_HOST, "PN532 to Host"},
+
+ /* End of directions */
+ {0x00, NULL}
+};
+
+/* Error/status codes */
+static const value_string pn532_errors[] = {
+ {NO_ERROR, "No Error"},
+ {UNACCEPTABLE_CMD, "Unacceptable Command"},
+
+ /* End of errors */
+ {0x00, NULL}
+};
+
+/* Baud rates and modulation types */
+static const value_string pn532_brtypes[] = {
+ {ISO_IEC_14443A_106, "ISO/IEC 14443-A at 106 kbps"},
+ {FELICA_212, "FeliCa at 212 kbps"},
+ {FELICA_424, "FeliCa at 424 kbps"},
+ {ISO_IEC_14443B_106, "ISO/IEC 14443-B at 106 kbps"},
+ {JEWEL_14443A_106, "InnoVision Jewel/Topaz at 106 kbps"},
+
+ /* End of directions */
+ {0x00, NULL}
+};
+
+static dissector_handle_t data_handle;
+static dissector_handle_t felica_handle;
+
+static dissector_table_t pn532_dissector_table;
+
+/* Subtree handles: set by register_subtree_array */
+static gint ett_pn532 = -1;
+
+static void
+dissect_pn532(tvbuff_t * tvb, packet_info * pinfo, proto_tree *tree)
+{
+ proto_item *item;
+ proto_tree *pn532_tree;
+ guint8 cmd;
+ tvbuff_t *next_tvb = NULL;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "PN532");
+ col_set_str(pinfo->cinfo, COL_INFO, "PN532 Packet");
+
+ /* Start with a top-level item to add everything else to */
+ item = proto_tree_add_item(tree, proto_pn532, tvb, 0, -1, ENC_NA);
+ pn532_tree = proto_item_add_subtree(item, ett_pn532);
+
+ proto_tree_add_item(pn532_tree, hf_pn532_direction, tvb, 0, 1, ENC_NA);
+ proto_tree_add_item(pn532_tree, hf_pn532_command, tvb, 1, 1, ENC_NA);
+
+ /* Direction byte */
+ cmd = tvb_get_guint8(tvb, 1);
+
+ col_set_str(pinfo->cinfo, COL_INFO, val_to_str(cmd, pn532_commands, "Unknown"));
+
+ switch (cmd) {
+
+ /* Device Diagnosis Request */
+ case DIAGNOSE_REQ:
+ break;
+
+ /* Device Diagnosis Response */
+ case DIAGNOSE_RSP:
+ break;
+
+ /* Device Firmware Version Request */
+ case GET_FIRMWARE_VERSION_REQ:
+ break;
+
+ /* Device Firmware Version Response */
+ case GET_FIRMWARE_VERSION_RSP:
+ proto_tree_add_item(pn532_tree, hf_pn532_ic_version, tvb, 2, 1, ENC_NA);
+ proto_tree_add_item(pn532_tree, hf_pn532_fw_version, tvb, 3, 1, ENC_NA);
+ proto_tree_add_item(pn532_tree, hf_pn532_fw_revision, tvb, 4, 1, ENC_NA);
+ proto_tree_add_item(pn532_tree, hf_pn532_fw_support, tvb, 5, 1, ENC_NA);
+ break;
+
+ case GET_GENERAL_STATUS:
+ break;
+
+ case READ_REGISTER_REQ:
+ break;
+
+ case READ_REGISTER_RSP:
+ break;
+
+ case WRITE_REGISTER_REQ:
+ break;
+
+ case WRITE_REGISTER_RSP:
+ break;
+
+ case READ_GPIO:
+ break;
+
+ case WRITE_GPIO:
+ break;
+
+ case SET_SERIAL_BAUD_RATE:
+ break;
+
+ case SET_PARAMETERS:
+ break;
+
+ case SAM_CONFIGURATION:
+ break;
+
+ case POWER_DOWN:
+ break;
+
+ case RF_CONFIGURATION_REQ:
+ break;
+
+ case RF_CONFIGURATION_RSP:
+ break;
+
+ case RF_REGULATION_TEST:
+ break;
+
+ case IN_JUMP_FOR_DEP:
+ break;
+
+ case IN_JUMP_FOR_PSL:
+ break;
+
+ /* List targets (tags) in the field */
+ case IN_LIST_PASSIVE_TARGET_REQ:
+
+ /* Maximum number of supported tags */
+ proto_tree_add_item(pn532_tree, hf_pn532_MaxTg, tvb, 2, 1, ENC_BIG_ENDIAN);
+
+ /* Modulation and Baud Rate Type */
+ proto_tree_add_item(pn532_tree, hf_pn532_BrTy, tvb, 3, 1, ENC_BIG_ENDIAN);
+
+ /* Attempt to dissect FeliCa payloads */
+ if (tvb_get_guint8(tvb, 3) == FELICA_212 || tvb_get_guint8(tvb, 3) == FELICA_424) {
+
+ next_tvb = tvb_new_subset_remaining(tvb, 4);
+ call_dissector(felica_handle, next_tvb, pinfo, tree);
+
+ }
+
+ break;
+
+ case IN_LIST_PASSIVE_TARGET_RSP:
+ proto_tree_add_item(pn532_tree, hf_pn532_NbTg, tvb, 2, 1, ENC_BIG_ENDIAN);
+
+ /* Probably an ISO/IEC 14443-B tag */
+ if (tvb_reported_length(tvb) == 20) {
+
+ /* Add the PUPI */
+ proto_tree_add_item(pn532_tree, hf_pn532_14443b_pupi, tvb, 5, 4, ENC_BIG_ENDIAN);
+
+ /* Add the Application Data */
+ proto_tree_add_item(pn532_tree, hf_pn532_14443b_app_data, tvb, 9, 4, ENC_BIG_ENDIAN);
+
+ /* Add the Protocol Info */
+ proto_tree_add_item(pn532_tree, hf_pn532_14443b_proto_info, tvb, 13, 3, ENC_BIG_ENDIAN);
+ }
+
+ /* Probably one of:
+ * a MiFare DESFire card (23 bytes),
+ * an MF UltraLight tag (17 bytes)
+ * an MF Classic card with a 4 byte UID (14 bytes) */
+
+ if (tvb_reported_length(tvb) == 23 || (tvb_reported_length(tvb) == 17) || (tvb_reported_length(tvb) == 14)) {
+
+ /* Add the ATQA/SENS_RES */
+ proto_tree_add_item(pn532_tree, hf_pn532_14443a_atqa, tvb, 4, 2, ENC_BIG_ENDIAN);
+
+ /* Add the SAK/SEL_RES value */
+ proto_tree_add_item(pn532_tree, hf_pn532_14443a_sak, tvb, 6, 1, ENC_BIG_ENDIAN);
+
+ /* Add the UID */
+ if (tvb_reported_length(tvb) != 14) {
+ proto_tree_add_item(pn532_tree, hf_pn532_14443a_uid, tvb, 8, 7, ENC_BIG_ENDIAN);
+
+ /* Probably MiFare DESFire, or some other 14443-A card with an ATS value/7 byte UID */
+ if (tvb_reported_length(tvb) == 23) {
+
+ /* Add the ATS value */
+ proto_tree_add_item(pn532_tree, hf_pn532_14443a_ats, tvb, 16, 5, ENC_BIG_ENDIAN);
+ }
+ }
+ /* Probably MiFare Classic with a 4 byte UID */
+ else {
+ proto_tree_add_item(pn532_tree, hf_pn532_14443a_uid, tvb, 7, 4, ENC_BIG_ENDIAN);
+ }
+
+ }
+
+ /* See if we've got a FeliCa payload with a System Code */
+ if (tvb_reported_length(tvb) == 26) {
+
+ /* For FeliCa, this is at position 4. This doesn't exist for other payload types. */
+ proto_tree_add_item(pn532_tree, hf_pn532_payload_length, tvb, 4, 1, ENC_BIG_ENDIAN);
+
+ /* Use the length value (20?) at position 4, and skip the Status Word (9000) at the end */
+ next_tvb = tvb_new_subset(tvb, 5, tvb_get_guint8(tvb, 4) - 1, 19);
+ call_dissector(felica_handle, next_tvb, pinfo, tree);
+ }
+
+ break;
+
+ case IN_ATR:
+ break;
+
+ case IN_PSL:
+ break;
+
+ case IN_DATA_EXCHANGE_REQ:
+ break;
+
+ case IN_DATA_EXCHANGE_RSP:
+ break;
+
+ case IN_COMMUNICATE_THRU_REQ:
+ break;
+
+ /* Deselect a token */
+ case IN_DESELECT_REQ:
+ /* Logical target number */
+ proto_tree_add_item(pn532_tree, hf_pn532_Tg, tvb, 2, 1, ENC_BIG_ENDIAN);
+ break;
+
+ case IN_DESELECT_RSP:
+ proto_tree_add_item(pn532_tree, hf_pn532_error, tvb, 2, 1, ENC_BIG_ENDIAN);
+ break;
+
+ /* Release a token */
+ case IN_RELEASE_REQ:
+ /* Logical target number */
+ proto_tree_add_item(pn532_tree, hf_pn532_Tg, tvb, 2, 1, ENC_BIG_ENDIAN);
+ break;
+
+ case IN_RELEASE_RSP:
+ proto_tree_add_item(pn532_tree, hf_pn532_error, tvb, 2, 1, ENC_BIG_ENDIAN);
+ break;
+
+ /* Select a token */
+ case IN_SELECT_REQ:
+ /* Logical target number */
+ proto_tree_add_item(pn532_tree, hf_pn532_Tg, tvb, 2, 1, ENC_BIG_ENDIAN);
+ break;
+
+ case IN_SELECT_RSP:
+ proto_tree_add_item(pn532_tree, hf_pn532_error, tvb, 2, 1, ENC_BIG_ENDIAN);
+ break;
+
+ case IN_AUTO_POLL_REQ:
+ break;
+
+ case IN_AUTO_POLL_RSP:
+ break;
+
+ case TG_INIT_AS_TARGET:
+ break;
+
+ case TG_SET_GENERAL_BYTES:
+ break;
+
+ case TG_GET_DATA:
+ break;
+
+ case TG_SET_DATA:
+ break;
+
+ case TG_SET_METADATA:
+ break;
+
+ case TG_GET_INITIATOR_CMD:
+ break;
+
+ case TG_RESP_TO_INITIATOR:
+ break;
+
+ case TG_GET_TARGET_STATUS:
+ break;
+
+ default:
+ break;
+ }
+}
+
+void proto_register_pn532(void)
+{
+ static hf_register_info hf[] = {
+
+ {&hf_pn532_command,
+ {"Command", "pn532.cmd", FT_UINT8, BASE_HEX,
+ VALS(pn532_commands), 0x0, NULL, HFILL}},
+ {&hf_pn532_direction,
+ {"Direction", "pn532.tfi", FT_UINT8, BASE_HEX,
+ VALS(pn532_directions), 0x0, NULL, HFILL}},
+ {&hf_pn532_error,
+ {"Error Code", "pn532.error", FT_UINT8, BASE_HEX,
+ VALS(pn532_errors), 0x0, NULL, HFILL}},
+ {&hf_pn532_BrTy,
+ {"Baud Rate and Modulation", "pn532.BrTy", FT_UINT8, BASE_HEX,
+ VALS(pn532_brtypes), 0x0, NULL, HFILL}},
+ {&hf_pn532_MaxTg,
+ {"Maximum Number of Targets", "pn532.MaxTg", FT_INT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL}},
+ {&hf_pn532_Tg,
+ {"Logical Target Number", "pn532.Tg", FT_INT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL}},
+ {&hf_pn532_NbTg,
+ {"Number of Targets", "pn532.NbTg", FT_INT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL}},
+ {&hf_pn532_payload_length,
+ {"Payload Length", "pn532.payload.length", FT_INT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL}},
+ {&hf_pn532_ic_version,
+ {"Integrated Circuit Version", "pn532.ic.version", FT_INT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL}},
+ {&hf_pn532_fw_version,
+ {"Firmware Version", "pn532.fw.version", FT_INT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL}},
+ {&hf_pn532_fw_revision,
+ {"Firmware Revision", "pn532.fw.revision", FT_INT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL}},
+ {&hf_pn532_fw_support,
+ {"Firmware Support", "pn532.fw.support", FT_INT8, BASE_DEC,
+ NULL, 0x0, NULL, HFILL}},
+ {&hf_pn532_14443a_sak,
+ {"ISO/IEC 14443-A SAK", "pn532.iso.14443a.sak", FT_UINT8, BASE_HEX,
+ NULL, 0x0, NULL, HFILL}},
+ {&hf_pn532_14443a_atqa,
+ {"ISO/IEC 14443-A ATQA", "pn532.iso.14443a.atqa", FT_UINT16, BASE_HEX,
+ NULL, 0x0, NULL, HFILL}},
+ {&hf_pn532_14443a_uid,
+ {"ISO/IEC 14443-A UID", "pn532.iso.14443a.uid", FT_UINT64, BASE_HEX,
+ NULL, 0x0, NULL, HFILL}},
+ {&hf_pn532_14443a_ats,
+ {"ISO/IEC 14443-A ATS", "pn532.iso.14443a.ats", FT_UINT64, BASE_HEX,
+ NULL, 0x0, NULL, HFILL}},
+ {&hf_pn532_14443b_pupi,
+ {"ISO/IEC 14443-B PUPI", "pn532.iso.14443b.pupi", FT_UINT64, BASE_HEX,
+ NULL, 0x0, NULL, HFILL}},
+ {&hf_pn532_14443b_app_data,
+ {"ISO/IEC 14443-B Application Data", "pn532.iso.14443b.app.data", FT_UINT64, BASE_HEX,
+ NULL, 0x0, NULL, HFILL}},
+ {&hf_pn532_14443b_proto_info,
+ {"ISO/IEC 14443-B Protocol Info", "pn532.iso.14443b.protocol.info", FT_UINT64, BASE_HEX,
+ NULL, 0x0, NULL, HFILL}},
+ };
+
+ static gint *ett[] = {
+ &ett_pn532
+ };
+
+ proto_pn532 = proto_register_protocol("NXP PN532", "PN532", "pn532");
+ proto_register_field_array(proto_pn532, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ pn532_dissector_table = register_dissector_table("pn532.payload", "PN532 Payload", FT_UINT8, BASE_DEC);
+
+ register_dissector("pn532", dissect_pn532, proto_pn532);
+}
+
+/* Handler registration */
+void proto_reg_handoff_pn532(void)
+{
+ data_handle = find_dissector("data");
+ felica_handle = find_dissector("felica");
+}
+
+/*
+ * Editor modelines - http://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * ex: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
+ */
diff --git a/epan/dissectors/packet-rlc-lte.c b/epan/dissectors/packet-rlc-lte.c
index e31b9007dc..8f8c397e23 100644
--- a/epan/dissectors/packet-rlc-lte.c
+++ b/epan/dissectors/packet-rlc-lte.c
@@ -30,6 +30,7 @@
#include <string.h>
#include <epan/packet.h>
+#include <epan/conversation.h>
#include <epan/expert.h>
#include <epan/prefs.h>
#include <epan/tap.h>
@@ -1382,7 +1383,6 @@ static sequence_analysis_state checkChannelSequenceInfo(packet_info *pinfo, tvbu
if (p_report_in_frame->previousFrameNum != 0) {
/* Get report for previous frame */
sequence_analysis_report *p_previous_report;
- guint16 snLimit;
if (p_rlc_lte_info->UMSequenceNumberLength == 5) {
snLimit = 32;
}
@@ -2143,6 +2143,12 @@ static void dissect_rlc_lte_am_status_pdu(tvbuff_t *tvb,
ack_sn);
}
+ /* NACK should always be 'behind' the ACK */
+ if ((1024 + ack_sn - nack_sn) % 1024 > 512) {
+ expert_add_info_format(pinfo, nack_ti, PI_MALFORMED, PI_ERROR,
+ "NACK must not be ahead of ACK in status PDU");
+ }
+
/* Copy into struct, but don't exceed buffer */
if (nack_count < MAX_NACKs) {
tap_info->NACKs[nack_count++] = (guint16)nack_sn;
@@ -2191,12 +2197,12 @@ static void dissect_rlc_lte_am_status_pdu(tvbuff_t *tvb,
if ((guint16)so_end == 0x7fff) {
write_pdu_label_and_info(top_ti, NULL, pinfo,
- " (SOstart=%u SOend=<END-OF_PDU>)",
+ " (SOstart=%u SOend=<END-OF_PDU>)",
(guint16)so_start);
}
else {
write_pdu_label_and_info(top_ti, NULL, pinfo,
- " (SOstart=%u SOend=%u)",
+ " (SOstart=%u SOend=%u)",
(guint16)so_start, (guint16)so_end);
}
diff --git a/epan/dissectors/packet-rlc.c b/epan/dissectors/packet-rlc.c
index 027c9e0b8f..af6e19a0cb 100644
--- a/epan/dissectors/packet-rlc.c
+++ b/epan/dissectors/packet-rlc.c
@@ -27,13 +27,14 @@
#endif
#include <string.h>
-
#include <glib.h>
#include <epan/packet.h>
+#include <epan/conversation.h>
#include <epan/asn1.h>
#include <epan/expert.h>
#include <epan/prefs.h>
+
#include "packet-umts_fp.h"
#include "packet-umts_mac.h"
#include "packet-rlc.h"
@@ -178,32 +179,32 @@ static const value_string rlc_sufi_vals[] = {
};
/* reassembly related data */
-static GHashTable *fragment_table = NULL; /* maps rlc_channel -> fragmented sdu */
-static GHashTable *reassembled_table = NULL; /* maps fragment -> complete sdu */
-static GHashTable *sequence_table = NULL; /* channel -> seq */
+static GHashTable *fragment_table = NULL; /* maps rlc_channel -> fragmented sdu */
+static GHashTable *reassembled_table = NULL; /* maps fragment -> complete sdu */
+static GHashTable *sequence_table = NULL; /* channel -> seq */
/* identify an RLC channel, using one of two options:
* - via Radio Bearer ID and U-RNTI
* - via Radio Bearer ID and (VPI/VCI/CID) + Link ID
*/
struct rlc_channel {
- guint32 urnti;
- guint16 vpi;
- guint16 vci;
- guint8 cid;
- guint16 link; /* link number */
- guint8 rbid; /* radio bearer ID */
- guint8 dir; /* direction */
+ guint32 urnti;
+ guint16 vpi;
+ guint16 vci;
+ guint8 cid;
+ guint16 link; /* link number */
+ guint8 rbid; /* radio bearer ID */
+ guint8 dir; /* direction */
enum rlc_li_size li_size;
- enum rlc_mode mode;
+ enum rlc_mode mode;
};
/* used for duplicate detection */
struct rlc_seq {
- guint32 frame_num;
+ guint32 frame_num;
nstime_t arrival;
- guint16 seq;
- guint16 oc; /* overflow counter */
+ guint16 seq;
+ guint16 oc; /* overflow counter */
};
struct rlc_seqlist {
@@ -214,32 +215,31 @@ struct rlc_seqlist {
/* fragment representation */
struct rlc_frag {
- guint32 frame_num;
- struct rlc_channel ch;
- guint16 seq; /* RLC sequence number */
- guint16 li; /* LI within current RLC frame */
- guint16 len; /* length of fragment data */
- guint8 *data; /* store fragment data here */
+ guint32 frame_num;
+ struct rlc_channel ch;
+ guint16 seq; /* RLC sequence number */
+ guint16 li; /* LI within current RLC frame */
+ guint16 len; /* length of fragment data */
+ guint8 *data; /* store fragment data here */
struct rlc_frag *next; /* next fragment */
};
struct rlc_sdu {
- tvbuff_t *tvb; /* contains reassembled tvb */
- guint16 len; /* total length of reassembled SDU */
- guint16 fragcnt; /* number of fragments within this SDU */
- guint8 *data; /* reassembled data buffer */
+ tvbuff_t *tvb; /* contains reassembled tvb */
+ guint16 len; /* total length of reassembled SDU */
+ guint16 fragcnt; /* number of fragments within this SDU */
+ guint8 *data; /* reassembled data buffer */
struct rlc_frag *reassembled_in;
- struct rlc_frag *frags; /* pointer to list of fragments */
- struct rlc_frag *last; /* pointer to last fragment */
+ struct rlc_frag *frags; /* pointer to list of fragments */
+ struct rlc_frag *last; /* pointer to last fragment */
};
struct rlc_li {
- guint16 li; /* original li */
- guint16 len; /* length of this data fragment */
- guint8 ext; /* extension bit value */
-
+ guint16 li; /* original li */
+ guint16 len; /* length of this data fragment */
+ guint8 ext; /* extension bit value */
proto_tree *tree; /* subtree for this LI */
};
@@ -281,8 +281,8 @@ static int
rlc_channel_assign(struct rlc_channel *ch, enum rlc_mode mode, packet_info *pinfo)
{
struct atm_phdr *atm;
- rlc_info *rlcinf;
- fp_info *fpinf;
+ rlc_info *rlcinf;
+ fp_info *fpinf;
atm = &pinfo->pseudo_header->atm;
fpinf = p_get_proto_data(pinfo->fd, proto_fp);
@@ -356,6 +356,7 @@ static struct rlc_sdu *
rlc_sdu_create(void)
{
struct rlc_sdu *sdu;
+
sdu = se_alloc0(sizeof(struct rlc_sdu));
return sdu;
}
@@ -364,6 +365,7 @@ static void
rlc_frag_delete(gpointer data)
{
struct rlc_frag *frag = data;
+
if (frag->data) {
g_free(frag->data);
frag->data = NULL;
@@ -373,7 +375,7 @@ rlc_frag_delete(gpointer data)
static void
rlc_sdu_frags_delete(gpointer data)
{
- struct rlc_sdu *sdu = data;
+ struct rlc_sdu *sdu = data;
struct rlc_frag *frag;
frag = sdu->frags;
@@ -391,10 +393,10 @@ rlc_frag_assign(struct rlc_frag *frag, enum rlc_mode mode, packet_info *pinfo,
guint16 seq, guint16 li)
{
frag->frame_num = pinfo->fd->num;
- frag->seq = seq;
- frag->li = li;
- frag->len = 0;
- frag->data = NULL;
+ frag->seq = seq;
+ frag->li = li;
+ frag->len = 0;
+ frag->data = NULL;
rlc_channel_assign(&frag->ch, mode, pinfo);
return 0;
@@ -404,7 +406,7 @@ static int
rlc_frag_assign_data(struct rlc_frag *frag, tvbuff_t *tvb,
guint16 offset, guint16 length)
{
- frag->len = length;
+ frag->len = length;
frag->data = g_malloc(length);
tvb_memcpy(tvb, frag->data, offset, length);
return 0;
@@ -415,6 +417,7 @@ rlc_frag_create(tvbuff_t *tvb, enum rlc_mode mode, packet_info *pinfo,
guint16 offset, guint16 length, guint16 seq, guint16 li)
{
struct rlc_frag *frag;
+
frag = se_alloc0(sizeof(struct rlc_frag));
rlc_frag_assign(frag, mode, pinfo, seq, li);
rlc_frag_assign_data(frag, tvb, offset, length);
@@ -488,10 +491,11 @@ fragment_table_init(void)
static void
tree_add_fragment_list(struct rlc_sdu *sdu, tvbuff_t *tvb, proto_tree *tree)
{
- proto_item *ti;
- proto_tree *frag_tree;
- guint16 offset;
+ proto_item *ti;
+ proto_tree *frag_tree;
+ guint16 offset;
struct rlc_frag *sdufrag;
+
ti = proto_tree_add_item(tree, hf_rlc_frags, tvb, 0, -1, ENC_NA);
frag_tree = proto_item_add_subtree(ti, ett_rlc_fragments);
proto_item_append_text(ti, " (%u bytes, %u fragments): ",
@@ -511,10 +515,11 @@ tree_add_fragment_list(struct rlc_sdu *sdu, tvbuff_t *tvb, proto_tree *tree)
static void
tree_add_fragment_list_incomplete(struct rlc_sdu *sdu, tvbuff_t *tvb, proto_tree *tree)
{
- proto_item *ti;
- proto_tree *frag_tree;
- guint16 offset;
+ proto_item *ti;
+ proto_tree *frag_tree;
+ guint16 offset;
struct rlc_frag *sdufrag;
+
ti = proto_tree_add_item(tree, hf_rlc_frags, tvb, 0, 0, ENC_NA);
frag_tree = proto_item_add_subtree(ti, ett_rlc_fragments);
proto_item_append_text(ti, " (%u bytes, %u fragments): ",
@@ -532,30 +537,30 @@ tree_add_fragment_list_incomplete(struct rlc_sdu *sdu, tvbuff_t *tvb, proto_tree
/* Add the same description to too the two given proto_items */
static void add_description(proto_item *li_ti, proto_item *length_ti,
- const char *format, ...)
+ const char *format, ...)
{
- #define MAX_INFO_BUFFER 256
- static char info_buffer[MAX_INFO_BUFFER];
+#define MAX_INFO_BUFFER 256
+ static char info_buffer[MAX_INFO_BUFFER];
- va_list ap;
+ va_list ap;
- va_start(ap, format);
- g_vsnprintf(info_buffer, MAX_INFO_BUFFER, format, ap);
- va_end(ap);
+ va_start(ap, format);
+ g_vsnprintf(info_buffer, MAX_INFO_BUFFER, format, ap);
+ va_end(ap);
- proto_item_append_text(li_ti, " (%s)", info_buffer);
- proto_item_append_text(length_ti, " (%s)", info_buffer);
+ proto_item_append_text(li_ti, " (%s)", info_buffer);
+ proto_item_append_text(length_ti, " (%s)", info_buffer);
}
/* add information for an LI to 'tree' */
static proto_tree *
tree_add_li(enum rlc_mode mode, struct rlc_li *li, guint8 li_idx, guint8 hdr_offs,
- gboolean li_is_on_2_bytes, tvbuff_t *tvb, proto_tree *tree)
+ gboolean li_is_on_2_bytes, tvbuff_t *tvb, proto_tree *tree)
{
proto_item *root_ti, *ti;
proto_tree *li_tree;
- guint8 li_offs;
- guint64 length;
+ guint8 li_offs;
+ guint64 length;
if (!tree) return NULL;
@@ -709,7 +714,7 @@ static void
reassemble_message(struct rlc_channel *ch, struct rlc_sdu *sdu, struct rlc_frag *frag)
{
struct rlc_frag *temp;
- guint16 offs = 0;
+ guint16 offs = 0;
if (!sdu || !ch || !sdu->frags) return;
@@ -742,10 +747,10 @@ add_fragment(enum rlc_mode mode, tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree, guint16 offset, guint16 seq, guint16 num_li,
guint16 len, gboolean final)
{
- struct rlc_channel ch_lookup;
- struct rlc_frag frag_lookup, *frag = NULL, *tmp;
- gpointer orig_frag, orig_sdu;
- struct rlc_sdu *sdu;
+ struct rlc_channel ch_lookup;
+ struct rlc_frag frag_lookup, *frag = NULL, *tmp;
+ gpointer orig_frag, orig_sdu;
+ struct rlc_sdu *sdu;
rlc_channel_assign(&ch_lookup, mode, pinfo);
rlc_frag_assign(&frag_lookup, mode, pinfo, seq, num_li);
@@ -811,9 +816,9 @@ static tvbuff_t *
get_reassembled_data(enum rlc_mode mode, tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree, guint16 seq, guint16 num_li)
{
- gpointer orig_frag, orig_sdu;
- struct rlc_sdu *sdu;
- struct rlc_frag lookup, *frag;
+ gpointer orig_frag, orig_sdu;
+ struct rlc_sdu *sdu;
+ struct rlc_frag lookup, *frag;
rlc_frag_assign(&lookup, mode, pinfo, seq, num_li);
@@ -859,9 +864,9 @@ static gboolean
rlc_is_duplicate(enum rlc_mode mode, packet_info *pinfo, guint16 seq,
guint32 *original)
{
- GList *element;
- struct rlc_seqlist lookup, *list;
- struct rlc_seq seq_item, *seq_new;
+ GList *element;
+ struct rlc_seqlist lookup, *list;
+ struct rlc_seq seq_item, *seq_new;
rlc_channel_assign(&lookup.ch, mode, pinfo);
list = g_hash_table_lookup(sequence_table, &lookup.ch);
@@ -962,10 +967,11 @@ rlc_um_reassemble(tvbuff_t *tvb, guint8 offs, packet_info *pinfo, proto_tree *tr
proto_tree *top_level, enum rlc_channel_type channel, guint16 seq,
struct rlc_li *li, guint16 num_li, gboolean li_is_on_2_bytes)
{
- guint8 i;
- gboolean dissected = FALSE;
- gint length;
- tvbuff_t *next_tvb = NULL;
+ guint8 i;
+ gboolean dissected = FALSE;
+ gint length;
+ tvbuff_t *next_tvb = NULL;
+
/* perform reassembly now */
for (i = 0; i < num_li; i++) {
if ((!li_is_on_2_bytes && (li[i].li == 0x7f)) || (li[i].li == 0x7fff)) {
@@ -1035,15 +1041,23 @@ static gint16
rlc_decode_li(enum rlc_mode mode, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
struct rlc_li *li, guint8 max_li, gboolean li_on_2_bytes)
{
- guint8 ext, hdr_len, offs = 0, num_li = 0, li_offs;
- guint16 next_bytes, prev_li = 0;
+ guint8 ext, hdr_len, offs = 0, num_li = 0, li_offs;
+ guint16 next_bytes, prev_li = 0;
proto_item *malformed;
- guint16 total_len;
+ guint16 total_len;
switch (mode) {
- case RLC_AM: offs = 1; break;
- case RLC_UM: offs = 0; break;
- case RLC_TM: return -1;
+ case RLC_AM:
+ offs = 1;
+ break;
+ case RLC_UM:
+ offs = 0;
+ break;
+ case RLC_TM:
+ /* fall trough */
+ case RLC_UNKNOWN_MODE:
+ default:
+ return -1;
}
hdr_len = offs;
/* calculate header length */
@@ -1177,15 +1191,15 @@ dissect_rlc_um(enum rlc_channel_type channel, tvbuff_t *tvb, packet_info *pinfo,
proto_tree *top_level, proto_tree *tree)
{
#define MAX_LI 16
- struct rlc_li li[MAX_LI];
- fp_info *fpinf;
- rlc_info *rlcinf;
- guint32 orig_num;
- guint8 seq;
- guint8 next_byte, offs = 0;
- gint16 pos, num_li = 0;
- gboolean is_truncated, li_is_on_2_bytes;
- proto_item *truncated_ti;
+ struct rlc_li li[MAX_LI];
+ fp_info *fpinf;
+ rlc_info *rlcinf;
+ guint32 orig_num;
+ guint8 seq;
+ guint8 next_byte, offs = 0;
+ gint16 pos, num_li = 0;
+ gboolean is_truncated, li_is_on_2_bytes;
+ proto_item *truncated_ti;
next_byte = tvb_get_guint8(tvb, offs++);
seq = next_byte >> 1;
@@ -1250,20 +1264,20 @@ dissect_rlc_um(enum rlc_channel_type channel, tvbuff_t *tvb, packet_info *pinfo,
static void
dissect_rlc_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint8 offset)
{
- guint8 sufi_type, bits;
- guint64 len, sn, wsn, lsn, l;
- guint16 value, previous_sn;
- gboolean isErrorBurstInd;
- gint bit_offset, previous_bit_offset;
- guint i, j;
+ guint8 sufi_type, bits;
+ guint64 len, sn, wsn, lsn, l;
+ guint16 value, previous_sn;
+ gboolean isErrorBurstInd;
+ gint bit_offset, previous_bit_offset;
+ guint i, j;
proto_tree *sufi_tree, *bitmap_tree, *rlist_tree;
proto_item *sufi_item, *malformed, *ti;
#define BUFF_SIZE 41
- gchar *buff = NULL;
- guint8 cw[15];
- guint8 sufi_start_offset;
- gboolean seen_last = FALSE;
- guint16 number_of_bitmap_entries = 0;
+ gchar *buff = NULL;
+ guint8 cw[15];
+ guint8 sufi_start_offset;
+ gboolean seen_last = FALSE;
+ guint16 number_of_bitmap_entries = 0;
bit_offset = offset*8 + 4; /* first SUFI type is always 4 bit shifted */
@@ -1457,10 +1471,10 @@ dissect_rlc_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guin
static void
dissect_rlc_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- guint8 type, next_byte;
+ guint8 type, next_byte;
proto_item *malformed;
- guint64 r1;
- guint64 rsn, hfn;
+ guint64 r1;
+ guint64 rsn, hfn;
next_byte = tvb_get_guint8(tvb, 0);
type = (next_byte >> 4) & 0x07;
@@ -1476,7 +1490,6 @@ dissect_rlc_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_bits_ret_val(tree, hf_rlc_rsn, tvb, 4, 1, &rsn, ENC_BIG_ENDIAN);
proto_tree_add_bits_ret_val(tree, hf_rlc_r1, tvb, 5, 3, &r1, ENC_BIG_ENDIAN);
if (r1) {
- proto_item *malformed;
malformed = proto_tree_add_protocol_format(tree,
proto_malformed, tvb, 0, 0, "[Malformed Packet: %s]", pinfo->current_proto);
expert_add_info_format(pinfo, malformed, PI_MALFORMED, PI_ERROR,
@@ -1503,9 +1516,10 @@ rlc_am_reassemble(tvbuff_t *tvb, guint8 offs, packet_info *pinfo,
enum rlc_channel_type channel, guint16 seq, gboolean poll_set, struct rlc_li *li,
guint16 num_li, gboolean final, gboolean li_is_on_2_bytes)
{
- guint8 i;
- gboolean piggyback = FALSE, dissected = FALSE;
- tvbuff_t *next_tvb = NULL;
+ guint8 i;
+ gboolean piggyback = FALSE, dissected = FALSE;
+ tvbuff_t *next_tvb = NULL;
+
/* perform reassembly now */
for (i = 0; i < num_li; i++) {
if ((!li_is_on_2_bytes && (li[i].li == 0x7e)) || (li[i].li == 0x7ffe)) {
@@ -1570,16 +1584,16 @@ dissect_rlc_am(enum rlc_channel_type channel, tvbuff_t *tvb, packet_info *pinfo,
proto_tree *top_level, proto_tree *tree)
{
#define MAX_LI 16
- struct rlc_li li[MAX_LI];
- fp_info *fpinf;
- rlc_info *rlcinf;
- guint8 ext, dc;
- guint8 next_byte, offs = 0;
- guint32 orig_num = 0;
- gint16 num_li = 0, seq, pos;
- gboolean is_truncated, li_is_on_2_bytes;
- proto_item *truncated_ti;
- guint64 polling;
+ struct rlc_li li[MAX_LI];
+ fp_info *fpinf;
+ rlc_info *rlcinf;
+ guint8 ext, dc;
+ guint8 next_byte, offs = 0;
+ guint32 orig_num = 0;
+ gint16 num_li = 0, seq, pos;
+ gboolean is_truncated, li_is_on_2_bytes;
+ proto_item *truncated_ti;
+ guint64 polling;
next_byte = tvb_get_guint8(tvb, offs++);
dc = next_byte >> 7;
@@ -1671,6 +1685,7 @@ static void
dissect_rlc_pcch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_tree *subtree = NULL;
+
col_set_str(pinfo->cinfo, COL_PROTOCOL, "RLC");
col_clear(pinfo->cinfo, COL_INFO);
@@ -1687,8 +1702,8 @@ dissect_rlc_pcch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
dissect_rlc_ccch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- fp_info *fpi;
- proto_item *ti = NULL;
+ fp_info *fpi;
+ proto_item *ti = NULL;
proto_tree *subtree = NULL;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "RLC");
@@ -1716,35 +1731,35 @@ dissect_rlc_ccch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
dissect_rlc_ctch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- fp_info *fpi;
- proto_item *ti = NULL;
- proto_tree *subtree = NULL;
+ fp_info *fpi;
+ proto_item *ti = NULL;
+ proto_tree *subtree = NULL;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "RLC");
- col_clear(pinfo->cinfo, COL_INFO);
+ col_clear(pinfo->cinfo, COL_INFO);
- fpi = p_get_proto_data(pinfo->fd, proto_fp);
- if (!fpi) return; /* dissection failure */
+ fpi = p_get_proto_data(pinfo->fd, proto_fp);
+ if (!fpi) return; /* dissection failure */
- if (tree) {
- ti = proto_tree_add_item(tree, proto_rlc, tvb, 0, -1, ENC_NA);
- subtree = proto_item_add_subtree(ti, ett_rlc);
- }
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_rlc, tvb, 0, -1, ENC_NA);
+ subtree = proto_item_add_subtree(ti, ett_rlc);
+ }
- /* CTCH is always UM */
- proto_item_append_text(ti, " UM (CTCH)");
- dissect_rlc_um(RLC_DL_CTCH, tvb, pinfo, tree, subtree);
+ /* CTCH is always UM */
+ proto_item_append_text(ti, " UM (CTCH)");
+ dissect_rlc_um(RLC_DL_CTCH, tvb, pinfo, tree, subtree);
}
static void
dissect_rlc_dcch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti = NULL;
- proto_tree *subtree = NULL;
- fp_info *fpi;
- rlc_info *rlci;
- enum rlc_channel_type channel;
+ proto_item *ti = NULL;
+ proto_tree *subtree = NULL;
+ fp_info *fpi;
+ rlc_info *rlci;
+ enum rlc_channel_type channel;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "RLC");
col_clear(pinfo->cinfo, COL_INFO);
@@ -1753,9 +1768,9 @@ dissect_rlc_dcch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
rlci = p_get_proto_data(pinfo->fd, proto_rlc);
if (!fpi || !rlci){
- ti = proto_tree_add_text(tree, tvb, 0, -1,
- "Can't dissect RLC frame because no per-frame info was attached!");
- PROTO_ITEM_SET_GENERATED(ti);
+ ti = proto_tree_add_text(tree, tvb, 0, -1,
+ "Can't dissect RLC frame because no per-frame info was attached!");
+ PROTO_ITEM_SET_GENERATED(ti);
return;
}
@@ -1781,18 +1796,23 @@ dissect_rlc_dcch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
dissect_rlc_ps_dtch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti = NULL;
+ proto_item *ti = NULL;
proto_tree *subtree = NULL;
- fp_info *fpi;
- rlc_info *rlci;
+ fp_info *fpi;
+ rlc_info *rlci;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "RLC");
col_clear(pinfo->cinfo, COL_INFO);
- fpi = p_get_proto_data(pinfo->fd, proto_fp);
+ fpi = p_get_proto_data(pinfo->fd, proto_fp);
rlci = p_get_proto_data(pinfo->fd, proto_rlc);
- if (!fpi || !rlci) return;
+ if (!fpi || !rlci) {
+ ti = proto_tree_add_text(tree, tvb, 0, -1,
+ "Can't dissect RLC frame because no per-frame info was attached!");
+ PROTO_ITEM_SET_GENERATED(ti);
+ return;
+ }
if (tree) {
ti = proto_tree_add_item(tree, proto_rlc, tvb, 0, -1, ENC_NA);
@@ -1818,10 +1838,10 @@ dissect_rlc_ps_dtch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
dissect_rlc_dch_unknown(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti = NULL;
+ proto_item *ti = NULL;
proto_tree *subtree = NULL;
- fp_info *fpi;
- rlc_info *rlci;
+ fp_info *fpi;
+ rlc_info *rlci;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "RLC");
col_clear(pinfo->cinfo, COL_INFO);
@@ -1857,18 +1877,18 @@ dissect_rlc_dch_unknown(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static gboolean
dissect_rlc_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- gint offset = 0;
- fp_info *fpi;
- rlc_info *rlci;
- tvbuff_t *rlc_tvb;
- guint8 tag = 0;
- guint channelType = UMTS_CHANNEL_TYPE_UNSPECIFIED;
- gboolean fpInfoAlreadySet = FALSE;
- gboolean rlcInfoAlreadySet = FALSE;
- gboolean channelTypePresent = FALSE;
- gboolean rlcModePresent = FALSE;
- proto_item *ti = NULL;
- proto_tree *subtree = NULL;
+ gint offset = 0;
+ fp_info *fpi;
+ rlc_info *rlci;
+ tvbuff_t *rlc_tvb;
+ guint8 tag = 0;
+ guint channelType = UMTS_CHANNEL_TYPE_UNSPECIFIED;
+ gboolean fpInfoAlreadySet = FALSE;
+ gboolean rlcInfoAlreadySet = FALSE;
+ gboolean channelTypePresent = FALSE;
+ gboolean rlcModePresent = FALSE;
+ proto_item *ti = NULL;
+ proto_tree *subtree = NULL;
/* This is a heuristic dissector, which means we get all the UDP
* traffic not sent to a known dissector and not claimed by
@@ -1964,11 +1984,11 @@ dissect_rlc_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
p_add_proto_data(pinfo->fd, proto_rlc, rlci);
}
- /**************************************/
- /* OK, now dissect as RLC */
+ /**************************************/
+ /* OK, now dissect as RLC */
- /* Create tvb that starts at actual RLC PDU */
- rlc_tvb = tvb_new_subset(tvb, offset, -1, tvb_reported_length(tvb)-offset);
+ /* Create tvb that starts at actual RLC PDU */
+ rlc_tvb = tvb_new_subset(tvb, offset, -1, tvb_reported_length(tvb)-offset);
switch (channelType) {
case UMTS_CHANNEL_TYPE_UNSPECIFIED:
/* Call relevant dissector according to RLC mode */
@@ -2012,7 +2032,7 @@ dissect_rlc_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
return FALSE;
}
- return TRUE;
+ return TRUE;
}
void
@@ -2021,43 +2041,145 @@ proto_register_rlc(void)
module_t *rlc_module;
static hf_register_info hf[] = {
- { &hf_rlc_dc, { "D/C Bit", "rlc.dc", FT_BOOLEAN, 8, TFS(&rlc_dc_val), 0, NULL, HFILL } },
- { &hf_rlc_ctrl_type, { "Control PDU Type", "rlc.ctrl_pdu_type", FT_UINT8, BASE_DEC, VALS(rlc_ctrl_vals), 0, "PDU Type", HFILL } },
- { &hf_rlc_r1, { "Reserved 1", "rlc.r1", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } },
- { &hf_rlc_rsn, { "Reset Sequence Number", "rlc.rsn", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } },
- { &hf_rlc_hfni, { "Hyper Frame Number Indicator", "rlc.hfni", FT_UINT24, BASE_DEC, NULL, 0, NULL, HFILL } },
- { &hf_rlc_seq, { "Sequence Number", "rlc.seq", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } },
- { &hf_rlc_ext, { "Extension Bit", "rlc.ext", FT_BOOLEAN, BASE_DEC, TFS(&rlc_ext_val), 0, NULL, HFILL } },
- { &hf_rlc_he, { "Header Extension Type", "rlc.he", FT_UINT8, BASE_DEC, VALS(rlc_he_vals), 0, NULL, HFILL } },
- { &hf_rlc_p, { "Polling Bit", "rlc.p", FT_BOOLEAN, 8, TFS(&rlc_p_val), 0, NULL, HFILL } },
- { &hf_rlc_pad, { "Padding", "rlc.padding", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL } },
- { &hf_rlc_frags, { "Reassembled Fragments", "rlc.fragments", FT_NONE, BASE_NONE, NULL, 0, "Fragments", HFILL } },
- { &hf_rlc_frag, { "RLC Fragment", "rlc.fragment", FT_FRAMENUM, BASE_NONE, NULL, 0, NULL, HFILL } },
- { &hf_rlc_duplicate_of, { "Duplicate of", "rlc.duplicate_of", FT_FRAMENUM, BASE_NONE, NULL, 0, NULL, HFILL } },
- { &hf_rlc_reassembled_in, { "Reassembled Message in frame", "rlc.reassembled_in", FT_FRAMENUM, BASE_NONE, NULL, 0, NULL, HFILL } },
- { &hf_rlc_data, { "Data", "rlc.data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL } },
+ { &hf_rlc_dc,
+ { "D/C Bit", "rlc.dc",
+ FT_BOOLEAN, BASE_NONE, TFS(&rlc_dc_val), 0, NULL, HFILL }
+ },
+ { &hf_rlc_ctrl_type,
+ { "Control PDU Type", "rlc.ctrl_pdu_type",
+ FT_UINT8, BASE_DEC, VALS(rlc_ctrl_vals), 0, "PDU Type", HFILL }
+ },
+ { &hf_rlc_r1,
+ { "Reserved 1", "rlc.r1",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rlc_rsn,
+ { "Reset Sequence Number", "rlc.rsn",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rlc_hfni,
+ { "Hyper Frame Number Indicator", "rlc.hfni",
+ FT_UINT24, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rlc_seq,
+ { "Sequence Number", "rlc.seq",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rlc_ext,
+ { "Extension Bit", "rlc.ext",
+ FT_BOOLEAN, BASE_NONE, TFS(&rlc_ext_val), 0, NULL, HFILL }
+ },
+ { &hf_rlc_he,
+ { "Header Extension Type", "rlc.he",
+ FT_UINT8, BASE_DEC, VALS(rlc_he_vals), 0, NULL, HFILL }
+ },
+ { &hf_rlc_p,
+ { "Polling Bit", "rlc.p",
+ FT_BOOLEAN, BASE_NONE, TFS(&rlc_p_val), 0, NULL, HFILL }
+ },
+ { &hf_rlc_pad,
+ { "Padding", "rlc.padding",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rlc_frags,
+ { "Reassembled Fragments", "rlc.fragments",
+ FT_NONE, BASE_NONE, NULL, 0, "Fragments", HFILL }
+ },
+ { &hf_rlc_frag,
+ { "RLC Fragment", "rlc.fragment",
+ FT_FRAMENUM, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rlc_duplicate_of,
+ { "Duplicate of", "rlc.duplicate_of",
+ FT_FRAMENUM, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rlc_reassembled_in,
+ { "Reassembled Message in frame", "rlc.reassembled_in",
+ FT_FRAMENUM, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rlc_data,
+ { "Data", "rlc.data",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
/* LI information */
- { &hf_rlc_li, { "LI", "rlc.li", FT_NONE, BASE_NONE, NULL, 0, "Length Indicator", HFILL } },
- { &hf_rlc_li_value, { "LI value", "rlc.li.value", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } },
- { &hf_rlc_li_ext, { "LI extension bit", "rlc.li.ext", FT_BOOLEAN, BASE_DEC, TFS(&rlc_ext_val), 0, NULL, HFILL } },
- { &hf_rlc_li_data, { "LI Data", "rlc.li.data", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL } },
+ { &hf_rlc_li,
+ { "LI", "rlc.li",
+ FT_NONE, BASE_NONE, NULL, 0, "Length Indicator", HFILL }
+ },
+ { &hf_rlc_li_value,
+ { "LI value", "rlc.li.value",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rlc_li_ext,
+ { "LI extension bit", "rlc.li.ext",
+ FT_BOOLEAN, BASE_NONE, TFS(&rlc_ext_val), 0, NULL, HFILL }
+ },
+ { &hf_rlc_li_data,
+ { "LI Data", "rlc.li.data",
+ FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
/* SUFI information */
- { &hf_rlc_sufi, { "SUFI", "rlc.sufi", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL } },
- { &hf_rlc_sufi_type, { "SUFI Type", "rlc.sufi.type", FT_UINT8, BASE_DEC, VALS(rlc_sufi_vals), 0, NULL, HFILL } },
- { &hf_rlc_sufi_lsn, { "Last Sequence Number", "rlc.sufi.lsn", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } },
- { &hf_rlc_sufi_wsn, { "Window Size Number", "rlc.sufi.wsn", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } },
- { &hf_rlc_sufi_sn, { "Sequence Number", "rlc.sufi.sn", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } },
- { &hf_rlc_sufi_l, { "Length", "rlc.sufi.l", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } },
- { &hf_rlc_sufi_len, { "Length", "rlc.sufi.len", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } },
- { &hf_rlc_sufi_fsn, { "First Sequence Number", "rlc.sufi.fsn", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } },
- { &hf_rlc_sufi_bitmap, { "Bitmap", "rlc.sufi.bitmap", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL } },
- { &hf_rlc_sufi_cw, { "Codeword", "rlc.sufi.cw", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } },
- { &hf_rlc_sufi_n, { "Nlength", "rlc.sufi.n", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } },
- { &hf_rlc_sufi_sn_ack, { "SN ACK", "rlc.sufi.sn_ack", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } },
- { &hf_rlc_sufi_sn_mrw, { "SN MRW", "rlc.sufi.sn_mrw", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } },
- { &hf_rlc_sufi_poll_sn, { "Poll SN", "rlc.sufi.poll_sn", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } },
+ { &hf_rlc_sufi,
+ { "SUFI", "rlc.sufi",
+ FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rlc_sufi_type,
+ { "SUFI Type", "rlc.sufi.type",
+ FT_UINT8, BASE_DEC, VALS(rlc_sufi_vals), 0, NULL, HFILL }
+ },
+ { &hf_rlc_sufi_lsn,
+ { "Last Sequence Number", "rlc.sufi.lsn",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rlc_sufi_wsn,
+ { "Window Size Number", "rlc.sufi.wsn",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rlc_sufi_sn,
+ { "Sequence Number", "rlc.sufi.sn",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rlc_sufi_l,
+ { "Length", "rlc.sufi.l",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rlc_sufi_len,
+ { "Length", "rlc.sufi.len",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rlc_sufi_fsn,
+ { "First Sequence Number", "rlc.sufi.fsn",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rlc_sufi_bitmap,
+ { "Bitmap", "rlc.sufi.bitmap",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rlc_sufi_cw,
+ { "Codeword", "rlc.sufi.cw",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rlc_sufi_n,
+ { "Nlength", "rlc.sufi.n",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rlc_sufi_sn_ack,
+ { "SN ACK", "rlc.sufi.sn_ack",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rlc_sufi_sn_mrw,
+ { "SN MRW", "rlc.sufi.sn_mrw",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rlc_sufi_poll_sn,
+ { "Poll SN", "rlc.sufi.poll_sn",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
/* Other information */
- { &hf_rlc_header_only, { "RLC PDU header only", "rlc.header_only", FT_BOOLEAN, BASE_DEC, TFS(&rlc_header_only_val), 0 ,NULL, HFILL } },
+ { &hf_rlc_header_only,
+ { "RLC PDU header only", "rlc.header_only",
+ FT_BOOLEAN, BASE_NONE, TFS(&rlc_header_only_val), 0 ,NULL, HFILL }
+ },
};
static gint *ett[] = {
&ett_rlc,
@@ -2069,11 +2191,11 @@ proto_register_rlc(void)
&ett_rlc_rlist
};
proto_rlc = proto_register_protocol("Radio Link Control", "RLC", "rlc");
- register_dissector("rlc.pcch", dissect_rlc_pcch, proto_rlc);
- register_dissector("rlc.ccch", dissect_rlc_ccch, proto_rlc);
- register_dissector("rlc.ctch", dissect_rlc_ctch, proto_rlc);
- register_dissector("rlc.dcch", dissect_rlc_dcch, proto_rlc);
- register_dissector("rlc.ps_dtch", dissect_rlc_ps_dtch, proto_rlc);
+ register_dissector("rlc.pcch", dissect_rlc_pcch, proto_rlc);
+ register_dissector("rlc.ccch", dissect_rlc_ccch, proto_rlc);
+ register_dissector("rlc.ctch", dissect_rlc_ctch, proto_rlc);
+ register_dissector("rlc.dcch", dissect_rlc_dcch, proto_rlc);
+ register_dissector("rlc.ps_dtch", dissect_rlc_ps_dtch, proto_rlc);
register_dissector("rlc.dch_unknown", dissect_rlc_dch_unknown, proto_rlc);
proto_register_field_array(proto_rlc, hf, array_length(hf));
@@ -2106,7 +2228,7 @@ void
proto_reg_handoff_rlc(void)
{
rrc_handle = find_dissector("rrc");
- ip_handle = find_dissector("ip");
+ ip_handle = find_dissector("ip");
bmc_handle = find_dissector("bmc");
/* Add as a heuristic UDP dissector */
heur_dissector_add("udp", dissect_rlc_heur, proto_rlc);
diff --git a/epan/dissectors/packet-rlc.h b/epan/dissectors/packet-rlc.h
index c612578438..7801af0ee3 100644
--- a/epan/dissectors/packet-rlc.h
+++ b/epan/dissectors/packet-rlc.h
@@ -21,12 +21,17 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+/* Do not change enum order and append only to keep
+ backward compatibility with UDP framing format */
enum rlc_mode {
RLC_TM,
RLC_UM,
- RLC_AM
+ RLC_AM,
+ RLC_UNKNOWN_MODE
};
+/* Do not change enum order and append only to keep
+ backward compatibility with UDP framing format */
enum rlc_li_size {
RLC_LI_VARIABLE,
RLC_LI_7BITS,
diff --git a/epan/dissectors/packet-rlm.c b/epan/dissectors/packet-rlm.c
index d1d7f17a8a..0ea593a6bf 100644
--- a/epan/dissectors/packet-rlm.c
+++ b/epan/dissectors/packet-rlm.c
@@ -51,9 +51,8 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/xdlc.h>
@@ -140,23 +139,23 @@ dissect_rlm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
switch (rlm_type) {
case RLM_START_REQUEST:
type_str = "Start request";
- break;;
+ break;
case RLM_START_ACK:
type_str = "Start acknowledgement";
- break;;
+ break;
case RLM_ECHO_REQUEST:
type_str = "Echo request";
- break;;
+ break;
case RLM_ECHO_REPLY:
type_str = "Echo reply";
- break;;
+ break;
default:
type_str = "Unknown type";
- break;;
+ break;
}
col_set_str(pinfo->cinfo, COL_INFO, type_str);
diff --git a/epan/dissectors/packet-rmi.c b/epan/dissectors/packet-rmi.c
index 5840c39f7c..9fb34e149f 100644
--- a/epan/dissectors/packet-rmi.c
+++ b/epan/dissectors/packet-rmi.c
@@ -27,7 +27,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
#include <string.h>
#include <glib.h>
diff --git a/epan/dissectors/packet-rmp.c b/epan/dissectors/packet-rmp.c
index 8cf52f4419..81b19b8461 100644
--- a/epan/dissectors/packet-rmp.c
+++ b/epan/dissectors/packet-rmp.c
@@ -139,7 +139,7 @@ dissect_rmp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
return;
len = tvb_get_guint8(tvb, 30);
proto_tree_add_item(rmp_tree,
- hf_rmp_filename, tvb, 30, 1, ENC_ASCII|ENC_BIG_ENDIAN);
+ hf_rmp_filename, tvb, 30, 1, ENC_ASCII|ENC_NA);
if(tvb_offset_exists(tvb, len+31))
call_dissector(data_handle,
tvb_new_subset_remaining(tvb, len+31),
@@ -157,7 +157,7 @@ dissect_rmp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
hf_rmp_version, tvb, 8, 2, ENC_BIG_ENDIAN);
len = tvb_get_guint8(tvb, 10);
proto_tree_add_item(rmp_tree,
- hf_rmp_filename, tvb, 10, 1, ENC_ASCII|ENC_BIG_ENDIAN);
+ hf_rmp_filename, tvb, 10, 1, ENC_ASCII|ENC_NA);
if(tvb_offset_exists(tvb, len+11))
call_dissector(data_handle,
tvb_new_subset_remaining(tvb, len+11),
diff --git a/epan/dissectors/packet-rmt-alc.c b/epan/dissectors/packet-rmt-alc.c
index 09b44e09ad..7c1850d5eb 100644
--- a/epan/dissectors/packet-rmt-alc.c
+++ b/epan/dissectors/packet-rmt-alc.c
@@ -42,7 +42,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
#include <string.h>
#include <glib.h>
diff --git a/epan/dissectors/packet-rmt-common.c b/epan/dissectors/packet-rmt-common.c
index e0b12d7567..c65b8f7029 100644
--- a/epan/dissectors/packet-rmt-common.c
+++ b/epan/dissectors/packet-rmt-common.c
@@ -28,7 +28,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
#include <string.h>
#include <glib.h>
diff --git a/epan/dissectors/packet-rmt-fec.c b/epan/dissectors/packet-rmt-fec.c
index 47f59e5272..aa45702952 100644
--- a/epan/dissectors/packet-rmt-fec.c
+++ b/epan/dissectors/packet-rmt-fec.c
@@ -42,8 +42,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
@@ -55,11 +53,17 @@
const value_string string_fec_encoding_id[] =
{
{ 0, "Compact No-Code" },
- { 2, "Simple XOR, Reed-Solomon, and Parity Check Matrix-based FEC Codes" },
+ { 1, "Raptor" },
+ { 2, "Reed-Solomon Codes over GF(2^^m)" },
+ { 3, "LDPC Staircase Codes" },
+ { 4, "LDPC Triangle Codes" },
+ { 5, "Reed-Solomon Codes over GF(2^^8)" },
+ { 6, "RaptorQ Code" },
+ /* 7-127 Unassigned */
{ 128, "Small Block, Large Block and Expandable FEC Codes" },
{ 129, "Small Block Systematic FEC Codes" },
{ 130, "Compact FEC Codes" },
- { 132, "Simple XOR, Reed-Solomon, and Parity Check Matrix-based FEC Codes" },
+ /* 131-255 Unassigned */
{ 0, NULL }
};
@@ -84,7 +88,7 @@ void fec_info_column(struct _fec *fec, packet_info *pinfo)
/* Decode an EXT_FTI extension and fill FEC array */
void fec_decode_ext_fti(struct _ext *e, tvbuff_t *tvb, proto_tree *tree, gint ett, struct _fec_ptr f)
{
- proto_item* ti = NULL;
+ proto_item* ti = NULL, *item = NULL;
proto_tree *ext_tree;
if (tree)
@@ -106,8 +110,13 @@ void fec_decode_ext_fti(struct _ext *e, tvbuff_t *tvb, proto_tree *tree, gint et
f.fec->instance_id = (guint8) tvb_get_ntohs(tvb, e->offset+8);
}
- if (tree)
+ if (tree){
proto_tree_add_uint64(ext_tree, f.hf->fti_transfer_length, tvb, e->offset+2, 6, f.fec->transfer_length);
+ item = proto_tree_add_item(ext_tree, f.hf->instance_id, tvb, e->offset+8, 2, ENC_BIG_ENDIAN);
+ if(f.fec->instance_id_present == FALSE){
+ proto_item_append_text(item," - [FEC Encoding ID < 128, should be zero]");
+ }
+ }
switch (f.fec->encoding_id)
{
@@ -230,6 +239,24 @@ void fec_dissector(struct _fec_ptr f, tvbuff_t *tvb, proto_tree *tree, guint *of
*offset += 8;
break;
+ case 3:
+ case 4:
+ f.fec->sbn = tvb_get_ntohl(tvb, *offset);
+ f.fec->sbn = f.fec->sbn >> 20;
+ f.fec->esi = tvb_get_ntohl(tvb, *offset);
+ f.fec->esi &= 0xfffff;
+
+ if (tree)
+ {
+ proto_tree_add_uint(fec_tree, f.hf->sbn, tvb, *offset, 4, f.fec->sbn);
+ proto_tree_add_uint(fec_tree, f.hf->esi, tvb, *offset, 4, f.fec->esi);
+ }
+
+ f.fec->sbn_present = TRUE;
+ f.fec->esi_present = TRUE;
+ *offset += 4;
+ break;
+
case 129:
f.fec->sbn = tvb_get_ntohl(tvb, *offset);
f.fec->sbl = tvb_get_ntohs(tvb, *offset+4);
diff --git a/epan/dissectors/packet-rmt-lct.c b/epan/dissectors/packet-rmt-lct.c
index c8e96b31a7..d5799c8d7f 100644
--- a/epan/dissectors/packet-rmt-lct.c
+++ b/epan/dissectors/packet-rmt-lct.c
@@ -42,8 +42,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-rmt-lct.h b/epan/dissectors/packet-rmt-lct.h
index de25b08101..5a34632489 100644
--- a/epan/dissectors/packet-rmt-lct.h
+++ b/epan/dissectors/packet-rmt-lct.h
@@ -153,7 +153,7 @@ struct _lct_ptr
{ &base_structure.tsi, \
{ "Transport Session Identifier", base_protocol ".lct.tsi", FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }}, \
{ &base_structure.toi, \
- { "Transport Object Identifier (up to 64 bites)", base_protocol ".lct.toi", FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }}, \
+ { "Transport Object Identifier (up to 64 bits)", base_protocol ".lct.toi", FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }}, \
{ &base_structure.toi_extended, \
{ "Transport Object Identifier (up to 112 bits)", base_protocol ".lct.toi_extended", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }}, \
{ &base_structure.sct, \
diff --git a/epan/dissectors/packet-rmt-norm.c b/epan/dissectors/packet-rmt-norm.c
index 58d0072a6c..02e1c4e8e4 100644
--- a/epan/dissectors/packet-rmt-norm.c
+++ b/epan/dissectors/packet-rmt-norm.c
@@ -43,7 +43,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
#include <string.h>
#include <glib.h>
@@ -59,38 +58,38 @@
/* String tables */
static const value_string string_norm_type[] =
{
- { NORM_INFO, "INFO" },
- { NORM_DATA, "DATA" },
- { NORM_CMD, "CMD" },
- { NORM_NACK, "NACK" },
- { NORM_ACK, "ACK" },
+ { NORM_INFO, "INFO" },
+ { NORM_DATA, "DATA" },
+ { NORM_CMD, "CMD" },
+ { NORM_NACK, "NACK" },
+ { NORM_ACK, "ACK" },
{ NORM_REPORT, "REPORT" },
{ 0, NULL }
};
static const value_string string_norm_cmd_type[] =
{
- { NORM_CMD_FLUSH, "FLUSH" },
- { NORM_CMD_EOT, "EOT" },
- { NORM_CMD_SQUELCH, "SQUELCH" },
- { NORM_CMD_CC, "CC" },
- { NORM_CMD_REPAIR_ADV, "REPAIR_ADV" },
- { NORM_CMD_ACK_REQ, "ACK_REQ" },
+ { NORM_CMD_FLUSH, "FLUSH" },
+ { NORM_CMD_EOT, "EOT" },
+ { NORM_CMD_SQUELCH, "SQUELCH" },
+ { NORM_CMD_CC, "CC" },
+ { NORM_CMD_REPAIR_ADV, "REPAIR_ADV" },
+ { NORM_CMD_ACK_REQ, "ACK_REQ" },
{ NORM_CMD_APPLICATION, "APPLICATION" },
{ 0, NULL }
};
static const value_string string_norm_ack_type[] =
{
- { NORM_ACK_CC, "ACK CC" },
+ { NORM_ACK_CC, "ACK CC" },
{ NORM_ACK_FLUSH, "ACK FLUSH" },
{ 0, NULL }
};
static const value_string string_norm_nack_form[] =
{
- { NORM_NACK_ITEMS, "Items" },
- { NORM_NACK_RANGES, "Ranges" },
+ { NORM_NACK_ITEMS, "Items" },
+ { NORM_NACK_RANGES, "Ranges" },
{ NORM_NACK_ERASURES, "Erasures" },
{ 0, NULL }
};
diff --git a/epan/dissectors/packet-rnsap.c b/epan/dissectors/packet-rnsap.c
index 910c58a71b..489b38a51f 100644
--- a/epan/dissectors/packet-rnsap.c
+++ b/epan/dissectors/packet-rnsap.c
@@ -46,6 +46,7 @@
#include <epan/asn1.h>
#include "packet-per.h"
+#include "packet-ber.h"
#ifdef _MSC_VER
/* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */
@@ -1133,7 +1134,7 @@ typedef enum _ProtocolIE_ID_enum {
} ProtocolIE_ID_enum;
/*--- End of included file: packet-rnsap-val.h ---*/
-#line 54 "../../asn1/rnsap/packet-rnsap-template.c"
+#line 55 "../../asn1/rnsap/packet-rnsap-template.c"
static dissector_handle_t rrc_dl_dcch_handle = NULL;
@@ -1873,7 +1874,7 @@ static int hf_rnsap_PrivateMessage_PDU = -1; /* PrivateMessage */
static int hf_rnsap_RNSAP_PDU_PDU = -1; /* RNSAP_PDU */
static int hf_rnsap_NULL_PDU = -1; /* NULL */
static int hf_rnsap_local = -1; /* INTEGER_0_maxPrivateIEs */
-static int hf_rnsap_global = -1; /* OBJECT_IDENTIFIER */
+static int hf_rnsap_global = -1; /* T_global */
static int hf_rnsap_procedureCode = -1; /* ProcedureCode */
static int hf_rnsap_ddMode = -1; /* DdMode */
static int hf_rnsap_shortTransActionId = -1; /* INTEGER_0_127 */
@@ -3870,7 +3871,7 @@ static int hf_rnsap_value_04 = -1; /* UnsuccessfulOutcome_value *
static int hf_rnsap_value_05 = -1; /* Outcome_value */
/*--- End of included file: packet-rnsap-hf.c ---*/
-#line 61 "../../asn1/rnsap/packet-rnsap-template.c"
+#line 62 "../../asn1/rnsap/packet-rnsap-template.c"
/* Initialize the subtree pointers */
static int ett_rnsap = -1;
@@ -5157,13 +5158,15 @@ static gint ett_rnsap_UnsuccessfulOutcome = -1;
static gint ett_rnsap_Outcome = -1;
/*--- End of included file: packet-rnsap-ett.c ---*/
-#line 66 "../../asn1/rnsap/packet-rnsap-template.c"
+#line 67 "../../asn1/rnsap/packet-rnsap-template.c"
/* Global variables */
static guint32 ProcedureCode;
static guint32 ProtocolIE_ID;
static guint32 ddMode;
static const gchar *ProcedureID;
+static const char *obj_id = NULL;
+
/* Dissector tables */
static dissector_table_t rnsap_ies_dissector_table;
@@ -5174,6 +5177,7 @@ static dissector_table_t rnsap_proc_uout_dissector_table;
static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
+static int dissect_PrivateIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
@@ -5211,8 +5215,8 @@ dissect_rnsap_INTEGER_0_maxPrivateIEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
static int
-dissect_rnsap_OBJECT_IDENTIFIER(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_per_object_identifier(tvb, offset, actx, tree, hf_index, NULL);
+dissect_rnsap_T_global(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_object_identifier_str(tvb, offset, actx, tree, hf_index, &obj_id);
return offset;
}
@@ -5226,7 +5230,7 @@ static const value_string rnsap_PrivateIE_ID_vals[] = {
static const per_choice_t PrivateIE_ID_choice[] = {
{ 0, &hf_rnsap_local , ASN1_NO_EXTENSIONS , dissect_rnsap_INTEGER_0_maxPrivateIEs },
- { 1, &hf_rnsap_global , ASN1_NO_EXTENSIONS , dissect_rnsap_OBJECT_IDENTIFIER },
+ { 1, &hf_rnsap_global , ASN1_NO_EXTENSIONS , dissect_rnsap_T_global },
{ 0, NULL, 0, NULL }
};
@@ -5308,7 +5312,7 @@ dissect_rnsap_ProcedureCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 255U, &ProcedureCode, FALSE);
-#line 77 "../../asn1/rnsap/rnsap.cnf"
+#line 79 "../../asn1/rnsap/rnsap.cnf"
col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%s ",
val_to_str_ext_const(ProcedureCode, &rnsap_ProcedureCode_vals_ext,
"unknown message"));
@@ -5342,7 +5346,7 @@ static const per_sequence_t ProcedureID_sequence[] = {
static int
dissect_rnsap_ProcedureID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 84 "../../asn1/rnsap/rnsap.cnf"
+#line 86 "../../asn1/rnsap/rnsap.cnf"
ProcedureCode = 0xFFFF;
ddMode = 0xFFFF;
ProcedureID = NULL;
@@ -5350,7 +5354,7 @@ dissect_rnsap_ProcedureID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rnsap_ProcedureID, ProcedureID_sequence);
-#line 90 "../../asn1/rnsap/rnsap.cnf"
+#line 92 "../../asn1/rnsap/rnsap.cnf"
ProcedureID = ep_strdup_printf("%s/%s",
val_to_str_ext(ProcedureCode, &rnsap_ProcedureCode_vals_ext, "unknown(%u)"),
val_to_str(ddMode, rnsap_DdMode_vals, "unknown(%u)"));
@@ -6402,7 +6406,7 @@ dissect_rnsap_ProtocolExtensionContainer(tvbuff_t *tvb _U_, int offset _U_, asn1
static int
dissect_rnsap_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL);
+ offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_PrivateIEFieldValue);
return offset;
}
@@ -22929,7 +22933,7 @@ dissect_rnsap_List_Of_PLMNs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static int
dissect_rnsap_L3_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 103 "../../asn1/rnsap/rnsap.cnf"
+#line 105 "../../asn1/rnsap/rnsap.cnf"
tvbuff_t *parameter_tvb;
dissector_handle_t parameter_handle = NULL;
@@ -43143,7 +43147,7 @@ static int dissect_NULL_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tre
/*--- End of included file: packet-rnsap-fn.c ---*/
-#line 87 "../../asn1/rnsap/packet-rnsap-template.c"
+#line 91 "../../asn1/rnsap/packet-rnsap-template.c"
static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
@@ -43155,6 +43159,11 @@ static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_in
return (dissector_try_uint(rnsap_extension_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
}
+static int dissect_PrivateIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ return (call_ber_oid_callback(obj_id, tvb, 0, pinfo, tree)) ? tvb_length(tvb) : 0;
+}
+
static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
if (!ProcedureID) return 0;
@@ -46121,7 +46130,7 @@ void proto_register_rnsap(void) {
{ &hf_rnsap_global,
{ "global", "rnsap.global",
FT_OID, BASE_NONE, NULL, 0,
- "OBJECT_IDENTIFIER", HFILL }},
+ NULL, HFILL }},
{ &hf_rnsap_procedureCode,
{ "procedureCode", "rnsap.procedureCode",
FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rnsap_ProcedureCode_vals_ext, 0,
@@ -54100,7 +54109,7 @@ void proto_register_rnsap(void) {
"Outcome_value", HFILL }},
/*--- End of included file: packet-rnsap-hfarr.c ---*/
-#line 139 "../../asn1/rnsap/packet-rnsap-template.c"
+#line 148 "../../asn1/rnsap/packet-rnsap-template.c"
};
/* List of subtrees */
@@ -55388,7 +55397,7 @@ void proto_register_rnsap(void) {
&ett_rnsap_Outcome,
/*--- End of included file: packet-rnsap-ettarr.c ---*/
-#line 145 "../../asn1/rnsap/packet-rnsap-template.c"
+#line 154 "../../asn1/rnsap/packet-rnsap-template.c"
};
@@ -56224,7 +56233,7 @@ proto_reg_handoff_rnsap(void)
/*--- End of included file: packet-rnsap-dis-tab.c ---*/
-#line 184 "../../asn1/rnsap/packet-rnsap-template.c"
+#line 193 "../../asn1/rnsap/packet-rnsap-template.c"
}
diff --git a/epan/dissectors/packet-rohc.c b/epan/dissectors/packet-rohc.c
index e938d9319d..55dd345df6 100644
--- a/epan/dissectors/packet-rohc.c
+++ b/epan/dissectors/packet-rohc.c
@@ -317,11 +317,12 @@ dissect_rohc_pkt_type_0(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
* | 0 | SN | CRC |
* +===+===+===+===+===+===+===+===+
*/
- col_set_str(pinfo->cinfo, COL_INFO, "U0-0");
+ col_set_str(pinfo->cinfo, COL_INFO, "UO-0");
sn = tvb_get_bits8(tvb,(offset<<3)+1, 4);
proto_tree_add_bits_item(tree, hf_rohc_comp_sn, tvb, (offset<<3)+1, 4, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(tree, hf_rohc_r_0_crc, tvb, (offset<<3)+5, 3, ENC_BIG_ENDIAN);
offset++;
+
/* Show SN in info column */
col_append_fstr(pinfo->cinfo, COL_INFO, " (sn=%u)", sn);
break;
@@ -1115,9 +1116,7 @@ dissect_rohc_ir_rtp_udp_profile_static(tvbuff_t *tvb, proto_tree *tree, packet_i
sub_tree = proto_item_add_subtree(item, ett_rohc_rtp_static);
version = tvb_get_guint8(tvb,offset)>>4;
proto_tree_add_item(sub_tree, hf_rohc_ip_version, tvb, offset, 1, ENC_BIG_ENDIAN);
- if (rohc_cid_context) {
- rohc_cid_context->rohc_ip_version = version;
- }
+ rohc_cid_context->rohc_ip_version = version;
switch(version) {
case 4:
@@ -1150,8 +1149,8 @@ dissect_rohc_ir_rtp_udp_profile_static(tvbuff_t *tvb, proto_tree *tree, packet_i
/* Add summary to root item */
proto_item_append_text(ipv4_item, " (prot=%s: %s -> %s)",
val_to_str_ext_const(protocol, &ipproto_val_ext, "Unknown"),
- (char*)get_hostname(source),
- (char*)get_hostname(dest));
+ get_hostname(source),
+ get_hostname(dest));
}
break;
case 6:
@@ -1177,7 +1176,7 @@ dissect_rohc_ir_rtp_udp_profile_static(tvbuff_t *tvb, proto_tree *tree, packet_i
offset+=3;
/* Next Header */
- protocol = tvb_get_guint8(tvb, offset);
+ /* protocol = tvb_get_guint8(tvb, offset); */
proto_tree_add_item(sub_tree, hf_rohc_ipv6_nxt_hdr, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
@@ -1267,6 +1266,7 @@ dissect_rohc_ir_packet(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
{
proto_item *ir_item, *item;
proto_tree *ir_tree;
+ int ir_item_start;
int x_bit_offset;
gboolean d = FALSE;
guint8 oct, profile, val_len;
@@ -1317,6 +1317,7 @@ dissect_rohc_ir_packet(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
}
ir_item = proto_tree_add_item(tree, hf_rohc_ir_packet, tvb, offset, 1, ENC_BIG_ENDIAN);
ir_tree = proto_item_add_subtree(ir_item, ett_rohc_ir);
+ ir_item_start = offset;
d = oct & 0x01;
x_bit_offset = offset;
offset++;
@@ -1413,6 +1414,9 @@ dissect_rohc_ir_packet(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
break;
}
+ /* Set length of IR header */
+ proto_item_set_len(ir_item, offset-ir_item_start);
+
return offset;
}
@@ -1422,6 +1426,7 @@ dissect_rohc_ir_dyn_packet(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
{
proto_item *ir_item, *item;
proto_tree *ir_tree;
+ gint ir_item_start;
guint8 profile, val_len;
gint16 feedback_data_len = 0;
rohc_cid_context_t *rohc_cid_context;
@@ -1433,6 +1438,7 @@ dissect_rohc_ir_dyn_packet(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
ir_item = proto_tree_add_item(tree, hf_rohc_ir_dyn_packet, tvb, offset, 1, ENC_BIG_ENDIAN);
ir_tree = proto_item_add_subtree(ir_item, ett_rohc_ir_dyn);
+ ir_item_start = offset;
offset++;
if(p_rohc_info->large_cid_present == TRUE){
@@ -1498,15 +1504,19 @@ dissect_rohc_ir_dyn_packet(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
switch(profile){
case ROHC_PROFILE_RTP:
- dissect_rohc_ir_rtp_profile_dynamic(tvb, pinfo, ir_tree, offset, profile, rohc_cid_context);
+ offset = dissect_rohc_ir_rtp_profile_dynamic(tvb, pinfo, ir_tree, offset, profile, rohc_cid_context);
break;
default:
proto_tree_add_text(ir_tree, tvb, offset, feedback_data_len, "profile-specific information[Not dissected yet]");
break;
}
- return offset;
+ /* Set length of IR-DYN header */
+ proto_item_set_len(ir_item, offset-ir_item_start);
+
+ return offset;
}
+
static void
dissect_rohc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
@@ -1642,8 +1652,10 @@ start_over:
* the header MUST be discarded without further action.
*/
+ int feedback_start = offset;
+
if(is_add_cid){
- proto_tree_add_item(rohc_tree, hf_rohc_feedback, tvb, offset, 1, ENC_BIG_ENDIAN);
+ p_rohc_info->last_created_item = proto_tree_add_item(rohc_tree, hf_rohc_feedback, tvb, offset, 1, ENC_BIG_ENDIAN);
col_append_str(pinfo->cinfo, COL_INFO, "Error packet");
proto_tree_add_text(rohc_tree, tvb, offset, -1, "Error packet");
pinfo->private_data = save_private_data;
@@ -1698,6 +1710,9 @@ start_over:
if(offset<length)
goto start_over;
pinfo->private_data = save_private_data;
+
+ proto_item_set_len(p_rohc_info->last_created_item, offset-feedback_start);
+
return;
}
}/*feedback */
@@ -1734,7 +1749,7 @@ start_over:
col_append_str(pinfo->cinfo, COL_INFO, "IR-DYN packet");
offset = dissect_rohc_ir_dyn_packet(tvb, rohc_tree, pinfo, offset, cid, is_add_cid, p_rohc_info);
if(offset == -1){
- /* Could not pare header */
+ /* Could not parse header */
return;
}
/*proto_tree_add_text(rohc_tree, tvb, offset, -1, "Data");*/
@@ -1761,15 +1776,16 @@ start_over:
rohc_cid_context->large_cid_present = p_rohc_info->large_cid_present;
rohc_cid_context->prev_ir_frame_number = -1;
rohc_cid_context->ir_frame_number = -1;
- p_add_proto_data(pinfo->fd, proto_rohc, rohc_cid_context);
/*g_warning("Store dummy data %u",cid);*/
}
p_add_proto_data(pinfo->fd, proto_rohc, rohc_cid_context);
+ } else {
+ rohc_cid_context = (rohc_cid_context_t*)p_get_proto_data(pinfo->fd, proto_rohc);
}
/* Call IP for uncompressed*/
next_tvb = tvb_new_subset_remaining(tvb, offset);
- if (((oct&0xf0)==0x40) && (rohc_cid_context->profile==ROHC_PROFILE_UNCOMPRESSED)) {
+ if (((oct&0xf0)==0x40) && (rohc_cid_context->profile==ROHC_PROFILE_UNCOMPRESSED)) {
call_dissector(ip_handle, next_tvb, pinfo, tree);
}
else if (((oct&0xf0)==0x60) && (rohc_cid_context->profile==0)) {
@@ -1778,7 +1794,7 @@ start_over:
else if((oct&0x80)==0x00){
/* XXX Only for RTP profile? */
/* 5.7.1. Packet type 0: UO-0, R-0, R-0-CRC */
- offset = dissect_rohc_pkt_type_0(tvb, pinfo, rohc_tree, offset, oct, rohc_cid_context);
+ dissect_rohc_pkt_type_0(tvb, pinfo, rohc_tree, offset, oct, rohc_cid_context);
}else if ((oct&0xc0)==0x80){
col_set_str(pinfo->cinfo, COL_INFO, "Packet type 1");
}else if ((oct&0xe0)==0xc0){
@@ -1791,7 +1807,7 @@ start_over:
/* Set up rohc_cid_hash which holds data for a CID
* needed to dissect subsequent packages.
* XXXX ToDo:
- * A better Key than just the CID may have to be deviced.
+ * A better Key than just the CID may have to be devised.
*
*/
@@ -1892,13 +1908,13 @@ proto_register_rohc(void)
},
{ &hf_rohc_sn,
{ "SN(lsb)","rohc.sn",
- FT_UINT16, BASE_HEX, NULL, 0x0fff,
+ FT_UINT16, BASE_HEX_DEC, NULL, 0x0fff,
NULL , HFILL
}
},
{ &hf_rohc_fb1_sn,
{ "SN","rohc.fb1_sn",
- FT_UINT16, BASE_HEX, NULL, 0x0,
+ FT_UINT16, BASE_HEX_DEC, NULL, 0x0,
NULL , HFILL
}
},
@@ -1916,7 +1932,7 @@ proto_register_rohc(void)
},
{ &hf_rohc_rtp_crc,
{ "CRC","rohc.crc",
- FT_UINT8, BASE_HEX, NULL, 0x0,
+ FT_UINT8, BASE_HEX_DEC, NULL, 0x0,
NULL , HFILL
}
},
@@ -2024,7 +2040,7 @@ proto_register_rohc(void)
},
{ &hf_rohc_rtp_ssrc,
{ "SSRC","rohc.rtp.ssrc",
- FT_UINT32, BASE_HEX, NULL, 0x0,
+ FT_UINT32, BASE_HEX_DEC, NULL, 0x0,
NULL , HFILL
}
},
diff --git a/epan/dissectors/packet-roofnet.c b/epan/dissectors/packet-roofnet.c
index a4db0b1366..56601151ca 100644
--- a/epan/dissectors/packet-roofnet.c
+++ b/epan/dissectors/packet-roofnet.c
@@ -147,8 +147,8 @@ static void dissect_roofnet_link(proto_tree *tree, tvbuff_t *tvb, guint *offset,
it = proto_tree_add_text(tree, tvb, *offset, ROOFNET_LINK_LEN,
"link: %u, src: %s, dst: %s",
link,
- (char*)get_hostname(addr_src),
- (char*)get_hostname(addr_dst));
+ get_hostname(addr_src),
+ get_hostname(addr_dst));
subtree= proto_item_add_subtree(it, ett_roofnet_link);
proto_tree_add_ipv4(subtree, hf_roofnet_link_src, tvb, *offset, 4, addr_src);
diff --git a/epan/dissectors/packet-rpc.c b/epan/dissectors/packet-rpc.c
index facd92fdc9..bcdbac520b 100644
--- a/epan/dissectors/packet-rpc.c
+++ b/epan/dissectors/packet-rpc.c
@@ -30,8 +30,9 @@
#endif
#include <glib.h>
+
#include <string.h>
-#include <ctype.h>
+
#include <epan/packet.h>
#include <epan/conversation.h>
#include <epan/emem.h>
@@ -45,6 +46,7 @@
#include <epan/tap.h>
#include <epan/strutil.h>
#include <epan/garrayfix.h>
+#include <epan/emem.h>
/*
* See:
@@ -61,6 +63,11 @@
* RFC 2695, "Authentication Mechanisms for ONC RPC"
*
* although we don't currently dissect AUTH_DES or AUTH_KERB.
+ *
+ * RFC 5531, "Appendix C: Current Number Assignments" defines AUTH_RSA.
+ * AUTH_RSA is not implemented for any known RPC-protocols. The Gluster
+ * protocols (ab)use AUTH_RSA for their own AUTH-flavor. AUTH_RSA is
+ * therefore dissected as the inofficial AUTH_GLUSTER.
*/
/* desegmentation of RPC over TCP */
@@ -81,6 +88,8 @@ static gboolean rpc_find_fragment_start = FALSE;
static int rpc_tap = -1;
+static dissector_handle_t spnego_krb5_wrap_handle = NULL;
+
static const value_string rpc_msg_type[] = {
{ RPC_CALL, "Call" },
{ RPC_REPLY, "Reply" },
@@ -98,6 +107,7 @@ const value_string rpc_auth_flavor[] = {
{ AUTH_UNIX, "AUTH_UNIX" },
{ AUTH_SHORT, "AUTH_SHORT" },
{ AUTH_DES, "AUTH_DES" },
+ { AUTH_RSA, "AUTH_RSA/Gluster" },
{ RPCSEC_GSS, "RPCSEC_GSS" },
{ AUTH_GSSAPI, "AUTH_GSSAPI" },
{ RPCSEC_GSS_KRB5, "RPCSEC_GSS_KRB5" },
@@ -109,6 +119,7 @@ const value_string rpc_auth_flavor[] = {
{ RPCSEC_GSS_SPKM3, "RPCSEC_GSS_SPKM3" },
{ RPCSEC_GSS_SPKM3I, "RPCSEC_GSS_SPKM3I" },
{ RPCSEC_GSS_SPKM3P, "RPCSEC_GSS_SPKM3P" },
+ { AUTH_GLUSTERFS, "AUTH_GLUSTERFS" },
{ 0, NULL }
};
@@ -189,6 +200,8 @@ static int hf_rpc_auth_flavor = -1;
static int hf_rpc_auth_length = -1;
static int hf_rpc_auth_machinename = -1;
static int hf_rpc_auth_stamp = -1;
+static int hf_rpc_auth_lk_owner = -1;
+static int hf_rpc_auth_pid = -1;
static int hf_rpc_auth_uid = -1;
static int hf_rpc_auth_gid = -1;
static int hf_rpc_authgss_v = -1;
@@ -196,6 +209,9 @@ static int hf_rpc_authgss_proc = -1;
static int hf_rpc_authgss_seq = -1;
static int hf_rpc_authgss_svc = -1;
static int hf_rpc_authgss_ctx = -1;
+static int hf_rpc_authgss_ctx_create_frame = -1;
+static int hf_rpc_authgss_ctx_destroy_frame = -1;
+static int hf_rpc_authgss_ctx_len = -1;
static int hf_rpc_authgss_major = -1;
static int hf_rpc_authgss_minor = -1;
static int hf_rpc_authgss_window = -1;
@@ -250,6 +266,8 @@ static gint ett_rpc_gss_token = -1;
static gint ett_rpc_gss_data = -1;
static gint ett_rpc_array = -1;
static gint ett_rpc_authgssapi_msg = -1;
+static gint ett_gss_context = -1;
+static gint ett_gss_wrap = -1;
static dissector_handle_t rpc_tcp_handle;
static dissector_handle_t rpc_handle;
@@ -471,6 +489,13 @@ typedef struct _rpc_conv_info_t {
} rpc_conv_info_t;
+/* we can not hang this off the conversation structure above since the context
+ will be reused across all tcp connections between the client and the server.
+ a global tree for all contexts should still be unlikely to have collissions
+ here.
+*/
+emem_tree_t *authgss_contexts = NULL;
+
unsigned int
rpc_roundup(unsigned int a)
{
@@ -548,6 +573,7 @@ dissect_rpc_opaque_data(tvbuff_t *tvb, int offset,
guint32 fill_length_copy;
int exception = 0;
+ /* int string_item_offset; */
char *string_buffer = NULL;
char *string_buffer_print = NULL;
@@ -557,7 +583,7 @@ dissect_rpc_opaque_data(tvbuff_t *tvb, int offset,
data_offset = offset;
}
else {
- string_length = tvb_get_ntohl(tvb,offset+0);
+ string_length = tvb_get_ntohl(tvb,offset);
data_offset = offset + 4;
}
string_length_captured = tvb_length_remaining(tvb, data_offset);
@@ -644,7 +670,8 @@ dissect_rpc_opaque_data(tvbuff_t *tvb, int offset,
}
if (tree) {
- string_item = proto_tree_add_text(tree, tvb,offset+0, -1,
+ /* string_item_offset = offset; */
+ string_item = proto_tree_add_text(tree, tvb,offset, -1,
"%s: %s", proto_registrar_get_name(hfindex),
string_buffer_print);
string_tree = proto_item_add_subtree(string_item,
@@ -652,7 +679,7 @@ dissect_rpc_opaque_data(tvbuff_t *tvb, int offset,
}
if (!fixed_length) {
if (string_tree)
- proto_tree_add_text(string_tree, tvb,offset+0,4,
+ proto_tree_add_text(string_tree, tvb,offset,4,
"length: %u", string_length);
offset += 4;
}
@@ -743,9 +770,9 @@ dissect_rpc_list(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
guint32 value_follows;
while (1) {
- value_follows = tvb_get_ntohl(tvb, offset+0);
+ value_follows = tvb_get_ntohl(tvb, offset);
proto_tree_add_boolean(tree,hf_rpc_value_follows, tvb,
- offset+0, 4, value_follows);
+ offset, 4, value_follows);
offset += 4;
if (value_follows == 1) {
offset = rpc_list_dissector(tvb, offset, pinfo, tree);
@@ -777,7 +804,7 @@ dissect_rpc_array(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
return offset;
}
- lock_item = proto_tree_add_item(tree, hfindex, tvb, offset, -1, FALSE);
+ lock_item = proto_tree_add_item(tree, hfindex, tvb, offset, -1, ENC_NA);
lock_tree = proto_item_add_subtree(lock_item, ett_rpc_array);
@@ -793,93 +820,203 @@ dissect_rpc_array(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
}
static int
-dissect_rpc_authunix_cred(tvbuff_t* tvb, proto_tree* tree, int offset)
+dissect_rpc_authunix_groups(tvbuff_t* tvb, proto_tree* tree, int offset)
{
- guint stamp;
- guint uid;
- guint gid;
guint gids_count;
guint gids_i;
guint gids_entry;
- proto_item *gitem;
+ proto_item *gitem = NULL;
proto_tree *gtree = NULL;
- stamp = tvb_get_ntohl(tvb,offset+0);
+ gids_count = tvb_get_ntohl(tvb,offset);
+ if (tree) {
+ gitem = proto_tree_add_text(tree, tvb, offset,
+ 4+gids_count*4, "Auxiliary GIDs (%d)", gids_count);
+ gtree = proto_item_add_subtree(gitem, ett_rpc_gids);
+ }
+ offset += 4;
+
+ /* first, open with [ */
+ if (tree && gids_count > 0)
+ proto_item_append_text(gitem, " [");
+
+ for (gids_i = 0 ; gids_i < gids_count; gids_i++) {
+ gids_entry = tvb_get_ntohl(tvb,offset);
+ if (gtree) {
+ proto_tree_add_uint(gtree, hf_rpc_auth_gid, tvb,
+ offset, 4, gids_entry);
+ }
+
+ /* add at most 16 GIDs to the text */
+ if (tree && gids_i < 16) {
+ if (gids_i > 0)
+ proto_item_append_text(gitem, ", ");
+
+ proto_item_append_text(gitem, "%d", gids_entry);
+ } else if (tree && gids_i == 16) {
+ proto_item_append_text(gitem, "...");
+ }
+ offset += 4;
+ }
+
+ /* finally, close with ] */
+ if (tree && gids_count > 0)
+ proto_item_append_text(gitem, "]");
+
+ return offset;
+}
+
+static int
+dissect_rpc_authunix_cred(tvbuff_t* tvb, proto_tree* tree, int offset)
+{
+ guint stamp;
+ guint uid;
+ guint gid;
+
+ stamp = tvb_get_ntohl(tvb,offset);
if (tree)
proto_tree_add_uint(tree, hf_rpc_auth_stamp, tvb,
- offset+0, 4, stamp);
+ offset, 4, stamp);
offset += 4;
offset = dissect_rpc_string(tvb, tree,
hf_rpc_auth_machinename, offset, NULL);
- uid = tvb_get_ntohl(tvb,offset+0);
+ uid = tvb_get_ntohl(tvb,offset);
if (tree)
proto_tree_add_uint(tree, hf_rpc_auth_uid, tvb,
- offset+0, 4, uid);
+ offset, 4, uid);
offset += 4;
- gid = tvb_get_ntohl(tvb,offset+0);
+ gid = tvb_get_ntohl(tvb,offset);
if (tree)
proto_tree_add_uint(tree, hf_rpc_auth_gid, tvb,
- offset+0, 4, gid);
+ offset, 4, gid);
offset += 4;
- gids_count = tvb_get_ntohl(tvb,offset+0);
- if (tree) {
- gitem = proto_tree_add_text(tree, tvb,
- offset, 4+gids_count*4, "Auxiliary GIDs");
- gtree = proto_item_add_subtree(gitem, ett_rpc_gids);
- }
+ offset = dissect_rpc_authunix_groups(tvb, tree, offset);
+
+ return offset;
+}
+
+typedef struct _gssauth_context_info_t {
+ guint32 create_frame;
+ guint32 destroy_frame;
+} gssauth_context_info_t;
+
+
+static int
+dissect_rpc_authgss_context(proto_tree *tree, tvbuff_t *tvb, int offset,
+ packet_info *pinfo, rpc_conv_info_t *rpc_conv_info _U_,
+ gboolean is_create, gboolean is_destroy)
+{
+ proto_item *context_item;
+ proto_tree *context_tree;
+ int old_offset = offset;
+ int context_offset;
+ guint32 context_length;
+ gssauth_context_info_t *context_info;
+ emem_tree_key_t tkey[2];
+ guint32 key[4] = {0,0,0,0};
+
+ context_item = proto_tree_add_text(tree, tvb, offset, -1,
+ "GSS Context");
+
+ context_tree = proto_item_add_subtree(context_item,
+ ett_gss_context);
+
+ context_length = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_item(context_tree, hf_rpc_authgss_ctx_len, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
- for (gids_i = 0 ; gids_i < gids_count ; gids_i++) {
- gids_entry = tvb_get_ntohl(tvb,offset+0);
- if (gtree)
- proto_tree_add_uint(gtree, hf_rpc_auth_gid, tvb,
- offset, 4, gids_entry);
- offset+=4;
+ context_offset = offset;
+ proto_tree_add_item(context_tree, hf_rpc_authgss_ctx, tvb, offset, context_length, ENC_NA);
+ offset += context_length;
+
+ offset = (offset + 3) & 0xffffffc;
+
+ if (context_length > 16) {
+ /* we only track contexts up to 16 bytes in size */
+ return offset;
+ }
+
+ tvb_memcpy(tvb, key, context_offset, context_length);
+ tkey[0].length = 4;
+ tkey[0].key = &key[0];
+ tkey[1].length = 0;
+ tkey[1].key = NULL;
+
+ context_info = se_tree_lookup32_array(authgss_contexts, &tkey[0]);
+ if(context_info == NULL) {
+ tvb_memcpy(tvb, key, context_offset, context_length);
+ tkey[0].length = 4;
+ tkey[0].key = &key[0];
+ tkey[1].length = 0;
+ tkey[1].key = NULL;
+
+ context_info = se_alloc(sizeof(gssauth_context_info_t));
+ context_info->create_frame = 0;
+ context_info->destroy_frame = 0;
+ se_tree_insert32_array(authgss_contexts, &tkey[0], context_info);
+ }
+ if (is_create) {
+ context_info->create_frame = pinfo->fd->num;
+ }
+ if (is_destroy) {
+ context_info->destroy_frame = pinfo->fd->num;
}
- /* how can I NOW change the gitem to print a list with
- the first 16 gids? */
+
+ if (context_info->create_frame) {
+ proto_item *it;
+ it = proto_tree_add_uint(context_tree, hf_rpc_authgss_ctx_create_frame, tvb, 0, 0, context_info->create_frame);
+ PROTO_ITEM_SET_GENERATED(it);
+ }
+
+ if (context_info->destroy_frame) {
+ proto_item *it;
+ it = proto_tree_add_uint(context_tree, hf_rpc_authgss_ctx_destroy_frame, tvb, 0, 0, context_info->destroy_frame);
+ PROTO_ITEM_SET_GENERATED(it);
+ }
+
+ proto_item_set_len(context_item, offset - old_offset);
return offset;
}
static int
-dissect_rpc_authgss_cred(tvbuff_t* tvb, proto_tree* tree, int offset)
+dissect_rpc_authgss_cred(tvbuff_t* tvb, proto_tree* tree, int offset,
+ packet_info *pinfo, rpc_conv_info_t *rpc_conv_info)
{
guint agc_v;
guint agc_proc;
guint agc_seq;
guint agc_svc;
- agc_v = tvb_get_ntohl(tvb, offset+0);
+ agc_v = tvb_get_ntohl(tvb, offset);
if (tree)
proto_tree_add_uint(tree, hf_rpc_authgss_v,
- tvb, offset+0, 4, agc_v);
+ tvb, offset, 4, agc_v);
offset += 4;
- agc_proc = tvb_get_ntohl(tvb, offset+0);
+ agc_proc = tvb_get_ntohl(tvb, offset);
if (tree)
proto_tree_add_uint(tree, hf_rpc_authgss_proc,
- tvb, offset+0, 4, agc_proc);
+ tvb, offset, 4, agc_proc);
offset += 4;
- agc_seq = tvb_get_ntohl(tvb, offset+0);
+ agc_seq = tvb_get_ntohl(tvb, offset);
if (tree)
proto_tree_add_uint(tree, hf_rpc_authgss_seq,
- tvb, offset+0, 4, agc_seq);
+ tvb, offset, 4, agc_seq);
offset += 4;
- agc_svc = tvb_get_ntohl(tvb, offset+0);
+ agc_svc = tvb_get_ntohl(tvb, offset);
if (tree)
proto_tree_add_uint(tree, hf_rpc_authgss_svc,
- tvb, offset+0, 4, agc_svc);
+ tvb, offset, 4, agc_svc);
offset += 4;
- offset = dissect_rpc_data(tvb, tree, hf_rpc_authgss_ctx,
- offset);
+ offset = dissect_rpc_authgss_context(tree, tvb, offset, pinfo, rpc_conv_info, FALSE, agc_proc == RPCSEC_GSS_DESTROY ? TRUE : FALSE);
return offset;
}
@@ -891,7 +1028,7 @@ dissect_rpc_authdes_desblock(tvbuff_t *tvb, proto_tree *tree,
guint32 value_low;
guint32 value_high;
- value_high = tvb_get_ntohl(tvb, offset + 0);
+ value_high = tvb_get_ntohl(tvb, offset);
value_low = tvb_get_ntohl(tvb, offset + 4);
if (tree) {
@@ -910,10 +1047,10 @@ dissect_rpc_authdes_cred(tvbuff_t* tvb, proto_tree* tree, int offset)
guint window = 0;
guint nickname = 0;
- adc_namekind = tvb_get_ntohl(tvb, offset+0);
+ adc_namekind = tvb_get_ntohl(tvb, offset);
if (tree)
proto_tree_add_uint(tree, hf_rpc_authdes_namekind,
- tvb, offset+0, 4, adc_namekind);
+ tvb, offset, 4, adc_namekind);
offset += 4;
switch(adc_namekind)
@@ -923,15 +1060,15 @@ dissect_rpc_authdes_cred(tvbuff_t* tvb, proto_tree* tree, int offset)
hf_rpc_authdes_netname, offset, NULL);
offset = dissect_rpc_authdes_desblock(tvb, tree,
hf_rpc_authdes_convkey, offset);
- window = tvb_get_ntohl(tvb, offset+0);
- proto_tree_add_uint(tree, hf_rpc_authdes_window, tvb, offset+0, 4,
+ window = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_uint(tree, hf_rpc_authdes_window, tvb, offset, 4,
window);
offset += 4;
break;
case AUTHDES_NAMEKIND_NICKNAME:
- nickname = tvb_get_ntohl(tvb, offset+0);
- proto_tree_add_uint(tree, hf_rpc_authdes_nickname, tvb, offset+0, 4,
+ nickname = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_uint(tree, hf_rpc_authdes_nickname, tvb, offset, 4,
nickname);
offset += 4;
break;
@@ -941,21 +1078,58 @@ dissect_rpc_authdes_cred(tvbuff_t* tvb, proto_tree* tree, int offset)
}
static int
+dissect_rpc_authgluster_cred(tvbuff_t* tvb, proto_tree* tree, int offset)
+{
+ if (tree)
+ proto_tree_add_item(tree, hf_rpc_auth_lk_owner, tvb, offset,
+ 8, ENC_NA);
+ offset += 8;
+
+ offset = dissect_rpc_uint32(tvb, tree, hf_rpc_auth_pid, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_rpc_auth_uid, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_rpc_auth_gid, offset);
+ offset = dissect_rpc_authunix_groups(tvb, tree, offset);
+
+ return offset;
+}
+
+static int
+dissect_rpc_authglusterfs_v2_cred(tvbuff_t* tvb, proto_tree* tree, int offset)
+{
+ int len;
+
+ offset = dissect_rpc_uint32(tvb, tree, hf_rpc_auth_pid, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_rpc_auth_uid, offset);
+ offset = dissect_rpc_uint32(tvb, tree, hf_rpc_auth_gid, offset);
+ offset = dissect_rpc_authunix_groups(tvb, tree, offset);
+
+ len = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+
+ if (tree)
+ proto_tree_add_item(tree, hf_rpc_auth_lk_owner, tvb, offset,
+ len, ENC_NA);
+ offset += len;
+
+ return offset;
+}
+
+static int
dissect_rpc_authgssapi_cred(tvbuff_t* tvb, proto_tree* tree, int offset)
{
guint agc_v;
guint agc_msg;
- agc_v = tvb_get_ntohl(tvb, offset+0);
+ agc_v = tvb_get_ntohl(tvb, offset);
if (tree)
proto_tree_add_uint(tree, hf_rpc_authgssapi_v,
- tvb, offset+0, 4, agc_v);
+ tvb, offset, 4, agc_v);
offset += 4;
- agc_msg = tvb_get_ntohl(tvb, offset+0);
+ agc_msg = tvb_get_ntohl(tvb, offset);
if (tree)
proto_tree_add_boolean(tree, hf_rpc_authgssapi_msg,
- tvb, offset+0, 4, agc_msg);
+ tvb, offset, 4, agc_msg);
offset += 4;
offset = dissect_rpc_data(tvb, tree, hf_rpc_authgssapi_handle,
@@ -965,7 +1139,8 @@ dissect_rpc_authgssapi_cred(tvbuff_t* tvb, proto_tree* tree, int offset)
}
static int
-dissect_rpc_cred(tvbuff_t* tvb, proto_tree* tree, int offset)
+dissect_rpc_cred(tvbuff_t* tvb, proto_tree* tree, int offset,
+ packet_info *pinfo, rpc_conv_info_t *rpc_conv_info)
{
guint flavor;
guint length;
@@ -973,7 +1148,7 @@ dissect_rpc_cred(tvbuff_t* tvb, proto_tree* tree, int offset)
proto_item *citem;
proto_tree *ctree;
- flavor = tvb_get_ntohl(tvb,offset+0);
+ flavor = tvb_get_ntohl(tvb,offset);
length = tvb_get_ntohl(tvb,offset+4);
length = rpc_roundup(length);
@@ -982,7 +1157,7 @@ dissect_rpc_cred(tvbuff_t* tvb, proto_tree* tree, int offset)
8+length, "Credentials");
ctree = proto_item_add_subtree(citem, ett_rpc_cred);
proto_tree_add_uint(ctree, hf_rpc_auth_flavor, tvb,
- offset+0, 4, flavor);
+ offset, 4, flavor);
proto_tree_add_uint(ctree, hf_rpc_auth_length, tvb,
offset+4, 4, length);
@@ -999,8 +1174,17 @@ dissect_rpc_cred(tvbuff_t* tvb, proto_tree* tree, int offset)
dissect_rpc_authdes_cred(tvb, ctree, offset+8);
break;
+ case AUTH_RSA:
+ /* AUTH_RSA is (ab)used by Gluster */
+ dissect_rpc_authgluster_cred(tvb, ctree, offset+8);
+ break;
+
case RPCSEC_GSS:
- dissect_rpc_authgss_cred(tvb, ctree, offset+8);
+ dissect_rpc_authgss_cred(tvb, ctree, offset+8, pinfo, rpc_conv_info);
+ break;
+
+ case AUTH_GLUSTERFS:
+ dissect_rpc_authglusterfs_v2_cred(tvb, ctree, offset+8);
break;
case AUTH_GSSAPI:
@@ -1034,13 +1218,13 @@ dissect_rpc_authgss_token(tvbuff_t* tvb, proto_tree* tree, int offset,
proto_item *gitem;
proto_tree *gtree = NULL;
- opaque_length = tvb_get_ntohl(tvb, offset+0);
+ opaque_length = tvb_get_ntohl(tvb, offset);
rounded_length = rpc_roundup(opaque_length);
if (tree) {
gitem = proto_tree_add_item(tree, hfindex, tvb, offset, 4+rounded_length, ENC_NA);
gtree = proto_item_add_subtree(gitem, ett_rpc_gss_token);
proto_tree_add_uint(gtree, hf_rpc_authgss_token_length,
- tvb, offset+0, 4, opaque_length);
+ tvb, offset, 4, opaque_length);
}
offset += 4;
if (opaque_length != 0) {
@@ -1075,7 +1259,7 @@ dissect_rpc_verf(tvbuff_t* tvb, proto_tree* tree, int offset, int msg_type,
proto_item *vitem;
proto_tree *vtree;
- flavor = tvb_get_ntohl(tvb,offset+0);
+ flavor = tvb_get_ntohl(tvb,offset);
length = tvb_get_ntohl(tvb,offset+4);
length = rpc_roundup(length);
@@ -1084,7 +1268,7 @@ dissect_rpc_verf(tvbuff_t* tvb, proto_tree* tree, int offset, int msg_type,
8+length, "Verifier");
vtree = proto_item_add_subtree(vitem, ett_rpc_verf);
proto_tree_add_uint(vtree, hf_rpc_auth_flavor, tvb,
- offset+0, 4, flavor);
+ offset, 4, flavor);
switch (flavor) {
case AUTH_UNIX:
@@ -1144,29 +1328,28 @@ dissect_rpc_authgss_initarg(tvbuff_t* tvb, proto_tree* tree, int offset,
static int
dissect_rpc_authgss_initres(tvbuff_t* tvb, proto_tree* tree, int offset,
- packet_info *pinfo)
+ packet_info *pinfo, rpc_conv_info_t *rpc_conv_info)
{
int major, minor, window;
- offset = dissect_rpc_data(tvb, tree, hf_rpc_authgss_ctx,
- offset);
+ offset = dissect_rpc_authgss_context(tree, tvb, offset, pinfo, rpc_conv_info, TRUE, FALSE);
- major = tvb_get_ntohl(tvb,offset+0);
+ major = tvb_get_ntohl(tvb,offset);
if (tree)
proto_tree_add_uint(tree, hf_rpc_authgss_major, tvb,
- offset+0, 4, major);
+ offset, 4, major);
offset += 4;
- minor = tvb_get_ntohl(tvb,offset+0);
+ minor = tvb_get_ntohl(tvb,offset);
if (tree)
proto_tree_add_uint(tree, hf_rpc_authgss_minor, tvb,
- offset+0, 4, minor);
+ offset, 4, minor);
offset += 4;
- window = tvb_get_ntohl(tvb,offset+0);
+ window = tvb_get_ntohl(tvb,offset);
if (tree)
proto_tree_add_uint(tree, hf_rpc_authgss_window, tvb,
- offset+0, 4, window);
+ offset, 4, window);
offset += 4;
offset = dissect_rpc_authgss_token(tvb, tree, offset, pinfo, hf_rpc_authgss_token);
@@ -1187,10 +1370,10 @@ dissect_rpc_authgssapi_initarg(tvbuff_t* tvb, proto_tree* tree, int offset,
"AUTH_GSSAPI Msg");
mtree = proto_item_add_subtree(mitem, ett_rpc_authgssapi_msg);
}
- version = tvb_get_ntohl(tvb, offset+0);
+ version = tvb_get_ntohl(tvb, offset);
if (mtree) {
proto_tree_add_uint(mtree, hf_rpc_authgssapi_msgv, tvb,
- offset+0, 4, version);
+ offset, 4, version);
}
offset += 4;
@@ -1214,27 +1397,27 @@ dissect_rpc_authgssapi_initres(tvbuff_t* tvb, proto_tree* tree, int offset,
mtree = proto_item_add_subtree(mitem, ett_rpc_authgssapi_msg);
}
- version = tvb_get_ntohl(tvb,offset+0);
+ version = tvb_get_ntohl(tvb,offset);
if (mtree) {
proto_tree_add_uint(mtree, hf_rpc_authgssapi_msgv, tvb,
- offset+0, 4, version);
+ offset, 4, version);
}
offset += 4;
offset = dissect_rpc_data(tvb, mtree, hf_rpc_authgssapi_handle,
offset);
- major = tvb_get_ntohl(tvb,offset+0);
+ major = tvb_get_ntohl(tvb,offset);
if (mtree) {
proto_tree_add_uint(mtree, hf_rpc_authgss_major, tvb,
- offset+0, 4, major);
+ offset, 4, major);
}
offset += 4;
- minor = tvb_get_ntohl(tvb,offset+0);
+ minor = tvb_get_ntohl(tvb,offset);
if (mtree) {
proto_tree_add_uint(mtree, hf_rpc_authgss_minor, tvb,
- offset+0, 4, minor);
+ offset, 4, minor);
}
offset += 4;
@@ -1288,7 +1471,7 @@ dissect_rpc_authgss_integ_data(tvbuff_t *tvb, packet_info *pinfo,
proto_item *gitem;
proto_tree *gtree = NULL;
- length = tvb_get_ntohl(tvb, offset+0);
+ length = tvb_get_ntohl(tvb, offset);
rounded_length = rpc_roundup(length);
seq = tvb_get_ntohl(tvb, offset+4);
@@ -1297,7 +1480,7 @@ dissect_rpc_authgss_integ_data(tvbuff_t *tvb, packet_info *pinfo,
4+rounded_length, "GSS Data");
gtree = proto_item_add_subtree(gitem, ett_rpc_gss_data);
proto_tree_add_uint(gtree, hf_rpc_authgss_data_length,
- tvb, offset+0, 4, length);
+ tvb, offset, 4, length);
proto_tree_add_uint(gtree, hf_rpc_authgss_seq,
tvb, offset+4, 4, seq);
}
@@ -1314,12 +1497,39 @@ dissect_rpc_authgss_integ_data(tvbuff_t *tvb, packet_info *pinfo,
return offset;
}
-
static int
-dissect_rpc_authgss_priv_data(tvbuff_t *tvb, proto_tree *tree, int offset)
+dissect_rpc_authgss_priv_data(tvbuff_t *tvb, proto_tree *tree, int offset,
+ packet_info *pinfo _U_)
{
- offset = dissect_rpc_data(tvb, tree, hf_rpc_authgss_data,
- offset);
+ int length;
+ /* int return_offset; */
+
+ length = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_uint(tree, hf_rpc_authgss_data_length,
+ tvb, offset, 4, length);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_rpc_authgss_data, tvb, offset, length,
+ ENC_NA);
+
+
+ /* cant decrypt if we dont have SPNEGO */
+ if (!spnego_krb5_wrap_handle) {
+ offset += length;
+ return offset;
+ }
+
+ /* return_offset = */ call_dissector(spnego_krb5_wrap_handle,
+ tvb_new_subset_remaining(tvb, offset),
+ pinfo, tree);
+
+ if (!pinfo->gssapi_decrypted_tvb) {
+ /* failed to decrypt the data */
+ offset += length;
+ return offset;
+ }
+
+ offset += length;
return offset;
}
@@ -1427,7 +1637,7 @@ dissect_rpc_indir_call(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
so we should have been handed the tvbuff for this RPC call;
as such, the XID is at offset 0 in this tvbuff. */
/* look up the request */
- xid = tvb_get_ntohl(tvb, offset + 0);
+ xid = tvb_get_ntohl(tvb, offset);
rpc_call = se_tree_lookup32(rpc_conv_info->xids, xid);
if (rpc_call == NULL) {
/* We didn't find it; create a new entry.
@@ -1673,7 +1883,6 @@ make_fake_rpc_prog_if_needed (rpc_prog_info_key *prpc_prog_key, guint prog_ver)
}
}
-
static gboolean
dissect_rpc_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
tvbuff_t *frag_tvb, fragment_data *ipfd_head, gboolean is_tcp,
@@ -1856,7 +2065,7 @@ dissect_rpc_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
}
/* The XIDs of the call and reply must match. */
- xid = tvb_get_ntohl(tvb, offset + 0);
+ xid = tvb_get_ntohl(tvb, offset);
rpc_call = se_tree_lookup32(rpc_conv_info->xids, xid);
if (rpc_call == NULL) {
/* The XID doesn't match a call from that
@@ -1922,21 +2131,19 @@ dissect_rpc_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
col_set_str(pinfo->cinfo, COL_PROTOCOL, "RPC");
- if (tree) {
- rpc_item = proto_tree_add_item(tree, proto_rpc, tvb, 0, -1,
+ rpc_item = proto_tree_add_item(tree, proto_rpc, tvb, 0, -1,
ENC_NA);
- rpc_tree = proto_item_add_subtree(rpc_item, ett_rpc);
+ rpc_tree = proto_item_add_subtree(rpc_item, ett_rpc);
- if (is_tcp) {
- show_rpc_fraginfo(tvb, frag_tvb, rpc_tree, rpc_rm,
- ipfd_head, pinfo);
- }
+ if (is_tcp) {
+ show_rpc_fraginfo(tvb, frag_tvb, rpc_tree, rpc_rm,
+ ipfd_head, pinfo);
}
- xid = tvb_get_ntohl(tvb, offset + 0);
+ xid = tvb_get_ntohl(tvb, offset);
if (rpc_tree) {
proto_tree_add_uint_format(rpc_tree,hf_rpc_xid, tvb,
- offset+0, 4, xid, "XID: 0x%x (%u)", xid, xid);
+ offset, 4, xid, "XID: 0x%x (%u)", xid, xid);
}
msg_type_name = val_to_str(msg_type,rpc_msg_type,"%u");
@@ -1958,10 +2165,10 @@ dissect_rpc_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
ett = rpc_prog->ett;
progname = rpc_prog->progname;
- rpcvers = tvb_get_ntohl(tvb, offset + 0);
+ rpcvers = tvb_get_ntohl(tvb, offset);
if (rpc_tree) {
proto_tree_add_uint(rpc_tree,
- hf_rpc_version, tvb, offset+0, 4, rpcvers);
+ hf_rpc_version, tvb, offset, 4, rpcvers);
}
prog = tvb_get_ntohl(tvb, offset + 4);
@@ -2131,7 +2338,6 @@ dissect_rpc_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
*/
rpc_conv_info = se_alloc(sizeof(rpc_conv_info_t));
rpc_conv_info->xids=se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "rpc_xids");
-
conversation_add_proto_data(conversation, proto_rpc, rpc_conv_info);
}
@@ -2185,7 +2391,7 @@ dissect_rpc_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
se_tree_insert32(rpc_conv_info->xids, xid, (void *)rpc_call);
}
- if(rpc_call && rpc_call->rep_num){
+ if(rpc_call->rep_num){
proto_item *tmp_item;
tmp_item=proto_tree_add_uint_format(rpc_tree, hf_rpc_reqframe,
@@ -2197,13 +2403,18 @@ dissect_rpc_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
offset += 16;
- offset = dissect_rpc_cred(tvb, rpc_tree, offset);
- offset = dissect_rpc_verf(tvb, rpc_tree, offset, msg_type, pinfo);
-
+ offset = dissect_rpc_cred(tvb, rpc_tree, offset, pinfo, rpc_conv_info);
/* pass rpc_info to subdissectors */
rpc_call->request=TRUE;
pinfo->private_data=rpc_call;
+ if (gss_proc == RPCSEC_GSS_DESTROY) {
+ /* there is no verifier for GSS destroy packets */
+ break;
+ }
+
+ offset = dissect_rpc_verf(tvb, rpc_tree, offset, msg_type, pinfo);
+
/* go to the next dissector */
break; /* end of RPC call */
@@ -2291,10 +2502,10 @@ dissect_rpc_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
PROTO_ITEM_SET_GENERATED(tmp_item);
}
- reply_state = tvb_get_ntohl(tvb,offset+0);
+ reply_state = tvb_get_ntohl(tvb,offset);
if (rpc_tree) {
proto_tree_add_uint(rpc_tree, hf_rpc_state_reply, tvb,
- offset+0, 4, reply_state);
+ offset, 4, reply_state);
}
offset += 4;
@@ -2346,10 +2557,10 @@ dissect_rpc_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
case MSG_ACCEPTED:
offset = dissect_rpc_verf(tvb, rpc_tree, offset, msg_type, pinfo);
- accept_state = tvb_get_ntohl(tvb,offset+0);
+ accept_state = tvb_get_ntohl(tvb,offset);
if (rpc_tree) {
proto_tree_add_uint(rpc_tree, hf_rpc_state_accept, tvb,
- offset+0, 4, accept_state);
+ offset, 4, accept_state);
}
offset += 4;
switch (accept_state) {
@@ -2359,12 +2570,12 @@ dissect_rpc_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
break;
case PROG_MISMATCH:
- vers_low = tvb_get_ntohl(tvb,offset+0);
+ vers_low = tvb_get_ntohl(tvb,offset);
vers_high = tvb_get_ntohl(tvb,offset+4);
if (rpc_tree) {
proto_tree_add_uint(rpc_tree,
hf_rpc_programversion_min,
- tvb, offset+0, 4, vers_low);
+ tvb, offset, 4, vers_low);
proto_tree_add_uint(rpc_tree,
hf_rpc_programversion_max,
tvb, offset+4, 4, vers_high);
@@ -2389,31 +2600,31 @@ dissect_rpc_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
break;
case MSG_DENIED:
- reject_state = tvb_get_ntohl(tvb,offset+0);
+ reject_state = tvb_get_ntohl(tvb,offset);
if (rpc_tree) {
proto_tree_add_uint(rpc_tree,
- hf_rpc_state_reject, tvb, offset+0, 4,
+ hf_rpc_state_reject, tvb, offset, 4,
reject_state);
}
offset += 4;
if (reject_state==RPC_MISMATCH) {
- vers_low = tvb_get_ntohl(tvb,offset+0);
+ vers_low = tvb_get_ntohl(tvb,offset);
vers_high = tvb_get_ntohl(tvb,offset+4);
if (rpc_tree) {
proto_tree_add_uint(rpc_tree,
hf_rpc_version_min,
- tvb, offset+0, 4, vers_low);
+ tvb, offset, 4, vers_low);
proto_tree_add_uint(rpc_tree,
hf_rpc_version_max,
tvb, offset+4, 4, vers_high);
}
offset += 8;
} else if (reject_state==AUTH_ERROR) {
- auth_state = tvb_get_ntohl(tvb,offset+0);
+ auth_state = tvb_get_ntohl(tvb,offset);
if (rpc_tree) {
proto_tree_add_uint(rpc_tree,
- hf_rpc_state_auth, tvb, offset+0, 4,
+ hf_rpc_state_auth, tvb, offset, 4,
auth_state);
}
offset += 4;
@@ -2470,38 +2681,62 @@ dissect_rpc_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
*/
tap_queue_packet(rpc_tap, pinfo, rpc_call);
+
+ /* If this is encrypted data we have to try to decrypt the data first before we
+ * we create a tree.
+ * the reason for this is because if we can decrypt the data we must create the
+ * item/tree for the next protocol using the decrypted tdb and not the current
+ * tvb.
+ */
+ pinfo->decrypt_gssapi_tvb=DECRYPT_GSSAPI_NORMAL;
+ pinfo->gssapi_wrap_tvb=NULL;
+ pinfo->gssapi_encrypted_tvb=NULL;
+ pinfo->gssapi_decrypted_tvb=NULL;
+ if (flavor == FLAVOR_GSSAPI && gss_proc == RPCSEC_GSS_DATA && gss_svc == RPCSEC_GSS_SVC_PRIVACY) {
+ proto_item *gss_item;
+ proto_tree *gss_tree;
+
+ gss_item = proto_tree_add_text(tree, tvb, offset, -1, "GSS-Wrap");
+ gss_tree = proto_item_add_subtree(gss_item, ett_gss_wrap);
+
+ offset = dissect_rpc_authgss_priv_data(tvb, gss_tree, offset, pinfo);
+ if (pinfo->gssapi_decrypted_tvb) {
+ proto_tree_add_item(gss_tree, hf_rpc_authgss_seq, pinfo->gssapi_decrypted_tvb, 0, 4, ENC_BIG_ENDIAN);
+
+ /* Switcheroo to the new tvb that contains the decrypted payload */
+ tvb = pinfo->gssapi_decrypted_tvb;
+ offset = 4;
+ }
+ }
+
+
/* create here the program specific sub-tree */
if (tree && (flavor != FLAVOR_AUTHGSSAPI_MSG)) {
- pitem = proto_tree_add_item(tree, proto_id, tvb, offset, -1,
- ENC_NA);
- if (pitem) {
- ptree = proto_item_add_subtree(pitem, ett);
- }
+ proto_item *tmp_item;
- if (ptree) {
- proto_item *tmp_item;
+ pitem = proto_tree_add_item(tree, proto_id, tvb, offset, -1, ENC_NA);
+ ptree = proto_item_add_subtree(pitem, ett);
- tmp_item=proto_tree_add_uint(ptree,
+ tmp_item=proto_tree_add_uint(ptree,
hf_rpc_programversion, tvb, 0, 0, vers);
+ PROTO_ITEM_SET_GENERATED(tmp_item);
+ if (rpc_prog && (rpc_prog->procedure_hfs->len > vers) )
+ procedure_hf = g_array_index(rpc_prog->procedure_hfs, int, vers);
+ else {
+ /*
+ * No such element in the GArray.
+ */
+ procedure_hf = 0;
+ }
+ if (procedure_hf != 0 && procedure_hf != -1) {
+ tmp_item=proto_tree_add_uint(ptree,
+ procedure_hf, tvb, 0, 0, proc);
+ PROTO_ITEM_SET_GENERATED(tmp_item);
+ } else {
+ tmp_item=proto_tree_add_uint_format(ptree,
+ hf_rpc_procedure, tvb, 0, 0, proc,
+ "Procedure: %s (%u)", procname, proc);
PROTO_ITEM_SET_GENERATED(tmp_item);
- if (rpc_prog && (rpc_prog->procedure_hfs->len > vers) )
- procedure_hf = g_array_index(rpc_prog->procedure_hfs, int, vers);
- else {
- /*
- * No such element in the GArray.
- */
- procedure_hf = 0;
- }
- if (procedure_hf != 0 && procedure_hf != -1) {
- tmp_item=proto_tree_add_uint(ptree,
- procedure_hf, tvb, 0, 0, proc);
- PROTO_ITEM_SET_GENERATED(tmp_item);
- } else {
- tmp_item=proto_tree_add_uint_format(ptree,
- hf_rpc_procedure, tvb, 0, 0, proc,
- "Procedure: %s (%u)", procname, proc);
- PROTO_ITEM_SET_GENERATED(tmp_item);
- }
}
}
@@ -2566,7 +2801,7 @@ dissect_rpc_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
}
else {
offset = dissect_rpc_authgss_initres(tvb,
- ptree, offset, pinfo);
+ ptree, offset, pinfo, rpc_conv_info);
}
break;
@@ -2584,8 +2819,14 @@ dissect_rpc_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
progname);
}
else if (gss_svc == RPCSEC_GSS_SVC_PRIVACY) {
- offset = dissect_rpc_authgss_priv_data(tvb,
- ptree, offset);
+ if (pinfo->gssapi_decrypted_tvb) {
+ call_dissect_function(
+ pinfo->gssapi_decrypted_tvb,
+ pinfo, ptree, 4,
+ dissect_function,
+ progname);
+ offset = tvb_length(pinfo->gssapi_decrypted_tvb);
+ }
}
break;
@@ -3615,6 +3856,12 @@ proto_register_rpc(void)
{ &hf_rpc_auth_stamp, {
"Stamp", "rpc.auth.stamp", FT_UINT32, BASE_HEX,
NULL, 0, NULL, HFILL }},
+ { &hf_rpc_auth_lk_owner, {
+ "Lock Owner", "rpc.auth.lk_owner", FT_BYTES, BASE_NONE,
+ NULL, 0, NULL, HFILL }},
+ { &hf_rpc_auth_pid, {
+ "PID", "rpc.auth.pid", FT_UINT32, BASE_DEC,
+ NULL, 0, NULL, HFILL }},
{ &hf_rpc_auth_uid, {
"UID", "rpc.auth.uid", FT_UINT32, BASE_DEC,
NULL, 0, NULL, HFILL }},
@@ -3636,6 +3883,15 @@ proto_register_rpc(void)
{ &hf_rpc_authgss_ctx, {
"GSS Context", "rpc.authgss.context", FT_BYTES,
BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_rpc_authgss_ctx_create_frame, {
+ "Created in frame", "rpc.authgss.context.created_frame", FT_FRAMENUM,
+ BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_rpc_authgss_ctx_destroy_frame, {
+ "Destroyed in frame", "rpc.authgss.context.destroyed_frame", FT_FRAMENUM,
+ BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_rpc_authgss_ctx_len, {
+ "GSS Context Length", "rpc.authgss.context.length", FT_UINT32,
+ BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_rpc_authgss_major, {
"GSS Major Status", "rpc.authgss.major", FT_UINT32,
BASE_DEC, NULL, 0, NULL, HFILL }},
@@ -3760,6 +4016,7 @@ proto_register_rpc(void)
{ &hf_rpc_reassembled_length,
{ "Reassembled RPC length", "rpc.reassembled.length", FT_UINT32, BASE_DEC, NULL, 0x0,
"The total length of the reassembled payload", HFILL }},
+
};
static gint *ett[] = {
&ett_rpc,
@@ -3775,6 +4032,8 @@ proto_register_rpc(void)
&ett_rpc_array,
&ett_rpc_authgssapi_msg,
&ett_rpc_unknown_program,
+ &ett_gss_context,
+ &ett_gss_wrap,
};
module_t *rpc_module;
@@ -3850,7 +4109,10 @@ proto_reg_handoff_rpc(void)
heur_dissector_add("tcp", dissect_rpc_tcp_heur, proto_rpc);
heur_dissector_add("udp", dissect_rpc_heur, proto_rpc);
gssapi_handle = find_dissector("gssapi");
+ spnego_krb5_wrap_handle = find_dissector("spnego-krb5-wrap");
data_handle = find_dissector("data");
+
+ authgss_contexts=se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "gss_contexts");
}
/*
diff --git a/epan/dissectors/packet-rpc.h b/epan/dissectors/packet-rpc.h
index 0deec13f18..7db38abb28 100644
--- a/epan/dissectors/packet-rpc.h
+++ b/epan/dissectors/packet-rpc.h
@@ -38,7 +38,7 @@
#define AUTH_SHORT 2
#define AUTH_DES 3
#define AUTH_KRB4 4
-#define AUTH_DH 5
+#define AUTH_RSA 5
#define RPCSEC_GSS 6
#define AUTH_GSSAPI 300001
/* Pseudo-flavors used for security mechanisms while using
@@ -53,6 +53,11 @@
#define RPCSEC_GSS_SPKM3 390009
#define RPCSEC_GSS_SPKM3I 390010
#define RPCSEC_GSS_SPKM3P 390011
+/* GlusterFS requested an RPC-AUTH number from IANA,
+ * until a number has been granted 390039 is used.
+ * See also: http://review.gluster.com/3230
+ */
+#define AUTH_GLUSTERFS 390039
#define MSG_ACCEPTED 0
#define MSG_DENIED 1
diff --git a/epan/dissectors/packet-rpcap.c b/epan/dissectors/packet-rpcap.c
index 129e3501ba..ca02118e40 100644
--- a/epan/dissectors/packet-rpcap.c
+++ b/epan/dissectors/packet-rpcap.c
@@ -632,7 +632,7 @@ dissect_rpcap_filter (tvbuff_t *tvb, packet_info *pinfo,
}
-static void
+static int
dissect_rpcap_auth_request (tvbuff_t *tvb, packet_info *pinfo _U_,
proto_tree *parent_tree, gint offset)
{
@@ -673,6 +673,7 @@ dissect_rpcap_auth_request (tvbuff_t *tvb, packet_info *pinfo _U_,
proto_item_append_text (ti, " (%s/%s)", username, password);
}
+ return offset;
}
@@ -795,7 +796,7 @@ dissect_rpcap_stats_reply (tvbuff_t *tvb, packet_info *pinfo _U_,
}
-static void
+static int
dissect_rpcap_sampling_request (tvbuff_t *tvb, packet_info *pinfo _U_,
proto_tree *parent_tree, gint offset)
{
@@ -834,6 +835,7 @@ dissect_rpcap_sampling_request (tvbuff_t *tvb, packet_info *pinfo _U_,
default:
break;
}
+ return offset;
}
@@ -881,7 +883,7 @@ dissect_rpcap_packet (tvbuff_t *tvb, packet_info *pinfo, proto_tree *top_tree,
"Caplen is bigger than the remaining message length");
return;
}
-
+
new_tvb = tvb_new_subset (tvb, offset, caplen, len);
if (decode_content && linktype != WTAP_ENCAP_UNKNOWN) {
dissector_try_uint(wtap_encap_dissector_table, linktype, new_tvb, pinfo, top_tree);
diff --git a/epan/dissectors/packet-rrc.c b/epan/dissectors/packet-rrc.c
index 9c47d1366e..71cc75e7bd 100644
--- a/epan/dissectors/packet-rrc.c
+++ b/epan/dissectors/packet-rrc.c
@@ -32,7 +32,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
- * Ref: 3GPP TS 25.331 V9.7.0 (2011-06)
+ * Ref: 3GPP TS 25.331 V10.7.0 (2012-03)
*/
#ifdef HAVE_CONFIG_H
@@ -69,18 +69,21 @@ static dissector_handle_t rrc_dl_dcch_handle=NULL;
static dissector_handle_t lte_rrc_ue_eutra_cap_handle=NULL;
static dissector_handle_t lte_rrc_dl_dcch_handle=NULL;
+enum nas_sys_info_gsm_map {
+ RRC_NAS_SYS_INFO_CS,
+ RRC_NAS_SYS_INFO_PS,
+ RRC_NAS_SYS_INFO_CN_COMMON
+};
+
+static enum nas_sys_info_gsm_map rrc_nas_sys_info_gsm_map_type = RRC_NAS_SYS_INFO_CN_COMMON;
+
/* Forward declarations */
static int dissect_UE_RadioAccessCapabilityInfo_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
-static int dissect_MasterInformationBlock_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static int dissect_SysInfoTypeSB1_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static int dissect_SysInfoTypeSB2_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
-static int dissect_SysInfoType1_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
-static int dissect_SysInfoType3_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static int dissect_SysInfoType5_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
-static int dissect_SysInfoType7_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static int dissect_SysInfoType11_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static int dissect_SysInfoType11bis_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
-static int dissect_SysInfoType12_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
/* Include constants */
@@ -123,10 +126,14 @@ static int dissect_SysInfoType12_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tr
#define maxFreq 8
#define maxFreqBandsEUTRA 16
#define maxFreqBandsFDD 8
+#define maxFreqBandsFDD2 22
#define maxFreqBandsFDD_ext 15
+#define maxFreqBandsFDD_ext2 64
+#define maxFreqBandsIndicatorSupport 2
#define maxFreqBandsTDD 4
#define maxFreqBandsTDD_ext 16
#define maxFreqBandsGSM 16
+#define maxFreqMeasWithoutCM 2
#define maxGANSS 8
#define maxGANSS_1 7
#define maxGANSSSat 64
@@ -144,6 +151,7 @@ static int dissect_SysInfoType12_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tr
#define maxHSSICH_TDD128_1 3
#define maxInterSysMessages 4
#define maxLoCHperRLC 2
+#define maxLoggedMeasReport 128
#define maxMAC_d_PDUsizes 8
#define maxMBMS_CommonCCTrCh 32
#define maxMBMS_CommonPhyCh 32
@@ -165,6 +173,7 @@ static int dissect_SysInfoType12_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tr
#define maxMeasOccasionPattern 5
#define maxMeasOccasionPattern_1 4
#define maxMeasParEvent 2
+#define maxNonContiguousMultiCellCombinations 3
#define maxNumCDMA2000Freqs 8
#define maxNumE_AGCH 4
#define maxNumE_HICH 4
@@ -172,6 +181,8 @@ static int dissect_SysInfoType12_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tr
#define maxNumGSMCellGroup 16
#define maxNumGSMFreqRanges 32
#define maxNumFDDFreqs 8
+#define maxNumANRLoggedItems 4
+#define maxnumLoggedMeas 8
#define maxNumTDDFreqs 8
#define maxNoOfMeas 16
#define maxOtherRAT 15
@@ -222,6 +233,7 @@ static int dissect_SysInfoType12_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tr
#define maxSRBsetup 8
#define maxSystemCapability 16
#define maxTDD128Carrier 6
+#define maxTDD128Carrier_1 5
#define maxTbsForHSDSCH_TDD128 4
#define maxTbsForHSDSCH_TDD128_1 3
#define maxTF 32
@@ -241,7 +253,7 @@ static int dissect_SysInfoType12_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tr
#define maxURNTI_Group 8
/*--- End of included file: packet-rrc-val.h ---*/
-#line 79 "../../asn1/rrc/packet-rrc-template.c"
+#line 82 "../../asn1/rrc/packet-rrc-template.c"
/* Initialize the protocol and registered fields */
int proto_rrc = -1;
@@ -265,21 +277,21 @@ static int hf_rrc_rrc_InterRATHandoverInfo_PDU = -1; /* InterRATHandoverInfo */
static int hf_rrc_SystemInformation_BCH_PDU = -1; /* SystemInformation_BCH */
static int hf_rrc_System_Information_Container_PDU = -1; /* System_Information_Container */
static int hf_rrc_UE_RadioAccessCapabilityInfo_PDU = -1; /* UE_RadioAccessCapabilityInfo */
-static int hf_rrc_MasterInformationBlock_PDU = -1; /* MasterInformationBlock */
-static int hf_rrc_SysInfoType1_PDU = -1; /* SysInfoType1 */
-static int hf_rrc_SysInfoType2_PDU = -1; /* SysInfoType2 */
-static int hf_rrc_SysInfoType3_PDU = -1; /* SysInfoType3 */
+static int hf_rrc_rrc_MasterInformationBlock_PDU = -1; /* MasterInformationBlock */
+static int hf_rrc_rrc_SysInfoType1_PDU = -1; /* SysInfoType1 */
+static int hf_rrc_rrc_SysInfoType2_PDU = -1; /* SysInfoType2 */
+static int hf_rrc_rrc_SysInfoType3_PDU = -1; /* SysInfoType3 */
static int hf_rrc_SysInfoType4_PDU = -1; /* SysInfoType4 */
static int hf_rrc_SysInfoType5_PDU = -1; /* SysInfoType5 */
static int hf_rrc_SysInfoType5bis_PDU = -1; /* SysInfoType5bis */
static int hf_rrc_SysInfoType6_PDU = -1; /* SysInfoType6 */
-static int hf_rrc_SysInfoType7_PDU = -1; /* SysInfoType7 */
+static int hf_rrc_rrc_SysInfoType7_PDU = -1; /* SysInfoType7 */
static int hf_rrc_SysInfoType8_PDU = -1; /* SysInfoType8 */
static int hf_rrc_SysInfoType9_PDU = -1; /* SysInfoType9 */
static int hf_rrc_SysInfoType10_PDU = -1; /* SysInfoType10 */
static int hf_rrc_SysInfoType11_PDU = -1; /* SysInfoType11 */
static int hf_rrc_SysInfoType11bis_PDU = -1; /* SysInfoType11bis */
-static int hf_rrc_SysInfoType12_PDU = -1; /* SysInfoType12 */
+static int hf_rrc_rrc_SysInfoType12_PDU = -1; /* SysInfoType12 */
static int hf_rrc_SysInfoType13_PDU = -1; /* SysInfoType13 */
static int hf_rrc_SysInfoType13_1_PDU = -1; /* SysInfoType13_1 */
static int hf_rrc_SysInfoType13_2_PDU = -1; /* SysInfoType13_2 */
@@ -353,8 +365,8 @@ static int hf_rrc_handoverFromUTRANCommand_GERANIu = -1; /* HandoverFromUTRANCo
static int hf_rrc_mbmsModifiedServicesInformation = -1; /* MBMSModifiedServicesInformation */
static int hf_rrc_etwsPrimaryNotificationWithSecurity = -1; /* ETWSPrimaryNotificationWithSecurity */
static int hf_rrc_handoverFromUTRANCommand_EUTRA = -1; /* HandoverFromUTRANCommand_EUTRA */
-static int hf_rrc_spare3 = -1; /* NULL */
-static int hf_rrc_spare2 = -1; /* NULL */
+static int hf_rrc_ueInformationRequest = -1; /* UEInformationRequest */
+static int hf_rrc_loggingMeasurementConfiguration = -1; /* LoggingMeasurementConfiguration */
static int hf_rrc_spare1 = -1; /* NULL */
static int hf_rrc_message_01 = -1; /* UL_DCCH_MessageType */
static int hf_rrc_activeSetUpdateComplete = -1; /* ActiveSetUpdateComplete */
@@ -388,6 +400,22 @@ static int hf_rrc_uplinkDirectTransfer = -1; /* UplinkDirectTransfer */
static int hf_rrc_utranMobilityInformationConfirm = -1; /* UTRANMobilityInformationConfirm */
static int hf_rrc_utranMobilityInformationFailure = -1; /* UTRANMobilityInformationFailure */
static int hf_rrc_mbmsModificationRequest = -1; /* MBMSModificationRequest */
+static int hf_rrc_ul_DCCH_MessageType_ext = -1; /* UL_DCCH_MessageType_ext */
+static int hf_rrc_ueInformationResponse = -1; /* UEInformationResponse */
+static int hf_rrc_spare15 = -1; /* NULL */
+static int hf_rrc_spare14 = -1; /* NULL */
+static int hf_rrc_spare13 = -1; /* NULL */
+static int hf_rrc_spare12 = -1; /* NULL */
+static int hf_rrc_spare11 = -1; /* NULL */
+static int hf_rrc_spare10 = -1; /* NULL */
+static int hf_rrc_spare9 = -1; /* NULL */
+static int hf_rrc_spare8 = -1; /* NULL */
+static int hf_rrc_spare7 = -1; /* NULL */
+static int hf_rrc_spare6 = -1; /* NULL */
+static int hf_rrc_spare5 = -1; /* NULL */
+static int hf_rrc_spare4 = -1; /* NULL */
+static int hf_rrc_spare3 = -1; /* NULL */
+static int hf_rrc_spare2 = -1; /* NULL */
static int hf_rrc_message_02 = -1; /* DL_CCCH_MessageType */
static int hf_rrc_cellUpdateConfirm_01 = -1; /* CellUpdateConfirm_CCCH */
static int hf_rrc_rrcConnectionReject = -1; /* RRCConnectionReject */
@@ -415,12 +443,6 @@ static int hf_rrc_mbmsCurrentCellPTMRBInformation = -1; /* MBMSCurrentCellPTMRB
static int hf_rrc_mbmsGeneralInformation = -1; /* MBMSGeneralInformation */
static int hf_rrc_mbmsNeighbouringCellPTMRBInformation = -1; /* MBMSNeighbouringCellPTMRBInformation */
static int hf_rrc_mbmsUnmodifiedServicesInformation = -1; /* MBMSUnmodifiedServicesInformation */
-static int hf_rrc_spare9 = -1; /* NULL */
-static int hf_rrc_spare8 = -1; /* NULL */
-static int hf_rrc_spare7 = -1; /* NULL */
-static int hf_rrc_spare6 = -1; /* NULL */
-static int hf_rrc_spare5 = -1; /* NULL */
-static int hf_rrc_spare4 = -1; /* NULL */
static int hf_rrc_message_10 = -1; /* MSCH_MessageType */
static int hf_rrc_mbmsSchedulingInformation = -1; /* MBMSSchedulingInformation */
static int hf_rrc_r3 = -1; /* T_r3 */
@@ -471,6 +493,11 @@ static int hf_rrc_v950NonCriticalExtensions = -1; /* T_v950NonCriticalExtension
static int hf_rrc_activeSetUpdate_v950ext = -1; /* ActiveSetUpdate_v950ext_IEs */
static int hf_rrc_nonCriticalExtensions_04 = -1; /* T_nonCriticalExtensions_04 */
static int hf_rrc_criticalExtensions_04 = -1; /* T_criticalExtensions_04 */
+static int hf_rrc_r10 = -1; /* T_r10 */
+static int hf_rrc_activeSetUpdate_r10 = -1; /* ActiveSetUpdate_r10_IEs */
+static int hf_rrc_activeSetUpdate_r10_add_ext = -1; /* BIT_STRING */
+static int hf_rrc_nonCriticalExtensions_05 = -1; /* T_nonCriticalExtensions_05 */
+static int hf_rrc_criticalExtensions_05 = -1; /* T_criticalExtensions_05 */
static int hf_rrc_dummy = -1; /* IntegrityProtectionModeInfo */
static int hf_rrc_dummy2 = -1; /* CipheringModeInfo */
static int hf_rrc_activationTime = -1; /* ActivationTime */
@@ -526,16 +553,19 @@ static int hf_rrc_serving_HSDSCH_CellInformation_03 = -1; /* Serving_HSDSCH_Cel
static int hf_rrc_dl_SecondaryCellInfoFDD_01 = -1; /* DL_SecondaryCellInfoFDD_r9 */
static int hf_rrc_secondaryCellMimoParameters = -1; /* SecondaryCellMIMOparametersFDD_v950ext */
static int hf_rrc_rl_AdditionInformationList_06 = -1; /* RL_AdditionInformationList_v950ext */
+static int hf_rrc_rl_AdditionInformationList_07 = -1; /* RL_AdditionInformationList_r10 */
+static int hf_rrc_dl_SecondaryCellInfoFDD_02 = -1; /* DL_SecondaryCellInfoFDD_r10 */
+static int hf_rrc_additionalDLSecCellInfoListFDD = -1; /* AdditionalDLSecCellInfoListFDD */
static int hf_rrc_dummy_02 = -1; /* IntegrityProtActivationInfo */
static int hf_rrc_dummy2_01 = -1; /* RB_ActivationTimeInfoList */
static int hf_rrc_dummy3_01 = -1; /* UL_CounterSynchronisationInfo */
static int hf_rrc_laterNonCriticalExtensions_01 = -1; /* T_laterNonCriticalExtensions_01 */
static int hf_rrc_activeSetUpdateComplete_r3_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_05 = -1; /* T_nonCriticalExtensions_05 */
+static int hf_rrc_nonCriticalExtensions_06 = -1; /* T_nonCriticalExtensions_06 */
static int hf_rrc_failureCause = -1; /* FailureCauseWithProtErr */
static int hf_rrc_laterNonCriticalExtensions_02 = -1; /* T_laterNonCriticalExtensions_02 */
static int hf_rrc_activeSetUpdateFailure_r3_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_06 = -1; /* T_nonCriticalExtensions_06 */
+static int hf_rrc_nonCriticalExtensions_07 = -1; /* T_nonCriticalExtensions_07 */
static int hf_rrc_r3_01 = -1; /* T_r3_01 */
static int hf_rrc_assistanceDataDelivery_r3 = -1; /* AssistanceDataDelivery_r3_IEs */
static int hf_rrc_v3a0NonCriticalExtensions = -1; /* T_v3a0NonCriticalExtensions */
@@ -550,9 +580,11 @@ static int hf_rrc_v860NonCriticalExtension = -1; /* T_v860NonCriticalExtension
static int hf_rrc_assistanceDataDelivery_v860ext = -1; /* AssistanceDataDelivery_v860ext_IEs */
static int hf_rrc_v920NonCriticalExtension = -1; /* T_v920NonCriticalExtension */
static int hf_rrc_assistanceDataDelivery_v920ext = -1; /* AssistanceDataDelivery_v920ext_IEs */
-static int hf_rrc_nonCriticalExtensions_07 = -1; /* T_nonCriticalExtensions_07 */
+static int hf_rrc_va40NonCriticalExtension = -1; /* T_va40NonCriticalExtension */
+static int hf_rrc_assistanceDataDelivery_va40ext = -1; /* AssistanceDataDelivery_va40ext_IEs */
+static int hf_rrc_nonCriticalExtensions_08 = -1; /* T_nonCriticalExtensions_08 */
static int hf_rrc_later_than_r3_01 = -1; /* T_later_than_r3_01 */
-static int hf_rrc_criticalExtensions_05 = -1; /* T_criticalExtensions_05 */
+static int hf_rrc_criticalExtensions_06 = -1; /* T_criticalExtensions_06 */
static int hf_rrc_ue_positioning_GPS_AssistanceData = -1; /* UE_Positioning_GPS_AssistanceData */
static int hf_rrc_ue_positioning_OTDOA_AssistanceData_UEB = -1; /* UE_Positioning_OTDOA_AssistanceData_UEB */
static int hf_rrc_sfn_Offset_Validity = -1; /* SFN_Offset_Validity */
@@ -563,15 +595,17 @@ static int hf_rrc_ue_positioning_GANSS_AssistanceData = -1; /* UE_Positioning_G
static int hf_rrc_ue_positioning_GANSS_AssistanceData_v860ext = -1; /* UE_Positioning_GANSS_AssistanceData_v860ext */
static int hf_rrc_ue_positioning_GPS_AssistanceData_v920ext = -1; /* UE_Positioning_GPS_AssistanceData_v920ext */
static int hf_rrc_ue_positioning_GANSS_AssistanceData_v920ext = -1; /* UE_Positioning_GANSS_AssistanceData_v920ext */
+static int hf_rrc_ue_positioning_GPS_AssistanceData_va40ext = -1; /* UE_Positioning_GPS_AssistanceData_va40ext */
+static int hf_rrc_ue_positioning_GANSS_AssistanceData_va40ext = -1; /* UE_Positioning_GANSS_AssistanceData_va40ext */
static int hf_rrc_r3_02 = -1; /* T_r3_02 */
static int hf_rrc_cellChangeOrderFromUTRAN_IEs = -1; /* CellChangeOrderFromUTRAN_r3_IEs */
static int hf_rrc_laterNonCriticalExtensions_04 = -1; /* T_laterNonCriticalExtensions_04 */
static int hf_rrc_cellChangeOrderFromUTRAN_r3_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v590NonCriticalExtensions_01 = -1; /* T_v590NonCriticalExtensions_01 */
static int hf_rrc_cellChangeOrderFromUTRAN_v590ext = -1; /* CellChangeOrderFromUTRAN_v590ext_IEs */
-static int hf_rrc_nonCriticalExtensions_08 = -1; /* T_nonCriticalExtensions_08 */
+static int hf_rrc_nonCriticalExtensions_09 = -1; /* T_nonCriticalExtensions_09 */
static int hf_rrc_later_than_r3_02 = -1; /* T_later_than_r3_02 */
-static int hf_rrc_criticalExtensions_06 = -1; /* T_criticalExtensions_06 */
+static int hf_rrc_criticalExtensions_07 = -1; /* T_criticalExtensions_07 */
static int hf_rrc_rab_InformationList = -1; /* RAB_InformationList */
static int hf_rrc_interRAT_TargetCellDescription = -1; /* InterRAT_TargetCellDescription */
static int hf_rrc_geran_SystemInfoType = -1; /* T_geran_SystemInfoType */
@@ -581,9 +615,9 @@ static int hf_rrc_r3_03 = -1; /* T_r3_03 */
static int hf_rrc_cellChangeOrderFromUTRANFailure_r3 = -1; /* CellChangeOrderFromUTRANFailure_r3_IEs */
static int hf_rrc_laterNonCriticalExtensions_05 = -1; /* T_laterNonCriticalExtensions_05 */
static int hf_rrc_cellChangeOrderFromUTRANFailure_r3_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_09 = -1; /* T_nonCriticalExtensions_09 */
+static int hf_rrc_nonCriticalExtensions_10 = -1; /* T_nonCriticalExtensions_10 */
static int hf_rrc_dummy_03 = -1; /* T_dummy */
-static int hf_rrc_criticalExtensions_07 = -1; /* T_criticalExtensions_07 */
+static int hf_rrc_criticalExtensions_08 = -1; /* T_criticalExtensions_08 */
static int hf_rrc_interRAT_ChangeFailureCause = -1; /* InterRAT_ChangeFailureCause */
static int hf_rrc_u_RNTI = -1; /* U_RNTI */
static int hf_rrc_startList = -1; /* STARTList */
@@ -605,11 +639,13 @@ static int hf_rrc_v770NonCriticalExtensions = -1; /* T_v770NonCriticalExtension
static int hf_rrc_cellUpdate_v770ext = -1; /* CellUpdate_v770ext_IEs */
static int hf_rrc_v860NonCriticalExtensions = -1; /* T_v860NonCriticalExtensions */
static int hf_rrc_cellUpdate_v860ext = -1; /* CellUpdate_v860ext_IEs */
-static int hf_rrc_nonCriticalExtensions_10 = -1; /* T_nonCriticalExtensions_10 */
+static int hf_rrc_va40NonCriticalExtensions = -1; /* T_va40NonCriticalExtensions */
+static int hf_rrc_cellUpdate_va40ext = -1; /* CellUpdate_va40ext_IEs */
+static int hf_rrc_nonCriticalExtensions_11 = -1; /* T_nonCriticalExtensions_11 */
static int hf_rrc_cellUpdate_v7e0ext = -1; /* CellUpdate_v7e0ext_IEs */
static int hf_rrc_v7g0NonCriticalExtensions_02 = -1; /* T_v7g0NonCriticalExtensions_02 */
static int hf_rrc_cellUpdate_v7g0ext = -1; /* CellUpdate_v7g0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_11 = -1; /* T_nonCriticalExtensions_11 */
+static int hf_rrc_nonCriticalExtensions_12 = -1; /* T_nonCriticalExtensions_12 */
static int hf_rrc_establishmentCause = -1; /* EstablishmentCause */
static int hf_rrc_cellUpdateCause_ext = -1; /* CellUpdateCause_ext */
static int hf_rrc_trafficVolumeIndicator = -1; /* T_trafficVolumeIndicator */
@@ -627,6 +663,9 @@ static int hf_rrc_supportOfHS_DSCHDRXOperation = -1; /* T_supportOfHS_DSCHDRXOp
static int hf_rrc_supportOfMACiis = -1; /* T_supportOfMACiis */
static int hf_rrc_supportOfSPSOperation = -1; /* T_supportOfSPSOperation */
static int hf_rrc_supportOfControlChannelDRXOperation = -1; /* T_supportOfControlChannelDRXOperation */
+static int hf_rrc_securityRevertStatusIndicator = -1; /* T_securityRevertStatusIndicator */
+static int hf_rrc_loggedMeasAvailable = -1; /* T_loggedMeasAvailable */
+static int hf_rrc_loggedANRResultsAvailable = -1; /* T_loggedANRResultsAvailable */
static int hf_rrc_r3_04 = -1; /* T_r3_04 */
static int hf_rrc_cellUpdateConfirm_r3 = -1; /* CellUpdateConfirm_r3_IEs */
static int hf_rrc_v3a0NonCriticalExtensions_01 = -1; /* T_v3a0NonCriticalExtensions_01 */
@@ -641,9 +680,9 @@ static int hf_rrc_v5d0NonCriticalExtenstions = -1; /* T_v5d0NonCriticalExtensti
static int hf_rrc_cellUpdateConfirm_v5d0ext = -1; /* CellUpdateConfirm_v5d0ext_IEs */
static int hf_rrc_v690NonCriticalExtensions_02 = -1; /* T_v690NonCriticalExtensions_02 */
static int hf_rrc_cellUpdateConfirm_v690ext = -1; /* CellUpdateConfirm_v690ext_IEs */
-static int hf_rrc_nonCriticalExtensions_12 = -1; /* T_nonCriticalExtensions_12 */
+static int hf_rrc_nonCriticalExtensions_13 = -1; /* T_nonCriticalExtensions_13 */
static int hf_rrc_later_than_r3_03 = -1; /* T_later_than_r3_03 */
-static int hf_rrc_criticalExtensions_08 = -1; /* T_criticalExtensions_08 */
+static int hf_rrc_criticalExtensions_09 = -1; /* T_criticalExtensions_09 */
static int hf_rrc_r4 = -1; /* T_r4 */
static int hf_rrc_cellUpdateConfirm_r4 = -1; /* CellUpdateConfirm_r4_IEs */
static int hf_rrc_v4d0NonCriticalExtensions = -1; /* T_v4d0NonCriticalExtensions */
@@ -651,22 +690,22 @@ static int hf_rrc_cellUpdateConfirm_r4_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v590NonCriticalExtenstions_01 = -1; /* T_v590NonCriticalExtenstions_01 */
static int hf_rrc_v5d0NonCriticalExtenstions_01 = -1; /* T_v5d0NonCriticalExtenstions_01 */
static int hf_rrc_v690NonCriticalExtensions_03 = -1; /* T_v690NonCriticalExtensions_03 */
-static int hf_rrc_nonCriticalExtensions_13 = -1; /* T_nonCriticalExtensions_13 */
-static int hf_rrc_criticalExtensions_09 = -1; /* T_criticalExtensions_09 */
+static int hf_rrc_nonCriticalExtensions_14 = -1; /* T_nonCriticalExtensions_14 */
+static int hf_rrc_criticalExtensions_10 = -1; /* T_criticalExtensions_10 */
static int hf_rrc_r5 = -1; /* T_r5 */
static int hf_rrc_cellUpdateConfirm_r5 = -1; /* CellUpdateConfirm_r5_IEs */
static int hf_rrc_cellUpdateConfirm_r5_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v5d0NonCriticalExtenstions_02 = -1; /* T_v5d0NonCriticalExtenstions_02 */
static int hf_rrc_v690NonCriticalExtensions_04 = -1; /* T_v690NonCriticalExtensions_04 */
-static int hf_rrc_nonCriticalExtensions_14 = -1; /* T_nonCriticalExtensions_14 */
-static int hf_rrc_criticalExtensions_10 = -1; /* T_criticalExtensions_10 */
+static int hf_rrc_nonCriticalExtensions_15 = -1; /* T_nonCriticalExtensions_15 */
+static int hf_rrc_criticalExtensions_11 = -1; /* T_criticalExtensions_11 */
static int hf_rrc_r6_01 = -1; /* T_r6_01 */
static int hf_rrc_cellUpdateConfirm_r6 = -1; /* CellUpdateConfirm_r6_IEs */
static int hf_rrc_cellUpdateConfirm_r6_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v6b0NonCriticalExtensions_02 = -1; /* T_v6b0NonCriticalExtensions_02 */
static int hf_rrc_cellUpdateConfirm_v6b0ext = -1; /* CellUpdateConfirm_v6b0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_15 = -1; /* T_nonCriticalExtensions_15 */
-static int hf_rrc_criticalExtensions_11 = -1; /* T_criticalExtensions_11 */
+static int hf_rrc_nonCriticalExtensions_16 = -1; /* T_nonCriticalExtensions_16 */
+static int hf_rrc_criticalExtensions_12 = -1; /* T_criticalExtensions_12 */
static int hf_rrc_r7_01 = -1; /* T_r7_01 */
static int hf_rrc_cellUpdateConfirm_r7 = -1; /* CellUpdateConfirm_r7_IEs */
static int hf_rrc_cellUpdateConfirm_r7_add_ext = -1; /* T_cellUpdateConfirm_r7_add_ext */
@@ -674,8 +713,8 @@ static int hf_rrc_v780NonCriticalExtensions_01 = -1; /* T_v780NonCriticalExtens
static int hf_rrc_cellUpdateConfirm_v780ext = -1; /* CellUpdateConfirm_v780ext_IEs */
static int hf_rrc_v860NonCriticalExtensions_01 = -1; /* T_v860NonCriticalExtensions_01 */
static int hf_rrc_cellUpdateConfirm_v860ext = -1; /* CellUpdateConfirm_v860ext_IEs */
-static int hf_rrc_nonCriticalExtensions_16 = -1; /* T_nonCriticalExtensions_16 */
-static int hf_rrc_criticalExtensions_12 = -1; /* T_criticalExtensions_12 */
+static int hf_rrc_nonCriticalExtensions_17 = -1; /* T_nonCriticalExtensions_17 */
+static int hf_rrc_criticalExtensions_13 = -1; /* T_criticalExtensions_13 */
static int hf_rrc_r8_01 = -1; /* T_r8_01 */
static int hf_rrc_cellUpdateConfirm_r8 = -1; /* CellUpdateConfirm_r8_IEs */
static int hf_rrc_cellUpdateConfirm_r8_add_ext = -1; /* BIT_STRING */
@@ -689,15 +728,20 @@ static int hf_rrc_v7g0NonCriticalExtensions_03 = -1; /* T_v7g0NonCriticalExtens
static int hf_rrc_cellUpdateConfirm_v7g0ext = -1; /* CellUpdateConfirm_v7g0ext_IEs */
static int hf_rrc_v8a0NonCriticalExtensions = -1; /* T_v8a0NonCriticalExtensions */
static int hf_rrc_cellUpdateConfirm_v8a0ext = -1; /* CellUpdateConfirm_v8a0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_17 = -1; /* T_nonCriticalExtensions_17 */
-static int hf_rrc_criticalExtensions_13 = -1; /* T_criticalExtensions_13 */
+static int hf_rrc_nonCriticalExtensions_18 = -1; /* T_nonCriticalExtensions_18 */
+static int hf_rrc_criticalExtensions_14 = -1; /* T_criticalExtensions_14 */
static int hf_rrc_r9_01 = -1; /* T_r9_01 */
static int hf_rrc_cellUpdateConfirm_r9 = -1; /* CellUpdateConfirm_r9_IEs */
static int hf_rrc_cellUpdateConfirm_r9_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v950NonCriticalExtensions_01 = -1; /* T_v950NonCriticalExtensions_01 */
static int hf_rrc_cellUpdateConfirm_v950ext = -1; /* CellUpdateConfirm_v950ext_IEs */
-static int hf_rrc_nonCriticalExtensions_18 = -1; /* T_nonCriticalExtensions_18 */
-static int hf_rrc_criticalExtensions_14 = -1; /* T_criticalExtensions_14 */
+static int hf_rrc_nonCriticalExtensions_19 = -1; /* T_nonCriticalExtensions_19 */
+static int hf_rrc_criticalExtensions_15 = -1; /* T_criticalExtensions_15 */
+static int hf_rrc_r10_01 = -1; /* T_r10_01 */
+static int hf_rrc_cellUpdateConfirm_r10 = -1; /* CellUpdateConfirm_r10_IEs */
+static int hf_rrc_cellUpdateConfirm_r10_add_ext = -1; /* BIT_STRING */
+static int hf_rrc_nonCriticalExtensions_20 = -1; /* T_nonCriticalExtensions_20 */
+static int hf_rrc_criticalExtensions_16 = -1; /* T_criticalExtensions_16 */
static int hf_rrc_integrityProtectionModeInfo = -1; /* IntegrityProtectionModeInfo */
static int hf_rrc_cipheringModeInfo = -1; /* CipheringModeInfo */
static int hf_rrc_new_U_RNTI = -1; /* U_RNTI */
@@ -789,9 +833,9 @@ static int hf_rrc_dl_CommonInformation_04 = -1; /* DL_CommonInformation_r7 */
static int hf_rrc_dl_InformationPerRL_List_04 = -1; /* DL_InformationPerRL_List_r7 */
static int hf_rrc_v7f0NonCriticalExtensions_02 = -1; /* T_v7f0NonCriticalExtensions_02 */
static int hf_rrc_v7g0NonCriticalExtensions_04 = -1; /* T_v7g0NonCriticalExtensions_04 */
-static int hf_rrc_nonCriticalExtensions_19 = -1; /* T_nonCriticalExtensions_19 */
+static int hf_rrc_nonCriticalExtensions_21 = -1; /* T_nonCriticalExtensions_21 */
static int hf_rrc_ul_EDCH_Information_02 = -1; /* UL_EDCH_Information_ext */
-static int hf_rrc_defaultConfigForCellFACH = -1; /* DefaultConfigForCellFACH */
+static int hf_rrc_dummy_06 = -1; /* DefaultConfigForCellFACH */
static int hf_rrc_rab_InformationSetup = -1; /* RAB_InformationSetup_r8 */
static int hf_rrc_rb_InformationReconfigList_05 = -1; /* RB_InformationReconfigList_r8 */
static int hf_rrc_rb_InformationAffectedList_04 = -1; /* RB_InformationAffectedList_r8 */
@@ -811,6 +855,10 @@ static int hf_rrc_dl_AddReconfTransChInfoList_04 = -1; /* DL_AddReconfTransChIn
static int hf_rrc_ul_EDCH_Information_04 = -1; /* UL_EDCH_Information_r9 */
static int hf_rrc_dl_HSPDSCH_Information_06 = -1; /* DL_HSPDSCH_Information_r9 */
static int hf_rrc_cellDCHMeasOccasionInfo_TDD128 = -1; /* CellDCHMeasOccasionInfo_TDD128_r9 */
+static int hf_rrc_sr_vcc_Info = -1; /* SR_VCC_Info */
+static int hf_rrc_ul_MulticarrierEDCHInfo_TDD128 = -1; /* UL_MulticarrierEDCHInfo_TDD128 */
+static int hf_rrc_dl_CommonInformation_06 = -1; /* DL_CommonInformation_r10 */
+static int hf_rrc_mu_MIMO_Info_TDD128 = -1; /* MU_MIMO_Info_TDD128 */
static int hf_rrc_r3_05 = -1; /* T_r3_05 */
static int hf_rrc_laterNonCriticalExtensions_08 = -1; /* T_laterNonCriticalExtensions_08 */
static int hf_rrc_cellUpdateConfirm_CCCH_r3_add_ext = -1; /* BIT_STRING */
@@ -818,86 +866,89 @@ static int hf_rrc_v4b0NonCriticalExtensions_03 = -1; /* T_v4b0NonCriticalExtens
static int hf_rrc_v590NonCriticalExtensions_03 = -1; /* T_v590NonCriticalExtensions_03 */
static int hf_rrc_v5d0NonCriticalExtenstions_03 = -1; /* T_v5d0NonCriticalExtenstions_03 */
static int hf_rrc_v690NonCriticalExtensions_05 = -1; /* T_v690NonCriticalExtensions_05 */
-static int hf_rrc_nonCriticalExtensions_20 = -1; /* T_nonCriticalExtensions_20 */
+static int hf_rrc_nonCriticalExtensions_22 = -1; /* T_nonCriticalExtensions_22 */
static int hf_rrc_later_than_r3_04 = -1; /* T_later_than_r3_04 */
-static int hf_rrc_criticalExtensions_15 = -1; /* T_criticalExtensions_15 */
+static int hf_rrc_criticalExtensions_17 = -1; /* T_criticalExtensions_17 */
static int hf_rrc_r4_01 = -1; /* T_r4_01 */
static int hf_rrc_v4d0NonCriticalExtensions_01 = -1; /* T_v4d0NonCriticalExtensions_01 */
static int hf_rrc_cellUpdateConfirm_CCCH_r4_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v590NonCriticalExtensions_04 = -1; /* T_v590NonCriticalExtensions_04 */
static int hf_rrc_v5d0NonCriticalExtenstions_04 = -1; /* T_v5d0NonCriticalExtenstions_04 */
static int hf_rrc_v690NonCriticalExtensions_06 = -1; /* T_v690NonCriticalExtensions_06 */
-static int hf_rrc_nonCriticalExtensions_21 = -1; /* T_nonCriticalExtensions_21 */
-static int hf_rrc_criticalExtensions_16 = -1; /* T_criticalExtensions_16 */
+static int hf_rrc_nonCriticalExtensions_23 = -1; /* T_nonCriticalExtensions_23 */
+static int hf_rrc_criticalExtensions_18 = -1; /* T_criticalExtensions_18 */
static int hf_rrc_r5_01 = -1; /* T_r5_01 */
static int hf_rrc_cellUpdateConfirm_CCCH_r5_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v5d0NonCriticalExtenstions_05 = -1; /* T_v5d0NonCriticalExtenstions_05 */
static int hf_rrc_v690NonCriticalExtensions_07 = -1; /* T_v690NonCriticalExtensions_07 */
-static int hf_rrc_nonCriticalExtensions_22 = -1; /* T_nonCriticalExtensions_22 */
-static int hf_rrc_criticalExtensions_17 = -1; /* T_criticalExtensions_17 */
+static int hf_rrc_nonCriticalExtensions_24 = -1; /* T_nonCriticalExtensions_24 */
+static int hf_rrc_criticalExtensions_19 = -1; /* T_criticalExtensions_19 */
static int hf_rrc_r6_02 = -1; /* T_r6_02 */
static int hf_rrc_v6b0NonCriticalExtensions_03 = -1; /* T_v6b0NonCriticalExtensions_03 */
-static int hf_rrc_nonCriticalExtensions_23 = -1; /* T_nonCriticalExtensions_23 */
-static int hf_rrc_criticalExtensions_18 = -1; /* T_criticalExtensions_18 */
+static int hf_rrc_nonCriticalExtensions_25 = -1; /* T_nonCriticalExtensions_25 */
+static int hf_rrc_criticalExtensions_20 = -1; /* T_criticalExtensions_20 */
static int hf_rrc_r7_02 = -1; /* T_r7_02 */
static int hf_rrc_cellUpdateConfirm_r7_add_ext_01 = -1; /* T_cellUpdateConfirm_r7_add_ext_01 */
static int hf_rrc_v780NonCriticalExtensions_02 = -1; /* T_v780NonCriticalExtensions_02 */
static int hf_rrc_v860NonCriticalExtensions_02 = -1; /* T_v860NonCriticalExtensions_02 */
-static int hf_rrc_nonCriticalExtensions_24 = -1; /* T_nonCriticalExtensions_24 */
-static int hf_rrc_criticalExtensions_19 = -1; /* T_criticalExtensions_19 */
+static int hf_rrc_nonCriticalExtensions_26 = -1; /* T_nonCriticalExtensions_26 */
+static int hf_rrc_criticalExtensions_21 = -1; /* T_criticalExtensions_21 */
static int hf_rrc_r8_02 = -1; /* T_r8_02 */
static int hf_rrc_v7d0NonCriticalExtensions_01 = -1; /* T_v7d0NonCriticalExtensions_01 */
static int hf_rrc_v890NonCriticalExtensions_02 = -1; /* T_v890NonCriticalExtensions_02 */
static int hf_rrc_v8a0NonCriticalExtensions_01 = -1; /* T_v8a0NonCriticalExtensions_01 */
static int hf_rrc_v7f0NonCriticalExtensions_03 = -1; /* T_v7f0NonCriticalExtensions_03 */
static int hf_rrc_v7g0NonCriticalExtensions_05 = -1; /* T_v7g0NonCriticalExtensions_05 */
-static int hf_rrc_nonCriticalExtensions_25 = -1; /* T_nonCriticalExtensions_25 */
-static int hf_rrc_criticalExtensions_20 = -1; /* T_criticalExtensions_20 */
+static int hf_rrc_nonCriticalExtensions_27 = -1; /* T_nonCriticalExtensions_27 */
+static int hf_rrc_criticalExtensions_22 = -1; /* T_criticalExtensions_22 */
static int hf_rrc_r9_02 = -1; /* T_r9_02 */
-static int hf_rrc_nonCriticalExtensions_26 = -1; /* T_nonCriticalExtensions_26 */
-static int hf_rrc_criticalExtensions_21 = -1; /* T_criticalExtensions_21 */
+static int hf_rrc_nonCriticalExtensions_28 = -1; /* T_nonCriticalExtensions_28 */
+static int hf_rrc_criticalExtensions_23 = -1; /* T_criticalExtensions_23 */
+static int hf_rrc_r10_02 = -1; /* T_r10_02 */
+static int hf_rrc_nonCriticalExtensions_29 = -1; /* T_nonCriticalExtensions_29 */
+static int hf_rrc_criticalExtensions_24 = -1; /* T_criticalExtensions_24 */
static int hf_rrc_r3_06 = -1; /* T_r3_06 */
static int hf_rrc_counterCheck_r3 = -1; /* CounterCheck_r3_IEs */
static int hf_rrc_laterNonCriticalExtensions_09 = -1; /* T_laterNonCriticalExtensions_09 */
static int hf_rrc_counterCheck_r3_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_27 = -1; /* T_nonCriticalExtensions_27 */
+static int hf_rrc_nonCriticalExtensions_30 = -1; /* T_nonCriticalExtensions_30 */
static int hf_rrc_later_than_r3_05 = -1; /* T_later_than_r3_05 */
-static int hf_rrc_criticalExtensions_22 = -1; /* T_criticalExtensions_22 */
+static int hf_rrc_criticalExtensions_25 = -1; /* T_criticalExtensions_25 */
static int hf_rrc_rb_COUNT_C_MSB_InformationList = -1; /* RB_COUNT_C_MSB_InformationList */
static int hf_rrc_rb_COUNT_C_InformationList = -1; /* RB_COUNT_C_InformationList */
static int hf_rrc_laterNonCriticalExtensions_10 = -1; /* T_laterNonCriticalExtensions_10 */
static int hf_rrc_counterCheckResponse_r3_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_28 = -1; /* T_nonCriticalExtensions_28 */
+static int hf_rrc_nonCriticalExtensions_31 = -1; /* T_nonCriticalExtensions_31 */
static int hf_rrc_r3_07 = -1; /* T_r3_07 */
static int hf_rrc_downlinkDirectTransfer_r3 = -1; /* DownlinkDirectTransfer_r3_IEs */
static int hf_rrc_laterNonCriticalExtensions_11 = -1; /* T_laterNonCriticalExtensions_11 */
static int hf_rrc_downlinkDirectTransfer_r3_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_29 = -1; /* T_nonCriticalExtensions_29 */
+static int hf_rrc_nonCriticalExtensions_32 = -1; /* T_nonCriticalExtensions_32 */
static int hf_rrc_later_than_r3_06 = -1; /* T_later_than_r3_06 */
-static int hf_rrc_criticalExtensions_23 = -1; /* T_criticalExtensions_23 */
+static int hf_rrc_criticalExtensions_26 = -1; /* T_criticalExtensions_26 */
static int hf_rrc_cn_DomainIdentity = -1; /* CN_DomainIdentity */
static int hf_rrc_nas_Message = -1; /* NAS_Message */
static int hf_rrc_etws_Information = -1; /* ETWS_Information */
static int hf_rrc_etws_WarningSecurityInfo = -1; /* ETWS_WarningSecurityInfo */
-static int hf_rrc_nonCriticalExtensions_30 = -1; /* T_nonCriticalExtensions_30 */
+static int hf_rrc_nonCriticalExtensions_33 = -1; /* T_nonCriticalExtensions_33 */
static int hf_rrc_r3_08 = -1; /* T_r3_08 */
static int hf_rrc_handoverToUTRANCommand_r3 = -1; /* HandoverToUTRANCommand_r3_IEs */
-static int hf_rrc_nonCriticalExtensions_31 = -1; /* T_nonCriticalExtensions_31 */
-static int hf_rrc_criticalExtensions_24 = -1; /* T_criticalExtensions_24 */
+static int hf_rrc_nonCriticalExtensions_34 = -1; /* T_nonCriticalExtensions_34 */
+static int hf_rrc_criticalExtensions_27 = -1; /* T_criticalExtensions_27 */
static int hf_rrc_r4_02 = -1; /* T_r4_02 */
static int hf_rrc_handoverToUTRANCommand_r4 = -1; /* HandoverToUTRANCommand_r4_IEs */
-static int hf_rrc_nonCriticalExtensions_32 = -1; /* T_nonCriticalExtensions_32 */
-static int hf_rrc_criticalExtensions_25 = -1; /* T_criticalExtensions_25 */
+static int hf_rrc_nonCriticalExtensions_35 = -1; /* T_nonCriticalExtensions_35 */
+static int hf_rrc_criticalExtensions_28 = -1; /* T_criticalExtensions_28 */
static int hf_rrc_r5_02 = -1; /* T_r5_02 */
static int hf_rrc_handoverToUTRANCommand_r5 = -1; /* HandoverToUTRANCommand_r5_IEs */
-static int hf_rrc_nonCriticalExtensions_33 = -1; /* T_nonCriticalExtensions_33 */
-static int hf_rrc_criticalExtensions_26 = -1; /* T_criticalExtensions_26 */
+static int hf_rrc_nonCriticalExtensions_36 = -1; /* T_nonCriticalExtensions_36 */
+static int hf_rrc_criticalExtensions_29 = -1; /* T_criticalExtensions_29 */
static int hf_rrc_r6_03 = -1; /* T_r6_03 */
static int hf_rrc_handoverToUTRANCommand_r6 = -1; /* HandoverToUTRANCommand_r6_IEs */
static int hf_rrc_v6b0NonCriticalExtensions_04 = -1; /* T_v6b0NonCriticalExtensions_04 */
static int hf_rrc_handoverToUTRANCommand_v6b0ext = -1; /* HandoverToUTRANCommand_v6b0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_34 = -1; /* T_nonCriticalExtensions_34 */
-static int hf_rrc_criticalExtensions_27 = -1; /* T_criticalExtensions_27 */
+static int hf_rrc_nonCriticalExtensions_37 = -1; /* T_nonCriticalExtensions_37 */
+static int hf_rrc_criticalExtensions_30 = -1; /* T_criticalExtensions_30 */
static int hf_rrc_r7_03 = -1; /* T_r7_03 */
static int hf_rrc_handoverToUTRANCommand_r7 = -1; /* HandoverToUTRANCommand_r7_IEs */
static int hf_rrc_v780NonCriticalExtensions_03 = -1; /* T_v780NonCriticalExtensions_03 */
@@ -906,8 +957,8 @@ static int hf_rrc_v820NonCriticalExtensions = -1; /* T_v820NonCriticalExtension
static int hf_rrc_handoverToUTRANCommand_v820ext = -1; /* HandoverToUTRANCommand_v820ext_IEs */
static int hf_rrc_v7d0NonCriticalExtensions_02 = -1; /* T_v7d0NonCriticalExtensions_02 */
static int hf_rrc_handoverToUTRANCommand_v7d0ext = -1; /* HandoverToUTRANCommand_v7d0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_35 = -1; /* T_nonCriticalExtensions_35 */
-static int hf_rrc_criticalExtensions_28 = -1; /* T_criticalExtensions_28 */
+static int hf_rrc_nonCriticalExtensions_38 = -1; /* T_nonCriticalExtensions_38 */
+static int hf_rrc_criticalExtensions_31 = -1; /* T_criticalExtensions_31 */
static int hf_rrc_r8_03 = -1; /* T_r8_03 */
static int hf_rrc_handoverToUTRANCommand_r8 = -1; /* HandoverToUTRANCommand_r8_IEs */
static int hf_rrc_v7d0NonCriticalExtensions_03 = -1; /* T_v7d0NonCriticalExtensions_03 */
@@ -915,14 +966,18 @@ static int hf_rrc_v890NonCriticalExtensions_03 = -1; /* T_v890NonCriticalExtens
static int hf_rrc_handoverToUTRANCommand_v890ext = -1; /* HandoverToUTRANCommand_v890ext_IEs */
static int hf_rrc_v8a0NonCriticalExtensions_02 = -1; /* T_v8a0NonCriticalExtensions_02 */
static int hf_rrc_handoverToUTRANCommand_v8a0ext = -1; /* HandoverToUTRANCommand_v8a0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_36 = -1; /* T_nonCriticalExtensions_36 */
-static int hf_rrc_criticalExtensions_29 = -1; /* T_criticalExtensions_29 */
+static int hf_rrc_nonCriticalExtensions_39 = -1; /* T_nonCriticalExtensions_39 */
+static int hf_rrc_criticalExtensions_32 = -1; /* T_criticalExtensions_32 */
static int hf_rrc_r9_03 = -1; /* T_r9_03 */
static int hf_rrc_handoverToUTRANCommand_r9 = -1; /* HandoverToUTRANCommand_r9_IEs */
-static int hf_rrc_nonCriticalExtensions_37 = -1; /* T_nonCriticalExtensions_37 */
-static int hf_rrc_criticalExtensions_30 = -1; /* T_criticalExtensions_30 */
+static int hf_rrc_nonCriticalExtensions_40 = -1; /* T_nonCriticalExtensions_40 */
+static int hf_rrc_criticalExtensions_33 = -1; /* T_criticalExtensions_33 */
+static int hf_rrc_r10_03 = -1; /* T_r10_03 */
+static int hf_rrc_handoverToUTRANCommand_r10 = -1; /* HandoverToUTRANCommand_r10_IEs */
+static int hf_rrc_nonCriticalExtensions_41 = -1; /* T_nonCriticalExtensions_41 */
+static int hf_rrc_criticalExtensions_34 = -1; /* T_criticalExtensions_34 */
static int hf_rrc_new_U_RNTI_01 = -1; /* U_RNTI_Short */
-static int hf_rrc_dummy_06 = -1; /* ActivationTime */
+static int hf_rrc_dummy_07 = -1; /* ActivationTime */
static int hf_rrc_cipheringAlgorithm = -1; /* CipheringAlgorithm */
static int hf_rrc_specificationMode = -1; /* T_specificationMode */
static int hf_rrc_complete = -1; /* T_complete */
@@ -1019,7 +1074,7 @@ static int hf_rrc_rab_InformationSetupList_05 = -1; /* RAB_InformationSetupList
static int hf_rrc_preconfiguration_05 = -1; /* T_preconfiguration_05 */
static int hf_rrc_preConfigMode_05 = -1; /* T_preConfigMode_05 */
static int hf_rrc_defaultConfig_05 = -1; /* T_defaultConfig_05 */
-static int hf_rrc_dlul_HSPA_Information = -1; /* DLUL_HSPA_Information_r8 */
+static int hf_rrc_dummy_08 = -1; /* DLUL_HSPA_Information_r8 */
static int hf_rrc_modeSpecificInfo_08 = -1; /* T_modeSpecificInfo_08 */
static int hf_rrc_fdd_14 = -1; /* T_fdd_14 */
static int hf_rrc_tdd_06 = -1; /* T_tdd_05 */
@@ -1027,22 +1082,38 @@ static int hf_rrc_tdd384_04 = -1; /* T_tdd384_04 */
static int hf_rrc_tdd128_04 = -1; /* T_tdd128_04 */
static int hf_rrc_tdd768_01 = -1; /* T_tdd768_01 */
static int hf_rrc_rab_InformationSetupList_06 = -1; /* RAB_InformationSetupList_v820ext */
+static int hf_rrc_defaultConfigForCellFACH = -1; /* DefaultConfigForCellFACH */
static int hf_rrc_specificationMode_06 = -1; /* T_specificationMode_06 */
static int hf_rrc_complete_06 = -1; /* T_complete_06 */
static int hf_rrc_preconfiguration_06 = -1; /* T_preconfiguration_06 */
static int hf_rrc_preConfigMode_06 = -1; /* T_preConfigMode_06 */
static int hf_rrc_defaultConfig_06 = -1; /* T_defaultConfig_06 */
-static int hf_rrc_dlul_HSPA_Information_01 = -1; /* DLUL_HSPA_Information_r9 */
+static int hf_rrc_dummy_09 = -1; /* DLUL_HSPA_Information_r9 */
static int hf_rrc_modeSpecificInfo_09 = -1; /* T_modeSpecificInfo_09 */
static int hf_rrc_fdd_15 = -1; /* T_fdd_15 */
static int hf_rrc_tdd_07 = -1; /* T_tdd_06 */
static int hf_rrc_tdd384_05 = -1; /* T_tdd384_05 */
static int hf_rrc_tdd128_05 = -1; /* T_tdd128_05 */
static int hf_rrc_tdd768_02 = -1; /* T_tdd768_02 */
+static int hf_rrc_specificationMode_07 = -1; /* T_specificationMode_07 */
+static int hf_rrc_complete_07 = -1; /* T_complete_07 */
+static int hf_rrc_preconfiguration_07 = -1; /* T_preconfiguration_07 */
+static int hf_rrc_preConfigMode_07 = -1; /* T_preConfigMode_07 */
+static int hf_rrc_defaultConfig_07 = -1; /* T_defaultConfig_07 */
+static int hf_rrc_dummy_10 = -1; /* DLUL_HSPA_Information_r10 */
+static int hf_rrc_modeSpecificInfo_10 = -1; /* T_modeSpecificInfo_10 */
+static int hf_rrc_fdd_16 = -1; /* T_fdd_16 */
+static int hf_rrc_tdd_08 = -1; /* T_tdd_07 */
+static int hf_rrc_tdd384_06 = -1; /* T_tdd384_06 */
+static int hf_rrc_tdd128_06 = -1; /* T_tdd128_06 */
+static int hf_rrc_tdd768_03 = -1; /* T_tdd768_03 */
static int hf_rrc_count_C_ActivationTime = -1; /* ActivationTime */
static int hf_rrc_laterNonCriticalExtensions_12 = -1; /* T_laterNonCriticalExtensions_12 */
static int hf_rrc_handoverToUTRANComplete_r3_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_38 = -1; /* T_nonCriticalExtensions_38 */
+static int hf_rrc_va40NonCriticalExtensions_01 = -1; /* T_va40NonCriticalExtensions_01 */
+static int hf_rrc_handoverToUTRANComplete_va40ext = -1; /* HandoverToUTRANComplete_va40ext */
+static int hf_rrc_nonCriticalExtensions_42 = -1; /* T_nonCriticalExtensions_42 */
+static int hf_rrc_loggedMeasAvailable_01 = -1; /* T_loggedMeasAvailable_01 */
static int hf_rrc_intraDomainNasNodeSelector = -1; /* IntraDomainNasNodeSelector */
static int hf_rrc_v3a0NonCriticalExtensions_02 = -1; /* T_v3a0NonCriticalExtensions_02 */
static int hf_rrc_initialDirectTransfer_v3a0ext = -1; /* InitialDirectTransfer_v3a0ext */
@@ -1056,14 +1127,14 @@ static int hf_rrc_v770NonCriticalExtensions_01 = -1; /* T_v770NonCriticalExtens
static int hf_rrc_initialDirectTransfer_v770ext = -1; /* InitialDirectTransfer_v770ext_IEs */
static int hf_rrc_v860NonCriticalExtensions_03 = -1; /* T_v860NonCriticalExtensions_03 */
static int hf_rrc_initialDirectTransfer_v860ext = -1; /* InitialDirectTransfer_v860ext_IEs */
-static int hf_rrc_nonCriticalExtensions_39 = -1; /* T_nonCriticalExtensions_39 */
+static int hf_rrc_nonCriticalExtensions_43 = -1; /* T_nonCriticalExtensions_43 */
static int hf_rrc_start_Value = -1; /* START_Value */
static int hf_rrc_plmn_Identity = -1; /* PLMN_Identity */
static int hf_rrc_mbms_JoinedInformation = -1; /* MBMS_JoinedInformation_r6 */
static int hf_rrc_csCallType_01 = -1; /* T_csCallType_01 */
static int hf_rrc_supportOfCSG = -1; /* T_supportOfCSG */
static int hf_rrc_initialDirectTransfer_v7g0ext = -1; /* InitialDirectTransfer_v7g0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_40 = -1; /* T_nonCriticalExtensions_40 */
+static int hf_rrc_nonCriticalExtensions_44 = -1; /* T_nonCriticalExtensions_44 */
static int hf_rrc_r3_09 = -1; /* T_r3_09 */
static int hf_rrc_handoverFromUTRANCommand_GSM_r3 = -1; /* HandoverFromUTRANCommand_GSM_r3_IEs */
static int hf_rrc_laterNonCriticalExtensions_14 = -1; /* T_laterNonCriticalExtensions_14 */
@@ -1072,15 +1143,15 @@ static int hf_rrc_v690NonCriticalExtensions_09 = -1; /* T_v690NonCriticalExtens
static int hf_rrc_handoverFromUTRANCommand_GSM_v690ext = -1; /* HandoverFromUTRANCommand_GSM_v690ext_IEs */
static int hf_rrc_v860NonCriticalExtensions_04 = -1; /* T_v860NonCriticalExtensions_04 */
static int hf_rrc_handoverFromUTRANCommand_GSM_v860ext = -1; /* HandoverFromUTRANCommand_GSM_v860ext_IEs */
-static int hf_rrc_nonCriticalExtensions_41 = -1; /* T_nonCriticalExtensions_41 */
+static int hf_rrc_nonCriticalExtensions_45 = -1; /* T_nonCriticalExtensions_45 */
static int hf_rrc_later_than_r3_07 = -1; /* T_later_than_r3_07 */
-static int hf_rrc_criticalExtensions_31 = -1; /* T_criticalExtensions_31 */
+static int hf_rrc_criticalExtensions_35 = -1; /* T_criticalExtensions_35 */
static int hf_rrc_r6_04 = -1; /* T_r6_04 */
static int hf_rrc_handoverFromUTRANCommand_GSM_r6 = -1; /* HandoverFromUTRANCommand_GSM_r6_IEs */
static int hf_rrc_handoverFromUTRANCommand_GSM_r6_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v860NonCriticalExtensions_05 = -1; /* T_v860NonCriticalExtensions_05 */
-static int hf_rrc_nonCriticalExtensions_42 = -1; /* T_nonCriticalExtensions_42 */
-static int hf_rrc_criticalExtensions_32 = -1; /* T_criticalExtensions_32 */
+static int hf_rrc_nonCriticalExtensions_46 = -1; /* T_nonCriticalExtensions_46 */
+static int hf_rrc_criticalExtensions_36 = -1; /* T_criticalExtensions_36 */
static int hf_rrc_toHandoverRAB_Info = -1; /* RAB_Info */
static int hf_rrc_frequency_band = -1; /* Frequency_Band */
static int hf_rrc_gsm_message = -1; /* T_gsm_message */
@@ -1097,9 +1168,9 @@ static int hf_rrc_sr_vcc_SecurityRABInfo = -1; /* SR_VCC_SecurityRABInfo_v860
static int hf_rrc_handoverFromUTRANCommand_GERANIu_01 = -1; /* T_handoverFromUTRANCommand_GERANIu */
static int hf_rrc_r5_03 = -1; /* T_r5_03 */
static int hf_rrc_handoverFromUTRANCommand_GERANIu_r5 = -1; /* HandoverFromUTRANCommand_GERANIu_r5_IEs */
-static int hf_rrc_nonCriticalExtensions_43 = -1; /* T_nonCriticalExtensions_43 */
+static int hf_rrc_nonCriticalExtensions_47 = -1; /* T_nonCriticalExtensions_47 */
static int hf_rrc_later_than_r5 = -1; /* T_later_than_r5 */
-static int hf_rrc_criticalExtensions_33 = -1; /* T_criticalExtensions_33 */
+static int hf_rrc_criticalExtensions_37 = -1; /* T_criticalExtensions_37 */
static int hf_rrc_frequency_Band = -1; /* Frequency_Band */
static int hf_rrc_geranIu_Message = -1; /* T_geranIu_Message */
static int hf_rrc_single_GERANIu_Message = -1; /* T_single_GERANIu_Message */
@@ -1109,16 +1180,16 @@ static int hf_rrc_r3_10 = -1; /* T_r3_10 */
static int hf_rrc_handoverFromUTRANCommand_CDMA2000_r3 = -1; /* HandoverFromUTRANCommand_CDMA2000_r3_IEs */
static int hf_rrc_laterNonCriticalExtensions_15 = -1; /* T_laterNonCriticalExtensions_15 */
static int hf_rrc_handoverFromUTRANCommand_CDMA2000_r3_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_44 = -1; /* T_nonCriticalExtensions_44 */
+static int hf_rrc_nonCriticalExtensions_48 = -1; /* T_nonCriticalExtensions_48 */
static int hf_rrc_later_than_r3_08 = -1; /* T_later_than_r3_08 */
-static int hf_rrc_criticalExtensions_34 = -1; /* T_criticalExtensions_34 */
+static int hf_rrc_criticalExtensions_38 = -1; /* T_criticalExtensions_38 */
static int hf_rrc_cdma2000_MessageList = -1; /* CDMA2000_MessageList */
-static int hf_rrc_criticalExtensions_35 = -1; /* T_criticalExtensions_35 */
+static int hf_rrc_criticalExtensions_39 = -1; /* T_criticalExtensions_39 */
static int hf_rrc_r8_04 = -1; /* T_r8_04 */
static int hf_rrc_handoverFromUTRANCommand_EUTRA_r8 = -1; /* HandoverFromUTRANCommand_EUTRA_r8_IEs */
static int hf_rrc_handoverFromUTRANCommand_EUTRA_r8_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_45 = -1; /* T_nonCriticalExtensions_45 */
-static int hf_rrc_criticalExtensions_36 = -1; /* T_criticalExtensions_36 */
+static int hf_rrc_nonCriticalExtensions_49 = -1; /* T_nonCriticalExtensions_49 */
+static int hf_rrc_criticalExtensions_40 = -1; /* T_criticalExtensions_40 */
static int hf_rrc_toHandoverRAB_Info_02 = -1; /* RAB_InformationList */
static int hf_rrc_eutra_Message = -1; /* T_eutra_Message */
static int hf_rrc_interRAT_HO_FailureCause = -1; /* InterRAT_HO_FailureCause */
@@ -1132,7 +1203,7 @@ static int hf_rrc_v590NonCriticalExtensions_06 = -1; /* T_v590NonCriticalExtens
static int hf_rrc_handoverFromUTRANFailure_v590ext = -1; /* HandoverFromUtranFailure_v590ext_IEs */
static int hf_rrc_v860NonCriticalExtensions_06 = -1; /* T_v860NonCriticalExtensions_06 */
static int hf_rrc_handoverFromUTRANFailure_v860ext = -1; /* HandoverFromUtranFailure_v860ext_IEs */
-static int hf_rrc_nonCriticalExtensions_46 = -1; /* T_nonCriticalExtensions_46 */
+static int hf_rrc_nonCriticalExtensions_50 = -1; /* T_nonCriticalExtensions_50 */
static int hf_rrc_geranIu_MessageList_01 = -1; /* GERANIu_MessageList */
static int hf_rrc_eutra_Message_01 = -1; /* T_eutra_Message_01 */
static int hf_rrc_predefinedConfigStatusList = -1; /* T_predefinedConfigStatusList */
@@ -1171,7 +1242,9 @@ static int hf_rrc_v7e0NonCriticalExtensions = -1; /* T_v7e0NonCriticalExtension
static int hf_rrc_interRATHandoverInfo_v7e0ext = -1; /* InterRATHandoverInfo_v7e0ext_IEs */
static int hf_rrc_v7f0NonCriticalExtensions_04 = -1; /* T_v7f0NonCriticalExtensions_04 */
static int hf_rrc_interRATHandoverInfo_v7f0ext = -1; /* InterRATHandoverInfo_v7f0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_47 = -1; /* T_nonCriticalExtensions_47 */
+static int hf_rrc_va40NonCriticalExtensions_02 = -1; /* T_va40NonCriticalExtensions_02 */
+static int hf_rrc_interRATHandoverInfo_va40ext = -1; /* InterRATHandoverInfoBand_va40ext_IEs */
+static int hf_rrc_nonCriticalExtensions_51 = -1; /* T_nonCriticalExtensions_51 */
static int hf_rrc_accessStratumReleaseIndicator = -1; /* AccessStratumReleaseIndicator */
static int hf_rrc_tdd128_RF_Capability = -1; /* RadioFrequencyBandTDDList */
static int hf_rrc_predefinedConfigStatusListComp = -1; /* PredefinedConfigStatusListComp */
@@ -1197,7 +1270,9 @@ static int hf_rrc_v8b0NonCriticalExtensions = -1; /* T_v8b0NonCriticalExtension
static int hf_rrc_interRATHandoverInfo_v8b0ext = -1; /* InterRATHandoverInfo_v8b0ext_IEs */
static int hf_rrc_v950NonCriticalExtensions_02 = -1; /* T_v950NonCriticalExtensions_02 */
static int hf_rrc_interRATHandoverInfo_v950ext = -1; /* InterRATHandoverInfo_v950ext_IEs */
-static int hf_rrc_nonCriticalExtensions_48 = -1; /* T_nonCriticalExtensions_48 */
+static int hf_rrc_va40NonCriticalExtensions_03 = -1; /* T_va40NonCriticalExtensions_03 */
+static int hf_rrc_interRATHandoverInfo_va40ext_01 = -1; /* InterRATHandoverInfo_va40ext_IEs */
+static int hf_rrc_nonCriticalExtensions_52 = -1; /* T_nonCriticalExtensions_52 */
static int hf_rrc_supportForSIB11bis = -1; /* T_supportForSIB11bis */
static int hf_rrc_supportForFDPCH = -1; /* T_supportForFDPCH */
static int hf_rrc_ue_RadioAccessCapabilityInfo = -1; /* UE_RadioAccessCapabilityInfo_v770ext */
@@ -1215,6 +1290,10 @@ static int hf_rrc_ue_RadioAccessCapabilityInfo_03 = -1; /* UE_RadioAccessCapabi
static int hf_rrc_ue_RadioAccessCapabilityComp2_04 = -1; /* UE_RadioAccessCapabilityComp2_v920ext */
static int hf_rrc_ue_RadioAccessCapabilityInfo_04 = -1; /* UE_RadioAccessCapabilityInfo_TDD128_v8b0ext */
static int hf_rrc_pdcp_Capability = -1; /* PDCP_Capability_r4_ext */
+static int hf_rrc_ue_RadioAccessCapabilityInfo_05 = -1; /* UE_RadioAccessCapability_va40ext */
+static int hf_rrc_ue_RadioAccessCapabilityComp2_05 = -1; /* UE_RadioAccessCapabilityComp2_va40ext */
+static int hf_rrc_ue_RadioAccessCapabBand = -1; /* UE_RadioAccessCapabBand_va40ext */
+static int hf_rrc_rf_CapabilityFDDComp = -1; /* RF_CapabBandListFDDComp_ext2 */
static int hf_rrc_r3_11 = -1; /* T_r3_11 */
static int hf_rrc_measurementControl_r3 = -1; /* MeasurementControl_r3_IEs */
static int hf_rrc_v390nonCriticalExtensions = -1; /* T_v390nonCriticalExtensions */
@@ -1228,46 +1307,51 @@ static int hf_rrc_v590NonCriticalExtensions_08 = -1; /* T_v590NonCriticalExtens
static int hf_rrc_measurementControl_v590ext = -1; /* MeasurementControl_v590ext_IEs */
static int hf_rrc_v5b0NonCriticalExtensions = -1; /* T_v5b0NonCriticalExtensions */
static int hf_rrc_measurementControl_v5b0ext = -1; /* MeasurementControl_v5b0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_49 = -1; /* T_nonCriticalExtensions_49 */
+static int hf_rrc_nonCriticalExtensions_53 = -1; /* T_nonCriticalExtensions_53 */
static int hf_rrc_later_than_r3_09 = -1; /* T_later_than_r3_09 */
-static int hf_rrc_criticalExtensions_37 = -1; /* T_criticalExtensions_37 */
+static int hf_rrc_criticalExtensions_41 = -1; /* T_criticalExtensions_41 */
static int hf_rrc_r4_03 = -1; /* T_r4_03 */
static int hf_rrc_measurementControl_r4 = -1; /* MeasurementControl_r4_IEs */
static int hf_rrc_v4d0NonCriticalExtensions_03 = -1; /* T_v4d0NonCriticalExtensions_03 */
static int hf_rrc_measurementControl_r4_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v590NonCriticalExtensions_09 = -1; /* T_v590NonCriticalExtensions_09 */
static int hf_rrc_v5b0NonCriticalExtensions_01 = -1; /* T_v5b0NonCriticalExtensions_01 */
-static int hf_rrc_nonCriticalExtensions_50 = -1; /* T_nonCriticalExtensions_50 */
+static int hf_rrc_nonCriticalExtensions_54 = -1; /* T_nonCriticalExtensions_54 */
static int hf_rrc_later_than_r4 = -1; /* T_later_than_r4 */
static int hf_rrc_rrc_TransactionIdentifier_MSP = -1; /* RRC_TransactionIdentifier */
-static int hf_rrc_criticalExtensions_38 = -1; /* T_criticalExtensions_38 */
+static int hf_rrc_criticalExtensions_42 = -1; /* T_criticalExtensions_42 */
static int hf_rrc_r6_05 = -1; /* T_r6_05 */
static int hf_rrc_measurementControl_r6 = -1; /* MeasurementControl_r6_IEs */
static int hf_rrc_v6a0NonCriticalExtensions = -1; /* T_v6a0NonCriticalExtensions */
static int hf_rrc_measurementControl_v6a0ext = -1; /* MeasurementControl_v6a0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_51 = -1; /* T_nonCriticalExtensions_51 */
-static int hf_rrc_criticalExtensions_39 = -1; /* T_criticalExtensions_39 */
+static int hf_rrc_nonCriticalExtensions_55 = -1; /* T_nonCriticalExtensions_55 */
+static int hf_rrc_criticalExtensions_43 = -1; /* T_criticalExtensions_43 */
static int hf_rrc_r7_04 = -1; /* T_r7_04 */
static int hf_rrc_measurementControl_r7 = -1; /* MeasurementControl_r7_IEs */
static int hf_rrc_measurementControl_r7_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v7b0NonCriticalExtensions = -1; /* T_v7b0NonCriticalExtensions */
static int hf_rrc_measurementControl_v7b0ext = -1; /* MeasurementControl_v7b0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_52 = -1; /* T_nonCriticalExtensions_52 */
-static int hf_rrc_criticalExtensions_40 = -1; /* T_criticalExtensions_40 */
+static int hf_rrc_nonCriticalExtensions_56 = -1; /* T_nonCriticalExtensions_56 */
+static int hf_rrc_criticalExtensions_44 = -1; /* T_criticalExtensions_44 */
static int hf_rrc_r8_05 = -1; /* T_r8_05 */
static int hf_rrc_measurementControl_r8 = -1; /* MeasurementControl_r8_IEs */
static int hf_rrc_measurementControl_r8_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v8a0NonCriticalExtensions_03 = -1; /* T_v8a0NonCriticalExtensions_03 */
static int hf_rrc_measurementControl_v8a0ext = -1; /* MeasurementControl_v8a0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_53 = -1; /* T_nonCriticalExtensions_53 */
-static int hf_rrc_criticalExtensions_41 = -1; /* T_criticalExtensions_41 */
+static int hf_rrc_nonCriticalExtensions_57 = -1; /* T_nonCriticalExtensions_57 */
+static int hf_rrc_criticalExtensions_45 = -1; /* T_criticalExtensions_45 */
static int hf_rrc_r9_04 = -1; /* T_r9_04 */
static int hf_rrc_measurementControl_r9 = -1; /* MeasurementControl_r9_IEs */
static int hf_rrc_measurementControl_r9_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v970NonCriticalExtensions = -1; /* T_v970NonCriticalExtensions */
static int hf_rrc_measurementControl_v970ext = -1; /* MeasurementControl_v970ext_IEs */
-static int hf_rrc_nonCriticalExtensions_54 = -1; /* T_nonCriticalExtensions_54 */
-static int hf_rrc_criticalExtensions_42 = -1; /* T_criticalExtensions_42 */
+static int hf_rrc_nonCriticalExtensions_58 = -1; /* T_nonCriticalExtensions_58 */
+static int hf_rrc_criticalExtensions_46 = -1; /* T_criticalExtensions_46 */
+static int hf_rrc_r10_04 = -1; /* T_r10_04 */
+static int hf_rrc_measurementControl_r10 = -1; /* MeasurementControl_r10_IEs */
+static int hf_rrc_measurementControl_r10_add_ext = -1; /* BIT_STRING */
+static int hf_rrc_nonCriticalExtensions_59 = -1; /* T_nonCriticalExtensions_59 */
+static int hf_rrc_criticalExtensions_47 = -1; /* T_criticalExtensions_47 */
static int hf_rrc_measurementIdentity = -1; /* MeasurementIdentity */
static int hf_rrc_measurementCommand = -1; /* MeasurementCommand */
static int hf_rrc_measurementReportingMode = -1; /* MeasurementReportingMode */
@@ -1291,11 +1375,13 @@ static int hf_rrc_newInterFreqCellList_01 = -1; /* NewInterFreqCellList_LCR_v8
static int hf_rrc_measurementCommand_05 = -1; /* MeasurementCommand_r9 */
static int hf_rrc_measurementIdentity_01 = -1; /* MeasurementIdentity_r9 */
static int hf_rrc_additionalMeasurementList_01 = -1; /* AdditionalMeasurementID_List_r9 */
+static int hf_rrc_measurementCommand_06 = -1; /* MeasurementCommand_r10 */
+static int hf_rrc_dpch_CompressedModeStatusInfo_01 = -1; /* DPCH_CompressedModeStatusInfo_r10 */
static int hf_rrc_laterNonCriticalExtensions_19 = -1; /* T_laterNonCriticalExtensions_19 */
static int hf_rrc_measurementControlFailure_r3_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v590NonCriticalExtensions_10 = -1; /* T_v590NonCriticalExtensions_10 */
static int hf_rrc_measurementControlFailure_v590ext = -1; /* MeasurementControlFailure_v590ext_IEs */
-static int hf_rrc_nonCriticalExtensions_55 = -1; /* T_nonCriticalExtensions_55 */
+static int hf_rrc_nonCriticalExtensions_60 = -1; /* T_nonCriticalExtensions_60 */
static int hf_rrc_measuredResults = -1; /* MeasuredResults */
static int hf_rrc_additionalMeasuredResults = -1; /* MeasuredResultsList */
static int hf_rrc_eventResults = -1; /* EventResults */
@@ -1319,11 +1405,13 @@ static int hf_rrc_v920NonCriticalExtensions_01 = -1; /* T_v920NonCriticalExtens
static int hf_rrc_measurementReport_v920ext = -1; /* MeasurementReport_v920ext_IEs */
static int hf_rrc_v970NonCriticalExtensions_01 = -1; /* T_v970NonCriticalExtensions_01 */
static int hf_rrc_measurementReport_v970ext_IE = -1; /* MeasurementReport_v970ext_IEs */
-static int hf_rrc_nonCriticalExtensions_56 = -1; /* T_nonCriticalExtensions_56 */
+static int hf_rrc_va40NonCriticalExtensions_04 = -1; /* T_va40NonCriticalExtensions_04 */
+static int hf_rrc_measurementReport_va40ext = -1; /* MeasurementReport_va40ext_IEs */
+static int hf_rrc_nonCriticalExtensions_61 = -1; /* T_nonCriticalExtensions_61 */
static int hf_rrc_measuredResults_v390ext = -1; /* MeasuredResults_v390ext */
static int hf_rrc_interFreqEventResults_LCR = -1; /* InterFreqEventResults_LCR_r4_ext */
static int hf_rrc_additionalMeasuredResults_LCR = -1; /* MeasuredResultsList_LCR_r4_ext */
-static int hf_rrc_dummy_07 = -1; /* PrimaryCPICH_Info */
+static int hf_rrc_dummy_11 = -1; /* PrimaryCPICH_Info */
static int hf_rrc_measuredResults_v590ext = -1; /* MeasuredResults_v590ext */
static int hf_rrc_measuredResults_01 = -1; /* MeasuredResults_v770ext */
static int hf_rrc_additionalMeasuredResults_01 = -1; /* MeasuredResultsList_v770xet */
@@ -1342,6 +1430,9 @@ static int hf_rrc_additionalMeasuredResultsOnSecUlFreq = -1; /* MeasuredResults
static int hf_rrc_eventResultsOnSecUlFreq = -1; /* EventResultsOnSecUlFreq */
static int hf_rrc_eutra_MeasuredResults_01 = -1; /* EUTRA_MeasuredResults_v920ext */
static int hf_rrc_measurementIdentity_02 = -1; /* MeasurementIdentityExt */
+static int hf_rrc_eventResults_03 = -1; /* EventResults_va40ext */
+static int hf_rrc_loggedMeasAvailable_02 = -1; /* T_loggedMeasAvailable_02 */
+static int hf_rrc_loggedANRResultsAvailable_01 = -1; /* T_loggedANRResultsAvailable_01 */
static int hf_rrc_pagingRecordList = -1; /* PagingRecordList */
static int hf_rrc_bcch_ModificationInfo = -1; /* BCCH_ModificationInfo */
static int hf_rrc_laterNonCriticalExtensions_21 = -1; /* T_laterNonCriticalExtensions_21 */
@@ -1350,13 +1441,13 @@ static int hf_rrc_v590NonCriticalExtensions_12 = -1; /* T_v590NonCriticalExtens
static int hf_rrc_pagingType1_v590ext = -1; /* PagingType1_v590ext_IEs */
static int hf_rrc_v860NonCriticalExtensions_09 = -1; /* T_v860NonCriticalExtensions_09 */
static int hf_rrc_pagingType1_v860ext = -1; /* PagingType1_v860ext_IEs */
-static int hf_rrc_nonCriticalExtensions_57 = -1; /* T_nonCriticalExtensions_57 */
+static int hf_rrc_nonCriticalExtensions_62 = -1; /* T_nonCriticalExtensions_62 */
static int hf_rrc_pagingRecord2List = -1; /* PagingRecord2List_r5 */
static int hf_rrc_pagingCause = -1; /* PagingCause */
static int hf_rrc_pagingRecordTypeID = -1; /* PagingRecordTypeID */
static int hf_rrc_laterNonCriticalExtensions_22 = -1; /* T_laterNonCriticalExtensions_22 */
static int hf_rrc_pagingType2_r3_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_58 = -1; /* T_nonCriticalExtensions_58 */
+static int hf_rrc_nonCriticalExtensions_63 = -1; /* T_nonCriticalExtensions_63 */
static int hf_rrc_r3_12 = -1; /* T_r3_12 */
static int hf_rrc_physicalChannelReconfiguration_r3 = -1; /* PhysicalChannelReconfiguration_r3_IEs */
static int hf_rrc_v3a0NonCriticalExtensions_05 = -1; /* T_v3a0NonCriticalExtensions_05 */
@@ -1371,9 +1462,9 @@ static int hf_rrc_v690NonCriticalExtensions_12 = -1; /* T_v690NonCriticalExtens
static int hf_rrc_physicalChannelReconfiguration_v690ext = -1; /* PhysicalChannelReconfiguration_v690ext_IEs */
static int hf_rrc_v770NonCriticalExtensions_04 = -1; /* T_v770NonCriticalExtensions_04 */
static int hf_rrc_physicalChannelReconfiguration_v770ext = -1; /* PhysicalChannelReconfiguration_v770ext_IEs */
-static int hf_rrc_nonCriticalExtensions_59 = -1; /* T_nonCriticalExtensions_59 */
+static int hf_rrc_nonCriticalExtensions_64 = -1; /* T_nonCriticalExtensions_64 */
static int hf_rrc_later_than_r3_10 = -1; /* T_later_than_r3_10 */
-static int hf_rrc_criticalExtensions_43 = -1; /* T_criticalExtensions_43 */
+static int hf_rrc_criticalExtensions_48 = -1; /* T_criticalExtensions_48 */
static int hf_rrc_r4_04 = -1; /* T_r4_04 */
static int hf_rrc_physicalChannelReconfiguration_r4 = -1; /* PhysicalChannelReconfiguration_r4_IEs */
static int hf_rrc_v4d0NonCriticalExtensions_04 = -1; /* T_v4d0NonCriticalExtensions_04 */
@@ -1381,23 +1472,23 @@ static int hf_rrc_physicalChannelReconfiguration_r4_add_ext = -1; /* BIT_STRING
static int hf_rrc_v590NonCriticalExtenstions_03 = -1; /* T_v590NonCriticalExtenstions_03 */
static int hf_rrc_v690NonCriticalExtensions_13 = -1; /* T_v690NonCriticalExtensions_13 */
static int hf_rrc_v770NonCriticalExtensions_05 = -1; /* T_v770NonCriticalExtensions_05 */
-static int hf_rrc_nonCriticalExtensions_60 = -1; /* T_nonCriticalExtensions_60 */
-static int hf_rrc_criticalExtensions_44 = -1; /* T_criticalExtensions_44 */
+static int hf_rrc_nonCriticalExtensions_65 = -1; /* T_nonCriticalExtensions_65 */
+static int hf_rrc_criticalExtensions_49 = -1; /* T_criticalExtensions_49 */
static int hf_rrc_r5_04 = -1; /* T_r5_04 */
static int hf_rrc_physicalChannelReconfiguration_r5 = -1; /* PhysicalChannelReconfiguration_r5_IEs */
static int hf_rrc_physicalChannelReconfiguration_r5_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v690NonCriticalExtensions_14 = -1; /* T_v690NonCriticalExtensions_14 */
static int hf_rrc_v770NonCriticalExtensions_06 = -1; /* T_v770NonCriticalExtensions_06 */
-static int hf_rrc_nonCriticalExtensions_61 = -1; /* T_nonCriticalExtensions_61 */
-static int hf_rrc_criticalExtensions_45 = -1; /* T_criticalExtensions_45 */
+static int hf_rrc_nonCriticalExtensions_66 = -1; /* T_nonCriticalExtensions_66 */
+static int hf_rrc_criticalExtensions_50 = -1; /* T_criticalExtensions_50 */
static int hf_rrc_r6_06 = -1; /* T_r6_06 */
static int hf_rrc_physicalChannelReconfiguration_r6 = -1; /* PhysicalChannelReconfiguration_r6_IEs */
static int hf_rrc_physicalChannelReconfiguration_r6_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v6b0NonCriticalExtensions_06 = -1; /* T_v6b0NonCriticalExtensions_05 */
static int hf_rrc_physicalChannelReconfiguration_v6b0ext = -1; /* PhysicalChannelReconfiguration_v6b0ext_IEs */
static int hf_rrc_v770NonCriticalExtensions_07 = -1; /* T_v770NonCriticalExtensions_07 */
-static int hf_rrc_nonCriticalExtensions_62 = -1; /* T_nonCriticalExtensions_62 */
-static int hf_rrc_criticalExtensions_46 = -1; /* T_criticalExtensions_46 */
+static int hf_rrc_nonCriticalExtensions_67 = -1; /* T_nonCriticalExtensions_67 */
+static int hf_rrc_criticalExtensions_51 = -1; /* T_criticalExtensions_51 */
static int hf_rrc_r7_05 = -1; /* T_r7_05 */
static int hf_rrc_physicalChannelReconfiguration_r7 = -1; /* PhysicalChannelReconfiguration_r7_IEs */
static int hf_rrc_physicalChannelReconfiguration_r7_add_ext = -1; /* BIT_STRING */
@@ -1409,8 +1500,8 @@ static int hf_rrc_v7f0NonCriticalExtensions_05 = -1; /* T_v7f0NonCriticalExtens
static int hf_rrc_physicalChannelReconfiguration_v7f0ext = -1; /* PhysicalChannelReconfiguration_v7f0ext_IEs */
static int hf_rrc_v7g0NonCriticalExtensions_06 = -1; /* T_v7g0NonCriticalExtensions_06 */
static int hf_rrc_physicalChannelReconfiguration_v7g0ext = -1; /* PhysicalChannelReconfiguration_v7g0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_63 = -1; /* T_nonCriticalExtensions_63 */
-static int hf_rrc_criticalExtensions_47 = -1; /* T_criticalExtensions_47 */
+static int hf_rrc_nonCriticalExtensions_68 = -1; /* T_nonCriticalExtensions_68 */
+static int hf_rrc_criticalExtensions_52 = -1; /* T_criticalExtensions_52 */
static int hf_rrc_r8_06 = -1; /* T_r8_06 */
static int hf_rrc_physicalChannelReconfiguration_r8 = -1; /* PhysicalChannelReconfiguration_r8_IEs */
static int hf_rrc_physicalChannelReconfiguration_r8_add_ext = -1; /* BIT_STRING */
@@ -1421,24 +1512,29 @@ static int hf_rrc_physicalChannelReconfiguration_v890ext = -1; /* PhysicalChann
static int hf_rrc_v7g0NonCriticalExtensions_07 = -1; /* T_v7g0NonCriticalExtensions_07 */
static int hf_rrc_v8a0NonCriticalExtensions_04 = -1; /* T_v8a0NonCriticalExtensions_04 */
static int hf_rrc_physicalChannelReconfiguration_v8a0ext = -1; /* PhysicalChannelReconfiguration_v8a0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_64 = -1; /* T_nonCriticalExtensions_64 */
-static int hf_rrc_criticalExtensions_48 = -1; /* T_criticalExtensions_48 */
+static int hf_rrc_nonCriticalExtensions_69 = -1; /* T_nonCriticalExtensions_69 */
+static int hf_rrc_criticalExtensions_53 = -1; /* T_criticalExtensions_53 */
static int hf_rrc_r9_05 = -1; /* T_r9_05 */
static int hf_rrc_physicalChannelReconfiguration_r9 = -1; /* PhysicalChannelReconfiguration_r9_IEs */
static int hf_rrc_physicalChannelReconfiguration_r9_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v950NonCriticalExtensions_03 = -1; /* T_v950NonCriticalExtensions_03 */
static int hf_rrc_physicalChannelReconfiguration_v950ext = -1; /* PhysicalChannelReconfiguration_v950ext_IEs */
-static int hf_rrc_nonCriticalExtensions_65 = -1; /* T_nonCriticalExtensions_65 */
-static int hf_rrc_criticalExtensions_49 = -1; /* T_criticalExtensions_49 */
+static int hf_rrc_nonCriticalExtensions_70 = -1; /* T_nonCriticalExtensions_70 */
+static int hf_rrc_criticalExtensions_54 = -1; /* T_criticalExtensions_54 */
+static int hf_rrc_r10_05 = -1; /* T_r10_05 */
+static int hf_rrc_physicalChannelReconfiguration_r10 = -1; /* PhysicalChannelReconfiguration_r10_IEs */
+static int hf_rrc_physicalChannelReconfiguration_r10_add_ext = -1; /* BIT_STRING */
+static int hf_rrc_nonCriticalExtensions_71 = -1; /* T_nonCriticalExtensions_71 */
+static int hf_rrc_criticalExtensions_55 = -1; /* T_criticalExtensions_55 */
static int hf_rrc_ul_ChannelRequirement_03 = -1; /* UL_ChannelRequirementWithCPCH_SetID */
-static int hf_rrc_modeSpecificInfo_10 = -1; /* T_modeSpecificInfo_10 */
-static int hf_rrc_fdd_16 = -1; /* T_fdd_16 */
-static int hf_rrc_ul_ChannelRequirement_04 = -1; /* UL_ChannelRequirementWithCPCH_SetID_r4 */
static int hf_rrc_modeSpecificInfo_11 = -1; /* T_modeSpecificInfo_11 */
static int hf_rrc_fdd_17 = -1; /* T_fdd_17 */
-static int hf_rrc_ul_ChannelRequirement_05 = -1; /* UL_ChannelRequirementWithCPCH_SetID_r5 */
+static int hf_rrc_ul_ChannelRequirement_04 = -1; /* UL_ChannelRequirementWithCPCH_SetID_r4 */
static int hf_rrc_modeSpecificInfo_12 = -1; /* T_modeSpecificInfo_12 */
static int hf_rrc_fdd_18 = -1; /* T_fdd_18 */
+static int hf_rrc_ul_ChannelRequirement_05 = -1; /* UL_ChannelRequirementWithCPCH_SetID_r5 */
+static int hf_rrc_modeSpecificInfo_13 = -1; /* T_modeSpecificInfo_13 */
+static int hf_rrc_fdd_19 = -1; /* T_fdd_19 */
static int hf_rrc_delayRestrictionFlag = -1; /* DelayRestrictionFlag */
static int hf_rrc_postVerificationPeriod_01 = -1; /* T_postVerificationPeriod_01 */
static int hf_rrc_timingMaintainedSynchInd = -1; /* TimingMaintainedSynchInd */
@@ -1446,28 +1542,29 @@ static int hf_rrc_responseToChangeOfUE_Capability = -1; /* T_responseToChangeOf
static int hf_rrc_harqInfo = -1; /* HARQ_Info_r7 */
static int hf_rrc_responseToChangeOfUE_Capability_01 = -1; /* T_responseToChangeOfUE_Capability_01 */
static int hf_rrc_responseToChangeOfUE_Capability_02 = -1; /* T_responseToChangeOfUE_Capability_02 */
+static int hf_rrc_responseToChangeOfUE_Capability_03 = -1; /* T_responseToChangeOfUE_Capability_03 */
static int hf_rrc_ul_IntegProtActivationInfo = -1; /* IntegrityProtActivationInfo */
static int hf_rrc_ul_TimingAdvance = -1; /* UL_TimingAdvance */
-static int hf_rrc_dummy_08 = -1; /* RB_ActivationTimeInfoList */
+static int hf_rrc_dummy_12 = -1; /* RB_ActivationTimeInfoList */
static int hf_rrc_ul_CounterSynchronisationInfo = -1; /* UL_CounterSynchronisationInfo */
static int hf_rrc_laterNonCriticalExtensions_24 = -1; /* T_laterNonCriticalExtensions_24 */
static int hf_rrc_physicalChannelReconfigurationComplete_r3_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v770NonCriticalExtensions_08 = -1; /* T_v770NonCriticalExtensions_08 */
static int hf_rrc_physicalChannelReconfigurationComplete_v770ext = -1; /* PhysicalChannelReconfigurationComplete_v770ext_IEs */
-static int hf_rrc_nonCriticalExtensions_66 = -1; /* T_nonCriticalExtensions_66 */
+static int hf_rrc_nonCriticalExtensions_72 = -1; /* T_nonCriticalExtensions_72 */
static int hf_rrc_ext_UL_TimingAdvance = -1; /* EXT_UL_TimingAdvance */
static int hf_rrc_deferredMeasurementControlReading = -1; /* T_deferredMeasurementControlReading */
static int hf_rrc_laterNonCriticalExtensions_25 = -1; /* T_laterNonCriticalExtensions_25 */
static int hf_rrc_physicalChannelReconfigurationFailure_r3_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_67 = -1; /* T_nonCriticalExtensions_67 */
+static int hf_rrc_nonCriticalExtensions_73 = -1; /* T_nonCriticalExtensions_73 */
static int hf_rrc_r3_13 = -1; /* T_r3_13 */
static int hf_rrc_physicalSharedChannelAllocation_r3 = -1; /* PhysicalSharedChannelAllocation_r3_IEs */
static int hf_rrc_laterNonCriticalExtensions_26 = -1; /* T_laterNonCriticalExtensions_26 */
static int hf_rrc_physicalSharedChannelAllocation_r3_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_68 = -1; /* T_nonCriticalExtensions_68 */
+static int hf_rrc_nonCriticalExtensions_74 = -1; /* T_nonCriticalExtensions_74 */
static int hf_rrc_later_than_r3_11 = -1; /* T_later_than_r3_11 */
static int hf_rrc_dsch_RNTI = -1; /* DSCH_RNTI */
-static int hf_rrc_criticalExtensions_50 = -1; /* T_criticalExtensions_50 */
+static int hf_rrc_criticalExtensions_56 = -1; /* T_criticalExtensions_56 */
static int hf_rrc_r4_05 = -1; /* T_r4_05 */
static int hf_rrc_physicalSharedChannelAllocation_r4 = -1; /* PhysicalSharedChannelAllocation_r4_IEs */
static int hf_rrc_v4d0NonCriticalExtensions_05 = -1; /* T_v4d0NonCriticalExtensions_05 */
@@ -1476,8 +1573,8 @@ static int hf_rrc_v690NonCriticalExtensions_15 = -1; /* T_v690NonCriticalExtens
static int hf_rrc_physicalSharedChannelAllocation_v690ext = -1; /* PhysicalSharedChannelAllocation_v690ext_IEs */
static int hf_rrc_v770NonCriticalExtensions_09 = -1; /* T_v770NonCriticalExtensions_09 */
static int hf_rrc_physicalSharedChannelAllocation_v770ext = -1; /* PhysicalSharedChannelAllocation_v770ext_IEs */
-static int hf_rrc_nonCriticalExtensions_69 = -1; /* T_nonCriticalExtensions_69 */
-static int hf_rrc_criticalExtensions_51 = -1; /* T_criticalExtensions_51 */
+static int hf_rrc_nonCriticalExtensions_75 = -1; /* T_nonCriticalExtensions_75 */
+static int hf_rrc_criticalExtensions_57 = -1; /* T_criticalExtensions_57 */
static int hf_rrc_ul_TimingAdvance_01 = -1; /* UL_TimingAdvanceControl */
static int hf_rrc_pusch_CapacityAllocationInfo = -1; /* PUSCH_CapacityAllocationInfo */
static int hf_rrc_pdsch_CapacityAllocationInfo = -1; /* PDSCH_CapacityAllocationInfo */
@@ -1504,7 +1601,7 @@ static int hf_rrc_laterNonCriticalExtensions_27 = -1; /* T_laterNonCriticalExte
static int hf_rrc_puschCapacityRequest_r3_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v590NonCriticalExtensions_13 = -1; /* T_v590NonCriticalExtensions_13 */
static int hf_rrc_puschCapacityRequest_v590ext = -1; /* PUSCHCapacityRequest_v590ext */
-static int hf_rrc_nonCriticalExtensions_70 = -1; /* T_nonCriticalExtensions_70 */
+static int hf_rrc_nonCriticalExtensions_76 = -1; /* T_nonCriticalExtensions_76 */
static int hf_rrc_primaryCCPCH_RSCP_delta = -1; /* DeltaRSCP */
static int hf_rrc_r3_14 = -1; /* T_r3_14 */
static int hf_rrc_radioBearerReconfiguration_r3 = -1; /* RadioBearerReconfiguration_r3_IEs */
@@ -1522,9 +1619,9 @@ static int hf_rrc_v690NonCriticalExtensions_16 = -1; /* T_v690NonCriticalExtens
static int hf_rrc_radioBearerReconfiguration_v690ext = -1; /* RadioBearerReconfiguration_v690ext_IEs */
static int hf_rrc_v770NonCriticalExtensions_10 = -1; /* T_v770NonCriticalExtensions_10 */
static int hf_rrc_radioBearerReconfiguration_v770ext = -1; /* RadioBearerReconfiguration_v770ext_IEs */
-static int hf_rrc_nonCriticalExtensions_71 = -1; /* T_nonCriticalExtensions_71 */
+static int hf_rrc_nonCriticalExtensions_77 = -1; /* T_nonCriticalExtensions_77 */
static int hf_rrc_later_than_r3_12 = -1; /* T_later_than_r3_12 */
-static int hf_rrc_criticalExtensions_52 = -1; /* T_criticalExtensions_52 */
+static int hf_rrc_criticalExtensions_58 = -1; /* T_criticalExtensions_58 */
static int hf_rrc_r4_06 = -1; /* T_r4_06 */
static int hf_rrc_radioBearerReconfiguration_r4 = -1; /* RadioBearerReconfiguration_r4_IEs */
static int hf_rrc_v4d0NonCriticalExtensions_06 = -1; /* T_v4d0NonCriticalExtensions_06 */
@@ -1533,16 +1630,16 @@ static int hf_rrc_v590NonCriticalExtensions_15 = -1; /* T_v590NonCriticalExtens
static int hf_rrc_v5d0NonCriticalExtenstions_07 = -1; /* T_v5d0NonCriticalExtenstions_07 */
static int hf_rrc_v690NonCriticalExtensions_17 = -1; /* T_v690NonCriticalExtensions_17 */
static int hf_rrc_v770NonCriticalExtensions_11 = -1; /* T_v770NonCriticalExtensions_11 */
-static int hf_rrc_nonCriticalExtensions_72 = -1; /* T_nonCriticalExtensions_72 */
-static int hf_rrc_criticalExtensions_53 = -1; /* T_criticalExtensions_53 */
+static int hf_rrc_nonCriticalExtensions_78 = -1; /* T_nonCriticalExtensions_78 */
+static int hf_rrc_criticalExtensions_59 = -1; /* T_criticalExtensions_59 */
static int hf_rrc_r5_05 = -1; /* T_r5_05 */
static int hf_rrc_radioBearerReconfiguration_r5 = -1; /* RadioBearerReconfiguration_r5_IEs */
static int hf_rrc_radioBearerReconfiguration_r5_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v5d0NonCriticalExtenstions_08 = -1; /* T_v5d0NonCriticalExtenstions_08 */
static int hf_rrc_v690NonCriticalExtensions_18 = -1; /* T_v690NonCriticalExtensions_18 */
static int hf_rrc_v770NonCriticalExtensions_12 = -1; /* T_v770NonCriticalExtensions_12 */
-static int hf_rrc_nonCriticalExtensions_73 = -1; /* T_nonCriticalExtensions_73 */
-static int hf_rrc_criticalExtensions_54 = -1; /* T_criticalExtensions_54 */
+static int hf_rrc_nonCriticalExtensions_79 = -1; /* T_nonCriticalExtensions_79 */
+static int hf_rrc_criticalExtensions_60 = -1; /* T_criticalExtensions_60 */
static int hf_rrc_r6_07 = -1; /* T_r6_07 */
static int hf_rrc_radioBearerReconfiguration_r6 = -1; /* RadioBearerReconfiguration_r6_IEs */
static int hf_rrc_radioBearerReconfiguration_r6_add_ext = -1; /* BIT_STRING */
@@ -1551,8 +1648,8 @@ static int hf_rrc_radioBearerReconfiguration_v6b0ext = -1; /* RadioBearerReconf
static int hf_rrc_v6f0NonCriticalExtensions = -1; /* T_v6f0NonCriticalExtensions */
static int hf_rrc_radioBearerRconfiguration_v6f0ext = -1; /* RadioBearerReconfiguration_v6f0ext_IEs */
static int hf_rrc_v770NonCriticalExtensions_13 = -1; /* T_v770NonCriticalExtensions_13 */
-static int hf_rrc_nonCriticalExtensions_74 = -1; /* T_nonCriticalExtensions_74 */
-static int hf_rrc_criticalExtensions_55 = -1; /* T_criticalExtensions_55 */
+static int hf_rrc_nonCriticalExtensions_80 = -1; /* T_nonCriticalExtensions_80 */
+static int hf_rrc_criticalExtensions_61 = -1; /* T_criticalExtensions_61 */
static int hf_rrc_r7_06 = -1; /* T_r7_06 */
static int hf_rrc_radioBearerReconfiguration_r7 = -1; /* RadioBearerReconfiguration_r7_IEs */
static int hf_rrc_v780NonCriticalExtensions_05 = -1; /* T_v780NonCriticalExtensions_05 */
@@ -1565,8 +1662,8 @@ static int hf_rrc_v7f0NonCriticalExtensions_07 = -1; /* T_v7f0NonCriticalExtens
static int hf_rrc_radioBearerReconfiguration_v7f0ext = -1; /* RadioBearerReconfiguration_v7f0ext_IEs */
static int hf_rrc_v7g0NonCriticalExtensions_08 = -1; /* T_v7g0NonCriticalExtensions_08 */
static int hf_rrc_radioBearerReconfiguration_v7g0ext = -1; /* RadioBearerReconfiguration_v7g0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_75 = -1; /* T_nonCriticalExtensions_75 */
-static int hf_rrc_criticalExtensions_56 = -1; /* T_criticalExtensions_56 */
+static int hf_rrc_nonCriticalExtensions_81 = -1; /* T_nonCriticalExtensions_81 */
+static int hf_rrc_criticalExtensions_62 = -1; /* T_criticalExtensions_62 */
static int hf_rrc_r8_07 = -1; /* T_r8_07 */
static int hf_rrc_radioBearerReconfiguration_r8 = -1; /* RadioBearerReconfiguration_r8_IEs */
static int hf_rrc_radioBearerReconfiguration_r8_add_ext = -1; /* BIT_STRING */
@@ -1577,75 +1674,86 @@ static int hf_rrc_radioBearerReconfiguration_v890ext = -1; /* RadioBearerReconf
static int hf_rrc_v7g0NonCriticalExtensions_09 = -1; /* T_v7g0NonCriticalExtensions_09 */
static int hf_rrc_v8a0NonCriticalExtensions_05 = -1; /* T_v8a0NonCriticalExtensions_05 */
static int hf_rrc_radioBearerReconfiguration_v8a0ext = -1; /* RadioBearerReconfiguration_v8a0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_76 = -1; /* T_nonCriticalExtensions_76 */
-static int hf_rrc_criticalExtensions_57 = -1; /* T_criticalExtensions_57 */
+static int hf_rrc_nonCriticalExtensions_82 = -1; /* T_nonCriticalExtensions_82 */
+static int hf_rrc_criticalExtensions_63 = -1; /* T_criticalExtensions_63 */
static int hf_rrc_r9_06 = -1; /* T_r9_06 */
static int hf_rrc_radioBearerReconfiguration_r9 = -1; /* RadioBearerReconfiguration_r9_IEs */
static int hf_rrc_radioBearerReconfiguration_r9_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v950NonCriticalExtensions_04 = -1; /* T_v950NonCriticalExtensions_04 */
static int hf_rrc_radioBearerReconfiguration_v950ext = -1; /* RadioBearerReconfiguration_v950ext_IEs */
-static int hf_rrc_nonCriticalExtensions_77 = -1; /* T_nonCriticalExtensions_77 */
-static int hf_rrc_criticalExtensions_58 = -1; /* T_criticalExtensions_58 */
+static int hf_rrc_nonCriticalExtensions_83 = -1; /* T_nonCriticalExtensions_83 */
+static int hf_rrc_criticalExtensions_64 = -1; /* T_criticalExtensions_64 */
+static int hf_rrc_r10_06 = -1; /* T_r10_06 */
+static int hf_rrc_radioBearerReconfiguration_r10 = -1; /* RadioBearerReconfiguration_r10_IEs */
+static int hf_rrc_radioBearerReconfiguration_r10_add_ext = -1; /* BIT_STRING */
+static int hf_rrc_nonCriticalExtensions_84 = -1; /* T_nonCriticalExtensions_84 */
+static int hf_rrc_criticalExtensions_65 = -1; /* T_criticalExtensions_65 */
static int hf_rrc_rab_InformationReconfigList = -1; /* RAB_InformationReconfigList */
-static int hf_rrc_dummy_09 = -1; /* T_dummy_01 */
-static int hf_rrc_fdd_19 = -1; /* T_fdd_19 */
+static int hf_rrc_dummy_13 = -1; /* T_dummy_01 */
+static int hf_rrc_fdd_20 = -1; /* T_fdd_20 */
static int hf_rrc_dummy1 = -1; /* CPCH_SetID */
static int hf_rrc_dl_AddReconfTransChInfoList_05 = -1; /* DL_AddReconfTransChInfo2List */
static int hf_rrc_modeSpecificPhysChInfo_03 = -1; /* T_modeSpecificPhysChInfo_03 */
-static int hf_rrc_fdd_20 = -1; /* T_fdd_20 */
-static int hf_rrc_dummy_10 = -1; /* T_dummy_02 */
static int hf_rrc_fdd_21 = -1; /* T_fdd_21 */
-static int hf_rrc_modeSpecificPhysChInfo_04 = -1; /* T_modeSpecificPhysChInfo_04 */
+static int hf_rrc_dummy_14 = -1; /* T_dummy_02 */
static int hf_rrc_fdd_22 = -1; /* T_fdd_22 */
-static int hf_rrc_specificationMode_07 = -1; /* T_specificationMode_07 */
-static int hf_rrc_complete_07 = -1; /* T_complete_07 */
-static int hf_rrc_rb_PDCPContextRelocationList = -1; /* RB_PDCPContextRelocationList */
-static int hf_rrc_dummy_11 = -1; /* T_dummy_03 */
+static int hf_rrc_modeSpecificPhysChInfo_04 = -1; /* T_modeSpecificPhysChInfo_04 */
static int hf_rrc_fdd_23 = -1; /* T_fdd_23 */
-static int hf_rrc_preconfiguration_07 = -1; /* T_preconfiguration_07 */
-static int hf_rrc_preConfigMode_07 = -1; /* T_preConfigMode_07 */
-static int hf_rrc_defaultConfig_07 = -1; /* T_defaultConfig_07 */
-static int hf_rrc_modeSpecificPhysChInfo_05 = -1; /* T_modeSpecificPhysChInfo_05 */
-static int hf_rrc_fdd_24 = -1; /* T_fdd_24 */
static int hf_rrc_specificationMode_08 = -1; /* T_specificationMode_08 */
static int hf_rrc_complete_08 = -1; /* T_complete_08 */
+static int hf_rrc_rb_PDCPContextRelocationList = -1; /* RB_PDCPContextRelocationList */
+static int hf_rrc_dummy_15 = -1; /* T_dummy_03 */
+static int hf_rrc_fdd_24 = -1; /* T_fdd_24 */
static int hf_rrc_preconfiguration_08 = -1; /* T_preconfiguration_08 */
static int hf_rrc_preConfigMode_08 = -1; /* T_preConfigMode_08 */
static int hf_rrc_defaultConfig_08 = -1; /* T_defaultConfig_08 */
-static int hf_rrc_postVerificationPeriod_02 = -1; /* T_postVerificationPeriod_02 */
+static int hf_rrc_modeSpecificPhysChInfo_05 = -1; /* T_modeSpecificPhysChInfo_05 */
+static int hf_rrc_fdd_25 = -1; /* T_fdd_25 */
static int hf_rrc_specificationMode_09 = -1; /* T_specificationMode_09 */
static int hf_rrc_complete_09 = -1; /* T_complete_09 */
-static int hf_rrc_rab_InformationMBMSPtpList = -1; /* RAB_InformationMBMSPtpList */
-static int hf_rrc_responseToChangeOfUE_Capability_03 = -1; /* T_responseToChangeOfUE_Capability_03 */
-static int hf_rrc_specificationMode_10 = -1; /* T_specificationMode_10 */
-static int hf_rrc_complete_10 = -1; /* T_complete_10 */
static int hf_rrc_preconfiguration_09 = -1; /* T_preconfiguration_09 */
static int hf_rrc_preConfigMode_09 = -1; /* T_preConfigMode_09 */
static int hf_rrc_defaultConfig_09 = -1; /* T_defaultConfig_09 */
-static int hf_rrc_radioBearerReconfiguration_r7_add_ext = -1; /* BIT_STRING */
+static int hf_rrc_postVerificationPeriod_02 = -1; /* T_postVerificationPeriod_02 */
+static int hf_rrc_specificationMode_10 = -1; /* T_specificationMode_10 */
+static int hf_rrc_complete_10 = -1; /* T_complete_10 */
+static int hf_rrc_rab_InformationMBMSPtpList = -1; /* RAB_InformationMBMSPtpList */
static int hf_rrc_responseToChangeOfUE_Capability_04 = -1; /* T_responseToChangeOfUE_Capability_04 */
static int hf_rrc_specificationMode_11 = -1; /* T_specificationMode_11 */
static int hf_rrc_complete_11 = -1; /* T_complete_11 */
-static int hf_rrc_rab_InformationReconfigList_01 = -1; /* RAB_InformationReconfigList_r8 */
static int hf_rrc_preconfiguration_10 = -1; /* T_preconfiguration_10 */
static int hf_rrc_preConfigMode_10 = -1; /* T_preConfigMode_10 */
static int hf_rrc_defaultConfig_10 = -1; /* T_defaultConfig_10 */
+static int hf_rrc_radioBearerReconfiguration_r7_add_ext = -1; /* BIT_STRING */
static int hf_rrc_responseToChangeOfUE_Capability_05 = -1; /* T_responseToChangeOfUE_Capability_05 */
static int hf_rrc_specificationMode_12 = -1; /* T_specificationMode_12 */
static int hf_rrc_complete_12 = -1; /* T_complete_12 */
+static int hf_rrc_rab_InformationReconfigList_01 = -1; /* RAB_InformationReconfigList_r8 */
static int hf_rrc_preconfiguration_11 = -1; /* T_preconfiguration_11 */
static int hf_rrc_preConfigMode_11 = -1; /* T_preConfigMode_11 */
static int hf_rrc_defaultConfig_11 = -1; /* T_defaultConfig_11 */
+static int hf_rrc_responseToChangeOfUE_Capability_06 = -1; /* T_responseToChangeOfUE_Capability_06 */
+static int hf_rrc_specificationMode_13 = -1; /* T_specificationMode_13 */
+static int hf_rrc_complete_13 = -1; /* T_complete_13 */
+static int hf_rrc_preconfiguration_12 = -1; /* T_preconfiguration_12 */
+static int hf_rrc_preConfigMode_12 = -1; /* T_preConfigMode_12 */
+static int hf_rrc_defaultConfig_12 = -1; /* T_defaultConfig_12 */
+static int hf_rrc_responseToChangeOfUE_Capability_07 = -1; /* T_responseToChangeOfUE_Capability_07 */
+static int hf_rrc_specificationMode_14 = -1; /* T_specificationMode_14 */
+static int hf_rrc_complete_14 = -1; /* T_complete_14 */
+static int hf_rrc_preconfiguration_13 = -1; /* T_preconfiguration_13 */
+static int hf_rrc_preConfigMode_13 = -1; /* T_preConfigMode_13 */
+static int hf_rrc_defaultConfig_13 = -1; /* T_defaultConfig_13 */
static int hf_rrc_laterNonCriticalExtensions_29 = -1; /* T_laterNonCriticalExtensions_29 */
static int hf_rrc_radioBearerReconfigurationComplete_r3_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v770NonCriticalExtensions_14 = -1; /* T_v770NonCriticalExtensions_14 */
static int hf_rrc_radioBearerReconfigurationComplete_v770ext = -1; /* RadioBearerReconfigurationComplete_v770ext_IEs */
-static int hf_rrc_nonCriticalExtensions_78 = -1; /* T_nonCriticalExtensions_78 */
+static int hf_rrc_nonCriticalExtensions_85 = -1; /* T_nonCriticalExtensions_85 */
static int hf_rrc_deferredMeasurementControlReading_01 = -1; /* T_deferredMeasurementControlReading_01 */
static int hf_rrc_potentiallySuccesfulBearerList = -1; /* RB_IdentityList */
static int hf_rrc_laterNonCriticalExtensions_30 = -1; /* T_laterNonCriticalExtensions_30 */
static int hf_rrc_radioBearerReconfigurationFailure_r3_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_79 = -1; /* T_nonCriticalExtensions_79 */
+static int hf_rrc_nonCriticalExtensions_86 = -1; /* T_nonCriticalExtensions_86 */
static int hf_rrc_r3_15 = -1; /* T_r3_15 */
static int hf_rrc_radioBearerRelease_r3 = -1; /* RadioBearerRelease_r3_IEs */
static int hf_rrc_v3a0NonCriticalExtensions_06 = -1; /* T_v3a0NonCriticalExtensions_06 */
@@ -1660,9 +1768,9 @@ static int hf_rrc_v690NonCriticalExtensions_19 = -1; /* T_v690NonCriticalExtens
static int hf_rrc_radioBearerRelease_v690ext = -1; /* RadioBearerRelease_v690ext_IEs */
static int hf_rrc_v770NonCriticalExtensions_15 = -1; /* T_v770NonCriticalExtensions_15 */
static int hf_rrc_radioBearerRelease_v770ext = -1; /* RadioBearerRelease_v770ext_IEs */
-static int hf_rrc_nonCriticalExtensions_80 = -1; /* T_nonCriticalExtensions_80 */
+static int hf_rrc_nonCriticalExtensions_87 = -1; /* T_nonCriticalExtensions_87 */
static int hf_rrc_later_than_r3_13 = -1; /* T_later_than_r3_13 */
-static int hf_rrc_criticalExtensions_59 = -1; /* T_criticalExtensions_59 */
+static int hf_rrc_criticalExtensions_66 = -1; /* T_criticalExtensions_66 */
static int hf_rrc_r4_07 = -1; /* T_r4_07 */
static int hf_rrc_radioBearerRelease_r4 = -1; /* RadioBearerRelease_r4_IEs */
static int hf_rrc_v4d0NonCriticalExtensions_07 = -1; /* T_v4d0NonCriticalExtensions_07 */
@@ -1670,23 +1778,23 @@ static int hf_rrc_radioBearerRelease_r4_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v590NonCriticalExtensions_17 = -1; /* T_v590NonCriticalExtensions_17 */
static int hf_rrc_v690NonCriticalExtensions_20 = -1; /* T_v690NonCriticalExtensions_20 */
static int hf_rrc_v770NonCriticalExtensions_16 = -1; /* T_v770NonCriticalExtensions_16 */
-static int hf_rrc_nonCriticalExtensions_81 = -1; /* T_nonCriticalExtensions_81 */
-static int hf_rrc_criticalExtensions_60 = -1; /* T_criticalExtensions_60 */
+static int hf_rrc_nonCriticalExtensions_88 = -1; /* T_nonCriticalExtensions_88 */
+static int hf_rrc_criticalExtensions_67 = -1; /* T_criticalExtensions_67 */
static int hf_rrc_r5_06 = -1; /* T_r5_06 */
static int hf_rrc_radioBearerRelease_r5 = -1; /* RadioBearerRelease_r5_IEs */
static int hf_rrc_radioBearerRelease_r5_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v690NonCriticalExtensions_21 = -1; /* T_v690NonCriticalExtensions_21 */
static int hf_rrc_v770NonCriticalExtensions_17 = -1; /* T_v770NonCriticalExtensions_17 */
-static int hf_rrc_nonCriticalExtensions_82 = -1; /* T_nonCriticalExtensions_82 */
-static int hf_rrc_criticalExtensions_61 = -1; /* T_criticalExtensions_61 */
+static int hf_rrc_nonCriticalExtensions_89 = -1; /* T_nonCriticalExtensions_89 */
+static int hf_rrc_criticalExtensions_68 = -1; /* T_criticalExtensions_68 */
static int hf_rrc_r6_08 = -1; /* T_r6_08 */
static int hf_rrc_radioBearerRelease_r6 = -1; /* RadioBearerRelease_r6_IEs */
static int hf_rrc_radioBearerRelease_r6_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v6b0NonCriticalExtensions_08 = -1; /* T_v6b0NonCriticalExtensions_07 */
static int hf_rrc_radioBearerRelease_v6b0ext = -1; /* RadioBearerRelease_v6b0ext_IEs */
static int hf_rrc_v770NonCriticalExtensions_18 = -1; /* T_v770NonCriticalExtensions_18 */
-static int hf_rrc_nonCriticalExtensions_83 = -1; /* T_nonCriticalExtensions_83 */
-static int hf_rrc_criticalExtensions_62 = -1; /* T_criticalExtensions_62 */
+static int hf_rrc_nonCriticalExtensions_90 = -1; /* T_nonCriticalExtensions_90 */
+static int hf_rrc_criticalExtensions_69 = -1; /* T_criticalExtensions_69 */
static int hf_rrc_r7_07 = -1; /* T_r7_07 */
static int hf_rrc_radioBearerRelease_r7 = -1; /* RadioBearerRelease_r7_IEs */
static int hf_rrc_radioBearerRelease_r7_add_ext = -1; /* BIT_STRING */
@@ -1698,8 +1806,8 @@ static int hf_rrc_v7f0NonCriticalExtensions_09 = -1; /* T_v7f0NonCriticalExtens
static int hf_rrc_radioBearerRelease_v7f0ext = -1; /* RadioBearerRelease_v7f0ext_IEs */
static int hf_rrc_v7g0NonCriticalExtensions_10 = -1; /* T_v7g0NonCriticalExtensions_10 */
static int hf_rrc_radioBearerRelease_v7g0ext = -1; /* RadioBearerRelease_v7g0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_84 = -1; /* T_nonCriticalExtensions_84 */
-static int hf_rrc_criticalExtensions_63 = -1; /* T_criticalExtensions_63 */
+static int hf_rrc_nonCriticalExtensions_91 = -1; /* T_nonCriticalExtensions_91 */
+static int hf_rrc_criticalExtensions_70 = -1; /* T_criticalExtensions_70 */
static int hf_rrc_r8_08 = -1; /* T_r8_08 */
static int hf_rrc_radioBearerRelease_r8 = -1; /* RadioBearerRelease_r8_IEs */
static int hf_rrc_radioBearerRelease_r8_add_ext = -1; /* BIT_STRING */
@@ -1710,8 +1818,8 @@ static int hf_rrc_radioBearerRelease_v890ext = -1; /* RadioBearerRelease_v890ex
static int hf_rrc_v7g0NonCriticalExtensions_11 = -1; /* T_v7g0NonCriticalExtensions_11 */
static int hf_rrc_v8a0NonCriticalExtensions_06 = -1; /* T_v8a0NonCriticalExtensions_06 */
static int hf_rrc_radioBearerRelease_v8a0ext = -1; /* RadioBearerRelease_v8a0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_85 = -1; /* T_nonCriticalExtensions_85 */
-static int hf_rrc_criticalExtensions_64 = -1; /* T_criticalExtensions_64 */
+static int hf_rrc_nonCriticalExtensions_92 = -1; /* T_nonCriticalExtensions_92 */
+static int hf_rrc_criticalExtensions_71 = -1; /* T_criticalExtensions_71 */
static int hf_rrc_r9_07 = -1; /* T_r9_07 */
static int hf_rrc_radioBearerRelease_r9 = -1; /* RadioBearerRelease_r9_IEs */
static int hf_rrc_radioBearerRelease_r9_add_ext = -1; /* BIT_STRING */
@@ -1719,32 +1827,37 @@ static int hf_rrc_v950NonCriticalExtensions_05 = -1; /* T_v950NonCriticalExtens
static int hf_rrc_radioBearerRelease_v950ext = -1; /* RadioBearerRelease_v950ext_IEs */
static int hf_rrc_v970NonCriticalExtensions_02 = -1; /* T_v970NonCriticalExtensions_02 */
static int hf_rrc_radioBearerRelease_v970ext = -1; /* RadioBearerRelease_v970ext_IEs */
-static int hf_rrc_nonCriticalExtensions_86 = -1; /* T_nonCriticalExtensions_86 */
-static int hf_rrc_criticalExtensions_65 = -1; /* T_criticalExtensions_65 */
+static int hf_rrc_nonCriticalExtensions_93 = -1; /* T_nonCriticalExtensions_93 */
+static int hf_rrc_criticalExtensions_72 = -1; /* T_criticalExtensions_72 */
+static int hf_rrc_r10_07 = -1; /* T_r10_07 */
+static int hf_rrc_radioBearerRelease_r10 = -1; /* RadioBearerRelease_r10_IEs */
+static int hf_rrc_radioBearerRelease_r10_add_ext = -1; /* BIT_STRING */
+static int hf_rrc_nonCriticalExtensions_94 = -1; /* T_nonCriticalExtensions_94 */
+static int hf_rrc_criticalExtensions_73 = -1; /* T_criticalExtensions_73 */
static int hf_rrc_signallingConnectionRelIndication = -1; /* CN_DomainIdentity */
-static int hf_rrc_dummy_12 = -1; /* T_dummy_04 */
-static int hf_rrc_fdd_25 = -1; /* T_fdd_25 */
-static int hf_rrc_modeSpecificPhysChInfo_06 = -1; /* T_modeSpecificPhysChInfo_06 */
+static int hf_rrc_dummy_16 = -1; /* T_dummy_04 */
static int hf_rrc_fdd_26 = -1; /* T_fdd_26 */
-static int hf_rrc_dummy_13 = -1; /* T_dummy_05 */
+static int hf_rrc_modeSpecificPhysChInfo_06 = -1; /* T_modeSpecificPhysChInfo_06 */
static int hf_rrc_fdd_27 = -1; /* T_fdd_27 */
-static int hf_rrc_modeSpecificPhysChInfo_07 = -1; /* T_modeSpecificPhysChInfo_07 */
+static int hf_rrc_dummy_17 = -1; /* T_dummy_05 */
static int hf_rrc_fdd_28 = -1; /* T_fdd_28 */
-static int hf_rrc_dummy_14 = -1; /* T_dummy_06 */
+static int hf_rrc_modeSpecificPhysChInfo_07 = -1; /* T_modeSpecificPhysChInfo_07 */
static int hf_rrc_fdd_29 = -1; /* T_fdd_29 */
-static int hf_rrc_modeSpecificPhysChInfo_08 = -1; /* T_modeSpecificPhysChInfo_08 */
+static int hf_rrc_dummy_18 = -1; /* T_dummy_06 */
static int hf_rrc_fdd_30 = -1; /* T_fdd_30 */
+static int hf_rrc_modeSpecificPhysChInfo_08 = -1; /* T_modeSpecificPhysChInfo_08 */
+static int hf_rrc_fdd_31 = -1; /* T_fdd_31 */
static int hf_rrc_postVerificationPeriod_03 = -1; /* T_postVerificationPeriod_03 */
static int hf_rrc_mbms_RB_ListReleasedToChangeTransferMode = -1; /* RB_InformationReleaseList */
static int hf_rrc_laterNonCriticalExtensions_32 = -1; /* T_laterNonCriticalExtensions_32 */
static int hf_rrc_radioBearerReleaseComplete_r3_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v770NonCriticalExtensions_19 = -1; /* T_v770NonCriticalExtensions_19 */
static int hf_rrc_radioBearerReleaseComplete_v770ext = -1; /* RadioBearerReleaseComplete_v770ext_IEs */
-static int hf_rrc_nonCriticalExtensions_87 = -1; /* T_nonCriticalExtensions_87 */
+static int hf_rrc_nonCriticalExtensions_95 = -1; /* T_nonCriticalExtensions_95 */
static int hf_rrc_deferredMeasurementControlReading_02 = -1; /* T_deferredMeasurementControlReading_02 */
static int hf_rrc_laterNonCriticalExtensions_33 = -1; /* T_laterNonCriticalExtensions_33 */
static int hf_rrc_radioBearerReleaseFailure_r3_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_88 = -1; /* T_nonCriticalExtensions_88 */
+static int hf_rrc_nonCriticalExtensions_96 = -1; /* T_nonCriticalExtensions_96 */
static int hf_rrc_r3_16 = -1; /* T_r3_16 */
static int hf_rrc_radioBearerSetup_r3 = -1; /* RadioBearerSetup_r3_IEs */
static int hf_rrc_v3a0NonCriticalExtensions_07 = -1; /* T_v3a0NonCriticalExtensions_07 */
@@ -1759,9 +1872,9 @@ static int hf_rrc_v5d0NonCriticalExtenstions_09 = -1; /* T_v5d0NonCriticalExten
static int hf_rrc_radioBearerSetup_v5d0ext = -1; /* RadioBearerSetup_v5d0ext_IEs */
static int hf_rrc_v690NonCriticalExtensions_22 = -1; /* T_v690NonCriticalExtensions_22 */
static int hf_rrc_radioBearerSetup_v690ext = -1; /* RadioBearerSetup_v690ext_IEs */
-static int hf_rrc_nonCriticalExtensions_89 = -1; /* T_nonCriticalExtensions_89 */
+static int hf_rrc_nonCriticalExtensions_97 = -1; /* T_nonCriticalExtensions_97 */
static int hf_rrc_later_than_r3_14 = -1; /* T_later_than_r3_14 */
-static int hf_rrc_criticalExtensions_66 = -1; /* T_criticalExtensions_66 */
+static int hf_rrc_criticalExtensions_74 = -1; /* T_criticalExtensions_74 */
static int hf_rrc_r4_08 = -1; /* T_r4_08 */
static int hf_rrc_radioBearerSetup_r4 = -1; /* RadioBearerSetup_r4_IEs */
static int hf_rrc_v4d0NonCriticalExtensions_08 = -1; /* T_v4d0NonCriticalExtensions_08 */
@@ -1769,22 +1882,22 @@ static int hf_rrc_radioBearerSetup_r4_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v590NonCriticalExtensions_19 = -1; /* T_v590NonCriticalExtensions_19 */
static int hf_rrc_v5d0NonCriticalExtenstions_10 = -1; /* T_v5d0NonCriticalExtenstions_10 */
static int hf_rrc_v690NonCriticalExtensions_23 = -1; /* T_v690NonCriticalExtensions_23 */
-static int hf_rrc_nonCriticalExtensions_90 = -1; /* T_nonCriticalExtensions_90 */
-static int hf_rrc_criticalExtensions_67 = -1; /* T_criticalExtensions_67 */
+static int hf_rrc_nonCriticalExtensions_98 = -1; /* T_nonCriticalExtensions_98 */
+static int hf_rrc_criticalExtensions_75 = -1; /* T_criticalExtensions_75 */
static int hf_rrc_r5_07 = -1; /* T_r5_07 */
static int hf_rrc_radioBearerSetup_r5 = -1; /* RadioBearerSetup_r5_IEs */
static int hf_rrc_radioBearerSetup_r5_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v5d0NonCriticalExtenstions_11 = -1; /* T_v5d0NonCriticalExtenstions_11 */
static int hf_rrc_v690NonCriticalExtensions_24 = -1; /* T_v690NonCriticalExtensions_24 */
-static int hf_rrc_nonCriticalExtensions_91 = -1; /* T_nonCriticalExtensions_91 */
-static int hf_rrc_criticalExtensions_68 = -1; /* T_criticalExtensions_68 */
+static int hf_rrc_nonCriticalExtensions_99 = -1; /* T_nonCriticalExtensions_99 */
+static int hf_rrc_criticalExtensions_76 = -1; /* T_criticalExtensions_76 */
static int hf_rrc_r6_09 = -1; /* T_r6_09 */
static int hf_rrc_radioBearerSetup_r6 = -1; /* RadioBearerSetup_r6_IEs */
static int hf_rrc_radioBearerSetup_r6_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v6b0NonCriticalExtensions_09 = -1; /* T_v6b0NonCriticalExtensions_08 */
static int hf_rrc_radioBearerSetup_v6b0ext = -1; /* RadioBearerSetup_v6b0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_92 = -1; /* T_nonCriticalExtensions_92 */
-static int hf_rrc_criticalExtensions_69 = -1; /* T_criticalExtensions_69 */
+static int hf_rrc_nonCriticalExtensions_100 = -1; /* T_nonCriticalExtensions_100 */
+static int hf_rrc_criticalExtensions_77 = -1; /* T_criticalExtensions_77 */
static int hf_rrc_r7_08 = -1; /* T_r7_08 */
static int hf_rrc_radioBearerSetup_r7 = -1; /* RadioBearerSetup_r7_IEs */
static int hf_rrc_radioBearerSetup_r7_add_ext = -1; /* T_radioBearerSetup_r7_add_ext */
@@ -1792,8 +1905,8 @@ static int hf_rrc_v780NonCriticalExtensions_07 = -1; /* T_v780NonCriticalExtens
static int hf_rrc_radioBearerSetup_v780ext = -1; /* RadioBearerSetup_v780ext_IEs */
static int hf_rrc_v820NonCriticalExtensions_01 = -1; /* T_v820NonCriticalExtensions_01 */
static int hf_rrc_radioBearerSetup_v820ext = -1; /* RadioBearerSetup_v820ext_IEs */
-static int hf_rrc_nonCriticalExtensions_93 = -1; /* T_nonCriticalExtensions_93 */
-static int hf_rrc_criticalExtensions_70 = -1; /* T_criticalExtensions_70 */
+static int hf_rrc_nonCriticalExtensions_101 = -1; /* T_nonCriticalExtensions_101 */
+static int hf_rrc_criticalExtensions_78 = -1; /* T_criticalExtensions_78 */
static int hf_rrc_r8_09 = -1; /* T_r8_09 */
static int hf_rrc_radioBearerSetup_r8 = -1; /* RadioBearerSetup_r8_IEs */
static int hf_rrc_radioBearerSetup_r8_add_ext = -1; /* BIT_STRING */
@@ -1807,52 +1920,56 @@ static int hf_rrc_v7g0NonCriticalExtensions_12 = -1; /* T_v7g0NonCriticalExtens
static int hf_rrc_radioBearerSetup_v7g0ext = -1; /* RadioBearerSetup_v7g0ext_IEs */
static int hf_rrc_v8a0NonCriticalExtensions_07 = -1; /* T_v8a0NonCriticalExtensions_07 */
static int hf_rrc_radioBearerSetup_v8a0ext = -1; /* RadioBearerSetup_v8a0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_94 = -1; /* T_nonCriticalExtensions_94 */
-static int hf_rrc_criticalExtensions_71 = -1; /* T_criticalExtensions_71 */
+static int hf_rrc_nonCriticalExtensions_102 = -1; /* T_nonCriticalExtensions_102 */
+static int hf_rrc_criticalExtensions_79 = -1; /* T_criticalExtensions_79 */
static int hf_rrc_r9_08 = -1; /* T_r9_08 */
static int hf_rrc_radioBearerSetup_r9 = -1; /* RadioBearerSetup_r9_IEs */
static int hf_rrc_radioBearerSetup_r9_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v950NonCriticalExtensions_06 = -1; /* T_v950NonCriticalExtensions_06 */
static int hf_rrc_radioBearerSetup_v950ext = -1; /* RadioBearerSetup_v950ext_IEs */
-static int hf_rrc_nonCriticalExtensions_95 = -1; /* T_nonCriticalExtensions_95 */
-static int hf_rrc_criticalExtensions_72 = -1; /* T_criticalExtensions_72 */
-static int hf_rrc_dummy_15 = -1; /* T_dummy_07 */
-static int hf_rrc_fdd_31 = -1; /* T_fdd_31 */
-static int hf_rrc_modeSpecificPhysChInfo_09 = -1; /* T_modeSpecificPhysChInfo_09 */
+static int hf_rrc_nonCriticalExtensions_103 = -1; /* T_nonCriticalExtensions_103 */
+static int hf_rrc_criticalExtensions_80 = -1; /* T_criticalExtensions_80 */
+static int hf_rrc_r10_08 = -1; /* T_r10_08 */
+static int hf_rrc_radioBearerSetup_r10 = -1; /* RadioBearerSetup_r10_IEs */
+static int hf_rrc_radioBearerSetup_r10_add_ext = -1; /* BIT_STRING */
+static int hf_rrc_nonCriticalExtensions_104 = -1; /* T_nonCriticalExtensions_104 */
+static int hf_rrc_criticalExtensions_81 = -1; /* T_criticalExtensions_81 */
+static int hf_rrc_dummy_19 = -1; /* T_dummy_07 */
static int hf_rrc_fdd_32 = -1; /* T_fdd_32 */
-static int hf_rrc_dummy_16 = -1; /* T_dummy_08 */
+static int hf_rrc_modeSpecificPhysChInfo_09 = -1; /* T_modeSpecificPhysChInfo_09 */
static int hf_rrc_fdd_33 = -1; /* T_fdd_33 */
-static int hf_rrc_modeSpecificPhysChInfo_10 = -1; /* T_modeSpecificPhysChInfo_10 */
+static int hf_rrc_dummy_20 = -1; /* T_dummy_08 */
static int hf_rrc_fdd_34 = -1; /* T_fdd_34 */
-static int hf_rrc_dummy_17 = -1; /* T_dummy_09 */
+static int hf_rrc_modeSpecificPhysChInfo_10 = -1; /* T_modeSpecificPhysChInfo_10 */
static int hf_rrc_fdd_35 = -1; /* T_fdd_35 */
-static int hf_rrc_modeSpecificPhysChInfo_11 = -1; /* T_modeSpecificPhysChInfo_11 */
+static int hf_rrc_dummy_21 = -1; /* T_dummy_09 */
static int hf_rrc_fdd_36 = -1; /* T_fdd_36 */
+static int hf_rrc_modeSpecificPhysChInfo_11 = -1; /* T_modeSpecificPhysChInfo_11 */
+static int hf_rrc_fdd_37 = -1; /* T_fdd_37 */
static int hf_rrc_postVerificationPeriod_04 = -1; /* T_postVerificationPeriod_04 */
static int hf_rrc_rab_InformationSetupList_07 = -1; /* RAB_InformationSetupList_r6_ext */
-static int hf_rrc_specificationMode_13 = -1; /* T_specificationMode_13 */
-static int hf_rrc_complete_13 = -1; /* T_complete_13 */
-static int hf_rrc_dummy_18 = -1; /* T_dummy_10 */
+static int hf_rrc_specificationMode_15 = -1; /* T_specificationMode_15 */
+static int hf_rrc_complete_15 = -1; /* T_complete_15 */
+static int hf_rrc_dummy_22 = -1; /* T_dummy_10 */
static int hf_rrc_rab_Info_01 = -1; /* RAB_Info_r6 */
static int hf_rrc_rb_InformationChangedList = -1; /* RB_InformationChangedList_r6 */
static int hf_rrc_powerOffsetInfoShort = -1; /* PowerOffsetInfoShort */
static int hf_rrc_rab_InformationSetupListExt = -1; /* RAB_InformationSetupList_v6b0ext */
-static int hf_rrc_specificationMode_14 = -1; /* T_specificationMode_14 */
-static int hf_rrc_complete_14 = -1; /* T_complete_14 */
-static int hf_rrc_dummy_19 = -1; /* NULL */
+static int hf_rrc_specificationMode_16 = -1; /* T_specificationMode_16 */
+static int hf_rrc_complete_16 = -1; /* T_complete_16 */
+static int hf_rrc_dummy_23 = -1; /* NULL */
static int hf_rrc_v7f0NonCriticalExtensions_12 = -1; /* T_v7f0NonCriticalExtensions_12 */
static int hf_rrc_v7g0NonCriticalExtensions_13 = -1; /* T_v7g0NonCriticalExtensions_13 */
-static int hf_rrc_nonCriticalExtensions_96 = -1; /* T_nonCriticalExtensions_96 */
-static int hf_rrc_sr_vcc_Info = -1; /* SR_VCC_Info */
+static int hf_rrc_nonCriticalExtensions_105 = -1; /* T_nonCriticalExtensions_105 */
static int hf_rrc_laterNonCriticalExtensions_35 = -1; /* T_laterNonCriticalExtensions_35 */
static int hf_rrc_radioBearerSetupComplete_r3_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v770NonCriticalExtensions_20 = -1; /* T_v770NonCriticalExtensions_20 */
static int hf_rrc_radioBearerSetupComplete_v770ext = -1; /* RadioBearerSetupComplete_v770ext_IEs */
-static int hf_rrc_nonCriticalExtensions_97 = -1; /* T_nonCriticalExtensions_97 */
+static int hf_rrc_nonCriticalExtensions_106 = -1; /* T_nonCriticalExtensions_106 */
static int hf_rrc_deferredMeasurementControlReading_03 = -1; /* T_deferredMeasurementControlReading_03 */
static int hf_rrc_laterNonCriticalExtensions_36 = -1; /* T_laterNonCriticalExtensions_36 */
static int hf_rrc_radioBearerSetupFailure_r3_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_98 = -1; /* T_nonCriticalExtensions_98 */
+static int hf_rrc_nonCriticalExtensions_107 = -1; /* T_nonCriticalExtensions_107 */
static int hf_rrc_r3_17 = -1; /* T_r3_17 */
static int hf_rrc_rrcConnectionReject_r3 = -1; /* RRCConnectionReject_r3_IEs */
static int hf_rrc_laterNonCriticalExtensions_37 = -1; /* T_laterNonCriticalExtensions_37 */
@@ -1863,15 +1980,18 @@ static int hf_rrc_v6f0NonCriticalExtensions_01 = -1; /* T_v6f0NonCriticalExtens
static int hf_rrc_rrcConnectionReject_v6f0ext = -1; /* RRCConnectionReject_v6f0ext_IEs */
static int hf_rrc_v860NonCriticalExtensions_10 = -1; /* T_v860NonCriticalExtensions_10 */
static int hf_rrc_rrcConnectionReject_v860ext = -1; /* RRCConnectionReject_v860ext_IEs */
-static int hf_rrc_nonCriticalExtensions_99 = -1; /* T_nonCriticalExtensions_99 */
+static int hf_rrc_va40NonCriticalExtensions_05 = -1; /* T_va40NonCriticalExtensions_05 */
+static int hf_rrc_rrcConnectionReject_va40ext = -1; /* RRCConnectionReject_va40ext_IEs */
+static int hf_rrc_nonCriticalExtensions_108 = -1; /* T_nonCriticalExtensions_108 */
static int hf_rrc_later_than_r3_15 = -1; /* T_later_than_r3_15 */
static int hf_rrc_initialUE_Identity = -1; /* InitialUE_Identity */
-static int hf_rrc_criticalExtensions_73 = -1; /* T_criticalExtensions_73 */
+static int hf_rrc_criticalExtensions_82 = -1; /* T_criticalExtensions_82 */
static int hf_rrc_rejectionCause = -1; /* RejectionCause */
static int hf_rrc_redirectionInfo = -1; /* RedirectionInfo */
static int hf_rrc_redirectionInfo_v690ext = -1; /* GSM_TargetCellInfoList */
static int hf_rrc_countingCompletion = -1; /* T_countingCompletion */
static int hf_rrc_redirectionInfo_01 = -1; /* RedirectionInfo_v860ext */
+static int hf_rrc_extendedWaitTime = -1; /* ExtendedWaitTime */
static int hf_rrc_r3_18 = -1; /* T_r3_18 */
static int hf_rrc_rrcConnectionRelease_r3 = -1; /* RRCConnectionRelease_r3_IEs */
static int hf_rrc_laterNonCriticalExtensions_38 = -1; /* T_laterNonCriticalExtensions_38 */
@@ -1882,9 +2002,11 @@ static int hf_rrc_v770NonCriticalExtensions_21 = -1; /* T_v770NonCriticalExtens
static int hf_rrc_rrcConnectionRelease_v770ext = -1; /* RRCConnectionRelease_v770ext_IEs */
static int hf_rrc_v860NonCriticalExtensions_11 = -1; /* T_v860NonCriticalExtensions_11 */
static int hf_rrc_rrcConnectionRelease_v860ext = -1; /* RRCConnectionRelease_v860ext_IEs */
-static int hf_rrc_nonCriticalExtensions_100 = -1; /* T_nonCriticalExtensions_100 */
+static int hf_rrc_va40NonCriticalExtensions_06 = -1; /* T_va40NonCriticalExtensions_06 */
+static int hf_rrc_rrcConnectionRelease_va40ext = -1; /* RRCConnectionRelease_va40ext_IEs */
+static int hf_rrc_nonCriticalExtensions_109 = -1; /* T_nonCriticalExtensions_109 */
static int hf_rrc_later_than_r3_16 = -1; /* T_later_than_r3_16 */
-static int hf_rrc_criticalExtensions_74 = -1; /* T_criticalExtensions_74 */
+static int hf_rrc_criticalExtensions_83 = -1; /* T_criticalExtensions_83 */
static int hf_rrc_r4_09 = -1; /* T_r4_09 */
static int hf_rrc_rrcConnectionRelease_r4 = -1; /* RRCConnectionRelease_r4_IEs */
static int hf_rrc_v4d0NonCriticalExtensions_09 = -1; /* T_v4d0NonCriticalExtensions_09 */
@@ -1892,8 +2014,9 @@ static int hf_rrc_rrcConnectionRelease_r4_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v690NonCriticalExtensions_27 = -1; /* T_v690NonCriticalExtensions_27 */
static int hf_rrc_v770NonCriticalExtensions_22 = -1; /* T_v770NonCriticalExtensions_22 */
static int hf_rrc_v860NonCriticalExtensions_12 = -1; /* T_v860NonCriticalExtensions_12 */
-static int hf_rrc_nonCriticalExtensions_101 = -1; /* T_nonCriticalExtensions_101 */
-static int hf_rrc_criticalExtensions_75 = -1; /* T_criticalExtensions_75 */
+static int hf_rrc_va40NonCriticalExtensions_07 = -1; /* T_va40NonCriticalExtensions_07 */
+static int hf_rrc_nonCriticalExtensions_110 = -1; /* T_nonCriticalExtensions_110 */
+static int hf_rrc_criticalExtensions_84 = -1; /* T_criticalExtensions_84 */
static int hf_rrc_n_308 = -1; /* N_308 */
static int hf_rrc_releaseCause = -1; /* ReleaseCause */
static int hf_rrc_rplmn_information = -1; /* Rplmn_Information */
@@ -1907,33 +2030,36 @@ static int hf_rrc_v690NonCriticalExtensions_28 = -1; /* T_v690NonCriticalExtens
static int hf_rrc_rrcConnectionRelease_v690ext_01 = -1; /* RRCConnectionRelease_CCCH_v690ext_IEs */
static int hf_rrc_v860NonCriticalExtensions_13 = -1; /* T_v860NonCriticalExtensions_13 */
static int hf_rrc_rrcConnectionRelease_v860ext_01 = -1; /* RRCConnectionRelease_CCCH_v860ext_IEs */
-static int hf_rrc_nonCriticalExtensions_102 = -1; /* T_nonCriticalExtensions_102 */
+static int hf_rrc_va40NonCriticalExtensions_08 = -1; /* T_va40NonCriticalExtensions_08 */
+static int hf_rrc_nonCriticalExtensions_111 = -1; /* T_nonCriticalExtensions_111 */
static int hf_rrc_later_than_r3_17 = -1; /* T_later_than_r3_17 */
-static int hf_rrc_criticalExtensions_76 = -1; /* T_criticalExtensions_76 */
+static int hf_rrc_criticalExtensions_85 = -1; /* T_criticalExtensions_85 */
static int hf_rrc_r4_10 = -1; /* T_r4_10 */
static int hf_rrc_rrcConnectionRelease_CCCH_r4 = -1; /* RRCConnectionRelease_CCCH_r4_IEs */
static int hf_rrc_v4d0NonCriticalExtensions_10 = -1; /* T_v4d0NonCriticalExtensions_10 */
static int hf_rrc_rrcConnectionRelease_CCCH_r4_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v690NonCriticalExtensions_29 = -1; /* T_v690NonCriticalExtensions_29 */
static int hf_rrc_v860NonCriticalExtensions_14 = -1; /* T_v860NonCriticalExtensions_14 */
-static int hf_rrc_nonCriticalExtensions_103 = -1; /* T_nonCriticalExtensions_103 */
-static int hf_rrc_criticalExtensions_77 = -1; /* T_criticalExtensions_77 */
+static int hf_rrc_va40NonCriticalExtensions_09 = -1; /* T_va40NonCriticalExtensions_09 */
+static int hf_rrc_nonCriticalExtensions_112 = -1; /* T_nonCriticalExtensions_112 */
+static int hf_rrc_criticalExtensions_86 = -1; /* T_criticalExtensions_86 */
static int hf_rrc_groupIdentity = -1; /* SEQUENCE_SIZE_1_maxURNTI_Group_OF_GroupReleaseInformation */
static int hf_rrc_groupIdentity_item = -1; /* GroupReleaseInformation */
-static int hf_rrc_criticalExtensions_78 = -1; /* T_criticalExtensions_78 */
+static int hf_rrc_criticalExtensions_87 = -1; /* T_criticalExtensions_87 */
static int hf_rrc_r5_08 = -1; /* T_r5_08 */
static int hf_rrc_rrcConnectionRelease_CCCH_r5 = -1; /* RRCConnectionRelease_CCCH_r5_IEs */
static int hf_rrc_rrcConnectionRelease_CCCH_r5_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v690NonCriticalExtensions_30 = -1; /* T_v690NonCriticalExtensions_30 */
static int hf_rrc_v860NonCriticalExtensions_15 = -1; /* T_v860NonCriticalExtensions_15 */
-static int hf_rrc_nonCriticalExtensions_104 = -1; /* T_nonCriticalExtensions_104 */
-static int hf_rrc_criticalExtensions_79 = -1; /* T_criticalExtensions_79 */
+static int hf_rrc_va40NonCriticalExtensions_10 = -1; /* T_va40NonCriticalExtensions_10 */
+static int hf_rrc_nonCriticalExtensions_113 = -1; /* T_nonCriticalExtensions_113 */
+static int hf_rrc_criticalExtensions_88 = -1; /* T_criticalExtensions_88 */
static int hf_rrc_rrcConnectionRelease_02 = -1; /* RRCConnectionRelease_r3_IEs */
static int hf_rrc_rrcConnectionRelease_03 = -1; /* RRCConnectionRelease_r4_IEs */
static int hf_rrc_errorIndication = -1; /* FailureCauseWithProtErr */
static int hf_rrc_laterNonCriticalExtensions_40 = -1; /* T_laterNonCriticalExtensions_40 */
static int hf_rrc_rrcConnectionReleaseComplete_r3_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_105 = -1; /* T_nonCriticalExtensions_105 */
+static int hf_rrc_nonCriticalExtensions_114 = -1; /* T_nonCriticalExtensions_114 */
static int hf_rrc_protocolErrorIndicator_01 = -1; /* ProtocolErrorIndicator */
static int hf_rrc_v3d0NonCriticalExtensions = -1; /* T_v3d0NonCriticalExtensions */
static int hf_rrc_rRCConnectionRequest_v3d0ext = -1; /* RRCConnectionRequest_v3d0ext_IEs */
@@ -1961,7 +2087,7 @@ static int hf_rrc_v920NonCriticalExtensions_02 = -1; /* T_v920NonCriticalExtens
static int hf_rrc_rrcConnectionRequest_v920ext = -1; /* RRCConnectionRequest_v920ext_IEs */
static int hf_rrc_v940NonCriticalExtensions = -1; /* T_v940NonCriticalExtensions */
static int hf_rrc_rrcConnectionRequest_v940ext = -1; /* RRCConnectionRequest_v940ext_IEs */
-static int hf_rrc_nonCriticalExtensions_106 = -1; /* T_nonCriticalExtensions_106 */
+static int hf_rrc_va40NonCriticalExtensions_11 = -1; /* RRCConnectionRequest_NonCriticalExts_va40_IEs */
static int hf_rrc_uESpecificBehaviourInformation1idle = -1; /* UESpecificBehaviourInformation1idle */
static int hf_rrc_predefinedConfigStatusInfo = -1; /* BOOLEAN */
static int hf_rrc_ueCapabilityIndication = -1; /* T_ueCapabilityIndication */
@@ -1982,6 +2108,11 @@ static int hf_rrc_supportOfMACiis_01 = -1; /* T_supportOfMACiis_01 */
static int hf_rrc_supportOfSPSOperation_01 = -1; /* T_supportOfSPSOperation_01 */
static int hf_rrc_supportOfDualCellMIMO = -1; /* T_supportOfDualCellMIMO */
static int hf_rrc_systemInformationContainerStoredIndicator = -1; /* T_systemInformationContainerStoredIndicator */
+static int hf_rrc_rrcConnectionRequest_va40ext = -1; /* RRCConnectionRequest_va40ext_IEs */
+static int hf_rrc_nonCriticalExtensions_115 = -1; /* T_nonCriticalExtensions_115 */
+static int hf_rrc_supportOfMoreThanTwoCells = -1; /* T_supportOfMoreThanTwoCells */
+static int hf_rrc_supportOf1stFrequencyBand = -1; /* T_supportOf1stFrequencyBand */
+static int hf_rrc_supportOf2ndFrequencyBand = -1; /* T_supportOf2ndFrequencyBand */
static int hf_rrc_r3_20 = -1; /* T_r3_20 */
static int hf_rrc_rrcConnectionSetup_r3 = -1; /* RRCConnectionSetup_r3_IEs */
static int hf_rrc_laterNonCriticalExtensions_41 = -1; /* T_laterNonCriticalExtensions_41 */
@@ -1992,30 +2123,30 @@ static int hf_rrc_v590NonCriticalExtensions_21 = -1; /* T_v590NonCriticalExtens
static int hf_rrc_rrcConnectionSetup_v590ext = -1; /* RRCConnectionSetup_v590ext_IEs */
static int hf_rrc_v690NonCriticalExtensions_32 = -1; /* T_v690NonCriticalExtensions_32 */
static int hf_rrc_rrcConnectionSetup_v690ext = -1; /* RRCConnectionSetup_v690ext_IEs */
-static int hf_rrc_nonCriticalExtensions_107 = -1; /* T_nonCriticalExtensions_107 */
+static int hf_rrc_nonCriticalExtensions_116 = -1; /* T_nonCriticalExtensions_116 */
static int hf_rrc_later_than_r3_18 = -1; /* T_later_than_r3_18 */
-static int hf_rrc_criticalExtensions_80 = -1; /* T_criticalExtensions_80 */
+static int hf_rrc_criticalExtensions_89 = -1; /* T_criticalExtensions_89 */
static int hf_rrc_r4_11 = -1; /* T_r4_11 */
static int hf_rrc_rrcConnectionSetup_r4 = -1; /* RRCConnectionSetup_r4_IEs */
static int hf_rrc_v4d0NonCriticalExtensions_11 = -1; /* T_v4d0NonCriticalExtensions_11 */
static int hf_rrc_rrcConnectionSetup_r4_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v590NonCriticalExtensions_22 = -1; /* T_v590NonCriticalExtensions_22 */
static int hf_rrc_v690NonCriticalExtensions_33 = -1; /* T_v690NonCriticalExtensions_33 */
-static int hf_rrc_nonCriticalExtensions_108 = -1; /* T_nonCriticalExtensions_108 */
-static int hf_rrc_criticalExtensions_81 = -1; /* T_criticalExtensions_81 */
+static int hf_rrc_nonCriticalExtensions_117 = -1; /* T_nonCriticalExtensions_117 */
+static int hf_rrc_criticalExtensions_90 = -1; /* T_criticalExtensions_90 */
static int hf_rrc_r5_09 = -1; /* T_r5_09 */
static int hf_rrc_rrcConnectionSetup_r5 = -1; /* RRCConnectionSetup_r5_IEs */
static int hf_rrc_rrcConnectionSetup_r5_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v690NonCriticalExtensions_34 = -1; /* T_v690NonCriticalExtensions_34 */
-static int hf_rrc_nonCriticalExtensions_109 = -1; /* T_nonCriticalExtensions_109 */
-static int hf_rrc_criticalExtensions_82 = -1; /* T_criticalExtensions_82 */
+static int hf_rrc_nonCriticalExtensions_118 = -1; /* T_nonCriticalExtensions_118 */
+static int hf_rrc_criticalExtensions_91 = -1; /* T_criticalExtensions_91 */
static int hf_rrc_r6_10 = -1; /* T_r6_10 */
static int hf_rrc_rrcConnectionSetup_r6 = -1; /* RRCConnectionSetup_r6_IEs */
static int hf_rrc_rrcConnectionSetup_r6_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v6b0NonCriticalExtensions_11 = -1; /* T_v6b0NonCriticalExtensions_10 */
static int hf_rrc_rrcConnectionSetup_v6b0ext = -1; /* RRCConnectionSetup_v6b0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_110 = -1; /* T_nonCriticalExtensions_110 */
-static int hf_rrc_criticalExtensions_83 = -1; /* T_criticalExtensions_83 */
+static int hf_rrc_nonCriticalExtensions_119 = -1; /* T_nonCriticalExtensions_119 */
+static int hf_rrc_criticalExtensions_92 = -1; /* T_criticalExtensions_92 */
static int hf_rrc_r7_09 = -1; /* T_r7_09 */
static int hf_rrc_rrcConnectionSetup_r7 = -1; /* RRCConnectionSetup_r7_IEs */
static int hf_rrc_rrcConnectionSetup_r7_add_ext = -1; /* BIT_STRING */
@@ -2023,8 +2154,8 @@ static int hf_rrc_v780NonCriticalExtensions_08 = -1; /* T_v780NonCriticalExtens
static int hf_rrc_rrcConnectionSetup_v780ext = -1; /* RRCConnectionSetup_v780ext_IEs */
static int hf_rrc_v7d0NonCriticalExtensions_11 = -1; /* T_v7d0NonCriticalExtensions_11 */
static int hf_rrc_rrcConnectionSetup_v7d0ext = -1; /* RRCConnectionSetup_v7d0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_111 = -1; /* T_nonCriticalExtensions_111 */
-static int hf_rrc_criticalExtensions_84 = -1; /* T_criticalExtensions_84 */
+static int hf_rrc_nonCriticalExtensions_120 = -1; /* T_nonCriticalExtensions_120 */
+static int hf_rrc_criticalExtensions_93 = -1; /* T_criticalExtensions_93 */
static int hf_rrc_r8_10 = -1; /* T_r8_10 */
static int hf_rrc_rrcConnectionSetup_r8 = -1; /* RRCConnectionSetup_r8_IEs */
static int hf_rrc_rrcConnectionSetup_r8_add_ext = -1; /* BIT_STRING */
@@ -2033,15 +2164,20 @@ static int hf_rrc_v890NonCriticalExtensions_08 = -1; /* T_v890NonCriticalExtens
static int hf_rrc_rrcConnectionSetup_v890ext = -1; /* RRCConnectionSetup_v890ext_IEs */
static int hf_rrc_v8a0NonCriticalExtensions_08 = -1; /* T_v8a0NonCriticalExtensions_08 */
static int hf_rrc_rrcConnectionSetup_v8a0ext = -1; /* RRCConnectionSetup_v8a0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_112 = -1; /* T_nonCriticalExtensions_112 */
-static int hf_rrc_criticalExtensions_85 = -1; /* T_criticalExtensions_85 */
+static int hf_rrc_nonCriticalExtensions_121 = -1; /* T_nonCriticalExtensions_121 */
+static int hf_rrc_criticalExtensions_94 = -1; /* T_criticalExtensions_94 */
static int hf_rrc_r9_09 = -1; /* T_r9_09 */
static int hf_rrc_rrcConnectionSetup_r9 = -1; /* RRCConnectionSetup_r9_IEs */
static int hf_rrc_rrcConnectionSetup_r9_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v950NonCriticalExtensions_07 = -1; /* T_v950NonCriticalExtensions_07 */
static int hf_rrc_rrcConnectionSetup_v950ext = -1; /* RRCConnectionSetup_v950ext_IEs */
-static int hf_rrc_nonCriticalExtensions_113 = -1; /* T_nonCriticalExtensions_113 */
-static int hf_rrc_criticalExtensions_86 = -1; /* T_criticalExtensions_86 */
+static int hf_rrc_nonCriticalExtensions_122 = -1; /* T_nonCriticalExtensions_122 */
+static int hf_rrc_criticalExtensions_95 = -1; /* T_criticalExtensions_95 */
+static int hf_rrc_r10_09 = -1; /* T_r10_09 */
+static int hf_rrc_rrcConnectionSetup_r10 = -1; /* RRCConnectionSetup_r10_IEs */
+static int hf_rrc_rrcConnectionSetup_r10_add_ext = -1; /* BIT_STRING */
+static int hf_rrc_nonCriticalExtensions_123 = -1; /* T_nonCriticalExtensions_123 */
+static int hf_rrc_criticalExtensions_96 = -1; /* T_criticalExtensions_96 */
static int hf_rrc_new_c_RNTI = -1; /* C_RNTI */
static int hf_rrc_capabilityUpdateRequirement = -1; /* CapabilityUpdateRequirement */
static int hf_rrc_srb_InformationSetupList_05 = -1; /* SRB_InformationSetupList2 */
@@ -2049,38 +2185,43 @@ static int hf_rrc_capabilityUpdateRequirement_r4_ext = -1; /* CapabilityUpdateR
static int hf_rrc_systemSpecificCapUpdateReq = -1; /* SystemSpecificCapUpdateReq_v590ext */
static int hf_rrc_capabilityUpdateRequirement_01 = -1; /* CapabilityUpdateRequirement_r4 */
static int hf_rrc_capabilityUpdateRequirement_02 = -1; /* CapabilityUpdateRequirement_r5 */
-static int hf_rrc_specificationMode_15 = -1; /* T_specificationMode_15 */
-static int hf_rrc_complete_15 = -1; /* T_complete_15 */
-static int hf_rrc_preconfiguration_12 = -1; /* T_preconfiguration_12 */
-static int hf_rrc_preConfigMode_12 = -1; /* T_preConfigMode_12 */
-static int hf_rrc_defaultConfig_12 = -1; /* T_defaultConfig_12 */
-static int hf_rrc_dl_InformationPerRL_List_07 = -1; /* DL_InformationPerRL_List_r5bis */
-static int hf_rrc_postVerificationPeriod_05 = -1; /* T_postVerificationPeriod_05 */
-static int hf_rrc_specificationMode_16 = -1; /* T_specificationMode_16 */
-static int hf_rrc_complete_16 = -1; /* T_complete_16 */
-static int hf_rrc_srb_InformationSetupList_06 = -1; /* SRB_InformationSetupList2_r6 */
-static int hf_rrc_preconfiguration_13 = -1; /* T_preconfiguration_13 */
-static int hf_rrc_preConfigMode_13 = -1; /* T_preConfigMode_13 */
-static int hf_rrc_defaultConfig_13 = -1; /* T_defaultConfig_13 */
-static int hf_rrc_capabilityUpdateRequirement_03 = -1; /* CapabilityUpdateRequirement_r7 */
static int hf_rrc_specificationMode_17 = -1; /* T_specificationMode_17 */
static int hf_rrc_complete_17 = -1; /* T_complete_17 */
-static int hf_rrc_srb_InformationSetupList_07 = -1; /* SRB_InformationSetupList2_r7 */
static int hf_rrc_preconfiguration_14 = -1; /* T_preconfiguration_14 */
static int hf_rrc_preConfigMode_14 = -1; /* T_preConfigMode_14 */
static int hf_rrc_defaultConfig_14 = -1; /* T_defaultConfig_14 */
-static int hf_rrc_capabilityUpdateRequirement_04 = -1; /* CapabilityUpdateRequirement_r8 */
+static int hf_rrc_dl_InformationPerRL_List_07 = -1; /* DL_InformationPerRL_List_r5bis */
+static int hf_rrc_postVerificationPeriod_05 = -1; /* T_postVerificationPeriod_05 */
static int hf_rrc_specificationMode_18 = -1; /* T_specificationMode_18 */
static int hf_rrc_complete_18 = -1; /* T_complete_18 */
-static int hf_rrc_srb_InformationSetupList_08 = -1; /* SRB_InformationSetupList2_r8 */
+static int hf_rrc_srb_InformationSetupList_06 = -1; /* SRB_InformationSetupList2_r6 */
static int hf_rrc_preconfiguration_15 = -1; /* T_preconfiguration_15 */
static int hf_rrc_preConfigMode_15 = -1; /* T_preConfigMode_15 */
static int hf_rrc_defaultConfig_15 = -1; /* T_defaultConfig_15 */
+static int hf_rrc_capabilityUpdateRequirement_03 = -1; /* CapabilityUpdateRequirement_r7 */
static int hf_rrc_specificationMode_19 = -1; /* T_specificationMode_19 */
static int hf_rrc_complete_19 = -1; /* T_complete_19 */
+static int hf_rrc_srb_InformationSetupList_07 = -1; /* SRB_InformationSetupList2_r7 */
static int hf_rrc_preconfiguration_16 = -1; /* T_preconfiguration_16 */
static int hf_rrc_preConfigMode_16 = -1; /* T_preConfigMode_16 */
static int hf_rrc_defaultConfig_16 = -1; /* T_defaultConfig_16 */
+static int hf_rrc_capabilityUpdateRequirement_04 = -1; /* CapabilityUpdateRequirement_r8 */
+static int hf_rrc_specificationMode_20 = -1; /* T_specificationMode_20 */
+static int hf_rrc_complete_20 = -1; /* T_complete_20 */
+static int hf_rrc_srb_InformationSetupList_08 = -1; /* SRB_InformationSetupList2_r8 */
+static int hf_rrc_preconfiguration_17 = -1; /* T_preconfiguration_17 */
+static int hf_rrc_preConfigMode_17 = -1; /* T_preConfigMode_17 */
+static int hf_rrc_defaultConfig_17 = -1; /* T_defaultConfig_17 */
+static int hf_rrc_specificationMode_21 = -1; /* T_specificationMode_21 */
+static int hf_rrc_complete_21 = -1; /* T_complete_21 */
+static int hf_rrc_preconfiguration_18 = -1; /* T_preconfiguration_18 */
+static int hf_rrc_preConfigMode_18 = -1; /* T_preConfigMode_18 */
+static int hf_rrc_defaultConfig_18 = -1; /* T_defaultConfig_18 */
+static int hf_rrc_specificationMode_22 = -1; /* T_specificationMode_22 */
+static int hf_rrc_complete_22 = -1; /* T_complete_22 */
+static int hf_rrc_preconfiguration_19 = -1; /* T_preconfiguration_19 */
+static int hf_rrc_preConfigMode_19 = -1; /* T_preConfigMode_19 */
+static int hf_rrc_defaultConfig_19 = -1; /* T_defaultConfig_19 */
static int hf_rrc_ue_RadioAccessCapability_02 = -1; /* UE_RadioAccessCapability */
static int hf_rrc_ue_RATSpecificCapability = -1; /* InterRAT_UE_RadioAccessCapabilityList */
static int hf_rrc_v370NonCriticalExtensions = -1; /* T_v370NonCriticalExtensions */
@@ -2103,7 +2244,9 @@ static int hf_rrc_v690NonCriticalExtensions_35 = -1; /* T_v690NonCriticalExtens
static int hf_rrc_rrcConnectionSetupComplete_v690ext = -1; /* RRCConnectionSetupComplete_v690ext_IEs */
static int hf_rrc_v770NonCriticalExtensions_24 = -1; /* T_v770NonCriticalExtensions_24 */
static int hf_rrc_rrcConectionSetupComplete_v770ext = -1; /* RRCConnectionSetupComplete_v770ext_IEs */
-static int hf_rrc_nonCriticalExtensions_114 = -1; /* T_nonCriticalExtensions_114 */
+static int hf_rrc_va40NonCriticalExtensions_12 = -1; /* T_va40NonCriticalExtensions_11 */
+static int hf_rrc_rrcConectionSetupComplete_va40ext = -1; /* RRCConnectionSetupComplete_va40ext_IEs */
+static int hf_rrc_nonCriticalExtensions_124 = -1; /* T_nonCriticalExtensions_124 */
static int hf_rrc_ue_RadioAccessCapability_v370ext = -1; /* UE_RadioAccessCapability_v370ext */
static int hf_rrc_rrcConnectionSetupComplete_v650ext = -1; /* RRCConnectionSetupComplete_v650ext_IEs */
static int hf_rrc_v680NonCriticalExtensions = -1; /* T_v680NonCriticalExtensions */
@@ -2112,7 +2255,9 @@ static int hf_rrc_v7e0NonCriticalExtensions_02 = -1; /* T_v7e0NonCriticalExtens
static int hf_rrc_rrcConnectionSetupComplete_v7e0ext = -1; /* RRCConnectionSetupComplete_v7e0ext_IEs */
static int hf_rrc_v7f0NonCriticalExtensions_13 = -1; /* T_v7f0NonCriticalExtensions_13 */
static int hf_rrc_rrcConnectionSetupComplete_v7f0ext = -1; /* RRCConnectionSetupComplete_v7f0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_115 = -1; /* T_nonCriticalExtensions_115 */
+static int hf_rrc_va40NonCriticalExtensions_13 = -1; /* T_va40NonCriticalExtensions_12 */
+static int hf_rrc_rrcConnectionSetupCompleteBand_va40ext = -1; /* RRCConnectionSetupCompleteBand_va40ext_IEs */
+static int hf_rrc_nonCriticalExtensions_125 = -1; /* T_nonCriticalExtensions_125 */
static int hf_rrc_ue_RadioAccessCapability_v4b0ext = -1; /* UE_RadioAccessCapability_v4b0ext */
static int hf_rrc_ue_RadioAccessCapability_v590ext = -1; /* UE_RadioAccessCapability_v590ext */
static int hf_rrc_ue_RATSpecificCapability_v590ext = -1; /* InterRAT_UE_RadioAccessCapability_v590ext */
@@ -2120,50 +2265,54 @@ static int hf_rrc_ue_RadioAccessCapability_v5c0ext = -1; /* UE_RadioAccessCapab
static int hf_rrc_ue_RadioAccessCapability_v680ext = -1; /* UE_RadioAccessCapability_v680ext */
static int hf_rrc_ueCapabilityContainer = -1; /* T_ueCapabilityContainer */
static int hf_rrc_deferredMeasurementControlReading_04 = -1; /* T_deferredMeasurementControlReading_04 */
+static int hf_rrc_loggedMeasAvailable_03 = -1; /* T_loggedMeasAvailable_03 */
+static int hf_rrc_loggedANRResultsAvailable_02 = -1; /* T_loggedANRResultsAvailable_02 */
static int hf_rrc_r3_21 = -1; /* T_r3_21 */
static int hf_rrc_rRC_FailureInfo_r3 = -1; /* RRC_FailureInfo_r3_IEs */
static int hf_rrc_laterNonCriticalExtensions_43 = -1; /* T_laterNonCriticalExtensions_43 */
static int hf_rrc_rrc_FailureInfo_r3_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_116 = -1; /* T_nonCriticalExtensions_116 */
-static int hf_rrc_criticalExtensions_87 = -1; /* T_criticalExtensions_87 */
+static int hf_rrc_nonCriticalExtensions_126 = -1; /* T_nonCriticalExtensions_126 */
+static int hf_rrc_criticalExtensions_97 = -1; /* T_criticalExtensions_97 */
static int hf_rrc_failureCauseWithProtErr = -1; /* FailureCauseWithProtErr */
static int hf_rrc_protocolErrorInformation = -1; /* ProtocolErrorMoreInformation */
static int hf_rrc_laterNonCriticalExtensions_44 = -1; /* T_laterNonCriticalExtensions_44 */
static int hf_rrc_rrcStatus_r3_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_117 = -1; /* T_nonCriticalExtensions_117 */
+static int hf_rrc_nonCriticalExtensions_127 = -1; /* T_nonCriticalExtensions_127 */
static int hf_rrc_r3_22 = -1; /* T_r3_22 */
static int hf_rrc_securityModeCommand_r3 = -1; /* SecurityModeCommand_r3_IEs */
static int hf_rrc_laterNonCriticalExtensions_45 = -1; /* T_laterNonCriticalExtensions_45 */
static int hf_rrc_securityModeCommand_r3_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_118 = -1; /* T_nonCriticalExtensions_118 */
+static int hf_rrc_nonCriticalExtensions_128 = -1; /* T_nonCriticalExtensions_128 */
static int hf_rrc_later_than_r3_19 = -1; /* T_later_than_r3_19 */
-static int hf_rrc_criticalExtensions_88 = -1; /* T_criticalExtensions_88 */
+static int hf_rrc_criticalExtensions_98 = -1; /* T_criticalExtensions_98 */
static int hf_rrc_r7_10 = -1; /* T_r7_10 */
static int hf_rrc_securityModeCommand_r7 = -1; /* SecurityModeCommand_r7_IEs */
static int hf_rrc_securityModeCommand_r7_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_119 = -1; /* T_nonCriticalExtensions_119 */
-static int hf_rrc_criticalExtensions_89 = -1; /* T_criticalExtensions_89 */
+static int hf_rrc_nonCriticalExtensions_129 = -1; /* T_nonCriticalExtensions_129 */
+static int hf_rrc_criticalExtensions_99 = -1; /* T_criticalExtensions_99 */
static int hf_rrc_securityCapability = -1; /* SecurityCapability */
static int hf_rrc_ue_SystemSpecificSecurityCap = -1; /* InterRAT_UE_SecurityCapList */
static int hf_rrc_rb_UL_CiphActivationTimeInfo = -1; /* RB_ActivationTimeInfoList */
static int hf_rrc_laterNonCriticalExtensions_46 = -1; /* T_laterNonCriticalExtensions_46 */
static int hf_rrc_securityModeComplete_r3_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_120 = -1; /* T_nonCriticalExtensions_120 */
+static int hf_rrc_nonCriticalExtensions_130 = -1; /* T_nonCriticalExtensions_130 */
static int hf_rrc_laterNonCriticalExtensions_47 = -1; /* T_laterNonCriticalExtensions_47 */
static int hf_rrc_securityModeFailure_r3_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_121 = -1; /* T_nonCriticalExtensions_121 */
+static int hf_rrc_nonCriticalExtensions_131 = -1; /* T_nonCriticalExtensions_131 */
static int hf_rrc_r3_23 = -1; /* T_r3_23 */
static int hf_rrc_signallingConnectionRelease_r3 = -1; /* SignallingConnectionRelease_r3_IEs */
static int hf_rrc_laterNonCriticalExtensions_48 = -1; /* T_laterNonCriticalExtensions_48 */
static int hf_rrc_signallingConnectionRelease_r3_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_122 = -1; /* T_nonCriticalExtensions_122 */
+static int hf_rrc_va40NonCriticalExtensions_14 = -1; /* T_va40NonCriticalExtensions_13 */
+static int hf_rrc_signallingConnectionRelease_va40ext = -1; /* SignallingConnectionRelease_va40ext_IEs */
+static int hf_rrc_nonCriticalExtensions_132 = -1; /* T_nonCriticalExtensions_132 */
static int hf_rrc_later_than_r3_20 = -1; /* T_later_than_r3_20 */
-static int hf_rrc_criticalExtensions_90 = -1; /* T_criticalExtensions_90 */
+static int hf_rrc_criticalExtensions_100 = -1; /* T_criticalExtensions_100 */
static int hf_rrc_laterNonCriticalExtensions_49 = -1; /* T_laterNonCriticalExtensions_49 */
static int hf_rrc_signallingConnectionReleaseIndication_r3_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v860nonCriticalExtentions = -1; /* T_v860nonCriticalExtentions */
static int hf_rrc_signallingConnectionReleaseIndication_v860ext = -1; /* SignallingConnectionReleaseIndication_v860ext */
-static int hf_rrc_nonCriticalExtensions_123 = -1; /* T_nonCriticalExtensions_123 */
+static int hf_rrc_nonCriticalExtensions_133 = -1; /* T_nonCriticalExtensions_133 */
static int hf_rrc_signallingConnectionReleaseIndicationCause = -1; /* T_signallingConnectionReleaseIndicationCause */
static int hf_rrc_sfn_Prime = -1; /* SFN_Prime */
static int hf_rrc_payload = -1; /* T_payload */
@@ -2195,7 +2344,7 @@ static int hf_rrc_laterNonCriticalExtensions_50 = -1; /* T_laterNonCriticalExte
static int hf_rrc_systemInformationChangeIndication_r3_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v860NonCriticalExtensions_17 = -1; /* T_v860NonCriticalExtensions_17 */
static int hf_rrc_systemInformationChangeIndication_v860ext = -1; /* SystemInformationChangeIndication_v860ext_IEs */
-static int hf_rrc_nonCriticalExtensions_124 = -1; /* T_nonCriticalExtensions_124 */
+static int hf_rrc_nonCriticalExtensions_134 = -1; /* T_nonCriticalExtensions_134 */
static int hf_rrc_r3_24 = -1; /* T_r3_24 */
static int hf_rrc_transportChannelReconfiguration_r3 = -1; /* TransportChannelReconfiguration_r3_IEs */
static int hf_rrc_v3a0NonCriticalExtensions_09 = -1; /* T_v3a0NonCriticalExtensions_09 */
@@ -2210,9 +2359,9 @@ static int hf_rrc_v690NonCriticalExtensions_36 = -1; /* T_v690NonCriticalExtens
static int hf_rrc_transportChannelReconfiguration_v690ext = -1; /* TransportChannelReconfiguration_v690ext_IEs */
static int hf_rrc_v770NonCriticalExtensions_25 = -1; /* T_v770NonCriticalExtensions_25 */
static int hf_rrc_transportChannelReconfiguration_v770ext = -1; /* TransportChannelReconfiguration_v770ext_IEs */
-static int hf_rrc_nonCriticalExtensions_125 = -1; /* T_nonCriticalExtensions_125 */
+static int hf_rrc_nonCriticalExtensions_135 = -1; /* T_nonCriticalExtensions_135 */
static int hf_rrc_later_than_r3_21 = -1; /* T_later_than_r3_21 */
-static int hf_rrc_criticalExtensions_91 = -1; /* T_criticalExtensions_91 */
+static int hf_rrc_criticalExtensions_101 = -1; /* T_criticalExtensions_101 */
static int hf_rrc_r4_12 = -1; /* T_r4_12 */
static int hf_rrc_transportChannelReconfiguration_r4 = -1; /* TransportChannelReconfiguration_r4_IEs */
static int hf_rrc_v4d0NonCriticalExtensions_12 = -1; /* T_v4d0NonCriticalExtensions_12 */
@@ -2220,23 +2369,23 @@ static int hf_rrc_transportChannelReconfiguration_r4_add_ext = -1; /* BIT_STRIN
static int hf_rrc_v590NonCriticalExtensions_25 = -1; /* T_v590NonCriticalExtensions_25 */
static int hf_rrc_v690NonCriticalExtensions_37 = -1; /* T_v690NonCriticalExtensions_37 */
static int hf_rrc_v770NonCriticalExtensions_26 = -1; /* T_v770NonCriticalExtensions_26 */
-static int hf_rrc_nonCriticalExtensions_126 = -1; /* T_nonCriticalExtensions_126 */
-static int hf_rrc_criticalExtensions_92 = -1; /* T_criticalExtensions_92 */
+static int hf_rrc_nonCriticalExtensions_136 = -1; /* T_nonCriticalExtensions_136 */
+static int hf_rrc_criticalExtensions_102 = -1; /* T_criticalExtensions_102 */
static int hf_rrc_r5_10 = -1; /* T_r5_10 */
static int hf_rrc_transportChannelReconfiguration_r5 = -1; /* TransportChannelReconfiguration_r5_IEs */
static int hf_rrc_transportChannelReconfiguration_r5_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v690NonCriticalExtensions_38 = -1; /* T_v690NonCriticalExtensions_38 */
static int hf_rrc_v770NonCriticalExtensions_27 = -1; /* T_v770NonCriticalExtensions_27 */
-static int hf_rrc_nonCriticalExtensions_127 = -1; /* T_nonCriticalExtensions_127 */
-static int hf_rrc_criticalExtensions_93 = -1; /* T_criticalExtensions_93 */
+static int hf_rrc_nonCriticalExtensions_137 = -1; /* T_nonCriticalExtensions_137 */
+static int hf_rrc_criticalExtensions_103 = -1; /* T_criticalExtensions_103 */
static int hf_rrc_r6_11 = -1; /* T_r6_11 */
static int hf_rrc_transportChannelReconfiguration_r6 = -1; /* TransportChannelReconfiguration_r6_IEs */
static int hf_rrc_transportChannelReconfiguration_r6_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v6b0NonCriticalExtensions_12 = -1; /* T_v6b0NonCriticalExtensions_11 */
static int hf_rrc_transportChannelReconfiguration_v6b0ext = -1; /* TransportChannelReconfiguration_v6b0ext_IEs */
static int hf_rrc_v770NonCriticalExtensions_28 = -1; /* T_v770NonCriticalExtensions_28 */
-static int hf_rrc_nonCriticalExtensions_128 = -1; /* T_nonCriticalExtensions_128 */
-static int hf_rrc_criticalExtensions_94 = -1; /* T_criticalExtensions_94 */
+static int hf_rrc_nonCriticalExtensions_138 = -1; /* T_nonCriticalExtensions_138 */
+static int hf_rrc_criticalExtensions_104 = -1; /* T_criticalExtensions_104 */
static int hf_rrc_r7_11 = -1; /* T_r7_11 */
static int hf_rrc_transportChannelReconfiguration_r7 = -1; /* TransportChannelReconfiguration_r7_IEs */
static int hf_rrc_transportChannelReconfiguration_r7_add_ext = -1; /* BIT_STRING */
@@ -2248,8 +2397,8 @@ static int hf_rrc_v7f0NonCriticalExtensions_14 = -1; /* T_v7f0NonCriticalExtens
static int hf_rrc_transportChannelReconfiguration_v7f0ext = -1; /* TransportChannelReconfiguration_v7f0ext_IEs */
static int hf_rrc_v7g0NonCriticalExtensions_15 = -1; /* T_v7g0NonCriticalExtensions_15 */
static int hf_rrc_transportChannelReconfiguration_v7g0ext = -1; /* TransportChannelReconfiguration_v7g0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_129 = -1; /* T_nonCriticalExtensions_129 */
-static int hf_rrc_criticalExtensions_95 = -1; /* T_criticalExtensions_95 */
+static int hf_rrc_nonCriticalExtensions_139 = -1; /* T_nonCriticalExtensions_139 */
+static int hf_rrc_criticalExtensions_105 = -1; /* T_criticalExtensions_105 */
static int hf_rrc_r8_11 = -1; /* T_r8_11 */
static int hf_rrc_transportChannelReconfiguration_r8 = -1; /* TransportChannelReconfiguration_r8_IEs */
static int hf_rrc_transportChannelReconfiguration_r8_add_ext = -1; /* BIT_STRING */
@@ -2260,43 +2409,49 @@ static int hf_rrc_transportChannelReconfiguration_v890ext = -1; /* TransportCha
static int hf_rrc_v7g0NonCriticalExtensions_16 = -1; /* T_v7g0NonCriticalExtensions_16 */
static int hf_rrc_v8a0NonCriticalExtensions_09 = -1; /* T_v8a0NonCriticalExtensions_09 */
static int hf_rrc_transportChannelReconfiguration_v8a0ext = -1; /* TransportChannelReconfiguration_v8a0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_130 = -1; /* T_nonCriticalExtensions_130 */
-static int hf_rrc_criticalExtensions_96 = -1; /* T_criticalExtensions_96 */
+static int hf_rrc_nonCriticalExtensions_140 = -1; /* T_nonCriticalExtensions_140 */
+static int hf_rrc_criticalExtensions_106 = -1; /* T_criticalExtensions_106 */
static int hf_rrc_r9_10 = -1; /* T_r9_10 */
static int hf_rrc_transportChannelReconfiguration_r9 = -1; /* TransportChannelReconfiguration_r9_IEs */
static int hf_rrc_transportChannelReconfiguration_r9_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v950NonCriticalExtensions_08 = -1; /* T_v950NonCriticalExtensions_08 */
static int hf_rrc_transportChannelReconfiguration_v950ext = -1; /* TransportChannelReconfiguration_v950ext_IEs */
-static int hf_rrc_nonCriticalExtensions_131 = -1; /* T_nonCriticalExtensions_131 */
-static int hf_rrc_criticalExtensions_97 = -1; /* T_criticalExtensions_97 */
-static int hf_rrc_dummy_20 = -1; /* T_dummy_11 */
-static int hf_rrc_fdd_37 = -1; /* T_fdd_37 */
-static int hf_rrc_modeSpecificPhysChInfo_12 = -1; /* T_modeSpecificPhysChInfo_12 */
+static int hf_rrc_nonCriticalExtensions_141 = -1; /* T_nonCriticalExtensions_141 */
+static int hf_rrc_criticalExtensions_107 = -1; /* T_criticalExtensions_107 */
+static int hf_rrc_r10_10 = -1; /* T_r10_10 */
+static int hf_rrc_transportChannelReconfiguration_r10 = -1; /* TransportChannelReconfiguration_r10_IEs */
+static int hf_rrc_transportChannelReconfiguration_r10_add_ext = -1; /* BIT_STRING */
+static int hf_rrc_nonCriticalExtensions_142 = -1; /* T_nonCriticalExtensions_142 */
+static int hf_rrc_criticalExtensions_108 = -1; /* T_criticalExtensions_108 */
+static int hf_rrc_dummy_24 = -1; /* T_dummy_11 */
static int hf_rrc_fdd_38 = -1; /* T_fdd_38 */
-static int hf_rrc_dummy_21 = -1; /* T_dummy_12 */
+static int hf_rrc_modeSpecificPhysChInfo_12 = -1; /* T_modeSpecificPhysChInfo_12 */
static int hf_rrc_fdd_39 = -1; /* T_fdd_39 */
-static int hf_rrc_modeSpecificPhysChInfo_13 = -1; /* T_modeSpecificPhysChInfo_13 */
+static int hf_rrc_dummy_25 = -1; /* T_dummy_12 */
static int hf_rrc_fdd_40 = -1; /* T_fdd_40 */
-static int hf_rrc_dummy_22 = -1; /* T_dummy_13 */
+static int hf_rrc_modeSpecificPhysChInfo_13 = -1; /* T_modeSpecificPhysChInfo_13 */
static int hf_rrc_fdd_41 = -1; /* T_fdd_41 */
-static int hf_rrc_modeSpecificPhysChInfo_14 = -1; /* T_modeSpecificPhysChInfo_14 */
+static int hf_rrc_dummy_26 = -1; /* T_dummy_13 */
static int hf_rrc_fdd_42 = -1; /* T_fdd_42 */
+static int hf_rrc_modeSpecificPhysChInfo_14 = -1; /* T_modeSpecificPhysChInfo_14 */
+static int hf_rrc_fdd_43 = -1; /* T_fdd_43 */
static int hf_rrc_postVerificationPeriod_06 = -1; /* T_postVerificationPeriod_06 */
-static int hf_rrc_responseToChangeOfUE_Capability_06 = -1; /* T_responseToChangeOfUE_Capability_06 */
-static int hf_rrc_responseToChangeOfUE_Capability_07 = -1; /* T_responseToChangeOfUE_Capability_07 */
static int hf_rrc_responseToChangeOfUE_Capability_08 = -1; /* T_responseToChangeOfUE_Capability_08 */
+static int hf_rrc_responseToChangeOfUE_Capability_09 = -1; /* T_responseToChangeOfUE_Capability_09 */
+static int hf_rrc_responseToChangeOfUE_Capability_10 = -1; /* T_responseToChangeOfUE_Capability_10 */
+static int hf_rrc_responseToChangeOfUE_Capability_11 = -1; /* T_responseToChangeOfUE_Capability_11 */
static int hf_rrc_laterNonCriticalExtensions_52 = -1; /* T_laterNonCriticalExtensions_52 */
static int hf_rrc_transportChannelReconfigurationComplete_r3_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v770NonCriticalExtensions_29 = -1; /* T_v770NonCriticalExtensions_29 */
static int hf_rrc_transportChannelReconfigurationComplete_v770ext = -1; /* TransportChannelReconfigurationComplete_v770ext_IEs */
-static int hf_rrc_nonCriticalExtensions_132 = -1; /* T_nonCriticalExtensions_132 */
+static int hf_rrc_nonCriticalExtensions_143 = -1; /* T_nonCriticalExtensions_143 */
static int hf_rrc_deferredMeasurementControlReading_05 = -1; /* T_deferredMeasurementControlReading_05 */
static int hf_rrc_laterNonCriticalExtensions_53 = -1; /* T_laterNonCriticalExtensions_53 */
static int hf_rrc_transportChannelReconfigurationFailure_r3_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_133 = -1; /* T_nonCriticalExtensions_133 */
-static int hf_rrc_modeSpecificInfo_13 = -1; /* T_modeSpecificInfo_13 */
-static int hf_rrc_fdd_43 = -1; /* NULL */
-static int hf_rrc_tdd_08 = -1; /* T_tdd_07 */
+static int hf_rrc_nonCriticalExtensions_144 = -1; /* T_nonCriticalExtensions_144 */
+static int hf_rrc_modeSpecificInfo_14 = -1; /* T_modeSpecificInfo_14 */
+static int hf_rrc_fdd_44 = -1; /* NULL */
+static int hf_rrc_tdd_09 = -1; /* T_tdd_08 */
static int hf_rrc_tfcs_ID = -1; /* TFCS_Identity */
static int hf_rrc_dpch_TFCS_InUplink = -1; /* TFC_Subset */
static int hf_rrc_activationTimeForTFCSubset = -1; /* ActivationTime */
@@ -2305,11 +2460,11 @@ static int hf_rrc_laterNonCriticalExtensions_54 = -1; /* T_laterNonCriticalExte
static int hf_rrc_transportFormatCombinationControl_r3_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v820NonCriticalExtensions_02 = -1; /* T_v820NonCriticalExtensions_02 */
static int hf_rrc_transportformatcombinationcontrol_v820ext = -1; /* TransportFormatCombinationControl_v820ext_IEs */
-static int hf_rrc_nonCriticalExtensions_134 = -1; /* T_nonCriticalExtensions_134 */
+static int hf_rrc_nonCriticalExtensions_145 = -1; /* T_nonCriticalExtensions_145 */
static int hf_rrc_ul_AMR_Rate = -1; /* UL_AMR_Rate */
static int hf_rrc_laterNonCriticalExtensions_55 = -1; /* T_laterNonCriticalExtensions_55 */
static int hf_rrc_transportFormatCombinationControlFailure_r3_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_135 = -1; /* T_nonCriticalExtensions_135 */
+static int hf_rrc_nonCriticalExtensions_146 = -1; /* T_nonCriticalExtensions_146 */
static int hf_rrc_r3_25 = -1; /* T_r3_25 */
static int hf_rrc_ueCapabilityEnquiry_r3 = -1; /* UECapabilityEnquiry_r3_IEs */
static int hf_rrc_laterNonCriticalExtensions_56 = -1; /* T_laterNonCriticalExtensions_56 */
@@ -2322,9 +2477,9 @@ static int hf_rrc_v770NonCriticalExtensions_30 = -1; /* T_v770NonCriticalExtens
static int hf_rrc_ueCapabilityEnquiry_v770ext = -1; /* UECapabilityEnquiry_v770ext_IEs */
static int hf_rrc_v860NonCriticalExtensions_18 = -1; /* T_v860NonCriticalExtensions_18 */
static int hf_rrc_ueCapabilityEnquiry_v860ext = -1; /* UECapabilityEnquiry_v860ext_IEs */
-static int hf_rrc_nonCriticalExtensions_136 = -1; /* T_nonCriticalExtensions_136 */
+static int hf_rrc_nonCriticalExtensions_147 = -1; /* T_nonCriticalExtensions_147 */
static int hf_rrc_later_than_r3_22 = -1; /* T_later_than_r3_22 */
-static int hf_rrc_criticalExtensions_98 = -1; /* T_criticalExtensions_98 */
+static int hf_rrc_criticalExtensions_109 = -1; /* T_criticalExtensions_109 */
static int hf_rrc_capabilityUpdateRequirement_05 = -1; /* CapabilityUpdateRequirement_v770ext */
static int hf_rrc_capabilityUpdateRequirement_06 = -1; /* CapabilityUpdateRequirement_v860ext */
static int hf_rrc_v370NonCriticalExtensions_01 = -1; /* T_v370NonCriticalExtensions_01 */
@@ -2343,7 +2498,7 @@ static int hf_rrc_v5c0NonCriticalExtensions_01 = -1; /* T_v5c0NonCriticalExtens
static int hf_rrc_ueCapabilityInformation_v5c0ext = -1; /* UECapabilityInformation_v5c0ext */
static int hf_rrc_v690NonCriticalExtensions_39 = -1; /* T_v690NonCriticalExtensions_39 */
static int hf_rrc_ueCapabilityInformation_v690ext = -1; /* UECapabilityInformation_v690ext_IEs */
-static int hf_rrc_nonCriticalExtensions_137 = -1; /* T_nonCriticalExtensions_137 */
+static int hf_rrc_nonCriticalExtensions_148 = -1; /* T_nonCriticalExtensions_148 */
static int hf_rrc_ueCapabilityInformation_v650ext = -1; /* UECapabilityInformation_v650ext_IEs */
static int hf_rrc_v680NonCriticalExtensions_01 = -1; /* T_v680NonCriticalExtensions_01 */
static int hf_rrc_ueCapabilityInformation_v680ext = -1; /* UECapabilityInformation_v680ext_IEs */
@@ -2351,7 +2506,9 @@ static int hf_rrc_v7e0NonCriticalExtensions_03 = -1; /* T_v7e0NonCriticalExtens
static int hf_rrc_ueCapabilityInformation_v7e0ext = -1; /* UECapabilityInformation_v7e0ext_IEs */
static int hf_rrc_v7f0NonCriticalExtensions_16 = -1; /* T_v7f0NonCriticalExtensions_16 */
static int hf_rrc_ueCapabilityInformation_v7f0ext = -1; /* UECapabilityInformation_v7f0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_138 = -1; /* T_nonCriticalExtensions_138 */
+static int hf_rrc_va40NonCriticalExtensions_15 = -1; /* T_va40NonCriticalExtensions_14 */
+static int hf_rrc_ueCapabilityInformation_va40ext = -1; /* UECapabilityInformation_va40ext_IEs */
+static int hf_rrc_nonCriticalExtensions_149 = -1; /* T_nonCriticalExtensions_149 */
static int hf_rrc_ueCapabilityContainer_01 = -1; /* T_ueCapabilityContainer_01 */
static int hf_rrc_r3_26 = -1; /* T_r3_26 */
static int hf_rrc_ueCapabilityInformationConfirm_r3 = -1; /* UECapabilityInformationConfirm_r3_IEs */
@@ -2359,9 +2516,9 @@ static int hf_rrc_laterNonCriticalExtensions_58 = -1; /* T_laterNonCriticalExte
static int hf_rrc_ueCapabilityInformationConfirm_r3_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v770NonCriticalExtensions_31 = -1; /* T_v770NonCriticalExtensions_31 */
static int hf_rrc_ueCapabilityInformationConfirm_v770ext = -1; /* UECapabilityInformationConfirm_v770ext_IEs */
-static int hf_rrc_nonCriticalExtensions_139 = -1; /* T_nonCriticalExtensions_139 */
+static int hf_rrc_nonCriticalExtensions_150 = -1; /* T_nonCriticalExtensions_150 */
static int hf_rrc_later_than_r3_23 = -1; /* T_later_than_r3_23 */
-static int hf_rrc_criticalExtensions_99 = -1; /* T_criticalExtensions_99 */
+static int hf_rrc_criticalExtensions_110 = -1; /* T_criticalExtensions_110 */
static int hf_rrc_acceptanceOfChangeOfCapability = -1; /* T_acceptanceOfChangeOfCapability */
static int hf_rrc_laterNonCriticalExtensions_59 = -1; /* T_laterNonCriticalExtensions_59 */
static int hf_rrc_uplinkDirectTransfer_r3_add_ext = -1; /* BIT_STRING */
@@ -2369,7 +2526,7 @@ static int hf_rrc_v690NonCriticalExtensions_40 = -1; /* T_v690NonCriticalExtens
static int hf_rrc_uplinkDirectTransfer_v690ext = -1; /* UplinkDirectTransfer_v690ext_IEs */
static int hf_rrc_v7g0NonCriticalExtensions_17 = -1; /* T_v7g0NonCriticalExtensions_17 */
static int hf_rrc_uplinkDirectTransfer_v7g0ext = -1; /* UplinkDirectTransfer_v7g0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_140 = -1; /* T_nonCriticalExtensions_140 */
+static int hf_rrc_nonCriticalExtensions_151 = -1; /* T_nonCriticalExtensions_151 */
static int hf_rrc_r3_27 = -1; /* T_r3_27 */
static int hf_rrc_uplinkPhysicalChannelControl_r3 = -1; /* UplinkPhysicalChannelControl_r3_IEs */
static int hf_rrc_laterNonCriticalExtensions_60 = -1; /* T_laterNonCriticalExtensions_60 */
@@ -2378,28 +2535,28 @@ static int hf_rrc_v4b0NonCriticalExtensions_16 = -1; /* T_v4b0NonCriticalExtens
static int hf_rrc_uplinkPysicalChannelControl_v4b0ext = -1; /* UplinkPhysicalChannelControl_v4b0ext_IEs */
static int hf_rrc_noncriticalExtensions = -1; /* T_noncriticalExtensions */
static int hf_rrc_later_than_r3_24 = -1; /* T_later_than_r3_24 */
-static int hf_rrc_criticalExtensions_100 = -1; /* T_criticalExtensions_100 */
+static int hf_rrc_criticalExtensions_111 = -1; /* T_criticalExtensions_111 */
static int hf_rrc_r4_13 = -1; /* T_r4_13 */
static int hf_rrc_uplinkPhysicalChannelControl_r4 = -1; /* UplinkPhysicalChannelControl_r4_IEs */
static int hf_rrc_v4d0NonCriticalExtensions_13 = -1; /* T_v4d0NonCriticalExtensions_13 */
static int hf_rrc_uplinkPhysicalChannelControl_r4_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v690NonCriticalExtensions_41 = -1; /* T_v690NonCriticalExtensions_41 */
static int hf_rrc_uplinkPhysicalChannelControl_v690ext = -1; /* UplinkPhysicalChannelControl_v690ext_IEs */
-static int hf_rrc_nonCriticalExtensions_141 = -1; /* T_nonCriticalExtensions_141 */
-static int hf_rrc_criticalExtensions_101 = -1; /* T_criticalExtensions_101 */
+static int hf_rrc_nonCriticalExtensions_152 = -1; /* T_nonCriticalExtensions_152 */
+static int hf_rrc_criticalExtensions_112 = -1; /* T_criticalExtensions_112 */
static int hf_rrc_r5_11 = -1; /* T_r5_11 */
static int hf_rrc_uplinkPhysicalChannelControl_r5 = -1; /* UplinkPhysicalChannelControl_r5_IEs */
static int hf_rrc_uplinkPhysicalChannelControl_r5_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v690NonCriticalExtensions_42 = -1; /* T_v690NonCriticalExtensions_42 */
static int hf_rrc_v6a0NonCriticalExtensions_01 = -1; /* T_v6a0NonCriticalExtensions_01 */
static int hf_rrc_uplinkPhysicalChannelControl_v6a0ext = -1; /* UplinkPhysicalChannelControl_v6a0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_142 = -1; /* T_nonCriticalExtensions_142 */
-static int hf_rrc_criticalExtensions_102 = -1; /* T_criticalExtensions_102 */
+static int hf_rrc_nonCriticalExtensions_153 = -1; /* T_nonCriticalExtensions_153 */
+static int hf_rrc_criticalExtensions_113 = -1; /* T_criticalExtensions_113 */
static int hf_rrc_r7_12 = -1; /* T_r7_12 */
static int hf_rrc_uplinkPhysicalChannelControl_r7 = -1; /* UplinkPhysicalChannelControl_r7_IEs */
static int hf_rrc_uplinkPhysicalChannelControl_r7_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_143 = -1; /* T_nonCriticalExtensions_143 */
-static int hf_rrc_criticalExtensions_103 = -1; /* T_criticalExtensions_103 */
+static int hf_rrc_nonCriticalExtensions_154 = -1; /* T_nonCriticalExtensions_154 */
+static int hf_rrc_criticalExtensions_114 = -1; /* T_criticalExtensions_114 */
static int hf_rrc_ccTrCH_PowerControlInfo = -1; /* CCTrCH_PowerControlInfo */
static int hf_rrc_timingAdvance = -1; /* UL_TimingAdvanceControl */
static int hf_rrc_alpha = -1; /* Alpha */
@@ -2409,24 +2566,24 @@ static int hf_rrc_pusch_ConstantValue = -1; /* ConstantValueTdd */
static int hf_rrc_openLoopPowerControl_IPDL_TDD = -1; /* OpenLoopPowerControl_IPDL_TDD_r4 */
static int hf_rrc_ccTrCH_PowerControlInfo_01 = -1; /* CCTrCH_PowerControlInfo_r4 */
static int hf_rrc_tddOption = -1; /* T_tddOption */
-static int hf_rrc_tdd384_06 = -1; /* T_tdd384_06 */
+static int hf_rrc_tdd384_07 = -1; /* T_tdd384_07 */
static int hf_rrc_timingAdvance_01 = -1; /* UL_TimingAdvanceControl_r4 */
-static int hf_rrc_tdd128_06 = -1; /* T_tdd128_06 */
+static int hf_rrc_tdd128_07 = -1; /* T_tdd128_07 */
static int hf_rrc_ul_SynchronisationParameters = -1; /* UL_SynchronisationParameters_r4 */
static int hf_rrc_ccTrCH_PowerControlInfo_02 = -1; /* CCTrCH_PowerControlInfo_r5 */
static int hf_rrc_tddOption_01 = -1; /* T_tddOption_01 */
-static int hf_rrc_tdd384_07 = -1; /* T_tdd384_07 */
+static int hf_rrc_tdd384_08 = -1; /* T_tdd384_08 */
static int hf_rrc_hs_SICH_PowerControl = -1; /* HS_SICH_Power_Control_Info_TDD384 */
-static int hf_rrc_tdd128_07 = -1; /* T_tdd128_07 */
+static int hf_rrc_tdd128_08 = -1; /* T_tdd128_08 */
static int hf_rrc_desired_HS_SICH_PowerLevel = -1; /* INTEGER_M120_M58 */
static int hf_rrc_tpc_Step_Size = -1; /* T_tpc_Step_Size */
static int hf_rrc_ccTrCH_PowerControlInfo_03 = -1; /* CCTrCH_PowerControlInfo_r7 */
static int hf_rrc_tddOption_02 = -1; /* T_tddOption_02 */
-static int hf_rrc_tdd384_08 = -1; /* T_tdd384_08 */
-static int hf_rrc_tdd768_03 = -1; /* T_tdd768_03 */
+static int hf_rrc_tdd384_09 = -1; /* T_tdd384_09 */
+static int hf_rrc_tdd768_04 = -1; /* T_tdd768_04 */
static int hf_rrc_timingAdvance_02 = -1; /* UL_TimingAdvanceControl_r7 */
static int hf_rrc_hs_SICH_PowerControl_01 = -1; /* HS_SICH_Power_Control_Info_TDD768 */
-static int hf_rrc_tdd128_08 = -1; /* T_tdd128_08 */
+static int hf_rrc_tdd128_09 = -1; /* T_tdd128_09 */
static int hf_rrc_tpc_Step_Size_01 = -1; /* T_tpc_Step_Size_01 */
static int hf_rrc_ura_UpdateCause = -1; /* URA_UpdateCause */
static int hf_rrc_laterNonCriticalExtensions_61 = -1; /* T_laterNonCriticalExtensions_61 */
@@ -2435,45 +2592,49 @@ static int hf_rrc_v770NonCriticalExtensions_32 = -1; /* T_v770NonCriticalExtens
static int hf_rrc_uraUpdate_v770ext = -1; /* UraUpdate_v770ext_IEs */
static int hf_rrc_v860NonCriticalExtensions_19 = -1; /* T_v860NonCriticalExtensions_19 */
static int hf_rrc_uraUpdate_v860ext = -1; /* URAUpdate_v860ext_IEs */
-static int hf_rrc_nonCriticalExtensions_144 = -1; /* T_nonCriticalExtensions_144 */
+static int hf_rrc_va40NonCriticalExtensions_16 = -1; /* T_va40NonCriticalExtensions_15 */
+static int hf_rrc_uraUpdate_va40ext = -1; /* URAUpdate_va40ext_IEs */
+static int hf_rrc_nonCriticalExtensions_155 = -1; /* T_nonCriticalExtensions_155 */
static int hf_rrc_uraUpdate_v7e0ext = -1; /* URAUpdate_v7e0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_145 = -1; /* T_nonCriticalExtensions_145 */
+static int hf_rrc_nonCriticalExtensions_156 = -1; /* T_nonCriticalExtensions_156 */
static int hf_rrc_support_hsdschReception_CellUraPch = -1; /* T_support_hsdschReception_CellUraPch */
static int hf_rrc_support_hsdschReception_CellFach = -1; /* T_support_hsdschReception_CellFach */
static int hf_rrc_supportForTwoDRXSchemesInPCH_01 = -1; /* T_supportForTwoDRXSchemesInPCH_01 */
static int hf_rrc_supportOfHS_DSCHDRXOperation_01 = -1; /* T_supportOfHS_DSCHDRXOperation_01 */
static int hf_rrc_supportOfCommonEDCH_02 = -1; /* T_supportOfCommonEDCH_02 */
static int hf_rrc_supportOfMACiis_02 = -1; /* T_supportOfMACiis_02 */
+static int hf_rrc_loggedMeasAvailable_04 = -1; /* T_loggedMeasAvailable_04 */
+static int hf_rrc_loggedANRResultsAvailable_03 = -1; /* T_loggedANRResultsAvailable_03 */
static int hf_rrc_r3_28 = -1; /* T_r3_28 */
static int hf_rrc_uraUpdateConfirm_r3 = -1; /* URAUpdateConfirm_r3_IEs */
static int hf_rrc_laterNonCriticalExtensions_62 = -1; /* T_laterNonCriticalExtensions_62 */
static int hf_rrc_uraUpdateConfirm_r3_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v690NonCriticalExtensions_43 = -1; /* T_v690NonCriticalExtensions_43 */
static int hf_rrc_uraUpdateConfirm_v690ext = -1; /* URAUpdateConfirm_v690ext_IEs */
-static int hf_rrc_nonCriticalExtensions_146 = -1; /* T_nonCriticalExtensions_146 */
+static int hf_rrc_nonCriticalExtensions_157 = -1; /* T_nonCriticalExtensions_157 */
static int hf_rrc_later_than_r3_25 = -1; /* T_later_than_r3_25 */
-static int hf_rrc_criticalExtensions_104 = -1; /* T_criticalExtensions_104 */
+static int hf_rrc_criticalExtensions_115 = -1; /* T_criticalExtensions_115 */
static int hf_rrc_r5_12 = -1; /* T_r5_12 */
static int hf_rrc_uraUpdateConfirm_r5 = -1; /* URAUpdateConfirm_r5_IEs */
static int hf_rrc_v690NonCriticalExtensions_44 = -1; /* T_v690NonCriticalExtensions_44 */
-static int hf_rrc_nonCriticalExtensions_147 = -1; /* T_nonCriticalExtensions_147 */
-static int hf_rrc_criticalExtensions_105 = -1; /* T_criticalExtensions_105 */
+static int hf_rrc_nonCriticalExtensions_158 = -1; /* T_nonCriticalExtensions_158 */
+static int hf_rrc_criticalExtensions_116 = -1; /* T_criticalExtensions_116 */
static int hf_rrc_r7_13 = -1; /* T_r7_13 */
static int hf_rrc_uraUpdateConfirm_r7 = -1; /* URAUpdateConfirm_r7_IEs */
static int hf_rrc_uraUpdateConfirm_r7_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v860NonCriticalExtensions_20 = -1; /* T_v860NonCriticalExtensions_20 */
static int hf_rrc_uraUpdateConfirm_v860ext = -1; /* URAUpdateConfirm_v860ext_IEs */
-static int hf_rrc_nonCriticalExtensions_148 = -1; /* T_nonCriticalExtensions_148 */
-static int hf_rrc_criticalExtensions_106 = -1; /* T_criticalExtensions_106 */
+static int hf_rrc_nonCriticalExtensions_159 = -1; /* T_nonCriticalExtensions_159 */
+static int hf_rrc_criticalExtensions_117 = -1; /* T_criticalExtensions_117 */
static int hf_rrc_r3_29 = -1; /* T_r3_29 */
static int hf_rrc_uraUpdateConfirm_CCCH_r3 = -1; /* URAUpdateConfirm_CCCH_r3_IEs */
static int hf_rrc_laterNonCriticalExtensions_63 = -1; /* T_laterNonCriticalExtensions_63 */
static int hf_rrc_uraUpdateConfirm_CCCH_r3_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v690NonCriticalExtensions_45 = -1; /* T_v690NonCriticalExtensions_45 */
static int hf_rrc_v860NonCriticalExtensions_21 = -1; /* T_v860NonCriticalExtensions_21 */
-static int hf_rrc_nonCriticalExtensions_149 = -1; /* T_nonCriticalExtensions_149 */
+static int hf_rrc_nonCriticalExtensions_160 = -1; /* T_nonCriticalExtensions_160 */
static int hf_rrc_later_than_r3_26 = -1; /* T_later_than_r3_26 */
-static int hf_rrc_criticalExtensions_107 = -1; /* T_criticalExtensions_107 */
+static int hf_rrc_criticalExtensions_118 = -1; /* T_criticalExtensions_118 */
static int hf_rrc_uraUpdateConfirm_02 = -1; /* URAUpdateConfirm_r3_IEs */
static int hf_rrc_r3_30 = -1; /* T_r3_30 */
static int hf_rrc_utranMobilityInformation_r3 = -1; /* UTRANMobilityInformation_r3_IEs */
@@ -2485,25 +2646,25 @@ static int hf_rrc_v690NonCriticalExtensions_46 = -1; /* T_v690NonCriticalExtens
static int hf_rrc_utranMobilityInformation_v690ext = -1; /* UtranMobilityInformation_v690ext_IEs */
static int hf_rrc_v860NonCriticalExtentions = -1; /* T_v860NonCriticalExtentions */
static int hf_rrc_utranMobilityInformation_v860ext = -1; /* UTRANMobilityInformation_v860ext1_IEs */
-static int hf_rrc_nonCriticalExtensions_150 = -1; /* T_nonCriticalExtensions_150 */
+static int hf_rrc_nonCriticalExtensions_161 = -1; /* T_nonCriticalExtensions_161 */
static int hf_rrc_later_than_r3_27 = -1; /* T_later_than_r3_27 */
-static int hf_rrc_criticalExtensions_108 = -1; /* T_criticalExtensions_108 */
+static int hf_rrc_criticalExtensions_119 = -1; /* T_criticalExtensions_119 */
static int hf_rrc_r5_13 = -1; /* T_r5_13 */
static int hf_rrc_utranMobilityInformation_r5 = -1; /* UTRANMobilityInformation_r5_IEs */
static int hf_rrc_v690NonCriticalExtensions_47 = -1; /* T_v690NonCriticalExtensions_47 */
static int hf_rrc_v860NonCriticalExtentions_01 = -1; /* T_v860NonCriticalExtentions_01 */
-static int hf_rrc_nonCriticalExtensions_151 = -1; /* T_nonCriticalExtensions_151 */
-static int hf_rrc_criticalExtensions_109 = -1; /* T_criticalExtensions_109 */
+static int hf_rrc_nonCriticalExtensions_162 = -1; /* T_nonCriticalExtensions_162 */
+static int hf_rrc_criticalExtensions_120 = -1; /* T_criticalExtensions_120 */
static int hf_rrc_r7_14 = -1; /* T_r7_14 */
static int hf_rrc_utranMobilityInformation_r7 = -1; /* UTRANMobilityInformation_r7_IEs */
static int hf_rrc_utranMobilityInformation_r7_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v860NonCriticalExtensions_22 = -1; /* T_v860NonCriticalExtensions_22 */
static int hf_rrc_utranMobilityInformation_v860ext_01 = -1; /* UTRANMobilityInformation_v860ext2_IEs */
-static int hf_rrc_nonCriticalExtensions_152 = -1; /* T_nonCriticalExtensions_152 */
-static int hf_rrc_criticalExtensions_110 = -1; /* T_criticalExtensions_110 */
+static int hf_rrc_nonCriticalExtensions_163 = -1; /* T_nonCriticalExtensions_163 */
+static int hf_rrc_criticalExtensions_121 = -1; /* T_criticalExtensions_121 */
static int hf_rrc_ue_ConnTimersAndConstants = -1; /* UE_ConnTimersAndConstants */
static int hf_rrc_cn_InformationInfo_02 = -1; /* CN_InformationInfoFull */
-static int hf_rrc_nonCriticalExtensions_153 = -1; /* T_nonCriticalExtensions_153 */
+static int hf_rrc_nonCriticalExtensions_164 = -1; /* T_nonCriticalExtensions_164 */
static int hf_rrc_ue_ConnTimersAndConstants_v3a0ext = -1; /* UE_ConnTimersAndConstants_v3a0ext */
static int hf_rrc_ue_ConnTimersAndConstants_01 = -1; /* UE_ConnTimersAndConstants_r5 */
static int hf_rrc_ue_ConnTimersAndConstants_02 = -1; /* UE_ConnTimersAndConstants_v860ext */
@@ -2512,13 +2673,16 @@ static int hf_rrc_laterNonCriticalExtensions_65 = -1; /* T_laterNonCriticalExte
static int hf_rrc_utranMobilityInformationConfirm_r3_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v770NonCriticalExtension_01 = -1; /* T_v770NonCriticalExtension_01 */
static int hf_rrc_utranMobilityInformationConfirm_v770ext = -1; /* UTRANMobilityInformationConfirm_v770ext_IEs */
-static int hf_rrc_nonCriticalExtensions_154 = -1; /* T_nonCriticalExtensions_154 */
+static int hf_rrc_va40NonCriticalExtensions_17 = -1; /* T_va40NonCriticalExtensions_16 */
+static int hf_rrc_utranMobilityInformationConfirm_va40ext = -1; /* UTRANMobilityInformationConfirm_va40ext_IEs */
+static int hf_rrc_nonCriticalExtensions_165 = -1; /* T_nonCriticalExtensions_165 */
static int hf_rrc_deferredMeasurementControlReading_06 = -1; /* T_deferredMeasurementControlReading_06 */
+static int hf_rrc_loggedMeasAvailable_05 = -1; /* T_loggedMeasAvailable_05 */
static int hf_rrc_laterNonCriticalExtensions_66 = -1; /* T_laterNonCriticalExtensions_66 */
static int hf_rrc_utranMobilityInformationFailure_r3_add_ext = -1; /* BIT_STRING */
-static int hf_rrc_nonCriticalExtensions_155 = -1; /* T_nonCriticalExtensions_155 */
+static int hf_rrc_nonCriticalExtensions_166 = -1; /* T_nonCriticalExtensions_166 */
static int hf_rrc_mbms_ServiceAccessInfoList = -1; /* MBMS_ServiceAccessInfoList_r6 */
-static int hf_rrc_nonCriticalExtensions_156 = -1; /* T_nonCriticalExtensions_156 */
+static int hf_rrc_nonCriticalExtensions_167 = -1; /* T_nonCriticalExtensions_167 */
static int hf_rrc_mbms_CommonRBInformationList = -1; /* MBMS_CommonRBInformationList_r6 */
static int hf_rrc_mbms_TranspChInfoForEachTrCh = -1; /* MBMS_TranspChInfoForEachTrCh_r6 */
static int hf_rrc_mbms_TranspChInfoForEachCCTrCh = -1; /* MBMS_TranspChInfoForEachCCTrCh_r6 */
@@ -2529,7 +2693,7 @@ static int hf_rrc_v780NonCriticalExtensions_10 = -1; /* T_v780NonCriticalExtens
static int hf_rrc_mbmsCommonPTMRBInformation_v780ext = -1; /* MBMSCommonPTMRBInformation_v780ext_IEs */
static int hf_rrc_v860NonCriticalExtensions_23 = -1; /* T_v860NonCriticalExtensions_23 */
static int hf_rrc_mbmsCommonPTMRBInformation_v860ext = -1; /* MBMSCommonPTMRBInformation_v860ext_IEs */
-static int hf_rrc_nonCriticalExtensions_157 = -1; /* T_nonCriticalExtensions_157 */
+static int hf_rrc_nonCriticalExtensions_168 = -1; /* T_nonCriticalExtensions_168 */
static int hf_rrc_mbms_PhyChInformationList_r7 = -1; /* MBMS_PhyChInformationList_r7 */
static int hf_rrc_mbsfn_TDDInformation_LCR = -1; /* MBSFN_TDDInformation_LCR */
static int hf_rrc_mbms_PhyChInformationList_01 = -1; /* MBMS_PhyChInformationList_IMB384 */
@@ -2537,7 +2701,7 @@ static int hf_rrc_mbms_CurrentCell_SCCPCHList = -1; /* MBMS_CurrentCell_SCCPCHL
static int hf_rrc_mbms_SIBType5_SCCPCHList = -1; /* MBMS_SIBType5_SCCPCHList_r6 */
static int hf_rrc_v770NonCriticalExtensions_34 = -1; /* T_v770NonCriticalExtensions_34 */
static int hf_rrc_mbmsCurrentCellPTMRBInfo_v770ext = -1; /* MBMSCurrentCellPTMRBInfo_v770ext_IEs */
-static int hf_rrc_nonCriticalExtensions_158 = -1; /* T_nonCriticalExtensions_158 */
+static int hf_rrc_nonCriticalExtensions_169 = -1; /* T_nonCriticalExtensions_169 */
static int hf_rrc_mbsfn_TDM_Info_List = -1; /* MBSFN_TDM_Info_List */
static int hf_rrc_mbms_PreferredFrequencyInfo = -1; /* MBMS_PreferredFrequencyList_r6 */
static int hf_rrc_mbms_TimersAndCounters = -1; /* MBMS_TimersAndCounters_r6 */
@@ -2552,7 +2716,7 @@ static int hf_rrc_v860NonCriticalExtensions_24 = -1; /* T_v860NonCriticalExtens
static int hf_rrc_mbmsGeneralInformation_v860ext = -1; /* MBMSGeneralInformation_v860ext_IEs */
static int hf_rrc_v890NoncriticalExtensions = -1; /* T_v890NoncriticalExtensions */
static int hf_rrc_mbmsGeneralInformation_v890ext = -1; /* MBMSGeneralInformation_v890ext_IEs */
-static int hf_rrc_nonCriticalExtensions_159 = -1; /* T_nonCriticalExtensions_159 */
+static int hf_rrc_nonCriticalExtensions_170 = -1; /* T_nonCriticalExtensions_170 */
static int hf_rrc_indicateChangeInSelectedServices = -1; /* BOOLEAN */
static int hf_rrc_mbmsMICHConfiguration = -1; /* MBMS_MICHConfigurationInfo_v770ext */
static int hf_rrc_mbsfnInterFrequencyNeighbourList = -1; /* MBSFN_InterFrequencyNeighbourList_r7 */
@@ -2564,7 +2728,7 @@ static int hf_rrc_v6b0NonCriticalExtensions_14 = -1; /* T_v6b0NonCriticalExtens
static int hf_rrc_mbmsModificationRequest_v6b0ext = -1; /* MBMSModificationRequest_v6b0ext_IEs */
static int hf_rrc_v6f0NonCriticalExtensions_02 = -1; /* T_v6f0NonCriticalExtensions_02 */
static int hf_rrc_mbmsModificationRequest_v6f0ext = -1; /* MBMSModificationRequest_v6f0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_160 = -1; /* T_nonCriticalExtensions_160 */
+static int hf_rrc_nonCriticalExtensions_171 = -1; /* T_nonCriticalExtensions_171 */
static int hf_rrc_mbmsSelectedServiceInfo = -1; /* MBMS_SelectedServiceInfo */
static int hf_rrc_mbmsSupportOfServiceChangeForAPtpRB = -1; /* T_mbmsSupportOfServiceChangeForAPtpRB */
static int hf_rrc_modifedServiceList = -1; /* MBMS_ModifedServiceList_r6 */
@@ -2578,7 +2742,7 @@ static int hf_rrc_v770NonCriticalExtensions_36 = -1; /* T_v770NonCriticalExtens
static int hf_rrc_mbmsModifiedServicesInformation_v770ext = -1; /* MBMSModifiedServicesInformation_v770ext_IEs */
static int hf_rrc_v7c0NonCriticalExtensions = -1; /* T_v7c0NonCriticalExtensions */
static int hf_rrc_mbmsModifiedServicesInformation_v7c0ext = -1; /* MBMSModifiedServicesInformation_v7c0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_161 = -1; /* T_nonCriticalExtensions_161 */
+static int hf_rrc_nonCriticalExtensions_172 = -1; /* T_nonCriticalExtensions_172 */
static int hf_rrc_modifiedServiceList = -1; /* MBMS_ModifiedServiceList_v770ext */
static int hf_rrc_mib_ValueTag = -1; /* MIB_ValueTag */
static int hf_rrc_modifiedServiceList_01 = -1; /* MBMS_ModifiedServiceList_LCR_v7c0ext */
@@ -2586,14 +2750,14 @@ static int hf_rrc_neighbouringCellIdentity = -1; /* IntraFreqCellID */
static int hf_rrc_neighbouringCellSCCPCHList = -1; /* MBMS_NeighbouringCellSCCPCHList_r6 */
static int hf_rrc_v770NonCriticalExtensions_37 = -1; /* T_v770NonCriticalExtensions_37 */
static int hf_rrc_mbmsNeighbouringCellPTMRBInformation_v770ext = -1; /* MBMSNeighbouringCellPTMRBInformation_v770ext_IEs */
-static int hf_rrc_nonCriticalExtensions_162 = -1; /* T_nonCriticalExtensions_162 */
+static int hf_rrc_nonCriticalExtensions_173 = -1; /* T_nonCriticalExtensions_173 */
static int hf_rrc_neighbouringCellSCCPCHList_01 = -1; /* MBMS_NeighbouringCellSCCPCHList_v770ext */
static int hf_rrc_serviceSchedulingInfoList = -1; /* MBMS_ServiceSchedulingInfoList_r6 */
-static int hf_rrc_nonCriticalExtensions_163 = -1; /* T_nonCriticalExtensions_163 */
+static int hf_rrc_nonCriticalExtensions_174 = -1; /* T_nonCriticalExtensions_174 */
static int hf_rrc_unmodifiedServiceList = -1; /* MBMS_UnmodifiedServiceList_r6 */
static int hf_rrc_v770NonCriticalExtensions_38 = -1; /* T_v770NonCriticalExtensions_38 */
static int hf_rrc_mbmsUnmodifiedServicesInformation_v770ext = -1; /* MBMSUnmodifiedServicesInformation_v770ext_IEs */
-static int hf_rrc_nonCriticalExtensions_164 = -1; /* T_nonCriticalExtensions_164 */
+static int hf_rrc_nonCriticalExtensions_175 = -1; /* T_nonCriticalExtensions_175 */
static int hf_rrc_unmodifiedServiceList_01 = -1; /* MBMS_UnmodifiedServiceList_v770ext */
static int hf_rrc_mib = -1; /* T_mib */
static int hf_rrc_sysInfoTypeSB1 = -1; /* T_sysInfoTypeSB1 */
@@ -2605,7 +2769,26 @@ static int hf_rrc_sysInfoType7 = -1; /* T_sysInfoType7 */
static int hf_rrc_sysInfoType11 = -1; /* T_sysInfoType11 */
static int hf_rrc_sysInfoType11bis = -1; /* T_sysInfoType11bis */
static int hf_rrc_sysInfoType12 = -1; /* T_sysInfoType12 */
-static int hf_rrc_nonCriticalExtensions_165 = -1; /* T_nonCriticalExtensions_165 */
+static int hf_rrc_nonCriticalExtensions_176 = -1; /* T_nonCriticalExtensions_176 */
+static int hf_rrc_criticalExtensions_122 = -1; /* T_criticalExtensions_122 */
+static int hf_rrc_r10_11 = -1; /* T_r10_11 */
+static int hf_rrc_loggingMeasurementConfiguration_r10_IEs = -1; /* LoggingMeasurementConfiguration_r10_IEs */
+static int hf_rrc_loggingMeasurementConfiguration_r10_add_ext = -1; /* BIT_STRING */
+static int hf_rrc_nonCriticalExtensions_177 = -1; /* T_nonCriticalExtensions_177 */
+static int hf_rrc_criticalExtensions_123 = -1; /* T_criticalExtensions_123 */
+static int hf_rrc_loggedMeasurementsConfigurationInfo = -1; /* LoggedMeasurementsConfigurationInfo */
+static int hf_rrc_loggedANRConfigurationInfo = -1; /* LoggedANRConfigurationInfo */
+static int hf_rrc_loggedMeasReport = -1; /* LoggedMeasReport */
+static int hf_rrc_loggedANRReportInfoList = -1; /* LoggedANRReportInfoList */
+static int hf_rrc_nonCriticalExtensions_178 = -1; /* T_nonCriticalExtensions_178 */
+static int hf_rrc_criticalExtensions_124 = -1; /* T_criticalExtensions_124 */
+static int hf_rrc_r10_12 = -1; /* T_r10_12 */
+static int hf_rrc_ueInformationRequest_r10 = -1; /* UEInformationRequest_r10_IEs */
+static int hf_rrc_ueInformationRequest_r10_add_ext = -1; /* BIT_STRING */
+static int hf_rrc_nonCriticalExtensions_179 = -1; /* T_nonCriticalExtensions_179 */
+static int hf_rrc_criticalExtensions_125 = -1; /* T_criticalExtensions_125 */
+static int hf_rrc_loggedMeasReportRequest = -1; /* T_loggedMeasReportRequest */
+static int hf_rrc_loggedANRReportRequest = -1; /* T_loggedANRReportRequest */
static int hf_rrc_cn_DomainSpecificNAS_Info = -1; /* NAS_SystemInformationGSM_MAP */
static int hf_rrc_cn_DRX_CycleLengthCoeff = -1; /* CN_DRX_CycleLengthCoefficient */
static int hf_rrc_CN_DomainInformationList_item = -1; /* CN_DomainInformation */
@@ -2614,9 +2797,12 @@ static int hf_rrc_cn_Type = -1; /* T_cn_Type */
static int hf_rrc_gsm_MAP = -1; /* NAS_SystemInformationGSM_MAP */
static int hf_rrc_ansi_41 = -1; /* NAS_SystemInformationANSI_41 */
static int hf_rrc_CN_DomainSysInfoList_item = -1; /* CN_DomainSysInfo */
-static int hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo = -1; /* NAS_SystemInformationGSM_MAP */
+static int hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo = -1; /* T_cn_CommonGSM_MAP_NAS_SysInfo */
static int hf_rrc_cn_DomainInformationList = -1; /* CN_DomainInformationList */
+static int hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo_01 = -1; /* T_cn_CommonGSM_MAP_NAS_SysInfo_01 */
+static int hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo_02 = -1; /* T_cn_CommonGSM_MAP_NAS_SysInfo_02 */
static int hf_rrc_cn_DomainInformationListFull = -1; /* CN_DomainInformationListFull */
+static int hf_rrc_ec_N0 = -1; /* INTEGER_M24_0 */
static int hf_rrc_routingbasis = -1; /* T_routingbasis */
static int hf_rrc_localPTMSI = -1; /* T_localPTMSI */
static int hf_rrc_routingparameter = -1; /* RoutingParameter */
@@ -2627,7 +2813,7 @@ static int hf_rrc_iMSIcauseUEinitiatedEvent = -1; /* T_iMSIcauseUEinitiatedEven
static int hf_rrc_iMEI = -1; /* T_iMEI */
static int hf_rrc_spare2_01 = -1; /* T_spare2 */
static int hf_rrc_spare1_01 = -1; /* T_spare1 */
-static int hf_rrc_dummy_23 = -1; /* BOOLEAN */
+static int hf_rrc_dummy_27 = -1; /* BOOLEAN */
static int hf_rrc_IMEI_item = -1; /* IMEI_Digit */
static int hf_rrc_IMSI_GSM_MAP_item = -1; /* Digit */
static int hf_rrc_version = -1; /* T_version */
@@ -2685,15 +2871,15 @@ static int hf_rrc_cellSelectQualityMeasure = -1; /* T_cellSelectQualityMeasure
static int hf_rrc_cpich_Ec_N0 = -1; /* T_cpich_Ec_N0 */
static int hf_rrc_q_HYST_2_S = -1; /* Q_Hyst_S */
static int hf_rrc_cpich_RSCP = -1; /* NULL */
-static int hf_rrc_modeSpecificInfo_14 = -1; /* T_modeSpecificInfo_14 */
-static int hf_rrc_fdd_44 = -1; /* T_fdd_43 */
+static int hf_rrc_modeSpecificInfo_15 = -1; /* T_modeSpecificInfo_15 */
+static int hf_rrc_fdd_45 = -1; /* T_fdd_44 */
static int hf_rrc_s_Intrasearch = -1; /* S_SearchQual */
static int hf_rrc_s_Intersearch = -1; /* S_SearchQual */
static int hf_rrc_s_SearchHCS = -1; /* S_SearchRXLEV */
static int hf_rrc_rat_List = -1; /* RAT_FDD_InfoList */
static int hf_rrc_q_QualMin = -1; /* Q_QualMin */
static int hf_rrc_q_RxlevMin = -1; /* Q_RxlevMin */
-static int hf_rrc_tdd_09 = -1; /* T_tdd_08 */
+static int hf_rrc_tdd_10 = -1; /* T_tdd_09 */
static int hf_rrc_s_Intrasearch_01 = -1; /* S_SearchRXLEV */
static int hf_rrc_s_Intersearch_01 = -1; /* S_SearchRXLEV */
static int hf_rrc_rat_List_01 = -1; /* RAT_TDD_InfoList */
@@ -2786,16 +2972,20 @@ static int hf_rrc_multiCarrierMeasurements = -1; /* BOOLEAN */
static int hf_rrc_tdd128_Measurements = -1; /* BOOLEAN */
static int hf_rrc_adjacentFrequencyMeasurements = -1; /* T_adjacentFrequencyMeasurements */
static int hf_rrc_interBandMeasurements = -1; /* T_interBandMeasurements */
+static int hf_rrc_enhancedInterFrequencyMeasurements = -1; /* T_enhancedInterFrequencyMeasurements */
+static int hf_rrc_freqSpecificCompressedMode = -1; /* T_freqSpecificCompressedMode */
static int hf_rrc_radioFrequencyBandEUTRA = -1; /* RadioFrequencyBandEUTRA */
static int hf_rrc_compressedMode = -1; /* BOOLEAN */
static int hf_rrc_CompressedModeMeasCapabEUTRAList_item = -1; /* CompressedModeMeasCapabEUTRA */
static int hf_rrc_CompressedModeMeasCapabFDDList_item = -1; /* CompressedModeMeasCapabFDD */
static int hf_rrc_CompressedModeMeasCapabFDDList2_item = -1; /* CompressedModeMeasCapabFDD2 */
+static int hf_rrc_CompressedModeMeasCapabFDDList3_item = -1; /* CompressedModeMeasCapabFDD3 */
static int hf_rrc_CompressedModeMeasCapabFDDList_ext_item = -1; /* CompressedModeMeasCapabFDD_ext */
static int hf_rrc_radioFrequencyBandFDD = -1; /* RadioFrequencyBandFDD */
static int hf_rrc_dl_MeasurementsFDD = -1; /* BOOLEAN */
static int hf_rrc_ul_MeasurementsFDD = -1; /* BOOLEAN */
static int hf_rrc_radioFrequencyBandFDD2 = -1; /* RadioFrequencyBandFDD2 */
+static int hf_rrc_radioFrequencyBandFDD3 = -1; /* RadioFrequencyBandFDD3 */
static int hf_rrc_CompressedModeMeasCapabTDDList_item = -1; /* CompressedModeMeasCapabTDD */
static int hf_rrc_radioFrequencyBandTDD = -1; /* RadioFrequencyBandTDD */
static int hf_rrc_dl_MeasurementsTDD = -1; /* BOOLEAN */
@@ -2826,7 +3016,7 @@ static int hf_rrc_maxNoDPCH_PDSCH_Codes = -1; /* INTEGER_1_8 */
static int hf_rrc_maxNoPhysChBitsReceived = -1; /* MaxNoPhysChBitsReceived */
static int hf_rrc_supportForSF_512 = -1; /* BOOLEAN */
static int hf_rrc_dummy2_04 = -1; /* SimultaneousSCCPCH_DPCH_Reception */
-static int hf_rrc_dummy_24 = -1; /* SupportOfDedicatedPilotsForChEstimation */
+static int hf_rrc_dummy_28 = -1; /* SupportOfDedicatedPilotsForChEstimation */
static int hf_rrc_hsdsch_physical_layer_category_ext = -1; /* HSDSCH_physical_layer_category_ext */
static int hf_rrc_hsscchlessHsdschOperation = -1; /* T_hsscchlessHsdschOperation */
static int hf_rrc_enhancedFdpch = -1; /* T_enhancedFdpch */
@@ -2837,6 +3027,8 @@ static int hf_rrc_supportOfTargetCellPreConfig = -1; /* T_supportOfTargetCellPr
static int hf_rrc_supportOfHsdschDrxOperation = -1; /* T_supportOfHsdschDrxOperation */
static int hf_rrc_hsdsch_physical_layer_category_ext3 = -1; /* HSDSCH_physical_layer_category_ext3 */
static int hf_rrc_supportOfMimoOnlySingleStream = -1; /* T_supportOfMimoOnlySingleStream */
+static int hf_rrc_hsdsch_physical_layer_category_ext4 = -1; /* HSDSCH_physical_layer_category_ext4 */
+static int hf_rrc_hsdsch_physical_layer_category_ext5 = -1; /* HSDSCH_physical_layer_category_ext5 */
static int hf_rrc_maxTS_PerFrame = -1; /* MaxTS_PerFrame */
static int hf_rrc_maxPhysChPerFrame = -1; /* MaxPhysChPerFrame */
static int hf_rrc_minimumSF = -1; /* MinimumSF_DL */
@@ -2849,6 +3041,7 @@ static int hf_rrc_multiCarrier_physical_layer_category = -1; /* MultiCarrier_HS
static int hf_rrc_hSDSCH_physical_layer_category_extension = -1; /* HSDSCH_physical_layer_category_extension */
static int hf_rrc_multiCarrier_physical_layer_category_extension = -1; /* MultiCarrier_HSDSCH_physical_layer_category_extension */
static int hf_rrc_supportOfSFModeForHSPDSCHDualStream = -1; /* T_supportOfSFModeForHSPDSCHDualStream */
+static int hf_rrc_multiCarrier_physical_layer_category_extension2 = -1; /* MultiCarrier_HSDSCH_physical_layer_category_extension2 */
static int hf_rrc_maxPhysChPerFrame_02 = -1; /* MaxPhysChPerFrame_768 */
static int hf_rrc_minimumSF_01 = -1; /* MinimumSF_DL_768 */
static int hf_rrc_tdd768_hspdsch = -1; /* T_tdd768_hspdsch */
@@ -2877,6 +3070,17 @@ static int hf_rrc_configurationIncomplete = -1; /* NULL */
static int hf_rrc_unsupportedMeasurement = -1; /* NULL */
static int hf_rrc_mbmsSessionAlreadyReceivedCorrectly = -1; /* NULL */
static int hf_rrc_lowerPriorityMBMSService = -1; /* NULL */
+static int hf_rrc_modeSpecificInfo_16 = -1; /* T_modeSpecificInfo_16 */
+static int hf_rrc_fdd_46 = -1; /* T_fdd_45 */
+static int hf_rrc_frequencyBandsSupportFDD = -1; /* FrequencyBandsRedirectionFDD */
+static int hf_rrc_tdd_11 = -1; /* T_tdd_10 */
+static int hf_rrc_frequencyBandsSupportTDD128 = -1; /* FrequencyBandsIndicatorTDD128 */
+static int hf_rrc_FrequencyBandsIndicatorTDD128_item = -1; /* FrequencyBandsIndicatorSupportTDD128 */
+static int hf_rrc_frequencyBandsIndicatorTDD = -1; /* RadioFrequencyBandTDD_r10 */
+static int hf_rrc_FrequencyBandsRedirectionFDD_item = -1; /* FrequencyBandsIndicatorFDD */
+static int hf_rrc_frequencyBandsIndicator1 = -1; /* RadioFrequencyBandFDD */
+static int hf_rrc_frequencyBandsIndicator2 = -1; /* RadioFrequencyBandFDD2 */
+static int hf_rrc_frequencyBandsIndicator3 = -1; /* RadioFrequencyBandFDD3 */
static int hf_rrc_rrc_ConnectionReleaseInformation = -1; /* RRC_ConnectionReleaseInformation */
static int hf_rrc_groupReleaseInformation = -1; /* GroupReleaseInformation */
static int hf_rrc_uRNTI_Group = -1; /* U_RNTI_Group */
@@ -2910,11 +3114,20 @@ static int hf_rrc_compressedModeMeasCapabGSMList = -1; /* CompressedModeMeasCap
static int hf_rrc_compressedModeMeasCapabMC = -1; /* CompressedModeMeasCapabMC */
static int hf_rrc_compressedModeMeasCapabFDDList_01 = -1; /* CompressedModeMeasCapabFDDList2 */
static int hf_rrc_compressedModeMeasCapabEUTRAList = -1; /* CompressedModeMeasCapabEUTRAList */
+static int hf_rrc_compressedModeMeasCapabFDDList2 = -1; /* CompressedModeMeasCapabFDDList2 */
+static int hf_rrc_compressedModeMeasCapabFDDList3 = -1; /* CompressedModeMeasCapabFDDList3 */
static int hf_rrc_downlinkCompressedMode_LCR = -1; /* CompressedModeMeasCapability_LCR_r4 */
static int hf_rrc_uplinkCompressedMode_LCR = -1; /* CompressedModeMeasCapability_LCR_r4 */
static int hf_rrc_downlinkCompressedMode_01 = -1; /* CompressedModeMeasCapability_v860ext */
static int hf_rrc_downlinkCompressedMode_02 = -1; /* CompressedModeMeasCapability_v920ext */
+static int hf_rrc_interFrequencyDetectedSetMeasurements = -1; /* T_interFrequencyDetectedSetMeasurements */
+static int hf_rrc_downlinkCompressedMode_03 = -1; /* CompressedModeMeasCapability_va40ext */
static int hf_rrc_idleIntervalMeasCapabEUTRAList = -1; /* IdleIntervalMeasCapabEUTRAList */
+static int hf_rrc_NonContiguousMultiCellCombinationList_item = -1; /* NonContiguousMultiCell */
+static int hf_rrc_aggregatedCells = -1; /* T_aggregatedCells */
+static int hf_rrc_gapSize = -1; /* T_gapSize */
+static int hf_rrc_nonContiguousMultiCellCombination22 = -1; /* T_nonContiguousMultiCellCombination22 */
+static int hf_rrc_nonContiguousMultiCellCombination31_13 = -1; /* T_nonContiguousMultiCellCombination31_13 */
static int hf_rrc_supportOfGSM = -1; /* BOOLEAN */
static int hf_rrc_supportOfMulticarrier = -1; /* BOOLEAN */
static int hf_rrc_supportOfUTRAN_ToGERAN_NACC = -1; /* BOOLEAN */
@@ -2986,13 +3199,18 @@ static int hf_rrc_downlinkPhysChCapability_06 = -1; /* DL_PhysChCapabilityTDD_1
static int hf_rrc_fddPhysChCapability_03 = -1; /* T_fddPhysChCapability_03 */
static int hf_rrc_downlinkPhysChCapability_07 = -1; /* DL_PhysChCapabilityFDD_v920ext */
static int hf_rrc_uplinkPhysChCapability_06 = -1; /* UL_PhysChCapabilityFDD_v920ext */
-static int hf_rrc_tddPhysChCapability_768_01 = -1; /* T_tddPhysChCapability_768_01 */
-static int hf_rrc_downlinkPhysChCapability_08 = -1; /* DL_PhysChCapabilityInfoTDD_768 */
+static int hf_rrc_fddPhysChCapability_04 = -1; /* T_fddPhysChCapability_04 */
+static int hf_rrc_downlinkPhysChCapability_08 = -1; /* DL_PhysChCapabilityFDD_va40ext */
static int hf_rrc_tddPhysChCapability_128_02 = -1; /* T_tddPhysChCapability_128_02 */
-static int hf_rrc_uplinkPhysChCapability_07 = -1; /* UL_PhysChCapabilityInfoTDD_128_v770ext */
+static int hf_rrc_downlinkPhysChCapability_09 = -1; /* DL_PhysChCapabilityInfoTDD_128_va40ext */
+static int hf_rrc_uplinkPhysChCapability_07 = -1; /* UL_PhysChCapabilityInfoTDD_128_va40ext */
+static int hf_rrc_tddPhysChCapability_768_01 = -1; /* T_tddPhysChCapability_768_01 */
+static int hf_rrc_downlinkPhysChCapability_10 = -1; /* DL_PhysChCapabilityInfoTDD_768 */
+static int hf_rrc_tddPhysChCapability_128_03 = -1; /* T_tddPhysChCapability_128_03 */
+static int hf_rrc_uplinkPhysChCapability_08 = -1; /* UL_PhysChCapabilityInfoTDD_128_v770ext */
static int hf_rrc_tdd128_PhysChCapability = -1; /* T_tdd128_PhysChCapability */
-static int hf_rrc_downlinkPhysChCapability_09 = -1; /* DL_PhysChCapabilityTDD_LCR_r4 */
-static int hf_rrc_uplinkPhysChCapability_08 = -1; /* UL_PhysChCapabilityTDD_LCR_r4 */
+static int hf_rrc_downlinkPhysChCapability_11 = -1; /* DL_PhysChCapabilityTDD_LCR_r4 */
+static int hf_rrc_uplinkPhysChCapability_09 = -1; /* UL_PhysChCapabilityTDD_LCR_r4 */
static int hf_rrc_fdd_hspdsch = -1; /* T_fdd_hspdsch */
static int hf_rrc_supported_03 = -1; /* T_supported_01 */
static int hf_rrc_hsdsch_physical_layer_category = -1; /* HSDSCH_physical_layer_category */
@@ -3041,6 +3259,7 @@ static int hf_rrc_maximumAM_EntityNumber = -1; /* MaximumAM_EntityNumberRLC_C
static int hf_rrc_totalRLC_AM_BufferSize_01 = -1; /* TotalRLC_AM_BufferSize_r5_ext */
static int hf_rrc_supportOfTwoLogicalChannel = -1; /* BOOLEAN */
static int hf_rrc_totalRLC_AM_BufferSize_02 = -1; /* TotalRLC_AM_BufferSize_v920ext */
+static int hf_rrc_totalRLC_AM_BufferSize_03 = -1; /* TotalRLC_AM_BufferSize_va40ext */
static int hf_rrc_noRelease = -1; /* NULL */
static int hf_rrc_release = -1; /* T_release */
static int hf_rrc_RRC_MessageSequenceNumberList_item = -1; /* RRC_MessageSequenceNumber */
@@ -3116,6 +3335,7 @@ static int hf_rrc_u_RNTI_BitMaskIndex_b29 = -1; /* BIT_STRING_SIZE_3 */
static int hf_rrc_u_RNTI_BitMaskIndex_b30 = -1; /* BIT_STRING_SIZE_2 */
static int hf_rrc_u_RNTI_BitMaskIndex_b31 = -1; /* BIT_STRING_SIZE_1 */
static int hf_rrc_s_RNTI_2 = -1; /* S_RNTI_2 */
+static int hf_rrc_supportOfLoggedMeasurementsIdlePCH = -1; /* T_supportOfLoggedMeasurementsIdlePCH */
static int hf_rrc_ue_RadioAccessCapability_v690ext = -1; /* UE_RadioAccessCapability_v690ext */
static int hf_rrc_ue_RATSpecificCapability_v690ext = -1; /* InterRAT_UE_RadioAccessCapability_v690ext */
static int hf_rrc_v6b0NonCriticalExtensions_15 = -1; /* T_v6b0NonCriticalExtensions_14 */
@@ -3137,7 +3357,11 @@ static int hf_rrc_v920NonCriticalExtensions_03 = -1; /* T_v920NonCriticalExtens
static int hf_rrc_ue_RadioAccessCapability_v920ext = -1; /* UE_RadioAccessCapability_v920ext_IEs */
static int hf_rrc_v970NonCriticalExtensions_03 = -1; /* T_v970NonCriticalExtensions_03 */
static int hf_rrc_ue_RadioAccessCapability_v970ext = -1; /* UE_RadioAccessCapability_v970ext_IEs */
-static int hf_rrc_nonCriticalExtensions_166 = -1; /* T_nonCriticalExtensions_166 */
+static int hf_rrc_va40NonCriticalExtensions_18 = -1; /* T_va40NonCriticalExtensions_17 */
+static int hf_rrc_ue_RadioAccessCapability_va40ext = -1; /* UE_RadioAccessCapability_va40ext_IEs */
+static int hf_rrc_va60NonCriticalExtensions = -1; /* T_va60NonCriticalExtensions */
+static int hf_rrc_ue_RadioAccessCapability_va60ext = -1; /* UE_RadioAccessCapability_va60ext_IEs */
+static int hf_rrc_nonCriticalExtensions_180 = -1; /* T_nonCriticalExtensions_180 */
static int hf_rrc_supportForSIB11bis_01 = -1; /* T_supportForSIB11bis_01 */
static int hf_rrc_supportForFDPCH_02 = -1; /* T_supportForFDPCH_02 */
static int hf_rrc_pdcp_Capability_01 = -1; /* PDCP_Capability_v770ext */
@@ -3171,6 +3395,16 @@ static int hf_rrc_measurementCapability_01 = -1; /* MeasurementCapability_v920e
static int hf_rrc_csgProximityIndicationCapability = -1; /* CSG_ProximityIndicationCapability */
static int hf_rrc_neighCellSI_AcquisitionCapability = -1; /* NeighCellSI_AcquisitionCapability */
static int hf_rrc_ue_ExtendedMeasurementSupport = -1; /* T_ue_ExtendedMeasurementSupport */
+static int hf_rrc_ue_RadioAccessCapabBandCombList_va40ext = -1; /* UE_RadioAccessCapabBandCombList_va40ext */
+static int hf_rrc_physicalChannelCapability_03 = -1; /* PhysicalChannelCapability_va40ext */
+static int hf_rrc_rlc_Capability_02 = -1; /* RLC_Capability_va40ext */
+static int hf_rrc_measurementCapability_02 = -1; /* MeasurementCapability_va40ext */
+static int hf_rrc_supportOfMUMIMO = -1; /* T_supportOfMUMIMO */
+static int hf_rrc_supportForDualCellMimoInDifferentBands = -1; /* T_supportForDualCellMimoInDifferentBands */
+static int hf_rrc_ue_BasedNetworkPerformanceMeasurementsParameters = -1; /* UE_BasedNetworkPerformanceMeasurementsParameters */
+static int hf_rrc_supportOfUTRANANR = -1; /* T_supportOfUTRANANR */
+static int hf_rrc_ue_RadioAccessCapabBandFDDList4 = -1; /* UE_RadioAccessCapabBandFDDList4 */
+static int hf_rrc_ue_RadioAccessCapabBandFDDList4_01 = -1; /* UE_RadioAccessCapabBandFDDList4_va60ext */
static int hf_rrc_t_301 = -1; /* T_301 */
static int hf_rrc_n_301 = -1; /* N_301 */
static int hf_rrc_t_302 = -1; /* T_302 */
@@ -3205,13 +3439,13 @@ static int hf_rrc_n_300 = -1; /* N_300 */
static int hf_rrc_multiRAT_CapabilityList = -1; /* MultiRAT_Capability */
static int hf_rrc_multiModeCapability = -1; /* MultiModeCapability */
static int hf_rrc_pdcp_Capability_02 = -1; /* PDCP_Capability */
-static int hf_rrc_rlc_Capability_02 = -1; /* RLC_Capability */
+static int hf_rrc_rlc_Capability_03 = -1; /* RLC_Capability */
static int hf_rrc_transportChannelCapability = -1; /* TransportChannelCapability */
static int hf_rrc_rf_Capability_02 = -1; /* RF_Capability */
-static int hf_rrc_physicalChannelCapability_03 = -1; /* PhysicalChannelCapability */
+static int hf_rrc_physicalChannelCapability_04 = -1; /* PhysicalChannelCapability */
static int hf_rrc_ue_MultiModeRAT_Capability = -1; /* UE_MultiModeRAT_Capability */
static int hf_rrc_ue_positioning_Capability = -1; /* UE_Positioning_Capability */
-static int hf_rrc_measurementCapability_02 = -1; /* MeasurementCapability */
+static int hf_rrc_measurementCapability_03 = -1; /* MeasurementCapability */
static int hf_rrc_ue_RadioAccessCapabBandFDDList = -1; /* UE_RadioAccessCapabBandFDDList */
static int hf_rrc_ue_PositioningCapabilityExt_v380 = -1; /* UE_PositioningCapabilityExt_v380 */
static int hf_rrc_ue_PositioningCapabilityExt_v3a0 = -1; /* UE_PositioningCapabilityExt_v3a0 */
@@ -3225,18 +3459,28 @@ static int hf_rrc_supportEDPDCHPowerInterpolation = -1; /* T_supportEDPDCHPower
static int hf_rrc_supportofTxDivOnNonMIMOChannel = -1; /* T_supportofTxDivOnNonMIMOChannel */
static int hf_rrc_physicalChannelCapability_LCR = -1; /* PhysicalChannelCapability_LCR_r4 */
static int hf_rrc_ue_RadioAccessCapabilityComp_TDD128 = -1; /* UE_RadioAccessCapabilityComp_TDD128_v7f0ext */
-static int hf_rrc_physicalChannelCapability_04 = -1; /* PhysicalChannelCapabilityInfo_v770ext */
+static int hf_rrc_physicalChannelCapability_05 = -1; /* PhysicalChannelCapabilityInfo_v770ext */
static int hf_rrc_ganssSupportIndication = -1; /* T_ganssSupportIndication */
static int hf_rrc_mac_ehsSupport_02 = -1; /* T_mac_ehsSupport_02 */
static int hf_rrc_ue_SpecificCapabilityInformation = -1; /* UE_SpecificCapabilityInformation_LCRTDD */
static int hf_rrc_supportForPriorityReselectionInUTRAN_01 = -1; /* T_supportForPriorityReselectionInUTRAN_01 */
static int hf_rrc_supportOfenhancedTS0_01 = -1; /* T_supportOfenhancedTS0_01 */
+static int hf_rrc_ue_RadioAccessCapabBandFDDList5 = -1; /* UE_RadioAccessCapabBandFDDList5 */
+static int hf_rrc_ue_RadioAccessCapabBandFDDList_ext2 = -1; /* UE_RadioAccessCapabBandFDDList_ext2 */
static int hf_rrc_UE_RadioAccessCapabBandFDDList2_item = -1; /* UE_RadioAccessCapabBandFDD2 */
static int hf_rrc_UE_RadioAccessCapabBandFDDList3_item = -1; /* UE_RadioAccessCapabBandFDD3 */
+static int hf_rrc_UE_RadioAccessCapabBandFDDList4_item = -1; /* UE_RadioAccessCapabBandFDD4 */
+static int hf_rrc_UE_RadioAccessCapabBandFDDList4_va60ext_item = -1; /* UE_RadioAccessCapabBandFDD4_va60ext */
+static int hf_rrc_UE_RadioAccessCapabBandFDDList5_item = -1; /* UE_RadioAccessCapabBandFDD5 */
static int hf_rrc_fddRF_Capability_01 = -1; /* T_fddRF_Capability_01 */
static int hf_rrc_ue_PowerClass_01 = -1; /* UE_PowerClassExt */
static int hf_rrc_measurementCapability2 = -1; /* MeasurementCapabilityExt2 */
static int hf_rrc_measurementCapability3 = -1; /* MeasurementCapabilityExt3 */
+static int hf_rrc_additionalSecondaryCells = -1; /* T_additionalSecondaryCells */
+static int hf_rrc_nonContiguousMultiCellCombinationList = -1; /* NonContiguousMultiCellCombinationList */
+static int hf_rrc_reserveForFutureUse = -1; /* T_reserveForFutureUse */
+static int hf_rrc_fddRF_Capability_02 = -1; /* T_fddRF_Capability_02 */
+static int hf_rrc_measurementCapability4 = -1; /* MeasurementCapabilityExt4 */
static int hf_rrc_rx_tx_TimeDifferenceType2Capable = -1; /* BOOLEAN */
static int hf_rrc_validity_CellPCH_UraPCH = -1; /* T_validity_CellPCH_UraPCH */
static int hf_rrc_sfn_sfnType2Capability = -1; /* T_sfn_sfnType2Capability */
@@ -3245,8 +3489,9 @@ static int hf_rrc_ue_GANSSPositioning_Capability_v860ext = -1; /* UE_GANSSPosit
static int hf_rrc_UE_RadioAccessCapabBandCombList_item = -1; /* BandComb */
static int hf_rrc_UE_RadioAccessCapabBandFDDList_item = -1; /* UE_RadioAccessCapabBandFDD */
static int hf_rrc_UE_RadioAccessCapabBandFDDList_ext_item = -1; /* UE_RadioAccessCapabBandFDD_ext */
-static int hf_rrc_fddRF_Capability_02 = -1; /* T_fddRF_Capability_02 */
-static int hf_rrc_measurementCapability_03 = -1; /* MeasurementCapabilityExt */
+static int hf_rrc_UE_RadioAccessCapabBandFDDList_ext2_item = -1; /* UE_RadioAccessCapabBandFDD_ext2 */
+static int hf_rrc_fddRF_Capability_03 = -1; /* T_fddRF_Capability_03 */
+static int hf_rrc_measurementCapability_04 = -1; /* MeasurementCapabilityExt */
static int hf_rrc_compressedModeMeasCapabFDDList_ext = -1; /* CompressedModeMeasCapabFDDList_ext */
static int hf_rrc_pdcp_Capability_r4_ext = -1; /* PDCP_Capability_r4_ext */
static int hf_rrc_tdd_CapabilityExt = -1; /* T_tdd_CapabilityExt */
@@ -3254,7 +3499,7 @@ static int hf_rrc_rf_Capability_03 = -1; /* RF_Capability_r4_ext */
static int hf_rrc_measurementCapability_r4_ext = -1; /* MeasurementCapability_r4_ext */
static int hf_rrc_totalAM_RLCMemoryExceeds10kB = -1; /* BOOLEAN */
static int hf_rrc_rf_CapabilityComp = -1; /* RF_CapabilityComp */
-static int hf_rrc_rf_CapabilityFDDComp = -1; /* RF_CapabBandListFDDComp_ext */
+static int hf_rrc_rf_CapabilityFDDComp_01 = -1; /* RF_CapabBandListFDDComp_ext */
static int hf_rrc_hSDSCH_physical_layer_category = -1; /* HSDSCH_physical_layer_category */
static int hf_rrc_tdd_edch_PhysicalLayerCategory = -1; /* INTEGER_1_6 */
static int hf_rrc_dl_CapabilityWithSimultaneousHS_DSCHConfig = -1; /* DL_CapabilityWithSimultaneousHS_DSCHConfig */
@@ -3281,7 +3526,7 @@ static int hf_rrc_supportOfCommonEDCH_04 = -1; /* T_supportOfCommonEDCH_04 */
static int hf_rrc_supportOfMACiis_05 = -1; /* T_supportOfMACiis_05 */
static int hf_rrc_supportOfSPSOperation_03 = -1; /* T_supportOfSPSOperation_03 */
static int hf_rrc_supportOfControlChannelDRXOperation_02 = -1; /* T_supportOfControlChannelDRXOperation_02 */
-static int hf_rrc_fdd_45 = -1; /* T_fdd_44 */
+static int hf_rrc_fdd_47 = -1; /* T_fdd_46 */
static int hf_rrc_supported_06 = -1; /* RF_CapabBandListFDDComp */
static int hf_rrc_tdd384_RF_Capability = -1; /* T_tdd384_RF_Capability */
static int hf_rrc_supported_07 = -1; /* RadioFrequencyBandTDDList */
@@ -3292,9 +3537,16 @@ static int hf_rrc_supported_08 = -1; /* RadioFrequencyBandTDDList_r
static int hf_rrc_tdd128_RF_Capability_02 = -1; /* RadioFrequencyBandTDDList_r7 */
static int hf_rrc_RF_CapabBandListFDDComp_item = -1; /* RF_CapabBandFDDComp */
static int hf_rrc_RF_CapabBandListFDDComp_ext_item = -1; /* RF_CapabBandFDDComp */
+static int hf_rrc_RF_CapabBandListFDDComp_ext2_item = -1; /* RF_CapabBandFDDComp */
+static int hf_rrc_UE_RadioAccessCapabBandCombList_va40ext_item = -1; /* SupportedCarrierCombination */
+static int hf_rrc_carrierCombination12 = -1; /* BOOLEAN */
+static int hf_rrc_carrierCombination21 = -1; /* BOOLEAN */
+static int hf_rrc_carrierCombination13 = -1; /* BOOLEAN */
+static int hf_rrc_carrierCombination31 = -1; /* BOOLEAN */
+static int hf_rrc_carrierCombination22 = -1; /* BOOLEAN */
static int hf_rrc_pdcp_Capability_r5_ext = -1; /* PDCP_Capability_r5_ext */
static int hf_rrc_rlc_Capability_r5_ext = -1; /* RLC_Capability_r5_ext */
-static int hf_rrc_physicalChannelCapability_05 = -1; /* PhysicalChannelCapability_hspdsch_r5 */
+static int hf_rrc_physicalChannelCapability_06 = -1; /* PhysicalChannelCapability_hspdsch_r5 */
static int hf_rrc_multiModeRAT_Capability_v590ext = -1; /* MultiModeRAT_Capability_v590ext */
static int hf_rrc_pdcp_Capability_r5_ext2 = -1; /* PDCP_Capability_r5_ext2 */
static int hf_rrc_multiModeRAT_Capability_v680ext = -1; /* MultiModeRAT_Capability_v680ext */
@@ -3310,6 +3562,8 @@ static int hf_rrc_tdd_edch_PhysicalLayerCategory_01 = -1; /* INTEGER_1_16 */
static int hf_rrc_maxPhysChPerTimeslot_01 = -1; /* MaxPhysChPerTimeslot_LCR_r7 */
static int hf_rrc_tdd128_edch = -1; /* T_tdd128_edch */
static int hf_rrc_supported_10 = -1; /* T_supported_04 */
+static int hf_rrc_multiCarrier_EdchPhysicalLayerCategory_128 = -1; /* INTEGER_1_8 */
+static int hf_rrc_maxNumberCarrierForMCHSUPA_TDD = -1; /* T_maxNumberCarrierForMCHSUPA_TDD */
static int hf_rrc_tdd384_edch_01 = -1; /* T_tdd384_edch_01 */
static int hf_rrc_supported_11 = -1; /* T_supported_05 */
static int hf_rrc_continue = -1; /* NULL */
@@ -3324,8 +3578,8 @@ static int hf_rrc_maxNoBitsTransmitted = -1; /* MaxNoBits */
static int hf_rrc_maxConvCodeBitsTransmitted = -1; /* MaxNoBits */
static int hf_rrc_turboEncodingSupport = -1; /* TurboSupport */
static int hf_rrc_maxSimultaneousTransChs_01 = -1; /* MaxSimultaneousTransChsUL */
-static int hf_rrc_modeSpecificInfo_15 = -1; /* T_modeSpecificInfo_15 */
-static int hf_rrc_tdd_10 = -1; /* T_tdd_09 */
+static int hf_rrc_modeSpecificInfo_17 = -1; /* T_modeSpecificInfo_17 */
+static int hf_rrc_tdd_12 = -1; /* T_tdd_11 */
static int hf_rrc_maxTransmittedBlocks = -1; /* MaxTransportBlocksUL */
static int hf_rrc_maxNumberOfTFC_01 = -1; /* MaxNumberOfTFC_UL */
static int hf_rrc_standaloneLocMethodsSupported = -1; /* BOOLEAN */
@@ -3359,7 +3613,7 @@ static int hf_rrc_dl_TransportChannelType_02 = -1; /* DL_TransportChannelType_r
static int hf_rrc_DL_LogicalChannelMappingList_item = -1; /* DL_LogicalChannelMapping */
static int hf_rrc_DL_LogicalChannelMappingList_r5_item = -1; /* DL_LogicalChannelMapping_r5 */
static int hf_rrc_DL_LogicalChannelMappingList_r7_item = -1; /* DL_LogicalChannelMapping_r7 */
-static int hf_rrc_dummy_25 = -1; /* CID_InclusionInfo_r4 */
+static int hf_rrc_dummy_29 = -1; /* CID_InclusionInfo_r4 */
static int hf_rrc_max_CID = -1; /* INTEGER_1_16383 */
static int hf_rrc_reverseDecompressionDepth = -1; /* INTEGER_0_65535 */
static int hf_rrc_dl_AM_RLC_Mode = -1; /* DL_AM_RLC_Mode */
@@ -3370,7 +3624,7 @@ static int hf_rrc_dl_UM_RLC_Mode_01 = -1; /* DL_UM_RLC_Mode_r5 */
static int hf_rrc_dl_UM_RLC_Mode_02 = -1; /* DL_UM_RLC_Mode_r6 */
static int hf_rrc_dl_AM_RLC_Mode_02 = -1; /* DL_AM_RLC_Mode_r7 */
static int hf_rrc_timerStatusProhibit = -1; /* TimerStatusProhibit */
-static int hf_rrc_dummy_26 = -1; /* TimerEPC */
+static int hf_rrc_dummy_30 = -1; /* TimerEPC */
static int hf_rrc_missingPDU_Indicator = -1; /* BOOLEAN */
static int hf_rrc_timerStatusPeriodic = -1; /* TimerStatusPeriodic */
static int hf_rrc_segmentationIndication = -1; /* BOOLEAN */
@@ -3402,7 +3656,7 @@ static int hf_rrc_pdcp_PDU_Header = -1; /* PDCP_PDU_Header */
static int hf_rrc_headerCompressionInfoList = -1; /* HeaderCompressionInfoList */
static int hf_rrc_headerCompressionInfoList_01 = -1; /* HeaderCompressionInfoList_r4 */
static int hf_rrc_pdcp_Info = -1; /* PDCP_Info */
-static int hf_rrc_dummy_27 = -1; /* INTEGER_0_65535 */
+static int hf_rrc_dummy_31 = -1; /* INTEGER_0_65535 */
static int hf_rrc_pdcp_Info_01 = -1; /* PDCP_Info_r4 */
static int hf_rrc_timerPollProhibit = -1; /* TimerPollProhibit */
static int hf_rrc_timerPoll = -1; /* TimerPoll */
@@ -3607,7 +3861,7 @@ static int hf_rrc_twoLogicalChannels_01 = -1; /* UL_LogicalChannelMappingLis
static int hf_rrc_oneLogicalChannel_02 = -1; /* UL_LogicalChannelMapping_r8 */
static int hf_rrc_twoLogicalChannels_02 = -1; /* UL_LogicalChannelMappingList_r8 */
static int hf_rrc_dummy1_01 = -1; /* CID_InclusionInfo_r4 */
-static int hf_rrc_dummy_28 = -1; /* ROHC_PacketSizeList_r4 */
+static int hf_rrc_dummy_32 = -1; /* ROHC_PacketSizeList_r4 */
static int hf_rrc_ul_AM_RLC_Mode = -1; /* UL_AM_RLC_Mode */
static int hf_rrc_ul_UM_RLC_Mode = -1; /* UL_UM_RLC_Mode */
static int hf_rrc_ul_TM_RLC_Mode = -1; /* UL_TM_RLC_Mode */
@@ -3620,7 +3874,7 @@ static int hf_rrc_windowSize_OSD = -1; /* WindowSizeOSD_r6 */
static int hf_rrc_mac_hs_AddReconfQueue_List = -1; /* MAC_hs_AddReconfQueue_List */
static int hf_rrc_mac_hs_DelQueue_List = -1; /* MAC_hs_DelQueue_List */
static int hf_rrc_mac_ehs_AddReconfQueue_List = -1; /* MAC_ehs_AddReconfReordQ_List */
-static int hf_rrc_dummy_29 = -1; /* MAC_ehs_DelReordQ_List */
+static int hf_rrc_dummy_33 = -1; /* MAC_ehs_DelReordQ_List */
static int hf_rrc_mac_ehs_AddReconfQueue_List_01 = -1; /* MAC_ehs_AddReconfReordQ_List_r9 */
static int hf_rrc_AllowedTFC_List_item = -1; /* TFC_Value */
static int hf_rrc_AllowedTFI_List_item = -1; /* INTEGER_0_31 */
@@ -3644,9 +3898,9 @@ static int hf_rrc_mac_d_FlowMultiplexingList = -1; /* E_DCH_MAC_d_FlowMultiplex
static int hf_rrc_e_dch_mac_d_flow_retransmission_timer = -1; /* E_DCH_MAC_d_FlowRetransTimer */
static int hf_rrc_Common_E_DCH_MAC_d_FlowList_item = -1; /* Common_E_DCH_MAC_d_Flow */
static int hf_rrc_rlc_Size = -1; /* T_rlc_Size */
-static int hf_rrc_fdd_46 = -1; /* T_fdd_45 */
+static int hf_rrc_fdd_48 = -1; /* T_fdd_47 */
static int hf_rrc_octetModeRLC_SizeInfoType2 = -1; /* OctetModeRLC_SizeInfoType2 */
-static int hf_rrc_tdd_11 = -1; /* T_tdd_10 */
+static int hf_rrc_tdd_13 = -1; /* T_tdd_12 */
static int hf_rrc_commonTDD_Choice = -1; /* T_commonTDD_Choice */
static int hf_rrc_bitModeRLC_SizeInfo = -1; /* BitModeRLC_SizeInfo */
static int hf_rrc_octetModeRLC_SizeInfoType1 = -1; /* OctetModeRLC_SizeInfoType1 */
@@ -3694,7 +3948,7 @@ static int hf_rrc_tfs_SignallingMode = -1; /* T_tfs_SignallingMode */
static int hf_rrc_explicit_config = -1; /* TransportFormatSet */
static int hf_rrc_sameAsULTrCH = -1; /* UL_TransportChannelIdentity */
static int hf_rrc_dch_QualityTarget = -1; /* QualityTarget */
-static int hf_rrc_dummy_30 = -1; /* TM_SignallingInfo */
+static int hf_rrc_dummy_34 = -1; /* TM_SignallingInfo */
static int hf_rrc_tfs_SignallingMode_01 = -1; /* T_tfs_SignallingMode_01 */
static int hf_rrc_dl_TransportChannelType_04 = -1; /* DL_TrCH_TypeId1_r5 */
static int hf_rrc_tfs_SignallingMode_02 = -1; /* T_tfs_SignallingMode_02 */
@@ -3707,19 +3961,19 @@ static int hf_rrc_transportChannelIdentity = -1; /* TransportChannelIdentity */
static int hf_rrc_tfs_SignallingMode_05 = -1; /* T_tfs_SignallingMode_05 */
static int hf_rrc_qualityTarget = -1; /* QualityTarget */
static int hf_rrc_sccpch_TFCS = -1; /* TFCS */
-static int hf_rrc_modeSpecificInfo_16 = -1; /* T_modeSpecificInfo_16 */
-static int hf_rrc_fdd_47 = -1; /* T_fdd_46 */
+static int hf_rrc_modeSpecificInfo_18 = -1; /* T_modeSpecificInfo_18 */
+static int hf_rrc_fdd_49 = -1; /* T_fdd_48 */
static int hf_rrc_dl_Parameters = -1; /* T_dl_Parameters */
static int hf_rrc_dl_DCH_TFCS = -1; /* TFCS */
static int hf_rrc_sameAsUL = -1; /* NULL */
-static int hf_rrc_tdd_12 = -1; /* T_tdd_11 */
+static int hf_rrc_tdd_14 = -1; /* T_tdd_13 */
static int hf_rrc_individualDL_CCTrCH_InfoList = -1; /* IndividualDL_CCTrCH_InfoList */
-static int hf_rrc_modeSpecificInfo_17 = -1; /* T_modeSpecificInfo_17 */
-static int hf_rrc_fdd_48 = -1; /* T_fdd_47 */
+static int hf_rrc_modeSpecificInfo_19 = -1; /* T_modeSpecificInfo_19 */
+static int hf_rrc_fdd_50 = -1; /* T_fdd_49 */
static int hf_rrc_dl_Parameters_01 = -1; /* T_dl_Parameters_01 */
static int hf_rrc_dl_DCH_TFCS_01 = -1; /* T_dl_DCH_TFCS */
static int hf_rrc_tfcs = -1; /* TFCS */
-static int hf_rrc_tdd_13 = -1; /* T_tdd_12 */
+static int hf_rrc_tdd_15 = -1; /* T_tdd_14 */
static int hf_rrc_DL_DeletedTransChInfoList_item = -1; /* DL_TransportChannelIdentity */
static int hf_rrc_DL_DeletedTransChInfoList_r5_item = -1; /* DL_TransportChannelIdentity_r5 */
static int hf_rrc_DL_DeletedTransChInfoList_r7_item = -1; /* DL_TransportChannelIdentity_r7 */
@@ -3740,11 +3994,11 @@ static int hf_rrc_scheduledTransmissionGrantInfo = -1; /* NULL */
static int hf_rrc_mac_d_FlowRetransTimer = -1; /* E_DCH_MAC_d_FlowRetransTimer */
static int hf_rrc_transmissionGrantType_01 = -1; /* T_transmissionGrantType_01 */
static int hf_rrc_non_ScheduledTransGrantInfo_01 = -1; /* T_non_ScheduledTransGrantInfo_01 */
-static int hf_rrc_modeSpecificInfo_18 = -1; /* T_modeSpecificInfo_18 */
-static int hf_rrc_fdd_49 = -1; /* T_fdd_48 */
+static int hf_rrc_modeSpecificInfo_20 = -1; /* T_modeSpecificInfo_20 */
+static int hf_rrc_fdd_51 = -1; /* T_fdd_50 */
static int hf_rrc_E_DCH_AddReconf_MAC_d_FlowList_item = -1; /* E_DCH_AddReconf_MAC_d_Flow */
static int hf_rrc_E_DCH_AddReconf_MAC_d_FlowList_r7_item = -1; /* E_DCH_AddReconf_MAC_d_Flow_r7 */
-static int hf_rrc_complete_20 = -1; /* TFCS_ReconfAdd */
+static int hf_rrc_complete_23 = -1; /* TFCS_ReconfAdd */
static int hf_rrc_addition = -1; /* TFCS_ReconfAdd */
static int hf_rrc_removal = -1; /* TFCS_RemovalList */
static int hf_rrc_replacement = -1; /* T_replacement */
@@ -3815,8 +4069,8 @@ static int hf_rrc_part1_04 = -1; /* INTEGER_0_61 */
static int hf_rrc_sizeType2_02 = -1; /* INTEGER_0_63 */
static int hf_rrc_sizeType3_02 = -1; /* INTEGER_0_56 */
static int hf_rrc_referenceTFC = -1; /* TFC_Value */
-static int hf_rrc_modeSpecificInfo_19 = -1; /* T_modeSpecificInfo_19 */
-static int hf_rrc_fdd_50 = -1; /* T_fdd_49 */
+static int hf_rrc_modeSpecificInfo_21 = -1; /* T_modeSpecificInfo_21 */
+static int hf_rrc_fdd_52 = -1; /* T_fdd_51 */
static int hf_rrc_gainFactorBetaC = -1; /* GainFactor */
static int hf_rrc_gainFactorBetaD = -1; /* GainFactor */
static int hf_rrc_gainFactorInformation = -1; /* GainFactorInformation */
@@ -3831,8 +4085,8 @@ static int hf_rrc_RestrictedTrChInfoList_item = -1; /* RestrictedTrChInfo */
static int hf_rrc_channelCodingType = -1; /* ChannelCodingType */
static int hf_rrc_rateMatchingAttribute = -1; /* RateMatchingAttribute */
static int hf_rrc_crc_Size = -1; /* CRC_Size */
-static int hf_rrc_modeSpecificInfo_20 = -1; /* T_modeSpecificInfo_20 */
-static int hf_rrc_fdd_51 = -1; /* T_fdd_50 */
+static int hf_rrc_modeSpecificInfo_22 = -1; /* T_modeSpecificInfo_22 */
+static int hf_rrc_fdd_53 = -1; /* T_fdd_52 */
static int hf_rrc_referenceTFC_ID = -1; /* ReferenceTFC_ID */
static int hf_rrc_splitType = -1; /* SplitType */
static int hf_rrc_tfci_Field2_Length = -1; /* INTEGER_1_10 */
@@ -3844,15 +4098,15 @@ static int hf_rrc_non_allowedTFC_List = -1; /* Non_allowedTFC_List */
static int hf_rrc_restrictedTrChInfoList = -1; /* RestrictedTrChInfoList */
static int hf_rrc_fullTFCS = -1; /* NULL */
static int hf_rrc_TFC_SubsetList_item = -1; /* TFC_SubsetList_item */
-static int hf_rrc_modeSpecificInfo_21 = -1; /* T_modeSpecificInfo_21 */
-static int hf_rrc_tdd_14 = -1; /* T_tdd_13 */
+static int hf_rrc_modeSpecificInfo_23 = -1; /* T_modeSpecificInfo_23 */
+static int hf_rrc_tdd_16 = -1; /* T_tdd_15 */
static int hf_rrc_tfci_Range = -1; /* TFCI_RangeList */
static int hf_rrc_explicit_config_02 = -1; /* ExplicitTFCS_Configuration */
static int hf_rrc_maxTFCIField2Value = -1; /* INTEGER_1_1023 */
static int hf_rrc_tfcs_InfoForDSCH = -1; /* TFCS_InfoForDSCH */
static int hf_rrc_TFCI_RangeList_item = -1; /* TFCI_Range */
static int hf_rrc_normalTFCI_Signalling = -1; /* ExplicitTFCS_Configuration */
-static int hf_rrc_dummy_31 = -1; /* SplitTFCI_Signalling */
+static int hf_rrc_dummy_35 = -1; /* SplitTFCI_Signalling */
static int hf_rrc_tfcs_ID_01 = -1; /* TFCS_IdentityPlain */
static int hf_rrc_sharedChannelIndicator = -1; /* BOOLEAN */
static int hf_rrc_ctfc2bit = -1; /* INTEGER_0_3 */
@@ -3909,23 +4163,23 @@ static int hf_rrc_addReconf_MAC_d_FlowList = -1; /* E_DCH_AddReconf_MAC_d_FlowL
static int hf_rrc_dch_usch_01 = -1; /* T_dch_usch_01 */
static int hf_rrc_e_dch_03 = -1; /* T_e_dch_03 */
static int hf_rrc_modeSpecific = -1; /* T_modeSpecific */
-static int hf_rrc_fdd_52 = -1; /* T_fdd_51 */
+static int hf_rrc_fdd_54 = -1; /* T_fdd_53 */
static int hf_rrc_harq_Info_01 = -1; /* T_harq_Info_01 */
static int hf_rrc_addReconf_MAC_d_FlowList_01 = -1; /* E_DCH_AddReconf_MAC_d_FlowList_r7 */
static int hf_rrc_dch_usch_02 = -1; /* T_dch_usch_02 */
static int hf_rrc_e_dch_04 = -1; /* T_e_dch_04 */
static int hf_rrc_ul_MAC_HeaderType = -1; /* T_ul_MAC_HeaderType */
static int hf_rrc_modeSpecific_01 = -1; /* T_modeSpecific_01 */
-static int hf_rrc_fdd_53 = -1; /* T_fdd_52 */
+static int hf_rrc_fdd_55 = -1; /* T_fdd_54 */
static int hf_rrc_harq_Info_02 = -1; /* T_harq_Info_02 */
static int hf_rrc_prach_TFCS = -1; /* TFCS */
-static int hf_rrc_modeSpecificInfo_22 = -1; /* T_modeSpecificInfo_22 */
-static int hf_rrc_fdd_54 = -1; /* T_fdd_53 */
-static int hf_rrc_tdd_15 = -1; /* T_tdd_14 */
+static int hf_rrc_modeSpecificInfo_24 = -1; /* T_modeSpecificInfo_24 */
+static int hf_rrc_fdd_56 = -1; /* T_fdd_55 */
+static int hf_rrc_tdd_17 = -1; /* T_tdd_16 */
static int hf_rrc_individualUL_CCTrCH_InfoList = -1; /* IndividualUL_CCTrCH_InfoList */
-static int hf_rrc_modeSpecificInfo_23 = -1; /* T_modeSpecificInfo_23 */
-static int hf_rrc_fdd_55 = -1; /* T_fdd_54 */
-static int hf_rrc_tdd_16 = -1; /* T_tdd_15 */
+static int hf_rrc_modeSpecificInfo_25 = -1; /* T_modeSpecificInfo_25 */
+static int hf_rrc_fdd_57 = -1; /* T_fdd_56 */
+static int hf_rrc_tdd_18 = -1; /* T_tdd_17 */
static int hf_rrc_tfc_SubsetList = -1; /* TFC_SubsetList */
static int hf_rrc_UL_ControlledTrChList_item = -1; /* TransportChannelIdentity */
static int hf_rrc_UL_DeletedTransChInfoList_item = -1; /* UL_TransportChannelIdentity */
@@ -3970,6 +4224,7 @@ static int hf_rrc_subchannels_09 = -1; /* T_subchannels_09 */
static int hf_rrc_dynamicTFInformationCCCH = -1; /* DynamicTFInformationCCCH */
static int hf_rrc_additionalPRACH_TF_and_TFCS_CCCH_IEs = -1; /* AdditionalPRACH_TF_and_TFCS_CCCH_IEs */
static int hf_rrc_AdditionalPRACH_TF_and_TFCS_CCCH_List_item = -1; /* AdditionalPRACH_TF_and_TFCS_CCCH */
+static int hf_rrc_AdditionalDLSecCellInfoListFDD_item = -1; /* AdditionalDLSecCellInfoFDD */
static int hf_rrc_channelisationCode256 = -1; /* ChannelisationCode256 */
static int hf_rrc_sttd_Indicator = -1; /* BOOLEAN */
static int hf_rrc_aich_TransmissionTiming = -1; /* AICH_TransmissionTiming */
@@ -4017,12 +4272,12 @@ static int hf_rrc_number_of_group = -1; /* INTEGER_1_maxERNTIgroup */
static int hf_rrc_number_of_ENRTI_per_group = -1; /* INTEGER_1_maxERNTIperGroup */
static int hf_rrc_ul_InterferenceForCommonEDCH = -1; /* UL_Interference */
static int hf_rrc_common_E_DCH_MAC_d_FlowList = -1; /* Common_E_DCH_MAC_d_FlowList */
-static int hf_rrc_modeSpecificInfo_24 = -1; /* T_modeSpecificInfo_24 */
-static int hf_rrc_dummy_32 = -1; /* T_dummy_14 */
-static int hf_rrc_tdd_17 = -1; /* T_tdd_16 */
-static int hf_rrc_tdd768_04 = -1; /* NULL */
-static int hf_rrc_tdd384_09 = -1; /* NULL */
-static int hf_rrc_tdd128_09 = -1; /* T_tdd128_09 */
+static int hf_rrc_modeSpecificInfo_26 = -1; /* T_modeSpecificInfo_26 */
+static int hf_rrc_dummy_36 = -1; /* T_dummy_14 */
+static int hf_rrc_tdd_19 = -1; /* T_tdd_18 */
+static int hf_rrc_tdd768_05 = -1; /* NULL */
+static int hf_rrc_tdd384_10 = -1; /* NULL */
+static int hf_rrc_tdd128_10 = -1; /* T_tdd128_10 */
static int hf_rrc_e_RUCCH_Info = -1; /* E_RUCCH_Info_TDD128 */
static int hf_rrc_e_PUCH_Info = -1; /* E_PUCH_Info_TDD128 */
static int hf_rrc_e_hich_Information = -1; /* E_HICH_Information_TDD128 */
@@ -4083,15 +4338,15 @@ static int hf_rrc_commonTimeslotInfo = -1; /* CommonTimeslotInfo */
static int hf_rrc_dl_CCTrCH_TimeslotsCodes = -1; /* DownlinkTimeslotsCodes */
static int hf_rrc_ul_CCTrChTPCList = -1; /* UL_CCTrChTPCList */
static int hf_rrc_tddOption_03 = -1; /* T_tddOption_03 */
-static int hf_rrc_tdd384_10 = -1; /* T_tdd384_09 */
-static int hf_rrc_tdd128_10 = -1; /* T_tdd128_10 */
+static int hf_rrc_tdd384_11 = -1; /* T_tdd384_10 */
+static int hf_rrc_tdd128_11 = -1; /* T_tdd128_11 */
static int hf_rrc_dl_CCTrCH_TimeslotsCodes_01 = -1; /* DownlinkTimeslotsCodes_LCR_r4 */
static int hf_rrc_tddOption_04 = -1; /* T_tddOption_04 */
-static int hf_rrc_tdd384_11 = -1; /* T_tdd384_10 */
+static int hf_rrc_tdd384_12 = -1; /* T_tdd384_11 */
static int hf_rrc_dl_CCTrCH_TimeslotsCodes_02 = -1; /* DownlinkTimeslotsCodes_r7 */
-static int hf_rrc_tdd768_05 = -1; /* T_tdd768_04 */
+static int hf_rrc_tdd768_06 = -1; /* T_tdd768_05 */
static int hf_rrc_dl_CCTrCH_TimeslotsCodes_03 = -1; /* DownlinkTimeslotsCodes_VHCR */
-static int hf_rrc_tdd128_11 = -1; /* T_tdd128_11 */
+static int hf_rrc_tdd128_12 = -1; /* T_tdd128_12 */
static int hf_rrc_DL_CCTrChList_item = -1; /* DL_CCTrCh */
static int hf_rrc_DL_CCTrChList_r7_item = -1; /* DL_CCTrCh_r7 */
static int hf_rrc_DL_CCTrChList_r4_item = -1; /* DL_CCTrCh_r4 */
@@ -4101,106 +4356,115 @@ static int hf_rrc_sf_AndCodeNumber = -1; /* SF512_AndCodeNumber */
static int hf_rrc_scramblingCodeChange = -1; /* ScramblingCodeChange */
static int hf_rrc_DL_ChannelisationCodeList_item = -1; /* DL_ChannelisationCode */
static int hf_rrc_dl_DPCH_InfoCommon = -1; /* DL_DPCH_InfoCommon */
-static int hf_rrc_modeSpecificInfo_25 = -1; /* T_modeSpecificInfo_25 */
-static int hf_rrc_fdd_56 = -1; /* T_fdd_55 */
+static int hf_rrc_modeSpecificInfo_27 = -1; /* T_modeSpecificInfo_27 */
+static int hf_rrc_fdd_58 = -1; /* T_fdd_57 */
static int hf_rrc_defaultDPCH_OffsetValue = -1; /* DefaultDPCH_OffsetValueFDD */
static int hf_rrc_dpch_CompressedModeInfo = -1; /* DPCH_CompressedModeInfo */
-static int hf_rrc_dummy_33 = -1; /* SSDT_Information */
-static int hf_rrc_tdd_18 = -1; /* T_tdd_17 */
+static int hf_rrc_dummy_37 = -1; /* SSDT_Information */
+static int hf_rrc_tdd_20 = -1; /* T_tdd_19 */
static int hf_rrc_defaultDPCH_OffsetValue_01 = -1; /* DefaultDPCH_OffsetValueTDD */
static int hf_rrc_dl_DPCH_InfoCommon_01 = -1; /* DL_DPCH_InfoCommon_r4 */
-static int hf_rrc_modeSpecificInfo_26 = -1; /* T_modeSpecificInfo_26 */
-static int hf_rrc_fdd_57 = -1; /* T_fdd_56 */
-static int hf_rrc_dummy_34 = -1; /* SSDT_Information_r4 */
-static int hf_rrc_tdd_19 = -1; /* T_tdd_18 */
+static int hf_rrc_modeSpecificInfo_28 = -1; /* T_modeSpecificInfo_28 */
+static int hf_rrc_fdd_59 = -1; /* T_fdd_58 */
+static int hf_rrc_dummy_38 = -1; /* SSDT_Information_r4 */
+static int hf_rrc_tdd_21 = -1; /* T_tdd_20 */
static int hf_rrc_tddOption_05 = -1; /* T_tddOption_05 */
-static int hf_rrc_tdd128_12 = -1; /* T_tdd128_12 */
+static int hf_rrc_tdd128_13 = -1; /* T_tdd128_13 */
static int hf_rrc_tstd_Indicator = -1; /* BOOLEAN */
-static int hf_rrc_modeSpecificInfo_27 = -1; /* T_modeSpecificInfo_27 */
-static int hf_rrc_fdd_58 = -1; /* T_fdd_57 */
-static int hf_rrc_tdd_20 = -1; /* T_tdd_19 */
+static int hf_rrc_modeSpecificInfo_29 = -1; /* T_modeSpecificInfo_29 */
+static int hf_rrc_fdd_60 = -1; /* T_fdd_59 */
+static int hf_rrc_tdd_22 = -1; /* T_tdd_21 */
static int hf_rrc_tddOption_06 = -1; /* T_tddOption_06 */
-static int hf_rrc_tdd128_13 = -1; /* T_tdd128_13 */
+static int hf_rrc_tdd128_14 = -1; /* T_tdd128_14 */
static int hf_rrc_mac_hsResetIndicator_04 = -1; /* T_mac_hsResetIndicator_04 */
static int hf_rrc_dl_dpchInfoCommon = -1; /* T_dl_dpchInfoCommon */
static int hf_rrc_dl_DPCH_InfoCommon_02 = -1; /* DL_DPCH_InfoCommon_r6 */
static int hf_rrc_dl_FDPCH_InfoCommon = -1; /* DL_FDPCH_InfoCommon_r6 */
-static int hf_rrc_modeSpecificInfo_28 = -1; /* T_modeSpecificInfo_28 */
-static int hf_rrc_fdd_59 = -1; /* T_fdd_58 */
-static int hf_rrc_tdd_21 = -1; /* T_tdd_20 */
+static int hf_rrc_modeSpecificInfo_30 = -1; /* T_modeSpecificInfo_30 */
+static int hf_rrc_fdd_61 = -1; /* T_fdd_60 */
+static int hf_rrc_tdd_23 = -1; /* T_tdd_22 */
static int hf_rrc_tddOption_07 = -1; /* T_tddOption_07 */
-static int hf_rrc_tdd128_14 = -1; /* T_tdd128_14 */
+static int hf_rrc_tdd128_15 = -1; /* T_tdd128_15 */
static int hf_rrc_mac_hsResetIndicator_05 = -1; /* T_mac_hsResetIndicator_05 */
static int hf_rrc_postVerificationPeriod_07 = -1; /* T_postVerificationPeriod_07 */
static int hf_rrc_dl_dpchInfoCommon_01 = -1; /* T_dl_dpchInfoCommon_01 */
-static int hf_rrc_modeSpecificInfo_29 = -1; /* T_modeSpecificInfo_29 */
-static int hf_rrc_fdd_60 = -1; /* T_fdd_59 */
-static int hf_rrc_tdd_22 = -1; /* T_tdd_21 */
+static int hf_rrc_modeSpecificInfo_31 = -1; /* T_modeSpecificInfo_31 */
+static int hf_rrc_fdd_62 = -1; /* T_fdd_61 */
+static int hf_rrc_tdd_24 = -1; /* T_tdd_23 */
static int hf_rrc_tddOption_08 = -1; /* T_tddOption_08 */
-static int hf_rrc_tdd128_15 = -1; /* T_tdd128_15 */
+static int hf_rrc_tdd128_16 = -1; /* T_tdd128_16 */
static int hf_rrc_mac_hsResetIndicator_06 = -1; /* T_mac_hsResetIndicator_06 */
static int hf_rrc_postVerificationPeriod_08 = -1; /* T_postVerificationPeriod_08 */
static int hf_rrc_dl_dpchInfoCommon_02 = -1; /* T_dl_dpchInfoCommon_02 */
-static int hf_rrc_modeSpecificInfo_30 = -1; /* T_modeSpecificInfo_30 */
-static int hf_rrc_fdd_61 = -1; /* T_fdd_60 */
+static int hf_rrc_modeSpecificInfo_32 = -1; /* T_modeSpecificInfo_32 */
+static int hf_rrc_fdd_63 = -1; /* T_fdd_62 */
static int hf_rrc_dpch_CompressedModeInfo_01 = -1; /* DPCH_CompressedModeInfo_r8 */
-static int hf_rrc_tdd_23 = -1; /* T_tdd_22 */
+static int hf_rrc_tdd_25 = -1; /* T_tdd_24 */
static int hf_rrc_tddOption_09 = -1; /* T_tddOption_09 */
-static int hf_rrc_tdd128_16 = -1; /* T_tdd128_16 */
+static int hf_rrc_tdd128_17 = -1; /* T_tdd128_17 */
static int hf_rrc_mac_hsResetIndicator_07 = -1; /* T_mac_hsResetIndicator_07 */
static int hf_rrc_postVerificationPeriod_09 = -1; /* T_postVerificationPeriod_09 */
+static int hf_rrc_dl_dpchInfoCommon_03 = -1; /* T_dl_dpchInfoCommon_03 */
+static int hf_rrc_modeSpecificInfo_33 = -1; /* T_modeSpecificInfo_33 */
+static int hf_rrc_fdd_64 = -1; /* T_fdd_63 */
+static int hf_rrc_dpch_CompressedModeInfo_02 = -1; /* DPCH_CompressedModeInfo_r10 */
+static int hf_rrc_tdd_26 = -1; /* T_tdd_25 */
+static int hf_rrc_tddOption_10 = -1; /* T_tddOption_10 */
+static int hf_rrc_tdd128_18 = -1; /* T_tdd128_18 */
+static int hf_rrc_mac_hsResetIndicator_08 = -1; /* T_mac_hsResetIndicator_08 */
+static int hf_rrc_postVerificationPeriod_10 = -1; /* T_postVerificationPeriod_10 */
static int hf_rrc_dl_DPCH_InfoCommon_03 = -1; /* DL_DPCH_InfoCommonPost */
static int hf_rrc_dl_DPCH_InfoCommon_04 = -1; /* DL_DPCH_InfoCommonPredef */
static int hf_rrc_cfnHandling = -1; /* T_cfnHandling */
static int hf_rrc_maintain = -1; /* NULL */
static int hf_rrc_initialise = -1; /* T_initialise */
-static int hf_rrc_dummy_35 = -1; /* Cfntargetsfnframeoffset */
-static int hf_rrc_modeSpecificInfo_31 = -1; /* T_modeSpecificInfo_31 */
-static int hf_rrc_fdd_62 = -1; /* T_fdd_61 */
+static int hf_rrc_dummy_39 = -1; /* Cfntargetsfnframeoffset */
+static int hf_rrc_modeSpecificInfo_34 = -1; /* T_modeSpecificInfo_34 */
+static int hf_rrc_fdd_65 = -1; /* T_fdd_64 */
static int hf_rrc_dl_DPCH_PowerControlInfo = -1; /* DL_DPCH_PowerControlInfo */
static int hf_rrc_powerOffsetPilot_pdpdch = -1; /* PowerOffsetPilot_pdpdch */
static int hf_rrc_dl_rate_matching_restriction = -1; /* Dl_rate_matching_restriction */
static int hf_rrc_spreadingFactorAndPilot = -1; /* SF512_AndPilot */
static int hf_rrc_positionFixedOrFlexible = -1; /* PositionFixedOrFlexible */
static int hf_rrc_tfci_Existence = -1; /* BOOLEAN */
-static int hf_rrc_tdd_24 = -1; /* T_tdd_23 */
+static int hf_rrc_tdd_27 = -1; /* T_tdd_26 */
static int hf_rrc_cfnHandling_01 = -1; /* T_cfnHandling_01 */
static int hf_rrc_initialise_01 = -1; /* T_initialise_01 */
-static int hf_rrc_modeSpecificInfo_32 = -1; /* T_modeSpecificInfo_32 */
-static int hf_rrc_fdd_63 = -1; /* T_fdd_62 */
-static int hf_rrc_tdd_25 = -1; /* T_tdd_24 */
+static int hf_rrc_modeSpecificInfo_35 = -1; /* T_modeSpecificInfo_35 */
+static int hf_rrc_fdd_66 = -1; /* T_fdd_65 */
+static int hf_rrc_tdd_28 = -1; /* T_tdd_27 */
static int hf_rrc_mac_d_HFN_initial_value = -1; /* MAC_d_HFN_initial_value */
static int hf_rrc_cfnHandling_02 = -1; /* T_cfnHandling_02 */
static int hf_rrc_maintain_01 = -1; /* T_maintain */
static int hf_rrc_timingmaintainedsynchind = -1; /* TimingMaintainedSynchInd */
static int hf_rrc_initialise_02 = -1; /* NULL */
-static int hf_rrc_modeSpecificInfo_33 = -1; /* T_modeSpecificInfo_33 */
-static int hf_rrc_fdd_64 = -1; /* T_fdd_63 */
-static int hf_rrc_tdd_26 = -1; /* T_tdd_25 */
-static int hf_rrc_modeSpecificInfo_34 = -1; /* T_modeSpecificInfo_34 */
-static int hf_rrc_fdd_65 = -1; /* T_fdd_64 */
-static int hf_rrc_tdd_27 = -1; /* T_tdd_26 */
-static int hf_rrc_fdd_66 = -1; /* T_fdd_65 */
+static int hf_rrc_modeSpecificInfo_36 = -1; /* T_modeSpecificInfo_36 */
+static int hf_rrc_fdd_67 = -1; /* T_fdd_66 */
+static int hf_rrc_tdd_29 = -1; /* T_tdd_28 */
+static int hf_rrc_modeSpecificInfo_37 = -1; /* T_modeSpecificInfo_37 */
+static int hf_rrc_fdd_68 = -1; /* T_fdd_67 */
+static int hf_rrc_tdd_30 = -1; /* T_tdd_29 */
+static int hf_rrc_fdd_69 = -1; /* T_fdd_68 */
static int hf_rrc_pCPICH_UsageForChannelEst = -1; /* PCPICH_UsageForChannelEst */
static int hf_rrc_dpch_FrameOffset = -1; /* DPCH_FrameOffset */
static int hf_rrc_secondaryCPICH_Info = -1; /* SecondaryCPICH_Info */
static int hf_rrc_dl_ChannelisationCodeList = -1; /* DL_ChannelisationCodeList */
static int hf_rrc_tpc_CombinationIndex = -1; /* TPC_CombinationIndex */
-static int hf_rrc_dummy_36 = -1; /* SSDT_CellIdentity */
+static int hf_rrc_dummy_40 = -1; /* SSDT_CellIdentity */
static int hf_rrc_closedLoopTimingAdjMode = -1; /* ClosedLoopTimingAdjMode */
-static int hf_rrc_tdd_28 = -1; /* T_tdd_27 */
+static int hf_rrc_tdd_31 = -1; /* T_tdd_30 */
static int hf_rrc_dl_CCTrChListToEstablish = -1; /* DL_CCTrChList */
static int hf_rrc_dl_CCTrChListToRemove = -1; /* DL_CCTrChListToRemove */
-static int hf_rrc_fdd_67 = -1; /* T_fdd_66 */
-static int hf_rrc_tdd_29 = -1; /* T_tdd_28 */
-static int hf_rrc_dl_CCTrChListToEstablish_01 = -1; /* DL_CCTrChList_r4 */
-static int hf_rrc_fdd_68 = -1; /* T_fdd_67 */
-static int hf_rrc_powerOffsetTPC_pdpdch = -1; /* PowerOffsetTPC_pdpdch */
-static int hf_rrc_tdd_30 = -1; /* T_tdd_29 */
-static int hf_rrc_fdd_69 = -1; /* T_fdd_68 */
-static int hf_rrc_tdd_31 = -1; /* T_tdd_30 */
static int hf_rrc_fdd_70 = -1; /* T_fdd_69 */
static int hf_rrc_tdd_32 = -1; /* T_tdd_31 */
+static int hf_rrc_dl_CCTrChListToEstablish_01 = -1; /* DL_CCTrChList_r4 */
+static int hf_rrc_fdd_71 = -1; /* T_fdd_70 */
+static int hf_rrc_powerOffsetTPC_pdpdch = -1; /* PowerOffsetTPC_pdpdch */
+static int hf_rrc_tdd_33 = -1; /* T_tdd_32 */
+static int hf_rrc_fdd_72 = -1; /* T_fdd_71 */
+static int hf_rrc_tdd_34 = -1; /* T_tdd_33 */
+static int hf_rrc_fdd_73 = -1; /* T_fdd_72 */
+static int hf_rrc_tdd_35 = -1; /* T_tdd_34 */
static int hf_rrc_dl_CCTrChListToEstablish_02 = -1; /* DL_CCTrChList_r7 */
static int hf_rrc_fdpch_FrameOffset = -1; /* DPCH_FrameOffset */
static int hf_rrc_dl_ChannelisationCode = -1; /* INTEGER_0_255 */
@@ -4208,9 +4472,9 @@ static int hf_rrc_fdpch_SlotFormat = -1; /* FDPCH_SlotFormat */
static int hf_rrc_sttdIndication = -1; /* STTDIndication */
static int hf_rrc_dl_ChannelisationCode_01 = -1; /* DL_ChannelisationCode */
static int hf_rrc_dl_DPCH_TimeslotsCodes = -1; /* DownlinkTimeslotsCodes */
-static int hf_rrc_modeSpecificInfo_35 = -1; /* T_modeSpecificInfo_35 */
-static int hf_rrc_fdd_71 = -1; /* T_fdd_70 */
-static int hf_rrc_tdd_33 = -1; /* T_tdd_32 */
+static int hf_rrc_modeSpecificInfo_38 = -1; /* T_modeSpecificInfo_38 */
+static int hf_rrc_fdd_74 = -1; /* T_fdd_73 */
+static int hf_rrc_tdd_36 = -1; /* T_tdd_35 */
static int hf_rrc_tpc_StepSizeTDD = -1; /* TPC_StepSizeTDD */
static int hf_rrc_cfnHandling_03 = -1; /* T_cfnHandling_03 */
static int hf_rrc_maintain_02 = -1; /* T_maintain_01 */
@@ -4218,48 +4482,48 @@ static int hf_rrc_dl_FDPCH_PowerControlInfo = -1; /* DL_DPCH_PowerControlInfo *
static int hf_rrc_dl_FDPCH_TPCcommandErrorRate_01 = -1; /* INTEGER_1_16 */
static int hf_rrc_hs_scch_Info = -1; /* HS_SCCH_Info */
static int hf_rrc_measurement_feedback_Info = -1; /* Measurement_Feedback_Info */
-static int hf_rrc_modeSpecificInfo_36 = -1; /* T_modeSpecificInfo_36 */
-static int hf_rrc_tdd_34 = -1; /* T_tdd_33 */
-static int hf_rrc_tdd384_12 = -1; /* T_tdd384_11 */
+static int hf_rrc_modeSpecificInfo_39 = -1; /* T_modeSpecificInfo_39 */
+static int hf_rrc_tdd_37 = -1; /* T_tdd_36 */
+static int hf_rrc_tdd384_13 = -1; /* T_tdd384_12 */
static int hf_rrc_dl_HSPDSCH_TS_Configuration = -1; /* DL_HSPDSCH_TS_Configuration */
-static int hf_rrc_tdd128_17 = -1; /* T_tdd128_17 */
+static int hf_rrc_tdd128_19 = -1; /* T_tdd128_19 */
static int hf_rrc_hs_PDSCH_Midamble_Configuration_tdd128 = -1; /* HS_PDSCH_Midamble_Configuration_TDD128 */
static int hf_rrc_hs_scch_Info_01 = -1; /* HS_SCCH_Info_r6 */
-static int hf_rrc_modeSpecificInfo_37 = -1; /* T_modeSpecificInfo_37 */
-static int hf_rrc_tdd_35 = -1; /* T_tdd_34 */
-static int hf_rrc_tdd384_13 = -1; /* T_tdd384_12 */
-static int hf_rrc_tdd128_18 = -1; /* T_tdd128_18 */
+static int hf_rrc_modeSpecificInfo_40 = -1; /* T_modeSpecificInfo_40 */
+static int hf_rrc_tdd_38 = -1; /* T_tdd_37 */
+static int hf_rrc_tdd384_14 = -1; /* T_tdd384_13 */
+static int hf_rrc_tdd128_20 = -1; /* T_tdd128_20 */
static int hf_rrc_hs_scch_Info_02 = -1; /* HS_SCCH_Info_r7 */
static int hf_rrc_measurement_feedback_Info_01 = -1; /* Measurement_Feedback_Info_r7 */
-static int hf_rrc_modeSpecificInfo_38 = -1; /* T_modeSpecificInfo_38 */
-static int hf_rrc_tdd_36 = -1; /* T_tdd_35 */
-static int hf_rrc_tdd384_14 = -1; /* T_tdd384_13 */
-static int hf_rrc_tdd768_06 = -1; /* T_tdd768_05 */
+static int hf_rrc_modeSpecificInfo_41 = -1; /* T_modeSpecificInfo_41 */
+static int hf_rrc_tdd_39 = -1; /* T_tdd_38 */
+static int hf_rrc_tdd384_15 = -1; /* T_tdd384_14 */
+static int hf_rrc_tdd768_07 = -1; /* T_tdd768_06 */
static int hf_rrc_dl_HSPDSCH_TS_Configuration_01 = -1; /* DL_HSPDSCH_TS_Configuration_VHCR */
-static int hf_rrc_tdd128_19 = -1; /* T_tdd128_19 */
+static int hf_rrc_tdd128_21 = -1; /* T_tdd128_21 */
static int hf_rrc_dl_MultiCarrier_Information = -1; /* DL_MultiCarrier_Information */
-static int hf_rrc_fdd_72 = -1; /* T_fdd_71 */
+static int hf_rrc_fdd_75 = -1; /* T_fdd_74 */
static int hf_rrc_dl_64QAM_Configured = -1; /* T_dl_64QAM_Configured */
-static int hf_rrc_modeSpecificInfo_39 = -1; /* T_modeSpecificInfo_39 */
-static int hf_rrc_tdd_37 = -1; /* T_tdd_36 */
-static int hf_rrc_tdd384_15 = -1; /* T_tdd384_14 */
-static int hf_rrc_tdd768_07 = -1; /* T_tdd768_06 */
-static int hf_rrc_tdd128_20 = -1; /* T_tdd128_20 */
-static int hf_rrc_fdd_73 = -1; /* T_fdd_72 */
+static int hf_rrc_modeSpecificInfo_42 = -1; /* T_modeSpecificInfo_42 */
+static int hf_rrc_tdd_40 = -1; /* T_tdd_39 */
+static int hf_rrc_tdd384_16 = -1; /* T_tdd384_15 */
+static int hf_rrc_tdd768_08 = -1; /* T_tdd768_07 */
+static int hf_rrc_tdd128_22 = -1; /* T_tdd128_22 */
+static int hf_rrc_fdd_76 = -1; /* T_fdd_75 */
static int hf_rrc_dl_64QAM_Configured_01 = -1; /* T_dl_64QAM_Configured_01 */
-static int hf_rrc_modeSpecificInfo_40 = -1; /* T_modeSpecificInfo_40 */
-static int hf_rrc_tdd_38 = -1; /* T_tdd_37 */
-static int hf_rrc_tdd128_21 = -1; /* T_tdd128_21 */
+static int hf_rrc_modeSpecificInfo_43 = -1; /* T_modeSpecificInfo_43 */
+static int hf_rrc_tdd_41 = -1; /* T_tdd_40 */
+static int hf_rrc_tdd128_23 = -1; /* T_tdd128_23 */
static int hf_rrc_outofSyncWindow = -1; /* OutofSyncWindow */
static int hf_rrc_hs_scch_Info_03 = -1; /* HS_SCCH_Info_r8_ext */
static int hf_rrc_hs_scch_Info_04 = -1; /* HS_SCCH_Info_r9 */
-static int hf_rrc_modeSpecificInfo_41 = -1; /* T_modeSpecificInfo_41 */
-static int hf_rrc_tdd_39 = -1; /* T_tdd_38 */
-static int hf_rrc_tdd384_16 = -1; /* T_tdd384_15 */
-static int hf_rrc_tdd768_08 = -1; /* T_tdd768_07 */
-static int hf_rrc_tdd128_22 = -1; /* T_tdd128_22 */
+static int hf_rrc_modeSpecificInfo_44 = -1; /* T_modeSpecificInfo_44 */
+static int hf_rrc_tdd_42 = -1; /* T_tdd_41 */
+static int hf_rrc_tdd384_17 = -1; /* T_tdd384_16 */
+static int hf_rrc_tdd768_09 = -1; /* T_tdd768_08 */
+static int hf_rrc_tdd128_24 = -1; /* T_tdd128_24 */
static int hf_rrc_tS0_Indicator = -1; /* T_tS0_Indicator */
-static int hf_rrc_fdd_74 = -1; /* T_fdd_73 */
+static int hf_rrc_fdd_77 = -1; /* T_fdd_76 */
static int hf_rrc_dl_64QAM_Configured_02 = -1; /* T_dl_64QAM_Configured_02 */
static int hf_rrc_DL_HSPDSCH_MultiCarrier_Information_item = -1; /* DL_HSPDSCH_MultiCarrier_Information_item */
static int hf_rrc_uarfcn_Carrier = -1; /* UARFCN */
@@ -4270,58 +4534,58 @@ static int hf_rrc_DL_HSPDSCH_TS_Configuration_item = -1; /* DL_HSPDSCH_TS_Confi
static int hf_rrc_midambleShiftAndBurstType = -1; /* MidambleShiftAndBurstType_DL */
static int hf_rrc_DL_HSPDSCH_TS_Configuration_VHCR_item = -1; /* DL_HSPDSCH_TS_Configuration_VHCR_item */
static int hf_rrc_midambleShiftAndBurstType_01 = -1; /* MidambleShiftAndBurstType_DL_VHCR */
-static int hf_rrc_modeSpecificInfo_42 = -1; /* T_modeSpecificInfo_42 */
-static int hf_rrc_fdd_75 = -1; /* T_fdd_74 */
+static int hf_rrc_modeSpecificInfo_45 = -1; /* T_modeSpecificInfo_45 */
+static int hf_rrc_fdd_78 = -1; /* T_fdd_77 */
static int hf_rrc_dummy1_02 = -1; /* PDSCH_SHO_DCH_Info */
static int hf_rrc_dummy2_06 = -1; /* PDSCH_CodeMapping */
-static int hf_rrc_tdd_40 = -1; /* PrimaryCCPCH_Info */
+static int hf_rrc_tdd_43 = -1; /* PrimaryCCPCH_Info */
static int hf_rrc_dl_DPCH_InfoPerRL = -1; /* DL_DPCH_InfoPerRL */
-static int hf_rrc_dummy_37 = -1; /* SCCPCH_InfoForFACH */
-static int hf_rrc_modeSpecificInfo_43 = -1; /* T_modeSpecificInfo_43 */
-static int hf_rrc_fdd_76 = -1; /* T_fdd_75 */
-static int hf_rrc_tdd_41 = -1; /* PrimaryCCPCH_Info_r4 */
+static int hf_rrc_dummy_41 = -1; /* SCCPCH_InfoForFACH */
+static int hf_rrc_modeSpecificInfo_46 = -1; /* T_modeSpecificInfo_46 */
+static int hf_rrc_fdd_79 = -1; /* T_fdd_78 */
+static int hf_rrc_tdd_44 = -1; /* PrimaryCCPCH_Info_r4 */
static int hf_rrc_dl_DPCH_InfoPerRL_01 = -1; /* DL_DPCH_InfoPerRL_r4 */
-static int hf_rrc_dummy_38 = -1; /* SCCPCH_InfoForFACH_r4 */
-static int hf_rrc_modeSpecificInfo_44 = -1; /* T_modeSpecificInfo_44 */
-static int hf_rrc_fdd_77 = -1; /* T_fdd_76 */
+static int hf_rrc_dummy_42 = -1; /* SCCPCH_InfoForFACH_r4 */
+static int hf_rrc_modeSpecificInfo_47 = -1; /* T_modeSpecificInfo_47 */
+static int hf_rrc_fdd_80 = -1; /* T_fdd_79 */
static int hf_rrc_servingHSDSCH_RL_indicator = -1; /* BOOLEAN */
static int hf_rrc_dl_DPCH_InfoPerRL_02 = -1; /* DL_DPCH_InfoPerRL_r5 */
-static int hf_rrc_modeSpecificInfo_45 = -1; /* T_modeSpecificInfo_45 */
-static int hf_rrc_fdd_78 = -1; /* T_fdd_77 */
-static int hf_rrc_modeSpecificInfo_46 = -1; /* T_modeSpecificInfo_46 */
-static int hf_rrc_fdd_79 = -1; /* T_fdd_78 */
+static int hf_rrc_modeSpecificInfo_48 = -1; /* T_modeSpecificInfo_48 */
+static int hf_rrc_fdd_81 = -1; /* T_fdd_80 */
+static int hf_rrc_modeSpecificInfo_49 = -1; /* T_modeSpecificInfo_49 */
+static int hf_rrc_fdd_82 = -1; /* T_fdd_81 */
static int hf_rrc_servingEDCH_RL_indicator = -1; /* BOOLEAN */
static int hf_rrc_dl_dpchInfo = -1; /* T_dl_dpchInfo */
static int hf_rrc_dl_DPCH_InfoPerRL_03 = -1; /* DL_DPCH_InfoPerRL_r6 */
static int hf_rrc_dl_FDPCH_InfoPerRL = -1; /* DL_FDPCH_InfoPerRL_r6 */
static int hf_rrc_e_HICH_Info = -1; /* T_e_HICH_Info */
static int hf_rrc_e_RGCH_Info_01 = -1; /* T_e_RGCH_Info_01 */
-static int hf_rrc_modeSpecificInfo_47 = -1; /* T_modeSpecificInfo_47 */
-static int hf_rrc_fdd_80 = -1; /* T_fdd_79 */
+static int hf_rrc_modeSpecificInfo_50 = -1; /* T_modeSpecificInfo_50 */
+static int hf_rrc_fdd_83 = -1; /* T_fdd_82 */
static int hf_rrc_dl_dpchInfo_01 = -1; /* T_dl_dpchInfo_01 */
static int hf_rrc_dl_DPCH_InfoPerRL_04 = -1; /* DL_DPCH_InfoPerRL_r7 */
static int hf_rrc_dl_FDPCH_InfoPerRL_01 = -1; /* DL_FDPCH_InfoPerRL_r7 */
static int hf_rrc_e_AGCH_Information_01 = -1; /* E_AGCH_Information_r7 */
static int hf_rrc_modeSpecificInfo2 = -1; /* T_modeSpecificInfo2 */
-static int hf_rrc_fdd_81 = -1; /* T_fdd_80 */
+static int hf_rrc_fdd_84 = -1; /* T_fdd_83 */
static int hf_rrc_e_HICH_Info_01 = -1; /* T_e_HICH_Info_01 */
static int hf_rrc_e_RGCH_Info_02 = -1; /* T_e_RGCH_Info_02 */
-static int hf_rrc_tdd_42 = -1; /* T_tdd_39 */
+static int hf_rrc_tdd_45 = -1; /* T_tdd_42 */
static int hf_rrc_tdd384_tdd768 = -1; /* T_tdd384_tdd768 */
static int hf_rrc_e_HICH_Info_02 = -1; /* E_HICH_Information_TDD384_768 */
-static int hf_rrc_tdd128_23 = -1; /* T_tdd128_23 */
+static int hf_rrc_tdd128_25 = -1; /* T_tdd128_25 */
static int hf_rrc_e_HICH_Info_03 = -1; /* E_HICH_Information_TDD128 */
-static int hf_rrc_modeSpecificInfo_48 = -1; /* T_modeSpecificInfo_48 */
-static int hf_rrc_fdd_82 = -1; /* T_fdd_81 */
+static int hf_rrc_modeSpecificInfo_51 = -1; /* T_modeSpecificInfo_51 */
+static int hf_rrc_fdd_85 = -1; /* T_fdd_84 */
static int hf_rrc_dl_dpchInfo_02 = -1; /* T_dl_dpchInfo_02 */
static int hf_rrc_e_AGCH_Information_02 = -1; /* E_AGCH_Information_r8 */
static int hf_rrc_modeSpecificInfo2_01 = -1; /* T_modeSpecificInfo2_01 */
-static int hf_rrc_fdd_83 = -1; /* T_fdd_82 */
+static int hf_rrc_fdd_86 = -1; /* T_fdd_85 */
static int hf_rrc_e_HICH_Info_04 = -1; /* T_e_HICH_Info_02 */
static int hf_rrc_e_RGCH_Info_03 = -1; /* T_e_RGCH_Info_03 */
-static int hf_rrc_tdd_43 = -1; /* T_tdd_40 */
+static int hf_rrc_tdd_46 = -1; /* T_tdd_43 */
static int hf_rrc_tdd384_tdd768_01 = -1; /* T_tdd384_tdd768_01 */
-static int hf_rrc_tdd128_24 = -1; /* T_tdd128_24 */
+static int hf_rrc_tdd128_26 = -1; /* T_tdd128_26 */
static int hf_rrc_DL_InformationPerRL_List_item = -1; /* DL_InformationPerRL */
static int hf_rrc_DL_InformationPerRL_List_r4_item = -1; /* DL_InformationPerRL_r4 */
static int hf_rrc_DL_InformationPerRL_List_r5_item = -1; /* DL_InformationPerRL_r5 */
@@ -4353,6 +4617,11 @@ static int hf_rrc_newConfiguration_02 = -1; /* T_newConfiguration_02 */
static int hf_rrc_dl_64QAM_Configured_04 = -1; /* T_dl_64QAM_Configured_04 */
static int hf_rrc_differentTxModeFromServingHS_DSCHCell_01 = -1; /* T_differentTxModeFromServingHS_DSCHCell_01 */
static int hf_rrc_secondaryCellMIMOparameters = -1; /* SecondaryCellMIMOparametersFDD */
+static int hf_rrc_configurationInfo_01 = -1; /* T_configurationInfo_01 */
+static int hf_rrc_newConfiguration_03 = -1; /* T_newConfiguration_03 */
+static int hf_rrc_dl_64QAM_Configured_05 = -1; /* T_dl_64QAM_Configured_05 */
+static int hf_rrc_differentTxModeFromServingHS_DSCHCell_02 = -1; /* T_differentTxModeFromServingHS_DSCHCell_02 */
+static int hf_rrc_secondaryCellMIMOparameters_01 = -1; /* SecondaryCellMIMOparametersFDD_r10 */
static int hf_rrc_DL_TPC_PowerOffsetPerRL_List_item = -1; /* DL_TPC_PowerOffsetPerRL */
static int hf_rrc_codesRepresentation = -1; /* T_codesRepresentation */
static int hf_rrc_consecutive = -1; /* T_consecutive */
@@ -4411,9 +4680,12 @@ static int hf_rrc_timeslotList_03 = -1; /* SEQUENCE_SIZE_1_maxTS_1_OF_
static int hf_rrc_timeslotList_item_03 = -1; /* DownlinkAdditionalTimeslots_r7 */
static int hf_rrc_tgp_SequenceList = -1; /* TGP_SequenceList */
static int hf_rrc_tgp_SequenceList_01 = -1; /* TGP_SequenceList_r8 */
+static int hf_rrc_tgp_SequenceList_02 = -1; /* TGP_SequenceList_r10 */
static int hf_rrc_tgps_Reconfiguration_CFN = -1; /* TGPS_Reconfiguration_CFN */
static int hf_rrc_tgp_SequenceShortList = -1; /* SEQUENCE_SIZE_1_maxTGPS_OF_TGP_SequenceShort */
static int hf_rrc_tgp_SequenceShortList_item = -1; /* TGP_SequenceShort */
+static int hf_rrc_tgp_SequenceShortList_01 = -1; /* SEQUENCE_SIZE_1_maxTGPS_OF_TGP_SequenceShort_r10 */
+static int hf_rrc_tgp_SequenceShortList_item_01 = -1; /* TGP_SequenceShort_r10 */
static int hf_rrc_ue_drx_Cycle = -1; /* UE_DRX_Cycle */
static int hf_rrc_ue_drx_Cycle_InactivityThreshold = -1; /* UE_DRX_Cycle_InactivityThreshold */
static int hf_rrc_ue_GrantMonitoring_InactivityThreshold = -1; /* UE_GrantMonitoring_InactivityThreshold */
@@ -4466,25 +4738,25 @@ static int hf_rrc_ueSpecificMidamble = -1; /* INTEGER_0_15 */
static int hf_rrc_midambleConfiguration = -1; /* INTEGER_1_8 */
static int hf_rrc_e_AGCH_ChannelisationCode = -1; /* E_AGCH_ChannelisationCode */
static int hf_rrc_modeSpecific_02 = -1; /* T_modeSpecific_02 */
-static int hf_rrc_fdd_84 = -1; /* T_fdd_83 */
-static int hf_rrc_tdd_44 = -1; /* T_tdd_41 */
-static int hf_rrc_tdd384_17 = -1; /* T_tdd384_16 */
+static int hf_rrc_fdd_87 = -1; /* T_fdd_86 */
+static int hf_rrc_tdd_47 = -1; /* T_tdd_44 */
+static int hf_rrc_tdd384_18 = -1; /* T_tdd384_17 */
static int hf_rrc_long_Term_Grant_Indicator = -1; /* BOOLEAN */
static int hf_rrc_length_of_TTRI_field = -1; /* INTEGER_1_12 */
static int hf_rrc_e_AGCH_Set_Config = -1; /* E_AGCH_Set_Config */
static int hf_rrc_e_AGCH_BLER_Target = -1; /* Bler_Target */
-static int hf_rrc_tdd768_09 = -1; /* T_tdd768_08 */
+static int hf_rrc_tdd768_10 = -1; /* T_tdd768_09 */
static int hf_rrc_e_AGCH_Set_Config_01 = -1; /* E_AGCH_Set_Config_VHCR */
-static int hf_rrc_tdd128_25 = -1; /* T_tdd128_25 */
+static int hf_rrc_tdd128_27 = -1; /* T_tdd128_27 */
static int hf_rrc_rdi_Indicator = -1; /* BOOLEAN */
static int hf_rrc_tpc_StepSize = -1; /* TPC_StepSizeTDD */
static int hf_rrc_e_AGCH_Set_Config_02 = -1; /* E_AGCH_Set_Config_LCR */
static int hf_rrc_modeSpecific_03 = -1; /* T_modeSpecific_03 */
-static int hf_rrc_fdd_85 = -1; /* T_fdd_84 */
-static int hf_rrc_tdd_45 = -1; /* T_tdd_42 */
-static int hf_rrc_tdd384_18 = -1; /* T_tdd384_17 */
-static int hf_rrc_tdd768_10 = -1; /* T_tdd768_09 */
-static int hf_rrc_tdd128_26 = -1; /* T_tdd128_26 */
+static int hf_rrc_fdd_88 = -1; /* T_fdd_87 */
+static int hf_rrc_tdd_48 = -1; /* T_tdd_45 */
+static int hf_rrc_tdd384_19 = -1; /* T_tdd384_18 */
+static int hf_rrc_tdd768_11 = -1; /* T_tdd768_10 */
+static int hf_rrc_tdd128_28 = -1; /* T_tdd128_28 */
static int hf_rrc_E_AGCH_Set_Config_item = -1; /* E_AGCH_Individual */
static int hf_rrc_E_AGCH_Set_Config_VHCR_item = -1; /* E_AGCH_Individual_VHCR */
static int hf_rrc_E_AGCH_Set_Config_LCR_item = -1; /* E_AGCH_Individual_LCR */
@@ -4544,9 +4816,9 @@ static int hf_rrc_channelisationCode = -1; /* E_HICH_ChannelisationCode *
static int hf_rrc_signatureSequence = -1; /* E_HICH_RGCH_SignatureSequence */
static int hf_rrc_n_E_HICH = -1; /* INTEGER_4_44 */
static int hf_rrc_tS_Number = -1; /* INTEGER_0_14 */
-static int hf_rrc_modeSpecificInfo_49 = -1; /* T_modeSpecificInfo_49 */
-static int hf_rrc_tdd384_19 = -1; /* DL_TS_ChannelisationCode */
-static int hf_rrc_tdd768_11 = -1; /* DL_TS_ChannelisationCode_VHCR */
+static int hf_rrc_modeSpecificInfo_52 = -1; /* T_modeSpecificInfo_52 */
+static int hf_rrc_tdd384_20 = -1; /* DL_TS_ChannelisationCode */
+static int hf_rrc_tdd768_12 = -1; /* DL_TS_ChannelisationCode_VHCR */
static int hf_rrc_burst_Type = -1; /* T_burst_Type */
static int hf_rrc_midamble_Allocation_Mode = -1; /* T_midamble_Allocation_Mode */
static int hf_rrc_ei = -1; /* INTEGER_0_3 */
@@ -4561,7 +4833,7 @@ static int hf_rrc_explicit_02 = -1; /* T_explicit_01 */
static int hf_rrc_midambleAllocationMode_02 = -1; /* T_midambleAllocationMode_02 */
static int hf_rrc_signatureSequenceGroupIndex = -1; /* INTEGER_0_19 */
static int hf_rrc_e_TFCS_Info = -1; /* E_TFCS_Info */
-static int hf_rrc_modeSpecificInfo_50 = -1; /* T_modeSpecificInfo_50 */
+static int hf_rrc_modeSpecificInfo_53 = -1; /* T_modeSpecificInfo_53 */
static int hf_rrc_tdd348_tdd768 = -1; /* T_tdd348_tdd768 */
static int hf_rrc_noSlotsForTFCIandTPC = -1; /* INTEGER_1_12 */
static int hf_rrc_e_PUCH_ContantValue = -1; /* INTEGER_M35_10 */
@@ -4571,9 +4843,9 @@ static int hf_rrc_e_PUCH_CodeHopping = -1; /* BOOLEAN */
static int hf_rrc_e_PUCH_TPC_Step_Size = -1; /* INTEGER_1_3 */
static int hf_rrc_minimum_Allowed_Code_Rate = -1; /* INTEGER_0_63 */
static int hf_rrc_maximum_Allowed_Code_Rate = -1; /* INTEGER_0_63 */
-static int hf_rrc_tdd128_27 = -1; /* T_tdd128_27 */
+static int hf_rrc_tdd128_29 = -1; /* T_tdd128_29 */
static int hf_rrc_snpl_ReportType = -1; /* T_snpl_ReportType */
-static int hf_rrc_prxBASEdes = -1; /* INTEGER_M112_M50 */
+static int hf_rrc_prxdes_base = -1; /* INTEGER_M112_M50 */
static int hf_rrc_beaconPLEst_01 = -1; /* BOOLEAN */
static int hf_rrc_pebase_PowerControlGAP = -1; /* PowerControlGAP */
static int hf_rrc_e_PUCH_TS_ConfigurationList_01 = -1; /* SEQUENCE_SIZE_1_maxTS_LCR_1_OF_E_PUCH_TS_Slots_LCR */
@@ -4583,11 +4855,12 @@ static int hf_rrc_retransTimerForSchedInfo = -1; /* T_retransTimerForSchedInfo
static int hf_rrc_snpl_ReportType_01 = -1; /* T_snpl_ReportType_01 */
static int hf_rrc_pebase_PowerControlGAP_01 = -1; /* INTEGER_1_255 */
static int hf_rrc_retransTimerForSchedInfo_01 = -1; /* T_retransTimerForSchedInfo_01 */
-static int hf_rrc_dummy_39 = -1; /* INTEGER_0_6 */
+static int hf_rrc_dummy_43 = -1; /* INTEGER_0_6 */
static int hf_rrc_ts_Number = -1; /* INTEGER_0_14 */
+static int hf_rrc_timeslotNumber_02 = -1; /* INTEGER_1_5 */
static int hf_rrc_midambleAllocationMode_03 = -1; /* T_midambleAllocationMode_03 */
static int hf_rrc_rg_CombinationIndex = -1; /* E_RGCH_CombinationIndex */
-static int hf_rrc_modeSpecificInfo_51 = -1; /* T_modeSpecificInfo_51 */
+static int hf_rrc_modeSpecificInfo_54 = -1; /* T_modeSpecificInfo_54 */
static int hf_rrc_tdd384_tdd768_02 = -1; /* T_tdd384_tdd768_02 */
static int hf_rrc_e_RUCCH_ConstantValue = -1; /* INTEGER_M35_10 */
static int hf_rrc_e_RUCCH_PersistenceScalingFactor = -1; /* PersistenceScalingFactor */
@@ -4596,18 +4869,18 @@ static int hf_rrc_e_RUCCH_TS_Number = -1; /* INTEGER_0_14 */
static int hf_rrc_e_RUCCH_Midamble = -1; /* T_e_RUCCH_Midamble */
static int hf_rrc_t_adv = -1; /* T_t_adv */
static int hf_rrc_t_SCHED = -1; /* T_t_SCHED */
-static int hf_rrc_modeSpecificInfo_52 = -1; /* T_modeSpecificInfo_52 */
-static int hf_rrc_tdd384_20 = -1; /* T_tdd384_18 */
+static int hf_rrc_modeSpecificInfo_55 = -1; /* T_modeSpecificInfo_55 */
+static int hf_rrc_tdd384_21 = -1; /* T_tdd384_19 */
static int hf_rrc_sF16 = -1; /* SEQUENCE_SIZE_1_8_OF_SF16Codes */
static int hf_rrc_sF16_item = -1; /* SF16Codes */
static int hf_rrc_sF8 = -1; /* SEQUENCE_SIZE_1_8_OF_SF8Codes */
static int hf_rrc_sF8_item = -1; /* SF8Codes */
-static int hf_rrc_tdd768_12 = -1; /* T_tdd768_10 */
+static int hf_rrc_tdd768_13 = -1; /* T_tdd768_11 */
static int hf_rrc_sF32 = -1; /* SEQUENCE_SIZE_1_16_OF_SF32Codes */
static int hf_rrc_sF32_item = -1; /* SF32Codes */
static int hf_rrc_sF816 = -1; /* SEQUENCE_SIZE_1_16_OF_SF16Codes2 */
static int hf_rrc_sF816_item = -1; /* SF16Codes2 */
-static int hf_rrc_tdd128_28 = -1; /* T_tdd128_28 */
+static int hf_rrc_tdd128_30 = -1; /* T_tdd128_30 */
static int hf_rrc_t_RUCCH_01 = -1; /* T_t_RUCCH_01 */
static int hf_rrc_n_RUCCH = -1; /* INTEGER_0_7 */
static int hf_rrc_t_WAIT = -1; /* T_t_WAIT */
@@ -4626,10 +4899,10 @@ static int hf_rrc_reference_Beta_QPSK_List = -1; /* SEQUENCE_SIZE_1_8_OF_Refere
static int hf_rrc_reference_Beta_QPSK_List_item = -1; /* Reference_Beta_QPSK */
static int hf_rrc_reference_Beta_16QAM_List = -1; /* SEQUENCE_SIZE_1_8_OF_Reference_Beta_16QAM */
static int hf_rrc_reference_Beta_16QAM_List_item = -1; /* Reference_Beta_16QAM */
-static int hf_rrc_modeSpecificInfo_53 = -1; /* T_modeSpecificInfo_53 */
-static int hf_rrc_tdd384_21 = -1; /* T_tdd384_19 */
+static int hf_rrc_modeSpecificInfo_56 = -1; /* T_modeSpecificInfo_56 */
+static int hf_rrc_tdd384_22 = -1; /* T_tdd384_20 */
static int hf_rrc_ex_ul_TimingAdvance = -1; /* INTEGER_0_255 */
-static int hf_rrc_tdd768_13 = -1; /* T_tdd768_11 */
+static int hf_rrc_tdd768_14 = -1; /* T_tdd768_12 */
static int hf_rrc_ex_ul_TimingAdvance_01 = -1; /* INTEGER_0_511 */
static int hf_rrc_ctch_Indicator = -1; /* BOOLEAN */
static int hf_rrc_FACH_PCH_InformationList_item = -1; /* FACH_PCH_Information */
@@ -4637,9 +4910,10 @@ static int hf_rrc_timeslot_01 = -1; /* TimeslotNumber_LCR_r4 */
static int hf_rrc_channelisationCode_01 = -1; /* TDD_FPACH_CCode16_r4 */
static int hf_rrc_midambleShiftAndBurstType_03 = -1; /* MidambleShiftAndBurstType_LCR_r4 */
static int hf_rrc_wi = -1; /* Wi_LCR */
-static int hf_rrc_modeSpecificInfo_54 = -1; /* T_modeSpecificInfo_54 */
-static int hf_rrc_fdd_86 = -1; /* FrequencyInfoFDD */
-static int hf_rrc_tdd_46 = -1; /* FrequencyInfoTDD */
+static int hf_rrc_FreqIndexListForEnhancedMeas_item = -1; /* FrequencyIndexForEnhancedMeas */
+static int hf_rrc_modeSpecificInfo_57 = -1; /* T_modeSpecificInfo_57 */
+static int hf_rrc_fdd_89 = -1; /* FrequencyInfoFDD */
+static int hf_rrc_tdd_49 = -1; /* FrequencyInfoTDD */
static int hf_rrc_uarfcn_UL = -1; /* UARFCN */
static int hf_rrc_uarfcn_Nt = -1; /* UARFCN */
static int hf_rrc_startCode = -1; /* HS_ChannelisationCode_LCR */
@@ -4687,50 +4961,50 @@ static int hf_rrc_initialTfsIndex = -1; /* INTEGER_0_maxTbsForHSDSCH_T
static int hf_rrc_modulation = -1; /* T_modulation */
static int hf_rrc_hs_sich_Index = -1; /* INTEGER_0_maxHSSICH_TDD128_1 */
static int hf_rrc_midambleAllocationMode_04 = -1; /* T_midambleAllocationMode_04 */
-static int hf_rrc_modeSpecificInfo_55 = -1; /* T_modeSpecificInfo_55 */
-static int hf_rrc_fdd_87 = -1; /* T_fdd_85 */
-static int hf_rrc_tdd_47 = -1; /* T_tdd_43 */
-static int hf_rrc_tdd384_22 = -1; /* T_tdd384_20 */
+static int hf_rrc_modeSpecificInfo_58 = -1; /* T_modeSpecificInfo_58 */
+static int hf_rrc_fdd_90 = -1; /* T_fdd_88 */
+static int hf_rrc_tdd_50 = -1; /* T_tdd_46 */
+static int hf_rrc_tdd384_23 = -1; /* T_tdd384_21 */
static int hf_rrc_nack_ack_power_offset = -1; /* INTEGER_M7_8 */
static int hf_rrc_hs_SICH_PowerControl_Info = -1; /* HS_SICH_Power_Control_Info_TDD384 */
static int hf_rrc_hS_SCCH_SetConfiguration = -1; /* SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD384 */
static int hf_rrc_hS_SCCH_SetConfiguration_item = -1; /* HS_SCCH_TDD384 */
-static int hf_rrc_tdd128_29 = -1; /* SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD128 */
+static int hf_rrc_tdd128_31 = -1; /* SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD128 */
static int hf_rrc_tdd128_item = -1; /* HS_SCCH_TDD128 */
-static int hf_rrc_modeSpecificInfo_56 = -1; /* T_modeSpecificInfo_56 */
-static int hf_rrc_fdd_88 = -1; /* T_fdd_86 */
-static int hf_rrc_tdd_48 = -1; /* T_tdd_44 */
-static int hf_rrc_tdd384_23 = -1; /* T_tdd384_21 */
+static int hf_rrc_modeSpecificInfo_59 = -1; /* T_modeSpecificInfo_59 */
+static int hf_rrc_fdd_91 = -1; /* T_fdd_89 */
+static int hf_rrc_tdd_51 = -1; /* T_tdd_47 */
+static int hf_rrc_tdd384_24 = -1; /* T_tdd384_22 */
static int hf_rrc_bler_target = -1; /* Bler_Target */
static int hf_rrc_hS_SCCH_SetConfiguration_01 = -1; /* SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD384_r6 */
static int hf_rrc_hS_SCCH_SetConfiguration_item_01 = -1; /* HS_SCCH_TDD384_r6 */
-static int hf_rrc_tdd128_30 = -1; /* T_tdd128_29 */
+static int hf_rrc_tdd128_32 = -1; /* T_tdd128_31 */
static int hf_rrc_power_level_HSSICH = -1; /* INTEGER_M120_M58 */
static int hf_rrc_tpc_step_size = -1; /* T_tpc_step_size */
static int hf_rrc_hS_SCCH_SetConfiguration_02 = -1; /* SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD128_r6 */
static int hf_rrc_hS_SCCH_SetConfiguration_item_02 = -1; /* HS_SCCH_TDD128_r6 */
-static int hf_rrc_modeSpecificInfo_57 = -1; /* T_modeSpecificInfo_57 */
-static int hf_rrc_fdd_89 = -1; /* T_fdd_87 */
-static int hf_rrc_tdd_49 = -1; /* T_tdd_45 */
-static int hf_rrc_tdd384_24 = -1; /* T_tdd384_22 */
-static int hf_rrc_tdd768_14 = -1; /* T_tdd768_12 */
+static int hf_rrc_modeSpecificInfo_60 = -1; /* T_modeSpecificInfo_60 */
+static int hf_rrc_fdd_92 = -1; /* T_fdd_90 */
+static int hf_rrc_tdd_52 = -1; /* T_tdd_48 */
+static int hf_rrc_tdd384_25 = -1; /* T_tdd384_23 */
+static int hf_rrc_tdd768_15 = -1; /* T_tdd768_13 */
static int hf_rrc_hs_SICH_PowerControl_Info_01 = -1; /* HS_SICH_Power_Control_Info_TDD768 */
static int hf_rrc_hS_SCCH_SetConfiguration_03 = -1; /* SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD768 */
static int hf_rrc_hS_SCCH_SetConfiguration_item_03 = -1; /* HS_SCCH_TDD768 */
-static int hf_rrc_tdd128_31 = -1; /* T_tdd128_30 */
+static int hf_rrc_tdd128_33 = -1; /* T_tdd128_32 */
static int hf_rrc_tpc_step_size_01 = -1; /* T_tpc_step_size_01 */
static int hf_rrc_powerControlGAP = -1; /* PowerControlGAP */
static int hf_rrc_pathlossCompensationSwitch = -1; /* BOOLEAN */
-static int hf_rrc_modeSpecificInfo_58 = -1; /* T_modeSpecificInfo_58 */
-static int hf_rrc_tdd_50 = -1; /* T_tdd_46 */
-static int hf_rrc_tdd128_32 = -1; /* T_tdd128_31 */
+static int hf_rrc_modeSpecificInfo_61 = -1; /* T_modeSpecificInfo_61 */
+static int hf_rrc_tdd_53 = -1; /* T_tdd_49 */
+static int hf_rrc_tdd128_34 = -1; /* T_tdd128_33 */
static int hf_rrc_hS_SCCH_tpc_step_size = -1; /* T_hS_SCCH_tpc_step_size */
-static int hf_rrc_modeSpecificInfo_59 = -1; /* T_modeSpecificInfo_59 */
-static int hf_rrc_fdd_90 = -1; /* T_fdd_88 */
-static int hf_rrc_tdd_51 = -1; /* T_tdd_47 */
-static int hf_rrc_tdd384_25 = -1; /* T_tdd384_23 */
-static int hf_rrc_tdd768_15 = -1; /* T_tdd768_13 */
-static int hf_rrc_tdd128_33 = -1; /* T_tdd128_32 */
+static int hf_rrc_modeSpecificInfo_62 = -1; /* T_modeSpecificInfo_62 */
+static int hf_rrc_fdd_93 = -1; /* T_fdd_91 */
+static int hf_rrc_tdd_54 = -1; /* T_tdd_50 */
+static int hf_rrc_tdd384_26 = -1; /* T_tdd384_24 */
+static int hf_rrc_tdd768_16 = -1; /* T_tdd768_14 */
+static int hf_rrc_tdd128_35 = -1; /* T_tdd128_34 */
static int hf_rrc_tpc_step_size_02 = -1; /* T_tpc_step_size_02 */
static int hf_rrc_hS_SCCH_tpc_step_size_01 = -1; /* T_hS_SCCH_tpc_step_size_01 */
static int hf_rrc_hS_SCCH_DRX_Cycle = -1; /* ControlChannelDRXCycle_TDD128 */
@@ -4795,13 +5069,13 @@ static int hf_rrc_ss_TPC_Symbols_01 = -1; /* T_ss_TPC_Symbols_01 */
static int hf_rrc_midambleShiftAndBurstType_05 = -1; /* MidambleShiftAndBurstType_r7 */
static int hf_rrc_ul_TimeslotInterference = -1; /* TDD_UL_Interference */
static int hf_rrc_IndividualTS_InterferenceList_item = -1; /* IndividualTS_Interference */
-static int hf_rrc_modeSpecificInfo_60 = -1; /* T_modeSpecificInfo_60 */
-static int hf_rrc_fdd_91 = -1; /* T_fdd_89 */
+static int hf_rrc_modeSpecificInfo_63 = -1; /* T_modeSpecificInfo_63 */
+static int hf_rrc_fdd_94 = -1; /* T_fdd_92 */
static int hf_rrc_feedback_cycle = -1; /* Feedback_cycle */
static int hf_rrc_cqi_RepetitionFactor = -1; /* CQI_RepetitionFactor */
static int hf_rrc_deltaCQI = -1; /* DeltaCQI */
-static int hf_rrc_modeSpecificInfo_61 = -1; /* T_modeSpecificInfo_61 */
-static int hf_rrc_fdd_92 = -1; /* T_fdd_90 */
+static int hf_rrc_modeSpecificInfo_64 = -1; /* T_modeSpecificInfo_64 */
+static int hf_rrc_fdd_95 = -1; /* T_fdd_93 */
static int hf_rrc_feedback_cycle_01 = -1; /* Feedback_cycle_r7 */
static int hf_rrc_burstType_01 = -1; /* T_burstType */
static int hf_rrc_type1_01 = -1; /* T_type1_01 */
@@ -4867,19 +5141,19 @@ static int hf_rrc_mimoOperation = -1; /* MIMO_Operation */
static int hf_rrc_mimoN_M_Ratio = -1; /* MIMO_N_M_Ratio */
static int hf_rrc_mimoPilotConfiguration = -1; /* MIMO_PilotConfiguration */
static int hf_rrc_precodingWeightSetRestriction = -1; /* T_precodingWeightSetRestriction */
-static int hf_rrc_modeSpecificInfo_62 = -1; /* T_modeSpecificInfo_62 */
-static int hf_rrc_fdd_93 = -1; /* T_fdd_91 */
-static int hf_rrc_tdd_52 = -1; /* T_tdd_48 */
-static int hf_rrc_tdd128_34 = -1; /* T_tdd128_33 */
+static int hf_rrc_modeSpecificInfo_65 = -1; /* T_modeSpecificInfo_65 */
+static int hf_rrc_fdd_96 = -1; /* T_fdd_94 */
+static int hf_rrc_tdd_55 = -1; /* T_tdd_51 */
+static int hf_rrc_tdd128_36 = -1; /* T_tdd128_35 */
static int hf_rrc_mimoSFModeForHSPDSCHDualStream = -1; /* T_mimoSFModeForHSPDSCHDualStream */
static int hf_rrc_hs_sich_ReferenceSignalInfoList = -1; /* HS_SICH_ReferenceSignalInfoList */
static int hf_rrc_tdd384_tdd768_03 = -1; /* NULL */
-static int hf_rrc_modeSpecificInfo_63 = -1; /* T_modeSpecificInfo_63 */
-static int hf_rrc_fdd_94 = -1; /* T_fdd_92 */
+static int hf_rrc_modeSpecificInfo_66 = -1; /* T_modeSpecificInfo_66 */
+static int hf_rrc_fdd_97 = -1; /* T_fdd_95 */
static int hf_rrc_mimoPilotConfiguration_01 = -1; /* MIMO_PilotConfiguration_r9 */
static int hf_rrc_precodingWeightSetRestriction_01 = -1; /* T_precodingWeightSetRestriction_01 */
-static int hf_rrc_tdd_53 = -1; /* T_tdd_49 */
-static int hf_rrc_tdd128_35 = -1; /* T_tdd128_34 */
+static int hf_rrc_tdd_56 = -1; /* T_tdd_52 */
+static int hf_rrc_tdd128_37 = -1; /* T_tdd128_36 */
static int hf_rrc_mimoSFModeForHSPDSCHDualStream_01 = -1; /* T_mimoSFModeForHSPDSCHDualStream_01 */
static int hf_rrc_secondCPICH_Pattern = -1; /* T_secondCPICH_Pattern */
static int hf_rrc_normalPattern = -1; /* NULL */
@@ -4891,18 +5165,21 @@ static int hf_rrc_diversityPattern_01 = -1; /* T_diversityPattern_01 */
static int hf_rrc_secondFrequencyInfo = -1; /* FrequencyInfoTDD */
static int hf_rrc_fPachFrequencyInfo = -1; /* FrequencyInfoTDD */
static int hf_rrc_upPCHpositionInfo = -1; /* UpPCHposition_LCR */
+static int hf_rrc_newConfiguration_04 = -1; /* T_newConfiguration_04 */
+static int hf_rrc_mu_MIMO_Operation = -1; /* MU_MIMO_Operation */
+static int hf_rrc_standaloneMidambleInfo = -1; /* StandaloneMidambleInfo_TDD128 */
static int hf_rrc_enablingDelay_01 = -1; /* EnablingDelay */
static int hf_rrc_ue_dtx_drx_Offset = -1; /* UE_DTX_DRX_Offset */
static int hf_rrc_tdd384_768 = -1; /* T_tdd384_768 */
static int hf_rrc_timeslotResourceRelatedInfo_01 = -1; /* BIT_STRING_SIZE_13 */
-static int hf_rrc_tdd128_36 = -1; /* T_tdd128_35 */
+static int hf_rrc_tdd128_38 = -1; /* T_tdd128_37 */
static int hf_rrc_e_HICH_Info_06 = -1; /* T_e_HICH_Info_04 */
static int hf_rrc_midambleAllocationMode_31 = -1; /* T_midambleAllocationMode_31 */
static int hf_rrc_tdd384_768_01 = -1; /* NULL */
-static int hf_rrc_tdd128_37 = -1; /* T_tdd128_36 */
+static int hf_rrc_tdd128_39 = -1; /* T_tdd128_38 */
static int hf_rrc_t_SI_nst = -1; /* T_t_SI_nst */
static int hf_rrc_tdd384_768_02 = -1; /* T_tdd384_768_01 */
-static int hf_rrc_tdd128_38 = -1; /* T_tdd128_37 */
+static int hf_rrc_tdd128_40 = -1; /* T_tdd128_39 */
static int hf_rrc_e_HICH_Info_07 = -1; /* T_e_HICH_Info_05 */
static int hf_rrc_midambleAllocationMode_32 = -1; /* T_midambleAllocationMode_32 */
static int hf_rrc_t_SI_nst_01 = -1; /* T_t_SI_nst_01 */
@@ -4945,15 +5222,15 @@ static int hf_rrc_tfci_Range_01 = -1; /* DSCH_MappingList */
static int hf_rrc_explicit_config_03 = -1; /* PDSCH_CodeInfoList */
static int hf_rrc_replace = -1; /* ReplacedPDSCH_CodeInfoList */
static int hf_rrc_pdsch_TimeslotsCodes = -1; /* DownlinkTimeslotsCodes */
-static int hf_rrc_tddOption_10 = -1; /* T_tddOption_10 */
-static int hf_rrc_tdd384_26 = -1; /* T_tdd384_24 */
-static int hf_rrc_tdd128_39 = -1; /* T_tdd128_38 */
-static int hf_rrc_pdsch_TimeslotsCodes_01 = -1; /* DownlinkTimeslotsCodes_LCR_r4 */
static int hf_rrc_tddOption_11 = -1; /* T_tddOption_11 */
static int hf_rrc_tdd384_27 = -1; /* T_tdd384_25 */
-static int hf_rrc_tdd768_16 = -1; /* T_tdd768_14 */
+static int hf_rrc_tdd128_41 = -1; /* T_tdd128_40 */
+static int hf_rrc_pdsch_TimeslotsCodes_01 = -1; /* DownlinkTimeslotsCodes_LCR_r4 */
+static int hf_rrc_tddOption_12 = -1; /* T_tddOption_12 */
+static int hf_rrc_tdd384_28 = -1; /* T_tdd384_26 */
+static int hf_rrc_tdd768_17 = -1; /* T_tdd768_15 */
static int hf_rrc_pdsch_TimeslotsCodes_02 = -1; /* DownlinkTimeslotsCodes_VHCR */
-static int hf_rrc_tdd128_40 = -1; /* T_tdd128_39 */
+static int hf_rrc_tdd128_42 = -1; /* T_tdd128_41 */
static int hf_rrc_dsch_RadioLinkIdentifier = -1; /* DSCH_RadioLinkIdentifier */
static int hf_rrc_rl_IdentifierList = -1; /* RL_IdentifierList */
static int hf_rrc_dsch_TFCS = -1; /* TFCS */
@@ -4977,17 +5254,17 @@ static int hf_rrc_hs_pdschChannelisationCode = -1; /* INTEGER_1_15 */
static int hf_rrc_implicit_03 = -1; /* T_implicit_02 */
static int hf_rrc_occurrenceSequenceNumberOfPICH = -1; /* OccurrenceSequenceNumberOfPICH */
static int hf_rrc_explicit_04 = -1; /* PICH_Info_LCR_r4 */
-static int hf_rrc_fdd_95 = -1; /* T_fdd_93 */
+static int hf_rrc_fdd_98 = -1; /* T_fdd_96 */
static int hf_rrc_pi_CountPerFrame = -1; /* PI_CountPerFrame */
-static int hf_rrc_tdd_54 = -1; /* T_tdd_50 */
+static int hf_rrc_tdd_57 = -1; /* T_tdd_53 */
static int hf_rrc_channelisationCode_06 = -1; /* TDD_PICH_CCode */
static int hf_rrc_repetitionPeriodLengthOffset = -1; /* RepPerLengthOffset_PICH */
static int hf_rrc_pagingIndicatorLength = -1; /* PagingIndicatorLength */
static int hf_rrc_n_GAP = -1; /* N_GAP */
static int hf_rrc_n_PCH = -1; /* N_PCH */
static int hf_rrc_channelisationCode_07 = -1; /* T_channelisationCode */
-static int hf_rrc_tdd384_28 = -1; /* TDD_PICH_CCode */
-static int hf_rrc_tdd768_17 = -1; /* TDD768_PICH_CCode */
+static int hf_rrc_tdd384_29 = -1; /* TDD_PICH_CCode */
+static int hf_rrc_tdd768_18 = -1; /* TDD768_PICH_CCode */
static int hf_rrc_pichChannelisationCodeList_LCR_r4 = -1; /* PichChannelisationCodeList_LCR_r4 */
static int hf_rrc_plcchSequenceNumber = -1; /* INTEGER_1_14 */
static int hf_rrc_tpcCommandTargetRate = -1; /* TPC_CommandTargetRate */
@@ -5000,11 +5277,11 @@ static int hf_rrc_prach_ChanCodes_LCR = -1; /* PRACH_ChanCodes_LCR_r4 */
static int hf_rrc_fpach_Info = -1; /* FPACH_Info_r4 */
static int hf_rrc_prach_ChanCodes_list_LCR = -1; /* PRACH_ChanCodes_List_LCR */
static int hf_rrc_PRACH_Information_LCR_List_item = -1; /* PRACH_Information_LCR */
-static int hf_rrc_fdd_96 = -1; /* SEQUENCE_SIZE_1_maxASC_OF_ASCSetting_FDD */
+static int hf_rrc_fdd_99 = -1; /* SEQUENCE_SIZE_1_maxASC_OF_ASCSetting_FDD */
static int hf_rrc_fdd_item = -1; /* ASCSetting_FDD */
-static int hf_rrc_tdd_55 = -1; /* SEQUENCE_SIZE_1_maxASC_OF_ASCSetting_TDD */
+static int hf_rrc_tdd_58 = -1; /* SEQUENCE_SIZE_1_maxASC_OF_ASCSetting_TDD */
static int hf_rrc_tdd_item = -1; /* ASCSetting_TDD */
-static int hf_rrc_tdd_56 = -1; /* SEQUENCE_SIZE_1_maxASC_OF_ASCSetting_TDD_r7 */
+static int hf_rrc_tdd_59 = -1; /* SEQUENCE_SIZE_1_maxASC_OF_ASCSetting_TDD_r7 */
static int hf_rrc_tdd_item_01 = -1; /* ASCSetting_TDD_r7 */
static int hf_rrc_PRACH_Partitioning_LCR_r4_item = -1; /* ASCSetting_TDD_LCR_r4 */
static int hf_rrc_powerRampStep = -1; /* PowerRampStep */
@@ -5022,10 +5299,10 @@ static int hf_rrc_prach_PowerOffset = -1; /* PRACH_PowerOffset */
static int hf_rrc_rach_TransmissionParameters = -1; /* RACH_TransmissionParameters */
static int hf_rrc_aich_Info = -1; /* AICH_Info */
static int hf_rrc_powerOffsetPp_e = -1; /* INTEGER_M5_10 */
-static int hf_rrc_modeSpecificInfo_64 = -1; /* T_modeSpecificInfo_64 */
-static int hf_rrc_fdd_97 = -1; /* T_fdd_94 */
+static int hf_rrc_modeSpecificInfo_67 = -1; /* T_modeSpecificInfo_67 */
+static int hf_rrc_fdd_100 = -1; /* T_fdd_97 */
static int hf_rrc_availableSF = -1; /* SF_PRACH */
-static int hf_rrc_tdd_57 = -1; /* T_tdd_51 */
+static int hf_rrc_tdd_60 = -1; /* T_tdd_54 */
static int hf_rrc_channelisationCodeList = -1; /* TDD_PRACH_CCodeList */
static int hf_rrc_prach_Midamble = -1; /* PRACH_Midamble */
static int hf_rrc_channelisationCodeList_01 = -1; /* TDD768_PRACH_CCodeList */
@@ -5037,8 +5314,8 @@ static int hf_rrc_prach_RACH_Info = -1; /* PRACH_RACH_Info */
static int hf_rrc_rach_TransportFormatSet = -1; /* TransportFormatSet */
static int hf_rrc_rach_TFCS = -1; /* TFCS */
static int hf_rrc_prach_Partitioning_01 = -1; /* PRACH_Partitioning */
-static int hf_rrc_modeSpecificInfo_65 = -1; /* T_modeSpecificInfo_65 */
-static int hf_rrc_fdd_98 = -1; /* T_fdd_95 */
+static int hf_rrc_modeSpecificInfo_68 = -1; /* T_modeSpecificInfo_68 */
+static int hf_rrc_fdd_101 = -1; /* T_fdd_98 */
static int hf_rrc_prach_RACH_Info_01 = -1; /* PRACH_RACH_Info_VHCR_r7 */
static int hf_rrc_prach_RACH_Info_LCR = -1; /* PRACH_RACH_Info_LCR_r4 */
static int hf_rrc_rach_TransportFormatSet_LCR = -1; /* TransportFormatSet_LCR */
@@ -5051,22 +5328,22 @@ static int hf_rrc_PRACH_SystemInformationList_LCR_v770ext_item = -1; /* PRACH_S
static int hf_rrc_ul_DPCH_InfoPredef = -1; /* UL_DPCH_InfoPredef */
static int hf_rrc_dl_CommonInformationPredef = -1; /* DL_CommonInformationPredef */
static int hf_rrc_ul_DPCH_InfoPredef_01 = -1; /* UL_DPCH_InfoPredef_v770ext */
-static int hf_rrc_fdd_99 = -1; /* T_fdd_96 */
+static int hf_rrc_fdd_102 = -1; /* T_fdd_99 */
static int hf_rrc_tx_DiversityIndicator = -1; /* BOOLEAN */
-static int hf_rrc_tdd_58 = -1; /* T_tdd_52 */
+static int hf_rrc_tdd_61 = -1; /* T_tdd_55 */
static int hf_rrc_syncCase = -1; /* T_syncCase */
static int hf_rrc_syncCase1 = -1; /* T_syncCase1 */
static int hf_rrc_syncCase2 = -1; /* T_syncCase2 */
static int hf_rrc_timeslotSync2 = -1; /* TimeslotSync2 */
static int hf_rrc_sctd_Indicator = -1; /* BOOLEAN */
-static int hf_rrc_fdd_100 = -1; /* T_fdd_97 */
-static int hf_rrc_tdd_59 = -1; /* T_tdd_53 */
-static int hf_rrc_tddOption_12 = -1; /* T_tddOption_12 */
+static int hf_rrc_fdd_103 = -1; /* T_fdd_100 */
+static int hf_rrc_tdd_62 = -1; /* T_tdd_56 */
+static int hf_rrc_tddOption_13 = -1; /* T_tddOption_13 */
static int hf_rrc_tdd384_tdd768_04 = -1; /* T_tdd384_tdd768_03 */
static int hf_rrc_syncCase_01 = -1; /* T_syncCase_01 */
static int hf_rrc_syncCase1_01 = -1; /* T_syncCase1_01 */
static int hf_rrc_syncCase2_01 = -1; /* T_syncCase2_01 */
-static int hf_rrc_tdd128_41 = -1; /* T_tdd128_40 */
+static int hf_rrc_tdd128_43 = -1; /* T_tdd128_42 */
static int hf_rrc_syncCase_02 = -1; /* T_syncCase_02 */
static int hf_rrc_syncCase1_02 = -1; /* T_syncCase1_02 */
static int hf_rrc_syncCase2_02 = -1; /* T_syncCase2_02 */
@@ -5096,16 +5373,16 @@ static int hf_rrc_old_Configuration_05 = -1; /* T_old_Configuration_05 */
static int hf_rrc_new_Configuration_05 = -1; /* T_new_Configuration_05 */
static int hf_rrc_pusch_Info_02 = -1; /* PUSCH_Info_VHCR */
static int hf_rrc_pusch_TimeslotsCodes = -1; /* UplinkTimeslotsCodes */
-static int hf_rrc_tddOption_13 = -1; /* T_tddOption_13 */
-static int hf_rrc_tdd384_29 = -1; /* T_tdd384_26 */
-static int hf_rrc_tdd128_42 = -1; /* T_tdd128_41 */
+static int hf_rrc_tddOption_14 = -1; /* T_tddOption_14 */
+static int hf_rrc_tdd384_30 = -1; /* T_tdd384_27 */
+static int hf_rrc_tdd128_44 = -1; /* T_tdd128_43 */
static int hf_rrc_pusch_TimeslotsCodes_01 = -1; /* UplinkTimeslotsCodes_LCR_r4 */
static int hf_rrc_pusch_TimeslotsCodes_VHCR = -1; /* UplinkTimeslotsCodes_VHCR */
static int hf_rrc_ul_TargetSIR = -1; /* UL_TargetSIR */
-static int hf_rrc_tddOption_14 = -1; /* T_tddOption_14 */
-static int hf_rrc_tdd128_43 = -1; /* T_tdd128_42 */
static int hf_rrc_tddOption_15 = -1; /* T_tddOption_15 */
-static int hf_rrc_tdd128_44 = -1; /* T_tdd128_43 */
+static int hf_rrc_tdd128_45 = -1; /* T_tdd128_44 */
+static int hf_rrc_tddOption_16 = -1; /* T_tddOption_16 */
+static int hf_rrc_tdd128_46 = -1; /* T_tdd128_45 */
static int hf_rrc_usch_TFCS = -1; /* TFCS */
static int hf_rrc_pusch_Info_VHCR = -1; /* PUSCH_Info_VHCR */
static int hf_rrc_usch_TransportChannelsInfo = -1; /* USCH_TransportChannelsInfo */
@@ -5174,8 +5451,10 @@ static int hf_rrc_dl_dpchInfo_05 = -1; /* T_dl_dpchInfo_05 */
static int hf_rrc_targetCellPreconfigInfo = -1; /* TargetCellPreconfigInfo */
static int hf_rrc_dl_dpchInfo_06 = -1; /* T_dl_dpchInfo_06 */
static int hf_rrc_targetCellPreconfigInfo_01 = -1; /* TargetCellPreconfigInfo_r9 */
-static int hf_rrc_targetCellPreconfigInfo_02 = -1; /* TargetCellPreconfigInfo_v890ext */
-static int hf_rrc_targetCellPreconfigInfo_03 = -1; /* TargetCellPreconfigInfo_v950ext */
+static int hf_rrc_dl_dpchInfo_07 = -1; /* T_dl_dpchInfo_07 */
+static int hf_rrc_targetCellPreconfigInfo_02 = -1; /* TargetCellPreconfigInfo_r10 */
+static int hf_rrc_targetCellPreconfigInfo_03 = -1; /* TargetCellPreconfigInfo_v890ext */
+static int hf_rrc_targetCellPreconfigInfo_04 = -1; /* TargetCellPreconfigInfo_v950ext */
static int hf_rrc_RL_AdditionInformationList_item = -1; /* RL_AdditionInformation */
static int hf_rrc_RL_AdditionInformationList_r6_item = -1; /* RL_AdditionInformation_r6 */
static int hf_rrc_RL_AdditionInformationList_r7_item = -1; /* RL_AdditionInformation_r7 */
@@ -5184,6 +5463,7 @@ static int hf_rrc_RL_AdditionInformationList_r8_item = -1; /* RL_AdditionInform
static int hf_rrc_RL_AdditionInformationList_v890ext_item = -1; /* RL_AdditionInformation_v890ext */
static int hf_rrc_RL_AdditionInformationList_r9_item = -1; /* RL_AdditionInformation_r9 */
static int hf_rrc_RL_AdditionInformationList_v950ext_item = -1; /* RL_AdditionInformation_v950ext */
+static int hf_rrc_RL_AdditionInformationList_r10_item = -1; /* RL_AdditionInformation_r10 */
static int hf_rrc_RL_AdditionInformationList_SecULFreq_item = -1; /* RL_AdditionInformation_SecULFreq */
static int hf_rrc_RL_IdentifierList_item = -1; /* PrimaryCPICH_Info */
static int hf_rrc_RL_RemovalInformationList_item = -1; /* PrimaryCPICH_Info */
@@ -5191,14 +5471,14 @@ static int hf_rrc_RL_RemovalInformationList_SecULFreq_item = -1; /* PrimaryCPIC
static int hf_rrc_SCCPCH_ChannelisationCodeList_item = -1; /* SCCPCH_ChannelisationCode */
static int hf_rrc_SCCPCH_ChannelisationCodeList_VHCR_item = -1; /* SCCPCH_ChannelisationCode_VHCR */
static int hf_rrc_secondaryCCPCH_Info = -1; /* SecondaryCCPCH_Info */
-static int hf_rrc_modeSpecificInfo_66 = -1; /* T_modeSpecificInfo_66 */
-static int hf_rrc_fdd_101 = -1; /* T_fdd_98 */
+static int hf_rrc_modeSpecificInfo_69 = -1; /* T_modeSpecificInfo_69 */
+static int hf_rrc_fdd_104 = -1; /* T_fdd_101 */
static int hf_rrc_fach_PCH_InformationList = -1; /* FACH_PCH_InformationList */
static int hf_rrc_sib_ReferenceListFACH = -1; /* SIB_ReferenceListFACH */
-static int hf_rrc_tdd_60 = -1; /* T_tdd_54 */
+static int hf_rrc_tdd_63 = -1; /* T_tdd_57 */
static int hf_rrc_secondaryCCPCH_Info_01 = -1; /* SecondaryCCPCH_Info_r4 */
-static int hf_rrc_modeSpecificInfo_67 = -1; /* T_modeSpecificInfo_67 */
-static int hf_rrc_fdd_102 = -1; /* T_fdd_99 */
+static int hf_rrc_modeSpecificInfo_70 = -1; /* T_modeSpecificInfo_70 */
+static int hf_rrc_fdd_105 = -1; /* T_fdd_102 */
static int hf_rrc_pich_Info = -1; /* PICH_Info */
static int hf_rrc_secondaryCCPCH_LCR_Extensions = -1; /* SecondaryCCPCH_Info_LCR_r4_ext */
static int hf_rrc_pich_Info_01 = -1; /* PICH_Info_LCR_r4 */
@@ -5215,29 +5495,29 @@ static int hf_rrc_mcch_ConfigurationInfo = -1; /* MBMS_MCCH_ConfigurationInfo
static int hf_rrc_fachCarryingMTCH_List = -1; /* MBMS_FACHCarryingMTCH_List */
static int hf_rrc_fachCarryingMSCH = -1; /* T_fachCarryingMSCH */
static int hf_rrc_msch_transportFormatSet = -1; /* TransportFormatSet */
-static int hf_rrc_dummy_40 = -1; /* MBMS_MSCH_ConfigurationInfo_r6 */
+static int hf_rrc_dummy_44 = -1; /* MBMS_MSCH_ConfigurationInfo_r6 */
static int hf_rrc_secondaryCCPCHInfo_MBMS_01 = -1; /* SecondaryCCPCHInfo_MBMS_r7 */
static int hf_rrc_fachCarryingMCCH_01 = -1; /* T_fachCarryingMCCH_01 */
static int hf_rrc_fachCarryingMSCH_01 = -1; /* T_fachCarryingMSCH_01 */
-static int hf_rrc_modeSpecificInfo_68 = -1; /* T_modeSpecificInfo_68 */
-static int hf_rrc_fdd_103 = -1; /* T_fdd_100 */
+static int hf_rrc_modeSpecificInfo_71 = -1; /* T_modeSpecificInfo_71 */
+static int hf_rrc_fdd_106 = -1; /* T_fdd_103 */
static int hf_rrc_dummy1_03 = -1; /* PCPICH_UsageForChannelEst */
static int hf_rrc_dummy2_08 = -1; /* SecondaryCPICH_Info */
static int hf_rrc_sf_AndCodeNumber_01 = -1; /* SF256_AndCodeNumber */
static int hf_rrc_pilotSymbolExistence = -1; /* BOOLEAN */
static int hf_rrc_timingOffset = -1; /* TimingOffset */
-static int hf_rrc_tdd_61 = -1; /* T_tdd_55 */
+static int hf_rrc_tdd_64 = -1; /* T_tdd_58 */
static int hf_rrc_commonTimeslotInfo_01 = -1; /* CommonTimeslotInfoSCCPCH */
static int hf_rrc_channelisationCode_08 = -1; /* SCCPCH_ChannelisationCodeList */
-static int hf_rrc_modeSpecificInfo_69 = -1; /* T_modeSpecificInfo_69 */
-static int hf_rrc_fdd_104 = -1; /* T_fdd_101 */
-static int hf_rrc_tdd_62 = -1; /* T_tdd_56 */
-static int hf_rrc_tddOption_16 = -1; /* T_tddOption_16 */
-static int hf_rrc_tdd384_30 = -1; /* T_tdd384_27 */
-static int hf_rrc_tdd128_45 = -1; /* T_tdd128_44 */
-static int hf_rrc_modeSpecificInfo_70 = -1; /* T_modeSpecificInfo_70 */
+static int hf_rrc_modeSpecificInfo_72 = -1; /* T_modeSpecificInfo_72 */
+static int hf_rrc_fdd_107 = -1; /* T_fdd_104 */
+static int hf_rrc_tdd_65 = -1; /* T_tdd_59 */
+static int hf_rrc_tddOption_17 = -1; /* T_tddOption_17 */
static int hf_rrc_tdd384_31 = -1; /* T_tdd384_28 */
-static int hf_rrc_tdd768_18 = -1; /* T_tdd768_15 */
+static int hf_rrc_tdd128_47 = -1; /* T_tdd128_46 */
+static int hf_rrc_modeSpecificInfo_73 = -1; /* T_modeSpecificInfo_73 */
+static int hf_rrc_tdd384_32 = -1; /* T_tdd384_29 */
+static int hf_rrc_tdd768_19 = -1; /* T_tdd768_16 */
static int hf_rrc_channelisationCode_09 = -1; /* SCCPCH_ChannelisationCodeList_VHCR */
static int hf_rrc_individualTimeslotLCR_Ext = -1; /* IndividualTimeslotInfo_LCR_r4_ext */
static int hf_rrc_subFrameNumber = -1; /* INTEGER_0_4 */
@@ -5246,29 +5526,31 @@ static int hf_rrc_modulation_03 = -1; /* T_modulation_03 */
static int hf_rrc_modQPSK = -1; /* NULL */
static int hf_rrc_mod16QAM = -1; /* T_mod16QAM */
static int hf_rrc_cpich_SecCCPCH_PowerOffset = -1; /* INTEGER_M11_4 */
-static int hf_rrc_modeSpecificInfo_71 = -1; /* T_modeSpecificInfo_71 */
-static int hf_rrc_fdd_105 = -1; /* T_fdd_102 */
-static int hf_rrc_tdd384_32 = -1; /* T_tdd384_29 */
+static int hf_rrc_modeSpecificInfo_74 = -1; /* T_modeSpecificInfo_74 */
+static int hf_rrc_fdd_108 = -1; /* T_fdd_105 */
+static int hf_rrc_tdd384_33 = -1; /* T_tdd384_30 */
static int hf_rrc_commonTimeslotInfoMBMS = -1; /* CommonTimeslotInfoMBMS */
static int hf_rrc_downlinkTimeslotsCodes = -1; /* DownlinkTimeslotsCodes */
-static int hf_rrc_tdd128_46 = -1; /* T_tdd128_45 */
+static int hf_rrc_tdd128_48 = -1; /* T_tdd128_47 */
static int hf_rrc_downlinkTimeslotsCodes_01 = -1; /* DownlinkTimeslotsCodes_LCR_r4 */
-static int hf_rrc_modeSpecificInfo_72 = -1; /* T_modeSpecificInfo_72 */
-static int hf_rrc_fdd_106 = -1; /* T_fdd_103 */
+static int hf_rrc_modeSpecificInfo_75 = -1; /* T_modeSpecificInfo_75 */
+static int hf_rrc_fdd_109 = -1; /* T_fdd_106 */
static int hf_rrc_modulation_04 = -1; /* T_modulation_04 */
static int hf_rrc_mod16QAM_01 = -1; /* INTEGER_M11_4 */
-static int hf_rrc_tdd384_33 = -1; /* T_tdd384_30 */
+static int hf_rrc_tdd384_34 = -1; /* T_tdd384_31 */
static int hf_rrc_downlinkTimeslotsCodes_02 = -1; /* DownlinkTimeslotsCodes_r7 */
static int hf_rrc_modulation_05 = -1; /* T_modulation_05 */
-static int hf_rrc_tdd768_19 = -1; /* T_tdd768_16 */
+static int hf_rrc_tdd768_20 = -1; /* T_tdd768_17 */
static int hf_rrc_downlinkTimeslotsCodes_03 = -1; /* DownlinkTimeslotsCodes_VHCR */
static int hf_rrc_modulation_06 = -1; /* T_modulation_06 */
-static int hf_rrc_tdd128_47 = -1; /* T_tdd128_46 */
+static int hf_rrc_tdd128_49 = -1; /* T_tdd128_48 */
static int hf_rrc_mbsfnSpecialTimeSlot = -1; /* TimeSlotLCR_ext */
static int hf_rrc_modulation_07 = -1; /* T_modulation_07 */
static int hf_rrc_secondaryDL_ScramblingCode = -1; /* SecondaryScramblingCode */
-static int hf_rrc_newConfiguration_03 = -1; /* T_newConfiguration_03 */
+static int hf_rrc_newConfiguration_05 = -1; /* T_newConfiguration_05 */
static int hf_rrc_precodingWeightSetRestriction_02 = -1; /* T_precodingWeightSetRestriction_02 */
+static int hf_rrc_newConfiguration_06 = -1; /* T_newConfiguration_06 */
+static int hf_rrc_precodingWeightSetRestriction_03 = -1; /* T_precodingWeightSetRestriction_03 */
static int hf_rrc_servingCellChangeMACreset = -1; /* ServingCellChangeMACreset */
static int hf_rrc_servingCellChangeMsgType = -1; /* ServingCellChangeMsgType */
static int hf_rrc_servingCellChangeTrId = -1; /* ServingCellChangeTrId */
@@ -5295,6 +5577,9 @@ static int hf_rrc_hs_dsch_SPS_Info = -1; /* HS_DSCH_SPS_Information_TDD
static int hf_rrc_s_Field = -1; /* S_Field */
static int hf_rrc_codeWordSet = -1; /* CodeWordSet */
static int hf_rrc_ssdt_UL_r4 = -1; /* SSDT_UL */
+static int hf_rrc_timeSlotInformation = -1; /* BIT_STRING_SIZE_5 */
+static int hf_rrc_repetitionPeriod = -1; /* T_repetitionPeriod */
+static int hf_rrc_referenceBeta = -1; /* INTEGER_M15_16 */
static int hf_rrc_sync_UL_CodesBitmap = -1; /* T_sync_UL_CodesBitmap */
static int hf_rrc_prxUpPCHdes = -1; /* INTEGER_0_62 */
static int hf_rrc_sync_UL_Procedure = -1; /* SYNC_UL_Procedure_r4 */
@@ -5323,10 +5608,17 @@ static int hf_rrc_tgps_ConfigurationParams = -1; /* TGPS_ConfigurationParams */
static int hf_rrc_tgps_Status_01 = -1; /* T_tgps_Status_01 */
static int hf_rrc_activate_01 = -1; /* T_activate_01 */
static int hf_rrc_tgps_ConfigurationParams_01 = -1; /* TGPS_ConfigurationParams_r8 */
-static int hf_rrc_TGP_SequenceList_item = -1; /* TGP_Sequence */
-static int hf_rrc_TGP_SequenceList_r8_item = -1; /* TGP_Sequence_r8 */
static int hf_rrc_tgps_Status_02 = -1; /* T_tgps_Status_02 */
static int hf_rrc_activate_02 = -1; /* T_activate_02 */
+static int hf_rrc_tgps_ConfigurationParams_02 = -1; /* TGPS_ConfigurationParams_r10 */
+static int hf_rrc_TGP_SequenceList_item = -1; /* TGP_Sequence */
+static int hf_rrc_TGP_SequenceList_r8_item = -1; /* TGP_Sequence_r8 */
+static int hf_rrc_TGP_SequenceList_r10_item = -1; /* TGP_Sequence_r10 */
+static int hf_rrc_tgps_Status_03 = -1; /* T_tgps_Status_03 */
+static int hf_rrc_activate_03 = -1; /* T_activate_03 */
+static int hf_rrc_tgps_Status_04 = -1; /* T_tgps_Status_04 */
+static int hf_rrc_activate_04 = -1; /* T_activate_04 */
+static int hf_rrc_freqSpecificCompressedMode_01 = -1; /* T_freqSpecificCompressedMode_01 */
static int hf_rrc_tgmp = -1; /* TGMP */
static int hf_rrc_tgprc = -1; /* TGPRC */
static int hf_rrc_tgsn = -1; /* TGSN */
@@ -5334,7 +5626,7 @@ static int hf_rrc_tgl1 = -1; /* TGL */
static int hf_rrc_tgl2 = -1; /* TGL */
static int hf_rrc_tgd = -1; /* TGD */
static int hf_rrc_tgpl1 = -1; /* TGPL */
-static int hf_rrc_dummy_41 = -1; /* TGPL */
+static int hf_rrc_dummy_45 = -1; /* TGPL */
static int hf_rrc_rpp = -1; /* RPP */
static int hf_rrc_itp = -1; /* ITP */
static int hf_rrc_ul_DL_Mode = -1; /* UL_DL_Mode */
@@ -5346,11 +5638,12 @@ static int hf_rrc_deltaSIRAfter2 = -1; /* DeltaSIR */
static int hf_rrc_nidentifyAbort = -1; /* NidentifyAbort */
static int hf_rrc_treconfirmAbort = -1; /* TreconfirmAbort */
static int hf_rrc_tgmp_01 = -1; /* TGMP_r8 */
+static int hf_rrc_freqSpecificCompressedMode_02 = -1; /* T_freqSpecificCompressedMode_02 */
static int hf_rrc_durationTimeInfo = -1; /* DurationTimeInfo */
static int hf_rrc_TimeslotList_item = -1; /* TimeslotNumber */
-static int hf_rrc_tdd384_34 = -1; /* SEQUENCE_SIZE_1_maxTS_OF_TimeslotNumber */
+static int hf_rrc_tdd384_35 = -1; /* SEQUENCE_SIZE_1_maxTS_OF_TimeslotNumber */
static int hf_rrc_tdd384_item = -1; /* TimeslotNumber */
-static int hf_rrc_tdd128_48 = -1; /* SEQUENCE_SIZE_1_maxTS_LCR_OF_TimeslotNumber_LCR_r4 */
+static int hf_rrc_tdd128_50 = -1; /* SEQUENCE_SIZE_1_maxTS_LCR_OF_TimeslotNumber_LCR_r4 */
static int hf_rrc_tdd128_item_01 = -1; /* TimeslotNumber_LCR_r4 */
static int hf_rrc_timing = -1; /* T_timing */
static int hf_rrc_newTiming = -1; /* NewTiming */
@@ -5359,22 +5652,22 @@ static int hf_rrc_ul_16QAM_Settings = -1; /* UL_16QAM_Settings */
static int hf_rrc_mac_es_e_resetIndicator = -1; /* T_mac_es_e_resetIndicator */
static int hf_rrc_beta_Ed_Gain_E_AGCH_Table_Selection = -1; /* INTEGER_0_1 */
static int hf_rrc_ul_CCTrCH_TimeslotsCodes = -1; /* UplinkTimeslotsCodes */
-static int hf_rrc_tddOption_17 = -1; /* T_tddOption_17 */
-static int hf_rrc_tdd384_35 = -1; /* T_tdd384_31 */
-static int hf_rrc_tdd128_49 = -1; /* T_tdd128_47 */
-static int hf_rrc_ul_CCTrCH_TimeslotsCodes_01 = -1; /* UplinkTimeslotsCodes_LCR_r4 */
static int hf_rrc_tddOption_18 = -1; /* T_tddOption_18 */
static int hf_rrc_tdd384_36 = -1; /* T_tdd384_32 */
-static int hf_rrc_tdd768_20 = -1; /* T_tdd768_17 */
+static int hf_rrc_tdd128_51 = -1; /* T_tdd128_49 */
+static int hf_rrc_ul_CCTrCH_TimeslotsCodes_01 = -1; /* UplinkTimeslotsCodes_LCR_r4 */
+static int hf_rrc_tddOption_19 = -1; /* T_tddOption_19 */
+static int hf_rrc_tdd384_37 = -1; /* T_tdd384_33 */
+static int hf_rrc_tdd768_21 = -1; /* T_tdd768_18 */
static int hf_rrc_ul_CCTrCH_TimeslotsCodes_02 = -1; /* UplinkTimeslotsCodes_VHCR */
-static int hf_rrc_tdd128_50 = -1; /* T_tdd128_48 */
+static int hf_rrc_tdd128_52 = -1; /* T_tdd128_50 */
static int hf_rrc_ul_CCTrCH_TimeslotsCodes_03 = -1; /* UplinkTimeslotsCodes_LCR_r7 */
static int hf_rrc_UL_CCTrCHList_item = -1; /* UL_CCTrCH */
static int hf_rrc_UL_CCTrCHList_r4_item = -1; /* UL_CCTrCH_r4 */
static int hf_rrc_UL_CCTrCHList_r7_item = -1; /* UL_CCTrCH_r7 */
static int hf_rrc_UL_CCTrCHListToRemove_item = -1; /* TFCS_IdentityPlain */
static int hf_rrc_UL_CCTrChTPCList_item = -1; /* TFCS_Identity */
-static int hf_rrc_dummy_42 = -1; /* CPCH_SetInfo */
+static int hf_rrc_dummy_46 = -1; /* CPCH_SetInfo */
static int hf_rrc_dummy1_04 = -1; /* CPCH_SetInfo */
static int hf_rrc_dummy2_09 = -1; /* CPCH_SetID */
static int hf_rrc_ul = -1; /* UL_CompressedModeMethod */
@@ -5382,36 +5675,36 @@ static int hf_rrc_dl = -1; /* DL_CompressedModeMethod */
static int hf_rrc_ul_and_dl = -1; /* T_ul_and_dl */
static int hf_rrc_ul_DPCCHscramblingCodeType = -1; /* ScramblingCodeType */
static int hf_rrc_ul_DPCCHscramblingCode = -1; /* UL_ScramblingCode */
-static int hf_rrc_modeSpecificInfo_73 = -1; /* T_modeSpecificInfo_73 */
-static int hf_rrc_fdd_107 = -1; /* T_fdd_104 */
+static int hf_rrc_modeSpecificInfo_76 = -1; /* T_modeSpecificInfo_76 */
+static int hf_rrc_fdd_110 = -1; /* T_fdd_107 */
static int hf_rrc_scramblingCode = -1; /* UL_ScramblingCode */
static int hf_rrc_numberOfDPDCH = -1; /* NumberOfDPDCH */
static int hf_rrc_spreadingFactor_01 = -1; /* SpreadingFactor */
static int hf_rrc_numberOfFBI_Bits = -1; /* NumberOfFBI_Bits */
-static int hf_rrc_tdd_63 = -1; /* T_tdd_57 */
+static int hf_rrc_tdd_66 = -1; /* T_tdd_60 */
static int hf_rrc_ul_CCTrCHList = -1; /* UL_CCTrCHList */
static int hf_rrc_ul_CCTrCHListToRemove = -1; /* UL_CCTrCHListToRemove */
-static int hf_rrc_modeSpecificInfo_74 = -1; /* T_modeSpecificInfo_74 */
-static int hf_rrc_fdd_108 = -1; /* T_fdd_105 */
-static int hf_rrc_tdd_64 = -1; /* T_tdd_58 */
+static int hf_rrc_modeSpecificInfo_77 = -1; /* T_modeSpecificInfo_77 */
+static int hf_rrc_fdd_111 = -1; /* T_fdd_108 */
+static int hf_rrc_tdd_67 = -1; /* T_tdd_61 */
static int hf_rrc_ul_CCTrCHList_01 = -1; /* UL_CCTrCHList_r4 */
-static int hf_rrc_modeSpecificInfo_75 = -1; /* T_modeSpecificInfo_75 */
-static int hf_rrc_fdd_109 = -1; /* T_fdd_106 */
-static int hf_rrc_tdd_65 = -1; /* T_tdd_59 */
+static int hf_rrc_modeSpecificInfo_78 = -1; /* T_modeSpecificInfo_78 */
+static int hf_rrc_fdd_112 = -1; /* T_fdd_109 */
+static int hf_rrc_tdd_68 = -1; /* T_tdd_62 */
static int hf_rrc_ul_DPCH_PowerControlInfo_04 = -1; /* UL_DPCH_PowerControlInfo_r6 */
-static int hf_rrc_modeSpecificInfo_76 = -1; /* T_modeSpecificInfo_76 */
-static int hf_rrc_fdd_110 = -1; /* T_fdd_107 */
+static int hf_rrc_modeSpecificInfo_79 = -1; /* T_modeSpecificInfo_79 */
+static int hf_rrc_fdd_113 = -1; /* T_fdd_110 */
static int hf_rrc_dpdchPresence = -1; /* T_dpdchPresence */
static int hf_rrc_present_04 = -1; /* T_present_02 */
static int hf_rrc_notPresent = -1; /* T_notPresent */
-static int hf_rrc_tdd_66 = -1; /* T_tdd_60 */
-static int hf_rrc_modeSpecificInfo_77 = -1; /* T_modeSpecificInfo_77 */
-static int hf_rrc_fdd_111 = -1; /* T_fdd_108 */
+static int hf_rrc_tdd_69 = -1; /* T_tdd_63 */
+static int hf_rrc_modeSpecificInfo_80 = -1; /* T_modeSpecificInfo_80 */
+static int hf_rrc_fdd_114 = -1; /* T_fdd_111 */
static int hf_rrc_dpdchPresence_01 = -1; /* T_dpdchPresence_01 */
static int hf_rrc_present_05 = -1; /* T_present_03 */
static int hf_rrc_numberOfTPC_Bits = -1; /* NumberOfTPC_Bits */
static int hf_rrc_notPresent_01 = -1; /* T_notPresent_01 */
-static int hf_rrc_tdd_67 = -1; /* T_tdd_61 */
+static int hf_rrc_tdd_70 = -1; /* T_tdd_64 */
static int hf_rrc_ul_CCTrCHList_02 = -1; /* UL_CCTrCHList_r7 */
static int hf_rrc_ul_DPCH_PowerControlInfo_05 = -1; /* UL_DPCH_PowerControlInfoPostFDD */
static int hf_rrc_reducedScramblingCodeNumber = -1; /* ReducedScramblingCodeNumber */
@@ -5419,92 +5712,102 @@ static int hf_rrc_ul_DPCH_PowerControlInfo_06 = -1; /* UL_DPCH_PowerControlInfo
static int hf_rrc_ul_DPCH_PowerControlInfo_07 = -1; /* UL_DPCH_PowerControlInfoPostTDD_LCR_r4 */
static int hf_rrc_ul_TimingAdvance_04 = -1; /* UL_TimingAdvanceControl_LCR_r4 */
static int hf_rrc_ul_DPCH_PowerControlInfo_08 = -1; /* UL_DPCH_PowerControlInfoPredef */
-static int hf_rrc_modeSpecificInfo_78 = -1; /* T_modeSpecificInfo_78 */
-static int hf_rrc_fdd_112 = -1; /* T_fdd_109 */
-static int hf_rrc_tdd_68 = -1; /* T_tdd_62 */
-static int hf_rrc_modeSpecificInfo_79 = -1; /* T_modeSpecificInfo_79 */
-static int hf_rrc_fdd_113 = -1; /* T_fdd_110 */
-static int hf_rrc_fdd_114 = -1; /* T_fdd_111 */
+static int hf_rrc_modeSpecificInfo_81 = -1; /* T_modeSpecificInfo_81 */
+static int hf_rrc_fdd_115 = -1; /* T_fdd_112 */
+static int hf_rrc_tdd_71 = -1; /* T_tdd_65 */
+static int hf_rrc_modeSpecificInfo_82 = -1; /* T_modeSpecificInfo_82 */
+static int hf_rrc_fdd_116 = -1; /* T_fdd_113 */
+static int hf_rrc_fdd_117 = -1; /* T_fdd_114 */
static int hf_rrc_dpcch_PowerOffset = -1; /* DPCCH_PowerOffset */
static int hf_rrc_sRB_delay = -1; /* SRB_delay */
-static int hf_rrc_tdd_69 = -1; /* T_tdd_63 */
+static int hf_rrc_tdd_72 = -1; /* T_tdd_66 */
static int hf_rrc_ul_OL_PC_Signalling = -1; /* T_ul_OL_PC_Signalling */
static int hf_rrc_broadcast_UL_OL_PC_info = -1; /* NULL */
static int hf_rrc_individuallySignalled = -1; /* T_individuallySignalled */
static int hf_rrc_individualTS_InterferenceList = -1; /* IndividualTS_InterferenceList */
-static int hf_rrc_fdd_115 = -1; /* T_fdd_112 */
-static int hf_rrc_tdd_70 = -1; /* T_tdd_64 */
+static int hf_rrc_fdd_118 = -1; /* T_fdd_115 */
+static int hf_rrc_tdd_73 = -1; /* T_tdd_67 */
static int hf_rrc_ul_OL_PC_Signalling_01 = -1; /* T_ul_OL_PC_Signalling_01 */
static int hf_rrc_individuallySignalled_01 = -1; /* T_individuallySignalled_01 */
-static int hf_rrc_tddOption_19 = -1; /* T_tddOption_19 */
-static int hf_rrc_tdd384_37 = -1; /* T_tdd384_33 */
+static int hf_rrc_tddOption_20 = -1; /* T_tddOption_20 */
+static int hf_rrc_tdd384_38 = -1; /* T_tdd384_34 */
static int hf_rrc_dpch_ConstantValue_01 = -1; /* ConstantValue */
-static int hf_rrc_tdd128_51 = -1; /* T_tdd128_49 */
-static int hf_rrc_fdd_116 = -1; /* T_fdd_113 */
+static int hf_rrc_tdd128_53 = -1; /* T_tdd128_51 */
+static int hf_rrc_fdd_119 = -1; /* T_fdd_116 */
static int hf_rrc_ack_NACK_repetition_factor = -1; /* ACK_NACK_repetitionFactor */
-static int hf_rrc_tdd_71 = -1; /* T_tdd_65 */
+static int hf_rrc_tdd_74 = -1; /* T_tdd_68 */
static int hf_rrc_ul_OL_PC_Signalling_02 = -1; /* T_ul_OL_PC_Signalling_02 */
static int hf_rrc_individuallySignalled_02 = -1; /* T_individuallySignalled_02 */
-static int hf_rrc_tddOption_20 = -1; /* T_tddOption_20 */
-static int hf_rrc_tdd384_38 = -1; /* T_tdd384_34 */
-static int hf_rrc_tdd128_52 = -1; /* T_tdd128_50 */
-static int hf_rrc_fdd_117 = -1; /* T_fdd_114 */
-static int hf_rrc_tdd_72 = -1; /* T_tdd_66 */
-static int hf_rrc_ul_OL_PC_Signalling_03 = -1; /* T_ul_OL_PC_Signalling_03 */
-static int hf_rrc_individuallySignalled_03 = -1; /* T_individuallySignalled_03 */
static int hf_rrc_tddOption_21 = -1; /* T_tddOption_21 */
static int hf_rrc_tdd384_39 = -1; /* T_tdd384_35 */
-static int hf_rrc_tdd128_53 = -1; /* T_tdd128_51 */
-static int hf_rrc_fdd_118 = -1; /* T_fdd_115 */
-static int hf_rrc_tdd_73 = -1; /* T_tdd_67 */
-static int hf_rrc_ul_OL_PC_Signalling_04 = -1; /* T_ul_OL_PC_Signalling_04 */
-static int hf_rrc_individuallySignalled_04 = -1; /* T_individuallySignalled_04 */
+static int hf_rrc_tdd128_54 = -1; /* T_tdd128_52 */
+static int hf_rrc_fdd_120 = -1; /* T_fdd_117 */
+static int hf_rrc_tdd_75 = -1; /* T_tdd_69 */
+static int hf_rrc_ul_OL_PC_Signalling_03 = -1; /* T_ul_OL_PC_Signalling_03 */
+static int hf_rrc_individuallySignalled_03 = -1; /* T_individuallySignalled_03 */
static int hf_rrc_tddOption_22 = -1; /* T_tddOption_22 */
static int hf_rrc_tdd384_40 = -1; /* T_tdd384_36 */
-static int hf_rrc_tdd768_21 = -1; /* T_tdd768_18 */
-static int hf_rrc_tdd128_54 = -1; /* T_tdd128_52 */
+static int hf_rrc_tdd128_55 = -1; /* T_tdd128_53 */
+static int hf_rrc_fdd_121 = -1; /* T_fdd_118 */
+static int hf_rrc_tdd_76 = -1; /* T_tdd_70 */
+static int hf_rrc_ul_OL_PC_Signalling_04 = -1; /* T_ul_OL_PC_Signalling_04 */
+static int hf_rrc_individuallySignalled_04 = -1; /* T_individuallySignalled_04 */
+static int hf_rrc_tddOption_23 = -1; /* T_tddOption_23 */
+static int hf_rrc_tdd384_41 = -1; /* T_tdd384_37 */
+static int hf_rrc_tdd768_22 = -1; /* T_tdd768_19 */
+static int hf_rrc_tdd128_56 = -1; /* T_tdd128_54 */
static int hf_rrc_dpcch_PowerOffset_01 = -1; /* DPCCH_PowerOffset2 */
-static int hf_rrc_fdd_119 = -1; /* T_fdd_116 */
-static int hf_rrc_tdd_74 = -1; /* T_tdd_68 */
-static int hf_rrc_tdd_75 = -1; /* T_tdd_69 */
+static int hf_rrc_fdd_122 = -1; /* T_fdd_119 */
+static int hf_rrc_tdd_77 = -1; /* T_tdd_71 */
+static int hf_rrc_tdd_78 = -1; /* T_tdd_72 */
static int hf_rrc_non_ScheduledTransGrantInfo_02 = -1; /* Non_ScheduledTransGrantInfoTDD_ext */
static int hf_rrc_mac_es_e_resetIndicator_01 = -1; /* T_mac_es_e_resetIndicator_01 */
static int hf_rrc_e_DPCCH_Info = -1; /* E_DPCCH_Info */
static int hf_rrc_e_DPDCH_Info = -1; /* E_DPDCH_Info */
static int hf_rrc_schedulingTransmConfiguration = -1; /* E_DPDCH_SchedulingTransmConfiguration */
static int hf_rrc_mac_es_e_resetIndicator_02 = -1; /* T_mac_es_e_resetIndicator_02 */
-static int hf_rrc_modeSpecificInfo_80 = -1; /* T_modeSpecificInfo_80 */
-static int hf_rrc_fdd_120 = -1; /* T_fdd_117 */
+static int hf_rrc_modeSpecificInfo_83 = -1; /* T_modeSpecificInfo_83 */
+static int hf_rrc_fdd_123 = -1; /* T_fdd_120 */
static int hf_rrc_e_DPCCH_Info_01 = -1; /* E_DPCCH_Info_r7 */
static int hf_rrc_e_DPDCH_Info_01 = -1; /* E_DPDCH_Info_r7 */
-static int hf_rrc_tdd_76 = -1; /* T_tdd_70 */
+static int hf_rrc_tdd_79 = -1; /* T_tdd_73 */
static int hf_rrc_e_RUCCH_Info_01 = -1; /* E_RUCCH_Info */
static int hf_rrc_e_PUCH_Info_01 = -1; /* E_PUCH_Info */
static int hf_rrc_non_ScheduledTransGrantInfo_03 = -1; /* Non_ScheduledTransGrantInfoTDD */
static int hf_rrc_mac_es_e_resetIndicator_03 = -1; /* T_mac_es_e_resetIndicator_03 */
-static int hf_rrc_modeSpecificInfo_81 = -1; /* T_modeSpecificInfo_81 */
-static int hf_rrc_fdd_121 = -1; /* T_fdd_118 */
+static int hf_rrc_modeSpecificInfo_84 = -1; /* T_modeSpecificInfo_84 */
+static int hf_rrc_fdd_124 = -1; /* T_fdd_121 */
static int hf_rrc_e_DPDCH_Info_02 = -1; /* E_DPDCH_Info_r8 */
-static int hf_rrc_tdd_77 = -1; /* T_tdd_71 */
+static int hf_rrc_tdd_80 = -1; /* T_tdd_74 */
static int hf_rrc_mac_es_e_resetIndicator_04 = -1; /* T_mac_es_e_resetIndicator_04 */
-static int hf_rrc_modeSpecificInfo_82 = -1; /* T_modeSpecificInfo_82 */
-static int hf_rrc_fdd_122 = -1; /* T_fdd_119 */
-static int hf_rrc_tdd_78 = -1; /* T_tdd_72 */
+static int hf_rrc_modeSpecificInfo_85 = -1; /* T_modeSpecificInfo_85 */
+static int hf_rrc_fdd_125 = -1; /* T_fdd_122 */
+static int hf_rrc_tdd_81 = -1; /* T_tdd_75 */
static int hf_rrc_non_ScheduledTransGrantInfo_04 = -1; /* Non_ScheduledTransGrantInfoTDD_r9 */
+static int hf_rrc_e_PUCH_info = -1; /* E_PUCH_Info_MulticarrierEDCH_TDD128 */
+static int hf_rrc_e_AGCH_info = -1; /* E_AGCH_Information_TDD128 */
+static int hf_rrc_e_HICH_info = -1; /* E_HICH_Information_TDD128 */
+static int hf_rrc_UL_MulticarrierEDCH_Infolist_TDD128_item = -1; /* UL_MulticarrierEDCH_InfolistItem_TDD128 */
+static int hf_rrc_UL_MulticarrierEDCH_Deletelist_TDD128_item = -1; /* UARFCN */
+static int hf_rrc_configuration_info = -1; /* T_configuration_info */
+static int hf_rrc_newConfiguration_07 = -1; /* UL_MulticarrierEDCH_NewConfigurationInfo_TDD128 */
+static int hf_rrc_tsn_Length_01 = -1; /* T_tsn_Length_01 */
+static int hf_rrc_ul_MulticarrierEDCH_Infolist = -1; /* UL_MulticarrierEDCH_Infolist_TDD128 */
+static int hf_rrc_ul_MulticarrierEDCH_Deletelist = -1; /* UL_MulticarrierEDCH_Deletelist_TDD128 */
static int hf_rrc_stepSize = -1; /* INTEGER_1_8 */
static int hf_rrc_frequency = -1; /* INTEGER_1_8 */
static int hf_rrc_disabled = -1; /* NULL */
static int hf_rrc_enabled = -1; /* T_enabled */
static int hf_rrc_enabled_01 = -1; /* T_enabled_01 */
-static int hf_rrc_tddOption_23 = -1; /* T_tddOption_23 */
-static int hf_rrc_tdd384_41 = -1; /* T_tdd384_37 */
-static int hf_rrc_tdd128_55 = -1; /* T_tdd128_53 */
-static int hf_rrc_synchronisationParameters = -1; /* SynchronisationParameters_r4 */
-static int hf_rrc_enabled_02 = -1; /* T_enabled_02 */
static int hf_rrc_tddOption_24 = -1; /* T_tddOption_24 */
static int hf_rrc_tdd384_42 = -1; /* T_tdd384_38 */
-static int hf_rrc_tdd768_22 = -1; /* T_tdd768_19 */
-static int hf_rrc_tdd128_56 = -1; /* T_tdd128_54 */
+static int hf_rrc_tdd128_57 = -1; /* T_tdd128_55 */
+static int hf_rrc_synchronisationParameters = -1; /* SynchronisationParameters_r4 */
+static int hf_rrc_enabled_02 = -1; /* T_enabled_02 */
+static int hf_rrc_tddOption_25 = -1; /* T_tddOption_25 */
+static int hf_rrc_tdd384_43 = -1; /* T_tdd384_39 */
+static int hf_rrc_tdd768_23 = -1; /* T_tdd768_20 */
+static int hf_rrc_tdd128_58 = -1; /* T_tdd128_56 */
static int hf_rrc_enabled_03 = -1; /* T_enabled_03 */
static int hf_rrc_UL_TS_ChannelisationCodeList_item = -1; /* UL_TS_ChannelisationCode */
static int hf_rrc_UL_TS_ChannelisationCodeList_r7_item = -1; /* UL_TS_ChannelisationCodeList_r7_item */
@@ -5557,7 +5860,11 @@ static int hf_rrc_integerCodePhase = -1; /* INTEGER_0_19 */
static int hf_rrc_gps_BitNumber = -1; /* INTEGER_0_3 */
static int hf_rrc_codePhaseSearchWindow = -1; /* CodePhaseSearchWindow */
static int hf_rrc_azimuthAndElevation = -1; /* AzimuthAndElevation */
+static int hf_rrc_azimuthAndElevation_01 = -1; /* AzimuthAndElevation_va40ext */
+static int hf_rrc_azimuthAndElevation_02 = -1; /* AzimuthAndElevation_r10 */
static int hf_rrc_AcquisitionSatInfoList_item = -1; /* AcquisitionSatInfo */
+static int hf_rrc_AcquisitionSatInfoList_va40ext_item = -1; /* AcquisitionSatInfo_va40ext */
+static int hf_rrc_AcquisitionSatInfoList_r10_item = -1; /* AcquisitionSatInfo_r10 */
static int hf_rrc_AdditionalMeasurementID_List_item = -1; /* MeasurementIdentity */
static int hf_rrc_AdditionalMeasurementID_List_r9_item = -1; /* MeasurementIdentity_r9 */
static int hf_rrc_dataID = -1; /* INTEGER_0_3 */
@@ -5588,6 +5895,8 @@ static int hf_rrc_AuxInfoGANSS_ID3_item = -1; /* AuxInfoGANSS_ID3_element */
static int hf_rrc_channelNumber = -1; /* INTEGER_M7_13 */
static int hf_rrc_azimuth = -1; /* INTEGER_0_31 */
static int hf_rrc_elevation = -1; /* INTEGER_0_7 */
+static int hf_rrc_azimuthLSB = -1; /* INTEGER_0_15 */
+static int hf_rrc_elevationLSB = -1; /* INTEGER_0_15 */
static int hf_rrc_BadSatList_item = -1; /* INTEGER_0_63 */
static int hf_rrc_dl_TransportChannelBLER = -1; /* DL_TransportChannelBLER */
static int hf_rrc_BLER_MeasurementResultsList_item = -1; /* BLER_MeasurementResults */
@@ -5608,102 +5917,102 @@ static int hf_rrc_cellDCHMeasOccasionSequenceList = -1; /* SEQUENCE_SIZE_1_maxM
static int hf_rrc_cellDCHMeasOccasionSequenceList_item = -1; /* CellDCHMeasOccasionPattern_LCR */
static int hf_rrc_cellIndividualOffset = -1; /* CellIndividualOffset */
static int hf_rrc_referenceTimeDifferenceToCell = -1; /* ReferenceTimeDifferenceToCell */
-static int hf_rrc_modeSpecificInfo_83 = -1; /* T_modeSpecificInfo_83 */
-static int hf_rrc_fdd_123 = -1; /* T_fdd_120 */
-static int hf_rrc_readSFN_Indicator = -1; /* BOOLEAN */
-static int hf_rrc_tdd_79 = -1; /* T_tdd_73 */
-static int hf_rrc_primaryCCPCH_Info_02 = -1; /* PrimaryCCPCH_Info */
-static int hf_rrc_timeslotInfoList = -1; /* TimeslotInfoList */
-static int hf_rrc_modeSpecificInfo_84 = -1; /* T_modeSpecificInfo_84 */
-static int hf_rrc_fdd_124 = -1; /* T_fdd_121 */
-static int hf_rrc_tdd_80 = -1; /* T_tdd_74 */
-static int hf_rrc_primaryCCPCH_Info_03 = -1; /* PrimaryCCPCH_Info_r4 */
-static int hf_rrc_timeslotInfoList_01 = -1; /* TimeslotInfoList_r4 */
-static int hf_rrc_cellSelectionReselectionInfo = -1; /* CellSelectReselectInfoMC_RSCP */
-static int hf_rrc_modeSpecificInfo_85 = -1; /* T_modeSpecificInfo_85 */
-static int hf_rrc_fdd_125 = -1; /* T_fdd_122 */
-static int hf_rrc_tdd_81 = -1; /* T_tdd_75 */
static int hf_rrc_modeSpecificInfo_86 = -1; /* T_modeSpecificInfo_86 */
static int hf_rrc_fdd_126 = -1; /* T_fdd_123 */
+static int hf_rrc_readSFN_Indicator = -1; /* BOOLEAN */
static int hf_rrc_tdd_82 = -1; /* T_tdd_76 */
-static int hf_rrc_cellSelectionReselectionInfo_01 = -1; /* CellSelectReselectInfoSIB_11_12_RSCP */
-static int hf_rrc_primaryCCPCH_Info_04 = -1; /* PrimaryCCPCH_Info_LCR_r4 */
-static int hf_rrc_timeslotInfoList_02 = -1; /* TimeslotInfoList_LCR_r4 */
+static int hf_rrc_primaryCCPCH_Info_02 = -1; /* PrimaryCCPCH_Info */
+static int hf_rrc_timeslotInfoList = -1; /* TimeslotInfoList */
static int hf_rrc_modeSpecificInfo_87 = -1; /* T_modeSpecificInfo_87 */
static int hf_rrc_fdd_127 = -1; /* T_fdd_124 */
static int hf_rrc_tdd_83 = -1; /* T_tdd_77 */
-static int hf_rrc_cellSelectionReselectionInfo_02 = -1; /* CellSelectReselectInfoSIB_11_12_ECN0 */
+static int hf_rrc_primaryCCPCH_Info_03 = -1; /* PrimaryCCPCH_Info_r4 */
+static int hf_rrc_timeslotInfoList_01 = -1; /* TimeslotInfoList_r4 */
+static int hf_rrc_cellSelectionReselectionInfo = -1; /* CellSelectReselectInfoMC_RSCP */
static int hf_rrc_modeSpecificInfo_88 = -1; /* T_modeSpecificInfo_88 */
static int hf_rrc_fdd_128 = -1; /* T_fdd_125 */
static int hf_rrc_tdd_84 = -1; /* T_tdd_78 */
-static int hf_rrc_cellSelectionReselectionInfo_03 = -1; /* CellSelectReselectInfoSIB_11_12_HCS_RSCP */
static int hf_rrc_modeSpecificInfo_89 = -1; /* T_modeSpecificInfo_89 */
static int hf_rrc_fdd_129 = -1; /* T_fdd_126 */
static int hf_rrc_tdd_85 = -1; /* T_tdd_79 */
+static int hf_rrc_cellSelectionReselectionInfo_01 = -1; /* CellSelectReselectInfoSIB_11_12_RSCP */
+static int hf_rrc_primaryCCPCH_Info_04 = -1; /* PrimaryCCPCH_Info_LCR_r4 */
+static int hf_rrc_timeslotInfoList_02 = -1; /* TimeslotInfoList_LCR_r4 */
+static int hf_rrc_modeSpecificInfo_90 = -1; /* T_modeSpecificInfo_90 */
+static int hf_rrc_fdd_130 = -1; /* T_fdd_127 */
+static int hf_rrc_tdd_86 = -1; /* T_tdd_80 */
+static int hf_rrc_cellSelectionReselectionInfo_02 = -1; /* CellSelectReselectInfoSIB_11_12_ECN0 */
+static int hf_rrc_modeSpecificInfo_91 = -1; /* T_modeSpecificInfo_91 */
+static int hf_rrc_fdd_131 = -1; /* T_fdd_128 */
+static int hf_rrc_tdd_87 = -1; /* T_tdd_81 */
+static int hf_rrc_cellSelectionReselectionInfo_03 = -1; /* CellSelectReselectInfoSIB_11_12_HCS_RSCP */
+static int hf_rrc_modeSpecificInfo_92 = -1; /* T_modeSpecificInfo_92 */
+static int hf_rrc_fdd_132 = -1; /* T_fdd_129 */
+static int hf_rrc_tdd_88 = -1; /* T_tdd_82 */
static int hf_rrc_cellSelectionReselectionInfo_04 = -1; /* CellSelectReselectInfoSIB_11_12_HCS_ECN0 */
static int hf_rrc_cellIdentity = -1; /* CellIdentity */
-static int hf_rrc_dummy_43 = -1; /* SFN_SFN_ObsTimeDifference */
+static int hf_rrc_dummy_47 = -1; /* SFN_SFN_ObsTimeDifference */
static int hf_rrc_cellSynchronisationInfo = -1; /* CellSynchronisationInfo */
-static int hf_rrc_modeSpecificInfo_90 = -1; /* T_modeSpecificInfo_90 */
-static int hf_rrc_fdd_130 = -1; /* T_fdd_127 */
+static int hf_rrc_modeSpecificInfo_93 = -1; /* T_modeSpecificInfo_93 */
+static int hf_rrc_fdd_133 = -1; /* T_fdd_130 */
static int hf_rrc_cpich_Ec_N0_01 = -1; /* CPICH_Ec_N0 */
static int hf_rrc_cpich_RSCP_01 = -1; /* CPICH_RSCP */
static int hf_rrc_pathloss = -1; /* Pathloss */
-static int hf_rrc_tdd_86 = -1; /* T_tdd_80 */
+static int hf_rrc_tdd_89 = -1; /* T_tdd_83 */
static int hf_rrc_proposedTGSN = -1; /* TGSN */
static int hf_rrc_timeslotISCP_List = -1; /* TimeslotISCP_List */
-static int hf_rrc_modeSpecificInfo_91 = -1; /* T_modeSpecificInfo_91 */
-static int hf_rrc_fdd_131 = -1; /* T_fdd_128 */
+static int hf_rrc_modeSpecificInfo_94 = -1; /* T_modeSpecificInfo_94 */
+static int hf_rrc_fdd_134 = -1; /* T_fdd_131 */
static int hf_rrc_deltaRSCPPerCell = -1; /* DeltaRSCPPerCell */
-static int hf_rrc_tdd_87 = -1; /* T_tdd_81 */
+static int hf_rrc_tdd_90 = -1; /* T_tdd_84 */
static int hf_rrc_csgIdentity = -1; /* CSG_Identity */
static int hf_rrc_csgMemberIndication = -1; /* T_csgMemberIndication */
-static int hf_rrc_fdd_132 = -1; /* SEQUENCE_SIZE_1_maxCellMeas_OF_PrimaryCPICH_Info */
+static int hf_rrc_fdd_135 = -1; /* SEQUENCE_SIZE_1_maxCellMeas_OF_PrimaryCPICH_Info */
static int hf_rrc_fdd_item_01 = -1; /* PrimaryCPICH_Info */
-static int hf_rrc_tdd_88 = -1; /* SEQUENCE_SIZE_1_maxCellMeas_OF_PrimaryCCPCH_Info */
+static int hf_rrc_tdd_91 = -1; /* SEQUENCE_SIZE_1_maxCellMeas_OF_PrimaryCCPCH_Info */
static int hf_rrc_tdd_item_02 = -1; /* PrimaryCCPCH_Info */
-static int hf_rrc_fdd_133 = -1; /* SEQUENCE_SIZE_1_maxCellMeasOnSecULFreq_OF_PrimaryCPICH_Info */
+static int hf_rrc_fdd_136 = -1; /* SEQUENCE_SIZE_1_maxCellMeasOnSecULFreq_OF_PrimaryCPICH_Info */
static int hf_rrc_CellMeasurementEventResults_LCR_r4_item = -1; /* PrimaryCCPCH_Info_LCR_r4 */
-static int hf_rrc_dummy_44 = -1; /* SFN_SFN_OTD_Type */
+static int hf_rrc_dummy_48 = -1; /* SFN_SFN_OTD_Type */
static int hf_rrc_cellIdentity_reportingIndicator = -1; /* BOOLEAN */
static int hf_rrc_cellSynchronisationInfoReportingIndicator = -1; /* BOOLEAN */
-static int hf_rrc_modeSpecificInfo_92 = -1; /* T_modeSpecificInfo_92 */
-static int hf_rrc_fdd_134 = -1; /* T_fdd_129 */
+static int hf_rrc_modeSpecificInfo_95 = -1; /* T_modeSpecificInfo_95 */
+static int hf_rrc_fdd_137 = -1; /* T_fdd_132 */
static int hf_rrc_cpich_Ec_N0_reportingIndicator = -1; /* BOOLEAN */
static int hf_rrc_cpich_RSCP_reportingIndicator = -1; /* BOOLEAN */
static int hf_rrc_pathloss_reportingIndicator = -1; /* BOOLEAN */
-static int hf_rrc_tdd_89 = -1; /* T_tdd_82 */
+static int hf_rrc_tdd_92 = -1; /* T_tdd_85 */
static int hf_rrc_timeslotISCP_reportingIndicator = -1; /* BOOLEAN */
static int hf_rrc_proposedTGSN_ReportingRequired = -1; /* BOOLEAN */
static int hf_rrc_primaryCCPCH_RSCP_reportingIndicator = -1; /* BOOLEAN */
static int hf_rrc_q_OffsetS_N = -1; /* Q_OffsetS_N */
static int hf_rrc_hcs_NeighbouringCellInformation_RSCP = -1; /* HCS_NeighbouringCellInformation_RSCP */
-static int hf_rrc_modeSpecificInfo_93 = -1; /* T_modeSpecificInfo_93 */
-static int hf_rrc_fdd_135 = -1; /* T_fdd_130 */
-static int hf_rrc_tdd_90 = -1; /* T_tdd_83 */
-static int hf_rrc_gsm_02 = -1; /* T_gsm_02 */
-static int hf_rrc_q_Offset1S_N = -1; /* Q_OffsetS_N */
-static int hf_rrc_q_Offset2S_N = -1; /* Q_OffsetS_N */
-static int hf_rrc_modeSpecificInfo_94 = -1; /* T_modeSpecificInfo_94 */
-static int hf_rrc_fdd_136 = -1; /* T_fdd_131 */
-static int hf_rrc_tdd_91 = -1; /* T_tdd_84 */
-static int hf_rrc_gsm_03 = -1; /* T_gsm_03 */
-static int hf_rrc_modeSpecificInfo_95 = -1; /* T_modeSpecificInfo_95 */
-static int hf_rrc_fdd_137 = -1; /* T_fdd_132 */
-static int hf_rrc_tdd_92 = -1; /* T_tdd_85 */
-static int hf_rrc_gsm_04 = -1; /* T_gsm_04 */
static int hf_rrc_modeSpecificInfo_96 = -1; /* T_modeSpecificInfo_96 */
static int hf_rrc_fdd_138 = -1; /* T_fdd_133 */
static int hf_rrc_tdd_93 = -1; /* T_tdd_86 */
-static int hf_rrc_gsm_05 = -1; /* T_gsm_05 */
+static int hf_rrc_gsm_02 = -1; /* T_gsm_02 */
+static int hf_rrc_q_Offset1S_N = -1; /* Q_OffsetS_N */
+static int hf_rrc_q_Offset2S_N = -1; /* Q_OffsetS_N */
static int hf_rrc_modeSpecificInfo_97 = -1; /* T_modeSpecificInfo_97 */
static int hf_rrc_fdd_139 = -1; /* T_fdd_134 */
static int hf_rrc_tdd_94 = -1; /* T_tdd_87 */
-static int hf_rrc_gsm_06 = -1; /* T_gsm_06 */
-static int hf_rrc_hcs_NeighbouringCellInformation_ECN0 = -1; /* HCS_NeighbouringCellInformation_ECN0 */
+static int hf_rrc_gsm_03 = -1; /* T_gsm_03 */
static int hf_rrc_modeSpecificInfo_98 = -1; /* T_modeSpecificInfo_98 */
static int hf_rrc_fdd_140 = -1; /* T_fdd_135 */
static int hf_rrc_tdd_95 = -1; /* T_tdd_88 */
+static int hf_rrc_gsm_04 = -1; /* T_gsm_04 */
+static int hf_rrc_modeSpecificInfo_99 = -1; /* T_modeSpecificInfo_99 */
+static int hf_rrc_fdd_141 = -1; /* T_fdd_136 */
+static int hf_rrc_tdd_96 = -1; /* T_tdd_89 */
+static int hf_rrc_gsm_05 = -1; /* T_gsm_05 */
+static int hf_rrc_modeSpecificInfo_100 = -1; /* T_modeSpecificInfo_100 */
+static int hf_rrc_fdd_142 = -1; /* T_fdd_137 */
+static int hf_rrc_tdd_97 = -1; /* T_tdd_90 */
+static int hf_rrc_gsm_06 = -1; /* T_gsm_06 */
+static int hf_rrc_hcs_NeighbouringCellInformation_ECN0 = -1; /* HCS_NeighbouringCellInformation_ECN0 */
+static int hf_rrc_modeSpecificInfo_101 = -1; /* T_modeSpecificInfo_101 */
+static int hf_rrc_fdd_143 = -1; /* T_fdd_138 */
+static int hf_rrc_tdd_98 = -1; /* T_tdd_91 */
static int hf_rrc_gsm_07 = -1; /* T_gsm_07 */
static int hf_rrc_deltaQrxlevmin = -1; /* DeltaQrxlevmin */
static int hf_rrc_deltaQhcs = -1; /* DeltaRSCP */
@@ -5721,11 +6030,11 @@ static int hf_rrc_CellsForInterFreqMeasList_item = -1; /* InterFreqCellID */
static int hf_rrc_CellsForInterRATMeasList_item = -1; /* InterRATCellID */
static int hf_rrc_CellsForIntraFreqMeasList_item = -1; /* IntraFreqCellID */
static int hf_rrc_CellsForIntraFreqMeasListOnSecULFreq_item = -1; /* IntraFreqCellIDOnSecULFreq */
-static int hf_rrc_modeSpecificInfo_99 = -1; /* T_modeSpecificInfo_99 */
-static int hf_rrc_fdd_141 = -1; /* T_fdd_136 */
+static int hf_rrc_modeSpecificInfo_102 = -1; /* T_modeSpecificInfo_102 */
+static int hf_rrc_fdd_144 = -1; /* T_fdd_139 */
static int hf_rrc_countC_SFN_Frame_difference = -1; /* CountC_SFN_Frame_difference */
static int hf_rrc_tm = -1; /* INTEGER_0_38399 */
-static int hf_rrc_tdd_96 = -1; /* T_tdd_89 */
+static int hf_rrc_tdd_99 = -1; /* T_tdd_92 */
static int hf_rrc_bsicReported = -1; /* BSICReported */
static int hf_rrc_CellToReportList_item = -1; /* CellToReport */
static int hf_rrc_cnavToc = -1; /* BIT_STRING_SIZE_11 */
@@ -5745,8 +6054,8 @@ static int hf_rrc_cnavISCl5i5 = -1; /* BIT_STRING_SIZE_13 */
static int hf_rrc_cnavISCl5q5 = -1; /* BIT_STRING_SIZE_13 */
static int hf_rrc_countC_SFN_High = -1; /* INTEGER_0_15 */
static int hf_rrc_off = -1; /* INTEGER_0_255 */
-static int hf_rrc_modeSpecificInfo_100 = -1; /* T_modeSpecificInfo_100 */
-static int hf_rrc_fdd_142 = -1; /* T_fdd_137 */
+static int hf_rrc_modeSpecificInfo_103 = -1; /* T_modeSpecificInfo_103 */
+static int hf_rrc_fdd_145 = -1; /* T_fdd_140 */
static int hf_rrc_startPSC_01 = -1; /* PrimaryCPICH_Info */
static int hf_rrc_numberOfPSCs_01 = -1; /* INTEGER_1_512 */
static int hf_rrc_CSGCellInfoList_item = -1; /* CSGCellInfo */
@@ -5868,16 +6177,19 @@ static int hf_rrc_replacementActivationThreshold = -1; /* ReplacementActivation
static int hf_rrc_useCIO = -1; /* BOOLEAN */
static int hf_rrc_thresholdUsedFrequency = -1; /* ThresholdUsedFrequency */
static int hf_rrc_thresholdUsedFrequency_01 = -1; /* ThresholdUsedFrequency_r6 */
-static int hf_rrc_dummy_45 = -1; /* Threshold */
+static int hf_rrc_dummy_49 = -1; /* Threshold */
static int hf_rrc_usedFreqW = -1; /* W */
static int hf_rrc_hysteresis = -1; /* HysteresisInterFreq */
static int hf_rrc_timeToTrigger = -1; /* TimeToTrigger */
static int hf_rrc_reportingCellStatus = -1; /* ReportingCellStatus */
static int hf_rrc_nonUsedFreqParameterList = -1; /* NonUsedFreqParameterList */
static int hf_rrc_nonUsedFreqParameterList_01 = -1; /* NonUsedFreqWList_r6 */
+static int hf_rrc_reportingCellStatus_01 = -1; /* ReportingCellStatus_r10 */
+static int hf_rrc_nonUsedFreqParameterList_02 = -1; /* NonUsedFreq2aParameterList_r10 */
static int hf_rrc_usedFreqThreshold = -1; /* Threshold */
static int hf_rrc_usedFreqThreshold_01 = -1; /* Threshold_r6 */
-static int hf_rrc_nonUsedFreqParameterList_02 = -1; /* NonUsedFreqParameterList_r6 */
+static int hf_rrc_nonUsedFreqParameterList_03 = -1; /* NonUsedFreqParameterList_r6 */
+static int hf_rrc_nonUsedFreqParameterList_04 = -1; /* NonUsedFreqParameterList_r10 */
static int hf_rrc_thresholdOwnSystem = -1; /* Threshold */
static int hf_rrc_thresholdOtherSystem = -1; /* Threshold */
static int hf_rrc_hysteresis_01 = -1; /* Hysteresis */
@@ -5890,6 +6202,7 @@ static int hf_rrc_ue_InternalEventResults = -1; /* UE_InternalEventResults */
static int hf_rrc_ue_positioning_MeasurementEventResults = -1; /* UE_Positioning_MeasurementEventResults */
static int hf_rrc_ue_positioning_MeasurementEventResults_01 = -1; /* UE_Positioning_MeasurementEventResults_v770ext */
static int hf_rrc_ue_positioning_MeasurementEventResults_02 = -1; /* UE_Positioning_MeasurementEventResults_v860ext */
+static int hf_rrc_interFreqEventResults_01 = -1; /* InterFreqEventResults_va40ext */
static int hf_rrc_intraFreqEventResults_01 = -1; /* IntraFreqEventResultsOnSecUlFreq */
static int hf_rrc_dopplerFirstOrder = -1; /* INTEGER_M42_21 */
static int hf_rrc_dopplerUncertainty = -1; /* T_dopplerUncertainty */
@@ -5901,8 +6214,8 @@ static int hf_rrc_inter_freq_TDD_meas_ind = -1; /* BOOLEAN */
static int hf_rrc_inter_RAT_meas_ind = -1; /* SEQUENCE_SIZE_1_maxOtherRAT_OF_RAT_Type */
static int hf_rrc_inter_RAT_meas_ind_item = -1; /* RAT_Type */
static int hf_rrc_inter_freq_TDD128_meas_ind = -1; /* BOOLEAN */
-static int hf_rrc_fdd_143 = -1; /* PrimaryCPICH_Info */
-static int hf_rrc_tdd_97 = -1; /* PrimaryCCPCH_Info_LCR_r4 */
+static int hf_rrc_fdd_146 = -1; /* PrimaryCPICH_Info */
+static int hf_rrc_tdd_100 = -1; /* PrimaryCCPCH_Info_LCR_r4 */
static int hf_rrc_ForbiddenAffectCellList_item = -1; /* ForbiddenAffectCell */
static int hf_rrc_ForbiddenAffectCellList_r4_item = -1; /* ForbiddenAffectCell_r4 */
static int hf_rrc_ForbiddenAffectCellList_LCR_r4_item = -1; /* ForbiddenAffectCell_LCR_r4 */
@@ -5927,11 +6240,19 @@ static int hf_rrc_uePositioningGANSSAuxiliaryInfo = -1; /* UE_Positioning_GANSS
static int hf_rrc_uePositioningGANSSAlmanac_02 = -1; /* UE_Positioning_GANSS_Almanac_r8 */
static int hf_rrc_uePositioningDGANSSCorrections_01 = -1; /* UE_Positioning_DGANSSCorrections_r9 */
static int hf_rrc_uePositioningDGANSSCorrections_02 = -1; /* UE_Positioning_DGANSSCorrections_v920ext */
+static int hf_rrc_ganssTimeModelsList_01 = -1; /* GANSSTimeModelsList_va40ext */
+static int hf_rrc_uePositioningGANSSReferenceMeasurementInfo_01 = -1; /* UE_Positioning_GANSS_ReferenceMeasurementInfo_va40ext */
+static int hf_rrc_uePositioningGANSSAlmanac_03 = -1; /* UE_Positioning_GANSS_Almanac_va40ext */
+static int hf_rrc_ganssTimeModelsList_02 = -1; /* GANSSTimeModelsList_r10 */
+static int hf_rrc_uePositioningGANSSReferenceMeasurementInfo_02 = -1; /* UE_Positioning_GANSS_ReferenceMeasurementInfo_r10 */
+static int hf_rrc_uePositioningGANSSAlmanac_04 = -1; /* UE_Positioning_GANSS_Almanac_r10 */
static int hf_rrc_GANSSGenericDataList_item = -1; /* GANSSGenericData */
static int hf_rrc_GANSSGenericDataList_v860ext_item = -1; /* GANSSGenericData_v860ext */
static int hf_rrc_GANSSGenericDataList_r8_item = -1; /* GANSSGenericData_r8 */
static int hf_rrc_GANSSGenericDataList_r9_item = -1; /* GANSSGenericData_r9 */
static int hf_rrc_GANSSGenericDataList_v920ext_item = -1; /* GANSSGenericData_v920ext */
+static int hf_rrc_GANSSGenericDataList_va40ext_item = -1; /* GANSSGenericData_va40ext */
+static int hf_rrc_GANSSGenericDataList_r10_item = -1; /* GANSSGenericData_r10 */
static int hf_rrc_GANSSGenericMeasurementInfo_item = -1; /* GANSSGenericMeasurementInfo_item */
static int hf_rrc_ganssMeasurementSignalList = -1; /* GANSSMeasurementSignalList */
static int hf_rrc_GANSSGenericMeasurementInfo_v860ext_item = -1; /* GANSSGenericMeasurementInfo_v860ext_item */
@@ -5987,8 +6308,13 @@ static int hf_rrc_codePhase_01 = -1; /* INTEGER_0_1023 */
static int hf_rrc_integerCodePhase_01 = -1; /* INTEGER_0_127 */
static int hf_rrc_codePhaseSearchWindow_01 = -1; /* BIT_STRING_SIZE_5 */
static int hf_rrc_azimuthandElevation = -1; /* AzimuthAndElevation */
+static int hf_rrc_azimuthandElevation_01 = -1; /* AzimuthAndElevation_r10 */
static int hf_rrc_GANSSSatelliteInformationList_item = -1; /* GANSSSatelliteInformation */
+static int hf_rrc_GANSSSatelliteInformationList_va40ext_item = -1; /* GANSSSatelliteInformation_va40ext */
+static int hf_rrc_GANSSSatelliteInformationList_r10_item = -1; /* GANSSSatelliteInformation_r10 */
static int hf_rrc_GANSSTimeModelsList_item = -1; /* UE_Positioning_GANSS_TimeModel */
+static int hf_rrc_GANSSTimeModelsList_va40ext_item = -1; /* UE_Positioning_GANSS_TimeModel_va40ext */
+static int hf_rrc_GANSSTimeModelsList_r10_item = -1; /* UE_Positioning_GANSS_TimeModel_r10 */
static int hf_rrc_gloAlmNA = -1; /* BIT_STRING_SIZE_11 */
static int hf_rrc_gloAlmnA = -1; /* BIT_STRING_SIZE_5 */
static int hf_rrc_gloAlmHA = -1; /* BIT_STRING_SIZE_5 */
@@ -6094,7 +6420,7 @@ static int hf_rrc_variableBitMapOfARFCNs = -1; /* OCTET_STRING_SIZE_1_16 */
static int hf_rrc_continuousRangeOfARFCNs = -1; /* T_continuousRangeOfARFCNs */
static int hf_rrc_endingARFCN = -1; /* BCCH_ARFCN */
static int hf_rrc_gsm_CarrierRSSI = -1; /* GSM_CarrierRSSI */
-static int hf_rrc_dummy_46 = -1; /* INTEGER_46_173 */
+static int hf_rrc_dummy_50 = -1; /* INTEGER_46_173 */
static int hf_rrc_dummy2_11 = -1; /* ObservedTimeDifferenceToGSM */
static int hf_rrc_GSM_MeasuredResultsList_item = -1; /* GSM_MeasuredResults */
static int hf_rrc_tlm_Message = -1; /* BIT_STRING_SIZE_14 */
@@ -6131,17 +6457,18 @@ static int hf_rrc_newInterFreqCellList_04 = -1; /* NewInterFreqCellList_r8 */
static int hf_rrc_newInterFreqCellList_05 = -1; /* NewInterFreqCellList_r9 */
static int hf_rrc_cSGInterFreqCellInfoList = -1; /* CSGInterFreqCellInfoList */
static int hf_rrc_interFreqSIAcquisition = -1; /* InterFreqSIAcquisition */
-static int hf_rrc_modeSpecificInfo_101 = -1; /* T_modeSpecificInfo_101 */
-static int hf_rrc_fdd_144 = -1; /* T_fdd_138 */
+static int hf_rrc_newInterFreqCellList_06 = -1; /* NewInterFreqCellList_r10 */
+static int hf_rrc_modeSpecificInfo_104 = -1; /* T_modeSpecificInfo_104 */
+static int hf_rrc_fdd_147 = -1; /* T_fdd_141 */
static int hf_rrc_primaryScramblingCode_01 = -1; /* PrimaryCPICH_Info */
-static int hf_rrc_newInterFreqCellList_06 = -1; /* NewInterFreqCellSI_List_RSCP */
-static int hf_rrc_newInterFreqCellList_07 = -1; /* NewInterFreqCellSI_List_ECN0 */
-static int hf_rrc_newInterFreqCellList_08 = -1; /* NewInterFreqCellSI_List_HCS_RSCP */
-static int hf_rrc_newInterFreqCellList_09 = -1; /* NewInterFreqCellSI_List_HCS_ECN0 */
-static int hf_rrc_newInterFreqCellList_10 = -1; /* NewInterFreqCellSI_List_RSCP_LCR_r4 */
-static int hf_rrc_newInterFreqCellList_11 = -1; /* NewInterFreqCellSI_List_ECN0_LCR_r4 */
-static int hf_rrc_newInterFreqCellList_12 = -1; /* NewInterFreqCellSI_List_HCS_RSCP_LCR_r4 */
-static int hf_rrc_newInterFreqCellList_13 = -1; /* NewInterFreqCellSI_List_HCS_ECN0_LCR_r4 */
+static int hf_rrc_newInterFreqCellList_07 = -1; /* NewInterFreqCellSI_List_RSCP */
+static int hf_rrc_newInterFreqCellList_08 = -1; /* NewInterFreqCellSI_List_ECN0 */
+static int hf_rrc_newInterFreqCellList_09 = -1; /* NewInterFreqCellSI_List_HCS_RSCP */
+static int hf_rrc_newInterFreqCellList_10 = -1; /* NewInterFreqCellSI_List_HCS_ECN0 */
+static int hf_rrc_newInterFreqCellList_11 = -1; /* NewInterFreqCellSI_List_RSCP_LCR_r4 */
+static int hf_rrc_newInterFreqCellList_12 = -1; /* NewInterFreqCellSI_List_ECN0_LCR_r4 */
+static int hf_rrc_newInterFreqCellList_13 = -1; /* NewInterFreqCellSI_List_HCS_RSCP_LCR_r4 */
+static int hf_rrc_newInterFreqCellList_14 = -1; /* NewInterFreqCellSI_List_HCS_ECN0_LCR_r4 */
static int hf_rrc_InterFreqCellList_item = -1; /* InterFreqCell */
static int hf_rrc_InterFreqCellList_LCR_r4_ext_item = -1; /* InterFreqCell_LCR_r4 */
static int hf_rrc_InterFreqCellMeasuredResultsList_item = -1; /* CellMeasuredResults */
@@ -6158,8 +6485,15 @@ static int hf_rrc_event2c_01 = -1; /* Event2c_r6 */
static int hf_rrc_event2d_01 = -1; /* Event2d_r6 */
static int hf_rrc_event2e_01 = -1; /* Event2e_r6 */
static int hf_rrc_event2f_01 = -1; /* Event2f_r6 */
+static int hf_rrc_event2a_02 = -1; /* Event2a_r10 */
+static int hf_rrc_event2b_02 = -1; /* Event2b_r10 */
+static int hf_rrc_event2c_02 = -1; /* Event2c_r10 */
+static int hf_rrc_event2d_02 = -1; /* Event2d_r10 */
+static int hf_rrc_event2e_02 = -1; /* Event2e_r10 */
+static int hf_rrc_event2f_02 = -1; /* Event2f_r10 */
static int hf_rrc_InterFreqEventList_item = -1; /* InterFreqEvent */
static int hf_rrc_InterFreqEventList_r6_item = -1; /* InterFreqEvent_r6 */
+static int hf_rrc_InterFreqEventList_r10_item = -1; /* InterFreqEvent_r10 */
static int hf_rrc_InterFrequencyMeasuredResultsList_v590ext_item = -1; /* DeltaRSCPPerCell */
static int hf_rrc_threholdUsedFrequency_delta = -1; /* DeltaRSCP */
static int hf_rrc_threholdNonUsedFrequency_deltaList = -1; /* ThreholdNonUsedFrequency_deltaList */
@@ -6168,16 +6502,17 @@ static int hf_rrc_Intra_FreqEventCriteriaList_v590ext_item = -1; /* DeltaRSCP *
static int hf_rrc_IntraFrequencyMeasuredResultsList_v590ext_item = -1; /* DeltaRSCPPerCell */
static int hf_rrc_eventID_01 = -1; /* EventIDInterFreq */
static int hf_rrc_interFreqCellList = -1; /* InterFreqCellList */
+static int hf_rrc_detectedSetTrigger = -1; /* T_detectedSetTrigger */
static int hf_rrc_interFreqCellList_01 = -1; /* InterFreqCellList_LCR_r4_ext */
static int hf_rrc_reportingCriteria = -1; /* T_reportingCriteria */
static int hf_rrc_intraFreqReportingCriteria_02 = -1; /* T_intraFreqReportingCriteria */
static int hf_rrc_intraFreqMeasQuantity = -1; /* IntraFreqMeasQuantity */
static int hf_rrc_interFreqReportingCriteria = -1; /* T_interFreqReportingCriteria */
static int hf_rrc_filterCoefficient = -1; /* FilterCoefficient */
-static int hf_rrc_modeSpecificInfo_102 = -1; /* T_modeSpecificInfo_102 */
-static int hf_rrc_fdd_145 = -1; /* T_fdd_139 */
+static int hf_rrc_modeSpecificInfo_105 = -1; /* T_modeSpecificInfo_105 */
+static int hf_rrc_fdd_148 = -1; /* T_fdd_142 */
static int hf_rrc_freqQualityEstimateQuantity_FDD = -1; /* FreqQualityEstimateQuantity_FDD */
-static int hf_rrc_tdd_98 = -1; /* T_tdd_90 */
+static int hf_rrc_tdd_101 = -1; /* T_tdd_93 */
static int hf_rrc_freqQualityEstimateQuantity_TDD = -1; /* FreqQualityEstimateQuantity_TDD */
static int hf_rrc_utra_CarrierRSSI = -1; /* UTRA_CarrierRSSI */
static int hf_rrc_interFreqCellMeasuredResultsList = -1; /* InterFreqCellMeasuredResultsList */
@@ -6193,16 +6528,16 @@ static int hf_rrc_interFreqCellInfoSI_List_05 = -1; /* InterFreqCellInfoSI_List
static int hf_rrc_interFreqCellInfoSI_List_06 = -1; /* InterFreqCellInfoSI_List_HCS_RSCP_LCR */
static int hf_rrc_interFreqCellInfoSI_List_07 = -1; /* InterFreqCellInfoSI_List_HCS_ECN0_LCR */
static int hf_rrc_InterFreqRACHRepCellsList_item = -1; /* InterFreqCellID */
-static int hf_rrc_modeSpecificInfo_103 = -1; /* T_modeSpecificInfo_103 */
-static int hf_rrc_fdd_146 = -1; /* T_fdd_140 */
+static int hf_rrc_modeSpecificInfo_106 = -1; /* T_modeSpecificInfo_106 */
+static int hf_rrc_fdd_149 = -1; /* T_fdd_143 */
static int hf_rrc_interFreqRepQuantityRACH_FDD = -1; /* InterFreqRepQuantityRACH_FDD */
-static int hf_rrc_tdd_99 = -1; /* T_tdd_91 */
+static int hf_rrc_tdd_102 = -1; /* T_tdd_94 */
static int hf_rrc_interFreqRepQuantityRACH_TDDList = -1; /* InterFreqRepQuantityRACH_TDDList */
static int hf_rrc_interFreqRACHReportingThreshold = -1; /* Threshold */
static int hf_rrc_maxReportedCellsOnRACHinterFreq = -1; /* MaxReportedCellsOnRACHinterFreq */
-static int hf_rrc_modeSpecificInfo_104 = -1; /* T_modeSpecificInfo_104 */
-static int hf_rrc_fdd_147 = -1; /* T_fdd_141 */
-static int hf_rrc_tdd_100 = -1; /* T_tdd_92 */
+static int hf_rrc_modeSpecificInfo_107 = -1; /* T_modeSpecificInfo_107 */
+static int hf_rrc_fdd_150 = -1; /* T_fdd_144 */
+static int hf_rrc_tdd_103 = -1; /* T_tdd_95 */
static int hf_rrc_interFreqReportingCriteria_01 = -1; /* InterFreqReportingCriteria */
static int hf_rrc_periodicalReportingCriteria_01 = -1; /* PeriodicalWithReportingCellStatus */
static int hf_rrc_noReporting = -1; /* ReportingCellStatusOpt */
@@ -6211,8 +6546,12 @@ static int hf_rrc_intraFreqReportingCriteria_04 = -1; /* IntraFreqReportingCrit
static int hf_rrc_interFreqReportingCriteria_02 = -1; /* InterFreqReportingCriteria_r6 */
static int hf_rrc_intraFreqReportingCriteria_05 = -1; /* IntraFreqReportingCriteria_r7 */
static int hf_rrc_intraFreqReportingCriteria_06 = -1; /* IntraFreqReportingCriteria_r9 */
+static int hf_rrc_interFreqReportingCriteria_03 = -1; /* InterFreqReportingCriteria_r10 */
+static int hf_rrc_periodicalReportingCriteria_02 = -1; /* PeriodicalWithReportingCellStatus_r10 */
+static int hf_rrc_noReporting_01 = -1; /* ReportingCellStatusOpt_r10 */
static int hf_rrc_interFreqEventList = -1; /* InterFreqEventList */
static int hf_rrc_interFreqEventList_01 = -1; /* InterFreqEventList_r6 */
+static int hf_rrc_interFreqEventList_02 = -1; /* InterFreqEventList_r10 */
static int hf_rrc_utra_Carrier_RSSI = -1; /* BOOLEAN */
static int hf_rrc_frequencyQualityEstimate = -1; /* BOOLEAN */
static int hf_rrc_nonFreqRelatedQuantities = -1; /* CellReportingQuantities */
@@ -6232,6 +6571,9 @@ static int hf_rrc_adjacentFrequencyIndex = -1; /* INTEGER_0_31 */
static int hf_rrc_interFreqCellInfoList_03 = -1; /* InterFreqCellInfoList_r9 */
static int hf_rrc_interBandFrequencyIndex = -1; /* INTEGER_0_31 */
static int hf_rrc_reportCriteria_04 = -1; /* InterFreqReportCriteria_r9 */
+static int hf_rrc_interFreqCellInfoList_04 = -1; /* InterFreqCellInfoList_r10 */
+static int hf_rrc_freqIndexListForEnhancedMeas = -1; /* FreqIndexListForEnhancedMeas */
+static int hf_rrc_reportCriteria_05 = -1; /* InterFreqReportCriteria_r10 */
static int hf_rrc_technologySpecificInfo = -1; /* T_technologySpecificInfo */
static int hf_rrc_gsm_08 = -1; /* T_gsm_08 */
static int hf_rrc_bsic = -1; /* BSIC */
@@ -6274,7 +6616,7 @@ static int hf_rrc_InterRATMeasuredResultsList_item = -1; /* InterRATMeasuredRes
static int hf_rrc_interRATCellInfoList = -1; /* InterRATCellInfoList */
static int hf_rrc_interRATMeasQuantity = -1; /* InterRATMeasQuantity */
static int hf_rrc_interRATReportingQuantity = -1; /* InterRATReportingQuantity */
-static int hf_rrc_reportCriteria_05 = -1; /* InterRATReportCriteria */
+static int hf_rrc_reportCriteria_06 = -1; /* InterRATReportCriteria */
static int hf_rrc_interRATCellInfoList_01 = -1; /* InterRATCellInfoList_r4 */
static int hf_rrc_interRATCellInfoList_02 = -1; /* InterRATCellInfoList_r6 */
static int hf_rrc_interRATMeasurementObjects = -1; /* T_interRATMeasurementObjects */
@@ -6306,18 +6648,19 @@ static int hf_rrc_intraFreqCellInfoListOnSecULFreq = -1; /* IntraFreqCellInfoLi
static int hf_rrc_newIntraFreqCellList_04 = -1; /* NewIntraFreqCellList_r9 */
static int hf_rrc_cSGIntraFreqCellInfoList = -1; /* CSGIntraFreqCellInfoList */
static int hf_rrc_intraFreqSIAcquisition = -1; /* IntraFreqSIAcquisition */
+static int hf_rrc_newIntraFreqCellList_05 = -1; /* NewIntraFreqCellList_r10 */
static int hf_rrc_IntraFreqSIAcquisitionInfo_item = -1; /* PrimaryCPICH_Info */
-static int hf_rrc_modeSpecificInfo_105 = -1; /* T_modeSpecificInfo_105 */
-static int hf_rrc_fdd_148 = -1; /* T_fdd_142 */
+static int hf_rrc_modeSpecificInfo_108 = -1; /* T_modeSpecificInfo_108 */
+static int hf_rrc_fdd_151 = -1; /* T_fdd_145 */
static int hf_rrc_intraFreqSIAcquisitionInfo = -1; /* IntraFreqSIAcquisitionInfo */
-static int hf_rrc_newIntraFreqCellList_05 = -1; /* NewIntraFreqCellSI_List_RSCP */
-static int hf_rrc_newIntraFreqCellList_06 = -1; /* NewIntraFreqCellSI_List_ECN0 */
-static int hf_rrc_newIntraFreqCellList_07 = -1; /* NewIntraFreqCellSI_List_HCS_RSCP */
-static int hf_rrc_newIntraFreqCellList_08 = -1; /* NewIntraFreqCellSI_List_HCS_ECN0 */
-static int hf_rrc_newIntraFreqCellList_09 = -1; /* NewIntraFreqCellSI_List_RSCP_LCR_r4 */
-static int hf_rrc_newIntraFreqCellList_10 = -1; /* NewIntraFreqCellSI_List_ECN0_LCR_r4 */
-static int hf_rrc_newIntraFreqCellList_11 = -1; /* NewIntraFreqCellSI_List_HCS_RSCP_LCR_r4 */
-static int hf_rrc_newIntraFreqCellList_12 = -1; /* NewIntraFreqCellSI_List_HCS_ECN0_LCR_r4 */
+static int hf_rrc_newIntraFreqCellList_06 = -1; /* NewIntraFreqCellSI_List_RSCP */
+static int hf_rrc_newIntraFreqCellList_07 = -1; /* NewIntraFreqCellSI_List_ECN0 */
+static int hf_rrc_newIntraFreqCellList_08 = -1; /* NewIntraFreqCellSI_List_HCS_RSCP */
+static int hf_rrc_newIntraFreqCellList_09 = -1; /* NewIntraFreqCellSI_List_HCS_ECN0 */
+static int hf_rrc_newIntraFreqCellList_10 = -1; /* NewIntraFreqCellSI_List_RSCP_LCR_r4 */
+static int hf_rrc_newIntraFreqCellList_11 = -1; /* NewIntraFreqCellSI_List_ECN0_LCR_r4 */
+static int hf_rrc_newIntraFreqCellList_12 = -1; /* NewIntraFreqCellSI_List_HCS_RSCP_LCR_r4 */
+static int hf_rrc_newIntraFreqCellList_13 = -1; /* NewIntraFreqCellSI_List_HCS_ECN0_LCR_r4 */
static int hf_rrc_e1a = -1; /* Event1a */
static int hf_rrc_e1b = -1; /* Event1b */
static int hf_rrc_e1c = -1; /* Event1c */
@@ -6356,10 +6699,10 @@ static int hf_rrc_intraFreqEventCriteria_item = -1; /* IntraFreqEventCriteriaOn
static int hf_rrc_eventID_02 = -1; /* EventIDIntraFreq */
static int hf_rrc_cellMeasurementEventResults = -1; /* CellMeasurementEventResults */
static int hf_rrc_cellMeasurementEventResultsOnSecUlFreq = -1; /* CellMeasurementEventResultsOnSecUlFreq */
-static int hf_rrc_modeSpecificInfo_106 = -1; /* T_modeSpecificInfo_106 */
-static int hf_rrc_fdd_149 = -1; /* T_fdd_143 */
+static int hf_rrc_modeSpecificInfo_109 = -1; /* T_modeSpecificInfo_109 */
+static int hf_rrc_fdd_152 = -1; /* T_fdd_146 */
static int hf_rrc_intraFreqMeasQuantity_FDD = -1; /* IntraFreqMeasQuantity_FDD */
-static int hf_rrc_tdd_101 = -1; /* T_tdd_93 */
+static int hf_rrc_tdd_104 = -1; /* T_tdd_96 */
static int hf_rrc_intraFreqMeasQuantity_TDDList = -1; /* IntraFreqMeasQuantity_TDDList */
static int hf_rrc_IntraFreqMeasQuantity_TDDList_item = -1; /* IntraFreqMeasQuantity_TDD */
static int hf_rrc_IntraFreqMeasQuantity_TDD_sib3List_item = -1; /* IntraFreqMeasQuantity_TDD_sib3List_item */
@@ -6388,23 +6731,88 @@ static int hf_rrc_activeSetReportingQuantities = -1; /* CellReportingQuantities
static int hf_rrc_monitoredSetReportingQuantities = -1; /* CellReportingQuantities */
static int hf_rrc_detectedSetReportingQuantities = -1; /* CellReportingQuantities */
static int hf_rrc_sfn_SFN_OTD_Type = -1; /* SFN_SFN_OTD_Type */
-static int hf_rrc_modeSpecificInfo_107 = -1; /* T_modeSpecificInfo_107 */
-static int hf_rrc_fdd_150 = -1; /* T_fdd_144 */
+static int hf_rrc_modeSpecificInfo_110 = -1; /* T_modeSpecificInfo_110 */
+static int hf_rrc_fdd_153 = -1; /* T_fdd_147 */
static int hf_rrc_intraFreqRepQuantityRACH_FDD = -1; /* IntraFreqRepQuantityRACH_FDD */
-static int hf_rrc_tdd_102 = -1; /* T_tdd_94 */
+static int hf_rrc_tdd_105 = -1; /* T_tdd_97 */
static int hf_rrc_intraFreqRepQuantityRACH_TDDList = -1; /* IntraFreqRepQuantityRACH_TDDList */
static int hf_rrc_IntraFreqRepQuantityRACH_TDDList_item = -1; /* IntraFreqRepQuantityRACH_TDD */
static int hf_rrc_intraFreqCellInfoList = -1; /* IntraFreqCellInfoList */
static int hf_rrc_intraFreqReportingQuantity = -1; /* IntraFreqReportingQuantity */
-static int hf_rrc_reportCriteria_06 = -1; /* IntraFreqReportCriteria */
+static int hf_rrc_reportCriteria_07 = -1; /* IntraFreqReportCriteria */
static int hf_rrc_intraFreqCellInfoList_01 = -1; /* IntraFreqCellInfoList_r4 */
-static int hf_rrc_reportCriteria_07 = -1; /* IntraFreqReportCriteria_r4 */
-static int hf_rrc_reportCriteria_08 = -1; /* IntraFreqReportCriteria_r6 */
-static int hf_rrc_reportCriteria_09 = -1; /* IntraFreqReportCriteria_r7 */
+static int hf_rrc_reportCriteria_08 = -1; /* IntraFreqReportCriteria_r4 */
+static int hf_rrc_reportCriteria_09 = -1; /* IntraFreqReportCriteria_r6 */
+static int hf_rrc_reportCriteria_10 = -1; /* IntraFreqReportCriteria_r7 */
static int hf_rrc_intraFreqCellInfoList_02 = -1; /* IntraFreqCellInfoList_r9 */
static int hf_rrc_intraFreqCellInfoListOnSecULFreq_01 = -1; /* IntraFreqCellInfoListOnSecULFreq */
-static int hf_rrc_reportCriteria_10 = -1; /* IntraFreqReportCriteria_r9 */
+static int hf_rrc_reportCriteria_11 = -1; /* IntraFreqReportCriteria_r9 */
+static int hf_rrc_intraFreqCellInfoList_03 = -1; /* IntraFreqCellInfoList_r10 */
static int hf_rrc_IntraFrequencyMeasuredResultsListOnSecULFreq_item = -1; /* CellMeasuredResults_r9 */
+static int hf_rrc_loggingAbsoluteThreshold = -1; /* LoggingAbsoluteThreshold */
+static int hf_rrc_loggingRelativeThreshold = -1; /* LoggingRelativeThreshold */
+static int hf_rrc_loggingDuration = -1; /* T_loggingDuration */
+static int hf_rrc_intraUTRAANR = -1; /* IntraUTRAANR */
+static int hf_rrc_interRATANRforEUTRAIndicator = -1; /* T_interRATANRforEUTRAIndicator */
+static int hf_rrc_interRATANRforGSMIndicator = -1; /* T_interRATANRforGSMIndicator */
+static int hf_rrc_LoggedANRReportInfoList_item = -1; /* LoggedANRReportInfo */
+static int hf_rrc_servingCell = -1; /* CellIdentity */
+static int hf_rrc_loggedCellInfo = -1; /* LoggedCellInfo */
+static int hf_rrc_loggedUTRACellInfo = -1; /* LoggedUTRACellInfo */
+static int hf_rrc_loggedEUTRACellInfo = -1; /* LoggedEUTRACellInfo */
+static int hf_rrc_loggedGSMCellInfo = -1; /* LoggedGSMCellInfo */
+static int hf_rrc_eutraCellIdentity = -1; /* BIT_STRING_SIZE_28 */
+static int hf_rrc_gsmCellIdentity = -1; /* BIT_STRING_SIZE_16 */
+static int hf_rrc_bandIndicator_01 = -1; /* Frequency_Band */
+static int hf_rrc_absoluteTimeInfo = -1; /* BIT_STRING_SIZE_48 */
+static int hf_rrc_loggingDuration_01 = -1; /* T_loggingDuration_01 */
+static int hf_rrc_loggingInterval = -1; /* T_loggingInterval */
+static int hf_rrc_traceReference = -1; /* TraceReference */
+static int hf_rrc_traceRecordingSession = -1; /* TraceRecordingSession */
+static int hf_rrc_tce_Id = -1; /* TCE_Id */
+static int hf_rrc_areaConfiguration = -1; /* T_areaConfiguration */
+static int hf_rrc_cellIDList = -1; /* SEQUENCE_SIZE_1_32_OF_CellIdentity */
+static int hf_rrc_cellIDList_item = -1; /* CellIdentity */
+static int hf_rrc_locationAreaList = -1; /* SEQUENCE_SIZE_1_8_OF_LAI */
+static int hf_rrc_locationAreaList_item = -1; /* LAI */
+static int hf_rrc_routingAreaList = -1; /* SEQUENCE_SIZE_1_8_OF_RAI */
+static int hf_rrc_routingAreaList_item = -1; /* RAI */
+static int hf_rrc_LoggedMeasInterfreqList_FDD_item = -1; /* LoggedMeasInterfreqInfo_FDD */
+static int hf_rrc_loggedMeasInterfreqNeighbourList = -1; /* SEQUENCE_SIZE_1_maxnumLoggedMeas_OF_LoggedMeasNeighbourInfo_FDD */
+static int hf_rrc_loggedMeasInterfreqNeighbourList_item = -1; /* LoggedMeasNeighbourInfo_FDD */
+static int hf_rrc_loggedMeasInterfreqNeighbourList_01 = -1; /* LoggedMeasInterfreqNeighbourList_TDD128 */
+static int hf_rrc_loggedMeasEUTRAFreqList = -1; /* LoggedMeasEUTRAFreqList */
+static int hf_rrc_loggedMeasGSMNeighbourCellsList = -1; /* LoggedMeasGSMNeighbourCellsList */
+static int hf_rrc_LoggedMeasIntrafreqNeighbourList_FDD_item = -1; /* LoggedMeasNeighbourInfo_FDD */
+static int hf_rrc_LoggedMeasIntrafreqNeighbourMeasList_TDD128_item = -1; /* LoggedMeasNeighbourMeas_TDD128 */
+static int hf_rrc_LoggedMeasGSMNeighbourCellsList_item = -1; /* LoggedMeasGSMNeighbourCellsinfo */
+static int hf_rrc_LoggedMeasEUTRAFreqList_item = -1; /* LoggedMeasEUTRAFreqInfo */
+static int hf_rrc_loggedMeasEUTRAFreqNeighbourInfoList = -1; /* SEQUENCE_SIZE_1_maxnumLoggedMeas_OF_LoggedMeasEUTRAFreqNeighbourInfo */
+static int hf_rrc_loggedMeasEUTRAFreqNeighbourInfoList_item = -1; /* LoggedMeasEUTRAFreqNeighbourInfo */
+static int hf_rrc_ellipsoidPoint = -1; /* EllipsoidPoint */
+static int hf_rrc_ellipsoidPointAltitude = -1; /* EllipsoidPointAltitude */
+static int hf_rrc_relativeTimeStamp = -1; /* INTEGER_0_7200 */
+static int hf_rrc_loggedMeasServingCellMeas = -1; /* LoggedMeasServingCellMeas_FDD */
+static int hf_rrc_loggedMeasIntrafreqNeighbourList = -1; /* LoggedMeasIntrafreqNeighbourList_FDD */
+static int hf_rrc_loggedMeasInterfreqList = -1; /* LoggedMeasInterfreqList_FDD */
+static int hf_rrc_loggedMeasInterRATNeighbourMeas = -1; /* LoggedMeasInterRATNeighbourMeas */
+static int hf_rrc_loggedMeasLocationInfo = -1; /* LoggedMeasLocationInfo */
+static int hf_rrc_loggedMeasServingCellMeas_01 = -1; /* LoggedMeasServingCellMeas_TDD128 */
+static int hf_rrc_loggedMeasIntrafreqNeighbourList_01 = -1; /* LoggedMeasIntrafreqNeighbourMeasList_TDD128 */
+static int hf_rrc_loggedMeasInterfreqList_01 = -1; /* LoggedMeasInterfreqList_TDD128 */
+static int hf_rrc_LoggedMeasInterfreqList_TDD128_item = -1; /* LoggedMeasInterfreqInfo_TDD128 */
+static int hf_rrc_LoggedMeasInterfreqNeighbourList_TDD128_item = -1; /* LoggedMeasNeighbourMeas_TDD128 */
+static int hf_rrc_loggedMeasInfoList = -1; /* LoggedMeasInfoList */
+static int hf_rrc_loggedMeasAvailable_06 = -1; /* T_loggedMeasAvailable_06 */
+static int hf_rrc_LoggedMeasInfoList_FDD_item = -1; /* LoggedMeasInfo_FDD */
+static int hf_rrc_LoggedMeasInfoList_TDD128_item = -1; /* LoggedMeasInfo_TDD128 */
+static int hf_rrc_modeSpecificInfo_111 = -1; /* T_modeSpecificInfo_111 */
+static int hf_rrc_fdd_154 = -1; /* T_fdd_148 */
+static int hf_rrc_loggedMeasInfoList_01 = -1; /* LoggedMeasInfoList_FDD */
+static int hf_rrc_tdd_106 = -1; /* T_tdd_98 */
+static int hf_rrc_loggedMeasInfoList_02 = -1; /* LoggedMeasInfoList_TDD128 */
+static int hf_rrc_rscpforANR = -1; /* RSCPforANR */
+static int hf_rrc_ec_N0forANR = -1; /* Ec_N0forANR */
static int hf_rrc_toe_nav = -1; /* BIT_STRING_SIZE_14 */
static int hf_rrc_ganss_omega_nav = -1; /* BIT_STRING_SIZE_32 */
static int hf_rrc_delta_n_nav = -1; /* BIT_STRING_SIZE_16 */
@@ -6446,10 +6854,10 @@ static int hf_rrc_MeasuredResultsList_LCR_r4_ext_item = -1; /* MeasuredResults_
static int hf_rrc_MeasuredResultsList_v770xet_item = -1; /* MeasuredResultsList_v770xet_item */
static int hf_rrc_MeasuredResultsList_v860ext_item = -1; /* MeasuredResultsList_v860ext_item */
static int hf_rrc_currentCell = -1; /* T_currentCell */
-static int hf_rrc_modeSpecificInfo_108 = -1; /* T_modeSpecificInfo_108 */
-static int hf_rrc_fdd_151 = -1; /* T_fdd_145 */
+static int hf_rrc_modeSpecificInfo_112 = -1; /* T_modeSpecificInfo_112 */
+static int hf_rrc_fdd_155 = -1; /* T_fdd_149 */
static int hf_rrc_measurementQuantity_02 = -1; /* T_measurementQuantity */
-static int hf_rrc_tdd_103 = -1; /* T_tdd_95 */
+static int hf_rrc_tdd_107 = -1; /* T_tdd_99 */
static int hf_rrc_timeslotISCP = -1; /* TimeslotISCP_List */
static int hf_rrc_monitoredCells = -1; /* MonitoredCellRACH_List */
static int hf_rrc_currentCell_DeltaRSCP = -1; /* DeltaRSCPPerCell */
@@ -6476,6 +6884,9 @@ static int hf_rrc_measurementType_04 = -1; /* MeasurementType_r8 */
static int hf_rrc_setup_05 = -1; /* MeasurementType_r9 */
static int hf_rrc_modify_06 = -1; /* T_modify_06 */
static int hf_rrc_measurementType_05 = -1; /* MeasurementType_r9 */
+static int hf_rrc_setup_06 = -1; /* MeasurementType_r10 */
+static int hf_rrc_modify_07 = -1; /* T_modify_07 */
+static int hf_rrc_measurementType_06 = -1; /* MeasurementType_r10 */
static int hf_rrc_use_of_HCS = -1; /* T_use_of_HCS */
static int hf_rrc_hcs_not_used = -1; /* T_hcs_not_used */
static int hf_rrc_cellSelectQualityMeasure_01 = -1; /* T_cellSelectQualityMeasure_01 */
@@ -6496,7 +6907,7 @@ static int hf_rrc_intraFreqMeasurementSysInfo_03 = -1; /* IntraFreqMeasurementS
static int hf_rrc_interFreqMeasurementSysInfo_03 = -1; /* InterFreqMeasurementSysInfo_HCS_ECN0 */
static int hf_rrc_interRATMeasurementSysInfo_01 = -1; /* InterRATMeasurementSysInfo */
static int hf_rrc_trafficVolumeMeasSysInfo = -1; /* TrafficVolumeMeasSysInfo */
-static int hf_rrc_dummy_47 = -1; /* UE_InternalMeasurementSysInfo */
+static int hf_rrc_dummy_51 = -1; /* UE_InternalMeasurementSysInfo */
static int hf_rrc_use_of_HCS_01 = -1; /* T_use_of_HCS_01 */
static int hf_rrc_hcs_not_used_01 = -1; /* T_hcs_not_used_01 */
static int hf_rrc_cellSelectQualityMeasure_03 = -1; /* T_cellSelectQualityMeasure_03 */
@@ -6570,13 +6981,16 @@ static int hf_rrc_interFrequencyMeasurement_05 = -1; /* InterFrequencyMeasureme
static int hf_rrc_interRATMeasurement_04 = -1; /* InterRATMeasurement_r9 */
static int hf_rrc_up_Measurement_03 = -1; /* UE_Positioning_Measurement_r9 */
static int hf_rrc_csgProximityDetection = -1; /* CSGProximityDetection */
+static int hf_rrc_intraFrequencyMeasurement_05 = -1; /* IntraFrequencyMeasurement_r10 */
+static int hf_rrc_interFrequencyMeasurement_06 = -1; /* InterFrequencyMeasurement_r10 */
+static int hf_rrc_up_Measurement_04 = -1; /* UE_Positioning_Measurement_r10 */
static int hf_rrc_ue_State = -1; /* T_ue_State */
static int hf_rrc_MonitoredCellRACH_List_item = -1; /* MonitoredCellRACH_Result */
static int hf_rrc_sfn_SFN_ObsTimeDifference = -1; /* SFN_SFN_ObsTimeDifference */
-static int hf_rrc_modeSpecificInfo_109 = -1; /* T_modeSpecificInfo_109 */
-static int hf_rrc_fdd_152 = -1; /* T_fdd_146 */
+static int hf_rrc_modeSpecificInfo_113 = -1; /* T_modeSpecificInfo_113 */
+static int hf_rrc_fdd_156 = -1; /* T_fdd_150 */
static int hf_rrc_measurementQuantity_03 = -1; /* T_measurementQuantity_01 */
-static int hf_rrc_tdd_104 = -1; /* T_tdd_96 */
+static int hf_rrc_tdd_108 = -1; /* T_tdd_100 */
static int hf_rrc_n_CR = -1; /* INTEGER_1_16 */
static int hf_rrc_t_CRMaxHyst = -1; /* T_CRMaxHyst */
static int hf_rrc_navToc = -1; /* BIT_STRING_SIZE_16 */
@@ -6676,16 +7090,16 @@ static int hf_rrc_c_rc = -1; /* BIT_STRING_SIZE_16 */
static int hf_rrc_omega_01 = -1; /* BIT_STRING_SIZE_32 */
static int hf_rrc_omegaDot_01 = -1; /* BIT_STRING_SIZE_24 */
static int hf_rrc_iDot = -1; /* BIT_STRING_SIZE_14 */
-static int hf_rrc_modeSpecificInfo_110 = -1; /* T_modeSpecificInfo_110 */
-static int hf_rrc_fdd_153 = -1; /* T_fdd_147 */
+static int hf_rrc_modeSpecificInfo_114 = -1; /* T_modeSpecificInfo_114 */
+static int hf_rrc_fdd_157 = -1; /* T_fdd_151 */
static int hf_rrc_neighbourIdentity = -1; /* PrimaryCPICH_Info */
static int hf_rrc_uE_RX_TX_TimeDifferenceType2Info = -1; /* UE_RX_TX_TimeDifferenceType2Info */
-static int hf_rrc_tdd_105 = -1; /* T_tdd_97 */
+static int hf_rrc_tdd_109 = -1; /* T_tdd_101 */
static int hf_rrc_neighbourAndChannelIdentity = -1; /* CellAndChannelIdentity */
static int hf_rrc_neighbourQuality = -1; /* NeighbourQuality */
static int hf_rrc_sfn_SFN_ObsTimeDifference2 = -1; /* SFN_SFN_ObsTimeDifference2 */
-static int hf_rrc_modeSpecificInfo_111 = -1; /* T_modeSpecificInfo_111 */
-static int hf_rrc_fdd_154 = -1; /* T_fdd_148 */
+static int hf_rrc_modeSpecificInfo_115 = -1; /* T_modeSpecificInfo_115 */
+static int hf_rrc_fdd_158 = -1; /* T_fdd_152 */
static int hf_rrc_NeighbourList_item = -1; /* Neighbour */
static int hf_rrc_NeighbourList_TDD_r7_item = -1; /* Neighbour_TDD_r7 */
static int hf_rrc_NeighbourList_v390ext_item = -1; /* Neighbour_v390ext */
@@ -6695,18 +7109,22 @@ static int hf_rrc_cellInfo = -1; /* CellInfo */
static int hf_rrc_cellInfo_01 = -1; /* CellInfo_r4 */
static int hf_rrc_intraSecondaryFreqIndicator = -1; /* BOOLEAN */
static int hf_rrc_cellInfo_LCR_r8 = -1; /* CellInfo_LCR_r8_ext */
-static int hf_rrc_modeSpecificInfo_112 = -1; /* T_modeSpecificInfo_112 */
+static int hf_rrc_modeSpecificInfo_116 = -1; /* T_modeSpecificInfo_116 */
static int hf_rrc_noInfo = -1; /* NULL */
-static int hf_rrc_tdd128_57 = -1; /* T_tdd128_55 */
+static int hf_rrc_tdd128_59 = -1; /* T_tdd128_57 */
static int hf_rrc_cellInfo_02 = -1; /* CellInfo_r9 */
-static int hf_rrc_modeSpecificInfo_113 = -1; /* T_modeSpecificInfo_113 */
-static int hf_rrc_tdd128_58 = -1; /* T_tdd128_56 */
+static int hf_rrc_modeSpecificInfo_117 = -1; /* T_modeSpecificInfo_117 */
+static int hf_rrc_tdd128_60 = -1; /* T_tdd128_58 */
+static int hf_rrc_modeSpecificInfo_118 = -1; /* T_modeSpecificInfo_118 */
+static int hf_rrc_tdd128_61 = -1; /* T_tdd128_59 */
+static int hf_rrc_sNPLMonitorSetIndicator_TDD128 = -1; /* BIT_STRING_SIZE_5 */
static int hf_rrc_NewInterFreqCellList_item = -1; /* NewInterFreqCell */
static int hf_rrc_NewInterFreqCellList_r4_item = -1; /* NewInterFreqCell_r4 */
static int hf_rrc_NewInterFreqCellList_v7b0ext_item = -1; /* NewInterFreqCell_v7b0ext */
static int hf_rrc_NewInterFreqCellList_LCR_v8a0ext_item = -1; /* NewInterFreqCell_LCR_v8a0ext */
static int hf_rrc_NewInterFreqCellList_r8_item = -1; /* NewInterFreqCell_r8 */
static int hf_rrc_NewInterFreqCellList_r9_item = -1; /* NewInterFreqCell_r9 */
+static int hf_rrc_NewInterFreqCellList_r10_item = -1; /* NewInterFreqCell_r10 */
static int hf_rrc_cellInfo_03 = -1; /* CellInfoSI_RSCP */
static int hf_rrc_cellInfo_04 = -1; /* CellInfoSI_ECN0 */
static int hf_rrc_cellInfo_05 = -1; /* CellInfoSI_HCS_RSCP */
@@ -6736,10 +7154,13 @@ static int hf_rrc_is_2000_04 = -1; /* T_is_2000_03 */
static int hf_rrc_NewInterRATCellList_item = -1; /* NewInterRATCell */
static int hf_rrc_NewInterRATCellList_B_item = -1; /* NewInterRATCell_B */
static int hf_rrc_intraFreqCellID = -1; /* IntraFreqCellID */
+static int hf_rrc_modeSpecificInfo_119 = -1; /* T_modeSpecificInfo_119 */
+static int hf_rrc_tdd128_62 = -1; /* T_tdd128_60 */
static int hf_rrc_intraFreqCellIDOnSecULFreq = -1; /* IntraFreqCellIDOnSecULFreq */
static int hf_rrc_NewIntraFreqCellList_item = -1; /* NewIntraFreqCell */
static int hf_rrc_NewIntraFreqCellList_r4_item = -1; /* NewIntraFreqCell_r4 */
static int hf_rrc_NewIntraFreqCellList_r9_item = -1; /* NewIntraFreqCell_r9 */
+static int hf_rrc_NewIntraFreqCellList_r10_item = -1; /* NewIntraFreqCell_r10 */
static int hf_rrc_NewIntraFreqCellList_LCR_v8a0ext_item = -1; /* NewIntraFreqCell_LCR_v8a0ext */
static int hf_rrc_NewIntraFreqCellListOnSecULFreq_item = -1; /* NewIntraFreqCellOnSecULFreq */
static int hf_rrc_NewIntraFreqCellSI_List_RSCP_item = -1; /* NewIntraFreqCellSI_RSCP */
@@ -6753,8 +7174,12 @@ static int hf_rrc_NewIntraFreqCellSI_List_HCS_ECN0_LCR_r4_item = -1; /* NewIntr
static int hf_rrc_nonUsedFreqThreshold = -1; /* Threshold */
static int hf_rrc_nonUsedFreqW = -1; /* W */
static int hf_rrc_nonUsedFreqThreshold_01 = -1; /* Threshold_r6 */
+static int hf_rrc_nonUsedFreqTriggeringConditionDetectedCells = -1; /* T_nonUsedFreqTriggeringConditionDetectedCells */
+static int hf_rrc_nonUsedFreqTriggeringConditionDetectedCells_01 = -1; /* T_nonUsedFreqTriggeringConditionDetectedCells_01 */
static int hf_rrc_NonUsedFreqParameterList_item = -1; /* NonUsedFreqParameter */
static int hf_rrc_NonUsedFreqParameterList_r6_item = -1; /* NonUsedFreqParameter_r6 */
+static int hf_rrc_NonUsedFreqParameterList_r10_item = -1; /* NonUsedFreqParameter_r10 */
+static int hf_rrc_NonUsedFreq2aParameterList_r10_item = -1; /* NonUsedFreq2aParameter_r10 */
static int hf_rrc_NonUsedFreqWList_r6_item = -1; /* W */
static int hf_rrc_notUsed = -1; /* NULL */
static int hf_rrc_pt10 = -1; /* TemporaryOffset1 */
@@ -6782,28 +7207,26 @@ static int hf_rrc_multiplePLMN_list_item = -1; /* PLMN_IdentityWithOptionalMC
static int hf_rrc_PLMNsOfIntraFreqCellsList_item = -1; /* PLMNsOfIntraFreqCellsList_item */
static int hf_rrc_MultiplePLMNsOfIntraFreqCellsList_item = -1; /* MultiplePLMNsOfIntraFreqCellsList_item */
static int hf_rrc_PLMNsOfInterRATCellsList_item = -1; /* PLMNsOfInterRATCellsList_item */
-static int hf_rrc_ellipsoidPoint = -1; /* EllipsoidPoint */
static int hf_rrc_ellipsoidPointUncertCircle = -1; /* EllipsoidPointUncertCircle */
static int hf_rrc_ellipsoidPointUncertEllipse = -1; /* EllipsoidPointUncertEllipse */
-static int hf_rrc_ellipsoidPointAltitude = -1; /* EllipsoidPointAltitude */
static int hf_rrc_ellipsoidPointAltitudeEllipse = -1; /* EllipsoidPointAltitudeEllipsoide */
static int hf_rrc_QualityEventResults_item = -1; /* TransportChannelIdentity */
static int hf_rrc_blerMeasurementResultsList = -1; /* BLER_MeasurementResultsList */
-static int hf_rrc_modeSpecificInfo_114 = -1; /* T_modeSpecificInfo_114 */
-static int hf_rrc_tdd_106 = -1; /* T_tdd_98 */
+static int hf_rrc_modeSpecificInfo_120 = -1; /* T_modeSpecificInfo_120 */
+static int hf_rrc_tdd_110 = -1; /* T_tdd_102 */
static int hf_rrc_sir_MeasurementResults = -1; /* SIR_MeasurementList */
static int hf_rrc_qualityReportingQuantity = -1; /* QualityReportingQuantity */
-static int hf_rrc_reportCriteria_11 = -1; /* QualityReportCriteria */
+static int hf_rrc_reportCriteria_12 = -1; /* QualityReportCriteria */
static int hf_rrc_qualityReportingCriteria = -1; /* QualityReportingCriteria */
-static int hf_rrc_noReporting_01 = -1; /* NULL */
+static int hf_rrc_noReporting_02 = -1; /* NULL */
static int hf_rrc_QualityReportingCriteria_item = -1; /* QualityReportingCriteriaSingle */
static int hf_rrc_totalCRC = -1; /* INTEGER_1_512 */
static int hf_rrc_badCRC = -1; /* INTEGER_1_512 */
static int hf_rrc_pendingAfterTrigger = -1; /* INTEGER_1_512 */
static int hf_rrc_dl_TransChBLER = -1; /* BOOLEAN */
static int hf_rrc_bler_dl_TransChIdList = -1; /* BLER_TransChIdList */
-static int hf_rrc_modeSpecificInfo_115 = -1; /* T_modeSpecificInfo_115 */
-static int hf_rrc_tdd_107 = -1; /* T_tdd_99 */
+static int hf_rrc_modeSpecificInfo_121 = -1; /* T_modeSpecificInfo_121 */
+static int hf_rrc_tdd_111 = -1; /* T_tdd_103 */
static int hf_rrc_sir_TFCS_List = -1; /* SIR_TFCS_List */
static int hf_rrc_ellipsoidPointWithAltitude = -1; /* EllipsoidPointAltitude */
static int hf_rrc_ellipsoidPointAltitudeEllipsoide = -1; /* EllipsoidPointAltitudeEllipsoide */
@@ -6838,8 +7261,9 @@ static int hf_rrc_withinMonitoredAndOrVirtualActiveSetNonUsedFreq = -1; /* MaxN
static int hf_rrc_allVirtualActSetplusMonitoredSetNonUsedFreq = -1; /* MaxNumberOfReportingCellsType3 */
static int hf_rrc_withinActSetOrVirtualActSet_InterRATcells = -1; /* MaxNumberOfReportingCellsType2 */
static int hf_rrc_withinActSetAndOrMonitoredUsedFreqOrVirtualActSetAndOrMonitoredNonUsedFreq = -1; /* MaxNumberOfReportingCellsType2 */
-static int hf_rrc_reportCriteria_12 = -1; /* CellDCH_ReportCriteria */
-static int hf_rrc_reportCriteria_13 = -1; /* CellDCH_ReportCriteria_LCR_r4 */
+static int hf_rrc_allVirtualActSetplusMonitoredSetplusDetectedSetNonUsedFreq = -1; /* MaxNumberOfReportingCellsType3 */
+static int hf_rrc_reportCriteria_13 = -1; /* CellDCH_ReportCriteria */
+static int hf_rrc_reportCriteria_14 = -1; /* CellDCH_ReportCriteria_LCR_r4 */
static int hf_rrc_ganssSignalID = -1; /* DGANSS_Sig_Id_Req */
static int hf_rrc_ganssDataBitInterval = -1; /* INTEGER_0_15 */
static int hf_rrc_ganssSatelliteInfo = -1; /* T_ganssSatelliteInfo */
@@ -6847,6 +7271,7 @@ static int hf_rrc_ganssSatelliteInfo_item = -1; /* INTEGER_0_63 */
static int hf_rrc_RL_AdditionInfoList_item = -1; /* PrimaryCPICH_Info */
static int hf_rrc_rl_AdditionInfoList = -1; /* RL_AdditionInfoList */
static int hf_rrc_rL_RemovalInformationList = -1; /* RL_RemovalInformationList */
+static int hf_rrc_rSCP = -1; /* INTEGER_M120_M25 */
static int hf_rrc_SatDataList_item = -1; /* SatData */
static int hf_rrc_iod_02 = -1; /* INTEGER_0_1023 */
static int hf_rrc_SatellitesListRelatedDataList_item = -1; /* SatellitesListRelatedData */
@@ -6879,18 +7304,21 @@ static int hf_rrc_t60 = -1; /* N_CR_T_CRMaxHyst */
static int hf_rrc_t120 = -1; /* N_CR_T_CRMaxHyst */
static int hf_rrc_t180 = -1; /* N_CR_T_CRMaxHyst */
static int hf_rrc_t240 = -1; /* N_CR_T_CRMaxHyst */
+static int hf_rrc_tce_Id_01 = -1; /* OCTET_STRING_SIZE_1 */
static int hf_rrc_temporaryOffset1 = -1; /* TemporaryOffset1 */
static int hf_rrc_temporaryOffset2 = -1; /* TemporaryOffset2 */
static int hf_rrc_ThreholdNonUsedFrequency_deltaList_item = -1; /* DeltaRSCPPerCell */
static int hf_rrc_TimeslotInfoList_item = -1; /* TimeslotInfo */
static int hf_rrc_TimeslotInfoList_LCR_r4_item = -1; /* TimeslotInfo_LCR_r4 */
-static int hf_rrc_tdd384_43 = -1; /* SEQUENCE_SIZE_1_maxTS_OF_TimeslotInfo */
+static int hf_rrc_tdd384_44 = -1; /* SEQUENCE_SIZE_1_maxTS_OF_TimeslotInfo */
static int hf_rrc_tdd384_item_01 = -1; /* TimeslotInfo */
-static int hf_rrc_tdd128_59 = -1; /* SEQUENCE_SIZE_1_maxTS_LCR_OF_TimeslotInfo_LCR_r4 */
+static int hf_rrc_tdd128_63 = -1; /* SEQUENCE_SIZE_1_maxTS_LCR_OF_TimeslotInfo_LCR_r4 */
static int hf_rrc_tdd128_item_02 = -1; /* TimeslotInfo_LCR_r4 */
static int hf_rrc_TimeslotISCP_List_item = -1; /* TimeslotISCP */
static int hf_rrc_TimeslotListWithISCP_item = -1; /* TimeslotWithISCP */
static int hf_rrc_timeslotISCP_01 = -1; /* TimeslotISCP */
+static int hf_rrc_traceId = -1; /* OCTET_STRING_SIZE_3 */
+static int hf_rrc_traceRecordingSession_01 = -1; /* OCTET_STRING_SIZE_2 */
static int hf_rrc_eventID_03 = -1; /* TrafficVolumeEventType */
static int hf_rrc_reportingThreshold = -1; /* TrafficVolumeThreshold */
static int hf_rrc_pendingTimeAfterTrigger = -1; /* PendingTimeAfterTrigger */
@@ -6904,13 +7332,13 @@ static int hf_rrc_trafficVolumeMeasurementID = -1; /* MeasurementIdentity */
static int hf_rrc_trafficVolumeMeasurementObjectList = -1; /* TrafficVolumeMeasurementObjectList */
static int hf_rrc_trafficVolumeMeasQuantity = -1; /* TrafficVolumeMeasQuantity */
static int hf_rrc_trafficVolumeReportingQuantity = -1; /* TrafficVolumeReportingQuantity */
-static int hf_rrc_dummy_48 = -1; /* TrafficVolumeReportingCriteria */
+static int hf_rrc_dummy_52 = -1; /* TrafficVolumeReportingCriteria */
static int hf_rrc_reportCriteriaSysInf = -1; /* TrafficVolumeReportCriteriaSysInfo */
static int hf_rrc_rlc_BuffersPayload = -1; /* RLC_BuffersPayload */
static int hf_rrc_averageRLC_BufferPayload_01 = -1; /* AverageRLC_BufferPayload */
static int hf_rrc_varianceOfRLC_BufferPayload_01 = -1; /* VarianceOfRLC_BufferPayload */
static int hf_rrc_TrafficVolumeMeasuredResultsList_item = -1; /* TrafficVolumeMeasuredResults */
-static int hf_rrc_reportCriteria_14 = -1; /* TrafficVolumeReportCriteria */
+static int hf_rrc_reportCriteria_15 = -1; /* TrafficVolumeReportCriteria */
static int hf_rrc_TrafficVolumeMeasurementObjectList_item = -1; /* UL_TrCH_Identity */
static int hf_rrc_trafficVolumeReportingCriteria = -1; /* TrafficVolumeReportingCriteria */
static int hf_rrc_transChCriteriaList = -1; /* TransChCriteriaList */
@@ -6941,38 +7369,38 @@ static int hf_rrc_event6e_01 = -1; /* NULL */
static int hf_rrc_event6f_01 = -1; /* PrimaryCPICH_Info */
static int hf_rrc_event6g_01 = -1; /* PrimaryCPICH_Info */
static int hf_rrc_measurementQuantity_04 = -1; /* UE_MeasurementQuantity */
-static int hf_rrc_modeSpecificInfo_116 = -1; /* T_modeSpecificInfo_116 */
-static int hf_rrc_fdd_155 = -1; /* T_fdd_149 */
+static int hf_rrc_modeSpecificInfo_122 = -1; /* T_modeSpecificInfo_122 */
+static int hf_rrc_fdd_159 = -1; /* T_fdd_153 */
static int hf_rrc_ue_TransmittedPowerFDD = -1; /* UE_TransmittedPower */
static int hf_rrc_ue_RX_TX_ReportEntryList = -1; /* UE_RX_TX_ReportEntryList */
-static int hf_rrc_tdd_108 = -1; /* T_tdd_100 */
+static int hf_rrc_tdd_112 = -1; /* T_tdd_104 */
static int hf_rrc_ue_TransmittedPowerTDD_List = -1; /* UE_TransmittedPowerTDD_List */
static int hf_rrc_appliedTA = -1; /* UL_TimingAdvance */
static int hf_rrc_t_ADVinfo = -1; /* T_ADVinfo */
-static int hf_rrc_modeSpecificInfo_117 = -1; /* T_modeSpecificInfo_117 */
+static int hf_rrc_modeSpecificInfo_123 = -1; /* T_modeSpecificInfo_123 */
static int hf_rrc_tdd384_768_03 = -1; /* T_tdd384_768_02 */
static int hf_rrc_appliedTA_01 = -1; /* EXT_UL_TimingAdvance */
-static int hf_rrc_tdd128_60 = -1; /* T_tdd128_57 */
+static int hf_rrc_tdd128_64 = -1; /* T_tdd128_61 */
static int hf_rrc_t_ADVinfo_01 = -1; /* T_ADVinfo_ext */
static int hf_rrc_ue_InternalMeasQuantity = -1; /* UE_InternalMeasQuantity */
static int hf_rrc_ue_InternalReportingQuantity = -1; /* UE_InternalReportingQuantity */
-static int hf_rrc_reportCriteria_15 = -1; /* UE_InternalReportCriteria */
+static int hf_rrc_reportCriteria_16 = -1; /* UE_InternalReportCriteria */
static int hf_rrc_ue_InternalReportingQuantity_01 = -1; /* UE_InternalReportingQuantity_r4 */
static int hf_rrc_ue_InternalMeasurementID = -1; /* MeasurementIdentity */
static int hf_rrc_ue_InternalReportingCriteria = -1; /* UE_InternalReportingCriteria */
static int hf_rrc_ue_InternalEventParamList = -1; /* UE_InternalEventParamList */
static int hf_rrc_ue_TransmittedPower = -1; /* BOOLEAN */
-static int hf_rrc_modeSpecificInfo_118 = -1; /* T_modeSpecificInfo_118 */
-static int hf_rrc_fdd_156 = -1; /* T_fdd_150 */
+static int hf_rrc_modeSpecificInfo_124 = -1; /* T_modeSpecificInfo_124 */
+static int hf_rrc_fdd_160 = -1; /* T_fdd_154 */
static int hf_rrc_ue_RX_TX_TimeDifference = -1; /* BOOLEAN */
-static int hf_rrc_tdd_109 = -1; /* T_tdd_101 */
+static int hf_rrc_tdd_113 = -1; /* T_tdd_105 */
static int hf_rrc_appliedTA_02 = -1; /* BOOLEAN */
-static int hf_rrc_modeSpecificInfo_119 = -1; /* T_modeSpecificInfo_119 */
-static int hf_rrc_fdd_157 = -1; /* T_fdd_151 */
-static int hf_rrc_tdd_110 = -1; /* T_tdd_102 */
-static int hf_rrc_tddOption_25 = -1; /* T_tddOption_25 */
-static int hf_rrc_tdd384_44 = -1; /* T_tdd384_39 */
-static int hf_rrc_tdd128_61 = -1; /* T_tdd128_58 */
+static int hf_rrc_modeSpecificInfo_125 = -1; /* T_modeSpecificInfo_125 */
+static int hf_rrc_fdd_161 = -1; /* T_fdd_155 */
+static int hf_rrc_tdd_114 = -1; /* T_tdd_106 */
+static int hf_rrc_tddOption_26 = -1; /* T_tddOption_26 */
+static int hf_rrc_tdd384_45 = -1; /* T_tdd384_40 */
+static int hf_rrc_tdd128_65 = -1; /* T_tdd128_62 */
static int hf_rrc_t_ADVinfo_02 = -1; /* BOOLEAN */
static int hf_rrc_ue_RX_TX_TimeDifferenceType1 = -1; /* UE_RX_TX_TimeDifferenceType1 */
static int hf_rrc_UE_RX_TX_ReportEntryList_item = -1; /* UE_RX_TX_ReportEntry */
@@ -7011,6 +7439,7 @@ static int hf_rrc_alm_keplerianReducedAlmanac = -1; /* ALM_ReducedKeplerianSet
static int hf_rrc_alm_keplerianMidiAlmanac = -1; /* ALM_MidiAlmanacSet */
static int hf_rrc_alm_keplerianGLONASS = -1; /* ALM_GlonassAlmanacSet */
static int hf_rrc_alm_ecefSBASAlmanac = -1; /* ALM_ECEFsbasAlmanacSet */
+static int hf_rrc_complete_Almanac_Provided = -1; /* BOOLEAN */
static int hf_rrc_ganssReferenceTime = -1; /* BOOLEAN */
static int hf_rrc_ganssreferenceLocation = -1; /* BOOLEAN */
static int hf_rrc_ganssIonosphericModel = -1; /* BOOLEAN */
@@ -7032,6 +7461,10 @@ static int hf_rrc_ganssGenericDataList_01 = -1; /* GANSSGenericDataList_v860ex
static int hf_rrc_ganssGenericDataList_02 = -1; /* GANSSGenericDataList_r8 */
static int hf_rrc_ganssGenericDataList_03 = -1; /* GANSSGenericDataList_r9 */
static int hf_rrc_ganssGenericDataList_04 = -1; /* GANSSGenericDataList_v920ext */
+static int hf_rrc_ue_positioning_GANSS_ReferenceTime_01 = -1; /* UE_Positioning_GANSS_ReferenceTime_va40ext */
+static int hf_rrc_ganssGenericDataList_05 = -1; /* GANSSGenericDataList_va40ext */
+static int hf_rrc_ue_positioning_GANSS_ReferenceTime_02 = -1; /* UE_Positioning_GANSS_ReferenceTime_r10 */
+static int hf_rrc_ganssGenericDataList_06 = -1; /* GANSSGenericDataList_r10 */
static int hf_rrc_ganssID1 = -1; /* AuxInfoGANSS_ID1 */
static int hf_rrc_ganssID3 = -1; /* AuxInfoGANSS_ID3 */
static int hf_rrc_satellite_clock_modelList = -1; /* Satellite_clock_modelList */
@@ -7068,25 +7501,35 @@ static int hf_rrc_UE_Positioning_GANSS_RealTimeIntegrity_item = -1; /* UE_Posit
static int hf_rrc_bad_ganss_satId = -1; /* INTEGER_0_63 */
static int hf_rrc_bad_ganss_signalId = -1; /* BIT_STRING_SIZE_8 */
static int hf_rrc_satelliteInformationList = -1; /* GANSSSatelliteInformationList */
+static int hf_rrc_satelliteInformationList_01 = -1; /* GANSSSatelliteInformationList_va40ext */
+static int hf_rrc_satelliteInformationList_02 = -1; /* GANSSSatelliteInformationList_r10 */
static int hf_rrc_ganssDay = -1; /* INTEGER_0_8191 */
static int hf_rrc_ganssTodUncertainty = -1; /* INTEGER_0_127 */
static int hf_rrc_ganssTimeId = -1; /* INTEGER_0_7 */
static int hf_rrc_utran_ganssreferenceTime = -1; /* T_utran_ganssreferenceTime */
static int hf_rrc_timingOfCellFrames = -1; /* INTEGER_0_3999999 */
static int hf_rrc_mode = -1; /* T_mode */
-static int hf_rrc_fdd_158 = -1; /* T_fdd_152 */
+static int hf_rrc_fdd_162 = -1; /* T_fdd_156 */
static int hf_rrc_primary_CPICH_Info = -1; /* PrimaryCPICH_Info */
-static int hf_rrc_tdd_111 = -1; /* T_tdd_103 */
+static int hf_rrc_tdd_115 = -1; /* T_tdd_107 */
static int hf_rrc_cellParameters = -1; /* CellParametersID */
static int hf_rrc_referenceSfn = -1; /* INTEGER_0_4095 */
static int hf_rrc_tutran_ganss_driftRate = -1; /* Tutran_Ganss_DriftRate */
+static int hf_rrc_ganss_Day_Cycle_Number = -1; /* INTEGER_0_7 */
+static int hf_rrc_utran_ganssreferenceTime_01 = -1; /* T_utran_ganssreferenceTime_01 */
+static int hf_rrc_mode_01 = -1; /* T_mode_01 */
+static int hf_rrc_fdd_163 = -1; /* T_fdd_157 */
+static int hf_rrc_tdd_116 = -1; /* T_tdd_108 */
static int hf_rrc_ganss_timeModelreferenceTime = -1; /* INTEGER_0_37799 */
static int hf_rrc_ganss_t_a0 = -1; /* INTEGER_M2147483648_2147483647 */
static int hf_rrc_ganss_t_a1 = -1; /* INTEGER_M8388608_8388607 */
static int hf_rrc_ganss_t_a2 = -1; /* INTEGER_M64_63 */
static int hf_rrc_gnss_to_id = -1; /* T_gnss_to_id */
static int hf_rrc_ganss_wk_number_01 = -1; /* INTEGER_0_8191 */
+static int hf_rrc_deltaT = -1; /* INTEGER_M128_127 */
+static int hf_rrc_gnss_to_id_01 = -1; /* T_gnss_to_id_01 */
static int hf_rrc_UE_Positioning_GANSS_TimeModels_item = -1; /* UE_Positioning_GANSS_TimeModel */
+static int hf_rrc_UE_Positioning_GANSS_TimeModels_va40ext_item = -1; /* UE_Positioning_GANSS_TimeModel_va40ext */
static int hf_rrc_a_one_utc = -1; /* BIT_STRING_SIZE_24 */
static int hf_rrc_a_zero_utc = -1; /* BIT_STRING_SIZE_32 */
static int hf_rrc_t_ot_utc = -1; /* BIT_STRING_SIZE_8 */
@@ -7097,8 +7540,10 @@ static int hf_rrc_dn_utc = -1; /* BIT_STRING_SIZE_8 */
static int hf_rrc_delta_t_lsf_utc = -1; /* BIT_STRING_SIZE_8 */
static int hf_rrc_gps_ReferenceTime = -1; /* GPS_TOW_1msec */
static int hf_rrc_utran_GPSReferenceTime = -1; /* UTRAN_GPSReferenceTime */
-static int hf_rrc_satelliteInformationList_01 = -1; /* AcquisitionSatInfoList */
+static int hf_rrc_satelliteInformationList_03 = -1; /* AcquisitionSatInfoList */
static int hf_rrc_ue_Positioning_GPS_ReferenceTimeUncertainty = -1; /* UE_Positioning_GPS_ReferenceTimeUncertainty */
+static int hf_rrc_satelliteInformationList_04 = -1; /* AcquisitionSatInfoList_va40ext */
+static int hf_rrc_satelliteInformationList_05 = -1; /* AcquisitionSatInfoList_r10 */
static int hf_rrc_almanacRequest = -1; /* BOOLEAN */
static int hf_rrc_utcModelRequest = -1; /* BOOLEAN */
static int hf_rrc_ionosphericModelRequest = -1; /* BOOLEAN */
@@ -7121,13 +7566,19 @@ static int hf_rrc_ue_positioning_GPS_UTC_Model = -1; /* UE_Positioning_GPS_UTC_
static int hf_rrc_ue_positioning_GPS_Almanac = -1; /* UE_Positioning_GPS_Almanac */
static int hf_rrc_ue_positioning_GPS_AcquisitionAssistance = -1; /* UE_Positioning_GPS_AcquisitionAssistance */
static int hf_rrc_ue_positioning_GPS_Real_timeIntegrity = -1; /* BadSatList */
-static int hf_rrc_dummy_49 = -1; /* UE_Positioning_GPS_ReferenceCellInfo */
+static int hf_rrc_dummy_53 = -1; /* UE_Positioning_GPS_ReferenceCellInfo */
static int hf_rrc_ue_positioning_GPS_ReferenceTime_01 = -1; /* UE_Positioning_GPS_ReferenceTime_v770ext */
static int hf_rrc_ue_positioning_GPS_AcquisitionAssistance_01 = -1; /* UE_Positioning_GPS_AcquisitionAssistance_v770ext */
static int hf_rrc_ue_positioning_GPS_ReferenceTime_02 = -1; /* UE_Positioning_GPS_ReferenceTime_r7 */
static int hf_rrc_ue_positioning_GPS_AcquisitionAssistance_02 = -1; /* UE_Positioning_GPS_AcquisitionAssistance_r7 */
static int hf_rrc_ue_positioning_GPS_DGPS_Corrections_01 = -1; /* UE_Positioning_GPS_DGPS_Corrections_r9 */
static int hf_rrc_ue_positioning_GPS_DGPS_Corrections_02 = -1; /* UE_Positioning_GPS_DGPS_Corrections_v920ext */
+static int hf_rrc_ue_positioning_GPS_ReferenceTime_03 = -1; /* UE_Positioning_GPS_ReferenceTime_va40ext */
+static int hf_rrc_ue_positioning_GPS_Almanac_01 = -1; /* UE_Positioning_GPS_Almanac_va40ext */
+static int hf_rrc_ue_positioning_GPS_AcquisitionAssistance_03 = -1; /* UE_Positioning_GPS_AcquisitionAssistance_va40ext */
+static int hf_rrc_ue_positioning_GPS_ReferenceTime_04 = -1; /* UE_Positioning_GPS_ReferenceTime_r10 */
+static int hf_rrc_ue_positioning_GPS_Almanac_02 = -1; /* UE_Positioning_GPS_Almanac_r10 */
+static int hf_rrc_ue_positioning_GPS_AcquisitionAssistance_04 = -1; /* UE_Positioning_GPS_AcquisitionAssistance_r10 */
static int hf_rrc_gps_TOW = -1; /* GPS_TOW_1sec */
static int hf_rrc_statusHealth = -1; /* DiffCorrectionStatus */
static int hf_rrc_dgps_CorrectionSatInfoList = -1; /* DGPS_CorrectionSatInfoList */
@@ -7150,15 +7601,16 @@ static int hf_rrc_gps_Week = -1; /* INTEGER_0_1023 */
static int hf_rrc_gps_Toe = -1; /* INTEGER_0_255 */
static int hf_rrc_tToeLimit = -1; /* INTEGER_0_15 */
static int hf_rrc_satDataList = -1; /* SatDataList */
-static int hf_rrc_modeSpecificInfo_120 = -1; /* T_modeSpecificInfo_120 */
-static int hf_rrc_fdd_159 = -1; /* T_fdd_153 */
+static int hf_rrc_modeSpecificInfo_126 = -1; /* T_modeSpecificInfo_126 */
+static int hf_rrc_fdd_164 = -1; /* T_fdd_158 */
static int hf_rrc_referenceIdentity = -1; /* PrimaryCPICH_Info */
-static int hf_rrc_tdd_112 = -1; /* T_tdd_104 */
+static int hf_rrc_tdd_117 = -1; /* T_tdd_109 */
static int hf_rrc_referenceIdentity_01 = -1; /* CellParametersID */
static int hf_rrc_gps_tow_1msec = -1; /* GPS_TOW_1msec */
static int hf_rrc_sfn_tow_Uncertainty = -1; /* SFN_TOW_Uncertainty */
static int hf_rrc_utran_GPS_DriftRate = -1; /* UTRAN_GPS_DriftRate */
static int hf_rrc_gps_TOW_AssistList = -1; /* GPS_TOW_AssistList */
+static int hf_rrc_gps_Week_Cycle_Number = -1; /* INTEGER_0_7 */
static int hf_rrc_a1 = -1; /* BIT_STRING_SIZE_24 */
static int hf_rrc_a0 = -1; /* BIT_STRING_SIZE_32 */
static int hf_rrc_t_ot = -1; /* BIT_STRING_SIZE_8 */
@@ -7172,9 +7624,9 @@ static int hf_rrc_ip_Length = -1; /* IP_Length */
static int hf_rrc_ip_Offset = -1; /* INTEGER_0_9 */
static int hf_rrc_seed = -1; /* INTEGER_0_63 */
static int hf_rrc_burstModeParameters = -1; /* BurstModeParameters */
-static int hf_rrc_modeSpecificInfo_121 = -1; /* T_modeSpecificInfo_121 */
-static int hf_rrc_fdd_160 = -1; /* T_fdd_154 */
-static int hf_rrc_tdd_113 = -1; /* T_tdd_105 */
+static int hf_rrc_modeSpecificInfo_127 = -1; /* T_modeSpecificInfo_127 */
+static int hf_rrc_fdd_165 = -1; /* T_fdd_159 */
+static int hf_rrc_tdd_118 = -1; /* T_tdd_110 */
static int hf_rrc_ip_Spacing_TDD = -1; /* IP_Spacing_TDD */
static int hf_rrc_ip_slot = -1; /* INTEGER_0_14 */
static int hf_rrc_ip_Start = -1; /* INTEGER_0_4095 */
@@ -7192,19 +7644,21 @@ static int hf_rrc_ue_Positioning_OTDOA_Measurement_v390ext = -1; /* UE_Position
static int hf_rrc_ue_positioning_Error_02 = -1; /* UE_Positioning_Error_v860ext */
static int hf_rrc_ue_positioning_Ganss_MeasurementResults = -1; /* UE_Positioning_GANSS_MeasuredResults_v860ext */
static int hf_rrc_ue_positioning_ReportingQuantity = -1; /* UE_Positioning_ReportingQuantity */
-static int hf_rrc_reportCriteria_16 = -1; /* UE_Positioning_ReportCriteria */
+static int hf_rrc_reportCriteria_17 = -1; /* UE_Positioning_ReportCriteria */
static int hf_rrc_ue_positioning_OTDOA_AssistanceData = -1; /* UE_Positioning_OTDOA_AssistanceData */
static int hf_rrc_ue_positioning_ReportingQuantity_v390ext = -1; /* UE_Positioning_ReportingQuantity_v390ext */
static int hf_rrc_ue_positioning_ReportingQuantity_01 = -1; /* UE_Positioning_ReportingQuantity_r4 */
static int hf_rrc_ue_positioning_OTDOA_AssistanceData_01 = -1; /* UE_Positioning_OTDOA_AssistanceData_r4 */
static int hf_rrc_ue_positioning_ReportingQuantity_02 = -1; /* UE_Positioning_ReportingQuantity_r7 */
-static int hf_rrc_reportCriteria_17 = -1; /* UE_Positioning_ReportCriteria_r7 */
+static int hf_rrc_reportCriteria_18 = -1; /* UE_Positioning_ReportCriteria_r7 */
static int hf_rrc_ue_positioning_OTDOA_AssistanceData_02 = -1; /* UE_Positioning_OTDOA_AssistanceData_r7 */
static int hf_rrc_ue_positioning_GPS_AssistanceData_01 = -1; /* UE_Positioning_GPS_AssistanceData_r7 */
static int hf_rrc_ue_positioning_ReportingQuantity_03 = -1; /* UE_Positioning_ReportingQuantity_r8 */
static int hf_rrc_ue_positioning_GANSS_AssistanceData_01 = -1; /* UE_Positioning_GANSS_AssistanceData_r8 */
static int hf_rrc_ue_positioning_GPS_AssistanceData_02 = -1; /* UE_Positioning_GPS_AssistanceData_r9 */
static int hf_rrc_ue_positioning_GANSS_AssistanceData_02 = -1; /* UE_Positioning_GANSS_AssistanceData_r9 */
+static int hf_rrc_ue_positioning_GPS_AssistanceData_03 = -1; /* UE_Positioning_GPS_AssistanceData_r10 */
+static int hf_rrc_ue_positioning_GANSS_AssistanceData_03 = -1; /* UE_Positioning_GANSS_AssistanceData_r10 */
static int hf_rrc_event7a = -1; /* UE_Positioning_PositionEstimateInfo */
static int hf_rrc_event7b = -1; /* UE_Positioning_OTDOA_Measurement */
static int hf_rrc_event7c = -1; /* UE_Positioning_GPS_MeasurementResults */
@@ -7227,17 +7681,17 @@ static int hf_rrc_ue_positioning_OTDOA_ReferenceCellInfo_02 = -1; /* UE_Positio
static int hf_rrc_ue_positioning_OTDOA_NeighbourCellList_02 = -1; /* UE_Positioning_OTDOA_NeighbourCellList_r7 */
static int hf_rrc_UE_Positioning_IPDL_Parameters_TDDList_r4_ext_item = -1; /* UE_Positioning_IPDL_Parameters_TDD_r4_ext */
static int hf_rrc_neighbourList = -1; /* NeighbourList_TDD_r7 */
-static int hf_rrc_modeSpecificInfo_122 = -1; /* T_modeSpecificInfo_122 */
-static int hf_rrc_fdd_161 = -1; /* T_fdd_155 */
+static int hf_rrc_modeSpecificInfo_128 = -1; /* T_modeSpecificInfo_128 */
+static int hf_rrc_fdd_166 = -1; /* T_fdd_160 */
static int hf_rrc_referenceCellIDentity = -1; /* PrimaryCPICH_Info */
static int hf_rrc_ue_RX_TX_TimeDifferenceType2Info = -1; /* UE_RX_TX_TimeDifferenceType2Info */
-static int hf_rrc_tdd_114 = -1; /* T_tdd_106 */
+static int hf_rrc_tdd_119 = -1; /* T_tdd_111 */
static int hf_rrc_referenceCellIdentity = -1; /* CellParametersID */
static int hf_rrc_neighbourList_01 = -1; /* NeighbourList */
static int hf_rrc_neighbourList_v390ext = -1; /* NeighbourList_v390ext */
-static int hf_rrc_modeSpecificInfo_123 = -1; /* T_modeSpecificInfo_123 */
-static int hf_rrc_fdd_162 = -1; /* T_fdd_156 */
-static int hf_rrc_tdd_115 = -1; /* T_tdd_107 */
+static int hf_rrc_modeSpecificInfo_129 = -1; /* T_modeSpecificInfo_129 */
+static int hf_rrc_fdd_167 = -1; /* T_fdd_161 */
+static int hf_rrc_tdd_120 = -1; /* T_tdd_112 */
static int hf_rrc_cellAndChannelIdentity = -1; /* CellAndChannelIdentity */
static int hf_rrc_ue_positioning_IPDL_Paremeters = -1; /* UE_Positioning_IPDL_Parameters */
static int hf_rrc_sfn_SFN_RelTimeDifference = -1; /* SFN_SFN_RelTimeDifference1 */
@@ -7246,9 +7700,9 @@ static int hf_rrc_searchWindowSize = -1; /* OTDOA_SearchWindowSize */
static int hf_rrc_positioningMode = -1; /* T_positioningMode */
static int hf_rrc_ueBased = -1; /* T_ueBased */
static int hf_rrc_ueAssisted = -1; /* T_ueAssisted */
-static int hf_rrc_modeSpecificInfo_124 = -1; /* T_modeSpecificInfo_124 */
-static int hf_rrc_fdd_163 = -1; /* T_fdd_157 */
-static int hf_rrc_tdd_116 = -1; /* T_tdd_108 */
+static int hf_rrc_modeSpecificInfo_130 = -1; /* T_modeSpecificInfo_130 */
+static int hf_rrc_fdd_168 = -1; /* T_fdd_162 */
+static int hf_rrc_tdd_121 = -1; /* T_tdd_113 */
static int hf_rrc_ue_positioning_IPDL_Paremeters_01 = -1; /* UE_Positioning_IPDL_Parameters_r4 */
static int hf_rrc_positioningMode_01 = -1; /* T_positioningMode_01 */
static int hf_rrc_ueBased_01 = -1; /* T_ueBased_01 */
@@ -7258,13 +7712,13 @@ static int hf_rrc_relativeAltitude = -1; /* INTEGER_M4000_4000 */
static int hf_rrc_fineSFN_SFN = -1; /* FineSFN_SFN */
static int hf_rrc_roundTripTime = -1; /* INTEGER_0_32766 */
static int hf_rrc_ueAssisted_01 = -1; /* T_ueAssisted_01 */
-static int hf_rrc_modeSpecificInfo_125 = -1; /* T_modeSpecificInfo_125 */
-static int hf_rrc_fdd_164 = -1; /* T_fdd_158 */
-static int hf_rrc_tdd_117 = -1; /* T_tdd_109 */
+static int hf_rrc_modeSpecificInfo_131 = -1; /* T_modeSpecificInfo_131 */
+static int hf_rrc_fdd_169 = -1; /* T_fdd_163 */
+static int hf_rrc_tdd_122 = -1; /* T_tdd_114 */
static int hf_rrc_roundTripTimeExtension = -1; /* INTEGER_0_70274 */
-static int hf_rrc_modeSpecificInfo_126 = -1; /* T_modeSpecificInfo_126 */
-static int hf_rrc_fdd_165 = -1; /* T_fdd_159 */
-static int hf_rrc_tdd_118 = -1; /* T_tdd_110 */
+static int hf_rrc_modeSpecificInfo_132 = -1; /* T_modeSpecificInfo_132 */
+static int hf_rrc_fdd_170 = -1; /* T_fdd_164 */
+static int hf_rrc_tdd_123 = -1; /* T_tdd_115 */
static int hf_rrc_positioningMode_02 = -1; /* T_positioningMode_02 */
static int hf_rrc_ueBased_02 = -1; /* T_ueBased_02 */
static int hf_rrc_ueAssisted_02 = -1; /* T_ueAssisted_02 */
@@ -7276,33 +7730,33 @@ static int hf_rrc_UE_Positioning_OTDOA_NeighbourCellList_r7_item = -1; /* UE_Po
static int hf_rrc_stdResolution = -1; /* BIT_STRING_SIZE_2 */
static int hf_rrc_numberOfOTDOA_Measurements = -1; /* BIT_STRING_SIZE_3 */
static int hf_rrc_stdOfOTDOA_Measurements = -1; /* BIT_STRING_SIZE_5 */
-static int hf_rrc_modeSpecificInfo_127 = -1; /* T_modeSpecificInfo_127 */
-static int hf_rrc_fdd_166 = -1; /* T_fdd_160 */
-static int hf_rrc_tdd_119 = -1; /* T_tdd_111 */
+static int hf_rrc_modeSpecificInfo_133 = -1; /* T_modeSpecificInfo_133 */
+static int hf_rrc_fdd_171 = -1; /* T_fdd_165 */
+static int hf_rrc_tdd_124 = -1; /* T_tdd_116 */
static int hf_rrc_positioningMode_03 = -1; /* T_positioningMode_03 */
static int hf_rrc_ueBased_03 = -1; /* T_ueBased_03 */
static int hf_rrc_ueAssisted_03 = -1; /* T_ueAssisted_03 */
-static int hf_rrc_modeSpecificInfo_128 = -1; /* T_modeSpecificInfo_128 */
-static int hf_rrc_fdd_167 = -1; /* T_fdd_161 */
-static int hf_rrc_tdd_120 = -1; /* T_tdd_112 */
+static int hf_rrc_modeSpecificInfo_134 = -1; /* T_modeSpecificInfo_134 */
+static int hf_rrc_fdd_172 = -1; /* T_fdd_166 */
+static int hf_rrc_tdd_125 = -1; /* T_tdd_117 */
static int hf_rrc_positioningMode_04 = -1; /* T_positioningMode_04 */
static int hf_rrc_ueBased_04 = -1; /* T_ueBased_04 */
static int hf_rrc_cellPosition = -1; /* ReferenceCellPosition */
static int hf_rrc_ueAssisted_04 = -1; /* T_ueAssisted_04 */
-static int hf_rrc_modeSpecificInfo_129 = -1; /* T_modeSpecificInfo_129 */
-static int hf_rrc_fdd_168 = -1; /* T_fdd_162 */
-static int hf_rrc_tdd_121 = -1; /* T_tdd_113 */
-static int hf_rrc_modeSpecificInfo_130 = -1; /* T_modeSpecificInfo_130 */
-static int hf_rrc_fdd_169 = -1; /* T_fdd_163 */
-static int hf_rrc_tdd_122 = -1; /* T_tdd_114 */
+static int hf_rrc_modeSpecificInfo_135 = -1; /* T_modeSpecificInfo_135 */
+static int hf_rrc_fdd_173 = -1; /* T_fdd_167 */
+static int hf_rrc_tdd_126 = -1; /* T_tdd_118 */
+static int hf_rrc_modeSpecificInfo_136 = -1; /* T_modeSpecificInfo_136 */
+static int hf_rrc_fdd_174 = -1; /* T_fdd_168 */
+static int hf_rrc_tdd_127 = -1; /* T_tdd_119 */
static int hf_rrc_positioningMode_05 = -1; /* T_positioningMode_05 */
static int hf_rrc_ueBased_05 = -1; /* T_ueBased_05 */
static int hf_rrc_ueAssisted_05 = -1; /* T_ueAssisted_05 */
static int hf_rrc_referenceTime_02 = -1; /* T_referenceTime_02 */
static int hf_rrc_cell_Timing = -1; /* T_cell_Timing */
-static int hf_rrc_modeSpecificInfo_131 = -1; /* T_modeSpecificInfo_131 */
-static int hf_rrc_fdd_170 = -1; /* T_fdd_164 */
-static int hf_rrc_tdd_123 = -1; /* T_tdd_115 */
+static int hf_rrc_modeSpecificInfo_137 = -1; /* T_modeSpecificInfo_137 */
+static int hf_rrc_fdd_175 = -1; /* T_fdd_169 */
+static int hf_rrc_tdd_128 = -1; /* T_tdd_120 */
static int hf_rrc_positionEstimate = -1; /* PositionEstimate */
static int hf_rrc_referenceTimeOptions = -1; /* T_referenceTimeOptions */
static int hf_rrc_earlier_than_r7 = -1; /* NULL */
@@ -7353,9 +7807,9 @@ static int hf_rrc_ms_Part = -1; /* INTEGER_0_80 */
static int hf_rrc_ls_Part = -1; /* INTEGER_0_4294967295 */
static int hf_rrc_gANSS_TimeId = -1; /* INTEGER_0_7 */
static int hf_rrc_gANSS_TimeUncertainty = -1; /* INTEGER_0_127 */
-static int hf_rrc_mode_01 = -1; /* T_mode_01 */
-static int hf_rrc_fdd_171 = -1; /* T_fdd_165 */
-static int hf_rrc_tdd_124 = -1; /* T_tdd_116 */
+static int hf_rrc_mode_02 = -1; /* T_mode_02 */
+static int hf_rrc_fdd_176 = -1; /* T_fdd_170 */
+static int hf_rrc_tdd_129 = -1; /* T_tdd_121 */
static int hf_rrc_UTRAN_FDD_FrequencyList_item = -1; /* UTRAN_FDD_Frequency */
static int hf_rrc_qQualMinFDD = -1; /* INTEGER_M24_0 */
static int hf_rrc_qRxLevMinFDD = -1; /* INTEGER_M60_M13 */
@@ -7364,14 +7818,14 @@ static int hf_rrc_qRxLevMinTDD = -1; /* INTEGER_M60_M13 */
static int hf_rrc_utran_GPSTimingOfCell = -1; /* T_utran_GPSTimingOfCell */
static int hf_rrc_ms_part = -1; /* INTEGER_0_1023 */
static int hf_rrc_ls_part = -1; /* INTEGER_0_4294967295 */
-static int hf_rrc_modeSpecificInfo_132 = -1; /* T_modeSpecificInfo_132 */
-static int hf_rrc_fdd_172 = -1; /* T_fdd_166 */
-static int hf_rrc_tdd_125 = -1; /* T_tdd_117 */
+static int hf_rrc_modeSpecificInfo_138 = -1; /* T_modeSpecificInfo_138 */
+static int hf_rrc_fdd_177 = -1; /* T_fdd_171 */
+static int hf_rrc_tdd_130 = -1; /* T_tdd_122 */
static int hf_rrc_ue_GPSTimingOfCell = -1; /* T_ue_GPSTimingOfCell */
static int hf_rrc_ms_part_01 = -1; /* INTEGER_0_16383 */
-static int hf_rrc_modeSpecificInfo_133 = -1; /* T_modeSpecificInfo_133 */
-static int hf_rrc_fdd_173 = -1; /* T_fdd_167 */
-static int hf_rrc_tdd_126 = -1; /* T_tdd_118 */
+static int hf_rrc_modeSpecificInfo_139 = -1; /* T_modeSpecificInfo_139 */
+static int hf_rrc_fdd_178 = -1; /* T_fdd_172 */
+static int hf_rrc_tdd_131 = -1; /* T_tdd_123 */
static int hf_rrc_utra_ServingCell = -1; /* T_utra_ServingCell */
static int hf_rrc_s_PrioritySearch1 = -1; /* INTEGER_0_31 */
static int hf_rrc_s_PrioritySearch2 = -1; /* INTEGER_0_7 */
@@ -7399,10 +7853,10 @@ static int hf_rrc_dataTransmFrequency = -1; /* DataTransmFrequency */
static int hf_rrc_dataVolumePerRB = -1; /* DataVolumePerRB_List */
static int hf_rrc_dataVolume = -1; /* INTEGER_0_4294967295 */
static int hf_rrc_DataVolumePerRB_List_item = -1; /* DataVolumePerRB */
-static int hf_rrc_modeSpecificInfo_134 = -1; /* T_modeSpecificInfo_134 */
-static int hf_rrc_fdd_174 = -1; /* T_fdd_168 */
+static int hf_rrc_modeSpecificInfo_140 = -1; /* T_modeSpecificInfo_140 */
+static int hf_rrc_fdd_179 = -1; /* T_fdd_173 */
static int hf_rrc_intraFreqMeasQuantity_FDD_01 = -1; /* IntraFreqMeasQuantity_FDD_sib3 */
-static int hf_rrc_tdd_127 = -1; /* T_tdd_119 */
+static int hf_rrc_tdd_132 = -1; /* T_tdd_124 */
static int hf_rrc_intraFreqMeasQuantity_TDDList_01 = -1; /* IntraFreqMeasQuantity_TDD_sib3List */
static int hf_rrc_warningType = -1; /* OCTET_STRING_SIZE_1_2 */
static int hf_rrc_messageIdentifier = -1; /* OCTET_STRING_SIZE_2 */
@@ -7450,8 +7904,6 @@ static int hf_rrc_gsm_18 = -1; /* T_gsm_16 */
static int hf_rrc_gsmSecurityCapability = -1; /* GsmSecurityCapability */
static int hf_rrc_InterRAT_UE_SecurityCapList_item = -1; /* InterRAT_UE_SecurityCapability */
static int hf_rrc_interRAT_ProtocolError = -1; /* NULL */
-static int hf_rrc_spare11 = -1; /* NULL */
-static int hf_rrc_spare10 = -1; /* NULL */
static int hf_rrc_plmn_Type = -1; /* PLMN_Type */
static int hf_rrc_sibSb_ReferenceList = -1; /* SIBSb_ReferenceList */
static int hf_rrc_v690NonCriticalExtensions_48 = -1; /* T_v690NonCriticalExtensions_48 */
@@ -7460,7 +7912,7 @@ static int hf_rrc_v6b0NonCriticalExtensions_16 = -1; /* T_v6b0NonCriticalExtens
static int hf_rrc_masterInformationBlock_v6b0ext = -1; /* MasterInformationBlock_v6b0ext_IEs */
static int hf_rrc_v860NonCriticalExtensions_26 = -1; /* T_v860NonCriticalExtensions_26 */
static int hf_rrc_masterInformationBlock_v860ext = -1; /* MasterInformationBlock_v860ext_IEs */
-static int hf_rrc_nonCriticalExtensions_167 = -1; /* T_nonCriticalExtensions_167 */
+static int hf_rrc_nonCriticalExtensions_181 = -1; /* T_nonCriticalExtensions_181 */
static int hf_rrc_multiplePLMN_List = -1; /* MultiplePLMN_List_r6 */
static int hf_rrc_extSIBTypeInfoSchedulingInfo_List = -1; /* ExtSIBTypeInfoSchedulingInfo_List */
static int hf_rrc_extSIBTypeInfoSchedulingInfo_List_01 = -1; /* ExtSIBTypeInfoSchedulingInfo_List2 */
@@ -7506,7 +7958,7 @@ static int hf_rrc_sysInfoType4 = -1; /* CellValueTag */
static int hf_rrc_sysInfoType5_01 = -1; /* CellValueTag */
static int hf_rrc_sysInfoType6 = -1; /* CellValueTag */
static int hf_rrc_sysInfoType7_01 = -1; /* NULL */
-static int hf_rrc_dummy_50 = -1; /* CellValueTag */
+static int hf_rrc_dummy_54 = -1; /* CellValueTag */
static int hf_rrc_dummy2_13 = -1; /* NULL */
static int hf_rrc_dummy3_03 = -1; /* NULL */
static int hf_rrc_sysInfoType11_01 = -1; /* CellValueTag */
@@ -7541,16 +7993,17 @@ static int hf_rrc_systemInfoType19 = -1; /* NULL */
static int hf_rrc_systemInfoType15_2ter = -1; /* NULL */
static int hf_rrc_systemInfoType20 = -1; /* NULL */
static int hf_rrc_SibOFF_List_item = -1; /* SibOFF */
+static int hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo_03 = -1; /* T_cn_CommonGSM_MAP_NAS_SysInfo_03 */
static int hf_rrc_cn_DomainSysInfoList = -1; /* CN_DomainSysInfoList */
static int hf_rrc_ue_IdleTimersAndConstants = -1; /* UE_IdleTimersAndConstants */
static int hf_rrc_v3a0NonCriticalExtensions_12 = -1; /* T_v3a0NonCriticalExtensions_12 */
static int hf_rrc_sysInfoType1_v3a0ext = -1; /* SysInfoType1_v3a0ext_IEs */
static int hf_rrc_v860NonCriticalExtentions_02 = -1; /* T_v860NonCriticalExtentions_02 */
static int hf_rrc_sysInfoType1_v860ext = -1; /* SysInfoType1_v860ext_IEs */
-static int hf_rrc_nonCriticalExtensions_168 = -1; /* T_nonCriticalExtensions_168 */
+static int hf_rrc_nonCriticalExtensions_182 = -1; /* T_nonCriticalExtensions_182 */
static int hf_rrc_ue_IdleTimersAndConstants_v3a0ext = -1; /* UE_IdleTimersAndConstants_v3a0ext */
static int hf_rrc_ura_IdentityList = -1; /* URA_IdentityList */
-static int hf_rrc_nonCriticalExtensions_169 = -1; /* T_nonCriticalExtensions_169 */
+static int hf_rrc_nonCriticalExtensions_183 = -1; /* T_nonCriticalExtensions_183 */
static int hf_rrc_sib4indicator = -1; /* BOOLEAN */
static int hf_rrc_cellSelectReselectInfo = -1; /* CellSelectReselectInfoSIB_3_4 */
static int hf_rrc_cellAccessRestriction = -1; /* CellAccessRestriction */
@@ -7572,7 +8025,7 @@ static int hf_rrc_v870NonCriticalExtension = -1; /* T_v870NonCriticalExtension
static int hf_rrc_sysInfoType3_v870ext = -1; /* SysInfoType3_v870ext_IEs */
static int hf_rrc_v900NonCriticalExtension = -1; /* T_v900NonCriticalExtension */
static int hf_rrc_sysInfoType3_v920ext = -1; /* SysInfoType3_v920ext_IEs */
-static int hf_rrc_nonCriticalExtensions_170 = -1; /* T_nonCriticalExtensions_170 */
+static int hf_rrc_nonCriticalExtensions_184 = -1; /* T_nonCriticalExtensions_184 */
static int hf_rrc_mapping_LCR = -1; /* Mapping_LCR_r4 */
static int hf_rrc_cellSelectReselectInfo_v590ext = -1; /* CellSelectReselectInfo_v590ext */
static int hf_rrc_cellSelectReselectInfoTreselectionScaling_v5c0ext = -1; /* CellSelectReselectInfoTreselectionScaling_v5c0ext */
@@ -7595,14 +8048,14 @@ static int hf_rrc_v5b0NonCriticalExtension = -1; /* T_v5b0NonCriticalExtension
static int hf_rrc_sysInfoType4_v5b0ext = -1; /* SysInfoType4_v5b0ext_IEs */
static int hf_rrc_v5c0NonCriticalExtension = -1; /* T_v5c0NonCriticalExtension */
static int hf_rrc_sysInfoType4_v5c0ext = -1; /* SysInfoType4_v5c0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_171 = -1; /* T_nonCriticalExtensions_171 */
+static int hf_rrc_nonCriticalExtensions_185 = -1; /* T_nonCriticalExtensions_185 */
static int hf_rrc_cellSelectReselectInfoPCHFACH_v5b0ext = -1; /* CellSelectReselectInfoPCHFACH_v5b0ext */
static int hf_rrc_sib6indicator = -1; /* BOOLEAN */
static int hf_rrc_pich_PowerOffset = -1; /* PICH_PowerOffset */
-static int hf_rrc_modeSpecificInfo_135 = -1; /* T_modeSpecificInfo_135 */
-static int hf_rrc_fdd_175 = -1; /* T_fdd_169 */
+static int hf_rrc_modeSpecificInfo_141 = -1; /* T_modeSpecificInfo_141 */
+static int hf_rrc_fdd_180 = -1; /* T_fdd_174 */
static int hf_rrc_aich_PowerOffset = -1; /* AICH_PowerOffset */
-static int hf_rrc_tdd_128 = -1; /* T_tdd_120 */
+static int hf_rrc_tdd_133 = -1; /* T_tdd_125 */
static int hf_rrc_pusch_SysInfoList_SFN = -1; /* PUSCH_SysInfoList_SFN */
static int hf_rrc_pdsch_SysInfoList_SFN = -1; /* PDSCH_SysInfoList_SFN */
static int hf_rrc_openLoopPowerControl_TDD = -1; /* OpenLoopPowerControl_TDD */
@@ -7629,7 +8082,9 @@ static int hf_rrc_v8b0NonCriticalExtensions_01 = -1; /* T_v8b0NonCriticalExtens
static int hf_rrc_sysInfoType5_v8b0ext = -1; /* SysInfoType5_v8b0ext_IEs */
static int hf_rrc_v8d0NonCriticalExtensions = -1; /* T_v8d0NonCriticalExtensions */
static int hf_rrc_sysInfoType5_v8d0ext = -1; /* SysInfoType5_v8d0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_172 = -1; /* T_nonCriticalExtensions_172 */
+static int hf_rrc_va40NonCriticalExtensions_19 = -1; /* T_va40NonCriticalExtensions_18 */
+static int hf_rrc_sysInfoType5_va40ext = -1; /* SysInfoType5_va40ext_IEs */
+static int hf_rrc_nonCriticalExtensions_186 = -1; /* T_nonCriticalExtensions_186 */
static int hf_rrc_pNBSCH_Allocation_r4 = -1; /* PNBSCH_Allocation_r4 */
static int hf_rrc_prach_SystemInformationList_LCR_r4 = -1; /* PRACH_SystemInformationList_LCR_r4 */
static int hf_rrc_tdd128SpecificInfo = -1; /* T_tdd128SpecificInfo */
@@ -7649,25 +8104,25 @@ static int hf_rrc_mcchOnSCCPCHusedForNonMBMS = -1; /* MBMS_MCCH_ConfigurationIn
static int hf_rrc_mcchOnSCCPCHusedOnlyForMBMS = -1; /* SCCPCH_SystemInformation_MBMS_r6 */
static int hf_rrc_additionalPRACH_TF_and_TFCS_CCCH_List = -1; /* AdditionalPRACH_TF_and_TFCS_CCCH_List */
static int hf_rrc_cBS_DRX_Level1Information_extension = -1; /* CBS_DRX_Level1Information_extension_r6 */
-static int hf_rrc_modeSpecificInfo_136 = -1; /* T_modeSpecificInfo_136 */
-static int hf_rrc_fdd_176 = -1; /* T_fdd_170 */
+static int hf_rrc_modeSpecificInfo_142 = -1; /* T_modeSpecificInfo_142 */
+static int hf_rrc_fdd_181 = -1; /* T_fdd_175 */
static int hf_rrc_hs_dsch_CommonSystemInformation = -1; /* HS_DSCH_CommonSystemInformation */
static int hf_rrc_hs_dsch_PagingSystemInformation = -1; /* HS_DSCH_PagingSystemInformation */
-static int hf_rrc_tdd768_23 = -1; /* T_tdd768_20 */
+static int hf_rrc_tdd768_24 = -1; /* T_tdd768_21 */
static int hf_rrc_pusch_SysInfoList_SFN_03 = -1; /* PUSCH_SysInfoList_SFN_VHCR */
static int hf_rrc_pdsch_SysInfoList_SFN_03 = -1; /* PDSCH_SysInfoList_VHCR_r7 */
static int hf_rrc_prach_SystemInformationList_01 = -1; /* PRACH_SystemInformationList_VHCR_r7 */
-static int hf_rrc_tdd128_62 = -1; /* T_tdd128_59 */
+static int hf_rrc_tdd128_66 = -1; /* T_tdd128_63 */
static int hf_rrc_prach_SystemInformationList_02 = -1; /* PRACH_SystemInformationList_LCR_v770ext */
static int hf_rrc_sccpch_SystemInformationList = -1; /* SCCPCH_SystemInformationList_HCR_VHCR_r7 */
static int hf_rrc_sccpch_SystemInformation_MBMS_01 = -1; /* T_sccpch_SystemInformation_MBMS_01 */
static int hf_rrc_mcchOnSCCPCHusedOnlyForMBMS_01 = -1; /* SCCPCH_SystemInformation_MBMS_r7 */
static int hf_rrc_tDD_MBSFNInformation = -1; /* TDD_MBSFNInformation */
-static int hf_rrc_dummy_51 = -1; /* T_dummy_15 */
-static int hf_rrc_modeSpecificInfo_137 = -1; /* T_modeSpecificInfo_137 */
-static int hf_rrc_fdd_177 = -1; /* T_fdd_171 */
+static int hf_rrc_dummy_55 = -1; /* T_dummy_15 */
+static int hf_rrc_modeSpecificInfo_143 = -1; /* T_modeSpecificInfo_143 */
+static int hf_rrc_fdd_182 = -1; /* T_fdd_176 */
static int hf_rrc_hs_dsch_DrxCellfach_info = -1; /* HS_DSCH_DrxCellfach_info */
-static int hf_rrc_tdd128_63 = -1; /* T_tdd128_60 */
+static int hf_rrc_tdd128_67 = -1; /* T_tdd128_64 */
static int hf_rrc_hs_dsch_CommonSysInfo = -1; /* T_hs_dsch_CommonSysInfo */
static int hf_rrc_hs_dsch_CommonSystemInformation_01 = -1; /* HS_DSCH_CommonSystemInformation_TDD128 */
static int hf_rrc_hs_dsch_PagingSystemInformation_01 = -1; /* HS_DSCH_PagingSystemInformation_TDD128 */
@@ -7675,10 +8130,12 @@ static int hf_rrc_hs_dsch_DrxCellfach_info_01 = -1; /* HS_DSCH_DrxCellfach_info
static int hf_rrc_commonEDCHSystemInfo = -1; /* CommonEDCHSystemInfo */
static int hf_rrc_tresetUsageIndicator = -1; /* T_tresetUsageIndicator */
static int hf_rrc_commonEDCHSystemInfoFDD = -1; /* CommonEDCHSystemInfoFDD */
-static int hf_rrc_modeSpecificInfo_138 = -1; /* T_modeSpecificInfo_138 */
-static int hf_rrc_fdd_178 = -1; /* T_fdd_172 */
-static int hf_rrc_dummy_52 = -1; /* CSICH_PowerOffset */
-static int hf_rrc_tdd_129 = -1; /* T_tdd_121 */
+static int hf_rrc_frequencyBandsIndicatorSupport = -1; /* FrequencyBandsIndicatorSupport */
+static int hf_rrc_frequencyBandIndicator3 = -1; /* RadioFrequencyBandFDD3 */
+static int hf_rrc_modeSpecificInfo_144 = -1; /* T_modeSpecificInfo_144 */
+static int hf_rrc_fdd_183 = -1; /* T_fdd_177 */
+static int hf_rrc_dummy_56 = -1; /* CSICH_PowerOffset */
+static int hf_rrc_tdd_134 = -1; /* T_tdd_126 */
static int hf_rrc_v4b0NonCriticalExtensions_20 = -1; /* T_v4b0NonCriticalExtensions_20 */
static int hf_rrc_sysInfoType6_v4b0ext = -1; /* SysInfoType6_v4b0ext_IEs */
static int hf_rrc_v590NonCriticalExtensions_29 = -1; /* T_v590NonCriticalExtensions_29 */
@@ -7689,25 +8146,27 @@ static int hf_rrc_v690nonCriticalExtensions = -1; /* T_v690nonCriticalExtension
static int hf_rrc_sysInfoType6_v690ext = -1; /* SysInfoType6_v690ext_IEs */
static int hf_rrc_v770NonCriticalExtensions_41 = -1; /* T_v770NonCriticalExtensions_41 */
static int hf_rrc_sysInfoType6_v770ext = -1; /* SysInfoType6_v770ext_IEs */
-static int hf_rrc_nonCriticalExtensions_173 = -1; /* T_nonCriticalExtensions_173 */
+static int hf_rrc_va40NonCriticalExtensions_20 = -1; /* T_va40NonCriticalExtensions_19 */
+static int hf_rrc_sysInfoType6_va40ext = -1; /* SysInfoType6_va40ext_IEs */
+static int hf_rrc_nonCriticalExtensions_187 = -1; /* T_nonCriticalExtensions_187 */
static int hf_rrc_tdd128SpecificInfo_01 = -1; /* T_tdd128SpecificInfo_01 */
static int hf_rrc_hcr_r5_SpecificInfo_01 = -1; /* T_hcr_r5_SpecificInfo_01 */
static int hf_rrc_tdd768SpecificInfo = -1; /* T_tdd768SpecificInfo */
-static int hf_rrc_modeSpecificInfo_139 = -1; /* T_modeSpecificInfo_139 */
-static int hf_rrc_fdd_179 = -1; /* T_fdd_173 */
+static int hf_rrc_modeSpecificInfo_145 = -1; /* T_modeSpecificInfo_145 */
+static int hf_rrc_fdd_184 = -1; /* T_fdd_178 */
static int hf_rrc_ul_Interference = -1; /* UL_Interference */
static int hf_rrc_prach_Information_SIB5_List = -1; /* DynamicPersistenceLevelList */
static int hf_rrc_prach_Information_SIB6_List = -1; /* DynamicPersistenceLevelList */
static int hf_rrc_expirationTimeFactor = -1; /* ExpirationTimeFactor */
-static int hf_rrc_nonCriticalExtensions_174 = -1; /* T_nonCriticalExtensions_174 */
+static int hf_rrc_nonCriticalExtensions_188 = -1; /* T_nonCriticalExtensions_188 */
static int hf_rrc_dummy1_07 = -1; /* CPCH_Parameters */
static int hf_rrc_dummy2_14 = -1; /* CPCH_SetInfoList */
static int hf_rrc_dummy3_04 = -1; /* CSICH_PowerOffset */
-static int hf_rrc_nonCriticalExtensions_175 = -1; /* T_nonCriticalExtensions_175 */
-static int hf_rrc_dummy_53 = -1; /* CPCH_PersistenceLevelsList */
-static int hf_rrc_nonCriticalExtensions_176 = -1; /* T_nonCriticalExtensions_176 */
-static int hf_rrc_dummy_54 = -1; /* DRAC_SysInfoList */
-static int hf_rrc_nonCriticalExtensions_177 = -1; /* T_nonCriticalExtensions_177 */
+static int hf_rrc_nonCriticalExtensions_189 = -1; /* T_nonCriticalExtensions_189 */
+static int hf_rrc_dummy_57 = -1; /* CPCH_PersistenceLevelsList */
+static int hf_rrc_nonCriticalExtensions_190 = -1; /* T_nonCriticalExtensions_190 */
+static int hf_rrc_dummy_58 = -1; /* DRAC_SysInfoList */
+static int hf_rrc_nonCriticalExtensions_191 = -1; /* T_nonCriticalExtensions_191 */
static int hf_rrc_sib12indicator = -1; /* BOOLEAN */
static int hf_rrc_fach_MeasurementOccasionInfo = -1; /* FACH_MeasurementOccasionInfo */
static int hf_rrc_measurementControlSysInfo = -1; /* MeasurementControlSysInfo */
@@ -7725,7 +8184,7 @@ static int hf_rrc_v7b0NonCriticalExtensions_02 = -1; /* T_v7b0NonCriticalExtens
static int hf_rrc_sysInfoType11_v7b0ext = -1; /* SysInfoType11_v7b0ext_IEs */
static int hf_rrc_v860NonCriticalExtensions_28 = -1; /* T_v860NonCriticalExtensions_28 */
static int hf_rrc_sysInfoType11_v860ext = -1; /* SysInfoType11_v860ext_IEs */
-static int hf_rrc_nonCriticalExtensions_178 = -1; /* T_nonCriticalExtensions_178 */
+static int hf_rrc_nonCriticalExtensions_192 = -1; /* T_nonCriticalExtensions_192 */
static int hf_rrc_fach_MeasurementOccasionInfo_LCR_Ext = -1; /* FACH_MeasurementOccasionInfo_LCR_r4_ext */
static int hf_rrc_measurementControlSysInfo_LCR = -1; /* MeasurementControlSysInfo_LCR_r4_ext */
static int hf_rrc_newIntraFrequencyCellInfoList_v590ext = -1; /* SEQUENCE_SIZE_1_maxCellMeas_OF_CellSelectReselectInfo_v590ext */
@@ -7735,7 +8194,7 @@ static int hf_rrc_newInterFrequencyCellInfoList_v590ext_item = -1; /* CellSelec
static int hf_rrc_newInterRATCellInfoList_v590ext = -1; /* SEQUENCE_SIZE_1_maxCellMeas_OF_CellSelectReselectInfo_v590ext */
static int hf_rrc_newInterRATCellInfoList_v590ext_item = -1; /* CellSelectReselectInfo_v590ext */
static int hf_rrc_intraFreqEventCriteriaList_v590ext = -1; /* Intra_FreqEventCriteriaList_v590ext */
-static int hf_rrc_dummy_55 = -1; /* Dummy_InterFreqRACHReportingInfo */
+static int hf_rrc_dummy_59 = -1; /* Dummy_InterFreqRACHReportingInfo */
static int hf_rrc_interFreqRACHReportingInfo = -1; /* InterFreqRACHReportingInfo */
static int hf_rrc_mbsfnFrequencyList = -1; /* MBSFNFrequencyList */
static int hf_rrc_mbsfnFrequencyList_01 = -1; /* MBSFNFrequencyList_v860ext */
@@ -7746,7 +8205,7 @@ static int hf_rrc_v7b0NonCriticalExtensions_03 = -1; /* T_v7b0NonCriticalExtens
static int hf_rrc_sysInfoType11bis_v7b0ext = -1; /* SysInfoType11bis_v7b0ext_IEs */
static int hf_rrc_v860NonCriticalExtensions_29 = -1; /* T_v860NonCriticalExtensions_29 */
static int hf_rrc_sysInfoType11bis_v860ext = -1; /* SysInfoType11bis_v860ext_IEs */
-static int hf_rrc_nonCriticalExtensions_179 = -1; /* T_nonCriticalExtensions_179 */
+static int hf_rrc_nonCriticalExtensions_193 = -1; /* T_nonCriticalExtensions_193 */
static int hf_rrc_csg_DedicatedFrequencyInfoList = -1; /* CSG_DedicatedFrequencyInfoList */
static int hf_rrc_v4b0NonCriticalExtensions_22 = -1; /* T_v4b0NonCriticalExtensions_22 */
static int hf_rrc_sysInfoType12_v4b0ext = -1; /* SysInfoType12_v4b0ext_IEs */
@@ -7758,90 +8217,104 @@ static int hf_rrc_v6b0NonCriticalExtensions_18 = -1; /* T_v6b0NonCriticalExtens
static int hf_rrc_sysInfoType12_v6b0ext = -1; /* SysInfoType12_v6b0ext_IEs */
static int hf_rrc_v7b0NonCriticalExtensions_04 = -1; /* T_v7b0NonCriticalExtensions_04 */
static int hf_rrc_sysInfoType12_v7b0ext = -1; /* SysInfoType12_v7b0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_180 = -1; /* T_nonCriticalExtensions_180 */
+static int hf_rrc_nonCriticalExtensions_194 = -1; /* T_nonCriticalExtensions_194 */
static int hf_rrc_v3a0NonCriticalExtensions_13 = -1; /* T_v3a0NonCriticalExtensions_13 */
static int hf_rrc_sysInfoType13_v3a0ext = -1; /* SysInfoType13_v3a0ext_IEs */
static int hf_rrc_v4b0NonCriticalExtensions_23 = -1; /* T_v4b0NonCriticalExtensions_23 */
static int hf_rrc_sysInfoType13_v4b0ext = -1; /* SysInfoType13_v4b0ext_IEs */
static int hf_rrc_v770NonCriticalExtensions_43 = -1; /* T_v770NonCriticalExtensions_43 */
static int hf_rrc_sysInfoType13_v770ext = -1; /* SysInfoType13_v770ext_IEs */
-static int hf_rrc_nonCriticalExtensions_181 = -1; /* T_nonCriticalExtensions_181 */
+static int hf_rrc_nonCriticalExtensions_195 = -1; /* T_nonCriticalExtensions_195 */
static int hf_rrc_capabilityUpdateRequirement_r4Ext = -1; /* CapabilityUpdateRequirement_r4_ext */
static int hf_rrc_ansi_41_RAND_Information = -1; /* ANSI_41_RAND_Information */
-static int hf_rrc_nonCriticalExtensions_182 = -1; /* T_nonCriticalExtensions_182 */
+static int hf_rrc_nonCriticalExtensions_196 = -1; /* T_nonCriticalExtensions_196 */
static int hf_rrc_ansi_41_UserZoneID_Information = -1; /* ANSI_41_UserZoneID_Information */
-static int hf_rrc_nonCriticalExtensions_183 = -1; /* T_nonCriticalExtensions_183 */
+static int hf_rrc_nonCriticalExtensions_197 = -1; /* T_nonCriticalExtensions_197 */
static int hf_rrc_ansi_41_PrivateNeighbourListInfo = -1; /* ANSI_41_PrivateNeighbourListInfo */
-static int hf_rrc_nonCriticalExtensions_184 = -1; /* T_nonCriticalExtensions_184 */
+static int hf_rrc_nonCriticalExtensions_198 = -1; /* T_nonCriticalExtensions_198 */
static int hf_rrc_ansi_41_GlobalServiceRedirectInfo = -1; /* ANSI_41_GlobalServiceRedirectInfo */
-static int hf_rrc_nonCriticalExtensions_185 = -1; /* T_nonCriticalExtensions_185 */
-static int hf_rrc_nonCriticalExtensions_186 = -1; /* T_nonCriticalExtensions_186 */
+static int hf_rrc_nonCriticalExtensions_199 = -1; /* T_nonCriticalExtensions_199 */
+static int hf_rrc_nonCriticalExtensions_200 = -1; /* T_nonCriticalExtensions_200 */
static int hf_rrc_ue_positioning_GPS_CipherParameters = -1; /* UE_Positioning_CipherParameters */
static int hf_rrc_v4b0NonCriticalExtensions_24 = -1; /* T_v4b0NonCriticalExtensions_24 */
static int hf_rrc_sysInfoType15_v4b0ext = -1; /* SysInfoType15_v4b0ext_IEs */
static int hf_rrc_v770NonCriticalExtensions_44 = -1; /* T_v770NonCriticalExtensions_44 */
static int hf_rrc_sysInfoType15_v770ext = -1; /* SysInfoType15_v770ext_IEs */
-static int hf_rrc_nonCriticalExtensions_187 = -1; /* T_nonCriticalExtensions_187 */
+static int hf_rrc_va40NonCriticalExtensions_21 = -1; /* T_va40NonCriticalExtensions_20 */
+static int hf_rrc_sysInfoType15_va40ext = -1; /* SysInfoType15_va40ext_IEs */
+static int hf_rrc_nonCriticalExtensions_201 = -1; /* T_nonCriticalExtensions_201 */
static int hf_rrc_up_Ipdl_Parameters_TDD = -1; /* UE_Positioning_IPDL_Parameters_TDD_r4_ext */
static int hf_rrc_ue_Positioning_GPS_ReferenceTime = -1; /* UE_Positioning_GPS_ReferenceTime_v770ext */
+static int hf_rrc_ue_Positioning_GPS_ReferenceTime_01 = -1; /* UE_Positioning_GPS_ReferenceTime_va40ext */
static int hf_rrc_ue_positioning_GANSS_ReferencePosition = -1; /* ReferenceLocationGANSS */
static int hf_rrc_ue_positioning_GANSS_IonosphericModel = -1; /* UE_Positioning_GANSS_IonosphericModel */
static int hf_rrc_v860NonCriticalExtensions_30 = -1; /* T_v860NonCriticalExtensions_30 */
static int hf_rrc_sysInfoType15bis_v860ext = -1; /* SysInfoType15bis_v860ext_IEs */
-static int hf_rrc_nonCriticalExtensions_188 = -1; /* T_nonCriticalExtensions_188 */
+static int hf_rrc_va40NonCriticalExtensions_22 = -1; /* T_va40NonCriticalExtensions_21 */
+static int hf_rrc_sysInfoType15bis_va40ext = -1; /* SysInfoType15bis_va40ext_IEs */
+static int hf_rrc_nonCriticalExtensions_202 = -1; /* T_nonCriticalExtensions_202 */
static int hf_rrc_ue_Positioning_GANSS_AddIonoModel = -1; /* UE_Positioning_GANSS_AddIonoModel */
static int hf_rrc_ue_Positioning_GANSS_EarthOrientationPara = -1; /* UE_Positioning_GANSS_EarthOrientPara */
static int hf_rrc_v920NonCriticalExtensions_04 = -1; /* T_v920NonCriticalExtensions_04 */
static int hf_rrc_sysInfoType15_1_v920ext = -1; /* SysInfoType15_1_v920ext_IEs */
-static int hf_rrc_nonCriticalExtensions_189 = -1; /* T_nonCriticalExtensions_189 */
+static int hf_rrc_nonCriticalExtensions_203 = -1; /* T_nonCriticalExtensions_203 */
static int hf_rrc_ue_positioning_GANSS_DGANSS_Corrections = -1; /* UE_Positioning_DGANSSCorrections */
static int hf_rrc_v920NonCriticalExtensions_05 = -1; /* T_v920NonCriticalExtensions_05 */
static int hf_rrc_sysInfoType15_1bis_v920ext = -1; /* SysInfoType15_1bis_v920ext_IEs */
-static int hf_rrc_nonCriticalExtensions_190 = -1; /* T_nonCriticalExtensions_190 */
+static int hf_rrc_nonCriticalExtensions_204 = -1; /* T_nonCriticalExtensions_204 */
static int hf_rrc_ue_positioning_GANSS_DGANSS_Corrections_01 = -1; /* UE_Positioning_DGANSSCorrections_v920ext */
static int hf_rrc_transmissionTOW = -1; /* GPS_TOW_1sec */
-static int hf_rrc_nonCriticalExtensions_191 = -1; /* T_nonCriticalExtensions_191 */
+static int hf_rrc_nonCriticalExtensions_205 = -1; /* T_nonCriticalExtensions_205 */
static int hf_rrc_ue_positioning_GANSS_navigationModel = -1; /* UE_Positioning_GANSS_NavigationModel */
-static int hf_rrc_nonCriticalExtensions_192 = -1; /* T_nonCriticalExtensions_192 */
+static int hf_rrc_nonCriticalExtensions_206 = -1; /* T_nonCriticalExtensions_206 */
static int hf_rrc_ue_positioning_GANSS_AddNavigationModels = -1; /* UE_Positioning_GANSS_AddNavigationModels */
-static int hf_rrc_nonCriticalExtensions_193 = -1; /* T_nonCriticalExtensions_193 */
+static int hf_rrc_nonCriticalExtensions_207 = -1; /* T_nonCriticalExtensions_207 */
static int hf_rrc_satMask = -1; /* BIT_STRING_SIZE_1_32 */
static int hf_rrc_lsbTOW = -1; /* BIT_STRING_SIZE_8 */
-static int hf_rrc_nonCriticalExtensions_194 = -1; /* T_nonCriticalExtensions_194 */
+static int hf_rrc_va40NonCriticalExtensions_23 = -1; /* T_va40NonCriticalExtensions_22 */
+static int hf_rrc_sysInfoType15_3_va40ext = -1; /* SysInfoType15_3_va40ext_IEs */
+static int hf_rrc_nonCriticalExtensions_208 = -1; /* T_nonCriticalExtensions_208 */
static int hf_rrc_ue_positioning_GANSS_Almanac = -1; /* UE_Positioning_GANSS_Almanac */
static int hf_rrc_ue_positioning_GANSS_TimeModels = -1; /* UE_Positioning_GANSS_TimeModels */
static int hf_rrc_ue_positioning_GANSS_UTC_Model = -1; /* UE_Positioning_GANSS_UTCModel */
static int hf_rrc_v860NonCriticalExtensions_31 = -1; /* T_v860NonCriticalExtensions_31 */
static int hf_rrc_sysInfoType15_3bis_v860ext = -1; /* SysInfoType15_3bis_v860ext_IEs */
-static int hf_rrc_nonCriticalExtensions_195 = -1; /* T_nonCriticalExtensions_195 */
+static int hf_rrc_va40NonCriticalExtensions_24 = -1; /* T_va40NonCriticalExtensions_23 */
+static int hf_rrc_sysInfoType15_3bis_va40ext = -1; /* SysInfoType15_3bis_va40ext_IEs */
+static int hf_rrc_nonCriticalExtensions_209 = -1; /* T_nonCriticalExtensions_209 */
static int hf_rrc_ue_Positioning_GANSS_Almanac = -1; /* UE_Positioning_GANSS_Almanac_v860ext */
static int hf_rrc_ue_Positioning_GANSS_AddUTCModels = -1; /* UE_Positioning_GANSS_AddUTCModels */
static int hf_rrc_ue_Positioning_GANSS_AuxiliaryInfo = -1; /* UE_Positioning_GANSS_AuxiliaryInfo */
+static int hf_rrc_ue_Positioning_GANSS_Almanac_01 = -1; /* UE_Positioning_GANSS_Almanac_va40ext */
+static int hf_rrc_ue_positioning_GANSS_TimeModels_01 = -1; /* UE_Positioning_GANSS_TimeModels_va40ext */
static int hf_rrc_ue_positioning_OTDOA_CipherParameters = -1; /* UE_Positioning_CipherParameters */
static int hf_rrc_v3a0NonCriticalExtensions_14 = -1; /* T_v3a0NonCriticalExtensions_14 */
static int hf_rrc_sysInfoType15_4_v3a0ext = -1; /* SysInfoType15_4_v3a0ext */
static int hf_rrc_v4b0NonCriticalExtensions_25 = -1; /* T_v4b0NonCriticalExtensions_25 */
static int hf_rrc_sysInfoType15_4_v4b0ext = -1; /* SysInfoType15_4_v4b0ext */
-static int hf_rrc_nonCriticalExtensions_196 = -1; /* T_nonCriticalExtensions_196 */
+static int hf_rrc_nonCriticalExtensions_210 = -1; /* T_nonCriticalExtensions_210 */
static int hf_rrc_v3a0NonCriticalExtensions_15 = -1; /* T_v3a0NonCriticalExtensions_15 */
static int hf_rrc_sysInfoType15_5_v3a0ext = -1; /* SysInfoType15_5_v3a0ext */
static int hf_rrc_v770NonCriticalExtensions_45 = -1; /* T_v770NonCriticalExtensions_45 */
static int hf_rrc_sysInfoType15_5_v770ext = -1; /* SysInfoType15_5_v770ext_IEs */
-static int hf_rrc_nonCriticalExtensions_197 = -1; /* T_nonCriticalExtensions_197 */
+static int hf_rrc_nonCriticalExtensions_211 = -1; /* T_nonCriticalExtensions_211 */
static int hf_rrc_ue_positioning_GANSS_TOD = -1; /* INTEGER_0_86399 */
static int hf_rrc_ue_positioning_GANSS_ReferenceMeasurementInformation = -1; /* UE_Positioning_GANSS_ReferenceMeasurementInfo */
-static int hf_rrc_nonCriticalExtensions_198 = -1; /* T_nonCriticalExtensions_198 */
+static int hf_rrc_va40NonCriticalExtensions_25 = -1; /* T_va40NonCriticalExtensions_24 */
+static int hf_rrc_sysInfoType15_6_va40ext = -1; /* SysInfoType15_6_va40ext_IEs */
+static int hf_rrc_nonCriticalExtensions_212 = -1; /* T_nonCriticalExtensions_212 */
+static int hf_rrc_ue_positioning_GANSS_ReferenceMeasurementInformation_01 = -1; /* UE_Positioning_GANSS_ReferenceMeasurementInfo_va40ext */
static int hf_rrc_ue_positioning_GANSS_DataBitAssistance = -1; /* UE_Positioning_GANSS_Data_Bit_Assistance */
-static int hf_rrc_nonCriticalExtensions_199 = -1; /* T_nonCriticalExtensions_199 */
+static int hf_rrc_nonCriticalExtensions_213 = -1; /* T_nonCriticalExtensions_213 */
static int hf_rrc_ue_positioning_GANSS_DataCipheringInfo = -1; /* UE_Positioning_CipherParameters */
static int hf_rrc_ue_positioning_GANSS_realTimeIntegrity = -1; /* UE_Positioning_GANSS_RealTimeIntegrity */
-static int hf_rrc_nonCriticalExtensions_200 = -1; /* T_nonCriticalExtensions_200 */
+static int hf_rrc_nonCriticalExtensions_214 = -1; /* T_nonCriticalExtensions_214 */
static int hf_rrc_preDefinedRadioConfiguration = -1; /* PreDefRadioConfiguration */
static int hf_rrc_v770NonCriticalExtensions_46 = -1; /* T_v770NonCriticalExtensions_46 */
static int hf_rrc_sysInfoType16_v770ext = -1; /* SysInfoType16_v770ext_IEs */
static int hf_rrc_v920NonCriticalExtensions_06 = -1; /* T_v920NonCriticalExtensions_06 */
static int hf_rrc_sysInfoType16_v920ext = -1; /* SysInfoType16_v920ext_IEs */
-static int hf_rrc_nonCriticalExtensions_201 = -1; /* T_nonCriticalExtensions_201 */
+static int hf_rrc_nonCriticalExtensions_215 = -1; /* T_nonCriticalExtensions_215 */
static int hf_rrc_preDefinedRadioConfiguration_01 = -1; /* PreDefRadioConfiguration_v770ext */
static int hf_rrc_preDefinedRadioConfiguration_02 = -1; /* PreDefRadioConfiguration_v920ext */
static int hf_rrc_pusch_SysInfoList = -1; /* PUSCH_SysInfoList */
@@ -7852,7 +8325,7 @@ static int hf_rrc_v590NonCriticalExtensions_30 = -1; /* T_v590NonCriticalExtens
static int hf_rrc_sysInfoType17_v590ext = -1; /* SysInfoType17_v590ext_IEs */
static int hf_rrc_v770NonCriticalExtensions_47 = -1; /* T_v770NonCriticalExtensions_47 */
static int hf_rrc_sysInfoType17_v770ext = -1; /* SysInfoType17_v770ext_IEs */
-static int hf_rrc_nonCriticalExtensions_202 = -1; /* T_nonCriticalExtensions_202 */
+static int hf_rrc_nonCriticalExtensions_216 = -1; /* T_nonCriticalExtensions_216 */
static int hf_rrc_tdd128SpecificInfo_02 = -1; /* T_tdd128SpecificInfo_02 */
static int hf_rrc_pusch_SysInfoList_01 = -1; /* PUSCH_SysInfoList_LCR_r4 */
static int hf_rrc_pdsch_SysInfoList_01 = -1; /* PDSCH_SysInfoList_LCR_r4 */
@@ -7866,7 +8339,7 @@ static int hf_rrc_v6b0NonCriticalExtensions_19 = -1; /* T_v6b0NonCriticalExtens
static int hf_rrc_sysInfoType18_v6b0ext = -1; /* SysInfoType18_v6b0ext */
static int hf_rrc_v860NonCriticalExtensions_32 = -1; /* T_v860NonCriticalExtensions_32 */
static int hf_rrc_sysInfoType18_v860ext = -1; /* SysInfoType18_v860ext */
-static int hf_rrc_nonCriticalExtensions_203 = -1; /* T_nonCriticalExtensions_203 */
+static int hf_rrc_nonCriticalExtensions_217 = -1; /* T_nonCriticalExtensions_217 */
static int hf_rrc_idleModePLMNIdentitiesSIB11bis = -1; /* PLMNIdentitiesOfNeighbourCells */
static int hf_rrc_connectedModePLMNIdentitiesSIB11bis = -1; /* PLMNIdentitiesOfNeighbourCells */
static int hf_rrc_idleModePLMNIdentities_01 = -1; /* PLMNIdentitiesOfNeighbourCells_v860ext */
@@ -7876,22 +8349,22 @@ static int hf_rrc_gsm_PriorityInfoList = -1; /* GSM_PriorityInfoList */
static int hf_rrc_eutra_FrequencyAndPriorityInfoList = -1; /* EUTRA_FrequencyAndPriorityInfoList */
static int hf_rrc_v920NonCriticalExtensions_07 = -1; /* T_v920NonCriticalExtensions_07 */
static int hf_rrc_sysInfoType19_v920ext = -1; /* SysInfoType19_v920ext */
-static int hf_rrc_nonCriticalExtensions_204 = -1; /* T_nonCriticalExtensions_204 */
+static int hf_rrc_nonCriticalExtensions_218 = -1; /* T_nonCriticalExtensions_218 */
static int hf_rrc_utra_PriorityInfoList_v920ext = -1; /* UTRA_PriorityInfoList_v920ext */
static int hf_rrc_eutra_FrequencyAndPriorityInfoList_v920ext = -1; /* EUTRA_FrequencyAndPriorityInfoList_v920ext */
static int hf_rrc_hNBName = -1; /* HNBName */
-static int hf_rrc_nonCriticalExtensions_205 = -1; /* T_nonCriticalExtensions_205 */
+static int hf_rrc_nonCriticalExtensions_219 = -1; /* T_nonCriticalExtensions_219 */
static int hf_rrc_sib_ReferenceList = -1; /* SIB_ReferenceList */
static int hf_rrc_v6b0NonCriticalExtensions_20 = -1; /* T_v6b0NonCriticalExtensions_19 */
static int hf_rrc_sysInfoTypeSB1_v6b0ext = -1; /* SysInfoTypeSB1_v6b0ext */
static int hf_rrc_v860NonCriticalExtensions_33 = -1; /* T_v860NonCriticalExtensions_33 */
static int hf_rrc_sysInfoTypeSB1_v860ext = -1; /* SysInfoTypeSB1_v860ext */
-static int hf_rrc_nonCriticalExtensions_206 = -1; /* T_nonCriticalExtensions_206 */
+static int hf_rrc_nonCriticalExtensions_220 = -1; /* T_nonCriticalExtensions_220 */
static int hf_rrc_v6b0NonCriticalExtensions_21 = -1; /* T_v6b0NonCriticalExtensions_20 */
static int hf_rrc_sysInfoTypeSB2_v6b0ext = -1; /* SysInfoTypeSB2_v6b0ext */
static int hf_rrc_v860NonCriticalExtensions_34 = -1; /* T_v860NonCriticalExtensions_34 */
static int hf_rrc_sysInfoTypeSB2_v860ext = -1; /* SysInfoTypeSB2_v860ext */
-static int hf_rrc_nonCriticalExtensions_207 = -1; /* T_nonCriticalExtensions_207 */
+static int hf_rrc_nonCriticalExtensions_221 = -1; /* T_nonCriticalExtensions_221 */
static int hf_rrc_TDD_UMTS_Frequency_List_item = -1; /* FrequencyInfoTDD */
static int hf_rrc_ue_InactivityPeriod = -1; /* INTEGER_1_120 */
static int hf_rrc_ul_dataVolumeHistory = -1; /* DataVolumeHistory */
@@ -7960,21 +8433,21 @@ static int hf_rrc_modificationPeriodCoefficient = -1; /* INTEGER_7_10 */
static int hf_rrc_rlc_Info_05 = -1; /* RLC_Info_MCCH_r6 */
static int hf_rrc_tctf_Presence = -1; /* MBMS_TCTF_Presence */
static int hf_rrc_michPowerOffset = -1; /* MBMS_MICHPowerOffset */
-static int hf_rrc_mode_02 = -1; /* T_mode_02 */
-static int hf_rrc_fdd_180 = -1; /* T_fdd_174 */
+static int hf_rrc_mode_03 = -1; /* T_mode_03 */
+static int hf_rrc_fdd_185 = -1; /* T_fdd_179 */
static int hf_rrc_ni_CountPerFrame = -1; /* MBMS_NI_CountPerFrame */
-static int hf_rrc_tdd384_45 = -1; /* T_tdd384_40 */
+static int hf_rrc_tdd384_46 = -1; /* T_tdd384_41 */
static int hf_rrc_repetitionPeriodLengthOffset_01 = -1; /* RepPerLengthOffset_MICH */
static int hf_rrc_mbmsNotificationIndLength = -1; /* MBMS_MICHNotificationIndLength */
-static int hf_rrc_tdd128_64 = -1; /* T_tdd128_61 */
+static int hf_rrc_tdd128_68 = -1; /* T_tdd128_65 */
static int hf_rrc_channelisationCodeList_02 = -1; /* SEQUENCE_SIZE_1_2_OF_DL_TS_ChannelisationCode */
static int hf_rrc_channelisationCodeList_item = -1; /* DL_TS_ChannelisationCode */
-static int hf_rrc_mode_03 = -1; /* T_mode_03 */
-static int hf_rrc_tdd384_46 = -1; /* T_tdd384_41 */
-static int hf_rrc_tdd768_24 = -1; /* T_tdd768_21 */
-static int hf_rrc_midambleShiftAndBurstType_06 = -1; /* MidambleShiftAndBurstType_VHCR */
-static int hf_rrc_tdd128_65 = -1; /* T_tdd128_62 */
static int hf_rrc_mode_04 = -1; /* T_mode_04 */
+static int hf_rrc_tdd384_47 = -1; /* T_tdd384_42 */
+static int hf_rrc_tdd768_25 = -1; /* T_tdd768_22 */
+static int hf_rrc_midambleShiftAndBurstType_06 = -1; /* MidambleShiftAndBurstType_VHCR */
+static int hf_rrc_tdd128_69 = -1; /* T_tdd128_66 */
+static int hf_rrc_mode_05 = -1; /* T_mode_05 */
static int hf_rrc_imb384 = -1; /* T_imb384 */
static int hf_rrc_ni_CountPerFrame_01 = -1; /* MBMS_NI_CountPerFrame_IMB384 */
static int hf_rrc_mbms_TransmissionIdentity = -1; /* MBMS_TransmissionIdentity */
@@ -7982,7 +8455,7 @@ static int hf_rrc_mbms_RequiredUEAction = -1; /* MBMS_RequiredUEAction_Mod *
static int hf_rrc_mbms_PreferredFrequency = -1; /* T_mbms_PreferredFrequency */
static int hf_rrc_mcch = -1; /* MBMS_PFLIndex */
static int hf_rrc_dcch = -1; /* MBMS_PFLInfo */
-static int hf_rrc_dummy_56 = -1; /* T_dummy_16 */
+static int hf_rrc_dummy_60 = -1; /* T_dummy_16 */
static int hf_rrc_continueMCCHReading = -1; /* BOOLEAN */
static int hf_rrc_MBMS_ModifedServiceList_r6_item = -1; /* MBMS_ModifedService_r6 */
static int hf_rrc_mbsfnClusterFrequency = -1; /* MBSFN_ClusterFrequency_r7 */
@@ -7999,13 +8472,13 @@ static int hf_rrc_schedulingPeriod_512_Offset = -1; /* INTEGER_0_511 */
static int hf_rrc_schedulingPeriod_1024_Offset = -1; /* INTEGER_0_1023 */
static int hf_rrc_secondaryCCPCHPwrOffsetDiff = -1; /* MBMS_SCCPCHPwrOffsetDiff */
static int hf_rrc_layer1Combining = -1; /* T_layer1Combining */
-static int hf_rrc_fdd_181 = -1; /* T_fdd_175 */
+static int hf_rrc_fdd_186 = -1; /* T_fdd_180 */
static int hf_rrc_mbms_L1CombiningTransmTimeDiff = -1; /* MBMS_L1CombiningTransmTimeDiff */
static int hf_rrc_mbms_L1CombiningSchedule = -1; /* MBMS_L1CombiningSchedule */
static int hf_rrc_mbms_L23Configuration = -1; /* MBMS_L23Configuration */
static int hf_rrc_secondaryCCPCH_InfoDiff = -1; /* SecondaryCCPCHInfoDiff_MBMS */
static int hf_rrc_layer1Combining_01 = -1; /* T_layer1Combining_01 */
-static int hf_rrc_fdd_182 = -1; /* T_fdd_176 */
+static int hf_rrc_fdd_187 = -1; /* T_fdd_181 */
static int hf_rrc_MBMS_NeighbouringCellSCCPCHList_r6_item = -1; /* MBMS_NeighbouringCellSCCPCH_r6 */
static int hf_rrc_MBMS_NeighbouringCellSCCPCHList_v770ext_item = -1; /* MBMS_NeighbouringCellSCCPCH_v770ext */
static int hf_rrc_networkStandardTime = -1; /* BIT_STRING_SIZE_40 */
@@ -8104,15 +8577,15 @@ static int hf_rrc_v860NonCriticalExtensions_35 = -1; /* T_v860NonCriticalExtens
static int hf_rrc_interRATHandoverInfoWithInterRATCapabilities_v860ext = -1; /* InterRATHandoverInfoWithInterRATCapabilities_v860ext_IEs */
static int hf_rrc_v920NonCriticalExtensions_08 = -1; /* T_v920NonCriticalExtensions_08 */
static int hf_rrc_interRATHandoverInfoWithInterRATCapabilities_v920ext = -1; /* InterRATHandoverInfoWithInterRATCapabilities_v920ext_IEs */
-static int hf_rrc_nonCriticalExtensions_208 = -1; /* T_nonCriticalExtensions_208 */
-static int hf_rrc_criticalExtensions_111 = -1; /* T_criticalExtensions_111 */
+static int hf_rrc_nonCriticalExtensions_222 = -1; /* T_nonCriticalExtensions_222 */
+static int hf_rrc_criticalExtensions_126 = -1; /* T_criticalExtensions_126 */
static int hf_rrc_interRATHandoverInfo_01 = -1; /* T_interRATHandoverInfo */
static int hf_rrc_ue_RATSpecificCapability_01 = -1; /* InterRAT_UE_RadioAccessCapability_v860ext */
static int hf_rrc_ue_Inactivity_Period = -1; /* INTEGER_1_120 */
static int hf_rrc_r5_14 = -1; /* T_r5_14 */
static int hf_rrc_rFC3095_ContextInfoList_r5 = -1; /* RFC3095_ContextInfoList_r5 */
-static int hf_rrc_nonCriticalExtensions_209 = -1; /* T_nonCriticalExtensions_209 */
-static int hf_rrc_criticalExtensions_112 = -1; /* T_criticalExtensions_112 */
+static int hf_rrc_nonCriticalExtensions_223 = -1; /* T_nonCriticalExtensions_223 */
+static int hf_rrc_criticalExtensions_127 = -1; /* T_criticalExtensions_127 */
static int hf_rrc_RFC3095_ContextInfoList_r5_item = -1; /* RFC3095_ContextInfo */
static int hf_rrc_r3_32 = -1; /* T_r3_32 */
static int hf_rrc_sRNC_RelocationInfo_r3 = -1; /* SRNC_RelocationInfo_r3_IEs */
@@ -8151,7 +8624,7 @@ static int hf_rrc_v7e0NonCriticalExtensions_04 = -1; /* T_v7e0NonCriticalExtens
static int hf_rrc_sRNC_RelocationInfo_v7e0ext = -1; /* SRNC_RelocationInfo_v7e0ext_IEs */
static int hf_rrc_v7f0NonCriticalExtensions_17 = -1; /* T_v7f0NonCriticalExtensions_17 */
static int hf_rrc_sRNC_RelocationInfo_v7f0ext = -1; /* SRNC_RelocationInfo_v7f0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_210 = -1; /* T_nonCriticalExtensions_210 */
+static int hf_rrc_nonCriticalExtensions_224 = -1; /* T_nonCriticalExtensions_224 */
static int hf_rrc_later_than_r3_28 = -1; /* T_later_than_r3_28 */
static int hf_rrc_r4_14 = -1; /* T_r4_14 */
static int hf_rrc_sRNC_RelocationInfo_r4 = -1; /* SRNC_RelocationInfo_r4_IEs */
@@ -8167,8 +8640,8 @@ static int hf_rrc_v6b0NonCriticalExtensions_23 = -1; /* T_v6b0NonCriticalExtens
static int hf_rrc_v770NonCriticalExtensions_49 = -1; /* T_v770NonCriticalExtensions_49 */
static int hf_rrc_v7e0NonCriticalExtensions_05 = -1; /* T_v7e0NonCriticalExtensions_05 */
static int hf_rrc_v7f0NonCriticalExtensions_18 = -1; /* T_v7f0NonCriticalExtensions_18 */
-static int hf_rrc_nonCriticalExtensions_211 = -1; /* T_nonCriticalExtensions_211 */
-static int hf_rrc_criticalExtensions_113 = -1; /* T_criticalExtensions_113 */
+static int hf_rrc_nonCriticalExtensions_225 = -1; /* T_nonCriticalExtensions_225 */
+static int hf_rrc_criticalExtensions_128 = -1; /* T_criticalExtensions_128 */
static int hf_rrc_r5_15 = -1; /* T_r5_15 */
static int hf_rrc_sRNC_RelocationInfo_r5 = -1; /* SRNC_RelocationInfo_r5_IEs */
static int hf_rrc_sRNC_RelocationInfo_r5_add_ext = -1; /* BIT_STRING */
@@ -8180,8 +8653,8 @@ static int hf_rrc_v6b0NonCriticalExtensions_24 = -1; /* T_v6b0NonCriticalExtens
static int hf_rrc_v770NonCriticalExtensions_50 = -1; /* T_v770NonCriticalExtensions_50 */
static int hf_rrc_v7e0NonCriticalExtensions_06 = -1; /* T_v7e0NonCriticalExtensions_06 */
static int hf_rrc_v7f0NonCriticalExtensions_19 = -1; /* T_v7f0NonCriticalExtensions_19 */
-static int hf_rrc_nonCriticalExtensions_212 = -1; /* T_nonCriticalExtensions_212 */
-static int hf_rrc_criticalExtensions_114 = -1; /* T_criticalExtensions_114 */
+static int hf_rrc_nonCriticalExtensions_226 = -1; /* T_nonCriticalExtensions_226 */
+static int hf_rrc_criticalExtensions_129 = -1; /* T_criticalExtensions_129 */
static int hf_rrc_r6_12 = -1; /* T_r6_12 */
static int hf_rrc_sRNC_RelocationInfo_r6 = -1; /* SRNC_RelocationInfo_r6_IEs */
static int hf_rrc_sRNC_RelocationInfo_r6_add_ext = -1; /* T_sRNC_RelocationInfo_r6_add_ext */
@@ -8191,15 +8664,15 @@ static int hf_rrc_v820NonCriticalExtensions_03 = -1; /* T_v820NonCriticalExtens
static int hf_rrc_srnc_RelocationInfo_v820ext = -1; /* SRNC_RelocationInfo_v820ext_IEs */
static int hf_rrc_v860NonCriticalExtensions_36 = -1; /* T_v860NonCriticalExtensions_36 */
static int hf_rrc_sRNC_RelocationInfo_v860ext = -1; /* SRNC_RelocationInfo_v860ext_IEs */
-static int hf_rrc_nonCriticalExtensions_213 = -1; /* T_nonCriticalExtensions_213 */
-static int hf_rrc_criticalExtensions_115 = -1; /* T_criticalExtensions_115 */
+static int hf_rrc_nonCriticalExtensions_227 = -1; /* T_nonCriticalExtensions_227 */
+static int hf_rrc_criticalExtensions_130 = -1; /* T_criticalExtensions_130 */
static int hf_rrc_r7_16 = -1; /* T_r7_16 */
static int hf_rrc_sRNC_RelocationInfo_r7 = -1; /* SRNC_RelocationInfo_r7_IEs */
static int hf_rrc_sRNC_RelocationInfo_r7_add_ext = -1; /* T_sRNC_RelocationInfo_r7_add_ext */
static int hf_rrc_v820NonCriticalExtensions_04 = -1; /* T_v820NonCriticalExtensions_04 */
static int hf_rrc_v860NonCriticalExtensions_37 = -1; /* T_v860NonCriticalExtensions_37 */
-static int hf_rrc_nonCriticalExtensions_214 = -1; /* T_nonCriticalExtensions_214 */
-static int hf_rrc_criticalExtensions_116 = -1; /* T_criticalExtensions_116 */
+static int hf_rrc_nonCriticalExtensions_228 = -1; /* T_nonCriticalExtensions_228 */
+static int hf_rrc_criticalExtensions_131 = -1; /* T_criticalExtensions_131 */
static int hf_rrc_r8_12 = -1; /* T_r8_12 */
static int hf_rrc_sRNC_RelocationInfo_r8 = -1; /* SRNC_RelocationInfo_r8_IEs */
static int hf_rrc_sRNC_RelocationInfo_r8_add_ext = -1; /* BIT_STRING */
@@ -8207,16 +8680,21 @@ static int hf_rrc_v7e0NonCriticalExtensions_07 = -1; /* T_v7e0NonCriticalExtens
static int hf_rrc_v7f0NonCriticalExtensions_20 = -1; /* T_v7f0NonCriticalExtensions_20 */
static int hf_rrc_v8d0NonCriticalExtensions_01 = -1; /* T_v8d0NonCriticalExtensions_01 */
static int hf_rrc_sRNC_RelocationInfo_v8d0ext = -1; /* SRNC_RelocationInfo_v8d0ext_IEs */
-static int hf_rrc_nonCriticalExtensions_215 = -1; /* T_nonCriticalExtensions_215 */
-static int hf_rrc_criticalExtensions_117 = -1; /* T_criticalExtensions_117 */
+static int hf_rrc_nonCriticalExtensions_229 = -1; /* T_nonCriticalExtensions_229 */
+static int hf_rrc_criticalExtensions_132 = -1; /* T_criticalExtensions_132 */
static int hf_rrc_r9_11 = -1; /* T_r9_11 */
static int hf_rrc_sRNC_RelocationInfo_r9 = -1; /* SRNC_RelocationInfo_r9_IEs */
static int hf_rrc_sRNC_RelocationInfo_r9_add_ext = -1; /* BIT_STRING */
static int hf_rrc_v8d0NonCriticalExtensions_02 = -1; /* T_v8d0NonCriticalExtensions_02 */
static int hf_rrc_v970NonCriticalExtensions_04 = -1; /* T_v970NonCriticalExtensions_04 */
static int hf_rrc_sRNC_RelocationInfo_v970ext = -1; /* SRNC_RelocationInfo_v970ext_IEs */
-static int hf_rrc_nonCriticalExtensions_216 = -1; /* T_nonCriticalExtensions_216 */
-static int hf_rrc_criticalExtensions_118 = -1; /* T_criticalExtensions_118 */
+static int hf_rrc_nonCriticalExtensions_230 = -1; /* T_nonCriticalExtensions_230 */
+static int hf_rrc_criticalExtensions_133 = -1; /* T_criticalExtensions_133 */
+static int hf_rrc_r10_13 = -1; /* T_r10_13 */
+static int hf_rrc_sRNC_RelocationInfo_r10 = -1; /* SRNC_RelocationInfo_r10_IEs */
+static int hf_rrc_sRNC_RelocationInfo_r10_add_ext = -1; /* BIT_STRING */
+static int hf_rrc_nonCriticalExtensions_231 = -1; /* T_nonCriticalExtensions_231 */
+static int hf_rrc_criticalExtensions_134 = -1; /* T_criticalExtensions_134 */
static int hf_rrc_stateOfRRC = -1; /* StateOfRRC */
static int hf_rrc_stateOfRRC_Procedure = -1; /* StateOfRRC_Procedure */
static int hf_rrc_cipheringStatus = -1; /* CipheringStatus */
@@ -8228,12 +8706,13 @@ static int hf_rrc_srb_SpecificIntegrityProtInfo = -1; /* SRB_SpecificIntegrityP
static int hf_rrc_implementationSpecificParams = -1; /* ImplementationSpecificParams */
static int hf_rrc_c_RNTI = -1; /* C_RNTI */
static int hf_rrc_ue_Positioning_LastKnownPos = -1; /* UE_Positioning_LastKnownPos */
+static int hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo_04 = -1; /* NAS_SystemInformationGSM_MAP */
static int hf_rrc_ongoingMeasRepList = -1; /* OngoingMeasRepList */
static int hf_rrc_predefinedConfigStatusList_01 = -1; /* PredefinedConfigStatusList */
static int hf_rrc_rab_InformationList_01 = -1; /* RAB_InformationSetupList */
static int hf_rrc_ul_TransChInfoList = -1; /* UL_AddReconfTransChInfoList */
-static int hf_rrc_modeSpecificInfo_140 = -1; /* T_modeSpecificInfo_140 */
-static int hf_rrc_fdd_183 = -1; /* T_fdd_177 */
+static int hf_rrc_modeSpecificInfo_146 = -1; /* T_modeSpecificInfo_146 */
+static int hf_rrc_fdd_188 = -1; /* T_fdd_182 */
static int hf_rrc_dl_TransChInfoList = -1; /* DL_AddReconfTransChInfoList */
static int hf_rrc_cipheringStatusList = -1; /* CipheringStatusList */
static int hf_rrc_cn_DomainInformationList_v390ext = -1; /* CN_DomainInformationList_v390ext */
@@ -8268,16 +8747,16 @@ static int hf_rrc_ue_RadioAccessCapability_ext = -1; /* UE_RadioAccessCapabBand
static int hf_rrc_cn_DomainInformationList_01 = -1; /* CN_DomainInformationListFull */
static int hf_rrc_ongoingMeasRepList_01 = -1; /* OngoingMeasRepList_r4 */
static int hf_rrc_rab_InformationList_02 = -1; /* RAB_InformationSetupList_r4 */
-static int hf_rrc_dummy_57 = -1; /* T_dummy_17 */
-static int hf_rrc_fdd_184 = -1; /* T_fdd_178 */
+static int hf_rrc_dummy_61 = -1; /* T_dummy_17 */
+static int hf_rrc_fdd_189 = -1; /* T_fdd_183 */
static int hf_rrc_dl_TransChInfoList_01 = -1; /* DL_AddReconfTransChInfoList_r4 */
static int hf_rrc_ue_RadioAccessCapability_04 = -1; /* UE_RadioAccessCapability_r5 */
static int hf_rrc_ue_RATSpecificCapability_02 = -1; /* InterRAT_UE_RadioAccessCapabilityList_r5 */
static int hf_rrc_ongoingMeasRepList_02 = -1; /* OngoingMeasRepList_r5 */
static int hf_rrc_srb_InformationList_01 = -1; /* SRB_InformationSetupList_r5 */
static int hf_rrc_rab_InformationList_03 = -1; /* RAB_InformationSetupList_r5 */
-static int hf_rrc_dummy_58 = -1; /* T_dummy_18 */
-static int hf_rrc_fdd_185 = -1; /* T_fdd_179 */
+static int hf_rrc_dummy_62 = -1; /* T_dummy_18 */
+static int hf_rrc_fdd_190 = -1; /* T_fdd_184 */
static int hf_rrc_dl_TransChInfoList_02 = -1; /* DL_AddReconfTransChInfoList_r5 */
static int hf_rrc_ueCapabilityContainer_02 = -1; /* T_ueCapabilityContainer_02 */
static int hf_rrc_ueCapabilityContainer_RSC = -1; /* T_ueCapabilityContainer_RSC */
@@ -8293,7 +8772,7 @@ static int hf_rrc_rab_InformationList_04 = -1; /* RAB_InformationSetupList_r6
static int hf_rrc_ul_TransChInfoList_01 = -1; /* UL_AddReconfTransChInfoList_r6 */
static int hf_rrc_measurementReport_01 = -1; /* T_measurementReport */
static int hf_rrc_v7f0NonCriticalExtensions_21 = -1; /* T_v7f0NonCriticalExtensions_21 */
-static int hf_rrc_nonCriticalExtensions_217 = -1; /* T_nonCriticalExtensions_217 */
+static int hf_rrc_nonCriticalExtensions_232 = -1; /* T_nonCriticalExtensions_232 */
static int hf_rrc_ueCapabilityContainer_04 = -1; /* T_ueCapabilityContainer_04 */
static int hf_rrc_ueCapabilityContainer_RSC_02 = -1; /* T_ueCapabilityContainer_RSC_02 */
static int hf_rrc_ueCapabilityContainer_UCI_02 = -1; /* T_ueCapabilityContainer_UCI_02 */
@@ -8305,7 +8784,7 @@ static int hf_rrc_ul_TransChInfoList_02 = -1; /* UL_AddReconfTransChInfoList
static int hf_rrc_dl_TransChInfoList_03 = -1; /* DL_AddReconfTransChInfoList_r7 */
static int hf_rrc_measurementReport_02 = -1; /* T_measurementReport_01 */
static int hf_rrc_v7f0NonCriticalExtensions_22 = -1; /* T_v7f0NonCriticalExtensions_22 */
-static int hf_rrc_nonCriticalExtensions_218 = -1; /* T_nonCriticalExtensions_218 */
+static int hf_rrc_nonCriticalExtensions_233 = -1; /* T_nonCriticalExtensions_233 */
static int hf_rrc_thresholdSFN_GPS_TOW_us = -1; /* ThresholdSFN_GPS_TOW_us */
static int hf_rrc_ueCapabilityContainer_05 = -1; /* T_ueCapabilityContainer_05 */
static int hf_rrc_ueCapabilityContainer_RSC_03 = -1; /* T_ueCapabilityContainer_RSC_03 */
@@ -8328,6 +8807,11 @@ static int hf_rrc_secondary_tpc_CombinationInfoList = -1; /* TPC_CombinationInf
static int hf_rrc_secondary_e_RGCH_CombinationInfoList = -1; /* E_RGCH_CombinationInfoList_r9 */
static int hf_rrc_measurementReport_04 = -1; /* T_measurementReport_03 */
static int hf_rrc_ongoingMeasRepList_07 = -1; /* OngoingMeasRepList_v970ext_IE */
+static int hf_rrc_ueCapabilityContainer_07 = -1; /* T_ueCapabilityContainer_07 */
+static int hf_rrc_ueCapabilityContainer_RSC_05 = -1; /* T_ueCapabilityContainer_RSC_05 */
+static int hf_rrc_ueCapabilityContainer_UCI_05 = -1; /* T_ueCapabilityContainer_UCI_05 */
+static int hf_rrc_ongoingMeasRepList_08 = -1; /* OngoingMeasRepList_r10 */
+static int hf_rrc_measurementReport_05 = -1; /* T_measurementReport_04 */
static int hf_rrc_dl_HFN = -1; /* BIT_STRING_SIZE_20_25 */
static int hf_rrc_ul_HFN = -1; /* BIT_STRING_SIZE_20_25 */
static int hf_rrc_CipheringInfoPerRB_List_item = -1; /* CipheringInfoPerRB */
@@ -8355,9 +8839,9 @@ static int hf_rrc_E_RGCH_CombinationInfoList_item = -1; /* E_RGCH_Combination_I
static int hf_rrc_E_RGCH_CombinationInfoList_r9_item = -1; /* E_RGCH_Combination_Info_r9 */
static int hf_rrc_interRAT_UE_RadioAccessCapability = -1; /* InterRAT_UE_RadioAccessCapabilityList */
static int hf_rrc_event_06 = -1; /* Event1j_r6 */
-static int hf_rrc_downlinkCompressedMode_03 = -1; /* CompressedModeMeasCapability_r4 */
+static int hf_rrc_downlinkCompressedMode_04 = -1; /* CompressedModeMeasCapability_r4 */
static int hf_rrc_uplinkCompressedMode_01 = -1; /* CompressedModeMeasCapability_r4 */
-static int hf_rrc_modify_07 = -1; /* NULL */
+static int hf_rrc_modify_08 = -1; /* NULL */
static int hf_rrc_measurementCommandWithType = -1; /* MeasurementCommandWithType */
static int hf_rrc_additionalMeasurementID_List = -1; /* AdditionalMeasurementID_List */
static int hf_rrc_measurementCommandWithType_01 = -1; /* MeasurementCommandWithType_r4 */
@@ -8367,6 +8851,7 @@ static int hf_rrc_measurementCommandWithType_03 = -1; /* MeasurementCommandWith
static int hf_rrc_measurementCommandWithType_04 = -1; /* MeasurementCommandWithType_r8 */
static int hf_rrc_measurementCommandWithType_05 = -1; /* MeasurementCommandWithType_r9 */
static int hf_rrc_additionalMeasurementID_List_01 = -1; /* AdditionalMeasurementID_List_r9 */
+static int hf_rrc_measurementCommandWithType_06 = -1; /* MeasurementCommandWithType_r10 */
static int hf_rrc_OngoingMeasRepList_item = -1; /* OngoingMeasRep */
static int hf_rrc_OngoingMeasRepList_r4_item = -1; /* OngoingMeasRep_r4 */
static int hf_rrc_OngoingMeasRepList_r5_item = -1; /* OngoingMeasRep_r5 */
@@ -8375,6 +8860,7 @@ static int hf_rrc_OngoingMeasRepList_r7_item = -1; /* OngoingMeasRep_r7 */
static int hf_rrc_OngoingMeasRepList_r8_item = -1; /* OngoingMeasRep_r8 */
static int hf_rrc_OngoingMeasRepList_r9_item = -1; /* OngoingMeasRep_r9 */
static int hf_rrc_OngoingMeasRepList_v970ext_IE_item = -1; /* OngoingMeasRep_v970ext_IEs */
+static int hf_rrc_OngoingMeasRepList_r10_item = -1; /* OngoingMeasRep_r10 */
static int hf_rrc_supportForRfc2507_01 = -1; /* T_supportForRfc2507_01 */
static int hf_rrc_supportForRfc3095_01 = -1; /* T_supportForRfc3095_01 */
static int hf_rrc_supported_15 = -1; /* T_supported_08 */
@@ -8386,24 +8872,24 @@ static int hf_rrc_losslessDLRLC_PDUSizeChange_01 = -1; /* T_losslessDLRLC_PDUSi
static int hf_rrc_supportForRfc2507_03 = -1; /* T_supportForRfc2507_03 */
static int hf_rrc_supportForRfc3095_03 = -1; /* T_supportForRfc3095_03 */
static int hf_rrc_supported_18 = -1; /* T_supported_10 */
-static int hf_rrc_fddPhysChCapability_04 = -1; /* T_fddPhysChCapability_04 */
-static int hf_rrc_downlinkPhysChCapability_10 = -1; /* DL_PhysChCapabilityFDD_r4 */
+static int hf_rrc_fddPhysChCapability_05 = -1; /* T_fddPhysChCapability_05 */
+static int hf_rrc_downlinkPhysChCapability_12 = -1; /* DL_PhysChCapabilityFDD_r4 */
static int hf_rrc_tdd384_PhysChCapability = -1; /* T_tdd384_PhysChCapability */
static int hf_rrc_tdd128_PhysChCapability_01 = -1; /* T_tdd128_PhysChCapability_01 */
-static int hf_rrc_fddPhysChCapability_05 = -1; /* T_fddPhysChCapability_05 */
-static int hf_rrc_downlinkPhysChCapability_11 = -1; /* DL_PhysChCapabilityFDD_r5 */
+static int hf_rrc_fddPhysChCapability_06 = -1; /* T_fddPhysChCapability_06 */
+static int hf_rrc_downlinkPhysChCapability_13 = -1; /* DL_PhysChCapabilityFDD_r5 */
static int hf_rrc_tdd384_PhysChCapability_01 = -1; /* T_tdd384_PhysChCapability_01 */
-static int hf_rrc_downlinkPhysChCapability_12 = -1; /* DL_PhysChCapabilityTDD_r5 */
+static int hf_rrc_downlinkPhysChCapability_14 = -1; /* DL_PhysChCapabilityTDD_r5 */
static int hf_rrc_tdd128_PhysChCapability_02 = -1; /* T_tdd128_PhysChCapability_02 */
-static int hf_rrc_downlinkPhysChCapability_13 = -1; /* DL_PhysChCapabilityTDD_LCR_r5 */
-static int hf_rrc_fddRF_Capability_03 = -1; /* T_fddRF_Capability_03 */
+static int hf_rrc_downlinkPhysChCapability_15 = -1; /* DL_PhysChCapabilityTDD_LCR_r5 */
+static int hf_rrc_fddRF_Capability_04 = -1; /* T_fddRF_Capability_04 */
static int hf_rrc_tdd384_RF_Capability_02 = -1; /* T_tdd384_RF_Capability_01 */
static int hf_rrc_tdd128_RF_Capability_03 = -1; /* T_tdd128_RF_Capability_01 */
static int hf_rrc_rfc3095_Context_List = -1; /* RFC3095_Context_List */
static int hf_rrc_RFC3095_Context_List_item = -1; /* RFC3095_Context_List_item */
static int hf_rrc_dl_RFC3095_Context = -1; /* DL_RFC3095_Context */
static int hf_rrc_ul_RFC3095_Context = -1; /* UL_RFC3095_Context */
-static int hf_rrc_totalRLC_AM_BufferSize_03 = -1; /* TotalRLC_AM_BufferSize_r5 */
+static int hf_rrc_totalRLC_AM_BufferSize_04 = -1; /* TotalRLC_AM_BufferSize_r5 */
static int hf_rrc_ul_RRC_HFN = -1; /* BIT_STRING_SIZE_28 */
static int hf_rrc_dl_RRC_HFN = -1; /* BIT_STRING_SIZE_28 */
static int hf_rrc_ul_RRC_SequenceNumber = -1; /* RRC_MessageSequenceNumber */
@@ -8413,12 +8899,12 @@ static int hf_rrc_validity_CellPCH_UraPCH_01 = -1; /* T_validity_CellPCH_UraPCH
static int hf_rrc_sfn_sfnType2Capability_01 = -1; /* T_sfn_sfnType2Capability_01 */
static int hf_rrc_pdcp_Capability_03 = -1; /* PDCP_Capability_r4 */
static int hf_rrc_rf_Capability_04 = -1; /* RF_Capability_r4 */
-static int hf_rrc_physicalChannelCapability_06 = -1; /* PhysicalChannelCapability_r4 */
+static int hf_rrc_physicalChannelCapability_07 = -1; /* PhysicalChannelCapability_r4 */
static int hf_rrc_ue_positioning_Capability_01 = -1; /* UE_Positioning_Capability_r4 */
-static int hf_rrc_measurementCapability_04 = -1; /* MeasurementCapability_r4 */
+static int hf_rrc_measurementCapability_05 = -1; /* MeasurementCapability_r4 */
static int hf_rrc_pdcp_Capability_04 = -1; /* PDCP_Capability_r5 */
-static int hf_rrc_rlc_Capability_03 = -1; /* RLC_Capability_r5 */
-static int hf_rrc_physicalChannelCapability_07 = -1; /* PhysicalChannelCapability_r5 */
+static int hf_rrc_rlc_Capability_04 = -1; /* RLC_Capability_r5 */
+static int hf_rrc_physicalChannelCapability_08 = -1; /* PhysicalChannelCapability_r5 */
static int hf_rrc_ue_MultiModeRAT_Capability_01 = -1; /* UE_MultiModeRAT_Capability_r5 */
static int hf_rrc_pdcp_Capability_05 = -1; /* PDCP_Capability_r6 */
static int hf_rrc_ul_mode = -1; /* T_ul_mode */
@@ -8650,7 +9136,7 @@ static int hf_rrc_GsmSecurityCapability_a5_2 = -1;
static int hf_rrc_GsmSecurityCapability_a5_1 = -1;
/*--- End of included file: packet-rrc-hf.c ---*/
-#line 84 "../../asn1/rrc/packet-rrc-template.c"
+#line 87 "../../asn1/rrc/packet-rrc-template.c"
/* Initialize the subtree pointers */
static int ett_rrc = -1;
@@ -8662,6 +9148,7 @@ static gint ett_rrc_DL_DCCH_Message = -1;
static gint ett_rrc_DL_DCCH_MessageType = -1;
static gint ett_rrc_UL_DCCH_Message = -1;
static gint ett_rrc_UL_DCCH_MessageType = -1;
+static gint ett_rrc_UL_DCCH_MessageType_ext = -1;
static gint ett_rrc_DL_CCCH_Message = -1;
static gint ett_rrc_DL_CCCH_MessageType = -1;
static gint ett_rrc_UL_CCCH_Message = -1;
@@ -8707,6 +9194,9 @@ static gint ett_rrc_T_r9 = -1;
static gint ett_rrc_T_v950NonCriticalExtensions = -1;
static gint ett_rrc_T_nonCriticalExtensions_04 = -1;
static gint ett_rrc_T_criticalExtensions_04 = -1;
+static gint ett_rrc_T_r10 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_05 = -1;
+static gint ett_rrc_T_criticalExtensions_05 = -1;
static gint ett_rrc_ActiveSetUpdate_r3_IEs = -1;
static gint ett_rrc_ActiveSetUpdate_v4b0ext_IEs = -1;
static gint ett_rrc_ActiveSetUpdate_v590ext_IEs = -1;
@@ -8721,12 +9211,13 @@ static gint ett_rrc_ActiveSetUpdate_r8_IEs = -1;
static gint ett_rrc_ActiveSetUpdate_v890ext_IEs = -1;
static gint ett_rrc_ActiveSetUpdate_r9_IEs = -1;
static gint ett_rrc_ActiveSetUpdate_v950ext_IEs = -1;
+static gint ett_rrc_ActiveSetUpdate_r10_IEs = -1;
static gint ett_rrc_ActiveSetUpdateComplete = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_01 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_05 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_06 = -1;
static gint ett_rrc_ActiveSetUpdateFailure = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_02 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_06 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_07 = -1;
static gint ett_rrc_AssistanceDataDelivery = -1;
static gint ett_rrc_T_r3_01 = -1;
static gint ett_rrc_T_v3a0NonCriticalExtensions = -1;
@@ -8735,31 +9226,33 @@ static gint ett_rrc_T_v4b0NonCriticalExtensions_01 = -1;
static gint ett_rrc_T_v770NonCriticalExtension = -1;
static gint ett_rrc_T_v860NonCriticalExtension = -1;
static gint ett_rrc_T_v920NonCriticalExtension = -1;
-static gint ett_rrc_T_nonCriticalExtensions_07 = -1;
+static gint ett_rrc_T_va40NonCriticalExtension = -1;
+static gint ett_rrc_T_nonCriticalExtensions_08 = -1;
static gint ett_rrc_T_later_than_r3_01 = -1;
-static gint ett_rrc_T_criticalExtensions_05 = -1;
+static gint ett_rrc_T_criticalExtensions_06 = -1;
static gint ett_rrc_AssistanceDataDelivery_r3_IEs = -1;
static gint ett_rrc_AssistanceDataDelivery_v3a0ext = -1;
static gint ett_rrc_AssistanceDataDelivery_v4b0ext_IEs = -1;
static gint ett_rrc_AssistanceDataDelivery_v770ext_IEs = -1;
static gint ett_rrc_AssistanceDataDelivery_v860ext_IEs = -1;
static gint ett_rrc_AssistanceDataDelivery_v920ext_IEs = -1;
+static gint ett_rrc_AssistanceDataDelivery_va40ext_IEs = -1;
static gint ett_rrc_CellChangeOrderFromUTRAN = -1;
static gint ett_rrc_T_r3_02 = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_04 = -1;
static gint ett_rrc_T_v590NonCriticalExtensions_01 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_08 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_09 = -1;
static gint ett_rrc_T_later_than_r3_02 = -1;
-static gint ett_rrc_T_criticalExtensions_06 = -1;
+static gint ett_rrc_T_criticalExtensions_07 = -1;
static gint ett_rrc_CellChangeOrderFromUTRAN_r3_IEs = -1;
static gint ett_rrc_CellChangeOrderFromUTRAN_v590ext_IEs = -1;
static gint ett_rrc_T_geran_SystemInfoType = -1;
static gint ett_rrc_CellChangeOrderFromUTRANFailure = -1;
static gint ett_rrc_T_r3_03 = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_05 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_09 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_10 = -1;
static gint ett_rrc_T_dummy = -1;
-static gint ett_rrc_T_criticalExtensions_07 = -1;
+static gint ett_rrc_T_criticalExtensions_08 = -1;
static gint ett_rrc_CellChangeOrderFromUTRANFailure_r3_IEs = -1;
static gint ett_rrc_CellUpdate = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_06 = -1;
@@ -8768,10 +9261,11 @@ static gint ett_rrc_T_v690NonCriticalExtensions_01 = -1;
static gint ett_rrc_T_v6b0NonCriticalExtensions_01 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions = -1;
static gint ett_rrc_T_v860NonCriticalExtensions = -1;
-static gint ett_rrc_T_nonCriticalExtensions_10 = -1;
+static gint ett_rrc_T_va40NonCriticalExtensions = -1;
+static gint ett_rrc_T_nonCriticalExtensions_11 = -1;
static gint ett_rrc_CellUpdate_r3_add_ext_IEs = -1;
static gint ett_rrc_T_v7g0NonCriticalExtensions_02 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_11 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_12 = -1;
static gint ett_rrc_CellUpdate_v590ext = -1;
static gint ett_rrc_CellUpdate_v690ext_IEs = -1;
static gint ett_rrc_CellUpdate_v6b0ext_IEs = -1;
@@ -8779,6 +9273,7 @@ static gint ett_rrc_CellUpdate_v770ext_IEs = -1;
static gint ett_rrc_CellUpdate_v7e0ext_IEs = -1;
static gint ett_rrc_CellUpdate_v7g0ext_IEs = -1;
static gint ett_rrc_CellUpdate_v860ext_IEs = -1;
+static gint ett_rrc_CellUpdate_va40ext_IEs = -1;
static gint ett_rrc_CellUpdateConfirm = -1;
static gint ett_rrc_T_r3_04 = -1;
static gint ett_rrc_T_v3a0NonCriticalExtensions_01 = -1;
@@ -8787,42 +9282,45 @@ static gint ett_rrc_T_v4b0NonCriticalExtensions_02 = -1;
static gint ett_rrc_T_v590NonCriticalExtenstions = -1;
static gint ett_rrc_T_v5d0NonCriticalExtenstions = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_02 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_12 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_13 = -1;
static gint ett_rrc_T_later_than_r3_03 = -1;
-static gint ett_rrc_T_criticalExtensions_08 = -1;
+static gint ett_rrc_T_criticalExtensions_09 = -1;
static gint ett_rrc_T_r4 = -1;
static gint ett_rrc_T_v4d0NonCriticalExtensions = -1;
static gint ett_rrc_T_v590NonCriticalExtenstions_01 = -1;
static gint ett_rrc_T_v5d0NonCriticalExtenstions_01 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_03 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_13 = -1;
-static gint ett_rrc_T_criticalExtensions_09 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_14 = -1;
+static gint ett_rrc_T_criticalExtensions_10 = -1;
static gint ett_rrc_T_r5 = -1;
static gint ett_rrc_T_v5d0NonCriticalExtenstions_02 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_04 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_14 = -1;
-static gint ett_rrc_T_criticalExtensions_10 = -1;
-static gint ett_rrc_T_r6_01 = -1;
-static gint ett_rrc_T_v6b0NonCriticalExtensions_02 = -1;
static gint ett_rrc_T_nonCriticalExtensions_15 = -1;
static gint ett_rrc_T_criticalExtensions_11 = -1;
+static gint ett_rrc_T_r6_01 = -1;
+static gint ett_rrc_T_v6b0NonCriticalExtensions_02 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_16 = -1;
+static gint ett_rrc_T_criticalExtensions_12 = -1;
static gint ett_rrc_T_r7_01 = -1;
static gint ett_rrc_T_v780NonCriticalExtensions_01 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_01 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_16 = -1;
-static gint ett_rrc_T_criticalExtensions_12 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_17 = -1;
+static gint ett_rrc_T_criticalExtensions_13 = -1;
static gint ett_rrc_T_r8_01 = -1;
static gint ett_rrc_T_v7d0NonCriticalExtensions = -1;
static gint ett_rrc_T_v7f0NonCriticalExtensions_01 = -1;
static gint ett_rrc_T_v890NonCriticalExtensions_01 = -1;
static gint ett_rrc_T_v7g0NonCriticalExtensions_03 = -1;
static gint ett_rrc_T_v8a0NonCriticalExtensions = -1;
-static gint ett_rrc_T_nonCriticalExtensions_17 = -1;
-static gint ett_rrc_T_criticalExtensions_13 = -1;
-static gint ett_rrc_T_r9_01 = -1;
-static gint ett_rrc_T_v950NonCriticalExtensions_01 = -1;
static gint ett_rrc_T_nonCriticalExtensions_18 = -1;
static gint ett_rrc_T_criticalExtensions_14 = -1;
+static gint ett_rrc_T_r9_01 = -1;
+static gint ett_rrc_T_v950NonCriticalExtensions_01 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_19 = -1;
+static gint ett_rrc_T_criticalExtensions_15 = -1;
+static gint ett_rrc_T_r10_01 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_20 = -1;
+static gint ett_rrc_T_criticalExtensions_16 = -1;
static gint ett_rrc_CellUpdateConfirm_r3_IEs = -1;
static gint ett_rrc_T_modeSpecificTransChInfo = -1;
static gint ett_rrc_T_fdd = -1;
@@ -8849,7 +9347,7 @@ static gint ett_rrc_CellUpdateConfirm_r7_IEs = -1;
static gint ett_rrc_CellUpdateConfirm_r7_add_ext_IEs = -1;
static gint ett_rrc_T_v7f0NonCriticalExtensions_02 = -1;
static gint ett_rrc_T_v7g0NonCriticalExtensions_04 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_19 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_21 = -1;
static gint ett_rrc_CellUpdateConfirm_v780ext_IEs = -1;
static gint ett_rrc_CellUpdateConfirm_v7d0ext_IEs = -1;
static gint ett_rrc_CellUpdateConfirm_v7f0ext_IEs = -1;
@@ -8861,6 +9359,7 @@ static gint ett_rrc_CellUpdateConfirm_v890ext_IEs = -1;
static gint ett_rrc_CellUpdateConfirm_v8a0ext_IEs = -1;
static gint ett_rrc_CellUpdateConfirm_r9_IEs = -1;
static gint ett_rrc_CellUpdateConfirm_v950ext_IEs = -1;
+static gint ett_rrc_CellUpdateConfirm_r10_IEs = -1;
static gint ett_rrc_CellUpdateConfirm_CCCH = -1;
static gint ett_rrc_T_r3_05 = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_08 = -1;
@@ -8868,89 +9367,95 @@ static gint ett_rrc_T_v4b0NonCriticalExtensions_03 = -1;
static gint ett_rrc_T_v590NonCriticalExtensions_03 = -1;
static gint ett_rrc_T_v5d0NonCriticalExtenstions_03 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_05 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_20 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_22 = -1;
static gint ett_rrc_T_later_than_r3_04 = -1;
-static gint ett_rrc_T_criticalExtensions_15 = -1;
+static gint ett_rrc_T_criticalExtensions_17 = -1;
static gint ett_rrc_T_r4_01 = -1;
static gint ett_rrc_T_v4d0NonCriticalExtensions_01 = -1;
static gint ett_rrc_T_v590NonCriticalExtensions_04 = -1;
static gint ett_rrc_T_v5d0NonCriticalExtenstions_04 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_06 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_21 = -1;
-static gint ett_rrc_T_criticalExtensions_16 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_23 = -1;
+static gint ett_rrc_T_criticalExtensions_18 = -1;
static gint ett_rrc_T_r5_01 = -1;
static gint ett_rrc_T_v5d0NonCriticalExtenstions_05 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_07 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_22 = -1;
-static gint ett_rrc_T_criticalExtensions_17 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_24 = -1;
+static gint ett_rrc_T_criticalExtensions_19 = -1;
static gint ett_rrc_T_r6_02 = -1;
static gint ett_rrc_T_v6b0NonCriticalExtensions_03 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_23 = -1;
-static gint ett_rrc_T_criticalExtensions_18 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_25 = -1;
+static gint ett_rrc_T_criticalExtensions_20 = -1;
static gint ett_rrc_T_r7_02 = -1;
static gint ett_rrc_T_v780NonCriticalExtensions_02 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_02 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_24 = -1;
-static gint ett_rrc_T_criticalExtensions_19 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_26 = -1;
+static gint ett_rrc_T_criticalExtensions_21 = -1;
static gint ett_rrc_T_r8_02 = -1;
static gint ett_rrc_T_v7d0NonCriticalExtensions_01 = -1;
static gint ett_rrc_T_v890NonCriticalExtensions_02 = -1;
static gint ett_rrc_T_v8a0NonCriticalExtensions_01 = -1;
static gint ett_rrc_T_v7f0NonCriticalExtensions_03 = -1;
static gint ett_rrc_T_v7g0NonCriticalExtensions_05 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_25 = -1;
-static gint ett_rrc_T_criticalExtensions_20 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_27 = -1;
+static gint ett_rrc_T_criticalExtensions_22 = -1;
static gint ett_rrc_T_r9_02 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_26 = -1;
-static gint ett_rrc_T_criticalExtensions_21 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_28 = -1;
+static gint ett_rrc_T_criticalExtensions_23 = -1;
+static gint ett_rrc_T_r10_02 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_29 = -1;
+static gint ett_rrc_T_criticalExtensions_24 = -1;
static gint ett_rrc_CounterCheck = -1;
static gint ett_rrc_T_r3_06 = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_09 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_27 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_30 = -1;
static gint ett_rrc_T_later_than_r3_05 = -1;
-static gint ett_rrc_T_criticalExtensions_22 = -1;
+static gint ett_rrc_T_criticalExtensions_25 = -1;
static gint ett_rrc_CounterCheck_r3_IEs = -1;
static gint ett_rrc_CounterCheckResponse = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_10 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_28 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_31 = -1;
static gint ett_rrc_DownlinkDirectTransfer = -1;
static gint ett_rrc_T_r3_07 = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_11 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_29 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_32 = -1;
static gint ett_rrc_T_later_than_r3_06 = -1;
-static gint ett_rrc_T_criticalExtensions_23 = -1;
+static gint ett_rrc_T_criticalExtensions_26 = -1;
static gint ett_rrc_DownlinkDirectTransfer_r3_IEs = -1;
static gint ett_rrc_ETWSPrimaryNotificationWithSecurity = -1;
-static gint ett_rrc_T_nonCriticalExtensions_30 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_33 = -1;
static gint ett_rrc_HandoverToUTRANCommand = -1;
static gint ett_rrc_T_r3_08 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_31 = -1;
-static gint ett_rrc_T_criticalExtensions_24 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_34 = -1;
+static gint ett_rrc_T_criticalExtensions_27 = -1;
static gint ett_rrc_T_r4_02 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_32 = -1;
-static gint ett_rrc_T_criticalExtensions_25 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_35 = -1;
+static gint ett_rrc_T_criticalExtensions_28 = -1;
static gint ett_rrc_T_r5_02 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_33 = -1;
-static gint ett_rrc_T_criticalExtensions_26 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_36 = -1;
+static gint ett_rrc_T_criticalExtensions_29 = -1;
static gint ett_rrc_T_r6_03 = -1;
static gint ett_rrc_T_v6b0NonCriticalExtensions_04 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_34 = -1;
-static gint ett_rrc_T_criticalExtensions_27 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_37 = -1;
+static gint ett_rrc_T_criticalExtensions_30 = -1;
static gint ett_rrc_T_r7_03 = -1;
static gint ett_rrc_T_v780NonCriticalExtensions_03 = -1;
static gint ett_rrc_T_v820NonCriticalExtensions = -1;
static gint ett_rrc_T_v7d0NonCriticalExtensions_02 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_35 = -1;
-static gint ett_rrc_T_criticalExtensions_28 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_38 = -1;
+static gint ett_rrc_T_criticalExtensions_31 = -1;
static gint ett_rrc_T_r8_03 = -1;
static gint ett_rrc_T_v7d0NonCriticalExtensions_03 = -1;
static gint ett_rrc_T_v890NonCriticalExtensions_03 = -1;
static gint ett_rrc_T_v8a0NonCriticalExtensions_02 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_36 = -1;
-static gint ett_rrc_T_criticalExtensions_29 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_39 = -1;
+static gint ett_rrc_T_criticalExtensions_32 = -1;
static gint ett_rrc_T_r9_03 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_37 = -1;
-static gint ett_rrc_T_criticalExtensions_30 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_40 = -1;
+static gint ett_rrc_T_criticalExtensions_33 = -1;
+static gint ett_rrc_T_r10_03 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_41 = -1;
+static gint ett_rrc_T_criticalExtensions_34 = -1;
static gint ett_rrc_HandoverToUTRANCommand_r3_IEs = -1;
static gint ett_rrc_T_specificationMode = -1;
static gint ett_rrc_T_complete = -1;
@@ -9041,9 +9546,23 @@ static gint ett_rrc_T_tdd_06 = -1;
static gint ett_rrc_T_tdd384_05 = -1;
static gint ett_rrc_T_tdd128_05 = -1;
static gint ett_rrc_T_tdd768_02 = -1;
+static gint ett_rrc_HandoverToUTRANCommand_r10_IEs = -1;
+static gint ett_rrc_T_specificationMode_07 = -1;
+static gint ett_rrc_T_complete_07 = -1;
+static gint ett_rrc_T_preconfiguration_07 = -1;
+static gint ett_rrc_T_preConfigMode_07 = -1;
+static gint ett_rrc_T_defaultConfig_07 = -1;
+static gint ett_rrc_T_modeSpecificInfo_10 = -1;
+static gint ett_rrc_T_fdd_16 = -1;
+static gint ett_rrc_T_tdd_07 = -1;
+static gint ett_rrc_T_tdd384_06 = -1;
+static gint ett_rrc_T_tdd128_06 = -1;
+static gint ett_rrc_T_tdd768_03 = -1;
static gint ett_rrc_HandoverToUTRANComplete = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_12 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_38 = -1;
+static gint ett_rrc_T_va40NonCriticalExtensions_01 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_42 = -1;
+static gint ett_rrc_HandoverToUTRANComplete_va40ext = -1;
static gint ett_rrc_InitialDirectTransfer = -1;
static gint ett_rrc_T_v3a0NonCriticalExtensions_02 = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_13 = -1;
@@ -9051,27 +9570,27 @@ static gint ett_rrc_T_v590NonCriticalExtensions_05 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_08 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_01 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_03 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_39 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_43 = -1;
static gint ett_rrc_InitialDirectTransfer_v3a0ext = -1;
static gint ett_rrc_InitialDirectTransfer_v590ext = -1;
static gint ett_rrc_InitialDirectTransfer_v690ext_IEs = -1;
static gint ett_rrc_InitialDirectTransfer_v770ext_IEs = -1;
static gint ett_rrc_InitialDirectTransfer_v860ext_IEs = -1;
static gint ett_rrc_InitialDirectTransfer_r3_add_ext_IEs = -1;
-static gint ett_rrc_T_nonCriticalExtensions_40 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_44 = -1;
static gint ett_rrc_InitialDirectTransfer_v7g0ext_IEs = -1;
static gint ett_rrc_HandoverFromUTRANCommand_GSM = -1;
static gint ett_rrc_T_r3_09 = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_14 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_09 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_04 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_41 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_45 = -1;
static gint ett_rrc_T_later_than_r3_07 = -1;
-static gint ett_rrc_T_criticalExtensions_31 = -1;
+static gint ett_rrc_T_criticalExtensions_35 = -1;
static gint ett_rrc_T_r6_04 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_05 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_42 = -1;
-static gint ett_rrc_T_criticalExtensions_32 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_46 = -1;
+static gint ett_rrc_T_criticalExtensions_36 = -1;
static gint ett_rrc_HandoverFromUTRANCommand_GSM_r3_IEs = -1;
static gint ett_rrc_T_gsm_message = -1;
static gint ett_rrc_T_single_GSM_Message_r3 = -1;
@@ -9087,9 +9606,9 @@ static gint ett_rrc_HandoverFromUTRANCommand_GSM_v860ext_IEs = -1;
static gint ett_rrc_HandoverFromUTRANCommand_GERANIu = -1;
static gint ett_rrc_T_handoverFromUTRANCommand_GERANIu = -1;
static gint ett_rrc_T_r5_03 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_43 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_47 = -1;
static gint ett_rrc_T_later_than_r5 = -1;
-static gint ett_rrc_T_criticalExtensions_33 = -1;
+static gint ett_rrc_T_criticalExtensions_37 = -1;
static gint ett_rrc_HandoverFromUTRANCommand_GERANIu_r5_IEs = -1;
static gint ett_rrc_T_geranIu_Message = -1;
static gint ett_rrc_T_single_GERANIu_Message = -1;
@@ -9097,15 +9616,15 @@ static gint ett_rrc_T_geranIu_MessageList = -1;
static gint ett_rrc_HandoverFromUTRANCommand_CDMA2000 = -1;
static gint ett_rrc_T_r3_10 = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_15 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_44 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_48 = -1;
static gint ett_rrc_T_later_than_r3_08 = -1;
-static gint ett_rrc_T_criticalExtensions_34 = -1;
+static gint ett_rrc_T_criticalExtensions_38 = -1;
static gint ett_rrc_HandoverFromUTRANCommand_CDMA2000_r3_IEs = -1;
static gint ett_rrc_HandoverFromUTRANCommand_EUTRA = -1;
-static gint ett_rrc_T_criticalExtensions_35 = -1;
+static gint ett_rrc_T_criticalExtensions_39 = -1;
static gint ett_rrc_T_r8_04 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_45 = -1;
-static gint ett_rrc_T_criticalExtensions_36 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_49 = -1;
+static gint ett_rrc_T_criticalExtensions_40 = -1;
static gint ett_rrc_HandoverFromUTRANCommand_EUTRA_r8_IEs = -1;
static gint ett_rrc_HandoverFromUTRANFailure = -1;
static gint ett_rrc_T_interRATMessage = -1;
@@ -9114,7 +9633,7 @@ static gint ett_rrc_T_cdma2000 = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_16 = -1;
static gint ett_rrc_T_v590NonCriticalExtensions_06 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_06 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_46 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_50 = -1;
static gint ett_rrc_HandoverFromUtranFailure_v590ext_IEs = -1;
static gint ett_rrc_HandoverFromUtranFailure_v860ext_IEs = -1;
static gint ett_rrc_InterRATHandoverInfo = -1;
@@ -9137,7 +9656,8 @@ static gint ett_rrc_InterRATHandoverInfo_v3g0ext_IEs = -1;
static gint ett_rrc_InterRATHandoverInfo_r3_add_ext_IEs = -1;
static gint ett_rrc_T_v7e0NonCriticalExtensions = -1;
static gint ett_rrc_T_v7f0NonCriticalExtensions_04 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_47 = -1;
+static gint ett_rrc_T_va40NonCriticalExtensions_02 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_51 = -1;
static gint ett_rrc_InterRATHandoverInfo_v4b0ext_IEs = -1;
static gint ett_rrc_InterRATHandoverInfo_v4d0ext_IEs = -1;
static gint ett_rrc_InterRATHandoverInfo_v590ext_IEs = -1;
@@ -9152,7 +9672,8 @@ static gint ett_rrc_T_v880NonCriticalExtensions = -1;
static gint ett_rrc_T_v920NonCriticalExtensions = -1;
static gint ett_rrc_T_v8b0NonCriticalExtensions = -1;
static gint ett_rrc_T_v950NonCriticalExtensions_02 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_48 = -1;
+static gint ett_rrc_T_va40NonCriticalExtensions_03 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_52 = -1;
static gint ett_rrc_InterRATHandoverInfo_v6b0ext_IEs = -1;
static gint ett_rrc_InterRATHandoverInfo_v6e0ext_IEs = -1;
static gint ett_rrc_InterRATHandoverInfo_v770ext_IEs = -1;
@@ -9164,6 +9685,8 @@ static gint ett_rrc_InterRATHandoverInfo_v880ext_IEs = -1;
static gint ett_rrc_InterRATHandoverInfo_v920ext_IEs = -1;
static gint ett_rrc_InterRATHandoverInfo_v8b0ext_IEs = -1;
static gint ett_rrc_InterRATHandoverInfo_v950ext_IEs = -1;
+static gint ett_rrc_InterRATHandoverInfo_va40ext_IEs = -1;
+static gint ett_rrc_InterRATHandoverInfoBand_va40ext_IEs = -1;
static gint ett_rrc_MeasurementControl = -1;
static gint ett_rrc_T_r3_11 = -1;
static gint ett_rrc_T_v390nonCriticalExtensions = -1;
@@ -9172,32 +9695,35 @@ static gint ett_rrc_T_laterNonCriticalExtensions_18 = -1;
static gint ett_rrc_T_v4b0NonCriticalExtensions_05 = -1;
static gint ett_rrc_T_v590NonCriticalExtensions_08 = -1;
static gint ett_rrc_T_v5b0NonCriticalExtensions = -1;
-static gint ett_rrc_T_nonCriticalExtensions_49 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_53 = -1;
static gint ett_rrc_T_later_than_r3_09 = -1;
-static gint ett_rrc_T_criticalExtensions_37 = -1;
+static gint ett_rrc_T_criticalExtensions_41 = -1;
static gint ett_rrc_T_r4_03 = -1;
static gint ett_rrc_T_v4d0NonCriticalExtensions_03 = -1;
static gint ett_rrc_T_v590NonCriticalExtensions_09 = -1;
static gint ett_rrc_T_v5b0NonCriticalExtensions_01 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_50 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_54 = -1;
static gint ett_rrc_T_later_than_r4 = -1;
-static gint ett_rrc_T_criticalExtensions_38 = -1;
+static gint ett_rrc_T_criticalExtensions_42 = -1;
static gint ett_rrc_T_r6_05 = -1;
static gint ett_rrc_T_v6a0NonCriticalExtensions = -1;
-static gint ett_rrc_T_nonCriticalExtensions_51 = -1;
-static gint ett_rrc_T_criticalExtensions_39 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_55 = -1;
+static gint ett_rrc_T_criticalExtensions_43 = -1;
static gint ett_rrc_T_r7_04 = -1;
static gint ett_rrc_T_v7b0NonCriticalExtensions = -1;
-static gint ett_rrc_T_nonCriticalExtensions_52 = -1;
-static gint ett_rrc_T_criticalExtensions_40 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_56 = -1;
+static gint ett_rrc_T_criticalExtensions_44 = -1;
static gint ett_rrc_T_r8_05 = -1;
static gint ett_rrc_T_v8a0NonCriticalExtensions_03 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_53 = -1;
-static gint ett_rrc_T_criticalExtensions_41 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_57 = -1;
+static gint ett_rrc_T_criticalExtensions_45 = -1;
static gint ett_rrc_T_r9_04 = -1;
static gint ett_rrc_T_v970NonCriticalExtensions = -1;
-static gint ett_rrc_T_nonCriticalExtensions_54 = -1;
-static gint ett_rrc_T_criticalExtensions_42 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_58 = -1;
+static gint ett_rrc_T_criticalExtensions_46 = -1;
+static gint ett_rrc_T_r10_04 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_59 = -1;
+static gint ett_rrc_T_criticalExtensions_47 = -1;
static gint ett_rrc_MeasurementControl_r3_IEs = -1;
static gint ett_rrc_MeasurementControl_v390ext = -1;
static gint ett_rrc_MeasurementControl_v3a0ext = -1;
@@ -9213,10 +9739,11 @@ static gint ett_rrc_MeasurementControl_r8_IEs = -1;
static gint ett_rrc_MeasurementControl_v8a0ext_IEs = -1;
static gint ett_rrc_MeasurementControl_r9_IEs = -1;
static gint ett_rrc_MeasurementControl_v970ext_IEs = -1;
+static gint ett_rrc_MeasurementControl_r10_IEs = -1;
static gint ett_rrc_MeasurementControlFailure = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_19 = -1;
static gint ett_rrc_T_v590NonCriticalExtensions_10 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_55 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_60 = -1;
static gint ett_rrc_MeasurementControlFailure_v590ext_IEs = -1;
static gint ett_rrc_MeasurementReport = -1;
static gint ett_rrc_T_v390nonCriticalExtensions_01 = -1;
@@ -9229,7 +9756,8 @@ static gint ett_rrc_T_v770NonCriticalExtensions_03 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_08 = -1;
static gint ett_rrc_T_v920NonCriticalExtensions_01 = -1;
static gint ett_rrc_T_v970NonCriticalExtensions_01 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_56 = -1;
+static gint ett_rrc_T_va40NonCriticalExtensions_04 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_61 = -1;
static gint ett_rrc_MeasurementReport_v390ext = -1;
static gint ett_rrc_MeasurementReport_v4b0ext_IEs = -1;
static gint ett_rrc_MeasurementReport_v590ext_IEs = -1;
@@ -9239,16 +9767,17 @@ static gint ett_rrc_MeasurementReport_v770ext_IEs = -1;
static gint ett_rrc_MeasurementReport_v860ext_IEs = -1;
static gint ett_rrc_MeasurementReport_v920ext_IEs = -1;
static gint ett_rrc_MeasurementReport_v970ext_IEs = -1;
+static gint ett_rrc_MeasurementReport_va40ext_IEs = -1;
static gint ett_rrc_PagingType1 = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_21 = -1;
static gint ett_rrc_T_v590NonCriticalExtensions_12 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_09 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_57 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_62 = -1;
static gint ett_rrc_PagingType1_v590ext_IEs = -1;
static gint ett_rrc_PagingType1_v860ext_IEs = -1;
static gint ett_rrc_PagingType2 = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_22 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_58 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_63 = -1;
static gint ett_rrc_PhysicalChannelReconfiguration = -1;
static gint ett_rrc_T_r3_12 = -1;
static gint ett_rrc_T_v3a0NonCriticalExtensions_05 = -1;
@@ -9257,57 +9786,60 @@ static gint ett_rrc_T_v4b0NonCriticalExtenstions = -1;
static gint ett_rrc_T_v590NonCriticalExtenstions_02 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_12 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_04 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_59 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_64 = -1;
static gint ett_rrc_T_later_than_r3_10 = -1;
-static gint ett_rrc_T_criticalExtensions_43 = -1;
+static gint ett_rrc_T_criticalExtensions_48 = -1;
static gint ett_rrc_T_r4_04 = -1;
static gint ett_rrc_T_v4d0NonCriticalExtensions_04 = -1;
static gint ett_rrc_T_v590NonCriticalExtenstions_03 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_13 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_05 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_60 = -1;
-static gint ett_rrc_T_criticalExtensions_44 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_65 = -1;
+static gint ett_rrc_T_criticalExtensions_49 = -1;
static gint ett_rrc_T_r5_04 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_14 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_06 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_61 = -1;
-static gint ett_rrc_T_criticalExtensions_45 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_66 = -1;
+static gint ett_rrc_T_criticalExtensions_50 = -1;
static gint ett_rrc_T_r6_06 = -1;
static gint ett_rrc_T_v6b0NonCriticalExtensions_05 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_07 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_62 = -1;
-static gint ett_rrc_T_criticalExtensions_46 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_67 = -1;
+static gint ett_rrc_T_criticalExtensions_51 = -1;
static gint ett_rrc_T_r7_05 = -1;
static gint ett_rrc_T_v780NonCriticalExtensions_04 = -1;
static gint ett_rrc_T_v7d0NonCriticalExtensions_04 = -1;
static gint ett_rrc_T_v7f0NonCriticalExtensions_05 = -1;
static gint ett_rrc_T_v7g0NonCriticalExtensions_06 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_63 = -1;
-static gint ett_rrc_T_criticalExtensions_47 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_68 = -1;
+static gint ett_rrc_T_criticalExtensions_52 = -1;
static gint ett_rrc_T_r8_06 = -1;
static gint ett_rrc_T_v7d0NonCriticalExtensions_05 = -1;
static gint ett_rrc_T_v7f0NonCriticalExtensions_06 = -1;
static gint ett_rrc_T_v890NonCriticalExtensions_04 = -1;
static gint ett_rrc_T_v7g0NonCriticalExtensions_07 = -1;
static gint ett_rrc_T_v8a0NonCriticalExtensions_04 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_64 = -1;
-static gint ett_rrc_T_criticalExtensions_48 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_69 = -1;
+static gint ett_rrc_T_criticalExtensions_53 = -1;
static gint ett_rrc_T_r9_05 = -1;
static gint ett_rrc_T_v950NonCriticalExtensions_03 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_65 = -1;
-static gint ett_rrc_T_criticalExtensions_49 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_70 = -1;
+static gint ett_rrc_T_criticalExtensions_54 = -1;
+static gint ett_rrc_T_r10_05 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_71 = -1;
+static gint ett_rrc_T_criticalExtensions_55 = -1;
static gint ett_rrc_PhysicalChannelReconfiguration_r3_IEs = -1;
-static gint ett_rrc_T_modeSpecificInfo_10 = -1;
-static gint ett_rrc_T_fdd_16 = -1;
+static gint ett_rrc_T_modeSpecificInfo_11 = -1;
+static gint ett_rrc_T_fdd_17 = -1;
static gint ett_rrc_PhysicalChannelReconfiguration_v3a0ext = -1;
static gint ett_rrc_PhysicalChannelReconfiguration_v4b0ext_IEs = -1;
static gint ett_rrc_PhysicalChannelReconfiguration_v590ext_IEs = -1;
static gint ett_rrc_PhysicalChannelReconfiguration_r4_IEs = -1;
-static gint ett_rrc_T_modeSpecificInfo_11 = -1;
-static gint ett_rrc_T_fdd_17 = -1;
-static gint ett_rrc_PhysicalChannelReconfiguration_r5_IEs = -1;
static gint ett_rrc_T_modeSpecificInfo_12 = -1;
static gint ett_rrc_T_fdd_18 = -1;
+static gint ett_rrc_PhysicalChannelReconfiguration_r5_IEs = -1;
+static gint ett_rrc_T_modeSpecificInfo_13 = -1;
+static gint ett_rrc_T_fdd_19 = -1;
static gint ett_rrc_PhysicalChannelReconfiguration_r6_IEs = -1;
static gint ett_rrc_PhysicalChannelReconfiguration_v690ext_IEs = -1;
static gint ett_rrc_PhysicalChannelReconfiguration_v6b0ext_IEs = -1;
@@ -9322,26 +9854,27 @@ static gint ett_rrc_PhysicalChannelReconfiguration_v890ext_IEs = -1;
static gint ett_rrc_PhysicalChannelReconfiguration_v8a0ext_IEs = -1;
static gint ett_rrc_PhysicalChannelReconfiguration_r9_IEs = -1;
static gint ett_rrc_PhysicalChannelReconfiguration_v950ext_IEs = -1;
+static gint ett_rrc_PhysicalChannelReconfiguration_r10_IEs = -1;
static gint ett_rrc_PhysicalChannelReconfigurationComplete = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_24 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_08 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_66 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_72 = -1;
static gint ett_rrc_PhysicalChannelReconfigurationComplete_v770ext_IEs = -1;
static gint ett_rrc_PhysicalChannelReconfigurationFailure = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_25 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_67 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_73 = -1;
static gint ett_rrc_PhysicalSharedChannelAllocation = -1;
static gint ett_rrc_T_r3_13 = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_26 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_68 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_74 = -1;
static gint ett_rrc_T_later_than_r3_11 = -1;
-static gint ett_rrc_T_criticalExtensions_50 = -1;
+static gint ett_rrc_T_criticalExtensions_56 = -1;
static gint ett_rrc_T_r4_05 = -1;
static gint ett_rrc_T_v4d0NonCriticalExtensions_05 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_15 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_09 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_69 = -1;
-static gint ett_rrc_T_criticalExtensions_51 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_75 = -1;
+static gint ett_rrc_T_criticalExtensions_57 = -1;
static gint ett_rrc_PhysicalSharedChannelAllocation_r3_IEs = -1;
static gint ett_rrc_PhysicalSharedChannelAllocation_r4_IEs = -1;
static gint ett_rrc_PhysicalSharedChannelAllocation_v690ext_IEs = -1;
@@ -9350,7 +9883,7 @@ static gint ett_rrc_PUSCHCapacityRequest = -1;
static gint ett_rrc_T_allocationConfirmation = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_27 = -1;
static gint ett_rrc_T_v590NonCriticalExtensions_13 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_70 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_76 = -1;
static gint ett_rrc_PUSCHCapacityRequest_v590ext = -1;
static gint ett_rrc_RadioBearerReconfiguration = -1;
static gint ett_rrc_T_r3_14 = -1;
@@ -9361,90 +9894,93 @@ static gint ett_rrc_T_v590NonCriticalExtensions_14 = -1;
static gint ett_rrc_T_v5d0NonCriticalExtenstions_06 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_16 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_10 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_71 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_77 = -1;
static gint ett_rrc_T_later_than_r3_12 = -1;
-static gint ett_rrc_T_criticalExtensions_52 = -1;
+static gint ett_rrc_T_criticalExtensions_58 = -1;
static gint ett_rrc_T_r4_06 = -1;
static gint ett_rrc_T_v4d0NonCriticalExtensions_06 = -1;
static gint ett_rrc_T_v590NonCriticalExtensions_15 = -1;
static gint ett_rrc_T_v5d0NonCriticalExtenstions_07 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_17 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_11 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_72 = -1;
-static gint ett_rrc_T_criticalExtensions_53 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_78 = -1;
+static gint ett_rrc_T_criticalExtensions_59 = -1;
static gint ett_rrc_T_r5_05 = -1;
static gint ett_rrc_T_v5d0NonCriticalExtenstions_08 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_18 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_12 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_73 = -1;
-static gint ett_rrc_T_criticalExtensions_54 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_79 = -1;
+static gint ett_rrc_T_criticalExtensions_60 = -1;
static gint ett_rrc_T_r6_07 = -1;
static gint ett_rrc_T_v6b0NonCriticalExtensions_06 = -1;
static gint ett_rrc_T_v6f0NonCriticalExtensions = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_13 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_74 = -1;
-static gint ett_rrc_T_criticalExtensions_55 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_80 = -1;
+static gint ett_rrc_T_criticalExtensions_61 = -1;
static gint ett_rrc_T_r7_06 = -1;
static gint ett_rrc_T_v780NonCriticalExtensions_05 = -1;
static gint ett_rrc_T_v790NonCriticalExtensions = -1;
static gint ett_rrc_T_v7d0NonCriticalExtensions_06 = -1;
static gint ett_rrc_T_v7f0NonCriticalExtensions_07 = -1;
static gint ett_rrc_T_v7g0NonCriticalExtensions_08 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_75 = -1;
-static gint ett_rrc_T_criticalExtensions_56 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_81 = -1;
+static gint ett_rrc_T_criticalExtensions_62 = -1;
static gint ett_rrc_T_r8_07 = -1;
static gint ett_rrc_T_v7d0NonCriticalExtensions_07 = -1;
static gint ett_rrc_T_v7f0NonCriticalExtensions_08 = -1;
static gint ett_rrc_T_v890NonCriticalExtensions_05 = -1;
static gint ett_rrc_T_v7g0NonCriticalExtensions_09 = -1;
static gint ett_rrc_T_v8a0NonCriticalExtensions_05 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_76 = -1;
-static gint ett_rrc_T_criticalExtensions_57 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_82 = -1;
+static gint ett_rrc_T_criticalExtensions_63 = -1;
static gint ett_rrc_T_r9_06 = -1;
static gint ett_rrc_T_v950NonCriticalExtensions_04 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_77 = -1;
-static gint ett_rrc_T_criticalExtensions_58 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_83 = -1;
+static gint ett_rrc_T_criticalExtensions_64 = -1;
+static gint ett_rrc_T_r10_06 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_84 = -1;
+static gint ett_rrc_T_criticalExtensions_65 = -1;
static gint ett_rrc_RadioBearerReconfiguration_r3_IEs = -1;
static gint ett_rrc_T_dummy_01 = -1;
-static gint ett_rrc_T_fdd_19 = -1;
-static gint ett_rrc_T_modeSpecificPhysChInfo_03 = -1;
static gint ett_rrc_T_fdd_20 = -1;
+static gint ett_rrc_T_modeSpecificPhysChInfo_03 = -1;
+static gint ett_rrc_T_fdd_21 = -1;
static gint ett_rrc_RadioBearerReconfiguration_v3a0ext = -1;
static gint ett_rrc_RadioBearerReconfiguration_v4b0ext_IEs = -1;
static gint ett_rrc_RadioBearerReconfiguration_v590ext_IEs = -1;
static gint ett_rrc_RadioBearerReconfiguration_v5d0ext_IEs = -1;
static gint ett_rrc_RadioBearerReconfiguration_r4_IEs = -1;
static gint ett_rrc_T_dummy_02 = -1;
-static gint ett_rrc_T_fdd_21 = -1;
-static gint ett_rrc_T_modeSpecificPhysChInfo_04 = -1;
static gint ett_rrc_T_fdd_22 = -1;
-static gint ett_rrc_RadioBearerReconfiguration_r5_IEs = -1;
-static gint ett_rrc_T_specificationMode_07 = -1;
-static gint ett_rrc_T_complete_07 = -1;
-static gint ett_rrc_T_dummy_03 = -1;
+static gint ett_rrc_T_modeSpecificPhysChInfo_04 = -1;
static gint ett_rrc_T_fdd_23 = -1;
-static gint ett_rrc_T_preconfiguration_07 = -1;
-static gint ett_rrc_T_preConfigMode_07 = -1;
-static gint ett_rrc_T_defaultConfig_07 = -1;
-static gint ett_rrc_T_modeSpecificPhysChInfo_05 = -1;
-static gint ett_rrc_T_fdd_24 = -1;
-static gint ett_rrc_RadioBearerReconfiguration_r6_IEs = -1;
+static gint ett_rrc_RadioBearerReconfiguration_r5_IEs = -1;
static gint ett_rrc_T_specificationMode_08 = -1;
static gint ett_rrc_T_complete_08 = -1;
+static gint ett_rrc_T_dummy_03 = -1;
+static gint ett_rrc_T_fdd_24 = -1;
static gint ett_rrc_T_preconfiguration_08 = -1;
static gint ett_rrc_T_preConfigMode_08 = -1;
static gint ett_rrc_T_defaultConfig_08 = -1;
-static gint ett_rrc_RadioBearerReconfiguration_v690ext_IEs = -1;
-static gint ett_rrc_RadioBearerReconfiguration_v6b0ext_IEs = -1;
-static gint ett_rrc_RadioBearerReconfiguration_v6f0ext_IEs = -1;
+static gint ett_rrc_T_modeSpecificPhysChInfo_05 = -1;
+static gint ett_rrc_T_fdd_25 = -1;
+static gint ett_rrc_RadioBearerReconfiguration_r6_IEs = -1;
static gint ett_rrc_T_specificationMode_09 = -1;
static gint ett_rrc_T_complete_09 = -1;
-static gint ett_rrc_RadioBearerReconfiguration_r7_IEs = -1;
-static gint ett_rrc_T_specificationMode_10 = -1;
-static gint ett_rrc_T_complete_10 = -1;
static gint ett_rrc_T_preconfiguration_09 = -1;
static gint ett_rrc_T_preConfigMode_09 = -1;
static gint ett_rrc_T_defaultConfig_09 = -1;
+static gint ett_rrc_RadioBearerReconfiguration_v690ext_IEs = -1;
+static gint ett_rrc_RadioBearerReconfiguration_v6b0ext_IEs = -1;
+static gint ett_rrc_RadioBearerReconfiguration_v6f0ext_IEs = -1;
+static gint ett_rrc_T_specificationMode_10 = -1;
+static gint ett_rrc_T_complete_10 = -1;
+static gint ett_rrc_RadioBearerReconfiguration_r7_IEs = -1;
+static gint ett_rrc_T_specificationMode_11 = -1;
+static gint ett_rrc_T_complete_11 = -1;
+static gint ett_rrc_T_preconfiguration_10 = -1;
+static gint ett_rrc_T_preConfigMode_10 = -1;
+static gint ett_rrc_T_defaultConfig_10 = -1;
static gint ett_rrc_RadioBearerReconfiguration_v770ext_IEs = -1;
static gint ett_rrc_RadioBearerReconfiguration_v780ext_IEs = -1;
static gint ett_rrc_RadioBearerReconfiguration_v790ext_IEs = -1;
@@ -9452,28 +9988,34 @@ static gint ett_rrc_RadioBearerReconfiguration_v7d0ext_IEs = -1;
static gint ett_rrc_RadioBearerReconfiguration_v7f0ext_IEs = -1;
static gint ett_rrc_RadioBearerReconfiguration_v7g0ext_IEs = -1;
static gint ett_rrc_RadioBearerReconfiguration_r8_IEs = -1;
-static gint ett_rrc_T_specificationMode_11 = -1;
-static gint ett_rrc_T_complete_11 = -1;
-static gint ett_rrc_T_preconfiguration_10 = -1;
-static gint ett_rrc_T_preConfigMode_10 = -1;
-static gint ett_rrc_T_defaultConfig_10 = -1;
-static gint ett_rrc_RadioBearerReconfiguration_v890ext_IEs = -1;
-static gint ett_rrc_RadioBearerReconfiguration_v8a0ext_IEs = -1;
-static gint ett_rrc_RadioBearerReconfiguration_r9_IEs = -1;
static gint ett_rrc_T_specificationMode_12 = -1;
static gint ett_rrc_T_complete_12 = -1;
static gint ett_rrc_T_preconfiguration_11 = -1;
static gint ett_rrc_T_preConfigMode_11 = -1;
static gint ett_rrc_T_defaultConfig_11 = -1;
+static gint ett_rrc_RadioBearerReconfiguration_v890ext_IEs = -1;
+static gint ett_rrc_RadioBearerReconfiguration_v8a0ext_IEs = -1;
+static gint ett_rrc_RadioBearerReconfiguration_r9_IEs = -1;
+static gint ett_rrc_T_specificationMode_13 = -1;
+static gint ett_rrc_T_complete_13 = -1;
+static gint ett_rrc_T_preconfiguration_12 = -1;
+static gint ett_rrc_T_preConfigMode_12 = -1;
+static gint ett_rrc_T_defaultConfig_12 = -1;
static gint ett_rrc_RadioBearerReconfiguration_v950ext_IEs = -1;
+static gint ett_rrc_RadioBearerReconfiguration_r10_IEs = -1;
+static gint ett_rrc_T_specificationMode_14 = -1;
+static gint ett_rrc_T_complete_14 = -1;
+static gint ett_rrc_T_preconfiguration_13 = -1;
+static gint ett_rrc_T_preConfigMode_13 = -1;
+static gint ett_rrc_T_defaultConfig_13 = -1;
static gint ett_rrc_RadioBearerReconfigurationComplete = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_29 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_14 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_78 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_85 = -1;
static gint ett_rrc_RadioBearerReconfigurationComplete_v770ext_IEs = -1;
static gint ett_rrc_RadioBearerReconfigurationFailure = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_30 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_79 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_86 = -1;
static gint ett_rrc_RadioBearerRelease = -1;
static gint ett_rrc_T_r3_15 = -1;
static gint ett_rrc_T_v3a0NonCriticalExtensions_06 = -1;
@@ -9482,64 +10024,67 @@ static gint ett_rrc_T_v4b0NonCriticalExtensions_08 = -1;
static gint ett_rrc_T_v590NonCriticalExtensions_16 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_19 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_15 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_80 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_87 = -1;
static gint ett_rrc_T_later_than_r3_13 = -1;
-static gint ett_rrc_T_criticalExtensions_59 = -1;
+static gint ett_rrc_T_criticalExtensions_66 = -1;
static gint ett_rrc_T_r4_07 = -1;
static gint ett_rrc_T_v4d0NonCriticalExtensions_07 = -1;
static gint ett_rrc_T_v590NonCriticalExtensions_17 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_20 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_16 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_81 = -1;
-static gint ett_rrc_T_criticalExtensions_60 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_88 = -1;
+static gint ett_rrc_T_criticalExtensions_67 = -1;
static gint ett_rrc_T_r5_06 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_21 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_17 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_82 = -1;
-static gint ett_rrc_T_criticalExtensions_61 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_89 = -1;
+static gint ett_rrc_T_criticalExtensions_68 = -1;
static gint ett_rrc_T_r6_08 = -1;
static gint ett_rrc_T_v6b0NonCriticalExtensions_07 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_18 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_83 = -1;
-static gint ett_rrc_T_criticalExtensions_62 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_90 = -1;
+static gint ett_rrc_T_criticalExtensions_69 = -1;
static gint ett_rrc_T_r7_07 = -1;
static gint ett_rrc_T_v780NonCriticalExtensions_06 = -1;
static gint ett_rrc_T_v7d0NonCriticalExtensions_08 = -1;
static gint ett_rrc_T_v7f0NonCriticalExtensions_09 = -1;
static gint ett_rrc_T_v7g0NonCriticalExtensions_10 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_84 = -1;
-static gint ett_rrc_T_criticalExtensions_63 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_91 = -1;
+static gint ett_rrc_T_criticalExtensions_70 = -1;
static gint ett_rrc_T_r8_08 = -1;
static gint ett_rrc_T_v7d0NonCriticalExtensions_09 = -1;
static gint ett_rrc_T_v7f0NonCriticalExtensions_10 = -1;
static gint ett_rrc_T_v890NonCriticalExtensions_06 = -1;
static gint ett_rrc_T_v7g0NonCriticalExtensions_11 = -1;
static gint ett_rrc_T_v8a0NonCriticalExtensions_06 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_85 = -1;
-static gint ett_rrc_T_criticalExtensions_64 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_92 = -1;
+static gint ett_rrc_T_criticalExtensions_71 = -1;
static gint ett_rrc_T_r9_07 = -1;
static gint ett_rrc_T_v950NonCriticalExtensions_05 = -1;
static gint ett_rrc_T_v970NonCriticalExtensions_02 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_86 = -1;
-static gint ett_rrc_T_criticalExtensions_65 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_93 = -1;
+static gint ett_rrc_T_criticalExtensions_72 = -1;
+static gint ett_rrc_T_r10_07 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_94 = -1;
+static gint ett_rrc_T_criticalExtensions_73 = -1;
static gint ett_rrc_RadioBearerRelease_r3_IEs = -1;
static gint ett_rrc_T_dummy_04 = -1;
-static gint ett_rrc_T_fdd_25 = -1;
-static gint ett_rrc_T_modeSpecificPhysChInfo_06 = -1;
static gint ett_rrc_T_fdd_26 = -1;
+static gint ett_rrc_T_modeSpecificPhysChInfo_06 = -1;
+static gint ett_rrc_T_fdd_27 = -1;
static gint ett_rrc_RadioBearerRelease_v3a0ext = -1;
static gint ett_rrc_RadioBearerRelease_v4b0ext_IEs = -1;
static gint ett_rrc_RadioBearerRelease_v590ext_IEs = -1;
static gint ett_rrc_RadioBearerRelease_r4_IEs = -1;
static gint ett_rrc_T_dummy_05 = -1;
-static gint ett_rrc_T_fdd_27 = -1;
-static gint ett_rrc_T_modeSpecificPhysChInfo_07 = -1;
static gint ett_rrc_T_fdd_28 = -1;
+static gint ett_rrc_T_modeSpecificPhysChInfo_07 = -1;
+static gint ett_rrc_T_fdd_29 = -1;
static gint ett_rrc_RadioBearerRelease_r5_IEs = -1;
static gint ett_rrc_T_dummy_06 = -1;
-static gint ett_rrc_T_fdd_29 = -1;
-static gint ett_rrc_T_modeSpecificPhysChInfo_08 = -1;
static gint ett_rrc_T_fdd_30 = -1;
+static gint ett_rrc_T_modeSpecificPhysChInfo_08 = -1;
+static gint ett_rrc_T_fdd_31 = -1;
static gint ett_rrc_RadioBearerRelease_v690ext_IEs = -1;
static gint ett_rrc_RadioBearerRelease_r6_IEs = -1;
static gint ett_rrc_RadioBearerRelease_v6b0ext_IEs = -1;
@@ -9555,14 +10100,15 @@ static gint ett_rrc_RadioBearerRelease_v8a0ext_IEs = -1;
static gint ett_rrc_RadioBearerRelease_r9_IEs = -1;
static gint ett_rrc_RadioBearerRelease_v950ext_IEs = -1;
static gint ett_rrc_RadioBearerRelease_v970ext_IEs = -1;
+static gint ett_rrc_RadioBearerRelease_r10_IEs = -1;
static gint ett_rrc_RadioBearerReleaseComplete = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_32 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_19 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_87 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_95 = -1;
static gint ett_rrc_RadioBearerReleaseComplete_v770ext_IEs = -1;
static gint ett_rrc_RadioBearerReleaseFailure = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_33 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_88 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_96 = -1;
static gint ett_rrc_RadioBearerSetup = -1;
static gint ett_rrc_T_r3_16 = -1;
static gint ett_rrc_T_v3a0NonCriticalExtensions_07 = -1;
@@ -9571,74 +10117,77 @@ static gint ett_rrc_T_v4b0NonCriticalExtensions_09 = -1;
static gint ett_rrc_T_v590NonCriticalExtensions_18 = -1;
static gint ett_rrc_T_v5d0NonCriticalExtenstions_09 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_22 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_89 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_97 = -1;
static gint ett_rrc_T_later_than_r3_14 = -1;
-static gint ett_rrc_T_criticalExtensions_66 = -1;
+static gint ett_rrc_T_criticalExtensions_74 = -1;
static gint ett_rrc_T_r4_08 = -1;
static gint ett_rrc_T_v4d0NonCriticalExtensions_08 = -1;
static gint ett_rrc_T_v590NonCriticalExtensions_19 = -1;
static gint ett_rrc_T_v5d0NonCriticalExtenstions_10 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_23 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_90 = -1;
-static gint ett_rrc_T_criticalExtensions_67 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_98 = -1;
+static gint ett_rrc_T_criticalExtensions_75 = -1;
static gint ett_rrc_T_r5_07 = -1;
static gint ett_rrc_T_v5d0NonCriticalExtenstions_11 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_24 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_91 = -1;
-static gint ett_rrc_T_criticalExtensions_68 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_99 = -1;
+static gint ett_rrc_T_criticalExtensions_76 = -1;
static gint ett_rrc_T_r6_09 = -1;
static gint ett_rrc_T_v6b0NonCriticalExtensions_08 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_92 = -1;
-static gint ett_rrc_T_criticalExtensions_69 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_100 = -1;
+static gint ett_rrc_T_criticalExtensions_77 = -1;
static gint ett_rrc_T_r7_08 = -1;
static gint ett_rrc_T_v780NonCriticalExtensions_07 = -1;
static gint ett_rrc_T_v820NonCriticalExtensions_01 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_93 = -1;
-static gint ett_rrc_T_criticalExtensions_70 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_101 = -1;
+static gint ett_rrc_T_criticalExtensions_78 = -1;
static gint ett_rrc_T_r8_09 = -1;
static gint ett_rrc_T_v7d0NonCriticalExtensions_10 = -1;
static gint ett_rrc_T_v7f0NonCriticalExtensions_11 = -1;
static gint ett_rrc_T_v890NonCriticalExtensions_07 = -1;
static gint ett_rrc_T_v7g0NonCriticalExtensions_12 = -1;
static gint ett_rrc_T_v8a0NonCriticalExtensions_07 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_94 = -1;
-static gint ett_rrc_T_criticalExtensions_71 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_102 = -1;
+static gint ett_rrc_T_criticalExtensions_79 = -1;
static gint ett_rrc_T_r9_08 = -1;
static gint ett_rrc_T_v950NonCriticalExtensions_06 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_95 = -1;
-static gint ett_rrc_T_criticalExtensions_72 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_103 = -1;
+static gint ett_rrc_T_criticalExtensions_80 = -1;
+static gint ett_rrc_T_r10_08 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_104 = -1;
+static gint ett_rrc_T_criticalExtensions_81 = -1;
static gint ett_rrc_RadioBearerSetup_r3_IEs = -1;
static gint ett_rrc_T_dummy_07 = -1;
-static gint ett_rrc_T_fdd_31 = -1;
-static gint ett_rrc_T_modeSpecificPhysChInfo_09 = -1;
static gint ett_rrc_T_fdd_32 = -1;
+static gint ett_rrc_T_modeSpecificPhysChInfo_09 = -1;
+static gint ett_rrc_T_fdd_33 = -1;
static gint ett_rrc_RadioBearerSetup_v3a0ext = -1;
static gint ett_rrc_RadioBearerSetup_v4b0ext_IEs = -1;
static gint ett_rrc_RadioBearerSetup_v590ext_IEs = -1;
static gint ett_rrc_RadioBearerSetup_v5d0ext_IEs = -1;
static gint ett_rrc_RadioBearerSetup_r4_IEs = -1;
static gint ett_rrc_T_dummy_08 = -1;
-static gint ett_rrc_T_fdd_33 = -1;
-static gint ett_rrc_T_modeSpecificPhysChInfo_10 = -1;
static gint ett_rrc_T_fdd_34 = -1;
+static gint ett_rrc_T_modeSpecificPhysChInfo_10 = -1;
+static gint ett_rrc_T_fdd_35 = -1;
static gint ett_rrc_RadioBearerSetup_r5_IEs = -1;
static gint ett_rrc_T_dummy_09 = -1;
-static gint ett_rrc_T_fdd_35 = -1;
-static gint ett_rrc_T_modeSpecificPhysChInfo_11 = -1;
static gint ett_rrc_T_fdd_36 = -1;
+static gint ett_rrc_T_modeSpecificPhysChInfo_11 = -1;
+static gint ett_rrc_T_fdd_37 = -1;
static gint ett_rrc_RadioBearerSetup_v690ext_IEs = -1;
static gint ett_rrc_RadioBearerSetup_r6_IEs = -1;
-static gint ett_rrc_T_specificationMode_13 = -1;
-static gint ett_rrc_T_complete_13 = -1;
+static gint ett_rrc_T_specificationMode_15 = -1;
+static gint ett_rrc_T_complete_15 = -1;
static gint ett_rrc_T_dummy_10 = -1;
static gint ett_rrc_RadioBearerSetup_v6b0ext_IEs = -1;
static gint ett_rrc_RadioBearerSetup_r7_IEs = -1;
-static gint ett_rrc_T_specificationMode_14 = -1;
-static gint ett_rrc_T_complete_14 = -1;
+static gint ett_rrc_T_specificationMode_16 = -1;
+static gint ett_rrc_T_complete_16 = -1;
static gint ett_rrc_RadioBearerSetup_r7_add_ext_IEs = -1;
static gint ett_rrc_T_v7f0NonCriticalExtensions_12 = -1;
static gint ett_rrc_T_v7g0NonCriticalExtensions_13 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_96 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_105 = -1;
static gint ett_rrc_RadioBearerSetup_v780ext_IEs = -1;
static gint ett_rrc_RadioBearerSetup_v7d0ext_IEs = -1;
static gint ett_rrc_RadioBearerSetup_v7f0ext_IEs = -1;
@@ -9649,74 +10198,83 @@ static gint ett_rrc_RadioBearerSetup_v890ext_IEs = -1;
static gint ett_rrc_RadioBearerSetup_v8a0ext_IEs = -1;
static gint ett_rrc_RadioBearerSetup_r9_IEs = -1;
static gint ett_rrc_RadioBearerSetup_v950ext_IEs = -1;
+static gint ett_rrc_RadioBearerSetup_r10_IEs = -1;
static gint ett_rrc_RadioBearerSetupComplete = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_35 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_20 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_97 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_106 = -1;
static gint ett_rrc_RadioBearerSetupComplete_v770ext_IEs = -1;
static gint ett_rrc_RadioBearerSetupFailure = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_36 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_98 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_107 = -1;
static gint ett_rrc_RRCConnectionReject = -1;
static gint ett_rrc_T_r3_17 = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_37 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_25 = -1;
static gint ett_rrc_T_v6f0NonCriticalExtensions_01 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_10 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_99 = -1;
+static gint ett_rrc_T_va40NonCriticalExtensions_05 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_108 = -1;
static gint ett_rrc_T_later_than_r3_15 = -1;
-static gint ett_rrc_T_criticalExtensions_73 = -1;
+static gint ett_rrc_T_criticalExtensions_82 = -1;
static gint ett_rrc_RRCConnectionReject_r3_IEs = -1;
static gint ett_rrc_RRCConnectionReject_v690ext_IEs = -1;
static gint ett_rrc_RRCConnectionReject_v6f0ext_IEs = -1;
static gint ett_rrc_RRCConnectionReject_v860ext_IEs = -1;
+static gint ett_rrc_RRCConnectionReject_va40ext_IEs = -1;
static gint ett_rrc_RRCConnectionRelease = -1;
static gint ett_rrc_T_r3_18 = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_38 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_26 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_21 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_11 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_100 = -1;
+static gint ett_rrc_T_va40NonCriticalExtensions_06 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_109 = -1;
static gint ett_rrc_T_later_than_r3_16 = -1;
-static gint ett_rrc_T_criticalExtensions_74 = -1;
+static gint ett_rrc_T_criticalExtensions_83 = -1;
static gint ett_rrc_T_r4_09 = -1;
static gint ett_rrc_T_v4d0NonCriticalExtensions_09 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_27 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_22 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_12 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_101 = -1;
-static gint ett_rrc_T_criticalExtensions_75 = -1;
+static gint ett_rrc_T_va40NonCriticalExtensions_07 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_110 = -1;
+static gint ett_rrc_T_criticalExtensions_84 = -1;
static gint ett_rrc_RRCConnectionRelease_r3_IEs = -1;
static gint ett_rrc_RRCConnectionRelease_r4_IEs = -1;
static gint ett_rrc_RRCConnectionRelease_v690ext_IEs = -1;
static gint ett_rrc_RRCConnectionRelease_v770ext_IEs = -1;
static gint ett_rrc_RRCConnectionRelease_v860ext_IEs = -1;
+static gint ett_rrc_RRCConnectionRelease_va40ext_IEs = -1;
static gint ett_rrc_RRCConnectionRelease_CCCH = -1;
static gint ett_rrc_T_r3_19 = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_39 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_28 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_13 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_102 = -1;
+static gint ett_rrc_T_va40NonCriticalExtensions_08 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_111 = -1;
static gint ett_rrc_T_later_than_r3_17 = -1;
-static gint ett_rrc_T_criticalExtensions_76 = -1;
+static gint ett_rrc_T_criticalExtensions_85 = -1;
static gint ett_rrc_T_r4_10 = -1;
static gint ett_rrc_T_v4d0NonCriticalExtensions_10 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_29 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_14 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_103 = -1;
-static gint ett_rrc_T_criticalExtensions_77 = -1;
+static gint ett_rrc_T_va40NonCriticalExtensions_09 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_112 = -1;
+static gint ett_rrc_T_criticalExtensions_86 = -1;
static gint ett_rrc_SEQUENCE_SIZE_1_maxURNTI_Group_OF_GroupReleaseInformation = -1;
-static gint ett_rrc_T_criticalExtensions_78 = -1;
+static gint ett_rrc_T_criticalExtensions_87 = -1;
static gint ett_rrc_T_r5_08 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_30 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_15 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_104 = -1;
-static gint ett_rrc_T_criticalExtensions_79 = -1;
+static gint ett_rrc_T_va40NonCriticalExtensions_10 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_113 = -1;
+static gint ett_rrc_T_criticalExtensions_88 = -1;
static gint ett_rrc_RRCConnectionRelease_CCCH_r3_IEs = -1;
static gint ett_rrc_RRCConnectionRelease_CCCH_r4_IEs = -1;
static gint ett_rrc_RRCConnectionReleaseComplete = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_40 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_105 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_114 = -1;
static gint ett_rrc_RRCConnectionRequest = -1;
static gint ett_rrc_T_v3d0NonCriticalExtensions = -1;
static gint ett_rrc_T_v4b0NonCriticalExtensions_10 = -1;
@@ -9731,7 +10289,6 @@ static gint ett_rrc_T_v7e0NonCriticalExtensions_01 = -1;
static gint ett_rrc_T_v7g0NonCriticalExtensions_14 = -1;
static gint ett_rrc_T_v920NonCriticalExtensions_02 = -1;
static gint ett_rrc_T_v940NonCriticalExtensions = -1;
-static gint ett_rrc_T_nonCriticalExtensions_106 = -1;
static gint ett_rrc_RRCConnectionRequest_v3d0ext_IEs = -1;
static gint ett_rrc_RRCConnectionRequest_v4b0ext_IEs = -1;
static gint ett_rrc_RRCConnectionRequest_v590ext_IEs = -1;
@@ -9747,85 +10304,97 @@ static gint ett_rrc_RRCConnectionRequest_v7g0ext_IEs = -1;
static gint ett_rrc_RRCConnectionRequest_v860ext_IEs = -1;
static gint ett_rrc_RRCConnectionRequest_v920ext_IEs = -1;
static gint ett_rrc_RRCConnectionRequest_v940ext_IEs = -1;
+static gint ett_rrc_RRCConnectionRequest_NonCriticalExts_va40_IEs = -1;
+static gint ett_rrc_T_nonCriticalExtensions_115 = -1;
+static gint ett_rrc_RRCConnectionRequest_va40ext_IEs = -1;
static gint ett_rrc_RRCConnectionSetup = -1;
static gint ett_rrc_T_r3_20 = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_41 = -1;
static gint ett_rrc_T_v4b0NonCriticalExtensions_11 = -1;
static gint ett_rrc_T_v590NonCriticalExtensions_21 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_32 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_107 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_116 = -1;
static gint ett_rrc_T_later_than_r3_18 = -1;
-static gint ett_rrc_T_criticalExtensions_80 = -1;
+static gint ett_rrc_T_criticalExtensions_89 = -1;
static gint ett_rrc_T_r4_11 = -1;
static gint ett_rrc_T_v4d0NonCriticalExtensions_11 = -1;
static gint ett_rrc_T_v590NonCriticalExtensions_22 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_33 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_108 = -1;
-static gint ett_rrc_T_criticalExtensions_81 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_117 = -1;
+static gint ett_rrc_T_criticalExtensions_90 = -1;
static gint ett_rrc_T_r5_09 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_34 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_109 = -1;
-static gint ett_rrc_T_criticalExtensions_82 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_118 = -1;
+static gint ett_rrc_T_criticalExtensions_91 = -1;
static gint ett_rrc_T_r6_10 = -1;
static gint ett_rrc_T_v6b0NonCriticalExtensions_10 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_110 = -1;
-static gint ett_rrc_T_criticalExtensions_83 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_119 = -1;
+static gint ett_rrc_T_criticalExtensions_92 = -1;
static gint ett_rrc_T_r7_09 = -1;
static gint ett_rrc_T_v780NonCriticalExtensions_08 = -1;
static gint ett_rrc_T_v7d0NonCriticalExtensions_11 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_111 = -1;
-static gint ett_rrc_T_criticalExtensions_84 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_120 = -1;
+static gint ett_rrc_T_criticalExtensions_93 = -1;
static gint ett_rrc_T_r8_10 = -1;
static gint ett_rrc_T_v7d0NonCriticalExtensions_12 = -1;
static gint ett_rrc_T_v890NonCriticalExtensions_08 = -1;
static gint ett_rrc_T_v8a0NonCriticalExtensions_08 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_112 = -1;
-static gint ett_rrc_T_criticalExtensions_85 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_121 = -1;
+static gint ett_rrc_T_criticalExtensions_94 = -1;
static gint ett_rrc_T_r9_09 = -1;
static gint ett_rrc_T_v950NonCriticalExtensions_07 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_113 = -1;
-static gint ett_rrc_T_criticalExtensions_86 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_122 = -1;
+static gint ett_rrc_T_criticalExtensions_95 = -1;
+static gint ett_rrc_T_r10_09 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_123 = -1;
+static gint ett_rrc_T_criticalExtensions_96 = -1;
static gint ett_rrc_RRCConnectionSetup_r3_IEs = -1;
static gint ett_rrc_RRCConnectionSetup_v4b0ext_IEs = -1;
static gint ett_rrc_RRCConnectionSetup_v590ext_IEs = -1;
static gint ett_rrc_RRCConnectionSetup_r4_IEs = -1;
static gint ett_rrc_RRCConnectionSetup_r5_IEs = -1;
-static gint ett_rrc_T_specificationMode_15 = -1;
-static gint ett_rrc_T_complete_15 = -1;
-static gint ett_rrc_T_preconfiguration_12 = -1;
-static gint ett_rrc_T_preConfigMode_12 = -1;
-static gint ett_rrc_T_defaultConfig_12 = -1;
-static gint ett_rrc_RRCConnectionSetup_v690ext_IEs = -1;
-static gint ett_rrc_RRCConnectionSetup_r6_IEs = -1;
-static gint ett_rrc_T_specificationMode_16 = -1;
-static gint ett_rrc_T_complete_16 = -1;
-static gint ett_rrc_T_preconfiguration_13 = -1;
-static gint ett_rrc_T_preConfigMode_13 = -1;
-static gint ett_rrc_T_defaultConfig_13 = -1;
-static gint ett_rrc_RRCConnectionSetup_v6b0ext_IEs = -1;
-static gint ett_rrc_RRCConnectionSetup_r7_IEs = -1;
static gint ett_rrc_T_specificationMode_17 = -1;
static gint ett_rrc_T_complete_17 = -1;
static gint ett_rrc_T_preconfiguration_14 = -1;
static gint ett_rrc_T_preConfigMode_14 = -1;
static gint ett_rrc_T_defaultConfig_14 = -1;
-static gint ett_rrc_RRCConnectionSetup_v780ext_IEs = -1;
-static gint ett_rrc_RRCConnectionSetup_v7d0ext_IEs = -1;
-static gint ett_rrc_RRCConnectionSetup_r8_IEs = -1;
+static gint ett_rrc_RRCConnectionSetup_v690ext_IEs = -1;
+static gint ett_rrc_RRCConnectionSetup_r6_IEs = -1;
static gint ett_rrc_T_specificationMode_18 = -1;
static gint ett_rrc_T_complete_18 = -1;
static gint ett_rrc_T_preconfiguration_15 = -1;
static gint ett_rrc_T_preConfigMode_15 = -1;
static gint ett_rrc_T_defaultConfig_15 = -1;
-static gint ett_rrc_RRCConnectionSetup_v890ext_IEs = -1;
-static gint ett_rrc_RRCConnectionSetup_v8a0ext_IEs = -1;
-static gint ett_rrc_RRCConnectionSetup_r9_IEs = -1;
+static gint ett_rrc_RRCConnectionSetup_v6b0ext_IEs = -1;
+static gint ett_rrc_RRCConnectionSetup_r7_IEs = -1;
static gint ett_rrc_T_specificationMode_19 = -1;
static gint ett_rrc_T_complete_19 = -1;
static gint ett_rrc_T_preconfiguration_16 = -1;
static gint ett_rrc_T_preConfigMode_16 = -1;
static gint ett_rrc_T_defaultConfig_16 = -1;
+static gint ett_rrc_RRCConnectionSetup_v780ext_IEs = -1;
+static gint ett_rrc_RRCConnectionSetup_v7d0ext_IEs = -1;
+static gint ett_rrc_RRCConnectionSetup_r8_IEs = -1;
+static gint ett_rrc_T_specificationMode_20 = -1;
+static gint ett_rrc_T_complete_20 = -1;
+static gint ett_rrc_T_preconfiguration_17 = -1;
+static gint ett_rrc_T_preConfigMode_17 = -1;
+static gint ett_rrc_T_defaultConfig_17 = -1;
+static gint ett_rrc_RRCConnectionSetup_v890ext_IEs = -1;
+static gint ett_rrc_RRCConnectionSetup_v8a0ext_IEs = -1;
+static gint ett_rrc_RRCConnectionSetup_r9_IEs = -1;
+static gint ett_rrc_T_specificationMode_21 = -1;
+static gint ett_rrc_T_complete_21 = -1;
+static gint ett_rrc_T_preconfiguration_18 = -1;
+static gint ett_rrc_T_preConfigMode_18 = -1;
+static gint ett_rrc_T_defaultConfig_18 = -1;
static gint ett_rrc_RRCConnectionSetup_v950ext_IEs = -1;
+static gint ett_rrc_RRCConnectionSetup_r10_IEs = -1;
+static gint ett_rrc_T_specificationMode_22 = -1;
+static gint ett_rrc_T_complete_22 = -1;
+static gint ett_rrc_T_preconfiguration_19 = -1;
+static gint ett_rrc_T_preConfigMode_19 = -1;
+static gint ett_rrc_T_defaultConfig_19 = -1;
static gint ett_rrc_RRCConnectionSetupComplete = -1;
static gint ett_rrc_T_v370NonCriticalExtensions = -1;
static gint ett_rrc_T_v380NonCriticalExtensions = -1;
@@ -9837,7 +10406,8 @@ static gint ett_rrc_T_v590NonCriticalExtensions_23 = -1;
static gint ett_rrc_T_v5c0NonCriticalExtensions = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_35 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_24 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_114 = -1;
+static gint ett_rrc_T_va40NonCriticalExtensions_11 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_124 = -1;
static gint ett_rrc_RRCConnectionSetupComplete_v370ext = -1;
static gint ett_rrc_RRCConnectionSetupComplete_v380ext_IEs = -1;
static gint ett_rrc_RRCConnectionSetupComplete_v3a0ext_IEs = -1;
@@ -9846,7 +10416,8 @@ static gint ett_rrc_RRCConnectionSetupComplete_r3_add_ext_IEs = -1;
static gint ett_rrc_T_v680NonCriticalExtensions = -1;
static gint ett_rrc_T_v7e0NonCriticalExtensions_02 = -1;
static gint ett_rrc_T_v7f0NonCriticalExtensions_13 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_115 = -1;
+static gint ett_rrc_T_va40NonCriticalExtensions_12 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_125 = -1;
static gint ett_rrc_RRCConnectionSetupComplete_v4b0ext_IEs = -1;
static gint ett_rrc_RRCConnectionSetupComplete_v590ext_IEs = -1;
static gint ett_rrc_RRCConnectionSetupComplete_v5c0ext_IEs = -1;
@@ -9856,43 +10427,47 @@ static gint ett_rrc_RRCConnectionSetupComplete_v690ext_IEs = -1;
static gint ett_rrc_RRCConnectionSetupComplete_v770ext_IEs = -1;
static gint ett_rrc_RRCConnectionSetupComplete_v7e0ext_IEs = -1;
static gint ett_rrc_RRCConnectionSetupComplete_v7f0ext_IEs = -1;
+static gint ett_rrc_RRCConnectionSetupComplete_va40ext_IEs = -1;
+static gint ett_rrc_RRCConnectionSetupCompleteBand_va40ext_IEs = -1;
static gint ett_rrc_RRC_FailureInfo = -1;
static gint ett_rrc_T_r3_21 = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_43 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_116 = -1;
-static gint ett_rrc_T_criticalExtensions_87 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_126 = -1;
+static gint ett_rrc_T_criticalExtensions_97 = -1;
static gint ett_rrc_RRC_FailureInfo_r3_IEs = -1;
static gint ett_rrc_RRCStatus = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_44 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_117 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_127 = -1;
static gint ett_rrc_SecurityModeCommand = -1;
static gint ett_rrc_T_r3_22 = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_45 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_118 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_128 = -1;
static gint ett_rrc_T_later_than_r3_19 = -1;
-static gint ett_rrc_T_criticalExtensions_88 = -1;
+static gint ett_rrc_T_criticalExtensions_98 = -1;
static gint ett_rrc_T_r7_10 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_119 = -1;
-static gint ett_rrc_T_criticalExtensions_89 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_129 = -1;
+static gint ett_rrc_T_criticalExtensions_99 = -1;
static gint ett_rrc_SecurityModeCommand_r3_IEs = -1;
static gint ett_rrc_SecurityModeCommand_r7_IEs = -1;
static gint ett_rrc_SecurityModeComplete = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_46 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_120 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_130 = -1;
static gint ett_rrc_SecurityModeFailure = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_47 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_121 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_131 = -1;
static gint ett_rrc_SignallingConnectionRelease = -1;
static gint ett_rrc_T_r3_23 = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_48 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_122 = -1;
+static gint ett_rrc_T_va40NonCriticalExtensions_13 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_132 = -1;
static gint ett_rrc_T_later_than_r3_20 = -1;
-static gint ett_rrc_T_criticalExtensions_90 = -1;
+static gint ett_rrc_T_criticalExtensions_100 = -1;
static gint ett_rrc_SignallingConnectionRelease_r3_IEs = -1;
+static gint ett_rrc_SignallingConnectionRelease_va40ext_IEs = -1;
static gint ett_rrc_SignallingConnectionReleaseIndication = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_49 = -1;
static gint ett_rrc_T_v860nonCriticalExtentions = -1;
-static gint ett_rrc_T_nonCriticalExtensions_123 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_133 = -1;
static gint ett_rrc_SignallingConnectionReleaseIndication_v860ext = -1;
static gint ett_rrc_SystemInformation_BCH = -1;
static gint ett_rrc_T_payload = -1;
@@ -9917,7 +10492,7 @@ static gint ett_rrc_CompleteSIBshort = -1;
static gint ett_rrc_SystemInformationChangeIndication = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_50 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_17 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_124 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_134 = -1;
static gint ett_rrc_SystemInformationChangeIndication_v860ext_IEs = -1;
static gint ett_rrc_TransportChannelReconfiguration = -1;
static gint ett_rrc_T_r3_24 = -1;
@@ -9927,63 +10502,66 @@ static gint ett_rrc_T_v4b0NonCriticalExtensions_13 = -1;
static gint ett_rrc_T_v590NonCriticalExtensions_24 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_36 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_25 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_125 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_135 = -1;
static gint ett_rrc_T_later_than_r3_21 = -1;
-static gint ett_rrc_T_criticalExtensions_91 = -1;
+static gint ett_rrc_T_criticalExtensions_101 = -1;
static gint ett_rrc_T_r4_12 = -1;
static gint ett_rrc_T_v4d0NonCriticalExtensions_12 = -1;
static gint ett_rrc_T_v590NonCriticalExtensions_25 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_37 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_26 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_126 = -1;
-static gint ett_rrc_T_criticalExtensions_92 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_136 = -1;
+static gint ett_rrc_T_criticalExtensions_102 = -1;
static gint ett_rrc_T_r5_10 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_38 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_27 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_127 = -1;
-static gint ett_rrc_T_criticalExtensions_93 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_137 = -1;
+static gint ett_rrc_T_criticalExtensions_103 = -1;
static gint ett_rrc_T_r6_11 = -1;
static gint ett_rrc_T_v6b0NonCriticalExtensions_11 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_28 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_128 = -1;
-static gint ett_rrc_T_criticalExtensions_94 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_138 = -1;
+static gint ett_rrc_T_criticalExtensions_104 = -1;
static gint ett_rrc_T_r7_11 = -1;
static gint ett_rrc_T_v780NonCriticalExtensions_09 = -1;
static gint ett_rrc_T_v7d0NonCriticalExtensions_13 = -1;
static gint ett_rrc_T_v7f0NonCriticalExtensions_14 = -1;
static gint ett_rrc_T_v7g0NonCriticalExtensions_15 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_129 = -1;
-static gint ett_rrc_T_criticalExtensions_95 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_139 = -1;
+static gint ett_rrc_T_criticalExtensions_105 = -1;
static gint ett_rrc_T_r8_11 = -1;
static gint ett_rrc_T_v7d0NonCriticalExtensions_14 = -1;
static gint ett_rrc_T_v7f0NonCriticalExtensions_15 = -1;
static gint ett_rrc_T_v890NonCriticalExtensions_09 = -1;
static gint ett_rrc_T_v7g0NonCriticalExtensions_16 = -1;
static gint ett_rrc_T_v8a0NonCriticalExtensions_09 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_130 = -1;
-static gint ett_rrc_T_criticalExtensions_96 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_140 = -1;
+static gint ett_rrc_T_criticalExtensions_106 = -1;
static gint ett_rrc_T_r9_10 = -1;
static gint ett_rrc_T_v950NonCriticalExtensions_08 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_131 = -1;
-static gint ett_rrc_T_criticalExtensions_97 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_141 = -1;
+static gint ett_rrc_T_criticalExtensions_107 = -1;
+static gint ett_rrc_T_r10_10 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_142 = -1;
+static gint ett_rrc_T_criticalExtensions_108 = -1;
static gint ett_rrc_TransportChannelReconfiguration_r3_IEs = -1;
static gint ett_rrc_T_dummy_11 = -1;
-static gint ett_rrc_T_fdd_37 = -1;
-static gint ett_rrc_T_modeSpecificPhysChInfo_12 = -1;
static gint ett_rrc_T_fdd_38 = -1;
+static gint ett_rrc_T_modeSpecificPhysChInfo_12 = -1;
+static gint ett_rrc_T_fdd_39 = -1;
static gint ett_rrc_TransportChannelReconfiguration_v3a0ext = -1;
static gint ett_rrc_TransportChannelReconfiguration_v4b0ext_IEs = -1;
static gint ett_rrc_TransportChannelReconfiguration_v590ext_IEs = -1;
static gint ett_rrc_TransportChannelReconfiguration_r4_IEs = -1;
static gint ett_rrc_T_dummy_12 = -1;
-static gint ett_rrc_T_fdd_39 = -1;
-static gint ett_rrc_T_modeSpecificPhysChInfo_13 = -1;
static gint ett_rrc_T_fdd_40 = -1;
+static gint ett_rrc_T_modeSpecificPhysChInfo_13 = -1;
+static gint ett_rrc_T_fdd_41 = -1;
static gint ett_rrc_TransportChannelReconfiguration_r5_IEs = -1;
static gint ett_rrc_T_dummy_13 = -1;
-static gint ett_rrc_T_fdd_41 = -1;
-static gint ett_rrc_T_modeSpecificPhysChInfo_14 = -1;
static gint ett_rrc_T_fdd_42 = -1;
+static gint ett_rrc_T_modeSpecificPhysChInfo_14 = -1;
+static gint ett_rrc_T_fdd_43 = -1;
static gint ett_rrc_TransportChannelReconfiguration_v690ext_IEs = -1;
static gint ett_rrc_TransportChannelReconfiguration_r6_IEs = -1;
static gint ett_rrc_TransportChannelReconfiguration_v6b0ext_IEs = -1;
@@ -9998,24 +10576,25 @@ static gint ett_rrc_TransportChannelReconfiguration_v890ext_IEs = -1;
static gint ett_rrc_TransportChannelReconfiguration_v8a0ext_IEs = -1;
static gint ett_rrc_TransportChannelReconfiguration_r9_IEs = -1;
static gint ett_rrc_TransportChannelReconfiguration_v950ext_IEs = -1;
+static gint ett_rrc_TransportChannelReconfiguration_r10_IEs = -1;
static gint ett_rrc_TransportChannelReconfigurationComplete = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_52 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_29 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_132 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_143 = -1;
static gint ett_rrc_TransportChannelReconfigurationComplete_v770ext_IEs = -1;
static gint ett_rrc_TransportChannelReconfigurationFailure = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_53 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_133 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_144 = -1;
static gint ett_rrc_TransportFormatCombinationControl = -1;
-static gint ett_rrc_T_modeSpecificInfo_13 = -1;
-static gint ett_rrc_T_tdd_07 = -1;
+static gint ett_rrc_T_modeSpecificInfo_14 = -1;
+static gint ett_rrc_T_tdd_08 = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_54 = -1;
static gint ett_rrc_T_v820NonCriticalExtensions_02 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_134 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_145 = -1;
static gint ett_rrc_TransportFormatCombinationControl_v820ext_IEs = -1;
static gint ett_rrc_TransportFormatCombinationControlFailure = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_55 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_135 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_146 = -1;
static gint ett_rrc_UECapabilityEnquiry = -1;
static gint ett_rrc_T_r3_25 = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_56 = -1;
@@ -10023,9 +10602,9 @@ static gint ett_rrc_T_v4b0NonCriticalExtensions_14 = -1;
static gint ett_rrc_T_v590NonCriticalExtensions_26 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_30 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_18 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_136 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_147 = -1;
static gint ett_rrc_T_later_than_r3_22 = -1;
-static gint ett_rrc_T_criticalExtensions_98 = -1;
+static gint ett_rrc_T_criticalExtensions_109 = -1;
static gint ett_rrc_UECapabilityEnquiry_r3_IEs = -1;
static gint ett_rrc_UECapabilityEnquiry_v4b0ext_IEs = -1;
static gint ett_rrc_UECapabilityEnquiry_v590ext_IEs = -1;
@@ -10040,7 +10619,7 @@ static gint ett_rrc_T_v4b0NonCriticalExtensions_15 = -1;
static gint ett_rrc_T_v590NonCriticalExtensions_27 = -1;
static gint ett_rrc_T_v5c0NonCriticalExtensions_01 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_39 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_137 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_148 = -1;
static gint ett_rrc_UECapabilityInformation_v370ext = -1;
static gint ett_rrc_UECapabilityInformation_v380ext_IEs = -1;
static gint ett_rrc_UECapabilityInformation_v3a0ext_IEs = -1;
@@ -10048,7 +10627,8 @@ static gint ett_rrc_UECapabilityInformation_r3_add_ext_IEs = -1;
static gint ett_rrc_T_v680NonCriticalExtensions_01 = -1;
static gint ett_rrc_T_v7e0NonCriticalExtensions_03 = -1;
static gint ett_rrc_T_v7f0NonCriticalExtensions_16 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_138 = -1;
+static gint ett_rrc_T_va40NonCriticalExtensions_14 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_149 = -1;
static gint ett_rrc_UECapabilityInformation_v4b0ext = -1;
static gint ett_rrc_UECapabilityInformation_v590ext = -1;
static gint ett_rrc_UECapabilityInformation_v5c0ext = -1;
@@ -10057,20 +10637,21 @@ static gint ett_rrc_UECapabilityInformation_v680ext_IEs = -1;
static gint ett_rrc_UECapabilityInformation_v690ext_IEs = -1;
static gint ett_rrc_UECapabilityInformation_v7e0ext_IEs = -1;
static gint ett_rrc_UECapabilityInformation_v7f0ext_IEs = -1;
+static gint ett_rrc_UECapabilityInformation_va40ext_IEs = -1;
static gint ett_rrc_UECapabilityInformationConfirm = -1;
static gint ett_rrc_T_r3_26 = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_58 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_31 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_139 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_150 = -1;
static gint ett_rrc_T_later_than_r3_23 = -1;
-static gint ett_rrc_T_criticalExtensions_99 = -1;
+static gint ett_rrc_T_criticalExtensions_110 = -1;
static gint ett_rrc_UECapabilityInformationConfirm_r3_IEs = -1;
static gint ett_rrc_UECapabilityInformationConfirm_v770ext_IEs = -1;
static gint ett_rrc_UplinkDirectTransfer = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_59 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_40 = -1;
static gint ett_rrc_T_v7g0NonCriticalExtensions_17 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_140 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_151 = -1;
static gint ett_rrc_UplinkDirectTransfer_v690ext_IEs = -1;
static gint ett_rrc_UplinkDirectTransfer_v7g0ext_IEs = -1;
static gint ett_rrc_UplinkPhysicalChannelControl = -1;
@@ -10079,62 +10660,64 @@ static gint ett_rrc_T_laterNonCriticalExtensions_60 = -1;
static gint ett_rrc_T_v4b0NonCriticalExtensions_16 = -1;
static gint ett_rrc_T_noncriticalExtensions = -1;
static gint ett_rrc_T_later_than_r3_24 = -1;
-static gint ett_rrc_T_criticalExtensions_100 = -1;
+static gint ett_rrc_T_criticalExtensions_111 = -1;
static gint ett_rrc_T_r4_13 = -1;
static gint ett_rrc_T_v4d0NonCriticalExtensions_13 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_41 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_141 = -1;
-static gint ett_rrc_T_criticalExtensions_101 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_152 = -1;
+static gint ett_rrc_T_criticalExtensions_112 = -1;
static gint ett_rrc_T_r5_11 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_42 = -1;
static gint ett_rrc_T_v6a0NonCriticalExtensions_01 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_142 = -1;
-static gint ett_rrc_T_criticalExtensions_102 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_153 = -1;
+static gint ett_rrc_T_criticalExtensions_113 = -1;
static gint ett_rrc_T_r7_12 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_143 = -1;
-static gint ett_rrc_T_criticalExtensions_103 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_154 = -1;
+static gint ett_rrc_T_criticalExtensions_114 = -1;
static gint ett_rrc_UplinkPhysicalChannelControl_r3_IEs = -1;
static gint ett_rrc_UplinkPhysicalChannelControl_v4b0ext_IEs = -1;
static gint ett_rrc_UplinkPhysicalChannelControl_r4_IEs = -1;
static gint ett_rrc_T_tddOption = -1;
-static gint ett_rrc_T_tdd384_06 = -1;
-static gint ett_rrc_T_tdd128_06 = -1;
-static gint ett_rrc_UplinkPhysicalChannelControl_r5_IEs = -1;
-static gint ett_rrc_T_tddOption_01 = -1;
static gint ett_rrc_T_tdd384_07 = -1;
static gint ett_rrc_T_tdd128_07 = -1;
+static gint ett_rrc_UplinkPhysicalChannelControl_r5_IEs = -1;
+static gint ett_rrc_T_tddOption_01 = -1;
+static gint ett_rrc_T_tdd384_08 = -1;
+static gint ett_rrc_T_tdd128_08 = -1;
static gint ett_rrc_UplinkPhysicalChannelControl_v690ext_IEs = -1;
static gint ett_rrc_UplinkPhysicalChannelControl_v6a0ext_IEs = -1;
static gint ett_rrc_UplinkPhysicalChannelControl_r7_IEs = -1;
static gint ett_rrc_T_tddOption_02 = -1;
-static gint ett_rrc_T_tdd384_08 = -1;
-static gint ett_rrc_T_tdd768_03 = -1;
-static gint ett_rrc_T_tdd128_08 = -1;
+static gint ett_rrc_T_tdd384_09 = -1;
+static gint ett_rrc_T_tdd768_04 = -1;
+static gint ett_rrc_T_tdd128_09 = -1;
static gint ett_rrc_URAUpdate = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_61 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_32 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_19 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_144 = -1;
+static gint ett_rrc_T_va40NonCriticalExtensions_15 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_155 = -1;
static gint ett_rrc_URAUpdate_r3_add_ext_IEs = -1;
-static gint ett_rrc_T_nonCriticalExtensions_145 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_156 = -1;
static gint ett_rrc_UraUpdate_v770ext_IEs = -1;
static gint ett_rrc_URAUpdate_v7e0ext_IEs = -1;
static gint ett_rrc_URAUpdate_v860ext_IEs = -1;
+static gint ett_rrc_URAUpdate_va40ext_IEs = -1;
static gint ett_rrc_URAUpdateConfirm = -1;
static gint ett_rrc_T_r3_28 = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_62 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_43 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_146 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_157 = -1;
static gint ett_rrc_T_later_than_r3_25 = -1;
-static gint ett_rrc_T_criticalExtensions_104 = -1;
+static gint ett_rrc_T_criticalExtensions_115 = -1;
static gint ett_rrc_T_r5_12 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_44 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_147 = -1;
-static gint ett_rrc_T_criticalExtensions_105 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_158 = -1;
+static gint ett_rrc_T_criticalExtensions_116 = -1;
static gint ett_rrc_T_r7_13 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_20 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_148 = -1;
-static gint ett_rrc_T_criticalExtensions_106 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_159 = -1;
+static gint ett_rrc_T_criticalExtensions_117 = -1;
static gint ett_rrc_URAUpdateConfirm_r3_IEs = -1;
static gint ett_rrc_URAUpdateConfirm_r5_IEs = -1;
static gint ett_rrc_URAUpdateConfirm_v690ext_IEs = -1;
@@ -10145,9 +10728,9 @@ static gint ett_rrc_T_r3_29 = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_63 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_45 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_21 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_149 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_160 = -1;
static gint ett_rrc_T_later_than_r3_26 = -1;
-static gint ett_rrc_T_criticalExtensions_107 = -1;
+static gint ett_rrc_T_criticalExtensions_118 = -1;
static gint ett_rrc_URAUpdateConfirm_CCCH_r3_IEs = -1;
static gint ett_rrc_UTRANMobilityInformation = -1;
static gint ett_rrc_T_r3_30 = -1;
@@ -10155,20 +10738,20 @@ static gint ett_rrc_T_v3a0NonCriticalExtensions_11 = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_64 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_46 = -1;
static gint ett_rrc_T_v860NonCriticalExtentions = -1;
-static gint ett_rrc_T_nonCriticalExtensions_150 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_161 = -1;
static gint ett_rrc_T_later_than_r3_27 = -1;
-static gint ett_rrc_T_criticalExtensions_108 = -1;
+static gint ett_rrc_T_criticalExtensions_119 = -1;
static gint ett_rrc_T_r5_13 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_47 = -1;
static gint ett_rrc_T_v860NonCriticalExtentions_01 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_151 = -1;
-static gint ett_rrc_T_criticalExtensions_109 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_162 = -1;
+static gint ett_rrc_T_criticalExtensions_120 = -1;
static gint ett_rrc_T_r7_14 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_22 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_152 = -1;
-static gint ett_rrc_T_criticalExtensions_110 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_163 = -1;
+static gint ett_rrc_T_criticalExtensions_121 = -1;
static gint ett_rrc_UTRANMobilityInformation_r3_IEs = -1;
-static gint ett_rrc_T_nonCriticalExtensions_153 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_164 = -1;
static gint ett_rrc_UTRANMobilityInformation_v3a0ext_IEs = -1;
static gint ett_rrc_UTRANMobilityInformation_r5_IEs = -1;
static gint ett_rrc_UtranMobilityInformation_v690ext_IEs = -1;
@@ -10178,31 +10761,33 @@ static gint ett_rrc_UTRANMobilityInformation_v860ext2_IEs = -1;
static gint ett_rrc_UTRANMobilityInformationConfirm = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_65 = -1;
static gint ett_rrc_T_v770NonCriticalExtension_01 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_154 = -1;
+static gint ett_rrc_T_va40NonCriticalExtensions_16 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_165 = -1;
static gint ett_rrc_UTRANMobilityInformationConfirm_v770ext_IEs = -1;
+static gint ett_rrc_UTRANMobilityInformationConfirm_va40ext_IEs = -1;
static gint ett_rrc_UTRANMobilityInformationFailure = -1;
static gint ett_rrc_T_laterNonCriticalExtensions_66 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_155 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_166 = -1;
static gint ett_rrc_MBMSAccessInformation = -1;
-static gint ett_rrc_T_nonCriticalExtensions_156 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_167 = -1;
static gint ett_rrc_MBMSCommonPTMRBInformation = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_33 = -1;
static gint ett_rrc_T_v780NonCriticalExtensions_10 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_23 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_157 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_168 = -1;
static gint ett_rrc_MBMSCommonPTMRBInformation_v770ext_IEs = -1;
static gint ett_rrc_MBMSCommonPTMRBInformation_v780ext_IEs = -1;
static gint ett_rrc_MBMSCommonPTMRBInformation_v860ext_IEs = -1;
static gint ett_rrc_MBMSCurrentCellPTMRBInformation = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_34 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_158 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_169 = -1;
static gint ett_rrc_MBMSCurrentCellPTMRBInfo_v770ext_IEs = -1;
static gint ett_rrc_MBMSGeneralInformation = -1;
static gint ett_rrc_T_v6b0NonCriticalExtensions_12 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_35 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_24 = -1;
static gint ett_rrc_T_v890NoncriticalExtensions = -1;
-static gint ett_rrc_T_nonCriticalExtensions_159 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_170 = -1;
static gint ett_rrc_MBMSGeneralInformation_v6b0ext_IEs = -1;
static gint ett_rrc_MBMSGeneralInformation_v770ext_IEs = -1;
static gint ett_rrc_MBMSGeneralInformation_v860ext_IEs = -1;
@@ -10210,27 +10795,41 @@ static gint ett_rrc_MBMSGeneralInformation_v890ext_IEs = -1;
static gint ett_rrc_MBMSModificationRequest = -1;
static gint ett_rrc_T_v6b0NonCriticalExtensions_13 = -1;
static gint ett_rrc_T_v6f0NonCriticalExtensions_02 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_160 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_171 = -1;
static gint ett_rrc_MBMSModificationRequest_v6b0ext_IEs = -1;
static gint ett_rrc_MBMSModificationRequest_v6f0ext_IEs = -1;
static gint ett_rrc_MBMSModifiedServicesInformation = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_36 = -1;
static gint ett_rrc_T_v7c0NonCriticalExtensions = -1;
-static gint ett_rrc_T_nonCriticalExtensions_161 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_172 = -1;
static gint ett_rrc_MBMSModifiedServicesInformation_v770ext_IEs = -1;
static gint ett_rrc_MBMSModifiedServicesInformation_v7c0ext_IEs = -1;
static gint ett_rrc_MBMSNeighbouringCellPTMRBInformation = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_37 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_162 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_173 = -1;
static gint ett_rrc_MBMSNeighbouringCellPTMRBInformation_v770ext_IEs = -1;
static gint ett_rrc_MBMSSchedulingInformation = -1;
-static gint ett_rrc_T_nonCriticalExtensions_163 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_174 = -1;
static gint ett_rrc_MBMSUnmodifiedServicesInformation = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_38 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_164 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_175 = -1;
static gint ett_rrc_MBMSUnmodifiedServicesInformation_v770ext_IEs = -1;
static gint ett_rrc_System_Information_Container = -1;
-static gint ett_rrc_T_nonCriticalExtensions_165 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_176 = -1;
+static gint ett_rrc_LoggingMeasurementConfiguration = -1;
+static gint ett_rrc_T_criticalExtensions_122 = -1;
+static gint ett_rrc_T_r10_11 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_177 = -1;
+static gint ett_rrc_T_criticalExtensions_123 = -1;
+static gint ett_rrc_LoggingMeasurementConfiguration_r10_IEs = -1;
+static gint ett_rrc_UEInformationResponse = -1;
+static gint ett_rrc_T_nonCriticalExtensions_178 = -1;
+static gint ett_rrc_UEInformationRequest = -1;
+static gint ett_rrc_T_criticalExtensions_124 = -1;
+static gint ett_rrc_T_r10_12 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_179 = -1;
+static gint ett_rrc_T_criticalExtensions_125 = -1;
+static gint ett_rrc_UEInformationRequest_r10_IEs = -1;
static gint ett_rrc_CN_DomainInformation = -1;
static gint ett_rrc_CN_DomainInformationFull = -1;
static gint ett_rrc_CN_DomainInformationList = -1;
@@ -10241,6 +10840,7 @@ static gint ett_rrc_CN_DomainSysInfoList = -1;
static gint ett_rrc_CN_InformationInfo = -1;
static gint ett_rrc_CN_InformationInfo_r6 = -1;
static gint ett_rrc_CN_InformationInfoFull = -1;
+static gint ett_rrc_Ec_N0forANR = -1;
static gint ett_rrc_Gsm_map_IDNNS = -1;
static gint ett_rrc_T_routingbasis = -1;
static gint ett_rrc_T_localPTMSI = -1;
@@ -10285,9 +10885,9 @@ static gint ett_rrc_CellIdentity_PerRL_List = -1;
static gint ett_rrc_CellSelectReselectInfoSIB_3_4 = -1;
static gint ett_rrc_T_cellSelectQualityMeasure = -1;
static gint ett_rrc_T_cpich_Ec_N0 = -1;
-static gint ett_rrc_T_modeSpecificInfo_14 = -1;
-static gint ett_rrc_T_fdd_43 = -1;
-static gint ett_rrc_T_tdd_08 = -1;
+static gint ett_rrc_T_modeSpecificInfo_15 = -1;
+static gint ett_rrc_T_fdd_44 = -1;
+static gint ett_rrc_T_tdd_09 = -1;
static gint ett_rrc_CSG_DedicatedFrequencyInfoList = -1;
static gint ett_rrc_CSG_PSCSplitInfo = -1;
static gint ett_rrc_DomainSpecificAccessRestrictionForSharedNetwork_v670ext = -1;
@@ -10336,13 +10936,16 @@ static gint ett_rrc_CompressedModeMeasCapability = -1;
static gint ett_rrc_CompressedModeMeasCapability_LCR_r4 = -1;
static gint ett_rrc_CompressedModeMeasCapability_v860ext = -1;
static gint ett_rrc_CompressedModeMeasCapability_v920ext = -1;
+static gint ett_rrc_CompressedModeMeasCapability_va40ext = -1;
static gint ett_rrc_CompressedModeMeasCapabEUTRA = -1;
static gint ett_rrc_CompressedModeMeasCapabEUTRAList = -1;
static gint ett_rrc_CompressedModeMeasCapabFDDList = -1;
static gint ett_rrc_CompressedModeMeasCapabFDDList2 = -1;
+static gint ett_rrc_CompressedModeMeasCapabFDDList3 = -1;
static gint ett_rrc_CompressedModeMeasCapabFDDList_ext = -1;
static gint ett_rrc_CompressedModeMeasCapabFDD = -1;
static gint ett_rrc_CompressedModeMeasCapabFDD2 = -1;
+static gint ett_rrc_CompressedModeMeasCapabFDD3 = -1;
static gint ett_rrc_CompressedModeMeasCapabFDD_ext = -1;
static gint ett_rrc_CompressedModeMeasCapabTDDList = -1;
static gint ett_rrc_CompressedModeMeasCapabTDD = -1;
@@ -10359,10 +10962,12 @@ static gint ett_rrc_DL_PhysChCapabilityFDD_v380ext = -1;
static gint ett_rrc_DL_PhysChCapabilityFDD_v770ext = -1;
static gint ett_rrc_DL_PhysChCapabilityFDD_v860ext = -1;
static gint ett_rrc_DL_PhysChCapabilityFDD_v920ext = -1;
+static gint ett_rrc_DL_PhysChCapabilityFDD_va40ext = -1;
static gint ett_rrc_DL_PhysChCapabilityTDD = -1;
static gint ett_rrc_DL_PhysChCapabilityTDD_LCR_r4 = -1;
static gint ett_rrc_DL_PhysChCapabilityTDD_128_v770ext = -1;
static gint ett_rrc_DL_PhysChCapabilityTDD_128_v860ext = -1;
+static gint ett_rrc_DL_PhysChCapabilityInfoTDD_128_va40ext = -1;
static gint ett_rrc_DL_PhysChCapabilityTDD_768 = -1;
static gint ett_rrc_T_tdd768_hspdsch = -1;
static gint ett_rrc_DL_PhysChCapabilityInfoTDD_768 = -1;
@@ -10371,6 +10976,14 @@ static gint ett_rrc_DRAC_SysInfo = -1;
static gint ett_rrc_DRAC_SysInfoList = -1;
static gint ett_rrc_FailureCauseWithProtErr = -1;
static gint ett_rrc_FailureCauseWithProtErrTrId = -1;
+static gint ett_rrc_FrequencyBandsIndicatorSupport = -1;
+static gint ett_rrc_T_modeSpecificInfo_16 = -1;
+static gint ett_rrc_T_fdd_45 = -1;
+static gint ett_rrc_T_tdd_10 = -1;
+static gint ett_rrc_FrequencyBandsIndicatorTDD128 = -1;
+static gint ett_rrc_FrequencyBandsIndicatorSupportTDD128 = -1;
+static gint ett_rrc_FrequencyBandsRedirectionFDD = -1;
+static gint ett_rrc_FrequencyBandsIndicatorFDD = -1;
static gint ett_rrc_GroupIdentityWithReleaseInformation = -1;
static gint ett_rrc_GroupReleaseInformation = -1;
static gint ett_rrc_GSM_Measurements = -1;
@@ -10390,10 +11003,14 @@ static gint ett_rrc_MeasurementCapability = -1;
static gint ett_rrc_MeasurementCapabilityExt = -1;
static gint ett_rrc_MeasurementCapabilityExt2 = -1;
static gint ett_rrc_MeasurementCapabilityExt3 = -1;
+static gint ett_rrc_MeasurementCapabilityExt4 = -1;
static gint ett_rrc_MeasurementCapability_r4_ext = -1;
static gint ett_rrc_MeasurementCapability_v860ext = -1;
static gint ett_rrc_MeasurementCapability_v920ext = -1;
+static gint ett_rrc_MeasurementCapability_va40ext = -1;
static gint ett_rrc_MeasurementCapabilityTDD = -1;
+static gint ett_rrc_NonContiguousMultiCellCombinationList = -1;
+static gint ett_rrc_NonContiguousMultiCell = -1;
static gint ett_rrc_MultiRAT_Capability = -1;
static gint ett_rrc_MultiModeRAT_Capability_v590ext = -1;
static gint ett_rrc_MultiModeRAT_Capability_v680ext = -1;
@@ -10436,9 +11053,12 @@ static gint ett_rrc_T_fddPhysChCapability_02 = -1;
static gint ett_rrc_T_tddPhysChCapability_128_01 = -1;
static gint ett_rrc_PhysicalChannelCapability_v920ext = -1;
static gint ett_rrc_T_fddPhysChCapability_03 = -1;
+static gint ett_rrc_PhysicalChannelCapability_va40ext = -1;
+static gint ett_rrc_T_fddPhysChCapability_04 = -1;
+static gint ett_rrc_T_tddPhysChCapability_128_02 = -1;
static gint ett_rrc_PhysicalChannelCapabilityInfo_v770ext = -1;
static gint ett_rrc_T_tddPhysChCapability_768_01 = -1;
-static gint ett_rrc_T_tddPhysChCapability_128_02 = -1;
+static gint ett_rrc_T_tddPhysChCapability_128_03 = -1;
static gint ett_rrc_PhysicalChannelCapability_LCR_r4 = -1;
static gint ett_rrc_T_tdd128_PhysChCapability = -1;
static gint ett_rrc_PhysicalChannelCapability_hspdsch_r5 = -1;
@@ -10470,6 +11090,7 @@ static gint ett_rrc_RLC_Capability = -1;
static gint ett_rrc_RLC_Capability_r5_ext = -1;
static gint ett_rrc_RLC_Capability_v770ext = -1;
static gint ett_rrc_RLC_Capability_v920ext = -1;
+static gint ett_rrc_RLC_Capability_va40ext = -1;
static gint ett_rrc_RRC_ConnectionReleaseInformation = -1;
static gint ett_rrc_T_release = -1;
static gint ett_rrc_RRC_MessageSequenceNumberList = -1;
@@ -10498,6 +11119,7 @@ static gint ett_rrc_TurboSupport = -1;
static gint ett_rrc_U_RNTI = -1;
static gint ett_rrc_U_RNTI_Group = -1;
static gint ett_rrc_U_RNTI_Short = -1;
+static gint ett_rrc_UE_BasedNetworkPerformanceMeasurementsParameters = -1;
static gint ett_rrc_UE_CapabilityContainer_IEs = -1;
static gint ett_rrc_T_v6b0NonCriticalExtensions_14 = -1;
static gint ett_rrc_T_v6e0NonCriticalExtensions_02 = -1;
@@ -10508,7 +11130,9 @@ static gint ett_rrc_T_v880NonCriticalExtensions_01 = -1;
static gint ett_rrc_T_v890NonCriticalExtensions_10 = -1;
static gint ett_rrc_T_v920NonCriticalExtensions_03 = -1;
static gint ett_rrc_T_v970NonCriticalExtensions_03 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_166 = -1;
+static gint ett_rrc_T_va40NonCriticalExtensions_17 = -1;
+static gint ett_rrc_T_va60NonCriticalExtensions = -1;
+static gint ett_rrc_T_nonCriticalExtensions_180 = -1;
static gint ett_rrc_UE_RadioAccessCapability_v6b0ext_IEs = -1;
static gint ett_rrc_UE_RadioAccessCapability_v6e0ext_IEs = -1;
static gint ett_rrc_UE_RadioAccessCapability_v770ext_IEs = -1;
@@ -10518,6 +11142,8 @@ static gint ett_rrc_UE_RadioAccessCapability_v880ext_IEs = -1;
static gint ett_rrc_UE_RadioAccessCapability_v890ext_IEs = -1;
static gint ett_rrc_UE_RadioAccessCapability_v920ext_IEs = -1;
static gint ett_rrc_UE_RadioAccessCapability_v970ext_IEs = -1;
+static gint ett_rrc_UE_RadioAccessCapability_va40ext_IEs = -1;
+static gint ett_rrc_UE_RadioAccessCapability_va60ext_IEs = -1;
static gint ett_rrc_UE_ConnTimersAndConstants = -1;
static gint ett_rrc_UE_ConnTimersAndConstants_v3a0ext = -1;
static gint ett_rrc_UE_ConnTimersAndConstants_r5 = -1;
@@ -10543,11 +11169,20 @@ static gint ett_rrc_UE_RadioAccessCapabilityInfo_TDD128_v8b0ext = -1;
static gint ett_rrc_UE_RadioAccessCapability_v860ext = -1;
static gint ett_rrc_UE_RadioAccessCapability_v880ext = -1;
static gint ett_rrc_UE_RadioAccessCapability_v920ext = -1;
+static gint ett_rrc_UE_RadioAccessCapability_va40ext = -1;
+static gint ett_rrc_UE_RadioAccessCapabBand_va40ext = -1;
static gint ett_rrc_UE_RadioAccessCapabBandFDDList2 = -1;
static gint ett_rrc_UE_RadioAccessCapabBandFDDList3 = -1;
+static gint ett_rrc_UE_RadioAccessCapabBandFDDList4 = -1;
+static gint ett_rrc_UE_RadioAccessCapabBandFDDList4_va60ext = -1;
+static gint ett_rrc_UE_RadioAccessCapabBandFDDList5 = -1;
static gint ett_rrc_UE_RadioAccessCapabBandFDD2 = -1;
static gint ett_rrc_T_fddRF_Capability_01 = -1;
static gint ett_rrc_UE_RadioAccessCapabBandFDD3 = -1;
+static gint ett_rrc_UE_RadioAccessCapabBandFDD4 = -1;
+static gint ett_rrc_UE_RadioAccessCapabBandFDD4_va60ext = -1;
+static gint ett_rrc_UE_RadioAccessCapabBandFDD5 = -1;
+static gint ett_rrc_T_fddRF_Capability_02 = -1;
static gint ett_rrc_UE_PositioningCapabilityExt_v380 = -1;
static gint ett_rrc_UE_PositioningCapabilityExt_v3a0 = -1;
static gint ett_rrc_UE_PositioningCapabilityExt_v3g0 = -1;
@@ -10556,9 +11191,11 @@ static gint ett_rrc_UE_PositioningCapability_v860ext = -1;
static gint ett_rrc_UE_RadioAccessCapabBandCombList = -1;
static gint ett_rrc_UE_RadioAccessCapabBandFDDList = -1;
static gint ett_rrc_UE_RadioAccessCapabBandFDDList_ext = -1;
+static gint ett_rrc_UE_RadioAccessCapabBandFDDList_ext2 = -1;
static gint ett_rrc_UE_RadioAccessCapabBandFDD = -1;
-static gint ett_rrc_T_fddRF_Capability_02 = -1;
+static gint ett_rrc_T_fddRF_Capability_03 = -1;
static gint ett_rrc_UE_RadioAccessCapabBandFDD_ext = -1;
+static gint ett_rrc_UE_RadioAccessCapabBandFDD_ext2 = -1;
static gint ett_rrc_UE_RadioAccessCapability_v4b0ext = -1;
static gint ett_rrc_T_tdd_CapabilityExt = -1;
static gint ett_rrc_UE_RadioAccessCapabilityComp = -1;
@@ -10571,15 +11208,19 @@ static gint ett_rrc_UE_RadioAccessCapabilityComp2_v770ext = -1;
static gint ett_rrc_UE_RadioAccessCapabilityComp2_v7f0ext = -1;
static gint ett_rrc_UE_RadioAccessCapabilityComp2_v860ext = -1;
static gint ett_rrc_UE_RadioAccessCapabilityComp2_v920ext = -1;
+static gint ett_rrc_UE_RadioAccessCapabilityComp2_va40ext = -1;
static gint ett_rrc_UE_RadioAccessCapabilityComp_TDD128 = -1;
static gint ett_rrc_RF_CapabilityComp = -1;
-static gint ett_rrc_T_fdd_44 = -1;
+static gint ett_rrc_T_fdd_46 = -1;
static gint ett_rrc_T_tdd384_RF_Capability = -1;
static gint ett_rrc_T_tdd128_RF_Capability = -1;
static gint ett_rrc_RF_CapabilityComp_v770ext = -1;
static gint ett_rrc_T_tdd768_RF_Capability = -1;
static gint ett_rrc_RF_CapabBandListFDDComp = -1;
static gint ett_rrc_RF_CapabBandListFDDComp_ext = -1;
+static gint ett_rrc_RF_CapabBandListFDDComp_ext2 = -1;
+static gint ett_rrc_UE_RadioAccessCapabBandCombList_va40ext = -1;
+static gint ett_rrc_SupportedCarrierCombination = -1;
static gint ett_rrc_UE_RadioAccessCapability_v590ext = -1;
static gint ett_rrc_UE_RadioAccessCapability_v5c0ext = -1;
static gint ett_rrc_UE_RadioAccessCapability_v680ext = -1;
@@ -10595,6 +11236,7 @@ static gint ett_rrc_UL_PhysChCapabilityTDD_128_v770ext = -1;
static gint ett_rrc_T_tdd128_edch = -1;
static gint ett_rrc_T_supported_04 = -1;
static gint ett_rrc_UL_PhysChCapabilityInfoTDD_128_v770ext = -1;
+static gint ett_rrc_UL_PhysChCapabilityInfoTDD_128_va40ext = -1;
static gint ett_rrc_UL_PhysChCapabilityTDD_768 = -1;
static gint ett_rrc_T_tdd384_edch_01 = -1;
static gint ett_rrc_T_supported_05 = -1;
@@ -10604,8 +11246,8 @@ static gint ett_rrc_PhysicalChannelCapability_edch_r6 = -1;
static gint ett_rrc_T_fdd_edch = -1;
static gint ett_rrc_T_supported_06 = -1;
static gint ett_rrc_UL_TransChCapability = -1;
-static gint ett_rrc_T_modeSpecificInfo_15 = -1;
-static gint ett_rrc_T_tdd_09 = -1;
+static gint ett_rrc_T_modeSpecificInfo_17 = -1;
+static gint ett_rrc_T_tdd_11 = -1;
static gint ett_rrc_UE_Positioning_Capability = -1;
static gint ett_rrc_UE_SecurityInformation = -1;
static gint ett_rrc_UE_SecurityInformation2 = -1;
@@ -10837,8 +11479,8 @@ static gint ett_rrc_Common_E_DCH_MAC_d_Flow = -1;
static gint ett_rrc_Common_E_DCH_MAC_d_FlowList = -1;
static gint ett_rrc_CommonDynamicTF_Info = -1;
static gint ett_rrc_T_rlc_Size = -1;
-static gint ett_rrc_T_fdd_45 = -1;
-static gint ett_rrc_T_tdd_10 = -1;
+static gint ett_rrc_T_fdd_47 = -1;
+static gint ett_rrc_T_tdd_12 = -1;
static gint ett_rrc_T_commonTDD_Choice = -1;
static gint ett_rrc_SEQUENCE_SIZE_1_maxTF_OF_NumberOfTransportBlocks = -1;
static gint ett_rrc_CommonDynamicTF_Info_DynamicTTI = -1;
@@ -10878,16 +11520,16 @@ static gint ett_rrc_T_tfs_SignallingMode_04 = -1;
static gint ett_rrc_DL_AddReconfTransChInformation2 = -1;
static gint ett_rrc_T_tfs_SignallingMode_05 = -1;
static gint ett_rrc_DL_CommonTransChInfo = -1;
-static gint ett_rrc_T_modeSpecificInfo_16 = -1;
-static gint ett_rrc_T_fdd_46 = -1;
+static gint ett_rrc_T_modeSpecificInfo_18 = -1;
+static gint ett_rrc_T_fdd_48 = -1;
static gint ett_rrc_T_dl_Parameters = -1;
-static gint ett_rrc_T_tdd_11 = -1;
+static gint ett_rrc_T_tdd_13 = -1;
static gint ett_rrc_DL_CommonTransChInfo_r4 = -1;
-static gint ett_rrc_T_modeSpecificInfo_17 = -1;
-static gint ett_rrc_T_fdd_47 = -1;
+static gint ett_rrc_T_modeSpecificInfo_19 = -1;
+static gint ett_rrc_T_fdd_49 = -1;
static gint ett_rrc_T_dl_Parameters_01 = -1;
static gint ett_rrc_T_dl_DCH_TFCS = -1;
-static gint ett_rrc_T_tdd_12 = -1;
+static gint ett_rrc_T_tdd_14 = -1;
static gint ett_rrc_DL_DeletedTransChInfoList = -1;
static gint ett_rrc_DL_DeletedTransChInfoList_r5 = -1;
static gint ett_rrc_DL_DeletedTransChInfoList_r7 = -1;
@@ -10906,8 +11548,8 @@ static gint ett_rrc_T_non_ScheduledTransGrantInfo = -1;
static gint ett_rrc_E_DCH_AddReconf_MAC_d_Flow_r7 = -1;
static gint ett_rrc_T_transmissionGrantType_01 = -1;
static gint ett_rrc_T_non_ScheduledTransGrantInfo_01 = -1;
-static gint ett_rrc_T_modeSpecificInfo_18 = -1;
-static gint ett_rrc_T_fdd_48 = -1;
+static gint ett_rrc_T_modeSpecificInfo_20 = -1;
+static gint ett_rrc_T_fdd_50 = -1;
static gint ett_rrc_E_DCH_AddReconf_MAC_d_FlowList = -1;
static gint ett_rrc_E_DCH_AddReconf_MAC_d_FlowList_r7 = -1;
static gint ett_rrc_ExplicitTFCS_Configuration = -1;
@@ -10955,8 +11597,8 @@ static gint ett_rrc_T_sizeType2_01 = -1;
static gint ett_rrc_T_sizeType3_01 = -1;
static gint ett_rrc_OctetModeRLC_SizeInfoType2 = -1;
static gint ett_rrc_PowerOffsetInfoShort = -1;
-static gint ett_rrc_T_modeSpecificInfo_19 = -1;
-static gint ett_rrc_T_fdd_49 = -1;
+static gint ett_rrc_T_modeSpecificInfo_21 = -1;
+static gint ett_rrc_T_fdd_51 = -1;
static gint ett_rrc_PowerOffsetInformation = -1;
static gint ett_rrc_PreDefTransChConfiguration = -1;
static gint ett_rrc_QualityTarget = -1;
@@ -10964,14 +11606,14 @@ static gint ett_rrc_RestrictedTrChInfo = -1;
static gint ett_rrc_RestrictedTrChInfoList = -1;
static gint ett_rrc_SemistaticTF_Information = -1;
static gint ett_rrc_SignalledGainFactors = -1;
-static gint ett_rrc_T_modeSpecificInfo_20 = -1;
-static gint ett_rrc_T_fdd_50 = -1;
+static gint ett_rrc_T_modeSpecificInfo_22 = -1;
+static gint ett_rrc_T_fdd_52 = -1;
static gint ett_rrc_SplitTFCI_Signalling = -1;
static gint ett_rrc_TFC_Subset = -1;
static gint ett_rrc_TFC_SubsetList = -1;
static gint ett_rrc_TFC_SubsetList_item = -1;
-static gint ett_rrc_T_modeSpecificInfo_21 = -1;
-static gint ett_rrc_T_tdd_13 = -1;
+static gint ett_rrc_T_modeSpecificInfo_23 = -1;
+static gint ett_rrc_T_tdd_15 = -1;
static gint ett_rrc_TFCI_Field2_Information = -1;
static gint ett_rrc_TFCI_Range = -1;
static gint ett_rrc_TFCI_RangeList = -1;
@@ -11014,20 +11656,20 @@ static gint ett_rrc_UL_AddReconfTransChInformation_r7 = -1;
static gint ett_rrc_T_dch_usch_01 = -1;
static gint ett_rrc_T_e_dch_03 = -1;
static gint ett_rrc_T_modeSpecific = -1;
-static gint ett_rrc_T_fdd_51 = -1;
+static gint ett_rrc_T_fdd_53 = -1;
static gint ett_rrc_UL_AddReconfTransChInformation_r8 = -1;
static gint ett_rrc_T_dch_usch_02 = -1;
static gint ett_rrc_T_e_dch_04 = -1;
static gint ett_rrc_T_modeSpecific_01 = -1;
-static gint ett_rrc_T_fdd_52 = -1;
+static gint ett_rrc_T_fdd_54 = -1;
static gint ett_rrc_UL_CommonTransChInfo = -1;
-static gint ett_rrc_T_modeSpecificInfo_22 = -1;
-static gint ett_rrc_T_fdd_53 = -1;
-static gint ett_rrc_T_tdd_14 = -1;
+static gint ett_rrc_T_modeSpecificInfo_24 = -1;
+static gint ett_rrc_T_fdd_55 = -1;
+static gint ett_rrc_T_tdd_16 = -1;
static gint ett_rrc_UL_CommonTransChInfo_r4 = -1;
-static gint ett_rrc_T_modeSpecificInfo_23 = -1;
-static gint ett_rrc_T_fdd_54 = -1;
-static gint ett_rrc_T_tdd_15 = -1;
+static gint ett_rrc_T_modeSpecificInfo_25 = -1;
+static gint ett_rrc_T_fdd_56 = -1;
+static gint ett_rrc_T_tdd_17 = -1;
static gint ett_rrc_UL_ControlledTrChList = -1;
static gint ett_rrc_UL_DeletedTransChInfoList = -1;
static gint ett_rrc_UL_DeletedTransChInfoList_r6 = -1;
@@ -11068,6 +11710,8 @@ static gint ett_rrc_T_subchannels_09 = -1;
static gint ett_rrc_AdditionalPRACH_TF_and_TFCS_CCCH_IEs = -1;
static gint ett_rrc_AdditionalPRACH_TF_and_TFCS_CCCH = -1;
static gint ett_rrc_AdditionalPRACH_TF_and_TFCS_CCCH_List = -1;
+static gint ett_rrc_AdditionalDLSecCellInfoListFDD = -1;
+static gint ett_rrc_AdditionalDLSecCellInfoFDD = -1;
static gint ett_rrc_AICH_Info = -1;
static gint ett_rrc_AllocationPeriodInfo = -1;
static gint ett_rrc_AP_Signature_VCAM = -1;
@@ -11097,10 +11741,10 @@ static gint ett_rrc_Common_E_DCH_ResourceInfoList = -1;
static gint ett_rrc_Common_E_RNTI_Info = -1;
static gint ett_rrc_Common_E_RNTI_Info_item = -1;
static gint ett_rrc_CommonEDCHSystemInfo = -1;
-static gint ett_rrc_T_modeSpecificInfo_24 = -1;
+static gint ett_rrc_T_modeSpecificInfo_26 = -1;
static gint ett_rrc_T_dummy_14 = -1;
-static gint ett_rrc_T_tdd_16 = -1;
-static gint ett_rrc_T_tdd128_09 = -1;
+static gint ett_rrc_T_tdd_18 = -1;
+static gint ett_rrc_T_tdd128_10 = -1;
static gint ett_rrc_T_ccch_transmission_Info = -1;
static gint ett_rrc_CommonEDCHSystemInfoFDD = -1;
static gint ett_rrc_SEQUENCE_SIZE_1_maxEDCHs_OF_Common_E_DCH_ResourceInfoList = -1;
@@ -11118,13 +11762,13 @@ static gint ett_rrc_CPCH_SetInfoList = -1;
static gint ett_rrc_DL_CCTrCh = -1;
static gint ett_rrc_DL_CCTrCh_r4 = -1;
static gint ett_rrc_T_tddOption_03 = -1;
-static gint ett_rrc_T_tdd384_09 = -1;
-static gint ett_rrc_T_tdd128_10 = -1;
-static gint ett_rrc_DL_CCTrCh_r7 = -1;
-static gint ett_rrc_T_tddOption_04 = -1;
static gint ett_rrc_T_tdd384_10 = -1;
-static gint ett_rrc_T_tdd768_04 = -1;
static gint ett_rrc_T_tdd128_11 = -1;
+static gint ett_rrc_DL_CCTrCh_r7 = -1;
+static gint ett_rrc_T_tddOption_04 = -1;
+static gint ett_rrc_T_tdd384_11 = -1;
+static gint ett_rrc_T_tdd768_05 = -1;
+static gint ett_rrc_T_tdd128_12 = -1;
static gint ett_rrc_DL_CCTrChList = -1;
static gint ett_rrc_DL_CCTrChList_r7 = -1;
static gint ett_rrc_DL_CCTrChList_r4 = -1;
@@ -11132,130 +11776,137 @@ static gint ett_rrc_DL_CCTrChListToRemove = -1;
static gint ett_rrc_DL_ChannelisationCode = -1;
static gint ett_rrc_DL_ChannelisationCodeList = -1;
static gint ett_rrc_DL_CommonInformation = -1;
-static gint ett_rrc_T_modeSpecificInfo_25 = -1;
-static gint ett_rrc_T_fdd_55 = -1;
-static gint ett_rrc_T_tdd_17 = -1;
-static gint ett_rrc_DL_CommonInformation_r4 = -1;
-static gint ett_rrc_T_modeSpecificInfo_26 = -1;
-static gint ett_rrc_T_fdd_56 = -1;
-static gint ett_rrc_T_tdd_18 = -1;
-static gint ett_rrc_T_tddOption_05 = -1;
-static gint ett_rrc_T_tdd128_12 = -1;
-static gint ett_rrc_DL_CommonInformation_r5 = -1;
static gint ett_rrc_T_modeSpecificInfo_27 = -1;
static gint ett_rrc_T_fdd_57 = -1;
static gint ett_rrc_T_tdd_19 = -1;
-static gint ett_rrc_T_tddOption_06 = -1;
-static gint ett_rrc_T_tdd128_13 = -1;
-static gint ett_rrc_DL_CommonInformation_r6 = -1;
-static gint ett_rrc_T_dl_dpchInfoCommon = -1;
+static gint ett_rrc_DL_CommonInformation_r4 = -1;
static gint ett_rrc_T_modeSpecificInfo_28 = -1;
static gint ett_rrc_T_fdd_58 = -1;
static gint ett_rrc_T_tdd_20 = -1;
-static gint ett_rrc_T_tddOption_07 = -1;
-static gint ett_rrc_T_tdd128_14 = -1;
-static gint ett_rrc_DL_CommonInformation_r7 = -1;
-static gint ett_rrc_T_dl_dpchInfoCommon_01 = -1;
+static gint ett_rrc_T_tddOption_05 = -1;
+static gint ett_rrc_T_tdd128_13 = -1;
+static gint ett_rrc_DL_CommonInformation_r5 = -1;
static gint ett_rrc_T_modeSpecificInfo_29 = -1;
static gint ett_rrc_T_fdd_59 = -1;
static gint ett_rrc_T_tdd_21 = -1;
-static gint ett_rrc_T_tddOption_08 = -1;
-static gint ett_rrc_T_tdd128_15 = -1;
-static gint ett_rrc_DL_CommonInformation_r8 = -1;
-static gint ett_rrc_T_dl_dpchInfoCommon_02 = -1;
+static gint ett_rrc_T_tddOption_06 = -1;
+static gint ett_rrc_T_tdd128_14 = -1;
+static gint ett_rrc_DL_CommonInformation_r6 = -1;
+static gint ett_rrc_T_dl_dpchInfoCommon = -1;
static gint ett_rrc_T_modeSpecificInfo_30 = -1;
static gint ett_rrc_T_fdd_60 = -1;
static gint ett_rrc_T_tdd_22 = -1;
-static gint ett_rrc_T_tddOption_09 = -1;
-static gint ett_rrc_T_tdd128_16 = -1;
-static gint ett_rrc_DL_CommonInformationPost = -1;
-static gint ett_rrc_DL_CommonInformationPredef = -1;
-static gint ett_rrc_DL_DPCH_InfoCommon = -1;
-static gint ett_rrc_T_cfnHandling = -1;
-static gint ett_rrc_T_initialise = -1;
+static gint ett_rrc_T_tddOption_07 = -1;
+static gint ett_rrc_T_tdd128_15 = -1;
+static gint ett_rrc_DL_CommonInformation_r7 = -1;
+static gint ett_rrc_T_dl_dpchInfoCommon_01 = -1;
static gint ett_rrc_T_modeSpecificInfo_31 = -1;
static gint ett_rrc_T_fdd_61 = -1;
static gint ett_rrc_T_tdd_23 = -1;
-static gint ett_rrc_DL_DPCH_InfoCommon_r4 = -1;
-static gint ett_rrc_T_cfnHandling_01 = -1;
-static gint ett_rrc_T_initialise_01 = -1;
+static gint ett_rrc_T_tddOption_08 = -1;
+static gint ett_rrc_T_tdd128_16 = -1;
+static gint ett_rrc_DL_CommonInformation_r8 = -1;
+static gint ett_rrc_T_dl_dpchInfoCommon_02 = -1;
static gint ett_rrc_T_modeSpecificInfo_32 = -1;
static gint ett_rrc_T_fdd_62 = -1;
static gint ett_rrc_T_tdd_24 = -1;
-static gint ett_rrc_DL_DPCH_InfoCommon_r6 = -1;
-static gint ett_rrc_T_cfnHandling_02 = -1;
-static gint ett_rrc_T_maintain = -1;
+static gint ett_rrc_T_tddOption_09 = -1;
+static gint ett_rrc_T_tdd128_17 = -1;
+static gint ett_rrc_DL_CommonInformation_r10 = -1;
+static gint ett_rrc_T_dl_dpchInfoCommon_03 = -1;
static gint ett_rrc_T_modeSpecificInfo_33 = -1;
static gint ett_rrc_T_fdd_63 = -1;
static gint ett_rrc_T_tdd_25 = -1;
-static gint ett_rrc_DL_DPCH_InfoCommonPost = -1;
-static gint ett_rrc_DL_DPCH_InfoCommonPredef = -1;
+static gint ett_rrc_T_tddOption_10 = -1;
+static gint ett_rrc_T_tdd128_18 = -1;
+static gint ett_rrc_DL_CommonInformationPost = -1;
+static gint ett_rrc_DL_CommonInformationPredef = -1;
+static gint ett_rrc_DL_DPCH_InfoCommon = -1;
+static gint ett_rrc_T_cfnHandling = -1;
+static gint ett_rrc_T_initialise = -1;
static gint ett_rrc_T_modeSpecificInfo_34 = -1;
static gint ett_rrc_T_fdd_64 = -1;
static gint ett_rrc_T_tdd_26 = -1;
-static gint ett_rrc_DL_DPCH_InfoPerRL = -1;
+static gint ett_rrc_DL_DPCH_InfoCommon_r4 = -1;
+static gint ett_rrc_T_cfnHandling_01 = -1;
+static gint ett_rrc_T_initialise_01 = -1;
+static gint ett_rrc_T_modeSpecificInfo_35 = -1;
static gint ett_rrc_T_fdd_65 = -1;
static gint ett_rrc_T_tdd_27 = -1;
-static gint ett_rrc_DL_DPCH_InfoPerRL_r4 = -1;
+static gint ett_rrc_DL_DPCH_InfoCommon_r6 = -1;
+static gint ett_rrc_T_cfnHandling_02 = -1;
+static gint ett_rrc_T_maintain = -1;
+static gint ett_rrc_T_modeSpecificInfo_36 = -1;
static gint ett_rrc_T_fdd_66 = -1;
static gint ett_rrc_T_tdd_28 = -1;
-static gint ett_rrc_DL_DPCH_InfoPerRL_r5 = -1;
+static gint ett_rrc_DL_DPCH_InfoCommonPost = -1;
+static gint ett_rrc_DL_DPCH_InfoCommonPredef = -1;
+static gint ett_rrc_T_modeSpecificInfo_37 = -1;
static gint ett_rrc_T_fdd_67 = -1;
static gint ett_rrc_T_tdd_29 = -1;
-static gint ett_rrc_DL_DPCH_InfoPerRL_r6 = -1;
+static gint ett_rrc_DL_DPCH_InfoPerRL = -1;
static gint ett_rrc_T_fdd_68 = -1;
static gint ett_rrc_T_tdd_30 = -1;
-static gint ett_rrc_DL_DPCH_InfoPerRL_r7 = -1;
+static gint ett_rrc_DL_DPCH_InfoPerRL_r4 = -1;
static gint ett_rrc_T_fdd_69 = -1;
static gint ett_rrc_T_tdd_31 = -1;
+static gint ett_rrc_DL_DPCH_InfoPerRL_r5 = -1;
+static gint ett_rrc_T_fdd_70 = -1;
+static gint ett_rrc_T_tdd_32 = -1;
+static gint ett_rrc_DL_DPCH_InfoPerRL_r6 = -1;
+static gint ett_rrc_T_fdd_71 = -1;
+static gint ett_rrc_T_tdd_33 = -1;
+static gint ett_rrc_DL_DPCH_InfoPerRL_r7 = -1;
+static gint ett_rrc_T_fdd_72 = -1;
+static gint ett_rrc_T_tdd_34 = -1;
static gint ett_rrc_DL_FDPCH_InfoPerRL_r6 = -1;
static gint ett_rrc_DL_FDPCH_InfoPerRL_r7 = -1;
static gint ett_rrc_DL_DPCH_InfoPerRL_PostFDD = -1;
static gint ett_rrc_DL_DPCH_InfoPerRL_PostTDD = -1;
static gint ett_rrc_DL_DPCH_InfoPerRL_PostTDD_LCR_r4 = -1;
static gint ett_rrc_DL_DPCH_PowerControlInfo = -1;
-static gint ett_rrc_T_modeSpecificInfo_35 = -1;
-static gint ett_rrc_T_fdd_70 = -1;
-static gint ett_rrc_T_tdd_32 = -1;
+static gint ett_rrc_T_modeSpecificInfo_38 = -1;
+static gint ett_rrc_T_fdd_73 = -1;
+static gint ett_rrc_T_tdd_35 = -1;
static gint ett_rrc_DL_FDPCH_InfoCommon_r6 = -1;
static gint ett_rrc_T_cfnHandling_03 = -1;
static gint ett_rrc_T_maintain_01 = -1;
static gint ett_rrc_DL_HSPDSCH_Information = -1;
-static gint ett_rrc_T_modeSpecificInfo_36 = -1;
-static gint ett_rrc_T_tdd_33 = -1;
-static gint ett_rrc_T_tdd384_11 = -1;
-static gint ett_rrc_T_tdd128_17 = -1;
-static gint ett_rrc_DL_HSPDSCH_Information_r6 = -1;
-static gint ett_rrc_T_modeSpecificInfo_37 = -1;
-static gint ett_rrc_T_tdd_34 = -1;
-static gint ett_rrc_T_tdd384_12 = -1;
-static gint ett_rrc_T_tdd128_18 = -1;
-static gint ett_rrc_DL_HSPDSCH_Information_r7 = -1;
-static gint ett_rrc_T_modeSpecificInfo_38 = -1;
-static gint ett_rrc_T_tdd_35 = -1;
-static gint ett_rrc_T_tdd384_13 = -1;
-static gint ett_rrc_T_tdd768_05 = -1;
-static gint ett_rrc_T_tdd128_19 = -1;
-static gint ett_rrc_T_fdd_71 = -1;
-static gint ett_rrc_DL_HSPDSCH_Information_r8 = -1;
static gint ett_rrc_T_modeSpecificInfo_39 = -1;
static gint ett_rrc_T_tdd_36 = -1;
-static gint ett_rrc_T_tdd384_14 = -1;
-static gint ett_rrc_T_tdd768_06 = -1;
-static gint ett_rrc_T_tdd128_20 = -1;
-static gint ett_rrc_T_fdd_72 = -1;
-static gint ett_rrc_DL_HSPDSCH_Information_r8_ext = -1;
+static gint ett_rrc_T_tdd384_12 = -1;
+static gint ett_rrc_T_tdd128_19 = -1;
+static gint ett_rrc_DL_HSPDSCH_Information_r6 = -1;
static gint ett_rrc_T_modeSpecificInfo_40 = -1;
static gint ett_rrc_T_tdd_37 = -1;
-static gint ett_rrc_T_tdd128_21 = -1;
-static gint ett_rrc_DL_HSPDSCH_Information_r8_ext2 = -1;
-static gint ett_rrc_DL_HSPDSCH_Information_r9 = -1;
+static gint ett_rrc_T_tdd384_13 = -1;
+static gint ett_rrc_T_tdd128_20 = -1;
+static gint ett_rrc_DL_HSPDSCH_Information_r7 = -1;
static gint ett_rrc_T_modeSpecificInfo_41 = -1;
static gint ett_rrc_T_tdd_38 = -1;
+static gint ett_rrc_T_tdd384_14 = -1;
+static gint ett_rrc_T_tdd768_06 = -1;
+static gint ett_rrc_T_tdd128_21 = -1;
+static gint ett_rrc_T_fdd_74 = -1;
+static gint ett_rrc_DL_HSPDSCH_Information_r8 = -1;
+static gint ett_rrc_T_modeSpecificInfo_42 = -1;
+static gint ett_rrc_T_tdd_39 = -1;
static gint ett_rrc_T_tdd384_15 = -1;
static gint ett_rrc_T_tdd768_07 = -1;
static gint ett_rrc_T_tdd128_22 = -1;
-static gint ett_rrc_T_fdd_73 = -1;
+static gint ett_rrc_T_fdd_75 = -1;
+static gint ett_rrc_DL_HSPDSCH_Information_r8_ext = -1;
+static gint ett_rrc_T_modeSpecificInfo_43 = -1;
+static gint ett_rrc_T_tdd_40 = -1;
+static gint ett_rrc_T_tdd128_23 = -1;
+static gint ett_rrc_DL_HSPDSCH_Information_r8_ext2 = -1;
+static gint ett_rrc_DL_HSPDSCH_Information_r9 = -1;
+static gint ett_rrc_T_modeSpecificInfo_44 = -1;
+static gint ett_rrc_T_tdd_41 = -1;
+static gint ett_rrc_T_tdd384_16 = -1;
+static gint ett_rrc_T_tdd768_08 = -1;
+static gint ett_rrc_T_tdd128_24 = -1;
+static gint ett_rrc_T_fdd_76 = -1;
static gint ett_rrc_DL_HSPDSCH_MultiCarrier_Information = -1;
static gint ett_rrc_DL_HSPDSCH_MultiCarrier_Information_item = -1;
static gint ett_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD128_MultiCarrier = -1;
@@ -11264,46 +11915,46 @@ static gint ett_rrc_DL_HSPDSCH_TS_Configuration_item = -1;
static gint ett_rrc_DL_HSPDSCH_TS_Configuration_VHCR = -1;
static gint ett_rrc_DL_HSPDSCH_TS_Configuration_VHCR_item = -1;
static gint ett_rrc_DL_InformationPerRL = -1;
-static gint ett_rrc_T_modeSpecificInfo_42 = -1;
-static gint ett_rrc_T_fdd_74 = -1;
-static gint ett_rrc_DL_InformationPerRL_r4 = -1;
-static gint ett_rrc_T_modeSpecificInfo_43 = -1;
-static gint ett_rrc_T_fdd_75 = -1;
-static gint ett_rrc_DL_InformationPerRL_r5 = -1;
-static gint ett_rrc_T_modeSpecificInfo_44 = -1;
-static gint ett_rrc_T_fdd_76 = -1;
-static gint ett_rrc_DL_InformationPerRL_r5bis = -1;
static gint ett_rrc_T_modeSpecificInfo_45 = -1;
static gint ett_rrc_T_fdd_77 = -1;
-static gint ett_rrc_DL_InformationPerRL_r6 = -1;
+static gint ett_rrc_DL_InformationPerRL_r4 = -1;
static gint ett_rrc_T_modeSpecificInfo_46 = -1;
static gint ett_rrc_T_fdd_78 = -1;
+static gint ett_rrc_DL_InformationPerRL_r5 = -1;
+static gint ett_rrc_T_modeSpecificInfo_47 = -1;
+static gint ett_rrc_T_fdd_79 = -1;
+static gint ett_rrc_DL_InformationPerRL_r5bis = -1;
+static gint ett_rrc_T_modeSpecificInfo_48 = -1;
+static gint ett_rrc_T_fdd_80 = -1;
+static gint ett_rrc_DL_InformationPerRL_r6 = -1;
+static gint ett_rrc_T_modeSpecificInfo_49 = -1;
+static gint ett_rrc_T_fdd_81 = -1;
static gint ett_rrc_T_dl_dpchInfo = -1;
static gint ett_rrc_T_e_HICH_Info = -1;
static gint ett_rrc_T_e_RGCH_Info_01 = -1;
static gint ett_rrc_DL_InformationPerRL_v6b0ext = -1;
static gint ett_rrc_DL_InformationPerRL_r7 = -1;
-static gint ett_rrc_T_modeSpecificInfo_47 = -1;
-static gint ett_rrc_T_fdd_79 = -1;
+static gint ett_rrc_T_modeSpecificInfo_50 = -1;
+static gint ett_rrc_T_fdd_82 = -1;
static gint ett_rrc_T_dl_dpchInfo_01 = -1;
static gint ett_rrc_T_modeSpecificInfo2 = -1;
-static gint ett_rrc_T_fdd_80 = -1;
+static gint ett_rrc_T_fdd_83 = -1;
static gint ett_rrc_T_e_HICH_Info_01 = -1;
static gint ett_rrc_T_e_RGCH_Info_02 = -1;
-static gint ett_rrc_T_tdd_39 = -1;
+static gint ett_rrc_T_tdd_42 = -1;
static gint ett_rrc_T_tdd384_tdd768 = -1;
-static gint ett_rrc_T_tdd128_23 = -1;
+static gint ett_rrc_T_tdd128_25 = -1;
static gint ett_rrc_DL_InformationPerRL_r8 = -1;
-static gint ett_rrc_T_modeSpecificInfo_48 = -1;
-static gint ett_rrc_T_fdd_81 = -1;
+static gint ett_rrc_T_modeSpecificInfo_51 = -1;
+static gint ett_rrc_T_fdd_84 = -1;
static gint ett_rrc_T_dl_dpchInfo_02 = -1;
static gint ett_rrc_T_modeSpecificInfo2_01 = -1;
-static gint ett_rrc_T_fdd_82 = -1;
+static gint ett_rrc_T_fdd_85 = -1;
static gint ett_rrc_T_e_HICH_Info_02 = -1;
static gint ett_rrc_T_e_RGCH_Info_03 = -1;
-static gint ett_rrc_T_tdd_40 = -1;
+static gint ett_rrc_T_tdd_43 = -1;
static gint ett_rrc_T_tdd384_tdd768_01 = -1;
-static gint ett_rrc_T_tdd128_24 = -1;
+static gint ett_rrc_T_tdd128_26 = -1;
static gint ett_rrc_DL_InformationPerRL_List = -1;
static gint ett_rrc_DL_InformationPerRL_List_r4 = -1;
static gint ett_rrc_DL_InformationPerRL_List_r5 = -1;
@@ -11326,6 +11977,9 @@ static gint ett_rrc_DL_SecondaryCellInfoFDD_v890ext = -1;
static gint ett_rrc_DL_SecondaryCellInfoFDD_r9 = -1;
static gint ett_rrc_T_configurationInfo = -1;
static gint ett_rrc_T_newConfiguration_02 = -1;
+static gint ett_rrc_DL_SecondaryCellInfoFDD_r10 = -1;
+static gint ett_rrc_T_configurationInfo_01 = -1;
+static gint ett_rrc_T_newConfiguration_03 = -1;
static gint ett_rrc_DL_TPC_PowerOffsetPerRL = -1;
static gint ett_rrc_DL_TPC_PowerOffsetPerRL_List = -1;
static gint ett_rrc_DL_TS_ChannelisationCodesShort = -1;
@@ -11339,6 +11993,7 @@ static gint ett_rrc_T_bitmap_01 = -1;
static gint ett_rrc_DL_ChannelCodes_MBSFN_IMB384 = -1;
static gint ett_rrc_DLUL_HSPA_Information_r8 = -1;
static gint ett_rrc_DLUL_HSPA_Information_r9 = -1;
+static gint ett_rrc_DLUL_HSPA_Information_r10 = -1;
static gint ett_rrc_DownlinkAdditionalTimeslots = -1;
static gint ett_rrc_T_parameters = -1;
static gint ett_rrc_T_sameAsLast = -1;
@@ -11373,8 +12028,11 @@ static gint ett_rrc_T_additionalTimeslots_03 = -1;
static gint ett_rrc_SEQUENCE_SIZE_1_maxTS_1_OF_DownlinkAdditionalTimeslots_r7 = -1;
static gint ett_rrc_DPCH_CompressedModeInfo = -1;
static gint ett_rrc_DPCH_CompressedModeInfo_r8 = -1;
+static gint ett_rrc_DPCH_CompressedModeInfo_r10 = -1;
static gint ett_rrc_DPCH_CompressedModeStatusInfo = -1;
static gint ett_rrc_SEQUENCE_SIZE_1_maxTGPS_OF_TGP_SequenceShort = -1;
+static gint ett_rrc_DPCH_CompressedModeStatusInfo_r10 = -1;
+static gint ett_rrc_SEQUENCE_SIZE_1_maxTGPS_OF_TGP_SequenceShort_r10 = -1;
static gint ett_rrc_DRX_Info = -1;
static gint ett_rrc_DSCH_Mapping = -1;
static gint ett_rrc_DSCH_MappingList = -1;
@@ -11398,18 +12056,18 @@ static gint ett_rrc_T_midambleAllocationMode = -1;
static gint ett_rrc_E_AGCH_Information = -1;
static gint ett_rrc_E_AGCH_Information_r7 = -1;
static gint ett_rrc_T_modeSpecific_02 = -1;
-static gint ett_rrc_T_fdd_83 = -1;
-static gint ett_rrc_T_tdd_41 = -1;
-static gint ett_rrc_T_tdd384_16 = -1;
-static gint ett_rrc_T_tdd768_08 = -1;
-static gint ett_rrc_T_tdd128_25 = -1;
-static gint ett_rrc_E_AGCH_Information_r8 = -1;
-static gint ett_rrc_T_modeSpecific_03 = -1;
-static gint ett_rrc_T_fdd_84 = -1;
-static gint ett_rrc_T_tdd_42 = -1;
+static gint ett_rrc_T_fdd_86 = -1;
+static gint ett_rrc_T_tdd_44 = -1;
static gint ett_rrc_T_tdd384_17 = -1;
static gint ett_rrc_T_tdd768_09 = -1;
-static gint ett_rrc_T_tdd128_26 = -1;
+static gint ett_rrc_T_tdd128_27 = -1;
+static gint ett_rrc_E_AGCH_Information_r8 = -1;
+static gint ett_rrc_T_modeSpecific_03 = -1;
+static gint ett_rrc_T_fdd_87 = -1;
+static gint ett_rrc_T_tdd_45 = -1;
+static gint ett_rrc_T_tdd384_18 = -1;
+static gint ett_rrc_T_tdd768_10 = -1;
+static gint ett_rrc_T_tdd128_28 = -1;
static gint ett_rrc_E_AGCH_Information_TDD128 = -1;
static gint ett_rrc_E_AGCH_Set_Config = -1;
static gint ett_rrc_E_AGCH_Set_Config_VHCR = -1;
@@ -11454,7 +12112,7 @@ static gint ett_rrc_T_servingGrant_03 = -1;
static gint ett_rrc_E_HICH_Information = -1;
static gint ett_rrc_E_HICH_Information_CommonEdch = -1;
static gint ett_rrc_E_HICH_Information_TDD384_768 = -1;
-static gint ett_rrc_T_modeSpecificInfo_49 = -1;
+static gint ett_rrc_T_modeSpecificInfo_52 = -1;
static gint ett_rrc_E_HICH_Information_LCR = -1;
static gint ett_rrc_T_midambleAllocationMode_01 = -1;
static gint ett_rrc_E_HICH_Information_TDD128 = -1;
@@ -11465,42 +12123,44 @@ static gint ett_rrc_T_implicit = -1;
static gint ett_rrc_T_explicit_01 = -1;
static gint ett_rrc_T_midambleAllocationMode_02 = -1;
static gint ett_rrc_E_PUCH_Info = -1;
-static gint ett_rrc_T_modeSpecificInfo_50 = -1;
+static gint ett_rrc_T_modeSpecificInfo_53 = -1;
static gint ett_rrc_T_tdd348_tdd768 = -1;
static gint ett_rrc_SEQUENCE_SIZE_1_maxTS_2_OF_E_PUCH_TS_Slots = -1;
-static gint ett_rrc_T_tdd128_27 = -1;
+static gint ett_rrc_T_tdd128_29 = -1;
static gint ett_rrc_SEQUENCE_SIZE_1_maxTS_LCR_1_OF_E_PUCH_TS_Slots_LCR = -1;
static gint ett_rrc_E_PUCH_Info_TDD128 = -1;
+static gint ett_rrc_E_PUCH_Info_MulticarrierEDCH_TDD128 = -1;
static gint ett_rrc_E_PUCH_TS_Slots = -1;
static gint ett_rrc_E_PUCH_TS_Slots_LCR = -1;
static gint ett_rrc_T_midambleAllocationMode_03 = -1;
static gint ett_rrc_E_RGCH_Information = -1;
static gint ett_rrc_E_RGCH_Information_CommonEdch = -1;
static gint ett_rrc_E_RUCCH_Info = -1;
-static gint ett_rrc_T_modeSpecificInfo_51 = -1;
+static gint ett_rrc_T_modeSpecificInfo_54 = -1;
static gint ett_rrc_T_tdd384_tdd768_02 = -1;
-static gint ett_rrc_T_modeSpecificInfo_52 = -1;
-static gint ett_rrc_T_tdd384_18 = -1;
+static gint ett_rrc_T_modeSpecificInfo_55 = -1;
+static gint ett_rrc_T_tdd384_19 = -1;
static gint ett_rrc_SEQUENCE_SIZE_1_8_OF_SF16Codes = -1;
static gint ett_rrc_SEQUENCE_SIZE_1_8_OF_SF8Codes = -1;
-static gint ett_rrc_T_tdd768_10 = -1;
+static gint ett_rrc_T_tdd768_11 = -1;
static gint ett_rrc_SEQUENCE_SIZE_1_16_OF_SF32Codes = -1;
static gint ett_rrc_SEQUENCE_SIZE_1_16_OF_SF16Codes2 = -1;
-static gint ett_rrc_T_tdd128_28 = -1;
+static gint ett_rrc_T_tdd128_30 = -1;
static gint ett_rrc_E_RUCCH_Info_TDD128 = -1;
static gint ett_rrc_E_TFC_Boost_Info_r7 = -1;
static gint ett_rrc_E_TFCS_Info = -1;
static gint ett_rrc_SEQUENCE_SIZE_1_8_OF_Reference_Beta_QPSK = -1;
static gint ett_rrc_SEQUENCE_SIZE_1_8_OF_Reference_Beta_16QAM = -1;
static gint ett_rrc_EXT_UL_TimingAdvance = -1;
-static gint ett_rrc_T_modeSpecificInfo_53 = -1;
-static gint ett_rrc_T_tdd384_19 = -1;
-static gint ett_rrc_T_tdd768_11 = -1;
+static gint ett_rrc_T_modeSpecificInfo_56 = -1;
+static gint ett_rrc_T_tdd384_20 = -1;
+static gint ett_rrc_T_tdd768_12 = -1;
static gint ett_rrc_FACH_PCH_Information = -1;
static gint ett_rrc_FACH_PCH_InformationList = -1;
static gint ett_rrc_FPACH_Info_r4 = -1;
+static gint ett_rrc_FreqIndexListForEnhancedMeas = -1;
static gint ett_rrc_FrequencyInfo = -1;
-static gint ett_rrc_T_modeSpecificInfo_54 = -1;
+static gint ett_rrc_T_modeSpecificInfo_57 = -1;
static gint ett_rrc_FrequencyInfoFDD = -1;
static gint ett_rrc_FrequencyInfoTDD = -1;
static gint ett_rrc_HS_ChannelisationCodeSetInfo_LCR = -1;
@@ -11526,39 +12186,39 @@ static gint ett_rrc_T_initialSPSInfoForHSDSCH = -1;
static gint ett_rrc_HS_PDSCH_Midamble_Configuration_TDD128 = -1;
static gint ett_rrc_T_midambleAllocationMode_04 = -1;
static gint ett_rrc_HS_SCCH_Info = -1;
-static gint ett_rrc_T_modeSpecificInfo_55 = -1;
-static gint ett_rrc_T_fdd_85 = -1;
-static gint ett_rrc_T_tdd_43 = -1;
-static gint ett_rrc_T_tdd384_20 = -1;
+static gint ett_rrc_T_modeSpecificInfo_58 = -1;
+static gint ett_rrc_T_fdd_88 = -1;
+static gint ett_rrc_T_tdd_46 = -1;
+static gint ett_rrc_T_tdd384_21 = -1;
static gint ett_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD384 = -1;
static gint ett_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD128 = -1;
static gint ett_rrc_HS_SCCH_Info_r6 = -1;
-static gint ett_rrc_T_modeSpecificInfo_56 = -1;
-static gint ett_rrc_T_fdd_86 = -1;
-static gint ett_rrc_T_tdd_44 = -1;
-static gint ett_rrc_T_tdd384_21 = -1;
+static gint ett_rrc_T_modeSpecificInfo_59 = -1;
+static gint ett_rrc_T_fdd_89 = -1;
+static gint ett_rrc_T_tdd_47 = -1;
+static gint ett_rrc_T_tdd384_22 = -1;
static gint ett_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD384_r6 = -1;
-static gint ett_rrc_T_tdd128_29 = -1;
+static gint ett_rrc_T_tdd128_31 = -1;
static gint ett_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD128_r6 = -1;
static gint ett_rrc_HS_SCCH_Info_r7 = -1;
-static gint ett_rrc_T_modeSpecificInfo_57 = -1;
-static gint ett_rrc_T_fdd_87 = -1;
-static gint ett_rrc_T_tdd_45 = -1;
-static gint ett_rrc_T_tdd384_22 = -1;
-static gint ett_rrc_T_tdd768_12 = -1;
-static gint ett_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD768 = -1;
-static gint ett_rrc_T_tdd128_30 = -1;
-static gint ett_rrc_HS_SCCH_Info_r8_ext = -1;
-static gint ett_rrc_T_modeSpecificInfo_58 = -1;
-static gint ett_rrc_T_tdd_46 = -1;
-static gint ett_rrc_T_tdd128_31 = -1;
-static gint ett_rrc_HS_SCCH_Info_r9 = -1;
-static gint ett_rrc_T_modeSpecificInfo_59 = -1;
-static gint ett_rrc_T_fdd_88 = -1;
-static gint ett_rrc_T_tdd_47 = -1;
+static gint ett_rrc_T_modeSpecificInfo_60 = -1;
+static gint ett_rrc_T_fdd_90 = -1;
+static gint ett_rrc_T_tdd_48 = -1;
static gint ett_rrc_T_tdd384_23 = -1;
static gint ett_rrc_T_tdd768_13 = -1;
+static gint ett_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD768 = -1;
static gint ett_rrc_T_tdd128_32 = -1;
+static gint ett_rrc_HS_SCCH_Info_r8_ext = -1;
+static gint ett_rrc_T_modeSpecificInfo_61 = -1;
+static gint ett_rrc_T_tdd_49 = -1;
+static gint ett_rrc_T_tdd128_33 = -1;
+static gint ett_rrc_HS_SCCH_Info_r9 = -1;
+static gint ett_rrc_T_modeSpecificInfo_62 = -1;
+static gint ett_rrc_T_fdd_91 = -1;
+static gint ett_rrc_T_tdd_50 = -1;
+static gint ett_rrc_T_tdd384_24 = -1;
+static gint ett_rrc_T_tdd768_14 = -1;
+static gint ett_rrc_T_tdd128_34 = -1;
static gint ett_rrc_HS_SCCH_DRX_Info_TDD128 = -1;
static gint ett_rrc_HS_SCCH_Less_NewOperation = -1;
static gint ett_rrc_HS_SCCH_LessInfo_r7 = -1;
@@ -11610,11 +12270,11 @@ static gint ett_rrc_IndividualTimeslotInfo_r7 = -1;
static gint ett_rrc_IndividualTS_Interference = -1;
static gint ett_rrc_IndividualTS_InterferenceList = -1;
static gint ett_rrc_Measurement_Feedback_Info = -1;
-static gint ett_rrc_T_modeSpecificInfo_60 = -1;
-static gint ett_rrc_T_fdd_89 = -1;
+static gint ett_rrc_T_modeSpecificInfo_63 = -1;
+static gint ett_rrc_T_fdd_92 = -1;
static gint ett_rrc_Measurement_Feedback_Info_r7 = -1;
-static gint ett_rrc_T_modeSpecificInfo_61 = -1;
-static gint ett_rrc_T_fdd_90 = -1;
+static gint ett_rrc_T_modeSpecificInfo_64 = -1;
+static gint ett_rrc_T_fdd_93 = -1;
static gint ett_rrc_MidambleShiftAndBurstType = -1;
static gint ett_rrc_T_burstType = -1;
static gint ett_rrc_T_type1_01 = -1;
@@ -11678,15 +12338,15 @@ static gint ett_rrc_T_ueSpecificMidamble_22 = -1;
static gint ett_rrc_MIMO_Parameters_r7 = -1;
static gint ett_rrc_MIMO_Parameters_v7g0ext = -1;
static gint ett_rrc_MIMO_Parameters_r8 = -1;
-static gint ett_rrc_T_modeSpecificInfo_62 = -1;
-static gint ett_rrc_T_fdd_91 = -1;
-static gint ett_rrc_T_tdd_48 = -1;
-static gint ett_rrc_T_tdd128_33 = -1;
+static gint ett_rrc_T_modeSpecificInfo_65 = -1;
+static gint ett_rrc_T_fdd_94 = -1;
+static gint ett_rrc_T_tdd_51 = -1;
+static gint ett_rrc_T_tdd128_35 = -1;
static gint ett_rrc_MIMO_Parameters_r9 = -1;
-static gint ett_rrc_T_modeSpecificInfo_63 = -1;
-static gint ett_rrc_T_fdd_92 = -1;
-static gint ett_rrc_T_tdd_49 = -1;
-static gint ett_rrc_T_tdd128_34 = -1;
+static gint ett_rrc_T_modeSpecificInfo_66 = -1;
+static gint ett_rrc_T_fdd_95 = -1;
+static gint ett_rrc_T_tdd_52 = -1;
+static gint ett_rrc_T_tdd128_36 = -1;
static gint ett_rrc_MIMO_PilotConfiguration = -1;
static gint ett_rrc_T_secondCPICH_Pattern = -1;
static gint ett_rrc_T_diversityPattern = -1;
@@ -11695,17 +12355,19 @@ static gint ett_rrc_MIMO_PilotConfiguration_r9 = -1;
static gint ett_rrc_T_secondCPICH_Pattern_01 = -1;
static gint ett_rrc_T_diversityPattern_01 = -1;
static gint ett_rrc_Multi_frequencyInfo_LCR_r7 = -1;
+static gint ett_rrc_MU_MIMO_Info_TDD128 = -1;
+static gint ett_rrc_T_newConfiguration_04 = -1;
static gint ett_rrc_NewTiming = -1;
static gint ett_rrc_Non_ScheduledTransGrantInfoTDD = -1;
static gint ett_rrc_T_tdd384_768 = -1;
-static gint ett_rrc_T_tdd128_35 = -1;
+static gint ett_rrc_T_tdd128_37 = -1;
static gint ett_rrc_T_e_HICH_Info_04 = -1;
static gint ett_rrc_T_midambleAllocationMode_31 = -1;
static gint ett_rrc_Non_ScheduledTransGrantInfoTDD_ext = -1;
-static gint ett_rrc_T_tdd128_36 = -1;
+static gint ett_rrc_T_tdd128_38 = -1;
static gint ett_rrc_Non_ScheduledTransGrantInfoTDD_r9 = -1;
static gint ett_rrc_T_tdd384_768_01 = -1;
-static gint ett_rrc_T_tdd128_37 = -1;
+static gint ett_rrc_T_tdd128_39 = -1;
static gint ett_rrc_T_e_HICH_Info_05 = -1;
static gint ett_rrc_T_midambleAllocationMode_32 = -1;
static gint ett_rrc_OpenLoopPowerControl_TDD = -1;
@@ -11735,14 +12397,14 @@ static gint ett_rrc_PDSCH_CodeMapping = -1;
static gint ett_rrc_T_signallingMethod = -1;
static gint ett_rrc_PDSCH_Info = -1;
static gint ett_rrc_PDSCH_Info_r4 = -1;
-static gint ett_rrc_T_tddOption_10 = -1;
-static gint ett_rrc_T_tdd384_24 = -1;
-static gint ett_rrc_T_tdd128_38 = -1;
-static gint ett_rrc_PDSCH_Info_r7 = -1;
static gint ett_rrc_T_tddOption_11 = -1;
static gint ett_rrc_T_tdd384_25 = -1;
-static gint ett_rrc_T_tdd768_14 = -1;
-static gint ett_rrc_T_tdd128_39 = -1;
+static gint ett_rrc_T_tdd128_40 = -1;
+static gint ett_rrc_PDSCH_Info_r7 = -1;
+static gint ett_rrc_T_tddOption_12 = -1;
+static gint ett_rrc_T_tdd384_26 = -1;
+static gint ett_rrc_T_tdd768_15 = -1;
+static gint ett_rrc_T_tdd128_41 = -1;
static gint ett_rrc_PDSCH_Info_LCR_r4 = -1;
static gint ett_rrc_PDSCH_PowerControlInfo = -1;
static gint ett_rrc_PDSCH_SHO_DCH_Info = -1;
@@ -11766,8 +12428,8 @@ static gint ett_rrc_PICH_ForHSDPASupportedPaging = -1;
static gint ett_rrc_PICH_ForHSDPASupportedPaging_TDD128 = -1;
static gint ett_rrc_T_implicit_02 = -1;
static gint ett_rrc_PICH_Info = -1;
-static gint ett_rrc_T_fdd_93 = -1;
-static gint ett_rrc_T_tdd_50 = -1;
+static gint ett_rrc_T_fdd_96 = -1;
+static gint ett_rrc_T_tdd_53 = -1;
static gint ett_rrc_PICH_Info_HCR_VHCR_r7 = -1;
static gint ett_rrc_T_channelisationCode = -1;
static gint ett_rrc_PICH_Info_LCR_r4 = -1;
@@ -11787,16 +12449,16 @@ static gint ett_rrc_PRACH_Partitioning_LCR_r4 = -1;
static gint ett_rrc_PRACH_PowerOffset = -1;
static gint ett_rrc_PRACH_PreambleForEnhancedUplink = -1;
static gint ett_rrc_PRACH_RACH_Info = -1;
-static gint ett_rrc_T_modeSpecificInfo_64 = -1;
-static gint ett_rrc_T_fdd_94 = -1;
-static gint ett_rrc_T_tdd_51 = -1;
+static gint ett_rrc_T_modeSpecificInfo_67 = -1;
+static gint ett_rrc_T_fdd_97 = -1;
+static gint ett_rrc_T_tdd_54 = -1;
static gint ett_rrc_PRACH_RACH_Info_VHCR_r7 = -1;
static gint ett_rrc_PRACH_RACH_Info_LCR_v770ext = -1;
static gint ett_rrc_PRACH_RACH_Info_LCR_r4 = -1;
static gint ett_rrc_SEQUENCE_SIZE_1_maxPRACH_FPACH_OF_PRACH_Definition_LCR_r4 = -1;
static gint ett_rrc_PRACH_SystemInformation = -1;
-static gint ett_rrc_T_modeSpecificInfo_65 = -1;
-static gint ett_rrc_T_fdd_95 = -1;
+static gint ett_rrc_T_modeSpecificInfo_68 = -1;
+static gint ett_rrc_T_fdd_98 = -1;
static gint ett_rrc_PRACH_SystemInformation_VHCR_r7 = -1;
static gint ett_rrc_PRACH_SystemInformation_LCR_r4 = -1;
static gint ett_rrc_PRACH_SystemInformation_LCR_v770ext = -1;
@@ -11807,20 +12469,20 @@ static gint ett_rrc_PRACH_SystemInformationList_LCR_v770ext = -1;
static gint ett_rrc_PreDefPhyChConfiguration = -1;
static gint ett_rrc_PreDefPhyChConfiguration_v770ext = -1;
static gint ett_rrc_PrimaryCCPCH_Info = -1;
-static gint ett_rrc_T_fdd_96 = -1;
-static gint ett_rrc_T_tdd_52 = -1;
+static gint ett_rrc_T_fdd_99 = -1;
+static gint ett_rrc_T_tdd_55 = -1;
static gint ett_rrc_T_syncCase = -1;
static gint ett_rrc_T_syncCase1 = -1;
static gint ett_rrc_T_syncCase2 = -1;
static gint ett_rrc_PrimaryCCPCH_Info_r4 = -1;
-static gint ett_rrc_T_fdd_97 = -1;
-static gint ett_rrc_T_tdd_53 = -1;
-static gint ett_rrc_T_tddOption_12 = -1;
+static gint ett_rrc_T_fdd_100 = -1;
+static gint ett_rrc_T_tdd_56 = -1;
+static gint ett_rrc_T_tddOption_13 = -1;
static gint ett_rrc_T_tdd384_tdd768_03 = -1;
static gint ett_rrc_T_syncCase_01 = -1;
static gint ett_rrc_T_syncCase1_01 = -1;
static gint ett_rrc_T_syncCase2_01 = -1;
-static gint ett_rrc_T_tdd128_40 = -1;
+static gint ett_rrc_T_tdd128_42 = -1;
static gint ett_rrc_PrimaryCCPCH_Info_LCR_r4 = -1;
static gint ett_rrc_PrimaryCCPCH_Info_LCR_r4_ext = -1;
static gint ett_rrc_PrimaryCCPCH_InfoPost = -1;
@@ -11849,17 +12511,17 @@ static gint ett_rrc_T_old_Configuration_05 = -1;
static gint ett_rrc_T_new_Configuration_05 = -1;
static gint ett_rrc_PUSCH_Info = -1;
static gint ett_rrc_PUSCH_Info_r4 = -1;
-static gint ett_rrc_T_tddOption_13 = -1;
-static gint ett_rrc_T_tdd384_26 = -1;
-static gint ett_rrc_T_tdd128_41 = -1;
+static gint ett_rrc_T_tddOption_14 = -1;
+static gint ett_rrc_T_tdd384_27 = -1;
+static gint ett_rrc_T_tdd128_43 = -1;
static gint ett_rrc_PUSCH_Info_VHCR = -1;
static gint ett_rrc_PUSCH_Info_LCR_r4 = -1;
static gint ett_rrc_PUSCH_PowerControlInfo_r4 = -1;
-static gint ett_rrc_T_tddOption_14 = -1;
-static gint ett_rrc_T_tdd128_42 = -1;
-static gint ett_rrc_PUSCH_PowerControlInfo_r7 = -1;
static gint ett_rrc_T_tddOption_15 = -1;
-static gint ett_rrc_T_tdd128_43 = -1;
+static gint ett_rrc_T_tdd128_44 = -1;
+static gint ett_rrc_PUSCH_PowerControlInfo_r7 = -1;
+static gint ett_rrc_T_tddOption_16 = -1;
+static gint ett_rrc_T_tdd128_45 = -1;
static gint ett_rrc_PUSCH_SysInfo = -1;
static gint ett_rrc_PUSCH_SysInfo_VHCR = -1;
static gint ett_rrc_PUSCH_SysInfo_HCR_r5 = -1;
@@ -11902,6 +12564,8 @@ static gint ett_rrc_RL_AdditionInformation_r8 = -1;
static gint ett_rrc_T_dl_dpchInfo_05 = -1;
static gint ett_rrc_RL_AdditionInformation_r9 = -1;
static gint ett_rrc_T_dl_dpchInfo_06 = -1;
+static gint ett_rrc_RL_AdditionInformation_r10 = -1;
+static gint ett_rrc_T_dl_dpchInfo_07 = -1;
static gint ett_rrc_RL_AdditionInformation_v6b0ext = -1;
static gint ett_rrc_RL_AdditionInformation_v890ext = -1;
static gint ett_rrc_RL_AdditionInformation_v950ext = -1;
@@ -11913,6 +12577,7 @@ static gint ett_rrc_RL_AdditionInformationList_r8 = -1;
static gint ett_rrc_RL_AdditionInformationList_v890ext = -1;
static gint ett_rrc_RL_AdditionInformationList_r9 = -1;
static gint ett_rrc_RL_AdditionInformationList_v950ext = -1;
+static gint ett_rrc_RL_AdditionInformationList_r10 = -1;
static gint ett_rrc_RL_AdditionInformationList_SecULFreq = -1;
static gint ett_rrc_RL_AdditionInformation_SecULFreq = -1;
static gint ett_rrc_RL_IdentifierList = -1;
@@ -11921,12 +12586,12 @@ static gint ett_rrc_RL_RemovalInformationList_SecULFreq = -1;
static gint ett_rrc_SCCPCH_ChannelisationCodeList = -1;
static gint ett_rrc_SCCPCH_ChannelisationCodeList_VHCR = -1;
static gint ett_rrc_SCCPCH_InfoForFACH = -1;
-static gint ett_rrc_T_modeSpecificInfo_66 = -1;
-static gint ett_rrc_T_fdd_98 = -1;
-static gint ett_rrc_T_tdd_54 = -1;
+static gint ett_rrc_T_modeSpecificInfo_69 = -1;
+static gint ett_rrc_T_fdd_101 = -1;
+static gint ett_rrc_T_tdd_57 = -1;
static gint ett_rrc_SCCPCH_InfoForFACH_r4 = -1;
-static gint ett_rrc_T_modeSpecificInfo_67 = -1;
-static gint ett_rrc_T_fdd_99 = -1;
+static gint ett_rrc_T_modeSpecificInfo_70 = -1;
+static gint ett_rrc_T_fdd_102 = -1;
static gint ett_rrc_SCCPCH_SystemInformation = -1;
static gint ett_rrc_SCCPCH_SystemInformation_LCR_r4_ext = -1;
static gint ett_rrc_SCCPCH_SystemInformation_HCR_VHCR_r7 = -1;
@@ -11940,41 +12605,43 @@ static gint ett_rrc_SCCPCH_SystemInformation_MBMS_r7 = -1;
static gint ett_rrc_T_fachCarryingMCCH_01 = -1;
static gint ett_rrc_T_fachCarryingMSCH_01 = -1;
static gint ett_rrc_SecondaryCCPCH_Info = -1;
-static gint ett_rrc_T_modeSpecificInfo_68 = -1;
-static gint ett_rrc_T_fdd_100 = -1;
-static gint ett_rrc_T_tdd_55 = -1;
+static gint ett_rrc_T_modeSpecificInfo_71 = -1;
+static gint ett_rrc_T_fdd_103 = -1;
+static gint ett_rrc_T_tdd_58 = -1;
static gint ett_rrc_SecondaryCCPCH_Info_r4 = -1;
-static gint ett_rrc_T_modeSpecificInfo_69 = -1;
-static gint ett_rrc_T_fdd_101 = -1;
-static gint ett_rrc_T_tdd_56 = -1;
-static gint ett_rrc_T_tddOption_16 = -1;
-static gint ett_rrc_T_tdd384_27 = -1;
-static gint ett_rrc_T_tdd128_44 = -1;
-static gint ett_rrc_SecondaryCCPCH_Info_HCR_VHCR_r7 = -1;
-static gint ett_rrc_T_modeSpecificInfo_70 = -1;
+static gint ett_rrc_T_modeSpecificInfo_72 = -1;
+static gint ett_rrc_T_fdd_104 = -1;
+static gint ett_rrc_T_tdd_59 = -1;
+static gint ett_rrc_T_tddOption_17 = -1;
static gint ett_rrc_T_tdd384_28 = -1;
-static gint ett_rrc_T_tdd768_15 = -1;
+static gint ett_rrc_T_tdd128_46 = -1;
+static gint ett_rrc_SecondaryCCPCH_Info_HCR_VHCR_r7 = -1;
+static gint ett_rrc_T_modeSpecificInfo_73 = -1;
+static gint ett_rrc_T_tdd384_29 = -1;
+static gint ett_rrc_T_tdd768_16 = -1;
static gint ett_rrc_SecondaryCCPCH_Info_LCR_r4_ext = -1;
static gint ett_rrc_SecondaryCCPCHFrameType2Info = -1;
static gint ett_rrc_T_modulation_03 = -1;
static gint ett_rrc_T_mod16QAM = -1;
static gint ett_rrc_SecondaryCCPCHInfo_MBMS_r6 = -1;
-static gint ett_rrc_T_modeSpecificInfo_71 = -1;
-static gint ett_rrc_T_fdd_102 = -1;
-static gint ett_rrc_T_tdd384_29 = -1;
-static gint ett_rrc_T_tdd128_45 = -1;
+static gint ett_rrc_T_modeSpecificInfo_74 = -1;
+static gint ett_rrc_T_fdd_105 = -1;
+static gint ett_rrc_T_tdd384_30 = -1;
+static gint ett_rrc_T_tdd128_47 = -1;
static gint ett_rrc_SecondaryCCPCHInfo_MBMS_r7 = -1;
-static gint ett_rrc_T_modeSpecificInfo_72 = -1;
-static gint ett_rrc_T_fdd_103 = -1;
+static gint ett_rrc_T_modeSpecificInfo_75 = -1;
+static gint ett_rrc_T_fdd_106 = -1;
static gint ett_rrc_T_modulation_04 = -1;
-static gint ett_rrc_T_tdd384_30 = -1;
-static gint ett_rrc_T_tdd768_16 = -1;
-static gint ett_rrc_T_tdd128_46 = -1;
+static gint ett_rrc_T_tdd384_31 = -1;
+static gint ett_rrc_T_tdd768_17 = -1;
+static gint ett_rrc_T_tdd128_48 = -1;
static gint ett_rrc_SecondaryCCPCHInfoDiff_MBMS = -1;
static gint ett_rrc_SecondaryCPICH_Info = -1;
static gint ett_rrc_SecondaryCellMIMOparametersFDD = -1;
-static gint ett_rrc_T_newConfiguration_03 = -1;
+static gint ett_rrc_T_newConfiguration_05 = -1;
static gint ett_rrc_SecondaryCellMIMOparametersFDD_v950ext = -1;
+static gint ett_rrc_SecondaryCellMIMOparametersFDD_r10 = -1;
+static gint ett_rrc_T_newConfiguration_06 = -1;
static gint ett_rrc_ServingCellChangeParameters = -1;
static gint ett_rrc_SF256_AndCodeNumber = -1;
static gint ett_rrc_SF512_AndCodeNumber = -1;
@@ -11983,6 +12650,7 @@ static gint ett_rrc_SFN_TimeInfo = -1;
static gint ett_rrc_SPS_Information_TDD128_r8 = -1;
static gint ett_rrc_SSDT_Information = -1;
static gint ett_rrc_SSDT_Information_r4 = -1;
+static gint ett_rrc_StandaloneMidambleInfo_TDD128 = -1;
static gint ett_rrc_SynchronisationParameters_r4 = -1;
static gint ett_rrc_T_sync_UL_CodesBitmap = -1;
static gint ett_rrc_Sync_UL_Codes_Bitmap = -1;
@@ -11991,6 +12659,7 @@ static gint ett_rrc_SYNC_UL_Info_r4 = -1;
static gint ett_rrc_SYNC_UL_InfoForE_RUCCH = -1;
static gint ett_rrc_TargetCellPreconfigInfo = -1;
static gint ett_rrc_TargetCellPreconfigInfo_r9 = -1;
+static gint ett_rrc_TargetCellPreconfigInfo_r10 = -1;
static gint ett_rrc_TDD_MBSFNInformation = -1;
static gint ett_rrc_TDD_MBSFNTSlotInfo = -1;
static gint ett_rrc_TDD_PRACH_CCodeList = -1;
@@ -12005,13 +12674,21 @@ static gint ett_rrc_T_activate = -1;
static gint ett_rrc_TGP_Sequence_r8 = -1;
static gint ett_rrc_T_tgps_Status_01 = -1;
static gint ett_rrc_T_activate_01 = -1;
+static gint ett_rrc_TGP_Sequence_r10 = -1;
+static gint ett_rrc_T_tgps_Status_02 = -1;
+static gint ett_rrc_T_activate_02 = -1;
static gint ett_rrc_TGP_SequenceList = -1;
static gint ett_rrc_TGP_SequenceList_r8 = -1;
+static gint ett_rrc_TGP_SequenceList_r10 = -1;
static gint ett_rrc_TGP_SequenceShort = -1;
-static gint ett_rrc_T_tgps_Status_02 = -1;
-static gint ett_rrc_T_activate_02 = -1;
+static gint ett_rrc_T_tgps_Status_03 = -1;
+static gint ett_rrc_T_activate_03 = -1;
+static gint ett_rrc_TGP_SequenceShort_r10 = -1;
+static gint ett_rrc_T_tgps_Status_04 = -1;
+static gint ett_rrc_T_activate_04 = -1;
static gint ett_rrc_TGPS_ConfigurationParams = -1;
static gint ett_rrc_TGPS_ConfigurationParams_r8 = -1;
+static gint ett_rrc_TGPS_ConfigurationParams_r10 = -1;
static gint ett_rrc_TimeInfo = -1;
static gint ett_rrc_TimeslotList = -1;
static gint ett_rrc_TimeslotList_r4 = -1;
@@ -12024,14 +12701,14 @@ static gint ett_rrc_UL_16QAM_Config = -1;
static gint ett_rrc_UL_16QAM_Settings = -1;
static gint ett_rrc_UL_CCTrCH = -1;
static gint ett_rrc_UL_CCTrCH_r4 = -1;
-static gint ett_rrc_T_tddOption_17 = -1;
-static gint ett_rrc_T_tdd384_31 = -1;
-static gint ett_rrc_T_tdd128_47 = -1;
-static gint ett_rrc_UL_CCTrCH_r7 = -1;
static gint ett_rrc_T_tddOption_18 = -1;
static gint ett_rrc_T_tdd384_32 = -1;
-static gint ett_rrc_T_tdd768_17 = -1;
-static gint ett_rrc_T_tdd128_48 = -1;
+static gint ett_rrc_T_tdd128_49 = -1;
+static gint ett_rrc_UL_CCTrCH_r7 = -1;
+static gint ett_rrc_T_tddOption_19 = -1;
+static gint ett_rrc_T_tdd384_33 = -1;
+static gint ett_rrc_T_tdd768_18 = -1;
+static gint ett_rrc_T_tdd128_50 = -1;
static gint ett_rrc_UL_CCTrCHList = -1;
static gint ett_rrc_UL_CCTrCHList_r4 = -1;
static gint ett_rrc_UL_CCTrCHList_r7 = -1;
@@ -12047,115 +12724,121 @@ static gint ett_rrc_UL_DL_Mode = -1;
static gint ett_rrc_T_ul_and_dl = -1;
static gint ett_rrc_UL_DPCH_CodeInfoForCommonEDCH = -1;
static gint ett_rrc_UL_DPCH_Info = -1;
-static gint ett_rrc_T_modeSpecificInfo_73 = -1;
-static gint ett_rrc_T_fdd_104 = -1;
-static gint ett_rrc_T_tdd_57 = -1;
+static gint ett_rrc_T_modeSpecificInfo_76 = -1;
+static gint ett_rrc_T_fdd_107 = -1;
+static gint ett_rrc_T_tdd_60 = -1;
static gint ett_rrc_UL_DPCH_Info_r4 = -1;
-static gint ett_rrc_T_modeSpecificInfo_74 = -1;
-static gint ett_rrc_T_fdd_105 = -1;
-static gint ett_rrc_T_tdd_58 = -1;
+static gint ett_rrc_T_modeSpecificInfo_77 = -1;
+static gint ett_rrc_T_fdd_108 = -1;
+static gint ett_rrc_T_tdd_61 = -1;
static gint ett_rrc_UL_DPCH_Info_r5 = -1;
-static gint ett_rrc_T_modeSpecificInfo_75 = -1;
-static gint ett_rrc_T_fdd_106 = -1;
-static gint ett_rrc_T_tdd_59 = -1;
+static gint ett_rrc_T_modeSpecificInfo_78 = -1;
+static gint ett_rrc_T_fdd_109 = -1;
+static gint ett_rrc_T_tdd_62 = -1;
static gint ett_rrc_UL_DPCH_Info_r6 = -1;
-static gint ett_rrc_T_modeSpecificInfo_76 = -1;
-static gint ett_rrc_T_fdd_107 = -1;
+static gint ett_rrc_T_modeSpecificInfo_79 = -1;
+static gint ett_rrc_T_fdd_110 = -1;
static gint ett_rrc_T_dpdchPresence = -1;
static gint ett_rrc_T_present_02 = -1;
static gint ett_rrc_T_notPresent = -1;
-static gint ett_rrc_T_tdd_60 = -1;
+static gint ett_rrc_T_tdd_63 = -1;
static gint ett_rrc_UL_DPCH_Info_r7 = -1;
-static gint ett_rrc_T_modeSpecificInfo_77 = -1;
-static gint ett_rrc_T_fdd_108 = -1;
+static gint ett_rrc_T_modeSpecificInfo_80 = -1;
+static gint ett_rrc_T_fdd_111 = -1;
static gint ett_rrc_T_dpdchPresence_01 = -1;
static gint ett_rrc_T_present_03 = -1;
static gint ett_rrc_T_notPresent_01 = -1;
-static gint ett_rrc_T_tdd_61 = -1;
+static gint ett_rrc_T_tdd_64 = -1;
static gint ett_rrc_UL_DPCH_InfoPostFDD = -1;
static gint ett_rrc_UL_DPCH_InfoPostTDD = -1;
static gint ett_rrc_UL_DPCH_InfoPostTDD_LCR_r4 = -1;
static gint ett_rrc_UL_DPCH_InfoPredef = -1;
-static gint ett_rrc_T_modeSpecificInfo_78 = -1;
-static gint ett_rrc_T_fdd_109 = -1;
-static gint ett_rrc_T_tdd_62 = -1;
+static gint ett_rrc_T_modeSpecificInfo_81 = -1;
+static gint ett_rrc_T_fdd_112 = -1;
+static gint ett_rrc_T_tdd_65 = -1;
static gint ett_rrc_UL_DPCH_InfoPredef_v770ext = -1;
-static gint ett_rrc_T_modeSpecificInfo_79 = -1;
-static gint ett_rrc_T_fdd_110 = -1;
+static gint ett_rrc_T_modeSpecificInfo_82 = -1;
+static gint ett_rrc_T_fdd_113 = -1;
static gint ett_rrc_UL_DPCH_PowerControlInfo = -1;
-static gint ett_rrc_T_fdd_111 = -1;
-static gint ett_rrc_T_tdd_63 = -1;
+static gint ett_rrc_T_fdd_114 = -1;
+static gint ett_rrc_T_tdd_66 = -1;
static gint ett_rrc_T_ul_OL_PC_Signalling = -1;
static gint ett_rrc_T_individuallySignalled = -1;
static gint ett_rrc_UL_DPCH_PowerControlInfo_r4 = -1;
-static gint ett_rrc_T_fdd_112 = -1;
-static gint ett_rrc_T_tdd_64 = -1;
+static gint ett_rrc_T_fdd_115 = -1;
+static gint ett_rrc_T_tdd_67 = -1;
static gint ett_rrc_T_ul_OL_PC_Signalling_01 = -1;
static gint ett_rrc_T_individuallySignalled_01 = -1;
-static gint ett_rrc_T_tddOption_19 = -1;
-static gint ett_rrc_T_tdd384_33 = -1;
-static gint ett_rrc_T_tdd128_49 = -1;
+static gint ett_rrc_T_tddOption_20 = -1;
+static gint ett_rrc_T_tdd384_34 = -1;
+static gint ett_rrc_T_tdd128_51 = -1;
static gint ett_rrc_UL_DPCH_PowerControlInfo_r5 = -1;
-static gint ett_rrc_T_fdd_113 = -1;
-static gint ett_rrc_T_tdd_65 = -1;
+static gint ett_rrc_T_fdd_116 = -1;
+static gint ett_rrc_T_tdd_68 = -1;
static gint ett_rrc_T_ul_OL_PC_Signalling_02 = -1;
static gint ett_rrc_T_individuallySignalled_02 = -1;
-static gint ett_rrc_T_tddOption_20 = -1;
-static gint ett_rrc_T_tdd384_34 = -1;
-static gint ett_rrc_T_tdd128_50 = -1;
+static gint ett_rrc_T_tddOption_21 = -1;
+static gint ett_rrc_T_tdd384_35 = -1;
+static gint ett_rrc_T_tdd128_52 = -1;
static gint ett_rrc_UL_DPCH_PowerControlInfo_r6 = -1;
-static gint ett_rrc_T_fdd_114 = -1;
-static gint ett_rrc_T_tdd_66 = -1;
+static gint ett_rrc_T_fdd_117 = -1;
+static gint ett_rrc_T_tdd_69 = -1;
static gint ett_rrc_T_ul_OL_PC_Signalling_03 = -1;
static gint ett_rrc_T_individuallySignalled_03 = -1;
-static gint ett_rrc_T_tddOption_21 = -1;
-static gint ett_rrc_T_tdd384_35 = -1;
-static gint ett_rrc_T_tdd128_51 = -1;
+static gint ett_rrc_T_tddOption_22 = -1;
+static gint ett_rrc_T_tdd384_36 = -1;
+static gint ett_rrc_T_tdd128_53 = -1;
static gint ett_rrc_UL_DPCH_PowerControlInfo_r7 = -1;
-static gint ett_rrc_T_fdd_115 = -1;
-static gint ett_rrc_T_tdd_67 = -1;
+static gint ett_rrc_T_fdd_118 = -1;
+static gint ett_rrc_T_tdd_70 = -1;
static gint ett_rrc_T_ul_OL_PC_Signalling_04 = -1;
static gint ett_rrc_T_individuallySignalled_04 = -1;
-static gint ett_rrc_T_tddOption_22 = -1;
-static gint ett_rrc_T_tdd384_36 = -1;
-static gint ett_rrc_T_tdd768_18 = -1;
-static gint ett_rrc_T_tdd128_52 = -1;
+static gint ett_rrc_T_tddOption_23 = -1;
+static gint ett_rrc_T_tdd384_37 = -1;
+static gint ett_rrc_T_tdd768_19 = -1;
+static gint ett_rrc_T_tdd128_54 = -1;
static gint ett_rrc_UL_DPCHpowerControlInfoForCommonEDCH = -1;
static gint ett_rrc_UL_DPCH_PowerControlInfoPostFDD = -1;
static gint ett_rrc_UL_DPCH_PowerControlInfoPostTDD = -1;
static gint ett_rrc_UL_DPCH_PowerControlInfoPostTDD_LCR_r4 = -1;
static gint ett_rrc_UL_DPCH_PowerControlInfoPredef = -1;
-static gint ett_rrc_T_fdd_116 = -1;
-static gint ett_rrc_T_tdd_68 = -1;
+static gint ett_rrc_T_fdd_119 = -1;
+static gint ett_rrc_T_tdd_71 = -1;
static gint ett_rrc_UL_EDCH_Information_ext = -1;
-static gint ett_rrc_T_tdd_69 = -1;
+static gint ett_rrc_T_tdd_72 = -1;
static gint ett_rrc_UL_EDCH_Information_r6 = -1;
static gint ett_rrc_UL_EDCH_Information_r7 = -1;
-static gint ett_rrc_T_modeSpecificInfo_80 = -1;
-static gint ett_rrc_T_fdd_117 = -1;
-static gint ett_rrc_T_tdd_70 = -1;
+static gint ett_rrc_T_modeSpecificInfo_83 = -1;
+static gint ett_rrc_T_fdd_120 = -1;
+static gint ett_rrc_T_tdd_73 = -1;
static gint ett_rrc_UL_EDCH_Information_r8 = -1;
-static gint ett_rrc_T_modeSpecificInfo_81 = -1;
-static gint ett_rrc_T_fdd_118 = -1;
-static gint ett_rrc_T_tdd_71 = -1;
+static gint ett_rrc_T_modeSpecificInfo_84 = -1;
+static gint ett_rrc_T_fdd_121 = -1;
+static gint ett_rrc_T_tdd_74 = -1;
static gint ett_rrc_UL_EDCH_Information_r9 = -1;
-static gint ett_rrc_T_modeSpecificInfo_82 = -1;
-static gint ett_rrc_T_fdd_119 = -1;
-static gint ett_rrc_T_tdd_72 = -1;
+static gint ett_rrc_T_modeSpecificInfo_85 = -1;
+static gint ett_rrc_T_fdd_122 = -1;
+static gint ett_rrc_T_tdd_75 = -1;
+static gint ett_rrc_UL_MulticarrierEDCH_InfolistItem_TDD128 = -1;
+static gint ett_rrc_UL_MulticarrierEDCH_Infolist_TDD128 = -1;
+static gint ett_rrc_UL_MulticarrierEDCH_Deletelist_TDD128 = -1;
+static gint ett_rrc_UL_MulticarrierEDCHInfo_TDD128 = -1;
+static gint ett_rrc_T_configuration_info = -1;
+static gint ett_rrc_UL_MulticarrierEDCH_NewConfigurationInfo_TDD128 = -1;
static gint ett_rrc_UL_SynchronisationParameters_r4 = -1;
static gint ett_rrc_UL_TimingAdvanceControl = -1;
static gint ett_rrc_T_enabled = -1;
static gint ett_rrc_UL_TimingAdvanceControl_r4 = -1;
static gint ett_rrc_T_enabled_01 = -1;
-static gint ett_rrc_T_tddOption_23 = -1;
-static gint ett_rrc_T_tdd384_37 = -1;
-static gint ett_rrc_T_tdd128_53 = -1;
-static gint ett_rrc_UL_TimingAdvanceControl_r7 = -1;
-static gint ett_rrc_T_enabled_02 = -1;
static gint ett_rrc_T_tddOption_24 = -1;
static gint ett_rrc_T_tdd384_38 = -1;
-static gint ett_rrc_T_tdd768_19 = -1;
-static gint ett_rrc_T_tdd128_54 = -1;
+static gint ett_rrc_T_tdd128_55 = -1;
+static gint ett_rrc_UL_TimingAdvanceControl_r7 = -1;
+static gint ett_rrc_T_enabled_02 = -1;
+static gint ett_rrc_T_tddOption_25 = -1;
+static gint ett_rrc_T_tdd384_39 = -1;
+static gint ett_rrc_T_tdd768_20 = -1;
+static gint ett_rrc_T_tdd128_56 = -1;
static gint ett_rrc_UL_TimingAdvanceControl_LCR_r4 = -1;
static gint ett_rrc_T_enabled_03 = -1;
static gint ett_rrc_UL_TS_ChannelisationCodeList = -1;
@@ -12199,7 +12882,11 @@ static gint ett_rrc_T_additionalTimeslots_07 = -1;
static gint ett_rrc_T_consecutive_05 = -1;
static gint ett_rrc_SEQUENCE_SIZE_1_maxTS_LCR_1_OF_UplinkAdditionalTimeslots_LCR_r7 = -1;
static gint ett_rrc_AcquisitionSatInfo = -1;
+static gint ett_rrc_AcquisitionSatInfo_va40ext = -1;
+static gint ett_rrc_AcquisitionSatInfo_r10 = -1;
static gint ett_rrc_AcquisitionSatInfoList = -1;
+static gint ett_rrc_AcquisitionSatInfoList_va40ext = -1;
+static gint ett_rrc_AcquisitionSatInfoList_r10 = -1;
static gint ett_rrc_AdditionalMeasurementID_List = -1;
static gint ett_rrc_AdditionalMeasurementID_List_r9 = -1;
static gint ett_rrc_AlmanacSatInfo = -1;
@@ -12215,6 +12902,8 @@ static gint ett_rrc_AuxInfoGANSS_ID1_element = -1;
static gint ett_rrc_AuxInfoGANSS_ID3 = -1;
static gint ett_rrc_AuxInfoGANSS_ID3_element = -1;
static gint ett_rrc_AzimuthAndElevation = -1;
+static gint ett_rrc_AzimuthAndElevation_va40ext = -1;
+static gint ett_rrc_AzimuthAndElevation_r10 = -1;
static gint ett_rrc_BadSatList = -1;
static gint ett_rrc_BLER_MeasurementResults = -1;
static gint ett_rrc_BLER_MeasurementResultsList = -1;
@@ -12227,86 +12916,86 @@ static gint ett_rrc_CellDCHMeasOccasionPattern_LCR = -1;
static gint ett_rrc_CellDCHMeasOccasionInfo_TDD128_r9 = -1;
static gint ett_rrc_SEQUENCE_SIZE_1_maxMeasOccasionPattern_OF_CellDCHMeasOccasionPattern_LCR = -1;
static gint ett_rrc_CellInfo = -1;
-static gint ett_rrc_T_modeSpecificInfo_83 = -1;
-static gint ett_rrc_T_fdd_120 = -1;
-static gint ett_rrc_T_tdd_73 = -1;
-static gint ett_rrc_CellInfo_r4 = -1;
-static gint ett_rrc_T_modeSpecificInfo_84 = -1;
-static gint ett_rrc_T_fdd_121 = -1;
-static gint ett_rrc_T_tdd_74 = -1;
-static gint ett_rrc_CellInfo_LCR_r8_ext = -1;
-static gint ett_rrc_CellInfo_r9 = -1;
-static gint ett_rrc_T_modeSpecificInfo_85 = -1;
-static gint ett_rrc_T_fdd_122 = -1;
-static gint ett_rrc_T_tdd_75 = -1;
-static gint ett_rrc_CellInfoSI_RSCP = -1;
static gint ett_rrc_T_modeSpecificInfo_86 = -1;
static gint ett_rrc_T_fdd_123 = -1;
static gint ett_rrc_T_tdd_76 = -1;
-static gint ett_rrc_CellInfoSI_RSCP_LCR_r4 = -1;
-static gint ett_rrc_CellInfoSI_ECN0 = -1;
+static gint ett_rrc_CellInfo_r4 = -1;
static gint ett_rrc_T_modeSpecificInfo_87 = -1;
static gint ett_rrc_T_fdd_124 = -1;
static gint ett_rrc_T_tdd_77 = -1;
-static gint ett_rrc_CellInfoSI_ECN0_LCR_r4 = -1;
-static gint ett_rrc_CellInfoSI_HCS_RSCP = -1;
+static gint ett_rrc_CellInfo_LCR_r8_ext = -1;
+static gint ett_rrc_CellInfo_r9 = -1;
static gint ett_rrc_T_modeSpecificInfo_88 = -1;
static gint ett_rrc_T_fdd_125 = -1;
static gint ett_rrc_T_tdd_78 = -1;
-static gint ett_rrc_CellInfoSI_HCS_RSCP_LCR_r4 = -1;
-static gint ett_rrc_CellInfoSI_HCS_ECN0 = -1;
+static gint ett_rrc_CellInfoSI_RSCP = -1;
static gint ett_rrc_T_modeSpecificInfo_89 = -1;
static gint ett_rrc_T_fdd_126 = -1;
static gint ett_rrc_T_tdd_79 = -1;
-static gint ett_rrc_CellInfoSI_HCS_ECN0_LCR_r4 = -1;
-static gint ett_rrc_CellMeasuredResults = -1;
+static gint ett_rrc_CellInfoSI_RSCP_LCR_r4 = -1;
+static gint ett_rrc_CellInfoSI_ECN0 = -1;
static gint ett_rrc_T_modeSpecificInfo_90 = -1;
static gint ett_rrc_T_fdd_127 = -1;
static gint ett_rrc_T_tdd_80 = -1;
-static gint ett_rrc_CellMeasuredResults_r9 = -1;
+static gint ett_rrc_CellInfoSI_ECN0_LCR_r4 = -1;
+static gint ett_rrc_CellInfoSI_HCS_RSCP = -1;
static gint ett_rrc_T_modeSpecificInfo_91 = -1;
static gint ett_rrc_T_fdd_128 = -1;
static gint ett_rrc_T_tdd_81 = -1;
-static gint ett_rrc_CellMeasuredResults_v920ext = -1;
-static gint ett_rrc_CellMeasurementEventResults = -1;
-static gint ett_rrc_SEQUENCE_SIZE_1_maxCellMeas_OF_PrimaryCPICH_Info = -1;
-static gint ett_rrc_SEQUENCE_SIZE_1_maxCellMeas_OF_PrimaryCCPCH_Info = -1;
-static gint ett_rrc_CellMeasurementEventResultsOnSecUlFreq = -1;
-static gint ett_rrc_SEQUENCE_SIZE_1_maxCellMeasOnSecULFreq_OF_PrimaryCPICH_Info = -1;
-static gint ett_rrc_CellMeasurementEventResults_LCR_r4 = -1;
-static gint ett_rrc_CellReportingQuantities = -1;
+static gint ett_rrc_CellInfoSI_HCS_RSCP_LCR_r4 = -1;
+static gint ett_rrc_CellInfoSI_HCS_ECN0 = -1;
static gint ett_rrc_T_modeSpecificInfo_92 = -1;
static gint ett_rrc_T_fdd_129 = -1;
static gint ett_rrc_T_tdd_82 = -1;
-static gint ett_rrc_CellSelectReselectInfoMC_RSCP = -1;
+static gint ett_rrc_CellInfoSI_HCS_ECN0_LCR_r4 = -1;
+static gint ett_rrc_CellMeasuredResults = -1;
static gint ett_rrc_T_modeSpecificInfo_93 = -1;
static gint ett_rrc_T_fdd_130 = -1;
static gint ett_rrc_T_tdd_83 = -1;
-static gint ett_rrc_T_gsm_02 = -1;
-static gint ett_rrc_CellSelectReselectInfoSIB_11_12 = -1;
+static gint ett_rrc_CellMeasuredResults_r9 = -1;
static gint ett_rrc_T_modeSpecificInfo_94 = -1;
static gint ett_rrc_T_fdd_131 = -1;
static gint ett_rrc_T_tdd_84 = -1;
-static gint ett_rrc_T_gsm_03 = -1;
-static gint ett_rrc_CellSelectReselectInfoSIB_11_12_RSCP = -1;
+static gint ett_rrc_CellMeasuredResults_v920ext = -1;
+static gint ett_rrc_CellMeasurementEventResults = -1;
+static gint ett_rrc_SEQUENCE_SIZE_1_maxCellMeas_OF_PrimaryCPICH_Info = -1;
+static gint ett_rrc_SEQUENCE_SIZE_1_maxCellMeas_OF_PrimaryCCPCH_Info = -1;
+static gint ett_rrc_CellMeasurementEventResultsOnSecUlFreq = -1;
+static gint ett_rrc_SEQUENCE_SIZE_1_maxCellMeasOnSecULFreq_OF_PrimaryCPICH_Info = -1;
+static gint ett_rrc_CellMeasurementEventResults_LCR_r4 = -1;
+static gint ett_rrc_CellReportingQuantities = -1;
static gint ett_rrc_T_modeSpecificInfo_95 = -1;
static gint ett_rrc_T_fdd_132 = -1;
static gint ett_rrc_T_tdd_85 = -1;
-static gint ett_rrc_T_gsm_04 = -1;
-static gint ett_rrc_CellSelectReselectInfoSIB_11_12_ECN0 = -1;
+static gint ett_rrc_CellSelectReselectInfoMC_RSCP = -1;
static gint ett_rrc_T_modeSpecificInfo_96 = -1;
static gint ett_rrc_T_fdd_133 = -1;
static gint ett_rrc_T_tdd_86 = -1;
-static gint ett_rrc_T_gsm_05 = -1;
-static gint ett_rrc_CellSelectReselectInfoSIB_11_12_HCS_RSCP = -1;
+static gint ett_rrc_T_gsm_02 = -1;
+static gint ett_rrc_CellSelectReselectInfoSIB_11_12 = -1;
static gint ett_rrc_T_modeSpecificInfo_97 = -1;
static gint ett_rrc_T_fdd_134 = -1;
static gint ett_rrc_T_tdd_87 = -1;
-static gint ett_rrc_T_gsm_06 = -1;
-static gint ett_rrc_CellSelectReselectInfoSIB_11_12_HCS_ECN0 = -1;
+static gint ett_rrc_T_gsm_03 = -1;
+static gint ett_rrc_CellSelectReselectInfoSIB_11_12_RSCP = -1;
static gint ett_rrc_T_modeSpecificInfo_98 = -1;
static gint ett_rrc_T_fdd_135 = -1;
static gint ett_rrc_T_tdd_88 = -1;
+static gint ett_rrc_T_gsm_04 = -1;
+static gint ett_rrc_CellSelectReselectInfoSIB_11_12_ECN0 = -1;
+static gint ett_rrc_T_modeSpecificInfo_99 = -1;
+static gint ett_rrc_T_fdd_136 = -1;
+static gint ett_rrc_T_tdd_89 = -1;
+static gint ett_rrc_T_gsm_05 = -1;
+static gint ett_rrc_CellSelectReselectInfoSIB_11_12_HCS_RSCP = -1;
+static gint ett_rrc_T_modeSpecificInfo_100 = -1;
+static gint ett_rrc_T_fdd_137 = -1;
+static gint ett_rrc_T_tdd_90 = -1;
+static gint ett_rrc_T_gsm_06 = -1;
+static gint ett_rrc_CellSelectReselectInfoSIB_11_12_HCS_ECN0 = -1;
+static gint ett_rrc_T_modeSpecificInfo_101 = -1;
+static gint ett_rrc_T_fdd_138 = -1;
+static gint ett_rrc_T_tdd_91 = -1;
static gint ett_rrc_T_gsm_07 = -1;
static gint ett_rrc_CellSelectReselectInfo_v590ext = -1;
static gint ett_rrc_CellSelectReselectInfoPCHFACH_v5b0ext = -1;
@@ -12316,16 +13005,16 @@ static gint ett_rrc_CellsForInterRATMeasList = -1;
static gint ett_rrc_CellsForIntraFreqMeasList = -1;
static gint ett_rrc_CellsForIntraFreqMeasListOnSecULFreq = -1;
static gint ett_rrc_CellSynchronisationInfo = -1;
-static gint ett_rrc_T_modeSpecificInfo_99 = -1;
-static gint ett_rrc_T_fdd_136 = -1;
-static gint ett_rrc_T_tdd_89 = -1;
+static gint ett_rrc_T_modeSpecificInfo_102 = -1;
+static gint ett_rrc_T_fdd_139 = -1;
+static gint ett_rrc_T_tdd_92 = -1;
static gint ett_rrc_CellToReport = -1;
static gint ett_rrc_CellToReportList = -1;
static gint ett_rrc_CNAVclockModel = -1;
static gint ett_rrc_CountC_SFN_Frame_difference = -1;
static gint ett_rrc_CSGCellInfo = -1;
-static gint ett_rrc_T_modeSpecificInfo_100 = -1;
-static gint ett_rrc_T_fdd_137 = -1;
+static gint ett_rrc_T_modeSpecificInfo_103 = -1;
+static gint ett_rrc_T_fdd_140 = -1;
static gint ett_rrc_CSGCellInfoList = -1;
static gint ett_rrc_CSGInterFreqCellInfo = -1;
static gint ett_rrc_CSGInterFreqCellInfoList = -1;
@@ -12408,16 +13097,22 @@ static gint ett_rrc_Event1f_r6 = -1;
static gint ett_rrc_Event1j_r6 = -1;
static gint ett_rrc_Event2a = -1;
static gint ett_rrc_Event2a_r6 = -1;
+static gint ett_rrc_Event2a_r10 = -1;
static gint ett_rrc_Event2b = -1;
static gint ett_rrc_Event2b_r6 = -1;
+static gint ett_rrc_Event2b_r10 = -1;
static gint ett_rrc_Event2c = -1;
static gint ett_rrc_Event2c_r6 = -1;
+static gint ett_rrc_Event2c_r10 = -1;
static gint ett_rrc_Event2d = -1;
static gint ett_rrc_Event2d_r6 = -1;
+static gint ett_rrc_Event2d_r10 = -1;
static gint ett_rrc_Event2e = -1;
static gint ett_rrc_Event2e_r6 = -1;
+static gint ett_rrc_Event2e_r10 = -1;
static gint ett_rrc_Event2f = -1;
static gint ett_rrc_Event2f_r6 = -1;
+static gint ett_rrc_Event2f_r10 = -1;
static gint ett_rrc_Event3a = -1;
static gint ett_rrc_Event3b = -1;
static gint ett_rrc_Event3c = -1;
@@ -12425,6 +13120,7 @@ static gint ett_rrc_Event3d = -1;
static gint ett_rrc_EventResults = -1;
static gint ett_rrc_EventResults_v770ext = -1;
static gint ett_rrc_EventResults_v860ext = -1;
+static gint ett_rrc_EventResults_va40ext = -1;
static gint ett_rrc_EventResultsOnSecUlFreq = -1;
static gint ett_rrc_ExtraDoppler = -1;
static gint ett_rrc_ExtraDopplerInfo = -1;
@@ -12445,11 +13141,15 @@ static gint ett_rrc_GANSSGenericData_v860ext = -1;
static gint ett_rrc_GANSSGenericData_r8 = -1;
static gint ett_rrc_GANSSGenericData_r9 = -1;
static gint ett_rrc_GANSSGenericData_v920ext = -1;
+static gint ett_rrc_GANSSGenericData_va40ext = -1;
+static gint ett_rrc_GANSSGenericData_r10 = -1;
static gint ett_rrc_GANSSGenericDataList = -1;
static gint ett_rrc_GANSSGenericDataList_v860ext = -1;
static gint ett_rrc_GANSSGenericDataList_r8 = -1;
static gint ett_rrc_GANSSGenericDataList_r9 = -1;
static gint ett_rrc_GANSSGenericDataList_v920ext = -1;
+static gint ett_rrc_GANSSGenericDataList_va40ext = -1;
+static gint ett_rrc_GANSSGenericDataList_r10 = -1;
static gint ett_rrc_GANSSGenericMeasurementInfo = -1;
static gint ett_rrc_GANSSGenericMeasurementInfo_item = -1;
static gint ett_rrc_GANSSGenericMeasurementInfo_v860ext = -1;
@@ -12470,8 +13170,14 @@ static gint ett_rrc_T_ganssAddADchoices = -1;
static gint ett_rrc_GanssRequestedGenericAssistanceDataList = -1;
static gint ett_rrc_GanssRequestedGenericAssistanceDataList_v860ext = -1;
static gint ett_rrc_GANSSSatelliteInformation = -1;
+static gint ett_rrc_GANSSSatelliteInformation_va40ext = -1;
+static gint ett_rrc_GANSSSatelliteInformation_r10 = -1;
static gint ett_rrc_GANSSSatelliteInformationList = -1;
+static gint ett_rrc_GANSSSatelliteInformationList_va40ext = -1;
+static gint ett_rrc_GANSSSatelliteInformationList_r10 = -1;
static gint ett_rrc_GANSSTimeModelsList = -1;
+static gint ett_rrc_GANSSTimeModelsList_va40ext = -1;
+static gint ett_rrc_GANSSTimeModelsList_r10 = -1;
static gint ett_rrc_GANSS_SAT_Info_Almanac_GLOkp = -1;
static gint ett_rrc_GANSS_SAT_Info_Almanac_Kp = -1;
static gint ett_rrc_GANSS_SAT_Info_Almanac_MIDIkp = -1;
@@ -12519,9 +13225,10 @@ static gint ett_rrc_InterFreqCellInfoList = -1;
static gint ett_rrc_InterFreqCellInfoList_r4 = -1;
static gint ett_rrc_InterFreqCellInfoList_r8 = -1;
static gint ett_rrc_InterFreqCellInfoList_r9 = -1;
+static gint ett_rrc_InterFreqCellInfoList_r10 = -1;
static gint ett_rrc_InterFreqSIAcquisition = -1;
-static gint ett_rrc_T_modeSpecificInfo_101 = -1;
-static gint ett_rrc_T_fdd_138 = -1;
+static gint ett_rrc_T_modeSpecificInfo_104 = -1;
+static gint ett_rrc_T_fdd_141 = -1;
static gint ett_rrc_InterFreqCellInfoSI_List_RSCP = -1;
static gint ett_rrc_InterFreqCellInfoSI_List_ECN0 = -1;
static gint ett_rrc_InterFreqCellInfoSI_List_HCS_RSCP = -1;
@@ -12536,22 +13243,25 @@ static gint ett_rrc_InterFreqCellMeasuredResultsList = -1;
static gint ett_rrc_InterFreqCellMeasuredResultsList_v920ext = -1;
static gint ett_rrc_InterFreqEvent = -1;
static gint ett_rrc_InterFreqEvent_r6 = -1;
+static gint ett_rrc_InterFreqEvent_r10 = -1;
static gint ett_rrc_InterFreqEventList = -1;
static gint ett_rrc_InterFreqEventList_r6 = -1;
+static gint ett_rrc_InterFreqEventList_r10 = -1;
static gint ett_rrc_InterFrequencyMeasuredResultsList_v590ext = -1;
static gint ett_rrc_Inter_FreqEventCriteria_v590ext = -1;
static gint ett_rrc_Inter_FreqEventCriteriaList_v590ext = -1;
static gint ett_rrc_Intra_FreqEventCriteriaList_v590ext = -1;
static gint ett_rrc_IntraFrequencyMeasuredResultsList_v590ext = -1;
static gint ett_rrc_InterFreqEventResults = -1;
+static gint ett_rrc_InterFreqEventResults_va40ext = -1;
static gint ett_rrc_InterFreqEventResults_LCR_r4_ext = -1;
static gint ett_rrc_InterFreqMeasQuantity = -1;
static gint ett_rrc_T_reportingCriteria = -1;
static gint ett_rrc_T_intraFreqReportingCriteria = -1;
static gint ett_rrc_T_interFreqReportingCriteria = -1;
-static gint ett_rrc_T_modeSpecificInfo_102 = -1;
-static gint ett_rrc_T_fdd_139 = -1;
-static gint ett_rrc_T_tdd_90 = -1;
+static gint ett_rrc_T_modeSpecificInfo_105 = -1;
+static gint ett_rrc_T_fdd_142 = -1;
+static gint ett_rrc_T_tdd_93 = -1;
static gint ett_rrc_InterFreqMeasuredResults = -1;
static gint ett_rrc_InterFreqMeasuredResults_v920ext = -1;
static gint ett_rrc_InterFreqMeasuredResultsList = -1;
@@ -12566,20 +13276,22 @@ static gint ett_rrc_InterFreqMeasurementSysInfo_HCS_RSCP_LCR_r4 = -1;
static gint ett_rrc_InterFreqMeasurementSysInfo_HCS_ECN0_LCR_r4 = -1;
static gint ett_rrc_InterFreqRACHRepCellsList = -1;
static gint ett_rrc_Dummy_InterFreqRACHReportingInfo = -1;
-static gint ett_rrc_T_modeSpecificInfo_103 = -1;
-static gint ett_rrc_T_fdd_140 = -1;
-static gint ett_rrc_T_tdd_91 = -1;
+static gint ett_rrc_T_modeSpecificInfo_106 = -1;
+static gint ett_rrc_T_fdd_143 = -1;
+static gint ett_rrc_T_tdd_94 = -1;
static gint ett_rrc_InterFreqRACHReportingInfo = -1;
-static gint ett_rrc_T_modeSpecificInfo_104 = -1;
-static gint ett_rrc_T_fdd_141 = -1;
-static gint ett_rrc_T_tdd_92 = -1;
+static gint ett_rrc_T_modeSpecificInfo_107 = -1;
+static gint ett_rrc_T_fdd_144 = -1;
+static gint ett_rrc_T_tdd_95 = -1;
static gint ett_rrc_InterFreqReportCriteria = -1;
static gint ett_rrc_InterFreqReportCriteria_r4 = -1;
static gint ett_rrc_InterFreqReportCriteria_r6 = -1;
static gint ett_rrc_InterFreqReportCriteria_r7 = -1;
static gint ett_rrc_InterFreqReportCriteria_r9 = -1;
+static gint ett_rrc_InterFreqReportCriteria_r10 = -1;
static gint ett_rrc_InterFreqReportingCriteria = -1;
static gint ett_rrc_InterFreqReportingCriteria_r6 = -1;
+static gint ett_rrc_InterFreqReportingCriteria_r10 = -1;
static gint ett_rrc_InterFreqReportingQuantity = -1;
static gint ett_rrc_InterFreqRepQuantityRACH_TDDList = -1;
static gint ett_rrc_InterFrequencyMeasurement = -1;
@@ -12588,6 +13300,7 @@ static gint ett_rrc_InterFrequencyMeasurement_r6 = -1;
static gint ett_rrc_InterFrequencyMeasurement_r7 = -1;
static gint ett_rrc_InterFrequencyMeasurement_r8 = -1;
static gint ett_rrc_InterFrequencyMeasurement_r9 = -1;
+static gint ett_rrc_InterFrequencyMeasurement_r10 = -1;
static gint ett_rrc_InterRAT_TargetCellDescription = -1;
static gint ett_rrc_T_technologySpecificInfo = -1;
static gint ett_rrc_T_gsm_08 = -1;
@@ -12635,10 +13348,11 @@ static gint ett_rrc_IntraFreqCellInfoList_r4 = -1;
static gint ett_rrc_IntraFreqCellInfoListInfoOnSecULFreq = -1;
static gint ett_rrc_IntraFreqCellInfoListOnSecULFreq = -1;
static gint ett_rrc_IntraFreqCellInfoList_r9 = -1;
+static gint ett_rrc_IntraFreqCellInfoList_r10 = -1;
static gint ett_rrc_IntraFreqSIAcquisitionInfo = -1;
static gint ett_rrc_IntraFreqSIAcquisition = -1;
-static gint ett_rrc_T_modeSpecificInfo_105 = -1;
-static gint ett_rrc_T_fdd_142 = -1;
+static gint ett_rrc_T_modeSpecificInfo_108 = -1;
+static gint ett_rrc_T_fdd_145 = -1;
static gint ett_rrc_IntraFreqCellInfoSI_List_RSCP = -1;
static gint ett_rrc_IntraFreqCellInfoSI_List_ECN0 = -1;
static gint ett_rrc_IntraFreqCellInfoSI_List_HCS_RSCP = -1;
@@ -12670,9 +13384,9 @@ static gint ett_rrc_SEQUENCE_SIZE_1_maxMeasEventOnSecULFreq_OF_IntraFreqEventCri
static gint ett_rrc_IntraFreqEventResults = -1;
static gint ett_rrc_IntraFreqEventResultsOnSecUlFreq = -1;
static gint ett_rrc_IntraFreqMeasQuantity = -1;
-static gint ett_rrc_T_modeSpecificInfo_106 = -1;
-static gint ett_rrc_T_fdd_143 = -1;
-static gint ett_rrc_T_tdd_93 = -1;
+static gint ett_rrc_T_modeSpecificInfo_109 = -1;
+static gint ett_rrc_T_fdd_146 = -1;
+static gint ett_rrc_T_tdd_96 = -1;
static gint ett_rrc_IntraFreqMeasQuantity_TDDList = -1;
static gint ett_rrc_IntraFreqMeasQuantity_TDD_sib3List = -1;
static gint ett_rrc_IntraFreqMeasuredResultsList = -1;
@@ -12699,16 +13413,60 @@ static gint ett_rrc_IntraFreqReportingCriteria_r9 = -1;
static gint ett_rrc_IntraFreqReportingCriteria_1b_r5 = -1;
static gint ett_rrc_IntraFreqReportingQuantity = -1;
static gint ett_rrc_IntraFreqReportingQuantityForRACH = -1;
-static gint ett_rrc_T_modeSpecificInfo_107 = -1;
-static gint ett_rrc_T_fdd_144 = -1;
-static gint ett_rrc_T_tdd_94 = -1;
+static gint ett_rrc_T_modeSpecificInfo_110 = -1;
+static gint ett_rrc_T_fdd_147 = -1;
+static gint ett_rrc_T_tdd_97 = -1;
static gint ett_rrc_IntraFreqRepQuantityRACH_TDDList = -1;
static gint ett_rrc_IntraFrequencyMeasurement = -1;
static gint ett_rrc_IntraFrequencyMeasurement_r4 = -1;
static gint ett_rrc_IntraFrequencyMeasurement_r6 = -1;
static gint ett_rrc_IntraFrequencyMeasurement_r7 = -1;
static gint ett_rrc_IntraFrequencyMeasurement_r9 = -1;
+static gint ett_rrc_IntraFrequencyMeasurement_r10 = -1;
static gint ett_rrc_IntraFrequencyMeasuredResultsListOnSecULFreq = -1;
+static gint ett_rrc_IntraUTRAANR = -1;
+static gint ett_rrc_LoggedANRConfigurationInfo = -1;
+static gint ett_rrc_LoggedANRReportInfoList = -1;
+static gint ett_rrc_LoggedANRReportInfo = -1;
+static gint ett_rrc_LoggedCellInfo = -1;
+static gint ett_rrc_LoggedEUTRACellInfo = -1;
+static gint ett_rrc_LoggedGSMCellInfo = -1;
+static gint ett_rrc_LoggedMeasurementsConfigurationInfo = -1;
+static gint ett_rrc_T_areaConfiguration = -1;
+static gint ett_rrc_SEQUENCE_SIZE_1_32_OF_CellIdentity = -1;
+static gint ett_rrc_SEQUENCE_SIZE_1_8_OF_LAI = -1;
+static gint ett_rrc_SEQUENCE_SIZE_1_8_OF_RAI = -1;
+static gint ett_rrc_LoggedMeasInterfreqList_FDD = -1;
+static gint ett_rrc_LoggedMeasInterfreqInfo_FDD = -1;
+static gint ett_rrc_SEQUENCE_SIZE_1_maxnumLoggedMeas_OF_LoggedMeasNeighbourInfo_FDD = -1;
+static gint ett_rrc_LoggedMeasInterfreqInfo_TDD128 = -1;
+static gint ett_rrc_LoggedMeasInterRATNeighbourMeas = -1;
+static gint ett_rrc_LoggedMeasIntrafreqNeighbourList_FDD = -1;
+static gint ett_rrc_LoggedMeasNeighbourInfo_FDD = -1;
+static gint ett_rrc_LoggedMeasIntrafreqNeighbourMeasList_TDD128 = -1;
+static gint ett_rrc_LoggedMeasNeighbourMeas_TDD128 = -1;
+static gint ett_rrc_LoggedMeasGSMNeighbourCellsList = -1;
+static gint ett_rrc_LoggedMeasGSMNeighbourCellsinfo = -1;
+static gint ett_rrc_LoggedMeasEUTRAFreqList = -1;
+static gint ett_rrc_LoggedMeasEUTRAFreqInfo = -1;
+static gint ett_rrc_SEQUENCE_SIZE_1_maxnumLoggedMeas_OF_LoggedMeasEUTRAFreqNeighbourInfo = -1;
+static gint ett_rrc_LoggedMeasEUTRAFreqNeighbourInfo = -1;
+static gint ett_rrc_LoggedMeasLocationInfo = -1;
+static gint ett_rrc_LoggedMeasInfo_FDD = -1;
+static gint ett_rrc_LoggedMeasInfo_TDD128 = -1;
+static gint ett_rrc_LoggedMeasInterfreqList_TDD128 = -1;
+static gint ett_rrc_LoggedMeasInterfreqNeighbourList_TDD128 = -1;
+static gint ett_rrc_LoggedMeasReport = -1;
+static gint ett_rrc_LoggedMeasInfoList_FDD = -1;
+static gint ett_rrc_LoggedMeasInfoList_TDD128 = -1;
+static gint ett_rrc_LoggedMeasInfoList = -1;
+static gint ett_rrc_T_modeSpecificInfo_111 = -1;
+static gint ett_rrc_T_fdd_148 = -1;
+static gint ett_rrc_T_tdd_98 = -1;
+static gint ett_rrc_LoggedMeasServingCellMeas_FDD = -1;
+static gint ett_rrc_LoggedMeasServingCellMeas_TDD128 = -1;
+static gint ett_rrc_LoggedUTRACellInfo = -1;
+static gint ett_rrc_LoggingAbsoluteThreshold = -1;
static gint ett_rrc_KeplerianParameters = -1;
static gint ett_rrc_MeasuredResults = -1;
static gint ett_rrc_MeasuredResultsOnSecUlFreq = -1;
@@ -12728,10 +13486,10 @@ static gint ett_rrc_MeasuredResultsList_v860ext = -1;
static gint ett_rrc_MeasuredResultsList_v860ext_item = -1;
static gint ett_rrc_MeasuredResultsOnRACH = -1;
static gint ett_rrc_T_currentCell = -1;
-static gint ett_rrc_T_modeSpecificInfo_108 = -1;
-static gint ett_rrc_T_fdd_145 = -1;
+static gint ett_rrc_T_modeSpecificInfo_112 = -1;
+static gint ett_rrc_T_fdd_149 = -1;
static gint ett_rrc_T_measurementQuantity = -1;
-static gint ett_rrc_T_tdd_95 = -1;
+static gint ett_rrc_T_tdd_99 = -1;
static gint ett_rrc_MeasuredResultsOnRACH_v7g0ext = -1;
static gint ett_rrc_MonitoredCellRACH_List_v7g0ext = -1;
static gint ett_rrc_MeasuredResultsOnRACHinterFreq = -1;
@@ -12747,6 +13505,8 @@ static gint ett_rrc_MeasurementCommand_r8 = -1;
static gint ett_rrc_T_modify_05 = -1;
static gint ett_rrc_MeasurementCommand_r9 = -1;
static gint ett_rrc_T_modify_06 = -1;
+static gint ett_rrc_MeasurementCommand_r10 = -1;
+static gint ett_rrc_T_modify_07 = -1;
static gint ett_rrc_MeasurementControlSysInfo = -1;
static gint ett_rrc_T_use_of_HCS = -1;
static gint ett_rrc_T_hcs_not_used = -1;
@@ -12797,13 +13557,14 @@ static gint ett_rrc_MeasurementType_r6 = -1;
static gint ett_rrc_MeasurementType_r7 = -1;
static gint ett_rrc_MeasurementType_r8 = -1;
static gint ett_rrc_MeasurementType_r9 = -1;
+static gint ett_rrc_MeasurementType_r10 = -1;
static gint ett_rrc_MeasurementValidity = -1;
static gint ett_rrc_MonitoredCellRACH_List = -1;
static gint ett_rrc_MonitoredCellRACH_Result = -1;
-static gint ett_rrc_T_modeSpecificInfo_109 = -1;
-static gint ett_rrc_T_fdd_146 = -1;
+static gint ett_rrc_T_modeSpecificInfo_113 = -1;
+static gint ett_rrc_T_fdd_150 = -1;
static gint ett_rrc_T_measurementQuantity_01 = -1;
-static gint ett_rrc_T_tdd_96 = -1;
+static gint ett_rrc_T_tdd_100 = -1;
static gint ett_rrc_N_CR_T_CRMaxHyst = -1;
static gint ett_rrc_NAVclockModel = -1;
static gint ett_rrc_NavigationModelSatInfo = -1;
@@ -12814,12 +13575,12 @@ static gint ett_rrc_NavModel_NAVKeplerianSet = -1;
static gint ett_rrc_NavModel_SBASecef = -1;
static gint ett_rrc_EphemerisParameter = -1;
static gint ett_rrc_Neighbour = -1;
-static gint ett_rrc_T_modeSpecificInfo_110 = -1;
-static gint ett_rrc_T_fdd_147 = -1;
-static gint ett_rrc_T_tdd_97 = -1;
+static gint ett_rrc_T_modeSpecificInfo_114 = -1;
+static gint ett_rrc_T_fdd_151 = -1;
+static gint ett_rrc_T_tdd_101 = -1;
static gint ett_rrc_Neighbour_v390ext = -1;
-static gint ett_rrc_T_modeSpecificInfo_111 = -1;
-static gint ett_rrc_T_fdd_148 = -1;
+static gint ett_rrc_T_modeSpecificInfo_115 = -1;
+static gint ett_rrc_T_fdd_152 = -1;
static gint ett_rrc_NeighbourList = -1;
static gint ett_rrc_Neighbour_TDD_r7 = -1;
static gint ett_rrc_NeighbourList_TDD_r7 = -1;
@@ -12830,17 +13591,21 @@ static gint ett_rrc_NewInterFreqCell_r4 = -1;
static gint ett_rrc_NewInterFreqCell_v7b0ext = -1;
static gint ett_rrc_NewInterFreqCell_LCR_v8a0ext = -1;
static gint ett_rrc_NewInterFreqCell_r8 = -1;
-static gint ett_rrc_T_modeSpecificInfo_112 = -1;
-static gint ett_rrc_T_tdd128_55 = -1;
+static gint ett_rrc_T_modeSpecificInfo_116 = -1;
+static gint ett_rrc_T_tdd128_57 = -1;
static gint ett_rrc_NewInterFreqCell_r9 = -1;
-static gint ett_rrc_T_modeSpecificInfo_113 = -1;
-static gint ett_rrc_T_tdd128_56 = -1;
+static gint ett_rrc_T_modeSpecificInfo_117 = -1;
+static gint ett_rrc_T_tdd128_58 = -1;
+static gint ett_rrc_NewInterFreqCell_r10 = -1;
+static gint ett_rrc_T_modeSpecificInfo_118 = -1;
+static gint ett_rrc_T_tdd128_59 = -1;
static gint ett_rrc_NewInterFreqCellList = -1;
static gint ett_rrc_NewInterFreqCellList_r4 = -1;
static gint ett_rrc_NewInterFreqCellList_v7b0ext = -1;
static gint ett_rrc_NewInterFreqCellList_LCR_v8a0ext = -1;
static gint ett_rrc_NewInterFreqCellList_r8 = -1;
static gint ett_rrc_NewInterFreqCellList_r9 = -1;
+static gint ett_rrc_NewInterFreqCellList_r10 = -1;
static gint ett_rrc_NewInterFreqCellSI_RSCP = -1;
static gint ett_rrc_NewInterFreqCellSI_ECN0 = -1;
static gint ett_rrc_NewInterFreqCellSI_HCS_RSCP = -1;
@@ -12870,10 +13635,14 @@ static gint ett_rrc_NewInterRATCellList_B = -1;
static gint ett_rrc_NewIntraFreqCell = -1;
static gint ett_rrc_NewIntraFreqCell_r4 = -1;
static gint ett_rrc_NewIntraFreqCell_r9 = -1;
+static gint ett_rrc_NewIntraFreqCell_r10 = -1;
+static gint ett_rrc_T_modeSpecificInfo_119 = -1;
+static gint ett_rrc_T_tdd128_60 = -1;
static gint ett_rrc_NewIntraFreqCellOnSecULFreq = -1;
static gint ett_rrc_NewIntraFreqCellList = -1;
static gint ett_rrc_NewIntraFreqCellList_r4 = -1;
static gint ett_rrc_NewIntraFreqCellList_r9 = -1;
+static gint ett_rrc_NewIntraFreqCellList_r10 = -1;
static gint ett_rrc_NewIntraFreqCell_LCR_v8a0ext = -1;
static gint ett_rrc_NewIntraFreqCellList_LCR_v8a0ext = -1;
static gint ett_rrc_NewIntraFreqCellListOnSecULFreq = -1;
@@ -12895,14 +13664,19 @@ static gint ett_rrc_NewIntraFreqCellSI_List_HCS_RSCP_LCR_r4 = -1;
static gint ett_rrc_NewIntraFreqCellSI_List_HCS_ECN0_LCR_r4 = -1;
static gint ett_rrc_NonUsedFreqParameter = -1;
static gint ett_rrc_NonUsedFreqParameter_r6 = -1;
+static gint ett_rrc_NonUsedFreqParameter_r10 = -1;
+static gint ett_rrc_NonUsedFreq2aParameter_r10 = -1;
static gint ett_rrc_NonUsedFreqParameterList = -1;
static gint ett_rrc_NonUsedFreqParameterList_r6 = -1;
+static gint ett_rrc_NonUsedFreqParameterList_r10 = -1;
+static gint ett_rrc_NonUsedFreq2aParameterList_r10 = -1;
static gint ett_rrc_NonUsedFreqWList_r6 = -1;
static gint ett_rrc_PenaltyTime_RSCP = -1;
static gint ett_rrc_PenaltyTime_ECN0 = -1;
static gint ett_rrc_PeriodicalReportingCriteria = -1;
static gint ett_rrc_PeriodicReportingInfo_1b = -1;
static gint ett_rrc_PeriodicalWithReportingCellStatus = -1;
+static gint ett_rrc_PeriodicalWithReportingCellStatus_r10 = -1;
static gint ett_rrc_PLMNIdentitiesOfNeighbourCells = -1;
static gint ett_rrc_PLMNIdentitiesOfNeighbourCells_v860ext = -1;
static gint ett_rrc_PLMNsOfInterFreqCellsList = -1;
@@ -12919,15 +13693,15 @@ static gint ett_rrc_PLMNsOfInterRATCellsList_item = -1;
static gint ett_rrc_PositionEstimate = -1;
static gint ett_rrc_QualityEventResults = -1;
static gint ett_rrc_QualityMeasuredResults = -1;
-static gint ett_rrc_T_modeSpecificInfo_114 = -1;
-static gint ett_rrc_T_tdd_98 = -1;
+static gint ett_rrc_T_modeSpecificInfo_120 = -1;
+static gint ett_rrc_T_tdd_102 = -1;
static gint ett_rrc_QualityMeasurement = -1;
static gint ett_rrc_QualityReportCriteria = -1;
static gint ett_rrc_QualityReportingCriteria = -1;
static gint ett_rrc_QualityReportingCriteriaSingle = -1;
static gint ett_rrc_QualityReportingQuantity = -1;
-static gint ett_rrc_T_modeSpecificInfo_115 = -1;
-static gint ett_rrc_T_tdd_99 = -1;
+static gint ett_rrc_T_modeSpecificInfo_121 = -1;
+static gint ett_rrc_T_tdd_103 = -1;
static gint ett_rrc_ReferenceCellPosition = -1;
static gint ett_rrc_ReferenceLocation = -1;
static gint ett_rrc_ReferenceLocationGANSS = -1;
@@ -12941,13 +13715,16 @@ static gint ett_rrc_SEQUENCE_SIZE_1_maxCellMeas_OF_IntraFreqCellID = -1;
static gint ett_rrc_RemovedIntraFreqCellListOnSecULFreq = -1;
static gint ett_rrc_SEQUENCE_SIZE_1_maxCellMeasOnSecULFreq_OF_IntraFreqCellIDOnSecULFreq = -1;
static gint ett_rrc_ReportingCellStatus = -1;
+static gint ett_rrc_ReportingCellStatus_r10 = -1;
static gint ett_rrc_ReportingCellStatusOpt = -1;
+static gint ett_rrc_ReportingCellStatusOpt_r10 = -1;
static gint ett_rrc_ReportingInfoForCellDCH = -1;
static gint ett_rrc_ReportingInfoForCellDCH_LCR_r4 = -1;
static gint ett_rrc_ReqDataBitAssistance = -1;
static gint ett_rrc_T_ganssSatelliteInfo = -1;
static gint ett_rrc_RL_AdditionInfoList = -1;
static gint ett_rrc_RL_InformationLists = -1;
+static gint ett_rrc_RSCPforANR = -1;
static gint ett_rrc_SatData = -1;
static gint ett_rrc_SatDataList = -1;
static gint ett_rrc_SatellitesListRelatedData = -1;
@@ -12965,6 +13742,7 @@ static gint ett_rrc_SubFrame1Reserved = -1;
static gint ett_rrc_T_ADVinfo = -1;
static gint ett_rrc_T_ADVinfo_ext = -1;
static gint ett_rrc_T_CRMax = -1;
+static gint ett_rrc_TCE_Id = -1;
static gint ett_rrc_TemporaryOffsetList = -1;
static gint ett_rrc_ThreholdNonUsedFrequency_deltaList = -1;
static gint ett_rrc_TimeslotInfo = -1;
@@ -12977,6 +13755,8 @@ static gint ett_rrc_SEQUENCE_SIZE_1_maxTS_LCR_OF_TimeslotInfo_LCR_r4 = -1;
static gint ett_rrc_TimeslotISCP_List = -1;
static gint ett_rrc_TimeslotListWithISCP = -1;
static gint ett_rrc_TimeslotWithISCP = -1;
+static gint ett_rrc_TraceReference = -1;
+static gint ett_rrc_TraceRecordingSession = -1;
static gint ett_rrc_TrafficVolumeEventParam = -1;
static gint ett_rrc_TrafficVolumeEventResults = -1;
static gint ett_rrc_TrafficVolumeMeasQuantity = -1;
@@ -13000,30 +13780,30 @@ static gint ett_rrc_UE_InternalEventParamList = -1;
static gint ett_rrc_UE_InternalEventResults = -1;
static gint ett_rrc_UE_InternalMeasQuantity = -1;
static gint ett_rrc_UE_InternalMeasuredResults = -1;
-static gint ett_rrc_T_modeSpecificInfo_116 = -1;
-static gint ett_rrc_T_fdd_149 = -1;
-static gint ett_rrc_T_tdd_100 = -1;
+static gint ett_rrc_T_modeSpecificInfo_122 = -1;
+static gint ett_rrc_T_fdd_153 = -1;
+static gint ett_rrc_T_tdd_104 = -1;
static gint ett_rrc_UE_InternalMeasuredResults_LCR_r4 = -1;
static gint ett_rrc_UE_InternalMeasuredResults_v770ext = -1;
-static gint ett_rrc_T_modeSpecificInfo_117 = -1;
+static gint ett_rrc_T_modeSpecificInfo_123 = -1;
static gint ett_rrc_T_tdd384_768_02 = -1;
-static gint ett_rrc_T_tdd128_57 = -1;
+static gint ett_rrc_T_tdd128_61 = -1;
static gint ett_rrc_UE_InternalMeasurement = -1;
static gint ett_rrc_UE_InternalMeasurement_r4 = -1;
static gint ett_rrc_UE_InternalMeasurementSysInfo = -1;
static gint ett_rrc_UE_InternalReportCriteria = -1;
static gint ett_rrc_UE_InternalReportingCriteria = -1;
static gint ett_rrc_UE_InternalReportingQuantity = -1;
-static gint ett_rrc_T_modeSpecificInfo_118 = -1;
-static gint ett_rrc_T_fdd_150 = -1;
-static gint ett_rrc_T_tdd_101 = -1;
+static gint ett_rrc_T_modeSpecificInfo_124 = -1;
+static gint ett_rrc_T_fdd_154 = -1;
+static gint ett_rrc_T_tdd_105 = -1;
static gint ett_rrc_UE_InternalReportingQuantity_r4 = -1;
-static gint ett_rrc_T_modeSpecificInfo_119 = -1;
-static gint ett_rrc_T_fdd_151 = -1;
-static gint ett_rrc_T_tdd_102 = -1;
-static gint ett_rrc_T_tddOption_25 = -1;
-static gint ett_rrc_T_tdd384_39 = -1;
-static gint ett_rrc_T_tdd128_58 = -1;
+static gint ett_rrc_T_modeSpecificInfo_125 = -1;
+static gint ett_rrc_T_fdd_155 = -1;
+static gint ett_rrc_T_tdd_106 = -1;
+static gint ett_rrc_T_tddOption_26 = -1;
+static gint ett_rrc_T_tdd384_40 = -1;
+static gint ett_rrc_T_tdd128_62 = -1;
static gint ett_rrc_UE_RX_TX_ReportEntry = -1;
static gint ett_rrc_UE_RX_TX_ReportEntryList = -1;
static gint ett_rrc_UE_RX_TX_TimeDifferenceType2Info = -1;
@@ -13046,6 +13826,8 @@ static gint ett_rrc_UE_Positioning_GANSS_AddUTCModels = -1;
static gint ett_rrc_UE_Positioning_GANSS_Almanac = -1;
static gint ett_rrc_UE_Positioning_GANSS_Almanac_v860ext = -1;
static gint ett_rrc_UE_Positioning_GANSS_Almanac_r8 = -1;
+static gint ett_rrc_UE_Positioning_GANSS_Almanac_va40ext = -1;
+static gint ett_rrc_UE_Positioning_GANSS_Almanac_r10 = -1;
static gint ett_rrc_UE_Positioning_GANSS_AdditionalAssistanceDataRequest = -1;
static gint ett_rrc_UE_Positioning_GANSS_AdditionalAssistanceDataRequest_v860ext = -1;
static gint ett_rrc_UE_Positioning_GANSS_AddIonoModel = -1;
@@ -13055,6 +13837,8 @@ static gint ett_rrc_UE_Positioning_GANSS_AssistanceData_v860ext = -1;
static gint ett_rrc_UE_Positioning_GANSS_AssistanceData_r8 = -1;
static gint ett_rrc_UE_Positioning_GANSS_AssistanceData_r9 = -1;
static gint ett_rrc_UE_Positioning_GANSS_AssistanceData_v920ext = -1;
+static gint ett_rrc_UE_Positioning_GANSS_AssistanceData_va40ext = -1;
+static gint ett_rrc_UE_Positioning_GANSS_AssistanceData_r10 = -1;
static gint ett_rrc_UE_Positioning_GANSS_AuxiliaryInfo = -1;
static gint ett_rrc_UE_Positioning_GANSS_ClockModel = -1;
static gint ett_rrc_UE_Positioning_GANSS_AddClockModels = -1;
@@ -13070,24 +13854,41 @@ static gint ett_rrc_UE_Positioning_GANSS_OrbitModel = -1;
static gint ett_rrc_UE_Positioning_GANSS_RealTimeIntegrity = -1;
static gint ett_rrc_UE_Positioning_GANSS_RealTimeIntegrity_item = -1;
static gint ett_rrc_UE_Positioning_GANSS_ReferenceMeasurementInfo = -1;
+static gint ett_rrc_UE_Positioning_GANSS_ReferenceMeasurementInfo_va40ext = -1;
+static gint ett_rrc_UE_Positioning_GANSS_ReferenceMeasurementInfo_r10 = -1;
static gint ett_rrc_UE_Positioning_GANSS_ReferenceTime = -1;
static gint ett_rrc_T_utran_ganssreferenceTime = -1;
static gint ett_rrc_T_mode = -1;
-static gint ett_rrc_T_fdd_152 = -1;
-static gint ett_rrc_T_tdd_103 = -1;
+static gint ett_rrc_T_fdd_156 = -1;
+static gint ett_rrc_T_tdd_107 = -1;
+static gint ett_rrc_UE_Positioning_GANSS_ReferenceTime_va40ext = -1;
+static gint ett_rrc_UE_Positioning_GANSS_ReferenceTime_r10 = -1;
+static gint ett_rrc_T_utran_ganssreferenceTime_01 = -1;
+static gint ett_rrc_T_mode_01 = -1;
+static gint ett_rrc_T_fdd_157 = -1;
+static gint ett_rrc_T_tdd_108 = -1;
static gint ett_rrc_UE_Positioning_GANSS_TimeModel = -1;
+static gint ett_rrc_UE_Positioning_GANSS_TimeModel_va40ext = -1;
+static gint ett_rrc_UE_Positioning_GANSS_TimeModel_r10 = -1;
static gint ett_rrc_UE_Positioning_GANSS_TimeModels = -1;
+static gint ett_rrc_UE_Positioning_GANSS_TimeModels_va40ext = -1;
static gint ett_rrc_UE_Positioning_GANSS_UTCModel = -1;
static gint ett_rrc_UE_Positioning_GPS_AcquisitionAssistance = -1;
static gint ett_rrc_UE_Positioning_GPS_AcquisitionAssistance_v770ext = -1;
static gint ett_rrc_UE_Positioning_GPS_AcquisitionAssistance_r7 = -1;
+static gint ett_rrc_UE_Positioning_GPS_AcquisitionAssistance_va40ext = -1;
+static gint ett_rrc_UE_Positioning_GPS_AcquisitionAssistance_r10 = -1;
static gint ett_rrc_UE_Positioning_GPS_AdditionalAssistanceDataRequest = -1;
static gint ett_rrc_UE_Positioning_GPS_Almanac = -1;
+static gint ett_rrc_UE_Positioning_GPS_Almanac_va40ext = -1;
+static gint ett_rrc_UE_Positioning_GPS_Almanac_r10 = -1;
static gint ett_rrc_UE_Positioning_GPS_AssistanceData = -1;
static gint ett_rrc_UE_Positioning_GPS_AssistanceData_v770ext = -1;
static gint ett_rrc_UE_Positioning_GPS_AssistanceData_r7 = -1;
static gint ett_rrc_UE_Positioning_GPS_AssistanceData_r9 = -1;
static gint ett_rrc_UE_Positioning_GPS_AssistanceData_v920ext = -1;
+static gint ett_rrc_UE_Positioning_GPS_AssistanceData_va40ext = -1;
+static gint ett_rrc_UE_Positioning_GPS_AssistanceData_r10 = -1;
static gint ett_rrc_UE_Positioning_GPS_DGPS_Corrections = -1;
static gint ett_rrc_UE_Positioning_GPS_DGPS_Corrections_r9 = -1;
static gint ett_rrc_UE_Positioning_GPS_DGPS_Corrections_v920ext = -1;
@@ -13098,18 +13899,20 @@ static gint ett_rrc_UE_Positioning_GPS_MeasurementResults_v770ext = -1;
static gint ett_rrc_UE_Positioning_GPS_NavigationModel = -1;
static gint ett_rrc_UE_Positioning_GPS_NavModelAddDataReq = -1;
static gint ett_rrc_UE_Positioning_GPS_ReferenceCellInfo = -1;
-static gint ett_rrc_T_modeSpecificInfo_120 = -1;
-static gint ett_rrc_T_fdd_153 = -1;
-static gint ett_rrc_T_tdd_104 = -1;
+static gint ett_rrc_T_modeSpecificInfo_126 = -1;
+static gint ett_rrc_T_fdd_158 = -1;
+static gint ett_rrc_T_tdd_109 = -1;
static gint ett_rrc_UE_Positioning_GPS_ReferenceTime = -1;
static gint ett_rrc_UE_Positioning_GPS_ReferenceTime_v770ext = -1;
static gint ett_rrc_UE_Positioning_GPS_ReferenceTime_r7 = -1;
+static gint ett_rrc_UE_Positioning_GPS_ReferenceTime_va40ext = -1;
+static gint ett_rrc_UE_Positioning_GPS_ReferenceTime_r10 = -1;
static gint ett_rrc_UE_Positioning_GPS_UTC_Model = -1;
static gint ett_rrc_UE_Positioning_IPDL_Parameters = -1;
static gint ett_rrc_UE_Positioning_IPDL_Parameters_r4 = -1;
-static gint ett_rrc_T_modeSpecificInfo_121 = -1;
-static gint ett_rrc_T_fdd_154 = -1;
-static gint ett_rrc_T_tdd_105 = -1;
+static gint ett_rrc_T_modeSpecificInfo_127 = -1;
+static gint ett_rrc_T_fdd_159 = -1;
+static gint ett_rrc_T_tdd_110 = -1;
static gint ett_rrc_UE_Positioning_IPDL_Parameters_TDD_r4_ext = -1;
static gint ett_rrc_UE_Positioning_MeasuredResults = -1;
static gint ett_rrc_UE_Positioning_MeasuredResults_v770ext = -1;
@@ -13121,6 +13924,7 @@ static gint ett_rrc_UE_Positioning_Measurement_r4 = -1;
static gint ett_rrc_UE_Positioning_Measurement_r7 = -1;
static gint ett_rrc_UE_Positioning_Measurement_r8 = -1;
static gint ett_rrc_UE_Positioning_Measurement_r9 = -1;
+static gint ett_rrc_UE_Positioning_Measurement_r10 = -1;
static gint ett_rrc_UE_Positioning_MeasurementEventResults = -1;
static gint ett_rrc_UE_Positioning_MeasurementEventResults_v770ext = -1;
static gint ett_rrc_UE_Positioning_MeasurementEventResults_v860ext = -1;
@@ -13133,33 +13937,33 @@ static gint ett_rrc_UE_Positioning_OTDOA_AssistanceData_r7 = -1;
static gint ett_rrc_UE_Positioning_IPDL_Parameters_TDDList_r4_ext = -1;
static gint ett_rrc_UE_Positioning_OTDOA_MeasuredResultsTDD_ext = -1;
static gint ett_rrc_UE_Positioning_OTDOA_Measurement = -1;
-static gint ett_rrc_T_modeSpecificInfo_122 = -1;
-static gint ett_rrc_T_fdd_155 = -1;
-static gint ett_rrc_T_tdd_106 = -1;
+static gint ett_rrc_T_modeSpecificInfo_128 = -1;
+static gint ett_rrc_T_fdd_160 = -1;
+static gint ett_rrc_T_tdd_111 = -1;
static gint ett_rrc_UE_Positioning_OTDOA_Measurement_v390ext = -1;
static gint ett_rrc_UE_Positioning_OTDOA_NeighbourCellInfo = -1;
-static gint ett_rrc_T_modeSpecificInfo_123 = -1;
-static gint ett_rrc_T_fdd_156 = -1;
-static gint ett_rrc_T_tdd_107 = -1;
+static gint ett_rrc_T_modeSpecificInfo_129 = -1;
+static gint ett_rrc_T_fdd_161 = -1;
+static gint ett_rrc_T_tdd_112 = -1;
static gint ett_rrc_T_positioningMode = -1;
static gint ett_rrc_T_ueBased = -1;
static gint ett_rrc_T_ueAssisted = -1;
static gint ett_rrc_UE_Positioning_OTDOA_NeighbourCellInfo_r4 = -1;
-static gint ett_rrc_T_modeSpecificInfo_124 = -1;
-static gint ett_rrc_T_fdd_157 = -1;
-static gint ett_rrc_T_tdd_108 = -1;
+static gint ett_rrc_T_modeSpecificInfo_130 = -1;
+static gint ett_rrc_T_fdd_162 = -1;
+static gint ett_rrc_T_tdd_113 = -1;
static gint ett_rrc_T_positioningMode_01 = -1;
static gint ett_rrc_T_ueBased_01 = -1;
static gint ett_rrc_T_ueAssisted_01 = -1;
static gint ett_rrc_UE_Positioning_OTDOA_NeighbourCellInfo_UEB = -1;
-static gint ett_rrc_T_modeSpecificInfo_125 = -1;
-static gint ett_rrc_T_fdd_158 = -1;
-static gint ett_rrc_T_tdd_109 = -1;
+static gint ett_rrc_T_modeSpecificInfo_131 = -1;
+static gint ett_rrc_T_fdd_163 = -1;
+static gint ett_rrc_T_tdd_114 = -1;
static gint ett_rrc_UE_Positioning_OTDOA_NeighbourCellInfo_UEB_ext = -1;
static gint ett_rrc_UE_Positioning_OTDOA_NeighbourCellInfo_r7 = -1;
-static gint ett_rrc_T_modeSpecificInfo_126 = -1;
-static gint ett_rrc_T_fdd_159 = -1;
-static gint ett_rrc_T_tdd_110 = -1;
+static gint ett_rrc_T_modeSpecificInfo_132 = -1;
+static gint ett_rrc_T_fdd_164 = -1;
+static gint ett_rrc_T_tdd_115 = -1;
static gint ett_rrc_T_positioningMode_02 = -1;
static gint ett_rrc_T_ueBased_02 = -1;
static gint ett_rrc_T_ueAssisted_02 = -1;
@@ -13170,37 +13974,37 @@ static gint ett_rrc_UE_Positioning_OTDOA_NeighbourCellList_UEB_ext = -1;
static gint ett_rrc_UE_Positioning_OTDOA_NeighbourCellList_r7 = -1;
static gint ett_rrc_UE_Positioning_OTDOA_Quality = -1;
static gint ett_rrc_UE_Positioning_OTDOA_ReferenceCellInfo = -1;
-static gint ett_rrc_T_modeSpecificInfo_127 = -1;
-static gint ett_rrc_T_fdd_160 = -1;
-static gint ett_rrc_T_tdd_111 = -1;
+static gint ett_rrc_T_modeSpecificInfo_133 = -1;
+static gint ett_rrc_T_fdd_165 = -1;
+static gint ett_rrc_T_tdd_116 = -1;
static gint ett_rrc_T_positioningMode_03 = -1;
static gint ett_rrc_T_ueBased_03 = -1;
static gint ett_rrc_T_ueAssisted_03 = -1;
static gint ett_rrc_UE_Positioning_OTDOA_ReferenceCellInfo_r4 = -1;
-static gint ett_rrc_T_modeSpecificInfo_128 = -1;
-static gint ett_rrc_T_fdd_161 = -1;
-static gint ett_rrc_T_tdd_112 = -1;
+static gint ett_rrc_T_modeSpecificInfo_134 = -1;
+static gint ett_rrc_T_fdd_166 = -1;
+static gint ett_rrc_T_tdd_117 = -1;
static gint ett_rrc_T_positioningMode_04 = -1;
static gint ett_rrc_T_ueBased_04 = -1;
static gint ett_rrc_T_ueAssisted_04 = -1;
static gint ett_rrc_UE_Positioning_OTDOA_ReferenceCellInfo_UEB = -1;
-static gint ett_rrc_T_modeSpecificInfo_129 = -1;
-static gint ett_rrc_T_fdd_162 = -1;
-static gint ett_rrc_T_tdd_113 = -1;
+static gint ett_rrc_T_modeSpecificInfo_135 = -1;
+static gint ett_rrc_T_fdd_167 = -1;
+static gint ett_rrc_T_tdd_118 = -1;
static gint ett_rrc_UE_Positioning_OTDOA_ReferenceCellInfo_UEB_ext = -1;
static gint ett_rrc_UE_Positioning_OTDOA_ReferenceCellInfo_r7 = -1;
-static gint ett_rrc_T_modeSpecificInfo_130 = -1;
-static gint ett_rrc_T_fdd_163 = -1;
-static gint ett_rrc_T_tdd_114 = -1;
+static gint ett_rrc_T_modeSpecificInfo_136 = -1;
+static gint ett_rrc_T_fdd_168 = -1;
+static gint ett_rrc_T_tdd_119 = -1;
static gint ett_rrc_T_positioningMode_05 = -1;
static gint ett_rrc_T_ueBased_05 = -1;
static gint ett_rrc_T_ueAssisted_05 = -1;
static gint ett_rrc_UE_Positioning_PositionEstimateInfo = -1;
static gint ett_rrc_T_referenceTime_02 = -1;
static gint ett_rrc_T_cell_Timing = -1;
-static gint ett_rrc_T_modeSpecificInfo_131 = -1;
-static gint ett_rrc_T_fdd_164 = -1;
-static gint ett_rrc_T_tdd_115 = -1;
+static gint ett_rrc_T_modeSpecificInfo_137 = -1;
+static gint ett_rrc_T_fdd_169 = -1;
+static gint ett_rrc_T_tdd_120 = -1;
static gint ett_rrc_UE_Positioning_PositionEstimateInfo_v770ext = -1;
static gint ett_rrc_T_referenceTimeOptions = -1;
static gint ett_rrc_T_r7_15 = -1;
@@ -13217,23 +14021,23 @@ static gint ett_rrc_UTCmodelSet2 = -1;
static gint ett_rrc_UTCmodelSet3 = -1;
static gint ett_rrc_UTRAN_GANSSReferenceTime = -1;
static gint ett_rrc_T_ue_GANSSTimingOfCellFrames = -1;
-static gint ett_rrc_T_mode_01 = -1;
-static gint ett_rrc_T_fdd_165 = -1;
-static gint ett_rrc_T_tdd_116 = -1;
+static gint ett_rrc_T_mode_02 = -1;
+static gint ett_rrc_T_fdd_170 = -1;
+static gint ett_rrc_T_tdd_121 = -1;
static gint ett_rrc_UTRAN_FDD_FrequencyList = -1;
static gint ett_rrc_UTRAN_FDD_Frequency = -1;
static gint ett_rrc_UTRAN_TDD_FrequencyList = -1;
static gint ett_rrc_UTRAN_TDD_Frequency = -1;
static gint ett_rrc_UTRAN_GPSReferenceTime = -1;
static gint ett_rrc_T_utran_GPSTimingOfCell = -1;
-static gint ett_rrc_T_modeSpecificInfo_132 = -1;
-static gint ett_rrc_T_fdd_166 = -1;
-static gint ett_rrc_T_tdd_117 = -1;
+static gint ett_rrc_T_modeSpecificInfo_138 = -1;
+static gint ett_rrc_T_fdd_171 = -1;
+static gint ett_rrc_T_tdd_122 = -1;
static gint ett_rrc_UTRAN_GPSReferenceTimeResult = -1;
static gint ett_rrc_T_ue_GPSTimingOfCell = -1;
-static gint ett_rrc_T_modeSpecificInfo_133 = -1;
-static gint ett_rrc_T_fdd_167 = -1;
-static gint ett_rrc_T_tdd_118 = -1;
+static gint ett_rrc_T_modeSpecificInfo_139 = -1;
+static gint ett_rrc_T_fdd_172 = -1;
+static gint ett_rrc_T_tdd_123 = -1;
static gint ett_rrc_UTRA_PriorityInfoList = -1;
static gint ett_rrc_T_utra_ServingCell = -1;
static gint ett_rrc_UTRA_PriorityInfoList_v920ext = -1;
@@ -13249,9 +14053,9 @@ static gint ett_rrc_DataVolumeHistory = -1;
static gint ett_rrc_DataVolumePerRB = -1;
static gint ett_rrc_DataVolumePerRB_List = -1;
static gint ett_rrc_DeferredMeasurementControlReadingSupport = -1;
-static gint ett_rrc_T_modeSpecificInfo_134 = -1;
-static gint ett_rrc_T_fdd_168 = -1;
-static gint ett_rrc_T_tdd_119 = -1;
+static gint ett_rrc_T_modeSpecificInfo_140 = -1;
+static gint ett_rrc_T_fdd_173 = -1;
+static gint ett_rrc_T_tdd_124 = -1;
static gint ett_rrc_ETWS_Information = -1;
static gint ett_rrc_EUTRA_BlacklistedCell = -1;
static gint ett_rrc_EUTRA_BlacklistedCellPerFreqList = -1;
@@ -13293,7 +14097,7 @@ static gint ett_rrc_MasterInformationBlock = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_48 = -1;
static gint ett_rrc_T_v6b0NonCriticalExtensions_15 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_26 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_167 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_181 = -1;
static gint ett_rrc_MasterInformationBlock_v690ext = -1;
static gint ett_rrc_MasterInformationBlock_v6b0ext_IEs = -1;
static gint ett_rrc_MasterInformationBlock_v860ext_IEs = -1;
@@ -13321,11 +14125,11 @@ static gint ett_rrc_SibOFF_List = -1;
static gint ett_rrc_SysInfoType1 = -1;
static gint ett_rrc_T_v3a0NonCriticalExtensions_12 = -1;
static gint ett_rrc_T_v860NonCriticalExtentions_02 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_168 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_182 = -1;
static gint ett_rrc_SysInfoType1_v3a0ext_IEs = -1;
static gint ett_rrc_SysInfoType1_v860ext_IEs = -1;
static gint ett_rrc_SysInfoType2 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_169 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_183 = -1;
static gint ett_rrc_SysInfoType3 = -1;
static gint ett_rrc_T_v4b0NonCriticalExtensions_17 = -1;
static gint ett_rrc_T_v590NonCriticalExtension = -1;
@@ -13336,7 +14140,7 @@ static gint ett_rrc_T_v830NonCriticalExtension = -1;
static gint ett_rrc_T_v860NonCriticalExtension_01 = -1;
static gint ett_rrc_T_v870NonCriticalExtension = -1;
static gint ett_rrc_T_v900NonCriticalExtension = -1;
-static gint ett_rrc_T_nonCriticalExtensions_170 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_184 = -1;
static gint ett_rrc_SysInfoType3_v4b0ext_IEs = -1;
static gint ett_rrc_SysInfoType3_v590ext = -1;
static gint ett_rrc_SysInfoType3_v5c0ext_IEs = -1;
@@ -13351,15 +14155,15 @@ static gint ett_rrc_T_v4b0NonCriticalExtensions_18 = -1;
static gint ett_rrc_T_v590NonCriticalExtension_01 = -1;
static gint ett_rrc_T_v5b0NonCriticalExtension = -1;
static gint ett_rrc_T_v5c0NonCriticalExtension = -1;
-static gint ett_rrc_T_nonCriticalExtensions_171 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_185 = -1;
static gint ett_rrc_SysInfoType4_v4b0ext_IEs = -1;
static gint ett_rrc_SysInfoType4_v590ext = -1;
static gint ett_rrc_SysInfoType4_v5b0ext_IEs = -1;
static gint ett_rrc_SysInfoType4_v5c0ext_IEs = -1;
static gint ett_rrc_SysInfoType5 = -1;
-static gint ett_rrc_T_modeSpecificInfo_135 = -1;
-static gint ett_rrc_T_fdd_169 = -1;
-static gint ett_rrc_T_tdd_120 = -1;
+static gint ett_rrc_T_modeSpecificInfo_141 = -1;
+static gint ett_rrc_T_fdd_174 = -1;
+static gint ett_rrc_T_tdd_125 = -1;
static gint ett_rrc_T_v4b0NonCriticalExtensions_19 = -1;
static gint ett_rrc_T_v590NonCriticalExtensions_28 = -1;
static gint ett_rrc_T_v650NonCriticalExtensions = -1;
@@ -13370,7 +14174,8 @@ static gint ett_rrc_T_v860NonCriticalExtensions_27 = -1;
static gint ett_rrc_T_v890NonCriticalExtensions_11 = -1;
static gint ett_rrc_T_v8b0NonCriticalExtensions_01 = -1;
static gint ett_rrc_T_v8d0NonCriticalExtensions = -1;
-static gint ett_rrc_T_nonCriticalExtensions_172 = -1;
+static gint ett_rrc_T_va40NonCriticalExtensions_18 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_186 = -1;
static gint ett_rrc_SysInfoType5_v4b0ext_IEs = -1;
static gint ett_rrc_T_tdd128SpecificInfo = -1;
static gint ett_rrc_SysInfoType5_v590ext_IEs = -1;
@@ -13380,30 +14185,32 @@ static gint ett_rrc_SysInfoType5_v680ext_IEs = -1;
static gint ett_rrc_SysInfoType5_v690ext_IEs = -1;
static gint ett_rrc_T_sccpch_SystemInformation_MBMS = -1;
static gint ett_rrc_SysInfoType5_v770ext_IEs = -1;
-static gint ett_rrc_T_modeSpecificInfo_136 = -1;
-static gint ett_rrc_T_fdd_170 = -1;
-static gint ett_rrc_T_tdd768_20 = -1;
-static gint ett_rrc_T_tdd128_59 = -1;
+static gint ett_rrc_T_modeSpecificInfo_142 = -1;
+static gint ett_rrc_T_fdd_175 = -1;
+static gint ett_rrc_T_tdd768_21 = -1;
+static gint ett_rrc_T_tdd128_63 = -1;
static gint ett_rrc_T_sccpch_SystemInformation_MBMS_01 = -1;
static gint ett_rrc_SysInfoType5_v860ext_IEs = -1;
static gint ett_rrc_T_dummy_15 = -1;
-static gint ett_rrc_T_modeSpecificInfo_137 = -1;
-static gint ett_rrc_T_fdd_171 = -1;
-static gint ett_rrc_T_tdd128_60 = -1;
+static gint ett_rrc_T_modeSpecificInfo_143 = -1;
+static gint ett_rrc_T_fdd_176 = -1;
+static gint ett_rrc_T_tdd128_64 = -1;
static gint ett_rrc_T_hs_dsch_CommonSysInfo = -1;
static gint ett_rrc_SysInfoType5_v890ext_IEs = -1;
static gint ett_rrc_SysInfoType5_v8b0ext_IEs = -1;
static gint ett_rrc_SysInfoType5_v8d0ext_IEs = -1;
+static gint ett_rrc_SysInfoType5_va40ext_IEs = -1;
static gint ett_rrc_SysInfoType6 = -1;
-static gint ett_rrc_T_modeSpecificInfo_138 = -1;
-static gint ett_rrc_T_fdd_172 = -1;
-static gint ett_rrc_T_tdd_121 = -1;
+static gint ett_rrc_T_modeSpecificInfo_144 = -1;
+static gint ett_rrc_T_fdd_177 = -1;
+static gint ett_rrc_T_tdd_126 = -1;
static gint ett_rrc_T_v4b0NonCriticalExtensions_20 = -1;
static gint ett_rrc_T_v590NonCriticalExtensions_29 = -1;
static gint ett_rrc_T_v650nonCriticalExtensions = -1;
static gint ett_rrc_T_v690nonCriticalExtensions = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_41 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_173 = -1;
+static gint ett_rrc_T_va40NonCriticalExtensions_19 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_187 = -1;
static gint ett_rrc_SysInfoType6_v4b0ext_IEs = -1;
static gint ett_rrc_T_tdd128SpecificInfo_01 = -1;
static gint ett_rrc_SysInfoType6_v590ext_IEs = -1;
@@ -13412,16 +14219,17 @@ static gint ett_rrc_SysInfoType6_v650ext_IEs = -1;
static gint ett_rrc_SysInfoType6_v690ext_IEs = -1;
static gint ett_rrc_SysInfoType6_v770ext_IEs = -1;
static gint ett_rrc_T_tdd768SpecificInfo = -1;
+static gint ett_rrc_SysInfoType6_va40ext_IEs = -1;
static gint ett_rrc_SysInfoType7 = -1;
-static gint ett_rrc_T_modeSpecificInfo_139 = -1;
-static gint ett_rrc_T_fdd_173 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_174 = -1;
+static gint ett_rrc_T_modeSpecificInfo_145 = -1;
+static gint ett_rrc_T_fdd_178 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_188 = -1;
static gint ett_rrc_SysInfoType8 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_175 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_189 = -1;
static gint ett_rrc_SysInfoType9 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_176 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_190 = -1;
static gint ett_rrc_SysInfoType10 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_177 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_191 = -1;
static gint ett_rrc_SysInfoType11 = -1;
static gint ett_rrc_T_v4b0NonCriticalExtensions_21 = -1;
static gint ett_rrc_T_v590NonCriticalExtension_02 = -1;
@@ -13430,7 +14238,7 @@ static gint ett_rrc_T_v6b0NonCriticalExtensions_16 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_42 = -1;
static gint ett_rrc_T_v7b0NonCriticalExtensions_02 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_28 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_178 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_192 = -1;
static gint ett_rrc_SysInfoType11_v4b0ext_IEs = -1;
static gint ett_rrc_SysInfoType11_v590ext_IEs = -1;
static gint ett_rrc_SysInfoType11_v690ext_IEs = -1;
@@ -13441,7 +14249,7 @@ static gint ett_rrc_SysInfoType11_v860ext_IEs = -1;
static gint ett_rrc_SysInfoType11bis = -1;
static gint ett_rrc_T_v7b0NonCriticalExtensions_03 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_29 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_179 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_193 = -1;
static gint ett_rrc_SysInfoType11bis_v7b0ext_IEs = -1;
static gint ett_rrc_SysInfoType11bis_v860ext_IEs = -1;
static gint ett_rrc_SysInfoType12 = -1;
@@ -13450,7 +14258,7 @@ static gint ett_rrc_T_v590NonCriticalExtension_03 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_51 = -1;
static gint ett_rrc_T_v6b0NonCriticalExtensions_17 = -1;
static gint ett_rrc_T_v7b0NonCriticalExtensions_04 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_180 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_194 = -1;
static gint ett_rrc_SysInfoType12_v4b0ext_IEs = -1;
static gint ett_rrc_SysInfoType12_v590ext_IEs = -1;
static gint ett_rrc_SysInfoType12_v690ext_IEs = -1;
@@ -13460,79 +14268,89 @@ static gint ett_rrc_SysInfoType13 = -1;
static gint ett_rrc_T_v3a0NonCriticalExtensions_13 = -1;
static gint ett_rrc_T_v4b0NonCriticalExtensions_23 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_43 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_181 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_195 = -1;
static gint ett_rrc_SysInfoType13_v3a0ext_IEs = -1;
static gint ett_rrc_SysInfoType13_v4b0ext_IEs = -1;
static gint ett_rrc_SysInfoType13_v770ext_IEs = -1;
static gint ett_rrc_SysInfoType13_1 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_182 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_196 = -1;
static gint ett_rrc_SysInfoType13_2 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_183 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_197 = -1;
static gint ett_rrc_SysInfoType13_3 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_184 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_198 = -1;
static gint ett_rrc_SysInfoType13_4 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_185 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_199 = -1;
static gint ett_rrc_SysInfoType14 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_186 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_200 = -1;
static gint ett_rrc_SysInfoType15 = -1;
static gint ett_rrc_T_v4b0NonCriticalExtensions_24 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_44 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_187 = -1;
+static gint ett_rrc_T_va40NonCriticalExtensions_20 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_201 = -1;
static gint ett_rrc_SysInfoType15_v4b0ext_IEs = -1;
static gint ett_rrc_SysInfoType15_v770ext_IEs = -1;
+static gint ett_rrc_SysInfoType15_va40ext_IEs = -1;
static gint ett_rrc_SysInfoType15bis = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_30 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_188 = -1;
+static gint ett_rrc_T_va40NonCriticalExtensions_21 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_202 = -1;
static gint ett_rrc_SysInfoType15bis_v860ext_IEs = -1;
+static gint ett_rrc_SysInfoType15bis_va40ext_IEs = -1;
static gint ett_rrc_SysInfoType15_1 = -1;
static gint ett_rrc_T_v920NonCriticalExtensions_04 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_189 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_203 = -1;
static gint ett_rrc_SysInfoType15_1_v920ext_IEs = -1;
static gint ett_rrc_SysInfoType15_1bis = -1;
static gint ett_rrc_T_v920NonCriticalExtensions_05 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_190 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_204 = -1;
static gint ett_rrc_SysInfoType15_1bis_v920ext_IEs = -1;
static gint ett_rrc_SysInfoType15_2 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_191 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_205 = -1;
static gint ett_rrc_SysInfoType15_2bis = -1;
-static gint ett_rrc_T_nonCriticalExtensions_192 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_206 = -1;
static gint ett_rrc_SysInfoType15_2ter = -1;
-static gint ett_rrc_T_nonCriticalExtensions_193 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_207 = -1;
static gint ett_rrc_SysInfoType15_3 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_194 = -1;
+static gint ett_rrc_T_va40NonCriticalExtensions_22 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_208 = -1;
+static gint ett_rrc_SysInfoType15_3_va40ext_IEs = -1;
static gint ett_rrc_SysInfoType15_3bis = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_31 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_195 = -1;
+static gint ett_rrc_T_va40NonCriticalExtensions_23 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_209 = -1;
static gint ett_rrc_SysInfoType15_3bis_v860ext_IEs = -1;
+static gint ett_rrc_SysInfoType15_3bis_va40ext_IEs = -1;
static gint ett_rrc_SysInfoType15_4 = -1;
static gint ett_rrc_T_v3a0NonCriticalExtensions_14 = -1;
static gint ett_rrc_T_v4b0NonCriticalExtensions_25 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_196 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_210 = -1;
static gint ett_rrc_SysInfoType15_4_v3a0ext = -1;
static gint ett_rrc_SysInfoType15_4_v4b0ext = -1;
static gint ett_rrc_SysInfoType15_5 = -1;
static gint ett_rrc_T_v3a0NonCriticalExtensions_15 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_45 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_197 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_211 = -1;
static gint ett_rrc_SysInfoType15_5_v3a0ext = -1;
static gint ett_rrc_SysInfoType15_5_v770ext_IEs = -1;
static gint ett_rrc_SysInfoType15_6 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_198 = -1;
+static gint ett_rrc_T_va40NonCriticalExtensions_24 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_212 = -1;
+static gint ett_rrc_SysInfoType15_6_va40ext_IEs = -1;
static gint ett_rrc_SysInfoType15_7 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_199 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_213 = -1;
static gint ett_rrc_SysInfoType15_8 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_200 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_214 = -1;
static gint ett_rrc_SysInfoType16 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_46 = -1;
static gint ett_rrc_T_v920NonCriticalExtensions_06 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_201 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_215 = -1;
static gint ett_rrc_SysInfoType16_v770ext_IEs = -1;
static gint ett_rrc_SysInfoType16_v920ext_IEs = -1;
static gint ett_rrc_SysInfoType17 = -1;
static gint ett_rrc_T_v4b0NonCriticalExtensions_26 = -1;
static gint ett_rrc_T_v590NonCriticalExtensions_30 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_47 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_202 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_216 = -1;
static gint ett_rrc_SysInfoType17_v4b0ext_IEs = -1;
static gint ett_rrc_T_tdd128SpecificInfo_02 = -1;
static gint ett_rrc_SysInfoType17_v590ext_IEs = -1;
@@ -13542,25 +14360,25 @@ static gint ett_rrc_T_tdd768SpecificInfo_01 = -1;
static gint ett_rrc_SysInfoType18 = -1;
static gint ett_rrc_T_v6b0NonCriticalExtensions_18 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_32 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_203 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_217 = -1;
static gint ett_rrc_SysInfoType18_v6b0ext = -1;
static gint ett_rrc_SysInfoType18_v860ext = -1;
static gint ett_rrc_SysInfoType19 = -1;
static gint ett_rrc_T_v920NonCriticalExtensions_07 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_204 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_218 = -1;
static gint ett_rrc_SysInfoType19_v920ext = -1;
static gint ett_rrc_SysInfoType20 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_205 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_219 = -1;
static gint ett_rrc_SysInfoTypeSB1 = -1;
static gint ett_rrc_T_v6b0NonCriticalExtensions_19 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_33 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_206 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_220 = -1;
static gint ett_rrc_SysInfoTypeSB1_v6b0ext = -1;
static gint ett_rrc_SysInfoTypeSB1_v860ext = -1;
static gint ett_rrc_SysInfoTypeSB2 = -1;
static gint ett_rrc_T_v6b0NonCriticalExtensions_20 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_34 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_207 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_221 = -1;
static gint ett_rrc_SysInfoTypeSB2_v6b0ext = -1;
static gint ett_rrc_SysInfoTypeSB2_v860ext = -1;
static gint ett_rrc_TDD_UMTS_Frequency_List = -1;
@@ -13597,18 +14415,18 @@ static gint ett_rrc_T_sameAsCurrent = -1;
static gint ett_rrc_T_different = -1;
static gint ett_rrc_MBMS_MCCH_ConfigurationInfo_r6 = -1;
static gint ett_rrc_MBMS_MICHConfigurationInfo_r6 = -1;
-static gint ett_rrc_T_mode_02 = -1;
-static gint ett_rrc_T_fdd_174 = -1;
-static gint ett_rrc_T_tdd384_40 = -1;
-static gint ett_rrc_T_tdd128_61 = -1;
-static gint ett_rrc_SEQUENCE_SIZE_1_2_OF_DL_TS_ChannelisationCode = -1;
-static gint ett_rrc_MBMS_MICHConfigurationInfo_v770ext = -1;
static gint ett_rrc_T_mode_03 = -1;
+static gint ett_rrc_T_fdd_179 = -1;
static gint ett_rrc_T_tdd384_41 = -1;
-static gint ett_rrc_T_tdd768_21 = -1;
-static gint ett_rrc_T_tdd128_62 = -1;
-static gint ett_rrc_MBMS_MICHConfigurationInfo_v890ext = -1;
+static gint ett_rrc_T_tdd128_65 = -1;
+static gint ett_rrc_SEQUENCE_SIZE_1_2_OF_DL_TS_ChannelisationCode = -1;
+static gint ett_rrc_MBMS_MICHConfigurationInfo_v770ext = -1;
static gint ett_rrc_T_mode_04 = -1;
+static gint ett_rrc_T_tdd384_42 = -1;
+static gint ett_rrc_T_tdd768_22 = -1;
+static gint ett_rrc_T_tdd128_66 = -1;
+static gint ett_rrc_MBMS_MICHConfigurationInfo_v890ext = -1;
+static gint ett_rrc_T_mode_05 = -1;
static gint ett_rrc_T_imb384 = -1;
static gint ett_rrc_MBMS_ModifedService_r6 = -1;
static gint ett_rrc_T_mbms_PreferredFrequency = -1;
@@ -13621,10 +14439,10 @@ static gint ett_rrc_MBMS_MSCH_ConfigurationInfo_r6 = -1;
static gint ett_rrc_MBMS_MSCHSchedulingInfo = -1;
static gint ett_rrc_MBMS_NeighbouringCellSCCPCH_r6 = -1;
static gint ett_rrc_T_layer1Combining = -1;
-static gint ett_rrc_T_fdd_175 = -1;
+static gint ett_rrc_T_fdd_180 = -1;
static gint ett_rrc_MBMS_NeighbouringCellSCCPCH_v770ext = -1;
static gint ett_rrc_T_layer1Combining_01 = -1;
-static gint ett_rrc_T_fdd_176 = -1;
+static gint ett_rrc_T_fdd_181 = -1;
static gint ett_rrc_MBMS_NeighbouringCellSCCPCHList_r6 = -1;
static gint ett_rrc_MBMS_NeighbouringCellSCCPCHList_v770ext = -1;
static gint ett_rrc_MBMS_NetworkStandardTimeInformation_LCR_v890ext = -1;
@@ -13697,8 +14515,8 @@ static gint ett_rrc_T_v390NonCriticalExtensions_01 = -1;
static gint ett_rrc_T_v690NonCriticalExtensions_52 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_35 = -1;
static gint ett_rrc_T_v920NonCriticalExtensions_08 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_208 = -1;
-static gint ett_rrc_T_criticalExtensions_111 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_222 = -1;
+static gint ett_rrc_T_criticalExtensions_126 = -1;
static gint ett_rrc_InterRATHandoverInfoWithInterRATCapabilities_r3_IEs = -1;
static gint ett_rrc_InterRATHandoverInfoWithInterRATCapabilities_v390ext_IEs = -1;
static gint ett_rrc_InterRATHandoverInfoWithInterRATCapabilities_v690ext_IEs = -1;
@@ -13706,8 +14524,8 @@ static gint ett_rrc_InterRATHandoverInfoWithInterRATCapabilities_v860ext_IEs = -
static gint ett_rrc_InterRATHandoverInfoWithInterRATCapabilities_v920ext_IEs = -1;
static gint ett_rrc_RFC3095_ContextInfo_r5 = -1;
static gint ett_rrc_T_r5_14 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_209 = -1;
-static gint ett_rrc_T_criticalExtensions_112 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_223 = -1;
+static gint ett_rrc_T_criticalExtensions_127 = -1;
static gint ett_rrc_RFC3095_ContextInfoList_r5 = -1;
static gint ett_rrc_SRNC_RelocationInfo_r3 = -1;
static gint ett_rrc_T_r3_32 = -1;
@@ -13728,7 +14546,7 @@ static gint ett_rrc_T_v6b0NonCriticalExtensions_21 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_48 = -1;
static gint ett_rrc_T_v7e0NonCriticalExtensions_04 = -1;
static gint ett_rrc_T_v7f0NonCriticalExtensions_17 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_210 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_224 = -1;
static gint ett_rrc_T_later_than_r3_28 = -1;
static gint ett_rrc_T_r4_14 = -1;
static gint ett_rrc_T_v4d0NonCriticalExtensions_14 = -1;
@@ -13741,8 +14559,8 @@ static gint ett_rrc_T_v6b0NonCriticalExtensions_22 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_49 = -1;
static gint ett_rrc_T_v7e0NonCriticalExtensions_05 = -1;
static gint ett_rrc_T_v7f0NonCriticalExtensions_18 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_211 = -1;
-static gint ett_rrc_T_criticalExtensions_113 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_225 = -1;
+static gint ett_rrc_T_criticalExtensions_128 = -1;
static gint ett_rrc_T_r5_15 = -1;
static gint ett_rrc_T_v5a0NonCriticalExtensions_02 = -1;
static gint ett_rrc_T_v5b0NonCriticalExtensions_05 = -1;
@@ -13752,34 +14570,37 @@ static gint ett_rrc_T_v6b0NonCriticalExtensions_23 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_50 = -1;
static gint ett_rrc_T_v7e0NonCriticalExtensions_06 = -1;
static gint ett_rrc_T_v7f0NonCriticalExtensions_19 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_212 = -1;
-static gint ett_rrc_T_criticalExtensions_114 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_226 = -1;
+static gint ett_rrc_T_criticalExtensions_129 = -1;
static gint ett_rrc_T_r6_12 = -1;
static gint ett_rrc_T_v6b0NonCriticalExtensions_24 = -1;
static gint ett_rrc_T_v770NonCriticalExtensions_51 = -1;
static gint ett_rrc_T_v820NonCriticalExtensions_03 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_36 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_213 = -1;
-static gint ett_rrc_T_criticalExtensions_115 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_227 = -1;
+static gint ett_rrc_T_criticalExtensions_130 = -1;
static gint ett_rrc_T_r7_16 = -1;
static gint ett_rrc_T_v820NonCriticalExtensions_04 = -1;
static gint ett_rrc_T_v860NonCriticalExtensions_37 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_214 = -1;
-static gint ett_rrc_T_criticalExtensions_116 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_228 = -1;
+static gint ett_rrc_T_criticalExtensions_131 = -1;
static gint ett_rrc_T_r8_12 = -1;
static gint ett_rrc_T_v7e0NonCriticalExtensions_07 = -1;
static gint ett_rrc_T_v7f0NonCriticalExtensions_20 = -1;
static gint ett_rrc_T_v8d0NonCriticalExtensions_01 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_215 = -1;
-static gint ett_rrc_T_criticalExtensions_117 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_229 = -1;
+static gint ett_rrc_T_criticalExtensions_132 = -1;
static gint ett_rrc_T_r9_11 = -1;
static gint ett_rrc_T_v8d0NonCriticalExtensions_02 = -1;
static gint ett_rrc_T_v970NonCriticalExtensions_04 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_216 = -1;
-static gint ett_rrc_T_criticalExtensions_118 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_230 = -1;
+static gint ett_rrc_T_criticalExtensions_133 = -1;
+static gint ett_rrc_T_r10_13 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_231 = -1;
+static gint ett_rrc_T_criticalExtensions_134 = -1;
static gint ett_rrc_SRNC_RelocationInfo_r3_IEs = -1;
-static gint ett_rrc_T_modeSpecificInfo_140 = -1;
-static gint ett_rrc_T_fdd_177 = -1;
+static gint ett_rrc_T_modeSpecificInfo_146 = -1;
+static gint ett_rrc_T_fdd_182 = -1;
static gint ett_rrc_SRNC_RelocationInfo_v380ext_IEs = -1;
static gint ett_rrc_SRNC_RelocationInfo_v390ext_IEs = -1;
static gint ett_rrc_SRNC_RelocationInfo_v3a0ext_IEs = -1;
@@ -13815,20 +14636,20 @@ static gint ett_rrc_T_current_tgps_Status_01 = -1;
static gint ett_rrc_T_active_01 = -1;
static gint ett_rrc_SRNC_RelocationInfo_r4_IEs = -1;
static gint ett_rrc_T_dummy_17 = -1;
-static gint ett_rrc_T_fdd_178 = -1;
+static gint ett_rrc_T_fdd_183 = -1;
static gint ett_rrc_SRNC_RelocationInfo_r5_IEs = -1;
static gint ett_rrc_T_dummy_18 = -1;
-static gint ett_rrc_T_fdd_179 = -1;
+static gint ett_rrc_T_fdd_184 = -1;
static gint ett_rrc_SRNC_RelocationInfo_v690ext_IEs = -1;
static gint ett_rrc_SRNC_RelocationInfo_r6_IEs = -1;
static gint ett_rrc_SRNC_RelocationInfo_r6_add_ext_IEs = -1;
static gint ett_rrc_T_v7f0NonCriticalExtensions_21 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_217 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_232 = -1;
static gint ett_rrc_SRNC_RelocationInfo_v6b0ext_IEs = -1;
static gint ett_rrc_SRNC_RelocationInfo_r7_IEs = -1;
static gint ett_rrc_SRNC_RelocationInfo_r7_add_ext_IEs = -1;
static gint ett_rrc_T_v7f0NonCriticalExtensions_22 = -1;
-static gint ett_rrc_T_nonCriticalExtensions_218 = -1;
+static gint ett_rrc_T_nonCriticalExtensions_233 = -1;
static gint ett_rrc_SRNC_RelocationInfo_v770ext_IEs = -1;
static gint ett_rrc_SRNC_RelocationInfo_v7e0ext_IEs = -1;
static gint ett_rrc_SRNC_RelocationInfo_v7f0ext_IEs = -1;
@@ -13838,6 +14659,7 @@ static gint ett_rrc_SRNC_RelocationInfo_v860ext_IEs = -1;
static gint ett_rrc_SRNC_RelocationInfo_v8d0ext_IEs = -1;
static gint ett_rrc_SRNC_RelocationInfo_r9_IEs = -1;
static gint ett_rrc_SRNC_RelocationInfo_v970ext_IEs = -1;
+static gint ett_rrc_SRNC_RelocationInfo_r10_IEs = -1;
static gint ett_rrc_CalculationTimeForCiphering = -1;
static gint ett_rrc_CipheringInfoPerRB = -1;
static gint ett_rrc_CipheringInfoPerRB_r4 = -1;
@@ -13872,6 +14694,7 @@ static gint ett_rrc_MeasurementCommandWithType_r6 = -1;
static gint ett_rrc_MeasurementCommandWithType_r7 = -1;
static gint ett_rrc_MeasurementCommandWithType_r8 = -1;
static gint ett_rrc_MeasurementCommandWithType_r9 = -1;
+static gint ett_rrc_MeasurementCommandWithType_r10 = -1;
static gint ett_rrc_OngoingMeasRep = -1;
static gint ett_rrc_OngoingMeasRep_r4 = -1;
static gint ett_rrc_OngoingMeasRep_r5 = -1;
@@ -13881,6 +14704,7 @@ static gint ett_rrc_OngoingMeasRep_r7 = -1;
static gint ett_rrc_OngoingMeasRep_r8 = -1;
static gint ett_rrc_OngoingMeasRep_r9 = -1;
static gint ett_rrc_OngoingMeasRep_v970ext_IEs = -1;
+static gint ett_rrc_OngoingMeasRep_r10 = -1;
static gint ett_rrc_OngoingMeasRepList = -1;
static gint ett_rrc_OngoingMeasRepList_r4 = -1;
static gint ett_rrc_OngoingMeasRepList_r5 = -1;
@@ -13889,6 +14713,7 @@ static gint ett_rrc_OngoingMeasRepList_r7 = -1;
static gint ett_rrc_OngoingMeasRepList_r8 = -1;
static gint ett_rrc_OngoingMeasRepList_r9 = -1;
static gint ett_rrc_OngoingMeasRepList_v970ext_IE = -1;
+static gint ett_rrc_OngoingMeasRepList_r10 = -1;
static gint ett_rrc_PDCP_Capability_r4 = -1;
static gint ett_rrc_T_supportForRfc2507_01 = -1;
static gint ett_rrc_T_supportForRfc3095_01 = -1;
@@ -13902,15 +14727,15 @@ static gint ett_rrc_T_supportForRfc2507_03 = -1;
static gint ett_rrc_T_supportForRfc3095_03 = -1;
static gint ett_rrc_T_supported_10 = -1;
static gint ett_rrc_PhysicalChannelCapability_r4 = -1;
-static gint ett_rrc_T_fddPhysChCapability_04 = -1;
+static gint ett_rrc_T_fddPhysChCapability_05 = -1;
static gint ett_rrc_T_tdd384_PhysChCapability = -1;
static gint ett_rrc_T_tdd128_PhysChCapability_01 = -1;
static gint ett_rrc_PhysicalChannelCapability_r5 = -1;
-static gint ett_rrc_T_fddPhysChCapability_05 = -1;
+static gint ett_rrc_T_fddPhysChCapability_06 = -1;
static gint ett_rrc_T_tdd384_PhysChCapability_01 = -1;
static gint ett_rrc_T_tdd128_PhysChCapability_02 = -1;
static gint ett_rrc_RF_Capability_r4 = -1;
-static gint ett_rrc_T_fddRF_Capability_03 = -1;
+static gint ett_rrc_T_fddRF_Capability_04 = -1;
static gint ett_rrc_T_tdd384_RF_Capability_01 = -1;
static gint ett_rrc_T_tdd128_RF_Capability_01 = -1;
static gint ett_rrc_RFC3095_ContextInfo = -1;
@@ -13930,9 +14755,10 @@ static gint ett_rrc_UE_RadioAccessCapability_r6 = -1;
static gint ett_rrc_UL_RFC3095_Context = -1;
/*--- End of included file: packet-rrc-ett.c ---*/
-#line 89 "../../asn1/rrc/packet-rrc-template.c"
+#line 92 "../../asn1/rrc/packet-rrc-template.c"
static gint ett_rrc_eutraFeatureGroupIndicators = -1;
+static gint ett_rrc_cn_CommonGSM_MAP_NAS_SysInfo = -1;
/* Global variables */
static proto_tree *top_tree;
@@ -14174,7 +15000,7 @@ static const value_string rrc_CipheringModeCommand_vals[] = {
static const per_choice_t CipheringModeCommand_choice[] = {
{ 0, &hf_rrc_startRestart , ASN1_NO_EXTENSIONS , dissect_rrc_CipheringAlgorithm },
- { 1, &hf_rrc_dummy_19 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_dummy_23 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -14354,8 +15180,54 @@ dissect_rrc_PLMN_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
static int
dissect_rrc_NAS_SystemInformationGSM_MAP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 629 "../../asn1/rrc/rrc.cnf"
+ tvbuff_t *nas_sys_info_gsm_map_tvb = NULL;
+ guint32 length;
+ proto_item *item;
+ proto_tree *subtree;
+
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
- 1, 8, FALSE, NULL);
+ 1, 8, FALSE, &nas_sys_info_gsm_map_tvb);
+
+ length = tvb_length(nas_sys_info_gsm_map_tvb);
+ if (length) {
+ switch (rrc_nas_sys_info_gsm_map_type) {
+ case RRC_NAS_SYS_INFO_CN_COMMON:
+ item = proto_tree_add_text(tree, nas_sys_info_gsm_map_tvb, 0, length, "CN Common GSM-MAP NAS system information");
+ subtree = proto_item_add_subtree(item, ett_rrc_cn_CommonGSM_MAP_NAS_SysInfo);
+ de_cn_common_gsm_map_nas_sys_info(nas_sys_info_gsm_map_tvb, subtree, actx->pinfo, 0, length, NULL, 0);
+ break;
+ case RRC_NAS_SYS_INFO_CS:
+ item = proto_tree_add_text(tree, nas_sys_info_gsm_map_tvb, 0, length, "CS domain specific system information");
+ subtree = proto_item_add_subtree(item, ett_rrc_cn_CommonGSM_MAP_NAS_SysInfo);
+ de_cs_domain_spec_sys_info(nas_sys_info_gsm_map_tvb, subtree, actx->pinfo, 0, length, NULL, 0);
+ break;
+ case RRC_NAS_SYS_INFO_PS:
+ item = proto_tree_add_text(tree, nas_sys_info_gsm_map_tvb, 0, length, "PS domain specific system information");
+ subtree = proto_item_add_subtree(item, ett_rrc_cn_CommonGSM_MAP_NAS_SysInfo);
+ de_ps_domain_spec_sys_info(nas_sys_info_gsm_map_tvb, subtree, actx->pinfo, 0, length, NULL, 0);
+ break;
+ default:
+ break;
+ }
+ }
+ rrc_nas_sys_info_gsm_map_type = RRC_NAS_SYS_INFO_CN_COMMON;
+
+
+
+ return offset;
+}
+
+
+
+static int
+dissect_rrc_T_cn_CommonGSM_MAP_NAS_SysInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 613 "../../asn1/rrc/rrc.cnf"
+ rrc_nas_sys_info_gsm_map_type = RRC_NAS_SYS_INFO_CN_COMMON;
+ offset = dissect_rrc_NAS_SystemInformationGSM_MAP(tvb, offset, actx, tree, hf_index);
+
+
+
return offset;
}
@@ -14370,8 +15242,12 @@ static const value_string rrc_CN_DomainIdentity_vals[] = {
static int
dissect_rrc_CN_DomainIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 610 "../../asn1/rrc/rrc.cnf"
offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
- 2, NULL, FALSE, 0, NULL);
+ 2, (guint32*)(&rrc_nas_sys_info_gsm_map_type), FALSE, 0, NULL);
+
+
+
return offset;
}
@@ -14408,7 +15284,7 @@ dissect_rrc_CN_DomainInformationList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
static const per_sequence_t CN_InformationInfo_sequence[] = {
{ &hf_rrc_plmn_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PLMN_Identity },
- { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NAS_SystemInformationGSM_MAP },
+ { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_cn_CommonGSM_MAP_NAS_SysInfo },
{ &hf_rrc_cn_DomainInformationList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_DomainInformationList },
{ NULL, 0, 0, NULL }
};
@@ -14778,21 +15654,21 @@ dissect_rrc_ClosedLoopTimingAdjMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
-static const per_sequence_t T_fdd_65_sequence[] = {
+static const per_sequence_t T_fdd_68_sequence[] = {
{ &hf_rrc_pCPICH_UsageForChannelEst, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PCPICH_UsageForChannelEst },
{ &hf_rrc_dpch_FrameOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DPCH_FrameOffset },
{ &hf_rrc_secondaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SecondaryCPICH_Info },
{ &hf_rrc_dl_ChannelisationCodeList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_ChannelisationCodeList },
{ &hf_rrc_tpc_CombinationIndex, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TPC_CombinationIndex },
- { &hf_rrc_dummy_36 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SSDT_CellIdentity },
+ { &hf_rrc_dummy_40 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SSDT_CellIdentity },
{ &hf_rrc_closedLoopTimingAdjMode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ClosedLoopTimingAdjMode },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_65(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_68(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_65, T_fdd_65_sequence);
+ ett_rrc_T_fdd_68, T_fdd_68_sequence);
return offset;
}
@@ -15604,16 +16480,16 @@ dissect_rrc_DL_CCTrChListToRemove(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_tdd_27_sequence[] = {
+static const per_sequence_t T_tdd_30_sequence[] = {
{ &hf_rrc_dl_CCTrChListToEstablish, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CCTrChList },
{ &hf_rrc_dl_CCTrChListToRemove, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CCTrChListToRemove },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_27(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_30(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_27, T_tdd_27_sequence);
+ ett_rrc_T_tdd_30, T_tdd_30_sequence);
return offset;
}
@@ -15626,8 +16502,8 @@ static const value_string rrc_DL_DPCH_InfoPerRL_vals[] = {
};
static const per_choice_t DL_DPCH_InfoPerRL_choice[] = {
- { 0, &hf_rrc_fdd_66 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_65 },
- { 1, &hf_rrc_tdd_28 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_27 },
+ { 0, &hf_rrc_fdd_69 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_68 },
+ { 1, &hf_rrc_tdd_31 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_30 },
{ 0, NULL, 0, NULL }
};
@@ -15699,7 +16575,7 @@ dissect_rrc_TimingOffset(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
}
-static const per_sequence_t T_fdd_100_sequence[] = {
+static const per_sequence_t T_fdd_103_sequence[] = {
{ &hf_rrc_dummy1_03 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PCPICH_UsageForChannelEst },
{ &hf_rrc_dummy2_08 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SecondaryCPICH_Info },
{ &hf_rrc_secondaryScramblingCode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SecondaryScramblingCode },
@@ -15713,9 +16589,9 @@ static const per_sequence_t T_fdd_100_sequence[] = {
};
static int
-dissect_rrc_T_fdd_100(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_103(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_100, T_fdd_100_sequence);
+ ett_rrc_T_fdd_103, T_fdd_103_sequence);
return offset;
}
@@ -15914,7 +16790,7 @@ dissect_rrc_SCCPCH_ChannelisationCodeList(tvbuff_t *tvb _U_, int offset _U_, asn
}
-static const per_sequence_t T_tdd_55_sequence[] = {
+static const per_sequence_t T_tdd_58_sequence[] = {
{ &hf_rrc_commonTimeslotInfo_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CommonTimeslotInfoSCCPCH },
{ &hf_rrc_individualTimeslotInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_IndividualTimeslotInfo },
{ &hf_rrc_channelisationCode_08, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SCCPCH_ChannelisationCodeList },
@@ -15922,30 +16798,30 @@ static const per_sequence_t T_tdd_55_sequence[] = {
};
static int
-dissect_rrc_T_tdd_55(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_58(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_55, T_tdd_55_sequence);
+ ett_rrc_T_tdd_58, T_tdd_58_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_68_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_71_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_68_choice[] = {
- { 0, &hf_rrc_fdd_103 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_100 },
- { 1, &hf_rrc_tdd_61 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_55 },
+static const per_choice_t T_modeSpecificInfo_71_choice[] = {
+ { 0, &hf_rrc_fdd_106 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_103 },
+ { 1, &hf_rrc_tdd_64 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_58 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_68(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_71(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_68, T_modeSpecificInfo_68_choice,
+ ett_rrc_T_modeSpecificInfo_71, T_modeSpecificInfo_71_choice,
NULL);
return offset;
@@ -15953,7 +16829,7 @@ dissect_rrc_T_modeSpecificInfo_68(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t SecondaryCCPCH_Info_sequence[] = {
- { &hf_rrc_modeSpecificInfo_68, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_68 },
+ { &hf_rrc_modeSpecificInfo_71, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_71 },
{ NULL, 0, 0, NULL }
};
@@ -15976,36 +16852,36 @@ dissect_rrc_GainFactor(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
}
-static const per_sequence_t T_fdd_50_sequence[] = {
+static const per_sequence_t T_fdd_52_sequence[] = {
{ &hf_rrc_gainFactorBetaC , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_GainFactor },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_50(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_52(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_50, T_fdd_50_sequence);
+ ett_rrc_T_fdd_52, T_fdd_52_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_20_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_22_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_20_choice[] = {
- { 0, &hf_rrc_fdd_51 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_50 },
+static const per_choice_t T_modeSpecificInfo_22_choice[] = {
+ { 0, &hf_rrc_fdd_53 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_52 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_22(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_20, T_modeSpecificInfo_20_choice,
+ ett_rrc_T_modeSpecificInfo_22, T_modeSpecificInfo_22_choice,
NULL);
return offset;
@@ -16023,7 +16899,7 @@ dissect_rrc_ReferenceTFC_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static const per_sequence_t SignalledGainFactors_sequence[] = {
- { &hf_rrc_modeSpecificInfo_20, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_20 },
+ { &hf_rrc_modeSpecificInfo_22, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_22 },
{ &hf_rrc_gainFactorBetaD , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_GainFactor },
{ &hf_rrc_referenceTFC_ID , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ReferenceTFC_ID },
{ NULL, 0, 0, NULL }
@@ -16426,7 +17302,7 @@ static const value_string rrc_ExplicitTFCS_Configuration_vals[] = {
};
static const per_choice_t ExplicitTFCS_Configuration_choice[] = {
- { 0, &hf_rrc_complete_20 , ASN1_NO_EXTENSIONS , dissect_rrc_TFCS_ReconfAdd },
+ { 0, &hf_rrc_complete_23 , ASN1_NO_EXTENSIONS , dissect_rrc_TFCS_ReconfAdd },
{ 1, &hf_rrc_addition , ASN1_NO_EXTENSIONS , dissect_rrc_TFCS_ReconfAdd },
{ 2, &hf_rrc_removal , ASN1_NO_EXTENSIONS , dissect_rrc_TFCS_RemovalList },
{ 3, &hf_rrc_replacement , ASN1_NO_EXTENSIONS , dissect_rrc_T_replacement },
@@ -16587,7 +17463,7 @@ static const value_string rrc_TFCS_vals[] = {
static const per_choice_t TFCS_choice[] = {
{ 0, &hf_rrc_normalTFCI_Signalling, ASN1_NO_EXTENSIONS , dissect_rrc_ExplicitTFCS_Configuration },
- { 1, &hf_rrc_dummy_31 , ASN1_NO_EXTENSIONS , dissect_rrc_SplitTFCI_Signalling },
+ { 1, &hf_rrc_dummy_35 , ASN1_NO_EXTENSIONS , dissect_rrc_SplitTFCI_Signalling },
{ 0, NULL, 0, NULL }
};
@@ -17192,15 +18068,15 @@ dissect_rrc_OctetModeRLC_SizeInfoType2(tvbuff_t *tvb _U_, int offset _U_, asn1_c
}
-static const per_sequence_t T_fdd_45_sequence[] = {
+static const per_sequence_t T_fdd_47_sequence[] = {
{ &hf_rrc_octetModeRLC_SizeInfoType2, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_OctetModeRLC_SizeInfoType2 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_45(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_47(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_45, T_fdd_45_sequence);
+ ett_rrc_T_fdd_47, T_fdd_47_sequence);
return offset;
}
@@ -17228,15 +18104,15 @@ dissect_rrc_T_commonTDD_Choice(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
}
-static const per_sequence_t T_tdd_10_sequence[] = {
+static const per_sequence_t T_tdd_12_sequence[] = {
{ &hf_rrc_commonTDD_Choice, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_commonTDD_Choice },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_10, T_tdd_10_sequence);
+ ett_rrc_T_tdd_12, T_tdd_12_sequence);
return offset;
}
@@ -17249,8 +18125,8 @@ static const value_string rrc_T_rlc_Size_vals[] = {
};
static const per_choice_t T_rlc_Size_choice[] = {
- { 0, &hf_rrc_fdd_46 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_45 },
- { 1, &hf_rrc_tdd_11 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_10 },
+ { 0, &hf_rrc_fdd_48 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_47 },
+ { 1, &hf_rrc_tdd_13 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_12 },
{ 0, NULL, 0, NULL }
};
@@ -17577,6 +18453,8 @@ static const value_string rrc_SIB_TypeAndTag_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_SIB_TypeAndTag_vals_ext = VALUE_STRING_EXT_INIT(rrc_SIB_TypeAndTag_vals);
+
static const per_choice_t SIB_TypeAndTag_choice[] = {
{ 0, &hf_rrc_sysInfoType1_01 , ASN1_NO_EXTENSIONS , dissect_rrc_PLMN_ValueTag },
{ 1, &hf_rrc_sysInfoType2 , ASN1_NO_EXTENSIONS , dissect_rrc_CellValueTag },
@@ -17585,7 +18463,7 @@ static const per_choice_t SIB_TypeAndTag_choice[] = {
{ 4, &hf_rrc_sysInfoType5_01 , ASN1_NO_EXTENSIONS , dissect_rrc_CellValueTag },
{ 5, &hf_rrc_sysInfoType6 , ASN1_NO_EXTENSIONS , dissect_rrc_CellValueTag },
{ 6, &hf_rrc_sysInfoType7_01 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 7, &hf_rrc_dummy_50 , ASN1_NO_EXTENSIONS , dissect_rrc_CellValueTag },
+ { 7, &hf_rrc_dummy_54 , ASN1_NO_EXTENSIONS , dissect_rrc_CellValueTag },
{ 8, &hf_rrc_dummy2_13 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 9, &hf_rrc_dummy3_03 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 10, &hf_rrc_sysInfoType11_01, ASN1_NO_EXTENSIONS , dissect_rrc_CellValueTag },
@@ -17786,51 +18664,51 @@ dissect_rrc_SIB_ReferenceListFACH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_fdd_98_sequence[] = {
+static const per_sequence_t T_fdd_101_sequence[] = {
{ &hf_rrc_fach_PCH_InformationList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_FACH_PCH_InformationList },
{ &hf_rrc_sib_ReferenceListFACH, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SIB_ReferenceListFACH },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_98(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_101(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_98, T_fdd_98_sequence);
+ ett_rrc_T_fdd_101, T_fdd_101_sequence);
return offset;
}
-static const per_sequence_t T_tdd_54_sequence[] = {
+static const per_sequence_t T_tdd_57_sequence[] = {
{ &hf_rrc_fach_PCH_InformationList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_FACH_PCH_InformationList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_54(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_57(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_54, T_tdd_54_sequence);
+ ett_rrc_T_tdd_57, T_tdd_57_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_66_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_69_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_66_choice[] = {
- { 0, &hf_rrc_fdd_101 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_98 },
- { 1, &hf_rrc_tdd_60 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_54 },
+static const per_choice_t T_modeSpecificInfo_69_choice[] = {
+ { 0, &hf_rrc_fdd_104 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_101 },
+ { 1, &hf_rrc_tdd_63 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_57 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_66(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_69(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_66, T_modeSpecificInfo_66_choice,
+ ett_rrc_T_modeSpecificInfo_69, T_modeSpecificInfo_69_choice,
NULL);
return offset;
@@ -17840,7 +18718,7 @@ dissect_rrc_T_modeSpecificInfo_66(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t SCCPCH_InfoForFACH_sequence[] = {
{ &hf_rrc_secondaryCCPCH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SecondaryCCPCH_Info },
{ &hf_rrc_tfcs , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TFCS },
- { &hf_rrc_modeSpecificInfo_66, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_66 },
+ { &hf_rrc_modeSpecificInfo_69, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_69 },
{ NULL, 0, 0, NULL }
};
@@ -17856,7 +18734,7 @@ dissect_rrc_SCCPCH_InfoForFACH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
static const per_sequence_t RL_AdditionInformation_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ &hf_rrc_dl_DPCH_InfoPerRL, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_DPCH_InfoPerRL },
- { &hf_rrc_dummy_23 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
+ { &hf_rrc_dummy_27 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_dummy2_07 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SCCPCH_InfoForFACH },
{ NULL, 0, 0, NULL }
};
@@ -18246,9 +19124,23 @@ dissect_rrc_E_RNTI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, prot
}
+
+static int
+dissect_rrc_T_cn_CommonGSM_MAP_NAS_SysInfo_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 617 "../../asn1/rrc/rrc.cnf"
+ rrc_nas_sys_info_gsm_map_type = RRC_NAS_SYS_INFO_CN_COMMON;
+ offset = dissect_rrc_NAS_SystemInformationGSM_MAP(tvb, offset, actx, tree, hf_index);
+
+
+
+
+ return offset;
+}
+
+
static const per_sequence_t CN_InformationInfo_r6_sequence[] = {
{ &hf_rrc_plmn_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PLMN_Identity },
- { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NAS_SystemInformationGSM_MAP },
+ { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_cn_CommonGSM_MAP_NAS_SysInfo_01 },
{ &hf_rrc_cn_DomainInformationList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_DomainInformationList },
{ &hf_rrc_primary_plmn_Identity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PLMN_Identity },
{ NULL, 0, 0, NULL }
@@ -18263,36 +19155,36 @@ dissect_rrc_CN_InformationInfo_r6(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_fdd_67_sequence[] = {
+static const per_sequence_t T_fdd_70_sequence[] = {
{ &hf_rrc_pCPICH_UsageForChannelEst, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PCPICH_UsageForChannelEst },
{ &hf_rrc_dpch_FrameOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DPCH_FrameOffset },
{ &hf_rrc_secondaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SecondaryCPICH_Info },
{ &hf_rrc_dl_ChannelisationCodeList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_ChannelisationCodeList },
{ &hf_rrc_tpc_CombinationIndex, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TPC_CombinationIndex },
{ &hf_rrc_powerOffsetTPC_pdpdch, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PowerOffsetTPC_pdpdch },
- { &hf_rrc_dummy_36 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SSDT_CellIdentity },
+ { &hf_rrc_dummy_40 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SSDT_CellIdentity },
{ &hf_rrc_closedLoopTimingAdjMode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ClosedLoopTimingAdjMode },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_67(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_70(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_67, T_fdd_67_sequence);
+ ett_rrc_T_fdd_70, T_fdd_70_sequence);
return offset;
}
-static const per_sequence_t T_tdd384_09_sequence[] = {
+static const per_sequence_t T_tdd384_10_sequence[] = {
{ &hf_rrc_dl_CCTrCH_TimeslotsCodes, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DownlinkTimeslotsCodes },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd384_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_09, T_tdd384_09_sequence);
+ ett_rrc_T_tdd384_10, T_tdd384_10_sequence);
return offset;
}
@@ -18572,15 +19464,15 @@ dissect_rrc_DownlinkTimeslotsCodes_LCR_r4(tvbuff_t *tvb _U_, int offset _U_, asn
}
-static const per_sequence_t T_tdd128_10_sequence[] = {
+static const per_sequence_t T_tdd128_11_sequence[] = {
{ &hf_rrc_dl_CCTrCH_TimeslotsCodes_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DownlinkTimeslotsCodes_LCR_r4 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_10, T_tdd128_10_sequence);
+ ett_rrc_T_tdd128_11, T_tdd128_11_sequence);
return offset;
}
@@ -18593,8 +19485,8 @@ static const value_string rrc_T_tddOption_03_vals[] = {
};
static const per_choice_t T_tddOption_03_choice[] = {
- { 0, &hf_rrc_tdd384_10 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_09 },
- { 1, &hf_rrc_tdd128_10 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_10 },
+ { 0, &hf_rrc_tdd384_11 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_10 },
+ { 1, &hf_rrc_tdd128_11 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_11 },
{ 0, NULL, 0, NULL }
};
@@ -18640,16 +19532,16 @@ dissect_rrc_DL_CCTrChList_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_tdd_29_sequence[] = {
+static const per_sequence_t T_tdd_32_sequence[] = {
{ &hf_rrc_dl_CCTrChListToEstablish_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CCTrChList_r4 },
{ &hf_rrc_dl_CCTrChListToRemove, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CCTrChListToRemove },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_29(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_29, T_tdd_29_sequence);
+ ett_rrc_T_tdd_32, T_tdd_32_sequence);
return offset;
}
@@ -18662,8 +19554,8 @@ static const value_string rrc_DL_DPCH_InfoPerRL_r5_vals[] = {
};
static const per_choice_t DL_DPCH_InfoPerRL_r5_choice[] = {
- { 0, &hf_rrc_fdd_68 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_67 },
- { 1, &hf_rrc_tdd_30 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_29 },
+ { 0, &hf_rrc_fdd_71 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_70 },
+ { 1, &hf_rrc_tdd_33 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_32 },
{ 0, NULL, 0, NULL }
};
@@ -18864,16 +19756,16 @@ dissect_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_Codes(tvbuff_t *tvb _U_, int o
}
-static const per_sequence_t T_fdd_85_sequence[] = {
+static const per_sequence_t T_fdd_88_sequence[] = {
{ &hf_rrc_hS_SCCHChannelisationCodeInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_Codes },
{ &hf_rrc_dl_ScramblingCode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SecondaryScramblingCode },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_85(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_88(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_85, T_fdd_85_sequence);
+ ett_rrc_T_fdd_88, T_fdd_88_sequence);
return offset;
}
@@ -19058,7 +19950,7 @@ dissect_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD384(tvbuff_t *tvb _U_, int
}
-static const per_sequence_t T_tdd384_20_sequence[] = {
+static const per_sequence_t T_tdd384_21_sequence[] = {
{ &hf_rrc_nack_ack_power_offset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_M7_8 },
{ &hf_rrc_hs_SICH_PowerControl_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HS_SICH_Power_Control_Info_TDD384 },
{ &hf_rrc_hS_SCCH_SetConfiguration, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD384 },
@@ -19066,9 +19958,9 @@ static const per_sequence_t T_tdd384_20_sequence[] = {
};
static int
-dissect_rrc_T_tdd384_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_20, T_tdd384_20_sequence);
+ ett_rrc_T_tdd384_21, T_tdd384_21_sequence);
return offset;
}
@@ -19246,44 +20138,44 @@ dissect_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD128(tvbuff_t *tvb _U_, int
}
-static const value_string rrc_T_tdd_43_vals[] = {
+static const value_string rrc_T_tdd_46_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tdd_43_choice[] = {
- { 0, &hf_rrc_tdd384_22 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_20 },
- { 1, &hf_rrc_tdd128_29 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD128 },
+static const per_choice_t T_tdd_46_choice[] = {
+ { 0, &hf_rrc_tdd384_23 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_21 },
+ { 1, &hf_rrc_tdd128_31 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD128 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tdd_43(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_46(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_43, T_tdd_43_choice,
+ ett_rrc_T_tdd_46, T_tdd_46_choice,
NULL);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_55_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_58_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_55_choice[] = {
- { 0, &hf_rrc_fdd_87 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_85 },
- { 1, &hf_rrc_tdd_47 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_43 },
+static const per_choice_t T_modeSpecificInfo_58_choice[] = {
+ { 0, &hf_rrc_fdd_90 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_88 },
+ { 1, &hf_rrc_tdd_50 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_46 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_55(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_58(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_55, T_modeSpecificInfo_55_choice,
+ ett_rrc_T_modeSpecificInfo_58, T_modeSpecificInfo_58_choice,
NULL);
return offset;
@@ -19291,7 +20183,7 @@ dissect_rrc_T_modeSpecificInfo_55(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t HS_SCCH_Info_sequence[] = {
- { &hf_rrc_modeSpecificInfo_55, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_55 },
+ { &hf_rrc_modeSpecificInfo_58, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_58 },
{ NULL, 0, 0, NULL }
};
@@ -19357,7 +20249,7 @@ dissect_rrc_DeltaCQI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr
}
-static const per_sequence_t T_fdd_89_sequence[] = {
+static const per_sequence_t T_fdd_92_sequence[] = {
{ &hf_rrc_measurementPowerOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MeasurementPowerOffset },
{ &hf_rrc_feedback_cycle , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_Feedback_cycle },
{ &hf_rrc_cqi_RepetitionFactor, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CQI_RepetitionFactor },
@@ -19366,30 +20258,30 @@ static const per_sequence_t T_fdd_89_sequence[] = {
};
static int
-dissect_rrc_T_fdd_89(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_92(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_89, T_fdd_89_sequence);
+ ett_rrc_T_fdd_92, T_fdd_92_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_60_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_63_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_60_choice[] = {
- { 0, &hf_rrc_fdd_91 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_89 },
+static const per_choice_t T_modeSpecificInfo_63_choice[] = {
+ { 0, &hf_rrc_fdd_94 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_92 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_60(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_63(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_60, T_modeSpecificInfo_60_choice,
+ ett_rrc_T_modeSpecificInfo_63, T_modeSpecificInfo_63_choice,
NULL);
return offset;
@@ -19397,7 +20289,7 @@ dissect_rrc_T_modeSpecificInfo_60(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t Measurement_Feedback_Info_sequence[] = {
- { &hf_rrc_modeSpecificInfo_60, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_60 },
+ { &hf_rrc_modeSpecificInfo_63, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_63 },
{ NULL, 0, 0, NULL }
};
@@ -19581,15 +20473,15 @@ dissect_rrc_DL_HSPDSCH_TS_Configuration(tvbuff_t *tvb _U_, int offset _U_, asn1_
}
-static const per_sequence_t T_tdd384_11_sequence[] = {
+static const per_sequence_t T_tdd384_12_sequence[] = {
{ &hf_rrc_dl_HSPDSCH_TS_Configuration, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_HSPDSCH_TS_Configuration },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd384_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_11, T_tdd384_11_sequence);
+ ett_rrc_T_tdd384_12, T_tdd384_12_sequence);
return offset;
}
@@ -19634,58 +20526,58 @@ dissect_rrc_HS_PDSCH_Midamble_Configuration_TDD128(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_tdd128_17_sequence[] = {
+static const per_sequence_t T_tdd128_19_sequence[] = {
{ &hf_rrc_hs_PDSCH_Midamble_Configuration_tdd128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_PDSCH_Midamble_Configuration_TDD128 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_17, T_tdd128_17_sequence);
+ ett_rrc_T_tdd128_19, T_tdd128_19_sequence);
return offset;
}
-static const value_string rrc_T_tdd_33_vals[] = {
+static const value_string rrc_T_tdd_36_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tdd_33_choice[] = {
- { 0, &hf_rrc_tdd384_12 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_11 },
- { 1, &hf_rrc_tdd128_17 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_17 },
+static const per_choice_t T_tdd_36_choice[] = {
+ { 0, &hf_rrc_tdd384_13 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_12 },
+ { 1, &hf_rrc_tdd128_19 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_19 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tdd_33(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_36(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_33, T_tdd_33_choice,
+ ett_rrc_T_tdd_36, T_tdd_36_choice,
NULL);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_36_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_39_vals[] = {
{ 0, "tdd" },
{ 1, "fdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_36_choice[] = {
- { 0, &hf_rrc_tdd_34 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_33 },
- { 1, &hf_rrc_fdd_43 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+static const per_choice_t T_modeSpecificInfo_39_choice[] = {
+ { 0, &hf_rrc_tdd_37 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_36 },
+ { 1, &hf_rrc_fdd_44 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_36(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_39(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_36, T_modeSpecificInfo_36_choice,
+ ett_rrc_T_modeSpecificInfo_39, T_modeSpecificInfo_39_choice,
NULL);
return offset;
@@ -19695,7 +20587,7 @@ dissect_rrc_T_modeSpecificInfo_36(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t DL_HSPDSCH_Information_sequence[] = {
{ &hf_rrc_hs_scch_Info , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_SCCH_Info },
{ &hf_rrc_measurement_feedback_Info, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Measurement_Feedback_Info },
- { &hf_rrc_modeSpecificInfo_36, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_36 },
+ { &hf_rrc_modeSpecificInfo_39, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_39 },
{ NULL, 0, 0, NULL }
};
@@ -19773,6 +20665,8 @@ static const value_string rrc_HARQMemorySize_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_HARQMemorySize_vals_ext = VALUE_STRING_EXT_INIT(rrc_HARQMemorySize_vals);
+
static int
dissect_rrc_HARQMemorySize(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -21100,16 +21994,16 @@ dissect_rrc_RL_AdditionInformationList_r7(tvbuff_t *tvb _U_, int offset _U_, asn
}
-static const per_sequence_t T_fdd_87_sequence[] = {
+static const per_sequence_t T_fdd_90_sequence[] = {
{ &hf_rrc_hS_SCCHChannelisationCodeInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_Codes },
{ &hf_rrc_dl_ScramblingCode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SecondaryScramblingCode },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_87(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_90(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_87, T_fdd_87_sequence);
+ ett_rrc_T_fdd_90, T_fdd_90_sequence);
return offset;
}
@@ -21195,7 +22089,7 @@ dissect_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD384_r6(tvbuff_t *tvb _U_, i
}
-static const per_sequence_t T_tdd384_22_sequence[] = {
+static const per_sequence_t T_tdd384_23_sequence[] = {
{ &hf_rrc_nack_ack_power_offset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_M7_8 },
{ &hf_rrc_hs_SICH_PowerControl_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HS_SICH_Power_Control_Info_TDD384 },
{ &hf_rrc_dhs_sync , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DHS_Sync },
@@ -21205,9 +22099,9 @@ static const per_sequence_t T_tdd384_22_sequence[] = {
};
static int
-dissect_rrc_T_tdd384_22(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_23(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_22, T_tdd384_22_sequence);
+ ett_rrc_T_tdd384_23, T_tdd384_23_sequence);
return offset;
}
@@ -21264,6 +22158,8 @@ static const value_string rrc_DL_TS_ChannelisationCode_VHCR_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_DL_TS_ChannelisationCode_VHCR_vals_ext = VALUE_STRING_EXT_INIT(rrc_DL_TS_ChannelisationCode_VHCR_vals);
+
static int
dissect_rrc_DL_TS_ChannelisationCode_VHCR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -21397,7 +22293,7 @@ dissect_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD768(tvbuff_t *tvb _U_, int
}
-static const per_sequence_t T_tdd768_12_sequence[] = {
+static const per_sequence_t T_tdd768_13_sequence[] = {
{ &hf_rrc_nack_ack_power_offset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_M7_8 },
{ &hf_rrc_hs_SICH_PowerControl_Info_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HS_SICH_Power_Control_Info_TDD768 },
{ &hf_rrc_dhs_sync , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DHS_Sync },
@@ -21407,9 +22303,9 @@ static const per_sequence_t T_tdd768_12_sequence[] = {
};
static int
-dissect_rrc_T_tdd768_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd768_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd768_12, T_tdd768_12_sequence);
+ ett_rrc_T_tdd768_13, T_tdd768_13_sequence);
return offset;
}
@@ -21553,7 +22449,7 @@ dissect_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD128_r6(tvbuff_t *tvb _U_, i
}
-static const per_sequence_t T_tdd128_30_sequence[] = {
+static const per_sequence_t T_tdd128_32_sequence[] = {
{ &hf_rrc_nack_ack_power_offset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_M7_8 },
{ &hf_rrc_power_level_HSSICH, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_M120_M58 },
{ &hf_rrc_tpc_step_size_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tpc_step_size_01 },
@@ -21565,54 +22461,54 @@ static const per_sequence_t T_tdd128_30_sequence[] = {
};
static int
-dissect_rrc_T_tdd128_30(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_30, T_tdd128_30_sequence);
+ ett_rrc_T_tdd128_32, T_tdd128_32_sequence);
return offset;
}
-static const value_string rrc_T_tdd_45_vals[] = {
+static const value_string rrc_T_tdd_48_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd768" },
{ 2, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tdd_45_choice[] = {
- { 0, &hf_rrc_tdd384_24 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_22 },
- { 1, &hf_rrc_tdd768_14 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_12 },
- { 2, &hf_rrc_tdd128_31 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_30 },
+static const per_choice_t T_tdd_48_choice[] = {
+ { 0, &hf_rrc_tdd384_25 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_23 },
+ { 1, &hf_rrc_tdd768_15 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_13 },
+ { 2, &hf_rrc_tdd128_33 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_32 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tdd_45(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_48(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_45, T_tdd_45_choice,
+ ett_rrc_T_tdd_48, T_tdd_48_choice,
NULL);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_57_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_60_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_57_choice[] = {
- { 0, &hf_rrc_fdd_89 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_87 },
- { 1, &hf_rrc_tdd_49 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_45 },
+static const per_choice_t T_modeSpecificInfo_60_choice[] = {
+ { 0, &hf_rrc_fdd_92 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_90 },
+ { 1, &hf_rrc_tdd_52 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_48 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_57(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_60(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_57, T_modeSpecificInfo_57_choice,
+ ett_rrc_T_modeSpecificInfo_60, T_modeSpecificInfo_60_choice,
NULL);
return offset;
@@ -21620,7 +22516,7 @@ dissect_rrc_T_modeSpecificInfo_57(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t HS_SCCH_Info_r7_sequence[] = {
- { &hf_rrc_modeSpecificInfo_57, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_57 },
+ { &hf_rrc_modeSpecificInfo_60, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_60 },
{ NULL, 0, 0, NULL }
};
@@ -21663,7 +22559,7 @@ dissect_rrc_Feedback_cycle_r7(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
}
-static const per_sequence_t T_fdd_90_sequence[] = {
+static const per_sequence_t T_fdd_93_sequence[] = {
{ &hf_rrc_measurementPowerOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MeasurementPowerOffset },
{ &hf_rrc_feedback_cycle_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_Feedback_cycle_r7 },
{ &hf_rrc_cqi_RepetitionFactor, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CQI_RepetitionFactor },
@@ -21672,30 +22568,30 @@ static const per_sequence_t T_fdd_90_sequence[] = {
};
static int
-dissect_rrc_T_fdd_90(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_93(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_90, T_fdd_90_sequence);
+ ett_rrc_T_fdd_93, T_fdd_93_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_61_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_64_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_61_choice[] = {
- { 0, &hf_rrc_fdd_92 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_90 },
+static const per_choice_t T_modeSpecificInfo_64_choice[] = {
+ { 0, &hf_rrc_fdd_95 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_93 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_61(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_64(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_61, T_modeSpecificInfo_61_choice,
+ ett_rrc_T_modeSpecificInfo_64, T_modeSpecificInfo_64_choice,
NULL);
return offset;
@@ -21703,7 +22599,7 @@ dissect_rrc_T_modeSpecificInfo_61(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t Measurement_Feedback_Info_r7_sequence[] = {
- { &hf_rrc_modeSpecificInfo_61, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_61 },
+ { &hf_rrc_modeSpecificInfo_64, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_64 },
{ NULL, 0, 0, NULL }
};
@@ -21716,15 +22612,15 @@ dissect_rrc_Measurement_Feedback_Info_r7(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_tdd384_13_sequence[] = {
+static const per_sequence_t T_tdd384_14_sequence[] = {
{ &hf_rrc_dl_HSPDSCH_TS_Configuration, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_HSPDSCH_TS_Configuration },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd384_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_13, T_tdd384_13_sequence);
+ ett_rrc_T_tdd384_14, T_tdd384_14_sequence);
return offset;
}
@@ -21927,15 +22823,15 @@ dissect_rrc_DL_HSPDSCH_TS_Configuration_VHCR(tvbuff_t *tvb _U_, int offset _U_,
}
-static const per_sequence_t T_tdd768_05_sequence[] = {
+static const per_sequence_t T_tdd768_06_sequence[] = {
{ &hf_rrc_dl_HSPDSCH_TS_Configuration_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_HSPDSCH_TS_Configuration_VHCR },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd768_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd768_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd768_05, T_tdd768_05_sequence);
+ ett_rrc_T_tdd768_06, T_tdd768_06_sequence);
return offset;
}
@@ -22083,39 +22979,39 @@ dissect_rrc_DL_MultiCarrier_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_
}
-static const per_sequence_t T_tdd128_19_sequence[] = {
+static const per_sequence_t T_tdd128_21_sequence[] = {
{ &hf_rrc_hs_PDSCH_Midamble_Configuration_tdd128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_PDSCH_Midamble_Configuration_TDD128 },
{ &hf_rrc_dl_MultiCarrier_Information, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_MultiCarrier_Information },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_19, T_tdd128_19_sequence);
+ ett_rrc_T_tdd128_21, T_tdd128_21_sequence);
return offset;
}
-static const value_string rrc_T_tdd_35_vals[] = {
+static const value_string rrc_T_tdd_38_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd768" },
{ 2, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tdd_35_choice[] = {
- { 0, &hf_rrc_tdd384_14 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_13 },
- { 1, &hf_rrc_tdd768_06 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_05 },
- { 2, &hf_rrc_tdd128_19 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_19 },
+static const per_choice_t T_tdd_38_choice[] = {
+ { 0, &hf_rrc_tdd384_15 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_14 },
+ { 1, &hf_rrc_tdd768_07 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_06 },
+ { 2, &hf_rrc_tdd128_21 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_21 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tdd_35(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_38(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_35, T_tdd_35_choice,
+ ett_rrc_T_tdd_38, T_tdd_38_choice,
NULL);
return offset;
@@ -22137,36 +23033,36 @@ dissect_rrc_T_dl_64QAM_Configured(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_fdd_71_sequence[] = {
+static const per_sequence_t T_fdd_74_sequence[] = {
{ &hf_rrc_dl_64QAM_Configured, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dl_64QAM_Configured },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_71(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_74(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_71, T_fdd_71_sequence);
+ ett_rrc_T_fdd_74, T_fdd_74_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_38_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_41_vals[] = {
{ 0, "tdd" },
{ 1, "fdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_38_choice[] = {
- { 0, &hf_rrc_tdd_36 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_35 },
- { 1, &hf_rrc_fdd_72 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_71 },
+static const per_choice_t T_modeSpecificInfo_41_choice[] = {
+ { 0, &hf_rrc_tdd_39 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_38 },
+ { 1, &hf_rrc_fdd_75 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_74 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_38(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_41(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_38, T_modeSpecificInfo_38_choice,
+ ett_rrc_T_modeSpecificInfo_41, T_modeSpecificInfo_41_choice,
NULL);
return offset;
@@ -22176,7 +23072,7 @@ dissect_rrc_T_modeSpecificInfo_38(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t DL_HSPDSCH_Information_r7_sequence[] = {
{ &hf_rrc_hs_scch_Info_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_SCCH_Info_r7 },
{ &hf_rrc_measurement_feedback_Info_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Measurement_Feedback_Info_r7 },
- { &hf_rrc_modeSpecificInfo_38, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_38 },
+ { &hf_rrc_modeSpecificInfo_41, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_41 },
{ NULL, 0, 0, NULL }
};
@@ -22742,16 +23638,16 @@ dissect_rrc_T_r7(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_
}
-static const per_sequence_t T_fdd_91_sequence[] = {
+static const per_sequence_t T_fdd_94_sequence[] = {
{ &hf_rrc_mimoN_M_Ratio , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MIMO_N_M_Ratio },
{ &hf_rrc_mimoPilotConfiguration, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MIMO_PilotConfiguration },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_91(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_94(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_91, T_fdd_91_sequence);
+ ett_rrc_T_fdd_94, T_fdd_94_sequence);
return offset;
}
@@ -22813,59 +23709,59 @@ dissect_rrc_HS_SICH_ReferenceSignalInfoList(tvbuff_t *tvb _U_, int offset _U_, a
}
-static const per_sequence_t T_tdd128_33_sequence[] = {
+static const per_sequence_t T_tdd128_35_sequence[] = {
{ &hf_rrc_mimoSFModeForHSPDSCHDualStream, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_mimoSFModeForHSPDSCHDualStream },
{ &hf_rrc_hs_sich_ReferenceSignalInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_SICH_ReferenceSignalInfoList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_33(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_35(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_33, T_tdd128_33_sequence);
+ ett_rrc_T_tdd128_35, T_tdd128_35_sequence);
return offset;
}
-static const value_string rrc_T_tdd_48_vals[] = {
+static const value_string rrc_T_tdd_51_vals[] = {
{ 0, "tdd128" },
{ 1, "tdd384-tdd768" },
{ 0, NULL }
};
-static const per_choice_t T_tdd_48_choice[] = {
- { 0, &hf_rrc_tdd128_34 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_33 },
+static const per_choice_t T_tdd_51_choice[] = {
+ { 0, &hf_rrc_tdd128_36 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_35 },
{ 1, &hf_rrc_tdd384_tdd768_03, ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tdd_48(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_51(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_48, T_tdd_48_choice,
+ ett_rrc_T_tdd_51, T_tdd_51_choice,
NULL);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_62_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_65_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_62_choice[] = {
- { 0, &hf_rrc_fdd_93 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_91 },
- { 1, &hf_rrc_tdd_52 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_48 },
+static const per_choice_t T_modeSpecificInfo_65_choice[] = {
+ { 0, &hf_rrc_fdd_96 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_94 },
+ { 1, &hf_rrc_tdd_55 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_51 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_62(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_65(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_62, T_modeSpecificInfo_62_choice,
+ ett_rrc_T_modeSpecificInfo_65, T_modeSpecificInfo_65_choice,
NULL);
return offset;
@@ -22874,7 +23770,7 @@ dissect_rrc_T_modeSpecificInfo_62(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t MIMO_Parameters_r8_sequence[] = {
{ &hf_rrc_mimoOperation , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MIMO_Operation },
- { &hf_rrc_modeSpecificInfo_62, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_62 },
+ { &hf_rrc_modeSpecificInfo_65, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_65 },
{ NULL, 0, 0, NULL }
};
@@ -22919,67 +23815,67 @@ dissect_rrc_ActivationTimeOffset(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
}
-static const per_sequence_t T_tdd384_14_sequence[] = {
+static const per_sequence_t T_tdd384_15_sequence[] = {
{ &hf_rrc_dl_HSPDSCH_TS_Configuration, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_HSPDSCH_TS_Configuration },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd384_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_14, T_tdd384_14_sequence);
+ ett_rrc_T_tdd384_15, T_tdd384_15_sequence);
return offset;
}
-static const per_sequence_t T_tdd768_06_sequence[] = {
+static const per_sequence_t T_tdd768_07_sequence[] = {
{ &hf_rrc_dl_HSPDSCH_TS_Configuration_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_HSPDSCH_TS_Configuration_VHCR },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd768_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd768_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd768_06, T_tdd768_06_sequence);
+ ett_rrc_T_tdd768_07, T_tdd768_07_sequence);
return offset;
}
-static const per_sequence_t T_tdd128_20_sequence[] = {
+static const per_sequence_t T_tdd128_22_sequence[] = {
{ &hf_rrc_hs_PDSCH_Midamble_Configuration_tdd128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_PDSCH_Midamble_Configuration_TDD128 },
{ &hf_rrc_dl_MultiCarrier_Information, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_MultiCarrier_Information },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_22(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_20, T_tdd128_20_sequence);
+ ett_rrc_T_tdd128_22, T_tdd128_22_sequence);
return offset;
}
-static const value_string rrc_T_tdd_36_vals[] = {
+static const value_string rrc_T_tdd_39_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd768" },
{ 2, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tdd_36_choice[] = {
- { 0, &hf_rrc_tdd384_15 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_14 },
- { 1, &hf_rrc_tdd768_07 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_06 },
- { 2, &hf_rrc_tdd128_20 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_20 },
+static const per_choice_t T_tdd_39_choice[] = {
+ { 0, &hf_rrc_tdd384_16 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_15 },
+ { 1, &hf_rrc_tdd768_08 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_07 },
+ { 2, &hf_rrc_tdd128_22 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_22 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tdd_36(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_39(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_36, T_tdd_36_choice,
+ ett_rrc_T_tdd_39, T_tdd_39_choice,
NULL);
return offset;
@@ -23001,37 +23897,37 @@ dissect_rrc_T_dl_64QAM_Configured_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_fdd_72_sequence[] = {
+static const per_sequence_t T_fdd_75_sequence[] = {
{ &hf_rrc_dl_64QAM_Configured_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dl_64QAM_Configured_01 },
{ &hf_rrc_hs_DSCH_TBSizeTable, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_DSCH_TBSizeTable },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_72(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_75(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_72, T_fdd_72_sequence);
+ ett_rrc_T_fdd_75, T_fdd_75_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_39_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_42_vals[] = {
{ 0, "tdd" },
{ 1, "fdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_39_choice[] = {
- { 0, &hf_rrc_tdd_37 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_36 },
- { 1, &hf_rrc_fdd_73 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_72 },
+static const per_choice_t T_modeSpecificInfo_42_choice[] = {
+ { 0, &hf_rrc_tdd_40 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_39 },
+ { 1, &hf_rrc_fdd_76 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_75 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_39(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_42(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_39, T_modeSpecificInfo_39_choice,
+ ett_rrc_T_modeSpecificInfo_42, T_modeSpecificInfo_42_choice,
NULL);
return offset;
@@ -23041,7 +23937,7 @@ dissect_rrc_T_modeSpecificInfo_39(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t DL_HSPDSCH_Information_r8_sequence[] = {
{ &hf_rrc_hs_scch_Info_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_SCCH_Info_r7 },
{ &hf_rrc_measurement_feedback_Info_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Measurement_Feedback_Info_r7 },
- { &hf_rrc_modeSpecificInfo_39, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_39 },
+ { &hf_rrc_modeSpecificInfo_42, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_42 },
{ NULL, 0, 0, NULL }
};
@@ -23332,7 +24228,7 @@ dissect_rrc_TargetCellPreconfigInfo_v890ext(tvbuff_t *tvb _U_, int offset _U_, a
static const per_sequence_t RL_AdditionInformation_v890ext_sequence[] = {
- { &hf_rrc_targetCellPreconfigInfo_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TargetCellPreconfigInfo_v890ext },
+ { &hf_rrc_targetCellPreconfigInfo_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TargetCellPreconfigInfo_v890ext },
{ NULL, 0, 0, NULL }
};
@@ -23500,7 +24396,7 @@ dissect_rrc_T_precodingWeightSetRestriction_01(tvbuff_t *tvb _U_, int offset _U_
}
-static const per_sequence_t T_fdd_92_sequence[] = {
+static const per_sequence_t T_fdd_95_sequence[] = {
{ &hf_rrc_mimoN_M_Ratio , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MIMO_N_M_Ratio },
{ &hf_rrc_mimoPilotConfiguration_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MIMO_PilotConfiguration_r9 },
{ &hf_rrc_precodingWeightSetRestriction_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_precodingWeightSetRestriction_01 },
@@ -23508,9 +24404,9 @@ static const per_sequence_t T_fdd_92_sequence[] = {
};
static int
-dissect_rrc_T_fdd_92(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_95(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_92, T_fdd_92_sequence);
+ ett_rrc_T_fdd_95, T_fdd_95_sequence);
return offset;
}
@@ -23532,59 +24428,59 @@ dissect_rrc_T_mimoSFModeForHSPDSCHDualStream_01(tvbuff_t *tvb _U_, int offset _U
}
-static const per_sequence_t T_tdd128_34_sequence[] = {
+static const per_sequence_t T_tdd128_36_sequence[] = {
{ &hf_rrc_mimoSFModeForHSPDSCHDualStream_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_mimoSFModeForHSPDSCHDualStream_01 },
{ &hf_rrc_hs_sich_ReferenceSignalInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_SICH_ReferenceSignalInfoList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_34(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_36(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_34, T_tdd128_34_sequence);
+ ett_rrc_T_tdd128_36, T_tdd128_36_sequence);
return offset;
}
-static const value_string rrc_T_tdd_49_vals[] = {
+static const value_string rrc_T_tdd_52_vals[] = {
{ 0, "tdd128" },
{ 1, "tdd384-tdd768" },
{ 0, NULL }
};
-static const per_choice_t T_tdd_49_choice[] = {
- { 0, &hf_rrc_tdd128_35 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_34 },
+static const per_choice_t T_tdd_52_choice[] = {
+ { 0, &hf_rrc_tdd128_37 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_36 },
{ 1, &hf_rrc_tdd384_tdd768_03, ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tdd_49(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_52(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_49, T_tdd_49_choice,
+ ett_rrc_T_tdd_52, T_tdd_52_choice,
NULL);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_63_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_66_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_63_choice[] = {
- { 0, &hf_rrc_fdd_94 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_92 },
- { 1, &hf_rrc_tdd_53 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_49 },
+static const per_choice_t T_modeSpecificInfo_66_choice[] = {
+ { 0, &hf_rrc_fdd_97 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_95 },
+ { 1, &hf_rrc_tdd_56 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_52 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_63(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_66(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_63, T_modeSpecificInfo_63_choice,
+ ett_rrc_T_modeSpecificInfo_66, T_modeSpecificInfo_66_choice,
NULL);
return offset;
@@ -23593,7 +24489,7 @@ dissect_rrc_T_modeSpecificInfo_63(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t MIMO_Parameters_r9_sequence[] = {
{ &hf_rrc_mimoOperation , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MIMO_Operation },
- { &hf_rrc_modeSpecificInfo_63, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_63 },
+ { &hf_rrc_modeSpecificInfo_66, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_66 },
{ NULL, 0, 0, NULL }
};
@@ -23650,22 +24546,22 @@ dissect_rrc_FrequencyInfoTDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const value_string rrc_T_modeSpecificInfo_54_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_57_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_54_choice[] = {
- { 0, &hf_rrc_fdd_86 , ASN1_NO_EXTENSIONS , dissect_rrc_FrequencyInfoFDD },
- { 1, &hf_rrc_tdd_46 , ASN1_NO_EXTENSIONS , dissect_rrc_FrequencyInfoTDD },
+static const per_choice_t T_modeSpecificInfo_57_choice[] = {
+ { 0, &hf_rrc_fdd_89 , ASN1_NO_EXTENSIONS , dissect_rrc_FrequencyInfoFDD },
+ { 1, &hf_rrc_tdd_49 , ASN1_NO_EXTENSIONS , dissect_rrc_FrequencyInfoTDD },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_54(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_57(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_54, T_modeSpecificInfo_54_choice,
+ ett_rrc_T_modeSpecificInfo_57, T_modeSpecificInfo_57_choice,
NULL);
return offset;
@@ -23673,7 +24569,7 @@ dissect_rrc_T_modeSpecificInfo_54(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t FrequencyInfo_sequence[] = {
- { &hf_rrc_modeSpecificInfo_54, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_54 },
+ { &hf_rrc_modeSpecificInfo_57, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_57 },
{ NULL, 0, 0, NULL }
};
@@ -24036,22 +24932,22 @@ dissect_rrc_T_dl_dpchInfo_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_fdd_88_sequence[] = {
+static const per_sequence_t T_fdd_91_sequence[] = {
{ &hf_rrc_hS_SCCHChannelisationCodeInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_Codes },
{ &hf_rrc_dl_ScramblingCode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SecondaryScramblingCode },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_88(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_91(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_88, T_fdd_88_sequence);
+ ett_rrc_T_fdd_91, T_fdd_91_sequence);
return offset;
}
-static const per_sequence_t T_tdd384_23_sequence[] = {
+static const per_sequence_t T_tdd384_24_sequence[] = {
{ &hf_rrc_nack_ack_power_offset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_M7_8 },
{ &hf_rrc_hs_SICH_PowerControl_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HS_SICH_Power_Control_Info_TDD384 },
{ &hf_rrc_dhs_sync , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DHS_Sync },
@@ -24061,15 +24957,15 @@ static const per_sequence_t T_tdd384_23_sequence[] = {
};
static int
-dissect_rrc_T_tdd384_23(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_23, T_tdd384_23_sequence);
+ ett_rrc_T_tdd384_24, T_tdd384_24_sequence);
return offset;
}
-static const per_sequence_t T_tdd768_13_sequence[] = {
+static const per_sequence_t T_tdd768_14_sequence[] = {
{ &hf_rrc_nack_ack_power_offset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_M7_8 },
{ &hf_rrc_hs_SICH_PowerControl_Info_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HS_SICH_Power_Control_Info_TDD768 },
{ &hf_rrc_dhs_sync , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DHS_Sync },
@@ -24079,9 +24975,9 @@ static const per_sequence_t T_tdd768_13_sequence[] = {
};
static int
-dissect_rrc_T_tdd768_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd768_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd768_13, T_tdd768_13_sequence);
+ ett_rrc_T_tdd768_14, T_tdd768_14_sequence);
return offset;
}
@@ -24123,7 +25019,7 @@ dissect_rrc_T_hS_SCCH_tpc_step_size_01(tvbuff_t *tvb _U_, int offset _U_, asn1_c
}
-static const per_sequence_t T_tdd128_32_sequence[] = {
+static const per_sequence_t T_tdd128_34_sequence[] = {
{ &hf_rrc_nack_ack_power_offset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_M7_8 },
{ &hf_rrc_power_level_HSSICH, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_M120_M58 },
{ &hf_rrc_tpc_step_size_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tpc_step_size_02 },
@@ -24136,54 +25032,54 @@ static const per_sequence_t T_tdd128_32_sequence[] = {
};
static int
-dissect_rrc_T_tdd128_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_34(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_32, T_tdd128_32_sequence);
+ ett_rrc_T_tdd128_34, T_tdd128_34_sequence);
return offset;
}
-static const value_string rrc_T_tdd_47_vals[] = {
+static const value_string rrc_T_tdd_50_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd768" },
{ 2, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tdd_47_choice[] = {
- { 0, &hf_rrc_tdd384_25 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_23 },
- { 1, &hf_rrc_tdd768_15 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_13 },
- { 2, &hf_rrc_tdd128_33 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_32 },
+static const per_choice_t T_tdd_50_choice[] = {
+ { 0, &hf_rrc_tdd384_26 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_24 },
+ { 1, &hf_rrc_tdd768_16 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_14 },
+ { 2, &hf_rrc_tdd128_35 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_34 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tdd_47(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_50(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_47, T_tdd_47_choice,
+ ett_rrc_T_tdd_50, T_tdd_50_choice,
NULL);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_59_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_62_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_59_choice[] = {
- { 0, &hf_rrc_fdd_90 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_88 },
- { 1, &hf_rrc_tdd_51 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_47 },
+static const per_choice_t T_modeSpecificInfo_62_choice[] = {
+ { 0, &hf_rrc_fdd_93 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_91 },
+ { 1, &hf_rrc_tdd_54 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_50 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_59(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_62(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_59, T_modeSpecificInfo_59_choice,
+ ett_rrc_T_modeSpecificInfo_62, T_modeSpecificInfo_62_choice,
NULL);
return offset;
@@ -24191,7 +25087,7 @@ dissect_rrc_T_modeSpecificInfo_59(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t HS_SCCH_Info_r9_sequence[] = {
- { &hf_rrc_modeSpecificInfo_59, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_59 },
+ { &hf_rrc_modeSpecificInfo_62, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_62 },
{ NULL, 0, 0, NULL }
};
@@ -24204,29 +25100,29 @@ dissect_rrc_HS_SCCH_Info_r9(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_tdd384_15_sequence[] = {
+static const per_sequence_t T_tdd384_16_sequence[] = {
{ &hf_rrc_dl_HSPDSCH_TS_Configuration, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_HSPDSCH_TS_Configuration },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd384_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_15, T_tdd384_15_sequence);
+ ett_rrc_T_tdd384_16, T_tdd384_16_sequence);
return offset;
}
-static const per_sequence_t T_tdd768_07_sequence[] = {
+static const per_sequence_t T_tdd768_08_sequence[] = {
{ &hf_rrc_dl_HSPDSCH_TS_Configuration_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_HSPDSCH_TS_Configuration_VHCR },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd768_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd768_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd768_07, T_tdd768_07_sequence);
+ ett_rrc_T_tdd768_08, T_tdd768_08_sequence);
return offset;
}
@@ -24269,7 +25165,7 @@ dissect_rrc_OutofSyncWindow(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_tdd128_22_sequence[] = {
+static const per_sequence_t T_tdd128_24_sequence[] = {
{ &hf_rrc_hs_PDSCH_Midamble_Configuration_tdd128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_PDSCH_Midamble_Configuration_TDD128 },
{ &hf_rrc_dl_MultiCarrier_Information, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_MultiCarrier_Information },
{ &hf_rrc_tS0_Indicator , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_tS0_Indicator },
@@ -24278,32 +25174,32 @@ static const per_sequence_t T_tdd128_22_sequence[] = {
};
static int
-dissect_rrc_T_tdd128_22(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_22, T_tdd128_22_sequence);
+ ett_rrc_T_tdd128_24, T_tdd128_24_sequence);
return offset;
}
-static const value_string rrc_T_tdd_38_vals[] = {
+static const value_string rrc_T_tdd_41_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd768" },
{ 2, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tdd_38_choice[] = {
- { 0, &hf_rrc_tdd384_16 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_15 },
- { 1, &hf_rrc_tdd768_08 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_07 },
- { 2, &hf_rrc_tdd128_22 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_22 },
+static const per_choice_t T_tdd_41_choice[] = {
+ { 0, &hf_rrc_tdd384_17 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_16 },
+ { 1, &hf_rrc_tdd768_09 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_08 },
+ { 2, &hf_rrc_tdd128_24 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_24 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tdd_38(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_41(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_38, T_tdd_38_choice,
+ ett_rrc_T_tdd_41, T_tdd_41_choice,
NULL);
return offset;
@@ -24325,37 +25221,37 @@ dissect_rrc_T_dl_64QAM_Configured_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_fdd_73_sequence[] = {
+static const per_sequence_t T_fdd_76_sequence[] = {
{ &hf_rrc_dl_64QAM_Configured_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dl_64QAM_Configured_02 },
{ &hf_rrc_hs_DSCH_TBSizeTable, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_DSCH_TBSizeTable },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_73(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_76(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_73, T_fdd_73_sequence);
+ ett_rrc_T_fdd_76, T_fdd_76_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_41_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_44_vals[] = {
{ 0, "tdd" },
{ 1, "fdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_41_choice[] = {
- { 0, &hf_rrc_tdd_39 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_38 },
- { 1, &hf_rrc_fdd_74 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_73 },
+static const per_choice_t T_modeSpecificInfo_44_choice[] = {
+ { 0, &hf_rrc_tdd_42 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_41 },
+ { 1, &hf_rrc_fdd_77 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_76 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_41(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_44(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_41, T_modeSpecificInfo_41_choice,
+ ett_rrc_T_modeSpecificInfo_44, T_modeSpecificInfo_44_choice,
NULL);
return offset;
@@ -24365,7 +25261,7 @@ dissect_rrc_T_modeSpecificInfo_41(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t DL_HSPDSCH_Information_r9_sequence[] = {
{ &hf_rrc_hs_scch_Info_04 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_SCCH_Info_r9 },
{ &hf_rrc_measurement_feedback_Info_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Measurement_Feedback_Info_r7 },
- { &hf_rrc_modeSpecificInfo_41, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_41 },
+ { &hf_rrc_modeSpecificInfo_44, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_44 },
{ NULL, 0, 0, NULL }
};
@@ -24487,16 +25383,16 @@ dissect_rrc_T_configurationInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
}
-static const per_sequence_t T_newConfiguration_03_sequence[] = {
+static const per_sequence_t T_newConfiguration_05_sequence[] = {
{ &hf_rrc_mimoN_M_Ratio , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MIMO_N_M_Ratio },
{ &hf_rrc_mimoPilotConfiguration_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MIMO_PilotConfiguration_r9 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_newConfiguration_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_newConfiguration_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_newConfiguration_03, T_newConfiguration_03_sequence);
+ ett_rrc_T_newConfiguration_05, T_newConfiguration_05_sequence);
return offset;
}
@@ -24510,7 +25406,7 @@ static const value_string rrc_SecondaryCellMIMOparametersFDD_vals[] = {
static const per_choice_t SecondaryCellMIMOparametersFDD_choice[] = {
{ 0, &hf_rrc_continue , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 1, &hf_rrc_newConfiguration_03, ASN1_NO_EXTENSIONS , dissect_rrc_T_newConfiguration_03 },
+ { 1, &hf_rrc_newConfiguration_05, ASN1_NO_EXTENSIONS , dissect_rrc_T_newConfiguration_05 },
{ 0, NULL, 0, NULL }
};
@@ -24723,7 +25619,7 @@ dissect_rrc_TargetCellPreconfigInfo_v950ext(tvbuff_t *tvb _U_, int offset _U_, a
static const per_sequence_t RL_AdditionInformation_v950ext_sequence[] = {
- { &hf_rrc_targetCellPreconfigInfo_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TargetCellPreconfigInfo_v950ext },
+ { &hf_rrc_targetCellPreconfigInfo_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TargetCellPreconfigInfo_v950ext },
{ NULL, 0, 0, NULL }
};
@@ -24809,14 +25705,358 @@ dissect_rrc_T_r9(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_
}
-static const per_sequence_t T_criticalExtensions_04_sequence[] = {
+static const value_string rrc_T_dl_dpchInfo_07_vals[] = {
+ { 0, "dl-DPCH-InfoPerRL" },
+ { 1, "dl-FDPCH-InfoPerRL" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_dl_dpchInfo_07_choice[] = {
+ { 0, &hf_rrc_dl_DPCH_InfoPerRL_02, ASN1_NO_EXTENSIONS , dissect_rrc_DL_DPCH_InfoPerRL_r5 },
+ { 1, &hf_rrc_dl_FDPCH_InfoPerRL_01, ASN1_NO_EXTENSIONS , dissect_rrc_DL_FDPCH_InfoPerRL_r7 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_dl_dpchInfo_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_dl_dpchInfo_07, T_dl_dpchInfo_07_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_dl_64QAM_Configured_05_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_dl_64QAM_Configured_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_differentTxModeFromServingHS_DSCHCell_02_vals[] = {
+ { 0, "different" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_differentTxModeFromServingHS_DSCHCell_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_newConfiguration_03_sequence[] = {
+ { &hf_rrc_new_H_RNTI , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_H_RNTI },
+ { &hf_rrc_dl_64QAM_Configured_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dl_64QAM_Configured_05 },
+ { &hf_rrc_hs_DSCH_TBSizeTable, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_DSCH_TBSizeTable },
+ { &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
+ { &hf_rrc_dl_ScramblingCode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SecondaryScramblingCode },
+ { &hf_rrc_hS_SCCHChannelisationCodeInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_Codes },
+ { &hf_rrc_measurementPowerOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MeasurementPowerOffset },
+ { &hf_rrc_uarfcn_DL , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UARFCN },
+ { &hf_rrc_differentTxModeFromServingHS_DSCHCell_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_differentTxModeFromServingHS_DSCHCell_02 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_newConfiguration_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_newConfiguration_03, T_newConfiguration_03_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_configurationInfo_01_vals[] = {
+ { 0, "continue" },
+ { 1, "newConfiguration" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_configurationInfo_01_choice[] = {
+ { 0, &hf_rrc_continue , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_newConfiguration_03, ASN1_NO_EXTENSIONS , dissect_rrc_T_newConfiguration_03 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_configurationInfo_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_configurationInfo_01, T_configurationInfo_01_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_precodingWeightSetRestriction_03_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_precodingWeightSetRestriction_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_newConfiguration_06_sequence[] = {
+ { &hf_rrc_mimoN_M_Ratio , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MIMO_N_M_Ratio },
+ { &hf_rrc_mimoPilotConfiguration_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MIMO_PilotConfiguration_r9 },
+ { &hf_rrc_precodingWeightSetRestriction_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_precodingWeightSetRestriction_03 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_newConfiguration_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_newConfiguration_06, T_newConfiguration_06_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_SecondaryCellMIMOparametersFDD_r10_vals[] = {
+ { 0, "continue" },
+ { 1, "newConfiguration" },
+ { 0, NULL }
+};
+
+static const per_choice_t SecondaryCellMIMOparametersFDD_r10_choice[] = {
+ { 0, &hf_rrc_continue , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_newConfiguration_06, ASN1_NO_EXTENSIONS , dissect_rrc_T_newConfiguration_06 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_SecondaryCellMIMOparametersFDD_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_SecondaryCellMIMOparametersFDD_r10, SecondaryCellMIMOparametersFDD_r10_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t DL_SecondaryCellInfoFDD_r10_sequence[] = {
+ { &hf_rrc_configurationInfo_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_configurationInfo_01 },
+ { &hf_rrc_secondaryCellMIMOparameters_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SecondaryCellMIMOparametersFDD_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_DL_SecondaryCellInfoFDD_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_04, T_criticalExtensions_04_sequence);
+ ett_rrc_DL_SecondaryCellInfoFDD_r10, DL_SecondaryCellInfoFDD_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t AdditionalDLSecCellInfoFDD_sequence[] = {
+ { &hf_rrc_dl_SecondaryCellInfoFDD_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_SecondaryCellInfoFDD_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_AdditionalDLSecCellInfoFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_AdditionalDLSecCellInfoFDD, AdditionalDLSecCellInfoFDD_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t AdditionalDLSecCellInfoListFDD_sequence_of[1] = {
+ { &hf_rrc_AdditionalDLSecCellInfoListFDD_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_AdditionalDLSecCellInfoFDD },
+};
+
+static int
+dissect_rrc_AdditionalDLSecCellInfoListFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_AdditionalDLSecCellInfoListFDD, AdditionalDLSecCellInfoListFDD_sequence_of,
+ 2, 2, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t TargetCellPreconfigInfo_r10_sequence[] = {
+ { &hf_rrc_activationTimeOffset, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ActivationTimeOffset },
+ { &hf_rrc_new_H_RNTI , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_H_RNTI },
+ { &hf_rrc_newPrimary_E_RNTI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RNTI },
+ { &hf_rrc_newSecondary_E_RNTI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RNTI },
+ { &hf_rrc_serving_HSDSCH_CellInformation_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_Serving_HSDSCH_CellInformation_r9 },
+ { &hf_rrc_e_dch_ReconfigurationInfo_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_E_DCH_ReconfigurationInfo_r7 },
+ { &hf_rrc_dtx_drx_TimingInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DTX_DRX_TimingInfo_r7 },
+ { &hf_rrc_dtx_drx_Info , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DTX_DRX_Info_r7 },
+ { &hf_rrc_hs_scch_LessInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_SCCH_LessInfo_r7 },
+ { &hf_rrc_mimoParameters_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MIMO_Parameters_r9 },
+ { &hf_rrc_dl_SecondaryCellInfoFDD_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_SecondaryCellInfoFDD_r10 },
+ { &hf_rrc_additionalDLSecCellInfoListFDD, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_AdditionalDLSecCellInfoListFDD },
+ { &hf_rrc_ul_SecondaryCellInfoFDD, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_SecondaryCellInfoFDD },
+ { &hf_rrc_e_dch_ReconfigurationInfo_SecULFrequency, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_DCH_ReconfigurationInfo_SecULFrequency },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_TargetCellPreconfigInfo_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_TargetCellPreconfigInfo_r10, TargetCellPreconfigInfo_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t RL_AdditionInformation_r10_sequence[] = {
+ { &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
+ { &hf_rrc_cell_Id , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellIdentity },
+ { &hf_rrc_dl_dpchInfo_07 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_dl_dpchInfo_07 },
+ { &hf_rrc_e_HICH_Information, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_HICH_Information },
+ { &hf_rrc_e_RGCH_Information, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RGCH_Information },
+ { &hf_rrc_targetCellPreconfigInfo_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TargetCellPreconfigInfo_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_RL_AdditionInformation_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_RL_AdditionInformation_r10, RL_AdditionInformation_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t RL_AdditionInformationList_r10_sequence_of[1] = {
+ { &hf_rrc_RL_AdditionInformationList_r10_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RL_AdditionInformation_r10 },
+};
+
+static int
+dissect_rrc_RL_AdditionInformationList_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_RL_AdditionInformationList_r10, RL_AdditionInformationList_r10_sequence_of,
+ 1, maxRL_1, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t ActiveSetUpdate_r10_IEs_sequence[] = {
+ { &hf_rrc_activationTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ActivationTime },
+ { &hf_rrc_newU_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_U_RNTI },
+ { &hf_rrc_newH_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_H_RNTI },
+ { &hf_rrc_newPrimary_E_RNTI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RNTI },
+ { &hf_rrc_newSecondary_E_RNTI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RNTI },
+ { &hf_rrc_cn_InformationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_InformationInfo_r6 },
+ { &hf_rrc_dtx_drx_TimingInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DTX_DRX_TimingInfo_r7 },
+ { &hf_rrc_dtx_drx_Info , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DTX_DRX_Info_r7 },
+ { &hf_rrc_hs_scch_LessInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_SCCH_LessInfo_r7 },
+ { &hf_rrc_mimoParameters_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MIMO_Parameters_r9 },
+ { &hf_rrc_maxAllowedUL_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MaxAllowedUL_TX_Power },
+ { &hf_rrc_ul_SecondaryCellInfoFDD, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_SecondaryCellInfoFDD },
+ { &hf_rrc_e_dch_ReconfigurationInfo_SecULFrequency, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_DCH_ReconfigurationInfo_SecULFrequency },
+ { &hf_rrc_rl_AdditionInformationList_07, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RL_AdditionInformationList_r10 },
+ { &hf_rrc_rl_AdditionInformationList_SecULFreq, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RL_AdditionInformationList_SecULFreq },
+ { &hf_rrc_servingCellChangeParameters, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ServingCellChangeParameters },
+ { &hf_rrc_rl_RemovalInformationList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RL_RemovalInformationList },
+ { &hf_rrc_rl_RemovalInformationList_SecULFreq, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RL_RemovalInformationList_SecULFreq },
+ { &hf_rrc_tx_DiversityMode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TX_DiversityMode },
+ { &hf_rrc_dpc_Mode , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DPC_Mode },
+ { &hf_rrc_serving_HSDSCH_CellInformation_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Serving_HSDSCH_CellInformation_r9 },
+ { &hf_rrc_e_dch_ReconfigurationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_DCH_ReconfigurationInfo_r7 },
+ { &hf_rrc_ul_16QAM_Config , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_16QAM_Config },
+ { &hf_rrc_e_dch_ReconfInfoSameCell, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_DCH_RL_InfoSameServingCell },
+ { &hf_rrc_e_TFC_Boost_Info, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_TFC_Boost_Info_r7 },
+ { &hf_rrc_e_DPDCH_PowerInterpolation, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_DPDCH_PowerInterpolation },
+ { &hf_rrc_dl_SecondaryCellInfoFDD_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_SecondaryCellInfoFDD_r10 },
+ { &hf_rrc_additionalDLSecCellInfoListFDD, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_AdditionalDLSecCellInfoListFDD },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_ActiveSetUpdate_r10_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_ActiveSetUpdate_r10_IEs, ActiveSetUpdate_r10_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_05_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_05, T_nonCriticalExtensions_05_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_r10_sequence[] = {
+ { &hf_rrc_activeSetUpdate_r10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_ActiveSetUpdate_r10_IEs },
+ { &hf_rrc_activeSetUpdate_r10_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
+ { &hf_rrc_nonCriticalExtensions_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_05 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_r10, T_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_criticalExtensions_05_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_05, T_criticalExtensions_05_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_criticalExtensions_04_vals[] = {
+ { 0, "r10" },
+ { 1, "criticalExtensions" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_criticalExtensions_04_choice[] = {
+ { 0, &hf_rrc_r10 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r10 },
+ { 1, &hf_rrc_criticalExtensions_05, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_05 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_04, T_criticalExtensions_04_choice,
+ NULL);
return offset;
}
@@ -24939,7 +26179,7 @@ static const per_choice_t ActiveSetUpdate_choice[] = {
static int
dissect_rrc_ActiveSetUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 125 "../../asn1/rrc/rrc.cnf"
+#line 162 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "ActiveSetUpdate");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_ActiveSetUpdate, ActiveSetUpdate_choice,
@@ -24987,15 +26227,15 @@ dissect_rrc_T_utran_GPSTimingOfCell(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
-static const per_sequence_t T_fdd_166_sequence[] = {
+static const per_sequence_t T_fdd_171_sequence[] = {
{ &hf_rrc_referenceIdentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_166(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_171(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_166, T_fdd_166_sequence);
+ ett_rrc_T_fdd_171, T_fdd_171_sequence);
return offset;
}
@@ -25011,36 +26251,36 @@ dissect_rrc_CellParametersID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_tdd_117_sequence[] = {
+static const per_sequence_t T_tdd_122_sequence[] = {
{ &hf_rrc_referenceIdentity_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellParametersID },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_117(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_122(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_117, T_tdd_117_sequence);
+ ett_rrc_T_tdd_122, T_tdd_122_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_132_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_138_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_132_choice[] = {
- { 0, &hf_rrc_fdd_172 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_166 },
- { 1, &hf_rrc_tdd_125 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_117 },
+static const per_choice_t T_modeSpecificInfo_138_choice[] = {
+ { 0, &hf_rrc_fdd_177 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_171 },
+ { 1, &hf_rrc_tdd_130 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_122 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_132(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_138(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_132, T_modeSpecificInfo_132_choice,
+ ett_rrc_T_modeSpecificInfo_138, T_modeSpecificInfo_138_choice,
NULL);
return offset;
@@ -25049,7 +26289,7 @@ dissect_rrc_T_modeSpecificInfo_132(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t UTRAN_GPSReferenceTime_sequence[] = {
{ &hf_rrc_utran_GPSTimingOfCell, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_utran_GPSTimingOfCell },
- { &hf_rrc_modeSpecificInfo_132, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_modeSpecificInfo_132 },
+ { &hf_rrc_modeSpecificInfo_138, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_modeSpecificInfo_138 },
{ &hf_rrc_sfn , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_4095 },
{ NULL, 0, 0, NULL }
};
@@ -25960,7 +27200,7 @@ dissect_rrc_AcquisitionSatInfoList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t UE_Positioning_GPS_AcquisitionAssistance_sequence[] = {
{ &hf_rrc_gps_ReferenceTime, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_GPS_TOW_1msec },
{ &hf_rrc_utran_GPSReferenceTime, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UTRAN_GPSReferenceTime },
- { &hf_rrc_satelliteInformationList_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_AcquisitionSatInfoList },
+ { &hf_rrc_satelliteInformationList_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_AcquisitionSatInfoList },
{ NULL, 0, 0, NULL }
};
@@ -25987,50 +27227,50 @@ dissect_rrc_BadSatList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
}
-static const per_sequence_t T_fdd_153_sequence[] = {
+static const per_sequence_t T_fdd_158_sequence[] = {
{ &hf_rrc_referenceIdentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_153(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_158(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_153, T_fdd_153_sequence);
+ ett_rrc_T_fdd_158, T_fdd_158_sequence);
return offset;
}
-static const per_sequence_t T_tdd_104_sequence[] = {
+static const per_sequence_t T_tdd_109_sequence[] = {
{ &hf_rrc_referenceIdentity_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellParametersID },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_104(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_109(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_104, T_tdd_104_sequence);
+ ett_rrc_T_tdd_109, T_tdd_109_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_120_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_126_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_120_choice[] = {
- { 0, &hf_rrc_fdd_159 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_153 },
- { 1, &hf_rrc_tdd_112 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_104 },
+static const per_choice_t T_modeSpecificInfo_126_choice[] = {
+ { 0, &hf_rrc_fdd_164 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_158 },
+ { 1, &hf_rrc_tdd_117 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_109 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_120(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_126(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_120, T_modeSpecificInfo_120_choice,
+ ett_rrc_T_modeSpecificInfo_126, T_modeSpecificInfo_126_choice,
NULL);
return offset;
@@ -26038,7 +27278,7 @@ dissect_rrc_T_modeSpecificInfo_120(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t UE_Positioning_GPS_ReferenceCellInfo_sequence[] = {
- { &hf_rrc_modeSpecificInfo_120, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_120 },
+ { &hf_rrc_modeSpecificInfo_126, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_126 },
{ NULL, 0, 0, NULL }
};
@@ -26061,7 +27301,7 @@ static const per_sequence_t UE_Positioning_GPS_AssistanceData_sequence[] = {
{ &hf_rrc_ue_positioning_GPS_Almanac, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_Almanac },
{ &hf_rrc_ue_positioning_GPS_AcquisitionAssistance, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_AcquisitionAssistance },
{ &hf_rrc_ue_positioning_GPS_Real_timeIntegrity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BadSatList },
- { &hf_rrc_dummy_49 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_ReferenceCellInfo },
+ { &hf_rrc_dummy_53 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_ReferenceCellInfo },
{ NULL, 0, 0, NULL }
};
@@ -26074,15 +27314,15 @@ dissect_rrc_UE_Positioning_GPS_AssistanceData(tvbuff_t *tvb _U_, int offset _U_,
}
-static const per_sequence_t T_fdd_162_sequence[] = {
+static const per_sequence_t T_fdd_167_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_162(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_167(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_162, T_fdd_162_sequence);
+ ett_rrc_T_fdd_167, T_fdd_167_sequence);
return offset;
}
@@ -26121,36 +27361,36 @@ dissect_rrc_CellAndChannelIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_tdd_113_sequence[] = {
+static const per_sequence_t T_tdd_118_sequence[] = {
{ &hf_rrc_cellAndChannelIdentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellAndChannelIdentity },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_113(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_118(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_113, T_tdd_113_sequence);
+ ett_rrc_T_tdd_118, T_tdd_118_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_129_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_135_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_129_choice[] = {
- { 0, &hf_rrc_fdd_168 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_162 },
- { 1, &hf_rrc_tdd_121 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_113 },
+static const per_choice_t T_modeSpecificInfo_135_choice[] = {
+ { 0, &hf_rrc_fdd_173 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_167 },
+ { 1, &hf_rrc_tdd_126 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_118 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_129(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_135(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_129, T_modeSpecificInfo_129_choice,
+ ett_rrc_T_modeSpecificInfo_135, T_modeSpecificInfo_135_choice,
NULL);
return offset;
@@ -26375,7 +27615,7 @@ dissect_rrc_UE_Positioning_IPDL_Parameters(tvbuff_t *tvb _U_, int offset _U_, as
static const per_sequence_t UE_Positioning_OTDOA_ReferenceCellInfo_UEB_sequence[] = {
{ &hf_rrc_sfn , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_0_4095 },
- { &hf_rrc_modeSpecificInfo_129, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_129 },
+ { &hf_rrc_modeSpecificInfo_135, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_135 },
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
{ &hf_rrc_cellPosition , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ReferenceCellPosition },
{ &hf_rrc_roundTripTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_0_32766 },
@@ -26392,50 +27632,50 @@ dissect_rrc_UE_Positioning_OTDOA_ReferenceCellInfo_UEB(tvbuff_t *tvb _U_, int of
}
-static const per_sequence_t T_fdd_158_sequence[] = {
+static const per_sequence_t T_fdd_163_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_158(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_163(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_158, T_fdd_158_sequence);
+ ett_rrc_T_fdd_163, T_fdd_163_sequence);
return offset;
}
-static const per_sequence_t T_tdd_109_sequence[] = {
+static const per_sequence_t T_tdd_114_sequence[] = {
{ &hf_rrc_cellAndChannelIdentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellAndChannelIdentity },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_109(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_114(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_109, T_tdd_109_sequence);
+ ett_rrc_T_tdd_114, T_tdd_114_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_125_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_131_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_125_choice[] = {
- { 0, &hf_rrc_fdd_164 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_158 },
- { 1, &hf_rrc_tdd_117 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_109 },
+static const per_choice_t T_modeSpecificInfo_131_choice[] = {
+ { 0, &hf_rrc_fdd_169 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_163 },
+ { 1, &hf_rrc_tdd_122 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_114 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_125(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_131(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_125, T_modeSpecificInfo_125_choice,
+ ett_rrc_T_modeSpecificInfo_131, T_modeSpecificInfo_131_choice,
NULL);
return offset;
@@ -26500,6 +27740,8 @@ static const value_string rrc_SFN_SFN_Drift_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_SFN_SFN_Drift_vals_ext = VALUE_STRING_EXT_INIT(rrc_SFN_SFN_Drift_vals);
+
static int
dissect_rrc_SFN_SFN_Drift(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -26563,7 +27805,7 @@ dissect_rrc_FineSFN_SFN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
static const per_sequence_t UE_Positioning_OTDOA_NeighbourCellInfo_UEB_sequence[] = {
- { &hf_rrc_modeSpecificInfo_125, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_125 },
+ { &hf_rrc_modeSpecificInfo_131, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_131 },
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
{ &hf_rrc_ue_positioning_IPDL_Paremeters, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_IPDL_Parameters },
{ &hf_rrc_sfn_SFN_RelTimeDifference, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SFN_SFN_RelTimeDifference1 },
@@ -26909,29 +28151,29 @@ dissect_rrc_INTEGER_0_3999999(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
}
-static const per_sequence_t T_fdd_152_sequence[] = {
+static const per_sequence_t T_fdd_156_sequence[] = {
{ &hf_rrc_primary_CPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_152(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_156(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_152, T_fdd_152_sequence);
+ ett_rrc_T_fdd_156, T_fdd_156_sequence);
return offset;
}
-static const per_sequence_t T_tdd_103_sequence[] = {
+static const per_sequence_t T_tdd_107_sequence[] = {
{ &hf_rrc_cellParameters , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellParametersID },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_103(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_107(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_103, T_tdd_103_sequence);
+ ett_rrc_T_tdd_107, T_tdd_107_sequence);
return offset;
}
@@ -26944,8 +28186,8 @@ static const value_string rrc_T_mode_vals[] = {
};
static const per_choice_t T_mode_choice[] = {
- { 0, &hf_rrc_fdd_158 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_152 },
- { 1, &hf_rrc_tdd_111 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_103 },
+ { 0, &hf_rrc_fdd_162 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_156 },
+ { 1, &hf_rrc_tdd_115 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_107 },
{ 0, NULL, 0, NULL }
};
@@ -29104,14 +30346,298 @@ dissect_rrc_AssistanceDataDelivery_v920ext_IEs(tvbuff_t *tvb _U_, int offset _U_
}
-static const per_sequence_t T_nonCriticalExtensions_07_sequence[] = {
+static const per_sequence_t UE_Positioning_GPS_ReferenceTime_va40ext_sequence[] = {
+ { &hf_rrc_gps_Week_Cycle_Number, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_0_7 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_UE_Positioning_GPS_ReferenceTime_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_07, T_nonCriticalExtensions_07_sequence);
+ ett_rrc_UE_Positioning_GPS_ReferenceTime_va40ext, UE_Positioning_GPS_ReferenceTime_va40ext_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_Positioning_GPS_Almanac_va40ext_sequence[] = {
+ { &hf_rrc_complete_Almanac_Provided, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_Positioning_GPS_Almanac_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_Positioning_GPS_Almanac_va40ext, UE_Positioning_GPS_Almanac_va40ext_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t AzimuthAndElevation_va40ext_sequence[] = {
+ { &hf_rrc_azimuthLSB , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_15 },
+ { &hf_rrc_elevationLSB , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_15 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_AzimuthAndElevation_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_AzimuthAndElevation_va40ext, AzimuthAndElevation_va40ext_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t AcquisitionSatInfo_va40ext_sequence[] = {
+ { &hf_rrc_azimuthAndElevation_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_AzimuthAndElevation_va40ext },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_AcquisitionSatInfo_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_AcquisitionSatInfo_va40ext, AcquisitionSatInfo_va40ext_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t AcquisitionSatInfoList_va40ext_sequence_of[1] = {
+ { &hf_rrc_AcquisitionSatInfoList_va40ext_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_AcquisitionSatInfo_va40ext },
+};
+
+static int
+dissect_rrc_AcquisitionSatInfoList_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_AcquisitionSatInfoList_va40ext, AcquisitionSatInfoList_va40ext_sequence_of,
+ 1, maxSat, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_Positioning_GPS_AcquisitionAssistance_va40ext_sequence[] = {
+ { &hf_rrc_satelliteInformationList_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_AcquisitionSatInfoList_va40ext },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_Positioning_GPS_AcquisitionAssistance_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_Positioning_GPS_AcquisitionAssistance_va40ext, UE_Positioning_GPS_AcquisitionAssistance_va40ext_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_Positioning_GPS_AssistanceData_va40ext_sequence[] = {
+ { &hf_rrc_ue_positioning_GPS_ReferenceTime_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_ReferenceTime_va40ext },
+ { &hf_rrc_ue_positioning_GPS_Almanac_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_Almanac_va40ext },
+ { &hf_rrc_ue_positioning_GPS_AcquisitionAssistance_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_AcquisitionAssistance_va40ext },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_Positioning_GPS_AssistanceData_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_Positioning_GPS_AssistanceData_va40ext, UE_Positioning_GPS_AssistanceData_va40ext_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_Positioning_GANSS_ReferenceTime_va40ext_sequence[] = {
+ { &hf_rrc_ganss_Day_Cycle_Number, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_0_7 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_Positioning_GANSS_ReferenceTime_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_Positioning_GANSS_ReferenceTime_va40ext, UE_Positioning_GANSS_ReferenceTime_va40ext_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_rrc_INTEGER_M128_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -128, 127U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_Positioning_GANSS_TimeModel_va40ext_sequence[] = {
+ { &hf_rrc_deltaT , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_M128_127 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_Positioning_GANSS_TimeModel_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_Positioning_GANSS_TimeModel_va40ext, UE_Positioning_GANSS_TimeModel_va40ext_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t GANSSTimeModelsList_va40ext_sequence_of[1] = {
+ { &hf_rrc_GANSSTimeModelsList_va40ext_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_GANSS_TimeModel_va40ext },
+};
+
+static int
+dissect_rrc_GANSSTimeModelsList_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_GANSSTimeModelsList_va40ext, GANSSTimeModelsList_va40ext_sequence_of,
+ 1, maxGANSS_1, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t GANSSSatelliteInformation_va40ext_sequence[] = {
+ { &hf_rrc_azimuthAndElevation_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_AzimuthAndElevation_va40ext },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_GANSSSatelliteInformation_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_GANSSSatelliteInformation_va40ext, GANSSSatelliteInformation_va40ext_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t GANSSSatelliteInformationList_va40ext_sequence_of[1] = {
+ { &hf_rrc_GANSSSatelliteInformationList_va40ext_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_GANSSSatelliteInformation_va40ext },
+};
+
+static int
+dissect_rrc_GANSSSatelliteInformationList_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_GANSSSatelliteInformationList_va40ext, GANSSSatelliteInformationList_va40ext_sequence_of,
+ 1, maxGANSSSat, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_Positioning_GANSS_ReferenceMeasurementInfo_va40ext_sequence[] = {
+ { &hf_rrc_satelliteInformationList_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_GANSSSatelliteInformationList_va40ext },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_Positioning_GANSS_ReferenceMeasurementInfo_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_Positioning_GANSS_ReferenceMeasurementInfo_va40ext, UE_Positioning_GANSS_ReferenceMeasurementInfo_va40ext_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_Positioning_GANSS_Almanac_va40ext_sequence[] = {
+ { &hf_rrc_complete_Almanac_Provided, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_Positioning_GANSS_Almanac_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_Positioning_GANSS_Almanac_va40ext, UE_Positioning_GANSS_Almanac_va40ext_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t GANSSGenericData_va40ext_sequence[] = {
+ { &hf_rrc_ganssTimeModelsList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_GANSSTimeModelsList_va40ext },
+ { &hf_rrc_uePositioningGANSSReferenceMeasurementInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GANSS_ReferenceMeasurementInfo_va40ext },
+ { &hf_rrc_uePositioningGANSSAlmanac_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GANSS_Almanac_va40ext },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_GANSSGenericData_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_GANSSGenericData_va40ext, GANSSGenericData_va40ext_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t GANSSGenericDataList_va40ext_sequence_of[1] = {
+ { &hf_rrc_GANSSGenericDataList_va40ext_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_GANSSGenericData_va40ext },
+};
+
+static int
+dissect_rrc_GANSSGenericDataList_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_GANSSGenericDataList_va40ext, GANSSGenericDataList_va40ext_sequence_of,
+ 1, maxGANSS, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_Positioning_GANSS_AssistanceData_va40ext_sequence[] = {
+ { &hf_rrc_ue_positioning_GANSS_ReferenceTime_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GANSS_ReferenceTime_va40ext },
+ { &hf_rrc_ganssGenericDataList_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_GANSSGenericDataList_va40ext },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_Positioning_GANSS_AssistanceData_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_Positioning_GANSS_AssistanceData_va40ext, UE_Positioning_GANSS_AssistanceData_va40ext_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t AssistanceDataDelivery_va40ext_IEs_sequence[] = {
+ { &hf_rrc_ue_positioning_GPS_AssistanceData_va40ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_AssistanceData_va40ext },
+ { &hf_rrc_ue_positioning_GANSS_AssistanceData_va40ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GANSS_AssistanceData_va40ext },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_AssistanceDataDelivery_va40ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_AssistanceDataDelivery_va40ext_IEs, AssistanceDataDelivery_va40ext_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_08_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_08, T_nonCriticalExtensions_08_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtension_sequence[] = {
+ { &hf_rrc_assistanceDataDelivery_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_AssistanceDataDelivery_va40ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_08, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_08 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtension, T_va40NonCriticalExtension_sequence);
return offset;
}
@@ -29119,7 +30645,7 @@ dissect_rrc_T_nonCriticalExtensions_07(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v920NonCriticalExtension_sequence[] = {
{ &hf_rrc_assistanceDataDelivery_v920ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_AssistanceDataDelivery_v920ext_IEs },
- { &hf_rrc_nonCriticalExtensions_07, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_07 },
+ { &hf_rrc_va40NonCriticalExtension, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtension },
{ NULL, 0, 0, NULL }
};
@@ -29222,14 +30748,14 @@ dissect_rrc_T_r3_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_05_sequence[] = {
+static const per_sequence_t T_criticalExtensions_06_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_05, T_criticalExtensions_05_sequence);
+ ett_rrc_T_criticalExtensions_06, T_criticalExtensions_06_sequence);
return offset;
}
@@ -29237,7 +30763,7 @@ dissect_rrc_T_criticalExtensions_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_later_than_r3_01_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_05, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_05 },
+ { &hf_rrc_criticalExtensions_06, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_06 },
{ NULL, 0, 0, NULL }
};
@@ -29264,7 +30790,7 @@ static const per_choice_t AssistanceDataDelivery_choice[] = {
static int
dissect_rrc_AssistanceDataDelivery(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 137 "../../asn1/rrc/rrc.cnf"
+#line 174 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "AssistanceDataDelivery");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_AssistanceDataDelivery, AssistanceDataDelivery_choice,
@@ -29562,14 +31088,14 @@ dissect_rrc_CellChangeOrderFromUTRAN_v590ext_IEs(tvbuff_t *tvb _U_, int offset _
}
-static const per_sequence_t T_nonCriticalExtensions_08_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_09_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_08, T_nonCriticalExtensions_08_sequence);
+ ett_rrc_T_nonCriticalExtensions_09, T_nonCriticalExtensions_09_sequence);
return offset;
}
@@ -29577,7 +31103,7 @@ dissect_rrc_T_nonCriticalExtensions_08(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v590NonCriticalExtensions_01_sequence[] = {
{ &hf_rrc_cellChangeOrderFromUTRAN_v590ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellChangeOrderFromUTRAN_v590ext_IEs },
- { &hf_rrc_nonCriticalExtensions_08, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_08 },
+ { &hf_rrc_nonCriticalExtensions_09, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_09 },
{ NULL, 0, 0, NULL }
};
@@ -29620,14 +31146,14 @@ dissect_rrc_T_r3_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_06_sequence[] = {
+static const per_sequence_t T_criticalExtensions_07_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_06, T_criticalExtensions_06_sequence);
+ ett_rrc_T_criticalExtensions_07, T_criticalExtensions_07_sequence);
return offset;
}
@@ -29635,7 +31161,7 @@ dissect_rrc_T_criticalExtensions_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_later_than_r3_02_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_06, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_06 },
+ { &hf_rrc_criticalExtensions_07, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_07 },
{ NULL, 0, 0, NULL }
};
@@ -29662,7 +31188,7 @@ static const per_choice_t CellChangeOrderFromUTRAN_choice[] = {
static int
dissect_rrc_CellChangeOrderFromUTRAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 141 "../../asn1/rrc/rrc.cnf"
+#line 178 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "CellChangeOrderFromUTRAN");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_CellChangeOrderFromUTRAN, CellChangeOrderFromUTRAN_choice,
@@ -29942,7 +31468,7 @@ dissect_rrc_PDCP_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p
static const per_sequence_t PDCP_InfoReconfig_sequence[] = {
{ &hf_rrc_pdcp_Info , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PDCP_Info },
- { &hf_rrc_dummy_27 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_65535 },
+ { &hf_rrc_dummy_31 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_65535 },
{ NULL, 0, 0, NULL }
};
@@ -30299,6 +31825,8 @@ static const value_string rrc_TimerPollProhibit_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_TimerPollProhibit_vals_ext = VALUE_STRING_EXT_INIT(rrc_TimerPollProhibit_vals);
+
static int
dissect_rrc_TimerPollProhibit(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -30377,6 +31905,8 @@ static const value_string rrc_TimerPoll_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_TimerPoll_vals_ext = VALUE_STRING_EXT_INIT(rrc_TimerPoll_vals);
+
static int
dissect_rrc_TimerPoll(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -30663,6 +32193,8 @@ static const value_string rrc_TimerStatusProhibit_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_TimerStatusProhibit_vals_ext = VALUE_STRING_EXT_INIT(rrc_TimerStatusProhibit_vals);
+
static int
dissect_rrc_TimerStatusProhibit(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -30727,7 +32259,7 @@ dissect_rrc_TimerStatusPeriodic(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
static const per_sequence_t DL_RLC_StatusInfo_sequence[] = {
{ &hf_rrc_timerStatusProhibit, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TimerStatusProhibit },
- { &hf_rrc_dummy_26 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TimerEPC },
+ { &hf_rrc_dummy_30 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TimerEPC },
{ &hf_rrc_missingPDU_Indicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_timerStatusPeriodic, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TimerStatusPeriodic },
{ NULL, 0, 0, NULL }
@@ -30822,7 +32354,7 @@ static const value_string rrc_UL_TransportChannelType_vals[] = {
static const per_choice_t UL_TransportChannelType_choice[] = {
{ 0, &hf_rrc_dch , ASN1_NO_EXTENSIONS , dissect_rrc_TransportChannelIdentity },
{ 1, &hf_rrc_rach , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 2, &hf_rrc_dummy_19 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 2, &hf_rrc_dummy_23 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 3, &hf_rrc_usch , ASN1_NO_EXTENSIONS , dissect_rrc_TransportChannelIdentity },
{ 0, NULL, 0, NULL }
};
@@ -31290,15 +32822,15 @@ dissect_rrc_TFC_Subset(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
}
-static const per_sequence_t T_fdd_53_sequence[] = {
+static const per_sequence_t T_fdd_55_sequence[] = {
{ &hf_rrc_ul_TFCS , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TFCS },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_53(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_55(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_53, T_fdd_53_sequence);
+ ett_rrc_T_fdd_55, T_fdd_55_sequence);
return offset;
}
@@ -31334,36 +32866,36 @@ dissect_rrc_IndividualUL_CCTrCH_InfoList(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_tdd_14_sequence[] = {
+static const per_sequence_t T_tdd_16_sequence[] = {
{ &hf_rrc_individualUL_CCTrCH_InfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IndividualUL_CCTrCH_InfoList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_14, T_tdd_14_sequence);
+ ett_rrc_T_tdd_16, T_tdd_16_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_22_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_24_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_22_choice[] = {
- { 0, &hf_rrc_fdd_54 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_53 },
- { 1, &hf_rrc_tdd_15 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_14 },
+static const per_choice_t T_modeSpecificInfo_24_choice[] = {
+ { 0, &hf_rrc_fdd_56 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_55 },
+ { 1, &hf_rrc_tdd_17 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_16 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_22(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_22, T_modeSpecificInfo_22_choice,
+ ett_rrc_T_modeSpecificInfo_24, T_modeSpecificInfo_24_choice,
NULL);
return offset;
@@ -31373,7 +32905,7 @@ dissect_rrc_T_modeSpecificInfo_22(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t UL_CommonTransChInfo_sequence[] = {
{ &hf_rrc_tfc_Subset , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TFC_Subset },
{ &hf_rrc_prach_TFCS , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TFCS },
- { &hf_rrc_modeSpecificInfo_22, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_modeSpecificInfo_22 },
+ { &hf_rrc_modeSpecificInfo_24, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_modeSpecificInfo_24 },
{ NULL, 0, 0, NULL }
};
@@ -31574,15 +33106,15 @@ dissect_rrc_T_dl_Parameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_fdd_46_sequence[] = {
+static const per_sequence_t T_fdd_48_sequence[] = {
{ &hf_rrc_dl_Parameters , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dl_Parameters },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_46(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_48(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_46, T_fdd_46_sequence);
+ ett_rrc_T_fdd_48, T_fdd_48_sequence);
return offset;
}
@@ -31639,36 +33171,36 @@ dissect_rrc_IndividualDL_CCTrCH_InfoList(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_tdd_11_sequence[] = {
+static const per_sequence_t T_tdd_13_sequence[] = {
{ &hf_rrc_individualDL_CCTrCH_InfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IndividualDL_CCTrCH_InfoList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_11, T_tdd_11_sequence);
+ ett_rrc_T_tdd_13, T_tdd_13_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_16_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_18_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_16_choice[] = {
- { 0, &hf_rrc_fdd_47 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_46 },
- { 1, &hf_rrc_tdd_12 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_11 },
+static const per_choice_t T_modeSpecificInfo_18_choice[] = {
+ { 0, &hf_rrc_fdd_49 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_48 },
+ { 1, &hf_rrc_tdd_14 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_13 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_16, T_modeSpecificInfo_16_choice,
+ ett_rrc_T_modeSpecificInfo_18, T_modeSpecificInfo_18_choice,
NULL);
return offset;
@@ -31677,7 +33209,7 @@ dissect_rrc_T_modeSpecificInfo_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t DL_CommonTransChInfo_sequence[] = {
{ &hf_rrc_sccpch_TFCS , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TFCS },
- { &hf_rrc_modeSpecificInfo_16, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_16 },
+ { &hf_rrc_modeSpecificInfo_18, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_18 },
{ NULL, 0, 0, NULL }
};
@@ -31866,7 +33398,7 @@ static const per_sequence_t DL_AddReconfTransChInformation_sequence[] = {
{ &hf_rrc_dl_transportChannelIdentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TransportChannelIdentity },
{ &hf_rrc_tfs_SignallingMode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tfs_SignallingMode },
{ &hf_rrc_dch_QualityTarget, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_QualityTarget },
- { &hf_rrc_dummy_30 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TM_SignallingInfo },
+ { &hf_rrc_dummy_34 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TM_SignallingInfo },
{ NULL, 0, 0, NULL }
};
@@ -31945,7 +33477,7 @@ dissect_rrc_PowerControlAlgorithm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_fdd_111_sequence[] = {
+static const per_sequence_t T_fdd_114_sequence[] = {
{ &hf_rrc_dpcch_PowerOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DPCCH_PowerOffset },
{ &hf_rrc_pc_Preamble , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PC_Preamble },
{ &hf_rrc_sRB_delay , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SRB_delay },
@@ -31954,9 +33486,9 @@ static const per_sequence_t T_fdd_111_sequence[] = {
};
static int
-dissect_rrc_T_fdd_111(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_114(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_111, T_fdd_111_sequence);
+ ett_rrc_T_fdd_114, T_fdd_114_sequence);
return offset;
}
@@ -32069,16 +33601,16 @@ dissect_rrc_T_ul_OL_PC_Signalling(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_tdd_63_sequence[] = {
+static const per_sequence_t T_tdd_66_sequence[] = {
{ &hf_rrc_ul_TargetSIR , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_TargetSIR },
{ &hf_rrc_ul_OL_PC_Signalling, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_ul_OL_PC_Signalling },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_63(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_66(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_63, T_tdd_63_sequence);
+ ett_rrc_T_tdd_66, T_tdd_66_sequence);
return offset;
}
@@ -32091,8 +33623,8 @@ static const value_string rrc_UL_DPCH_PowerControlInfo_vals[] = {
};
static const per_choice_t UL_DPCH_PowerControlInfo_choice[] = {
- { 0, &hf_rrc_fdd_114 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_111 },
- { 1, &hf_rrc_tdd_69 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_63 },
+ { 0, &hf_rrc_fdd_117 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_114 },
+ { 1, &hf_rrc_tdd_72 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_66 },
{ 0, NULL, 0, NULL }
};
@@ -32147,7 +33679,7 @@ dissect_rrc_NumberOfFBI_Bits(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_fdd_104_sequence[] = {
+static const per_sequence_t T_fdd_107_sequence[] = {
{ &hf_rrc_scramblingCodeType, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_ScramblingCodeType },
{ &hf_rrc_scramblingCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_ScramblingCode },
{ &hf_rrc_numberOfDPDCH , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NumberOfDPDCH },
@@ -32159,9 +33691,9 @@ static const per_sequence_t T_fdd_104_sequence[] = {
};
static int
-dissect_rrc_T_fdd_104(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_107(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_104, T_fdd_104_sequence);
+ ett_rrc_T_fdd_107, T_fdd_107_sequence);
return offset;
}
@@ -32249,6 +33781,8 @@ static const value_string rrc_UL_TS_ChannelisationCode_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_UL_TS_ChannelisationCode_vals_ext = VALUE_STRING_EXT_INIT(rrc_UL_TS_ChannelisationCode_vals);
+
static int
dissect_rrc_UL_TS_ChannelisationCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -32473,7 +34007,7 @@ dissect_rrc_UL_CCTrCHListToRemove(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_tdd_57_sequence[] = {
+static const per_sequence_t T_tdd_60_sequence[] = {
{ &hf_rrc_ul_TimingAdvance_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_TimingAdvanceControl },
{ &hf_rrc_ul_CCTrCHList , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CCTrCHList },
{ &hf_rrc_ul_CCTrCHListToRemove, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CCTrCHListToRemove },
@@ -32481,30 +34015,30 @@ static const per_sequence_t T_tdd_57_sequence[] = {
};
static int
-dissect_rrc_T_tdd_57(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_60(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_57, T_tdd_57_sequence);
+ ett_rrc_T_tdd_60, T_tdd_60_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_73_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_76_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_73_choice[] = {
- { 0, &hf_rrc_fdd_107 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_104 },
- { 1, &hf_rrc_tdd_63 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_57 },
+static const per_choice_t T_modeSpecificInfo_76_choice[] = {
+ { 0, &hf_rrc_fdd_110 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_107 },
+ { 1, &hf_rrc_tdd_66 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_60 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_73(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_76(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_73, T_modeSpecificInfo_73_choice,
+ ett_rrc_T_modeSpecificInfo_76, T_modeSpecificInfo_76_choice,
NULL);
return offset;
@@ -32513,7 +34047,7 @@ dissect_rrc_T_modeSpecificInfo_73(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t UL_DPCH_Info_sequence[] = {
{ &hf_rrc_ul_DPCH_PowerControlInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DPCH_PowerControlInfo },
- { &hf_rrc_modeSpecificInfo_73, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_73 },
+ { &hf_rrc_modeSpecificInfo_76, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_76 },
{ NULL, 0, 0, NULL }
};
@@ -32974,7 +34508,7 @@ static const value_string rrc_UL_ChannelRequirement_vals[] = {
static const per_choice_t UL_ChannelRequirement_choice[] = {
{ 0, &hf_rrc_ul_DPCH_Info_02 , ASN1_NO_EXTENSIONS , dissect_rrc_UL_DPCH_Info },
- { 1, &hf_rrc_dummy_42 , ASN1_NO_EXTENSIONS , dissect_rrc_CPCH_SetInfo },
+ { 1, &hf_rrc_dummy_46 , ASN1_NO_EXTENSIONS , dissect_rrc_CPCH_SetInfo },
{ 0, NULL, 0, NULL }
};
@@ -33318,7 +34852,7 @@ dissect_rrc_Cfntargetsfnframeoffset(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_initialise_sequence[] = {
- { &hf_rrc_dummy_35 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Cfntargetsfnframeoffset },
+ { &hf_rrc_dummy_39 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Cfntargetsfnframeoffset },
{ NULL, 0, 0, NULL }
};
@@ -33353,15 +34887,15 @@ dissect_rrc_T_cfnHandling(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
}
-static const per_sequence_t T_fdd_70_sequence[] = {
+static const per_sequence_t T_fdd_73_sequence[] = {
{ &hf_rrc_dpc_Mode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DPC_Mode },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_70(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_73(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_70, T_fdd_70_sequence);
+ ett_rrc_T_fdd_73, T_fdd_73_sequence);
return offset;
}
@@ -33377,36 +34911,36 @@ dissect_rrc_TPC_StepSizeTDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_tdd_32_sequence[] = {
+static const per_sequence_t T_tdd_35_sequence[] = {
{ &hf_rrc_tpc_StepSizeTDD , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TPC_StepSizeTDD },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_35(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_32, T_tdd_32_sequence);
+ ett_rrc_T_tdd_35, T_tdd_35_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_35_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_38_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_35_choice[] = {
- { 0, &hf_rrc_fdd_71 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_70 },
- { 1, &hf_rrc_tdd_33 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_32 },
+static const per_choice_t T_modeSpecificInfo_38_choice[] = {
+ { 0, &hf_rrc_fdd_74 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_73 },
+ { 1, &hf_rrc_tdd_36 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_35 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_35(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_38(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_35, T_modeSpecificInfo_35_choice,
+ ett_rrc_T_modeSpecificInfo_38, T_modeSpecificInfo_38_choice,
NULL);
return offset;
@@ -33414,7 +34948,7 @@ dissect_rrc_T_modeSpecificInfo_35(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t DL_DPCH_PowerControlInfo_sequence[] = {
- { &hf_rrc_modeSpecificInfo_35, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_35 },
+ { &hf_rrc_modeSpecificInfo_38, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_38 },
{ NULL, 0, 0, NULL }
};
@@ -33548,7 +35082,7 @@ dissect_rrc_SF512_AndPilot(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
}
-static const per_sequence_t T_fdd_61_sequence[] = {
+static const per_sequence_t T_fdd_64_sequence[] = {
{ &hf_rrc_dl_DPCH_PowerControlInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DPCH_PowerControlInfo },
{ &hf_rrc_powerOffsetPilot_pdpdch, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PowerOffsetPilot_pdpdch },
{ &hf_rrc_dl_rate_matching_restriction, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Dl_rate_matching_restriction },
@@ -33559,44 +35093,44 @@ static const per_sequence_t T_fdd_61_sequence[] = {
};
static int
-dissect_rrc_T_fdd_61(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_64(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_61, T_fdd_61_sequence);
+ ett_rrc_T_fdd_64, T_fdd_64_sequence);
return offset;
}
-static const per_sequence_t T_tdd_23_sequence[] = {
+static const per_sequence_t T_tdd_26_sequence[] = {
{ &hf_rrc_dl_DPCH_PowerControlInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DPCH_PowerControlInfo },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_23(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_26(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_23, T_tdd_23_sequence);
+ ett_rrc_T_tdd_26, T_tdd_26_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_31_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_34_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_31_choice[] = {
- { 0, &hf_rrc_fdd_62 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_61 },
- { 1, &hf_rrc_tdd_24 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_23 },
+static const per_choice_t T_modeSpecificInfo_34_choice[] = {
+ { 0, &hf_rrc_fdd_65 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_64 },
+ { 1, &hf_rrc_tdd_27 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_26 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_34(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_31, T_modeSpecificInfo_31_choice,
+ ett_rrc_T_modeSpecificInfo_34, T_modeSpecificInfo_34_choice,
NULL);
return offset;
@@ -33605,7 +35139,7 @@ dissect_rrc_T_modeSpecificInfo_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t DL_DPCH_InfoCommon_sequence[] = {
{ &hf_rrc_cfnHandling , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_cfnHandling },
- { &hf_rrc_modeSpecificInfo_31, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_31 },
+ { &hf_rrc_modeSpecificInfo_34, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_34 },
{ NULL, 0, 0, NULL }
};
@@ -33912,7 +35446,7 @@ static const per_sequence_t TGPS_ConfigurationParams_sequence[] = {
{ &hf_rrc_tgl2 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TGL },
{ &hf_rrc_tgd , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TGD },
{ &hf_rrc_tgpl1 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TGPL },
- { &hf_rrc_dummy_41 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TGPL },
+ { &hf_rrc_dummy_45 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TGPL },
{ &hf_rrc_rpp , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RPP },
{ &hf_rrc_itp , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_ITP },
{ &hf_rrc_ul_DL_Mode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_DL_Mode },
@@ -33979,18 +35513,18 @@ dissect_rrc_DPCH_CompressedModeInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
-static const per_sequence_t T_fdd_55_sequence[] = {
+static const per_sequence_t T_fdd_57_sequence[] = {
{ &hf_rrc_defaultDPCH_OffsetValue, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultDPCH_OffsetValueFDD },
{ &hf_rrc_dpch_CompressedModeInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DPCH_CompressedModeInfo },
{ &hf_rrc_tx_DiversityMode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TX_DiversityMode },
- { &hf_rrc_dummy_33 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SSDT_Information },
+ { &hf_rrc_dummy_37 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SSDT_Information },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_55(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_57(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_55, T_fdd_55_sequence);
+ ett_rrc_T_fdd_57, T_fdd_57_sequence);
return offset;
}
@@ -34006,36 +35540,36 @@ dissect_rrc_DefaultDPCH_OffsetValueTDD(tvbuff_t *tvb _U_, int offset _U_, asn1_c
}
-static const per_sequence_t T_tdd_17_sequence[] = {
+static const per_sequence_t T_tdd_19_sequence[] = {
{ &hf_rrc_defaultDPCH_OffsetValue_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultDPCH_OffsetValueTDD },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_17, T_tdd_17_sequence);
+ ett_rrc_T_tdd_19, T_tdd_19_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_25_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_27_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_25_choice[] = {
- { 0, &hf_rrc_fdd_56 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_55 },
- { 1, &hf_rrc_tdd_18 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_17 },
+static const per_choice_t T_modeSpecificInfo_27_choice[] = {
+ { 0, &hf_rrc_fdd_58 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_57 },
+ { 1, &hf_rrc_tdd_20 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_19 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_25(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_27(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_25, T_modeSpecificInfo_25_choice,
+ ett_rrc_T_modeSpecificInfo_27, T_modeSpecificInfo_27_choice,
NULL);
return offset;
@@ -34044,7 +35578,7 @@ dissect_rrc_T_modeSpecificInfo_25(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t DL_CommonInformation_sequence[] = {
{ &hf_rrc_dl_DPCH_InfoCommon, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DPCH_InfoCommon },
- { &hf_rrc_modeSpecificInfo_25, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_25 },
+ { &hf_rrc_modeSpecificInfo_27, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_27 },
{ NULL, 0, 0, NULL }
};
@@ -34057,7 +35591,7 @@ dissect_rrc_DL_CommonInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
}
-static const per_sequence_t T_fdd_74_sequence[] = {
+static const per_sequence_t T_fdd_77_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ &hf_rrc_dummy1_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PDSCH_SHO_DCH_Info },
{ &hf_rrc_dummy2_06 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PDSCH_CodeMapping },
@@ -34065,23 +35599,23 @@ static const per_sequence_t T_fdd_74_sequence[] = {
};
static int
-dissect_rrc_T_fdd_74(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_77(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_74, T_fdd_74_sequence);
+ ett_rrc_T_fdd_77, T_fdd_77_sequence);
return offset;
}
-static const per_sequence_t T_fdd_96_sequence[] = {
+static const per_sequence_t T_fdd_99_sequence[] = {
{ &hf_rrc_tx_DiversityIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_96(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_99(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_96, T_fdd_96_sequence);
+ ett_rrc_T_fdd_99, T_fdd_99_sequence);
return offset;
}
@@ -34147,7 +35681,7 @@ dissect_rrc_T_syncCase(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
}
-static const per_sequence_t T_tdd_52_sequence[] = {
+static const per_sequence_t T_tdd_55_sequence[] = {
{ &hf_rrc_syncCase , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_syncCase },
{ &hf_rrc_cellParametersID, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellParametersID },
{ &hf_rrc_sctd_Indicator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
@@ -34155,9 +35689,9 @@ static const per_sequence_t T_tdd_52_sequence[] = {
};
static int
-dissect_rrc_T_tdd_52(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_55(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_52, T_tdd_52_sequence);
+ ett_rrc_T_tdd_55, T_tdd_55_sequence);
return offset;
}
@@ -34170,8 +35704,8 @@ static const value_string rrc_PrimaryCCPCH_Info_vals[] = {
};
static const per_choice_t PrimaryCCPCH_Info_choice[] = {
- { 0, &hf_rrc_fdd_99 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_96 },
- { 1, &hf_rrc_tdd_58 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_52 },
+ { 0, &hf_rrc_fdd_102 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_99 },
+ { 1, &hf_rrc_tdd_61 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_55 },
{ 0, NULL, 0, NULL }
};
@@ -34185,22 +35719,22 @@ dissect_rrc_PrimaryCCPCH_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
}
-static const value_string rrc_T_modeSpecificInfo_42_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_45_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_42_choice[] = {
- { 0, &hf_rrc_fdd_75 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_74 },
- { 1, &hf_rrc_tdd_40 , ASN1_NO_EXTENSIONS , dissect_rrc_PrimaryCCPCH_Info },
+static const per_choice_t T_modeSpecificInfo_45_choice[] = {
+ { 0, &hf_rrc_fdd_78 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_77 },
+ { 1, &hf_rrc_tdd_43 , ASN1_NO_EXTENSIONS , dissect_rrc_PrimaryCCPCH_Info },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_42(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_45(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_42, T_modeSpecificInfo_42_choice,
+ ett_rrc_T_modeSpecificInfo_45, T_modeSpecificInfo_45_choice,
NULL);
return offset;
@@ -34208,9 +35742,9 @@ dissect_rrc_T_modeSpecificInfo_42(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t DL_InformationPerRL_sequence[] = {
- { &hf_rrc_modeSpecificInfo_42, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_42 },
+ { &hf_rrc_modeSpecificInfo_45, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_45 },
{ &hf_rrc_dl_DPCH_InfoPerRL, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DPCH_InfoPerRL },
- { &hf_rrc_dummy_37 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SCCPCH_InfoForFACH },
+ { &hf_rrc_dummy_41 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SCCPCH_InfoForFACH },
{ NULL, 0, 0, NULL }
};
@@ -34426,14 +35960,14 @@ dissect_rrc_CellUpdateConfirm_v690ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn
}
-static const per_sequence_t T_nonCriticalExtensions_12_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_13_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_12, T_nonCriticalExtensions_12_sequence);
+ ett_rrc_T_nonCriticalExtensions_13, T_nonCriticalExtensions_13_sequence);
return offset;
}
@@ -34441,7 +35975,7 @@ dissect_rrc_T_nonCriticalExtensions_12(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v690NonCriticalExtensions_02_sequence[] = {
{ &hf_rrc_cellUpdateConfirm_v690ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellUpdateConfirm_v690ext_IEs },
- { &hf_rrc_nonCriticalExtensions_12, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_12 },
+ { &hf_rrc_nonCriticalExtensions_13, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_13 },
{ NULL, 0, 0, NULL }
};
@@ -34621,7 +36155,7 @@ dissect_rrc_ROHC_PacketSizeList_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t UL_RFC3095_r4_sequence[] = {
{ &hf_rrc_dummy1_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CID_InclusionInfo_r4 },
{ &hf_rrc_max_CID , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_1_16383 },
- { &hf_rrc_dummy_28 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_ROHC_PacketSizeList_r4 },
+ { &hf_rrc_dummy_32 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_ROHC_PacketSizeList_r4 },
{ NULL, 0, 0, NULL }
};
@@ -34635,7 +36169,7 @@ dissect_rrc_UL_RFC3095_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
static const per_sequence_t DL_RFC3095_r4_sequence[] = {
- { &hf_rrc_dummy_25 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CID_InclusionInfo_r4 },
+ { &hf_rrc_dummy_29 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CID_InclusionInfo_r4 },
{ &hf_rrc_max_CID , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_1_16383 },
{ &hf_rrc_reverseDecompressionDepth, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_0_65535 },
{ NULL, 0, 0, NULL }
@@ -34779,86 +36313,86 @@ dissect_rrc_RB_InformationReconfigList_r4(tvbuff_t *tvb _U_, int offset _U_, asn
}
-static const per_sequence_t T_fdd_54_sequence[] = {
+static const per_sequence_t T_fdd_56_sequence[] = {
{ &hf_rrc_ul_TFCS , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TFCS },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_54(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_56(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_54, T_fdd_54_sequence);
+ ett_rrc_T_fdd_56, T_fdd_56_sequence);
return offset;
}
-static const per_sequence_t T_tdd_15_sequence[] = {
+static const per_sequence_t T_tdd_17_sequence[] = {
{ &hf_rrc_individualUL_CCTrCH_InfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IndividualUL_CCTrCH_InfoList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_15, T_tdd_15_sequence);
+ ett_rrc_T_tdd_17, T_tdd_17_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_23_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_25_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_23_choice[] = {
- { 0, &hf_rrc_fdd_55 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_54 },
- { 1, &hf_rrc_tdd_16 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_15 },
+static const per_choice_t T_modeSpecificInfo_25_choice[] = {
+ { 0, &hf_rrc_fdd_57 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_56 },
+ { 1, &hf_rrc_tdd_18 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_17 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_23(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_25(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_23, T_modeSpecificInfo_23_choice,
+ ett_rrc_T_modeSpecificInfo_25, T_modeSpecificInfo_25_choice,
NULL);
return offset;
}
-static const per_sequence_t T_tdd_13_sequence[] = {
+static const per_sequence_t T_tdd_15_sequence[] = {
{ &hf_rrc_tfcs_ID , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TFCS_Identity },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_13, T_tdd_13_sequence);
+ ett_rrc_T_tdd_15, T_tdd_15_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_21_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_23_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_21_choice[] = {
- { 0, &hf_rrc_fdd_43 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 1, &hf_rrc_tdd_14 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_13 },
+static const per_choice_t T_modeSpecificInfo_23_choice[] = {
+ { 0, &hf_rrc_fdd_44 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_tdd_16 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_15 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_23(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_21, T_modeSpecificInfo_21_choice,
+ ett_rrc_T_modeSpecificInfo_23, T_modeSpecificInfo_23_choice,
NULL);
return offset;
@@ -34866,7 +36400,7 @@ dissect_rrc_T_modeSpecificInfo_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t TFC_SubsetList_item_sequence[] = {
- { &hf_rrc_modeSpecificInfo_21, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_21 },
+ { &hf_rrc_modeSpecificInfo_23, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_23 },
{ &hf_rrc_tfc_Subset , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TFC_Subset },
{ NULL, 0, 0, NULL }
};
@@ -34897,7 +36431,7 @@ dissect_rrc_TFC_SubsetList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
static const per_sequence_t UL_CommonTransChInfo_r4_sequence[] = {
{ &hf_rrc_tfc_Subset , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TFC_Subset },
{ &hf_rrc_prach_TFCS , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TFCS },
- { &hf_rrc_modeSpecificInfo_23, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_modeSpecificInfo_23 },
+ { &hf_rrc_modeSpecificInfo_25, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_modeSpecificInfo_25 },
{ &hf_rrc_tfc_SubsetList , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TFC_SubsetList },
{ NULL, 0, 0, NULL }
};
@@ -34984,50 +36518,50 @@ dissect_rrc_T_dl_Parameters_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
}
-static const per_sequence_t T_fdd_47_sequence[] = {
+static const per_sequence_t T_fdd_49_sequence[] = {
{ &hf_rrc_dl_Parameters_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dl_Parameters_01 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_47(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_49(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_47, T_fdd_47_sequence);
+ ett_rrc_T_fdd_49, T_fdd_49_sequence);
return offset;
}
-static const per_sequence_t T_tdd_12_sequence[] = {
+static const per_sequence_t T_tdd_14_sequence[] = {
{ &hf_rrc_individualDL_CCTrCH_InfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IndividualDL_CCTrCH_InfoList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_12, T_tdd_12_sequence);
+ ett_rrc_T_tdd_14, T_tdd_14_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_17_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_19_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_17_choice[] = {
- { 0, &hf_rrc_fdd_48 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_47 },
- { 1, &hf_rrc_tdd_13 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_12 },
+static const per_choice_t T_modeSpecificInfo_19_choice[] = {
+ { 0, &hf_rrc_fdd_50 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_49 },
+ { 1, &hf_rrc_tdd_15 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_14 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_17, T_modeSpecificInfo_17_choice,
+ ett_rrc_T_modeSpecificInfo_19, T_modeSpecificInfo_19_choice,
NULL);
return offset;
@@ -35036,7 +36570,7 @@ dissect_rrc_T_modeSpecificInfo_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t DL_CommonTransChInfo_r4_sequence[] = {
{ &hf_rrc_sccpch_TFCS , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TFCS },
- { &hf_rrc_modeSpecificInfo_17, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_modeSpecificInfo_17 },
+ { &hf_rrc_modeSpecificInfo_19, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_modeSpecificInfo_19 },
{ NULL, 0, 0, NULL }
};
@@ -35102,7 +36636,7 @@ dissect_rrc_DL_AddReconfTransChInfoList_r4(tvbuff_t *tvb _U_, int offset _U_, as
}
-static const per_sequence_t T_fdd_112_sequence[] = {
+static const per_sequence_t T_fdd_115_sequence[] = {
{ &hf_rrc_dpcch_PowerOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DPCCH_PowerOffset },
{ &hf_rrc_pc_Preamble , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PC_Preamble },
{ &hf_rrc_sRB_delay , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SRB_delay },
@@ -35111,59 +36645,59 @@ static const per_sequence_t T_fdd_112_sequence[] = {
};
static int
-dissect_rrc_T_fdd_112(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_115(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_112, T_fdd_112_sequence);
+ ett_rrc_T_fdd_115, T_fdd_115_sequence);
return offset;
}
-static const per_sequence_t T_tdd384_33_sequence[] = {
+static const per_sequence_t T_tdd384_34_sequence[] = {
{ &hf_rrc_individualTS_InterferenceList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_IndividualTS_InterferenceList },
{ &hf_rrc_dpch_ConstantValue_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_ConstantValue },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd384_33(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_34(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_33, T_tdd384_33_sequence);
+ ett_rrc_T_tdd384_34, T_tdd384_34_sequence);
return offset;
}
-static const per_sequence_t T_tdd128_49_sequence[] = {
+static const per_sequence_t T_tdd128_51_sequence[] = {
{ &hf_rrc_tpc_StepSize , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TPC_StepSizeTDD },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_49(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_51(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_49, T_tdd128_49_sequence);
+ ett_rrc_T_tdd128_51, T_tdd128_51_sequence);
return offset;
}
-static const value_string rrc_T_tddOption_19_vals[] = {
+static const value_string rrc_T_tddOption_20_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tddOption_19_choice[] = {
- { 0, &hf_rrc_tdd384_37 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_33 },
- { 1, &hf_rrc_tdd128_51 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_49 },
+static const per_choice_t T_tddOption_20_choice[] = {
+ { 0, &hf_rrc_tdd384_38 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_34 },
+ { 1, &hf_rrc_tdd128_53 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_51 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tddOption_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tddOption_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tddOption_19, T_tddOption_19_choice,
+ ett_rrc_T_tddOption_20, T_tddOption_20_choice,
NULL);
return offset;
@@ -35171,7 +36705,7 @@ dissect_rrc_T_tddOption_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
static const per_sequence_t T_individuallySignalled_01_sequence[] = {
- { &hf_rrc_tddOption_19 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_19 },
+ { &hf_rrc_tddOption_20 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_20 },
{ &hf_rrc_primaryCCPCH_TX_Power, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCCPCH_TX_Power },
{ NULL, 0, 0, NULL }
};
@@ -35207,16 +36741,16 @@ dissect_rrc_T_ul_OL_PC_Signalling_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_tdd_64_sequence[] = {
+static const per_sequence_t T_tdd_67_sequence[] = {
{ &hf_rrc_ul_TargetSIR , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_TargetSIR },
{ &hf_rrc_ul_OL_PC_Signalling_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_ul_OL_PC_Signalling_01 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_64(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_67(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_64, T_tdd_64_sequence);
+ ett_rrc_T_tdd_67, T_tdd_67_sequence);
return offset;
}
@@ -35229,8 +36763,8 @@ static const value_string rrc_UL_DPCH_PowerControlInfo_r4_vals[] = {
};
static const per_choice_t UL_DPCH_PowerControlInfo_r4_choice[] = {
- { 0, &hf_rrc_fdd_115 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_112 },
- { 1, &hf_rrc_tdd_70 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_64 },
+ { 0, &hf_rrc_fdd_118 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_115 },
+ { 1, &hf_rrc_tdd_73 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_67 },
{ 0, NULL, 0, NULL }
};
@@ -35244,7 +36778,7 @@ dissect_rrc_UL_DPCH_PowerControlInfo_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_
}
-static const per_sequence_t T_fdd_105_sequence[] = {
+static const per_sequence_t T_fdd_108_sequence[] = {
{ &hf_rrc_scramblingCodeType, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_ScramblingCodeType },
{ &hf_rrc_scramblingCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_ScramblingCode },
{ &hf_rrc_numberOfDPDCH , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NumberOfDPDCH },
@@ -35256,24 +36790,24 @@ static const per_sequence_t T_fdd_105_sequence[] = {
};
static int
-dissect_rrc_T_fdd_105(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_108(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_105, T_fdd_105_sequence);
+ ett_rrc_T_fdd_108, T_fdd_108_sequence);
return offset;
}
-static const per_sequence_t T_tdd384_37_sequence[] = {
+static const per_sequence_t T_tdd384_38_sequence[] = {
{ &hf_rrc_ul_TimingAdvance, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_TimingAdvance },
{ &hf_rrc_activationTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ActivationTime },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd384_37(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_38(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_37, T_tdd384_37_sequence);
+ ett_rrc_T_tdd384_38, T_tdd384_38_sequence);
return offset;
}
@@ -35411,37 +36945,37 @@ dissect_rrc_SynchronisationParameters_r4(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_tdd128_53_sequence[] = {
+static const per_sequence_t T_tdd128_55_sequence[] = {
{ &hf_rrc_ul_SynchronisationParameters, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_SynchronisationParameters_r4 },
{ &hf_rrc_synchronisationParameters, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SynchronisationParameters_r4 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_53(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_55(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_53, T_tdd128_53_sequence);
+ ett_rrc_T_tdd128_55, T_tdd128_55_sequence);
return offset;
}
-static const value_string rrc_T_tddOption_23_vals[] = {
+static const value_string rrc_T_tddOption_24_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tddOption_23_choice[] = {
- { 0, &hf_rrc_tdd384_41 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_37 },
- { 1, &hf_rrc_tdd128_55 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_53 },
+static const per_choice_t T_tddOption_24_choice[] = {
+ { 0, &hf_rrc_tdd384_42 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_38 },
+ { 1, &hf_rrc_tdd128_57 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_55 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tddOption_23(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tddOption_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tddOption_23, T_tddOption_23_choice,
+ ett_rrc_T_tddOption_24, T_tddOption_24_choice,
NULL);
return offset;
@@ -35449,7 +36983,7 @@ dissect_rrc_T_tddOption_23(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
static const per_sequence_t T_enabled_01_sequence[] = {
- { &hf_rrc_tddOption_23 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_23 },
+ { &hf_rrc_tddOption_24 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_24 },
{ NULL, 0, 0, NULL }
};
@@ -35484,15 +37018,15 @@ dissect_rrc_UL_TimingAdvanceControl_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_c
}
-static const per_sequence_t T_tdd384_31_sequence[] = {
+static const per_sequence_t T_tdd384_32_sequence[] = {
{ &hf_rrc_ul_CCTrCH_TimeslotsCodes, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UplinkTimeslotsCodes },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd384_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_31, T_tdd384_31_sequence);
+ ett_rrc_T_tdd384_32, T_tdd384_32_sequence);
return offset;
}
@@ -35652,36 +37186,36 @@ dissect_rrc_UplinkTimeslotsCodes_LCR_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_
}
-static const per_sequence_t T_tdd128_47_sequence[] = {
+static const per_sequence_t T_tdd128_49_sequence[] = {
{ &hf_rrc_ul_CCTrCH_TimeslotsCodes_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UplinkTimeslotsCodes_LCR_r4 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_47(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_49(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_47, T_tdd128_47_sequence);
+ ett_rrc_T_tdd128_49, T_tdd128_49_sequence);
return offset;
}
-static const value_string rrc_T_tddOption_17_vals[] = {
+static const value_string rrc_T_tddOption_18_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tddOption_17_choice[] = {
- { 0, &hf_rrc_tdd384_35 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_31 },
- { 1, &hf_rrc_tdd128_49 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_47 },
+static const per_choice_t T_tddOption_18_choice[] = {
+ { 0, &hf_rrc_tdd384_36 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_32 },
+ { 1, &hf_rrc_tdd128_51 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_49 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tddOption_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tddOption_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tddOption_17, T_tddOption_17_choice,
+ ett_rrc_T_tddOption_18, T_tddOption_18_choice,
NULL);
return offset;
@@ -35693,7 +37227,7 @@ static const per_sequence_t UL_CCTrCH_r4_sequence[] = {
{ &hf_rrc_ul_TargetSIR , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_TargetSIR },
{ &hf_rrc_timeInfo , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TimeInfo },
{ &hf_rrc_commonTimeslotInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CommonTimeslotInfo },
- { &hf_rrc_tddOption_17 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_17 },
+ { &hf_rrc_tddOption_18 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_18 },
{ NULL, 0, 0, NULL }
};
@@ -35720,7 +37254,7 @@ dissect_rrc_UL_CCTrCHList_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_tdd_58_sequence[] = {
+static const per_sequence_t T_tdd_61_sequence[] = {
{ &hf_rrc_ul_TimingAdvance_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_TimingAdvanceControl_r4 },
{ &hf_rrc_ul_CCTrCHList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CCTrCHList_r4 },
{ &hf_rrc_ul_CCTrCHListToRemove, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CCTrCHListToRemove },
@@ -35728,30 +37262,30 @@ static const per_sequence_t T_tdd_58_sequence[] = {
};
static int
-dissect_rrc_T_tdd_58(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_61(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_58, T_tdd_58_sequence);
+ ett_rrc_T_tdd_61, T_tdd_61_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_74_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_77_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_74_choice[] = {
- { 0, &hf_rrc_fdd_108 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_105 },
- { 1, &hf_rrc_tdd_64 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_58 },
+static const per_choice_t T_modeSpecificInfo_77_choice[] = {
+ { 0, &hf_rrc_fdd_111 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_108 },
+ { 1, &hf_rrc_tdd_67 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_61 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_74(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_77(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_74, T_modeSpecificInfo_74_choice,
+ ett_rrc_T_modeSpecificInfo_77, T_modeSpecificInfo_77_choice,
NULL);
return offset;
@@ -35760,7 +37294,7 @@ dissect_rrc_T_modeSpecificInfo_74(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t UL_DPCH_Info_r4_sequence[] = {
{ &hf_rrc_ul_DPCH_PowerControlInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DPCH_PowerControlInfo_r4 },
- { &hf_rrc_modeSpecificInfo_74, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_74 },
+ { &hf_rrc_modeSpecificInfo_77, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_77 },
{ NULL, 0, 0, NULL }
};
@@ -35781,7 +37315,7 @@ static const value_string rrc_UL_ChannelRequirement_r4_vals[] = {
static const per_choice_t UL_ChannelRequirement_r4_choice[] = {
{ 0, &hf_rrc_ul_DPCH_Info_05 , ASN1_NO_EXTENSIONS , dissect_rrc_UL_DPCH_Info_r4 },
- { 1, &hf_rrc_dummy_42 , ASN1_NO_EXTENSIONS , dissect_rrc_CPCH_SetInfo },
+ { 1, &hf_rrc_dummy_46 , ASN1_NO_EXTENSIONS , dissect_rrc_CPCH_SetInfo },
{ 0, NULL, 0, NULL }
};
@@ -35832,7 +37366,7 @@ dissect_rrc_T_modeSpecificPhysChInfo_01(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_initialise_01_sequence[] = {
- { &hf_rrc_dummy_35 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Cfntargetsfnframeoffset },
+ { &hf_rrc_dummy_39 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Cfntargetsfnframeoffset },
{ NULL, 0, 0, NULL }
};
@@ -35867,7 +37401,7 @@ dissect_rrc_T_cfnHandling_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_fdd_62_sequence[] = {
+static const per_sequence_t T_fdd_65_sequence[] = {
{ &hf_rrc_dl_DPCH_PowerControlInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DPCH_PowerControlInfo },
{ &hf_rrc_powerOffsetPilot_pdpdch, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PowerOffsetPilot_pdpdch },
{ &hf_rrc_dl_rate_matching_restriction, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Dl_rate_matching_restriction },
@@ -35878,44 +37412,44 @@ static const per_sequence_t T_fdd_62_sequence[] = {
};
static int
-dissect_rrc_T_fdd_62(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_65(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_62, T_fdd_62_sequence);
+ ett_rrc_T_fdd_65, T_fdd_65_sequence);
return offset;
}
-static const per_sequence_t T_tdd_24_sequence[] = {
+static const per_sequence_t T_tdd_27_sequence[] = {
{ &hf_rrc_dl_DPCH_PowerControlInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DPCH_PowerControlInfo },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_27(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_24, T_tdd_24_sequence);
+ ett_rrc_T_tdd_27, T_tdd_27_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_32_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_35_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_32_choice[] = {
- { 0, &hf_rrc_fdd_63 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_62 },
- { 1, &hf_rrc_tdd_25 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_24 },
+static const per_choice_t T_modeSpecificInfo_35_choice[] = {
+ { 0, &hf_rrc_fdd_66 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_65 },
+ { 1, &hf_rrc_tdd_28 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_27 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_35(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_32, T_modeSpecificInfo_32_choice,
+ ett_rrc_T_modeSpecificInfo_35, T_modeSpecificInfo_35_choice,
NULL);
return offset;
@@ -35934,7 +37468,7 @@ dissect_rrc_MAC_d_HFN_initial_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t DL_DPCH_InfoCommon_r4_sequence[] = {
{ &hf_rrc_cfnHandling_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_cfnHandling_01 },
- { &hf_rrc_modeSpecificInfo_32, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_32 },
+ { &hf_rrc_modeSpecificInfo_35, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_35 },
{ &hf_rrc_mac_d_HFN_initial_value, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MAC_d_HFN_initial_value },
{ NULL, 0, 0, NULL }
};
@@ -35964,32 +37498,32 @@ dissect_rrc_SSDT_Information_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
}
-static const per_sequence_t T_fdd_56_sequence[] = {
+static const per_sequence_t T_fdd_58_sequence[] = {
{ &hf_rrc_defaultDPCH_OffsetValue, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultDPCH_OffsetValueFDD },
{ &hf_rrc_dpch_CompressedModeInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DPCH_CompressedModeInfo },
{ &hf_rrc_tx_DiversityMode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TX_DiversityMode },
- { &hf_rrc_dummy_34 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SSDT_Information_r4 },
+ { &hf_rrc_dummy_38 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SSDT_Information_r4 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_56(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_58(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_56, T_fdd_56_sequence);
+ ett_rrc_T_fdd_58, T_fdd_58_sequence);
return offset;
}
-static const per_sequence_t T_tdd128_12_sequence[] = {
+static const per_sequence_t T_tdd128_13_sequence[] = {
{ &hf_rrc_tstd_Indicator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_12, T_tdd128_12_sequence);
+ ett_rrc_T_tdd128_13, T_tdd128_13_sequence);
return offset;
}
@@ -36002,8 +37536,8 @@ static const value_string rrc_T_tddOption_05_vals[] = {
};
static const per_choice_t T_tddOption_05_choice[] = {
- { 0, &hf_rrc_tdd384_09 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 1, &hf_rrc_tdd128_12 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_12 },
+ { 0, &hf_rrc_tdd384_10 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_tdd128_13 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_13 },
{ 0, NULL, 0, NULL }
};
@@ -36017,37 +37551,37 @@ dissect_rrc_T_tddOption_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
}
-static const per_sequence_t T_tdd_18_sequence[] = {
+static const per_sequence_t T_tdd_20_sequence[] = {
{ &hf_rrc_tddOption_05 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_05 },
{ &hf_rrc_defaultDPCH_OffsetValue_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultDPCH_OffsetValueTDD },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_18, T_tdd_18_sequence);
+ ett_rrc_T_tdd_20, T_tdd_20_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_26_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_28_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_26_choice[] = {
- { 0, &hf_rrc_fdd_57 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_56 },
- { 1, &hf_rrc_tdd_19 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_18 },
+static const per_choice_t T_modeSpecificInfo_28_choice[] = {
+ { 0, &hf_rrc_fdd_59 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_58 },
+ { 1, &hf_rrc_tdd_21 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_20 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_26(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_28(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_26, T_modeSpecificInfo_26_choice,
+ ett_rrc_T_modeSpecificInfo_28, T_modeSpecificInfo_28_choice,
NULL);
return offset;
@@ -36056,7 +37590,7 @@ dissect_rrc_T_modeSpecificInfo_26(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t DL_CommonInformation_r4_sequence[] = {
{ &hf_rrc_dl_DPCH_InfoCommon_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DPCH_InfoCommon_r4 },
- { &hf_rrc_modeSpecificInfo_26, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_26 },
+ { &hf_rrc_modeSpecificInfo_28, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_28 },
{ NULL, 0, 0, NULL }
};
@@ -36069,7 +37603,7 @@ dissect_rrc_DL_CommonInformation_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
-static const per_sequence_t T_fdd_75_sequence[] = {
+static const per_sequence_t T_fdd_78_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ &hf_rrc_dummy1_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PDSCH_SHO_DCH_Info },
{ &hf_rrc_dummy2_06 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PDSCH_CodeMapping },
@@ -36077,23 +37611,23 @@ static const per_sequence_t T_fdd_75_sequence[] = {
};
static int
-dissect_rrc_T_fdd_75(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_78(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_75, T_fdd_75_sequence);
+ ett_rrc_T_fdd_78, T_fdd_78_sequence);
return offset;
}
-static const per_sequence_t T_fdd_97_sequence[] = {
+static const per_sequence_t T_fdd_100_sequence[] = {
{ &hf_rrc_tx_DiversityIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_97(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_100(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_97, T_fdd_97_sequence);
+ ett_rrc_T_fdd_100, T_fdd_100_sequence);
return offset;
}
@@ -36163,53 +37697,53 @@ dissect_rrc_T_tdd384_tdd768_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
}
-static const per_sequence_t T_tdd128_40_sequence[] = {
+static const per_sequence_t T_tdd128_42_sequence[] = {
{ &hf_rrc_tstd_Indicator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_40(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_42(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_40, T_tdd128_40_sequence);
+ ett_rrc_T_tdd128_42, T_tdd128_42_sequence);
return offset;
}
-static const value_string rrc_T_tddOption_12_vals[] = {
+static const value_string rrc_T_tddOption_13_vals[] = {
{ 0, "tdd384-tdd768" },
{ 1, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tddOption_12_choice[] = {
+static const per_choice_t T_tddOption_13_choice[] = {
{ 0, &hf_rrc_tdd384_tdd768_04, ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_tdd768_03 },
- { 1, &hf_rrc_tdd128_41 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_40 },
+ { 1, &hf_rrc_tdd128_43 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_42 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tddOption_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tddOption_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tddOption_12, T_tddOption_12_choice,
+ ett_rrc_T_tddOption_13, T_tddOption_13_choice,
NULL);
return offset;
}
-static const per_sequence_t T_tdd_53_sequence[] = {
- { &hf_rrc_tddOption_12 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_12 },
+static const per_sequence_t T_tdd_56_sequence[] = {
+ { &hf_rrc_tddOption_13 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_13 },
{ &hf_rrc_cellParametersID, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellParametersID },
{ &hf_rrc_sctd_Indicator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_53(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_56(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_53, T_tdd_53_sequence);
+ ett_rrc_T_tdd_56, T_tdd_56_sequence);
return offset;
}
@@ -36222,8 +37756,8 @@ static const value_string rrc_PrimaryCCPCH_Info_r4_vals[] = {
};
static const per_choice_t PrimaryCCPCH_Info_r4_choice[] = {
- { 0, &hf_rrc_fdd_100 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_97 },
- { 1, &hf_rrc_tdd_59 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_53 },
+ { 0, &hf_rrc_fdd_103 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_100 },
+ { 1, &hf_rrc_tdd_62 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_56 },
{ 0, NULL, 0, NULL }
};
@@ -36237,58 +37771,58 @@ dissect_rrc_PrimaryCCPCH_Info_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
}
-static const value_string rrc_T_modeSpecificInfo_43_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_46_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_43_choice[] = {
- { 0, &hf_rrc_fdd_76 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_75 },
- { 1, &hf_rrc_tdd_41 , ASN1_NO_EXTENSIONS , dissect_rrc_PrimaryCCPCH_Info_r4 },
+static const per_choice_t T_modeSpecificInfo_46_choice[] = {
+ { 0, &hf_rrc_fdd_79 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_78 },
+ { 1, &hf_rrc_tdd_44 , ASN1_NO_EXTENSIONS , dissect_rrc_PrimaryCCPCH_Info_r4 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_43(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_46(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_43, T_modeSpecificInfo_43_choice,
+ ett_rrc_T_modeSpecificInfo_46, T_modeSpecificInfo_46_choice,
NULL);
return offset;
}
-static const per_sequence_t T_fdd_66_sequence[] = {
+static const per_sequence_t T_fdd_69_sequence[] = {
{ &hf_rrc_pCPICH_UsageForChannelEst, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PCPICH_UsageForChannelEst },
{ &hf_rrc_dpch_FrameOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DPCH_FrameOffset },
{ &hf_rrc_secondaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SecondaryCPICH_Info },
{ &hf_rrc_dl_ChannelisationCodeList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_ChannelisationCodeList },
{ &hf_rrc_tpc_CombinationIndex, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TPC_CombinationIndex },
- { &hf_rrc_dummy_36 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SSDT_CellIdentity },
+ { &hf_rrc_dummy_40 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SSDT_CellIdentity },
{ &hf_rrc_closedLoopTimingAdjMode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ClosedLoopTimingAdjMode },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_66(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_69(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_66, T_fdd_66_sequence);
+ ett_rrc_T_fdd_69, T_fdd_69_sequence);
return offset;
}
-static const per_sequence_t T_tdd_28_sequence[] = {
+static const per_sequence_t T_tdd_31_sequence[] = {
{ &hf_rrc_dl_CCTrChListToEstablish_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CCTrChList_r4 },
{ &hf_rrc_dl_CCTrChListToRemove, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CCTrChListToRemove },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_28(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_28, T_tdd_28_sequence);
+ ett_rrc_T_tdd_31, T_tdd_31_sequence);
return offset;
}
@@ -36301,8 +37835,8 @@ static const value_string rrc_DL_DPCH_InfoPerRL_r4_vals[] = {
};
static const per_choice_t DL_DPCH_InfoPerRL_r4_choice[] = {
- { 0, &hf_rrc_fdd_67 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_66 },
- { 1, &hf_rrc_tdd_29 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_28 },
+ { 0, &hf_rrc_fdd_70 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_69 },
+ { 1, &hf_rrc_tdd_32 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_31 },
{ 0, NULL, 0, NULL }
};
@@ -36316,7 +37850,7 @@ dissect_rrc_DL_DPCH_InfoPerRL_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
}
-static const per_sequence_t T_fdd_101_sequence[] = {
+static const per_sequence_t T_fdd_104_sequence[] = {
{ &hf_rrc_secondaryScramblingCode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SecondaryScramblingCode },
{ &hf_rrc_sttd_Indicator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_sf_AndCodeNumber_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SF256_AndCodeNumber },
@@ -36328,96 +37862,96 @@ static const per_sequence_t T_fdd_101_sequence[] = {
};
static int
-dissect_rrc_T_fdd_101(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_104(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_101, T_fdd_101_sequence);
+ ett_rrc_T_fdd_104, T_fdd_104_sequence);
return offset;
}
-static const per_sequence_t T_tdd384_27_sequence[] = {
+static const per_sequence_t T_tdd384_28_sequence[] = {
{ &hf_rrc_individualTimeslotInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_IndividualTimeslotInfo },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd384_27(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_28(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_27, T_tdd384_27_sequence);
+ ett_rrc_T_tdd384_28, T_tdd384_28_sequence);
return offset;
}
-static const per_sequence_t T_tdd128_44_sequence[] = {
+static const per_sequence_t T_tdd128_46_sequence[] = {
{ &hf_rrc_individualTimeslotInfo_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_IndividualTimeslotInfo_LCR_r4 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_44(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_46(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_44, T_tdd128_44_sequence);
+ ett_rrc_T_tdd128_46, T_tdd128_46_sequence);
return offset;
}
-static const value_string rrc_T_tddOption_16_vals[] = {
+static const value_string rrc_T_tddOption_17_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tddOption_16_choice[] = {
- { 0, &hf_rrc_tdd384_30 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_27 },
- { 1, &hf_rrc_tdd128_45 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_44 },
+static const per_choice_t T_tddOption_17_choice[] = {
+ { 0, &hf_rrc_tdd384_31 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_28 },
+ { 1, &hf_rrc_tdd128_47 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_46 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tddOption_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tddOption_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tddOption_16, T_tddOption_16_choice,
+ ett_rrc_T_tddOption_17, T_tddOption_17_choice,
NULL);
return offset;
}
-static const per_sequence_t T_tdd_56_sequence[] = {
+static const per_sequence_t T_tdd_59_sequence[] = {
{ &hf_rrc_commonTimeslotInfo_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CommonTimeslotInfoSCCPCH },
- { &hf_rrc_tddOption_16 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_16 },
+ { &hf_rrc_tddOption_17 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_17 },
{ &hf_rrc_channelisationCode_08, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SCCPCH_ChannelisationCodeList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_56(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_59(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_56, T_tdd_56_sequence);
+ ett_rrc_T_tdd_59, T_tdd_59_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_69_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_72_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_69_choice[] = {
- { 0, &hf_rrc_fdd_104 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_101 },
- { 1, &hf_rrc_tdd_62 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_56 },
+static const per_choice_t T_modeSpecificInfo_72_choice[] = {
+ { 0, &hf_rrc_fdd_107 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_104 },
+ { 1, &hf_rrc_tdd_65 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_59 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_69(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_72(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_69, T_modeSpecificInfo_69_choice,
+ ett_rrc_T_modeSpecificInfo_72, T_modeSpecificInfo_72_choice,
NULL);
return offset;
@@ -36425,7 +37959,7 @@ dissect_rrc_T_modeSpecificInfo_69(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t SecondaryCCPCH_Info_r4_sequence[] = {
- { &hf_rrc_modeSpecificInfo_69, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_69 },
+ { &hf_rrc_modeSpecificInfo_72, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_72 },
{ NULL, 0, 0, NULL }
};
@@ -36438,36 +37972,36 @@ dissect_rrc_SecondaryCCPCH_Info_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_fdd_99_sequence[] = {
+static const per_sequence_t T_fdd_102_sequence[] = {
{ &hf_rrc_sib_ReferenceListFACH, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SIB_ReferenceListFACH },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_99(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_102(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_99, T_fdd_99_sequence);
+ ett_rrc_T_fdd_102, T_fdd_102_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_67_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_70_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_67_choice[] = {
- { 0, &hf_rrc_fdd_102 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_99 },
+static const per_choice_t T_modeSpecificInfo_70_choice[] = {
+ { 0, &hf_rrc_fdd_105 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_102 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_67(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_70(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_67, T_modeSpecificInfo_67_choice,
+ ett_rrc_T_modeSpecificInfo_70, T_modeSpecificInfo_70_choice,
NULL);
return offset;
@@ -36478,7 +38012,7 @@ static const per_sequence_t SCCPCH_InfoForFACH_r4_sequence[] = {
{ &hf_rrc_secondaryCCPCH_Info_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SecondaryCCPCH_Info_r4 },
{ &hf_rrc_tfcs , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TFCS },
{ &hf_rrc_fach_PCH_InformationList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_FACH_PCH_InformationList },
- { &hf_rrc_modeSpecificInfo_67, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_67 },
+ { &hf_rrc_modeSpecificInfo_70, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_70 },
{ NULL, 0, 0, NULL }
};
@@ -36492,9 +38026,9 @@ dissect_rrc_SCCPCH_InfoForFACH_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t DL_InformationPerRL_r4_sequence[] = {
- { &hf_rrc_modeSpecificInfo_43, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_43 },
+ { &hf_rrc_modeSpecificInfo_46, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_46 },
{ &hf_rrc_dl_DPCH_InfoPerRL_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DPCH_InfoPerRL_r4 },
- { &hf_rrc_dummy_38 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SCCPCH_InfoForFACH_r4 },
+ { &hf_rrc_dummy_42 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SCCPCH_InfoForFACH_r4 },
{ &hf_rrc_cell_id , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellIdentity },
{ NULL, 0, 0, NULL }
};
@@ -36564,14 +38098,14 @@ dissect_rrc_CellUpdateConfirm_r4_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_nonCriticalExtensions_13_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_14_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_13, T_nonCriticalExtensions_13_sequence);
+ ett_rrc_T_nonCriticalExtensions_14, T_nonCriticalExtensions_14_sequence);
return offset;
}
@@ -36579,7 +38113,7 @@ dissect_rrc_T_nonCriticalExtensions_13(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v690NonCriticalExtensions_03_sequence[] = {
{ &hf_rrc_cellUpdateConfirm_v690ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellUpdateConfirm_v690ext_IEs },
- { &hf_rrc_nonCriticalExtensions_13, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_13 },
+ { &hf_rrc_nonCriticalExtensions_14, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_14 },
{ NULL, 0, 0, NULL }
};
@@ -37316,7 +38850,7 @@ dissect_rrc_ACK_NACK_repetitionFactor(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
}
-static const per_sequence_t T_fdd_113_sequence[] = {
+static const per_sequence_t T_fdd_116_sequence[] = {
{ &hf_rrc_dpcch_PowerOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DPCCH_PowerOffset },
{ &hf_rrc_pc_Preamble , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PC_Preamble },
{ &hf_rrc_sRB_delay , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SRB_delay },
@@ -37328,59 +38862,59 @@ static const per_sequence_t T_fdd_113_sequence[] = {
};
static int
-dissect_rrc_T_fdd_113(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_116(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_113, T_fdd_113_sequence);
+ ett_rrc_T_fdd_116, T_fdd_116_sequence);
return offset;
}
-static const per_sequence_t T_tdd384_34_sequence[] = {
+static const per_sequence_t T_tdd384_35_sequence[] = {
{ &hf_rrc_individualTS_InterferenceList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_IndividualTS_InterferenceList },
{ &hf_rrc_dpch_ConstantValue_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_ConstantValue },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd384_34(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_35(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_34, T_tdd384_34_sequence);
+ ett_rrc_T_tdd384_35, T_tdd384_35_sequence);
return offset;
}
-static const per_sequence_t T_tdd128_50_sequence[] = {
+static const per_sequence_t T_tdd128_52_sequence[] = {
{ &hf_rrc_tpc_StepSize , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TPC_StepSizeTDD },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_50(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_52(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_50, T_tdd128_50_sequence);
+ ett_rrc_T_tdd128_52, T_tdd128_52_sequence);
return offset;
}
-static const value_string rrc_T_tddOption_20_vals[] = {
+static const value_string rrc_T_tddOption_21_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tddOption_20_choice[] = {
- { 0, &hf_rrc_tdd384_38 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_34 },
- { 1, &hf_rrc_tdd128_52 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_50 },
+static const per_choice_t T_tddOption_21_choice[] = {
+ { 0, &hf_rrc_tdd384_39 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_35 },
+ { 1, &hf_rrc_tdd128_54 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_52 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tddOption_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tddOption_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tddOption_20, T_tddOption_20_choice,
+ ett_rrc_T_tddOption_21, T_tddOption_21_choice,
NULL);
return offset;
@@ -37388,7 +38922,7 @@ dissect_rrc_T_tddOption_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
static const per_sequence_t T_individuallySignalled_02_sequence[] = {
- { &hf_rrc_tddOption_20 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_20 },
+ { &hf_rrc_tddOption_21 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_21 },
{ &hf_rrc_primaryCCPCH_TX_Power, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCCPCH_TX_Power },
{ NULL, 0, 0, NULL }
};
@@ -37424,16 +38958,16 @@ dissect_rrc_T_ul_OL_PC_Signalling_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_tdd_65_sequence[] = {
+static const per_sequence_t T_tdd_68_sequence[] = {
{ &hf_rrc_ul_TargetSIR , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_TargetSIR },
{ &hf_rrc_ul_OL_PC_Signalling_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_ul_OL_PC_Signalling_02 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_65(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_68(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_65, T_tdd_65_sequence);
+ ett_rrc_T_tdd_68, T_tdd_68_sequence);
return offset;
}
@@ -37446,8 +38980,8 @@ static const value_string rrc_UL_DPCH_PowerControlInfo_r5_vals[] = {
};
static const per_choice_t UL_DPCH_PowerControlInfo_r5_choice[] = {
- { 0, &hf_rrc_fdd_116 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_113 },
- { 1, &hf_rrc_tdd_71 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_65 },
+ { 0, &hf_rrc_fdd_119 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_116 },
+ { 1, &hf_rrc_tdd_74 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_68 },
{ 0, NULL, 0, NULL }
};
@@ -37461,7 +38995,7 @@ dissect_rrc_UL_DPCH_PowerControlInfo_r5(tvbuff_t *tvb _U_, int offset _U_, asn1_
}
-static const per_sequence_t T_fdd_106_sequence[] = {
+static const per_sequence_t T_fdd_109_sequence[] = {
{ &hf_rrc_scramblingCodeType, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_ScramblingCodeType },
{ &hf_rrc_scramblingCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_ScramblingCode },
{ &hf_rrc_numberOfDPDCH , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NumberOfDPDCH },
@@ -37473,15 +39007,15 @@ static const per_sequence_t T_fdd_106_sequence[] = {
};
static int
-dissect_rrc_T_fdd_106(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_109(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_106, T_fdd_106_sequence);
+ ett_rrc_T_fdd_109, T_fdd_109_sequence);
return offset;
}
-static const per_sequence_t T_tdd_59_sequence[] = {
+static const per_sequence_t T_tdd_62_sequence[] = {
{ &hf_rrc_ul_TimingAdvance_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_TimingAdvanceControl_r4 },
{ &hf_rrc_ul_CCTrCHList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CCTrCHList_r4 },
{ &hf_rrc_ul_CCTrCHListToRemove, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CCTrCHListToRemove },
@@ -37489,30 +39023,30 @@ static const per_sequence_t T_tdd_59_sequence[] = {
};
static int
-dissect_rrc_T_tdd_59(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_62(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_59, T_tdd_59_sequence);
+ ett_rrc_T_tdd_62, T_tdd_62_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_75_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_78_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_75_choice[] = {
- { 0, &hf_rrc_fdd_109 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_106 },
- { 1, &hf_rrc_tdd_65 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_59 },
+static const per_choice_t T_modeSpecificInfo_78_choice[] = {
+ { 0, &hf_rrc_fdd_112 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_109 },
+ { 1, &hf_rrc_tdd_68 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_62 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_75(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_78(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_75, T_modeSpecificInfo_75_choice,
+ ett_rrc_T_modeSpecificInfo_78, T_modeSpecificInfo_78_choice,
NULL);
return offset;
@@ -37521,7 +39055,7 @@ dissect_rrc_T_modeSpecificInfo_75(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t UL_DPCH_Info_r5_sequence[] = {
{ &hf_rrc_ul_DPCH_PowerControlInfo_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DPCH_PowerControlInfo_r5 },
- { &hf_rrc_modeSpecificInfo_75, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_75 },
+ { &hf_rrc_modeSpecificInfo_78, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_78 },
{ NULL, 0, 0, NULL }
};
@@ -37542,7 +39076,7 @@ static const value_string rrc_UL_ChannelRequirement_r5_vals[] = {
static const per_choice_t UL_ChannelRequirement_r5_choice[] = {
{ 0, &hf_rrc_ul_DPCH_Info_07 , ASN1_NO_EXTENSIONS , dissect_rrc_UL_DPCH_Info_r5 },
- { 1, &hf_rrc_dummy_42 , ASN1_NO_EXTENSIONS , dissect_rrc_CPCH_SetInfo },
+ { 1, &hf_rrc_dummy_46 , ASN1_NO_EXTENSIONS , dissect_rrc_CPCH_SetInfo },
{ 0, NULL, 0, NULL }
};
@@ -37592,32 +39126,32 @@ dissect_rrc_T_modeSpecificPhysChInfo_02(tvbuff_t *tvb _U_, int offset _U_, asn1_
}
-static const per_sequence_t T_fdd_57_sequence[] = {
+static const per_sequence_t T_fdd_59_sequence[] = {
{ &hf_rrc_defaultDPCH_OffsetValue, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultDPCH_OffsetValueFDD },
{ &hf_rrc_dpch_CompressedModeInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DPCH_CompressedModeInfo },
{ &hf_rrc_tx_DiversityMode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TX_DiversityMode },
- { &hf_rrc_dummy_34 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SSDT_Information_r4 },
+ { &hf_rrc_dummy_38 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SSDT_Information_r4 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_57(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_59(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_57, T_fdd_57_sequence);
+ ett_rrc_T_fdd_59, T_fdd_59_sequence);
return offset;
}
-static const per_sequence_t T_tdd128_13_sequence[] = {
+static const per_sequence_t T_tdd128_14_sequence[] = {
{ &hf_rrc_tstd_Indicator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_13, T_tdd128_13_sequence);
+ ett_rrc_T_tdd128_14, T_tdd128_14_sequence);
return offset;
}
@@ -37630,8 +39164,8 @@ static const value_string rrc_T_tddOption_06_vals[] = {
};
static const per_choice_t T_tddOption_06_choice[] = {
- { 0, &hf_rrc_tdd384_09 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 1, &hf_rrc_tdd128_13 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_13 },
+ { 0, &hf_rrc_tdd384_10 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_tdd128_14 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_14 },
{ 0, NULL, 0, NULL }
};
@@ -37645,37 +39179,37 @@ dissect_rrc_T_tddOption_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
}
-static const per_sequence_t T_tdd_19_sequence[] = {
+static const per_sequence_t T_tdd_21_sequence[] = {
{ &hf_rrc_tddOption_06 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_06 },
{ &hf_rrc_defaultDPCH_OffsetValue_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultDPCH_OffsetValueTDD },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_19, T_tdd_19_sequence);
+ ett_rrc_T_tdd_21, T_tdd_21_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_27_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_29_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_27_choice[] = {
- { 0, &hf_rrc_fdd_58 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_57 },
- { 1, &hf_rrc_tdd_20 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_19 },
+static const per_choice_t T_modeSpecificInfo_29_choice[] = {
+ { 0, &hf_rrc_fdd_60 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_59 },
+ { 1, &hf_rrc_tdd_22 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_21 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_27(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_29(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_27, T_modeSpecificInfo_27_choice,
+ ett_rrc_T_modeSpecificInfo_29, T_modeSpecificInfo_29_choice,
NULL);
return offset;
@@ -37699,7 +39233,7 @@ dissect_rrc_T_mac_hsResetIndicator_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
static const per_sequence_t DL_CommonInformation_r5_sequence[] = {
{ &hf_rrc_dl_DPCH_InfoCommon_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DPCH_InfoCommon_r4 },
- { &hf_rrc_modeSpecificInfo_27, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_27 },
+ { &hf_rrc_modeSpecificInfo_29, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_29 },
{ &hf_rrc_mac_hsResetIndicator_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_mac_hsResetIndicator_04 },
{ NULL, 0, 0, NULL }
};
@@ -37713,7 +39247,7 @@ dissect_rrc_DL_CommonInformation_r5(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
-static const per_sequence_t T_fdd_76_sequence[] = {
+static const per_sequence_t T_fdd_79_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ &hf_rrc_dummy1_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PDSCH_SHO_DCH_Info },
{ &hf_rrc_dummy2_06 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PDSCH_CodeMapping },
@@ -37722,30 +39256,30 @@ static const per_sequence_t T_fdd_76_sequence[] = {
};
static int
-dissect_rrc_T_fdd_76(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_79(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_76, T_fdd_76_sequence);
+ ett_rrc_T_fdd_79, T_fdd_79_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_44_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_47_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_44_choice[] = {
- { 0, &hf_rrc_fdd_77 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_76 },
- { 1, &hf_rrc_tdd_41 , ASN1_NO_EXTENSIONS , dissect_rrc_PrimaryCCPCH_Info_r4 },
+static const per_choice_t T_modeSpecificInfo_47_choice[] = {
+ { 0, &hf_rrc_fdd_80 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_79 },
+ { 1, &hf_rrc_tdd_44 , ASN1_NO_EXTENSIONS , dissect_rrc_PrimaryCCPCH_Info_r4 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_44(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_47(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_44, T_modeSpecificInfo_44_choice,
+ ett_rrc_T_modeSpecificInfo_47, T_modeSpecificInfo_47_choice,
NULL);
return offset;
@@ -37753,9 +39287,9 @@ dissect_rrc_T_modeSpecificInfo_44(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t DL_InformationPerRL_r5_sequence[] = {
- { &hf_rrc_modeSpecificInfo_44, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_44 },
+ { &hf_rrc_modeSpecificInfo_47, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_47 },
{ &hf_rrc_dl_DPCH_InfoPerRL_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DPCH_InfoPerRL_r5 },
- { &hf_rrc_dummy_38 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SCCPCH_InfoForFACH_r4 },
+ { &hf_rrc_dummy_42 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SCCPCH_InfoForFACH_r4 },
{ &hf_rrc_cell_id , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellIdentity },
{ NULL, 0, 0, NULL }
};
@@ -37827,14 +39361,14 @@ dissect_rrc_CellUpdateConfirm_r5_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_nonCriticalExtensions_14_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_15_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_14, T_nonCriticalExtensions_14_sequence);
+ ett_rrc_T_nonCriticalExtensions_15, T_nonCriticalExtensions_15_sequence);
return offset;
}
@@ -37842,7 +39376,7 @@ dissect_rrc_T_nonCriticalExtensions_14(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v690NonCriticalExtensions_04_sequence[] = {
{ &hf_rrc_cellUpdateConfirm_v690ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellUpdateConfirm_v690ext_IEs },
- { &hf_rrc_nonCriticalExtensions_14, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_14 },
+ { &hf_rrc_nonCriticalExtensions_15, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_15 },
{ NULL, 0, 0, NULL }
};
@@ -38517,7 +40051,7 @@ dissect_rrc_UL_AddReconfTransChInfoList_r6(tvbuff_t *tvb _U_, int offset _U_, as
}
-static const per_sequence_t T_fdd_114_sequence[] = {
+static const per_sequence_t T_fdd_117_sequence[] = {
{ &hf_rrc_dpcch_PowerOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DPCCH_PowerOffset },
{ &hf_rrc_pc_Preamble , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PC_Preamble },
{ &hf_rrc_sRB_delay , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SRB_delay },
@@ -38530,60 +40064,60 @@ static const per_sequence_t T_fdd_114_sequence[] = {
};
static int
-dissect_rrc_T_fdd_114(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_117(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_114, T_fdd_114_sequence);
+ ett_rrc_T_fdd_117, T_fdd_117_sequence);
return offset;
}
-static const per_sequence_t T_tdd384_35_sequence[] = {
+static const per_sequence_t T_tdd384_36_sequence[] = {
{ &hf_rrc_individualTS_InterferenceList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_IndividualTS_InterferenceList },
{ &hf_rrc_dpch_ConstantValue_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_ConstantValue },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd384_35(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_36(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_35, T_tdd384_35_sequence);
+ ett_rrc_T_tdd384_36, T_tdd384_36_sequence);
return offset;
}
-static const per_sequence_t T_tdd128_51_sequence[] = {
+static const per_sequence_t T_tdd128_53_sequence[] = {
{ &hf_rrc_beaconPLEst , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BEACON_PL_Est },
{ &hf_rrc_tpc_StepSize , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TPC_StepSizeTDD },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_51(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_53(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_51, T_tdd128_51_sequence);
+ ett_rrc_T_tdd128_53, T_tdd128_53_sequence);
return offset;
}
-static const value_string rrc_T_tddOption_21_vals[] = {
+static const value_string rrc_T_tddOption_22_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tddOption_21_choice[] = {
- { 0, &hf_rrc_tdd384_39 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_35 },
- { 1, &hf_rrc_tdd128_53 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_51 },
+static const per_choice_t T_tddOption_22_choice[] = {
+ { 0, &hf_rrc_tdd384_40 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_36 },
+ { 1, &hf_rrc_tdd128_55 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_53 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tddOption_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tddOption_22(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tddOption_21, T_tddOption_21_choice,
+ ett_rrc_T_tddOption_22, T_tddOption_22_choice,
NULL);
return offset;
@@ -38591,7 +40125,7 @@ dissect_rrc_T_tddOption_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
static const per_sequence_t T_individuallySignalled_03_sequence[] = {
- { &hf_rrc_tddOption_21 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_21 },
+ { &hf_rrc_tddOption_22 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_22 },
{ &hf_rrc_primaryCCPCH_TX_Power, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCCPCH_TX_Power },
{ NULL, 0, 0, NULL }
};
@@ -38627,16 +40161,16 @@ dissect_rrc_T_ul_OL_PC_Signalling_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_tdd_66_sequence[] = {
+static const per_sequence_t T_tdd_69_sequence[] = {
{ &hf_rrc_ul_TargetSIR , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_TargetSIR },
{ &hf_rrc_ul_OL_PC_Signalling_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_ul_OL_PC_Signalling_03 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_66(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_69(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_66, T_tdd_66_sequence);
+ ett_rrc_T_tdd_69, T_tdd_69_sequence);
return offset;
}
@@ -38649,8 +40183,8 @@ static const value_string rrc_UL_DPCH_PowerControlInfo_r6_vals[] = {
};
static const per_choice_t UL_DPCH_PowerControlInfo_r6_choice[] = {
- { 0, &hf_rrc_fdd_117 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_114 },
- { 1, &hf_rrc_tdd_72 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_66 },
+ { 0, &hf_rrc_fdd_120 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_117 },
+ { 1, &hf_rrc_tdd_75 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_69 },
{ 0, NULL, 0, NULL }
};
@@ -38719,7 +40253,7 @@ dissect_rrc_T_dpdchPresence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_fdd_107_sequence[] = {
+static const per_sequence_t T_fdd_110_sequence[] = {
{ &hf_rrc_scramblingCodeType, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_ScramblingCodeType },
{ &hf_rrc_scramblingCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_ScramblingCode },
{ &hf_rrc_dpdchPresence , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_dpdchPresence },
@@ -38727,15 +40261,15 @@ static const per_sequence_t T_fdd_107_sequence[] = {
};
static int
-dissect_rrc_T_fdd_107(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_110(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_107, T_fdd_107_sequence);
+ ett_rrc_T_fdd_110, T_fdd_110_sequence);
return offset;
}
-static const per_sequence_t T_tdd_60_sequence[] = {
+static const per_sequence_t T_tdd_63_sequence[] = {
{ &hf_rrc_ul_TimingAdvance_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_TimingAdvanceControl_r4 },
{ &hf_rrc_ul_CCTrCHList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CCTrCHList_r4 },
{ &hf_rrc_ul_CCTrCHListToRemove, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CCTrCHListToRemove },
@@ -38743,30 +40277,30 @@ static const per_sequence_t T_tdd_60_sequence[] = {
};
static int
-dissect_rrc_T_tdd_60(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_63(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_60, T_tdd_60_sequence);
+ ett_rrc_T_tdd_63, T_tdd_63_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_76_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_79_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_76_choice[] = {
- { 0, &hf_rrc_fdd_110 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_107 },
- { 1, &hf_rrc_tdd_66 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_60 },
+static const per_choice_t T_modeSpecificInfo_79_choice[] = {
+ { 0, &hf_rrc_fdd_113 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_110 },
+ { 1, &hf_rrc_tdd_69 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_63 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_76(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_79(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_76, T_modeSpecificInfo_76_choice,
+ ett_rrc_T_modeSpecificInfo_79, T_modeSpecificInfo_79_choice,
NULL);
return offset;
@@ -38775,7 +40309,7 @@ dissect_rrc_T_modeSpecificInfo_76(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t UL_DPCH_Info_r6_sequence[] = {
{ &hf_rrc_ul_DPCH_PowerControlInfo_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DPCH_PowerControlInfo_r6 },
- { &hf_rrc_modeSpecificInfo_76, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_76 },
+ { &hf_rrc_modeSpecificInfo_79, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_79 },
{ NULL, 0, 0, NULL }
};
@@ -38997,22 +40531,22 @@ dissect_rrc_UL_EDCH_Information_r6(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_fdd_86_sequence[] = {
+static const per_sequence_t T_fdd_89_sequence[] = {
{ &hf_rrc_hS_SCCHChannelisationCodeInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_Codes },
{ &hf_rrc_dl_ScramblingCode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SecondaryScramblingCode },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_86(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_89(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_86, T_fdd_86_sequence);
+ ett_rrc_T_fdd_89, T_fdd_89_sequence);
return offset;
}
-static const per_sequence_t T_tdd384_21_sequence[] = {
+static const per_sequence_t T_tdd384_22_sequence[] = {
{ &hf_rrc_nack_ack_power_offset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_M7_8 },
{ &hf_rrc_hs_SICH_PowerControl_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HS_SICH_Power_Control_Info_TDD384 },
{ &hf_rrc_dhs_sync , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DHS_Sync },
@@ -39022,9 +40556,9 @@ static const per_sequence_t T_tdd384_21_sequence[] = {
};
static int
-dissect_rrc_T_tdd384_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_22(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_21, T_tdd384_21_sequence);
+ ett_rrc_T_tdd384_22, T_tdd384_22_sequence);
return offset;
}
@@ -39048,7 +40582,7 @@ dissect_rrc_T_tpc_step_size(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_tdd128_29_sequence[] = {
+static const per_sequence_t T_tdd128_31_sequence[] = {
{ &hf_rrc_nack_ack_power_offset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_M7_8 },
{ &hf_rrc_power_level_HSSICH, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_M120_M58 },
{ &hf_rrc_tpc_step_size , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tpc_step_size },
@@ -39058,52 +40592,52 @@ static const per_sequence_t T_tdd128_29_sequence[] = {
};
static int
-dissect_rrc_T_tdd128_29(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_29, T_tdd128_29_sequence);
+ ett_rrc_T_tdd128_31, T_tdd128_31_sequence);
return offset;
}
-static const value_string rrc_T_tdd_44_vals[] = {
+static const value_string rrc_T_tdd_47_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tdd_44_choice[] = {
- { 0, &hf_rrc_tdd384_23 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_21 },
- { 1, &hf_rrc_tdd128_30 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_29 },
+static const per_choice_t T_tdd_47_choice[] = {
+ { 0, &hf_rrc_tdd384_24 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_22 },
+ { 1, &hf_rrc_tdd128_32 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_31 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tdd_44(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_47(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_44, T_tdd_44_choice,
+ ett_rrc_T_tdd_47, T_tdd_47_choice,
NULL);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_56_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_59_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_56_choice[] = {
- { 0, &hf_rrc_fdd_88 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_86 },
- { 1, &hf_rrc_tdd_48 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_44 },
+static const per_choice_t T_modeSpecificInfo_59_choice[] = {
+ { 0, &hf_rrc_fdd_91 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_89 },
+ { 1, &hf_rrc_tdd_51 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_47 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_56(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_59(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_56, T_modeSpecificInfo_56_choice,
+ ett_rrc_T_modeSpecificInfo_59, T_modeSpecificInfo_59_choice,
NULL);
return offset;
@@ -39111,7 +40645,7 @@ dissect_rrc_T_modeSpecificInfo_56(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t HS_SCCH_Info_r6_sequence[] = {
- { &hf_rrc_modeSpecificInfo_56, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_56 },
+ { &hf_rrc_modeSpecificInfo_59, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_59 },
{ NULL, 0, 0, NULL }
};
@@ -39124,72 +40658,72 @@ dissect_rrc_HS_SCCH_Info_r6(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_tdd384_12_sequence[] = {
+static const per_sequence_t T_tdd384_13_sequence[] = {
{ &hf_rrc_dl_HSPDSCH_TS_Configuration, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_HSPDSCH_TS_Configuration },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd384_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_12, T_tdd384_12_sequence);
+ ett_rrc_T_tdd384_13, T_tdd384_13_sequence);
return offset;
}
-static const per_sequence_t T_tdd128_18_sequence[] = {
+static const per_sequence_t T_tdd128_20_sequence[] = {
{ &hf_rrc_hs_PDSCH_Midamble_Configuration_tdd128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_PDSCH_Midamble_Configuration_TDD128 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_18, T_tdd128_18_sequence);
+ ett_rrc_T_tdd128_20, T_tdd128_20_sequence);
return offset;
}
-static const value_string rrc_T_tdd_34_vals[] = {
+static const value_string rrc_T_tdd_37_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tdd_34_choice[] = {
- { 0, &hf_rrc_tdd384_13 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_12 },
- { 1, &hf_rrc_tdd128_18 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_18 },
+static const per_choice_t T_tdd_37_choice[] = {
+ { 0, &hf_rrc_tdd384_14 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_13 },
+ { 1, &hf_rrc_tdd128_20 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_20 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tdd_34(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_37(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_34, T_tdd_34_choice,
+ ett_rrc_T_tdd_37, T_tdd_37_choice,
NULL);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_37_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_40_vals[] = {
{ 0, "tdd" },
{ 1, "fdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_37_choice[] = {
- { 0, &hf_rrc_tdd_35 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_34 },
- { 1, &hf_rrc_fdd_43 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+static const per_choice_t T_modeSpecificInfo_40_choice[] = {
+ { 0, &hf_rrc_tdd_38 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_37 },
+ { 1, &hf_rrc_fdd_44 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_37(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_40(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_37, T_modeSpecificInfo_37_choice,
+ ett_rrc_T_modeSpecificInfo_40, T_modeSpecificInfo_40_choice,
NULL);
return offset;
@@ -39199,7 +40733,7 @@ dissect_rrc_T_modeSpecificInfo_37(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t DL_HSPDSCH_Information_r6_sequence[] = {
{ &hf_rrc_hs_scch_Info_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_SCCH_Info_r6 },
{ &hf_rrc_measurement_feedback_Info, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Measurement_Feedback_Info },
- { &hf_rrc_modeSpecificInfo_37, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_37 },
+ { &hf_rrc_modeSpecificInfo_40, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_40 },
{ NULL, 0, 0, NULL }
};
@@ -39263,7 +40797,7 @@ dissect_rrc_T_cfnHandling_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_fdd_63_sequence[] = {
+static const per_sequence_t T_fdd_66_sequence[] = {
{ &hf_rrc_dl_DPCH_PowerControlInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DPCH_PowerControlInfo },
{ &hf_rrc_powerOffsetPilot_pdpdch, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PowerOffsetPilot_pdpdch },
{ &hf_rrc_dl_rate_matching_restriction, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Dl_rate_matching_restriction },
@@ -39274,44 +40808,44 @@ static const per_sequence_t T_fdd_63_sequence[] = {
};
static int
-dissect_rrc_T_fdd_63(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_66(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_63, T_fdd_63_sequence);
+ ett_rrc_T_fdd_66, T_fdd_66_sequence);
return offset;
}
-static const per_sequence_t T_tdd_25_sequence[] = {
+static const per_sequence_t T_tdd_28_sequence[] = {
{ &hf_rrc_dl_DPCH_PowerControlInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DPCH_PowerControlInfo },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_25(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_28(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_25, T_tdd_25_sequence);
+ ett_rrc_T_tdd_28, T_tdd_28_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_33_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_36_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_33_choice[] = {
- { 0, &hf_rrc_fdd_64 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_63 },
- { 1, &hf_rrc_tdd_26 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_25 },
+static const per_choice_t T_modeSpecificInfo_36_choice[] = {
+ { 0, &hf_rrc_fdd_67 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_66 },
+ { 1, &hf_rrc_tdd_29 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_28 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_33(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_36(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_33, T_modeSpecificInfo_33_choice,
+ ett_rrc_T_modeSpecificInfo_36, T_modeSpecificInfo_36_choice,
NULL);
return offset;
@@ -39320,7 +40854,7 @@ dissect_rrc_T_modeSpecificInfo_33(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t DL_DPCH_InfoCommon_r6_sequence[] = {
{ &hf_rrc_cfnHandling_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_cfnHandling_02 },
- { &hf_rrc_modeSpecificInfo_33, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_33 },
+ { &hf_rrc_modeSpecificInfo_36, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_36 },
{ &hf_rrc_mac_d_HFN_initial_value, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MAC_d_HFN_initial_value },
{ NULL, 0, 0, NULL }
};
@@ -39408,7 +40942,7 @@ dissect_rrc_T_dl_dpchInfoCommon(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
}
-static const per_sequence_t T_fdd_58_sequence[] = {
+static const per_sequence_t T_fdd_60_sequence[] = {
{ &hf_rrc_defaultDPCH_OffsetValue, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultDPCH_OffsetValueFDD },
{ &hf_rrc_dpch_CompressedModeInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DPCH_CompressedModeInfo },
{ &hf_rrc_tx_DiversityMode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TX_DiversityMode },
@@ -39416,23 +40950,23 @@ static const per_sequence_t T_fdd_58_sequence[] = {
};
static int
-dissect_rrc_T_fdd_58(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_60(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_58, T_fdd_58_sequence);
+ ett_rrc_T_fdd_60, T_fdd_60_sequence);
return offset;
}
-static const per_sequence_t T_tdd128_14_sequence[] = {
+static const per_sequence_t T_tdd128_15_sequence[] = {
{ &hf_rrc_tstd_Indicator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_14, T_tdd128_14_sequence);
+ ett_rrc_T_tdd128_15, T_tdd128_15_sequence);
return offset;
}
@@ -39445,8 +40979,8 @@ static const value_string rrc_T_tddOption_07_vals[] = {
};
static const per_choice_t T_tddOption_07_choice[] = {
- { 0, &hf_rrc_tdd384_09 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 1, &hf_rrc_tdd128_14 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_14 },
+ { 0, &hf_rrc_tdd384_10 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_tdd128_15 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_15 },
{ 0, NULL, 0, NULL }
};
@@ -39460,37 +40994,37 @@ dissect_rrc_T_tddOption_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
}
-static const per_sequence_t T_tdd_20_sequence[] = {
+static const per_sequence_t T_tdd_22_sequence[] = {
{ &hf_rrc_tddOption_07 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_07 },
{ &hf_rrc_defaultDPCH_OffsetValue_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultDPCH_OffsetValueTDD },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_22(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_20, T_tdd_20_sequence);
+ ett_rrc_T_tdd_22, T_tdd_22_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_28_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_30_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_28_choice[] = {
- { 0, &hf_rrc_fdd_59 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_58 },
- { 1, &hf_rrc_tdd_21 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_20 },
+static const per_choice_t T_modeSpecificInfo_30_choice[] = {
+ { 0, &hf_rrc_fdd_61 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_60 },
+ { 1, &hf_rrc_tdd_23 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_22 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_28(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_30(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_28, T_modeSpecificInfo_28_choice,
+ ett_rrc_T_modeSpecificInfo_30, T_modeSpecificInfo_30_choice,
NULL);
return offset;
@@ -39529,7 +41063,7 @@ dissect_rrc_T_postVerificationPeriod_07(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t DL_CommonInformation_r6_sequence[] = {
{ &hf_rrc_dl_dpchInfoCommon, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dl_dpchInfoCommon },
- { &hf_rrc_modeSpecificInfo_28, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_28 },
+ { &hf_rrc_modeSpecificInfo_30, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_30 },
{ &hf_rrc_mac_hsResetIndicator_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_mac_hsResetIndicator_05 },
{ &hf_rrc_postVerificationPeriod_07, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_postVerificationPeriod_07 },
{ NULL, 0, 0, NULL }
@@ -39544,7 +41078,7 @@ dissect_rrc_DL_CommonInformation_r6(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
-static const per_sequence_t T_fdd_78_sequence[] = {
+static const per_sequence_t T_fdd_81_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ &hf_rrc_servingHSDSCH_RL_indicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_servingEDCH_RL_indicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
@@ -39552,37 +41086,37 @@ static const per_sequence_t T_fdd_78_sequence[] = {
};
static int
-dissect_rrc_T_fdd_78(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_81(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_78, T_fdd_78_sequence);
+ ett_rrc_T_fdd_81, T_fdd_81_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_46_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_49_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_46_choice[] = {
- { 0, &hf_rrc_fdd_79 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_78 },
- { 1, &hf_rrc_tdd_41 , ASN1_NO_EXTENSIONS , dissect_rrc_PrimaryCCPCH_Info_r4 },
+static const per_choice_t T_modeSpecificInfo_49_choice[] = {
+ { 0, &hf_rrc_fdd_82 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_81 },
+ { 1, &hf_rrc_tdd_44 , ASN1_NO_EXTENSIONS , dissect_rrc_PrimaryCCPCH_Info_r4 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_46(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_49(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_46, T_modeSpecificInfo_46_choice,
+ ett_rrc_T_modeSpecificInfo_49, T_modeSpecificInfo_49_choice,
NULL);
return offset;
}
-static const per_sequence_t T_fdd_68_sequence[] = {
+static const per_sequence_t T_fdd_71_sequence[] = {
{ &hf_rrc_pCPICH_UsageForChannelEst, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PCPICH_UsageForChannelEst },
{ &hf_rrc_dpch_FrameOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DPCH_FrameOffset },
{ &hf_rrc_secondaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SecondaryCPICH_Info },
@@ -39594,24 +41128,24 @@ static const per_sequence_t T_fdd_68_sequence[] = {
};
static int
-dissect_rrc_T_fdd_68(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_71(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_68, T_fdd_68_sequence);
+ ett_rrc_T_fdd_71, T_fdd_71_sequence);
return offset;
}
-static const per_sequence_t T_tdd_30_sequence[] = {
+static const per_sequence_t T_tdd_33_sequence[] = {
{ &hf_rrc_dl_CCTrChListToEstablish_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CCTrChList_r4 },
{ &hf_rrc_dl_CCTrChListToRemove, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CCTrChListToRemove },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_30(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_33(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_30, T_tdd_30_sequence);
+ ett_rrc_T_tdd_33, T_tdd_33_sequence);
return offset;
}
@@ -39624,8 +41158,8 @@ static const value_string rrc_DL_DPCH_InfoPerRL_r6_vals[] = {
};
static const per_choice_t DL_DPCH_InfoPerRL_r6_choice[] = {
- { 0, &hf_rrc_fdd_69 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_68 },
- { 1, &hf_rrc_tdd_31 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_30 },
+ { 0, &hf_rrc_fdd_72 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_71 },
+ { 1, &hf_rrc_tdd_34 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_33 },
{ 0, NULL, 0, NULL }
};
@@ -39706,7 +41240,7 @@ dissect_rrc_T_e_RGCH_Info_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static const per_sequence_t DL_InformationPerRL_r6_sequence[] = {
- { &hf_rrc_modeSpecificInfo_46, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_46 },
+ { &hf_rrc_modeSpecificInfo_49, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_49 },
{ &hf_rrc_dl_dpchInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dl_dpchInfo },
{ &hf_rrc_e_AGCH_Information, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_AGCH_Information },
{ &hf_rrc_e_HICH_Info , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_e_HICH_Info },
@@ -39827,14 +41361,14 @@ dissect_rrc_CellUpdateConfirm_v6b0ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn
}
-static const per_sequence_t T_nonCriticalExtensions_15_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_16_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_15, T_nonCriticalExtensions_15_sequence);
+ ett_rrc_T_nonCriticalExtensions_16, T_nonCriticalExtensions_16_sequence);
return offset;
}
@@ -39842,7 +41376,7 @@ dissect_rrc_T_nonCriticalExtensions_15(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v6b0NonCriticalExtensions_02_sequence[] = {
{ &hf_rrc_cellUpdateConfirm_v6b0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellUpdateConfirm_v6b0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_15, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_15 },
+ { &hf_rrc_nonCriticalExtensions_16, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_16 },
{ NULL, 0, 0, NULL }
};
@@ -40368,15 +41902,15 @@ dissect_rrc_T_dch_usch_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
}
-static const per_sequence_t T_fdd_51_sequence[] = {
+static const per_sequence_t T_fdd_53_sequence[] = {
{ &hf_rrc_tti_03 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_E_DCH_TTI },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_51(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_53(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_51, T_fdd_51_sequence);
+ ett_rrc_T_fdd_53, T_fdd_53_sequence);
return offset;
}
@@ -40389,7 +41923,7 @@ static const value_string rrc_T_modeSpecific_vals[] = {
};
static const per_choice_t T_modeSpecific_choice[] = {
- { 0, &hf_rrc_fdd_52 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_51 },
+ { 0, &hf_rrc_fdd_54 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_53 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -40454,6 +41988,8 @@ static const value_string rrc_E_DCH_MAC_d_FlowRetransTimer_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_E_DCH_MAC_d_FlowRetransTimer_vals_ext = VALUE_STRING_EXT_INIT(rrc_E_DCH_MAC_d_FlowRetransTimer_vals);
+
static int
dissect_rrc_E_DCH_MAC_d_FlowRetransTimer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -40464,37 +42000,37 @@ dissect_rrc_E_DCH_MAC_d_FlowRetransTimer(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_fdd_48_sequence[] = {
+static const per_sequence_t T_fdd_50_sequence[] = {
{ &hf_rrc_maxMAC_e_PDUContents, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_1_19982 },
{ &hf_rrc_ms2_NonSchedTransmGrantHARQAlloc, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING_SIZE_8 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_48(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_50(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_48, T_fdd_48_sequence);
+ ett_rrc_T_fdd_50, T_fdd_50_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_18_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_20_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_18_choice[] = {
- { 0, &hf_rrc_fdd_49 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_48 },
+static const per_choice_t T_modeSpecificInfo_20_choice[] = {
+ { 0, &hf_rrc_fdd_51 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_50 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_18, T_modeSpecificInfo_18_choice,
+ ett_rrc_T_modeSpecificInfo_20, T_modeSpecificInfo_20_choice,
NULL);
return offset;
@@ -40502,7 +42038,7 @@ dissect_rrc_T_modeSpecificInfo_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t T_non_ScheduledTransGrantInfo_01_sequence[] = {
- { &hf_rrc_modeSpecificInfo_18, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_18 },
+ { &hf_rrc_modeSpecificInfo_20, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_20 },
{ NULL, 0, 0, NULL }
};
@@ -40775,7 +42311,7 @@ dissect_rrc_MAC_ehs_DelReordQ_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t AddOrReconfMAC_ehs_ReordQ_sequence[] = {
{ &hf_rrc_mac_ehs_AddReconfQueue_List, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MAC_ehs_AddReconfReordQ_List },
- { &hf_rrc_dummy_29 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MAC_ehs_DelReordQ_List },
+ { &hf_rrc_dummy_33 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MAC_ehs_DelReordQ_List },
{ NULL, 0, 0, NULL }
};
@@ -40905,7 +42441,7 @@ dissect_rrc_Multi_frequencyInfo_LCR_r7(tvbuff_t *tvb _U_, int offset _U_, asn1_c
}
-static const per_sequence_t T_fdd_115_sequence[] = {
+static const per_sequence_t T_fdd_118_sequence[] = {
{ &hf_rrc_dpcch_PowerOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DPCCH_PowerOffset },
{ &hf_rrc_pc_Preamble , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PC_Preamble },
{ &hf_rrc_sRB_delay , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SRB_delay },
@@ -40918,77 +42454,77 @@ static const per_sequence_t T_fdd_115_sequence[] = {
};
static int
-dissect_rrc_T_fdd_115(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_118(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_115, T_fdd_115_sequence);
+ ett_rrc_T_fdd_118, T_fdd_118_sequence);
return offset;
}
-static const per_sequence_t T_tdd384_36_sequence[] = {
+static const per_sequence_t T_tdd384_37_sequence[] = {
{ &hf_rrc_individualTS_InterferenceList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_IndividualTS_InterferenceList },
{ &hf_rrc_dpch_ConstantValue_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_ConstantValue },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd384_36(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_37(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_36, T_tdd384_36_sequence);
+ ett_rrc_T_tdd384_37, T_tdd384_37_sequence);
return offset;
}
-static const per_sequence_t T_tdd768_18_sequence[] = {
+static const per_sequence_t T_tdd768_19_sequence[] = {
{ &hf_rrc_individualTS_InterferenceList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_IndividualTS_InterferenceList },
{ &hf_rrc_dpch_ConstantValue_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_ConstantValue },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd768_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd768_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd768_18, T_tdd768_18_sequence);
+ ett_rrc_T_tdd768_19, T_tdd768_19_sequence);
return offset;
}
-static const per_sequence_t T_tdd128_52_sequence[] = {
+static const per_sequence_t T_tdd128_54_sequence[] = {
{ &hf_rrc_beaconPLEst , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BEACON_PL_Est },
{ &hf_rrc_tpc_StepSize , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TPC_StepSizeTDD },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_52(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_54(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_52, T_tdd128_52_sequence);
+ ett_rrc_T_tdd128_54, T_tdd128_54_sequence);
return offset;
}
-static const value_string rrc_T_tddOption_22_vals[] = {
+static const value_string rrc_T_tddOption_23_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd768" },
{ 2, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tddOption_22_choice[] = {
- { 0, &hf_rrc_tdd384_40 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_36 },
- { 1, &hf_rrc_tdd768_21 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_18 },
- { 2, &hf_rrc_tdd128_54 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_52 },
+static const per_choice_t T_tddOption_23_choice[] = {
+ { 0, &hf_rrc_tdd384_41 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_37 },
+ { 1, &hf_rrc_tdd768_22 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_19 },
+ { 2, &hf_rrc_tdd128_56 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_54 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tddOption_22(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tddOption_23(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tddOption_22, T_tddOption_22_choice,
+ ett_rrc_T_tddOption_23, T_tddOption_23_choice,
NULL);
return offset;
@@ -40996,7 +42532,7 @@ dissect_rrc_T_tddOption_22(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
static const per_sequence_t T_individuallySignalled_04_sequence[] = {
- { &hf_rrc_tddOption_22 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_22 },
+ { &hf_rrc_tddOption_23 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_23 },
{ &hf_rrc_primaryCCPCH_TX_Power, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCCPCH_TX_Power },
{ NULL, 0, 0, NULL }
};
@@ -41032,16 +42568,16 @@ dissect_rrc_T_ul_OL_PC_Signalling_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_tdd_67_sequence[] = {
+static const per_sequence_t T_tdd_70_sequence[] = {
{ &hf_rrc_ul_TargetSIR , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_TargetSIR },
{ &hf_rrc_ul_OL_PC_Signalling_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_ul_OL_PC_Signalling_04 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_67(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_70(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_67, T_tdd_67_sequence);
+ ett_rrc_T_tdd_70, T_tdd_70_sequence);
return offset;
}
@@ -41054,8 +42590,8 @@ static const value_string rrc_UL_DPCH_PowerControlInfo_r7_vals[] = {
};
static const per_choice_t UL_DPCH_PowerControlInfo_r7_choice[] = {
- { 0, &hf_rrc_fdd_118 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_115 },
- { 1, &hf_rrc_tdd_73 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_67 },
+ { 0, &hf_rrc_fdd_121 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_118 },
+ { 1, &hf_rrc_tdd_76 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_70 },
{ 0, NULL, 0, NULL }
};
@@ -41141,7 +42677,7 @@ dissect_rrc_T_dpdchPresence_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
}
-static const per_sequence_t T_fdd_108_sequence[] = {
+static const per_sequence_t T_fdd_111_sequence[] = {
{ &hf_rrc_scramblingCodeType, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_ScramblingCodeType },
{ &hf_rrc_scramblingCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_ScramblingCode },
{ &hf_rrc_dpdchPresence_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_dpdchPresence_01 },
@@ -41149,58 +42685,58 @@ static const per_sequence_t T_fdd_108_sequence[] = {
};
static int
-dissect_rrc_T_fdd_108(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_111(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_108, T_fdd_108_sequence);
+ ett_rrc_T_fdd_111, T_fdd_111_sequence);
return offset;
}
-static const per_sequence_t T_tdd384_19_sequence[] = {
+static const per_sequence_t T_tdd384_20_sequence[] = {
{ &hf_rrc_ex_ul_TimingAdvance, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_255 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd384_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_19, T_tdd384_19_sequence);
+ ett_rrc_T_tdd384_20, T_tdd384_20_sequence);
return offset;
}
-static const per_sequence_t T_tdd768_11_sequence[] = {
+static const per_sequence_t T_tdd768_12_sequence[] = {
{ &hf_rrc_ex_ul_TimingAdvance_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_511 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd768_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd768_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd768_11, T_tdd768_11_sequence);
+ ett_rrc_T_tdd768_12, T_tdd768_12_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_53_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_56_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd768" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_53_choice[] = {
- { 0, &hf_rrc_tdd384_21 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_19 },
- { 1, &hf_rrc_tdd768_13 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_11 },
+static const per_choice_t T_modeSpecificInfo_56_choice[] = {
+ { 0, &hf_rrc_tdd384_22 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_20 },
+ { 1, &hf_rrc_tdd768_14 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_12 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_53(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_56(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_53, T_modeSpecificInfo_53_choice,
+ ett_rrc_T_modeSpecificInfo_56, T_modeSpecificInfo_56_choice,
NULL);
return offset;
@@ -41208,7 +42744,7 @@ dissect_rrc_T_modeSpecificInfo_53(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t EXT_UL_TimingAdvance_sequence[] = {
- { &hf_rrc_modeSpecificInfo_53, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_53 },
+ { &hf_rrc_modeSpecificInfo_56, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_56 },
{ NULL, 0, 0, NULL }
};
@@ -41221,7 +42757,7 @@ dissect_rrc_EXT_UL_TimingAdvance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
}
-static const per_sequence_t T_tdd384_38_sequence[] = {
+static const per_sequence_t T_tdd384_39_sequence[] = {
{ &hf_rrc_ul_TimingAdvance, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_TimingAdvance },
{ &hf_rrc_ext_UL_TimingAdvance, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_EXT_UL_TimingAdvance },
{ &hf_rrc_activationTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ActivationTime },
@@ -41229,62 +42765,62 @@ static const per_sequence_t T_tdd384_38_sequence[] = {
};
static int
-dissect_rrc_T_tdd384_38(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_39(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_38, T_tdd384_38_sequence);
+ ett_rrc_T_tdd384_39, T_tdd384_39_sequence);
return offset;
}
-static const per_sequence_t T_tdd768_19_sequence[] = {
+static const per_sequence_t T_tdd768_20_sequence[] = {
{ &hf_rrc_ext_UL_TimingAdvance, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_EXT_UL_TimingAdvance },
{ &hf_rrc_activationTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ActivationTime },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd768_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd768_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd768_19, T_tdd768_19_sequence);
+ ett_rrc_T_tdd768_20, T_tdd768_20_sequence);
return offset;
}
-static const per_sequence_t T_tdd128_54_sequence[] = {
+static const per_sequence_t T_tdd128_56_sequence[] = {
{ &hf_rrc_ul_SynchronisationParameters, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_SynchronisationParameters_r4 },
{ &hf_rrc_synchronisationParameters, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SynchronisationParameters_r4 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_54(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_56(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_54, T_tdd128_54_sequence);
+ ett_rrc_T_tdd128_56, T_tdd128_56_sequence);
return offset;
}
-static const value_string rrc_T_tddOption_24_vals[] = {
+static const value_string rrc_T_tddOption_25_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd768" },
{ 2, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tddOption_24_choice[] = {
- { 0, &hf_rrc_tdd384_42 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_38 },
- { 1, &hf_rrc_tdd768_22 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_19 },
- { 2, &hf_rrc_tdd128_56 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_54 },
+static const per_choice_t T_tddOption_25_choice[] = {
+ { 0, &hf_rrc_tdd384_43 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_39 },
+ { 1, &hf_rrc_tdd768_23 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_20 },
+ { 2, &hf_rrc_tdd128_58 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_56 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tddOption_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tddOption_25(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tddOption_24, T_tddOption_24_choice,
+ ett_rrc_T_tddOption_25, T_tddOption_25_choice,
NULL);
return offset;
@@ -41292,7 +42828,7 @@ dissect_rrc_T_tddOption_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
static const per_sequence_t T_enabled_02_sequence[] = {
- { &hf_rrc_tddOption_24 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_24 },
+ { &hf_rrc_tddOption_25 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_25 },
{ NULL, 0, 0, NULL }
};
@@ -41327,15 +42863,15 @@ dissect_rrc_UL_TimingAdvanceControl_r7(tvbuff_t *tvb _U_, int offset _U_, asn1_c
}
-static const per_sequence_t T_tdd384_32_sequence[] = {
+static const per_sequence_t T_tdd384_33_sequence[] = {
{ &hf_rrc_ul_CCTrCH_TimeslotsCodes, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UplinkTimeslotsCodes },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd384_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_33(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_32, T_tdd384_32_sequence);
+ ett_rrc_T_tdd384_33, T_tdd384_33_sequence);
return offset;
}
@@ -41621,6 +43157,8 @@ static const value_string rrc_UL_TS_ChannelisationCode_VHCR_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_UL_TS_ChannelisationCode_VHCR_vals_ext = VALUE_STRING_EXT_INIT(rrc_UL_TS_ChannelisationCode_VHCR_vals);
+
static int
dissect_rrc_UL_TS_ChannelisationCode_VHCR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -41799,15 +43337,15 @@ dissect_rrc_UplinkTimeslotsCodes_VHCR(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
}
-static const per_sequence_t T_tdd768_17_sequence[] = {
+static const per_sequence_t T_tdd768_18_sequence[] = {
{ &hf_rrc_ul_CCTrCH_TimeslotsCodes_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UplinkTimeslotsCodes_VHCR },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd768_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd768_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd768_17, T_tdd768_17_sequence);
+ ett_rrc_T_tdd768_18, T_tdd768_18_sequence);
return offset;
}
@@ -42033,38 +43571,38 @@ dissect_rrc_UplinkTimeslotsCodes_LCR_r7(tvbuff_t *tvb _U_, int offset _U_, asn1_
}
-static const per_sequence_t T_tdd128_48_sequence[] = {
+static const per_sequence_t T_tdd128_50_sequence[] = {
{ &hf_rrc_ul_CCTrCH_TimeslotsCodes_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UplinkTimeslotsCodes_LCR_r7 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_48(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_50(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_48, T_tdd128_48_sequence);
+ ett_rrc_T_tdd128_50, T_tdd128_50_sequence);
return offset;
}
-static const value_string rrc_T_tddOption_18_vals[] = {
+static const value_string rrc_T_tddOption_19_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd768" },
{ 2, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tddOption_18_choice[] = {
- { 0, &hf_rrc_tdd384_36 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_32 },
- { 1, &hf_rrc_tdd768_20 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_17 },
- { 2, &hf_rrc_tdd128_50 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_48 },
+static const per_choice_t T_tddOption_19_choice[] = {
+ { 0, &hf_rrc_tdd384_37 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_33 },
+ { 1, &hf_rrc_tdd768_21 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_18 },
+ { 2, &hf_rrc_tdd128_52 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_50 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tddOption_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tddOption_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tddOption_18, T_tddOption_18_choice,
+ ett_rrc_T_tddOption_19, T_tddOption_19_choice,
NULL);
return offset;
@@ -42076,7 +43614,7 @@ static const per_sequence_t UL_CCTrCH_r7_sequence[] = {
{ &hf_rrc_ul_TargetSIR , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_TargetSIR },
{ &hf_rrc_timeInfo , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TimeInfo },
{ &hf_rrc_commonTimeslotInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CommonTimeslotInfo },
- { &hf_rrc_tddOption_18 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_18 },
+ { &hf_rrc_tddOption_19 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_19 },
{ NULL, 0, 0, NULL }
};
@@ -42103,7 +43641,7 @@ dissect_rrc_UL_CCTrCHList_r7(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_tdd_61_sequence[] = {
+static const per_sequence_t T_tdd_64_sequence[] = {
{ &hf_rrc_ul_TimingAdvance_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_TimingAdvanceControl_r7 },
{ &hf_rrc_ul_CCTrCHList_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CCTrCHList_r7 },
{ &hf_rrc_ul_CCTrCHListToRemove, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CCTrCHListToRemove },
@@ -42111,30 +43649,30 @@ static const per_sequence_t T_tdd_61_sequence[] = {
};
static int
-dissect_rrc_T_tdd_61(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_64(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_61, T_tdd_61_sequence);
+ ett_rrc_T_tdd_64, T_tdd_64_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_77_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_80_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_77_choice[] = {
- { 0, &hf_rrc_fdd_111 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_108 },
- { 1, &hf_rrc_tdd_67 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_61 },
+static const per_choice_t T_modeSpecificInfo_80_choice[] = {
+ { 0, &hf_rrc_fdd_114 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_111 },
+ { 1, &hf_rrc_tdd_70 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_64 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_77(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_80(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_77, T_modeSpecificInfo_77_choice,
+ ett_rrc_T_modeSpecificInfo_80, T_modeSpecificInfo_80_choice,
NULL);
return offset;
@@ -42143,7 +43681,7 @@ dissect_rrc_T_modeSpecificInfo_77(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t UL_DPCH_Info_r7_sequence[] = {
{ &hf_rrc_ul_DPCH_PowerControlInfo_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DPCH_PowerControlInfo_r7 },
- { &hf_rrc_modeSpecificInfo_77, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_77 },
+ { &hf_rrc_modeSpecificInfo_80, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_80 },
{ NULL, 0, 0, NULL }
};
@@ -42209,7 +43747,7 @@ dissect_rrc_E_DPDCH_Info_r7(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_fdd_117_sequence[] = {
+static const per_sequence_t T_fdd_120_sequence[] = {
{ &hf_rrc_e_DPCCH_Info_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_DPCCH_Info_r7 },
{ &hf_rrc_e_DPDCH_Info_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_DPDCH_Info_r7 },
{ &hf_rrc_schedulingTransmConfiguration, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_DPDCH_SchedulingTransmConfiguration },
@@ -42218,9 +43756,9 @@ static const per_sequence_t T_fdd_117_sequence[] = {
};
static int
-dissect_rrc_T_fdd_117(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_120(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_117, T_fdd_117_sequence);
+ ett_rrc_T_fdd_120, T_fdd_120_sequence);
return offset;
}
@@ -42412,22 +43950,22 @@ dissect_rrc_SEQUENCE_SIZE_1_8_OF_SF8Codes(tvbuff_t *tvb _U_, int offset _U_, asn
}
-static const value_string rrc_T_tdd384_18_vals[] = {
+static const value_string rrc_T_tdd384_19_vals[] = {
{ 0, "sF16" },
{ 1, "sF8" },
{ 0, NULL }
};
-static const per_choice_t T_tdd384_18_choice[] = {
+static const per_choice_t T_tdd384_19_choice[] = {
{ 0, &hf_rrc_sF16 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_8_OF_SF16Codes },
{ 1, &hf_rrc_sF8 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_8_OF_SF8Codes },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tdd384_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_18, T_tdd384_18_choice,
+ ett_rrc_T_tdd384_19, T_tdd384_19_choice,
NULL);
return offset;
@@ -42522,44 +44060,44 @@ dissect_rrc_SEQUENCE_SIZE_1_16_OF_SF16Codes2(tvbuff_t *tvb _U_, int offset _U_,
}
-static const value_string rrc_T_tdd768_10_vals[] = {
+static const value_string rrc_T_tdd768_11_vals[] = {
{ 0, "sF32" },
{ 1, "sF816" },
{ 0, NULL }
};
-static const per_choice_t T_tdd768_10_choice[] = {
+static const per_choice_t T_tdd768_11_choice[] = {
{ 0, &hf_rrc_sF32 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_16_OF_SF32Codes },
{ 1, &hf_rrc_sF816 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_16_OF_SF16Codes2 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tdd768_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd768_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd768_10, T_tdd768_10_choice,
+ ett_rrc_T_tdd768_11, T_tdd768_11_choice,
NULL);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_52_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_55_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd768" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_52_choice[] = {
- { 0, &hf_rrc_tdd384_20 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_18 },
- { 1, &hf_rrc_tdd768_12 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_10 },
+static const per_choice_t T_modeSpecificInfo_55_choice[] = {
+ { 0, &hf_rrc_tdd384_21 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_19 },
+ { 1, &hf_rrc_tdd768_13 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_11 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_52(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_55(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_52, T_modeSpecificInfo_52_choice,
+ ett_rrc_T_modeSpecificInfo_55, T_modeSpecificInfo_55_choice,
NULL);
return offset;
@@ -42574,7 +44112,7 @@ static const per_sequence_t T_tdd384_tdd768_02_sequence[] = {
{ &hf_rrc_e_RUCCH_Midamble, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_e_RUCCH_Midamble },
{ &hf_rrc_t_adv , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_t_adv },
{ &hf_rrc_t_SCHED , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_t_SCHED },
- { &hf_rrc_modeSpecificInfo_52, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_52 },
+ { &hf_rrc_modeSpecificInfo_55, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_55 },
{ NULL, 0, 0, NULL }
};
@@ -42948,6 +44486,8 @@ static const value_string rrc_TDD_PRACH_CCode_LCR_r4_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_TDD_PRACH_CCode_LCR_r4_vals_ext = VALUE_STRING_EXT_INIT(rrc_TDD_PRACH_CCode_LCR_r4_vals);
+
static int
dissect_rrc_TDD_PRACH_CCode_LCR_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -43003,7 +44543,7 @@ dissect_rrc_PRACH_Information_LCR_List(tvbuff_t *tvb _U_, int offset _U_, asn1_c
}
-static const per_sequence_t T_tdd128_28_sequence[] = {
+static const per_sequence_t T_tdd128_30_sequence[] = {
{ &hf_rrc_t_RUCCH_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_t_RUCCH_01 },
{ &hf_rrc_n_RUCCH , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_0_7 },
{ &hf_rrc_t_WAIT , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_t_WAIT },
@@ -43017,30 +44557,30 @@ static const per_sequence_t T_tdd128_28_sequence[] = {
};
static int
-dissect_rrc_T_tdd128_28(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_30(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_28, T_tdd128_28_sequence);
+ ett_rrc_T_tdd128_30, T_tdd128_30_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_51_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_54_vals[] = {
{ 0, "tdd384-tdd768" },
{ 1, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_51_choice[] = {
+static const per_choice_t T_modeSpecificInfo_54_choice[] = {
{ 0, &hf_rrc_tdd384_tdd768_02, ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_tdd768_02 },
- { 1, &hf_rrc_tdd128_28 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_28 },
+ { 1, &hf_rrc_tdd128_30 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_30 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_51(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_54(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_51, T_modeSpecificInfo_51_choice,
+ ett_rrc_T_modeSpecificInfo_54, T_modeSpecificInfo_54_choice,
NULL);
return offset;
@@ -43048,7 +44588,7 @@ dissect_rrc_T_modeSpecificInfo_51(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t E_RUCCH_Info_sequence[] = {
- { &hf_rrc_modeSpecificInfo_51, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_51 },
+ { &hf_rrc_modeSpecificInfo_54, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_54 },
{ NULL, 0, 0, NULL }
};
@@ -43421,7 +44961,7 @@ dissect_rrc_T_midambleAllocationMode_03(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t E_PUCH_TS_Slots_LCR_sequence[] = {
- { &hf_rrc_timeslotNumber_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TimeslotNumber_LCR_r4 },
+ { &hf_rrc_timeslotNumber_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_1_5 },
{ &hf_rrc_midambleAllocationMode_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_midambleAllocationMode_03 },
{ &hf_rrc_midambleConfiguration, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_1_8 },
{ NULL, 0, 0, NULL }
@@ -43484,6 +45024,8 @@ static const value_string rrc_T_retransTimerForSchedInfo_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_T_retransTimerForSchedInfo_vals_ext = VALUE_STRING_EXT_INIT(rrc_T_retransTimerForSchedInfo_vals);
+
static int
dissect_rrc_T_retransTimerForSchedInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -43494,9 +45036,9 @@ dissect_rrc_T_retransTimerForSchedInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_c
}
-static const per_sequence_t T_tdd128_27_sequence[] = {
+static const per_sequence_t T_tdd128_29_sequence[] = {
{ &hf_rrc_snpl_ReportType , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_snpl_ReportType },
- { &hf_rrc_prxBASEdes , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_M112_M50 },
+ { &hf_rrc_prxdes_base , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_M112_M50 },
{ &hf_rrc_beaconPLEst_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BOOLEAN },
{ &hf_rrc_tpc_StepSize , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TPC_StepSizeTDD },
{ &hf_rrc_pebase_PowerControlGAP, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PowerControlGAP },
@@ -43510,30 +45052,30 @@ static const per_sequence_t T_tdd128_27_sequence[] = {
};
static int
-dissect_rrc_T_tdd128_27(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_29(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_27, T_tdd128_27_sequence);
+ ett_rrc_T_tdd128_29, T_tdd128_29_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_50_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_53_vals[] = {
{ 0, "tdd348-tdd768" },
{ 1, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_50_choice[] = {
+static const per_choice_t T_modeSpecificInfo_53_choice[] = {
{ 0, &hf_rrc_tdd348_tdd768 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd348_tdd768 },
- { 1, &hf_rrc_tdd128_27 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_27 },
+ { 1, &hf_rrc_tdd128_29 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_29 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_50(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_53(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_50, T_modeSpecificInfo_50_choice,
+ ett_rrc_T_modeSpecificInfo_53, T_modeSpecificInfo_53_choice,
NULL);
return offset;
@@ -43542,7 +45084,7 @@ dissect_rrc_T_modeSpecificInfo_50(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t E_PUCH_Info_sequence[] = {
{ &hf_rrc_e_TFCS_Info , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_E_TFCS_Info },
- { &hf_rrc_modeSpecificInfo_50, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_50 },
+ { &hf_rrc_modeSpecificInfo_53, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_53 },
{ &hf_rrc_powerOffsetForSchedInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_0_6 },
{ NULL, 0, 0, NULL }
};
@@ -43624,7 +45166,7 @@ dissect_rrc_T_e_HICH_Info_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_tdd128_35_sequence[] = {
+static const per_sequence_t T_tdd128_37_sequence[] = {
{ &hf_rrc_n_E_UCCH , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_1_8 },
{ &hf_rrc_n_E_HICH_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_4_15 },
{ &hf_rrc_timeslotResourceRelatedInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BIT_STRING_SIZE_5 },
@@ -43638,9 +45180,9 @@ static const per_sequence_t T_tdd128_35_sequence[] = {
};
static int
-dissect_rrc_T_tdd128_35(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_37(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_35, T_tdd128_35_sequence);
+ ett_rrc_T_tdd128_37, T_tdd128_37_sequence);
return offset;
}
@@ -43654,7 +45196,7 @@ static const value_string rrc_Non_ScheduledTransGrantInfoTDD_vals[] = {
static const per_choice_t Non_ScheduledTransGrantInfoTDD_choice[] = {
{ 0, &hf_rrc_tdd384_768 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_768 },
- { 1, &hf_rrc_tdd128_36 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_35 },
+ { 1, &hf_rrc_tdd128_38 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_37 },
{ 0, NULL, 0, NULL }
};
@@ -43668,7 +45210,7 @@ dissect_rrc_Non_ScheduledTransGrantInfoTDD(tvbuff_t *tvb _U_, int offset _U_, as
}
-static const per_sequence_t T_tdd_70_sequence[] = {
+static const per_sequence_t T_tdd_73_sequence[] = {
{ &hf_rrc_e_RUCCH_Info_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RUCCH_Info },
{ &hf_rrc_e_PUCH_Info_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_PUCH_Info },
{ &hf_rrc_non_ScheduledTransGrantInfo_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Non_ScheduledTransGrantInfoTDD },
@@ -43676,30 +45218,30 @@ static const per_sequence_t T_tdd_70_sequence[] = {
};
static int
-dissect_rrc_T_tdd_70(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_73(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_70, T_tdd_70_sequence);
+ ett_rrc_T_tdd_73, T_tdd_73_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_80_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_83_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_80_choice[] = {
- { 0, &hf_rrc_fdd_120 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_117 },
- { 1, &hf_rrc_tdd_76 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_70 },
+static const per_choice_t T_modeSpecificInfo_83_choice[] = {
+ { 0, &hf_rrc_fdd_123 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_120 },
+ { 1, &hf_rrc_tdd_79 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_73 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_80(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_83(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_80, T_modeSpecificInfo_80_choice,
+ ett_rrc_T_modeSpecificInfo_83, T_modeSpecificInfo_83_choice,
NULL);
return offset;
@@ -43708,7 +45250,7 @@ dissect_rrc_T_modeSpecificInfo_80(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t UL_EDCH_Information_r7_sequence[] = {
{ &hf_rrc_mac_es_e_resetIndicator_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_mac_es_e_resetIndicator_02 },
- { &hf_rrc_modeSpecificInfo_80, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_80 },
+ { &hf_rrc_modeSpecificInfo_83, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_83 },
{ NULL, 0, 0, NULL }
};
@@ -43743,7 +45285,7 @@ dissect_rrc_T_dl_dpchInfoCommon_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_fdd_59_sequence[] = {
+static const per_sequence_t T_fdd_61_sequence[] = {
{ &hf_rrc_defaultDPCH_OffsetValue, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultDPCH_OffsetValueFDD },
{ &hf_rrc_dpch_CompressedModeInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DPCH_CompressedModeInfo },
{ &hf_rrc_tx_DiversityMode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TX_DiversityMode },
@@ -43751,23 +45293,23 @@ static const per_sequence_t T_fdd_59_sequence[] = {
};
static int
-dissect_rrc_T_fdd_59(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_61(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_59, T_fdd_59_sequence);
+ ett_rrc_T_fdd_61, T_fdd_61_sequence);
return offset;
}
-static const per_sequence_t T_tdd128_15_sequence[] = {
+static const per_sequence_t T_tdd128_16_sequence[] = {
{ &hf_rrc_tstd_Indicator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_15, T_tdd128_15_sequence);
+ ett_rrc_T_tdd128_16, T_tdd128_16_sequence);
return offset;
}
@@ -43781,9 +45323,9 @@ static const value_string rrc_T_tddOption_08_vals[] = {
};
static const per_choice_t T_tddOption_08_choice[] = {
- { 0, &hf_rrc_tdd384_09 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 1, &hf_rrc_tdd768_04 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 2, &hf_rrc_tdd128_15 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_15 },
+ { 0, &hf_rrc_tdd384_10 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_tdd768_05 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 2, &hf_rrc_tdd128_16 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_16 },
{ 0, NULL, 0, NULL }
};
@@ -43797,37 +45339,37 @@ dissect_rrc_T_tddOption_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
}
-static const per_sequence_t T_tdd_21_sequence[] = {
+static const per_sequence_t T_tdd_23_sequence[] = {
{ &hf_rrc_tddOption_08 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_08 },
{ &hf_rrc_defaultDPCH_OffsetValue_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultDPCH_OffsetValueTDD },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_23(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_21, T_tdd_21_sequence);
+ ett_rrc_T_tdd_23, T_tdd_23_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_29_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_31_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_29_choice[] = {
- { 0, &hf_rrc_fdd_60 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_59 },
- { 1, &hf_rrc_tdd_22 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_21 },
+static const per_choice_t T_modeSpecificInfo_31_choice[] = {
+ { 0, &hf_rrc_fdd_62 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_61 },
+ { 1, &hf_rrc_tdd_24 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_23 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_29(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_29, T_modeSpecificInfo_29_choice,
+ ett_rrc_T_modeSpecificInfo_31, T_modeSpecificInfo_31_choice,
NULL);
return offset;
@@ -43866,7 +45408,7 @@ dissect_rrc_T_postVerificationPeriod_08(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t DL_CommonInformation_r7_sequence[] = {
{ &hf_rrc_dl_dpchInfoCommon_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dl_dpchInfoCommon_01 },
- { &hf_rrc_modeSpecificInfo_29, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_29 },
+ { &hf_rrc_modeSpecificInfo_31, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_31 },
{ &hf_rrc_mac_hsResetIndicator_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_mac_hsResetIndicator_06 },
{ &hf_rrc_postVerificationPeriod_08, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_postVerificationPeriod_08 },
{ NULL, 0, 0, NULL }
@@ -43881,7 +45423,7 @@ dissect_rrc_DL_CommonInformation_r7(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
-static const per_sequence_t T_fdd_79_sequence[] = {
+static const per_sequence_t T_fdd_82_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ &hf_rrc_servingHSDSCH_RL_indicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_servingEDCH_RL_indicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
@@ -43889,37 +45431,37 @@ static const per_sequence_t T_fdd_79_sequence[] = {
};
static int
-dissect_rrc_T_fdd_79(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_82(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_79, T_fdd_79_sequence);
+ ett_rrc_T_fdd_82, T_fdd_82_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_47_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_50_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_47_choice[] = {
- { 0, &hf_rrc_fdd_80 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_79 },
- { 1, &hf_rrc_tdd_41 , ASN1_NO_EXTENSIONS , dissect_rrc_PrimaryCCPCH_Info_r4 },
+static const per_choice_t T_modeSpecificInfo_50_choice[] = {
+ { 0, &hf_rrc_fdd_83 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_82 },
+ { 1, &hf_rrc_tdd_44 , ASN1_NO_EXTENSIONS , dissect_rrc_PrimaryCCPCH_Info_r4 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_47(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_50(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_47, T_modeSpecificInfo_47_choice,
+ ett_rrc_T_modeSpecificInfo_50, T_modeSpecificInfo_50_choice,
NULL);
return offset;
}
-static const per_sequence_t T_fdd_69_sequence[] = {
+static const per_sequence_t T_fdd_72_sequence[] = {
{ &hf_rrc_pCPICH_UsageForChannelEst, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PCPICH_UsageForChannelEst },
{ &hf_rrc_dpch_FrameOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DPCH_FrameOffset },
{ &hf_rrc_secondaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SecondaryCPICH_Info },
@@ -43931,9 +45473,9 @@ static const per_sequence_t T_fdd_69_sequence[] = {
};
static int
-dissect_rrc_T_fdd_69(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_72(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_69, T_fdd_69_sequence);
+ ett_rrc_T_fdd_72, T_fdd_72_sequence);
return offset;
}
@@ -44291,15 +45833,15 @@ dissect_rrc_DownlinkTimeslotsCodes_r7(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
}
-static const per_sequence_t T_tdd384_10_sequence[] = {
+static const per_sequence_t T_tdd384_11_sequence[] = {
{ &hf_rrc_dl_CCTrCH_TimeslotsCodes_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DownlinkTimeslotsCodes_r7 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd384_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_10, T_tdd384_10_sequence);
+ ett_rrc_T_tdd384_11, T_tdd384_11_sequence);
return offset;
}
@@ -44505,29 +46047,29 @@ dissect_rrc_DownlinkTimeslotsCodes_VHCR(tvbuff_t *tvb _U_, int offset _U_, asn1_
}
-static const per_sequence_t T_tdd768_04_sequence[] = {
+static const per_sequence_t T_tdd768_05_sequence[] = {
{ &hf_rrc_dl_CCTrCH_TimeslotsCodes_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DownlinkTimeslotsCodes_VHCR },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd768_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd768_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd768_04, T_tdd768_04_sequence);
+ ett_rrc_T_tdd768_05, T_tdd768_05_sequence);
return offset;
}
-static const per_sequence_t T_tdd128_11_sequence[] = {
+static const per_sequence_t T_tdd128_12_sequence[] = {
{ &hf_rrc_dl_CCTrCH_TimeslotsCodes_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DownlinkTimeslotsCodes_LCR_r4 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_11, T_tdd128_11_sequence);
+ ett_rrc_T_tdd128_12, T_tdd128_12_sequence);
return offset;
}
@@ -44541,9 +46083,9 @@ static const value_string rrc_T_tddOption_04_vals[] = {
};
static const per_choice_t T_tddOption_04_choice[] = {
- { 0, &hf_rrc_tdd384_11 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_10 },
- { 1, &hf_rrc_tdd768_05 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_04 },
- { 2, &hf_rrc_tdd128_11 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_11 },
+ { 0, &hf_rrc_tdd384_12 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_11 },
+ { 1, &hf_rrc_tdd768_06 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_05 },
+ { 2, &hf_rrc_tdd128_12 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_12 },
{ 0, NULL, 0, NULL }
};
@@ -44589,16 +46131,16 @@ dissect_rrc_DL_CCTrChList_r7(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_tdd_31_sequence[] = {
+static const per_sequence_t T_tdd_34_sequence[] = {
{ &hf_rrc_dl_CCTrChListToEstablish_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CCTrChList_r7 },
{ &hf_rrc_dl_CCTrChListToRemove, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CCTrChListToRemove },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_34(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_31, T_tdd_31_sequence);
+ ett_rrc_T_tdd_34, T_tdd_34_sequence);
return offset;
}
@@ -44611,8 +46153,8 @@ static const value_string rrc_DL_DPCH_InfoPerRL_r7_vals[] = {
};
static const per_choice_t DL_DPCH_InfoPerRL_r7_choice[] = {
- { 0, &hf_rrc_fdd_70 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_69 },
- { 1, &hf_rrc_tdd_32 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_31 },
+ { 0, &hf_rrc_fdd_73 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_72 },
+ { 1, &hf_rrc_tdd_35 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_34 },
{ 0, NULL, 0, NULL }
};
@@ -44648,15 +46190,15 @@ dissect_rrc_T_dl_dpchInfo_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_fdd_83_sequence[] = {
+static const per_sequence_t T_fdd_86_sequence[] = {
{ &hf_rrc_e_AGCH_ChannelisationCode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_E_AGCH_ChannelisationCode },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_83(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_86(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_83, T_fdd_83_sequence);
+ ett_rrc_T_fdd_86, T_fdd_86_sequence);
return offset;
}
@@ -44692,7 +46234,7 @@ dissect_rrc_E_AGCH_Set_Config(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
}
-static const per_sequence_t T_tdd384_16_sequence[] = {
+static const per_sequence_t T_tdd384_17_sequence[] = {
{ &hf_rrc_long_Term_Grant_Indicator, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BOOLEAN },
{ &hf_rrc_length_of_TTRI_field, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_1_12 },
{ &hf_rrc_e_AGCH_Set_Config, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_E_AGCH_Set_Config },
@@ -44701,9 +46243,9 @@ static const per_sequence_t T_tdd384_16_sequence[] = {
};
static int
-dissect_rrc_T_tdd384_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_16, T_tdd384_16_sequence);
+ ett_rrc_T_tdd384_17, T_tdd384_17_sequence);
return offset;
}
@@ -44739,7 +46281,7 @@ dissect_rrc_E_AGCH_Set_Config_VHCR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_tdd768_08_sequence[] = {
+static const per_sequence_t T_tdd768_09_sequence[] = {
{ &hf_rrc_long_Term_Grant_Indicator, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BOOLEAN },
{ &hf_rrc_length_of_TTRI_field, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_1_12 },
{ &hf_rrc_e_AGCH_Set_Config_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_E_AGCH_Set_Config_VHCR },
@@ -44748,9 +46290,9 @@ static const per_sequence_t T_tdd768_08_sequence[] = {
};
static int
-dissect_rrc_T_tdd768_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd768_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd768_08, T_tdd768_08_sequence);
+ ett_rrc_T_tdd768_09, T_tdd768_09_sequence);
return offset;
}
@@ -44812,7 +46354,7 @@ dissect_rrc_E_AGCH_Set_Config_LCR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_tdd128_25_sequence[] = {
+static const per_sequence_t T_tdd128_27_sequence[] = {
{ &hf_rrc_rdi_Indicator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_tpc_StepSize , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TPC_StepSizeTDD },
{ &hf_rrc_e_AGCH_Set_Config_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_E_AGCH_Set_Config_LCR },
@@ -44821,32 +46363,32 @@ static const per_sequence_t T_tdd128_25_sequence[] = {
};
static int
-dissect_rrc_T_tdd128_25(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_27(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_25, T_tdd128_25_sequence);
+ ett_rrc_T_tdd128_27, T_tdd128_27_sequence);
return offset;
}
-static const value_string rrc_T_tdd_41_vals[] = {
+static const value_string rrc_T_tdd_44_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd768" },
{ 2, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tdd_41_choice[] = {
- { 0, &hf_rrc_tdd384_17 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_16 },
- { 1, &hf_rrc_tdd768_09 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_08 },
- { 2, &hf_rrc_tdd128_25 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_25 },
+static const per_choice_t T_tdd_44_choice[] = {
+ { 0, &hf_rrc_tdd384_18 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_17 },
+ { 1, &hf_rrc_tdd768_10 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_09 },
+ { 2, &hf_rrc_tdd128_27 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_27 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tdd_41(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_44(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_41, T_tdd_41_choice,
+ ett_rrc_T_tdd_44, T_tdd_44_choice,
NULL);
return offset;
@@ -44860,8 +46402,8 @@ static const value_string rrc_T_modeSpecific_02_vals[] = {
};
static const per_choice_t T_modeSpecific_02_choice[] = {
- { 0, &hf_rrc_fdd_84 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_83 },
- { 1, &hf_rrc_tdd_44 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_41 },
+ { 0, &hf_rrc_fdd_87 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_86 },
+ { 1, &hf_rrc_tdd_47 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_44 },
{ 0, NULL, 0, NULL }
};
@@ -44933,16 +46475,16 @@ dissect_rrc_T_e_RGCH_Info_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_fdd_80_sequence[] = {
+static const per_sequence_t T_fdd_83_sequence[] = {
{ &hf_rrc_e_HICH_Info_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_e_HICH_Info_01 },
{ &hf_rrc_e_RGCH_Info_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_e_RGCH_Info_02 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_80(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_83(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_80, T_fdd_80_sequence);
+ ett_rrc_T_fdd_83, T_fdd_83_sequence);
return offset;
}
@@ -44958,22 +46500,22 @@ dissect_rrc_INTEGER_4_44(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
}
-static const value_string rrc_T_modeSpecificInfo_49_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_52_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd768" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_49_choice[] = {
- { 0, &hf_rrc_tdd384_19 , ASN1_NO_EXTENSIONS , dissect_rrc_DL_TS_ChannelisationCode },
- { 1, &hf_rrc_tdd768_11 , ASN1_NO_EXTENSIONS , dissect_rrc_DL_TS_ChannelisationCode_VHCR },
+static const per_choice_t T_modeSpecificInfo_52_choice[] = {
+ { 0, &hf_rrc_tdd384_20 , ASN1_NO_EXTENSIONS , dissect_rrc_DL_TS_ChannelisationCode },
+ { 1, &hf_rrc_tdd768_12 , ASN1_NO_EXTENSIONS , dissect_rrc_DL_TS_ChannelisationCode_VHCR },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_49(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_52(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_49, T_modeSpecificInfo_49_choice,
+ ett_rrc_T_modeSpecificInfo_52, T_modeSpecificInfo_52_choice,
NULL);
return offset;
@@ -45015,7 +46557,7 @@ dissect_rrc_T_midamble_Allocation_Mode(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t E_HICH_Information_TDD384_768_sequence[] = {
{ &hf_rrc_n_E_HICH , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_4_44 },
{ &hf_rrc_tS_Number , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_14 },
- { &hf_rrc_modeSpecificInfo_49, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_49 },
+ { &hf_rrc_modeSpecificInfo_52, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_52 },
{ &hf_rrc_burst_Type , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_burst_Type },
{ &hf_rrc_midamble_Allocation_Mode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_midamble_Allocation_Mode },
{ NULL, 0, 0, NULL }
@@ -45113,36 +46655,36 @@ dissect_rrc_E_HICH_Information_TDD128(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
}
-static const per_sequence_t T_tdd128_23_sequence[] = {
+static const per_sequence_t T_tdd128_25_sequence[] = {
{ &hf_rrc_e_HICH_Info_03 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_HICH_Information_TDD128 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_23(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_25(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_23, T_tdd128_23_sequence);
+ ett_rrc_T_tdd128_25, T_tdd128_25_sequence);
return offset;
}
-static const value_string rrc_T_tdd_39_vals[] = {
+static const value_string rrc_T_tdd_42_vals[] = {
{ 0, "tdd384-tdd768" },
{ 1, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tdd_39_choice[] = {
+static const per_choice_t T_tdd_42_choice[] = {
{ 0, &hf_rrc_tdd384_tdd768 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_tdd768 },
- { 1, &hf_rrc_tdd128_23 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_23 },
+ { 1, &hf_rrc_tdd128_25 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_25 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tdd_39(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_42(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_39, T_tdd_39_choice,
+ ett_rrc_T_tdd_42, T_tdd_42_choice,
NULL);
return offset;
@@ -45156,8 +46698,8 @@ static const value_string rrc_T_modeSpecificInfo2_vals[] = {
};
static const per_choice_t T_modeSpecificInfo2_choice[] = {
- { 0, &hf_rrc_fdd_81 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_80 },
- { 1, &hf_rrc_tdd_42 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_39 },
+ { 0, &hf_rrc_fdd_84 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_83 },
+ { 1, &hf_rrc_tdd_45 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_42 },
{ 0, NULL, 0, NULL }
};
@@ -45172,7 +46714,7 @@ dissect_rrc_T_modeSpecificInfo2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
static const per_sequence_t DL_InformationPerRL_r7_sequence[] = {
- { &hf_rrc_modeSpecificInfo_47, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_47 },
+ { &hf_rrc_modeSpecificInfo_50, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_50 },
{ &hf_rrc_dl_dpchInfo_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dl_dpchInfo_01 },
{ &hf_rrc_e_AGCH_Information_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_AGCH_Information_r7 },
{ &hf_rrc_modeSpecificInfo2, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo2 },
@@ -45486,14 +47028,14 @@ dissect_rrc_CellUpdateConfirm_v860ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn
}
-static const per_sequence_t T_nonCriticalExtensions_16_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_17_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_16, T_nonCriticalExtensions_16_sequence);
+ ett_rrc_T_nonCriticalExtensions_17, T_nonCriticalExtensions_17_sequence);
return offset;
}
@@ -45501,7 +47043,7 @@ dissect_rrc_T_nonCriticalExtensions_16(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v860NonCriticalExtensions_01_sequence[] = {
{ &hf_rrc_cellUpdateConfirm_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellUpdateConfirm_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_16, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_16 },
+ { &hf_rrc_nonCriticalExtensions_17, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_17 },
{ NULL, 0, 0, NULL }
};
@@ -45995,15 +47537,15 @@ dissect_rrc_T_ul_MAC_HeaderType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
}
-static const per_sequence_t T_fdd_52_sequence[] = {
+static const per_sequence_t T_fdd_54_sequence[] = {
{ &hf_rrc_tti_03 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_E_DCH_TTI },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_52(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_54(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_52, T_fdd_52_sequence);
+ ett_rrc_T_fdd_54, T_fdd_54_sequence);
return offset;
}
@@ -46016,7 +47558,7 @@ static const value_string rrc_T_modeSpecific_01_vals[] = {
};
static const per_choice_t T_modeSpecific_01_choice[] = {
- { 0, &hf_rrc_fdd_53 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_52 },
+ { 0, &hf_rrc_fdd_55 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_54 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -46137,7 +47679,7 @@ dissect_rrc_E_DPDCH_Info_r8(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_fdd_118_sequence[] = {
+static const per_sequence_t T_fdd_121_sequence[] = {
{ &hf_rrc_e_DPCCH_Info_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_DPCCH_Info_r7 },
{ &hf_rrc_e_DPDCH_Info_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_DPDCH_Info_r8 },
{ &hf_rrc_schedulingTransmConfiguration, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_DPDCH_SchedulingTransmConfiguration },
@@ -46146,15 +47688,15 @@ static const per_sequence_t T_fdd_118_sequence[] = {
};
static int
-dissect_rrc_T_fdd_118(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_121(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_118, T_fdd_118_sequence);
+ ett_rrc_T_fdd_121, T_fdd_121_sequence);
return offset;
}
-static const per_sequence_t T_tdd_71_sequence[] = {
+static const per_sequence_t T_tdd_74_sequence[] = {
{ &hf_rrc_e_RUCCH_Info_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RUCCH_Info },
{ &hf_rrc_e_PUCH_Info_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_PUCH_Info },
{ &hf_rrc_non_ScheduledTransGrantInfo_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Non_ScheduledTransGrantInfoTDD },
@@ -46162,30 +47704,30 @@ static const per_sequence_t T_tdd_71_sequence[] = {
};
static int
-dissect_rrc_T_tdd_71(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_74(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_71, T_tdd_71_sequence);
+ ett_rrc_T_tdd_74, T_tdd_74_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_81_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_84_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_81_choice[] = {
- { 0, &hf_rrc_fdd_121 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_118 },
- { 1, &hf_rrc_tdd_77 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_71 },
+static const per_choice_t T_modeSpecificInfo_84_choice[] = {
+ { 0, &hf_rrc_fdd_124 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_121 },
+ { 1, &hf_rrc_tdd_80 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_74 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_81(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_84(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_81, T_modeSpecificInfo_81_choice,
+ ett_rrc_T_modeSpecificInfo_84, T_modeSpecificInfo_84_choice,
NULL);
return offset;
@@ -46194,7 +47736,7 @@ dissect_rrc_T_modeSpecificInfo_81(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t UL_EDCH_Information_r8_sequence[] = {
{ &hf_rrc_mac_es_e_resetIndicator_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_mac_es_e_resetIndicator_03 },
- { &hf_rrc_modeSpecificInfo_81, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_81 },
+ { &hf_rrc_modeSpecificInfo_84, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_84 },
{ NULL, 0, 0, NULL }
};
@@ -46361,7 +47903,7 @@ dissect_rrc_DPCH_CompressedModeInfo_r8(tvbuff_t *tvb _U_, int offset _U_, asn1_c
}
-static const per_sequence_t T_fdd_60_sequence[] = {
+static const per_sequence_t T_fdd_62_sequence[] = {
{ &hf_rrc_defaultDPCH_OffsetValue, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultDPCH_OffsetValueFDD },
{ &hf_rrc_dpch_CompressedModeInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DPCH_CompressedModeInfo_r8 },
{ &hf_rrc_tx_DiversityMode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TX_DiversityMode },
@@ -46369,23 +47911,23 @@ static const per_sequence_t T_fdd_60_sequence[] = {
};
static int
-dissect_rrc_T_fdd_60(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_62(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_60, T_fdd_60_sequence);
+ ett_rrc_T_fdd_62, T_fdd_62_sequence);
return offset;
}
-static const per_sequence_t T_tdd128_16_sequence[] = {
+static const per_sequence_t T_tdd128_17_sequence[] = {
{ &hf_rrc_tstd_Indicator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_16, T_tdd128_16_sequence);
+ ett_rrc_T_tdd128_17, T_tdd128_17_sequence);
return offset;
}
@@ -46399,9 +47941,9 @@ static const value_string rrc_T_tddOption_09_vals[] = {
};
static const per_choice_t T_tddOption_09_choice[] = {
- { 0, &hf_rrc_tdd384_09 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 1, &hf_rrc_tdd768_04 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 2, &hf_rrc_tdd128_16 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_16 },
+ { 0, &hf_rrc_tdd384_10 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_tdd768_05 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 2, &hf_rrc_tdd128_17 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_17 },
{ 0, NULL, 0, NULL }
};
@@ -46415,37 +47957,37 @@ dissect_rrc_T_tddOption_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
}
-static const per_sequence_t T_tdd_22_sequence[] = {
+static const per_sequence_t T_tdd_24_sequence[] = {
{ &hf_rrc_tddOption_09 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_09 },
{ &hf_rrc_defaultDPCH_OffsetValue_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultDPCH_OffsetValueTDD },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_22(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_22, T_tdd_22_sequence);
+ ett_rrc_T_tdd_24, T_tdd_24_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_30_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_32_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_30_choice[] = {
- { 0, &hf_rrc_fdd_61 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_60 },
- { 1, &hf_rrc_tdd_23 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_22 },
+static const per_choice_t T_modeSpecificInfo_32_choice[] = {
+ { 0, &hf_rrc_fdd_63 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_62 },
+ { 1, &hf_rrc_tdd_25 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_24 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_30(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_30, T_modeSpecificInfo_30_choice,
+ ett_rrc_T_modeSpecificInfo_32, T_modeSpecificInfo_32_choice,
NULL);
return offset;
@@ -46484,7 +48026,7 @@ dissect_rrc_T_postVerificationPeriod_09(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t DL_CommonInformation_r8_sequence[] = {
{ &hf_rrc_dl_dpchInfoCommon_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dl_dpchInfoCommon_02 },
- { &hf_rrc_modeSpecificInfo_30, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_30 },
+ { &hf_rrc_modeSpecificInfo_32, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_32 },
{ &hf_rrc_mac_hsResetIndicator_07, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_mac_hsResetIndicator_07 },
{ &hf_rrc_postVerificationPeriod_09, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_postVerificationPeriod_09 },
{ NULL, 0, 0, NULL }
@@ -46499,7 +48041,7 @@ dissect_rrc_DL_CommonInformation_r8(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
-static const per_sequence_t T_fdd_81_sequence[] = {
+static const per_sequence_t T_fdd_84_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ &hf_rrc_servingHSDSCH_RL_indicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_servingEDCH_RL_indicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
@@ -46507,30 +48049,30 @@ static const per_sequence_t T_fdd_81_sequence[] = {
};
static int
-dissect_rrc_T_fdd_81(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_84(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_81, T_fdd_81_sequence);
+ ett_rrc_T_fdd_84, T_fdd_84_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_48_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_51_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_48_choice[] = {
- { 0, &hf_rrc_fdd_82 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_81 },
- { 1, &hf_rrc_tdd_41 , ASN1_NO_EXTENSIONS , dissect_rrc_PrimaryCCPCH_Info_r4 },
+static const per_choice_t T_modeSpecificInfo_51_choice[] = {
+ { 0, &hf_rrc_fdd_85 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_84 },
+ { 1, &hf_rrc_tdd_44 , ASN1_NO_EXTENSIONS , dissect_rrc_PrimaryCCPCH_Info_r4 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_48(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_51(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_48, T_modeSpecificInfo_48_choice,
+ ett_rrc_T_modeSpecificInfo_51, T_modeSpecificInfo_51_choice,
NULL);
return offset;
@@ -46559,21 +48101,21 @@ dissect_rrc_T_dl_dpchInfo_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_fdd_84_sequence[] = {
+static const per_sequence_t T_fdd_87_sequence[] = {
{ &hf_rrc_e_AGCH_ChannelisationCode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_E_AGCH_ChannelisationCode },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_84(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_87(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_84, T_fdd_84_sequence);
+ ett_rrc_T_fdd_87, T_fdd_87_sequence);
return offset;
}
-static const per_sequence_t T_tdd384_17_sequence[] = {
+static const per_sequence_t T_tdd384_18_sequence[] = {
{ &hf_rrc_long_Term_Grant_Indicator, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BOOLEAN },
{ &hf_rrc_length_of_TTRI_field, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_1_12 },
{ &hf_rrc_e_AGCH_Set_Config, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_E_AGCH_Set_Config },
@@ -46582,15 +48124,15 @@ static const per_sequence_t T_tdd384_17_sequence[] = {
};
static int
-dissect_rrc_T_tdd384_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_17, T_tdd384_17_sequence);
+ ett_rrc_T_tdd384_18, T_tdd384_18_sequence);
return offset;
}
-static const per_sequence_t T_tdd768_09_sequence[] = {
+static const per_sequence_t T_tdd768_10_sequence[] = {
{ &hf_rrc_long_Term_Grant_Indicator, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BOOLEAN },
{ &hf_rrc_length_of_TTRI_field, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_1_12 },
{ &hf_rrc_e_AGCH_Set_Config_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_E_AGCH_Set_Config_VHCR },
@@ -46599,9 +48141,9 @@ static const per_sequence_t T_tdd768_09_sequence[] = {
};
static int
-dissect_rrc_T_tdd768_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd768_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd768_09, T_tdd768_09_sequence);
+ ett_rrc_T_tdd768_10, T_tdd768_10_sequence);
return offset;
}
@@ -46637,7 +48179,7 @@ dissect_rrc_E_AGCH_InactivityMonitorThreshold_TDD128(tvbuff_t *tvb _U_, int offs
}
-static const per_sequence_t T_tdd128_26_sequence[] = {
+static const per_sequence_t T_tdd128_28_sequence[] = {
{ &hf_rrc_rdi_Indicator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_tpc_StepSize , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TPC_StepSizeTDD },
{ &hf_rrc_e_AGCH_Set_Config_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_E_AGCH_Set_Config_LCR },
@@ -46647,32 +48189,32 @@ static const per_sequence_t T_tdd128_26_sequence[] = {
};
static int
-dissect_rrc_T_tdd128_26(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_28(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_26, T_tdd128_26_sequence);
+ ett_rrc_T_tdd128_28, T_tdd128_28_sequence);
return offset;
}
-static const value_string rrc_T_tdd_42_vals[] = {
+static const value_string rrc_T_tdd_45_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd768" },
{ 2, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tdd_42_choice[] = {
- { 0, &hf_rrc_tdd384_18 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_17 },
- { 1, &hf_rrc_tdd768_10 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_09 },
- { 2, &hf_rrc_tdd128_26 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_26 },
+static const per_choice_t T_tdd_45_choice[] = {
+ { 0, &hf_rrc_tdd384_19 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_18 },
+ { 1, &hf_rrc_tdd768_11 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_10 },
+ { 2, &hf_rrc_tdd128_28 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_28 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tdd_42(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_45(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_42, T_tdd_42_choice,
+ ett_rrc_T_tdd_45, T_tdd_45_choice,
NULL);
return offset;
@@ -46686,8 +48228,8 @@ static const value_string rrc_T_modeSpecific_03_vals[] = {
};
static const per_choice_t T_modeSpecific_03_choice[] = {
- { 0, &hf_rrc_fdd_85 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_84 },
- { 1, &hf_rrc_tdd_45 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_42 },
+ { 0, &hf_rrc_fdd_88 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_87 },
+ { 1, &hf_rrc_tdd_48 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_45 },
{ 0, NULL, 0, NULL }
};
@@ -46759,16 +48301,16 @@ dissect_rrc_T_e_RGCH_Info_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_fdd_82_sequence[] = {
+static const per_sequence_t T_fdd_85_sequence[] = {
{ &hf_rrc_e_HICH_Info_04 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_e_HICH_Info_02 },
{ &hf_rrc_e_RGCH_Info_03 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_e_RGCH_Info_03 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_82(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_85(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_82, T_fdd_82_sequence);
+ ett_rrc_T_fdd_85, T_fdd_85_sequence);
return offset;
}
@@ -46788,36 +48330,36 @@ dissect_rrc_T_tdd384_tdd768_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
}
-static const per_sequence_t T_tdd128_24_sequence[] = {
+static const per_sequence_t T_tdd128_26_sequence[] = {
{ &hf_rrc_e_HICH_Info_03 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_HICH_Information_TDD128 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_26(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_24, T_tdd128_24_sequence);
+ ett_rrc_T_tdd128_26, T_tdd128_26_sequence);
return offset;
}
-static const value_string rrc_T_tdd_40_vals[] = {
+static const value_string rrc_T_tdd_43_vals[] = {
{ 0, "tdd384-tdd768" },
{ 1, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tdd_40_choice[] = {
+static const per_choice_t T_tdd_43_choice[] = {
{ 0, &hf_rrc_tdd384_tdd768_01, ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_tdd768_01 },
- { 1, &hf_rrc_tdd128_24 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_24 },
+ { 1, &hf_rrc_tdd128_26 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_26 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tdd_40(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_43(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_40, T_tdd_40_choice,
+ ett_rrc_T_tdd_43, T_tdd_43_choice,
NULL);
return offset;
@@ -46831,8 +48373,8 @@ static const value_string rrc_T_modeSpecificInfo2_01_vals[] = {
};
static const per_choice_t T_modeSpecificInfo2_01_choice[] = {
- { 0, &hf_rrc_fdd_83 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_82 },
- { 1, &hf_rrc_tdd_43 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_40 },
+ { 0, &hf_rrc_fdd_86 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_85 },
+ { 1, &hf_rrc_tdd_46 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_43 },
{ 0, NULL, 0, NULL }
};
@@ -46847,7 +48389,7 @@ dissect_rrc_T_modeSpecificInfo2_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t DL_InformationPerRL_r8_sequence[] = {
- { &hf_rrc_modeSpecificInfo_48, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_48 },
+ { &hf_rrc_modeSpecificInfo_51, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_51 },
{ &hf_rrc_dl_dpchInfo_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dl_dpchInfo_02 },
{ &hf_rrc_e_AGCH_Information_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_AGCH_Information_r8 },
{ &hf_rrc_modeSpecificInfo2_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo2_01 },
@@ -47638,7 +49180,7 @@ static const per_sequence_t CellUpdateConfirm_r8_IEs_sequence[] = {
{ &hf_rrc_cn_InformationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_InformationInfo_r6 },
{ &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
{ &hf_rrc_supportForChangeOfUE_Capability, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BOOLEAN },
- { &hf_rrc_defaultConfigForCellFACH, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultConfigForCellFACH },
+ { &hf_rrc_dummy_06 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultConfigForCellFACH },
{ &hf_rrc_rab_InformationSetup, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationSetup_r8 },
{ &hf_rrc_rb_InformationReleaseList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_InformationReleaseList },
{ &hf_rrc_rb_InformationReconfigList_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_InformationReconfigList_r8 },
@@ -47700,15 +49242,15 @@ dissect_rrc_T_t_SI_nst(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
}
-static const per_sequence_t T_tdd128_36_sequence[] = {
+static const per_sequence_t T_tdd128_38_sequence[] = {
{ &hf_rrc_t_SI_nst , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_t_SI_nst },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_36(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_38(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_36, T_tdd128_36_sequence);
+ ett_rrc_T_tdd128_38, T_tdd128_38_sequence);
return offset;
}
@@ -47722,7 +49264,7 @@ static const value_string rrc_Non_ScheduledTransGrantInfoTDD_ext_vals[] = {
static const per_choice_t Non_ScheduledTransGrantInfoTDD_ext_choice[] = {
{ 0, &hf_rrc_tdd384_768_01 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 1, &hf_rrc_tdd128_37 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_36 },
+ { 1, &hf_rrc_tdd128_39 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_38 },
{ 0, NULL, 0, NULL }
};
@@ -47736,15 +49278,15 @@ dissect_rrc_Non_ScheduledTransGrantInfoTDD_ext(tvbuff_t *tvb _U_, int offset _U_
}
-static const per_sequence_t T_tdd_69_sequence[] = {
+static const per_sequence_t T_tdd_72_sequence[] = {
{ &hf_rrc_non_ScheduledTransGrantInfo_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Non_ScheduledTransGrantInfoTDD_ext },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_69(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_72(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_69, T_tdd_69_sequence);
+ ett_rrc_T_tdd_72, T_tdd_72_sequence);
return offset;
}
@@ -47757,8 +49299,8 @@ static const value_string rrc_UL_EDCH_Information_ext_vals[] = {
};
static const per_choice_t UL_EDCH_Information_ext_choice[] = {
- { 0, &hf_rrc_fdd_43 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 1, &hf_rrc_tdd_75 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_69 },
+ { 0, &hf_rrc_fdd_44 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_tdd_78 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_72 },
{ 0, NULL, 0, NULL }
};
@@ -47800,60 +49342,60 @@ dissect_rrc_CellUpdateConfirm_v7f0ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn
}
-static const per_sequence_t T_tdd128_21_sequence[] = {
+static const per_sequence_t T_tdd128_23_sequence[] = {
{ &hf_rrc_outofSyncWindow , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_OutofSyncWindow },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_23(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_21, T_tdd128_21_sequence);
+ ett_rrc_T_tdd128_23, T_tdd128_23_sequence);
return offset;
}
-static const value_string rrc_T_tdd_37_vals[] = {
+static const value_string rrc_T_tdd_40_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd768" },
{ 2, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tdd_37_choice[] = {
- { 0, &hf_rrc_tdd384_09 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 1, &hf_rrc_tdd768_04 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 2, &hf_rrc_tdd128_21 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_21 },
+static const per_choice_t T_tdd_40_choice[] = {
+ { 0, &hf_rrc_tdd384_10 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_tdd768_05 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 2, &hf_rrc_tdd128_23 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_23 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tdd_37(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_40(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_37, T_tdd_37_choice,
+ ett_rrc_T_tdd_40, T_tdd_40_choice,
NULL);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_40_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_43_vals[] = {
{ 0, "tdd" },
{ 1, "fdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_40_choice[] = {
- { 0, &hf_rrc_tdd_38 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_37 },
- { 1, &hf_rrc_fdd_43 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+static const per_choice_t T_modeSpecificInfo_43_choice[] = {
+ { 0, &hf_rrc_tdd_41 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_40 },
+ { 1, &hf_rrc_fdd_44 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_40(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_43(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_40, T_modeSpecificInfo_40_choice,
+ ett_rrc_T_modeSpecificInfo_43, T_modeSpecificInfo_43_choice,
NULL);
return offset;
@@ -47861,7 +49403,7 @@ dissect_rrc_T_modeSpecificInfo_40(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t DL_HSPDSCH_Information_r8_ext_sequence[] = {
- { &hf_rrc_modeSpecificInfo_40, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_40 },
+ { &hf_rrc_modeSpecificInfo_43, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_43 },
{ NULL, 0, 0, NULL }
};
@@ -47921,60 +49463,60 @@ dissect_rrc_T_hS_SCCH_tpc_step_size(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
-static const per_sequence_t T_tdd128_31_sequence[] = {
+static const per_sequence_t T_tdd128_33_sequence[] = {
{ &hf_rrc_hS_SCCH_tpc_step_size, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_hS_SCCH_tpc_step_size },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_33(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_31, T_tdd128_31_sequence);
+ ett_rrc_T_tdd128_33, T_tdd128_33_sequence);
return offset;
}
-static const value_string rrc_T_tdd_46_vals[] = {
+static const value_string rrc_T_tdd_49_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd768" },
{ 2, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tdd_46_choice[] = {
- { 0, &hf_rrc_tdd384_09 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 1, &hf_rrc_tdd768_04 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 2, &hf_rrc_tdd128_32 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_31 },
+static const per_choice_t T_tdd_49_choice[] = {
+ { 0, &hf_rrc_tdd384_10 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_tdd768_05 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 2, &hf_rrc_tdd128_34 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_33 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tdd_46(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_49(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_46, T_tdd_46_choice,
+ ett_rrc_T_tdd_49, T_tdd_49_choice,
NULL);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_58_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_61_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_58_choice[] = {
- { 0, &hf_rrc_fdd_43 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 1, &hf_rrc_tdd_50 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_46 },
+static const per_choice_t T_modeSpecificInfo_61_choice[] = {
+ { 0, &hf_rrc_fdd_44 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_tdd_53 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_49 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_58(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_61(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_58, T_modeSpecificInfo_58_choice,
+ ett_rrc_T_modeSpecificInfo_61, T_modeSpecificInfo_61_choice,
NULL);
return offset;
@@ -47982,7 +49524,7 @@ dissect_rrc_T_modeSpecificInfo_58(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t HS_SCCH_Info_r8_ext_sequence[] = {
- { &hf_rrc_modeSpecificInfo_58, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_58 },
+ { &hf_rrc_modeSpecificInfo_61, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_61 },
{ NULL, 0, 0, NULL }
};
@@ -48023,14 +49565,14 @@ dissect_rrc_CellUpdateConfirm_v8a0ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn
}
-static const per_sequence_t T_nonCriticalExtensions_17_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_18_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_17, T_nonCriticalExtensions_17_sequence);
+ ett_rrc_T_nonCriticalExtensions_18, T_nonCriticalExtensions_18_sequence);
return offset;
}
@@ -48038,7 +49580,7 @@ dissect_rrc_T_nonCriticalExtensions_17(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v8a0NonCriticalExtensions_sequence[] = {
{ &hf_rrc_cellUpdateConfirm_v8a0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellUpdateConfirm_v8a0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_17, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_17 },
+ { &hf_rrc_nonCriticalExtensions_18, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_18 },
{ NULL, 0, 0, NULL }
};
@@ -48301,7 +49843,7 @@ dissect_rrc_T_mac_es_e_resetIndicator_04(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_fdd_119_sequence[] = {
+static const per_sequence_t T_fdd_122_sequence[] = {
{ &hf_rrc_e_DPCCH_Info_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_DPCCH_Info_r7 },
{ &hf_rrc_e_DPDCH_Info_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_DPDCH_Info_r8 },
{ &hf_rrc_schedulingTransmConfiguration, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_DPDCH_SchedulingTransmConfiguration },
@@ -48310,9 +49852,9 @@ static const per_sequence_t T_fdd_119_sequence[] = {
};
static int
-dissect_rrc_T_fdd_119(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_122(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_119, T_fdd_119_sequence);
+ ett_rrc_T_fdd_122, T_fdd_122_sequence);
return offset;
}
@@ -48397,7 +49939,7 @@ dissect_rrc_T_t_SI_nst_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
}
-static const per_sequence_t T_tdd128_37_sequence[] = {
+static const per_sequence_t T_tdd128_39_sequence[] = {
{ &hf_rrc_n_E_UCCH , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_1_8 },
{ &hf_rrc_n_E_HICH_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_4_15 },
{ &hf_rrc_timeslotResourceRelatedInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BIT_STRING_SIZE_5 },
@@ -48412,9 +49954,9 @@ static const per_sequence_t T_tdd128_37_sequence[] = {
};
static int
-dissect_rrc_T_tdd128_37(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_39(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_37, T_tdd128_37_sequence);
+ ett_rrc_T_tdd128_39, T_tdd128_39_sequence);
return offset;
}
@@ -48428,7 +49970,7 @@ static const value_string rrc_Non_ScheduledTransGrantInfoTDD_r9_vals[] = {
static const per_choice_t Non_ScheduledTransGrantInfoTDD_r9_choice[] = {
{ 0, &hf_rrc_tdd384_768_02 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_768_01 },
- { 1, &hf_rrc_tdd128_38 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_37 },
+ { 1, &hf_rrc_tdd128_40 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_39 },
{ 0, NULL, 0, NULL }
};
@@ -48442,7 +49984,7 @@ dissect_rrc_Non_ScheduledTransGrantInfoTDD_r9(tvbuff_t *tvb _U_, int offset _U_,
}
-static const per_sequence_t T_tdd_72_sequence[] = {
+static const per_sequence_t T_tdd_75_sequence[] = {
{ &hf_rrc_e_RUCCH_Info_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RUCCH_Info },
{ &hf_rrc_e_PUCH_Info_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_PUCH_Info },
{ &hf_rrc_non_ScheduledTransGrantInfo_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Non_ScheduledTransGrantInfoTDD_r9 },
@@ -48450,30 +49992,30 @@ static const per_sequence_t T_tdd_72_sequence[] = {
};
static int
-dissect_rrc_T_tdd_72(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_75(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_72, T_tdd_72_sequence);
+ ett_rrc_T_tdd_75, T_tdd_75_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_82_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_85_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_82_choice[] = {
- { 0, &hf_rrc_fdd_122 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_119 },
- { 1, &hf_rrc_tdd_78 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_72 },
+static const per_choice_t T_modeSpecificInfo_85_choice[] = {
+ { 0, &hf_rrc_fdd_125 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_122 },
+ { 1, &hf_rrc_tdd_81 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_75 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_82(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_85(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_82, T_modeSpecificInfo_82_choice,
+ ett_rrc_T_modeSpecificInfo_85, T_modeSpecificInfo_85_choice,
NULL);
return offset;
@@ -48482,7 +50024,7 @@ dissect_rrc_T_modeSpecificInfo_82(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t UL_EDCH_Information_r9_sequence[] = {
{ &hf_rrc_mac_es_e_resetIndicator_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_mac_es_e_resetIndicator_04 },
- { &hf_rrc_modeSpecificInfo_82, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_82 },
+ { &hf_rrc_modeSpecificInfo_85, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_85 },
{ NULL, 0, 0, NULL }
};
@@ -48621,7 +50163,7 @@ static const per_sequence_t CellUpdateConfirm_r9_IEs_sequence[] = {
{ &hf_rrc_cn_InformationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_InformationInfo_r6 },
{ &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
{ &hf_rrc_supportForChangeOfUE_Capability, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BOOLEAN },
- { &hf_rrc_defaultConfigForCellFACH, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultConfigForCellFACH },
+ { &hf_rrc_dummy_06 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultConfigForCellFACH },
{ &hf_rrc_rab_InformationSetup, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationSetup_r8 },
{ &hf_rrc_rb_InformationReleaseList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_InformationReleaseList },
{ &hf_rrc_rb_InformationReconfigList_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_InformationReconfigList_r8 },
@@ -48678,14 +50220,14 @@ dissect_rrc_CellUpdateConfirm_v950ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn
}
-static const per_sequence_t T_nonCriticalExtensions_18_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_19_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_18, T_nonCriticalExtensions_18_sequence);
+ ett_rrc_T_nonCriticalExtensions_19, T_nonCriticalExtensions_19_sequence);
return offset;
}
@@ -48693,7 +50235,7 @@ dissect_rrc_T_nonCriticalExtensions_18(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v950NonCriticalExtensions_01_sequence[] = {
{ &hf_rrc_cellUpdateConfirm_v950ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellUpdateConfirm_v950ext_IEs },
- { &hf_rrc_nonCriticalExtensions_18, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_18 },
+ { &hf_rrc_nonCriticalExtensions_19, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_19 },
{ NULL, 0, 0, NULL }
};
@@ -48722,145 +50264,812 @@ dissect_rrc_T_r9_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_14_sequence[] = {
+
+static int
+dissect_rrc_BIT_STRING_SIZE_128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 128, 128, FALSE, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t SR_VCC_Info_sequence[] = {
+ { &hf_rrc_nonce , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING_SIZE_128 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_SR_VCC_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_14, T_criticalExtensions_14_sequence);
+ ett_rrc_SR_VCC_Info, SR_VCC_Info_sequence);
return offset;
}
-static const value_string rrc_T_criticalExtensions_13_vals[] = {
+static const value_string rrc_T_tsn_Length_01_vals[] = {
+ { 0, "tsn-14bits" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_tsn_Length_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t E_PUCH_Info_MulticarrierEDCH_TDD128_sequence[] = {
+ { &hf_rrc_e_PUCH_TS_ConfigurationList_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SEQUENCE_SIZE_1_maxTS_LCR_1_OF_E_PUCH_TS_Slots_LCR },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_E_PUCH_Info_MulticarrierEDCH_TDD128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_E_PUCH_Info_MulticarrierEDCH_TDD128, E_PUCH_Info_MulticarrierEDCH_TDD128_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t E_AGCH_Information_TDD128_sequence[] = {
+ { &hf_rrc_rdi_Indicator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
+ { &hf_rrc_tpc_StepSize , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TPC_StepSizeTDD },
+ { &hf_rrc_e_AGCH_Set_Config_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_E_AGCH_Set_Config_LCR },
+ { &hf_rrc_e_AGCH_BLER_Target, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_Bler_Target },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_E_AGCH_Information_TDD128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_E_AGCH_Information_TDD128, E_AGCH_Information_TDD128_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t UL_MulticarrierEDCH_InfolistItem_TDD128_sequence[] = {
+ { &hf_rrc_uarfcn , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UARFCN },
+ { &hf_rrc_prxdes_base , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_M112_M50 },
+ { &hf_rrc_e_PUCH_info , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_PUCH_Info_MulticarrierEDCH_TDD128 },
+ { &hf_rrc_e_AGCH_info , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_AGCH_Information_TDD128 },
+ { &hf_rrc_e_HICH_info , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_HICH_Information_TDD128 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UL_MulticarrierEDCH_InfolistItem_TDD128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UL_MulticarrierEDCH_InfolistItem_TDD128, UL_MulticarrierEDCH_InfolistItem_TDD128_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t UL_MulticarrierEDCH_Infolist_TDD128_sequence_of[1] = {
+ { &hf_rrc_UL_MulticarrierEDCH_Infolist_TDD128_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_MulticarrierEDCH_InfolistItem_TDD128 },
+};
+
+static int
+dissect_rrc_UL_MulticarrierEDCH_Infolist_TDD128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UL_MulticarrierEDCH_Infolist_TDD128, UL_MulticarrierEDCH_Infolist_TDD128_sequence_of,
+ 1, maxTDD128Carrier_1, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t UL_MulticarrierEDCH_Deletelist_TDD128_sequence_of[1] = {
+ { &hf_rrc_UL_MulticarrierEDCH_Deletelist_TDD128_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UARFCN },
+};
+
+static int
+dissect_rrc_UL_MulticarrierEDCH_Deletelist_TDD128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UL_MulticarrierEDCH_Deletelist_TDD128, UL_MulticarrierEDCH_Deletelist_TDD128_sequence_of,
+ 1, maxTDD128Carrier_1, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t UL_MulticarrierEDCH_NewConfigurationInfo_TDD128_sequence[] = {
+ { &hf_rrc_tsn_Length_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_tsn_Length_01 },
+ { &hf_rrc_ul_MulticarrierEDCH_Infolist, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_MulticarrierEDCH_Infolist_TDD128 },
+ { &hf_rrc_ul_MulticarrierEDCH_Deletelist, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_MulticarrierEDCH_Deletelist_TDD128 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UL_MulticarrierEDCH_NewConfigurationInfo_TDD128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UL_MulticarrierEDCH_NewConfigurationInfo_TDD128, UL_MulticarrierEDCH_NewConfigurationInfo_TDD128_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_configuration_info_vals[] = {
+ { 0, "continue" },
+ { 1, "newConfiguration" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_configuration_info_choice[] = {
+ { 0, &hf_rrc_continue , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_newConfiguration_07, ASN1_NO_EXTENSIONS , dissect_rrc_UL_MulticarrierEDCH_NewConfigurationInfo_TDD128 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_configuration_info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_configuration_info, T_configuration_info_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t UL_MulticarrierEDCHInfo_TDD128_sequence[] = {
+ { &hf_rrc_configuration_info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_configuration_info },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UL_MulticarrierEDCHInfo_TDD128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UL_MulticarrierEDCHInfo_TDD128, UL_MulticarrierEDCHInfo_TDD128_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_dl_dpchInfoCommon_03_vals[] = {
+ { 0, "dl-DPCH-InfoCommon" },
+ { 1, "dl-FDPCH-InfoCommon" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_dl_dpchInfoCommon_03_choice[] = {
+ { 0, &hf_rrc_dl_DPCH_InfoCommon_02, ASN1_NO_EXTENSIONS , dissect_rrc_DL_DPCH_InfoCommon_r6 },
+ { 1, &hf_rrc_dl_FDPCH_InfoCommon, ASN1_NO_EXTENSIONS , dissect_rrc_DL_FDPCH_InfoCommon_r6 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_dl_dpchInfoCommon_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_dl_dpchInfoCommon_03, T_dl_dpchInfoCommon_03_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_activate_02_sequence[] = {
+ { &hf_rrc_tgcfn , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TGCFN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_activate_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_activate_02, T_activate_02_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_tgps_Status_02_vals[] = {
+ { 0, "activate" },
+ { 1, "deactivate" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_tgps_Status_02_choice[] = {
+ { 0, &hf_rrc_activate_02 , ASN1_NO_EXTENSIONS , dissect_rrc_T_activate_02 },
+ { 1, &hf_rrc_deactivate , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_tgps_Status_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_tgps_Status_02, T_tgps_Status_02_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_freqSpecificCompressedMode_02_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_freqSpecificCompressedMode_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t TGPS_ConfigurationParams_r10_sequence[] = {
+ { &hf_rrc_tgmp_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TGMP_r8 },
+ { &hf_rrc_freqSpecificCompressedMode_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_freqSpecificCompressedMode_02 },
+ { &hf_rrc_tgprc , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TGPRC },
+ { &hf_rrc_tgsn , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TGSN },
+ { &hf_rrc_tgl1 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TGL },
+ { &hf_rrc_tgl2 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TGL },
+ { &hf_rrc_tgd , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TGD },
+ { &hf_rrc_tgpl1 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TGPL },
+ { &hf_rrc_rpp , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RPP },
+ { &hf_rrc_itp , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_ITP },
+ { &hf_rrc_ul_DL_Mode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_DL_Mode },
+ { &hf_rrc_dl_FrameType , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_FrameType },
+ { &hf_rrc_deltaSIR1 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DeltaSIR },
+ { &hf_rrc_deltaSIRAfter1 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DeltaSIR },
+ { &hf_rrc_deltaSIR2 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DeltaSIR },
+ { &hf_rrc_deltaSIRAfter2 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DeltaSIR },
+ { &hf_rrc_nidentifyAbort , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NidentifyAbort },
+ { &hf_rrc_treconfirmAbort , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TreconfirmAbort },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_TGPS_ConfigurationParams_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_TGPS_ConfigurationParams_r10, TGPS_ConfigurationParams_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t TGP_Sequence_r10_sequence[] = {
+ { &hf_rrc_tgpsi , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TGPSI },
+ { &hf_rrc_tgps_Status_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tgps_Status_02 },
+ { &hf_rrc_tgps_ConfigurationParams_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TGPS_ConfigurationParams_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_TGP_Sequence_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_TGP_Sequence_r10, TGP_Sequence_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t TGP_SequenceList_r10_sequence_of[1] = {
+ { &hf_rrc_TGP_SequenceList_r10_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TGP_Sequence_r10 },
+};
+
+static int
+dissect_rrc_TGP_SequenceList_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_TGP_SequenceList_r10, TGP_SequenceList_r10_sequence_of,
+ 1, maxTGPS, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t DPCH_CompressedModeInfo_r10_sequence[] = {
+ { &hf_rrc_tgp_SequenceList_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TGP_SequenceList_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_DPCH_CompressedModeInfo_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_DPCH_CompressedModeInfo_r10, DPCH_CompressedModeInfo_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_fdd_63_sequence[] = {
+ { &hf_rrc_defaultDPCH_OffsetValue, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultDPCH_OffsetValueFDD },
+ { &hf_rrc_dpch_CompressedModeInfo_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DPCH_CompressedModeInfo_r10 },
+ { &hf_rrc_tx_DiversityMode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TX_DiversityMode },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_fdd_63(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_fdd_63, T_fdd_63_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_tdd128_18_sequence[] = {
+ { &hf_rrc_tstd_Indicator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_tdd128_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_tdd128_18, T_tdd128_18_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_tddOption_10_vals[] = {
+ { 0, "tdd384" },
+ { 1, "tdd768" },
+ { 2, "tdd128" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_tddOption_10_choice[] = {
+ { 0, &hf_rrc_tdd384_10 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_tdd768_05 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 2, &hf_rrc_tdd128_18 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_18 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_tddOption_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_tddOption_10, T_tddOption_10_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_tdd_25_sequence[] = {
+ { &hf_rrc_tddOption_10 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_10 },
+ { &hf_rrc_defaultDPCH_OffsetValue_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultDPCH_OffsetValueTDD },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_tdd_25(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_tdd_25, T_tdd_25_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_modeSpecificInfo_33_vals[] = {
+ { 0, "fdd" },
+ { 1, "tdd" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_modeSpecificInfo_33_choice[] = {
+ { 0, &hf_rrc_fdd_64 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_63 },
+ { 1, &hf_rrc_tdd_26 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_25 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_modeSpecificInfo_33(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_modeSpecificInfo_33, T_modeSpecificInfo_33_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_mac_hsResetIndicator_08_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_mac_hsResetIndicator_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_postVerificationPeriod_10_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_postVerificationPeriod_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t DL_CommonInformation_r10_sequence[] = {
+ { &hf_rrc_dl_dpchInfoCommon_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dl_dpchInfoCommon_03 },
+ { &hf_rrc_modeSpecificInfo_33, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_33 },
+ { &hf_rrc_mac_hsResetIndicator_08, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_mac_hsResetIndicator_08 },
+ { &hf_rrc_postVerificationPeriod_10, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_postVerificationPeriod_10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_DL_CommonInformation_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_DL_CommonInformation_r10, DL_CommonInformation_r10_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_MU_MIMO_Operation_vals[] = {
+ { 0, "uL" },
+ { 1, "dL" },
+ { 2, "uLandDL" },
+ { 3, "spare" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_MU_MIMO_Operation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_repetitionPeriod_vals[] = {
+ { 0, "v1" },
+ { 1, "v2" },
+ { 2, "v4" },
+ { 3, "v8" },
+ { 4, "v16" },
+ { 5, "v32" },
+ { 6, "v64" },
+ { 7, "spare" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_repetitionPeriod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t StandaloneMidambleInfo_TDD128_sequence[] = {
+ { &hf_rrc_midambleConfiguration, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_1_8 },
+ { &hf_rrc_midambleShift_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_15 },
+ { &hf_rrc_timeSlotInformation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BIT_STRING_SIZE_5 },
+ { &hf_rrc_activationTime , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_ActivationTime },
+ { &hf_rrc_subframeNum , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_1 },
+ { &hf_rrc_repetitionPeriod, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_repetitionPeriod },
+ { &hf_rrc_referenceBeta , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_M15_16 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_StandaloneMidambleInfo_TDD128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_StandaloneMidambleInfo_TDD128, StandaloneMidambleInfo_TDD128_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_newConfiguration_04_sequence[] = {
+ { &hf_rrc_mu_MIMO_Operation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MU_MIMO_Operation },
+ { &hf_rrc_standaloneMidambleInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_StandaloneMidambleInfo_TDD128 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_newConfiguration_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_newConfiguration_04, T_newConfiguration_04_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_MU_MIMO_Info_TDD128_vals[] = {
+ { 0, "continue" },
+ { 1, "newConfiguration" },
+ { 0, NULL }
+};
+
+static const per_choice_t MU_MIMO_Info_TDD128_choice[] = {
+ { 0, &hf_rrc_continue , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_newConfiguration_04, ASN1_NO_EXTENSIONS , dissect_rrc_T_newConfiguration_04 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_MU_MIMO_Info_TDD128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_MU_MIMO_Info_TDD128, MU_MIMO_Info_TDD128_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t CellUpdateConfirm_r10_IEs_sequence[] = {
+ { &hf_rrc_integrityProtectionModeInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntegrityProtectionModeInfo_r7 },
+ { &hf_rrc_cipheringModeInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CipheringModeInfo_r7 },
+ { &hf_rrc_sr_vcc_Info , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SR_VCC_Info },
+ { &hf_rrc_activationTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ActivationTime },
+ { &hf_rrc_new_U_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_U_RNTI },
+ { &hf_rrc_new_C_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_C_RNTI },
+ { &hf_rrc_new_DSCH_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DSCH_RNTI },
+ { &hf_rrc_new_H_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_H_RNTI },
+ { &hf_rrc_newPrimary_E_RNTI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RNTI },
+ { &hf_rrc_newSecondary_E_RNTI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RNTI },
+ { &hf_rrc_rrc_StateIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_StateIndicator },
+ { &hf_rrc_utran_DRX_CycleLengthCoeff_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UTRAN_DRX_CycleLengthCoefficient_r7 },
+ { &hf_rrc_waitTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_WaitTime },
+ { &hf_rrc_rlc_Re_establishIndicatorRb2_3or4, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
+ { &hf_rrc_rlc_Re_establishIndicatorRb5orAbove, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
+ { &hf_rrc_cn_InformationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_InformationInfo_r6 },
+ { &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
+ { &hf_rrc_supportForChangeOfUE_Capability, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BOOLEAN },
+ { &hf_rrc_dummy_06 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultConfigForCellFACH },
+ { &hf_rrc_rab_InformationSetup, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationSetup_r8 },
+ { &hf_rrc_rb_InformationReleaseList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_InformationReleaseList },
+ { &hf_rrc_rb_InformationReconfigList_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_InformationReconfigList_r8 },
+ { &hf_rrc_rb_InformationAffectedList_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_InformationAffectedList_r8 },
+ { &hf_rrc_dl_CounterSynchronisationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CounterSynchronisationInfo_r5 },
+ { &hf_rrc_pdcp_ROHC_TargetMode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PDCP_ROHC_TargetMode },
+ { &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo_r4 },
+ { &hf_rrc_ul_deletedTransChInfoList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DeletedTransChInfoList_r6 },
+ { &hf_rrc_ul_AddReconfTransChInfoList_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList_r8 },
+ { &hf_rrc_dl_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonTransChInfo_r4 },
+ { &hf_rrc_dl_DeletedTransChInfoList_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DeletedTransChInfoList_r7 },
+ { &hf_rrc_dl_AddReconfTransChInfoList_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_AddReconfTransChInfoList_r9 },
+ { &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
+ { &hf_rrc_multi_frequencyInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Multi_frequencyInfo_LCR_r7 },
+ { &hf_rrc_dtx_drx_TimingInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DTX_DRX_TimingInfo_r7 },
+ { &hf_rrc_dtx_drx_Info , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DTX_DRX_Info_r7 },
+ { &hf_rrc_hs_scch_LessInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_SCCH_LessInfo_r7 },
+ { &hf_rrc_mimoParameters_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MIMO_Parameters_r9 },
+ { &hf_rrc_maxAllowedUL_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MaxAllowedUL_TX_Power },
+ { &hf_rrc_ul_DPCH_Info_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DPCH_Info_r7 },
+ { &hf_rrc_ul_EDCH_Information_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_EDCH_Information_r9 },
+ { &hf_rrc_ul_SecondaryCellInfoFDD, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_SecondaryCellInfoFDD },
+ { &hf_rrc_ul_MulticarrierEDCHInfo_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_MulticarrierEDCHInfo_TDD128 },
+ { &hf_rrc_dl_HSPDSCH_Information_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_HSPDSCH_Information_r9 },
+ { &hf_rrc_dl_CommonInformation_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonInformation_r10 },
+ { &hf_rrc_dl_InformationPerRL_List_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_InformationPerRL_List_r8 },
+ { &hf_rrc_dl_SecondaryCellInfoFDD_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_SecondaryCellInfoFDD_r10 },
+ { &hf_rrc_additionalDLSecCellInfoListFDD, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_AdditionalDLSecCellInfoListFDD },
+ { &hf_rrc_controlChannelDRXInfo_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ControlChannelDRXInfo_TDD128_r8 },
+ { &hf_rrc_sps_Information_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SPS_Information_TDD128_r8 },
+ { &hf_rrc_mu_MIMO_Info_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MU_MIMO_Info_TDD128 },
+ { &hf_rrc_mbms_PL_ServiceRestrictInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MBMS_PL_ServiceRestrictInfo_r6 },
+ { &hf_rrc_cellDCHMeasOccasionInfo_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellDCHMeasOccasionInfo_TDD128_r9 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_CellUpdateConfirm_r10_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_CellUpdateConfirm_r10_IEs, CellUpdateConfirm_r10_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_20_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_20, T_nonCriticalExtensions_20_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_r10_01_sequence[] = {
+ { &hf_rrc_cellUpdateConfirm_r10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellUpdateConfirm_r10_IEs },
+ { &hf_rrc_cellUpdateConfirm_r10_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
+ { &hf_rrc_nonCriticalExtensions_20, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_20 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_r10_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_r10_01, T_r10_01_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_criticalExtensions_16_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_16, T_criticalExtensions_16_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_criticalExtensions_15_vals[] = {
+ { 0, "r10" },
+ { 1, "criticalExtensions" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_criticalExtensions_15_choice[] = {
+ { 0, &hf_rrc_r10_01 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r10_01 },
+ { 1, &hf_rrc_criticalExtensions_16, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_16 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_15, T_criticalExtensions_15_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_criticalExtensions_14_vals[] = {
{ 0, "r9" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_13_choice[] = {
+static const per_choice_t T_criticalExtensions_14_choice[] = {
{ 0, &hf_rrc_r9_01 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r9_01 },
- { 1, &hf_rrc_criticalExtensions_14, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_14 },
+ { 1, &hf_rrc_criticalExtensions_15, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_15 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_13, T_criticalExtensions_13_choice,
+ ett_rrc_T_criticalExtensions_14, T_criticalExtensions_14_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_12_vals[] = {
+static const value_string rrc_T_criticalExtensions_13_vals[] = {
{ 0, "r8" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_12_choice[] = {
+static const per_choice_t T_criticalExtensions_13_choice[] = {
{ 0, &hf_rrc_r8_01 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r8_01 },
- { 1, &hf_rrc_criticalExtensions_13, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_13 },
+ { 1, &hf_rrc_criticalExtensions_14, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_14 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_12, T_criticalExtensions_12_choice,
+ ett_rrc_T_criticalExtensions_13, T_criticalExtensions_13_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_11_vals[] = {
+static const value_string rrc_T_criticalExtensions_12_vals[] = {
{ 0, "r7" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_11_choice[] = {
+static const per_choice_t T_criticalExtensions_12_choice[] = {
{ 0, &hf_rrc_r7_01 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r7_01 },
- { 1, &hf_rrc_criticalExtensions_12, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_12 },
+ { 1, &hf_rrc_criticalExtensions_13, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_13 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_11, T_criticalExtensions_11_choice,
+ ett_rrc_T_criticalExtensions_12, T_criticalExtensions_12_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_10_vals[] = {
+static const value_string rrc_T_criticalExtensions_11_vals[] = {
{ 0, "r6" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_10_choice[] = {
+static const per_choice_t T_criticalExtensions_11_choice[] = {
{ 0, &hf_rrc_r6_01 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r6_01 },
- { 1, &hf_rrc_criticalExtensions_11, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_11 },
+ { 1, &hf_rrc_criticalExtensions_12, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_12 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_10, T_criticalExtensions_10_choice,
+ ett_rrc_T_criticalExtensions_11, T_criticalExtensions_11_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_09_vals[] = {
+static const value_string rrc_T_criticalExtensions_10_vals[] = {
{ 0, "r5" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_09_choice[] = {
+static const per_choice_t T_criticalExtensions_10_choice[] = {
{ 0, &hf_rrc_r5 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r5 },
- { 1, &hf_rrc_criticalExtensions_10, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_10 },
+ { 1, &hf_rrc_criticalExtensions_11, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_11 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_09, T_criticalExtensions_09_choice,
+ ett_rrc_T_criticalExtensions_10, T_criticalExtensions_10_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_08_vals[] = {
+static const value_string rrc_T_criticalExtensions_09_vals[] = {
{ 0, "r4" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_08_choice[] = {
+static const per_choice_t T_criticalExtensions_09_choice[] = {
{ 0, &hf_rrc_r4 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r4 },
- { 1, &hf_rrc_criticalExtensions_09, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_09 },
+ { 1, &hf_rrc_criticalExtensions_10, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_10 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_08, T_criticalExtensions_08_choice,
+ ett_rrc_T_criticalExtensions_09, T_criticalExtensions_09_choice,
NULL);
return offset;
@@ -48869,7 +51078,7 @@ dissect_rrc_T_criticalExtensions_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_later_than_r3_03_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_08, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_08 },
+ { &hf_rrc_criticalExtensions_09, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_09 },
{ NULL, 0, 0, NULL }
};
@@ -48896,7 +51105,7 @@ static const per_choice_t CellUpdateConfirm_choice[] = {
static int
dissect_rrc_CellUpdateConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 157 "../../asn1/rrc/rrc.cnf"
+#line 194 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "CellUpdateConfirm");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_CellUpdateConfirm, CellUpdateConfirm_choice,
@@ -48964,14 +51173,14 @@ dissect_rrc_CounterCheck_r3_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
}
-static const per_sequence_t T_nonCriticalExtensions_27_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_30_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_27(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_30(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_27, T_nonCriticalExtensions_27_sequence);
+ ett_rrc_T_nonCriticalExtensions_30, T_nonCriticalExtensions_30_sequence);
return offset;
}
@@ -48979,7 +51188,7 @@ dissect_rrc_T_nonCriticalExtensions_27(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_laterNonCriticalExtensions_09_sequence[] = {
{ &hf_rrc_counterCheck_r3_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_27, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_27 },
+ { &hf_rrc_nonCriticalExtensions_30, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_30 },
{ NULL, 0, 0, NULL }
};
@@ -49007,14 +51216,14 @@ dissect_rrc_T_r3_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_22_sequence[] = {
+static const per_sequence_t T_criticalExtensions_25_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_22(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_25(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_22, T_criticalExtensions_22_sequence);
+ ett_rrc_T_criticalExtensions_25, T_criticalExtensions_25_sequence);
return offset;
}
@@ -49022,7 +51231,7 @@ dissect_rrc_T_criticalExtensions_22(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_later_than_r3_05_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_22, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_22 },
+ { &hf_rrc_criticalExtensions_25, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_25 },
{ NULL, 0, 0, NULL }
};
@@ -49049,7 +51258,7 @@ static const per_choice_t CounterCheck_choice[] = {
static int
dissect_rrc_CounterCheck(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 161 "../../asn1/rrc/rrc.cnf"
+#line 198 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "CounterCheck");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_CounterCheck, CounterCheck_choice,
@@ -49065,7 +51274,7 @@ dissect_rrc_CounterCheck(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
static int
dissect_rrc_NAS_Message(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 107 "../../asn1/rrc/rrc.cnf"
+#line 144 "../../asn1/rrc/rrc.cnf"
tvbuff_t *nas_message_tvb=NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -49097,14 +51306,14 @@ dissect_rrc_DownlinkDirectTransfer_r3_IEs(tvbuff_t *tvb _U_, int offset _U_, asn
}
-static const per_sequence_t T_nonCriticalExtensions_29_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_32_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_29(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_29, T_nonCriticalExtensions_29_sequence);
+ ett_rrc_T_nonCriticalExtensions_32, T_nonCriticalExtensions_32_sequence);
return offset;
}
@@ -49112,7 +51321,7 @@ dissect_rrc_T_nonCriticalExtensions_29(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_laterNonCriticalExtensions_11_sequence[] = {
{ &hf_rrc_downlinkDirectTransfer_r3_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_29, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_29 },
+ { &hf_rrc_nonCriticalExtensions_32, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_32 },
{ NULL, 0, 0, NULL }
};
@@ -49140,14 +51349,14 @@ dissect_rrc_T_r3_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_23_sequence[] = {
+static const per_sequence_t T_criticalExtensions_26_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_23(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_26(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_23, T_criticalExtensions_23_sequence);
+ ett_rrc_T_criticalExtensions_26, T_criticalExtensions_26_sequence);
return offset;
}
@@ -49155,7 +51364,7 @@ dissect_rrc_T_criticalExtensions_23(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_later_than_r3_06_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_23, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_23 },
+ { &hf_rrc_criticalExtensions_26, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_26 },
{ NULL, 0, 0, NULL }
};
@@ -49182,7 +51391,7 @@ static const per_choice_t DownlinkDirectTransfer_choice[] = {
static int
dissect_rrc_DownlinkDirectTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 169 "../../asn1/rrc/rrc.cnf"
+#line 206 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "DownlinkDirectTransfer");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_DownlinkDirectTransfer, DownlinkDirectTransfer_choice,
@@ -49201,7 +51410,7 @@ static const per_sequence_t T_single_GSM_Message_r3_sequence[] = {
static int
dissect_rrc_T_single_GSM_Message_r3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 457 "../../asn1/rrc/rrc.cnf"
+#line 510 "../../asn1/rrc/rrc.cnf"
tvbuff_t *gsm_message_tvb=NULL;
guint bits_remaining, whole_octets_remaining;
@@ -49227,7 +51436,7 @@ dissect_rrc_T_single_GSM_Message_r3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static int
dissect_rrc_GSM_MessageList_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 449 "../../asn1/rrc/rrc.cnf"
+#line 502 "../../asn1/rrc/rrc.cnf"
tvbuff_t *gsm_messagelist_tvb=NULL;
offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
@@ -49347,30 +51556,6 @@ dissect_rrc_HandoverFromUTRANCommand_GSM_v690ext_IEs(tvbuff_t *tvb _U_, int offs
}
-
-static int
-dissect_rrc_BIT_STRING_SIZE_128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
- 128, 128, FALSE, NULL);
-
- return offset;
-}
-
-
-static const per_sequence_t SR_VCC_Info_sequence[] = {
- { &hf_rrc_nonce , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING_SIZE_128 },
- { NULL, 0, 0, NULL }
-};
-
-static int
-dissect_rrc_SR_VCC_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_SR_VCC_Info, SR_VCC_Info_sequence);
-
- return offset;
-}
-
-
static const per_sequence_t SR_VCC_SecurityRABInfo_v860ext_sequence[] = {
{ &hf_rrc_sr_vcc_Info , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SR_VCC_Info },
{ &hf_rrc_rab_InfoReplace , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RAB_InfoReplace },
@@ -49400,14 +51585,14 @@ dissect_rrc_HandoverFromUTRANCommand_GSM_v860ext_IEs(tvbuff_t *tvb _U_, int offs
}
-static const per_sequence_t T_nonCriticalExtensions_41_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_45_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_41(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_45(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_41, T_nonCriticalExtensions_41_sequence);
+ ett_rrc_T_nonCriticalExtensions_45, T_nonCriticalExtensions_45_sequence);
return offset;
}
@@ -49415,7 +51600,7 @@ dissect_rrc_T_nonCriticalExtensions_41(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v860NonCriticalExtensions_04_sequence[] = {
{ &hf_rrc_handoverFromUTRANCommand_GSM_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HandoverFromUTRANCommand_GSM_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_41, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_41 },
+ { &hf_rrc_nonCriticalExtensions_45, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_45 },
{ NULL, 0, 0, NULL }
};
@@ -49511,7 +51696,7 @@ static const per_sequence_t T_single_GSM_Message_r6_sequence[] = {
static int
dissect_rrc_T_single_GSM_Message_r6(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 472 "../../asn1/rrc/rrc.cnf"
+#line 525 "../../asn1/rrc/rrc.cnf"
tvbuff_t *gsm_message_tvb=NULL;
guint bits_remaining, whole_octets_remaining;
@@ -49610,14 +51795,14 @@ dissect_rrc_HandoverFromUTRANCommand_GSM_r6_IEs(tvbuff_t *tvb _U_, int offset _U
}
-static const per_sequence_t T_nonCriticalExtensions_42_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_46_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_42(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_46(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_42, T_nonCriticalExtensions_42_sequence);
+ ett_rrc_T_nonCriticalExtensions_46, T_nonCriticalExtensions_46_sequence);
return offset;
}
@@ -49625,7 +51810,7 @@ dissect_rrc_T_nonCriticalExtensions_42(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v860NonCriticalExtensions_05_sequence[] = {
{ &hf_rrc_handoverFromUTRANCommand_GSM_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HandoverFromUTRANCommand_GSM_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_42, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_42 },
+ { &hf_rrc_nonCriticalExtensions_46, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_46 },
{ NULL, 0, 0, NULL }
};
@@ -49654,35 +51839,35 @@ dissect_rrc_T_r6_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_32_sequence[] = {
+static const per_sequence_t T_criticalExtensions_36_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_36(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_32, T_criticalExtensions_32_sequence);
+ ett_rrc_T_criticalExtensions_36, T_criticalExtensions_36_sequence);
return offset;
}
-static const value_string rrc_T_criticalExtensions_31_vals[] = {
+static const value_string rrc_T_criticalExtensions_35_vals[] = {
{ 0, "r6" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_31_choice[] = {
+static const per_choice_t T_criticalExtensions_35_choice[] = {
{ 0, &hf_rrc_r6_04 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r6_04 },
- { 1, &hf_rrc_criticalExtensions_32, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_32 },
+ { 1, &hf_rrc_criticalExtensions_36, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_36 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_35(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_31, T_criticalExtensions_31_choice,
+ ett_rrc_T_criticalExtensions_35, T_criticalExtensions_35_choice,
NULL);
return offset;
@@ -49691,7 +51876,7 @@ dissect_rrc_T_criticalExtensions_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_later_than_r3_07_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_31, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_31 },
+ { &hf_rrc_criticalExtensions_35, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_35 },
{ NULL, 0, 0, NULL }
};
@@ -49718,7 +51903,7 @@ static const per_choice_t HandoverFromUTRANCommand_GSM_choice[] = {
static int
dissect_rrc_HandoverFromUTRANCommand_GSM(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 185 "../../asn1/rrc/rrc.cnf"
+#line 230 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverFromUTRANCommand-GSM");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_HandoverFromUTRANCommand_GSM, HandoverFromUTRANCommand_GSM_choice,
@@ -49787,14 +51972,14 @@ dissect_rrc_HandoverFromUTRANCommand_CDMA2000_r3_IEs(tvbuff_t *tvb _U_, int offs
}
-static const per_sequence_t T_nonCriticalExtensions_44_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_48_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_44(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_48(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_44, T_nonCriticalExtensions_44_sequence);
+ ett_rrc_T_nonCriticalExtensions_48, T_nonCriticalExtensions_48_sequence);
return offset;
}
@@ -49802,7 +51987,7 @@ dissect_rrc_T_nonCriticalExtensions_44(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_laterNonCriticalExtensions_15_sequence[] = {
{ &hf_rrc_handoverFromUTRANCommand_CDMA2000_r3_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_44, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_44 },
+ { &hf_rrc_nonCriticalExtensions_48, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_48 },
{ NULL, 0, 0, NULL }
};
@@ -49830,14 +52015,14 @@ dissect_rrc_T_r3_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_34_sequence[] = {
+static const per_sequence_t T_criticalExtensions_38_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_34(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_38(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_34, T_criticalExtensions_34_sequence);
+ ett_rrc_T_criticalExtensions_38, T_criticalExtensions_38_sequence);
return offset;
}
@@ -49845,7 +52030,7 @@ dissect_rrc_T_criticalExtensions_34(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_later_than_r3_08_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_34, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_34 },
+ { &hf_rrc_criticalExtensions_38, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_38 },
{ NULL, 0, 0, NULL }
};
@@ -49872,7 +52057,7 @@ static const per_choice_t HandoverFromUTRANCommand_CDMA2000_choice[] = {
static int
dissect_rrc_HandoverFromUTRANCommand_CDMA2000(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 189 "../../asn1/rrc/rrc.cnf"
+#line 234 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverFromUTRANCommand-CDMA2000");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_HandoverFromUTRANCommand_CDMA2000, HandoverFromUTRANCommand_CDMA2000_choice,
@@ -50007,7 +52192,7 @@ dissect_rrc_PrimaryCPICH_TX_Power(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_fdd_120_sequence[] = {
+static const per_sequence_t T_fdd_123_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCPICH_Info },
{ &hf_rrc_primaryCPICH_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCPICH_TX_Power },
{ &hf_rrc_readSFN_Indicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
@@ -50016,9 +52201,9 @@ static const per_sequence_t T_fdd_120_sequence[] = {
};
static int
-dissect_rrc_T_fdd_120(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_123(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_120, T_fdd_120_sequence);
+ ett_rrc_T_fdd_123, T_fdd_123_sequence);
return offset;
}
@@ -50053,7 +52238,7 @@ dissect_rrc_TimeslotInfoList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_tdd_73_sequence[] = {
+static const per_sequence_t T_tdd_76_sequence[] = {
{ &hf_rrc_primaryCCPCH_Info_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCCPCH_Info },
{ &hf_rrc_primaryCCPCH_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCCPCH_TX_Power },
{ &hf_rrc_timeslotInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TimeslotInfoList },
@@ -50062,30 +52247,30 @@ static const per_sequence_t T_tdd_73_sequence[] = {
};
static int
-dissect_rrc_T_tdd_73(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_76(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_73, T_tdd_73_sequence);
+ ett_rrc_T_tdd_76, T_tdd_76_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_83_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_86_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_83_choice[] = {
- { 0, &hf_rrc_fdd_123 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_120 },
- { 1, &hf_rrc_tdd_79 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_73 },
+static const per_choice_t T_modeSpecificInfo_86_choice[] = {
+ { 0, &hf_rrc_fdd_126 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_123 },
+ { 1, &hf_rrc_tdd_82 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_76 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_83(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_86(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_83, T_modeSpecificInfo_83_choice,
+ ett_rrc_T_modeSpecificInfo_86, T_modeSpecificInfo_86_choice,
NULL);
return offset;
@@ -50095,7 +52280,7 @@ dissect_rrc_T_modeSpecificInfo_83(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t CellInfo_sequence[] = {
{ &hf_rrc_cellIndividualOffset, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellIndividualOffset },
{ &hf_rrc_referenceTimeDifferenceToCell, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ReferenceTimeDifferenceToCell },
- { &hf_rrc_modeSpecificInfo_83, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_83 },
+ { &hf_rrc_modeSpecificInfo_86, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_86 },
{ NULL, 0, 0, NULL }
};
@@ -50215,15 +52400,15 @@ dissect_rrc_IntraFreqMeasQuantity_FDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
}
-static const per_sequence_t T_fdd_143_sequence[] = {
+static const per_sequence_t T_fdd_146_sequence[] = {
{ &hf_rrc_intraFreqMeasQuantity_FDD, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_IntraFreqMeasQuantity_FDD },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_143(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_146(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_143, T_fdd_143_sequence);
+ ett_rrc_T_fdd_146, T_fdd_146_sequence);
return offset;
}
@@ -50261,36 +52446,36 @@ dissect_rrc_IntraFreqMeasQuantity_TDDList(tvbuff_t *tvb _U_, int offset _U_, asn
}
-static const per_sequence_t T_tdd_93_sequence[] = {
+static const per_sequence_t T_tdd_96_sequence[] = {
{ &hf_rrc_intraFreqMeasQuantity_TDDList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_IntraFreqMeasQuantity_TDDList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_93(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_96(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_93, T_tdd_93_sequence);
+ ett_rrc_T_tdd_96, T_tdd_96_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_106_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_109_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_106_choice[] = {
- { 0, &hf_rrc_fdd_149 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_143 },
- { 1, &hf_rrc_tdd_101 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_93 },
+static const per_choice_t T_modeSpecificInfo_109_choice[] = {
+ { 0, &hf_rrc_fdd_152 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_146 },
+ { 1, &hf_rrc_tdd_104 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_96 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_106(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_109(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_106, T_modeSpecificInfo_106_choice,
+ ett_rrc_T_modeSpecificInfo_109, T_modeSpecificInfo_109_choice,
NULL);
return offset;
@@ -50299,7 +52484,7 @@ dissect_rrc_T_modeSpecificInfo_106(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t IntraFreqMeasQuantity_sequence[] = {
{ &hf_rrc_filterCoefficient, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FilterCoefficient },
- { &hf_rrc_modeSpecificInfo_106, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_106 },
+ { &hf_rrc_modeSpecificInfo_109, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_109 },
{ NULL, 0, 0, NULL }
};
@@ -50329,7 +52514,7 @@ dissect_rrc_SFN_SFN_OTD_Type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_fdd_129_sequence[] = {
+static const per_sequence_t T_fdd_132_sequence[] = {
{ &hf_rrc_cpich_Ec_N0_reportingIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_cpich_RSCP_reportingIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_pathloss_reportingIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
@@ -50337,15 +52522,15 @@ static const per_sequence_t T_fdd_129_sequence[] = {
};
static int
-dissect_rrc_T_fdd_129(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_132(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_129, T_fdd_129_sequence);
+ ett_rrc_T_fdd_132, T_fdd_132_sequence);
return offset;
}
-static const per_sequence_t T_tdd_82_sequence[] = {
+static const per_sequence_t T_tdd_85_sequence[] = {
{ &hf_rrc_timeslotISCP_reportingIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_proposedTGSN_ReportingRequired, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_primaryCCPCH_RSCP_reportingIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
@@ -50354,30 +52539,30 @@ static const per_sequence_t T_tdd_82_sequence[] = {
};
static int
-dissect_rrc_T_tdd_82(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_85(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_82, T_tdd_82_sequence);
+ ett_rrc_T_tdd_85, T_tdd_85_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_92_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_95_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_92_choice[] = {
- { 0, &hf_rrc_fdd_134 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_129 },
- { 1, &hf_rrc_tdd_89 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_82 },
+static const per_choice_t T_modeSpecificInfo_95_choice[] = {
+ { 0, &hf_rrc_fdd_137 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_132 },
+ { 1, &hf_rrc_tdd_92 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_85 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_92(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_95(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_92, T_modeSpecificInfo_92_choice,
+ ett_rrc_T_modeSpecificInfo_95, T_modeSpecificInfo_95_choice,
NULL);
return offset;
@@ -50385,10 +52570,10 @@ dissect_rrc_T_modeSpecificInfo_92(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t CellReportingQuantities_sequence[] = {
- { &hf_rrc_dummy_44 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SFN_SFN_OTD_Type },
+ { &hf_rrc_dummy_48 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SFN_SFN_OTD_Type },
{ &hf_rrc_cellIdentity_reportingIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_cellSynchronisationInfoReportingIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
- { &hf_rrc_modeSpecificInfo_92, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_92 },
+ { &hf_rrc_modeSpecificInfo_95, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_95 },
{ NULL, 0, 0, NULL }
};
@@ -50484,8 +52669,8 @@ static const value_string rrc_ForbiddenAffectCell_vals[] = {
};
static const per_choice_t ForbiddenAffectCell_choice[] = {
- { 0, &hf_rrc_fdd_143 , ASN1_NO_EXTENSIONS , dissect_rrc_PrimaryCPICH_Info },
- { 1, &hf_rrc_tdd_40 , ASN1_NO_EXTENSIONS , dissect_rrc_PrimaryCCPCH_Info },
+ { 0, &hf_rrc_fdd_146 , ASN1_NO_EXTENSIONS , dissect_rrc_PrimaryCPICH_Info },
+ { 1, &hf_rrc_tdd_43 , ASN1_NO_EXTENSIONS , dissect_rrc_PrimaryCCPCH_Info },
{ 0, NULL, 0, NULL }
};
@@ -51057,7 +53242,7 @@ static const per_sequence_t IntraFrequencyMeasurement_sequence[] = {
{ &hf_rrc_intraFreqMeasQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqMeasQuantity },
{ &hf_rrc_intraFreqReportingQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqReportingQuantity },
{ &hf_rrc_measurementValidity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementValidity },
- { &hf_rrc_reportCriteria_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqReportCriteria },
+ { &hf_rrc_reportCriteria_07, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqReportCriteria },
{ NULL, 0, 0, NULL }
};
@@ -51208,15 +53393,15 @@ dissect_rrc_FreqQualityEstimateQuantity_FDD(tvbuff_t *tvb _U_, int offset _U_, a
}
-static const per_sequence_t T_fdd_139_sequence[] = {
+static const per_sequence_t T_fdd_142_sequence[] = {
{ &hf_rrc_freqQualityEstimateQuantity_FDD, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_FreqQualityEstimateQuantity_FDD },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_139(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_142(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_139, T_fdd_139_sequence);
+ ett_rrc_T_fdd_142, T_fdd_142_sequence);
return offset;
}
@@ -51237,36 +53422,36 @@ dissect_rrc_FreqQualityEstimateQuantity_TDD(tvbuff_t *tvb _U_, int offset _U_, a
}
-static const per_sequence_t T_tdd_90_sequence[] = {
+static const per_sequence_t T_tdd_93_sequence[] = {
{ &hf_rrc_freqQualityEstimateQuantity_TDD, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_FreqQualityEstimateQuantity_TDD },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_90(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_93(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_90, T_tdd_90_sequence);
+ ett_rrc_T_tdd_93, T_tdd_93_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_102_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_105_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_102_choice[] = {
- { 0, &hf_rrc_fdd_145 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_139 },
- { 1, &hf_rrc_tdd_98 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_90 },
+static const per_choice_t T_modeSpecificInfo_105_choice[] = {
+ { 0, &hf_rrc_fdd_148 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_142 },
+ { 1, &hf_rrc_tdd_101 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_93 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_102(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_105(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_102, T_modeSpecificInfo_102_choice,
+ ett_rrc_T_modeSpecificInfo_105, T_modeSpecificInfo_105_choice,
NULL);
return offset;
@@ -51275,7 +53460,7 @@ dissect_rrc_T_modeSpecificInfo_102(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t T_interFreqReportingCriteria_sequence[] = {
{ &hf_rrc_filterCoefficient, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FilterCoefficient },
- { &hf_rrc_modeSpecificInfo_102, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_102 },
+ { &hf_rrc_modeSpecificInfo_105, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_105 },
{ NULL, 0, 0, NULL }
};
@@ -51377,7 +53562,7 @@ static const value_string rrc_UE_AutonomousUpdateMode_vals[] = {
};
static const per_choice_t UE_AutonomousUpdateMode_choice[] = {
- { 0, &hf_rrc_dummy_19 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 0, &hf_rrc_dummy_23 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 1, &hf_rrc_onWithNoReporting, ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 2, &hf_rrc_dummy2_12 , ASN1_NO_EXTENSIONS , dissect_rrc_RL_InformationLists },
{ 0, NULL, 0, NULL }
@@ -51443,7 +53628,7 @@ dissect_rrc_NonUsedFreqParameterList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
static const per_sequence_t Event2a_sequence[] = {
- { &hf_rrc_dummy_45 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_Threshold },
+ { &hf_rrc_dummy_49 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_Threshold },
{ &hf_rrc_usedFreqW , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_W },
{ &hf_rrc_hysteresis , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HysteresisInterFreq },
{ &hf_rrc_timeToTrigger , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TimeToTrigger },
@@ -51835,30 +54020,30 @@ dissect_rrc_Q_RxlevMin(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
}
-static const per_sequence_t T_fdd_131_sequence[] = {
+static const per_sequence_t T_fdd_134_sequence[] = {
{ &hf_rrc_q_QualMin , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Q_QualMin },
{ &hf_rrc_q_RxlevMin , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Q_RxlevMin },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_131(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_134(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_131, T_fdd_131_sequence);
+ ett_rrc_T_fdd_134, T_fdd_134_sequence);
return offset;
}
-static const per_sequence_t T_tdd_84_sequence[] = {
+static const per_sequence_t T_tdd_87_sequence[] = {
{ &hf_rrc_q_RxlevMin , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Q_RxlevMin },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_84(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_87(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_84, T_tdd_84_sequence);
+ ett_rrc_T_tdd_87, T_tdd_87_sequence);
return offset;
}
@@ -51878,24 +54063,24 @@ dissect_rrc_T_gsm_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr
}
-static const value_string rrc_T_modeSpecificInfo_94_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_97_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 2, "gsm" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_94_choice[] = {
- { 0, &hf_rrc_fdd_136 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_131 },
- { 1, &hf_rrc_tdd_91 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_84 },
+static const per_choice_t T_modeSpecificInfo_97_choice[] = {
+ { 0, &hf_rrc_fdd_139 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_134 },
+ { 1, &hf_rrc_tdd_94 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_87 },
{ 2, &hf_rrc_gsm_03 , ASN1_NO_EXTENSIONS , dissect_rrc_T_gsm_03 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_94(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_97(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_94, T_modeSpecificInfo_94_choice,
+ ett_rrc_T_modeSpecificInfo_97, T_modeSpecificInfo_97_choice,
NULL);
return offset;
@@ -51907,7 +54092,7 @@ static const per_sequence_t CellSelectReselectInfoSIB_11_12_sequence[] = {
{ &hf_rrc_q_Offset2S_N , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Q_OffsetS_N },
{ &hf_rrc_maxAllowedUL_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MaxAllowedUL_TX_Power },
{ &hf_rrc_hcs_NeighbouringCellInformation_RSCP, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HCS_NeighbouringCellInformation_RSCP },
- { &hf_rrc_modeSpecificInfo_94, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_94 },
+ { &hf_rrc_modeSpecificInfo_97, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_97 },
{ NULL, 0, 0, NULL }
};
@@ -51936,7 +54121,7 @@ static const per_sequence_t T_gsm_13_sequence[] = {
{ &hf_rrc_bsic , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BSIC },
{ &hf_rrc_frequency_band , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_Frequency_Band },
{ &hf_rrc_bcch_ARFCN , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BCCH_ARFCN },
- { &hf_rrc_dummy_19 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NULL },
+ { &hf_rrc_dummy_23 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NULL },
{ NULL, 0, 0, NULL }
};
@@ -52170,7 +54355,7 @@ dissect_rrc_InterRATMeasQuantity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
static const per_sequence_t T_gsm_11_sequence[] = {
- { &hf_rrc_dummy_23 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
+ { &hf_rrc_dummy_27 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_dummy2_05 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_gsm_Carrier_RSSI, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ NULL, 0, 0, NULL }
@@ -52371,7 +54556,7 @@ static const per_sequence_t InterRATMeasurement_sequence[] = {
{ &hf_rrc_interRATCellInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRATCellInfoList },
{ &hf_rrc_interRATMeasQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRATMeasQuantity },
{ &hf_rrc_interRATReportingQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRATReportingQuantity },
- { &hf_rrc_reportCriteria_05, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InterRATReportCriteria },
+ { &hf_rrc_reportCriteria_06, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InterRATReportCriteria },
{ NULL, 0, 0, NULL }
};
@@ -52660,7 +54845,7 @@ static const value_string rrc_UE_Positioning_ReportCriteria_vals[] = {
static const per_choice_t UE_Positioning_ReportCriteria_choice[] = {
{ 0, &hf_rrc_ue_positioning_ReportingCriteria, ASN1_NO_EXTENSIONS , dissect_rrc_UE_Positioning_EventParamList },
{ 1, &hf_rrc_periodicalReportingCriteria, ASN1_NO_EXTENSIONS , dissect_rrc_PeriodicalReportingCriteria },
- { 2, &hf_rrc_noReporting_01 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 2, &hf_rrc_noReporting_02 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -52674,50 +54859,50 @@ dissect_rrc_UE_Positioning_ReportCriteria(tvbuff_t *tvb _U_, int offset _U_, asn
}
-static const per_sequence_t T_fdd_160_sequence[] = {
+static const per_sequence_t T_fdd_165_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_160(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_165(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_160, T_fdd_160_sequence);
+ ett_rrc_T_fdd_165, T_fdd_165_sequence);
return offset;
}
-static const per_sequence_t T_tdd_111_sequence[] = {
+static const per_sequence_t T_tdd_116_sequence[] = {
{ &hf_rrc_cellAndChannelIdentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellAndChannelIdentity },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_111(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_116(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_111, T_tdd_111_sequence);
+ ett_rrc_T_tdd_116, T_tdd_116_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_127_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_133_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_127_choice[] = {
- { 0, &hf_rrc_fdd_166 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_160 },
- { 1, &hf_rrc_tdd_119 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_111 },
+static const per_choice_t T_modeSpecificInfo_133_choice[] = {
+ { 0, &hf_rrc_fdd_171 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_165 },
+ { 1, &hf_rrc_tdd_124 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_116 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_133(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_127, T_modeSpecificInfo_127_choice,
+ ett_rrc_T_modeSpecificInfo_133, T_modeSpecificInfo_133_choice,
NULL);
return offset;
@@ -52774,7 +54959,7 @@ dissect_rrc_T_positioningMode_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
static const per_sequence_t UE_Positioning_OTDOA_ReferenceCellInfo_sequence[] = {
{ &hf_rrc_sfn , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_0_4095 },
- { &hf_rrc_modeSpecificInfo_127, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_127 },
+ { &hf_rrc_modeSpecificInfo_133, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_133 },
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
{ &hf_rrc_positioningMode_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_positioningMode_03 },
{ &hf_rrc_ue_positioning_IPDL_Paremeters, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_IPDL_Parameters },
@@ -52790,50 +54975,50 @@ dissect_rrc_UE_Positioning_OTDOA_ReferenceCellInfo(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_fdd_156_sequence[] = {
+static const per_sequence_t T_fdd_161_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_156(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_161(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_156, T_fdd_156_sequence);
+ ett_rrc_T_fdd_161, T_fdd_161_sequence);
return offset;
}
-static const per_sequence_t T_tdd_107_sequence[] = {
+static const per_sequence_t T_tdd_112_sequence[] = {
{ &hf_rrc_cellAndChannelIdentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellAndChannelIdentity },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_107(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_112(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_107, T_tdd_107_sequence);
+ ett_rrc_T_tdd_112, T_tdd_112_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_123_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_129_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_123_choice[] = {
- { 0, &hf_rrc_fdd_162 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_156 },
- { 1, &hf_rrc_tdd_115 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_107 },
+static const per_choice_t T_modeSpecificInfo_129_choice[] = {
+ { 0, &hf_rrc_fdd_167 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_161 },
+ { 1, &hf_rrc_tdd_120 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_112 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_123(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_129(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_123, T_modeSpecificInfo_123_choice,
+ ett_rrc_T_modeSpecificInfo_129, T_modeSpecificInfo_129_choice,
NULL);
return offset;
@@ -52889,7 +55074,7 @@ dissect_rrc_T_positioningMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
static const per_sequence_t UE_Positioning_OTDOA_NeighbourCellInfo_sequence[] = {
- { &hf_rrc_modeSpecificInfo_123, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_123 },
+ { &hf_rrc_modeSpecificInfo_129, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_129 },
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
{ &hf_rrc_ue_positioning_IPDL_Paremeters, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_IPDL_Parameters },
{ &hf_rrc_sfn_SFN_RelTimeDifference, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SFN_SFN_RelTimeDifference1 },
@@ -52939,7 +55124,7 @@ dissect_rrc_UE_Positioning_OTDOA_AssistanceData(tvbuff_t *tvb _U_, int offset _U
static const per_sequence_t UE_Positioning_Measurement_sequence[] = {
{ &hf_rrc_ue_positioning_ReportingQuantity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_ReportingQuantity },
- { &hf_rrc_reportCriteria_16, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_ReportCriteria },
+ { &hf_rrc_reportCriteria_17, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_ReportCriteria },
{ &hf_rrc_ue_positioning_OTDOA_AssistanceData, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_OTDOA_AssistanceData },
{ &hf_rrc_ue_positioning_GPS_AssistanceData, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_AssistanceData },
{ NULL, 0, 0, NULL }
@@ -53088,6 +55273,8 @@ static const value_string rrc_TrafficVolumeThreshold_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_TrafficVolumeThreshold_vals_ext = VALUE_STRING_EXT_INIT(rrc_TrafficVolumeThreshold_vals);
+
static int
dissect_rrc_TrafficVolumeThreshold(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -53225,7 +55412,7 @@ static const value_string rrc_TrafficVolumeReportCriteria_vals[] = {
static const per_choice_t TrafficVolumeReportCriteria_choice[] = {
{ 0, &hf_rrc_trafficVolumeReportingCriteria, ASN1_NO_EXTENSIONS , dissect_rrc_TrafficVolumeReportingCriteria },
{ 1, &hf_rrc_periodicalReportingCriteria, ASN1_NO_EXTENSIONS , dissect_rrc_PeriodicalReportingCriteria },
- { 2, &hf_rrc_noReporting_01 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 2, &hf_rrc_noReporting_02 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -53244,7 +55431,7 @@ static const per_sequence_t TrafficVolumeMeasurement_sequence[] = {
{ &hf_rrc_trafficVolumeMeasQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TrafficVolumeMeasQuantity },
{ &hf_rrc_trafficVolumeReportingQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TrafficVolumeReportingQuantity },
{ &hf_rrc_measurementValidity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementValidity },
- { &hf_rrc_reportCriteria_14, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TrafficVolumeReportCriteria },
+ { &hf_rrc_reportCriteria_15, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TrafficVolumeReportCriteria },
{ NULL, 0, 0, NULL }
};
@@ -53294,36 +55481,36 @@ dissect_rrc_SIR_TFCS_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
}
-static const per_sequence_t T_tdd_99_sequence[] = {
+static const per_sequence_t T_tdd_103_sequence[] = {
{ &hf_rrc_sir_TFCS_List , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SIR_TFCS_List },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_99(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_103(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_99, T_tdd_99_sequence);
+ ett_rrc_T_tdd_103, T_tdd_103_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_115_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_121_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_115_choice[] = {
- { 0, &hf_rrc_fdd_43 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 1, &hf_rrc_tdd_107 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_99 },
+static const per_choice_t T_modeSpecificInfo_121_choice[] = {
+ { 0, &hf_rrc_fdd_44 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_tdd_111 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_103 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_115(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_121(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_115, T_modeSpecificInfo_115_choice,
+ ett_rrc_T_modeSpecificInfo_121, T_modeSpecificInfo_121_choice,
NULL);
return offset;
@@ -53333,7 +55520,7 @@ dissect_rrc_T_modeSpecificInfo_115(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t QualityReportingQuantity_sequence[] = {
{ &hf_rrc_dl_TransChBLER , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_bler_dl_TransChIdList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BLER_TransChIdList },
- { &hf_rrc_modeSpecificInfo_115, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_115 },
+ { &hf_rrc_modeSpecificInfo_121, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_121 },
{ NULL, 0, 0, NULL }
};
@@ -53387,7 +55574,7 @@ static const value_string rrc_QualityReportCriteria_vals[] = {
static const per_choice_t QualityReportCriteria_choice[] = {
{ 0, &hf_rrc_qualityReportingCriteria, ASN1_NO_EXTENSIONS , dissect_rrc_QualityReportingCriteria },
{ 1, &hf_rrc_periodicalReportingCriteria, ASN1_NO_EXTENSIONS , dissect_rrc_PeriodicalReportingCriteria },
- { 2, &hf_rrc_noReporting_01 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 2, &hf_rrc_noReporting_02 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -53403,7 +55590,7 @@ dissect_rrc_QualityReportCriteria(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t QualityMeasurement_sequence[] = {
{ &hf_rrc_qualityReportingQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_QualityReportingQuantity },
- { &hf_rrc_reportCriteria_11, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_QualityReportCriteria },
+ { &hf_rrc_reportCriteria_12, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_QualityReportCriteria },
{ NULL, 0, 0, NULL }
};
@@ -53448,50 +55635,50 @@ dissect_rrc_UE_InternalMeasQuantity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
-static const per_sequence_t T_fdd_150_sequence[] = {
+static const per_sequence_t T_fdd_154_sequence[] = {
{ &hf_rrc_ue_RX_TX_TimeDifference, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_150(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_154(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_150, T_fdd_150_sequence);
+ ett_rrc_T_fdd_154, T_fdd_154_sequence);
return offset;
}
-static const per_sequence_t T_tdd_101_sequence[] = {
+static const per_sequence_t T_tdd_105_sequence[] = {
{ &hf_rrc_appliedTA_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_101(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_105(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_101, T_tdd_101_sequence);
+ ett_rrc_T_tdd_105, T_tdd_105_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_118_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_124_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_118_choice[] = {
- { 0, &hf_rrc_fdd_156 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_150 },
- { 1, &hf_rrc_tdd_109 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_101 },
+static const per_choice_t T_modeSpecificInfo_124_choice[] = {
+ { 0, &hf_rrc_fdd_160 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_154 },
+ { 1, &hf_rrc_tdd_113 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_105 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_118(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_124(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_118, T_modeSpecificInfo_118_choice,
+ ett_rrc_T_modeSpecificInfo_124, T_modeSpecificInfo_124_choice,
NULL);
return offset;
@@ -53500,7 +55687,7 @@ dissect_rrc_T_modeSpecificInfo_118(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t UE_InternalReportingQuantity_sequence[] = {
{ &hf_rrc_ue_TransmittedPower, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
- { &hf_rrc_modeSpecificInfo_118, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_118 },
+ { &hf_rrc_modeSpecificInfo_124, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_124 },
{ NULL, 0, 0, NULL }
};
@@ -53633,7 +55820,7 @@ static const value_string rrc_UE_InternalReportCriteria_vals[] = {
static const per_choice_t UE_InternalReportCriteria_choice[] = {
{ 0, &hf_rrc_ue_InternalReportingCriteria, ASN1_NO_EXTENSIONS , dissect_rrc_UE_InternalReportingCriteria },
{ 1, &hf_rrc_periodicalReportingCriteria, ASN1_NO_EXTENSIONS , dissect_rrc_PeriodicalReportingCriteria },
- { 2, &hf_rrc_noReporting_01 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 2, &hf_rrc_noReporting_02 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -53650,7 +55837,7 @@ dissect_rrc_UE_InternalReportCriteria(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
static const per_sequence_t UE_InternalMeasurement_sequence[] = {
{ &hf_rrc_ue_InternalMeasQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_InternalMeasQuantity },
{ &hf_rrc_ue_InternalReportingQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_InternalReportingQuantity },
- { &hf_rrc_reportCriteria_15, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_InternalReportCriteria },
+ { &hf_rrc_reportCriteria_16, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_InternalReportCriteria },
{ NULL, 0, 0, NULL }
};
@@ -53804,36 +55991,36 @@ dissect_rrc_TGPS_Reconfiguration_CFN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_activate_02_sequence[] = {
+static const per_sequence_t T_activate_03_sequence[] = {
{ &hf_rrc_tgcfn , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TGCFN },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_activate_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_activate_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_activate_02, T_activate_02_sequence);
+ ett_rrc_T_activate_03, T_activate_03_sequence);
return offset;
}
-static const value_string rrc_T_tgps_Status_02_vals[] = {
+static const value_string rrc_T_tgps_Status_03_vals[] = {
{ 0, "activate" },
{ 1, "deactivate" },
{ 0, NULL }
};
-static const per_choice_t T_tgps_Status_02_choice[] = {
- { 0, &hf_rrc_activate_02 , ASN1_NO_EXTENSIONS , dissect_rrc_T_activate_02 },
+static const per_choice_t T_tgps_Status_03_choice[] = {
+ { 0, &hf_rrc_activate_03 , ASN1_NO_EXTENSIONS , dissect_rrc_T_activate_03 },
{ 1, &hf_rrc_deactivate , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tgps_Status_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tgps_Status_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tgps_Status_02, T_tgps_Status_02_choice,
+ ett_rrc_T_tgps_Status_03, T_tgps_Status_03_choice,
NULL);
return offset;
@@ -53842,7 +56029,7 @@ dissect_rrc_T_tgps_Status_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static const per_sequence_t TGP_SequenceShort_sequence[] = {
{ &hf_rrc_tgpsi , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TGPSI },
- { &hf_rrc_tgps_Status_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tgps_Status_02 },
+ { &hf_rrc_tgps_Status_03 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tgps_Status_03 },
{ NULL, 0, 0, NULL }
};
@@ -54149,14 +56336,14 @@ dissect_rrc_MeasurementControl_v5b0ext_IEs(tvbuff_t *tvb _U_, int offset _U_, as
}
-static const per_sequence_t T_nonCriticalExtensions_49_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_53_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_49(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_53(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_49, T_nonCriticalExtensions_49_sequence);
+ ett_rrc_T_nonCriticalExtensions_53, T_nonCriticalExtensions_53_sequence);
return offset;
}
@@ -54164,7 +56351,7 @@ dissect_rrc_T_nonCriticalExtensions_49(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v5b0NonCriticalExtensions_sequence[] = {
{ &hf_rrc_measurementControl_v5b0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MeasurementControl_v5b0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_49, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_49 },
+ { &hf_rrc_nonCriticalExtensions_53, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_53 },
{ NULL, 0, 0, NULL }
};
@@ -54266,7 +56453,7 @@ dissect_rrc_T_r3_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_fdd_121_sequence[] = {
+static const per_sequence_t T_fdd_124_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCPICH_Info },
{ &hf_rrc_primaryCPICH_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCPICH_TX_Power },
{ &hf_rrc_readSFN_Indicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
@@ -54275,9 +56462,9 @@ static const per_sequence_t T_fdd_121_sequence[] = {
};
static int
-dissect_rrc_T_fdd_121(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_124(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_121, T_fdd_121_sequence);
+ ett_rrc_T_fdd_124, T_fdd_124_sequence);
return offset;
}
@@ -54332,8 +56519,8 @@ static const value_string rrc_TimeslotInfoList_r4_vals[] = {
};
static const per_choice_t TimeslotInfoList_r4_choice[] = {
- { 0, &hf_rrc_tdd384_43 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_maxTS_OF_TimeslotInfo },
- { 1, &hf_rrc_tdd128_59 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_maxTS_LCR_OF_TimeslotInfo_LCR_r4 },
+ { 0, &hf_rrc_tdd384_44 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_maxTS_OF_TimeslotInfo },
+ { 1, &hf_rrc_tdd128_63 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_maxTS_LCR_OF_TimeslotInfo_LCR_r4 },
{ 0, NULL, 0, NULL }
};
@@ -54347,7 +56534,7 @@ dissect_rrc_TimeslotInfoList_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
}
-static const per_sequence_t T_tdd_74_sequence[] = {
+static const per_sequence_t T_tdd_77_sequence[] = {
{ &hf_rrc_primaryCCPCH_Info_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCCPCH_Info_r4 },
{ &hf_rrc_primaryCCPCH_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCCPCH_TX_Power },
{ &hf_rrc_timeslotInfoList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TimeslotInfoList_r4 },
@@ -54356,30 +56543,30 @@ static const per_sequence_t T_tdd_74_sequence[] = {
};
static int
-dissect_rrc_T_tdd_74(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_77(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_74, T_tdd_74_sequence);
+ ett_rrc_T_tdd_77, T_tdd_77_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_84_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_87_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_84_choice[] = {
- { 0, &hf_rrc_fdd_124 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_121 },
- { 1, &hf_rrc_tdd_80 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_74 },
+static const per_choice_t T_modeSpecificInfo_87_choice[] = {
+ { 0, &hf_rrc_fdd_127 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_124 },
+ { 1, &hf_rrc_tdd_83 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_77 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_84(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_87(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_84, T_modeSpecificInfo_84_choice,
+ ett_rrc_T_modeSpecificInfo_87, T_modeSpecificInfo_87_choice,
NULL);
return offset;
@@ -54389,7 +56576,7 @@ dissect_rrc_T_modeSpecificInfo_84(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t CellInfo_r4_sequence[] = {
{ &hf_rrc_cellIndividualOffset, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellIndividualOffset },
{ &hf_rrc_referenceTimeDifferenceToCell, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ReferenceTimeDifferenceToCell },
- { &hf_rrc_modeSpecificInfo_84, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_84 },
+ { &hf_rrc_modeSpecificInfo_87, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_87 },
{ NULL, 0, 0, NULL }
};
@@ -54454,8 +56641,8 @@ static const value_string rrc_ForbiddenAffectCell_r4_vals[] = {
};
static const per_choice_t ForbiddenAffectCell_r4_choice[] = {
- { 0, &hf_rrc_fdd_143 , ASN1_NO_EXTENSIONS , dissect_rrc_PrimaryCPICH_Info },
- { 1, &hf_rrc_tdd_41 , ASN1_NO_EXTENSIONS , dissect_rrc_PrimaryCCPCH_Info_r4 },
+ { 0, &hf_rrc_fdd_146 , ASN1_NO_EXTENSIONS , dissect_rrc_PrimaryCPICH_Info },
+ { 1, &hf_rrc_tdd_44 , ASN1_NO_EXTENSIONS , dissect_rrc_PrimaryCCPCH_Info_r4 },
{ 0, NULL, 0, NULL }
};
@@ -54630,7 +56817,7 @@ static const per_sequence_t IntraFrequencyMeasurement_r4_sequence[] = {
{ &hf_rrc_intraFreqMeasQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqMeasQuantity },
{ &hf_rrc_intraFreqReportingQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqReportingQuantity },
{ &hf_rrc_measurementValidity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementValidity },
- { &hf_rrc_reportCriteria_07, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqReportCriteria_r4 },
+ { &hf_rrc_reportCriteria_08, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqReportCriteria_r4 },
{ NULL, 0, 0, NULL }
};
@@ -54754,7 +56941,7 @@ static const per_sequence_t InterRATMeasurement_r4_sequence[] = {
{ &hf_rrc_interRATCellInfoList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRATCellInfoList_r4 },
{ &hf_rrc_interRATMeasQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRATMeasQuantity },
{ &hf_rrc_interRATReportingQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRATReportingQuantity },
- { &hf_rrc_reportCriteria_05, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InterRATReportCriteria },
+ { &hf_rrc_reportCriteria_06, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InterRATReportCriteria },
{ NULL, 0, 0, NULL }
};
@@ -54787,50 +56974,50 @@ dissect_rrc_UE_Positioning_ReportingQuantity_r4(tvbuff_t *tvb _U_, int offset _U
}
-static const per_sequence_t T_fdd_161_sequence[] = {
+static const per_sequence_t T_fdd_166_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_161(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_166(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_161, T_fdd_161_sequence);
+ ett_rrc_T_fdd_166, T_fdd_166_sequence);
return offset;
}
-static const per_sequence_t T_tdd_112_sequence[] = {
+static const per_sequence_t T_tdd_117_sequence[] = {
{ &hf_rrc_cellAndChannelIdentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellAndChannelIdentity },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_112(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_117(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_112, T_tdd_112_sequence);
+ ett_rrc_T_tdd_117, T_tdd_117_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_128_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_134_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_128_choice[] = {
- { 0, &hf_rrc_fdd_167 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_161 },
- { 1, &hf_rrc_tdd_120 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_112 },
+static const per_choice_t T_modeSpecificInfo_134_choice[] = {
+ { 0, &hf_rrc_fdd_172 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_166 },
+ { 1, &hf_rrc_tdd_125 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_117 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_134(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_128, T_modeSpecificInfo_128_choice,
+ ett_rrc_T_modeSpecificInfo_134, T_modeSpecificInfo_134_choice,
NULL);
return offset;
@@ -54887,7 +57074,7 @@ dissect_rrc_T_positioningMode_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
}
-static const per_sequence_t T_fdd_154_sequence[] = {
+static const per_sequence_t T_fdd_159_sequence[] = {
{ &hf_rrc_ip_Spacing , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_IP_Spacing },
{ &hf_rrc_ip_Length , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_IP_Length },
{ &hf_rrc_ip_Offset , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_9 },
@@ -54896,15 +57083,15 @@ static const per_sequence_t T_fdd_154_sequence[] = {
};
static int
-dissect_rrc_T_fdd_154(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_159(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_154, T_fdd_154_sequence);
+ ett_rrc_T_fdd_159, T_fdd_159_sequence);
return offset;
}
-static const per_sequence_t T_tdd_105_sequence[] = {
+static const per_sequence_t T_tdd_110_sequence[] = {
{ &hf_rrc_ip_Spacing_TDD , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_IP_Spacing_TDD },
{ &hf_rrc_ip_slot , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_14 },
{ &hf_rrc_ip_Start , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_4095 },
@@ -54913,30 +57100,30 @@ static const per_sequence_t T_tdd_105_sequence[] = {
};
static int
-dissect_rrc_T_tdd_105(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_110(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_105, T_tdd_105_sequence);
+ ett_rrc_T_tdd_110, T_tdd_110_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_121_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_127_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_121_choice[] = {
- { 0, &hf_rrc_fdd_160 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_154 },
- { 1, &hf_rrc_tdd_113 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_105 },
+static const per_choice_t T_modeSpecificInfo_127_choice[] = {
+ { 0, &hf_rrc_fdd_165 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_159 },
+ { 1, &hf_rrc_tdd_118 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_110 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_121(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_121, T_modeSpecificInfo_121_choice,
+ ett_rrc_T_modeSpecificInfo_127, T_modeSpecificInfo_127_choice,
NULL);
return offset;
@@ -54944,7 +57131,7 @@ dissect_rrc_T_modeSpecificInfo_121(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t UE_Positioning_IPDL_Parameters_r4_sequence[] = {
- { &hf_rrc_modeSpecificInfo_121, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_121 },
+ { &hf_rrc_modeSpecificInfo_127, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_127 },
{ &hf_rrc_burstModeParameters, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BurstModeParameters },
{ NULL, 0, 0, NULL }
};
@@ -54960,7 +57147,7 @@ dissect_rrc_UE_Positioning_IPDL_Parameters_r4(tvbuff_t *tvb _U_, int offset _U_,
static const per_sequence_t UE_Positioning_OTDOA_ReferenceCellInfo_r4_sequence[] = {
{ &hf_rrc_sfn , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_0_4095 },
- { &hf_rrc_modeSpecificInfo_128, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_128 },
+ { &hf_rrc_modeSpecificInfo_134, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_134 },
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
{ &hf_rrc_positioningMode_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_positioningMode_04 },
{ &hf_rrc_ue_positioning_IPDL_Paremeters_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_IPDL_Parameters_r4 },
@@ -54976,50 +57163,50 @@ dissect_rrc_UE_Positioning_OTDOA_ReferenceCellInfo_r4(tvbuff_t *tvb _U_, int off
}
-static const per_sequence_t T_fdd_157_sequence[] = {
+static const per_sequence_t T_fdd_162_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_157(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_162(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_157, T_fdd_157_sequence);
+ ett_rrc_T_fdd_162, T_fdd_162_sequence);
return offset;
}
-static const per_sequence_t T_tdd_108_sequence[] = {
+static const per_sequence_t T_tdd_113_sequence[] = {
{ &hf_rrc_cellAndChannelIdentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellAndChannelIdentity },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_108(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_113(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_108, T_tdd_108_sequence);
+ ett_rrc_T_tdd_113, T_tdd_113_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_124_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_130_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_124_choice[] = {
- { 0, &hf_rrc_fdd_163 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_157 },
- { 1, &hf_rrc_tdd_116 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_108 },
+static const per_choice_t T_modeSpecificInfo_130_choice[] = {
+ { 0, &hf_rrc_fdd_168 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_162 },
+ { 1, &hf_rrc_tdd_121 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_113 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_124(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_130(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_124, T_modeSpecificInfo_124_choice,
+ ett_rrc_T_modeSpecificInfo_130, T_modeSpecificInfo_130_choice,
NULL);
return offset;
@@ -55080,7 +57267,7 @@ dissect_rrc_T_positioningMode_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
static const per_sequence_t UE_Positioning_OTDOA_NeighbourCellInfo_r4_sequence[] = {
- { &hf_rrc_modeSpecificInfo_124, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_124 },
+ { &hf_rrc_modeSpecificInfo_130, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_130 },
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
{ &hf_rrc_ue_positioning_IPDL_Paremeters_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_IPDL_Parameters_r4 },
{ &hf_rrc_sfn_SFN_RelTimeDifference, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SFN_SFN_RelTimeDifference1 },
@@ -55132,7 +57319,7 @@ dissect_rrc_UE_Positioning_OTDOA_AssistanceData_r4(tvbuff_t *tvb _U_, int offset
static const per_sequence_t UE_Positioning_Measurement_r4_sequence[] = {
{ &hf_rrc_ue_positioning_ReportingQuantity_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_ReportingQuantity_r4 },
{ &hf_rrc_measurementValidity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementValidity },
- { &hf_rrc_reportCriteria_16, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_ReportCriteria },
+ { &hf_rrc_reportCriteria_17, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_ReportCriteria },
{ &hf_rrc_ue_positioning_OTDOA_AssistanceData_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_OTDOA_AssistanceData_r4 },
{ &hf_rrc_ue_positioning_GPS_AssistanceData, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_AssistanceData },
{ NULL, 0, 0, NULL }
@@ -55147,100 +57334,100 @@ dissect_rrc_UE_Positioning_Measurement_r4(tvbuff_t *tvb _U_, int offset _U_, asn
}
-static const per_sequence_t T_fdd_151_sequence[] = {
+static const per_sequence_t T_fdd_155_sequence[] = {
{ &hf_rrc_ue_RX_TX_TimeDifference, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_151(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_155(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_151, T_fdd_151_sequence);
+ ett_rrc_T_fdd_155, T_fdd_155_sequence);
return offset;
}
-static const per_sequence_t T_tdd384_39_sequence[] = {
+static const per_sequence_t T_tdd384_40_sequence[] = {
{ &hf_rrc_appliedTA_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd384_39(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_40(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_39, T_tdd384_39_sequence);
+ ett_rrc_T_tdd384_40, T_tdd384_40_sequence);
return offset;
}
-static const per_sequence_t T_tdd128_58_sequence[] = {
+static const per_sequence_t T_tdd128_62_sequence[] = {
{ &hf_rrc_t_ADVinfo_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_58(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_62(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_58, T_tdd128_58_sequence);
+ ett_rrc_T_tdd128_62, T_tdd128_62_sequence);
return offset;
}
-static const value_string rrc_T_tddOption_25_vals[] = {
+static const value_string rrc_T_tddOption_26_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tddOption_25_choice[] = {
- { 0, &hf_rrc_tdd384_44 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_39 },
- { 1, &hf_rrc_tdd128_61 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_58 },
+static const per_choice_t T_tddOption_26_choice[] = {
+ { 0, &hf_rrc_tdd384_45 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_40 },
+ { 1, &hf_rrc_tdd128_65 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_62 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tddOption_25(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tddOption_26(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tddOption_25, T_tddOption_25_choice,
+ ett_rrc_T_tddOption_26, T_tddOption_26_choice,
NULL);
return offset;
}
-static const per_sequence_t T_tdd_102_sequence[] = {
- { &hf_rrc_tddOption_25 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_25 },
+static const per_sequence_t T_tdd_106_sequence[] = {
+ { &hf_rrc_tddOption_26 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_26 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_102(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_106(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_102, T_tdd_102_sequence);
+ ett_rrc_T_tdd_106, T_tdd_106_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_119_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_125_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_119_choice[] = {
- { 0, &hf_rrc_fdd_157 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_151 },
- { 1, &hf_rrc_tdd_110 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_102 },
+static const per_choice_t T_modeSpecificInfo_125_choice[] = {
+ { 0, &hf_rrc_fdd_161 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_155 },
+ { 1, &hf_rrc_tdd_114 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_106 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_119(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_125(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_119, T_modeSpecificInfo_119_choice,
+ ett_rrc_T_modeSpecificInfo_125, T_modeSpecificInfo_125_choice,
NULL);
return offset;
@@ -55249,7 +57436,7 @@ dissect_rrc_T_modeSpecificInfo_119(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t UE_InternalReportingQuantity_r4_sequence[] = {
{ &hf_rrc_ue_TransmittedPower, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
- { &hf_rrc_modeSpecificInfo_119, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_119 },
+ { &hf_rrc_modeSpecificInfo_125, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_125 },
{ NULL, 0, 0, NULL }
};
@@ -55265,7 +57452,7 @@ dissect_rrc_UE_InternalReportingQuantity_r4(tvbuff_t *tvb _U_, int offset _U_, a
static const per_sequence_t UE_InternalMeasurement_r4_sequence[] = {
{ &hf_rrc_ue_InternalMeasQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_InternalMeasQuantity },
{ &hf_rrc_ue_InternalReportingQuantity_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_InternalReportingQuantity_r4 },
- { &hf_rrc_reportCriteria_15, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_InternalReportCriteria },
+ { &hf_rrc_reportCriteria_16, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_InternalReportCriteria },
{ NULL, 0, 0, NULL }
};
@@ -55366,14 +57553,14 @@ dissect_rrc_MeasurementControl_r4_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
}
-static const per_sequence_t T_nonCriticalExtensions_50_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_54_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_50(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_54(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_50, T_nonCriticalExtensions_50_sequence);
+ ett_rrc_T_nonCriticalExtensions_54, T_nonCriticalExtensions_54_sequence);
return offset;
}
@@ -55381,7 +57568,7 @@ dissect_rrc_T_nonCriticalExtensions_50(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v5b0NonCriticalExtensions_01_sequence[] = {
{ &hf_rrc_measurementControl_v5b0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MeasurementControl_v5b0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_50, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_50 },
+ { &hf_rrc_nonCriticalExtensions_54, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_54 },
{ NULL, 0, 0, NULL }
};
@@ -55622,7 +57809,7 @@ static const per_sequence_t IntraFrequencyMeasurement_r6_sequence[] = {
{ &hf_rrc_intraFreqMeasQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqMeasQuantity },
{ &hf_rrc_intraFreqReportingQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqReportingQuantity },
{ &hf_rrc_measurementValidity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementValidity },
- { &hf_rrc_reportCriteria_08, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_IntraFreqReportCriteria_r6 },
+ { &hf_rrc_reportCriteria_09, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_IntraFreqReportCriteria_r6 },
{ NULL, 0, 0, NULL }
};
@@ -55712,7 +57899,7 @@ static const per_sequence_t Event2b_r6_sequence[] = {
{ &hf_rrc_hysteresis , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HysteresisInterFreq },
{ &hf_rrc_timeToTrigger , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TimeToTrigger },
{ &hf_rrc_reportingCellStatus, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ReportingCellStatus },
- { &hf_rrc_nonUsedFreqParameterList_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NonUsedFreqParameterList_r6 },
+ { &hf_rrc_nonUsedFreqParameterList_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NonUsedFreqParameterList_r6 },
{ NULL, 0, 0, NULL }
};
@@ -55729,7 +57916,7 @@ static const per_sequence_t Event2c_r6_sequence[] = {
{ &hf_rrc_hysteresis , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HysteresisInterFreq },
{ &hf_rrc_timeToTrigger , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TimeToTrigger },
{ &hf_rrc_reportingCellStatus, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ReportingCellStatus },
- { &hf_rrc_nonUsedFreqParameterList_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NonUsedFreqParameterList_r6 },
+ { &hf_rrc_nonUsedFreqParameterList_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NonUsedFreqParameterList_r6 },
{ NULL, 0, 0, NULL }
};
@@ -55764,7 +57951,7 @@ static const per_sequence_t Event2e_r6_sequence[] = {
{ &hf_rrc_hysteresis , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HysteresisInterFreq },
{ &hf_rrc_timeToTrigger , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TimeToTrigger },
{ &hf_rrc_reportingCellStatus, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ReportingCellStatus },
- { &hf_rrc_nonUsedFreqParameterList_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NonUsedFreqParameterList_r6 },
+ { &hf_rrc_nonUsedFreqParameterList_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NonUsedFreqParameterList_r6 },
{ NULL, 0, 0, NULL }
};
@@ -55919,7 +58106,7 @@ static const per_sequence_t InterRATMeasurement_r6_sequence[] = {
{ &hf_rrc_interRATCellInfoList_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRATCellInfoList_r6 },
{ &hf_rrc_interRATMeasQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRATMeasQuantity },
{ &hf_rrc_interRATReportingQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRATReportingQuantity },
- { &hf_rrc_reportCriteria_05, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InterRATReportCriteria },
+ { &hf_rrc_reportCriteria_06, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InterRATReportCriteria },
{ NULL, 0, 0, NULL }
};
@@ -56034,14 +58221,14 @@ dissect_rrc_MeasurementControl_v6a0ext_IEs(tvbuff_t *tvb _U_, int offset _U_, as
}
-static const per_sequence_t T_nonCriticalExtensions_51_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_55_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_51(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_55(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_51, T_nonCriticalExtensions_51_sequence);
+ ett_rrc_T_nonCriticalExtensions_55, T_nonCriticalExtensions_55_sequence);
return offset;
}
@@ -56049,7 +58236,7 @@ dissect_rrc_T_nonCriticalExtensions_51(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v6a0NonCriticalExtensions_sequence[] = {
{ &hf_rrc_measurementControl_v6a0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MeasurementControl_v6a0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_51, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_51 },
+ { &hf_rrc_nonCriticalExtensions_55, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_55 },
{ NULL, 0, 0, NULL }
};
@@ -56207,7 +58394,7 @@ static const per_sequence_t IntraFrequencyMeasurement_r7_sequence[] = {
{ &hf_rrc_intraFreqMeasQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqMeasQuantity },
{ &hf_rrc_intraFreqReportingQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqReportingQuantity },
{ &hf_rrc_measurementValidity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementValidity },
- { &hf_rrc_reportCriteria_09, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqReportCriteria_r7 },
+ { &hf_rrc_reportCriteria_10, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqReportCriteria_r7 },
{ NULL, 0, 0, NULL }
};
@@ -56415,7 +58602,7 @@ static const value_string rrc_UE_Positioning_ReportCriteria_r7_vals[] = {
static const per_choice_t UE_Positioning_ReportCriteria_r7_choice[] = {
{ 0, &hf_rrc_ue_positioning_ReportingCriteria_01, ASN1_NO_EXTENSIONS , dissect_rrc_UE_Positioning_EventParamList_r7 },
{ 1, &hf_rrc_periodicalReportingCriteria, ASN1_NO_EXTENSIONS , dissect_rrc_PeriodicalReportingCriteria },
- { 2, &hf_rrc_noReporting_01 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 2, &hf_rrc_noReporting_02 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -56429,50 +58616,50 @@ dissect_rrc_UE_Positioning_ReportCriteria_r7(tvbuff_t *tvb _U_, int offset _U_,
}
-static const per_sequence_t T_fdd_163_sequence[] = {
+static const per_sequence_t T_fdd_168_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_163(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_168(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_163, T_fdd_163_sequence);
+ ett_rrc_T_fdd_168, T_fdd_168_sequence);
return offset;
}
-static const per_sequence_t T_tdd_114_sequence[] = {
+static const per_sequence_t T_tdd_119_sequence[] = {
{ &hf_rrc_cellAndChannelIdentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellAndChannelIdentity },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_114(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_119(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_114, T_tdd_114_sequence);
+ ett_rrc_T_tdd_119, T_tdd_119_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_130_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_136_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_130_choice[] = {
- { 0, &hf_rrc_fdd_169 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_163 },
- { 1, &hf_rrc_tdd_122 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_114 },
+static const per_choice_t T_modeSpecificInfo_136_choice[] = {
+ { 0, &hf_rrc_fdd_174 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_168 },
+ { 1, &hf_rrc_tdd_127 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_119 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_130(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_136(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_130, T_modeSpecificInfo_130_choice,
+ ett_rrc_T_modeSpecificInfo_136, T_modeSpecificInfo_136_choice,
NULL);
return offset;
@@ -56532,7 +58719,7 @@ dissect_rrc_T_positioningMode_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
static const per_sequence_t UE_Positioning_OTDOA_ReferenceCellInfo_r7_sequence[] = {
{ &hf_rrc_sfn , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_0_4095 },
- { &hf_rrc_modeSpecificInfo_130, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_130 },
+ { &hf_rrc_modeSpecificInfo_136, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_136 },
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
{ &hf_rrc_positioningMode_05, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_positioningMode_05 },
{ &hf_rrc_ue_positioning_IPDL_Paremeters_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_IPDL_Parameters_r4 },
@@ -56548,50 +58735,50 @@ dissect_rrc_UE_Positioning_OTDOA_ReferenceCellInfo_r7(tvbuff_t *tvb _U_, int off
}
-static const per_sequence_t T_fdd_159_sequence[] = {
+static const per_sequence_t T_fdd_164_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_159(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_164(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_159, T_fdd_159_sequence);
+ ett_rrc_T_fdd_164, T_fdd_164_sequence);
return offset;
}
-static const per_sequence_t T_tdd_110_sequence[] = {
+static const per_sequence_t T_tdd_115_sequence[] = {
{ &hf_rrc_cellAndChannelIdentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellAndChannelIdentity },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_110(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_115(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_110, T_tdd_110_sequence);
+ ett_rrc_T_tdd_115, T_tdd_115_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_126_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_132_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_126_choice[] = {
- { 0, &hf_rrc_fdd_165 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_159 },
- { 1, &hf_rrc_tdd_118 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_110 },
+static const per_choice_t T_modeSpecificInfo_132_choice[] = {
+ { 0, &hf_rrc_fdd_170 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_164 },
+ { 1, &hf_rrc_tdd_123 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_115 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_126(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_132(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_126, T_modeSpecificInfo_126_choice,
+ ett_rrc_T_modeSpecificInfo_132, T_modeSpecificInfo_132_choice,
NULL);
return offset;
@@ -56653,7 +58840,7 @@ dissect_rrc_T_positioningMode_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
static const per_sequence_t UE_Positioning_OTDOA_NeighbourCellInfo_r7_sequence[] = {
- { &hf_rrc_modeSpecificInfo_126, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_126 },
+ { &hf_rrc_modeSpecificInfo_132, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_132 },
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
{ &hf_rrc_ue_positioning_IPDL_Paremeters_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_IPDL_Parameters_r4 },
{ &hf_rrc_sfn_SFN_RelTimeDifference, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SFN_SFN_RelTimeDifference1 },
@@ -56726,7 +58913,7 @@ static const per_sequence_t UE_Positioning_GPS_AcquisitionAssistance_r7_sequence
{ &hf_rrc_gps_ReferenceTime, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_GPS_TOW_1msec },
{ &hf_rrc_utran_GPSReferenceTime, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UTRAN_GPSReferenceTime },
{ &hf_rrc_ue_Positioning_GPS_ReferenceTimeUncertainty, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_ReferenceTimeUncertainty },
- { &hf_rrc_satelliteInformationList_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_AcquisitionSatInfoList },
+ { &hf_rrc_satelliteInformationList_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_AcquisitionSatInfoList },
{ NULL, 0, 0, NULL }
};
@@ -56764,7 +58951,7 @@ dissect_rrc_UE_Positioning_GPS_AssistanceData_r7(tvbuff_t *tvb _U_, int offset _
static const per_sequence_t UE_Positioning_Measurement_r7_sequence[] = {
{ &hf_rrc_ue_positioning_ReportingQuantity_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_ReportingQuantity_r7 },
{ &hf_rrc_measurementValidity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementValidity },
- { &hf_rrc_reportCriteria_17, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_ReportCriteria_r7 },
+ { &hf_rrc_reportCriteria_18, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_ReportCriteria_r7 },
{ &hf_rrc_ue_positioning_OTDOA_AssistanceData_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_OTDOA_AssistanceData_r7 },
{ &hf_rrc_ue_positioning_GPS_AssistanceData_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_AssistanceData_r7 },
{ &hf_rrc_ue_positioning_GANSS_AssistanceData, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GANSS_AssistanceData },
@@ -56910,14 +59097,14 @@ dissect_rrc_MeasurementControl_v7b0ext_IEs(tvbuff_t *tvb _U_, int offset _U_, as
}
-static const per_sequence_t T_nonCriticalExtensions_52_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_56_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_52(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_56(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_52, T_nonCriticalExtensions_52_sequence);
+ ett_rrc_T_nonCriticalExtensions_56, T_nonCriticalExtensions_56_sequence);
return offset;
}
@@ -56925,7 +59112,7 @@ dissect_rrc_T_nonCriticalExtensions_52(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v7b0NonCriticalExtensions_sequence[] = {
{ &hf_rrc_measurementControl_v7b0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MeasurementControl_v7b0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_52, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_52 },
+ { &hf_rrc_nonCriticalExtensions_56, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_56 },
{ NULL, 0, 0, NULL }
};
@@ -56954,36 +59141,36 @@ dissect_rrc_T_r7_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_tdd128_55_sequence[] = {
+static const per_sequence_t T_tdd128_57_sequence[] = {
{ &hf_rrc_intraSecondaryFreqIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_55(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_57(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_55, T_tdd128_55_sequence);
+ ett_rrc_T_tdd128_57, T_tdd128_57_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_112_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_116_vals[] = {
{ 0, "noInfo" },
{ 1, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_112_choice[] = {
+static const per_choice_t T_modeSpecificInfo_116_choice[] = {
{ 0, &hf_rrc_noInfo , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 1, &hf_rrc_tdd128_57 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_55 },
+ { 1, &hf_rrc_tdd128_59 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_57 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_112(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_116(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_112, T_modeSpecificInfo_112_choice,
+ ett_rrc_T_modeSpecificInfo_116, T_modeSpecificInfo_116_choice,
NULL);
return offset;
@@ -56994,7 +59181,7 @@ static const per_sequence_t NewInterFreqCell_r8_sequence[] = {
{ &hf_rrc_interFreqCellID , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterFreqCellID },
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
{ &hf_rrc_cellInfo_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellInfo_r4 },
- { &hf_rrc_modeSpecificInfo_112, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_112 },
+ { &hf_rrc_modeSpecificInfo_116, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_116 },
{ NULL, 0, 0, NULL }
};
@@ -57443,7 +59630,7 @@ static const per_sequence_t InterRATMeasurement_r8_sequence[] = {
{ &hf_rrc_interRATMeasurementObjects, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_interRATMeasurementObjects },
{ &hf_rrc_interRATMeasQuantity_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRATMeasQuantity_r8 },
{ &hf_rrc_interRATReportingQuantity_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRATReportingQuantity_r8 },
- { &hf_rrc_reportCriteria_05, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InterRATReportCriteria },
+ { &hf_rrc_reportCriteria_06, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InterRATReportCriteria },
{ &hf_rrc_idleIntervalInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IdleIntervalInfo },
{ NULL, 0, 0, NULL }
};
@@ -57579,7 +59766,7 @@ dissect_rrc_UE_Positioning_GANSS_AssistanceData_r8(tvbuff_t *tvb _U_, int offset
static const per_sequence_t UE_Positioning_Measurement_r8_sequence[] = {
{ &hf_rrc_ue_positioning_ReportingQuantity_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_ReportingQuantity_r8 },
{ &hf_rrc_measurementValidity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementValidity },
- { &hf_rrc_reportCriteria_17, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_ReportCriteria_r7 },
+ { &hf_rrc_reportCriteria_18, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_ReportCriteria_r7 },
{ &hf_rrc_ue_positioning_OTDOA_AssistanceData_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_OTDOA_AssistanceData_r7 },
{ &hf_rrc_ue_positioning_GPS_AssistanceData_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_AssistanceData_r7 },
{ &hf_rrc_ue_positioning_GANSS_AssistanceData_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GANSS_AssistanceData_r8 },
@@ -57683,30 +59870,30 @@ dissect_rrc_MeasurementControl_r8_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
}
-static const per_sequence_t T_fdd_130_sequence[] = {
+static const per_sequence_t T_fdd_133_sequence[] = {
{ &hf_rrc_q_QualMin , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Q_QualMin },
{ &hf_rrc_q_RxlevMin , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Q_RxlevMin },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_130(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_133(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_130, T_fdd_130_sequence);
+ ett_rrc_T_fdd_133, T_fdd_133_sequence);
return offset;
}
-static const per_sequence_t T_tdd_83_sequence[] = {
+static const per_sequence_t T_tdd_86_sequence[] = {
{ &hf_rrc_q_RxlevMin , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Q_RxlevMin },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_83(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_86(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_83, T_tdd_83_sequence);
+ ett_rrc_T_tdd_86, T_tdd_86_sequence);
return offset;
}
@@ -57726,24 +59913,24 @@ dissect_rrc_T_gsm_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr
}
-static const value_string rrc_T_modeSpecificInfo_93_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_96_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 2, "gsm" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_93_choice[] = {
- { 0, &hf_rrc_fdd_135 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_130 },
- { 1, &hf_rrc_tdd_90 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_83 },
+static const per_choice_t T_modeSpecificInfo_96_choice[] = {
+ { 0, &hf_rrc_fdd_138 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_133 },
+ { 1, &hf_rrc_tdd_93 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_86 },
{ 2, &hf_rrc_gsm_02 , ASN1_NO_EXTENSIONS , dissect_rrc_T_gsm_02 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_93(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_96(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_93, T_modeSpecificInfo_93_choice,
+ ett_rrc_T_modeSpecificInfo_96, T_modeSpecificInfo_96_choice,
NULL);
return offset;
@@ -57754,7 +59941,7 @@ static const per_sequence_t CellSelectReselectInfoMC_RSCP_sequence[] = {
{ &hf_rrc_q_OffsetS_N , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Q_OffsetS_N },
{ &hf_rrc_maxAllowedUL_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MaxAllowedUL_TX_Power },
{ &hf_rrc_hcs_NeighbouringCellInformation_RSCP, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HCS_NeighbouringCellInformation_RSCP },
- { &hf_rrc_modeSpecificInfo_93, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_93 },
+ { &hf_rrc_modeSpecificInfo_96, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_96 },
{ NULL, 0, 0, NULL }
};
@@ -57852,14 +60039,14 @@ dissect_rrc_MeasurementControl_v8a0ext_IEs(tvbuff_t *tvb _U_, int offset _U_, as
}
-static const per_sequence_t T_nonCriticalExtensions_53_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_57_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_53(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_57(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_53, T_nonCriticalExtensions_53_sequence);
+ ett_rrc_T_nonCriticalExtensions_57, T_nonCriticalExtensions_57_sequence);
return offset;
}
@@ -57867,7 +60054,7 @@ dissect_rrc_T_nonCriticalExtensions_53(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v8a0NonCriticalExtensions_03_sequence[] = {
{ &hf_rrc_measurementControl_v8a0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MeasurementControl_v8a0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_53, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_53 },
+ { &hf_rrc_nonCriticalExtensions_57, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_57 },
{ NULL, 0, 0, NULL }
};
@@ -57896,7 +60083,7 @@ dissect_rrc_T_r8_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_fdd_122_sequence[] = {
+static const per_sequence_t T_fdd_125_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCPICH_Info },
{ &hf_rrc_primaryCPICH_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCPICH_TX_Power },
{ &hf_rrc_readSFN_Indicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
@@ -57905,15 +60092,15 @@ static const per_sequence_t T_fdd_122_sequence[] = {
};
static int
-dissect_rrc_T_fdd_122(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_125(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_122, T_fdd_122_sequence);
+ ett_rrc_T_fdd_125, T_fdd_125_sequence);
return offset;
}
-static const per_sequence_t T_tdd_75_sequence[] = {
+static const per_sequence_t T_tdd_78_sequence[] = {
{ &hf_rrc_primaryCCPCH_Info_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCCPCH_Info_r4 },
{ &hf_rrc_primaryCCPCH_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCCPCH_TX_Power },
{ &hf_rrc_timeslotInfoList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TimeslotInfoList_r4 },
@@ -57922,30 +60109,30 @@ static const per_sequence_t T_tdd_75_sequence[] = {
};
static int
-dissect_rrc_T_tdd_75(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_78(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_75, T_tdd_75_sequence);
+ ett_rrc_T_tdd_78, T_tdd_78_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_85_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_88_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_85_choice[] = {
- { 0, &hf_rrc_fdd_125 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_122 },
- { 1, &hf_rrc_tdd_81 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_75 },
+static const per_choice_t T_modeSpecificInfo_88_choice[] = {
+ { 0, &hf_rrc_fdd_128 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_125 },
+ { 1, &hf_rrc_tdd_84 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_78 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_85(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_88(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_85, T_modeSpecificInfo_85_choice,
+ ett_rrc_T_modeSpecificInfo_88, T_modeSpecificInfo_88_choice,
NULL);
return offset;
@@ -57955,7 +60142,7 @@ dissect_rrc_T_modeSpecificInfo_85(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t CellInfo_r9_sequence[] = {
{ &hf_rrc_cellIndividualOffset, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellIndividualOffset },
{ &hf_rrc_referenceTimeDifferenceToCell, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ReferenceTimeDifferenceToCell },
- { &hf_rrc_modeSpecificInfo_85, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_85 },
+ { &hf_rrc_modeSpecificInfo_88, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_88 },
{ &hf_rrc_cellSelectionReselectionInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellSelectReselectInfoMC_RSCP },
{ NULL, 0, 0, NULL }
};
@@ -57998,37 +60185,37 @@ dissect_rrc_NewIntraFreqCellList_r9(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
-static const per_sequence_t T_fdd_137_sequence[] = {
+static const per_sequence_t T_fdd_140_sequence[] = {
{ &hf_rrc_startPSC_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ &hf_rrc_numberOfPSCs_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_1_512 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_137(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_140(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_137, T_fdd_137_sequence);
+ ett_rrc_T_fdd_140, T_fdd_140_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_100_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_103_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_100_choice[] = {
- { 0, &hf_rrc_fdd_142 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_137 },
+static const per_choice_t T_modeSpecificInfo_103_choice[] = {
+ { 0, &hf_rrc_fdd_145 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_140 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_100(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_103(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_100, T_modeSpecificInfo_100_choice,
+ ett_rrc_T_modeSpecificInfo_103, T_modeSpecificInfo_103_choice,
NULL);
return offset;
@@ -58036,7 +60223,7 @@ dissect_rrc_T_modeSpecificInfo_100(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t CSGCellInfo_sequence[] = {
- { &hf_rrc_modeSpecificInfo_100, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_100 },
+ { &hf_rrc_modeSpecificInfo_103, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_103 },
{ NULL, 0, 0, NULL }
};
@@ -58086,36 +60273,36 @@ dissect_rrc_IntraFreqSIAcquisitionInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_c
}
-static const per_sequence_t T_fdd_142_sequence[] = {
+static const per_sequence_t T_fdd_145_sequence[] = {
{ &hf_rrc_intraFreqSIAcquisitionInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqSIAcquisitionInfo },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_142(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_145(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_142, T_fdd_142_sequence);
+ ett_rrc_T_fdd_145, T_fdd_145_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_105_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_108_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_105_choice[] = {
- { 0, &hf_rrc_fdd_148 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_142 },
+static const per_choice_t T_modeSpecificInfo_108_choice[] = {
+ { 0, &hf_rrc_fdd_151 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_145 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_105(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_108(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_105, T_modeSpecificInfo_105_choice,
+ ett_rrc_T_modeSpecificInfo_108, T_modeSpecificInfo_108_choice,
NULL);
return offset;
@@ -58123,7 +60310,7 @@ dissect_rrc_T_modeSpecificInfo_105(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t IntraFreqSIAcquisition_sequence[] = {
- { &hf_rrc_modeSpecificInfo_105, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_105 },
+ { &hf_rrc_modeSpecificInfo_108, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_108 },
{ NULL, 0, 0, NULL }
};
@@ -58460,7 +60647,7 @@ static const per_sequence_t IntraFrequencyMeasurement_r9_sequence[] = {
{ &hf_rrc_intraFreqMeasQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqMeasQuantity },
{ &hf_rrc_intraFreqReportingQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqReportingQuantity },
{ &hf_rrc_measurementValidity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementValidity },
- { &hf_rrc_reportCriteria_10, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqReportCriteria_r9 },
+ { &hf_rrc_reportCriteria_11, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqReportCriteria_r9 },
{ NULL, 0, 0, NULL }
};
@@ -58473,36 +60660,36 @@ dissect_rrc_IntraFrequencyMeasurement_r9(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_tdd128_56_sequence[] = {
+static const per_sequence_t T_tdd128_58_sequence[] = {
{ &hf_rrc_intraSecondaryFreqIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_56(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_58(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_56, T_tdd128_56_sequence);
+ ett_rrc_T_tdd128_58, T_tdd128_58_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_113_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_117_vals[] = {
{ 0, "noInfo" },
{ 1, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_113_choice[] = {
+static const per_choice_t T_modeSpecificInfo_117_choice[] = {
{ 0, &hf_rrc_noInfo , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 1, &hf_rrc_tdd128_58 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_56 },
+ { 1, &hf_rrc_tdd128_60 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_58 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_113(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_117(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_113, T_modeSpecificInfo_113_choice,
+ ett_rrc_T_modeSpecificInfo_117, T_modeSpecificInfo_117_choice,
NULL);
return offset;
@@ -58513,7 +60700,7 @@ static const per_sequence_t NewInterFreqCell_r9_sequence[] = {
{ &hf_rrc_interFreqCellID , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterFreqCellID },
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
{ &hf_rrc_cellInfo_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellInfo_r9 },
- { &hf_rrc_modeSpecificInfo_113, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_113 },
+ { &hf_rrc_modeSpecificInfo_117, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_117 },
{ NULL, 0, 0, NULL }
};
@@ -58569,36 +60756,36 @@ dissect_rrc_CSGInterFreqCellInfoList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_fdd_138_sequence[] = {
+static const per_sequence_t T_fdd_141_sequence[] = {
{ &hf_rrc_primaryScramblingCode_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_138(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_141(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_138, T_fdd_138_sequence);
+ ett_rrc_T_fdd_141, T_fdd_141_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_101_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_104_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_101_choice[] = {
- { 0, &hf_rrc_fdd_144 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_138 },
+static const per_choice_t T_modeSpecificInfo_104_choice[] = {
+ { 0, &hf_rrc_fdd_147 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_141 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_101(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_104(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_101, T_modeSpecificInfo_101_choice,
+ ett_rrc_T_modeSpecificInfo_104, T_modeSpecificInfo_104_choice,
NULL);
return offset;
@@ -58607,7 +60794,7 @@ dissect_rrc_T_modeSpecificInfo_101(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t InterFreqSIAcquisition_sequence[] = {
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_FrequencyInfo },
- { &hf_rrc_modeSpecificInfo_101, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_101 },
+ { &hf_rrc_modeSpecificInfo_104, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_104 },
{ NULL, 0, 0, NULL }
};
@@ -58742,7 +60929,7 @@ static const per_sequence_t InterRATMeasurement_r9_sequence[] = {
{ &hf_rrc_interRATMeasurementObjects_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_interRATMeasurementObjects_01 },
{ &hf_rrc_interRATMeasQuantity_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRATMeasQuantity_r8 },
{ &hf_rrc_interRATReportingQuantity_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRATReportingQuantity_r8 },
- { &hf_rrc_reportCriteria_05, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InterRATReportCriteria },
+ { &hf_rrc_reportCriteria_06, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InterRATReportCriteria },
{ &hf_rrc_idleIntervalInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IdleIntervalInfo },
{ NULL, 0, 0, NULL }
};
@@ -58969,7 +61156,7 @@ dissect_rrc_UE_Positioning_GANSS_AssistanceData_r9(tvbuff_t *tvb _U_, int offset
static const per_sequence_t UE_Positioning_Measurement_r9_sequence[] = {
{ &hf_rrc_ue_positioning_ReportingQuantity_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_ReportingQuantity_r8 },
{ &hf_rrc_measurementValidity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementValidity },
- { &hf_rrc_reportCriteria_17, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_ReportCriteria_r7 },
+ { &hf_rrc_reportCriteria_18, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_ReportCriteria_r7 },
{ &hf_rrc_ue_positioning_OTDOA_AssistanceData_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_OTDOA_AssistanceData_r7 },
{ &hf_rrc_ue_positioning_GPS_AssistanceData_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_AssistanceData_r9 },
{ &hf_rrc_ue_positioning_GANSS_AssistanceData_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GANSS_AssistanceData_r9 },
@@ -59160,14 +61347,14 @@ dissect_rrc_MeasurementControl_v970ext_IEs(tvbuff_t *tvb _U_, int offset _U_, as
}
-static const per_sequence_t T_nonCriticalExtensions_54_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_58_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_54(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_58(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_54, T_nonCriticalExtensions_54_sequence);
+ ett_rrc_T_nonCriticalExtensions_58, T_nonCriticalExtensions_58_sequence);
return offset;
}
@@ -59175,7 +61362,7 @@ dissect_rrc_T_nonCriticalExtensions_54(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v970NonCriticalExtensions_sequence[] = {
{ &hf_rrc_measurementControl_v970ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MeasurementControl_v970ext_IEs },
- { &hf_rrc_nonCriticalExtensions_54, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_54 },
+ { &hf_rrc_nonCriticalExtensions_58, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_58 },
{ NULL, 0, 0, NULL }
};
@@ -59204,101 +61391,1350 @@ dissect_rrc_T_r9_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_42_sequence[] = {
+static const per_sequence_t T_tdd128_60_sequence[] = {
+ { &hf_rrc_sNPLMonitorSetIndicator_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING_SIZE_5 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_42(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_60(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_42, T_criticalExtensions_42_sequence);
+ ett_rrc_T_tdd128_60, T_tdd128_60_sequence);
return offset;
}
-static const value_string rrc_T_criticalExtensions_41_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_119_vals[] = {
+ { 0, "noInfo" },
+ { 1, "tdd128" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_modeSpecificInfo_119_choice[] = {
+ { 0, &hf_rrc_noInfo , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_tdd128_62 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_60 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_modeSpecificInfo_119(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_modeSpecificInfo_119, T_modeSpecificInfo_119_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t NewIntraFreqCell_r10_sequence[] = {
+ { &hf_rrc_intraFreqCellID , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqCellID },
+ { &hf_rrc_cellInfo_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellInfo_r9 },
+ { &hf_rrc_modeSpecificInfo_119, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_119 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_NewIntraFreqCell_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_NewIntraFreqCell_r10, NewIntraFreqCell_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t NewIntraFreqCellList_r10_sequence_of[1] = {
+ { &hf_rrc_NewIntraFreqCellList_r10_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NewIntraFreqCell_r10 },
+};
+
+static int
+dissect_rrc_NewIntraFreqCellList_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_NewIntraFreqCellList_r10, NewIntraFreqCellList_r10_sequence_of,
+ 1, maxCellMeas, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t IntraFreqCellInfoList_r10_sequence[] = {
+ { &hf_rrc_removedIntraFreqCellList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RemovedIntraFreqCellList },
+ { &hf_rrc_newIntraFreqCellList_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewIntraFreqCellList_r10 },
+ { &hf_rrc_cellsForIntraFreqMeasList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellsForIntraFreqMeasList },
+ { &hf_rrc_cSGIntraFreqCellInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CSGIntraFreqCellInfoList },
+ { &hf_rrc_intraFreqSIAcquisition, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqSIAcquisition },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_IntraFreqCellInfoList_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_IntraFreqCellInfoList_r10, IntraFreqCellInfoList_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t IntraFrequencyMeasurement_r10_sequence[] = {
+ { &hf_rrc_intraFreqCellInfoList_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqCellInfoList_r10 },
+ { &hf_rrc_intraFreqCellInfoListOnSecULFreq_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqCellInfoListOnSecULFreq },
+ { &hf_rrc_intraFreqMeasQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqMeasQuantity },
+ { &hf_rrc_intraFreqReportingQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqReportingQuantity },
+ { &hf_rrc_measurementValidity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementValidity },
+ { &hf_rrc_reportCriteria_11, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraFreqReportCriteria_r9 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_IntraFrequencyMeasurement_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_IntraFrequencyMeasurement_r10, IntraFrequencyMeasurement_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_tdd128_59_sequence[] = {
+ { &hf_rrc_intraSecondaryFreqIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
+ { &hf_rrc_sNPLMonitorSetIndicator_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING_SIZE_5 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_tdd128_59(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_tdd128_59, T_tdd128_59_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_modeSpecificInfo_118_vals[] = {
+ { 0, "noInfo" },
+ { 1, "tdd128" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_modeSpecificInfo_118_choice[] = {
+ { 0, &hf_rrc_noInfo , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_tdd128_61 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_59 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_modeSpecificInfo_118(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_modeSpecificInfo_118, T_modeSpecificInfo_118_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t NewInterFreqCell_r10_sequence[] = {
+ { &hf_rrc_interFreqCellID , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterFreqCellID },
+ { &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
+ { &hf_rrc_cellInfo_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellInfo_r9 },
+ { &hf_rrc_modeSpecificInfo_118, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_118 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_NewInterFreqCell_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_NewInterFreqCell_r10, NewInterFreqCell_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t NewInterFreqCellList_r10_sequence_of[1] = {
+ { &hf_rrc_NewInterFreqCellList_r10_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NewInterFreqCell_r10 },
+};
+
+static int
+dissect_rrc_NewInterFreqCellList_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_NewInterFreqCellList_r10, NewInterFreqCellList_r10_sequence_of,
+ 1, maxCellMeas, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t InterFreqCellInfoList_r10_sequence[] = {
+ { &hf_rrc_removedInterFreqCellList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RemovedInterFreqCellList },
+ { &hf_rrc_newInterFreqCellList_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellList_r10 },
+ { &hf_rrc_cellsForInterFreqMeasList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellsForInterFreqMeasList },
+ { &hf_rrc_cSGInterFreqCellInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CSGInterFreqCellInfoList },
+ { &hf_rrc_interFreqSIAcquisition, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterFreqSIAcquisition },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_InterFreqCellInfoList_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_InterFreqCellInfoList_r10, InterFreqCellInfoList_r10_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_rrc_FrequencyIndexForEnhancedMeas(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, maxCellMeas_1, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t FreqIndexListForEnhancedMeas_sequence_of[1] = {
+ { &hf_rrc_FreqIndexListForEnhancedMeas_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_FrequencyIndexForEnhancedMeas },
+};
+
+static int
+dissect_rrc_FreqIndexListForEnhancedMeas(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_FreqIndexListForEnhancedMeas, FreqIndexListForEnhancedMeas_sequence_of,
+ 1, maxFreqMeasWithoutCM, FALSE);
+
+ return offset;
+}
+
+
+static const value_string rrc_ReportingCellStatus_r10_vals[] = {
+ { 0, "withinActiveSet" },
+ { 1, "withinMonitoredSetUsedFreq" },
+ { 2, "withinActiveAndOrMonitoredUsedFreq" },
+ { 3, "withinDetectedSetUsedFreq" },
+ { 4, "withinMonitoredAndOrDetectedUsedFreq" },
+ { 5, "allActiveplusMonitoredSet" },
+ { 6, "allActivePlusDetectedSet" },
+ { 7, "allActivePlusMonitoredAndOrDetectedSet" },
+ { 8, "withinVirtualActSet" },
+ { 9, "withinMonitoredSetNonUsedFreq" },
+ { 10, "withinMonitoredAndOrVirtualActiveSetNonUsedFreq" },
+ { 11, "allVirtualActSetplusMonitoredSetNonUsedFreq" },
+ { 12, "withinActSetOrVirtualActSet-InterRATcells" },
+ { 13, "withinActSetAndOrMonitoredUsedFreqOrVirtualActSetAndOrMonitoredNonUsedFreq" },
+ { 14, "allVirtualActSetplusMonitoredSetplusDetectedSetNonUsedFreq" },
+ { 0, NULL }
+};
+
+static const per_choice_t ReportingCellStatus_r10_choice[] = {
+ { 0, &hf_rrc_withinActiveSet , ASN1_NO_EXTENSIONS , dissect_rrc_MaxNumberOfReportingCellsType1 },
+ { 1, &hf_rrc_withinMonitoredSetUsedFreq, ASN1_NO_EXTENSIONS , dissect_rrc_MaxNumberOfReportingCellsType1 },
+ { 2, &hf_rrc_withinActiveAndOrMonitoredUsedFreq, ASN1_NO_EXTENSIONS , dissect_rrc_MaxNumberOfReportingCellsType1 },
+ { 3, &hf_rrc_withinDetectedSetUsedFreq, ASN1_NO_EXTENSIONS , dissect_rrc_MaxNumberOfReportingCellsType1 },
+ { 4, &hf_rrc_withinMonitoredAndOrDetectedUsedFreq, ASN1_NO_EXTENSIONS , dissect_rrc_MaxNumberOfReportingCellsType1 },
+ { 5, &hf_rrc_allActiveplusMonitoredSet, ASN1_NO_EXTENSIONS , dissect_rrc_MaxNumberOfReportingCellsType3 },
+ { 6, &hf_rrc_allActivePlusDetectedSet, ASN1_NO_EXTENSIONS , dissect_rrc_MaxNumberOfReportingCellsType3 },
+ { 7, &hf_rrc_allActivePlusMonitoredAndOrDetectedSet, ASN1_NO_EXTENSIONS , dissect_rrc_MaxNumberOfReportingCellsType3 },
+ { 8, &hf_rrc_withinVirtualActSet, ASN1_NO_EXTENSIONS , dissect_rrc_MaxNumberOfReportingCellsType1 },
+ { 9, &hf_rrc_withinMonitoredSetNonUsedFreq, ASN1_NO_EXTENSIONS , dissect_rrc_MaxNumberOfReportingCellsType1 },
+ { 10, &hf_rrc_withinMonitoredAndOrVirtualActiveSetNonUsedFreq, ASN1_NO_EXTENSIONS , dissect_rrc_MaxNumberOfReportingCellsType1 },
+ { 11, &hf_rrc_allVirtualActSetplusMonitoredSetNonUsedFreq, ASN1_NO_EXTENSIONS , dissect_rrc_MaxNumberOfReportingCellsType3 },
+ { 12, &hf_rrc_withinActSetOrVirtualActSet_InterRATcells, ASN1_NO_EXTENSIONS , dissect_rrc_MaxNumberOfReportingCellsType2 },
+ { 13, &hf_rrc_withinActSetAndOrMonitoredUsedFreqOrVirtualActSetAndOrMonitoredNonUsedFreq, ASN1_NO_EXTENSIONS , dissect_rrc_MaxNumberOfReportingCellsType2 },
+ { 14, &hf_rrc_allVirtualActSetplusMonitoredSetplusDetectedSetNonUsedFreq, ASN1_NO_EXTENSIONS , dissect_rrc_MaxNumberOfReportingCellsType3 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_ReportingCellStatus_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_ReportingCellStatus_r10, ReportingCellStatus_r10_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_nonUsedFreqTriggeringConditionDetectedCells_01_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_nonUsedFreqTriggeringConditionDetectedCells_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t NonUsedFreq2aParameter_r10_sequence[] = {
+ { &hf_rrc_nonUsedFreqW , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_W },
+ { &hf_rrc_nonUsedFreqTriggeringConditionDetectedCells_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonUsedFreqTriggeringConditionDetectedCells_01 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_NonUsedFreq2aParameter_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_NonUsedFreq2aParameter_r10, NonUsedFreq2aParameter_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t NonUsedFreq2aParameterList_r10_sequence_of[1] = {
+ { &hf_rrc_NonUsedFreq2aParameterList_r10_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NonUsedFreq2aParameter_r10 },
+};
+
+static int
+dissect_rrc_NonUsedFreq2aParameterList_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_NonUsedFreq2aParameterList_r10, NonUsedFreq2aParameterList_r10_sequence_of,
+ 1, maxFreq, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t Event2a_r10_sequence[] = {
+ { &hf_rrc_usedFreqW , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_W },
+ { &hf_rrc_hysteresis , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HysteresisInterFreq },
+ { &hf_rrc_timeToTrigger , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TimeToTrigger },
+ { &hf_rrc_reportingCellStatus_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ReportingCellStatus_r10 },
+ { &hf_rrc_nonUsedFreqParameterList_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NonUsedFreq2aParameterList_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_Event2a_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_Event2a_r10, Event2a_r10_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_nonUsedFreqTriggeringConditionDetectedCells_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_nonUsedFreqTriggeringConditionDetectedCells(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t NonUsedFreqParameter_r10_sequence[] = {
+ { &hf_rrc_nonUsedFreqThreshold_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_Threshold_r6 },
+ { &hf_rrc_nonUsedFreqW , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_W },
+ { &hf_rrc_nonUsedFreqTriggeringConditionDetectedCells, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonUsedFreqTriggeringConditionDetectedCells },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_NonUsedFreqParameter_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_NonUsedFreqParameter_r10, NonUsedFreqParameter_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t NonUsedFreqParameterList_r10_sequence_of[1] = {
+ { &hf_rrc_NonUsedFreqParameterList_r10_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NonUsedFreqParameter_r10 },
+};
+
+static int
+dissect_rrc_NonUsedFreqParameterList_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_NonUsedFreqParameterList_r10, NonUsedFreqParameterList_r10_sequence_of,
+ 1, maxFreq, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t Event2b_r10_sequence[] = {
+ { &hf_rrc_usedFreqThreshold_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_Threshold_r6 },
+ { &hf_rrc_usedFreqW , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_W },
+ { &hf_rrc_hysteresis , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HysteresisInterFreq },
+ { &hf_rrc_timeToTrigger , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TimeToTrigger },
+ { &hf_rrc_reportingCellStatus_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ReportingCellStatus_r10 },
+ { &hf_rrc_nonUsedFreqParameterList_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NonUsedFreqParameterList_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_Event2b_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_Event2b_r10, Event2b_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t Event2c_r10_sequence[] = {
+ { &hf_rrc_hysteresis , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HysteresisInterFreq },
+ { &hf_rrc_timeToTrigger , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TimeToTrigger },
+ { &hf_rrc_reportingCellStatus_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ReportingCellStatus_r10 },
+ { &hf_rrc_nonUsedFreqParameterList_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NonUsedFreqParameterList_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_Event2c_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_Event2c_r10, Event2c_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t Event2d_r10_sequence[] = {
+ { &hf_rrc_usedFreqThreshold_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_Threshold_r6 },
+ { &hf_rrc_usedFreqW , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_W },
+ { &hf_rrc_hysteresis , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HysteresisInterFreq },
+ { &hf_rrc_timeToTrigger , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TimeToTrigger },
+ { &hf_rrc_reportingCellStatus_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ReportingCellStatus_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_Event2d_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_Event2d_r10, Event2d_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t Event2e_r10_sequence[] = {
+ { &hf_rrc_hysteresis , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HysteresisInterFreq },
+ { &hf_rrc_timeToTrigger , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TimeToTrigger },
+ { &hf_rrc_reportingCellStatus_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ReportingCellStatus_r10 },
+ { &hf_rrc_nonUsedFreqParameterList_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NonUsedFreqParameterList_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_Event2e_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_Event2e_r10, Event2e_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t Event2f_r10_sequence[] = {
+ { &hf_rrc_usedFreqThreshold_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_Threshold_r6 },
+ { &hf_rrc_usedFreqW , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_W },
+ { &hf_rrc_hysteresis , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HysteresisInterFreq },
+ { &hf_rrc_timeToTrigger , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TimeToTrigger },
+ { &hf_rrc_reportingCellStatus_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ReportingCellStatus_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_Event2f_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_Event2f_r10, Event2f_r10_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_InterFreqEvent_r10_vals[] = {
+ { 0, "event2a" },
+ { 1, "event2b" },
+ { 2, "event2c" },
+ { 3, "event2d" },
+ { 4, "event2e" },
+ { 5, "event2f" },
+ { 0, NULL }
+};
+
+static const per_choice_t InterFreqEvent_r10_choice[] = {
+ { 0, &hf_rrc_event2a_02 , ASN1_NO_EXTENSIONS , dissect_rrc_Event2a_r10 },
+ { 1, &hf_rrc_event2b_02 , ASN1_NO_EXTENSIONS , dissect_rrc_Event2b_r10 },
+ { 2, &hf_rrc_event2c_02 , ASN1_NO_EXTENSIONS , dissect_rrc_Event2c_r10 },
+ { 3, &hf_rrc_event2d_02 , ASN1_NO_EXTENSIONS , dissect_rrc_Event2d_r10 },
+ { 4, &hf_rrc_event2e_02 , ASN1_NO_EXTENSIONS , dissect_rrc_Event2e_r10 },
+ { 5, &hf_rrc_event2f_02 , ASN1_NO_EXTENSIONS , dissect_rrc_Event2f_r10 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_InterFreqEvent_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_InterFreqEvent_r10, InterFreqEvent_r10_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t InterFreqEventList_r10_sequence_of[1] = {
+ { &hf_rrc_InterFreqEventList_r10_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InterFreqEvent_r10 },
+};
+
+static int
+dissect_rrc_InterFreqEventList_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_InterFreqEventList_r10, InterFreqEventList_r10_sequence_of,
+ 1, maxMeasEvent, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t InterFreqReportingCriteria_r10_sequence[] = {
+ { &hf_rrc_interFreqEventList_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterFreqEventList_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_InterFreqReportingCriteria_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_InterFreqReportingCriteria_r10, InterFreqReportingCriteria_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t PeriodicalWithReportingCellStatus_r10_sequence[] = {
+ { &hf_rrc_periodicalReportingCriteria, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PeriodicalReportingCriteria },
+ { &hf_rrc_reportingCellStatus_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ReportingCellStatus_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_PeriodicalWithReportingCellStatus_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_PeriodicalWithReportingCellStatus_r10, PeriodicalWithReportingCellStatus_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t ReportingCellStatusOpt_r10_sequence[] = {
+ { &hf_rrc_reportingCellStatus_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ReportingCellStatus_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_ReportingCellStatusOpt_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_ReportingCellStatusOpt_r10, ReportingCellStatusOpt_r10_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_InterFreqReportCriteria_r10_vals[] = {
+ { 0, "intraFreqReportingCriteria" },
+ { 1, "interFreqReportingCriteria" },
+ { 2, "periodicalReportingCriteria" },
+ { 3, "noReporting" },
+ { 0, NULL }
+};
+
+static const per_choice_t InterFreqReportCriteria_r10_choice[] = {
+ { 0, &hf_rrc_intraFreqReportingCriteria_06, ASN1_NO_EXTENSIONS , dissect_rrc_IntraFreqReportingCriteria_r9 },
+ { 1, &hf_rrc_interFreqReportingCriteria_03, ASN1_NO_EXTENSIONS , dissect_rrc_InterFreqReportingCriteria_r10 },
+ { 2, &hf_rrc_periodicalReportingCriteria_02, ASN1_NO_EXTENSIONS , dissect_rrc_PeriodicalWithReportingCellStatus_r10 },
+ { 3, &hf_rrc_noReporting_01 , ASN1_NO_EXTENSIONS , dissect_rrc_ReportingCellStatusOpt_r10 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_InterFreqReportCriteria_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_InterFreqReportCriteria_r10, InterFreqReportCriteria_r10_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t InterFrequencyMeasurement_r10_sequence[] = {
+ { &hf_rrc_interFreqCellInfoList_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InterFreqCellInfoList_r10 },
+ { &hf_rrc_interFreqMeasQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterFreqMeasQuantity },
+ { &hf_rrc_interFreqReportingQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterFreqReportingQuantity },
+ { &hf_rrc_measurementValidity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementValidity },
+ { &hf_rrc_interFreqSetUpdate, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_AutonomousUpdateMode },
+ { &hf_rrc_adjacentFrequencyIndex, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_0_31 },
+ { &hf_rrc_interBandFrequencyIndex, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_0_31 },
+ { &hf_rrc_freqIndexListForEnhancedMeas, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FreqIndexListForEnhancedMeas },
+ { &hf_rrc_reportCriteria_05, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InterFreqReportCriteria_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_InterFrequencyMeasurement_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_InterFrequencyMeasurement_r10, InterFrequencyMeasurement_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_Positioning_GPS_ReferenceTime_r10_sequence[] = {
+ { &hf_rrc_gps_Week , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_1023 },
+ { &hf_rrc_gps_Week_Cycle_Number, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_0_7 },
+ { &hf_rrc_gps_tow_1msec , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_GPS_TOW_1msec },
+ { &hf_rrc_utran_GPSReferenceTime, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UTRAN_GPSReferenceTime },
+ { &hf_rrc_ue_Positioning_GPS_ReferenceTimeUncertainty, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_ReferenceTimeUncertainty },
+ { &hf_rrc_sfn_tow_Uncertainty, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SFN_TOW_Uncertainty },
+ { &hf_rrc_utran_GPS_DriftRate, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UTRAN_GPS_DriftRate },
+ { &hf_rrc_gps_TOW_AssistList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_GPS_TOW_AssistList },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_Positioning_GPS_ReferenceTime_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_Positioning_GPS_ReferenceTime_r10, UE_Positioning_GPS_ReferenceTime_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_Positioning_GPS_Almanac_r10_sequence[] = {
+ { &hf_rrc_wn_a , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BIT_STRING_SIZE_8 },
+ { &hf_rrc_complete_Almanac_Provided, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BOOLEAN },
+ { &hf_rrc_almanacSatInfoList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_AlmanacSatInfoList },
+ { &hf_rrc_sv_GlobalHealth , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING_SIZE_364 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_Positioning_GPS_Almanac_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_Positioning_GPS_Almanac_r10, UE_Positioning_GPS_Almanac_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t AzimuthAndElevation_r10_sequence[] = {
+ { &hf_rrc_azimuth , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_31 },
+ { &hf_rrc_elevation , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_7 },
+ { &hf_rrc_azimuthLSB , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_15 },
+ { &hf_rrc_elevationLSB , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_15 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_AzimuthAndElevation_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_AzimuthAndElevation_r10, AzimuthAndElevation_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t AcquisitionSatInfo_r10_sequence[] = {
+ { &hf_rrc_satID , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SatID },
+ { &hf_rrc_doppler0thOrder , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_M2048_2047 },
+ { &hf_rrc_extraDopplerInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ExtraDopplerInfo },
+ { &hf_rrc_codePhase , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_1022 },
+ { &hf_rrc_integerCodePhase, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_19 },
+ { &hf_rrc_gps_BitNumber , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_3 },
+ { &hf_rrc_codePhaseSearchWindow, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CodePhaseSearchWindow },
+ { &hf_rrc_azimuthAndElevation_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_AzimuthAndElevation_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_AcquisitionSatInfo_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_AcquisitionSatInfo_r10, AcquisitionSatInfo_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t AcquisitionSatInfoList_r10_sequence_of[1] = {
+ { &hf_rrc_AcquisitionSatInfoList_r10_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_AcquisitionSatInfo_r10 },
+};
+
+static int
+dissect_rrc_AcquisitionSatInfoList_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_AcquisitionSatInfoList_r10, AcquisitionSatInfoList_r10_sequence_of,
+ 1, maxSat, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_Positioning_GPS_AcquisitionAssistance_r10_sequence[] = {
+ { &hf_rrc_gps_ReferenceTime, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_GPS_TOW_1msec },
+ { &hf_rrc_utran_GPSReferenceTime, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UTRAN_GPSReferenceTime },
+ { &hf_rrc_ue_Positioning_GPS_ReferenceTimeUncertainty, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_ReferenceTimeUncertainty },
+ { &hf_rrc_satelliteInformationList_05, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_AcquisitionSatInfoList_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_Positioning_GPS_AcquisitionAssistance_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_Positioning_GPS_AcquisitionAssistance_r10, UE_Positioning_GPS_AcquisitionAssistance_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_Positioning_GPS_AssistanceData_r10_sequence[] = {
+ { &hf_rrc_ue_positioning_GPS_ReferenceTime_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_ReferenceTime_r10 },
+ { &hf_rrc_ue_positioning_GPS_ReferenceLocation, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ReferenceLocation },
+ { &hf_rrc_ue_positioning_GPS_DGPS_Corrections_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_DGPS_Corrections_r9 },
+ { &hf_rrc_ue_positioning_GPS_NavigationModel, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_NavigationModel },
+ { &hf_rrc_ue_positioning_GPS_IonosphericModel, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_IonosphericModel },
+ { &hf_rrc_ue_positioning_GPS_UTC_Model, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_UTC_Model },
+ { &hf_rrc_ue_positioning_GPS_Almanac_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_Almanac_r10 },
+ { &hf_rrc_ue_positioning_GPS_AcquisitionAssistance_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_AcquisitionAssistance_r10 },
+ { &hf_rrc_ue_positioning_GPS_Real_timeIntegrity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BadSatList },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_Positioning_GPS_AssistanceData_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_Positioning_GPS_AssistanceData_r10, UE_Positioning_GPS_AssistanceData_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_fdd_157_sequence[] = {
+ { &hf_rrc_primary_CPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_fdd_157(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_fdd_157, T_fdd_157_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_tdd_108_sequence[] = {
+ { &hf_rrc_cellParameters , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellParametersID },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_tdd_108(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_tdd_108, T_tdd_108_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_mode_01_vals[] = {
+ { 0, "fdd" },
+ { 1, "tdd" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_mode_01_choice[] = {
+ { 0, &hf_rrc_fdd_163 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_157 },
+ { 1, &hf_rrc_tdd_116 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_108 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_mode_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_mode_01, T_mode_01_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_utran_ganssreferenceTime_01_sequence[] = {
+ { &hf_rrc_timingOfCellFrames, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_3999999 },
+ { &hf_rrc_mode_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_mode_01 },
+ { &hf_rrc_referenceSfn , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_4095 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_utran_ganssreferenceTime_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_utran_ganssreferenceTime_01, T_utran_ganssreferenceTime_01_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_Positioning_GANSS_ReferenceTime_r10_sequence[] = {
+ { &hf_rrc_ganssDay , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_0_8191 },
+ { &hf_rrc_ganss_Day_Cycle_Number, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_0_7 },
+ { &hf_rrc_ganssTod , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_86399 },
+ { &hf_rrc_ganssTodUncertainty, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_0_127 },
+ { &hf_rrc_ganssTimeId , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_0_7 },
+ { &hf_rrc_utran_ganssreferenceTime_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_utran_ganssreferenceTime_01 },
+ { &hf_rrc_tutran_ganss_driftRate, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Tutran_Ganss_DriftRate },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_Positioning_GANSS_ReferenceTime_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_Positioning_GANSS_ReferenceTime_r10, UE_Positioning_GANSS_ReferenceTime_r10_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_gnss_to_id_01_vals[] = {
+ { 0, "gps" },
+ { 1, "galileo" },
+ { 2, "qzss" },
+ { 3, "glonass" },
+ { 4, "spare4" },
+ { 5, "spare3" },
+ { 6, "spare2" },
+ { 7, "spare1" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_gnss_to_id_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_Positioning_GANSS_TimeModel_r10_sequence[] = {
+ { &hf_rrc_ganss_timeModelreferenceTime, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_37799 },
+ { &hf_rrc_ganss_t_a0 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_M2147483648_2147483647 },
+ { &hf_rrc_ganss_t_a1 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_M8388608_8388607 },
+ { &hf_rrc_ganss_t_a2 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_M64_63 },
+ { &hf_rrc_gnss_to_id_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_gnss_to_id_01 },
+ { &hf_rrc_ganss_wk_number_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_0_8191 },
+ { &hf_rrc_deltaT , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_M128_127 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_Positioning_GANSS_TimeModel_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_Positioning_GANSS_TimeModel_r10, UE_Positioning_GANSS_TimeModel_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t GANSSTimeModelsList_r10_sequence_of[1] = {
+ { &hf_rrc_GANSSTimeModelsList_r10_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_GANSS_TimeModel_r10 },
+};
+
+static int
+dissect_rrc_GANSSTimeModelsList_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_GANSSTimeModelsList_r10, GANSSTimeModelsList_r10_sequence_of,
+ 1, maxGANSS_1, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t GANSSSatelliteInformation_r10_sequence[] = {
+ { &hf_rrc_ganssSatId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_63 },
+ { &hf_rrc_dopplerZeroOrder, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_M2048_2047 },
+ { &hf_rrc_extraDoppler , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ExtraDoppler },
+ { &hf_rrc_codePhase_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_1023 },
+ { &hf_rrc_integerCodePhase_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_127 },
+ { &hf_rrc_codePhaseSearchWindow_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BIT_STRING_SIZE_5 },
+ { &hf_rrc_azimuthandElevation_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_AzimuthAndElevation_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_GANSSSatelliteInformation_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_GANSSSatelliteInformation_r10, GANSSSatelliteInformation_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t GANSSSatelliteInformationList_r10_sequence_of[1] = {
+ { &hf_rrc_GANSSSatelliteInformationList_r10_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_GANSSSatelliteInformation_r10 },
+};
+
+static int
+dissect_rrc_GANSSSatelliteInformationList_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_GANSSSatelliteInformationList_r10, GANSSSatelliteInformationList_r10_sequence_of,
+ 1, maxGANSSSat, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_Positioning_GANSS_ReferenceMeasurementInfo_r10_sequence[] = {
+ { &hf_rrc_ganssSignalId , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_GANSS_Signal_Id },
+ { &hf_rrc_satelliteInformationList_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_GANSSSatelliteInformationList_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_Positioning_GANSS_ReferenceMeasurementInfo_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_Positioning_GANSS_ReferenceMeasurementInfo_r10, UE_Positioning_GANSS_ReferenceMeasurementInfo_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_Positioning_GANSS_Almanac_r10_sequence[] = {
+ { &hf_rrc_ganss_wk_number , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_255 },
+ { &hf_rrc_complete_Almanac_Provided, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BOOLEAN },
+ { &hf_rrc_alm_keplerianParameters, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ALM_keplerianParameters },
+ { &hf_rrc_alm_keplerianNAVAlmanac, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ALM_NAVKeplerianSet },
+ { &hf_rrc_alm_keplerianReducedAlmanac, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ALM_ReducedKeplerianSet },
+ { &hf_rrc_alm_keplerianMidiAlmanac, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ALM_MidiAlmanacSet },
+ { &hf_rrc_alm_keplerianGLONASS, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ALM_GlonassAlmanacSet },
+ { &hf_rrc_alm_ecefSBASAlmanac, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ALM_ECEFsbasAlmanacSet },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_Positioning_GANSS_Almanac_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_Positioning_GANSS_Almanac_r10, UE_Positioning_GANSS_Almanac_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t GANSSGenericData_r10_sequence[] = {
+ { &hf_rrc_ganssId , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_0_7 },
+ { &hf_rrc_uePositiningGANSSsbasID, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GANSS_SBAS_ID },
+ { &hf_rrc_ganssTimeModelsList_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_GANSSTimeModelsList_r10 },
+ { &hf_rrc_uePositioningDGANSSCorrections_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_DGANSSCorrections_r9 },
+ { &hf_rrc_uePositioningGANSSNavigationModel, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GANSS_NavigationModel },
+ { &hf_rrc_uePositioningGANSSAddNavigationModels, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GANSS_AddNavigationModels },
+ { &hf_rrc_uePositioningGANSSRealTimeIntegrity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GANSS_RealTimeIntegrity },
+ { &hf_rrc_uePositioningGANSSDataBitAssistance, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GANSS_Data_Bit_Assistance },
+ { &hf_rrc_uePositioningGANSSReferenceMeasurementInfo_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GANSS_ReferenceMeasurementInfo_r10 },
+ { &hf_rrc_uePositioningGANSSAlmanac_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GANSS_Almanac_r10 },
+ { &hf_rrc_uePositioningGANSSUTCModel, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GANSS_UTCModel },
+ { &hf_rrc_uePositioningGANSSAddUTCModels, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GANSS_AddUTCModels },
+ { &hf_rrc_uePositioningGANSSAuxiliaryInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GANSS_AuxiliaryInfo },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_GANSSGenericData_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_GANSSGenericData_r10, GANSSGenericData_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t GANSSGenericDataList_r10_sequence_of[1] = {
+ { &hf_rrc_GANSSGenericDataList_r10_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_GANSSGenericData_r10 },
+};
+
+static int
+dissect_rrc_GANSSGenericDataList_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_GANSSGenericDataList_r10, GANSSGenericDataList_r10_sequence_of,
+ 1, maxGANSS, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_Positioning_GANSS_AssistanceData_r10_sequence[] = {
+ { &hf_rrc_ue_positioning_GANSS_ReferenceTime_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GANSS_ReferenceTime_r10 },
+ { &hf_rrc_uePositioningGanssReferencePosition, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ReferenceLocationGANSS },
+ { &hf_rrc_uePositioningGanssIonosphericModel, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GANSS_IonosphericModel },
+ { &hf_rrc_uePositioningGanssAddIonoModel, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GANSS_AddIonoModel },
+ { &hf_rrc_uePositioningGanssEarthOrientationPara, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GANSS_EarthOrientPara },
+ { &hf_rrc_ganssGenericDataList_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_GANSSGenericDataList_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_Positioning_GANSS_AssistanceData_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_Positioning_GANSS_AssistanceData_r10, UE_Positioning_GANSS_AssistanceData_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_Positioning_Measurement_r10_sequence[] = {
+ { &hf_rrc_ue_positioning_ReportingQuantity_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_ReportingQuantity_r8 },
+ { &hf_rrc_measurementValidity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementValidity },
+ { &hf_rrc_reportCriteria_18, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_ReportCriteria_r7 },
+ { &hf_rrc_ue_positioning_OTDOA_AssistanceData_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_OTDOA_AssistanceData_r7 },
+ { &hf_rrc_ue_positioning_GPS_AssistanceData_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_AssistanceData_r10 },
+ { &hf_rrc_ue_positioning_GANSS_AssistanceData_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GANSS_AssistanceData_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_Positioning_Measurement_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_Positioning_Measurement_r10, UE_Positioning_Measurement_r10_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_MeasurementType_r10_vals[] = {
+ { 0, "intraFrequencyMeasurement" },
+ { 1, "interFrequencyMeasurement" },
+ { 2, "interRATMeasurement" },
+ { 3, "up-Measurement" },
+ { 4, "trafficVolumeMeasurement" },
+ { 5, "qualityMeasurement" },
+ { 6, "ue-InternalMeasurement" },
+ { 7, "csgProximityDetection" },
+ { 0, NULL }
+};
+
+static const per_choice_t MeasurementType_r10_choice[] = {
+ { 0, &hf_rrc_intraFrequencyMeasurement_05, ASN1_NO_EXTENSIONS , dissect_rrc_IntraFrequencyMeasurement_r10 },
+ { 1, &hf_rrc_interFrequencyMeasurement_06, ASN1_NO_EXTENSIONS , dissect_rrc_InterFrequencyMeasurement_r10 },
+ { 2, &hf_rrc_interRATMeasurement_04, ASN1_NO_EXTENSIONS , dissect_rrc_InterRATMeasurement_r9 },
+ { 3, &hf_rrc_up_Measurement_04, ASN1_NO_EXTENSIONS , dissect_rrc_UE_Positioning_Measurement_r10 },
+ { 4, &hf_rrc_trafficVolumeMeasurement, ASN1_NO_EXTENSIONS , dissect_rrc_TrafficVolumeMeasurement },
+ { 5, &hf_rrc_qualityMeasurement, ASN1_NO_EXTENSIONS , dissect_rrc_QualityMeasurement },
+ { 6, &hf_rrc_ue_InternalMeasurement_01, ASN1_NO_EXTENSIONS , dissect_rrc_UE_InternalMeasurement_r4 },
+ { 7, &hf_rrc_csgProximityDetection, ASN1_NO_EXTENSIONS , dissect_rrc_CSGProximityDetection },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_MeasurementType_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_MeasurementType_r10, MeasurementType_r10_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_modify_07_sequence[] = {
+ { &hf_rrc_measurementType_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementType_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_modify_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_modify_07, T_modify_07_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_MeasurementCommand_r10_vals[] = {
+ { 0, "setup" },
+ { 1, "modify" },
+ { 2, "release" },
+ { 0, NULL }
+};
+
+static const per_choice_t MeasurementCommand_r10_choice[] = {
+ { 0, &hf_rrc_setup_06 , ASN1_NO_EXTENSIONS , dissect_rrc_MeasurementType_r10 },
+ { 1, &hf_rrc_modify_07 , ASN1_NO_EXTENSIONS , dissect_rrc_T_modify_07 },
+ { 2, &hf_rrc_release_01 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_MeasurementCommand_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_MeasurementCommand_r10, MeasurementCommand_r10_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_activate_04_sequence[] = {
+ { &hf_rrc_tgcfn , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TGCFN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_activate_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_activate_04, T_activate_04_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_tgps_Status_04_vals[] = {
+ { 0, "activate" },
+ { 1, "deactivate" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_tgps_Status_04_choice[] = {
+ { 0, &hf_rrc_activate_04 , ASN1_NO_EXTENSIONS , dissect_rrc_T_activate_04 },
+ { 1, &hf_rrc_deactivate , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_tgps_Status_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_tgps_Status_04, T_tgps_Status_04_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_freqSpecificCompressedMode_01_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_freqSpecificCompressedMode_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t TGP_SequenceShort_r10_sequence[] = {
+ { &hf_rrc_tgpsi , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TGPSI },
+ { &hf_rrc_tgps_Status_04 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tgps_Status_04 },
+ { &hf_rrc_freqSpecificCompressedMode_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_freqSpecificCompressedMode_01 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_TGP_SequenceShort_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_TGP_SequenceShort_r10, TGP_SequenceShort_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxTGPS_OF_TGP_SequenceShort_r10_sequence_of[1] = {
+ { &hf_rrc_tgp_SequenceShortList_item_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TGP_SequenceShort_r10 },
+};
+
+static int
+dissect_rrc_SEQUENCE_SIZE_1_maxTGPS_OF_TGP_SequenceShort_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_SEQUENCE_SIZE_1_maxTGPS_OF_TGP_SequenceShort_r10, SEQUENCE_SIZE_1_maxTGPS_OF_TGP_SequenceShort_r10_sequence_of,
+ 1, maxTGPS, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t DPCH_CompressedModeStatusInfo_r10_sequence[] = {
+ { &hf_rrc_tgps_Reconfiguration_CFN, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TGPS_Reconfiguration_CFN },
+ { &hf_rrc_tgp_SequenceShortList_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SEQUENCE_SIZE_1_maxTGPS_OF_TGP_SequenceShort_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_DPCH_CompressedModeStatusInfo_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_DPCH_CompressedModeStatusInfo_r10, DPCH_CompressedModeStatusInfo_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t MeasurementControl_r10_IEs_sequence[] = {
+ { &hf_rrc_measurementIdentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MeasurementIdentity },
+ { &hf_rrc_measurementCommand_06, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MeasurementCommand_r10 },
+ { &hf_rrc_measurementReportingMode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementReportingMode },
+ { &hf_rrc_additionalMeasurementList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_AdditionalMeasurementID_List },
+ { &hf_rrc_cellDCHMeasOccasionInfo_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellDCHMeasOccasionInfo_TDD128_r9 },
+ { &hf_rrc_dpch_CompressedModeStatusInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DPCH_CompressedModeStatusInfo_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_MeasurementControl_r10_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_MeasurementControl_r10_IEs, MeasurementControl_r10_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_59_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_59(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_59, T_nonCriticalExtensions_59_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_r10_04_sequence[] = {
+ { &hf_rrc_measurementControl_r10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MeasurementControl_r10_IEs },
+ { &hf_rrc_measurementControl_r10_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
+ { &hf_rrc_nonCriticalExtensions_59, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_59 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_r10_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_r10_04, T_r10_04_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_criticalExtensions_47_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_47(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_47, T_criticalExtensions_47_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_criticalExtensions_46_vals[] = {
+ { 0, "r10" },
+ { 1, "criticalExtensions" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_criticalExtensions_46_choice[] = {
+ { 0, &hf_rrc_r10_04 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r10_04 },
+ { 1, &hf_rrc_criticalExtensions_47, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_47 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_46(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_46, T_criticalExtensions_46_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_criticalExtensions_45_vals[] = {
{ 0, "r9" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_41_choice[] = {
+static const per_choice_t T_criticalExtensions_45_choice[] = {
{ 0, &hf_rrc_r9_04 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r9_04 },
- { 1, &hf_rrc_criticalExtensions_42, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_42 },
+ { 1, &hf_rrc_criticalExtensions_46, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_46 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_41(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_45(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_41, T_criticalExtensions_41_choice,
+ ett_rrc_T_criticalExtensions_45, T_criticalExtensions_45_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_40_vals[] = {
+static const value_string rrc_T_criticalExtensions_44_vals[] = {
{ 0, "r8" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_40_choice[] = {
+static const per_choice_t T_criticalExtensions_44_choice[] = {
{ 0, &hf_rrc_r8_05 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r8_05 },
- { 1, &hf_rrc_criticalExtensions_41, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_41 },
+ { 1, &hf_rrc_criticalExtensions_45, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_45 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_40(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_44(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_40, T_criticalExtensions_40_choice,
+ ett_rrc_T_criticalExtensions_44, T_criticalExtensions_44_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_39_vals[] = {
+static const value_string rrc_T_criticalExtensions_43_vals[] = {
{ 0, "r7" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_39_choice[] = {
+static const per_choice_t T_criticalExtensions_43_choice[] = {
{ 0, &hf_rrc_r7_04 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r7_04 },
- { 1, &hf_rrc_criticalExtensions_40, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_40 },
+ { 1, &hf_rrc_criticalExtensions_44, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_44 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_39(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_43(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_39, T_criticalExtensions_39_choice,
+ ett_rrc_T_criticalExtensions_43, T_criticalExtensions_43_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_38_vals[] = {
+static const value_string rrc_T_criticalExtensions_42_vals[] = {
{ 0, "r6" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_38_choice[] = {
+static const per_choice_t T_criticalExtensions_42_choice[] = {
{ 0, &hf_rrc_r6_05 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r6_05 },
- { 1, &hf_rrc_criticalExtensions_39, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_39 },
+ { 1, &hf_rrc_criticalExtensions_43, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_43 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_38(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_42(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_38, T_criticalExtensions_38_choice,
+ ett_rrc_T_criticalExtensions_42, T_criticalExtensions_42_choice,
NULL);
return offset;
@@ -59307,7 +62743,7 @@ dissect_rrc_T_criticalExtensions_38(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_later_than_r4_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier_MSP, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_38, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_38 },
+ { &hf_rrc_criticalExtensions_42, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_42 },
{ NULL, 0, 0, NULL }
};
@@ -59320,22 +62756,22 @@ dissect_rrc_T_later_than_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const value_string rrc_T_criticalExtensions_37_vals[] = {
+static const value_string rrc_T_criticalExtensions_41_vals[] = {
{ 0, "r4" },
{ 1, "later-than-r4" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_37_choice[] = {
+static const per_choice_t T_criticalExtensions_41_choice[] = {
{ 0, &hf_rrc_r4_03 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r4_03 },
{ 1, &hf_rrc_later_than_r4 , ASN1_NO_EXTENSIONS , dissect_rrc_T_later_than_r4 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_37(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_41(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_37, T_criticalExtensions_37_choice,
+ ett_rrc_T_criticalExtensions_41, T_criticalExtensions_41_choice,
NULL);
return offset;
@@ -59344,7 +62780,7 @@ dissect_rrc_T_criticalExtensions_37(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_later_than_r3_09_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_37, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_37 },
+ { &hf_rrc_criticalExtensions_41, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_41 },
{ NULL, 0, 0, NULL }
};
@@ -59371,7 +62807,7 @@ static const per_choice_t MeasurementControl_choice[] = {
static int
dissect_rrc_MeasurementControl(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 237 "../../asn1/rrc/rrc.cnf"
+#line 282 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "MeasurementControl");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_MeasurementControl, MeasurementControl_choice,
@@ -59424,14 +62860,14 @@ dissect_rrc_PagingRecordTypeID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
}
-static const per_sequence_t T_nonCriticalExtensions_58_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_63_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_58(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_63(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_58, T_nonCriticalExtensions_58_sequence);
+ ett_rrc_T_nonCriticalExtensions_63, T_nonCriticalExtensions_63_sequence);
return offset;
}
@@ -59439,7 +62875,7 @@ dissect_rrc_T_nonCriticalExtensions_58(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_laterNonCriticalExtensions_22_sequence[] = {
{ &hf_rrc_pagingType2_r3_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_58, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_58 },
+ { &hf_rrc_nonCriticalExtensions_63, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_63 },
{ NULL, 0, 0, NULL }
};
@@ -59463,7 +62899,7 @@ static const per_sequence_t PagingType2_sequence[] = {
static int
dissect_rrc_PagingType2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 253 "../../asn1/rrc/rrc.cnf"
+#line 298 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "PagingType2");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_PagingType2, PagingType2_sequence);
@@ -59499,36 +62935,36 @@ dissect_rrc_UL_ChannelRequirementWithCPCH_SetID(tvbuff_t *tvb _U_, int offset _U
}
-static const per_sequence_t T_fdd_16_sequence[] = {
+static const per_sequence_t T_fdd_17_sequence[] = {
{ &hf_rrc_dummy_05 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_PDSCH_Information },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_16, T_fdd_16_sequence);
+ ett_rrc_T_fdd_17, T_fdd_17_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_10_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_11_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_10_choice[] = {
- { 0, &hf_rrc_fdd_16 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_16 },
+static const per_choice_t T_modeSpecificInfo_11_choice[] = {
+ { 0, &hf_rrc_fdd_17 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_17 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_10, T_modeSpecificInfo_10_choice,
+ ett_rrc_T_modeSpecificInfo_11, T_modeSpecificInfo_11_choice,
NULL);
return offset;
@@ -59550,7 +62986,7 @@ static const per_sequence_t PhysicalChannelReconfiguration_r3_IEs_sequence[] = {
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
{ &hf_rrc_maxAllowedUL_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MaxAllowedUL_TX_Power },
{ &hf_rrc_ul_ChannelRequirement_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_ChannelRequirementWithCPCH_SetID },
- { &hf_rrc_modeSpecificInfo_10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_10 },
+ { &hf_rrc_modeSpecificInfo_11, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_11 },
{ &hf_rrc_dl_CommonInformation, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonInformation },
{ &hf_rrc_dl_InformationPerRL_List, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_InformationPerRL_List },
{ NULL, 0, 0, NULL }
@@ -59688,14 +63124,14 @@ dissect_rrc_PhysicalChannelReconfiguration_v770ext_IEs(tvbuff_t *tvb _U_, int of
}
-static const per_sequence_t T_nonCriticalExtensions_59_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_64_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_59(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_64(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_59, T_nonCriticalExtensions_59_sequence);
+ ett_rrc_T_nonCriticalExtensions_64, T_nonCriticalExtensions_64_sequence);
return offset;
}
@@ -59703,7 +63139,7 @@ dissect_rrc_T_nonCriticalExtensions_59(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v770NonCriticalExtensions_04_sequence[] = {
{ &hf_rrc_physicalChannelReconfiguration_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PhysicalChannelReconfiguration_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_59, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_59 },
+ { &hf_rrc_nonCriticalExtensions_64, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_64 },
{ NULL, 0, 0, NULL }
};
@@ -59830,36 +63266,36 @@ dissect_rrc_UL_ChannelRequirementWithCPCH_SetID_r4(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_fdd_17_sequence[] = {
+static const per_sequence_t T_fdd_18_sequence[] = {
{ &hf_rrc_dummy_05 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_PDSCH_Information },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_17, T_fdd_17_sequence);
+ ett_rrc_T_fdd_18, T_fdd_18_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_11_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_12_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_11_choice[] = {
- { 0, &hf_rrc_fdd_17 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_17 },
+static const per_choice_t T_modeSpecificInfo_12_choice[] = {
+ { 0, &hf_rrc_fdd_18 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_18 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_11, T_modeSpecificInfo_11_choice,
+ ett_rrc_T_modeSpecificInfo_12, T_modeSpecificInfo_12_choice,
NULL);
return offset;
@@ -59881,7 +63317,7 @@ static const per_sequence_t PhysicalChannelReconfiguration_r4_IEs_sequence[] = {
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
{ &hf_rrc_maxAllowedUL_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MaxAllowedUL_TX_Power },
{ &hf_rrc_ul_ChannelRequirement_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_ChannelRequirementWithCPCH_SetID_r4 },
- { &hf_rrc_modeSpecificInfo_11, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_11 },
+ { &hf_rrc_modeSpecificInfo_12, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_12 },
{ &hf_rrc_dl_CommonInformation_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonInformation_r4 },
{ &hf_rrc_dl_InformationPerRL_List_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_InformationPerRL_List_r4 },
{ NULL, 0, 0, NULL }
@@ -59896,14 +63332,14 @@ dissect_rrc_PhysicalChannelReconfiguration_r4_IEs(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_nonCriticalExtensions_60_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_65_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_60(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_65(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_60, T_nonCriticalExtensions_60_sequence);
+ ett_rrc_T_nonCriticalExtensions_65, T_nonCriticalExtensions_65_sequence);
return offset;
}
@@ -59911,7 +63347,7 @@ dissect_rrc_T_nonCriticalExtensions_60(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v770NonCriticalExtensions_05_sequence[] = {
{ &hf_rrc_physicalChannelReconfiguration_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PhysicalChannelReconfiguration_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_60, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_60 },
+ { &hf_rrc_nonCriticalExtensions_65, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_65 },
{ NULL, 0, 0, NULL }
};
@@ -60008,36 +63444,36 @@ dissect_rrc_UL_ChannelRequirementWithCPCH_SetID_r5(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_fdd_18_sequence[] = {
+static const per_sequence_t T_fdd_19_sequence[] = {
{ &hf_rrc_dummy_05 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_PDSCH_Information },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_18, T_fdd_18_sequence);
+ ett_rrc_T_fdd_19, T_fdd_19_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_12_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_13_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_12_choice[] = {
- { 0, &hf_rrc_fdd_18 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_18 },
+static const per_choice_t T_modeSpecificInfo_13_choice[] = {
+ { 0, &hf_rrc_fdd_19 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_19 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_12, T_modeSpecificInfo_12_choice,
+ ett_rrc_T_modeSpecificInfo_13, T_modeSpecificInfo_13_choice,
NULL);
return offset;
@@ -60060,7 +63496,7 @@ static const per_sequence_t PhysicalChannelReconfiguration_r5_IEs_sequence[] = {
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
{ &hf_rrc_maxAllowedUL_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MaxAllowedUL_TX_Power },
{ &hf_rrc_ul_ChannelRequirement_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_ChannelRequirementWithCPCH_SetID_r5 },
- { &hf_rrc_modeSpecificInfo_12, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_12 },
+ { &hf_rrc_modeSpecificInfo_13, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_13 },
{ &hf_rrc_dl_HSPDSCH_Information, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_HSPDSCH_Information },
{ &hf_rrc_dl_CommonInformation_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonInformation_r5 },
{ &hf_rrc_dl_InformationPerRL_List_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_InformationPerRL_List_r5 },
@@ -60076,14 +63512,14 @@ dissect_rrc_PhysicalChannelReconfiguration_r5_IEs(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_nonCriticalExtensions_61_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_66_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_61(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_66(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_61, T_nonCriticalExtensions_61_sequence);
+ ett_rrc_T_nonCriticalExtensions_66, T_nonCriticalExtensions_66_sequence);
return offset;
}
@@ -60091,7 +63527,7 @@ dissect_rrc_T_nonCriticalExtensions_61(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v770NonCriticalExtensions_06_sequence[] = {
{ &hf_rrc_physicalChannelReconfiguration_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PhysicalChannelReconfiguration_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_61, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_61 },
+ { &hf_rrc_nonCriticalExtensions_66, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_66 },
{ NULL, 0, 0, NULL }
};
@@ -60185,14 +63621,14 @@ dissect_rrc_PhysicalChannelReconfiguration_v6b0ext_IEs(tvbuff_t *tvb _U_, int of
}
-static const per_sequence_t T_nonCriticalExtensions_62_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_67_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_62(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_67(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_62, T_nonCriticalExtensions_62_sequence);
+ ett_rrc_T_nonCriticalExtensions_67, T_nonCriticalExtensions_67_sequence);
return offset;
}
@@ -60200,7 +63636,7 @@ dissect_rrc_T_nonCriticalExtensions_62(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v770NonCriticalExtensions_07_sequence[] = {
{ &hf_rrc_physicalChannelReconfiguration_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PhysicalChannelReconfiguration_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_62, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_62 },
+ { &hf_rrc_nonCriticalExtensions_67, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_67 },
{ NULL, 0, 0, NULL }
};
@@ -60360,14 +63796,14 @@ dissect_rrc_PhysicalChannelReconfiguration_v7g0ext_IEs(tvbuff_t *tvb _U_, int of
}
-static const per_sequence_t T_nonCriticalExtensions_63_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_68_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_63(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_68(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_63, T_nonCriticalExtensions_63_sequence);
+ ett_rrc_T_nonCriticalExtensions_68, T_nonCriticalExtensions_68_sequence);
return offset;
}
@@ -60375,7 +63811,7 @@ dissect_rrc_T_nonCriticalExtensions_63(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v7g0NonCriticalExtensions_06_sequence[] = {
{ &hf_rrc_physicalChannelReconfiguration_v7g0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PhysicalChannelReconfiguration_v7g0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_63, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_63 },
+ { &hf_rrc_nonCriticalExtensions_68, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_68 },
{ NULL, 0, 0, NULL }
};
@@ -60541,14 +63977,14 @@ dissect_rrc_PhysicalChannelReconfiguration_v8a0ext_IEs(tvbuff_t *tvb _U_, int of
}
-static const per_sequence_t T_nonCriticalExtensions_64_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_69_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_64(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_69(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_64, T_nonCriticalExtensions_64_sequence);
+ ett_rrc_T_nonCriticalExtensions_69, T_nonCriticalExtensions_69_sequence);
return offset;
}
@@ -60556,7 +63992,7 @@ dissect_rrc_T_nonCriticalExtensions_64(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v8a0NonCriticalExtensions_04_sequence[] = {
{ &hf_rrc_physicalChannelReconfiguration_v8a0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PhysicalChannelReconfiguration_v8a0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_64, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_64 },
+ { &hf_rrc_nonCriticalExtensions_69, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_69 },
{ NULL, 0, 0, NULL }
};
@@ -60724,14 +64160,14 @@ dissect_rrc_PhysicalChannelReconfiguration_v950ext_IEs(tvbuff_t *tvb _U_, int of
}
-static const per_sequence_t T_nonCriticalExtensions_65_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_70_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_65(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_70(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_65, T_nonCriticalExtensions_65_sequence);
+ ett_rrc_T_nonCriticalExtensions_70, T_nonCriticalExtensions_70_sequence);
return offset;
}
@@ -60739,7 +64175,7 @@ dissect_rrc_T_nonCriticalExtensions_65(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v950NonCriticalExtensions_03_sequence[] = {
{ &hf_rrc_physicalChannelReconfiguration_v950ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PhysicalChannelReconfiguration_v950ext_IEs },
- { &hf_rrc_nonCriticalExtensions_65, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_65 },
+ { &hf_rrc_nonCriticalExtensions_70, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_70 },
{ NULL, 0, 0, NULL }
};
@@ -60768,145 +64204,264 @@ dissect_rrc_T_r9_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_49_sequence[] = {
+static const value_string rrc_T_responseToChangeOfUE_Capability_03_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_responseToChangeOfUE_Capability_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t PhysicalChannelReconfiguration_r10_IEs_sequence[] = {
+ { &hf_rrc_integrityProtectionModeInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntegrityProtectionModeInfo_r7 },
+ { &hf_rrc_cipheringModeInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CipheringModeInfo_r7 },
+ { &hf_rrc_activationTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ActivationTime },
+ { &hf_rrc_delayRestrictionFlag, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DelayRestrictionFlag },
+ { &hf_rrc_new_U_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_U_RNTI },
+ { &hf_rrc_new_C_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_C_RNTI },
+ { &hf_rrc_new_DSCH_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DSCH_RNTI },
+ { &hf_rrc_new_H_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_H_RNTI },
+ { &hf_rrc_newPrimary_E_RNTI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RNTI },
+ { &hf_rrc_newSecondary_E_RNTI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RNTI },
+ { &hf_rrc_rrc_StateIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_StateIndicator },
+ { &hf_rrc_ueMobilityStateIndicator, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_High_MobilityDetected },
+ { &hf_rrc_utran_DRX_CycleLengthCoeff_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UTRAN_DRX_CycleLengthCoefficient_r7 },
+ { &hf_rrc_cn_InformationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_InformationInfo_r6 },
+ { &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
+ { &hf_rrc_supportForChangeOfUE_Capability, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BOOLEAN },
+ { &hf_rrc_responseToChangeOfUE_Capability_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_responseToChangeOfUE_Capability_03 },
+ { &hf_rrc_dl_CounterSynchronisationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CounterSynchronisationInfo_r5 },
+ { &hf_rrc_harqInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HARQ_Info_r7 },
+ { &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
+ { &hf_rrc_multi_frequencyInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Multi_frequencyInfo_LCR_r7 },
+ { &hf_rrc_dtx_drx_TimingInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DTX_DRX_TimingInfo_r7 },
+ { &hf_rrc_dtx_drx_Info , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DTX_DRX_Info_r7 },
+ { &hf_rrc_hs_scch_LessInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_SCCH_LessInfo_r7 },
+ { &hf_rrc_mimoParameters_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MIMO_Parameters_r9 },
+ { &hf_rrc_controlChannelDRXInfo_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ControlChannelDRXInfo_TDD128_r8 },
+ { &hf_rrc_sps_Information_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SPS_Information_TDD128_r8 },
+ { &hf_rrc_maxAllowedUL_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MaxAllowedUL_TX_Power },
+ { &hf_rrc_ul_DPCH_Info_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DPCH_Info_r7 },
+ { &hf_rrc_ul_EDCH_Information_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_EDCH_Information_r9 },
+ { &hf_rrc_ul_SecondaryCellInfoFDD, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_SecondaryCellInfoFDD },
+ { &hf_rrc_ul_MulticarrierEDCHInfo_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_MulticarrierEDCHInfo_TDD128 },
+ { &hf_rrc_dl_HSPDSCH_Information_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_HSPDSCH_Information_r9 },
+ { &hf_rrc_dl_CommonInformation_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonInformation_r10 },
+ { &hf_rrc_dl_InformationPerRL_List_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_InformationPerRL_List_r8 },
+ { &hf_rrc_dl_SecondaryCellInfoFDD_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_SecondaryCellInfoFDD_r10 },
+ { &hf_rrc_additionalDLSecCellInfoListFDD, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_AdditionalDLSecCellInfoListFDD },
+ { &hf_rrc_mu_MIMO_Info_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MU_MIMO_Info_TDD128 },
+ { &hf_rrc_mbms_PL_ServiceRestrictInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MBMS_PL_ServiceRestrictInfo_r6 },
+ { &hf_rrc_cellDCHMeasOccasionInfo_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellDCHMeasOccasionInfo_TDD128_r9 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_49(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_PhysicalChannelReconfiguration_r10_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_49, T_criticalExtensions_49_sequence);
+ ett_rrc_PhysicalChannelReconfiguration_r10_IEs, PhysicalChannelReconfiguration_r10_IEs_sequence);
return offset;
}
-static const value_string rrc_T_criticalExtensions_48_vals[] = {
+static const per_sequence_t T_nonCriticalExtensions_71_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_71(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_71, T_nonCriticalExtensions_71_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_r10_05_sequence[] = {
+ { &hf_rrc_physicalChannelReconfiguration_r10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PhysicalChannelReconfiguration_r10_IEs },
+ { &hf_rrc_physicalChannelReconfiguration_r10_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
+ { &hf_rrc_nonCriticalExtensions_71, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_71 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_r10_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_r10_05, T_r10_05_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_criticalExtensions_55_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_55(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_55, T_criticalExtensions_55_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_criticalExtensions_54_vals[] = {
+ { 0, "r10" },
+ { 1, "criticalExtensions" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_criticalExtensions_54_choice[] = {
+ { 0, &hf_rrc_r10_05 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r10_05 },
+ { 1, &hf_rrc_criticalExtensions_55, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_55 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_54(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_54, T_criticalExtensions_54_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_criticalExtensions_53_vals[] = {
{ 0, "r9" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_48_choice[] = {
+static const per_choice_t T_criticalExtensions_53_choice[] = {
{ 0, &hf_rrc_r9_05 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r9_05 },
- { 1, &hf_rrc_criticalExtensions_49, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_49 },
+ { 1, &hf_rrc_criticalExtensions_54, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_54 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_48(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_53(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_48, T_criticalExtensions_48_choice,
+ ett_rrc_T_criticalExtensions_53, T_criticalExtensions_53_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_47_vals[] = {
+static const value_string rrc_T_criticalExtensions_52_vals[] = {
{ 0, "r8" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_47_choice[] = {
+static const per_choice_t T_criticalExtensions_52_choice[] = {
{ 0, &hf_rrc_r8_06 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r8_06 },
- { 1, &hf_rrc_criticalExtensions_48, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_48 },
+ { 1, &hf_rrc_criticalExtensions_53, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_53 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_47(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_52(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_47, T_criticalExtensions_47_choice,
+ ett_rrc_T_criticalExtensions_52, T_criticalExtensions_52_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_46_vals[] = {
+static const value_string rrc_T_criticalExtensions_51_vals[] = {
{ 0, "r7" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_46_choice[] = {
+static const per_choice_t T_criticalExtensions_51_choice[] = {
{ 0, &hf_rrc_r7_05 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r7_05 },
- { 1, &hf_rrc_criticalExtensions_47, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_47 },
+ { 1, &hf_rrc_criticalExtensions_52, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_52 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_46(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_51(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_46, T_criticalExtensions_46_choice,
+ ett_rrc_T_criticalExtensions_51, T_criticalExtensions_51_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_45_vals[] = {
+static const value_string rrc_T_criticalExtensions_50_vals[] = {
{ 0, "r6" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_45_choice[] = {
+static const per_choice_t T_criticalExtensions_50_choice[] = {
{ 0, &hf_rrc_r6_06 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r6_06 },
- { 1, &hf_rrc_criticalExtensions_46, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_46 },
+ { 1, &hf_rrc_criticalExtensions_51, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_51 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_45(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_50(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_45, T_criticalExtensions_45_choice,
+ ett_rrc_T_criticalExtensions_50, T_criticalExtensions_50_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_44_vals[] = {
+static const value_string rrc_T_criticalExtensions_49_vals[] = {
{ 0, "r5" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_44_choice[] = {
+static const per_choice_t T_criticalExtensions_49_choice[] = {
{ 0, &hf_rrc_r5_04 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r5_04 },
- { 1, &hf_rrc_criticalExtensions_45, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_45 },
+ { 1, &hf_rrc_criticalExtensions_50, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_50 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_44(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_49(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_44, T_criticalExtensions_44_choice,
+ ett_rrc_T_criticalExtensions_49, T_criticalExtensions_49_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_43_vals[] = {
+static const value_string rrc_T_criticalExtensions_48_vals[] = {
{ 0, "r4" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_43_choice[] = {
+static const per_choice_t T_criticalExtensions_48_choice[] = {
{ 0, &hf_rrc_r4_04 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r4_04 },
- { 1, &hf_rrc_criticalExtensions_44, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_44 },
+ { 1, &hf_rrc_criticalExtensions_49, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_49 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_43(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_48(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_43, T_criticalExtensions_43_choice,
+ ett_rrc_T_criticalExtensions_48, T_criticalExtensions_48_choice,
NULL);
return offset;
@@ -60915,7 +64470,7 @@ dissect_rrc_T_criticalExtensions_43(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_later_than_r3_10_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_43, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_43 },
+ { &hf_rrc_criticalExtensions_48, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_48 },
{ NULL, 0, 0, NULL }
};
@@ -60942,7 +64497,7 @@ static const per_choice_t PhysicalChannelReconfiguration_choice[] = {
static int
dissect_rrc_PhysicalChannelReconfiguration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 257 "../../asn1/rrc/rrc.cnf"
+#line 302 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "PhysicalChannelReconfiguration");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_PhysicalChannelReconfiguration, PhysicalChannelReconfiguration_choice,
@@ -61271,14 +64826,14 @@ dissect_rrc_PhysicalSharedChannelAllocation_r3_IEs(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_nonCriticalExtensions_68_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_74_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_68(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_74(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_68, T_nonCriticalExtensions_68_sequence);
+ ett_rrc_T_nonCriticalExtensions_74, T_nonCriticalExtensions_74_sequence);
return offset;
}
@@ -61286,7 +64841,7 @@ dissect_rrc_T_nonCriticalExtensions_68(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_laterNonCriticalExtensions_26_sequence[] = {
{ &hf_rrc_physicalSharedChannelAllocation_r3_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_68, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_68 },
+ { &hf_rrc_nonCriticalExtensions_74, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_74 },
{ NULL, 0, 0, NULL }
};
@@ -61314,36 +64869,36 @@ dissect_rrc_T_r3_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_tdd128_42_sequence[] = {
+static const per_sequence_t T_tdd128_44_sequence[] = {
{ &hf_rrc_tpc_StepSize , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TPC_StepSizeTDD },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_42(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_44(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_42, T_tdd128_42_sequence);
+ ett_rrc_T_tdd128_44, T_tdd128_44_sequence);
return offset;
}
-static const value_string rrc_T_tddOption_14_vals[] = {
+static const value_string rrc_T_tddOption_15_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tddOption_14_choice[] = {
- { 0, &hf_rrc_tdd384_09 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 1, &hf_rrc_tdd128_43 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_42 },
+static const per_choice_t T_tddOption_15_choice[] = {
+ { 0, &hf_rrc_tdd384_10 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_tdd128_45 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_44 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tddOption_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tddOption_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tddOption_14, T_tddOption_14_choice,
+ ett_rrc_T_tddOption_15, T_tddOption_15_choice,
NULL);
return offset;
@@ -61352,7 +64907,7 @@ dissect_rrc_T_tddOption_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
static const per_sequence_t PUSCH_PowerControlInfo_r4_sequence[] = {
{ &hf_rrc_ul_TargetSIR , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_TargetSIR },
- { &hf_rrc_tddOption_14 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_14 },
+ { &hf_rrc_tddOption_15 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_15 },
{ NULL, 0, 0, NULL }
};
@@ -61380,50 +64935,50 @@ dissect_rrc_T_old_Configuration_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_tdd384_26_sequence[] = {
+static const per_sequence_t T_tdd384_27_sequence[] = {
{ &hf_rrc_pusch_TimeslotsCodes, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UplinkTimeslotsCodes },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd384_26(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_27(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_26, T_tdd384_26_sequence);
+ ett_rrc_T_tdd384_27, T_tdd384_27_sequence);
return offset;
}
-static const per_sequence_t T_tdd128_41_sequence[] = {
+static const per_sequence_t T_tdd128_43_sequence[] = {
{ &hf_rrc_pusch_TimeslotsCodes_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UplinkTimeslotsCodes_LCR_r4 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_41(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_43(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_41, T_tdd128_41_sequence);
+ ett_rrc_T_tdd128_43, T_tdd128_43_sequence);
return offset;
}
-static const value_string rrc_T_tddOption_13_vals[] = {
+static const value_string rrc_T_tddOption_14_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tddOption_13_choice[] = {
- { 0, &hf_rrc_tdd384_29 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_26 },
- { 1, &hf_rrc_tdd128_42 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_41 },
+static const per_choice_t T_tddOption_14_choice[] = {
+ { 0, &hf_rrc_tdd384_30 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_27 },
+ { 1, &hf_rrc_tdd128_44 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_43 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tddOption_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tddOption_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tddOption_13, T_tddOption_13_choice,
+ ett_rrc_T_tddOption_14, T_tddOption_14_choice,
NULL);
return offset;
@@ -61433,7 +64988,7 @@ dissect_rrc_T_tddOption_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
static const per_sequence_t PUSCH_Info_r4_sequence[] = {
{ &hf_rrc_tfcs_ID_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TFCS_IdentityPlain },
{ &hf_rrc_commonTimeslotInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CommonTimeslotInfo },
- { &hf_rrc_tddOption_13 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_13 },
+ { &hf_rrc_tddOption_14 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_14 },
{ NULL, 0, 0, NULL }
};
@@ -61550,50 +65105,50 @@ dissect_rrc_T_old_Configuration_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_tdd384_24_sequence[] = {
+static const per_sequence_t T_tdd384_25_sequence[] = {
{ &hf_rrc_pdsch_TimeslotsCodes, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DownlinkTimeslotsCodes },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd384_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_25(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_24, T_tdd384_24_sequence);
+ ett_rrc_T_tdd384_25, T_tdd384_25_sequence);
return offset;
}
-static const per_sequence_t T_tdd128_38_sequence[] = {
+static const per_sequence_t T_tdd128_40_sequence[] = {
{ &hf_rrc_pdsch_TimeslotsCodes_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DownlinkTimeslotsCodes_LCR_r4 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_38(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_40(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_38, T_tdd128_38_sequence);
+ ett_rrc_T_tdd128_40, T_tdd128_40_sequence);
return offset;
}
-static const value_string rrc_T_tddOption_10_vals[] = {
+static const value_string rrc_T_tddOption_11_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tddOption_10_choice[] = {
- { 0, &hf_rrc_tdd384_26 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_24 },
- { 1, &hf_rrc_tdd128_39 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_38 },
+static const per_choice_t T_tddOption_11_choice[] = {
+ { 0, &hf_rrc_tdd384_27 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_25 },
+ { 1, &hf_rrc_tdd128_41 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_40 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tddOption_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tddOption_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tddOption_10, T_tddOption_10_choice,
+ ett_rrc_T_tddOption_11, T_tddOption_11_choice,
NULL);
return offset;
@@ -61603,7 +65158,7 @@ dissect_rrc_T_tddOption_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
static const per_sequence_t PDSCH_Info_r4_sequence[] = {
{ &hf_rrc_tfcs_ID_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TFCS_IdentityPlain },
{ &hf_rrc_commonTimeslotInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CommonTimeslotInfo },
- { &hf_rrc_tddOption_10 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_10 },
+ { &hf_rrc_tddOption_11 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_11 },
{ NULL, 0, 0, NULL }
};
@@ -61720,8 +65275,8 @@ static const value_string rrc_TimeslotList_r4_vals[] = {
};
static const per_choice_t TimeslotList_r4_choice[] = {
- { 0, &hf_rrc_tdd384_34 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_maxTS_OF_TimeslotNumber },
- { 1, &hf_rrc_tdd128_48 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_maxTS_LCR_OF_TimeslotNumber_LCR_r4 },
+ { 0, &hf_rrc_tdd384_35 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_maxTS_OF_TimeslotNumber },
+ { 1, &hf_rrc_tdd128_50 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_maxTS_LCR_OF_TimeslotNumber_LCR_r4 },
{ 0, NULL, 0, NULL }
};
@@ -61769,38 +65324,38 @@ dissect_rrc_PhysicalSharedChannelAllocation_v690ext_IEs(tvbuff_t *tvb _U_, int o
}
-static const per_sequence_t T_tdd128_43_sequence[] = {
+static const per_sequence_t T_tdd128_45_sequence[] = {
{ &hf_rrc_tpc_StepSize , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TPC_StepSizeTDD },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_43(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_45(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_43, T_tdd128_43_sequence);
+ ett_rrc_T_tdd128_45, T_tdd128_45_sequence);
return offset;
}
-static const value_string rrc_T_tddOption_15_vals[] = {
+static const value_string rrc_T_tddOption_16_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd768" },
{ 2, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tddOption_15_choice[] = {
- { 0, &hf_rrc_tdd384_09 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 1, &hf_rrc_tdd768_04 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 2, &hf_rrc_tdd128_44 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_43 },
+static const per_choice_t T_tddOption_16_choice[] = {
+ { 0, &hf_rrc_tdd384_10 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_tdd768_05 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 2, &hf_rrc_tdd128_46 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_45 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tddOption_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tddOption_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tddOption_15, T_tddOption_15_choice,
+ ett_rrc_T_tddOption_16, T_tddOption_16_choice,
NULL);
return offset;
@@ -61809,7 +65364,7 @@ dissect_rrc_T_tddOption_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
static const per_sequence_t PUSCH_PowerControlInfo_r7_sequence[] = {
{ &hf_rrc_ul_TargetSIR , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_TargetSIR },
- { &hf_rrc_tddOption_15 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_15 },
+ { &hf_rrc_tddOption_16 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_16 },
{ NULL, 0, 0, NULL }
};
@@ -61957,66 +65512,66 @@ dissect_rrc_T_old_Configuration_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_tdd384_25_sequence[] = {
+static const per_sequence_t T_tdd384_26_sequence[] = {
{ &hf_rrc_pdsch_TimeslotsCodes, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DownlinkTimeslotsCodes },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd384_25(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_26(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_25, T_tdd384_25_sequence);
+ ett_rrc_T_tdd384_26, T_tdd384_26_sequence);
return offset;
}
-static const per_sequence_t T_tdd768_14_sequence[] = {
+static const per_sequence_t T_tdd768_15_sequence[] = {
{ &hf_rrc_pdsch_TimeslotsCodes_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DownlinkTimeslotsCodes_VHCR },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd768_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd768_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd768_14, T_tdd768_14_sequence);
+ ett_rrc_T_tdd768_15, T_tdd768_15_sequence);
return offset;
}
-static const per_sequence_t T_tdd128_39_sequence[] = {
+static const per_sequence_t T_tdd128_41_sequence[] = {
{ &hf_rrc_pdsch_TimeslotsCodes_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DownlinkTimeslotsCodes_LCR_r4 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_39(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_41(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_39, T_tdd128_39_sequence);
+ ett_rrc_T_tdd128_41, T_tdd128_41_sequence);
return offset;
}
-static const value_string rrc_T_tddOption_11_vals[] = {
+static const value_string rrc_T_tddOption_12_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd768" },
{ 2, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tddOption_11_choice[] = {
- { 0, &hf_rrc_tdd384_27 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_25 },
- { 1, &hf_rrc_tdd768_16 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_14 },
- { 2, &hf_rrc_tdd128_40 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_39 },
+static const per_choice_t T_tddOption_12_choice[] = {
+ { 0, &hf_rrc_tdd384_28 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_26 },
+ { 1, &hf_rrc_tdd768_17 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_15 },
+ { 2, &hf_rrc_tdd128_42 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_41 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tddOption_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tddOption_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tddOption_11, T_tddOption_11_choice,
+ ett_rrc_T_tddOption_12, T_tddOption_12_choice,
NULL);
return offset;
@@ -62026,7 +65581,7 @@ dissect_rrc_T_tddOption_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
static const per_sequence_t PDSCH_Info_r7_sequence[] = {
{ &hf_rrc_tfcs_ID_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TFCS_IdentityPlain },
{ &hf_rrc_commonTimeslotInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CommonTimeslotInfo },
- { &hf_rrc_tddOption_11 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_11 },
+ { &hf_rrc_tddOption_12 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tddOption_12 },
{ NULL, 0, 0, NULL }
};
@@ -62108,14 +65663,14 @@ dissect_rrc_PhysicalSharedChannelAllocation_v770ext_IEs(tvbuff_t *tvb _U_, int o
}
-static const per_sequence_t T_nonCriticalExtensions_69_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_75_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_69(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_75(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_69, T_nonCriticalExtensions_69_sequence);
+ ett_rrc_T_nonCriticalExtensions_75, T_nonCriticalExtensions_75_sequence);
return offset;
}
@@ -62123,7 +65678,7 @@ dissect_rrc_T_nonCriticalExtensions_69(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v770NonCriticalExtensions_09_sequence[] = {
{ &hf_rrc_physicalSharedChannelAllocation_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PhysicalSharedChannelAllocation_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_69, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_69 },
+ { &hf_rrc_nonCriticalExtensions_75, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_75 },
{ NULL, 0, 0, NULL }
};
@@ -62181,35 +65736,35 @@ dissect_rrc_T_r4_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_51_sequence[] = {
+static const per_sequence_t T_criticalExtensions_57_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_51(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_57(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_51, T_criticalExtensions_51_sequence);
+ ett_rrc_T_criticalExtensions_57, T_criticalExtensions_57_sequence);
return offset;
}
-static const value_string rrc_T_criticalExtensions_50_vals[] = {
+static const value_string rrc_T_criticalExtensions_56_vals[] = {
{ 0, "r4" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_50_choice[] = {
+static const per_choice_t T_criticalExtensions_56_choice[] = {
{ 0, &hf_rrc_r4_05 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r4_05 },
- { 1, &hf_rrc_criticalExtensions_51, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_51 },
+ { 1, &hf_rrc_criticalExtensions_57, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_57 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_50(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_56(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_50, T_criticalExtensions_50_choice,
+ ett_rrc_T_criticalExtensions_56, T_criticalExtensions_56_choice,
NULL);
return offset;
@@ -62219,7 +65774,7 @@ dissect_rrc_T_criticalExtensions_50(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_later_than_r3_11_sequence[] = {
{ &hf_rrc_dsch_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DSCH_RNTI },
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_50, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_50 },
+ { &hf_rrc_criticalExtensions_56, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_56 },
{ NULL, 0, 0, NULL }
};
@@ -62246,7 +65801,7 @@ static const per_choice_t PhysicalSharedChannelAllocation_choice[] = {
static int
dissect_rrc_PhysicalSharedChannelAllocation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 269 "../../asn1/rrc/rrc.cnf"
+#line 314 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "PhysicalSharedChannelAllocation");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_PhysicalSharedChannelAllocation, PhysicalSharedChannelAllocation_choice,
@@ -62289,16 +65844,16 @@ dissect_rrc_RAB_InformationReconfigList(tvbuff_t *tvb _U_, int offset _U_, asn1_
}
-static const per_sequence_t T_fdd_19_sequence[] = {
+static const per_sequence_t T_fdd_20_sequence[] = {
{ &hf_rrc_dummy1 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CPCH_SetID },
{ &hf_rrc_dummy2_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DRAC_StaticInformationList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_19, T_fdd_19_sequence);
+ ett_rrc_T_fdd_20, T_fdd_20_sequence);
return offset;
}
@@ -62311,7 +65866,7 @@ static const value_string rrc_T_dummy_01_vals[] = {
};
static const per_choice_t T_dummy_01_choice[] = {
- { 0, &hf_rrc_fdd_19 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_19 },
+ { 0, &hf_rrc_fdd_20 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_20 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -62379,15 +65934,15 @@ dissect_rrc_DL_AddReconfTransChInfo2List(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_fdd_20_sequence[] = {
+static const per_sequence_t T_fdd_21_sequence[] = {
{ &hf_rrc_dummy_05 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_PDSCH_Information },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_20, T_fdd_20_sequence);
+ ett_rrc_T_fdd_21, T_fdd_21_sequence);
return offset;
}
@@ -62400,7 +65955,7 @@ static const value_string rrc_T_modeSpecificPhysChInfo_03_vals[] = {
};
static const per_choice_t T_modeSpecificPhysChInfo_03_choice[] = {
- { 0, &hf_rrc_fdd_20 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_20 },
+ { 0, &hf_rrc_fdd_21 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_21 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -62432,7 +65987,7 @@ static const per_sequence_t RadioBearerReconfiguration_r3_IEs_sequence[] = {
{ &hf_rrc_ul_CommonTransChInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo },
{ &hf_rrc_ul_deletedTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DeletedTransChInfoList },
{ &hf_rrc_ul_AddReconfTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList },
- { &hf_rrc_dummy_09 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_01 },
+ { &hf_rrc_dummy_13 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_01 },
{ &hf_rrc_dl_CommonTransChInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonTransChInfo },
{ &hf_rrc_dl_DeletedTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DeletedTransChInfoList },
{ &hf_rrc_dl_AddReconfTransChInfoList_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_AddReconfTransChInfo2List },
@@ -62561,14 +66116,14 @@ dissect_rrc_RadioBearerReconfiguration_v770ext_IEs(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_nonCriticalExtensions_71_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_77_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_71(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_77(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_71, T_nonCriticalExtensions_71_sequence);
+ ett_rrc_T_nonCriticalExtensions_77, T_nonCriticalExtensions_77_sequence);
return offset;
}
@@ -62576,7 +66131,7 @@ dissect_rrc_T_nonCriticalExtensions_71(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v770NonCriticalExtensions_10_sequence[] = {
{ &hf_rrc_radioBearerReconfiguration_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerReconfiguration_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_71, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_71 },
+ { &hf_rrc_nonCriticalExtensions_77, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_77 },
{ NULL, 0, 0, NULL }
};
@@ -62694,16 +66249,16 @@ dissect_rrc_T_r3_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_fdd_21_sequence[] = {
+static const per_sequence_t T_fdd_22_sequence[] = {
{ &hf_rrc_dummy1 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CPCH_SetID },
{ &hf_rrc_dummy2_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DRAC_StaticInformationList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_22(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_21, T_fdd_21_sequence);
+ ett_rrc_T_fdd_22, T_fdd_22_sequence);
return offset;
}
@@ -62716,7 +66271,7 @@ static const value_string rrc_T_dummy_02_vals[] = {
};
static const per_choice_t T_dummy_02_choice[] = {
- { 0, &hf_rrc_fdd_21 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_21 },
+ { 0, &hf_rrc_fdd_22 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_22 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -62731,15 +66286,15 @@ dissect_rrc_T_dummy_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
}
-static const per_sequence_t T_fdd_22_sequence[] = {
+static const per_sequence_t T_fdd_23_sequence[] = {
{ &hf_rrc_dummy_05 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_PDSCH_Information },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_22(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_23(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_22, T_fdd_22_sequence);
+ ett_rrc_T_fdd_23, T_fdd_23_sequence);
return offset;
}
@@ -62752,7 +66307,7 @@ static const value_string rrc_T_modeSpecificPhysChInfo_04_vals[] = {
};
static const per_choice_t T_modeSpecificPhysChInfo_04_choice[] = {
- { 0, &hf_rrc_fdd_22 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_22 },
+ { 0, &hf_rrc_fdd_23 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_23 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -62784,7 +66339,7 @@ static const per_sequence_t RadioBearerReconfiguration_r4_IEs_sequence[] = {
{ &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo_r4 },
{ &hf_rrc_ul_deletedTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DeletedTransChInfoList },
{ &hf_rrc_ul_AddReconfTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList },
- { &hf_rrc_dummy_10 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_02 },
+ { &hf_rrc_dummy_14 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_02 },
{ &hf_rrc_dl_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonTransChInfo_r4 },
{ &hf_rrc_dl_DeletedTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DeletedTransChInfoList },
{ &hf_rrc_dl_AddReconfTransChInfoList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_AddReconfTransChInfoList_r4 },
@@ -62806,14 +66361,14 @@ dissect_rrc_RadioBearerReconfiguration_r4_IEs(tvbuff_t *tvb _U_, int offset _U_,
}
-static const per_sequence_t T_nonCriticalExtensions_72_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_78_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_72(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_78(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_72, T_nonCriticalExtensions_72_sequence);
+ ett_rrc_T_nonCriticalExtensions_78, T_nonCriticalExtensions_78_sequence);
return offset;
}
@@ -62821,7 +66376,7 @@ dissect_rrc_T_nonCriticalExtensions_72(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v770NonCriticalExtensions_11_sequence[] = {
{ &hf_rrc_radioBearerReconfiguration_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerReconfiguration_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_72, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_72 },
+ { &hf_rrc_nonCriticalExtensions_78, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_78 },
{ NULL, 0, 0, NULL }
};
@@ -62909,16 +66464,16 @@ dissect_rrc_T_r4_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_fdd_23_sequence[] = {
+static const per_sequence_t T_fdd_24_sequence[] = {
{ &hf_rrc_dummy1 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CPCH_SetID },
{ &hf_rrc_dummy2_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DRAC_StaticInformationList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_23(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_23, T_fdd_23_sequence);
+ ett_rrc_T_fdd_24, T_fdd_24_sequence);
return offset;
}
@@ -62931,7 +66486,7 @@ static const value_string rrc_T_dummy_03_vals[] = {
};
static const per_choice_t T_dummy_03_choice[] = {
- { 0, &hf_rrc_fdd_23 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_23 },
+ { 0, &hf_rrc_fdd_24 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_24 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -62946,7 +66501,7 @@ dissect_rrc_T_dummy_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
}
-static const per_sequence_t T_complete_07_sequence[] = {
+static const per_sequence_t T_complete_08_sequence[] = {
{ &hf_rrc_rab_InformationReconfigList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationReconfigList },
{ &hf_rrc_rb_InformationReconfigList_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_InformationReconfigList_r5 },
{ &hf_rrc_rb_InformationAffectedList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_InformationAffectedList_r5 },
@@ -62954,7 +66509,7 @@ static const per_sequence_t T_complete_07_sequence[] = {
{ &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo_r4 },
{ &hf_rrc_ul_deletedTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DeletedTransChInfoList },
{ &hf_rrc_ul_AddReconfTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList },
- { &hf_rrc_dummy_11 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_03 },
+ { &hf_rrc_dummy_15 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_03 },
{ &hf_rrc_dl_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonTransChInfo_r4 },
{ &hf_rrc_dl_DeletedTransChInfoList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DeletedTransChInfoList_r5 },
{ &hf_rrc_dl_AddReconfTransChInfoList_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_AddReconfTransChInfoList_r5 },
@@ -62962,9 +66517,9 @@ static const per_sequence_t T_complete_07_sequence[] = {
};
static int
-dissect_rrc_T_complete_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_complete_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_complete_07, T_complete_07_sequence);
+ ett_rrc_T_complete_08, T_complete_08_sequence);
return offset;
}
@@ -62980,88 +66535,88 @@ dissect_rrc_DefaultConfigIdentity_r5(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_defaultConfig_07_sequence[] = {
+static const per_sequence_t T_defaultConfig_08_sequence[] = {
{ &hf_rrc_defaultConfigMode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigMode },
{ &hf_rrc_defaultConfigIdentity_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigIdentity_r5 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_defaultConfig_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_defaultConfig_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_defaultConfig_07, T_defaultConfig_07_sequence);
+ ett_rrc_T_defaultConfig_08, T_defaultConfig_08_sequence);
return offset;
}
-static const value_string rrc_T_preConfigMode_07_vals[] = {
+static const value_string rrc_T_preConfigMode_08_vals[] = {
{ 0, "predefinedConfigIdentity" },
{ 1, "defaultConfig" },
{ 0, NULL }
};
-static const per_choice_t T_preConfigMode_07_choice[] = {
+static const per_choice_t T_preConfigMode_08_choice[] = {
{ 0, &hf_rrc_predefinedConfigIdentity, ASN1_NO_EXTENSIONS , dissect_rrc_PredefinedConfigIdentity },
- { 1, &hf_rrc_defaultConfig_07, ASN1_NO_EXTENSIONS , dissect_rrc_T_defaultConfig_07 },
+ { 1, &hf_rrc_defaultConfig_08, ASN1_NO_EXTENSIONS , dissect_rrc_T_defaultConfig_08 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_preConfigMode_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_preConfigMode_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_preConfigMode_07, T_preConfigMode_07_choice,
+ ett_rrc_T_preConfigMode_08, T_preConfigMode_08_choice,
NULL);
return offset;
}
-static const per_sequence_t T_preconfiguration_07_sequence[] = {
- { &hf_rrc_preConfigMode_07, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_preConfigMode_07 },
+static const per_sequence_t T_preconfiguration_08_sequence[] = {
+ { &hf_rrc_preConfigMode_08, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_preConfigMode_08 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_preconfiguration_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_preconfiguration_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_preconfiguration_07, T_preconfiguration_07_sequence);
+ ett_rrc_T_preconfiguration_08, T_preconfiguration_08_sequence);
return offset;
}
-static const value_string rrc_T_specificationMode_07_vals[] = {
+static const value_string rrc_T_specificationMode_08_vals[] = {
{ 0, "complete" },
{ 1, "preconfiguration" },
{ 0, NULL }
};
-static const per_choice_t T_specificationMode_07_choice[] = {
- { 0, &hf_rrc_complete_07 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_07 },
- { 1, &hf_rrc_preconfiguration_07, ASN1_NO_EXTENSIONS , dissect_rrc_T_preconfiguration_07 },
+static const per_choice_t T_specificationMode_08_choice[] = {
+ { 0, &hf_rrc_complete_08 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_08 },
+ { 1, &hf_rrc_preconfiguration_08, ASN1_NO_EXTENSIONS , dissect_rrc_T_preconfiguration_08 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_specificationMode_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_specificationMode_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_specificationMode_07, T_specificationMode_07_choice,
+ ett_rrc_T_specificationMode_08, T_specificationMode_08_choice,
NULL);
return offset;
}
-static const per_sequence_t T_fdd_24_sequence[] = {
+static const per_sequence_t T_fdd_25_sequence[] = {
{ &hf_rrc_dummy_05 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_PDSCH_Information },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_25(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_24, T_fdd_24_sequence);
+ ett_rrc_T_fdd_25, T_fdd_25_sequence);
return offset;
}
@@ -63074,7 +66629,7 @@ static const value_string rrc_T_modeSpecificPhysChInfo_05_vals[] = {
};
static const per_choice_t T_modeSpecificPhysChInfo_05_choice[] = {
- { 0, &hf_rrc_fdd_24 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_24 },
+ { 0, &hf_rrc_fdd_25 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_25 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -63101,7 +66656,7 @@ static const per_sequence_t RadioBearerReconfiguration_r5_IEs_sequence[] = {
{ &hf_rrc_utran_DRX_CycleLengthCoeff, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UTRAN_DRX_CycleLengthCoefficient },
{ &hf_rrc_cn_InformationInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_InformationInfo },
{ &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
- { &hf_rrc_specificationMode_07, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_07 },
+ { &hf_rrc_specificationMode_08, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_08 },
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
{ &hf_rrc_maxAllowedUL_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MaxAllowedUL_TX_Power },
{ &hf_rrc_ul_ChannelRequirement_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_ChannelRequirement_r5 },
@@ -63121,14 +66676,14 @@ dissect_rrc_RadioBearerReconfiguration_r5_IEs(tvbuff_t *tvb _U_, int offset _U_,
}
-static const per_sequence_t T_nonCriticalExtensions_73_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_79_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_73(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_79(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_73, T_nonCriticalExtensions_73_sequence);
+ ett_rrc_T_nonCriticalExtensions_79, T_nonCriticalExtensions_79_sequence);
return offset;
}
@@ -63136,7 +66691,7 @@ dissect_rrc_T_nonCriticalExtensions_73(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v770NonCriticalExtensions_12_sequence[] = {
{ &hf_rrc_radioBearerReconfiguration_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerReconfiguration_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_73, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_73 },
+ { &hf_rrc_nonCriticalExtensions_79, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_79 },
{ NULL, 0, 0, NULL }
};
@@ -63195,7 +66750,7 @@ dissect_rrc_T_r5_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_complete_08_sequence[] = {
+static const per_sequence_t T_complete_09_sequence[] = {
{ &hf_rrc_rab_InformationReconfigList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationReconfigList },
{ &hf_rrc_rb_InformationReconfigList_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_InformationReconfigList_r6 },
{ &hf_rrc_rb_InformationAffectedList_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_InformationAffectedList_r6 },
@@ -63211,9 +66766,9 @@ static const per_sequence_t T_complete_08_sequence[] = {
};
static int
-dissect_rrc_T_complete_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_complete_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_complete_08, T_complete_08_sequence);
+ ett_rrc_T_complete_09, T_complete_09_sequence);
return offset;
}
@@ -63229,73 +66784,73 @@ dissect_rrc_DefaultConfigIdentity_r6(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_defaultConfig_08_sequence[] = {
+static const per_sequence_t T_defaultConfig_09_sequence[] = {
{ &hf_rrc_defaultConfigMode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigMode },
{ &hf_rrc_defaultConfigIdentity_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigIdentity_r6 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_defaultConfig_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_defaultConfig_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_defaultConfig_08, T_defaultConfig_08_sequence);
+ ett_rrc_T_defaultConfig_09, T_defaultConfig_09_sequence);
return offset;
}
-static const value_string rrc_T_preConfigMode_08_vals[] = {
+static const value_string rrc_T_preConfigMode_09_vals[] = {
{ 0, "predefinedConfigIdentity" },
{ 1, "defaultConfig" },
{ 0, NULL }
};
-static const per_choice_t T_preConfigMode_08_choice[] = {
+static const per_choice_t T_preConfigMode_09_choice[] = {
{ 0, &hf_rrc_predefinedConfigIdentity, ASN1_NO_EXTENSIONS , dissect_rrc_PredefinedConfigIdentity },
- { 1, &hf_rrc_defaultConfig_08, ASN1_NO_EXTENSIONS , dissect_rrc_T_defaultConfig_08 },
+ { 1, &hf_rrc_defaultConfig_09, ASN1_NO_EXTENSIONS , dissect_rrc_T_defaultConfig_09 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_preConfigMode_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_preConfigMode_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_preConfigMode_08, T_preConfigMode_08_choice,
+ ett_rrc_T_preConfigMode_09, T_preConfigMode_09_choice,
NULL);
return offset;
}
-static const per_sequence_t T_preconfiguration_08_sequence[] = {
- { &hf_rrc_preConfigMode_08, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_preConfigMode_08 },
+static const per_sequence_t T_preconfiguration_09_sequence[] = {
+ { &hf_rrc_preConfigMode_09, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_preConfigMode_09 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_preconfiguration_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_preconfiguration_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_preconfiguration_08, T_preconfiguration_08_sequence);
+ ett_rrc_T_preconfiguration_09, T_preconfiguration_09_sequence);
return offset;
}
-static const value_string rrc_T_specificationMode_08_vals[] = {
+static const value_string rrc_T_specificationMode_09_vals[] = {
{ 0, "complete" },
{ 1, "preconfiguration" },
{ 0, NULL }
};
-static const per_choice_t T_specificationMode_08_choice[] = {
- { 0, &hf_rrc_complete_08 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_08 },
- { 1, &hf_rrc_preconfiguration_08, ASN1_NO_EXTENSIONS , dissect_rrc_T_preconfiguration_08 },
+static const per_choice_t T_specificationMode_09_choice[] = {
+ { 0, &hf_rrc_complete_09 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_09 },
+ { 1, &hf_rrc_preconfiguration_09, ASN1_NO_EXTENSIONS , dissect_rrc_T_preconfiguration_09 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_specificationMode_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_specificationMode_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_specificationMode_08, T_specificationMode_08_choice,
+ ett_rrc_T_specificationMode_09, T_specificationMode_09_choice,
NULL);
return offset;
@@ -63317,7 +66872,7 @@ static const per_sequence_t RadioBearerReconfiguration_r6_IEs_sequence[] = {
{ &hf_rrc_utran_DRX_CycleLengthCoeff, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UTRAN_DRX_CycleLengthCoefficient },
{ &hf_rrc_cn_InformationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_InformationInfo_r6 },
{ &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
- { &hf_rrc_specificationMode_08, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_08 },
+ { &hf_rrc_specificationMode_09, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_09 },
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
{ &hf_rrc_maxAllowedUL_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MaxAllowedUL_TX_Power },
{ &hf_rrc_ul_DPCH_Info , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DPCH_Info_r6 },
@@ -63382,34 +66937,34 @@ dissect_rrc_RAB_InformationMBMSPtpList(tvbuff_t *tvb _U_, int offset _U_, asn1_c
}
-static const per_sequence_t T_complete_09_sequence[] = {
+static const per_sequence_t T_complete_10_sequence[] = {
{ &hf_rrc_rab_InformationMBMSPtpList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationMBMSPtpList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_complete_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_complete_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_complete_09, T_complete_09_sequence);
+ ett_rrc_T_complete_10, T_complete_10_sequence);
return offset;
}
-static const value_string rrc_T_specificationMode_09_vals[] = {
+static const value_string rrc_T_specificationMode_10_vals[] = {
{ 0, "complete" },
{ 0, NULL }
};
-static const per_choice_t T_specificationMode_09_choice[] = {
- { 0, &hf_rrc_complete_09 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_09 },
+static const per_choice_t T_specificationMode_10_choice[] = {
+ { 0, &hf_rrc_complete_10 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_10 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_specificationMode_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_specificationMode_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_specificationMode_09, T_specificationMode_09_choice,
+ ett_rrc_T_specificationMode_10, T_specificationMode_10_choice,
NULL);
return offset;
@@ -63417,7 +66972,7 @@ dissect_rrc_T_specificationMode_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t RadioBearerReconfiguration_v6f0ext_IEs_sequence[] = {
- { &hf_rrc_specificationMode_09, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_09 },
+ { &hf_rrc_specificationMode_10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_10 },
{ NULL, 0, 0, NULL }
};
@@ -63430,14 +66985,14 @@ dissect_rrc_RadioBearerReconfiguration_v6f0ext_IEs(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_nonCriticalExtensions_74_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_80_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_74(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_80(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_74, T_nonCriticalExtensions_74_sequence);
+ ett_rrc_T_nonCriticalExtensions_80, T_nonCriticalExtensions_80_sequence);
return offset;
}
@@ -63445,7 +67000,7 @@ dissect_rrc_T_nonCriticalExtensions_74(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v770NonCriticalExtensions_13_sequence[] = {
{ &hf_rrc_radioBearerReconfiguration_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerReconfiguration_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_74, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_74 },
+ { &hf_rrc_nonCriticalExtensions_80, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_80 },
{ NULL, 0, 0, NULL }
};
@@ -63504,14 +67059,14 @@ dissect_rrc_T_r6_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const value_string rrc_T_responseToChangeOfUE_Capability_03_vals[] = {
+static const value_string rrc_T_responseToChangeOfUE_Capability_04_vals[] = {
{ 0, "true" },
{ 0, NULL }
};
static int
-dissect_rrc_T_responseToChangeOfUE_Capability_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_responseToChangeOfUE_Capability_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1, NULL, FALSE, 0, NULL);
@@ -63519,7 +67074,7 @@ dissect_rrc_T_responseToChangeOfUE_Capability_03(tvbuff_t *tvb _U_, int offset _
}
-static const per_sequence_t T_complete_10_sequence[] = {
+static const per_sequence_t T_complete_11_sequence[] = {
{ &hf_rrc_rab_InformationReconfigList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationReconfigList },
{ &hf_rrc_rab_InformationMBMSPtpList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationMBMSPtpList },
{ &hf_rrc_rb_InformationReconfigList_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_InformationReconfigList_r7 },
@@ -63536,81 +67091,81 @@ static const per_sequence_t T_complete_10_sequence[] = {
};
static int
-dissect_rrc_T_complete_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_complete_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_complete_10, T_complete_10_sequence);
+ ett_rrc_T_complete_11, T_complete_11_sequence);
return offset;
}
-static const per_sequence_t T_defaultConfig_09_sequence[] = {
+static const per_sequence_t T_defaultConfig_10_sequence[] = {
{ &hf_rrc_defaultConfigMode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigMode },
{ &hf_rrc_defaultConfigIdentity_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigIdentity_r6 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_defaultConfig_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_defaultConfig_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_defaultConfig_09, T_defaultConfig_09_sequence);
+ ett_rrc_T_defaultConfig_10, T_defaultConfig_10_sequence);
return offset;
}
-static const value_string rrc_T_preConfigMode_09_vals[] = {
+static const value_string rrc_T_preConfigMode_10_vals[] = {
{ 0, "predefinedConfigIdentity" },
{ 1, "defaultConfig" },
{ 0, NULL }
};
-static const per_choice_t T_preConfigMode_09_choice[] = {
+static const per_choice_t T_preConfigMode_10_choice[] = {
{ 0, &hf_rrc_predefinedConfigIdentity, ASN1_NO_EXTENSIONS , dissect_rrc_PredefinedConfigIdentity },
- { 1, &hf_rrc_defaultConfig_09, ASN1_NO_EXTENSIONS , dissect_rrc_T_defaultConfig_09 },
+ { 1, &hf_rrc_defaultConfig_10, ASN1_NO_EXTENSIONS , dissect_rrc_T_defaultConfig_10 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_preConfigMode_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_preConfigMode_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_preConfigMode_09, T_preConfigMode_09_choice,
+ ett_rrc_T_preConfigMode_10, T_preConfigMode_10_choice,
NULL);
return offset;
}
-static const per_sequence_t T_preconfiguration_09_sequence[] = {
- { &hf_rrc_preConfigMode_09, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_preConfigMode_09 },
+static const per_sequence_t T_preconfiguration_10_sequence[] = {
+ { &hf_rrc_preConfigMode_10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_preConfigMode_10 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_preconfiguration_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_preconfiguration_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_preconfiguration_09, T_preconfiguration_09_sequence);
+ ett_rrc_T_preconfiguration_10, T_preconfiguration_10_sequence);
return offset;
}
-static const value_string rrc_T_specificationMode_10_vals[] = {
+static const value_string rrc_T_specificationMode_11_vals[] = {
{ 0, "complete" },
{ 1, "preconfiguration" },
{ 0, NULL }
};
-static const per_choice_t T_specificationMode_10_choice[] = {
- { 0, &hf_rrc_complete_10 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_10 },
- { 1, &hf_rrc_preconfiguration_09, ASN1_NO_EXTENSIONS , dissect_rrc_T_preconfiguration_09 },
+static const per_choice_t T_specificationMode_11_choice[] = {
+ { 0, &hf_rrc_complete_11 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_11 },
+ { 1, &hf_rrc_preconfiguration_10, ASN1_NO_EXTENSIONS , dissect_rrc_T_preconfiguration_10 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_specificationMode_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_specificationMode_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_specificationMode_10, T_specificationMode_10_choice,
+ ett_rrc_T_specificationMode_11, T_specificationMode_11_choice,
NULL);
return offset;
@@ -63634,8 +67189,8 @@ static const per_sequence_t RadioBearerReconfiguration_r7_IEs_sequence[] = {
{ &hf_rrc_cn_InformationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_InformationInfo_r6 },
{ &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
{ &hf_rrc_supportForChangeOfUE_Capability, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BOOLEAN },
- { &hf_rrc_responseToChangeOfUE_Capability_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_responseToChangeOfUE_Capability_03 },
- { &hf_rrc_specificationMode_10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_10 },
+ { &hf_rrc_responseToChangeOfUE_Capability_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_responseToChangeOfUE_Capability_04 },
+ { &hf_rrc_specificationMode_11, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_11 },
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
{ &hf_rrc_multi_frequencyInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Multi_frequencyInfo_LCR_r7 },
{ &hf_rrc_dtx_drx_TimingInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DTX_DRX_TimingInfo_r7 },
@@ -63731,14 +67286,14 @@ dissect_rrc_RadioBearerReconfiguration_v7g0ext_IEs(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_nonCriticalExtensions_75_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_81_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_75(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_81(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_75, T_nonCriticalExtensions_75_sequence);
+ ett_rrc_T_nonCriticalExtensions_81, T_nonCriticalExtensions_81_sequence);
return offset;
}
@@ -63746,7 +67301,7 @@ dissect_rrc_T_nonCriticalExtensions_75(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v7g0NonCriticalExtensions_08_sequence[] = {
{ &hf_rrc_radioBearerReconfiguration_v7g0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerReconfiguration_v7g0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_75, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_75 },
+ { &hf_rrc_nonCriticalExtensions_81, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_81 },
{ NULL, 0, 0, NULL }
};
@@ -63834,14 +67389,14 @@ dissect_rrc_T_r7_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const value_string rrc_T_responseToChangeOfUE_Capability_04_vals[] = {
+static const value_string rrc_T_responseToChangeOfUE_Capability_05_vals[] = {
{ 0, "true" },
{ 0, NULL }
};
static int
-dissect_rrc_T_responseToChangeOfUE_Capability_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_responseToChangeOfUE_Capability_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1, NULL, FALSE, 0, NULL);
@@ -63880,7 +67435,7 @@ dissect_rrc_RAB_InformationReconfigList_r8(tvbuff_t *tvb _U_, int offset _U_, as
}
-static const per_sequence_t T_complete_11_sequence[] = {
+static const per_sequence_t T_complete_12_sequence[] = {
{ &hf_rrc_rab_InformationReconfigList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationReconfigList_r8 },
{ &hf_rrc_rab_InformationMBMSPtpList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationMBMSPtpList },
{ &hf_rrc_rb_InformationReconfigList_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_InformationReconfigList_r8 },
@@ -63897,81 +67452,81 @@ static const per_sequence_t T_complete_11_sequence[] = {
};
static int
-dissect_rrc_T_complete_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_complete_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_complete_11, T_complete_11_sequence);
+ ett_rrc_T_complete_12, T_complete_12_sequence);
return offset;
}
-static const per_sequence_t T_defaultConfig_10_sequence[] = {
+static const per_sequence_t T_defaultConfig_11_sequence[] = {
{ &hf_rrc_defaultConfigMode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigMode },
{ &hf_rrc_defaultConfigIdentity_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigIdentity_r6 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_defaultConfig_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_defaultConfig_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_defaultConfig_10, T_defaultConfig_10_sequence);
+ ett_rrc_T_defaultConfig_11, T_defaultConfig_11_sequence);
return offset;
}
-static const value_string rrc_T_preConfigMode_10_vals[] = {
+static const value_string rrc_T_preConfigMode_11_vals[] = {
{ 0, "predefinedConfigIdentity" },
{ 1, "defaultConfig" },
{ 0, NULL }
};
-static const per_choice_t T_preConfigMode_10_choice[] = {
+static const per_choice_t T_preConfigMode_11_choice[] = {
{ 0, &hf_rrc_predefinedConfigIdentity, ASN1_NO_EXTENSIONS , dissect_rrc_PredefinedConfigIdentity },
- { 1, &hf_rrc_defaultConfig_10, ASN1_NO_EXTENSIONS , dissect_rrc_T_defaultConfig_10 },
+ { 1, &hf_rrc_defaultConfig_11, ASN1_NO_EXTENSIONS , dissect_rrc_T_defaultConfig_11 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_preConfigMode_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_preConfigMode_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_preConfigMode_10, T_preConfigMode_10_choice,
+ ett_rrc_T_preConfigMode_11, T_preConfigMode_11_choice,
NULL);
return offset;
}
-static const per_sequence_t T_preconfiguration_10_sequence[] = {
- { &hf_rrc_preConfigMode_10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_preConfigMode_10 },
+static const per_sequence_t T_preconfiguration_11_sequence[] = {
+ { &hf_rrc_preConfigMode_11, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_preConfigMode_11 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_preconfiguration_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_preconfiguration_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_preconfiguration_10, T_preconfiguration_10_sequence);
+ ett_rrc_T_preconfiguration_11, T_preconfiguration_11_sequence);
return offset;
}
-static const value_string rrc_T_specificationMode_11_vals[] = {
+static const value_string rrc_T_specificationMode_12_vals[] = {
{ 0, "complete" },
{ 1, "preconfiguration" },
{ 0, NULL }
};
-static const per_choice_t T_specificationMode_11_choice[] = {
- { 0, &hf_rrc_complete_11 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_11 },
- { 1, &hf_rrc_preconfiguration_10, ASN1_NO_EXTENSIONS , dissect_rrc_T_preconfiguration_10 },
+static const per_choice_t T_specificationMode_12_choice[] = {
+ { 0, &hf_rrc_complete_12 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_12 },
+ { 1, &hf_rrc_preconfiguration_11, ASN1_NO_EXTENSIONS , dissect_rrc_T_preconfiguration_11 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_specificationMode_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_specificationMode_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_specificationMode_11, T_specificationMode_11_choice,
+ ett_rrc_T_specificationMode_12, T_specificationMode_12_choice,
NULL);
return offset;
@@ -63995,9 +67550,9 @@ static const per_sequence_t RadioBearerReconfiguration_r8_IEs_sequence[] = {
{ &hf_rrc_cn_InformationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_InformationInfo_r6 },
{ &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
{ &hf_rrc_supportForChangeOfUE_Capability, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BOOLEAN },
- { &hf_rrc_responseToChangeOfUE_Capability_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_responseToChangeOfUE_Capability_04 },
- { &hf_rrc_defaultConfigForCellFACH, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultConfigForCellFACH },
- { &hf_rrc_specificationMode_11, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_11 },
+ { &hf_rrc_responseToChangeOfUE_Capability_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_responseToChangeOfUE_Capability_05 },
+ { &hf_rrc_dummy_06 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultConfigForCellFACH },
+ { &hf_rrc_specificationMode_12, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_12 },
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
{ &hf_rrc_multi_frequencyInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Multi_frequencyInfo_LCR_r7 },
{ &hf_rrc_dtx_drx_TimingInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DTX_DRX_TimingInfo_r7 },
@@ -64055,14 +67610,14 @@ dissect_rrc_RadioBearerReconfiguration_v8a0ext_IEs(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_nonCriticalExtensions_76_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_82_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_76(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_82(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_76, T_nonCriticalExtensions_76_sequence);
+ ett_rrc_T_nonCriticalExtensions_82, T_nonCriticalExtensions_82_sequence);
return offset;
}
@@ -64070,7 +67625,7 @@ dissect_rrc_T_nonCriticalExtensions_76(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v8a0NonCriticalExtensions_05_sequence[] = {
{ &hf_rrc_radioBearerReconfiguration_v8a0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerReconfiguration_v8a0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_76, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_76 },
+ { &hf_rrc_nonCriticalExtensions_82, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_82 },
{ NULL, 0, 0, NULL }
};
@@ -64159,14 +67714,14 @@ dissect_rrc_T_r8_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const value_string rrc_T_responseToChangeOfUE_Capability_05_vals[] = {
+static const value_string rrc_T_responseToChangeOfUE_Capability_06_vals[] = {
{ 0, "true" },
{ 0, NULL }
};
static int
-dissect_rrc_T_responseToChangeOfUE_Capability_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_responseToChangeOfUE_Capability_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1, NULL, FALSE, 0, NULL);
@@ -64174,7 +67729,7 @@ dissect_rrc_T_responseToChangeOfUE_Capability_05(tvbuff_t *tvb _U_, int offset _
}
-static const per_sequence_t T_complete_12_sequence[] = {
+static const per_sequence_t T_complete_13_sequence[] = {
{ &hf_rrc_rab_InformationReconfigList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationReconfigList_r8 },
{ &hf_rrc_rab_InformationMBMSPtpList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationMBMSPtpList },
{ &hf_rrc_rb_InformationReconfigList_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_InformationReconfigList_r8 },
@@ -64191,81 +67746,81 @@ static const per_sequence_t T_complete_12_sequence[] = {
};
static int
-dissect_rrc_T_complete_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_complete_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_complete_12, T_complete_12_sequence);
+ ett_rrc_T_complete_13, T_complete_13_sequence);
return offset;
}
-static const per_sequence_t T_defaultConfig_11_sequence[] = {
+static const per_sequence_t T_defaultConfig_12_sequence[] = {
{ &hf_rrc_defaultConfigMode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigMode },
{ &hf_rrc_defaultConfigIdentity_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigIdentity_r6 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_defaultConfig_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_defaultConfig_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_defaultConfig_11, T_defaultConfig_11_sequence);
+ ett_rrc_T_defaultConfig_12, T_defaultConfig_12_sequence);
return offset;
}
-static const value_string rrc_T_preConfigMode_11_vals[] = {
+static const value_string rrc_T_preConfigMode_12_vals[] = {
{ 0, "predefinedConfigIdentity" },
{ 1, "defaultConfig" },
{ 0, NULL }
};
-static const per_choice_t T_preConfigMode_11_choice[] = {
+static const per_choice_t T_preConfigMode_12_choice[] = {
{ 0, &hf_rrc_predefinedConfigIdentity, ASN1_NO_EXTENSIONS , dissect_rrc_PredefinedConfigIdentity },
- { 1, &hf_rrc_defaultConfig_11, ASN1_NO_EXTENSIONS , dissect_rrc_T_defaultConfig_11 },
+ { 1, &hf_rrc_defaultConfig_12, ASN1_NO_EXTENSIONS , dissect_rrc_T_defaultConfig_12 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_preConfigMode_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_preConfigMode_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_preConfigMode_11, T_preConfigMode_11_choice,
+ ett_rrc_T_preConfigMode_12, T_preConfigMode_12_choice,
NULL);
return offset;
}
-static const per_sequence_t T_preconfiguration_11_sequence[] = {
- { &hf_rrc_preConfigMode_11, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_preConfigMode_11 },
+static const per_sequence_t T_preconfiguration_12_sequence[] = {
+ { &hf_rrc_preConfigMode_12, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_preConfigMode_12 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_preconfiguration_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_preconfiguration_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_preconfiguration_11, T_preconfiguration_11_sequence);
+ ett_rrc_T_preconfiguration_12, T_preconfiguration_12_sequence);
return offset;
}
-static const value_string rrc_T_specificationMode_12_vals[] = {
+static const value_string rrc_T_specificationMode_13_vals[] = {
{ 0, "complete" },
{ 1, "preconfiguration" },
{ 0, NULL }
};
-static const per_choice_t T_specificationMode_12_choice[] = {
- { 0, &hf_rrc_complete_12 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_12 },
- { 1, &hf_rrc_preconfiguration_11, ASN1_NO_EXTENSIONS , dissect_rrc_T_preconfiguration_11 },
+static const per_choice_t T_specificationMode_13_choice[] = {
+ { 0, &hf_rrc_complete_13 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_13 },
+ { 1, &hf_rrc_preconfiguration_12, ASN1_NO_EXTENSIONS , dissect_rrc_T_preconfiguration_12 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_specificationMode_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_specificationMode_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_specificationMode_12, T_specificationMode_12_choice,
+ ett_rrc_T_specificationMode_13, T_specificationMode_13_choice,
NULL);
return offset;
@@ -64289,9 +67844,9 @@ static const per_sequence_t RadioBearerReconfiguration_r9_IEs_sequence[] = {
{ &hf_rrc_cn_InformationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_InformationInfo_r6 },
{ &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
{ &hf_rrc_supportForChangeOfUE_Capability, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BOOLEAN },
- { &hf_rrc_responseToChangeOfUE_Capability_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_responseToChangeOfUE_Capability_05 },
+ { &hf_rrc_responseToChangeOfUE_Capability_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_responseToChangeOfUE_Capability_06 },
{ &hf_rrc_defaultConfigForCellFACH, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultConfigForCellFACH },
- { &hf_rrc_specificationMode_12, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_12 },
+ { &hf_rrc_specificationMode_13, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_13 },
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
{ &hf_rrc_multi_frequencyInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Multi_frequencyInfo_LCR_r7 },
{ &hf_rrc_dtx_drx_TimingInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DTX_DRX_TimingInfo_r7 },
@@ -64336,14 +67891,14 @@ dissect_rrc_RadioBearerReconfiguration_v950ext_IEs(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_nonCriticalExtensions_77_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_83_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_77(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_83(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_77, T_nonCriticalExtensions_77_sequence);
+ ett_rrc_T_nonCriticalExtensions_83, T_nonCriticalExtensions_83_sequence);
return offset;
}
@@ -64351,7 +67906,7 @@ dissect_rrc_T_nonCriticalExtensions_77(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v950NonCriticalExtensions_04_sequence[] = {
{ &hf_rrc_radioBearerReconfiguration_v950ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerReconfiguration_v950ext_IEs },
- { &hf_rrc_nonCriticalExtensions_77, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_77 },
+ { &hf_rrc_nonCriticalExtensions_83, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_83 },
{ NULL, 0, 0, NULL }
};
@@ -64380,145 +67935,362 @@ dissect_rrc_T_r9_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_58_sequence[] = {
+static const value_string rrc_T_responseToChangeOfUE_Capability_07_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_responseToChangeOfUE_Capability_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_complete_14_sequence[] = {
+ { &hf_rrc_rab_InformationReconfigList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationReconfigList_r8 },
+ { &hf_rrc_rab_InformationMBMSPtpList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationMBMSPtpList },
+ { &hf_rrc_rb_InformationReconfigList_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_InformationReconfigList_r8 },
+ { &hf_rrc_rb_InformationAffectedList_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_InformationAffectedList_r8 },
+ { &hf_rrc_rb_PDCPContextRelocationList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_PDCPContextRelocationList },
+ { &hf_rrc_pdcp_ROHC_TargetMode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PDCP_ROHC_TargetMode },
+ { &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo_r4 },
+ { &hf_rrc_ul_deletedTransChInfoList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DeletedTransChInfoList_r6 },
+ { &hf_rrc_ul_AddReconfTransChInfoList_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList_r8 },
+ { &hf_rrc_dl_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonTransChInfo_r4 },
+ { &hf_rrc_dl_DeletedTransChInfoList_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DeletedTransChInfoList_r7 },
+ { &hf_rrc_dl_AddReconfTransChInfoList_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_AddReconfTransChInfoList_r9 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_58(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_complete_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_58, T_criticalExtensions_58_sequence);
+ ett_rrc_T_complete_14, T_complete_14_sequence);
return offset;
}
-static const value_string rrc_T_criticalExtensions_57_vals[] = {
+static const per_sequence_t T_defaultConfig_13_sequence[] = {
+ { &hf_rrc_defaultConfigMode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigMode },
+ { &hf_rrc_defaultConfigIdentity_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigIdentity_r6 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_defaultConfig_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_defaultConfig_13, T_defaultConfig_13_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_preConfigMode_13_vals[] = {
+ { 0, "predefinedConfigIdentity" },
+ { 1, "defaultConfig" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_preConfigMode_13_choice[] = {
+ { 0, &hf_rrc_predefinedConfigIdentity, ASN1_NO_EXTENSIONS , dissect_rrc_PredefinedConfigIdentity },
+ { 1, &hf_rrc_defaultConfig_13, ASN1_NO_EXTENSIONS , dissect_rrc_T_defaultConfig_13 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_preConfigMode_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_preConfigMode_13, T_preConfigMode_13_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_preconfiguration_13_sequence[] = {
+ { &hf_rrc_preConfigMode_13, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_preConfigMode_13 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_preconfiguration_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_preconfiguration_13, T_preconfiguration_13_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_specificationMode_14_vals[] = {
+ { 0, "complete" },
+ { 1, "preconfiguration" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_specificationMode_14_choice[] = {
+ { 0, &hf_rrc_complete_14 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_14 },
+ { 1, &hf_rrc_preconfiguration_13, ASN1_NO_EXTENSIONS , dissect_rrc_T_preconfiguration_13 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_specificationMode_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_specificationMode_14, T_specificationMode_14_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t RadioBearerReconfiguration_r10_IEs_sequence[] = {
+ { &hf_rrc_integrityProtectionModeInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntegrityProtectionModeInfo_r7 },
+ { &hf_rrc_cipheringModeInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CipheringModeInfo_r7 },
+ { &hf_rrc_activationTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ActivationTime },
+ { &hf_rrc_delayRestrictionFlag, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DelayRestrictionFlag },
+ { &hf_rrc_new_U_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_U_RNTI },
+ { &hf_rrc_new_C_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_C_RNTI },
+ { &hf_rrc_new_DSCH_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DSCH_RNTI },
+ { &hf_rrc_new_H_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_H_RNTI },
+ { &hf_rrc_newPrimary_E_RNTI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RNTI },
+ { &hf_rrc_newSecondary_E_RNTI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RNTI },
+ { &hf_rrc_rrc_StateIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_StateIndicator },
+ { &hf_rrc_ueMobilityStateIndicator, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_High_MobilityDetected },
+ { &hf_rrc_utran_DRX_CycleLengthCoeff_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UTRAN_DRX_CycleLengthCoefficient_r7 },
+ { &hf_rrc_cn_InformationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_InformationInfo_r6 },
+ { &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
+ { &hf_rrc_supportForChangeOfUE_Capability, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BOOLEAN },
+ { &hf_rrc_responseToChangeOfUE_Capability_07, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_responseToChangeOfUE_Capability_07 },
+ { &hf_rrc_defaultConfigForCellFACH, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultConfigForCellFACH },
+ { &hf_rrc_specificationMode_14, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_14 },
+ { &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
+ { &hf_rrc_multi_frequencyInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Multi_frequencyInfo_LCR_r7 },
+ { &hf_rrc_dtx_drx_TimingInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DTX_DRX_TimingInfo_r7 },
+ { &hf_rrc_dtx_drx_Info , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DTX_DRX_Info_r7 },
+ { &hf_rrc_hs_scch_LessInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_SCCH_LessInfo_r7 },
+ { &hf_rrc_mimoParameters_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MIMO_Parameters_r9 },
+ { &hf_rrc_maxAllowedUL_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MaxAllowedUL_TX_Power },
+ { &hf_rrc_ul_DPCH_Info_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DPCH_Info_r7 },
+ { &hf_rrc_ul_EDCH_Information_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_EDCH_Information_r9 },
+ { &hf_rrc_ul_SecondaryCellInfoFDD, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_SecondaryCellInfoFDD },
+ { &hf_rrc_ul_MulticarrierEDCHInfo_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_MulticarrierEDCHInfo_TDD128 },
+ { &hf_rrc_dl_HSPDSCH_Information_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_HSPDSCH_Information_r9 },
+ { &hf_rrc_dl_CommonInformation_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonInformation_r10 },
+ { &hf_rrc_dl_InformationPerRL_List_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_InformationPerRL_List_r8 },
+ { &hf_rrc_dl_SecondaryCellInfoFDD_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_SecondaryCellInfoFDD_r10 },
+ { &hf_rrc_additionalDLSecCellInfoListFDD, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_AdditionalDLSecCellInfoListFDD },
+ { &hf_rrc_controlChannelDRXInfo_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ControlChannelDRXInfo_TDD128_r8 },
+ { &hf_rrc_sps_Information_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SPS_Information_TDD128_r8 },
+ { &hf_rrc_mu_MIMO_Info_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MU_MIMO_Info_TDD128 },
+ { &hf_rrc_mbms_PL_ServiceRestrictInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MBMS_PL_ServiceRestrictInfo_r6 },
+ { &hf_rrc_cellDCHMeasOccasionInfo_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellDCHMeasOccasionInfo_TDD128_r9 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_RadioBearerReconfiguration_r10_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_RadioBearerReconfiguration_r10_IEs, RadioBearerReconfiguration_r10_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_84_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_84(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_84, T_nonCriticalExtensions_84_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_r10_06_sequence[] = {
+ { &hf_rrc_radioBearerReconfiguration_r10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerReconfiguration_r10_IEs },
+ { &hf_rrc_radioBearerReconfiguration_r10_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
+ { &hf_rrc_nonCriticalExtensions_84, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_84 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_r10_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_r10_06, T_r10_06_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_criticalExtensions_65_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_65(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_65, T_criticalExtensions_65_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_criticalExtensions_64_vals[] = {
+ { 0, "r10" },
+ { 1, "criticalExtensions" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_criticalExtensions_64_choice[] = {
+ { 0, &hf_rrc_r10_06 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r10_06 },
+ { 1, &hf_rrc_criticalExtensions_65, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_65 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_64(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_64, T_criticalExtensions_64_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_criticalExtensions_63_vals[] = {
{ 0, "r9" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_57_choice[] = {
+static const per_choice_t T_criticalExtensions_63_choice[] = {
{ 0, &hf_rrc_r9_06 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r9_06 },
- { 1, &hf_rrc_criticalExtensions_58, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_58 },
+ { 1, &hf_rrc_criticalExtensions_64, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_64 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_57(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_63(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_57, T_criticalExtensions_57_choice,
+ ett_rrc_T_criticalExtensions_63, T_criticalExtensions_63_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_56_vals[] = {
+static const value_string rrc_T_criticalExtensions_62_vals[] = {
{ 0, "r8" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_56_choice[] = {
+static const per_choice_t T_criticalExtensions_62_choice[] = {
{ 0, &hf_rrc_r8_07 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r8_07 },
- { 1, &hf_rrc_criticalExtensions_57, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_57 },
+ { 1, &hf_rrc_criticalExtensions_63, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_63 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_56(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_62(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_56, T_criticalExtensions_56_choice,
+ ett_rrc_T_criticalExtensions_62, T_criticalExtensions_62_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_55_vals[] = {
+static const value_string rrc_T_criticalExtensions_61_vals[] = {
{ 0, "r7" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_55_choice[] = {
+static const per_choice_t T_criticalExtensions_61_choice[] = {
{ 0, &hf_rrc_r7_06 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r7_06 },
- { 1, &hf_rrc_criticalExtensions_56, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_56 },
+ { 1, &hf_rrc_criticalExtensions_62, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_62 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_55(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_61(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_55, T_criticalExtensions_55_choice,
+ ett_rrc_T_criticalExtensions_61, T_criticalExtensions_61_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_54_vals[] = {
+static const value_string rrc_T_criticalExtensions_60_vals[] = {
{ 0, "r6" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_54_choice[] = {
+static const per_choice_t T_criticalExtensions_60_choice[] = {
{ 0, &hf_rrc_r6_07 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r6_07 },
- { 1, &hf_rrc_criticalExtensions_55, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_55 },
+ { 1, &hf_rrc_criticalExtensions_61, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_61 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_54(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_60(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_54, T_criticalExtensions_54_choice,
+ ett_rrc_T_criticalExtensions_60, T_criticalExtensions_60_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_53_vals[] = {
+static const value_string rrc_T_criticalExtensions_59_vals[] = {
{ 0, "r5" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_53_choice[] = {
+static const per_choice_t T_criticalExtensions_59_choice[] = {
{ 0, &hf_rrc_r5_05 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r5_05 },
- { 1, &hf_rrc_criticalExtensions_54, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_54 },
+ { 1, &hf_rrc_criticalExtensions_60, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_60 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_53(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_59(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_53, T_criticalExtensions_53_choice,
+ ett_rrc_T_criticalExtensions_59, T_criticalExtensions_59_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_52_vals[] = {
+static const value_string rrc_T_criticalExtensions_58_vals[] = {
{ 0, "r4" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_52_choice[] = {
+static const per_choice_t T_criticalExtensions_58_choice[] = {
{ 0, &hf_rrc_r4_06 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r4_06 },
- { 1, &hf_rrc_criticalExtensions_53, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_53 },
+ { 1, &hf_rrc_criticalExtensions_59, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_59 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_52(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_58(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_52, T_criticalExtensions_52_choice,
+ ett_rrc_T_criticalExtensions_58, T_criticalExtensions_58_choice,
NULL);
return offset;
@@ -64527,7 +68299,7 @@ dissect_rrc_T_criticalExtensions_52(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_later_than_r3_12_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_52, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_52 },
+ { &hf_rrc_criticalExtensions_58, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_58 },
{ NULL, 0, 0, NULL }
};
@@ -64554,7 +68326,7 @@ static const per_choice_t RadioBearerReconfiguration_choice[] = {
static int
dissect_rrc_RadioBearerReconfiguration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 277 "../../asn1/rrc/rrc.cnf"
+#line 322 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReconfiguration");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_RadioBearerReconfiguration, RadioBearerReconfiguration_choice,
@@ -64567,16 +68339,16 @@ dissect_rrc_RadioBearerReconfiguration(tvbuff_t *tvb _U_, int offset _U_, asn1_c
}
-static const per_sequence_t T_fdd_25_sequence[] = {
+static const per_sequence_t T_fdd_26_sequence[] = {
{ &hf_rrc_dummy1 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CPCH_SetID },
{ &hf_rrc_dummy2_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DRAC_StaticInformationList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_25(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_26(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_25, T_fdd_25_sequence);
+ ett_rrc_T_fdd_26, T_fdd_26_sequence);
return offset;
}
@@ -64589,7 +68361,7 @@ static const value_string rrc_T_dummy_04_vals[] = {
};
static const per_choice_t T_dummy_04_choice[] = {
- { 0, &hf_rrc_fdd_25 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_25 },
+ { 0, &hf_rrc_fdd_26 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_26 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -64604,15 +68376,15 @@ dissect_rrc_T_dummy_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
}
-static const per_sequence_t T_fdd_26_sequence[] = {
+static const per_sequence_t T_fdd_27_sequence[] = {
{ &hf_rrc_dummy_05 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_PDSCH_Information },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_26(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_27(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_26, T_fdd_26_sequence);
+ ett_rrc_T_fdd_27, T_fdd_27_sequence);
return offset;
}
@@ -64625,7 +68397,7 @@ static const value_string rrc_T_modeSpecificPhysChInfo_06_vals[] = {
};
static const per_choice_t T_modeSpecificPhysChInfo_06_choice[] = {
- { 0, &hf_rrc_fdd_26 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_26 },
+ { 0, &hf_rrc_fdd_27 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_27 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -64659,7 +68431,7 @@ static const per_sequence_t RadioBearerRelease_r3_IEs_sequence[] = {
{ &hf_rrc_ul_CommonTransChInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo },
{ &hf_rrc_ul_deletedTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DeletedTransChInfoList },
{ &hf_rrc_ul_AddReconfTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList },
- { &hf_rrc_dummy_12 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_04 },
+ { &hf_rrc_dummy_16 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_04 },
{ &hf_rrc_dl_CommonTransChInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonTransChInfo },
{ &hf_rrc_dl_DeletedTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DeletedTransChInfoList },
{ &hf_rrc_dl_AddReconfTransChInfoList_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_AddReconfTransChInfo2List },
@@ -64774,14 +68546,14 @@ dissect_rrc_RadioBearerRelease_v770ext_IEs(tvbuff_t *tvb _U_, int offset _U_, as
}
-static const per_sequence_t T_nonCriticalExtensions_80_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_87_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_80(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_87(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_80, T_nonCriticalExtensions_80_sequence);
+ ett_rrc_T_nonCriticalExtensions_87, T_nonCriticalExtensions_87_sequence);
return offset;
}
@@ -64789,7 +68561,7 @@ dissect_rrc_T_nonCriticalExtensions_80(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v770NonCriticalExtensions_15_sequence[] = {
{ &hf_rrc_radioBearerRelease_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerRelease_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_80, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_80 },
+ { &hf_rrc_nonCriticalExtensions_87, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_87 },
{ NULL, 0, 0, NULL }
};
@@ -64892,16 +68664,16 @@ dissect_rrc_T_r3_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_fdd_27_sequence[] = {
+static const per_sequence_t T_fdd_28_sequence[] = {
{ &hf_rrc_dummy1 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CPCH_SetID },
{ &hf_rrc_dummy2_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DRAC_StaticInformationList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_27(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_28(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_27, T_fdd_27_sequence);
+ ett_rrc_T_fdd_28, T_fdd_28_sequence);
return offset;
}
@@ -64914,7 +68686,7 @@ static const value_string rrc_T_dummy_05_vals[] = {
};
static const per_choice_t T_dummy_05_choice[] = {
- { 0, &hf_rrc_fdd_27 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_27 },
+ { 0, &hf_rrc_fdd_28 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_28 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -64929,15 +68701,15 @@ dissect_rrc_T_dummy_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
}
-static const per_sequence_t T_fdd_28_sequence[] = {
+static const per_sequence_t T_fdd_29_sequence[] = {
{ &hf_rrc_dummy_05 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_PDSCH_Information },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_28(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_29(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_28, T_fdd_28_sequence);
+ ett_rrc_T_fdd_29, T_fdd_29_sequence);
return offset;
}
@@ -64950,7 +68722,7 @@ static const value_string rrc_T_modeSpecificPhysChInfo_07_vals[] = {
};
static const per_choice_t T_modeSpecificPhysChInfo_07_choice[] = {
- { 0, &hf_rrc_fdd_28 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_28 },
+ { 0, &hf_rrc_fdd_29 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_29 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -64984,7 +68756,7 @@ static const per_sequence_t RadioBearerRelease_r4_IEs_sequence[] = {
{ &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo_r4 },
{ &hf_rrc_ul_deletedTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DeletedTransChInfoList },
{ &hf_rrc_ul_AddReconfTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList },
- { &hf_rrc_dummy_13 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_05 },
+ { &hf_rrc_dummy_17 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_05 },
{ &hf_rrc_dl_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonTransChInfo_r4 },
{ &hf_rrc_dl_DeletedTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DeletedTransChInfoList },
{ &hf_rrc_dl_AddReconfTransChInfoList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_AddReconfTransChInfoList_r4 },
@@ -65006,14 +68778,14 @@ dissect_rrc_RadioBearerRelease_r4_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
}
-static const per_sequence_t T_nonCriticalExtensions_81_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_88_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_81(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_88(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_81, T_nonCriticalExtensions_81_sequence);
+ ett_rrc_T_nonCriticalExtensions_88, T_nonCriticalExtensions_88_sequence);
return offset;
}
@@ -65021,7 +68793,7 @@ dissect_rrc_T_nonCriticalExtensions_81(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v770NonCriticalExtensions_16_sequence[] = {
{ &hf_rrc_radioBearerRelease_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerRelease_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_81, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_81 },
+ { &hf_rrc_nonCriticalExtensions_88, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_88 },
{ NULL, 0, 0, NULL }
};
@@ -65094,16 +68866,16 @@ dissect_rrc_T_r4_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_fdd_29_sequence[] = {
+static const per_sequence_t T_fdd_30_sequence[] = {
{ &hf_rrc_dummy1 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CPCH_SetID },
{ &hf_rrc_dummy2_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DRAC_StaticInformationList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_29(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_30(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_29, T_fdd_29_sequence);
+ ett_rrc_T_fdd_30, T_fdd_30_sequence);
return offset;
}
@@ -65116,7 +68888,7 @@ static const value_string rrc_T_dummy_06_vals[] = {
};
static const per_choice_t T_dummy_06_choice[] = {
- { 0, &hf_rrc_fdd_29 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_29 },
+ { 0, &hf_rrc_fdd_30 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_30 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -65131,15 +68903,15 @@ dissect_rrc_T_dummy_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
}
-static const per_sequence_t T_fdd_30_sequence[] = {
+static const per_sequence_t T_fdd_31_sequence[] = {
{ &hf_rrc_dummy_05 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_PDSCH_Information },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_30(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_30, T_fdd_30_sequence);
+ ett_rrc_T_fdd_31, T_fdd_31_sequence);
return offset;
}
@@ -65152,7 +68924,7 @@ static const value_string rrc_T_modeSpecificPhysChInfo_08_vals[] = {
};
static const per_choice_t T_modeSpecificPhysChInfo_08_choice[] = {
- { 0, &hf_rrc_fdd_30 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_30 },
+ { 0, &hf_rrc_fdd_31 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_31 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -65187,7 +68959,7 @@ static const per_sequence_t RadioBearerRelease_r5_IEs_sequence[] = {
{ &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo_r4 },
{ &hf_rrc_ul_deletedTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DeletedTransChInfoList },
{ &hf_rrc_ul_AddReconfTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList },
- { &hf_rrc_dummy_14 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_06 },
+ { &hf_rrc_dummy_18 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_06 },
{ &hf_rrc_dl_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonTransChInfo_r4 },
{ &hf_rrc_dl_DeletedTransChInfoList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DeletedTransChInfoList_r5 },
{ &hf_rrc_dl_AddReconfTransChInfoList_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_AddReconfTransChInfoList_r5 },
@@ -65210,14 +68982,14 @@ dissect_rrc_RadioBearerRelease_r5_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
}
-static const per_sequence_t T_nonCriticalExtensions_82_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_89_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_82(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_89(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_82, T_nonCriticalExtensions_82_sequence);
+ ett_rrc_T_nonCriticalExtensions_89, T_nonCriticalExtensions_89_sequence);
return offset;
}
@@ -65225,7 +68997,7 @@ dissect_rrc_T_nonCriticalExtensions_82(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v770NonCriticalExtensions_17_sequence[] = {
{ &hf_rrc_radioBearerRelease_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerRelease_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_82, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_82 },
+ { &hf_rrc_nonCriticalExtensions_89, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_89 },
{ NULL, 0, 0, NULL }
};
@@ -65330,14 +69102,14 @@ dissect_rrc_RadioBearerRelease_v6b0ext_IEs(tvbuff_t *tvb _U_, int offset _U_, as
}
-static const per_sequence_t T_nonCriticalExtensions_83_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_90_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_83(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_90(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_83, T_nonCriticalExtensions_83_sequence);
+ ett_rrc_T_nonCriticalExtensions_90, T_nonCriticalExtensions_90_sequence);
return offset;
}
@@ -65345,7 +69117,7 @@ dissect_rrc_T_nonCriticalExtensions_83(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v770NonCriticalExtensions_18_sequence[] = {
{ &hf_rrc_radioBearerRelease_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerRelease_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_83, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_83 },
+ { &hf_rrc_nonCriticalExtensions_90, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_90 },
{ NULL, 0, 0, NULL }
};
@@ -65499,14 +69271,14 @@ dissect_rrc_RadioBearerRelease_v7g0ext_IEs(tvbuff_t *tvb _U_, int offset _U_, as
}
-static const per_sequence_t T_nonCriticalExtensions_84_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_91_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_84(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_91(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_84, T_nonCriticalExtensions_84_sequence);
+ ett_rrc_T_nonCriticalExtensions_91, T_nonCriticalExtensions_91_sequence);
return offset;
}
@@ -65514,7 +69286,7 @@ dissect_rrc_T_nonCriticalExtensions_84(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v7g0NonCriticalExtensions_10_sequence[] = {
{ &hf_rrc_radioBearerRelease_v7g0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerRelease_v7g0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_84, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_84 },
+ { &hf_rrc_nonCriticalExtensions_91, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_91 },
{ NULL, 0, 0, NULL }
};
@@ -65674,14 +69446,14 @@ dissect_rrc_RadioBearerRelease_v8a0ext_IEs(tvbuff_t *tvb _U_, int offset _U_, as
}
-static const per_sequence_t T_nonCriticalExtensions_85_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_92_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_85(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_92(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_85, T_nonCriticalExtensions_85_sequence);
+ ett_rrc_T_nonCriticalExtensions_92, T_nonCriticalExtensions_92_sequence);
return offset;
}
@@ -65689,7 +69461,7 @@ dissect_rrc_T_nonCriticalExtensions_85(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v8a0NonCriticalExtensions_06_sequence[] = {
{ &hf_rrc_radioBearerRelease_v8a0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerRelease_v8a0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_85, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_85 },
+ { &hf_rrc_nonCriticalExtensions_92, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_92 },
{ NULL, 0, 0, NULL }
};
@@ -65864,14 +69636,14 @@ dissect_rrc_RadioBearerRelease_v970ext_IEs(tvbuff_t *tvb _U_, int offset _U_, as
}
-static const per_sequence_t T_nonCriticalExtensions_86_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_93_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_86(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_93(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_86, T_nonCriticalExtensions_86_sequence);
+ ett_rrc_T_nonCriticalExtensions_93, T_nonCriticalExtensions_93_sequence);
return offset;
}
@@ -65879,7 +69651,7 @@ dissect_rrc_T_nonCriticalExtensions_86(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v970NonCriticalExtensions_02_sequence[] = {
{ &hf_rrc_radioBearerRelease_v970ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerRelease_v970ext_IEs },
- { &hf_rrc_nonCriticalExtensions_86, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_86 },
+ { &hf_rrc_nonCriticalExtensions_93, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_93 },
{ NULL, 0, 0, NULL }
};
@@ -65923,145 +69695,258 @@ dissect_rrc_T_r9_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_65_sequence[] = {
+static const per_sequence_t RadioBearerRelease_r10_IEs_sequence[] = {
+ { &hf_rrc_integrityProtectionModeInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntegrityProtectionModeInfo_r7 },
+ { &hf_rrc_cipheringModeInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CipheringModeInfo_r7 },
+ { &hf_rrc_activationTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ActivationTime },
+ { &hf_rrc_new_U_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_U_RNTI },
+ { &hf_rrc_new_C_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_C_RNTI },
+ { &hf_rrc_new_DSCH_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DSCH_RNTI },
+ { &hf_rrc_new_H_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_H_RNTI },
+ { &hf_rrc_newPrimary_E_RNTI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RNTI },
+ { &hf_rrc_newSecondary_E_RNTI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RNTI },
+ { &hf_rrc_rrc_StateIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_StateIndicator },
+ { &hf_rrc_ueMobilityStateIndicator, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_High_MobilityDetected },
+ { &hf_rrc_utran_DRX_CycleLengthCoeff_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UTRAN_DRX_CycleLengthCoefficient_r7 },
+ { &hf_rrc_cn_InformationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_InformationInfo_r6 },
+ { &hf_rrc_signallingConnectionRelIndication, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_DomainIdentity },
+ { &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
+ { &hf_rrc_supportForChangeOfUE_Capability, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BOOLEAN },
+ { &hf_rrc_rab_InformationReconfigList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationReconfigList_r8 },
+ { &hf_rrc_rb_InformationReleaseList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RB_InformationReleaseList },
+ { &hf_rrc_rb_InformationReconfigList_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_InformationReconfigList_r8 },
+ { &hf_rrc_rb_InformationAffectedList_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_InformationAffectedList_r8 },
+ { &hf_rrc_dl_CounterSynchronisationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CounterSynchronisationInfo_r5 },
+ { &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo_r4 },
+ { &hf_rrc_ul_deletedTransChInfoList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DeletedTransChInfoList_r6 },
+ { &hf_rrc_ul_AddReconfTransChInfoList_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList_r8 },
+ { &hf_rrc_dl_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonTransChInfo_r4 },
+ { &hf_rrc_dl_DeletedTransChInfoList_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DeletedTransChInfoList_r7 },
+ { &hf_rrc_dl_AddReconfTransChInfoList_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_AddReconfTransChInfoList_r9 },
+ { &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
+ { &hf_rrc_multi_frequencyInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Multi_frequencyInfo_LCR_r7 },
+ { &hf_rrc_dtx_drx_TimingInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DTX_DRX_TimingInfo_r7 },
+ { &hf_rrc_dtx_drx_Info , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DTX_DRX_Info_r7 },
+ { &hf_rrc_hs_scch_LessInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_SCCH_LessInfo_r7 },
+ { &hf_rrc_mimoParameters_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MIMO_Parameters_r9 },
+ { &hf_rrc_maxAllowedUL_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MaxAllowedUL_TX_Power },
+ { &hf_rrc_ul_DPCH_Info_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DPCH_Info_r7 },
+ { &hf_rrc_ul_EDCH_Information_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_EDCH_Information_r9 },
+ { &hf_rrc_ul_SecondaryCellInfoFDD, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_SecondaryCellInfoFDD },
+ { &hf_rrc_ul_MulticarrierEDCHInfo_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_MulticarrierEDCHInfo_TDD128 },
+ { &hf_rrc_dl_HSPDSCH_Information_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_HSPDSCH_Information_r9 },
+ { &hf_rrc_dl_CommonInformation_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonInformation_r10 },
+ { &hf_rrc_dl_InformationPerRL_List_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_InformationPerRL_List_r8 },
+ { &hf_rrc_dl_SecondaryCellInfoFDD_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_SecondaryCellInfoFDD_r10 },
+ { &hf_rrc_additionalDLSecCellInfoListFDD, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_AdditionalDLSecCellInfoListFDD },
+ { &hf_rrc_controlChannelDRXInfo_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ControlChannelDRXInfo_TDD128_r8 },
+ { &hf_rrc_sps_Information_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SPS_Information_TDD128_r8 },
+ { &hf_rrc_mu_MIMO_Info_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MU_MIMO_Info_TDD128 },
+ { &hf_rrc_mbms_PL_ServiceRestrictInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MBMS_PL_ServiceRestrictInfo_r6 },
+ { &hf_rrc_mbms_RB_ListReleasedToChangeTransferMode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_InformationReleaseList },
+ { &hf_rrc_cellDCHMeasOccasionInfo_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellDCHMeasOccasionInfo_TDD128_r9 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_65(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_RadioBearerRelease_r10_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_65, T_criticalExtensions_65_sequence);
+ ett_rrc_RadioBearerRelease_r10_IEs, RadioBearerRelease_r10_IEs_sequence);
return offset;
}
-static const value_string rrc_T_criticalExtensions_64_vals[] = {
+static const per_sequence_t T_nonCriticalExtensions_94_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_94(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_94, T_nonCriticalExtensions_94_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_r10_07_sequence[] = {
+ { &hf_rrc_radioBearerRelease_r10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerRelease_r10_IEs },
+ { &hf_rrc_radioBearerRelease_r10_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
+ { &hf_rrc_nonCriticalExtensions_94, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_94 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_r10_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_r10_07, T_r10_07_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_criticalExtensions_73_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_73(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_73, T_criticalExtensions_73_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_criticalExtensions_72_vals[] = {
+ { 0, "r10" },
+ { 1, "criticalExtensions" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_criticalExtensions_72_choice[] = {
+ { 0, &hf_rrc_r10_07 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r10_07 },
+ { 1, &hf_rrc_criticalExtensions_73, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_73 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_72(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_72, T_criticalExtensions_72_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_criticalExtensions_71_vals[] = {
{ 0, "r9" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_64_choice[] = {
+static const per_choice_t T_criticalExtensions_71_choice[] = {
{ 0, &hf_rrc_r9_07 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r9_07 },
- { 1, &hf_rrc_criticalExtensions_65, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_65 },
+ { 1, &hf_rrc_criticalExtensions_72, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_72 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_64(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_71(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_64, T_criticalExtensions_64_choice,
+ ett_rrc_T_criticalExtensions_71, T_criticalExtensions_71_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_63_vals[] = {
+static const value_string rrc_T_criticalExtensions_70_vals[] = {
{ 0, "r8" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_63_choice[] = {
+static const per_choice_t T_criticalExtensions_70_choice[] = {
{ 0, &hf_rrc_r8_08 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r8_08 },
- { 1, &hf_rrc_criticalExtensions_64, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_64 },
+ { 1, &hf_rrc_criticalExtensions_71, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_71 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_63(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_70(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_63, T_criticalExtensions_63_choice,
+ ett_rrc_T_criticalExtensions_70, T_criticalExtensions_70_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_62_vals[] = {
+static const value_string rrc_T_criticalExtensions_69_vals[] = {
{ 0, "r7" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_62_choice[] = {
+static const per_choice_t T_criticalExtensions_69_choice[] = {
{ 0, &hf_rrc_r7_07 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r7_07 },
- { 1, &hf_rrc_criticalExtensions_63, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_63 },
+ { 1, &hf_rrc_criticalExtensions_70, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_70 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_62(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_69(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_62, T_criticalExtensions_62_choice,
+ ett_rrc_T_criticalExtensions_69, T_criticalExtensions_69_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_61_vals[] = {
+static const value_string rrc_T_criticalExtensions_68_vals[] = {
{ 0, "r6" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_61_choice[] = {
+static const per_choice_t T_criticalExtensions_68_choice[] = {
{ 0, &hf_rrc_r6_08 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r6_08 },
- { 1, &hf_rrc_criticalExtensions_62, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_62 },
+ { 1, &hf_rrc_criticalExtensions_69, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_69 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_61(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_68(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_61, T_criticalExtensions_61_choice,
+ ett_rrc_T_criticalExtensions_68, T_criticalExtensions_68_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_60_vals[] = {
+static const value_string rrc_T_criticalExtensions_67_vals[] = {
{ 0, "r5" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_60_choice[] = {
+static const per_choice_t T_criticalExtensions_67_choice[] = {
{ 0, &hf_rrc_r5_06 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r5_06 },
- { 1, &hf_rrc_criticalExtensions_61, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_61 },
+ { 1, &hf_rrc_criticalExtensions_68, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_68 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_60(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_67(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_60, T_criticalExtensions_60_choice,
+ ett_rrc_T_criticalExtensions_67, T_criticalExtensions_67_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_59_vals[] = {
+static const value_string rrc_T_criticalExtensions_66_vals[] = {
{ 0, "r4" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_59_choice[] = {
+static const per_choice_t T_criticalExtensions_66_choice[] = {
{ 0, &hf_rrc_r4_07 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r4_07 },
- { 1, &hf_rrc_criticalExtensions_60, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_60 },
+ { 1, &hf_rrc_criticalExtensions_67, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_67 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_59(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_66(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_59, T_criticalExtensions_59_choice,
+ ett_rrc_T_criticalExtensions_66, T_criticalExtensions_66_choice,
NULL);
return offset;
@@ -66070,7 +69955,7 @@ dissect_rrc_T_criticalExtensions_59(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_later_than_r3_13_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_59, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_59 },
+ { &hf_rrc_criticalExtensions_66, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_66 },
{ NULL, 0, 0, NULL }
};
@@ -66097,7 +69982,7 @@ static const per_choice_t RadioBearerRelease_choice[] = {
static int
dissect_rrc_RadioBearerRelease(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 289 "../../asn1/rrc/rrc.cnf"
+#line 334 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerRelease");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_RadioBearerRelease, RadioBearerRelease_choice,
@@ -66222,16 +70107,16 @@ dissect_rrc_RAB_InformationSetupList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_fdd_31_sequence[] = {
+static const per_sequence_t T_fdd_32_sequence[] = {
{ &hf_rrc_dummy1 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CPCH_SetID },
{ &hf_rrc_dummy2_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DRAC_StaticInformationList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_31, T_fdd_31_sequence);
+ ett_rrc_T_fdd_32, T_fdd_32_sequence);
return offset;
}
@@ -66244,7 +70129,7 @@ static const value_string rrc_T_dummy_07_vals[] = {
};
static const per_choice_t T_dummy_07_choice[] = {
- { 0, &hf_rrc_fdd_31 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_31 },
+ { 0, &hf_rrc_fdd_32 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_32 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -66259,15 +70144,15 @@ dissect_rrc_T_dummy_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
}
-static const per_sequence_t T_fdd_32_sequence[] = {
+static const per_sequence_t T_fdd_33_sequence[] = {
{ &hf_rrc_dummy_05 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_PDSCH_Information },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_33(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_32, T_fdd_32_sequence);
+ ett_rrc_T_fdd_33, T_fdd_33_sequence);
return offset;
}
@@ -66280,7 +70165,7 @@ static const value_string rrc_T_modeSpecificPhysChInfo_09_vals[] = {
};
static const per_choice_t T_modeSpecificPhysChInfo_09_choice[] = {
- { 0, &hf_rrc_fdd_32 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_32 },
+ { 0, &hf_rrc_fdd_33 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_33 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -66313,7 +70198,7 @@ static const per_sequence_t RadioBearerSetup_r3_IEs_sequence[] = {
{ &hf_rrc_ul_CommonTransChInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo },
{ &hf_rrc_ul_deletedTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DeletedTransChInfoList },
{ &hf_rrc_ul_AddReconfTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList },
- { &hf_rrc_dummy_15 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_07 },
+ { &hf_rrc_dummy_19 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_07 },
{ &hf_rrc_dl_CommonTransChInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonTransChInfo },
{ &hf_rrc_dl_DeletedTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DeletedTransChInfoList },
{ &hf_rrc_dl_AddReconfTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_AddReconfTransChInfoList },
@@ -66470,14 +70355,14 @@ dissect_rrc_RadioBearerSetup_v690ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_nonCriticalExtensions_89_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_97_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_89(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_97(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_89, T_nonCriticalExtensions_89_sequence);
+ ett_rrc_T_nonCriticalExtensions_97, T_nonCriticalExtensions_97_sequence);
return offset;
}
@@ -66485,7 +70370,7 @@ dissect_rrc_T_nonCriticalExtensions_89(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v690NonCriticalExtensions_22_sequence[] = {
{ &hf_rrc_radioBearerSetup_v690ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerSetup_v690ext_IEs },
- { &hf_rrc_nonCriticalExtensions_89, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_89 },
+ { &hf_rrc_nonCriticalExtensions_97, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_97 },
{ NULL, 0, 0, NULL }
};
@@ -66648,16 +70533,16 @@ dissect_rrc_RAB_InformationSetupList_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_
}
-static const per_sequence_t T_fdd_33_sequence[] = {
+static const per_sequence_t T_fdd_34_sequence[] = {
{ &hf_rrc_dummy1 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CPCH_SetID },
{ &hf_rrc_dummy2_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DRAC_StaticInformationList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_33(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_34(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_33, T_fdd_33_sequence);
+ ett_rrc_T_fdd_34, T_fdd_34_sequence);
return offset;
}
@@ -66670,7 +70555,7 @@ static const value_string rrc_T_dummy_08_vals[] = {
};
static const per_choice_t T_dummy_08_choice[] = {
- { 0, &hf_rrc_fdd_33 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_33 },
+ { 0, &hf_rrc_fdd_34 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_34 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -66685,15 +70570,15 @@ dissect_rrc_T_dummy_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
}
-static const per_sequence_t T_fdd_34_sequence[] = {
+static const per_sequence_t T_fdd_35_sequence[] = {
{ &hf_rrc_dummy_05 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_PDSCH_Information },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_34(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_35(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_34, T_fdd_34_sequence);
+ ett_rrc_T_fdd_35, T_fdd_35_sequence);
return offset;
}
@@ -66706,7 +70591,7 @@ static const value_string rrc_T_modeSpecificPhysChInfo_10_vals[] = {
};
static const per_choice_t T_modeSpecificPhysChInfo_10_choice[] = {
- { 0, &hf_rrc_fdd_34 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_34 },
+ { 0, &hf_rrc_fdd_35 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_35 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -66739,7 +70624,7 @@ static const per_sequence_t RadioBearerSetup_r4_IEs_sequence[] = {
{ &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo_r4 },
{ &hf_rrc_ul_deletedTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DeletedTransChInfoList },
{ &hf_rrc_ul_AddReconfTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList },
- { &hf_rrc_dummy_16 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_08 },
+ { &hf_rrc_dummy_20 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_08 },
{ &hf_rrc_dl_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonTransChInfo_r4 },
{ &hf_rrc_dl_DeletedTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DeletedTransChInfoList },
{ &hf_rrc_dl_AddReconfTransChInfoList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_AddReconfTransChInfoList_r4 },
@@ -66761,14 +70646,14 @@ dissect_rrc_RadioBearerSetup_r4_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
-static const per_sequence_t T_nonCriticalExtensions_90_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_98_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_90(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_98(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_90, T_nonCriticalExtensions_90_sequence);
+ ett_rrc_T_nonCriticalExtensions_98, T_nonCriticalExtensions_98_sequence);
return offset;
}
@@ -66776,7 +70661,7 @@ dissect_rrc_T_nonCriticalExtensions_90(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v690NonCriticalExtensions_23_sequence[] = {
{ &hf_rrc_radioBearerSetup_v690ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerSetup_v690ext_IEs },
- { &hf_rrc_nonCriticalExtensions_90, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_90 },
+ { &hf_rrc_nonCriticalExtensions_98, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_98 },
{ NULL, 0, 0, NULL }
};
@@ -66961,16 +70846,16 @@ dissect_rrc_RAB_InformationSetupList_r5(tvbuff_t *tvb _U_, int offset _U_, asn1_
}
-static const per_sequence_t T_fdd_35_sequence[] = {
+static const per_sequence_t T_fdd_36_sequence[] = {
{ &hf_rrc_dummy1 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CPCH_SetID },
{ &hf_rrc_dummy2_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DRAC_StaticInformationList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_35(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_36(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_35, T_fdd_35_sequence);
+ ett_rrc_T_fdd_36, T_fdd_36_sequence);
return offset;
}
@@ -66983,7 +70868,7 @@ static const value_string rrc_T_dummy_09_vals[] = {
};
static const per_choice_t T_dummy_09_choice[] = {
- { 0, &hf_rrc_fdd_35 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_35 },
+ { 0, &hf_rrc_fdd_36 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_36 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -66998,15 +70883,15 @@ dissect_rrc_T_dummy_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
}
-static const per_sequence_t T_fdd_36_sequence[] = {
+static const per_sequence_t T_fdd_37_sequence[] = {
{ &hf_rrc_dummy_05 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_PDSCH_Information },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_36(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_37(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_36, T_fdd_36_sequence);
+ ett_rrc_T_fdd_37, T_fdd_37_sequence);
return offset;
}
@@ -67019,7 +70904,7 @@ static const value_string rrc_T_modeSpecificPhysChInfo_11_vals[] = {
};
static const per_choice_t T_modeSpecificPhysChInfo_11_choice[] = {
- { 0, &hf_rrc_fdd_36 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_36 },
+ { 0, &hf_rrc_fdd_37 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_37 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -67053,7 +70938,7 @@ static const per_sequence_t RadioBearerSetup_r5_IEs_sequence[] = {
{ &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo_r4 },
{ &hf_rrc_ul_deletedTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DeletedTransChInfoList },
{ &hf_rrc_ul_AddReconfTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList },
- { &hf_rrc_dummy_17 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_09 },
+ { &hf_rrc_dummy_21 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_09 },
{ &hf_rrc_dl_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonTransChInfo_r4 },
{ &hf_rrc_dl_DeletedTransChInfoList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DeletedTransChInfoList_r5 },
{ &hf_rrc_dl_AddReconfTransChInfoList_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_AddReconfTransChInfoList_r5 },
@@ -67076,14 +70961,14 @@ dissect_rrc_RadioBearerSetup_r5_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
-static const per_sequence_t T_nonCriticalExtensions_91_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_99_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_91(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_99(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_91, T_nonCriticalExtensions_91_sequence);
+ ett_rrc_T_nonCriticalExtensions_99, T_nonCriticalExtensions_99_sequence);
return offset;
}
@@ -67091,7 +70976,7 @@ dissect_rrc_T_nonCriticalExtensions_91(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v690NonCriticalExtensions_24_sequence[] = {
{ &hf_rrc_radioBearerSetup_v690ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerSetup_v690ext_IEs },
- { &hf_rrc_nonCriticalExtensions_91, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_91 },
+ { &hf_rrc_nonCriticalExtensions_99, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_99 },
{ NULL, 0, 0, NULL }
};
@@ -67247,7 +71132,7 @@ dissect_rrc_RAB_InformationSetupList_r6(tvbuff_t *tvb _U_, int offset _U_, asn1_
}
-static const per_sequence_t T_complete_13_sequence[] = {
+static const per_sequence_t T_complete_15_sequence[] = {
{ &hf_rrc_srb_InformationSetupList_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SRB_InformationSetupList_r6 },
{ &hf_rrc_rab_InformationSetupList_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationSetupList_r6 },
{ &hf_rrc_rab_InformationReconfigList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationReconfigList },
@@ -67265,9 +71150,9 @@ static const per_sequence_t T_complete_13_sequence[] = {
};
static int
-dissect_rrc_T_complete_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_complete_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_complete_13, T_complete_13_sequence);
+ ett_rrc_T_complete_15, T_complete_15_sequence);
return offset;
}
@@ -67324,36 +71209,36 @@ dissect_rrc_RB_InformationChangedList_r6(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_fdd_49_sequence[] = {
+static const per_sequence_t T_fdd_51_sequence[] = {
{ &hf_rrc_gainFactorBetaC , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_GainFactor },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_49(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_51(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_49, T_fdd_49_sequence);
+ ett_rrc_T_fdd_51, T_fdd_51_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_19_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_21_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_19_choice[] = {
- { 0, &hf_rrc_fdd_50 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_49 },
+static const per_choice_t T_modeSpecificInfo_21_choice[] = {
+ { 0, &hf_rrc_fdd_52 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_51 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_19, T_modeSpecificInfo_19_choice,
+ ett_rrc_T_modeSpecificInfo_21, T_modeSpecificInfo_21_choice,
NULL);
return offset;
@@ -67362,7 +71247,7 @@ dissect_rrc_T_modeSpecificInfo_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t PowerOffsetInfoShort_sequence[] = {
{ &hf_rrc_referenceTFC , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TFC_Value },
- { &hf_rrc_modeSpecificInfo_19, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_19 },
+ { &hf_rrc_modeSpecificInfo_21, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_21 },
{ &hf_rrc_gainFactorBetaD , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_GainFactor },
{ NULL, 0, 0, NULL }
};
@@ -67394,22 +71279,22 @@ dissect_rrc_T_dummy_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
}
-static const value_string rrc_T_specificationMode_13_vals[] = {
+static const value_string rrc_T_specificationMode_15_vals[] = {
{ 0, "complete" },
{ 1, "dummy" },
{ 0, NULL }
};
-static const per_choice_t T_specificationMode_13_choice[] = {
- { 0, &hf_rrc_complete_13 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_13 },
- { 1, &hf_rrc_dummy_18 , ASN1_NO_EXTENSIONS , dissect_rrc_T_dummy_10 },
+static const per_choice_t T_specificationMode_15_choice[] = {
+ { 0, &hf_rrc_complete_15 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_15 },
+ { 1, &hf_rrc_dummy_22 , ASN1_NO_EXTENSIONS , dissect_rrc_T_dummy_10 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_specificationMode_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_specificationMode_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_specificationMode_13, T_specificationMode_13_choice,
+ ett_rrc_T_specificationMode_15, T_specificationMode_15_choice,
NULL);
return offset;
@@ -67430,7 +71315,7 @@ static const per_sequence_t RadioBearerSetup_r6_IEs_sequence[] = {
{ &hf_rrc_utran_DRX_CycleLengthCoeff, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UTRAN_DRX_CycleLengthCoefficient },
{ &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
{ &hf_rrc_cn_InformationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_InformationInfo_r6 },
- { &hf_rrc_specificationMode_13, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_13 },
+ { &hf_rrc_specificationMode_15, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_15 },
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
{ &hf_rrc_maxAllowedUL_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MaxAllowedUL_TX_Power },
{ &hf_rrc_ul_DPCH_Info , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DPCH_Info_r6 },
@@ -67508,14 +71393,14 @@ dissect_rrc_RadioBearerSetup_v6b0ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_nonCriticalExtensions_92_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_100_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_92(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_100(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_92, T_nonCriticalExtensions_92_sequence);
+ ett_rrc_T_nonCriticalExtensions_100, T_nonCriticalExtensions_100_sequence);
return offset;
}
@@ -67523,7 +71408,7 @@ dissect_rrc_T_nonCriticalExtensions_92(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v6b0NonCriticalExtensions_08_sequence[] = {
{ &hf_rrc_radioBearerSetup_v6b0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerSetup_v6b0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_92, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_92 },
+ { &hf_rrc_nonCriticalExtensions_100, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_100 },
{ NULL, 0, 0, NULL }
};
@@ -67596,7 +71481,7 @@ dissect_rrc_RAB_InformationSetupList_r7(tvbuff_t *tvb _U_, int offset _U_, asn1_
}
-static const per_sequence_t T_complete_14_sequence[] = {
+static const per_sequence_t T_complete_16_sequence[] = {
{ &hf_rrc_srb_InformationSetupList_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SRB_InformationSetupList_r7 },
{ &hf_rrc_rab_InformationSetupList_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationSetupList_r7 },
{ &hf_rrc_rab_InformationReconfigList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationReconfigList },
@@ -67614,30 +71499,30 @@ static const per_sequence_t T_complete_14_sequence[] = {
};
static int
-dissect_rrc_T_complete_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_complete_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_complete_14, T_complete_14_sequence);
+ ett_rrc_T_complete_16, T_complete_16_sequence);
return offset;
}
-static const value_string rrc_T_specificationMode_14_vals[] = {
+static const value_string rrc_T_specificationMode_16_vals[] = {
{ 0, "complete" },
{ 1, "dummy" },
{ 0, NULL }
};
-static const per_choice_t T_specificationMode_14_choice[] = {
- { 0, &hf_rrc_complete_14 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_14 },
- { 1, &hf_rrc_dummy_19 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+static const per_choice_t T_specificationMode_16_choice[] = {
+ { 0, &hf_rrc_complete_16 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_16 },
+ { 1, &hf_rrc_dummy_23 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_specificationMode_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_specificationMode_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_specificationMode_14, T_specificationMode_14_choice,
+ ett_rrc_T_specificationMode_16, T_specificationMode_16_choice,
NULL);
return offset;
@@ -67659,7 +71544,7 @@ static const per_sequence_t RadioBearerSetup_r7_IEs_sequence[] = {
{ &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
{ &hf_rrc_supportForChangeOfUE_Capability, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BOOLEAN },
{ &hf_rrc_cn_InformationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_InformationInfo_r6 },
- { &hf_rrc_specificationMode_14, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_14 },
+ { &hf_rrc_specificationMode_16, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_16 },
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
{ &hf_rrc_multi_frequencyInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Multi_frequencyInfo_LCR_r7 },
{ &hf_rrc_dtx_drx_TimingInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DTX_DRX_TimingInfo_r7 },
@@ -67737,14 +71622,14 @@ dissect_rrc_RadioBearerSetup_v820ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_nonCriticalExtensions_93_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_101_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_93(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_101(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_93, T_nonCriticalExtensions_93_sequence);
+ ett_rrc_T_nonCriticalExtensions_101, T_nonCriticalExtensions_101_sequence);
return offset;
}
@@ -67752,7 +71637,7 @@ dissect_rrc_T_nonCriticalExtensions_93(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v820NonCriticalExtensions_01_sequence[] = {
{ &hf_rrc_radioBearerSetup_v820ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerSetup_v820ext_IEs },
- { &hf_rrc_nonCriticalExtensions_93, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_93 },
+ { &hf_rrc_nonCriticalExtensions_101, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_101 },
{ NULL, 0, 0, NULL }
};
@@ -67968,14 +71853,14 @@ dissect_rrc_RadioBearerSetup_v8a0ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_nonCriticalExtensions_94_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_102_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_94(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_102(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_94, T_nonCriticalExtensions_94_sequence);
+ ett_rrc_T_nonCriticalExtensions_102, T_nonCriticalExtensions_102_sequence);
return offset;
}
@@ -67983,7 +71868,7 @@ dissect_rrc_T_nonCriticalExtensions_94(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v8a0NonCriticalExtensions_07_sequence[] = {
{ &hf_rrc_radioBearerSetup_v8a0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerSetup_v8a0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_94, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_94 },
+ { &hf_rrc_nonCriticalExtensions_102, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_102 },
{ NULL, 0, 0, NULL }
};
@@ -68145,14 +72030,14 @@ dissect_rrc_RadioBearerSetup_v950ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_nonCriticalExtensions_95_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_103_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_95(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_103(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_95, T_nonCriticalExtensions_95_sequence);
+ ett_rrc_T_nonCriticalExtensions_103, T_nonCriticalExtensions_103_sequence);
return offset;
}
@@ -68160,7 +72045,7 @@ dissect_rrc_T_nonCriticalExtensions_95(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v950NonCriticalExtensions_06_sequence[] = {
{ &hf_rrc_radioBearerSetup_v950ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerSetup_v950ext_IEs },
- { &hf_rrc_nonCriticalExtensions_95, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_95 },
+ { &hf_rrc_nonCriticalExtensions_103, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_103 },
{ NULL, 0, 0, NULL }
};
@@ -68189,145 +72074,258 @@ dissect_rrc_T_r9_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_72_sequence[] = {
+static const per_sequence_t RadioBearerSetup_r10_IEs_sequence[] = {
+ { &hf_rrc_integrityProtectionModeInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntegrityProtectionModeInfo_r7 },
+ { &hf_rrc_cipheringModeInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CipheringModeInfo_r7 },
+ { &hf_rrc_sr_vcc_Info , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SR_VCC_Info },
+ { &hf_rrc_activationTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ActivationTime },
+ { &hf_rrc_new_U_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_U_RNTI },
+ { &hf_rrc_new_C_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_C_RNTI },
+ { &hf_rrc_new_DSCH_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DSCH_RNTI },
+ { &hf_rrc_new_H_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_H_RNTI },
+ { &hf_rrc_newPrimary_E_RNTI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RNTI },
+ { &hf_rrc_newSecondary_E_RNTI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RNTI },
+ { &hf_rrc_rrc_StateIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_StateIndicator },
+ { &hf_rrc_utran_DRX_CycleLengthCoeff_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UTRAN_DRX_CycleLengthCoefficient_r7 },
+ { &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
+ { &hf_rrc_supportForChangeOfUE_Capability, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BOOLEAN },
+ { &hf_rrc_cn_InformationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_InformationInfo_r6 },
+ { &hf_rrc_srb_InformationSetupList_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SRB_InformationSetupList_r8 },
+ { &hf_rrc_rab_InformationSetupList_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationSetupList_r8 },
+ { &hf_rrc_rab_InformationReconfigList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationReconfigList_r8 },
+ { &hf_rrc_rb_InformationReconfigList_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_InformationReconfigList_r8 },
+ { &hf_rrc_rb_InformationAffectedList_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_InformationAffectedList_r8 },
+ { &hf_rrc_dl_CounterSynchronisationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CounterSynchronisationInfo_r5 },
+ { &hf_rrc_pdcp_ROHC_TargetMode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PDCP_ROHC_TargetMode },
+ { &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo_r4 },
+ { &hf_rrc_ul_deletedTransChInfoList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DeletedTransChInfoList_r6 },
+ { &hf_rrc_ul_AddReconfTransChInfoList_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList_r8 },
+ { &hf_rrc_dl_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonTransChInfo_r4 },
+ { &hf_rrc_dl_DeletedTransChInfoList_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DeletedTransChInfoList_r7 },
+ { &hf_rrc_dl_AddReconfTransChInfoList_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_AddReconfTransChInfoList_r9 },
+ { &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
+ { &hf_rrc_multi_frequencyInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Multi_frequencyInfo_LCR_r7 },
+ { &hf_rrc_dtx_drx_TimingInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DTX_DRX_TimingInfo_r7 },
+ { &hf_rrc_dtx_drx_Info , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DTX_DRX_Info_r7 },
+ { &hf_rrc_hs_scch_LessInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_SCCH_LessInfo_r7 },
+ { &hf_rrc_mimoParameters_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MIMO_Parameters_r9 },
+ { &hf_rrc_maxAllowedUL_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MaxAllowedUL_TX_Power },
+ { &hf_rrc_ul_DPCH_Info_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DPCH_Info_r7 },
+ { &hf_rrc_ul_EDCH_Information_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_EDCH_Information_r9 },
+ { &hf_rrc_ul_SecondaryCellInfoFDD, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_SecondaryCellInfoFDD },
+ { &hf_rrc_ul_MulticarrierEDCHInfo_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_MulticarrierEDCHInfo_TDD128 },
+ { &hf_rrc_dl_HSPDSCH_Information_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_HSPDSCH_Information_r9 },
+ { &hf_rrc_dl_CommonInformation_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonInformation_r10 },
+ { &hf_rrc_dl_InformationPerRL_List_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_InformationPerRL_List_r8 },
+ { &hf_rrc_dl_SecondaryCellInfoFDD_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_SecondaryCellInfoFDD_r10 },
+ { &hf_rrc_additionalDLSecCellInfoListFDD, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_AdditionalDLSecCellInfoListFDD },
+ { &hf_rrc_controlChannelDRXInfo_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ControlChannelDRXInfo_TDD128_r8 },
+ { &hf_rrc_sps_Information_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SPS_Information_TDD128_r8 },
+ { &hf_rrc_mu_MIMO_Info_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MU_MIMO_Info_TDD128 },
+ { &hf_rrc_mbms_PL_ServiceRestrictInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MBMS_PL_ServiceRestrictInfo_r6 },
+ { &hf_rrc_cellDCHMeasOccasionInfo_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellDCHMeasOccasionInfo_TDD128_r9 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_72(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_RadioBearerSetup_r10_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_72, T_criticalExtensions_72_sequence);
+ ett_rrc_RadioBearerSetup_r10_IEs, RadioBearerSetup_r10_IEs_sequence);
return offset;
}
-static const value_string rrc_T_criticalExtensions_71_vals[] = {
+static const per_sequence_t T_nonCriticalExtensions_104_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_104(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_104, T_nonCriticalExtensions_104_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_r10_08_sequence[] = {
+ { &hf_rrc_radioBearerSetup_r10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerSetup_r10_IEs },
+ { &hf_rrc_radioBearerSetup_r10_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
+ { &hf_rrc_nonCriticalExtensions_104, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_104 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_r10_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_r10_08, T_r10_08_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_criticalExtensions_81_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_81(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_81, T_criticalExtensions_81_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_criticalExtensions_80_vals[] = {
+ { 0, "r10" },
+ { 1, "criticalExtensions" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_criticalExtensions_80_choice[] = {
+ { 0, &hf_rrc_r10_08 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r10_08 },
+ { 1, &hf_rrc_criticalExtensions_81, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_81 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_80(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_80, T_criticalExtensions_80_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_criticalExtensions_79_vals[] = {
{ 0, "r9" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_71_choice[] = {
+static const per_choice_t T_criticalExtensions_79_choice[] = {
{ 0, &hf_rrc_r9_08 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r9_08 },
- { 1, &hf_rrc_criticalExtensions_72, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_72 },
+ { 1, &hf_rrc_criticalExtensions_80, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_80 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_71(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_79(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_71, T_criticalExtensions_71_choice,
+ ett_rrc_T_criticalExtensions_79, T_criticalExtensions_79_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_70_vals[] = {
+static const value_string rrc_T_criticalExtensions_78_vals[] = {
{ 0, "r8" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_70_choice[] = {
+static const per_choice_t T_criticalExtensions_78_choice[] = {
{ 0, &hf_rrc_r8_09 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r8_09 },
- { 1, &hf_rrc_criticalExtensions_71, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_71 },
+ { 1, &hf_rrc_criticalExtensions_79, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_79 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_70(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_78(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_70, T_criticalExtensions_70_choice,
+ ett_rrc_T_criticalExtensions_78, T_criticalExtensions_78_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_69_vals[] = {
+static const value_string rrc_T_criticalExtensions_77_vals[] = {
{ 0, "r7" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_69_choice[] = {
+static const per_choice_t T_criticalExtensions_77_choice[] = {
{ 0, &hf_rrc_r7_08 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r7_08 },
- { 1, &hf_rrc_criticalExtensions_70, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_70 },
+ { 1, &hf_rrc_criticalExtensions_78, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_78 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_69(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_77(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_69, T_criticalExtensions_69_choice,
+ ett_rrc_T_criticalExtensions_77, T_criticalExtensions_77_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_68_vals[] = {
+static const value_string rrc_T_criticalExtensions_76_vals[] = {
{ 0, "r6" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_68_choice[] = {
+static const per_choice_t T_criticalExtensions_76_choice[] = {
{ 0, &hf_rrc_r6_09 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r6_09 },
- { 1, &hf_rrc_criticalExtensions_69, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_69 },
+ { 1, &hf_rrc_criticalExtensions_77, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_77 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_68(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_76(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_68, T_criticalExtensions_68_choice,
+ ett_rrc_T_criticalExtensions_76, T_criticalExtensions_76_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_67_vals[] = {
+static const value_string rrc_T_criticalExtensions_75_vals[] = {
{ 0, "r5" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_67_choice[] = {
+static const per_choice_t T_criticalExtensions_75_choice[] = {
{ 0, &hf_rrc_r5_07 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r5_07 },
- { 1, &hf_rrc_criticalExtensions_68, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_68 },
+ { 1, &hf_rrc_criticalExtensions_76, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_76 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_67(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_75(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_67, T_criticalExtensions_67_choice,
+ ett_rrc_T_criticalExtensions_75, T_criticalExtensions_75_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_66_vals[] = {
+static const value_string rrc_T_criticalExtensions_74_vals[] = {
{ 0, "r4" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_66_choice[] = {
+static const per_choice_t T_criticalExtensions_74_choice[] = {
{ 0, &hf_rrc_r4_08 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r4_08 },
- { 1, &hf_rrc_criticalExtensions_67, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_67 },
+ { 1, &hf_rrc_criticalExtensions_75, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_75 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_66(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_74(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_66, T_criticalExtensions_66_choice,
+ ett_rrc_T_criticalExtensions_74, T_criticalExtensions_74_choice,
NULL);
return offset;
@@ -68336,7 +72334,7 @@ dissect_rrc_T_criticalExtensions_66(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_later_than_r3_14_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_66, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_66 },
+ { &hf_rrc_criticalExtensions_74, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_74 },
{ NULL, 0, 0, NULL }
};
@@ -68363,7 +72361,7 @@ static const per_choice_t RadioBearerSetup_choice[] = {
static int
dissect_rrc_RadioBearerSetup(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 301 "../../asn1/rrc/rrc.cnf"
+#line 346 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerSetup");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_RadioBearerSetup, RadioBearerSetup_choice,
@@ -68739,14 +72737,53 @@ dissect_rrc_RRCConnectionRelease_v860ext_IEs(tvbuff_t *tvb _U_, int offset _U_,
}
-static const per_sequence_t T_nonCriticalExtensions_100_sequence[] = {
+
+static int
+dissect_rrc_ExtendedWaitTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 1800U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t RRCConnectionRelease_va40ext_IEs_sequence[] = {
+ { &hf_rrc_extendedWaitTime, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ExtendedWaitTime },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_100(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_RRCConnectionRelease_va40ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_100, T_nonCriticalExtensions_100_sequence);
+ ett_rrc_RRCConnectionRelease_va40ext_IEs, RRCConnectionRelease_va40ext_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_109_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_109(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_109, T_nonCriticalExtensions_109_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtensions_06_sequence[] = {
+ { &hf_rrc_rrcConnectionRelease_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionRelease_va40ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_109, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_109 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtensions_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtensions_06, T_va40NonCriticalExtensions_06_sequence);
return offset;
}
@@ -68754,7 +72791,7 @@ dissect_rrc_T_nonCriticalExtensions_100(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860NonCriticalExtensions_11_sequence[] = {
{ &hf_rrc_rrcConnectionRelease_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionRelease_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_100, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_100 },
+ { &hf_rrc_va40NonCriticalExtensions_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtensions_06 },
{ NULL, 0, 0, NULL }
};
@@ -68861,14 +72898,29 @@ dissect_rrc_RRCConnectionRelease_r4_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_
}
-static const per_sequence_t T_nonCriticalExtensions_101_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_110_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_101(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_110(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_101, T_nonCriticalExtensions_101_sequence);
+ ett_rrc_T_nonCriticalExtensions_110, T_nonCriticalExtensions_110_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtensions_07_sequence[] = {
+ { &hf_rrc_rrcConnectionRelease_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionRelease_va40ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_110, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_110 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtensions_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtensions_07, T_va40NonCriticalExtensions_07_sequence);
return offset;
}
@@ -68876,7 +72928,7 @@ dissect_rrc_T_nonCriticalExtensions_101(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860NonCriticalExtensions_12_sequence[] = {
{ &hf_rrc_rrcConnectionRelease_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionRelease_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_101, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_101 },
+ { &hf_rrc_va40NonCriticalExtensions_07, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtensions_07 },
{ NULL, 0, 0, NULL }
};
@@ -68949,35 +73001,35 @@ dissect_rrc_T_r4_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_75_sequence[] = {
+static const per_sequence_t T_criticalExtensions_84_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_75(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_84(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_75, T_criticalExtensions_75_sequence);
+ ett_rrc_T_criticalExtensions_84, T_criticalExtensions_84_sequence);
return offset;
}
-static const value_string rrc_T_criticalExtensions_74_vals[] = {
+static const value_string rrc_T_criticalExtensions_83_vals[] = {
{ 0, "r4" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_74_choice[] = {
+static const per_choice_t T_criticalExtensions_83_choice[] = {
{ 0, &hf_rrc_r4_09 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r4_09 },
- { 1, &hf_rrc_criticalExtensions_75, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_75 },
+ { 1, &hf_rrc_criticalExtensions_84, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_84 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_74(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_83(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_74, T_criticalExtensions_74_choice,
+ ett_rrc_T_criticalExtensions_83, T_criticalExtensions_83_choice,
NULL);
return offset;
@@ -68986,7 +73038,7 @@ dissect_rrc_T_criticalExtensions_74(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_later_than_r3_16_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_74, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_74 },
+ { &hf_rrc_criticalExtensions_83, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_83 },
{ NULL, 0, 0, NULL }
};
@@ -69013,7 +73065,7 @@ static const per_choice_t RRCConnectionRelease_choice[] = {
static int
dissect_rrc_RRCConnectionRelease(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 317 "../../asn1/rrc/rrc.cnf"
+#line 362 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionRelease");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_RRCConnectionRelease, RRCConnectionRelease_choice,
@@ -69138,14 +73190,14 @@ dissect_rrc_SecurityModeCommand_r3_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_c
}
-static const per_sequence_t T_nonCriticalExtensions_118_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_128_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_118(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_118, T_nonCriticalExtensions_118_sequence);
+ ett_rrc_T_nonCriticalExtensions_128, T_nonCriticalExtensions_128_sequence);
return offset;
}
@@ -69153,7 +73205,7 @@ dissect_rrc_T_nonCriticalExtensions_118(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_laterNonCriticalExtensions_45_sequence[] = {
{ &hf_rrc_securityModeCommand_r3_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_118, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_118 },
+ { &hf_rrc_nonCriticalExtensions_128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_128 },
{ NULL, 0, 0, NULL }
};
@@ -69199,14 +73251,14 @@ dissect_rrc_SecurityModeCommand_r7_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_c
}
-static const per_sequence_t T_nonCriticalExtensions_119_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_129_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_119(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_129(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_119, T_nonCriticalExtensions_119_sequence);
+ ett_rrc_T_nonCriticalExtensions_129, T_nonCriticalExtensions_129_sequence);
return offset;
}
@@ -69215,7 +73267,7 @@ dissect_rrc_T_nonCriticalExtensions_119(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_r7_10_sequence[] = {
{ &hf_rrc_securityModeCommand_r7, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SecurityModeCommand_r7_IEs },
{ &hf_rrc_securityModeCommand_r7_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_119, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_119 },
+ { &hf_rrc_nonCriticalExtensions_129, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_129 },
{ NULL, 0, 0, NULL }
};
@@ -69228,35 +73280,35 @@ dissect_rrc_T_r7_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_89_sequence[] = {
+static const per_sequence_t T_criticalExtensions_99_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_89(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_99(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_89, T_criticalExtensions_89_sequence);
+ ett_rrc_T_criticalExtensions_99, T_criticalExtensions_99_sequence);
return offset;
}
-static const value_string rrc_T_criticalExtensions_88_vals[] = {
+static const value_string rrc_T_criticalExtensions_98_vals[] = {
{ 0, "r7" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_88_choice[] = {
+static const per_choice_t T_criticalExtensions_98_choice[] = {
{ 0, &hf_rrc_r7_10 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r7_10 },
- { 1, &hf_rrc_criticalExtensions_89, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_89 },
+ { 1, &hf_rrc_criticalExtensions_99, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_99 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_88(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_98(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_88, T_criticalExtensions_88_choice,
+ ett_rrc_T_criticalExtensions_98, T_criticalExtensions_98_choice,
NULL);
return offset;
@@ -69265,7 +73317,7 @@ dissect_rrc_T_criticalExtensions_88(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_later_than_r3_19_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_88, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_88 },
+ { &hf_rrc_criticalExtensions_98, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_98 },
{ NULL, 0, 0, NULL }
};
@@ -69292,7 +73344,7 @@ static const per_choice_t SecurityModeCommand_choice[] = {
static int
dissect_rrc_SecurityModeCommand(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 345 "../../asn1/rrc/rrc.cnf"
+#line 390 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeCommand");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_SecurityModeCommand, SecurityModeCommand_choice,
@@ -69320,14 +73372,43 @@ dissect_rrc_SignallingConnectionRelease_r3_IEs(tvbuff_t *tvb _U_, int offset _U_
}
-static const per_sequence_t T_nonCriticalExtensions_122_sequence[] = {
+static const per_sequence_t SignallingConnectionRelease_va40ext_IEs_sequence[] = {
+ { &hf_rrc_extendedWaitTime, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ExtendedWaitTime },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_122(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_SignallingConnectionRelease_va40ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_122, T_nonCriticalExtensions_122_sequence);
+ ett_rrc_SignallingConnectionRelease_va40ext_IEs, SignallingConnectionRelease_va40ext_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_132_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_132(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_132, T_nonCriticalExtensions_132_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtensions_13_sequence[] = {
+ { &hf_rrc_signallingConnectionRelease_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SignallingConnectionRelease_va40ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_132, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_132 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtensions_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtensions_13, T_va40NonCriticalExtensions_13_sequence);
return offset;
}
@@ -69335,7 +73416,7 @@ dissect_rrc_T_nonCriticalExtensions_122(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_laterNonCriticalExtensions_48_sequence[] = {
{ &hf_rrc_signallingConnectionRelease_r3_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_122, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_122 },
+ { &hf_rrc_va40NonCriticalExtensions_14, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtensions_13 },
{ NULL, 0, 0, NULL }
};
@@ -69363,14 +73444,14 @@ dissect_rrc_T_r3_23(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_90_sequence[] = {
+static const per_sequence_t T_criticalExtensions_100_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_90(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_100(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_90, T_criticalExtensions_90_sequence);
+ ett_rrc_T_criticalExtensions_100, T_criticalExtensions_100_sequence);
return offset;
}
@@ -69378,7 +73459,7 @@ dissect_rrc_T_criticalExtensions_90(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_later_than_r3_20_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_90, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_90 },
+ { &hf_rrc_criticalExtensions_100, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_100 },
{ NULL, 0, 0, NULL }
};
@@ -69405,7 +73486,7 @@ static const per_choice_t SignallingConnectionRelease_choice[] = {
static int
dissect_rrc_SignallingConnectionRelease(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 357 "../../asn1/rrc/rrc.cnf"
+#line 402 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "SignallingConnectionRelease");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_SignallingConnectionRelease, SignallingConnectionRelease_choice,
@@ -69418,16 +73499,16 @@ dissect_rrc_SignallingConnectionRelease(tvbuff_t *tvb _U_, int offset _U_, asn1_
}
-static const per_sequence_t T_fdd_37_sequence[] = {
+static const per_sequence_t T_fdd_38_sequence[] = {
{ &hf_rrc_dummy1 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CPCH_SetID },
{ &hf_rrc_dummy2_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DRAC_StaticInformationList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_37(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_38(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_37, T_fdd_37_sequence);
+ ett_rrc_T_fdd_38, T_fdd_38_sequence);
return offset;
}
@@ -69440,7 +73521,7 @@ static const value_string rrc_T_dummy_11_vals[] = {
};
static const per_choice_t T_dummy_11_choice[] = {
- { 0, &hf_rrc_fdd_37 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_37 },
+ { 0, &hf_rrc_fdd_38 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_38 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -69455,15 +73536,15 @@ dissect_rrc_T_dummy_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
}
-static const per_sequence_t T_fdd_38_sequence[] = {
+static const per_sequence_t T_fdd_39_sequence[] = {
{ &hf_rrc_dummy_05 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_PDSCH_Information },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_38(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_39(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_38, T_fdd_38_sequence);
+ ett_rrc_T_fdd_39, T_fdd_39_sequence);
return offset;
}
@@ -69476,7 +73557,7 @@ static const value_string rrc_T_modeSpecificPhysChInfo_12_vals[] = {
};
static const per_choice_t T_modeSpecificPhysChInfo_12_choice[] = {
- { 0, &hf_rrc_fdd_38 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_38 },
+ { 0, &hf_rrc_fdd_39 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_39 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -69505,7 +73586,7 @@ static const per_sequence_t TransportChannelReconfiguration_r3_IEs_sequence[] =
{ &hf_rrc_dl_CounterSynchronisationInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CounterSynchronisationInfo },
{ &hf_rrc_ul_CommonTransChInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo },
{ &hf_rrc_ul_AddReconfTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList },
- { &hf_rrc_dummy_20 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_11 },
+ { &hf_rrc_dummy_24 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_11 },
{ &hf_rrc_dl_CommonTransChInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonTransChInfo },
{ &hf_rrc_dl_AddReconfTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_AddReconfTransChInfoList },
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
@@ -69619,14 +73700,14 @@ dissect_rrc_TransportChannelReconfiguration_v770ext_IEs(tvbuff_t *tvb _U_, int o
}
-static const per_sequence_t T_nonCriticalExtensions_125_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_135_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_125(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_135(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_125, T_nonCriticalExtensions_125_sequence);
+ ett_rrc_T_nonCriticalExtensions_135, T_nonCriticalExtensions_135_sequence);
return offset;
}
@@ -69634,7 +73715,7 @@ dissect_rrc_T_nonCriticalExtensions_125(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v770NonCriticalExtensions_25_sequence[] = {
{ &hf_rrc_transportChannelReconfiguration_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TransportChannelReconfiguration_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_125, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_125 },
+ { &hf_rrc_nonCriticalExtensions_135, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_135 },
{ NULL, 0, 0, NULL }
};
@@ -69737,16 +73818,16 @@ dissect_rrc_T_r3_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_fdd_39_sequence[] = {
+static const per_sequence_t T_fdd_40_sequence[] = {
{ &hf_rrc_dummy1 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CPCH_SetID },
{ &hf_rrc_dummy2_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DRAC_StaticInformationList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_39(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_40(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_39, T_fdd_39_sequence);
+ ett_rrc_T_fdd_40, T_fdd_40_sequence);
return offset;
}
@@ -69759,7 +73840,7 @@ static const value_string rrc_T_dummy_12_vals[] = {
};
static const per_choice_t T_dummy_12_choice[] = {
- { 0, &hf_rrc_fdd_39 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_39 },
+ { 0, &hf_rrc_fdd_40 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_40 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -69774,15 +73855,15 @@ dissect_rrc_T_dummy_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
}
-static const per_sequence_t T_fdd_40_sequence[] = {
+static const per_sequence_t T_fdd_41_sequence[] = {
{ &hf_rrc_dummy_05 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_PDSCH_Information },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_40(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_41(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_40, T_fdd_40_sequence);
+ ett_rrc_T_fdd_41, T_fdd_41_sequence);
return offset;
}
@@ -69795,7 +73876,7 @@ static const value_string rrc_T_modeSpecificPhysChInfo_13_vals[] = {
};
static const per_choice_t T_modeSpecificPhysChInfo_13_choice[] = {
- { 0, &hf_rrc_fdd_40 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_40 },
+ { 0, &hf_rrc_fdd_41 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_41 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -69824,7 +73905,7 @@ static const per_sequence_t TransportChannelReconfiguration_r4_IEs_sequence[] =
{ &hf_rrc_dl_CounterSynchronisationInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CounterSynchronisationInfo },
{ &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo_r4 },
{ &hf_rrc_ul_AddReconfTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList },
- { &hf_rrc_dummy_21 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_12 },
+ { &hf_rrc_dummy_25 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_12 },
{ &hf_rrc_dl_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonTransChInfo_r4 },
{ &hf_rrc_dl_AddReconfTransChInfoList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_AddReconfTransChInfoList_r4 },
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
@@ -69845,14 +73926,14 @@ dissect_rrc_TransportChannelReconfiguration_r4_IEs(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_nonCriticalExtensions_126_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_136_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_126(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_136(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_126, T_nonCriticalExtensions_126_sequence);
+ ett_rrc_T_nonCriticalExtensions_136, T_nonCriticalExtensions_136_sequence);
return offset;
}
@@ -69860,7 +73941,7 @@ dissect_rrc_T_nonCriticalExtensions_126(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v770NonCriticalExtensions_26_sequence[] = {
{ &hf_rrc_transportChannelReconfiguration_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TransportChannelReconfiguration_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_126, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_126 },
+ { &hf_rrc_nonCriticalExtensions_136, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_136 },
{ NULL, 0, 0, NULL }
};
@@ -69933,16 +74014,16 @@ dissect_rrc_T_r4_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_fdd_41_sequence[] = {
+static const per_sequence_t T_fdd_42_sequence[] = {
{ &hf_rrc_dummy1 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CPCH_SetID },
{ &hf_rrc_dummy2_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DRAC_StaticInformationList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_41(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_42(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_41, T_fdd_41_sequence);
+ ett_rrc_T_fdd_42, T_fdd_42_sequence);
return offset;
}
@@ -69955,7 +74036,7 @@ static const value_string rrc_T_dummy_13_vals[] = {
};
static const per_choice_t T_dummy_13_choice[] = {
- { 0, &hf_rrc_fdd_41 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_41 },
+ { 0, &hf_rrc_fdd_42 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_42 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -69970,15 +74051,15 @@ dissect_rrc_T_dummy_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
}
-static const per_sequence_t T_fdd_42_sequence[] = {
+static const per_sequence_t T_fdd_43_sequence[] = {
{ &hf_rrc_dummy_05 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_PDSCH_Information },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_42(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_43(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_42, T_fdd_42_sequence);
+ ett_rrc_T_fdd_43, T_fdd_43_sequence);
return offset;
}
@@ -69991,7 +74072,7 @@ static const value_string rrc_T_modeSpecificPhysChInfo_14_vals[] = {
};
static const per_choice_t T_modeSpecificPhysChInfo_14_choice[] = {
- { 0, &hf_rrc_fdd_42 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_42 },
+ { 0, &hf_rrc_fdd_43 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_43 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -70021,7 +74102,7 @@ static const per_sequence_t TransportChannelReconfiguration_r5_IEs_sequence[] =
{ &hf_rrc_dl_CounterSynchronisationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CounterSynchronisationInfo_r5 },
{ &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo_r4 },
{ &hf_rrc_ul_AddReconfTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList },
- { &hf_rrc_dummy_22 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_13 },
+ { &hf_rrc_dummy_26 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_13 },
{ &hf_rrc_dl_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonTransChInfo_r4 },
{ &hf_rrc_dl_AddReconfTransChInfoList_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_AddReconfTransChInfoList_r5 },
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
@@ -70043,14 +74124,14 @@ dissect_rrc_TransportChannelReconfiguration_r5_IEs(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_nonCriticalExtensions_127_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_137_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_137(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_127, T_nonCriticalExtensions_127_sequence);
+ ett_rrc_T_nonCriticalExtensions_137, T_nonCriticalExtensions_137_sequence);
return offset;
}
@@ -70058,7 +74139,7 @@ dissect_rrc_T_nonCriticalExtensions_127(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v770NonCriticalExtensions_27_sequence[] = {
{ &hf_rrc_transportChannelReconfiguration_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TransportChannelReconfiguration_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_127, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_127 },
+ { &hf_rrc_nonCriticalExtensions_137, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_137 },
{ NULL, 0, 0, NULL }
};
@@ -70156,14 +74237,14 @@ dissect_rrc_TransportChannelReconfiguration_v6b0ext_IEs(tvbuff_t *tvb _U_, int o
}
-static const per_sequence_t T_nonCriticalExtensions_128_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_138_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_138(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_128, T_nonCriticalExtensions_128_sequence);
+ ett_rrc_T_nonCriticalExtensions_138, T_nonCriticalExtensions_138_sequence);
return offset;
}
@@ -70171,7 +74252,7 @@ dissect_rrc_T_nonCriticalExtensions_128(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v770NonCriticalExtensions_28_sequence[] = {
{ &hf_rrc_transportChannelReconfiguration_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TransportChannelReconfiguration_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_128 },
+ { &hf_rrc_nonCriticalExtensions_138, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_138 },
{ NULL, 0, 0, NULL }
};
@@ -70215,14 +74296,14 @@ dissect_rrc_T_r6_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const value_string rrc_T_responseToChangeOfUE_Capability_06_vals[] = {
+static const value_string rrc_T_responseToChangeOfUE_Capability_08_vals[] = {
{ 0, "true" },
{ 0, NULL }
};
static int
-dissect_rrc_T_responseToChangeOfUE_Capability_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_responseToChangeOfUE_Capability_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1, NULL, FALSE, 0, NULL);
@@ -70247,7 +74328,7 @@ static const per_sequence_t TransportChannelReconfiguration_r7_IEs_sequence[] =
{ &hf_rrc_cn_InformationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_InformationInfo_r6 },
{ &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
{ &hf_rrc_supportForChangeOfUE_Capability, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BOOLEAN },
- { &hf_rrc_responseToChangeOfUE_Capability_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_responseToChangeOfUE_Capability_06 },
+ { &hf_rrc_responseToChangeOfUE_Capability_08, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_responseToChangeOfUE_Capability_08 },
{ &hf_rrc_dl_CounterSynchronisationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CounterSynchronisationInfo_r5 },
{ &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo_r4 },
{ &hf_rrc_ul_AddReconfTransChInfoList_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList_r7 },
@@ -70334,14 +74415,14 @@ dissect_rrc_TransportChannelReconfiguration_v7g0ext_IEs(tvbuff_t *tvb _U_, int o
}
-static const per_sequence_t T_nonCriticalExtensions_129_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_139_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_129(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_139(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_129, T_nonCriticalExtensions_129_sequence);
+ ett_rrc_T_nonCriticalExtensions_139, T_nonCriticalExtensions_139_sequence);
return offset;
}
@@ -70349,7 +74430,7 @@ dissect_rrc_T_nonCriticalExtensions_129(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v7g0NonCriticalExtensions_15_sequence[] = {
{ &hf_rrc_transportChannelReconfiguration_v7g0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TransportChannelReconfiguration_v7g0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_129, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_129 },
+ { &hf_rrc_nonCriticalExtensions_139, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_139 },
{ NULL, 0, 0, NULL }
};
@@ -70423,14 +74504,14 @@ dissect_rrc_T_r7_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const value_string rrc_T_responseToChangeOfUE_Capability_07_vals[] = {
+static const value_string rrc_T_responseToChangeOfUE_Capability_09_vals[] = {
{ 0, "true" },
{ 0, NULL }
};
static int
-dissect_rrc_T_responseToChangeOfUE_Capability_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_responseToChangeOfUE_Capability_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1, NULL, FALSE, 0, NULL);
@@ -70455,7 +74536,7 @@ static const per_sequence_t TransportChannelReconfiguration_r8_IEs_sequence[] =
{ &hf_rrc_cn_InformationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_InformationInfo_r6 },
{ &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
{ &hf_rrc_supportForChangeOfUE_Capability, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BOOLEAN },
- { &hf_rrc_responseToChangeOfUE_Capability_07, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_responseToChangeOfUE_Capability_07 },
+ { &hf_rrc_responseToChangeOfUE_Capability_09, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_responseToChangeOfUE_Capability_09 },
{ &hf_rrc_dl_CounterSynchronisationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CounterSynchronisationInfo_r5 },
{ &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo_r4 },
{ &hf_rrc_ul_AddReconfTransChInfoList_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList_r8 },
@@ -70518,14 +74599,14 @@ dissect_rrc_TransportChannelReconfiguration_v8a0ext_IEs(tvbuff_t *tvb _U_, int o
}
-static const per_sequence_t T_nonCriticalExtensions_130_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_140_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_130(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_140(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_130, T_nonCriticalExtensions_130_sequence);
+ ett_rrc_T_nonCriticalExtensions_140, T_nonCriticalExtensions_140_sequence);
return offset;
}
@@ -70533,7 +74614,7 @@ dissect_rrc_T_nonCriticalExtensions_130(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v8a0NonCriticalExtensions_09_sequence[] = {
{ &hf_rrc_transportChannelReconfiguration_v8a0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TransportChannelReconfiguration_v8a0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_130, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_130 },
+ { &hf_rrc_nonCriticalExtensions_140, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_140 },
{ NULL, 0, 0, NULL }
};
@@ -70622,14 +74703,14 @@ dissect_rrc_T_r8_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const value_string rrc_T_responseToChangeOfUE_Capability_08_vals[] = {
+static const value_string rrc_T_responseToChangeOfUE_Capability_10_vals[] = {
{ 0, "true" },
{ 0, NULL }
};
static int
-dissect_rrc_T_responseToChangeOfUE_Capability_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_responseToChangeOfUE_Capability_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1, NULL, FALSE, 0, NULL);
@@ -70654,7 +74735,7 @@ static const per_sequence_t TransportChannelReconfiguration_r9_IEs_sequence[] =
{ &hf_rrc_cn_InformationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_InformationInfo_r6 },
{ &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
{ &hf_rrc_supportForChangeOfUE_Capability, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BOOLEAN },
- { &hf_rrc_responseToChangeOfUE_Capability_08, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_responseToChangeOfUE_Capability_08 },
+ { &hf_rrc_responseToChangeOfUE_Capability_10, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_responseToChangeOfUE_Capability_10 },
{ &hf_rrc_dl_CounterSynchronisationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CounterSynchronisationInfo_r5 },
{ &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo_r4 },
{ &hf_rrc_ul_AddReconfTransChInfoList_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList_r8 },
@@ -70704,14 +74785,14 @@ dissect_rrc_TransportChannelReconfiguration_v950ext_IEs(tvbuff_t *tvb _U_, int o
}
-static const per_sequence_t T_nonCriticalExtensions_131_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_141_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_131(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_141(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_131, T_nonCriticalExtensions_131_sequence);
+ ett_rrc_T_nonCriticalExtensions_141, T_nonCriticalExtensions_141_sequence);
return offset;
}
@@ -70719,7 +74800,7 @@ dissect_rrc_T_nonCriticalExtensions_131(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v950NonCriticalExtensions_08_sequence[] = {
{ &hf_rrc_transportChannelReconfiguration_v950ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TransportChannelReconfiguration_v950ext_IEs },
- { &hf_rrc_nonCriticalExtensions_131, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_131 },
+ { &hf_rrc_nonCriticalExtensions_141, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_141 },
{ NULL, 0, 0, NULL }
};
@@ -70748,145 +74829,267 @@ dissect_rrc_T_r9_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_97_sequence[] = {
+static const value_string rrc_T_responseToChangeOfUE_Capability_11_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_responseToChangeOfUE_Capability_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t TransportChannelReconfiguration_r10_IEs_sequence[] = {
+ { &hf_rrc_integrityProtectionModeInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntegrityProtectionModeInfo_r7 },
+ { &hf_rrc_cipheringModeInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CipheringModeInfo_r7 },
+ { &hf_rrc_activationTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ActivationTime },
+ { &hf_rrc_delayRestrictionFlag, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DelayRestrictionFlag },
+ { &hf_rrc_new_U_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_U_RNTI },
+ { &hf_rrc_new_C_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_C_RNTI },
+ { &hf_rrc_new_DSCH_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DSCH_RNTI },
+ { &hf_rrc_new_H_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_H_RNTI },
+ { &hf_rrc_newPrimary_E_RNTI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RNTI },
+ { &hf_rrc_newSecondary_E_RNTI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RNTI },
+ { &hf_rrc_rrc_StateIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_StateIndicator },
+ { &hf_rrc_ueMobilityStateIndicator, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_High_MobilityDetected },
+ { &hf_rrc_utran_DRX_CycleLengthCoeff_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UTRAN_DRX_CycleLengthCoefficient_r7 },
+ { &hf_rrc_cn_InformationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_InformationInfo_r6 },
+ { &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
+ { &hf_rrc_supportForChangeOfUE_Capability, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BOOLEAN },
+ { &hf_rrc_responseToChangeOfUE_Capability_11, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_responseToChangeOfUE_Capability_11 },
+ { &hf_rrc_dl_CounterSynchronisationInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CounterSynchronisationInfo_r5 },
+ { &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo_r4 },
+ { &hf_rrc_ul_AddReconfTransChInfoList_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList_r8 },
+ { &hf_rrc_dl_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonTransChInfo_r4 },
+ { &hf_rrc_dl_AddReconfTransChInfoList_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_AddReconfTransChInfoList_r9 },
+ { &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
+ { &hf_rrc_multi_frequencyInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Multi_frequencyInfo_LCR_r7 },
+ { &hf_rrc_dtx_drx_TimingInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DTX_DRX_TimingInfo_r7 },
+ { &hf_rrc_dtx_drx_Info , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DTX_DRX_Info_r7 },
+ { &hf_rrc_hs_scch_LessInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_SCCH_LessInfo_r7 },
+ { &hf_rrc_mimoParameters_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MIMO_Parameters_r9 },
+ { &hf_rrc_maxAllowedUL_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MaxAllowedUL_TX_Power },
+ { &hf_rrc_ul_DPCH_Info_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DPCH_Info_r7 },
+ { &hf_rrc_ul_EDCH_Information_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_EDCH_Information_r9 },
+ { &hf_rrc_ul_SecondaryCellInfoFDD, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_SecondaryCellInfoFDD },
+ { &hf_rrc_ul_MulticarrierEDCHInfo_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_MulticarrierEDCHInfo_TDD128 },
+ { &hf_rrc_dl_HSPDSCH_Information_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_HSPDSCH_Information_r9 },
+ { &hf_rrc_dl_CommonInformation_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonInformation_r10 },
+ { &hf_rrc_dl_InformationPerRL_List_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_InformationPerRL_List_r8 },
+ { &hf_rrc_dl_SecondaryCellInfoFDD_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_SecondaryCellInfoFDD_r10 },
+ { &hf_rrc_additionalDLSecCellInfoListFDD, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_AdditionalDLSecCellInfoListFDD },
+ { &hf_rrc_controlChannelDRXInfo_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ControlChannelDRXInfo_TDD128_r8 },
+ { &hf_rrc_sps_Information_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SPS_Information_TDD128_r8 },
+ { &hf_rrc_mu_MIMO_Info_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MU_MIMO_Info_TDD128 },
+ { &hf_rrc_mbms_PL_ServiceRestrictInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MBMS_PL_ServiceRestrictInfo_r6 },
+ { &hf_rrc_cellDCHMeasOccasionInfo_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellDCHMeasOccasionInfo_TDD128_r9 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_97(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_TransportChannelReconfiguration_r10_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_97, T_criticalExtensions_97_sequence);
+ ett_rrc_TransportChannelReconfiguration_r10_IEs, TransportChannelReconfiguration_r10_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_142_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_142(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_142, T_nonCriticalExtensions_142_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_r10_10_sequence[] = {
+ { &hf_rrc_transportChannelReconfiguration_r10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TransportChannelReconfiguration_r10_IEs },
+ { &hf_rrc_transportChannelReconfiguration_r10_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
+ { &hf_rrc_nonCriticalExtensions_142, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_142 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_r10_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_r10_10, T_r10_10_sequence);
return offset;
}
-static const value_string rrc_T_criticalExtensions_96_vals[] = {
+static const per_sequence_t T_criticalExtensions_108_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_108(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_108, T_criticalExtensions_108_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_criticalExtensions_107_vals[] = {
+ { 0, "r10" },
+ { 1, "criticalExtensions" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_criticalExtensions_107_choice[] = {
+ { 0, &hf_rrc_r10_10 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r10_10 },
+ { 1, &hf_rrc_criticalExtensions_108, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_108 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_107(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_107, T_criticalExtensions_107_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_criticalExtensions_106_vals[] = {
{ 0, "r9" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_96_choice[] = {
+static const per_choice_t T_criticalExtensions_106_choice[] = {
{ 0, &hf_rrc_r9_10 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r9_10 },
- { 1, &hf_rrc_criticalExtensions_97, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_97 },
+ { 1, &hf_rrc_criticalExtensions_107, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_107 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_96(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_106(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_96, T_criticalExtensions_96_choice,
+ ett_rrc_T_criticalExtensions_106, T_criticalExtensions_106_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_95_vals[] = {
+static const value_string rrc_T_criticalExtensions_105_vals[] = {
{ 0, "r8" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_95_choice[] = {
+static const per_choice_t T_criticalExtensions_105_choice[] = {
{ 0, &hf_rrc_r8_11 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r8_11 },
- { 1, &hf_rrc_criticalExtensions_96, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_96 },
+ { 1, &hf_rrc_criticalExtensions_106, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_106 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_95(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_105(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_95, T_criticalExtensions_95_choice,
+ ett_rrc_T_criticalExtensions_105, T_criticalExtensions_105_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_94_vals[] = {
+static const value_string rrc_T_criticalExtensions_104_vals[] = {
{ 0, "r7" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_94_choice[] = {
+static const per_choice_t T_criticalExtensions_104_choice[] = {
{ 0, &hf_rrc_r7_11 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r7_11 },
- { 1, &hf_rrc_criticalExtensions_95, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_95 },
+ { 1, &hf_rrc_criticalExtensions_105, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_105 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_94(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_104(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_94, T_criticalExtensions_94_choice,
+ ett_rrc_T_criticalExtensions_104, T_criticalExtensions_104_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_93_vals[] = {
+static const value_string rrc_T_criticalExtensions_103_vals[] = {
{ 0, "r6" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_93_choice[] = {
+static const per_choice_t T_criticalExtensions_103_choice[] = {
{ 0, &hf_rrc_r6_11 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r6_11 },
- { 1, &hf_rrc_criticalExtensions_94, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_94 },
+ { 1, &hf_rrc_criticalExtensions_104, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_104 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_93(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_103(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_93, T_criticalExtensions_93_choice,
+ ett_rrc_T_criticalExtensions_103, T_criticalExtensions_103_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_92_vals[] = {
+static const value_string rrc_T_criticalExtensions_102_vals[] = {
{ 0, "r5" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_92_choice[] = {
+static const per_choice_t T_criticalExtensions_102_choice[] = {
{ 0, &hf_rrc_r5_10 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r5_10 },
- { 1, &hf_rrc_criticalExtensions_93, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_93 },
+ { 1, &hf_rrc_criticalExtensions_103, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_103 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_92(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_102(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_92, T_criticalExtensions_92_choice,
+ ett_rrc_T_criticalExtensions_102, T_criticalExtensions_102_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_91_vals[] = {
+static const value_string rrc_T_criticalExtensions_101_vals[] = {
{ 0, "r4" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_91_choice[] = {
+static const per_choice_t T_criticalExtensions_101_choice[] = {
{ 0, &hf_rrc_r4_12 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r4_12 },
- { 1, &hf_rrc_criticalExtensions_92, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_92 },
+ { 1, &hf_rrc_criticalExtensions_102, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_102 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_91(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_101(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_91, T_criticalExtensions_91_choice,
+ ett_rrc_T_criticalExtensions_101, T_criticalExtensions_101_choice,
NULL);
return offset;
@@ -70895,7 +75098,7 @@ dissect_rrc_T_criticalExtensions_91(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_later_than_r3_21_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_91, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_91 },
+ { &hf_rrc_criticalExtensions_101, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_101 },
{ NULL, 0, 0, NULL }
};
@@ -70922,7 +75125,7 @@ static const per_choice_t TransportChannelReconfiguration_choice[] = {
static int
dissect_rrc_TransportChannelReconfiguration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 377 "../../asn1/rrc/rrc.cnf"
+#line 422 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportChannelReconfiguration");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_TransportChannelReconfiguration, TransportChannelReconfiguration_choice,
@@ -70935,36 +75138,36 @@ dissect_rrc_TransportChannelReconfiguration(tvbuff_t *tvb _U_, int offset _U_, a
}
-static const per_sequence_t T_tdd_07_sequence[] = {
+static const per_sequence_t T_tdd_08_sequence[] = {
{ &hf_rrc_tfcs_ID , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TFCS_Identity },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_07, T_tdd_07_sequence);
+ ett_rrc_T_tdd_08, T_tdd_08_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_13_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_14_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_13_choice[] = {
- { 0, &hf_rrc_fdd_43 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 1, &hf_rrc_tdd_08 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_07 },
+static const per_choice_t T_modeSpecificInfo_14_choice[] = {
+ { 0, &hf_rrc_fdd_44 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_tdd_09 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_08 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_13, T_modeSpecificInfo_13_choice,
+ ett_rrc_T_modeSpecificInfo_14, T_modeSpecificInfo_14_choice,
NULL);
return offset;
@@ -71012,14 +75215,14 @@ dissect_rrc_TransportFormatCombinationControl_v820ext_IEs(tvbuff_t *tvb _U_, int
}
-static const per_sequence_t T_nonCriticalExtensions_134_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_145_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_134(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_145(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_134, T_nonCriticalExtensions_134_sequence);
+ ett_rrc_T_nonCriticalExtensions_145, T_nonCriticalExtensions_145_sequence);
return offset;
}
@@ -71027,7 +75230,7 @@ dissect_rrc_T_nonCriticalExtensions_134(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v820NonCriticalExtensions_02_sequence[] = {
{ &hf_rrc_transportformatcombinationcontrol_v820ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TransportFormatCombinationControl_v820ext_IEs },
- { &hf_rrc_nonCriticalExtensions_134, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_134 },
+ { &hf_rrc_nonCriticalExtensions_145, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_145 },
{ NULL, 0, 0, NULL }
};
@@ -71057,7 +75260,7 @@ dissect_rrc_T_laterNonCriticalExtensions_54(tvbuff_t *tvb _U_, int offset _U_, a
static const per_sequence_t TransportFormatCombinationControl_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_modeSpecificInfo_13, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_13 },
+ { &hf_rrc_modeSpecificInfo_14, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_14 },
{ &hf_rrc_dpch_TFCS_InUplink, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TFC_Subset },
{ &hf_rrc_activationTimeForTFCSubset, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ActivationTime },
{ &hf_rrc_tfc_ControlDuration, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TFC_ControlDuration },
@@ -71067,7 +75270,7 @@ static const per_sequence_t TransportFormatCombinationControl_sequence[] = {
static int
dissect_rrc_TransportFormatCombinationControl(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 389 "../../asn1/rrc/rrc.cnf"
+#line 434 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportFormatCombinationControl");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_TransportFormatCombinationControl, TransportFormatCombinationControl_sequence);
@@ -71288,14 +75491,14 @@ dissect_rrc_UECapabilityEnquiry_v860ext_IEs(tvbuff_t *tvb _U_, int offset _U_, a
}
-static const per_sequence_t T_nonCriticalExtensions_136_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_147_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_136(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_147(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_136, T_nonCriticalExtensions_136_sequence);
+ ett_rrc_T_nonCriticalExtensions_147, T_nonCriticalExtensions_147_sequence);
return offset;
}
@@ -71303,7 +75506,7 @@ dissect_rrc_T_nonCriticalExtensions_136(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860NonCriticalExtensions_18_sequence[] = {
{ &hf_rrc_ueCapabilityEnquiry_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UECapabilityEnquiry_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_136, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_136 },
+ { &hf_rrc_nonCriticalExtensions_147, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_147 },
{ NULL, 0, 0, NULL }
};
@@ -71391,14 +75594,14 @@ dissect_rrc_T_r3_25(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_98_sequence[] = {
+static const per_sequence_t T_criticalExtensions_109_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_98(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_109(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_98, T_criticalExtensions_98_sequence);
+ ett_rrc_T_criticalExtensions_109, T_criticalExtensions_109_sequence);
return offset;
}
@@ -71406,7 +75609,7 @@ dissect_rrc_T_criticalExtensions_98(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_later_than_r3_22_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_98, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_98 },
+ { &hf_rrc_criticalExtensions_109, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_109 },
{ NULL, 0, 0, NULL }
};
@@ -71433,7 +75636,7 @@ static const per_choice_t UECapabilityEnquiry_choice[] = {
static int
dissect_rrc_UECapabilityEnquiry(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 397 "../../asn1/rrc/rrc.cnf"
+#line 442 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "UECapabilityEnquiry");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_UECapabilityEnquiry, UECapabilityEnquiry_choice,
@@ -71491,14 +75694,14 @@ dissect_rrc_UECapabilityInformationConfirm_v770ext_IEs(tvbuff_t *tvb _U_, int of
}
-static const per_sequence_t T_nonCriticalExtensions_139_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_150_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_139(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_150(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_139, T_nonCriticalExtensions_139_sequence);
+ ett_rrc_T_nonCriticalExtensions_150, T_nonCriticalExtensions_150_sequence);
return offset;
}
@@ -71506,7 +75709,7 @@ dissect_rrc_T_nonCriticalExtensions_139(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v770NonCriticalExtensions_31_sequence[] = {
{ &hf_rrc_ueCapabilityInformationConfirm_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UECapabilityInformationConfirm_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_139, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_139 },
+ { &hf_rrc_nonCriticalExtensions_150, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_150 },
{ NULL, 0, 0, NULL }
};
@@ -71549,14 +75752,14 @@ dissect_rrc_T_r3_26(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_99_sequence[] = {
+static const per_sequence_t T_criticalExtensions_110_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_99(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_110(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_99, T_criticalExtensions_99_sequence);
+ ett_rrc_T_criticalExtensions_110, T_criticalExtensions_110_sequence);
return offset;
}
@@ -71564,7 +75767,7 @@ dissect_rrc_T_criticalExtensions_99(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_later_than_r3_23_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_99, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_99 },
+ { &hf_rrc_criticalExtensions_110, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_110 },
{ NULL, 0, 0, NULL }
};
@@ -71591,7 +75794,7 @@ static const per_choice_t UECapabilityInformationConfirm_choice[] = {
static int
dissect_rrc_UECapabilityInformationConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 405 "../../asn1/rrc/rrc.cnf"
+#line 450 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "UECapabilityInformationConfirm");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_UECapabilityInformationConfirm, UECapabilityInformationConfirm_choice,
@@ -71771,7 +75974,7 @@ dissect_rrc_CCTrCH_PowerControlInfo_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_c
}
-static const per_sequence_t T_tdd384_06_sequence[] = {
+static const per_sequence_t T_tdd384_07_sequence[] = {
{ &hf_rrc_timingAdvance_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_TimingAdvanceControl_r4 },
{ &hf_rrc_alpha , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Alpha },
{ &hf_rrc_prach_ConstantValue, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ConstantValueTdd },
@@ -71781,23 +75984,23 @@ static const per_sequence_t T_tdd384_06_sequence[] = {
};
static int
-dissect_rrc_T_tdd384_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_06, T_tdd384_06_sequence);
+ ett_rrc_T_tdd384_07, T_tdd384_07_sequence);
return offset;
}
-static const per_sequence_t T_tdd128_06_sequence[] = {
+static const per_sequence_t T_tdd128_07_sequence[] = {
{ &hf_rrc_ul_SynchronisationParameters, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_SynchronisationParameters_r4 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_06, T_tdd128_06_sequence);
+ ett_rrc_T_tdd128_07, T_tdd128_07_sequence);
return offset;
}
@@ -71810,8 +76013,8 @@ static const value_string rrc_T_tddOption_vals[] = {
};
static const per_choice_t T_tddOption_choice[] = {
- { 0, &hf_rrc_tdd384_06 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_06 },
- { 1, &hf_rrc_tdd128_06 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_06 },
+ { 0, &hf_rrc_tdd384_07 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_07 },
+ { 1, &hf_rrc_tdd128_07 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_07 },
{ 0, NULL, 0, NULL }
};
@@ -71855,14 +76058,14 @@ dissect_rrc_UplinkPhysicalChannelControl_v690ext_IEs(tvbuff_t *tvb _U_, int offs
}
-static const per_sequence_t T_nonCriticalExtensions_141_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_152_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_141(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_152(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_141, T_nonCriticalExtensions_141_sequence);
+ ett_rrc_T_nonCriticalExtensions_152, T_nonCriticalExtensions_152_sequence);
return offset;
}
@@ -71870,7 +76073,7 @@ dissect_rrc_T_nonCriticalExtensions_141(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v690NonCriticalExtensions_41_sequence[] = {
{ &hf_rrc_uplinkPhysicalChannelControl_v690ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UplinkPhysicalChannelControl_v690ext_IEs },
- { &hf_rrc_nonCriticalExtensions_141, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_141 },
+ { &hf_rrc_nonCriticalExtensions_152, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_152 },
{ NULL, 0, 0, NULL }
};
@@ -71928,7 +76131,7 @@ dissect_rrc_CCTrCH_PowerControlInfo_r5(tvbuff_t *tvb _U_, int offset _U_, asn1_c
}
-static const per_sequence_t T_tdd384_07_sequence[] = {
+static const per_sequence_t T_tdd384_08_sequence[] = {
{ &hf_rrc_timingAdvance_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_TimingAdvanceControl_r4 },
{ &hf_rrc_alpha , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Alpha },
{ &hf_rrc_prach_ConstantValue, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ConstantValueTdd },
@@ -71939,23 +76142,23 @@ static const per_sequence_t T_tdd384_07_sequence[] = {
};
static int
-dissect_rrc_T_tdd384_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_07, T_tdd384_07_sequence);
+ ett_rrc_T_tdd384_08, T_tdd384_08_sequence);
return offset;
}
-static const per_sequence_t T_tdd128_07_sequence[] = {
+static const per_sequence_t T_tdd128_08_sequence[] = {
{ &hf_rrc_ul_SynchronisationParameters, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_SynchronisationParameters_r4 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_07, T_tdd128_07_sequence);
+ ett_rrc_T_tdd128_08, T_tdd128_08_sequence);
return offset;
}
@@ -71968,8 +76171,8 @@ static const value_string rrc_T_tddOption_01_vals[] = {
};
static const per_choice_t T_tddOption_01_choice[] = {
- { 0, &hf_rrc_tdd384_07 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_07 },
- { 1, &hf_rrc_tdd128_07 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_07 },
+ { 0, &hf_rrc_tdd384_08 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_08 },
+ { 1, &hf_rrc_tdd128_08 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_08 },
{ 0, NULL, 0, NULL }
};
@@ -72032,14 +76235,14 @@ dissect_rrc_UplinkPhysicalChannelControl_v6a0ext_IEs(tvbuff_t *tvb _U_, int offs
}
-static const per_sequence_t T_nonCriticalExtensions_142_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_153_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_142(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_153(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_142, T_nonCriticalExtensions_142_sequence);
+ ett_rrc_T_nonCriticalExtensions_153, T_nonCriticalExtensions_153_sequence);
return offset;
}
@@ -72047,7 +76250,7 @@ dissect_rrc_T_nonCriticalExtensions_142(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v6a0NonCriticalExtensions_01_sequence[] = {
{ &hf_rrc_uplinkPhysicalChannelControl_v6a0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UplinkPhysicalChannelControl_v6a0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_142, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_142 },
+ { &hf_rrc_nonCriticalExtensions_153, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_153 },
{ NULL, 0, 0, NULL }
};
@@ -72106,7 +76309,7 @@ dissect_rrc_CCTrCH_PowerControlInfo_r7(tvbuff_t *tvb _U_, int offset _U_, asn1_c
}
-static const per_sequence_t T_tdd384_08_sequence[] = {
+static const per_sequence_t T_tdd384_09_sequence[] = {
{ &hf_rrc_timingAdvance_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_TimingAdvanceControl_r4 },
{ &hf_rrc_alpha , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Alpha },
{ &hf_rrc_prach_ConstantValue, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ConstantValueTdd },
@@ -72117,15 +76320,15 @@ static const per_sequence_t T_tdd384_08_sequence[] = {
};
static int
-dissect_rrc_T_tdd384_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_08, T_tdd384_08_sequence);
+ ett_rrc_T_tdd384_09, T_tdd384_09_sequence);
return offset;
}
-static const per_sequence_t T_tdd768_03_sequence[] = {
+static const per_sequence_t T_tdd768_04_sequence[] = {
{ &hf_rrc_timingAdvance_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_TimingAdvanceControl_r7 },
{ &hf_rrc_alpha , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Alpha },
{ &hf_rrc_prach_ConstantValue, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ConstantValueTdd },
@@ -72136,9 +76339,9 @@ static const per_sequence_t T_tdd768_03_sequence[] = {
};
static int
-dissect_rrc_T_tdd768_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd768_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd768_03, T_tdd768_03_sequence);
+ ett_rrc_T_tdd768_04, T_tdd768_04_sequence);
return offset;
}
@@ -72162,7 +76365,7 @@ dissect_rrc_T_tpc_Step_Size_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
}
-static const per_sequence_t T_tdd128_08_sequence[] = {
+static const per_sequence_t T_tdd128_09_sequence[] = {
{ &hf_rrc_ul_SynchronisationParameters, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_SynchronisationParameters_r4 },
{ &hf_rrc_desired_HS_SICH_PowerLevel, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_M120_M58 },
{ &hf_rrc_tpc_Step_Size_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_tpc_Step_Size_01 },
@@ -72170,9 +76373,9 @@ static const per_sequence_t T_tdd128_08_sequence[] = {
};
static int
-dissect_rrc_T_tdd128_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_08, T_tdd128_08_sequence);
+ ett_rrc_T_tdd128_09, T_tdd128_09_sequence);
return offset;
}
@@ -72186,9 +76389,9 @@ static const value_string rrc_T_tddOption_02_vals[] = {
};
static const per_choice_t T_tddOption_02_choice[] = {
- { 0, &hf_rrc_tdd384_08 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_08 },
- { 1, &hf_rrc_tdd768_03 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_03 },
- { 2, &hf_rrc_tdd128_08 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_08 },
+ { 0, &hf_rrc_tdd384_09 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_09 },
+ { 1, &hf_rrc_tdd768_04 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_04 },
+ { 2, &hf_rrc_tdd128_09 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_09 },
{ 0, NULL, 0, NULL }
};
@@ -72218,14 +76421,14 @@ dissect_rrc_UplinkPhysicalChannelControl_r7_IEs(tvbuff_t *tvb _U_, int offset _U
}
-static const per_sequence_t T_nonCriticalExtensions_143_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_154_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_143(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_154(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_143, T_nonCriticalExtensions_143_sequence);
+ ett_rrc_T_nonCriticalExtensions_154, T_nonCriticalExtensions_154_sequence);
return offset;
}
@@ -72234,7 +76437,7 @@ dissect_rrc_T_nonCriticalExtensions_143(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_r7_12_sequence[] = {
{ &hf_rrc_uplinkPhysicalChannelControl_r7, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UplinkPhysicalChannelControl_r7_IEs },
{ &hf_rrc_uplinkPhysicalChannelControl_r7_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_143, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_143 },
+ { &hf_rrc_nonCriticalExtensions_154, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_154 },
{ NULL, 0, 0, NULL }
};
@@ -72247,79 +76450,79 @@ dissect_rrc_T_r7_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_103_sequence[] = {
+static const per_sequence_t T_criticalExtensions_114_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_103(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_114(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_103, T_criticalExtensions_103_sequence);
+ ett_rrc_T_criticalExtensions_114, T_criticalExtensions_114_sequence);
return offset;
}
-static const value_string rrc_T_criticalExtensions_102_vals[] = {
+static const value_string rrc_T_criticalExtensions_113_vals[] = {
{ 0, "r7" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_102_choice[] = {
+static const per_choice_t T_criticalExtensions_113_choice[] = {
{ 0, &hf_rrc_r7_12 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r7_12 },
- { 1, &hf_rrc_criticalExtensions_103, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_103 },
+ { 1, &hf_rrc_criticalExtensions_114, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_114 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_102(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_113(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_102, T_criticalExtensions_102_choice,
+ ett_rrc_T_criticalExtensions_113, T_criticalExtensions_113_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_101_vals[] = {
+static const value_string rrc_T_criticalExtensions_112_vals[] = {
{ 0, "r5" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_101_choice[] = {
+static const per_choice_t T_criticalExtensions_112_choice[] = {
{ 0, &hf_rrc_r5_11 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r5_11 },
- { 1, &hf_rrc_criticalExtensions_102, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_102 },
+ { 1, &hf_rrc_criticalExtensions_113, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_113 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_101(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_112(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_101, T_criticalExtensions_101_choice,
+ ett_rrc_T_criticalExtensions_112, T_criticalExtensions_112_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_100_vals[] = {
+static const value_string rrc_T_criticalExtensions_111_vals[] = {
{ 0, "r4" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_100_choice[] = {
+static const per_choice_t T_criticalExtensions_111_choice[] = {
{ 0, &hf_rrc_r4_13 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r4_13 },
- { 1, &hf_rrc_criticalExtensions_101, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_101 },
+ { 1, &hf_rrc_criticalExtensions_112, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_112 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_100(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_111(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_100, T_criticalExtensions_100_choice,
+ ett_rrc_T_criticalExtensions_111, T_criticalExtensions_111_choice,
NULL);
return offset;
@@ -72328,7 +76531,7 @@ dissect_rrc_T_criticalExtensions_100(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
static const per_sequence_t T_later_than_r3_24_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_100, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_100 },
+ { &hf_rrc_criticalExtensions_111, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_111 },
{ NULL, 0, 0, NULL }
};
@@ -72355,7 +76558,7 @@ static const per_choice_t UplinkPhysicalChannelControl_choice[] = {
static int
dissect_rrc_UplinkPhysicalChannelControl(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 413 "../../asn1/rrc/rrc.cnf"
+#line 466 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "UplinkPhysicalChannelControl");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_UplinkPhysicalChannelControl, UplinkPhysicalChannelControl_choice,
@@ -72405,14 +76608,14 @@ dissect_rrc_URAUpdateConfirm_v690ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_nonCriticalExtensions_146_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_157_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_146(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_157(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_146, T_nonCriticalExtensions_146_sequence);
+ ett_rrc_T_nonCriticalExtensions_157, T_nonCriticalExtensions_157_sequence);
return offset;
}
@@ -72420,7 +76623,7 @@ dissect_rrc_T_nonCriticalExtensions_146(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v690NonCriticalExtensions_43_sequence[] = {
{ &hf_rrc_uraUpdateConfirm_v690ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_URAUpdateConfirm_v690ext_IEs },
- { &hf_rrc_nonCriticalExtensions_146, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_146 },
+ { &hf_rrc_nonCriticalExtensions_157, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_157 },
{ NULL, 0, 0, NULL }
};
@@ -72485,14 +76688,14 @@ dissect_rrc_URAUpdateConfirm_r5_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
-static const per_sequence_t T_nonCriticalExtensions_147_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_158_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_147(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_158(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_147, T_nonCriticalExtensions_147_sequence);
+ ett_rrc_T_nonCriticalExtensions_158, T_nonCriticalExtensions_158_sequence);
return offset;
}
@@ -72500,7 +76703,7 @@ dissect_rrc_T_nonCriticalExtensions_147(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v690NonCriticalExtensions_44_sequence[] = {
{ &hf_rrc_uraUpdateConfirm_v690ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_URAUpdateConfirm_v690ext_IEs },
- { &hf_rrc_nonCriticalExtensions_147, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_147 },
+ { &hf_rrc_nonCriticalExtensions_158, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_158 },
{ NULL, 0, 0, NULL }
};
@@ -72555,7 +76758,7 @@ dissect_rrc_URAUpdateConfirm_r7_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t URAUpdateConfirm_v860ext_IEs_sequence[] = {
{ &hf_rrc_new_H_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_H_RNTI },
{ &hf_rrc_newPrimary_E_RNTI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RNTI },
- { &hf_rrc_defaultConfigForCellFACH, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultConfigForCellFACH },
+ { &hf_rrc_dummy_06 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultConfigForCellFACH },
{ NULL, 0, 0, NULL }
};
@@ -72568,14 +76771,14 @@ dissect_rrc_URAUpdateConfirm_v860ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_nonCriticalExtensions_148_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_159_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_148(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_159(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_148, T_nonCriticalExtensions_148_sequence);
+ ett_rrc_T_nonCriticalExtensions_159, T_nonCriticalExtensions_159_sequence);
return offset;
}
@@ -72583,7 +76786,7 @@ dissect_rrc_T_nonCriticalExtensions_148(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860NonCriticalExtensions_20_sequence[] = {
{ &hf_rrc_uraUpdateConfirm_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_URAUpdateConfirm_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_148, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_148 },
+ { &hf_rrc_nonCriticalExtensions_159, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_159 },
{ NULL, 0, 0, NULL }
};
@@ -72612,57 +76815,57 @@ dissect_rrc_T_r7_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_106_sequence[] = {
+static const per_sequence_t T_criticalExtensions_117_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_106(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_117(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_106, T_criticalExtensions_106_sequence);
+ ett_rrc_T_criticalExtensions_117, T_criticalExtensions_117_sequence);
return offset;
}
-static const value_string rrc_T_criticalExtensions_105_vals[] = {
+static const value_string rrc_T_criticalExtensions_116_vals[] = {
{ 0, "r7" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_105_choice[] = {
+static const per_choice_t T_criticalExtensions_116_choice[] = {
{ 0, &hf_rrc_r7_13 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r7_13 },
- { 1, &hf_rrc_criticalExtensions_106, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_106 },
+ { 1, &hf_rrc_criticalExtensions_117, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_117 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_105(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_116(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_105, T_criticalExtensions_105_choice,
+ ett_rrc_T_criticalExtensions_116, T_criticalExtensions_116_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_104_vals[] = {
+static const value_string rrc_T_criticalExtensions_115_vals[] = {
{ 0, "r5" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_104_choice[] = {
+static const per_choice_t T_criticalExtensions_115_choice[] = {
{ 0, &hf_rrc_r5_12 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r5_12 },
- { 1, &hf_rrc_criticalExtensions_105, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_105 },
+ { 1, &hf_rrc_criticalExtensions_116, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_116 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_104(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_115(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_104, T_criticalExtensions_104_choice,
+ ett_rrc_T_criticalExtensions_115, T_criticalExtensions_115_choice,
NULL);
return offset;
@@ -72671,7 +76874,7 @@ dissect_rrc_T_criticalExtensions_104(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
static const per_sequence_t T_later_than_r3_25_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_104, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_104 },
+ { &hf_rrc_criticalExtensions_115, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_115 },
{ NULL, 0, 0, NULL }
};
@@ -72698,7 +76901,7 @@ static const per_choice_t URAUpdateConfirm_choice[] = {
static int
dissect_rrc_URAUpdateConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 421 "../../asn1/rrc/rrc.cnf"
+#line 474 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "URAUpdateConfirm");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_URAUpdateConfirm, URAUpdateConfirm_choice,
@@ -73160,6 +77363,20 @@ dissect_rrc_UE_ConnTimersAndConstants(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
static int
+dissect_rrc_T_cn_CommonGSM_MAP_NAS_SysInfo_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 621 "../../asn1/rrc/rrc.cnf"
+ rrc_nas_sys_info_gsm_map_type = RRC_NAS_SYS_INFO_CN_COMMON;
+ offset = dissect_rrc_NAS_SystemInformationGSM_MAP(tvb, offset, actx, tree, hf_index);
+
+
+
+
+ return offset;
+}
+
+
+
+static int
dissect_rrc_CN_DRX_CycleLengthCoefficient(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
6U, 9U, NULL, FALSE);
@@ -73200,7 +77417,7 @@ dissect_rrc_CN_DomainInformationListFull(tvbuff_t *tvb _U_, int offset _U_, asn1
static const per_sequence_t CN_InformationInfoFull_sequence[] = {
{ &hf_rrc_plmn_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PLMN_Identity },
- { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NAS_SystemInformationGSM_MAP },
+ { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_cn_CommonGSM_MAP_NAS_SysInfo_02 },
{ &hf_rrc_cn_DomainInformationListFull, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_DomainInformationListFull },
{ NULL, 0, 0, NULL }
};
@@ -73214,14 +77431,14 @@ dissect_rrc_CN_InformationInfoFull(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_nonCriticalExtensions_153_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_164_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_153(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_164(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_153, T_nonCriticalExtensions_153_sequence);
+ ett_rrc_T_nonCriticalExtensions_164, T_nonCriticalExtensions_164_sequence);
return offset;
}
@@ -73237,7 +77454,7 @@ static const per_sequence_t UTRANMobilityInformation_r3_IEs_sequence[] = {
{ &hf_rrc_cn_InformationInfo_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_InformationInfoFull },
{ &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
{ &hf_rrc_dl_CounterSynchronisationInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CounterSynchronisationInfo },
- { &hf_rrc_nonCriticalExtensions_153, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_153 },
+ { &hf_rrc_nonCriticalExtensions_164, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_164 },
{ NULL, 0, 0, NULL }
};
@@ -73379,14 +77596,14 @@ dissect_rrc_UTRANMobilityInformation_v860ext1_IEs(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_nonCriticalExtensions_150_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_161_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_150(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_161(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_150, T_nonCriticalExtensions_150_sequence);
+ ett_rrc_T_nonCriticalExtensions_161, T_nonCriticalExtensions_161_sequence);
return offset;
}
@@ -73394,7 +77611,7 @@ dissect_rrc_T_nonCriticalExtensions_150(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860NonCriticalExtentions_sequence[] = {
{ &hf_rrc_utranMobilityInformation_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UTRANMobilityInformation_v860ext1_IEs },
- { &hf_rrc_nonCriticalExtensions_150, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_150 },
+ { &hf_rrc_nonCriticalExtensions_161, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_161 },
{ NULL, 0, 0, NULL }
};
@@ -73575,14 +77792,14 @@ dissect_rrc_UTRANMobilityInformation_r5_IEs(tvbuff_t *tvb _U_, int offset _U_, a
}
-static const per_sequence_t T_nonCriticalExtensions_151_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_162_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_151(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_162(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_151, T_nonCriticalExtensions_151_sequence);
+ ett_rrc_T_nonCriticalExtensions_162, T_nonCriticalExtensions_162_sequence);
return offset;
}
@@ -73590,7 +77807,7 @@ dissect_rrc_T_nonCriticalExtensions_151(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860NonCriticalExtentions_01_sequence[] = {
{ &hf_rrc_utranMobilityInformation_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UTRANMobilityInformation_v860ext1_IEs },
- { &hf_rrc_nonCriticalExtensions_151, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_151 },
+ { &hf_rrc_nonCriticalExtensions_162, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_162 },
{ NULL, 0, 0, NULL }
};
@@ -74021,14 +78238,14 @@ dissect_rrc_UTRANMobilityInformation_v860ext2_IEs(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_nonCriticalExtensions_152_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_163_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_152(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_163(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_152, T_nonCriticalExtensions_152_sequence);
+ ett_rrc_T_nonCriticalExtensions_163, T_nonCriticalExtensions_163_sequence);
return offset;
}
@@ -74036,7 +78253,7 @@ dissect_rrc_T_nonCriticalExtensions_152(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860NonCriticalExtensions_22_sequence[] = {
{ &hf_rrc_utranMobilityInformation_v860ext_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UTRANMobilityInformation_v860ext2_IEs },
- { &hf_rrc_nonCriticalExtensions_152, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_152 },
+ { &hf_rrc_nonCriticalExtensions_163, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_163 },
{ NULL, 0, 0, NULL }
};
@@ -74065,57 +78282,57 @@ dissect_rrc_T_r7_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_110_sequence[] = {
+static const per_sequence_t T_criticalExtensions_121_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_110(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_121(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_110, T_criticalExtensions_110_sequence);
+ ett_rrc_T_criticalExtensions_121, T_criticalExtensions_121_sequence);
return offset;
}
-static const value_string rrc_T_criticalExtensions_109_vals[] = {
+static const value_string rrc_T_criticalExtensions_120_vals[] = {
{ 0, "r7" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_109_choice[] = {
+static const per_choice_t T_criticalExtensions_120_choice[] = {
{ 0, &hf_rrc_r7_14 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r7_14 },
- { 1, &hf_rrc_criticalExtensions_110, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_110 },
+ { 1, &hf_rrc_criticalExtensions_121, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_121 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_109(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_120(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_109, T_criticalExtensions_109_choice,
+ ett_rrc_T_criticalExtensions_120, T_criticalExtensions_120_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_108_vals[] = {
+static const value_string rrc_T_criticalExtensions_119_vals[] = {
{ 0, "r5" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_108_choice[] = {
+static const per_choice_t T_criticalExtensions_119_choice[] = {
{ 0, &hf_rrc_r5_13 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r5_13 },
- { 1, &hf_rrc_criticalExtensions_109, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_109 },
+ { 1, &hf_rrc_criticalExtensions_120, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_120 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_108(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_119(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_108, T_criticalExtensions_108_choice,
+ ett_rrc_T_criticalExtensions_119, T_criticalExtensions_119_choice,
NULL);
return offset;
@@ -74124,7 +78341,7 @@ dissect_rrc_T_criticalExtensions_108(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
static const per_sequence_t T_later_than_r3_27_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_108, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_108 },
+ { &hf_rrc_criticalExtensions_119, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_119 },
{ NULL, 0, 0, NULL }
};
@@ -74151,7 +78368,7 @@ static const per_choice_t UTRANMobilityInformation_choice[] = {
static int
dissect_rrc_UTRANMobilityInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 429 "../../asn1/rrc/rrc.cnf"
+#line 482 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "UTRANMobilityInformation");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_UTRANMobilityInformation, UTRANMobilityInformation_choice,
@@ -74253,14 +78470,14 @@ dissect_rrc_HandoverFromUTRANCommand_GERANIu_r5_IEs(tvbuff_t *tvb _U_, int offse
}
-static const per_sequence_t T_nonCriticalExtensions_43_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_47_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_43(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_47(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_43, T_nonCriticalExtensions_43_sequence);
+ ett_rrc_T_nonCriticalExtensions_47, T_nonCriticalExtensions_47_sequence);
return offset;
}
@@ -74268,7 +78485,7 @@ dissect_rrc_T_nonCriticalExtensions_43(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_r5_03_sequence[] = {
{ &hf_rrc_handoverFromUTRANCommand_GERANIu_r5, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HandoverFromUTRANCommand_GERANIu_r5_IEs },
- { &hf_rrc_nonCriticalExtensions_43, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_43 },
+ { &hf_rrc_nonCriticalExtensions_47, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_47 },
{ NULL, 0, 0, NULL }
};
@@ -74281,21 +78498,21 @@ dissect_rrc_T_r5_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_33_sequence[] = {
+static const per_sequence_t T_criticalExtensions_37_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_33(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_37(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_33, T_criticalExtensions_33_sequence);
+ ett_rrc_T_criticalExtensions_37, T_criticalExtensions_37_sequence);
return offset;
}
static const per_sequence_t T_later_than_r5_sequence[] = {
- { &hf_rrc_criticalExtensions_33, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_33 },
+ { &hf_rrc_criticalExtensions_37, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_37 },
{ NULL, 0, 0, NULL }
};
@@ -74338,7 +78555,7 @@ static const per_sequence_t HandoverFromUTRANCommand_GERANIu_sequence[] = {
static int
dissect_rrc_HandoverFromUTRANCommand_GERANIu(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 181 "../../asn1/rrc/rrc.cnf"
+#line 226 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverFromUTRANCommand-GERANIu");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_HandoverFromUTRANCommand_GERANIu, HandoverFromUTRANCommand_GERANIu_sequence);
@@ -74504,7 +78721,7 @@ static const per_sequence_t MBMS_ModifedService_r6_sequence[] = {
{ &hf_rrc_mbms_TransmissionIdentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MBMS_TransmissionIdentity },
{ &hf_rrc_mbms_RequiredUEAction, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MBMS_RequiredUEAction_Mod },
{ &hf_rrc_mbms_PreferredFrequency, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_mbms_PreferredFrequency },
- { &hf_rrc_dummy_56 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_16 },
+ { &hf_rrc_dummy_60 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_16 },
{ &hf_rrc_continueMCCHReading, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ NULL, 0, 0, NULL }
};
@@ -74719,14 +78936,14 @@ dissect_rrc_MBMSModifiedServicesInformation_v7c0ext_IEs(tvbuff_t *tvb _U_, int o
}
-static const per_sequence_t T_nonCriticalExtensions_161_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_172_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_161(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_172(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_161, T_nonCriticalExtensions_161_sequence);
+ ett_rrc_T_nonCriticalExtensions_172, T_nonCriticalExtensions_172_sequence);
return offset;
}
@@ -74734,7 +78951,7 @@ dissect_rrc_T_nonCriticalExtensions_161(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v7c0NonCriticalExtensions_sequence[] = {
{ &hf_rrc_mbmsModifiedServicesInformation_v7c0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MBMSModifiedServicesInformation_v7c0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_161, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_161 },
+ { &hf_rrc_nonCriticalExtensions_172, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_172 },
{ NULL, 0, 0, NULL }
};
@@ -74776,7 +78993,7 @@ static const per_sequence_t MBMSModifiedServicesInformation_sequence[] = {
static int
dissect_rrc_MBMSModifiedServicesInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 221 "../../asn1/rrc/rrc.cnf"
+#line 266 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSModifiedServicesInformation");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_MBMSModifiedServicesInformation, MBMSModifiedServicesInformation_sequence);
@@ -74834,14 +79051,14 @@ dissect_rrc_ETWS_WarningSecurityInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_nonCriticalExtensions_30_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_33_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_30(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_33(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_30, T_nonCriticalExtensions_30_sequence);
+ ett_rrc_T_nonCriticalExtensions_33, T_nonCriticalExtensions_33_sequence);
return offset;
}
@@ -74850,13 +79067,13 @@ dissect_rrc_T_nonCriticalExtensions_30(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t ETWSPrimaryNotificationWithSecurity_sequence[] = {
{ &hf_rrc_etws_Information, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_ETWS_Information },
{ &hf_rrc_etws_WarningSecurityInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ETWS_WarningSecurityInfo },
- { &hf_rrc_nonCriticalExtensions_30, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_30 },
+ { &hf_rrc_nonCriticalExtensions_33, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_33 },
{ NULL, 0, 0, NULL }
};
static int
dissect_rrc_ETWSPrimaryNotificationWithSecurity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 173 "../../asn1/rrc/rrc.cnf"
+#line 210 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "ETWSPrimaryNotificationWithSecurity");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_ETWSPrimaryNotificationWithSecurity, ETWSPrimaryNotificationWithSecurity_sequence);
@@ -74871,7 +79088,7 @@ dissect_rrc_ETWSPrimaryNotificationWithSecurity(tvbuff_t *tvb _U_, int offset _U
static int
dissect_rrc_T_eutra_Message(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 517 "../../asn1/rrc/rrc.cnf"
+#line 570 "../../asn1/rrc/rrc.cnf"
tvbuff_t *eutra_message_tvb = NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
NO_BOUND, NO_BOUND, FALSE, &eutra_message_tvb);
@@ -74901,14 +79118,14 @@ dissect_rrc_HandoverFromUTRANCommand_EUTRA_r8_IEs(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_nonCriticalExtensions_45_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_49_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_45(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_49(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_45, T_nonCriticalExtensions_45_sequence);
+ ett_rrc_T_nonCriticalExtensions_49, T_nonCriticalExtensions_49_sequence);
return offset;
}
@@ -74917,7 +79134,7 @@ dissect_rrc_T_nonCriticalExtensions_45(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_r8_04_sequence[] = {
{ &hf_rrc_handoverFromUTRANCommand_EUTRA_r8, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HandoverFromUTRANCommand_EUTRA_r8_IEs },
{ &hf_rrc_handoverFromUTRANCommand_EUTRA_r8_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_45, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_45 },
+ { &hf_rrc_nonCriticalExtensions_49, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_49 },
{ NULL, 0, 0, NULL }
};
@@ -74930,35 +79147,35 @@ dissect_rrc_T_r8_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_36_sequence[] = {
+static const per_sequence_t T_criticalExtensions_40_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_36(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_40(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_36, T_criticalExtensions_36_sequence);
+ ett_rrc_T_criticalExtensions_40, T_criticalExtensions_40_sequence);
return offset;
}
-static const value_string rrc_T_criticalExtensions_35_vals[] = {
+static const value_string rrc_T_criticalExtensions_39_vals[] = {
{ 0, "r8" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_35_choice[] = {
+static const per_choice_t T_criticalExtensions_39_choice[] = {
{ 0, &hf_rrc_r8_04 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r8_04 },
- { 1, &hf_rrc_criticalExtensions_36, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_36 },
+ { 1, &hf_rrc_criticalExtensions_40, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_40 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_35(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_39(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_35, T_criticalExtensions_35_choice,
+ ett_rrc_T_criticalExtensions_39, T_criticalExtensions_39_choice,
NULL);
return offset;
@@ -74967,15 +79184,642 @@ dissect_rrc_T_criticalExtensions_35(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t HandoverFromUTRANCommand_EUTRA_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_35, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_35 },
+ { &hf_rrc_criticalExtensions_39, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_39 },
{ NULL, 0, 0, NULL }
};
static int
dissect_rrc_HandoverFromUTRANCommand_EUTRA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 222 "../../asn1/rrc/rrc.cnf"
+ col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverFromUTRANCommand-EUTRA");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_HandoverFromUTRANCommand_EUTRA, HandoverFromUTRANCommand_EUTRA_sequence);
+
+
+
+ return offset;
+}
+
+
+static const value_string rrc_T_loggedMeasReportRequest_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_loggedMeasReportRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_loggedANRReportRequest_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_loggedANRReportRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t UEInformationRequest_r10_IEs_sequence[] = {
+ { &hf_rrc_loggedMeasReportRequest, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_loggedMeasReportRequest },
+ { &hf_rrc_loggedANRReportRequest, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_loggedANRReportRequest },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UEInformationRequest_r10_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UEInformationRequest_r10_IEs, UEInformationRequest_r10_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_179_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_179(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_179, T_nonCriticalExtensions_179_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_r10_12_sequence[] = {
+ { &hf_rrc_ueInformationRequest_r10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UEInformationRequest_r10_IEs },
+ { &hf_rrc_ueInformationRequest_r10_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
+ { &hf_rrc_nonCriticalExtensions_179, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_179 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_r10_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_r10_12, T_r10_12_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_criticalExtensions_125_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_125(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_125, T_criticalExtensions_125_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_criticalExtensions_124_vals[] = {
+ { 0, "r10" },
+ { 1, "criticalExtensions" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_criticalExtensions_124_choice[] = {
+ { 0, &hf_rrc_r10_12 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r10_12 },
+ { 1, &hf_rrc_criticalExtensions_125, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_125 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_124(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_124, T_criticalExtensions_124_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t UEInformationRequest_sequence[] = {
+ { &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
+ { &hf_rrc_criticalExtensions_124, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_124 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UEInformationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 454 "../../asn1/rrc/rrc.cnf"
+ col_append_str(actx->pinfo->cinfo, COL_INFO, "UEInformationRequest");
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UEInformationRequest, UEInformationRequest_sequence);
+
+
+
+
+ return offset;
+}
+
+
+
+static int
+dissect_rrc_BIT_STRING_SIZE_48(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 48, 48, FALSE, NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_loggingDuration_01_vals[] = {
+ { 0, "min10" },
+ { 1, "min20" },
+ { 2, "min40" },
+ { 3, "hr1" },
+ { 4, "hr1min30" },
+ { 5, "hr2" },
+ { 6, "spare2" },
+ { 7, "spare1" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_loggingDuration_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_loggingInterval_vals[] = {
+ { 0, "li128" },
+ { 1, "li256" },
+ { 2, "li512" },
+ { 3, "li1024" },
+ { 4, "li2048" },
+ { 5, "li3072" },
+ { 6, "li4096" },
+ { 7, "li6144" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_loggingInterval(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t TraceReference_sequence[] = {
+ { &hf_rrc_plmn_Identity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PLMN_Identity },
+ { &hf_rrc_traceId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_OCTET_STRING_SIZE_3 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_TraceReference(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_TraceReference, TraceReference_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t TraceRecordingSession_sequence[] = {
+ { &hf_rrc_traceRecordingSession_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_OCTET_STRING_SIZE_2 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_TraceRecordingSession(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_TraceRecordingSession, TraceRecordingSession_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_rrc_OCTET_STRING_SIZE_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ 1, 1, FALSE, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t TCE_Id_sequence[] = {
+ { &hf_rrc_tce_Id_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_OCTET_STRING_SIZE_1 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_TCE_Id(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_TCE_Id, TCE_Id_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_32_OF_CellIdentity_sequence_of[1] = {
+ { &hf_rrc_cellIDList_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellIdentity },
+};
+
+static int
+dissect_rrc_SEQUENCE_SIZE_1_32_OF_CellIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_SEQUENCE_SIZE_1_32_OF_CellIdentity, SEQUENCE_SIZE_1_32_OF_CellIdentity_sequence_of,
+ 1, 32, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t LAI_sequence[] = {
+ { &hf_rrc_plmn_Identity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PLMN_Identity },
+ { &hf_rrc_lac , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BIT_STRING_SIZE_16 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_LAI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LAI, LAI_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_8_OF_LAI_sequence_of[1] = {
+ { &hf_rrc_locationAreaList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_LAI },
+};
+
+static int
+dissect_rrc_SEQUENCE_SIZE_1_8_OF_LAI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_SEQUENCE_SIZE_1_8_OF_LAI, SEQUENCE_SIZE_1_8_OF_LAI_sequence_of,
+ 1, 8, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_rrc_RoutingAreaCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 8, 8, FALSE, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t RAI_sequence[] = {
+ { &hf_rrc_lai , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_LAI },
+ { &hf_rrc_rac , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RoutingAreaCode },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_RAI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_RAI, RAI_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_8_OF_RAI_sequence_of[1] = {
+ { &hf_rrc_routingAreaList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RAI },
+};
+
+static int
+dissect_rrc_SEQUENCE_SIZE_1_8_OF_RAI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_SEQUENCE_SIZE_1_8_OF_RAI, SEQUENCE_SIZE_1_8_OF_RAI_sequence_of,
+ 1, 8, FALSE);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_areaConfiguration_vals[] = {
+ { 0, "cellIDList" },
+ { 1, "locationAreaList" },
+ { 2, "routingAreaList" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_areaConfiguration_choice[] = {
+ { 0, &hf_rrc_cellIDList , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_32_OF_CellIdentity },
+ { 1, &hf_rrc_locationAreaList, ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_8_OF_LAI },
+ { 2, &hf_rrc_routingAreaList , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_8_OF_RAI },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_areaConfiguration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_areaConfiguration, T_areaConfiguration_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedMeasurementsConfigurationInfo_sequence[] = {
+ { &hf_rrc_absoluteTimeInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BIT_STRING_SIZE_48 },
+ { &hf_rrc_loggingDuration_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_loggingDuration_01 },
+ { &hf_rrc_loggingInterval , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_loggingInterval },
+ { &hf_rrc_traceReference , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TraceReference },
+ { &hf_rrc_traceRecordingSession, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TraceRecordingSession },
+ { &hf_rrc_tce_Id , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TCE_Id },
+ { &hf_rrc_areaConfiguration, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_areaConfiguration },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_LoggedMeasurementsConfigurationInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedMeasurementsConfigurationInfo, LoggedMeasurementsConfigurationInfo_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_loggingDuration_vals[] = {
+ { 0, "min10" },
+ { 1, "min30" },
+ { 2, "hr1" },
+ { 3, "spare2" },
+ { 4, "spare1" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_loggingDuration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 5, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_rrc_INTEGER_M120_M25(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -120, -25, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t RSCPforANR_sequence[] = {
+ { &hf_rrc_rSCP , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_M120_M25 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_RSCPforANR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_RSCPforANR, RSCPforANR_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_rrc_INTEGER_M24_0(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -24, 0U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t Ec_N0forANR_sequence[] = {
+ { &hf_rrc_ec_N0 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_M24_0 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_Ec_N0forANR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_Ec_N0forANR, Ec_N0forANR_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_LoggingAbsoluteThreshold_vals[] = {
+ { 0, "rscpforANR" },
+ { 1, "ec-N0forANR" },
+ { 0, NULL }
+};
+
+static const per_choice_t LoggingAbsoluteThreshold_choice[] = {
+ { 0, &hf_rrc_rscpforANR , ASN1_NO_EXTENSIONS , dissect_rrc_RSCPforANR },
+ { 1, &hf_rrc_ec_N0forANR , ASN1_NO_EXTENSIONS , dissect_rrc_Ec_N0forANR },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_LoggingAbsoluteThreshold(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggingAbsoluteThreshold, LoggingAbsoluteThreshold_choice,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_rrc_LoggingRelativeThreshold(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -4, 16U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t IntraUTRAANR_sequence[] = {
+ { &hf_rrc_loggingAbsoluteThreshold, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_LoggingAbsoluteThreshold },
+ { &hf_rrc_loggingRelativeThreshold, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_LoggingRelativeThreshold },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_IntraUTRAANR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_IntraUTRAANR, IntraUTRAANR_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_interRATANRforEUTRAIndicator_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_interRATANRforEUTRAIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_interRATANRforGSMIndicator_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_interRATANRforGSMIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedANRConfigurationInfo_sequence[] = {
+ { &hf_rrc_loggingDuration , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_loggingDuration },
+ { &hf_rrc_intraUTRAANR , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntraUTRAANR },
+ { &hf_rrc_interRATANRforEUTRAIndicator, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_interRATANRforEUTRAIndicator },
+ { &hf_rrc_interRATANRforGSMIndicator, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_interRATANRforGSMIndicator },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_LoggedANRConfigurationInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedANRConfigurationInfo, LoggedANRConfigurationInfo_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggingMeasurementConfiguration_r10_IEs_sequence[] = {
+ { &hf_rrc_loggedMeasurementsConfigurationInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_LoggedMeasurementsConfigurationInfo },
+ { &hf_rrc_loggedANRConfigurationInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_LoggedANRConfigurationInfo },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_LoggingMeasurementConfiguration_r10_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggingMeasurementConfiguration_r10_IEs, LoggingMeasurementConfiguration_r10_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_177_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_177(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_177, T_nonCriticalExtensions_177_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_r10_11_sequence[] = {
+ { &hf_rrc_loggingMeasurementConfiguration_r10_IEs, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_LoggingMeasurementConfiguration_r10_IEs },
+ { &hf_rrc_loggingMeasurementConfiguration_r10_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
+ { &hf_rrc_nonCriticalExtensions_177, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_177 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_r10_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_r10_11, T_r10_11_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_criticalExtensions_123_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_123(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_123, T_criticalExtensions_123_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_criticalExtensions_122_vals[] = {
+ { 0, "r10" },
+ { 1, "criticalExtensions" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_criticalExtensions_122_choice[] = {
+ { 0, &hf_rrc_r10_11 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r10_11 },
+ { 1, &hf_rrc_criticalExtensions_123, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_123 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_122(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_122, T_criticalExtensions_122_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggingMeasurementConfiguration_sequence[] = {
+ { &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
+ { &hf_rrc_criticalExtensions_122, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_122 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_LoggingMeasurementConfiguration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 242 "../../asn1/rrc/rrc.cnf"
+ col_append_str(actx->pinfo->cinfo, COL_INFO, "LoggingMeasurementConfiguration");
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggingMeasurementConfiguration, LoggingMeasurementConfiguration_sequence);
+
+
+
+
return offset;
}
@@ -75010,12 +79854,14 @@ static const value_string rrc_DL_DCCH_MessageType_vals[] = {
{ 26, "mbmsModifiedServicesInformation" },
{ 27, "etwsPrimaryNotificationWithSecurity" },
{ 28, "handoverFromUTRANCommand-EUTRA" },
- { 29, "spare3" },
- { 30, "spare2" },
+ { 29, "ueInformationRequest" },
+ { 30, "loggingMeasurementConfiguration" },
{ 31, "spare1" },
{ 0, NULL }
};
+static value_string_ext rrc_DL_DCCH_MessageType_vals_ext = VALUE_STRING_EXT_INIT(rrc_DL_DCCH_MessageType_vals);
+
static const per_choice_t DL_DCCH_MessageType_choice[] = {
{ 0, &hf_rrc_activeSetUpdate , ASN1_NO_EXTENSIONS , dissect_rrc_ActiveSetUpdate },
{ 1, &hf_rrc_assistanceDataDelivery, ASN1_NO_EXTENSIONS , dissect_rrc_AssistanceDataDelivery },
@@ -75046,8 +79892,8 @@ static const per_choice_t DL_DCCH_MessageType_choice[] = {
{ 26, &hf_rrc_mbmsModifiedServicesInformation, ASN1_NO_EXTENSIONS , dissect_rrc_MBMSModifiedServicesInformation },
{ 27, &hf_rrc_etwsPrimaryNotificationWithSecurity, ASN1_NO_EXTENSIONS , dissect_rrc_ETWSPrimaryNotificationWithSecurity },
{ 28, &hf_rrc_handoverFromUTRANCommand_EUTRA, ASN1_NO_EXTENSIONS , dissect_rrc_HandoverFromUTRANCommand_EUTRA },
- { 29, &hf_rrc_spare3 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 30, &hf_rrc_spare2 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 29, &hf_rrc_ueInformationRequest, ASN1_NO_EXTENSIONS , dissect_rrc_UEInformationRequest },
+ { 30, &hf_rrc_loggingMeasurementConfiguration, ASN1_NO_EXTENSIONS , dissect_rrc_LoggingMeasurementConfiguration },
{ 31, &hf_rrc_spare1 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -75131,14 +79977,14 @@ dissect_rrc_UL_CounterSynchronisationInfo(tvbuff_t *tvb _U_, int offset _U_, asn
}
-static const per_sequence_t T_nonCriticalExtensions_05_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_06_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_05, T_nonCriticalExtensions_05_sequence);
+ ett_rrc_T_nonCriticalExtensions_06, T_nonCriticalExtensions_06_sequence);
return offset;
}
@@ -75146,7 +79992,7 @@ dissect_rrc_T_nonCriticalExtensions_05(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_laterNonCriticalExtensions_01_sequence[] = {
{ &hf_rrc_activeSetUpdateComplete_r3_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_05 },
+ { &hf_rrc_nonCriticalExtensions_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_06 },
{ NULL, 0, 0, NULL }
};
@@ -75170,7 +80016,7 @@ static const per_sequence_t ActiveSetUpdateComplete_sequence[] = {
static int
dissect_rrc_ActiveSetUpdateComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 129 "../../asn1/rrc/rrc.cnf"
+#line 166 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "ActiveSetUpdateComplete");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_ActiveSetUpdateComplete, ActiveSetUpdateComplete_sequence);
@@ -75304,14 +80150,14 @@ dissect_rrc_FailureCauseWithProtErr(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
-static const per_sequence_t T_nonCriticalExtensions_06_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_07_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_06, T_nonCriticalExtensions_06_sequence);
+ ett_rrc_T_nonCriticalExtensions_07, T_nonCriticalExtensions_07_sequence);
return offset;
}
@@ -75319,7 +80165,7 @@ dissect_rrc_T_nonCriticalExtensions_06(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_laterNonCriticalExtensions_02_sequence[] = {
{ &hf_rrc_activeSetUpdateFailure_r3_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_06 },
+ { &hf_rrc_nonCriticalExtensions_07, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_07 },
{ NULL, 0, 0, NULL }
};
@@ -75341,7 +80187,7 @@ static const per_sequence_t ActiveSetUpdateFailure_sequence[] = {
static int
dissect_rrc_ActiveSetUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 133 "../../asn1/rrc/rrc.cnf"
+#line 170 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "ActiveSetUpdateFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_ActiveSetUpdateFailure, ActiveSetUpdateFailure_sequence);
@@ -75403,14 +80249,14 @@ dissect_rrc_CellChangeOrderFromUTRANFailure_r3_IEs(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_nonCriticalExtensions_09_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_10_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_09, T_nonCriticalExtensions_09_sequence);
+ ett_rrc_T_nonCriticalExtensions_10, T_nonCriticalExtensions_10_sequence);
return offset;
}
@@ -75418,7 +80264,7 @@ dissect_rrc_T_nonCriticalExtensions_09(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_laterNonCriticalExtensions_05_sequence[] = {
{ &hf_rrc_cellChangeOrderFromUTRANFailure_r3_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_09, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_09 },
+ { &hf_rrc_nonCriticalExtensions_10, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_10 },
{ NULL, 0, 0, NULL }
};
@@ -75446,14 +80292,14 @@ dissect_rrc_T_r3_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_07_sequence[] = {
+static const per_sequence_t T_criticalExtensions_08_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_07, T_criticalExtensions_07_sequence);
+ ett_rrc_T_criticalExtensions_08, T_criticalExtensions_08_sequence);
return offset;
}
@@ -75461,7 +80307,7 @@ dissect_rrc_T_criticalExtensions_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_dummy_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_07, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_07 },
+ { &hf_rrc_criticalExtensions_08, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_08 },
{ NULL, 0, 0, NULL }
};
@@ -75488,7 +80334,7 @@ static const per_choice_t CellChangeOrderFromUTRANFailure_choice[] = {
static int
dissect_rrc_CellChangeOrderFromUTRANFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 145 "../../asn1/rrc/rrc.cnf"
+#line 182 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "CellChangeOrderFromUTRANFailure");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_CellChangeOrderFromUTRANFailure, CellChangeOrderFromUTRANFailure_choice,
@@ -75541,14 +80387,14 @@ dissect_rrc_RB_COUNT_C_InformationList(tvbuff_t *tvb _U_, int offset _U_, asn1_c
}
-static const per_sequence_t T_nonCriticalExtensions_28_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_31_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_28(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_28, T_nonCriticalExtensions_28_sequence);
+ ett_rrc_T_nonCriticalExtensions_31, T_nonCriticalExtensions_31_sequence);
return offset;
}
@@ -75556,7 +80402,7 @@ dissect_rrc_T_nonCriticalExtensions_28(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_laterNonCriticalExtensions_10_sequence[] = {
{ &hf_rrc_counterCheckResponse_r3_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_28, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_28 },
+ { &hf_rrc_nonCriticalExtensions_31, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_31 },
{ NULL, 0, 0, NULL }
};
@@ -75578,7 +80424,7 @@ static const per_sequence_t CounterCheckResponse_sequence[] = {
static int
dissect_rrc_CounterCheckResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 165 "../../asn1/rrc/rrc.cnf"
+#line 202 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "CounterCheckResponse");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_CounterCheckResponse, CounterCheckResponse_sequence);
@@ -75590,14 +80436,58 @@ dissect_rrc_CounterCheckResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
}
-static const per_sequence_t T_nonCriticalExtensions_38_sequence[] = {
+static const value_string rrc_T_loggedMeasAvailable_01_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_loggedMeasAvailable_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t HandoverToUTRANComplete_va40ext_sequence[] = {
+ { &hf_rrc_loggedMeasAvailable_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_loggedMeasAvailable_01 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_38(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_HandoverToUTRANComplete_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_38, T_nonCriticalExtensions_38_sequence);
+ ett_rrc_HandoverToUTRANComplete_va40ext, HandoverToUTRANComplete_va40ext_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_42_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_42(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_42, T_nonCriticalExtensions_42_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtensions_01_sequence[] = {
+ { &hf_rrc_handoverToUTRANComplete_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HandoverToUTRANComplete_va40ext },
+ { &hf_rrc_nonCriticalExtensions_42, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_42 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtensions_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtensions_01, T_va40NonCriticalExtensions_01_sequence);
return offset;
}
@@ -75605,7 +80495,7 @@ dissect_rrc_T_nonCriticalExtensions_38(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_laterNonCriticalExtensions_12_sequence[] = {
{ &hf_rrc_handoverToUTRANComplete_r3_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_38, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_38 },
+ { &hf_rrc_va40NonCriticalExtensions_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtensions_01 },
{ NULL, 0, 0, NULL }
};
@@ -75627,7 +80517,7 @@ static const per_sequence_t HandoverToUTRANComplete_sequence[] = {
static int
dissect_rrc_HandoverToUTRANComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 177 "../../asn1/rrc/rrc.cnf"
+#line 214 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverToUTRANComplete");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_HandoverToUTRANComplete, HandoverToUTRANComplete_sequence);
@@ -75797,7 +80687,7 @@ dissect_rrc_T_routingbasis(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
static const per_sequence_t Gsm_map_IDNNS_sequence[] = {
{ &hf_rrc_routingbasis , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_routingbasis },
- { &hf_rrc_dummy_23 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
+ { &hf_rrc_dummy_27 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ NULL, 0, 0, NULL }
};
@@ -75962,15 +80852,15 @@ dissect_rrc_T_measurementQuantity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_fdd_145_sequence[] = {
+static const per_sequence_t T_fdd_149_sequence[] = {
{ &hf_rrc_measurementQuantity_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_measurementQuantity },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_145(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_149(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_145, T_fdd_145_sequence);
+ ett_rrc_T_fdd_149, T_fdd_149_sequence);
return offset;
}
@@ -76010,37 +80900,37 @@ dissect_rrc_PrimaryCCPCH_RSCP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
}
-static const per_sequence_t T_tdd_95_sequence[] = {
+static const per_sequence_t T_tdd_99_sequence[] = {
{ &hf_rrc_timeslotISCP , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TimeslotISCP_List },
{ &hf_rrc_primaryCCPCH_RSCP, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCCPCH_RSCP },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_95(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_99(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_95, T_tdd_95_sequence);
+ ett_rrc_T_tdd_99, T_tdd_99_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_108_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_112_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_108_choice[] = {
- { 0, &hf_rrc_fdd_151 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_145 },
- { 1, &hf_rrc_tdd_103 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_95 },
+static const per_choice_t T_modeSpecificInfo_112_choice[] = {
+ { 0, &hf_rrc_fdd_155 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_149 },
+ { 1, &hf_rrc_tdd_107 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_99 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_108(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_112(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_108, T_modeSpecificInfo_108_choice,
+ ett_rrc_T_modeSpecificInfo_112, T_modeSpecificInfo_112_choice,
NULL);
return offset;
@@ -76048,7 +80938,7 @@ dissect_rrc_T_modeSpecificInfo_108(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t T_currentCell_sequence[] = {
- { &hf_rrc_modeSpecificInfo_108, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_108 },
+ { &hf_rrc_modeSpecificInfo_112, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_112 },
{ NULL, 0, 0, NULL }
};
@@ -76129,52 +81019,52 @@ dissect_rrc_T_measurementQuantity_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_fdd_146_sequence[] = {
+static const per_sequence_t T_fdd_150_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ &hf_rrc_measurementQuantity_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_measurementQuantity_01 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_146(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_150(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_146, T_fdd_146_sequence);
+ ett_rrc_T_fdd_150, T_fdd_150_sequence);
return offset;
}
-static const per_sequence_t T_tdd_96_sequence[] = {
+static const per_sequence_t T_tdd_100_sequence[] = {
{ &hf_rrc_cellParametersID, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellParametersID },
{ &hf_rrc_primaryCCPCH_RSCP, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCCPCH_RSCP },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_96(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_100(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_96, T_tdd_96_sequence);
+ ett_rrc_T_tdd_100, T_tdd_100_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_109_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_113_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_109_choice[] = {
- { 0, &hf_rrc_fdd_152 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_146 },
- { 1, &hf_rrc_tdd_104 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_96 },
+static const per_choice_t T_modeSpecificInfo_113_choice[] = {
+ { 0, &hf_rrc_fdd_156 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_150 },
+ { 1, &hf_rrc_tdd_108 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_100 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_109(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_113(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_109, T_modeSpecificInfo_109_choice,
+ ett_rrc_T_modeSpecificInfo_113, T_modeSpecificInfo_113_choice,
NULL);
return offset;
@@ -76183,7 +81073,7 @@ dissect_rrc_T_modeSpecificInfo_109(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t MonitoredCellRACH_Result_sequence[] = {
{ &hf_rrc_sfn_SFN_ObsTimeDifference, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SFN_SFN_ObsTimeDifference },
- { &hf_rrc_modeSpecificInfo_109, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_109 },
+ { &hf_rrc_modeSpecificInfo_113, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_113 },
{ NULL, 0, 0, NULL }
};
@@ -76272,7 +81162,7 @@ static const value_string rrc_EstablishmentCause_vals[] = {
{ 19, "terminatingCauseUnknown" },
{ 20, "mbms-Reception" },
{ 21, "mbms-PTP-RB-Request" },
- { 22, "spare10" },
+ { 22, "delayTolerantAccess" },
{ 23, "spare9" },
{ 24, "spare8" },
{ 25, "spare7" },
@@ -76285,6 +81175,8 @@ static const value_string rrc_EstablishmentCause_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_EstablishmentCause_vals_ext = VALUE_STRING_EXT_INIT(rrc_EstablishmentCause_vals);
+
static int
dissect_rrc_EstablishmentCause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -76440,14 +81332,14 @@ dissect_rrc_InitialDirectTransfer_v860ext_IEs(tvbuff_t *tvb _U_, int offset _U_,
}
-static const per_sequence_t T_nonCriticalExtensions_39_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_43_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_39(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_43(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_39, T_nonCriticalExtensions_39_sequence);
+ ett_rrc_T_nonCriticalExtensions_43, T_nonCriticalExtensions_43_sequence);
return offset;
}
@@ -76455,7 +81347,7 @@ dissect_rrc_T_nonCriticalExtensions_39(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v860NonCriticalExtensions_03_sequence[] = {
{ &hf_rrc_initialDirectTransfer_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InitialDirectTransfer_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_39, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_39 },
+ { &hf_rrc_nonCriticalExtensions_43, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_43 },
{ NULL, 0, 0, NULL }
};
@@ -76554,7 +81446,7 @@ static const per_sequence_t InitialDirectTransfer_sequence[] = {
static int
dissect_rrc_InitialDirectTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 197 "../../asn1/rrc/rrc.cnf"
+#line 218 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "InitialDirectTransfer");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_InitialDirectTransfer, InitialDirectTransfer_sequence);
@@ -76683,7 +81575,7 @@ dissect_rrc_HandoverFromUtranFailure_v590ext_IEs(tvbuff_t *tvb _U_, int offset _
static int
dissect_rrc_T_eutra_Message_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 523 "../../asn1/rrc/rrc.cnf"
+#line 576 "../../asn1/rrc/rrc.cnf"
tvbuff_t *eutra_message_tvb = NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
NO_BOUND, NO_BOUND, FALSE, &eutra_message_tvb);
@@ -76711,14 +81603,14 @@ dissect_rrc_HandoverFromUtranFailure_v860ext_IEs(tvbuff_t *tvb _U_, int offset _
}
-static const per_sequence_t T_nonCriticalExtensions_46_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_50_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_46(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_50(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_46, T_nonCriticalExtensions_46_sequence);
+ ett_rrc_T_nonCriticalExtensions_50, T_nonCriticalExtensions_50_sequence);
return offset;
}
@@ -76726,7 +81618,7 @@ dissect_rrc_T_nonCriticalExtensions_46(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v860NonCriticalExtensions_06_sequence[] = {
{ &hf_rrc_handoverFromUTRANFailure_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HandoverFromUtranFailure_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_46, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_46 },
+ { &hf_rrc_nonCriticalExtensions_50, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_50 },
{ NULL, 0, 0, NULL }
};
@@ -76779,7 +81671,7 @@ static const per_sequence_t HandoverFromUTRANFailure_sequence[] = {
static int
dissect_rrc_HandoverFromUTRANFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 193 "../../asn1/rrc/rrc.cnf"
+#line 238 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverFromUTRANFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_HandoverFromUTRANFailure, HandoverFromUTRANFailure_sequence);
@@ -76805,14 +81697,14 @@ dissect_rrc_MeasurementControlFailure_v590ext_IEs(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_nonCriticalExtensions_55_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_60_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_55(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_60(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_55, T_nonCriticalExtensions_55_sequence);
+ ett_rrc_T_nonCriticalExtensions_60, T_nonCriticalExtensions_60_sequence);
return offset;
}
@@ -76820,7 +81712,7 @@ dissect_rrc_T_nonCriticalExtensions_55(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v590NonCriticalExtensions_10_sequence[] = {
{ &hf_rrc_measurementControlFailure_v590ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MeasurementControlFailure_v590ext_IEs },
- { &hf_rrc_nonCriticalExtensions_55, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_55 },
+ { &hf_rrc_nonCriticalExtensions_60, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_60 },
{ NULL, 0, 0, NULL }
};
@@ -76857,7 +81749,7 @@ static const per_sequence_t MeasurementControlFailure_sequence[] = {
static int
dissect_rrc_MeasurementControlFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 241 "../../asn1/rrc/rrc.cnf"
+#line 286 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "MeasurementControlFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_MeasurementControlFailure, MeasurementControlFailure_sequence);
@@ -76884,51 +81776,51 @@ dissect_rrc_CountC_SFN_Frame_difference(tvbuff_t *tvb _U_, int offset _U_, asn1_
}
-static const per_sequence_t T_fdd_136_sequence[] = {
+static const per_sequence_t T_fdd_139_sequence[] = {
{ &hf_rrc_countC_SFN_Frame_difference, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CountC_SFN_Frame_difference },
{ &hf_rrc_tm , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_38399 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_136(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_139(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_136, T_fdd_136_sequence);
+ ett_rrc_T_fdd_139, T_fdd_139_sequence);
return offset;
}
-static const per_sequence_t T_tdd_89_sequence[] = {
+static const per_sequence_t T_tdd_92_sequence[] = {
{ &hf_rrc_countC_SFN_Frame_difference, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CountC_SFN_Frame_difference },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_89(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_92(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_89, T_tdd_89_sequence);
+ ett_rrc_T_tdd_92, T_tdd_92_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_99_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_102_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_99_choice[] = {
- { 0, &hf_rrc_fdd_141 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_136 },
- { 1, &hf_rrc_tdd_96 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_89 },
+static const per_choice_t T_modeSpecificInfo_102_choice[] = {
+ { 0, &hf_rrc_fdd_144 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_139 },
+ { 1, &hf_rrc_tdd_99 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_92 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_99(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_102(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_99, T_modeSpecificInfo_99_choice,
+ ett_rrc_T_modeSpecificInfo_102, T_modeSpecificInfo_102_choice,
NULL);
return offset;
@@ -76936,7 +81828,7 @@ dissect_rrc_T_modeSpecificInfo_99(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t CellSynchronisationInfo_sequence[] = {
- { &hf_rrc_modeSpecificInfo_99, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_99 },
+ { &hf_rrc_modeSpecificInfo_102, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_102 },
{ NULL, 0, 0, NULL }
};
@@ -76949,7 +81841,7 @@ dissect_rrc_CellSynchronisationInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
-static const per_sequence_t T_fdd_127_sequence[] = {
+static const per_sequence_t T_fdd_130_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ &hf_rrc_cpich_Ec_N0_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CPICH_Ec_N0 },
{ &hf_rrc_cpich_RSCP_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CPICH_RSCP },
@@ -76958,15 +81850,15 @@ static const per_sequence_t T_fdd_127_sequence[] = {
};
static int
-dissect_rrc_T_fdd_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_130(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_127, T_fdd_127_sequence);
+ ett_rrc_T_fdd_130, T_fdd_130_sequence);
return offset;
}
-static const per_sequence_t T_tdd_80_sequence[] = {
+static const per_sequence_t T_tdd_83_sequence[] = {
{ &hf_rrc_cellParametersID, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellParametersID },
{ &hf_rrc_proposedTGSN , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TGSN },
{ &hf_rrc_primaryCCPCH_RSCP, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCCPCH_RSCP },
@@ -76976,30 +81868,30 @@ static const per_sequence_t T_tdd_80_sequence[] = {
};
static int
-dissect_rrc_T_tdd_80(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_83(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_80, T_tdd_80_sequence);
+ ett_rrc_T_tdd_83, T_tdd_83_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_90_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_93_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_90_choice[] = {
- { 0, &hf_rrc_fdd_130 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_127 },
- { 1, &hf_rrc_tdd_86 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_80 },
+static const per_choice_t T_modeSpecificInfo_93_choice[] = {
+ { 0, &hf_rrc_fdd_133 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_130 },
+ { 1, &hf_rrc_tdd_89 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_83 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_90(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_93(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_90, T_modeSpecificInfo_90_choice,
+ ett_rrc_T_modeSpecificInfo_93, T_modeSpecificInfo_93_choice,
NULL);
return offset;
@@ -77008,9 +81900,9 @@ dissect_rrc_T_modeSpecificInfo_90(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t CellMeasuredResults_sequence[] = {
{ &hf_rrc_cellIdentity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellIdentity },
- { &hf_rrc_dummy_43 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SFN_SFN_ObsTimeDifference },
+ { &hf_rrc_dummy_47 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SFN_SFN_ObsTimeDifference },
{ &hf_rrc_cellSynchronisationInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellSynchronisationInfo },
- { &hf_rrc_modeSpecificInfo_90, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_90 },
+ { &hf_rrc_modeSpecificInfo_93, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_93 },
{ NULL, 0, 0, NULL }
};
@@ -77155,7 +82047,7 @@ dissect_rrc_ObservedTimeDifferenceToGSM(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t GSM_MeasuredResults_sequence[] = {
{ &hf_rrc_gsm_CarrierRSSI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_GSM_CarrierRSSI },
- { &hf_rrc_dummy_46 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_46_173 },
+ { &hf_rrc_dummy_50 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_46_173 },
{ &hf_rrc_bsicReported , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BSICReported },
{ &hf_rrc_dummy2_11 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ObservedTimeDifferenceToGSM },
{ NULL, 0, 0, NULL }
@@ -77256,6 +82148,8 @@ static const value_string rrc_RLC_BuffersPayload_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_RLC_BuffersPayload_vals_ext = VALUE_STRING_EXT_INIT(rrc_RLC_BuffersPayload_vals);
+
static int
dissect_rrc_RLC_BuffersPayload(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -77302,6 +82196,8 @@ static const value_string rrc_AverageRLC_BufferPayload_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_AverageRLC_BufferPayload_vals_ext = VALUE_STRING_EXT_INIT(rrc_AverageRLC_BufferPayload_vals);
+
static int
dissect_rrc_AverageRLC_BufferPayload(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -77465,36 +82361,36 @@ dissect_rrc_SIR_MeasurementList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
}
-static const per_sequence_t T_tdd_98_sequence[] = {
+static const per_sequence_t T_tdd_102_sequence[] = {
{ &hf_rrc_sir_MeasurementResults, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SIR_MeasurementList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_98(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_102(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_98, T_tdd_98_sequence);
+ ett_rrc_T_tdd_102, T_tdd_102_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_114_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_120_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_114_choice[] = {
- { 0, &hf_rrc_fdd_43 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 1, &hf_rrc_tdd_106 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_98 },
+static const per_choice_t T_modeSpecificInfo_120_choice[] = {
+ { 0, &hf_rrc_fdd_44 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_tdd_110 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_102 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_114(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_120(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_114, T_modeSpecificInfo_114_choice,
+ ett_rrc_T_modeSpecificInfo_120, T_modeSpecificInfo_120_choice,
NULL);
return offset;
@@ -77503,7 +82399,7 @@ dissect_rrc_T_modeSpecificInfo_114(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t QualityMeasuredResults_sequence[] = {
{ &hf_rrc_blerMeasurementResultsList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BLER_MeasurementResultsList },
- { &hf_rrc_modeSpecificInfo_114, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_114 },
+ { &hf_rrc_modeSpecificInfo_120, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_120 },
{ NULL, 0, 0, NULL }
};
@@ -77565,16 +82461,16 @@ dissect_rrc_UE_RX_TX_ReportEntryList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_fdd_149_sequence[] = {
+static const per_sequence_t T_fdd_153_sequence[] = {
{ &hf_rrc_ue_TransmittedPowerFDD, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_TransmittedPower },
{ &hf_rrc_ue_RX_TX_ReportEntryList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_RX_TX_ReportEntryList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_149(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_153(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_149, T_fdd_149_sequence);
+ ett_rrc_T_fdd_153, T_fdd_153_sequence);
return offset;
}
@@ -77594,37 +82490,37 @@ dissect_rrc_UE_TransmittedPowerTDD_List(tvbuff_t *tvb _U_, int offset _U_, asn1_
}
-static const per_sequence_t T_tdd_100_sequence[] = {
+static const per_sequence_t T_tdd_104_sequence[] = {
{ &hf_rrc_ue_TransmittedPowerTDD_List, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_TransmittedPowerTDD_List },
{ &hf_rrc_appliedTA , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_TimingAdvance },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_100(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_104(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_100, T_tdd_100_sequence);
+ ett_rrc_T_tdd_104, T_tdd_104_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_116_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_122_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_116_choice[] = {
- { 0, &hf_rrc_fdd_155 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_149 },
- { 1, &hf_rrc_tdd_108 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_100 },
+static const per_choice_t T_modeSpecificInfo_122_choice[] = {
+ { 0, &hf_rrc_fdd_159 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_153 },
+ { 1, &hf_rrc_tdd_112 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_104 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_116(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_122(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_116, T_modeSpecificInfo_116_choice,
+ ett_rrc_T_modeSpecificInfo_122, T_modeSpecificInfo_122_choice,
NULL);
return offset;
@@ -77632,7 +82528,7 @@ dissect_rrc_T_modeSpecificInfo_116(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t UE_InternalMeasuredResults_sequence[] = {
- { &hf_rrc_modeSpecificInfo_116, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_116 },
+ { &hf_rrc_modeSpecificInfo_122, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_122 },
{ NULL, 0, 0, NULL }
};
@@ -77700,102 +82596,102 @@ dissect_rrc_UE_RX_TX_TimeDifferenceType2Info(tvbuff_t *tvb _U_, int offset _U_,
}
-static const per_sequence_t T_fdd_155_sequence[] = {
+static const per_sequence_t T_fdd_160_sequence[] = {
{ &hf_rrc_referenceCellIDentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ &hf_rrc_ue_RX_TX_TimeDifferenceType2Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_RX_TX_TimeDifferenceType2Info },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_155(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_160(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_155, T_fdd_155_sequence);
+ ett_rrc_T_fdd_160, T_fdd_160_sequence);
return offset;
}
-static const per_sequence_t T_tdd_106_sequence[] = {
+static const per_sequence_t T_tdd_111_sequence[] = {
{ &hf_rrc_referenceCellIdentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellParametersID },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_106(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_111(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_106, T_tdd_106_sequence);
+ ett_rrc_T_tdd_111, T_tdd_111_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_122_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_128_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_122_choice[] = {
- { 0, &hf_rrc_fdd_161 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_155 },
- { 1, &hf_rrc_tdd_114 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_106 },
+static const per_choice_t T_modeSpecificInfo_128_choice[] = {
+ { 0, &hf_rrc_fdd_166 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_160 },
+ { 1, &hf_rrc_tdd_119 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_111 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_122(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_122, T_modeSpecificInfo_122_choice,
+ ett_rrc_T_modeSpecificInfo_128, T_modeSpecificInfo_128_choice,
NULL);
return offset;
}
-static const per_sequence_t T_fdd_147_sequence[] = {
+static const per_sequence_t T_fdd_151_sequence[] = {
{ &hf_rrc_neighbourIdentity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCPICH_Info },
{ &hf_rrc_uE_RX_TX_TimeDifferenceType2Info, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_RX_TX_TimeDifferenceType2Info },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_147(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_151(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_147, T_fdd_147_sequence);
+ ett_rrc_T_fdd_151, T_fdd_151_sequence);
return offset;
}
-static const per_sequence_t T_tdd_97_sequence[] = {
+static const per_sequence_t T_tdd_101_sequence[] = {
{ &hf_rrc_neighbourAndChannelIdentity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellAndChannelIdentity },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_97(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_101(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_97, T_tdd_97_sequence);
+ ett_rrc_T_tdd_101, T_tdd_101_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_110_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_114_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_110_choice[] = {
- { 0, &hf_rrc_fdd_153 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_147 },
- { 1, &hf_rrc_tdd_105 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_97 },
+static const per_choice_t T_modeSpecificInfo_114_choice[] = {
+ { 0, &hf_rrc_fdd_157 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_151 },
+ { 1, &hf_rrc_tdd_109 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_101 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_110(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_114(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_110, T_modeSpecificInfo_110_choice,
+ ett_rrc_T_modeSpecificInfo_114, T_modeSpecificInfo_114_choice,
NULL);
return offset;
@@ -77803,7 +82699,7 @@ dissect_rrc_T_modeSpecificInfo_110(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t Neighbour_sequence[] = {
- { &hf_rrc_modeSpecificInfo_110, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_110 },
+ { &hf_rrc_modeSpecificInfo_114, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_114 },
{ &hf_rrc_neighbourQuality, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NeighbourQuality },
{ &hf_rrc_sfn_SFN_ObsTimeDifference2, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SFN_SFN_ObsTimeDifference2 },
{ NULL, 0, 0, NULL }
@@ -77834,7 +82730,7 @@ dissect_rrc_NeighbourList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
static const per_sequence_t UE_Positioning_OTDOA_Measurement_sequence[] = {
{ &hf_rrc_sfn , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_4095 },
- { &hf_rrc_modeSpecificInfo_122, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_122 },
+ { &hf_rrc_modeSpecificInfo_128, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_128 },
{ &hf_rrc_neighbourList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NeighbourList },
{ NULL, 0, 0, NULL }
};
@@ -77873,50 +82769,50 @@ dissect_rrc_T_ue_GPSTimingOfCell(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
}
-static const per_sequence_t T_fdd_167_sequence[] = {
+static const per_sequence_t T_fdd_172_sequence[] = {
{ &hf_rrc_referenceIdentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_167(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_172(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_167, T_fdd_167_sequence);
+ ett_rrc_T_fdd_172, T_fdd_172_sequence);
return offset;
}
-static const per_sequence_t T_tdd_118_sequence[] = {
+static const per_sequence_t T_tdd_123_sequence[] = {
{ &hf_rrc_referenceIdentity_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellParametersID },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_118(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_123(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_118, T_tdd_118_sequence);
+ ett_rrc_T_tdd_123, T_tdd_123_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_133_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_139_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_133_choice[] = {
- { 0, &hf_rrc_fdd_173 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_167 },
- { 1, &hf_rrc_tdd_126 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_118 },
+static const per_choice_t T_modeSpecificInfo_139_choice[] = {
+ { 0, &hf_rrc_fdd_178 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_172 },
+ { 1, &hf_rrc_tdd_131 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_123 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_133(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_139(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_133, T_modeSpecificInfo_133_choice,
+ ett_rrc_T_modeSpecificInfo_139, T_modeSpecificInfo_139_choice,
NULL);
return offset;
@@ -77925,7 +82821,7 @@ dissect_rrc_T_modeSpecificInfo_133(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t UTRAN_GPSReferenceTimeResult_sequence[] = {
{ &hf_rrc_ue_GPSTimingOfCell, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_ue_GPSTimingOfCell },
- { &hf_rrc_modeSpecificInfo_133, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_133 },
+ { &hf_rrc_modeSpecificInfo_139, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_139 },
{ &hf_rrc_sfn , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_4095 },
{ NULL, 0, 0, NULL }
};
@@ -77939,50 +82835,50 @@ dissect_rrc_UTRAN_GPSReferenceTimeResult(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_fdd_164_sequence[] = {
+static const per_sequence_t T_fdd_169_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_164(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_169(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_164, T_fdd_164_sequence);
+ ett_rrc_T_fdd_169, T_fdd_169_sequence);
return offset;
}
-static const per_sequence_t T_tdd_115_sequence[] = {
+static const per_sequence_t T_tdd_120_sequence[] = {
{ &hf_rrc_cellAndChannelIdentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellAndChannelIdentity },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_115(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_120(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_115, T_tdd_115_sequence);
+ ett_rrc_T_tdd_120, T_tdd_120_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_131_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_137_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_131_choice[] = {
- { 0, &hf_rrc_fdd_170 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_164 },
- { 1, &hf_rrc_tdd_123 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_115 },
+static const per_choice_t T_modeSpecificInfo_137_choice[] = {
+ { 0, &hf_rrc_fdd_175 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_169 },
+ { 1, &hf_rrc_tdd_128 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_120 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_131(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_137(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_131, T_modeSpecificInfo_131_choice,
+ ett_rrc_T_modeSpecificInfo_137, T_modeSpecificInfo_137_choice,
NULL);
return offset;
@@ -77991,7 +82887,7 @@ dissect_rrc_T_modeSpecificInfo_131(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t T_cell_Timing_sequence[] = {
{ &hf_rrc_sfn , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_4095 },
- { &hf_rrc_modeSpecificInfo_131, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_131 },
+ { &hf_rrc_modeSpecificInfo_137, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_137 },
{ NULL, 0, 0, NULL }
};
@@ -78475,8 +83371,8 @@ static const value_string rrc_CellMeasurementEventResults_vals[] = {
};
static const per_choice_t CellMeasurementEventResults_choice[] = {
- { 0, &hf_rrc_fdd_132 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_maxCellMeas_OF_PrimaryCPICH_Info },
- { 1, &hf_rrc_tdd_88 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_maxCellMeas_OF_PrimaryCCPCH_Info },
+ { 0, &hf_rrc_fdd_135 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_maxCellMeas_OF_PrimaryCPICH_Info },
+ { 1, &hf_rrc_tdd_91 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_maxCellMeas_OF_PrimaryCCPCH_Info },
{ 0, NULL, 0, NULL }
};
@@ -78755,36 +83651,36 @@ dissect_rrc_EventResults(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
}
-static const per_sequence_t T_fdd_148_sequence[] = {
+static const per_sequence_t T_fdd_152_sequence[] = {
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_FrequencyInfo },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_148(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_152(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_148, T_fdd_148_sequence);
+ ett_rrc_T_fdd_152, T_fdd_152_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_111_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_115_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_111_choice[] = {
- { 0, &hf_rrc_fdd_154 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_148 },
+static const per_choice_t T_modeSpecificInfo_115_choice[] = {
+ { 0, &hf_rrc_fdd_158 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_152 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_111(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_115(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_111, T_modeSpecificInfo_111_choice,
+ ett_rrc_T_modeSpecificInfo_115, T_modeSpecificInfo_115_choice,
NULL);
return offset;
@@ -78792,7 +83688,7 @@ dissect_rrc_T_modeSpecificInfo_111(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t Neighbour_v390ext_sequence[] = {
- { &hf_rrc_modeSpecificInfo_111, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_111 },
+ { &hf_rrc_modeSpecificInfo_115, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_115 },
{ NULL, 0, 0, NULL }
};
@@ -79030,7 +83926,7 @@ dissect_rrc_MeasuredResultsList_LCR_r4_ext(tvbuff_t *tvb _U_, int offset _U_, as
static const per_sequence_t MeasurementReport_v4b0ext_IEs_sequence[] = {
{ &hf_rrc_interFreqEventResults_LCR, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterFreqEventResults_LCR_r4_ext },
{ &hf_rrc_additionalMeasuredResults_LCR, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasuredResultsList_LCR_r4_ext },
- { &hf_rrc_dummy_07 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCPICH_Info },
+ { &hf_rrc_dummy_11 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCPICH_Info },
{ NULL, 0, 0, NULL }
};
@@ -79164,36 +84060,36 @@ dissect_rrc_T_ADVinfo_ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
}
-static const per_sequence_t T_tdd128_57_sequence[] = {
+static const per_sequence_t T_tdd128_61_sequence[] = {
{ &hf_rrc_t_ADVinfo_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_ADVinfo_ext },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_57(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_61(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_57, T_tdd128_57_sequence);
+ ett_rrc_T_tdd128_61, T_tdd128_61_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_117_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_123_vals[] = {
{ 0, "tdd384-768" },
{ 1, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_117_choice[] = {
+static const per_choice_t T_modeSpecificInfo_123_choice[] = {
{ 0, &hf_rrc_tdd384_768_03 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_768_02 },
- { 1, &hf_rrc_tdd128_60 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_57 },
+ { 1, &hf_rrc_tdd128_64 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_61 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_117(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_123(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_117, T_modeSpecificInfo_117_choice,
+ ett_rrc_T_modeSpecificInfo_123, T_modeSpecificInfo_123_choice,
NULL);
return offset;
@@ -79201,7 +84097,7 @@ dissect_rrc_T_modeSpecificInfo_117(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t UE_InternalMeasuredResults_v770ext_sequence[] = {
- { &hf_rrc_modeSpecificInfo_117, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_117 },
+ { &hf_rrc_modeSpecificInfo_123, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_123 },
{ NULL, 0, 0, NULL }
};
@@ -79239,50 +84135,50 @@ dissect_rrc_T_ue_GANSSTimingOfCellFrames(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_fdd_165_sequence[] = {
+static const per_sequence_t T_fdd_170_sequence[] = {
{ &hf_rrc_primary_CPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_165(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_170(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_165, T_fdd_165_sequence);
+ ett_rrc_T_fdd_170, T_fdd_170_sequence);
return offset;
}
-static const per_sequence_t T_tdd_116_sequence[] = {
+static const per_sequence_t T_tdd_121_sequence[] = {
{ &hf_rrc_cellParameters , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellParametersID },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_116(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_121(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_116, T_tdd_116_sequence);
+ ett_rrc_T_tdd_121, T_tdd_121_sequence);
return offset;
}
-static const value_string rrc_T_mode_01_vals[] = {
+static const value_string rrc_T_mode_02_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_mode_01_choice[] = {
- { 0, &hf_rrc_fdd_171 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_165 },
- { 1, &hf_rrc_tdd_124 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_116 },
+static const per_choice_t T_mode_02_choice[] = {
+ { 0, &hf_rrc_fdd_176 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_170 },
+ { 1, &hf_rrc_tdd_129 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_121 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_mode_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_mode_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_mode_01, T_mode_01_choice,
+ ett_rrc_T_mode_02, T_mode_02_choice,
NULL);
return offset;
@@ -79293,7 +84189,7 @@ static const per_sequence_t UTRAN_GANSSReferenceTime_sequence[] = {
{ &hf_rrc_ue_GANSSTimingOfCellFrames, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_ue_GANSSTimingOfCellFrames },
{ &hf_rrc_gANSS_TimeId , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_0_7 },
{ &hf_rrc_gANSS_TimeUncertainty, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_0_127 },
- { &hf_rrc_mode_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_mode_01 },
+ { &hf_rrc_mode_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_mode_02 },
{ &hf_rrc_referenceSfn , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_4095 },
{ NULL, 0, 0, NULL }
};
@@ -80851,7 +85747,7 @@ dissect_rrc_MeasuredResults_v920ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
-static const per_sequence_t T_fdd_128_sequence[] = {
+static const per_sequence_t T_fdd_131_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ &hf_rrc_cpich_Ec_N0_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CPICH_Ec_N0 },
{ &hf_rrc_cpich_RSCP_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CPICH_RSCP },
@@ -80861,15 +85757,15 @@ static const per_sequence_t T_fdd_128_sequence[] = {
};
static int
-dissect_rrc_T_fdd_128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_131(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_128, T_fdd_128_sequence);
+ ett_rrc_T_fdd_131, T_fdd_131_sequence);
return offset;
}
-static const per_sequence_t T_tdd_81_sequence[] = {
+static const per_sequence_t T_tdd_84_sequence[] = {
{ &hf_rrc_cellParametersID, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellParametersID },
{ &hf_rrc_proposedTGSN , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TGSN },
{ &hf_rrc_primaryCCPCH_RSCP, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCCPCH_RSCP },
@@ -80879,30 +85775,30 @@ static const per_sequence_t T_tdd_81_sequence[] = {
};
static int
-dissect_rrc_T_tdd_81(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_84(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_81, T_tdd_81_sequence);
+ ett_rrc_T_tdd_84, T_tdd_84_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_91_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_94_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_91_choice[] = {
- { 0, &hf_rrc_fdd_131 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_128 },
- { 1, &hf_rrc_tdd_87 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_81 },
+static const per_choice_t T_modeSpecificInfo_94_choice[] = {
+ { 0, &hf_rrc_fdd_134 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_131 },
+ { 1, &hf_rrc_tdd_90 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_84 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_91(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_94(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_91, T_modeSpecificInfo_91_choice,
+ ett_rrc_T_modeSpecificInfo_94, T_modeSpecificInfo_94_choice,
NULL);
return offset;
@@ -80912,7 +85808,7 @@ dissect_rrc_T_modeSpecificInfo_91(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t CellMeasuredResults_r9_sequence[] = {
{ &hf_rrc_cellIdentity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellIdentity },
{ &hf_rrc_cellSynchronisationInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellSynchronisationInfo },
- { &hf_rrc_modeSpecificInfo_91, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_91 },
+ { &hf_rrc_modeSpecificInfo_94, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_94 },
{ NULL, 0, 0, NULL }
};
@@ -81002,7 +85898,7 @@ static const value_string rrc_CellMeasurementEventResultsOnSecUlFreq_vals[] = {
};
static const per_choice_t CellMeasurementEventResultsOnSecUlFreq_choice[] = {
- { 0, &hf_rrc_fdd_133 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_maxCellMeasOnSecULFreq_OF_PrimaryCPICH_Info },
+ { 0, &hf_rrc_fdd_136 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_maxCellMeasOnSecULFreq_OF_PrimaryCPICH_Info },
{ 1, &hf_rrc_spare , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -81207,14 +86103,124 @@ dissect_rrc_MeasurementReport_v970ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn
}
-static const per_sequence_t T_nonCriticalExtensions_56_sequence[] = {
+static const value_string rrc_T_detectedSetTrigger_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_detectedSetTrigger(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t InterFreqEventResults_va40ext_sequence[] = {
+ { &hf_rrc_detectedSetTrigger, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_detectedSetTrigger },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_56(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_InterFreqEventResults_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_56, T_nonCriticalExtensions_56_sequence);
+ ett_rrc_InterFreqEventResults_va40ext, InterFreqEventResults_va40ext_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_EventResults_va40ext_vals[] = {
+ { 0, "interFreqEventResults" },
+ { 0, NULL }
+};
+
+static const per_choice_t EventResults_va40ext_choice[] = {
+ { 0, &hf_rrc_interFreqEventResults_01, ASN1_NO_EXTENSIONS , dissect_rrc_InterFreqEventResults_va40ext },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_EventResults_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_EventResults_va40ext, EventResults_va40ext_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_loggedMeasAvailable_02_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_loggedMeasAvailable_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_loggedANRResultsAvailable_01_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_loggedANRResultsAvailable_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t MeasurementReport_va40ext_IEs_sequence[] = {
+ { &hf_rrc_eventResults_03 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_EventResults_va40ext },
+ { &hf_rrc_loggedMeasAvailable_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_loggedMeasAvailable_02 },
+ { &hf_rrc_loggedANRResultsAvailable_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_loggedANRResultsAvailable_01 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_MeasurementReport_va40ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_MeasurementReport_va40ext_IEs, MeasurementReport_va40ext_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_61_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_61(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_61, T_nonCriticalExtensions_61_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtensions_04_sequence[] = {
+ { &hf_rrc_measurementReport_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MeasurementReport_va40ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_61, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_61 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtensions_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtensions_04, T_va40NonCriticalExtensions_04_sequence);
return offset;
}
@@ -81222,7 +86228,7 @@ dissect_rrc_T_nonCriticalExtensions_56(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v970NonCriticalExtensions_01_sequence[] = {
{ &hf_rrc_measurementReport_v970ext_IE, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MeasurementReport_v970ext_IEs },
- { &hf_rrc_nonCriticalExtensions_56, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_56 },
+ { &hf_rrc_va40NonCriticalExtensions_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtensions_04 },
{ NULL, 0, 0, NULL }
};
@@ -81382,7 +86388,7 @@ static const per_sequence_t MeasurementReport_sequence[] = {
static int
dissect_rrc_MeasurementReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 245 "../../asn1/rrc/rrc.cnf"
+#line 290 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "MeasurementReport");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_MeasurementReport, MeasurementReport_sequence);
@@ -81424,14 +86430,14 @@ dissect_rrc_PhysicalChannelReconfigurationComplete_v770ext_IEs(tvbuff_t *tvb _U_
}
-static const per_sequence_t T_nonCriticalExtensions_66_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_72_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_66(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_72(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_66, T_nonCriticalExtensions_66_sequence);
+ ett_rrc_T_nonCriticalExtensions_72, T_nonCriticalExtensions_72_sequence);
return offset;
}
@@ -81439,7 +86445,7 @@ dissect_rrc_T_nonCriticalExtensions_66(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v770NonCriticalExtensions_08_sequence[] = {
{ &hf_rrc_physicalChannelReconfigurationComplete_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PhysicalChannelReconfigurationComplete_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_66, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_66 },
+ { &hf_rrc_nonCriticalExtensions_72, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_72 },
{ NULL, 0, 0, NULL }
};
@@ -81472,7 +86478,7 @@ static const per_sequence_t PhysicalChannelReconfigurationComplete_sequence[] =
{ &hf_rrc_ul_IntegProtActivationInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntegrityProtActivationInfo },
{ &hf_rrc_ul_TimingAdvance, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_TimingAdvance },
{ &hf_rrc_count_C_ActivationTime, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ActivationTime },
- { &hf_rrc_dummy_08 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_ActivationTimeInfoList },
+ { &hf_rrc_dummy_12 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_ActivationTimeInfoList },
{ &hf_rrc_ul_CounterSynchronisationInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CounterSynchronisationInfo },
{ &hf_rrc_laterNonCriticalExtensions_24, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_laterNonCriticalExtensions_24 },
{ NULL, 0, 0, NULL }
@@ -81480,7 +86486,7 @@ static const per_sequence_t PhysicalChannelReconfigurationComplete_sequence[] =
static int
dissect_rrc_PhysicalChannelReconfigurationComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 261 "../../asn1/rrc/rrc.cnf"
+#line 306 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "PhysicalChannelReconfigurationComplete");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_PhysicalChannelReconfigurationComplete, PhysicalChannelReconfigurationComplete_sequence);
@@ -81492,14 +86498,14 @@ dissect_rrc_PhysicalChannelReconfigurationComplete(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_nonCriticalExtensions_67_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_73_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_67(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_73(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_67, T_nonCriticalExtensions_67_sequence);
+ ett_rrc_T_nonCriticalExtensions_73, T_nonCriticalExtensions_73_sequence);
return offset;
}
@@ -81507,7 +86513,7 @@ dissect_rrc_T_nonCriticalExtensions_67(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_laterNonCriticalExtensions_25_sequence[] = {
{ &hf_rrc_physicalChannelReconfigurationFailure_r3_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_67, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_67 },
+ { &hf_rrc_nonCriticalExtensions_73, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_73 },
{ NULL, 0, 0, NULL }
};
@@ -81529,7 +86535,7 @@ static const per_sequence_t PhysicalChannelReconfigurationFailure_sequence[] = {
static int
dissect_rrc_PhysicalChannelReconfigurationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 265 "../../asn1/rrc/rrc.cnf"
+#line 310 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "PhysicalChannelReconfigurationFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_PhysicalChannelReconfigurationFailure, PhysicalChannelReconfigurationFailure_sequence);
@@ -81571,14 +86577,14 @@ dissect_rrc_RadioBearerReconfigurationComplete_v770ext_IEs(tvbuff_t *tvb _U_, in
}
-static const per_sequence_t T_nonCriticalExtensions_78_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_85_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_78(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_85(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_78, T_nonCriticalExtensions_78_sequence);
+ ett_rrc_T_nonCriticalExtensions_85, T_nonCriticalExtensions_85_sequence);
return offset;
}
@@ -81586,7 +86592,7 @@ dissect_rrc_T_nonCriticalExtensions_78(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v770NonCriticalExtensions_14_sequence[] = {
{ &hf_rrc_radioBearerReconfigurationComplete_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerReconfigurationComplete_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_78, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_78 },
+ { &hf_rrc_nonCriticalExtensions_85, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_85 },
{ NULL, 0, 0, NULL }
};
@@ -81619,7 +86625,7 @@ static const per_sequence_t RadioBearerReconfigurationComplete_sequence[] = {
{ &hf_rrc_ul_IntegProtActivationInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntegrityProtActivationInfo },
{ &hf_rrc_ul_TimingAdvance, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_TimingAdvance },
{ &hf_rrc_count_C_ActivationTime, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ActivationTime },
- { &hf_rrc_dummy_08 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_ActivationTimeInfoList },
+ { &hf_rrc_dummy_12 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_ActivationTimeInfoList },
{ &hf_rrc_ul_CounterSynchronisationInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CounterSynchronisationInfo },
{ &hf_rrc_laterNonCriticalExtensions_29, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_laterNonCriticalExtensions_29 },
{ NULL, 0, 0, NULL }
@@ -81627,7 +86633,7 @@ static const per_sequence_t RadioBearerReconfigurationComplete_sequence[] = {
static int
dissect_rrc_RadioBearerReconfigurationComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 281 "../../asn1/rrc/rrc.cnf"
+#line 326 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReconfigurationComplete");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_RadioBearerReconfigurationComplete, RadioBearerReconfigurationComplete_sequence);
@@ -81653,14 +86659,14 @@ dissect_rrc_RB_IdentityList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_nonCriticalExtensions_79_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_86_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_79(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_86(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_79, T_nonCriticalExtensions_79_sequence);
+ ett_rrc_T_nonCriticalExtensions_86, T_nonCriticalExtensions_86_sequence);
return offset;
}
@@ -81668,7 +86674,7 @@ dissect_rrc_T_nonCriticalExtensions_79(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_laterNonCriticalExtensions_30_sequence[] = {
{ &hf_rrc_radioBearerReconfigurationFailure_r3_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_79, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_79 },
+ { &hf_rrc_nonCriticalExtensions_86, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_86 },
{ NULL, 0, 0, NULL }
};
@@ -81691,7 +86697,7 @@ static const per_sequence_t RadioBearerReconfigurationFailure_sequence[] = {
static int
dissect_rrc_RadioBearerReconfigurationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 285 "../../asn1/rrc/rrc.cnf"
+#line 330 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReconfigurationFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_RadioBearerReconfigurationFailure, RadioBearerReconfigurationFailure_sequence);
@@ -81733,14 +86739,14 @@ dissect_rrc_RadioBearerReleaseComplete_v770ext_IEs(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_nonCriticalExtensions_87_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_95_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_87(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_95(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_87, T_nonCriticalExtensions_87_sequence);
+ ett_rrc_T_nonCriticalExtensions_95, T_nonCriticalExtensions_95_sequence);
return offset;
}
@@ -81748,7 +86754,7 @@ dissect_rrc_T_nonCriticalExtensions_87(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v770NonCriticalExtensions_19_sequence[] = {
{ &hf_rrc_radioBearerReleaseComplete_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerReleaseComplete_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_87, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_87 },
+ { &hf_rrc_nonCriticalExtensions_95, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_95 },
{ NULL, 0, 0, NULL }
};
@@ -81781,7 +86787,7 @@ static const per_sequence_t RadioBearerReleaseComplete_sequence[] = {
{ &hf_rrc_ul_IntegProtActivationInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntegrityProtActivationInfo },
{ &hf_rrc_ul_TimingAdvance, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_TimingAdvance },
{ &hf_rrc_count_C_ActivationTime, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ActivationTime },
- { &hf_rrc_dummy_08 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_ActivationTimeInfoList },
+ { &hf_rrc_dummy_12 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_ActivationTimeInfoList },
{ &hf_rrc_ul_CounterSynchronisationInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CounterSynchronisationInfo },
{ &hf_rrc_laterNonCriticalExtensions_32, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_laterNonCriticalExtensions_32 },
{ NULL, 0, 0, NULL }
@@ -81789,7 +86795,7 @@ static const per_sequence_t RadioBearerReleaseComplete_sequence[] = {
static int
dissect_rrc_RadioBearerReleaseComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 293 "../../asn1/rrc/rrc.cnf"
+#line 338 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReleaseComplete");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_RadioBearerReleaseComplete, RadioBearerReleaseComplete_sequence);
@@ -81801,14 +86807,14 @@ dissect_rrc_RadioBearerReleaseComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_c
}
-static const per_sequence_t T_nonCriticalExtensions_88_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_96_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_88(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_96(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_88, T_nonCriticalExtensions_88_sequence);
+ ett_rrc_T_nonCriticalExtensions_96, T_nonCriticalExtensions_96_sequence);
return offset;
}
@@ -81816,7 +86822,7 @@ dissect_rrc_T_nonCriticalExtensions_88(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_laterNonCriticalExtensions_33_sequence[] = {
{ &hf_rrc_radioBearerReleaseFailure_r3_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_88, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_88 },
+ { &hf_rrc_nonCriticalExtensions_96, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_96 },
{ NULL, 0, 0, NULL }
};
@@ -81839,7 +86845,7 @@ static const per_sequence_t RadioBearerReleaseFailure_sequence[] = {
static int
dissect_rrc_RadioBearerReleaseFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 297 "../../asn1/rrc/rrc.cnf"
+#line 342 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReleaseFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_RadioBearerReleaseFailure, RadioBearerReleaseFailure_sequence);
@@ -81881,14 +86887,14 @@ dissect_rrc_RadioBearerSetupComplete_v770ext_IEs(tvbuff_t *tvb _U_, int offset _
}
-static const per_sequence_t T_nonCriticalExtensions_97_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_106_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_97(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_106(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_97, T_nonCriticalExtensions_97_sequence);
+ ett_rrc_T_nonCriticalExtensions_106, T_nonCriticalExtensions_106_sequence);
return offset;
}
@@ -81896,7 +86902,7 @@ dissect_rrc_T_nonCriticalExtensions_97(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v770NonCriticalExtensions_20_sequence[] = {
{ &hf_rrc_radioBearerSetupComplete_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerSetupComplete_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_97, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_97 },
+ { &hf_rrc_nonCriticalExtensions_106, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_106 },
{ NULL, 0, 0, NULL }
};
@@ -81930,7 +86936,7 @@ static const per_sequence_t RadioBearerSetupComplete_sequence[] = {
{ &hf_rrc_ul_TimingAdvance, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_TimingAdvance },
{ &hf_rrc_start_Value , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_START_Value },
{ &hf_rrc_count_C_ActivationTime, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ActivationTime },
- { &hf_rrc_dummy_08 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_ActivationTimeInfoList },
+ { &hf_rrc_dummy_12 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_ActivationTimeInfoList },
{ &hf_rrc_ul_CounterSynchronisationInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CounterSynchronisationInfo },
{ &hf_rrc_laterNonCriticalExtensions_35, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_laterNonCriticalExtensions_35 },
{ NULL, 0, 0, NULL }
@@ -81938,7 +86944,7 @@ static const per_sequence_t RadioBearerSetupComplete_sequence[] = {
static int
dissect_rrc_RadioBearerSetupComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 305 "../../asn1/rrc/rrc.cnf"
+#line 350 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerSetupComplete");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_RadioBearerSetupComplete, RadioBearerSetupComplete_sequence);
@@ -81950,14 +86956,14 @@ dissect_rrc_RadioBearerSetupComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_nonCriticalExtensions_98_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_107_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_98(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_107(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_98, T_nonCriticalExtensions_98_sequence);
+ ett_rrc_T_nonCriticalExtensions_107, T_nonCriticalExtensions_107_sequence);
return offset;
}
@@ -81965,7 +86971,7 @@ dissect_rrc_T_nonCriticalExtensions_98(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_laterNonCriticalExtensions_36_sequence[] = {
{ &hf_rrc_radioBearerSetupFailure_r3_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_98, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_98 },
+ { &hf_rrc_nonCriticalExtensions_107, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_107 },
{ NULL, 0, 0, NULL }
};
@@ -81988,7 +86994,7 @@ static const per_sequence_t RadioBearerSetupFailure_sequence[] = {
static int
dissect_rrc_RadioBearerSetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 309 "../../asn1/rrc/rrc.cnf"
+#line 354 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerSetupFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_RadioBearerSetupFailure, RadioBearerSetupFailure_sequence);
@@ -82000,14 +87006,14 @@ dissect_rrc_RadioBearerSetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
-static const per_sequence_t T_nonCriticalExtensions_105_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_114_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_105(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_114(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_105, T_nonCriticalExtensions_105_sequence);
+ ett_rrc_T_nonCriticalExtensions_114, T_nonCriticalExtensions_114_sequence);
return offset;
}
@@ -82015,7 +87021,7 @@ dissect_rrc_T_nonCriticalExtensions_105(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_laterNonCriticalExtensions_40_sequence[] = {
{ &hf_rrc_rrcConnectionReleaseComplete_r3_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_105, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_105 },
+ { &hf_rrc_nonCriticalExtensions_114, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_114 },
{ NULL, 0, 0, NULL }
};
@@ -82037,7 +87043,7 @@ static const per_sequence_t RRCConnectionReleaseComplete_sequence[] = {
static int
dissect_rrc_RRCConnectionReleaseComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 325 "../../asn1/rrc/rrc.cnf"
+#line 370 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionReleaseComplete");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_RRCConnectionReleaseComplete, RRCConnectionReleaseComplete_sequence);
@@ -82364,36 +87370,36 @@ dissect_rrc_MaxSimultaneousTransChsUL(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
}
-static const per_sequence_t T_tdd_09_sequence[] = {
+static const per_sequence_t T_tdd_11_sequence[] = {
{ &hf_rrc_maxSimultaneousCCTrCH_Count, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MaxSimultaneousCCTrCH_Count },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_09, T_tdd_09_sequence);
+ ett_rrc_T_tdd_11, T_tdd_11_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_15_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_17_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_15_choice[] = {
- { 0, &hf_rrc_fdd_43 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 1, &hf_rrc_tdd_10 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_09 },
+static const per_choice_t T_modeSpecificInfo_17_choice[] = {
+ { 0, &hf_rrc_fdd_44 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_tdd_12 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_11 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_15, T_modeSpecificInfo_15_choice,
+ ett_rrc_T_modeSpecificInfo_17, T_modeSpecificInfo_17_choice,
NULL);
return offset;
@@ -82455,7 +87461,7 @@ static const per_sequence_t UL_TransChCapability_sequence[] = {
{ &hf_rrc_maxConvCodeBitsTransmitted, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MaxNoBits },
{ &hf_rrc_turboEncodingSupport, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TurboSupport },
{ &hf_rrc_maxSimultaneousTransChs_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MaxSimultaneousTransChsUL },
- { &hf_rrc_modeSpecificInfo_15, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_15 },
+ { &hf_rrc_modeSpecificInfo_17, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_17 },
{ &hf_rrc_maxTransmittedBlocks, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MaxTransportBlocksUL },
{ &hf_rrc_maxNumberOfTFC_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MaxNumberOfTFC_UL },
{ &hf_rrc_maxNumberOfTF , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MaxNumberOfTF },
@@ -82682,7 +87688,7 @@ static const per_sequence_t DL_PhysChCapabilityFDD_sequence[] = {
{ &hf_rrc_maxNoDPCH_PDSCH_Codes, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_1_8 },
{ &hf_rrc_maxNoPhysChBitsReceived, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MaxNoPhysChBitsReceived },
{ &hf_rrc_supportForSF_512, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
- { &hf_rrc_dummy_23 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
+ { &hf_rrc_dummy_27 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_dummy2_04 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SimultaneousSCCPCH_DPCH_Reception },
{ NULL, 0, 0, NULL }
};
@@ -82722,7 +87728,7 @@ dissect_rrc_MaxNoDPDCH_BitsTransmitted(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t UL_PhysChCapabilityFDD_sequence[] = {
{ &hf_rrc_maxNoDPDCH_BitsTransmitted, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MaxNoDPDCH_BitsTransmitted },
- { &hf_rrc_dummy_23 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
+ { &hf_rrc_dummy_27 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ NULL, 0, 0, NULL }
};
@@ -83029,14 +88035,14 @@ dissect_rrc_MeasurementCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t UE_RadioAccessCapability_sequence[] = {
{ &hf_rrc_pdcp_Capability_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PDCP_Capability },
- { &hf_rrc_rlc_Capability_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RLC_Capability },
+ { &hf_rrc_rlc_Capability_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RLC_Capability },
{ &hf_rrc_transportChannelCapability, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TransportChannelCapability },
{ &hf_rrc_rf_Capability_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RF_Capability },
- { &hf_rrc_physicalChannelCapability_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PhysicalChannelCapability },
+ { &hf_rrc_physicalChannelCapability_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PhysicalChannelCapability },
{ &hf_rrc_ue_MultiModeRAT_Capability, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_MultiModeRAT_Capability },
{ &hf_rrc_securityCapability, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SecurityCapability },
{ &hf_rrc_ue_positioning_Capability, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_Capability },
- { &hf_rrc_measurementCapability_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementCapability },
+ { &hf_rrc_measurementCapability_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementCapability },
{ NULL, 0, 0, NULL }
};
@@ -83052,7 +88058,7 @@ dissect_rrc_UE_RadioAccessCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
static int
dissect_rrc_GSM_Classmark2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 487 "../../asn1/rrc/rrc.cnf"
+#line 540 "../../asn1/rrc/rrc.cnf"
tvbuff_t *parameter_tvb=NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -83071,7 +88077,7 @@ tvbuff_t *parameter_tvb=NULL;
static int
dissect_rrc_GSM_Classmark3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 495 "../../asn1/rrc/rrc.cnf"
+#line 548 "../../asn1/rrc/rrc.cnf"
tvbuff_t *parameter_tvb=NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -83196,16 +88202,16 @@ dissect_rrc_UE_PowerClassExt(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_fddRF_Capability_02_sequence[] = {
+static const per_sequence_t T_fddRF_Capability_03_sequence[] = {
{ &hf_rrc_ue_PowerClass_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_PowerClassExt },
{ &hf_rrc_txRxFrequencySeparation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TxRxFrequencySeparation },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fddRF_Capability_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fddRF_Capability_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fddRF_Capability_02, T_fddRF_Capability_02_sequence);
+ ett_rrc_T_fddRF_Capability_03, T_fddRF_Capability_03_sequence);
return offset;
}
@@ -83383,8 +88389,8 @@ dissect_rrc_MeasurementCapabilityExt(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
static const per_sequence_t UE_RadioAccessCapabBandFDD_sequence[] = {
{ &hf_rrc_radioFrequencyBandFDD, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioFrequencyBandFDD },
- { &hf_rrc_fddRF_Capability_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_fddRF_Capability_02 },
- { &hf_rrc_measurementCapability_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MeasurementCapabilityExt },
+ { &hf_rrc_fddRF_Capability_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_fddRF_Capability_03 },
+ { &hf_rrc_measurementCapability_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MeasurementCapabilityExt },
{ NULL, 0, 0, NULL }
};
@@ -83483,7 +88489,7 @@ dissect_rrc_SupportOfDedicatedPilotsForChEstimation(tvbuff_t *tvb _U_, int offse
static const per_sequence_t DL_PhysChCapabilityFDD_v380ext_sequence[] = {
- { &hf_rrc_dummy_24 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SupportOfDedicatedPilotsForChEstimation },
+ { &hf_rrc_dummy_28 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SupportOfDedicatedPilotsForChEstimation },
{ NULL, 0, 0, NULL }
};
@@ -83802,8 +88808,8 @@ dissect_rrc_UL_PhysChCapabilityTDD_LCR_r4(tvbuff_t *tvb _U_, int offset _U_, asn
static const per_sequence_t T_tdd128_PhysChCapability_sequence[] = {
- { &hf_rrc_downlinkPhysChCapability_09, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_PhysChCapabilityTDD_LCR_r4 },
- { &hf_rrc_uplinkPhysChCapability_08, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_PhysChCapabilityTDD_LCR_r4 },
+ { &hf_rrc_downlinkPhysChCapability_11, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_PhysChCapabilityTDD_LCR_r4 },
+ { &hf_rrc_uplinkPhysChCapability_09, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_PhysChCapabilityTDD_LCR_r4 },
{ NULL, 0, 0, NULL }
};
@@ -83882,7 +88888,7 @@ static const value_string rrc_AccessStratumReleaseIndicator_vals[] = {
{ 3, "rel-7" },
{ 4, "rel-8" },
{ 5, "rel-9" },
- { 6, "spare10" },
+ { 6, "rel-10" },
{ 7, "spare9" },
{ 8, "spare8" },
{ 9, "spare7" },
@@ -84030,7 +89036,7 @@ dissect_rrc_HSDSCH_physical_layer_category(tvbuff_t *tvb _U_, int offset _U_, as
static const per_sequence_t T_supported_01_sequence[] = {
{ &hf_rrc_hsdsch_physical_layer_category, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HSDSCH_physical_layer_category },
- { &hf_rrc_dummy_23 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
+ { &hf_rrc_dummy_27 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_dummy2_05 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ NULL, 0, 0, NULL }
};
@@ -84144,7 +89150,7 @@ static const per_sequence_t UE_RadioAccessCapability_v590ext_sequence[] = {
{ &hf_rrc_dl_CapabilityWithSimultaneousHS_DSCHConfig, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CapabilityWithSimultaneousHS_DSCHConfig },
{ &hf_rrc_pdcp_Capability_r5_ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PDCP_Capability_r5_ext },
{ &hf_rrc_rlc_Capability_r5_ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RLC_Capability_r5_ext },
- { &hf_rrc_physicalChannelCapability_05, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PhysicalChannelCapability_hspdsch_r5 },
+ { &hf_rrc_physicalChannelCapability_06, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PhysicalChannelCapability_hspdsch_r5 },
{ &hf_rrc_multiModeRAT_Capability_v590ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MultiModeRAT_Capability_v590ext },
{ NULL, 0, 0, NULL }
};
@@ -84307,14 +89313,74 @@ dissect_rrc_RRCConnectionSetupComplete_v770ext_IEs(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_nonCriticalExtensions_114_sequence[] = {
+static const value_string rrc_T_loggedMeasAvailable_03_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_loggedMeasAvailable_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_loggedANRResultsAvailable_02_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_loggedANRResultsAvailable_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t RRCConnectionSetupComplete_va40ext_IEs_sequence[] = {
+ { &hf_rrc_loggedMeasAvailable_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_loggedMeasAvailable_03 },
+ { &hf_rrc_loggedANRResultsAvailable_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_loggedANRResultsAvailable_02 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_114(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_RRCConnectionSetupComplete_va40ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_114, T_nonCriticalExtensions_114_sequence);
+ ett_rrc_RRCConnectionSetupComplete_va40ext_IEs, RRCConnectionSetupComplete_va40ext_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_124_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_124(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_124, T_nonCriticalExtensions_124_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtensions_11_sequence[] = {
+ { &hf_rrc_rrcConectionSetupComplete_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionSetupComplete_va40ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_124, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_124 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtensions_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtensions_11, T_va40NonCriticalExtensions_11_sequence);
return offset;
}
@@ -84322,7 +89388,7 @@ dissect_rrc_T_nonCriticalExtensions_114(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v770NonCriticalExtensions_24_sequence[] = {
{ &hf_rrc_rrcConectionSetupComplete_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionSetupComplete_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_114, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_114 },
+ { &hf_rrc_va40NonCriticalExtensions_12, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtensions_11 },
{ NULL, 0, 0, NULL }
};
@@ -84481,7 +89547,7 @@ static const per_sequence_t RRCConnectionSetupComplete_sequence[] = {
static int
dissect_rrc_RRCConnectionSetupComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 337 "../../asn1/rrc/rrc.cnf"
+#line 382 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionSetupComplete");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_RRCConnectionSetupComplete, RRCConnectionSetupComplete_sequence);
@@ -84529,6 +89595,8 @@ static const value_string rrc_ReceivedMessageType_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_ReceivedMessageType_vals_ext = VALUE_STRING_EXT_INIT(rrc_ReceivedMessageType_vals);
+
static int
dissect_rrc_ReceivedMessageType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -84624,14 +89692,14 @@ dissect_rrc_ProtocolErrorMoreInformation(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_nonCriticalExtensions_117_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_127_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_117(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_117, T_nonCriticalExtensions_117_sequence);
+ ett_rrc_T_nonCriticalExtensions_127, T_nonCriticalExtensions_127_sequence);
return offset;
}
@@ -84639,7 +89707,7 @@ dissect_rrc_T_nonCriticalExtensions_117(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_laterNonCriticalExtensions_44_sequence[] = {
{ &hf_rrc_rrcStatus_r3_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_117, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_117 },
+ { &hf_rrc_nonCriticalExtensions_127, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_127 },
{ NULL, 0, 0, NULL }
};
@@ -84660,7 +89728,7 @@ static const per_sequence_t RRCStatus_sequence[] = {
static int
dissect_rrc_RRCStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 341 "../../asn1/rrc/rrc.cnf"
+#line 386 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCStatus");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_RRCStatus, RRCStatus_sequence);
@@ -84672,14 +89740,14 @@ dissect_rrc_RRCStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p
}
-static const per_sequence_t T_nonCriticalExtensions_120_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_130_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_120(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_130(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_120, T_nonCriticalExtensions_120_sequence);
+ ett_rrc_T_nonCriticalExtensions_130, T_nonCriticalExtensions_130_sequence);
return offset;
}
@@ -84687,7 +89755,7 @@ dissect_rrc_T_nonCriticalExtensions_120(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_laterNonCriticalExtensions_46_sequence[] = {
{ &hf_rrc_securityModeComplete_r3_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_120, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_120 },
+ { &hf_rrc_nonCriticalExtensions_130, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_130 },
{ NULL, 0, 0, NULL }
};
@@ -84710,7 +89778,7 @@ static const per_sequence_t SecurityModeComplete_sequence[] = {
static int
dissect_rrc_SecurityModeComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 349 "../../asn1/rrc/rrc.cnf"
+#line 394 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeComplete");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_SecurityModeComplete, SecurityModeComplete_sequence);
@@ -84722,14 +89790,14 @@ dissect_rrc_SecurityModeComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
}
-static const per_sequence_t T_nonCriticalExtensions_121_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_131_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_121(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_131(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_121, T_nonCriticalExtensions_121_sequence);
+ ett_rrc_T_nonCriticalExtensions_131, T_nonCriticalExtensions_131_sequence);
return offset;
}
@@ -84737,7 +89805,7 @@ dissect_rrc_T_nonCriticalExtensions_121(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_laterNonCriticalExtensions_47_sequence[] = {
{ &hf_rrc_securityModeFailure_r3_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_121, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_121 },
+ { &hf_rrc_nonCriticalExtensions_131, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_131 },
{ NULL, 0, 0, NULL }
};
@@ -84759,7 +89827,7 @@ static const per_sequence_t SecurityModeFailure_sequence[] = {
static int
dissect_rrc_SecurityModeFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 353 "../../asn1/rrc/rrc.cnf"
+#line 398 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_SecurityModeFailure, SecurityModeFailure_sequence);
@@ -84801,14 +89869,14 @@ dissect_rrc_SignallingConnectionReleaseIndication_v860ext(tvbuff_t *tvb _U_, int
}
-static const per_sequence_t T_nonCriticalExtensions_123_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_133_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_123(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_133(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_123, T_nonCriticalExtensions_123_sequence);
+ ett_rrc_T_nonCriticalExtensions_133, T_nonCriticalExtensions_133_sequence);
return offset;
}
@@ -84816,7 +89884,7 @@ dissect_rrc_T_nonCriticalExtensions_123(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860nonCriticalExtentions_sequence[] = {
{ &hf_rrc_signallingConnectionReleaseIndication_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SignallingConnectionReleaseIndication_v860ext },
- { &hf_rrc_nonCriticalExtensions_123, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_123 },
+ { &hf_rrc_nonCriticalExtensions_133, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_133 },
{ NULL, 0, 0, NULL }
};
@@ -84852,7 +89920,7 @@ static const per_sequence_t SignallingConnectionReleaseIndication_sequence[] = {
static int
dissect_rrc_SignallingConnectionReleaseIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 361 "../../asn1/rrc/rrc.cnf"
+#line 406 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "SignallingConnectionReleaseIndication");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_SignallingConnectionReleaseIndication, SignallingConnectionReleaseIndication_sequence);
@@ -84894,14 +89962,14 @@ dissect_rrc_TransportChannelReconfigurationComplete_v770ext_IEs(tvbuff_t *tvb _U
}
-static const per_sequence_t T_nonCriticalExtensions_132_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_143_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_132(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_143(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_132, T_nonCriticalExtensions_132_sequence);
+ ett_rrc_T_nonCriticalExtensions_143, T_nonCriticalExtensions_143_sequence);
return offset;
}
@@ -84909,7 +89977,7 @@ dissect_rrc_T_nonCriticalExtensions_132(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v770NonCriticalExtensions_29_sequence[] = {
{ &hf_rrc_transportChannelReconfigurationComplete_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TransportChannelReconfigurationComplete_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_132, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_132 },
+ { &hf_rrc_nonCriticalExtensions_143, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_143 },
{ NULL, 0, 0, NULL }
};
@@ -84942,7 +90010,7 @@ static const per_sequence_t TransportChannelReconfigurationComplete_sequence[] =
{ &hf_rrc_ul_IntegProtActivationInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntegrityProtActivationInfo },
{ &hf_rrc_ul_TimingAdvance, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_TimingAdvance },
{ &hf_rrc_count_C_ActivationTime, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ActivationTime },
- { &hf_rrc_dummy_08 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_ActivationTimeInfoList },
+ { &hf_rrc_dummy_12 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_ActivationTimeInfoList },
{ &hf_rrc_ul_CounterSynchronisationInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CounterSynchronisationInfo },
{ &hf_rrc_laterNonCriticalExtensions_52, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_laterNonCriticalExtensions_52 },
{ NULL, 0, 0, NULL }
@@ -84950,7 +90018,7 @@ static const per_sequence_t TransportChannelReconfigurationComplete_sequence[] =
static int
dissect_rrc_TransportChannelReconfigurationComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 381 "../../asn1/rrc/rrc.cnf"
+#line 426 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportChannelReconfigurationComplete");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_TransportChannelReconfigurationComplete, TransportChannelReconfigurationComplete_sequence);
@@ -84962,14 +90030,14 @@ dissect_rrc_TransportChannelReconfigurationComplete(tvbuff_t *tvb _U_, int offse
}
-static const per_sequence_t T_nonCriticalExtensions_133_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_144_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_133(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_144(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_133, T_nonCriticalExtensions_133_sequence);
+ ett_rrc_T_nonCriticalExtensions_144, T_nonCriticalExtensions_144_sequence);
return offset;
}
@@ -84977,7 +90045,7 @@ dissect_rrc_T_nonCriticalExtensions_133(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_laterNonCriticalExtensions_53_sequence[] = {
{ &hf_rrc_transportChannelReconfigurationFailure_r3_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_133, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_133 },
+ { &hf_rrc_nonCriticalExtensions_144, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_144 },
{ NULL, 0, 0, NULL }
};
@@ -84999,7 +90067,7 @@ static const per_sequence_t TransportChannelReconfigurationFailure_sequence[] =
static int
dissect_rrc_TransportChannelReconfigurationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 385 "../../asn1/rrc/rrc.cnf"
+#line 430 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportChannelReconfigurationFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_TransportChannelReconfigurationFailure, TransportChannelReconfigurationFailure_sequence);
@@ -85011,14 +90079,14 @@ dissect_rrc_TransportChannelReconfigurationFailure(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_nonCriticalExtensions_135_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_146_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_135(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_146(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_135, T_nonCriticalExtensions_135_sequence);
+ ett_rrc_T_nonCriticalExtensions_146, T_nonCriticalExtensions_146_sequence);
return offset;
}
@@ -85026,7 +90094,7 @@ dissect_rrc_T_nonCriticalExtensions_135(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_laterNonCriticalExtensions_55_sequence[] = {
{ &hf_rrc_transportFormatCombinationControlFailure_r3_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_135, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_135 },
+ { &hf_rrc_nonCriticalExtensions_146, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_146 },
{ NULL, 0, 0, NULL }
};
@@ -85048,7 +90116,7 @@ static const per_sequence_t TransportFormatCombinationControlFailure_sequence[]
static int
dissect_rrc_TransportFormatCombinationControlFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 393 "../../asn1/rrc/rrc.cnf"
+#line 438 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportFormatCombinationControlFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_TransportFormatCombinationControlFailure, TransportFormatCombinationControlFailure_sequence);
@@ -85181,14 +90249,14 @@ dissect_rrc_UECapabilityInformation_v690ext_IEs(tvbuff_t *tvb _U_, int offset _U
}
-static const per_sequence_t T_nonCriticalExtensions_137_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_148_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_137(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_148(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_137, T_nonCriticalExtensions_137_sequence);
+ ett_rrc_T_nonCriticalExtensions_148, T_nonCriticalExtensions_148_sequence);
return offset;
}
@@ -85196,7 +90264,7 @@ dissect_rrc_T_nonCriticalExtensions_137(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v690NonCriticalExtensions_39_sequence[] = {
{ &hf_rrc_ueCapabilityInformation_v690ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UECapabilityInformation_v690ext_IEs },
- { &hf_rrc_nonCriticalExtensions_137, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_137 },
+ { &hf_rrc_nonCriticalExtensions_148, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_148 },
{ NULL, 0, 0, NULL }
};
@@ -85324,7 +90392,7 @@ static const per_sequence_t UECapabilityInformation_sequence[] = {
static int
dissect_rrc_UECapabilityInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 401 "../../asn1/rrc/rrc.cnf"
+#line 446 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "UECapabilityInformation");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_UECapabilityInformation, UECapabilityInformation_sequence);
@@ -85393,14 +90461,14 @@ dissect_rrc_UplinkDirectTransfer_v7g0ext_IEs(tvbuff_t *tvb _U_, int offset _U_,
}
-static const per_sequence_t T_nonCriticalExtensions_140_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_151_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_140(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_151(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_140, T_nonCriticalExtensions_140_sequence);
+ ett_rrc_T_nonCriticalExtensions_151, T_nonCriticalExtensions_151_sequence);
return offset;
}
@@ -85408,7 +90476,7 @@ dissect_rrc_T_nonCriticalExtensions_140(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v7g0NonCriticalExtensions_17_sequence[] = {
{ &hf_rrc_uplinkDirectTransfer_v7g0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UplinkDirectTransfer_v7g0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_140, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_140 },
+ { &hf_rrc_nonCriticalExtensions_151, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_151 },
{ NULL, 0, 0, NULL }
};
@@ -85461,7 +90529,7 @@ static const per_sequence_t UplinkDirectTransfer_sequence[] = {
static int
dissect_rrc_UplinkDirectTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 409 "../../asn1/rrc/rrc.cnf"
+#line 462 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "UplinkDirectTransfer");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_UplinkDirectTransfer, UplinkDirectTransfer_sequence);
@@ -85502,14 +90570,58 @@ dissect_rrc_UTRANMobilityInformationConfirm_v770ext_IEs(tvbuff_t *tvb _U_, int o
}
-static const per_sequence_t T_nonCriticalExtensions_154_sequence[] = {
+static const value_string rrc_T_loggedMeasAvailable_05_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_loggedMeasAvailable_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t UTRANMobilityInformationConfirm_va40ext_IEs_sequence[] = {
+ { &hf_rrc_loggedMeasAvailable_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_loggedMeasAvailable_05 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_154(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_UTRANMobilityInformationConfirm_va40ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_154, T_nonCriticalExtensions_154_sequence);
+ ett_rrc_UTRANMobilityInformationConfirm_va40ext_IEs, UTRANMobilityInformationConfirm_va40ext_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_165_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_165(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_165, T_nonCriticalExtensions_165_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtensions_16_sequence[] = {
+ { &hf_rrc_utranMobilityInformationConfirm_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UTRANMobilityInformationConfirm_va40ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_165, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_165 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtensions_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtensions_16, T_va40NonCriticalExtensions_16_sequence);
return offset;
}
@@ -85517,7 +90629,7 @@ dissect_rrc_T_nonCriticalExtensions_154(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v770NonCriticalExtension_01_sequence[] = {
{ &hf_rrc_utranMobilityInformationConfirm_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UTRANMobilityInformationConfirm_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_154, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_154 },
+ { &hf_rrc_va40NonCriticalExtensions_17, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtensions_16 },
{ NULL, 0, 0, NULL }
};
@@ -85549,7 +90661,7 @@ static const per_sequence_t UTRANMobilityInformationConfirm_sequence[] = {
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
{ &hf_rrc_ul_IntegProtActivationInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_IntegrityProtActivationInfo },
{ &hf_rrc_count_C_ActivationTime, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ActivationTime },
- { &hf_rrc_dummy_08 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_ActivationTimeInfoList },
+ { &hf_rrc_dummy_12 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_ActivationTimeInfoList },
{ &hf_rrc_ul_CounterSynchronisationInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CounterSynchronisationInfo },
{ &hf_rrc_laterNonCriticalExtensions_65, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_laterNonCriticalExtensions_65 },
{ NULL, 0, 0, NULL }
@@ -85557,7 +90669,7 @@ static const per_sequence_t UTRANMobilityInformationConfirm_sequence[] = {
static int
dissect_rrc_UTRANMobilityInformationConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 433 "../../asn1/rrc/rrc.cnf"
+#line 486 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "UTRANMobilityInformationConfirm");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_UTRANMobilityInformationConfirm, UTRANMobilityInformationConfirm_sequence);
@@ -85569,14 +90681,14 @@ dissect_rrc_UTRANMobilityInformationConfirm(tvbuff_t *tvb _U_, int offset _U_, a
}
-static const per_sequence_t T_nonCriticalExtensions_155_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_166_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_155(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_166(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_155, T_nonCriticalExtensions_155_sequence);
+ ett_rrc_T_nonCriticalExtensions_166, T_nonCriticalExtensions_166_sequence);
return offset;
}
@@ -85584,7 +90696,7 @@ dissect_rrc_T_nonCriticalExtensions_155(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_laterNonCriticalExtensions_66_sequence[] = {
{ &hf_rrc_utranMobilityInformationFailure_r3_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_155, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_155 },
+ { &hf_rrc_nonCriticalExtensions_166, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_166 },
{ NULL, 0, 0, NULL }
};
@@ -85606,7 +90718,7 @@ static const per_sequence_t UTRANMobilityInformationFailure_sequence[] = {
static int
dissect_rrc_UTRANMobilityInformationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 437 "../../asn1/rrc/rrc.cnf"
+#line 490 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "UTRANMobilityInformationFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_UTRANMobilityInformationFailure, UTRANMobilityInformationFailure_sequence);
@@ -85711,14 +90823,14 @@ dissect_rrc_MBMSModificationRequest_v6f0ext_IEs(tvbuff_t *tvb _U_, int offset _U
}
-static const per_sequence_t T_nonCriticalExtensions_160_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_171_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_160(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_171(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_160, T_nonCriticalExtensions_160_sequence);
+ ett_rrc_T_nonCriticalExtensions_171, T_nonCriticalExtensions_171_sequence);
return offset;
}
@@ -85726,7 +90838,7 @@ dissect_rrc_T_nonCriticalExtensions_160(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v6f0NonCriticalExtensions_02_sequence[] = {
{ &hf_rrc_mbmsModificationRequest_v6f0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MBMSModificationRequest_v6f0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_160, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_160 },
+ { &hf_rrc_nonCriticalExtensions_171, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_171 },
{ NULL, 0, 0, NULL }
};
@@ -85763,7 +90875,7 @@ static const per_sequence_t MBMSModificationRequest_sequence[] = {
static int
dissect_rrc_MBMSModificationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 217 "../../asn1/rrc/rrc.cnf"
+#line 262 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSModificationRequest");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_MBMSModificationRequest, MBMSModificationRequest_sequence);
@@ -85775,6 +90887,677 @@ dissect_rrc_MBMSModificationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
+
+static int
+dissect_rrc_INTEGER_0_7200(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 7200U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedMeasServingCellMeas_FDD_sequence[] = {
+ { &hf_rrc_cellIdentity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellIdentity },
+ { &hf_rrc_cpich_RSCP_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CPICH_RSCP },
+ { &hf_rrc_cpich_Ec_N0_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CPICH_Ec_N0 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_LoggedMeasServingCellMeas_FDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedMeasServingCellMeas_FDD, LoggedMeasServingCellMeas_FDD_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedMeasNeighbourInfo_FDD_sequence[] = {
+ { &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
+ { &hf_rrc_cpich_RSCP_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CPICH_RSCP },
+ { &hf_rrc_cpich_Ec_N0_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CPICH_Ec_N0 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_LoggedMeasNeighbourInfo_FDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedMeasNeighbourInfo_FDD, LoggedMeasNeighbourInfo_FDD_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedMeasIntrafreqNeighbourList_FDD_sequence_of[1] = {
+ { &hf_rrc_LoggedMeasIntrafreqNeighbourList_FDD_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_LoggedMeasNeighbourInfo_FDD },
+};
+
+static int
+dissect_rrc_LoggedMeasIntrafreqNeighbourList_FDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedMeasIntrafreqNeighbourList_FDD, LoggedMeasIntrafreqNeighbourList_FDD_sequence_of,
+ 1, maxnumLoggedMeas, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxnumLoggedMeas_OF_LoggedMeasNeighbourInfo_FDD_sequence_of[1] = {
+ { &hf_rrc_loggedMeasInterfreqNeighbourList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_LoggedMeasNeighbourInfo_FDD },
+};
+
+static int
+dissect_rrc_SEQUENCE_SIZE_1_maxnumLoggedMeas_OF_LoggedMeasNeighbourInfo_FDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_SEQUENCE_SIZE_1_maxnumLoggedMeas_OF_LoggedMeasNeighbourInfo_FDD, SEQUENCE_SIZE_1_maxnumLoggedMeas_OF_LoggedMeasNeighbourInfo_FDD_sequence_of,
+ 1, maxnumLoggedMeas, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedMeasInterfreqInfo_FDD_sequence[] = {
+ { &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_FrequencyInfo },
+ { &hf_rrc_loggedMeasInterfreqNeighbourList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SEQUENCE_SIZE_1_maxnumLoggedMeas_OF_LoggedMeasNeighbourInfo_FDD },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_LoggedMeasInterfreqInfo_FDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedMeasInterfreqInfo_FDD, LoggedMeasInterfreqInfo_FDD_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedMeasInterfreqList_FDD_sequence_of[1] = {
+ { &hf_rrc_LoggedMeasInterfreqList_FDD_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_LoggedMeasInterfreqInfo_FDD },
+};
+
+static int
+dissect_rrc_LoggedMeasInterfreqList_FDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedMeasInterfreqList_FDD, LoggedMeasInterfreqList_FDD_sequence_of,
+ 1, maxNumFDDFreqs, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedMeasEUTRAFreqNeighbourInfo_sequence[] = {
+ { &hf_rrc_physicalCellIdentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_EUTRA_PhysicalCellIdentity },
+ { &hf_rrc_rSRP , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_97 },
+ { &hf_rrc_rSRQ , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_33 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_LoggedMeasEUTRAFreqNeighbourInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedMeasEUTRAFreqNeighbourInfo, LoggedMeasEUTRAFreqNeighbourInfo_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxnumLoggedMeas_OF_LoggedMeasEUTRAFreqNeighbourInfo_sequence_of[1] = {
+ { &hf_rrc_loggedMeasEUTRAFreqNeighbourInfoList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_LoggedMeasEUTRAFreqNeighbourInfo },
+};
+
+static int
+dissect_rrc_SEQUENCE_SIZE_1_maxnumLoggedMeas_OF_LoggedMeasEUTRAFreqNeighbourInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_SEQUENCE_SIZE_1_maxnumLoggedMeas_OF_LoggedMeasEUTRAFreqNeighbourInfo, SEQUENCE_SIZE_1_maxnumLoggedMeas_OF_LoggedMeasEUTRAFreqNeighbourInfo_sequence_of,
+ 1, maxnumLoggedMeas, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedMeasEUTRAFreqInfo_sequence[] = {
+ { &hf_rrc_earfcn , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_EARFCN },
+ { &hf_rrc_loggedMeasEUTRAFreqNeighbourInfoList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SEQUENCE_SIZE_1_maxnumLoggedMeas_OF_LoggedMeasEUTRAFreqNeighbourInfo },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_LoggedMeasEUTRAFreqInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedMeasEUTRAFreqInfo, LoggedMeasEUTRAFreqInfo_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedMeasEUTRAFreqList_sequence_of[1] = {
+ { &hf_rrc_LoggedMeasEUTRAFreqList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_LoggedMeasEUTRAFreqInfo },
+};
+
+static int
+dissect_rrc_LoggedMeasEUTRAFreqList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedMeasEUTRAFreqList, LoggedMeasEUTRAFreqList_sequence_of,
+ 1, maxNumEUTRAFreqs, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedMeasGSMNeighbourCellsinfo_sequence[] = {
+ { &hf_rrc_bsic , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BSIC },
+ { &hf_rrc_frequency_band , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_Frequency_Band },
+ { &hf_rrc_bcch_ARFCN , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BCCH_ARFCN },
+ { &hf_rrc_gsm_CarrierRSSI , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_GSM_CarrierRSSI },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_LoggedMeasGSMNeighbourCellsinfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedMeasGSMNeighbourCellsinfo, LoggedMeasGSMNeighbourCellsinfo_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedMeasGSMNeighbourCellsList_sequence_of[1] = {
+ { &hf_rrc_LoggedMeasGSMNeighbourCellsList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_LoggedMeasGSMNeighbourCellsinfo },
+};
+
+static int
+dissect_rrc_LoggedMeasGSMNeighbourCellsList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedMeasGSMNeighbourCellsList, LoggedMeasGSMNeighbourCellsList_sequence_of,
+ 1, maxnumLoggedMeas, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedMeasInterRATNeighbourMeas_sequence[] = {
+ { &hf_rrc_loggedMeasEUTRAFreqList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_LoggedMeasEUTRAFreqList },
+ { &hf_rrc_loggedMeasGSMNeighbourCellsList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_LoggedMeasGSMNeighbourCellsList },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_LoggedMeasInterRATNeighbourMeas(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedMeasInterRATNeighbourMeas, LoggedMeasInterRATNeighbourMeas_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_LoggedMeasLocationInfo_vals[] = {
+ { 0, "ellipsoidPoint" },
+ { 1, "ellipsoidPointAltitude" },
+ { 0, NULL }
+};
+
+static const per_choice_t LoggedMeasLocationInfo_choice[] = {
+ { 0, &hf_rrc_ellipsoidPoint , ASN1_NO_EXTENSIONS , dissect_rrc_EllipsoidPoint },
+ { 1, &hf_rrc_ellipsoidPointAltitude, ASN1_NO_EXTENSIONS , dissect_rrc_EllipsoidPointAltitude },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_LoggedMeasLocationInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedMeasLocationInfo, LoggedMeasLocationInfo_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedMeasInfo_FDD_sequence[] = {
+ { &hf_rrc_relativeTimeStamp, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_7200 },
+ { &hf_rrc_loggedMeasServingCellMeas, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_LoggedMeasServingCellMeas_FDD },
+ { &hf_rrc_loggedMeasIntrafreqNeighbourList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_LoggedMeasIntrafreqNeighbourList_FDD },
+ { &hf_rrc_loggedMeasInterfreqList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_LoggedMeasInterfreqList_FDD },
+ { &hf_rrc_loggedMeasInterRATNeighbourMeas, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_LoggedMeasInterRATNeighbourMeas },
+ { &hf_rrc_loggedMeasLocationInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_LoggedMeasLocationInfo },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_LoggedMeasInfo_FDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedMeasInfo_FDD, LoggedMeasInfo_FDD_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedMeasInfoList_FDD_sequence_of[1] = {
+ { &hf_rrc_LoggedMeasInfoList_FDD_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_LoggedMeasInfo_FDD },
+};
+
+static int
+dissect_rrc_LoggedMeasInfoList_FDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedMeasInfoList_FDD, LoggedMeasInfoList_FDD_sequence_of,
+ 1, maxLoggedMeasReport, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_fdd_148_sequence[] = {
+ { &hf_rrc_loggedMeasInfoList_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_LoggedMeasInfoList_FDD },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_fdd_148(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_fdd_148, T_fdd_148_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedMeasServingCellMeas_TDD128_sequence[] = {
+ { &hf_rrc_cellIdentity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellIdentity },
+ { &hf_rrc_primaryCCPCH_RSCP, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCCPCH_RSCP },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_LoggedMeasServingCellMeas_TDD128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedMeasServingCellMeas_TDD128, LoggedMeasServingCellMeas_TDD128_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedMeasNeighbourMeas_TDD128_sequence[] = {
+ { &hf_rrc_cellParametersID, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellParametersID },
+ { &hf_rrc_primaryCCPCH_RSCP, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCCPCH_RSCP },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_LoggedMeasNeighbourMeas_TDD128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedMeasNeighbourMeas_TDD128, LoggedMeasNeighbourMeas_TDD128_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedMeasIntrafreqNeighbourMeasList_TDD128_sequence_of[1] = {
+ { &hf_rrc_LoggedMeasIntrafreqNeighbourMeasList_TDD128_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_LoggedMeasNeighbourMeas_TDD128 },
+};
+
+static int
+dissect_rrc_LoggedMeasIntrafreqNeighbourMeasList_TDD128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedMeasIntrafreqNeighbourMeasList_TDD128, LoggedMeasIntrafreqNeighbourMeasList_TDD128_sequence_of,
+ 1, maxnumLoggedMeas, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedMeasInterfreqNeighbourList_TDD128_sequence_of[1] = {
+ { &hf_rrc_LoggedMeasInterfreqNeighbourList_TDD128_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_LoggedMeasNeighbourMeas_TDD128 },
+};
+
+static int
+dissect_rrc_LoggedMeasInterfreqNeighbourList_TDD128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedMeasInterfreqNeighbourList_TDD128, LoggedMeasInterfreqNeighbourList_TDD128_sequence_of,
+ 1, maxnumLoggedMeas, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedMeasInterfreqInfo_TDD128_sequence[] = {
+ { &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_FrequencyInfo },
+ { &hf_rrc_loggedMeasInterfreqNeighbourList_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_LoggedMeasInterfreqNeighbourList_TDD128 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_LoggedMeasInterfreqInfo_TDD128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedMeasInterfreqInfo_TDD128, LoggedMeasInterfreqInfo_TDD128_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedMeasInterfreqList_TDD128_sequence_of[1] = {
+ { &hf_rrc_LoggedMeasInterfreqList_TDD128_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_LoggedMeasInterfreqInfo_TDD128 },
+};
+
+static int
+dissect_rrc_LoggedMeasInterfreqList_TDD128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedMeasInterfreqList_TDD128, LoggedMeasInterfreqList_TDD128_sequence_of,
+ 1, maxNumTDDFreqs, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedMeasInfo_TDD128_sequence[] = {
+ { &hf_rrc_relativeTimeStamp, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_7200 },
+ { &hf_rrc_loggedMeasServingCellMeas_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_LoggedMeasServingCellMeas_TDD128 },
+ { &hf_rrc_loggedMeasIntrafreqNeighbourList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_LoggedMeasIntrafreqNeighbourMeasList_TDD128 },
+ { &hf_rrc_loggedMeasInterfreqList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_LoggedMeasInterfreqList_TDD128 },
+ { &hf_rrc_loggedMeasInterRATNeighbourMeas, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_LoggedMeasInterRATNeighbourMeas },
+ { &hf_rrc_loggedMeasLocationInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_LoggedMeasLocationInfo },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_LoggedMeasInfo_TDD128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedMeasInfo_TDD128, LoggedMeasInfo_TDD128_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedMeasInfoList_TDD128_sequence_of[1] = {
+ { &hf_rrc_LoggedMeasInfoList_TDD128_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_LoggedMeasInfo_TDD128 },
+};
+
+static int
+dissect_rrc_LoggedMeasInfoList_TDD128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedMeasInfoList_TDD128, LoggedMeasInfoList_TDD128_sequence_of,
+ 1, maxLoggedMeasReport, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_tdd_98_sequence[] = {
+ { &hf_rrc_loggedMeasInfoList_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_LoggedMeasInfoList_TDD128 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_tdd_98(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_tdd_98, T_tdd_98_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_modeSpecificInfo_111_vals[] = {
+ { 0, "fdd" },
+ { 1, "tdd" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_modeSpecificInfo_111_choice[] = {
+ { 0, &hf_rrc_fdd_154 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_148 },
+ { 1, &hf_rrc_tdd_106 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_98 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_modeSpecificInfo_111(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_modeSpecificInfo_111, T_modeSpecificInfo_111_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedMeasInfoList_sequence[] = {
+ { &hf_rrc_modeSpecificInfo_111, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_111 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_LoggedMeasInfoList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedMeasInfoList, LoggedMeasInfoList_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_loggedMeasAvailable_06_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_loggedMeasAvailable_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedMeasReport_sequence[] = {
+ { &hf_rrc_absoluteTimeInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BIT_STRING_SIZE_48 },
+ { &hf_rrc_traceReference , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TraceReference },
+ { &hf_rrc_traceRecordingSession, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TraceRecordingSession },
+ { &hf_rrc_tce_Id , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TCE_Id },
+ { &hf_rrc_loggedMeasInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_LoggedMeasInfoList },
+ { &hf_rrc_loggedMeasAvailable_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_loggedMeasAvailable_06 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_LoggedMeasReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedMeasReport, LoggedMeasReport_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedUTRACellInfo_sequence[] = {
+ { &hf_rrc_plmn_Identity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PLMN_Identity },
+ { &hf_rrc_cellIdentity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellIdentity },
+ { &hf_rrc_uarfcn , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UARFCN },
+ { &hf_rrc_cellParametersID, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellParametersID },
+ { &hf_rrc_primaryScramblingCode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryScramblingCode },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_LoggedUTRACellInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedUTRACellInfo, LoggedUTRACellInfo_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedEUTRACellInfo_sequence[] = {
+ { &hf_rrc_plmn_Identity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PLMN_Identity },
+ { &hf_rrc_trackingAreaCode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BIT_STRING_SIZE_16 },
+ { &hf_rrc_eutraCellIdentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BIT_STRING_SIZE_28 },
+ { &hf_rrc_earfcn , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_EARFCN },
+ { &hf_rrc_physicalCellIdentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_EUTRA_PhysicalCellIdentity },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_LoggedEUTRACellInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedEUTRACellInfo, LoggedEUTRACellInfo_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedGSMCellInfo_sequence[] = {
+ { &hf_rrc_plmn_Identity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PLMN_Identity },
+ { &hf_rrc_lac , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BIT_STRING_SIZE_16 },
+ { &hf_rrc_gsmCellIdentity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BIT_STRING_SIZE_16 },
+ { &hf_rrc_bcch_ARFCN , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BCCH_ARFCN },
+ { &hf_rrc_bandIndicator_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_Frequency_Band },
+ { &hf_rrc_bsic , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BSIC },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_LoggedGSMCellInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedGSMCellInfo, LoggedGSMCellInfo_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_LoggedCellInfo_vals[] = {
+ { 0, "loggedUTRACellInfo" },
+ { 1, "loggedEUTRACellInfo" },
+ { 2, "loggedGSMCellInfo" },
+ { 0, NULL }
+};
+
+static const per_choice_t LoggedCellInfo_choice[] = {
+ { 0, &hf_rrc_loggedUTRACellInfo, ASN1_NO_EXTENSIONS , dissect_rrc_LoggedUTRACellInfo },
+ { 1, &hf_rrc_loggedEUTRACellInfo, ASN1_NO_EXTENSIONS , dissect_rrc_LoggedEUTRACellInfo },
+ { 2, &hf_rrc_loggedGSMCellInfo, ASN1_NO_EXTENSIONS , dissect_rrc_LoggedGSMCellInfo },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_LoggedCellInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedCellInfo, LoggedCellInfo_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedANRReportInfo_sequence[] = {
+ { &hf_rrc_plmn_Identity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PLMN_Identity },
+ { &hf_rrc_servingCell , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellIdentity },
+ { &hf_rrc_loggedCellInfo , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_LoggedCellInfo },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_LoggedANRReportInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedANRReportInfo, LoggedANRReportInfo_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t LoggedANRReportInfoList_sequence_of[1] = {
+ { &hf_rrc_LoggedANRReportInfoList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_LoggedANRReportInfo },
+};
+
+static int
+dissect_rrc_LoggedANRReportInfoList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_LoggedANRReportInfoList, LoggedANRReportInfoList_sequence_of,
+ 1, maxNumANRLoggedItems, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_178_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_178(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_178, T_nonCriticalExtensions_178_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t UEInformationResponse_sequence[] = {
+ { &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
+ { &hf_rrc_loggedMeasReport, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_LoggedMeasReport },
+ { &hf_rrc_loggedANRReportInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_LoggedANRReportInfoList },
+ { &hf_rrc_nonCriticalExtensions_178, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_178 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UEInformationResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 458 "../../asn1/rrc/rrc.cnf"
+ col_append_str(actx->pinfo->cinfo, COL_INFO, "UEInformationResponse");
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UEInformationResponse, UEInformationResponse_sequence);
+
+
+
+
+ return offset;
+}
+
+
+static const value_string rrc_UL_DCCH_MessageType_ext_vals[] = {
+ { 0, "ueInformationResponse" },
+ { 1, "spare15" },
+ { 2, "spare14" },
+ { 3, "spare13" },
+ { 4, "spare12" },
+ { 5, "spare11" },
+ { 6, "spare10" },
+ { 7, "spare9" },
+ { 8, "spare8" },
+ { 9, "spare7" },
+ { 10, "spare6" },
+ { 11, "spare5" },
+ { 12, "spare4" },
+ { 13, "spare3" },
+ { 14, "spare2" },
+ { 15, "spare1" },
+ { 0, NULL }
+};
+
+static const per_choice_t UL_DCCH_MessageType_ext_choice[] = {
+ { 0, &hf_rrc_ueInformationResponse, ASN1_NO_EXTENSIONS , dissect_rrc_UEInformationResponse },
+ { 1, &hf_rrc_spare15 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 2, &hf_rrc_spare14 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 3, &hf_rrc_spare13 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 4, &hf_rrc_spare12 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 5, &hf_rrc_spare11 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 6, &hf_rrc_spare10 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 7, &hf_rrc_spare9 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 8, &hf_rrc_spare8 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 9, &hf_rrc_spare7 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 10, &hf_rrc_spare6 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 11, &hf_rrc_spare5 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 12, &hf_rrc_spare4 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 13, &hf_rrc_spare3 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 14, &hf_rrc_spare2 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 15, &hf_rrc_spare1 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_UL_DCCH_MessageType_ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UL_DCCH_MessageType_ext, UL_DCCH_MessageType_ext_choice,
+ NULL);
+
+ return offset;
+}
+
+
static const value_string rrc_UL_DCCH_MessageType_vals[] = {
{ 0, "activeSetUpdateComplete" },
{ 1, "activeSetUpdateFailure" },
@@ -85807,10 +91590,12 @@ static const value_string rrc_UL_DCCH_MessageType_vals[] = {
{ 28, "utranMobilityInformationConfirm" },
{ 29, "utranMobilityInformationFailure" },
{ 30, "mbmsModificationRequest" },
- { 31, "spare1" },
+ { 31, "ul-DCCH-MessageType-ext" },
{ 0, NULL }
};
+static value_string_ext rrc_UL_DCCH_MessageType_vals_ext = VALUE_STRING_EXT_INIT(rrc_UL_DCCH_MessageType_vals);
+
static const per_choice_t UL_DCCH_MessageType_choice[] = {
{ 0, &hf_rrc_activeSetUpdateComplete, ASN1_NO_EXTENSIONS , dissect_rrc_ActiveSetUpdateComplete },
{ 1, &hf_rrc_activeSetUpdateFailure, ASN1_NO_EXTENSIONS , dissect_rrc_ActiveSetUpdateFailure },
@@ -85843,7 +91628,7 @@ static const per_choice_t UL_DCCH_MessageType_choice[] = {
{ 28, &hf_rrc_utranMobilityInformationConfirm, ASN1_NO_EXTENSIONS , dissect_rrc_UTRANMobilityInformationConfirm },
{ 29, &hf_rrc_utranMobilityInformationFailure, ASN1_NO_EXTENSIONS , dissect_rrc_UTRANMobilityInformationFailure },
{ 30, &hf_rrc_mbmsModificationRequest, ASN1_NO_EXTENSIONS , dissect_rrc_MBMSModificationRequest },
- { 31, &hf_rrc_spare1 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 31, &hf_rrc_ul_DCCH_MessageType_ext, ASN1_NO_EXTENSIONS , dissect_rrc_UL_DCCH_MessageType_ext },
{ 0, NULL, 0, NULL }
};
@@ -85872,14 +91657,14 @@ dissect_rrc_UL_DCCH_Message(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_nonCriticalExtensions_20_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_22_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_22(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_20, T_nonCriticalExtensions_20_sequence);
+ ett_rrc_T_nonCriticalExtensions_22, T_nonCriticalExtensions_22_sequence);
return offset;
}
@@ -85887,7 +91672,7 @@ dissect_rrc_T_nonCriticalExtensions_20(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v690NonCriticalExtensions_05_sequence[] = {
{ &hf_rrc_cellUpdateConfirm_v690ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellUpdateConfirm_v690ext_IEs },
- { &hf_rrc_nonCriticalExtensions_20, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_20 },
+ { &hf_rrc_nonCriticalExtensions_22, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_22 },
{ NULL, 0, 0, NULL }
};
@@ -85976,14 +91761,14 @@ dissect_rrc_T_r3_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_nonCriticalExtensions_21_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_23_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_23(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_21, T_nonCriticalExtensions_21_sequence);
+ ett_rrc_T_nonCriticalExtensions_23, T_nonCriticalExtensions_23_sequence);
return offset;
}
@@ -85991,7 +91776,7 @@ dissect_rrc_T_nonCriticalExtensions_21(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v690NonCriticalExtensions_06_sequence[] = {
{ &hf_rrc_cellUpdateConfirm_v690ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellUpdateConfirm_v690ext_IEs },
- { &hf_rrc_nonCriticalExtensions_21, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_21 },
+ { &hf_rrc_nonCriticalExtensions_23, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_23 },
{ NULL, 0, 0, NULL }
};
@@ -86064,14 +91849,14 @@ dissect_rrc_T_r4_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_nonCriticalExtensions_22_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_24_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_22(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_22, T_nonCriticalExtensions_22_sequence);
+ ett_rrc_T_nonCriticalExtensions_24, T_nonCriticalExtensions_24_sequence);
return offset;
}
@@ -86079,7 +91864,7 @@ dissect_rrc_T_nonCriticalExtensions_22(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v690NonCriticalExtensions_07_sequence[] = {
{ &hf_rrc_cellUpdateConfirm_v690ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellUpdateConfirm_v690ext_IEs },
- { &hf_rrc_nonCriticalExtensions_22, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_22 },
+ { &hf_rrc_nonCriticalExtensions_24, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_24 },
{ NULL, 0, 0, NULL }
};
@@ -86123,14 +91908,14 @@ dissect_rrc_T_r5_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_nonCriticalExtensions_23_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_25_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_23(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_25(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_23, T_nonCriticalExtensions_23_sequence);
+ ett_rrc_T_nonCriticalExtensions_25, T_nonCriticalExtensions_25_sequence);
return offset;
}
@@ -86138,7 +91923,7 @@ dissect_rrc_T_nonCriticalExtensions_23(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v6b0NonCriticalExtensions_03_sequence[] = {
{ &hf_rrc_cellUpdateConfirm_v6b0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellUpdateConfirm_v6b0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_23, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_23 },
+ { &hf_rrc_nonCriticalExtensions_25, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_25 },
{ NULL, 0, 0, NULL }
};
@@ -86177,14 +91962,14 @@ dissect_rrc_T_cellUpdateConfirm_r7_add_ext_01(tvbuff_t *tvb _U_, int offset _U_,
}
-static const per_sequence_t T_nonCriticalExtensions_24_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_26_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_26(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_24, T_nonCriticalExtensions_24_sequence);
+ ett_rrc_T_nonCriticalExtensions_26, T_nonCriticalExtensions_26_sequence);
return offset;
}
@@ -86192,7 +91977,7 @@ dissect_rrc_T_nonCriticalExtensions_24(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v860NonCriticalExtensions_02_sequence[] = {
{ &hf_rrc_cellUpdateConfirm_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellUpdateConfirm_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_24, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_24 },
+ { &hf_rrc_nonCriticalExtensions_26, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_26 },
{ NULL, 0, 0, NULL }
};
@@ -86236,14 +92021,14 @@ dissect_rrc_T_r7_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_nonCriticalExtensions_25_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_27_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_25(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_27(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_25, T_nonCriticalExtensions_25_sequence);
+ ett_rrc_T_nonCriticalExtensions_27, T_nonCriticalExtensions_27_sequence);
return offset;
}
@@ -86251,7 +92036,7 @@ dissect_rrc_T_nonCriticalExtensions_25(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v7g0NonCriticalExtensions_05_sequence[] = {
{ &hf_rrc_cellUpdateConfirm_v7g0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellUpdateConfirm_v7g0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_25, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_25 },
+ { &hf_rrc_nonCriticalExtensions_27, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_27 },
{ NULL, 0, 0, NULL }
};
@@ -86340,14 +92125,14 @@ dissect_rrc_T_r8_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_nonCriticalExtensions_26_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_28_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_26(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_28(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_26, T_nonCriticalExtensions_26_sequence);
+ ett_rrc_T_nonCriticalExtensions_28, T_nonCriticalExtensions_28_sequence);
return offset;
}
@@ -86356,7 +92141,7 @@ dissect_rrc_T_nonCriticalExtensions_26(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_r9_02_sequence[] = {
{ &hf_rrc_cellUpdateConfirm_r9, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellUpdateConfirm_r9_IEs },
{ &hf_rrc_cellUpdateConfirm_r9_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_26, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_26 },
+ { &hf_rrc_nonCriticalExtensions_28, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_28 },
{ NULL, 0, 0, NULL }
};
@@ -86369,145 +92154,196 @@ dissect_rrc_T_r9_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_21_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_29_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_29(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_21, T_criticalExtensions_21_sequence);
+ ett_rrc_T_nonCriticalExtensions_29, T_nonCriticalExtensions_29_sequence);
return offset;
}
-static const value_string rrc_T_criticalExtensions_20_vals[] = {
+static const per_sequence_t T_r10_02_sequence[] = {
+ { &hf_rrc_cellUpdateConfirm_r10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellUpdateConfirm_r10_IEs },
+ { &hf_rrc_cellUpdateConfirm_r10_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
+ { &hf_rrc_nonCriticalExtensions_29, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_29 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_r10_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_r10_02, T_r10_02_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_criticalExtensions_24_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_24, T_criticalExtensions_24_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_criticalExtensions_23_vals[] = {
+ { 0, "r10" },
+ { 1, "criticalExtensions" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_criticalExtensions_23_choice[] = {
+ { 0, &hf_rrc_r10_02 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r10_02 },
+ { 1, &hf_rrc_criticalExtensions_24, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_24 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_23(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_23, T_criticalExtensions_23_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_criticalExtensions_22_vals[] = {
{ 0, "r9" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_20_choice[] = {
+static const per_choice_t T_criticalExtensions_22_choice[] = {
{ 0, &hf_rrc_r9_02 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r9_02 },
- { 1, &hf_rrc_criticalExtensions_21, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_21 },
+ { 1, &hf_rrc_criticalExtensions_23, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_23 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_22(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_20, T_criticalExtensions_20_choice,
+ ett_rrc_T_criticalExtensions_22, T_criticalExtensions_22_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_19_vals[] = {
+static const value_string rrc_T_criticalExtensions_21_vals[] = {
{ 0, "r8" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_19_choice[] = {
+static const per_choice_t T_criticalExtensions_21_choice[] = {
{ 0, &hf_rrc_r8_02 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r8_02 },
- { 1, &hf_rrc_criticalExtensions_20, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_20 },
+ { 1, &hf_rrc_criticalExtensions_22, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_22 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_19, T_criticalExtensions_19_choice,
+ ett_rrc_T_criticalExtensions_21, T_criticalExtensions_21_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_18_vals[] = {
+static const value_string rrc_T_criticalExtensions_20_vals[] = {
{ 0, "r7" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_18_choice[] = {
+static const per_choice_t T_criticalExtensions_20_choice[] = {
{ 0, &hf_rrc_r7_02 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r7_02 },
- { 1, &hf_rrc_criticalExtensions_19, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_19 },
+ { 1, &hf_rrc_criticalExtensions_21, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_21 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_18, T_criticalExtensions_18_choice,
+ ett_rrc_T_criticalExtensions_20, T_criticalExtensions_20_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_17_vals[] = {
+static const value_string rrc_T_criticalExtensions_19_vals[] = {
{ 0, "r6" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_17_choice[] = {
+static const per_choice_t T_criticalExtensions_19_choice[] = {
{ 0, &hf_rrc_r6_02 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r6_02 },
- { 1, &hf_rrc_criticalExtensions_18, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_18 },
+ { 1, &hf_rrc_criticalExtensions_20, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_20 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_17, T_criticalExtensions_17_choice,
+ ett_rrc_T_criticalExtensions_19, T_criticalExtensions_19_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_16_vals[] = {
+static const value_string rrc_T_criticalExtensions_18_vals[] = {
{ 0, "r5" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_16_choice[] = {
+static const per_choice_t T_criticalExtensions_18_choice[] = {
{ 0, &hf_rrc_r5_01 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r5_01 },
- { 1, &hf_rrc_criticalExtensions_17, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_17 },
+ { 1, &hf_rrc_criticalExtensions_19, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_19 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_16, T_criticalExtensions_16_choice,
+ ett_rrc_T_criticalExtensions_18, T_criticalExtensions_18_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_15_vals[] = {
+static const value_string rrc_T_criticalExtensions_17_vals[] = {
{ 0, "r4" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_15_choice[] = {
+static const per_choice_t T_criticalExtensions_17_choice[] = {
{ 0, &hf_rrc_r4_01 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r4_01 },
- { 1, &hf_rrc_criticalExtensions_16, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_16 },
+ { 1, &hf_rrc_criticalExtensions_18, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_18 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_15, T_criticalExtensions_15_choice,
+ ett_rrc_T_criticalExtensions_17, T_criticalExtensions_17_choice,
NULL);
return offset;
@@ -86517,7 +92353,7 @@ dissect_rrc_T_criticalExtensions_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_later_than_r3_04_sequence[] = {
{ &hf_rrc_u_RNTI , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_U_RNTI },
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_15, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_15 },
+ { &hf_rrc_criticalExtensions_17, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_17 },
{ NULL, 0, 0, NULL }
};
@@ -86544,7 +92380,7 @@ static const per_choice_t CellUpdateConfirm_CCCH_choice[] = {
static int
dissect_rrc_CellUpdateConfirm_CCCH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 153 "../../asn1/rrc/rrc.cnf"
+#line 190 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "CellUpdateConfirm-CCCH");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_CellUpdateConfirm_CCCH, CellUpdateConfirm_CCCH_choice,
@@ -86581,21 +92417,6 @@ dissect_rrc_TMSI_GSM_MAP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
}
-static const per_sequence_t LAI_sequence[] = {
- { &hf_rrc_plmn_Identity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PLMN_Identity },
- { &hf_rrc_lac , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BIT_STRING_SIZE_16 },
- { NULL, 0, 0, NULL }
-};
-
-static int
-dissect_rrc_LAI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_LAI, LAI_sequence);
-
- return offset;
-}
-
-
static const per_sequence_t TMSI_and_LAI_GSM_MAP_sequence[] = {
{ &hf_rrc_tmsi , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TMSI_GSM_MAP },
{ &hf_rrc_lai , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_LAI },
@@ -86611,31 +92432,6 @@ dissect_rrc_TMSI_and_LAI_GSM_MAP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
}
-
-static int
-dissect_rrc_RoutingAreaCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
- 8, 8, FALSE, NULL);
-
- return offset;
-}
-
-
-static const per_sequence_t RAI_sequence[] = {
- { &hf_rrc_lai , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_LAI },
- { &hf_rrc_rac , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RoutingAreaCode },
- { NULL, 0, 0, NULL }
-};
-
-static int
-dissect_rrc_RAI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_RAI, RAI_sequence);
-
- return offset;
-}
-
-
static const per_sequence_t P_TMSI_and_RAI_GSM_MAP_sequence[] = {
{ &hf_rrc_p_TMSI , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_P_TMSI_GSM_MAP },
{ &hf_rrc_rai , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RAI },
@@ -86867,14 +92663,43 @@ dissect_rrc_RRCConnectionReject_v860ext_IEs(tvbuff_t *tvb _U_, int offset _U_, a
}
-static const per_sequence_t T_nonCriticalExtensions_99_sequence[] = {
+static const per_sequence_t RRCConnectionReject_va40ext_IEs_sequence[] = {
+ { &hf_rrc_extendedWaitTime, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ExtendedWaitTime },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_99(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_RRCConnectionReject_va40ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_99, T_nonCriticalExtensions_99_sequence);
+ ett_rrc_RRCConnectionReject_va40ext_IEs, RRCConnectionReject_va40ext_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_108_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_108(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_108, T_nonCriticalExtensions_108_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtensions_05_sequence[] = {
+ { &hf_rrc_rrcConnectionReject_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionReject_va40ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_108, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_108 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtensions_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtensions_05, T_va40NonCriticalExtensions_05_sequence);
return offset;
}
@@ -86882,7 +92707,7 @@ dissect_rrc_T_nonCriticalExtensions_99(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v860NonCriticalExtensions_10_sequence[] = {
{ &hf_rrc_rrcConnectionReject_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionReject_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_99, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_99 },
+ { &hf_rrc_va40NonCriticalExtensions_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtensions_05 },
{ NULL, 0, 0, NULL }
};
@@ -86955,14 +92780,14 @@ dissect_rrc_T_r3_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_73_sequence[] = {
+static const per_sequence_t T_criticalExtensions_82_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_73(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_82(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_73, T_criticalExtensions_73_sequence);
+ ett_rrc_T_criticalExtensions_82, T_criticalExtensions_82_sequence);
return offset;
}
@@ -86971,7 +92796,7 @@ dissect_rrc_T_criticalExtensions_73(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_later_than_r3_15_sequence[] = {
{ &hf_rrc_initialUE_Identity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InitialUE_Identity },
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_73, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_73 },
+ { &hf_rrc_criticalExtensions_82, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_82 },
{ NULL, 0, 0, NULL }
};
@@ -86998,7 +92823,7 @@ static const per_choice_t RRCConnectionReject_choice[] = {
static int
dissect_rrc_RRCConnectionReject(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 313 "../../asn1/rrc/rrc.cnf"
+#line 358 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionReject");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_RRCConnectionReject, RRCConnectionReject_choice,
@@ -87044,14 +92869,29 @@ dissect_rrc_RRCConnectionRelease_CCCH_v860ext_IEs(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_nonCriticalExtensions_102_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_111_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_102(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_111(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_102, T_nonCriticalExtensions_102_sequence);
+ ett_rrc_T_nonCriticalExtensions_111, T_nonCriticalExtensions_111_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtensions_08_sequence[] = {
+ { &hf_rrc_rrcConnectionRelease_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionRelease_va40ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_111, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_111 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtensions_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtensions_08, T_va40NonCriticalExtensions_08_sequence);
return offset;
}
@@ -87059,7 +92899,7 @@ dissect_rrc_T_nonCriticalExtensions_102(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860NonCriticalExtensions_13_sequence[] = {
{ &hf_rrc_rrcConnectionRelease_v860ext_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionRelease_CCCH_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_102, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_102 },
+ { &hf_rrc_va40NonCriticalExtensions_08, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtensions_08 },
{ NULL, 0, 0, NULL }
};
@@ -87131,14 +92971,29 @@ dissect_rrc_RRCConnectionRelease_CCCH_r4_IEs(tvbuff_t *tvb _U_, int offset _U_,
}
-static const per_sequence_t T_nonCriticalExtensions_103_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_112_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_103(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_112(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_103, T_nonCriticalExtensions_103_sequence);
+ ett_rrc_T_nonCriticalExtensions_112, T_nonCriticalExtensions_112_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtensions_09_sequence[] = {
+ { &hf_rrc_rrcConnectionRelease_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionRelease_va40ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_112, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_112 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtensions_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtensions_09, T_va40NonCriticalExtensions_09_sequence);
return offset;
}
@@ -87146,7 +93001,7 @@ dissect_rrc_T_nonCriticalExtensions_103(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860NonCriticalExtensions_14_sequence[] = {
{ &hf_rrc_rrcConnectionRelease_v860ext_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionRelease_CCCH_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_103, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_103 },
+ { &hf_rrc_va40NonCriticalExtensions_09, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtensions_09 },
{ NULL, 0, 0, NULL }
};
@@ -87250,6 +93105,8 @@ static const value_string rrc_U_RNTI_Group_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_U_RNTI_Group_vals_ext = VALUE_STRING_EXT_INIT(rrc_U_RNTI_Group_vals);
+
static const per_choice_t U_RNTI_Group_choice[] = {
{ 0, &hf_rrc_all , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 1, &hf_rrc_u_RNTI_BitMaskIndex_b1, ASN1_NO_EXTENSIONS , dissect_rrc_BIT_STRING_SIZE_31 },
@@ -87333,14 +93190,29 @@ dissect_rrc_RRCConnectionRelease_CCCH_r5_IEs(tvbuff_t *tvb _U_, int offset _U_,
}
-static const per_sequence_t T_nonCriticalExtensions_104_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_113_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_104(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_113(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_104, T_nonCriticalExtensions_104_sequence);
+ ett_rrc_T_nonCriticalExtensions_113, T_nonCriticalExtensions_113_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtensions_10_sequence[] = {
+ { &hf_rrc_rrcConnectionRelease_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionRelease_va40ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_113, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_113 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtensions_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtensions_10, T_va40NonCriticalExtensions_10_sequence);
return offset;
}
@@ -87348,7 +93220,7 @@ dissect_rrc_T_nonCriticalExtensions_104(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860NonCriticalExtensions_15_sequence[] = {
{ &hf_rrc_rrcConnectionRelease_v860ext_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionRelease_CCCH_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_104, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_104 },
+ { &hf_rrc_va40NonCriticalExtensions_10, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtensions_10 },
{ NULL, 0, 0, NULL }
};
@@ -87392,72 +93264,72 @@ dissect_rrc_T_r5_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_79_sequence[] = {
+static const per_sequence_t T_criticalExtensions_88_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_79(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_88(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_79, T_criticalExtensions_79_sequence);
+ ett_rrc_T_criticalExtensions_88, T_criticalExtensions_88_sequence);
return offset;
}
-static const value_string rrc_T_criticalExtensions_78_vals[] = {
+static const value_string rrc_T_criticalExtensions_87_vals[] = {
{ 0, "r5" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_78_choice[] = {
+static const per_choice_t T_criticalExtensions_87_choice[] = {
{ 0, &hf_rrc_r5_08 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r5_08 },
- { 1, &hf_rrc_criticalExtensions_79, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_79 },
+ { 1, &hf_rrc_criticalExtensions_88, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_88 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_78(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_87(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_78, T_criticalExtensions_78_choice,
+ ett_rrc_T_criticalExtensions_87, T_criticalExtensions_87_choice,
NULL);
return offset;
}
-static const per_sequence_t T_criticalExtensions_77_sequence[] = {
+static const per_sequence_t T_criticalExtensions_86_sequence[] = {
{ &hf_rrc_groupIdentity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SEQUENCE_SIZE_1_maxURNTI_Group_OF_GroupReleaseInformation },
- { &hf_rrc_criticalExtensions_78, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_78 },
+ { &hf_rrc_criticalExtensions_87, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_87 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_77(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_86(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_77, T_criticalExtensions_77_sequence);
+ ett_rrc_T_criticalExtensions_86, T_criticalExtensions_86_sequence);
return offset;
}
-static const value_string rrc_T_criticalExtensions_76_vals[] = {
+static const value_string rrc_T_criticalExtensions_85_vals[] = {
{ 0, "r4" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_76_choice[] = {
+static const per_choice_t T_criticalExtensions_85_choice[] = {
{ 0, &hf_rrc_r4_10 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r4_10 },
- { 1, &hf_rrc_criticalExtensions_77, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_77 },
+ { 1, &hf_rrc_criticalExtensions_86, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_86 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_76(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_85(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_76, T_criticalExtensions_76_choice,
+ ett_rrc_T_criticalExtensions_85, T_criticalExtensions_85_choice,
NULL);
return offset;
@@ -87467,7 +93339,7 @@ dissect_rrc_T_criticalExtensions_76(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_later_than_r3_17_sequence[] = {
{ &hf_rrc_u_RNTI , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_U_RNTI },
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_76, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_76 },
+ { &hf_rrc_criticalExtensions_85, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_85 },
{ NULL, 0, 0, NULL }
};
@@ -87494,7 +93366,7 @@ static const per_choice_t RRCConnectionRelease_CCCH_choice[] = {
static int
dissect_rrc_RRCConnectionRelease_CCCH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 321 "../../asn1/rrc/rrc.cnf"
+#line 366 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionRelease-CCCH");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_RRCConnectionRelease_CCCH, RRCConnectionRelease_CCCH_choice,
@@ -87613,14 +93485,14 @@ dissect_rrc_RRCConnectionSetup_v690ext_IEs(tvbuff_t *tvb _U_, int offset _U_, as
}
-static const per_sequence_t T_nonCriticalExtensions_107_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_116_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_107(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_116(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_107, T_nonCriticalExtensions_107_sequence);
+ ett_rrc_T_nonCriticalExtensions_116, T_nonCriticalExtensions_116_sequence);
return offset;
}
@@ -87628,7 +93500,7 @@ dissect_rrc_T_nonCriticalExtensions_107(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v690NonCriticalExtensions_32_sequence[] = {
{ &hf_rrc_rrcConnectionSetup_v690ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionSetup_v690ext_IEs },
- { &hf_rrc_nonCriticalExtensions_107, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_107 },
+ { &hf_rrc_nonCriticalExtensions_116, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_116 },
{ NULL, 0, 0, NULL }
};
@@ -87747,14 +93619,14 @@ dissect_rrc_RRCConnectionSetup_r4_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
}
-static const per_sequence_t T_nonCriticalExtensions_108_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_117_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_108(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_117(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_108, T_nonCriticalExtensions_108_sequence);
+ ett_rrc_T_nonCriticalExtensions_117, T_nonCriticalExtensions_117_sequence);
return offset;
}
@@ -87762,7 +93634,7 @@ dissect_rrc_T_nonCriticalExtensions_108(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v690NonCriticalExtensions_33_sequence[] = {
{ &hf_rrc_rrcConnectionSetup_v690ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionSetup_v690ext_IEs },
- { &hf_rrc_nonCriticalExtensions_108, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_108 },
+ { &hf_rrc_nonCriticalExtensions_117, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_117 },
{ NULL, 0, 0, NULL }
};
@@ -87867,7 +93739,7 @@ dissect_rrc_CapabilityUpdateRequirement_r5(tvbuff_t *tvb _U_, int offset _U_, as
}
-static const per_sequence_t T_complete_15_sequence[] = {
+static const per_sequence_t T_complete_17_sequence[] = {
{ &hf_rrc_srb_InformationSetupList_05, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SRB_InformationSetupList2 },
{ &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo_r4 },
{ &hf_rrc_ul_AddReconfTransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList },
@@ -87877,88 +93749,88 @@ static const per_sequence_t T_complete_15_sequence[] = {
};
static int
-dissect_rrc_T_complete_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_complete_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_complete_15, T_complete_15_sequence);
+ ett_rrc_T_complete_17, T_complete_17_sequence);
return offset;
}
-static const per_sequence_t T_defaultConfig_12_sequence[] = {
+static const per_sequence_t T_defaultConfig_14_sequence[] = {
{ &hf_rrc_defaultConfigMode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigMode },
{ &hf_rrc_defaultConfigIdentity_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigIdentity_r5 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_defaultConfig_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_defaultConfig_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_defaultConfig_12, T_defaultConfig_12_sequence);
+ ett_rrc_T_defaultConfig_14, T_defaultConfig_14_sequence);
return offset;
}
-static const value_string rrc_T_preConfigMode_12_vals[] = {
+static const value_string rrc_T_preConfigMode_14_vals[] = {
{ 0, "predefinedConfigIdentity" },
{ 1, "defaultConfig" },
{ 0, NULL }
};
-static const per_choice_t T_preConfigMode_12_choice[] = {
+static const per_choice_t T_preConfigMode_14_choice[] = {
{ 0, &hf_rrc_predefinedConfigIdentity, ASN1_NO_EXTENSIONS , dissect_rrc_PredefinedConfigIdentity },
- { 1, &hf_rrc_defaultConfig_12, ASN1_NO_EXTENSIONS , dissect_rrc_T_defaultConfig_12 },
+ { 1, &hf_rrc_defaultConfig_14, ASN1_NO_EXTENSIONS , dissect_rrc_T_defaultConfig_14 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_preConfigMode_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_preConfigMode_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_preConfigMode_12, T_preConfigMode_12_choice,
+ ett_rrc_T_preConfigMode_14, T_preConfigMode_14_choice,
NULL);
return offset;
}
-static const per_sequence_t T_preconfiguration_12_sequence[] = {
- { &hf_rrc_preConfigMode_12, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_preConfigMode_12 },
+static const per_sequence_t T_preconfiguration_14_sequence[] = {
+ { &hf_rrc_preConfigMode_14, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_preConfigMode_14 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_preconfiguration_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_preconfiguration_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_preconfiguration_12, T_preconfiguration_12_sequence);
+ ett_rrc_T_preconfiguration_14, T_preconfiguration_14_sequence);
return offset;
}
-static const value_string rrc_T_specificationMode_15_vals[] = {
+static const value_string rrc_T_specificationMode_17_vals[] = {
{ 0, "complete" },
{ 1, "preconfiguration" },
{ 0, NULL }
};
-static const per_choice_t T_specificationMode_15_choice[] = {
- { 0, &hf_rrc_complete_15 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_15 },
- { 1, &hf_rrc_preconfiguration_12, ASN1_NO_EXTENSIONS , dissect_rrc_T_preconfiguration_12 },
+static const per_choice_t T_specificationMode_17_choice[] = {
+ { 0, &hf_rrc_complete_17 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_17 },
+ { 1, &hf_rrc_preconfiguration_14, ASN1_NO_EXTENSIONS , dissect_rrc_T_preconfiguration_14 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_specificationMode_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_specificationMode_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_specificationMode_15, T_specificationMode_15_choice,
+ ett_rrc_T_specificationMode_17, T_specificationMode_17_choice,
NULL);
return offset;
}
-static const per_sequence_t T_fdd_77_sequence[] = {
+static const per_sequence_t T_fdd_80_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCPICH_Info },
{ &hf_rrc_dummy1_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PDSCH_SHO_DCH_Info },
{ &hf_rrc_dummy2_06 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PDSCH_CodeMapping },
@@ -87966,30 +93838,30 @@ static const per_sequence_t T_fdd_77_sequence[] = {
};
static int
-dissect_rrc_T_fdd_77(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_80(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_77, T_fdd_77_sequence);
+ ett_rrc_T_fdd_80, T_fdd_80_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_45_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_48_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_45_choice[] = {
- { 0, &hf_rrc_fdd_78 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_77 },
- { 1, &hf_rrc_tdd_41 , ASN1_NO_EXTENSIONS , dissect_rrc_PrimaryCCPCH_Info_r4 },
+static const per_choice_t T_modeSpecificInfo_48_choice[] = {
+ { 0, &hf_rrc_fdd_81 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_80 },
+ { 1, &hf_rrc_tdd_44 , ASN1_NO_EXTENSIONS , dissect_rrc_PrimaryCCPCH_Info_r4 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_45(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_48(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_45, T_modeSpecificInfo_45_choice,
+ ett_rrc_T_modeSpecificInfo_48, T_modeSpecificInfo_48_choice,
NULL);
return offset;
@@ -87997,9 +93869,9 @@ dissect_rrc_T_modeSpecificInfo_45(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t DL_InformationPerRL_r5bis_sequence[] = {
- { &hf_rrc_modeSpecificInfo_45, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_45 },
+ { &hf_rrc_modeSpecificInfo_48, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_48 },
{ &hf_rrc_dl_DPCH_InfoPerRL_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_DPCH_InfoPerRL_r5 },
- { &hf_rrc_dummy_38 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SCCPCH_InfoForFACH_r4 },
+ { &hf_rrc_dummy_42 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SCCPCH_InfoForFACH_r4 },
{ &hf_rrc_cell_id , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellIdentity },
{ NULL, 0, 0, NULL }
};
@@ -88034,7 +93906,7 @@ static const per_sequence_t RRCConnectionSetup_r5_IEs_sequence[] = {
{ &hf_rrc_rrc_StateIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_StateIndicator },
{ &hf_rrc_utran_DRX_CycleLengthCoeff, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UTRAN_DRX_CycleLengthCoefficient },
{ &hf_rrc_capabilityUpdateRequirement_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CapabilityUpdateRequirement_r5 },
- { &hf_rrc_specificationMode_15, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_15 },
+ { &hf_rrc_specificationMode_17, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_17 },
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
{ &hf_rrc_maxAllowedUL_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MaxAllowedUL_TX_Power },
{ &hf_rrc_ul_ChannelRequirement_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_ChannelRequirement_r4 },
@@ -88052,14 +93924,14 @@ dissect_rrc_RRCConnectionSetup_r5_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
}
-static const per_sequence_t T_nonCriticalExtensions_109_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_118_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_109(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_118(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_109, T_nonCriticalExtensions_109_sequence);
+ ett_rrc_T_nonCriticalExtensions_118, T_nonCriticalExtensions_118_sequence);
return offset;
}
@@ -88067,7 +93939,7 @@ dissect_rrc_T_nonCriticalExtensions_109(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v690NonCriticalExtensions_34_sequence[] = {
{ &hf_rrc_rrcConnectionSetup_v690ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionSetup_v690ext_IEs },
- { &hf_rrc_nonCriticalExtensions_109, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_109 },
+ { &hf_rrc_nonCriticalExtensions_118, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_118 },
{ NULL, 0, 0, NULL }
};
@@ -88110,7 +93982,7 @@ dissect_rrc_SRB_InformationSetupList2_r6(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_complete_16_sequence[] = {
+static const per_sequence_t T_complete_18_sequence[] = {
{ &hf_rrc_srb_InformationSetupList_06, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SRB_InformationSetupList2_r6 },
{ &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo_r4 },
{ &hf_rrc_ul_AddReconfTransChInfoList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList_r6 },
@@ -88120,81 +93992,81 @@ static const per_sequence_t T_complete_16_sequence[] = {
};
static int
-dissect_rrc_T_complete_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_complete_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_complete_16, T_complete_16_sequence);
+ ett_rrc_T_complete_18, T_complete_18_sequence);
return offset;
}
-static const per_sequence_t T_defaultConfig_13_sequence[] = {
+static const per_sequence_t T_defaultConfig_15_sequence[] = {
{ &hf_rrc_defaultConfigMode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigMode },
{ &hf_rrc_defaultConfigIdentity_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigIdentity_r6 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_defaultConfig_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_defaultConfig_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_defaultConfig_13, T_defaultConfig_13_sequence);
+ ett_rrc_T_defaultConfig_15, T_defaultConfig_15_sequence);
return offset;
}
-static const value_string rrc_T_preConfigMode_13_vals[] = {
+static const value_string rrc_T_preConfigMode_15_vals[] = {
{ 0, "predefinedConfigIdentity" },
{ 1, "defaultConfig" },
{ 0, NULL }
};
-static const per_choice_t T_preConfigMode_13_choice[] = {
+static const per_choice_t T_preConfigMode_15_choice[] = {
{ 0, &hf_rrc_predefinedConfigIdentity, ASN1_NO_EXTENSIONS , dissect_rrc_PredefinedConfigIdentity },
- { 1, &hf_rrc_defaultConfig_13, ASN1_NO_EXTENSIONS , dissect_rrc_T_defaultConfig_13 },
+ { 1, &hf_rrc_defaultConfig_15, ASN1_NO_EXTENSIONS , dissect_rrc_T_defaultConfig_15 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_preConfigMode_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_preConfigMode_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_preConfigMode_13, T_preConfigMode_13_choice,
+ ett_rrc_T_preConfigMode_15, T_preConfigMode_15_choice,
NULL);
return offset;
}
-static const per_sequence_t T_preconfiguration_13_sequence[] = {
- { &hf_rrc_preConfigMode_13, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_preConfigMode_13 },
+static const per_sequence_t T_preconfiguration_15_sequence[] = {
+ { &hf_rrc_preConfigMode_15, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_preConfigMode_15 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_preconfiguration_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_preconfiguration_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_preconfiguration_13, T_preconfiguration_13_sequence);
+ ett_rrc_T_preconfiguration_15, T_preconfiguration_15_sequence);
return offset;
}
-static const value_string rrc_T_specificationMode_16_vals[] = {
+static const value_string rrc_T_specificationMode_18_vals[] = {
{ 0, "complete" },
{ 1, "preconfiguration" },
{ 0, NULL }
};
-static const per_choice_t T_specificationMode_16_choice[] = {
- { 0, &hf_rrc_complete_16 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_16 },
- { 1, &hf_rrc_preconfiguration_13, ASN1_NO_EXTENSIONS , dissect_rrc_T_preconfiguration_13 },
+static const per_choice_t T_specificationMode_18_choice[] = {
+ { 0, &hf_rrc_complete_18 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_18 },
+ { 1, &hf_rrc_preconfiguration_15, ASN1_NO_EXTENSIONS , dissect_rrc_T_preconfiguration_15 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_specificationMode_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_specificationMode_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_specificationMode_16, T_specificationMode_16_choice,
+ ett_rrc_T_specificationMode_18, T_specificationMode_18_choice,
NULL);
return offset;
@@ -88211,7 +94083,7 @@ static const per_sequence_t RRCConnectionSetup_r6_IEs_sequence[] = {
{ &hf_rrc_rrc_StateIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_StateIndicator },
{ &hf_rrc_utran_DRX_CycleLengthCoeff, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UTRAN_DRX_CycleLengthCoefficient },
{ &hf_rrc_capabilityUpdateRequirement_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CapabilityUpdateRequirement_r5 },
- { &hf_rrc_specificationMode_16, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_16 },
+ { &hf_rrc_specificationMode_18, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_18 },
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
{ &hf_rrc_maxAllowedUL_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MaxAllowedUL_TX_Power },
{ &hf_rrc_ul_DPCH_Info , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DPCH_Info_r6 },
@@ -88245,14 +94117,14 @@ dissect_rrc_RRCConnectionSetup_v6b0ext_IEs(tvbuff_t *tvb _U_, int offset _U_, as
}
-static const per_sequence_t T_nonCriticalExtensions_110_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_119_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_110(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_119(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_110, T_nonCriticalExtensions_110_sequence);
+ ett_rrc_T_nonCriticalExtensions_119, T_nonCriticalExtensions_119_sequence);
return offset;
}
@@ -88260,7 +94132,7 @@ dissect_rrc_T_nonCriticalExtensions_110(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v6b0NonCriticalExtensions_10_sequence[] = {
{ &hf_rrc_rrcConnectionSetup_v6b0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionSetup_v6b0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_110, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_110 },
+ { &hf_rrc_nonCriticalExtensions_119, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_119 },
{ NULL, 0, 0, NULL }
};
@@ -88321,7 +94193,7 @@ dissect_rrc_SRB_InformationSetupList2_r7(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_complete_17_sequence[] = {
+static const per_sequence_t T_complete_19_sequence[] = {
{ &hf_rrc_srb_InformationSetupList_07, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SRB_InformationSetupList2_r7 },
{ &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo_r4 },
{ &hf_rrc_ul_AddReconfTransChInfoList_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList_r7 },
@@ -88331,81 +94203,81 @@ static const per_sequence_t T_complete_17_sequence[] = {
};
static int
-dissect_rrc_T_complete_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_complete_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_complete_17, T_complete_17_sequence);
+ ett_rrc_T_complete_19, T_complete_19_sequence);
return offset;
}
-static const per_sequence_t T_defaultConfig_14_sequence[] = {
+static const per_sequence_t T_defaultConfig_16_sequence[] = {
{ &hf_rrc_defaultConfigMode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigMode },
{ &hf_rrc_defaultConfigIdentity_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigIdentity_r6 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_defaultConfig_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_defaultConfig_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_defaultConfig_14, T_defaultConfig_14_sequence);
+ ett_rrc_T_defaultConfig_16, T_defaultConfig_16_sequence);
return offset;
}
-static const value_string rrc_T_preConfigMode_14_vals[] = {
+static const value_string rrc_T_preConfigMode_16_vals[] = {
{ 0, "predefinedConfigIdentity" },
{ 1, "defaultConfig" },
{ 0, NULL }
};
-static const per_choice_t T_preConfigMode_14_choice[] = {
+static const per_choice_t T_preConfigMode_16_choice[] = {
{ 0, &hf_rrc_predefinedConfigIdentity, ASN1_NO_EXTENSIONS , dissect_rrc_PredefinedConfigIdentity },
- { 1, &hf_rrc_defaultConfig_14, ASN1_NO_EXTENSIONS , dissect_rrc_T_defaultConfig_14 },
+ { 1, &hf_rrc_defaultConfig_16, ASN1_NO_EXTENSIONS , dissect_rrc_T_defaultConfig_16 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_preConfigMode_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_preConfigMode_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_preConfigMode_14, T_preConfigMode_14_choice,
+ ett_rrc_T_preConfigMode_16, T_preConfigMode_16_choice,
NULL);
return offset;
}
-static const per_sequence_t T_preconfiguration_14_sequence[] = {
- { &hf_rrc_preConfigMode_14, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_preConfigMode_14 },
+static const per_sequence_t T_preconfiguration_16_sequence[] = {
+ { &hf_rrc_preConfigMode_16, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_preConfigMode_16 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_preconfiguration_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_preconfiguration_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_preconfiguration_14, T_preconfiguration_14_sequence);
+ ett_rrc_T_preconfiguration_16, T_preconfiguration_16_sequence);
return offset;
}
-static const value_string rrc_T_specificationMode_17_vals[] = {
+static const value_string rrc_T_specificationMode_19_vals[] = {
{ 0, "complete" },
{ 1, "preconfiguration" },
{ 0, NULL }
};
-static const per_choice_t T_specificationMode_17_choice[] = {
- { 0, &hf_rrc_complete_17 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_17 },
- { 1, &hf_rrc_preconfiguration_14, ASN1_NO_EXTENSIONS , dissect_rrc_T_preconfiguration_14 },
+static const per_choice_t T_specificationMode_19_choice[] = {
+ { 0, &hf_rrc_complete_19 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_19 },
+ { 1, &hf_rrc_preconfiguration_16, ASN1_NO_EXTENSIONS , dissect_rrc_T_preconfiguration_16 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_specificationMode_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_specificationMode_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_specificationMode_17, T_specificationMode_17_choice,
+ ett_rrc_T_specificationMode_19, T_specificationMode_19_choice,
NULL);
return offset;
@@ -88423,7 +94295,7 @@ static const per_sequence_t RRCConnectionSetup_r7_IEs_sequence[] = {
{ &hf_rrc_utran_DRX_CycleLengthCoeff_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UTRAN_DRX_CycleLengthCoefficient_r7 },
{ &hf_rrc_capabilityUpdateRequirement_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CapabilityUpdateRequirement_r7 },
{ &hf_rrc_supportForChangeOfUE_Capability, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
- { &hf_rrc_specificationMode_17, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_17 },
+ { &hf_rrc_specificationMode_19, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_19 },
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
{ &hf_rrc_multi_frequencyInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Multi_frequencyInfo_LCR_r7 },
{ &hf_rrc_dtx_drx_TimingInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DTX_DRX_TimingInfo_r7 },
@@ -88475,14 +94347,14 @@ dissect_rrc_RRCConnectionSetup_v7d0ext_IEs(tvbuff_t *tvb _U_, int offset _U_, as
}
-static const per_sequence_t T_nonCriticalExtensions_111_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_120_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_111(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_120(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_111, T_nonCriticalExtensions_111_sequence);
+ ett_rrc_T_nonCriticalExtensions_120, T_nonCriticalExtensions_120_sequence);
return offset;
}
@@ -88490,7 +94362,7 @@ dissect_rrc_T_nonCriticalExtensions_111(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v7d0NonCriticalExtensions_11_sequence[] = {
{ &hf_rrc_rrcConnectionSetup_v7d0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionSetup_v7d0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_111, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_111 },
+ { &hf_rrc_nonCriticalExtensions_120, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_120 },
{ NULL, 0, 0, NULL }
};
@@ -88566,7 +94438,7 @@ dissect_rrc_SRB_InformationSetupList2_r8(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_complete_18_sequence[] = {
+static const per_sequence_t T_complete_20_sequence[] = {
{ &hf_rrc_srb_InformationSetupList_08, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SRB_InformationSetupList2_r8 },
{ &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo_r4 },
{ &hf_rrc_ul_AddReconfTransChInfoList_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList_r8 },
@@ -88576,81 +94448,81 @@ static const per_sequence_t T_complete_18_sequence[] = {
};
static int
-dissect_rrc_T_complete_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_complete_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_complete_18, T_complete_18_sequence);
+ ett_rrc_T_complete_20, T_complete_20_sequence);
return offset;
}
-static const per_sequence_t T_defaultConfig_15_sequence[] = {
+static const per_sequence_t T_defaultConfig_17_sequence[] = {
{ &hf_rrc_defaultConfigMode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigMode },
{ &hf_rrc_defaultConfigIdentity_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigIdentity_r6 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_defaultConfig_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_defaultConfig_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_defaultConfig_15, T_defaultConfig_15_sequence);
+ ett_rrc_T_defaultConfig_17, T_defaultConfig_17_sequence);
return offset;
}
-static const value_string rrc_T_preConfigMode_15_vals[] = {
+static const value_string rrc_T_preConfigMode_17_vals[] = {
{ 0, "predefinedConfigIdentity" },
{ 1, "defaultConfig" },
{ 0, NULL }
};
-static const per_choice_t T_preConfigMode_15_choice[] = {
+static const per_choice_t T_preConfigMode_17_choice[] = {
{ 0, &hf_rrc_predefinedConfigIdentity, ASN1_NO_EXTENSIONS , dissect_rrc_PredefinedConfigIdentity },
- { 1, &hf_rrc_defaultConfig_15, ASN1_NO_EXTENSIONS , dissect_rrc_T_defaultConfig_15 },
+ { 1, &hf_rrc_defaultConfig_17, ASN1_NO_EXTENSIONS , dissect_rrc_T_defaultConfig_17 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_preConfigMode_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_preConfigMode_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_preConfigMode_15, T_preConfigMode_15_choice,
+ ett_rrc_T_preConfigMode_17, T_preConfigMode_17_choice,
NULL);
return offset;
}
-static const per_sequence_t T_preconfiguration_15_sequence[] = {
- { &hf_rrc_preConfigMode_15, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_preConfigMode_15 },
+static const per_sequence_t T_preconfiguration_17_sequence[] = {
+ { &hf_rrc_preConfigMode_17, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_preConfigMode_17 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_preconfiguration_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_preconfiguration_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_preconfiguration_15, T_preconfiguration_15_sequence);
+ ett_rrc_T_preconfiguration_17, T_preconfiguration_17_sequence);
return offset;
}
-static const value_string rrc_T_specificationMode_18_vals[] = {
+static const value_string rrc_T_specificationMode_20_vals[] = {
{ 0, "complete" },
{ 1, "preconfiguration" },
{ 0, NULL }
};
-static const per_choice_t T_specificationMode_18_choice[] = {
- { 0, &hf_rrc_complete_18 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_18 },
- { 1, &hf_rrc_preconfiguration_15, ASN1_NO_EXTENSIONS , dissect_rrc_T_preconfiguration_15 },
+static const per_choice_t T_specificationMode_20_choice[] = {
+ { 0, &hf_rrc_complete_20 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_20 },
+ { 1, &hf_rrc_preconfiguration_17, ASN1_NO_EXTENSIONS , dissect_rrc_T_preconfiguration_17 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_specificationMode_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_specificationMode_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_specificationMode_18, T_specificationMode_18_choice,
+ ett_rrc_T_specificationMode_20, T_specificationMode_20_choice,
NULL);
return offset;
@@ -88668,8 +94540,8 @@ static const per_sequence_t RRCConnectionSetup_r8_IEs_sequence[] = {
{ &hf_rrc_utran_DRX_CycleLengthCoeff_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UTRAN_DRX_CycleLengthCoefficient_r7 },
{ &hf_rrc_capabilityUpdateRequirement_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CapabilityUpdateRequirement_r8 },
{ &hf_rrc_supportForChangeOfUE_Capability, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
- { &hf_rrc_defaultConfigForCellFACH, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultConfigForCellFACH },
- { &hf_rrc_specificationMode_18, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_18 },
+ { &hf_rrc_dummy_06 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultConfigForCellFACH },
+ { &hf_rrc_specificationMode_20, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_20 },
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
{ &hf_rrc_multi_frequencyInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Multi_frequencyInfo_LCR_r7 },
{ &hf_rrc_dtx_drx_TimingInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DTX_DRX_TimingInfo_r7 },
@@ -88724,14 +94596,14 @@ dissect_rrc_RRCConnectionSetup_v8a0ext_IEs(tvbuff_t *tvb _U_, int offset _U_, as
}
-static const per_sequence_t T_nonCriticalExtensions_112_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_121_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_112(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_121(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_112, T_nonCriticalExtensions_112_sequence);
+ ett_rrc_T_nonCriticalExtensions_121, T_nonCriticalExtensions_121_sequence);
return offset;
}
@@ -88739,7 +94611,7 @@ dissect_rrc_T_nonCriticalExtensions_112(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v8a0NonCriticalExtensions_08_sequence[] = {
{ &hf_rrc_rrcConnectionSetup_v8a0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionSetup_v8a0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_112, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_112 },
+ { &hf_rrc_nonCriticalExtensions_121, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_121 },
{ NULL, 0, 0, NULL }
};
@@ -88798,7 +94670,7 @@ dissect_rrc_T_r8_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_complete_19_sequence[] = {
+static const per_sequence_t T_complete_21_sequence[] = {
{ &hf_rrc_srb_InformationSetupList_08, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SRB_InformationSetupList2_r8 },
{ &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo_r4 },
{ &hf_rrc_ul_AddReconfTransChInfoList_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList_r8 },
@@ -88808,81 +94680,81 @@ static const per_sequence_t T_complete_19_sequence[] = {
};
static int
-dissect_rrc_T_complete_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_complete_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_complete_19, T_complete_19_sequence);
+ ett_rrc_T_complete_21, T_complete_21_sequence);
return offset;
}
-static const per_sequence_t T_defaultConfig_16_sequence[] = {
+static const per_sequence_t T_defaultConfig_18_sequence[] = {
{ &hf_rrc_defaultConfigMode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigMode },
{ &hf_rrc_defaultConfigIdentity_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigIdentity_r6 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_defaultConfig_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_defaultConfig_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_defaultConfig_16, T_defaultConfig_16_sequence);
+ ett_rrc_T_defaultConfig_18, T_defaultConfig_18_sequence);
return offset;
}
-static const value_string rrc_T_preConfigMode_16_vals[] = {
+static const value_string rrc_T_preConfigMode_18_vals[] = {
{ 0, "predefinedConfigIdentity" },
{ 1, "defaultConfig" },
{ 0, NULL }
};
-static const per_choice_t T_preConfigMode_16_choice[] = {
+static const per_choice_t T_preConfigMode_18_choice[] = {
{ 0, &hf_rrc_predefinedConfigIdentity, ASN1_NO_EXTENSIONS , dissect_rrc_PredefinedConfigIdentity },
- { 1, &hf_rrc_defaultConfig_16, ASN1_NO_EXTENSIONS , dissect_rrc_T_defaultConfig_16 },
+ { 1, &hf_rrc_defaultConfig_18, ASN1_NO_EXTENSIONS , dissect_rrc_T_defaultConfig_18 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_preConfigMode_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_preConfigMode_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_preConfigMode_16, T_preConfigMode_16_choice,
+ ett_rrc_T_preConfigMode_18, T_preConfigMode_18_choice,
NULL);
return offset;
}
-static const per_sequence_t T_preconfiguration_16_sequence[] = {
- { &hf_rrc_preConfigMode_16, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_preConfigMode_16 },
+static const per_sequence_t T_preconfiguration_18_sequence[] = {
+ { &hf_rrc_preConfigMode_18, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_preConfigMode_18 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_preconfiguration_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_preconfiguration_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_preconfiguration_16, T_preconfiguration_16_sequence);
+ ett_rrc_T_preconfiguration_18, T_preconfiguration_18_sequence);
return offset;
}
-static const value_string rrc_T_specificationMode_19_vals[] = {
+static const value_string rrc_T_specificationMode_21_vals[] = {
{ 0, "complete" },
{ 1, "preconfiguration" },
{ 0, NULL }
};
-static const per_choice_t T_specificationMode_19_choice[] = {
- { 0, &hf_rrc_complete_19 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_19 },
- { 1, &hf_rrc_preconfiguration_16, ASN1_NO_EXTENSIONS , dissect_rrc_T_preconfiguration_16 },
+static const per_choice_t T_specificationMode_21_choice[] = {
+ { 0, &hf_rrc_complete_21 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_21 },
+ { 1, &hf_rrc_preconfiguration_18, ASN1_NO_EXTENSIONS , dissect_rrc_T_preconfiguration_18 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_specificationMode_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_specificationMode_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_specificationMode_19, T_specificationMode_19_choice,
+ ett_rrc_T_specificationMode_21, T_specificationMode_21_choice,
NULL);
return offset;
@@ -88901,7 +94773,7 @@ static const per_sequence_t RRCConnectionSetup_r9_IEs_sequence[] = {
{ &hf_rrc_capabilityUpdateRequirement_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CapabilityUpdateRequirement_r8 },
{ &hf_rrc_supportForChangeOfUE_Capability, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_defaultConfigForCellFACH, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultConfigForCellFACH },
- { &hf_rrc_specificationMode_19, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_19 },
+ { &hf_rrc_specificationMode_21, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_21 },
{ &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
{ &hf_rrc_multi_frequencyInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Multi_frequencyInfo_LCR_r7 },
{ &hf_rrc_dtx_drx_TimingInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DTX_DRX_TimingInfo_r7 },
@@ -88941,14 +94813,14 @@ dissect_rrc_RRCConnectionSetup_v950ext_IEs(tvbuff_t *tvb _U_, int offset _U_, as
}
-static const per_sequence_t T_nonCriticalExtensions_113_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_122_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_113(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_122(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_113, T_nonCriticalExtensions_113_sequence);
+ ett_rrc_T_nonCriticalExtensions_122, T_nonCriticalExtensions_122_sequence);
return offset;
}
@@ -88956,7 +94828,7 @@ dissect_rrc_T_nonCriticalExtensions_113(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v950NonCriticalExtensions_07_sequence[] = {
{ &hf_rrc_rrcConnectionSetup_v950ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionSetup_v950ext_IEs },
- { &hf_rrc_nonCriticalExtensions_113, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_113 },
+ { &hf_rrc_nonCriticalExtensions_122, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_122 },
{ NULL, 0, 0, NULL }
};
@@ -88985,145 +94857,327 @@ dissect_rrc_T_r9_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_86_sequence[] = {
+static const per_sequence_t T_complete_22_sequence[] = {
+ { &hf_rrc_srb_InformationSetupList_08, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SRB_InformationSetupList2_r8 },
+ { &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo_r4 },
+ { &hf_rrc_ul_AddReconfTransChInfoList_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList_r8 },
+ { &hf_rrc_dl_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonTransChInfo_r4 },
+ { &hf_rrc_dl_AddReconfTransChInfoList_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_AddReconfTransChInfoList_r9 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_86(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_complete_22(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_86, T_criticalExtensions_86_sequence);
+ ett_rrc_T_complete_22, T_complete_22_sequence);
return offset;
}
-static const value_string rrc_T_criticalExtensions_85_vals[] = {
+static const per_sequence_t T_defaultConfig_19_sequence[] = {
+ { &hf_rrc_defaultConfigMode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigMode },
+ { &hf_rrc_defaultConfigIdentity_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigIdentity_r6 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_defaultConfig_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_defaultConfig_19, T_defaultConfig_19_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_preConfigMode_19_vals[] = {
+ { 0, "predefinedConfigIdentity" },
+ { 1, "defaultConfig" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_preConfigMode_19_choice[] = {
+ { 0, &hf_rrc_predefinedConfigIdentity, ASN1_NO_EXTENSIONS , dissect_rrc_PredefinedConfigIdentity },
+ { 1, &hf_rrc_defaultConfig_19, ASN1_NO_EXTENSIONS , dissect_rrc_T_defaultConfig_19 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_preConfigMode_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_preConfigMode_19, T_preConfigMode_19_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_preconfiguration_19_sequence[] = {
+ { &hf_rrc_preConfigMode_19, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_preConfigMode_19 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_preconfiguration_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_preconfiguration_19, T_preconfiguration_19_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_specificationMode_22_vals[] = {
+ { 0, "complete" },
+ { 1, "preconfiguration" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_specificationMode_22_choice[] = {
+ { 0, &hf_rrc_complete_22 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_22 },
+ { 1, &hf_rrc_preconfiguration_19, ASN1_NO_EXTENSIONS , dissect_rrc_T_preconfiguration_19 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_specificationMode_22(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_specificationMode_22, T_specificationMode_22_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t RRCConnectionSetup_r10_IEs_sequence[] = {
+ { &hf_rrc_activationTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ActivationTime },
+ { &hf_rrc_new_U_RNTI , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_U_RNTI },
+ { &hf_rrc_new_c_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_C_RNTI },
+ { &hf_rrc_new_H_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_H_RNTI },
+ { &hf_rrc_newPrimary_E_RNTI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RNTI },
+ { &hf_rrc_newSecondary_E_RNTI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RNTI },
+ { &hf_rrc_rrc_StateIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_StateIndicator },
+ { &hf_rrc_utran_DRX_CycleLengthCoeff_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UTRAN_DRX_CycleLengthCoefficient_r7 },
+ { &hf_rrc_capabilityUpdateRequirement_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CapabilityUpdateRequirement_r8 },
+ { &hf_rrc_supportForChangeOfUE_Capability, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
+ { &hf_rrc_defaultConfigForCellFACH, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultConfigForCellFACH },
+ { &hf_rrc_specificationMode_22, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_22 },
+ { &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyInfo },
+ { &hf_rrc_multi_frequencyInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Multi_frequencyInfo_LCR_r7 },
+ { &hf_rrc_dtx_drx_TimingInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DTX_DRX_TimingInfo_r7 },
+ { &hf_rrc_dtx_drx_Info , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DTX_DRX_Info_r7 },
+ { &hf_rrc_hs_scch_LessInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_SCCH_LessInfo_r7 },
+ { &hf_rrc_maxAllowedUL_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MaxAllowedUL_TX_Power },
+ { &hf_rrc_ul_DPCH_Info_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_DPCH_Info_r7 },
+ { &hf_rrc_ul_EDCH_Information_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_EDCH_Information_r9 },
+ { &hf_rrc_dl_HSPDSCH_Information_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_HSPDSCH_Information_r9 },
+ { &hf_rrc_dl_CommonInformation_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonInformation_r10 },
+ { &hf_rrc_dl_InformationPerRL_List_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_InformationPerRL_List_r8 },
+ { &hf_rrc_dl_SecondaryCellInfoFDD_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_SecondaryCellInfoFDD_r10 },
+ { &hf_rrc_additionalDLSecCellInfoListFDD, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_AdditionalDLSecCellInfoListFDD },
+ { &hf_rrc_sps_Information_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SPS_Information_TDD128_r8 },
+ { &hf_rrc_mu_MIMO_Info_TDD128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MU_MIMO_Info_TDD128 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_RRCConnectionSetup_r10_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_RRCConnectionSetup_r10_IEs, RRCConnectionSetup_r10_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_123_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_123(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_123, T_nonCriticalExtensions_123_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_r10_09_sequence[] = {
+ { &hf_rrc_rrcConnectionSetup_r10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionSetup_r10_IEs },
+ { &hf_rrc_rrcConnectionSetup_r10_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
+ { &hf_rrc_nonCriticalExtensions_123, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_123 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_r10_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_r10_09, T_r10_09_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_criticalExtensions_96_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_96(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_96, T_criticalExtensions_96_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_criticalExtensions_95_vals[] = {
+ { 0, "r10" },
+ { 1, "criticalExtensions" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_criticalExtensions_95_choice[] = {
+ { 0, &hf_rrc_r10_09 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r10_09 },
+ { 1, &hf_rrc_criticalExtensions_96, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_96 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_95(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_95, T_criticalExtensions_95_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_criticalExtensions_94_vals[] = {
{ 0, "r9" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_85_choice[] = {
+static const per_choice_t T_criticalExtensions_94_choice[] = {
{ 0, &hf_rrc_r9_09 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r9_09 },
- { 1, &hf_rrc_criticalExtensions_86, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_86 },
+ { 1, &hf_rrc_criticalExtensions_95, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_95 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_85(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_94(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_85, T_criticalExtensions_85_choice,
+ ett_rrc_T_criticalExtensions_94, T_criticalExtensions_94_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_84_vals[] = {
+static const value_string rrc_T_criticalExtensions_93_vals[] = {
{ 0, "r8" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_84_choice[] = {
+static const per_choice_t T_criticalExtensions_93_choice[] = {
{ 0, &hf_rrc_r8_10 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r8_10 },
- { 1, &hf_rrc_criticalExtensions_85, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_85 },
+ { 1, &hf_rrc_criticalExtensions_94, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_94 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_84(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_93(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_84, T_criticalExtensions_84_choice,
+ ett_rrc_T_criticalExtensions_93, T_criticalExtensions_93_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_83_vals[] = {
+static const value_string rrc_T_criticalExtensions_92_vals[] = {
{ 0, "r7" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_83_choice[] = {
+static const per_choice_t T_criticalExtensions_92_choice[] = {
{ 0, &hf_rrc_r7_09 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r7_09 },
- { 1, &hf_rrc_criticalExtensions_84, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_84 },
+ { 1, &hf_rrc_criticalExtensions_93, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_93 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_83(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_92(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_83, T_criticalExtensions_83_choice,
+ ett_rrc_T_criticalExtensions_92, T_criticalExtensions_92_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_82_vals[] = {
+static const value_string rrc_T_criticalExtensions_91_vals[] = {
{ 0, "r6" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_82_choice[] = {
+static const per_choice_t T_criticalExtensions_91_choice[] = {
{ 0, &hf_rrc_r6_10 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r6_10 },
- { 1, &hf_rrc_criticalExtensions_83, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_83 },
+ { 1, &hf_rrc_criticalExtensions_92, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_92 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_82(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_91(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_82, T_criticalExtensions_82_choice,
+ ett_rrc_T_criticalExtensions_91, T_criticalExtensions_91_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_81_vals[] = {
+static const value_string rrc_T_criticalExtensions_90_vals[] = {
{ 0, "r5" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_81_choice[] = {
+static const per_choice_t T_criticalExtensions_90_choice[] = {
{ 0, &hf_rrc_r5_09 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r5_09 },
- { 1, &hf_rrc_criticalExtensions_82, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_82 },
+ { 1, &hf_rrc_criticalExtensions_91, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_91 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_81(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_90(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_81, T_criticalExtensions_81_choice,
+ ett_rrc_T_criticalExtensions_90, T_criticalExtensions_90_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_80_vals[] = {
+static const value_string rrc_T_criticalExtensions_89_vals[] = {
{ 0, "r4" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_80_choice[] = {
+static const per_choice_t T_criticalExtensions_89_choice[] = {
{ 0, &hf_rrc_r4_11 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r4_11 },
- { 1, &hf_rrc_criticalExtensions_81, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_81 },
+ { 1, &hf_rrc_criticalExtensions_90, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_90 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_80(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_89(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_80, T_criticalExtensions_80_choice,
+ ett_rrc_T_criticalExtensions_89, T_criticalExtensions_89_choice,
NULL);
return offset;
@@ -89133,7 +95187,7 @@ dissect_rrc_T_criticalExtensions_80(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static const per_sequence_t T_later_than_r3_18_sequence[] = {
{ &hf_rrc_initialUE_Identity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InitialUE_Identity },
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_80, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_80 },
+ { &hf_rrc_criticalExtensions_89, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_89 },
{ NULL, 0, 0, NULL }
};
@@ -89160,7 +95214,7 @@ static const per_choice_t RRCConnectionSetup_choice[] = {
static int
dissect_rrc_RRCConnectionSetup(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 333 "../../asn1/rrc/rrc.cnf"
+#line 378 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionSetup");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_RRCConnectionSetup, RRCConnectionSetup_choice,
@@ -89188,14 +95242,14 @@ dissect_rrc_URAUpdateConfirm_CCCH_r3_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_nonCriticalExtensions_149_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_160_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_149(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_160(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_149, T_nonCriticalExtensions_149_sequence);
+ ett_rrc_T_nonCriticalExtensions_160, T_nonCriticalExtensions_160_sequence);
return offset;
}
@@ -89203,7 +95257,7 @@ dissect_rrc_T_nonCriticalExtensions_149(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860NonCriticalExtensions_21_sequence[] = {
{ &hf_rrc_uraUpdateConfirm_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_URAUpdateConfirm_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_149, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_149 },
+ { &hf_rrc_nonCriticalExtensions_160, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_160 },
{ NULL, 0, 0, NULL }
};
@@ -89261,14 +95315,14 @@ dissect_rrc_T_r3_29(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_107_sequence[] = {
+static const per_sequence_t T_criticalExtensions_118_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_107(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_118(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_107, T_criticalExtensions_107_sequence);
+ ett_rrc_T_criticalExtensions_118, T_criticalExtensions_118_sequence);
return offset;
}
@@ -89277,7 +95331,7 @@ dissect_rrc_T_criticalExtensions_107(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
static const per_sequence_t T_later_than_r3_26_sequence[] = {
{ &hf_rrc_u_RNTI , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_U_RNTI },
{ &hf_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRC_TransactionIdentifier },
- { &hf_rrc_criticalExtensions_107, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_107 },
+ { &hf_rrc_criticalExtensions_118, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_criticalExtensions_118 },
{ NULL, 0, 0, NULL }
};
@@ -89304,7 +95358,7 @@ static const per_choice_t URAUpdateConfirm_CCCH_choice[] = {
static int
dissect_rrc_URAUpdateConfirm_CCCH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 425 "../../asn1/rrc/rrc.cnf"
+#line 478 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "URAUpdateConfirm-CCCH");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_URAUpdateConfirm_CCCH, URAUpdateConfirm_CCCH_choice,
@@ -89718,14 +95772,91 @@ dissect_rrc_CellUpdate_v860ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_nonCriticalExtensions_10_sequence[] = {
+static const value_string rrc_T_securityRevertStatusIndicator_vals[] = {
+ { 0, "revertedBack" },
+ { 1, "normalOperation" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_securityRevertStatusIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_loggedMeasAvailable_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_loggedMeasAvailable(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_loggedANRResultsAvailable_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_loggedANRResultsAvailable(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t CellUpdate_va40ext_IEs_sequence[] = {
+ { &hf_rrc_securityRevertStatusIndicator, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_securityRevertStatusIndicator },
+ { &hf_rrc_loggedMeasAvailable, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_loggedMeasAvailable },
+ { &hf_rrc_loggedANRResultsAvailable, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_loggedANRResultsAvailable },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_CellUpdate_va40ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_10, T_nonCriticalExtensions_10_sequence);
+ ett_rrc_CellUpdate_va40ext_IEs, CellUpdate_va40ext_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_11_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_11, T_nonCriticalExtensions_11_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtensions_sequence[] = {
+ { &hf_rrc_cellUpdate_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellUpdate_va40ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_11, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_11 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtensions(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtensions, T_va40NonCriticalExtensions_sequence);
return offset;
}
@@ -89733,7 +95864,7 @@ dissect_rrc_T_nonCriticalExtensions_10(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v860NonCriticalExtensions_sequence[] = {
{ &hf_rrc_cellUpdate_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellUpdate_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_10, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_10 },
+ { &hf_rrc_va40NonCriticalExtensions, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtensions },
{ NULL, 0, 0, NULL }
};
@@ -89836,7 +95967,7 @@ static const per_sequence_t CellUpdate_sequence[] = {
static int
dissect_rrc_CellUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 149 "../../asn1/rrc/rrc.cnf"
+#line 186 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "CellUpdate");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_CellUpdate, CellUpdate_sequence);
@@ -90330,14 +96461,91 @@ dissect_rrc_RRCConnectionRequest_v940ext_IEs(tvbuff_t *tvb _U_, int offset _U_,
}
-static const per_sequence_t T_nonCriticalExtensions_106_sequence[] = {
+static const value_string rrc_T_supportOfMoreThanTwoCells_vals[] = {
+ { 0, "higherRate" },
+ { 1, "lowerRate" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_supportOfMoreThanTwoCells(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_supportOf1stFrequencyBand_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_supportOf1stFrequencyBand(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_supportOf2ndFrequencyBand_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_supportOf2ndFrequencyBand(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t RRCConnectionRequest_va40ext_IEs_sequence[] = {
+ { &hf_rrc_supportOfMoreThanTwoCells, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_supportOfMoreThanTwoCells },
+ { &hf_rrc_supportOf1stFrequencyBand, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_supportOf1stFrequencyBand },
+ { &hf_rrc_supportOf2ndFrequencyBand, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_supportOf2ndFrequencyBand },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_106(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_RRCConnectionRequest_va40ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_106, T_nonCriticalExtensions_106_sequence);
+ ett_rrc_RRCConnectionRequest_va40ext_IEs, RRCConnectionRequest_va40ext_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_115_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_115(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_115, T_nonCriticalExtensions_115_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t RRCConnectionRequest_NonCriticalExts_va40_IEs_sequence[] = {
+ { &hf_rrc_rrcConnectionRequest_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionRequest_va40ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_115, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_115 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_RRCConnectionRequest_NonCriticalExts_va40_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_RRCConnectionRequest_NonCriticalExts_va40_IEs, RRCConnectionRequest_NonCriticalExts_va40_IEs_sequence);
return offset;
}
@@ -90345,7 +96553,7 @@ dissect_rrc_T_nonCriticalExtensions_106(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v940NonCriticalExtensions_sequence[] = {
{ &hf_rrc_rrcConnectionRequest_v940ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionRequest_v940ext_IEs },
- { &hf_rrc_nonCriticalExtensions_106, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_106 },
+ { &hf_rrc_va40NonCriticalExtensions_11, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionRequest_NonCriticalExts_va40_IEs },
{ NULL, 0, 0, NULL }
};
@@ -90549,7 +96757,7 @@ static const per_sequence_t RRCConnectionRequest_sequence[] = {
static int
dissect_rrc_RRCConnectionRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 329 "../../asn1/rrc/rrc.cnf"
+#line 374 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionRequest");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_RRCConnectionRequest, RRCConnectionRequest_sequence);
@@ -90732,14 +96940,74 @@ dissect_rrc_URAUpdate_v860ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_nonCriticalExtensions_144_sequence[] = {
+static const value_string rrc_T_loggedMeasAvailable_04_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_loggedMeasAvailable_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_loggedANRResultsAvailable_03_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_loggedANRResultsAvailable_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t URAUpdate_va40ext_IEs_sequence[] = {
+ { &hf_rrc_loggedMeasAvailable_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_loggedMeasAvailable_04 },
+ { &hf_rrc_loggedANRResultsAvailable_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_loggedANRResultsAvailable_03 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_144(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_URAUpdate_va40ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_144, T_nonCriticalExtensions_144_sequence);
+ ett_rrc_URAUpdate_va40ext_IEs, URAUpdate_va40ext_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_155_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_155(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_155, T_nonCriticalExtensions_155_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtensions_15_sequence[] = {
+ { &hf_rrc_uraUpdate_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_URAUpdate_va40ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_155, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_155 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtensions_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtensions_15, T_va40NonCriticalExtensions_15_sequence);
return offset;
}
@@ -90747,7 +97015,7 @@ dissect_rrc_T_nonCriticalExtensions_144(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860NonCriticalExtensions_19_sequence[] = {
{ &hf_rrc_uraUpdate_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_URAUpdate_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_144, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_144 },
+ { &hf_rrc_va40NonCriticalExtensions_16, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtensions_15 },
{ NULL, 0, 0, NULL }
};
@@ -90800,7 +97068,7 @@ static const per_sequence_t URAUpdate_sequence[] = {
static int
dissect_rrc_URAUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 417 "../../asn1/rrc/rrc.cnf"
+#line 470 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "URAUpdate");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_URAUpdate, URAUpdate_sequence);
@@ -91156,14 +97424,14 @@ dissect_rrc_PagingType1_v860ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
-static const per_sequence_t T_nonCriticalExtensions_57_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_62_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_57(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_62(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_57, T_nonCriticalExtensions_57_sequence);
+ ett_rrc_T_nonCriticalExtensions_62, T_nonCriticalExtensions_62_sequence);
return offset;
}
@@ -91171,7 +97439,7 @@ dissect_rrc_T_nonCriticalExtensions_57(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v860NonCriticalExtensions_09_sequence[] = {
{ &hf_rrc_pagingType1_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PagingType1_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_57, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_57 },
+ { &hf_rrc_nonCriticalExtensions_62, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_62 },
{ NULL, 0, 0, NULL }
};
@@ -91223,7 +97491,7 @@ static const per_sequence_t PagingType1_sequence[] = {
static int
dissect_rrc_PagingType1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 249 "../../asn1/rrc/rrc.cnf"
+#line 294 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "PagingType1");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_PagingType1, PagingType1_sequence);
@@ -91372,14 +97640,14 @@ dissect_rrc_PUSCHCapacityRequest_v590ext(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_nonCriticalExtensions_70_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_76_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_70(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_76(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_70, T_nonCriticalExtensions_70_sequence);
+ ett_rrc_T_nonCriticalExtensions_76, T_nonCriticalExtensions_76_sequence);
return offset;
}
@@ -91387,7 +97655,7 @@ dissect_rrc_T_nonCriticalExtensions_70(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v590NonCriticalExtensions_13_sequence[] = {
{ &hf_rrc_puschCapacityRequest_v590ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PUSCHCapacityRequest_v590ext },
- { &hf_rrc_nonCriticalExtensions_70, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_70 },
+ { &hf_rrc_nonCriticalExtensions_76, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_76 },
{ NULL, 0, 0, NULL }
};
@@ -91428,7 +97696,7 @@ static const per_sequence_t PUSCHCapacityRequest_sequence[] = {
static int
dissect_rrc_PUSCHCapacityRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 273 "../../asn1/rrc/rrc.cnf"
+#line 318 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "PUSCHCapacityRequest");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_PUSCHCapacityRequest, PUSCHCapacityRequest_sequence);
@@ -91512,6 +97780,8 @@ static const value_string rrc_SIB_Type_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_SIB_Type_vals_ext = VALUE_STRING_EXT_INIT(rrc_SIB_Type_vals);
+
static int
dissect_rrc_SIB_Type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -91804,7 +98074,7 @@ static const per_sequence_t SystemInformation_FACH_sequence[] = {
static int
dissect_rrc_SystemInformation_FACH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 369 "../../asn1/rrc/rrc.cnf"
+#line 414 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "SystemInformation-FACH");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_SystemInformation_FACH, SystemInformation_FACH_sequence);
@@ -91830,14 +98100,14 @@ dissect_rrc_SystemInformationChangeIndication_v860ext_IEs(tvbuff_t *tvb _U_, int
}
-static const per_sequence_t T_nonCriticalExtensions_124_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_134_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_124(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_134(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_124, T_nonCriticalExtensions_124_sequence);
+ ett_rrc_T_nonCriticalExtensions_134, T_nonCriticalExtensions_134_sequence);
return offset;
}
@@ -91845,7 +98115,7 @@ dissect_rrc_T_nonCriticalExtensions_124(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860NonCriticalExtensions_17_sequence[] = {
{ &hf_rrc_systemInformationChangeIndication_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SystemInformationChangeIndication_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_124, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_124 },
+ { &hf_rrc_nonCriticalExtensions_134, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_134 },
{ NULL, 0, 0, NULL }
};
@@ -91881,7 +98151,7 @@ static const per_sequence_t SystemInformationChangeIndication_sequence[] = {
static int
dissect_rrc_SystemInformationChangeIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 373 "../../asn1/rrc/rrc.cnf"
+#line 418 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "SystemInformationChangeIndication");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_SystemInformationChangeIndication, SystemInformationChangeIndication_sequence);
@@ -92062,7 +98332,7 @@ static const per_sequence_t SystemInformation_BCH_sequence[] = {
static int
dissect_rrc_SystemInformation_BCH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 365 "../../asn1/rrc/rrc.cnf"
+#line 410 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "SystemInformation-BCH");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_SystemInformation_BCH, SystemInformation_BCH_sequence);
@@ -92124,6 +98394,8 @@ static const value_string rrc_MBMS_AccessProbabilityFactor_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_MBMS_AccessProbabilityFactor_vals_ext = VALUE_STRING_EXT_INIT(rrc_MBMS_AccessProbabilityFactor_vals);
+
static int
dissect_rrc_MBMS_AccessProbabilityFactor(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -92181,14 +98453,14 @@ dissect_rrc_MBMS_ServiceAccessInfoList_r6(tvbuff_t *tvb _U_, int offset _U_, asn
}
-static const per_sequence_t T_nonCriticalExtensions_156_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_167_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_156(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_167(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_156, T_nonCriticalExtensions_156_sequence);
+ ett_rrc_T_nonCriticalExtensions_167, T_nonCriticalExtensions_167_sequence);
return offset;
}
@@ -92196,13 +98468,13 @@ dissect_rrc_T_nonCriticalExtensions_156(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t MBMSAccessInformation_sequence[] = {
{ &hf_rrc_mbms_ServiceAccessInfoList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MBMS_ServiceAccessInfoList_r6 },
- { &hf_rrc_nonCriticalExtensions_156, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_156 },
+ { &hf_rrc_nonCriticalExtensions_167, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_167 },
{ NULL, 0, 0, NULL }
};
static int
dissect_rrc_MBMSAccessInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 201 "../../asn1/rrc/rrc.cnf"
+#line 246 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSAccessInformation");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_MBMSAccessInformation, MBMSAccessInformation_sequence);
@@ -92422,7 +98694,7 @@ dissect_rrc_MBMS_CommonPhyChIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_fdd_102_sequence[] = {
+static const per_sequence_t T_fdd_105_sequence[] = {
{ &hf_rrc_secondaryScramblingCode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SecondaryScramblingCode },
{ &hf_rrc_sttd_Indicator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_sf_AndCodeNumber_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SF256_AndCodeNumber },
@@ -92431,9 +98703,9 @@ static const per_sequence_t T_fdd_102_sequence[] = {
};
static int
-dissect_rrc_T_fdd_102(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_105(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_102, T_fdd_102_sequence);
+ ett_rrc_T_fdd_105, T_fdd_105_sequence);
return offset;
}
@@ -92455,54 +98727,54 @@ dissect_rrc_CommonTimeslotInfoMBMS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_tdd384_29_sequence[] = {
+static const per_sequence_t T_tdd384_30_sequence[] = {
{ &hf_rrc_commonTimeslotInfoMBMS, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CommonTimeslotInfoMBMS },
{ &hf_rrc_downlinkTimeslotsCodes, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DownlinkTimeslotsCodes },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd384_29(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_30(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_29, T_tdd384_29_sequence);
+ ett_rrc_T_tdd384_30, T_tdd384_30_sequence);
return offset;
}
-static const per_sequence_t T_tdd128_45_sequence[] = {
+static const per_sequence_t T_tdd128_47_sequence[] = {
{ &hf_rrc_commonTimeslotInfoMBMS, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CommonTimeslotInfoMBMS },
{ &hf_rrc_downlinkTimeslotsCodes_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DownlinkTimeslotsCodes_LCR_r4 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_45(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_47(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_45, T_tdd128_45_sequence);
+ ett_rrc_T_tdd128_47, T_tdd128_47_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_71_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_74_vals[] = {
{ 0, "fdd" },
{ 1, "tdd384" },
{ 2, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_71_choice[] = {
- { 0, &hf_rrc_fdd_105 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_102 },
- { 1, &hf_rrc_tdd384_32 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_29 },
- { 2, &hf_rrc_tdd128_46 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_45 },
+static const per_choice_t T_modeSpecificInfo_74_choice[] = {
+ { 0, &hf_rrc_fdd_108 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_105 },
+ { 1, &hf_rrc_tdd384_33 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_30 },
+ { 2, &hf_rrc_tdd128_48 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_47 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_71(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_74(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_71, T_modeSpecificInfo_71_choice,
+ ett_rrc_T_modeSpecificInfo_74, T_modeSpecificInfo_74_choice,
NULL);
return offset;
@@ -92510,7 +98782,7 @@ dissect_rrc_T_modeSpecificInfo_71(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t SecondaryCCPCHInfo_MBMS_r6_sequence[] = {
- { &hf_rrc_modeSpecificInfo_71, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_71 },
+ { &hf_rrc_modeSpecificInfo_74, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_74 },
{ NULL, 0, 0, NULL }
};
@@ -92584,7 +98856,7 @@ dissect_rrc_T_modulation_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_fdd_103_sequence[] = {
+static const per_sequence_t T_fdd_106_sequence[] = {
{ &hf_rrc_secondaryScramblingCode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SecondaryScramblingCode },
{ &hf_rrc_sttd_Indicator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_sf_AndCodeNumber_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SF256_AndCodeNumber },
@@ -92594,9 +98866,9 @@ static const per_sequence_t T_fdd_103_sequence[] = {
};
static int
-dissect_rrc_T_fdd_103(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_106(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_103, T_fdd_103_sequence);
+ ett_rrc_T_fdd_106, T_fdd_106_sequence);
return offset;
}
@@ -92618,7 +98890,7 @@ dissect_rrc_T_modulation_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_tdd384_30_sequence[] = {
+static const per_sequence_t T_tdd384_31_sequence[] = {
{ &hf_rrc_commonTimeslotInfoMBMS, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CommonTimeslotInfoMBMS },
{ &hf_rrc_downlinkTimeslotsCodes_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DownlinkTimeslotsCodes_r7 },
{ &hf_rrc_modulation_05 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modulation_05 },
@@ -92626,9 +98898,9 @@ static const per_sequence_t T_tdd384_30_sequence[] = {
};
static int
-dissect_rrc_T_tdd384_30(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_30, T_tdd384_30_sequence);
+ ett_rrc_T_tdd384_31, T_tdd384_31_sequence);
return offset;
}
@@ -92650,7 +98922,7 @@ dissect_rrc_T_modulation_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_tdd768_16_sequence[] = {
+static const per_sequence_t T_tdd768_17_sequence[] = {
{ &hf_rrc_commonTimeslotInfoMBMS, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CommonTimeslotInfoMBMS },
{ &hf_rrc_downlinkTimeslotsCodes_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DownlinkTimeslotsCodes_VHCR },
{ &hf_rrc_modulation_06 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modulation_06 },
@@ -92658,9 +98930,9 @@ static const per_sequence_t T_tdd768_16_sequence[] = {
};
static int
-dissect_rrc_T_tdd768_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd768_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd768_16, T_tdd768_16_sequence);
+ ett_rrc_T_tdd768_17, T_tdd768_17_sequence);
return offset;
}
@@ -92700,7 +98972,7 @@ dissect_rrc_T_modulation_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_tdd128_46_sequence[] = {
+static const per_sequence_t T_tdd128_48_sequence[] = {
{ &hf_rrc_commonTimeslotInfoMBMS, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CommonTimeslotInfoMBMS },
{ &hf_rrc_downlinkTimeslotsCodes_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DownlinkTimeslotsCodes_LCR_r4 },
{ &hf_rrc_mbsfnSpecialTimeSlot, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TimeSlotLCR_ext },
@@ -92709,15 +98981,15 @@ static const per_sequence_t T_tdd128_46_sequence[] = {
};
static int
-dissect_rrc_T_tdd128_46(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_48(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_46, T_tdd128_46_sequence);
+ ett_rrc_T_tdd128_48, T_tdd128_48_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_72_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_75_vals[] = {
{ 0, "fdd" },
{ 1, "tdd384" },
{ 2, "tdd768" },
@@ -92725,18 +98997,18 @@ static const value_string rrc_T_modeSpecificInfo_72_vals[] = {
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_72_choice[] = {
- { 0, &hf_rrc_fdd_106 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_103 },
- { 1, &hf_rrc_tdd384_33 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_30 },
- { 2, &hf_rrc_tdd768_19 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_16 },
- { 3, &hf_rrc_tdd128_47 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_46 },
+static const per_choice_t T_modeSpecificInfo_75_choice[] = {
+ { 0, &hf_rrc_fdd_109 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_106 },
+ { 1, &hf_rrc_tdd384_34 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_31 },
+ { 2, &hf_rrc_tdd768_20 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_17 },
+ { 3, &hf_rrc_tdd128_49 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_48 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_72(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_75(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_72, T_modeSpecificInfo_72_choice,
+ ett_rrc_T_modeSpecificInfo_75, T_modeSpecificInfo_75_choice,
NULL);
return offset;
@@ -92744,7 +99016,7 @@ dissect_rrc_T_modeSpecificInfo_72(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t SecondaryCCPCHInfo_MBMS_r7_sequence[] = {
- { &hf_rrc_modeSpecificInfo_72, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_72 },
+ { &hf_rrc_modeSpecificInfo_75, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_75 },
{ NULL, 0, 0, NULL }
};
@@ -93002,14 +99274,14 @@ dissect_rrc_MBMSCommonPTMRBInformation_v860ext_IEs(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_nonCriticalExtensions_157_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_168_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_157(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_168(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_157, T_nonCriticalExtensions_157_sequence);
+ ett_rrc_T_nonCriticalExtensions_168, T_nonCriticalExtensions_168_sequence);
return offset;
}
@@ -93017,7 +99289,7 @@ dissect_rrc_T_nonCriticalExtensions_157(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860NonCriticalExtensions_23_sequence[] = {
{ &hf_rrc_mbmsCommonPTMRBInformation_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MBMSCommonPTMRBInformation_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_157, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_157 },
+ { &hf_rrc_nonCriticalExtensions_168, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_168 },
{ NULL, 0, 0, NULL }
};
@@ -93071,7 +99343,7 @@ static const per_sequence_t MBMSCommonPTMRBInformation_sequence[] = {
static int
dissect_rrc_MBMSCommonPTMRBInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 205 "../../asn1/rrc/rrc.cnf"
+#line 250 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSCommonPTMRBInformation");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_MBMSCommonPTMRBInformation, MBMSCommonPTMRBInformation_sequence);
@@ -93422,14 +99694,14 @@ dissect_rrc_MBMSCurrentCellPTMRBInfo_v770ext_IEs(tvbuff_t *tvb _U_, int offset _
}
-static const per_sequence_t T_nonCriticalExtensions_158_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_169_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_158(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_169(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_158, T_nonCriticalExtensions_158_sequence);
+ ett_rrc_T_nonCriticalExtensions_169, T_nonCriticalExtensions_169_sequence);
return offset;
}
@@ -93437,7 +99709,7 @@ dissect_rrc_T_nonCriticalExtensions_158(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v770NonCriticalExtensions_34_sequence[] = {
{ &hf_rrc_mbmsCurrentCellPTMRBInfo_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MBMSCurrentCellPTMRBInfo_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_158, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_158 },
+ { &hf_rrc_nonCriticalExtensions_169, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_169 },
{ NULL, 0, 0, NULL }
};
@@ -93459,7 +99731,7 @@ static const per_sequence_t MBMSCurrentCellPTMRBInformation_sequence[] = {
static int
dissect_rrc_MBMSCurrentCellPTMRBInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 209 "../../asn1/rrc/rrc.cnf"
+#line 254 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSCurrentCellPTMRBInformation");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_MBMSCurrentCellPTMRBInformation, MBMSCurrentCellPTMRBInformation_sequence);
@@ -93626,7 +99898,7 @@ dissect_rrc_MBMS_NI_CountPerFrame(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_fdd_174_sequence[] = {
+static const per_sequence_t T_fdd_179_sequence[] = {
{ &hf_rrc_channelisationCode256, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_ChannelisationCode256 },
{ &hf_rrc_ni_CountPerFrame, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MBMS_NI_CountPerFrame },
{ &hf_rrc_sttd_Indicator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
@@ -93634,9 +99906,9 @@ static const per_sequence_t T_fdd_174_sequence[] = {
};
static int
-dissect_rrc_T_fdd_174(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_179(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_174, T_fdd_174_sequence);
+ ett_rrc_T_fdd_179, T_fdd_179_sequence);
return offset;
}
@@ -93695,7 +99967,7 @@ dissect_rrc_MBMS_MICHNotificationIndLength(tvbuff_t *tvb _U_, int offset _U_, as
}
-static const per_sequence_t T_tdd384_40_sequence[] = {
+static const per_sequence_t T_tdd384_41_sequence[] = {
{ &hf_rrc_timeslot , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TimeslotNumber },
{ &hf_rrc_midambleShiftAndBurstType_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MidambleShiftAndBurstType },
{ &hf_rrc_channelisationCode_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_TS_ChannelisationCode },
@@ -93705,9 +99977,9 @@ static const per_sequence_t T_tdd384_40_sequence[] = {
};
static int
-dissect_rrc_T_tdd384_40(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_41(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_40, T_tdd384_40_sequence);
+ ett_rrc_T_tdd384_41, T_tdd384_41_sequence);
return offset;
}
@@ -93727,7 +99999,7 @@ dissect_rrc_SEQUENCE_SIZE_1_2_OF_DL_TS_ChannelisationCode(tvbuff_t *tvb _U_, int
}
-static const per_sequence_t T_tdd128_61_sequence[] = {
+static const per_sequence_t T_tdd128_65_sequence[] = {
{ &hf_rrc_timeslot_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TimeslotNumber_LCR_r4 },
{ &hf_rrc_midambleShiftAndBurstType_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MidambleShiftAndBurstType_LCR_r4 },
{ &hf_rrc_channelisationCodeList_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SEQUENCE_SIZE_1_2_OF_DL_TS_ChannelisationCode },
@@ -93737,32 +100009,32 @@ static const per_sequence_t T_tdd128_61_sequence[] = {
};
static int
-dissect_rrc_T_tdd128_61(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_65(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_61, T_tdd128_61_sequence);
+ ett_rrc_T_tdd128_65, T_tdd128_65_sequence);
return offset;
}
-static const value_string rrc_T_mode_02_vals[] = {
+static const value_string rrc_T_mode_03_vals[] = {
{ 0, "fdd" },
{ 1, "tdd384" },
{ 2, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_mode_02_choice[] = {
- { 0, &hf_rrc_fdd_180 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_174 },
- { 1, &hf_rrc_tdd384_45 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_40 },
- { 2, &hf_rrc_tdd128_64 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_61 },
+static const per_choice_t T_mode_03_choice[] = {
+ { 0, &hf_rrc_fdd_185 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_179 },
+ { 1, &hf_rrc_tdd384_46 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_41 },
+ { 2, &hf_rrc_tdd128_68 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_65 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_mode_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_mode_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_mode_02, T_mode_02_choice,
+ ett_rrc_T_mode_03, T_mode_03_choice,
NULL);
return offset;
@@ -93771,7 +100043,7 @@ dissect_rrc_T_mode_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p
static const per_sequence_t MBMS_MICHConfigurationInfo_r6_sequence[] = {
{ &hf_rrc_michPowerOffset , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MBMS_MICHPowerOffset },
- { &hf_rrc_mode_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_mode_02 },
+ { &hf_rrc_mode_03 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_mode_03 },
{ NULL, 0, 0, NULL }
};
@@ -93808,66 +100080,66 @@ dissect_rrc_MBMSGeneralInformation_v6b0ext_IEs(tvbuff_t *tvb _U_, int offset _U_
}
-static const per_sequence_t T_tdd384_41_sequence[] = {
+static const per_sequence_t T_tdd384_42_sequence[] = {
{ &hf_rrc_midambleShiftAndBurstType_05, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MidambleShiftAndBurstType_r7 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd384_41(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_42(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_41, T_tdd384_41_sequence);
+ ett_rrc_T_tdd384_42, T_tdd384_42_sequence);
return offset;
}
-static const per_sequence_t T_tdd768_21_sequence[] = {
+static const per_sequence_t T_tdd768_22_sequence[] = {
{ &hf_rrc_midambleShiftAndBurstType_06, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MidambleShiftAndBurstType_VHCR },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd768_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd768_22(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd768_21, T_tdd768_21_sequence);
+ ett_rrc_T_tdd768_22, T_tdd768_22_sequence);
return offset;
}
-static const per_sequence_t T_tdd128_62_sequence[] = {
+static const per_sequence_t T_tdd128_66_sequence[] = {
{ &hf_rrc_mbsfnSpecialTimeSlot, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TimeSlotLCR_ext },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_62(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_66(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_62, T_tdd128_62_sequence);
+ ett_rrc_T_tdd128_66, T_tdd128_66_sequence);
return offset;
}
-static const value_string rrc_T_mode_03_vals[] = {
+static const value_string rrc_T_mode_04_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd768" },
{ 2, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_mode_03_choice[] = {
- { 0, &hf_rrc_tdd384_46 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_41 },
- { 1, &hf_rrc_tdd768_24 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_21 },
- { 2, &hf_rrc_tdd128_65 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_62 },
+static const per_choice_t T_mode_04_choice[] = {
+ { 0, &hf_rrc_tdd384_47 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_42 },
+ { 1, &hf_rrc_tdd768_25 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_22 },
+ { 2, &hf_rrc_tdd128_69 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_66 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_mode_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_mode_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_mode_03, T_mode_03_choice,
+ ett_rrc_T_mode_04, T_mode_04_choice,
NULL);
return offset;
@@ -93875,7 +100147,7 @@ dissect_rrc_T_mode_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p
static const per_sequence_t MBMS_MICHConfigurationInfo_v770ext_sequence[] = {
- { &hf_rrc_mode_03 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_mode_03 },
+ { &hf_rrc_mode_04 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_mode_04 },
{ NULL, 0, 0, NULL }
};
@@ -94098,20 +100370,20 @@ dissect_rrc_T_imb384(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr
}
-static const value_string rrc_T_mode_04_vals[] = {
+static const value_string rrc_T_mode_05_vals[] = {
{ 0, "imb384" },
{ 0, NULL }
};
-static const per_choice_t T_mode_04_choice[] = {
+static const per_choice_t T_mode_05_choice[] = {
{ 0, &hf_rrc_imb384 , ASN1_NO_EXTENSIONS , dissect_rrc_T_imb384 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_mode_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_mode_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_mode_04, T_mode_04_choice,
+ ett_rrc_T_mode_05, T_mode_05_choice,
NULL);
return offset;
@@ -94119,7 +100391,7 @@ dissect_rrc_T_mode_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p
static const per_sequence_t MBMS_MICHConfigurationInfo_v890ext_sequence[] = {
- { &hf_rrc_mode_04 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_mode_04 },
+ { &hf_rrc_mode_05 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_mode_05 },
{ NULL, 0, 0, NULL }
};
@@ -94147,14 +100419,14 @@ dissect_rrc_MBMSGeneralInformation_v890ext_IEs(tvbuff_t *tvb _U_, int offset _U_
}
-static const per_sequence_t T_nonCriticalExtensions_159_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_170_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_159(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_170(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_159, T_nonCriticalExtensions_159_sequence);
+ ett_rrc_T_nonCriticalExtensions_170, T_nonCriticalExtensions_170_sequence);
return offset;
}
@@ -94162,7 +100434,7 @@ dissect_rrc_T_nonCriticalExtensions_159(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v890NoncriticalExtensions_sequence[] = {
{ &hf_rrc_mbmsGeneralInformation_v890ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MBMSGeneralInformation_v890ext_IEs },
- { &hf_rrc_nonCriticalExtensions_159, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_159 },
+ { &hf_rrc_nonCriticalExtensions_170, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_170 },
{ NULL, 0, 0, NULL }
};
@@ -94232,7 +100504,7 @@ static const per_sequence_t MBMSGeneralInformation_sequence[] = {
static int
dissect_rrc_MBMSGeneralInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 213 "../../asn1/rrc/rrc.cnf"
+#line 258 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSGeneralInformation");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_MBMSGeneralInformation, MBMSGeneralInformation_sequence);
@@ -94586,7 +100858,7 @@ dissect_rrc_MBMS_L1CombiningSchedule(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_fdd_175_sequence[] = {
+static const per_sequence_t T_fdd_180_sequence[] = {
{ &hf_rrc_softComb_TimingOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MBMS_SoftComb_TimingOffset },
{ &hf_rrc_mbms_L1CombiningTransmTimeDiff, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MBMS_L1CombiningTransmTimeDiff },
{ &hf_rrc_mbms_L1CombiningSchedule, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MBMS_L1CombiningSchedule },
@@ -94594,9 +100866,9 @@ static const per_sequence_t T_fdd_175_sequence[] = {
};
static int
-dissect_rrc_T_fdd_175(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_180(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_175, T_fdd_175_sequence);
+ ett_rrc_T_fdd_180, T_fdd_180_sequence);
return offset;
}
@@ -94609,7 +100881,7 @@ static const value_string rrc_T_layer1Combining_vals[] = {
};
static const per_choice_t T_layer1Combining_choice[] = {
- { 0, &hf_rrc_fdd_181 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_175 },
+ { 0, &hf_rrc_fdd_186 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_180 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -94785,7 +101057,7 @@ dissect_rrc_SecondaryCCPCHInfoDiff_MBMS(tvbuff_t *tvb _U_, int offset _U_, asn1_
}
-static const per_sequence_t T_fdd_176_sequence[] = {
+static const per_sequence_t T_fdd_181_sequence[] = {
{ &hf_rrc_softComb_TimingOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MBMS_SoftComb_TimingOffset },
{ &hf_rrc_mbms_L1CombiningTransmTimeDiff, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MBMS_L1CombiningTransmTimeDiff },
{ &hf_rrc_mbms_L1CombiningSchedule, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MBMS_L1CombiningSchedule },
@@ -94793,9 +101065,9 @@ static const per_sequence_t T_fdd_176_sequence[] = {
};
static int
-dissect_rrc_T_fdd_176(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_181(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_176, T_fdd_176_sequence);
+ ett_rrc_T_fdd_181, T_fdd_181_sequence);
return offset;
}
@@ -94808,7 +101080,7 @@ static const value_string rrc_T_layer1Combining_01_vals[] = {
};
static const per_choice_t T_layer1Combining_01_choice[] = {
- { 0, &hf_rrc_fdd_182 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_176 },
+ { 0, &hf_rrc_fdd_187 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_181 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -94869,14 +101141,14 @@ dissect_rrc_MBMSNeighbouringCellPTMRBInformation_v770ext_IEs(tvbuff_t *tvb _U_,
}
-static const per_sequence_t T_nonCriticalExtensions_162_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_173_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_162(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_173(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_162, T_nonCriticalExtensions_162_sequence);
+ ett_rrc_T_nonCriticalExtensions_173, T_nonCriticalExtensions_173_sequence);
return offset;
}
@@ -94884,7 +101156,7 @@ dissect_rrc_T_nonCriticalExtensions_162(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v770NonCriticalExtensions_37_sequence[] = {
{ &hf_rrc_mbmsNeighbouringCellPTMRBInformation_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MBMSNeighbouringCellPTMRBInformation_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_162, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_162 },
+ { &hf_rrc_nonCriticalExtensions_173, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_173 },
{ NULL, 0, 0, NULL }
};
@@ -94906,7 +101178,7 @@ static const per_sequence_t MBMSNeighbouringCellPTMRBInformation_sequence[] = {
static int
dissect_rrc_MBMSNeighbouringCellPTMRBInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 225 "../../asn1/rrc/rrc.cnf"
+#line 270 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSNeighbouringCellPTMRBInformation");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_MBMSNeighbouringCellPTMRBInformation, MBMSNeighbouringCellPTMRBInformation_sequence);
@@ -95007,14 +101279,14 @@ dissect_rrc_MBMSUnmodifiedServicesInformation_v770ext_IEs(tvbuff_t *tvb _U_, int
}
-static const per_sequence_t T_nonCriticalExtensions_164_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_175_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_164(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_175(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_164, T_nonCriticalExtensions_164_sequence);
+ ett_rrc_T_nonCriticalExtensions_175, T_nonCriticalExtensions_175_sequence);
return offset;
}
@@ -95022,7 +101294,7 @@ dissect_rrc_T_nonCriticalExtensions_164(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v770NonCriticalExtensions_38_sequence[] = {
{ &hf_rrc_mbmsUnmodifiedServicesInformation_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MBMSUnmodifiedServicesInformation_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_164, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_164 },
+ { &hf_rrc_nonCriticalExtensions_175, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_175 },
{ NULL, 0, 0, NULL }
};
@@ -95043,7 +101315,7 @@ static const per_sequence_t MBMSUnmodifiedServicesInformation_sequence[] = {
static int
dissect_rrc_MBMSUnmodifiedServicesInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 233 "../../asn1/rrc/rrc.cnf"
+#line 278 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSUnmodifiedServicesInformation");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_MBMSUnmodifiedServicesInformation, MBMSUnmodifiedServicesInformation_sequence);
@@ -95178,14 +101450,14 @@ dissect_rrc_MBMS_ServiceSchedulingInfoList_r6(tvbuff_t *tvb _U_, int offset _U_,
}
-static const per_sequence_t T_nonCriticalExtensions_163_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_174_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_163(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_174(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_163, T_nonCriticalExtensions_163_sequence);
+ ett_rrc_T_nonCriticalExtensions_174, T_nonCriticalExtensions_174_sequence);
return offset;
}
@@ -95193,13 +101465,13 @@ dissect_rrc_T_nonCriticalExtensions_163(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t MBMSSchedulingInformation_sequence[] = {
{ &hf_rrc_serviceSchedulingInfoList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MBMS_ServiceSchedulingInfoList_r6 },
- { &hf_rrc_nonCriticalExtensions_163, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_163 },
+ { &hf_rrc_nonCriticalExtensions_174, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_174 },
{ NULL, 0, 0, NULL }
};
static int
dissect_rrc_MBMSSchedulingInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 229 "../../asn1/rrc/rrc.cnf"
+#line 274 "../../asn1/rrc/rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSSchedulingInformation");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_MBMSSchedulingInformation, MBMSSchedulingInformation_sequence);
@@ -95294,14 +101566,14 @@ dissect_rrc_CellUpdate_v7g0ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_nonCriticalExtensions_11_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_12_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_11, T_nonCriticalExtensions_11_sequence);
+ ett_rrc_T_nonCriticalExtensions_12, T_nonCriticalExtensions_12_sequence);
return offset;
}
@@ -95309,7 +101581,7 @@ dissect_rrc_T_nonCriticalExtensions_11(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v7g0NonCriticalExtensions_02_sequence[] = {
{ &hf_rrc_cellUpdate_v7g0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellUpdate_v7g0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_11, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_11 },
+ { &hf_rrc_nonCriticalExtensions_12, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_12 },
{ NULL, 0, 0, NULL }
};
@@ -95337,14 +101609,14 @@ dissect_rrc_CellUpdate_r3_add_ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
}
-static const per_sequence_t T_nonCriticalExtensions_19_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_21_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_19, T_nonCriticalExtensions_19_sequence);
+ ett_rrc_T_nonCriticalExtensions_21, T_nonCriticalExtensions_21_sequence);
return offset;
}
@@ -95352,7 +101624,7 @@ dissect_rrc_T_nonCriticalExtensions_19(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v7g0NonCriticalExtensions_04_sequence[] = {
{ &hf_rrc_cellUpdateConfirm_v7g0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellUpdateConfirm_v7g0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_19, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_19 },
+ { &hf_rrc_nonCriticalExtensions_21, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_21 },
{ NULL, 0, 0, NULL }
};
@@ -95893,7 +102165,7 @@ dissect_rrc_T_specificationMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
static const per_sequence_t HandoverToUTRANCommand_r3_IEs_sequence[] = {
{ &hf_rrc_new_U_RNTI_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_U_RNTI_Short },
- { &hf_rrc_dummy_06 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ActivationTime },
+ { &hf_rrc_dummy_07 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ActivationTime },
{ &hf_rrc_cipheringAlgorithm, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CipheringAlgorithm },
{ &hf_rrc_specificationMode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode },
{ &hf_rrc_maxAllowedUL_TX_Power, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MaxAllowedUL_TX_Power },
@@ -95909,14 +102181,14 @@ dissect_rrc_HandoverToUTRANCommand_r3_IEs(tvbuff_t *tvb _U_, int offset _U_, asn
}
-static const per_sequence_t T_nonCriticalExtensions_31_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_34_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_34(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_31, T_nonCriticalExtensions_31_sequence);
+ ett_rrc_T_nonCriticalExtensions_34, T_nonCriticalExtensions_34_sequence);
return offset;
}
@@ -95924,7 +102196,7 @@ dissect_rrc_T_nonCriticalExtensions_31(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_r3_08_sequence[] = {
{ &hf_rrc_handoverToUTRANCommand_r3, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HandoverToUTRANCommand_r3_IEs },
- { &hf_rrc_nonCriticalExtensions_31, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_31 },
+ { &hf_rrc_nonCriticalExtensions_34, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_34 },
{ NULL, 0, 0, NULL }
};
@@ -96307,14 +102579,14 @@ dissect_rrc_HandoverToUTRANCommand_r4_IEs(tvbuff_t *tvb _U_, int offset _U_, asn
}
-static const per_sequence_t T_nonCriticalExtensions_32_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_35_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_35(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_32, T_nonCriticalExtensions_32_sequence);
+ ett_rrc_T_nonCriticalExtensions_35, T_nonCriticalExtensions_35_sequence);
return offset;
}
@@ -96322,7 +102594,7 @@ dissect_rrc_T_nonCriticalExtensions_32(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_r4_02_sequence[] = {
{ &hf_rrc_handoverToUTRANCommand_r4, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HandoverToUTRANCommand_r4_IEs },
- { &hf_rrc_nonCriticalExtensions_32, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_32 },
+ { &hf_rrc_nonCriticalExtensions_35, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_35 },
{ NULL, 0, 0, NULL }
};
@@ -96583,14 +102855,14 @@ dissect_rrc_HandoverToUTRANCommand_r5_IEs(tvbuff_t *tvb _U_, int offset _U_, asn
}
-static const per_sequence_t T_nonCriticalExtensions_33_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_36_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_33(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_36(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_33, T_nonCriticalExtensions_33_sequence);
+ ett_rrc_T_nonCriticalExtensions_36, T_nonCriticalExtensions_36_sequence);
return offset;
}
@@ -96598,7 +102870,7 @@ dissect_rrc_T_nonCriticalExtensions_33(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_r5_02_sequence[] = {
{ &hf_rrc_handoverToUTRANCommand_r5, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HandoverToUTRANCommand_r5_IEs },
- { &hf_rrc_nonCriticalExtensions_33, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_33 },
+ { &hf_rrc_nonCriticalExtensions_36, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_36 },
{ NULL, 0, 0, NULL }
};
@@ -96853,14 +103125,14 @@ dissect_rrc_HandoverToUTRANCommand_v6b0ext_IEs(tvbuff_t *tvb _U_, int offset _U_
}
-static const per_sequence_t T_nonCriticalExtensions_34_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_37_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_34(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_37(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_34, T_nonCriticalExtensions_34_sequence);
+ ett_rrc_T_nonCriticalExtensions_37, T_nonCriticalExtensions_37_sequence);
return offset;
}
@@ -96868,7 +103140,7 @@ dissect_rrc_T_nonCriticalExtensions_34(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v6b0NonCriticalExtensions_04_sequence[] = {
{ &hf_rrc_handoverToUTRANCommand_v6b0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HandoverToUTRANCommand_v6b0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_34, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_34 },
+ { &hf_rrc_nonCriticalExtensions_37, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_37 },
{ NULL, 0, 0, NULL }
};
@@ -97175,14 +103447,14 @@ dissect_rrc_HandoverToUTRANCommand_v7d0ext_IEs(tvbuff_t *tvb _U_, int offset _U_
}
-static const per_sequence_t T_nonCriticalExtensions_35_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_38_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_35(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_38(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_35, T_nonCriticalExtensions_35_sequence);
+ ett_rrc_T_nonCriticalExtensions_38, T_nonCriticalExtensions_38_sequence);
return offset;
}
@@ -97190,7 +103462,7 @@ dissect_rrc_T_nonCriticalExtensions_35(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v7d0NonCriticalExtensions_02_sequence[] = {
{ &hf_rrc_handoverToUTRANCommand_v7d0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HandoverToUTRANCommand_v7d0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_35, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_35 },
+ { &hf_rrc_nonCriticalExtensions_38, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_38 },
{ NULL, 0, 0, NULL }
};
@@ -97294,7 +103566,7 @@ dissect_rrc_DLUL_HSPA_Information_r8(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
static const per_sequence_t T_defaultConfig_05_sequence[] = {
{ &hf_rrc_defaultConfigMode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigMode },
{ &hf_rrc_defaultConfigIdentity_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigIdentity_r6 },
- { &hf_rrc_dlul_HSPA_Information, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DLUL_HSPA_Information_r8 },
+ { &hf_rrc_dummy_08 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DLUL_HSPA_Information_r8 },
{ NULL, 0, 0, NULL }
};
@@ -97489,7 +103761,7 @@ static const per_sequence_t HandoverToUTRANCommand_r8_IEs_sequence[] = {
{ &hf_rrc_new_H_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_H_RNTI },
{ &hf_rrc_newPrimary_E_RNTI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RNTI },
{ &hf_rrc_newSecondary_E_RNTI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RNTI },
- { &hf_rrc_defaultConfigForCellFACH, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultConfigForCellFACH },
+ { &hf_rrc_dummy_06 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultConfigForCellFACH },
{ &hf_rrc_specificationMode_05, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_05 },
{ &hf_rrc_maxAllowedUL_TX_Power, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MaxAllowedUL_TX_Power },
{ NULL, 0, 0, NULL }
@@ -97532,14 +103804,14 @@ dissect_rrc_HandoverToUTRANCommand_v8a0ext_IEs(tvbuff_t *tvb _U_, int offset _U_
}
-static const per_sequence_t T_nonCriticalExtensions_36_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_39_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_36(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_39(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_36, T_nonCriticalExtensions_36_sequence);
+ ett_rrc_T_nonCriticalExtensions_39, T_nonCriticalExtensions_39_sequence);
return offset;
}
@@ -97547,7 +103819,7 @@ dissect_rrc_T_nonCriticalExtensions_36(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v8a0NonCriticalExtensions_02_sequence[] = {
{ &hf_rrc_handoverToUTRANCommand_v8a0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HandoverToUTRANCommand_v8a0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_36, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_36 },
+ { &hf_rrc_nonCriticalExtensions_39, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_39 },
{ NULL, 0, 0, NULL }
};
@@ -97651,7 +103923,7 @@ dissect_rrc_DLUL_HSPA_Information_r9(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
static const per_sequence_t T_defaultConfig_06_sequence[] = {
{ &hf_rrc_defaultConfigMode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigMode },
{ &hf_rrc_defaultConfigIdentity_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigIdentity_r6 },
- { &hf_rrc_dlul_HSPA_Information_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DLUL_HSPA_Information_r9 },
+ { &hf_rrc_dummy_09 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DLUL_HSPA_Information_r9 },
{ NULL, 0, 0, NULL }
};
@@ -97861,14 +104133,14 @@ dissect_rrc_HandoverToUTRANCommand_r9_IEs(tvbuff_t *tvb _U_, int offset _U_, asn
}
-static const per_sequence_t T_nonCriticalExtensions_37_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_40_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_37(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_40(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_37, T_nonCriticalExtensions_37_sequence);
+ ett_rrc_T_nonCriticalExtensions_40, T_nonCriticalExtensions_40_sequence);
return offset;
}
@@ -97876,7 +104148,7 @@ dissect_rrc_T_nonCriticalExtensions_37(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_r9_03_sequence[] = {
{ &hf_rrc_handoverToUTRANCommand_r9, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HandoverToUTRANCommand_r9_IEs },
- { &hf_rrc_nonCriticalExtensions_37, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_37 },
+ { &hf_rrc_nonCriticalExtensions_40, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_40 },
{ NULL, 0, 0, NULL }
};
@@ -97889,145 +104161,451 @@ dissect_rrc_T_r9_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_30_sequence[] = {
+static const per_sequence_t T_complete_07_sequence[] = {
+ { &hf_rrc_srb_InformationSetupList_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SRB_InformationSetupList_r8 },
+ { &hf_rrc_rab_InformationSetupList_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationSetupList_r8 },
+ { &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_CommonTransChInfo_r4 },
+ { &hf_rrc_ul_AddReconfTransChInfoList_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_AddReconfTransChInfoList_r8 },
+ { &hf_rrc_dl_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_CommonTransChInfo_r4 },
+ { &hf_rrc_dl_AddReconfTransChInfoList_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_AddReconfTransChInfoList_r9 },
+ { &hf_rrc_ul_DPCH_Info_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_DPCH_Info_r7 },
+ { &hf_rrc_ul_EDCH_Information_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_EDCH_Information_r9 },
+ { &hf_rrc_dl_HSPDSCH_Information_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_HSPDSCH_Information_r9 },
+ { &hf_rrc_dl_CommonInformation_06, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_CommonInformation_r10 },
+ { &hf_rrc_dl_InformationPerRL_List_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_InformationPerRL_List_r7 },
+ { &hf_rrc_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_FrequencyInfo },
+ { &hf_rrc_multi_frequencyInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Multi_frequencyInfo_LCR_r7 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_30(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_complete_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_30, T_criticalExtensions_30_sequence);
+ ett_rrc_T_complete_07, T_complete_07_sequence);
return offset;
}
-static const value_string rrc_T_criticalExtensions_29_vals[] = {
+static const per_sequence_t DLUL_HSPA_Information_r10_sequence[] = {
+ { &hf_rrc_ul_EDCH_Information_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_EDCH_Information_r9 },
+ { &hf_rrc_dl_CommonInformation_06, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_CommonInformation_r10 },
+ { &hf_rrc_dl_InformationPerRL_List_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_InformationPerRL_List_r7 },
+ { &hf_rrc_dl_HSPDSCH_Information_06, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_HSPDSCH_Information_r9 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_DLUL_HSPA_Information_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_DLUL_HSPA_Information_r10, DLUL_HSPA_Information_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_defaultConfig_07_sequence[] = {
+ { &hf_rrc_defaultConfigMode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigMode },
+ { &hf_rrc_defaultConfigIdentity_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DefaultConfigIdentity_r6 },
+ { &hf_rrc_dummy_10 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DLUL_HSPA_Information_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_defaultConfig_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_defaultConfig_07, T_defaultConfig_07_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_preConfigMode_07_vals[] = {
+ { 0, "predefinedConfigIdentity" },
+ { 1, "defaultConfig" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_preConfigMode_07_choice[] = {
+ { 0, &hf_rrc_predefinedConfigIdentity, ASN1_NO_EXTENSIONS , dissect_rrc_PredefinedConfigIdentity },
+ { 1, &hf_rrc_defaultConfig_07, ASN1_NO_EXTENSIONS , dissect_rrc_T_defaultConfig_07 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_preConfigMode_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_preConfigMode_07, T_preConfigMode_07_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_fdd_16_sequence[] = {
+ { &hf_rrc_ul_DPCH_Info_03 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_DPCH_InfoPostFDD },
+ { &hf_rrc_dl_CommonInformationPost, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_CommonInformationPost },
+ { &hf_rrc_dl_InformationPerRL_List_06, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_InformationPerRL_ListPostFDD },
+ { &hf_rrc_frequencyInfo_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_FrequencyInfoFDD },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_fdd_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_fdd_16, T_fdd_16_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_tdd384_06_sequence[] = {
+ { &hf_rrc_ul_DPCH_Info_04 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_DPCH_InfoPostTDD },
+ { &hf_rrc_dl_InformationPerRL, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_InformationPerRL_PostTDD },
+ { &hf_rrc_frequencyInfo_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_FrequencyInfoTDD },
+ { &hf_rrc_primaryCCPCH_TX_Power, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCCPCH_TX_Power },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_tdd384_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_tdd384_06, T_tdd384_06_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_tdd128_06_sequence[] = {
+ { &hf_rrc_ul_DPCH_Info_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_DPCH_Info_r7 },
+ { &hf_rrc_dl_InformationPerRL_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_InformationPerRL_PostTDD_LCR_r4 },
+ { &hf_rrc_frequencyInfo_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_FrequencyInfoTDD },
+ { &hf_rrc_primaryCCPCH_TX_Power, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCCPCH_TX_Power },
+ { &hf_rrc_multi_frequencyInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Multi_frequencyInfo_LCR_r7 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_tdd128_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_tdd128_06, T_tdd128_06_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_tdd768_03_sequence[] = {
+ { &hf_rrc_ul_DPCH_Info_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_DPCH_Info_r7 },
+ { &hf_rrc_dl_InformationPerRL_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_InformationPerRL_List_r7 },
+ { &hf_rrc_frequencyInfo_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_FrequencyInfoTDD },
+ { &hf_rrc_primaryCCPCH_TX_Power, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCCPCH_TX_Power },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_tdd768_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_tdd768_03, T_tdd768_03_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_tdd_07_vals[] = {
+ { 0, "tdd384" },
+ { 1, "tdd128" },
+ { 2, "tdd768" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_tdd_07_choice[] = {
+ { 0, &hf_rrc_tdd384_06 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_06 },
+ { 1, &hf_rrc_tdd128_06 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_06 },
+ { 2, &hf_rrc_tdd768_03 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_03 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_tdd_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_tdd_07, T_tdd_07_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_modeSpecificInfo_10_vals[] = {
+ { 0, "fdd" },
+ { 1, "tdd" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_modeSpecificInfo_10_choice[] = {
+ { 0, &hf_rrc_fdd_16 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_16 },
+ { 1, &hf_rrc_tdd_08 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_07 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_modeSpecificInfo_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_modeSpecificInfo_10, T_modeSpecificInfo_10_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_preconfiguration_07_sequence[] = {
+ { &hf_rrc_preConfigMode_07, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_preConfigMode_07 },
+ { &hf_rrc_rab_Info , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_Info_Post },
+ { &hf_rrc_modeSpecificInfo_10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_preconfiguration_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_preconfiguration_07, T_preconfiguration_07_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_specificationMode_07_vals[] = {
+ { 0, "complete" },
+ { 1, "preconfiguration" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_specificationMode_07_choice[] = {
+ { 0, &hf_rrc_complete_07 , ASN1_NO_EXTENSIONS , dissect_rrc_T_complete_07 },
+ { 1, &hf_rrc_preconfiguration_07, ASN1_NO_EXTENSIONS , dissect_rrc_T_preconfiguration_07 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_specificationMode_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_specificationMode_07, T_specificationMode_07_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t HandoverToUTRANCommand_r10_IEs_sequence[] = {
+ { &hf_rrc_new_U_RNTI_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_U_RNTI_Short },
+ { &hf_rrc_cipheringAlgorithm_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CipheringAlgorithm_r7 },
+ { &hf_rrc_supportForChangeOfUE_Capability, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
+ { &hf_rrc_new_H_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_H_RNTI },
+ { &hf_rrc_newPrimary_E_RNTI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RNTI },
+ { &hf_rrc_newSecondary_E_RNTI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RNTI },
+ { &hf_rrc_defaultConfigForCellFACH, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DefaultConfigForCellFACH },
+ { &hf_rrc_specificationMode_07, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_specificationMode_07 },
+ { &hf_rrc_maxAllowedUL_TX_Power, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MaxAllowedUL_TX_Power },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_HandoverToUTRANCommand_r10_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_HandoverToUTRANCommand_r10_IEs, HandoverToUTRANCommand_r10_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_41_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_41(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_41, T_nonCriticalExtensions_41_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_r10_03_sequence[] = {
+ { &hf_rrc_handoverToUTRANCommand_r10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HandoverToUTRANCommand_r10_IEs },
+ { &hf_rrc_nonCriticalExtensions_41, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_41 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_r10_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_r10_03, T_r10_03_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_criticalExtensions_34_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_34(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_34, T_criticalExtensions_34_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_criticalExtensions_33_vals[] = {
+ { 0, "r10" },
+ { 1, "criticalExtensions" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_criticalExtensions_33_choice[] = {
+ { 0, &hf_rrc_r10_03 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r10_03 },
+ { 1, &hf_rrc_criticalExtensions_34, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_34 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_33(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_33, T_criticalExtensions_33_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_criticalExtensions_32_vals[] = {
{ 0, "r9" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_29_choice[] = {
+static const per_choice_t T_criticalExtensions_32_choice[] = {
{ 0, &hf_rrc_r9_03 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r9_03 },
- { 1, &hf_rrc_criticalExtensions_30, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_30 },
+ { 1, &hf_rrc_criticalExtensions_33, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_33 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_29(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_29, T_criticalExtensions_29_choice,
+ ett_rrc_T_criticalExtensions_32, T_criticalExtensions_32_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_28_vals[] = {
+static const value_string rrc_T_criticalExtensions_31_vals[] = {
{ 0, "r8" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_28_choice[] = {
+static const per_choice_t T_criticalExtensions_31_choice[] = {
{ 0, &hf_rrc_r8_03 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r8_03 },
- { 1, &hf_rrc_criticalExtensions_29, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_29 },
+ { 1, &hf_rrc_criticalExtensions_32, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_32 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_28(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_28, T_criticalExtensions_28_choice,
+ ett_rrc_T_criticalExtensions_31, T_criticalExtensions_31_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_27_vals[] = {
+static const value_string rrc_T_criticalExtensions_30_vals[] = {
{ 0, "r7" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_27_choice[] = {
+static const per_choice_t T_criticalExtensions_30_choice[] = {
{ 0, &hf_rrc_r7_03 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r7_03 },
- { 1, &hf_rrc_criticalExtensions_28, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_28 },
+ { 1, &hf_rrc_criticalExtensions_31, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_31 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_27(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_30(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_27, T_criticalExtensions_27_choice,
+ ett_rrc_T_criticalExtensions_30, T_criticalExtensions_30_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_26_vals[] = {
+static const value_string rrc_T_criticalExtensions_29_vals[] = {
{ 0, "r6" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_26_choice[] = {
+static const per_choice_t T_criticalExtensions_29_choice[] = {
{ 0, &hf_rrc_r6_03 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r6_03 },
- { 1, &hf_rrc_criticalExtensions_27, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_27 },
+ { 1, &hf_rrc_criticalExtensions_30, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_30 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_26(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_29(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_26, T_criticalExtensions_26_choice,
+ ett_rrc_T_criticalExtensions_29, T_criticalExtensions_29_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_25_vals[] = {
+static const value_string rrc_T_criticalExtensions_28_vals[] = {
{ 0, "r5" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_25_choice[] = {
+static const per_choice_t T_criticalExtensions_28_choice[] = {
{ 0, &hf_rrc_r5_02 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r5_02 },
- { 1, &hf_rrc_criticalExtensions_26, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_26 },
+ { 1, &hf_rrc_criticalExtensions_29, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_29 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_25(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_28(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_25, T_criticalExtensions_25_choice,
+ ett_rrc_T_criticalExtensions_28, T_criticalExtensions_28_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_24_vals[] = {
+static const value_string rrc_T_criticalExtensions_27_vals[] = {
{ 0, "r4" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_24_choice[] = {
+static const per_choice_t T_criticalExtensions_27_choice[] = {
{ 0, &hf_rrc_r4_02 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r4_02 },
- { 1, &hf_rrc_criticalExtensions_25, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_25 },
+ { 1, &hf_rrc_criticalExtensions_28, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_28 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_27(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_24, T_criticalExtensions_24_choice,
+ ett_rrc_T_criticalExtensions_27, T_criticalExtensions_27_choice,
NULL);
return offset;
@@ -98042,7 +104620,7 @@ static const value_string rrc_HandoverToUTRANCommand_vals[] = {
static const per_choice_t HandoverToUTRANCommand_choice[] = {
{ 0, &hf_rrc_r3_08 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r3_08 },
- { 1, &hf_rrc_criticalExtensions_24, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_24 },
+ { 1, &hf_rrc_criticalExtensions_27, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_27 },
{ 0, NULL, 0, NULL }
};
@@ -98070,14 +104648,14 @@ dissect_rrc_InitialDirectTransfer_v7g0ext_IEs(tvbuff_t *tvb _U_, int offset _U_,
}
-static const per_sequence_t T_nonCriticalExtensions_40_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_44_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_40(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_44(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_40, T_nonCriticalExtensions_40_sequence);
+ ett_rrc_T_nonCriticalExtensions_44, T_nonCriticalExtensions_44_sequence);
return offset;
}
@@ -98085,7 +104663,7 @@ dissect_rrc_T_nonCriticalExtensions_40(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t InitialDirectTransfer_r3_add_ext_IEs_sequence[] = {
{ &hf_rrc_initialDirectTransfer_v7g0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InitialDirectTransfer_v7g0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_40, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_40 },
+ { &hf_rrc_nonCriticalExtensions_44, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_44 },
{ NULL, 0, 0, NULL }
};
@@ -98217,7 +104795,7 @@ dissect_rrc_T_uE_SecurityInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
static int
dissect_rrc_T_present(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 115 "../../asn1/rrc/rrc.cnf"
+#line 152 "../../asn1/rrc/rrc.cnf"
tvbuff_t *ue_radio_access_cap_info_tvb=NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -98464,22 +105042,22 @@ dissect_rrc_RF_CapabBandListFDDComp(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
-static const value_string rrc_T_fdd_44_vals[] = {
+static const value_string rrc_T_fdd_46_vals[] = {
{ 0, "notSupported" },
{ 1, "supported" },
{ 0, NULL }
};
-static const per_choice_t T_fdd_44_choice[] = {
+static const per_choice_t T_fdd_46_choice[] = {
{ 0, &hf_rrc_notSupported , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 1, &hf_rrc_supported_06 , ASN1_NO_EXTENSIONS , dissect_rrc_RF_CapabBandListFDDComp },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_fdd_44(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_46(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_44, T_fdd_44_choice,
+ ett_rrc_T_fdd_46, T_fdd_46_choice,
NULL);
return offset;
@@ -98531,7 +105109,7 @@ dissect_rrc_T_tdd128_RF_Capability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t RF_CapabilityComp_sequence[] = {
- { &hf_rrc_fdd_45 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_fdd_44 },
+ { &hf_rrc_fdd_47 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_fdd_46 },
{ &hf_rrc_tdd384_RF_Capability, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tdd384_RF_Capability },
{ &hf_rrc_tdd128_RF_Capability_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_tdd128_RF_Capability },
{ NULL, 0, 0, NULL }
@@ -98605,7 +105183,7 @@ dissect_rrc_RF_CapabBandListFDDComp_ext(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t UE_RadioAccessCapabilityComp_ext_sequence[] = {
- { &hf_rrc_rf_CapabilityFDDComp, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RF_CapabBandListFDDComp_ext },
+ { &hf_rrc_rf_CapabilityFDDComp_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RF_CapabBandListFDDComp_ext },
{ NULL, 0, 0, NULL }
};
@@ -98888,7 +105466,7 @@ dissect_rrc_DL_PhysChCapabilityInfoTDD_768(tvbuff_t *tvb _U_, int offset _U_, as
static const per_sequence_t T_tddPhysChCapability_768_01_sequence[] = {
- { &hf_rrc_downlinkPhysChCapability_08, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_PhysChCapabilityInfoTDD_768 },
+ { &hf_rrc_downlinkPhysChCapability_10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_PhysChCapabilityInfoTDD_768 },
{ &hf_rrc_uplinkPhysChCapability_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_PhysChCapabilityTDD },
{ NULL, 0, 0, NULL }
};
@@ -98926,15 +105504,15 @@ dissect_rrc_UL_PhysChCapabilityInfoTDD_128_v770ext(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_tddPhysChCapability_128_02_sequence[] = {
- { &hf_rrc_uplinkPhysChCapability_07, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_PhysChCapabilityInfoTDD_128_v770ext },
+static const per_sequence_t T_tddPhysChCapability_128_03_sequence[] = {
+ { &hf_rrc_uplinkPhysChCapability_08, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_PhysChCapabilityInfoTDD_128_v770ext },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tddPhysChCapability_128_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tddPhysChCapability_128_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tddPhysChCapability_128_02, T_tddPhysChCapability_128_02_sequence);
+ ett_rrc_T_tddPhysChCapability_128_03, T_tddPhysChCapability_128_03_sequence);
return offset;
}
@@ -98942,7 +105520,7 @@ dissect_rrc_T_tddPhysChCapability_128_02(tvbuff_t *tvb _U_, int offset _U_, asn1
static const per_sequence_t PhysicalChannelCapabilityInfo_v770ext_sequence[] = {
{ &hf_rrc_tddPhysChCapability_768_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_tddPhysChCapability_768_01 },
- { &hf_rrc_tddPhysChCapability_128_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_tddPhysChCapability_128_02 },
+ { &hf_rrc_tddPhysChCapability_128_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_tddPhysChCapability_128_03 },
{ NULL, 0, 0, NULL }
};
@@ -98992,8 +105570,8 @@ static const value_string rrc_UE_SpecificCapabilityInformation_LCRTDD_vals[] = {
{ 3, "nFMc-HexRx-UniTx" },
{ 4, "nFMc-HexRx-TriTx" },
{ 5, "nFMc-HexRx-HexTx" },
- { 6, "spare10" },
- { 7, "spare9" },
+ { 6, "nFMc-TwoRx-UniTx" },
+ { 7, "nFMc-TwoRx-TwoTx" },
{ 8, "spare8" },
{ 9, "spare7" },
{ 10, "spare6" },
@@ -99017,7 +105595,7 @@ dissect_rrc_UE_SpecificCapabilityInformation_LCRTDD(tvbuff_t *tvb _U_, int offse
static const per_sequence_t UE_RadioAccessCapabilityInfo_v770ext_sequence[] = {
{ &hf_rrc_rf_Capability , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RF_Capability_v770ext },
- { &hf_rrc_physicalChannelCapability_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PhysicalChannelCapabilityInfo_v770ext },
+ { &hf_rrc_physicalChannelCapability_05, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PhysicalChannelCapabilityInfo_v770ext },
{ &hf_rrc_ganssSupportIndication, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_ganssSupportIndication },
{ &hf_rrc_mac_ehsSupport_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_mac_ehsSupport_02 },
{ &hf_rrc_ue_SpecificCapabilityInformation, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_SpecificCapabilityInformation_LCRTDD },
@@ -99879,14 +106457,321 @@ dissect_rrc_InterRATHandoverInfo_v950ext_IEs(tvbuff_t *tvb _U_, int offset _U_,
}
-static const per_sequence_t T_nonCriticalExtensions_48_sequence[] = {
+static const value_string rrc_RadioFrequencyBandFDD3_vals[] = {
+ { 0, "spare64" },
+ { 1, "spare63" },
+ { 2, "bandXXV" },
+ { 3, "spare61" },
+ { 4, "spare60" },
+ { 5, "spare59" },
+ { 6, "spare58" },
+ { 7, "spare57" },
+ { 8, "spare56" },
+ { 9, "spare55" },
+ { 10, "spare54" },
+ { 11, "spare53" },
+ { 12, "spare52" },
+ { 13, "spare51" },
+ { 14, "spare50" },
+ { 15, "spare49" },
+ { 16, "spare48" },
+ { 17, "spare47" },
+ { 18, "spare46" },
+ { 19, "spare45" },
+ { 20, "spare44" },
+ { 21, "spare43" },
+ { 22, "spare42" },
+ { 23, "spare41" },
+ { 24, "spare40" },
+ { 25, "spare39" },
+ { 26, "spare38" },
+ { 27, "spare37" },
+ { 28, "spare36" },
+ { 29, "spare35" },
+ { 30, "spare34" },
+ { 31, "spare33" },
+ { 32, "spare32" },
+ { 33, "spare31" },
+ { 34, "spare30" },
+ { 35, "spare29" },
+ { 36, "spare28" },
+ { 37, "spare27" },
+ { 38, "spare26" },
+ { 39, "spare25" },
+ { 40, "spare24" },
+ { 41, "spare23" },
+ { 42, "spare22" },
+ { 43, "spare21" },
+ { 44, "spare20" },
+ { 45, "spare19" },
+ { 46, "spare18" },
+ { 47, "spare17" },
+ { 48, "spare16" },
+ { 49, "spare15" },
+ { 50, "spare14" },
+ { 51, "spare13" },
+ { 52, "spare12" },
+ { 53, "spare11" },
+ { 54, "spare10" },
+ { 55, "spare9" },
+ { 56, "spare8" },
+ { 57, "spare7" },
+ { 58, "spare6" },
+ { 59, "spare5" },
+ { 60, "spare4" },
+ { 61, "spare3" },
+ { 62, "spare2" },
+ { 63, "extension-indicator" },
+ { 0, NULL }
+};
+
+static value_string_ext rrc_RadioFrequencyBandFDD3_vals_ext = VALUE_STRING_EXT_INIT(rrc_RadioFrequencyBandFDD3_vals);
+
+
+static int
+dissect_rrc_RadioFrequencyBandFDD3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 64, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_additionalSecondaryCells_vals[] = {
+ { 0, "a1" },
+ { 1, "a2" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_additionalSecondaryCells(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_aggregatedCells_vals[] = {
+ { 0, "nc-2c" },
+ { 1, "nc-3c" },
+ { 2, "nc-4c" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_aggregatedCells(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 3, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_gapSize_vals[] = {
+ { 0, "fiveMHz" },
+ { 1, "tenMHz" },
+ { 2, "anyGapSize" },
+ { 3, "spare5" },
+ { 4, "spare4" },
+ { 5, "spare3" },
+ { 6, "spare2" },
+ { 7, "spare1" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_gapSize(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_nonContiguousMultiCellCombination22_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_nonContiguousMultiCellCombination22(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_nonContiguousMultiCellCombination31_13_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_nonContiguousMultiCellCombination31_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t NonContiguousMultiCell_sequence[] = {
+ { &hf_rrc_aggregatedCells , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_aggregatedCells },
+ { &hf_rrc_gapSize , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_gapSize },
+ { &hf_rrc_nonContiguousMultiCellCombination22, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonContiguousMultiCellCombination22 },
+ { &hf_rrc_nonContiguousMultiCellCombination31_13, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonContiguousMultiCellCombination31_13 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_48(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_NonContiguousMultiCell(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_48, T_nonCriticalExtensions_48_sequence);
+ ett_rrc_NonContiguousMultiCell, NonContiguousMultiCell_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t NonContiguousMultiCellCombinationList_sequence_of[1] = {
+ { &hf_rrc_NonContiguousMultiCellCombinationList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NonContiguousMultiCell },
+};
+
+static int
+dissect_rrc_NonContiguousMultiCellCombinationList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_NonContiguousMultiCellCombinationList, NonContiguousMultiCellCombinationList_sequence_of,
+ 1, maxNonContiguousMultiCellCombinations, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_RadioAccessCapabBandFDD4_sequence[] = {
+ { &hf_rrc_radioFrequencyBandFDD, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RadioFrequencyBandFDD },
+ { &hf_rrc_radioFrequencyBandFDD2, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RadioFrequencyBandFDD2 },
+ { &hf_rrc_radioFrequencyBandFDD3, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RadioFrequencyBandFDD3 },
+ { &hf_rrc_additionalSecondaryCells, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_additionalSecondaryCells },
+ { &hf_rrc_nonContiguousMultiCellCombinationList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NonContiguousMultiCellCombinationList },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_RadioAccessCapabBandFDD4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_RadioAccessCapabBandFDD4, UE_RadioAccessCapabBandFDD4_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_RadioAccessCapabBandFDDList4_sequence_of[1] = {
+ { &hf_rrc_UE_RadioAccessCapabBandFDDList4_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_RadioAccessCapabBandFDD4 },
+};
+
+static int
+dissect_rrc_UE_RadioAccessCapabBandFDDList4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_RadioAccessCapabBandFDDList4, UE_RadioAccessCapabBandFDDList4_sequence_of,
+ 1, maxFreqBandsFDD, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_RadioAccessCapability_va40ext_sequence[] = {
+ { &hf_rrc_ue_RadioAccessCapabBandFDDList4, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_RadioAccessCapabBandFDDList4 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_RadioAccessCapability_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_RadioAccessCapability_va40ext, UE_RadioAccessCapability_va40ext_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_rrc_HSDSCH_physical_layer_category_ext4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 29U, 30U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_rrc_HSDSCH_physical_layer_category_ext5(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 31U, 32U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_RadioAccessCapabilityComp2_va40ext_sequence[] = {
+ { &hf_rrc_hsdsch_physical_layer_category_ext4, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HSDSCH_physical_layer_category_ext4 },
+ { &hf_rrc_hsdsch_physical_layer_category_ext5, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HSDSCH_physical_layer_category_ext5 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_RadioAccessCapabilityComp2_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_RadioAccessCapabilityComp2_va40ext, UE_RadioAccessCapabilityComp2_va40ext_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t InterRATHandoverInfo_va40ext_IEs_sequence[] = {
+ { &hf_rrc_ue_RadioAccessCapabilityInfo_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_RadioAccessCapability_va40ext },
+ { &hf_rrc_ue_RadioAccessCapabilityComp2_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_RadioAccessCapabilityComp2_va40ext },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_InterRATHandoverInfo_va40ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_InterRATHandoverInfo_va40ext_IEs, InterRATHandoverInfo_va40ext_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_52_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_52(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_52, T_nonCriticalExtensions_52_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtensions_03_sequence[] = {
+ { &hf_rrc_interRATHandoverInfo_va40ext_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InterRATHandoverInfo_va40ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_52, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_52 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtensions_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtensions_03, T_va40NonCriticalExtensions_03_sequence);
return offset;
}
@@ -99894,7 +106779,7 @@ dissect_rrc_T_nonCriticalExtensions_48(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v950NonCriticalExtensions_02_sequence[] = {
{ &hf_rrc_interRATHandoverInfo_v950ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InterRATHandoverInfo_v950ext_IEs },
- { &hf_rrc_nonCriticalExtensions_48, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_48 },
+ { &hf_rrc_va40NonCriticalExtensions_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtensions_03 },
{ NULL, 0, 0, NULL }
};
@@ -100556,14 +107441,197 @@ dissect_rrc_InterRATHandoverInfo_v7f0ext_IEs(tvbuff_t *tvb _U_, int offset _U_,
}
-static const per_sequence_t T_nonCriticalExtensions_47_sequence[] = {
+static const per_sequence_t T_fddRF_Capability_02_sequence[] = {
+ { &hf_rrc_ue_PowerClass_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_PowerClassExt },
+ { &hf_rrc_txRxFrequencySeparation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TxRxFrequencySeparation },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_47(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fddRF_Capability_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_47, T_nonCriticalExtensions_47_sequence);
+ ett_rrc_T_fddRF_Capability_02, T_fddRF_Capability_02_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t CompressedModeMeasCapabFDD3_sequence[] = {
+ { &hf_rrc_radioFrequencyBandFDD3, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RadioFrequencyBandFDD3 },
+ { &hf_rrc_dl_MeasurementsFDD, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
+ { &hf_rrc_ul_MeasurementsFDD, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_CompressedModeMeasCapabFDD3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_CompressedModeMeasCapabFDD3, CompressedModeMeasCapabFDD3_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t CompressedModeMeasCapabFDDList3_sequence_of[1] = {
+ { &hf_rrc_CompressedModeMeasCapabFDDList3_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CompressedModeMeasCapabFDD3 },
+};
+
+static int
+dissect_rrc_CompressedModeMeasCapabFDDList3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_CompressedModeMeasCapabFDDList3, CompressedModeMeasCapabFDDList3_sequence_of,
+ 1, maxFreqBandsFDD_ext2, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t MeasurementCapabilityExt4_sequence[] = {
+ { &hf_rrc_compressedModeMeasCapabFDDList2, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CompressedModeMeasCapabFDDList2 },
+ { &hf_rrc_compressedModeMeasCapabFDDList3, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CompressedModeMeasCapabFDDList3 },
+ { &hf_rrc_compressedModeMeasCapabTDDList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CompressedModeMeasCapabTDDList },
+ { &hf_rrc_compressedModeMeasCapabGSMList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CompressedModeMeasCapabGSMList },
+ { &hf_rrc_compressedModeMeasCapabMC, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CompressedModeMeasCapabMC },
+ { &hf_rrc_compressedModeMeasCapabEUTRAList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CompressedModeMeasCapabEUTRAList },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_MeasurementCapabilityExt4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_MeasurementCapabilityExt4, MeasurementCapabilityExt4_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_RadioAccessCapabBandFDD5_sequence[] = {
+ { &hf_rrc_radioFrequencyBandFDD3, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioFrequencyBandFDD3 },
+ { &hf_rrc_fddRF_Capability_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_fddRF_Capability_02 },
+ { &hf_rrc_measurementCapability4, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MeasurementCapabilityExt4 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_RadioAccessCapabBandFDD5(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_RadioAccessCapabBandFDD5, UE_RadioAccessCapabBandFDD5_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_RadioAccessCapabBandFDDList5_sequence_of[1] = {
+ { &hf_rrc_UE_RadioAccessCapabBandFDDList5_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_RadioAccessCapabBandFDD5 },
+};
+
+static int
+dissect_rrc_UE_RadioAccessCapabBandFDDList5(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_RadioAccessCapabBandFDDList5, UE_RadioAccessCapabBandFDDList5_sequence_of,
+ 1, maxFreqBandsFDD_ext2, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_RadioAccessCapabBandFDD_ext2_sequence[] = {
+ { &hf_rrc_radioFrequencyBandFDD, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RadioFrequencyBandFDD },
+ { &hf_rrc_radioFrequencyBandFDD2, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RadioFrequencyBandFDD2 },
+ { &hf_rrc_compressedModeMeasCapabFDDList3, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CompressedModeMeasCapabFDDList3 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_RadioAccessCapabBandFDD_ext2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_RadioAccessCapabBandFDD_ext2, UE_RadioAccessCapabBandFDD_ext2_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_RadioAccessCapabBandFDDList_ext2_sequence_of[1] = {
+ { &hf_rrc_UE_RadioAccessCapabBandFDDList_ext2_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_RadioAccessCapabBandFDD_ext2 },
+};
+
+static int
+dissect_rrc_UE_RadioAccessCapabBandFDDList_ext2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_RadioAccessCapabBandFDDList_ext2, UE_RadioAccessCapabBandFDDList_ext2_sequence_of,
+ 1, maxFreqBandsFDD2, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_RadioAccessCapabBand_va40ext_sequence[] = {
+ { &hf_rrc_ue_RadioAccessCapabBandFDDList5, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_RadioAccessCapabBandFDDList5 },
+ { &hf_rrc_ue_RadioAccessCapabBandFDDList_ext2, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_RadioAccessCapabBandFDDList_ext2 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_RadioAccessCapabBand_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_RadioAccessCapabBand_va40ext, UE_RadioAccessCapabBand_va40ext_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t RF_CapabBandListFDDComp_ext2_sequence_of[1] = {
+ { &hf_rrc_RF_CapabBandListFDDComp_ext2_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RF_CapabBandFDDComp },
+};
+
+static int
+dissect_rrc_RF_CapabBandListFDDComp_ext2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_RF_CapabBandListFDDComp_ext2, RF_CapabBandListFDDComp_ext2_sequence_of,
+ 1, maxFreqBandsFDD_ext2, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t InterRATHandoverInfoBand_va40ext_IEs_sequence[] = {
+ { &hf_rrc_ue_RadioAccessCapabBand, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_RadioAccessCapabBand_va40ext },
+ { &hf_rrc_rf_CapabilityFDDComp, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RF_CapabBandListFDDComp_ext2 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_InterRATHandoverInfoBand_va40ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_InterRATHandoverInfoBand_va40ext_IEs, InterRATHandoverInfoBand_va40ext_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_51_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_51(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_51, T_nonCriticalExtensions_51_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtensions_02_sequence[] = {
+ { &hf_rrc_interRATHandoverInfo_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InterRATHandoverInfoBand_va40ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_51, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_51 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtensions_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtensions_02, T_va40NonCriticalExtensions_02_sequence);
return offset;
}
@@ -100571,7 +107639,7 @@ dissect_rrc_T_nonCriticalExtensions_47(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v7f0NonCriticalExtensions_04_sequence[] = {
{ &hf_rrc_interRATHandoverInfo_v7f0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InterRATHandoverInfo_v7f0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_47, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_47 },
+ { &hf_rrc_va40NonCriticalExtensions_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtensions_02 },
{ NULL, 0, 0, NULL }
};
@@ -100614,14 +107682,14 @@ dissect_rrc_InterRATHandoverInfo_r3_add_ext_IEs(tvbuff_t *tvb _U_, int offset _U
}
-static const per_sequence_t T_nonCriticalExtensions_96_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_105_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_96(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_105(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_96, T_nonCriticalExtensions_96_sequence);
+ ett_rrc_T_nonCriticalExtensions_105, T_nonCriticalExtensions_105_sequence);
return offset;
}
@@ -100629,7 +107697,7 @@ dissect_rrc_T_nonCriticalExtensions_96(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_v7g0NonCriticalExtensions_13_sequence[] = {
{ &hf_rrc_radioBearerSetup_v7g0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioBearerSetup_v7g0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_96, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_96 },
+ { &hf_rrc_nonCriticalExtensions_105, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_105 },
{ NULL, 0, 0, NULL }
};
@@ -100771,14 +107839,43 @@ dissect_rrc_RRCConnectionSetupComplete_v7f0ext_IEs(tvbuff_t *tvb _U_, int offset
}
-static const per_sequence_t T_nonCriticalExtensions_115_sequence[] = {
+static const per_sequence_t RRCConnectionSetupCompleteBand_va40ext_IEs_sequence[] = {
+ { &hf_rrc_ue_RadioAccessCapabBand, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_RadioAccessCapabBand_va40ext },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_115(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_RRCConnectionSetupCompleteBand_va40ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_115, T_nonCriticalExtensions_115_sequence);
+ ett_rrc_RRCConnectionSetupCompleteBand_va40ext_IEs, RRCConnectionSetupCompleteBand_va40ext_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_125_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_125(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_125, T_nonCriticalExtensions_125_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtensions_12_sequence[] = {
+ { &hf_rrc_rrcConnectionSetupCompleteBand_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionSetupCompleteBand_va40ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_125, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_125 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtensions_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtensions_12, T_va40NonCriticalExtensions_12_sequence);
return offset;
}
@@ -100786,7 +107883,7 @@ dissect_rrc_T_nonCriticalExtensions_115(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v7f0NonCriticalExtensions_13_sequence[] = {
{ &hf_rrc_rrcConnectionSetupComplete_v7f0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RRCConnectionSetupComplete_v7f0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_115, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_115 },
+ { &hf_rrc_va40NonCriticalExtensions_13, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtensions_12 },
{ NULL, 0, 0, NULL }
};
@@ -100858,14 +107955,14 @@ dissect_rrc_RRC_FailureInfo_r3_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_nonCriticalExtensions_116_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_126_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_116(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_126(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_116, T_nonCriticalExtensions_116_sequence);
+ ett_rrc_T_nonCriticalExtensions_126, T_nonCriticalExtensions_126_sequence);
return offset;
}
@@ -100873,7 +107970,7 @@ dissect_rrc_T_nonCriticalExtensions_116(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_laterNonCriticalExtensions_43_sequence[] = {
{ &hf_rrc_rrc_FailureInfo_r3_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
- { &hf_rrc_nonCriticalExtensions_116, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_116 },
+ { &hf_rrc_nonCriticalExtensions_126, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_126 },
{ NULL, 0, 0, NULL }
};
@@ -100901,14 +107998,14 @@ dissect_rrc_T_r3_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_87_sequence[] = {
+static const per_sequence_t T_criticalExtensions_97_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_87(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_97(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_87, T_criticalExtensions_87_sequence);
+ ett_rrc_T_criticalExtensions_97, T_criticalExtensions_97_sequence);
return offset;
}
@@ -100922,7 +108019,7 @@ static const value_string rrc_RRC_FailureInfo_vals[] = {
static const per_choice_t RRC_FailureInfo_choice[] = {
{ 0, &hf_rrc_r3_21 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r3_21 },
- { 1, &hf_rrc_criticalExtensions_87, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_87 },
+ { 1, &hf_rrc_criticalExtensions_97, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_97 },
{ 0, NULL, 0, NULL }
};
@@ -100992,14 +108089,43 @@ dissect_rrc_UECapabilityInformation_v7f0ext_IEs(tvbuff_t *tvb _U_, int offset _U
}
-static const per_sequence_t T_nonCriticalExtensions_138_sequence[] = {
+static const per_sequence_t UECapabilityInformation_va40ext_IEs_sequence[] = {
+ { &hf_rrc_ue_RadioAccessCapabBand, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_RadioAccessCapabBand_va40ext },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_138(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_UECapabilityInformation_va40ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_138, T_nonCriticalExtensions_138_sequence);
+ ett_rrc_UECapabilityInformation_va40ext_IEs, UECapabilityInformation_va40ext_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_149_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_149(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_149, T_nonCriticalExtensions_149_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtensions_14_sequence[] = {
+ { &hf_rrc_ueCapabilityInformation_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UECapabilityInformation_va40ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_149, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_149 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtensions_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtensions_14, T_va40NonCriticalExtensions_14_sequence);
return offset;
}
@@ -101007,7 +108133,7 @@ dissect_rrc_T_nonCriticalExtensions_138(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v7f0NonCriticalExtensions_16_sequence[] = {
{ &hf_rrc_ueCapabilityInformation_v7f0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UECapabilityInformation_v7f0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_138, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_138 },
+ { &hf_rrc_va40NonCriticalExtensions_15, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtensions_14 },
{ NULL, 0, 0, NULL }
};
@@ -101094,14 +108220,14 @@ dissect_rrc_URAUpdate_v7e0ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_nonCriticalExtensions_145_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_156_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_145(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_156(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_145, T_nonCriticalExtensions_145_sequence);
+ ett_rrc_T_nonCriticalExtensions_156, T_nonCriticalExtensions_156_sequence);
return offset;
}
@@ -101109,7 +108235,7 @@ dissect_rrc_T_nonCriticalExtensions_145(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t URAUpdate_r3_add_ext_IEs_sequence[] = {
{ &hf_rrc_uraUpdate_v7e0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_URAUpdate_v7e0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_145, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_145 },
+ { &hf_rrc_nonCriticalExtensions_156, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_156 },
{ NULL, 0, 0, NULL }
};
@@ -101126,7 +108252,7 @@ dissect_rrc_URAUpdate_r3_add_ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
static int
dissect_rrc_T_mib(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_octet_string_containing_pdu_new(tvb, offset, actx, tree, hf_index,
- NO_BOUND, NO_BOUND, FALSE, dissect_MasterInformationBlock_PDU);
+ NO_BOUND, NO_BOUND, FALSE, dissect_rrc_MasterInformationBlock_PDU);
return offset;
}
@@ -101156,7 +108282,7 @@ dissect_rrc_T_sysInfoTypeSB2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static int
dissect_rrc_T_sysInfoType1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_octet_string_containing_pdu_new(tvb, offset, actx, tree, hf_index,
- NO_BOUND, NO_BOUND, FALSE, dissect_SysInfoType1_PDU);
+ NO_BOUND, NO_BOUND, FALSE, dissect_rrc_SysInfoType1_PDU);
return offset;
}
@@ -101166,7 +108292,7 @@ dissect_rrc_T_sysInfoType1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
static int
dissect_rrc_T_sysInfoType3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_octet_string_containing_pdu_new(tvb, offset, actx, tree, hf_index,
- NO_BOUND, NO_BOUND, FALSE, dissect_SysInfoType3_PDU);
+ NO_BOUND, NO_BOUND, FALSE, dissect_rrc_SysInfoType3_PDU);
return offset;
}
@@ -101186,7 +108312,7 @@ dissect_rrc_T_sysInfoType5(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
static int
dissect_rrc_T_sysInfoType7(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_octet_string_containing_pdu_new(tvb, offset, actx, tree, hf_index,
- NO_BOUND, NO_BOUND, FALSE, dissect_SysInfoType7_PDU);
+ NO_BOUND, NO_BOUND, FALSE, dissect_rrc_SysInfoType7_PDU);
return offset;
}
@@ -101216,20 +108342,20 @@ dissect_rrc_T_sysInfoType11bis(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
static int
dissect_rrc_T_sysInfoType12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_octet_string_containing_pdu_new(tvb, offset, actx, tree, hf_index,
- NO_BOUND, NO_BOUND, FALSE, dissect_SysInfoType12_PDU);
+ NO_BOUND, NO_BOUND, FALSE, dissect_rrc_SysInfoType12_PDU);
return offset;
}
-static const per_sequence_t T_nonCriticalExtensions_165_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_176_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_165(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_176(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_165, T_nonCriticalExtensions_165_sequence);
+ ett_rrc_T_nonCriticalExtensions_176, T_nonCriticalExtensions_176_sequence);
return offset;
}
@@ -101246,7 +108372,7 @@ static const per_sequence_t System_Information_Container_sequence[] = {
{ &hf_rrc_sysInfoType11 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_sysInfoType11 },
{ &hf_rrc_sysInfoType11bis, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_sysInfoType11bis },
{ &hf_rrc_sysInfoType12 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_sysInfoType12 },
- { &hf_rrc_nonCriticalExtensions_165, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_165 },
+ { &hf_rrc_nonCriticalExtensions_176, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_176 },
{ NULL, 0, 0, NULL }
};
@@ -102012,7 +109138,7 @@ dissect_rrc_RAT_FDD_InfoList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_fdd_43_sequence[] = {
+static const per_sequence_t T_fdd_44_sequence[] = {
{ &hf_rrc_s_Intrasearch , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_S_SearchQual },
{ &hf_rrc_s_Intersearch , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_S_SearchQual },
{ &hf_rrc_s_SearchHCS , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_S_SearchRXLEV },
@@ -102023,9 +109149,9 @@ static const per_sequence_t T_fdd_43_sequence[] = {
};
static int
-dissect_rrc_T_fdd_43(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_44(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_43, T_fdd_43_sequence);
+ ett_rrc_T_fdd_44, T_fdd_44_sequence);
return offset;
}
@@ -102062,7 +109188,7 @@ dissect_rrc_RAT_TDD_InfoList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_tdd_08_sequence[] = {
+static const per_sequence_t T_tdd_09_sequence[] = {
{ &hf_rrc_s_Intrasearch_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_S_SearchRXLEV },
{ &hf_rrc_s_Intersearch_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_S_SearchRXLEV },
{ &hf_rrc_s_SearchHCS , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_S_SearchRXLEV },
@@ -102072,30 +109198,30 @@ static const per_sequence_t T_tdd_08_sequence[] = {
};
static int
-dissect_rrc_T_tdd_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_08, T_tdd_08_sequence);
+ ett_rrc_T_tdd_09, T_tdd_09_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_14_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_15_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_14_choice[] = {
- { 0, &hf_rrc_fdd_44 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_43 },
- { 1, &hf_rrc_tdd_09 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_08 },
+static const per_choice_t T_modeSpecificInfo_15_choice[] = {
+ { 0, &hf_rrc_fdd_45 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_44 },
+ { 1, &hf_rrc_tdd_10 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_09 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_14, T_modeSpecificInfo_14_choice,
+ ett_rrc_T_modeSpecificInfo_15, T_modeSpecificInfo_15_choice,
NULL);
return offset;
@@ -102198,7 +109324,7 @@ dissect_rrc_HCS_ServingCellInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t CellSelectReselectInfoSIB_3_4_sequence[] = {
{ &hf_rrc_mappingInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MappingInfo },
{ &hf_rrc_cellSelectQualityMeasure, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_cellSelectQualityMeasure },
- { &hf_rrc_modeSpecificInfo_14, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_14 },
+ { &hf_rrc_modeSpecificInfo_15, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_15 },
{ &hf_rrc_q_Hyst_l_S , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_Q_Hyst_S },
{ &hf_rrc_t_Reselection_S , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_Reselection_S },
{ &hf_rrc_hcs_ServingCellInformation, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HCS_ServingCellInformation },
@@ -102608,6 +109734,51 @@ dissect_rrc_CompressedModeMeasCapability_v920ext(tvbuff_t *tvb _U_, int offset _
}
+static const value_string rrc_T_enhancedInterFrequencyMeasurements_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_enhancedInterFrequencyMeasurements(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_freqSpecificCompressedMode_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_freqSpecificCompressedMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t CompressedModeMeasCapability_va40ext_sequence[] = {
+ { &hf_rrc_enhancedInterFrequencyMeasurements, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_enhancedInterFrequencyMeasurements },
+ { &hf_rrc_freqSpecificCompressedMode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_freqSpecificCompressedMode },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_CompressedModeMeasCapability_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_CompressedModeMeasCapability_va40ext, CompressedModeMeasCapability_va40ext_sequence);
+
+ return offset;
+}
+
+
static int
dissect_rrc_NS_IP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -102874,6 +110045,21 @@ dissect_rrc_DL_PhysChCapabilityFDD_v920ext(tvbuff_t *tvb _U_, int offset _U_, as
}
+static const per_sequence_t DL_PhysChCapabilityFDD_va40ext_sequence[] = {
+ { &hf_rrc_hsdsch_physical_layer_category_ext4, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HSDSCH_physical_layer_category_ext4 },
+ { &hf_rrc_hsdsch_physical_layer_category_ext5, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HSDSCH_physical_layer_category_ext5 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_DL_PhysChCapabilityFDD_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_DL_PhysChCapabilityFDD_va40ext, DL_PhysChCapabilityFDD_va40ext_sequence);
+
+ return offset;
+}
+
+
static const per_sequence_t DL_PhysChCapabilityTDD_128_v770ext_sequence[] = {
{ &hf_rrc_multiCarrier_physical_layer_category, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MultiCarrier_HSDSCH_physical_layer_category },
{ NULL, 0, 0, NULL }
@@ -102930,6 +110116,30 @@ dissect_rrc_DL_PhysChCapabilityTDD_128_v860ext(tvbuff_t *tvb _U_, int offset _U_
}
+
+static int
+dissect_rrc_MultiCarrier_HSDSCH_physical_layer_category_extension2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 37U, 64U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t DL_PhysChCapabilityInfoTDD_128_va40ext_sequence[] = {
+ { &hf_rrc_multiCarrier_physical_layer_category_extension2, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MultiCarrier_HSDSCH_physical_layer_category_extension2 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_DL_PhysChCapabilityInfoTDD_128_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_DL_PhysChCapabilityInfoTDD_128_va40ext, DL_PhysChCapabilityInfoTDD_128_va40ext_sequence);
+
+ return offset;
+}
+
+
static const value_string rrc_T_tdd768_hspdsch_vals[] = {
{ 0, "supported" },
{ 1, "unsupported" },
@@ -103020,6 +110230,158 @@ dissect_rrc_DRAC_SysInfoList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
+static const value_string rrc_FrequencyBandsIndicatorFDD_vals[] = {
+ { 0, "frequencyBandsIndicator1" },
+ { 1, "frequencyBandsIndicator2" },
+ { 2, "frequencyBandsIndicator3" },
+ { 0, NULL }
+};
+
+static const per_choice_t FrequencyBandsIndicatorFDD_choice[] = {
+ { 0, &hf_rrc_frequencyBandsIndicator1, ASN1_NO_EXTENSIONS , dissect_rrc_RadioFrequencyBandFDD },
+ { 1, &hf_rrc_frequencyBandsIndicator2, ASN1_NO_EXTENSIONS , dissect_rrc_RadioFrequencyBandFDD2 },
+ { 2, &hf_rrc_frequencyBandsIndicator3, ASN1_NO_EXTENSIONS , dissect_rrc_RadioFrequencyBandFDD3 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_FrequencyBandsIndicatorFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_FrequencyBandsIndicatorFDD, FrequencyBandsIndicatorFDD_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t FrequencyBandsRedirectionFDD_sequence_of[1] = {
+ { &hf_rrc_FrequencyBandsRedirectionFDD_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_FrequencyBandsIndicatorFDD },
+};
+
+static int
+dissect_rrc_FrequencyBandsRedirectionFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_FrequencyBandsRedirectionFDD, FrequencyBandsRedirectionFDD_sequence_of,
+ 1, maxFreqBandsIndicatorSupport, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_fdd_45_sequence[] = {
+ { &hf_rrc_frequencyBandsSupportFDD, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_FrequencyBandsRedirectionFDD },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_fdd_45(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_fdd_45, T_fdd_45_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_RadioFrequencyBandTDD_r10_vals[] = {
+ { 0, "a" },
+ { 1, "b" },
+ { 2, "c" },
+ { 3, "d" },
+ { 4, "e" },
+ { 5, "f" },
+ { 6, "spare2" },
+ { 7, "spare1" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_RadioFrequencyBandTDD_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t FrequencyBandsIndicatorSupportTDD128_sequence[] = {
+ { &hf_rrc_frequencyBandsIndicatorTDD, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RadioFrequencyBandTDD_r10 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_FrequencyBandsIndicatorSupportTDD128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_FrequencyBandsIndicatorSupportTDD128, FrequencyBandsIndicatorSupportTDD128_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t FrequencyBandsIndicatorTDD128_sequence_of[1] = {
+ { &hf_rrc_FrequencyBandsIndicatorTDD128_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_FrequencyBandsIndicatorSupportTDD128 },
+};
+
+static int
+dissect_rrc_FrequencyBandsIndicatorTDD128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_FrequencyBandsIndicatorTDD128, FrequencyBandsIndicatorTDD128_sequence_of,
+ 1, maxFreqBandsIndicatorSupport, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_tdd_10_sequence[] = {
+ { &hf_rrc_frequencyBandsSupportTDD128, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_FrequencyBandsIndicatorTDD128 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_tdd_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_tdd_10, T_tdd_10_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_modeSpecificInfo_16_vals[] = {
+ { 0, "fdd" },
+ { 1, "tdd" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_modeSpecificInfo_16_choice[] = {
+ { 0, &hf_rrc_fdd_46 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_45 },
+ { 1, &hf_rrc_tdd_11 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_10 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_modeSpecificInfo_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_modeSpecificInfo_16, T_modeSpecificInfo_16_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t FrequencyBandsIndicatorSupport_sequence[] = {
+ { &hf_rrc_modeSpecificInfo_16, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_16 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_FrequencyBandsIndicatorSupport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_FrequencyBandsIndicatorSupport, FrequencyBandsIndicatorSupport_sequence);
+
+ return offset;
+}
+
+
static const value_string rrc_GANSS_Mode_vals[] = {
{ 0, "networkBased" },
{ 1, "uEBased" },
@@ -103066,6 +110428,36 @@ dissect_rrc_MeasurementCapability_v920ext(tvbuff_t *tvb _U_, int offset _U_, asn
}
+static const value_string rrc_T_interFrequencyDetectedSetMeasurements_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_interFrequencyDetectedSetMeasurements(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t MeasurementCapability_va40ext_sequence[] = {
+ { &hf_rrc_interFrequencyDetectedSetMeasurements, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_interFrequencyDetectedSetMeasurements },
+ { &hf_rrc_downlinkCompressedMode_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CompressedModeMeasCapability_va40ext },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_MeasurementCapability_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_MeasurementCapability_va40ext, MeasurementCapability_va40ext_sequence);
+
+ return offset;
+}
+
+
static const value_string rrc_T_supportOfPSHandoverToGAN_vals[] = {
{ 0, "doesSupportPSHandoverToGAN" },
{ 0, NULL }
@@ -103158,7 +110550,7 @@ dissect_rrc_T_supportOfInterRATHOToEUTRATDD(tvbuff_t *tvb _U_, int offset _U_, a
static int
dissect_rrc_T_eutraFeatureGroupIndicators(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 529 "../../asn1/rrc/rrc.cnf"
+#line 582 "../../asn1/rrc/rrc.cnf"
tvbuff_t *eutraFeatureGroupIndicators_tvb=NULL;
offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
4, 4, FALSE, &eutraFeatureGroupIndicators_tvb);
@@ -103735,6 +111127,83 @@ dissect_rrc_PhysicalChannelCapability_v920ext(tvbuff_t *tvb _U_, int offset _U_,
}
+static const per_sequence_t T_fddPhysChCapability_04_sequence[] = {
+ { &hf_rrc_downlinkPhysChCapability_08, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_PhysChCapabilityFDD_va40ext },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_fddPhysChCapability_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_fddPhysChCapability_04, T_fddPhysChCapability_04_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_maxNumberCarrierForMCHSUPA_TDD_vals[] = {
+ { 0, "nf-2" },
+ { 1, "nf-3" },
+ { 2, "nf-6" },
+ { 3, "spare" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_maxNumberCarrierForMCHSUPA_TDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t UL_PhysChCapabilityInfoTDD_128_va40ext_sequence[] = {
+ { &hf_rrc_multiCarrier_EdchPhysicalLayerCategory_128, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_1_8 },
+ { &hf_rrc_maxNumberCarrierForMCHSUPA_TDD, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_maxNumberCarrierForMCHSUPA_TDD },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UL_PhysChCapabilityInfoTDD_128_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UL_PhysChCapabilityInfoTDD_128_va40ext, UL_PhysChCapabilityInfoTDD_128_va40ext_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_tddPhysChCapability_128_02_sequence[] = {
+ { &hf_rrc_downlinkPhysChCapability_09, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_PhysChCapabilityInfoTDD_128_va40ext },
+ { &hf_rrc_uplinkPhysChCapability_07, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_PhysChCapabilityInfoTDD_128_va40ext },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_tddPhysChCapability_128_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_tddPhysChCapability_128_02, T_tddPhysChCapability_128_02_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t PhysicalChannelCapability_va40ext_sequence[] = {
+ { &hf_rrc_fddPhysChCapability_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_fddPhysChCapability_04 },
+ { &hf_rrc_tddPhysChCapability_128_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_tddPhysChCapability_128_02 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_PhysicalChannelCapability_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_PhysicalChannelCapability_va40ext, PhysicalChannelCapability_va40ext_sequence);
+
+ return offset;
+}
+
+
static const value_string rrc_T_numberOfRepetitionsPerSFNPeriod_vals[] = {
{ 0, "c2" },
{ 1, "c3" },
@@ -103763,6 +111232,8 @@ static const value_string rrc_T_numberOfRepetitionsPerSFNPeriod_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_T_numberOfRepetitionsPerSFNPeriod_vals_ext = VALUE_STRING_EXT_INIT(rrc_T_numberOfRepetitionsPerSFNPeriod_vals);
+
static int
dissect_rrc_T_numberOfRepetitionsPerSFNPeriod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -103847,6 +111318,38 @@ dissect_rrc_RLC_Capability_v920ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
+static const value_string rrc_TotalRLC_AM_BufferSize_va40ext_vals[] = {
+ { 0, "kb1500" },
+ { 1, "kb1800" },
+ { 2, "kb2300" },
+ { 3, "kb2550" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_TotalRLC_AM_BufferSize_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t RLC_Capability_va40ext_sequence[] = {
+ { &hf_rrc_totalRLC_AM_BufferSize_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TotalRLC_AM_BufferSize_va40ext },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_RLC_Capability_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_RLC_Capability_va40ext, RLC_Capability_va40ext_sequence);
+
+ return offset;
+}
+
+
static const value_string rrc_T_300_vals[] = {
{ 0, "ms100" },
{ 1, "ms200" },
@@ -103894,6 +111397,35 @@ dissect_rrc_T_321(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto
}
+static const value_string rrc_T_supportOfLoggedMeasurementsIdlePCH_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_supportOfLoggedMeasurementsIdlePCH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_BasedNetworkPerformanceMeasurementsParameters_sequence[] = {
+ { &hf_rrc_supportOfLoggedMeasurementsIdlePCH, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_supportOfLoggedMeasurementsIdlePCH },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_BasedNetworkPerformanceMeasurementsParameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_BasedNetworkPerformanceMeasurementsParameters, UE_BasedNetworkPerformanceMeasurementsParameters_sequence);
+
+ return offset;
+}
+
+
static const value_string rrc_T_deviceType_vals[] = {
{ 0, "doesNotBenefitFromBatteryConsumptionOptimisation" },
{ 0, NULL }
@@ -104246,7 +111778,7 @@ dissect_rrc_UE_RadioAccessCapability_v860ext_IEs(tvbuff_t *tvb _U_, int offset _
static int
dissect_rrc_T_ue_EUTRA_Capability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 511 "../../asn1/rrc/rrc.cnf"
+#line 564 "../../asn1/rrc/rrc.cnf"
tvbuff_t *ue_eutra_cap_tvb = NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
NO_BOUND, NO_BOUND, FALSE, &ue_eutra_cap_tvb);
@@ -104424,14 +111956,201 @@ dissect_rrc_UE_RadioAccessCapability_v970ext_IEs(tvbuff_t *tvb _U_, int offset _
}
-static const per_sequence_t T_nonCriticalExtensions_166_sequence[] = {
+static const per_sequence_t SupportedCarrierCombination_sequence[] = {
+ { &hf_rrc_carrierCombination12, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
+ { &hf_rrc_carrierCombination21, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
+ { &hf_rrc_carrierCombination13, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
+ { &hf_rrc_carrierCombination31, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
+ { &hf_rrc_carrierCombination22, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_166(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_SupportedCarrierCombination(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_166, T_nonCriticalExtensions_166_sequence);
+ ett_rrc_SupportedCarrierCombination, SupportedCarrierCombination_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_RadioAccessCapabBandCombList_va40ext_sequence_of[1] = {
+ { &hf_rrc_UE_RadioAccessCapabBandCombList_va40ext_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SupportedCarrierCombination },
+};
+
+static int
+dissect_rrc_UE_RadioAccessCapabBandCombList_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_RadioAccessCapabBandCombList_va40ext, UE_RadioAccessCapabBandCombList_va40ext_sequence_of,
+ 1, 16, FALSE);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_supportOfMUMIMO_vals[] = {
+ { 0, "uplink" },
+ { 1, "uplink-and-downlink" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_supportOfMUMIMO(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_supportForDualCellMimoInDifferentBands_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_supportForDualCellMimoInDifferentBands(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_supportOfUTRANANR_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_supportOfUTRANANR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_RadioAccessCapability_va40ext_IEs_sequence[] = {
+ { &hf_rrc_ue_RadioAccessCapabBandCombList_va40ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_RadioAccessCapabBandCombList_va40ext },
+ { &hf_rrc_physicalChannelCapability_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PhysicalChannelCapability_va40ext },
+ { &hf_rrc_rlc_Capability_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RLC_Capability_va40ext },
+ { &hf_rrc_measurementCapability_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementCapability_va40ext },
+ { &hf_rrc_supportOfMUMIMO , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_supportOfMUMIMO },
+ { &hf_rrc_supportForDualCellMimoInDifferentBands, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_supportForDualCellMimoInDifferentBands },
+ { &hf_rrc_ue_BasedNetworkPerformanceMeasurementsParameters, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_BasedNetworkPerformanceMeasurementsParameters },
+ { &hf_rrc_supportOfUTRANANR, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_supportOfUTRANANR },
+ { &hf_rrc_ue_RadioAccessCapabBandFDDList4, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_RadioAccessCapabBandFDDList4 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_RadioAccessCapability_va40ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_RadioAccessCapability_va40ext_IEs, UE_RadioAccessCapability_va40ext_IEs_sequence);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_reserveForFutureUse_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrc_T_reserveForFutureUse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_RadioAccessCapabBandFDD4_va60ext_sequence[] = {
+ { &hf_rrc_reserveForFutureUse, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_reserveForFutureUse },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_RadioAccessCapabBandFDD4_va60ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_RadioAccessCapabBandFDD4_va60ext, UE_RadioAccessCapabBandFDD4_va60ext_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_RadioAccessCapabBandFDDList4_va60ext_sequence_of[1] = {
+ { &hf_rrc_UE_RadioAccessCapabBandFDDList4_va60ext_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_RadioAccessCapabBandFDD4_va60ext },
+};
+
+static int
+dissect_rrc_UE_RadioAccessCapabBandFDDList4_va60ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_RadioAccessCapabBandFDDList4_va60ext, UE_RadioAccessCapabBandFDDList4_va60ext_sequence_of,
+ 1, maxFreqBandsFDD, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t UE_RadioAccessCapability_va60ext_IEs_sequence[] = {
+ { &hf_rrc_ue_RadioAccessCapabBandFDDList4_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_RadioAccessCapabBandFDDList4_va60ext },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_UE_RadioAccessCapability_va60ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_RadioAccessCapability_va60ext_IEs, UE_RadioAccessCapability_va60ext_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_180_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_180(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_180, T_nonCriticalExtensions_180_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va60NonCriticalExtensions_sequence[] = {
+ { &hf_rrc_ue_RadioAccessCapability_va60ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_RadioAccessCapability_va60ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_180, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_180 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va60NonCriticalExtensions(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va60NonCriticalExtensions, T_va60NonCriticalExtensions_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtensions_17_sequence[] = {
+ { &hf_rrc_ue_RadioAccessCapability_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_RadioAccessCapability_va40ext_IEs },
+ { &hf_rrc_va60NonCriticalExtensions, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va60NonCriticalExtensions },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtensions_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtensions_17, T_va40NonCriticalExtensions_17_sequence);
return offset;
}
@@ -104439,7 +112158,7 @@ dissect_rrc_T_nonCriticalExtensions_166(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v970NonCriticalExtensions_03_sequence[] = {
{ &hf_rrc_ue_RadioAccessCapability_v970ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_RadioAccessCapability_v970ext_IEs },
- { &hf_rrc_nonCriticalExtensions_166, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_166 },
+ { &hf_rrc_va40NonCriticalExtensions_18, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtensions_17 },
{ NULL, 0, 0, NULL }
};
@@ -104683,29 +112402,29 @@ dissect_rrc_PreDefTransChConfiguration(tvbuff_t *tvb _U_, int offset _U_, asn1_c
}
-static const per_sequence_t T_fdd_116_sequence[] = {
+static const per_sequence_t T_fdd_119_sequence[] = {
{ &hf_rrc_powerControlAlgorithm, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PowerControlAlgorithm },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_116(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_119(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_116, T_fdd_116_sequence);
+ ett_rrc_T_fdd_119, T_fdd_119_sequence);
return offset;
}
-static const per_sequence_t T_tdd_68_sequence[] = {
+static const per_sequence_t T_tdd_71_sequence[] = {
{ &hf_rrc_dpch_ConstantValue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_ConstantValueTdd },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_68(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_71(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_68, T_tdd_68_sequence);
+ ett_rrc_T_tdd_71, T_tdd_71_sequence);
return offset;
}
@@ -104718,8 +112437,8 @@ static const value_string rrc_UL_DPCH_PowerControlInfoPredef_vals[] = {
};
static const per_choice_t UL_DPCH_PowerControlInfoPredef_choice[] = {
- { 0, &hf_rrc_fdd_119 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_116 },
- { 1, &hf_rrc_tdd_74 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_68 },
+ { 0, &hf_rrc_fdd_122 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_119 },
+ { 1, &hf_rrc_tdd_77 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_71 },
{ 0, NULL, 0, NULL }
};
@@ -104733,51 +112452,51 @@ dissect_rrc_UL_DPCH_PowerControlInfoPredef(tvbuff_t *tvb _U_, int offset _U_, as
}
-static const per_sequence_t T_fdd_109_sequence[] = {
+static const per_sequence_t T_fdd_112_sequence[] = {
{ &hf_rrc_tfci_Existence , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_puncturingLimit , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PuncturingLimit },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_109(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_112(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_109, T_fdd_109_sequence);
+ ett_rrc_T_fdd_112, T_fdd_112_sequence);
return offset;
}
-static const per_sequence_t T_tdd_62_sequence[] = {
+static const per_sequence_t T_tdd_65_sequence[] = {
{ &hf_rrc_commonTimeslotInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CommonTimeslotInfo },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_62(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_65(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_62, T_tdd_62_sequence);
+ ett_rrc_T_tdd_65, T_tdd_65_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_78_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_81_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_78_choice[] = {
- { 0, &hf_rrc_fdd_112 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_109 },
- { 1, &hf_rrc_tdd_68 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_62 },
+static const per_choice_t T_modeSpecificInfo_81_choice[] = {
+ { 0, &hf_rrc_fdd_115 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_112 },
+ { 1, &hf_rrc_tdd_71 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_65 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_78(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_81(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_78, T_modeSpecificInfo_78_choice,
+ ett_rrc_T_modeSpecificInfo_81, T_modeSpecificInfo_81_choice,
NULL);
return offset;
@@ -104786,7 +112505,7 @@ dissect_rrc_T_modeSpecificInfo_78(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t UL_DPCH_InfoPredef_sequence[] = {
{ &hf_rrc_ul_DPCH_PowerControlInfo_08, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_DPCH_PowerControlInfoPredef },
- { &hf_rrc_modeSpecificInfo_78, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_78 },
+ { &hf_rrc_modeSpecificInfo_81, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_81 },
{ NULL, 0, 0, NULL }
};
@@ -104799,7 +112518,7 @@ dissect_rrc_UL_DPCH_InfoPredef(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
}
-static const per_sequence_t T_fdd_64_sequence[] = {
+static const per_sequence_t T_fdd_67_sequence[] = {
{ &hf_rrc_spreadingFactorAndPilot, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SF512_AndPilot },
{ &hf_rrc_positionFixedOrFlexible, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PositionFixedOrFlexible },
{ &hf_rrc_tfci_Existence , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
@@ -104807,44 +112526,44 @@ static const per_sequence_t T_fdd_64_sequence[] = {
};
static int
-dissect_rrc_T_fdd_64(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_67(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_64, T_fdd_64_sequence);
+ ett_rrc_T_fdd_67, T_fdd_67_sequence);
return offset;
}
-static const per_sequence_t T_tdd_26_sequence[] = {
+static const per_sequence_t T_tdd_29_sequence[] = {
{ &hf_rrc_commonTimeslotInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CommonTimeslotInfo },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_26(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_29(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_26, T_tdd_26_sequence);
+ ett_rrc_T_tdd_29, T_tdd_29_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_34_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_37_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_34_choice[] = {
- { 0, &hf_rrc_fdd_65 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_64 },
- { 1, &hf_rrc_tdd_27 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_26 },
+static const per_choice_t T_modeSpecificInfo_37_choice[] = {
+ { 0, &hf_rrc_fdd_68 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_67 },
+ { 1, &hf_rrc_tdd_30 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_29 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_34(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_37(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_34, T_modeSpecificInfo_34_choice,
+ ett_rrc_T_modeSpecificInfo_37, T_modeSpecificInfo_37_choice,
NULL);
return offset;
@@ -104852,7 +112571,7 @@ dissect_rrc_T_modeSpecificInfo_34(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t DL_DPCH_InfoCommonPredef_sequence[] = {
- { &hf_rrc_modeSpecificInfo_34, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_34 },
+ { &hf_rrc_modeSpecificInfo_37, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_37 },
{ NULL, 0, 0, NULL }
};
@@ -104910,36 +112629,36 @@ dissect_rrc_PreDefRadioConfiguration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_fdd_110_sequence[] = {
+static const per_sequence_t T_fdd_113_sequence[] = {
{ &hf_rrc_numberOfTPC_Bits, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NumberOfTPC_Bits },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_110(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_113(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_110, T_fdd_110_sequence);
+ ett_rrc_T_fdd_113, T_fdd_113_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_79_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_82_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_79_choice[] = {
- { 0, &hf_rrc_fdd_113 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_110 },
+static const per_choice_t T_modeSpecificInfo_82_choice[] = {
+ { 0, &hf_rrc_fdd_116 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_113 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_79(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_82(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_79, T_modeSpecificInfo_79_choice,
+ ett_rrc_T_modeSpecificInfo_82, T_modeSpecificInfo_82_choice,
NULL);
return offset;
@@ -104947,7 +112666,7 @@ dissect_rrc_T_modeSpecificInfo_79(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t UL_DPCH_InfoPredef_v770ext_sequence[] = {
- { &hf_rrc_modeSpecificInfo_79, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_79 },
+ { &hf_rrc_modeSpecificInfo_82, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_82 },
{ NULL, 0, 0, NULL }
};
@@ -106030,6 +113749,8 @@ static const value_string rrc_T_retransTimerForSchedInfo_01_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_T_retransTimerForSchedInfo_01_vals_ext = VALUE_STRING_EXT_INIT(rrc_T_retransTimerForSchedInfo_01_vals);
+
static int
dissect_rrc_T_retransTimerForSchedInfo_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -106043,7 +113764,7 @@ dissect_rrc_T_retransTimerForSchedInfo_01(tvbuff_t *tvb _U_, int offset _U_, asn
static const per_sequence_t E_PUCH_Info_TDD128_sequence[] = {
{ &hf_rrc_e_TFCS_Info , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_E_TFCS_Info },
{ &hf_rrc_snpl_ReportType_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_snpl_ReportType_01 },
- { &hf_rrc_prxBASEdes , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_M112_M50 },
+ { &hf_rrc_prxdes_base , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_M112_M50 },
{ &hf_rrc_beaconPLEst_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BOOLEAN },
{ &hf_rrc_tpc_StepSize , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TPC_StepSizeTDD },
{ &hf_rrc_pebase_PowerControlGAP_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_1_255 },
@@ -106053,7 +113774,7 @@ static const per_sequence_t E_PUCH_Info_TDD128_sequence[] = {
{ &hf_rrc_maximum_Allowed_Code_Rate, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_63 },
{ &hf_rrc_maximumNumOfRetransSchedInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_15 },
{ &hf_rrc_retransTimerForSchedInfo_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_retransTimerForSchedInfo_01 },
- { &hf_rrc_dummy_39 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_0_6 },
+ { &hf_rrc_dummy_43 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_INTEGER_0_6 },
{ NULL, 0, 0, NULL }
};
@@ -106066,23 +113787,6 @@ dissect_rrc_E_PUCH_Info_TDD128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
}
-static const per_sequence_t E_AGCH_Information_TDD128_sequence[] = {
- { &hf_rrc_rdi_Indicator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
- { &hf_rrc_tpc_StepSize , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TPC_StepSizeTDD },
- { &hf_rrc_e_AGCH_Set_Config_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_E_AGCH_Set_Config_LCR },
- { &hf_rrc_e_AGCH_BLER_Target, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_Bler_Target },
- { NULL, 0, 0, NULL }
-};
-
-static int
-dissect_rrc_E_AGCH_Information_TDD128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_E_AGCH_Information_TDD128, E_AGCH_Information_TDD128_sequence);
-
- return offset;
-}
-
-
static const value_string rrc_T_harq_Info_03_vals[] = {
{ 0, "rv0" },
{ 1, "rvtable" },
@@ -106126,6 +113830,8 @@ static const value_string rrc_T_harq_retransmission_timer_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_T_harq_retransmission_timer_vals_ext = VALUE_STRING_EXT_INIT(rrc_T_harq_retransmission_timer_vals);
+
static int
dissect_rrc_T_harq_retransmission_timer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -106153,7 +113859,7 @@ dissect_rrc_T_ccch_transmission_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_tdd128_09_sequence[] = {
+static const per_sequence_t T_tdd128_10_sequence[] = {
{ &hf_rrc_e_RUCCH_Info , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_E_RUCCH_Info_TDD128 },
{ &hf_rrc_e_PUCH_Info , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_E_PUCH_Info_TDD128 },
{ &hf_rrc_e_hich_Information, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_E_HICH_Information_TDD128 },
@@ -106164,54 +113870,54 @@ static const per_sequence_t T_tdd128_09_sequence[] = {
};
static int
-dissect_rrc_T_tdd128_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_09, T_tdd128_09_sequence);
+ ett_rrc_T_tdd128_10, T_tdd128_10_sequence);
return offset;
}
-static const value_string rrc_T_tdd_16_vals[] = {
+static const value_string rrc_T_tdd_18_vals[] = {
{ 0, "tdd768" },
{ 1, "tdd384" },
{ 2, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_tdd_16_choice[] = {
- { 0, &hf_rrc_tdd768_04 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 1, &hf_rrc_tdd384_09 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 2, &hf_rrc_tdd128_09 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_09 },
+static const per_choice_t T_tdd_18_choice[] = {
+ { 0, &hf_rrc_tdd768_05 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_tdd384_10 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 2, &hf_rrc_tdd128_10 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_10 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_tdd_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_16, T_tdd_16_choice,
+ ett_rrc_T_tdd_18, T_tdd_18_choice,
NULL);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_24_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_26_vals[] = {
{ 0, "dummy" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_24_choice[] = {
- { 0, &hf_rrc_dummy_32 , ASN1_NO_EXTENSIONS , dissect_rrc_T_dummy_14 },
- { 1, &hf_rrc_tdd_17 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_16 },
+static const per_choice_t T_modeSpecificInfo_26_choice[] = {
+ { 0, &hf_rrc_dummy_36 , ASN1_NO_EXTENSIONS , dissect_rrc_T_dummy_14 },
+ { 1, &hf_rrc_tdd_19 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_18 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_26(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_24, T_modeSpecificInfo_24_choice,
+ ett_rrc_T_modeSpecificInfo_26, T_modeSpecificInfo_26_choice,
NULL);
return offset;
@@ -106221,7 +113927,7 @@ dissect_rrc_T_modeSpecificInfo_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t CommonEDCHSystemInfo_sequence[] = {
{ &hf_rrc_ul_InterferenceForCommonEDCH, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_Interference },
{ &hf_rrc_common_E_DCH_MAC_d_FlowList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_Common_E_DCH_MAC_d_FlowList },
- { &hf_rrc_modeSpecificInfo_24, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_24 },
+ { &hf_rrc_modeSpecificInfo_26, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_26 },
{ NULL, 0, 0, NULL }
};
@@ -106279,8 +113985,8 @@ static const value_string rrc_PRACH_Partitioning_r7_vals[] = {
};
static const per_choice_t PRACH_Partitioning_r7_choice[] = {
- { 0, &hf_rrc_fdd_96 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_maxASC_OF_ASCSetting_FDD },
- { 1, &hf_rrc_tdd_56 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_maxASC_OF_ASCSetting_TDD_r7 },
+ { 0, &hf_rrc_fdd_99 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_maxASC_OF_ASCSetting_FDD },
+ { 1, &hf_rrc_tdd_59 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_maxASC_OF_ASCSetting_TDD_r7 },
{ 0, NULL, 0, NULL }
};
@@ -106832,7 +114538,7 @@ dissect_rrc_PI_CountPerFrame(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_fdd_93_sequence[] = {
+static const per_sequence_t T_fdd_96_sequence[] = {
{ &hf_rrc_channelisationCode256, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_ChannelisationCode256 },
{ &hf_rrc_pi_CountPerFrame, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PI_CountPerFrame },
{ &hf_rrc_sttd_Indicator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
@@ -106840,9 +114546,9 @@ static const per_sequence_t T_fdd_93_sequence[] = {
};
static int
-dissect_rrc_T_fdd_93(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_96(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_93, T_fdd_93_sequence);
+ ett_rrc_T_fdd_96, T_fdd_96_sequence);
return offset;
}
@@ -106958,7 +114664,7 @@ dissect_rrc_N_PCH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto
}
-static const per_sequence_t T_tdd_50_sequence[] = {
+static const per_sequence_t T_tdd_53_sequence[] = {
{ &hf_rrc_channelisationCode_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TDD_PICH_CCode },
{ &hf_rrc_timeslot , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TimeslotNumber },
{ &hf_rrc_midambleShiftAndBurstType_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MidambleShiftAndBurstType },
@@ -106970,9 +114676,9 @@ static const per_sequence_t T_tdd_50_sequence[] = {
};
static int
-dissect_rrc_T_tdd_50(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_53(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_50, T_tdd_50_sequence);
+ ett_rrc_T_tdd_53, T_tdd_53_sequence);
return offset;
}
@@ -106985,8 +114691,8 @@ static const value_string rrc_PICH_Info_vals[] = {
};
static const per_choice_t PICH_Info_choice[] = {
- { 0, &hf_rrc_fdd_95 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_93 },
- { 1, &hf_rrc_tdd_54 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_50 },
+ { 0, &hf_rrc_fdd_98 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_96 },
+ { 1, &hf_rrc_tdd_57 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_53 },
{ 0, NULL, 0, NULL }
};
@@ -107561,6 +115267,8 @@ static const value_string rrc_TDD768_PICH_CCode_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_TDD768_PICH_CCode_vals_ext = VALUE_STRING_EXT_INIT(rrc_TDD768_PICH_CCode_vals);
+
static int
dissect_rrc_TDD768_PICH_CCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -107578,8 +115286,8 @@ static const value_string rrc_T_channelisationCode_vals[] = {
};
static const per_choice_t T_channelisationCode_choice[] = {
- { 0, &hf_rrc_tdd384_28 , ASN1_NO_EXTENSIONS , dissect_rrc_TDD_PICH_CCode },
- { 1, &hf_rrc_tdd768_17 , ASN1_NO_EXTENSIONS , dissect_rrc_TDD768_PICH_CCode },
+ { 0, &hf_rrc_tdd384_29 , ASN1_NO_EXTENSIONS , dissect_rrc_TDD_PICH_CCode },
+ { 1, &hf_rrc_tdd768_18 , ASN1_NO_EXTENSIONS , dissect_rrc_TDD768_PICH_CCode },
{ 0, NULL, 0, NULL }
};
@@ -107691,8 +115399,8 @@ static const value_string rrc_PRACH_Partitioning_vals[] = {
};
static const per_choice_t PRACH_Partitioning_choice[] = {
- { 0, &hf_rrc_fdd_96 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_maxASC_OF_ASCSetting_FDD },
- { 1, &hf_rrc_tdd_55 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_maxASC_OF_ASCSetting_TDD },
+ { 0, &hf_rrc_fdd_99 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_maxASC_OF_ASCSetting_FDD },
+ { 1, &hf_rrc_tdd_58 , ASN1_NO_EXTENSIONS , dissect_rrc_SEQUENCE_SIZE_1_maxASC_OF_ASCSetting_TDD },
{ 0, NULL, 0, NULL }
};
@@ -107724,7 +115432,7 @@ dissect_rrc_SF_PRACH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr
}
-static const per_sequence_t T_fdd_94_sequence[] = {
+static const per_sequence_t T_fdd_97_sequence[] = {
{ &hf_rrc_availableSignatures, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_AvailableSignatures },
{ &hf_rrc_availableSF , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SF_PRACH },
{ &hf_rrc_preambleScramblingCodeWordNumber, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PreambleScramblingCodeWordNumber },
@@ -107734,9 +115442,9 @@ static const per_sequence_t T_fdd_94_sequence[] = {
};
static int
-dissect_rrc_T_fdd_94(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_97(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_94, T_fdd_94_sequence);
+ ett_rrc_T_fdd_97, T_fdd_97_sequence);
return offset;
}
@@ -107844,7 +115552,7 @@ dissect_rrc_TDD_PRACH_CCodeList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
}
-static const per_sequence_t T_tdd_51_sequence[] = {
+static const per_sequence_t T_tdd_54_sequence[] = {
{ &hf_rrc_timeslot , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TimeslotNumber },
{ &hf_rrc_channelisationCodeList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TDD_PRACH_CCodeList },
{ &hf_rrc_prach_Midamble , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PRACH_Midamble },
@@ -107852,30 +115560,30 @@ static const per_sequence_t T_tdd_51_sequence[] = {
};
static int
-dissect_rrc_T_tdd_51(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_54(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_51, T_tdd_51_sequence);
+ ett_rrc_T_tdd_54, T_tdd_54_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_64_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_67_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_64_choice[] = {
- { 0, &hf_rrc_fdd_97 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_94 },
- { 1, &hf_rrc_tdd_57 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_51 },
+static const per_choice_t T_modeSpecificInfo_67_choice[] = {
+ { 0, &hf_rrc_fdd_100 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_97 },
+ { 1, &hf_rrc_tdd_60 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_54 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_64(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_67(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_64, T_modeSpecificInfo_64_choice,
+ ett_rrc_T_modeSpecificInfo_67, T_modeSpecificInfo_67_choice,
NULL);
return offset;
@@ -107883,7 +115591,7 @@ dissect_rrc_T_modeSpecificInfo_64(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t PRACH_RACH_Info_sequence[] = {
- { &hf_rrc_modeSpecificInfo_64, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_64 },
+ { &hf_rrc_modeSpecificInfo_67, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_67 },
{ NULL, 0, 0, NULL }
};
@@ -108101,7 +115809,7 @@ dissect_rrc_PRACH_RACH_Info_LCR_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_fdd_95_sequence[] = {
+static const per_sequence_t T_fdd_98_sequence[] = {
{ &hf_rrc_primaryCPICH_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCPICH_TX_Power },
{ &hf_rrc_constantValue , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ConstantValue },
{ &hf_rrc_prach_PowerOffset, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PRACH_PowerOffset },
@@ -108111,30 +115819,30 @@ static const per_sequence_t T_fdd_95_sequence[] = {
};
static int
-dissect_rrc_T_fdd_95(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_98(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_95, T_fdd_95_sequence);
+ ett_rrc_T_fdd_98, T_fdd_98_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_65_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_68_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_65_choice[] = {
- { 0, &hf_rrc_fdd_98 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_95 },
+static const per_choice_t T_modeSpecificInfo_68_choice[] = {
+ { 0, &hf_rrc_fdd_101 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_98 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_65(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_68(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_65, T_modeSpecificInfo_65_choice,
+ ett_rrc_T_modeSpecificInfo_68, T_modeSpecificInfo_68_choice,
NULL);
return offset;
@@ -108149,7 +115857,7 @@ static const per_sequence_t PRACH_SystemInformation_sequence[] = {
{ &hf_rrc_prach_Partitioning_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PRACH_Partitioning },
{ &hf_rrc_persistenceScalingFactorList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PersistenceScalingFactorList },
{ &hf_rrc_ac_To_ASC_MappingTable, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_AC_To_ASC_MappingTable },
- { &hf_rrc_modeSpecificInfo_65, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_65 },
+ { &hf_rrc_modeSpecificInfo_68, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_68 },
{ NULL, 0, 0, NULL }
};
@@ -108555,6 +116263,8 @@ static const value_string rrc_SCCPCH_ChannelisationCode_VHCR_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_SCCPCH_ChannelisationCode_VHCR_vals_ext = VALUE_STRING_EXT_INIT(rrc_SCCPCH_ChannelisationCode_VHCR_vals);
+
static int
dissect_rrc_SCCPCH_ChannelisationCode_VHCR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -108625,52 +116335,52 @@ dissect_rrc_SCCPCH_SystemInformation_LCR_r4_ext(tvbuff_t *tvb _U_, int offset _U
}
-static const per_sequence_t T_tdd384_28_sequence[] = {
+static const per_sequence_t T_tdd384_29_sequence[] = {
{ &hf_rrc_individualTimeslotInfo_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_IndividualTimeslotInfo_r7 },
{ &hf_rrc_channelisationCode_08, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SCCPCH_ChannelisationCodeList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd384_28(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd384_29(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd384_28, T_tdd384_28_sequence);
+ ett_rrc_T_tdd384_29, T_tdd384_29_sequence);
return offset;
}
-static const per_sequence_t T_tdd768_15_sequence[] = {
+static const per_sequence_t T_tdd768_16_sequence[] = {
{ &hf_rrc_individualTimeslotInfo_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_IndividualTimeslotInfo_VHCR },
{ &hf_rrc_channelisationCode_09, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SCCPCH_ChannelisationCodeList_VHCR },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd768_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd768_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd768_15, T_tdd768_15_sequence);
+ ett_rrc_T_tdd768_16, T_tdd768_16_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_70_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_73_vals[] = {
{ 0, "tdd384" },
{ 1, "tdd768" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_70_choice[] = {
- { 0, &hf_rrc_tdd384_31 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_28 },
- { 1, &hf_rrc_tdd768_18 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_15 },
+static const per_choice_t T_modeSpecificInfo_73_choice[] = {
+ { 0, &hf_rrc_tdd384_32 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd384_29 },
+ { 1, &hf_rrc_tdd768_19 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_16 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_70(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_73(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_70, T_modeSpecificInfo_70_choice,
+ ett_rrc_T_modeSpecificInfo_73, T_modeSpecificInfo_73_choice,
NULL);
return offset;
@@ -108678,7 +116388,7 @@ dissect_rrc_T_modeSpecificInfo_70(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t SecondaryCCPCH_Info_HCR_VHCR_r7_sequence[] = {
- { &hf_rrc_modeSpecificInfo_70, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_70 },
+ { &hf_rrc_modeSpecificInfo_73, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_73 },
{ NULL, 0, 0, NULL }
};
@@ -108809,7 +116519,7 @@ dissect_rrc_MBMS_FACHCarryingMTCH_List(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const per_sequence_t T_fachCarryingMSCH_sequence[] = {
{ &hf_rrc_msch_transportFormatSet, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TransportFormatSet },
- { &hf_rrc_dummy_40 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MBMS_MSCH_ConfigurationInfo_r6 },
+ { &hf_rrc_dummy_44 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MBMS_MSCH_ConfigurationInfo_r6 },
{ NULL, 0, 0, NULL }
};
@@ -108939,7 +116649,7 @@ dissect_rrc_CellDCH_ReportCriteria(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t ForbiddenAffectCell_LCR_r4_sequence[] = {
- { &hf_rrc_tdd_97 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCCPCH_Info_LCR_r4 },
+ { &hf_rrc_tdd_100 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCCPCH_Info_LCR_r4 },
{ NULL, 0, 0, NULL }
};
@@ -109106,7 +116816,7 @@ dissect_rrc_CellDCH_ReportCriteria_LCR_r4(tvbuff_t *tvb _U_, int offset _U_, asn
}
-static const per_sequence_t T_fdd_123_sequence[] = {
+static const per_sequence_t T_fdd_126_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCPICH_Info },
{ &hf_rrc_primaryCPICH_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCPICH_TX_Power },
{ &hf_rrc_readSFN_Indicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
@@ -109115,15 +116825,15 @@ static const per_sequence_t T_fdd_123_sequence[] = {
};
static int
-dissect_rrc_T_fdd_123(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_126(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_123, T_fdd_123_sequence);
+ ett_rrc_T_fdd_126, T_fdd_126_sequence);
return offset;
}
-static const per_sequence_t T_tdd_76_sequence[] = {
+static const per_sequence_t T_tdd_79_sequence[] = {
{ &hf_rrc_primaryCCPCH_Info_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCCPCH_Info },
{ &hf_rrc_primaryCCPCH_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCCPCH_TX_Power },
{ &hf_rrc_timeslotInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TimeslotInfoList },
@@ -109132,60 +116842,60 @@ static const per_sequence_t T_tdd_76_sequence[] = {
};
static int
-dissect_rrc_T_tdd_76(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_79(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_76, T_tdd_76_sequence);
+ ett_rrc_T_tdd_79, T_tdd_79_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_86_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_89_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_86_choice[] = {
- { 0, &hf_rrc_fdd_126 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_123 },
- { 1, &hf_rrc_tdd_82 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_76 },
+static const per_choice_t T_modeSpecificInfo_89_choice[] = {
+ { 0, &hf_rrc_fdd_129 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_126 },
+ { 1, &hf_rrc_tdd_85 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_79 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_86(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_89(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_86, T_modeSpecificInfo_86_choice,
+ ett_rrc_T_modeSpecificInfo_89, T_modeSpecificInfo_89_choice,
NULL);
return offset;
}
-static const per_sequence_t T_fdd_132_sequence[] = {
+static const per_sequence_t T_fdd_135_sequence[] = {
{ &hf_rrc_q_QualMin , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Q_QualMin },
{ &hf_rrc_q_RxlevMin , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Q_RxlevMin },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_132(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_135(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_132, T_fdd_132_sequence);
+ ett_rrc_T_fdd_135, T_fdd_135_sequence);
return offset;
}
-static const per_sequence_t T_tdd_85_sequence[] = {
+static const per_sequence_t T_tdd_88_sequence[] = {
{ &hf_rrc_q_RxlevMin , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Q_RxlevMin },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_85(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_88(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_85, T_tdd_85_sequence);
+ ett_rrc_T_tdd_88, T_tdd_88_sequence);
return offset;
}
@@ -109205,24 +116915,24 @@ dissect_rrc_T_gsm_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr
}
-static const value_string rrc_T_modeSpecificInfo_95_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_98_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 2, "gsm" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_95_choice[] = {
- { 0, &hf_rrc_fdd_137 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_132 },
- { 1, &hf_rrc_tdd_92 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_85 },
+static const per_choice_t T_modeSpecificInfo_98_choice[] = {
+ { 0, &hf_rrc_fdd_140 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_135 },
+ { 1, &hf_rrc_tdd_95 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_88 },
{ 2, &hf_rrc_gsm_04 , ASN1_NO_EXTENSIONS , dissect_rrc_T_gsm_04 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_95(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_98(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_95, T_modeSpecificInfo_95_choice,
+ ett_rrc_T_modeSpecificInfo_98, T_modeSpecificInfo_98_choice,
NULL);
return offset;
@@ -109232,7 +116942,7 @@ dissect_rrc_T_modeSpecificInfo_95(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t CellSelectReselectInfoSIB_11_12_RSCP_sequence[] = {
{ &hf_rrc_q_OffsetS_N , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Q_OffsetS_N },
{ &hf_rrc_maxAllowedUL_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MaxAllowedUL_TX_Power },
- { &hf_rrc_modeSpecificInfo_95, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_95 },
+ { &hf_rrc_modeSpecificInfo_98, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_98 },
{ NULL, 0, 0, NULL }
};
@@ -109248,7 +116958,7 @@ dissect_rrc_CellSelectReselectInfoSIB_11_12_RSCP(tvbuff_t *tvb _U_, int offset _
static const per_sequence_t CellInfoSI_RSCP_sequence[] = {
{ &hf_rrc_cellIndividualOffset, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellIndividualOffset },
{ &hf_rrc_referenceTimeDifferenceToCell, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ReferenceTimeDifferenceToCell },
- { &hf_rrc_modeSpecificInfo_86, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_86 },
+ { &hf_rrc_modeSpecificInfo_89, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_89 },
{ &hf_rrc_cellSelectionReselectionInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellSelectReselectInfoSIB_11_12_RSCP },
{ NULL, 0, 0, NULL }
};
@@ -109296,7 +117006,7 @@ dissect_rrc_CellInfoSI_RSCP_LCR_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_fdd_124_sequence[] = {
+static const per_sequence_t T_fdd_127_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCPICH_Info },
{ &hf_rrc_primaryCPICH_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCPICH_TX_Power },
{ &hf_rrc_readSFN_Indicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
@@ -109305,15 +117015,15 @@ static const per_sequence_t T_fdd_124_sequence[] = {
};
static int
-dissect_rrc_T_fdd_124(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_124, T_fdd_124_sequence);
+ ett_rrc_T_fdd_127, T_fdd_127_sequence);
return offset;
}
-static const per_sequence_t T_tdd_77_sequence[] = {
+static const per_sequence_t T_tdd_80_sequence[] = {
{ &hf_rrc_primaryCCPCH_Info_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCCPCH_Info },
{ &hf_rrc_primaryCCPCH_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCCPCH_TX_Power },
{ &hf_rrc_timeslotInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TimeslotInfoList },
@@ -109322,60 +117032,60 @@ static const per_sequence_t T_tdd_77_sequence[] = {
};
static int
-dissect_rrc_T_tdd_77(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_80(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_77, T_tdd_77_sequence);
+ ett_rrc_T_tdd_80, T_tdd_80_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_87_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_90_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_87_choice[] = {
- { 0, &hf_rrc_fdd_127 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_124 },
- { 1, &hf_rrc_tdd_83 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_77 },
+static const per_choice_t T_modeSpecificInfo_90_choice[] = {
+ { 0, &hf_rrc_fdd_130 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_127 },
+ { 1, &hf_rrc_tdd_86 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_80 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_87(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_90(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_87, T_modeSpecificInfo_87_choice,
+ ett_rrc_T_modeSpecificInfo_90, T_modeSpecificInfo_90_choice,
NULL);
return offset;
}
-static const per_sequence_t T_fdd_133_sequence[] = {
+static const per_sequence_t T_fdd_136_sequence[] = {
{ &hf_rrc_q_QualMin , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Q_QualMin },
{ &hf_rrc_q_RxlevMin , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Q_RxlevMin },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_133(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_136(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_133, T_fdd_133_sequence);
+ ett_rrc_T_fdd_136, T_fdd_136_sequence);
return offset;
}
-static const per_sequence_t T_tdd_86_sequence[] = {
+static const per_sequence_t T_tdd_89_sequence[] = {
{ &hf_rrc_q_RxlevMin , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Q_RxlevMin },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_86(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_89(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_86, T_tdd_86_sequence);
+ ett_rrc_T_tdd_89, T_tdd_89_sequence);
return offset;
}
@@ -109395,24 +117105,24 @@ dissect_rrc_T_gsm_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr
}
-static const value_string rrc_T_modeSpecificInfo_96_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_99_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 2, "gsm" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_96_choice[] = {
- { 0, &hf_rrc_fdd_138 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_133 },
- { 1, &hf_rrc_tdd_93 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_86 },
+static const per_choice_t T_modeSpecificInfo_99_choice[] = {
+ { 0, &hf_rrc_fdd_141 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_136 },
+ { 1, &hf_rrc_tdd_96 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_89 },
{ 2, &hf_rrc_gsm_05 , ASN1_NO_EXTENSIONS , dissect_rrc_T_gsm_05 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_96(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_99(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_96, T_modeSpecificInfo_96_choice,
+ ett_rrc_T_modeSpecificInfo_99, T_modeSpecificInfo_99_choice,
NULL);
return offset;
@@ -109423,7 +117133,7 @@ static const per_sequence_t CellSelectReselectInfoSIB_11_12_ECN0_sequence[] = {
{ &hf_rrc_q_Offset1S_N , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Q_OffsetS_N },
{ &hf_rrc_q_Offset2S_N , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Q_OffsetS_N },
{ &hf_rrc_maxAllowedUL_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MaxAllowedUL_TX_Power },
- { &hf_rrc_modeSpecificInfo_96, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_96 },
+ { &hf_rrc_modeSpecificInfo_99, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_99 },
{ NULL, 0, 0, NULL }
};
@@ -109439,7 +117149,7 @@ dissect_rrc_CellSelectReselectInfoSIB_11_12_ECN0(tvbuff_t *tvb _U_, int offset _
static const per_sequence_t CellInfoSI_ECN0_sequence[] = {
{ &hf_rrc_cellIndividualOffset, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellIndividualOffset },
{ &hf_rrc_referenceTimeDifferenceToCell, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ReferenceTimeDifferenceToCell },
- { &hf_rrc_modeSpecificInfo_87, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_87 },
+ { &hf_rrc_modeSpecificInfo_90, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_90 },
{ &hf_rrc_cellSelectionReselectionInfo_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellSelectReselectInfoSIB_11_12_ECN0 },
{ NULL, 0, 0, NULL }
};
@@ -109473,7 +117183,7 @@ dissect_rrc_CellInfoSI_ECN0_LCR_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_fdd_125_sequence[] = {
+static const per_sequence_t T_fdd_128_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCPICH_Info },
{ &hf_rrc_primaryCPICH_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCPICH_TX_Power },
{ &hf_rrc_readSFN_Indicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
@@ -109482,15 +117192,15 @@ static const per_sequence_t T_fdd_125_sequence[] = {
};
static int
-dissect_rrc_T_fdd_125(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_125, T_fdd_125_sequence);
+ ett_rrc_T_fdd_128, T_fdd_128_sequence);
return offset;
}
-static const per_sequence_t T_tdd_78_sequence[] = {
+static const per_sequence_t T_tdd_81_sequence[] = {
{ &hf_rrc_primaryCCPCH_Info_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCCPCH_Info },
{ &hf_rrc_primaryCCPCH_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCCPCH_TX_Power },
{ &hf_rrc_timeslotInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TimeslotInfoList },
@@ -109499,60 +117209,60 @@ static const per_sequence_t T_tdd_78_sequence[] = {
};
static int
-dissect_rrc_T_tdd_78(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_81(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_78, T_tdd_78_sequence);
+ ett_rrc_T_tdd_81, T_tdd_81_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_88_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_91_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_88_choice[] = {
- { 0, &hf_rrc_fdd_128 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_125 },
- { 1, &hf_rrc_tdd_84 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_78 },
+static const per_choice_t T_modeSpecificInfo_91_choice[] = {
+ { 0, &hf_rrc_fdd_131 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_128 },
+ { 1, &hf_rrc_tdd_87 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_81 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_88(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_91(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_88, T_modeSpecificInfo_88_choice,
+ ett_rrc_T_modeSpecificInfo_91, T_modeSpecificInfo_91_choice,
NULL);
return offset;
}
-static const per_sequence_t T_fdd_134_sequence[] = {
+static const per_sequence_t T_fdd_137_sequence[] = {
{ &hf_rrc_q_QualMin , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Q_QualMin },
{ &hf_rrc_q_RxlevMin , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Q_RxlevMin },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_134(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_137(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_134, T_fdd_134_sequence);
+ ett_rrc_T_fdd_137, T_fdd_137_sequence);
return offset;
}
-static const per_sequence_t T_tdd_87_sequence[] = {
+static const per_sequence_t T_tdd_90_sequence[] = {
{ &hf_rrc_q_RxlevMin , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Q_RxlevMin },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_87(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_90(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_87, T_tdd_87_sequence);
+ ett_rrc_T_tdd_90, T_tdd_90_sequence);
return offset;
}
@@ -109572,24 +117282,24 @@ dissect_rrc_T_gsm_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr
}
-static const value_string rrc_T_modeSpecificInfo_97_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_100_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 2, "gsm" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_97_choice[] = {
- { 0, &hf_rrc_fdd_139 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_134 },
- { 1, &hf_rrc_tdd_94 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_87 },
+static const per_choice_t T_modeSpecificInfo_100_choice[] = {
+ { 0, &hf_rrc_fdd_142 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_137 },
+ { 1, &hf_rrc_tdd_97 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_90 },
{ 2, &hf_rrc_gsm_06 , ASN1_NO_EXTENSIONS , dissect_rrc_T_gsm_06 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_97(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_100(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_97, T_modeSpecificInfo_97_choice,
+ ett_rrc_T_modeSpecificInfo_100, T_modeSpecificInfo_100_choice,
NULL);
return offset;
@@ -109600,7 +117310,7 @@ static const per_sequence_t CellSelectReselectInfoSIB_11_12_HCS_RSCP_sequence[]
{ &hf_rrc_q_OffsetS_N , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Q_OffsetS_N },
{ &hf_rrc_maxAllowedUL_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MaxAllowedUL_TX_Power },
{ &hf_rrc_hcs_NeighbouringCellInformation_RSCP, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HCS_NeighbouringCellInformation_RSCP },
- { &hf_rrc_modeSpecificInfo_97, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_97 },
+ { &hf_rrc_modeSpecificInfo_100, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_100 },
{ NULL, 0, 0, NULL }
};
@@ -109616,7 +117326,7 @@ dissect_rrc_CellSelectReselectInfoSIB_11_12_HCS_RSCP(tvbuff_t *tvb _U_, int offs
static const per_sequence_t CellInfoSI_HCS_RSCP_sequence[] = {
{ &hf_rrc_cellIndividualOffset, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellIndividualOffset },
{ &hf_rrc_referenceTimeDifferenceToCell, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ReferenceTimeDifferenceToCell },
- { &hf_rrc_modeSpecificInfo_88, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_88 },
+ { &hf_rrc_modeSpecificInfo_91, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_91 },
{ &hf_rrc_cellSelectionReselectionInfo_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellSelectReselectInfoSIB_11_12_HCS_RSCP },
{ NULL, 0, 0, NULL }
};
@@ -109650,7 +117360,7 @@ dissect_rrc_CellInfoSI_HCS_RSCP_LCR_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_c
}
-static const per_sequence_t T_fdd_126_sequence[] = {
+static const per_sequence_t T_fdd_129_sequence[] = {
{ &hf_rrc_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCPICH_Info },
{ &hf_rrc_primaryCPICH_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCPICH_TX_Power },
{ &hf_rrc_readSFN_Indicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
@@ -109659,15 +117369,15 @@ static const per_sequence_t T_fdd_126_sequence[] = {
};
static int
-dissect_rrc_T_fdd_126(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_129(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_126, T_fdd_126_sequence);
+ ett_rrc_T_fdd_129, T_fdd_129_sequence);
return offset;
}
-static const per_sequence_t T_tdd_79_sequence[] = {
+static const per_sequence_t T_tdd_82_sequence[] = {
{ &hf_rrc_primaryCCPCH_Info_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PrimaryCCPCH_Info },
{ &hf_rrc_primaryCCPCH_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCCPCH_TX_Power },
{ &hf_rrc_timeslotInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TimeslotInfoList },
@@ -109676,30 +117386,30 @@ static const per_sequence_t T_tdd_79_sequence[] = {
};
static int
-dissect_rrc_T_tdd_79(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_82(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_79, T_tdd_79_sequence);
+ ett_rrc_T_tdd_82, T_tdd_82_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_89_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_92_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_89_choice[] = {
- { 0, &hf_rrc_fdd_129 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_126 },
- { 1, &hf_rrc_tdd_85 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_79 },
+static const per_choice_t T_modeSpecificInfo_92_choice[] = {
+ { 0, &hf_rrc_fdd_132 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_129 },
+ { 1, &hf_rrc_tdd_88 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_82 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_89(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_92(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_89, T_modeSpecificInfo_89_choice,
+ ett_rrc_T_modeSpecificInfo_92, T_modeSpecificInfo_92_choice,
NULL);
return offset;
@@ -109805,30 +117515,30 @@ dissect_rrc_HCS_NeighbouringCellInformation_ECN0(tvbuff_t *tvb _U_, int offset _
}
-static const per_sequence_t T_fdd_135_sequence[] = {
+static const per_sequence_t T_fdd_138_sequence[] = {
{ &hf_rrc_q_QualMin , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Q_QualMin },
{ &hf_rrc_q_RxlevMin , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Q_RxlevMin },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_135(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_138(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_135, T_fdd_135_sequence);
+ ett_rrc_T_fdd_138, T_fdd_138_sequence);
return offset;
}
-static const per_sequence_t T_tdd_88_sequence[] = {
+static const per_sequence_t T_tdd_91_sequence[] = {
{ &hf_rrc_q_RxlevMin , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Q_RxlevMin },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_88(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_91(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_88, T_tdd_88_sequence);
+ ett_rrc_T_tdd_91, T_tdd_91_sequence);
return offset;
}
@@ -109848,24 +117558,24 @@ dissect_rrc_T_gsm_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr
}
-static const value_string rrc_T_modeSpecificInfo_98_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_101_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 2, "gsm" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_98_choice[] = {
- { 0, &hf_rrc_fdd_140 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_135 },
- { 1, &hf_rrc_tdd_95 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_88 },
+static const per_choice_t T_modeSpecificInfo_101_choice[] = {
+ { 0, &hf_rrc_fdd_143 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_138 },
+ { 1, &hf_rrc_tdd_98 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_91 },
{ 2, &hf_rrc_gsm_07 , ASN1_NO_EXTENSIONS , dissect_rrc_T_gsm_07 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_98(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_101(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_98, T_modeSpecificInfo_98_choice,
+ ett_rrc_T_modeSpecificInfo_101, T_modeSpecificInfo_101_choice,
NULL);
return offset;
@@ -109877,7 +117587,7 @@ static const per_sequence_t CellSelectReselectInfoSIB_11_12_HCS_ECN0_sequence[]
{ &hf_rrc_q_Offset2S_N , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Q_OffsetS_N },
{ &hf_rrc_maxAllowedUL_TX_Power, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MaxAllowedUL_TX_Power },
{ &hf_rrc_hcs_NeighbouringCellInformation_ECN0, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HCS_NeighbouringCellInformation_ECN0 },
- { &hf_rrc_modeSpecificInfo_98, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_98 },
+ { &hf_rrc_modeSpecificInfo_101, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_101 },
{ NULL, 0, 0, NULL }
};
@@ -109893,7 +117603,7 @@ dissect_rrc_CellSelectReselectInfoSIB_11_12_HCS_ECN0(tvbuff_t *tvb _U_, int offs
static const per_sequence_t CellInfoSI_HCS_ECN0_sequence[] = {
{ &hf_rrc_cellIndividualOffset, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellIndividualOffset },
{ &hf_rrc_referenceTimeDifferenceToCell, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ReferenceTimeDifferenceToCell },
- { &hf_rrc_modeSpecificInfo_89, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_89 },
+ { &hf_rrc_modeSpecificInfo_92, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_92 },
{ &hf_rrc_cellSelectionReselectionInfo_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CellSelectReselectInfoSIB_11_12_HCS_ECN0 },
{ NULL, 0, 0, NULL }
};
@@ -110208,7 +117918,7 @@ dissect_rrc_NewInterFreqCellSI_List_RSCP(tvbuff_t *tvb _U_, int offset _U_, asn1
static const per_sequence_t InterFreqCellInfoSI_List_RSCP_sequence[] = {
{ &hf_rrc_removedInterFreqCellList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RemovedInterFreqCellList },
- { &hf_rrc_newInterFreqCellList_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_RSCP },
+ { &hf_rrc_newInterFreqCellList_07, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_RSCP },
{ NULL, 0, 0, NULL }
};
@@ -110253,7 +117963,7 @@ dissect_rrc_NewInterFreqCellSI_List_ECN0(tvbuff_t *tvb _U_, int offset _U_, asn1
static const per_sequence_t InterFreqCellInfoSI_List_ECN0_sequence[] = {
{ &hf_rrc_removedInterFreqCellList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RemovedInterFreqCellList },
- { &hf_rrc_newInterFreqCellList_07, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_ECN0 },
+ { &hf_rrc_newInterFreqCellList_08, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_ECN0 },
{ NULL, 0, 0, NULL }
};
@@ -110298,7 +118008,7 @@ dissect_rrc_NewInterFreqCellSI_List_HCS_RSCP(tvbuff_t *tvb _U_, int offset _U_,
static const per_sequence_t InterFreqCellInfoSI_List_HCS_RSCP_sequence[] = {
{ &hf_rrc_removedInterFreqCellList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RemovedInterFreqCellList },
- { &hf_rrc_newInterFreqCellList_08, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_HCS_RSCP },
+ { &hf_rrc_newInterFreqCellList_09, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_HCS_RSCP },
{ NULL, 0, 0, NULL }
};
@@ -110343,7 +118053,7 @@ dissect_rrc_NewInterFreqCellSI_List_HCS_ECN0(tvbuff_t *tvb _U_, int offset _U_,
static const per_sequence_t InterFreqCellInfoSI_List_HCS_ECN0_sequence[] = {
{ &hf_rrc_removedInterFreqCellList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RemovedInterFreqCellList },
- { &hf_rrc_newInterFreqCellList_09, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_HCS_ECN0 },
+ { &hf_rrc_newInterFreqCellList_10, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_HCS_ECN0 },
{ NULL, 0, 0, NULL }
};
@@ -110388,7 +118098,7 @@ dissect_rrc_NewInterFreqCellSI_List_RSCP_LCR_r4(tvbuff_t *tvb _U_, int offset _U
static const per_sequence_t InterFreqCellInfoSI_List_RSCP_LCR_sequence[] = {
{ &hf_rrc_removedInterFreqCellList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RemovedInterFreqCellList },
- { &hf_rrc_newInterFreqCellList_10, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_RSCP_LCR_r4 },
+ { &hf_rrc_newInterFreqCellList_11, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_RSCP_LCR_r4 },
{ NULL, 0, 0, NULL }
};
@@ -110433,7 +118143,7 @@ dissect_rrc_NewInterFreqCellSI_List_ECN0_LCR_r4(tvbuff_t *tvb _U_, int offset _U
static const per_sequence_t InterFreqCellInfoSI_List_ECN0_LCR_sequence[] = {
{ &hf_rrc_removedInterFreqCellList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RemovedInterFreqCellList },
- { &hf_rrc_newInterFreqCellList_11, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_ECN0_LCR_r4 },
+ { &hf_rrc_newInterFreqCellList_12, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_ECN0_LCR_r4 },
{ NULL, 0, 0, NULL }
};
@@ -110478,7 +118188,7 @@ dissect_rrc_NewInterFreqCellSI_List_HCS_RSCP_LCR_r4(tvbuff_t *tvb _U_, int offse
static const per_sequence_t InterFreqCellInfoSI_List_HCS_RSCP_LCR_sequence[] = {
{ &hf_rrc_removedInterFreqCellList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RemovedInterFreqCellList },
- { &hf_rrc_newInterFreqCellList_12, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_HCS_RSCP_LCR_r4 },
+ { &hf_rrc_newInterFreqCellList_13, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_HCS_RSCP_LCR_r4 },
{ NULL, 0, 0, NULL }
};
@@ -110523,7 +118233,7 @@ dissect_rrc_NewInterFreqCellSI_List_HCS_ECN0_LCR_r4(tvbuff_t *tvb _U_, int offse
static const per_sequence_t InterFreqCellInfoSI_List_HCS_ECN0_LCR_sequence[] = {
{ &hf_rrc_removedInterFreqCellList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RemovedInterFreqCellList },
- { &hf_rrc_newInterFreqCellList_13, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_HCS_ECN0_LCR_r4 },
+ { &hf_rrc_newInterFreqCellList_14, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_HCS_ECN0_LCR_r4 },
{ NULL, 0, 0, NULL }
};
@@ -110664,15 +118374,15 @@ dissect_rrc_InterFreqRepQuantityRACH_FDD(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_fdd_140_sequence[] = {
+static const per_sequence_t T_fdd_143_sequence[] = {
{ &hf_rrc_interFreqRepQuantityRACH_FDD, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InterFreqRepQuantityRACH_FDD },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_140(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_143(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_140, T_fdd_140_sequence);
+ ett_rrc_T_fdd_143, T_fdd_143_sequence);
return offset;
}
@@ -110708,15 +118418,15 @@ dissect_rrc_InterFreqRepQuantityRACH_TDDList(tvbuff_t *tvb _U_, int offset _U_,
}
-static const per_sequence_t T_tdd_91_sequence[] = {
+static const per_sequence_t T_tdd_94_sequence[] = {
{ &hf_rrc_interFreqRepQuantityRACH_TDDList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InterFreqRepQuantityRACH_TDDList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_91(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_94(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_91, T_tdd_91_sequence);
+ ett_rrc_T_tdd_94, T_tdd_94_sequence);
return offset;
}
@@ -110732,7 +118442,7 @@ dissect_rrc_MaxReportedCellsOnRACHinterFreq(tvbuff_t *tvb _U_, int offset _U_, a
}
-static const value_string rrc_T_modeSpecificInfo_103_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_106_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 2, "interFreqRACHReportingThreshold" },
@@ -110740,18 +118450,18 @@ static const value_string rrc_T_modeSpecificInfo_103_vals[] = {
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_103_choice[] = {
- { 0, &hf_rrc_fdd_146 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_140 },
- { 1, &hf_rrc_tdd_99 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_91 },
+static const per_choice_t T_modeSpecificInfo_106_choice[] = {
+ { 0, &hf_rrc_fdd_149 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_143 },
+ { 1, &hf_rrc_tdd_102 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_94 },
{ 2, &hf_rrc_interFreqRACHReportingThreshold, ASN1_NO_EXTENSIONS , dissect_rrc_Threshold },
{ 3, &hf_rrc_maxReportedCellsOnRACHinterFreq, ASN1_NO_EXTENSIONS , dissect_rrc_MaxReportedCellsOnRACHinterFreq },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_103(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_106(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_103, T_modeSpecificInfo_103_choice,
+ ett_rrc_T_modeSpecificInfo_106, T_modeSpecificInfo_106_choice,
NULL);
return offset;
@@ -110759,7 +118469,7 @@ dissect_rrc_T_modeSpecificInfo_103(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t Dummy_InterFreqRACHReportingInfo_sequence[] = {
- { &hf_rrc_modeSpecificInfo_103, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_103 },
+ { &hf_rrc_modeSpecificInfo_106, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_106 },
{ NULL, 0, 0, NULL }
};
@@ -110772,50 +118482,50 @@ dissect_rrc_Dummy_InterFreqRACHReportingInfo(tvbuff_t *tvb _U_, int offset _U_,
}
-static const per_sequence_t T_fdd_141_sequence[] = {
+static const per_sequence_t T_fdd_144_sequence[] = {
{ &hf_rrc_interFreqRepQuantityRACH_FDD, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InterFreqRepQuantityRACH_FDD },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_141(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_144(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_141, T_fdd_141_sequence);
+ ett_rrc_T_fdd_144, T_fdd_144_sequence);
return offset;
}
-static const per_sequence_t T_tdd_92_sequence[] = {
+static const per_sequence_t T_tdd_95_sequence[] = {
{ &hf_rrc_interFreqRepQuantityRACH_TDDList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InterFreqRepQuantityRACH_TDDList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_92(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_95(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_92, T_tdd_92_sequence);
+ ett_rrc_T_tdd_95, T_tdd_95_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_104_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_107_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_104_choice[] = {
- { 0, &hf_rrc_fdd_147 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_141 },
- { 1, &hf_rrc_tdd_100 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_92 },
+static const per_choice_t T_modeSpecificInfo_107_choice[] = {
+ { 0, &hf_rrc_fdd_150 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_144 },
+ { 1, &hf_rrc_tdd_103 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_95 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_104(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_107(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_104, T_modeSpecificInfo_104_choice,
+ ett_rrc_T_modeSpecificInfo_107, T_modeSpecificInfo_107_choice,
NULL);
return offset;
@@ -110823,7 +118533,7 @@ dissect_rrc_T_modeSpecificInfo_104(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t InterFreqRACHReportingInfo_sequence[] = {
- { &hf_rrc_modeSpecificInfo_104, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_104 },
+ { &hf_rrc_modeSpecificInfo_107, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_107 },
{ &hf_rrc_interFreqRACHReportingThreshold, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_Threshold },
{ &hf_rrc_maxReportedCellsOnRACHinterFreq, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MaxReportedCellsOnRACHinterFreq },
{ NULL, 0, 0, NULL }
@@ -110844,7 +118554,7 @@ static const per_sequence_t T_gsm_14_sequence[] = {
{ &hf_rrc_bsic , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BSIC },
{ &hf_rrc_frequency_band , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_Frequency_Band },
{ &hf_rrc_bcch_ARFCN , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BCCH_ARFCN },
- { &hf_rrc_dummy_19 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NULL },
+ { &hf_rrc_dummy_23 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NULL },
{ NULL, 0, 0, NULL }
};
@@ -111000,7 +118710,7 @@ dissect_rrc_NewIntraFreqCellSI_List_RSCP(tvbuff_t *tvb _U_, int offset _U_, asn1
static const per_sequence_t IntraFreqCellInfoSI_List_RSCP_sequence[] = {
{ &hf_rrc_removedIntraFreqCellList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RemovedIntraFreqCellList },
- { &hf_rrc_newIntraFreqCellList_05, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NewIntraFreqCellSI_List_RSCP },
+ { &hf_rrc_newIntraFreqCellList_06, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NewIntraFreqCellSI_List_RSCP },
{ NULL, 0, 0, NULL }
};
@@ -111044,7 +118754,7 @@ dissect_rrc_NewIntraFreqCellSI_List_ECN0(tvbuff_t *tvb _U_, int offset _U_, asn1
static const per_sequence_t IntraFreqCellInfoSI_List_ECN0_sequence[] = {
{ &hf_rrc_removedIntraFreqCellList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RemovedIntraFreqCellList },
- { &hf_rrc_newIntraFreqCellList_06, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NewIntraFreqCellSI_List_ECN0 },
+ { &hf_rrc_newIntraFreqCellList_07, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NewIntraFreqCellSI_List_ECN0 },
{ NULL, 0, 0, NULL }
};
@@ -111088,7 +118798,7 @@ dissect_rrc_NewIntraFreqCellSI_List_HCS_RSCP(tvbuff_t *tvb _U_, int offset _U_,
static const per_sequence_t IntraFreqCellInfoSI_List_HCS_RSCP_sequence[] = {
{ &hf_rrc_removedIntraFreqCellList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RemovedIntraFreqCellList },
- { &hf_rrc_newIntraFreqCellList_07, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NewIntraFreqCellSI_List_HCS_RSCP },
+ { &hf_rrc_newIntraFreqCellList_08, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NewIntraFreqCellSI_List_HCS_RSCP },
{ NULL, 0, 0, NULL }
};
@@ -111132,7 +118842,7 @@ dissect_rrc_NewIntraFreqCellSI_List_HCS_ECN0(tvbuff_t *tvb _U_, int offset _U_,
static const per_sequence_t IntraFreqCellInfoSI_List_HCS_ECN0_sequence[] = {
{ &hf_rrc_removedIntraFreqCellList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RemovedIntraFreqCellList },
- { &hf_rrc_newIntraFreqCellList_08, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NewIntraFreqCellSI_List_HCS_ECN0 },
+ { &hf_rrc_newIntraFreqCellList_09, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NewIntraFreqCellSI_List_HCS_ECN0 },
{ NULL, 0, 0, NULL }
};
@@ -111176,7 +118886,7 @@ dissect_rrc_NewIntraFreqCellSI_List_RSCP_LCR_r4(tvbuff_t *tvb _U_, int offset _U
static const per_sequence_t IntraFreqCellInfoSI_List_RSCP_LCR_r4_sequence[] = {
{ &hf_rrc_removedIntraFreqCellList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RemovedIntraFreqCellList },
- { &hf_rrc_newIntraFreqCellList_09, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NewIntraFreqCellSI_List_RSCP_LCR_r4 },
+ { &hf_rrc_newIntraFreqCellList_10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NewIntraFreqCellSI_List_RSCP_LCR_r4 },
{ NULL, 0, 0, NULL }
};
@@ -111220,7 +118930,7 @@ dissect_rrc_NewIntraFreqCellSI_List_ECN0_LCR_r4(tvbuff_t *tvb _U_, int offset _U
static const per_sequence_t IntraFreqCellInfoSI_List_ECN0_LCR_r4_sequence[] = {
{ &hf_rrc_removedIntraFreqCellList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RemovedIntraFreqCellList },
- { &hf_rrc_newIntraFreqCellList_10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NewIntraFreqCellSI_List_ECN0_LCR_r4 },
+ { &hf_rrc_newIntraFreqCellList_11, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NewIntraFreqCellSI_List_ECN0_LCR_r4 },
{ NULL, 0, 0, NULL }
};
@@ -111264,7 +118974,7 @@ dissect_rrc_NewIntraFreqCellSI_List_HCS_RSCP_LCR_r4(tvbuff_t *tvb _U_, int offse
static const per_sequence_t IntraFreqCellInfoSI_List_HCS_RSCP_LCR_r4_sequence[] = {
{ &hf_rrc_removedIntraFreqCellList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RemovedIntraFreqCellList },
- { &hf_rrc_newIntraFreqCellList_11, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NewIntraFreqCellSI_List_HCS_RSCP_LCR_r4 },
+ { &hf_rrc_newIntraFreqCellList_12, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NewIntraFreqCellSI_List_HCS_RSCP_LCR_r4 },
{ NULL, 0, 0, NULL }
};
@@ -111308,7 +119018,7 @@ dissect_rrc_NewIntraFreqCellSI_List_HCS_ECN0_LCR_r4(tvbuff_t *tvb _U_, int offse
static const per_sequence_t IntraFreqCellInfoSI_List_HCS_ECN0_LCR_r4_sequence[] = {
{ &hf_rrc_removedIntraFreqCellList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RemovedIntraFreqCellList },
- { &hf_rrc_newIntraFreqCellList_12, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NewIntraFreqCellSI_List_HCS_ECN0_LCR_r4 },
+ { &hf_rrc_newIntraFreqCellList_13, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NewIntraFreqCellSI_List_HCS_ECN0_LCR_r4 },
{ NULL, 0, 0, NULL }
};
@@ -111385,15 +119095,15 @@ dissect_rrc_IntraFreqRepQuantityRACH_FDD(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_fdd_144_sequence[] = {
+static const per_sequence_t T_fdd_147_sequence[] = {
{ &hf_rrc_intraFreqRepQuantityRACH_FDD, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_IntraFreqRepQuantityRACH_FDD },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_144(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_147(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_144, T_fdd_144_sequence);
+ ett_rrc_T_fdd_147, T_fdd_147_sequence);
return offset;
}
@@ -111430,36 +119140,36 @@ dissect_rrc_IntraFreqRepQuantityRACH_TDDList(tvbuff_t *tvb _U_, int offset _U_,
}
-static const per_sequence_t T_tdd_94_sequence[] = {
+static const per_sequence_t T_tdd_97_sequence[] = {
{ &hf_rrc_intraFreqRepQuantityRACH_TDDList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_IntraFreqRepQuantityRACH_TDDList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_94(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_97(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_94, T_tdd_94_sequence);
+ ett_rrc_T_tdd_97, T_tdd_97_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_107_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_110_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_107_choice[] = {
- { 0, &hf_rrc_fdd_150 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_144 },
- { 1, &hf_rrc_tdd_102 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_94 },
+static const per_choice_t T_modeSpecificInfo_110_choice[] = {
+ { 0, &hf_rrc_fdd_153 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_147 },
+ { 1, &hf_rrc_tdd_105 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_97 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_107(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_110(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_107, T_modeSpecificInfo_107_choice,
+ ett_rrc_T_modeSpecificInfo_110, T_modeSpecificInfo_110_choice,
NULL);
return offset;
@@ -111468,7 +119178,7 @@ dissect_rrc_T_modeSpecificInfo_107(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t IntraFreqReportingQuantityForRACH_sequence[] = {
{ &hf_rrc_sfn_SFN_OTD_Type, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SFN_SFN_OTD_Type },
- { &hf_rrc_modeSpecificInfo_107, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_107 },
+ { &hf_rrc_modeSpecificInfo_110, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_110 },
{ NULL, 0, 0, NULL }
};
@@ -111506,7 +119216,7 @@ dissect_rrc_MaxReportedCellsOnRACH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t ReportingInfoForCellDCH_sequence[] = {
{ &hf_rrc_intraFreqReportingQuantity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_IntraFreqReportingQuantity },
{ &hf_rrc_measurementReportingMode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MeasurementReportingMode },
- { &hf_rrc_reportCriteria_12, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellDCH_ReportCriteria },
+ { &hf_rrc_reportCriteria_13, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellDCH_ReportCriteria },
{ NULL, 0, 0, NULL }
};
@@ -111598,7 +119308,7 @@ dissect_rrc_IntraFreqMeasurementSysInfo_HCS_ECN0(tvbuff_t *tvb _U_, int offset _
static const per_sequence_t ReportingInfoForCellDCH_LCR_r4_sequence[] = {
{ &hf_rrc_intraFreqReportingQuantity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_IntraFreqReportingQuantity },
{ &hf_rrc_measurementReportingMode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MeasurementReportingMode },
- { &hf_rrc_reportCriteria_13, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellDCH_ReportCriteria_LCR_r4 },
+ { &hf_rrc_reportCriteria_14, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CellDCH_ReportCriteria_LCR_r4 },
{ NULL, 0, 0, NULL }
};
@@ -111870,7 +119580,7 @@ static const per_sequence_t TrafficVolumeMeasSysInfo_sequence[] = {
{ &hf_rrc_trafficVolumeMeasurementObjectList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TrafficVolumeMeasurementObjectList },
{ &hf_rrc_trafficVolumeMeasQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TrafficVolumeMeasQuantity },
{ &hf_rrc_trafficVolumeReportingQuantity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TrafficVolumeReportingQuantity },
- { &hf_rrc_dummy_48 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TrafficVolumeReportingCriteria },
+ { &hf_rrc_dummy_52 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TrafficVolumeReportingCriteria },
{ &hf_rrc_measurementValidity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementValidity },
{ &hf_rrc_measurementReportingMode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MeasurementReportingMode },
{ &hf_rrc_reportCriteriaSysInf, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TrafficVolumeReportCriteriaSysInfo },
@@ -111904,7 +119614,7 @@ dissect_rrc_UE_InternalMeasurementSysInfo(tvbuff_t *tvb _U_, int offset _U_, asn
static const per_sequence_t MeasurementControlSysInfo_sequence[] = {
{ &hf_rrc_use_of_HCS , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_use_of_HCS },
{ &hf_rrc_trafficVolumeMeasSysInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TrafficVolumeMeasSysInfo },
- { &hf_rrc_dummy_47 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_InternalMeasurementSysInfo },
+ { &hf_rrc_dummy_51 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_InternalMeasurementSysInfo },
{ NULL, 0, 0, NULL }
};
@@ -111918,8 +119628,8 @@ dissect_rrc_MeasurementControlSysInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
static const per_sequence_t T_cpich_RSCP_02_sequence[] = {
- { &hf_rrc_newIntraFreqCellList_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewIntraFreqCellSI_List_RSCP },
- { &hf_rrc_newInterFreqCellList_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_RSCP },
+ { &hf_rrc_newIntraFreqCellList_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewIntraFreqCellSI_List_RSCP },
+ { &hf_rrc_newInterFreqCellList_07, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_RSCP },
{ NULL, 0, 0, NULL }
};
@@ -111933,8 +119643,8 @@ dissect_rrc_T_cpich_RSCP_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static const per_sequence_t T_cpich_Ec_N0_03_sequence[] = {
- { &hf_rrc_newIntraFreqCellList_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewIntraFreqCellSI_List_ECN0 },
- { &hf_rrc_newInterFreqCellList_07, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_ECN0 },
+ { &hf_rrc_newIntraFreqCellList_07, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewIntraFreqCellSI_List_ECN0 },
+ { &hf_rrc_newInterFreqCellList_08, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_ECN0 },
{ NULL, 0, 0, NULL }
};
@@ -111985,8 +119695,8 @@ dissect_rrc_T_hcs_not_used_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
static const per_sequence_t T_cpich_RSCP_03_sequence[] = {
- { &hf_rrc_newIntraFreqCellList_07, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewIntraFreqCellSI_List_HCS_RSCP },
- { &hf_rrc_newInterFreqCellList_08, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_HCS_RSCP },
+ { &hf_rrc_newIntraFreqCellList_08, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewIntraFreqCellSI_List_HCS_RSCP },
+ { &hf_rrc_newInterFreqCellList_09, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_HCS_RSCP },
{ NULL, 0, 0, NULL }
};
@@ -112000,8 +119710,8 @@ dissect_rrc_T_cpich_RSCP_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static const per_sequence_t T_cpich_Ec_N0_04_sequence[] = {
- { &hf_rrc_newIntraFreqCellList_08, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewIntraFreqCellSI_List_HCS_ECN0 },
- { &hf_rrc_newInterFreqCellList_09, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_HCS_ECN0 },
+ { &hf_rrc_newIntraFreqCellList_09, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewIntraFreqCellSI_List_HCS_ECN0 },
+ { &hf_rrc_newInterFreqCellList_10, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_HCS_ECN0 },
{ NULL, 0, 0, NULL }
};
@@ -112118,8 +119828,8 @@ dissect_rrc_MeasurementControlSysInfoExtensionAddon_r5(tvbuff_t *tvb _U_, int of
static const per_sequence_t T_cpich_RSCP_04_sequence[] = {
- { &hf_rrc_newIntraFreqCellList_09, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewIntraFreqCellSI_List_RSCP_LCR_r4 },
- { &hf_rrc_newInterFreqCellList_10, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_RSCP_LCR_r4 },
+ { &hf_rrc_newIntraFreqCellList_10, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewIntraFreqCellSI_List_RSCP_LCR_r4 },
+ { &hf_rrc_newInterFreqCellList_11, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_RSCP_LCR_r4 },
{ NULL, 0, 0, NULL }
};
@@ -112133,8 +119843,8 @@ dissect_rrc_T_cpich_RSCP_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static const per_sequence_t T_cpich_Ec_N0_05_sequence[] = {
- { &hf_rrc_newIntraFreqCellList_10, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewIntraFreqCellSI_List_ECN0_LCR_r4 },
- { &hf_rrc_newInterFreqCellList_11, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_ECN0_LCR_r4 },
+ { &hf_rrc_newIntraFreqCellList_11, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewIntraFreqCellSI_List_ECN0_LCR_r4 },
+ { &hf_rrc_newInterFreqCellList_12, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_ECN0_LCR_r4 },
{ NULL, 0, 0, NULL }
};
@@ -112185,8 +119895,8 @@ dissect_rrc_T_hcs_not_used_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
static const per_sequence_t T_cpich_RSCP_05_sequence[] = {
- { &hf_rrc_newIntraFreqCellList_11, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewIntraFreqCellSI_List_HCS_RSCP_LCR_r4 },
- { &hf_rrc_newInterFreqCellList_12, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_HCS_RSCP_LCR_r4 },
+ { &hf_rrc_newIntraFreqCellList_12, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewIntraFreqCellSI_List_HCS_RSCP_LCR_r4 },
+ { &hf_rrc_newInterFreqCellList_13, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_HCS_RSCP_LCR_r4 },
{ NULL, 0, 0, NULL }
};
@@ -112200,8 +119910,8 @@ dissect_rrc_T_cpich_RSCP_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static const per_sequence_t T_cpich_Ec_N0_06_sequence[] = {
- { &hf_rrc_newIntraFreqCellList_12, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewIntraFreqCellSI_List_HCS_ECN0_LCR_r4 },
- { &hf_rrc_newInterFreqCellList_13, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_HCS_ECN0_LCR_r4 },
+ { &hf_rrc_newIntraFreqCellList_13, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewIntraFreqCellSI_List_HCS_ECN0_LCR_r4 },
+ { &hf_rrc_newInterFreqCellList_14, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_NewInterFreqCellSI_List_HCS_ECN0_LCR_r4 },
{ NULL, 0, 0, NULL }
};
@@ -112689,11 +120399,15 @@ dissect_rrc_UE_Positioning_GANSS_TimeModels(tvbuff_t *tvb _U_, int offset _U_, a
}
+static const per_sequence_t UE_Positioning_GANSS_TimeModels_va40ext_sequence_of[1] = {
+ { &hf_rrc_UE_Positioning_GANSS_TimeModels_va40ext_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_GANSS_TimeModel_va40ext },
+};
static int
-dissect_rrc_INTEGER_M24_0(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
- -24, 0U, NULL, FALSE);
+dissect_rrc_UE_Positioning_GANSS_TimeModels_va40ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_UE_Positioning_GANSS_TimeModels_va40ext, UE_Positioning_GANSS_TimeModels_va40ext_sequence_of,
+ 1, maxGANSS_1, FALSE);
return offset;
}
@@ -112958,50 +120672,50 @@ dissect_rrc_DataVolumeHistory(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
}
-static const per_sequence_t T_fdd_168_sequence[] = {
+static const per_sequence_t T_fdd_173_sequence[] = {
{ &hf_rrc_intraFreqMeasQuantity_FDD_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_IntraFreqMeasQuantity_FDD_sib3 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_168(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_173(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_168, T_fdd_168_sequence);
+ ett_rrc_T_fdd_173, T_fdd_173_sequence);
return offset;
}
-static const per_sequence_t T_tdd_119_sequence[] = {
+static const per_sequence_t T_tdd_124_sequence[] = {
{ &hf_rrc_intraFreqMeasQuantity_TDDList_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_IntraFreqMeasQuantity_TDD_sib3List },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd_119(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_124(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_119, T_tdd_119_sequence);
+ ett_rrc_T_tdd_124, T_tdd_124_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_134_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_140_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_134_choice[] = {
- { 0, &hf_rrc_fdd_174 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_168 },
- { 1, &hf_rrc_tdd_127 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_119 },
+static const per_choice_t T_modeSpecificInfo_140_choice[] = {
+ { 0, &hf_rrc_fdd_179 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_173 },
+ { 1, &hf_rrc_tdd_132 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_124 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_134(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_140(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_134, T_modeSpecificInfo_134_choice,
+ ett_rrc_T_modeSpecificInfo_140, T_modeSpecificInfo_140_choice,
NULL);
return offset;
@@ -113009,7 +120723,7 @@ dissect_rrc_T_modeSpecificInfo_134(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t DeferredMeasurementControlReadingSupport_sequence[] = {
- { &hf_rrc_modeSpecificInfo_134, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_modeSpecificInfo_134 },
+ { &hf_rrc_modeSpecificInfo_140, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_modeSpecificInfo_140 },
{ NULL, 0, 0, NULL }
};
@@ -113299,8 +121013,16 @@ dissect_rrc_ExtSIBTypeInfoSchedulingInfo_List2(tvbuff_t *tvb _U_, int offset _U_
static int
dissect_rrc_HNBName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
- 1, maxHNBNameSize, FALSE, NULL);
+#line 603 "../../asn1/rrc/rrc.cnf"
+ tvbuff_t *hnbname_tvb = NULL;
+
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, -1,
+ 1, maxHNBNameSize, FALSE, &hnbname_tvb);
+
+ proto_tree_add_unicode_string(tree, hf_index, hnbname_tvb, 0, -1,
+ tvb_get_ephemeral_string_enc(hnbname_tvb, 0, tvb_length(hnbname_tvb), ENC_UTF_8 | ENC_NA));
+
+
return offset;
}
@@ -113342,6 +121064,8 @@ static const value_string rrc_SIBSb_TypeAndTag_vals[] = {
{ 0, NULL }
};
+static value_string_ext rrc_SIBSb_TypeAndTag_vals_ext = VALUE_STRING_EXT_INIT(rrc_SIBSb_TypeAndTag_vals);
+
static const per_choice_t SIBSb_TypeAndTag_choice[] = {
{ 0, &hf_rrc_sysInfoType1_01 , ASN1_NO_EXTENSIONS , dissect_rrc_PLMN_ValueTag },
{ 1, &hf_rrc_sysInfoType2 , ASN1_NO_EXTENSIONS , dissect_rrc_CellValueTag },
@@ -113350,7 +121074,7 @@ static const per_choice_t SIBSb_TypeAndTag_choice[] = {
{ 4, &hf_rrc_sysInfoType5_01 , ASN1_NO_EXTENSIONS , dissect_rrc_CellValueTag },
{ 5, &hf_rrc_sysInfoType6 , ASN1_NO_EXTENSIONS , dissect_rrc_CellValueTag },
{ 6, &hf_rrc_sysInfoType7_01 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
- { 7, &hf_rrc_dummy_50 , ASN1_NO_EXTENSIONS , dissect_rrc_CellValueTag },
+ { 7, &hf_rrc_dummy_54 , ASN1_NO_EXTENSIONS , dissect_rrc_CellValueTag },
{ 8, &hf_rrc_dummy2_13 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 9, &hf_rrc_dummy3_03 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 10, &hf_rrc_sysInfoType11_01, ASN1_NO_EXTENSIONS , dissect_rrc_CellValueTag },
@@ -113476,14 +121200,14 @@ dissect_rrc_MasterInformationBlock_v860ext_IEs(tvbuff_t *tvb _U_, int offset _U_
}
-static const per_sequence_t T_nonCriticalExtensions_167_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_181_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_167(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_181(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_167, T_nonCriticalExtensions_167_sequence);
+ ett_rrc_T_nonCriticalExtensions_181, T_nonCriticalExtensions_181_sequence);
return offset;
}
@@ -113491,7 +121215,7 @@ dissect_rrc_T_nonCriticalExtensions_167(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860NonCriticalExtensions_26_sequence[] = {
{ &hf_rrc_masterInformationBlock_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MasterInformationBlock_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_167, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_167 },
+ { &hf_rrc_nonCriticalExtensions_181, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_181 },
{ NULL, 0, 0, NULL }
};
@@ -113565,6 +121289,20 @@ dissect_rrc_SIB_ReferenceList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
}
+
+static int
+dissect_rrc_T_cn_CommonGSM_MAP_NAS_SysInfo_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 625 "../../asn1/rrc/rrc.cnf"
+ rrc_nas_sys_info_gsm_map_type = RRC_NAS_SYS_INFO_CN_COMMON;
+ offset = dissect_rrc_NAS_SystemInformationGSM_MAP(tvb, offset, actx, tree, hf_index);
+
+
+
+
+ return offset;
+}
+
+
static const per_sequence_t SysInfoType1_v3a0ext_IEs_sequence[] = {
{ &hf_rrc_ue_ConnTimersAndConstants_v3a0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_ConnTimersAndConstants_v3a0ext },
{ &hf_rrc_ue_IdleTimersAndConstants_v3a0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_IdleTimersAndConstants_v3a0ext },
@@ -113594,14 +121332,14 @@ dissect_rrc_SysInfoType1_v860ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_nonCriticalExtensions_168_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_182_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_168(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_182(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_168, T_nonCriticalExtensions_168_sequence);
+ ett_rrc_T_nonCriticalExtensions_182, T_nonCriticalExtensions_182_sequence);
return offset;
}
@@ -113609,7 +121347,7 @@ dissect_rrc_T_nonCriticalExtensions_168(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860NonCriticalExtentions_02_sequence[] = {
{ &hf_rrc_sysInfoType1_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType1_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_168, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_168 },
+ { &hf_rrc_nonCriticalExtensions_182, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_182 },
{ NULL, 0, 0, NULL }
};
@@ -113638,7 +121376,7 @@ dissect_rrc_T_v3a0NonCriticalExtensions_12(tvbuff_t *tvb _U_, int offset _U_, as
static const per_sequence_t SysInfoType1_sequence[] = {
- { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NAS_SystemInformationGSM_MAP },
+ { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_cn_CommonGSM_MAP_NAS_SysInfo_03 },
{ &hf_rrc_cn_DomainSysInfoList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CN_DomainSysInfoList },
{ &hf_rrc_ue_ConnTimersAndConstants, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_ConnTimersAndConstants },
{ &hf_rrc_ue_IdleTimersAndConstants, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_IdleTimersAndConstants },
@@ -113655,14 +121393,14 @@ dissect_rrc_SysInfoType1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
}
-static const per_sequence_t T_nonCriticalExtensions_169_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_183_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_169(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_183(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_169, T_nonCriticalExtensions_169_sequence);
+ ett_rrc_T_nonCriticalExtensions_183, T_nonCriticalExtensions_183_sequence);
return offset;
}
@@ -113670,7 +121408,7 @@ dissect_rrc_T_nonCriticalExtensions_169(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t SysInfoType2_sequence[] = {
{ &hf_rrc_ura_IdentityList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_URA_IdentityList },
- { &hf_rrc_nonCriticalExtensions_169, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_169 },
+ { &hf_rrc_nonCriticalExtensions_183, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_183 },
{ NULL, 0, 0, NULL }
};
@@ -113845,14 +121583,14 @@ dissect_rrc_SysInfoType3_v920ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_nonCriticalExtensions_170_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_184_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_170(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_184(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_170, T_nonCriticalExtensions_170_sequence);
+ ett_rrc_T_nonCriticalExtensions_184, T_nonCriticalExtensions_184_sequence);
return offset;
}
@@ -113860,7 +121598,7 @@ dissect_rrc_T_nonCriticalExtensions_170(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v900NonCriticalExtension_sequence[] = {
{ &hf_rrc_sysInfoType3_v920ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType3_v920ext_IEs },
- { &hf_rrc_nonCriticalExtensions_170, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_170 },
+ { &hf_rrc_nonCriticalExtensions_184, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_184 },
{ NULL, 0, 0, NULL }
};
@@ -114067,14 +121805,14 @@ dissect_rrc_SysInfoType4_v5c0ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_nonCriticalExtensions_171_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_185_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_171(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_185(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_171, T_nonCriticalExtensions_171_sequence);
+ ett_rrc_T_nonCriticalExtensions_185, T_nonCriticalExtensions_185_sequence);
return offset;
}
@@ -114082,7 +121820,7 @@ dissect_rrc_T_nonCriticalExtensions_171(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v5c0NonCriticalExtension_sequence[] = {
{ &hf_rrc_sysInfoType4_v5c0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType4_v5c0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_171, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_171 },
+ { &hf_rrc_nonCriticalExtensions_185, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_185 },
{ NULL, 0, 0, NULL }
};
@@ -114157,21 +121895,21 @@ dissect_rrc_SysInfoType4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
}
-static const per_sequence_t T_fdd_169_sequence[] = {
+static const per_sequence_t T_fdd_174_sequence[] = {
{ &hf_rrc_aich_PowerOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_AICH_PowerOffset },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_169(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_174(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_169, T_fdd_169_sequence);
+ ett_rrc_T_fdd_174, T_fdd_174_sequence);
return offset;
}
-static const per_sequence_t T_tdd_120_sequence[] = {
+static const per_sequence_t T_tdd_125_sequence[] = {
{ &hf_rrc_pusch_SysInfoList_SFN, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PUSCH_SysInfoList_SFN },
{ &hf_rrc_pdsch_SysInfoList_SFN, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PDSCH_SysInfoList_SFN },
{ &hf_rrc_openLoopPowerControl_TDD, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_OpenLoopPowerControl_TDD },
@@ -114179,30 +121917,30 @@ static const per_sequence_t T_tdd_120_sequence[] = {
};
static int
-dissect_rrc_T_tdd_120(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_125(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_120, T_tdd_120_sequence);
+ ett_rrc_T_tdd_125, T_tdd_125_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_135_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_141_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_135_choice[] = {
- { 0, &hf_rrc_fdd_175 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_169 },
- { 1, &hf_rrc_tdd_128 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_120 },
+static const per_choice_t T_modeSpecificInfo_141_choice[] = {
+ { 0, &hf_rrc_fdd_180 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_174 },
+ { 1, &hf_rrc_tdd_133 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_125 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_135(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_141(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_135, T_modeSpecificInfo_135_choice,
+ ett_rrc_T_modeSpecificInfo_141, T_modeSpecificInfo_141_choice,
NULL);
return offset;
@@ -114370,22 +122108,22 @@ dissect_rrc_SysInfoType5_v690ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_fdd_170_sequence[] = {
+static const per_sequence_t T_fdd_175_sequence[] = {
{ &hf_rrc_hs_dsch_CommonSystemInformation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HS_DSCH_CommonSystemInformation },
{ &hf_rrc_hs_dsch_PagingSystemInformation, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_DSCH_PagingSystemInformation },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_170(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_175(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_170, T_fdd_170_sequence);
+ ett_rrc_T_fdd_175, T_fdd_175_sequence);
return offset;
}
-static const per_sequence_t T_tdd768_20_sequence[] = {
+static const per_sequence_t T_tdd768_21_sequence[] = {
{ &hf_rrc_pusch_SysInfoList_SFN_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PUSCH_SysInfoList_SFN_VHCR },
{ &hf_rrc_pdsch_SysInfoList_SFN_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PDSCH_SysInfoList_VHCR_r7 },
{ &hf_rrc_prach_SystemInformationList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PRACH_SystemInformationList_VHCR_r7 },
@@ -114393,46 +122131,46 @@ static const per_sequence_t T_tdd768_20_sequence[] = {
};
static int
-dissect_rrc_T_tdd768_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd768_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd768_20, T_tdd768_20_sequence);
+ ett_rrc_T_tdd768_21, T_tdd768_21_sequence);
return offset;
}
-static const per_sequence_t T_tdd128_59_sequence[] = {
+static const per_sequence_t T_tdd128_63_sequence[] = {
{ &hf_rrc_prach_SystemInformationList_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PRACH_SystemInformationList_LCR_v770ext },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_59(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_63(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_59, T_tdd128_59_sequence);
+ ett_rrc_T_tdd128_63, T_tdd128_63_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_136_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_142_vals[] = {
{ 0, "fdd" },
{ 1, "tdd768" },
{ 2, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_136_choice[] = {
- { 0, &hf_rrc_fdd_176 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_170 },
- { 1, &hf_rrc_tdd768_23 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_20 },
- { 2, &hf_rrc_tdd128_62 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_59 },
+static const per_choice_t T_modeSpecificInfo_142_choice[] = {
+ { 0, &hf_rrc_fdd_181 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_175 },
+ { 1, &hf_rrc_tdd768_24 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd768_21 },
+ { 2, &hf_rrc_tdd128_66 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_63 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_136(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_142(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_136, T_modeSpecificInfo_136_choice,
+ ett_rrc_T_modeSpecificInfo_142, T_modeSpecificInfo_142_choice,
NULL);
return offset;
@@ -114460,7 +122198,7 @@ dissect_rrc_T_sccpch_SystemInformation_MBMS_01(tvbuff_t *tvb _U_, int offset _U_
static const per_sequence_t SysInfoType5_v770ext_IEs_sequence[] = {
- { &hf_rrc_modeSpecificInfo_136, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_modeSpecificInfo_136 },
+ { &hf_rrc_modeSpecificInfo_142, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_modeSpecificInfo_142 },
{ &hf_rrc_sccpch_SystemInformationList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SCCPCH_SystemInformationList_HCR_VHCR_r7 },
{ &hf_rrc_sccpch_SystemInformation_MBMS_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_sccpch_SystemInformation_MBMS_01 },
{ &hf_rrc_tDD_MBSFNInformation, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TDD_MBSFNInformation },
@@ -114489,15 +122227,15 @@ dissect_rrc_T_dummy_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
}
-static const per_sequence_t T_fdd_171_sequence[] = {
+static const per_sequence_t T_fdd_176_sequence[] = {
{ &hf_rrc_hs_dsch_DrxCellfach_info, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_DSCH_DrxCellfach_info },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_171(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_176(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_171, T_fdd_171_sequence);
+ ett_rrc_T_fdd_176, T_fdd_176_sequence);
return offset;
}
@@ -114518,37 +122256,37 @@ dissect_rrc_T_hs_dsch_CommonSysInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
-static const per_sequence_t T_tdd128_60_sequence[] = {
+static const per_sequence_t T_tdd128_64_sequence[] = {
{ &hf_rrc_hs_dsch_CommonSysInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_hs_dsch_CommonSysInfo },
{ &hf_rrc_hs_dsch_DrxCellfach_info_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HS_DSCH_DrxCellfach_info_TDD128 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_tdd128_60(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd128_64(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd128_60, T_tdd128_60_sequence);
+ ett_rrc_T_tdd128_64, T_tdd128_64_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_137_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_143_vals[] = {
{ 0, "fdd" },
{ 1, "tdd128" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_137_choice[] = {
- { 0, &hf_rrc_fdd_177 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_171 },
- { 1, &hf_rrc_tdd128_63 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_60 },
+static const per_choice_t T_modeSpecificInfo_143_choice[] = {
+ { 0, &hf_rrc_fdd_182 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_176 },
+ { 1, &hf_rrc_tdd128_67 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd128_64 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_137(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_143(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_137, T_modeSpecificInfo_137_choice,
+ ett_rrc_T_modeSpecificInfo_143, T_modeSpecificInfo_143_choice,
NULL);
return offset;
@@ -114556,8 +122294,8 @@ dissect_rrc_T_modeSpecificInfo_137(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const per_sequence_t SysInfoType5_v860ext_IEs_sequence[] = {
- { &hf_rrc_dummy_51 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_15 },
- { &hf_rrc_modeSpecificInfo_137, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_137 },
+ { &hf_rrc_dummy_55 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_15 },
+ { &hf_rrc_modeSpecificInfo_143, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_143 },
{ NULL, 0, 0, NULL }
};
@@ -114629,14 +122367,44 @@ dissect_rrc_SysInfoType5_v8d0ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_nonCriticalExtensions_172_sequence[] = {
+static const per_sequence_t SysInfoType5_va40ext_IEs_sequence[] = {
+ { &hf_rrc_frequencyBandsIndicatorSupport, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FrequencyBandsIndicatorSupport },
+ { &hf_rrc_frequencyBandIndicator3, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RadioFrequencyBandFDD3 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_172(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_SysInfoType5_va40ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_172, T_nonCriticalExtensions_172_sequence);
+ ett_rrc_SysInfoType5_va40ext_IEs, SysInfoType5_va40ext_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_186_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_186(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_186, T_nonCriticalExtensions_186_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtensions_18_sequence[] = {
+ { &hf_rrc_sysInfoType5_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType5_va40ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_186, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_186 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtensions_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtensions_18, T_va40NonCriticalExtensions_18_sequence);
return offset;
}
@@ -114644,7 +122412,7 @@ dissect_rrc_T_nonCriticalExtensions_172(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v8d0NonCriticalExtensions_sequence[] = {
{ &hf_rrc_sysInfoType5_v8d0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType5_v8d0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_172, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_172 },
+ { &hf_rrc_va40NonCriticalExtensions_19, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtensions_18 },
{ NULL, 0, 0, NULL }
};
@@ -114795,7 +122563,7 @@ dissect_rrc_T_v4b0NonCriticalExtensions_19(tvbuff_t *tvb _U_, int offset _U_, as
static const per_sequence_t SysInfoType5_sequence[] = {
{ &hf_rrc_sib6indicator , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_pich_PowerOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PICH_PowerOffset },
- { &hf_rrc_modeSpecificInfo_135, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_135 },
+ { &hf_rrc_modeSpecificInfo_141, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_141 },
{ &hf_rrc_primaryCCPCH_Info_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCCPCH_Info },
{ &hf_rrc_prach_SystemInformationList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PRACH_SystemInformationList },
{ &hf_rrc_sCCPCH_SystemInformationList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SCCPCH_SystemInformationList },
@@ -114822,22 +122590,22 @@ dissect_rrc_SysInfoType5bis(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_fdd_172_sequence[] = {
+static const per_sequence_t T_fdd_177_sequence[] = {
{ &hf_rrc_aich_PowerOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_AICH_PowerOffset },
- { &hf_rrc_dummy_52 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CSICH_PowerOffset },
+ { &hf_rrc_dummy_56 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CSICH_PowerOffset },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_172(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_177(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_172, T_fdd_172_sequence);
+ ett_rrc_T_fdd_177, T_fdd_177_sequence);
return offset;
}
-static const per_sequence_t T_tdd_121_sequence[] = {
+static const per_sequence_t T_tdd_126_sequence[] = {
{ &hf_rrc_pusch_SysInfoList_SFN, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PUSCH_SysInfoList_SFN },
{ &hf_rrc_pdsch_SysInfoList_SFN, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PDSCH_SysInfoList_SFN },
{ &hf_rrc_openLoopPowerControl_TDD, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_OpenLoopPowerControl_TDD },
@@ -114845,30 +122613,30 @@ static const per_sequence_t T_tdd_121_sequence[] = {
};
static int
-dissect_rrc_T_tdd_121(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_tdd_126(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_tdd_121, T_tdd_121_sequence);
+ ett_rrc_T_tdd_126, T_tdd_126_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_138_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_144_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_138_choice[] = {
- { 0, &hf_rrc_fdd_178 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_172 },
- { 1, &hf_rrc_tdd_129 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_121 },
+static const per_choice_t T_modeSpecificInfo_144_choice[] = {
+ { 0, &hf_rrc_fdd_183 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_177 },
+ { 1, &hf_rrc_tdd_134 , ASN1_NO_EXTENSIONS , dissect_rrc_T_tdd_126 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_138(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_144(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_138, T_modeSpecificInfo_138_choice,
+ ett_rrc_T_modeSpecificInfo_144, T_modeSpecificInfo_144_choice,
NULL);
return offset;
@@ -114997,14 +122765,43 @@ dissect_rrc_SysInfoType6_v770ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_nonCriticalExtensions_173_sequence[] = {
+static const per_sequence_t SysInfoType6_va40ext_IEs_sequence[] = {
+ { &hf_rrc_frequencyBandIndicator3, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RadioFrequencyBandFDD3 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_173(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_SysInfoType6_va40ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_173, T_nonCriticalExtensions_173_sequence);
+ ett_rrc_SysInfoType6_va40ext_IEs, SysInfoType6_va40ext_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_187_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_187(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_187, T_nonCriticalExtensions_187_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtensions_19_sequence[] = {
+ { &hf_rrc_sysInfoType6_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType6_va40ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_187, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_187 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtensions_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtensions_19, T_va40NonCriticalExtensions_19_sequence);
return offset;
}
@@ -115012,7 +122809,7 @@ dissect_rrc_T_nonCriticalExtensions_173(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v770NonCriticalExtensions_41_sequence[] = {
{ &hf_rrc_sysInfoType6_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType6_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_173, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_173 },
+ { &hf_rrc_va40NonCriticalExtensions_20, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtensions_19 },
{ NULL, 0, 0, NULL }
};
@@ -115087,7 +122884,7 @@ dissect_rrc_T_v4b0NonCriticalExtensions_20(tvbuff_t *tvb _U_, int offset _U_, as
static const per_sequence_t SysInfoType6_sequence[] = {
{ &hf_rrc_pich_PowerOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PICH_PowerOffset },
- { &hf_rrc_modeSpecificInfo_138, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_138 },
+ { &hf_rrc_modeSpecificInfo_144, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_144 },
{ &hf_rrc_primaryCCPCH_Info_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PrimaryCCPCH_Info },
{ &hf_rrc_prach_SystemInformationList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PRACH_SystemInformationList },
{ &hf_rrc_sCCPCH_SystemInformationList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SCCPCH_SystemInformationList },
@@ -115105,61 +122902,61 @@ dissect_rrc_SysInfoType6(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
}
-static const per_sequence_t T_fdd_173_sequence[] = {
+static const per_sequence_t T_fdd_178_sequence[] = {
{ &hf_rrc_ul_Interference , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_Interference },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_173(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_178(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_173, T_fdd_173_sequence);
+ ett_rrc_T_fdd_178, T_fdd_178_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_139_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_145_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_139_choice[] = {
- { 0, &hf_rrc_fdd_179 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_173 },
+static const per_choice_t T_modeSpecificInfo_145_choice[] = {
+ { 0, &hf_rrc_fdd_184 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_178 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_139(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_145(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_139, T_modeSpecificInfo_139_choice,
+ ett_rrc_T_modeSpecificInfo_145, T_modeSpecificInfo_145_choice,
NULL);
return offset;
}
-static const per_sequence_t T_nonCriticalExtensions_174_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_188_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_174(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_188(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_174, T_nonCriticalExtensions_174_sequence);
+ ett_rrc_T_nonCriticalExtensions_188, T_nonCriticalExtensions_188_sequence);
return offset;
}
static const per_sequence_t SysInfoType7_sequence[] = {
- { &hf_rrc_modeSpecificInfo_139, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_139 },
+ { &hf_rrc_modeSpecificInfo_145, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_145 },
{ &hf_rrc_prach_Information_SIB5_List, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DynamicPersistenceLevelList },
{ &hf_rrc_prach_Information_SIB6_List, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DynamicPersistenceLevelList },
{ &hf_rrc_expirationTimeFactor, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ExpirationTimeFactor },
- { &hf_rrc_nonCriticalExtensions_174, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_174 },
+ { &hf_rrc_nonCriticalExtensions_188, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_188 },
{ NULL, 0, 0, NULL }
};
@@ -115172,14 +122969,14 @@ dissect_rrc_SysInfoType7(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
}
-static const per_sequence_t T_nonCriticalExtensions_175_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_189_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_175(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_189(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_175, T_nonCriticalExtensions_175_sequence);
+ ett_rrc_T_nonCriticalExtensions_189, T_nonCriticalExtensions_189_sequence);
return offset;
}
@@ -115189,7 +122986,7 @@ static const per_sequence_t SysInfoType8_sequence[] = {
{ &hf_rrc_dummy1_07 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CPCH_Parameters },
{ &hf_rrc_dummy2_14 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CPCH_SetInfoList },
{ &hf_rrc_dummy3_04 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CSICH_PowerOffset },
- { &hf_rrc_nonCriticalExtensions_175, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_175 },
+ { &hf_rrc_nonCriticalExtensions_189, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_189 },
{ NULL, 0, 0, NULL }
};
@@ -115202,22 +122999,22 @@ dissect_rrc_SysInfoType8(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
}
-static const per_sequence_t T_nonCriticalExtensions_176_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_190_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_176(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_190(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_176, T_nonCriticalExtensions_176_sequence);
+ ett_rrc_T_nonCriticalExtensions_190, T_nonCriticalExtensions_190_sequence);
return offset;
}
static const per_sequence_t SysInfoType9_sequence[] = {
- { &hf_rrc_dummy_53 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CPCH_PersistenceLevelsList },
- { &hf_rrc_nonCriticalExtensions_176, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_176 },
+ { &hf_rrc_dummy_57 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CPCH_PersistenceLevelsList },
+ { &hf_rrc_nonCriticalExtensions_190, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_190 },
{ NULL, 0, 0, NULL }
};
@@ -115230,22 +123027,22 @@ dissect_rrc_SysInfoType9(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
}
-static const per_sequence_t T_nonCriticalExtensions_177_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_191_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_177(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_191(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_177, T_nonCriticalExtensions_177_sequence);
+ ett_rrc_T_nonCriticalExtensions_191, T_nonCriticalExtensions_191_sequence);
return offset;
}
static const per_sequence_t SysInfoType10_sequence[] = {
- { &hf_rrc_dummy_54 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DRAC_SysInfoList },
- { &hf_rrc_nonCriticalExtensions_177, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_177 },
+ { &hf_rrc_dummy_58 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DRAC_SysInfoList },
+ { &hf_rrc_nonCriticalExtensions_191, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_191 },
{ NULL, 0, 0, NULL }
};
@@ -115293,7 +123090,7 @@ dissect_rrc_SysInfoType11_v590ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
static const per_sequence_t SysInfoType11_v690ext_IEs_sequence[] = {
- { &hf_rrc_dummy_55 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Dummy_InterFreqRACHReportingInfo },
+ { &hf_rrc_dummy_59 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Dummy_InterFreqRACHReportingInfo },
{ NULL, 0, 0, NULL }
};
@@ -115434,14 +123231,14 @@ dissect_rrc_SysInfoType11_v860ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
}
-static const per_sequence_t T_nonCriticalExtensions_178_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_192_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_178(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_192(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_178, T_nonCriticalExtensions_178_sequence);
+ ett_rrc_T_nonCriticalExtensions_192, T_nonCriticalExtensions_192_sequence);
return offset;
}
@@ -115449,7 +123246,7 @@ dissect_rrc_T_nonCriticalExtensions_178(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860NonCriticalExtensions_28_sequence[] = {
{ &hf_rrc_sysInfoType11_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType11_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_178, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_178 },
+ { &hf_rrc_nonCriticalExtensions_192, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_192 },
{ NULL, 0, 0, NULL }
};
@@ -115598,14 +123395,14 @@ dissect_rrc_SysInfoType11bis_v860ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_nonCriticalExtensions_179_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_193_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_179(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_193(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_179, T_nonCriticalExtensions_179_sequence);
+ ett_rrc_T_nonCriticalExtensions_193, T_nonCriticalExtensions_193_sequence);
return offset;
}
@@ -115613,7 +123410,7 @@ dissect_rrc_T_nonCriticalExtensions_179(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860NonCriticalExtensions_29_sequence[] = {
{ &hf_rrc_sysInfoType11bis_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType11bis_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_179, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_179 },
+ { &hf_rrc_nonCriticalExtensions_193, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_193 },
{ NULL, 0, 0, NULL }
};
@@ -115693,7 +123490,7 @@ dissect_rrc_SysInfoType12_v590ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
static const per_sequence_t SysInfoType12_v690ext_IEs_sequence[] = {
- { &hf_rrc_dummy_55 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Dummy_InterFreqRACHReportingInfo },
+ { &hf_rrc_dummy_59 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_Dummy_InterFreqRACHReportingInfo },
{ NULL, 0, 0, NULL }
};
@@ -115734,14 +123531,14 @@ dissect_rrc_SysInfoType12_v7b0ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
}
-static const per_sequence_t T_nonCriticalExtensions_180_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_194_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_180(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_194(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_180, T_nonCriticalExtensions_180_sequence);
+ ett_rrc_T_nonCriticalExtensions_194, T_nonCriticalExtensions_194_sequence);
return offset;
}
@@ -115749,7 +123546,7 @@ dissect_rrc_T_nonCriticalExtensions_180(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v7b0NonCriticalExtensions_04_sequence[] = {
{ &hf_rrc_sysInfoType12_v7b0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType12_v7b0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_180, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_180 },
+ { &hf_rrc_nonCriticalExtensions_194, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_194 },
{ NULL, 0, 0, NULL }
};
@@ -115880,14 +123677,14 @@ dissect_rrc_SysInfoType13_v770ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
}
-static const per_sequence_t T_nonCriticalExtensions_181_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_195_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_181(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_195(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_181, T_nonCriticalExtensions_181_sequence);
+ ett_rrc_T_nonCriticalExtensions_195, T_nonCriticalExtensions_195_sequence);
return offset;
}
@@ -115895,7 +123692,7 @@ dissect_rrc_T_nonCriticalExtensions_181(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v770NonCriticalExtensions_43_sequence[] = {
{ &hf_rrc_sysInfoType13_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType13_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_181, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_181 },
+ { &hf_rrc_nonCriticalExtensions_195, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_195 },
{ NULL, 0, 0, NULL }
};
@@ -115964,14 +123761,14 @@ dissect_rrc_ANSI_41_RAND_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
}
-static const per_sequence_t T_nonCriticalExtensions_182_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_196_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_182(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_196(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_182, T_nonCriticalExtensions_182_sequence);
+ ett_rrc_T_nonCriticalExtensions_196, T_nonCriticalExtensions_196_sequence);
return offset;
}
@@ -115979,7 +123776,7 @@ dissect_rrc_T_nonCriticalExtensions_182(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t SysInfoType13_1_sequence[] = {
{ &hf_rrc_ansi_41_RAND_Information, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_ANSI_41_RAND_Information },
- { &hf_rrc_nonCriticalExtensions_182, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_182 },
+ { &hf_rrc_nonCriticalExtensions_196, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_196 },
{ NULL, 0, 0, NULL }
};
@@ -116001,14 +123798,14 @@ dissect_rrc_ANSI_41_UserZoneID_Information(tvbuff_t *tvb _U_, int offset _U_, as
}
-static const per_sequence_t T_nonCriticalExtensions_183_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_197_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_183(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_197(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_183, T_nonCriticalExtensions_183_sequence);
+ ett_rrc_T_nonCriticalExtensions_197, T_nonCriticalExtensions_197_sequence);
return offset;
}
@@ -116016,7 +123813,7 @@ dissect_rrc_T_nonCriticalExtensions_183(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t SysInfoType13_2_sequence[] = {
{ &hf_rrc_ansi_41_UserZoneID_Information, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_ANSI_41_UserZoneID_Information },
- { &hf_rrc_nonCriticalExtensions_183, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_183 },
+ { &hf_rrc_nonCriticalExtensions_197, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_197 },
{ NULL, 0, 0, NULL }
};
@@ -116038,14 +123835,14 @@ dissect_rrc_ANSI_41_PrivateNeighbourListInfo(tvbuff_t *tvb _U_, int offset _U_,
}
-static const per_sequence_t T_nonCriticalExtensions_184_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_198_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_184(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_198(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_184, T_nonCriticalExtensions_184_sequence);
+ ett_rrc_T_nonCriticalExtensions_198, T_nonCriticalExtensions_198_sequence);
return offset;
}
@@ -116053,7 +123850,7 @@ dissect_rrc_T_nonCriticalExtensions_184(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t SysInfoType13_3_sequence[] = {
{ &hf_rrc_ansi_41_PrivateNeighbourListInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_ANSI_41_PrivateNeighbourListInfo },
- { &hf_rrc_nonCriticalExtensions_184, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_184 },
+ { &hf_rrc_nonCriticalExtensions_198, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_198 },
{ NULL, 0, 0, NULL }
};
@@ -116075,14 +123872,14 @@ dissect_rrc_ANSI_41_GlobalServiceRedirectInfo(tvbuff_t *tvb _U_, int offset _U_,
}
-static const per_sequence_t T_nonCriticalExtensions_185_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_199_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_185(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_199(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_185, T_nonCriticalExtensions_185_sequence);
+ ett_rrc_T_nonCriticalExtensions_199, T_nonCriticalExtensions_199_sequence);
return offset;
}
@@ -116090,7 +123887,7 @@ dissect_rrc_T_nonCriticalExtensions_185(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t SysInfoType13_4_sequence[] = {
{ &hf_rrc_ansi_41_GlobalServiceRedirectInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_ANSI_41_GlobalServiceRedirectInfo },
- { &hf_rrc_nonCriticalExtensions_185, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_185 },
+ { &hf_rrc_nonCriticalExtensions_199, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_199 },
{ NULL, 0, 0, NULL }
};
@@ -116103,14 +123900,14 @@ dissect_rrc_SysInfoType13_4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_nonCriticalExtensions_186_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_200_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_186(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_200(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_186, T_nonCriticalExtensions_186_sequence);
+ ett_rrc_T_nonCriticalExtensions_200, T_nonCriticalExtensions_200_sequence);
return offset;
}
@@ -116119,7 +123916,7 @@ dissect_rrc_T_nonCriticalExtensions_186(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t SysInfoType14_sequence[] = {
{ &hf_rrc_individualTS_InterferenceList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_IndividualTS_InterferenceList },
{ &hf_rrc_expirationTimeFactor, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ExpirationTimeFactor },
- { &hf_rrc_nonCriticalExtensions_186, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_186 },
+ { &hf_rrc_nonCriticalExtensions_200, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_200 },
{ NULL, 0, 0, NULL }
};
@@ -116160,14 +123957,43 @@ dissect_rrc_SysInfoType15_v770ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
}
-static const per_sequence_t T_nonCriticalExtensions_187_sequence[] = {
+static const per_sequence_t SysInfoType15_va40ext_IEs_sequence[] = {
+ { &hf_rrc_ue_Positioning_GPS_ReferenceTime_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_GPS_ReferenceTime_va40ext },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_187(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_SysInfoType15_va40ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_187, T_nonCriticalExtensions_187_sequence);
+ ett_rrc_SysInfoType15_va40ext_IEs, SysInfoType15_va40ext_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_201_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_201(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_201, T_nonCriticalExtensions_201_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtensions_20_sequence[] = {
+ { &hf_rrc_sysInfoType15_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType15_va40ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_201, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_201 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtensions_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtensions_20, T_va40NonCriticalExtensions_20_sequence);
return offset;
}
@@ -116175,7 +124001,7 @@ dissect_rrc_T_nonCriticalExtensions_187(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v770NonCriticalExtensions_44_sequence[] = {
{ &hf_rrc_sysInfoType15_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType15_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_187, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_187 },
+ { &hf_rrc_va40NonCriticalExtensions_21, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtensions_20 },
{ NULL, 0, 0, NULL }
};
@@ -116236,14 +124062,43 @@ dissect_rrc_SysInfoType15bis_v860ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1
}
-static const per_sequence_t T_nonCriticalExtensions_188_sequence[] = {
+static const per_sequence_t SysInfoType15bis_va40ext_IEs_sequence[] = {
+ { &hf_rrc_ue_positioning_GANSS_ReferenceTime_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_GANSS_ReferenceTime_va40ext },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_188(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_SysInfoType15bis_va40ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_188, T_nonCriticalExtensions_188_sequence);
+ ett_rrc_SysInfoType15bis_va40ext_IEs, SysInfoType15bis_va40ext_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_202_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_202(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_202, T_nonCriticalExtensions_202_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtensions_21_sequence[] = {
+ { &hf_rrc_sysInfoType15bis_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType15bis_va40ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_202, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_202 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtensions_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtensions_21, T_va40NonCriticalExtensions_21_sequence);
return offset;
}
@@ -116251,7 +124106,7 @@ dissect_rrc_T_nonCriticalExtensions_188(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860NonCriticalExtensions_30_sequence[] = {
{ &hf_rrc_sysInfoType15bis_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType15bis_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_188, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_188 },
+ { &hf_rrc_va40NonCriticalExtensions_22, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtensions_21 },
{ NULL, 0, 0, NULL }
};
@@ -116295,14 +124150,14 @@ dissect_rrc_SysInfoType15_1_v920ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_
}
-static const per_sequence_t T_nonCriticalExtensions_189_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_203_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_189(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_203(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_189, T_nonCriticalExtensions_189_sequence);
+ ett_rrc_T_nonCriticalExtensions_203, T_nonCriticalExtensions_203_sequence);
return offset;
}
@@ -116310,7 +124165,7 @@ dissect_rrc_T_nonCriticalExtensions_189(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v920NonCriticalExtensions_04_sequence[] = {
{ &hf_rrc_sysInfoType15_1_v920ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType15_1_v920ext_IEs },
- { &hf_rrc_nonCriticalExtensions_189, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_189 },
+ { &hf_rrc_nonCriticalExtensions_203, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_203 },
{ NULL, 0, 0, NULL }
};
@@ -116352,14 +124207,14 @@ dissect_rrc_SysInfoType15_1bis_v920ext_IEs(tvbuff_t *tvb _U_, int offset _U_, as
}
-static const per_sequence_t T_nonCriticalExtensions_190_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_204_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_190(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_204(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_190, T_nonCriticalExtensions_190_sequence);
+ ett_rrc_T_nonCriticalExtensions_204, T_nonCriticalExtensions_204_sequence);
return offset;
}
@@ -116367,7 +124222,7 @@ dissect_rrc_T_nonCriticalExtensions_190(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v920NonCriticalExtensions_05_sequence[] = {
{ &hf_rrc_sysInfoType15_1bis_v920ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType15_1bis_v920ext_IEs },
- { &hf_rrc_nonCriticalExtensions_190, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_190 },
+ { &hf_rrc_nonCriticalExtensions_204, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_204 },
{ NULL, 0, 0, NULL }
};
@@ -116395,14 +124250,14 @@ dissect_rrc_SysInfoType15_1bis(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
}
-static const per_sequence_t T_nonCriticalExtensions_191_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_205_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_191(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_205(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_191, T_nonCriticalExtensions_191_sequence);
+ ett_rrc_T_nonCriticalExtensions_205, T_nonCriticalExtensions_205_sequence);
return offset;
}
@@ -116412,7 +124267,7 @@ static const per_sequence_t SysInfoType15_2_sequence[] = {
{ &hf_rrc_transmissionTOW , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_GPS_TOW_1sec },
{ &hf_rrc_satID , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SatID },
{ &hf_rrc_ephemerisParameter, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_EphemerisParameter },
- { &hf_rrc_nonCriticalExtensions_191, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_191 },
+ { &hf_rrc_nonCriticalExtensions_205, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_205 },
{ NULL, 0, 0, NULL }
};
@@ -116425,14 +124280,14 @@ dissect_rrc_SysInfoType15_2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_nonCriticalExtensions_192_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_206_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_192(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_206(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_192, T_nonCriticalExtensions_192_sequence);
+ ett_rrc_T_nonCriticalExtensions_206, T_nonCriticalExtensions_206_sequence);
return offset;
}
@@ -116440,7 +124295,7 @@ dissect_rrc_T_nonCriticalExtensions_192(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t SysInfoType15_2bis_sequence[] = {
{ &hf_rrc_ue_positioning_GANSS_navigationModel, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_GANSS_NavigationModel },
- { &hf_rrc_nonCriticalExtensions_192, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_192 },
+ { &hf_rrc_nonCriticalExtensions_206, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_206 },
{ NULL, 0, 0, NULL }
};
@@ -116453,14 +124308,14 @@ dissect_rrc_SysInfoType15_2bis(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
}
-static const per_sequence_t T_nonCriticalExtensions_193_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_207_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_193(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_207(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_193, T_nonCriticalExtensions_193_sequence);
+ ett_rrc_T_nonCriticalExtensions_207, T_nonCriticalExtensions_207_sequence);
return offset;
}
@@ -116468,7 +124323,7 @@ dissect_rrc_T_nonCriticalExtensions_193(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t SysInfoType15_2ter_sequence[] = {
{ &hf_rrc_ue_positioning_GANSS_AddNavigationModels, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_GANSS_AddNavigationModels },
- { &hf_rrc_nonCriticalExtensions_193, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_193 },
+ { &hf_rrc_nonCriticalExtensions_207, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_207 },
{ NULL, 0, 0, NULL }
};
@@ -116491,14 +124346,43 @@ dissect_rrc_BIT_STRING_SIZE_1_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
}
-static const per_sequence_t T_nonCriticalExtensions_194_sequence[] = {
+static const per_sequence_t SysInfoType15_3_va40ext_IEs_sequence[] = {
+ { &hf_rrc_ue_positioning_GPS_Almanac_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_Almanac_va40ext },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_194(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_SysInfoType15_3_va40ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_194, T_nonCriticalExtensions_194_sequence);
+ ett_rrc_SysInfoType15_3_va40ext_IEs, SysInfoType15_3_va40ext_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_208_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_208(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_208, T_nonCriticalExtensions_208_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtensions_22_sequence[] = {
+ { &hf_rrc_sysInfoType15_3_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType15_3_va40ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_208, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_208 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtensions_22(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtensions_22, T_va40NonCriticalExtensions_22_sequence);
return offset;
}
@@ -116511,7 +124395,7 @@ static const per_sequence_t SysInfoType15_3_sequence[] = {
{ &hf_rrc_ue_positioning_GPS_UTC_Model, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GPS_UTC_Model },
{ &hf_rrc_satMask , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING_SIZE_1_32 },
{ &hf_rrc_lsbTOW , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING_SIZE_8 },
- { &hf_rrc_nonCriticalExtensions_194, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_194 },
+ { &hf_rrc_va40NonCriticalExtensions_23, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtensions_22 },
{ NULL, 0, 0, NULL }
};
@@ -116540,14 +124424,44 @@ dissect_rrc_SysInfoType15_3bis_v860ext_IEs(tvbuff_t *tvb _U_, int offset _U_, as
}
-static const per_sequence_t T_nonCriticalExtensions_195_sequence[] = {
+static const per_sequence_t SysInfoType15_3bis_va40ext_IEs_sequence[] = {
+ { &hf_rrc_ue_Positioning_GANSS_Almanac_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GANSS_Almanac_va40ext },
+ { &hf_rrc_ue_positioning_GANSS_TimeModels_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GANSS_TimeModels_va40ext },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_195(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_SysInfoType15_3bis_va40ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_195, T_nonCriticalExtensions_195_sequence);
+ ett_rrc_SysInfoType15_3bis_va40ext_IEs, SysInfoType15_3bis_va40ext_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_209_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_209(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_209, T_nonCriticalExtensions_209_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtensions_23_sequence[] = {
+ { &hf_rrc_sysInfoType15_3bis_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType15_3bis_va40ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_209, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_209 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtensions_23(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtensions_23, T_va40NonCriticalExtensions_23_sequence);
return offset;
}
@@ -116555,7 +124469,7 @@ dissect_rrc_T_nonCriticalExtensions_195(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860NonCriticalExtensions_31_sequence[] = {
{ &hf_rrc_sysInfoType15_3bis_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType15_3bis_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_195, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_195 },
+ { &hf_rrc_va40NonCriticalExtensions_24, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtensions_23 },
{ NULL, 0, 0, NULL }
};
@@ -116613,14 +124527,14 @@ dissect_rrc_SysInfoType15_4_v4b0ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
-static const per_sequence_t T_nonCriticalExtensions_196_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_210_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_196(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_210(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_196, T_nonCriticalExtensions_196_sequence);
+ ett_rrc_T_nonCriticalExtensions_210, T_nonCriticalExtensions_210_sequence);
return offset;
}
@@ -116628,7 +124542,7 @@ dissect_rrc_T_nonCriticalExtensions_196(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v4b0NonCriticalExtensions_25_sequence[] = {
{ &hf_rrc_sysInfoType15_4_v4b0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType15_4_v4b0ext },
- { &hf_rrc_nonCriticalExtensions_196, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_196 },
+ { &hf_rrc_nonCriticalExtensions_210, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_210 },
{ NULL, 0, 0, NULL }
};
@@ -116700,14 +124614,14 @@ dissect_rrc_SysInfoType15_5_v770ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_
}
-static const per_sequence_t T_nonCriticalExtensions_197_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_211_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_197(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_211(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_197, T_nonCriticalExtensions_197_sequence);
+ ett_rrc_T_nonCriticalExtensions_211, T_nonCriticalExtensions_211_sequence);
return offset;
}
@@ -116715,7 +124629,7 @@ dissect_rrc_T_nonCriticalExtensions_197(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v770NonCriticalExtensions_45_sequence[] = {
{ &hf_rrc_sysInfoType15_5_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType15_5_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_197, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_197 },
+ { &hf_rrc_nonCriticalExtensions_211, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_211 },
{ NULL, 0, 0, NULL }
};
@@ -116758,14 +124672,43 @@ dissect_rrc_SysInfoType15_5(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_nonCriticalExtensions_198_sequence[] = {
+static const per_sequence_t SysInfoType15_6_va40ext_IEs_sequence[] = {
+ { &hf_rrc_ue_positioning_GANSS_ReferenceMeasurementInformation_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_GANSS_ReferenceMeasurementInfo_va40ext },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_198(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_SysInfoType15_6_va40ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_198, T_nonCriticalExtensions_198_sequence);
+ ett_rrc_SysInfoType15_6_va40ext_IEs, SysInfoType15_6_va40ext_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_212_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_212(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_212, T_nonCriticalExtensions_212_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_va40NonCriticalExtensions_24_sequence[] = {
+ { &hf_rrc_sysInfoType15_6_va40ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType15_6_va40ext_IEs },
+ { &hf_rrc_nonCriticalExtensions_212, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_212 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_va40NonCriticalExtensions_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_va40NonCriticalExtensions_24, T_va40NonCriticalExtensions_24_sequence);
return offset;
}
@@ -116774,7 +124717,7 @@ dissect_rrc_T_nonCriticalExtensions_198(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t SysInfoType15_6_sequence[] = {
{ &hf_rrc_ue_positioning_GANSS_TOD, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_0_86399 },
{ &hf_rrc_ue_positioning_GANSS_ReferenceMeasurementInformation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_GANSS_ReferenceMeasurementInfo },
- { &hf_rrc_nonCriticalExtensions_198, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_198 },
+ { &hf_rrc_va40NonCriticalExtensions_25, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_va40NonCriticalExtensions_24 },
{ NULL, 0, 0, NULL }
};
@@ -116787,14 +124730,14 @@ dissect_rrc_SysInfoType15_6(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_nonCriticalExtensions_199_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_213_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_199(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_213(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_199, T_nonCriticalExtensions_199_sequence);
+ ett_rrc_T_nonCriticalExtensions_213, T_nonCriticalExtensions_213_sequence);
return offset;
}
@@ -116802,7 +124745,7 @@ dissect_rrc_T_nonCriticalExtensions_199(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t SysInfoType15_7_sequence[] = {
{ &hf_rrc_ue_positioning_GANSS_DataBitAssistance, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_GANSS_Data_Bit_Assistance },
- { &hf_rrc_nonCriticalExtensions_199, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_199 },
+ { &hf_rrc_nonCriticalExtensions_213, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_213 },
{ NULL, 0, 0, NULL }
};
@@ -116815,14 +124758,14 @@ dissect_rrc_SysInfoType15_7(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
-static const per_sequence_t T_nonCriticalExtensions_200_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_214_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_200(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_214(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_200, T_nonCriticalExtensions_200_sequence);
+ ett_rrc_T_nonCriticalExtensions_214, T_nonCriticalExtensions_214_sequence);
return offset;
}
@@ -116831,7 +124774,7 @@ dissect_rrc_T_nonCriticalExtensions_200(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t SysInfoType15_8_sequence[] = {
{ &hf_rrc_ue_positioning_GANSS_DataCipheringInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_CipherParameters },
{ &hf_rrc_ue_positioning_GANSS_realTimeIntegrity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_GANSS_RealTimeIntegrity },
- { &hf_rrc_nonCriticalExtensions_200, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_200 },
+ { &hf_rrc_nonCriticalExtensions_214, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_214 },
{ NULL, 0, 0, NULL }
};
@@ -116872,14 +124815,14 @@ dissect_rrc_SysInfoType16_v920ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
}
-static const per_sequence_t T_nonCriticalExtensions_201_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_215_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_201(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_215(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_201, T_nonCriticalExtensions_201_sequence);
+ ett_rrc_T_nonCriticalExtensions_215, T_nonCriticalExtensions_215_sequence);
return offset;
}
@@ -116887,7 +124830,7 @@ dissect_rrc_T_nonCriticalExtensions_201(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v920NonCriticalExtensions_06_sequence[] = {
{ &hf_rrc_sysInfoType16_v920ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType16_v920ext_IEs },
- { &hf_rrc_nonCriticalExtensions_201, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_201 },
+ { &hf_rrc_nonCriticalExtensions_215, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_215 },
{ NULL, 0, 0, NULL }
};
@@ -117017,14 +124960,14 @@ dissect_rrc_SysInfoType17_v770ext_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
}
-static const per_sequence_t T_nonCriticalExtensions_202_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_216_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_202(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_216(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_202, T_nonCriticalExtensions_202_sequence);
+ ett_rrc_T_nonCriticalExtensions_216, T_nonCriticalExtensions_216_sequence);
return offset;
}
@@ -117032,7 +124975,7 @@ dissect_rrc_T_nonCriticalExtensions_202(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v770NonCriticalExtensions_47_sequence[] = {
{ &hf_rrc_sysInfoType17_v770ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType17_v770ext_IEs },
- { &hf_rrc_nonCriticalExtensions_202, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_202 },
+ { &hf_rrc_nonCriticalExtensions_216, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_216 },
{ NULL, 0, 0, NULL }
};
@@ -117121,14 +125064,14 @@ dissect_rrc_SysInfoType18_v860ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_nonCriticalExtensions_203_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_217_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_203(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_217(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_203, T_nonCriticalExtensions_203_sequence);
+ ett_rrc_T_nonCriticalExtensions_217, T_nonCriticalExtensions_217_sequence);
return offset;
}
@@ -117136,7 +125079,7 @@ dissect_rrc_T_nonCriticalExtensions_203(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860NonCriticalExtensions_32_sequence[] = {
{ &hf_rrc_sysInfoType18_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType18_v860ext },
- { &hf_rrc_nonCriticalExtensions_203, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_203 },
+ { &hf_rrc_nonCriticalExtensions_217, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_217 },
{ NULL, 0, 0, NULL }
};
@@ -117195,14 +125138,14 @@ dissect_rrc_SysInfoType19_v920ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_nonCriticalExtensions_204_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_218_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_204(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_218(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_204, T_nonCriticalExtensions_204_sequence);
+ ett_rrc_T_nonCriticalExtensions_218, T_nonCriticalExtensions_218_sequence);
return offset;
}
@@ -117210,7 +125153,7 @@ dissect_rrc_T_nonCriticalExtensions_204(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v920NonCriticalExtensions_07_sequence[] = {
{ &hf_rrc_sysInfoType19_v920ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoType19_v920ext },
- { &hf_rrc_nonCriticalExtensions_204, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_204 },
+ { &hf_rrc_nonCriticalExtensions_218, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_218 },
{ NULL, 0, 0, NULL }
};
@@ -117240,14 +125183,14 @@ dissect_rrc_SysInfoType19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
}
-static const per_sequence_t T_nonCriticalExtensions_205_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_219_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_205(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_219(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_205, T_nonCriticalExtensions_205_sequence);
+ ett_rrc_T_nonCriticalExtensions_219, T_nonCriticalExtensions_219_sequence);
return offset;
}
@@ -117255,7 +125198,7 @@ dissect_rrc_T_nonCriticalExtensions_205(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t SysInfoType20_sequence[] = {
{ &hf_rrc_hNBName , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_HNBName },
- { &hf_rrc_nonCriticalExtensions_205, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_205 },
+ { &hf_rrc_nonCriticalExtensions_219, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_219 },
{ NULL, 0, 0, NULL }
};
@@ -117297,14 +125240,14 @@ dissect_rrc_SysInfoTypeSB1_v860ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_nonCriticalExtensions_206_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_220_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_206(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_220(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_206, T_nonCriticalExtensions_206_sequence);
+ ett_rrc_T_nonCriticalExtensions_220, T_nonCriticalExtensions_220_sequence);
return offset;
}
@@ -117312,7 +125255,7 @@ dissect_rrc_T_nonCriticalExtensions_206(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860NonCriticalExtensions_33_sequence[] = {
{ &hf_rrc_sysInfoTypeSB1_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoTypeSB1_v860ext },
- { &hf_rrc_nonCriticalExtensions_206, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_206 },
+ { &hf_rrc_nonCriticalExtensions_220, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_220 },
{ NULL, 0, 0, NULL }
};
@@ -117384,14 +125327,14 @@ dissect_rrc_SysInfoTypeSB2_v860ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_nonCriticalExtensions_207_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_221_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_207(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_221(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_207, T_nonCriticalExtensions_207_sequence);
+ ett_rrc_T_nonCriticalExtensions_221, T_nonCriticalExtensions_221_sequence);
return offset;
}
@@ -117399,7 +125342,7 @@ dissect_rrc_T_nonCriticalExtensions_207(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860NonCriticalExtensions_34_sequence[] = {
{ &hf_rrc_sysInfoTypeSB2_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SysInfoTypeSB2_v860ext },
- { &hf_rrc_nonCriticalExtensions_207, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_207 },
+ { &hf_rrc_nonCriticalExtensions_221, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_221 },
{ NULL, 0, 0, NULL }
};
@@ -117462,7 +125405,7 @@ dissect_rrc_UE_HistoryInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static int
dissect_rrc_T_interRATHandoverInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 503 "../../asn1/rrc/rrc.cnf"
+#line 556 "../../asn1/rrc/rrc.cnf"
tvbuff_t *parameter_tvb=NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -117549,14 +125492,14 @@ dissect_rrc_InterRATHandoverInfoWithInterRATCapabilities_v920ext_IEs(tvbuff_t *t
}
-static const per_sequence_t T_nonCriticalExtensions_208_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_222_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_208(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_222(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_208, T_nonCriticalExtensions_208_sequence);
+ ett_rrc_T_nonCriticalExtensions_222, T_nonCriticalExtensions_222_sequence);
return offset;
}
@@ -117564,7 +125507,7 @@ dissect_rrc_T_nonCriticalExtensions_208(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v920NonCriticalExtensions_08_sequence[] = {
{ &hf_rrc_interRATHandoverInfoWithInterRATCapabilities_v920ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_InterRATHandoverInfoWithInterRATCapabilities_v920ext_IEs },
- { &hf_rrc_nonCriticalExtensions_208, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_208 },
+ { &hf_rrc_nonCriticalExtensions_222, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_222 },
{ NULL, 0, 0, NULL }
};
@@ -117637,14 +125580,14 @@ dissect_rrc_T_r3_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_111_sequence[] = {
+static const per_sequence_t T_criticalExtensions_126_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_111(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_126(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_111, T_criticalExtensions_111_sequence);
+ ett_rrc_T_criticalExtensions_126, T_criticalExtensions_126_sequence);
return offset;
}
@@ -117658,7 +125601,7 @@ static const value_string rrc_InterRATHandoverInfoWithInterRATCapabilities_r3_va
static const per_choice_t InterRATHandoverInfoWithInterRATCapabilities_r3_choice[] = {
{ 0, &hf_rrc_r3_31 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r3_31 },
- { 1, &hf_rrc_criticalExtensions_111, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_111 },
+ { 1, &hf_rrc_criticalExtensions_126, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_126 },
{ 0, NULL, 0, NULL }
};
@@ -117897,7 +125840,7 @@ static const value_string rrc_MeasurementCommandWithType_vals[] = {
static const per_choice_t MeasurementCommandWithType_choice[] = {
{ 0, &hf_rrc_setup , ASN1_NO_EXTENSIONS , dissect_rrc_MeasurementType },
- { 1, &hf_rrc_modify_07 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_modify_08 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 2, &hf_rrc_release_01 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -117943,37 +125886,37 @@ dissect_rrc_OngoingMeasRepList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
}
-static const per_sequence_t T_fdd_177_sequence[] = {
+static const per_sequence_t T_fdd_182_sequence[] = {
{ &hf_rrc_dummy_04 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CPCH_SetID },
{ &hf_rrc_dummy2_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DRAC_StaticInformationList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_177(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_182(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_177, T_fdd_177_sequence);
+ ett_rrc_T_fdd_182, T_fdd_182_sequence);
return offset;
}
-static const value_string rrc_T_modeSpecificInfo_140_vals[] = {
+static const value_string rrc_T_modeSpecificInfo_146_vals[] = {
{ 0, "fdd" },
{ 1, "tdd" },
{ 0, NULL }
};
-static const per_choice_t T_modeSpecificInfo_140_choice[] = {
- { 0, &hf_rrc_fdd_183 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_177 },
+static const per_choice_t T_modeSpecificInfo_146_choice[] = {
+ { 0, &hf_rrc_fdd_188 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_182 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_modeSpecificInfo_140(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_modeSpecificInfo_146(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_modeSpecificInfo_140, T_modeSpecificInfo_140_choice,
+ ett_rrc_T_modeSpecificInfo_146, T_modeSpecificInfo_146_choice,
NULL);
return offset;
@@ -117996,7 +125939,7 @@ static const per_sequence_t SRNC_RelocationInfo_r3_IEs_sequence[] = {
{ &hf_rrc_ue_Positioning_LastKnownPos, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_LastKnownPos },
{ &hf_rrc_ue_RATSpecificCapability, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRAT_UE_RadioAccessCapabilityList },
{ &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
- { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NAS_SystemInformationGSM_MAP },
+ { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NAS_SystemInformationGSM_MAP },
{ &hf_rrc_cn_DomainInformationList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_DomainInformationList },
{ &hf_rrc_ongoingMeasRepList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_OngoingMeasRepList },
{ &hf_rrc_predefinedConfigStatusList_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PredefinedConfigStatusList },
@@ -118004,7 +125947,7 @@ static const per_sequence_t SRNC_RelocationInfo_r3_IEs_sequence[] = {
{ &hf_rrc_rab_InformationList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationSetupList },
{ &hf_rrc_ul_CommonTransChInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo },
{ &hf_rrc_ul_TransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList },
- { &hf_rrc_modeSpecificInfo_140, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_140 },
+ { &hf_rrc_modeSpecificInfo_146, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_modeSpecificInfo_146 },
{ &hf_rrc_dl_CommonTransChInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonTransChInfo },
{ &hf_rrc_dl_TransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_AddReconfTransChInfoList },
{ &hf_rrc_measurementReport, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementReport },
@@ -118528,14 +126471,14 @@ dissect_rrc_SRNC_RelocationInfo_v7f0ext_IEs(tvbuff_t *tvb _U_, int offset _U_, a
}
-static const per_sequence_t T_nonCriticalExtensions_210_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_224_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_210(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_224(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_210, T_nonCriticalExtensions_210_sequence);
+ ett_rrc_T_nonCriticalExtensions_224, T_nonCriticalExtensions_224_sequence);
return offset;
}
@@ -118543,7 +126486,7 @@ dissect_rrc_T_nonCriticalExtensions_210(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v7f0NonCriticalExtensions_17_sequence[] = {
{ &hf_rrc_sRNC_RelocationInfo_v7f0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SRNC_RelocationInfo_v7f0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_210, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_210 },
+ { &hf_rrc_nonCriticalExtensions_224, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_224 },
{ NULL, 0, 0, NULL }
};
@@ -118948,16 +126891,16 @@ dissect_rrc_PDCP_Capability_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
}
-static const per_sequence_t T_fddRF_Capability_03_sequence[] = {
+static const per_sequence_t T_fddRF_Capability_04_sequence[] = {
{ &hf_rrc_ue_PowerClass_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_PowerClassExt },
{ &hf_rrc_txRxFrequencySeparation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TxRxFrequencySeparation },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fddRF_Capability_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fddRF_Capability_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fddRF_Capability_03, T_fddRF_Capability_03_sequence);
+ ett_rrc_T_fddRF_Capability_04, T_fddRF_Capability_04_sequence);
return offset;
}
@@ -118996,7 +126939,7 @@ dissect_rrc_T_tdd128_RF_Capability_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
static const per_sequence_t RF_Capability_r4_sequence[] = {
- { &hf_rrc_fddRF_Capability_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_fddRF_Capability_03 },
+ { &hf_rrc_fddRF_Capability_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_fddRF_Capability_04 },
{ &hf_rrc_tdd384_RF_Capability_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_tdd384_RF_Capability_01 },
{ &hf_rrc_tdd128_RF_Capability_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_tdd128_RF_Capability_01 },
{ NULL, 0, 0, NULL }
@@ -119015,7 +126958,7 @@ static const per_sequence_t DL_PhysChCapabilityFDD_r4_sequence[] = {
{ &hf_rrc_maxNoDPCH_PDSCH_Codes, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_1_8 },
{ &hf_rrc_maxNoPhysChBitsReceived, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MaxNoPhysChBitsReceived },
{ &hf_rrc_supportForSF_512, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
- { &hf_rrc_dummy_23 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
+ { &hf_rrc_dummy_27 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_dummy2_04 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SimultaneousSCCPCH_DPCH_Reception },
{ &hf_rrc_dummy3_05 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SupportOfDedicatedPilotsForChEstimation },
{ NULL, 0, 0, NULL }
@@ -119030,16 +126973,16 @@ dissect_rrc_DL_PhysChCapabilityFDD_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
}
-static const per_sequence_t T_fddPhysChCapability_04_sequence[] = {
- { &hf_rrc_downlinkPhysChCapability_10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_PhysChCapabilityFDD_r4 },
+static const per_sequence_t T_fddPhysChCapability_05_sequence[] = {
+ { &hf_rrc_downlinkPhysChCapability_12, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_PhysChCapabilityFDD_r4 },
{ &hf_rrc_uplinkPhysChCapability, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_PhysChCapabilityFDD },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fddPhysChCapability_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fddPhysChCapability_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fddPhysChCapability_04, T_fddPhysChCapability_04_sequence);
+ ett_rrc_T_fddPhysChCapability_05, T_fddPhysChCapability_05_sequence);
return offset;
}
@@ -119061,8 +127004,8 @@ dissect_rrc_T_tdd384_PhysChCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
static const per_sequence_t T_tdd128_PhysChCapability_01_sequence[] = {
- { &hf_rrc_downlinkPhysChCapability_09, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_PhysChCapabilityTDD_LCR_r4 },
- { &hf_rrc_uplinkPhysChCapability_08, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_PhysChCapabilityTDD_LCR_r4 },
+ { &hf_rrc_downlinkPhysChCapability_11, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_PhysChCapabilityTDD_LCR_r4 },
+ { &hf_rrc_uplinkPhysChCapability_09, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_PhysChCapabilityTDD_LCR_r4 },
{ NULL, 0, 0, NULL }
};
@@ -119076,7 +127019,7 @@ dissect_rrc_T_tdd128_PhysChCapability_01(tvbuff_t *tvb _U_, int offset _U_, asn1
static const per_sequence_t PhysicalChannelCapability_r4_sequence[] = {
- { &hf_rrc_fddPhysChCapability_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_fddPhysChCapability_04 },
+ { &hf_rrc_fddPhysChCapability_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_fddPhysChCapability_05 },
{ &hf_rrc_tdd384_PhysChCapability, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_tdd384_PhysChCapability },
{ &hf_rrc_tdd128_PhysChCapability_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_tdd128_PhysChCapability_01 },
{ NULL, 0, 0, NULL }
@@ -119161,7 +127104,7 @@ dissect_rrc_CompressedModeMeasCapability_r4(tvbuff_t *tvb _U_, int offset _U_, a
static const per_sequence_t MeasurementCapability_r4_sequence[] = {
- { &hf_rrc_downlinkCompressedMode_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CompressedModeMeasCapability_r4 },
+ { &hf_rrc_downlinkCompressedMode_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CompressedModeMeasCapability_r4 },
{ &hf_rrc_uplinkCompressedMode_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CompressedModeMeasCapability_r4 },
{ NULL, 0, 0, NULL }
};
@@ -119178,14 +127121,14 @@ dissect_rrc_MeasurementCapability_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
static const per_sequence_t UE_RadioAccessCapability_r4_sequence[] = {
{ &hf_rrc_accessStratumReleaseIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_AccessStratumReleaseIndicator },
{ &hf_rrc_pdcp_Capability_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PDCP_Capability_r4 },
- { &hf_rrc_rlc_Capability_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RLC_Capability },
+ { &hf_rrc_rlc_Capability_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RLC_Capability },
{ &hf_rrc_transportChannelCapability, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TransportChannelCapability },
{ &hf_rrc_rf_Capability_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RF_Capability_r4 },
- { &hf_rrc_physicalChannelCapability_06, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PhysicalChannelCapability_r4 },
+ { &hf_rrc_physicalChannelCapability_07, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PhysicalChannelCapability_r4 },
{ &hf_rrc_ue_MultiModeRAT_Capability, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_MultiModeRAT_Capability },
{ &hf_rrc_securityCapability, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SecurityCapability },
{ &hf_rrc_ue_positioning_Capability_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_Capability_r4 },
- { &hf_rrc_measurementCapability_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementCapability_r4 },
+ { &hf_rrc_measurementCapability_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementCapability_r4 },
{ NULL, 0, 0, NULL }
};
@@ -119207,7 +127150,7 @@ static const value_string rrc_MeasurementCommandWithType_r4_vals[] = {
static const per_choice_t MeasurementCommandWithType_r4_choice[] = {
{ 0, &hf_rrc_setup_01 , ASN1_NO_EXTENSIONS , dissect_rrc_MeasurementType_r4 },
- { 1, &hf_rrc_modify_07 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_modify_08 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 2, &hf_rrc_release_01 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -119253,16 +127196,16 @@ dissect_rrc_OngoingMeasRepList_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_fdd_178_sequence[] = {
+static const per_sequence_t T_fdd_183_sequence[] = {
{ &hf_rrc_dummy1 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CPCH_SetID },
{ &hf_rrc_dummy2_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DRAC_StaticInformationList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_178(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_183(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_178, T_fdd_178_sequence);
+ ett_rrc_T_fdd_183, T_fdd_183_sequence);
return offset;
}
@@ -119275,7 +127218,7 @@ static const value_string rrc_T_dummy_17_vals[] = {
};
static const per_choice_t T_dummy_17_choice[] = {
- { 0, &hf_rrc_fdd_184 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_178 },
+ { 0, &hf_rrc_fdd_189 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_183 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -119311,7 +127254,7 @@ static const per_sequence_t SRNC_RelocationInfo_r4_IEs_sequence[] = {
{ &hf_rrc_uESpecificBehaviourInformation1interRAT, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UESpecificBehaviourInformation1interRAT },
{ &hf_rrc_ue_RATSpecificCapability, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRAT_UE_RadioAccessCapabilityList },
{ &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
- { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NAS_SystemInformationGSM_MAP },
+ { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NAS_SystemInformationGSM_MAP },
{ &hf_rrc_cn_DomainInformationList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_DomainInformationListFull },
{ &hf_rrc_ongoingMeasRepList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_OngoingMeasRepList_r4 },
{ &hf_rrc_predefinedConfigStatusList_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PredefinedConfigStatusList },
@@ -119319,7 +127262,7 @@ static const per_sequence_t SRNC_RelocationInfo_r4_IEs_sequence[] = {
{ &hf_rrc_rab_InformationList_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationSetupList_r4 },
{ &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo_r4 },
{ &hf_rrc_ul_TransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList },
- { &hf_rrc_dummy_57 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_17 },
+ { &hf_rrc_dummy_61 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_17 },
{ &hf_rrc_dl_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonTransChInfo_r4 },
{ &hf_rrc_dl_TransChInfoList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_AddReconfTransChInfoList_r4 },
{ &hf_rrc_measurementReport, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementReport },
@@ -119379,14 +127322,14 @@ dissect_rrc_SRNC_RelocationInfo_v4d0ext_IEs(tvbuff_t *tvb _U_, int offset _U_, a
}
-static const per_sequence_t T_nonCriticalExtensions_211_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_225_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_211(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_225(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_211, T_nonCriticalExtensions_211_sequence);
+ ett_rrc_T_nonCriticalExtensions_225, T_nonCriticalExtensions_225_sequence);
return offset;
}
@@ -119394,7 +127337,7 @@ dissect_rrc_T_nonCriticalExtensions_211(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v7f0NonCriticalExtensions_18_sequence[] = {
{ &hf_rrc_sRNC_RelocationInfo_v7f0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SRNC_RelocationInfo_v7f0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_211, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_211 },
+ { &hf_rrc_nonCriticalExtensions_225, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_225 },
{ NULL, 0, 0, NULL }
};
@@ -119682,7 +127625,7 @@ dissect_rrc_TotalRLC_AM_BufferSize_r5(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
static const per_sequence_t RLC_Capability_r5_sequence[] = {
- { &hf_rrc_totalRLC_AM_BufferSize_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TotalRLC_AM_BufferSize_r5 },
+ { &hf_rrc_totalRLC_AM_BufferSize_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TotalRLC_AM_BufferSize_r5 },
{ &hf_rrc_maximumRLC_WindowSize, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MaximumRLC_WindowSize },
{ &hf_rrc_maximumAM_EntityNumber, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MaximumAM_EntityNumberRLC_Cap },
{ NULL, 0, 0, NULL }
@@ -119699,7 +127642,7 @@ dissect_rrc_RLC_Capability_r5(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
static const per_sequence_t T_supported_07_sequence[] = {
{ &hf_rrc_hsdsch_physical_layer_category, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_HSDSCH_physical_layer_category },
- { &hf_rrc_dummy_23 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
+ { &hf_rrc_dummy_27 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_dummy2_05 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ NULL, 0, 0, NULL }
};
@@ -119739,7 +127682,7 @@ static const per_sequence_t DL_PhysChCapabilityFDD_r5_sequence[] = {
{ &hf_rrc_maxNoDPCH_PDSCH_Codes, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_INTEGER_1_8 },
{ &hf_rrc_maxNoPhysChBitsReceived, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MaxNoPhysChBitsReceived },
{ &hf_rrc_supportForSF_512, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
- { &hf_rrc_dummy_23 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
+ { &hf_rrc_dummy_27 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_BOOLEAN },
{ &hf_rrc_dummy2_04 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SimultaneousSCCPCH_DPCH_Reception },
{ &hf_rrc_dummy3_05 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SupportOfDedicatedPilotsForChEstimation },
{ &hf_rrc_fdd_hspdsch_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_T_fdd_hspdsch_01 },
@@ -119755,16 +127698,16 @@ dissect_rrc_DL_PhysChCapabilityFDD_r5(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
}
-static const per_sequence_t T_fddPhysChCapability_05_sequence[] = {
- { &hf_rrc_downlinkPhysChCapability_11, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_PhysChCapabilityFDD_r5 },
+static const per_sequence_t T_fddPhysChCapability_06_sequence[] = {
+ { &hf_rrc_downlinkPhysChCapability_13, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_PhysChCapabilityFDD_r5 },
{ &hf_rrc_uplinkPhysChCapability, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_PhysChCapabilityFDD },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fddPhysChCapability_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fddPhysChCapability_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fddPhysChCapability_05, T_fddPhysChCapability_05_sequence);
+ ett_rrc_T_fddPhysChCapability_06, T_fddPhysChCapability_06_sequence);
return offset;
}
@@ -119812,7 +127755,7 @@ dissect_rrc_DL_PhysChCapabilityTDD_r5(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
static const per_sequence_t T_tdd384_PhysChCapability_01_sequence[] = {
- { &hf_rrc_downlinkPhysChCapability_12, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_PhysChCapabilityTDD_r5 },
+ { &hf_rrc_downlinkPhysChCapability_14, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_PhysChCapabilityTDD_r5 },
{ &hf_rrc_uplinkPhysChCapability_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_PhysChCapabilityTDD },
{ NULL, 0, 0, NULL }
};
@@ -119869,8 +127812,8 @@ dissect_rrc_DL_PhysChCapabilityTDD_LCR_r5(tvbuff_t *tvb _U_, int offset _U_, asn
static const per_sequence_t T_tdd128_PhysChCapability_02_sequence[] = {
- { &hf_rrc_downlinkPhysChCapability_13, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_PhysChCapabilityTDD_LCR_r5 },
- { &hf_rrc_uplinkPhysChCapability_08, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_PhysChCapabilityTDD_LCR_r4 },
+ { &hf_rrc_downlinkPhysChCapability_15, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_DL_PhysChCapabilityTDD_LCR_r5 },
+ { &hf_rrc_uplinkPhysChCapability_09, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UL_PhysChCapabilityTDD_LCR_r4 },
{ NULL, 0, 0, NULL }
};
@@ -119884,7 +127827,7 @@ dissect_rrc_T_tdd128_PhysChCapability_02(tvbuff_t *tvb _U_, int offset _U_, asn1
static const per_sequence_t PhysicalChannelCapability_r5_sequence[] = {
- { &hf_rrc_fddPhysChCapability_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_fddPhysChCapability_05 },
+ { &hf_rrc_fddPhysChCapability_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_fddPhysChCapability_06 },
{ &hf_rrc_tdd384_PhysChCapability_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_tdd384_PhysChCapability_01 },
{ &hf_rrc_tdd128_PhysChCapability_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_tdd128_PhysChCapability_02 },
{ NULL, 0, 0, NULL }
@@ -119919,14 +127862,14 @@ static const per_sequence_t UE_RadioAccessCapability_r5_sequence[] = {
{ &hf_rrc_accessStratumReleaseIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_AccessStratumReleaseIndicator },
{ &hf_rrc_dl_CapabilityWithSimultaneousHS_DSCHConfig, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CapabilityWithSimultaneousHS_DSCHConfig },
{ &hf_rrc_pdcp_Capability_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PDCP_Capability_r5 },
- { &hf_rrc_rlc_Capability_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RLC_Capability_r5 },
+ { &hf_rrc_rlc_Capability_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RLC_Capability_r5 },
{ &hf_rrc_transportChannelCapability, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TransportChannelCapability },
{ &hf_rrc_rf_Capability_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RF_Capability_r4 },
- { &hf_rrc_physicalChannelCapability_07, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PhysicalChannelCapability_r5 },
+ { &hf_rrc_physicalChannelCapability_08, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PhysicalChannelCapability_r5 },
{ &hf_rrc_ue_MultiModeRAT_Capability_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_MultiModeRAT_Capability_r5 },
{ &hf_rrc_securityCapability, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SecurityCapability },
{ &hf_rrc_ue_positioning_Capability_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_Capability_r4 },
- { &hf_rrc_measurementCapability_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementCapability_r4 },
+ { &hf_rrc_measurementCapability_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementCapability_r4 },
{ NULL, 0, 0, NULL }
};
@@ -120010,16 +127953,16 @@ dissect_rrc_OngoingMeasRepList_r5(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
}
-static const per_sequence_t T_fdd_179_sequence[] = {
+static const per_sequence_t T_fdd_184_sequence[] = {
{ &hf_rrc_dummy1 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CPCH_SetID },
{ &hf_rrc_dummy2_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DRAC_StaticInformationList },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_fdd_179(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_fdd_184(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_fdd_179, T_fdd_179_sequence);
+ ett_rrc_T_fdd_184, T_fdd_184_sequence);
return offset;
}
@@ -120032,7 +127975,7 @@ static const value_string rrc_T_dummy_18_vals[] = {
};
static const per_choice_t T_dummy_18_choice[] = {
- { 0, &hf_rrc_fdd_185 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_179 },
+ { 0, &hf_rrc_fdd_190 , ASN1_NO_EXTENSIONS , dissect_rrc_T_fdd_184 },
{ 1, &hf_rrc_tdd , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -120068,7 +128011,7 @@ static const per_sequence_t SRNC_RelocationInfo_r5_IEs_sequence[] = {
{ &hf_rrc_uESpecificBehaviourInformation1interRAT, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UESpecificBehaviourInformation1interRAT },
{ &hf_rrc_ue_RATSpecificCapability_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRAT_UE_RadioAccessCapabilityList_r5 },
{ &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
- { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NAS_SystemInformationGSM_MAP },
+ { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NAS_SystemInformationGSM_MAP },
{ &hf_rrc_cn_DomainInformationList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_DomainInformationListFull },
{ &hf_rrc_ongoingMeasRepList_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_OngoingMeasRepList_r5 },
{ &hf_rrc_predefinedConfigStatusList_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PredefinedConfigStatusList },
@@ -120076,7 +128019,7 @@ static const per_sequence_t SRNC_RelocationInfo_r5_IEs_sequence[] = {
{ &hf_rrc_rab_InformationList_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationSetupList_r5 },
{ &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo_r4 },
{ &hf_rrc_ul_TransChInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList },
- { &hf_rrc_dummy_58 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_18 },
+ { &hf_rrc_dummy_62 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_dummy_18 },
{ &hf_rrc_dl_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonTransChInfo_r4 },
{ &hf_rrc_dl_TransChInfoList_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_AddReconfTransChInfoList_r5 },
{ &hf_rrc_tpc_CombinationInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TPC_CombinationInfoList },
@@ -120094,14 +128037,14 @@ dissect_rrc_SRNC_RelocationInfo_r5_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_c
}
-static const per_sequence_t T_nonCriticalExtensions_212_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_226_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_212(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_226(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_212, T_nonCriticalExtensions_212_sequence);
+ ett_rrc_T_nonCriticalExtensions_226, T_nonCriticalExtensions_226_sequence);
return offset;
}
@@ -120109,7 +128052,7 @@ dissect_rrc_T_nonCriticalExtensions_212(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v7f0NonCriticalExtensions_19_sequence[] = {
{ &hf_rrc_sRNC_RelocationInfo_v7f0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SRNC_RelocationInfo_v7f0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_212, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_212 },
+ { &hf_rrc_nonCriticalExtensions_226, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_226 },
{ NULL, 0, 0, NULL }
};
@@ -120339,14 +128282,14 @@ static const per_sequence_t UE_RadioAccessCapability_r6_sequence[] = {
{ &hf_rrc_accessStratumReleaseIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_AccessStratumReleaseIndicator },
{ &hf_rrc_dl_CapabilityWithSimultaneousHS_DSCHConfig, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CapabilityWithSimultaneousHS_DSCHConfig },
{ &hf_rrc_pdcp_Capability_05, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PDCP_Capability_r6 },
- { &hf_rrc_rlc_Capability_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RLC_Capability_r5 },
+ { &hf_rrc_rlc_Capability_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RLC_Capability_r5 },
{ &hf_rrc_transportChannelCapability, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_TransportChannelCapability },
{ &hf_rrc_rf_Capability_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RF_Capability_r4 },
- { &hf_rrc_physicalChannelCapability_07, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PhysicalChannelCapability_r5 },
+ { &hf_rrc_physicalChannelCapability_08, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PhysicalChannelCapability_r5 },
{ &hf_rrc_ue_MultiModeRAT_Capability_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_MultiModeRAT_Capability_r5 },
{ &hf_rrc_securityCapability, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SecurityCapability },
{ &hf_rrc_ue_positioning_Capability_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_Positioning_Capability_r4 },
- { &hf_rrc_measurementCapability_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementCapability_r4 },
+ { &hf_rrc_measurementCapability_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementCapability_r4 },
{ NULL, 0, 0, NULL }
};
@@ -120398,7 +128341,7 @@ static const value_string rrc_MeasurementCommandWithType_r6_vals[] = {
static const per_choice_t MeasurementCommandWithType_r6_choice[] = {
{ 0, &hf_rrc_setup_02 , ASN1_NO_EXTENSIONS , dissect_rrc_MeasurementType_r6 },
- { 1, &hf_rrc_modify_07 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_modify_08 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 2, &hf_rrc_release_01 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -120478,7 +128421,7 @@ static const per_sequence_t SRNC_RelocationInfo_r6_IEs_sequence[] = {
{ &hf_rrc_ueCapabilityContainer_UCI_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_ueCapabilityContainer_UCI_01 },
{ &hf_rrc_ue_RATSpecificCapability_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRAT_UE_RadioAccessCapabilityList_r5 },
{ &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
- { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NAS_SystemInformationGSM_MAP },
+ { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NAS_SystemInformationGSM_MAP },
{ &hf_rrc_cn_DomainInformationList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_DomainInformationListFull },
{ &hf_rrc_ongoingMeasRepList_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_OngoingMeasRepList_r6 },
{ &hf_rrc_interRATCellInfoIndication, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRATCellInfoIndication },
@@ -120583,14 +128526,14 @@ dissect_rrc_SRNC_RelocationInfo_v860ext_IEs(tvbuff_t *tvb _U_, int offset _U_, a
}
-static const per_sequence_t T_nonCriticalExtensions_213_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_227_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_213(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_227(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_213, T_nonCriticalExtensions_213_sequence);
+ ett_rrc_T_nonCriticalExtensions_227, T_nonCriticalExtensions_227_sequence);
return offset;
}
@@ -120598,7 +128541,7 @@ dissect_rrc_T_nonCriticalExtensions_213(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860NonCriticalExtensions_36_sequence[] = {
{ &hf_rrc_sRNC_RelocationInfo_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SRNC_RelocationInfo_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_213, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_213 },
+ { &hf_rrc_nonCriticalExtensions_227, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_227 },
{ NULL, 0, 0, NULL }
};
@@ -120711,7 +128654,7 @@ static const value_string rrc_MeasurementCommandWithType_r7_vals[] = {
static const per_choice_t MeasurementCommandWithType_r7_choice[] = {
{ 0, &hf_rrc_setup_03 , ASN1_NO_EXTENSIONS , dissect_rrc_MeasurementType_r7 },
- { 1, &hf_rrc_modify_07 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_modify_08 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 2, &hf_rrc_release_01 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -120792,7 +128735,7 @@ static const per_sequence_t SRNC_RelocationInfo_r7_IEs_sequence[] = {
{ &hf_rrc_ue_RATSpecificCapability_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRAT_UE_RadioAccessCapabilityList_r5 },
{ &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
{ &hf_rrc_srns_t_305 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_305 },
- { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NAS_SystemInformationGSM_MAP },
+ { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NAS_SystemInformationGSM_MAP },
{ &hf_rrc_cn_DomainInformationList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_DomainInformationListFull },
{ &hf_rrc_ongoingMeasRepList_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_OngoingMeasRepList_r7 },
{ &hf_rrc_interRATCellInfoIndication, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRATCellInfoIndication },
@@ -120831,14 +128774,14 @@ dissect_rrc_T_sRNC_RelocationInfo_r7_add_ext(tvbuff_t *tvb _U_, int offset _U_,
}
-static const per_sequence_t T_nonCriticalExtensions_214_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_228_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_214(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_228(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_214, T_nonCriticalExtensions_214_sequence);
+ ett_rrc_T_nonCriticalExtensions_228, T_nonCriticalExtensions_228_sequence);
return offset;
}
@@ -120846,7 +128789,7 @@ dissect_rrc_T_nonCriticalExtensions_214(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v860NonCriticalExtensions_37_sequence[] = {
{ &hf_rrc_sRNC_RelocationInfo_v860ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SRNC_RelocationInfo_v860ext_IEs },
- { &hf_rrc_nonCriticalExtensions_214, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_214 },
+ { &hf_rrc_nonCriticalExtensions_228, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_228 },
{ NULL, 0, 0, NULL }
};
@@ -120929,7 +128872,7 @@ static const value_string rrc_MeasurementCommandWithType_r8_vals[] = {
static const per_choice_t MeasurementCommandWithType_r8_choice[] = {
{ 0, &hf_rrc_setup_04 , ASN1_NO_EXTENSIONS , dissect_rrc_MeasurementType_r8 },
- { 1, &hf_rrc_modify_07 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_modify_08 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 2, &hf_rrc_release_01 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -121091,7 +129034,7 @@ static const per_sequence_t SRNC_RelocationInfo_r8_IEs_sequence[] = {
{ &hf_rrc_ue_RATSpecificCapability_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRAT_UE_RadioAccessCapabilityList_r5 },
{ &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
{ &hf_rrc_srns_t_305 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_305 },
- { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NAS_SystemInformationGSM_MAP },
+ { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NAS_SystemInformationGSM_MAP },
{ &hf_rrc_cn_DomainInformationList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_DomainInformationListFull },
{ &hf_rrc_ongoingMeasRepList_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_OngoingMeasRepList_r8 },
{ &hf_rrc_interRATCellInfoIndication, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRATCellInfoIndication },
@@ -121136,14 +129079,14 @@ dissect_rrc_SRNC_RelocationInfo_v8d0ext_IEs(tvbuff_t *tvb _U_, int offset _U_, a
}
-static const per_sequence_t T_nonCriticalExtensions_215_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_229_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_215(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_229(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_215, T_nonCriticalExtensions_215_sequence);
+ ett_rrc_T_nonCriticalExtensions_229, T_nonCriticalExtensions_229_sequence);
return offset;
}
@@ -121151,7 +129094,7 @@ dissect_rrc_T_nonCriticalExtensions_215(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v8d0NonCriticalExtensions_01_sequence[] = {
{ &hf_rrc_sRNC_RelocationInfo_v8d0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SRNC_RelocationInfo_v8d0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_215, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_215 },
+ { &hf_rrc_nonCriticalExtensions_229, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_229 },
{ NULL, 0, 0, NULL }
};
@@ -121249,7 +129192,7 @@ static const value_string rrc_MeasurementCommandWithType_r9_vals[] = {
static const per_choice_t MeasurementCommandWithType_r9_choice[] = {
{ 0, &hf_rrc_setup_05 , ASN1_NO_EXTENSIONS , dissect_rrc_MeasurementType_r9 },
- { 1, &hf_rrc_modify_07 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 1, &hf_rrc_modify_08 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 2, &hf_rrc_release_01 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
{ 0, NULL, 0, NULL }
};
@@ -121388,7 +129331,7 @@ static const per_sequence_t SRNC_RelocationInfo_r9_IEs_sequence[] = {
{ &hf_rrc_ue_RATSpecificCapability_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRAT_UE_RadioAccessCapabilityList_r5 },
{ &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
{ &hf_rrc_srns_t_305 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_305 },
- { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NAS_SystemInformationGSM_MAP },
+ { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NAS_SystemInformationGSM_MAP },
{ &hf_rrc_cn_DomainInformationList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_DomainInformationListFull },
{ &hf_rrc_ongoingMeasRepList_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_OngoingMeasRepList_r9 },
{ &hf_rrc_interRATCellInfoIndication, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRATCellInfoIndication },
@@ -121464,14 +129407,14 @@ dissect_rrc_SRNC_RelocationInfo_v970ext_IEs(tvbuff_t *tvb _U_, int offset _U_, a
}
-static const per_sequence_t T_nonCriticalExtensions_216_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_230_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_216(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_230(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_216, T_nonCriticalExtensions_216_sequence);
+ ett_rrc_T_nonCriticalExtensions_230, T_nonCriticalExtensions_230_sequence);
return offset;
}
@@ -121479,7 +129422,7 @@ dissect_rrc_T_nonCriticalExtensions_216(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v970NonCriticalExtensions_04_sequence[] = {
{ &hf_rrc_sRNC_RelocationInfo_v970ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SRNC_RelocationInfo_v970ext_IEs },
- { &hf_rrc_nonCriticalExtensions_216, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_216 },
+ { &hf_rrc_nonCriticalExtensions_230, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_230 },
{ NULL, 0, 0, NULL }
};
@@ -121523,123 +129466,328 @@ dissect_rrc_T_r9_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_118_sequence[] = {
+
+static int
+dissect_rrc_T_ueCapabilityContainer_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string_containing_pdu_new(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, FALSE, dissect_UE_CapabilityContainer_IEs_PDU);
+
+ return offset;
+}
+
+
+
+static int
+dissect_rrc_T_ueCapabilityContainer_RSC_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string_containing_pdu_new(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, FALSE, dissect_RRCConnectionSetupComplete_r3_add_ext_IEs_PDU);
+
+ return offset;
+}
+
+
+
+static int
+dissect_rrc_T_ueCapabilityContainer_UCI_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string_containing_pdu_new(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, FALSE, dissect_UECapabilityInformation_r3_add_ext_IEs_PDU);
+
+ return offset;
+}
+
+
+static const value_string rrc_MeasurementCommandWithType_r10_vals[] = {
+ { 0, "setup" },
+ { 1, "modify" },
+ { 2, "release" },
+ { 0, NULL }
+};
+
+static const per_choice_t MeasurementCommandWithType_r10_choice[] = {
+ { 0, &hf_rrc_setup_06 , ASN1_NO_EXTENSIONS , dissect_rrc_MeasurementType_r10 },
+ { 1, &hf_rrc_modify_08 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 2, &hf_rrc_release_01 , ASN1_NO_EXTENSIONS , dissect_rrc_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_MeasurementCommandWithType_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_MeasurementCommandWithType_r10, MeasurementCommandWithType_r10_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t OngoingMeasRep_r10_sequence[] = {
+ { &hf_rrc_measurementIdentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MeasurementIdentity },
+ { &hf_rrc_measurementCommandWithType_06, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_MeasurementCommandWithType_r10 },
+ { &hf_rrc_measurementReportingMode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MeasurementReportingMode },
+ { &hf_rrc_additionalMeasurementID_List, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_AdditionalMeasurementID_List },
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_118(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_OngoingMeasRep_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_118, T_criticalExtensions_118_sequence);
+ ett_rrc_OngoingMeasRep_r10, OngoingMeasRep_r10_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t OngoingMeasRepList_r10_sequence_of[1] = {
+ { &hf_rrc_OngoingMeasRepList_r10_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_OngoingMeasRep_r10 },
+};
+
+static int
+dissect_rrc_OngoingMeasRepList_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_rrc_OngoingMeasRepList_r10, OngoingMeasRepList_r10_sequence_of,
+ 1, maxNoOfMeas, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_rrc_T_measurementReport_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string_containing_pdu_new(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, FALSE, dissect_MeasurementReport_PDU);
+
+ return offset;
+}
+
+
+static const per_sequence_t SRNC_RelocationInfo_r10_IEs_sequence[] = {
+ { &hf_rrc_rb_IdentityForHOMessage, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RB_Identity },
+ { &hf_rrc_stateOfRRC , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_StateOfRRC },
+ { &hf_rrc_stateOfRRC_Procedure, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_StateOfRRC_Procedure },
+ { &hf_rrc_cipheringStatusList_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CipheringStatusList_r4 },
+ { &hf_rrc_latestConfiguredCN_Domain, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_CN_DomainIdentity },
+ { &hf_rrc_calculationTimeForCiphering, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CalculationTimeForCiphering },
+ { &hf_rrc_count_C_List , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_COUNT_C_List },
+ { &hf_rrc_cipheringInfoPerRB_List_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CipheringInfoPerRB_List_r4 },
+ { &hf_rrc_integrityProtectionStatus, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_IntegrityProtectionStatus },
+ { &hf_rrc_srb_SpecificIntegrityProtInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_SRB_SpecificIntegrityProtInfoList },
+ { &hf_rrc_implementationSpecificParams, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_ImplementationSpecificParams },
+ { &hf_rrc_u_RNTI , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_U_RNTI },
+ { &hf_rrc_c_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_C_RNTI },
+ { &hf_rrc_ue_RadioAccessCapability_05, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_UE_RadioAccessCapability_r6 },
+ { &hf_rrc_ue_RadioAccessCapability_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_RadioAccessCapabBandFDDList },
+ { &hf_rrc_ue_Positioning_LastKnownPos, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_Positioning_LastKnownPos },
+ { &hf_rrc_uESpecificBehaviourInformation1idle, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UESpecificBehaviourInformation1idle },
+ { &hf_rrc_uESpecificBehaviourInformation1interRAT, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UESpecificBehaviourInformation1interRAT },
+ { &hf_rrc_ueCapabilityContainer_07, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_ueCapabilityContainer_07 },
+ { &hf_rrc_ueCapabilityContainer_RSC_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_ueCapabilityContainer_RSC_05 },
+ { &hf_rrc_ueCapabilityContainer_UCI_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_ueCapabilityContainer_UCI_05 },
+ { &hf_rrc_ue_RATSpecificCapability_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRAT_UE_RadioAccessCapabilityList_r5 },
+ { &hf_rrc_ura_Identity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_URA_Identity },
+ { &hf_rrc_srns_t_305 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_305 },
+ { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_NAS_SystemInformationGSM_MAP },
+ { &hf_rrc_cn_DomainInformationList_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_CN_DomainInformationListFull },
+ { &hf_rrc_ongoingMeasRepList_08, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_OngoingMeasRepList_r10 },
+ { &hf_rrc_interRATCellInfoIndication, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_InterRATCellInfoIndication },
+ { &hf_rrc_predefinedConfigStatusList_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_PredefinedConfigStatusList },
+ { &hf_rrc_srb_InformationList_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SRB_InformationSetupList_r8 },
+ { &hf_rrc_rab_InformationList_06, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_RAB_InformationSetupList_r8 },
+ { &hf_rrc_pdcp_ROHC_TargetMode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_PDCP_ROHC_TargetMode },
+ { &hf_rrc_ul_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_CommonTransChInfo_r4 },
+ { &hf_rrc_ul_TransChInfoList_03, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UL_AddReconfTransChInfoList_r8 },
+ { &hf_rrc_dl_CommonTransChInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_CommonTransChInfo_r4 },
+ { &hf_rrc_dl_TransChInfoList_04, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_DL_AddReconfTransChInfoList_r9 },
+ { &hf_rrc_tpc_CombinationInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TPC_CombinationInfoList },
+ { &hf_rrc_e_RGCH_CombinationInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RGCH_CombinationInfoList },
+ { &hf_rrc_storedCompressedModeInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_StoredCompressedModeInfo_r8 },
+ { &hf_rrc_secondary_tpc_CombinationInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_TPC_CombinationInfoList_r9 },
+ { &hf_rrc_secondary_e_RGCH_CombinationInfoList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_E_RGCH_CombinationInfoList_r9 },
+ { &hf_rrc_measurementReport_05, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_measurementReport_04 },
+ { &hf_rrc_failureCause , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_FailureCauseWithProtErr },
+ { &hf_rrc_ue_HistoryInformation, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_UE_HistoryInformation },
+ { &hf_rrc_mbms_JoinedInformation, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MBMS_JoinedInformation_r6 },
+ { &hf_rrc_mbmsSelectedServiceInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_MBMS_SelectedServiceInfo },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_SRNC_RelocationInfo_r10_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_SRNC_RelocationInfo_r10_IEs, SRNC_RelocationInfo_r10_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtensions_231_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_nonCriticalExtensions_231(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_nonCriticalExtensions_231, T_nonCriticalExtensions_231_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_r10_13_sequence[] = {
+ { &hf_rrc_sRNC_RelocationInfo_r10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SRNC_RelocationInfo_r10_IEs },
+ { &hf_rrc_sRNC_RelocationInfo_r10_add_ext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_BIT_STRING },
+ { &hf_rrc_nonCriticalExtensions_231, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_231 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_r10_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_r10_13, T_r10_13_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_criticalExtensions_134_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_134(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_134, T_criticalExtensions_134_sequence);
return offset;
}
-static const value_string rrc_T_criticalExtensions_117_vals[] = {
+static const value_string rrc_T_criticalExtensions_133_vals[] = {
+ { 0, "r10" },
+ { 1, "criticalExtensions" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_criticalExtensions_133_choice[] = {
+ { 0, &hf_rrc_r10_13 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r10_13 },
+ { 1, &hf_rrc_criticalExtensions_134, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_134 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrc_T_criticalExtensions_133(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_rrc_T_criticalExtensions_133, T_criticalExtensions_133_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string rrc_T_criticalExtensions_132_vals[] = {
{ 0, "r9" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_117_choice[] = {
+static const per_choice_t T_criticalExtensions_132_choice[] = {
{ 0, &hf_rrc_r9_11 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r9_11 },
- { 1, &hf_rrc_criticalExtensions_118, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_118 },
+ { 1, &hf_rrc_criticalExtensions_133, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_133 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_117(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_132(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_117, T_criticalExtensions_117_choice,
+ ett_rrc_T_criticalExtensions_132, T_criticalExtensions_132_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_116_vals[] = {
+static const value_string rrc_T_criticalExtensions_131_vals[] = {
{ 0, "r8" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_116_choice[] = {
+static const per_choice_t T_criticalExtensions_131_choice[] = {
{ 0, &hf_rrc_r8_12 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r8_12 },
- { 1, &hf_rrc_criticalExtensions_117, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_117 },
+ { 1, &hf_rrc_criticalExtensions_132, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_132 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_116(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_131(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_116, T_criticalExtensions_116_choice,
+ ett_rrc_T_criticalExtensions_131, T_criticalExtensions_131_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_115_vals[] = {
+static const value_string rrc_T_criticalExtensions_130_vals[] = {
{ 0, "r7" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_115_choice[] = {
+static const per_choice_t T_criticalExtensions_130_choice[] = {
{ 0, &hf_rrc_r7_16 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r7_16 },
- { 1, &hf_rrc_criticalExtensions_116, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_116 },
+ { 1, &hf_rrc_criticalExtensions_131, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_131 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_115(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_130(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_115, T_criticalExtensions_115_choice,
+ ett_rrc_T_criticalExtensions_130, T_criticalExtensions_130_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_114_vals[] = {
+static const value_string rrc_T_criticalExtensions_129_vals[] = {
{ 0, "r6" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_114_choice[] = {
+static const per_choice_t T_criticalExtensions_129_choice[] = {
{ 0, &hf_rrc_r6_12 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r6_12 },
- { 1, &hf_rrc_criticalExtensions_115, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_115 },
+ { 1, &hf_rrc_criticalExtensions_130, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_130 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_114(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_129(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_114, T_criticalExtensions_114_choice,
+ ett_rrc_T_criticalExtensions_129, T_criticalExtensions_129_choice,
NULL);
return offset;
}
-static const value_string rrc_T_criticalExtensions_113_vals[] = {
+static const value_string rrc_T_criticalExtensions_128_vals[] = {
{ 0, "r5" },
{ 1, "criticalExtensions" },
{ 0, NULL }
};
-static const per_choice_t T_criticalExtensions_113_choice[] = {
+static const per_choice_t T_criticalExtensions_128_choice[] = {
{ 0, &hf_rrc_r5_15 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r5_15 },
- { 1, &hf_rrc_criticalExtensions_114, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_114 },
+ { 1, &hf_rrc_criticalExtensions_129, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_129 },
{ 0, NULL, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_113(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_113, T_criticalExtensions_113_choice,
+ ett_rrc_T_criticalExtensions_128, T_criticalExtensions_128_choice,
NULL);
return offset;
@@ -121654,7 +129802,7 @@ static const value_string rrc_T_later_than_r3_28_vals[] = {
static const per_choice_t T_later_than_r3_28_choice[] = {
{ 0, &hf_rrc_r4_14 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r4_14 },
- { 1, &hf_rrc_criticalExtensions_113, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_113 },
+ { 1, &hf_rrc_criticalExtensions_128, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_128 },
{ 0, NULL, 0, NULL }
};
@@ -121834,14 +129982,14 @@ dissect_rrc_RFC3095_ContextInfoList_r5(tvbuff_t *tvb _U_, int offset _U_, asn1_c
}
-static const per_sequence_t T_nonCriticalExtensions_209_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_223_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_209(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_223(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_209, T_nonCriticalExtensions_209_sequence);
+ ett_rrc_T_nonCriticalExtensions_223, T_nonCriticalExtensions_223_sequence);
return offset;
}
@@ -121849,7 +129997,7 @@ dissect_rrc_T_nonCriticalExtensions_209(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_r5_14_sequence[] = {
{ &hf_rrc_rFC3095_ContextInfoList_r5, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_RFC3095_ContextInfoList_r5 },
- { &hf_rrc_nonCriticalExtensions_209, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_209 },
+ { &hf_rrc_nonCriticalExtensions_223, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_223 },
{ NULL, 0, 0, NULL }
};
@@ -121862,14 +130010,14 @@ dissect_rrc_T_r5_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
}
-static const per_sequence_t T_criticalExtensions_112_sequence[] = {
+static const per_sequence_t T_criticalExtensions_127_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_criticalExtensions_112(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_criticalExtensions_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_criticalExtensions_112, T_criticalExtensions_112_sequence);
+ ett_rrc_T_criticalExtensions_127, T_criticalExtensions_127_sequence);
return offset;
}
@@ -121883,7 +130031,7 @@ static const value_string rrc_RFC3095_ContextInfo_r5_vals[] = {
static const per_choice_t RFC3095_ContextInfo_r5_choice[] = {
{ 0, &hf_rrc_r5_14 , ASN1_NO_EXTENSIONS , dissect_rrc_T_r5_14 },
- { 1, &hf_rrc_criticalExtensions_112, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_112 },
+ { 1, &hf_rrc_criticalExtensions_127, ASN1_NO_EXTENSIONS , dissect_rrc_T_criticalExtensions_127 },
{ 0, NULL, 0, NULL }
};
@@ -121926,7 +130074,7 @@ dissect_rrc_ToTargetRNC_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static int
dissect_rrc_T_dL_DCCHmessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 441 "../../asn1/rrc/rrc.cnf"
+#line 494 "../../asn1/rrc/rrc.cnf"
tvbuff_t *dl_dcch_message_tvb=NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -122004,14 +130152,14 @@ dissect_rrc_SRNC_RelocationInfo_v3h0ext_IEs(tvbuff_t *tvb _U_, int offset _U_, a
}
-static const per_sequence_t T_nonCriticalExtensions_217_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_232_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_217(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_232(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_217, T_nonCriticalExtensions_217_sequence);
+ ett_rrc_T_nonCriticalExtensions_232, T_nonCriticalExtensions_232_sequence);
return offset;
}
@@ -122019,7 +130167,7 @@ dissect_rrc_T_nonCriticalExtensions_217(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v7f0NonCriticalExtensions_21_sequence[] = {
{ &hf_rrc_sRNC_RelocationInfo_v7f0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SRNC_RelocationInfo_v7f0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_217, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_217 },
+ { &hf_rrc_nonCriticalExtensions_232, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_232 },
{ NULL, 0, 0, NULL }
};
@@ -122047,14 +130195,14 @@ dissect_rrc_SRNC_RelocationInfo_r6_add_ext_IEs(tvbuff_t *tvb _U_, int offset _U_
}
-static const per_sequence_t T_nonCriticalExtensions_218_sequence[] = {
+static const per_sequence_t T_nonCriticalExtensions_233_sequence[] = {
{ NULL, 0, 0, NULL }
};
static int
-dissect_rrc_T_nonCriticalExtensions_218(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_rrc_T_nonCriticalExtensions_233(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
- ett_rrc_T_nonCriticalExtensions_218, T_nonCriticalExtensions_218_sequence);
+ ett_rrc_T_nonCriticalExtensions_233, T_nonCriticalExtensions_233_sequence);
return offset;
}
@@ -122062,7 +130210,7 @@ dissect_rrc_T_nonCriticalExtensions_218(tvbuff_t *tvb _U_, int offset _U_, asn1_
static const per_sequence_t T_v7f0NonCriticalExtensions_22_sequence[] = {
{ &hf_rrc_sRNC_RelocationInfo_v7f0ext, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrc_SRNC_RelocationInfo_v7f0ext_IEs },
- { &hf_rrc_nonCriticalExtensions_218, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_218 },
+ { &hf_rrc_nonCriticalExtensions_233, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrc_T_nonCriticalExtensions_233 },
{ NULL, 0, 0, NULL }
};
@@ -122219,35 +130367,35 @@ static int dissect_UE_RadioAccessCapabilityInfo_PDU(tvbuff_t *tvb _U_, packet_in
offset += 7; offset >>= 3;
return offset;
}
-static int dissect_MasterInformationBlock_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
+int dissect_rrc_MasterInformationBlock_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
int offset = 0;
asn1_ctx_t asn1_ctx;
asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
- offset = dissect_rrc_MasterInformationBlock(tvb, offset, &asn1_ctx, tree, hf_rrc_MasterInformationBlock_PDU);
+ offset = dissect_rrc_MasterInformationBlock(tvb, offset, &asn1_ctx, tree, hf_rrc_rrc_MasterInformationBlock_PDU);
offset += 7; offset >>= 3;
return offset;
}
-static int dissect_SysInfoType1_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
+int dissect_rrc_SysInfoType1_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
int offset = 0;
asn1_ctx_t asn1_ctx;
asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
- offset = dissect_rrc_SysInfoType1(tvb, offset, &asn1_ctx, tree, hf_rrc_SysInfoType1_PDU);
+ offset = dissect_rrc_SysInfoType1(tvb, offset, &asn1_ctx, tree, hf_rrc_rrc_SysInfoType1_PDU);
offset += 7; offset >>= 3;
return offset;
}
-static int dissect_SysInfoType2_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
+int dissect_rrc_SysInfoType2_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
int offset = 0;
asn1_ctx_t asn1_ctx;
asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
- offset = dissect_rrc_SysInfoType2(tvb, offset, &asn1_ctx, tree, hf_rrc_SysInfoType2_PDU);
+ offset = dissect_rrc_SysInfoType2(tvb, offset, &asn1_ctx, tree, hf_rrc_rrc_SysInfoType2_PDU);
offset += 7; offset >>= 3;
return offset;
}
-static int dissect_SysInfoType3_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
+int dissect_rrc_SysInfoType3_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
int offset = 0;
asn1_ctx_t asn1_ctx;
asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
- offset = dissect_rrc_SysInfoType3(tvb, offset, &asn1_ctx, tree, hf_rrc_SysInfoType3_PDU);
+ offset = dissect_rrc_SysInfoType3(tvb, offset, &asn1_ctx, tree, hf_rrc_rrc_SysInfoType3_PDU);
offset += 7; offset >>= 3;
return offset;
}
@@ -122283,11 +130431,11 @@ static int dissect_SysInfoType6_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, p
offset += 7; offset >>= 3;
return offset;
}
-static int dissect_SysInfoType7_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
+int dissect_rrc_SysInfoType7_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
int offset = 0;
asn1_ctx_t asn1_ctx;
asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
- offset = dissect_rrc_SysInfoType7(tvb, offset, &asn1_ctx, tree, hf_rrc_SysInfoType7_PDU);
+ offset = dissect_rrc_SysInfoType7(tvb, offset, &asn1_ctx, tree, hf_rrc_rrc_SysInfoType7_PDU);
offset += 7; offset >>= 3;
return offset;
}
@@ -122331,11 +130479,11 @@ static int dissect_SysInfoType11bis_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U
offset += 7; offset >>= 3;
return offset;
}
-static int dissect_SysInfoType12_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
+int dissect_rrc_SysInfoType12_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
int offset = 0;
asn1_ctx_t asn1_ctx;
asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
- offset = dissect_rrc_SysInfoType12(tvb, offset, &asn1_ctx, tree, hf_rrc_SysInfoType12_PDU);
+ offset = dissect_rrc_SysInfoType12(tvb, offset, &asn1_ctx, tree, hf_rrc_rrc_SysInfoType12_PDU);
offset += 7; offset >>= 3;
return offset;
}
@@ -122678,7 +130826,7 @@ static int dissect_MeasurementReport_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _
/*--- End of included file: packet-rrc-fn.c ---*/
-#line 118 "../../asn1/rrc/packet-rrc-template.c"
+#line 122 "../../asn1/rrc/packet-rrc-template.c"
#include "packet-rrc.h"
@@ -122797,19 +130945,19 @@ void proto_register_rrc(void) {
{ "UE-RadioAccessCapabilityInfo", "rrc.UE_RadioAccessCapabilityInfo",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_MasterInformationBlock_PDU,
+ { &hf_rrc_rrc_MasterInformationBlock_PDU,
{ "MasterInformationBlock", "rrc.MasterInformationBlock",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_SysInfoType1_PDU,
+ { &hf_rrc_rrc_SysInfoType1_PDU,
{ "SysInfoType1", "rrc.SysInfoType1",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_SysInfoType2_PDU,
+ { &hf_rrc_rrc_SysInfoType2_PDU,
{ "SysInfoType2", "rrc.SysInfoType2",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_SysInfoType3_PDU,
+ { &hf_rrc_rrc_SysInfoType3_PDU,
{ "SysInfoType3", "rrc.SysInfoType3",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
@@ -122829,7 +130977,7 @@ void proto_register_rrc(void) {
{ "SysInfoType6", "rrc.SysInfoType6",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_SysInfoType7_PDU,
+ { &hf_rrc_rrc_SysInfoType7_PDU,
{ "SysInfoType7", "rrc.SysInfoType7",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
@@ -122853,7 +131001,7 @@ void proto_register_rrc(void) {
{ "SysInfoType11bis", "rrc.SysInfoType11bis",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_SysInfoType12_PDU,
+ { &hf_rrc_rrc_SysInfoType12_PDU,
{ "SysInfoType12", "rrc.SysInfoType12",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
@@ -123031,7 +131179,7 @@ void proto_register_rrc(void) {
NULL, HFILL }},
{ &hf_rrc_message,
{ "message", "rrc.message",
- FT_UINT32, BASE_DEC, VALS(rrc_DL_DCCH_MessageType_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_DL_DCCH_MessageType_vals_ext, 0,
"DL_DCCH_MessageType", HFILL }},
{ &hf_rrc_activeSetUpdate,
{ "activeSetUpdate", "rrc.activeSetUpdate",
@@ -123149,12 +131297,12 @@ void proto_register_rrc(void) {
{ "handoverFromUTRANCommand-EUTRA", "rrc.handoverFromUTRANCommand_EUTRA",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_spare3,
- { "spare3", "rrc.spare3",
+ { &hf_rrc_ueInformationRequest,
+ { "ueInformationRequest", "rrc.ueInformationRequest",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_spare2,
- { "spare2", "rrc.spare2",
+ { &hf_rrc_loggingMeasurementConfiguration,
+ { "loggingMeasurementConfiguration", "rrc.loggingMeasurementConfiguration",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_rrc_spare1,
@@ -123163,7 +131311,7 @@ void proto_register_rrc(void) {
NULL, HFILL }},
{ &hf_rrc_message_01,
{ "message", "rrc.message",
- FT_UINT32, BASE_DEC, VALS(rrc_UL_DCCH_MessageType_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_UL_DCCH_MessageType_vals_ext, 0,
"UL_DCCH_MessageType", HFILL }},
{ &hf_rrc_activeSetUpdateComplete,
{ "activeSetUpdateComplete", "rrc.activeSetUpdateComplete",
@@ -123289,6 +131437,70 @@ void proto_register_rrc(void) {
{ "mbmsModificationRequest", "rrc.mbmsModificationRequest",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_ul_DCCH_MessageType_ext,
+ { "ul-DCCH-MessageType-ext", "rrc.ul_DCCH_MessageType_ext",
+ FT_UINT32, BASE_DEC, VALS(rrc_UL_DCCH_MessageType_ext_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_ueInformationResponse,
+ { "ueInformationResponse", "rrc.ueInformationResponse",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_spare15,
+ { "spare15", "rrc.spare15",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_spare14,
+ { "spare14", "rrc.spare14",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_spare13,
+ { "spare13", "rrc.spare13",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_spare12,
+ { "spare12", "rrc.spare12",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_spare11,
+ { "spare11", "rrc.spare11",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_spare10,
+ { "spare10", "rrc.spare10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_spare9,
+ { "spare9", "rrc.spare9",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_spare8,
+ { "spare8", "rrc.spare8",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_spare7,
+ { "spare7", "rrc.spare7",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_spare6,
+ { "spare6", "rrc.spare6",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_spare5,
+ { "spare5", "rrc.spare5",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_spare4,
+ { "spare4", "rrc.spare4",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_spare3,
+ { "spare3", "rrc.spare3",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_spare2,
+ { "spare2", "rrc.spare2",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_rrc_message_02,
{ "message", "rrc.message",
FT_UINT32, BASE_DEC, VALS(rrc_DL_CCCH_MessageType_vals), 0,
@@ -123397,30 +131609,6 @@ void proto_register_rrc(void) {
{ "mbmsUnmodifiedServicesInformation", "rrc.mbmsUnmodifiedServicesInformation",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_spare9,
- { "spare9", "rrc.spare9",
- FT_NONE, BASE_NONE, NULL, 0,
- NULL, HFILL }},
- { &hf_rrc_spare8,
- { "spare8", "rrc.spare8",
- FT_NONE, BASE_NONE, NULL, 0,
- NULL, HFILL }},
- { &hf_rrc_spare7,
- { "spare7", "rrc.spare7",
- FT_NONE, BASE_NONE, NULL, 0,
- NULL, HFILL }},
- { &hf_rrc_spare6,
- { "spare6", "rrc.spare6",
- FT_NONE, BASE_NONE, NULL, 0,
- NULL, HFILL }},
- { &hf_rrc_spare5,
- { "spare5", "rrc.spare5",
- FT_NONE, BASE_NONE, NULL, 0,
- NULL, HFILL }},
- { &hf_rrc_spare4,
- { "spare4", "rrc.spare4",
- FT_NONE, BASE_NONE, NULL, 0,
- NULL, HFILL }},
{ &hf_rrc_message_10,
{ "message", "rrc.message",
FT_UINT32, BASE_DEC, VALS(rrc_MSCH_MessageType_vals), 0,
@@ -123619,8 +131807,28 @@ void proto_register_rrc(void) {
"T_nonCriticalExtensions_04", HFILL }},
{ &hf_rrc_criticalExtensions_04,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_NONE, BASE_NONE, NULL, 0,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_04_vals), 0,
"T_criticalExtensions_04", HFILL }},
+ { &hf_rrc_r10,
+ { "r10", "rrc.r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_activeSetUpdate_r10,
+ { "activeSetUpdate-r10", "rrc.activeSetUpdate_r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ActiveSetUpdate_r10_IEs", HFILL }},
+ { &hf_rrc_activeSetUpdate_r10_add_ext,
+ { "activeSetUpdate-r10-add-ext", "rrc.activeSetUpdate_r10_add_ext",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_05,
+ { "nonCriticalExtensions", "rrc.nonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_nonCriticalExtensions_05", HFILL }},
+ { &hf_rrc_criticalExtensions_05,
+ { "criticalExtensions", "rrc.criticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_criticalExtensions_05", HFILL }},
{ &hf_rrc_dummy,
{ "dummy", "rrc.dummy",
FT_NONE, BASE_NONE, NULL, 0,
@@ -123841,6 +132049,18 @@ void proto_register_rrc(void) {
{ "rl-AdditionInformationList", "rrc.rl_AdditionInformationList",
FT_UINT32, BASE_DEC, NULL, 0,
"RL_AdditionInformationList_v950ext", HFILL }},
+ { &hf_rrc_rl_AdditionInformationList_07,
+ { "rl-AdditionInformationList", "rrc.rl_AdditionInformationList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "RL_AdditionInformationList_r10", HFILL }},
+ { &hf_rrc_dl_SecondaryCellInfoFDD_02,
+ { "dl-SecondaryCellInfoFDD", "rrc.dl_SecondaryCellInfoFDD",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "DL_SecondaryCellInfoFDD_r10", HFILL }},
+ { &hf_rrc_additionalDLSecCellInfoListFDD,
+ { "additionalDLSecCellInfoListFDD", "rrc.additionalDLSecCellInfoListFDD",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
{ &hf_rrc_dummy_02,
{ "dummy", "rrc.dummy",
FT_NONE, BASE_NONE, NULL, 0,
@@ -123861,10 +132081,10 @@ void proto_register_rrc(void) {
{ "activeSetUpdateComplete-r3-add-ext", "rrc.activeSetUpdateComplete_r3_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_05,
+ { &hf_rrc_nonCriticalExtensions_06,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_05", HFILL }},
+ "T_nonCriticalExtensions_06", HFILL }},
{ &hf_rrc_failureCause,
{ "failureCause", "rrc.failureCause",
FT_UINT32, BASE_DEC, VALS(rrc_FailureCauseWithProtErr_vals), 0,
@@ -123877,10 +132097,10 @@ void proto_register_rrc(void) {
{ "activeSetUpdateFailure-r3-add-ext", "rrc.activeSetUpdateFailure_r3_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_06,
+ { &hf_rrc_nonCriticalExtensions_07,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_06", HFILL }},
+ "T_nonCriticalExtensions_07", HFILL }},
{ &hf_rrc_r3_01,
{ "r3", "rrc.r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -123937,18 +132157,26 @@ void proto_register_rrc(void) {
{ "assistanceDataDelivery-v920ext", "rrc.assistanceDataDelivery_v920ext",
FT_NONE, BASE_NONE, NULL, 0,
"AssistanceDataDelivery_v920ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_07,
+ { &hf_rrc_va40NonCriticalExtension,
+ { "va40NonCriticalExtension", "rrc.va40NonCriticalExtension",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_assistanceDataDelivery_va40ext,
+ { "assistanceDataDelivery-va40ext", "rrc.assistanceDataDelivery_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AssistanceDataDelivery_va40ext_IEs", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_08,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_07", HFILL }},
+ "T_nonCriticalExtensions_08", HFILL }},
{ &hf_rrc_later_than_r3_01,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
"T_later_than_r3_01", HFILL }},
- { &hf_rrc_criticalExtensions_05,
+ { &hf_rrc_criticalExtensions_06,
{ "criticalExtensions", "rrc.criticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_05", HFILL }},
+ "T_criticalExtensions_06", HFILL }},
{ &hf_rrc_ue_positioning_GPS_AssistanceData,
{ "ue-positioning-GPS-AssistanceData", "rrc.ue_positioning_GPS_AssistanceData",
FT_NONE, BASE_NONE, NULL, 0,
@@ -123989,6 +132217,14 @@ void proto_register_rrc(void) {
{ "ue-positioning-GANSS-AssistanceData-v920ext", "rrc.ue_positioning_GANSS_AssistanceData_v920ext",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_ue_positioning_GPS_AssistanceData_va40ext,
+ { "ue-positioning-GPS-AssistanceData-va40ext", "rrc.ue_positioning_GPS_AssistanceData_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_ue_positioning_GANSS_AssistanceData_va40ext,
+ { "ue-positioning-GANSS-AssistanceData-va40ext", "rrc.ue_positioning_GANSS_AssistanceData_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_rrc_r3_02,
{ "r3", "rrc.r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -124013,18 +132249,18 @@ void proto_register_rrc(void) {
{ "cellChangeOrderFromUTRAN-v590ext", "rrc.cellChangeOrderFromUTRAN_v590ext",
FT_NONE, BASE_NONE, NULL, 0,
"CellChangeOrderFromUTRAN_v590ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_08,
+ { &hf_rrc_nonCriticalExtensions_09,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_08", HFILL }},
+ "T_nonCriticalExtensions_09", HFILL }},
{ &hf_rrc_later_than_r3_02,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
"T_later_than_r3_02", HFILL }},
- { &hf_rrc_criticalExtensions_06,
+ { &hf_rrc_criticalExtensions_07,
{ "criticalExtensions", "rrc.criticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_06", HFILL }},
+ "T_criticalExtensions_07", HFILL }},
{ &hf_rrc_rab_InformationList,
{ "rab-InformationList", "rrc.rab_InformationList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -124061,18 +132297,18 @@ void proto_register_rrc(void) {
{ "cellChangeOrderFromUTRANFailure-r3-add-ext", "rrc.cellChangeOrderFromUTRANFailure_r3_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_09,
+ { &hf_rrc_nonCriticalExtensions_10,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_09", HFILL }},
+ "T_nonCriticalExtensions_10", HFILL }},
{ &hf_rrc_dummy_03,
{ "dummy", "rrc.dummy",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_criticalExtensions_07,
+ { &hf_rrc_criticalExtensions_08,
{ "criticalExtensions", "rrc.criticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_07", HFILL }},
+ "T_criticalExtensions_08", HFILL }},
{ &hf_rrc_interRAT_ChangeFailureCause,
{ "interRAT-ChangeFailureCause", "rrc.interRAT_ChangeFailureCause",
FT_UINT32, BASE_DEC, VALS(rrc_InterRAT_ChangeFailureCause_vals), 0,
@@ -124157,10 +132393,18 @@ void proto_register_rrc(void) {
{ "cellUpdate-v860ext", "rrc.cellUpdate_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
"CellUpdate_v860ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_10,
+ { &hf_rrc_va40NonCriticalExtensions,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_cellUpdate_va40ext,
+ { "cellUpdate-va40ext", "rrc.cellUpdate_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CellUpdate_va40ext_IEs", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_11,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_10", HFILL }},
+ "T_nonCriticalExtensions_11", HFILL }},
{ &hf_rrc_cellUpdate_v7e0ext,
{ "cellUpdate-v7e0ext", "rrc.cellUpdate_v7e0ext",
FT_NONE, BASE_NONE, NULL, 0,
@@ -124173,13 +132417,13 @@ void proto_register_rrc(void) {
{ "cellUpdate-v7g0ext", "rrc.cellUpdate_v7g0ext",
FT_NONE, BASE_NONE, NULL, 0,
"CellUpdate_v7g0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_11,
+ { &hf_rrc_nonCriticalExtensions_12,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_11", HFILL }},
+ "T_nonCriticalExtensions_12", HFILL }},
{ &hf_rrc_establishmentCause,
{ "establishmentCause", "rrc.establishmentCause",
- FT_UINT32, BASE_DEC, VALS(rrc_EstablishmentCause_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_EstablishmentCause_vals_ext, 0,
NULL, HFILL }},
{ &hf_rrc_cellUpdateCause_ext,
{ "cellUpdateCause-ext", "rrc.cellUpdateCause_ext",
@@ -124245,6 +132489,18 @@ void proto_register_rrc(void) {
{ "supportOfControlChannelDRXOperation", "rrc.supportOfControlChannelDRXOperation",
FT_UINT32, BASE_DEC, VALS(rrc_T_supportOfControlChannelDRXOperation_vals), 0,
NULL, HFILL }},
+ { &hf_rrc_securityRevertStatusIndicator,
+ { "securityRevertStatusIndicator", "rrc.securityRevertStatusIndicator",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_securityRevertStatusIndicator_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_loggedMeasAvailable,
+ { "loggedMeasAvailable", "rrc.loggedMeasAvailable",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_loggedMeasAvailable_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_loggedANRResultsAvailable,
+ { "loggedANRResultsAvailable", "rrc.loggedANRResultsAvailable",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_loggedANRResultsAvailable_vals), 0,
+ NULL, HFILL }},
{ &hf_rrc_r3_04,
{ "r3", "rrc.r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -124301,18 +132557,18 @@ void proto_register_rrc(void) {
{ "cellUpdateConfirm-v690ext", "rrc.cellUpdateConfirm_v690ext",
FT_NONE, BASE_NONE, NULL, 0,
"CellUpdateConfirm_v690ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_12,
+ { &hf_rrc_nonCriticalExtensions_13,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_12", HFILL }},
+ "T_nonCriticalExtensions_13", HFILL }},
{ &hf_rrc_later_than_r3_03,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
"T_later_than_r3_03", HFILL }},
- { &hf_rrc_criticalExtensions_08,
+ { &hf_rrc_criticalExtensions_09,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_08_vals), 0,
- "T_criticalExtensions_08", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_09_vals), 0,
+ "T_criticalExtensions_09", HFILL }},
{ &hf_rrc_r4,
{ "r4", "rrc.r4",
FT_NONE, BASE_NONE, NULL, 0,
@@ -124341,14 +132597,14 @@ void proto_register_rrc(void) {
{ "v690NonCriticalExtensions", "rrc.v690NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v690NonCriticalExtensions_03", HFILL }},
- { &hf_rrc_nonCriticalExtensions_13,
+ { &hf_rrc_nonCriticalExtensions_14,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_13", HFILL }},
- { &hf_rrc_criticalExtensions_09,
+ "T_nonCriticalExtensions_14", HFILL }},
+ { &hf_rrc_criticalExtensions_10,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_09_vals), 0,
- "T_criticalExtensions_09", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_10_vals), 0,
+ "T_criticalExtensions_10", HFILL }},
{ &hf_rrc_r5,
{ "r5", "rrc.r5",
FT_NONE, BASE_NONE, NULL, 0,
@@ -124369,14 +132625,14 @@ void proto_register_rrc(void) {
{ "v690NonCriticalExtensions", "rrc.v690NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v690NonCriticalExtensions_04", HFILL }},
- { &hf_rrc_nonCriticalExtensions_14,
+ { &hf_rrc_nonCriticalExtensions_15,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_14", HFILL }},
- { &hf_rrc_criticalExtensions_10,
+ "T_nonCriticalExtensions_15", HFILL }},
+ { &hf_rrc_criticalExtensions_11,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_10_vals), 0,
- "T_criticalExtensions_10", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_11_vals), 0,
+ "T_criticalExtensions_11", HFILL }},
{ &hf_rrc_r6_01,
{ "r6", "rrc.r6",
FT_NONE, BASE_NONE, NULL, 0,
@@ -124397,14 +132653,14 @@ void proto_register_rrc(void) {
{ "cellUpdateConfirm-v6b0ext", "rrc.cellUpdateConfirm_v6b0ext",
FT_NONE, BASE_NONE, NULL, 0,
"CellUpdateConfirm_v6b0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_15,
+ { &hf_rrc_nonCriticalExtensions_16,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_15", HFILL }},
- { &hf_rrc_criticalExtensions_11,
+ "T_nonCriticalExtensions_16", HFILL }},
+ { &hf_rrc_criticalExtensions_12,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_11_vals), 0,
- "T_criticalExtensions_11", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_12_vals), 0,
+ "T_criticalExtensions_12", HFILL }},
{ &hf_rrc_r7_01,
{ "r7", "rrc.r7",
FT_NONE, BASE_NONE, NULL, 0,
@@ -124433,14 +132689,14 @@ void proto_register_rrc(void) {
{ "cellUpdateConfirm-v860ext", "rrc.cellUpdateConfirm_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
"CellUpdateConfirm_v860ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_16,
+ { &hf_rrc_nonCriticalExtensions_17,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_16", HFILL }},
- { &hf_rrc_criticalExtensions_12,
+ "T_nonCriticalExtensions_17", HFILL }},
+ { &hf_rrc_criticalExtensions_13,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_12_vals), 0,
- "T_criticalExtensions_12", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_13_vals), 0,
+ "T_criticalExtensions_13", HFILL }},
{ &hf_rrc_r8_01,
{ "r8", "rrc.r8",
FT_NONE, BASE_NONE, NULL, 0,
@@ -124493,14 +132749,14 @@ void proto_register_rrc(void) {
{ "cellUpdateConfirm-v8a0ext", "rrc.cellUpdateConfirm_v8a0ext",
FT_NONE, BASE_NONE, NULL, 0,
"CellUpdateConfirm_v8a0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_17,
+ { &hf_rrc_nonCriticalExtensions_18,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_17", HFILL }},
- { &hf_rrc_criticalExtensions_13,
+ "T_nonCriticalExtensions_18", HFILL }},
+ { &hf_rrc_criticalExtensions_14,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_13_vals), 0,
- "T_criticalExtensions_13", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_14_vals), 0,
+ "T_criticalExtensions_14", HFILL }},
{ &hf_rrc_r9_01,
{ "r9", "rrc.r9",
FT_NONE, BASE_NONE, NULL, 0,
@@ -124521,14 +132777,34 @@ void proto_register_rrc(void) {
{ "cellUpdateConfirm-v950ext", "rrc.cellUpdateConfirm_v950ext",
FT_NONE, BASE_NONE, NULL, 0,
"CellUpdateConfirm_v950ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_18,
+ { &hf_rrc_nonCriticalExtensions_19,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_18", HFILL }},
- { &hf_rrc_criticalExtensions_14,
+ "T_nonCriticalExtensions_19", HFILL }},
+ { &hf_rrc_criticalExtensions_15,
{ "criticalExtensions", "rrc.criticalExtensions",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_15_vals), 0,
+ "T_criticalExtensions_15", HFILL }},
+ { &hf_rrc_r10_01,
+ { "r10", "rrc.r10",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_14", HFILL }},
+ "T_r10_01", HFILL }},
+ { &hf_rrc_cellUpdateConfirm_r10,
+ { "cellUpdateConfirm-r10", "rrc.cellUpdateConfirm_r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CellUpdateConfirm_r10_IEs", HFILL }},
+ { &hf_rrc_cellUpdateConfirm_r10_add_ext,
+ { "cellUpdateConfirm-r10-add-ext", "rrc.cellUpdateConfirm_r10_add_ext",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_20,
+ { "nonCriticalExtensions", "rrc.nonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_nonCriticalExtensions_20", HFILL }},
+ { &hf_rrc_criticalExtensions_16,
+ { "criticalExtensions", "rrc.criticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_criticalExtensions_16", HFILL }},
{ &hf_rrc_integrityProtectionModeInfo,
{ "integrityProtectionModeInfo", "rrc.integrityProtectionModeInfo",
FT_NONE, BASE_NONE, NULL, 0,
@@ -124893,18 +133169,18 @@ void proto_register_rrc(void) {
{ "v7g0NonCriticalExtensions", "rrc.v7g0NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v7g0NonCriticalExtensions_04", HFILL }},
- { &hf_rrc_nonCriticalExtensions_19,
+ { &hf_rrc_nonCriticalExtensions_21,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_19", HFILL }},
+ "T_nonCriticalExtensions_21", HFILL }},
{ &hf_rrc_ul_EDCH_Information_02,
{ "ul-EDCH-Information", "rrc.ul_EDCH_Information",
FT_UINT32, BASE_DEC, VALS(rrc_UL_EDCH_Information_ext_vals), 0,
"UL_EDCH_Information_ext", HFILL }},
- { &hf_rrc_defaultConfigForCellFACH,
- { "defaultConfigForCellFACH", "rrc.defaultConfigForCellFACH",
+ { &hf_rrc_dummy_06,
+ { "dummy", "rrc.dummy",
FT_NONE, BASE_NONE, NULL, 0,
- NULL, HFILL }},
+ "DefaultConfigForCellFACH", HFILL }},
{ &hf_rrc_rab_InformationSetup,
{ "rab-InformationSetup", "rrc.rab_InformationSetup",
FT_NONE, BASE_NONE, NULL, 0,
@@ -124981,6 +133257,22 @@ void proto_register_rrc(void) {
{ "cellDCHMeasOccasionInfo-TDD128", "rrc.cellDCHMeasOccasionInfo_TDD128",
FT_NONE, BASE_NONE, NULL, 0,
"CellDCHMeasOccasionInfo_TDD128_r9", HFILL }},
+ { &hf_rrc_sr_vcc_Info,
+ { "sr-vcc-Info", "rrc.sr_vcc_Info",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_ul_MulticarrierEDCHInfo_TDD128,
+ { "ul-MulticarrierEDCHInfo-TDD128", "rrc.ul_MulticarrierEDCHInfo_TDD128",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_dl_CommonInformation_06,
+ { "dl-CommonInformation", "rrc.dl_CommonInformation",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "DL_CommonInformation_r10", HFILL }},
+ { &hf_rrc_mu_MIMO_Info_TDD128,
+ { "mu-MIMO-Info-TDD128", "rrc.mu_MIMO_Info_TDD128",
+ FT_UINT32, BASE_DEC, VALS(rrc_MU_MIMO_Info_TDD128_vals), 0,
+ NULL, HFILL }},
{ &hf_rrc_r3_05,
{ "r3", "rrc.r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -125009,18 +133301,18 @@ void proto_register_rrc(void) {
{ "v690NonCriticalExtensions", "rrc.v690NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v690NonCriticalExtensions_05", HFILL }},
- { &hf_rrc_nonCriticalExtensions_20,
+ { &hf_rrc_nonCriticalExtensions_22,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_20", HFILL }},
+ "T_nonCriticalExtensions_22", HFILL }},
{ &hf_rrc_later_than_r3_04,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
"T_later_than_r3_04", HFILL }},
- { &hf_rrc_criticalExtensions_15,
+ { &hf_rrc_criticalExtensions_17,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_15_vals), 0,
- "T_criticalExtensions_15", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_17_vals), 0,
+ "T_criticalExtensions_17", HFILL }},
{ &hf_rrc_r4_01,
{ "r4", "rrc.r4",
FT_NONE, BASE_NONE, NULL, 0,
@@ -125045,14 +133337,14 @@ void proto_register_rrc(void) {
{ "v690NonCriticalExtensions", "rrc.v690NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v690NonCriticalExtensions_06", HFILL }},
- { &hf_rrc_nonCriticalExtensions_21,
+ { &hf_rrc_nonCriticalExtensions_23,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_21", HFILL }},
- { &hf_rrc_criticalExtensions_16,
+ "T_nonCriticalExtensions_23", HFILL }},
+ { &hf_rrc_criticalExtensions_18,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_16_vals), 0,
- "T_criticalExtensions_16", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_18_vals), 0,
+ "T_criticalExtensions_18", HFILL }},
{ &hf_rrc_r5_01,
{ "r5", "rrc.r5",
FT_NONE, BASE_NONE, NULL, 0,
@@ -125069,14 +133361,14 @@ void proto_register_rrc(void) {
{ "v690NonCriticalExtensions", "rrc.v690NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v690NonCriticalExtensions_07", HFILL }},
- { &hf_rrc_nonCriticalExtensions_22,
+ { &hf_rrc_nonCriticalExtensions_24,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_22", HFILL }},
- { &hf_rrc_criticalExtensions_17,
+ "T_nonCriticalExtensions_24", HFILL }},
+ { &hf_rrc_criticalExtensions_19,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_17_vals), 0,
- "T_criticalExtensions_17", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_19_vals), 0,
+ "T_criticalExtensions_19", HFILL }},
{ &hf_rrc_r6_02,
{ "r6", "rrc.r6",
FT_NONE, BASE_NONE, NULL, 0,
@@ -125085,14 +133377,14 @@ void proto_register_rrc(void) {
{ "v6b0NonCriticalExtensions", "rrc.v6b0NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v6b0NonCriticalExtensions_03", HFILL }},
- { &hf_rrc_nonCriticalExtensions_23,
+ { &hf_rrc_nonCriticalExtensions_25,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_23", HFILL }},
- { &hf_rrc_criticalExtensions_18,
+ "T_nonCriticalExtensions_25", HFILL }},
+ { &hf_rrc_criticalExtensions_20,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_18_vals), 0,
- "T_criticalExtensions_18", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_20_vals), 0,
+ "T_criticalExtensions_20", HFILL }},
{ &hf_rrc_r7_02,
{ "r7", "rrc.r7",
FT_NONE, BASE_NONE, NULL, 0,
@@ -125109,14 +133401,14 @@ void proto_register_rrc(void) {
{ "v860NonCriticalExtensions", "rrc.v860NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v860NonCriticalExtensions_02", HFILL }},
- { &hf_rrc_nonCriticalExtensions_24,
+ { &hf_rrc_nonCriticalExtensions_26,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_24", HFILL }},
- { &hf_rrc_criticalExtensions_19,
+ "T_nonCriticalExtensions_26", HFILL }},
+ { &hf_rrc_criticalExtensions_21,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_19_vals), 0,
- "T_criticalExtensions_19", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_21_vals), 0,
+ "T_criticalExtensions_21", HFILL }},
{ &hf_rrc_r8_02,
{ "r8", "rrc.r8",
FT_NONE, BASE_NONE, NULL, 0,
@@ -125141,26 +133433,38 @@ void proto_register_rrc(void) {
{ "v7g0NonCriticalExtensions", "rrc.v7g0NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v7g0NonCriticalExtensions_05", HFILL }},
- { &hf_rrc_nonCriticalExtensions_25,
+ { &hf_rrc_nonCriticalExtensions_27,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_25", HFILL }},
- { &hf_rrc_criticalExtensions_20,
+ "T_nonCriticalExtensions_27", HFILL }},
+ { &hf_rrc_criticalExtensions_22,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_20_vals), 0,
- "T_criticalExtensions_20", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_22_vals), 0,
+ "T_criticalExtensions_22", HFILL }},
{ &hf_rrc_r9_02,
{ "r9", "rrc.r9",
FT_NONE, BASE_NONE, NULL, 0,
"T_r9_02", HFILL }},
- { &hf_rrc_nonCriticalExtensions_26,
+ { &hf_rrc_nonCriticalExtensions_28,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_26", HFILL }},
- { &hf_rrc_criticalExtensions_21,
+ "T_nonCriticalExtensions_28", HFILL }},
+ { &hf_rrc_criticalExtensions_23,
{ "criticalExtensions", "rrc.criticalExtensions",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_23_vals), 0,
+ "T_criticalExtensions_23", HFILL }},
+ { &hf_rrc_r10_02,
+ { "r10", "rrc.r10",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_21", HFILL }},
+ "T_r10_02", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_29,
+ { "nonCriticalExtensions", "rrc.nonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_nonCriticalExtensions_29", HFILL }},
+ { &hf_rrc_criticalExtensions_24,
+ { "criticalExtensions", "rrc.criticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_criticalExtensions_24", HFILL }},
{ &hf_rrc_r3_06,
{ "r3", "rrc.r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -125177,18 +133481,18 @@ void proto_register_rrc(void) {
{ "counterCheck-r3-add-ext", "rrc.counterCheck_r3_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_27,
+ { &hf_rrc_nonCriticalExtensions_30,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_27", HFILL }},
+ "T_nonCriticalExtensions_30", HFILL }},
{ &hf_rrc_later_than_r3_05,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
"T_later_than_r3_05", HFILL }},
- { &hf_rrc_criticalExtensions_22,
+ { &hf_rrc_criticalExtensions_25,
{ "criticalExtensions", "rrc.criticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_22", HFILL }},
+ "T_criticalExtensions_25", HFILL }},
{ &hf_rrc_rb_COUNT_C_MSB_InformationList,
{ "rb-COUNT-C-MSB-InformationList", "rrc.rb_COUNT_C_MSB_InformationList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -125205,10 +133509,10 @@ void proto_register_rrc(void) {
{ "counterCheckResponse-r3-add-ext", "rrc.counterCheckResponse_r3_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_28,
+ { &hf_rrc_nonCriticalExtensions_31,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_28", HFILL }},
+ "T_nonCriticalExtensions_31", HFILL }},
{ &hf_rrc_r3_07,
{ "r3", "rrc.r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -125225,18 +133529,18 @@ void proto_register_rrc(void) {
{ "downlinkDirectTransfer-r3-add-ext", "rrc.downlinkDirectTransfer_r3_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_29,
+ { &hf_rrc_nonCriticalExtensions_32,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_29", HFILL }},
+ "T_nonCriticalExtensions_32", HFILL }},
{ &hf_rrc_later_than_r3_06,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
"T_later_than_r3_06", HFILL }},
- { &hf_rrc_criticalExtensions_23,
+ { &hf_rrc_criticalExtensions_26,
{ "criticalExtensions", "rrc.criticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_23", HFILL }},
+ "T_criticalExtensions_26", HFILL }},
{ &hf_rrc_cn_DomainIdentity,
{ "cn-DomainIdentity", "rrc.cn_DomainIdentity",
FT_UINT32, BASE_DEC, VALS(rrc_CN_DomainIdentity_vals), 0,
@@ -125253,10 +133557,10 @@ void proto_register_rrc(void) {
{ "etws-WarningSecurityInfo", "rrc.etws_WarningSecurityInfo",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_nonCriticalExtensions_30,
+ { &hf_rrc_nonCriticalExtensions_33,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_30", HFILL }},
+ "T_nonCriticalExtensions_33", HFILL }},
{ &hf_rrc_r3_08,
{ "r3", "rrc.r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -125265,14 +133569,14 @@ void proto_register_rrc(void) {
{ "handoverToUTRANCommand-r3", "rrc.handoverToUTRANCommand_r3",
FT_NONE, BASE_NONE, NULL, 0,
"HandoverToUTRANCommand_r3_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_31,
+ { &hf_rrc_nonCriticalExtensions_34,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_31", HFILL }},
- { &hf_rrc_criticalExtensions_24,
+ "T_nonCriticalExtensions_34", HFILL }},
+ { &hf_rrc_criticalExtensions_27,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_24_vals), 0,
- "T_criticalExtensions_24", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_27_vals), 0,
+ "T_criticalExtensions_27", HFILL }},
{ &hf_rrc_r4_02,
{ "r4", "rrc.r4",
FT_NONE, BASE_NONE, NULL, 0,
@@ -125281,14 +133585,14 @@ void proto_register_rrc(void) {
{ "handoverToUTRANCommand-r4", "rrc.handoverToUTRANCommand_r4",
FT_NONE, BASE_NONE, NULL, 0,
"HandoverToUTRANCommand_r4_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_32,
+ { &hf_rrc_nonCriticalExtensions_35,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_32", HFILL }},
- { &hf_rrc_criticalExtensions_25,
+ "T_nonCriticalExtensions_35", HFILL }},
+ { &hf_rrc_criticalExtensions_28,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_25_vals), 0,
- "T_criticalExtensions_25", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_28_vals), 0,
+ "T_criticalExtensions_28", HFILL }},
{ &hf_rrc_r5_02,
{ "r5", "rrc.r5",
FT_NONE, BASE_NONE, NULL, 0,
@@ -125297,14 +133601,14 @@ void proto_register_rrc(void) {
{ "handoverToUTRANCommand-r5", "rrc.handoverToUTRANCommand_r5",
FT_NONE, BASE_NONE, NULL, 0,
"HandoverToUTRANCommand_r5_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_33,
+ { &hf_rrc_nonCriticalExtensions_36,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_33", HFILL }},
- { &hf_rrc_criticalExtensions_26,
+ "T_nonCriticalExtensions_36", HFILL }},
+ { &hf_rrc_criticalExtensions_29,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_26_vals), 0,
- "T_criticalExtensions_26", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_29_vals), 0,
+ "T_criticalExtensions_29", HFILL }},
{ &hf_rrc_r6_03,
{ "r6", "rrc.r6",
FT_NONE, BASE_NONE, NULL, 0,
@@ -125321,14 +133625,14 @@ void proto_register_rrc(void) {
{ "handoverToUTRANCommand-v6b0ext", "rrc.handoverToUTRANCommand_v6b0ext",
FT_NONE, BASE_NONE, NULL, 0,
"HandoverToUTRANCommand_v6b0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_34,
+ { &hf_rrc_nonCriticalExtensions_37,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_34", HFILL }},
- { &hf_rrc_criticalExtensions_27,
+ "T_nonCriticalExtensions_37", HFILL }},
+ { &hf_rrc_criticalExtensions_30,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_27_vals), 0,
- "T_criticalExtensions_27", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_30_vals), 0,
+ "T_criticalExtensions_30", HFILL }},
{ &hf_rrc_r7_03,
{ "r7", "rrc.r7",
FT_NONE, BASE_NONE, NULL, 0,
@@ -125361,14 +133665,14 @@ void proto_register_rrc(void) {
{ "handoverToUTRANCommand-v7d0ext", "rrc.handoverToUTRANCommand_v7d0ext",
FT_NONE, BASE_NONE, NULL, 0,
"HandoverToUTRANCommand_v7d0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_35,
+ { &hf_rrc_nonCriticalExtensions_38,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_35", HFILL }},
- { &hf_rrc_criticalExtensions_28,
+ "T_nonCriticalExtensions_38", HFILL }},
+ { &hf_rrc_criticalExtensions_31,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_28_vals), 0,
- "T_criticalExtensions_28", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_31_vals), 0,
+ "T_criticalExtensions_31", HFILL }},
{ &hf_rrc_r8_03,
{ "r8", "rrc.r8",
FT_NONE, BASE_NONE, NULL, 0,
@@ -125397,14 +133701,14 @@ void proto_register_rrc(void) {
{ "handoverToUTRANCommand-v8a0ext", "rrc.handoverToUTRANCommand_v8a0ext",
FT_NONE, BASE_NONE, NULL, 0,
"HandoverToUTRANCommand_v8a0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_36,
+ { &hf_rrc_nonCriticalExtensions_39,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_36", HFILL }},
- { &hf_rrc_criticalExtensions_29,
+ "T_nonCriticalExtensions_39", HFILL }},
+ { &hf_rrc_criticalExtensions_32,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_29_vals), 0,
- "T_criticalExtensions_29", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_32_vals), 0,
+ "T_criticalExtensions_32", HFILL }},
{ &hf_rrc_r9_03,
{ "r9", "rrc.r9",
FT_NONE, BASE_NONE, NULL, 0,
@@ -125413,19 +133717,35 @@ void proto_register_rrc(void) {
{ "handoverToUTRANCommand-r9", "rrc.handoverToUTRANCommand_r9",
FT_NONE, BASE_NONE, NULL, 0,
"HandoverToUTRANCommand_r9_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_37,
+ { &hf_rrc_nonCriticalExtensions_40,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_37", HFILL }},
- { &hf_rrc_criticalExtensions_30,
+ "T_nonCriticalExtensions_40", HFILL }},
+ { &hf_rrc_criticalExtensions_33,
{ "criticalExtensions", "rrc.criticalExtensions",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_33_vals), 0,
+ "T_criticalExtensions_33", HFILL }},
+ { &hf_rrc_r10_03,
+ { "r10", "rrc.r10",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_30", HFILL }},
+ "T_r10_03", HFILL }},
+ { &hf_rrc_handoverToUTRANCommand_r10,
+ { "handoverToUTRANCommand-r10", "rrc.handoverToUTRANCommand_r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "HandoverToUTRANCommand_r10_IEs", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_41,
+ { "nonCriticalExtensions", "rrc.nonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_nonCriticalExtensions_41", HFILL }},
+ { &hf_rrc_criticalExtensions_34,
+ { "criticalExtensions", "rrc.criticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_criticalExtensions_34", HFILL }},
{ &hf_rrc_new_U_RNTI_01,
{ "new-U-RNTI", "rrc.new_U_RNTI",
FT_NONE, BASE_NONE, NULL, 0,
"U_RNTI_Short", HFILL }},
- { &hf_rrc_dummy_06,
+ { &hf_rrc_dummy_07,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, NULL, 0,
"ActivationTime", HFILL }},
@@ -125813,8 +134133,8 @@ void proto_register_rrc(void) {
{ "defaultConfig", "rrc.defaultConfig",
FT_NONE, BASE_NONE, NULL, 0,
"T_defaultConfig_05", HFILL }},
- { &hf_rrc_dlul_HSPA_Information,
- { "dlul-HSPA-Information", "rrc.dlul_HSPA_Information",
+ { &hf_rrc_dummy_08,
+ { "dummy", "rrc.dummy",
FT_NONE, BASE_NONE, NULL, 0,
"DLUL_HSPA_Information_r8", HFILL }},
{ &hf_rrc_modeSpecificInfo_08,
@@ -125845,6 +134165,10 @@ void proto_register_rrc(void) {
{ "rab-InformationSetupList", "rrc.rab_InformationSetupList",
FT_UINT32, BASE_DEC, NULL, 0,
"RAB_InformationSetupList_v820ext", HFILL }},
+ { &hf_rrc_defaultConfigForCellFACH,
+ { "defaultConfigForCellFACH", "rrc.defaultConfigForCellFACH",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_rrc_specificationMode_06,
{ "specificationMode", "rrc.specificationMode",
FT_UINT32, BASE_DEC, VALS(rrc_T_specificationMode_06_vals), 0,
@@ -125865,8 +134189,8 @@ void proto_register_rrc(void) {
{ "defaultConfig", "rrc.defaultConfig",
FT_NONE, BASE_NONE, NULL, 0,
"T_defaultConfig_06", HFILL }},
- { &hf_rrc_dlul_HSPA_Information_01,
- { "dlul-HSPA-Information", "rrc.dlul_HSPA_Information",
+ { &hf_rrc_dummy_09,
+ { "dummy", "rrc.dummy",
FT_NONE, BASE_NONE, NULL, 0,
"DLUL_HSPA_Information_r9", HFILL }},
{ &hf_rrc_modeSpecificInfo_09,
@@ -125893,6 +134217,54 @@ void proto_register_rrc(void) {
{ "tdd768", "rrc.tdd768",
FT_NONE, BASE_NONE, NULL, 0,
"T_tdd768_02", HFILL }},
+ { &hf_rrc_specificationMode_07,
+ { "specificationMode", "rrc.specificationMode",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_specificationMode_07_vals), 0,
+ "T_specificationMode_07", HFILL }},
+ { &hf_rrc_complete_07,
+ { "complete", "rrc.complete",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_complete_07", HFILL }},
+ { &hf_rrc_preconfiguration_07,
+ { "preconfiguration", "rrc.preconfiguration",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_preconfiguration_07", HFILL }},
+ { &hf_rrc_preConfigMode_07,
+ { "preConfigMode", "rrc.preConfigMode",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_preConfigMode_07_vals), 0,
+ "T_preConfigMode_07", HFILL }},
+ { &hf_rrc_defaultConfig_07,
+ { "defaultConfig", "rrc.defaultConfig",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_defaultConfig_07", HFILL }},
+ { &hf_rrc_dummy_10,
+ { "dummy", "rrc.dummy",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "DLUL_HSPA_Information_r10", HFILL }},
+ { &hf_rrc_modeSpecificInfo_10,
+ { "modeSpecificInfo", "rrc.modeSpecificInfo",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_10_vals), 0,
+ "T_modeSpecificInfo_10", HFILL }},
+ { &hf_rrc_fdd_16,
+ { "fdd", "rrc.fdd",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_fdd_16", HFILL }},
+ { &hf_rrc_tdd_08,
+ { "tdd", "rrc.tdd",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_07_vals), 0,
+ "T_tdd_07", HFILL }},
+ { &hf_rrc_tdd384_06,
+ { "tdd384", "rrc.tdd384",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_tdd384_06", HFILL }},
+ { &hf_rrc_tdd128_06,
+ { "tdd128", "rrc.tdd128",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_tdd128_06", HFILL }},
+ { &hf_rrc_tdd768_03,
+ { "tdd768", "rrc.tdd768",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_tdd768_03", HFILL }},
{ &hf_rrc_count_C_ActivationTime,
{ "count-C-ActivationTime", "rrc.count_C_ActivationTime",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -125905,10 +134277,22 @@ void proto_register_rrc(void) {
{ "handoverToUTRANComplete-r3-add-ext", "rrc.handoverToUTRANComplete_r3_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_38,
+ { &hf_rrc_va40NonCriticalExtensions_01,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_va40NonCriticalExtensions_01", HFILL }},
+ { &hf_rrc_handoverToUTRANComplete_va40ext,
+ { "handoverToUTRANComplete-va40ext", "rrc.handoverToUTRANComplete_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_nonCriticalExtensions_42,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_38", HFILL }},
+ "T_nonCriticalExtensions_42", HFILL }},
+ { &hf_rrc_loggedMeasAvailable_01,
+ { "loggedMeasAvailable", "rrc.loggedMeasAvailable",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_loggedMeasAvailable_01_vals), 0,
+ "T_loggedMeasAvailable_01", HFILL }},
{ &hf_rrc_intraDomainNasNodeSelector,
{ "intraDomainNasNodeSelector", "rrc.intraDomainNasNodeSelector",
FT_NONE, BASE_NONE, NULL, 0,
@@ -125961,10 +134345,10 @@ void proto_register_rrc(void) {
{ "initialDirectTransfer-v860ext", "rrc.initialDirectTransfer_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
"InitialDirectTransfer_v860ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_39,
+ { &hf_rrc_nonCriticalExtensions_43,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_39", HFILL }},
+ "T_nonCriticalExtensions_43", HFILL }},
{ &hf_rrc_start_Value,
{ "start-Value", "rrc.start_Value",
FT_BYTES, BASE_NONE, NULL, 0,
@@ -125989,10 +134373,10 @@ void proto_register_rrc(void) {
{ "initialDirectTransfer-v7g0ext", "rrc.initialDirectTransfer_v7g0ext",
FT_NONE, BASE_NONE, NULL, 0,
"InitialDirectTransfer_v7g0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_40,
+ { &hf_rrc_nonCriticalExtensions_44,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_40", HFILL }},
+ "T_nonCriticalExtensions_44", HFILL }},
{ &hf_rrc_r3_09,
{ "r3", "rrc.r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -126025,18 +134409,18 @@ void proto_register_rrc(void) {
{ "handoverFromUTRANCommand-GSM-v860ext", "rrc.handoverFromUTRANCommand_GSM_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
"HandoverFromUTRANCommand_GSM_v860ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_41,
+ { &hf_rrc_nonCriticalExtensions_45,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_41", HFILL }},
+ "T_nonCriticalExtensions_45", HFILL }},
{ &hf_rrc_later_than_r3_07,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
"T_later_than_r3_07", HFILL }},
- { &hf_rrc_criticalExtensions_31,
+ { &hf_rrc_criticalExtensions_35,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_31_vals), 0,
- "T_criticalExtensions_31", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_35_vals), 0,
+ "T_criticalExtensions_35", HFILL }},
{ &hf_rrc_r6_04,
{ "r6", "rrc.r6",
FT_NONE, BASE_NONE, NULL, 0,
@@ -126053,14 +134437,14 @@ void proto_register_rrc(void) {
{ "v860NonCriticalExtensions", "rrc.v860NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v860NonCriticalExtensions_05", HFILL }},
- { &hf_rrc_nonCriticalExtensions_42,
+ { &hf_rrc_nonCriticalExtensions_46,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_42", HFILL }},
- { &hf_rrc_criticalExtensions_32,
+ "T_nonCriticalExtensions_46", HFILL }},
+ { &hf_rrc_criticalExtensions_36,
{ "criticalExtensions", "rrc.criticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_32", HFILL }},
+ "T_criticalExtensions_36", HFILL }},
{ &hf_rrc_toHandoverRAB_Info,
{ "toHandoverRAB-Info", "rrc.toHandoverRAB_Info",
FT_NONE, BASE_NONE, NULL, 0,
@@ -126125,18 +134509,18 @@ void proto_register_rrc(void) {
{ "handoverFromUTRANCommand-GERANIu-r5", "rrc.handoverFromUTRANCommand_GERANIu_r5",
FT_NONE, BASE_NONE, NULL, 0,
"HandoverFromUTRANCommand_GERANIu_r5_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_43,
+ { &hf_rrc_nonCriticalExtensions_47,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_43", HFILL }},
+ "T_nonCriticalExtensions_47", HFILL }},
{ &hf_rrc_later_than_r5,
{ "later-than-r5", "rrc.later_than_r5",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_criticalExtensions_33,
+ { &hf_rrc_criticalExtensions_37,
{ "criticalExtensions", "rrc.criticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_33", HFILL }},
+ "T_criticalExtensions_37", HFILL }},
{ &hf_rrc_frequency_Band,
{ "frequency-Band", "rrc.frequency_Band",
FT_UINT32, BASE_DEC, VALS(rrc_Frequency_Band_vals), 0,
@@ -126173,26 +134557,26 @@ void proto_register_rrc(void) {
{ "handoverFromUTRANCommand-CDMA2000-r3-add-ext", "rrc.handoverFromUTRANCommand_CDMA2000_r3_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_44,
+ { &hf_rrc_nonCriticalExtensions_48,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_44", HFILL }},
+ "T_nonCriticalExtensions_48", HFILL }},
{ &hf_rrc_later_than_r3_08,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
"T_later_than_r3_08", HFILL }},
- { &hf_rrc_criticalExtensions_34,
+ { &hf_rrc_criticalExtensions_38,
{ "criticalExtensions", "rrc.criticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_34", HFILL }},
+ "T_criticalExtensions_38", HFILL }},
{ &hf_rrc_cdma2000_MessageList,
{ "cdma2000-MessageList", "rrc.cdma2000_MessageList",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_criticalExtensions_35,
+ { &hf_rrc_criticalExtensions_39,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_35_vals), 0,
- "T_criticalExtensions_35", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_39_vals), 0,
+ "T_criticalExtensions_39", HFILL }},
{ &hf_rrc_r8_04,
{ "r8", "rrc.r8",
FT_NONE, BASE_NONE, NULL, 0,
@@ -126205,14 +134589,14 @@ void proto_register_rrc(void) {
{ "handoverFromUTRANCommand-EUTRA-r8-add-ext", "rrc.handoverFromUTRANCommand_EUTRA_r8_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_45,
+ { &hf_rrc_nonCriticalExtensions_49,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_45", HFILL }},
- { &hf_rrc_criticalExtensions_36,
+ "T_nonCriticalExtensions_49", HFILL }},
+ { &hf_rrc_criticalExtensions_40,
{ "criticalExtensions", "rrc.criticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_36", HFILL }},
+ "T_criticalExtensions_40", HFILL }},
{ &hf_rrc_toHandoverRAB_Info_02,
{ "toHandoverRAB-Info", "rrc.toHandoverRAB_Info",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -126265,10 +134649,10 @@ void proto_register_rrc(void) {
{ "handoverFromUTRANFailure-v860ext", "rrc.handoverFromUTRANFailure_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
"HandoverFromUtranFailure_v860ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_46,
+ { &hf_rrc_nonCriticalExtensions_50,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_46", HFILL }},
+ "T_nonCriticalExtensions_50", HFILL }},
{ &hf_rrc_geranIu_MessageList_01,
{ "geranIu-MessageList", "rrc.geranIu_MessageList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -126421,10 +134805,18 @@ void proto_register_rrc(void) {
{ "interRATHandoverInfo-v7f0ext", "rrc.interRATHandoverInfo_v7f0ext",
FT_NONE, BASE_NONE, NULL, 0,
"InterRATHandoverInfo_v7f0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_47,
+ { &hf_rrc_va40NonCriticalExtensions_02,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_va40NonCriticalExtensions_02", HFILL }},
+ { &hf_rrc_interRATHandoverInfo_va40ext,
+ { "interRATHandoverInfo-va40ext", "rrc.interRATHandoverInfo_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "InterRATHandoverInfoBand_va40ext_IEs", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_51,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_47", HFILL }},
+ "T_nonCriticalExtensions_51", HFILL }},
{ &hf_rrc_accessStratumReleaseIndicator,
{ "accessStratumReleaseIndicator", "rrc.accessStratumReleaseIndicator",
FT_UINT32, BASE_DEC, VALS(rrc_AccessStratumReleaseIndicator_vals), 0,
@@ -126525,10 +134917,18 @@ void proto_register_rrc(void) {
{ "interRATHandoverInfo-v950ext", "rrc.interRATHandoverInfo_v950ext",
FT_NONE, BASE_NONE, NULL, 0,
"InterRATHandoverInfo_v950ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_48,
+ { &hf_rrc_va40NonCriticalExtensions_03,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_va40NonCriticalExtensions_03", HFILL }},
+ { &hf_rrc_interRATHandoverInfo_va40ext_01,
+ { "interRATHandoverInfo-va40ext", "rrc.interRATHandoverInfo_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "InterRATHandoverInfo_va40ext_IEs", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_52,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_48", HFILL }},
+ "T_nonCriticalExtensions_52", HFILL }},
{ &hf_rrc_supportForSIB11bis,
{ "supportForSIB11bis", "rrc.supportForSIB11bis",
FT_UINT32, BASE_DEC, VALS(rrc_T_supportForSIB11bis_vals), 0,
@@ -126597,6 +134997,22 @@ void proto_register_rrc(void) {
{ "pdcp-Capability", "rrc.pdcp_Capability",
FT_NONE, BASE_NONE, NULL, 0,
"PDCP_Capability_r4_ext", HFILL }},
+ { &hf_rrc_ue_RadioAccessCapabilityInfo_05,
+ { "ue-RadioAccessCapabilityInfo", "rrc.ue_RadioAccessCapabilityInfo",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UE_RadioAccessCapability_va40ext", HFILL }},
+ { &hf_rrc_ue_RadioAccessCapabilityComp2_05,
+ { "ue-RadioAccessCapabilityComp2", "rrc.ue_RadioAccessCapabilityComp2",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UE_RadioAccessCapabilityComp2_va40ext", HFILL }},
+ { &hf_rrc_ue_RadioAccessCapabBand,
+ { "ue-RadioAccessCapabBand", "rrc.ue_RadioAccessCapabBand",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UE_RadioAccessCapabBand_va40ext", HFILL }},
+ { &hf_rrc_rf_CapabilityFDDComp,
+ { "rf-CapabilityFDDComp", "rrc.rf_CapabilityFDDComp",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "RF_CapabBandListFDDComp_ext2", HFILL }},
{ &hf_rrc_r3_11,
{ "r3", "rrc.r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -126649,18 +135065,18 @@ void proto_register_rrc(void) {
{ "measurementControl-v5b0ext", "rrc.measurementControl_v5b0ext",
FT_NONE, BASE_NONE, NULL, 0,
"MeasurementControl_v5b0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_49,
+ { &hf_rrc_nonCriticalExtensions_53,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_49", HFILL }},
+ "T_nonCriticalExtensions_53", HFILL }},
{ &hf_rrc_later_than_r3_09,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
"T_later_than_r3_09", HFILL }},
- { &hf_rrc_criticalExtensions_37,
+ { &hf_rrc_criticalExtensions_41,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_37_vals), 0,
- "T_criticalExtensions_37", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_41_vals), 0,
+ "T_criticalExtensions_41", HFILL }},
{ &hf_rrc_r4_03,
{ "r4", "rrc.r4",
FT_NONE, BASE_NONE, NULL, 0,
@@ -126685,10 +135101,10 @@ void proto_register_rrc(void) {
{ "v5b0NonCriticalExtensions", "rrc.v5b0NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v5b0NonCriticalExtensions_01", HFILL }},
- { &hf_rrc_nonCriticalExtensions_50,
+ { &hf_rrc_nonCriticalExtensions_54,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_50", HFILL }},
+ "T_nonCriticalExtensions_54", HFILL }},
{ &hf_rrc_later_than_r4,
{ "later-than-r4", "rrc.later_than_r4",
FT_NONE, BASE_NONE, NULL, 0,
@@ -126697,10 +135113,10 @@ void proto_register_rrc(void) {
{ "rrc-TransactionIdentifier-MSP", "rrc.rrc_TransactionIdentifier_MSP",
FT_UINT32, BASE_DEC, NULL, 0,
"RRC_TransactionIdentifier", HFILL }},
- { &hf_rrc_criticalExtensions_38,
+ { &hf_rrc_criticalExtensions_42,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_38_vals), 0,
- "T_criticalExtensions_38", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_42_vals), 0,
+ "T_criticalExtensions_42", HFILL }},
{ &hf_rrc_r6_05,
{ "r6", "rrc.r6",
FT_NONE, BASE_NONE, NULL, 0,
@@ -126717,14 +135133,14 @@ void proto_register_rrc(void) {
{ "measurementControl-v6a0ext", "rrc.measurementControl_v6a0ext",
FT_NONE, BASE_NONE, NULL, 0,
"MeasurementControl_v6a0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_51,
+ { &hf_rrc_nonCriticalExtensions_55,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_51", HFILL }},
- { &hf_rrc_criticalExtensions_39,
+ "T_nonCriticalExtensions_55", HFILL }},
+ { &hf_rrc_criticalExtensions_43,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_39_vals), 0,
- "T_criticalExtensions_39", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_43_vals), 0,
+ "T_criticalExtensions_43", HFILL }},
{ &hf_rrc_r7_04,
{ "r7", "rrc.r7",
FT_NONE, BASE_NONE, NULL, 0,
@@ -126745,14 +135161,14 @@ void proto_register_rrc(void) {
{ "measurementControl-v7b0ext", "rrc.measurementControl_v7b0ext",
FT_NONE, BASE_NONE, NULL, 0,
"MeasurementControl_v7b0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_52,
+ { &hf_rrc_nonCriticalExtensions_56,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_52", HFILL }},
- { &hf_rrc_criticalExtensions_40,
+ "T_nonCriticalExtensions_56", HFILL }},
+ { &hf_rrc_criticalExtensions_44,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_40_vals), 0,
- "T_criticalExtensions_40", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_44_vals), 0,
+ "T_criticalExtensions_44", HFILL }},
{ &hf_rrc_r8_05,
{ "r8", "rrc.r8",
FT_NONE, BASE_NONE, NULL, 0,
@@ -126773,14 +135189,14 @@ void proto_register_rrc(void) {
{ "measurementControl-v8a0ext", "rrc.measurementControl_v8a0ext",
FT_NONE, BASE_NONE, NULL, 0,
"MeasurementControl_v8a0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_53,
+ { &hf_rrc_nonCriticalExtensions_57,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_53", HFILL }},
- { &hf_rrc_criticalExtensions_41,
+ "T_nonCriticalExtensions_57", HFILL }},
+ { &hf_rrc_criticalExtensions_45,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_41_vals), 0,
- "T_criticalExtensions_41", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_45_vals), 0,
+ "T_criticalExtensions_45", HFILL }},
{ &hf_rrc_r9_04,
{ "r9", "rrc.r9",
FT_NONE, BASE_NONE, NULL, 0,
@@ -126801,14 +135217,34 @@ void proto_register_rrc(void) {
{ "measurementControl-v970ext", "rrc.measurementControl_v970ext",
FT_NONE, BASE_NONE, NULL, 0,
"MeasurementControl_v970ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_54,
+ { &hf_rrc_nonCriticalExtensions_58,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_54", HFILL }},
- { &hf_rrc_criticalExtensions_42,
+ "T_nonCriticalExtensions_58", HFILL }},
+ { &hf_rrc_criticalExtensions_46,
{ "criticalExtensions", "rrc.criticalExtensions",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_46_vals), 0,
+ "T_criticalExtensions_46", HFILL }},
+ { &hf_rrc_r10_04,
+ { "r10", "rrc.r10",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_42", HFILL }},
+ "T_r10_04", HFILL }},
+ { &hf_rrc_measurementControl_r10,
+ { "measurementControl-r10", "rrc.measurementControl_r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MeasurementControl_r10_IEs", HFILL }},
+ { &hf_rrc_measurementControl_r10_add_ext,
+ { "measurementControl-r10-add-ext", "rrc.measurementControl_r10_add_ext",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_59,
+ { "nonCriticalExtensions", "rrc.nonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_nonCriticalExtensions_59", HFILL }},
+ { &hf_rrc_criticalExtensions_47,
+ { "criticalExtensions", "rrc.criticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_criticalExtensions_47", HFILL }},
{ &hf_rrc_measurementIdentity,
{ "measurementIdentity", "rrc.measurementIdentity",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -126901,6 +135337,14 @@ void proto_register_rrc(void) {
{ "additionalMeasurementList", "rrc.additionalMeasurementList",
FT_UINT32, BASE_DEC, NULL, 0,
"AdditionalMeasurementID_List_r9", HFILL }},
+ { &hf_rrc_measurementCommand_06,
+ { "measurementCommand", "rrc.measurementCommand",
+ FT_UINT32, BASE_DEC, VALS(rrc_MeasurementCommand_r10_vals), 0,
+ "MeasurementCommand_r10", HFILL }},
+ { &hf_rrc_dpch_CompressedModeStatusInfo_01,
+ { "dpch-CompressedModeStatusInfo", "rrc.dpch_CompressedModeStatusInfo",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "DPCH_CompressedModeStatusInfo_r10", HFILL }},
{ &hf_rrc_laterNonCriticalExtensions_19,
{ "laterNonCriticalExtensions", "rrc.laterNonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
@@ -126917,10 +135361,10 @@ void proto_register_rrc(void) {
{ "measurementControlFailure-v590ext", "rrc.measurementControlFailure_v590ext",
FT_NONE, BASE_NONE, NULL, 0,
"MeasurementControlFailure_v590ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_55,
+ { &hf_rrc_nonCriticalExtensions_60,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_55", HFILL }},
+ "T_nonCriticalExtensions_60", HFILL }},
{ &hf_rrc_measuredResults,
{ "measuredResults", "rrc.measuredResults",
FT_UINT32, BASE_DEC, VALS(rrc_MeasuredResults_vals), 0,
@@ -127013,10 +135457,18 @@ void proto_register_rrc(void) {
{ "measurementReport-v970ext-IE", "rrc.measurementReport_v970ext_IE",
FT_NONE, BASE_NONE, NULL, 0,
"MeasurementReport_v970ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_56,
+ { &hf_rrc_va40NonCriticalExtensions_04,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_va40NonCriticalExtensions_04", HFILL }},
+ { &hf_rrc_measurementReport_va40ext,
+ { "measurementReport-va40ext", "rrc.measurementReport_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MeasurementReport_va40ext_IEs", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_61,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_56", HFILL }},
+ "T_nonCriticalExtensions_61", HFILL }},
{ &hf_rrc_measuredResults_v390ext,
{ "measuredResults-v390ext", "rrc.measuredResults_v390ext",
FT_NONE, BASE_NONE, NULL, 0,
@@ -127029,7 +135481,7 @@ void proto_register_rrc(void) {
{ "additionalMeasuredResults-LCR", "rrc.additionalMeasuredResults_LCR",
FT_UINT32, BASE_DEC, NULL, 0,
"MeasuredResultsList_LCR_r4_ext", HFILL }},
- { &hf_rrc_dummy_07,
+ { &hf_rrc_dummy_11,
{ "dummy", "rrc.dummy",
FT_NONE, BASE_NONE, NULL, 0,
"PrimaryCPICH_Info", HFILL }},
@@ -127105,6 +135557,18 @@ void proto_register_rrc(void) {
{ "measurementIdentity", "rrc.measurementIdentity",
FT_UINT32, BASE_DEC, NULL, 0,
"MeasurementIdentityExt", HFILL }},
+ { &hf_rrc_eventResults_03,
+ { "eventResults", "rrc.eventResults",
+ FT_UINT32, BASE_DEC, VALS(rrc_EventResults_va40ext_vals), 0,
+ "EventResults_va40ext", HFILL }},
+ { &hf_rrc_loggedMeasAvailable_02,
+ { "loggedMeasAvailable", "rrc.loggedMeasAvailable",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_loggedMeasAvailable_02_vals), 0,
+ "T_loggedMeasAvailable_02", HFILL }},
+ { &hf_rrc_loggedANRResultsAvailable_01,
+ { "loggedANRResultsAvailable", "rrc.loggedANRResultsAvailable",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_loggedANRResultsAvailable_01_vals), 0,
+ "T_loggedANRResultsAvailable_01", HFILL }},
{ &hf_rrc_pagingRecordList,
{ "pagingRecordList", "rrc.pagingRecordList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -127137,10 +135601,10 @@ void proto_register_rrc(void) {
{ "pagingType1-v860ext", "rrc.pagingType1_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
"PagingType1_v860ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_57,
+ { &hf_rrc_nonCriticalExtensions_62,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_57", HFILL }},
+ "T_nonCriticalExtensions_62", HFILL }},
{ &hf_rrc_pagingRecord2List,
{ "pagingRecord2List", "rrc.pagingRecord2List",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -127161,10 +135625,10 @@ void proto_register_rrc(void) {
{ "pagingType2-r3-add-ext", "rrc.pagingType2_r3_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_58,
+ { &hf_rrc_nonCriticalExtensions_63,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_58", HFILL }},
+ "T_nonCriticalExtensions_63", HFILL }},
{ &hf_rrc_r3_12,
{ "r3", "rrc.r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -127221,18 +135685,18 @@ void proto_register_rrc(void) {
{ "physicalChannelReconfiguration-v770ext", "rrc.physicalChannelReconfiguration_v770ext",
FT_NONE, BASE_NONE, NULL, 0,
"PhysicalChannelReconfiguration_v770ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_59,
+ { &hf_rrc_nonCriticalExtensions_64,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_59", HFILL }},
+ "T_nonCriticalExtensions_64", HFILL }},
{ &hf_rrc_later_than_r3_10,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
"T_later_than_r3_10", HFILL }},
- { &hf_rrc_criticalExtensions_43,
+ { &hf_rrc_criticalExtensions_48,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_43_vals), 0,
- "T_criticalExtensions_43", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_48_vals), 0,
+ "T_criticalExtensions_48", HFILL }},
{ &hf_rrc_r4_04,
{ "r4", "rrc.r4",
FT_NONE, BASE_NONE, NULL, 0,
@@ -127261,14 +135725,14 @@ void proto_register_rrc(void) {
{ "v770NonCriticalExtensions", "rrc.v770NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v770NonCriticalExtensions_05", HFILL }},
- { &hf_rrc_nonCriticalExtensions_60,
+ { &hf_rrc_nonCriticalExtensions_65,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_60", HFILL }},
- { &hf_rrc_criticalExtensions_44,
+ "T_nonCriticalExtensions_65", HFILL }},
+ { &hf_rrc_criticalExtensions_49,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_44_vals), 0,
- "T_criticalExtensions_44", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_49_vals), 0,
+ "T_criticalExtensions_49", HFILL }},
{ &hf_rrc_r5_04,
{ "r5", "rrc.r5",
FT_NONE, BASE_NONE, NULL, 0,
@@ -127289,14 +135753,14 @@ void proto_register_rrc(void) {
{ "v770NonCriticalExtensions", "rrc.v770NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v770NonCriticalExtensions_06", HFILL }},
- { &hf_rrc_nonCriticalExtensions_61,
+ { &hf_rrc_nonCriticalExtensions_66,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_61", HFILL }},
- { &hf_rrc_criticalExtensions_45,
+ "T_nonCriticalExtensions_66", HFILL }},
+ { &hf_rrc_criticalExtensions_50,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_45_vals), 0,
- "T_criticalExtensions_45", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_50_vals), 0,
+ "T_criticalExtensions_50", HFILL }},
{ &hf_rrc_r6_06,
{ "r6", "rrc.r6",
FT_NONE, BASE_NONE, NULL, 0,
@@ -127321,14 +135785,14 @@ void proto_register_rrc(void) {
{ "v770NonCriticalExtensions", "rrc.v770NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v770NonCriticalExtensions_07", HFILL }},
- { &hf_rrc_nonCriticalExtensions_62,
+ { &hf_rrc_nonCriticalExtensions_67,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_62", HFILL }},
- { &hf_rrc_criticalExtensions_46,
+ "T_nonCriticalExtensions_67", HFILL }},
+ { &hf_rrc_criticalExtensions_51,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_46_vals), 0,
- "T_criticalExtensions_46", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_51_vals), 0,
+ "T_criticalExtensions_51", HFILL }},
{ &hf_rrc_r7_05,
{ "r7", "rrc.r7",
FT_NONE, BASE_NONE, NULL, 0,
@@ -127373,14 +135837,14 @@ void proto_register_rrc(void) {
{ "physicalChannelReconfiguration-v7g0ext", "rrc.physicalChannelReconfiguration_v7g0ext",
FT_NONE, BASE_NONE, NULL, 0,
"PhysicalChannelReconfiguration_v7g0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_63,
+ { &hf_rrc_nonCriticalExtensions_68,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_63", HFILL }},
- { &hf_rrc_criticalExtensions_47,
+ "T_nonCriticalExtensions_68", HFILL }},
+ { &hf_rrc_criticalExtensions_52,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_47_vals), 0,
- "T_criticalExtensions_47", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_52_vals), 0,
+ "T_criticalExtensions_52", HFILL }},
{ &hf_rrc_r8_06,
{ "r8", "rrc.r8",
FT_NONE, BASE_NONE, NULL, 0,
@@ -127421,14 +135885,14 @@ void proto_register_rrc(void) {
{ "physicalChannelReconfiguration-v8a0ext", "rrc.physicalChannelReconfiguration_v8a0ext",
FT_NONE, BASE_NONE, NULL, 0,
"PhysicalChannelReconfiguration_v8a0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_64,
+ { &hf_rrc_nonCriticalExtensions_69,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_64", HFILL }},
- { &hf_rrc_criticalExtensions_48,
+ "T_nonCriticalExtensions_69", HFILL }},
+ { &hf_rrc_criticalExtensions_53,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_48_vals), 0,
- "T_criticalExtensions_48", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_53_vals), 0,
+ "T_criticalExtensions_53", HFILL }},
{ &hf_rrc_r9_05,
{ "r9", "rrc.r9",
FT_NONE, BASE_NONE, NULL, 0,
@@ -127449,30 +135913,38 @@ void proto_register_rrc(void) {
{ "physicalChannelReconfiguration-v950ext", "rrc.physicalChannelReconfiguration_v950ext",
FT_NONE, BASE_NONE, NULL, 0,
"PhysicalChannelReconfiguration_v950ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_65,
+ { &hf_rrc_nonCriticalExtensions_70,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_65", HFILL }},
- { &hf_rrc_criticalExtensions_49,
+ "T_nonCriticalExtensions_70", HFILL }},
+ { &hf_rrc_criticalExtensions_54,
{ "criticalExtensions", "rrc.criticalExtensions",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_54_vals), 0,
+ "T_criticalExtensions_54", HFILL }},
+ { &hf_rrc_r10_05,
+ { "r10", "rrc.r10",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_49", HFILL }},
+ "T_r10_05", HFILL }},
+ { &hf_rrc_physicalChannelReconfiguration_r10,
+ { "physicalChannelReconfiguration-r10", "rrc.physicalChannelReconfiguration_r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "PhysicalChannelReconfiguration_r10_IEs", HFILL }},
+ { &hf_rrc_physicalChannelReconfiguration_r10_add_ext,
+ { "physicalChannelReconfiguration-r10-add-ext", "rrc.physicalChannelReconfiguration_r10_add_ext",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_71,
+ { "nonCriticalExtensions", "rrc.nonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_nonCriticalExtensions_71", HFILL }},
+ { &hf_rrc_criticalExtensions_55,
+ { "criticalExtensions", "rrc.criticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_criticalExtensions_55", HFILL }},
{ &hf_rrc_ul_ChannelRequirement_03,
{ "ul-ChannelRequirement", "rrc.ul_ChannelRequirement",
FT_UINT32, BASE_DEC, VALS(rrc_UL_ChannelRequirementWithCPCH_SetID_vals), 0,
"UL_ChannelRequirementWithCPCH_SetID", HFILL }},
- { &hf_rrc_modeSpecificInfo_10,
- { "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_10_vals), 0,
- "T_modeSpecificInfo_10", HFILL }},
- { &hf_rrc_fdd_16,
- { "fdd", "rrc.fdd",
- FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_16", HFILL }},
- { &hf_rrc_ul_ChannelRequirement_04,
- { "ul-ChannelRequirement", "rrc.ul_ChannelRequirement",
- FT_UINT32, BASE_DEC, VALS(rrc_UL_ChannelRequirementWithCPCH_SetID_r4_vals), 0,
- "UL_ChannelRequirementWithCPCH_SetID_r4", HFILL }},
{ &hf_rrc_modeSpecificInfo_11,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_11_vals), 0,
@@ -127481,10 +135953,10 @@ void proto_register_rrc(void) {
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
"T_fdd_17", HFILL }},
- { &hf_rrc_ul_ChannelRequirement_05,
+ { &hf_rrc_ul_ChannelRequirement_04,
{ "ul-ChannelRequirement", "rrc.ul_ChannelRequirement",
- FT_UINT32, BASE_DEC, VALS(rrc_UL_ChannelRequirementWithCPCH_SetID_r5_vals), 0,
- "UL_ChannelRequirementWithCPCH_SetID_r5", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_UL_ChannelRequirementWithCPCH_SetID_r4_vals), 0,
+ "UL_ChannelRequirementWithCPCH_SetID_r4", HFILL }},
{ &hf_rrc_modeSpecificInfo_12,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_12_vals), 0,
@@ -127493,6 +135965,18 @@ void proto_register_rrc(void) {
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
"T_fdd_18", HFILL }},
+ { &hf_rrc_ul_ChannelRequirement_05,
+ { "ul-ChannelRequirement", "rrc.ul_ChannelRequirement",
+ FT_UINT32, BASE_DEC, VALS(rrc_UL_ChannelRequirementWithCPCH_SetID_r5_vals), 0,
+ "UL_ChannelRequirementWithCPCH_SetID_r5", HFILL }},
+ { &hf_rrc_modeSpecificInfo_13,
+ { "modeSpecificInfo", "rrc.modeSpecificInfo",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_13_vals), 0,
+ "T_modeSpecificInfo_13", HFILL }},
+ { &hf_rrc_fdd_19,
+ { "fdd", "rrc.fdd",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_fdd_19", HFILL }},
{ &hf_rrc_delayRestrictionFlag,
{ "delayRestrictionFlag", "rrc.delayRestrictionFlag",
FT_UINT32, BASE_DEC, VALS(rrc_DelayRestrictionFlag_vals), 0,
@@ -127521,6 +136005,10 @@ void proto_register_rrc(void) {
{ "responseToChangeOfUE-Capability", "rrc.responseToChangeOfUE_Capability",
FT_UINT32, BASE_DEC, VALS(rrc_T_responseToChangeOfUE_Capability_02_vals), 0,
"T_responseToChangeOfUE_Capability_02", HFILL }},
+ { &hf_rrc_responseToChangeOfUE_Capability_03,
+ { "responseToChangeOfUE-Capability", "rrc.responseToChangeOfUE_Capability",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_responseToChangeOfUE_Capability_03_vals), 0,
+ "T_responseToChangeOfUE_Capability_03", HFILL }},
{ &hf_rrc_ul_IntegProtActivationInfo,
{ "ul-IntegProtActivationInfo", "rrc.ul_IntegProtActivationInfo",
FT_NONE, BASE_NONE, NULL, 0,
@@ -127529,7 +136017,7 @@ void proto_register_rrc(void) {
{ "ul-TimingAdvance", "rrc.ul_TimingAdvance",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_dummy_08,
+ { &hf_rrc_dummy_12,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, NULL, 0,
"RB_ActivationTimeInfoList", HFILL }},
@@ -127553,10 +136041,10 @@ void proto_register_rrc(void) {
{ "physicalChannelReconfigurationComplete-v770ext", "rrc.physicalChannelReconfigurationComplete_v770ext",
FT_NONE, BASE_NONE, NULL, 0,
"PhysicalChannelReconfigurationComplete_v770ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_66,
+ { &hf_rrc_nonCriticalExtensions_72,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_66", HFILL }},
+ "T_nonCriticalExtensions_72", HFILL }},
{ &hf_rrc_ext_UL_TimingAdvance,
{ "ext-UL-TimingAdvance", "rrc.ext_UL_TimingAdvance",
FT_NONE, BASE_NONE, NULL, 0,
@@ -127573,10 +136061,10 @@ void proto_register_rrc(void) {
{ "physicalChannelReconfigurationFailure-r3-add-ext", "rrc.physicalChannelReconfigurationFailure_r3_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_67,
+ { &hf_rrc_nonCriticalExtensions_73,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_67", HFILL }},
+ "T_nonCriticalExtensions_73", HFILL }},
{ &hf_rrc_r3_13,
{ "r3", "rrc.r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -127593,10 +136081,10 @@ void proto_register_rrc(void) {
{ "physicalSharedChannelAllocation-r3-add-ext", "rrc.physicalSharedChannelAllocation_r3_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_68,
+ { &hf_rrc_nonCriticalExtensions_74,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_68", HFILL }},
+ "T_nonCriticalExtensions_74", HFILL }},
{ &hf_rrc_later_than_r3_11,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -127605,10 +136093,10 @@ void proto_register_rrc(void) {
{ "dsch-RNTI", "rrc.dsch_RNTI",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_criticalExtensions_50,
+ { &hf_rrc_criticalExtensions_56,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_50_vals), 0,
- "T_criticalExtensions_50", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_56_vals), 0,
+ "T_criticalExtensions_56", HFILL }},
{ &hf_rrc_r4_05,
{ "r4", "rrc.r4",
FT_NONE, BASE_NONE, NULL, 0,
@@ -127641,14 +136129,14 @@ void proto_register_rrc(void) {
{ "physicalSharedChannelAllocation-v770ext", "rrc.physicalSharedChannelAllocation_v770ext",
FT_NONE, BASE_NONE, NULL, 0,
"PhysicalSharedChannelAllocation_v770ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_69,
+ { &hf_rrc_nonCriticalExtensions_75,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_69", HFILL }},
- { &hf_rrc_criticalExtensions_51,
+ "T_nonCriticalExtensions_75", HFILL }},
+ { &hf_rrc_criticalExtensions_57,
{ "criticalExtensions", "rrc.criticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_51", HFILL }},
+ "T_criticalExtensions_57", HFILL }},
{ &hf_rrc_ul_TimingAdvance_01,
{ "ul-TimingAdvance", "rrc.ul_TimingAdvance",
FT_UINT32, BASE_DEC, VALS(rrc_UL_TimingAdvanceControl_vals), 0,
@@ -127753,10 +136241,10 @@ void proto_register_rrc(void) {
{ "puschCapacityRequest-v590ext", "rrc.puschCapacityRequest_v590ext",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_nonCriticalExtensions_70,
+ { &hf_rrc_nonCriticalExtensions_76,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_70", HFILL }},
+ "T_nonCriticalExtensions_76", HFILL }},
{ &hf_rrc_primaryCCPCH_RSCP_delta,
{ "primaryCCPCH-RSCP-delta", "rrc.primaryCCPCH_RSCP_delta",
FT_INT32, BASE_DEC, NULL, 0,
@@ -127825,18 +136313,18 @@ void proto_register_rrc(void) {
{ "radioBearerReconfiguration-v770ext", "rrc.radioBearerReconfiguration_v770ext",
FT_NONE, BASE_NONE, NULL, 0,
"RadioBearerReconfiguration_v770ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_71,
+ { &hf_rrc_nonCriticalExtensions_77,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_71", HFILL }},
+ "T_nonCriticalExtensions_77", HFILL }},
{ &hf_rrc_later_than_r3_12,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
"T_later_than_r3_12", HFILL }},
- { &hf_rrc_criticalExtensions_52,
+ { &hf_rrc_criticalExtensions_58,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_52_vals), 0,
- "T_criticalExtensions_52", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_58_vals), 0,
+ "T_criticalExtensions_58", HFILL }},
{ &hf_rrc_r4_06,
{ "r4", "rrc.r4",
FT_NONE, BASE_NONE, NULL, 0,
@@ -127869,14 +136357,14 @@ void proto_register_rrc(void) {
{ "v770NonCriticalExtensions", "rrc.v770NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v770NonCriticalExtensions_11", HFILL }},
- { &hf_rrc_nonCriticalExtensions_72,
+ { &hf_rrc_nonCriticalExtensions_78,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_72", HFILL }},
- { &hf_rrc_criticalExtensions_53,
+ "T_nonCriticalExtensions_78", HFILL }},
+ { &hf_rrc_criticalExtensions_59,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_53_vals), 0,
- "T_criticalExtensions_53", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_59_vals), 0,
+ "T_criticalExtensions_59", HFILL }},
{ &hf_rrc_r5_05,
{ "r5", "rrc.r5",
FT_NONE, BASE_NONE, NULL, 0,
@@ -127901,14 +136389,14 @@ void proto_register_rrc(void) {
{ "v770NonCriticalExtensions", "rrc.v770NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v770NonCriticalExtensions_12", HFILL }},
- { &hf_rrc_nonCriticalExtensions_73,
+ { &hf_rrc_nonCriticalExtensions_79,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_73", HFILL }},
- { &hf_rrc_criticalExtensions_54,
+ "T_nonCriticalExtensions_79", HFILL }},
+ { &hf_rrc_criticalExtensions_60,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_54_vals), 0,
- "T_criticalExtensions_54", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_60_vals), 0,
+ "T_criticalExtensions_60", HFILL }},
{ &hf_rrc_r6_07,
{ "r6", "rrc.r6",
FT_NONE, BASE_NONE, NULL, 0,
@@ -127941,14 +136429,14 @@ void proto_register_rrc(void) {
{ "v770NonCriticalExtensions", "rrc.v770NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v770NonCriticalExtensions_13", HFILL }},
- { &hf_rrc_nonCriticalExtensions_74,
+ { &hf_rrc_nonCriticalExtensions_80,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_74", HFILL }},
- { &hf_rrc_criticalExtensions_55,
+ "T_nonCriticalExtensions_80", HFILL }},
+ { &hf_rrc_criticalExtensions_61,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_55_vals), 0,
- "T_criticalExtensions_55", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_61_vals), 0,
+ "T_criticalExtensions_61", HFILL }},
{ &hf_rrc_r7_06,
{ "r7", "rrc.r7",
FT_NONE, BASE_NONE, NULL, 0,
@@ -127997,14 +136485,14 @@ void proto_register_rrc(void) {
{ "radioBearerReconfiguration-v7g0ext", "rrc.radioBearerReconfiguration_v7g0ext",
FT_NONE, BASE_NONE, NULL, 0,
"RadioBearerReconfiguration_v7g0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_75,
+ { &hf_rrc_nonCriticalExtensions_81,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_75", HFILL }},
- { &hf_rrc_criticalExtensions_56,
+ "T_nonCriticalExtensions_81", HFILL }},
+ { &hf_rrc_criticalExtensions_62,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_56_vals), 0,
- "T_criticalExtensions_56", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_62_vals), 0,
+ "T_criticalExtensions_62", HFILL }},
{ &hf_rrc_r8_07,
{ "r8", "rrc.r8",
FT_NONE, BASE_NONE, NULL, 0,
@@ -128045,14 +136533,14 @@ void proto_register_rrc(void) {
{ "radioBearerReconfiguration-v8a0ext", "rrc.radioBearerReconfiguration_v8a0ext",
FT_NONE, BASE_NONE, NULL, 0,
"RadioBearerReconfiguration_v8a0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_76,
+ { &hf_rrc_nonCriticalExtensions_82,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_76", HFILL }},
- { &hf_rrc_criticalExtensions_57,
+ "T_nonCriticalExtensions_82", HFILL }},
+ { &hf_rrc_criticalExtensions_63,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_57_vals), 0,
- "T_criticalExtensions_57", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_63_vals), 0,
+ "T_criticalExtensions_63", HFILL }},
{ &hf_rrc_r9_06,
{ "r9", "rrc.r9",
FT_NONE, BASE_NONE, NULL, 0,
@@ -128073,26 +136561,46 @@ void proto_register_rrc(void) {
{ "radioBearerReconfiguration-v950ext", "rrc.radioBearerReconfiguration_v950ext",
FT_NONE, BASE_NONE, NULL, 0,
"RadioBearerReconfiguration_v950ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_77,
+ { &hf_rrc_nonCriticalExtensions_83,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_77", HFILL }},
- { &hf_rrc_criticalExtensions_58,
+ "T_nonCriticalExtensions_83", HFILL }},
+ { &hf_rrc_criticalExtensions_64,
{ "criticalExtensions", "rrc.criticalExtensions",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_64_vals), 0,
+ "T_criticalExtensions_64", HFILL }},
+ { &hf_rrc_r10_06,
+ { "r10", "rrc.r10",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_58", HFILL }},
+ "T_r10_06", HFILL }},
+ { &hf_rrc_radioBearerReconfiguration_r10,
+ { "radioBearerReconfiguration-r10", "rrc.radioBearerReconfiguration_r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RadioBearerReconfiguration_r10_IEs", HFILL }},
+ { &hf_rrc_radioBearerReconfiguration_r10_add_ext,
+ { "radioBearerReconfiguration-r10-add-ext", "rrc.radioBearerReconfiguration_r10_add_ext",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_84,
+ { "nonCriticalExtensions", "rrc.nonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_nonCriticalExtensions_84", HFILL }},
+ { &hf_rrc_criticalExtensions_65,
+ { "criticalExtensions", "rrc.criticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_criticalExtensions_65", HFILL }},
{ &hf_rrc_rab_InformationReconfigList,
{ "rab-InformationReconfigList", "rrc.rab_InformationReconfigList",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_dummy_09,
+ { &hf_rrc_dummy_13,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, VALS(rrc_T_dummy_01_vals), 0,
"T_dummy_01", HFILL }},
- { &hf_rrc_fdd_19,
+ { &hf_rrc_fdd_20,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_19", HFILL }},
+ "T_fdd_20", HFILL }},
{ &hf_rrc_dummy1,
{ "dummy1", "rrc.dummy1",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -128105,74 +136613,46 @@ void proto_register_rrc(void) {
{ "modeSpecificPhysChInfo", "rrc.modeSpecificPhysChInfo",
FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificPhysChInfo_03_vals), 0,
"T_modeSpecificPhysChInfo_03", HFILL }},
- { &hf_rrc_fdd_20,
+ { &hf_rrc_fdd_21,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_20", HFILL }},
- { &hf_rrc_dummy_10,
+ "T_fdd_21", HFILL }},
+ { &hf_rrc_dummy_14,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, VALS(rrc_T_dummy_02_vals), 0,
"T_dummy_02", HFILL }},
- { &hf_rrc_fdd_21,
+ { &hf_rrc_fdd_22,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_21", HFILL }},
+ "T_fdd_22", HFILL }},
{ &hf_rrc_modeSpecificPhysChInfo_04,
{ "modeSpecificPhysChInfo", "rrc.modeSpecificPhysChInfo",
FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificPhysChInfo_04_vals), 0,
"T_modeSpecificPhysChInfo_04", HFILL }},
- { &hf_rrc_fdd_22,
+ { &hf_rrc_fdd_23,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_22", HFILL }},
- { &hf_rrc_specificationMode_07,
+ "T_fdd_23", HFILL }},
+ { &hf_rrc_specificationMode_08,
{ "specificationMode", "rrc.specificationMode",
- FT_UINT32, BASE_DEC, VALS(rrc_T_specificationMode_07_vals), 0,
- "T_specificationMode_07", HFILL }},
- { &hf_rrc_complete_07,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_specificationMode_08_vals), 0,
+ "T_specificationMode_08", HFILL }},
+ { &hf_rrc_complete_08,
{ "complete", "rrc.complete",
FT_NONE, BASE_NONE, NULL, 0,
- "T_complete_07", HFILL }},
+ "T_complete_08", HFILL }},
{ &hf_rrc_rb_PDCPContextRelocationList,
{ "rb-PDCPContextRelocationList", "rrc.rb_PDCPContextRelocationList",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_dummy_11,
+ { &hf_rrc_dummy_15,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, VALS(rrc_T_dummy_03_vals), 0,
"T_dummy_03", HFILL }},
- { &hf_rrc_fdd_23,
- { "fdd", "rrc.fdd",
- FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_23", HFILL }},
- { &hf_rrc_preconfiguration_07,
- { "preconfiguration", "rrc.preconfiguration",
- FT_NONE, BASE_NONE, NULL, 0,
- "T_preconfiguration_07", HFILL }},
- { &hf_rrc_preConfigMode_07,
- { "preConfigMode", "rrc.preConfigMode",
- FT_UINT32, BASE_DEC, VALS(rrc_T_preConfigMode_07_vals), 0,
- "T_preConfigMode_07", HFILL }},
- { &hf_rrc_defaultConfig_07,
- { "defaultConfig", "rrc.defaultConfig",
- FT_NONE, BASE_NONE, NULL, 0,
- "T_defaultConfig_07", HFILL }},
- { &hf_rrc_modeSpecificPhysChInfo_05,
- { "modeSpecificPhysChInfo", "rrc.modeSpecificPhysChInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificPhysChInfo_05_vals), 0,
- "T_modeSpecificPhysChInfo_05", HFILL }},
{ &hf_rrc_fdd_24,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
"T_fdd_24", HFILL }},
- { &hf_rrc_specificationMode_08,
- { "specificationMode", "rrc.specificationMode",
- FT_UINT32, BASE_DEC, VALS(rrc_T_specificationMode_08_vals), 0,
- "T_specificationMode_08", HFILL }},
- { &hf_rrc_complete_08,
- { "complete", "rrc.complete",
- FT_NONE, BASE_NONE, NULL, 0,
- "T_complete_08", HFILL }},
{ &hf_rrc_preconfiguration_08,
{ "preconfiguration", "rrc.preconfiguration",
FT_NONE, BASE_NONE, NULL, 0,
@@ -128185,10 +136665,14 @@ void proto_register_rrc(void) {
{ "defaultConfig", "rrc.defaultConfig",
FT_NONE, BASE_NONE, NULL, 0,
"T_defaultConfig_08", HFILL }},
- { &hf_rrc_postVerificationPeriod_02,
- { "postVerificationPeriod", "rrc.postVerificationPeriod",
- FT_UINT32, BASE_DEC, VALS(rrc_T_postVerificationPeriod_02_vals), 0,
- "T_postVerificationPeriod_02", HFILL }},
+ { &hf_rrc_modeSpecificPhysChInfo_05,
+ { "modeSpecificPhysChInfo", "rrc.modeSpecificPhysChInfo",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificPhysChInfo_05_vals), 0,
+ "T_modeSpecificPhysChInfo_05", HFILL }},
+ { &hf_rrc_fdd_25,
+ { "fdd", "rrc.fdd",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_fdd_25", HFILL }},
{ &hf_rrc_specificationMode_09,
{ "specificationMode", "rrc.specificationMode",
FT_UINT32, BASE_DEC, VALS(rrc_T_specificationMode_09_vals), 0,
@@ -128197,22 +136681,6 @@ void proto_register_rrc(void) {
{ "complete", "rrc.complete",
FT_NONE, BASE_NONE, NULL, 0,
"T_complete_09", HFILL }},
- { &hf_rrc_rab_InformationMBMSPtpList,
- { "rab-InformationMBMSPtpList", "rrc.rab_InformationMBMSPtpList",
- FT_UINT32, BASE_DEC, NULL, 0,
- NULL, HFILL }},
- { &hf_rrc_responseToChangeOfUE_Capability_03,
- { "responseToChangeOfUE-Capability", "rrc.responseToChangeOfUE_Capability",
- FT_UINT32, BASE_DEC, VALS(rrc_T_responseToChangeOfUE_Capability_03_vals), 0,
- "T_responseToChangeOfUE_Capability_03", HFILL }},
- { &hf_rrc_specificationMode_10,
- { "specificationMode", "rrc.specificationMode",
- FT_UINT32, BASE_DEC, VALS(rrc_T_specificationMode_10_vals), 0,
- "T_specificationMode_10", HFILL }},
- { &hf_rrc_complete_10,
- { "complete", "rrc.complete",
- FT_NONE, BASE_NONE, NULL, 0,
- "T_complete_10", HFILL }},
{ &hf_rrc_preconfiguration_09,
{ "preconfiguration", "rrc.preconfiguration",
FT_NONE, BASE_NONE, NULL, 0,
@@ -128225,10 +136693,22 @@ void proto_register_rrc(void) {
{ "defaultConfig", "rrc.defaultConfig",
FT_NONE, BASE_NONE, NULL, 0,
"T_defaultConfig_09", HFILL }},
- { &hf_rrc_radioBearerReconfiguration_r7_add_ext,
- { "radioBearerReconfiguration-r7-add-ext", "rrc.radioBearerReconfiguration_r7_add_ext",
- FT_BYTES, BASE_NONE, NULL, 0,
- "BIT_STRING", HFILL }},
+ { &hf_rrc_postVerificationPeriod_02,
+ { "postVerificationPeriod", "rrc.postVerificationPeriod",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_postVerificationPeriod_02_vals), 0,
+ "T_postVerificationPeriod_02", HFILL }},
+ { &hf_rrc_specificationMode_10,
+ { "specificationMode", "rrc.specificationMode",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_specificationMode_10_vals), 0,
+ "T_specificationMode_10", HFILL }},
+ { &hf_rrc_complete_10,
+ { "complete", "rrc.complete",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_complete_10", HFILL }},
+ { &hf_rrc_rab_InformationMBMSPtpList,
+ { "rab-InformationMBMSPtpList", "rrc.rab_InformationMBMSPtpList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
{ &hf_rrc_responseToChangeOfUE_Capability_04,
{ "responseToChangeOfUE-Capability", "rrc.responseToChangeOfUE_Capability",
FT_UINT32, BASE_DEC, VALS(rrc_T_responseToChangeOfUE_Capability_04_vals), 0,
@@ -128241,10 +136721,6 @@ void proto_register_rrc(void) {
{ "complete", "rrc.complete",
FT_NONE, BASE_NONE, NULL, 0,
"T_complete_11", HFILL }},
- { &hf_rrc_rab_InformationReconfigList_01,
- { "rab-InformationReconfigList", "rrc.rab_InformationReconfigList",
- FT_UINT32, BASE_DEC, NULL, 0,
- "RAB_InformationReconfigList_r8", HFILL }},
{ &hf_rrc_preconfiguration_10,
{ "preconfiguration", "rrc.preconfiguration",
FT_NONE, BASE_NONE, NULL, 0,
@@ -128257,6 +136733,10 @@ void proto_register_rrc(void) {
{ "defaultConfig", "rrc.defaultConfig",
FT_NONE, BASE_NONE, NULL, 0,
"T_defaultConfig_10", HFILL }},
+ { &hf_rrc_radioBearerReconfiguration_r7_add_ext,
+ { "radioBearerReconfiguration-r7-add-ext", "rrc.radioBearerReconfiguration_r7_add_ext",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING", HFILL }},
{ &hf_rrc_responseToChangeOfUE_Capability_05,
{ "responseToChangeOfUE-Capability", "rrc.responseToChangeOfUE_Capability",
FT_UINT32, BASE_DEC, VALS(rrc_T_responseToChangeOfUE_Capability_05_vals), 0,
@@ -128269,6 +136749,10 @@ void proto_register_rrc(void) {
{ "complete", "rrc.complete",
FT_NONE, BASE_NONE, NULL, 0,
"T_complete_12", HFILL }},
+ { &hf_rrc_rab_InformationReconfigList_01,
+ { "rab-InformationReconfigList", "rrc.rab_InformationReconfigList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "RAB_InformationReconfigList_r8", HFILL }},
{ &hf_rrc_preconfiguration_11,
{ "preconfiguration", "rrc.preconfiguration",
FT_NONE, BASE_NONE, NULL, 0,
@@ -128281,6 +136765,54 @@ void proto_register_rrc(void) {
{ "defaultConfig", "rrc.defaultConfig",
FT_NONE, BASE_NONE, NULL, 0,
"T_defaultConfig_11", HFILL }},
+ { &hf_rrc_responseToChangeOfUE_Capability_06,
+ { "responseToChangeOfUE-Capability", "rrc.responseToChangeOfUE_Capability",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_responseToChangeOfUE_Capability_06_vals), 0,
+ "T_responseToChangeOfUE_Capability_06", HFILL }},
+ { &hf_rrc_specificationMode_13,
+ { "specificationMode", "rrc.specificationMode",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_specificationMode_13_vals), 0,
+ "T_specificationMode_13", HFILL }},
+ { &hf_rrc_complete_13,
+ { "complete", "rrc.complete",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_complete_13", HFILL }},
+ { &hf_rrc_preconfiguration_12,
+ { "preconfiguration", "rrc.preconfiguration",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_preconfiguration_12", HFILL }},
+ { &hf_rrc_preConfigMode_12,
+ { "preConfigMode", "rrc.preConfigMode",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_preConfigMode_12_vals), 0,
+ "T_preConfigMode_12", HFILL }},
+ { &hf_rrc_defaultConfig_12,
+ { "defaultConfig", "rrc.defaultConfig",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_defaultConfig_12", HFILL }},
+ { &hf_rrc_responseToChangeOfUE_Capability_07,
+ { "responseToChangeOfUE-Capability", "rrc.responseToChangeOfUE_Capability",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_responseToChangeOfUE_Capability_07_vals), 0,
+ "T_responseToChangeOfUE_Capability_07", HFILL }},
+ { &hf_rrc_specificationMode_14,
+ { "specificationMode", "rrc.specificationMode",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_specificationMode_14_vals), 0,
+ "T_specificationMode_14", HFILL }},
+ { &hf_rrc_complete_14,
+ { "complete", "rrc.complete",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_complete_14", HFILL }},
+ { &hf_rrc_preconfiguration_13,
+ { "preconfiguration", "rrc.preconfiguration",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_preconfiguration_13", HFILL }},
+ { &hf_rrc_preConfigMode_13,
+ { "preConfigMode", "rrc.preConfigMode",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_preConfigMode_13_vals), 0,
+ "T_preConfigMode_13", HFILL }},
+ { &hf_rrc_defaultConfig_13,
+ { "defaultConfig", "rrc.defaultConfig",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_defaultConfig_13", HFILL }},
{ &hf_rrc_laterNonCriticalExtensions_29,
{ "laterNonCriticalExtensions", "rrc.laterNonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
@@ -128297,10 +136829,10 @@ void proto_register_rrc(void) {
{ "radioBearerReconfigurationComplete-v770ext", "rrc.radioBearerReconfigurationComplete_v770ext",
FT_NONE, BASE_NONE, NULL, 0,
"RadioBearerReconfigurationComplete_v770ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_78,
+ { &hf_rrc_nonCriticalExtensions_85,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_78", HFILL }},
+ "T_nonCriticalExtensions_85", HFILL }},
{ &hf_rrc_deferredMeasurementControlReading_01,
{ "deferredMeasurementControlReading", "rrc.deferredMeasurementControlReading",
FT_UINT32, BASE_DEC, VALS(rrc_T_deferredMeasurementControlReading_01_vals), 0,
@@ -128317,10 +136849,10 @@ void proto_register_rrc(void) {
{ "radioBearerReconfigurationFailure-r3-add-ext", "rrc.radioBearerReconfigurationFailure_r3_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_79,
+ { &hf_rrc_nonCriticalExtensions_86,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_79", HFILL }},
+ "T_nonCriticalExtensions_86", HFILL }},
{ &hf_rrc_r3_15,
{ "r3", "rrc.r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -128377,18 +136909,18 @@ void proto_register_rrc(void) {
{ "radioBearerRelease-v770ext", "rrc.radioBearerRelease_v770ext",
FT_NONE, BASE_NONE, NULL, 0,
"RadioBearerRelease_v770ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_80,
+ { &hf_rrc_nonCriticalExtensions_87,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_80", HFILL }},
+ "T_nonCriticalExtensions_87", HFILL }},
{ &hf_rrc_later_than_r3_13,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
"T_later_than_r3_13", HFILL }},
- { &hf_rrc_criticalExtensions_59,
+ { &hf_rrc_criticalExtensions_66,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_59_vals), 0,
- "T_criticalExtensions_59", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_66_vals), 0,
+ "T_criticalExtensions_66", HFILL }},
{ &hf_rrc_r4_07,
{ "r4", "rrc.r4",
FT_NONE, BASE_NONE, NULL, 0,
@@ -128417,14 +136949,14 @@ void proto_register_rrc(void) {
{ "v770NonCriticalExtensions", "rrc.v770NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v770NonCriticalExtensions_16", HFILL }},
- { &hf_rrc_nonCriticalExtensions_81,
+ { &hf_rrc_nonCriticalExtensions_88,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_81", HFILL }},
- { &hf_rrc_criticalExtensions_60,
+ "T_nonCriticalExtensions_88", HFILL }},
+ { &hf_rrc_criticalExtensions_67,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_60_vals), 0,
- "T_criticalExtensions_60", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_67_vals), 0,
+ "T_criticalExtensions_67", HFILL }},
{ &hf_rrc_r5_06,
{ "r5", "rrc.r5",
FT_NONE, BASE_NONE, NULL, 0,
@@ -128445,14 +136977,14 @@ void proto_register_rrc(void) {
{ "v770NonCriticalExtensions", "rrc.v770NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v770NonCriticalExtensions_17", HFILL }},
- { &hf_rrc_nonCriticalExtensions_82,
+ { &hf_rrc_nonCriticalExtensions_89,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_82", HFILL }},
- { &hf_rrc_criticalExtensions_61,
+ "T_nonCriticalExtensions_89", HFILL }},
+ { &hf_rrc_criticalExtensions_68,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_61_vals), 0,
- "T_criticalExtensions_61", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_68_vals), 0,
+ "T_criticalExtensions_68", HFILL }},
{ &hf_rrc_r6_08,
{ "r6", "rrc.r6",
FT_NONE, BASE_NONE, NULL, 0,
@@ -128477,14 +137009,14 @@ void proto_register_rrc(void) {
{ "v770NonCriticalExtensions", "rrc.v770NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v770NonCriticalExtensions_18", HFILL }},
- { &hf_rrc_nonCriticalExtensions_83,
+ { &hf_rrc_nonCriticalExtensions_90,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_83", HFILL }},
- { &hf_rrc_criticalExtensions_62,
+ "T_nonCriticalExtensions_90", HFILL }},
+ { &hf_rrc_criticalExtensions_69,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_62_vals), 0,
- "T_criticalExtensions_62", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_69_vals), 0,
+ "T_criticalExtensions_69", HFILL }},
{ &hf_rrc_r7_07,
{ "r7", "rrc.r7",
FT_NONE, BASE_NONE, NULL, 0,
@@ -128529,14 +137061,14 @@ void proto_register_rrc(void) {
{ "radioBearerRelease-v7g0ext", "rrc.radioBearerRelease_v7g0ext",
FT_NONE, BASE_NONE, NULL, 0,
"RadioBearerRelease_v7g0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_84,
+ { &hf_rrc_nonCriticalExtensions_91,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_84", HFILL }},
- { &hf_rrc_criticalExtensions_63,
+ "T_nonCriticalExtensions_91", HFILL }},
+ { &hf_rrc_criticalExtensions_70,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_63_vals), 0,
- "T_criticalExtensions_63", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_70_vals), 0,
+ "T_criticalExtensions_70", HFILL }},
{ &hf_rrc_r8_08,
{ "r8", "rrc.r8",
FT_NONE, BASE_NONE, NULL, 0,
@@ -128577,14 +137109,14 @@ void proto_register_rrc(void) {
{ "radioBearerRelease-v8a0ext", "rrc.radioBearerRelease_v8a0ext",
FT_NONE, BASE_NONE, NULL, 0,
"RadioBearerRelease_v8a0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_85,
+ { &hf_rrc_nonCriticalExtensions_92,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_85", HFILL }},
- { &hf_rrc_criticalExtensions_64,
+ "T_nonCriticalExtensions_92", HFILL }},
+ { &hf_rrc_criticalExtensions_71,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_64_vals), 0,
- "T_criticalExtensions_64", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_71_vals), 0,
+ "T_criticalExtensions_71", HFILL }},
{ &hf_rrc_r9_07,
{ "r9", "rrc.r9",
FT_NONE, BASE_NONE, NULL, 0,
@@ -128613,66 +137145,86 @@ void proto_register_rrc(void) {
{ "radioBearerRelease-v970ext", "rrc.radioBearerRelease_v970ext",
FT_NONE, BASE_NONE, NULL, 0,
"RadioBearerRelease_v970ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_86,
+ { &hf_rrc_nonCriticalExtensions_93,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_86", HFILL }},
- { &hf_rrc_criticalExtensions_65,
+ "T_nonCriticalExtensions_93", HFILL }},
+ { &hf_rrc_criticalExtensions_72,
{ "criticalExtensions", "rrc.criticalExtensions",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_72_vals), 0,
+ "T_criticalExtensions_72", HFILL }},
+ { &hf_rrc_r10_07,
+ { "r10", "rrc.r10",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_65", HFILL }},
+ "T_r10_07", HFILL }},
+ { &hf_rrc_radioBearerRelease_r10,
+ { "radioBearerRelease-r10", "rrc.radioBearerRelease_r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RadioBearerRelease_r10_IEs", HFILL }},
+ { &hf_rrc_radioBearerRelease_r10_add_ext,
+ { "radioBearerRelease-r10-add-ext", "rrc.radioBearerRelease_r10_add_ext",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_94,
+ { "nonCriticalExtensions", "rrc.nonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_nonCriticalExtensions_94", HFILL }},
+ { &hf_rrc_criticalExtensions_73,
+ { "criticalExtensions", "rrc.criticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_criticalExtensions_73", HFILL }},
{ &hf_rrc_signallingConnectionRelIndication,
{ "signallingConnectionRelIndication", "rrc.signallingConnectionRelIndication",
FT_UINT32, BASE_DEC, VALS(rrc_CN_DomainIdentity_vals), 0,
"CN_DomainIdentity", HFILL }},
- { &hf_rrc_dummy_12,
+ { &hf_rrc_dummy_16,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, VALS(rrc_T_dummy_04_vals), 0,
"T_dummy_04", HFILL }},
- { &hf_rrc_fdd_25,
+ { &hf_rrc_fdd_26,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_25", HFILL }},
+ "T_fdd_26", HFILL }},
{ &hf_rrc_modeSpecificPhysChInfo_06,
{ "modeSpecificPhysChInfo", "rrc.modeSpecificPhysChInfo",
FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificPhysChInfo_06_vals), 0,
"T_modeSpecificPhysChInfo_06", HFILL }},
- { &hf_rrc_fdd_26,
+ { &hf_rrc_fdd_27,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_26", HFILL }},
- { &hf_rrc_dummy_13,
+ "T_fdd_27", HFILL }},
+ { &hf_rrc_dummy_17,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, VALS(rrc_T_dummy_05_vals), 0,
"T_dummy_05", HFILL }},
- { &hf_rrc_fdd_27,
+ { &hf_rrc_fdd_28,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_27", HFILL }},
+ "T_fdd_28", HFILL }},
{ &hf_rrc_modeSpecificPhysChInfo_07,
{ "modeSpecificPhysChInfo", "rrc.modeSpecificPhysChInfo",
FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificPhysChInfo_07_vals), 0,
"T_modeSpecificPhysChInfo_07", HFILL }},
- { &hf_rrc_fdd_28,
+ { &hf_rrc_fdd_29,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_28", HFILL }},
- { &hf_rrc_dummy_14,
+ "T_fdd_29", HFILL }},
+ { &hf_rrc_dummy_18,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, VALS(rrc_T_dummy_06_vals), 0,
"T_dummy_06", HFILL }},
- { &hf_rrc_fdd_29,
+ { &hf_rrc_fdd_30,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_29", HFILL }},
+ "T_fdd_30", HFILL }},
{ &hf_rrc_modeSpecificPhysChInfo_08,
{ "modeSpecificPhysChInfo", "rrc.modeSpecificPhysChInfo",
FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificPhysChInfo_08_vals), 0,
"T_modeSpecificPhysChInfo_08", HFILL }},
- { &hf_rrc_fdd_30,
+ { &hf_rrc_fdd_31,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_30", HFILL }},
+ "T_fdd_31", HFILL }},
{ &hf_rrc_postVerificationPeriod_03,
{ "postVerificationPeriod", "rrc.postVerificationPeriod",
FT_UINT32, BASE_DEC, VALS(rrc_T_postVerificationPeriod_03_vals), 0,
@@ -128697,10 +137249,10 @@ void proto_register_rrc(void) {
{ "radioBearerReleaseComplete-v770ext", "rrc.radioBearerReleaseComplete_v770ext",
FT_NONE, BASE_NONE, NULL, 0,
"RadioBearerReleaseComplete_v770ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_87,
+ { &hf_rrc_nonCriticalExtensions_95,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_87", HFILL }},
+ "T_nonCriticalExtensions_95", HFILL }},
{ &hf_rrc_deferredMeasurementControlReading_02,
{ "deferredMeasurementControlReading", "rrc.deferredMeasurementControlReading",
FT_UINT32, BASE_DEC, VALS(rrc_T_deferredMeasurementControlReading_02_vals), 0,
@@ -128713,10 +137265,10 @@ void proto_register_rrc(void) {
{ "radioBearerReleaseFailure-r3-add-ext", "rrc.radioBearerReleaseFailure_r3_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_88,
+ { &hf_rrc_nonCriticalExtensions_96,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_88", HFILL }},
+ "T_nonCriticalExtensions_96", HFILL }},
{ &hf_rrc_r3_16,
{ "r3", "rrc.r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -128773,18 +137325,18 @@ void proto_register_rrc(void) {
{ "radioBearerSetup-v690ext", "rrc.radioBearerSetup_v690ext",
FT_NONE, BASE_NONE, NULL, 0,
"RadioBearerSetup_v690ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_89,
+ { &hf_rrc_nonCriticalExtensions_97,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_89", HFILL }},
+ "T_nonCriticalExtensions_97", HFILL }},
{ &hf_rrc_later_than_r3_14,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
"T_later_than_r3_14", HFILL }},
- { &hf_rrc_criticalExtensions_66,
+ { &hf_rrc_criticalExtensions_74,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_66_vals), 0,
- "T_criticalExtensions_66", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_74_vals), 0,
+ "T_criticalExtensions_74", HFILL }},
{ &hf_rrc_r4_08,
{ "r4", "rrc.r4",
FT_NONE, BASE_NONE, NULL, 0,
@@ -128813,14 +137365,14 @@ void proto_register_rrc(void) {
{ "v690NonCriticalExtensions", "rrc.v690NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v690NonCriticalExtensions_23", HFILL }},
- { &hf_rrc_nonCriticalExtensions_90,
+ { &hf_rrc_nonCriticalExtensions_98,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_90", HFILL }},
- { &hf_rrc_criticalExtensions_67,
+ "T_nonCriticalExtensions_98", HFILL }},
+ { &hf_rrc_criticalExtensions_75,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_67_vals), 0,
- "T_criticalExtensions_67", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_75_vals), 0,
+ "T_criticalExtensions_75", HFILL }},
{ &hf_rrc_r5_07,
{ "r5", "rrc.r5",
FT_NONE, BASE_NONE, NULL, 0,
@@ -128841,14 +137393,14 @@ void proto_register_rrc(void) {
{ "v690NonCriticalExtensions", "rrc.v690NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v690NonCriticalExtensions_24", HFILL }},
- { &hf_rrc_nonCriticalExtensions_91,
+ { &hf_rrc_nonCriticalExtensions_99,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_91", HFILL }},
- { &hf_rrc_criticalExtensions_68,
+ "T_nonCriticalExtensions_99", HFILL }},
+ { &hf_rrc_criticalExtensions_76,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_68_vals), 0,
- "T_criticalExtensions_68", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_76_vals), 0,
+ "T_criticalExtensions_76", HFILL }},
{ &hf_rrc_r6_09,
{ "r6", "rrc.r6",
FT_NONE, BASE_NONE, NULL, 0,
@@ -128869,14 +137421,14 @@ void proto_register_rrc(void) {
{ "radioBearerSetup-v6b0ext", "rrc.radioBearerSetup_v6b0ext",
FT_NONE, BASE_NONE, NULL, 0,
"RadioBearerSetup_v6b0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_92,
+ { &hf_rrc_nonCriticalExtensions_100,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_92", HFILL }},
- { &hf_rrc_criticalExtensions_69,
+ "T_nonCriticalExtensions_100", HFILL }},
+ { &hf_rrc_criticalExtensions_77,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_69_vals), 0,
- "T_criticalExtensions_69", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_77_vals), 0,
+ "T_criticalExtensions_77", HFILL }},
{ &hf_rrc_r7_08,
{ "r7", "rrc.r7",
FT_NONE, BASE_NONE, NULL, 0,
@@ -128905,14 +137457,14 @@ void proto_register_rrc(void) {
{ "radioBearerSetup-v820ext", "rrc.radioBearerSetup_v820ext",
FT_NONE, BASE_NONE, NULL, 0,
"RadioBearerSetup_v820ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_93,
+ { &hf_rrc_nonCriticalExtensions_101,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_93", HFILL }},
- { &hf_rrc_criticalExtensions_70,
+ "T_nonCriticalExtensions_101", HFILL }},
+ { &hf_rrc_criticalExtensions_78,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_70_vals), 0,
- "T_criticalExtensions_70", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_78_vals), 0,
+ "T_criticalExtensions_78", HFILL }},
{ &hf_rrc_r8_09,
{ "r8", "rrc.r8",
FT_NONE, BASE_NONE, NULL, 0,
@@ -128965,14 +137517,14 @@ void proto_register_rrc(void) {
{ "radioBearerSetup-v8a0ext", "rrc.radioBearerSetup_v8a0ext",
FT_NONE, BASE_NONE, NULL, 0,
"RadioBearerSetup_v8a0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_94,
+ { &hf_rrc_nonCriticalExtensions_102,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_94", HFILL }},
- { &hf_rrc_criticalExtensions_71,
+ "T_nonCriticalExtensions_102", HFILL }},
+ { &hf_rrc_criticalExtensions_79,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_71_vals), 0,
- "T_criticalExtensions_71", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_79_vals), 0,
+ "T_criticalExtensions_79", HFILL }},
{ &hf_rrc_r9_08,
{ "r9", "rrc.r9",
FT_NONE, BASE_NONE, NULL, 0,
@@ -128993,62 +137545,82 @@ void proto_register_rrc(void) {
{ "radioBearerSetup-v950ext", "rrc.radioBearerSetup_v950ext",
FT_NONE, BASE_NONE, NULL, 0,
"RadioBearerSetup_v950ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_95,
+ { &hf_rrc_nonCriticalExtensions_103,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_95", HFILL }},
- { &hf_rrc_criticalExtensions_72,
+ "T_nonCriticalExtensions_103", HFILL }},
+ { &hf_rrc_criticalExtensions_80,
{ "criticalExtensions", "rrc.criticalExtensions",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_80_vals), 0,
+ "T_criticalExtensions_80", HFILL }},
+ { &hf_rrc_r10_08,
+ { "r10", "rrc.r10",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_72", HFILL }},
- { &hf_rrc_dummy_15,
+ "T_r10_08", HFILL }},
+ { &hf_rrc_radioBearerSetup_r10,
+ { "radioBearerSetup-r10", "rrc.radioBearerSetup_r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RadioBearerSetup_r10_IEs", HFILL }},
+ { &hf_rrc_radioBearerSetup_r10_add_ext,
+ { "radioBearerSetup-r10-add-ext", "rrc.radioBearerSetup_r10_add_ext",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_104,
+ { "nonCriticalExtensions", "rrc.nonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_nonCriticalExtensions_104", HFILL }},
+ { &hf_rrc_criticalExtensions_81,
+ { "criticalExtensions", "rrc.criticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_criticalExtensions_81", HFILL }},
+ { &hf_rrc_dummy_19,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, VALS(rrc_T_dummy_07_vals), 0,
"T_dummy_07", HFILL }},
- { &hf_rrc_fdd_31,
+ { &hf_rrc_fdd_32,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_31", HFILL }},
+ "T_fdd_32", HFILL }},
{ &hf_rrc_modeSpecificPhysChInfo_09,
{ "modeSpecificPhysChInfo", "rrc.modeSpecificPhysChInfo",
FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificPhysChInfo_09_vals), 0,
"T_modeSpecificPhysChInfo_09", HFILL }},
- { &hf_rrc_fdd_32,
+ { &hf_rrc_fdd_33,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_32", HFILL }},
- { &hf_rrc_dummy_16,
+ "T_fdd_33", HFILL }},
+ { &hf_rrc_dummy_20,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, VALS(rrc_T_dummy_08_vals), 0,
"T_dummy_08", HFILL }},
- { &hf_rrc_fdd_33,
+ { &hf_rrc_fdd_34,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_33", HFILL }},
+ "T_fdd_34", HFILL }},
{ &hf_rrc_modeSpecificPhysChInfo_10,
{ "modeSpecificPhysChInfo", "rrc.modeSpecificPhysChInfo",
FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificPhysChInfo_10_vals), 0,
"T_modeSpecificPhysChInfo_10", HFILL }},
- { &hf_rrc_fdd_34,
+ { &hf_rrc_fdd_35,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_34", HFILL }},
- { &hf_rrc_dummy_17,
+ "T_fdd_35", HFILL }},
+ { &hf_rrc_dummy_21,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, VALS(rrc_T_dummy_09_vals), 0,
"T_dummy_09", HFILL }},
- { &hf_rrc_fdd_35,
+ { &hf_rrc_fdd_36,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_35", HFILL }},
+ "T_fdd_36", HFILL }},
{ &hf_rrc_modeSpecificPhysChInfo_11,
{ "modeSpecificPhysChInfo", "rrc.modeSpecificPhysChInfo",
FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificPhysChInfo_11_vals), 0,
"T_modeSpecificPhysChInfo_11", HFILL }},
- { &hf_rrc_fdd_36,
+ { &hf_rrc_fdd_37,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_36", HFILL }},
+ "T_fdd_37", HFILL }},
{ &hf_rrc_postVerificationPeriod_04,
{ "postVerificationPeriod", "rrc.postVerificationPeriod",
FT_UINT32, BASE_DEC, VALS(rrc_T_postVerificationPeriod_04_vals), 0,
@@ -129057,15 +137629,15 @@ void proto_register_rrc(void) {
{ "rab-InformationSetupList", "rrc.rab_InformationSetupList",
FT_UINT32, BASE_DEC, NULL, 0,
"RAB_InformationSetupList_r6_ext", HFILL }},
- { &hf_rrc_specificationMode_13,
+ { &hf_rrc_specificationMode_15,
{ "specificationMode", "rrc.specificationMode",
- FT_UINT32, BASE_DEC, VALS(rrc_T_specificationMode_13_vals), 0,
- "T_specificationMode_13", HFILL }},
- { &hf_rrc_complete_13,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_specificationMode_15_vals), 0,
+ "T_specificationMode_15", HFILL }},
+ { &hf_rrc_complete_15,
{ "complete", "rrc.complete",
FT_NONE, BASE_NONE, NULL, 0,
- "T_complete_13", HFILL }},
- { &hf_rrc_dummy_18,
+ "T_complete_15", HFILL }},
+ { &hf_rrc_dummy_22,
{ "dummy", "rrc.dummy",
FT_NONE, BASE_NONE, NULL, 0,
"T_dummy_10", HFILL }},
@@ -129085,15 +137657,15 @@ void proto_register_rrc(void) {
{ "rab-InformationSetupListExt", "rrc.rab_InformationSetupListExt",
FT_UINT32, BASE_DEC, NULL, 0,
"RAB_InformationSetupList_v6b0ext", HFILL }},
- { &hf_rrc_specificationMode_14,
+ { &hf_rrc_specificationMode_16,
{ "specificationMode", "rrc.specificationMode",
- FT_UINT32, BASE_DEC, VALS(rrc_T_specificationMode_14_vals), 0,
- "T_specificationMode_14", HFILL }},
- { &hf_rrc_complete_14,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_specificationMode_16_vals), 0,
+ "T_specificationMode_16", HFILL }},
+ { &hf_rrc_complete_16,
{ "complete", "rrc.complete",
FT_NONE, BASE_NONE, NULL, 0,
- "T_complete_14", HFILL }},
- { &hf_rrc_dummy_19,
+ "T_complete_16", HFILL }},
+ { &hf_rrc_dummy_23,
{ "dummy", "rrc.dummy",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
@@ -129105,14 +137677,10 @@ void proto_register_rrc(void) {
{ "v7g0NonCriticalExtensions", "rrc.v7g0NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v7g0NonCriticalExtensions_13", HFILL }},
- { &hf_rrc_nonCriticalExtensions_96,
+ { &hf_rrc_nonCriticalExtensions_105,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_96", HFILL }},
- { &hf_rrc_sr_vcc_Info,
- { "sr-vcc-Info", "rrc.sr_vcc_Info",
- FT_NONE, BASE_NONE, NULL, 0,
- NULL, HFILL }},
+ "T_nonCriticalExtensions_105", HFILL }},
{ &hf_rrc_laterNonCriticalExtensions_35,
{ "laterNonCriticalExtensions", "rrc.laterNonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
@@ -129129,10 +137697,10 @@ void proto_register_rrc(void) {
{ "radioBearerSetupComplete-v770ext", "rrc.radioBearerSetupComplete_v770ext",
FT_NONE, BASE_NONE, NULL, 0,
"RadioBearerSetupComplete_v770ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_97,
+ { &hf_rrc_nonCriticalExtensions_106,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_97", HFILL }},
+ "T_nonCriticalExtensions_106", HFILL }},
{ &hf_rrc_deferredMeasurementControlReading_03,
{ "deferredMeasurementControlReading", "rrc.deferredMeasurementControlReading",
FT_UINT32, BASE_DEC, VALS(rrc_T_deferredMeasurementControlReading_03_vals), 0,
@@ -129145,10 +137713,10 @@ void proto_register_rrc(void) {
{ "radioBearerSetupFailure-r3-add-ext", "rrc.radioBearerSetupFailure_r3_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_98,
+ { &hf_rrc_nonCriticalExtensions_107,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_98", HFILL }},
+ "T_nonCriticalExtensions_107", HFILL }},
{ &hf_rrc_r3_17,
{ "r3", "rrc.r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -129189,10 +137757,18 @@ void proto_register_rrc(void) {
{ "rrcConnectionReject-v860ext", "rrc.rrcConnectionReject_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
"RRCConnectionReject_v860ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_99,
+ { &hf_rrc_va40NonCriticalExtensions_05,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_va40NonCriticalExtensions_05", HFILL }},
+ { &hf_rrc_rrcConnectionReject_va40ext,
+ { "rrcConnectionReject-va40ext", "rrc.rrcConnectionReject_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RRCConnectionReject_va40ext_IEs", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_108,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_99", HFILL }},
+ "T_nonCriticalExtensions_108", HFILL }},
{ &hf_rrc_later_than_r3_15,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -129201,10 +137777,10 @@ void proto_register_rrc(void) {
{ "initialUE-Identity", "rrc.initialUE_Identity",
FT_UINT32, BASE_DEC, VALS(rrc_InitialUE_Identity_vals), 0,
NULL, HFILL }},
- { &hf_rrc_criticalExtensions_73,
+ { &hf_rrc_criticalExtensions_82,
{ "criticalExtensions", "rrc.criticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_73", HFILL }},
+ "T_criticalExtensions_82", HFILL }},
{ &hf_rrc_rejectionCause,
{ "rejectionCause", "rrc.rejectionCause",
FT_UINT32, BASE_DEC, VALS(rrc_RejectionCause_vals), 0,
@@ -129225,6 +137801,10 @@ void proto_register_rrc(void) {
{ "redirectionInfo", "rrc.redirectionInfo",
FT_UINT32, BASE_DEC, VALS(rrc_RedirectionInfo_v860ext_vals), 0,
"RedirectionInfo_v860ext", HFILL }},
+ { &hf_rrc_extendedWaitTime,
+ { "extendedWaitTime", "rrc.extendedWaitTime",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
{ &hf_rrc_r3_18,
{ "r3", "rrc.r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -129265,18 +137845,26 @@ void proto_register_rrc(void) {
{ "rrcConnectionRelease-v860ext", "rrc.rrcConnectionRelease_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
"RRCConnectionRelease_v860ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_100,
+ { &hf_rrc_va40NonCriticalExtensions_06,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_va40NonCriticalExtensions_06", HFILL }},
+ { &hf_rrc_rrcConnectionRelease_va40ext,
+ { "rrcConnectionRelease-va40ext", "rrc.rrcConnectionRelease_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RRCConnectionRelease_va40ext_IEs", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_109,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_100", HFILL }},
+ "T_nonCriticalExtensions_109", HFILL }},
{ &hf_rrc_later_than_r3_16,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
"T_later_than_r3_16", HFILL }},
- { &hf_rrc_criticalExtensions_74,
+ { &hf_rrc_criticalExtensions_83,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_74_vals), 0,
- "T_criticalExtensions_74", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_83_vals), 0,
+ "T_criticalExtensions_83", HFILL }},
{ &hf_rrc_r4_09,
{ "r4", "rrc.r4",
FT_NONE, BASE_NONE, NULL, 0,
@@ -129305,14 +137893,18 @@ void proto_register_rrc(void) {
{ "v860NonCriticalExtensions", "rrc.v860NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v860NonCriticalExtensions_12", HFILL }},
- { &hf_rrc_nonCriticalExtensions_101,
+ { &hf_rrc_va40NonCriticalExtensions_07,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_va40NonCriticalExtensions_07", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_110,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_101", HFILL }},
- { &hf_rrc_criticalExtensions_75,
+ "T_nonCriticalExtensions_110", HFILL }},
+ { &hf_rrc_criticalExtensions_84,
{ "criticalExtensions", "rrc.criticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_75", HFILL }},
+ "T_criticalExtensions_84", HFILL }},
{ &hf_rrc_n_308,
{ "n-308", "rrc.n_308",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -129365,18 +137957,22 @@ void proto_register_rrc(void) {
{ "rrcConnectionRelease-v860ext", "rrc.rrcConnectionRelease_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
"RRCConnectionRelease_CCCH_v860ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_102,
+ { &hf_rrc_va40NonCriticalExtensions_08,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_va40NonCriticalExtensions_08", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_111,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_102", HFILL }},
+ "T_nonCriticalExtensions_111", HFILL }},
{ &hf_rrc_later_than_r3_17,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
"T_later_than_r3_17", HFILL }},
- { &hf_rrc_criticalExtensions_76,
+ { &hf_rrc_criticalExtensions_85,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_76_vals), 0,
- "T_criticalExtensions_76", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_85_vals), 0,
+ "T_criticalExtensions_85", HFILL }},
{ &hf_rrc_r4_10,
{ "r4", "rrc.r4",
FT_NONE, BASE_NONE, NULL, 0,
@@ -129401,14 +137997,18 @@ void proto_register_rrc(void) {
{ "v860NonCriticalExtensions", "rrc.v860NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v860NonCriticalExtensions_14", HFILL }},
- { &hf_rrc_nonCriticalExtensions_103,
+ { &hf_rrc_va40NonCriticalExtensions_09,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_va40NonCriticalExtensions_09", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_112,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_103", HFILL }},
- { &hf_rrc_criticalExtensions_77,
+ "T_nonCriticalExtensions_112", HFILL }},
+ { &hf_rrc_criticalExtensions_86,
{ "criticalExtensions", "rrc.criticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_77", HFILL }},
+ "T_criticalExtensions_86", HFILL }},
{ &hf_rrc_groupIdentity,
{ "groupIdentity", "rrc.groupIdentity",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -129417,10 +138017,10 @@ void proto_register_rrc(void) {
{ "GroupReleaseInformation", "rrc.GroupReleaseInformation",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_criticalExtensions_78,
+ { &hf_rrc_criticalExtensions_87,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_78_vals), 0,
- "T_criticalExtensions_78", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_87_vals), 0,
+ "T_criticalExtensions_87", HFILL }},
{ &hf_rrc_r5_08,
{ "r5", "rrc.r5",
FT_NONE, BASE_NONE, NULL, 0,
@@ -129441,14 +138041,18 @@ void proto_register_rrc(void) {
{ "v860NonCriticalExtensions", "rrc.v860NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v860NonCriticalExtensions_15", HFILL }},
- { &hf_rrc_nonCriticalExtensions_104,
+ { &hf_rrc_va40NonCriticalExtensions_10,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_va40NonCriticalExtensions_10", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_113,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_104", HFILL }},
- { &hf_rrc_criticalExtensions_79,
+ "T_nonCriticalExtensions_113", HFILL }},
+ { &hf_rrc_criticalExtensions_88,
{ "criticalExtensions", "rrc.criticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_79", HFILL }},
+ "T_criticalExtensions_88", HFILL }},
{ &hf_rrc_rrcConnectionRelease_02,
{ "rrcConnectionRelease", "rrc.rrcConnectionRelease",
FT_NONE, BASE_NONE, NULL, 0,
@@ -129469,10 +138073,10 @@ void proto_register_rrc(void) {
{ "rrcConnectionReleaseComplete-r3-add-ext", "rrc.rrcConnectionReleaseComplete_r3_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_105,
+ { &hf_rrc_nonCriticalExtensions_114,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_105", HFILL }},
+ "T_nonCriticalExtensions_114", HFILL }},
{ &hf_rrc_protocolErrorIndicator_01,
{ "protocolErrorIndicator", "rrc.protocolErrorIndicator",
FT_UINT32, BASE_DEC, VALS(rrc_ProtocolErrorIndicator_vals), 0,
@@ -129581,10 +138185,10 @@ void proto_register_rrc(void) {
{ "rrcConnectionRequest-v940ext", "rrc.rrcConnectionRequest_v940ext",
FT_NONE, BASE_NONE, NULL, 0,
"RRCConnectionRequest_v940ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_106,
- { "nonCriticalExtensions", "rrc.nonCriticalExtensions",
+ { &hf_rrc_va40NonCriticalExtensions_11,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_106", HFILL }},
+ "RRCConnectionRequest_NonCriticalExts_va40_IEs", HFILL }},
{ &hf_rrc_uESpecificBehaviourInformation1idle,
{ "uESpecificBehaviourInformation1idle", "rrc.uESpecificBehaviourInformation1idle",
FT_BYTES, BASE_NONE, NULL, 0,
@@ -129665,6 +138269,26 @@ void proto_register_rrc(void) {
{ "systemInformationContainerStoredIndicator", "rrc.systemInformationContainerStoredIndicator",
FT_UINT32, BASE_DEC, VALS(rrc_T_systemInformationContainerStoredIndicator_vals), 0,
NULL, HFILL }},
+ { &hf_rrc_rrcConnectionRequest_va40ext,
+ { "rrcConnectionRequest-va40ext", "rrc.rrcConnectionRequest_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RRCConnectionRequest_va40ext_IEs", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_115,
+ { "nonCriticalExtensions", "rrc.nonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_nonCriticalExtensions_115", HFILL }},
+ { &hf_rrc_supportOfMoreThanTwoCells,
+ { "supportOfMoreThanTwoCells", "rrc.supportOfMoreThanTwoCells",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_supportOfMoreThanTwoCells_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_supportOf1stFrequencyBand,
+ { "supportOf1stFrequencyBand", "rrc.supportOf1stFrequencyBand",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_supportOf1stFrequencyBand_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_supportOf2ndFrequencyBand,
+ { "supportOf2ndFrequencyBand", "rrc.supportOf2ndFrequencyBand",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_supportOf2ndFrequencyBand_vals), 0,
+ NULL, HFILL }},
{ &hf_rrc_r3_20,
{ "r3", "rrc.r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -129705,18 +138329,18 @@ void proto_register_rrc(void) {
{ "rrcConnectionSetup-v690ext", "rrc.rrcConnectionSetup_v690ext",
FT_NONE, BASE_NONE, NULL, 0,
"RRCConnectionSetup_v690ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_107,
+ { &hf_rrc_nonCriticalExtensions_116,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_107", HFILL }},
+ "T_nonCriticalExtensions_116", HFILL }},
{ &hf_rrc_later_than_r3_18,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
"T_later_than_r3_18", HFILL }},
- { &hf_rrc_criticalExtensions_80,
+ { &hf_rrc_criticalExtensions_89,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_80_vals), 0,
- "T_criticalExtensions_80", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_89_vals), 0,
+ "T_criticalExtensions_89", HFILL }},
{ &hf_rrc_r4_11,
{ "r4", "rrc.r4",
FT_NONE, BASE_NONE, NULL, 0,
@@ -129741,14 +138365,14 @@ void proto_register_rrc(void) {
{ "v690NonCriticalExtensions", "rrc.v690NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v690NonCriticalExtensions_33", HFILL }},
- { &hf_rrc_nonCriticalExtensions_108,
+ { &hf_rrc_nonCriticalExtensions_117,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_108", HFILL }},
- { &hf_rrc_criticalExtensions_81,
+ "T_nonCriticalExtensions_117", HFILL }},
+ { &hf_rrc_criticalExtensions_90,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_81_vals), 0,
- "T_criticalExtensions_81", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_90_vals), 0,
+ "T_criticalExtensions_90", HFILL }},
{ &hf_rrc_r5_09,
{ "r5", "rrc.r5",
FT_NONE, BASE_NONE, NULL, 0,
@@ -129765,14 +138389,14 @@ void proto_register_rrc(void) {
{ "v690NonCriticalExtensions", "rrc.v690NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v690NonCriticalExtensions_34", HFILL }},
- { &hf_rrc_nonCriticalExtensions_109,
+ { &hf_rrc_nonCriticalExtensions_118,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_109", HFILL }},
- { &hf_rrc_criticalExtensions_82,
+ "T_nonCriticalExtensions_118", HFILL }},
+ { &hf_rrc_criticalExtensions_91,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_82_vals), 0,
- "T_criticalExtensions_82", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_91_vals), 0,
+ "T_criticalExtensions_91", HFILL }},
{ &hf_rrc_r6_10,
{ "r6", "rrc.r6",
FT_NONE, BASE_NONE, NULL, 0,
@@ -129793,14 +138417,14 @@ void proto_register_rrc(void) {
{ "rrcConnectionSetup-v6b0ext", "rrc.rrcConnectionSetup_v6b0ext",
FT_NONE, BASE_NONE, NULL, 0,
"RRCConnectionSetup_v6b0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_110,
+ { &hf_rrc_nonCriticalExtensions_119,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_110", HFILL }},
- { &hf_rrc_criticalExtensions_83,
+ "T_nonCriticalExtensions_119", HFILL }},
+ { &hf_rrc_criticalExtensions_92,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_83_vals), 0,
- "T_criticalExtensions_83", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_92_vals), 0,
+ "T_criticalExtensions_92", HFILL }},
{ &hf_rrc_r7_09,
{ "r7", "rrc.r7",
FT_NONE, BASE_NONE, NULL, 0,
@@ -129829,14 +138453,14 @@ void proto_register_rrc(void) {
{ "rrcConnectionSetup-v7d0ext", "rrc.rrcConnectionSetup_v7d0ext",
FT_NONE, BASE_NONE, NULL, 0,
"RRCConnectionSetup_v7d0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_111,
+ { &hf_rrc_nonCriticalExtensions_120,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_111", HFILL }},
- { &hf_rrc_criticalExtensions_84,
+ "T_nonCriticalExtensions_120", HFILL }},
+ { &hf_rrc_criticalExtensions_93,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_84_vals), 0,
- "T_criticalExtensions_84", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_93_vals), 0,
+ "T_criticalExtensions_93", HFILL }},
{ &hf_rrc_r8_10,
{ "r8", "rrc.r8",
FT_NONE, BASE_NONE, NULL, 0,
@@ -129869,14 +138493,14 @@ void proto_register_rrc(void) {
{ "rrcConnectionSetup-v8a0ext", "rrc.rrcConnectionSetup_v8a0ext",
FT_NONE, BASE_NONE, NULL, 0,
"RRCConnectionSetup_v8a0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_112,
+ { &hf_rrc_nonCriticalExtensions_121,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_112", HFILL }},
- { &hf_rrc_criticalExtensions_85,
+ "T_nonCriticalExtensions_121", HFILL }},
+ { &hf_rrc_criticalExtensions_94,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_85_vals), 0,
- "T_criticalExtensions_85", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_94_vals), 0,
+ "T_criticalExtensions_94", HFILL }},
{ &hf_rrc_r9_09,
{ "r9", "rrc.r9",
FT_NONE, BASE_NONE, NULL, 0,
@@ -129897,14 +138521,34 @@ void proto_register_rrc(void) {
{ "rrcConnectionSetup-v950ext", "rrc.rrcConnectionSetup_v950ext",
FT_NONE, BASE_NONE, NULL, 0,
"RRCConnectionSetup_v950ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_113,
+ { &hf_rrc_nonCriticalExtensions_122,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_113", HFILL }},
- { &hf_rrc_criticalExtensions_86,
+ "T_nonCriticalExtensions_122", HFILL }},
+ { &hf_rrc_criticalExtensions_95,
{ "criticalExtensions", "rrc.criticalExtensions",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_95_vals), 0,
+ "T_criticalExtensions_95", HFILL }},
+ { &hf_rrc_r10_09,
+ { "r10", "rrc.r10",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_86", HFILL }},
+ "T_r10_09", HFILL }},
+ { &hf_rrc_rrcConnectionSetup_r10,
+ { "rrcConnectionSetup-r10", "rrc.rrcConnectionSetup_r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RRCConnectionSetup_r10_IEs", HFILL }},
+ { &hf_rrc_rrcConnectionSetup_r10_add_ext,
+ { "rrcConnectionSetup-r10-add-ext", "rrc.rrcConnectionSetup_r10_add_ext",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_123,
+ { "nonCriticalExtensions", "rrc.nonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_nonCriticalExtensions_123", HFILL }},
+ { &hf_rrc_criticalExtensions_96,
+ { "criticalExtensions", "rrc.criticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_criticalExtensions_96", HFILL }},
{ &hf_rrc_new_c_RNTI,
{ "new-c-RNTI", "rrc.new_c_RNTI",
FT_BYTES, BASE_NONE, NULL, 0,
@@ -129933,26 +138577,26 @@ void proto_register_rrc(void) {
{ "capabilityUpdateRequirement", "rrc.capabilityUpdateRequirement",
FT_NONE, BASE_NONE, NULL, 0,
"CapabilityUpdateRequirement_r5", HFILL }},
- { &hf_rrc_specificationMode_15,
+ { &hf_rrc_specificationMode_17,
{ "specificationMode", "rrc.specificationMode",
- FT_UINT32, BASE_DEC, VALS(rrc_T_specificationMode_15_vals), 0,
- "T_specificationMode_15", HFILL }},
- { &hf_rrc_complete_15,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_specificationMode_17_vals), 0,
+ "T_specificationMode_17", HFILL }},
+ { &hf_rrc_complete_17,
{ "complete", "rrc.complete",
FT_NONE, BASE_NONE, NULL, 0,
- "T_complete_15", HFILL }},
- { &hf_rrc_preconfiguration_12,
+ "T_complete_17", HFILL }},
+ { &hf_rrc_preconfiguration_14,
{ "preconfiguration", "rrc.preconfiguration",
FT_NONE, BASE_NONE, NULL, 0,
- "T_preconfiguration_12", HFILL }},
- { &hf_rrc_preConfigMode_12,
+ "T_preconfiguration_14", HFILL }},
+ { &hf_rrc_preConfigMode_14,
{ "preConfigMode", "rrc.preConfigMode",
- FT_UINT32, BASE_DEC, VALS(rrc_T_preConfigMode_12_vals), 0,
- "T_preConfigMode_12", HFILL }},
- { &hf_rrc_defaultConfig_12,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_preConfigMode_14_vals), 0,
+ "T_preConfigMode_14", HFILL }},
+ { &hf_rrc_defaultConfig_14,
{ "defaultConfig", "rrc.defaultConfig",
FT_NONE, BASE_NONE, NULL, 0,
- "T_defaultConfig_12", HFILL }},
+ "T_defaultConfig_14", HFILL }},
{ &hf_rrc_dl_InformationPerRL_List_07,
{ "dl-InformationPerRL-List", "rrc.dl_InformationPerRL_List",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -129961,106 +138605,126 @@ void proto_register_rrc(void) {
{ "postVerificationPeriod", "rrc.postVerificationPeriod",
FT_UINT32, BASE_DEC, VALS(rrc_T_postVerificationPeriod_05_vals), 0,
"T_postVerificationPeriod_05", HFILL }},
- { &hf_rrc_specificationMode_16,
+ { &hf_rrc_specificationMode_18,
{ "specificationMode", "rrc.specificationMode",
- FT_UINT32, BASE_DEC, VALS(rrc_T_specificationMode_16_vals), 0,
- "T_specificationMode_16", HFILL }},
- { &hf_rrc_complete_16,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_specificationMode_18_vals), 0,
+ "T_specificationMode_18", HFILL }},
+ { &hf_rrc_complete_18,
{ "complete", "rrc.complete",
FT_NONE, BASE_NONE, NULL, 0,
- "T_complete_16", HFILL }},
+ "T_complete_18", HFILL }},
{ &hf_rrc_srb_InformationSetupList_06,
{ "srb-InformationSetupList", "rrc.srb_InformationSetupList",
FT_UINT32, BASE_DEC, NULL, 0,
"SRB_InformationSetupList2_r6", HFILL }},
- { &hf_rrc_preconfiguration_13,
+ { &hf_rrc_preconfiguration_15,
{ "preconfiguration", "rrc.preconfiguration",
FT_NONE, BASE_NONE, NULL, 0,
- "T_preconfiguration_13", HFILL }},
- { &hf_rrc_preConfigMode_13,
+ "T_preconfiguration_15", HFILL }},
+ { &hf_rrc_preConfigMode_15,
{ "preConfigMode", "rrc.preConfigMode",
- FT_UINT32, BASE_DEC, VALS(rrc_T_preConfigMode_13_vals), 0,
- "T_preConfigMode_13", HFILL }},
- { &hf_rrc_defaultConfig_13,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_preConfigMode_15_vals), 0,
+ "T_preConfigMode_15", HFILL }},
+ { &hf_rrc_defaultConfig_15,
{ "defaultConfig", "rrc.defaultConfig",
FT_NONE, BASE_NONE, NULL, 0,
- "T_defaultConfig_13", HFILL }},
+ "T_defaultConfig_15", HFILL }},
{ &hf_rrc_capabilityUpdateRequirement_03,
{ "capabilityUpdateRequirement", "rrc.capabilityUpdateRequirement",
FT_NONE, BASE_NONE, NULL, 0,
"CapabilityUpdateRequirement_r7", HFILL }},
- { &hf_rrc_specificationMode_17,
+ { &hf_rrc_specificationMode_19,
{ "specificationMode", "rrc.specificationMode",
- FT_UINT32, BASE_DEC, VALS(rrc_T_specificationMode_17_vals), 0,
- "T_specificationMode_17", HFILL }},
- { &hf_rrc_complete_17,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_specificationMode_19_vals), 0,
+ "T_specificationMode_19", HFILL }},
+ { &hf_rrc_complete_19,
{ "complete", "rrc.complete",
FT_NONE, BASE_NONE, NULL, 0,
- "T_complete_17", HFILL }},
+ "T_complete_19", HFILL }},
{ &hf_rrc_srb_InformationSetupList_07,
{ "srb-InformationSetupList", "rrc.srb_InformationSetupList",
FT_UINT32, BASE_DEC, NULL, 0,
"SRB_InformationSetupList2_r7", HFILL }},
- { &hf_rrc_preconfiguration_14,
+ { &hf_rrc_preconfiguration_16,
{ "preconfiguration", "rrc.preconfiguration",
FT_NONE, BASE_NONE, NULL, 0,
- "T_preconfiguration_14", HFILL }},
- { &hf_rrc_preConfigMode_14,
+ "T_preconfiguration_16", HFILL }},
+ { &hf_rrc_preConfigMode_16,
{ "preConfigMode", "rrc.preConfigMode",
- FT_UINT32, BASE_DEC, VALS(rrc_T_preConfigMode_14_vals), 0,
- "T_preConfigMode_14", HFILL }},
- { &hf_rrc_defaultConfig_14,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_preConfigMode_16_vals), 0,
+ "T_preConfigMode_16", HFILL }},
+ { &hf_rrc_defaultConfig_16,
{ "defaultConfig", "rrc.defaultConfig",
FT_NONE, BASE_NONE, NULL, 0,
- "T_defaultConfig_14", HFILL }},
+ "T_defaultConfig_16", HFILL }},
{ &hf_rrc_capabilityUpdateRequirement_04,
{ "capabilityUpdateRequirement", "rrc.capabilityUpdateRequirement",
FT_NONE, BASE_NONE, NULL, 0,
"CapabilityUpdateRequirement_r8", HFILL }},
- { &hf_rrc_specificationMode_18,
+ { &hf_rrc_specificationMode_20,
{ "specificationMode", "rrc.specificationMode",
- FT_UINT32, BASE_DEC, VALS(rrc_T_specificationMode_18_vals), 0,
- "T_specificationMode_18", HFILL }},
- { &hf_rrc_complete_18,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_specificationMode_20_vals), 0,
+ "T_specificationMode_20", HFILL }},
+ { &hf_rrc_complete_20,
{ "complete", "rrc.complete",
FT_NONE, BASE_NONE, NULL, 0,
- "T_complete_18", HFILL }},
+ "T_complete_20", HFILL }},
{ &hf_rrc_srb_InformationSetupList_08,
{ "srb-InformationSetupList", "rrc.srb_InformationSetupList",
FT_UINT32, BASE_DEC, NULL, 0,
"SRB_InformationSetupList2_r8", HFILL }},
- { &hf_rrc_preconfiguration_15,
+ { &hf_rrc_preconfiguration_17,
{ "preconfiguration", "rrc.preconfiguration",
FT_NONE, BASE_NONE, NULL, 0,
- "T_preconfiguration_15", HFILL }},
- { &hf_rrc_preConfigMode_15,
+ "T_preconfiguration_17", HFILL }},
+ { &hf_rrc_preConfigMode_17,
{ "preConfigMode", "rrc.preConfigMode",
- FT_UINT32, BASE_DEC, VALS(rrc_T_preConfigMode_15_vals), 0,
- "T_preConfigMode_15", HFILL }},
- { &hf_rrc_defaultConfig_15,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_preConfigMode_17_vals), 0,
+ "T_preConfigMode_17", HFILL }},
+ { &hf_rrc_defaultConfig_17,
{ "defaultConfig", "rrc.defaultConfig",
FT_NONE, BASE_NONE, NULL, 0,
- "T_defaultConfig_15", HFILL }},
- { &hf_rrc_specificationMode_19,
+ "T_defaultConfig_17", HFILL }},
+ { &hf_rrc_specificationMode_21,
{ "specificationMode", "rrc.specificationMode",
- FT_UINT32, BASE_DEC, VALS(rrc_T_specificationMode_19_vals), 0,
- "T_specificationMode_19", HFILL }},
- { &hf_rrc_complete_19,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_specificationMode_21_vals), 0,
+ "T_specificationMode_21", HFILL }},
+ { &hf_rrc_complete_21,
{ "complete", "rrc.complete",
FT_NONE, BASE_NONE, NULL, 0,
- "T_complete_19", HFILL }},
- { &hf_rrc_preconfiguration_16,
+ "T_complete_21", HFILL }},
+ { &hf_rrc_preconfiguration_18,
{ "preconfiguration", "rrc.preconfiguration",
FT_NONE, BASE_NONE, NULL, 0,
- "T_preconfiguration_16", HFILL }},
- { &hf_rrc_preConfigMode_16,
+ "T_preconfiguration_18", HFILL }},
+ { &hf_rrc_preConfigMode_18,
{ "preConfigMode", "rrc.preConfigMode",
- FT_UINT32, BASE_DEC, VALS(rrc_T_preConfigMode_16_vals), 0,
- "T_preConfigMode_16", HFILL }},
- { &hf_rrc_defaultConfig_16,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_preConfigMode_18_vals), 0,
+ "T_preConfigMode_18", HFILL }},
+ { &hf_rrc_defaultConfig_18,
{ "defaultConfig", "rrc.defaultConfig",
FT_NONE, BASE_NONE, NULL, 0,
- "T_defaultConfig_16", HFILL }},
+ "T_defaultConfig_18", HFILL }},
+ { &hf_rrc_specificationMode_22,
+ { "specificationMode", "rrc.specificationMode",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_specificationMode_22_vals), 0,
+ "T_specificationMode_22", HFILL }},
+ { &hf_rrc_complete_22,
+ { "complete", "rrc.complete",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_complete_22", HFILL }},
+ { &hf_rrc_preconfiguration_19,
+ { "preconfiguration", "rrc.preconfiguration",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_preconfiguration_19", HFILL }},
+ { &hf_rrc_preConfigMode_19,
+ { "preConfigMode", "rrc.preConfigMode",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_preConfigMode_19_vals), 0,
+ "T_preConfigMode_19", HFILL }},
+ { &hf_rrc_defaultConfig_19,
+ { "defaultConfig", "rrc.defaultConfig",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_defaultConfig_19", HFILL }},
{ &hf_rrc_ue_RadioAccessCapability_02,
{ "ue-RadioAccessCapability", "rrc.ue_RadioAccessCapability",
FT_NONE, BASE_NONE, NULL, 0,
@@ -130149,10 +138813,18 @@ void proto_register_rrc(void) {
{ "rrcConectionSetupComplete-v770ext", "rrc.rrcConectionSetupComplete_v770ext",
FT_NONE, BASE_NONE, NULL, 0,
"RRCConnectionSetupComplete_v770ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_114,
+ { &hf_rrc_va40NonCriticalExtensions_12,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_va40NonCriticalExtensions_11", HFILL }},
+ { &hf_rrc_rrcConectionSetupComplete_va40ext,
+ { "rrcConectionSetupComplete-va40ext", "rrc.rrcConectionSetupComplete_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RRCConnectionSetupComplete_va40ext_IEs", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_124,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_114", HFILL }},
+ "T_nonCriticalExtensions_124", HFILL }},
{ &hf_rrc_ue_RadioAccessCapability_v370ext,
{ "ue-RadioAccessCapability-v370ext", "rrc.ue_RadioAccessCapability_v370ext",
FT_NONE, BASE_NONE, NULL, 0,
@@ -130185,10 +138857,18 @@ void proto_register_rrc(void) {
{ "rrcConnectionSetupComplete-v7f0ext", "rrc.rrcConnectionSetupComplete_v7f0ext",
FT_NONE, BASE_NONE, NULL, 0,
"RRCConnectionSetupComplete_v7f0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_115,
+ { &hf_rrc_va40NonCriticalExtensions_13,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_va40NonCriticalExtensions_12", HFILL }},
+ { &hf_rrc_rrcConnectionSetupCompleteBand_va40ext,
+ { "rrcConnectionSetupCompleteBand-va40ext", "rrc.rrcConnectionSetupCompleteBand_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RRCConnectionSetupCompleteBand_va40ext_IEs", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_125,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_115", HFILL }},
+ "T_nonCriticalExtensions_125", HFILL }},
{ &hf_rrc_ue_RadioAccessCapability_v4b0ext,
{ "ue-RadioAccessCapability-v4b0ext", "rrc.ue_RadioAccessCapability_v4b0ext",
FT_NONE, BASE_NONE, NULL, 0,
@@ -130217,6 +138897,14 @@ void proto_register_rrc(void) {
{ "deferredMeasurementControlReading", "rrc.deferredMeasurementControlReading",
FT_UINT32, BASE_DEC, VALS(rrc_T_deferredMeasurementControlReading_04_vals), 0,
"T_deferredMeasurementControlReading_04", HFILL }},
+ { &hf_rrc_loggedMeasAvailable_03,
+ { "loggedMeasAvailable", "rrc.loggedMeasAvailable",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_loggedMeasAvailable_03_vals), 0,
+ "T_loggedMeasAvailable_03", HFILL }},
+ { &hf_rrc_loggedANRResultsAvailable_02,
+ { "loggedANRResultsAvailable", "rrc.loggedANRResultsAvailable",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_loggedANRResultsAvailable_02_vals), 0,
+ "T_loggedANRResultsAvailable_02", HFILL }},
{ &hf_rrc_r3_21,
{ "r3", "rrc.r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -130233,14 +138921,14 @@ void proto_register_rrc(void) {
{ "rrc-FailureInfo-r3-add-ext", "rrc.rrc_FailureInfo_r3_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_116,
+ { &hf_rrc_nonCriticalExtensions_126,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_116", HFILL }},
- { &hf_rrc_criticalExtensions_87,
+ "T_nonCriticalExtensions_126", HFILL }},
+ { &hf_rrc_criticalExtensions_97,
{ "criticalExtensions", "rrc.criticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_87", HFILL }},
+ "T_criticalExtensions_97", HFILL }},
{ &hf_rrc_failureCauseWithProtErr,
{ "failureCauseWithProtErr", "rrc.failureCauseWithProtErr",
FT_UINT32, BASE_DEC, VALS(rrc_FailureCauseWithProtErr_vals), 0,
@@ -130257,10 +138945,10 @@ void proto_register_rrc(void) {
{ "rrcStatus-r3-add-ext", "rrc.rrcStatus_r3_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_117,
+ { &hf_rrc_nonCriticalExtensions_127,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_117", HFILL }},
+ "T_nonCriticalExtensions_127", HFILL }},
{ &hf_rrc_r3_22,
{ "r3", "rrc.r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -130277,18 +138965,18 @@ void proto_register_rrc(void) {
{ "securityModeCommand-r3-add-ext", "rrc.securityModeCommand_r3_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_118,
+ { &hf_rrc_nonCriticalExtensions_128,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_118", HFILL }},
+ "T_nonCriticalExtensions_128", HFILL }},
{ &hf_rrc_later_than_r3_19,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
"T_later_than_r3_19", HFILL }},
- { &hf_rrc_criticalExtensions_88,
+ { &hf_rrc_criticalExtensions_98,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_88_vals), 0,
- "T_criticalExtensions_88", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_98_vals), 0,
+ "T_criticalExtensions_98", HFILL }},
{ &hf_rrc_r7_10,
{ "r7", "rrc.r7",
FT_NONE, BASE_NONE, NULL, 0,
@@ -130301,14 +138989,14 @@ void proto_register_rrc(void) {
{ "securityModeCommand-r7-add-ext", "rrc.securityModeCommand_r7_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_119,
+ { &hf_rrc_nonCriticalExtensions_129,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_119", HFILL }},
- { &hf_rrc_criticalExtensions_89,
+ "T_nonCriticalExtensions_129", HFILL }},
+ { &hf_rrc_criticalExtensions_99,
{ "criticalExtensions", "rrc.criticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_89", HFILL }},
+ "T_criticalExtensions_99", HFILL }},
{ &hf_rrc_securityCapability,
{ "securityCapability", "rrc.securityCapability",
FT_NONE, BASE_NONE, NULL, 0,
@@ -130329,10 +139017,10 @@ void proto_register_rrc(void) {
{ "securityModeComplete-r3-add-ext", "rrc.securityModeComplete_r3_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_120,
+ { &hf_rrc_nonCriticalExtensions_130,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_120", HFILL }},
+ "T_nonCriticalExtensions_130", HFILL }},
{ &hf_rrc_laterNonCriticalExtensions_47,
{ "laterNonCriticalExtensions", "rrc.laterNonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
@@ -130341,10 +139029,10 @@ void proto_register_rrc(void) {
{ "securityModeFailure-r3-add-ext", "rrc.securityModeFailure_r3_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_121,
+ { &hf_rrc_nonCriticalExtensions_131,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_121", HFILL }},
+ "T_nonCriticalExtensions_131", HFILL }},
{ &hf_rrc_r3_23,
{ "r3", "rrc.r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -130361,18 +139049,26 @@ void proto_register_rrc(void) {
{ "signallingConnectionRelease-r3-add-ext", "rrc.signallingConnectionRelease_r3_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_122,
+ { &hf_rrc_va40NonCriticalExtensions_14,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_va40NonCriticalExtensions_13", HFILL }},
+ { &hf_rrc_signallingConnectionRelease_va40ext,
+ { "signallingConnectionRelease-va40ext", "rrc.signallingConnectionRelease_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SignallingConnectionRelease_va40ext_IEs", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_132,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_122", HFILL }},
+ "T_nonCriticalExtensions_132", HFILL }},
{ &hf_rrc_later_than_r3_20,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
"T_later_than_r3_20", HFILL }},
- { &hf_rrc_criticalExtensions_90,
+ { &hf_rrc_criticalExtensions_100,
{ "criticalExtensions", "rrc.criticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_90", HFILL }},
+ "T_criticalExtensions_100", HFILL }},
{ &hf_rrc_laterNonCriticalExtensions_49,
{ "laterNonCriticalExtensions", "rrc.laterNonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
@@ -130389,10 +139085,10 @@ void proto_register_rrc(void) {
{ "signallingConnectionReleaseIndication-v860ext", "rrc.signallingConnectionReleaseIndication_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_nonCriticalExtensions_123,
+ { &hf_rrc_nonCriticalExtensions_133,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_123", HFILL }},
+ "T_nonCriticalExtensions_133", HFILL }},
{ &hf_rrc_signallingConnectionReleaseIndicationCause,
{ "signallingConnectionReleaseIndicationCause", "rrc.signallingConnectionReleaseIndicationCause",
FT_UINT32, BASE_DEC, VALS(rrc_T_signallingConnectionReleaseIndicationCause_vals), 0,
@@ -130475,7 +139171,7 @@ void proto_register_rrc(void) {
"T_completeAndFirst_01", HFILL }},
{ &hf_rrc_sib_Type,
{ "sib-Type", "rrc.sib_Type",
- FT_UINT32, BASE_DEC, VALS(rrc_SIB_Type_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_SIB_Type_vals_ext, 0,
NULL, HFILL }},
{ &hf_rrc_seg_Count,
{ "seg-Count", "rrc.seg_Count",
@@ -130517,10 +139213,10 @@ void proto_register_rrc(void) {
{ "systemInformationChangeIndication-v860ext", "rrc.systemInformationChangeIndication_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
"SystemInformationChangeIndication_v860ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_124,
+ { &hf_rrc_nonCriticalExtensions_134,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_124", HFILL }},
+ "T_nonCriticalExtensions_134", HFILL }},
{ &hf_rrc_r3_24,
{ "r3", "rrc.r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -130577,18 +139273,18 @@ void proto_register_rrc(void) {
{ "transportChannelReconfiguration-v770ext", "rrc.transportChannelReconfiguration_v770ext",
FT_NONE, BASE_NONE, NULL, 0,
"TransportChannelReconfiguration_v770ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_125,
+ { &hf_rrc_nonCriticalExtensions_135,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_125", HFILL }},
+ "T_nonCriticalExtensions_135", HFILL }},
{ &hf_rrc_later_than_r3_21,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
"T_later_than_r3_21", HFILL }},
- { &hf_rrc_criticalExtensions_91,
+ { &hf_rrc_criticalExtensions_101,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_91_vals), 0,
- "T_criticalExtensions_91", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_101_vals), 0,
+ "T_criticalExtensions_101", HFILL }},
{ &hf_rrc_r4_12,
{ "r4", "rrc.r4",
FT_NONE, BASE_NONE, NULL, 0,
@@ -130617,14 +139313,14 @@ void proto_register_rrc(void) {
{ "v770NonCriticalExtensions", "rrc.v770NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v770NonCriticalExtensions_26", HFILL }},
- { &hf_rrc_nonCriticalExtensions_126,
+ { &hf_rrc_nonCriticalExtensions_136,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_126", HFILL }},
- { &hf_rrc_criticalExtensions_92,
+ "T_nonCriticalExtensions_136", HFILL }},
+ { &hf_rrc_criticalExtensions_102,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_92_vals), 0,
- "T_criticalExtensions_92", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_102_vals), 0,
+ "T_criticalExtensions_102", HFILL }},
{ &hf_rrc_r5_10,
{ "r5", "rrc.r5",
FT_NONE, BASE_NONE, NULL, 0,
@@ -130645,14 +139341,14 @@ void proto_register_rrc(void) {
{ "v770NonCriticalExtensions", "rrc.v770NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v770NonCriticalExtensions_27", HFILL }},
- { &hf_rrc_nonCriticalExtensions_127,
+ { &hf_rrc_nonCriticalExtensions_137,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_127", HFILL }},
- { &hf_rrc_criticalExtensions_93,
+ "T_nonCriticalExtensions_137", HFILL }},
+ { &hf_rrc_criticalExtensions_103,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_93_vals), 0,
- "T_criticalExtensions_93", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_103_vals), 0,
+ "T_criticalExtensions_103", HFILL }},
{ &hf_rrc_r6_11,
{ "r6", "rrc.r6",
FT_NONE, BASE_NONE, NULL, 0,
@@ -130677,14 +139373,14 @@ void proto_register_rrc(void) {
{ "v770NonCriticalExtensions", "rrc.v770NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v770NonCriticalExtensions_28", HFILL }},
- { &hf_rrc_nonCriticalExtensions_128,
+ { &hf_rrc_nonCriticalExtensions_138,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_128", HFILL }},
- { &hf_rrc_criticalExtensions_94,
+ "T_nonCriticalExtensions_138", HFILL }},
+ { &hf_rrc_criticalExtensions_104,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_94_vals), 0,
- "T_criticalExtensions_94", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_104_vals), 0,
+ "T_criticalExtensions_104", HFILL }},
{ &hf_rrc_r7_11,
{ "r7", "rrc.r7",
FT_NONE, BASE_NONE, NULL, 0,
@@ -130729,14 +139425,14 @@ void proto_register_rrc(void) {
{ "transportChannelReconfiguration-v7g0ext", "rrc.transportChannelReconfiguration_v7g0ext",
FT_NONE, BASE_NONE, NULL, 0,
"TransportChannelReconfiguration_v7g0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_129,
+ { &hf_rrc_nonCriticalExtensions_139,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_129", HFILL }},
- { &hf_rrc_criticalExtensions_95,
+ "T_nonCriticalExtensions_139", HFILL }},
+ { &hf_rrc_criticalExtensions_105,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_95_vals), 0,
- "T_criticalExtensions_95", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_105_vals), 0,
+ "T_criticalExtensions_105", HFILL }},
{ &hf_rrc_r8_11,
{ "r8", "rrc.r8",
FT_NONE, BASE_NONE, NULL, 0,
@@ -130777,14 +139473,14 @@ void proto_register_rrc(void) {
{ "transportChannelReconfiguration-v8a0ext", "rrc.transportChannelReconfiguration_v8a0ext",
FT_NONE, BASE_NONE, NULL, 0,
"TransportChannelReconfiguration_v8a0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_130,
+ { &hf_rrc_nonCriticalExtensions_140,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_130", HFILL }},
- { &hf_rrc_criticalExtensions_96,
+ "T_nonCriticalExtensions_140", HFILL }},
+ { &hf_rrc_criticalExtensions_106,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_96_vals), 0,
- "T_criticalExtensions_96", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_106_vals), 0,
+ "T_criticalExtensions_106", HFILL }},
{ &hf_rrc_r9_10,
{ "r9", "rrc.r9",
FT_NONE, BASE_NONE, NULL, 0,
@@ -130805,78 +139501,102 @@ void proto_register_rrc(void) {
{ "transportChannelReconfiguration-v950ext", "rrc.transportChannelReconfiguration_v950ext",
FT_NONE, BASE_NONE, NULL, 0,
"TransportChannelReconfiguration_v950ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_131,
+ { &hf_rrc_nonCriticalExtensions_141,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_131", HFILL }},
- { &hf_rrc_criticalExtensions_97,
+ "T_nonCriticalExtensions_141", HFILL }},
+ { &hf_rrc_criticalExtensions_107,
{ "criticalExtensions", "rrc.criticalExtensions",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_107_vals), 0,
+ "T_criticalExtensions_107", HFILL }},
+ { &hf_rrc_r10_10,
+ { "r10", "rrc.r10",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_97", HFILL }},
- { &hf_rrc_dummy_20,
+ "T_r10_10", HFILL }},
+ { &hf_rrc_transportChannelReconfiguration_r10,
+ { "transportChannelReconfiguration-r10", "rrc.transportChannelReconfiguration_r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "TransportChannelReconfiguration_r10_IEs", HFILL }},
+ { &hf_rrc_transportChannelReconfiguration_r10_add_ext,
+ { "transportChannelReconfiguration-r10-add-ext", "rrc.transportChannelReconfiguration_r10_add_ext",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_142,
+ { "nonCriticalExtensions", "rrc.nonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_nonCriticalExtensions_142", HFILL }},
+ { &hf_rrc_criticalExtensions_108,
+ { "criticalExtensions", "rrc.criticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_criticalExtensions_108", HFILL }},
+ { &hf_rrc_dummy_24,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, VALS(rrc_T_dummy_11_vals), 0,
"T_dummy_11", HFILL }},
- { &hf_rrc_fdd_37,
+ { &hf_rrc_fdd_38,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_37", HFILL }},
+ "T_fdd_38", HFILL }},
{ &hf_rrc_modeSpecificPhysChInfo_12,
{ "modeSpecificPhysChInfo", "rrc.modeSpecificPhysChInfo",
FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificPhysChInfo_12_vals), 0,
"T_modeSpecificPhysChInfo_12", HFILL }},
- { &hf_rrc_fdd_38,
+ { &hf_rrc_fdd_39,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_38", HFILL }},
- { &hf_rrc_dummy_21,
+ "T_fdd_39", HFILL }},
+ { &hf_rrc_dummy_25,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, VALS(rrc_T_dummy_12_vals), 0,
"T_dummy_12", HFILL }},
- { &hf_rrc_fdd_39,
+ { &hf_rrc_fdd_40,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_39", HFILL }},
+ "T_fdd_40", HFILL }},
{ &hf_rrc_modeSpecificPhysChInfo_13,
{ "modeSpecificPhysChInfo", "rrc.modeSpecificPhysChInfo",
FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificPhysChInfo_13_vals), 0,
"T_modeSpecificPhysChInfo_13", HFILL }},
- { &hf_rrc_fdd_40,
+ { &hf_rrc_fdd_41,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_40", HFILL }},
- { &hf_rrc_dummy_22,
+ "T_fdd_41", HFILL }},
+ { &hf_rrc_dummy_26,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, VALS(rrc_T_dummy_13_vals), 0,
"T_dummy_13", HFILL }},
- { &hf_rrc_fdd_41,
+ { &hf_rrc_fdd_42,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_41", HFILL }},
+ "T_fdd_42", HFILL }},
{ &hf_rrc_modeSpecificPhysChInfo_14,
{ "modeSpecificPhysChInfo", "rrc.modeSpecificPhysChInfo",
FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificPhysChInfo_14_vals), 0,
"T_modeSpecificPhysChInfo_14", HFILL }},
- { &hf_rrc_fdd_42,
+ { &hf_rrc_fdd_43,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_42", HFILL }},
+ "T_fdd_43", HFILL }},
{ &hf_rrc_postVerificationPeriod_06,
{ "postVerificationPeriod", "rrc.postVerificationPeriod",
FT_UINT32, BASE_DEC, VALS(rrc_T_postVerificationPeriod_06_vals), 0,
"T_postVerificationPeriod_06", HFILL }},
- { &hf_rrc_responseToChangeOfUE_Capability_06,
- { "responseToChangeOfUE-Capability", "rrc.responseToChangeOfUE_Capability",
- FT_UINT32, BASE_DEC, VALS(rrc_T_responseToChangeOfUE_Capability_06_vals), 0,
- "T_responseToChangeOfUE_Capability_06", HFILL }},
- { &hf_rrc_responseToChangeOfUE_Capability_07,
- { "responseToChangeOfUE-Capability", "rrc.responseToChangeOfUE_Capability",
- FT_UINT32, BASE_DEC, VALS(rrc_T_responseToChangeOfUE_Capability_07_vals), 0,
- "T_responseToChangeOfUE_Capability_07", HFILL }},
{ &hf_rrc_responseToChangeOfUE_Capability_08,
{ "responseToChangeOfUE-Capability", "rrc.responseToChangeOfUE_Capability",
FT_UINT32, BASE_DEC, VALS(rrc_T_responseToChangeOfUE_Capability_08_vals), 0,
"T_responseToChangeOfUE_Capability_08", HFILL }},
+ { &hf_rrc_responseToChangeOfUE_Capability_09,
+ { "responseToChangeOfUE-Capability", "rrc.responseToChangeOfUE_Capability",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_responseToChangeOfUE_Capability_09_vals), 0,
+ "T_responseToChangeOfUE_Capability_09", HFILL }},
+ { &hf_rrc_responseToChangeOfUE_Capability_10,
+ { "responseToChangeOfUE-Capability", "rrc.responseToChangeOfUE_Capability",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_responseToChangeOfUE_Capability_10_vals), 0,
+ "T_responseToChangeOfUE_Capability_10", HFILL }},
+ { &hf_rrc_responseToChangeOfUE_Capability_11,
+ { "responseToChangeOfUE-Capability", "rrc.responseToChangeOfUE_Capability",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_responseToChangeOfUE_Capability_11_vals), 0,
+ "T_responseToChangeOfUE_Capability_11", HFILL }},
{ &hf_rrc_laterNonCriticalExtensions_52,
{ "laterNonCriticalExtensions", "rrc.laterNonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
@@ -130893,10 +139613,10 @@ void proto_register_rrc(void) {
{ "transportChannelReconfigurationComplete-v770ext", "rrc.transportChannelReconfigurationComplete_v770ext",
FT_NONE, BASE_NONE, NULL, 0,
"TransportChannelReconfigurationComplete_v770ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_132,
+ { &hf_rrc_nonCriticalExtensions_143,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_132", HFILL }},
+ "T_nonCriticalExtensions_143", HFILL }},
{ &hf_rrc_deferredMeasurementControlReading_05,
{ "deferredMeasurementControlReading", "rrc.deferredMeasurementControlReading",
FT_UINT32, BASE_DEC, VALS(rrc_T_deferredMeasurementControlReading_05_vals), 0,
@@ -130909,22 +139629,22 @@ void proto_register_rrc(void) {
{ "transportChannelReconfigurationFailure-r3-add-ext", "rrc.transportChannelReconfigurationFailure_r3_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_133,
+ { &hf_rrc_nonCriticalExtensions_144,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_133", HFILL }},
- { &hf_rrc_modeSpecificInfo_13,
+ "T_nonCriticalExtensions_144", HFILL }},
+ { &hf_rrc_modeSpecificInfo_14,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_13_vals), 0,
- "T_modeSpecificInfo_13", HFILL }},
- { &hf_rrc_fdd_43,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_14_vals), 0,
+ "T_modeSpecificInfo_14", HFILL }},
+ { &hf_rrc_fdd_44,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd_08,
+ { &hf_rrc_tdd_09,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_07", HFILL }},
+ "T_tdd_08", HFILL }},
{ &hf_rrc_tfcs_ID,
{ "tfcs-ID", "rrc.tfcs_ID",
FT_NONE, BASE_NONE, NULL, 0,
@@ -130957,10 +139677,10 @@ void proto_register_rrc(void) {
{ "transportformatcombinationcontrol-v820ext", "rrc.transportformatcombinationcontrol_v820ext",
FT_NONE, BASE_NONE, NULL, 0,
"TransportFormatCombinationControl_v820ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_134,
+ { &hf_rrc_nonCriticalExtensions_145,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_134", HFILL }},
+ "T_nonCriticalExtensions_145", HFILL }},
{ &hf_rrc_ul_AMR_Rate,
{ "ul-AMR-Rate", "rrc.ul_AMR_Rate",
FT_UINT32, BASE_DEC, VALS(rrc_UL_AMR_Rate_vals), 0,
@@ -130973,10 +139693,10 @@ void proto_register_rrc(void) {
{ "transportFormatCombinationControlFailure-r3-add-ext", "rrc.transportFormatCombinationControlFailure_r3_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_135,
+ { &hf_rrc_nonCriticalExtensions_146,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_135", HFILL }},
+ "T_nonCriticalExtensions_146", HFILL }},
{ &hf_rrc_r3_25,
{ "r3", "rrc.r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -131025,18 +139745,18 @@ void proto_register_rrc(void) {
{ "ueCapabilityEnquiry-v860ext", "rrc.ueCapabilityEnquiry_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
"UECapabilityEnquiry_v860ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_136,
+ { &hf_rrc_nonCriticalExtensions_147,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_136", HFILL }},
+ "T_nonCriticalExtensions_147", HFILL }},
{ &hf_rrc_later_than_r3_22,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
"T_later_than_r3_22", HFILL }},
- { &hf_rrc_criticalExtensions_98,
+ { &hf_rrc_criticalExtensions_109,
{ "criticalExtensions", "rrc.criticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_98", HFILL }},
+ "T_criticalExtensions_109", HFILL }},
{ &hf_rrc_capabilityUpdateRequirement_05,
{ "capabilityUpdateRequirement", "rrc.capabilityUpdateRequirement",
FT_NONE, BASE_NONE, NULL, 0,
@@ -131109,10 +139829,10 @@ void proto_register_rrc(void) {
{ "ueCapabilityInformation-v690ext", "rrc.ueCapabilityInformation_v690ext",
FT_NONE, BASE_NONE, NULL, 0,
"UECapabilityInformation_v690ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_137,
+ { &hf_rrc_nonCriticalExtensions_148,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_137", HFILL }},
+ "T_nonCriticalExtensions_148", HFILL }},
{ &hf_rrc_ueCapabilityInformation_v650ext,
{ "ueCapabilityInformation-v650ext", "rrc.ueCapabilityInformation_v650ext",
FT_NONE, BASE_NONE, NULL, 0,
@@ -131141,10 +139861,18 @@ void proto_register_rrc(void) {
{ "ueCapabilityInformation-v7f0ext", "rrc.ueCapabilityInformation_v7f0ext",
FT_NONE, BASE_NONE, NULL, 0,
"UECapabilityInformation_v7f0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_138,
+ { &hf_rrc_va40NonCriticalExtensions_15,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_va40NonCriticalExtensions_14", HFILL }},
+ { &hf_rrc_ueCapabilityInformation_va40ext,
+ { "ueCapabilityInformation-va40ext", "rrc.ueCapabilityInformation_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UECapabilityInformation_va40ext_IEs", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_149,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_138", HFILL }},
+ "T_nonCriticalExtensions_149", HFILL }},
{ &hf_rrc_ueCapabilityContainer_01,
{ "ueCapabilityContainer", "rrc.ueCapabilityContainer",
FT_BYTES, BASE_NONE, NULL, 0,
@@ -131173,18 +139901,18 @@ void proto_register_rrc(void) {
{ "ueCapabilityInformationConfirm-v770ext", "rrc.ueCapabilityInformationConfirm_v770ext",
FT_NONE, BASE_NONE, NULL, 0,
"UECapabilityInformationConfirm_v770ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_139,
+ { &hf_rrc_nonCriticalExtensions_150,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_139", HFILL }},
+ "T_nonCriticalExtensions_150", HFILL }},
{ &hf_rrc_later_than_r3_23,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
"T_later_than_r3_23", HFILL }},
- { &hf_rrc_criticalExtensions_99,
+ { &hf_rrc_criticalExtensions_110,
{ "criticalExtensions", "rrc.criticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_99", HFILL }},
+ "T_criticalExtensions_110", HFILL }},
{ &hf_rrc_acceptanceOfChangeOfCapability,
{ "acceptanceOfChangeOfCapability", "rrc.acceptanceOfChangeOfCapability",
FT_UINT32, BASE_DEC, VALS(rrc_T_acceptanceOfChangeOfCapability_vals), 0,
@@ -131213,10 +139941,10 @@ void proto_register_rrc(void) {
{ "uplinkDirectTransfer-v7g0ext", "rrc.uplinkDirectTransfer_v7g0ext",
FT_NONE, BASE_NONE, NULL, 0,
"UplinkDirectTransfer_v7g0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_140,
+ { &hf_rrc_nonCriticalExtensions_151,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_140", HFILL }},
+ "T_nonCriticalExtensions_151", HFILL }},
{ &hf_rrc_r3_27,
{ "r3", "rrc.r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -131249,10 +139977,10 @@ void proto_register_rrc(void) {
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
"T_later_than_r3_24", HFILL }},
- { &hf_rrc_criticalExtensions_100,
+ { &hf_rrc_criticalExtensions_111,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_100_vals), 0,
- "T_criticalExtensions_100", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_111_vals), 0,
+ "T_criticalExtensions_111", HFILL }},
{ &hf_rrc_r4_13,
{ "r4", "rrc.r4",
FT_NONE, BASE_NONE, NULL, 0,
@@ -131277,14 +140005,14 @@ void proto_register_rrc(void) {
{ "uplinkPhysicalChannelControl-v690ext", "rrc.uplinkPhysicalChannelControl_v690ext",
FT_NONE, BASE_NONE, NULL, 0,
"UplinkPhysicalChannelControl_v690ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_141,
+ { &hf_rrc_nonCriticalExtensions_152,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_141", HFILL }},
- { &hf_rrc_criticalExtensions_101,
+ "T_nonCriticalExtensions_152", HFILL }},
+ { &hf_rrc_criticalExtensions_112,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_101_vals), 0,
- "T_criticalExtensions_101", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_112_vals), 0,
+ "T_criticalExtensions_112", HFILL }},
{ &hf_rrc_r5_11,
{ "r5", "rrc.r5",
FT_NONE, BASE_NONE, NULL, 0,
@@ -131309,14 +140037,14 @@ void proto_register_rrc(void) {
{ "uplinkPhysicalChannelControl-v6a0ext", "rrc.uplinkPhysicalChannelControl_v6a0ext",
FT_NONE, BASE_NONE, NULL, 0,
"UplinkPhysicalChannelControl_v6a0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_142,
+ { &hf_rrc_nonCriticalExtensions_153,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_142", HFILL }},
- { &hf_rrc_criticalExtensions_102,
+ "T_nonCriticalExtensions_153", HFILL }},
+ { &hf_rrc_criticalExtensions_113,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_102_vals), 0,
- "T_criticalExtensions_102", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_113_vals), 0,
+ "T_criticalExtensions_113", HFILL }},
{ &hf_rrc_r7_12,
{ "r7", "rrc.r7",
FT_NONE, BASE_NONE, NULL, 0,
@@ -131329,14 +140057,14 @@ void proto_register_rrc(void) {
{ "uplinkPhysicalChannelControl-r7-add-ext", "rrc.uplinkPhysicalChannelControl_r7_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_143,
+ { &hf_rrc_nonCriticalExtensions_154,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_143", HFILL }},
- { &hf_rrc_criticalExtensions_103,
+ "T_nonCriticalExtensions_154", HFILL }},
+ { &hf_rrc_criticalExtensions_114,
{ "criticalExtensions", "rrc.criticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_103", HFILL }},
+ "T_criticalExtensions_114", HFILL }},
{ &hf_rrc_ccTrCH_PowerControlInfo,
{ "ccTrCH-PowerControlInfo", "rrc.ccTrCH_PowerControlInfo",
FT_NONE, BASE_NONE, NULL, 0,
@@ -131373,18 +140101,18 @@ void proto_register_rrc(void) {
{ "tddOption", "rrc.tddOption",
FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_vals), 0,
NULL, HFILL }},
- { &hf_rrc_tdd384_06,
+ { &hf_rrc_tdd384_07,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_06", HFILL }},
+ "T_tdd384_07", HFILL }},
{ &hf_rrc_timingAdvance_01,
{ "timingAdvance", "rrc.timingAdvance",
FT_UINT32, BASE_DEC, VALS(rrc_UL_TimingAdvanceControl_r4_vals), 0,
"UL_TimingAdvanceControl_r4", HFILL }},
- { &hf_rrc_tdd128_06,
+ { &hf_rrc_tdd128_07,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_06", HFILL }},
+ "T_tdd128_07", HFILL }},
{ &hf_rrc_ul_SynchronisationParameters,
{ "ul-SynchronisationParameters", "rrc.ul_SynchronisationParameters",
FT_NONE, BASE_NONE, NULL, 0,
@@ -131397,18 +140125,18 @@ void proto_register_rrc(void) {
{ "tddOption", "rrc.tddOption",
FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_01_vals), 0,
"T_tddOption_01", HFILL }},
- { &hf_rrc_tdd384_07,
+ { &hf_rrc_tdd384_08,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_07", HFILL }},
+ "T_tdd384_08", HFILL }},
{ &hf_rrc_hs_SICH_PowerControl,
{ "hs-SICH-PowerControl", "rrc.hs_SICH_PowerControl",
FT_NONE, BASE_NONE, NULL, 0,
"HS_SICH_Power_Control_Info_TDD384", HFILL }},
- { &hf_rrc_tdd128_07,
+ { &hf_rrc_tdd128_08,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_07", HFILL }},
+ "T_tdd128_08", HFILL }},
{ &hf_rrc_desired_HS_SICH_PowerLevel,
{ "desired-HS-SICH-PowerLevel", "rrc.desired_HS_SICH_PowerLevel",
FT_INT32, BASE_DEC, NULL, 0,
@@ -131425,14 +140153,14 @@ void proto_register_rrc(void) {
{ "tddOption", "rrc.tddOption",
FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_02_vals), 0,
"T_tddOption_02", HFILL }},
- { &hf_rrc_tdd384_08,
+ { &hf_rrc_tdd384_09,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_08", HFILL }},
- { &hf_rrc_tdd768_03,
+ "T_tdd384_09", HFILL }},
+ { &hf_rrc_tdd768_04,
{ "tdd768", "rrc.tdd768",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd768_03", HFILL }},
+ "T_tdd768_04", HFILL }},
{ &hf_rrc_timingAdvance_02,
{ "timingAdvance", "rrc.timingAdvance",
FT_UINT32, BASE_DEC, VALS(rrc_UL_TimingAdvanceControl_r7_vals), 0,
@@ -131441,10 +140169,10 @@ void proto_register_rrc(void) {
{ "hs-SICH-PowerControl", "rrc.hs_SICH_PowerControl",
FT_NONE, BASE_NONE, NULL, 0,
"HS_SICH_Power_Control_Info_TDD768", HFILL }},
- { &hf_rrc_tdd128_08,
+ { &hf_rrc_tdd128_09,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_08", HFILL }},
+ "T_tdd128_09", HFILL }},
{ &hf_rrc_tpc_Step_Size_01,
{ "tpc-Step-Size", "rrc.tpc_Step_Size",
FT_UINT32, BASE_DEC, VALS(rrc_T_tpc_Step_Size_01_vals), 0,
@@ -131477,18 +140205,26 @@ void proto_register_rrc(void) {
{ "uraUpdate-v860ext", "rrc.uraUpdate_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
"URAUpdate_v860ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_144,
+ { &hf_rrc_va40NonCriticalExtensions_16,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_va40NonCriticalExtensions_15", HFILL }},
+ { &hf_rrc_uraUpdate_va40ext,
+ { "uraUpdate-va40ext", "rrc.uraUpdate_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "URAUpdate_va40ext_IEs", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_155,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_144", HFILL }},
+ "T_nonCriticalExtensions_155", HFILL }},
{ &hf_rrc_uraUpdate_v7e0ext,
{ "uraUpdate-v7e0ext", "rrc.uraUpdate_v7e0ext",
FT_NONE, BASE_NONE, NULL, 0,
"URAUpdate_v7e0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_145,
+ { &hf_rrc_nonCriticalExtensions_156,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_145", HFILL }},
+ "T_nonCriticalExtensions_156", HFILL }},
{ &hf_rrc_support_hsdschReception_CellUraPch,
{ "support-hsdschReception-CellUraPch", "rrc.support_hsdschReception_CellUraPch",
FT_UINT32, BASE_DEC, VALS(rrc_T_support_hsdschReception_CellUraPch_vals), 0,
@@ -131513,6 +140249,14 @@ void proto_register_rrc(void) {
{ "supportOfMACiis", "rrc.supportOfMACiis",
FT_UINT32, BASE_DEC, VALS(rrc_T_supportOfMACiis_02_vals), 0,
"T_supportOfMACiis_02", HFILL }},
+ { &hf_rrc_loggedMeasAvailable_04,
+ { "loggedMeasAvailable", "rrc.loggedMeasAvailable",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_loggedMeasAvailable_04_vals), 0,
+ "T_loggedMeasAvailable_04", HFILL }},
+ { &hf_rrc_loggedANRResultsAvailable_03,
+ { "loggedANRResultsAvailable", "rrc.loggedANRResultsAvailable",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_loggedANRResultsAvailable_03_vals), 0,
+ "T_loggedANRResultsAvailable_03", HFILL }},
{ &hf_rrc_r3_28,
{ "r3", "rrc.r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -131537,18 +140281,18 @@ void proto_register_rrc(void) {
{ "uraUpdateConfirm-v690ext", "rrc.uraUpdateConfirm_v690ext",
FT_NONE, BASE_NONE, NULL, 0,
"URAUpdateConfirm_v690ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_146,
+ { &hf_rrc_nonCriticalExtensions_157,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_146", HFILL }},
+ "T_nonCriticalExtensions_157", HFILL }},
{ &hf_rrc_later_than_r3_25,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
"T_later_than_r3_25", HFILL }},
- { &hf_rrc_criticalExtensions_104,
+ { &hf_rrc_criticalExtensions_115,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_104_vals), 0,
- "T_criticalExtensions_104", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_115_vals), 0,
+ "T_criticalExtensions_115", HFILL }},
{ &hf_rrc_r5_12,
{ "r5", "rrc.r5",
FT_NONE, BASE_NONE, NULL, 0,
@@ -131561,14 +140305,14 @@ void proto_register_rrc(void) {
{ "v690NonCriticalExtensions", "rrc.v690NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v690NonCriticalExtensions_44", HFILL }},
- { &hf_rrc_nonCriticalExtensions_147,
+ { &hf_rrc_nonCriticalExtensions_158,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_147", HFILL }},
- { &hf_rrc_criticalExtensions_105,
+ "T_nonCriticalExtensions_158", HFILL }},
+ { &hf_rrc_criticalExtensions_116,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_105_vals), 0,
- "T_criticalExtensions_105", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_116_vals), 0,
+ "T_criticalExtensions_116", HFILL }},
{ &hf_rrc_r7_13,
{ "r7", "rrc.r7",
FT_NONE, BASE_NONE, NULL, 0,
@@ -131589,14 +140333,14 @@ void proto_register_rrc(void) {
{ "uraUpdateConfirm-v860ext", "rrc.uraUpdateConfirm_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
"URAUpdateConfirm_v860ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_148,
+ { &hf_rrc_nonCriticalExtensions_159,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_148", HFILL }},
- { &hf_rrc_criticalExtensions_106,
+ "T_nonCriticalExtensions_159", HFILL }},
+ { &hf_rrc_criticalExtensions_117,
{ "criticalExtensions", "rrc.criticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_106", HFILL }},
+ "T_criticalExtensions_117", HFILL }},
{ &hf_rrc_r3_29,
{ "r3", "rrc.r3",
FT_NONE, BASE_NONE, NULL, 0,
@@ -131621,18 +140365,18 @@ void proto_register_rrc(void) {
{ "v860NonCriticalExtensions", "rrc.v860NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v860NonCriticalExtensions_21", HFILL }},
- { &hf_rrc_nonCriticalExtensions_149,
+ { &hf_rrc_nonCriticalExtensions_160,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_149", HFILL }},
+ "T_nonCriticalExtensions_160", HFILL }},
{ &hf_rrc_later_than_r3_26,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
"T_later_than_r3_26", HFILL }},
- { &hf_rrc_criticalExtensions_107,
+ { &hf_rrc_criticalExtensions_118,
{ "criticalExtensions", "rrc.criticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_107", HFILL }},
+ "T_criticalExtensions_118", HFILL }},
{ &hf_rrc_uraUpdateConfirm_02,
{ "uraUpdateConfirm", "rrc.uraUpdateConfirm",
FT_NONE, BASE_NONE, NULL, 0,
@@ -131677,18 +140421,18 @@ void proto_register_rrc(void) {
{ "utranMobilityInformation-v860ext", "rrc.utranMobilityInformation_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
"UTRANMobilityInformation_v860ext1_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_150,
+ { &hf_rrc_nonCriticalExtensions_161,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_150", HFILL }},
+ "T_nonCriticalExtensions_161", HFILL }},
{ &hf_rrc_later_than_r3_27,
{ "later-than-r3", "rrc.later_than_r3",
FT_NONE, BASE_NONE, NULL, 0,
"T_later_than_r3_27", HFILL }},
- { &hf_rrc_criticalExtensions_108,
+ { &hf_rrc_criticalExtensions_119,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_108_vals), 0,
- "T_criticalExtensions_108", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_119_vals), 0,
+ "T_criticalExtensions_119", HFILL }},
{ &hf_rrc_r5_13,
{ "r5", "rrc.r5",
FT_NONE, BASE_NONE, NULL, 0,
@@ -131705,14 +140449,14 @@ void proto_register_rrc(void) {
{ "v860NonCriticalExtentions", "rrc.v860NonCriticalExtentions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v860NonCriticalExtentions_01", HFILL }},
- { &hf_rrc_nonCriticalExtensions_151,
+ { &hf_rrc_nonCriticalExtensions_162,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_151", HFILL }},
- { &hf_rrc_criticalExtensions_109,
+ "T_nonCriticalExtensions_162", HFILL }},
+ { &hf_rrc_criticalExtensions_120,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_109_vals), 0,
- "T_criticalExtensions_109", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_120_vals), 0,
+ "T_criticalExtensions_120", HFILL }},
{ &hf_rrc_r7_14,
{ "r7", "rrc.r7",
FT_NONE, BASE_NONE, NULL, 0,
@@ -131733,14 +140477,14 @@ void proto_register_rrc(void) {
{ "utranMobilityInformation-v860ext", "rrc.utranMobilityInformation_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
"UTRANMobilityInformation_v860ext2_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_152,
+ { &hf_rrc_nonCriticalExtensions_163,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_152", HFILL }},
- { &hf_rrc_criticalExtensions_110,
+ "T_nonCriticalExtensions_163", HFILL }},
+ { &hf_rrc_criticalExtensions_121,
{ "criticalExtensions", "rrc.criticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_110", HFILL }},
+ "T_criticalExtensions_121", HFILL }},
{ &hf_rrc_ue_ConnTimersAndConstants,
{ "ue-ConnTimersAndConstants", "rrc.ue_ConnTimersAndConstants",
FT_NONE, BASE_NONE, NULL, 0,
@@ -131749,10 +140493,10 @@ void proto_register_rrc(void) {
{ "cn-InformationInfo", "rrc.cn_InformationInfo",
FT_NONE, BASE_NONE, NULL, 0,
"CN_InformationInfoFull", HFILL }},
- { &hf_rrc_nonCriticalExtensions_153,
+ { &hf_rrc_nonCriticalExtensions_164,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_153", HFILL }},
+ "T_nonCriticalExtensions_164", HFILL }},
{ &hf_rrc_ue_ConnTimersAndConstants_v3a0ext,
{ "ue-ConnTimersAndConstants-v3a0ext", "rrc.ue_ConnTimersAndConstants_v3a0ext",
FT_NONE, BASE_NONE, NULL, 0,
@@ -131785,14 +140529,26 @@ void proto_register_rrc(void) {
{ "utranMobilityInformationConfirm-v770ext", "rrc.utranMobilityInformationConfirm_v770ext",
FT_NONE, BASE_NONE, NULL, 0,
"UTRANMobilityInformationConfirm_v770ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_154,
+ { &hf_rrc_va40NonCriticalExtensions_17,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_va40NonCriticalExtensions_16", HFILL }},
+ { &hf_rrc_utranMobilityInformationConfirm_va40ext,
+ { "utranMobilityInformationConfirm-va40ext", "rrc.utranMobilityInformationConfirm_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UTRANMobilityInformationConfirm_va40ext_IEs", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_165,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_154", HFILL }},
+ "T_nonCriticalExtensions_165", HFILL }},
{ &hf_rrc_deferredMeasurementControlReading_06,
{ "deferredMeasurementControlReading", "rrc.deferredMeasurementControlReading",
FT_UINT32, BASE_DEC, VALS(rrc_T_deferredMeasurementControlReading_06_vals), 0,
"T_deferredMeasurementControlReading_06", HFILL }},
+ { &hf_rrc_loggedMeasAvailable_05,
+ { "loggedMeasAvailable", "rrc.loggedMeasAvailable",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_loggedMeasAvailable_05_vals), 0,
+ "T_loggedMeasAvailable_05", HFILL }},
{ &hf_rrc_laterNonCriticalExtensions_66,
{ "laterNonCriticalExtensions", "rrc.laterNonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
@@ -131801,18 +140557,18 @@ void proto_register_rrc(void) {
{ "utranMobilityInformationFailure-r3-add-ext", "rrc.utranMobilityInformationFailure_r3_add_ext",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING", HFILL }},
- { &hf_rrc_nonCriticalExtensions_155,
+ { &hf_rrc_nonCriticalExtensions_166,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_155", HFILL }},
+ "T_nonCriticalExtensions_166", HFILL }},
{ &hf_rrc_mbms_ServiceAccessInfoList,
{ "mbms-ServiceAccessInfoList", "rrc.mbms_ServiceAccessInfoList",
FT_UINT32, BASE_DEC, NULL, 0,
"MBMS_ServiceAccessInfoList_r6", HFILL }},
- { &hf_rrc_nonCriticalExtensions_156,
+ { &hf_rrc_nonCriticalExtensions_167,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_156", HFILL }},
+ "T_nonCriticalExtensions_167", HFILL }},
{ &hf_rrc_mbms_CommonRBInformationList,
{ "mbms-CommonRBInformationList", "rrc.mbms_CommonRBInformationList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -131853,10 +140609,10 @@ void proto_register_rrc(void) {
{ "mbmsCommonPTMRBInformation-v860ext", "rrc.mbmsCommonPTMRBInformation_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
"MBMSCommonPTMRBInformation_v860ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_157,
+ { &hf_rrc_nonCriticalExtensions_168,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_157", HFILL }},
+ "T_nonCriticalExtensions_168", HFILL }},
{ &hf_rrc_mbms_PhyChInformationList_r7,
{ "mbms-PhyChInformationList-r7", "rrc.mbms_PhyChInformationList_r7",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -131885,10 +140641,10 @@ void proto_register_rrc(void) {
{ "mbmsCurrentCellPTMRBInfo-v770ext", "rrc.mbmsCurrentCellPTMRBInfo_v770ext",
FT_NONE, BASE_NONE, NULL, 0,
"MBMSCurrentCellPTMRBInfo_v770ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_158,
+ { &hf_rrc_nonCriticalExtensions_169,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_158", HFILL }},
+ "T_nonCriticalExtensions_169", HFILL }},
{ &hf_rrc_mbsfn_TDM_Info_List,
{ "mbsfn-TDM-Info-List", "rrc.mbsfn_TDM_Info_List",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -131945,10 +140701,10 @@ void proto_register_rrc(void) {
{ "mbmsGeneralInformation-v890ext", "rrc.mbmsGeneralInformation_v890ext",
FT_NONE, BASE_NONE, NULL, 0,
"MBMSGeneralInformation_v890ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_159,
+ { &hf_rrc_nonCriticalExtensions_170,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_159", HFILL }},
+ "T_nonCriticalExtensions_170", HFILL }},
{ &hf_rrc_indicateChangeInSelectedServices,
{ "indicateChangeInSelectedServices", "rrc.indicateChangeInSelectedServices",
FT_BOOLEAN, BASE_NONE, NULL, 0,
@@ -131993,10 +140749,10 @@ void proto_register_rrc(void) {
{ "mbmsModificationRequest-v6f0ext", "rrc.mbmsModificationRequest_v6f0ext",
FT_NONE, BASE_NONE, NULL, 0,
"MBMSModificationRequest_v6f0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_160,
+ { &hf_rrc_nonCriticalExtensions_171,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_160", HFILL }},
+ "T_nonCriticalExtensions_171", HFILL }},
{ &hf_rrc_mbmsSelectedServiceInfo,
{ "mbmsSelectedServiceInfo", "rrc.mbmsSelectedServiceInfo",
FT_NONE, BASE_NONE, NULL, 0,
@@ -132049,10 +140805,10 @@ void proto_register_rrc(void) {
{ "mbmsModifiedServicesInformation-v7c0ext", "rrc.mbmsModifiedServicesInformation_v7c0ext",
FT_NONE, BASE_NONE, NULL, 0,
"MBMSModifiedServicesInformation_v7c0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_161,
+ { &hf_rrc_nonCriticalExtensions_172,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_161", HFILL }},
+ "T_nonCriticalExtensions_172", HFILL }},
{ &hf_rrc_modifiedServiceList,
{ "modifiedServiceList", "rrc.modifiedServiceList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -132081,10 +140837,10 @@ void proto_register_rrc(void) {
{ "mbmsNeighbouringCellPTMRBInformation-v770ext", "rrc.mbmsNeighbouringCellPTMRBInformation_v770ext",
FT_NONE, BASE_NONE, NULL, 0,
"MBMSNeighbouringCellPTMRBInformation_v770ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_162,
+ { &hf_rrc_nonCriticalExtensions_173,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_162", HFILL }},
+ "T_nonCriticalExtensions_173", HFILL }},
{ &hf_rrc_neighbouringCellSCCPCHList_01,
{ "neighbouringCellSCCPCHList", "rrc.neighbouringCellSCCPCHList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -132093,10 +140849,10 @@ void proto_register_rrc(void) {
{ "serviceSchedulingInfoList", "rrc.serviceSchedulingInfoList",
FT_UINT32, BASE_DEC, NULL, 0,
"MBMS_ServiceSchedulingInfoList_r6", HFILL }},
- { &hf_rrc_nonCriticalExtensions_163,
+ { &hf_rrc_nonCriticalExtensions_174,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_163", HFILL }},
+ "T_nonCriticalExtensions_174", HFILL }},
{ &hf_rrc_unmodifiedServiceList,
{ "unmodifiedServiceList", "rrc.unmodifiedServiceList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -132109,10 +140865,10 @@ void proto_register_rrc(void) {
{ "mbmsUnmodifiedServicesInformation-v770ext", "rrc.mbmsUnmodifiedServicesInformation_v770ext",
FT_NONE, BASE_NONE, NULL, 0,
"MBMSUnmodifiedServicesInformation_v770ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_164,
+ { &hf_rrc_nonCriticalExtensions_175,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_164", HFILL }},
+ "T_nonCriticalExtensions_175", HFILL }},
{ &hf_rrc_unmodifiedServiceList_01,
{ "unmodifiedServiceList", "rrc.unmodifiedServiceList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -132157,10 +140913,86 @@ void proto_register_rrc(void) {
{ "sysInfoType12", "rrc.sysInfoType12",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_nonCriticalExtensions_165,
+ { &hf_rrc_nonCriticalExtensions_176,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_165", HFILL }},
+ "T_nonCriticalExtensions_176", HFILL }},
+ { &hf_rrc_criticalExtensions_122,
+ { "criticalExtensions", "rrc.criticalExtensions",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_122_vals), 0,
+ "T_criticalExtensions_122", HFILL }},
+ { &hf_rrc_r10_11,
+ { "r10", "rrc.r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_r10_11", HFILL }},
+ { &hf_rrc_loggingMeasurementConfiguration_r10_IEs,
+ { "loggingMeasurementConfiguration-r10-IEs", "rrc.loggingMeasurementConfiguration_r10_IEs",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_loggingMeasurementConfiguration_r10_add_ext,
+ { "loggingMeasurementConfiguration-r10-add-ext", "rrc.loggingMeasurementConfiguration_r10_add_ext",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_177,
+ { "nonCriticalExtensions", "rrc.nonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_nonCriticalExtensions_177", HFILL }},
+ { &hf_rrc_criticalExtensions_123,
+ { "criticalExtensions", "rrc.criticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_criticalExtensions_123", HFILL }},
+ { &hf_rrc_loggedMeasurementsConfigurationInfo,
+ { "loggedMeasurementsConfigurationInfo", "rrc.loggedMeasurementsConfigurationInfo",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_loggedANRConfigurationInfo,
+ { "loggedANRConfigurationInfo", "rrc.loggedANRConfigurationInfo",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_loggedMeasReport,
+ { "loggedMeasReport", "rrc.loggedMeasReport",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_loggedANRReportInfoList,
+ { "loggedANRReportInfoList", "rrc.loggedANRReportInfoList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_nonCriticalExtensions_178,
+ { "nonCriticalExtensions", "rrc.nonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_nonCriticalExtensions_178", HFILL }},
+ { &hf_rrc_criticalExtensions_124,
+ { "criticalExtensions", "rrc.criticalExtensions",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_124_vals), 0,
+ "T_criticalExtensions_124", HFILL }},
+ { &hf_rrc_r10_12,
+ { "r10", "rrc.r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_r10_12", HFILL }},
+ { &hf_rrc_ueInformationRequest_r10,
+ { "ueInformationRequest-r10", "rrc.ueInformationRequest_r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UEInformationRequest_r10_IEs", HFILL }},
+ { &hf_rrc_ueInformationRequest_r10_add_ext,
+ { "ueInformationRequest-r10-add-ext", "rrc.ueInformationRequest_r10_add_ext",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_179,
+ { "nonCriticalExtensions", "rrc.nonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_nonCriticalExtensions_179", HFILL }},
+ { &hf_rrc_criticalExtensions_125,
+ { "criticalExtensions", "rrc.criticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_criticalExtensions_125", HFILL }},
+ { &hf_rrc_loggedMeasReportRequest,
+ { "loggedMeasReportRequest", "rrc.loggedMeasReportRequest",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_loggedMeasReportRequest_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_loggedANRReportRequest,
+ { "loggedANRReportRequest", "rrc.loggedANRReportRequest",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_loggedANRReportRequest_vals), 0,
+ NULL, HFILL }},
{ &hf_rrc_cn_DomainSpecificNAS_Info,
{ "cn-DomainSpecificNAS-Info", "rrc.cn_DomainSpecificNAS_Info",
FT_BYTES, BASE_NONE, NULL, 0,
@@ -132196,15 +141028,27 @@ void proto_register_rrc(void) {
{ &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo,
{ "cn-CommonGSM-MAP-NAS-SysInfo", "rrc.cn_CommonGSM_MAP_NAS_SysInfo",
FT_BYTES, BASE_NONE, NULL, 0,
- "NAS_SystemInformationGSM_MAP", HFILL }},
+ NULL, HFILL }},
{ &hf_rrc_cn_DomainInformationList,
{ "cn-DomainInformationList", "rrc.cn_DomainInformationList",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo_01,
+ { "cn-CommonGSM-MAP-NAS-SysInfo", "rrc.cn_CommonGSM_MAP_NAS_SysInfo",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "T_cn_CommonGSM_MAP_NAS_SysInfo_01", HFILL }},
+ { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo_02,
+ { "cn-CommonGSM-MAP-NAS-SysInfo", "rrc.cn_CommonGSM_MAP_NAS_SysInfo",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "T_cn_CommonGSM_MAP_NAS_SysInfo_02", HFILL }},
{ &hf_rrc_cn_DomainInformationListFull,
{ "cn-DomainInformationListFull", "rrc.cn_DomainInformationListFull",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_ec_N0,
+ { "ec-N0", "rrc.ec_N0",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "INTEGER_M24_0", HFILL }},
{ &hf_rrc_routingbasis,
{ "routingbasis", "rrc.routingbasis",
FT_UINT32, BASE_DEC, VALS(rrc_T_routingbasis_vals), 0,
@@ -132245,7 +141089,7 @@ void proto_register_rrc(void) {
{ "spare1", "rrc.spare1",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_dummy_23,
+ { &hf_rrc_dummy_27,
{ "dummy", "rrc.dummy",
FT_BOOLEAN, BASE_NONE, NULL, 0,
"BOOLEAN", HFILL }},
@@ -132477,14 +141321,14 @@ void proto_register_rrc(void) {
{ "cpich-RSCP", "rrc.cpich_RSCP",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_14,
+ { &hf_rrc_modeSpecificInfo_15,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_14_vals), 0,
- "T_modeSpecificInfo_14", HFILL }},
- { &hf_rrc_fdd_44,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_15_vals), 0,
+ "T_modeSpecificInfo_15", HFILL }},
+ { &hf_rrc_fdd_45,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_43", HFILL }},
+ "T_fdd_44", HFILL }},
{ &hf_rrc_s_Intrasearch,
{ "s-Intrasearch", "rrc.s_Intrasearch",
FT_INT32, BASE_DEC, NULL, 0,
@@ -132509,10 +141353,10 @@ void proto_register_rrc(void) {
{ "q-RxlevMin", "rrc.q_RxlevMin",
FT_INT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd_09,
+ { &hf_rrc_tdd_10,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_08", HFILL }},
+ "T_tdd_09", HFILL }},
{ &hf_rrc_s_Intrasearch_01,
{ "s-Intrasearch", "rrc.s_Intrasearch",
FT_INT32, BASE_DEC, NULL, 0,
@@ -132881,6 +141725,14 @@ void proto_register_rrc(void) {
{ "interBandMeasurements", "rrc.interBandMeasurements",
FT_UINT32, BASE_DEC, VALS(rrc_T_interBandMeasurements_vals), 0,
NULL, HFILL }},
+ { &hf_rrc_enhancedInterFrequencyMeasurements,
+ { "enhancedInterFrequencyMeasurements", "rrc.enhancedInterFrequencyMeasurements",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_enhancedInterFrequencyMeasurements_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_freqSpecificCompressedMode,
+ { "freqSpecificCompressedMode", "rrc.freqSpecificCompressedMode",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_freqSpecificCompressedMode_vals), 0,
+ NULL, HFILL }},
{ &hf_rrc_radioFrequencyBandEUTRA,
{ "radioFrequencyBandEUTRA", "rrc.radioFrequencyBandEUTRA",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -132901,6 +141753,10 @@ void proto_register_rrc(void) {
{ "CompressedModeMeasCapabFDD2", "rrc.CompressedModeMeasCapabFDD2",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_CompressedModeMeasCapabFDDList3_item,
+ { "CompressedModeMeasCapabFDD3", "rrc.CompressedModeMeasCapabFDD3",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_rrc_CompressedModeMeasCapabFDDList_ext_item,
{ "CompressedModeMeasCapabFDD-ext", "rrc.CompressedModeMeasCapabFDD_ext",
FT_NONE, BASE_NONE, NULL, 0,
@@ -132921,6 +141777,10 @@ void proto_register_rrc(void) {
{ "radioFrequencyBandFDD2", "rrc.radioFrequencyBandFDD2",
FT_UINT32, BASE_DEC, VALS(rrc_RadioFrequencyBandFDD2_vals), 0,
NULL, HFILL }},
+ { &hf_rrc_radioFrequencyBandFDD3,
+ { "radioFrequencyBandFDD3", "rrc.radioFrequencyBandFDD3",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_RadioFrequencyBandFDD3_vals_ext, 0,
+ NULL, HFILL }},
{ &hf_rrc_CompressedModeMeasCapabTDDList_item,
{ "CompressedModeMeasCapabTDD", "rrc.CompressedModeMeasCapabTDD",
FT_NONE, BASE_NONE, NULL, 0,
@@ -133041,7 +141901,7 @@ void proto_register_rrc(void) {
{ "dummy2", "rrc.dummy2",
FT_UINT32, BASE_DEC, VALS(rrc_SimultaneousSCCPCH_DPCH_Reception_vals), 0,
"SimultaneousSCCPCH_DPCH_Reception", HFILL }},
- { &hf_rrc_dummy_24,
+ { &hf_rrc_dummy_28,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, VALS(rrc_SupportOfDedicatedPilotsForChEstimation_vals), 0,
"SupportOfDedicatedPilotsForChEstimation", HFILL }},
@@ -133085,6 +141945,14 @@ void proto_register_rrc(void) {
{ "supportOfMimoOnlySingleStream", "rrc.supportOfMimoOnlySingleStream",
FT_UINT32, BASE_DEC, VALS(rrc_T_supportOfMimoOnlySingleStream_vals), 0,
NULL, HFILL }},
+ { &hf_rrc_hsdsch_physical_layer_category_ext4,
+ { "hsdsch-physical-layer-category-ext4", "rrc.hsdsch_physical_layer_category_ext4",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_hsdsch_physical_layer_category_ext5,
+ { "hsdsch-physical-layer-category-ext5", "rrc.hsdsch_physical_layer_category_ext5",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
{ &hf_rrc_maxTS_PerFrame,
{ "maxTS-PerFrame", "rrc.maxTS_PerFrame",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -133133,6 +142001,10 @@ void proto_register_rrc(void) {
{ "supportOfSFModeForHSPDSCHDualStream", "rrc.supportOfSFModeForHSPDSCHDualStream",
FT_UINT32, BASE_DEC, VALS(rrc_T_supportOfSFModeForHSPDSCHDualStream_vals), 0,
NULL, HFILL }},
+ { &hf_rrc_multiCarrier_physical_layer_category_extension2,
+ { "multiCarrier-physical-layer-category-extension2", "rrc.multiCarrier_physical_layer_category_extension2",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "MultiCarrier_HSDSCH_physical_layer_category_extension2", HFILL }},
{ &hf_rrc_maxPhysChPerFrame_02,
{ "maxPhysChPerFrame", "rrc.maxPhysChPerFrame",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -133245,6 +142117,50 @@ void proto_register_rrc(void) {
{ "lowerPriorityMBMSService", "rrc.lowerPriorityMBMSService",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_modeSpecificInfo_16,
+ { "modeSpecificInfo", "rrc.modeSpecificInfo",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_16_vals), 0,
+ "T_modeSpecificInfo_16", HFILL }},
+ { &hf_rrc_fdd_46,
+ { "fdd", "rrc.fdd",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_fdd_45", HFILL }},
+ { &hf_rrc_frequencyBandsSupportFDD,
+ { "frequencyBandsSupportFDD", "rrc.frequencyBandsSupportFDD",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "FrequencyBandsRedirectionFDD", HFILL }},
+ { &hf_rrc_tdd_11,
+ { "tdd", "rrc.tdd",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_tdd_10", HFILL }},
+ { &hf_rrc_frequencyBandsSupportTDD128,
+ { "frequencyBandsSupportTDD128", "rrc.frequencyBandsSupportTDD128",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "FrequencyBandsIndicatorTDD128", HFILL }},
+ { &hf_rrc_FrequencyBandsIndicatorTDD128_item,
+ { "FrequencyBandsIndicatorSupportTDD128", "rrc.FrequencyBandsIndicatorSupportTDD128",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_frequencyBandsIndicatorTDD,
+ { "frequencyBandsIndicatorTDD", "rrc.frequencyBandsIndicatorTDD",
+ FT_UINT32, BASE_DEC, VALS(rrc_RadioFrequencyBandTDD_r10_vals), 0,
+ "RadioFrequencyBandTDD_r10", HFILL }},
+ { &hf_rrc_FrequencyBandsRedirectionFDD_item,
+ { "FrequencyBandsIndicatorFDD", "rrc.FrequencyBandsIndicatorFDD",
+ FT_UINT32, BASE_DEC, VALS(rrc_FrequencyBandsIndicatorFDD_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_frequencyBandsIndicator1,
+ { "frequencyBandsIndicator1", "rrc.frequencyBandsIndicator1",
+ FT_UINT32, BASE_DEC, VALS(rrc_RadioFrequencyBandFDD_vals), 0,
+ "RadioFrequencyBandFDD", HFILL }},
+ { &hf_rrc_frequencyBandsIndicator2,
+ { "frequencyBandsIndicator2", "rrc.frequencyBandsIndicator2",
+ FT_UINT32, BASE_DEC, VALS(rrc_RadioFrequencyBandFDD2_vals), 0,
+ "RadioFrequencyBandFDD2", HFILL }},
+ { &hf_rrc_frequencyBandsIndicator3,
+ { "frequencyBandsIndicator3", "rrc.frequencyBandsIndicator3",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_RadioFrequencyBandFDD3_vals_ext, 0,
+ "RadioFrequencyBandFDD3", HFILL }},
{ &hf_rrc_rrc_ConnectionReleaseInformation,
{ "rrc-ConnectionReleaseInformation", "rrc.rrc_ConnectionReleaseInformation",
FT_UINT32, BASE_DEC, VALS(rrc_RRC_ConnectionReleaseInformation_vals), 0,
@@ -133255,7 +142171,7 @@ void proto_register_rrc(void) {
NULL, HFILL }},
{ &hf_rrc_uRNTI_Group,
{ "uRNTI-Group", "rrc.uRNTI_Group",
- FT_UINT32, BASE_DEC, VALS(rrc_U_RNTI_Group_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_U_RNTI_Group_vals_ext, 0,
"U_RNTI_Group", HFILL }},
{ &hf_rrc_gsm900,
{ "gsm900", "rrc.gsm900",
@@ -133377,6 +142293,14 @@ void proto_register_rrc(void) {
{ "compressedModeMeasCapabEUTRAList", "rrc.compressedModeMeasCapabEUTRAList",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_compressedModeMeasCapabFDDList2,
+ { "compressedModeMeasCapabFDDList2", "rrc.compressedModeMeasCapabFDDList2",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_compressedModeMeasCapabFDDList3,
+ { "compressedModeMeasCapabFDDList3", "rrc.compressedModeMeasCapabFDDList3",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
{ &hf_rrc_downlinkCompressedMode_LCR,
{ "downlinkCompressedMode-LCR", "rrc.downlinkCompressedMode_LCR",
FT_NONE, BASE_NONE, NULL, 0,
@@ -133393,10 +142317,38 @@ void proto_register_rrc(void) {
{ "downlinkCompressedMode", "rrc.downlinkCompressedMode",
FT_NONE, BASE_NONE, NULL, 0,
"CompressedModeMeasCapability_v920ext", HFILL }},
+ { &hf_rrc_interFrequencyDetectedSetMeasurements,
+ { "interFrequencyDetectedSetMeasurements", "rrc.interFrequencyDetectedSetMeasurements",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_interFrequencyDetectedSetMeasurements_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_downlinkCompressedMode_03,
+ { "downlinkCompressedMode", "rrc.downlinkCompressedMode",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CompressedModeMeasCapability_va40ext", HFILL }},
{ &hf_rrc_idleIntervalMeasCapabEUTRAList,
{ "idleIntervalMeasCapabEUTRAList", "rrc.idleIntervalMeasCapabEUTRAList",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_NonContiguousMultiCellCombinationList_item,
+ { "NonContiguousMultiCell", "rrc.NonContiguousMultiCell",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_aggregatedCells,
+ { "aggregatedCells", "rrc.aggregatedCells",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_aggregatedCells_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_gapSize,
+ { "gapSize", "rrc.gapSize",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_gapSize_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_nonContiguousMultiCellCombination22,
+ { "nonContiguousMultiCellCombination22", "rrc.nonContiguousMultiCellCombination22",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_nonContiguousMultiCellCombination22_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_nonContiguousMultiCellCombination31_13,
+ { "nonContiguousMultiCellCombination31-13", "rrc.nonContiguousMultiCellCombination31_13",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_nonContiguousMultiCellCombination31_13_vals), 0,
+ NULL, HFILL }},
{ &hf_rrc_supportOfGSM,
{ "supportOfGSM", "rrc.supportOfGSM",
FT_BOOLEAN, BASE_NONE, NULL, 0,
@@ -133681,31 +142633,51 @@ void proto_register_rrc(void) {
{ "uplinkPhysChCapability", "rrc.uplinkPhysChCapability",
FT_NONE, BASE_NONE, NULL, 0,
"UL_PhysChCapabilityFDD_v920ext", HFILL }},
- { &hf_rrc_tddPhysChCapability_768_01,
- { "tddPhysChCapability-768", "rrc.tddPhysChCapability_768",
+ { &hf_rrc_fddPhysChCapability_04,
+ { "fddPhysChCapability", "rrc.fddPhysChCapability",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tddPhysChCapability_768_01", HFILL }},
+ "T_fddPhysChCapability_04", HFILL }},
{ &hf_rrc_downlinkPhysChCapability_08,
{ "downlinkPhysChCapability", "rrc.downlinkPhysChCapability",
FT_NONE, BASE_NONE, NULL, 0,
- "DL_PhysChCapabilityInfoTDD_768", HFILL }},
+ "DL_PhysChCapabilityFDD_va40ext", HFILL }},
{ &hf_rrc_tddPhysChCapability_128_02,
{ "tddPhysChCapability-128", "rrc.tddPhysChCapability_128",
FT_NONE, BASE_NONE, NULL, 0,
"T_tddPhysChCapability_128_02", HFILL }},
+ { &hf_rrc_downlinkPhysChCapability_09,
+ { "downlinkPhysChCapability", "rrc.downlinkPhysChCapability",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "DL_PhysChCapabilityInfoTDD_128_va40ext", HFILL }},
{ &hf_rrc_uplinkPhysChCapability_07,
{ "uplinkPhysChCapability", "rrc.uplinkPhysChCapability",
FT_NONE, BASE_NONE, NULL, 0,
+ "UL_PhysChCapabilityInfoTDD_128_va40ext", HFILL }},
+ { &hf_rrc_tddPhysChCapability_768_01,
+ { "tddPhysChCapability-768", "rrc.tddPhysChCapability_768",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_tddPhysChCapability_768_01", HFILL }},
+ { &hf_rrc_downlinkPhysChCapability_10,
+ { "downlinkPhysChCapability", "rrc.downlinkPhysChCapability",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "DL_PhysChCapabilityInfoTDD_768", HFILL }},
+ { &hf_rrc_tddPhysChCapability_128_03,
+ { "tddPhysChCapability-128", "rrc.tddPhysChCapability_128",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_tddPhysChCapability_128_03", HFILL }},
+ { &hf_rrc_uplinkPhysChCapability_08,
+ { "uplinkPhysChCapability", "rrc.uplinkPhysChCapability",
+ FT_NONE, BASE_NONE, NULL, 0,
"UL_PhysChCapabilityInfoTDD_128_v770ext", HFILL }},
{ &hf_rrc_tdd128_PhysChCapability,
{ "tdd128-PhysChCapability", "rrc.tdd128_PhysChCapability",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_downlinkPhysChCapability_09,
+ { &hf_rrc_downlinkPhysChCapability_11,
{ "downlinkPhysChCapability", "rrc.downlinkPhysChCapability",
FT_NONE, BASE_NONE, NULL, 0,
"DL_PhysChCapabilityTDD_LCR_r4", HFILL }},
- { &hf_rrc_uplinkPhysChCapability_08,
+ { &hf_rrc_uplinkPhysChCapability_09,
{ "uplinkPhysChCapability", "rrc.uplinkPhysChCapability",
FT_NONE, BASE_NONE, NULL, 0,
"UL_PhysChCapabilityTDD_LCR_r4", HFILL }},
@@ -133735,7 +142707,7 @@ void proto_register_rrc(void) {
NULL, HFILL }},
{ &hf_rrc_numberOfRepetitionsPerSFNPeriod,
{ "numberOfRepetitionsPerSFNPeriod", "rrc.numberOfRepetitionsPerSFNPeriod",
- FT_UINT32, BASE_DEC, VALS(rrc_T_numberOfRepetitionsPerSFNPeriod_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_T_numberOfRepetitionsPerSFNPeriod_vals_ext, 0,
NULL, HFILL }},
{ &hf_rrc_supportEUTRA_FDD,
{ "supportEUTRA-FDD", "rrc.supportEUTRA_FDD",
@@ -133901,6 +142873,10 @@ void proto_register_rrc(void) {
{ "totalRLC-AM-BufferSize", "rrc.totalRLC_AM_BufferSize",
FT_UINT32, BASE_DEC, VALS(rrc_TotalRLC_AM_BufferSize_v920ext_vals), 0,
"TotalRLC_AM_BufferSize_v920ext", HFILL }},
+ { &hf_rrc_totalRLC_AM_BufferSize_03,
+ { "totalRLC-AM-BufferSize", "rrc.totalRLC_AM_BufferSize",
+ FT_UINT32, BASE_DEC, VALS(rrc_TotalRLC_AM_BufferSize_va40ext_vals), 0,
+ "TotalRLC_AM_BufferSize_va40ext", HFILL }},
{ &hf_rrc_noRelease,
{ "noRelease", "rrc.noRelease",
FT_NONE, BASE_NONE, NULL, 0,
@@ -134201,6 +143177,10 @@ void proto_register_rrc(void) {
{ "s-RNTI-2", "rrc.s_RNTI_2",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_supportOfLoggedMeasurementsIdlePCH,
+ { "supportOfLoggedMeasurementsIdlePCH", "rrc.supportOfLoggedMeasurementsIdlePCH",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_supportOfLoggedMeasurementsIdlePCH_vals), 0,
+ NULL, HFILL }},
{ &hf_rrc_ue_RadioAccessCapability_v690ext,
{ "ue-RadioAccessCapability-v690ext", "rrc.ue_RadioAccessCapability_v690ext",
FT_NONE, BASE_NONE, NULL, 0,
@@ -134285,10 +143265,26 @@ void proto_register_rrc(void) {
{ "ue-RadioAccessCapability-v970ext", "rrc.ue_RadioAccessCapability_v970ext",
FT_NONE, BASE_NONE, NULL, 0,
"UE_RadioAccessCapability_v970ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_166,
+ { &hf_rrc_va40NonCriticalExtensions_18,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_va40NonCriticalExtensions_17", HFILL }},
+ { &hf_rrc_ue_RadioAccessCapability_va40ext,
+ { "ue-RadioAccessCapability-va40ext", "rrc.ue_RadioAccessCapability_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UE_RadioAccessCapability_va40ext_IEs", HFILL }},
+ { &hf_rrc_va60NonCriticalExtensions,
+ { "va60NonCriticalExtensions", "rrc.va60NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_ue_RadioAccessCapability_va60ext,
+ { "ue-RadioAccessCapability-va60ext", "rrc.ue_RadioAccessCapability_va60ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UE_RadioAccessCapability_va60ext_IEs", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_180,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_166", HFILL }},
+ "T_nonCriticalExtensions_180", HFILL }},
{ &hf_rrc_supportForSIB11bis_01,
{ "supportForSIB11bis", "rrc.supportForSIB11bis",
FT_UINT32, BASE_DEC, VALS(rrc_T_supportForSIB11bis_01_vals), 0,
@@ -134421,6 +143417,46 @@ void proto_register_rrc(void) {
{ "ue-ExtendedMeasurementSupport", "rrc.ue_ExtendedMeasurementSupport",
FT_UINT32, BASE_DEC, VALS(rrc_T_ue_ExtendedMeasurementSupport_vals), 0,
NULL, HFILL }},
+ { &hf_rrc_ue_RadioAccessCapabBandCombList_va40ext,
+ { "ue-RadioAccessCapabBandCombList-va40ext", "rrc.ue_RadioAccessCapabBandCombList_va40ext",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_physicalChannelCapability_03,
+ { "physicalChannelCapability", "rrc.physicalChannelCapability",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "PhysicalChannelCapability_va40ext", HFILL }},
+ { &hf_rrc_rlc_Capability_02,
+ { "rlc-Capability", "rrc.rlc_Capability",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RLC_Capability_va40ext", HFILL }},
+ { &hf_rrc_measurementCapability_02,
+ { "measurementCapability", "rrc.measurementCapability",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MeasurementCapability_va40ext", HFILL }},
+ { &hf_rrc_supportOfMUMIMO,
+ { "supportOfMUMIMO", "rrc.supportOfMUMIMO",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_supportOfMUMIMO_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_supportForDualCellMimoInDifferentBands,
+ { "supportForDualCellMimoInDifferentBands", "rrc.supportForDualCellMimoInDifferentBands",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_supportForDualCellMimoInDifferentBands_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_ue_BasedNetworkPerformanceMeasurementsParameters,
+ { "ue-BasedNetworkPerformanceMeasurementsParameters", "rrc.ue_BasedNetworkPerformanceMeasurementsParameters",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_supportOfUTRANANR,
+ { "supportOfUTRANANR", "rrc.supportOfUTRANANR",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_supportOfUTRANANR_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_ue_RadioAccessCapabBandFDDList4,
+ { "ue-RadioAccessCapabBandFDDList4", "rrc.ue_RadioAccessCapabBandFDDList4",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_ue_RadioAccessCapabBandFDDList4_01,
+ { "ue-RadioAccessCapabBandFDDList4", "rrc.ue_RadioAccessCapabBandFDDList4",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "UE_RadioAccessCapabBandFDDList4_va60ext", HFILL }},
{ &hf_rrc_t_301,
{ "t-301", "rrc.t_301",
FT_UINT32, BASE_DEC, VALS(rrc_T_301_vals), 0,
@@ -134557,7 +143593,7 @@ void proto_register_rrc(void) {
{ "pdcp-Capability", "rrc.pdcp_Capability",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_rlc_Capability_02,
+ { &hf_rrc_rlc_Capability_03,
{ "rlc-Capability", "rrc.rlc_Capability",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
@@ -134569,7 +143605,7 @@ void proto_register_rrc(void) {
{ "rf-Capability", "rrc.rf_Capability",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_physicalChannelCapability_03,
+ { &hf_rrc_physicalChannelCapability_04,
{ "physicalChannelCapability", "rrc.physicalChannelCapability",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
@@ -134581,7 +143617,7 @@ void proto_register_rrc(void) {
{ "ue-positioning-Capability", "rrc.ue_positioning_Capability",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_measurementCapability_02,
+ { &hf_rrc_measurementCapability_03,
{ "measurementCapability", "rrc.measurementCapability",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
@@ -134637,7 +143673,7 @@ void proto_register_rrc(void) {
{ "ue-RadioAccessCapabilityComp-TDD128", "rrc.ue_RadioAccessCapabilityComp_TDD128",
FT_NONE, BASE_NONE, NULL, 0,
"UE_RadioAccessCapabilityComp_TDD128_v7f0ext", HFILL }},
- { &hf_rrc_physicalChannelCapability_04,
+ { &hf_rrc_physicalChannelCapability_05,
{ "physicalChannelCapability", "rrc.physicalChannelCapability",
FT_NONE, BASE_NONE, NULL, 0,
"PhysicalChannelCapabilityInfo_v770ext", HFILL }},
@@ -134661,6 +143697,14 @@ void proto_register_rrc(void) {
{ "supportOfenhancedTS0", "rrc.supportOfenhancedTS0",
FT_UINT32, BASE_DEC, VALS(rrc_T_supportOfenhancedTS0_01_vals), 0,
"T_supportOfenhancedTS0_01", HFILL }},
+ { &hf_rrc_ue_RadioAccessCapabBandFDDList5,
+ { "ue-RadioAccessCapabBandFDDList5", "rrc.ue_RadioAccessCapabBandFDDList5",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_ue_RadioAccessCapabBandFDDList_ext2,
+ { "ue-RadioAccessCapabBandFDDList-ext2", "rrc.ue_RadioAccessCapabBandFDDList_ext2",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
{ &hf_rrc_UE_RadioAccessCapabBandFDDList2_item,
{ "UE-RadioAccessCapabBandFDD2", "rrc.UE_RadioAccessCapabBandFDD2",
FT_NONE, BASE_NONE, NULL, 0,
@@ -134669,6 +143713,18 @@ void proto_register_rrc(void) {
{ "UE-RadioAccessCapabBandFDD3", "rrc.UE_RadioAccessCapabBandFDD3",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_UE_RadioAccessCapabBandFDDList4_item,
+ { "UE-RadioAccessCapabBandFDD4", "rrc.UE_RadioAccessCapabBandFDD4",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_UE_RadioAccessCapabBandFDDList4_va60ext_item,
+ { "UE-RadioAccessCapabBandFDD4-va60ext", "rrc.UE_RadioAccessCapabBandFDD4_va60ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_UE_RadioAccessCapabBandFDDList5_item,
+ { "UE-RadioAccessCapabBandFDD5", "rrc.UE_RadioAccessCapabBandFDD5",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_rrc_fddRF_Capability_01,
{ "fddRF-Capability", "rrc.fddRF_Capability",
FT_NONE, BASE_NONE, NULL, 0,
@@ -134685,6 +143741,26 @@ void proto_register_rrc(void) {
{ "measurementCapability3", "rrc.measurementCapability3",
FT_NONE, BASE_NONE, NULL, 0,
"MeasurementCapabilityExt3", HFILL }},
+ { &hf_rrc_additionalSecondaryCells,
+ { "additionalSecondaryCells", "rrc.additionalSecondaryCells",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_additionalSecondaryCells_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_nonContiguousMultiCellCombinationList,
+ { "nonContiguousMultiCellCombinationList", "rrc.nonContiguousMultiCellCombinationList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_reserveForFutureUse,
+ { "reserveForFutureUse", "rrc.reserveForFutureUse",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_reserveForFutureUse_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_fddRF_Capability_02,
+ { "fddRF-Capability", "rrc.fddRF_Capability",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_fddRF_Capability_02", HFILL }},
+ { &hf_rrc_measurementCapability4,
+ { "measurementCapability4", "rrc.measurementCapability4",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MeasurementCapabilityExt4", HFILL }},
{ &hf_rrc_rx_tx_TimeDifferenceType2Capable,
{ "rx-tx-TimeDifferenceType2Capable", "rrc.rx_tx_TimeDifferenceType2Capable",
FT_BOOLEAN, BASE_NONE, NULL, 0,
@@ -134717,11 +143793,15 @@ void proto_register_rrc(void) {
{ "UE-RadioAccessCapabBandFDD-ext", "rrc.UE_RadioAccessCapabBandFDD_ext",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_fddRF_Capability_02,
+ { &hf_rrc_UE_RadioAccessCapabBandFDDList_ext2_item,
+ { "UE-RadioAccessCapabBandFDD-ext2", "rrc.UE_RadioAccessCapabBandFDD_ext2",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_fddRF_Capability_03,
{ "fddRF-Capability", "rrc.fddRF_Capability",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fddRF_Capability_02", HFILL }},
- { &hf_rrc_measurementCapability_03,
+ "T_fddRF_Capability_03", HFILL }},
+ { &hf_rrc_measurementCapability_04,
{ "measurementCapability", "rrc.measurementCapability",
FT_NONE, BASE_NONE, NULL, 0,
"MeasurementCapabilityExt", HFILL }},
@@ -134753,7 +143833,7 @@ void proto_register_rrc(void) {
{ "rf-CapabilityComp", "rrc.rf_CapabilityComp",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_rf_CapabilityFDDComp,
+ { &hf_rrc_rf_CapabilityFDDComp_01,
{ "rf-CapabilityFDDComp", "rrc.rf_CapabilityFDDComp",
FT_UINT32, BASE_DEC, NULL, 0,
"RF_CapabBandListFDDComp_ext", HFILL }},
@@ -134861,10 +143941,10 @@ void proto_register_rrc(void) {
{ "supportOfControlChannelDRXOperation", "rrc.supportOfControlChannelDRXOperation",
FT_UINT32, BASE_DEC, VALS(rrc_T_supportOfControlChannelDRXOperation_02_vals), 0,
"T_supportOfControlChannelDRXOperation_02", HFILL }},
- { &hf_rrc_fdd_45,
+ { &hf_rrc_fdd_47,
{ "fdd", "rrc.fdd",
- FT_UINT32, BASE_DEC, VALS(rrc_T_fdd_44_vals), 0,
- "T_fdd_44", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_fdd_46_vals), 0,
+ "T_fdd_46", HFILL }},
{ &hf_rrc_supported_06,
{ "supported", "rrc.supported",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -134905,6 +143985,34 @@ void proto_register_rrc(void) {
{ "RF-CapabBandFDDComp", "rrc.RF_CapabBandFDDComp",
FT_UINT32, BASE_DEC, VALS(rrc_RF_CapabBandFDDComp_vals), 0,
NULL, HFILL }},
+ { &hf_rrc_RF_CapabBandListFDDComp_ext2_item,
+ { "RF-CapabBandFDDComp", "rrc.RF_CapabBandFDDComp",
+ FT_UINT32, BASE_DEC, VALS(rrc_RF_CapabBandFDDComp_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_UE_RadioAccessCapabBandCombList_va40ext_item,
+ { "SupportedCarrierCombination", "rrc.SupportedCarrierCombination",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_carrierCombination12,
+ { "carrierCombination12", "rrc.carrierCombination12",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_rrc_carrierCombination21,
+ { "carrierCombination21", "rrc.carrierCombination21",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_rrc_carrierCombination13,
+ { "carrierCombination13", "rrc.carrierCombination13",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_rrc_carrierCombination31,
+ { "carrierCombination31", "rrc.carrierCombination31",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_rrc_carrierCombination22,
+ { "carrierCombination22", "rrc.carrierCombination22",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
{ &hf_rrc_pdcp_Capability_r5_ext,
{ "pdcp-Capability-r5-ext", "rrc.pdcp_Capability_r5_ext",
FT_NONE, BASE_NONE, NULL, 0,
@@ -134913,7 +144021,7 @@ void proto_register_rrc(void) {
{ "rlc-Capability-r5-ext", "rrc.rlc_Capability_r5_ext",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_physicalChannelCapability_05,
+ { &hf_rrc_physicalChannelCapability_06,
{ "physicalChannelCapability", "rrc.physicalChannelCapability",
FT_NONE, BASE_NONE, NULL, 0,
"PhysicalChannelCapability_hspdsch_r5", HFILL }},
@@ -134977,6 +144085,14 @@ void proto_register_rrc(void) {
{ "supported", "rrc.supported",
FT_NONE, BASE_NONE, NULL, 0,
"T_supported_04", HFILL }},
+ { &hf_rrc_multiCarrier_EdchPhysicalLayerCategory_128,
+ { "multiCarrier-EdchPhysicalLayerCategory-128", "rrc.multiCarrier_EdchPhysicalLayerCategory_128",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_8", HFILL }},
+ { &hf_rrc_maxNumberCarrierForMCHSUPA_TDD,
+ { "maxNumberCarrierForMCHSUPA-TDD", "rrc.maxNumberCarrierForMCHSUPA_TDD",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_maxNumberCarrierForMCHSUPA_TDD_vals), 0,
+ NULL, HFILL }},
{ &hf_rrc_tdd384_edch_01,
{ "tdd384-edch", "rrc.tdd384_edch",
FT_UINT32, BASE_DEC, VALS(rrc_T_tdd384_edch_01_vals), 0,
@@ -135033,14 +144149,14 @@ void proto_register_rrc(void) {
{ "maxSimultaneousTransChs", "rrc.maxSimultaneousTransChs",
FT_UINT32, BASE_DEC, VALS(rrc_MaxSimultaneousTransChsUL_vals), 0,
"MaxSimultaneousTransChsUL", HFILL }},
- { &hf_rrc_modeSpecificInfo_15,
+ { &hf_rrc_modeSpecificInfo_17,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_15_vals), 0,
- "T_modeSpecificInfo_15", HFILL }},
- { &hf_rrc_tdd_10,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_17_vals), 0,
+ "T_modeSpecificInfo_17", HFILL }},
+ { &hf_rrc_tdd_12,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_09", HFILL }},
+ "T_tdd_11", HFILL }},
{ &hf_rrc_maxTransmittedBlocks,
{ "maxTransmittedBlocks", "rrc.maxTransmittedBlocks",
FT_UINT32, BASE_DEC, VALS(rrc_MaxTransportBlocksUL_vals), 0,
@@ -135173,7 +144289,7 @@ void proto_register_rrc(void) {
{ "DL-LogicalChannelMapping-r7", "rrc.DL_LogicalChannelMapping_r7",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_dummy_25,
+ { &hf_rrc_dummy_29,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, VALS(rrc_CID_InclusionInfo_r4_vals), 0,
"CID_InclusionInfo_r4", HFILL }},
@@ -135215,9 +144331,9 @@ void proto_register_rrc(void) {
"DL_AM_RLC_Mode_r7", HFILL }},
{ &hf_rrc_timerStatusProhibit,
{ "timerStatusProhibit", "rrc.timerStatusProhibit",
- FT_UINT32, BASE_DEC, VALS(rrc_TimerStatusProhibit_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_TimerStatusProhibit_vals_ext, 0,
NULL, HFILL }},
- { &hf_rrc_dummy_26,
+ { &hf_rrc_dummy_30,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, VALS(rrc_TimerEPC_vals), 0,
"TimerEPC", HFILL }},
@@ -135345,7 +144461,7 @@ void proto_register_rrc(void) {
{ "pdcp-Info", "rrc.pdcp_Info",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_dummy_27,
+ { &hf_rrc_dummy_31,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, NULL, 0,
"INTEGER_0_65535", HFILL }},
@@ -135355,11 +144471,11 @@ void proto_register_rrc(void) {
"PDCP_Info_r4", HFILL }},
{ &hf_rrc_timerPollProhibit,
{ "timerPollProhibit", "rrc.timerPollProhibit",
- FT_UINT32, BASE_DEC, VALS(rrc_TimerPollProhibit_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_TimerPollProhibit_vals_ext, 0,
NULL, HFILL }},
{ &hf_rrc_timerPoll,
{ "timerPoll", "rrc.timerPoll",
- FT_UINT32, BASE_DEC, VALS(rrc_TimerPoll_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_TimerPoll_vals_ext, 0,
NULL, HFILL }},
{ &hf_rrc_poll_PDU,
{ "poll-PDU", "rrc.poll_PDU",
@@ -136165,7 +145281,7 @@ void proto_register_rrc(void) {
{ "dummy1", "rrc.dummy1",
FT_UINT32, BASE_DEC, VALS(rrc_CID_InclusionInfo_r4_vals), 0,
"CID_InclusionInfo_r4", HFILL }},
- { &hf_rrc_dummy_28,
+ { &hf_rrc_dummy_32,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, NULL, 0,
"ROHC_PacketSizeList_r4", HFILL }},
@@ -136217,7 +145333,7 @@ void proto_register_rrc(void) {
{ "mac-ehs-AddReconfQueue-List", "rrc.mac_ehs_AddReconfQueue_List",
FT_UINT32, BASE_DEC, NULL, 0,
"MAC_ehs_AddReconfReordQ_List", HFILL }},
- { &hf_rrc_dummy_29,
+ { &hf_rrc_dummy_33,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, NULL, 0,
"MAC_ehs_DelReordQ_List", HFILL }},
@@ -136303,7 +145419,7 @@ void proto_register_rrc(void) {
"E_DCH_MAC_d_FlowMultiplexingList", HFILL }},
{ &hf_rrc_e_dch_mac_d_flow_retransmission_timer,
{ "e-dch-mac-d-flow-retransmission-timer", "rrc.e_dch_mac_d_flow_retransmission_timer",
- FT_UINT32, BASE_DEC, VALS(rrc_E_DCH_MAC_d_FlowRetransTimer_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_E_DCH_MAC_d_FlowRetransTimer_vals_ext, 0,
"E_DCH_MAC_d_FlowRetransTimer", HFILL }},
{ &hf_rrc_Common_E_DCH_MAC_d_FlowList_item,
{ "Common-E-DCH-MAC-d-Flow", "rrc.Common_E_DCH_MAC_d_Flow",
@@ -136313,18 +145429,18 @@ void proto_register_rrc(void) {
{ "rlc-Size", "rrc.rlc_Size",
FT_UINT32, BASE_DEC, VALS(rrc_T_rlc_Size_vals), 0,
NULL, HFILL }},
- { &hf_rrc_fdd_46,
+ { &hf_rrc_fdd_48,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_45", HFILL }},
+ "T_fdd_47", HFILL }},
{ &hf_rrc_octetModeRLC_SizeInfoType2,
{ "octetModeRLC-SizeInfoType2", "rrc.octetModeRLC_SizeInfoType2",
FT_UINT32, BASE_DEC, VALS(rrc_OctetModeRLC_SizeInfoType2_vals), 0,
NULL, HFILL }},
- { &hf_rrc_tdd_11,
+ { &hf_rrc_tdd_13,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_10", HFILL }},
+ "T_tdd_12", HFILL }},
{ &hf_rrc_commonTDD_Choice,
{ "commonTDD-Choice", "rrc.commonTDD_Choice",
FT_UINT32, BASE_DEC, VALS(rrc_T_commonTDD_Choice_vals), 0,
@@ -136513,7 +145629,7 @@ void proto_register_rrc(void) {
{ "dch-QualityTarget", "rrc.dch_QualityTarget",
FT_NONE, BASE_NONE, NULL, 0,
"QualityTarget", HFILL }},
- { &hf_rrc_dummy_30,
+ { &hf_rrc_dummy_34,
{ "dummy", "rrc.dummy",
FT_NONE, BASE_NONE, NULL, 0,
"TM_SignallingInfo", HFILL }},
@@ -136565,14 +145681,14 @@ void proto_register_rrc(void) {
{ "sccpch-TFCS", "rrc.sccpch_TFCS",
FT_UINT32, BASE_DEC, VALS(rrc_TFCS_vals), 0,
"TFCS", HFILL }},
- { &hf_rrc_modeSpecificInfo_16,
+ { &hf_rrc_modeSpecificInfo_18,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_16_vals), 0,
- "T_modeSpecificInfo_16", HFILL }},
- { &hf_rrc_fdd_47,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_18_vals), 0,
+ "T_modeSpecificInfo_18", HFILL }},
+ { &hf_rrc_fdd_49,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_46", HFILL }},
+ "T_fdd_48", HFILL }},
{ &hf_rrc_dl_Parameters,
{ "dl-Parameters", "rrc.dl_Parameters",
FT_UINT32, BASE_DEC, VALS(rrc_T_dl_Parameters_vals), 0,
@@ -136585,22 +145701,22 @@ void proto_register_rrc(void) {
{ "sameAsUL", "rrc.sameAsUL",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd_12,
+ { &hf_rrc_tdd_14,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_11", HFILL }},
+ "T_tdd_13", HFILL }},
{ &hf_rrc_individualDL_CCTrCH_InfoList,
{ "individualDL-CCTrCH-InfoList", "rrc.individualDL_CCTrCH_InfoList",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_17,
+ { &hf_rrc_modeSpecificInfo_19,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_17_vals), 0,
- "T_modeSpecificInfo_17", HFILL }},
- { &hf_rrc_fdd_48,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_19_vals), 0,
+ "T_modeSpecificInfo_19", HFILL }},
+ { &hf_rrc_fdd_50,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_47", HFILL }},
+ "T_fdd_49", HFILL }},
{ &hf_rrc_dl_Parameters_01,
{ "dl-Parameters", "rrc.dl_Parameters",
FT_UINT32, BASE_DEC, VALS(rrc_T_dl_Parameters_01_vals), 0,
@@ -136613,10 +145729,10 @@ void proto_register_rrc(void) {
{ "tfcs", "rrc.tfcs",
FT_UINT32, BASE_DEC, VALS(rrc_TFCS_vals), 0,
NULL, HFILL }},
- { &hf_rrc_tdd_13,
+ { &hf_rrc_tdd_15,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_12", HFILL }},
+ "T_tdd_14", HFILL }},
{ &hf_rrc_DL_DeletedTransChInfoList_item,
{ "DL-TransportChannelIdentity", "rrc.DL_TransportChannelIdentity",
FT_NONE, BASE_NONE, NULL, 0,
@@ -136687,7 +145803,7 @@ void proto_register_rrc(void) {
NULL, HFILL }},
{ &hf_rrc_mac_d_FlowRetransTimer,
{ "mac-d-FlowRetransTimer", "rrc.mac_d_FlowRetransTimer",
- FT_UINT32, BASE_DEC, VALS(rrc_E_DCH_MAC_d_FlowRetransTimer_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_E_DCH_MAC_d_FlowRetransTimer_vals_ext, 0,
"E_DCH_MAC_d_FlowRetransTimer", HFILL }},
{ &hf_rrc_transmissionGrantType_01,
{ "transmissionGrantType", "rrc.transmissionGrantType",
@@ -136697,14 +145813,14 @@ void proto_register_rrc(void) {
{ "non-ScheduledTransGrantInfo", "rrc.non_ScheduledTransGrantInfo",
FT_NONE, BASE_NONE, NULL, 0,
"T_non_ScheduledTransGrantInfo_01", HFILL }},
- { &hf_rrc_modeSpecificInfo_18,
+ { &hf_rrc_modeSpecificInfo_20,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_18_vals), 0,
- "T_modeSpecificInfo_18", HFILL }},
- { &hf_rrc_fdd_49,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_20_vals), 0,
+ "T_modeSpecificInfo_20", HFILL }},
+ { &hf_rrc_fdd_51,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_48", HFILL }},
+ "T_fdd_50", HFILL }},
{ &hf_rrc_E_DCH_AddReconf_MAC_d_FlowList_item,
{ "E-DCH-AddReconf-MAC-d-Flow", "rrc.E_DCH_AddReconf_MAC_d_Flow",
FT_NONE, BASE_NONE, NULL, 0,
@@ -136713,7 +145829,7 @@ void proto_register_rrc(void) {
{ "E-DCH-AddReconf-MAC-d-Flow-r7", "rrc.E_DCH_AddReconf_MAC_d_Flow_r7",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_complete_20,
+ { &hf_rrc_complete_23,
{ "complete", "rrc.complete",
FT_NONE, BASE_NONE, NULL, 0,
"TFCS_ReconfAdd", HFILL }},
@@ -136787,7 +145903,7 @@ void proto_register_rrc(void) {
"SEQUENCE_SIZE_1_maxHProcesses_OF_HARQMemorySize", HFILL }},
{ &hf_rrc_explicit_item,
{ "HARQMemorySize", "rrc.HARQMemorySize",
- FT_UINT32, BASE_DEC, VALS(rrc_HARQMemorySize_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_HARQMemorySize_vals_ext, 0,
NULL, HFILL }},
{ &hf_rrc_numberOfProcesses_01,
{ "numberOfProcesses", "rrc.numberOfProcesses",
@@ -136807,7 +145923,7 @@ void proto_register_rrc(void) {
"SEQUENCE_SIZE_1_maxHProcesses_OF_HARQMemorySize", HFILL }},
{ &hf_rrc_memorySize_item,
{ "HARQMemorySize", "rrc.HARQMemorySize",
- FT_UINT32, BASE_DEC, VALS(rrc_HARQMemorySize_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_HARQMemorySize_vals_ext, 0,
NULL, HFILL }},
{ &hf_rrc_additionalMemorySizesForMIMO,
{ "additionalMemorySizesForMIMO", "rrc.additionalMemorySizesForMIMO",
@@ -136815,7 +145931,7 @@ void proto_register_rrc(void) {
"SEQUENCE_SIZE_1_maxHProcesses_OF_HARQMemorySize", HFILL }},
{ &hf_rrc_additionalMemorySizesForMIMO_item,
{ "HARQMemorySize", "rrc.HARQMemorySize",
- FT_UINT32, BASE_DEC, VALS(rrc_HARQMemorySize_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_HARQMemorySize_vals_ext, 0,
NULL, HFILL }},
{ &hf_rrc_dl_TFCS_Identity,
{ "dl-TFCS-Identity", "rrc.dl_TFCS_Identity",
@@ -136997,14 +146113,14 @@ void proto_register_rrc(void) {
{ "referenceTFC", "rrc.referenceTFC",
FT_UINT32, BASE_DEC, NULL, 0,
"TFC_Value", HFILL }},
- { &hf_rrc_modeSpecificInfo_19,
+ { &hf_rrc_modeSpecificInfo_21,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_19_vals), 0,
- "T_modeSpecificInfo_19", HFILL }},
- { &hf_rrc_fdd_50,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_21_vals), 0,
+ "T_modeSpecificInfo_21", HFILL }},
+ { &hf_rrc_fdd_52,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_49", HFILL }},
+ "T_fdd_51", HFILL }},
{ &hf_rrc_gainFactorBetaC,
{ "gainFactorBetaC", "rrc.gainFactorBetaC",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -137061,14 +146177,14 @@ void proto_register_rrc(void) {
{ "crc-Size", "rrc.crc_Size",
FT_UINT32, BASE_DEC, VALS(rrc_CRC_Size_vals), 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_20,
+ { &hf_rrc_modeSpecificInfo_22,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_20_vals), 0,
- "T_modeSpecificInfo_20", HFILL }},
- { &hf_rrc_fdd_51,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_22_vals), 0,
+ "T_modeSpecificInfo_22", HFILL }},
+ { &hf_rrc_fdd_53,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_50", HFILL }},
+ "T_fdd_52", HFILL }},
{ &hf_rrc_referenceTFC_ID,
{ "referenceTFC-ID", "rrc.referenceTFC_ID",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -137113,14 +146229,14 @@ void proto_register_rrc(void) {
{ "TFC-SubsetList item", "rrc.TFC_SubsetList_item",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_21,
+ { &hf_rrc_modeSpecificInfo_23,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_21_vals), 0,
- "T_modeSpecificInfo_21", HFILL }},
- { &hf_rrc_tdd_14,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_23_vals), 0,
+ "T_modeSpecificInfo_23", HFILL }},
+ { &hf_rrc_tdd_16,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_13", HFILL }},
+ "T_tdd_15", HFILL }},
{ &hf_rrc_tfci_Range,
{ "tfci-Range", "rrc.tfci_Range",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -137145,7 +146261,7 @@ void proto_register_rrc(void) {
{ "normalTFCI-Signalling", "rrc.normalTFCI_Signalling",
FT_UINT32, BASE_DEC, VALS(rrc_ExplicitTFCS_Configuration_vals), 0,
"ExplicitTFCS_Configuration", HFILL }},
- { &hf_rrc_dummy_31,
+ { &hf_rrc_dummy_35,
{ "dummy", "rrc.dummy",
FT_NONE, BASE_NONE, NULL, 0,
"SplitTFCI_Signalling", HFILL }},
@@ -137373,10 +146489,10 @@ void proto_register_rrc(void) {
{ "modeSpecific", "rrc.modeSpecific",
FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecific_vals), 0,
NULL, HFILL }},
- { &hf_rrc_fdd_52,
+ { &hf_rrc_fdd_54,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_51", HFILL }},
+ "T_fdd_53", HFILL }},
{ &hf_rrc_harq_Info_01,
{ "harq-Info", "rrc.harq_Info",
FT_UINT32, BASE_DEC, VALS(rrc_T_harq_Info_01_vals), 0,
@@ -137401,10 +146517,10 @@ void proto_register_rrc(void) {
{ "modeSpecific", "rrc.modeSpecific",
FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecific_01_vals), 0,
"T_modeSpecific_01", HFILL }},
- { &hf_rrc_fdd_53,
+ { &hf_rrc_fdd_55,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_52", HFILL }},
+ "T_fdd_54", HFILL }},
{ &hf_rrc_harq_Info_02,
{ "harq-Info", "rrc.harq_Info",
FT_UINT32, BASE_DEC, VALS(rrc_T_harq_Info_02_vals), 0,
@@ -137413,34 +146529,34 @@ void proto_register_rrc(void) {
{ "prach-TFCS", "rrc.prach_TFCS",
FT_UINT32, BASE_DEC, VALS(rrc_TFCS_vals), 0,
"TFCS", HFILL }},
- { &hf_rrc_modeSpecificInfo_22,
+ { &hf_rrc_modeSpecificInfo_24,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_22_vals), 0,
- "T_modeSpecificInfo_22", HFILL }},
- { &hf_rrc_fdd_54,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_24_vals), 0,
+ "T_modeSpecificInfo_24", HFILL }},
+ { &hf_rrc_fdd_56,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_53", HFILL }},
- { &hf_rrc_tdd_15,
+ "T_fdd_55", HFILL }},
+ { &hf_rrc_tdd_17,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_14", HFILL }},
+ "T_tdd_16", HFILL }},
{ &hf_rrc_individualUL_CCTrCH_InfoList,
{ "individualUL-CCTrCH-InfoList", "rrc.individualUL_CCTrCH_InfoList",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_23,
+ { &hf_rrc_modeSpecificInfo_25,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_23_vals), 0,
- "T_modeSpecificInfo_23", HFILL }},
- { &hf_rrc_fdd_55,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_25_vals), 0,
+ "T_modeSpecificInfo_25", HFILL }},
+ { &hf_rrc_fdd_57,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_54", HFILL }},
- { &hf_rrc_tdd_16,
+ "T_fdd_56", HFILL }},
+ { &hf_rrc_tdd_18,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_15", HFILL }},
+ "T_tdd_17", HFILL }},
{ &hf_rrc_tfc_SubsetList,
{ "tfc-SubsetList", "rrc.tfc_SubsetList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -137617,6 +146733,10 @@ void proto_register_rrc(void) {
{ "AdditionalPRACH-TF-and-TFCS-CCCH", "rrc.AdditionalPRACH_TF_and_TFCS_CCCH",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_AdditionalDLSecCellInfoListFDD_item,
+ { "AdditionalDLSecCellInfoFDD", "rrc.AdditionalDLSecCellInfoFDD",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_rrc_channelisationCode256,
{ "channelisationCode256", "rrc.channelisationCode256",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -137805,30 +146925,30 @@ void proto_register_rrc(void) {
{ "common-E-DCH-MAC-d-FlowList", "rrc.common_E_DCH_MAC_d_FlowList",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_24,
+ { &hf_rrc_modeSpecificInfo_26,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_24_vals), 0,
- "T_modeSpecificInfo_24", HFILL }},
- { &hf_rrc_dummy_32,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_26_vals), 0,
+ "T_modeSpecificInfo_26", HFILL }},
+ { &hf_rrc_dummy_36,
{ "dummy", "rrc.dummy",
FT_NONE, BASE_NONE, NULL, 0,
"T_dummy_14", HFILL }},
- { &hf_rrc_tdd_17,
+ { &hf_rrc_tdd_19,
{ "tdd", "rrc.tdd",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_16_vals), 0,
- "T_tdd_16", HFILL }},
- { &hf_rrc_tdd768_04,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_18_vals), 0,
+ "T_tdd_18", HFILL }},
+ { &hf_rrc_tdd768_05,
{ "tdd768", "rrc.tdd768",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd384_09,
+ { &hf_rrc_tdd384_10,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd128_09,
+ { &hf_rrc_tdd128_10,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_09", HFILL }},
+ "T_tdd128_10", HFILL }},
{ &hf_rrc_e_RUCCH_Info,
{ "e-RUCCH-Info", "rrc.e_RUCCH_Info",
FT_NONE, BASE_NONE, NULL, 0,
@@ -137863,7 +146983,7 @@ void proto_register_rrc(void) {
"INTEGER_0_7", HFILL }},
{ &hf_rrc_harq_retransmission_timer,
{ "harq-retransmission-timer", "rrc.harq_retransmission_timer",
- FT_UINT32, BASE_DEC, VALS(rrc_T_harq_retransmission_timer_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_T_harq_retransmission_timer_vals_ext, 0,
NULL, HFILL }},
{ &hf_rrc_harq_power_offset,
{ "harq-power-offset", "rrc.harq_power_offset",
@@ -138069,14 +147189,14 @@ void proto_register_rrc(void) {
{ "tddOption", "rrc.tddOption",
FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_03_vals), 0,
"T_tddOption_03", HFILL }},
- { &hf_rrc_tdd384_10,
+ { &hf_rrc_tdd384_11,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_09", HFILL }},
- { &hf_rrc_tdd128_10,
+ "T_tdd384_10", HFILL }},
+ { &hf_rrc_tdd128_11,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_10", HFILL }},
+ "T_tdd128_11", HFILL }},
{ &hf_rrc_dl_CCTrCH_TimeslotsCodes_01,
{ "dl-CCTrCH-TimeslotsCodes", "rrc.dl_CCTrCH_TimeslotsCodes",
FT_NONE, BASE_NONE, NULL, 0,
@@ -138085,26 +147205,26 @@ void proto_register_rrc(void) {
{ "tddOption", "rrc.tddOption",
FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_04_vals), 0,
"T_tddOption_04", HFILL }},
- { &hf_rrc_tdd384_11,
+ { &hf_rrc_tdd384_12,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_10", HFILL }},
+ "T_tdd384_11", HFILL }},
{ &hf_rrc_dl_CCTrCH_TimeslotsCodes_02,
{ "dl-CCTrCH-TimeslotsCodes", "rrc.dl_CCTrCH_TimeslotsCodes",
FT_NONE, BASE_NONE, NULL, 0,
"DownlinkTimeslotsCodes_r7", HFILL }},
- { &hf_rrc_tdd768_05,
+ { &hf_rrc_tdd768_06,
{ "tdd768", "rrc.tdd768",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd768_04", HFILL }},
+ "T_tdd768_05", HFILL }},
{ &hf_rrc_dl_CCTrCH_TimeslotsCodes_03,
{ "dl-CCTrCH-TimeslotsCodes", "rrc.dl_CCTrCH_TimeslotsCodes",
FT_NONE, BASE_NONE, NULL, 0,
"DownlinkTimeslotsCodes_VHCR", HFILL }},
- { &hf_rrc_tdd128_11,
+ { &hf_rrc_tdd128_12,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_11", HFILL }},
+ "T_tdd128_12", HFILL }},
{ &hf_rrc_DL_CCTrChList_item,
{ "DL-CCTrCh", "rrc.DL_CCTrCh",
FT_NONE, BASE_NONE, NULL, 0,
@@ -138141,14 +147261,14 @@ void proto_register_rrc(void) {
{ "dl-DPCH-InfoCommon", "rrc.dl_DPCH_InfoCommon",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_25,
+ { &hf_rrc_modeSpecificInfo_27,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_25_vals), 0,
- "T_modeSpecificInfo_25", HFILL }},
- { &hf_rrc_fdd_56,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_27_vals), 0,
+ "T_modeSpecificInfo_27", HFILL }},
+ { &hf_rrc_fdd_58,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_55", HFILL }},
+ "T_fdd_57", HFILL }},
{ &hf_rrc_defaultDPCH_OffsetValue,
{ "defaultDPCH-OffsetValue", "rrc.defaultDPCH_OffsetValue",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -138157,14 +147277,14 @@ void proto_register_rrc(void) {
{ "dpch-CompressedModeInfo", "rrc.dpch_CompressedModeInfo",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_dummy_33,
+ { &hf_rrc_dummy_37,
{ "dummy", "rrc.dummy",
FT_NONE, BASE_NONE, NULL, 0,
"SSDT_Information", HFILL }},
- { &hf_rrc_tdd_18,
+ { &hf_rrc_tdd_20,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_17", HFILL }},
+ "T_tdd_19", HFILL }},
{ &hf_rrc_defaultDPCH_OffsetValue_01,
{ "defaultDPCH-OffsetValue", "rrc.defaultDPCH_OffsetValue",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -138173,54 +147293,54 @@ void proto_register_rrc(void) {
{ "dl-DPCH-InfoCommon", "rrc.dl_DPCH_InfoCommon",
FT_NONE, BASE_NONE, NULL, 0,
"DL_DPCH_InfoCommon_r4", HFILL }},
- { &hf_rrc_modeSpecificInfo_26,
+ { &hf_rrc_modeSpecificInfo_28,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_26_vals), 0,
- "T_modeSpecificInfo_26", HFILL }},
- { &hf_rrc_fdd_57,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_28_vals), 0,
+ "T_modeSpecificInfo_28", HFILL }},
+ { &hf_rrc_fdd_59,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_56", HFILL }},
- { &hf_rrc_dummy_34,
+ "T_fdd_58", HFILL }},
+ { &hf_rrc_dummy_38,
{ "dummy", "rrc.dummy",
FT_NONE, BASE_NONE, NULL, 0,
"SSDT_Information_r4", HFILL }},
- { &hf_rrc_tdd_19,
+ { &hf_rrc_tdd_21,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_18", HFILL }},
+ "T_tdd_20", HFILL }},
{ &hf_rrc_tddOption_05,
{ "tddOption", "rrc.tddOption",
FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_05_vals), 0,
"T_tddOption_05", HFILL }},
- { &hf_rrc_tdd128_12,
+ { &hf_rrc_tdd128_13,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_12", HFILL }},
+ "T_tdd128_13", HFILL }},
{ &hf_rrc_tstd_Indicator,
{ "tstd-Indicator", "rrc.tstd_Indicator",
FT_BOOLEAN, BASE_NONE, NULL, 0,
"BOOLEAN", HFILL }},
- { &hf_rrc_modeSpecificInfo_27,
+ { &hf_rrc_modeSpecificInfo_29,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_27_vals), 0,
- "T_modeSpecificInfo_27", HFILL }},
- { &hf_rrc_fdd_58,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_29_vals), 0,
+ "T_modeSpecificInfo_29", HFILL }},
+ { &hf_rrc_fdd_60,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_57", HFILL }},
- { &hf_rrc_tdd_20,
+ "T_fdd_59", HFILL }},
+ { &hf_rrc_tdd_22,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_19", HFILL }},
+ "T_tdd_21", HFILL }},
{ &hf_rrc_tddOption_06,
{ "tddOption", "rrc.tddOption",
FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_06_vals), 0,
"T_tddOption_06", HFILL }},
- { &hf_rrc_tdd128_13,
+ { &hf_rrc_tdd128_14,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_13", HFILL }},
+ "T_tdd128_14", HFILL }},
{ &hf_rrc_mac_hsResetIndicator_04,
{ "mac-hsResetIndicator", "rrc.mac_hsResetIndicator",
FT_UINT32, BASE_DEC, VALS(rrc_T_mac_hsResetIndicator_04_vals), 0,
@@ -138237,26 +147357,26 @@ void proto_register_rrc(void) {
{ "dl-FDPCH-InfoCommon", "rrc.dl_FDPCH_InfoCommon",
FT_NONE, BASE_NONE, NULL, 0,
"DL_FDPCH_InfoCommon_r6", HFILL }},
- { &hf_rrc_modeSpecificInfo_28,
+ { &hf_rrc_modeSpecificInfo_30,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_28_vals), 0,
- "T_modeSpecificInfo_28", HFILL }},
- { &hf_rrc_fdd_59,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_30_vals), 0,
+ "T_modeSpecificInfo_30", HFILL }},
+ { &hf_rrc_fdd_61,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_58", HFILL }},
- { &hf_rrc_tdd_21,
+ "T_fdd_60", HFILL }},
+ { &hf_rrc_tdd_23,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_20", HFILL }},
+ "T_tdd_22", HFILL }},
{ &hf_rrc_tddOption_07,
{ "tddOption", "rrc.tddOption",
FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_07_vals), 0,
"T_tddOption_07", HFILL }},
- { &hf_rrc_tdd128_14,
+ { &hf_rrc_tdd128_15,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_14", HFILL }},
+ "T_tdd128_15", HFILL }},
{ &hf_rrc_mac_hsResetIndicator_05,
{ "mac-hsResetIndicator", "rrc.mac_hsResetIndicator",
FT_UINT32, BASE_DEC, VALS(rrc_T_mac_hsResetIndicator_05_vals), 0,
@@ -138269,26 +147389,26 @@ void proto_register_rrc(void) {
{ "dl-dpchInfoCommon", "rrc.dl_dpchInfoCommon",
FT_UINT32, BASE_DEC, VALS(rrc_T_dl_dpchInfoCommon_01_vals), 0,
"T_dl_dpchInfoCommon_01", HFILL }},
- { &hf_rrc_modeSpecificInfo_29,
+ { &hf_rrc_modeSpecificInfo_31,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_29_vals), 0,
- "T_modeSpecificInfo_29", HFILL }},
- { &hf_rrc_fdd_60,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_31_vals), 0,
+ "T_modeSpecificInfo_31", HFILL }},
+ { &hf_rrc_fdd_62,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_59", HFILL }},
- { &hf_rrc_tdd_22,
+ "T_fdd_61", HFILL }},
+ { &hf_rrc_tdd_24,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_21", HFILL }},
+ "T_tdd_23", HFILL }},
{ &hf_rrc_tddOption_08,
{ "tddOption", "rrc.tddOption",
FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_08_vals), 0,
"T_tddOption_08", HFILL }},
- { &hf_rrc_tdd128_15,
+ { &hf_rrc_tdd128_16,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_15", HFILL }},
+ "T_tdd128_16", HFILL }},
{ &hf_rrc_mac_hsResetIndicator_06,
{ "mac-hsResetIndicator", "rrc.mac_hsResetIndicator",
FT_UINT32, BASE_DEC, VALS(rrc_T_mac_hsResetIndicator_06_vals), 0,
@@ -138301,30 +147421,30 @@ void proto_register_rrc(void) {
{ "dl-dpchInfoCommon", "rrc.dl_dpchInfoCommon",
FT_UINT32, BASE_DEC, VALS(rrc_T_dl_dpchInfoCommon_02_vals), 0,
"T_dl_dpchInfoCommon_02", HFILL }},
- { &hf_rrc_modeSpecificInfo_30,
+ { &hf_rrc_modeSpecificInfo_32,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_30_vals), 0,
- "T_modeSpecificInfo_30", HFILL }},
- { &hf_rrc_fdd_61,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_32_vals), 0,
+ "T_modeSpecificInfo_32", HFILL }},
+ { &hf_rrc_fdd_63,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_60", HFILL }},
+ "T_fdd_62", HFILL }},
{ &hf_rrc_dpch_CompressedModeInfo_01,
{ "dpch-CompressedModeInfo", "rrc.dpch_CompressedModeInfo",
FT_NONE, BASE_NONE, NULL, 0,
"DPCH_CompressedModeInfo_r8", HFILL }},
- { &hf_rrc_tdd_23,
+ { &hf_rrc_tdd_25,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_22", HFILL }},
+ "T_tdd_24", HFILL }},
{ &hf_rrc_tddOption_09,
{ "tddOption", "rrc.tddOption",
FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_09_vals), 0,
"T_tddOption_09", HFILL }},
- { &hf_rrc_tdd128_16,
+ { &hf_rrc_tdd128_17,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_16", HFILL }},
+ "T_tdd128_17", HFILL }},
{ &hf_rrc_mac_hsResetIndicator_07,
{ "mac-hsResetIndicator", "rrc.mac_hsResetIndicator",
FT_UINT32, BASE_DEC, VALS(rrc_T_mac_hsResetIndicator_07_vals), 0,
@@ -138333,6 +147453,42 @@ void proto_register_rrc(void) {
{ "postVerificationPeriod", "rrc.postVerificationPeriod",
FT_UINT32, BASE_DEC, VALS(rrc_T_postVerificationPeriod_09_vals), 0,
"T_postVerificationPeriod_09", HFILL }},
+ { &hf_rrc_dl_dpchInfoCommon_03,
+ { "dl-dpchInfoCommon", "rrc.dl_dpchInfoCommon",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_dl_dpchInfoCommon_03_vals), 0,
+ "T_dl_dpchInfoCommon_03", HFILL }},
+ { &hf_rrc_modeSpecificInfo_33,
+ { "modeSpecificInfo", "rrc.modeSpecificInfo",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_33_vals), 0,
+ "T_modeSpecificInfo_33", HFILL }},
+ { &hf_rrc_fdd_64,
+ { "fdd", "rrc.fdd",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_fdd_63", HFILL }},
+ { &hf_rrc_dpch_CompressedModeInfo_02,
+ { "dpch-CompressedModeInfo", "rrc.dpch_CompressedModeInfo",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "DPCH_CompressedModeInfo_r10", HFILL }},
+ { &hf_rrc_tdd_26,
+ { "tdd", "rrc.tdd",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_tdd_25", HFILL }},
+ { &hf_rrc_tddOption_10,
+ { "tddOption", "rrc.tddOption",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_10_vals), 0,
+ "T_tddOption_10", HFILL }},
+ { &hf_rrc_tdd128_18,
+ { "tdd128", "rrc.tdd128",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_tdd128_18", HFILL }},
+ { &hf_rrc_mac_hsResetIndicator_08,
+ { "mac-hsResetIndicator", "rrc.mac_hsResetIndicator",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_mac_hsResetIndicator_08_vals), 0,
+ "T_mac_hsResetIndicator_08", HFILL }},
+ { &hf_rrc_postVerificationPeriod_10,
+ { "postVerificationPeriod", "rrc.postVerificationPeriod",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_postVerificationPeriod_10_vals), 0,
+ "T_postVerificationPeriod_10", HFILL }},
{ &hf_rrc_dl_DPCH_InfoCommon_03,
{ "dl-DPCH-InfoCommon", "rrc.dl_DPCH_InfoCommon",
FT_NONE, BASE_NONE, NULL, 0,
@@ -138353,18 +147509,18 @@ void proto_register_rrc(void) {
{ "initialise", "rrc.initialise",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_dummy_35,
+ { &hf_rrc_dummy_39,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, NULL, 0,
"Cfntargetsfnframeoffset", HFILL }},
- { &hf_rrc_modeSpecificInfo_31,
+ { &hf_rrc_modeSpecificInfo_34,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_31_vals), 0,
- "T_modeSpecificInfo_31", HFILL }},
- { &hf_rrc_fdd_62,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_34_vals), 0,
+ "T_modeSpecificInfo_34", HFILL }},
+ { &hf_rrc_fdd_65,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_61", HFILL }},
+ "T_fdd_64", HFILL }},
{ &hf_rrc_dl_DPCH_PowerControlInfo,
{ "dl-DPCH-PowerControlInfo", "rrc.dl_DPCH_PowerControlInfo",
FT_NONE, BASE_NONE, NULL, 0,
@@ -138389,10 +147545,10 @@ void proto_register_rrc(void) {
{ "tfci-Existence", "rrc.tfci_Existence",
FT_BOOLEAN, BASE_NONE, NULL, 0,
"BOOLEAN", HFILL }},
- { &hf_rrc_tdd_24,
+ { &hf_rrc_tdd_27,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_23", HFILL }},
+ "T_tdd_26", HFILL }},
{ &hf_rrc_cfnHandling_01,
{ "cfnHandling", "rrc.cfnHandling",
FT_UINT32, BASE_DEC, VALS(rrc_T_cfnHandling_01_vals), 0,
@@ -138401,18 +147557,18 @@ void proto_register_rrc(void) {
{ "initialise", "rrc.initialise",
FT_NONE, BASE_NONE, NULL, 0,
"T_initialise_01", HFILL }},
- { &hf_rrc_modeSpecificInfo_32,
+ { &hf_rrc_modeSpecificInfo_35,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_32_vals), 0,
- "T_modeSpecificInfo_32", HFILL }},
- { &hf_rrc_fdd_63,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_35_vals), 0,
+ "T_modeSpecificInfo_35", HFILL }},
+ { &hf_rrc_fdd_66,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_62", HFILL }},
- { &hf_rrc_tdd_25,
+ "T_fdd_65", HFILL }},
+ { &hf_rrc_tdd_28,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_24", HFILL }},
+ "T_tdd_27", HFILL }},
{ &hf_rrc_mac_d_HFN_initial_value,
{ "mac-d-HFN-initial-value", "rrc.mac_d_HFN_initial_value",
FT_BYTES, BASE_NONE, NULL, 0,
@@ -138433,34 +147589,34 @@ void proto_register_rrc(void) {
{ "initialise", "rrc.initialise",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_33,
+ { &hf_rrc_modeSpecificInfo_36,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_33_vals), 0,
- "T_modeSpecificInfo_33", HFILL }},
- { &hf_rrc_fdd_64,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_36_vals), 0,
+ "T_modeSpecificInfo_36", HFILL }},
+ { &hf_rrc_fdd_67,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_63", HFILL }},
- { &hf_rrc_tdd_26,
+ "T_fdd_66", HFILL }},
+ { &hf_rrc_tdd_29,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_25", HFILL }},
- { &hf_rrc_modeSpecificInfo_34,
+ "T_tdd_28", HFILL }},
+ { &hf_rrc_modeSpecificInfo_37,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_34_vals), 0,
- "T_modeSpecificInfo_34", HFILL }},
- { &hf_rrc_fdd_65,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_37_vals), 0,
+ "T_modeSpecificInfo_37", HFILL }},
+ { &hf_rrc_fdd_68,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_64", HFILL }},
- { &hf_rrc_tdd_27,
+ "T_fdd_67", HFILL }},
+ { &hf_rrc_tdd_30,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_26", HFILL }},
- { &hf_rrc_fdd_66,
+ "T_tdd_29", HFILL }},
+ { &hf_rrc_fdd_69,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_65", HFILL }},
+ "T_fdd_68", HFILL }},
{ &hf_rrc_pCPICH_UsageForChannelEst,
{ "pCPICH-UsageForChannelEst", "rrc.pCPICH_UsageForChannelEst",
FT_UINT32, BASE_DEC, VALS(rrc_PCPICH_UsageForChannelEst_vals), 0,
@@ -138481,7 +147637,7 @@ void proto_register_rrc(void) {
{ "tpc-CombinationIndex", "rrc.tpc_CombinationIndex",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_dummy_36,
+ { &hf_rrc_dummy_40,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, VALS(rrc_SSDT_CellIdentity_vals), 0,
"SSDT_CellIdentity", HFILL }},
@@ -138489,10 +147645,10 @@ void proto_register_rrc(void) {
{ "closedLoopTimingAdjMode", "rrc.closedLoopTimingAdjMode",
FT_UINT32, BASE_DEC, VALS(rrc_ClosedLoopTimingAdjMode_vals), 0,
NULL, HFILL }},
- { &hf_rrc_tdd_28,
+ { &hf_rrc_tdd_31,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_27", HFILL }},
+ "T_tdd_30", HFILL }},
{ &hf_rrc_dl_CCTrChListToEstablish,
{ "dl-CCTrChListToEstablish", "rrc.dl_CCTrChListToEstablish",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -138501,46 +147657,46 @@ void proto_register_rrc(void) {
{ "dl-CCTrChListToRemove", "rrc.dl_CCTrChListToRemove",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_fdd_67,
+ { &hf_rrc_fdd_70,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_66", HFILL }},
- { &hf_rrc_tdd_29,
+ "T_fdd_69", HFILL }},
+ { &hf_rrc_tdd_32,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_28", HFILL }},
+ "T_tdd_31", HFILL }},
{ &hf_rrc_dl_CCTrChListToEstablish_01,
{ "dl-CCTrChListToEstablish", "rrc.dl_CCTrChListToEstablish",
FT_UINT32, BASE_DEC, NULL, 0,
"DL_CCTrChList_r4", HFILL }},
- { &hf_rrc_fdd_68,
+ { &hf_rrc_fdd_71,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_67", HFILL }},
+ "T_fdd_70", HFILL }},
{ &hf_rrc_powerOffsetTPC_pdpdch,
{ "powerOffsetTPC-pdpdch", "rrc.powerOffsetTPC_pdpdch",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd_30,
+ { &hf_rrc_tdd_33,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_29", HFILL }},
- { &hf_rrc_fdd_69,
+ "T_tdd_32", HFILL }},
+ { &hf_rrc_fdd_72,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_68", HFILL }},
- { &hf_rrc_tdd_31,
+ "T_fdd_71", HFILL }},
+ { &hf_rrc_tdd_34,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_30", HFILL }},
- { &hf_rrc_fdd_70,
+ "T_tdd_33", HFILL }},
+ { &hf_rrc_fdd_73,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_69", HFILL }},
- { &hf_rrc_tdd_32,
+ "T_fdd_72", HFILL }},
+ { &hf_rrc_tdd_35,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_31", HFILL }},
+ "T_tdd_34", HFILL }},
{ &hf_rrc_dl_CCTrChListToEstablish_02,
{ "dl-CCTrChListToEstablish", "rrc.dl_CCTrChListToEstablish",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -138569,18 +147725,18 @@ void proto_register_rrc(void) {
{ "dl-DPCH-TimeslotsCodes", "rrc.dl_DPCH_TimeslotsCodes",
FT_NONE, BASE_NONE, NULL, 0,
"DownlinkTimeslotsCodes", HFILL }},
- { &hf_rrc_modeSpecificInfo_35,
+ { &hf_rrc_modeSpecificInfo_38,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_35_vals), 0,
- "T_modeSpecificInfo_35", HFILL }},
- { &hf_rrc_fdd_71,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_38_vals), 0,
+ "T_modeSpecificInfo_38", HFILL }},
+ { &hf_rrc_fdd_74,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_70", HFILL }},
- { &hf_rrc_tdd_33,
+ "T_fdd_73", HFILL }},
+ { &hf_rrc_tdd_36,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_32", HFILL }},
+ "T_tdd_35", HFILL }},
{ &hf_rrc_tpc_StepSizeTDD,
{ "tpc-StepSizeTDD", "rrc.tpc_StepSizeTDD",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -138609,26 +147765,26 @@ void proto_register_rrc(void) {
{ "measurement-feedback-Info", "rrc.measurement_feedback_Info",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_36,
+ { &hf_rrc_modeSpecificInfo_39,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_36_vals), 0,
- "T_modeSpecificInfo_36", HFILL }},
- { &hf_rrc_tdd_34,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_39_vals), 0,
+ "T_modeSpecificInfo_39", HFILL }},
+ { &hf_rrc_tdd_37,
{ "tdd", "rrc.tdd",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_33_vals), 0,
- "T_tdd_33", HFILL }},
- { &hf_rrc_tdd384_12,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_36_vals), 0,
+ "T_tdd_36", HFILL }},
+ { &hf_rrc_tdd384_13,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_11", HFILL }},
+ "T_tdd384_12", HFILL }},
{ &hf_rrc_dl_HSPDSCH_TS_Configuration,
{ "dl-HSPDSCH-TS-Configuration", "rrc.dl_HSPDSCH_TS_Configuration",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd128_17,
+ { &hf_rrc_tdd128_19,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_17", HFILL }},
+ "T_tdd128_19", HFILL }},
{ &hf_rrc_hs_PDSCH_Midamble_Configuration_tdd128,
{ "hs-PDSCH-Midamble-Configuration-tdd128", "rrc.hs_PDSCH_Midamble_Configuration_tdd128",
FT_NONE, BASE_NONE, NULL, 0,
@@ -138637,22 +147793,22 @@ void proto_register_rrc(void) {
{ "hs-scch-Info", "rrc.hs_scch_Info",
FT_NONE, BASE_NONE, NULL, 0,
"HS_SCCH_Info_r6", HFILL }},
- { &hf_rrc_modeSpecificInfo_37,
+ { &hf_rrc_modeSpecificInfo_40,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_37_vals), 0,
- "T_modeSpecificInfo_37", HFILL }},
- { &hf_rrc_tdd_35,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_40_vals), 0,
+ "T_modeSpecificInfo_40", HFILL }},
+ { &hf_rrc_tdd_38,
{ "tdd", "rrc.tdd",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_34_vals), 0,
- "T_tdd_34", HFILL }},
- { &hf_rrc_tdd384_13,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_37_vals), 0,
+ "T_tdd_37", HFILL }},
+ { &hf_rrc_tdd384_14,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_12", HFILL }},
- { &hf_rrc_tdd128_18,
+ "T_tdd384_13", HFILL }},
+ { &hf_rrc_tdd128_20,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_18", HFILL }},
+ "T_tdd128_20", HFILL }},
{ &hf_rrc_hs_scch_Info_02,
{ "hs-scch-Info", "rrc.hs_scch_Info",
FT_NONE, BASE_NONE, NULL, 0,
@@ -138661,82 +147817,82 @@ void proto_register_rrc(void) {
{ "measurement-feedback-Info", "rrc.measurement_feedback_Info",
FT_NONE, BASE_NONE, NULL, 0,
"Measurement_Feedback_Info_r7", HFILL }},
- { &hf_rrc_modeSpecificInfo_38,
+ { &hf_rrc_modeSpecificInfo_41,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_38_vals), 0,
- "T_modeSpecificInfo_38", HFILL }},
- { &hf_rrc_tdd_36,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_41_vals), 0,
+ "T_modeSpecificInfo_41", HFILL }},
+ { &hf_rrc_tdd_39,
{ "tdd", "rrc.tdd",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_35_vals), 0,
- "T_tdd_35", HFILL }},
- { &hf_rrc_tdd384_14,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_38_vals), 0,
+ "T_tdd_38", HFILL }},
+ { &hf_rrc_tdd384_15,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_13", HFILL }},
- { &hf_rrc_tdd768_06,
+ "T_tdd384_14", HFILL }},
+ { &hf_rrc_tdd768_07,
{ "tdd768", "rrc.tdd768",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd768_05", HFILL }},
+ "T_tdd768_06", HFILL }},
{ &hf_rrc_dl_HSPDSCH_TS_Configuration_01,
{ "dl-HSPDSCH-TS-Configuration", "rrc.dl_HSPDSCH_TS_Configuration",
FT_UINT32, BASE_DEC, NULL, 0,
"DL_HSPDSCH_TS_Configuration_VHCR", HFILL }},
- { &hf_rrc_tdd128_19,
+ { &hf_rrc_tdd128_21,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_19", HFILL }},
+ "T_tdd128_21", HFILL }},
{ &hf_rrc_dl_MultiCarrier_Information,
{ "dl-MultiCarrier-Information", "rrc.dl_MultiCarrier_Information",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_fdd_72,
+ { &hf_rrc_fdd_75,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_71", HFILL }},
+ "T_fdd_74", HFILL }},
{ &hf_rrc_dl_64QAM_Configured,
{ "dl-64QAM-Configured", "rrc.dl_64QAM_Configured",
FT_UINT32, BASE_DEC, VALS(rrc_T_dl_64QAM_Configured_vals), 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_39,
+ { &hf_rrc_modeSpecificInfo_42,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_39_vals), 0,
- "T_modeSpecificInfo_39", HFILL }},
- { &hf_rrc_tdd_37,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_42_vals), 0,
+ "T_modeSpecificInfo_42", HFILL }},
+ { &hf_rrc_tdd_40,
{ "tdd", "rrc.tdd",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_36_vals), 0,
- "T_tdd_36", HFILL }},
- { &hf_rrc_tdd384_15,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_39_vals), 0,
+ "T_tdd_39", HFILL }},
+ { &hf_rrc_tdd384_16,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_14", HFILL }},
- { &hf_rrc_tdd768_07,
+ "T_tdd384_15", HFILL }},
+ { &hf_rrc_tdd768_08,
{ "tdd768", "rrc.tdd768",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd768_06", HFILL }},
- { &hf_rrc_tdd128_20,
+ "T_tdd768_07", HFILL }},
+ { &hf_rrc_tdd128_22,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_20", HFILL }},
- { &hf_rrc_fdd_73,
+ "T_tdd128_22", HFILL }},
+ { &hf_rrc_fdd_76,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_72", HFILL }},
+ "T_fdd_75", HFILL }},
{ &hf_rrc_dl_64QAM_Configured_01,
{ "dl-64QAM-Configured", "rrc.dl_64QAM_Configured",
FT_UINT32, BASE_DEC, VALS(rrc_T_dl_64QAM_Configured_01_vals), 0,
"T_dl_64QAM_Configured_01", HFILL }},
- { &hf_rrc_modeSpecificInfo_40,
+ { &hf_rrc_modeSpecificInfo_43,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_40_vals), 0,
- "T_modeSpecificInfo_40", HFILL }},
- { &hf_rrc_tdd_38,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_43_vals), 0,
+ "T_modeSpecificInfo_43", HFILL }},
+ { &hf_rrc_tdd_41,
{ "tdd", "rrc.tdd",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_37_vals), 0,
- "T_tdd_37", HFILL }},
- { &hf_rrc_tdd128_21,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_40_vals), 0,
+ "T_tdd_40", HFILL }},
+ { &hf_rrc_tdd128_23,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_21", HFILL }},
+ "T_tdd128_23", HFILL }},
{ &hf_rrc_outofSyncWindow,
{ "outofSyncWindow", "rrc.outofSyncWindow",
FT_UINT32, BASE_DEC, VALS(rrc_OutofSyncWindow_vals), 0,
@@ -138749,34 +147905,34 @@ void proto_register_rrc(void) {
{ "hs-scch-Info", "rrc.hs_scch_Info",
FT_NONE, BASE_NONE, NULL, 0,
"HS_SCCH_Info_r9", HFILL }},
- { &hf_rrc_modeSpecificInfo_41,
+ { &hf_rrc_modeSpecificInfo_44,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_41_vals), 0,
- "T_modeSpecificInfo_41", HFILL }},
- { &hf_rrc_tdd_39,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_44_vals), 0,
+ "T_modeSpecificInfo_44", HFILL }},
+ { &hf_rrc_tdd_42,
{ "tdd", "rrc.tdd",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_38_vals), 0,
- "T_tdd_38", HFILL }},
- { &hf_rrc_tdd384_16,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_41_vals), 0,
+ "T_tdd_41", HFILL }},
+ { &hf_rrc_tdd384_17,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_15", HFILL }},
- { &hf_rrc_tdd768_08,
+ "T_tdd384_16", HFILL }},
+ { &hf_rrc_tdd768_09,
{ "tdd768", "rrc.tdd768",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd768_07", HFILL }},
- { &hf_rrc_tdd128_22,
+ "T_tdd768_08", HFILL }},
+ { &hf_rrc_tdd128_24,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_22", HFILL }},
+ "T_tdd128_24", HFILL }},
{ &hf_rrc_tS0_Indicator,
{ "tS0-Indicator", "rrc.tS0_Indicator",
FT_UINT32, BASE_DEC, VALS(rrc_T_tS0_Indicator_vals), 0,
NULL, HFILL }},
- { &hf_rrc_fdd_74,
+ { &hf_rrc_fdd_77,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_73", HFILL }},
+ "T_fdd_76", HFILL }},
{ &hf_rrc_dl_64QAM_Configured_02,
{ "dl-64QAM-Configured", "rrc.dl_64QAM_Configured",
FT_UINT32, BASE_DEC, VALS(rrc_T_dl_64QAM_Configured_02_vals), 0,
@@ -138817,14 +147973,14 @@ void proto_register_rrc(void) {
{ "midambleShiftAndBurstType", "rrc.midambleShiftAndBurstType",
FT_NONE, BASE_NONE, NULL, 0,
"MidambleShiftAndBurstType_DL_VHCR", HFILL }},
- { &hf_rrc_modeSpecificInfo_42,
+ { &hf_rrc_modeSpecificInfo_45,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_42_vals), 0,
- "T_modeSpecificInfo_42", HFILL }},
- { &hf_rrc_fdd_75,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_45_vals), 0,
+ "T_modeSpecificInfo_45", HFILL }},
+ { &hf_rrc_fdd_78,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_74", HFILL }},
+ "T_fdd_77", HFILL }},
{ &hf_rrc_dummy1_02,
{ "dummy1", "rrc.dummy1",
FT_NONE, BASE_NONE, NULL, 0,
@@ -138833,7 +147989,7 @@ void proto_register_rrc(void) {
{ "dummy2", "rrc.dummy2",
FT_NONE, BASE_NONE, NULL, 0,
"PDSCH_CodeMapping", HFILL }},
- { &hf_rrc_tdd_40,
+ { &hf_rrc_tdd_43,
{ "tdd", "rrc.tdd",
FT_UINT32, BASE_DEC, VALS(rrc_PrimaryCCPCH_Info_vals), 0,
"PrimaryCCPCH_Info", HFILL }},
@@ -138841,19 +147997,19 @@ void proto_register_rrc(void) {
{ "dl-DPCH-InfoPerRL", "rrc.dl_DPCH_InfoPerRL",
FT_UINT32, BASE_DEC, VALS(rrc_DL_DPCH_InfoPerRL_vals), 0,
NULL, HFILL }},
- { &hf_rrc_dummy_37,
+ { &hf_rrc_dummy_41,
{ "dummy", "rrc.dummy",
FT_NONE, BASE_NONE, NULL, 0,
"SCCPCH_InfoForFACH", HFILL }},
- { &hf_rrc_modeSpecificInfo_43,
+ { &hf_rrc_modeSpecificInfo_46,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_43_vals), 0,
- "T_modeSpecificInfo_43", HFILL }},
- { &hf_rrc_fdd_76,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_46_vals), 0,
+ "T_modeSpecificInfo_46", HFILL }},
+ { &hf_rrc_fdd_79,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_75", HFILL }},
- { &hf_rrc_tdd_41,
+ "T_fdd_78", HFILL }},
+ { &hf_rrc_tdd_44,
{ "tdd", "rrc.tdd",
FT_UINT32, BASE_DEC, VALS(rrc_PrimaryCCPCH_Info_r4_vals), 0,
"PrimaryCCPCH_Info_r4", HFILL }},
@@ -138861,18 +148017,18 @@ void proto_register_rrc(void) {
{ "dl-DPCH-InfoPerRL", "rrc.dl_DPCH_InfoPerRL",
FT_UINT32, BASE_DEC, VALS(rrc_DL_DPCH_InfoPerRL_r4_vals), 0,
"DL_DPCH_InfoPerRL_r4", HFILL }},
- { &hf_rrc_dummy_38,
+ { &hf_rrc_dummy_42,
{ "dummy", "rrc.dummy",
FT_NONE, BASE_NONE, NULL, 0,
"SCCPCH_InfoForFACH_r4", HFILL }},
- { &hf_rrc_modeSpecificInfo_44,
+ { &hf_rrc_modeSpecificInfo_47,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_44_vals), 0,
- "T_modeSpecificInfo_44", HFILL }},
- { &hf_rrc_fdd_77,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_47_vals), 0,
+ "T_modeSpecificInfo_47", HFILL }},
+ { &hf_rrc_fdd_80,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_76", HFILL }},
+ "T_fdd_79", HFILL }},
{ &hf_rrc_servingHSDSCH_RL_indicator,
{ "servingHSDSCH-RL-indicator", "rrc.servingHSDSCH_RL_indicator",
FT_BOOLEAN, BASE_NONE, NULL, 0,
@@ -138881,22 +148037,22 @@ void proto_register_rrc(void) {
{ "dl-DPCH-InfoPerRL", "rrc.dl_DPCH_InfoPerRL",
FT_UINT32, BASE_DEC, VALS(rrc_DL_DPCH_InfoPerRL_r5_vals), 0,
"DL_DPCH_InfoPerRL_r5", HFILL }},
- { &hf_rrc_modeSpecificInfo_45,
+ { &hf_rrc_modeSpecificInfo_48,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_45_vals), 0,
- "T_modeSpecificInfo_45", HFILL }},
- { &hf_rrc_fdd_78,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_48_vals), 0,
+ "T_modeSpecificInfo_48", HFILL }},
+ { &hf_rrc_fdd_81,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_77", HFILL }},
- { &hf_rrc_modeSpecificInfo_46,
+ "T_fdd_80", HFILL }},
+ { &hf_rrc_modeSpecificInfo_49,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_46_vals), 0,
- "T_modeSpecificInfo_46", HFILL }},
- { &hf_rrc_fdd_79,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_49_vals), 0,
+ "T_modeSpecificInfo_49", HFILL }},
+ { &hf_rrc_fdd_82,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_78", HFILL }},
+ "T_fdd_81", HFILL }},
{ &hf_rrc_servingEDCH_RL_indicator,
{ "servingEDCH-RL-indicator", "rrc.servingEDCH_RL_indicator",
FT_BOOLEAN, BASE_NONE, NULL, 0,
@@ -138921,14 +148077,14 @@ void proto_register_rrc(void) {
{ "e-RGCH-Info", "rrc.e_RGCH_Info",
FT_UINT32, BASE_DEC, VALS(rrc_T_e_RGCH_Info_01_vals), 0,
"T_e_RGCH_Info_01", HFILL }},
- { &hf_rrc_modeSpecificInfo_47,
+ { &hf_rrc_modeSpecificInfo_50,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_47_vals), 0,
- "T_modeSpecificInfo_47", HFILL }},
- { &hf_rrc_fdd_80,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_50_vals), 0,
+ "T_modeSpecificInfo_50", HFILL }},
+ { &hf_rrc_fdd_83,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_79", HFILL }},
+ "T_fdd_82", HFILL }},
{ &hf_rrc_dl_dpchInfo_01,
{ "dl-dpchInfo", "rrc.dl_dpchInfo",
FT_UINT32, BASE_DEC, VALS(rrc_T_dl_dpchInfo_01_vals), 0,
@@ -138949,10 +148105,10 @@ void proto_register_rrc(void) {
{ "modeSpecificInfo2", "rrc.modeSpecificInfo2",
FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo2_vals), 0,
NULL, HFILL }},
- { &hf_rrc_fdd_81,
+ { &hf_rrc_fdd_84,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_80", HFILL }},
+ "T_fdd_83", HFILL }},
{ &hf_rrc_e_HICH_Info_01,
{ "e-HICH-Info", "rrc.e_HICH_Info",
FT_UINT32, BASE_DEC, VALS(rrc_T_e_HICH_Info_01_vals), 0,
@@ -138961,10 +148117,10 @@ void proto_register_rrc(void) {
{ "e-RGCH-Info", "rrc.e_RGCH_Info",
FT_UINT32, BASE_DEC, VALS(rrc_T_e_RGCH_Info_02_vals), 0,
"T_e_RGCH_Info_02", HFILL }},
- { &hf_rrc_tdd_42,
+ { &hf_rrc_tdd_45,
{ "tdd", "rrc.tdd",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_39_vals), 0,
- "T_tdd_39", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_42_vals), 0,
+ "T_tdd_42", HFILL }},
{ &hf_rrc_tdd384_tdd768,
{ "tdd384-tdd768", "rrc.tdd384_tdd768",
FT_NONE, BASE_NONE, NULL, 0,
@@ -138973,22 +148129,22 @@ void proto_register_rrc(void) {
{ "e-HICH-Info", "rrc.e_HICH_Info",
FT_NONE, BASE_NONE, NULL, 0,
"E_HICH_Information_TDD384_768", HFILL }},
- { &hf_rrc_tdd128_23,
+ { &hf_rrc_tdd128_25,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_23", HFILL }},
+ "T_tdd128_25", HFILL }},
{ &hf_rrc_e_HICH_Info_03,
{ "e-HICH-Info", "rrc.e_HICH_Info",
FT_NONE, BASE_NONE, NULL, 0,
"E_HICH_Information_TDD128", HFILL }},
- { &hf_rrc_modeSpecificInfo_48,
+ { &hf_rrc_modeSpecificInfo_51,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_48_vals), 0,
- "T_modeSpecificInfo_48", HFILL }},
- { &hf_rrc_fdd_82,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_51_vals), 0,
+ "T_modeSpecificInfo_51", HFILL }},
+ { &hf_rrc_fdd_85,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_81", HFILL }},
+ "T_fdd_84", HFILL }},
{ &hf_rrc_dl_dpchInfo_02,
{ "dl-dpchInfo", "rrc.dl_dpchInfo",
FT_UINT32, BASE_DEC, VALS(rrc_T_dl_dpchInfo_02_vals), 0,
@@ -139001,10 +148157,10 @@ void proto_register_rrc(void) {
{ "modeSpecificInfo2", "rrc.modeSpecificInfo2",
FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo2_01_vals), 0,
"T_modeSpecificInfo2_01", HFILL }},
- { &hf_rrc_fdd_83,
+ { &hf_rrc_fdd_86,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_82", HFILL }},
+ "T_fdd_85", HFILL }},
{ &hf_rrc_e_HICH_Info_04,
{ "e-HICH-Info", "rrc.e_HICH_Info",
FT_UINT32, BASE_DEC, VALS(rrc_T_e_HICH_Info_02_vals), 0,
@@ -139013,18 +148169,18 @@ void proto_register_rrc(void) {
{ "e-RGCH-Info", "rrc.e_RGCH_Info",
FT_UINT32, BASE_DEC, VALS(rrc_T_e_RGCH_Info_03_vals), 0,
"T_e_RGCH_Info_03", HFILL }},
- { &hf_rrc_tdd_43,
+ { &hf_rrc_tdd_46,
{ "tdd", "rrc.tdd",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_40_vals), 0,
- "T_tdd_40", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_43_vals), 0,
+ "T_tdd_43", HFILL }},
{ &hf_rrc_tdd384_tdd768_01,
{ "tdd384-tdd768", "rrc.tdd384_tdd768",
FT_NONE, BASE_NONE, NULL, 0,
"T_tdd384_tdd768_01", HFILL }},
- { &hf_rrc_tdd128_24,
+ { &hf_rrc_tdd128_26,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_24", HFILL }},
+ "T_tdd128_26", HFILL }},
{ &hf_rrc_DL_InformationPerRL_List_item,
{ "DL-InformationPerRL", "rrc.DL_InformationPerRL",
FT_NONE, BASE_NONE, NULL, 0,
@@ -139149,6 +148305,26 @@ void proto_register_rrc(void) {
{ "secondaryCellMIMOparameters", "rrc.secondaryCellMIMOparameters",
FT_UINT32, BASE_DEC, VALS(rrc_SecondaryCellMIMOparametersFDD_vals), 0,
"SecondaryCellMIMOparametersFDD", HFILL }},
+ { &hf_rrc_configurationInfo_01,
+ { "configurationInfo", "rrc.configurationInfo",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_configurationInfo_01_vals), 0,
+ "T_configurationInfo_01", HFILL }},
+ { &hf_rrc_newConfiguration_03,
+ { "newConfiguration", "rrc.newConfiguration",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_newConfiguration_03", HFILL }},
+ { &hf_rrc_dl_64QAM_Configured_05,
+ { "dl-64QAM-Configured", "rrc.dl_64QAM_Configured",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_dl_64QAM_Configured_05_vals), 0,
+ "T_dl_64QAM_Configured_05", HFILL }},
+ { &hf_rrc_differentTxModeFromServingHS_DSCHCell_02,
+ { "differentTxModeFromServingHS-DSCHCell", "rrc.differentTxModeFromServingHS_DSCHCell",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_differentTxModeFromServingHS_DSCHCell_02_vals), 0,
+ "T_differentTxModeFromServingHS_DSCHCell_02", HFILL }},
+ { &hf_rrc_secondaryCellMIMOparameters_01,
+ { "secondaryCellMIMOparameters", "rrc.secondaryCellMIMOparameters",
+ FT_UINT32, BASE_DEC, VALS(rrc_SecondaryCellMIMOparametersFDD_r10_vals), 0,
+ "SecondaryCellMIMOparametersFDD_r10", HFILL }},
{ &hf_rrc_DL_TPC_PowerOffsetPerRL_List_item,
{ "DL-TPC-PowerOffsetPerRL", "rrc.DL_TPC_PowerOffsetPerRL",
FT_NONE, BASE_NONE, NULL, 0,
@@ -139183,11 +148359,11 @@ void proto_register_rrc(void) {
"T_consecutive_01", HFILL }},
{ &hf_rrc_firstChannelisationCode_01,
{ "firstChannelisationCode", "rrc.firstChannelisationCode",
- FT_UINT32, BASE_DEC, VALS(rrc_DL_TS_ChannelisationCode_VHCR_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_DL_TS_ChannelisationCode_VHCR_vals_ext, 0,
"DL_TS_ChannelisationCode_VHCR", HFILL }},
{ &hf_rrc_lastChannelisationCode_01,
{ "lastChannelisationCode", "rrc.lastChannelisationCode",
- FT_UINT32, BASE_DEC, VALS(rrc_DL_TS_ChannelisationCode_VHCR_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_DL_TS_ChannelisationCode_VHCR_vals_ext, 0,
"DL_TS_ChannelisationCode_VHCR", HFILL }},
{ &hf_rrc_bitmap_01,
{ "bitmap", "rrc.bitmap",
@@ -139381,6 +148557,10 @@ void proto_register_rrc(void) {
{ "tgp-SequenceList", "rrc.tgp_SequenceList",
FT_UINT32, BASE_DEC, NULL, 0,
"TGP_SequenceList_r8", HFILL }},
+ { &hf_rrc_tgp_SequenceList_02,
+ { "tgp-SequenceList", "rrc.tgp_SequenceList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "TGP_SequenceList_r10", HFILL }},
{ &hf_rrc_tgps_Reconfiguration_CFN,
{ "tgps-Reconfiguration-CFN", "rrc.tgps_Reconfiguration_CFN",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -139393,6 +148573,14 @@ void proto_register_rrc(void) {
{ "TGP-SequenceShort", "rrc.TGP_SequenceShort",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_tgp_SequenceShortList_01,
+ { "tgp-SequenceShortList", "rrc.tgp_SequenceShortList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxTGPS_OF_TGP_SequenceShort_r10", HFILL }},
+ { &hf_rrc_tgp_SequenceShortList_item_01,
+ { "TGP-SequenceShort-r10", "rrc.TGP_SequenceShort_r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_rrc_ue_drx_Cycle,
{ "ue-drx-Cycle", "rrc.ue_drx_Cycle",
FT_UINT32, BASE_DEC, VALS(rrc_UE_DRX_Cycle_vals), 0,
@@ -139563,7 +148751,7 @@ void proto_register_rrc(void) {
"MidambleShiftAndBurstType_EDCH", HFILL }},
{ &hf_rrc_channelisation_code_01,
{ "channelisation-code", "rrc.channelisation_code",
- FT_UINT32, BASE_DEC, VALS(rrc_DL_TS_ChannelisationCode_VHCR_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_DL_TS_ChannelisationCode_VHCR_vals_ext, 0,
"DL_TS_ChannelisationCode_VHCR", HFILL }},
{ &hf_rrc_firstChannelisationCode_03,
{ "firstChannelisationCode", "rrc.firstChannelisationCode",
@@ -139601,18 +148789,18 @@ void proto_register_rrc(void) {
{ "modeSpecific", "rrc.modeSpecific",
FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecific_02_vals), 0,
"T_modeSpecific_02", HFILL }},
- { &hf_rrc_fdd_84,
+ { &hf_rrc_fdd_87,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_83", HFILL }},
- { &hf_rrc_tdd_44,
+ "T_fdd_86", HFILL }},
+ { &hf_rrc_tdd_47,
{ "tdd", "rrc.tdd",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_41_vals), 0,
- "T_tdd_41", HFILL }},
- { &hf_rrc_tdd384_17,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_44_vals), 0,
+ "T_tdd_44", HFILL }},
+ { &hf_rrc_tdd384_18,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_16", HFILL }},
+ "T_tdd384_17", HFILL }},
{ &hf_rrc_long_Term_Grant_Indicator,
{ "long-Term-Grant-Indicator", "rrc.long_Term_Grant_Indicator",
FT_BOOLEAN, BASE_NONE, NULL, 0,
@@ -139629,18 +148817,18 @@ void proto_register_rrc(void) {
{ "e-AGCH-BLER-Target", "rrc.e_AGCH_BLER_Target",
FT_INT32, BASE_DEC, NULL, 0,
"Bler_Target", HFILL }},
- { &hf_rrc_tdd768_09,
+ { &hf_rrc_tdd768_10,
{ "tdd768", "rrc.tdd768",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd768_08", HFILL }},
+ "T_tdd768_09", HFILL }},
{ &hf_rrc_e_AGCH_Set_Config_01,
{ "e-AGCH-Set-Config", "rrc.e_AGCH_Set_Config",
FT_UINT32, BASE_DEC, NULL, 0,
"E_AGCH_Set_Config_VHCR", HFILL }},
- { &hf_rrc_tdd128_25,
+ { &hf_rrc_tdd128_27,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_25", HFILL }},
+ "T_tdd128_27", HFILL }},
{ &hf_rrc_rdi_Indicator,
{ "rdi-Indicator", "rrc.rdi_Indicator",
FT_BOOLEAN, BASE_NONE, NULL, 0,
@@ -139657,26 +148845,26 @@ void proto_register_rrc(void) {
{ "modeSpecific", "rrc.modeSpecific",
FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecific_03_vals), 0,
"T_modeSpecific_03", HFILL }},
- { &hf_rrc_fdd_85,
+ { &hf_rrc_fdd_88,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_84", HFILL }},
- { &hf_rrc_tdd_45,
+ "T_fdd_87", HFILL }},
+ { &hf_rrc_tdd_48,
{ "tdd", "rrc.tdd",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_42_vals), 0,
- "T_tdd_42", HFILL }},
- { &hf_rrc_tdd384_18,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_45_vals), 0,
+ "T_tdd_45", HFILL }},
+ { &hf_rrc_tdd384_19,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_17", HFILL }},
- { &hf_rrc_tdd768_10,
+ "T_tdd384_18", HFILL }},
+ { &hf_rrc_tdd768_11,
{ "tdd768", "rrc.tdd768",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd768_09", HFILL }},
- { &hf_rrc_tdd128_26,
+ "T_tdd768_10", HFILL }},
+ { &hf_rrc_tdd128_28,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_26", HFILL }},
+ "T_tdd128_28", HFILL }},
{ &hf_rrc_E_AGCH_Set_Config_item,
{ "E-AGCH-Individual", "rrc.E_AGCH_Individual",
FT_NONE, BASE_NONE, NULL, 0,
@@ -139811,7 +148999,7 @@ void proto_register_rrc(void) {
"INTEGER_1_8", HFILL }},
{ &hf_rrc_codeResourceInfo,
{ "codeResourceInfo", "rrc.codeResourceInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_UL_TS_ChannelisationCode_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_UL_TS_ChannelisationCode_vals_ext, 0,
"UL_TS_ChannelisationCode", HFILL }},
{ &hf_rrc_timeslotResourceRelatedInfo,
{ "timeslotResourceRelatedInfo", "rrc.timeslotResourceRelatedInfo",
@@ -139913,17 +149101,17 @@ void proto_register_rrc(void) {
{ "tS-Number", "rrc.tS_Number",
FT_UINT32, BASE_DEC, NULL, 0,
"INTEGER_0_14", HFILL }},
- { &hf_rrc_modeSpecificInfo_49,
+ { &hf_rrc_modeSpecificInfo_52,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_49_vals), 0,
- "T_modeSpecificInfo_49", HFILL }},
- { &hf_rrc_tdd384_19,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_52_vals), 0,
+ "T_modeSpecificInfo_52", HFILL }},
+ { &hf_rrc_tdd384_20,
{ "tdd384", "rrc.tdd384",
FT_UINT32, BASE_DEC, VALS(rrc_DL_TS_ChannelisationCode_vals), 0,
"DL_TS_ChannelisationCode", HFILL }},
- { &hf_rrc_tdd768_11,
+ { &hf_rrc_tdd768_12,
{ "tdd768", "rrc.tdd768",
- FT_UINT32, BASE_DEC, VALS(rrc_DL_TS_ChannelisationCode_VHCR_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_DL_TS_ChannelisationCode_VHCR_vals_ext, 0,
"DL_TS_ChannelisationCode_VHCR", HFILL }},
{ &hf_rrc_burst_Type,
{ "burst-Type", "rrc.burst_Type",
@@ -139981,10 +149169,10 @@ void proto_register_rrc(void) {
{ "e-TFCS-Info", "rrc.e_TFCS_Info",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_50,
+ { &hf_rrc_modeSpecificInfo_53,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_50_vals), 0,
- "T_modeSpecificInfo_50", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_53_vals), 0,
+ "T_modeSpecificInfo_53", HFILL }},
{ &hf_rrc_tdd348_tdd768,
{ "tdd348-tdd768", "rrc.tdd348_tdd768",
FT_NONE, BASE_NONE, NULL, 0,
@@ -140021,16 +149209,16 @@ void proto_register_rrc(void) {
{ "maximum-Allowed-Code-Rate", "rrc.maximum_Allowed_Code_Rate",
FT_UINT32, BASE_DEC, NULL, 0,
"INTEGER_0_63", HFILL }},
- { &hf_rrc_tdd128_27,
+ { &hf_rrc_tdd128_29,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_27", HFILL }},
+ "T_tdd128_29", HFILL }},
{ &hf_rrc_snpl_ReportType,
{ "snpl-ReportType", "rrc.snpl_ReportType",
FT_UINT32, BASE_DEC, VALS(rrc_T_snpl_ReportType_vals), 0,
NULL, HFILL }},
- { &hf_rrc_prxBASEdes,
- { "prxBASEdes", "rrc.prxBASEdes",
+ { &hf_rrc_prxdes_base,
+ { "prxdes-base", "rrc.prxdes_base",
FT_INT32, BASE_DEC, NULL, 0,
"INTEGER_M112_M50", HFILL }},
{ &hf_rrc_beaconPLEst_01,
@@ -140055,7 +149243,7 @@ void proto_register_rrc(void) {
"INTEGER_0_15", HFILL }},
{ &hf_rrc_retransTimerForSchedInfo,
{ "retransTimerForSchedInfo", "rrc.retransTimerForSchedInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_retransTimerForSchedInfo_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_T_retransTimerForSchedInfo_vals_ext, 0,
NULL, HFILL }},
{ &hf_rrc_snpl_ReportType_01,
{ "snpl-ReportType", "rrc.snpl_ReportType",
@@ -140067,9 +149255,9 @@ void proto_register_rrc(void) {
"INTEGER_1_255", HFILL }},
{ &hf_rrc_retransTimerForSchedInfo_01,
{ "retransTimerForSchedInfo", "rrc.retransTimerForSchedInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_retransTimerForSchedInfo_01_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_T_retransTimerForSchedInfo_01_vals_ext, 0,
"T_retransTimerForSchedInfo_01", HFILL }},
- { &hf_rrc_dummy_39,
+ { &hf_rrc_dummy_43,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, NULL, 0,
"INTEGER_0_6", HFILL }},
@@ -140077,6 +149265,10 @@ void proto_register_rrc(void) {
{ "ts-Number", "rrc.ts_Number",
FT_UINT32, BASE_DEC, NULL, 0,
"INTEGER_0_14", HFILL }},
+ { &hf_rrc_timeslotNumber_02,
+ { "timeslotNumber", "rrc.timeslotNumber",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_5", HFILL }},
{ &hf_rrc_midambleAllocationMode_03,
{ "midambleAllocationMode", "rrc.midambleAllocationMode",
FT_UINT32, BASE_DEC, VALS(rrc_T_midambleAllocationMode_03_vals), 0,
@@ -140085,10 +149277,10 @@ void proto_register_rrc(void) {
{ "rg-CombinationIndex", "rrc.rg_CombinationIndex",
FT_UINT32, BASE_DEC, NULL, 0,
"E_RGCH_CombinationIndex", HFILL }},
- { &hf_rrc_modeSpecificInfo_51,
+ { &hf_rrc_modeSpecificInfo_54,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_51_vals), 0,
- "T_modeSpecificInfo_51", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_54_vals), 0,
+ "T_modeSpecificInfo_54", HFILL }},
{ &hf_rrc_tdd384_tdd768_02,
{ "tdd384-tdd768", "rrc.tdd384_tdd768",
FT_NONE, BASE_NONE, NULL, 0,
@@ -140121,14 +149313,14 @@ void proto_register_rrc(void) {
{ "t-SCHED", "rrc.t_SCHED",
FT_UINT32, BASE_DEC, VALS(rrc_T_t_SCHED_vals), 0,
"T_t_SCHED", HFILL }},
- { &hf_rrc_modeSpecificInfo_52,
+ { &hf_rrc_modeSpecificInfo_55,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_52_vals), 0,
- "T_modeSpecificInfo_52", HFILL }},
- { &hf_rrc_tdd384_20,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_55_vals), 0,
+ "T_modeSpecificInfo_55", HFILL }},
+ { &hf_rrc_tdd384_21,
{ "tdd384", "rrc.tdd384",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tdd384_18_vals), 0,
- "T_tdd384_18", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tdd384_19_vals), 0,
+ "T_tdd384_19", HFILL }},
{ &hf_rrc_sF16,
{ "sF16", "rrc.sF16",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -140145,10 +149337,10 @@ void proto_register_rrc(void) {
{ "SF8Codes", "rrc.SF8Codes",
FT_UINT32, BASE_DEC, VALS(rrc_SF8Codes_vals), 0,
NULL, HFILL }},
- { &hf_rrc_tdd768_12,
+ { &hf_rrc_tdd768_13,
{ "tdd768", "rrc.tdd768",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tdd768_10_vals), 0,
- "T_tdd768_10", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tdd768_11_vals), 0,
+ "T_tdd768_11", HFILL }},
{ &hf_rrc_sF32,
{ "sF32", "rrc.sF32",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -140165,10 +149357,10 @@ void proto_register_rrc(void) {
{ "SF16Codes2", "rrc.SF16Codes2",
FT_UINT32, BASE_DEC, VALS(rrc_SF16Codes2_vals), 0,
NULL, HFILL }},
- { &hf_rrc_tdd128_28,
+ { &hf_rrc_tdd128_30,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_28", HFILL }},
+ "T_tdd128_30", HFILL }},
{ &hf_rrc_t_RUCCH_01,
{ "t-RUCCH", "rrc.t_RUCCH",
FT_UINT32, BASE_DEC, VALS(rrc_T_t_RUCCH_01_vals), 0,
@@ -140241,22 +149433,22 @@ void proto_register_rrc(void) {
{ "Reference-Beta-16QAM", "rrc.Reference_Beta_16QAM",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_53,
+ { &hf_rrc_modeSpecificInfo_56,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_53_vals), 0,
- "T_modeSpecificInfo_53", HFILL }},
- { &hf_rrc_tdd384_21,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_56_vals), 0,
+ "T_modeSpecificInfo_56", HFILL }},
+ { &hf_rrc_tdd384_22,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_19", HFILL }},
+ "T_tdd384_20", HFILL }},
{ &hf_rrc_ex_ul_TimingAdvance,
{ "ex-ul-TimingAdvance", "rrc.ex_ul_TimingAdvance",
FT_UINT32, BASE_DEC, NULL, 0,
"INTEGER_0_255", HFILL }},
- { &hf_rrc_tdd768_13,
+ { &hf_rrc_tdd768_14,
{ "tdd768", "rrc.tdd768",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd768_11", HFILL }},
+ "T_tdd768_12", HFILL }},
{ &hf_rrc_ex_ul_TimingAdvance_01,
{ "ex-ul-TimingAdvance", "rrc.ex_ul_TimingAdvance",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -140285,15 +149477,19 @@ void proto_register_rrc(void) {
{ "wi", "rrc.wi",
FT_UINT32, BASE_DEC, NULL, 0,
"Wi_LCR", HFILL }},
- { &hf_rrc_modeSpecificInfo_54,
+ { &hf_rrc_FreqIndexListForEnhancedMeas_item,
+ { "FrequencyIndexForEnhancedMeas", "rrc.FrequencyIndexForEnhancedMeas",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_modeSpecificInfo_57,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_54_vals), 0,
- "T_modeSpecificInfo_54", HFILL }},
- { &hf_rrc_fdd_86,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_57_vals), 0,
+ "T_modeSpecificInfo_57", HFILL }},
+ { &hf_rrc_fdd_89,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
"FrequencyInfoFDD", HFILL }},
- { &hf_rrc_tdd_46,
+ { &hf_rrc_tdd_49,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
"FrequencyInfoTDD", HFILL }},
@@ -140443,7 +149639,7 @@ void proto_register_rrc(void) {
NULL, HFILL }},
{ &hf_rrc_memorySize_01,
{ "memorySize", "rrc.memorySize",
- FT_UINT32, BASE_DEC, VALS(rrc_HARQMemorySize_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_HARQMemorySize_vals_ext, 0,
"HARQMemorySize", HFILL }},
{ &hf_rrc_hs_sich_List,
{ "hs-sich-List", "rrc.hs_sich_List",
@@ -140485,22 +149681,22 @@ void proto_register_rrc(void) {
{ "midambleAllocationMode", "rrc.midambleAllocationMode",
FT_UINT32, BASE_DEC, VALS(rrc_T_midambleAllocationMode_04_vals), 0,
"T_midambleAllocationMode_04", HFILL }},
- { &hf_rrc_modeSpecificInfo_55,
+ { &hf_rrc_modeSpecificInfo_58,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_55_vals), 0,
- "T_modeSpecificInfo_55", HFILL }},
- { &hf_rrc_fdd_87,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_58_vals), 0,
+ "T_modeSpecificInfo_58", HFILL }},
+ { &hf_rrc_fdd_90,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_85", HFILL }},
- { &hf_rrc_tdd_47,
+ "T_fdd_88", HFILL }},
+ { &hf_rrc_tdd_50,
{ "tdd", "rrc.tdd",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_43_vals), 0,
- "T_tdd_43", HFILL }},
- { &hf_rrc_tdd384_22,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_46_vals), 0,
+ "T_tdd_46", HFILL }},
+ { &hf_rrc_tdd384_23,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_20", HFILL }},
+ "T_tdd384_21", HFILL }},
{ &hf_rrc_nack_ack_power_offset,
{ "nack-ack-power-offset", "rrc.nack_ack_power_offset",
FT_INT32, BASE_DEC, NULL, 0,
@@ -140517,7 +149713,7 @@ void proto_register_rrc(void) {
{ "HS-SCCH-TDD384", "rrc.HS_SCCH_TDD384",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd128_29,
+ { &hf_rrc_tdd128_31,
{ "tdd128", "rrc.tdd128",
FT_UINT32, BASE_DEC, NULL, 0,
"SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD128", HFILL }},
@@ -140525,22 +149721,22 @@ void proto_register_rrc(void) {
{ "HS-SCCH-TDD128", "rrc.HS_SCCH_TDD128",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_56,
+ { &hf_rrc_modeSpecificInfo_59,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_56_vals), 0,
- "T_modeSpecificInfo_56", HFILL }},
- { &hf_rrc_fdd_88,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_59_vals), 0,
+ "T_modeSpecificInfo_59", HFILL }},
+ { &hf_rrc_fdd_91,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_86", HFILL }},
- { &hf_rrc_tdd_48,
+ "T_fdd_89", HFILL }},
+ { &hf_rrc_tdd_51,
{ "tdd", "rrc.tdd",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_44_vals), 0,
- "T_tdd_44", HFILL }},
- { &hf_rrc_tdd384_23,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_47_vals), 0,
+ "T_tdd_47", HFILL }},
+ { &hf_rrc_tdd384_24,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_21", HFILL }},
+ "T_tdd384_22", HFILL }},
{ &hf_rrc_bler_target,
{ "bler-target", "rrc.bler_target",
FT_INT32, BASE_DEC, NULL, 0,
@@ -140553,10 +149749,10 @@ void proto_register_rrc(void) {
{ "HS-SCCH-TDD384-r6", "rrc.HS_SCCH_TDD384_r6",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd128_30,
+ { &hf_rrc_tdd128_32,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_29", HFILL }},
+ "T_tdd128_31", HFILL }},
{ &hf_rrc_power_level_HSSICH,
{ "power-level-HSSICH", "rrc.power_level_HSSICH",
FT_INT32, BASE_DEC, NULL, 0,
@@ -140573,26 +149769,26 @@ void proto_register_rrc(void) {
{ "HS-SCCH-TDD128-r6", "rrc.HS_SCCH_TDD128_r6",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_57,
+ { &hf_rrc_modeSpecificInfo_60,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_57_vals), 0,
- "T_modeSpecificInfo_57", HFILL }},
- { &hf_rrc_fdd_89,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_60_vals), 0,
+ "T_modeSpecificInfo_60", HFILL }},
+ { &hf_rrc_fdd_92,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_87", HFILL }},
- { &hf_rrc_tdd_49,
+ "T_fdd_90", HFILL }},
+ { &hf_rrc_tdd_52,
{ "tdd", "rrc.tdd",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_45_vals), 0,
- "T_tdd_45", HFILL }},
- { &hf_rrc_tdd384_24,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_48_vals), 0,
+ "T_tdd_48", HFILL }},
+ { &hf_rrc_tdd384_25,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_22", HFILL }},
- { &hf_rrc_tdd768_14,
+ "T_tdd384_23", HFILL }},
+ { &hf_rrc_tdd768_15,
{ "tdd768", "rrc.tdd768",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd768_12", HFILL }},
+ "T_tdd768_13", HFILL }},
{ &hf_rrc_hs_SICH_PowerControl_Info_01,
{ "hs-SICH-PowerControl-Info", "rrc.hs_SICH_PowerControl_Info",
FT_NONE, BASE_NONE, NULL, 0,
@@ -140605,10 +149801,10 @@ void proto_register_rrc(void) {
{ "HS-SCCH-TDD768", "rrc.HS_SCCH_TDD768",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd128_31,
+ { &hf_rrc_tdd128_33,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_30", HFILL }},
+ "T_tdd128_32", HFILL }},
{ &hf_rrc_tpc_step_size_01,
{ "tpc-step-size", "rrc.tpc_step_size",
FT_UINT32, BASE_DEC, VALS(rrc_T_tpc_step_size_01_vals), 0,
@@ -140621,46 +149817,46 @@ void proto_register_rrc(void) {
{ "pathlossCompensationSwitch", "rrc.pathlossCompensationSwitch",
FT_BOOLEAN, BASE_NONE, NULL, 0,
"BOOLEAN", HFILL }},
- { &hf_rrc_modeSpecificInfo_58,
+ { &hf_rrc_modeSpecificInfo_61,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_58_vals), 0,
- "T_modeSpecificInfo_58", HFILL }},
- { &hf_rrc_tdd_50,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_61_vals), 0,
+ "T_modeSpecificInfo_61", HFILL }},
+ { &hf_rrc_tdd_53,
{ "tdd", "rrc.tdd",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_46_vals), 0,
- "T_tdd_46", HFILL }},
- { &hf_rrc_tdd128_32,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_49_vals), 0,
+ "T_tdd_49", HFILL }},
+ { &hf_rrc_tdd128_34,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_31", HFILL }},
+ "T_tdd128_33", HFILL }},
{ &hf_rrc_hS_SCCH_tpc_step_size,
{ "hS-SCCH-tpc-step-size", "rrc.hS_SCCH_tpc_step_size",
FT_UINT32, BASE_DEC, VALS(rrc_T_hS_SCCH_tpc_step_size_vals), 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_59,
+ { &hf_rrc_modeSpecificInfo_62,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_59_vals), 0,
- "T_modeSpecificInfo_59", HFILL }},
- { &hf_rrc_fdd_90,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_62_vals), 0,
+ "T_modeSpecificInfo_62", HFILL }},
+ { &hf_rrc_fdd_93,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_88", HFILL }},
- { &hf_rrc_tdd_51,
+ "T_fdd_91", HFILL }},
+ { &hf_rrc_tdd_54,
{ "tdd", "rrc.tdd",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_47_vals), 0,
- "T_tdd_47", HFILL }},
- { &hf_rrc_tdd384_25,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_50_vals), 0,
+ "T_tdd_50", HFILL }},
+ { &hf_rrc_tdd384_26,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_23", HFILL }},
- { &hf_rrc_tdd768_15,
+ "T_tdd384_24", HFILL }},
+ { &hf_rrc_tdd768_16,
{ "tdd768", "rrc.tdd768",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd768_13", HFILL }},
- { &hf_rrc_tdd128_33,
+ "T_tdd768_14", HFILL }},
+ { &hf_rrc_tdd128_35,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_32", HFILL }},
+ "T_tdd128_34", HFILL }},
{ &hf_rrc_tpc_step_size_02,
{ "tpc-step-size", "rrc.tpc_step_size",
FT_UINT32, BASE_DEC, VALS(rrc_T_tpc_step_size_02_vals), 0,
@@ -140839,7 +150035,7 @@ void proto_register_rrc(void) {
"T_ueSpecificMidamble_03", HFILL }},
{ &hf_rrc_channelisationCode_04,
{ "channelisationCode", "rrc.channelisationCode",
- FT_UINT32, BASE_DEC, VALS(rrc_DL_TS_ChannelisationCode_VHCR_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_DL_TS_ChannelisationCode_VHCR_vals_ext, 0,
"DL_TS_ChannelisationCode_VHCR", HFILL }},
{ &hf_rrc_midambleAllocationMode_12,
{ "midambleAllocationMode", "rrc.midambleAllocationMode",
@@ -140917,14 +150113,14 @@ void proto_register_rrc(void) {
{ "IndividualTS-Interference", "rrc.IndividualTS_Interference",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_60,
+ { &hf_rrc_modeSpecificInfo_63,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_60_vals), 0,
- "T_modeSpecificInfo_60", HFILL }},
- { &hf_rrc_fdd_91,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_63_vals), 0,
+ "T_modeSpecificInfo_63", HFILL }},
+ { &hf_rrc_fdd_94,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_89", HFILL }},
+ "T_fdd_92", HFILL }},
{ &hf_rrc_feedback_cycle,
{ "feedback-cycle", "rrc.feedback_cycle",
FT_UINT32, BASE_DEC, VALS(rrc_Feedback_cycle_vals), 0,
@@ -140937,14 +150133,14 @@ void proto_register_rrc(void) {
{ "deltaCQI", "rrc.deltaCQI",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_61,
+ { &hf_rrc_modeSpecificInfo_64,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_61_vals), 0,
- "T_modeSpecificInfo_61", HFILL }},
- { &hf_rrc_fdd_92,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_64_vals), 0,
+ "T_modeSpecificInfo_64", HFILL }},
+ { &hf_rrc_fdd_95,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_90", HFILL }},
+ "T_fdd_93", HFILL }},
{ &hf_rrc_feedback_cycle_01,
{ "feedback-cycle", "rrc.feedback_cycle",
FT_UINT32, BASE_DEC, VALS(rrc_Feedback_cycle_r7_vals), 0,
@@ -141205,22 +150401,22 @@ void proto_register_rrc(void) {
{ "precodingWeightSetRestriction", "rrc.precodingWeightSetRestriction",
FT_UINT32, BASE_DEC, VALS(rrc_T_precodingWeightSetRestriction_vals), 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_62,
+ { &hf_rrc_modeSpecificInfo_65,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_62_vals), 0,
- "T_modeSpecificInfo_62", HFILL }},
- { &hf_rrc_fdd_93,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_65_vals), 0,
+ "T_modeSpecificInfo_65", HFILL }},
+ { &hf_rrc_fdd_96,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_91", HFILL }},
- { &hf_rrc_tdd_52,
+ "T_fdd_94", HFILL }},
+ { &hf_rrc_tdd_55,
{ "tdd", "rrc.tdd",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_48_vals), 0,
- "T_tdd_48", HFILL }},
- { &hf_rrc_tdd128_34,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_51_vals), 0,
+ "T_tdd_51", HFILL }},
+ { &hf_rrc_tdd128_36,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_33", HFILL }},
+ "T_tdd128_35", HFILL }},
{ &hf_rrc_mimoSFModeForHSPDSCHDualStream,
{ "mimoSFModeForHSPDSCHDualStream", "rrc.mimoSFModeForHSPDSCHDualStream",
FT_UINT32, BASE_DEC, VALS(rrc_T_mimoSFModeForHSPDSCHDualStream_vals), 0,
@@ -141233,14 +150429,14 @@ void proto_register_rrc(void) {
{ "tdd384-tdd768", "rrc.tdd384_tdd768",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_63,
+ { &hf_rrc_modeSpecificInfo_66,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_63_vals), 0,
- "T_modeSpecificInfo_63", HFILL }},
- { &hf_rrc_fdd_94,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_66_vals), 0,
+ "T_modeSpecificInfo_66", HFILL }},
+ { &hf_rrc_fdd_97,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_92", HFILL }},
+ "T_fdd_95", HFILL }},
{ &hf_rrc_mimoPilotConfiguration_01,
{ "mimoPilotConfiguration", "rrc.mimoPilotConfiguration",
FT_NONE, BASE_NONE, NULL, 0,
@@ -141249,14 +150445,14 @@ void proto_register_rrc(void) {
{ "precodingWeightSetRestriction", "rrc.precodingWeightSetRestriction",
FT_UINT32, BASE_DEC, VALS(rrc_T_precodingWeightSetRestriction_01_vals), 0,
"T_precodingWeightSetRestriction_01", HFILL }},
- { &hf_rrc_tdd_53,
+ { &hf_rrc_tdd_56,
{ "tdd", "rrc.tdd",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_49_vals), 0,
- "T_tdd_49", HFILL }},
- { &hf_rrc_tdd128_35,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tdd_52_vals), 0,
+ "T_tdd_52", HFILL }},
+ { &hf_rrc_tdd128_37,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_34", HFILL }},
+ "T_tdd128_36", HFILL }},
{ &hf_rrc_mimoSFModeForHSPDSCHDualStream_01,
{ "mimoSFModeForHSPDSCHDualStream", "rrc.mimoSFModeForHSPDSCHDualStream",
FT_UINT32, BASE_DEC, VALS(rrc_T_mimoSFModeForHSPDSCHDualStream_01_vals), 0,
@@ -141301,6 +150497,18 @@ void proto_register_rrc(void) {
{ "upPCHpositionInfo", "rrc.upPCHpositionInfo",
FT_UINT32, BASE_DEC, NULL, 0,
"UpPCHposition_LCR", HFILL }},
+ { &hf_rrc_newConfiguration_04,
+ { "newConfiguration", "rrc.newConfiguration",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_newConfiguration_04", HFILL }},
+ { &hf_rrc_mu_MIMO_Operation,
+ { "mu-MIMO-Operation", "rrc.mu_MIMO_Operation",
+ FT_UINT32, BASE_DEC, VALS(rrc_MU_MIMO_Operation_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_standaloneMidambleInfo,
+ { "standaloneMidambleInfo", "rrc.standaloneMidambleInfo",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "StandaloneMidambleInfo_TDD128", HFILL }},
{ &hf_rrc_enablingDelay_01,
{ "enablingDelay", "rrc.enablingDelay",
FT_UINT32, BASE_DEC, VALS(rrc_EnablingDelay_vals), 0,
@@ -141317,10 +150525,10 @@ void proto_register_rrc(void) {
{ "timeslotResourceRelatedInfo", "rrc.timeslotResourceRelatedInfo",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING_SIZE_13", HFILL }},
- { &hf_rrc_tdd128_36,
+ { &hf_rrc_tdd128_38,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_35", HFILL }},
+ "T_tdd128_37", HFILL }},
{ &hf_rrc_e_HICH_Info_06,
{ "e-HICH-Info", "rrc.e_HICH_Info",
FT_NONE, BASE_NONE, NULL, 0,
@@ -141333,10 +150541,10 @@ void proto_register_rrc(void) {
{ "tdd384-768", "rrc.tdd384_768",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd128_37,
+ { &hf_rrc_tdd128_39,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_36", HFILL }},
+ "T_tdd128_38", HFILL }},
{ &hf_rrc_t_SI_nst,
{ "t-SI-nst", "rrc.t_SI_nst",
FT_UINT32, BASE_DEC, VALS(rrc_T_t_SI_nst_vals), 0,
@@ -141345,10 +150553,10 @@ void proto_register_rrc(void) {
{ "tdd384-768", "rrc.tdd384_768",
FT_NONE, BASE_NONE, NULL, 0,
"T_tdd384_768_01", HFILL }},
- { &hf_rrc_tdd128_38,
+ { &hf_rrc_tdd128_40,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_37", HFILL }},
+ "T_tdd128_39", HFILL }},
{ &hf_rrc_e_HICH_Info_07,
{ "e-HICH-Info", "rrc.e_HICH_Info",
FT_NONE, BASE_NONE, NULL, 0,
@@ -141517,42 +150725,42 @@ void proto_register_rrc(void) {
{ "pdsch-TimeslotsCodes", "rrc.pdsch_TimeslotsCodes",
FT_NONE, BASE_NONE, NULL, 0,
"DownlinkTimeslotsCodes", HFILL }},
- { &hf_rrc_tddOption_10,
+ { &hf_rrc_tddOption_11,
{ "tddOption", "rrc.tddOption",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_10_vals), 0,
- "T_tddOption_10", HFILL }},
- { &hf_rrc_tdd384_26,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_11_vals), 0,
+ "T_tddOption_11", HFILL }},
+ { &hf_rrc_tdd384_27,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_24", HFILL }},
- { &hf_rrc_tdd128_39,
+ "T_tdd384_25", HFILL }},
+ { &hf_rrc_tdd128_41,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_38", HFILL }},
+ "T_tdd128_40", HFILL }},
{ &hf_rrc_pdsch_TimeslotsCodes_01,
{ "pdsch-TimeslotsCodes", "rrc.pdsch_TimeslotsCodes",
FT_NONE, BASE_NONE, NULL, 0,
"DownlinkTimeslotsCodes_LCR_r4", HFILL }},
- { &hf_rrc_tddOption_11,
+ { &hf_rrc_tddOption_12,
{ "tddOption", "rrc.tddOption",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_11_vals), 0,
- "T_tddOption_11", HFILL }},
- { &hf_rrc_tdd384_27,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_12_vals), 0,
+ "T_tddOption_12", HFILL }},
+ { &hf_rrc_tdd384_28,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_25", HFILL }},
- { &hf_rrc_tdd768_16,
+ "T_tdd384_26", HFILL }},
+ { &hf_rrc_tdd768_17,
{ "tdd768", "rrc.tdd768",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd768_14", HFILL }},
+ "T_tdd768_15", HFILL }},
{ &hf_rrc_pdsch_TimeslotsCodes_02,
{ "pdsch-TimeslotsCodes", "rrc.pdsch_TimeslotsCodes",
FT_NONE, BASE_NONE, NULL, 0,
"DownlinkTimeslotsCodes_VHCR", HFILL }},
- { &hf_rrc_tdd128_40,
+ { &hf_rrc_tdd128_42,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_39", HFILL }},
+ "T_tdd128_41", HFILL }},
{ &hf_rrc_dsch_RadioLinkIdentifier,
{ "dsch-RadioLinkIdentifier", "rrc.dsch_RadioLinkIdentifier",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -141645,18 +150853,18 @@ void proto_register_rrc(void) {
{ "explicit", "rrc.explicit",
FT_NONE, BASE_NONE, NULL, 0,
"PICH_Info_LCR_r4", HFILL }},
- { &hf_rrc_fdd_95,
+ { &hf_rrc_fdd_98,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_93", HFILL }},
+ "T_fdd_96", HFILL }},
{ &hf_rrc_pi_CountPerFrame,
{ "pi-CountPerFrame", "rrc.pi_CountPerFrame",
FT_UINT32, BASE_DEC, VALS(rrc_PI_CountPerFrame_vals), 0,
NULL, HFILL }},
- { &hf_rrc_tdd_54,
+ { &hf_rrc_tdd_57,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_50", HFILL }},
+ "T_tdd_53", HFILL }},
{ &hf_rrc_channelisationCode_06,
{ "channelisationCode", "rrc.channelisationCode",
FT_UINT32, BASE_DEC, VALS(rrc_TDD_PICH_CCode_vals), 0,
@@ -141681,13 +150889,13 @@ void proto_register_rrc(void) {
{ "channelisationCode", "rrc.channelisationCode",
FT_UINT32, BASE_DEC, VALS(rrc_T_channelisationCode_vals), 0,
NULL, HFILL }},
- { &hf_rrc_tdd384_28,
+ { &hf_rrc_tdd384_29,
{ "tdd384", "rrc.tdd384",
FT_UINT32, BASE_DEC, VALS(rrc_TDD_PICH_CCode_vals), 0,
"TDD_PICH_CCode", HFILL }},
- { &hf_rrc_tdd768_17,
+ { &hf_rrc_tdd768_18,
{ "tdd768", "rrc.tdd768",
- FT_UINT32, BASE_DEC, VALS(rrc_TDD768_PICH_CCode_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_TDD768_PICH_CCode_vals_ext, 0,
"TDD768_PICH_CCode", HFILL }},
{ &hf_rrc_pichChannelisationCodeList_LCR_r4,
{ "pichChannelisationCodeList-LCR-r4", "rrc.pichChannelisationCodeList_LCR_r4",
@@ -141711,11 +150919,11 @@ void proto_register_rrc(void) {
NULL, HFILL }},
{ &hf_rrc_PRACH_ChanCodes_LCR_r4_item,
{ "TDD-PRACH-CCode-LCR-r4", "rrc.TDD_PRACH_CCode_LCR_r4",
- FT_UINT32, BASE_DEC, VALS(rrc_TDD_PRACH_CCode_LCR_r4_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_TDD_PRACH_CCode_LCR_r4_vals_ext, 0,
NULL, HFILL }},
{ &hf_rrc_PRACH_ChanCodes_List_LCR_item,
{ "TDD-PRACH-CCode-LCR-r4", "rrc.TDD_PRACH_CCode_LCR_r4",
- FT_UINT32, BASE_DEC, VALS(rrc_TDD_PRACH_CCode_LCR_r4_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_TDD_PRACH_CCode_LCR_r4_vals_ext, 0,
NULL, HFILL }},
{ &hf_rrc_timeslot_02,
{ "timeslot", "rrc.timeslot",
@@ -141737,7 +150945,7 @@ void proto_register_rrc(void) {
{ "PRACH-Information-LCR", "rrc.PRACH_Information_LCR",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_fdd_96,
+ { &hf_rrc_fdd_99,
{ "fdd", "rrc.fdd",
FT_UINT32, BASE_DEC, NULL, 0,
"SEQUENCE_SIZE_1_maxASC_OF_ASCSetting_FDD", HFILL }},
@@ -141745,7 +150953,7 @@ void proto_register_rrc(void) {
{ "ASCSetting-FDD", "rrc.ASCSetting_FDD",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd_55,
+ { &hf_rrc_tdd_58,
{ "tdd", "rrc.tdd",
FT_UINT32, BASE_DEC, NULL, 0,
"SEQUENCE_SIZE_1_maxASC_OF_ASCSetting_TDD", HFILL }},
@@ -141753,7 +150961,7 @@ void proto_register_rrc(void) {
{ "ASCSetting-TDD", "rrc.ASCSetting_TDD",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd_56,
+ { &hf_rrc_tdd_59,
{ "tdd", "rrc.tdd",
FT_UINT32, BASE_DEC, NULL, 0,
"SEQUENCE_SIZE_1_maxASC_OF_ASCSetting_TDD_r7", HFILL }},
@@ -141825,22 +151033,22 @@ void proto_register_rrc(void) {
{ "powerOffsetPp-e", "rrc.powerOffsetPp_e",
FT_INT32, BASE_DEC, NULL, 0,
"INTEGER_M5_10", HFILL }},
- { &hf_rrc_modeSpecificInfo_64,
+ { &hf_rrc_modeSpecificInfo_67,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_64_vals), 0,
- "T_modeSpecificInfo_64", HFILL }},
- { &hf_rrc_fdd_97,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_67_vals), 0,
+ "T_modeSpecificInfo_67", HFILL }},
+ { &hf_rrc_fdd_100,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_94", HFILL }},
+ "T_fdd_97", HFILL }},
{ &hf_rrc_availableSF,
{ "availableSF", "rrc.availableSF",
FT_UINT32, BASE_DEC, VALS(rrc_SF_PRACH_vals), 0,
"SF_PRACH", HFILL }},
- { &hf_rrc_tdd_57,
+ { &hf_rrc_tdd_60,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_51", HFILL }},
+ "T_tdd_54", HFILL }},
{ &hf_rrc_channelisationCodeList,
{ "channelisationCodeList", "rrc.channelisationCodeList",
FT_UINT32, BASE_DEC, VALS(rrc_TDD_PRACH_CCodeList_vals), 0,
@@ -141885,14 +151093,14 @@ void proto_register_rrc(void) {
{ "prach-Partitioning", "rrc.prach_Partitioning",
FT_UINT32, BASE_DEC, VALS(rrc_PRACH_Partitioning_vals), 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_65,
+ { &hf_rrc_modeSpecificInfo_68,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_65_vals), 0,
- "T_modeSpecificInfo_65", HFILL }},
- { &hf_rrc_fdd_98,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_68_vals), 0,
+ "T_modeSpecificInfo_68", HFILL }},
+ { &hf_rrc_fdd_101,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_95", HFILL }},
+ "T_fdd_98", HFILL }},
{ &hf_rrc_prach_RACH_Info_01,
{ "prach-RACH-Info", "rrc.prach_RACH_Info",
FT_NONE, BASE_NONE, NULL, 0,
@@ -141941,18 +151149,18 @@ void proto_register_rrc(void) {
{ "ul-DPCH-InfoPredef", "rrc.ul_DPCH_InfoPredef",
FT_NONE, BASE_NONE, NULL, 0,
"UL_DPCH_InfoPredef_v770ext", HFILL }},
- { &hf_rrc_fdd_99,
+ { &hf_rrc_fdd_102,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_96", HFILL }},
+ "T_fdd_99", HFILL }},
{ &hf_rrc_tx_DiversityIndicator,
{ "tx-DiversityIndicator", "rrc.tx_DiversityIndicator",
FT_BOOLEAN, BASE_NONE, NULL, 0,
"BOOLEAN", HFILL }},
- { &hf_rrc_tdd_58,
+ { &hf_rrc_tdd_61,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_52", HFILL }},
+ "T_tdd_55", HFILL }},
{ &hf_rrc_syncCase,
{ "syncCase", "rrc.syncCase",
FT_UINT32, BASE_DEC, VALS(rrc_T_syncCase_vals), 0,
@@ -141973,18 +151181,18 @@ void proto_register_rrc(void) {
{ "sctd-Indicator", "rrc.sctd_Indicator",
FT_BOOLEAN, BASE_NONE, NULL, 0,
"BOOLEAN", HFILL }},
- { &hf_rrc_fdd_100,
+ { &hf_rrc_fdd_103,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_97", HFILL }},
- { &hf_rrc_tdd_59,
+ "T_fdd_100", HFILL }},
+ { &hf_rrc_tdd_62,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_53", HFILL }},
- { &hf_rrc_tddOption_12,
+ "T_tdd_56", HFILL }},
+ { &hf_rrc_tddOption_13,
{ "tddOption", "rrc.tddOption",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_12_vals), 0,
- "T_tddOption_12", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_13_vals), 0,
+ "T_tddOption_13", HFILL }},
{ &hf_rrc_tdd384_tdd768_04,
{ "tdd384-tdd768", "rrc.tdd384_tdd768",
FT_NONE, BASE_NONE, NULL, 0,
@@ -142001,10 +151209,10 @@ void proto_register_rrc(void) {
{ "syncCase2", "rrc.syncCase2",
FT_NONE, BASE_NONE, NULL, 0,
"T_syncCase2_01", HFILL }},
- { &hf_rrc_tdd128_41,
+ { &hf_rrc_tdd128_43,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_40", HFILL }},
+ "T_tdd128_42", HFILL }},
{ &hf_rrc_syncCase_02,
{ "syncCase", "rrc.syncCase",
FT_UINT32, BASE_DEC, VALS(rrc_T_syncCase_02_vals), 0,
@@ -142121,18 +151329,18 @@ void proto_register_rrc(void) {
{ "pusch-TimeslotsCodes", "rrc.pusch_TimeslotsCodes",
FT_NONE, BASE_NONE, NULL, 0,
"UplinkTimeslotsCodes", HFILL }},
- { &hf_rrc_tddOption_13,
+ { &hf_rrc_tddOption_14,
{ "tddOption", "rrc.tddOption",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_13_vals), 0,
- "T_tddOption_13", HFILL }},
- { &hf_rrc_tdd384_29,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_14_vals), 0,
+ "T_tddOption_14", HFILL }},
+ { &hf_rrc_tdd384_30,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_26", HFILL }},
- { &hf_rrc_tdd128_42,
+ "T_tdd384_27", HFILL }},
+ { &hf_rrc_tdd128_44,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_41", HFILL }},
+ "T_tdd128_43", HFILL }},
{ &hf_rrc_pusch_TimeslotsCodes_01,
{ "pusch-TimeslotsCodes", "rrc.pusch_TimeslotsCodes",
FT_NONE, BASE_NONE, NULL, 0,
@@ -142145,22 +151353,22 @@ void proto_register_rrc(void) {
{ "ul-TargetSIR", "rrc.ul_TargetSIR",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tddOption_14,
- { "tddOption", "rrc.tddOption",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_14_vals), 0,
- "T_tddOption_14", HFILL }},
- { &hf_rrc_tdd128_43,
- { "tdd128", "rrc.tdd128",
- FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_42", HFILL }},
{ &hf_rrc_tddOption_15,
{ "tddOption", "rrc.tddOption",
FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_15_vals), 0,
"T_tddOption_15", HFILL }},
- { &hf_rrc_tdd128_44,
+ { &hf_rrc_tdd128_45,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_43", HFILL }},
+ "T_tdd128_44", HFILL }},
+ { &hf_rrc_tddOption_16,
+ { "tddOption", "rrc.tddOption",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_16_vals), 0,
+ "T_tddOption_16", HFILL }},
+ { &hf_rrc_tdd128_46,
+ { "tdd128", "rrc.tdd128",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_tdd128_45", HFILL }},
{ &hf_rrc_usch_TFCS,
{ "usch-TFCS", "rrc.usch_TFCS",
FT_UINT32, BASE_DEC, VALS(rrc_TFCS_vals), 0,
@@ -142433,13 +151641,21 @@ void proto_register_rrc(void) {
{ "targetCellPreconfigInfo", "rrc.targetCellPreconfigInfo",
FT_NONE, BASE_NONE, NULL, 0,
"TargetCellPreconfigInfo_r9", HFILL }},
+ { &hf_rrc_dl_dpchInfo_07,
+ { "dl-dpchInfo", "rrc.dl_dpchInfo",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_dl_dpchInfo_07_vals), 0,
+ "T_dl_dpchInfo_07", HFILL }},
{ &hf_rrc_targetCellPreconfigInfo_02,
{ "targetCellPreconfigInfo", "rrc.targetCellPreconfigInfo",
FT_NONE, BASE_NONE, NULL, 0,
- "TargetCellPreconfigInfo_v890ext", HFILL }},
+ "TargetCellPreconfigInfo_r10", HFILL }},
{ &hf_rrc_targetCellPreconfigInfo_03,
{ "targetCellPreconfigInfo", "rrc.targetCellPreconfigInfo",
FT_NONE, BASE_NONE, NULL, 0,
+ "TargetCellPreconfigInfo_v890ext", HFILL }},
+ { &hf_rrc_targetCellPreconfigInfo_04,
+ { "targetCellPreconfigInfo", "rrc.targetCellPreconfigInfo",
+ FT_NONE, BASE_NONE, NULL, 0,
"TargetCellPreconfigInfo_v950ext", HFILL }},
{ &hf_rrc_RL_AdditionInformationList_item,
{ "RL-AdditionInformation", "rrc.RL_AdditionInformation",
@@ -142473,6 +151689,10 @@ void proto_register_rrc(void) {
{ "RL-AdditionInformation-v950ext", "rrc.RL_AdditionInformation_v950ext",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_RL_AdditionInformationList_r10_item,
+ { "RL-AdditionInformation-r10", "rrc.RL_AdditionInformation_r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_rrc_RL_AdditionInformationList_SecULFreq_item,
{ "RL-AdditionInformation-SecULFreq", "rrc.RL_AdditionInformation_SecULFreq",
FT_NONE, BASE_NONE, NULL, 0,
@@ -142495,20 +151715,20 @@ void proto_register_rrc(void) {
NULL, HFILL }},
{ &hf_rrc_SCCPCH_ChannelisationCodeList_VHCR_item,
{ "SCCPCH-ChannelisationCode-VHCR", "rrc.SCCPCH_ChannelisationCode_VHCR",
- FT_UINT32, BASE_DEC, VALS(rrc_SCCPCH_ChannelisationCode_VHCR_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_SCCPCH_ChannelisationCode_VHCR_vals_ext, 0,
NULL, HFILL }},
{ &hf_rrc_secondaryCCPCH_Info,
{ "secondaryCCPCH-Info", "rrc.secondaryCCPCH_Info",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_66,
+ { &hf_rrc_modeSpecificInfo_69,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_66_vals), 0,
- "T_modeSpecificInfo_66", HFILL }},
- { &hf_rrc_fdd_101,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_69_vals), 0,
+ "T_modeSpecificInfo_69", HFILL }},
+ { &hf_rrc_fdd_104,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_98", HFILL }},
+ "T_fdd_101", HFILL }},
{ &hf_rrc_fach_PCH_InformationList,
{ "fach-PCH-InformationList", "rrc.fach_PCH_InformationList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -142517,22 +151737,22 @@ void proto_register_rrc(void) {
{ "sib-ReferenceListFACH", "rrc.sib_ReferenceListFACH",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd_60,
+ { &hf_rrc_tdd_63,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_54", HFILL }},
+ "T_tdd_57", HFILL }},
{ &hf_rrc_secondaryCCPCH_Info_01,
{ "secondaryCCPCH-Info", "rrc.secondaryCCPCH_Info",
FT_NONE, BASE_NONE, NULL, 0,
"SecondaryCCPCH_Info_r4", HFILL }},
- { &hf_rrc_modeSpecificInfo_67,
+ { &hf_rrc_modeSpecificInfo_70,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_67_vals), 0,
- "T_modeSpecificInfo_67", HFILL }},
- { &hf_rrc_fdd_102,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_70_vals), 0,
+ "T_modeSpecificInfo_70", HFILL }},
+ { &hf_rrc_fdd_105,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_99", HFILL }},
+ "T_fdd_102", HFILL }},
{ &hf_rrc_pich_Info,
{ "pich-Info", "rrc.pich_Info",
FT_UINT32, BASE_DEC, VALS(rrc_PICH_Info_vals), 0,
@@ -142597,7 +151817,7 @@ void proto_register_rrc(void) {
{ "msch-transportFormatSet", "rrc.msch_transportFormatSet",
FT_UINT32, BASE_DEC, VALS(rrc_TransportFormatSet_vals), 0,
"TransportFormatSet", HFILL }},
- { &hf_rrc_dummy_40,
+ { &hf_rrc_dummy_44,
{ "dummy", "rrc.dummy",
FT_NONE, BASE_NONE, NULL, 0,
"MBMS_MSCH_ConfigurationInfo_r6", HFILL }},
@@ -142613,14 +151833,14 @@ void proto_register_rrc(void) {
{ "fachCarryingMSCH", "rrc.fachCarryingMSCH",
FT_NONE, BASE_NONE, NULL, 0,
"T_fachCarryingMSCH_01", HFILL }},
- { &hf_rrc_modeSpecificInfo_68,
+ { &hf_rrc_modeSpecificInfo_71,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_68_vals), 0,
- "T_modeSpecificInfo_68", HFILL }},
- { &hf_rrc_fdd_103,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_71_vals), 0,
+ "T_modeSpecificInfo_71", HFILL }},
+ { &hf_rrc_fdd_106,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_100", HFILL }},
+ "T_fdd_103", HFILL }},
{ &hf_rrc_dummy1_03,
{ "dummy1", "rrc.dummy1",
FT_UINT32, BASE_DEC, VALS(rrc_PCPICH_UsageForChannelEst_vals), 0,
@@ -142641,10 +151861,10 @@ void proto_register_rrc(void) {
{ "timingOffset", "rrc.timingOffset",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd_61,
+ { &hf_rrc_tdd_64,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_55", HFILL }},
+ "T_tdd_58", HFILL }},
{ &hf_rrc_commonTimeslotInfo_01,
{ "commonTimeslotInfo", "rrc.commonTimeslotInfo",
FT_NONE, BASE_NONE, NULL, 0,
@@ -142653,42 +151873,42 @@ void proto_register_rrc(void) {
{ "channelisationCode", "rrc.channelisationCode",
FT_UINT32, BASE_DEC, NULL, 0,
"SCCPCH_ChannelisationCodeList", HFILL }},
- { &hf_rrc_modeSpecificInfo_69,
+ { &hf_rrc_modeSpecificInfo_72,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_69_vals), 0,
- "T_modeSpecificInfo_69", HFILL }},
- { &hf_rrc_fdd_104,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_72_vals), 0,
+ "T_modeSpecificInfo_72", HFILL }},
+ { &hf_rrc_fdd_107,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_101", HFILL }},
- { &hf_rrc_tdd_62,
+ "T_fdd_104", HFILL }},
+ { &hf_rrc_tdd_65,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_56", HFILL }},
- { &hf_rrc_tddOption_16,
+ "T_tdd_59", HFILL }},
+ { &hf_rrc_tddOption_17,
{ "tddOption", "rrc.tddOption",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_16_vals), 0,
- "T_tddOption_16", HFILL }},
- { &hf_rrc_tdd384_30,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_17_vals), 0,
+ "T_tddOption_17", HFILL }},
+ { &hf_rrc_tdd384_31,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_27", HFILL }},
- { &hf_rrc_tdd128_45,
+ "T_tdd384_28", HFILL }},
+ { &hf_rrc_tdd128_47,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_44", HFILL }},
- { &hf_rrc_modeSpecificInfo_70,
+ "T_tdd128_46", HFILL }},
+ { &hf_rrc_modeSpecificInfo_73,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_70_vals), 0,
- "T_modeSpecificInfo_70", HFILL }},
- { &hf_rrc_tdd384_31,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_73_vals), 0,
+ "T_modeSpecificInfo_73", HFILL }},
+ { &hf_rrc_tdd384_32,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_28", HFILL }},
- { &hf_rrc_tdd768_18,
+ "T_tdd384_29", HFILL }},
+ { &hf_rrc_tdd768_19,
{ "tdd768", "rrc.tdd768",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd768_15", HFILL }},
+ "T_tdd768_16", HFILL }},
{ &hf_rrc_channelisationCode_09,
{ "channelisationCode", "rrc.channelisationCode",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -142721,18 +151941,18 @@ void proto_register_rrc(void) {
{ "cpich-SecCCPCH-PowerOffset", "rrc.cpich_SecCCPCH_PowerOffset",
FT_INT32, BASE_DEC, NULL, 0,
"INTEGER_M11_4", HFILL }},
- { &hf_rrc_modeSpecificInfo_71,
+ { &hf_rrc_modeSpecificInfo_74,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_71_vals), 0,
- "T_modeSpecificInfo_71", HFILL }},
- { &hf_rrc_fdd_105,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_74_vals), 0,
+ "T_modeSpecificInfo_74", HFILL }},
+ { &hf_rrc_fdd_108,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_102", HFILL }},
- { &hf_rrc_tdd384_32,
+ "T_fdd_105", HFILL }},
+ { &hf_rrc_tdd384_33,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_29", HFILL }},
+ "T_tdd384_30", HFILL }},
{ &hf_rrc_commonTimeslotInfoMBMS,
{ "commonTimeslotInfoMBMS", "rrc.commonTimeslotInfoMBMS",
FT_NONE, BASE_NONE, NULL, 0,
@@ -142741,22 +151961,22 @@ void proto_register_rrc(void) {
{ "downlinkTimeslotsCodes", "rrc.downlinkTimeslotsCodes",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd128_46,
+ { &hf_rrc_tdd128_48,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_45", HFILL }},
+ "T_tdd128_47", HFILL }},
{ &hf_rrc_downlinkTimeslotsCodes_01,
{ "downlinkTimeslotsCodes", "rrc.downlinkTimeslotsCodes",
FT_NONE, BASE_NONE, NULL, 0,
"DownlinkTimeslotsCodes_LCR_r4", HFILL }},
- { &hf_rrc_modeSpecificInfo_72,
+ { &hf_rrc_modeSpecificInfo_75,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_72_vals), 0,
- "T_modeSpecificInfo_72", HFILL }},
- { &hf_rrc_fdd_106,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_75_vals), 0,
+ "T_modeSpecificInfo_75", HFILL }},
+ { &hf_rrc_fdd_109,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_103", HFILL }},
+ "T_fdd_106", HFILL }},
{ &hf_rrc_modulation_04,
{ "modulation", "rrc.modulation",
FT_UINT32, BASE_DEC, VALS(rrc_T_modulation_04_vals), 0,
@@ -142765,10 +151985,10 @@ void proto_register_rrc(void) {
{ "mod16QAM", "rrc.mod16QAM",
FT_INT32, BASE_DEC, NULL, 0,
"INTEGER_M11_4", HFILL }},
- { &hf_rrc_tdd384_33,
+ { &hf_rrc_tdd384_34,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_30", HFILL }},
+ "T_tdd384_31", HFILL }},
{ &hf_rrc_downlinkTimeslotsCodes_02,
{ "downlinkTimeslotsCodes", "rrc.downlinkTimeslotsCodes",
FT_NONE, BASE_NONE, NULL, 0,
@@ -142777,10 +151997,10 @@ void proto_register_rrc(void) {
{ "modulation", "rrc.modulation",
FT_UINT32, BASE_DEC, VALS(rrc_T_modulation_05_vals), 0,
"T_modulation_05", HFILL }},
- { &hf_rrc_tdd768_19,
+ { &hf_rrc_tdd768_20,
{ "tdd768", "rrc.tdd768",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd768_16", HFILL }},
+ "T_tdd768_17", HFILL }},
{ &hf_rrc_downlinkTimeslotsCodes_03,
{ "downlinkTimeslotsCodes", "rrc.downlinkTimeslotsCodes",
FT_NONE, BASE_NONE, NULL, 0,
@@ -142789,10 +152009,10 @@ void proto_register_rrc(void) {
{ "modulation", "rrc.modulation",
FT_UINT32, BASE_DEC, VALS(rrc_T_modulation_06_vals), 0,
"T_modulation_06", HFILL }},
- { &hf_rrc_tdd128_47,
+ { &hf_rrc_tdd128_49,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_46", HFILL }},
+ "T_tdd128_48", HFILL }},
{ &hf_rrc_mbsfnSpecialTimeSlot,
{ "mbsfnSpecialTimeSlot", "rrc.mbsfnSpecialTimeSlot",
FT_UINT32, BASE_DEC, VALS(rrc_TimeSlotLCR_ext_vals), 0,
@@ -142805,14 +152025,22 @@ void proto_register_rrc(void) {
{ "secondaryDL-ScramblingCode", "rrc.secondaryDL_ScramblingCode",
FT_UINT32, BASE_DEC, NULL, 0,
"SecondaryScramblingCode", HFILL }},
- { &hf_rrc_newConfiguration_03,
+ { &hf_rrc_newConfiguration_05,
{ "newConfiguration", "rrc.newConfiguration",
FT_NONE, BASE_NONE, NULL, 0,
- "T_newConfiguration_03", HFILL }},
+ "T_newConfiguration_05", HFILL }},
{ &hf_rrc_precodingWeightSetRestriction_02,
{ "precodingWeightSetRestriction", "rrc.precodingWeightSetRestriction",
FT_UINT32, BASE_DEC, VALS(rrc_T_precodingWeightSetRestriction_02_vals), 0,
"T_precodingWeightSetRestriction_02", HFILL }},
+ { &hf_rrc_newConfiguration_06,
+ { "newConfiguration", "rrc.newConfiguration",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_newConfiguration_06", HFILL }},
+ { &hf_rrc_precodingWeightSetRestriction_03,
+ { "precodingWeightSetRestriction", "rrc.precodingWeightSetRestriction",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_precodingWeightSetRestriction_03_vals), 0,
+ "T_precodingWeightSetRestriction_03", HFILL }},
{ &hf_rrc_servingCellChangeMACreset,
{ "servingCellChangeMACreset", "rrc.servingCellChangeMACreset",
FT_BOOLEAN, BASE_NONE, NULL, 0,
@@ -142917,6 +152145,18 @@ void proto_register_rrc(void) {
{ "ssdt-UL-r4", "rrc.ssdt_UL_r4",
FT_UINT32, BASE_DEC, VALS(rrc_SSDT_UL_vals), 0,
"SSDT_UL", HFILL }},
+ { &hf_rrc_timeSlotInformation,
+ { "timeSlotInformation", "rrc.timeSlotInformation",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_5", HFILL }},
+ { &hf_rrc_repetitionPeriod,
+ { "repetitionPeriod", "rrc.repetitionPeriod",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_repetitionPeriod_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_referenceBeta,
+ { "referenceBeta", "rrc.referenceBeta",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "INTEGER_M15_16", HFILL }},
{ &hf_rrc_sync_UL_CodesBitmap,
{ "sync-UL-CodesBitmap", "rrc.sync_UL_CodesBitmap",
FT_BYTES, BASE_NONE, NULL, 0,
@@ -143029,6 +152269,18 @@ void proto_register_rrc(void) {
{ "tgps-ConfigurationParams", "rrc.tgps_ConfigurationParams",
FT_NONE, BASE_NONE, NULL, 0,
"TGPS_ConfigurationParams_r8", HFILL }},
+ { &hf_rrc_tgps_Status_02,
+ { "tgps-Status", "rrc.tgps_Status",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tgps_Status_02_vals), 0,
+ "T_tgps_Status_02", HFILL }},
+ { &hf_rrc_activate_02,
+ { "activate", "rrc.activate",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_activate_02", HFILL }},
+ { &hf_rrc_tgps_ConfigurationParams_02,
+ { "tgps-ConfigurationParams", "rrc.tgps_ConfigurationParams",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "TGPS_ConfigurationParams_r10", HFILL }},
{ &hf_rrc_TGP_SequenceList_item,
{ "TGP-Sequence", "rrc.TGP_Sequence",
FT_NONE, BASE_NONE, NULL, 0,
@@ -143037,14 +152289,30 @@ void proto_register_rrc(void) {
{ "TGP-Sequence-r8", "rrc.TGP_Sequence_r8",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tgps_Status_02,
+ { &hf_rrc_TGP_SequenceList_r10_item,
+ { "TGP-Sequence-r10", "rrc.TGP_Sequence_r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_tgps_Status_03,
{ "tgps-Status", "rrc.tgps_Status",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tgps_Status_02_vals), 0,
- "T_tgps_Status_02", HFILL }},
- { &hf_rrc_activate_02,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tgps_Status_03_vals), 0,
+ "T_tgps_Status_03", HFILL }},
+ { &hf_rrc_activate_03,
{ "activate", "rrc.activate",
FT_NONE, BASE_NONE, NULL, 0,
- "T_activate_02", HFILL }},
+ "T_activate_03", HFILL }},
+ { &hf_rrc_tgps_Status_04,
+ { "tgps-Status", "rrc.tgps_Status",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tgps_Status_04_vals), 0,
+ "T_tgps_Status_04", HFILL }},
+ { &hf_rrc_activate_04,
+ { "activate", "rrc.activate",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_activate_04", HFILL }},
+ { &hf_rrc_freqSpecificCompressedMode_01,
+ { "freqSpecificCompressedMode", "rrc.freqSpecificCompressedMode",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_freqSpecificCompressedMode_01_vals), 0,
+ "T_freqSpecificCompressedMode_01", HFILL }},
{ &hf_rrc_tgmp,
{ "tgmp", "rrc.tgmp",
FT_UINT32, BASE_DEC, VALS(rrc_TGMP_vals), 0,
@@ -143073,7 +152341,7 @@ void proto_register_rrc(void) {
{ "tgpl1", "rrc.tgpl1",
FT_UINT32, BASE_DEC, NULL, 0,
"TGPL", HFILL }},
- { &hf_rrc_dummy_41,
+ { &hf_rrc_dummy_45,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, NULL, 0,
"TGPL", HFILL }},
@@ -143121,6 +152389,10 @@ void proto_register_rrc(void) {
{ "tgmp", "rrc.tgmp",
FT_UINT32, BASE_DEC, VALS(rrc_TGMP_r8_vals), 0,
"TGMP_r8", HFILL }},
+ { &hf_rrc_freqSpecificCompressedMode_02,
+ { "freqSpecificCompressedMode", "rrc.freqSpecificCompressedMode",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_freqSpecificCompressedMode_02_vals), 0,
+ "T_freqSpecificCompressedMode_02", HFILL }},
{ &hf_rrc_durationTimeInfo,
{ "durationTimeInfo", "rrc.durationTimeInfo",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -143129,7 +152401,7 @@ void proto_register_rrc(void) {
{ "TimeslotNumber", "rrc.TimeslotNumber",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd384_34,
+ { &hf_rrc_tdd384_35,
{ "tdd384", "rrc.tdd384",
FT_UINT32, BASE_DEC, NULL, 0,
"SEQUENCE_SIZE_1_maxTS_OF_TimeslotNumber", HFILL }},
@@ -143137,7 +152409,7 @@ void proto_register_rrc(void) {
{ "TimeslotNumber", "rrc.TimeslotNumber",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd128_48,
+ { &hf_rrc_tdd128_50,
{ "tdd128", "rrc.tdd128",
FT_UINT32, BASE_DEC, NULL, 0,
"SEQUENCE_SIZE_1_maxTS_LCR_OF_TimeslotNumber_LCR_r4", HFILL }},
@@ -143173,42 +152445,42 @@ void proto_register_rrc(void) {
{ "ul-CCTrCH-TimeslotsCodes", "rrc.ul_CCTrCH_TimeslotsCodes",
FT_NONE, BASE_NONE, NULL, 0,
"UplinkTimeslotsCodes", HFILL }},
- { &hf_rrc_tddOption_17,
+ { &hf_rrc_tddOption_18,
{ "tddOption", "rrc.tddOption",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_17_vals), 0,
- "T_tddOption_17", HFILL }},
- { &hf_rrc_tdd384_35,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_18_vals), 0,
+ "T_tddOption_18", HFILL }},
+ { &hf_rrc_tdd384_36,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_31", HFILL }},
- { &hf_rrc_tdd128_49,
+ "T_tdd384_32", HFILL }},
+ { &hf_rrc_tdd128_51,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_47", HFILL }},
+ "T_tdd128_49", HFILL }},
{ &hf_rrc_ul_CCTrCH_TimeslotsCodes_01,
{ "ul-CCTrCH-TimeslotsCodes", "rrc.ul_CCTrCH_TimeslotsCodes",
FT_NONE, BASE_NONE, NULL, 0,
"UplinkTimeslotsCodes_LCR_r4", HFILL }},
- { &hf_rrc_tddOption_18,
+ { &hf_rrc_tddOption_19,
{ "tddOption", "rrc.tddOption",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_18_vals), 0,
- "T_tddOption_18", HFILL }},
- { &hf_rrc_tdd384_36,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_19_vals), 0,
+ "T_tddOption_19", HFILL }},
+ { &hf_rrc_tdd384_37,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_32", HFILL }},
- { &hf_rrc_tdd768_20,
+ "T_tdd384_33", HFILL }},
+ { &hf_rrc_tdd768_21,
{ "tdd768", "rrc.tdd768",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd768_17", HFILL }},
+ "T_tdd768_18", HFILL }},
{ &hf_rrc_ul_CCTrCH_TimeslotsCodes_02,
{ "ul-CCTrCH-TimeslotsCodes", "rrc.ul_CCTrCH_TimeslotsCodes",
FT_NONE, BASE_NONE, NULL, 0,
"UplinkTimeslotsCodes_VHCR", HFILL }},
- { &hf_rrc_tdd128_50,
+ { &hf_rrc_tdd128_52,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_48", HFILL }},
+ "T_tdd128_50", HFILL }},
{ &hf_rrc_ul_CCTrCH_TimeslotsCodes_03,
{ "ul-CCTrCH-TimeslotsCodes", "rrc.ul_CCTrCH_TimeslotsCodes",
FT_NONE, BASE_NONE, NULL, 0,
@@ -143233,7 +152505,7 @@ void proto_register_rrc(void) {
{ "TFCS-Identity", "rrc.TFCS_Identity",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_dummy_42,
+ { &hf_rrc_dummy_46,
{ "dummy", "rrc.dummy",
FT_NONE, BASE_NONE, NULL, 0,
"CPCH_SetInfo", HFILL }},
@@ -143265,14 +152537,14 @@ void proto_register_rrc(void) {
{ "ul-DPCCHscramblingCode", "rrc.ul_DPCCHscramblingCode",
FT_UINT32, BASE_DEC, NULL, 0,
"UL_ScramblingCode", HFILL }},
- { &hf_rrc_modeSpecificInfo_73,
+ { &hf_rrc_modeSpecificInfo_76,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_73_vals), 0,
- "T_modeSpecificInfo_73", HFILL }},
- { &hf_rrc_fdd_107,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_76_vals), 0,
+ "T_modeSpecificInfo_76", HFILL }},
+ { &hf_rrc_fdd_110,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_104", HFILL }},
+ "T_fdd_107", HFILL }},
{ &hf_rrc_scramblingCode,
{ "scramblingCode", "rrc.scramblingCode",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -143289,10 +152561,10 @@ void proto_register_rrc(void) {
{ "numberOfFBI-Bits", "rrc.numberOfFBI_Bits",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd_63,
+ { &hf_rrc_tdd_66,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_57", HFILL }},
+ "T_tdd_60", HFILL }},
{ &hf_rrc_ul_CCTrCHList,
{ "ul-CCTrCHList", "rrc.ul_CCTrCHList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -143301,46 +152573,46 @@ void proto_register_rrc(void) {
{ "ul-CCTrCHListToRemove", "rrc.ul_CCTrCHListToRemove",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_74,
+ { &hf_rrc_modeSpecificInfo_77,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_74_vals), 0,
- "T_modeSpecificInfo_74", HFILL }},
- { &hf_rrc_fdd_108,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_77_vals), 0,
+ "T_modeSpecificInfo_77", HFILL }},
+ { &hf_rrc_fdd_111,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_105", HFILL }},
- { &hf_rrc_tdd_64,
+ "T_fdd_108", HFILL }},
+ { &hf_rrc_tdd_67,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_58", HFILL }},
+ "T_tdd_61", HFILL }},
{ &hf_rrc_ul_CCTrCHList_01,
{ "ul-CCTrCHList", "rrc.ul_CCTrCHList",
FT_UINT32, BASE_DEC, NULL, 0,
"UL_CCTrCHList_r4", HFILL }},
- { &hf_rrc_modeSpecificInfo_75,
+ { &hf_rrc_modeSpecificInfo_78,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_75_vals), 0,
- "T_modeSpecificInfo_75", HFILL }},
- { &hf_rrc_fdd_109,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_78_vals), 0,
+ "T_modeSpecificInfo_78", HFILL }},
+ { &hf_rrc_fdd_112,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_106", HFILL }},
- { &hf_rrc_tdd_65,
+ "T_fdd_109", HFILL }},
+ { &hf_rrc_tdd_68,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_59", HFILL }},
+ "T_tdd_62", HFILL }},
{ &hf_rrc_ul_DPCH_PowerControlInfo_04,
{ "ul-DPCH-PowerControlInfo", "rrc.ul_DPCH_PowerControlInfo",
FT_UINT32, BASE_DEC, VALS(rrc_UL_DPCH_PowerControlInfo_r6_vals), 0,
"UL_DPCH_PowerControlInfo_r6", HFILL }},
- { &hf_rrc_modeSpecificInfo_76,
+ { &hf_rrc_modeSpecificInfo_79,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_76_vals), 0,
- "T_modeSpecificInfo_76", HFILL }},
- { &hf_rrc_fdd_110,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_79_vals), 0,
+ "T_modeSpecificInfo_79", HFILL }},
+ { &hf_rrc_fdd_113,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_107", HFILL }},
+ "T_fdd_110", HFILL }},
{ &hf_rrc_dpdchPresence,
{ "dpdchPresence", "rrc.dpdchPresence",
FT_UINT32, BASE_DEC, VALS(rrc_T_dpdchPresence_vals), 0,
@@ -143353,18 +152625,18 @@ void proto_register_rrc(void) {
{ "notPresent", "rrc.notPresent",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd_66,
+ { &hf_rrc_tdd_69,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_60", HFILL }},
- { &hf_rrc_modeSpecificInfo_77,
+ "T_tdd_63", HFILL }},
+ { &hf_rrc_modeSpecificInfo_80,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_77_vals), 0,
- "T_modeSpecificInfo_77", HFILL }},
- { &hf_rrc_fdd_111,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_80_vals), 0,
+ "T_modeSpecificInfo_80", HFILL }},
+ { &hf_rrc_fdd_114,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_108", HFILL }},
+ "T_fdd_111", HFILL }},
{ &hf_rrc_dpdchPresence_01,
{ "dpdchPresence", "rrc.dpdchPresence",
FT_UINT32, BASE_DEC, VALS(rrc_T_dpdchPresence_01_vals), 0,
@@ -143381,10 +152653,10 @@ void proto_register_rrc(void) {
{ "notPresent", "rrc.notPresent",
FT_NONE, BASE_NONE, NULL, 0,
"T_notPresent_01", HFILL }},
- { &hf_rrc_tdd_67,
+ { &hf_rrc_tdd_70,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_61", HFILL }},
+ "T_tdd_64", HFILL }},
{ &hf_rrc_ul_CCTrCHList_02,
{ "ul-CCTrCHList", "rrc.ul_CCTrCHList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -143413,30 +152685,30 @@ void proto_register_rrc(void) {
{ "ul-DPCH-PowerControlInfo", "rrc.ul_DPCH_PowerControlInfo",
FT_UINT32, BASE_DEC, VALS(rrc_UL_DPCH_PowerControlInfoPredef_vals), 0,
"UL_DPCH_PowerControlInfoPredef", HFILL }},
- { &hf_rrc_modeSpecificInfo_78,
+ { &hf_rrc_modeSpecificInfo_81,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_78_vals), 0,
- "T_modeSpecificInfo_78", HFILL }},
- { &hf_rrc_fdd_112,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_81_vals), 0,
+ "T_modeSpecificInfo_81", HFILL }},
+ { &hf_rrc_fdd_115,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_109", HFILL }},
- { &hf_rrc_tdd_68,
+ "T_fdd_112", HFILL }},
+ { &hf_rrc_tdd_71,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_62", HFILL }},
- { &hf_rrc_modeSpecificInfo_79,
+ "T_tdd_65", HFILL }},
+ { &hf_rrc_modeSpecificInfo_82,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_79_vals), 0,
- "T_modeSpecificInfo_79", HFILL }},
- { &hf_rrc_fdd_113,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_82_vals), 0,
+ "T_modeSpecificInfo_82", HFILL }},
+ { &hf_rrc_fdd_116,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_110", HFILL }},
- { &hf_rrc_fdd_114,
+ "T_fdd_113", HFILL }},
+ { &hf_rrc_fdd_117,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_111", HFILL }},
+ "T_fdd_114", HFILL }},
{ &hf_rrc_dpcch_PowerOffset,
{ "dpcch-PowerOffset", "rrc.dpcch_PowerOffset",
FT_INT32, BASE_DEC, NULL, 0,
@@ -143445,10 +152717,10 @@ void proto_register_rrc(void) {
{ "sRB-delay", "rrc.sRB_delay",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd_69,
+ { &hf_rrc_tdd_72,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_63", HFILL }},
+ "T_tdd_66", HFILL }},
{ &hf_rrc_ul_OL_PC_Signalling,
{ "ul-OL-PC-Signalling", "rrc.ul_OL_PC_Signalling",
FT_UINT32, BASE_DEC, VALS(rrc_T_ul_OL_PC_Signalling_vals), 0,
@@ -143465,14 +152737,14 @@ void proto_register_rrc(void) {
{ "individualTS-InterferenceList", "rrc.individualTS_InterferenceList",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_fdd_115,
+ { &hf_rrc_fdd_118,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_112", HFILL }},
- { &hf_rrc_tdd_70,
+ "T_fdd_115", HFILL }},
+ { &hf_rrc_tdd_73,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_64", HFILL }},
+ "T_tdd_67", HFILL }},
{ &hf_rrc_ul_OL_PC_Signalling_01,
{ "ul-OL-PC-Signalling", "rrc.ul_OL_PC_Signalling",
FT_UINT32, BASE_DEC, VALS(rrc_T_ul_OL_PC_Signalling_01_vals), 0,
@@ -143481,34 +152753,34 @@ void proto_register_rrc(void) {
{ "individuallySignalled", "rrc.individuallySignalled",
FT_NONE, BASE_NONE, NULL, 0,
"T_individuallySignalled_01", HFILL }},
- { &hf_rrc_tddOption_19,
+ { &hf_rrc_tddOption_20,
{ "tddOption", "rrc.tddOption",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_19_vals), 0,
- "T_tddOption_19", HFILL }},
- { &hf_rrc_tdd384_37,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_20_vals), 0,
+ "T_tddOption_20", HFILL }},
+ { &hf_rrc_tdd384_38,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_33", HFILL }},
+ "T_tdd384_34", HFILL }},
{ &hf_rrc_dpch_ConstantValue_01,
{ "dpch-ConstantValue", "rrc.dpch_ConstantValue",
FT_INT32, BASE_DEC, NULL, 0,
"ConstantValue", HFILL }},
- { &hf_rrc_tdd128_51,
+ { &hf_rrc_tdd128_53,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_49", HFILL }},
- { &hf_rrc_fdd_116,
+ "T_tdd128_51", HFILL }},
+ { &hf_rrc_fdd_119,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_113", HFILL }},
+ "T_fdd_116", HFILL }},
{ &hf_rrc_ack_NACK_repetition_factor,
{ "ack-NACK-repetition-factor", "rrc.ack_NACK_repetition_factor",
FT_UINT32, BASE_DEC, NULL, 0,
"ACK_NACK_repetitionFactor", HFILL }},
- { &hf_rrc_tdd_71,
+ { &hf_rrc_tdd_74,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_65", HFILL }},
+ "T_tdd_68", HFILL }},
{ &hf_rrc_ul_OL_PC_Signalling_02,
{ "ul-OL-PC-Signalling", "rrc.ul_OL_PC_Signalling",
FT_UINT32, BASE_DEC, VALS(rrc_T_ul_OL_PC_Signalling_02_vals), 0,
@@ -143517,26 +152789,26 @@ void proto_register_rrc(void) {
{ "individuallySignalled", "rrc.individuallySignalled",
FT_NONE, BASE_NONE, NULL, 0,
"T_individuallySignalled_02", HFILL }},
- { &hf_rrc_tddOption_20,
+ { &hf_rrc_tddOption_21,
{ "tddOption", "rrc.tddOption",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_20_vals), 0,
- "T_tddOption_20", HFILL }},
- { &hf_rrc_tdd384_38,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_21_vals), 0,
+ "T_tddOption_21", HFILL }},
+ { &hf_rrc_tdd384_39,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_34", HFILL }},
- { &hf_rrc_tdd128_52,
+ "T_tdd384_35", HFILL }},
+ { &hf_rrc_tdd128_54,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_50", HFILL }},
- { &hf_rrc_fdd_117,
+ "T_tdd128_52", HFILL }},
+ { &hf_rrc_fdd_120,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_114", HFILL }},
- { &hf_rrc_tdd_72,
+ "T_fdd_117", HFILL }},
+ { &hf_rrc_tdd_75,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_66", HFILL }},
+ "T_tdd_69", HFILL }},
{ &hf_rrc_ul_OL_PC_Signalling_03,
{ "ul-OL-PC-Signalling", "rrc.ul_OL_PC_Signalling",
FT_UINT32, BASE_DEC, VALS(rrc_T_ul_OL_PC_Signalling_03_vals), 0,
@@ -143545,26 +152817,26 @@ void proto_register_rrc(void) {
{ "individuallySignalled", "rrc.individuallySignalled",
FT_NONE, BASE_NONE, NULL, 0,
"T_individuallySignalled_03", HFILL }},
- { &hf_rrc_tddOption_21,
+ { &hf_rrc_tddOption_22,
{ "tddOption", "rrc.tddOption",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_21_vals), 0,
- "T_tddOption_21", HFILL }},
- { &hf_rrc_tdd384_39,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_22_vals), 0,
+ "T_tddOption_22", HFILL }},
+ { &hf_rrc_tdd384_40,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_35", HFILL }},
- { &hf_rrc_tdd128_53,
+ "T_tdd384_36", HFILL }},
+ { &hf_rrc_tdd128_55,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_51", HFILL }},
- { &hf_rrc_fdd_118,
+ "T_tdd128_53", HFILL }},
+ { &hf_rrc_fdd_121,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_115", HFILL }},
- { &hf_rrc_tdd_73,
+ "T_fdd_118", HFILL }},
+ { &hf_rrc_tdd_76,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_67", HFILL }},
+ "T_tdd_70", HFILL }},
{ &hf_rrc_ul_OL_PC_Signalling_04,
{ "ul-OL-PC-Signalling", "rrc.ul_OL_PC_Signalling",
FT_UINT32, BASE_DEC, VALS(rrc_T_ul_OL_PC_Signalling_04_vals), 0,
@@ -143573,38 +152845,38 @@ void proto_register_rrc(void) {
{ "individuallySignalled", "rrc.individuallySignalled",
FT_NONE, BASE_NONE, NULL, 0,
"T_individuallySignalled_04", HFILL }},
- { &hf_rrc_tddOption_22,
+ { &hf_rrc_tddOption_23,
{ "tddOption", "rrc.tddOption",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_22_vals), 0,
- "T_tddOption_22", HFILL }},
- { &hf_rrc_tdd384_40,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_23_vals), 0,
+ "T_tddOption_23", HFILL }},
+ { &hf_rrc_tdd384_41,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_36", HFILL }},
- { &hf_rrc_tdd768_21,
+ "T_tdd384_37", HFILL }},
+ { &hf_rrc_tdd768_22,
{ "tdd768", "rrc.tdd768",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd768_18", HFILL }},
- { &hf_rrc_tdd128_54,
+ "T_tdd768_19", HFILL }},
+ { &hf_rrc_tdd128_56,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_52", HFILL }},
+ "T_tdd128_54", HFILL }},
{ &hf_rrc_dpcch_PowerOffset_01,
{ "dpcch-PowerOffset", "rrc.dpcch_PowerOffset",
FT_INT32, BASE_DEC, NULL, 0,
"DPCCH_PowerOffset2", HFILL }},
- { &hf_rrc_fdd_119,
+ { &hf_rrc_fdd_122,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_116", HFILL }},
- { &hf_rrc_tdd_74,
+ "T_fdd_119", HFILL }},
+ { &hf_rrc_tdd_77,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_68", HFILL }},
- { &hf_rrc_tdd_75,
+ "T_tdd_71", HFILL }},
+ { &hf_rrc_tdd_78,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_69", HFILL }},
+ "T_tdd_72", HFILL }},
{ &hf_rrc_non_ScheduledTransGrantInfo_02,
{ "non-ScheduledTransGrantInfo", "rrc.non_ScheduledTransGrantInfo",
FT_UINT32, BASE_DEC, VALS(rrc_Non_ScheduledTransGrantInfoTDD_ext_vals), 0,
@@ -143629,14 +152901,14 @@ void proto_register_rrc(void) {
{ "mac-es-e-resetIndicator", "rrc.mac_es_e_resetIndicator",
FT_UINT32, BASE_DEC, VALS(rrc_T_mac_es_e_resetIndicator_02_vals), 0,
"T_mac_es_e_resetIndicator_02", HFILL }},
- { &hf_rrc_modeSpecificInfo_80,
+ { &hf_rrc_modeSpecificInfo_83,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_80_vals), 0,
- "T_modeSpecificInfo_80", HFILL }},
- { &hf_rrc_fdd_120,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_83_vals), 0,
+ "T_modeSpecificInfo_83", HFILL }},
+ { &hf_rrc_fdd_123,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_117", HFILL }},
+ "T_fdd_120", HFILL }},
{ &hf_rrc_e_DPCCH_Info_01,
{ "e-DPCCH-Info", "rrc.e_DPCCH_Info",
FT_NONE, BASE_NONE, NULL, 0,
@@ -143645,10 +152917,10 @@ void proto_register_rrc(void) {
{ "e-DPDCH-Info", "rrc.e_DPDCH_Info",
FT_NONE, BASE_NONE, NULL, 0,
"E_DPDCH_Info_r7", HFILL }},
- { &hf_rrc_tdd_76,
+ { &hf_rrc_tdd_79,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_70", HFILL }},
+ "T_tdd_73", HFILL }},
{ &hf_rrc_e_RUCCH_Info_01,
{ "e-RUCCH-Info", "rrc.e_RUCCH_Info",
FT_NONE, BASE_NONE, NULL, 0,
@@ -143665,42 +152937,82 @@ void proto_register_rrc(void) {
{ "mac-es-e-resetIndicator", "rrc.mac_es_e_resetIndicator",
FT_UINT32, BASE_DEC, VALS(rrc_T_mac_es_e_resetIndicator_03_vals), 0,
"T_mac_es_e_resetIndicator_03", HFILL }},
- { &hf_rrc_modeSpecificInfo_81,
+ { &hf_rrc_modeSpecificInfo_84,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_81_vals), 0,
- "T_modeSpecificInfo_81", HFILL }},
- { &hf_rrc_fdd_121,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_84_vals), 0,
+ "T_modeSpecificInfo_84", HFILL }},
+ { &hf_rrc_fdd_124,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_118", HFILL }},
+ "T_fdd_121", HFILL }},
{ &hf_rrc_e_DPDCH_Info_02,
{ "e-DPDCH-Info", "rrc.e_DPDCH_Info",
FT_NONE, BASE_NONE, NULL, 0,
"E_DPDCH_Info_r8", HFILL }},
- { &hf_rrc_tdd_77,
+ { &hf_rrc_tdd_80,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_71", HFILL }},
+ "T_tdd_74", HFILL }},
{ &hf_rrc_mac_es_e_resetIndicator_04,
{ "mac-es-e-resetIndicator", "rrc.mac_es_e_resetIndicator",
FT_UINT32, BASE_DEC, VALS(rrc_T_mac_es_e_resetIndicator_04_vals), 0,
"T_mac_es_e_resetIndicator_04", HFILL }},
- { &hf_rrc_modeSpecificInfo_82,
+ { &hf_rrc_modeSpecificInfo_85,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_82_vals), 0,
- "T_modeSpecificInfo_82", HFILL }},
- { &hf_rrc_fdd_122,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_85_vals), 0,
+ "T_modeSpecificInfo_85", HFILL }},
+ { &hf_rrc_fdd_125,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_119", HFILL }},
- { &hf_rrc_tdd_78,
+ "T_fdd_122", HFILL }},
+ { &hf_rrc_tdd_81,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_72", HFILL }},
+ "T_tdd_75", HFILL }},
{ &hf_rrc_non_ScheduledTransGrantInfo_04,
{ "non-ScheduledTransGrantInfo", "rrc.non_ScheduledTransGrantInfo",
FT_UINT32, BASE_DEC, VALS(rrc_Non_ScheduledTransGrantInfoTDD_r9_vals), 0,
"Non_ScheduledTransGrantInfoTDD_r9", HFILL }},
+ { &hf_rrc_e_PUCH_info,
+ { "e-PUCH-info", "rrc.e_PUCH_info",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "E_PUCH_Info_MulticarrierEDCH_TDD128", HFILL }},
+ { &hf_rrc_e_AGCH_info,
+ { "e-AGCH-info", "rrc.e_AGCH_info",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "E_AGCH_Information_TDD128", HFILL }},
+ { &hf_rrc_e_HICH_info,
+ { "e-HICH-info", "rrc.e_HICH_info",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "E_HICH_Information_TDD128", HFILL }},
+ { &hf_rrc_UL_MulticarrierEDCH_Infolist_TDD128_item,
+ { "UL-MulticarrierEDCH-InfolistItem-TDD128", "rrc.UL_MulticarrierEDCH_InfolistItem_TDD128",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_UL_MulticarrierEDCH_Deletelist_TDD128_item,
+ { "UARFCN", "rrc.UARFCN",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_configuration_info,
+ { "configuration-info", "rrc.configuration_info",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_configuration_info_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_newConfiguration_07,
+ { "newConfiguration", "rrc.newConfiguration",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UL_MulticarrierEDCH_NewConfigurationInfo_TDD128", HFILL }},
+ { &hf_rrc_tsn_Length_01,
+ { "tsn-Length", "rrc.tsn_Length",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tsn_Length_01_vals), 0,
+ "T_tsn_Length_01", HFILL }},
+ { &hf_rrc_ul_MulticarrierEDCH_Infolist,
+ { "ul-MulticarrierEDCH-Infolist", "rrc.ul_MulticarrierEDCH_Infolist",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "UL_MulticarrierEDCH_Infolist_TDD128", HFILL }},
+ { &hf_rrc_ul_MulticarrierEDCH_Deletelist,
+ { "ul-MulticarrierEDCH-Deletelist", "rrc.ul_MulticarrierEDCH_Deletelist",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "UL_MulticarrierEDCH_Deletelist_TDD128", HFILL }},
{ &hf_rrc_stepSize,
{ "stepSize", "rrc.stepSize",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -143721,18 +153033,18 @@ void proto_register_rrc(void) {
{ "enabled", "rrc.enabled",
FT_NONE, BASE_NONE, NULL, 0,
"T_enabled_01", HFILL }},
- { &hf_rrc_tddOption_23,
+ { &hf_rrc_tddOption_24,
{ "tddOption", "rrc.tddOption",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_23_vals), 0,
- "T_tddOption_23", HFILL }},
- { &hf_rrc_tdd384_41,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_24_vals), 0,
+ "T_tddOption_24", HFILL }},
+ { &hf_rrc_tdd384_42,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_37", HFILL }},
- { &hf_rrc_tdd128_55,
+ "T_tdd384_38", HFILL }},
+ { &hf_rrc_tdd128_57,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_53", HFILL }},
+ "T_tdd128_55", HFILL }},
{ &hf_rrc_synchronisationParameters,
{ "synchronisationParameters", "rrc.synchronisationParameters",
FT_NONE, BASE_NONE, NULL, 0,
@@ -143741,29 +153053,29 @@ void proto_register_rrc(void) {
{ "enabled", "rrc.enabled",
FT_NONE, BASE_NONE, NULL, 0,
"T_enabled_02", HFILL }},
- { &hf_rrc_tddOption_24,
+ { &hf_rrc_tddOption_25,
{ "tddOption", "rrc.tddOption",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_24_vals), 0,
- "T_tddOption_24", HFILL }},
- { &hf_rrc_tdd384_42,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_25_vals), 0,
+ "T_tddOption_25", HFILL }},
+ { &hf_rrc_tdd384_43,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_38", HFILL }},
- { &hf_rrc_tdd768_22,
+ "T_tdd384_39", HFILL }},
+ { &hf_rrc_tdd768_23,
{ "tdd768", "rrc.tdd768",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd768_19", HFILL }},
- { &hf_rrc_tdd128_56,
+ "T_tdd768_20", HFILL }},
+ { &hf_rrc_tdd128_58,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_54", HFILL }},
+ "T_tdd128_56", HFILL }},
{ &hf_rrc_enabled_03,
{ "enabled", "rrc.enabled",
FT_NONE, BASE_NONE, NULL, 0,
"T_enabled_03", HFILL }},
{ &hf_rrc_UL_TS_ChannelisationCodeList_item,
{ "UL-TS-ChannelisationCode", "rrc.UL_TS_ChannelisationCode",
- FT_UINT32, BASE_DEC, VALS(rrc_UL_TS_ChannelisationCode_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_UL_TS_ChannelisationCode_vals_ext, 0,
NULL, HFILL }},
{ &hf_rrc_UL_TS_ChannelisationCodeList_r7_item,
{ "UL-TS-ChannelisationCodeList-r7 item", "rrc.UL_TS_ChannelisationCodeList_r7_item",
@@ -143771,7 +153083,7 @@ void proto_register_rrc(void) {
NULL, HFILL }},
{ &hf_rrc_ul_TS_Channelisation_Code,
{ "ul-TS-Channelisation-Code", "rrc.ul_TS_Channelisation_Code",
- FT_UINT32, BASE_DEC, VALS(rrc_UL_TS_ChannelisationCode_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_UL_TS_ChannelisationCode_vals_ext, 0,
"UL_TS_ChannelisationCode", HFILL }},
{ &hf_rrc_plcch_info,
{ "plcch-info", "rrc.plcch_info",
@@ -143779,7 +153091,7 @@ void proto_register_rrc(void) {
NULL, HFILL }},
{ &hf_rrc_UL_TS_ChannelisationCodeList_VHCR_item,
{ "UL-TS-ChannelisationCode-VHCR", "rrc.UL_TS_ChannelisationCode_VHCR",
- FT_UINT32, BASE_DEC, VALS(rrc_UL_TS_ChannelisationCode_VHCR_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_UL_TS_ChannelisationCode_VHCR_vals_ext, 0,
NULL, HFILL }},
{ &hf_rrc_parameters_04,
{ "parameters", "rrc.parameters",
@@ -143965,10 +153277,26 @@ void proto_register_rrc(void) {
{ "azimuthAndElevation", "rrc.azimuthAndElevation",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_azimuthAndElevation_01,
+ { "azimuthAndElevation", "rrc.azimuthAndElevation",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AzimuthAndElevation_va40ext", HFILL }},
+ { &hf_rrc_azimuthAndElevation_02,
+ { "azimuthAndElevation", "rrc.azimuthAndElevation",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AzimuthAndElevation_r10", HFILL }},
{ &hf_rrc_AcquisitionSatInfoList_item,
{ "AcquisitionSatInfo", "rrc.AcquisitionSatInfo",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_AcquisitionSatInfoList_va40ext_item,
+ { "AcquisitionSatInfo-va40ext", "rrc.AcquisitionSatInfo_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_AcquisitionSatInfoList_r10_item,
+ { "AcquisitionSatInfo-r10", "rrc.AcquisitionSatInfo_r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_rrc_AdditionalMeasurementID_List_item,
{ "MeasurementIdentity", "rrc.MeasurementIdentity",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -144089,6 +153417,14 @@ void proto_register_rrc(void) {
{ "elevation", "rrc.elevation",
FT_UINT32, BASE_DEC, NULL, 0,
"INTEGER_0_7", HFILL }},
+ { &hf_rrc_azimuthLSB,
+ { "azimuthLSB", "rrc.azimuthLSB",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_15", HFILL }},
+ { &hf_rrc_elevationLSB,
+ { "elevationLSB", "rrc.elevationLSB",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_15", HFILL }},
{ &hf_rrc_BadSatList_item,
{ "BadSatList item", "rrc.BadSatList_item",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -144169,22 +153505,22 @@ void proto_register_rrc(void) {
{ "referenceTimeDifferenceToCell", "rrc.referenceTimeDifferenceToCell",
FT_UINT32, BASE_DEC, VALS(rrc_ReferenceTimeDifferenceToCell_vals), 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_83,
+ { &hf_rrc_modeSpecificInfo_86,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_83_vals), 0,
- "T_modeSpecificInfo_83", HFILL }},
- { &hf_rrc_fdd_123,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_86_vals), 0,
+ "T_modeSpecificInfo_86", HFILL }},
+ { &hf_rrc_fdd_126,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_120", HFILL }},
+ "T_fdd_123", HFILL }},
{ &hf_rrc_readSFN_Indicator,
{ "readSFN-Indicator", "rrc.readSFN_Indicator",
FT_BOOLEAN, BASE_NONE, NULL, 0,
"BOOLEAN", HFILL }},
- { &hf_rrc_tdd_79,
+ { &hf_rrc_tdd_82,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_73", HFILL }},
+ "T_tdd_76", HFILL }},
{ &hf_rrc_primaryCCPCH_Info_02,
{ "primaryCCPCH-Info", "rrc.primaryCCPCH_Info",
FT_UINT32, BASE_DEC, VALS(rrc_PrimaryCCPCH_Info_vals), 0,
@@ -144193,18 +153529,18 @@ void proto_register_rrc(void) {
{ "timeslotInfoList", "rrc.timeslotInfoList",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_84,
+ { &hf_rrc_modeSpecificInfo_87,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_84_vals), 0,
- "T_modeSpecificInfo_84", HFILL }},
- { &hf_rrc_fdd_124,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_87_vals), 0,
+ "T_modeSpecificInfo_87", HFILL }},
+ { &hf_rrc_fdd_127,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_121", HFILL }},
- { &hf_rrc_tdd_80,
+ "T_fdd_124", HFILL }},
+ { &hf_rrc_tdd_83,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_74", HFILL }},
+ "T_tdd_77", HFILL }},
{ &hf_rrc_primaryCCPCH_Info_03,
{ "primaryCCPCH-Info", "rrc.primaryCCPCH_Info",
FT_UINT32, BASE_DEC, VALS(rrc_PrimaryCCPCH_Info_r4_vals), 0,
@@ -144217,30 +153553,30 @@ void proto_register_rrc(void) {
{ "cellSelectionReselectionInfo", "rrc.cellSelectionReselectionInfo",
FT_NONE, BASE_NONE, NULL, 0,
"CellSelectReselectInfoMC_RSCP", HFILL }},
- { &hf_rrc_modeSpecificInfo_85,
+ { &hf_rrc_modeSpecificInfo_88,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_85_vals), 0,
- "T_modeSpecificInfo_85", HFILL }},
- { &hf_rrc_fdd_125,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_88_vals), 0,
+ "T_modeSpecificInfo_88", HFILL }},
+ { &hf_rrc_fdd_128,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_122", HFILL }},
- { &hf_rrc_tdd_81,
+ "T_fdd_125", HFILL }},
+ { &hf_rrc_tdd_84,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_75", HFILL }},
- { &hf_rrc_modeSpecificInfo_86,
+ "T_tdd_78", HFILL }},
+ { &hf_rrc_modeSpecificInfo_89,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_86_vals), 0,
- "T_modeSpecificInfo_86", HFILL }},
- { &hf_rrc_fdd_126,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_89_vals), 0,
+ "T_modeSpecificInfo_89", HFILL }},
+ { &hf_rrc_fdd_129,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_123", HFILL }},
- { &hf_rrc_tdd_82,
+ "T_fdd_126", HFILL }},
+ { &hf_rrc_tdd_85,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_76", HFILL }},
+ "T_tdd_79", HFILL }},
{ &hf_rrc_cellSelectionReselectionInfo_01,
{ "cellSelectionReselectionInfo", "rrc.cellSelectionReselectionInfo",
FT_NONE, BASE_NONE, NULL, 0,
@@ -144253,50 +153589,50 @@ void proto_register_rrc(void) {
{ "timeslotInfoList", "rrc.timeslotInfoList",
FT_UINT32, BASE_DEC, NULL, 0,
"TimeslotInfoList_LCR_r4", HFILL }},
- { &hf_rrc_modeSpecificInfo_87,
+ { &hf_rrc_modeSpecificInfo_90,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_87_vals), 0,
- "T_modeSpecificInfo_87", HFILL }},
- { &hf_rrc_fdd_127,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_90_vals), 0,
+ "T_modeSpecificInfo_90", HFILL }},
+ { &hf_rrc_fdd_130,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_124", HFILL }},
- { &hf_rrc_tdd_83,
+ "T_fdd_127", HFILL }},
+ { &hf_rrc_tdd_86,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_77", HFILL }},
+ "T_tdd_80", HFILL }},
{ &hf_rrc_cellSelectionReselectionInfo_02,
{ "cellSelectionReselectionInfo", "rrc.cellSelectionReselectionInfo",
FT_NONE, BASE_NONE, NULL, 0,
"CellSelectReselectInfoSIB_11_12_ECN0", HFILL }},
- { &hf_rrc_modeSpecificInfo_88,
+ { &hf_rrc_modeSpecificInfo_91,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_88_vals), 0,
- "T_modeSpecificInfo_88", HFILL }},
- { &hf_rrc_fdd_128,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_91_vals), 0,
+ "T_modeSpecificInfo_91", HFILL }},
+ { &hf_rrc_fdd_131,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_125", HFILL }},
- { &hf_rrc_tdd_84,
+ "T_fdd_128", HFILL }},
+ { &hf_rrc_tdd_87,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_78", HFILL }},
+ "T_tdd_81", HFILL }},
{ &hf_rrc_cellSelectionReselectionInfo_03,
{ "cellSelectionReselectionInfo", "rrc.cellSelectionReselectionInfo",
FT_NONE, BASE_NONE, NULL, 0,
"CellSelectReselectInfoSIB_11_12_HCS_RSCP", HFILL }},
- { &hf_rrc_modeSpecificInfo_89,
+ { &hf_rrc_modeSpecificInfo_92,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_89_vals), 0,
- "T_modeSpecificInfo_89", HFILL }},
- { &hf_rrc_fdd_129,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_92_vals), 0,
+ "T_modeSpecificInfo_92", HFILL }},
+ { &hf_rrc_fdd_132,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_126", HFILL }},
- { &hf_rrc_tdd_85,
+ "T_fdd_129", HFILL }},
+ { &hf_rrc_tdd_88,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_79", HFILL }},
+ "T_tdd_82", HFILL }},
{ &hf_rrc_cellSelectionReselectionInfo_04,
{ "cellSelectionReselectionInfo", "rrc.cellSelectionReselectionInfo",
FT_NONE, BASE_NONE, NULL, 0,
@@ -144305,7 +153641,7 @@ void proto_register_rrc(void) {
{ "cellIdentity", "rrc.cellIdentity",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_dummy_43,
+ { &hf_rrc_dummy_47,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, VALS(rrc_SFN_SFN_ObsTimeDifference_vals), 0,
"SFN_SFN_ObsTimeDifference", HFILL }},
@@ -144313,14 +153649,14 @@ void proto_register_rrc(void) {
{ "cellSynchronisationInfo", "rrc.cellSynchronisationInfo",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_90,
+ { &hf_rrc_modeSpecificInfo_93,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_90_vals), 0,
- "T_modeSpecificInfo_90", HFILL }},
- { &hf_rrc_fdd_130,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_93_vals), 0,
+ "T_modeSpecificInfo_93", HFILL }},
+ { &hf_rrc_fdd_133,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_127", HFILL }},
+ "T_fdd_130", HFILL }},
{ &hf_rrc_cpich_Ec_N0_01,
{ "cpich-Ec-N0", "rrc.cpich_Ec_N0",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -144333,10 +153669,10 @@ void proto_register_rrc(void) {
{ "pathloss", "rrc.pathloss",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd_86,
+ { &hf_rrc_tdd_89,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_80", HFILL }},
+ "T_tdd_83", HFILL }},
{ &hf_rrc_proposedTGSN,
{ "proposedTGSN", "rrc.proposedTGSN",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -144345,22 +153681,22 @@ void proto_register_rrc(void) {
{ "timeslotISCP-List", "rrc.timeslotISCP_List",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_91,
+ { &hf_rrc_modeSpecificInfo_94,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_91_vals), 0,
- "T_modeSpecificInfo_91", HFILL }},
- { &hf_rrc_fdd_131,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_94_vals), 0,
+ "T_modeSpecificInfo_94", HFILL }},
+ { &hf_rrc_fdd_134,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_128", HFILL }},
+ "T_fdd_131", HFILL }},
{ &hf_rrc_deltaRSCPPerCell,
{ "deltaRSCPPerCell", "rrc.deltaRSCPPerCell",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd_87,
+ { &hf_rrc_tdd_90,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_81", HFILL }},
+ "T_tdd_84", HFILL }},
{ &hf_rrc_csgIdentity,
{ "csgIdentity", "rrc.csgIdentity",
FT_BYTES, BASE_NONE, NULL, 0,
@@ -144369,7 +153705,7 @@ void proto_register_rrc(void) {
{ "csgMemberIndication", "rrc.csgMemberIndication",
FT_UINT32, BASE_DEC, VALS(rrc_T_csgMemberIndication_vals), 0,
NULL, HFILL }},
- { &hf_rrc_fdd_132,
+ { &hf_rrc_fdd_135,
{ "fdd", "rrc.fdd",
FT_UINT32, BASE_DEC, NULL, 0,
"SEQUENCE_SIZE_1_maxCellMeas_OF_PrimaryCPICH_Info", HFILL }},
@@ -144377,7 +153713,7 @@ void proto_register_rrc(void) {
{ "PrimaryCPICH-Info", "rrc.PrimaryCPICH_Info",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd_88,
+ { &hf_rrc_tdd_91,
{ "tdd", "rrc.tdd",
FT_UINT32, BASE_DEC, NULL, 0,
"SEQUENCE_SIZE_1_maxCellMeas_OF_PrimaryCCPCH_Info", HFILL }},
@@ -144385,7 +153721,7 @@ void proto_register_rrc(void) {
{ "PrimaryCCPCH-Info", "rrc.PrimaryCCPCH_Info",
FT_UINT32, BASE_DEC, VALS(rrc_PrimaryCCPCH_Info_vals), 0,
NULL, HFILL }},
- { &hf_rrc_fdd_133,
+ { &hf_rrc_fdd_136,
{ "fdd", "rrc.fdd",
FT_UINT32, BASE_DEC, NULL, 0,
"SEQUENCE_SIZE_1_maxCellMeasOnSecULFreq_OF_PrimaryCPICH_Info", HFILL }},
@@ -144393,7 +153729,7 @@ void proto_register_rrc(void) {
{ "PrimaryCCPCH-Info-LCR-r4", "rrc.PrimaryCCPCH_Info_LCR_r4",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_dummy_44,
+ { &hf_rrc_dummy_48,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, VALS(rrc_SFN_SFN_OTD_Type_vals), 0,
"SFN_SFN_OTD_Type", HFILL }},
@@ -144405,14 +153741,14 @@ void proto_register_rrc(void) {
{ "cellSynchronisationInfoReportingIndicator", "rrc.cellSynchronisationInfoReportingIndicator",
FT_BOOLEAN, BASE_NONE, NULL, 0,
"BOOLEAN", HFILL }},
- { &hf_rrc_modeSpecificInfo_92,
+ { &hf_rrc_modeSpecificInfo_95,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_92_vals), 0,
- "T_modeSpecificInfo_92", HFILL }},
- { &hf_rrc_fdd_134,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_95_vals), 0,
+ "T_modeSpecificInfo_95", HFILL }},
+ { &hf_rrc_fdd_137,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_129", HFILL }},
+ "T_fdd_132", HFILL }},
{ &hf_rrc_cpich_Ec_N0_reportingIndicator,
{ "cpich-Ec-N0-reportingIndicator", "rrc.cpich_Ec_N0_reportingIndicator",
FT_BOOLEAN, BASE_NONE, NULL, 0,
@@ -144425,10 +153761,10 @@ void proto_register_rrc(void) {
{ "pathloss-reportingIndicator", "rrc.pathloss_reportingIndicator",
FT_BOOLEAN, BASE_NONE, NULL, 0,
"BOOLEAN", HFILL }},
- { &hf_rrc_tdd_89,
+ { &hf_rrc_tdd_92,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_82", HFILL }},
+ "T_tdd_85", HFILL }},
{ &hf_rrc_timeslotISCP_reportingIndicator,
{ "timeslotISCP-reportingIndicator", "rrc.timeslotISCP_reportingIndicator",
FT_BOOLEAN, BASE_NONE, NULL, 0,
@@ -144449,18 +153785,18 @@ void proto_register_rrc(void) {
{ "hcs-NeighbouringCellInformation-RSCP", "rrc.hcs_NeighbouringCellInformation_RSCP",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_93,
+ { &hf_rrc_modeSpecificInfo_96,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_93_vals), 0,
- "T_modeSpecificInfo_93", HFILL }},
- { &hf_rrc_fdd_135,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_96_vals), 0,
+ "T_modeSpecificInfo_96", HFILL }},
+ { &hf_rrc_fdd_138,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_130", HFILL }},
- { &hf_rrc_tdd_90,
+ "T_fdd_133", HFILL }},
+ { &hf_rrc_tdd_93,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_83", HFILL }},
+ "T_tdd_86", HFILL }},
{ &hf_rrc_gsm_02,
{ "gsm", "rrc.gsm",
FT_NONE, BASE_NONE, NULL, 0,
@@ -144473,66 +153809,66 @@ void proto_register_rrc(void) {
{ "q-Offset2S-N", "rrc.q_Offset2S_N",
FT_INT32, BASE_DEC, NULL, 0,
"Q_OffsetS_N", HFILL }},
- { &hf_rrc_modeSpecificInfo_94,
+ { &hf_rrc_modeSpecificInfo_97,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_94_vals), 0,
- "T_modeSpecificInfo_94", HFILL }},
- { &hf_rrc_fdd_136,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_97_vals), 0,
+ "T_modeSpecificInfo_97", HFILL }},
+ { &hf_rrc_fdd_139,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_131", HFILL }},
- { &hf_rrc_tdd_91,
+ "T_fdd_134", HFILL }},
+ { &hf_rrc_tdd_94,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_84", HFILL }},
+ "T_tdd_87", HFILL }},
{ &hf_rrc_gsm_03,
{ "gsm", "rrc.gsm",
FT_NONE, BASE_NONE, NULL, 0,
"T_gsm_03", HFILL }},
- { &hf_rrc_modeSpecificInfo_95,
+ { &hf_rrc_modeSpecificInfo_98,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_95_vals), 0,
- "T_modeSpecificInfo_95", HFILL }},
- { &hf_rrc_fdd_137,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_98_vals), 0,
+ "T_modeSpecificInfo_98", HFILL }},
+ { &hf_rrc_fdd_140,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_132", HFILL }},
- { &hf_rrc_tdd_92,
+ "T_fdd_135", HFILL }},
+ { &hf_rrc_tdd_95,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_85", HFILL }},
+ "T_tdd_88", HFILL }},
{ &hf_rrc_gsm_04,
{ "gsm", "rrc.gsm",
FT_NONE, BASE_NONE, NULL, 0,
"T_gsm_04", HFILL }},
- { &hf_rrc_modeSpecificInfo_96,
+ { &hf_rrc_modeSpecificInfo_99,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_96_vals), 0,
- "T_modeSpecificInfo_96", HFILL }},
- { &hf_rrc_fdd_138,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_99_vals), 0,
+ "T_modeSpecificInfo_99", HFILL }},
+ { &hf_rrc_fdd_141,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_133", HFILL }},
- { &hf_rrc_tdd_93,
+ "T_fdd_136", HFILL }},
+ { &hf_rrc_tdd_96,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_86", HFILL }},
+ "T_tdd_89", HFILL }},
{ &hf_rrc_gsm_05,
{ "gsm", "rrc.gsm",
FT_NONE, BASE_NONE, NULL, 0,
"T_gsm_05", HFILL }},
- { &hf_rrc_modeSpecificInfo_97,
+ { &hf_rrc_modeSpecificInfo_100,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_97_vals), 0,
- "T_modeSpecificInfo_97", HFILL }},
- { &hf_rrc_fdd_139,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_100_vals), 0,
+ "T_modeSpecificInfo_100", HFILL }},
+ { &hf_rrc_fdd_142,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_134", HFILL }},
- { &hf_rrc_tdd_94,
+ "T_fdd_137", HFILL }},
+ { &hf_rrc_tdd_97,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_87", HFILL }},
+ "T_tdd_90", HFILL }},
{ &hf_rrc_gsm_06,
{ "gsm", "rrc.gsm",
FT_NONE, BASE_NONE, NULL, 0,
@@ -144541,18 +153877,18 @@ void proto_register_rrc(void) {
{ "hcs-NeighbouringCellInformation-ECN0", "rrc.hcs_NeighbouringCellInformation_ECN0",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_98,
+ { &hf_rrc_modeSpecificInfo_101,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_98_vals), 0,
- "T_modeSpecificInfo_98", HFILL }},
- { &hf_rrc_fdd_140,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_101_vals), 0,
+ "T_modeSpecificInfo_101", HFILL }},
+ { &hf_rrc_fdd_143,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_135", HFILL }},
- { &hf_rrc_tdd_95,
+ "T_fdd_138", HFILL }},
+ { &hf_rrc_tdd_98,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_88", HFILL }},
+ "T_tdd_91", HFILL }},
{ &hf_rrc_gsm_07,
{ "gsm", "rrc.gsm",
FT_NONE, BASE_NONE, NULL, 0,
@@ -144621,14 +153957,14 @@ void proto_register_rrc(void) {
{ "IntraFreqCellIDOnSecULFreq", "rrc.IntraFreqCellIDOnSecULFreq",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_99,
+ { &hf_rrc_modeSpecificInfo_102,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_99_vals), 0,
- "T_modeSpecificInfo_99", HFILL }},
- { &hf_rrc_fdd_141,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_102_vals), 0,
+ "T_modeSpecificInfo_102", HFILL }},
+ { &hf_rrc_fdd_144,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_136", HFILL }},
+ "T_fdd_139", HFILL }},
{ &hf_rrc_countC_SFN_Frame_difference,
{ "countC-SFN-Frame-difference", "rrc.countC_SFN_Frame_difference",
FT_NONE, BASE_NONE, NULL, 0,
@@ -144637,10 +153973,10 @@ void proto_register_rrc(void) {
{ "tm", "rrc.tm",
FT_UINT32, BASE_DEC, NULL, 0,
"INTEGER_0_38399", HFILL }},
- { &hf_rrc_tdd_96,
+ { &hf_rrc_tdd_99,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_89", HFILL }},
+ "T_tdd_92", HFILL }},
{ &hf_rrc_bsicReported,
{ "bsicReported", "rrc.bsicReported",
FT_UINT32, BASE_DEC, VALS(rrc_BSICReported_vals), 0,
@@ -144717,14 +154053,14 @@ void proto_register_rrc(void) {
{ "off", "rrc.off",
FT_UINT32, BASE_DEC, NULL, 0,
"INTEGER_0_255", HFILL }},
- { &hf_rrc_modeSpecificInfo_100,
+ { &hf_rrc_modeSpecificInfo_103,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_100_vals), 0,
- "T_modeSpecificInfo_100", HFILL }},
- { &hf_rrc_fdd_142,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_103_vals), 0,
+ "T_modeSpecificInfo_103", HFILL }},
+ { &hf_rrc_fdd_145,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_137", HFILL }},
+ "T_fdd_140", HFILL }},
{ &hf_rrc_startPSC_01,
{ "startPSC", "rrc.startPSC",
FT_NONE, BASE_NONE, NULL, 0,
@@ -145209,7 +154545,7 @@ void proto_register_rrc(void) {
{ "thresholdUsedFrequency", "rrc.thresholdUsedFrequency",
FT_INT32, BASE_DEC, NULL, 0,
"ThresholdUsedFrequency_r6", HFILL }},
- { &hf_rrc_dummy_45,
+ { &hf_rrc_dummy_49,
{ "dummy", "rrc.dummy",
FT_INT32, BASE_DEC, NULL, 0,
"Threshold", HFILL }},
@@ -145237,6 +154573,14 @@ void proto_register_rrc(void) {
{ "nonUsedFreqParameterList", "rrc.nonUsedFreqParameterList",
FT_UINT32, BASE_DEC, NULL, 0,
"NonUsedFreqWList_r6", HFILL }},
+ { &hf_rrc_reportingCellStatus_01,
+ { "reportingCellStatus", "rrc.reportingCellStatus",
+ FT_UINT32, BASE_DEC, VALS(rrc_ReportingCellStatus_r10_vals), 0,
+ "ReportingCellStatus_r10", HFILL }},
+ { &hf_rrc_nonUsedFreqParameterList_02,
+ { "nonUsedFreqParameterList", "rrc.nonUsedFreqParameterList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "NonUsedFreq2aParameterList_r10", HFILL }},
{ &hf_rrc_usedFreqThreshold,
{ "usedFreqThreshold", "rrc.usedFreqThreshold",
FT_INT32, BASE_DEC, NULL, 0,
@@ -145245,10 +154589,14 @@ void proto_register_rrc(void) {
{ "usedFreqThreshold", "rrc.usedFreqThreshold",
FT_INT32, BASE_DEC, NULL, 0,
"Threshold_r6", HFILL }},
- { &hf_rrc_nonUsedFreqParameterList_02,
+ { &hf_rrc_nonUsedFreqParameterList_03,
{ "nonUsedFreqParameterList", "rrc.nonUsedFreqParameterList",
FT_UINT32, BASE_DEC, NULL, 0,
"NonUsedFreqParameterList_r6", HFILL }},
+ { &hf_rrc_nonUsedFreqParameterList_04,
+ { "nonUsedFreqParameterList", "rrc.nonUsedFreqParameterList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "NonUsedFreqParameterList_r10", HFILL }},
{ &hf_rrc_thresholdOwnSystem,
{ "thresholdOwnSystem", "rrc.thresholdOwnSystem",
FT_INT32, BASE_DEC, NULL, 0,
@@ -145297,6 +154645,10 @@ void proto_register_rrc(void) {
{ "ue-positioning-MeasurementEventResults", "rrc.ue_positioning_MeasurementEventResults",
FT_UINT32, BASE_DEC, VALS(rrc_UE_Positioning_MeasurementEventResults_v860ext_vals), 0,
"UE_Positioning_MeasurementEventResults_v860ext", HFILL }},
+ { &hf_rrc_interFreqEventResults_01,
+ { "interFreqEventResults", "rrc.interFreqEventResults",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "InterFreqEventResults_va40ext", HFILL }},
{ &hf_rrc_intraFreqEventResults_01,
{ "intraFreqEventResults", "rrc.intraFreqEventResults",
FT_NONE, BASE_NONE, NULL, 0,
@@ -145341,11 +154693,11 @@ void proto_register_rrc(void) {
{ "inter-freq-TDD128-meas-ind", "rrc.inter_freq_TDD128_meas_ind",
FT_BOOLEAN, BASE_NONE, NULL, 0,
"BOOLEAN", HFILL }},
- { &hf_rrc_fdd_143,
+ { &hf_rrc_fdd_146,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
"PrimaryCPICH_Info", HFILL }},
- { &hf_rrc_tdd_97,
+ { &hf_rrc_tdd_100,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
"PrimaryCCPCH_Info_LCR_r4", HFILL }},
@@ -145445,6 +154797,30 @@ void proto_register_rrc(void) {
{ "uePositioningDGANSSCorrections", "rrc.uePositioningDGANSSCorrections",
FT_NONE, BASE_NONE, NULL, 0,
"UE_Positioning_DGANSSCorrections_v920ext", HFILL }},
+ { &hf_rrc_ganssTimeModelsList_01,
+ { "ganssTimeModelsList", "rrc.ganssTimeModelsList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GANSSTimeModelsList_va40ext", HFILL }},
+ { &hf_rrc_uePositioningGANSSReferenceMeasurementInfo_01,
+ { "uePositioningGANSSReferenceMeasurementInfo", "rrc.uePositioningGANSSReferenceMeasurementInfo",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UE_Positioning_GANSS_ReferenceMeasurementInfo_va40ext", HFILL }},
+ { &hf_rrc_uePositioningGANSSAlmanac_03,
+ { "uePositioningGANSSAlmanac", "rrc.uePositioningGANSSAlmanac",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UE_Positioning_GANSS_Almanac_va40ext", HFILL }},
+ { &hf_rrc_ganssTimeModelsList_02,
+ { "ganssTimeModelsList", "rrc.ganssTimeModelsList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GANSSTimeModelsList_r10", HFILL }},
+ { &hf_rrc_uePositioningGANSSReferenceMeasurementInfo_02,
+ { "uePositioningGANSSReferenceMeasurementInfo", "rrc.uePositioningGANSSReferenceMeasurementInfo",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UE_Positioning_GANSS_ReferenceMeasurementInfo_r10", HFILL }},
+ { &hf_rrc_uePositioningGANSSAlmanac_04,
+ { "uePositioningGANSSAlmanac", "rrc.uePositioningGANSSAlmanac",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UE_Positioning_GANSS_Almanac_r10", HFILL }},
{ &hf_rrc_GANSSGenericDataList_item,
{ "GANSSGenericData", "rrc.GANSSGenericData",
FT_NONE, BASE_NONE, NULL, 0,
@@ -145465,6 +154841,14 @@ void proto_register_rrc(void) {
{ "GANSSGenericData-v920ext", "rrc.GANSSGenericData_v920ext",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_GANSSGenericDataList_va40ext_item,
+ { "GANSSGenericData-va40ext", "rrc.GANSSGenericData_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_GANSSGenericDataList_r10_item,
+ { "GANSSGenericData-r10", "rrc.GANSSGenericData_r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_rrc_GANSSGenericMeasurementInfo_item,
{ "GANSSGenericMeasurementInfo item", "rrc.GANSSGenericMeasurementInfo_item",
FT_NONE, BASE_NONE, NULL, 0,
@@ -145685,14 +155069,34 @@ void proto_register_rrc(void) {
{ "azimuthandElevation", "rrc.azimuthandElevation",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_azimuthandElevation_01,
+ { "azimuthandElevation", "rrc.azimuthandElevation",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AzimuthAndElevation_r10", HFILL }},
{ &hf_rrc_GANSSSatelliteInformationList_item,
{ "GANSSSatelliteInformation", "rrc.GANSSSatelliteInformation",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_GANSSSatelliteInformationList_va40ext_item,
+ { "GANSSSatelliteInformation-va40ext", "rrc.GANSSSatelliteInformation_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_GANSSSatelliteInformationList_r10_item,
+ { "GANSSSatelliteInformation-r10", "rrc.GANSSSatelliteInformation_r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_rrc_GANSSTimeModelsList_item,
{ "UE-Positioning-GANSS-TimeModel", "rrc.UE_Positioning_GANSS_TimeModel",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_GANSSTimeModelsList_va40ext_item,
+ { "UE-Positioning-GANSS-TimeModel-va40ext", "rrc.UE_Positioning_GANSS_TimeModel_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_GANSSTimeModelsList_r10_item,
+ { "UE-Positioning-GANSS-TimeModel-r10", "rrc.UE_Positioning_GANSS_TimeModel_r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_rrc_gloAlmNA,
{ "gloAlmNA", "rrc.gloAlmNA",
FT_BYTES, BASE_NONE, NULL, 0,
@@ -146113,7 +155517,7 @@ void proto_register_rrc(void) {
{ "gsm-CarrierRSSI", "rrc.gsm_CarrierRSSI",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_dummy_46,
+ { &hf_rrc_dummy_50,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, NULL, 0,
"INTEGER_46_173", HFILL }},
@@ -146261,47 +155665,51 @@ void proto_register_rrc(void) {
{ "interFreqSIAcquisition", "rrc.interFreqSIAcquisition",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_101,
+ { &hf_rrc_newInterFreqCellList_06,
+ { "newInterFreqCellList", "rrc.newInterFreqCellList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "NewInterFreqCellList_r10", HFILL }},
+ { &hf_rrc_modeSpecificInfo_104,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_101_vals), 0,
- "T_modeSpecificInfo_101", HFILL }},
- { &hf_rrc_fdd_144,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_104_vals), 0,
+ "T_modeSpecificInfo_104", HFILL }},
+ { &hf_rrc_fdd_147,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_138", HFILL }},
+ "T_fdd_141", HFILL }},
{ &hf_rrc_primaryScramblingCode_01,
{ "primaryScramblingCode", "rrc.primaryScramblingCode",
FT_NONE, BASE_NONE, NULL, 0,
"PrimaryCPICH_Info", HFILL }},
- { &hf_rrc_newInterFreqCellList_06,
+ { &hf_rrc_newInterFreqCellList_07,
{ "newInterFreqCellList", "rrc.newInterFreqCellList",
FT_UINT32, BASE_DEC, NULL, 0,
"NewInterFreqCellSI_List_RSCP", HFILL }},
- { &hf_rrc_newInterFreqCellList_07,
+ { &hf_rrc_newInterFreqCellList_08,
{ "newInterFreqCellList", "rrc.newInterFreqCellList",
FT_UINT32, BASE_DEC, NULL, 0,
"NewInterFreqCellSI_List_ECN0", HFILL }},
- { &hf_rrc_newInterFreqCellList_08,
+ { &hf_rrc_newInterFreqCellList_09,
{ "newInterFreqCellList", "rrc.newInterFreqCellList",
FT_UINT32, BASE_DEC, NULL, 0,
"NewInterFreqCellSI_List_HCS_RSCP", HFILL }},
- { &hf_rrc_newInterFreqCellList_09,
+ { &hf_rrc_newInterFreqCellList_10,
{ "newInterFreqCellList", "rrc.newInterFreqCellList",
FT_UINT32, BASE_DEC, NULL, 0,
"NewInterFreqCellSI_List_HCS_ECN0", HFILL }},
- { &hf_rrc_newInterFreqCellList_10,
+ { &hf_rrc_newInterFreqCellList_11,
{ "newInterFreqCellList", "rrc.newInterFreqCellList",
FT_UINT32, BASE_DEC, NULL, 0,
"NewInterFreqCellSI_List_RSCP_LCR_r4", HFILL }},
- { &hf_rrc_newInterFreqCellList_11,
+ { &hf_rrc_newInterFreqCellList_12,
{ "newInterFreqCellList", "rrc.newInterFreqCellList",
FT_UINT32, BASE_DEC, NULL, 0,
"NewInterFreqCellSI_List_ECN0_LCR_r4", HFILL }},
- { &hf_rrc_newInterFreqCellList_12,
+ { &hf_rrc_newInterFreqCellList_13,
{ "newInterFreqCellList", "rrc.newInterFreqCellList",
FT_UINT32, BASE_DEC, NULL, 0,
"NewInterFreqCellSI_List_HCS_RSCP_LCR_r4", HFILL }},
- { &hf_rrc_newInterFreqCellList_13,
+ { &hf_rrc_newInterFreqCellList_14,
{ "newInterFreqCellList", "rrc.newInterFreqCellList",
FT_UINT32, BASE_DEC, NULL, 0,
"NewInterFreqCellSI_List_HCS_ECN0_LCR_r4", HFILL }},
@@ -146369,6 +155777,30 @@ void proto_register_rrc(void) {
{ "event2f", "rrc.event2f",
FT_NONE, BASE_NONE, NULL, 0,
"Event2f_r6", HFILL }},
+ { &hf_rrc_event2a_02,
+ { "event2a", "rrc.event2a",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Event2a_r10", HFILL }},
+ { &hf_rrc_event2b_02,
+ { "event2b", "rrc.event2b",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Event2b_r10", HFILL }},
+ { &hf_rrc_event2c_02,
+ { "event2c", "rrc.event2c",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Event2c_r10", HFILL }},
+ { &hf_rrc_event2d_02,
+ { "event2d", "rrc.event2d",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Event2d_r10", HFILL }},
+ { &hf_rrc_event2e_02,
+ { "event2e", "rrc.event2e",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Event2e_r10", HFILL }},
+ { &hf_rrc_event2f_02,
+ { "event2f", "rrc.event2f",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Event2f_r10", HFILL }},
{ &hf_rrc_InterFreqEventList_item,
{ "InterFreqEvent", "rrc.InterFreqEvent",
FT_UINT32, BASE_DEC, VALS(rrc_InterFreqEvent_vals), 0,
@@ -146377,6 +155809,10 @@ void proto_register_rrc(void) {
{ "InterFreqEvent-r6", "rrc.InterFreqEvent_r6",
FT_UINT32, BASE_DEC, VALS(rrc_InterFreqEvent_r6_vals), 0,
NULL, HFILL }},
+ { &hf_rrc_InterFreqEventList_r10_item,
+ { "InterFreqEvent-r10", "rrc.InterFreqEvent_r10",
+ FT_UINT32, BASE_DEC, VALS(rrc_InterFreqEvent_r10_vals), 0,
+ NULL, HFILL }},
{ &hf_rrc_InterFrequencyMeasuredResultsList_v590ext_item,
{ "DeltaRSCPPerCell", "rrc.DeltaRSCPPerCell",
FT_NONE, BASE_NONE, NULL, 0,
@@ -146409,6 +155845,10 @@ void proto_register_rrc(void) {
{ "interFreqCellList", "rrc.interFreqCellList",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_detectedSetTrigger,
+ { "detectedSetTrigger", "rrc.detectedSetTrigger",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_detectedSetTrigger_vals), 0,
+ NULL, HFILL }},
{ &hf_rrc_interFreqCellList_01,
{ "interFreqCellList", "rrc.interFreqCellList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -146433,22 +155873,22 @@ void proto_register_rrc(void) {
{ "filterCoefficient", "rrc.filterCoefficient",
FT_UINT32, BASE_DEC, VALS(rrc_FilterCoefficient_vals), 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_102,
+ { &hf_rrc_modeSpecificInfo_105,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_102_vals), 0,
- "T_modeSpecificInfo_102", HFILL }},
- { &hf_rrc_fdd_145,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_105_vals), 0,
+ "T_modeSpecificInfo_105", HFILL }},
+ { &hf_rrc_fdd_148,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_139", HFILL }},
+ "T_fdd_142", HFILL }},
{ &hf_rrc_freqQualityEstimateQuantity_FDD,
{ "freqQualityEstimateQuantity-FDD", "rrc.freqQualityEstimateQuantity_FDD",
FT_UINT32, BASE_DEC, VALS(rrc_FreqQualityEstimateQuantity_FDD_vals), 0,
NULL, HFILL }},
- { &hf_rrc_tdd_98,
+ { &hf_rrc_tdd_101,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_90", HFILL }},
+ "T_tdd_93", HFILL }},
{ &hf_rrc_freqQualityEstimateQuantity_TDD,
{ "freqQualityEstimateQuantity-TDD", "rrc.freqQualityEstimateQuantity_TDD",
FT_UINT32, BASE_DEC, VALS(rrc_FreqQualityEstimateQuantity_TDD_vals), 0,
@@ -146509,22 +155949,22 @@ void proto_register_rrc(void) {
{ "InterFreqCellID", "rrc.InterFreqCellID",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_103,
+ { &hf_rrc_modeSpecificInfo_106,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_103_vals), 0,
- "T_modeSpecificInfo_103", HFILL }},
- { &hf_rrc_fdd_146,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_106_vals), 0,
+ "T_modeSpecificInfo_106", HFILL }},
+ { &hf_rrc_fdd_149,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_140", HFILL }},
+ "T_fdd_143", HFILL }},
{ &hf_rrc_interFreqRepQuantityRACH_FDD,
{ "interFreqRepQuantityRACH-FDD", "rrc.interFreqRepQuantityRACH_FDD",
FT_UINT32, BASE_DEC, VALS(rrc_InterFreqRepQuantityRACH_FDD_vals), 0,
NULL, HFILL }},
- { &hf_rrc_tdd_99,
+ { &hf_rrc_tdd_102,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_91", HFILL }},
+ "T_tdd_94", HFILL }},
{ &hf_rrc_interFreqRepQuantityRACH_TDDList,
{ "interFreqRepQuantityRACH-TDDList", "rrc.interFreqRepQuantityRACH_TDDList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -146537,18 +155977,18 @@ void proto_register_rrc(void) {
{ "maxReportedCellsOnRACHinterFreq", "rrc.maxReportedCellsOnRACHinterFreq",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_104,
+ { &hf_rrc_modeSpecificInfo_107,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_104_vals), 0,
- "T_modeSpecificInfo_104", HFILL }},
- { &hf_rrc_fdd_147,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_107_vals), 0,
+ "T_modeSpecificInfo_107", HFILL }},
+ { &hf_rrc_fdd_150,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_141", HFILL }},
- { &hf_rrc_tdd_100,
+ "T_fdd_144", HFILL }},
+ { &hf_rrc_tdd_103,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_92", HFILL }},
+ "T_tdd_95", HFILL }},
{ &hf_rrc_interFreqReportingCriteria_01,
{ "interFreqReportingCriteria", "rrc.interFreqReportingCriteria",
FT_NONE, BASE_NONE, NULL, 0,
@@ -146581,6 +156021,18 @@ void proto_register_rrc(void) {
{ "intraFreqReportingCriteria", "rrc.intraFreqReportingCriteria",
FT_NONE, BASE_NONE, NULL, 0,
"IntraFreqReportingCriteria_r9", HFILL }},
+ { &hf_rrc_interFreqReportingCriteria_03,
+ { "interFreqReportingCriteria", "rrc.interFreqReportingCriteria",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "InterFreqReportingCriteria_r10", HFILL }},
+ { &hf_rrc_periodicalReportingCriteria_02,
+ { "periodicalReportingCriteria", "rrc.periodicalReportingCriteria",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "PeriodicalWithReportingCellStatus_r10", HFILL }},
+ { &hf_rrc_noReporting_01,
+ { "noReporting", "rrc.noReporting",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ReportingCellStatusOpt_r10", HFILL }},
{ &hf_rrc_interFreqEventList,
{ "interFreqEventList", "rrc.interFreqEventList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -146589,6 +156041,10 @@ void proto_register_rrc(void) {
{ "interFreqEventList", "rrc.interFreqEventList",
FT_UINT32, BASE_DEC, NULL, 0,
"InterFreqEventList_r6", HFILL }},
+ { &hf_rrc_interFreqEventList_02,
+ { "interFreqEventList", "rrc.interFreqEventList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "InterFreqEventList_r10", HFILL }},
{ &hf_rrc_utra_Carrier_RSSI,
{ "utra-Carrier-RSSI", "rrc.utra_Carrier_RSSI",
FT_BOOLEAN, BASE_NONE, NULL, 0,
@@ -146665,6 +156121,18 @@ void proto_register_rrc(void) {
{ "reportCriteria", "rrc.reportCriteria",
FT_UINT32, BASE_DEC, VALS(rrc_InterFreqReportCriteria_r9_vals), 0,
"InterFreqReportCriteria_r9", HFILL }},
+ { &hf_rrc_interFreqCellInfoList_04,
+ { "interFreqCellInfoList", "rrc.interFreqCellInfoList",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "InterFreqCellInfoList_r10", HFILL }},
+ { &hf_rrc_freqIndexListForEnhancedMeas,
+ { "freqIndexListForEnhancedMeas", "rrc.freqIndexListForEnhancedMeas",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_reportCriteria_05,
+ { "reportCriteria", "rrc.reportCriteria",
+ FT_UINT32, BASE_DEC, VALS(rrc_InterFreqReportCriteria_r10_vals), 0,
+ "InterFreqReportCriteria_r10", HFILL }},
{ &hf_rrc_technologySpecificInfo,
{ "technologySpecificInfo", "rrc.technologySpecificInfo",
FT_UINT32, BASE_DEC, VALS(rrc_T_technologySpecificInfo_vals), 0,
@@ -146833,7 +156301,7 @@ void proto_register_rrc(void) {
{ "interRATReportingQuantity", "rrc.interRATReportingQuantity",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_reportCriteria_05,
+ { &hf_rrc_reportCriteria_06,
{ "reportCriteria", "rrc.reportCriteria",
FT_UINT32, BASE_DEC, VALS(rrc_InterRATReportCriteria_vals), 0,
"InterRATReportCriteria", HFILL }},
@@ -146961,51 +156429,55 @@ void proto_register_rrc(void) {
{ "intraFreqSIAcquisition", "rrc.intraFreqSIAcquisition",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_newIntraFreqCellList_05,
+ { "newIntraFreqCellList", "rrc.newIntraFreqCellList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "NewIntraFreqCellList_r10", HFILL }},
{ &hf_rrc_IntraFreqSIAcquisitionInfo_item,
{ "PrimaryCPICH-Info", "rrc.PrimaryCPICH_Info",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_105,
+ { &hf_rrc_modeSpecificInfo_108,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_105_vals), 0,
- "T_modeSpecificInfo_105", HFILL }},
- { &hf_rrc_fdd_148,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_108_vals), 0,
+ "T_modeSpecificInfo_108", HFILL }},
+ { &hf_rrc_fdd_151,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_142", HFILL }},
+ "T_fdd_145", HFILL }},
{ &hf_rrc_intraFreqSIAcquisitionInfo,
{ "intraFreqSIAcquisitionInfo", "rrc.intraFreqSIAcquisitionInfo",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_newIntraFreqCellList_05,
+ { &hf_rrc_newIntraFreqCellList_06,
{ "newIntraFreqCellList", "rrc.newIntraFreqCellList",
FT_UINT32, BASE_DEC, NULL, 0,
"NewIntraFreqCellSI_List_RSCP", HFILL }},
- { &hf_rrc_newIntraFreqCellList_06,
+ { &hf_rrc_newIntraFreqCellList_07,
{ "newIntraFreqCellList", "rrc.newIntraFreqCellList",
FT_UINT32, BASE_DEC, NULL, 0,
"NewIntraFreqCellSI_List_ECN0", HFILL }},
- { &hf_rrc_newIntraFreqCellList_07,
+ { &hf_rrc_newIntraFreqCellList_08,
{ "newIntraFreqCellList", "rrc.newIntraFreqCellList",
FT_UINT32, BASE_DEC, NULL, 0,
"NewIntraFreqCellSI_List_HCS_RSCP", HFILL }},
- { &hf_rrc_newIntraFreqCellList_08,
+ { &hf_rrc_newIntraFreqCellList_09,
{ "newIntraFreqCellList", "rrc.newIntraFreqCellList",
FT_UINT32, BASE_DEC, NULL, 0,
"NewIntraFreqCellSI_List_HCS_ECN0", HFILL }},
- { &hf_rrc_newIntraFreqCellList_09,
+ { &hf_rrc_newIntraFreqCellList_10,
{ "newIntraFreqCellList", "rrc.newIntraFreqCellList",
FT_UINT32, BASE_DEC, NULL, 0,
"NewIntraFreqCellSI_List_RSCP_LCR_r4", HFILL }},
- { &hf_rrc_newIntraFreqCellList_10,
+ { &hf_rrc_newIntraFreqCellList_11,
{ "newIntraFreqCellList", "rrc.newIntraFreqCellList",
FT_UINT32, BASE_DEC, NULL, 0,
"NewIntraFreqCellSI_List_ECN0_LCR_r4", HFILL }},
- { &hf_rrc_newIntraFreqCellList_11,
+ { &hf_rrc_newIntraFreqCellList_12,
{ "newIntraFreqCellList", "rrc.newIntraFreqCellList",
FT_UINT32, BASE_DEC, NULL, 0,
"NewIntraFreqCellSI_List_HCS_RSCP_LCR_r4", HFILL }},
- { &hf_rrc_newIntraFreqCellList_12,
+ { &hf_rrc_newIntraFreqCellList_13,
{ "newIntraFreqCellList", "rrc.newIntraFreqCellList",
FT_UINT32, BASE_DEC, NULL, 0,
"NewIntraFreqCellSI_List_HCS_ECN0_LCR_r4", HFILL }},
@@ -147161,22 +156633,22 @@ void proto_register_rrc(void) {
{ "cellMeasurementEventResultsOnSecUlFreq", "rrc.cellMeasurementEventResultsOnSecUlFreq",
FT_UINT32, BASE_DEC, VALS(rrc_CellMeasurementEventResultsOnSecUlFreq_vals), 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_106,
+ { &hf_rrc_modeSpecificInfo_109,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_106_vals), 0,
- "T_modeSpecificInfo_106", HFILL }},
- { &hf_rrc_fdd_149,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_109_vals), 0,
+ "T_modeSpecificInfo_109", HFILL }},
+ { &hf_rrc_fdd_152,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_143", HFILL }},
+ "T_fdd_146", HFILL }},
{ &hf_rrc_intraFreqMeasQuantity_FDD,
{ "intraFreqMeasQuantity-FDD", "rrc.intraFreqMeasQuantity_FDD",
FT_UINT32, BASE_DEC, VALS(rrc_IntraFreqMeasQuantity_FDD_vals), 0,
NULL, HFILL }},
- { &hf_rrc_tdd_101,
+ { &hf_rrc_tdd_104,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_93", HFILL }},
+ "T_tdd_96", HFILL }},
{ &hf_rrc_intraFreqMeasQuantity_TDDList,
{ "intraFreqMeasQuantity-TDDList", "rrc.intraFreqMeasQuantity_TDDList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -147289,22 +156761,22 @@ void proto_register_rrc(void) {
{ "sfn-SFN-OTD-Type", "rrc.sfn_SFN_OTD_Type",
FT_UINT32, BASE_DEC, VALS(rrc_SFN_SFN_OTD_Type_vals), 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_107,
+ { &hf_rrc_modeSpecificInfo_110,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_107_vals), 0,
- "T_modeSpecificInfo_107", HFILL }},
- { &hf_rrc_fdd_150,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_110_vals), 0,
+ "T_modeSpecificInfo_110", HFILL }},
+ { &hf_rrc_fdd_153,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_144", HFILL }},
+ "T_fdd_147", HFILL }},
{ &hf_rrc_intraFreqRepQuantityRACH_FDD,
{ "intraFreqRepQuantityRACH-FDD", "rrc.intraFreqRepQuantityRACH_FDD",
FT_UINT32, BASE_DEC, VALS(rrc_IntraFreqRepQuantityRACH_FDD_vals), 0,
NULL, HFILL }},
- { &hf_rrc_tdd_102,
+ { &hf_rrc_tdd_105,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_94", HFILL }},
+ "T_tdd_97", HFILL }},
{ &hf_rrc_intraFreqRepQuantityRACH_TDDList,
{ "intraFreqRepQuantityRACH-TDDList", "rrc.intraFreqRepQuantityRACH_TDDList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -147321,7 +156793,7 @@ void proto_register_rrc(void) {
{ "intraFreqReportingQuantity", "rrc.intraFreqReportingQuantity",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_reportCriteria_06,
+ { &hf_rrc_reportCriteria_07,
{ "reportCriteria", "rrc.reportCriteria",
FT_UINT32, BASE_DEC, VALS(rrc_IntraFreqReportCriteria_vals), 0,
"IntraFreqReportCriteria", HFILL }},
@@ -147329,15 +156801,15 @@ void proto_register_rrc(void) {
{ "intraFreqCellInfoList", "rrc.intraFreqCellInfoList",
FT_NONE, BASE_NONE, NULL, 0,
"IntraFreqCellInfoList_r4", HFILL }},
- { &hf_rrc_reportCriteria_07,
+ { &hf_rrc_reportCriteria_08,
{ "reportCriteria", "rrc.reportCriteria",
FT_UINT32, BASE_DEC, VALS(rrc_IntraFreqReportCriteria_r4_vals), 0,
"IntraFreqReportCriteria_r4", HFILL }},
- { &hf_rrc_reportCriteria_08,
+ { &hf_rrc_reportCriteria_09,
{ "reportCriteria", "rrc.reportCriteria",
FT_UINT32, BASE_DEC, VALS(rrc_IntraFreqReportCriteria_r6_vals), 0,
"IntraFreqReportCriteria_r6", HFILL }},
- { &hf_rrc_reportCriteria_09,
+ { &hf_rrc_reportCriteria_10,
{ "reportCriteria", "rrc.reportCriteria",
FT_UINT32, BASE_DEC, VALS(rrc_IntraFreqReportCriteria_r7_vals), 0,
"IntraFreqReportCriteria_r7", HFILL }},
@@ -147349,14 +156821,274 @@ void proto_register_rrc(void) {
{ "intraFreqCellInfoListOnSecULFreq", "rrc.intraFreqCellInfoListOnSecULFreq",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_reportCriteria_10,
+ { &hf_rrc_reportCriteria_11,
{ "reportCriteria", "rrc.reportCriteria",
FT_UINT32, BASE_DEC, VALS(rrc_IntraFreqReportCriteria_r9_vals), 0,
"IntraFreqReportCriteria_r9", HFILL }},
+ { &hf_rrc_intraFreqCellInfoList_03,
+ { "intraFreqCellInfoList", "rrc.intraFreqCellInfoList",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "IntraFreqCellInfoList_r10", HFILL }},
{ &hf_rrc_IntraFrequencyMeasuredResultsListOnSecULFreq_item,
{ "CellMeasuredResults-r9", "rrc.CellMeasuredResults_r9",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_loggingAbsoluteThreshold,
+ { "loggingAbsoluteThreshold", "rrc.loggingAbsoluteThreshold",
+ FT_UINT32, BASE_DEC, VALS(rrc_LoggingAbsoluteThreshold_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_loggingRelativeThreshold,
+ { "loggingRelativeThreshold", "rrc.loggingRelativeThreshold",
+ FT_INT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_loggingDuration,
+ { "loggingDuration", "rrc.loggingDuration",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_loggingDuration_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_intraUTRAANR,
+ { "intraUTRAANR", "rrc.intraUTRAANR",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_interRATANRforEUTRAIndicator,
+ { "interRATANRforEUTRAIndicator", "rrc.interRATANRforEUTRAIndicator",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_interRATANRforEUTRAIndicator_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_interRATANRforGSMIndicator,
+ { "interRATANRforGSMIndicator", "rrc.interRATANRforGSMIndicator",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_interRATANRforGSMIndicator_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_LoggedANRReportInfoList_item,
+ { "LoggedANRReportInfo", "rrc.LoggedANRReportInfo",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_servingCell,
+ { "servingCell", "rrc.servingCell",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "CellIdentity", HFILL }},
+ { &hf_rrc_loggedCellInfo,
+ { "loggedCellInfo", "rrc.loggedCellInfo",
+ FT_UINT32, BASE_DEC, VALS(rrc_LoggedCellInfo_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_loggedUTRACellInfo,
+ { "loggedUTRACellInfo", "rrc.loggedUTRACellInfo",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_loggedEUTRACellInfo,
+ { "loggedEUTRACellInfo", "rrc.loggedEUTRACellInfo",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_loggedGSMCellInfo,
+ { "loggedGSMCellInfo", "rrc.loggedGSMCellInfo",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_eutraCellIdentity,
+ { "eutraCellIdentity", "rrc.eutraCellIdentity",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_28", HFILL }},
+ { &hf_rrc_gsmCellIdentity,
+ { "gsmCellIdentity", "rrc.gsmCellIdentity",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_16", HFILL }},
+ { &hf_rrc_bandIndicator_01,
+ { "bandIndicator", "rrc.bandIndicator",
+ FT_UINT32, BASE_DEC, VALS(rrc_Frequency_Band_vals), 0,
+ "Frequency_Band", HFILL }},
+ { &hf_rrc_absoluteTimeInfo,
+ { "absoluteTimeInfo", "rrc.absoluteTimeInfo",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_48", HFILL }},
+ { &hf_rrc_loggingDuration_01,
+ { "loggingDuration", "rrc.loggingDuration",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_loggingDuration_01_vals), 0,
+ "T_loggingDuration_01", HFILL }},
+ { &hf_rrc_loggingInterval,
+ { "loggingInterval", "rrc.loggingInterval",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_loggingInterval_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_traceReference,
+ { "traceReference", "rrc.traceReference",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_traceRecordingSession,
+ { "traceRecordingSession", "rrc.traceRecordingSession",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_tce_Id,
+ { "tce-Id", "rrc.tce_Id",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_areaConfiguration,
+ { "areaConfiguration", "rrc.areaConfiguration",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_areaConfiguration_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_cellIDList,
+ { "cellIDList", "rrc.cellIDList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_32_OF_CellIdentity", HFILL }},
+ { &hf_rrc_cellIDList_item,
+ { "CellIdentity", "rrc.CellIdentity",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_locationAreaList,
+ { "locationAreaList", "rrc.locationAreaList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_8_OF_LAI", HFILL }},
+ { &hf_rrc_locationAreaList_item,
+ { "LAI", "rrc.LAI",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_routingAreaList,
+ { "routingAreaList", "rrc.routingAreaList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_8_OF_RAI", HFILL }},
+ { &hf_rrc_routingAreaList_item,
+ { "RAI", "rrc.RAI",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_LoggedMeasInterfreqList_FDD_item,
+ { "LoggedMeasInterfreqInfo-FDD", "rrc.LoggedMeasInterfreqInfo_FDD",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_loggedMeasInterfreqNeighbourList,
+ { "loggedMeasInterfreqNeighbourList", "rrc.loggedMeasInterfreqNeighbourList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxnumLoggedMeas_OF_LoggedMeasNeighbourInfo_FDD", HFILL }},
+ { &hf_rrc_loggedMeasInterfreqNeighbourList_item,
+ { "LoggedMeasNeighbourInfo-FDD", "rrc.LoggedMeasNeighbourInfo_FDD",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_loggedMeasInterfreqNeighbourList_01,
+ { "loggedMeasInterfreqNeighbourList", "rrc.loggedMeasInterfreqNeighbourList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "LoggedMeasInterfreqNeighbourList_TDD128", HFILL }},
+ { &hf_rrc_loggedMeasEUTRAFreqList,
+ { "loggedMeasEUTRAFreqList", "rrc.loggedMeasEUTRAFreqList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_loggedMeasGSMNeighbourCellsList,
+ { "loggedMeasGSMNeighbourCellsList", "rrc.loggedMeasGSMNeighbourCellsList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_LoggedMeasIntrafreqNeighbourList_FDD_item,
+ { "LoggedMeasNeighbourInfo-FDD", "rrc.LoggedMeasNeighbourInfo_FDD",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_LoggedMeasIntrafreqNeighbourMeasList_TDD128_item,
+ { "LoggedMeasNeighbourMeas-TDD128", "rrc.LoggedMeasNeighbourMeas_TDD128",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_LoggedMeasGSMNeighbourCellsList_item,
+ { "LoggedMeasGSMNeighbourCellsinfo", "rrc.LoggedMeasGSMNeighbourCellsinfo",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_LoggedMeasEUTRAFreqList_item,
+ { "LoggedMeasEUTRAFreqInfo", "rrc.LoggedMeasEUTRAFreqInfo",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_loggedMeasEUTRAFreqNeighbourInfoList,
+ { "loggedMeasEUTRAFreqNeighbourInfoList", "rrc.loggedMeasEUTRAFreqNeighbourInfoList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxnumLoggedMeas_OF_LoggedMeasEUTRAFreqNeighbourInfo", HFILL }},
+ { &hf_rrc_loggedMeasEUTRAFreqNeighbourInfoList_item,
+ { "LoggedMeasEUTRAFreqNeighbourInfo", "rrc.LoggedMeasEUTRAFreqNeighbourInfo",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_ellipsoidPoint,
+ { "ellipsoidPoint", "rrc.ellipsoidPoint",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_ellipsoidPointAltitude,
+ { "ellipsoidPointAltitude", "rrc.ellipsoidPointAltitude",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_relativeTimeStamp,
+ { "relativeTimeStamp", "rrc.relativeTimeStamp",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_7200", HFILL }},
+ { &hf_rrc_loggedMeasServingCellMeas,
+ { "loggedMeasServingCellMeas", "rrc.loggedMeasServingCellMeas",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "LoggedMeasServingCellMeas_FDD", HFILL }},
+ { &hf_rrc_loggedMeasIntrafreqNeighbourList,
+ { "loggedMeasIntrafreqNeighbourList", "rrc.loggedMeasIntrafreqNeighbourList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "LoggedMeasIntrafreqNeighbourList_FDD", HFILL }},
+ { &hf_rrc_loggedMeasInterfreqList,
+ { "loggedMeasInterfreqList", "rrc.loggedMeasInterfreqList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "LoggedMeasInterfreqList_FDD", HFILL }},
+ { &hf_rrc_loggedMeasInterRATNeighbourMeas,
+ { "loggedMeasInterRATNeighbourMeas", "rrc.loggedMeasInterRATNeighbourMeas",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_loggedMeasLocationInfo,
+ { "loggedMeasLocationInfo", "rrc.loggedMeasLocationInfo",
+ FT_UINT32, BASE_DEC, VALS(rrc_LoggedMeasLocationInfo_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_loggedMeasServingCellMeas_01,
+ { "loggedMeasServingCellMeas", "rrc.loggedMeasServingCellMeas",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "LoggedMeasServingCellMeas_TDD128", HFILL }},
+ { &hf_rrc_loggedMeasIntrafreqNeighbourList_01,
+ { "loggedMeasIntrafreqNeighbourList", "rrc.loggedMeasIntrafreqNeighbourList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "LoggedMeasIntrafreqNeighbourMeasList_TDD128", HFILL }},
+ { &hf_rrc_loggedMeasInterfreqList_01,
+ { "loggedMeasInterfreqList", "rrc.loggedMeasInterfreqList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "LoggedMeasInterfreqList_TDD128", HFILL }},
+ { &hf_rrc_LoggedMeasInterfreqList_TDD128_item,
+ { "LoggedMeasInterfreqInfo-TDD128", "rrc.LoggedMeasInterfreqInfo_TDD128",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_LoggedMeasInterfreqNeighbourList_TDD128_item,
+ { "LoggedMeasNeighbourMeas-TDD128", "rrc.LoggedMeasNeighbourMeas_TDD128",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_loggedMeasInfoList,
+ { "loggedMeasInfoList", "rrc.loggedMeasInfoList",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_loggedMeasAvailable_06,
+ { "loggedMeasAvailable", "rrc.loggedMeasAvailable",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_loggedMeasAvailable_06_vals), 0,
+ "T_loggedMeasAvailable_06", HFILL }},
+ { &hf_rrc_LoggedMeasInfoList_FDD_item,
+ { "LoggedMeasInfo-FDD", "rrc.LoggedMeasInfo_FDD",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_LoggedMeasInfoList_TDD128_item,
+ { "LoggedMeasInfo-TDD128", "rrc.LoggedMeasInfo_TDD128",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_modeSpecificInfo_111,
+ { "modeSpecificInfo", "rrc.modeSpecificInfo",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_111_vals), 0,
+ "T_modeSpecificInfo_111", HFILL }},
+ { &hf_rrc_fdd_154,
+ { "fdd", "rrc.fdd",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_fdd_148", HFILL }},
+ { &hf_rrc_loggedMeasInfoList_01,
+ { "loggedMeasInfoList", "rrc.loggedMeasInfoList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "LoggedMeasInfoList_FDD", HFILL }},
+ { &hf_rrc_tdd_106,
+ { "tdd", "rrc.tdd",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_tdd_98", HFILL }},
+ { &hf_rrc_loggedMeasInfoList_02,
+ { "loggedMeasInfoList", "rrc.loggedMeasInfoList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "LoggedMeasInfoList_TDD128", HFILL }},
+ { &hf_rrc_rscpforANR,
+ { "rscpforANR", "rrc.rscpforANR",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_ec_N0forANR,
+ { "ec-N0forANR", "rrc.ec_N0forANR",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_rrc_toe_nav,
{ "toe-nav", "rrc.toe_nav",
FT_BYTES, BASE_NONE, NULL, 0,
@@ -147521,22 +157253,22 @@ void proto_register_rrc(void) {
{ "currentCell", "rrc.currentCell",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_108,
+ { &hf_rrc_modeSpecificInfo_112,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_108_vals), 0,
- "T_modeSpecificInfo_108", HFILL }},
- { &hf_rrc_fdd_151,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_112_vals), 0,
+ "T_modeSpecificInfo_112", HFILL }},
+ { &hf_rrc_fdd_155,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_145", HFILL }},
+ "T_fdd_149", HFILL }},
{ &hf_rrc_measurementQuantity_02,
{ "measurementQuantity", "rrc.measurementQuantity",
FT_UINT32, BASE_DEC, VALS(rrc_T_measurementQuantity_vals), 0,
NULL, HFILL }},
- { &hf_rrc_tdd_103,
+ { &hf_rrc_tdd_107,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_95", HFILL }},
+ "T_tdd_99", HFILL }},
{ &hf_rrc_timeslotISCP,
{ "timeslotISCP", "rrc.timeslotISCP",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -147641,6 +157373,18 @@ void proto_register_rrc(void) {
{ "measurementType", "rrc.measurementType",
FT_UINT32, BASE_DEC, VALS(rrc_MeasurementType_r9_vals), 0,
"MeasurementType_r9", HFILL }},
+ { &hf_rrc_setup_06,
+ { "setup", "rrc.setup",
+ FT_UINT32, BASE_DEC, VALS(rrc_MeasurementType_r10_vals), 0,
+ "MeasurementType_r10", HFILL }},
+ { &hf_rrc_modify_07,
+ { "modify", "rrc.modify",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_modify_07", HFILL }},
+ { &hf_rrc_measurementType_06,
+ { "measurementType", "rrc.measurementType",
+ FT_UINT32, BASE_DEC, VALS(rrc_MeasurementType_r10_vals), 0,
+ "MeasurementType_r10", HFILL }},
{ &hf_rrc_use_of_HCS,
{ "use-of-HCS", "rrc.use_of_HCS",
FT_UINT32, BASE_DEC, VALS(rrc_T_use_of_HCS_vals), 0,
@@ -147721,7 +157465,7 @@ void proto_register_rrc(void) {
{ "trafficVolumeMeasSysInfo", "rrc.trafficVolumeMeasSysInfo",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_dummy_47,
+ { &hf_rrc_dummy_51,
{ "dummy", "rrc.dummy",
FT_NONE, BASE_NONE, NULL, 0,
"UE_InternalMeasurementSysInfo", HFILL }},
@@ -148017,6 +157761,18 @@ void proto_register_rrc(void) {
{ "csgProximityDetection", "rrc.csgProximityDetection",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_intraFrequencyMeasurement_05,
+ { "intraFrequencyMeasurement", "rrc.intraFrequencyMeasurement",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "IntraFrequencyMeasurement_r10", HFILL }},
+ { &hf_rrc_interFrequencyMeasurement_06,
+ { "interFrequencyMeasurement", "rrc.interFrequencyMeasurement",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "InterFrequencyMeasurement_r10", HFILL }},
+ { &hf_rrc_up_Measurement_04,
+ { "up-Measurement", "rrc.up_Measurement",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UE_Positioning_Measurement_r10", HFILL }},
{ &hf_rrc_ue_State,
{ "ue-State", "rrc.ue_State",
FT_UINT32, BASE_DEC, VALS(rrc_T_ue_State_vals), 0,
@@ -148029,22 +157785,22 @@ void proto_register_rrc(void) {
{ "sfn-SFN-ObsTimeDifference", "rrc.sfn_SFN_ObsTimeDifference",
FT_UINT32, BASE_DEC, VALS(rrc_SFN_SFN_ObsTimeDifference_vals), 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_109,
+ { &hf_rrc_modeSpecificInfo_113,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_109_vals), 0,
- "T_modeSpecificInfo_109", HFILL }},
- { &hf_rrc_fdd_152,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_113_vals), 0,
+ "T_modeSpecificInfo_113", HFILL }},
+ { &hf_rrc_fdd_156,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_146", HFILL }},
+ "T_fdd_150", HFILL }},
{ &hf_rrc_measurementQuantity_03,
{ "measurementQuantity", "rrc.measurementQuantity",
FT_UINT32, BASE_DEC, VALS(rrc_T_measurementQuantity_01_vals), 0,
"T_measurementQuantity_01", HFILL }},
- { &hf_rrc_tdd_104,
+ { &hf_rrc_tdd_108,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_96", HFILL }},
+ "T_tdd_100", HFILL }},
{ &hf_rrc_n_CR,
{ "n-CR", "rrc.n_CR",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -148441,14 +158197,14 @@ void proto_register_rrc(void) {
{ "iDot", "rrc.iDot",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING_SIZE_14", HFILL }},
- { &hf_rrc_modeSpecificInfo_110,
+ { &hf_rrc_modeSpecificInfo_114,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_110_vals), 0,
- "T_modeSpecificInfo_110", HFILL }},
- { &hf_rrc_fdd_153,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_114_vals), 0,
+ "T_modeSpecificInfo_114", HFILL }},
+ { &hf_rrc_fdd_157,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_147", HFILL }},
+ "T_fdd_151", HFILL }},
{ &hf_rrc_neighbourIdentity,
{ "neighbourIdentity", "rrc.neighbourIdentity",
FT_NONE, BASE_NONE, NULL, 0,
@@ -148457,10 +158213,10 @@ void proto_register_rrc(void) {
{ "uE-RX-TX-TimeDifferenceType2Info", "rrc.uE_RX_TX_TimeDifferenceType2Info",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd_105,
+ { &hf_rrc_tdd_109,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_97", HFILL }},
+ "T_tdd_101", HFILL }},
{ &hf_rrc_neighbourAndChannelIdentity,
{ "neighbourAndChannelIdentity", "rrc.neighbourAndChannelIdentity",
FT_NONE, BASE_NONE, NULL, 0,
@@ -148473,14 +158229,14 @@ void proto_register_rrc(void) {
{ "sfn-SFN-ObsTimeDifference2", "rrc.sfn_SFN_ObsTimeDifference2",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_111,
+ { &hf_rrc_modeSpecificInfo_115,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_111_vals), 0,
- "T_modeSpecificInfo_111", HFILL }},
- { &hf_rrc_fdd_154,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_115_vals), 0,
+ "T_modeSpecificInfo_115", HFILL }},
+ { &hf_rrc_fdd_158,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_148", HFILL }},
+ "T_fdd_152", HFILL }},
{ &hf_rrc_NeighbourList_item,
{ "Neighbour", "rrc.Neighbour",
FT_NONE, BASE_NONE, NULL, 0,
@@ -148517,30 +158273,42 @@ void proto_register_rrc(void) {
{ "cellInfo-LCR-r8", "rrc.cellInfo_LCR_r8",
FT_NONE, BASE_NONE, NULL, 0,
"CellInfo_LCR_r8_ext", HFILL }},
- { &hf_rrc_modeSpecificInfo_112,
+ { &hf_rrc_modeSpecificInfo_116,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_112_vals), 0,
- "T_modeSpecificInfo_112", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_116_vals), 0,
+ "T_modeSpecificInfo_116", HFILL }},
{ &hf_rrc_noInfo,
{ "noInfo", "rrc.noInfo",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd128_57,
+ { &hf_rrc_tdd128_59,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_55", HFILL }},
+ "T_tdd128_57", HFILL }},
{ &hf_rrc_cellInfo_02,
{ "cellInfo", "rrc.cellInfo",
FT_NONE, BASE_NONE, NULL, 0,
"CellInfo_r9", HFILL }},
- { &hf_rrc_modeSpecificInfo_113,
+ { &hf_rrc_modeSpecificInfo_117,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_113_vals), 0,
- "T_modeSpecificInfo_113", HFILL }},
- { &hf_rrc_tdd128_58,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_117_vals), 0,
+ "T_modeSpecificInfo_117", HFILL }},
+ { &hf_rrc_tdd128_60,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_56", HFILL }},
+ "T_tdd128_58", HFILL }},
+ { &hf_rrc_modeSpecificInfo_118,
+ { "modeSpecificInfo", "rrc.modeSpecificInfo",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_118_vals), 0,
+ "T_modeSpecificInfo_118", HFILL }},
+ { &hf_rrc_tdd128_61,
+ { "tdd128", "rrc.tdd128",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_tdd128_59", HFILL }},
+ { &hf_rrc_sNPLMonitorSetIndicator_TDD128,
+ { "sNPLMonitorSetIndicator-TDD128", "rrc.sNPLMonitorSetIndicator_TDD128",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_5", HFILL }},
{ &hf_rrc_NewInterFreqCellList_item,
{ "NewInterFreqCell", "rrc.NewInterFreqCell",
FT_NONE, BASE_NONE, NULL, 0,
@@ -148565,6 +158333,10 @@ void proto_register_rrc(void) {
{ "NewInterFreqCell-r9", "rrc.NewInterFreqCell_r9",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_NewInterFreqCellList_r10_item,
+ { "NewInterFreqCell-r10", "rrc.NewInterFreqCell_r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_rrc_cellInfo_03,
{ "cellInfo", "rrc.cellInfo",
FT_NONE, BASE_NONE, NULL, 0,
@@ -148681,6 +158453,14 @@ void proto_register_rrc(void) {
{ "intraFreqCellID", "rrc.intraFreqCellID",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_modeSpecificInfo_119,
+ { "modeSpecificInfo", "rrc.modeSpecificInfo",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_119_vals), 0,
+ "T_modeSpecificInfo_119", HFILL }},
+ { &hf_rrc_tdd128_62,
+ { "tdd128", "rrc.tdd128",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_tdd128_60", HFILL }},
{ &hf_rrc_intraFreqCellIDOnSecULFreq,
{ "intraFreqCellIDOnSecULFreq", "rrc.intraFreqCellIDOnSecULFreq",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -148697,6 +158477,10 @@ void proto_register_rrc(void) {
{ "NewIntraFreqCell-r9", "rrc.NewIntraFreqCell_r9",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_NewIntraFreqCellList_r10_item,
+ { "NewIntraFreqCell-r10", "rrc.NewIntraFreqCell_r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_rrc_NewIntraFreqCellList_LCR_v8a0ext_item,
{ "NewIntraFreqCell-LCR-v8a0ext", "rrc.NewIntraFreqCell_LCR_v8a0ext",
FT_NONE, BASE_NONE, NULL, 0,
@@ -148749,6 +158533,14 @@ void proto_register_rrc(void) {
{ "nonUsedFreqThreshold", "rrc.nonUsedFreqThreshold",
FT_INT32, BASE_DEC, NULL, 0,
"Threshold_r6", HFILL }},
+ { &hf_rrc_nonUsedFreqTriggeringConditionDetectedCells,
+ { "nonUsedFreqTriggeringConditionDetectedCells", "rrc.nonUsedFreqTriggeringConditionDetectedCells",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_nonUsedFreqTriggeringConditionDetectedCells_vals), 0,
+ NULL, HFILL }},
+ { &hf_rrc_nonUsedFreqTriggeringConditionDetectedCells_01,
+ { "nonUsedFreqTriggeringConditionDetectedCells", "rrc.nonUsedFreqTriggeringConditionDetectedCells",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_nonUsedFreqTriggeringConditionDetectedCells_01_vals), 0,
+ "T_nonUsedFreqTriggeringConditionDetectedCells_01", HFILL }},
{ &hf_rrc_NonUsedFreqParameterList_item,
{ "NonUsedFreqParameter", "rrc.NonUsedFreqParameter",
FT_NONE, BASE_NONE, NULL, 0,
@@ -148757,6 +158549,14 @@ void proto_register_rrc(void) {
{ "NonUsedFreqParameter-r6", "rrc.NonUsedFreqParameter_r6",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_NonUsedFreqParameterList_r10_item,
+ { "NonUsedFreqParameter-r10", "rrc.NonUsedFreqParameter_r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_NonUsedFreq2aParameterList_r10_item,
+ { "NonUsedFreq2aParameter-r10", "rrc.NonUsedFreq2aParameter_r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_rrc_NonUsedFreqWList_r6_item,
{ "W", "rrc.W",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -148865,10 +158665,6 @@ void proto_register_rrc(void) {
{ "PLMNsOfInterRATCellsList item", "rrc.PLMNsOfInterRATCellsList_item",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_ellipsoidPoint,
- { "ellipsoidPoint", "rrc.ellipsoidPoint",
- FT_NONE, BASE_NONE, NULL, 0,
- NULL, HFILL }},
{ &hf_rrc_ellipsoidPointUncertCircle,
{ "ellipsoidPointUncertCircle", "rrc.ellipsoidPointUncertCircle",
FT_NONE, BASE_NONE, NULL, 0,
@@ -148877,10 +158673,6 @@ void proto_register_rrc(void) {
{ "ellipsoidPointUncertEllipse", "rrc.ellipsoidPointUncertEllipse",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_ellipsoidPointAltitude,
- { "ellipsoidPointAltitude", "rrc.ellipsoidPointAltitude",
- FT_NONE, BASE_NONE, NULL, 0,
- NULL, HFILL }},
{ &hf_rrc_ellipsoidPointAltitudeEllipse,
{ "ellipsoidPointAltitudeEllipse", "rrc.ellipsoidPointAltitudeEllipse",
FT_NONE, BASE_NONE, NULL, 0,
@@ -148893,14 +158685,14 @@ void proto_register_rrc(void) {
{ "blerMeasurementResultsList", "rrc.blerMeasurementResultsList",
FT_UINT32, BASE_DEC, NULL, 0,
"BLER_MeasurementResultsList", HFILL }},
- { &hf_rrc_modeSpecificInfo_114,
+ { &hf_rrc_modeSpecificInfo_120,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_114_vals), 0,
- "T_modeSpecificInfo_114", HFILL }},
- { &hf_rrc_tdd_106,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_120_vals), 0,
+ "T_modeSpecificInfo_120", HFILL }},
+ { &hf_rrc_tdd_110,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_98", HFILL }},
+ "T_tdd_102", HFILL }},
{ &hf_rrc_sir_MeasurementResults,
{ "sir-MeasurementResults", "rrc.sir_MeasurementResults",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -148909,7 +158701,7 @@ void proto_register_rrc(void) {
{ "qualityReportingQuantity", "rrc.qualityReportingQuantity",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_reportCriteria_11,
+ { &hf_rrc_reportCriteria_12,
{ "reportCriteria", "rrc.reportCriteria",
FT_UINT32, BASE_DEC, VALS(rrc_QualityReportCriteria_vals), 0,
"QualityReportCriteria", HFILL }},
@@ -148917,7 +158709,7 @@ void proto_register_rrc(void) {
{ "qualityReportingCriteria", "rrc.qualityReportingCriteria",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_noReporting_01,
+ { &hf_rrc_noReporting_02,
{ "noReporting", "rrc.noReporting",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
@@ -148945,14 +158737,14 @@ void proto_register_rrc(void) {
{ "bler-dl-TransChIdList", "rrc.bler_dl_TransChIdList",
FT_UINT32, BASE_DEC, NULL, 0,
"BLER_TransChIdList", HFILL }},
- { &hf_rrc_modeSpecificInfo_115,
+ { &hf_rrc_modeSpecificInfo_121,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_115_vals), 0,
- "T_modeSpecificInfo_115", HFILL }},
- { &hf_rrc_tdd_107,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_121_vals), 0,
+ "T_modeSpecificInfo_121", HFILL }},
+ { &hf_rrc_tdd_111,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_99", HFILL }},
+ "T_tdd_103", HFILL }},
{ &hf_rrc_sir_TFCS_List,
{ "sir-TFCS-List", "rrc.sir_TFCS_List",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -149089,11 +158881,15 @@ void proto_register_rrc(void) {
{ "withinActSetAndOrMonitoredUsedFreqOrVirtualActSetAndOrMonitoredNonUsedFreq", "rrc.withinActSetAndOrMonitoredUsedFreqOrVirtualActSetAndOrMonitoredNonUsedFreq",
FT_UINT32, BASE_DEC, VALS(rrc_MaxNumberOfReportingCellsType2_vals), 0,
"MaxNumberOfReportingCellsType2", HFILL }},
- { &hf_rrc_reportCriteria_12,
+ { &hf_rrc_allVirtualActSetplusMonitoredSetplusDetectedSetNonUsedFreq,
+ { "allVirtualActSetplusMonitoredSetplusDetectedSetNonUsedFreq", "rrc.allVirtualActSetplusMonitoredSetplusDetectedSetNonUsedFreq",
+ FT_UINT32, BASE_DEC, VALS(rrc_MaxNumberOfReportingCellsType3_vals), 0,
+ "MaxNumberOfReportingCellsType3", HFILL }},
+ { &hf_rrc_reportCriteria_13,
{ "reportCriteria", "rrc.reportCriteria",
FT_UINT32, BASE_DEC, VALS(rrc_CellDCH_ReportCriteria_vals), 0,
"CellDCH_ReportCriteria", HFILL }},
- { &hf_rrc_reportCriteria_13,
+ { &hf_rrc_reportCriteria_14,
{ "reportCriteria", "rrc.reportCriteria",
FT_UINT32, BASE_DEC, VALS(rrc_CellDCH_ReportCriteria_LCR_r4_vals), 0,
"CellDCH_ReportCriteria_LCR_r4", HFILL }},
@@ -149125,6 +158921,10 @@ void proto_register_rrc(void) {
{ "rL-RemovalInformationList", "rrc.rL_RemovalInformationList",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_rSCP,
+ { "rSCP", "rrc.rSCP",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "INTEGER_M120_M25", HFILL }},
{ &hf_rrc_SatDataList_item,
{ "SatData", "rrc.SatData",
FT_NONE, BASE_NONE, NULL, 0,
@@ -149253,6 +159053,10 @@ void proto_register_rrc(void) {
{ "t240", "rrc.t240",
FT_NONE, BASE_NONE, NULL, 0,
"N_CR_T_CRMaxHyst", HFILL }},
+ { &hf_rrc_tce_Id_01,
+ { "tce-Id", "rrc.tce_Id",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_1", HFILL }},
{ &hf_rrc_temporaryOffset1,
{ "temporaryOffset1", "rrc.temporaryOffset1",
FT_UINT32, BASE_DEC, VALS(rrc_TemporaryOffset1_vals), 0,
@@ -149273,7 +159077,7 @@ void proto_register_rrc(void) {
{ "TimeslotInfo-LCR-r4", "rrc.TimeslotInfo_LCR_r4",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd384_43,
+ { &hf_rrc_tdd384_44,
{ "tdd384", "rrc.tdd384",
FT_UINT32, BASE_DEC, NULL, 0,
"SEQUENCE_SIZE_1_maxTS_OF_TimeslotInfo", HFILL }},
@@ -149281,7 +159085,7 @@ void proto_register_rrc(void) {
{ "TimeslotInfo", "rrc.TimeslotInfo",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd128_59,
+ { &hf_rrc_tdd128_63,
{ "tdd128", "rrc.tdd128",
FT_UINT32, BASE_DEC, NULL, 0,
"SEQUENCE_SIZE_1_maxTS_LCR_OF_TimeslotInfo_LCR_r4", HFILL }},
@@ -149301,13 +159105,21 @@ void proto_register_rrc(void) {
{ "timeslotISCP", "rrc.timeslotISCP",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_traceId,
+ { "traceId", "rrc.traceId",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_3", HFILL }},
+ { &hf_rrc_traceRecordingSession_01,
+ { "traceRecordingSession", "rrc.traceRecordingSession",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_2", HFILL }},
{ &hf_rrc_eventID_03,
{ "eventID", "rrc.eventID",
FT_UINT32, BASE_DEC, VALS(rrc_TrafficVolumeEventType_vals), 0,
"TrafficVolumeEventType", HFILL }},
{ &hf_rrc_reportingThreshold,
{ "reportingThreshold", "rrc.reportingThreshold",
- FT_UINT32, BASE_DEC, VALS(rrc_TrafficVolumeThreshold_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_TrafficVolumeThreshold_vals_ext, 0,
"TrafficVolumeThreshold", HFILL }},
{ &hf_rrc_pendingTimeAfterTrigger,
{ "pendingTimeAfterTrigger", "rrc.pendingTimeAfterTrigger",
@@ -149353,7 +159165,7 @@ void proto_register_rrc(void) {
{ "trafficVolumeReportingQuantity", "rrc.trafficVolumeReportingQuantity",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_dummy_48,
+ { &hf_rrc_dummy_52,
{ "dummy", "rrc.dummy",
FT_NONE, BASE_NONE, NULL, 0,
"TrafficVolumeReportingCriteria", HFILL }},
@@ -149363,11 +159175,11 @@ void proto_register_rrc(void) {
"TrafficVolumeReportCriteriaSysInfo", HFILL }},
{ &hf_rrc_rlc_BuffersPayload,
{ "rlc-BuffersPayload", "rrc.rlc_BuffersPayload",
- FT_UINT32, BASE_DEC, VALS(rrc_RLC_BuffersPayload_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_RLC_BuffersPayload_vals_ext, 0,
NULL, HFILL }},
{ &hf_rrc_averageRLC_BufferPayload_01,
{ "averageRLC-BufferPayload", "rrc.averageRLC_BufferPayload",
- FT_UINT32, BASE_DEC, VALS(rrc_AverageRLC_BufferPayload_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_AverageRLC_BufferPayload_vals_ext, 0,
NULL, HFILL }},
{ &hf_rrc_varianceOfRLC_BufferPayload_01,
{ "varianceOfRLC-BufferPayload", "rrc.varianceOfRLC_BufferPayload",
@@ -149377,7 +159189,7 @@ void proto_register_rrc(void) {
{ "TrafficVolumeMeasuredResults", "rrc.TrafficVolumeMeasuredResults",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_reportCriteria_14,
+ { &hf_rrc_reportCriteria_15,
{ "reportCriteria", "rrc.reportCriteria",
FT_UINT32, BASE_DEC, VALS(rrc_TrafficVolumeReportCriteria_vals), 0,
"TrafficVolumeReportCriteria", HFILL }},
@@ -149501,14 +159313,14 @@ void proto_register_rrc(void) {
{ "measurementQuantity", "rrc.measurementQuantity",
FT_UINT32, BASE_DEC, VALS(rrc_UE_MeasurementQuantity_vals), 0,
"UE_MeasurementQuantity", HFILL }},
- { &hf_rrc_modeSpecificInfo_116,
+ { &hf_rrc_modeSpecificInfo_122,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_116_vals), 0,
- "T_modeSpecificInfo_116", HFILL }},
- { &hf_rrc_fdd_155,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_122_vals), 0,
+ "T_modeSpecificInfo_122", HFILL }},
+ { &hf_rrc_fdd_159,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_149", HFILL }},
+ "T_fdd_153", HFILL }},
{ &hf_rrc_ue_TransmittedPowerFDD,
{ "ue-TransmittedPowerFDD", "rrc.ue_TransmittedPowerFDD",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -149517,10 +159329,10 @@ void proto_register_rrc(void) {
{ "ue-RX-TX-ReportEntryList", "rrc.ue_RX_TX_ReportEntryList",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd_108,
+ { &hf_rrc_tdd_112,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_100", HFILL }},
+ "T_tdd_104", HFILL }},
{ &hf_rrc_ue_TransmittedPowerTDD_List,
{ "ue-TransmittedPowerTDD-List", "rrc.ue_TransmittedPowerTDD_List",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -149533,10 +159345,10 @@ void proto_register_rrc(void) {
{ "t-ADVinfo", "rrc.t_ADVinfo",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_117,
+ { &hf_rrc_modeSpecificInfo_123,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_117_vals), 0,
- "T_modeSpecificInfo_117", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_123_vals), 0,
+ "T_modeSpecificInfo_123", HFILL }},
{ &hf_rrc_tdd384_768_03,
{ "tdd384-768", "rrc.tdd384_768",
FT_NONE, BASE_NONE, NULL, 0,
@@ -149545,10 +159357,10 @@ void proto_register_rrc(void) {
{ "appliedTA", "rrc.appliedTA",
FT_NONE, BASE_NONE, NULL, 0,
"EXT_UL_TimingAdvance", HFILL }},
- { &hf_rrc_tdd128_60,
+ { &hf_rrc_tdd128_64,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_57", HFILL }},
+ "T_tdd128_61", HFILL }},
{ &hf_rrc_t_ADVinfo_01,
{ "t-ADVinfo", "rrc.t_ADVinfo",
FT_NONE, BASE_NONE, NULL, 0,
@@ -149561,7 +159373,7 @@ void proto_register_rrc(void) {
{ "ue-InternalReportingQuantity", "rrc.ue_InternalReportingQuantity",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_reportCriteria_15,
+ { &hf_rrc_reportCriteria_16,
{ "reportCriteria", "rrc.reportCriteria",
FT_UINT32, BASE_DEC, VALS(rrc_UE_InternalReportCriteria_vals), 0,
"UE_InternalReportCriteria", HFILL }},
@@ -149585,50 +159397,50 @@ void proto_register_rrc(void) {
{ "ue-TransmittedPower", "rrc.ue_TransmittedPower",
FT_BOOLEAN, BASE_NONE, NULL, 0,
"BOOLEAN", HFILL }},
- { &hf_rrc_modeSpecificInfo_118,
+ { &hf_rrc_modeSpecificInfo_124,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_118_vals), 0,
- "T_modeSpecificInfo_118", HFILL }},
- { &hf_rrc_fdd_156,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_124_vals), 0,
+ "T_modeSpecificInfo_124", HFILL }},
+ { &hf_rrc_fdd_160,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_150", HFILL }},
+ "T_fdd_154", HFILL }},
{ &hf_rrc_ue_RX_TX_TimeDifference,
{ "ue-RX-TX-TimeDifference", "rrc.ue_RX_TX_TimeDifference",
FT_BOOLEAN, BASE_NONE, NULL, 0,
"BOOLEAN", HFILL }},
- { &hf_rrc_tdd_109,
+ { &hf_rrc_tdd_113,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_101", HFILL }},
+ "T_tdd_105", HFILL }},
{ &hf_rrc_appliedTA_02,
{ "appliedTA", "rrc.appliedTA",
FT_BOOLEAN, BASE_NONE, NULL, 0,
"BOOLEAN", HFILL }},
- { &hf_rrc_modeSpecificInfo_119,
+ { &hf_rrc_modeSpecificInfo_125,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_119_vals), 0,
- "T_modeSpecificInfo_119", HFILL }},
- { &hf_rrc_fdd_157,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_125_vals), 0,
+ "T_modeSpecificInfo_125", HFILL }},
+ { &hf_rrc_fdd_161,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_151", HFILL }},
- { &hf_rrc_tdd_110,
+ "T_fdd_155", HFILL }},
+ { &hf_rrc_tdd_114,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_102", HFILL }},
- { &hf_rrc_tddOption_25,
+ "T_tdd_106", HFILL }},
+ { &hf_rrc_tddOption_26,
{ "tddOption", "rrc.tddOption",
- FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_25_vals), 0,
- "T_tddOption_25", HFILL }},
- { &hf_rrc_tdd384_44,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_tddOption_26_vals), 0,
+ "T_tddOption_26", HFILL }},
+ { &hf_rrc_tdd384_45,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_39", HFILL }},
- { &hf_rrc_tdd128_61,
+ "T_tdd384_40", HFILL }},
+ { &hf_rrc_tdd128_65,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_58", HFILL }},
+ "T_tdd128_62", HFILL }},
{ &hf_rrc_t_ADVinfo_02,
{ "t-ADVinfo", "rrc.t_ADVinfo",
FT_BOOLEAN, BASE_NONE, NULL, 0,
@@ -149781,6 +159593,10 @@ void proto_register_rrc(void) {
{ "alm-ecefSBASAlmanac", "rrc.alm_ecefSBASAlmanac",
FT_NONE, BASE_NONE, NULL, 0,
"ALM_ECEFsbasAlmanacSet", HFILL }},
+ { &hf_rrc_complete_Almanac_Provided,
+ { "complete-Almanac-Provided", "rrc.complete_Almanac_Provided",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
{ &hf_rrc_ganssReferenceTime,
{ "ganssReferenceTime", "rrc.ganssReferenceTime",
FT_BOOLEAN, BASE_NONE, NULL, 0,
@@ -149865,6 +159681,22 @@ void proto_register_rrc(void) {
{ "ganssGenericDataList", "rrc.ganssGenericDataList",
FT_UINT32, BASE_DEC, NULL, 0,
"GANSSGenericDataList_v920ext", HFILL }},
+ { &hf_rrc_ue_positioning_GANSS_ReferenceTime_01,
+ { "ue-positioning-GANSS-ReferenceTime", "rrc.ue_positioning_GANSS_ReferenceTime",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UE_Positioning_GANSS_ReferenceTime_va40ext", HFILL }},
+ { &hf_rrc_ganssGenericDataList_05,
+ { "ganssGenericDataList", "rrc.ganssGenericDataList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GANSSGenericDataList_va40ext", HFILL }},
+ { &hf_rrc_ue_positioning_GANSS_ReferenceTime_02,
+ { "ue-positioning-GANSS-ReferenceTime", "rrc.ue_positioning_GANSS_ReferenceTime",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UE_Positioning_GANSS_ReferenceTime_r10", HFILL }},
+ { &hf_rrc_ganssGenericDataList_06,
+ { "ganssGenericDataList", "rrc.ganssGenericDataList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GANSSGenericDataList_r10", HFILL }},
{ &hf_rrc_ganssID1,
{ "ganssID1", "rrc.ganssID1",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -150009,6 +159841,14 @@ void proto_register_rrc(void) {
{ "satelliteInformationList", "rrc.satelliteInformationList",
FT_UINT32, BASE_DEC, NULL, 0,
"GANSSSatelliteInformationList", HFILL }},
+ { &hf_rrc_satelliteInformationList_01,
+ { "satelliteInformationList", "rrc.satelliteInformationList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GANSSSatelliteInformationList_va40ext", HFILL }},
+ { &hf_rrc_satelliteInformationList_02,
+ { "satelliteInformationList", "rrc.satelliteInformationList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GANSSSatelliteInformationList_r10", HFILL }},
{ &hf_rrc_ganssDay,
{ "ganssDay", "rrc.ganssDay",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -150033,18 +159873,18 @@ void proto_register_rrc(void) {
{ "mode", "rrc.mode",
FT_UINT32, BASE_DEC, VALS(rrc_T_mode_vals), 0,
NULL, HFILL }},
- { &hf_rrc_fdd_158,
+ { &hf_rrc_fdd_162,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_152", HFILL }},
+ "T_fdd_156", HFILL }},
{ &hf_rrc_primary_CPICH_Info,
{ "primary-CPICH-Info", "rrc.primary_CPICH_Info",
FT_NONE, BASE_NONE, NULL, 0,
"PrimaryCPICH_Info", HFILL }},
- { &hf_rrc_tdd_111,
+ { &hf_rrc_tdd_115,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_103", HFILL }},
+ "T_tdd_107", HFILL }},
{ &hf_rrc_cellParameters,
{ "cellParameters", "rrc.cellParameters",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -150057,6 +159897,26 @@ void proto_register_rrc(void) {
{ "tutran-ganss-driftRate", "rrc.tutran_ganss_driftRate",
FT_UINT32, BASE_DEC, VALS(rrc_Tutran_Ganss_DriftRate_vals), 0,
NULL, HFILL }},
+ { &hf_rrc_ganss_Day_Cycle_Number,
+ { "ganss-Day-Cycle-Number", "rrc.ganss_Day_Cycle_Number",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_7", HFILL }},
+ { &hf_rrc_utran_ganssreferenceTime_01,
+ { "utran-ganssreferenceTime", "rrc.utran_ganssreferenceTime",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_utran_ganssreferenceTime_01", HFILL }},
+ { &hf_rrc_mode_01,
+ { "mode", "rrc.mode",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_mode_01_vals), 0,
+ "T_mode_01", HFILL }},
+ { &hf_rrc_fdd_163,
+ { "fdd", "rrc.fdd",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_fdd_157", HFILL }},
+ { &hf_rrc_tdd_116,
+ { "tdd", "rrc.tdd",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_tdd_108", HFILL }},
{ &hf_rrc_ganss_timeModelreferenceTime,
{ "ganss-timeModelreferenceTime", "rrc.ganss_timeModelreferenceTime",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -150081,10 +159941,22 @@ void proto_register_rrc(void) {
{ "ganss-wk-number", "rrc.ganss_wk_number",
FT_UINT32, BASE_DEC, NULL, 0,
"INTEGER_0_8191", HFILL }},
+ { &hf_rrc_deltaT,
+ { "deltaT", "rrc.deltaT",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "INTEGER_M128_127", HFILL }},
+ { &hf_rrc_gnss_to_id_01,
+ { "gnss-to-id", "rrc.gnss_to_id",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_gnss_to_id_01_vals), 0,
+ "T_gnss_to_id_01", HFILL }},
{ &hf_rrc_UE_Positioning_GANSS_TimeModels_item,
{ "UE-Positioning-GANSS-TimeModel", "rrc.UE_Positioning_GANSS_TimeModel",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_UE_Positioning_GANSS_TimeModels_va40ext_item,
+ { "UE-Positioning-GANSS-TimeModel-va40ext", "rrc.UE_Positioning_GANSS_TimeModel_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_rrc_a_one_utc,
{ "a-one-utc", "rrc.a_one_utc",
FT_BYTES, BASE_NONE, NULL, 0,
@@ -150125,7 +159997,7 @@ void proto_register_rrc(void) {
{ "utran-GPSReferenceTime", "rrc.utran_GPSReferenceTime",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_satelliteInformationList_01,
+ { &hf_rrc_satelliteInformationList_03,
{ "satelliteInformationList", "rrc.satelliteInformationList",
FT_UINT32, BASE_DEC, NULL, 0,
"AcquisitionSatInfoList", HFILL }},
@@ -150133,6 +160005,14 @@ void proto_register_rrc(void) {
{ "ue-Positioning-GPS-ReferenceTimeUncertainty", "rrc.ue_Positioning_GPS_ReferenceTimeUncertainty",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_satelliteInformationList_04,
+ { "satelliteInformationList", "rrc.satelliteInformationList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AcquisitionSatInfoList_va40ext", HFILL }},
+ { &hf_rrc_satelliteInformationList_05,
+ { "satelliteInformationList", "rrc.satelliteInformationList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AcquisitionSatInfoList_r10", HFILL }},
{ &hf_rrc_almanacRequest,
{ "almanacRequest", "rrc.almanacRequest",
FT_BOOLEAN, BASE_NONE, NULL, 0,
@@ -150221,7 +160101,7 @@ void proto_register_rrc(void) {
{ "ue-positioning-GPS-Real-timeIntegrity", "rrc.ue_positioning_GPS_Real_timeIntegrity",
FT_UINT32, BASE_DEC, NULL, 0,
"BadSatList", HFILL }},
- { &hf_rrc_dummy_49,
+ { &hf_rrc_dummy_53,
{ "dummy", "rrc.dummy",
FT_NONE, BASE_NONE, NULL, 0,
"UE_Positioning_GPS_ReferenceCellInfo", HFILL }},
@@ -150249,6 +160129,30 @@ void proto_register_rrc(void) {
{ "ue-positioning-GPS-DGPS-Corrections", "rrc.ue_positioning_GPS_DGPS_Corrections",
FT_NONE, BASE_NONE, NULL, 0,
"UE_Positioning_GPS_DGPS_Corrections_v920ext", HFILL }},
+ { &hf_rrc_ue_positioning_GPS_ReferenceTime_03,
+ { "ue-positioning-GPS-ReferenceTime", "rrc.ue_positioning_GPS_ReferenceTime",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UE_Positioning_GPS_ReferenceTime_va40ext", HFILL }},
+ { &hf_rrc_ue_positioning_GPS_Almanac_01,
+ { "ue-positioning-GPS-Almanac", "rrc.ue_positioning_GPS_Almanac",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UE_Positioning_GPS_Almanac_va40ext", HFILL }},
+ { &hf_rrc_ue_positioning_GPS_AcquisitionAssistance_03,
+ { "ue-positioning-GPS-AcquisitionAssistance", "rrc.ue_positioning_GPS_AcquisitionAssistance",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UE_Positioning_GPS_AcquisitionAssistance_va40ext", HFILL }},
+ { &hf_rrc_ue_positioning_GPS_ReferenceTime_04,
+ { "ue-positioning-GPS-ReferenceTime", "rrc.ue_positioning_GPS_ReferenceTime",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UE_Positioning_GPS_ReferenceTime_r10", HFILL }},
+ { &hf_rrc_ue_positioning_GPS_Almanac_02,
+ { "ue-positioning-GPS-Almanac", "rrc.ue_positioning_GPS_Almanac",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UE_Positioning_GPS_Almanac_r10", HFILL }},
+ { &hf_rrc_ue_positioning_GPS_AcquisitionAssistance_04,
+ { "ue-positioning-GPS-AcquisitionAssistance", "rrc.ue_positioning_GPS_AcquisitionAssistance",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UE_Positioning_GPS_AcquisitionAssistance_r10", HFILL }},
{ &hf_rrc_gps_TOW,
{ "gps-TOW", "rrc.gps_TOW",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -150337,22 +160241,22 @@ void proto_register_rrc(void) {
{ "satDataList", "rrc.satDataList",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_120,
+ { &hf_rrc_modeSpecificInfo_126,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_120_vals), 0,
- "T_modeSpecificInfo_120", HFILL }},
- { &hf_rrc_fdd_159,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_126_vals), 0,
+ "T_modeSpecificInfo_126", HFILL }},
+ { &hf_rrc_fdd_164,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_153", HFILL }},
+ "T_fdd_158", HFILL }},
{ &hf_rrc_referenceIdentity,
{ "referenceIdentity", "rrc.referenceIdentity",
FT_NONE, BASE_NONE, NULL, 0,
"PrimaryCPICH_Info", HFILL }},
- { &hf_rrc_tdd_112,
+ { &hf_rrc_tdd_117,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_104", HFILL }},
+ "T_tdd_109", HFILL }},
{ &hf_rrc_referenceIdentity_01,
{ "referenceIdentity", "rrc.referenceIdentity",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -150373,6 +160277,10 @@ void proto_register_rrc(void) {
{ "gps-TOW-AssistList", "rrc.gps_TOW_AssistList",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_gps_Week_Cycle_Number,
+ { "gps-Week-Cycle-Number", "rrc.gps_Week_Cycle_Number",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_7", HFILL }},
{ &hf_rrc_a1,
{ "a1", "rrc.a1",
FT_BYTES, BASE_NONE, NULL, 0,
@@ -150425,18 +160333,18 @@ void proto_register_rrc(void) {
{ "burstModeParameters", "rrc.burstModeParameters",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_121,
+ { &hf_rrc_modeSpecificInfo_127,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_121_vals), 0,
- "T_modeSpecificInfo_121", HFILL }},
- { &hf_rrc_fdd_160,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_127_vals), 0,
+ "T_modeSpecificInfo_127", HFILL }},
+ { &hf_rrc_fdd_165,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_154", HFILL }},
- { &hf_rrc_tdd_113,
+ "T_fdd_159", HFILL }},
+ { &hf_rrc_tdd_118,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_105", HFILL }},
+ "T_tdd_110", HFILL }},
{ &hf_rrc_ip_Spacing_TDD,
{ "ip-Spacing-TDD", "rrc.ip_Spacing_TDD",
FT_UINT32, BASE_DEC, VALS(rrc_IP_Spacing_TDD_vals), 0,
@@ -150505,7 +160413,7 @@ void proto_register_rrc(void) {
{ "ue-positioning-ReportingQuantity", "rrc.ue_positioning_ReportingQuantity",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_reportCriteria_16,
+ { &hf_rrc_reportCriteria_17,
{ "reportCriteria", "rrc.reportCriteria",
FT_UINT32, BASE_DEC, VALS(rrc_UE_Positioning_ReportCriteria_vals), 0,
"UE_Positioning_ReportCriteria", HFILL }},
@@ -150529,7 +160437,7 @@ void proto_register_rrc(void) {
{ "ue-positioning-ReportingQuantity", "rrc.ue_positioning_ReportingQuantity",
FT_NONE, BASE_NONE, NULL, 0,
"UE_Positioning_ReportingQuantity_r7", HFILL }},
- { &hf_rrc_reportCriteria_17,
+ { &hf_rrc_reportCriteria_18,
{ "reportCriteria", "rrc.reportCriteria",
FT_UINT32, BASE_DEC, VALS(rrc_UE_Positioning_ReportCriteria_r7_vals), 0,
"UE_Positioning_ReportCriteria_r7", HFILL }},
@@ -150557,6 +160465,14 @@ void proto_register_rrc(void) {
{ "ue-positioning-GANSS-AssistanceData", "rrc.ue_positioning_GANSS_AssistanceData",
FT_NONE, BASE_NONE, NULL, 0,
"UE_Positioning_GANSS_AssistanceData_r9", HFILL }},
+ { &hf_rrc_ue_positioning_GPS_AssistanceData_03,
+ { "ue-positioning-GPS-AssistanceData", "rrc.ue_positioning_GPS_AssistanceData",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UE_Positioning_GPS_AssistanceData_r10", HFILL }},
+ { &hf_rrc_ue_positioning_GANSS_AssistanceData_03,
+ { "ue-positioning-GANSS-AssistanceData", "rrc.ue_positioning_GANSS_AssistanceData",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UE_Positioning_GANSS_AssistanceData_r10", HFILL }},
{ &hf_rrc_event7a,
{ "event7a", "rrc.event7a",
FT_NONE, BASE_NONE, NULL, 0,
@@ -150645,14 +160561,14 @@ void proto_register_rrc(void) {
{ "neighbourList", "rrc.neighbourList",
FT_UINT32, BASE_DEC, NULL, 0,
"NeighbourList_TDD_r7", HFILL }},
- { &hf_rrc_modeSpecificInfo_122,
+ { &hf_rrc_modeSpecificInfo_128,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_122_vals), 0,
- "T_modeSpecificInfo_122", HFILL }},
- { &hf_rrc_fdd_161,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_128_vals), 0,
+ "T_modeSpecificInfo_128", HFILL }},
+ { &hf_rrc_fdd_166,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_155", HFILL }},
+ "T_fdd_160", HFILL }},
{ &hf_rrc_referenceCellIDentity,
{ "referenceCellIDentity", "rrc.referenceCellIDentity",
FT_NONE, BASE_NONE, NULL, 0,
@@ -150661,10 +160577,10 @@ void proto_register_rrc(void) {
{ "ue-RX-TX-TimeDifferenceType2Info", "rrc.ue_RX_TX_TimeDifferenceType2Info",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd_114,
+ { &hf_rrc_tdd_119,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_106", HFILL }},
+ "T_tdd_111", HFILL }},
{ &hf_rrc_referenceCellIdentity,
{ "referenceCellIdentity", "rrc.referenceCellIdentity",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -150677,18 +160593,18 @@ void proto_register_rrc(void) {
{ "neighbourList-v390ext", "rrc.neighbourList_v390ext",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_123,
+ { &hf_rrc_modeSpecificInfo_129,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_123_vals), 0,
- "T_modeSpecificInfo_123", HFILL }},
- { &hf_rrc_fdd_162,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_129_vals), 0,
+ "T_modeSpecificInfo_129", HFILL }},
+ { &hf_rrc_fdd_167,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_156", HFILL }},
- { &hf_rrc_tdd_115,
+ "T_fdd_161", HFILL }},
+ { &hf_rrc_tdd_120,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_107", HFILL }},
+ "T_tdd_112", HFILL }},
{ &hf_rrc_cellAndChannelIdentity,
{ "cellAndChannelIdentity", "rrc.cellAndChannelIdentity",
FT_NONE, BASE_NONE, NULL, 0,
@@ -150703,7 +160619,7 @@ void proto_register_rrc(void) {
"SFN_SFN_RelTimeDifference1", HFILL }},
{ &hf_rrc_sfn_SFN_Drift,
{ "sfn-SFN-Drift", "rrc.sfn_SFN_Drift",
- FT_UINT32, BASE_DEC, VALS(rrc_SFN_SFN_Drift_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_SFN_SFN_Drift_vals_ext, 0,
NULL, HFILL }},
{ &hf_rrc_searchWindowSize,
{ "searchWindowSize", "rrc.searchWindowSize",
@@ -150721,18 +160637,18 @@ void proto_register_rrc(void) {
{ "ueAssisted", "rrc.ueAssisted",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_124,
+ { &hf_rrc_modeSpecificInfo_130,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_124_vals), 0,
- "T_modeSpecificInfo_124", HFILL }},
- { &hf_rrc_fdd_163,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_130_vals), 0,
+ "T_modeSpecificInfo_130", HFILL }},
+ { &hf_rrc_fdd_168,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_157", HFILL }},
- { &hf_rrc_tdd_116,
+ "T_fdd_162", HFILL }},
+ { &hf_rrc_tdd_121,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_108", HFILL }},
+ "T_tdd_113", HFILL }},
{ &hf_rrc_ue_positioning_IPDL_Paremeters_01,
{ "ue-positioning-IPDL-Paremeters", "rrc.ue_positioning_IPDL_Paremeters",
FT_NONE, BASE_NONE, NULL, 0,
@@ -150769,34 +160685,34 @@ void proto_register_rrc(void) {
{ "ueAssisted", "rrc.ueAssisted",
FT_NONE, BASE_NONE, NULL, 0,
"T_ueAssisted_01", HFILL }},
- { &hf_rrc_modeSpecificInfo_125,
+ { &hf_rrc_modeSpecificInfo_131,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_125_vals), 0,
- "T_modeSpecificInfo_125", HFILL }},
- { &hf_rrc_fdd_164,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_131_vals), 0,
+ "T_modeSpecificInfo_131", HFILL }},
+ { &hf_rrc_fdd_169,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_158", HFILL }},
- { &hf_rrc_tdd_117,
+ "T_fdd_163", HFILL }},
+ { &hf_rrc_tdd_122,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_109", HFILL }},
+ "T_tdd_114", HFILL }},
{ &hf_rrc_roundTripTimeExtension,
{ "roundTripTimeExtension", "rrc.roundTripTimeExtension",
FT_UINT32, BASE_DEC, NULL, 0,
"INTEGER_0_70274", HFILL }},
- { &hf_rrc_modeSpecificInfo_126,
+ { &hf_rrc_modeSpecificInfo_132,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_126_vals), 0,
- "T_modeSpecificInfo_126", HFILL }},
- { &hf_rrc_fdd_165,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_132_vals), 0,
+ "T_modeSpecificInfo_132", HFILL }},
+ { &hf_rrc_fdd_170,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_159", HFILL }},
- { &hf_rrc_tdd_118,
+ "T_fdd_164", HFILL }},
+ { &hf_rrc_tdd_123,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_110", HFILL }},
+ "T_tdd_115", HFILL }},
{ &hf_rrc_positioningMode_02,
{ "positioningMode", "rrc.positioningMode",
FT_UINT32, BASE_DEC, VALS(rrc_T_positioningMode_02_vals), 0,
@@ -150841,18 +160757,18 @@ void proto_register_rrc(void) {
{ "stdOfOTDOA-Measurements", "rrc.stdOfOTDOA_Measurements",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING_SIZE_5", HFILL }},
- { &hf_rrc_modeSpecificInfo_127,
+ { &hf_rrc_modeSpecificInfo_133,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_127_vals), 0,
- "T_modeSpecificInfo_127", HFILL }},
- { &hf_rrc_fdd_166,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_133_vals), 0,
+ "T_modeSpecificInfo_133", HFILL }},
+ { &hf_rrc_fdd_171,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_160", HFILL }},
- { &hf_rrc_tdd_119,
+ "T_fdd_165", HFILL }},
+ { &hf_rrc_tdd_124,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_111", HFILL }},
+ "T_tdd_116", HFILL }},
{ &hf_rrc_positioningMode_03,
{ "positioningMode", "rrc.positioningMode",
FT_UINT32, BASE_DEC, VALS(rrc_T_positioningMode_03_vals), 0,
@@ -150865,18 +160781,18 @@ void proto_register_rrc(void) {
{ "ueAssisted", "rrc.ueAssisted",
FT_NONE, BASE_NONE, NULL, 0,
"T_ueAssisted_03", HFILL }},
- { &hf_rrc_modeSpecificInfo_128,
+ { &hf_rrc_modeSpecificInfo_134,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_128_vals), 0,
- "T_modeSpecificInfo_128", HFILL }},
- { &hf_rrc_fdd_167,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_134_vals), 0,
+ "T_modeSpecificInfo_134", HFILL }},
+ { &hf_rrc_fdd_172,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_161", HFILL }},
- { &hf_rrc_tdd_120,
+ "T_fdd_166", HFILL }},
+ { &hf_rrc_tdd_125,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_112", HFILL }},
+ "T_tdd_117", HFILL }},
{ &hf_rrc_positioningMode_04,
{ "positioningMode", "rrc.positioningMode",
FT_UINT32, BASE_DEC, VALS(rrc_T_positioningMode_04_vals), 0,
@@ -150893,30 +160809,30 @@ void proto_register_rrc(void) {
{ "ueAssisted", "rrc.ueAssisted",
FT_NONE, BASE_NONE, NULL, 0,
"T_ueAssisted_04", HFILL }},
- { &hf_rrc_modeSpecificInfo_129,
+ { &hf_rrc_modeSpecificInfo_135,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_129_vals), 0,
- "T_modeSpecificInfo_129", HFILL }},
- { &hf_rrc_fdd_168,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_135_vals), 0,
+ "T_modeSpecificInfo_135", HFILL }},
+ { &hf_rrc_fdd_173,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_162", HFILL }},
- { &hf_rrc_tdd_121,
+ "T_fdd_167", HFILL }},
+ { &hf_rrc_tdd_126,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_113", HFILL }},
- { &hf_rrc_modeSpecificInfo_130,
+ "T_tdd_118", HFILL }},
+ { &hf_rrc_modeSpecificInfo_136,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_130_vals), 0,
- "T_modeSpecificInfo_130", HFILL }},
- { &hf_rrc_fdd_169,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_136_vals), 0,
+ "T_modeSpecificInfo_136", HFILL }},
+ { &hf_rrc_fdd_174,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_163", HFILL }},
- { &hf_rrc_tdd_122,
+ "T_fdd_168", HFILL }},
+ { &hf_rrc_tdd_127,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_114", HFILL }},
+ "T_tdd_119", HFILL }},
{ &hf_rrc_positioningMode_05,
{ "positioningMode", "rrc.positioningMode",
FT_UINT32, BASE_DEC, VALS(rrc_T_positioningMode_05_vals), 0,
@@ -150937,18 +160853,18 @@ void proto_register_rrc(void) {
{ "cell-Timing", "rrc.cell_Timing",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_131,
+ { &hf_rrc_modeSpecificInfo_137,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_131_vals), 0,
- "T_modeSpecificInfo_131", HFILL }},
- { &hf_rrc_fdd_170,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_137_vals), 0,
+ "T_modeSpecificInfo_137", HFILL }},
+ { &hf_rrc_fdd_175,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_164", HFILL }},
- { &hf_rrc_tdd_123,
+ "T_fdd_169", HFILL }},
+ { &hf_rrc_tdd_128,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_115", HFILL }},
+ "T_tdd_120", HFILL }},
{ &hf_rrc_positionEstimate,
{ "positionEstimate", "rrc.positionEstimate",
FT_UINT32, BASE_DEC, VALS(rrc_PositionEstimate_vals), 0,
@@ -151149,18 +161065,18 @@ void proto_register_rrc(void) {
{ "gANSS-TimeUncertainty", "rrc.gANSS_TimeUncertainty",
FT_UINT32, BASE_DEC, NULL, 0,
"INTEGER_0_127", HFILL }},
- { &hf_rrc_mode_01,
+ { &hf_rrc_mode_02,
{ "mode", "rrc.mode",
- FT_UINT32, BASE_DEC, VALS(rrc_T_mode_01_vals), 0,
- "T_mode_01", HFILL }},
- { &hf_rrc_fdd_171,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_mode_02_vals), 0,
+ "T_mode_02", HFILL }},
+ { &hf_rrc_fdd_176,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_165", HFILL }},
- { &hf_rrc_tdd_124,
+ "T_fdd_170", HFILL }},
+ { &hf_rrc_tdd_129,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_116", HFILL }},
+ "T_tdd_121", HFILL }},
{ &hf_rrc_UTRAN_FDD_FrequencyList_item,
{ "UTRAN-FDD-Frequency", "rrc.UTRAN_FDD_Frequency",
FT_NONE, BASE_NONE, NULL, 0,
@@ -151193,18 +161109,18 @@ void proto_register_rrc(void) {
{ "ls-part", "rrc.ls_part",
FT_UINT32, BASE_DEC, NULL, 0,
"INTEGER_0_4294967295", HFILL }},
- { &hf_rrc_modeSpecificInfo_132,
+ { &hf_rrc_modeSpecificInfo_138,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_132_vals), 0,
- "T_modeSpecificInfo_132", HFILL }},
- { &hf_rrc_fdd_172,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_138_vals), 0,
+ "T_modeSpecificInfo_138", HFILL }},
+ { &hf_rrc_fdd_177,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_166", HFILL }},
- { &hf_rrc_tdd_125,
+ "T_fdd_171", HFILL }},
+ { &hf_rrc_tdd_130,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_117", HFILL }},
+ "T_tdd_122", HFILL }},
{ &hf_rrc_ue_GPSTimingOfCell,
{ "ue-GPSTimingOfCell", "rrc.ue_GPSTimingOfCell",
FT_NONE, BASE_NONE, NULL, 0,
@@ -151213,18 +161129,18 @@ void proto_register_rrc(void) {
{ "ms-part", "rrc.ms_part",
FT_UINT32, BASE_DEC, NULL, 0,
"INTEGER_0_16383", HFILL }},
- { &hf_rrc_modeSpecificInfo_133,
+ { &hf_rrc_modeSpecificInfo_139,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_133_vals), 0,
- "T_modeSpecificInfo_133", HFILL }},
- { &hf_rrc_fdd_173,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_139_vals), 0,
+ "T_modeSpecificInfo_139", HFILL }},
+ { &hf_rrc_fdd_178,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_167", HFILL }},
- { &hf_rrc_tdd_126,
+ "T_fdd_172", HFILL }},
+ { &hf_rrc_tdd_131,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_118", HFILL }},
+ "T_tdd_123", HFILL }},
{ &hf_rrc_utra_ServingCell,
{ "utra-ServingCell", "rrc.utra_ServingCell",
FT_NONE, BASE_NONE, NULL, 0,
@@ -151333,22 +161249,22 @@ void proto_register_rrc(void) {
{ "DataVolumePerRB", "rrc.DataVolumePerRB",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_134,
+ { &hf_rrc_modeSpecificInfo_140,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_134_vals), 0,
- "T_modeSpecificInfo_134", HFILL }},
- { &hf_rrc_fdd_174,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_140_vals), 0,
+ "T_modeSpecificInfo_140", HFILL }},
+ { &hf_rrc_fdd_179,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_168", HFILL }},
+ "T_fdd_173", HFILL }},
{ &hf_rrc_intraFreqMeasQuantity_FDD_01,
{ "intraFreqMeasQuantity-FDD", "rrc.intraFreqMeasQuantity_FDD",
FT_UINT32, BASE_DEC, VALS(rrc_IntraFreqMeasQuantity_FDD_sib3_vals), 0,
"IntraFreqMeasQuantity_FDD_sib3", HFILL }},
- { &hf_rrc_tdd_127,
+ { &hf_rrc_tdd_132,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_119", HFILL }},
+ "T_tdd_124", HFILL }},
{ &hf_rrc_intraFreqMeasQuantity_TDDList_01,
{ "intraFreqMeasQuantity-TDDList", "rrc.intraFreqMeasQuantity_TDDList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -151471,7 +161387,7 @@ void proto_register_rrc(void) {
NULL, HFILL }},
{ &hf_rrc_receivedMessageType,
{ "receivedMessageType", "rrc.receivedMessageType",
- FT_UINT32, BASE_DEC, VALS(rrc_ReceivedMessageType_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_ReceivedMessageType_vals_ext, 0,
NULL, HFILL }},
{ &hf_rrc_configurationUnacceptable,
{ "configurationUnacceptable", "rrc.configurationUnacceptable",
@@ -151537,14 +161453,6 @@ void proto_register_rrc(void) {
{ "interRAT-ProtocolError", "rrc.interRAT_ProtocolError",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_spare11,
- { "spare11", "rrc.spare11",
- FT_NONE, BASE_NONE, NULL, 0,
- NULL, HFILL }},
- { &hf_rrc_spare10,
- { "spare10", "rrc.spare10",
- FT_NONE, BASE_NONE, NULL, 0,
- NULL, HFILL }},
{ &hf_rrc_plmn_Type,
{ "plmn-Type", "rrc.plmn_Type",
FT_UINT32, BASE_DEC, VALS(rrc_PLMN_Type_vals), 0,
@@ -151577,10 +161485,10 @@ void proto_register_rrc(void) {
{ "masterInformationBlock-v860ext", "rrc.masterInformationBlock_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
"MasterInformationBlock_v860ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_167,
+ { &hf_rrc_nonCriticalExtensions_181,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_167", HFILL }},
+ "T_nonCriticalExtensions_181", HFILL }},
{ &hf_rrc_multiplePLMN_List,
{ "multiplePLMN-List", "rrc.multiplePLMN_List",
FT_NONE, BASE_NONE, NULL, 0,
@@ -151703,7 +161611,7 @@ void proto_register_rrc(void) {
"SibOFF_List", HFILL }},
{ &hf_rrc_sib_Type_01,
{ "sib-Type", "rrc.sib_Type",
- FT_UINT32, BASE_DEC, VALS(rrc_SIB_TypeAndTag_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_SIB_TypeAndTag_vals_ext, 0,
"SIB_TypeAndTag", HFILL }},
{ &hf_rrc_scheduling_01,
{ "scheduling", "rrc.scheduling",
@@ -151711,7 +161619,7 @@ void proto_register_rrc(void) {
"SchedulingInformation", HFILL }},
{ &hf_rrc_sibSb_Type,
{ "sibSb-Type", "rrc.sibSb_Type",
- FT_UINT32, BASE_DEC, VALS(rrc_SIBSb_TypeAndTag_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_SIBSb_TypeAndTag_vals_ext, 0,
"SIBSb_TypeAndTag", HFILL }},
{ &hf_rrc_sibOccurIdentity,
{ "sibOccurIdentity", "rrc.sibOccurIdentity",
@@ -151761,7 +161669,7 @@ void proto_register_rrc(void) {
{ "sysInfoType7", "rrc.sysInfoType7",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_dummy_50,
+ { &hf_rrc_dummy_54,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, NULL, 0,
"CellValueTag", HFILL }},
@@ -151901,6 +161809,10 @@ void proto_register_rrc(void) {
{ "SibOFF", "rrc.SibOFF",
FT_UINT32, BASE_DEC, VALS(rrc_SibOFF_vals), 0,
NULL, HFILL }},
+ { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo_03,
+ { "cn-CommonGSM-MAP-NAS-SysInfo", "rrc.cn_CommonGSM_MAP_NAS_SysInfo",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "T_cn_CommonGSM_MAP_NAS_SysInfo_03", HFILL }},
{ &hf_rrc_cn_DomainSysInfoList,
{ "cn-DomainSysInfoList", "rrc.cn_DomainSysInfoList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -151925,10 +161837,10 @@ void proto_register_rrc(void) {
{ "sysInfoType1-v860ext", "rrc.sysInfoType1_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
"SysInfoType1_v860ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_168,
+ { &hf_rrc_nonCriticalExtensions_182,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_168", HFILL }},
+ "T_nonCriticalExtensions_182", HFILL }},
{ &hf_rrc_ue_IdleTimersAndConstants_v3a0ext,
{ "ue-IdleTimersAndConstants-v3a0ext", "rrc.ue_IdleTimersAndConstants_v3a0ext",
FT_NONE, BASE_NONE, NULL, 0,
@@ -151937,10 +161849,10 @@ void proto_register_rrc(void) {
{ "ura-IdentityList", "rrc.ura_IdentityList",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_nonCriticalExtensions_169,
+ { &hf_rrc_nonCriticalExtensions_183,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_169", HFILL }},
+ "T_nonCriticalExtensions_183", HFILL }},
{ &hf_rrc_sib4indicator,
{ "sib4indicator", "rrc.sib4indicator",
FT_BOOLEAN, BASE_NONE, NULL, 0,
@@ -152025,10 +161937,10 @@ void proto_register_rrc(void) {
{ "sysInfoType3-v920ext", "rrc.sysInfoType3_v920ext",
FT_NONE, BASE_NONE, NULL, 0,
"SysInfoType3_v920ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_170,
+ { &hf_rrc_nonCriticalExtensions_184,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_170", HFILL }},
+ "T_nonCriticalExtensions_184", HFILL }},
{ &hf_rrc_mapping_LCR,
{ "mapping-LCR", "rrc.mapping_LCR",
FT_NONE, BASE_NONE, NULL, 0,
@@ -152117,10 +162029,10 @@ void proto_register_rrc(void) {
{ "sysInfoType4-v5c0ext", "rrc.sysInfoType4_v5c0ext",
FT_NONE, BASE_NONE, NULL, 0,
"SysInfoType4_v5c0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_171,
+ { &hf_rrc_nonCriticalExtensions_185,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_171", HFILL }},
+ "T_nonCriticalExtensions_185", HFILL }},
{ &hf_rrc_cellSelectReselectInfoPCHFACH_v5b0ext,
{ "cellSelectReselectInfoPCHFACH-v5b0ext", "rrc.cellSelectReselectInfoPCHFACH_v5b0ext",
FT_NONE, BASE_NONE, NULL, 0,
@@ -152133,22 +162045,22 @@ void proto_register_rrc(void) {
{ "pich-PowerOffset", "rrc.pich_PowerOffset",
FT_INT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_135,
+ { &hf_rrc_modeSpecificInfo_141,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_135_vals), 0,
- "T_modeSpecificInfo_135", HFILL }},
- { &hf_rrc_fdd_175,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_141_vals), 0,
+ "T_modeSpecificInfo_141", HFILL }},
+ { &hf_rrc_fdd_180,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_169", HFILL }},
+ "T_fdd_174", HFILL }},
{ &hf_rrc_aich_PowerOffset,
{ "aich-PowerOffset", "rrc.aich_PowerOffset",
FT_INT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd_128,
+ { &hf_rrc_tdd_133,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_120", HFILL }},
+ "T_tdd_125", HFILL }},
{ &hf_rrc_pusch_SysInfoList_SFN,
{ "pusch-SysInfoList-SFN", "rrc.pusch_SysInfoList_SFN",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -152253,10 +162165,18 @@ void proto_register_rrc(void) {
{ "sysInfoType5-v8d0ext", "rrc.sysInfoType5_v8d0ext",
FT_NONE, BASE_NONE, NULL, 0,
"SysInfoType5_v8d0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_172,
+ { &hf_rrc_va40NonCriticalExtensions_19,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_va40NonCriticalExtensions_18", HFILL }},
+ { &hf_rrc_sysInfoType5_va40ext,
+ { "sysInfoType5-va40ext", "rrc.sysInfoType5_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SysInfoType5_va40ext_IEs", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_186,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_172", HFILL }},
+ "T_nonCriticalExtensions_186", HFILL }},
{ &hf_rrc_pNBSCH_Allocation_r4,
{ "pNBSCH-Allocation-r4", "rrc.pNBSCH_Allocation_r4",
FT_NONE, BASE_NONE, NULL, 0,
@@ -152333,14 +162253,14 @@ void proto_register_rrc(void) {
{ "cBS-DRX-Level1Information-extension", "rrc.cBS_DRX_Level1Information_extension",
FT_UINT32, BASE_DEC, VALS(rrc_CBS_DRX_Level1Information_extension_r6_vals), 0,
"CBS_DRX_Level1Information_extension_r6", HFILL }},
- { &hf_rrc_modeSpecificInfo_136,
+ { &hf_rrc_modeSpecificInfo_142,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_136_vals), 0,
- "T_modeSpecificInfo_136", HFILL }},
- { &hf_rrc_fdd_176,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_142_vals), 0,
+ "T_modeSpecificInfo_142", HFILL }},
+ { &hf_rrc_fdd_181,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_170", HFILL }},
+ "T_fdd_175", HFILL }},
{ &hf_rrc_hs_dsch_CommonSystemInformation,
{ "hs-dsch-CommonSystemInformation", "rrc.hs_dsch_CommonSystemInformation",
FT_NONE, BASE_NONE, NULL, 0,
@@ -152349,10 +162269,10 @@ void proto_register_rrc(void) {
{ "hs-dsch-PagingSystemInformation", "rrc.hs_dsch_PagingSystemInformation",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd768_23,
+ { &hf_rrc_tdd768_24,
{ "tdd768", "rrc.tdd768",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd768_20", HFILL }},
+ "T_tdd768_21", HFILL }},
{ &hf_rrc_pusch_SysInfoList_SFN_03,
{ "pusch-SysInfoList-SFN", "rrc.pusch_SysInfoList_SFN",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -152365,10 +162285,10 @@ void proto_register_rrc(void) {
{ "prach-SystemInformationList", "rrc.prach_SystemInformationList",
FT_UINT32, BASE_DEC, NULL, 0,
"PRACH_SystemInformationList_VHCR_r7", HFILL }},
- { &hf_rrc_tdd128_62,
+ { &hf_rrc_tdd128_66,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_59", HFILL }},
+ "T_tdd128_63", HFILL }},
{ &hf_rrc_prach_SystemInformationList_02,
{ "prach-SystemInformationList", "rrc.prach_SystemInformationList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -152389,26 +162309,26 @@ void proto_register_rrc(void) {
{ "tDD-MBSFNInformation", "rrc.tDD_MBSFNInformation",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_dummy_51,
+ { &hf_rrc_dummy_55,
{ "dummy", "rrc.dummy",
FT_NONE, BASE_NONE, NULL, 0,
"T_dummy_15", HFILL }},
- { &hf_rrc_modeSpecificInfo_137,
+ { &hf_rrc_modeSpecificInfo_143,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_137_vals), 0,
- "T_modeSpecificInfo_137", HFILL }},
- { &hf_rrc_fdd_177,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_143_vals), 0,
+ "T_modeSpecificInfo_143", HFILL }},
+ { &hf_rrc_fdd_182,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_171", HFILL }},
+ "T_fdd_176", HFILL }},
{ &hf_rrc_hs_dsch_DrxCellfach_info,
{ "hs-dsch-DrxCellfach-info", "rrc.hs_dsch_DrxCellfach_info",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_tdd128_63,
+ { &hf_rrc_tdd128_67,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_60", HFILL }},
+ "T_tdd128_64", HFILL }},
{ &hf_rrc_hs_dsch_CommonSysInfo,
{ "hs-dsch-CommonSysInfo", "rrc.hs_dsch_CommonSysInfo",
FT_NONE, BASE_NONE, NULL, 0,
@@ -152437,22 +162357,30 @@ void proto_register_rrc(void) {
{ "commonEDCHSystemInfoFDD", "rrc.commonEDCHSystemInfoFDD",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_138,
+ { &hf_rrc_frequencyBandsIndicatorSupport,
+ { "frequencyBandsIndicatorSupport", "rrc.frequencyBandsIndicatorSupport",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_rrc_frequencyBandIndicator3,
+ { "frequencyBandIndicator3", "rrc.frequencyBandIndicator3",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_RadioFrequencyBandFDD3_vals_ext, 0,
+ "RadioFrequencyBandFDD3", HFILL }},
+ { &hf_rrc_modeSpecificInfo_144,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_138_vals), 0,
- "T_modeSpecificInfo_138", HFILL }},
- { &hf_rrc_fdd_178,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_144_vals), 0,
+ "T_modeSpecificInfo_144", HFILL }},
+ { &hf_rrc_fdd_183,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_172", HFILL }},
- { &hf_rrc_dummy_52,
+ "T_fdd_177", HFILL }},
+ { &hf_rrc_dummy_56,
{ "dummy", "rrc.dummy",
FT_INT32, BASE_DEC, NULL, 0,
"CSICH_PowerOffset", HFILL }},
- { &hf_rrc_tdd_129,
+ { &hf_rrc_tdd_134,
{ "tdd", "rrc.tdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd_121", HFILL }},
+ "T_tdd_126", HFILL }},
{ &hf_rrc_v4b0NonCriticalExtensions_20,
{ "v4b0NonCriticalExtensions", "rrc.v4b0NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
@@ -152493,10 +162421,18 @@ void proto_register_rrc(void) {
{ "sysInfoType6-v770ext", "rrc.sysInfoType6_v770ext",
FT_NONE, BASE_NONE, NULL, 0,
"SysInfoType6_v770ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_173,
+ { &hf_rrc_va40NonCriticalExtensions_20,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_va40NonCriticalExtensions_19", HFILL }},
+ { &hf_rrc_sysInfoType6_va40ext,
+ { "sysInfoType6-va40ext", "rrc.sysInfoType6_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SysInfoType6_va40ext_IEs", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_187,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_173", HFILL }},
+ "T_nonCriticalExtensions_187", HFILL }},
{ &hf_rrc_tdd128SpecificInfo_01,
{ "tdd128SpecificInfo", "rrc.tdd128SpecificInfo",
FT_NONE, BASE_NONE, NULL, 0,
@@ -152509,14 +162445,14 @@ void proto_register_rrc(void) {
{ "tdd768SpecificInfo", "rrc.tdd768SpecificInfo",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_modeSpecificInfo_139,
+ { &hf_rrc_modeSpecificInfo_145,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_139_vals), 0,
- "T_modeSpecificInfo_139", HFILL }},
- { &hf_rrc_fdd_179,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_145_vals), 0,
+ "T_modeSpecificInfo_145", HFILL }},
+ { &hf_rrc_fdd_184,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_173", HFILL }},
+ "T_fdd_178", HFILL }},
{ &hf_rrc_ul_Interference,
{ "ul-Interference", "rrc.ul_Interference",
FT_INT32, BASE_DEC, NULL, 0,
@@ -152533,10 +162469,10 @@ void proto_register_rrc(void) {
{ "expirationTimeFactor", "rrc.expirationTimeFactor",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_nonCriticalExtensions_174,
+ { &hf_rrc_nonCriticalExtensions_188,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_174", HFILL }},
+ "T_nonCriticalExtensions_188", HFILL }},
{ &hf_rrc_dummy1_07,
{ "dummy1", "rrc.dummy1",
FT_NONE, BASE_NONE, NULL, 0,
@@ -152549,26 +162485,26 @@ void proto_register_rrc(void) {
{ "dummy3", "rrc.dummy3",
FT_INT32, BASE_DEC, NULL, 0,
"CSICH_PowerOffset", HFILL }},
- { &hf_rrc_nonCriticalExtensions_175,
+ { &hf_rrc_nonCriticalExtensions_189,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_175", HFILL }},
- { &hf_rrc_dummy_53,
+ "T_nonCriticalExtensions_189", HFILL }},
+ { &hf_rrc_dummy_57,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, NULL, 0,
"CPCH_PersistenceLevelsList", HFILL }},
- { &hf_rrc_nonCriticalExtensions_176,
+ { &hf_rrc_nonCriticalExtensions_190,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_176", HFILL }},
- { &hf_rrc_dummy_54,
+ "T_nonCriticalExtensions_190", HFILL }},
+ { &hf_rrc_dummy_58,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, NULL, 0,
"DRAC_SysInfoList", HFILL }},
- { &hf_rrc_nonCriticalExtensions_177,
+ { &hf_rrc_nonCriticalExtensions_191,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_177", HFILL }},
+ "T_nonCriticalExtensions_191", HFILL }},
{ &hf_rrc_sib12indicator,
{ "sib12indicator", "rrc.sib12indicator",
FT_BOOLEAN, BASE_NONE, NULL, 0,
@@ -152637,10 +162573,10 @@ void proto_register_rrc(void) {
{ "sysInfoType11-v860ext", "rrc.sysInfoType11_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
"SysInfoType11_v860ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_178,
+ { &hf_rrc_nonCriticalExtensions_192,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_178", HFILL }},
+ "T_nonCriticalExtensions_192", HFILL }},
{ &hf_rrc_fach_MeasurementOccasionInfo_LCR_Ext,
{ "fach-MeasurementOccasionInfo-LCR-Ext", "rrc.fach_MeasurementOccasionInfo_LCR_Ext",
FT_NONE, BASE_NONE, NULL, 0,
@@ -152677,7 +162613,7 @@ void proto_register_rrc(void) {
{ "intraFreqEventCriteriaList-v590ext", "rrc.intraFreqEventCriteriaList_v590ext",
FT_UINT32, BASE_DEC, NULL, 0,
"Intra_FreqEventCriteriaList_v590ext", HFILL }},
- { &hf_rrc_dummy_55,
+ { &hf_rrc_dummy_59,
{ "dummy", "rrc.dummy",
FT_NONE, BASE_NONE, NULL, 0,
"Dummy_InterFreqRACHReportingInfo", HFILL }},
@@ -152721,10 +162657,10 @@ void proto_register_rrc(void) {
{ "sysInfoType11bis-v860ext", "rrc.sysInfoType11bis_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
"SysInfoType11bis_v860ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_179,
+ { &hf_rrc_nonCriticalExtensions_193,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_179", HFILL }},
+ "T_nonCriticalExtensions_193", HFILL }},
{ &hf_rrc_csg_DedicatedFrequencyInfoList,
{ "csg-DedicatedFrequencyInfoList", "rrc.csg_DedicatedFrequencyInfoList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -152769,10 +162705,10 @@ void proto_register_rrc(void) {
{ "sysInfoType12-v7b0ext", "rrc.sysInfoType12_v7b0ext",
FT_NONE, BASE_NONE, NULL, 0,
"SysInfoType12_v7b0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_180,
+ { &hf_rrc_nonCriticalExtensions_194,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_180", HFILL }},
+ "T_nonCriticalExtensions_194", HFILL }},
{ &hf_rrc_v3a0NonCriticalExtensions_13,
{ "v3a0NonCriticalExtensions", "rrc.v3a0NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
@@ -152797,10 +162733,10 @@ void proto_register_rrc(void) {
{ "sysInfoType13-v770ext", "rrc.sysInfoType13_v770ext",
FT_NONE, BASE_NONE, NULL, 0,
"SysInfoType13_v770ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_181,
+ { &hf_rrc_nonCriticalExtensions_195,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_181", HFILL }},
+ "T_nonCriticalExtensions_195", HFILL }},
{ &hf_rrc_capabilityUpdateRequirement_r4Ext,
{ "capabilityUpdateRequirement-r4Ext", "rrc.capabilityUpdateRequirement_r4Ext",
FT_NONE, BASE_NONE, NULL, 0,
@@ -152809,38 +162745,38 @@ void proto_register_rrc(void) {
{ "ansi-41-RAND-Information", "rrc.ansi_41_RAND_Information",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_nonCriticalExtensions_182,
+ { &hf_rrc_nonCriticalExtensions_196,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_182", HFILL }},
+ "T_nonCriticalExtensions_196", HFILL }},
{ &hf_rrc_ansi_41_UserZoneID_Information,
{ "ansi-41-UserZoneID-Information", "rrc.ansi_41_UserZoneID_Information",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_nonCriticalExtensions_183,
+ { &hf_rrc_nonCriticalExtensions_197,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_183", HFILL }},
+ "T_nonCriticalExtensions_197", HFILL }},
{ &hf_rrc_ansi_41_PrivateNeighbourListInfo,
{ "ansi-41-PrivateNeighbourListInfo", "rrc.ansi_41_PrivateNeighbourListInfo",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_nonCriticalExtensions_184,
+ { &hf_rrc_nonCriticalExtensions_198,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_184", HFILL }},
+ "T_nonCriticalExtensions_198", HFILL }},
{ &hf_rrc_ansi_41_GlobalServiceRedirectInfo,
{ "ansi-41-GlobalServiceRedirectInfo", "rrc.ansi_41_GlobalServiceRedirectInfo",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_nonCriticalExtensions_185,
+ { &hf_rrc_nonCriticalExtensions_199,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_185", HFILL }},
- { &hf_rrc_nonCriticalExtensions_186,
+ "T_nonCriticalExtensions_199", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_200,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_186", HFILL }},
+ "T_nonCriticalExtensions_200", HFILL }},
{ &hf_rrc_ue_positioning_GPS_CipherParameters,
{ "ue-positioning-GPS-CipherParameters", "rrc.ue_positioning_GPS_CipherParameters",
FT_NONE, BASE_NONE, NULL, 0,
@@ -152861,10 +162797,18 @@ void proto_register_rrc(void) {
{ "sysInfoType15-v770ext", "rrc.sysInfoType15_v770ext",
FT_NONE, BASE_NONE, NULL, 0,
"SysInfoType15_v770ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_187,
+ { &hf_rrc_va40NonCriticalExtensions_21,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_va40NonCriticalExtensions_20", HFILL }},
+ { &hf_rrc_sysInfoType15_va40ext,
+ { "sysInfoType15-va40ext", "rrc.sysInfoType15_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SysInfoType15_va40ext_IEs", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_201,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_187", HFILL }},
+ "T_nonCriticalExtensions_201", HFILL }},
{ &hf_rrc_up_Ipdl_Parameters_TDD,
{ "up-Ipdl-Parameters-TDD", "rrc.up_Ipdl_Parameters_TDD",
FT_NONE, BASE_NONE, NULL, 0,
@@ -152873,6 +162817,10 @@ void proto_register_rrc(void) {
{ "ue-Positioning-GPS-ReferenceTime", "rrc.ue_Positioning_GPS_ReferenceTime",
FT_NONE, BASE_NONE, NULL, 0,
"UE_Positioning_GPS_ReferenceTime_v770ext", HFILL }},
+ { &hf_rrc_ue_Positioning_GPS_ReferenceTime_01,
+ { "ue-Positioning-GPS-ReferenceTime", "rrc.ue_Positioning_GPS_ReferenceTime",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UE_Positioning_GPS_ReferenceTime_va40ext", HFILL }},
{ &hf_rrc_ue_positioning_GANSS_ReferencePosition,
{ "ue-positioning-GANSS-ReferencePosition", "rrc.ue_positioning_GANSS_ReferencePosition",
FT_NONE, BASE_NONE, NULL, 0,
@@ -152889,10 +162837,18 @@ void proto_register_rrc(void) {
{ "sysInfoType15bis-v860ext", "rrc.sysInfoType15bis_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
"SysInfoType15bis_v860ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_188,
+ { &hf_rrc_va40NonCriticalExtensions_22,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_va40NonCriticalExtensions_21", HFILL }},
+ { &hf_rrc_sysInfoType15bis_va40ext,
+ { "sysInfoType15bis-va40ext", "rrc.sysInfoType15bis_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SysInfoType15bis_va40ext_IEs", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_202,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_188", HFILL }},
+ "T_nonCriticalExtensions_202", HFILL }},
{ &hf_rrc_ue_Positioning_GANSS_AddIonoModel,
{ "ue-Positioning-GANSS-AddIonoModel", "rrc.ue_Positioning_GANSS_AddIonoModel",
FT_NONE, BASE_NONE, NULL, 0,
@@ -152909,10 +162865,10 @@ void proto_register_rrc(void) {
{ "sysInfoType15-1-v920ext", "rrc.sysInfoType15_1_v920ext",
FT_NONE, BASE_NONE, NULL, 0,
"SysInfoType15_1_v920ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_189,
+ { &hf_rrc_nonCriticalExtensions_203,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_189", HFILL }},
+ "T_nonCriticalExtensions_203", HFILL }},
{ &hf_rrc_ue_positioning_GANSS_DGANSS_Corrections,
{ "ue-positioning-GANSS-DGANSS-Corrections", "rrc.ue_positioning_GANSS_DGANSS_Corrections",
FT_NONE, BASE_NONE, NULL, 0,
@@ -152925,10 +162881,10 @@ void proto_register_rrc(void) {
{ "sysInfoType15-1bis-v920ext", "rrc.sysInfoType15_1bis_v920ext",
FT_NONE, BASE_NONE, NULL, 0,
"SysInfoType15_1bis_v920ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_190,
+ { &hf_rrc_nonCriticalExtensions_204,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_190", HFILL }},
+ "T_nonCriticalExtensions_204", HFILL }},
{ &hf_rrc_ue_positioning_GANSS_DGANSS_Corrections_01,
{ "ue-positioning-GANSS-DGANSS-Corrections", "rrc.ue_positioning_GANSS_DGANSS_Corrections",
FT_NONE, BASE_NONE, NULL, 0,
@@ -152937,26 +162893,26 @@ void proto_register_rrc(void) {
{ "transmissionTOW", "rrc.transmissionTOW",
FT_UINT32, BASE_DEC, NULL, 0,
"GPS_TOW_1sec", HFILL }},
- { &hf_rrc_nonCriticalExtensions_191,
+ { &hf_rrc_nonCriticalExtensions_205,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_191", HFILL }},
+ "T_nonCriticalExtensions_205", HFILL }},
{ &hf_rrc_ue_positioning_GANSS_navigationModel,
{ "ue-positioning-GANSS-navigationModel", "rrc.ue_positioning_GANSS_navigationModel",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_nonCriticalExtensions_192,
+ { &hf_rrc_nonCriticalExtensions_206,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_192", HFILL }},
+ "T_nonCriticalExtensions_206", HFILL }},
{ &hf_rrc_ue_positioning_GANSS_AddNavigationModels,
{ "ue-positioning-GANSS-AddNavigationModels", "rrc.ue_positioning_GANSS_AddNavigationModels",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_nonCriticalExtensions_193,
+ { &hf_rrc_nonCriticalExtensions_207,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_193", HFILL }},
+ "T_nonCriticalExtensions_207", HFILL }},
{ &hf_rrc_satMask,
{ "satMask", "rrc.satMask",
FT_BYTES, BASE_NONE, NULL, 0,
@@ -152965,10 +162921,18 @@ void proto_register_rrc(void) {
{ "lsbTOW", "rrc.lsbTOW",
FT_BYTES, BASE_NONE, NULL, 0,
"BIT_STRING_SIZE_8", HFILL }},
- { &hf_rrc_nonCriticalExtensions_194,
+ { &hf_rrc_va40NonCriticalExtensions_23,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_va40NonCriticalExtensions_22", HFILL }},
+ { &hf_rrc_sysInfoType15_3_va40ext,
+ { "sysInfoType15-3-va40ext", "rrc.sysInfoType15_3_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SysInfoType15_3_va40ext_IEs", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_208,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_194", HFILL }},
+ "T_nonCriticalExtensions_208", HFILL }},
{ &hf_rrc_ue_positioning_GANSS_Almanac,
{ "ue-positioning-GANSS-Almanac", "rrc.ue_positioning_GANSS_Almanac",
FT_NONE, BASE_NONE, NULL, 0,
@@ -152989,10 +162953,18 @@ void proto_register_rrc(void) {
{ "sysInfoType15-3bis-v860ext", "rrc.sysInfoType15_3bis_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
"SysInfoType15_3bis_v860ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_195,
+ { &hf_rrc_va40NonCriticalExtensions_24,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_va40NonCriticalExtensions_23", HFILL }},
+ { &hf_rrc_sysInfoType15_3bis_va40ext,
+ { "sysInfoType15-3bis-va40ext", "rrc.sysInfoType15_3bis_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SysInfoType15_3bis_va40ext_IEs", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_209,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_195", HFILL }},
+ "T_nonCriticalExtensions_209", HFILL }},
{ &hf_rrc_ue_Positioning_GANSS_Almanac,
{ "ue-Positioning-GANSS-Almanac", "rrc.ue_Positioning_GANSS_Almanac",
FT_NONE, BASE_NONE, NULL, 0,
@@ -153005,6 +162977,14 @@ void proto_register_rrc(void) {
{ "ue-Positioning-GANSS-AuxiliaryInfo", "rrc.ue_Positioning_GANSS_AuxiliaryInfo",
FT_UINT32, BASE_DEC, VALS(rrc_UE_Positioning_GANSS_AuxiliaryInfo_vals), 0,
NULL, HFILL }},
+ { &hf_rrc_ue_Positioning_GANSS_Almanac_01,
+ { "ue-Positioning-GANSS-Almanac", "rrc.ue_Positioning_GANSS_Almanac",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UE_Positioning_GANSS_Almanac_va40ext", HFILL }},
+ { &hf_rrc_ue_positioning_GANSS_TimeModels_01,
+ { "ue-positioning-GANSS-TimeModels", "rrc.ue_positioning_GANSS_TimeModels",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "UE_Positioning_GANSS_TimeModels_va40ext", HFILL }},
{ &hf_rrc_ue_positioning_OTDOA_CipherParameters,
{ "ue-positioning-OTDOA-CipherParameters", "rrc.ue_positioning_OTDOA_CipherParameters",
FT_NONE, BASE_NONE, NULL, 0,
@@ -153025,10 +163005,10 @@ void proto_register_rrc(void) {
{ "sysInfoType15-4-v4b0ext", "rrc.sysInfoType15_4_v4b0ext",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_nonCriticalExtensions_196,
+ { &hf_rrc_nonCriticalExtensions_210,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_196", HFILL }},
+ "T_nonCriticalExtensions_210", HFILL }},
{ &hf_rrc_v3a0NonCriticalExtensions_15,
{ "v3a0NonCriticalExtensions", "rrc.v3a0NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
@@ -153045,10 +163025,10 @@ void proto_register_rrc(void) {
{ "sysInfoType15-5-v770ext", "rrc.sysInfoType15_5_v770ext",
FT_NONE, BASE_NONE, NULL, 0,
"SysInfoType15_5_v770ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_197,
+ { &hf_rrc_nonCriticalExtensions_211,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_197", HFILL }},
+ "T_nonCriticalExtensions_211", HFILL }},
{ &hf_rrc_ue_positioning_GANSS_TOD,
{ "ue-positioning-GANSS-TOD", "rrc.ue_positioning_GANSS_TOD",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -153057,18 +163037,30 @@ void proto_register_rrc(void) {
{ "ue-positioning-GANSS-ReferenceMeasurementInformation", "rrc.ue_positioning_GANSS_ReferenceMeasurementInformation",
FT_NONE, BASE_NONE, NULL, 0,
"UE_Positioning_GANSS_ReferenceMeasurementInfo", HFILL }},
- { &hf_rrc_nonCriticalExtensions_198,
+ { &hf_rrc_va40NonCriticalExtensions_25,
+ { "va40NonCriticalExtensions", "rrc.va40NonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_va40NonCriticalExtensions_24", HFILL }},
+ { &hf_rrc_sysInfoType15_6_va40ext,
+ { "sysInfoType15-6-va40ext", "rrc.sysInfoType15_6_va40ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SysInfoType15_6_va40ext_IEs", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_212,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_198", HFILL }},
+ "T_nonCriticalExtensions_212", HFILL }},
+ { &hf_rrc_ue_positioning_GANSS_ReferenceMeasurementInformation_01,
+ { "ue-positioning-GANSS-ReferenceMeasurementInformation", "rrc.ue_positioning_GANSS_ReferenceMeasurementInformation",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UE_Positioning_GANSS_ReferenceMeasurementInfo_va40ext", HFILL }},
{ &hf_rrc_ue_positioning_GANSS_DataBitAssistance,
{ "ue-positioning-GANSS-DataBitAssistance", "rrc.ue_positioning_GANSS_DataBitAssistance",
FT_NONE, BASE_NONE, NULL, 0,
"UE_Positioning_GANSS_Data_Bit_Assistance", HFILL }},
- { &hf_rrc_nonCriticalExtensions_199,
+ { &hf_rrc_nonCriticalExtensions_213,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_199", HFILL }},
+ "T_nonCriticalExtensions_213", HFILL }},
{ &hf_rrc_ue_positioning_GANSS_DataCipheringInfo,
{ "ue-positioning-GANSS-DataCipheringInfo", "rrc.ue_positioning_GANSS_DataCipheringInfo",
FT_NONE, BASE_NONE, NULL, 0,
@@ -153077,10 +163069,10 @@ void proto_register_rrc(void) {
{ "ue-positioning-GANSS-realTimeIntegrity", "rrc.ue_positioning_GANSS_realTimeIntegrity",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_nonCriticalExtensions_200,
+ { &hf_rrc_nonCriticalExtensions_214,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_200", HFILL }},
+ "T_nonCriticalExtensions_214", HFILL }},
{ &hf_rrc_preDefinedRadioConfiguration,
{ "preDefinedRadioConfiguration", "rrc.preDefinedRadioConfiguration",
FT_NONE, BASE_NONE, NULL, 0,
@@ -153101,10 +163093,10 @@ void proto_register_rrc(void) {
{ "sysInfoType16-v920ext", "rrc.sysInfoType16_v920ext",
FT_NONE, BASE_NONE, NULL, 0,
"SysInfoType16_v920ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_201,
+ { &hf_rrc_nonCriticalExtensions_215,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_201", HFILL }},
+ "T_nonCriticalExtensions_215", HFILL }},
{ &hf_rrc_preDefinedRadioConfiguration_01,
{ "preDefinedRadioConfiguration", "rrc.preDefinedRadioConfiguration",
FT_NONE, BASE_NONE, NULL, 0,
@@ -153145,10 +163137,10 @@ void proto_register_rrc(void) {
{ "sysInfoType17-v770ext", "rrc.sysInfoType17_v770ext",
FT_NONE, BASE_NONE, NULL, 0,
"SysInfoType17_v770ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_202,
+ { &hf_rrc_nonCriticalExtensions_216,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_202", HFILL }},
+ "T_nonCriticalExtensions_216", HFILL }},
{ &hf_rrc_tdd128SpecificInfo_02,
{ "tdd128SpecificInfo", "rrc.tdd128SpecificInfo",
FT_NONE, BASE_NONE, NULL, 0,
@@ -153201,10 +163193,10 @@ void proto_register_rrc(void) {
{ "sysInfoType18-v860ext", "rrc.sysInfoType18_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_nonCriticalExtensions_203,
+ { &hf_rrc_nonCriticalExtensions_217,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_203", HFILL }},
+ "T_nonCriticalExtensions_217", HFILL }},
{ &hf_rrc_idleModePLMNIdentitiesSIB11bis,
{ "idleModePLMNIdentitiesSIB11bis", "rrc.idleModePLMNIdentitiesSIB11bis",
FT_NONE, BASE_NONE, NULL, 0,
@@ -153241,10 +163233,10 @@ void proto_register_rrc(void) {
{ "sysInfoType19-v920ext", "rrc.sysInfoType19_v920ext",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_nonCriticalExtensions_204,
+ { &hf_rrc_nonCriticalExtensions_218,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_204", HFILL }},
+ "T_nonCriticalExtensions_218", HFILL }},
{ &hf_rrc_utra_PriorityInfoList_v920ext,
{ "utra-PriorityInfoList-v920ext", "rrc.utra_PriorityInfoList_v920ext",
FT_NONE, BASE_NONE, NULL, 0,
@@ -153255,12 +163247,12 @@ void proto_register_rrc(void) {
NULL, HFILL }},
{ &hf_rrc_hNBName,
{ "hNBName", "rrc.hNBName",
- FT_BYTES, BASE_NONE, NULL, 0,
+ FT_STRING, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_nonCriticalExtensions_205,
+ { &hf_rrc_nonCriticalExtensions_219,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_205", HFILL }},
+ "T_nonCriticalExtensions_219", HFILL }},
{ &hf_rrc_sib_ReferenceList,
{ "sib-ReferenceList", "rrc.sib_ReferenceList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -153281,10 +163273,10 @@ void proto_register_rrc(void) {
{ "sysInfoTypeSB1-v860ext", "rrc.sysInfoTypeSB1_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_nonCriticalExtensions_206,
+ { &hf_rrc_nonCriticalExtensions_220,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_206", HFILL }},
+ "T_nonCriticalExtensions_220", HFILL }},
{ &hf_rrc_v6b0NonCriticalExtensions_21,
{ "v6b0NonCriticalExtensions", "rrc.v6b0NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
@@ -153301,10 +163293,10 @@ void proto_register_rrc(void) {
{ "sysInfoTypeSB2-v860ext", "rrc.sysInfoTypeSB2_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_nonCriticalExtensions_207,
+ { &hf_rrc_nonCriticalExtensions_221,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_207", HFILL }},
+ "T_nonCriticalExtensions_221", HFILL }},
{ &hf_rrc_TDD_UMTS_Frequency_List_item,
{ "FrequencyInfoTDD", "rrc.FrequencyInfoTDD",
FT_NONE, BASE_NONE, NULL, 0,
@@ -153577,22 +163569,22 @@ void proto_register_rrc(void) {
{ "michPowerOffset", "rrc.michPowerOffset",
FT_INT32, BASE_DEC, NULL, 0,
"MBMS_MICHPowerOffset", HFILL }},
- { &hf_rrc_mode_02,
+ { &hf_rrc_mode_03,
{ "mode", "rrc.mode",
- FT_UINT32, BASE_DEC, VALS(rrc_T_mode_02_vals), 0,
- "T_mode_02", HFILL }},
- { &hf_rrc_fdd_180,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_mode_03_vals), 0,
+ "T_mode_03", HFILL }},
+ { &hf_rrc_fdd_185,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_174", HFILL }},
+ "T_fdd_179", HFILL }},
{ &hf_rrc_ni_CountPerFrame,
{ "ni-CountPerFrame", "rrc.ni_CountPerFrame",
FT_UINT32, BASE_DEC, VALS(rrc_MBMS_NI_CountPerFrame_vals), 0,
"MBMS_NI_CountPerFrame", HFILL }},
- { &hf_rrc_tdd384_45,
+ { &hf_rrc_tdd384_46,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_40", HFILL }},
+ "T_tdd384_41", HFILL }},
{ &hf_rrc_repetitionPeriodLengthOffset_01,
{ "repetitionPeriodLengthOffset", "rrc.repetitionPeriodLengthOffset",
FT_UINT32, BASE_DEC, VALS(rrc_RepPerLengthOffset_MICH_vals), 0,
@@ -153601,10 +163593,10 @@ void proto_register_rrc(void) {
{ "mbmsNotificationIndLength", "rrc.mbmsNotificationIndLength",
FT_UINT32, BASE_DEC, VALS(rrc_MBMS_MICHNotificationIndLength_vals), 0,
"MBMS_MICHNotificationIndLength", HFILL }},
- { &hf_rrc_tdd128_64,
+ { &hf_rrc_tdd128_68,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_61", HFILL }},
+ "T_tdd128_65", HFILL }},
{ &hf_rrc_channelisationCodeList_02,
{ "channelisationCodeList", "rrc.channelisationCodeList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -153613,30 +163605,30 @@ void proto_register_rrc(void) {
{ "DL-TS-ChannelisationCode", "rrc.DL_TS_ChannelisationCode",
FT_UINT32, BASE_DEC, VALS(rrc_DL_TS_ChannelisationCode_vals), 0,
NULL, HFILL }},
- { &hf_rrc_mode_03,
+ { &hf_rrc_mode_04,
{ "mode", "rrc.mode",
- FT_UINT32, BASE_DEC, VALS(rrc_T_mode_03_vals), 0,
- "T_mode_03", HFILL }},
- { &hf_rrc_tdd384_46,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_mode_04_vals), 0,
+ "T_mode_04", HFILL }},
+ { &hf_rrc_tdd384_47,
{ "tdd384", "rrc.tdd384",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd384_41", HFILL }},
- { &hf_rrc_tdd768_24,
+ "T_tdd384_42", HFILL }},
+ { &hf_rrc_tdd768_25,
{ "tdd768", "rrc.tdd768",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd768_21", HFILL }},
+ "T_tdd768_22", HFILL }},
{ &hf_rrc_midambleShiftAndBurstType_06,
{ "midambleShiftAndBurstType", "rrc.midambleShiftAndBurstType",
FT_NONE, BASE_NONE, NULL, 0,
"MidambleShiftAndBurstType_VHCR", HFILL }},
- { &hf_rrc_tdd128_65,
+ { &hf_rrc_tdd128_69,
{ "tdd128", "rrc.tdd128",
FT_NONE, BASE_NONE, NULL, 0,
- "T_tdd128_62", HFILL }},
- { &hf_rrc_mode_04,
+ "T_tdd128_66", HFILL }},
+ { &hf_rrc_mode_05,
{ "mode", "rrc.mode",
- FT_UINT32, BASE_DEC, VALS(rrc_T_mode_04_vals), 0,
- "T_mode_04", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_mode_05_vals), 0,
+ "T_mode_05", HFILL }},
{ &hf_rrc_imb384,
{ "imb384", "rrc.imb384",
FT_NONE, BASE_NONE, NULL, 0,
@@ -153665,7 +163657,7 @@ void proto_register_rrc(void) {
{ "dcch", "rrc.dcch",
FT_NONE, BASE_NONE, NULL, 0,
"MBMS_PFLInfo", HFILL }},
- { &hf_rrc_dummy_56,
+ { &hf_rrc_dummy_60,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, VALS(rrc_T_dummy_16_vals), 0,
"T_dummy_16", HFILL }},
@@ -153733,10 +163725,10 @@ void proto_register_rrc(void) {
{ "layer1Combining", "rrc.layer1Combining",
FT_UINT32, BASE_DEC, VALS(rrc_T_layer1Combining_vals), 0,
NULL, HFILL }},
- { &hf_rrc_fdd_181,
+ { &hf_rrc_fdd_186,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_175", HFILL }},
+ "T_fdd_180", HFILL }},
{ &hf_rrc_mbms_L1CombiningTransmTimeDiff,
{ "mbms-L1CombiningTransmTimeDiff", "rrc.mbms_L1CombiningTransmTimeDiff",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -153757,10 +163749,10 @@ void proto_register_rrc(void) {
{ "layer1Combining", "rrc.layer1Combining",
FT_UINT32, BASE_DEC, VALS(rrc_T_layer1Combining_01_vals), 0,
"T_layer1Combining_01", HFILL }},
- { &hf_rrc_fdd_182,
+ { &hf_rrc_fdd_187,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_176", HFILL }},
+ "T_fdd_181", HFILL }},
{ &hf_rrc_MBMS_NeighbouringCellSCCPCHList_r6_item,
{ "MBMS-NeighbouringCellSCCPCH-r6", "rrc.MBMS_NeighbouringCellSCCPCH_r6",
FT_NONE, BASE_NONE, NULL, 0,
@@ -153867,11 +163859,11 @@ void proto_register_rrc(void) {
"INTEGER_0_1", HFILL }},
{ &hf_rrc_accessprobabilityFactor_Idle,
{ "accessprobabilityFactor-Idle", "rrc.accessprobabilityFactor_Idle",
- FT_UINT32, BASE_DEC, VALS(rrc_MBMS_AccessProbabilityFactor_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_MBMS_AccessProbabilityFactor_vals_ext, 0,
"MBMS_AccessProbabilityFactor", HFILL }},
{ &hf_rrc_accessprobabilityFactor_Connected,
{ "accessprobabilityFactor-Connected", "rrc.accessprobabilityFactor_Connected",
- FT_UINT32, BASE_DEC, VALS(rrc_MBMS_AccessProbabilityFactor_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &rrc_MBMS_AccessProbabilityFactor_vals_ext, 0,
"MBMS_AccessProbabilityFactor", HFILL }},
{ &hf_rrc_mbms_ConnectedModeCountingScope,
{ "mbms-ConnectedModeCountingScope", "rrc.mbms_ConnectedModeCountingScope",
@@ -154153,14 +164145,14 @@ void proto_register_rrc(void) {
{ "interRATHandoverInfoWithInterRATCapabilities-v920ext", "rrc.interRATHandoverInfoWithInterRATCapabilities_v920ext",
FT_NONE, BASE_NONE, NULL, 0,
"InterRATHandoverInfoWithInterRATCapabilities_v920ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_208,
+ { &hf_rrc_nonCriticalExtensions_222,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_208", HFILL }},
- { &hf_rrc_criticalExtensions_111,
+ "T_nonCriticalExtensions_222", HFILL }},
+ { &hf_rrc_criticalExtensions_126,
{ "criticalExtensions", "rrc.criticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_111", HFILL }},
+ "T_criticalExtensions_126", HFILL }},
{ &hf_rrc_interRATHandoverInfo_01,
{ "interRATHandoverInfo", "rrc.interRATHandoverInfo",
FT_BYTES, BASE_NONE, NULL, 0,
@@ -154181,14 +164173,14 @@ void proto_register_rrc(void) {
{ "rFC3095-ContextInfoList-r5", "rrc.rFC3095_ContextInfoList_r5",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_nonCriticalExtensions_209,
+ { &hf_rrc_nonCriticalExtensions_223,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_209", HFILL }},
- { &hf_rrc_criticalExtensions_112,
+ "T_nonCriticalExtensions_223", HFILL }},
+ { &hf_rrc_criticalExtensions_127,
{ "criticalExtensions", "rrc.criticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_112", HFILL }},
+ "T_criticalExtensions_127", HFILL }},
{ &hf_rrc_RFC3095_ContextInfoList_r5_item,
{ "RFC3095-ContextInfo", "rrc.RFC3095_ContextInfo",
FT_NONE, BASE_NONE, NULL, 0,
@@ -154341,10 +164333,10 @@ void proto_register_rrc(void) {
{ "sRNC-RelocationInfo-v7f0ext", "rrc.sRNC_RelocationInfo_v7f0ext",
FT_NONE, BASE_NONE, NULL, 0,
"SRNC_RelocationInfo_v7f0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_210,
+ { &hf_rrc_nonCriticalExtensions_224,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_210", HFILL }},
+ "T_nonCriticalExtensions_224", HFILL }},
{ &hf_rrc_later_than_r3_28,
{ "later-than-r3", "rrc.later_than_r3",
FT_UINT32, BASE_DEC, VALS(rrc_T_later_than_r3_28_vals), 0,
@@ -154405,14 +164397,14 @@ void proto_register_rrc(void) {
{ "v7f0NonCriticalExtensions", "rrc.v7f0NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v7f0NonCriticalExtensions_18", HFILL }},
- { &hf_rrc_nonCriticalExtensions_211,
+ { &hf_rrc_nonCriticalExtensions_225,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_211", HFILL }},
- { &hf_rrc_criticalExtensions_113,
+ "T_nonCriticalExtensions_225", HFILL }},
+ { &hf_rrc_criticalExtensions_128,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_113_vals), 0,
- "T_criticalExtensions_113", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_128_vals), 0,
+ "T_criticalExtensions_128", HFILL }},
{ &hf_rrc_r5_15,
{ "r5", "rrc.r5",
FT_NONE, BASE_NONE, NULL, 0,
@@ -154457,14 +164449,14 @@ void proto_register_rrc(void) {
{ "v7f0NonCriticalExtensions", "rrc.v7f0NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v7f0NonCriticalExtensions_19", HFILL }},
- { &hf_rrc_nonCriticalExtensions_212,
+ { &hf_rrc_nonCriticalExtensions_226,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_212", HFILL }},
- { &hf_rrc_criticalExtensions_114,
+ "T_nonCriticalExtensions_226", HFILL }},
+ { &hf_rrc_criticalExtensions_129,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_114_vals), 0,
- "T_criticalExtensions_114", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_129_vals), 0,
+ "T_criticalExtensions_129", HFILL }},
{ &hf_rrc_r6_12,
{ "r6", "rrc.r6",
FT_NONE, BASE_NONE, NULL, 0,
@@ -154501,14 +164493,14 @@ void proto_register_rrc(void) {
{ "sRNC-RelocationInfo-v860ext", "rrc.sRNC_RelocationInfo_v860ext",
FT_NONE, BASE_NONE, NULL, 0,
"SRNC_RelocationInfo_v860ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_213,
+ { &hf_rrc_nonCriticalExtensions_227,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_213", HFILL }},
- { &hf_rrc_criticalExtensions_115,
+ "T_nonCriticalExtensions_227", HFILL }},
+ { &hf_rrc_criticalExtensions_130,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_115_vals), 0,
- "T_criticalExtensions_115", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_130_vals), 0,
+ "T_criticalExtensions_130", HFILL }},
{ &hf_rrc_r7_16,
{ "r7", "rrc.r7",
FT_NONE, BASE_NONE, NULL, 0,
@@ -154529,14 +164521,14 @@ void proto_register_rrc(void) {
{ "v860NonCriticalExtensions", "rrc.v860NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v860NonCriticalExtensions_37", HFILL }},
- { &hf_rrc_nonCriticalExtensions_214,
+ { &hf_rrc_nonCriticalExtensions_228,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_214", HFILL }},
- { &hf_rrc_criticalExtensions_116,
+ "T_nonCriticalExtensions_228", HFILL }},
+ { &hf_rrc_criticalExtensions_131,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_116_vals), 0,
- "T_criticalExtensions_116", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_131_vals), 0,
+ "T_criticalExtensions_131", HFILL }},
{ &hf_rrc_r8_12,
{ "r8", "rrc.r8",
FT_NONE, BASE_NONE, NULL, 0,
@@ -154565,14 +164557,14 @@ void proto_register_rrc(void) {
{ "sRNC-RelocationInfo-v8d0ext", "rrc.sRNC_RelocationInfo_v8d0ext",
FT_NONE, BASE_NONE, NULL, 0,
"SRNC_RelocationInfo_v8d0ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_215,
+ { &hf_rrc_nonCriticalExtensions_229,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_215", HFILL }},
- { &hf_rrc_criticalExtensions_117,
+ "T_nonCriticalExtensions_229", HFILL }},
+ { &hf_rrc_criticalExtensions_132,
{ "criticalExtensions", "rrc.criticalExtensions",
- FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_117_vals), 0,
- "T_criticalExtensions_117", HFILL }},
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_132_vals), 0,
+ "T_criticalExtensions_132", HFILL }},
{ &hf_rrc_r9_11,
{ "r9", "rrc.r9",
FT_NONE, BASE_NONE, NULL, 0,
@@ -154597,14 +164589,34 @@ void proto_register_rrc(void) {
{ "sRNC-RelocationInfo-v970ext", "rrc.sRNC_RelocationInfo_v970ext",
FT_NONE, BASE_NONE, NULL, 0,
"SRNC_RelocationInfo_v970ext_IEs", HFILL }},
- { &hf_rrc_nonCriticalExtensions_216,
+ { &hf_rrc_nonCriticalExtensions_230,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_216", HFILL }},
- { &hf_rrc_criticalExtensions_118,
+ "T_nonCriticalExtensions_230", HFILL }},
+ { &hf_rrc_criticalExtensions_133,
{ "criticalExtensions", "rrc.criticalExtensions",
+ FT_UINT32, BASE_DEC, VALS(rrc_T_criticalExtensions_133_vals), 0,
+ "T_criticalExtensions_133", HFILL }},
+ { &hf_rrc_r10_13,
+ { "r10", "rrc.r10",
FT_NONE, BASE_NONE, NULL, 0,
- "T_criticalExtensions_118", HFILL }},
+ "T_r10_13", HFILL }},
+ { &hf_rrc_sRNC_RelocationInfo_r10,
+ { "sRNC-RelocationInfo-r10", "rrc.sRNC_RelocationInfo_r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SRNC_RelocationInfo_r10_IEs", HFILL }},
+ { &hf_rrc_sRNC_RelocationInfo_r10_add_ext,
+ { "sRNC-RelocationInfo-r10-add-ext", "rrc.sRNC_RelocationInfo_r10_add_ext",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING", HFILL }},
+ { &hf_rrc_nonCriticalExtensions_231,
+ { "nonCriticalExtensions", "rrc.nonCriticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_nonCriticalExtensions_231", HFILL }},
+ { &hf_rrc_criticalExtensions_134,
+ { "criticalExtensions", "rrc.criticalExtensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_criticalExtensions_134", HFILL }},
{ &hf_rrc_stateOfRRC,
{ "stateOfRRC", "rrc.stateOfRRC",
FT_UINT32, BASE_DEC, VALS(rrc_StateOfRRC_vals), 0,
@@ -154649,6 +164661,10 @@ void proto_register_rrc(void) {
{ "ue-Positioning-LastKnownPos", "rrc.ue_Positioning_LastKnownPos",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_cn_CommonGSM_MAP_NAS_SysInfo_04,
+ { "cn-CommonGSM-MAP-NAS-SysInfo", "rrc.cn_CommonGSM_MAP_NAS_SysInfo",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "NAS_SystemInformationGSM_MAP", HFILL }},
{ &hf_rrc_ongoingMeasRepList,
{ "ongoingMeasRepList", "rrc.ongoingMeasRepList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -154665,14 +164681,14 @@ void proto_register_rrc(void) {
{ "ul-TransChInfoList", "rrc.ul_TransChInfoList",
FT_UINT32, BASE_DEC, NULL, 0,
"UL_AddReconfTransChInfoList", HFILL }},
- { &hf_rrc_modeSpecificInfo_140,
+ { &hf_rrc_modeSpecificInfo_146,
{ "modeSpecificInfo", "rrc.modeSpecificInfo",
- FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_140_vals), 0,
- "T_modeSpecificInfo_140", HFILL }},
- { &hf_rrc_fdd_183,
+ FT_UINT32, BASE_DEC, VALS(rrc_T_modeSpecificInfo_146_vals), 0,
+ "T_modeSpecificInfo_146", HFILL }},
+ { &hf_rrc_fdd_188,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_177", HFILL }},
+ "T_fdd_182", HFILL }},
{ &hf_rrc_dl_TransChInfoList,
{ "dl-TransChInfoList", "rrc.dl_TransChInfoList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -154809,14 +164825,14 @@ void proto_register_rrc(void) {
{ "rab-InformationList", "rrc.rab_InformationList",
FT_UINT32, BASE_DEC, NULL, 0,
"RAB_InformationSetupList_r4", HFILL }},
- { &hf_rrc_dummy_57,
+ { &hf_rrc_dummy_61,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, VALS(rrc_T_dummy_17_vals), 0,
"T_dummy_17", HFILL }},
- { &hf_rrc_fdd_184,
+ { &hf_rrc_fdd_189,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_178", HFILL }},
+ "T_fdd_183", HFILL }},
{ &hf_rrc_dl_TransChInfoList_01,
{ "dl-TransChInfoList", "rrc.dl_TransChInfoList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -154841,14 +164857,14 @@ void proto_register_rrc(void) {
{ "rab-InformationList", "rrc.rab_InformationList",
FT_UINT32, BASE_DEC, NULL, 0,
"RAB_InformationSetupList_r5", HFILL }},
- { &hf_rrc_dummy_58,
+ { &hf_rrc_dummy_62,
{ "dummy", "rrc.dummy",
FT_UINT32, BASE_DEC, VALS(rrc_T_dummy_18_vals), 0,
"T_dummy_18", HFILL }},
- { &hf_rrc_fdd_185,
+ { &hf_rrc_fdd_190,
{ "fdd", "rrc.fdd",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fdd_179", HFILL }},
+ "T_fdd_184", HFILL }},
{ &hf_rrc_dl_TransChInfoList_02,
{ "dl-TransChInfoList", "rrc.dl_TransChInfoList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -154909,10 +164925,10 @@ void proto_register_rrc(void) {
{ "v7f0NonCriticalExtensions", "rrc.v7f0NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v7f0NonCriticalExtensions_21", HFILL }},
- { &hf_rrc_nonCriticalExtensions_217,
+ { &hf_rrc_nonCriticalExtensions_232,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_217", HFILL }},
+ "T_nonCriticalExtensions_232", HFILL }},
{ &hf_rrc_ueCapabilityContainer_04,
{ "ueCapabilityContainer", "rrc.ueCapabilityContainer",
FT_BYTES, BASE_NONE, NULL, 0,
@@ -154957,10 +164973,10 @@ void proto_register_rrc(void) {
{ "v7f0NonCriticalExtensions", "rrc.v7f0NonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
"T_v7f0NonCriticalExtensions_22", HFILL }},
- { &hf_rrc_nonCriticalExtensions_218,
+ { &hf_rrc_nonCriticalExtensions_233,
{ "nonCriticalExtensions", "rrc.nonCriticalExtensions",
FT_NONE, BASE_NONE, NULL, 0,
- "T_nonCriticalExtensions_218", HFILL }},
+ "T_nonCriticalExtensions_233", HFILL }},
{ &hf_rrc_thresholdSFN_GPS_TOW_us,
{ "thresholdSFN-GPS-TOW-us", "rrc.thresholdSFN_GPS_TOW_us",
FT_UINT32, BASE_DEC, VALS(rrc_ThresholdSFN_GPS_TOW_us_vals), 0,
@@ -155049,6 +165065,26 @@ void proto_register_rrc(void) {
{ "ongoingMeasRepList", "rrc.ongoingMeasRepList",
FT_UINT32, BASE_DEC, NULL, 0,
"OngoingMeasRepList_v970ext_IE", HFILL }},
+ { &hf_rrc_ueCapabilityContainer_07,
+ { "ueCapabilityContainer", "rrc.ueCapabilityContainer",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "T_ueCapabilityContainer_07", HFILL }},
+ { &hf_rrc_ueCapabilityContainer_RSC_05,
+ { "ueCapabilityContainer-RSC", "rrc.ueCapabilityContainer_RSC",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "T_ueCapabilityContainer_RSC_05", HFILL }},
+ { &hf_rrc_ueCapabilityContainer_UCI_05,
+ { "ueCapabilityContainer-UCI", "rrc.ueCapabilityContainer_UCI",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "T_ueCapabilityContainer_UCI_05", HFILL }},
+ { &hf_rrc_ongoingMeasRepList_08,
+ { "ongoingMeasRepList", "rrc.ongoingMeasRepList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "OngoingMeasRepList_r10", HFILL }},
+ { &hf_rrc_measurementReport_05,
+ { "measurementReport", "rrc.measurementReport",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "T_measurementReport_04", HFILL }},
{ &hf_rrc_dl_HFN,
{ "dl-HFN", "rrc.dl_HFN",
FT_BYTES, BASE_NONE, NULL, 0,
@@ -155157,7 +165193,7 @@ void proto_register_rrc(void) {
{ "event", "rrc.event",
FT_NONE, BASE_NONE, NULL, 0,
"Event1j_r6", HFILL }},
- { &hf_rrc_downlinkCompressedMode_03,
+ { &hf_rrc_downlinkCompressedMode_04,
{ "downlinkCompressedMode", "rrc.downlinkCompressedMode",
FT_NONE, BASE_NONE, NULL, 0,
"CompressedModeMeasCapability_r4", HFILL }},
@@ -155165,7 +165201,7 @@ void proto_register_rrc(void) {
{ "uplinkCompressedMode", "rrc.uplinkCompressedMode",
FT_NONE, BASE_NONE, NULL, 0,
"CompressedModeMeasCapability_r4", HFILL }},
- { &hf_rrc_modify_07,
+ { &hf_rrc_modify_08,
{ "modify", "rrc.modify",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
@@ -155205,6 +165241,10 @@ void proto_register_rrc(void) {
{ "additionalMeasurementID-List", "rrc.additionalMeasurementID_List",
FT_UINT32, BASE_DEC, NULL, 0,
"AdditionalMeasurementID_List_r9", HFILL }},
+ { &hf_rrc_measurementCommandWithType_06,
+ { "measurementCommandWithType", "rrc.measurementCommandWithType",
+ FT_UINT32, BASE_DEC, VALS(rrc_MeasurementCommandWithType_r10_vals), 0,
+ "MeasurementCommandWithType_r10", HFILL }},
{ &hf_rrc_OngoingMeasRepList_item,
{ "OngoingMeasRep", "rrc.OngoingMeasRep",
FT_NONE, BASE_NONE, NULL, 0,
@@ -155237,6 +165277,10 @@ void proto_register_rrc(void) {
{ "OngoingMeasRep-v970ext-IEs", "rrc.OngoingMeasRep_v970ext_IEs",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_rrc_OngoingMeasRepList_r10_item,
+ { "OngoingMeasRep-r10", "rrc.OngoingMeasRep_r10",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_rrc_supportForRfc2507_01,
{ "supportForRfc2507", "rrc.supportForRfc2507",
FT_UINT32, BASE_DEC, VALS(rrc_T_supportForRfc2507_01_vals), 0,
@@ -155281,11 +165325,11 @@ void proto_register_rrc(void) {
{ "supported", "rrc.supported",
FT_NONE, BASE_NONE, NULL, 0,
"T_supported_10", HFILL }},
- { &hf_rrc_fddPhysChCapability_04,
+ { &hf_rrc_fddPhysChCapability_05,
{ "fddPhysChCapability", "rrc.fddPhysChCapability",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fddPhysChCapability_04", HFILL }},
- { &hf_rrc_downlinkPhysChCapability_10,
+ "T_fddPhysChCapability_05", HFILL }},
+ { &hf_rrc_downlinkPhysChCapability_12,
{ "downlinkPhysChCapability", "rrc.downlinkPhysChCapability",
FT_NONE, BASE_NONE, NULL, 0,
"DL_PhysChCapabilityFDD_r4", HFILL }},
@@ -155297,11 +165341,11 @@ void proto_register_rrc(void) {
{ "tdd128-PhysChCapability", "rrc.tdd128_PhysChCapability",
FT_NONE, BASE_NONE, NULL, 0,
"T_tdd128_PhysChCapability_01", HFILL }},
- { &hf_rrc_fddPhysChCapability_05,
+ { &hf_rrc_fddPhysChCapability_06,
{ "fddPhysChCapability", "rrc.fddPhysChCapability",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fddPhysChCapability_05", HFILL }},
- { &hf_rrc_downlinkPhysChCapability_11,
+ "T_fddPhysChCapability_06", HFILL }},
+ { &hf_rrc_downlinkPhysChCapability_13,
{ "downlinkPhysChCapability", "rrc.downlinkPhysChCapability",
FT_NONE, BASE_NONE, NULL, 0,
"DL_PhysChCapabilityFDD_r5", HFILL }},
@@ -155309,7 +165353,7 @@ void proto_register_rrc(void) {
{ "tdd384-PhysChCapability", "rrc.tdd384_PhysChCapability",
FT_NONE, BASE_NONE, NULL, 0,
"T_tdd384_PhysChCapability_01", HFILL }},
- { &hf_rrc_downlinkPhysChCapability_12,
+ { &hf_rrc_downlinkPhysChCapability_14,
{ "downlinkPhysChCapability", "rrc.downlinkPhysChCapability",
FT_NONE, BASE_NONE, NULL, 0,
"DL_PhysChCapabilityTDD_r5", HFILL }},
@@ -155317,14 +165361,14 @@ void proto_register_rrc(void) {
{ "tdd128-PhysChCapability", "rrc.tdd128_PhysChCapability",
FT_NONE, BASE_NONE, NULL, 0,
"T_tdd128_PhysChCapability_02", HFILL }},
- { &hf_rrc_downlinkPhysChCapability_13,
+ { &hf_rrc_downlinkPhysChCapability_15,
{ "downlinkPhysChCapability", "rrc.downlinkPhysChCapability",
FT_NONE, BASE_NONE, NULL, 0,
"DL_PhysChCapabilityTDD_LCR_r5", HFILL }},
- { &hf_rrc_fddRF_Capability_03,
+ { &hf_rrc_fddRF_Capability_04,
{ "fddRF-Capability", "rrc.fddRF_Capability",
FT_NONE, BASE_NONE, NULL, 0,
- "T_fddRF_Capability_03", HFILL }},
+ "T_fddRF_Capability_04", HFILL }},
{ &hf_rrc_tdd384_RF_Capability_02,
{ "tdd384-RF-Capability", "rrc.tdd384_RF_Capability",
FT_NONE, BASE_NONE, NULL, 0,
@@ -155349,7 +165393,7 @@ void proto_register_rrc(void) {
{ "ul-RFC3095-Context", "rrc.ul_RFC3095_Context",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_rrc_totalRLC_AM_BufferSize_03,
+ { &hf_rrc_totalRLC_AM_BufferSize_04,
{ "totalRLC-AM-BufferSize", "rrc.totalRLC_AM_BufferSize",
FT_UINT32, BASE_DEC, VALS(rrc_TotalRLC_AM_BufferSize_r5_vals), 0,
"TotalRLC_AM_BufferSize_r5", HFILL }},
@@ -155389,7 +165433,7 @@ void proto_register_rrc(void) {
{ "rf-Capability", "rrc.rf_Capability",
FT_NONE, BASE_NONE, NULL, 0,
"RF_Capability_r4", HFILL }},
- { &hf_rrc_physicalChannelCapability_06,
+ { &hf_rrc_physicalChannelCapability_07,
{ "physicalChannelCapability", "rrc.physicalChannelCapability",
FT_NONE, BASE_NONE, NULL, 0,
"PhysicalChannelCapability_r4", HFILL }},
@@ -155397,7 +165441,7 @@ void proto_register_rrc(void) {
{ "ue-positioning-Capability", "rrc.ue_positioning_Capability",
FT_NONE, BASE_NONE, NULL, 0,
"UE_Positioning_Capability_r4", HFILL }},
- { &hf_rrc_measurementCapability_04,
+ { &hf_rrc_measurementCapability_05,
{ "measurementCapability", "rrc.measurementCapability",
FT_NONE, BASE_NONE, NULL, 0,
"MeasurementCapability_r4", HFILL }},
@@ -155405,11 +165449,11 @@ void proto_register_rrc(void) {
{ "pdcp-Capability", "rrc.pdcp_Capability",
FT_NONE, BASE_NONE, NULL, 0,
"PDCP_Capability_r5", HFILL }},
- { &hf_rrc_rlc_Capability_03,
+ { &hf_rrc_rlc_Capability_04,
{ "rlc-Capability", "rrc.rlc_Capability",
FT_NONE, BASE_NONE, NULL, 0,
"RLC_Capability_r5", HFILL }},
- { &hf_rrc_physicalChannelCapability_07,
+ { &hf_rrc_physicalChannelCapability_08,
{ "physicalChannelCapability", "rrc.physicalChannelCapability",
FT_NONE, BASE_NONE, NULL, 0,
"PhysicalChannelCapability_r5", HFILL }},
@@ -156327,7 +166371,7 @@ void proto_register_rrc(void) {
NULL, HFILL }},
/*--- End of included file: packet-rrc-hfarr.c ---*/
-#line 170 "../../asn1/rrc/packet-rrc-template.c"
+#line 174 "../../asn1/rrc/packet-rrc-template.c"
{ &hf_test,
{ "RAB Test", "rrc.RAB.test",
FT_UINT8, BASE_DEC, NULL, 0,
@@ -156360,6 +166404,7 @@ void proto_register_rrc(void) {
&ett_rrc_DL_DCCH_MessageType,
&ett_rrc_UL_DCCH_Message,
&ett_rrc_UL_DCCH_MessageType,
+ &ett_rrc_UL_DCCH_MessageType_ext,
&ett_rrc_DL_CCCH_Message,
&ett_rrc_DL_CCCH_MessageType,
&ett_rrc_UL_CCCH_Message,
@@ -156405,6 +166450,9 @@ void proto_register_rrc(void) {
&ett_rrc_T_v950NonCriticalExtensions,
&ett_rrc_T_nonCriticalExtensions_04,
&ett_rrc_T_criticalExtensions_04,
+ &ett_rrc_T_r10,
+ &ett_rrc_T_nonCriticalExtensions_05,
+ &ett_rrc_T_criticalExtensions_05,
&ett_rrc_ActiveSetUpdate_r3_IEs,
&ett_rrc_ActiveSetUpdate_v4b0ext_IEs,
&ett_rrc_ActiveSetUpdate_v590ext_IEs,
@@ -156419,12 +166467,13 @@ void proto_register_rrc(void) {
&ett_rrc_ActiveSetUpdate_v890ext_IEs,
&ett_rrc_ActiveSetUpdate_r9_IEs,
&ett_rrc_ActiveSetUpdate_v950ext_IEs,
+ &ett_rrc_ActiveSetUpdate_r10_IEs,
&ett_rrc_ActiveSetUpdateComplete,
&ett_rrc_T_laterNonCriticalExtensions_01,
- &ett_rrc_T_nonCriticalExtensions_05,
+ &ett_rrc_T_nonCriticalExtensions_06,
&ett_rrc_ActiveSetUpdateFailure,
&ett_rrc_T_laterNonCriticalExtensions_02,
- &ett_rrc_T_nonCriticalExtensions_06,
+ &ett_rrc_T_nonCriticalExtensions_07,
&ett_rrc_AssistanceDataDelivery,
&ett_rrc_T_r3_01,
&ett_rrc_T_v3a0NonCriticalExtensions,
@@ -156433,31 +166482,33 @@ void proto_register_rrc(void) {
&ett_rrc_T_v770NonCriticalExtension,
&ett_rrc_T_v860NonCriticalExtension,
&ett_rrc_T_v920NonCriticalExtension,
- &ett_rrc_T_nonCriticalExtensions_07,
+ &ett_rrc_T_va40NonCriticalExtension,
+ &ett_rrc_T_nonCriticalExtensions_08,
&ett_rrc_T_later_than_r3_01,
- &ett_rrc_T_criticalExtensions_05,
+ &ett_rrc_T_criticalExtensions_06,
&ett_rrc_AssistanceDataDelivery_r3_IEs,
&ett_rrc_AssistanceDataDelivery_v3a0ext,
&ett_rrc_AssistanceDataDelivery_v4b0ext_IEs,
&ett_rrc_AssistanceDataDelivery_v770ext_IEs,
&ett_rrc_AssistanceDataDelivery_v860ext_IEs,
&ett_rrc_AssistanceDataDelivery_v920ext_IEs,
+ &ett_rrc_AssistanceDataDelivery_va40ext_IEs,
&ett_rrc_CellChangeOrderFromUTRAN,
&ett_rrc_T_r3_02,
&ett_rrc_T_laterNonCriticalExtensions_04,
&ett_rrc_T_v590NonCriticalExtensions_01,
- &ett_rrc_T_nonCriticalExtensions_08,
+ &ett_rrc_T_nonCriticalExtensions_09,
&ett_rrc_T_later_than_r3_02,
- &ett_rrc_T_criticalExtensions_06,
+ &ett_rrc_T_criticalExtensions_07,
&ett_rrc_CellChangeOrderFromUTRAN_r3_IEs,
&ett_rrc_CellChangeOrderFromUTRAN_v590ext_IEs,
&ett_rrc_T_geran_SystemInfoType,
&ett_rrc_CellChangeOrderFromUTRANFailure,
&ett_rrc_T_r3_03,
&ett_rrc_T_laterNonCriticalExtensions_05,
- &ett_rrc_T_nonCriticalExtensions_09,
+ &ett_rrc_T_nonCriticalExtensions_10,
&ett_rrc_T_dummy,
- &ett_rrc_T_criticalExtensions_07,
+ &ett_rrc_T_criticalExtensions_08,
&ett_rrc_CellChangeOrderFromUTRANFailure_r3_IEs,
&ett_rrc_CellUpdate,
&ett_rrc_T_laterNonCriticalExtensions_06,
@@ -156466,10 +166517,11 @@ void proto_register_rrc(void) {
&ett_rrc_T_v6b0NonCriticalExtensions_01,
&ett_rrc_T_v770NonCriticalExtensions,
&ett_rrc_T_v860NonCriticalExtensions,
- &ett_rrc_T_nonCriticalExtensions_10,
+ &ett_rrc_T_va40NonCriticalExtensions,
+ &ett_rrc_T_nonCriticalExtensions_11,
&ett_rrc_CellUpdate_r3_add_ext_IEs,
&ett_rrc_T_v7g0NonCriticalExtensions_02,
- &ett_rrc_T_nonCriticalExtensions_11,
+ &ett_rrc_T_nonCriticalExtensions_12,
&ett_rrc_CellUpdate_v590ext,
&ett_rrc_CellUpdate_v690ext_IEs,
&ett_rrc_CellUpdate_v6b0ext_IEs,
@@ -156477,6 +166529,7 @@ void proto_register_rrc(void) {
&ett_rrc_CellUpdate_v7e0ext_IEs,
&ett_rrc_CellUpdate_v7g0ext_IEs,
&ett_rrc_CellUpdate_v860ext_IEs,
+ &ett_rrc_CellUpdate_va40ext_IEs,
&ett_rrc_CellUpdateConfirm,
&ett_rrc_T_r3_04,
&ett_rrc_T_v3a0NonCriticalExtensions_01,
@@ -156485,42 +166538,45 @@ void proto_register_rrc(void) {
&ett_rrc_T_v590NonCriticalExtenstions,
&ett_rrc_T_v5d0NonCriticalExtenstions,
&ett_rrc_T_v690NonCriticalExtensions_02,
- &ett_rrc_T_nonCriticalExtensions_12,
+ &ett_rrc_T_nonCriticalExtensions_13,
&ett_rrc_T_later_than_r3_03,
- &ett_rrc_T_criticalExtensions_08,
+ &ett_rrc_T_criticalExtensions_09,
&ett_rrc_T_r4,
&ett_rrc_T_v4d0NonCriticalExtensions,
&ett_rrc_T_v590NonCriticalExtenstions_01,
&ett_rrc_T_v5d0NonCriticalExtenstions_01,
&ett_rrc_T_v690NonCriticalExtensions_03,
- &ett_rrc_T_nonCriticalExtensions_13,
- &ett_rrc_T_criticalExtensions_09,
+ &ett_rrc_T_nonCriticalExtensions_14,
+ &ett_rrc_T_criticalExtensions_10,
&ett_rrc_T_r5,
&ett_rrc_T_v5d0NonCriticalExtenstions_02,
&ett_rrc_T_v690NonCriticalExtensions_04,
- &ett_rrc_T_nonCriticalExtensions_14,
- &ett_rrc_T_criticalExtensions_10,
- &ett_rrc_T_r6_01,
- &ett_rrc_T_v6b0NonCriticalExtensions_02,
&ett_rrc_T_nonCriticalExtensions_15,
&ett_rrc_T_criticalExtensions_11,
+ &ett_rrc_T_r6_01,
+ &ett_rrc_T_v6b0NonCriticalExtensions_02,
+ &ett_rrc_T_nonCriticalExtensions_16,
+ &ett_rrc_T_criticalExtensions_12,
&ett_rrc_T_r7_01,
&ett_rrc_T_v780NonCriticalExtensions_01,
&ett_rrc_T_v860NonCriticalExtensions_01,
- &ett_rrc_T_nonCriticalExtensions_16,
- &ett_rrc_T_criticalExtensions_12,
+ &ett_rrc_T_nonCriticalExtensions_17,
+ &ett_rrc_T_criticalExtensions_13,
&ett_rrc_T_r8_01,
&ett_rrc_T_v7d0NonCriticalExtensions,
&ett_rrc_T_v7f0NonCriticalExtensions_01,
&ett_rrc_T_v890NonCriticalExtensions_01,
&ett_rrc_T_v7g0NonCriticalExtensions_03,
&ett_rrc_T_v8a0NonCriticalExtensions,
- &ett_rrc_T_nonCriticalExtensions_17,
- &ett_rrc_T_criticalExtensions_13,
- &ett_rrc_T_r9_01,
- &ett_rrc_T_v950NonCriticalExtensions_01,
&ett_rrc_T_nonCriticalExtensions_18,
&ett_rrc_T_criticalExtensions_14,
+ &ett_rrc_T_r9_01,
+ &ett_rrc_T_v950NonCriticalExtensions_01,
+ &ett_rrc_T_nonCriticalExtensions_19,
+ &ett_rrc_T_criticalExtensions_15,
+ &ett_rrc_T_r10_01,
+ &ett_rrc_T_nonCriticalExtensions_20,
+ &ett_rrc_T_criticalExtensions_16,
&ett_rrc_CellUpdateConfirm_r3_IEs,
&ett_rrc_T_modeSpecificTransChInfo,
&ett_rrc_T_fdd,
@@ -156547,7 +166603,7 @@ void proto_register_rrc(void) {
&ett_rrc_CellUpdateConfirm_r7_add_ext_IEs,
&ett_rrc_T_v7f0NonCriticalExtensions_02,
&ett_rrc_T_v7g0NonCriticalExtensions_04,
- &ett_rrc_T_nonCriticalExtensions_19,
+ &ett_rrc_T_nonCriticalExtensions_21,
&ett_rrc_CellUpdateConfirm_v780ext_IEs,
&ett_rrc_CellUpdateConfirm_v7d0ext_IEs,
&ett_rrc_CellUpdateConfirm_v7f0ext_IEs,
@@ -156559,6 +166615,7 @@ void proto_register_rrc(void) {
&ett_rrc_CellUpdateConfirm_v8a0ext_IEs,
&ett_rrc_CellUpdateConfirm_r9_IEs,
&ett_rrc_CellUpdateConfirm_v950ext_IEs,
+ &ett_rrc_CellUpdateConfirm_r10_IEs,
&ett_rrc_CellUpdateConfirm_CCCH,
&ett_rrc_T_r3_05,
&ett_rrc_T_laterNonCriticalExtensions_08,
@@ -156566,89 +166623,95 @@ void proto_register_rrc(void) {
&ett_rrc_T_v590NonCriticalExtensions_03,
&ett_rrc_T_v5d0NonCriticalExtenstions_03,
&ett_rrc_T_v690NonCriticalExtensions_05,
- &ett_rrc_T_nonCriticalExtensions_20,
+ &ett_rrc_T_nonCriticalExtensions_22,
&ett_rrc_T_later_than_r3_04,
- &ett_rrc_T_criticalExtensions_15,
+ &ett_rrc_T_criticalExtensions_17,
&ett_rrc_T_r4_01,
&ett_rrc_T_v4d0NonCriticalExtensions_01,
&ett_rrc_T_v590NonCriticalExtensions_04,
&ett_rrc_T_v5d0NonCriticalExtenstions_04,
&ett_rrc_T_v690NonCriticalExtensions_06,
- &ett_rrc_T_nonCriticalExtensions_21,
- &ett_rrc_T_criticalExtensions_16,
+ &ett_rrc_T_nonCriticalExtensions_23,
+ &ett_rrc_T_criticalExtensions_18,
&ett_rrc_T_r5_01,
&ett_rrc_T_v5d0NonCriticalExtenstions_05,
&ett_rrc_T_v690NonCriticalExtensions_07,
- &ett_rrc_T_nonCriticalExtensions_22,
- &ett_rrc_T_criticalExtensions_17,
+ &ett_rrc_T_nonCriticalExtensions_24,
+ &ett_rrc_T_criticalExtensions_19,
&ett_rrc_T_r6_02,
&ett_rrc_T_v6b0NonCriticalExtensions_03,
- &ett_rrc_T_nonCriticalExtensions_23,
- &ett_rrc_T_criticalExtensions_18,
+ &ett_rrc_T_nonCriticalExtensions_25,
+ &ett_rrc_T_criticalExtensions_20,
&ett_rrc_T_r7_02,
&ett_rrc_T_v780NonCriticalExtensions_02,
&ett_rrc_T_v860NonCriticalExtensions_02,
- &ett_rrc_T_nonCriticalExtensions_24,
- &ett_rrc_T_criticalExtensions_19,
+ &ett_rrc_T_nonCriticalExtensions_26,
+ &ett_rrc_T_criticalExtensions_21,
&ett_rrc_T_r8_02,
&ett_rrc_T_v7d0NonCriticalExtensions_01,
&ett_rrc_T_v890NonCriticalExtensions_02,
&ett_rrc_T_v8a0NonCriticalExtensions_01,
&ett_rrc_T_v7f0NonCriticalExtensions_03,
&ett_rrc_T_v7g0NonCriticalExtensions_05,
- &ett_rrc_T_nonCriticalExtensions_25,
- &ett_rrc_T_criticalExtensions_20,
+ &ett_rrc_T_nonCriticalExtensions_27,
+ &ett_rrc_T_criticalExtensions_22,
&ett_rrc_T_r9_02,
- &ett_rrc_T_nonCriticalExtensions_26,
- &ett_rrc_T_criticalExtensions_21,
+ &ett_rrc_T_nonCriticalExtensions_28,
+ &ett_rrc_T_criticalExtensions_23,
+ &ett_rrc_T_r10_02,
+ &ett_rrc_T_nonCriticalExtensions_29,
+ &ett_rrc_T_criticalExtensions_24,
&ett_rrc_CounterCheck,
&ett_rrc_T_r3_06,
&ett_rrc_T_laterNonCriticalExtensions_09,
- &ett_rrc_T_nonCriticalExtensions_27,
+ &ett_rrc_T_nonCriticalExtensions_30,
&ett_rrc_T_later_than_r3_05,
- &ett_rrc_T_criticalExtensions_22,
+ &ett_rrc_T_criticalExtensions_25,
&ett_rrc_CounterCheck_r3_IEs,
&ett_rrc_CounterCheckResponse,
&ett_rrc_T_laterNonCriticalExtensions_10,
- &ett_rrc_T_nonCriticalExtensions_28,
+ &ett_rrc_T_nonCriticalExtensions_31,
&ett_rrc_DownlinkDirectTransfer,
&ett_rrc_T_r3_07,
&ett_rrc_T_laterNonCriticalExtensions_11,
- &ett_rrc_T_nonCriticalExtensions_29,
+ &ett_rrc_T_nonCriticalExtensions_32,
&ett_rrc_T_later_than_r3_06,
- &ett_rrc_T_criticalExtensions_23,
+ &ett_rrc_T_criticalExtensions_26,
&ett_rrc_DownlinkDirectTransfer_r3_IEs,
&ett_rrc_ETWSPrimaryNotificationWithSecurity,
- &ett_rrc_T_nonCriticalExtensions_30,
+ &ett_rrc_T_nonCriticalExtensions_33,
&ett_rrc_HandoverToUTRANCommand,
&ett_rrc_T_r3_08,
- &ett_rrc_T_nonCriticalExtensions_31,
- &ett_rrc_T_criticalExtensions_24,
+ &ett_rrc_T_nonCriticalExtensions_34,
+ &ett_rrc_T_criticalExtensions_27,
&ett_rrc_T_r4_02,
- &ett_rrc_T_nonCriticalExtensions_32,
- &ett_rrc_T_criticalExtensions_25,
+ &ett_rrc_T_nonCriticalExtensions_35,
+ &ett_rrc_T_criticalExtensions_28,
&ett_rrc_T_r5_02,
- &ett_rrc_T_nonCriticalExtensions_33,
- &ett_rrc_T_criticalExtensions_26,
+ &ett_rrc_T_nonCriticalExtensions_36,
+ &ett_rrc_T_criticalExtensions_29,
&ett_rrc_T_r6_03,
&ett_rrc_T_v6b0NonCriticalExtensions_04,
- &ett_rrc_T_nonCriticalExtensions_34,
- &ett_rrc_T_criticalExtensions_27,
+ &ett_rrc_T_nonCriticalExtensions_37,
+ &ett_rrc_T_criticalExtensions_30,
&ett_rrc_T_r7_03,
&ett_rrc_T_v780NonCriticalExtensions_03,
&ett_rrc_T_v820NonCriticalExtensions,
&ett_rrc_T_v7d0NonCriticalExtensions_02,
- &ett_rrc_T_nonCriticalExtensions_35,
- &ett_rrc_T_criticalExtensions_28,
+ &ett_rrc_T_nonCriticalExtensions_38,
+ &ett_rrc_T_criticalExtensions_31,
&ett_rrc_T_r8_03,
&ett_rrc_T_v7d0NonCriticalExtensions_03,
&ett_rrc_T_v890NonCriticalExtensions_03,
&ett_rrc_T_v8a0NonCriticalExtensions_02,
- &ett_rrc_T_nonCriticalExtensions_36,
- &ett_rrc_T_criticalExtensions_29,
+ &ett_rrc_T_nonCriticalExtensions_39,
+ &ett_rrc_T_criticalExtensions_32,
&ett_rrc_T_r9_03,
- &ett_rrc_T_nonCriticalExtensions_37,
- &ett_rrc_T_criticalExtensions_30,
+ &ett_rrc_T_nonCriticalExtensions_40,
+ &ett_rrc_T_criticalExtensions_33,
+ &ett_rrc_T_r10_03,
+ &ett_rrc_T_nonCriticalExtensions_41,
+ &ett_rrc_T_criticalExtensions_34,
&ett_rrc_HandoverToUTRANCommand_r3_IEs,
&ett_rrc_T_specificationMode,
&ett_rrc_T_complete,
@@ -156739,9 +166802,23 @@ void proto_register_rrc(void) {
&ett_rrc_T_tdd384_05,
&ett_rrc_T_tdd128_05,
&ett_rrc_T_tdd768_02,
+ &ett_rrc_HandoverToUTRANCommand_r10_IEs,
+ &ett_rrc_T_specificationMode_07,
+ &ett_rrc_T_complete_07,
+ &ett_rrc_T_preconfiguration_07,
+ &ett_rrc_T_preConfigMode_07,
+ &ett_rrc_T_defaultConfig_07,
+ &ett_rrc_T_modeSpecificInfo_10,
+ &ett_rrc_T_fdd_16,
+ &ett_rrc_T_tdd_07,
+ &ett_rrc_T_tdd384_06,
+ &ett_rrc_T_tdd128_06,
+ &ett_rrc_T_tdd768_03,
&ett_rrc_HandoverToUTRANComplete,
&ett_rrc_T_laterNonCriticalExtensions_12,
- &ett_rrc_T_nonCriticalExtensions_38,
+ &ett_rrc_T_va40NonCriticalExtensions_01,
+ &ett_rrc_T_nonCriticalExtensions_42,
+ &ett_rrc_HandoverToUTRANComplete_va40ext,
&ett_rrc_InitialDirectTransfer,
&ett_rrc_T_v3a0NonCriticalExtensions_02,
&ett_rrc_T_laterNonCriticalExtensions_13,
@@ -156749,27 +166826,27 @@ void proto_register_rrc(void) {
&ett_rrc_T_v690NonCriticalExtensions_08,
&ett_rrc_T_v770NonCriticalExtensions_01,
&ett_rrc_T_v860NonCriticalExtensions_03,
- &ett_rrc_T_nonCriticalExtensions_39,
+ &ett_rrc_T_nonCriticalExtensions_43,
&ett_rrc_InitialDirectTransfer_v3a0ext,
&ett_rrc_InitialDirectTransfer_v590ext,
&ett_rrc_InitialDirectTransfer_v690ext_IEs,
&ett_rrc_InitialDirectTransfer_v770ext_IEs,
&ett_rrc_InitialDirectTransfer_v860ext_IEs,
&ett_rrc_InitialDirectTransfer_r3_add_ext_IEs,
- &ett_rrc_T_nonCriticalExtensions_40,
+ &ett_rrc_T_nonCriticalExtensions_44,
&ett_rrc_InitialDirectTransfer_v7g0ext_IEs,
&ett_rrc_HandoverFromUTRANCommand_GSM,
&ett_rrc_T_r3_09,
&ett_rrc_T_laterNonCriticalExtensions_14,
&ett_rrc_T_v690NonCriticalExtensions_09,
&ett_rrc_T_v860NonCriticalExtensions_04,
- &ett_rrc_T_nonCriticalExtensions_41,
+ &ett_rrc_T_nonCriticalExtensions_45,
&ett_rrc_T_later_than_r3_07,
- &ett_rrc_T_criticalExtensions_31,
+ &ett_rrc_T_criticalExtensions_35,
&ett_rrc_T_r6_04,
&ett_rrc_T_v860NonCriticalExtensions_05,
- &ett_rrc_T_nonCriticalExtensions_42,
- &ett_rrc_T_criticalExtensions_32,
+ &ett_rrc_T_nonCriticalExtensions_46,
+ &ett_rrc_T_criticalExtensions_36,
&ett_rrc_HandoverFromUTRANCommand_GSM_r3_IEs,
&ett_rrc_T_gsm_message,
&ett_rrc_T_single_GSM_Message_r3,
@@ -156785,9 +166862,9 @@ void proto_register_rrc(void) {
&ett_rrc_HandoverFromUTRANCommand_GERANIu,
&ett_rrc_T_handoverFromUTRANCommand_GERANIu,
&ett_rrc_T_r5_03,
- &ett_rrc_T_nonCriticalExtensions_43,
+ &ett_rrc_T_nonCriticalExtensions_47,
&ett_rrc_T_later_than_r5,
- &ett_rrc_T_criticalExtensions_33,
+ &ett_rrc_T_criticalExtensions_37,
&ett_rrc_HandoverFromUTRANCommand_GERANIu_r5_IEs,
&ett_rrc_T_geranIu_Message,
&ett_rrc_T_single_GERANIu_Message,
@@ -156795,15 +166872,15 @@ void proto_register_rrc(void) {
&ett_rrc_HandoverFromUTRANCommand_CDMA2000,
&ett_rrc_T_r3_10,
&ett_rrc_T_laterNonCriticalExtensions_15,
- &ett_rrc_T_nonCriticalExtensions_44,
+ &ett_rrc_T_nonCriticalExtensions_48,
&ett_rrc_T_later_than_r3_08,
- &ett_rrc_T_criticalExtensions_34,
+ &ett_rrc_T_criticalExtensions_38,
&ett_rrc_HandoverFromUTRANCommand_CDMA2000_r3_IEs,
&ett_rrc_HandoverFromUTRANCommand_EUTRA,
- &ett_rrc_T_criticalExtensions_35,
+ &ett_rrc_T_criticalExtensions_39,
&ett_rrc_T_r8_04,
- &ett_rrc_T_nonCriticalExtensions_45,
- &ett_rrc_T_criticalExtensions_36,
+ &ett_rrc_T_nonCriticalExtensions_49,
+ &ett_rrc_T_criticalExtensions_40,
&ett_rrc_HandoverFromUTRANCommand_EUTRA_r8_IEs,
&ett_rrc_HandoverFromUTRANFailure,
&ett_rrc_T_interRATMessage,
@@ -156812,7 +166889,7 @@ void proto_register_rrc(void) {
&ett_rrc_T_laterNonCriticalExtensions_16,
&ett_rrc_T_v590NonCriticalExtensions_06,
&ett_rrc_T_v860NonCriticalExtensions_06,
- &ett_rrc_T_nonCriticalExtensions_46,
+ &ett_rrc_T_nonCriticalExtensions_50,
&ett_rrc_HandoverFromUtranFailure_v590ext_IEs,
&ett_rrc_HandoverFromUtranFailure_v860ext_IEs,
&ett_rrc_InterRATHandoverInfo,
@@ -156835,7 +166912,8 @@ void proto_register_rrc(void) {
&ett_rrc_InterRATHandoverInfo_r3_add_ext_IEs,
&ett_rrc_T_v7e0NonCriticalExtensions,
&ett_rrc_T_v7f0NonCriticalExtensions_04,
- &ett_rrc_T_nonCriticalExtensions_47,
+ &ett_rrc_T_va40NonCriticalExtensions_02,
+ &ett_rrc_T_nonCriticalExtensions_51,
&ett_rrc_InterRATHandoverInfo_v4b0ext_IEs,
&ett_rrc_InterRATHandoverInfo_v4d0ext_IEs,
&ett_rrc_InterRATHandoverInfo_v590ext_IEs,
@@ -156850,7 +166928,8 @@ void proto_register_rrc(void) {
&ett_rrc_T_v920NonCriticalExtensions,
&ett_rrc_T_v8b0NonCriticalExtensions,
&ett_rrc_T_v950NonCriticalExtensions_02,
- &ett_rrc_T_nonCriticalExtensions_48,
+ &ett_rrc_T_va40NonCriticalExtensions_03,
+ &ett_rrc_T_nonCriticalExtensions_52,
&ett_rrc_InterRATHandoverInfo_v6b0ext_IEs,
&ett_rrc_InterRATHandoverInfo_v6e0ext_IEs,
&ett_rrc_InterRATHandoverInfo_v770ext_IEs,
@@ -156862,6 +166941,8 @@ void proto_register_rrc(void) {
&ett_rrc_InterRATHandoverInfo_v920ext_IEs,
&ett_rrc_InterRATHandoverInfo_v8b0ext_IEs,
&ett_rrc_InterRATHandoverInfo_v950ext_IEs,
+ &ett_rrc_InterRATHandoverInfo_va40ext_IEs,
+ &ett_rrc_InterRATHandoverInfoBand_va40ext_IEs,
&ett_rrc_MeasurementControl,
&ett_rrc_T_r3_11,
&ett_rrc_T_v390nonCriticalExtensions,
@@ -156870,32 +166951,35 @@ void proto_register_rrc(void) {
&ett_rrc_T_v4b0NonCriticalExtensions_05,
&ett_rrc_T_v590NonCriticalExtensions_08,
&ett_rrc_T_v5b0NonCriticalExtensions,
- &ett_rrc_T_nonCriticalExtensions_49,
+ &ett_rrc_T_nonCriticalExtensions_53,
&ett_rrc_T_later_than_r3_09,
- &ett_rrc_T_criticalExtensions_37,
+ &ett_rrc_T_criticalExtensions_41,
&ett_rrc_T_r4_03,
&ett_rrc_T_v4d0NonCriticalExtensions_03,
&ett_rrc_T_v590NonCriticalExtensions_09,
&ett_rrc_T_v5b0NonCriticalExtensions_01,
- &ett_rrc_T_nonCriticalExtensions_50,
+ &ett_rrc_T_nonCriticalExtensions_54,
&ett_rrc_T_later_than_r4,
- &ett_rrc_T_criticalExtensions_38,
+ &ett_rrc_T_criticalExtensions_42,
&ett_rrc_T_r6_05,
&ett_rrc_T_v6a0NonCriticalExtensions,
- &ett_rrc_T_nonCriticalExtensions_51,
- &ett_rrc_T_criticalExtensions_39,
+ &ett_rrc_T_nonCriticalExtensions_55,
+ &ett_rrc_T_criticalExtensions_43,
&ett_rrc_T_r7_04,
&ett_rrc_T_v7b0NonCriticalExtensions,
- &ett_rrc_T_nonCriticalExtensions_52,
- &ett_rrc_T_criticalExtensions_40,
+ &ett_rrc_T_nonCriticalExtensions_56,
+ &ett_rrc_T_criticalExtensions_44,
&ett_rrc_T_r8_05,
&ett_rrc_T_v8a0NonCriticalExtensions_03,
- &ett_rrc_T_nonCriticalExtensions_53,
- &ett_rrc_T_criticalExtensions_41,
+ &ett_rrc_T_nonCriticalExtensions_57,
+ &ett_rrc_T_criticalExtensions_45,
&ett_rrc_T_r9_04,
&ett_rrc_T_v970NonCriticalExtensions,
- &ett_rrc_T_nonCriticalExtensions_54,
- &ett_rrc_T_criticalExtensions_42,
+ &ett_rrc_T_nonCriticalExtensions_58,
+ &ett_rrc_T_criticalExtensions_46,
+ &ett_rrc_T_r10_04,
+ &ett_rrc_T_nonCriticalExtensions_59,
+ &ett_rrc_T_criticalExtensions_47,
&ett_rrc_MeasurementControl_r3_IEs,
&ett_rrc_MeasurementControl_v390ext,
&ett_rrc_MeasurementControl_v3a0ext,
@@ -156911,10 +166995,11 @@ void proto_register_rrc(void) {
&ett_rrc_MeasurementControl_v8a0ext_IEs,
&ett_rrc_MeasurementControl_r9_IEs,
&ett_rrc_MeasurementControl_v970ext_IEs,
+ &ett_rrc_MeasurementControl_r10_IEs,
&ett_rrc_MeasurementControlFailure,
&ett_rrc_T_laterNonCriticalExtensions_19,
&ett_rrc_T_v590NonCriticalExtensions_10,
- &ett_rrc_T_nonCriticalExtensions_55,
+ &ett_rrc_T_nonCriticalExtensions_60,
&ett_rrc_MeasurementControlFailure_v590ext_IEs,
&ett_rrc_MeasurementReport,
&ett_rrc_T_v390nonCriticalExtensions_01,
@@ -156927,7 +167012,8 @@ void proto_register_rrc(void) {
&ett_rrc_T_v860NonCriticalExtensions_08,
&ett_rrc_T_v920NonCriticalExtensions_01,
&ett_rrc_T_v970NonCriticalExtensions_01,
- &ett_rrc_T_nonCriticalExtensions_56,
+ &ett_rrc_T_va40NonCriticalExtensions_04,
+ &ett_rrc_T_nonCriticalExtensions_61,
&ett_rrc_MeasurementReport_v390ext,
&ett_rrc_MeasurementReport_v4b0ext_IEs,
&ett_rrc_MeasurementReport_v590ext_IEs,
@@ -156937,16 +167023,17 @@ void proto_register_rrc(void) {
&ett_rrc_MeasurementReport_v860ext_IEs,
&ett_rrc_MeasurementReport_v920ext_IEs,
&ett_rrc_MeasurementReport_v970ext_IEs,
+ &ett_rrc_MeasurementReport_va40ext_IEs,
&ett_rrc_PagingType1,
&ett_rrc_T_laterNonCriticalExtensions_21,
&ett_rrc_T_v590NonCriticalExtensions_12,
&ett_rrc_T_v860NonCriticalExtensions_09,
- &ett_rrc_T_nonCriticalExtensions_57,
+ &ett_rrc_T_nonCriticalExtensions_62,
&ett_rrc_PagingType1_v590ext_IEs,
&ett_rrc_PagingType1_v860ext_IEs,
&ett_rrc_PagingType2,
&ett_rrc_T_laterNonCriticalExtensions_22,
- &ett_rrc_T_nonCriticalExtensions_58,
+ &ett_rrc_T_nonCriticalExtensions_63,
&ett_rrc_PhysicalChannelReconfiguration,
&ett_rrc_T_r3_12,
&ett_rrc_T_v3a0NonCriticalExtensions_05,
@@ -156955,57 +167042,60 @@ void proto_register_rrc(void) {
&ett_rrc_T_v590NonCriticalExtenstions_02,
&ett_rrc_T_v690NonCriticalExtensions_12,
&ett_rrc_T_v770NonCriticalExtensions_04,
- &ett_rrc_T_nonCriticalExtensions_59,
+ &ett_rrc_T_nonCriticalExtensions_64,
&ett_rrc_T_later_than_r3_10,
- &ett_rrc_T_criticalExtensions_43,
+ &ett_rrc_T_criticalExtensions_48,
&ett_rrc_T_r4_04,
&ett_rrc_T_v4d0NonCriticalExtensions_04,
&ett_rrc_T_v590NonCriticalExtenstions_03,
&ett_rrc_T_v690NonCriticalExtensions_13,
&ett_rrc_T_v770NonCriticalExtensions_05,
- &ett_rrc_T_nonCriticalExtensions_60,
- &ett_rrc_T_criticalExtensions_44,
+ &ett_rrc_T_nonCriticalExtensions_65,
+ &ett_rrc_T_criticalExtensions_49,
&ett_rrc_T_r5_04,
&ett_rrc_T_v690NonCriticalExtensions_14,
&ett_rrc_T_v770NonCriticalExtensions_06,
- &ett_rrc_T_nonCriticalExtensions_61,
- &ett_rrc_T_criticalExtensions_45,
+ &ett_rrc_T_nonCriticalExtensions_66,
+ &ett_rrc_T_criticalExtensions_50,
&ett_rrc_T_r6_06,
&ett_rrc_T_v6b0NonCriticalExtensions_05,
&ett_rrc_T_v770NonCriticalExtensions_07,
- &ett_rrc_T_nonCriticalExtensions_62,
- &ett_rrc_T_criticalExtensions_46,
+ &ett_rrc_T_nonCriticalExtensions_67,
+ &ett_rrc_T_criticalExtensions_51,
&ett_rrc_T_r7_05,
&ett_rrc_T_v780NonCriticalExtensions_04,
&ett_rrc_T_v7d0NonCriticalExtensions_04,
&ett_rrc_T_v7f0NonCriticalExtensions_05,
&ett_rrc_T_v7g0NonCriticalExtensions_06,
- &ett_rrc_T_nonCriticalExtensions_63,
- &ett_rrc_T_criticalExtensions_47,
+ &ett_rrc_T_nonCriticalExtensions_68,
+ &ett_rrc_T_criticalExtensions_52,
&ett_rrc_T_r8_06,
&ett_rrc_T_v7d0NonCriticalExtensions_05,
&ett_rrc_T_v7f0NonCriticalExtensions_06,
&ett_rrc_T_v890NonCriticalExtensions_04,
&ett_rrc_T_v7g0NonCriticalExtensions_07,
&ett_rrc_T_v8a0NonCriticalExtensions_04,
- &ett_rrc_T_nonCriticalExtensions_64,
- &ett_rrc_T_criticalExtensions_48,
+ &ett_rrc_T_nonCriticalExtensions_69,
+ &ett_rrc_T_criticalExtensions_53,
&ett_rrc_T_r9_05,
&ett_rrc_T_v950NonCriticalExtensions_03,
- &ett_rrc_T_nonCriticalExtensions_65,
- &ett_rrc_T_criticalExtensions_49,
+ &ett_rrc_T_nonCriticalExtensions_70,
+ &ett_rrc_T_criticalExtensions_54,
+ &ett_rrc_T_r10_05,
+ &ett_rrc_T_nonCriticalExtensions_71,
+ &ett_rrc_T_criticalExtensions_55,
&ett_rrc_PhysicalChannelReconfiguration_r3_IEs,
- &ett_rrc_T_modeSpecificInfo_10,
- &ett_rrc_T_fdd_16,
+ &ett_rrc_T_modeSpecificInfo_11,
+ &ett_rrc_T_fdd_17,
&ett_rrc_PhysicalChannelReconfiguration_v3a0ext,
&ett_rrc_PhysicalChannelReconfiguration_v4b0ext_IEs,
&ett_rrc_PhysicalChannelReconfiguration_v590ext_IEs,
&ett_rrc_PhysicalChannelReconfiguration_r4_IEs,
- &ett_rrc_T_modeSpecificInfo_11,
- &ett_rrc_T_fdd_17,
- &ett_rrc_PhysicalChannelReconfiguration_r5_IEs,
&ett_rrc_T_modeSpecificInfo_12,
&ett_rrc_T_fdd_18,
+ &ett_rrc_PhysicalChannelReconfiguration_r5_IEs,
+ &ett_rrc_T_modeSpecificInfo_13,
+ &ett_rrc_T_fdd_19,
&ett_rrc_PhysicalChannelReconfiguration_r6_IEs,
&ett_rrc_PhysicalChannelReconfiguration_v690ext_IEs,
&ett_rrc_PhysicalChannelReconfiguration_v6b0ext_IEs,
@@ -157020,26 +167110,27 @@ void proto_register_rrc(void) {
&ett_rrc_PhysicalChannelReconfiguration_v8a0ext_IEs,
&ett_rrc_PhysicalChannelReconfiguration_r9_IEs,
&ett_rrc_PhysicalChannelReconfiguration_v950ext_IEs,
+ &ett_rrc_PhysicalChannelReconfiguration_r10_IEs,
&ett_rrc_PhysicalChannelReconfigurationComplete,
&ett_rrc_T_laterNonCriticalExtensions_24,
&ett_rrc_T_v770NonCriticalExtensions_08,
- &ett_rrc_T_nonCriticalExtensions_66,
+ &ett_rrc_T_nonCriticalExtensions_72,
&ett_rrc_PhysicalChannelReconfigurationComplete_v770ext_IEs,
&ett_rrc_PhysicalChannelReconfigurationFailure,
&ett_rrc_T_laterNonCriticalExtensions_25,
- &ett_rrc_T_nonCriticalExtensions_67,
+ &ett_rrc_T_nonCriticalExtensions_73,
&ett_rrc_PhysicalSharedChannelAllocation,
&ett_rrc_T_r3_13,
&ett_rrc_T_laterNonCriticalExtensions_26,
- &ett_rrc_T_nonCriticalExtensions_68,
+ &ett_rrc_T_nonCriticalExtensions_74,
&ett_rrc_T_later_than_r3_11,
- &ett_rrc_T_criticalExtensions_50,
+ &ett_rrc_T_criticalExtensions_56,
&ett_rrc_T_r4_05,
&ett_rrc_T_v4d0NonCriticalExtensions_05,
&ett_rrc_T_v690NonCriticalExtensions_15,
&ett_rrc_T_v770NonCriticalExtensions_09,
- &ett_rrc_T_nonCriticalExtensions_69,
- &ett_rrc_T_criticalExtensions_51,
+ &ett_rrc_T_nonCriticalExtensions_75,
+ &ett_rrc_T_criticalExtensions_57,
&ett_rrc_PhysicalSharedChannelAllocation_r3_IEs,
&ett_rrc_PhysicalSharedChannelAllocation_r4_IEs,
&ett_rrc_PhysicalSharedChannelAllocation_v690ext_IEs,
@@ -157048,7 +167139,7 @@ void proto_register_rrc(void) {
&ett_rrc_T_allocationConfirmation,
&ett_rrc_T_laterNonCriticalExtensions_27,
&ett_rrc_T_v590NonCriticalExtensions_13,
- &ett_rrc_T_nonCriticalExtensions_70,
+ &ett_rrc_T_nonCriticalExtensions_76,
&ett_rrc_PUSCHCapacityRequest_v590ext,
&ett_rrc_RadioBearerReconfiguration,
&ett_rrc_T_r3_14,
@@ -157059,90 +167150,93 @@ void proto_register_rrc(void) {
&ett_rrc_T_v5d0NonCriticalExtenstions_06,
&ett_rrc_T_v690NonCriticalExtensions_16,
&ett_rrc_T_v770NonCriticalExtensions_10,
- &ett_rrc_T_nonCriticalExtensions_71,
+ &ett_rrc_T_nonCriticalExtensions_77,
&ett_rrc_T_later_than_r3_12,
- &ett_rrc_T_criticalExtensions_52,
+ &ett_rrc_T_criticalExtensions_58,
&ett_rrc_T_r4_06,
&ett_rrc_T_v4d0NonCriticalExtensions_06,
&ett_rrc_T_v590NonCriticalExtensions_15,
&ett_rrc_T_v5d0NonCriticalExtenstions_07,
&ett_rrc_T_v690NonCriticalExtensions_17,
&ett_rrc_T_v770NonCriticalExtensions_11,
- &ett_rrc_T_nonCriticalExtensions_72,
- &ett_rrc_T_criticalExtensions_53,
+ &ett_rrc_T_nonCriticalExtensions_78,
+ &ett_rrc_T_criticalExtensions_59,
&ett_rrc_T_r5_05,
&ett_rrc_T_v5d0NonCriticalExtenstions_08,
&ett_rrc_T_v690NonCriticalExtensions_18,
&ett_rrc_T_v770NonCriticalExtensions_12,
- &ett_rrc_T_nonCriticalExtensions_73,
- &ett_rrc_T_criticalExtensions_54,
+ &ett_rrc_T_nonCriticalExtensions_79,
+ &ett_rrc_T_criticalExtensions_60,
&ett_rrc_T_r6_07,
&ett_rrc_T_v6b0NonCriticalExtensions_06,
&ett_rrc_T_v6f0NonCriticalExtensions,
&ett_rrc_T_v770NonCriticalExtensions_13,
- &ett_rrc_T_nonCriticalExtensions_74,
- &ett_rrc_T_criticalExtensions_55,
+ &ett_rrc_T_nonCriticalExtensions_80,
+ &ett_rrc_T_criticalExtensions_61,
&ett_rrc_T_r7_06,
&ett_rrc_T_v780NonCriticalExtensions_05,
&ett_rrc_T_v790NonCriticalExtensions,
&ett_rrc_T_v7d0NonCriticalExtensions_06,
&ett_rrc_T_v7f0NonCriticalExtensions_07,
&ett_rrc_T_v7g0NonCriticalExtensions_08,
- &ett_rrc_T_nonCriticalExtensions_75,
- &ett_rrc_T_criticalExtensions_56,
+ &ett_rrc_T_nonCriticalExtensions_81,
+ &ett_rrc_T_criticalExtensions_62,
&ett_rrc_T_r8_07,
&ett_rrc_T_v7d0NonCriticalExtensions_07,
&ett_rrc_T_v7f0NonCriticalExtensions_08,
&ett_rrc_T_v890NonCriticalExtensions_05,
&ett_rrc_T_v7g0NonCriticalExtensions_09,
&ett_rrc_T_v8a0NonCriticalExtensions_05,
- &ett_rrc_T_nonCriticalExtensions_76,
- &ett_rrc_T_criticalExtensions_57,
+ &ett_rrc_T_nonCriticalExtensions_82,
+ &ett_rrc_T_criticalExtensions_63,
&ett_rrc_T_r9_06,
&ett_rrc_T_v950NonCriticalExtensions_04,
- &ett_rrc_T_nonCriticalExtensions_77,
- &ett_rrc_T_criticalExtensions_58,
+ &ett_rrc_T_nonCriticalExtensions_83,
+ &ett_rrc_T_criticalExtensions_64,
+ &ett_rrc_T_r10_06,
+ &ett_rrc_T_nonCriticalExtensions_84,
+ &ett_rrc_T_criticalExtensions_65,
&ett_rrc_RadioBearerReconfiguration_r3_IEs,
&ett_rrc_T_dummy_01,
- &ett_rrc_T_fdd_19,
- &ett_rrc_T_modeSpecificPhysChInfo_03,
&ett_rrc_T_fdd_20,
+ &ett_rrc_T_modeSpecificPhysChInfo_03,
+ &ett_rrc_T_fdd_21,
&ett_rrc_RadioBearerReconfiguration_v3a0ext,
&ett_rrc_RadioBearerReconfiguration_v4b0ext_IEs,
&ett_rrc_RadioBearerReconfiguration_v590ext_IEs,
&ett_rrc_RadioBearerReconfiguration_v5d0ext_IEs,
&ett_rrc_RadioBearerReconfiguration_r4_IEs,
&ett_rrc_T_dummy_02,
- &ett_rrc_T_fdd_21,
- &ett_rrc_T_modeSpecificPhysChInfo_04,
&ett_rrc_T_fdd_22,
- &ett_rrc_RadioBearerReconfiguration_r5_IEs,
- &ett_rrc_T_specificationMode_07,
- &ett_rrc_T_complete_07,
- &ett_rrc_T_dummy_03,
+ &ett_rrc_T_modeSpecificPhysChInfo_04,
&ett_rrc_T_fdd_23,
- &ett_rrc_T_preconfiguration_07,
- &ett_rrc_T_preConfigMode_07,
- &ett_rrc_T_defaultConfig_07,
- &ett_rrc_T_modeSpecificPhysChInfo_05,
- &ett_rrc_T_fdd_24,
- &ett_rrc_RadioBearerReconfiguration_r6_IEs,
+ &ett_rrc_RadioBearerReconfiguration_r5_IEs,
&ett_rrc_T_specificationMode_08,
&ett_rrc_T_complete_08,
+ &ett_rrc_T_dummy_03,
+ &ett_rrc_T_fdd_24,
&ett_rrc_T_preconfiguration_08,
&ett_rrc_T_preConfigMode_08,
&ett_rrc_T_defaultConfig_08,
- &ett_rrc_RadioBearerReconfiguration_v690ext_IEs,
- &ett_rrc_RadioBearerReconfiguration_v6b0ext_IEs,
- &ett_rrc_RadioBearerReconfiguration_v6f0ext_IEs,
+ &ett_rrc_T_modeSpecificPhysChInfo_05,
+ &ett_rrc_T_fdd_25,
+ &ett_rrc_RadioBearerReconfiguration_r6_IEs,
&ett_rrc_T_specificationMode_09,
&ett_rrc_T_complete_09,
- &ett_rrc_RadioBearerReconfiguration_r7_IEs,
- &ett_rrc_T_specificationMode_10,
- &ett_rrc_T_complete_10,
&ett_rrc_T_preconfiguration_09,
&ett_rrc_T_preConfigMode_09,
&ett_rrc_T_defaultConfig_09,
+ &ett_rrc_RadioBearerReconfiguration_v690ext_IEs,
+ &ett_rrc_RadioBearerReconfiguration_v6b0ext_IEs,
+ &ett_rrc_RadioBearerReconfiguration_v6f0ext_IEs,
+ &ett_rrc_T_specificationMode_10,
+ &ett_rrc_T_complete_10,
+ &ett_rrc_RadioBearerReconfiguration_r7_IEs,
+ &ett_rrc_T_specificationMode_11,
+ &ett_rrc_T_complete_11,
+ &ett_rrc_T_preconfiguration_10,
+ &ett_rrc_T_preConfigMode_10,
+ &ett_rrc_T_defaultConfig_10,
&ett_rrc_RadioBearerReconfiguration_v770ext_IEs,
&ett_rrc_RadioBearerReconfiguration_v780ext_IEs,
&ett_rrc_RadioBearerReconfiguration_v790ext_IEs,
@@ -157150,28 +167244,34 @@ void proto_register_rrc(void) {
&ett_rrc_RadioBearerReconfiguration_v7f0ext_IEs,
&ett_rrc_RadioBearerReconfiguration_v7g0ext_IEs,
&ett_rrc_RadioBearerReconfiguration_r8_IEs,
- &ett_rrc_T_specificationMode_11,
- &ett_rrc_T_complete_11,
- &ett_rrc_T_preconfiguration_10,
- &ett_rrc_T_preConfigMode_10,
- &ett_rrc_T_defaultConfig_10,
- &ett_rrc_RadioBearerReconfiguration_v890ext_IEs,
- &ett_rrc_RadioBearerReconfiguration_v8a0ext_IEs,
- &ett_rrc_RadioBearerReconfiguration_r9_IEs,
&ett_rrc_T_specificationMode_12,
&ett_rrc_T_complete_12,
&ett_rrc_T_preconfiguration_11,
&ett_rrc_T_preConfigMode_11,
&ett_rrc_T_defaultConfig_11,
+ &ett_rrc_RadioBearerReconfiguration_v890ext_IEs,
+ &ett_rrc_RadioBearerReconfiguration_v8a0ext_IEs,
+ &ett_rrc_RadioBearerReconfiguration_r9_IEs,
+ &ett_rrc_T_specificationMode_13,
+ &ett_rrc_T_complete_13,
+ &ett_rrc_T_preconfiguration_12,
+ &ett_rrc_T_preConfigMode_12,
+ &ett_rrc_T_defaultConfig_12,
&ett_rrc_RadioBearerReconfiguration_v950ext_IEs,
+ &ett_rrc_RadioBearerReconfiguration_r10_IEs,
+ &ett_rrc_T_specificationMode_14,
+ &ett_rrc_T_complete_14,
+ &ett_rrc_T_preconfiguration_13,
+ &ett_rrc_T_preConfigMode_13,
+ &ett_rrc_T_defaultConfig_13,
&ett_rrc_RadioBearerReconfigurationComplete,
&ett_rrc_T_laterNonCriticalExtensions_29,
&ett_rrc_T_v770NonCriticalExtensions_14,
- &ett_rrc_T_nonCriticalExtensions_78,
+ &ett_rrc_T_nonCriticalExtensions_85,
&ett_rrc_RadioBearerReconfigurationComplete_v770ext_IEs,
&ett_rrc_RadioBearerReconfigurationFailure,
&ett_rrc_T_laterNonCriticalExtensions_30,
- &ett_rrc_T_nonCriticalExtensions_79,
+ &ett_rrc_T_nonCriticalExtensions_86,
&ett_rrc_RadioBearerRelease,
&ett_rrc_T_r3_15,
&ett_rrc_T_v3a0NonCriticalExtensions_06,
@@ -157180,64 +167280,67 @@ void proto_register_rrc(void) {
&ett_rrc_T_v590NonCriticalExtensions_16,
&ett_rrc_T_v690NonCriticalExtensions_19,
&ett_rrc_T_v770NonCriticalExtensions_15,
- &ett_rrc_T_nonCriticalExtensions_80,
+ &ett_rrc_T_nonCriticalExtensions_87,
&ett_rrc_T_later_than_r3_13,
- &ett_rrc_T_criticalExtensions_59,
+ &ett_rrc_T_criticalExtensions_66,
&ett_rrc_T_r4_07,
&ett_rrc_T_v4d0NonCriticalExtensions_07,
&ett_rrc_T_v590NonCriticalExtensions_17,
&ett_rrc_T_v690NonCriticalExtensions_20,
&ett_rrc_T_v770NonCriticalExtensions_16,
- &ett_rrc_T_nonCriticalExtensions_81,
- &ett_rrc_T_criticalExtensions_60,
+ &ett_rrc_T_nonCriticalExtensions_88,
+ &ett_rrc_T_criticalExtensions_67,
&ett_rrc_T_r5_06,
&ett_rrc_T_v690NonCriticalExtensions_21,
&ett_rrc_T_v770NonCriticalExtensions_17,
- &ett_rrc_T_nonCriticalExtensions_82,
- &ett_rrc_T_criticalExtensions_61,
+ &ett_rrc_T_nonCriticalExtensions_89,
+ &ett_rrc_T_criticalExtensions_68,
&ett_rrc_T_r6_08,
&ett_rrc_T_v6b0NonCriticalExtensions_07,
&ett_rrc_T_v770NonCriticalExtensions_18,
- &ett_rrc_T_nonCriticalExtensions_83,
- &ett_rrc_T_criticalExtensions_62,
+ &ett_rrc_T_nonCriticalExtensions_90,
+ &ett_rrc_T_criticalExtensions_69,
&ett_rrc_T_r7_07,
&ett_rrc_T_v780NonCriticalExtensions_06,
&ett_rrc_T_v7d0NonCriticalExtensions_08,
&ett_rrc_T_v7f0NonCriticalExtensions_09,
&ett_rrc_T_v7g0NonCriticalExtensions_10,
- &ett_rrc_T_nonCriticalExtensions_84,
- &ett_rrc_T_criticalExtensions_63,
+ &ett_rrc_T_nonCriticalExtensions_91,
+ &ett_rrc_T_criticalExtensions_70,
&ett_rrc_T_r8_08,
&ett_rrc_T_v7d0NonCriticalExtensions_09,
&ett_rrc_T_v7f0NonCriticalExtensions_10,
&ett_rrc_T_v890NonCriticalExtensions_06,
&ett_rrc_T_v7g0NonCriticalExtensions_11,
&ett_rrc_T_v8a0NonCriticalExtensions_06,
- &ett_rrc_T_nonCriticalExtensions_85,
- &ett_rrc_T_criticalExtensions_64,
+ &ett_rrc_T_nonCriticalExtensions_92,
+ &ett_rrc_T_criticalExtensions_71,
&ett_rrc_T_r9_07,
&ett_rrc_T_v950NonCriticalExtensions_05,
&ett_rrc_T_v970NonCriticalExtensions_02,
- &ett_rrc_T_nonCriticalExtensions_86,
- &ett_rrc_T_criticalExtensions_65,
+ &ett_rrc_T_nonCriticalExtensions_93,
+ &ett_rrc_T_criticalExtensions_72,
+ &ett_rrc_T_r10_07,
+ &ett_rrc_T_nonCriticalExtensions_94,
+ &ett_rrc_T_criticalExtensions_73,
&ett_rrc_RadioBearerRelease_r3_IEs,
&ett_rrc_T_dummy_04,
- &ett_rrc_T_fdd_25,
- &ett_rrc_T_modeSpecificPhysChInfo_06,
&ett_rrc_T_fdd_26,
+ &ett_rrc_T_modeSpecificPhysChInfo_06,
+ &ett_rrc_T_fdd_27,
&ett_rrc_RadioBearerRelease_v3a0ext,
&ett_rrc_RadioBearerRelease_v4b0ext_IEs,
&ett_rrc_RadioBearerRelease_v590ext_IEs,
&ett_rrc_RadioBearerRelease_r4_IEs,
&ett_rrc_T_dummy_05,
- &ett_rrc_T_fdd_27,
- &ett_rrc_T_modeSpecificPhysChInfo_07,
&ett_rrc_T_fdd_28,
+ &ett_rrc_T_modeSpecificPhysChInfo_07,
+ &ett_rrc_T_fdd_29,
&ett_rrc_RadioBearerRelease_r5_IEs,
&ett_rrc_T_dummy_06,
- &ett_rrc_T_fdd_29,
- &ett_rrc_T_modeSpecificPhysChInfo_08,
&ett_rrc_T_fdd_30,
+ &ett_rrc_T_modeSpecificPhysChInfo_08,
+ &ett_rrc_T_fdd_31,
&ett_rrc_RadioBearerRelease_v690ext_IEs,
&ett_rrc_RadioBearerRelease_r6_IEs,
&ett_rrc_RadioBearerRelease_v6b0ext_IEs,
@@ -157253,14 +167356,15 @@ void proto_register_rrc(void) {
&ett_rrc_RadioBearerRelease_r9_IEs,
&ett_rrc_RadioBearerRelease_v950ext_IEs,
&ett_rrc_RadioBearerRelease_v970ext_IEs,
+ &ett_rrc_RadioBearerRelease_r10_IEs,
&ett_rrc_RadioBearerReleaseComplete,
&ett_rrc_T_laterNonCriticalExtensions_32,
&ett_rrc_T_v770NonCriticalExtensions_19,
- &ett_rrc_T_nonCriticalExtensions_87,
+ &ett_rrc_T_nonCriticalExtensions_95,
&ett_rrc_RadioBearerReleaseComplete_v770ext_IEs,
&ett_rrc_RadioBearerReleaseFailure,
&ett_rrc_T_laterNonCriticalExtensions_33,
- &ett_rrc_T_nonCriticalExtensions_88,
+ &ett_rrc_T_nonCriticalExtensions_96,
&ett_rrc_RadioBearerSetup,
&ett_rrc_T_r3_16,
&ett_rrc_T_v3a0NonCriticalExtensions_07,
@@ -157269,74 +167373,77 @@ void proto_register_rrc(void) {
&ett_rrc_T_v590NonCriticalExtensions_18,
&ett_rrc_T_v5d0NonCriticalExtenstions_09,
&ett_rrc_T_v690NonCriticalExtensions_22,
- &ett_rrc_T_nonCriticalExtensions_89,
+ &ett_rrc_T_nonCriticalExtensions_97,
&ett_rrc_T_later_than_r3_14,
- &ett_rrc_T_criticalExtensions_66,
+ &ett_rrc_T_criticalExtensions_74,
&ett_rrc_T_r4_08,
&ett_rrc_T_v4d0NonCriticalExtensions_08,
&ett_rrc_T_v590NonCriticalExtensions_19,
&ett_rrc_T_v5d0NonCriticalExtenstions_10,
&ett_rrc_T_v690NonCriticalExtensions_23,
- &ett_rrc_T_nonCriticalExtensions_90,
- &ett_rrc_T_criticalExtensions_67,
+ &ett_rrc_T_nonCriticalExtensions_98,
+ &ett_rrc_T_criticalExtensions_75,
&ett_rrc_T_r5_07,
&ett_rrc_T_v5d0NonCriticalExtenstions_11,
&ett_rrc_T_v690NonCriticalExtensions_24,
- &ett_rrc_T_nonCriticalExtensions_91,
- &ett_rrc_T_criticalExtensions_68,
+ &ett_rrc_T_nonCriticalExtensions_99,
+ &ett_rrc_T_criticalExtensions_76,
&ett_rrc_T_r6_09,
&ett_rrc_T_v6b0NonCriticalExtensions_08,
- &ett_rrc_T_nonCriticalExtensions_92,
- &ett_rrc_T_criticalExtensions_69,
+ &ett_rrc_T_nonCriticalExtensions_100,
+ &ett_rrc_T_criticalExtensions_77,
&ett_rrc_T_r7_08,
&ett_rrc_T_v780NonCriticalExtensions_07,
&ett_rrc_T_v820NonCriticalExtensions_01,
- &ett_rrc_T_nonCriticalExtensions_93,
- &ett_rrc_T_criticalExtensions_70,
+ &ett_rrc_T_nonCriticalExtensions_101,
+ &ett_rrc_T_criticalExtensions_78,
&ett_rrc_T_r8_09,
&ett_rrc_T_v7d0NonCriticalExtensions_10,
&ett_rrc_T_v7f0NonCriticalExtensions_11,
&ett_rrc_T_v890NonCriticalExtensions_07,
&ett_rrc_T_v7g0NonCriticalExtensions_12,
&ett_rrc_T_v8a0NonCriticalExtensions_07,
- &ett_rrc_T_nonCriticalExtensions_94,
- &ett_rrc_T_criticalExtensions_71,
+ &ett_rrc_T_nonCriticalExtensions_102,
+ &ett_rrc_T_criticalExtensions_79,
&ett_rrc_T_r9_08,
&ett_rrc_T_v950NonCriticalExtensions_06,
- &ett_rrc_T_nonCriticalExtensions_95,
- &ett_rrc_T_criticalExtensions_72,
+ &ett_rrc_T_nonCriticalExtensions_103,
+ &ett_rrc_T_criticalExtensions_80,
+ &ett_rrc_T_r10_08,
+ &ett_rrc_T_nonCriticalExtensions_104,
+ &ett_rrc_T_criticalExtensions_81,
&ett_rrc_RadioBearerSetup_r3_IEs,
&ett_rrc_T_dummy_07,
- &ett_rrc_T_fdd_31,
- &ett_rrc_T_modeSpecificPhysChInfo_09,
&ett_rrc_T_fdd_32,
+ &ett_rrc_T_modeSpecificPhysChInfo_09,
+ &ett_rrc_T_fdd_33,
&ett_rrc_RadioBearerSetup_v3a0ext,
&ett_rrc_RadioBearerSetup_v4b0ext_IEs,
&ett_rrc_RadioBearerSetup_v590ext_IEs,
&ett_rrc_RadioBearerSetup_v5d0ext_IEs,
&ett_rrc_RadioBearerSetup_r4_IEs,
&ett_rrc_T_dummy_08,
- &ett_rrc_T_fdd_33,
- &ett_rrc_T_modeSpecificPhysChInfo_10,
&ett_rrc_T_fdd_34,
+ &ett_rrc_T_modeSpecificPhysChInfo_10,
+ &ett_rrc_T_fdd_35,
&ett_rrc_RadioBearerSetup_r5_IEs,
&ett_rrc_T_dummy_09,
- &ett_rrc_T_fdd_35,
- &ett_rrc_T_modeSpecificPhysChInfo_11,
&ett_rrc_T_fdd_36,
+ &ett_rrc_T_modeSpecificPhysChInfo_11,
+ &ett_rrc_T_fdd_37,
&ett_rrc_RadioBearerSetup_v690ext_IEs,
&ett_rrc_RadioBearerSetup_r6_IEs,
- &ett_rrc_T_specificationMode_13,
- &ett_rrc_T_complete_13,
+ &ett_rrc_T_specificationMode_15,
+ &ett_rrc_T_complete_15,
&ett_rrc_T_dummy_10,
&ett_rrc_RadioBearerSetup_v6b0ext_IEs,
&ett_rrc_RadioBearerSetup_r7_IEs,
- &ett_rrc_T_specificationMode_14,
- &ett_rrc_T_complete_14,
+ &ett_rrc_T_specificationMode_16,
+ &ett_rrc_T_complete_16,
&ett_rrc_RadioBearerSetup_r7_add_ext_IEs,
&ett_rrc_T_v7f0NonCriticalExtensions_12,
&ett_rrc_T_v7g0NonCriticalExtensions_13,
- &ett_rrc_T_nonCriticalExtensions_96,
+ &ett_rrc_T_nonCriticalExtensions_105,
&ett_rrc_RadioBearerSetup_v780ext_IEs,
&ett_rrc_RadioBearerSetup_v7d0ext_IEs,
&ett_rrc_RadioBearerSetup_v7f0ext_IEs,
@@ -157347,74 +167454,83 @@ void proto_register_rrc(void) {
&ett_rrc_RadioBearerSetup_v8a0ext_IEs,
&ett_rrc_RadioBearerSetup_r9_IEs,
&ett_rrc_RadioBearerSetup_v950ext_IEs,
+ &ett_rrc_RadioBearerSetup_r10_IEs,
&ett_rrc_RadioBearerSetupComplete,
&ett_rrc_T_laterNonCriticalExtensions_35,
&ett_rrc_T_v770NonCriticalExtensions_20,
- &ett_rrc_T_nonCriticalExtensions_97,
+ &ett_rrc_T_nonCriticalExtensions_106,
&ett_rrc_RadioBearerSetupComplete_v770ext_IEs,
&ett_rrc_RadioBearerSetupFailure,
&ett_rrc_T_laterNonCriticalExtensions_36,
- &ett_rrc_T_nonCriticalExtensions_98,
+ &ett_rrc_T_nonCriticalExtensions_107,
&ett_rrc_RRCConnectionReject,
&ett_rrc_T_r3_17,
&ett_rrc_T_laterNonCriticalExtensions_37,
&ett_rrc_T_v690NonCriticalExtensions_25,
&ett_rrc_T_v6f0NonCriticalExtensions_01,
&ett_rrc_T_v860NonCriticalExtensions_10,
- &ett_rrc_T_nonCriticalExtensions_99,
+ &ett_rrc_T_va40NonCriticalExtensions_05,
+ &ett_rrc_T_nonCriticalExtensions_108,
&ett_rrc_T_later_than_r3_15,
- &ett_rrc_T_criticalExtensions_73,
+ &ett_rrc_T_criticalExtensions_82,
&ett_rrc_RRCConnectionReject_r3_IEs,
&ett_rrc_RRCConnectionReject_v690ext_IEs,
&ett_rrc_RRCConnectionReject_v6f0ext_IEs,
&ett_rrc_RRCConnectionReject_v860ext_IEs,
+ &ett_rrc_RRCConnectionReject_va40ext_IEs,
&ett_rrc_RRCConnectionRelease,
&ett_rrc_T_r3_18,
&ett_rrc_T_laterNonCriticalExtensions_38,
&ett_rrc_T_v690NonCriticalExtensions_26,
&ett_rrc_T_v770NonCriticalExtensions_21,
&ett_rrc_T_v860NonCriticalExtensions_11,
- &ett_rrc_T_nonCriticalExtensions_100,
+ &ett_rrc_T_va40NonCriticalExtensions_06,
+ &ett_rrc_T_nonCriticalExtensions_109,
&ett_rrc_T_later_than_r3_16,
- &ett_rrc_T_criticalExtensions_74,
+ &ett_rrc_T_criticalExtensions_83,
&ett_rrc_T_r4_09,
&ett_rrc_T_v4d0NonCriticalExtensions_09,
&ett_rrc_T_v690NonCriticalExtensions_27,
&ett_rrc_T_v770NonCriticalExtensions_22,
&ett_rrc_T_v860NonCriticalExtensions_12,
- &ett_rrc_T_nonCriticalExtensions_101,
- &ett_rrc_T_criticalExtensions_75,
+ &ett_rrc_T_va40NonCriticalExtensions_07,
+ &ett_rrc_T_nonCriticalExtensions_110,
+ &ett_rrc_T_criticalExtensions_84,
&ett_rrc_RRCConnectionRelease_r3_IEs,
&ett_rrc_RRCConnectionRelease_r4_IEs,
&ett_rrc_RRCConnectionRelease_v690ext_IEs,
&ett_rrc_RRCConnectionRelease_v770ext_IEs,
&ett_rrc_RRCConnectionRelease_v860ext_IEs,
+ &ett_rrc_RRCConnectionRelease_va40ext_IEs,
&ett_rrc_RRCConnectionRelease_CCCH,
&ett_rrc_T_r3_19,
&ett_rrc_T_laterNonCriticalExtensions_39,
&ett_rrc_T_v690NonCriticalExtensions_28,
&ett_rrc_T_v860NonCriticalExtensions_13,
- &ett_rrc_T_nonCriticalExtensions_102,
+ &ett_rrc_T_va40NonCriticalExtensions_08,
+ &ett_rrc_T_nonCriticalExtensions_111,
&ett_rrc_T_later_than_r3_17,
- &ett_rrc_T_criticalExtensions_76,
+ &ett_rrc_T_criticalExtensions_85,
&ett_rrc_T_r4_10,
&ett_rrc_T_v4d0NonCriticalExtensions_10,
&ett_rrc_T_v690NonCriticalExtensions_29,
&ett_rrc_T_v860NonCriticalExtensions_14,
- &ett_rrc_T_nonCriticalExtensions_103,
- &ett_rrc_T_criticalExtensions_77,
+ &ett_rrc_T_va40NonCriticalExtensions_09,
+ &ett_rrc_T_nonCriticalExtensions_112,
+ &ett_rrc_T_criticalExtensions_86,
&ett_rrc_SEQUENCE_SIZE_1_maxURNTI_Group_OF_GroupReleaseInformation,
- &ett_rrc_T_criticalExtensions_78,
+ &ett_rrc_T_criticalExtensions_87,
&ett_rrc_T_r5_08,
&ett_rrc_T_v690NonCriticalExtensions_30,
&ett_rrc_T_v860NonCriticalExtensions_15,
- &ett_rrc_T_nonCriticalExtensions_104,
- &ett_rrc_T_criticalExtensions_79,
+ &ett_rrc_T_va40NonCriticalExtensions_10,
+ &ett_rrc_T_nonCriticalExtensions_113,
+ &ett_rrc_T_criticalExtensions_88,
&ett_rrc_RRCConnectionRelease_CCCH_r3_IEs,
&ett_rrc_RRCConnectionRelease_CCCH_r4_IEs,
&ett_rrc_RRCConnectionReleaseComplete,
&ett_rrc_T_laterNonCriticalExtensions_40,
- &ett_rrc_T_nonCriticalExtensions_105,
+ &ett_rrc_T_nonCriticalExtensions_114,
&ett_rrc_RRCConnectionRequest,
&ett_rrc_T_v3d0NonCriticalExtensions,
&ett_rrc_T_v4b0NonCriticalExtensions_10,
@@ -157429,7 +167545,6 @@ void proto_register_rrc(void) {
&ett_rrc_T_v7g0NonCriticalExtensions_14,
&ett_rrc_T_v920NonCriticalExtensions_02,
&ett_rrc_T_v940NonCriticalExtensions,
- &ett_rrc_T_nonCriticalExtensions_106,
&ett_rrc_RRCConnectionRequest_v3d0ext_IEs,
&ett_rrc_RRCConnectionRequest_v4b0ext_IEs,
&ett_rrc_RRCConnectionRequest_v590ext_IEs,
@@ -157445,85 +167560,97 @@ void proto_register_rrc(void) {
&ett_rrc_RRCConnectionRequest_v860ext_IEs,
&ett_rrc_RRCConnectionRequest_v920ext_IEs,
&ett_rrc_RRCConnectionRequest_v940ext_IEs,
+ &ett_rrc_RRCConnectionRequest_NonCriticalExts_va40_IEs,
+ &ett_rrc_T_nonCriticalExtensions_115,
+ &ett_rrc_RRCConnectionRequest_va40ext_IEs,
&ett_rrc_RRCConnectionSetup,
&ett_rrc_T_r3_20,
&ett_rrc_T_laterNonCriticalExtensions_41,
&ett_rrc_T_v4b0NonCriticalExtensions_11,
&ett_rrc_T_v590NonCriticalExtensions_21,
&ett_rrc_T_v690NonCriticalExtensions_32,
- &ett_rrc_T_nonCriticalExtensions_107,
+ &ett_rrc_T_nonCriticalExtensions_116,
&ett_rrc_T_later_than_r3_18,
- &ett_rrc_T_criticalExtensions_80,
+ &ett_rrc_T_criticalExtensions_89,
&ett_rrc_T_r4_11,
&ett_rrc_T_v4d0NonCriticalExtensions_11,
&ett_rrc_T_v590NonCriticalExtensions_22,
&ett_rrc_T_v690NonCriticalExtensions_33,
- &ett_rrc_T_nonCriticalExtensions_108,
- &ett_rrc_T_criticalExtensions_81,
+ &ett_rrc_T_nonCriticalExtensions_117,
+ &ett_rrc_T_criticalExtensions_90,
&ett_rrc_T_r5_09,
&ett_rrc_T_v690NonCriticalExtensions_34,
- &ett_rrc_T_nonCriticalExtensions_109,
- &ett_rrc_T_criticalExtensions_82,
+ &ett_rrc_T_nonCriticalExtensions_118,
+ &ett_rrc_T_criticalExtensions_91,
&ett_rrc_T_r6_10,
&ett_rrc_T_v6b0NonCriticalExtensions_10,
- &ett_rrc_T_nonCriticalExtensions_110,
- &ett_rrc_T_criticalExtensions_83,
+ &ett_rrc_T_nonCriticalExtensions_119,
+ &ett_rrc_T_criticalExtensions_92,
&ett_rrc_T_r7_09,
&ett_rrc_T_v780NonCriticalExtensions_08,
&ett_rrc_T_v7d0NonCriticalExtensions_11,
- &ett_rrc_T_nonCriticalExtensions_111,
- &ett_rrc_T_criticalExtensions_84,
+ &ett_rrc_T_nonCriticalExtensions_120,
+ &ett_rrc_T_criticalExtensions_93,
&ett_rrc_T_r8_10,
&ett_rrc_T_v7d0NonCriticalExtensions_12,
&ett_rrc_T_v890NonCriticalExtensions_08,
&ett_rrc_T_v8a0NonCriticalExtensions_08,
- &ett_rrc_T_nonCriticalExtensions_112,
- &ett_rrc_T_criticalExtensions_85,
+ &ett_rrc_T_nonCriticalExtensions_121,
+ &ett_rrc_T_criticalExtensions_94,
&ett_rrc_T_r9_09,
&ett_rrc_T_v950NonCriticalExtensions_07,
- &ett_rrc_T_nonCriticalExtensions_113,
- &ett_rrc_T_criticalExtensions_86,
+ &ett_rrc_T_nonCriticalExtensions_122,
+ &ett_rrc_T_criticalExtensions_95,
+ &ett_rrc_T_r10_09,
+ &ett_rrc_T_nonCriticalExtensions_123,
+ &ett_rrc_T_criticalExtensions_96,
&ett_rrc_RRCConnectionSetup_r3_IEs,
&ett_rrc_RRCConnectionSetup_v4b0ext_IEs,
&ett_rrc_RRCConnectionSetup_v590ext_IEs,
&ett_rrc_RRCConnectionSetup_r4_IEs,
&ett_rrc_RRCConnectionSetup_r5_IEs,
- &ett_rrc_T_specificationMode_15,
- &ett_rrc_T_complete_15,
- &ett_rrc_T_preconfiguration_12,
- &ett_rrc_T_preConfigMode_12,
- &ett_rrc_T_defaultConfig_12,
- &ett_rrc_RRCConnectionSetup_v690ext_IEs,
- &ett_rrc_RRCConnectionSetup_r6_IEs,
- &ett_rrc_T_specificationMode_16,
- &ett_rrc_T_complete_16,
- &ett_rrc_T_preconfiguration_13,
- &ett_rrc_T_preConfigMode_13,
- &ett_rrc_T_defaultConfig_13,
- &ett_rrc_RRCConnectionSetup_v6b0ext_IEs,
- &ett_rrc_RRCConnectionSetup_r7_IEs,
&ett_rrc_T_specificationMode_17,
&ett_rrc_T_complete_17,
&ett_rrc_T_preconfiguration_14,
&ett_rrc_T_preConfigMode_14,
&ett_rrc_T_defaultConfig_14,
- &ett_rrc_RRCConnectionSetup_v780ext_IEs,
- &ett_rrc_RRCConnectionSetup_v7d0ext_IEs,
- &ett_rrc_RRCConnectionSetup_r8_IEs,
+ &ett_rrc_RRCConnectionSetup_v690ext_IEs,
+ &ett_rrc_RRCConnectionSetup_r6_IEs,
&ett_rrc_T_specificationMode_18,
&ett_rrc_T_complete_18,
&ett_rrc_T_preconfiguration_15,
&ett_rrc_T_preConfigMode_15,
&ett_rrc_T_defaultConfig_15,
- &ett_rrc_RRCConnectionSetup_v890ext_IEs,
- &ett_rrc_RRCConnectionSetup_v8a0ext_IEs,
- &ett_rrc_RRCConnectionSetup_r9_IEs,
+ &ett_rrc_RRCConnectionSetup_v6b0ext_IEs,
+ &ett_rrc_RRCConnectionSetup_r7_IEs,
&ett_rrc_T_specificationMode_19,
&ett_rrc_T_complete_19,
&ett_rrc_T_preconfiguration_16,
&ett_rrc_T_preConfigMode_16,
&ett_rrc_T_defaultConfig_16,
+ &ett_rrc_RRCConnectionSetup_v780ext_IEs,
+ &ett_rrc_RRCConnectionSetup_v7d0ext_IEs,
+ &ett_rrc_RRCConnectionSetup_r8_IEs,
+ &ett_rrc_T_specificationMode_20,
+ &ett_rrc_T_complete_20,
+ &ett_rrc_T_preconfiguration_17,
+ &ett_rrc_T_preConfigMode_17,
+ &ett_rrc_T_defaultConfig_17,
+ &ett_rrc_RRCConnectionSetup_v890ext_IEs,
+ &ett_rrc_RRCConnectionSetup_v8a0ext_IEs,
+ &ett_rrc_RRCConnectionSetup_r9_IEs,
+ &ett_rrc_T_specificationMode_21,
+ &ett_rrc_T_complete_21,
+ &ett_rrc_T_preconfiguration_18,
+ &ett_rrc_T_preConfigMode_18,
+ &ett_rrc_T_defaultConfig_18,
&ett_rrc_RRCConnectionSetup_v950ext_IEs,
+ &ett_rrc_RRCConnectionSetup_r10_IEs,
+ &ett_rrc_T_specificationMode_22,
+ &ett_rrc_T_complete_22,
+ &ett_rrc_T_preconfiguration_19,
+ &ett_rrc_T_preConfigMode_19,
+ &ett_rrc_T_defaultConfig_19,
&ett_rrc_RRCConnectionSetupComplete,
&ett_rrc_T_v370NonCriticalExtensions,
&ett_rrc_T_v380NonCriticalExtensions,
@@ -157535,7 +167662,8 @@ void proto_register_rrc(void) {
&ett_rrc_T_v5c0NonCriticalExtensions,
&ett_rrc_T_v690NonCriticalExtensions_35,
&ett_rrc_T_v770NonCriticalExtensions_24,
- &ett_rrc_T_nonCriticalExtensions_114,
+ &ett_rrc_T_va40NonCriticalExtensions_11,
+ &ett_rrc_T_nonCriticalExtensions_124,
&ett_rrc_RRCConnectionSetupComplete_v370ext,
&ett_rrc_RRCConnectionSetupComplete_v380ext_IEs,
&ett_rrc_RRCConnectionSetupComplete_v3a0ext_IEs,
@@ -157544,7 +167672,8 @@ void proto_register_rrc(void) {
&ett_rrc_T_v680NonCriticalExtensions,
&ett_rrc_T_v7e0NonCriticalExtensions_02,
&ett_rrc_T_v7f0NonCriticalExtensions_13,
- &ett_rrc_T_nonCriticalExtensions_115,
+ &ett_rrc_T_va40NonCriticalExtensions_12,
+ &ett_rrc_T_nonCriticalExtensions_125,
&ett_rrc_RRCConnectionSetupComplete_v4b0ext_IEs,
&ett_rrc_RRCConnectionSetupComplete_v590ext_IEs,
&ett_rrc_RRCConnectionSetupComplete_v5c0ext_IEs,
@@ -157554,43 +167683,47 @@ void proto_register_rrc(void) {
&ett_rrc_RRCConnectionSetupComplete_v770ext_IEs,
&ett_rrc_RRCConnectionSetupComplete_v7e0ext_IEs,
&ett_rrc_RRCConnectionSetupComplete_v7f0ext_IEs,
+ &ett_rrc_RRCConnectionSetupComplete_va40ext_IEs,
+ &ett_rrc_RRCConnectionSetupCompleteBand_va40ext_IEs,
&ett_rrc_RRC_FailureInfo,
&ett_rrc_T_r3_21,
&ett_rrc_T_laterNonCriticalExtensions_43,
- &ett_rrc_T_nonCriticalExtensions_116,
- &ett_rrc_T_criticalExtensions_87,
+ &ett_rrc_T_nonCriticalExtensions_126,
+ &ett_rrc_T_criticalExtensions_97,
&ett_rrc_RRC_FailureInfo_r3_IEs,
&ett_rrc_RRCStatus,
&ett_rrc_T_laterNonCriticalExtensions_44,
- &ett_rrc_T_nonCriticalExtensions_117,
+ &ett_rrc_T_nonCriticalExtensions_127,
&ett_rrc_SecurityModeCommand,
&ett_rrc_T_r3_22,
&ett_rrc_T_laterNonCriticalExtensions_45,
- &ett_rrc_T_nonCriticalExtensions_118,
+ &ett_rrc_T_nonCriticalExtensions_128,
&ett_rrc_T_later_than_r3_19,
- &ett_rrc_T_criticalExtensions_88,
+ &ett_rrc_T_criticalExtensions_98,
&ett_rrc_T_r7_10,
- &ett_rrc_T_nonCriticalExtensions_119,
- &ett_rrc_T_criticalExtensions_89,
+ &ett_rrc_T_nonCriticalExtensions_129,
+ &ett_rrc_T_criticalExtensions_99,
&ett_rrc_SecurityModeCommand_r3_IEs,
&ett_rrc_SecurityModeCommand_r7_IEs,
&ett_rrc_SecurityModeComplete,
&ett_rrc_T_laterNonCriticalExtensions_46,
- &ett_rrc_T_nonCriticalExtensions_120,
+ &ett_rrc_T_nonCriticalExtensions_130,
&ett_rrc_SecurityModeFailure,
&ett_rrc_T_laterNonCriticalExtensions_47,
- &ett_rrc_T_nonCriticalExtensions_121,
+ &ett_rrc_T_nonCriticalExtensions_131,
&ett_rrc_SignallingConnectionRelease,
&ett_rrc_T_r3_23,
&ett_rrc_T_laterNonCriticalExtensions_48,
- &ett_rrc_T_nonCriticalExtensions_122,
+ &ett_rrc_T_va40NonCriticalExtensions_13,
+ &ett_rrc_T_nonCriticalExtensions_132,
&ett_rrc_T_later_than_r3_20,
- &ett_rrc_T_criticalExtensions_90,
+ &ett_rrc_T_criticalExtensions_100,
&ett_rrc_SignallingConnectionRelease_r3_IEs,
+ &ett_rrc_SignallingConnectionRelease_va40ext_IEs,
&ett_rrc_SignallingConnectionReleaseIndication,
&ett_rrc_T_laterNonCriticalExtensions_49,
&ett_rrc_T_v860nonCriticalExtentions,
- &ett_rrc_T_nonCriticalExtensions_123,
+ &ett_rrc_T_nonCriticalExtensions_133,
&ett_rrc_SignallingConnectionReleaseIndication_v860ext,
&ett_rrc_SystemInformation_BCH,
&ett_rrc_T_payload,
@@ -157615,7 +167748,7 @@ void proto_register_rrc(void) {
&ett_rrc_SystemInformationChangeIndication,
&ett_rrc_T_laterNonCriticalExtensions_50,
&ett_rrc_T_v860NonCriticalExtensions_17,
- &ett_rrc_T_nonCriticalExtensions_124,
+ &ett_rrc_T_nonCriticalExtensions_134,
&ett_rrc_SystemInformationChangeIndication_v860ext_IEs,
&ett_rrc_TransportChannelReconfiguration,
&ett_rrc_T_r3_24,
@@ -157625,63 +167758,66 @@ void proto_register_rrc(void) {
&ett_rrc_T_v590NonCriticalExtensions_24,
&ett_rrc_T_v690NonCriticalExtensions_36,
&ett_rrc_T_v770NonCriticalExtensions_25,
- &ett_rrc_T_nonCriticalExtensions_125,
+ &ett_rrc_T_nonCriticalExtensions_135,
&ett_rrc_T_later_than_r3_21,
- &ett_rrc_T_criticalExtensions_91,
+ &ett_rrc_T_criticalExtensions_101,
&ett_rrc_T_r4_12,
&ett_rrc_T_v4d0NonCriticalExtensions_12,
&ett_rrc_T_v590NonCriticalExtensions_25,
&ett_rrc_T_v690NonCriticalExtensions_37,
&ett_rrc_T_v770NonCriticalExtensions_26,
- &ett_rrc_T_nonCriticalExtensions_126,
- &ett_rrc_T_criticalExtensions_92,
+ &ett_rrc_T_nonCriticalExtensions_136,
+ &ett_rrc_T_criticalExtensions_102,
&ett_rrc_T_r5_10,
&ett_rrc_T_v690NonCriticalExtensions_38,
&ett_rrc_T_v770NonCriticalExtensions_27,
- &ett_rrc_T_nonCriticalExtensions_127,
- &ett_rrc_T_criticalExtensions_93,
+ &ett_rrc_T_nonCriticalExtensions_137,
+ &ett_rrc_T_criticalExtensions_103,
&ett_rrc_T_r6_11,
&ett_rrc_T_v6b0NonCriticalExtensions_11,
&ett_rrc_T_v770NonCriticalExtensions_28,
- &ett_rrc_T_nonCriticalExtensions_128,
- &ett_rrc_T_criticalExtensions_94,
+ &ett_rrc_T_nonCriticalExtensions_138,
+ &ett_rrc_T_criticalExtensions_104,
&ett_rrc_T_r7_11,
&ett_rrc_T_v780NonCriticalExtensions_09,
&ett_rrc_T_v7d0NonCriticalExtensions_13,
&ett_rrc_T_v7f0NonCriticalExtensions_14,
&ett_rrc_T_v7g0NonCriticalExtensions_15,
- &ett_rrc_T_nonCriticalExtensions_129,
- &ett_rrc_T_criticalExtensions_95,
+ &ett_rrc_T_nonCriticalExtensions_139,
+ &ett_rrc_T_criticalExtensions_105,
&ett_rrc_T_r8_11,
&ett_rrc_T_v7d0NonCriticalExtensions_14,
&ett_rrc_T_v7f0NonCriticalExtensions_15,
&ett_rrc_T_v890NonCriticalExtensions_09,
&ett_rrc_T_v7g0NonCriticalExtensions_16,
&ett_rrc_T_v8a0NonCriticalExtensions_09,
- &ett_rrc_T_nonCriticalExtensions_130,
- &ett_rrc_T_criticalExtensions_96,
+ &ett_rrc_T_nonCriticalExtensions_140,
+ &ett_rrc_T_criticalExtensions_106,
&ett_rrc_T_r9_10,
&ett_rrc_T_v950NonCriticalExtensions_08,
- &ett_rrc_T_nonCriticalExtensions_131,
- &ett_rrc_T_criticalExtensions_97,
+ &ett_rrc_T_nonCriticalExtensions_141,
+ &ett_rrc_T_criticalExtensions_107,
+ &ett_rrc_T_r10_10,
+ &ett_rrc_T_nonCriticalExtensions_142,
+ &ett_rrc_T_criticalExtensions_108,
&ett_rrc_TransportChannelReconfiguration_r3_IEs,
&ett_rrc_T_dummy_11,
- &ett_rrc_T_fdd_37,
- &ett_rrc_T_modeSpecificPhysChInfo_12,
&ett_rrc_T_fdd_38,
+ &ett_rrc_T_modeSpecificPhysChInfo_12,
+ &ett_rrc_T_fdd_39,
&ett_rrc_TransportChannelReconfiguration_v3a0ext,
&ett_rrc_TransportChannelReconfiguration_v4b0ext_IEs,
&ett_rrc_TransportChannelReconfiguration_v590ext_IEs,
&ett_rrc_TransportChannelReconfiguration_r4_IEs,
&ett_rrc_T_dummy_12,
- &ett_rrc_T_fdd_39,
- &ett_rrc_T_modeSpecificPhysChInfo_13,
&ett_rrc_T_fdd_40,
+ &ett_rrc_T_modeSpecificPhysChInfo_13,
+ &ett_rrc_T_fdd_41,
&ett_rrc_TransportChannelReconfiguration_r5_IEs,
&ett_rrc_T_dummy_13,
- &ett_rrc_T_fdd_41,
- &ett_rrc_T_modeSpecificPhysChInfo_14,
&ett_rrc_T_fdd_42,
+ &ett_rrc_T_modeSpecificPhysChInfo_14,
+ &ett_rrc_T_fdd_43,
&ett_rrc_TransportChannelReconfiguration_v690ext_IEs,
&ett_rrc_TransportChannelReconfiguration_r6_IEs,
&ett_rrc_TransportChannelReconfiguration_v6b0ext_IEs,
@@ -157696,24 +167832,25 @@ void proto_register_rrc(void) {
&ett_rrc_TransportChannelReconfiguration_v8a0ext_IEs,
&ett_rrc_TransportChannelReconfiguration_r9_IEs,
&ett_rrc_TransportChannelReconfiguration_v950ext_IEs,
+ &ett_rrc_TransportChannelReconfiguration_r10_IEs,
&ett_rrc_TransportChannelReconfigurationComplete,
&ett_rrc_T_laterNonCriticalExtensions_52,
&ett_rrc_T_v770NonCriticalExtensions_29,
- &ett_rrc_T_nonCriticalExtensions_132,
+ &ett_rrc_T_nonCriticalExtensions_143,
&ett_rrc_TransportChannelReconfigurationComplete_v770ext_IEs,
&ett_rrc_TransportChannelReconfigurationFailure,
&ett_rrc_T_laterNonCriticalExtensions_53,
- &ett_rrc_T_nonCriticalExtensions_133,
+ &ett_rrc_T_nonCriticalExtensions_144,
&ett_rrc_TransportFormatCombinationControl,
- &ett_rrc_T_modeSpecificInfo_13,
- &ett_rrc_T_tdd_07,
+ &ett_rrc_T_modeSpecificInfo_14,
+ &ett_rrc_T_tdd_08,
&ett_rrc_T_laterNonCriticalExtensions_54,
&ett_rrc_T_v820NonCriticalExtensions_02,
- &ett_rrc_T_nonCriticalExtensions_134,
+ &ett_rrc_T_nonCriticalExtensions_145,
&ett_rrc_TransportFormatCombinationControl_v820ext_IEs,
&ett_rrc_TransportFormatCombinationControlFailure,
&ett_rrc_T_laterNonCriticalExtensions_55,
- &ett_rrc_T_nonCriticalExtensions_135,
+ &ett_rrc_T_nonCriticalExtensions_146,
&ett_rrc_UECapabilityEnquiry,
&ett_rrc_T_r3_25,
&ett_rrc_T_laterNonCriticalExtensions_56,
@@ -157721,9 +167858,9 @@ void proto_register_rrc(void) {
&ett_rrc_T_v590NonCriticalExtensions_26,
&ett_rrc_T_v770NonCriticalExtensions_30,
&ett_rrc_T_v860NonCriticalExtensions_18,
- &ett_rrc_T_nonCriticalExtensions_136,
+ &ett_rrc_T_nonCriticalExtensions_147,
&ett_rrc_T_later_than_r3_22,
- &ett_rrc_T_criticalExtensions_98,
+ &ett_rrc_T_criticalExtensions_109,
&ett_rrc_UECapabilityEnquiry_r3_IEs,
&ett_rrc_UECapabilityEnquiry_v4b0ext_IEs,
&ett_rrc_UECapabilityEnquiry_v590ext_IEs,
@@ -157738,7 +167875,7 @@ void proto_register_rrc(void) {
&ett_rrc_T_v590NonCriticalExtensions_27,
&ett_rrc_T_v5c0NonCriticalExtensions_01,
&ett_rrc_T_v690NonCriticalExtensions_39,
- &ett_rrc_T_nonCriticalExtensions_137,
+ &ett_rrc_T_nonCriticalExtensions_148,
&ett_rrc_UECapabilityInformation_v370ext,
&ett_rrc_UECapabilityInformation_v380ext_IEs,
&ett_rrc_UECapabilityInformation_v3a0ext_IEs,
@@ -157746,7 +167883,8 @@ void proto_register_rrc(void) {
&ett_rrc_T_v680NonCriticalExtensions_01,
&ett_rrc_T_v7e0NonCriticalExtensions_03,
&ett_rrc_T_v7f0NonCriticalExtensions_16,
- &ett_rrc_T_nonCriticalExtensions_138,
+ &ett_rrc_T_va40NonCriticalExtensions_14,
+ &ett_rrc_T_nonCriticalExtensions_149,
&ett_rrc_UECapabilityInformation_v4b0ext,
&ett_rrc_UECapabilityInformation_v590ext,
&ett_rrc_UECapabilityInformation_v5c0ext,
@@ -157755,20 +167893,21 @@ void proto_register_rrc(void) {
&ett_rrc_UECapabilityInformation_v690ext_IEs,
&ett_rrc_UECapabilityInformation_v7e0ext_IEs,
&ett_rrc_UECapabilityInformation_v7f0ext_IEs,
+ &ett_rrc_UECapabilityInformation_va40ext_IEs,
&ett_rrc_UECapabilityInformationConfirm,
&ett_rrc_T_r3_26,
&ett_rrc_T_laterNonCriticalExtensions_58,
&ett_rrc_T_v770NonCriticalExtensions_31,
- &ett_rrc_T_nonCriticalExtensions_139,
+ &ett_rrc_T_nonCriticalExtensions_150,
&ett_rrc_T_later_than_r3_23,
- &ett_rrc_T_criticalExtensions_99,
+ &ett_rrc_T_criticalExtensions_110,
&ett_rrc_UECapabilityInformationConfirm_r3_IEs,
&ett_rrc_UECapabilityInformationConfirm_v770ext_IEs,
&ett_rrc_UplinkDirectTransfer,
&ett_rrc_T_laterNonCriticalExtensions_59,
&ett_rrc_T_v690NonCriticalExtensions_40,
&ett_rrc_T_v7g0NonCriticalExtensions_17,
- &ett_rrc_T_nonCriticalExtensions_140,
+ &ett_rrc_T_nonCriticalExtensions_151,
&ett_rrc_UplinkDirectTransfer_v690ext_IEs,
&ett_rrc_UplinkDirectTransfer_v7g0ext_IEs,
&ett_rrc_UplinkPhysicalChannelControl,
@@ -157777,62 +167916,64 @@ void proto_register_rrc(void) {
&ett_rrc_T_v4b0NonCriticalExtensions_16,
&ett_rrc_T_noncriticalExtensions,
&ett_rrc_T_later_than_r3_24,
- &ett_rrc_T_criticalExtensions_100,
+ &ett_rrc_T_criticalExtensions_111,
&ett_rrc_T_r4_13,
&ett_rrc_T_v4d0NonCriticalExtensions_13,
&ett_rrc_T_v690NonCriticalExtensions_41,
- &ett_rrc_T_nonCriticalExtensions_141,
- &ett_rrc_T_criticalExtensions_101,
+ &ett_rrc_T_nonCriticalExtensions_152,
+ &ett_rrc_T_criticalExtensions_112,
&ett_rrc_T_r5_11,
&ett_rrc_T_v690NonCriticalExtensions_42,
&ett_rrc_T_v6a0NonCriticalExtensions_01,
- &ett_rrc_T_nonCriticalExtensions_142,
- &ett_rrc_T_criticalExtensions_102,
+ &ett_rrc_T_nonCriticalExtensions_153,
+ &ett_rrc_T_criticalExtensions_113,
&ett_rrc_T_r7_12,
- &ett_rrc_T_nonCriticalExtensions_143,
- &ett_rrc_T_criticalExtensions_103,
+ &ett_rrc_T_nonCriticalExtensions_154,
+ &ett_rrc_T_criticalExtensions_114,
&ett_rrc_UplinkPhysicalChannelControl_r3_IEs,
&ett_rrc_UplinkPhysicalChannelControl_v4b0ext_IEs,
&ett_rrc_UplinkPhysicalChannelControl_r4_IEs,
&ett_rrc_T_tddOption,
- &ett_rrc_T_tdd384_06,
- &ett_rrc_T_tdd128_06,
- &ett_rrc_UplinkPhysicalChannelControl_r5_IEs,
- &ett_rrc_T_tddOption_01,
&ett_rrc_T_tdd384_07,
&ett_rrc_T_tdd128_07,
+ &ett_rrc_UplinkPhysicalChannelControl_r5_IEs,
+ &ett_rrc_T_tddOption_01,
+ &ett_rrc_T_tdd384_08,
+ &ett_rrc_T_tdd128_08,
&ett_rrc_UplinkPhysicalChannelControl_v690ext_IEs,
&ett_rrc_UplinkPhysicalChannelControl_v6a0ext_IEs,
&ett_rrc_UplinkPhysicalChannelControl_r7_IEs,
&ett_rrc_T_tddOption_02,
- &ett_rrc_T_tdd384_08,
- &ett_rrc_T_tdd768_03,
- &ett_rrc_T_tdd128_08,
+ &ett_rrc_T_tdd384_09,
+ &ett_rrc_T_tdd768_04,
+ &ett_rrc_T_tdd128_09,
&ett_rrc_URAUpdate,
&ett_rrc_T_laterNonCriticalExtensions_61,
&ett_rrc_T_v770NonCriticalExtensions_32,
&ett_rrc_T_v860NonCriticalExtensions_19,
- &ett_rrc_T_nonCriticalExtensions_144,
+ &ett_rrc_T_va40NonCriticalExtensions_15,
+ &ett_rrc_T_nonCriticalExtensions_155,
&ett_rrc_URAUpdate_r3_add_ext_IEs,
- &ett_rrc_T_nonCriticalExtensions_145,
+ &ett_rrc_T_nonCriticalExtensions_156,
&ett_rrc_UraUpdate_v770ext_IEs,
&ett_rrc_URAUpdate_v7e0ext_IEs,
&ett_rrc_URAUpdate_v860ext_IEs,
+ &ett_rrc_URAUpdate_va40ext_IEs,
&ett_rrc_URAUpdateConfirm,
&ett_rrc_T_r3_28,
&ett_rrc_T_laterNonCriticalExtensions_62,
&ett_rrc_T_v690NonCriticalExtensions_43,
- &ett_rrc_T_nonCriticalExtensions_146,
+ &ett_rrc_T_nonCriticalExtensions_157,
&ett_rrc_T_later_than_r3_25,
- &ett_rrc_T_criticalExtensions_104,
+ &ett_rrc_T_criticalExtensions_115,
&ett_rrc_T_r5_12,
&ett_rrc_T_v690NonCriticalExtensions_44,
- &ett_rrc_T_nonCriticalExtensions_147,
- &ett_rrc_T_criticalExtensions_105,
+ &ett_rrc_T_nonCriticalExtensions_158,
+ &ett_rrc_T_criticalExtensions_116,
&ett_rrc_T_r7_13,
&ett_rrc_T_v860NonCriticalExtensions_20,
- &ett_rrc_T_nonCriticalExtensions_148,
- &ett_rrc_T_criticalExtensions_106,
+ &ett_rrc_T_nonCriticalExtensions_159,
+ &ett_rrc_T_criticalExtensions_117,
&ett_rrc_URAUpdateConfirm_r3_IEs,
&ett_rrc_URAUpdateConfirm_r5_IEs,
&ett_rrc_URAUpdateConfirm_v690ext_IEs,
@@ -157843,9 +167984,9 @@ void proto_register_rrc(void) {
&ett_rrc_T_laterNonCriticalExtensions_63,
&ett_rrc_T_v690NonCriticalExtensions_45,
&ett_rrc_T_v860NonCriticalExtensions_21,
- &ett_rrc_T_nonCriticalExtensions_149,
+ &ett_rrc_T_nonCriticalExtensions_160,
&ett_rrc_T_later_than_r3_26,
- &ett_rrc_T_criticalExtensions_107,
+ &ett_rrc_T_criticalExtensions_118,
&ett_rrc_URAUpdateConfirm_CCCH_r3_IEs,
&ett_rrc_UTRANMobilityInformation,
&ett_rrc_T_r3_30,
@@ -157853,20 +167994,20 @@ void proto_register_rrc(void) {
&ett_rrc_T_laterNonCriticalExtensions_64,
&ett_rrc_T_v690NonCriticalExtensions_46,
&ett_rrc_T_v860NonCriticalExtentions,
- &ett_rrc_T_nonCriticalExtensions_150,
+ &ett_rrc_T_nonCriticalExtensions_161,
&ett_rrc_T_later_than_r3_27,
- &ett_rrc_T_criticalExtensions_108,
+ &ett_rrc_T_criticalExtensions_119,
&ett_rrc_T_r5_13,
&ett_rrc_T_v690NonCriticalExtensions_47,
&ett_rrc_T_v860NonCriticalExtentions_01,
- &ett_rrc_T_nonCriticalExtensions_151,
- &ett_rrc_T_criticalExtensions_109,
+ &ett_rrc_T_nonCriticalExtensions_162,
+ &ett_rrc_T_criticalExtensions_120,
&ett_rrc_T_r7_14,
&ett_rrc_T_v860NonCriticalExtensions_22,
- &ett_rrc_T_nonCriticalExtensions_152,
- &ett_rrc_T_criticalExtensions_110,
+ &ett_rrc_T_nonCriticalExtensions_163,
+ &ett_rrc_T_criticalExtensions_121,
&ett_rrc_UTRANMobilityInformation_r3_IEs,
- &ett_rrc_T_nonCriticalExtensions_153,
+ &ett_rrc_T_nonCriticalExtensions_164,
&ett_rrc_UTRANMobilityInformation_v3a0ext_IEs,
&ett_rrc_UTRANMobilityInformation_r5_IEs,
&ett_rrc_UtranMobilityInformation_v690ext_IEs,
@@ -157876,31 +168017,33 @@ void proto_register_rrc(void) {
&ett_rrc_UTRANMobilityInformationConfirm,
&ett_rrc_T_laterNonCriticalExtensions_65,
&ett_rrc_T_v770NonCriticalExtension_01,
- &ett_rrc_T_nonCriticalExtensions_154,
+ &ett_rrc_T_va40NonCriticalExtensions_16,
+ &ett_rrc_T_nonCriticalExtensions_165,
&ett_rrc_UTRANMobilityInformationConfirm_v770ext_IEs,
+ &ett_rrc_UTRANMobilityInformationConfirm_va40ext_IEs,
&ett_rrc_UTRANMobilityInformationFailure,
&ett_rrc_T_laterNonCriticalExtensions_66,
- &ett_rrc_T_nonCriticalExtensions_155,
+ &ett_rrc_T_nonCriticalExtensions_166,
&ett_rrc_MBMSAccessInformation,
- &ett_rrc_T_nonCriticalExtensions_156,
+ &ett_rrc_T_nonCriticalExtensions_167,
&ett_rrc_MBMSCommonPTMRBInformation,
&ett_rrc_T_v770NonCriticalExtensions_33,
&ett_rrc_T_v780NonCriticalExtensions_10,
&ett_rrc_T_v860NonCriticalExtensions_23,
- &ett_rrc_T_nonCriticalExtensions_157,
+ &ett_rrc_T_nonCriticalExtensions_168,
&ett_rrc_MBMSCommonPTMRBInformation_v770ext_IEs,
&ett_rrc_MBMSCommonPTMRBInformation_v780ext_IEs,
&ett_rrc_MBMSCommonPTMRBInformation_v860ext_IEs,
&ett_rrc_MBMSCurrentCellPTMRBInformation,
&ett_rrc_T_v770NonCriticalExtensions_34,
- &ett_rrc_T_nonCriticalExtensions_158,
+ &ett_rrc_T_nonCriticalExtensions_169,
&ett_rrc_MBMSCurrentCellPTMRBInfo_v770ext_IEs,
&ett_rrc_MBMSGeneralInformation,
&ett_rrc_T_v6b0NonCriticalExtensions_12,
&ett_rrc_T_v770NonCriticalExtensions_35,
&ett_rrc_T_v860NonCriticalExtensions_24,
&ett_rrc_T_v890NoncriticalExtensions,
- &ett_rrc_T_nonCriticalExtensions_159,
+ &ett_rrc_T_nonCriticalExtensions_170,
&ett_rrc_MBMSGeneralInformation_v6b0ext_IEs,
&ett_rrc_MBMSGeneralInformation_v770ext_IEs,
&ett_rrc_MBMSGeneralInformation_v860ext_IEs,
@@ -157908,27 +168051,41 @@ void proto_register_rrc(void) {
&ett_rrc_MBMSModificationRequest,
&ett_rrc_T_v6b0NonCriticalExtensions_13,
&ett_rrc_T_v6f0NonCriticalExtensions_02,
- &ett_rrc_T_nonCriticalExtensions_160,
+ &ett_rrc_T_nonCriticalExtensions_171,
&ett_rrc_MBMSModificationRequest_v6b0ext_IEs,
&ett_rrc_MBMSModificationRequest_v6f0ext_IEs,
&ett_rrc_MBMSModifiedServicesInformation,
&ett_rrc_T_v770NonCriticalExtensions_36,
&ett_rrc_T_v7c0NonCriticalExtensions,
- &ett_rrc_T_nonCriticalExtensions_161,
+ &ett_rrc_T_nonCriticalExtensions_172,
&ett_rrc_MBMSModifiedServicesInformation_v770ext_IEs,
&ett_rrc_MBMSModifiedServicesInformation_v7c0ext_IEs,
&ett_rrc_MBMSNeighbouringCellPTMRBInformation,
&ett_rrc_T_v770NonCriticalExtensions_37,
- &ett_rrc_T_nonCriticalExtensions_162,
+ &ett_rrc_T_nonCriticalExtensions_173,
&ett_rrc_MBMSNeighbouringCellPTMRBInformation_v770ext_IEs,
&ett_rrc_MBMSSchedulingInformation,
- &ett_rrc_T_nonCriticalExtensions_163,
+ &ett_rrc_T_nonCriticalExtensions_174,
&ett_rrc_MBMSUnmodifiedServicesInformation,
&ett_rrc_T_v770NonCriticalExtensions_38,
- &ett_rrc_T_nonCriticalExtensions_164,
+ &ett_rrc_T_nonCriticalExtensions_175,
&ett_rrc_MBMSUnmodifiedServicesInformation_v770ext_IEs,
&ett_rrc_System_Information_Container,
- &ett_rrc_T_nonCriticalExtensions_165,
+ &ett_rrc_T_nonCriticalExtensions_176,
+ &ett_rrc_LoggingMeasurementConfiguration,
+ &ett_rrc_T_criticalExtensions_122,
+ &ett_rrc_T_r10_11,
+ &ett_rrc_T_nonCriticalExtensions_177,
+ &ett_rrc_T_criticalExtensions_123,
+ &ett_rrc_LoggingMeasurementConfiguration_r10_IEs,
+ &ett_rrc_UEInformationResponse,
+ &ett_rrc_T_nonCriticalExtensions_178,
+ &ett_rrc_UEInformationRequest,
+ &ett_rrc_T_criticalExtensions_124,
+ &ett_rrc_T_r10_12,
+ &ett_rrc_T_nonCriticalExtensions_179,
+ &ett_rrc_T_criticalExtensions_125,
+ &ett_rrc_UEInformationRequest_r10_IEs,
&ett_rrc_CN_DomainInformation,
&ett_rrc_CN_DomainInformationFull,
&ett_rrc_CN_DomainInformationList,
@@ -157939,6 +168096,7 @@ void proto_register_rrc(void) {
&ett_rrc_CN_InformationInfo,
&ett_rrc_CN_InformationInfo_r6,
&ett_rrc_CN_InformationInfoFull,
+ &ett_rrc_Ec_N0forANR,
&ett_rrc_Gsm_map_IDNNS,
&ett_rrc_T_routingbasis,
&ett_rrc_T_localPTMSI,
@@ -157983,9 +168141,9 @@ void proto_register_rrc(void) {
&ett_rrc_CellSelectReselectInfoSIB_3_4,
&ett_rrc_T_cellSelectQualityMeasure,
&ett_rrc_T_cpich_Ec_N0,
- &ett_rrc_T_modeSpecificInfo_14,
- &ett_rrc_T_fdd_43,
- &ett_rrc_T_tdd_08,
+ &ett_rrc_T_modeSpecificInfo_15,
+ &ett_rrc_T_fdd_44,
+ &ett_rrc_T_tdd_09,
&ett_rrc_CSG_DedicatedFrequencyInfoList,
&ett_rrc_CSG_PSCSplitInfo,
&ett_rrc_DomainSpecificAccessRestrictionForSharedNetwork_v670ext,
@@ -158034,13 +168192,16 @@ void proto_register_rrc(void) {
&ett_rrc_CompressedModeMeasCapability_LCR_r4,
&ett_rrc_CompressedModeMeasCapability_v860ext,
&ett_rrc_CompressedModeMeasCapability_v920ext,
+ &ett_rrc_CompressedModeMeasCapability_va40ext,
&ett_rrc_CompressedModeMeasCapabEUTRA,
&ett_rrc_CompressedModeMeasCapabEUTRAList,
&ett_rrc_CompressedModeMeasCapabFDDList,
&ett_rrc_CompressedModeMeasCapabFDDList2,
+ &ett_rrc_CompressedModeMeasCapabFDDList3,
&ett_rrc_CompressedModeMeasCapabFDDList_ext,
&ett_rrc_CompressedModeMeasCapabFDD,
&ett_rrc_CompressedModeMeasCapabFDD2,
+ &ett_rrc_CompressedModeMeasCapabFDD3,
&ett_rrc_CompressedModeMeasCapabFDD_ext,
&ett_rrc_CompressedModeMeasCapabTDDList,
&ett_rrc_CompressedModeMeasCapabTDD,
@@ -158057,10 +168218,12 @@ void proto_register_rrc(void) {
&ett_rrc_DL_PhysChCapabilityFDD_v770ext,
&ett_rrc_DL_PhysChCapabilityFDD_v860ext,
&ett_rrc_DL_PhysChCapabilityFDD_v920ext,
+ &ett_rrc_DL_PhysChCapabilityFDD_va40ext,
&ett_rrc_DL_PhysChCapabilityTDD,
&ett_rrc_DL_PhysChCapabilityTDD_LCR_r4,
&ett_rrc_DL_PhysChCapabilityTDD_128_v770ext,
&ett_rrc_DL_PhysChCapabilityTDD_128_v860ext,
+ &ett_rrc_DL_PhysChCapabilityInfoTDD_128_va40ext,
&ett_rrc_DL_PhysChCapabilityTDD_768,
&ett_rrc_T_tdd768_hspdsch,
&ett_rrc_DL_PhysChCapabilityInfoTDD_768,
@@ -158069,6 +168232,14 @@ void proto_register_rrc(void) {
&ett_rrc_DRAC_SysInfoList,
&ett_rrc_FailureCauseWithProtErr,
&ett_rrc_FailureCauseWithProtErrTrId,
+ &ett_rrc_FrequencyBandsIndicatorSupport,
+ &ett_rrc_T_modeSpecificInfo_16,
+ &ett_rrc_T_fdd_45,
+ &ett_rrc_T_tdd_10,
+ &ett_rrc_FrequencyBandsIndicatorTDD128,
+ &ett_rrc_FrequencyBandsIndicatorSupportTDD128,
+ &ett_rrc_FrequencyBandsRedirectionFDD,
+ &ett_rrc_FrequencyBandsIndicatorFDD,
&ett_rrc_GroupIdentityWithReleaseInformation,
&ett_rrc_GroupReleaseInformation,
&ett_rrc_GSM_Measurements,
@@ -158088,10 +168259,14 @@ void proto_register_rrc(void) {
&ett_rrc_MeasurementCapabilityExt,
&ett_rrc_MeasurementCapabilityExt2,
&ett_rrc_MeasurementCapabilityExt3,
+ &ett_rrc_MeasurementCapabilityExt4,
&ett_rrc_MeasurementCapability_r4_ext,
&ett_rrc_MeasurementCapability_v860ext,
&ett_rrc_MeasurementCapability_v920ext,
+ &ett_rrc_MeasurementCapability_va40ext,
&ett_rrc_MeasurementCapabilityTDD,
+ &ett_rrc_NonContiguousMultiCellCombinationList,
+ &ett_rrc_NonContiguousMultiCell,
&ett_rrc_MultiRAT_Capability,
&ett_rrc_MultiModeRAT_Capability_v590ext,
&ett_rrc_MultiModeRAT_Capability_v680ext,
@@ -158134,9 +168309,12 @@ void proto_register_rrc(void) {
&ett_rrc_T_tddPhysChCapability_128_01,
&ett_rrc_PhysicalChannelCapability_v920ext,
&ett_rrc_T_fddPhysChCapability_03,
+ &ett_rrc_PhysicalChannelCapability_va40ext,
+ &ett_rrc_T_fddPhysChCapability_04,
+ &ett_rrc_T_tddPhysChCapability_128_02,
&ett_rrc_PhysicalChannelCapabilityInfo_v770ext,
&ett_rrc_T_tddPhysChCapability_768_01,
- &ett_rrc_T_tddPhysChCapability_128_02,
+ &ett_rrc_T_tddPhysChCapability_128_03,
&ett_rrc_PhysicalChannelCapability_LCR_r4,
&ett_rrc_T_tdd128_PhysChCapability,
&ett_rrc_PhysicalChannelCapability_hspdsch_r5,
@@ -158168,6 +168346,7 @@ void proto_register_rrc(void) {
&ett_rrc_RLC_Capability_r5_ext,
&ett_rrc_RLC_Capability_v770ext,
&ett_rrc_RLC_Capability_v920ext,
+ &ett_rrc_RLC_Capability_va40ext,
&ett_rrc_RRC_ConnectionReleaseInformation,
&ett_rrc_T_release,
&ett_rrc_RRC_MessageSequenceNumberList,
@@ -158196,6 +168375,7 @@ void proto_register_rrc(void) {
&ett_rrc_U_RNTI,
&ett_rrc_U_RNTI_Group,
&ett_rrc_U_RNTI_Short,
+ &ett_rrc_UE_BasedNetworkPerformanceMeasurementsParameters,
&ett_rrc_UE_CapabilityContainer_IEs,
&ett_rrc_T_v6b0NonCriticalExtensions_14,
&ett_rrc_T_v6e0NonCriticalExtensions_02,
@@ -158206,7 +168386,9 @@ void proto_register_rrc(void) {
&ett_rrc_T_v890NonCriticalExtensions_10,
&ett_rrc_T_v920NonCriticalExtensions_03,
&ett_rrc_T_v970NonCriticalExtensions_03,
- &ett_rrc_T_nonCriticalExtensions_166,
+ &ett_rrc_T_va40NonCriticalExtensions_17,
+ &ett_rrc_T_va60NonCriticalExtensions,
+ &ett_rrc_T_nonCriticalExtensions_180,
&ett_rrc_UE_RadioAccessCapability_v6b0ext_IEs,
&ett_rrc_UE_RadioAccessCapability_v6e0ext_IEs,
&ett_rrc_UE_RadioAccessCapability_v770ext_IEs,
@@ -158216,6 +168398,8 @@ void proto_register_rrc(void) {
&ett_rrc_UE_RadioAccessCapability_v890ext_IEs,
&ett_rrc_UE_RadioAccessCapability_v920ext_IEs,
&ett_rrc_UE_RadioAccessCapability_v970ext_IEs,
+ &ett_rrc_UE_RadioAccessCapability_va40ext_IEs,
+ &ett_rrc_UE_RadioAccessCapability_va60ext_IEs,
&ett_rrc_UE_ConnTimersAndConstants,
&ett_rrc_UE_ConnTimersAndConstants_v3a0ext,
&ett_rrc_UE_ConnTimersAndConstants_r5,
@@ -158241,11 +168425,20 @@ void proto_register_rrc(void) {
&ett_rrc_UE_RadioAccessCapability_v860ext,
&ett_rrc_UE_RadioAccessCapability_v880ext,
&ett_rrc_UE_RadioAccessCapability_v920ext,
+ &ett_rrc_UE_RadioAccessCapability_va40ext,
+ &ett_rrc_UE_RadioAccessCapabBand_va40ext,
&ett_rrc_UE_RadioAccessCapabBandFDDList2,
&ett_rrc_UE_RadioAccessCapabBandFDDList3,
+ &ett_rrc_UE_RadioAccessCapabBandFDDList4,
+ &ett_rrc_UE_RadioAccessCapabBandFDDList4_va60ext,
+ &ett_rrc_UE_RadioAccessCapabBandFDDList5,
&ett_rrc_UE_RadioAccessCapabBandFDD2,
&ett_rrc_T_fddRF_Capability_01,
&ett_rrc_UE_RadioAccessCapabBandFDD3,
+ &ett_rrc_UE_RadioAccessCapabBandFDD4,
+ &ett_rrc_UE_RadioAccessCapabBandFDD4_va60ext,
+ &ett_rrc_UE_RadioAccessCapabBandFDD5,
+ &ett_rrc_T_fddRF_Capability_02,
&ett_rrc_UE_PositioningCapabilityExt_v380,
&ett_rrc_UE_PositioningCapabilityExt_v3a0,
&ett_rrc_UE_PositioningCapabilityExt_v3g0,
@@ -158254,9 +168447,11 @@ void proto_register_rrc(void) {
&ett_rrc_UE_RadioAccessCapabBandCombList,
&ett_rrc_UE_RadioAccessCapabBandFDDList,
&ett_rrc_UE_RadioAccessCapabBandFDDList_ext,
+ &ett_rrc_UE_RadioAccessCapabBandFDDList_ext2,
&ett_rrc_UE_RadioAccessCapabBandFDD,
- &ett_rrc_T_fddRF_Capability_02,
+ &ett_rrc_T_fddRF_Capability_03,
&ett_rrc_UE_RadioAccessCapabBandFDD_ext,
+ &ett_rrc_UE_RadioAccessCapabBandFDD_ext2,
&ett_rrc_UE_RadioAccessCapability_v4b0ext,
&ett_rrc_T_tdd_CapabilityExt,
&ett_rrc_UE_RadioAccessCapabilityComp,
@@ -158269,15 +168464,19 @@ void proto_register_rrc(void) {
&ett_rrc_UE_RadioAccessCapabilityComp2_v7f0ext,
&ett_rrc_UE_RadioAccessCapabilityComp2_v860ext,
&ett_rrc_UE_RadioAccessCapabilityComp2_v920ext,
+ &ett_rrc_UE_RadioAccessCapabilityComp2_va40ext,
&ett_rrc_UE_RadioAccessCapabilityComp_TDD128,
&ett_rrc_RF_CapabilityComp,
- &ett_rrc_T_fdd_44,
+ &ett_rrc_T_fdd_46,
&ett_rrc_T_tdd384_RF_Capability,
&ett_rrc_T_tdd128_RF_Capability,
&ett_rrc_RF_CapabilityComp_v770ext,
&ett_rrc_T_tdd768_RF_Capability,
&ett_rrc_RF_CapabBandListFDDComp,
&ett_rrc_RF_CapabBandListFDDComp_ext,
+ &ett_rrc_RF_CapabBandListFDDComp_ext2,
+ &ett_rrc_UE_RadioAccessCapabBandCombList_va40ext,
+ &ett_rrc_SupportedCarrierCombination,
&ett_rrc_UE_RadioAccessCapability_v590ext,
&ett_rrc_UE_RadioAccessCapability_v5c0ext,
&ett_rrc_UE_RadioAccessCapability_v680ext,
@@ -158293,6 +168492,7 @@ void proto_register_rrc(void) {
&ett_rrc_T_tdd128_edch,
&ett_rrc_T_supported_04,
&ett_rrc_UL_PhysChCapabilityInfoTDD_128_v770ext,
+ &ett_rrc_UL_PhysChCapabilityInfoTDD_128_va40ext,
&ett_rrc_UL_PhysChCapabilityTDD_768,
&ett_rrc_T_tdd384_edch_01,
&ett_rrc_T_supported_05,
@@ -158302,8 +168502,8 @@ void proto_register_rrc(void) {
&ett_rrc_T_fdd_edch,
&ett_rrc_T_supported_06,
&ett_rrc_UL_TransChCapability,
- &ett_rrc_T_modeSpecificInfo_15,
- &ett_rrc_T_tdd_09,
+ &ett_rrc_T_modeSpecificInfo_17,
+ &ett_rrc_T_tdd_11,
&ett_rrc_UE_Positioning_Capability,
&ett_rrc_UE_SecurityInformation,
&ett_rrc_UE_SecurityInformation2,
@@ -158535,8 +168735,8 @@ void proto_register_rrc(void) {
&ett_rrc_Common_E_DCH_MAC_d_FlowList,
&ett_rrc_CommonDynamicTF_Info,
&ett_rrc_T_rlc_Size,
- &ett_rrc_T_fdd_45,
- &ett_rrc_T_tdd_10,
+ &ett_rrc_T_fdd_47,
+ &ett_rrc_T_tdd_12,
&ett_rrc_T_commonTDD_Choice,
&ett_rrc_SEQUENCE_SIZE_1_maxTF_OF_NumberOfTransportBlocks,
&ett_rrc_CommonDynamicTF_Info_DynamicTTI,
@@ -158576,16 +168776,16 @@ void proto_register_rrc(void) {
&ett_rrc_DL_AddReconfTransChInformation2,
&ett_rrc_T_tfs_SignallingMode_05,
&ett_rrc_DL_CommonTransChInfo,
- &ett_rrc_T_modeSpecificInfo_16,
- &ett_rrc_T_fdd_46,
+ &ett_rrc_T_modeSpecificInfo_18,
+ &ett_rrc_T_fdd_48,
&ett_rrc_T_dl_Parameters,
- &ett_rrc_T_tdd_11,
+ &ett_rrc_T_tdd_13,
&ett_rrc_DL_CommonTransChInfo_r4,
- &ett_rrc_T_modeSpecificInfo_17,
- &ett_rrc_T_fdd_47,
+ &ett_rrc_T_modeSpecificInfo_19,
+ &ett_rrc_T_fdd_49,
&ett_rrc_T_dl_Parameters_01,
&ett_rrc_T_dl_DCH_TFCS,
- &ett_rrc_T_tdd_12,
+ &ett_rrc_T_tdd_14,
&ett_rrc_DL_DeletedTransChInfoList,
&ett_rrc_DL_DeletedTransChInfoList_r5,
&ett_rrc_DL_DeletedTransChInfoList_r7,
@@ -158604,8 +168804,8 @@ void proto_register_rrc(void) {
&ett_rrc_E_DCH_AddReconf_MAC_d_Flow_r7,
&ett_rrc_T_transmissionGrantType_01,
&ett_rrc_T_non_ScheduledTransGrantInfo_01,
- &ett_rrc_T_modeSpecificInfo_18,
- &ett_rrc_T_fdd_48,
+ &ett_rrc_T_modeSpecificInfo_20,
+ &ett_rrc_T_fdd_50,
&ett_rrc_E_DCH_AddReconf_MAC_d_FlowList,
&ett_rrc_E_DCH_AddReconf_MAC_d_FlowList_r7,
&ett_rrc_ExplicitTFCS_Configuration,
@@ -158653,8 +168853,8 @@ void proto_register_rrc(void) {
&ett_rrc_T_sizeType3_01,
&ett_rrc_OctetModeRLC_SizeInfoType2,
&ett_rrc_PowerOffsetInfoShort,
- &ett_rrc_T_modeSpecificInfo_19,
- &ett_rrc_T_fdd_49,
+ &ett_rrc_T_modeSpecificInfo_21,
+ &ett_rrc_T_fdd_51,
&ett_rrc_PowerOffsetInformation,
&ett_rrc_PreDefTransChConfiguration,
&ett_rrc_QualityTarget,
@@ -158662,14 +168862,14 @@ void proto_register_rrc(void) {
&ett_rrc_RestrictedTrChInfoList,
&ett_rrc_SemistaticTF_Information,
&ett_rrc_SignalledGainFactors,
- &ett_rrc_T_modeSpecificInfo_20,
- &ett_rrc_T_fdd_50,
+ &ett_rrc_T_modeSpecificInfo_22,
+ &ett_rrc_T_fdd_52,
&ett_rrc_SplitTFCI_Signalling,
&ett_rrc_TFC_Subset,
&ett_rrc_TFC_SubsetList,
&ett_rrc_TFC_SubsetList_item,
- &ett_rrc_T_modeSpecificInfo_21,
- &ett_rrc_T_tdd_13,
+ &ett_rrc_T_modeSpecificInfo_23,
+ &ett_rrc_T_tdd_15,
&ett_rrc_TFCI_Field2_Information,
&ett_rrc_TFCI_Range,
&ett_rrc_TFCI_RangeList,
@@ -158712,20 +168912,20 @@ void proto_register_rrc(void) {
&ett_rrc_T_dch_usch_01,
&ett_rrc_T_e_dch_03,
&ett_rrc_T_modeSpecific,
- &ett_rrc_T_fdd_51,
+ &ett_rrc_T_fdd_53,
&ett_rrc_UL_AddReconfTransChInformation_r8,
&ett_rrc_T_dch_usch_02,
&ett_rrc_T_e_dch_04,
&ett_rrc_T_modeSpecific_01,
- &ett_rrc_T_fdd_52,
+ &ett_rrc_T_fdd_54,
&ett_rrc_UL_CommonTransChInfo,
- &ett_rrc_T_modeSpecificInfo_22,
- &ett_rrc_T_fdd_53,
- &ett_rrc_T_tdd_14,
+ &ett_rrc_T_modeSpecificInfo_24,
+ &ett_rrc_T_fdd_55,
+ &ett_rrc_T_tdd_16,
&ett_rrc_UL_CommonTransChInfo_r4,
- &ett_rrc_T_modeSpecificInfo_23,
- &ett_rrc_T_fdd_54,
- &ett_rrc_T_tdd_15,
+ &ett_rrc_T_modeSpecificInfo_25,
+ &ett_rrc_T_fdd_56,
+ &ett_rrc_T_tdd_17,
&ett_rrc_UL_ControlledTrChList,
&ett_rrc_UL_DeletedTransChInfoList,
&ett_rrc_UL_DeletedTransChInfoList_r6,
@@ -158766,6 +168966,8 @@ void proto_register_rrc(void) {
&ett_rrc_AdditionalPRACH_TF_and_TFCS_CCCH_IEs,
&ett_rrc_AdditionalPRACH_TF_and_TFCS_CCCH,
&ett_rrc_AdditionalPRACH_TF_and_TFCS_CCCH_List,
+ &ett_rrc_AdditionalDLSecCellInfoListFDD,
+ &ett_rrc_AdditionalDLSecCellInfoFDD,
&ett_rrc_AICH_Info,
&ett_rrc_AllocationPeriodInfo,
&ett_rrc_AP_Signature_VCAM,
@@ -158795,10 +168997,10 @@ void proto_register_rrc(void) {
&ett_rrc_Common_E_RNTI_Info,
&ett_rrc_Common_E_RNTI_Info_item,
&ett_rrc_CommonEDCHSystemInfo,
- &ett_rrc_T_modeSpecificInfo_24,
+ &ett_rrc_T_modeSpecificInfo_26,
&ett_rrc_T_dummy_14,
- &ett_rrc_T_tdd_16,
- &ett_rrc_T_tdd128_09,
+ &ett_rrc_T_tdd_18,
+ &ett_rrc_T_tdd128_10,
&ett_rrc_T_ccch_transmission_Info,
&ett_rrc_CommonEDCHSystemInfoFDD,
&ett_rrc_SEQUENCE_SIZE_1_maxEDCHs_OF_Common_E_DCH_ResourceInfoList,
@@ -158816,13 +169018,13 @@ void proto_register_rrc(void) {
&ett_rrc_DL_CCTrCh,
&ett_rrc_DL_CCTrCh_r4,
&ett_rrc_T_tddOption_03,
- &ett_rrc_T_tdd384_09,
- &ett_rrc_T_tdd128_10,
- &ett_rrc_DL_CCTrCh_r7,
- &ett_rrc_T_tddOption_04,
&ett_rrc_T_tdd384_10,
- &ett_rrc_T_tdd768_04,
&ett_rrc_T_tdd128_11,
+ &ett_rrc_DL_CCTrCh_r7,
+ &ett_rrc_T_tddOption_04,
+ &ett_rrc_T_tdd384_11,
+ &ett_rrc_T_tdd768_05,
+ &ett_rrc_T_tdd128_12,
&ett_rrc_DL_CCTrChList,
&ett_rrc_DL_CCTrChList_r7,
&ett_rrc_DL_CCTrChList_r4,
@@ -158830,130 +169032,137 @@ void proto_register_rrc(void) {
&ett_rrc_DL_ChannelisationCode,
&ett_rrc_DL_ChannelisationCodeList,
&ett_rrc_DL_CommonInformation,
- &ett_rrc_T_modeSpecificInfo_25,
- &ett_rrc_T_fdd_55,
- &ett_rrc_T_tdd_17,
- &ett_rrc_DL_CommonInformation_r4,
- &ett_rrc_T_modeSpecificInfo_26,
- &ett_rrc_T_fdd_56,
- &ett_rrc_T_tdd_18,
- &ett_rrc_T_tddOption_05,
- &ett_rrc_T_tdd128_12,
- &ett_rrc_DL_CommonInformation_r5,
&ett_rrc_T_modeSpecificInfo_27,
&ett_rrc_T_fdd_57,
&ett_rrc_T_tdd_19,
- &ett_rrc_T_tddOption_06,
- &ett_rrc_T_tdd128_13,
- &ett_rrc_DL_CommonInformation_r6,
- &ett_rrc_T_dl_dpchInfoCommon,
+ &ett_rrc_DL_CommonInformation_r4,
&ett_rrc_T_modeSpecificInfo_28,
&ett_rrc_T_fdd_58,
&ett_rrc_T_tdd_20,
- &ett_rrc_T_tddOption_07,
- &ett_rrc_T_tdd128_14,
- &ett_rrc_DL_CommonInformation_r7,
- &ett_rrc_T_dl_dpchInfoCommon_01,
+ &ett_rrc_T_tddOption_05,
+ &ett_rrc_T_tdd128_13,
+ &ett_rrc_DL_CommonInformation_r5,
&ett_rrc_T_modeSpecificInfo_29,
&ett_rrc_T_fdd_59,
&ett_rrc_T_tdd_21,
- &ett_rrc_T_tddOption_08,
- &ett_rrc_T_tdd128_15,
- &ett_rrc_DL_CommonInformation_r8,
- &ett_rrc_T_dl_dpchInfoCommon_02,
+ &ett_rrc_T_tddOption_06,
+ &ett_rrc_T_tdd128_14,
+ &ett_rrc_DL_CommonInformation_r6,
+ &ett_rrc_T_dl_dpchInfoCommon,
&ett_rrc_T_modeSpecificInfo_30,
&ett_rrc_T_fdd_60,
&ett_rrc_T_tdd_22,
- &ett_rrc_T_tddOption_09,
- &ett_rrc_T_tdd128_16,
- &ett_rrc_DL_CommonInformationPost,
- &ett_rrc_DL_CommonInformationPredef,
- &ett_rrc_DL_DPCH_InfoCommon,
- &ett_rrc_T_cfnHandling,
- &ett_rrc_T_initialise,
+ &ett_rrc_T_tddOption_07,
+ &ett_rrc_T_tdd128_15,
+ &ett_rrc_DL_CommonInformation_r7,
+ &ett_rrc_T_dl_dpchInfoCommon_01,
&ett_rrc_T_modeSpecificInfo_31,
&ett_rrc_T_fdd_61,
&ett_rrc_T_tdd_23,
- &ett_rrc_DL_DPCH_InfoCommon_r4,
- &ett_rrc_T_cfnHandling_01,
- &ett_rrc_T_initialise_01,
+ &ett_rrc_T_tddOption_08,
+ &ett_rrc_T_tdd128_16,
+ &ett_rrc_DL_CommonInformation_r8,
+ &ett_rrc_T_dl_dpchInfoCommon_02,
&ett_rrc_T_modeSpecificInfo_32,
&ett_rrc_T_fdd_62,
&ett_rrc_T_tdd_24,
- &ett_rrc_DL_DPCH_InfoCommon_r6,
- &ett_rrc_T_cfnHandling_02,
- &ett_rrc_T_maintain,
+ &ett_rrc_T_tddOption_09,
+ &ett_rrc_T_tdd128_17,
+ &ett_rrc_DL_CommonInformation_r10,
+ &ett_rrc_T_dl_dpchInfoCommon_03,
&ett_rrc_T_modeSpecificInfo_33,
&ett_rrc_T_fdd_63,
&ett_rrc_T_tdd_25,
- &ett_rrc_DL_DPCH_InfoCommonPost,
- &ett_rrc_DL_DPCH_InfoCommonPredef,
+ &ett_rrc_T_tddOption_10,
+ &ett_rrc_T_tdd128_18,
+ &ett_rrc_DL_CommonInformationPost,
+ &ett_rrc_DL_CommonInformationPredef,
+ &ett_rrc_DL_DPCH_InfoCommon,
+ &ett_rrc_T_cfnHandling,
+ &ett_rrc_T_initialise,
&ett_rrc_T_modeSpecificInfo_34,
&ett_rrc_T_fdd_64,
&ett_rrc_T_tdd_26,
- &ett_rrc_DL_DPCH_InfoPerRL,
+ &ett_rrc_DL_DPCH_InfoCommon_r4,
+ &ett_rrc_T_cfnHandling_01,
+ &ett_rrc_T_initialise_01,
+ &ett_rrc_T_modeSpecificInfo_35,
&ett_rrc_T_fdd_65,
&ett_rrc_T_tdd_27,
- &ett_rrc_DL_DPCH_InfoPerRL_r4,
+ &ett_rrc_DL_DPCH_InfoCommon_r6,
+ &ett_rrc_T_cfnHandling_02,
+ &ett_rrc_T_maintain,
+ &ett_rrc_T_modeSpecificInfo_36,
&ett_rrc_T_fdd_66,
&ett_rrc_T_tdd_28,
- &ett_rrc_DL_DPCH_InfoPerRL_r5,
+ &ett_rrc_DL_DPCH_InfoCommonPost,
+ &ett_rrc_DL_DPCH_InfoCommonPredef,
+ &ett_rrc_T_modeSpecificInfo_37,
&ett_rrc_T_fdd_67,
&ett_rrc_T_tdd_29,
- &ett_rrc_DL_DPCH_InfoPerRL_r6,
+ &ett_rrc_DL_DPCH_InfoPerRL,
&ett_rrc_T_fdd_68,
&ett_rrc_T_tdd_30,
- &ett_rrc_DL_DPCH_InfoPerRL_r7,
+ &ett_rrc_DL_DPCH_InfoPerRL_r4,
&ett_rrc_T_fdd_69,
&ett_rrc_T_tdd_31,
+ &ett_rrc_DL_DPCH_InfoPerRL_r5,
+ &ett_rrc_T_fdd_70,
+ &ett_rrc_T_tdd_32,
+ &ett_rrc_DL_DPCH_InfoPerRL_r6,
+ &ett_rrc_T_fdd_71,
+ &ett_rrc_T_tdd_33,
+ &ett_rrc_DL_DPCH_InfoPerRL_r7,
+ &ett_rrc_T_fdd_72,
+ &ett_rrc_T_tdd_34,
&ett_rrc_DL_FDPCH_InfoPerRL_r6,
&ett_rrc_DL_FDPCH_InfoPerRL_r7,
&ett_rrc_DL_DPCH_InfoPerRL_PostFDD,
&ett_rrc_DL_DPCH_InfoPerRL_PostTDD,
&ett_rrc_DL_DPCH_InfoPerRL_PostTDD_LCR_r4,
&ett_rrc_DL_DPCH_PowerControlInfo,
- &ett_rrc_T_modeSpecificInfo_35,
- &ett_rrc_T_fdd_70,
- &ett_rrc_T_tdd_32,
+ &ett_rrc_T_modeSpecificInfo_38,
+ &ett_rrc_T_fdd_73,
+ &ett_rrc_T_tdd_35,
&ett_rrc_DL_FDPCH_InfoCommon_r6,
&ett_rrc_T_cfnHandling_03,
&ett_rrc_T_maintain_01,
&ett_rrc_DL_HSPDSCH_Information,
- &ett_rrc_T_modeSpecificInfo_36,
- &ett_rrc_T_tdd_33,
- &ett_rrc_T_tdd384_11,
- &ett_rrc_T_tdd128_17,
- &ett_rrc_DL_HSPDSCH_Information_r6,
- &ett_rrc_T_modeSpecificInfo_37,
- &ett_rrc_T_tdd_34,
- &ett_rrc_T_tdd384_12,
- &ett_rrc_T_tdd128_18,
- &ett_rrc_DL_HSPDSCH_Information_r7,
- &ett_rrc_T_modeSpecificInfo_38,
- &ett_rrc_T_tdd_35,
- &ett_rrc_T_tdd384_13,
- &ett_rrc_T_tdd768_05,
- &ett_rrc_T_tdd128_19,
- &ett_rrc_T_fdd_71,
- &ett_rrc_DL_HSPDSCH_Information_r8,
&ett_rrc_T_modeSpecificInfo_39,
&ett_rrc_T_tdd_36,
- &ett_rrc_T_tdd384_14,
- &ett_rrc_T_tdd768_06,
- &ett_rrc_T_tdd128_20,
- &ett_rrc_T_fdd_72,
- &ett_rrc_DL_HSPDSCH_Information_r8_ext,
+ &ett_rrc_T_tdd384_12,
+ &ett_rrc_T_tdd128_19,
+ &ett_rrc_DL_HSPDSCH_Information_r6,
&ett_rrc_T_modeSpecificInfo_40,
&ett_rrc_T_tdd_37,
- &ett_rrc_T_tdd128_21,
- &ett_rrc_DL_HSPDSCH_Information_r8_ext2,
- &ett_rrc_DL_HSPDSCH_Information_r9,
+ &ett_rrc_T_tdd384_13,
+ &ett_rrc_T_tdd128_20,
+ &ett_rrc_DL_HSPDSCH_Information_r7,
&ett_rrc_T_modeSpecificInfo_41,
&ett_rrc_T_tdd_38,
+ &ett_rrc_T_tdd384_14,
+ &ett_rrc_T_tdd768_06,
+ &ett_rrc_T_tdd128_21,
+ &ett_rrc_T_fdd_74,
+ &ett_rrc_DL_HSPDSCH_Information_r8,
+ &ett_rrc_T_modeSpecificInfo_42,
+ &ett_rrc_T_tdd_39,
&ett_rrc_T_tdd384_15,
&ett_rrc_T_tdd768_07,
&ett_rrc_T_tdd128_22,
- &ett_rrc_T_fdd_73,
+ &ett_rrc_T_fdd_75,
+ &ett_rrc_DL_HSPDSCH_Information_r8_ext,
+ &ett_rrc_T_modeSpecificInfo_43,
+ &ett_rrc_T_tdd_40,
+ &ett_rrc_T_tdd128_23,
+ &ett_rrc_DL_HSPDSCH_Information_r8_ext2,
+ &ett_rrc_DL_HSPDSCH_Information_r9,
+ &ett_rrc_T_modeSpecificInfo_44,
+ &ett_rrc_T_tdd_41,
+ &ett_rrc_T_tdd384_16,
+ &ett_rrc_T_tdd768_08,
+ &ett_rrc_T_tdd128_24,
+ &ett_rrc_T_fdd_76,
&ett_rrc_DL_HSPDSCH_MultiCarrier_Information,
&ett_rrc_DL_HSPDSCH_MultiCarrier_Information_item,
&ett_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD128_MultiCarrier,
@@ -158962,46 +169171,46 @@ void proto_register_rrc(void) {
&ett_rrc_DL_HSPDSCH_TS_Configuration_VHCR,
&ett_rrc_DL_HSPDSCH_TS_Configuration_VHCR_item,
&ett_rrc_DL_InformationPerRL,
- &ett_rrc_T_modeSpecificInfo_42,
- &ett_rrc_T_fdd_74,
- &ett_rrc_DL_InformationPerRL_r4,
- &ett_rrc_T_modeSpecificInfo_43,
- &ett_rrc_T_fdd_75,
- &ett_rrc_DL_InformationPerRL_r5,
- &ett_rrc_T_modeSpecificInfo_44,
- &ett_rrc_T_fdd_76,
- &ett_rrc_DL_InformationPerRL_r5bis,
&ett_rrc_T_modeSpecificInfo_45,
&ett_rrc_T_fdd_77,
- &ett_rrc_DL_InformationPerRL_r6,
+ &ett_rrc_DL_InformationPerRL_r4,
&ett_rrc_T_modeSpecificInfo_46,
&ett_rrc_T_fdd_78,
+ &ett_rrc_DL_InformationPerRL_r5,
+ &ett_rrc_T_modeSpecificInfo_47,
+ &ett_rrc_T_fdd_79,
+ &ett_rrc_DL_InformationPerRL_r5bis,
+ &ett_rrc_T_modeSpecificInfo_48,
+ &ett_rrc_T_fdd_80,
+ &ett_rrc_DL_InformationPerRL_r6,
+ &ett_rrc_T_modeSpecificInfo_49,
+ &ett_rrc_T_fdd_81,
&ett_rrc_T_dl_dpchInfo,
&ett_rrc_T_e_HICH_Info,
&ett_rrc_T_e_RGCH_Info_01,
&ett_rrc_DL_InformationPerRL_v6b0ext,
&ett_rrc_DL_InformationPerRL_r7,
- &ett_rrc_T_modeSpecificInfo_47,
- &ett_rrc_T_fdd_79,
+ &ett_rrc_T_modeSpecificInfo_50,
+ &ett_rrc_T_fdd_82,
&ett_rrc_T_dl_dpchInfo_01,
&ett_rrc_T_modeSpecificInfo2,
- &ett_rrc_T_fdd_80,
+ &ett_rrc_T_fdd_83,
&ett_rrc_T_e_HICH_Info_01,
&ett_rrc_T_e_RGCH_Info_02,
- &ett_rrc_T_tdd_39,
+ &ett_rrc_T_tdd_42,
&ett_rrc_T_tdd384_tdd768,
- &ett_rrc_T_tdd128_23,
+ &ett_rrc_T_tdd128_25,
&ett_rrc_DL_InformationPerRL_r8,
- &ett_rrc_T_modeSpecificInfo_48,
- &ett_rrc_T_fdd_81,
+ &ett_rrc_T_modeSpecificInfo_51,
+ &ett_rrc_T_fdd_84,
&ett_rrc_T_dl_dpchInfo_02,
&ett_rrc_T_modeSpecificInfo2_01,
- &ett_rrc_T_fdd_82,
+ &ett_rrc_T_fdd_85,
&ett_rrc_T_e_HICH_Info_02,
&ett_rrc_T_e_RGCH_Info_03,
- &ett_rrc_T_tdd_40,
+ &ett_rrc_T_tdd_43,
&ett_rrc_T_tdd384_tdd768_01,
- &ett_rrc_T_tdd128_24,
+ &ett_rrc_T_tdd128_26,
&ett_rrc_DL_InformationPerRL_List,
&ett_rrc_DL_InformationPerRL_List_r4,
&ett_rrc_DL_InformationPerRL_List_r5,
@@ -159024,6 +169233,9 @@ void proto_register_rrc(void) {
&ett_rrc_DL_SecondaryCellInfoFDD_r9,
&ett_rrc_T_configurationInfo,
&ett_rrc_T_newConfiguration_02,
+ &ett_rrc_DL_SecondaryCellInfoFDD_r10,
+ &ett_rrc_T_configurationInfo_01,
+ &ett_rrc_T_newConfiguration_03,
&ett_rrc_DL_TPC_PowerOffsetPerRL,
&ett_rrc_DL_TPC_PowerOffsetPerRL_List,
&ett_rrc_DL_TS_ChannelisationCodesShort,
@@ -159037,6 +169249,7 @@ void proto_register_rrc(void) {
&ett_rrc_DL_ChannelCodes_MBSFN_IMB384,
&ett_rrc_DLUL_HSPA_Information_r8,
&ett_rrc_DLUL_HSPA_Information_r9,
+ &ett_rrc_DLUL_HSPA_Information_r10,
&ett_rrc_DownlinkAdditionalTimeslots,
&ett_rrc_T_parameters,
&ett_rrc_T_sameAsLast,
@@ -159071,8 +169284,11 @@ void proto_register_rrc(void) {
&ett_rrc_SEQUENCE_SIZE_1_maxTS_1_OF_DownlinkAdditionalTimeslots_r7,
&ett_rrc_DPCH_CompressedModeInfo,
&ett_rrc_DPCH_CompressedModeInfo_r8,
+ &ett_rrc_DPCH_CompressedModeInfo_r10,
&ett_rrc_DPCH_CompressedModeStatusInfo,
&ett_rrc_SEQUENCE_SIZE_1_maxTGPS_OF_TGP_SequenceShort,
+ &ett_rrc_DPCH_CompressedModeStatusInfo_r10,
+ &ett_rrc_SEQUENCE_SIZE_1_maxTGPS_OF_TGP_SequenceShort_r10,
&ett_rrc_DRX_Info,
&ett_rrc_DSCH_Mapping,
&ett_rrc_DSCH_MappingList,
@@ -159096,18 +169312,18 @@ void proto_register_rrc(void) {
&ett_rrc_E_AGCH_Information,
&ett_rrc_E_AGCH_Information_r7,
&ett_rrc_T_modeSpecific_02,
- &ett_rrc_T_fdd_83,
- &ett_rrc_T_tdd_41,
- &ett_rrc_T_tdd384_16,
- &ett_rrc_T_tdd768_08,
- &ett_rrc_T_tdd128_25,
- &ett_rrc_E_AGCH_Information_r8,
- &ett_rrc_T_modeSpecific_03,
- &ett_rrc_T_fdd_84,
- &ett_rrc_T_tdd_42,
+ &ett_rrc_T_fdd_86,
+ &ett_rrc_T_tdd_44,
&ett_rrc_T_tdd384_17,
&ett_rrc_T_tdd768_09,
- &ett_rrc_T_tdd128_26,
+ &ett_rrc_T_tdd128_27,
+ &ett_rrc_E_AGCH_Information_r8,
+ &ett_rrc_T_modeSpecific_03,
+ &ett_rrc_T_fdd_87,
+ &ett_rrc_T_tdd_45,
+ &ett_rrc_T_tdd384_18,
+ &ett_rrc_T_tdd768_10,
+ &ett_rrc_T_tdd128_28,
&ett_rrc_E_AGCH_Information_TDD128,
&ett_rrc_E_AGCH_Set_Config,
&ett_rrc_E_AGCH_Set_Config_VHCR,
@@ -159152,7 +169368,7 @@ void proto_register_rrc(void) {
&ett_rrc_E_HICH_Information,
&ett_rrc_E_HICH_Information_CommonEdch,
&ett_rrc_E_HICH_Information_TDD384_768,
- &ett_rrc_T_modeSpecificInfo_49,
+ &ett_rrc_T_modeSpecificInfo_52,
&ett_rrc_E_HICH_Information_LCR,
&ett_rrc_T_midambleAllocationMode_01,
&ett_rrc_E_HICH_Information_TDD128,
@@ -159163,42 +169379,44 @@ void proto_register_rrc(void) {
&ett_rrc_T_explicit_01,
&ett_rrc_T_midambleAllocationMode_02,
&ett_rrc_E_PUCH_Info,
- &ett_rrc_T_modeSpecificInfo_50,
+ &ett_rrc_T_modeSpecificInfo_53,
&ett_rrc_T_tdd348_tdd768,
&ett_rrc_SEQUENCE_SIZE_1_maxTS_2_OF_E_PUCH_TS_Slots,
- &ett_rrc_T_tdd128_27,
+ &ett_rrc_T_tdd128_29,
&ett_rrc_SEQUENCE_SIZE_1_maxTS_LCR_1_OF_E_PUCH_TS_Slots_LCR,
&ett_rrc_E_PUCH_Info_TDD128,
+ &ett_rrc_E_PUCH_Info_MulticarrierEDCH_TDD128,
&ett_rrc_E_PUCH_TS_Slots,
&ett_rrc_E_PUCH_TS_Slots_LCR,
&ett_rrc_T_midambleAllocationMode_03,
&ett_rrc_E_RGCH_Information,
&ett_rrc_E_RGCH_Information_CommonEdch,
&ett_rrc_E_RUCCH_Info,
- &ett_rrc_T_modeSpecificInfo_51,
+ &ett_rrc_T_modeSpecificInfo_54,
&ett_rrc_T_tdd384_tdd768_02,
- &ett_rrc_T_modeSpecificInfo_52,
- &ett_rrc_T_tdd384_18,
+ &ett_rrc_T_modeSpecificInfo_55,
+ &ett_rrc_T_tdd384_19,
&ett_rrc_SEQUENCE_SIZE_1_8_OF_SF16Codes,
&ett_rrc_SEQUENCE_SIZE_1_8_OF_SF8Codes,
- &ett_rrc_T_tdd768_10,
+ &ett_rrc_T_tdd768_11,
&ett_rrc_SEQUENCE_SIZE_1_16_OF_SF32Codes,
&ett_rrc_SEQUENCE_SIZE_1_16_OF_SF16Codes2,
- &ett_rrc_T_tdd128_28,
+ &ett_rrc_T_tdd128_30,
&ett_rrc_E_RUCCH_Info_TDD128,
&ett_rrc_E_TFC_Boost_Info_r7,
&ett_rrc_E_TFCS_Info,
&ett_rrc_SEQUENCE_SIZE_1_8_OF_Reference_Beta_QPSK,
&ett_rrc_SEQUENCE_SIZE_1_8_OF_Reference_Beta_16QAM,
&ett_rrc_EXT_UL_TimingAdvance,
- &ett_rrc_T_modeSpecificInfo_53,
- &ett_rrc_T_tdd384_19,
- &ett_rrc_T_tdd768_11,
+ &ett_rrc_T_modeSpecificInfo_56,
+ &ett_rrc_T_tdd384_20,
+ &ett_rrc_T_tdd768_12,
&ett_rrc_FACH_PCH_Information,
&ett_rrc_FACH_PCH_InformationList,
&ett_rrc_FPACH_Info_r4,
+ &ett_rrc_FreqIndexListForEnhancedMeas,
&ett_rrc_FrequencyInfo,
- &ett_rrc_T_modeSpecificInfo_54,
+ &ett_rrc_T_modeSpecificInfo_57,
&ett_rrc_FrequencyInfoFDD,
&ett_rrc_FrequencyInfoTDD,
&ett_rrc_HS_ChannelisationCodeSetInfo_LCR,
@@ -159224,39 +169442,39 @@ void proto_register_rrc(void) {
&ett_rrc_HS_PDSCH_Midamble_Configuration_TDD128,
&ett_rrc_T_midambleAllocationMode_04,
&ett_rrc_HS_SCCH_Info,
- &ett_rrc_T_modeSpecificInfo_55,
- &ett_rrc_T_fdd_85,
- &ett_rrc_T_tdd_43,
- &ett_rrc_T_tdd384_20,
+ &ett_rrc_T_modeSpecificInfo_58,
+ &ett_rrc_T_fdd_88,
+ &ett_rrc_T_tdd_46,
+ &ett_rrc_T_tdd384_21,
&ett_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD384,
&ett_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD128,
&ett_rrc_HS_SCCH_Info_r6,
- &ett_rrc_T_modeSpecificInfo_56,
- &ett_rrc_T_fdd_86,
- &ett_rrc_T_tdd_44,
- &ett_rrc_T_tdd384_21,
+ &ett_rrc_T_modeSpecificInfo_59,
+ &ett_rrc_T_fdd_89,
+ &ett_rrc_T_tdd_47,
+ &ett_rrc_T_tdd384_22,
&ett_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD384_r6,
- &ett_rrc_T_tdd128_29,
+ &ett_rrc_T_tdd128_31,
&ett_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD128_r6,
&ett_rrc_HS_SCCH_Info_r7,
- &ett_rrc_T_modeSpecificInfo_57,
- &ett_rrc_T_fdd_87,
- &ett_rrc_T_tdd_45,
- &ett_rrc_T_tdd384_22,
- &ett_rrc_T_tdd768_12,
- &ett_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD768,
- &ett_rrc_T_tdd128_30,
- &ett_rrc_HS_SCCH_Info_r8_ext,
- &ett_rrc_T_modeSpecificInfo_58,
- &ett_rrc_T_tdd_46,
- &ett_rrc_T_tdd128_31,
- &ett_rrc_HS_SCCH_Info_r9,
- &ett_rrc_T_modeSpecificInfo_59,
- &ett_rrc_T_fdd_88,
- &ett_rrc_T_tdd_47,
+ &ett_rrc_T_modeSpecificInfo_60,
+ &ett_rrc_T_fdd_90,
+ &ett_rrc_T_tdd_48,
&ett_rrc_T_tdd384_23,
&ett_rrc_T_tdd768_13,
+ &ett_rrc_SEQUENCE_SIZE_1_maxHSSCCHs_OF_HS_SCCH_TDD768,
&ett_rrc_T_tdd128_32,
+ &ett_rrc_HS_SCCH_Info_r8_ext,
+ &ett_rrc_T_modeSpecificInfo_61,
+ &ett_rrc_T_tdd_49,
+ &ett_rrc_T_tdd128_33,
+ &ett_rrc_HS_SCCH_Info_r9,
+ &ett_rrc_T_modeSpecificInfo_62,
+ &ett_rrc_T_fdd_91,
+ &ett_rrc_T_tdd_50,
+ &ett_rrc_T_tdd384_24,
+ &ett_rrc_T_tdd768_14,
+ &ett_rrc_T_tdd128_34,
&ett_rrc_HS_SCCH_DRX_Info_TDD128,
&ett_rrc_HS_SCCH_Less_NewOperation,
&ett_rrc_HS_SCCH_LessInfo_r7,
@@ -159308,11 +169526,11 @@ void proto_register_rrc(void) {
&ett_rrc_IndividualTS_Interference,
&ett_rrc_IndividualTS_InterferenceList,
&ett_rrc_Measurement_Feedback_Info,
- &ett_rrc_T_modeSpecificInfo_60,
- &ett_rrc_T_fdd_89,
+ &ett_rrc_T_modeSpecificInfo_63,
+ &ett_rrc_T_fdd_92,
&ett_rrc_Measurement_Feedback_Info_r7,
- &ett_rrc_T_modeSpecificInfo_61,
- &ett_rrc_T_fdd_90,
+ &ett_rrc_T_modeSpecificInfo_64,
+ &ett_rrc_T_fdd_93,
&ett_rrc_MidambleShiftAndBurstType,
&ett_rrc_T_burstType,
&ett_rrc_T_type1_01,
@@ -159376,15 +169594,15 @@ void proto_register_rrc(void) {
&ett_rrc_MIMO_Parameters_r7,
&ett_rrc_MIMO_Parameters_v7g0ext,
&ett_rrc_MIMO_Parameters_r8,
- &ett_rrc_T_modeSpecificInfo_62,
- &ett_rrc_T_fdd_91,
- &ett_rrc_T_tdd_48,
- &ett_rrc_T_tdd128_33,
+ &ett_rrc_T_modeSpecificInfo_65,
+ &ett_rrc_T_fdd_94,
+ &ett_rrc_T_tdd_51,
+ &ett_rrc_T_tdd128_35,
&ett_rrc_MIMO_Parameters_r9,
- &ett_rrc_T_modeSpecificInfo_63,
- &ett_rrc_T_fdd_92,
- &ett_rrc_T_tdd_49,
- &ett_rrc_T_tdd128_34,
+ &ett_rrc_T_modeSpecificInfo_66,
+ &ett_rrc_T_fdd_95,
+ &ett_rrc_T_tdd_52,
+ &ett_rrc_T_tdd128_36,
&ett_rrc_MIMO_PilotConfiguration,
&ett_rrc_T_secondCPICH_Pattern,
&ett_rrc_T_diversityPattern,
@@ -159393,17 +169611,19 @@ void proto_register_rrc(void) {
&ett_rrc_T_secondCPICH_Pattern_01,
&ett_rrc_T_diversityPattern_01,
&ett_rrc_Multi_frequencyInfo_LCR_r7,
+ &ett_rrc_MU_MIMO_Info_TDD128,
+ &ett_rrc_T_newConfiguration_04,
&ett_rrc_NewTiming,
&ett_rrc_Non_ScheduledTransGrantInfoTDD,
&ett_rrc_T_tdd384_768,
- &ett_rrc_T_tdd128_35,
+ &ett_rrc_T_tdd128_37,
&ett_rrc_T_e_HICH_Info_04,
&ett_rrc_T_midambleAllocationMode_31,
&ett_rrc_Non_ScheduledTransGrantInfoTDD_ext,
- &ett_rrc_T_tdd128_36,
+ &ett_rrc_T_tdd128_38,
&ett_rrc_Non_ScheduledTransGrantInfoTDD_r9,
&ett_rrc_T_tdd384_768_01,
- &ett_rrc_T_tdd128_37,
+ &ett_rrc_T_tdd128_39,
&ett_rrc_T_e_HICH_Info_05,
&ett_rrc_T_midambleAllocationMode_32,
&ett_rrc_OpenLoopPowerControl_TDD,
@@ -159433,14 +169653,14 @@ void proto_register_rrc(void) {
&ett_rrc_T_signallingMethod,
&ett_rrc_PDSCH_Info,
&ett_rrc_PDSCH_Info_r4,
- &ett_rrc_T_tddOption_10,
- &ett_rrc_T_tdd384_24,
- &ett_rrc_T_tdd128_38,
- &ett_rrc_PDSCH_Info_r7,
&ett_rrc_T_tddOption_11,
&ett_rrc_T_tdd384_25,
- &ett_rrc_T_tdd768_14,
- &ett_rrc_T_tdd128_39,
+ &ett_rrc_T_tdd128_40,
+ &ett_rrc_PDSCH_Info_r7,
+ &ett_rrc_T_tddOption_12,
+ &ett_rrc_T_tdd384_26,
+ &ett_rrc_T_tdd768_15,
+ &ett_rrc_T_tdd128_41,
&ett_rrc_PDSCH_Info_LCR_r4,
&ett_rrc_PDSCH_PowerControlInfo,
&ett_rrc_PDSCH_SHO_DCH_Info,
@@ -159464,8 +169684,8 @@ void proto_register_rrc(void) {
&ett_rrc_PICH_ForHSDPASupportedPaging_TDD128,
&ett_rrc_T_implicit_02,
&ett_rrc_PICH_Info,
- &ett_rrc_T_fdd_93,
- &ett_rrc_T_tdd_50,
+ &ett_rrc_T_fdd_96,
+ &ett_rrc_T_tdd_53,
&ett_rrc_PICH_Info_HCR_VHCR_r7,
&ett_rrc_T_channelisationCode,
&ett_rrc_PICH_Info_LCR_r4,
@@ -159485,16 +169705,16 @@ void proto_register_rrc(void) {
&ett_rrc_PRACH_PowerOffset,
&ett_rrc_PRACH_PreambleForEnhancedUplink,
&ett_rrc_PRACH_RACH_Info,
- &ett_rrc_T_modeSpecificInfo_64,
- &ett_rrc_T_fdd_94,
- &ett_rrc_T_tdd_51,
+ &ett_rrc_T_modeSpecificInfo_67,
+ &ett_rrc_T_fdd_97,
+ &ett_rrc_T_tdd_54,
&ett_rrc_PRACH_RACH_Info_VHCR_r7,
&ett_rrc_PRACH_RACH_Info_LCR_v770ext,
&ett_rrc_PRACH_RACH_Info_LCR_r4,
&ett_rrc_SEQUENCE_SIZE_1_maxPRACH_FPACH_OF_PRACH_Definition_LCR_r4,
&ett_rrc_PRACH_SystemInformation,
- &ett_rrc_T_modeSpecificInfo_65,
- &ett_rrc_T_fdd_95,
+ &ett_rrc_T_modeSpecificInfo_68,
+ &ett_rrc_T_fdd_98,
&ett_rrc_PRACH_SystemInformation_VHCR_r7,
&ett_rrc_PRACH_SystemInformation_LCR_r4,
&ett_rrc_PRACH_SystemInformation_LCR_v770ext,
@@ -159505,20 +169725,20 @@ void proto_register_rrc(void) {
&ett_rrc_PreDefPhyChConfiguration,
&ett_rrc_PreDefPhyChConfiguration_v770ext,
&ett_rrc_PrimaryCCPCH_Info,
- &ett_rrc_T_fdd_96,
- &ett_rrc_T_tdd_52,
+ &ett_rrc_T_fdd_99,
+ &ett_rrc_T_tdd_55,
&ett_rrc_T_syncCase,
&ett_rrc_T_syncCase1,
&ett_rrc_T_syncCase2,
&ett_rrc_PrimaryCCPCH_Info_r4,
- &ett_rrc_T_fdd_97,
- &ett_rrc_T_tdd_53,
- &ett_rrc_T_tddOption_12,
+ &ett_rrc_T_fdd_100,
+ &ett_rrc_T_tdd_56,
+ &ett_rrc_T_tddOption_13,
&ett_rrc_T_tdd384_tdd768_03,
&ett_rrc_T_syncCase_01,
&ett_rrc_T_syncCase1_01,
&ett_rrc_T_syncCase2_01,
- &ett_rrc_T_tdd128_40,
+ &ett_rrc_T_tdd128_42,
&ett_rrc_PrimaryCCPCH_Info_LCR_r4,
&ett_rrc_PrimaryCCPCH_Info_LCR_r4_ext,
&ett_rrc_PrimaryCCPCH_InfoPost,
@@ -159547,17 +169767,17 @@ void proto_register_rrc(void) {
&ett_rrc_T_new_Configuration_05,
&ett_rrc_PUSCH_Info,
&ett_rrc_PUSCH_Info_r4,
- &ett_rrc_T_tddOption_13,
- &ett_rrc_T_tdd384_26,
- &ett_rrc_T_tdd128_41,
+ &ett_rrc_T_tddOption_14,
+ &ett_rrc_T_tdd384_27,
+ &ett_rrc_T_tdd128_43,
&ett_rrc_PUSCH_Info_VHCR,
&ett_rrc_PUSCH_Info_LCR_r4,
&ett_rrc_PUSCH_PowerControlInfo_r4,
- &ett_rrc_T_tddOption_14,
- &ett_rrc_T_tdd128_42,
- &ett_rrc_PUSCH_PowerControlInfo_r7,
&ett_rrc_T_tddOption_15,
- &ett_rrc_T_tdd128_43,
+ &ett_rrc_T_tdd128_44,
+ &ett_rrc_PUSCH_PowerControlInfo_r7,
+ &ett_rrc_T_tddOption_16,
+ &ett_rrc_T_tdd128_45,
&ett_rrc_PUSCH_SysInfo,
&ett_rrc_PUSCH_SysInfo_VHCR,
&ett_rrc_PUSCH_SysInfo_HCR_r5,
@@ -159600,6 +169820,8 @@ void proto_register_rrc(void) {
&ett_rrc_T_dl_dpchInfo_05,
&ett_rrc_RL_AdditionInformation_r9,
&ett_rrc_T_dl_dpchInfo_06,
+ &ett_rrc_RL_AdditionInformation_r10,
+ &ett_rrc_T_dl_dpchInfo_07,
&ett_rrc_RL_AdditionInformation_v6b0ext,
&ett_rrc_RL_AdditionInformation_v890ext,
&ett_rrc_RL_AdditionInformation_v950ext,
@@ -159611,6 +169833,7 @@ void proto_register_rrc(void) {
&ett_rrc_RL_AdditionInformationList_v890ext,
&ett_rrc_RL_AdditionInformationList_r9,
&ett_rrc_RL_AdditionInformationList_v950ext,
+ &ett_rrc_RL_AdditionInformationList_r10,
&ett_rrc_RL_AdditionInformationList_SecULFreq,
&ett_rrc_RL_AdditionInformation_SecULFreq,
&ett_rrc_RL_IdentifierList,
@@ -159619,12 +169842,12 @@ void proto_register_rrc(void) {
&ett_rrc_SCCPCH_ChannelisationCodeList,
&ett_rrc_SCCPCH_ChannelisationCodeList_VHCR,
&ett_rrc_SCCPCH_InfoForFACH,
- &ett_rrc_T_modeSpecificInfo_66,
- &ett_rrc_T_fdd_98,
- &ett_rrc_T_tdd_54,
+ &ett_rrc_T_modeSpecificInfo_69,
+ &ett_rrc_T_fdd_101,
+ &ett_rrc_T_tdd_57,
&ett_rrc_SCCPCH_InfoForFACH_r4,
- &ett_rrc_T_modeSpecificInfo_67,
- &ett_rrc_T_fdd_99,
+ &ett_rrc_T_modeSpecificInfo_70,
+ &ett_rrc_T_fdd_102,
&ett_rrc_SCCPCH_SystemInformation,
&ett_rrc_SCCPCH_SystemInformation_LCR_r4_ext,
&ett_rrc_SCCPCH_SystemInformation_HCR_VHCR_r7,
@@ -159638,41 +169861,43 @@ void proto_register_rrc(void) {
&ett_rrc_T_fachCarryingMCCH_01,
&ett_rrc_T_fachCarryingMSCH_01,
&ett_rrc_SecondaryCCPCH_Info,
- &ett_rrc_T_modeSpecificInfo_68,
- &ett_rrc_T_fdd_100,
- &ett_rrc_T_tdd_55,
+ &ett_rrc_T_modeSpecificInfo_71,
+ &ett_rrc_T_fdd_103,
+ &ett_rrc_T_tdd_58,
&ett_rrc_SecondaryCCPCH_Info_r4,
- &ett_rrc_T_modeSpecificInfo_69,
- &ett_rrc_T_fdd_101,
- &ett_rrc_T_tdd_56,
- &ett_rrc_T_tddOption_16,
- &ett_rrc_T_tdd384_27,
- &ett_rrc_T_tdd128_44,
- &ett_rrc_SecondaryCCPCH_Info_HCR_VHCR_r7,
- &ett_rrc_T_modeSpecificInfo_70,
+ &ett_rrc_T_modeSpecificInfo_72,
+ &ett_rrc_T_fdd_104,
+ &ett_rrc_T_tdd_59,
+ &ett_rrc_T_tddOption_17,
&ett_rrc_T_tdd384_28,
- &ett_rrc_T_tdd768_15,
+ &ett_rrc_T_tdd128_46,
+ &ett_rrc_SecondaryCCPCH_Info_HCR_VHCR_r7,
+ &ett_rrc_T_modeSpecificInfo_73,
+ &ett_rrc_T_tdd384_29,
+ &ett_rrc_T_tdd768_16,
&ett_rrc_SecondaryCCPCH_Info_LCR_r4_ext,
&ett_rrc_SecondaryCCPCHFrameType2Info,
&ett_rrc_T_modulation_03,
&ett_rrc_T_mod16QAM,
&ett_rrc_SecondaryCCPCHInfo_MBMS_r6,
- &ett_rrc_T_modeSpecificInfo_71,
- &ett_rrc_T_fdd_102,
- &ett_rrc_T_tdd384_29,
- &ett_rrc_T_tdd128_45,
+ &ett_rrc_T_modeSpecificInfo_74,
+ &ett_rrc_T_fdd_105,
+ &ett_rrc_T_tdd384_30,
+ &ett_rrc_T_tdd128_47,
&ett_rrc_SecondaryCCPCHInfo_MBMS_r7,
- &ett_rrc_T_modeSpecificInfo_72,
- &ett_rrc_T_fdd_103,
+ &ett_rrc_T_modeSpecificInfo_75,
+ &ett_rrc_T_fdd_106,
&ett_rrc_T_modulation_04,
- &ett_rrc_T_tdd384_30,
- &ett_rrc_T_tdd768_16,
- &ett_rrc_T_tdd128_46,
+ &ett_rrc_T_tdd384_31,
+ &ett_rrc_T_tdd768_17,
+ &ett_rrc_T_tdd128_48,
&ett_rrc_SecondaryCCPCHInfoDiff_MBMS,
&ett_rrc_SecondaryCPICH_Info,
&ett_rrc_SecondaryCellMIMOparametersFDD,
- &ett_rrc_T_newConfiguration_03,
+ &ett_rrc_T_newConfiguration_05,
&ett_rrc_SecondaryCellMIMOparametersFDD_v950ext,
+ &ett_rrc_SecondaryCellMIMOparametersFDD_r10,
+ &ett_rrc_T_newConfiguration_06,
&ett_rrc_ServingCellChangeParameters,
&ett_rrc_SF256_AndCodeNumber,
&ett_rrc_SF512_AndCodeNumber,
@@ -159681,6 +169906,7 @@ void proto_register_rrc(void) {
&ett_rrc_SPS_Information_TDD128_r8,
&ett_rrc_SSDT_Information,
&ett_rrc_SSDT_Information_r4,
+ &ett_rrc_StandaloneMidambleInfo_TDD128,
&ett_rrc_SynchronisationParameters_r4,
&ett_rrc_T_sync_UL_CodesBitmap,
&ett_rrc_Sync_UL_Codes_Bitmap,
@@ -159689,6 +169915,7 @@ void proto_register_rrc(void) {
&ett_rrc_SYNC_UL_InfoForE_RUCCH,
&ett_rrc_TargetCellPreconfigInfo,
&ett_rrc_TargetCellPreconfigInfo_r9,
+ &ett_rrc_TargetCellPreconfigInfo_r10,
&ett_rrc_TDD_MBSFNInformation,
&ett_rrc_TDD_MBSFNTSlotInfo,
&ett_rrc_TDD_PRACH_CCodeList,
@@ -159703,13 +169930,21 @@ void proto_register_rrc(void) {
&ett_rrc_TGP_Sequence_r8,
&ett_rrc_T_tgps_Status_01,
&ett_rrc_T_activate_01,
+ &ett_rrc_TGP_Sequence_r10,
+ &ett_rrc_T_tgps_Status_02,
+ &ett_rrc_T_activate_02,
&ett_rrc_TGP_SequenceList,
&ett_rrc_TGP_SequenceList_r8,
+ &ett_rrc_TGP_SequenceList_r10,
&ett_rrc_TGP_SequenceShort,
- &ett_rrc_T_tgps_Status_02,
- &ett_rrc_T_activate_02,
+ &ett_rrc_T_tgps_Status_03,
+ &ett_rrc_T_activate_03,
+ &ett_rrc_TGP_SequenceShort_r10,
+ &ett_rrc_T_tgps_Status_04,
+ &ett_rrc_T_activate_04,
&ett_rrc_TGPS_ConfigurationParams,
&ett_rrc_TGPS_ConfigurationParams_r8,
+ &ett_rrc_TGPS_ConfigurationParams_r10,
&ett_rrc_TimeInfo,
&ett_rrc_TimeslotList,
&ett_rrc_TimeslotList_r4,
@@ -159722,14 +169957,14 @@ void proto_register_rrc(void) {
&ett_rrc_UL_16QAM_Settings,
&ett_rrc_UL_CCTrCH,
&ett_rrc_UL_CCTrCH_r4,
- &ett_rrc_T_tddOption_17,
- &ett_rrc_T_tdd384_31,
- &ett_rrc_T_tdd128_47,
- &ett_rrc_UL_CCTrCH_r7,
&ett_rrc_T_tddOption_18,
&ett_rrc_T_tdd384_32,
- &ett_rrc_T_tdd768_17,
- &ett_rrc_T_tdd128_48,
+ &ett_rrc_T_tdd128_49,
+ &ett_rrc_UL_CCTrCH_r7,
+ &ett_rrc_T_tddOption_19,
+ &ett_rrc_T_tdd384_33,
+ &ett_rrc_T_tdd768_18,
+ &ett_rrc_T_tdd128_50,
&ett_rrc_UL_CCTrCHList,
&ett_rrc_UL_CCTrCHList_r4,
&ett_rrc_UL_CCTrCHList_r7,
@@ -159745,115 +169980,121 @@ void proto_register_rrc(void) {
&ett_rrc_T_ul_and_dl,
&ett_rrc_UL_DPCH_CodeInfoForCommonEDCH,
&ett_rrc_UL_DPCH_Info,
- &ett_rrc_T_modeSpecificInfo_73,
- &ett_rrc_T_fdd_104,
- &ett_rrc_T_tdd_57,
+ &ett_rrc_T_modeSpecificInfo_76,
+ &ett_rrc_T_fdd_107,
+ &ett_rrc_T_tdd_60,
&ett_rrc_UL_DPCH_Info_r4,
- &ett_rrc_T_modeSpecificInfo_74,
- &ett_rrc_T_fdd_105,
- &ett_rrc_T_tdd_58,
+ &ett_rrc_T_modeSpecificInfo_77,
+ &ett_rrc_T_fdd_108,
+ &ett_rrc_T_tdd_61,
&ett_rrc_UL_DPCH_Info_r5,
- &ett_rrc_T_modeSpecificInfo_75,
- &ett_rrc_T_fdd_106,
- &ett_rrc_T_tdd_59,
+ &ett_rrc_T_modeSpecificInfo_78,
+ &ett_rrc_T_fdd_109,
+ &ett_rrc_T_tdd_62,
&ett_rrc_UL_DPCH_Info_r6,
- &ett_rrc_T_modeSpecificInfo_76,
- &ett_rrc_T_fdd_107,
+ &ett_rrc_T_modeSpecificInfo_79,
+ &ett_rrc_T_fdd_110,
&ett_rrc_T_dpdchPresence,
&ett_rrc_T_present_02,
&ett_rrc_T_notPresent,
- &ett_rrc_T_tdd_60,
+ &ett_rrc_T_tdd_63,
&ett_rrc_UL_DPCH_Info_r7,
- &ett_rrc_T_modeSpecificInfo_77,
- &ett_rrc_T_fdd_108,
+ &ett_rrc_T_modeSpecificInfo_80,
+ &ett_rrc_T_fdd_111,
&ett_rrc_T_dpdchPresence_01,
&ett_rrc_T_present_03,
&ett_rrc_T_notPresent_01,
- &ett_rrc_T_tdd_61,
+ &ett_rrc_T_tdd_64,
&ett_rrc_UL_DPCH_InfoPostFDD,
&ett_rrc_UL_DPCH_InfoPostTDD,
&ett_rrc_UL_DPCH_InfoPostTDD_LCR_r4,
&ett_rrc_UL_DPCH_InfoPredef,
- &ett_rrc_T_modeSpecificInfo_78,
- &ett_rrc_T_fdd_109,
- &ett_rrc_T_tdd_62,
+ &ett_rrc_T_modeSpecificInfo_81,
+ &ett_rrc_T_fdd_112,
+ &ett_rrc_T_tdd_65,
&ett_rrc_UL_DPCH_InfoPredef_v770ext,
- &ett_rrc_T_modeSpecificInfo_79,
- &ett_rrc_T_fdd_110,
+ &ett_rrc_T_modeSpecificInfo_82,
+ &ett_rrc_T_fdd_113,
&ett_rrc_UL_DPCH_PowerControlInfo,
- &ett_rrc_T_fdd_111,
- &ett_rrc_T_tdd_63,
+ &ett_rrc_T_fdd_114,
+ &ett_rrc_T_tdd_66,
&ett_rrc_T_ul_OL_PC_Signalling,
&ett_rrc_T_individuallySignalled,
&ett_rrc_UL_DPCH_PowerControlInfo_r4,
- &ett_rrc_T_fdd_112,
- &ett_rrc_T_tdd_64,
+ &ett_rrc_T_fdd_115,
+ &ett_rrc_T_tdd_67,
&ett_rrc_T_ul_OL_PC_Signalling_01,
&ett_rrc_T_individuallySignalled_01,
- &ett_rrc_T_tddOption_19,
- &ett_rrc_T_tdd384_33,
- &ett_rrc_T_tdd128_49,
+ &ett_rrc_T_tddOption_20,
+ &ett_rrc_T_tdd384_34,
+ &ett_rrc_T_tdd128_51,
&ett_rrc_UL_DPCH_PowerControlInfo_r5,
- &ett_rrc_T_fdd_113,
- &ett_rrc_T_tdd_65,
+ &ett_rrc_T_fdd_116,
+ &ett_rrc_T_tdd_68,
&ett_rrc_T_ul_OL_PC_Signalling_02,
&ett_rrc_T_individuallySignalled_02,
- &ett_rrc_T_tddOption_20,
- &ett_rrc_T_tdd384_34,
- &ett_rrc_T_tdd128_50,
+ &ett_rrc_T_tddOption_21,
+ &ett_rrc_T_tdd384_35,
+ &ett_rrc_T_tdd128_52,
&ett_rrc_UL_DPCH_PowerControlInfo_r6,
- &ett_rrc_T_fdd_114,
- &ett_rrc_T_tdd_66,
+ &ett_rrc_T_fdd_117,
+ &ett_rrc_T_tdd_69,
&ett_rrc_T_ul_OL_PC_Signalling_03,
&ett_rrc_T_individuallySignalled_03,
- &ett_rrc_T_tddOption_21,
- &ett_rrc_T_tdd384_35,
- &ett_rrc_T_tdd128_51,
+ &ett_rrc_T_tddOption_22,
+ &ett_rrc_T_tdd384_36,
+ &ett_rrc_T_tdd128_53,
&ett_rrc_UL_DPCH_PowerControlInfo_r7,
- &ett_rrc_T_fdd_115,
- &ett_rrc_T_tdd_67,
+ &ett_rrc_T_fdd_118,
+ &ett_rrc_T_tdd_70,
&ett_rrc_T_ul_OL_PC_Signalling_04,
&ett_rrc_T_individuallySignalled_04,
- &ett_rrc_T_tddOption_22,
- &ett_rrc_T_tdd384_36,
- &ett_rrc_T_tdd768_18,
- &ett_rrc_T_tdd128_52,
+ &ett_rrc_T_tddOption_23,
+ &ett_rrc_T_tdd384_37,
+ &ett_rrc_T_tdd768_19,
+ &ett_rrc_T_tdd128_54,
&ett_rrc_UL_DPCHpowerControlInfoForCommonEDCH,
&ett_rrc_UL_DPCH_PowerControlInfoPostFDD,
&ett_rrc_UL_DPCH_PowerControlInfoPostTDD,
&ett_rrc_UL_DPCH_PowerControlInfoPostTDD_LCR_r4,
&ett_rrc_UL_DPCH_PowerControlInfoPredef,
- &ett_rrc_T_fdd_116,
- &ett_rrc_T_tdd_68,
+ &ett_rrc_T_fdd_119,
+ &ett_rrc_T_tdd_71,
&ett_rrc_UL_EDCH_Information_ext,
- &ett_rrc_T_tdd_69,
+ &ett_rrc_T_tdd_72,
&ett_rrc_UL_EDCH_Information_r6,
&ett_rrc_UL_EDCH_Information_r7,
- &ett_rrc_T_modeSpecificInfo_80,
- &ett_rrc_T_fdd_117,
- &ett_rrc_T_tdd_70,
+ &ett_rrc_T_modeSpecificInfo_83,
+ &ett_rrc_T_fdd_120,
+ &ett_rrc_T_tdd_73,
&ett_rrc_UL_EDCH_Information_r8,
- &ett_rrc_T_modeSpecificInfo_81,
- &ett_rrc_T_fdd_118,
- &ett_rrc_T_tdd_71,
+ &ett_rrc_T_modeSpecificInfo_84,
+ &ett_rrc_T_fdd_121,
+ &ett_rrc_T_tdd_74,
&ett_rrc_UL_EDCH_Information_r9,
- &ett_rrc_T_modeSpecificInfo_82,
- &ett_rrc_T_fdd_119,
- &ett_rrc_T_tdd_72,
+ &ett_rrc_T_modeSpecificInfo_85,
+ &ett_rrc_T_fdd_122,
+ &ett_rrc_T_tdd_75,
+ &ett_rrc_UL_MulticarrierEDCH_InfolistItem_TDD128,
+ &ett_rrc_UL_MulticarrierEDCH_Infolist_TDD128,
+ &ett_rrc_UL_MulticarrierEDCH_Deletelist_TDD128,
+ &ett_rrc_UL_MulticarrierEDCHInfo_TDD128,
+ &ett_rrc_T_configuration_info,
+ &ett_rrc_UL_MulticarrierEDCH_NewConfigurationInfo_TDD128,
&ett_rrc_UL_SynchronisationParameters_r4,
&ett_rrc_UL_TimingAdvanceControl,
&ett_rrc_T_enabled,
&ett_rrc_UL_TimingAdvanceControl_r4,
&ett_rrc_T_enabled_01,
- &ett_rrc_T_tddOption_23,
- &ett_rrc_T_tdd384_37,
- &ett_rrc_T_tdd128_53,
- &ett_rrc_UL_TimingAdvanceControl_r7,
- &ett_rrc_T_enabled_02,
&ett_rrc_T_tddOption_24,
&ett_rrc_T_tdd384_38,
- &ett_rrc_T_tdd768_19,
- &ett_rrc_T_tdd128_54,
+ &ett_rrc_T_tdd128_55,
+ &ett_rrc_UL_TimingAdvanceControl_r7,
+ &ett_rrc_T_enabled_02,
+ &ett_rrc_T_tddOption_25,
+ &ett_rrc_T_tdd384_39,
+ &ett_rrc_T_tdd768_20,
+ &ett_rrc_T_tdd128_56,
&ett_rrc_UL_TimingAdvanceControl_LCR_r4,
&ett_rrc_T_enabled_03,
&ett_rrc_UL_TS_ChannelisationCodeList,
@@ -159897,7 +170138,11 @@ void proto_register_rrc(void) {
&ett_rrc_T_consecutive_05,
&ett_rrc_SEQUENCE_SIZE_1_maxTS_LCR_1_OF_UplinkAdditionalTimeslots_LCR_r7,
&ett_rrc_AcquisitionSatInfo,
+ &ett_rrc_AcquisitionSatInfo_va40ext,
+ &ett_rrc_AcquisitionSatInfo_r10,
&ett_rrc_AcquisitionSatInfoList,
+ &ett_rrc_AcquisitionSatInfoList_va40ext,
+ &ett_rrc_AcquisitionSatInfoList_r10,
&ett_rrc_AdditionalMeasurementID_List,
&ett_rrc_AdditionalMeasurementID_List_r9,
&ett_rrc_AlmanacSatInfo,
@@ -159913,6 +170158,8 @@ void proto_register_rrc(void) {
&ett_rrc_AuxInfoGANSS_ID3,
&ett_rrc_AuxInfoGANSS_ID3_element,
&ett_rrc_AzimuthAndElevation,
+ &ett_rrc_AzimuthAndElevation_va40ext,
+ &ett_rrc_AzimuthAndElevation_r10,
&ett_rrc_BadSatList,
&ett_rrc_BLER_MeasurementResults,
&ett_rrc_BLER_MeasurementResultsList,
@@ -159925,86 +170172,86 @@ void proto_register_rrc(void) {
&ett_rrc_CellDCHMeasOccasionInfo_TDD128_r9,
&ett_rrc_SEQUENCE_SIZE_1_maxMeasOccasionPattern_OF_CellDCHMeasOccasionPattern_LCR,
&ett_rrc_CellInfo,
- &ett_rrc_T_modeSpecificInfo_83,
- &ett_rrc_T_fdd_120,
- &ett_rrc_T_tdd_73,
- &ett_rrc_CellInfo_r4,
- &ett_rrc_T_modeSpecificInfo_84,
- &ett_rrc_T_fdd_121,
- &ett_rrc_T_tdd_74,
- &ett_rrc_CellInfo_LCR_r8_ext,
- &ett_rrc_CellInfo_r9,
- &ett_rrc_T_modeSpecificInfo_85,
- &ett_rrc_T_fdd_122,
- &ett_rrc_T_tdd_75,
- &ett_rrc_CellInfoSI_RSCP,
&ett_rrc_T_modeSpecificInfo_86,
&ett_rrc_T_fdd_123,
&ett_rrc_T_tdd_76,
- &ett_rrc_CellInfoSI_RSCP_LCR_r4,
- &ett_rrc_CellInfoSI_ECN0,
+ &ett_rrc_CellInfo_r4,
&ett_rrc_T_modeSpecificInfo_87,
&ett_rrc_T_fdd_124,
&ett_rrc_T_tdd_77,
- &ett_rrc_CellInfoSI_ECN0_LCR_r4,
- &ett_rrc_CellInfoSI_HCS_RSCP,
+ &ett_rrc_CellInfo_LCR_r8_ext,
+ &ett_rrc_CellInfo_r9,
&ett_rrc_T_modeSpecificInfo_88,
&ett_rrc_T_fdd_125,
&ett_rrc_T_tdd_78,
- &ett_rrc_CellInfoSI_HCS_RSCP_LCR_r4,
- &ett_rrc_CellInfoSI_HCS_ECN0,
+ &ett_rrc_CellInfoSI_RSCP,
&ett_rrc_T_modeSpecificInfo_89,
&ett_rrc_T_fdd_126,
&ett_rrc_T_tdd_79,
- &ett_rrc_CellInfoSI_HCS_ECN0_LCR_r4,
- &ett_rrc_CellMeasuredResults,
+ &ett_rrc_CellInfoSI_RSCP_LCR_r4,
+ &ett_rrc_CellInfoSI_ECN0,
&ett_rrc_T_modeSpecificInfo_90,
&ett_rrc_T_fdd_127,
&ett_rrc_T_tdd_80,
- &ett_rrc_CellMeasuredResults_r9,
+ &ett_rrc_CellInfoSI_ECN0_LCR_r4,
+ &ett_rrc_CellInfoSI_HCS_RSCP,
&ett_rrc_T_modeSpecificInfo_91,
&ett_rrc_T_fdd_128,
&ett_rrc_T_tdd_81,
- &ett_rrc_CellMeasuredResults_v920ext,
- &ett_rrc_CellMeasurementEventResults,
- &ett_rrc_SEQUENCE_SIZE_1_maxCellMeas_OF_PrimaryCPICH_Info,
- &ett_rrc_SEQUENCE_SIZE_1_maxCellMeas_OF_PrimaryCCPCH_Info,
- &ett_rrc_CellMeasurementEventResultsOnSecUlFreq,
- &ett_rrc_SEQUENCE_SIZE_1_maxCellMeasOnSecULFreq_OF_PrimaryCPICH_Info,
- &ett_rrc_CellMeasurementEventResults_LCR_r4,
- &ett_rrc_CellReportingQuantities,
+ &ett_rrc_CellInfoSI_HCS_RSCP_LCR_r4,
+ &ett_rrc_CellInfoSI_HCS_ECN0,
&ett_rrc_T_modeSpecificInfo_92,
&ett_rrc_T_fdd_129,
&ett_rrc_T_tdd_82,
- &ett_rrc_CellSelectReselectInfoMC_RSCP,
+ &ett_rrc_CellInfoSI_HCS_ECN0_LCR_r4,
+ &ett_rrc_CellMeasuredResults,
&ett_rrc_T_modeSpecificInfo_93,
&ett_rrc_T_fdd_130,
&ett_rrc_T_tdd_83,
- &ett_rrc_T_gsm_02,
- &ett_rrc_CellSelectReselectInfoSIB_11_12,
+ &ett_rrc_CellMeasuredResults_r9,
&ett_rrc_T_modeSpecificInfo_94,
&ett_rrc_T_fdd_131,
&ett_rrc_T_tdd_84,
- &ett_rrc_T_gsm_03,
- &ett_rrc_CellSelectReselectInfoSIB_11_12_RSCP,
+ &ett_rrc_CellMeasuredResults_v920ext,
+ &ett_rrc_CellMeasurementEventResults,
+ &ett_rrc_SEQUENCE_SIZE_1_maxCellMeas_OF_PrimaryCPICH_Info,
+ &ett_rrc_SEQUENCE_SIZE_1_maxCellMeas_OF_PrimaryCCPCH_Info,
+ &ett_rrc_CellMeasurementEventResultsOnSecUlFreq,
+ &ett_rrc_SEQUENCE_SIZE_1_maxCellMeasOnSecULFreq_OF_PrimaryCPICH_Info,
+ &ett_rrc_CellMeasurementEventResults_LCR_r4,
+ &ett_rrc_CellReportingQuantities,
&ett_rrc_T_modeSpecificInfo_95,
&ett_rrc_T_fdd_132,
&ett_rrc_T_tdd_85,
- &ett_rrc_T_gsm_04,
- &ett_rrc_CellSelectReselectInfoSIB_11_12_ECN0,
+ &ett_rrc_CellSelectReselectInfoMC_RSCP,
&ett_rrc_T_modeSpecificInfo_96,
&ett_rrc_T_fdd_133,
&ett_rrc_T_tdd_86,
- &ett_rrc_T_gsm_05,
- &ett_rrc_CellSelectReselectInfoSIB_11_12_HCS_RSCP,
+ &ett_rrc_T_gsm_02,
+ &ett_rrc_CellSelectReselectInfoSIB_11_12,
&ett_rrc_T_modeSpecificInfo_97,
&ett_rrc_T_fdd_134,
&ett_rrc_T_tdd_87,
- &ett_rrc_T_gsm_06,
- &ett_rrc_CellSelectReselectInfoSIB_11_12_HCS_ECN0,
+ &ett_rrc_T_gsm_03,
+ &ett_rrc_CellSelectReselectInfoSIB_11_12_RSCP,
&ett_rrc_T_modeSpecificInfo_98,
&ett_rrc_T_fdd_135,
&ett_rrc_T_tdd_88,
+ &ett_rrc_T_gsm_04,
+ &ett_rrc_CellSelectReselectInfoSIB_11_12_ECN0,
+ &ett_rrc_T_modeSpecificInfo_99,
+ &ett_rrc_T_fdd_136,
+ &ett_rrc_T_tdd_89,
+ &ett_rrc_T_gsm_05,
+ &ett_rrc_CellSelectReselectInfoSIB_11_12_HCS_RSCP,
+ &ett_rrc_T_modeSpecificInfo_100,
+ &ett_rrc_T_fdd_137,
+ &ett_rrc_T_tdd_90,
+ &ett_rrc_T_gsm_06,
+ &ett_rrc_CellSelectReselectInfoSIB_11_12_HCS_ECN0,
+ &ett_rrc_T_modeSpecificInfo_101,
+ &ett_rrc_T_fdd_138,
+ &ett_rrc_T_tdd_91,
&ett_rrc_T_gsm_07,
&ett_rrc_CellSelectReselectInfo_v590ext,
&ett_rrc_CellSelectReselectInfoPCHFACH_v5b0ext,
@@ -160014,16 +170261,16 @@ void proto_register_rrc(void) {
&ett_rrc_CellsForIntraFreqMeasList,
&ett_rrc_CellsForIntraFreqMeasListOnSecULFreq,
&ett_rrc_CellSynchronisationInfo,
- &ett_rrc_T_modeSpecificInfo_99,
- &ett_rrc_T_fdd_136,
- &ett_rrc_T_tdd_89,
+ &ett_rrc_T_modeSpecificInfo_102,
+ &ett_rrc_T_fdd_139,
+ &ett_rrc_T_tdd_92,
&ett_rrc_CellToReport,
&ett_rrc_CellToReportList,
&ett_rrc_CNAVclockModel,
&ett_rrc_CountC_SFN_Frame_difference,
&ett_rrc_CSGCellInfo,
- &ett_rrc_T_modeSpecificInfo_100,
- &ett_rrc_T_fdd_137,
+ &ett_rrc_T_modeSpecificInfo_103,
+ &ett_rrc_T_fdd_140,
&ett_rrc_CSGCellInfoList,
&ett_rrc_CSGInterFreqCellInfo,
&ett_rrc_CSGInterFreqCellInfoList,
@@ -160106,16 +170353,22 @@ void proto_register_rrc(void) {
&ett_rrc_Event1j_r6,
&ett_rrc_Event2a,
&ett_rrc_Event2a_r6,
+ &ett_rrc_Event2a_r10,
&ett_rrc_Event2b,
&ett_rrc_Event2b_r6,
+ &ett_rrc_Event2b_r10,
&ett_rrc_Event2c,
&ett_rrc_Event2c_r6,
+ &ett_rrc_Event2c_r10,
&ett_rrc_Event2d,
&ett_rrc_Event2d_r6,
+ &ett_rrc_Event2d_r10,
&ett_rrc_Event2e,
&ett_rrc_Event2e_r6,
+ &ett_rrc_Event2e_r10,
&ett_rrc_Event2f,
&ett_rrc_Event2f_r6,
+ &ett_rrc_Event2f_r10,
&ett_rrc_Event3a,
&ett_rrc_Event3b,
&ett_rrc_Event3c,
@@ -160123,6 +170376,7 @@ void proto_register_rrc(void) {
&ett_rrc_EventResults,
&ett_rrc_EventResults_v770ext,
&ett_rrc_EventResults_v860ext,
+ &ett_rrc_EventResults_va40ext,
&ett_rrc_EventResultsOnSecUlFreq,
&ett_rrc_ExtraDoppler,
&ett_rrc_ExtraDopplerInfo,
@@ -160143,11 +170397,15 @@ void proto_register_rrc(void) {
&ett_rrc_GANSSGenericData_r8,
&ett_rrc_GANSSGenericData_r9,
&ett_rrc_GANSSGenericData_v920ext,
+ &ett_rrc_GANSSGenericData_va40ext,
+ &ett_rrc_GANSSGenericData_r10,
&ett_rrc_GANSSGenericDataList,
&ett_rrc_GANSSGenericDataList_v860ext,
&ett_rrc_GANSSGenericDataList_r8,
&ett_rrc_GANSSGenericDataList_r9,
&ett_rrc_GANSSGenericDataList_v920ext,
+ &ett_rrc_GANSSGenericDataList_va40ext,
+ &ett_rrc_GANSSGenericDataList_r10,
&ett_rrc_GANSSGenericMeasurementInfo,
&ett_rrc_GANSSGenericMeasurementInfo_item,
&ett_rrc_GANSSGenericMeasurementInfo_v860ext,
@@ -160168,8 +170426,14 @@ void proto_register_rrc(void) {
&ett_rrc_GanssRequestedGenericAssistanceDataList,
&ett_rrc_GanssRequestedGenericAssistanceDataList_v860ext,
&ett_rrc_GANSSSatelliteInformation,
+ &ett_rrc_GANSSSatelliteInformation_va40ext,
+ &ett_rrc_GANSSSatelliteInformation_r10,
&ett_rrc_GANSSSatelliteInformationList,
+ &ett_rrc_GANSSSatelliteInformationList_va40ext,
+ &ett_rrc_GANSSSatelliteInformationList_r10,
&ett_rrc_GANSSTimeModelsList,
+ &ett_rrc_GANSSTimeModelsList_va40ext,
+ &ett_rrc_GANSSTimeModelsList_r10,
&ett_rrc_GANSS_SAT_Info_Almanac_GLOkp,
&ett_rrc_GANSS_SAT_Info_Almanac_Kp,
&ett_rrc_GANSS_SAT_Info_Almanac_MIDIkp,
@@ -160217,9 +170481,10 @@ void proto_register_rrc(void) {
&ett_rrc_InterFreqCellInfoList_r4,
&ett_rrc_InterFreqCellInfoList_r8,
&ett_rrc_InterFreqCellInfoList_r9,
+ &ett_rrc_InterFreqCellInfoList_r10,
&ett_rrc_InterFreqSIAcquisition,
- &ett_rrc_T_modeSpecificInfo_101,
- &ett_rrc_T_fdd_138,
+ &ett_rrc_T_modeSpecificInfo_104,
+ &ett_rrc_T_fdd_141,
&ett_rrc_InterFreqCellInfoSI_List_RSCP,
&ett_rrc_InterFreqCellInfoSI_List_ECN0,
&ett_rrc_InterFreqCellInfoSI_List_HCS_RSCP,
@@ -160234,22 +170499,25 @@ void proto_register_rrc(void) {
&ett_rrc_InterFreqCellMeasuredResultsList_v920ext,
&ett_rrc_InterFreqEvent,
&ett_rrc_InterFreqEvent_r6,
+ &ett_rrc_InterFreqEvent_r10,
&ett_rrc_InterFreqEventList,
&ett_rrc_InterFreqEventList_r6,
+ &ett_rrc_InterFreqEventList_r10,
&ett_rrc_InterFrequencyMeasuredResultsList_v590ext,
&ett_rrc_Inter_FreqEventCriteria_v590ext,
&ett_rrc_Inter_FreqEventCriteriaList_v590ext,
&ett_rrc_Intra_FreqEventCriteriaList_v590ext,
&ett_rrc_IntraFrequencyMeasuredResultsList_v590ext,
&ett_rrc_InterFreqEventResults,
+ &ett_rrc_InterFreqEventResults_va40ext,
&ett_rrc_InterFreqEventResults_LCR_r4_ext,
&ett_rrc_InterFreqMeasQuantity,
&ett_rrc_T_reportingCriteria,
&ett_rrc_T_intraFreqReportingCriteria,
&ett_rrc_T_interFreqReportingCriteria,
- &ett_rrc_T_modeSpecificInfo_102,
- &ett_rrc_T_fdd_139,
- &ett_rrc_T_tdd_90,
+ &ett_rrc_T_modeSpecificInfo_105,
+ &ett_rrc_T_fdd_142,
+ &ett_rrc_T_tdd_93,
&ett_rrc_InterFreqMeasuredResults,
&ett_rrc_InterFreqMeasuredResults_v920ext,
&ett_rrc_InterFreqMeasuredResultsList,
@@ -160264,20 +170532,22 @@ void proto_register_rrc(void) {
&ett_rrc_InterFreqMeasurementSysInfo_HCS_ECN0_LCR_r4,
&ett_rrc_InterFreqRACHRepCellsList,
&ett_rrc_Dummy_InterFreqRACHReportingInfo,
- &ett_rrc_T_modeSpecificInfo_103,
- &ett_rrc_T_fdd_140,
- &ett_rrc_T_tdd_91,
+ &ett_rrc_T_modeSpecificInfo_106,
+ &ett_rrc_T_fdd_143,
+ &ett_rrc_T_tdd_94,
&ett_rrc_InterFreqRACHReportingInfo,
- &ett_rrc_T_modeSpecificInfo_104,
- &ett_rrc_T_fdd_141,
- &ett_rrc_T_tdd_92,
+ &ett_rrc_T_modeSpecificInfo_107,
+ &ett_rrc_T_fdd_144,
+ &ett_rrc_T_tdd_95,
&ett_rrc_InterFreqReportCriteria,
&ett_rrc_InterFreqReportCriteria_r4,
&ett_rrc_InterFreqReportCriteria_r6,
&ett_rrc_InterFreqReportCriteria_r7,
&ett_rrc_InterFreqReportCriteria_r9,
+ &ett_rrc_InterFreqReportCriteria_r10,
&ett_rrc_InterFreqReportingCriteria,
&ett_rrc_InterFreqReportingCriteria_r6,
+ &ett_rrc_InterFreqReportingCriteria_r10,
&ett_rrc_InterFreqReportingQuantity,
&ett_rrc_InterFreqRepQuantityRACH_TDDList,
&ett_rrc_InterFrequencyMeasurement,
@@ -160286,6 +170556,7 @@ void proto_register_rrc(void) {
&ett_rrc_InterFrequencyMeasurement_r7,
&ett_rrc_InterFrequencyMeasurement_r8,
&ett_rrc_InterFrequencyMeasurement_r9,
+ &ett_rrc_InterFrequencyMeasurement_r10,
&ett_rrc_InterRAT_TargetCellDescription,
&ett_rrc_T_technologySpecificInfo,
&ett_rrc_T_gsm_08,
@@ -160333,10 +170604,11 @@ void proto_register_rrc(void) {
&ett_rrc_IntraFreqCellInfoListInfoOnSecULFreq,
&ett_rrc_IntraFreqCellInfoListOnSecULFreq,
&ett_rrc_IntraFreqCellInfoList_r9,
+ &ett_rrc_IntraFreqCellInfoList_r10,
&ett_rrc_IntraFreqSIAcquisitionInfo,
&ett_rrc_IntraFreqSIAcquisition,
- &ett_rrc_T_modeSpecificInfo_105,
- &ett_rrc_T_fdd_142,
+ &ett_rrc_T_modeSpecificInfo_108,
+ &ett_rrc_T_fdd_145,
&ett_rrc_IntraFreqCellInfoSI_List_RSCP,
&ett_rrc_IntraFreqCellInfoSI_List_ECN0,
&ett_rrc_IntraFreqCellInfoSI_List_HCS_RSCP,
@@ -160368,9 +170640,9 @@ void proto_register_rrc(void) {
&ett_rrc_IntraFreqEventResults,
&ett_rrc_IntraFreqEventResultsOnSecUlFreq,
&ett_rrc_IntraFreqMeasQuantity,
- &ett_rrc_T_modeSpecificInfo_106,
- &ett_rrc_T_fdd_143,
- &ett_rrc_T_tdd_93,
+ &ett_rrc_T_modeSpecificInfo_109,
+ &ett_rrc_T_fdd_146,
+ &ett_rrc_T_tdd_96,
&ett_rrc_IntraFreqMeasQuantity_TDDList,
&ett_rrc_IntraFreqMeasQuantity_TDD_sib3List,
&ett_rrc_IntraFreqMeasuredResultsList,
@@ -160397,16 +170669,60 @@ void proto_register_rrc(void) {
&ett_rrc_IntraFreqReportingCriteria_1b_r5,
&ett_rrc_IntraFreqReportingQuantity,
&ett_rrc_IntraFreqReportingQuantityForRACH,
- &ett_rrc_T_modeSpecificInfo_107,
- &ett_rrc_T_fdd_144,
- &ett_rrc_T_tdd_94,
+ &ett_rrc_T_modeSpecificInfo_110,
+ &ett_rrc_T_fdd_147,
+ &ett_rrc_T_tdd_97,
&ett_rrc_IntraFreqRepQuantityRACH_TDDList,
&ett_rrc_IntraFrequencyMeasurement,
&ett_rrc_IntraFrequencyMeasurement_r4,
&ett_rrc_IntraFrequencyMeasurement_r6,
&ett_rrc_IntraFrequencyMeasurement_r7,
&ett_rrc_IntraFrequencyMeasurement_r9,
+ &ett_rrc_IntraFrequencyMeasurement_r10,
&ett_rrc_IntraFrequencyMeasuredResultsListOnSecULFreq,
+ &ett_rrc_IntraUTRAANR,
+ &ett_rrc_LoggedANRConfigurationInfo,
+ &ett_rrc_LoggedANRReportInfoList,
+ &ett_rrc_LoggedANRReportInfo,
+ &ett_rrc_LoggedCellInfo,
+ &ett_rrc_LoggedEUTRACellInfo,
+ &ett_rrc_LoggedGSMCellInfo,
+ &ett_rrc_LoggedMeasurementsConfigurationInfo,
+ &ett_rrc_T_areaConfiguration,
+ &ett_rrc_SEQUENCE_SIZE_1_32_OF_CellIdentity,
+ &ett_rrc_SEQUENCE_SIZE_1_8_OF_LAI,
+ &ett_rrc_SEQUENCE_SIZE_1_8_OF_RAI,
+ &ett_rrc_LoggedMeasInterfreqList_FDD,
+ &ett_rrc_LoggedMeasInterfreqInfo_FDD,
+ &ett_rrc_SEQUENCE_SIZE_1_maxnumLoggedMeas_OF_LoggedMeasNeighbourInfo_FDD,
+ &ett_rrc_LoggedMeasInterfreqInfo_TDD128,
+ &ett_rrc_LoggedMeasInterRATNeighbourMeas,
+ &ett_rrc_LoggedMeasIntrafreqNeighbourList_FDD,
+ &ett_rrc_LoggedMeasNeighbourInfo_FDD,
+ &ett_rrc_LoggedMeasIntrafreqNeighbourMeasList_TDD128,
+ &ett_rrc_LoggedMeasNeighbourMeas_TDD128,
+ &ett_rrc_LoggedMeasGSMNeighbourCellsList,
+ &ett_rrc_LoggedMeasGSMNeighbourCellsinfo,
+ &ett_rrc_LoggedMeasEUTRAFreqList,
+ &ett_rrc_LoggedMeasEUTRAFreqInfo,
+ &ett_rrc_SEQUENCE_SIZE_1_maxnumLoggedMeas_OF_LoggedMeasEUTRAFreqNeighbourInfo,
+ &ett_rrc_LoggedMeasEUTRAFreqNeighbourInfo,
+ &ett_rrc_LoggedMeasLocationInfo,
+ &ett_rrc_LoggedMeasInfo_FDD,
+ &ett_rrc_LoggedMeasInfo_TDD128,
+ &ett_rrc_LoggedMeasInterfreqList_TDD128,
+ &ett_rrc_LoggedMeasInterfreqNeighbourList_TDD128,
+ &ett_rrc_LoggedMeasReport,
+ &ett_rrc_LoggedMeasInfoList_FDD,
+ &ett_rrc_LoggedMeasInfoList_TDD128,
+ &ett_rrc_LoggedMeasInfoList,
+ &ett_rrc_T_modeSpecificInfo_111,
+ &ett_rrc_T_fdd_148,
+ &ett_rrc_T_tdd_98,
+ &ett_rrc_LoggedMeasServingCellMeas_FDD,
+ &ett_rrc_LoggedMeasServingCellMeas_TDD128,
+ &ett_rrc_LoggedUTRACellInfo,
+ &ett_rrc_LoggingAbsoluteThreshold,
&ett_rrc_KeplerianParameters,
&ett_rrc_MeasuredResults,
&ett_rrc_MeasuredResultsOnSecUlFreq,
@@ -160426,10 +170742,10 @@ void proto_register_rrc(void) {
&ett_rrc_MeasuredResultsList_v860ext_item,
&ett_rrc_MeasuredResultsOnRACH,
&ett_rrc_T_currentCell,
- &ett_rrc_T_modeSpecificInfo_108,
- &ett_rrc_T_fdd_145,
+ &ett_rrc_T_modeSpecificInfo_112,
+ &ett_rrc_T_fdd_149,
&ett_rrc_T_measurementQuantity,
- &ett_rrc_T_tdd_95,
+ &ett_rrc_T_tdd_99,
&ett_rrc_MeasuredResultsOnRACH_v7g0ext,
&ett_rrc_MonitoredCellRACH_List_v7g0ext,
&ett_rrc_MeasuredResultsOnRACHinterFreq,
@@ -160445,6 +170761,8 @@ void proto_register_rrc(void) {
&ett_rrc_T_modify_05,
&ett_rrc_MeasurementCommand_r9,
&ett_rrc_T_modify_06,
+ &ett_rrc_MeasurementCommand_r10,
+ &ett_rrc_T_modify_07,
&ett_rrc_MeasurementControlSysInfo,
&ett_rrc_T_use_of_HCS,
&ett_rrc_T_hcs_not_used,
@@ -160495,13 +170813,14 @@ void proto_register_rrc(void) {
&ett_rrc_MeasurementType_r7,
&ett_rrc_MeasurementType_r8,
&ett_rrc_MeasurementType_r9,
+ &ett_rrc_MeasurementType_r10,
&ett_rrc_MeasurementValidity,
&ett_rrc_MonitoredCellRACH_List,
&ett_rrc_MonitoredCellRACH_Result,
- &ett_rrc_T_modeSpecificInfo_109,
- &ett_rrc_T_fdd_146,
+ &ett_rrc_T_modeSpecificInfo_113,
+ &ett_rrc_T_fdd_150,
&ett_rrc_T_measurementQuantity_01,
- &ett_rrc_T_tdd_96,
+ &ett_rrc_T_tdd_100,
&ett_rrc_N_CR_T_CRMaxHyst,
&ett_rrc_NAVclockModel,
&ett_rrc_NavigationModelSatInfo,
@@ -160512,12 +170831,12 @@ void proto_register_rrc(void) {
&ett_rrc_NavModel_SBASecef,
&ett_rrc_EphemerisParameter,
&ett_rrc_Neighbour,
- &ett_rrc_T_modeSpecificInfo_110,
- &ett_rrc_T_fdd_147,
- &ett_rrc_T_tdd_97,
+ &ett_rrc_T_modeSpecificInfo_114,
+ &ett_rrc_T_fdd_151,
+ &ett_rrc_T_tdd_101,
&ett_rrc_Neighbour_v390ext,
- &ett_rrc_T_modeSpecificInfo_111,
- &ett_rrc_T_fdd_148,
+ &ett_rrc_T_modeSpecificInfo_115,
+ &ett_rrc_T_fdd_152,
&ett_rrc_NeighbourList,
&ett_rrc_Neighbour_TDD_r7,
&ett_rrc_NeighbourList_TDD_r7,
@@ -160528,17 +170847,21 @@ void proto_register_rrc(void) {
&ett_rrc_NewInterFreqCell_v7b0ext,
&ett_rrc_NewInterFreqCell_LCR_v8a0ext,
&ett_rrc_NewInterFreqCell_r8,
- &ett_rrc_T_modeSpecificInfo_112,
- &ett_rrc_T_tdd128_55,
+ &ett_rrc_T_modeSpecificInfo_116,
+ &ett_rrc_T_tdd128_57,
&ett_rrc_NewInterFreqCell_r9,
- &ett_rrc_T_modeSpecificInfo_113,
- &ett_rrc_T_tdd128_56,
+ &ett_rrc_T_modeSpecificInfo_117,
+ &ett_rrc_T_tdd128_58,
+ &ett_rrc_NewInterFreqCell_r10,
+ &ett_rrc_T_modeSpecificInfo_118,
+ &ett_rrc_T_tdd128_59,
&ett_rrc_NewInterFreqCellList,
&ett_rrc_NewInterFreqCellList_r4,
&ett_rrc_NewInterFreqCellList_v7b0ext,
&ett_rrc_NewInterFreqCellList_LCR_v8a0ext,
&ett_rrc_NewInterFreqCellList_r8,
&ett_rrc_NewInterFreqCellList_r9,
+ &ett_rrc_NewInterFreqCellList_r10,
&ett_rrc_NewInterFreqCellSI_RSCP,
&ett_rrc_NewInterFreqCellSI_ECN0,
&ett_rrc_NewInterFreqCellSI_HCS_RSCP,
@@ -160568,10 +170891,14 @@ void proto_register_rrc(void) {
&ett_rrc_NewIntraFreqCell,
&ett_rrc_NewIntraFreqCell_r4,
&ett_rrc_NewIntraFreqCell_r9,
+ &ett_rrc_NewIntraFreqCell_r10,
+ &ett_rrc_T_modeSpecificInfo_119,
+ &ett_rrc_T_tdd128_60,
&ett_rrc_NewIntraFreqCellOnSecULFreq,
&ett_rrc_NewIntraFreqCellList,
&ett_rrc_NewIntraFreqCellList_r4,
&ett_rrc_NewIntraFreqCellList_r9,
+ &ett_rrc_NewIntraFreqCellList_r10,
&ett_rrc_NewIntraFreqCell_LCR_v8a0ext,
&ett_rrc_NewIntraFreqCellList_LCR_v8a0ext,
&ett_rrc_NewIntraFreqCellListOnSecULFreq,
@@ -160593,14 +170920,19 @@ void proto_register_rrc(void) {
&ett_rrc_NewIntraFreqCellSI_List_HCS_ECN0_LCR_r4,
&ett_rrc_NonUsedFreqParameter,
&ett_rrc_NonUsedFreqParameter_r6,
+ &ett_rrc_NonUsedFreqParameter_r10,
+ &ett_rrc_NonUsedFreq2aParameter_r10,
&ett_rrc_NonUsedFreqParameterList,
&ett_rrc_NonUsedFreqParameterList_r6,
+ &ett_rrc_NonUsedFreqParameterList_r10,
+ &ett_rrc_NonUsedFreq2aParameterList_r10,
&ett_rrc_NonUsedFreqWList_r6,
&ett_rrc_PenaltyTime_RSCP,
&ett_rrc_PenaltyTime_ECN0,
&ett_rrc_PeriodicalReportingCriteria,
&ett_rrc_PeriodicReportingInfo_1b,
&ett_rrc_PeriodicalWithReportingCellStatus,
+ &ett_rrc_PeriodicalWithReportingCellStatus_r10,
&ett_rrc_PLMNIdentitiesOfNeighbourCells,
&ett_rrc_PLMNIdentitiesOfNeighbourCells_v860ext,
&ett_rrc_PLMNsOfInterFreqCellsList,
@@ -160617,15 +170949,15 @@ void proto_register_rrc(void) {
&ett_rrc_PositionEstimate,
&ett_rrc_QualityEventResults,
&ett_rrc_QualityMeasuredResults,
- &ett_rrc_T_modeSpecificInfo_114,
- &ett_rrc_T_tdd_98,
+ &ett_rrc_T_modeSpecificInfo_120,
+ &ett_rrc_T_tdd_102,
&ett_rrc_QualityMeasurement,
&ett_rrc_QualityReportCriteria,
&ett_rrc_QualityReportingCriteria,
&ett_rrc_QualityReportingCriteriaSingle,
&ett_rrc_QualityReportingQuantity,
- &ett_rrc_T_modeSpecificInfo_115,
- &ett_rrc_T_tdd_99,
+ &ett_rrc_T_modeSpecificInfo_121,
+ &ett_rrc_T_tdd_103,
&ett_rrc_ReferenceCellPosition,
&ett_rrc_ReferenceLocation,
&ett_rrc_ReferenceLocationGANSS,
@@ -160639,13 +170971,16 @@ void proto_register_rrc(void) {
&ett_rrc_RemovedIntraFreqCellListOnSecULFreq,
&ett_rrc_SEQUENCE_SIZE_1_maxCellMeasOnSecULFreq_OF_IntraFreqCellIDOnSecULFreq,
&ett_rrc_ReportingCellStatus,
+ &ett_rrc_ReportingCellStatus_r10,
&ett_rrc_ReportingCellStatusOpt,
+ &ett_rrc_ReportingCellStatusOpt_r10,
&ett_rrc_ReportingInfoForCellDCH,
&ett_rrc_ReportingInfoForCellDCH_LCR_r4,
&ett_rrc_ReqDataBitAssistance,
&ett_rrc_T_ganssSatelliteInfo,
&ett_rrc_RL_AdditionInfoList,
&ett_rrc_RL_InformationLists,
+ &ett_rrc_RSCPforANR,
&ett_rrc_SatData,
&ett_rrc_SatDataList,
&ett_rrc_SatellitesListRelatedData,
@@ -160663,6 +170998,7 @@ void proto_register_rrc(void) {
&ett_rrc_T_ADVinfo,
&ett_rrc_T_ADVinfo_ext,
&ett_rrc_T_CRMax,
+ &ett_rrc_TCE_Id,
&ett_rrc_TemporaryOffsetList,
&ett_rrc_ThreholdNonUsedFrequency_deltaList,
&ett_rrc_TimeslotInfo,
@@ -160675,6 +171011,8 @@ void proto_register_rrc(void) {
&ett_rrc_TimeslotISCP_List,
&ett_rrc_TimeslotListWithISCP,
&ett_rrc_TimeslotWithISCP,
+ &ett_rrc_TraceReference,
+ &ett_rrc_TraceRecordingSession,
&ett_rrc_TrafficVolumeEventParam,
&ett_rrc_TrafficVolumeEventResults,
&ett_rrc_TrafficVolumeMeasQuantity,
@@ -160698,30 +171036,30 @@ void proto_register_rrc(void) {
&ett_rrc_UE_InternalEventResults,
&ett_rrc_UE_InternalMeasQuantity,
&ett_rrc_UE_InternalMeasuredResults,
- &ett_rrc_T_modeSpecificInfo_116,
- &ett_rrc_T_fdd_149,
- &ett_rrc_T_tdd_100,
+ &ett_rrc_T_modeSpecificInfo_122,
+ &ett_rrc_T_fdd_153,
+ &ett_rrc_T_tdd_104,
&ett_rrc_UE_InternalMeasuredResults_LCR_r4,
&ett_rrc_UE_InternalMeasuredResults_v770ext,
- &ett_rrc_T_modeSpecificInfo_117,
+ &ett_rrc_T_modeSpecificInfo_123,
&ett_rrc_T_tdd384_768_02,
- &ett_rrc_T_tdd128_57,
+ &ett_rrc_T_tdd128_61,
&ett_rrc_UE_InternalMeasurement,
&ett_rrc_UE_InternalMeasurement_r4,
&ett_rrc_UE_InternalMeasurementSysInfo,
&ett_rrc_UE_InternalReportCriteria,
&ett_rrc_UE_InternalReportingCriteria,
&ett_rrc_UE_InternalReportingQuantity,
- &ett_rrc_T_modeSpecificInfo_118,
- &ett_rrc_T_fdd_150,
- &ett_rrc_T_tdd_101,
+ &ett_rrc_T_modeSpecificInfo_124,
+ &ett_rrc_T_fdd_154,
+ &ett_rrc_T_tdd_105,
&ett_rrc_UE_InternalReportingQuantity_r4,
- &ett_rrc_T_modeSpecificInfo_119,
- &ett_rrc_T_fdd_151,
- &ett_rrc_T_tdd_102,
- &ett_rrc_T_tddOption_25,
- &ett_rrc_T_tdd384_39,
- &ett_rrc_T_tdd128_58,
+ &ett_rrc_T_modeSpecificInfo_125,
+ &ett_rrc_T_fdd_155,
+ &ett_rrc_T_tdd_106,
+ &ett_rrc_T_tddOption_26,
+ &ett_rrc_T_tdd384_40,
+ &ett_rrc_T_tdd128_62,
&ett_rrc_UE_RX_TX_ReportEntry,
&ett_rrc_UE_RX_TX_ReportEntryList,
&ett_rrc_UE_RX_TX_TimeDifferenceType2Info,
@@ -160744,6 +171082,8 @@ void proto_register_rrc(void) {
&ett_rrc_UE_Positioning_GANSS_Almanac,
&ett_rrc_UE_Positioning_GANSS_Almanac_v860ext,
&ett_rrc_UE_Positioning_GANSS_Almanac_r8,
+ &ett_rrc_UE_Positioning_GANSS_Almanac_va40ext,
+ &ett_rrc_UE_Positioning_GANSS_Almanac_r10,
&ett_rrc_UE_Positioning_GANSS_AdditionalAssistanceDataRequest,
&ett_rrc_UE_Positioning_GANSS_AdditionalAssistanceDataRequest_v860ext,
&ett_rrc_UE_Positioning_GANSS_AddIonoModel,
@@ -160753,6 +171093,8 @@ void proto_register_rrc(void) {
&ett_rrc_UE_Positioning_GANSS_AssistanceData_r8,
&ett_rrc_UE_Positioning_GANSS_AssistanceData_r9,
&ett_rrc_UE_Positioning_GANSS_AssistanceData_v920ext,
+ &ett_rrc_UE_Positioning_GANSS_AssistanceData_va40ext,
+ &ett_rrc_UE_Positioning_GANSS_AssistanceData_r10,
&ett_rrc_UE_Positioning_GANSS_AuxiliaryInfo,
&ett_rrc_UE_Positioning_GANSS_ClockModel,
&ett_rrc_UE_Positioning_GANSS_AddClockModels,
@@ -160768,24 +171110,41 @@ void proto_register_rrc(void) {
&ett_rrc_UE_Positioning_GANSS_RealTimeIntegrity,
&ett_rrc_UE_Positioning_GANSS_RealTimeIntegrity_item,
&ett_rrc_UE_Positioning_GANSS_ReferenceMeasurementInfo,
+ &ett_rrc_UE_Positioning_GANSS_ReferenceMeasurementInfo_va40ext,
+ &ett_rrc_UE_Positioning_GANSS_ReferenceMeasurementInfo_r10,
&ett_rrc_UE_Positioning_GANSS_ReferenceTime,
&ett_rrc_T_utran_ganssreferenceTime,
&ett_rrc_T_mode,
- &ett_rrc_T_fdd_152,
- &ett_rrc_T_tdd_103,
+ &ett_rrc_T_fdd_156,
+ &ett_rrc_T_tdd_107,
+ &ett_rrc_UE_Positioning_GANSS_ReferenceTime_va40ext,
+ &ett_rrc_UE_Positioning_GANSS_ReferenceTime_r10,
+ &ett_rrc_T_utran_ganssreferenceTime_01,
+ &ett_rrc_T_mode_01,
+ &ett_rrc_T_fdd_157,
+ &ett_rrc_T_tdd_108,
&ett_rrc_UE_Positioning_GANSS_TimeModel,
+ &ett_rrc_UE_Positioning_GANSS_TimeModel_va40ext,
+ &ett_rrc_UE_Positioning_GANSS_TimeModel_r10,
&ett_rrc_UE_Positioning_GANSS_TimeModels,
+ &ett_rrc_UE_Positioning_GANSS_TimeModels_va40ext,
&ett_rrc_UE_Positioning_GANSS_UTCModel,
&ett_rrc_UE_Positioning_GPS_AcquisitionAssistance,
&ett_rrc_UE_Positioning_GPS_AcquisitionAssistance_v770ext,
&ett_rrc_UE_Positioning_GPS_AcquisitionAssistance_r7,
+ &ett_rrc_UE_Positioning_GPS_AcquisitionAssistance_va40ext,
+ &ett_rrc_UE_Positioning_GPS_AcquisitionAssistance_r10,
&ett_rrc_UE_Positioning_GPS_AdditionalAssistanceDataRequest,
&ett_rrc_UE_Positioning_GPS_Almanac,
+ &ett_rrc_UE_Positioning_GPS_Almanac_va40ext,
+ &ett_rrc_UE_Positioning_GPS_Almanac_r10,
&ett_rrc_UE_Positioning_GPS_AssistanceData,
&ett_rrc_UE_Positioning_GPS_AssistanceData_v770ext,
&ett_rrc_UE_Positioning_GPS_AssistanceData_r7,
&ett_rrc_UE_Positioning_GPS_AssistanceData_r9,
&ett_rrc_UE_Positioning_GPS_AssistanceData_v920ext,
+ &ett_rrc_UE_Positioning_GPS_AssistanceData_va40ext,
+ &ett_rrc_UE_Positioning_GPS_AssistanceData_r10,
&ett_rrc_UE_Positioning_GPS_DGPS_Corrections,
&ett_rrc_UE_Positioning_GPS_DGPS_Corrections_r9,
&ett_rrc_UE_Positioning_GPS_DGPS_Corrections_v920ext,
@@ -160796,18 +171155,20 @@ void proto_register_rrc(void) {
&ett_rrc_UE_Positioning_GPS_NavigationModel,
&ett_rrc_UE_Positioning_GPS_NavModelAddDataReq,
&ett_rrc_UE_Positioning_GPS_ReferenceCellInfo,
- &ett_rrc_T_modeSpecificInfo_120,
- &ett_rrc_T_fdd_153,
- &ett_rrc_T_tdd_104,
+ &ett_rrc_T_modeSpecificInfo_126,
+ &ett_rrc_T_fdd_158,
+ &ett_rrc_T_tdd_109,
&ett_rrc_UE_Positioning_GPS_ReferenceTime,
&ett_rrc_UE_Positioning_GPS_ReferenceTime_v770ext,
&ett_rrc_UE_Positioning_GPS_ReferenceTime_r7,
+ &ett_rrc_UE_Positioning_GPS_ReferenceTime_va40ext,
+ &ett_rrc_UE_Positioning_GPS_ReferenceTime_r10,
&ett_rrc_UE_Positioning_GPS_UTC_Model,
&ett_rrc_UE_Positioning_IPDL_Parameters,
&ett_rrc_UE_Positioning_IPDL_Parameters_r4,
- &ett_rrc_T_modeSpecificInfo_121,
- &ett_rrc_T_fdd_154,
- &ett_rrc_T_tdd_105,
+ &ett_rrc_T_modeSpecificInfo_127,
+ &ett_rrc_T_fdd_159,
+ &ett_rrc_T_tdd_110,
&ett_rrc_UE_Positioning_IPDL_Parameters_TDD_r4_ext,
&ett_rrc_UE_Positioning_MeasuredResults,
&ett_rrc_UE_Positioning_MeasuredResults_v770ext,
@@ -160819,6 +171180,7 @@ void proto_register_rrc(void) {
&ett_rrc_UE_Positioning_Measurement_r7,
&ett_rrc_UE_Positioning_Measurement_r8,
&ett_rrc_UE_Positioning_Measurement_r9,
+ &ett_rrc_UE_Positioning_Measurement_r10,
&ett_rrc_UE_Positioning_MeasurementEventResults,
&ett_rrc_UE_Positioning_MeasurementEventResults_v770ext,
&ett_rrc_UE_Positioning_MeasurementEventResults_v860ext,
@@ -160831,33 +171193,33 @@ void proto_register_rrc(void) {
&ett_rrc_UE_Positioning_IPDL_Parameters_TDDList_r4_ext,
&ett_rrc_UE_Positioning_OTDOA_MeasuredResultsTDD_ext,
&ett_rrc_UE_Positioning_OTDOA_Measurement,
- &ett_rrc_T_modeSpecificInfo_122,
- &ett_rrc_T_fdd_155,
- &ett_rrc_T_tdd_106,
+ &ett_rrc_T_modeSpecificInfo_128,
+ &ett_rrc_T_fdd_160,
+ &ett_rrc_T_tdd_111,
&ett_rrc_UE_Positioning_OTDOA_Measurement_v390ext,
&ett_rrc_UE_Positioning_OTDOA_NeighbourCellInfo,
- &ett_rrc_T_modeSpecificInfo_123,
- &ett_rrc_T_fdd_156,
- &ett_rrc_T_tdd_107,
+ &ett_rrc_T_modeSpecificInfo_129,
+ &ett_rrc_T_fdd_161,
+ &ett_rrc_T_tdd_112,
&ett_rrc_T_positioningMode,
&ett_rrc_T_ueBased,
&ett_rrc_T_ueAssisted,
&ett_rrc_UE_Positioning_OTDOA_NeighbourCellInfo_r4,
- &ett_rrc_T_modeSpecificInfo_124,
- &ett_rrc_T_fdd_157,
- &ett_rrc_T_tdd_108,
+ &ett_rrc_T_modeSpecificInfo_130,
+ &ett_rrc_T_fdd_162,
+ &ett_rrc_T_tdd_113,
&ett_rrc_T_positioningMode_01,
&ett_rrc_T_ueBased_01,
&ett_rrc_T_ueAssisted_01,
&ett_rrc_UE_Positioning_OTDOA_NeighbourCellInfo_UEB,
- &ett_rrc_T_modeSpecificInfo_125,
- &ett_rrc_T_fdd_158,
- &ett_rrc_T_tdd_109,
+ &ett_rrc_T_modeSpecificInfo_131,
+ &ett_rrc_T_fdd_163,
+ &ett_rrc_T_tdd_114,
&ett_rrc_UE_Positioning_OTDOA_NeighbourCellInfo_UEB_ext,
&ett_rrc_UE_Positioning_OTDOA_NeighbourCellInfo_r7,
- &ett_rrc_T_modeSpecificInfo_126,
- &ett_rrc_T_fdd_159,
- &ett_rrc_T_tdd_110,
+ &ett_rrc_T_modeSpecificInfo_132,
+ &ett_rrc_T_fdd_164,
+ &ett_rrc_T_tdd_115,
&ett_rrc_T_positioningMode_02,
&ett_rrc_T_ueBased_02,
&ett_rrc_T_ueAssisted_02,
@@ -160868,37 +171230,37 @@ void proto_register_rrc(void) {
&ett_rrc_UE_Positioning_OTDOA_NeighbourCellList_r7,
&ett_rrc_UE_Positioning_OTDOA_Quality,
&ett_rrc_UE_Positioning_OTDOA_ReferenceCellInfo,
- &ett_rrc_T_modeSpecificInfo_127,
- &ett_rrc_T_fdd_160,
- &ett_rrc_T_tdd_111,
+ &ett_rrc_T_modeSpecificInfo_133,
+ &ett_rrc_T_fdd_165,
+ &ett_rrc_T_tdd_116,
&ett_rrc_T_positioningMode_03,
&ett_rrc_T_ueBased_03,
&ett_rrc_T_ueAssisted_03,
&ett_rrc_UE_Positioning_OTDOA_ReferenceCellInfo_r4,
- &ett_rrc_T_modeSpecificInfo_128,
- &ett_rrc_T_fdd_161,
- &ett_rrc_T_tdd_112,
+ &ett_rrc_T_modeSpecificInfo_134,
+ &ett_rrc_T_fdd_166,
+ &ett_rrc_T_tdd_117,
&ett_rrc_T_positioningMode_04,
&ett_rrc_T_ueBased_04,
&ett_rrc_T_ueAssisted_04,
&ett_rrc_UE_Positioning_OTDOA_ReferenceCellInfo_UEB,
- &ett_rrc_T_modeSpecificInfo_129,
- &ett_rrc_T_fdd_162,
- &ett_rrc_T_tdd_113,
+ &ett_rrc_T_modeSpecificInfo_135,
+ &ett_rrc_T_fdd_167,
+ &ett_rrc_T_tdd_118,
&ett_rrc_UE_Positioning_OTDOA_ReferenceCellInfo_UEB_ext,
&ett_rrc_UE_Positioning_OTDOA_ReferenceCellInfo_r7,
- &ett_rrc_T_modeSpecificInfo_130,
- &ett_rrc_T_fdd_163,
- &ett_rrc_T_tdd_114,
+ &ett_rrc_T_modeSpecificInfo_136,
+ &ett_rrc_T_fdd_168,
+ &ett_rrc_T_tdd_119,
&ett_rrc_T_positioningMode_05,
&ett_rrc_T_ueBased_05,
&ett_rrc_T_ueAssisted_05,
&ett_rrc_UE_Positioning_PositionEstimateInfo,
&ett_rrc_T_referenceTime_02,
&ett_rrc_T_cell_Timing,
- &ett_rrc_T_modeSpecificInfo_131,
- &ett_rrc_T_fdd_164,
- &ett_rrc_T_tdd_115,
+ &ett_rrc_T_modeSpecificInfo_137,
+ &ett_rrc_T_fdd_169,
+ &ett_rrc_T_tdd_120,
&ett_rrc_UE_Positioning_PositionEstimateInfo_v770ext,
&ett_rrc_T_referenceTimeOptions,
&ett_rrc_T_r7_15,
@@ -160915,23 +171277,23 @@ void proto_register_rrc(void) {
&ett_rrc_UTCmodelSet3,
&ett_rrc_UTRAN_GANSSReferenceTime,
&ett_rrc_T_ue_GANSSTimingOfCellFrames,
- &ett_rrc_T_mode_01,
- &ett_rrc_T_fdd_165,
- &ett_rrc_T_tdd_116,
+ &ett_rrc_T_mode_02,
+ &ett_rrc_T_fdd_170,
+ &ett_rrc_T_tdd_121,
&ett_rrc_UTRAN_FDD_FrequencyList,
&ett_rrc_UTRAN_FDD_Frequency,
&ett_rrc_UTRAN_TDD_FrequencyList,
&ett_rrc_UTRAN_TDD_Frequency,
&ett_rrc_UTRAN_GPSReferenceTime,
&ett_rrc_T_utran_GPSTimingOfCell,
- &ett_rrc_T_modeSpecificInfo_132,
- &ett_rrc_T_fdd_166,
- &ett_rrc_T_tdd_117,
+ &ett_rrc_T_modeSpecificInfo_138,
+ &ett_rrc_T_fdd_171,
+ &ett_rrc_T_tdd_122,
&ett_rrc_UTRAN_GPSReferenceTimeResult,
&ett_rrc_T_ue_GPSTimingOfCell,
- &ett_rrc_T_modeSpecificInfo_133,
- &ett_rrc_T_fdd_167,
- &ett_rrc_T_tdd_118,
+ &ett_rrc_T_modeSpecificInfo_139,
+ &ett_rrc_T_fdd_172,
+ &ett_rrc_T_tdd_123,
&ett_rrc_UTRA_PriorityInfoList,
&ett_rrc_T_utra_ServingCell,
&ett_rrc_UTRA_PriorityInfoList_v920ext,
@@ -160947,9 +171309,9 @@ void proto_register_rrc(void) {
&ett_rrc_DataVolumePerRB,
&ett_rrc_DataVolumePerRB_List,
&ett_rrc_DeferredMeasurementControlReadingSupport,
- &ett_rrc_T_modeSpecificInfo_134,
- &ett_rrc_T_fdd_168,
- &ett_rrc_T_tdd_119,
+ &ett_rrc_T_modeSpecificInfo_140,
+ &ett_rrc_T_fdd_173,
+ &ett_rrc_T_tdd_124,
&ett_rrc_ETWS_Information,
&ett_rrc_EUTRA_BlacklistedCell,
&ett_rrc_EUTRA_BlacklistedCellPerFreqList,
@@ -160991,7 +171353,7 @@ void proto_register_rrc(void) {
&ett_rrc_T_v690NonCriticalExtensions_48,
&ett_rrc_T_v6b0NonCriticalExtensions_15,
&ett_rrc_T_v860NonCriticalExtensions_26,
- &ett_rrc_T_nonCriticalExtensions_167,
+ &ett_rrc_T_nonCriticalExtensions_181,
&ett_rrc_MasterInformationBlock_v690ext,
&ett_rrc_MasterInformationBlock_v6b0ext_IEs,
&ett_rrc_MasterInformationBlock_v860ext_IEs,
@@ -161019,11 +171381,11 @@ void proto_register_rrc(void) {
&ett_rrc_SysInfoType1,
&ett_rrc_T_v3a0NonCriticalExtensions_12,
&ett_rrc_T_v860NonCriticalExtentions_02,
- &ett_rrc_T_nonCriticalExtensions_168,
+ &ett_rrc_T_nonCriticalExtensions_182,
&ett_rrc_SysInfoType1_v3a0ext_IEs,
&ett_rrc_SysInfoType1_v860ext_IEs,
&ett_rrc_SysInfoType2,
- &ett_rrc_T_nonCriticalExtensions_169,
+ &ett_rrc_T_nonCriticalExtensions_183,
&ett_rrc_SysInfoType3,
&ett_rrc_T_v4b0NonCriticalExtensions_17,
&ett_rrc_T_v590NonCriticalExtension,
@@ -161034,7 +171396,7 @@ void proto_register_rrc(void) {
&ett_rrc_T_v860NonCriticalExtension_01,
&ett_rrc_T_v870NonCriticalExtension,
&ett_rrc_T_v900NonCriticalExtension,
- &ett_rrc_T_nonCriticalExtensions_170,
+ &ett_rrc_T_nonCriticalExtensions_184,
&ett_rrc_SysInfoType3_v4b0ext_IEs,
&ett_rrc_SysInfoType3_v590ext,
&ett_rrc_SysInfoType3_v5c0ext_IEs,
@@ -161049,15 +171411,15 @@ void proto_register_rrc(void) {
&ett_rrc_T_v590NonCriticalExtension_01,
&ett_rrc_T_v5b0NonCriticalExtension,
&ett_rrc_T_v5c0NonCriticalExtension,
- &ett_rrc_T_nonCriticalExtensions_171,
+ &ett_rrc_T_nonCriticalExtensions_185,
&ett_rrc_SysInfoType4_v4b0ext_IEs,
&ett_rrc_SysInfoType4_v590ext,
&ett_rrc_SysInfoType4_v5b0ext_IEs,
&ett_rrc_SysInfoType4_v5c0ext_IEs,
&ett_rrc_SysInfoType5,
- &ett_rrc_T_modeSpecificInfo_135,
- &ett_rrc_T_fdd_169,
- &ett_rrc_T_tdd_120,
+ &ett_rrc_T_modeSpecificInfo_141,
+ &ett_rrc_T_fdd_174,
+ &ett_rrc_T_tdd_125,
&ett_rrc_T_v4b0NonCriticalExtensions_19,
&ett_rrc_T_v590NonCriticalExtensions_28,
&ett_rrc_T_v650NonCriticalExtensions,
@@ -161068,7 +171430,8 @@ void proto_register_rrc(void) {
&ett_rrc_T_v890NonCriticalExtensions_11,
&ett_rrc_T_v8b0NonCriticalExtensions_01,
&ett_rrc_T_v8d0NonCriticalExtensions,
- &ett_rrc_T_nonCriticalExtensions_172,
+ &ett_rrc_T_va40NonCriticalExtensions_18,
+ &ett_rrc_T_nonCriticalExtensions_186,
&ett_rrc_SysInfoType5_v4b0ext_IEs,
&ett_rrc_T_tdd128SpecificInfo,
&ett_rrc_SysInfoType5_v590ext_IEs,
@@ -161078,30 +171441,32 @@ void proto_register_rrc(void) {
&ett_rrc_SysInfoType5_v690ext_IEs,
&ett_rrc_T_sccpch_SystemInformation_MBMS,
&ett_rrc_SysInfoType5_v770ext_IEs,
- &ett_rrc_T_modeSpecificInfo_136,
- &ett_rrc_T_fdd_170,
- &ett_rrc_T_tdd768_20,
- &ett_rrc_T_tdd128_59,
+ &ett_rrc_T_modeSpecificInfo_142,
+ &ett_rrc_T_fdd_175,
+ &ett_rrc_T_tdd768_21,
+ &ett_rrc_T_tdd128_63,
&ett_rrc_T_sccpch_SystemInformation_MBMS_01,
&ett_rrc_SysInfoType5_v860ext_IEs,
&ett_rrc_T_dummy_15,
- &ett_rrc_T_modeSpecificInfo_137,
- &ett_rrc_T_fdd_171,
- &ett_rrc_T_tdd128_60,
+ &ett_rrc_T_modeSpecificInfo_143,
+ &ett_rrc_T_fdd_176,
+ &ett_rrc_T_tdd128_64,
&ett_rrc_T_hs_dsch_CommonSysInfo,
&ett_rrc_SysInfoType5_v890ext_IEs,
&ett_rrc_SysInfoType5_v8b0ext_IEs,
&ett_rrc_SysInfoType5_v8d0ext_IEs,
+ &ett_rrc_SysInfoType5_va40ext_IEs,
&ett_rrc_SysInfoType6,
- &ett_rrc_T_modeSpecificInfo_138,
- &ett_rrc_T_fdd_172,
- &ett_rrc_T_tdd_121,
+ &ett_rrc_T_modeSpecificInfo_144,
+ &ett_rrc_T_fdd_177,
+ &ett_rrc_T_tdd_126,
&ett_rrc_T_v4b0NonCriticalExtensions_20,
&ett_rrc_T_v590NonCriticalExtensions_29,
&ett_rrc_T_v650nonCriticalExtensions,
&ett_rrc_T_v690nonCriticalExtensions,
&ett_rrc_T_v770NonCriticalExtensions_41,
- &ett_rrc_T_nonCriticalExtensions_173,
+ &ett_rrc_T_va40NonCriticalExtensions_19,
+ &ett_rrc_T_nonCriticalExtensions_187,
&ett_rrc_SysInfoType6_v4b0ext_IEs,
&ett_rrc_T_tdd128SpecificInfo_01,
&ett_rrc_SysInfoType6_v590ext_IEs,
@@ -161110,16 +171475,17 @@ void proto_register_rrc(void) {
&ett_rrc_SysInfoType6_v690ext_IEs,
&ett_rrc_SysInfoType6_v770ext_IEs,
&ett_rrc_T_tdd768SpecificInfo,
+ &ett_rrc_SysInfoType6_va40ext_IEs,
&ett_rrc_SysInfoType7,
- &ett_rrc_T_modeSpecificInfo_139,
- &ett_rrc_T_fdd_173,
- &ett_rrc_T_nonCriticalExtensions_174,
+ &ett_rrc_T_modeSpecificInfo_145,
+ &ett_rrc_T_fdd_178,
+ &ett_rrc_T_nonCriticalExtensions_188,
&ett_rrc_SysInfoType8,
- &ett_rrc_T_nonCriticalExtensions_175,
+ &ett_rrc_T_nonCriticalExtensions_189,
&ett_rrc_SysInfoType9,
- &ett_rrc_T_nonCriticalExtensions_176,
+ &ett_rrc_T_nonCriticalExtensions_190,
&ett_rrc_SysInfoType10,
- &ett_rrc_T_nonCriticalExtensions_177,
+ &ett_rrc_T_nonCriticalExtensions_191,
&ett_rrc_SysInfoType11,
&ett_rrc_T_v4b0NonCriticalExtensions_21,
&ett_rrc_T_v590NonCriticalExtension_02,
@@ -161128,7 +171494,7 @@ void proto_register_rrc(void) {
&ett_rrc_T_v770NonCriticalExtensions_42,
&ett_rrc_T_v7b0NonCriticalExtensions_02,
&ett_rrc_T_v860NonCriticalExtensions_28,
- &ett_rrc_T_nonCriticalExtensions_178,
+ &ett_rrc_T_nonCriticalExtensions_192,
&ett_rrc_SysInfoType11_v4b0ext_IEs,
&ett_rrc_SysInfoType11_v590ext_IEs,
&ett_rrc_SysInfoType11_v690ext_IEs,
@@ -161139,7 +171505,7 @@ void proto_register_rrc(void) {
&ett_rrc_SysInfoType11bis,
&ett_rrc_T_v7b0NonCriticalExtensions_03,
&ett_rrc_T_v860NonCriticalExtensions_29,
- &ett_rrc_T_nonCriticalExtensions_179,
+ &ett_rrc_T_nonCriticalExtensions_193,
&ett_rrc_SysInfoType11bis_v7b0ext_IEs,
&ett_rrc_SysInfoType11bis_v860ext_IEs,
&ett_rrc_SysInfoType12,
@@ -161148,7 +171514,7 @@ void proto_register_rrc(void) {
&ett_rrc_T_v690NonCriticalExtensions_51,
&ett_rrc_T_v6b0NonCriticalExtensions_17,
&ett_rrc_T_v7b0NonCriticalExtensions_04,
- &ett_rrc_T_nonCriticalExtensions_180,
+ &ett_rrc_T_nonCriticalExtensions_194,
&ett_rrc_SysInfoType12_v4b0ext_IEs,
&ett_rrc_SysInfoType12_v590ext_IEs,
&ett_rrc_SysInfoType12_v690ext_IEs,
@@ -161158,79 +171524,89 @@ void proto_register_rrc(void) {
&ett_rrc_T_v3a0NonCriticalExtensions_13,
&ett_rrc_T_v4b0NonCriticalExtensions_23,
&ett_rrc_T_v770NonCriticalExtensions_43,
- &ett_rrc_T_nonCriticalExtensions_181,
+ &ett_rrc_T_nonCriticalExtensions_195,
&ett_rrc_SysInfoType13_v3a0ext_IEs,
&ett_rrc_SysInfoType13_v4b0ext_IEs,
&ett_rrc_SysInfoType13_v770ext_IEs,
&ett_rrc_SysInfoType13_1,
- &ett_rrc_T_nonCriticalExtensions_182,
+ &ett_rrc_T_nonCriticalExtensions_196,
&ett_rrc_SysInfoType13_2,
- &ett_rrc_T_nonCriticalExtensions_183,
+ &ett_rrc_T_nonCriticalExtensions_197,
&ett_rrc_SysInfoType13_3,
- &ett_rrc_T_nonCriticalExtensions_184,
+ &ett_rrc_T_nonCriticalExtensions_198,
&ett_rrc_SysInfoType13_4,
- &ett_rrc_T_nonCriticalExtensions_185,
+ &ett_rrc_T_nonCriticalExtensions_199,
&ett_rrc_SysInfoType14,
- &ett_rrc_T_nonCriticalExtensions_186,
+ &ett_rrc_T_nonCriticalExtensions_200,
&ett_rrc_SysInfoType15,
&ett_rrc_T_v4b0NonCriticalExtensions_24,
&ett_rrc_T_v770NonCriticalExtensions_44,
- &ett_rrc_T_nonCriticalExtensions_187,
+ &ett_rrc_T_va40NonCriticalExtensions_20,
+ &ett_rrc_T_nonCriticalExtensions_201,
&ett_rrc_SysInfoType15_v4b0ext_IEs,
&ett_rrc_SysInfoType15_v770ext_IEs,
+ &ett_rrc_SysInfoType15_va40ext_IEs,
&ett_rrc_SysInfoType15bis,
&ett_rrc_T_v860NonCriticalExtensions_30,
- &ett_rrc_T_nonCriticalExtensions_188,
+ &ett_rrc_T_va40NonCriticalExtensions_21,
+ &ett_rrc_T_nonCriticalExtensions_202,
&ett_rrc_SysInfoType15bis_v860ext_IEs,
+ &ett_rrc_SysInfoType15bis_va40ext_IEs,
&ett_rrc_SysInfoType15_1,
&ett_rrc_T_v920NonCriticalExtensions_04,
- &ett_rrc_T_nonCriticalExtensions_189,
+ &ett_rrc_T_nonCriticalExtensions_203,
&ett_rrc_SysInfoType15_1_v920ext_IEs,
&ett_rrc_SysInfoType15_1bis,
&ett_rrc_T_v920NonCriticalExtensions_05,
- &ett_rrc_T_nonCriticalExtensions_190,
+ &ett_rrc_T_nonCriticalExtensions_204,
&ett_rrc_SysInfoType15_1bis_v920ext_IEs,
&ett_rrc_SysInfoType15_2,
- &ett_rrc_T_nonCriticalExtensions_191,
+ &ett_rrc_T_nonCriticalExtensions_205,
&ett_rrc_SysInfoType15_2bis,
- &ett_rrc_T_nonCriticalExtensions_192,
+ &ett_rrc_T_nonCriticalExtensions_206,
&ett_rrc_SysInfoType15_2ter,
- &ett_rrc_T_nonCriticalExtensions_193,
+ &ett_rrc_T_nonCriticalExtensions_207,
&ett_rrc_SysInfoType15_3,
- &ett_rrc_T_nonCriticalExtensions_194,
+ &ett_rrc_T_va40NonCriticalExtensions_22,
+ &ett_rrc_T_nonCriticalExtensions_208,
+ &ett_rrc_SysInfoType15_3_va40ext_IEs,
&ett_rrc_SysInfoType15_3bis,
&ett_rrc_T_v860NonCriticalExtensions_31,
- &ett_rrc_T_nonCriticalExtensions_195,
+ &ett_rrc_T_va40NonCriticalExtensions_23,
+ &ett_rrc_T_nonCriticalExtensions_209,
&ett_rrc_SysInfoType15_3bis_v860ext_IEs,
+ &ett_rrc_SysInfoType15_3bis_va40ext_IEs,
&ett_rrc_SysInfoType15_4,
&ett_rrc_T_v3a0NonCriticalExtensions_14,
&ett_rrc_T_v4b0NonCriticalExtensions_25,
- &ett_rrc_T_nonCriticalExtensions_196,
+ &ett_rrc_T_nonCriticalExtensions_210,
&ett_rrc_SysInfoType15_4_v3a0ext,
&ett_rrc_SysInfoType15_4_v4b0ext,
&ett_rrc_SysInfoType15_5,
&ett_rrc_T_v3a0NonCriticalExtensions_15,
&ett_rrc_T_v770NonCriticalExtensions_45,
- &ett_rrc_T_nonCriticalExtensions_197,
+ &ett_rrc_T_nonCriticalExtensions_211,
&ett_rrc_SysInfoType15_5_v3a0ext,
&ett_rrc_SysInfoType15_5_v770ext_IEs,
&ett_rrc_SysInfoType15_6,
- &ett_rrc_T_nonCriticalExtensions_198,
+ &ett_rrc_T_va40NonCriticalExtensions_24,
+ &ett_rrc_T_nonCriticalExtensions_212,
+ &ett_rrc_SysInfoType15_6_va40ext_IEs,
&ett_rrc_SysInfoType15_7,
- &ett_rrc_T_nonCriticalExtensions_199,
+ &ett_rrc_T_nonCriticalExtensions_213,
&ett_rrc_SysInfoType15_8,
- &ett_rrc_T_nonCriticalExtensions_200,
+ &ett_rrc_T_nonCriticalExtensions_214,
&ett_rrc_SysInfoType16,
&ett_rrc_T_v770NonCriticalExtensions_46,
&ett_rrc_T_v920NonCriticalExtensions_06,
- &ett_rrc_T_nonCriticalExtensions_201,
+ &ett_rrc_T_nonCriticalExtensions_215,
&ett_rrc_SysInfoType16_v770ext_IEs,
&ett_rrc_SysInfoType16_v920ext_IEs,
&ett_rrc_SysInfoType17,
&ett_rrc_T_v4b0NonCriticalExtensions_26,
&ett_rrc_T_v590NonCriticalExtensions_30,
&ett_rrc_T_v770NonCriticalExtensions_47,
- &ett_rrc_T_nonCriticalExtensions_202,
+ &ett_rrc_T_nonCriticalExtensions_216,
&ett_rrc_SysInfoType17_v4b0ext_IEs,
&ett_rrc_T_tdd128SpecificInfo_02,
&ett_rrc_SysInfoType17_v590ext_IEs,
@@ -161240,25 +171616,25 @@ void proto_register_rrc(void) {
&ett_rrc_SysInfoType18,
&ett_rrc_T_v6b0NonCriticalExtensions_18,
&ett_rrc_T_v860NonCriticalExtensions_32,
- &ett_rrc_T_nonCriticalExtensions_203,
+ &ett_rrc_T_nonCriticalExtensions_217,
&ett_rrc_SysInfoType18_v6b0ext,
&ett_rrc_SysInfoType18_v860ext,
&ett_rrc_SysInfoType19,
&ett_rrc_T_v920NonCriticalExtensions_07,
- &ett_rrc_T_nonCriticalExtensions_204,
+ &ett_rrc_T_nonCriticalExtensions_218,
&ett_rrc_SysInfoType19_v920ext,
&ett_rrc_SysInfoType20,
- &ett_rrc_T_nonCriticalExtensions_205,
+ &ett_rrc_T_nonCriticalExtensions_219,
&ett_rrc_SysInfoTypeSB1,
&ett_rrc_T_v6b0NonCriticalExtensions_19,
&ett_rrc_T_v860NonCriticalExtensions_33,
- &ett_rrc_T_nonCriticalExtensions_206,
+ &ett_rrc_T_nonCriticalExtensions_220,
&ett_rrc_SysInfoTypeSB1_v6b0ext,
&ett_rrc_SysInfoTypeSB1_v860ext,
&ett_rrc_SysInfoTypeSB2,
&ett_rrc_T_v6b0NonCriticalExtensions_20,
&ett_rrc_T_v860NonCriticalExtensions_34,
- &ett_rrc_T_nonCriticalExtensions_207,
+ &ett_rrc_T_nonCriticalExtensions_221,
&ett_rrc_SysInfoTypeSB2_v6b0ext,
&ett_rrc_SysInfoTypeSB2_v860ext,
&ett_rrc_TDD_UMTS_Frequency_List,
@@ -161295,18 +171671,18 @@ void proto_register_rrc(void) {
&ett_rrc_T_different,
&ett_rrc_MBMS_MCCH_ConfigurationInfo_r6,
&ett_rrc_MBMS_MICHConfigurationInfo_r6,
- &ett_rrc_T_mode_02,
- &ett_rrc_T_fdd_174,
- &ett_rrc_T_tdd384_40,
- &ett_rrc_T_tdd128_61,
- &ett_rrc_SEQUENCE_SIZE_1_2_OF_DL_TS_ChannelisationCode,
- &ett_rrc_MBMS_MICHConfigurationInfo_v770ext,
&ett_rrc_T_mode_03,
+ &ett_rrc_T_fdd_179,
&ett_rrc_T_tdd384_41,
- &ett_rrc_T_tdd768_21,
- &ett_rrc_T_tdd128_62,
- &ett_rrc_MBMS_MICHConfigurationInfo_v890ext,
+ &ett_rrc_T_tdd128_65,
+ &ett_rrc_SEQUENCE_SIZE_1_2_OF_DL_TS_ChannelisationCode,
+ &ett_rrc_MBMS_MICHConfigurationInfo_v770ext,
&ett_rrc_T_mode_04,
+ &ett_rrc_T_tdd384_42,
+ &ett_rrc_T_tdd768_22,
+ &ett_rrc_T_tdd128_66,
+ &ett_rrc_MBMS_MICHConfigurationInfo_v890ext,
+ &ett_rrc_T_mode_05,
&ett_rrc_T_imb384,
&ett_rrc_MBMS_ModifedService_r6,
&ett_rrc_T_mbms_PreferredFrequency,
@@ -161319,10 +171695,10 @@ void proto_register_rrc(void) {
&ett_rrc_MBMS_MSCHSchedulingInfo,
&ett_rrc_MBMS_NeighbouringCellSCCPCH_r6,
&ett_rrc_T_layer1Combining,
- &ett_rrc_T_fdd_175,
+ &ett_rrc_T_fdd_180,
&ett_rrc_MBMS_NeighbouringCellSCCPCH_v770ext,
&ett_rrc_T_layer1Combining_01,
- &ett_rrc_T_fdd_176,
+ &ett_rrc_T_fdd_181,
&ett_rrc_MBMS_NeighbouringCellSCCPCHList_r6,
&ett_rrc_MBMS_NeighbouringCellSCCPCHList_v770ext,
&ett_rrc_MBMS_NetworkStandardTimeInformation_LCR_v890ext,
@@ -161395,8 +171771,8 @@ void proto_register_rrc(void) {
&ett_rrc_T_v690NonCriticalExtensions_52,
&ett_rrc_T_v860NonCriticalExtensions_35,
&ett_rrc_T_v920NonCriticalExtensions_08,
- &ett_rrc_T_nonCriticalExtensions_208,
- &ett_rrc_T_criticalExtensions_111,
+ &ett_rrc_T_nonCriticalExtensions_222,
+ &ett_rrc_T_criticalExtensions_126,
&ett_rrc_InterRATHandoverInfoWithInterRATCapabilities_r3_IEs,
&ett_rrc_InterRATHandoverInfoWithInterRATCapabilities_v390ext_IEs,
&ett_rrc_InterRATHandoverInfoWithInterRATCapabilities_v690ext_IEs,
@@ -161404,8 +171780,8 @@ void proto_register_rrc(void) {
&ett_rrc_InterRATHandoverInfoWithInterRATCapabilities_v920ext_IEs,
&ett_rrc_RFC3095_ContextInfo_r5,
&ett_rrc_T_r5_14,
- &ett_rrc_T_nonCriticalExtensions_209,
- &ett_rrc_T_criticalExtensions_112,
+ &ett_rrc_T_nonCriticalExtensions_223,
+ &ett_rrc_T_criticalExtensions_127,
&ett_rrc_RFC3095_ContextInfoList_r5,
&ett_rrc_SRNC_RelocationInfo_r3,
&ett_rrc_T_r3_32,
@@ -161426,7 +171802,7 @@ void proto_register_rrc(void) {
&ett_rrc_T_v770NonCriticalExtensions_48,
&ett_rrc_T_v7e0NonCriticalExtensions_04,
&ett_rrc_T_v7f0NonCriticalExtensions_17,
- &ett_rrc_T_nonCriticalExtensions_210,
+ &ett_rrc_T_nonCriticalExtensions_224,
&ett_rrc_T_later_than_r3_28,
&ett_rrc_T_r4_14,
&ett_rrc_T_v4d0NonCriticalExtensions_14,
@@ -161439,8 +171815,8 @@ void proto_register_rrc(void) {
&ett_rrc_T_v770NonCriticalExtensions_49,
&ett_rrc_T_v7e0NonCriticalExtensions_05,
&ett_rrc_T_v7f0NonCriticalExtensions_18,
- &ett_rrc_T_nonCriticalExtensions_211,
- &ett_rrc_T_criticalExtensions_113,
+ &ett_rrc_T_nonCriticalExtensions_225,
+ &ett_rrc_T_criticalExtensions_128,
&ett_rrc_T_r5_15,
&ett_rrc_T_v5a0NonCriticalExtensions_02,
&ett_rrc_T_v5b0NonCriticalExtensions_05,
@@ -161450,34 +171826,37 @@ void proto_register_rrc(void) {
&ett_rrc_T_v770NonCriticalExtensions_50,
&ett_rrc_T_v7e0NonCriticalExtensions_06,
&ett_rrc_T_v7f0NonCriticalExtensions_19,
- &ett_rrc_T_nonCriticalExtensions_212,
- &ett_rrc_T_criticalExtensions_114,
+ &ett_rrc_T_nonCriticalExtensions_226,
+ &ett_rrc_T_criticalExtensions_129,
&ett_rrc_T_r6_12,
&ett_rrc_T_v6b0NonCriticalExtensions_24,
&ett_rrc_T_v770NonCriticalExtensions_51,
&ett_rrc_T_v820NonCriticalExtensions_03,
&ett_rrc_T_v860NonCriticalExtensions_36,
- &ett_rrc_T_nonCriticalExtensions_213,
- &ett_rrc_T_criticalExtensions_115,
+ &ett_rrc_T_nonCriticalExtensions_227,
+ &ett_rrc_T_criticalExtensions_130,
&ett_rrc_T_r7_16,
&ett_rrc_T_v820NonCriticalExtensions_04,
&ett_rrc_T_v860NonCriticalExtensions_37,
- &ett_rrc_T_nonCriticalExtensions_214,
- &ett_rrc_T_criticalExtensions_116,
+ &ett_rrc_T_nonCriticalExtensions_228,
+ &ett_rrc_T_criticalExtensions_131,
&ett_rrc_T_r8_12,
&ett_rrc_T_v7e0NonCriticalExtensions_07,
&ett_rrc_T_v7f0NonCriticalExtensions_20,
&ett_rrc_T_v8d0NonCriticalExtensions_01,
- &ett_rrc_T_nonCriticalExtensions_215,
- &ett_rrc_T_criticalExtensions_117,
+ &ett_rrc_T_nonCriticalExtensions_229,
+ &ett_rrc_T_criticalExtensions_132,
&ett_rrc_T_r9_11,
&ett_rrc_T_v8d0NonCriticalExtensions_02,
&ett_rrc_T_v970NonCriticalExtensions_04,
- &ett_rrc_T_nonCriticalExtensions_216,
- &ett_rrc_T_criticalExtensions_118,
+ &ett_rrc_T_nonCriticalExtensions_230,
+ &ett_rrc_T_criticalExtensions_133,
+ &ett_rrc_T_r10_13,
+ &ett_rrc_T_nonCriticalExtensions_231,
+ &ett_rrc_T_criticalExtensions_134,
&ett_rrc_SRNC_RelocationInfo_r3_IEs,
- &ett_rrc_T_modeSpecificInfo_140,
- &ett_rrc_T_fdd_177,
+ &ett_rrc_T_modeSpecificInfo_146,
+ &ett_rrc_T_fdd_182,
&ett_rrc_SRNC_RelocationInfo_v380ext_IEs,
&ett_rrc_SRNC_RelocationInfo_v390ext_IEs,
&ett_rrc_SRNC_RelocationInfo_v3a0ext_IEs,
@@ -161513,20 +171892,20 @@ void proto_register_rrc(void) {
&ett_rrc_T_active_01,
&ett_rrc_SRNC_RelocationInfo_r4_IEs,
&ett_rrc_T_dummy_17,
- &ett_rrc_T_fdd_178,
+ &ett_rrc_T_fdd_183,
&ett_rrc_SRNC_RelocationInfo_r5_IEs,
&ett_rrc_T_dummy_18,
- &ett_rrc_T_fdd_179,
+ &ett_rrc_T_fdd_184,
&ett_rrc_SRNC_RelocationInfo_v690ext_IEs,
&ett_rrc_SRNC_RelocationInfo_r6_IEs,
&ett_rrc_SRNC_RelocationInfo_r6_add_ext_IEs,
&ett_rrc_T_v7f0NonCriticalExtensions_21,
- &ett_rrc_T_nonCriticalExtensions_217,
+ &ett_rrc_T_nonCriticalExtensions_232,
&ett_rrc_SRNC_RelocationInfo_v6b0ext_IEs,
&ett_rrc_SRNC_RelocationInfo_r7_IEs,
&ett_rrc_SRNC_RelocationInfo_r7_add_ext_IEs,
&ett_rrc_T_v7f0NonCriticalExtensions_22,
- &ett_rrc_T_nonCriticalExtensions_218,
+ &ett_rrc_T_nonCriticalExtensions_233,
&ett_rrc_SRNC_RelocationInfo_v770ext_IEs,
&ett_rrc_SRNC_RelocationInfo_v7e0ext_IEs,
&ett_rrc_SRNC_RelocationInfo_v7f0ext_IEs,
@@ -161536,6 +171915,7 @@ void proto_register_rrc(void) {
&ett_rrc_SRNC_RelocationInfo_v8d0ext_IEs,
&ett_rrc_SRNC_RelocationInfo_r9_IEs,
&ett_rrc_SRNC_RelocationInfo_v970ext_IEs,
+ &ett_rrc_SRNC_RelocationInfo_r10_IEs,
&ett_rrc_CalculationTimeForCiphering,
&ett_rrc_CipheringInfoPerRB,
&ett_rrc_CipheringInfoPerRB_r4,
@@ -161570,6 +171950,7 @@ void proto_register_rrc(void) {
&ett_rrc_MeasurementCommandWithType_r7,
&ett_rrc_MeasurementCommandWithType_r8,
&ett_rrc_MeasurementCommandWithType_r9,
+ &ett_rrc_MeasurementCommandWithType_r10,
&ett_rrc_OngoingMeasRep,
&ett_rrc_OngoingMeasRep_r4,
&ett_rrc_OngoingMeasRep_r5,
@@ -161579,6 +171960,7 @@ void proto_register_rrc(void) {
&ett_rrc_OngoingMeasRep_r8,
&ett_rrc_OngoingMeasRep_r9,
&ett_rrc_OngoingMeasRep_v970ext_IEs,
+ &ett_rrc_OngoingMeasRep_r10,
&ett_rrc_OngoingMeasRepList,
&ett_rrc_OngoingMeasRepList_r4,
&ett_rrc_OngoingMeasRepList_r5,
@@ -161587,6 +171969,7 @@ void proto_register_rrc(void) {
&ett_rrc_OngoingMeasRepList_r8,
&ett_rrc_OngoingMeasRepList_r9,
&ett_rrc_OngoingMeasRepList_v970ext_IE,
+ &ett_rrc_OngoingMeasRepList_r10,
&ett_rrc_PDCP_Capability_r4,
&ett_rrc_T_supportForRfc2507_01,
&ett_rrc_T_supportForRfc3095_01,
@@ -161600,15 +171983,15 @@ void proto_register_rrc(void) {
&ett_rrc_T_supportForRfc3095_03,
&ett_rrc_T_supported_10,
&ett_rrc_PhysicalChannelCapability_r4,
- &ett_rrc_T_fddPhysChCapability_04,
+ &ett_rrc_T_fddPhysChCapability_05,
&ett_rrc_T_tdd384_PhysChCapability,
&ett_rrc_T_tdd128_PhysChCapability_01,
&ett_rrc_PhysicalChannelCapability_r5,
- &ett_rrc_T_fddPhysChCapability_05,
+ &ett_rrc_T_fddPhysChCapability_06,
&ett_rrc_T_tdd384_PhysChCapability_01,
&ett_rrc_T_tdd128_PhysChCapability_02,
&ett_rrc_RF_Capability_r4,
- &ett_rrc_T_fddRF_Capability_03,
+ &ett_rrc_T_fddRF_Capability_04,
&ett_rrc_T_tdd384_RF_Capability_01,
&ett_rrc_T_tdd128_RF_Capability_01,
&ett_rrc_RFC3095_ContextInfo,
@@ -161628,8 +172011,9 @@ void proto_register_rrc(void) {
&ett_rrc_UL_RFC3095_Context,
/*--- End of included file: packet-rrc-ettarr.c ---*/
-#line 196 "../../asn1/rrc/packet-rrc-template.c"
+#line 200 "../../asn1/rrc/packet-rrc-template.c"
&ett_rrc_eutraFeatureGroupIndicators,
+ &ett_rrc_cn_CommonGSM_MAP_NAS_SysInfo,
};
@@ -161660,21 +172044,21 @@ void proto_register_rrc(void) {
new_register_dissector("rrc.sysinfo", dissect_SystemInformation_BCH_PDU, proto_rrc);
new_register_dissector("rrc.sysinfo.cont", dissect_System_Information_Container_PDU, proto_rrc);
new_register_dissector("rrc.ue_radio_access_cap_info", dissect_UE_RadioAccessCapabilityInfo_PDU, proto_rrc);
- new_register_dissector("rrc.si.mib", dissect_MasterInformationBlock_PDU, proto_rrc);
- new_register_dissector("rrc.si.sib1", dissect_SysInfoType1_PDU, proto_rrc);
- new_register_dissector("rrc.si.sib2", dissect_SysInfoType2_PDU, proto_rrc);
- new_register_dissector("rrc.si.sib3", dissect_SysInfoType3_PDU, proto_rrc);
+ new_register_dissector("rrc.si.mib", dissect_rrc_MasterInformationBlock_PDU, proto_rrc);
+ new_register_dissector("rrc.si.sib1", dissect_rrc_SysInfoType1_PDU, proto_rrc);
+ new_register_dissector("rrc.si.sib2", dissect_rrc_SysInfoType2_PDU, proto_rrc);
+ new_register_dissector("rrc.si.sib3", dissect_rrc_SysInfoType3_PDU, proto_rrc);
new_register_dissector("rrc.si.sib4", dissect_SysInfoType4_PDU, proto_rrc);
new_register_dissector("rrc.si.sib5", dissect_SysInfoType5_PDU, proto_rrc);
new_register_dissector("rrc.si.sib5bis", dissect_SysInfoType5bis_PDU, proto_rrc);
new_register_dissector("rrc.si.sib6", dissect_SysInfoType6_PDU, proto_rrc);
- new_register_dissector("rrc.si.sib7", dissect_SysInfoType7_PDU, proto_rrc);
+ new_register_dissector("rrc.si.sib7", dissect_rrc_SysInfoType7_PDU, proto_rrc);
new_register_dissector("rrc.si.sib8", dissect_SysInfoType8_PDU, proto_rrc);
new_register_dissector("rrc.si.sib9", dissect_SysInfoType9_PDU, proto_rrc);
new_register_dissector("rrc.si.sib10", dissect_SysInfoType10_PDU, proto_rrc);
new_register_dissector("rrc.si.sib11", dissect_SysInfoType11_PDU, proto_rrc);
new_register_dissector("rrc.si.sib11bis", dissect_SysInfoType11bis_PDU, proto_rrc);
- new_register_dissector("rrc.si.sib12", dissect_SysInfoType12_PDU, proto_rrc);
+ new_register_dissector("rrc.si.sib12", dissect_rrc_SysInfoType12_PDU, proto_rrc);
new_register_dissector("rrc.si.sib13", dissect_SysInfoType13_PDU, proto_rrc);
new_register_dissector("rrc.si.sib13-1", dissect_SysInfoType13_1_PDU, proto_rrc);
new_register_dissector("rrc.si.sib13-2", dissect_SysInfoType13_2_PDU, proto_rrc);
@@ -161707,7 +172091,7 @@ void proto_register_rrc(void) {
/*--- End of included file: packet-rrc-dis-reg.c ---*/
-#line 209 "../../asn1/rrc/packet-rrc-template.c"
+#line 214 "../../asn1/rrc/packet-rrc-template.c"
}
diff --git a/epan/dissectors/packet-rrc.h b/epan/dissectors/packet-rrc.h
index e5503c9204..d530ad74a3 100644
--- a/epan/dissectors/packet-rrc.h
+++ b/epan/dissectors/packet-rrc.h
@@ -40,6 +40,12 @@ extern int proto_rrc;
int dissect_rrc_InterRATHandoverInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
int dissect_rrc_HandoverToUTRANCommand_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);
int dissect_rrc_InterRATHandoverInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);
+int dissect_rrc_MasterInformationBlock_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);
+int dissect_rrc_SysInfoType1_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);
+int dissect_rrc_SysInfoType2_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);
+int dissect_rrc_SysInfoType3_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);
+int dissect_rrc_SysInfoType7_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);
+int dissect_rrc_SysInfoType12_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);
int dissect_rrc_ToTargetRNC_Container_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);
int dissect_rrc_TargetRNC_ToSourceRNC_Container_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);
diff --git a/epan/dissectors/packet-rrlp.c b/epan/dissectors/packet-rrlp.c
index a7cd6bd650..acc395d6e7 100644
--- a/epan/dissectors/packet-rrlp.c
+++ b/epan/dissectors/packet-rrlp.c
@@ -30,7 +30,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
- * Ref 3GPP TS 44.031 version 6.8.0 Release 6
+ * Ref 3GPP TS 44.031 version 9.2.0 Release 9
* http://www.3gpp.org
*/
@@ -7009,9 +7009,9 @@ static int
dissect_rrlp_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 26 "../../asn1/rrlp/rrlp.cnf"
- proto_tree_add_item(tree, proto_rrlp, tvb, 0, -1, FALSE);
+ proto_tree_add_item(tree, proto_rrlp, tvb, 0, -1, ENC_NA);
- col_append_str(actx->pinfo->cinfo, COL_PROTOCOL, "/RRLP");
+ col_append_sep_str(actx->pinfo->cinfo, COL_PROTOCOL, "/", "RRLP");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrlp_PDU, PDU_sequence);
diff --git a/epan/dissectors/packet-rsh.c b/epan/dissectors/packet-rsh.c
index 683a49c0b0..478e6f5907 100644
--- a/epan/dissectors/packet-rsh.c
+++ b/epan/dissectors/packet-rsh.c
@@ -32,15 +32,13 @@
# include "config.h"
#endif
-#include <glib.h>
-
-#include <stdio.h>
-#include <stdlib.h>
#include <ctype.h>
+#include <glib.h>
+
+#include <epan/packet.h>
#include <epan/conversation.h>
#include <epan/emem.h>
-#include <epan/packet.h>
#include <epan/prefs.h>
#include <wsutil/str_util.h>
diff --git a/epan/dissectors/packet-rsip.c b/epan/dissectors/packet-rsip.c
index a0a79c04df..e92581f12a 100644
--- a/epan/dissectors/packet-rsip.c
+++ b/epan/dissectors/packet-rsip.c
@@ -210,7 +210,7 @@ static const value_string error_number_vals[] = {
{ 106, "Unsupported RSIP Version" },
{ 201, "Missing Parameter" },
{ 202, "Duplicate Parameter" },
- { 203, "Extra Paramter" },
+ { 203, "Extra Parameter" },
{ 204, "Illegal Parameter" },
{ 205, "Bad Parameter" },
{ 206, "Illegal Message" },
diff --git a/epan/dissectors/packet-rsl.c b/epan/dissectors/packet-rsl.c
index 3732cbddc1..ab58eb18cd 100644
--- a/epan/dissectors/packet-rsl.c
+++ b/epan/dissectors/packet-rsl.c
@@ -117,23 +117,23 @@ static int hf_rsl_emlpp_prio = -1;
static int hf_rsl_rtd = -1;
static int hf_rsl_delay_ind = -1;
static int hf_rsl_tfo = -1;
-static int hf_rsl_speech_mode_s = -1;
-static int hf_rsl_speech_mode_m = -1;
-static int hf_rsl_conn_id = -1;
-static int hf_rsl_rtp_payload = -1;
-static int hf_rsl_rtp_csd_fmt_d = -1;
-static int hf_rsl_rtp_csd_fmt_ir = -1;
-static int hf_rsl_local_port = -1;
-static int hf_rsl_remote_port = -1;
-static int hf_rsl_local_ip = -1;
-static int hf_rsl_remote_ip = -1;
-static int hf_rsl_cstat_tx_pkts = -1;
-static int hf_rsl_cstat_tx_octs = -1;
-static int hf_rsl_cstat_rx_pkts = -1;
-static int hf_rsl_cstat_rx_octs = -1;
-static int hf_rsl_cstat_lost_pkts = -1;
-static int hf_rsl_cstat_ia_jitter = -1;
-static int hf_rsl_cstat_avg_tx_dly = -1;
+static int hf_rsl_speech_mode_s = -1;
+static int hf_rsl_speech_mode_m = -1;
+static int hf_rsl_conn_id = -1;
+static int hf_rsl_rtp_payload = -1;
+static int hf_rsl_rtp_csd_fmt_d = -1;
+static int hf_rsl_rtp_csd_fmt_ir = -1;
+static int hf_rsl_local_port = -1;
+static int hf_rsl_remote_port = -1;
+static int hf_rsl_local_ip = -1;
+static int hf_rsl_remote_ip = -1;
+static int hf_rsl_cstat_tx_pkts = -1;
+static int hf_rsl_cstat_tx_octs = -1;
+static int hf_rsl_cstat_rx_pkts = -1;
+static int hf_rsl_cstat_rx_octs = -1;
+static int hf_rsl_cstat_lost_pkts = -1;
+static int hf_rsl_cstat_ia_jitter = -1;
+static int hf_rsl_cstat_avg_tx_dly = -1;
/* Initialize the subtree pointers */
@@ -159,7 +159,7 @@ static int ett_ie_rach_load = -1;
static int ett_ie_req_ref = -1;
static int ett_ie_rel_mode = -1;
static int ett_ie_resource_inf = -1;
-static int ett_ie_rlm_cause =-1;
+static int ett_ie_rlm_cause = -1;
static int ett_ie_staring_time = -1;
static int ett_ie_timing_adv = -1;
static int ett_ie_uplink_meas = -1;
@@ -240,10 +240,10 @@ static const value_string rsl_msg_disc_vals[] = {
{ 0x06, "Common Channel Management messages" },
{ 0x08, "TRX Management messages" },
{ 0x16, "Location Services messages" },
- { 0x3f, "ip.access Vendor Specific messages" },
+ { 0x3f, "ip.access Vendor Specific messages" },
{ 0, NULL }
};
-#define RSL_MSGDISC_IPACCESS 0x3f
+#define RSL_MSGDISC_IPACCESS 0x3f
/*
* 9.2 MESSAGE TYPE
*/
@@ -266,9 +266,10 @@ static const value_string rsl_msg_disc_vals[] = {
#define RSL_MSG_PAGING_CMD 21 /* 0x15 */
#define RSL_MSG_IMM_ASS_CMD 22 /* 0x16 */
#define RSL_MSG_SMS_BC_REQ 23 /* 0x17 8.5.7 */
+
+/* TRX Management messages */
#define RSL_MSG_RF_RES_IND 25 /* 8.6.1 */
#define RSL_MSG_SACCH_FILL 26 /* 8.6.2 */
-
#define RSL_MSG_OVERLOAD 27 /* 8.6.3 */
#define RSL_MSG_ERROR_REPORT 28 /* 8.6.4 */
#define RSL_MSG_SMS_BC_CMD 29 /* 8.5.8 */
@@ -314,128 +315,130 @@ static const value_string rsl_msg_disc_vals[] = {
/* Vendor-Specific messages of ip.access nanoBTS. There is no public documentation
* about those extensions, all information in this dissector is based on lawful
* protocol reverse enginering by Harald Welte <laforge@gnumonks.org> */
-#define RSL_MSG_TYPE_IPAC_MEAS_PP_DEF 0x60
-#define RSL_MSG_TYPE_IPAC_HO_CAND_INQ 0x61
-#define RSL_MSG_TYPE_IPAC_HO_CAND_RESP 0x62
-
-#define RSL_MSG_TYPE_IPAC_PDCH_ACT 0x48
-#define RSL_MSG_TYPE_IPAC_PDCH_ACT_ACK 0x49
-#define RSL_MSG_TYPE_IPAC_PDCH_ACT_NACK 0x4a
-#define RSL_MSG_TYPE_IPAC_PDCH_DEACT 0x4b
-#define RSL_MSG_TYPE_IPAC_PDCH_DEACT_ACK 0x4c
+#define RSL_MSG_TYPE_IPAC_MEAS_PP_DEF 0x60
+#define RSL_MSG_TYPE_IPAC_HO_CAND_INQ 0x61
+#define RSL_MSG_TYPE_IPAC_HO_CAND_RESP 0x62
+
+#define RSL_MSG_TYPE_IPAC_PDCH_ACT 0x48
+#define RSL_MSG_TYPE_IPAC_PDCH_ACT_ACK 0x49
+#define RSL_MSG_TYPE_IPAC_PDCH_ACT_NACK 0x4a
+#define RSL_MSG_TYPE_IPAC_PDCH_DEACT 0x4b
+#define RSL_MSG_TYPE_IPAC_PDCH_DEACT_ACK 0x4c
#define RSL_MSG_TYPE_IPAC_PDCH_DEACT_NACK 0x4d
-#define RSL_MSG_TYPE_IPAC_CRCX 0x70
-#define RSL_MSG_TYPE_IPAC_CRCX_ACK 0x71
-#define RSL_MSG_TYPE_IPAC_CRCX_NACK 0x72
-#define RSL_MSG_TYPE_IPAC_MDCX 0x73
-#define RSL_MSG_TYPE_IPAC_MDCX_ACK 0x74
-#define RSL_MSG_TYPE_IPAC_MDCX_NACK 0x75
-#define RSL_MSG_TYPE_IPAC_DLCX_IND 0x76
-#define RSL_MSG_TYPE_IPAC_DLCX 0x77
-#define RSL_MSG_TYPE_IPAC_DLCX_ACK 0x78
-#define RSL_MSG_TYPE_IPAC_DLCX_NACK 0x79
-
-#define RSL_IE_IPAC_SRTP_CONFIG 0xe0
-#define RSL_IE_IPAC_PROXY_UDP 0xe1
-#define RSL_IE_IPAC_BSCMPL_TOUT 0xe2
-#define RSL_IE_IPAC_REMOTE_IP 0xf0
-#define RSL_IE_IPAC_REMOTE_PORT 0xf1
-#define RSL_IE_IPAC_RTP_PAYLOAD 0xf2
-#define RSL_IE_IPAC_LOCAL_PORT 0xf3
-#define RSL_IE_IPAC_SPEECH_MODE 0xf4
-#define RSL_IE_IPAC_LOCAL_IP 0xf5
-#define RSL_IE_IPAC_CONN_STAT 0xf6
-#define RSL_IE_IPAC_HO_C_PARMS 0xf7
-#define RSL_IE_IPAC_CONN_ID 0xf8
-#define RSL_IE_IPAC_RTP_CSD_FMT 0xf9
-#define RSL_IE_IPAC_RTP_JIT_BUF 0xfa
-#define RSL_IE_IPAC_RTP_COMPR 0xfb
-#define RSL_IE_IPAC_RTP_PAYLOAD2 0xfc
-#define RSL_IE_IPAC_RTP_MPLEX 0xfd
-#define RSL_IE_IPAC_RTP_MPLEX_ID 0xfe
+#define RSL_MSG_TYPE_IPAC_CRCX 0x70
+#define RSL_MSG_TYPE_IPAC_CRCX_ACK 0x71
+#define RSL_MSG_TYPE_IPAC_CRCX_NACK 0x72
+#define RSL_MSG_TYPE_IPAC_MDCX 0x73
+#define RSL_MSG_TYPE_IPAC_MDCX_ACK 0x74
+#define RSL_MSG_TYPE_IPAC_MDCX_NACK 0x75
+#define RSL_MSG_TYPE_IPAC_DLCX_IND 0x76
+#define RSL_MSG_TYPE_IPAC_DLCX 0x77
+#define RSL_MSG_TYPE_IPAC_DLCX_ACK 0x78
+#define RSL_MSG_TYPE_IPAC_DLCX_NACK 0x79
+
+#define RSL_IE_IPAC_SRTP_CONFIG 0xe0
+#define RSL_IE_IPAC_PROXY_UDP 0xe1
+#define RSL_IE_IPAC_BSCMPL_TOUT 0xe2
+#define RSL_IE_IPAC_REMOTE_IP 0xf0
+#define RSL_IE_IPAC_REMOTE_PORT 0xf1
+#define RSL_IE_IPAC_RTP_PAYLOAD 0xf2
+#define RSL_IE_IPAC_LOCAL_PORT 0xf3
+#define RSL_IE_IPAC_SPEECH_MODE 0xf4
+#define RSL_IE_IPAC_LOCAL_IP 0xf5
+#define RSL_IE_IPAC_CONN_STAT 0xf6
+#define RSL_IE_IPAC_HO_C_PARMS 0xf7
+#define RSL_IE_IPAC_CONN_ID 0xf8
+#define RSL_IE_IPAC_RTP_CSD_FMT 0xf9
+#define RSL_IE_IPAC_RTP_JIT_BUF 0xfa
+#define RSL_IE_IPAC_RTP_COMPR 0xfb
+#define RSL_IE_IPAC_RTP_PAYLOAD2 0xfc
+#define RSL_IE_IPAC_RTP_MPLEX 0xfd
+#define RSL_IE_IPAC_RTP_MPLEX_ID 0xfe
static const value_string rsl_msg_type_vals[] = {
/* 0 0 0 0 - - - - Radio Link Layer Management messages: */
- { 0x01, "DATA REQuest" }, /* 8.3.1 */
- { 0x02, "DATA INDication" }, /* 8.3.2 */
- { 0x03, "ERROR INDication" }, /* 8.3.3 */
- { 0x04, "ESTablish REQuest" }, /* 8.3.4 */
- { 0x05, "ESTablish CONFirm" }, /* 8.3.5 */
- { 0x06, "ESTablish INDication" }, /* 8.3.6 */
- { 0x07, "RELease REQuest" }, /* 8.3.7 */
- { 0x08, "RELease CONFirm" }, /* 8.3.8 */
- { 0x09, "RELease INDication" }, /* 8.3.9 */
- { 0x0a, "UNIT DATA REQuest" }, /* 8.3.10 */
+/* 0x01 */ { RSL_MSG_TYPE_DATA_REQ, "DATA REQuest" }, /* 8.3.1 */
+/* 0x02 */ { RSL_MSG_TYPE_DATA_IND, "DATA INDication" }, /* 8.3.2 */
+/* 0x03 */ { RSL_MSG_TYPE_ERROR_IND, "ERROR INDication" }, /* 8.3.3 */
+/* 0x04 */ { RSL_MSG_TYPE_EST_REQ, "ESTablish REQuest" }, /* 8.3.4 */
+/* 0x05 */ { RSL_MSG_TYPE_EST_CONF, "ESTablish CONFirm" }, /* 8.3.5 */
+/* 0x06 */ { RSL_MSG_EST_IND, "ESTablish INDication" }, /* 8.3.6 */
+/* 0x07 */ { RSL_MSG_REL_REQ, "RELease REQuest" }, /* 8.3.7 */
+/* 0x08 */ { RSL_MSG_REL_CONF, "RELease CONFirm" }, /* 8.3.8 */
+/* 0x09 */ { RSL_MSG_REL_IND, "RELease INDication" }, /* 8.3.9 */
+/* 0x0a */ { RSL_MSG_UNIT_DATA_REQ, "UNIT DATA REQuest" }, /* 8.3.10 */
/* 0 0 0 1 - - - - Common Channel Management/TRX Management messages: */
- { 0x11, "BCCH INFOrmation" }, /* 8.5.1 */
- { 0x12, "CCCH LOAD INDication" }, /* 8.5.2 */
- { 0x13, "CHANnel ReQuireD" }, /* 8.5.3 */
- { 0x14, "DELETE INDication" }, /* 8.5.4 */
- { 0x15, "PAGING CoMmanD" }, /* 8.5.5 */
- { 0x16, "IMMEDIATE ASSIGN COMMAND" }, /* 8.5.6 */
- { 0x17, "SMS BroadCast REQuest" }, /* 8.5.7 */
- { 0x19, "RF RESource INDication" }, /* 8.6.1 */
- { 0x1a, "SACCH FILLing" }, /* 8.6.2 */
- { 0x1b, "OVERLOAD" }, /* 8.6.3 */
- { 0x1c, "ERROR REPORT" }, /* 8.6.4 */
- { 0x1d, "SMS BroadCast CoMmanD" }, /* 8.5.8 */
- { 0x1e, "CBCH LOAD INDication" }, /* 8.5.9 */
- { 0x1f, "NOTification CoMmanD" }, /* 8.5.10 */
- /* 0 0 1 - - - - - Dedicated Channel Management messages: */
- { 0x21, "CHANnel ACTIVation" }, /* 8.4.1 */
- { 0x22, "CHANnel ACTIVation ACKnowledge" }, /* 8.4.2 */
- { 0x23, "CHANnel ACTIVation Negative ACK" }, /* 8.4.3 */
- { 0x24, "CONNection FAILure" }, /* 8.4.4 */
- { 0x25, "DEACTIVATE SACCH" }, /* 8.4.5 */
- { 0x26, "ENCRyption CoMmanD" }, /* 8.4.6 */
- { 0x27, "HANDOver DETection" }, /* 8.4.7 */
- { 0x28, "MEASurement RESult" }, /* 8.4.8 */
- { 0x29, "MODE MODIFY REQuest" }, /* 8.4.9 */
- { 0x2a, "MODE MODIFY ACKnowledge" }, /* 8.4.10 */
- { 0x2b, "MODE MODIFY Negative ACKnowledge" }, /* 8.4.11 */
- { 0x2c, "PHYsical CONTEXT REQuest" }, /* 8.4.12 */
- { 0x2d, "PHYsical CONTEXT CONFirm" }, /* 8.4.13 */
- { 0x2e, "RF CHANnel RELease" }, /* 8.4.14 */
- { 0x2f, "MS POWER CONTROL" }, /* 8.4.15 */
- { 0x30, "BS POWER CONTROL" }, /* 8.4.16 */
- { 0x31, "PREPROCess CONFIGure" }, /* 8.4.17 */
- { 0x32, "PREPROCessed MEASurement RESult" }, /* 8.4.18 */
- { 0x33, "RF CHANnel RELease ACKnowledge" }, /* 8.4.19 */
- { 0x34, "SACCH INFO MODIFY" }, /* 8.4.20 */
- { 0x35, "TALKER DETection" }, /* 8.4.21 */
- { 0x36, "LISTENER DETection" }, /* 8.4.22 */
- { 0x37, "REMOTE CODEC CONFiguration REPort" }, /* 8.4.23 */
- { 0x38, "Round Trip Delay REPort" }, /* 8.4.24 */
- { 0x39, "PRE-HANDOver NOTIFication" }, /* 8.4.25 */
- { 0x3a, "MultiRate CODEC MODification REQest" }, /* 8.4.26 */
- { 0x3b, "MultiRate CODEC MOD ACKnowledge" }, /* 8.4.27 */
- { 0x3c, "MultiRate CODEC MOD Negative ACKnowledge" }, /* 8.4.28 */
- { 0x3d, "MultiRate CODEC MOD PERformed" }, /* 8.4.29 */
- { 0x3e, "TFO REPort" }, /* 8.4.30 */
- { 0x3f, "TFO MODification REQuest" }, /* 8.4.31 */
+/* 0x11 */ { RSL_MSG_BCCH_INFO, "BCCH INFOrmation" }, /* 8.5.1 */
+/* 0x12 */ { RSL_MSG_CCCH_LOAD_IND, "CCCH LOAD INDication" }, /* 8.5.2 */
+/* 0x13 */ { RSL_MSG_CHANRQD, "CHANnel ReQuireD" }, /* 8.5.3 */
+/* 0x14 */ { RSL_MSG_DELETE_IND, "DELETE INDication" }, /* 8.5.4 */
+/* 0x15 */ { RSL_MSG_PAGING_CMD, "PAGING CoMmanD" }, /* 8.5.5 */
+/* 0x16 */ { RSL_MSG_IMM_ASS_CMD, "IMMEDIATE ASSIGN COMMAND" }, /* 8.5.6 */
+/* 0x17 */ { RSL_MSG_SMS_BC_REQ, "SMS BroadCast REQuest" }, /* 8.5.7 */
+
+/* 0x19 */ { RSL_MSG_RF_RES_IND, "RF RESource INDication" }, /* 8.6.1 */
+/* 0x1a */ { RSL_MSG_SACCH_FILL, "SACCH FILLing" }, /* 8.6.2 */
+/* 0x1b */ { RSL_MSG_OVERLOAD, "OVERLOAD" }, /* 8.6.3 */
+/* 0x1c */ { RSL_MSG_ERROR_REPORT, "ERROR REPORT" }, /* 8.6.4 */
+/* 0x1d */ { RSL_MSG_SMS_BC_CMD, "SMS BroadCast CoMmanD" }, /* 8.5.8 */
+/* 0x1e */ { RSL_MSG_CBCH_LOAD_IND, "CBCH LOAD INDication" }, /* 8.5.9 */
+/* 0x1f */ { RSL_MSG_NOT_CMD, "NOTification CoMmanD" }, /* 8.5.10 */
+
+/* 0 0 1 - - - - - Dedicated Channel Management messages: */
+/* 0x21 */ { RSL_MSG_CHAN_ACTIV, "CHANnel ACTIVation" }, /* 8.4.1 */
+/* 0x22 */ { RSL_MSG_CHAN_ACTIV_ACK, "CHANnel ACTIVation ACKnowledge" }, /* 8.4.2 */
+/* 0x23 */ { RSL_MSG_CHAN_ACTIV_N_ACK, "CHANnel ACTIVation Negative ACK" }, /* 8.4.3 */
+/* 0x24 */ { RSL_MSG_CONN_FAIL, "CONNection FAILure" }, /* 8.4.4 */
+/* 0x25 */ { RSL_MSG_DEACTIVATE_SACCH, "DEACTIVATE SACCH" }, /* 8.4.5 */
+/* 0x26 */ { RSL_MSG_ENCR_CMD, "ENCRyption CoMmanD" }, /* 8.4.6 */
+/* 0x27 */ { RSL_MSG_HANDODET, "HANDOver DETection" }, /* 8.4.7 */
+/* 0x28 */ { RSL_MSG_MEAS_RES, "MEASurement RESult" }, /* 8.4.8 */
+/* 0x29 */ { RSL_MSG_MODE_MODIFY_REQ, "MODE MODIFY REQuest" }, /* 8.4.9 */
+/* 0x2a */ { RSL_MSG_MODE_MODIFY_ACK, "MODE MODIFY ACKnowledge" }, /* 8.4.10 */
+/* 0x2v */ { RSL_MSG_MODE_MODIFY_NACK, "MODE MODIFY Negative ACKnowledge" }, /* 8.4.11 */
+/* 0x2b */ { RSL_MSG_PHY_CONTEXT_REQ, "PHYsical CONTEXT REQuest" }, /* 8.4.12 */
+/* 0x2d */ { RSL_MSG_PHY_CONTEXT_CONF, "PHYsical CONTEXT CONFirm" }, /* 8.4.13 */
+/* 0x2e */ { RSL_MSG_RF_CHAN_REL, "RF CHANnel RELease" }, /* 8.4.14 */
+/* 0x2f */ { RSL_MSG_MS_POWER_CONTROL, "MS POWER CONTROL" }, /* 8.4.15 */
+/* 0x30 */ { RSL_MSG_BS_POWER_CONTROL, "BS POWER CONTROL" }, /* 8.4.16 */
+/* 0x31 */ { RSL_MSG_PREPROC_CONFIG, "PREPROCess CONFIGure" }, /* 8.4.17 */
+/* 0x32 */ { RSL_MSG_PREPROC_MEAS_RES, "PREPROCessed MEASurement RESult" }, /* 8.4.18 */
+/* 0x33 */ { RSL_MSG_RF_CHAN_REL_ACK, "RF CHANnel RELease ACKnowledge" }, /* 8.4.19 */
+/* 0x34 */ { RSL_MSG_SACCH_INFO_MODIFY, "SACCH INFO MODIFY" }, /* 8.4.20 */
+/* 0x35 */ { RSL_MSG_TALKER_DET, "TALKER DETection" }, /* 8.4.21 */
+/* 0x36 */ { RSL_MSG_LISTENER_DET, "LISTENER DETection" }, /* 8.4.22 */
+/* 0x37 */ { RSL_MSG_REMOTE_CODEC_CONF_REP, "REMOTE CODEC CONFiguration REPort" }, /* 8.4.23 */
+/* 0x38 */ { RSL_MSG_R_T_D_REP, "Round Trip Delay REPort" }, /* 8.4.24 */
+/* 0x39 */ { RSL_MSG_PRE_HANDO_NOTIF, "PRE-HANDOver NOTIFication" }, /* 8.4.25 */
+/* 0x3a */ { RSL_MSG_MR_CODEC_MOD_REQ, "MultiRate CODEC MODification REQest" }, /* 8.4.26 */
+/* 0x3b */ { RSL_MSG_MR_CODEC_MOD_ACK, "MultiRate CODEC MOD ACKnowledge" }, /* 8.4.27 */
+/* 0x3c */ { RSL_MSG_MR_CODEC_MOD_NACK, "MultiRate CODEC MOD Negative ACKnowledge" }, /* 8.4.28 */
+/* 0x3d */ { RSL_MSG_MR_CODEC_MOD_PER, "MultiRate CODEC MOD PERformed" }, /* 8.4.29 */
+/* 0x3e */ { RSL_MSG_TFO_REP, "TFO REPort" }, /* 8.4.30 */
+/* 0x3f */ { RSL_MSG_TFO_MOD_REQ, "TFO MODification REQuest" }, /* 8.4.31 */
/* 0 1 - - - - - - Location Services messages: */
- { 0x41, "Location Information" }, /* 8.7.1 */
+/* 0x41 */ { 0x41, "Location Information" }, /* 8.7.1 */
/* ip.access */
- { 0x48, "ip.access PDCH ACTIVATION" },
- { 0x49, "ip.access PDCH ACTIVATION ACK" },
- { 0x4a, "ip.access PDCH ACTIVATION NACK" },
- { 0x4b, "ip.access PDCH DEACTIVATION" },
- { 0x4c, "ip.access PDCH DEACTIVATION ACK" },
- { 0x4d, "ip.access PDCH DEACTIVATION NACK" },
- { 0x60, "ip.access MEASurement PREPROCessing DeFauLT" },
- { 0x61, "ip.access HANDOover CANDidate ENQuiry" },
- { 0x62, "ip.access HANDOover CANDidate RESPonse" },
- { 0x70, "ip.access CRCX" },
- { 0x71, "ip.access CRCX ACK" },
- { 0x72, "ip.access CRCX NACK" },
- { 0x73, "ip.access MDCX" },
- { 0x74, "ip.access MDCX ACK" },
- { 0x75, "ip.access MDCX NACK" },
- { 0x76, "ip.access DLCX INDication" },
- { 0x77, "ip.access DLCX" },
- { 0x78, "ip.access DLCX ACK" },
- { 0x79, "ip.access DLCX NACK" },
+ { 0x48, "ip.access PDCH ACTIVATION" },
+ { 0x49, "ip.access PDCH ACTIVATION ACK" },
+ { 0x4a, "ip.access PDCH ACTIVATION NACK" },
+ { 0x4b, "ip.access PDCH DEACTIVATION" },
+ { 0x4c, "ip.access PDCH DEACTIVATION ACK" },
+ { 0x4d, "ip.access PDCH DEACTIVATION NACK" },
+ { 0x60, "ip.access MEASurement PREPROCessing DeFauLT" },
+ { 0x61, "ip.access HANDOover CANDidate ENQuiry" },
+ { 0x62, "ip.access HANDOover CANDidate RESPonse" },
+ { 0x70, "ip.access CRCX" },
+ { 0x71, "ip.access CRCX ACK" },
+ { 0x72, "ip.access CRCX NACK" },
+ { 0x73, "ip.access MDCX" },
+ { 0x74, "ip.access MDCX ACK" },
+ { 0x75, "ip.access MDCX NACK" },
+ { 0x76, "ip.access DLCX INDication" },
+ { 0x77, "ip.access DLCX" },
+ { 0x78, "ip.access DLCX ACK" },
+ { 0x79, "ip.access DLCX NACK" },
{ 0, NULL }
};
static value_string_ext rsl_msg_type_vals_ext = VALUE_STRING_EXT_INIT(rsl_msg_type_vals);
@@ -445,41 +448,47 @@ static value_string_ext rsl_msg_type_vals_ext = VALUE_STRING_EXT_INIT(rsl_msg_ty
#define RSL_IE_ACT_TYPE 3
#define RSL_IE_BS_POW 4
#define RSL_IE_CH_ID 5
+
#define RSL_IE_CH_MODE 6
#define RSL_IE_ENC_INF 7
#define RSL_IE_FRAME_NO 8
#define RSL_IE_HO_REF 9
#define RSL_IE_L1_INF 10
+
#define RSL_IE_L3_INF 11
#define RSL_IE_MS_ID 12
#define RSL_IE_MS_POW 13
#define RSL_IE_PAGING_GRP 14
#define RSL_IE_PAGING_LOAD 15
+
#define RSL_IE_PHY_CTX 16
#define RSL_IE_ACCESS_DELAY 17
#define RSL_IE_RACH_LOAD 18
#define RSL_IE_REQ_REF 19
#define RSL_IE_REL_MODE 20
+
#define RSL_IE_RESOURCE_INF 21
#define RSL_IE_RLM_CAUSE 22
#define RSL_IE_STARTING_TIME 23
#define RSL_IE_TIMING_ADV 24
+
#define RSL_IE_UPLINK_MEAS 25
#define RSL_IE_CAUSE 26
#define RSL_IE_MEAS_RES_NO 27
#define RSL_IE_MESSAGE_ID 28
#define RSL_IE_SYS_INFO_TYPE 30
+#define RSL_IE_MS_POWER_PARAM 31
+#define RSL_IE_BS_POWER_PARAM 32
+#define RSL_IE_PREPROC_PARAM 33
+#define RSL_IE_PREPROC_MEAS 34
-#define RSL_IE_MS_POWER_PARAM 31
-#define RSL_IE_BS_POWER_PARAM 32
-#define RSL_IE_PREPROC_PARAM 33
-#define RSL_IE_PREPROC_MEAS 34
#define RSL_IE_FULL_IMM_ASS_INF 35
#define RSL_IE_SMSCB_INF 36
#define RSL_IE_FULL_MS_TIMING_OFFSET 37
#define RSL_IE_ERR_MSG 38
#define RSL_IE_FULL_BCCH_INF 39
+
#define RSL_IE_CH_NEEDED 40
#define RSL_IE_CB_CMD_TYPE 41
#define RSL_IE_SMSCB_MESS 42
@@ -490,81 +499,84 @@ static value_string_ext rsl_msg_type_vals_ext = VALUE_STRING_EXT_INIT(rsl_msg_ty
#define RSL_IE_GRP_CALL_REF 47
#define RSL_IE_CH_DESC 48
#define RSL_IE_NCH_DRX_INF 49
+
#define RSL_IE_CMD_IND 50
#define RSL_IE_EMLPP_PRIO 51
#define RSL_IE_UIC 52
#define RSL_IE_MAIN_CH_REF 53
#define RSL_IE_MULTIRATE_CONF 54
+
#define RSL_IE_MULTIRATE_CNTRL 55
#define RSL_IE_SUP_CODEC_TYPES 56
#define RSL_IE_CODEC_CONF 57
#define RSL_IE_RTD 58
#define RSL_IE_TFO_STATUS 59
+
#define RSL_IE_LLP_APDU 60
#define RSL_IE_TFO_TRANSP_CONT 61
static const value_string rsl_ie_type_vals[] = {
- { 0x01, "Channel Number" }, /* 9.3.1 */
- { 0x02, "Link Identifier" }, /* 9.3.2 */
- { 0x03, "Activation Type" }, /* 9.3.3 */
- { 0x04, "BS Power" }, /* 9.3.4 */
- { 0x05, "Channel Identification" }, /* 9.3.5 */
- { 0x06, "Channel Mode" }, /* 9.3.6 */
- { 0x07, "Encryption Information" }, /* 9.3.7 */
- { 0x08, "Frame Number" }, /* 9.3.8 */
- { 0x09, "Handover Reference" }, /* 9.3.9 */
- { 0x0a, "L1 Information" }, /* 9.3.10 */
- { 0x0b, "L3 Information" }, /* 9.3.11 */
- { 0x0c, "MS Identity" }, /* 9.3.12 */
- { 0x0d, "MS Power" }, /* 9.3.13 */
- { 0x0e, "Paging Group" }, /* 9.3.14 */
- { 0x0f, "Paging Load" }, /* 9.3.15 */
- { 0x10, "Physical Context" }, /* 9.3.16 */
- { 0x11, "Access Delay" }, /* 9.3.17 */
- { 0x12, "RACH Load" }, /* 9.3.18 */
- { 0x13, "Request Reference" }, /* 9.3.19 */
- { 0x14, "Release Mode" }, /* 9.3.20 */
- { 0x15, "Resource Information" }, /* 9.3.21 */
- { 0x16, "RLM Cause" }, /* 9.3.22 */
- { 0x17, "Starting Time" }, /* 9.3.23 */
- { 0x18, "Timing Advance" }, /* 9.3.24 */
- { 0x19, "Uplink Measurements" }, /* 9.3.25 */
- { 0x1a, "Cause" }, /* 9.3.26 */
- { 0x1b, "Measurement Result Number" }, /* 9.3.27 */
- { 0x1c, "Message Identifier" }, /* 9.3.28 */
- { 0x1d, "reserved" }, /* */
- { 0x1e, "System Info Type" }, /* 9.3.30 */
- { 0x1f, "MS Power Parameters" }, /* 9.3.31 */
- { 0x20, "BS Power Parameters" }, /* 9.3.32 */
- { 0x21, "Pre-processing Parameters" }, /* 9.3.33 */
- { 0x22, "Pre-processed Measurements" }, /* 9.3.34 */
- { 0x23, "reserved" }, /* */
- { 0x24, "SMSCB Information" }, /* 9.3.36 */
- { 0x25, "MS Timing Offset" }, /* 9.3.37 */
- { 0x26, "Erroneous Message" }, /* 9.3.38 */
- { 0x27, "Full BCCH Information" }, /* 9.3.39 */
- { 0x28, "Channel Needed" }, /* 9.3.40 */
- { 0x29, "CB Command type" }, /* 9.3.41 */
- { 0x2a, "SMSCB Message" }, /* 9.3.42 */
- { 0x2b, "Full Immediate Assign Info" }, /* 9.3.35 */
- { 0x2c, "SACCH Information" }, /* 9.3.29 */
- { 0x2d, "CBCH Load Information" }, /* 9.3.43 */
- { 0x2e, "SMSCB Channel Indicator" }, /* 9.3.44 */
- { 0x2f, "Group Call Reference" }, /* 9.3.45 */
- { 0x30, "Channel Description" }, /* 9.3.46 */
- { 0x31, "NCH DRX Information" }, /* 9.3.47 */
- { 0x32, "Command Indicator" }, /* 9.3.48 */
- { 0x33, "eMLPP Priority" }, /* 9.3.49 */
- { 0x34, "UIC" }, /* 9.3.50 */
- { 0x35, "Main Channel Reference" }, /* 9.3.51 */
- { 0x36, "MultiRate Configuration" }, /* 9.3.52 */
- { 0x37, "MultiRate Control" }, /* 9.3.53 */
- { 0x38, "Supported Codec Types" }, /* 9.3.54 */
- { 0x39, "Codec Configuration" }, /* 9.3.55 */
- { 0x3a, "Round Trip Delay" }, /* 9.3.56 */
- { 0x3b, "TFO Status" }, /* 9.3.57 */
- { 0x3c, "LLP APDU" }, /* 9.3.58 */
- { 0x3d, "TFO Transparent Container" }, /* 9.3.59 */
+/* 0x01 */ { RSL_IE_CH_NO, "Channel Number" }, /* 9.3.1 */
+/* 0x02 */ { RSL_IE_LINK_ID, "Link Identifier" }, /* 9.3.2 */
+/* 0x03 */ { RSL_IE_ACT_TYPE, "Activation Type" }, /* 9.3.3 */
+/* 0x04 */ { RSL_IE_BS_POW, "BS Power" }, /* 9.3.4 */
+/* 0x05 */ { RSL_IE_CH_ID, "Channel Identification" }, /* 9.3.5 */
+/* 0x06 */ { RSL_IE_ENC_INF, "Channel Mode" }, /* 9.3.6 */
+/* 0x07 */ { RSL_IE_ENC_INF, "Encryption Information" }, /* 9.3.7 */
+/* 0x08 */ { RSL_IE_FRAME_NO, "Frame Number" }, /* 9.3.8 */
+/* 0x09 */ { RSL_IE_HO_REF, "Handover Reference" }, /* 9.3.9 */
+/* 0x0a */ { RSL_IE_L1_INF, "L1 Information" }, /* 9.3.10 */
+/* 0x0b */ { RSL_IE_L3_INF, "L3 Information" }, /* 9.3.11 */
+/* 0x0c */ { RSL_IE_MS_ID, "MS Identity" }, /* 9.3.12 */
+/* 0x0d */ { RSL_IE_MS_POW, "MS Power" }, /* 9.3.13 */
+/* 0x0e */ { RSL_IE_PAGING_GRP, "Paging Group" }, /* 9.3.14 */
+/* 0x0f */ { RSL_IE_PAGING_LOAD, "Paging Load" }, /* 9.3.15 */
+/* 0x10 */ { RSL_IE_PHY_CTX, "Physical Context" }, /* 9.3.16 */
+/* 0x11 */ { RSL_IE_ACCESS_DELAY, "Access Delay" }, /* 9.3.17 */
+/* 0x12 */ { RSL_IE_RACH_LOAD, "RACH Load" }, /* 9.3.18 */
+/* 0x12 */ { RSL_IE_REQ_REF, "Request Reference" }, /* 9.3.19 */
+/* 0x14 */ { RSL_IE_REL_MODE, "Release Mode" }, /* 9.3.20 */
+/* 0x15 */ { RSL_IE_RESOURCE_INF, "Resource Information" }, /* 9.3.21 */
+/* 0x16 */ { RSL_IE_RLM_CAUSE, "RLM Cause" }, /* 9.3.22 */
+/* 0x17 */ { RSL_IE_STARTING_TIME, "Starting Time" }, /* 9.3.23 */
+/* 0x18 */ { RSL_IE_TIMING_ADV, "Timing Advance" }, /* 9.3.24 */
+/* 0x19 */ { RSL_IE_UPLINK_MEAS, "Uplink Measurements" }, /* 9.3.25 */
+/* 0x1a */ { RSL_IE_CAUSE, "Cause" }, /* 9.3.26 */
+/* 0x1b */ { RSL_IE_MEAS_RES_NO, "Measurement Result Number" }, /* 9.3.27 */
+/* 0x1c */ { RSL_IE_MESSAGE_ID, "Message Identifier" }, /* 9.3.28 */
+/* 0x1d */ { 0x1d, "reserved" }, /* */
+/* 0x1e */ { RSL_IE_SYS_INFO_TYPE, "System Info Type" }, /* 9.3.30 */
+/* 0x1f */ { RSL_IE_MS_POWER_PARAM, "MS Power Parameters" }, /* 9.3.31 */
+/* 0x20 */ { RSL_IE_BS_POWER_PARAM, "BS Power Parameters" }, /* 9.3.32 */
+/* 0x21 */ { RSL_IE_PREPROC_PARAM, "Pre-processing Parameters" }, /* 9.3.33 */
+/* 0x22 */ { RSL_IE_PREPROC_MEAS, "Pre-processed Measurements" }, /* 9.3.34 */
+/* 0x23 */ { 0x23, "reserved" }, /* */
+/* 0x24 */ { RSL_IE_SMSCB_INF, "SMSCB Information" }, /* 9.3.36 */
+/* 0x25 */ { RSL_IE_FULL_MS_TIMING_OFFSET, "MS Timing Offset" }, /* 9.3.37 */
+/* 0x26 */ { RSL_IE_ERR_MSG, "Erroneous Message" }, /* 9.3.38 */
+/* 0x27 */ { RSL_IE_FULL_BCCH_INF, "Full BCCH Information" }, /* 9.3.39 */
+/* 0x28 */ { RSL_IE_CH_NEEDED, "Channel Needed" }, /* 9.3.40 */
+/* 0x29 */ { RSL_IE_CB_CMD_TYPE, "CB Command type" }, /* 9.3.41 */
+/* 0x2a */ { RSL_IE_SMSCB_MESS, "SMSCB Message" }, /* 9.3.42 */
+/* 0x2b */ { RSL_IE_CBCH_LOAD_INF, "Full Immediate Assign Info" }, /* 9.3.35 */
+/* 0x2c */ { 0x2c, "SACCH Information" }, /* 9.3.29 */
+/* 0x2d */ { 0x2d, "CBCH Load Information" }, /* 9.3.43 */
+/* 0x2e */ { RSL_IE_SMSCB_CH_IND, "SMSCB Channel Indicator" }, /* 9.3.44 */
+/* 0x2f */ { RSL_IE_GRP_CALL_REF, "Group Call Reference" }, /* 9.3.45 */
+/* 0x30 */ { RSL_IE_CH_DESC, "Channel Description" }, /* 9.3.46 */
+/* 0x31 */ { RSL_IE_NCH_DRX_INF, "NCH DRX Information" }, /* 9.3.47 */
+/* 0x32 */ { RSL_IE_CMD_IND, "Command Indicator" }, /* 9.3.48 */
+/* 0x33 */ { RSL_IE_EMLPP_PRIO, "eMLPP Priority" }, /* 9.3.49 */
+/* 0x34 */ { RSL_IE_UIC, "UIC" }, /* 9.3.50 */
+/* 0x35 */ { RSL_IE_MAIN_CH_REF, "Main Channel Reference" }, /* 9.3.51 */
+/* 0x36 */ { RSL_IE_MULTIRATE_CONF, "MultiRate Configuration" }, /* 9.3.52 */
+/* 0x37 */ { RSL_IE_MULTIRATE_CNTRL, "MultiRate Control" }, /* 9.3.53 */
+/* 0x38 */ { RSL_IE_SUP_CODEC_TYPES, "Supported Codec Types" }, /* 9.3.54 */
+/* 0x39 */ { RSL_IE_CODEC_CONF, "Codec Configuration" }, /* 9.3.55 */
+/* 0x3a */ { RSL_IE_RTD, "Round Trip Delay" }, /* 9.3.56 */
+/* 0x3b */ { RSL_IE_TFO_STATUS, "TFO Status" }, /* 9.3.57 */
+/* 0x3c */ { RSL_IE_LLP_APDU, "LLP APDU" }, /* 9.3.58 */
+/* 0x3d */ { RSL_IE_TFO_TRANSP_CONT, "TFO Transparent Container" }, /* 9.3.59 */
/*
0 0 1 1 1 1 1 0
to
@@ -577,25 +589,25 @@ static const value_string rsl_ie_type_vals[] = {
Not used
*/
- { 0xe0, "SRTP Configuration" },
- { 0xe1, "BSC Proxy UDP Port" },
- { 0xe2, "BSC Multiplex Timeout" },
- { 0xf0, "Remote IP Address" },
- { 0xf1, "Remote RTP Port" },
- { 0xf2, "RTP Payload Type" },
- { 0xf3, "Local RTP Port" },
- { 0xf4, "Speech Mode" },
- { 0xf5, "Local IP Address" },
- { 0xf6, "Connection Statistics" },
- { 0xf7, "Handover C Parameters" },
- { 0xf8, "Connection Identifier" },
- { 0xf9, "RTP CSD Format" },
- { 0xfa, "RTP Jitter Buffer" },
- { 0xfb, "RTP Compression" },
- { 0xfc, "RTP Payload Type 2" },
- { 0xfd, "RTP Multiplex" },
- { 0xfe, "RTP Multiplex Identifier" },
- { 0, NULL }
+/* 0xe0 */ { 0xe0, "SRTP Configuration" },
+/* 0xe1 */ { 0xe1, "BSC Proxy UDP Port" },
+/* 0xe2 */ { 0xe2, "BSC Multiplex Timeout" },
+/* 0xf0 */ { 0xf0, "Remote IP Address" },
+/* 0xf1 */ { 0xf1, "Remote RTP Port" },
+/* 0xf2 */ { 0xf2, "RTP Payload Type" },
+/* 0xf3 */ { 0xf3, "Local RTP Port" },
+/* 0xf4 */ { 0xf4, "Speech Mode" },
+/* 0xf5 */ { 0xf5, "Local IP Address" },
+/* 0xf6 */ { 0xf6, "Connection Statistics" },
+/* 0xf7 */ { 0xf7, "Handover C Parameters" },
+/* 0xf8 */ { 0xf8, "Connection Identifier" },
+/* 0xf9 */ { 0xf9, "RTP CSD Format" },
+/* 0xfa */ { 0xfa, "RTP Jitter Buffer" },
+/* 0xfb */ { 0xfb, "RTP Compression" },
+/* 0xfc */ { 0xfc, "RTP Payload Type 2" },
+/* 0xfd */ { 0xfd, "RTP Multiplex" },
+/* 0xfe */ { 0xfe, "RTP Multiplex Identifier" },
+ { 0, NULL }
};
static value_string_ext rsl_ie_type_vals_ext = VALUE_STRING_EXT_INIT(rsl_ie_type_vals);
@@ -635,21 +647,21 @@ static value_string_ext rsl_ch_no_Cbits_vals_ext = VALUE_STRING_EXT_INIT(rsl_ch_
/* From openbsc/include/openbsc/tlv.h */
enum tlv_type {
- TLV_TYPE_UNKNOWN,
- TLV_TYPE_FIXED,
- TLV_TYPE_T,
- TLV_TYPE_TV,
- TLV_TYPE_TLV,
- TLV_TYPE_TL16V,
+ TLV_TYPE_UNKNOWN,
+ TLV_TYPE_FIXED,
+ TLV_TYPE_T,
+ TLV_TYPE_TV,
+ TLV_TYPE_TLV,
+ TLV_TYPE_TL16V,
};
struct tlv_def {
- enum tlv_type type;
- guint8 fixed_len;
+ enum tlv_type type;
+ guint8 fixed_len;
};
struct tlv_definition {
- struct tlv_def def[0xff];
+ struct tlv_def def[0xff];
};
/* This structure is initialized in proto_register_rsl() */
@@ -661,9 +673,9 @@ dissect_rsl_ie_ch_no(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, in
{
proto_item *ti;
proto_tree *ie_tree;
- guint8 ie_id;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_CH_NO)
return offset;
@@ -707,10 +719,10 @@ dissect_rsl_ie_link_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
{
proto_item *ti;
proto_tree *ie_tree;
- guint8 octet;
- guint8 ie_id;
+ guint8 octet;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_LINK_ID)
return offset;
@@ -725,10 +737,11 @@ dissect_rsl_ie_link_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
octet = tvb_get_guint8(tvb,offset);
- if((octet&0x20) == 0x20){
+ if ((octet & 0x20) == 0x20) {
/* Not applicable */
proto_tree_add_item(ie_tree, hf_rsl_na, tvb, offset, 1, ENC_BIG_ENDIAN);
- return offset++;
+ offset++;
+ return offset;
}
/* channel type */
proto_tree_add_item(ie_tree, hf_rsl_ch_type, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -780,10 +793,10 @@ dissect_rsl_ie_act_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
{
proto_item *ti;
proto_tree *ie_tree;
- guint8 ie_id;
- guint octet;
+ guint8 ie_id;
+ guint octet;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_ACT_TYPE)
return offset;
@@ -803,9 +816,9 @@ dissect_rsl_ie_act_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
/* The A-bits indicate the type of activation, which defines the access procedure
* and the operation of the data link layer
*/
- octet = (tvb_get_guint8(tvb,offset) & 0x06)>>1;
+ octet = (tvb_get_guint8(tvb,offset) & 0x06) >> 1;
proto_tree_add_item(ie_tree, hf_rsl_a3a2, tvb, offset, 1, ENC_BIG_ENDIAN);
- switch(octet){
+ switch (octet) {
case 0:
/* Activation related to intra-cell channel change */
proto_tree_add_item(ie_tree, hf_rsl_a1_0, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -865,9 +878,9 @@ dissect_rsl_ie_bs_power(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
{
proto_item *ti;
proto_tree *ie_tree;
- guint8 ie_id;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_BS_POW)
return offset;
@@ -903,11 +916,11 @@ dissect_rsl_ie_ch_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, in
{
proto_item *ti;
proto_tree *ie_tree;
- guint8 length;
- int ie_offset;
- guint8 ie_id;
+ guint8 length;
+ int ie_offset;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_CH_ID)
return offset;
@@ -934,7 +947,7 @@ dissect_rsl_ie_ch_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, in
*/
proto_tree_add_text(ie_tree, tvb,offset, 1, "Channel Description Tag");
de_rr_ch_dsc(tvb, ie_tree, pinfo, offset+1, length, NULL, 0);
- offset+=4;
+ offset += 4;
/*
* The 3GPP TS 24.008 "Mobile Allocation" shall for compatibility reasons be
* included but empty, i.e. the length shall be zero.
@@ -961,9 +974,9 @@ static const value_string rsl_ch_rate_and_type_vals[] = {
{ 0x08, "Full rate TCH channel Bm" },
{ 0x09, "Half rate TCH channel Lm" },
{ 0x0a, "Full rate TCH channel bi-directional Bm, Multislot configuration" },
- { 0x1a, "Full rate TCH channel uni-directional downlink Bm, Multislot configuration" },
{ 0x18, "Full rate TCH channel Bm Group call channel" },
{ 0x19, "Half rate TCH channel Lm Group call channel" },
+ { 0x1a, "Full rate TCH channel uni-directional downlink Bm, Multislot configuration" },
{ 0x28, "Full rate TCH channel Bm Broadcast call channel" },
{ 0x29, "PHalf rate TCH channel Lm Broadcast call channel" },
{ 0, NULL }
@@ -1018,12 +1031,12 @@ dissect_rsl_ie_ch_mode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
{
proto_item *ti;
proto_tree *ie_tree;
- guint8 length;
- int ie_offset;
- guint8 ie_id;
- guint8 octet;
+ guint8 length;
+ int ie_offset;
+ guint8 ie_id;
+ guint8 octet;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_CH_MODE)
return offset;
@@ -1057,7 +1070,7 @@ dissect_rsl_ie_ch_mode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
proto_tree_add_item(ie_tree, hf_rsl_ch_rate_and_type, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
/* Speech coding algor./data rate + transp ind */
- switch(octet){
+ switch (octet) {
case 1:
/* Speech */
proto_tree_add_item(ie_tree, hf_rsl_speech_coding_alg, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1067,7 +1080,7 @@ dissect_rsl_ie_ch_mode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
proto_tree_add_item(ie_tree, hf_rsl_extension_bit, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(ie_tree, hf_rsl_t_nt_bit, tvb, offset, 1, ENC_BIG_ENDIAN);
octet = tvb_get_guint8(tvb,offset);
- if ((octet&0x40)==0x40){
+ if ((octet & 0x40) == 0x40) {
/* Non-transparent service */
/* For the non-transparent service, bits 6 to 1 indicate the radio interface data rate:*/
proto_tree_add_item(ie_tree, hf_rsl_ra_if_data_rte, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1117,10 +1130,10 @@ dissect_rsl_ie_enc_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
{
proto_item *ti;
proto_tree *ie_tree;
- guint8 length;
- guint8 ie_id;
+ guint8 length;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_ENC_INF)
return offset;
@@ -1155,9 +1168,9 @@ dissect_rsl_ie_frame_no(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
{
proto_item *ti;
proto_tree *ie_tree;
- guint8 ie_id;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_FRAME_NO)
return offset;
@@ -1187,9 +1200,9 @@ dissect_rsl_ie_ho_ref(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, i
{
proto_item *ti;
proto_tree *ie_tree;
- guint8 ie_id;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_HO_REF)
return offset;
@@ -1218,9 +1231,9 @@ dissect_rsl_ie_l1_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, i
{
proto_item *ti;
proto_tree *ie_tree;
- guint8 ie_id;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_L1_INF)
return offset;
@@ -1266,11 +1279,11 @@ dissect_rsl_ie_L3_inf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int o
{
proto_item *ti;
proto_tree *ie_tree;
- tvbuff_t *next_tvb;
- guint16 length;
- guint8 ie_id;
+ tvbuff_t *next_tvb;
+ guint16 length;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_L3_INF)
return offset;
@@ -1325,10 +1338,10 @@ dissect_rsl_ie_ms_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int of
{
proto_item *ti;
proto_tree *ie_tree;
- guint length;
- guint8 ie_id;
+ guint length;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_MS_ID)
return offset;
@@ -1364,9 +1377,9 @@ dissect_rsl_ie_ms_pow(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, i
{
proto_item *ti;
proto_tree *ie_tree;
- guint8 ie_id;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_MS_POW)
return offset;
@@ -1397,9 +1410,9 @@ dissect_rsl_ie_paging_grp(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
{
proto_item *ti;
proto_tree *ie_tree;
- guint8 ie_id;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_PAGING_GRP)
return offset;
@@ -1429,9 +1442,9 @@ dissect_rsl_ie_paging_load(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
{
proto_item *ti;
proto_tree *ie_tree;
- guint8 ie_id;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_PAGING_LOAD)
return offset;
@@ -1460,10 +1473,10 @@ dissect_rsl_ie_phy_ctx(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
{
proto_item *ti;
proto_tree *ie_tree;
- guint length;
- guint8 ie_id;
+ guint length;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_PHY_CTX)
return offset;
@@ -1500,9 +1513,9 @@ dissect_rsl_ie_access_delay(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
{
proto_item *ti;
proto_tree *ie_tree;
- guint8 ie_id;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_ACCESS_DELAY)
return offset;
@@ -1528,11 +1541,11 @@ dissect_rsl_ie_rach_load(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
{
proto_item *ti;
proto_tree *ie_tree;
- guint length;
- guint8 ie_id;
- int ie_offset;
+ guint length;
+ guint8 ie_id;
+ int ie_offset;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_RACH_LOAD)
return offset;
@@ -1570,7 +1583,7 @@ dissect_rsl_ie_rach_load(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
length = length -2;
/* Supplementary Information */
- if( length > 0){
+ if ( length > 0) {
proto_tree_add_text(ie_tree, tvb, offset,length ,"Supplementary Information");
}
offset = ie_offset + length;
@@ -1586,9 +1599,9 @@ dissect_rsl_ie_req_ref(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
{
proto_item *ti;
proto_tree *ie_tree;
- guint8 ie_id;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_REQ_REF)
return offset;
@@ -1624,9 +1637,9 @@ dissect_rsl_ie_rel_mode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
{
proto_item *ti;
proto_tree *ie_tree;
- guint8 ie_id;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_REL_MODE)
return offset;
@@ -1677,11 +1690,11 @@ dissect_rsl_ie_resource_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
{
proto_item *ti;
proto_tree *ie_tree;
- guint8 ie_id;
+ guint8 ie_id;
guint length;
- int ie_offset;
+ int ie_offset;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_RESOURCE_INF)
return offset;
@@ -1703,7 +1716,7 @@ dissect_rsl_ie_resource_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
ie_offset = offset;
- while (length > 0){
+ while (length > 0) {
proto_tree_add_item(ie_tree, hf_rsl_ch_no_Cbits, tvb, offset, 1, ENC_BIG_ENDIAN);
/* TN is time slot number, binary represented as in 3GPP TS 45.002.
* 3 Bits
@@ -1732,10 +1745,10 @@ dissect_rsl_ie_rlm_cause(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
proto_tree *ie_tree;
guint length;
- /* guint8 octet; */
- guint8 ie_id;
+ /* guint8 octet; */
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_RLM_CAUSE)
return offset;
@@ -1774,9 +1787,9 @@ dissect_rsl_ie_starting_time(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
{
proto_item *ti;
proto_tree *ie_tree;
- guint8 ie_id;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_STARTING_TIME)
return offset;
@@ -1806,9 +1819,9 @@ dissect_rsl_ie_timing_adv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
{
proto_item *ti;
proto_tree *ie_tree;
- guint8 ie_id;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_TIMING_ADV)
return offset;
@@ -1842,9 +1855,9 @@ dissect_rsl_ie_uplik_meas(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
proto_tree *ie_tree;
guint length;
int ie_offset;
- guint8 ie_id;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_UPLINK_MEAS)
return offset;
@@ -1916,9 +1929,9 @@ dissect_rsl_ie_cause(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, in
guint length;
guint8 octet;
int ie_offset;
- guint8 ie_id;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_CAUSE)
return offset;
@@ -1957,9 +1970,9 @@ dissect_rsl_ie_meas_res_no(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
{
proto_item *ti;
proto_tree *ie_tree;
- guint8 ie_id;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_MEAS_RES_NO)
return offset;
@@ -1986,9 +1999,9 @@ dissect_rsl_ie_message_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
{
proto_item *ti;
proto_tree *ie_tree;
- guint8 ie_id;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_MESSAGE_ID)
return offset;
@@ -2024,14 +2037,14 @@ static const value_string rsl_sys_info_type_vals[] = {
{ 0x0d, "SYSTEM INFORMATION 5bis" },
{ 0x0e, "SYSTEM INFORMATION 5ter" },
{ 0x0f, "SYSTEM INFORMATION 10" },
- { 0x47, "EXTENDED MEASUREMENT ORDER" },
- { 0x48, "MEASUREMENT INFORMATION" },
{ 0x28, "SYSTEM INFORMATION 13" },
{ 0x29, "SYSTEM INFORMATION 2quater" },
{ 0x2a, "SYSTEM INFORMATION 9" },
{ 0x2b, "SYSTEM INFORMATION 18" },
{ 0x2c, "SYSTEM INFORMATION 19" },
{ 0x2d, "SYSTEM INFORMATION 20" },
+ { 0x47, "EXTENDED MEASUREMENT ORDER" },
+ { 0x48, "MEASUREMENT INFORMATION" },
{ 0, NULL }
};
static value_string_ext rsl_sys_info_type_vals_ext = VALUE_STRING_EXT_INIT(rsl_sys_info_type_vals);
@@ -2042,9 +2055,9 @@ dissect_rsl_ie_sys_info_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
{
proto_item *ti;
proto_tree *ie_tree;
- guint8 ie_id;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_SYS_INFO_TYPE)
return offset;
@@ -2076,7 +2089,7 @@ dissect_rsl_ie_full_imm_ass_inf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
tvbuff_t *next_tvb;
guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_FULL_IMM_ASS_INF)
return offset;
@@ -2119,12 +2132,12 @@ dissect_rsl_ie_smscb_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
{
proto_item *ti;
proto_tree *ie_tree;
- tvbuff_t *next_tvb;
+ tvbuff_t *next_tvb;
guint length;
guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_SMSCB_INF)
return offset;
@@ -2164,7 +2177,7 @@ dissect_rsl_ie_ms_timing_offset(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
proto_tree *ie_tree;
guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_FULL_MS_TIMING_OFFSET)
return offset;
@@ -2201,7 +2214,7 @@ dissect_rsl_ie_err_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
guint length;
guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_ERR_MSG)
return offset;
@@ -2234,11 +2247,11 @@ dissect_rsl_ie_full_bcch_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
{
proto_item *ti;
proto_tree *ie_tree;
- tvbuff_t *next_tvb;
- guint16 length;
- guint8 ie_id;
+ tvbuff_t *next_tvb;
+ guint16 length;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_FULL_BCCH_INF)
return offset;
@@ -2287,7 +2300,7 @@ dissect_rsl_ie_ch_needed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
proto_tree *ie_tree;
guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_CH_NEEDED)
return offset;
@@ -2317,7 +2330,7 @@ dissect_rsl_ie_cb_cmd_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
proto_tree *ie_tree;
guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_CB_CMD_TYPE)
return offset;
@@ -2346,12 +2359,12 @@ dissect_rsl_ie_smscb_mess(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
{
proto_item *ti;
proto_tree *ie_tree;
- tvbuff_t *next_tvb;
- guint length;
- guint8 ie_id;
- int ie_offset;
+ tvbuff_t *next_tvb;
+ guint length;
+ guint8 ie_id;
+ int ie_offset;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_SMSCB_MESS)
return offset;
@@ -2398,7 +2411,7 @@ dissect_rsl_ie_cbch_load_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
guint8 ie_id;
guint8 octet;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_CBCH_LOAD_INF)
return offset;
@@ -2418,7 +2431,7 @@ dissect_rsl_ie_cbch_load_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
/* Message Slot Count */
item = proto_tree_add_item(ie_tree, hf_rsl_msg_slt_cnt, tvb, offset, 1, ENC_BIG_ENDIAN);
- if ((octet & 0x80) == 0x80){
+ if ((octet & 0x80) == 0x80) {
proto_item_append_text(item,"The amount of SMSCB messages (1 to 15) that are needed immediately by BTS");
}else{
proto_item_append_text(item,"The amount of delay in message slots (1 to 15) that is needed immediately by BTS");
@@ -2445,7 +2458,7 @@ dissect_rsl_ie_smscb_ch_ind(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
proto_tree *ie_tree;
guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_SMSCB_CH_IND)
return offset;
@@ -2474,10 +2487,10 @@ dissect_rsl_ie_grp_call_ref(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
{
proto_item *ti;
proto_tree *ie_tree;
- guint length;
- guint8 ie_id;
+ guint length;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_GRP_CALL_REF)
return offset;
@@ -2514,10 +2527,10 @@ dissect_rsl_ie_ch_desc(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
{
proto_item *ti;
proto_tree *ie_tree;
- guint length;
- guint8 ie_id;
+ guint length;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_CH_DESC)
return offset;
@@ -2557,7 +2570,7 @@ dissect_rsl_ie_nch_drx(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
proto_tree *ie_tree;
guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_NCH_DRX_INF)
return offset;
@@ -2595,7 +2608,7 @@ dissect_rsl_ie_cmd_ind(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
guint8 ie_id;
guint8 octet;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_CMD_IND)
return offset;
@@ -2616,7 +2629,7 @@ dissect_rsl_ie_cmd_ind(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
/* TODO this should probably be add_uint instead!!! */
octet = tvb_get_guint8(tvb,offset);
- if ((octet&0x80)==0x80){
+ if ((octet & 0x80) == 0x80) {
/* extended */
/* Command Extension */
proto_tree_add_item(ie_tree, hf_rsl_command, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -2651,7 +2664,7 @@ dissect_rsl_ie_emlpp_prio(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
proto_tree *ie_tree;
guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_EMLPP_PRIO)
return offset;
@@ -2685,7 +2698,7 @@ dissect_rsl_ie_uic(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int
proto_tree *ie_tree;
guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_UIC)
return offset;
@@ -2718,7 +2731,7 @@ dissect_rsl_ie_main_ch_ref(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
proto_tree *ie_tree;
guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_MAIN_CH_REF)
return offset;
@@ -2748,10 +2761,10 @@ dissect_rsl_ie_multirate_conf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
{
proto_item *ti;
proto_tree *ie_tree;
- guint length;
- guint8 ie_id;
+ guint length;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_MULTIRATE_CONF)
return offset;
@@ -2787,9 +2800,9 @@ dissect_rsl_ie_multirate_cntrl(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
{
proto_item *ti;
proto_tree *ie_tree;
- guint8 ie_id;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_MULTIRATE_CNTRL)
return offset;
@@ -2821,10 +2834,10 @@ dissect_rsl_ie_sup_codec_types(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
{
proto_item *ti;
proto_tree *ie_tree;
- guint length;
- guint8 ie_id;
+ guint length;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_SUP_CODEC_TYPES)
return offset;
@@ -2889,10 +2902,10 @@ dissect_rsl_ie_codec_conf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
{
proto_item *ti;
proto_tree *ie_tree;
- guint length;
- guint8 ie_id;
+ guint length;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_CODEC_CONF)
return offset;
@@ -2933,7 +2946,7 @@ dissect_rsl_ie_rtd(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int
guint8 ie_id;
guint8 rtd;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_RTD)
return offset;
@@ -2978,7 +2991,7 @@ dissect_rsl_ie_tfo_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
proto_tree *ie_tree;
guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_TFO_STATUS)
return offset;
@@ -3004,11 +3017,11 @@ dissect_rsl_ie_llp_apdu(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
{
proto_item *ti;
proto_tree *ie_tree;
- guint8 length;
- int ie_offset;
- guint8 ie_id;
+ guint8 length;
+ int ie_offset;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_LLP_APDU)
return offset;
@@ -3050,11 +3063,11 @@ dissect_rsl_ie_tfo_transp_cont(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
{
proto_item *ti;
proto_tree *ie_tree;
- guint8 length;
- int ie_offset;
- guint8 ie_id;
+ guint8 length;
+ int ie_offset;
+ guint8 ie_id;
- if(is_mandatory == FALSE){
+ if (is_mandatory == FALSE) {
ie_id = tvb_get_guint8(tvb,offset);
if (ie_id != RSL_IE_TFO_TRANSP_CONT)
return offset;
@@ -3085,147 +3098,141 @@ dissect_rsl_ie_tfo_transp_cont(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
}
static int
-dissct_rsl_ipaccess_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+dissct_rsl_ipaccess_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
- guint8 msg_type;
- guint32 local_addr = 0;
- guint16 local_port = 0;
- address src_addr;
-
- msg_type = tvb_get_guint8(tvb, offset)&0x7f;
- offset++;
-
- /* parse TLV attributes */
- while (tvb_reported_length_remaining(tvb, offset) > 0) {
- guint8 tag;
- unsigned int len, hlen, len_len;
- const struct tlv_def *tdef;
- proto_item *ti;
- proto_tree *ie_tree;
-
- tag = tvb_get_guint8(tvb, offset);
- tdef = &rsl_att_tlvdef.def[tag];
-
- switch (tdef->type) {
- case TLV_TYPE_FIXED:
- hlen = 1;
- len_len = 0;
- len = tdef->fixed_len;
- break;
- case TLV_TYPE_T:
- hlen = 1;
- len_len = 0;
- len = 0;
- break;
- case TLV_TYPE_TV:
- hlen = 1;
- len_len = 0;
- len = 1;
- break;
- case TLV_TYPE_TLV:
- hlen = 2;
- len_len = 1;
- len = tvb_get_guint8(tvb, offset+1);
- break;
- case TLV_TYPE_TL16V:
- hlen = 3;
- len_len = 2;
- len = tvb_get_guint8(tvb, offset+1) << 8 |
- tvb_get_guint8(tvb, offset+2);
- break;
- case TLV_TYPE_UNKNOWN:
- default:
- hlen = len_len = len = 0;
- DISSECTOR_ASSERT_NOT_REACHED();
- break;
- }
-
- ti = proto_tree_add_item(tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
- ie_tree = proto_item_add_subtree(ti, ett_ie_local_port);
- offset += hlen;
-
- switch (tag) {
- case RSL_IE_CH_NO:
- dissect_rsl_ie_ch_no(tvb, pinfo, ie_tree, offset, FALSE);
- break;
- case RSL_IE_FRAME_NO:
- dissect_rsl_ie_frame_no(tvb, pinfo, ie_tree, offset, FALSE);
- break;
- case RSL_IE_MS_POW:
- dissect_rsl_ie_ms_pow(tvb, pinfo, ie_tree, offset, FALSE);
- break;
- case RSL_IE_IPAC_REMOTE_IP:
- proto_tree_add_item(ie_tree, hf_rsl_remote_ip, tvb,
- offset, len, ENC_BIG_ENDIAN);
- break;
- case RSL_IE_IPAC_REMOTE_PORT:
- proto_tree_add_item(ie_tree, hf_rsl_remote_port, tvb,
- offset, len, ENC_BIG_ENDIAN);
- break;
- case RSL_IE_IPAC_LOCAL_IP:
- proto_tree_add_item(ie_tree, hf_rsl_local_ip, tvb,
- offset, len, ENC_BIG_ENDIAN);
- local_addr = tvb_get_ipv4(tvb, offset);
- break;
- case RSL_IE_IPAC_LOCAL_PORT:
- proto_tree_add_item(ie_tree, hf_rsl_local_port, tvb,
- offset, len, ENC_BIG_ENDIAN);
- local_port = tvb_get_ntohs(tvb, offset);
- break;
- case RSL_IE_IPAC_SPEECH_MODE:
- proto_tree_add_item(ie_tree, hf_rsl_speech_mode_s, tvb,
- offset, len, ENC_BIG_ENDIAN);
- proto_tree_add_item(ie_tree, hf_rsl_speech_mode_m, tvb,
- offset, len, ENC_BIG_ENDIAN);
- break;
- case RSL_IE_IPAC_RTP_PAYLOAD:
- case RSL_IE_IPAC_RTP_PAYLOAD2:
- proto_tree_add_item(ie_tree, hf_rsl_rtp_payload, tvb,
- offset, len, ENC_BIG_ENDIAN);
- break;
- case RSL_IE_IPAC_RTP_CSD_FMT:
- proto_tree_add_item(ie_tree, hf_rsl_rtp_csd_fmt_d, tvb,
- offset, len, ENC_BIG_ENDIAN);
- proto_tree_add_item(ie_tree, hf_rsl_rtp_csd_fmt_ir, tvb,
- offset, len, ENC_BIG_ENDIAN);
- break;
- case RSL_IE_IPAC_CONN_ID:
- proto_tree_add_item(ie_tree, hf_rsl_conn_id, tvb,
- offset, len, ENC_BIG_ENDIAN);
- break;
- case RSL_IE_IPAC_CONN_STAT:
- proto_tree_add_item(ie_tree, hf_rsl_cstat_tx_pkts, tvb,
- offset, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(ie_tree, hf_rsl_cstat_tx_octs, tvb,
- offset+4, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(ie_tree, hf_rsl_cstat_rx_pkts, tvb,
- offset+8, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(ie_tree, hf_rsl_cstat_rx_octs, tvb,
- offset+12, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(ie_tree, hf_rsl_cstat_lost_pkts, tvb,
- offset+16, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(ie_tree, hf_rsl_cstat_ia_jitter, tvb,
- offset+20, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(ie_tree, hf_rsl_cstat_avg_tx_dly, tvb,
- offset+24, 4, ENC_BIG_ENDIAN);
- break;
- }
- offset += len;
- }
+ guint8 msg_type;
+ guint32 local_addr = 0;
+ guint16 local_port = 0;
+ address src_addr;
- switch (msg_type) {
- case RSL_MSG_TYPE_IPAC_CRCX_ACK:
- /* Notify the RTP and RTCP dissectors about a new RTP stream */
- src_addr.type = AT_IPv4;
- src_addr.len = 4;
- src_addr.data = (guint8 *)&local_addr;
- rtp_add_address(pinfo, &src_addr, local_port, 0,
- "GSM A-bis/IP", pinfo->fd->num, 0, NULL);
- rtcp_add_address(pinfo, &src_addr, local_port+1, 0,
- "GSM A-bis/IP", pinfo->fd->num);
- break;
- }
- return offset;
+ msg_type = tvb_get_guint8(tvb, offset) & 0x7f;
+ offset++;
+
+ /* parse TLV attributes */
+ while (tvb_reported_length_remaining(tvb, offset) > 0) {
+ guint8 tag;
+ unsigned int len, hlen;
+ const struct tlv_def *tdef;
+ proto_item *ti;
+ proto_tree *ie_tree;
+
+ tag = tvb_get_guint8(tvb, offset);
+ tdef = &rsl_att_tlvdef.def[tag];
+
+ switch (tdef->type) {
+ case TLV_TYPE_FIXED:
+ hlen = 1;
+ len = tdef->fixed_len;
+ break;
+ case TLV_TYPE_T:
+ hlen = 1;
+ len = 0;
+ break;
+ case TLV_TYPE_TV:
+ hlen = 1;
+ len = 1;
+ break;
+ case TLV_TYPE_TLV:
+ hlen = 2;
+ len = tvb_get_guint8(tvb, offset+1);
+ break;
+ case TLV_TYPE_TL16V:
+ hlen = 3;
+ len = tvb_get_guint8(tvb, offset+1) << 8 |
+ tvb_get_guint8(tvb, offset+2);
+ break;
+ case TLV_TYPE_UNKNOWN:
+ default:
+ DISSECTOR_ASSERT_NOT_REACHED();
+ break;
+ }
+
+ ti = proto_tree_add_item(tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+ ie_tree = proto_item_add_subtree(ti, ett_ie_local_port);
+ offset += hlen;
+
+ switch (tag) {
+ case RSL_IE_CH_NO:
+ dissect_rsl_ie_ch_no(tvb, pinfo, ie_tree, offset, FALSE);
+ break;
+ case RSL_IE_FRAME_NO:
+ dissect_rsl_ie_frame_no(tvb, pinfo, ie_tree, offset, FALSE);
+ break;
+ case RSL_IE_MS_POW:
+ dissect_rsl_ie_ms_pow(tvb, pinfo, ie_tree, offset, FALSE);
+ break;
+ case RSL_IE_IPAC_REMOTE_IP:
+ proto_tree_add_item(ie_tree, hf_rsl_remote_ip, tvb,
+ offset, len, ENC_BIG_ENDIAN);
+ break;
+ case RSL_IE_IPAC_REMOTE_PORT:
+ proto_tree_add_item(ie_tree, hf_rsl_remote_port, tvb,
+ offset, len, ENC_BIG_ENDIAN);
+ break;
+ case RSL_IE_IPAC_LOCAL_IP:
+ proto_tree_add_item(ie_tree, hf_rsl_local_ip, tvb,
+ offset, len, ENC_BIG_ENDIAN);
+ local_addr = tvb_get_ipv4(tvb, offset);
+ break;
+ case RSL_IE_IPAC_LOCAL_PORT:
+ proto_tree_add_item(ie_tree, hf_rsl_local_port, tvb,
+ offset, len, ENC_BIG_ENDIAN);
+ local_port = tvb_get_ntohs(tvb, offset);
+ break;
+ case RSL_IE_IPAC_SPEECH_MODE:
+ proto_tree_add_item(ie_tree, hf_rsl_speech_mode_s, tvb,
+ offset, len, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ie_tree, hf_rsl_speech_mode_m, tvb,
+ offset, len, ENC_BIG_ENDIAN);
+ break;
+ case RSL_IE_IPAC_RTP_PAYLOAD:
+ case RSL_IE_IPAC_RTP_PAYLOAD2:
+ proto_tree_add_item(ie_tree, hf_rsl_rtp_payload, tvb,
+ offset, len, ENC_BIG_ENDIAN);
+ break;
+ case RSL_IE_IPAC_RTP_CSD_FMT:
+ proto_tree_add_item(ie_tree, hf_rsl_rtp_csd_fmt_d, tvb,
+ offset, len, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ie_tree, hf_rsl_rtp_csd_fmt_ir, tvb,
+ offset, len, ENC_BIG_ENDIAN);
+ break;
+ case RSL_IE_IPAC_CONN_ID:
+ proto_tree_add_item(ie_tree, hf_rsl_conn_id, tvb,
+ offset, len, ENC_BIG_ENDIAN);
+ break;
+ case RSL_IE_IPAC_CONN_STAT:
+ proto_tree_add_item(ie_tree, hf_rsl_cstat_tx_pkts, tvb,
+ offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ie_tree, hf_rsl_cstat_tx_octs, tvb,
+ offset+4, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ie_tree, hf_rsl_cstat_rx_pkts, tvb,
+ offset+8, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ie_tree, hf_rsl_cstat_rx_octs, tvb,
+ offset+12, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ie_tree, hf_rsl_cstat_lost_pkts, tvb,
+ offset+16, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ie_tree, hf_rsl_cstat_ia_jitter, tvb,
+ offset+20, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ie_tree, hf_rsl_cstat_avg_tx_dly, tvb,
+ offset+24, 4, ENC_BIG_ENDIAN);
+ break;
+ }
+ offset += len;
+ }
+
+ switch (msg_type) {
+ case RSL_MSG_TYPE_IPAC_CRCX_ACK:
+ /* Notify the RTP and RTCP dissectors about a new RTP stream */
+ src_addr.type = AT_IPv4;
+ src_addr.len = 4;
+ src_addr.data = (guint8 *)&local_addr;
+ rtp_add_address(pinfo, &src_addr, local_port, 0,
+ "GSM A-bis/IP", pinfo->fd->num, 0, NULL);
+ rtcp_add_address(pinfo, &src_addr, local_port+1, 0,
+ "GSM A-bis/IP", pinfo->fd->num);
+ break;
+ }
+ return offset;
}
static int
@@ -3234,7 +3241,7 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
guint8 msg_disc, msg_type;
msg_disc = tvb_get_guint8(tvb, offset++) >> 1;
- msg_type = tvb_get_guint8(tvb,offset)&0x7f;
+ msg_type = tvb_get_guint8(tvb,offset) & 0x7f;
proto_tree_add_item(tree, hf_rsl_msg_type, tvb, offset, 1, ENC_BIG_ENDIAN);
if (msg_disc == RSL_MSGDISC_IPACCESS) {
@@ -3243,7 +3250,7 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
}
offset++;
- switch (msg_type){
+ switch (msg_type) {
/* Radio Link Layer Management messages */
/* 8.3.1 DATA REQUEST */
case RSL_MSG_TYPE_DATA_REQ:
@@ -3293,7 +3300,7 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* Link Identifier 9.3.2 M TV 2 */
offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
/* L3 Information 9.3.11 O (note 1) TLV 3-23 */
- if(tvb_length_remaining(tvb,offset) >1)
+ if (tvb_length_remaining(tvb,offset) >1)
offset = dissect_rsl_ie_L3_inf(tvb, pinfo, tree, offset, FALSE, L3_INF_OTHER);
break;
/* 8.3.7 RELEASE REQUEST */
@@ -3326,7 +3333,7 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* Link Identifier 9.3.2 M TV 2 */
offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
/* L3 Information 9.3.11 O (note 1) TLV 3-23 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_L3_inf(tvb, pinfo, tree, offset, FALSE, L3_INF_OTHER);
break;
/* Common Channel Management/TRX Management messages */
@@ -3337,10 +3344,10 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* System Info Type 9.3.30 M TV 2 */
offset = dissect_rsl_ie_sys_info_type(tvb, pinfo, tree, offset, TRUE);
/* Full BCCH Info (SYS INFO) 9.3.39 O 1) TLV 25 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_full_bcch_inf(tvb, pinfo, tree, offset, TRUE);
/* Starting Time 9.3.23 O 2) TV 3 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_starting_time(tvb, pinfo, tree, offset, FALSE);
break;
/* 8.5.2 CCCH LOAD INDICATION 18*/
@@ -3351,7 +3358,7 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* RACH Load 9.3.18 C 1) TLV >=8 */
offset = dissect_rsl_ie_rach_load(tvb, pinfo, tree, offset, FALSE);
/* Paging Load 9.3.15 C 2) TV 3 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_paging_load(tvb, pinfo, tree, offset, FALSE);
break;
/* 8.5.3 */
@@ -3363,7 +3370,7 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* Access Delay 9.3.17 M TV 2 */
offset = dissect_rsl_ie_access_delay(tvb, pinfo, tree, offset, TRUE);
/* Physical Context 9.3.16 O 1) TLV >=2 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_phy_ctx(tvb, pinfo, tree, offset, FALSE);
break;
/* 8.5.4 DELETE INDICATION */
@@ -3381,10 +3388,10 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* MS Identity 9.3.12 M TLV 2-10 2 */
offset = dissect_rsl_ie_ms_id(tvb, pinfo, tree, offset, TRUE);
/* Channel Needed 9.3.40 O 1) TV 2 2 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_ch_needed(tvb, pinfo, tree, offset, FALSE);
/* eMLPP Priority 9.3.49 O 2) TV 2 2 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_emlpp_prio(tvb, pinfo, tree, offset, FALSE);
break;
/* 8.5.6 IMMEDIATE ASSIGN COMMAND */
@@ -3401,7 +3408,7 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* SMSCB Information 9.3.36 M TV 24 */
offset = dissect_rsl_ie_smscb_inf(tvb, pinfo, tree, offset, TRUE);
/* SMSCB Channel Indicator 9.3.44 O 1) TV 2 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_smscb_ch_ind(tvb, pinfo, tree, offset, FALSE);
break;
/* 8.6 TRX MANAGEMENT MESSAGES */
@@ -3415,10 +3422,10 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* System Info Type 9.3.30 M TV 2 */
offset = dissect_rsl_ie_sys_info_type(tvb, pinfo, tree, offset, TRUE);
/* L3 Info (SYS INFO) 9.3.11 O 1) TLV 22 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_L3_inf(tvb, pinfo, tree, offset, FALSE, L3_INF_CCCH);
/* Starting Time 9.3.23 O 2) TV 3 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_starting_time(tvb, pinfo, tree, offset, FALSE);
break;
case RSL_MSG_OVERLOAD: /* 27 8.6.3 */
@@ -3429,16 +3436,16 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* Cause 9.3.26 M TLV >=3 */
offset = dissect_rsl_ie_cause(tvb, pinfo, tree, offset, TRUE);
/* Message Identifier 9.3.28 O 1) TV 2 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_message_id(tvb, pinfo, tree, offset, FALSE);
/* Channel Number 9.3.1 O 2) TV 2 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
/* Link identifier 9.3.2 O 3) TV 2 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
/* Erroneous Message 9.3.38 O 4) TLV >=3 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_err_msg(tvb, pinfo, tree, offset, TRUE);
break;
/* 8.5.8 SMS BROADCAST COMMAND */
@@ -3450,7 +3457,7 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* SMSCB message 9.3.42 M TLV 2-90 */
offset = dissect_rsl_ie_smscb_mess(tvb, pinfo, tree, offset, TRUE);
/* SMSCB Channel Indicator 9.3.44 O 1) TV 2 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_smscb_ch_ind(tvb, pinfo, tree, offset, FALSE);
break;
case RSL_MSG_CBCH_LOAD_IND: /* 30 8.5.9 */
@@ -3459,7 +3466,7 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* CBCH Load Information 9.3.43 M TV 2 */
offset = dissect_rsl_ie_cbch_load_inf(tvb, pinfo, tree, offset, TRUE);
/* SMSCB Channel Indicator 9.3.44 O 1) TV 2 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_smscb_ch_ind(tvb, pinfo, tree, offset, FALSE);
break;
case RSL_MSG_NOT_CMD: /* 31 8.5.10 */
@@ -3468,13 +3475,13 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* Command indicator 9.3.48 M 1) TLV 3-4 */
offset = dissect_rsl_ie_cmd_ind(tvb, pinfo, tree, offset, TRUE);
/* Group call reference 9.3.45 O TLV 7 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_grp_call_ref(tvb, pinfo, tree, offset, FALSE);
/* Channel Description 9.3.46 O TLV 3-n */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_ch_desc(tvb, pinfo, tree, offset, FALSE);
/* NCH DRX information 9.3.47 O TLV 3 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_nch_drx(tvb, pinfo, tree, offset, FALSE);
break;
@@ -3488,46 +3495,46 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* Channel Mode 9.3.6 M TLV 8-9 */
offset = dissect_rsl_ie_ch_mode(tvb, pinfo, tree, offset, TRUE);
/* Channel Identification 9.3.5 O 7) TLV 8 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_ch_id(tvb, pinfo, tree, offset, FALSE);
/* Encryption information 9.3.7 O 1) TLV >=3 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_enc_inf(tvb, pinfo, tree, offset, FALSE);
/* Handover Reference 9.3.9 C 2) TV 2 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_ho_ref(tvb, pinfo, tree, offset, FALSE);
/* BS Power 9.3.4 O 3) TV 2 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_bs_power(tvb, pinfo, tree, offset, FALSE);
/* MS Power 9.3.13 O 3) TV 2 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_ms_pow(tvb, pinfo, tree, offset, FALSE);
/* Timing Advance 9.3.24 C 3) 4) TV 2 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_timing_adv(tvb, pinfo, tree, offset, FALSE);
/* BS Power Parameters 9.3.32 O 5) TLV >=2 */
/* MS Power Parameters 9.3.31 O 5) TLV >=2 */
/* Physical Context 9.3.16 O 6) TLV >=2 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_phy_ctx(tvb, pinfo, tree, offset, FALSE);
/* SACCH Information 9.3.29 O 8) TLV >=3 */
/* UIC 9.3.50 O 9) TLV 3 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_uic(tvb, pinfo, tree, offset, FALSE);
/* Main channel reference 9.3.51 O 10) TV 2 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_main_ch_ref(tvb, pinfo, tree, offset, FALSE);
/* MultiRate configuration 9.3.52 O 11) TLV >=4 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_multirate_conf(tvb, pinfo, tree, offset, FALSE);
/* MultiRate Control 9.3.53 O 12) TV 2 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_multirate_cntrl(tvb, pinfo, tree, offset, FALSE);
/* Supported Codec Types 9.3.54 O 12) TLV >=5 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_sup_codec_types(tvb, pinfo, tree, offset, FALSE);
/* TFO transparent container 9.3.59 O 12) TLV >=3 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_tfo_transp_cont(tvb, pinfo, tree, offset, FALSE);
break;
@@ -3573,7 +3580,7 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* Channel number 9.3.1 M TV 2 */
offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
/* Access Delay 9.3.17 O 1) TV 2 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_access_delay(tvb, pinfo, tree, offset, FALSE);
break;
/* 8.4.8 MEASUREMENT RESULT 40 */
@@ -3587,13 +3594,13 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* BS Power 9.3.4 M TV 2 */
offset = dissect_rsl_ie_bs_power(tvb, pinfo, tree, offset, TRUE);
/* L1 Information 9.3.10 O 1) TV 3 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_l1_inf(tvb, pinfo, tree, offset, FALSE);
/* L3 Info (MEAS REP, EXT MEAS REP or ENH MEAS REP) 9.3.11 O 1) TLV 21 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_L3_inf(tvb, pinfo, tree, offset, FALSE, L3_INF_SACCH);
/* MS Timing Offset 9.3.37 O 2) TV 2 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_ms_timing_offset(tvb, pinfo, tree, offset, FALSE);
break;
/* 8.4.9 MODE MODIFY */
@@ -3603,22 +3610,22 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* Channel Mode 9.3.6 M TLV 8-9 */
offset = dissect_rsl_ie_ch_mode(tvb, pinfo, tree, offset, TRUE);
/* Encryption information 9.3.7 O 1) TLV >=3 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_enc_inf(tvb, pinfo, tree, offset, FALSE);
/* Main channel reference 9.3.45 O 2) TV 2 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_main_ch_ref(tvb, pinfo, tree, offset, FALSE);
/* MultiRate configuration 9.3.52 O 3) TLV >=3 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_multirate_conf(tvb, pinfo, tree, offset, FALSE);
/* Multirate Control 9.3.53 O 4) TV 2 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_multirate_cntrl(tvb, pinfo, tree, offset, FALSE);
/* Supported Codec Types 9.3.54 O 4) TLV >=5 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_sup_codec_types(tvb, pinfo, tree, offset, FALSE);
/* TFO transparent container 9.3.59 O 4) TLV */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_tfo_transp_cont(tvb, pinfo, tree, offset, FALSE);
break;
/* 8.4.10 MODE MODIFY ACKNOWLEDGE */
@@ -3649,7 +3656,7 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* Timing Advance 9.3.24 M TV 2 */
offset = dissect_rsl_ie_timing_adv(tvb, pinfo, tree, offset, TRUE);
/* Physical Context 9.3.16 O 1) TLV */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_phy_ctx(tvb, pinfo, tree, offset, FALSE);
break;
/* 8.4.14 RF CHANNEL RELEASE */
@@ -3662,7 +3669,7 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* Channel number 9.3.1 M TV 2 */
offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
/* MS Power 9.3.13 M TV 2 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_ms_pow(tvb, pinfo, tree, offset, FALSE);
/* MS Power Parameters 9.3.31 O 1) TLV >=2 */
break;
@@ -3698,10 +3705,10 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* System Info Type 9.3.30 M TV 2 */
offset = dissect_rsl_ie_sys_info_type(tvb, pinfo, tree, offset, TRUE);
/* L3 Info 9.3.11 O 1) TLV 22 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_L3_inf(tvb, pinfo, tree, offset, FALSE, L3_INF_SACCH);
/* Starting Time 9.3.23 O 2) TV 3 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_starting_time(tvb, pinfo, tree, offset, FALSE);
break;
/* 8.4.21 TALKER DETECTION */
@@ -3709,7 +3716,7 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* Channel number 9.3.1 M TV 2 */
offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
/* Access Delay 9.3.17 O 1) TV 2 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
break;
/* 8.4.22 LISTENER DETECTION */
@@ -3717,7 +3724,7 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* Channel number 9.3.1 M TV 2 */
offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
/* Access Delay 9.3.17 O 1) TV 2 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
break;
/* 8.4.23 REMOTE CODEC CONFIGURATION REPORT */
@@ -3727,10 +3734,10 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* Codec Configuration 9.3.55 M TLV >=3 */
offset = dissect_rsl_ie_codec_conf(tvb, pinfo, tree, offset, TRUE);
/* Supported Codec Types 9.3.54 M TLV >=5 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_sup_codec_types(tvb, pinfo, tree, offset, FALSE);
/* TFO transparent container 9.3.59 O 4) TLV >=3 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_tfo_transp_cont(tvb, pinfo, tree, offset, FALSE);
break;
/* 8.4.24 ROUND TRIP DELAY REPORT */
@@ -3749,7 +3756,7 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* Codec Configuration 9.3.55 M TLV >=3 */
offset = dissect_rsl_ie_codec_conf(tvb, pinfo, tree, offset, TRUE);
/* TFO transparent container 9.3.59 O 4) TLV >=3 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_tfo_transp_cont(tvb, pinfo, tree, offset, FALSE);
break;
/* 8.4.26 MULTIRATE CODEC MODIFICATION REQUEST */
@@ -3757,7 +3764,7 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* Channel number 9.3.1 M TV 2 */
offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
/* MultiRate Configuration 9.3.52 O 1) TLV >=4 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_multirate_conf(tvb, pinfo, tree, offset, FALSE);
break;
/* 8.4.27 MULTIRATE CODEC MODIFICATION ACKNOWLEDGE */
@@ -3765,7 +3772,7 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* Channel number 9.3.1 M TV 2 */
offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
/* MultiRate Configuration 9.3.52 O 1) TLV >=4 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_multirate_conf(tvb, pinfo, tree, offset, FALSE);
break;
/* 8.4.28 MULTIRATE CODEC MODIFICATION NEGATIVE ACKNOWLEDGE */
@@ -3796,10 +3803,10 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* MultiRateControl 9.3.53 M TV 2 */
offset = dissect_rsl_ie_multirate_cntrl(tvb, pinfo, tree, offset, TRUE);
/* Supported Codec Type 9.3.54 O 1) TLV >=5 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_sup_codec_types(tvb, pinfo, tree, offset, FALSE);
/* TFO transparent container 9.3.59 O 4) TLV >=3 */
- if(tvb_length_remaining(tvb,offset) > 0)
+ if (tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_tfo_transp_cont(tvb, pinfo, tree, offset, FALSE);
break;
/* 0 1 - - - - - - Location Services messages: */
@@ -3808,8 +3815,8 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* LLP APDU 9.3.58 M LV 2-N */
offset = dissect_rsl_ie_llp_apdu(tvb, pinfo, tree, offset, TRUE);
break;
- /* the following messages are ip.access specific but sent without
- * ip.access memssage discriminator */
+ /* the following messages are ip.access specific but sent without
+ * ip.access memssage discriminator */
case RSL_MSG_TYPE_IPAC_MEAS_PP_DEF:
case RSL_MSG_TYPE_IPAC_HO_CAND_INQ:
case RSL_MSG_TYPE_IPAC_HO_CAND_RESP:
@@ -3830,44 +3837,44 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
}
static const value_string rsl_ipacc_spm_s_vals[] = {
- { 0, "GSM FR codec (GSM type 1, FS)" },
- { 1, "GSM EFR codec (GSM type 2, FS)" },
- { 2, "GSM AMR/FR codec (GSM type 3, FS)" },
- { 3, "GSM HR codec (GSM type 1, HS)" },
- { 5, "GSM AMR/HR codec (GSM type 3, HS)" },
- { 0xf, "As specified by RTP Payload Type IE" },
- { 0, NULL }
+ { 0, "GSM FR codec (GSM type 1, FS)" },
+ { 1, "GSM EFR codec (GSM type 2, FS)" },
+ { 2, "GSM AMR/FR codec (GSM type 3, FS)" },
+ { 3, "GSM HR codec (GSM type 1, HS)" },
+ { 5, "GSM AMR/HR codec (GSM type 3, HS)" },
+ { 0xf, "As specified by RTP Payload Type IE" },
+ { 0, NULL }
};
static const value_string rsl_ipacc_spm_m_vals[] = {
- { 0, "Send and Receive" },
- { 1, "Receive Only" },
- { 2, "Send Only" },
- { 0, NULL }
+ { 0, "Send and Receive" },
+ { 1, "Receive Only" },
+ { 2, "Send Only" },
+ { 0, NULL }
};
static const value_string rsl_ipacc_rtp_csd_fmt_d_vals[] = {
- { 0, "External TRAU format" },
- { 1, "Non-TRAU Packed format" },
- { 2, "TRAU within the BTS" },
- { 3, "IWF-Free BTS-BTS Data" },
- { 0, NULL }
+ { 0, "External TRAU format" },
+ { 1, "Non-TRAU Packed format" },
+ { 2, "TRAU within the BTS" },
+ { 3, "IWF-Free BTS-BTS Data" },
+ { 0, NULL }
};
static const value_string rsl_ipacc_rtp_csd_fmt_ir_vals[] = {
- { 0, "8kb/s" },
- { 1, "16kb/s" },
- { 2, "32kb/s" },
- { 3, "64kb/s" },
- { 0, NULL }
+ { 0, "8kb/s" },
+ { 1, "16kb/s" },
+ { 2, "32kb/s" },
+ { 3, "64kb/s" },
+ { 0, NULL }
};
-static void
+static int
dissect_rsl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_item *ti;
proto_tree *rsl_tree;
- guint8 msg_type;
+ guint8 msg_type;
int offset = 0;
@@ -3875,7 +3882,7 @@ dissect_rsl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
col_set_str(pinfo->cinfo, COL_PROTOCOL, "RSL");
col_clear(pinfo->cinfo, COL_INFO);
- msg_type = tvb_get_guint8(tvb,offset+1)&0x7f;
+ msg_type = tvb_get_guint8(tvb,offset+1) & 0x7f;
col_append_fstr(pinfo->cinfo, COL_INFO, "%s ",val_to_str_ext(msg_type, &rsl_msg_type_vals_ext,"unknown %u"));
@@ -3883,12 +3890,12 @@ dissect_rsl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (tree) {
ti = proto_tree_add_item(tree, proto_rsl, tvb, 0, -1, ENC_NA);
- /* if nanoBTS specific vendor messages are not enabled, skip */
+ /* if nanoBTS specific vendor messages are not enabled, skip */
if (!global_rsl_use_nano_bts) {
- guint8 msg_disc = tvb_get_guint8(tvb, offset) >> 1;
+ guint8 msg_disc = tvb_get_guint8(tvb, offset) >> 1;
- if (msg_disc == RSL_MSGDISC_IPACCESS)
- return;
+ if (msg_disc == RSL_MSGDISC_IPACCESS)
+ return 0;
}
rsl_tree = proto_item_add_subtree(ti, ett_rsl);
@@ -3899,7 +3906,7 @@ dissect_rsl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset = dissct_rsl_msg(tvb, pinfo, rsl_tree, offset);
}
-
+ return offset;
}
/* Register the protocol with Wireshark */
@@ -4258,78 +4265,78 @@ void proto_register_rsl(void)
FT_UINT8, BASE_DEC, VALS(rsl_emlpp_prio_vals), 0x03,
NULL, HFILL }
},
- { &hf_rsl_speech_mode_s,
- { "ip.access Speech Mode S", "rsl.ipacc.speech_mode_s",
- FT_UINT8, BASE_HEX, VALS(rsl_ipacc_spm_s_vals),
- 0xf, NULL, HFILL }
- },
- { &hf_rsl_speech_mode_m,
- { "ip.access Speech Mode M", "rsl.ipacc.speech_mode_m",
- FT_UINT8, BASE_HEX, VALS(rsl_ipacc_spm_m_vals),
- 0xf0, NULL, HFILL }
- },
- { &hf_rsl_conn_id,
- { "ip.access Connection ID", "rsl.ipacc.conn_id",
- FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
- },
- { &hf_rsl_rtp_payload,
- { "ip.access RTP Payload Type", "rsl.ipacc.rtp_payload",
- FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
- },
- { &hf_rsl_rtp_csd_fmt_d,
- { "ip.access RTP CSD Format D", "rsl.ipacc.rtp_csd_fmt_d",
- FT_UINT8, BASE_HEX, VALS(rsl_ipacc_rtp_csd_fmt_d_vals),
- 0x0f, NULL, HFILL },
- },
- { &hf_rsl_rtp_csd_fmt_ir,
- { "ip.access RTP CSD Format IR", "rsl.ipacc.rtp_csd_fmt_ir",
- FT_UINT8, BASE_HEX, VALS(rsl_ipacc_rtp_csd_fmt_ir_vals),
- 0xf0, NULL, HFILL },
- },
- { &hf_rsl_local_port,
- { "ip.access Local RTP Port", "rsl.ipacc.local_port",
- FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL },
- },
- { &hf_rsl_remote_port,
- { "ip.access Remote RTP Port", "rsl.ipacc.remote_port",
- FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL },
- },
- { &hf_rsl_local_ip,
- { "ip.access Local IP Address", "rsl.ipacc.local_ip",
- FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL },
- },
- { &hf_rsl_remote_ip,
- { "ip.access Remote IP Address", "rsl.ipacc.remote_ip",
- FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL },
- },
- { &hf_rsl_cstat_tx_pkts,
- { "Packets Sent", "rsl.ipacc.cstat.tx_pkts",
- FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }
- },
- { &hf_rsl_cstat_tx_octs,
- { "Octets Sent", "rsl.ipacc.cstat.tx_octets",
- FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }
- },
- { &hf_rsl_cstat_rx_pkts,
- { "Packets Received", "rsl.ipacc.cstat.rx_pkts",
- FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }
- },
- { &hf_rsl_cstat_rx_octs,
- { "Octets Received", "rsl.ipacc.cstat.rx_octets",
- FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }
- },
- { &hf_rsl_cstat_lost_pkts,
- { "Packets Lost", "rsl.ipacc.cstat.lost_pkts",
- FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }
- },
- { &hf_rsl_cstat_ia_jitter,
- { "Inter-arrival Jitter", "rsl.ipacc.cstat.ia_jitter",
- FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }
- },
- { &hf_rsl_cstat_avg_tx_dly,
- { "Average Tx Delay", "rsl.ipacc.cstat.avg_tx_delay",
- FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }
- },
+ { &hf_rsl_speech_mode_s,
+ { "ip.access Speech Mode S", "rsl.ipacc.speech_mode_s",
+ FT_UINT8, BASE_HEX, VALS(rsl_ipacc_spm_s_vals),
+ 0xf, NULL, HFILL }
+ },
+ { &hf_rsl_speech_mode_m,
+ { "ip.access Speech Mode M", "rsl.ipacc.speech_mode_m",
+ FT_UINT8, BASE_HEX, VALS(rsl_ipacc_spm_m_vals),
+ 0xf0, NULL, HFILL }
+ },
+ { &hf_rsl_conn_id,
+ { "ip.access Connection ID", "rsl.ipacc.conn_id",
+ FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
+ },
+ { &hf_rsl_rtp_payload,
+ { "ip.access RTP Payload Type", "rsl.ipacc.rtp_payload",
+ FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
+ },
+ { &hf_rsl_rtp_csd_fmt_d,
+ { "ip.access RTP CSD Format D", "rsl.ipacc.rtp_csd_fmt_d",
+ FT_UINT8, BASE_HEX, VALS(rsl_ipacc_rtp_csd_fmt_d_vals),
+ 0x0f, NULL, HFILL },
+ },
+ { &hf_rsl_rtp_csd_fmt_ir,
+ { "ip.access RTP CSD Format IR", "rsl.ipacc.rtp_csd_fmt_ir",
+ FT_UINT8, BASE_HEX, VALS(rsl_ipacc_rtp_csd_fmt_ir_vals),
+ 0xf0, NULL, HFILL },
+ },
+ { &hf_rsl_local_port,
+ { "ip.access Local RTP Port", "rsl.ipacc.local_port",
+ FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL },
+ },
+ { &hf_rsl_remote_port,
+ { "ip.access Remote RTP Port", "rsl.ipacc.remote_port",
+ FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL },
+ },
+ { &hf_rsl_local_ip,
+ { "ip.access Local IP Address", "rsl.ipacc.local_ip",
+ FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL },
+ },
+ { &hf_rsl_remote_ip,
+ { "ip.access Remote IP Address", "rsl.ipacc.remote_ip",
+ FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL },
+ },
+ { &hf_rsl_cstat_tx_pkts,
+ { "Packets Sent", "rsl.ipacc.cstat.tx_pkts",
+ FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rsl_cstat_tx_octs,
+ { "Octets Sent", "rsl.ipacc.cstat.tx_octets",
+ FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rsl_cstat_rx_pkts,
+ { "Packets Received", "rsl.ipacc.cstat.rx_pkts",
+ FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rsl_cstat_rx_octs,
+ { "Octets Received", "rsl.ipacc.cstat.rx_octets",
+ FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rsl_cstat_lost_pkts,
+ { "Packets Lost", "rsl.ipacc.cstat.lost_pkts",
+ FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rsl_cstat_ia_jitter,
+ { "Inter-arrival Jitter", "rsl.ipacc.cstat.ia_jitter",
+ FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_rsl_cstat_avg_tx_dly,
+ { "Average Tx Delay", "rsl.ipacc.cstat.avg_tx_delay",
+ FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
};
static gint *ett[] = {
&ett_rsl,
@@ -4387,94 +4394,94 @@ void proto_register_rsl(void)
&ett_ie_meas_res_no,
&ett_ie_message_id,
&ett_ie_sys_info_type,
- &ett_ie_speech_mode,
- &ett_ie_conn_id,
- &ett_ie_remote_ip,
- &ett_ie_remote_port,
- &ett_ie_local_port,
- &ett_ie_local_ip,
- &ett_ie_rtp_payload,
+ &ett_ie_speech_mode,
+ &ett_ie_conn_id,
+ &ett_ie_remote_ip,
+ &ett_ie_remote_port,
+ &ett_ie_local_port,
+ &ett_ie_local_ip,
+ &ett_ie_rtp_payload,
};
- module_t *rsl_module;
-
-#define RSL_ATT_TLVDEF(_attr, _type, _fixed_len) \
- rsl_att_tlvdef.def[_attr].type = _type; \
- rsl_att_tlvdef.def[_attr].fixed_len = _fixed_len; \
-
- /* We register even the standard RSL IE TVLs here, not just the
- * ip.access vendor specific elements. This is due to the fact that we
- * don't have any formal specification for the ip.access RSL dialect,
- * and this way any standard elements will be 'known' to the TLV
- * parser, which can then gracefully skip over such elements and
- * continue decoding the message. This will work even if the switch
- * statement in dissct_rsl_ipaccess_msg() doesn't contain explicit code
- * to decode them (yet?).
- */
- RSL_ATT_TLVDEF(RSL_IE_CH_NO, TLV_TYPE_TV, 0);
- RSL_ATT_TLVDEF(RSL_IE_LINK_ID, TLV_TYPE_TV, 0);
- RSL_ATT_TLVDEF(RSL_IE_ACT_TYPE, TLV_TYPE_TV, 0);
- RSL_ATT_TLVDEF(RSL_IE_BS_POW, TLV_TYPE_TV, 0);
- RSL_ATT_TLVDEF(RSL_IE_CH_ID, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_CH_MODE, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_ENC_INF, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_FRAME_NO, TLV_TYPE_FIXED, 2);
- RSL_ATT_TLVDEF(RSL_IE_HO_REF, TLV_TYPE_TV, 0);
- RSL_ATT_TLVDEF(RSL_IE_L1_INF, TLV_TYPE_FIXED, 2);
- RSL_ATT_TLVDEF(RSL_IE_L3_INF, TLV_TYPE_TL16V, 0);
- RSL_ATT_TLVDEF(RSL_IE_MS_ID, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_MS_POW, TLV_TYPE_TV, 0);
- RSL_ATT_TLVDEF(RSL_IE_PAGING_GRP, TLV_TYPE_TV, 0);
- RSL_ATT_TLVDEF(RSL_IE_PAGING_LOAD, TLV_TYPE_FIXED, 2);
- RSL_ATT_TLVDEF(RSL_IE_PHY_CTX, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_ACCESS_DELAY, TLV_TYPE_TV, 0);
- RSL_ATT_TLVDEF(RSL_IE_RACH_LOAD, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_REQ_REF, TLV_TYPE_FIXED, 3);
- RSL_ATT_TLVDEF(RSL_IE_REL_MODE, TLV_TYPE_TV, 0);
- RSL_ATT_TLVDEF(RSL_IE_RESOURCE_INF, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_RLM_CAUSE, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_STARTING_TIME, TLV_TYPE_FIXED, 2);
- RSL_ATT_TLVDEF(RSL_IE_TIMING_ADV, TLV_TYPE_TV, 0);
- RSL_ATT_TLVDEF(RSL_IE_UPLINK_MEAS, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_CAUSE, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_MEAS_RES_NO, TLV_TYPE_TV, 0);
- RSL_ATT_TLVDEF(RSL_IE_MESSAGE_ID, TLV_TYPE_TV, 0);
- RSL_ATT_TLVDEF(RSL_IE_SYS_INFO_TYPE, TLV_TYPE_TV, 0);
- RSL_ATT_TLVDEF(RSL_IE_MS_POWER_PARAM, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_BS_POWER_PARAM, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_PREPROC_PARAM, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_PREPROC_MEAS, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_ERR_MSG, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_FULL_BCCH_INF, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_CH_NEEDED, TLV_TYPE_TV, 0);
- RSL_ATT_TLVDEF(RSL_IE_CB_CMD_TYPE, TLV_TYPE_TV, 0);
- RSL_ATT_TLVDEF(RSL_IE_SMSCB_MESS, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_FULL_IMM_ASS_INF, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_CBCH_LOAD_INF, TLV_TYPE_TV, 0);
- RSL_ATT_TLVDEF(RSL_IE_SMSCB_CH_IND, TLV_TYPE_TV, 0);
- RSL_ATT_TLVDEF(RSL_IE_GRP_CALL_REF, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_CH_DESC, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_NCH_DRX_INF, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_CMD_IND, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_EMLPP_PRIO, TLV_TYPE_TV, 0);
- RSL_ATT_TLVDEF(RSL_IE_UIC, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_MAIN_CH_REF, TLV_TYPE_TV, 0);
- RSL_ATT_TLVDEF(RSL_IE_MULTIRATE_CONF, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_MULTIRATE_CNTRL, TLV_TYPE_TV, 0);
- RSL_ATT_TLVDEF(RSL_IE_SUP_CODEC_TYPES, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_CODEC_CONF, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_RTD, TLV_TYPE_TV, 0);
- RSL_ATT_TLVDEF(RSL_IE_TFO_STATUS, TLV_TYPE_TV, 0);
- RSL_ATT_TLVDEF(RSL_IE_LLP_APDU, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_IPAC_REMOTE_IP, TLV_TYPE_FIXED, 4);
- RSL_ATT_TLVDEF(RSL_IE_IPAC_REMOTE_PORT, TLV_TYPE_FIXED, 2);
- RSL_ATT_TLVDEF(RSL_IE_IPAC_LOCAL_IP, TLV_TYPE_FIXED, 4);
- RSL_ATT_TLVDEF(RSL_IE_IPAC_CONN_STAT, TLV_TYPE_TLV, 0);
- RSL_ATT_TLVDEF(RSL_IE_IPAC_LOCAL_PORT, TLV_TYPE_FIXED, 2);
- RSL_ATT_TLVDEF(RSL_IE_IPAC_SPEECH_MODE, TLV_TYPE_TV, 0);
- RSL_ATT_TLVDEF(RSL_IE_IPAC_CONN_ID, TLV_TYPE_FIXED, 2);
- RSL_ATT_TLVDEF(RSL_IE_IPAC_RTP_PAYLOAD2,TLV_TYPE_TV, 0);
- RSL_ATT_TLVDEF(RSL_IE_IPAC_RTP_PAYLOAD, TLV_TYPE_TV, 0);
- RSL_ATT_TLVDEF(RSL_IE_IPAC_RTP_CSD_FMT, TLV_TYPE_TV, 0);
+ module_t *rsl_module;
+
+#define RSL_ATT_TLVDEF(_attr, _type, _fixed_len) \
+ rsl_att_tlvdef.def[_attr].type = _type; \
+ rsl_att_tlvdef.def[_attr].fixed_len = _fixed_len; \
+
+ /* We register even the standard RSL IE TVLs here, not just the
+ * ip.access vendor specific elements. This is due to the fact that we
+ * don't have any formal specification for the ip.access RSL dialect,
+ * and this way any standard elements will be 'known' to the TLV
+ * parser, which can then gracefully skip over such elements and
+ * continue decoding the message. This will work even if the switch
+ * statement in dissct_rsl_ipaccess_msg() doesn't contain explicit code
+ * to decode them (yet?).
+ */
+ RSL_ATT_TLVDEF(RSL_IE_CH_NO, TLV_TYPE_TV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_LINK_ID, TLV_TYPE_TV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_ACT_TYPE, TLV_TYPE_TV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_BS_POW, TLV_TYPE_TV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_CH_ID, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_CH_MODE, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_ENC_INF, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_FRAME_NO, TLV_TYPE_FIXED, 2);
+ RSL_ATT_TLVDEF(RSL_IE_HO_REF, TLV_TYPE_TV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_L1_INF, TLV_TYPE_FIXED, 2);
+ RSL_ATT_TLVDEF(RSL_IE_L3_INF, TLV_TYPE_TL16V, 0);
+ RSL_ATT_TLVDEF(RSL_IE_MS_ID, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_MS_POW, TLV_TYPE_TV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_PAGING_GRP, TLV_TYPE_TV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_PAGING_LOAD, TLV_TYPE_FIXED, 2);
+ RSL_ATT_TLVDEF(RSL_IE_PHY_CTX, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_ACCESS_DELAY, TLV_TYPE_TV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_RACH_LOAD, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_REQ_REF, TLV_TYPE_FIXED, 3);
+ RSL_ATT_TLVDEF(RSL_IE_REL_MODE, TLV_TYPE_TV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_RESOURCE_INF, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_RLM_CAUSE, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_STARTING_TIME, TLV_TYPE_FIXED, 2);
+ RSL_ATT_TLVDEF(RSL_IE_TIMING_ADV, TLV_TYPE_TV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_UPLINK_MEAS, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_CAUSE, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_MEAS_RES_NO, TLV_TYPE_TV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_MESSAGE_ID, TLV_TYPE_TV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_SYS_INFO_TYPE, TLV_TYPE_TV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_MS_POWER_PARAM, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_BS_POWER_PARAM, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_PREPROC_PARAM, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_PREPROC_MEAS, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_ERR_MSG, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_FULL_BCCH_INF, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_CH_NEEDED, TLV_TYPE_TV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_CB_CMD_TYPE, TLV_TYPE_TV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_SMSCB_MESS, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_FULL_IMM_ASS_INF, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_CBCH_LOAD_INF, TLV_TYPE_TV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_SMSCB_CH_IND, TLV_TYPE_TV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_GRP_CALL_REF, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_CH_DESC, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_NCH_DRX_INF, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_CMD_IND, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_EMLPP_PRIO, TLV_TYPE_TV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_UIC, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_MAIN_CH_REF, TLV_TYPE_TV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_MULTIRATE_CONF, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_MULTIRATE_CNTRL, TLV_TYPE_TV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_SUP_CODEC_TYPES, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_CODEC_CONF, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_RTD, TLV_TYPE_TV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_TFO_STATUS, TLV_TYPE_TV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_LLP_APDU, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_IPAC_REMOTE_IP, TLV_TYPE_FIXED, 4);
+ RSL_ATT_TLVDEF(RSL_IE_IPAC_REMOTE_PORT, TLV_TYPE_FIXED, 2);
+ RSL_ATT_TLVDEF(RSL_IE_IPAC_LOCAL_IP, TLV_TYPE_FIXED, 4);
+ RSL_ATT_TLVDEF(RSL_IE_IPAC_CONN_STAT, TLV_TYPE_TLV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_IPAC_LOCAL_PORT, TLV_TYPE_FIXED, 2);
+ RSL_ATT_TLVDEF(RSL_IE_IPAC_SPEECH_MODE, TLV_TYPE_TV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_IPAC_CONN_ID, TLV_TYPE_FIXED, 2);
+ RSL_ATT_TLVDEF(RSL_IE_IPAC_RTP_PAYLOAD2,TLV_TYPE_TV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_IPAC_RTP_PAYLOAD, TLV_TYPE_TV, 0);
+ RSL_ATT_TLVDEF(RSL_IE_IPAC_RTP_CSD_FMT, TLV_TYPE_TV, 0);
/* Register the protocol name and description */
proto_rsl = proto_register_protocol("Radio Signalling Link (RSL)", "RSL", "rsl");
@@ -4482,13 +4489,13 @@ void proto_register_rsl(void)
proto_register_field_array(proto_rsl, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
- register_dissector("gsm_abis_rsl", dissect_rsl, proto_rsl);
+ new_register_dissector("gsm_abis_rsl", dissect_rsl, proto_rsl);
- rsl_module = prefs_register_protocol(proto_rsl, proto_reg_handoff_rsl);
- prefs_register_bool_preference(rsl_module, "use_ipaccess_rsl",
- "Use nanoBTS definitions",
- "Use ipaccess nanoBTS specific definitions for RSL",
- &global_rsl_use_nano_bts);
+ rsl_module = prefs_register_protocol(proto_rsl, proto_reg_handoff_rsl);
+ prefs_register_bool_preference(rsl_module, "use_ipaccess_rsl",
+ "Use nanoBTS definitions",
+ "Use ipaccess nanoBTS specific definitions for RSL",
+ &global_rsl_use_nano_bts);
}
void
@@ -4496,7 +4503,7 @@ proto_reg_handoff_rsl(void)
{
dissector_handle_t rsl_handle;
- rsl_handle = create_dissector_handle(dissect_rsl, proto_rsl);
+ rsl_handle = new_create_dissector_handle(dissect_rsl, proto_rsl);
dissector_add_uint("lapd.gsm.sapi", LAPD_GSM_SAPI_RA_SIG_PROC, rsl_handle);
gsm_cbch_handle = find_dissector("gsm_cbch");
diff --git a/epan/dissectors/packet-rsvp.c b/epan/dissectors/packet-rsvp.c
index 093256f249..e60b1ccab9 100644
--- a/epan/dissectors/packet-rsvp.c
+++ b/epan/dissectors/packet-rsvp.c
@@ -191,12 +191,12 @@ struct rsvp_request_key {
guint32 session_type;
union { /* differentiated by session_type field */
- rsvp_session_ipv4_info session_ipv4;
- rsvp_session_ipv6_info session_ipv6;
- rsvp_session_ipv4_lsp_info session_ipv4_lsp;
- rsvp_session_agg_ipv4_info session_agg_ipv4;
- rsvp_session_ipv4_uni_info session_ipv4_uni;
- rsvp_session_ipv4_enni_info session_ipv4_enni;
+ rsvp_session_ipv4_info session_ipv4;
+ rsvp_session_ipv6_info session_ipv6;
+ rsvp_session_ipv4_lsp_info session_ipv4_lsp;
+ rsvp_session_agg_ipv4_info session_agg_ipv4;
+ rsvp_session_ipv4_uni_info session_ipv4_uni;
+ rsvp_session_ipv4_enni_info session_ipv4_enni;
} u;
rsvp_template_filter_info source_info;
@@ -315,49 +315,50 @@ static guint rsvp_generalized_label_option = 1;
* RSVP message types.
* See
*
- * http://www.iana.org/assignments/rsvp-parameters
+ * http://www.iana.org/assignments/rsvp-parameters
*/
typedef enum {
- RSVP_MSG_PATH=1, /* RFC 2205 */
- RSVP_MSG_RESV, /* RFC 2205 */
- RSVP_MSG_PERR, /* RFC 2205 */
- RSVP_MSG_RERR, /* RFC 2205 */
- RSVP_MSG_PTEAR, /* RFC 2205 */
- RSVP_MSG_RTEAR, /* RFC 2205 */
- RSVP_MSG_CONFIRM, /* XXX - DREQ, RFC 2745? */
- /* 9 is DREP, RFC 2745 */
- RSVP_MSG_RTEAR_CONFIRM=10, /* from Fred Baker at Cisco */
- /* 11 is unassigned */
- RSVP_MSG_BUNDLE = 12, /* RFC 2961 */
- RSVP_MSG_ACK, /* RFC 2961 */
- /* 14 is reserved */
- RSVP_MSG_SREFRESH = 15, /* RFC 2961 */
- /* 16, 17, 18, 19 not listed */
- RSVP_MSG_HELLO = 20, /* RFC 3209 */
- RSVP_MSG_NOTIFY /* [RFC3473] */
- /* 25 is Integrity Challenge RFC 2747, RFC 3097 */
- /* 26 is Integrity Response RFC 2747, RFC 3097 */
- /* 66 is DSBM_willing [SBM] */
- /* 67 is I_AM_DSBM [SBM] */
- /* [SBM] is Subnet Bandwidth Manager ID from July 1997 */
+ RSVP_MSG_PATH = 1, /* RFC 2205 */
+ RSVP_MSG_RESV, /* RFC 2205 */
+ RSVP_MSG_PERR, /* RFC 2205 */
+ RSVP_MSG_RERR, /* RFC 2205 */
+ RSVP_MSG_PTEAR, /* RFC 2205 */
+ RSVP_MSG_RTEAR, /* RFC 2205 */
+ RSVP_MSG_CONFIRM, /* XXX - DREQ, RFC 2745? */
+ /* 9 is DREP, RFC 2745 */
+ RSVP_MSG_RTEAR_CONFIRM = 10, /* from Fred Baker at Cisco */
+ /* 11 is unassigned */
+ RSVP_MSG_BUNDLE = 12, /* RFC 2961 */
+ RSVP_MSG_ACK, /* RFC 2961 */
+ /* 14 is reserved */
+ RSVP_MSG_SREFRESH = 15, /* RFC 2961 */
+ /* 16, 17, 18, 19 not listed */
+ RSVP_MSG_HELLO = 20, /* RFC 3209 */
+ RSVP_MSG_NOTIFY /* [RFC3473] */
+ /* 25 is Integrity Challenge RFC 2747, RFC 3097 */
+ /* 26 is Integrity Response RFC 2747, RFC 3097 */
+ /* 66 is DSBM_willing [SBM] */
+ /* 67 is I_AM_DSBM [SBM] */
+ /* [SBM] is Subnet Bandwidth Manager ID from July 1997 */
} rsvp_message_types;
static const value_string message_type_vals[] = {
- { RSVP_MSG_PATH, "PATH Message. "},
- { RSVP_MSG_RESV, "RESV Message. "},
- { RSVP_MSG_PERR, "PATH ERROR Message. "},
- { RSVP_MSG_RERR, "RESV ERROR Message. "},
- { RSVP_MSG_PTEAR, "PATH TEAR Message. "},
- { RSVP_MSG_RTEAR, "RESV TEAR Message. "},
- { RSVP_MSG_CONFIRM, "CONFIRM Message. "},
- { RSVP_MSG_RTEAR_CONFIRM, "RESV TEAR CONFIRM Message. "},
- { RSVP_MSG_BUNDLE, "BUNDLE Message. "},
- { RSVP_MSG_ACK, "ACK Message. "},
- { RSVP_MSG_SREFRESH, "SREFRESH Message. "},
- { RSVP_MSG_HELLO, "HELLO Message. "},
- { RSVP_MSG_NOTIFY, "NOTIFY Message. "},
+ { RSVP_MSG_PATH, "PATH Message. "},
+ { RSVP_MSG_RESV, "RESV Message. "},
+ { RSVP_MSG_PERR, "PATH ERROR Message. "},
+ { RSVP_MSG_RERR, "RESV ERROR Message. "},
+ { RSVP_MSG_PTEAR, "PATH TEAR Message. "},
+ { RSVP_MSG_RTEAR, "RESV TEAR Message. "},
+ { RSVP_MSG_CONFIRM, "CONFIRM Message. "},
+ { RSVP_MSG_RTEAR_CONFIRM, "RESV TEAR CONFIRM Message. "},
+ { RSVP_MSG_BUNDLE, "BUNDLE Message. "},
+ { RSVP_MSG_ACK, "ACK Message. "},
+ { RSVP_MSG_SREFRESH, "SREFRESH Message. "},
+ { RSVP_MSG_HELLO, "HELLO Message. "},
+ { RSVP_MSG_NOTIFY, "NOTIFY Message. "},
{ 0, NULL}
};
+static value_string_ext message_type_vals_ext = VALUE_STRING_EXT_INIT(message_type_vals);
/*
* FF: please keep this list in sync with
@@ -365,10 +366,10 @@ static const value_string message_type_vals[] = {
* Registry Name: 'Class'
*/
enum rsvp_classes {
- RSVP_CLASS_NULL=0,
+ RSVP_CLASS_NULL = 0,
RSVP_CLASS_SESSION,
- RSVP_CLASS_HOP=3,
+ RSVP_CLASS_HOP = 3,
RSVP_CLASS_INTEGRITY,
RSVP_CLASS_TIME_VALUES,
RSVP_CLASS_ERROR,
@@ -384,7 +385,7 @@ enum rsvp_classes {
RSVP_CLASS_LABEL,
RSVP_CLASS_HOP_COUNT,
RSVP_CLASS_STRICT_SOURCE_ROUTE,
- RSVP_CLASS_LABEL_REQUEST=19,
+ RSVP_CLASS_LABEL_REQUEST = 19,
RSVP_CLASS_EXPLICIT_ROUTE,
RSVP_CLASS_RECORD_ROUTE,
@@ -396,7 +397,7 @@ enum rsvp_classes {
/* 26-29 Unassigned */
- RSVP_CLASS_DIAGNOSTIC = 30,
+ RSVP_CLASS_DIAGNOSTIC = 30,
RSVP_CLASS_ROUTE,
RSVP_CLASS_DIAG_RESPONSE,
RSVP_CLASS_DIAG_SELECT,
@@ -406,14 +407,14 @@ enum rsvp_classes {
RSVP_CLASS_PROTECTION,
/* 38-41 Unassigned */
- RSVP_CLASS_DSBM_IP_ADDRESS = 42,
+ RSVP_CLASS_DSBM_IP_ADDRESS = 42,
RSVP_CLASS_SBM_PRIORITY,
RSVP_CLASS_DSBM_TIMER_INTERVALS,
RSVP_CLASS_SBM_INFO,
/* 46-62 Unassigned */
- RSVP_CLASS_DETOUR = 63,
+ RSVP_CLASS_DETOUR = 63,
RSVP_CLASS_CHALLENGE,
RSVP_CLASS_DIFFSERV,
RSVP_CLASS_CLASSTYPE, /* FF: RFC4124 */
@@ -421,12 +422,12 @@ enum rsvp_classes {
/* 68-123 Unassigned */
- RSVP_CLASS_VENDOR_PRIVATE_1=124,
- RSVP_CLASS_VENDOR_PRIVATE_2=125,
- RSVP_CLASS_VENDOR_PRIVATE_3=126,
- RSVP_CLASS_VENDOR_PRIVATE_4=127,
+ RSVP_CLASS_VENDOR_PRIVATE_1 = 124,
+ RSVP_CLASS_VENDOR_PRIVATE_2 = 125,
+ RSVP_CLASS_VENDOR_PRIVATE_3 = 126,
+ RSVP_CLASS_VENDOR_PRIVATE_4 = 127,
- RSVP_CLASS_NODE_CHAR = 128,
+ RSVP_CLASS_NODE_CHAR = 128,
RSVP_CLASS_SUGGESTED_LABEL,
RSVP_CLASS_ACCEPTABLE_LABEL_SET,
RSVP_CLASS_RESTART_CAP,
@@ -435,22 +436,22 @@ enum rsvp_classes {
/* 166-187 Unassigned */
- RSVP_CLASS_VENDOR_PRIVATE_5=188,
- RSVP_CLASS_VENDOR_PRIVATE_6=189,
- RSVP_CLASS_VENDOR_PRIVATE_7=190,
- RSVP_CLASS_VENDOR_PRIVATE_8=191,
+ RSVP_CLASS_VENDOR_PRIVATE_5 = 188,
+ RSVP_CLASS_VENDOR_PRIVATE_6 = 189,
+ RSVP_CLASS_VENDOR_PRIVATE_7 = 190,
+ RSVP_CLASS_VENDOR_PRIVATE_8 = 191,
- RSVP_CLASS_SESSION_ASSOC = 192,
+ RSVP_CLASS_SESSION_ASSOC = 192,
RSVP_CLASS_LSP_TUNNEL_IF_ID,
/* 194 Unassigned */
- RSVP_CLASS_NOTIFY_REQUEST = 195,
+ RSVP_CLASS_NOTIFY_REQUEST = 195,
RSVP_CLASS_ADMIN_STATUS,
RSVP_CLASS_LSP_ATTRIBUTES,
RSVP_CLASS_ALARM_SPEC,
RSVP_CLASS_ASSOCIATION,
/* 203-204 Unassigned */
- RSVP_CLASS_FAST_REROUTE = 205,
+ RSVP_CLASS_FAST_REROUTE = 205,
/* 206 Unassigned */
RSVP_CLASS_SESSION_ATTRIBUTE = 207,
/* 208-223 Unassigned */
@@ -460,7 +461,7 @@ enum rsvp_classes {
in this range that it does not understand.
*/
/* 224 Unassigned */
- RSVP_CLASS_DCLASS = 225,
+ RSVP_CLASS_DCLASS = 225,
RSVP_CLASS_PACKETCABLE_EXTENSIONS,
RSVP_CLASS_ATM_SERVICECLASS,
RSVP_CLASS_CALL_OPS,
@@ -470,15 +471,17 @@ enum rsvp_classes {
/* 232-251 Unassigned */
- RSVP_CLASS_VENDOR_PRIVATE_9=252,
- RSVP_CLASS_VENDOR_PRIVATE_10=253,
- RSVP_CLASS_VENDOR_PRIVATE_11=254,
- RSVP_CLASS_VENDOR_PRIVATE_12=255
+ RSVP_CLASS_VENDOR_PRIVATE_9 = 252,
+ RSVP_CLASS_VENDOR_PRIVATE_10 = 253,
+ RSVP_CLASS_VENDOR_PRIVATE_11 = 254,
+ RSVP_CLASS_VENDOR_PRIVATE_12 = 255
};
+/* XXX: are any/all of the "missing" values below supposed to have value-strings */
static const value_string rsvp_class_vals[] = {
{ RSVP_CLASS_NULL, "NULL object"},
{ RSVP_CLASS_SESSION, "SESSION object"},
+
{ RSVP_CLASS_HOP, "HOP object"},
{ RSVP_CLASS_INTEGRITY, "INTEGRITY object"},
{ RSVP_CLASS_TIME_VALUES, "TIME VALUES object"},
@@ -498,30 +501,42 @@ static const value_string rsvp_class_vals[] = {
{ RSVP_CLASS_LABEL_REQUEST, "LABEL REQUEST object"},
{ RSVP_CLASS_EXPLICIT_ROUTE, "EXPLICIT ROUTE object"},
{ RSVP_CLASS_RECORD_ROUTE, "RECORD ROUTE object"},
- { RSVP_CLASS_SESSION_ATTRIBUTE, "SESSION ATTRIBUTE object"},
+
+ { RSVP_CLASS_HELLO, "HELLO object"},
+
{ RSVP_CLASS_MESSAGE_ID, "MESSAGE-ID object"},
{ RSVP_CLASS_MESSAGE_ID_ACK, "MESSAGE-ID ACK/NACK object"},
{ RSVP_CLASS_MESSAGE_ID_LIST, "MESSAGE-ID LIST object"},
- { RSVP_CLASS_HELLO, "HELLO object"},
+
+/*
+ RSVP_CLASS_DIAGNOSTIC
+ RSVP_CLASS_ROUTE,
+ RSVP_CLASS_DIAG_RESPONSE,
+ RSVP_CLASS_DIAG_SELECT,
+*/
+
{ RSVP_CLASS_RECOVERY_LABEL, "RECOVERY-LABEL object"},
{ RSVP_CLASS_UPSTREAM_LABEL, "UPSTREAM-LABEL object"},
{ RSVP_CLASS_LABEL_SET, "LABEL-SET object"},
{ RSVP_CLASS_PROTECTION, "PROTECTION object"},
+
+/*
+ RSVP_CLASS_DSBM_IP_ADDRESS
+ RSVP_CLASS_SBM_PRIORITY,
+ RSVP_CLASS_DSBM_TIMER_INTERVALS,
+ RSVP_CLASS_SBM_INFO,
+*/
+
+ { RSVP_CLASS_DETOUR, "DETOUR object"},
+/*
+ RSVP_CLASS_CHALLENGE,
+*/
{ RSVP_CLASS_DIFFSERV, "DIFFSERV object"},
{ RSVP_CLASS_CLASSTYPE, "CLASSTYPE object"},
- { RSVP_CLASS_SUGGESTED_LABEL, "SUGGESTED-LABEL object"},
- { RSVP_CLASS_ACCEPTABLE_LABEL_SET, "ACCEPTABLE-LABEL-SET object"},
- { RSVP_CLASS_RESTART_CAP, "RESTART-CAPABILITY object"},
- { RSVP_CLASS_DCLASS, "DCLASS object"},
- { RSVP_CLASS_LSP_TUNNEL_IF_ID, "LSP-TUNNEL INTERFACE-ID object"},
- { RSVP_CLASS_NOTIFY_REQUEST, "NOTIFY-REQUEST object"},
- { RSVP_CLASS_ADMIN_STATUS, "ADMIN-STATUS object"},
- { RSVP_CLASS_LSP_ATTRIBUTES, "LSP ATTRIBUTES object"},
- { RSVP_CLASS_ASSOCIATION, "ASSOCIATION object"},
- { RSVP_CLASS_GENERALIZED_UNI, "GENERALIZED-UNI object"},
- { RSVP_CLASS_CALL_ID, "CALL-ID object"},
- { RSVP_CLASS_DETOUR, "DETOUR object"},
- { RSVP_CLASS_FAST_REROUTE, "FAST-REROUTE object"},
+/*
+ RSVP_CLASS_LSP_REQUIRED_ATTRIBUTES,
+*/
+
{ RSVP_CLASS_VENDOR_PRIVATE_1, "VENDOR PRIVATE object (0bbbbbbb: "
"reject if unknown)"},
{ RSVP_CLASS_VENDOR_PRIVATE_2, "VENDOR PRIVATE object (0bbbbbbb: "
@@ -530,6 +545,14 @@ static const value_string rsvp_class_vals[] = {
"reject if unknown)"},
{ RSVP_CLASS_VENDOR_PRIVATE_4, "VENDOR PRIVATE object (0bbbbbbb: "
"reject if unknown)"},
+
+/*
+ RSVP_CLASS_NODE_CHAR
+*/
+ { RSVP_CLASS_SUGGESTED_LABEL, "SUGGESTED-LABEL object"},
+ { RSVP_CLASS_ACCEPTABLE_LABEL_SET, "ACCEPTABLE-LABEL-SET object"},
+ { RSVP_CLASS_RESTART_CAP, "RESTART-CAPABILITY object"},
+
{ RSVP_CLASS_VENDOR_PRIVATE_5, "VENDOR PRIVATE object (10bbbbbb: "
"ignore if unknown)"},
{ RSVP_CLASS_VENDOR_PRIVATE_6, "VENDOR PRIVATE object (10bbbbbb: "
@@ -538,6 +561,35 @@ static const value_string rsvp_class_vals[] = {
"ignore if unknown)"},
{ RSVP_CLASS_VENDOR_PRIVATE_8, "VENDOR PRIVATE object (10bbbbbb: "
"ignore if unknown)"},
+/*
+ RSVP_CLASS_SESSION_ASSOC
+*/
+ { RSVP_CLASS_LSP_TUNNEL_IF_ID, "LSP-TUNNEL INTERFACE-ID object"},
+
+ { RSVP_CLASS_NOTIFY_REQUEST, "NOTIFY-REQUEST object"},
+ { RSVP_CLASS_ADMIN_STATUS, "ADMIN-STATUS object"},
+ { RSVP_CLASS_LSP_ATTRIBUTES, "LSP ATTRIBUTES object"},
+/*
+ RSVP_CLASS_ALARM_SPEC,
+*/
+ { RSVP_CLASS_ASSOCIATION, "ASSOCIATION object"},
+
+ { RSVP_CLASS_FAST_REROUTE, "FAST-REROUTE object"},
+
+ { RSVP_CLASS_SESSION_ATTRIBUTE, "SESSION ATTRIBUTE object"},
+
+ { RSVP_CLASS_DCLASS, "DCLASS object"},
+/*
+ RSVP_CLASS_PACKETCABLE_EXTENSIONS,
+ RSVP_CLASS_ATM_SERVICECLASS,
+ RSVP_CLASS_CALL_OPS,
+*/
+ { RSVP_CLASS_GENERALIZED_UNI, "GENERALIZED-UNI object"},
+ { RSVP_CLASS_CALL_ID, "CALL-ID object"},
+/*
+ RSVP_CLASS_3GPP2_OBJECT,
+*/
+
{ RSVP_CLASS_VENDOR_PRIVATE_9, "VENDOR PRIVATE object (11bbbbbb: "
"forward if unknown)"},
{ RSVP_CLASS_VENDOR_PRIVATE_10, "VENDOR PRIVATE object (11bbbbbb: "
@@ -548,12 +600,13 @@ static const value_string rsvp_class_vals[] = {
"forward if unknown)"},
{ 0, NULL}
};
+static value_string_ext rsvp_class_vals_ext = VALUE_STRING_EXT_INIT(rsvp_class_vals);
/*
* RSVP error values
*/
enum rsvp_error_types {
- RSVP_ERROR_CONFIRM = 0,
+ RSVP_ERROR_CONFIRM = 0,
RSVP_ERROR_ADMISSION,
RSVP_ERROR_POLICY,
RSVP_ERROR_NO_PATH,
@@ -562,10 +615,10 @@ enum rsvp_error_types {
RSVP_ERROR_UNKNOWN_RESV_STYLE,
RSVP_ERROR_CONFLICT_DEST_PORTS,
RSVP_ERROR_CONFLICT_SRC_PORTS,
- RSVP_ERROR_PREEMPTED=12,
+ RSVP_ERROR_PREEMPTED =12,
RSVP_ERROR_UNKNOWN_CLASS,
RSVP_ERROR_UNKNOWN_C_TYPE,
- RSVP_ERROR_TRAFFIC = 21,
+ RSVP_ERROR_TRAFFIC = 21,
RSVP_ERROR_TRAFFIC_SYSTEM,
RSVP_ERROR_SYSTEM,
RSVP_ERROR_ROUTING,
@@ -608,6 +661,7 @@ static const value_string rsvp_error_codes[] = {
{ RSVP_ERROR_USER_ERROR_SPEC, "User error spec"},
{ 0, NULL}
};
+static value_string_ext rsvp_error_codes_ext = VALUE_STRING_EXT_INIT(rsvp_error_codes);
static const value_string rsvp_admission_control_error_vals[] = {
{ 1, "Delay bound cannot be met"},
@@ -617,6 +671,7 @@ static const value_string rsvp_admission_control_error_vals[] = {
{ 5, "Bad Association Type"},
{ 0, NULL}
};
+static value_string_ext rsvp_admission_control_error_vals_ext = VALUE_STRING_EXT_INIT(rsvp_admission_control_error_vals);
static const value_string rsvp_policy_control_error_vals[] = {
{ 0, "Information reporting"},
@@ -647,6 +702,7 @@ static const value_string rsvp_policy_control_error_vals[] = {
{ 104, "Inter-domain explicit route rejected"},
{ 0, NULL}
};
+static value_string_ext rsvp_policy_control_error_vals_ext = VALUE_STRING_EXT_INIT(rsvp_policy_control_error_vals);
static const value_string rsvp_traffic_control_error_vals[] = {
{ 1, "Service conflict"},
@@ -656,6 +712,7 @@ static const value_string rsvp_traffic_control_error_vals[] = {
{ 5, "Bad Adspec value"},
{ 0, NULL}
};
+static value_string_ext rsvp_traffic_control_error_vals_ext = VALUE_STRING_EXT_INIT(rsvp_traffic_control_error_vals);
static const value_string rsvp_routing_error_vals[] = {
{ 1, "Bad EXPLICIT_ROUTE object"},
@@ -707,6 +764,7 @@ static const value_string rsvp_routing_error_vals[] = {
{ 106, "Invalid SPC interface ID/label (ASON)"},
{ 0, NULL}
};
+static value_string_ext rsvp_routing_error_vals_ext = VALUE_STRING_EXT_INIT(rsvp_routing_error_vals);
static const value_string rsvp_notify_error_vals[] = {
{ 1, "RRO too large for MTU"},
@@ -722,6 +780,7 @@ static const value_string rsvp_notify_error_vals[] = {
{ 11, "LSP Local Failure"},
{ 0, NULL}
};
+static value_string_ext rsvp_notify_error_vals_ext = VALUE_STRING_EXT_INIT(rsvp_notify_error_vals);
static const value_string rsvp_diffserv_error_vals[] = {
{ 1, "Unexpected DIFFSERV object"},
@@ -731,6 +790,7 @@ static const value_string rsvp_diffserv_error_vals[] = {
{ 5, "Per-LSP context allocation failure"},
{ 0, NULL}
};
+static value_string_ext rsvp_diffserv_error_vals_ext = VALUE_STRING_EXT_INIT(rsvp_diffserv_error_vals);
/* FF: RFC4124 */
static const value_string rsvp_diffserv_aware_te_error_vals[] = {
@@ -744,6 +804,7 @@ static const value_string rsvp_diffserv_aware_te_error_vals[] = {
{ 8, "Inconsistency between signaled PHBs and signaled CT"},
{ 0, NULL}
};
+static value_string_ext rsvp_diffserv_aware_te_error_vals_ext = VALUE_STRING_EXT_INIT(rsvp_diffserv_aware_te_error_vals);
static const value_string rsvp_call_mgmt_error_vals[] = {
{ 1, "Call ID Contention"},
@@ -752,22 +813,23 @@ static const value_string rsvp_call_mgmt_error_vals[] = {
{ 4, "Duplicate Call"},
{ 0, NULL}
};
+static value_string_ext rsvp_call_mgmt_error_vals_ext = VALUE_STRING_EXT_INIT(rsvp_call_mgmt_error_vals);
/*
* Defines the reservation style plus style-specific information that
* is not a FLOWSPEC or FILTER_SPEC object, in a RESV message.
*/
#define RSVP_DISTINCT (1 << 3)
-#define RSVP_SHARED (2 << 3)
+#define RSVP_SHARED (2 << 3)
#define RSVP_SHARING_MASK (RSVP_DISTINCT | RSVP_SHARED)
-#define RSVP_SCOPE_WILD 1
+#define RSVP_SCOPE_WILD 1
#define RSVP_SCOPE_EXPLICIT 2
-#define RSVP_SCOPE_MASK 0x07
+#define RSVP_SCOPE_MASK 0x07
-#define RSVP_WF (RSVP_SHARED | RSVP_SCOPE_WILD)
+#define RSVP_WF (RSVP_SHARED | RSVP_SCOPE_WILD)
#define RSVP_FF (RSVP_DISTINCT | RSVP_SCOPE_EXPLICIT)
-#define RSVP_SE (RSVP_SHARED | RSVP_SCOPE_EXPLICIT)
+#define RSVP_SE (RSVP_SHARED | RSVP_SCOPE_EXPLICIT)
static const value_string style_vals[] = {
{ RSVP_WF, "Wildcard Filter" },
@@ -796,17 +858,17 @@ enum {
enum qos_service_type {
QOS_QUALITATIVE = 128, /* Qualitative service */
QOS_NULL = 6, /* Null service (RFC2997) */
- QOS_CONTROLLED_LOAD= 5, /* Controlled Load Service */
- QOS_GUARANTEED = 2, /* Guaranteed service */
- QOS_TSPEC = 1 /* Traffic specification */
+ QOS_CONTROLLED_LOAD= 5, /* Controlled Load Service */
+ QOS_GUARANTEED = 2, /* Guaranteed service */
+ QOS_TSPEC = 1 /* Traffic specification */
};
static const value_string qos_vals[] = {
- { QOS_QUALITATIVE, "Qualitative QoS" },
- { QOS_NULL, "Null-Service QoS" },
+ { QOS_QUALITATIVE, "Qualitative QoS" },
+ { QOS_NULL, "Null-Service QoS" },
{ QOS_CONTROLLED_LOAD, "Controlled-load QoS" },
- { QOS_GUARANTEED, "Guaranteed rate QoS" },
- { QOS_TSPEC, "Traffic specification" },
+ { QOS_GUARANTEED, "Guaranteed rate QoS" },
+ { QOS_TSPEC, "Traffic specification" },
{ 0, NULL }
};
@@ -817,14 +879,15 @@ static const value_string svc_vals[] = {
{ 130, "Guaranteed-rate RSpec" },
{ 0, NULL }
};
+static value_string_ext svc_vals_ext = VALUE_STRING_EXT_INIT(svc_vals);
enum rsvp_spec_types { INTSRV = 2 };
enum intsrv_services {
- INTSRV_GENERAL = 1,
- INTSRV_GTD = 2,
- INTSRV_CLOAD = 5,
- INTSRV_NULL = 6,
+ INTSRV_GENERAL = 1,
+ INTSRV_GTD = 2,
+ INTSRV_CLOAD = 5,
+ INTSRV_NULL = 6,
INTSRV_QUALITATIVE = 128
};
@@ -836,25 +899,31 @@ static const value_string intsrv_services_str[] = {
{ INTSRV_QUALITATIVE, "Null Service"},
{ 0, NULL }
};
+static value_string_ext intsrv_services_str_ext = VALUE_STRING_EXT_INIT(intsrv_services_str);
#if 0
enum intsrv_field_name {
- INTSRV_NON_IS_HOPS = 1, INTSRV_COMPOSED_NON_IS_HOPS,
- INTSRV_IS_HOPS, INTSRV_COMPOSED_IS_HOPS,
- INTSRV_PATH_BANDWIDTH, INTSRV_MIN_PATH_BANDWIDTH,
- INTSRV_IF_LATENCY, INTSRV_PATH_LATENCY,
- INTSRV_MTU, INTSRV_COMPOSED_MTU,
-
- INTSRV_TOKEN_BUCKET_TSPEC = 127,
- INTSRV_QUALITATIVE_TSPEC = 128,
- INTSRV_GTD_RSPEC = 130,
-
- INTSRV_DELAY = 131, /* Gtd Parameter C - Max Delay Bound - bytes */
- INTSRV_MAX_JITTER, /* Gtd Parameter D - Max Jitter */
- INTSRV_E2E_DELAY, /* Gtd Parameter Ctot */
- INTSRV_E2E_MAX_JITTER, /* Gtd Parameter Dtot */
- INTSRV_SHP_DELAY, /* Gtd Parameter Csum */
- INTSRV_SHP_MAX_JITTER /* Gtd Parameter Dsum */
+ INTSRV_NON_IS_HOPS = 1,
+ INTSRV_COMPOSED_NON_IS_HOPS,
+ INTSRV_IS_HOPS,
+ INTSRV_COMPOSED_IS_HOPS,
+ INTSRV_PATH_BANDWIDTH,
+ INTSRV_MIN_PATH_BANDWIDTH,
+ INTSRV_IF_LATENCY,
+ INTSRV_PATH_LATENCY,
+ INTSRV_MTU,
+ INTSRV_COMPOSED_MTU,
+
+ INTSRV_TOKEN_BUCKET_TSPEC = 127,
+ INTSRV_QUALITATIVE_TSPEC = 128,
+ INTSRV_GTD_RSPEC = 130,
+
+ INTSRV_DELAY = 131, /* Gtd Parameter C - Max Delay Bound - bytes */
+ INTSRV_MAX_JITTER, /* Gtd Parameter D - Max Jitter */
+ INTSRV_E2E_DELAY, /* Gtd Parameter Ctot */
+ INTSRV_E2E_MAX_JITTER, /* Gtd Parameter Dtot */
+ INTSRV_SHP_DELAY, /* Gtd Parameter Csum */
+ INTSRV_SHP_MAX_JITTER /* Gtd Parameter Dsum */
};
#endif
@@ -869,6 +938,7 @@ static const value_string adspec_params[] = {
{ 136, "Since-last-reshaping point composed D"},
{ 0, NULL }
};
+static value_string_ext adspec_params_ext = VALUE_STRING_EXT_INIT(adspec_params);
/*
* FF: please keep this list in sync with
@@ -1030,6 +1100,7 @@ const value_string gmpls_sonet_signal_type_str[] = {
{ 23, "STS-192c SPE / VC-4-64c"},
{ 0, NULL}
};
+static value_string_ext gmpls_sonet_signal_type_str_ext = VALUE_STRING_EXT_INIT(gmpls_sonet_signal_type_str);
static const value_string ouni_guni_diversity_str[] = {
{ 1, "Node Diverse"},
@@ -1055,12 +1126,14 @@ static const range_string gmpls_g709_signal_type_rvals[] = {
/* -------------------- Stuff for MPLS/TE objects -------------------- */
-static const value_string proto_vals[] = { { IP_PROTO_ICMP, "ICMP"},
- { IP_PROTO_IGMP, "IGMP"},
- { IP_PROTO_TCP, "TCP" },
- { IP_PROTO_UDP, "UDP" },
- { IP_PROTO_OSPF, "OSPF"},
- { 0, NULL } };
+static const value_string proto_vals[] = {
+ { IP_PROTO_ICMP, "ICMP"},
+ { IP_PROTO_IGMP, "IGMP"},
+ { IP_PROTO_TCP, "TCP" },
+ { IP_PROTO_UDP, "UDP" },
+ { IP_PROTO_OSPF, "OSPF"},
+ { 0, NULL }
+};
/* Filter keys */
enum hf_rsvp_filter_keys {
@@ -1202,110 +1275,110 @@ static int hf_rsvp_filter[RSVPF_MAX] = { -1 };
* the session info and source info structures.
*/
static gint
-rsvp_equal (gconstpointer k1, gconstpointer k2)
+rsvp_equal(gconstpointer k1, gconstpointer k2)
{
const struct rsvp_request_key *key1 = (const struct rsvp_request_key*) k1;
const struct rsvp_request_key *key2 = (const struct rsvp_request_key*) k2;
if (key1->conversation != key2->conversation) {
- return 0;
+ return 0;
}
if (key1->session_type != key2->session_type) {
- return 0;
+ return 0;
}
switch (key1->session_type) {
case RSVP_SESSION_TYPE_IPV4:
- if (ADDRESSES_EQUAL(&key1->u.session_ipv4.destination,
- &key2->u.session_ipv4.destination) == FALSE)
- return 0;
+ if (ADDRESSES_EQUAL(&key1->u.session_ipv4.destination,
+ &key2->u.session_ipv4.destination) == FALSE)
+ return 0;
- if (key1->u.session_ipv4.protocol != key2->u.session_ipv4.protocol)
- return 0;
+ if (key1->u.session_ipv4.protocol != key2->u.session_ipv4.protocol)
+ return 0;
- if (key1->u.session_ipv4.udp_dest_port != key2->u.session_ipv4.udp_dest_port)
- return 0;
+ if (key1->u.session_ipv4.udp_dest_port != key2->u.session_ipv4.udp_dest_port)
+ return 0;
- break;
+ break;
case RSVP_SESSION_TYPE_IPV6:
- /* this is not supported yet for conversations */
- break;
+ /* this is not supported yet for conversations */
+ break;
case RSVP_SESSION_TYPE_IPV4_LSP:
- if (ADDRESSES_EQUAL(&key1->u.session_ipv4_lsp.destination,
- &key2->u.session_ipv4_lsp.destination) == FALSE)
- return 0;
+ if (ADDRESSES_EQUAL(&key1->u.session_ipv4_lsp.destination,
+ &key2->u.session_ipv4_lsp.destination) == FALSE)
+ return 0;
- if (key1->u.session_ipv4_lsp.udp_dest_port !=
- key2->u.session_ipv4_lsp.udp_dest_port)
- return 0;
+ if (key1->u.session_ipv4_lsp.udp_dest_port !=
+ key2->u.session_ipv4_lsp.udp_dest_port)
+ return 0;
- if (key1->u.session_ipv4_lsp.ext_tunnel_id !=
- key2->u.session_ipv4_lsp.ext_tunnel_id)
- return 0;
+ if (key1->u.session_ipv4_lsp.ext_tunnel_id !=
+ key2->u.session_ipv4_lsp.ext_tunnel_id)
+ return 0;
- break;
+ break;
case RSVP_SESSION_TYPE_AGGREGATE_IPV4:
- if (ADDRESSES_EQUAL(&key1->u.session_agg_ipv4.destination,
- &key2->u.session_agg_ipv4.destination) == FALSE)
- return 0;
+ if (ADDRESSES_EQUAL(&key1->u.session_agg_ipv4.destination,
+ &key2->u.session_agg_ipv4.destination) == FALSE)
+ return 0;
- if (key1->u.session_agg_ipv4.dscp != key2->u.session_agg_ipv4.dscp)
- return 0;
+ if (key1->u.session_agg_ipv4.dscp != key2->u.session_agg_ipv4.dscp)
+ return 0;
- break;
+ break;
case RSVP_SESSION_TYPE_AGGREGATE_IPV6:
- /* this is not supported yet for conversations */
- break;
+ /* this is not supported yet for conversations */
+ break;
case RSVP_SESSION_TYPE_IPV4_UNI:
- if (ADDRESSES_EQUAL(&key1->u.session_ipv4_uni.destination,
- &key2->u.session_ipv4_uni.destination) == FALSE)
- return 0;
+ if (ADDRESSES_EQUAL(&key1->u.session_ipv4_uni.destination,
+ &key2->u.session_ipv4_uni.destination) == FALSE)
+ return 0;
- if (key1->u.session_ipv4_uni.udp_dest_port !=
- key2->u.session_ipv4_uni.udp_dest_port)
- return 0;
+ if (key1->u.session_ipv4_uni.udp_dest_port !=
+ key2->u.session_ipv4_uni.udp_dest_port)
+ return 0;
- if (key1->u.session_ipv4_uni.ext_tunnel_id !=
- key2->u.session_ipv4_uni.ext_tunnel_id)
- return 0;
+ if (key1->u.session_ipv4_uni.ext_tunnel_id !=
+ key2->u.session_ipv4_uni.ext_tunnel_id)
+ return 0;
- break;
+ break;
case RSVP_SESSION_TYPE_IPV4_E_NNI:
- if (ADDRESSES_EQUAL(&key1->u.session_ipv4_enni.destination,
- &key2->u.session_ipv4_enni.destination) == FALSE)
- return 0;
+ if (ADDRESSES_EQUAL(&key1->u.session_ipv4_enni.destination,
+ &key2->u.session_ipv4_enni.destination) == FALSE)
+ return 0;
- if (key1->u.session_ipv4_enni.udp_dest_port !=
- key2->u.session_ipv4_enni.udp_dest_port)
- return 0;
+ if (key1->u.session_ipv4_enni.udp_dest_port !=
+ key2->u.session_ipv4_enni.udp_dest_port)
+ return 0;
- if (key1->u.session_ipv4_enni.ext_tunnel_id !=
- key2->u.session_ipv4_enni.ext_tunnel_id)
- return 0;
+ if (key1->u.session_ipv4_enni.ext_tunnel_id !=
+ key2->u.session_ipv4_enni.ext_tunnel_id)
+ return 0;
- break;
+ break;
default:
- /* This should never happen. */
- break;
+ /* This should never happen. */
+ break;
}
if (ADDRESSES_EQUAL(&key1->source_info.source,
- &key2->source_info.source) == FALSE)
- return 0;
+ &key2->source_info.source) == FALSE)
+ return 0;
if (key1->source_info.udp_source_port != key2->source_info.udp_source_port)
- return 0;
+ return 0;
/* If we get here, the two keys are equal. */
return 1;
@@ -1316,7 +1389,7 @@ rsvp_equal (gconstpointer k1, gconstpointer k2)
* conversation-id is unique, so we just use that.
*/
static guint
-rsvp_hash (gconstpointer k)
+rsvp_hash(gconstpointer k)
{
const struct rsvp_request_key *key = (const struct rsvp_request_key*) k;
return key->conversation;
@@ -1328,10 +1401,10 @@ rsvp_hash (gconstpointer k)
* hash tables.
*/
static void
-rsvp_init_protocol (void)
+rsvp_init_protocol(void)
{
if (rsvp_request_hash)
- g_hash_table_destroy(rsvp_request_hash);
+ g_hash_table_destroy(rsvp_request_hash);
rsvp_request_hash = g_hash_table_new(rsvp_hash, rsvp_equal);
}
@@ -1362,45 +1435,45 @@ rsvp_class_to_filter_num(int classnum)
case RSVP_CLASS_MESSAGE_ID :
case RSVP_CLASS_MESSAGE_ID_ACK :
case RSVP_CLASS_MESSAGE_ID_LIST :
- return classnum + RSVPF_OBJECT;
- break;
+ return classnum + RSVPF_OBJECT;
+ break;
case RSVP_CLASS_RECOVERY_LABEL :
case RSVP_CLASS_UPSTREAM_LABEL :
case RSVP_CLASS_LABEL_SET :
case RSVP_CLASS_PROTECTION :
- return RSVPF_RECOVERY_LABEL + (classnum - RSVP_CLASS_RECOVERY_LABEL);
+ return RSVPF_RECOVERY_LABEL + (classnum - RSVP_CLASS_RECOVERY_LABEL);
case RSVP_CLASS_SUGGESTED_LABEL :
case RSVP_CLASS_ACCEPTABLE_LABEL_SET :
case RSVP_CLASS_RESTART_CAP :
- return RSVPF_SUGGESTED_LABEL + (classnum - RSVP_CLASS_SUGGESTED_LABEL);
+ return RSVPF_SUGGESTED_LABEL + (classnum - RSVP_CLASS_SUGGESTED_LABEL);
case RSVP_CLASS_DIFFSERV :
- return RSVPF_DIFFSERV;
+ return RSVPF_DIFFSERV;
case RSVP_CLASS_CLASSTYPE :
- return RSVPF_DSTE;
+ return RSVPF_DSTE;
case RSVP_CLASS_NOTIFY_REQUEST :
- return RSVPF_NOTIFY_REQUEST;
+ return RSVPF_NOTIFY_REQUEST;
case RSVP_CLASS_ADMIN_STATUS :
- return RSVPF_ADMIN_STATUS;
+ return RSVPF_ADMIN_STATUS;
case RSVP_CLASS_LSP_ATTRIBUTES :
- return RSVPF_LSP_ATTRIBUTES;
+ return RSVPF_LSP_ATTRIBUTES;
case RSVP_CLASS_ASSOCIATION :
- return RSVPF_ASSOCIATION;
+ return RSVPF_ASSOCIATION;
case RSVP_CLASS_SESSION_ATTRIBUTE :
- return RSVPF_SESSION_ATTRIBUTE;
+ return RSVPF_SESSION_ATTRIBUTE;
case RSVP_CLASS_GENERALIZED_UNI :
- return RSVPF_GENERALIZED_UNI;
+ return RSVPF_GENERALIZED_UNI;
case RSVP_CLASS_CALL_ID :
- return RSVPF_CALL_ID;
+ return RSVPF_CALL_ID;
case RSVP_CLASS_DCLASS :
- return RSVPF_DCLASS;
+ return RSVPF_DCLASS;
case RSVP_CLASS_LSP_TUNNEL_IF_ID :
- return RSVPF_LSP_TUNNEL_IF_ID;
+ return RSVPF_LSP_TUNNEL_IF_ID;
case RSVP_CLASS_VENDOR_PRIVATE_1:
case RSVP_CLASS_VENDOR_PRIVATE_2:
@@ -1417,7 +1490,7 @@ rsvp_class_to_filter_num(int classnum)
return RSVPF_PRIVATE_OBJ;
default:
- return RSVPF_UNKNOWN_OBJ;
+ return RSVPF_UNKNOWN_OBJ;
}
}
@@ -1426,83 +1499,83 @@ rsvp_class_to_tree_type(int classnum)
{
switch(classnum) {
case RSVP_CLASS_SESSION :
- return TT_SESSION;
+ return TT_SESSION;
case RSVP_CLASS_HOP :
- return TT_HOP;
+ return TT_HOP;
case RSVP_CLASS_INTEGRITY :
- return TT_INTEGRITY;
+ return TT_INTEGRITY;
case RSVP_CLASS_TIME_VALUES :
- return TT_TIME_VALUES;
+ return TT_TIME_VALUES;
case RSVP_CLASS_ERROR :
- return TT_ERROR;
+ return TT_ERROR;
case RSVP_CLASS_SCOPE :
- return TT_SCOPE;
+ return TT_SCOPE;
case RSVP_CLASS_STYLE :
- return TT_STYLE;
+ return TT_STYLE;
case RSVP_CLASS_FLOWSPEC :
- return TT_FLOWSPEC;
+ return TT_FLOWSPEC;
case RSVP_CLASS_FILTER_SPEC :
- return TT_FILTER_SPEC;
+ return TT_FILTER_SPEC;
case RSVP_CLASS_SENDER_TEMPLATE :
- return TT_SENDER_TEMPLATE;
+ return TT_SENDER_TEMPLATE;
case RSVP_CLASS_SENDER_TSPEC :
- return TT_TSPEC;
+ return TT_TSPEC;
case RSVP_CLASS_ADSPEC :
- return TT_ADSPEC;
+ return TT_ADSPEC;
case RSVP_CLASS_POLICY :
- return TT_POLICY;
+ return TT_POLICY;
case RSVP_CLASS_CONFIRM :
- return TT_CONFIRM;
+ return TT_CONFIRM;
case RSVP_CLASS_RECOVERY_LABEL :
case RSVP_CLASS_UPSTREAM_LABEL :
case RSVP_CLASS_SUGGESTED_LABEL :
case RSVP_CLASS_LABEL :
- return TT_LABEL;
+ return TT_LABEL;
case RSVP_CLASS_LABEL_REQUEST :
- return TT_LABEL_REQUEST;
+ return TT_LABEL_REQUEST;
case RSVP_CLASS_HELLO :
- return TT_HELLO_OBJ;
+ return TT_HELLO_OBJ;
case RSVP_CLASS_EXPLICIT_ROUTE :
- return TT_EXPLICIT_ROUTE;
+ return TT_EXPLICIT_ROUTE;
case RSVP_CLASS_RECORD_ROUTE :
- return TT_RECORD_ROUTE;
+ return TT_RECORD_ROUTE;
case RSVP_CLASS_MESSAGE_ID :
- return TT_MESSAGE_ID;
+ return TT_MESSAGE_ID;
case RSVP_CLASS_MESSAGE_ID_ACK :
- return TT_MESSAGE_ID_ACK;
+ return TT_MESSAGE_ID_ACK;
case RSVP_CLASS_MESSAGE_ID_LIST :
- return TT_MESSAGE_ID_LIST;
+ return TT_MESSAGE_ID_LIST;
case RSVP_CLASS_LABEL_SET :
- return TT_LABEL_SET;
+ return TT_LABEL_SET;
case RSVP_CLASS_PROTECTION :
- return TT_PROTECTION_INFO;
+ return TT_PROTECTION_INFO;
case RSVP_CLASS_ACCEPTABLE_LABEL_SET :
- return TT_UNKNOWN_CLASS;
+ return TT_UNKNOWN_CLASS;
case RSVP_CLASS_RESTART_CAP :
- return TT_RESTART_CAP;
+ return TT_RESTART_CAP;
case RSVP_CLASS_DIFFSERV :
- return TT_DIFFSERV;
+ return TT_DIFFSERV;
case RSVP_CLASS_CLASSTYPE:
- return TT_CLASSTYPE;
+ return TT_CLASSTYPE;
case RSVP_CLASS_NOTIFY_REQUEST :
- return TT_UNKNOWN_CLASS;
+ return TT_UNKNOWN_CLASS;
case RSVP_CLASS_ADMIN_STATUS :
- return TT_ADMIN_STATUS;
+ return TT_ADMIN_STATUS;
case RSVP_CLASS_LSP_ATTRIBUTES :
case RSVP_CLASS_LSP_REQUIRED_ATTRIBUTES :
- return TT_LSP_ATTRIBUTES;
+ return TT_LSP_ATTRIBUTES;
case RSVP_CLASS_ASSOCIATION :
- return TT_ASSOCIATION;
+ return TT_ASSOCIATION;
case RSVP_CLASS_SESSION_ATTRIBUTE :
- return TT_SESSION_ATTRIBUTE;
+ return TT_SESSION_ATTRIBUTE;
case RSVP_CLASS_GENERALIZED_UNI :
- return TT_GEN_UNI;
+ return TT_GEN_UNI;
case RSVP_CLASS_CALL_ID :
- return TT_CALL_ID;
+ return TT_CALL_ID;
case RSVP_CLASS_DCLASS :
- return TT_DCLASS;
+ return TT_DCLASS;
case RSVP_CLASS_LSP_TUNNEL_IF_ID :
- return TT_LSP_TUNNEL_IF_ID;
+ return TT_LSP_TUNNEL_IF_ID;
case RSVP_CLASS_VENDOR_PRIVATE_1:
case RSVP_CLASS_VENDOR_PRIVATE_2:
case RSVP_CLASS_VENDOR_PRIVATE_3:
@@ -1517,310 +1590,308 @@ rsvp_class_to_tree_type(int classnum)
case RSVP_CLASS_VENDOR_PRIVATE_12:
return TT_PRIVATE_CLASS;
default:
- return TT_UNKNOWN_CLASS;
+ return TT_UNKNOWN_CLASS;
}
}
static void
find_rsvp_session_tempfilt(tvbuff_t *tvb, int hdr_offset, int *session_offp, int *tempfilt_offp)
{
- int s_off = 0, t_off = 0;
- int len, off;
+ int s_off = 0, t_off = 0;
+ int len, off;
guint obj_length;
if (!tvb_bytes_exist(tvb, hdr_offset+6, 2))
- goto done;
+ goto done;
len = tvb_get_ntohs(tvb, hdr_offset+6) + hdr_offset;
off = hdr_offset + 8;
- for (off = hdr_offset + 8; off < len && tvb_bytes_exist(tvb, off, 3); off += obj_length) {
- obj_length = tvb_get_ntohs(tvb, off);
- if (obj_length == 0)
- break;
- switch(tvb_get_guint8(tvb, off+2)) {
- case RSVP_CLASS_SESSION:
- s_off = off;
- break;
- case RSVP_CLASS_SENDER_TEMPLATE:
- case RSVP_CLASS_FILTER_SPEC:
- t_off = off;
- break;
- default:
- break;
- }
+ for (off = hdr_offset + 8; (off < len) && tvb_bytes_exist(tvb, off, 3); off += obj_length) {
+ obj_length = tvb_get_ntohs(tvb, off);
+ if (obj_length == 0)
+ break;
+ switch(tvb_get_guint8(tvb, off+2)) {
+ case RSVP_CLASS_SESSION:
+ s_off = off;
+ break;
+ case RSVP_CLASS_SENDER_TEMPLATE:
+ case RSVP_CLASS_FILTER_SPEC:
+ t_off = off;
+ break;
+ default:
+ break;
+ }
}
done:
- if (session_offp) *session_offp = s_off;
+ if (session_offp) *session_offp = s_off;
if (tempfilt_offp) *tempfilt_offp = t_off;
}
static char *
-summary_session (tvbuff_t *tvb, int offset)
+summary_session(tvbuff_t *tvb, int offset)
{
- static char buf[100];
-
switch(tvb_get_guint8(tvb, offset+3)) {
case RSVP_SESSION_TYPE_IPV4:
- g_snprintf(buf, 100, "SESSION: IPv4, Destination %s, Protocol %d, Port %d. ",
- tvb_ip_to_str(tvb, offset+4),
- tvb_get_guint8(tvb, offset+8),
- tvb_get_ntohs(tvb, offset+10));
- break;
+ return ep_strdup_printf("SESSION: IPv4, Destination %s, Protocol %d, Port %d. ",
+ tvb_ip_to_str(tvb, offset+4),
+ tvb_get_guint8(tvb, offset+8),
+ tvb_get_ntohs(tvb, offset+10));
+ break;
case RSVP_SESSION_TYPE_IPV4_LSP:
- g_snprintf(buf, 100, "SESSION: IPv4-LSP, Destination %s, Tunnel ID %d, Ext ID %0x. ",
- tvb_ip_to_str(tvb, offset+4),
- tvb_get_ntohs(tvb, offset+10),
- tvb_get_ntohl(tvb, offset+12));
- break;
+ return ep_strdup_printf("SESSION: IPv4-LSP, Destination %s, Tunnel ID %d, Ext ID %0x. ",
+ tvb_ip_to_str(tvb, offset+4),
+ tvb_get_ntohs(tvb, offset+10),
+ tvb_get_ntohl(tvb, offset+12));
+ break;
case RSVP_SESSION_TYPE_AGGREGATE_IPV4:
- g_snprintf(buf, 100, "SESSION: IPv4-Aggregate, Destination %s, DSCP %d. ",
- tvb_ip_to_str(tvb, offset+4),
- tvb_get_guint8(tvb, offset+11));
- break;
+ return ep_strdup_printf("SESSION: IPv4-Aggregate, Destination %s, DSCP %d. ",
+ tvb_ip_to_str(tvb, offset+4),
+ tvb_get_guint8(tvb, offset+11));
+ break;
case RSVP_SESSION_TYPE_IPV4_UNI:
- g_snprintf(buf, 100, "SESSION: IPv4-UNI, Destination %s, Tunnel ID %d, Ext Address %s. ",
- tvb_ip_to_str(tvb, offset+4),
- tvb_get_ntohs(tvb, offset+10),
- tvb_ip_to_str(tvb, offset+12));
- break;
+ return ep_strdup_printf("SESSION: IPv4-UNI, Destination %s, Tunnel ID %d, Ext Address %s. ",
+ tvb_ip_to_str(tvb, offset+4),
+ tvb_get_ntohs(tvb, offset+10),
+ tvb_ip_to_str(tvb, offset+12));
+ break;
case RSVP_SESSION_TYPE_IPV4_E_NNI:
- g_snprintf(buf, 100, "SESSION: IPv4-E-NNI, Destination %s, Tunnel ID %d, Ext Address %s. ",
- tvb_ip_to_str(tvb, offset+4),
- tvb_get_ntohs(tvb, offset+10),
- tvb_ip_to_str(tvb, offset+12));
- break;
+ return ep_strdup_printf("SESSION: IPv4-E-NNI, Destination %s, Tunnel ID %d, Ext Address %s. ",
+ tvb_ip_to_str(tvb, offset+4),
+ tvb_get_ntohs(tvb, offset+10),
+ tvb_ip_to_str(tvb, offset+12));
+ break;
default:
- g_snprintf(buf, 100, "SESSION: Type %d. ", tvb_get_guint8(tvb, offset+3));
+ return ep_strdup_printf("SESSION: Type %d. ", tvb_get_guint8(tvb, offset+3));
+ break;
}
-
- return buf;
+ DISSECTOR_ASSERT_NOT_REACHED();
}
static char *
-summary_template (tvbuff_t *tvb, int offset)
+summary_template(tvbuff_t *tvb, int offset)
{
- static char buf[80];
const char *objtype;
if (tvb_get_guint8(tvb, offset+2) == RSVP_CLASS_FILTER_SPEC)
- objtype = "FILTERSPEC";
+ objtype = "FILTERSPEC";
else
- objtype = "SENDER TEMPLATE";
+ objtype = "SENDER TEMPLATE";
switch(tvb_get_guint8(tvb, offset+3)) {
case 1:
- g_snprintf(buf, 80, "%s: IPv4, Sender %s, Port %d. ", objtype,
- tvb_ip_to_str(tvb, offset+4),
- tvb_get_ntohs(tvb, offset+10));
- break;
+ return ep_strdup_printf("%s: IPv4, Sender %s, Port %d. ", objtype,
+ tvb_ip_to_str(tvb, offset+4),
+ tvb_get_ntohs(tvb, offset+10));
+ break;
case 7:
- g_snprintf(buf, 80, "%s: IPv4-LSP, Tunnel Source: %s, LSP ID: %d. ", objtype,
- tvb_ip_to_str(tvb, offset+4),
- tvb_get_ntohs(tvb, offset+10));
- break;
+ return ep_strdup_printf("%s: IPv4-LSP, Tunnel Source: %s, LSP ID: %d. ", objtype,
+ tvb_ip_to_str(tvb, offset+4),
+ tvb_get_ntohs(tvb, offset+10));
+ break;
case 9:
- g_snprintf(buf, 80, "%s: IPv4-Aggregate, Aggregator %s. ", objtype,
- tvb_ip_to_str(tvb, offset+4));
- break;
+ return ep_strdup_printf("%s: IPv4-Aggregate, Aggregator %s. ", objtype,
+ tvb_ip_to_str(tvb, offset+4));
+ break;
default:
- g_snprintf(buf, 80, "%s: Type %d. ", objtype, tvb_get_guint8(tvb, offset+3));
+ return ep_strdup_printf("%s: Type %d. ", objtype, tvb_get_guint8(tvb, offset+3));
+ break;
}
-
- return buf;
+ DISSECTOR_ASSERT_NOT_REACHED();
}
/*------------------------------------------------------------------------------
* SESSION
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_session (proto_item *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type,
- rsvp_conversation_info *rsvph)
+dissect_rsvp_session(proto_item *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type,
+ rsvp_conversation_info *rsvph)
{
proto_item *hidden_item;
- int offset2 = offset + 4;
+ int offset2 = offset + 4;
proto_item_set_text(ti, "%s", summary_session(tvb, offset));
switch(type) {
case RSVP_SESSION_TYPE_IPV4:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 1 - IPv4");
- proto_tree_add_item(rsvp_object_tree,
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 1 - IPv4");
+ proto_tree_add_item(rsvp_object_tree,
hf_rsvp_filter[RSVPF_SESSION_IP],
- tvb, offset2, 4, ENC_BIG_ENDIAN);
-
- proto_tree_add_item(rsvp_object_tree,
- hf_rsvp_filter[RSVPF_SESSION_PROTO], tvb,
- offset2+4, 1, ENC_BIG_ENDIAN);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+5, 1,
- "Flags: %x",
- tvb_get_guint8(tvb, offset2+5));
- proto_tree_add_item(rsvp_object_tree,
- hf_rsvp_filter[RSVPF_SESSION_PORT], tvb,
- offset2+6, 2, ENC_BIG_ENDIAN);
-
- /*
- * Save this information to build the conversation request key
- * later.
- */
- rsvph->session_type = RSVP_SESSION_TYPE_IPV4;
- SET_ADDRESS(&rsvph->destination, AT_IPv4, 4,
+ tvb, offset2, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(rsvp_object_tree,
+ hf_rsvp_filter[RSVPF_SESSION_PROTO], tvb,
+ offset2+4, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+5, 1,
+ "Flags: %x",
+ tvb_get_guint8(tvb, offset2+5));
+ proto_tree_add_item(rsvp_object_tree,
+ hf_rsvp_filter[RSVPF_SESSION_PORT], tvb,
+ offset2+6, 2, ENC_BIG_ENDIAN);
+
+ /*
+ * Save this information to build the conversation request key
+ * later.
+ */
+ rsvph->session_type = RSVP_SESSION_TYPE_IPV4;
+ SET_ADDRESS(&rsvph->destination, AT_IPv4, 4,
tvb_get_ptr(tvb, offset2, 4));
- rsvph->protocol = tvb_get_guint8(tvb, offset2+4);
- rsvph->udp_dest_port = tvb_get_ntohs(tvb, offset2+6);
+ rsvph->protocol = tvb_get_guint8(tvb, offset2+4);
+ rsvph->udp_dest_port = tvb_get_ntohs(tvb, offset2+6);
- break;
+ break;
case RSVP_SESSION_TYPE_IPV6:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 2 - IPv6");
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 16,
- "Destination address: %s",
- tvb_ip6_to_str(tvb, offset2));
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+16, 1,
- "Protocol: %u",
- tvb_get_guint8(tvb, offset2+16));
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+17, 1,
- "Flags: %x",
- tvb_get_guint8(tvb, offset2+17));
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+18, 2,
- "Destination port: %u",
- tvb_get_ntohs(tvb, offset2+18));
- /*
- * Save this information to build the conversation request key
- * later. IPv6 conversatiuon support is not implemented yet, so only
- * the session type is stored.
- */
- rsvph->session_type = RSVP_SESSION_TYPE_IPV6;
-
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 2 - IPv6");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 16,
+ "Destination address: %s",
+ tvb_ip6_to_str(tvb, offset2));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+16, 1,
+ "Protocol: %u",
+ tvb_get_guint8(tvb, offset2+16));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+17, 1,
+ "Flags: %x",
+ tvb_get_guint8(tvb, offset2+17));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+18, 2,
+ "Destination port: %u",
+ tvb_get_ntohs(tvb, offset2+18));
+ /*
+ * Save this information to build the conversation request key
+ * later. IPv6 conversatiuon support is not implemented yet, so only
+ * the session type is stored.
+ */
+ rsvph->session_type = RSVP_SESSION_TYPE_IPV6;
+
+ break;
case RSVP_SESSION_TYPE_IPV4_LSP:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 7 - IPv4 LSP");
- proto_tree_add_item(rsvp_object_tree,
- hf_rsvp_filter[RSVPF_SESSION_IP],
- tvb, offset2, 4, ENC_BIG_ENDIAN);
-
- proto_tree_add_item(rsvp_object_tree,
- hf_rsvp_filter[RSVPF_SESSION_TUNNEL_ID],
- tvb, offset2+6, 2, ENC_BIG_ENDIAN);
-
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+8, 4,
- "Extended Tunnel ID: %u (%s)",
- tvb_get_ntohl(tvb, offset2+8),
- tvb_ip_to_str(tvb, offset2+8));
- hidden_item = proto_tree_add_item(rsvp_object_tree,
- hf_rsvp_filter[RSVPF_SESSION_EXT_TUNNEL_ID],
- tvb, offset2+8, 4, ENC_BIG_ENDIAN);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
-
- /*
- * Save this information to build the conversation request key
- * later.
- */
- rsvph->session_type = RSVP_SESSION_TYPE_IPV4_LSP;
- SET_ADDRESS(&rsvph->destination, AT_IPv4, 4,
- tvb_get_ptr(tvb, offset2, 4));
- rsvph->udp_dest_port = tvb_get_ntohs(tvb, offset2+6);
- rsvph->ext_tunnel_id = tvb_get_ntohl(tvb, offset2 + 8);
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 7 - IPv4 LSP");
+ proto_tree_add_item(rsvp_object_tree,
+ hf_rsvp_filter[RSVPF_SESSION_IP],
+ tvb, offset2, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(rsvp_object_tree,
+ hf_rsvp_filter[RSVPF_SESSION_TUNNEL_ID],
+ tvb, offset2+6, 2, ENC_BIG_ENDIAN);
+
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+8, 4,
+ "Extended Tunnel ID: %u (%s)",
+ tvb_get_ntohl(tvb, offset2+8),
+ tvb_ip_to_str(tvb, offset2+8));
+ hidden_item = proto_tree_add_item(rsvp_object_tree,
+ hf_rsvp_filter[RSVPF_SESSION_EXT_TUNNEL_ID],
+ tvb, offset2+8, 4, ENC_BIG_ENDIAN);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+
+ /*
+ * Save this information to build the conversation request key
+ * later.
+ */
+ rsvph->session_type = RSVP_SESSION_TYPE_IPV4_LSP;
+ SET_ADDRESS(&rsvph->destination, AT_IPv4, 4,
+ tvb_get_ptr(tvb, offset2, 4));
+ rsvph->udp_dest_port = tvb_get_ntohs(tvb, offset2+6);
+ rsvph->ext_tunnel_id = tvb_get_ntohl(tvb, offset2 + 8);
+ break;
case RSVP_SESSION_TYPE_AGGREGATE_IPV4:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 9 - IPv4 Aggregate");
- proto_tree_add_item(rsvp_object_tree,
- hf_rsvp_filter[RSVPF_SESSION_IP],
- tvb, offset2, 4, ENC_BIG_ENDIAN);
-
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+7, 1,
- "DSCP: %u (%s)",
- tvb_get_guint8(tvb, offset2+7),
- val_to_str(tvb_get_guint8(tvb, offset2+7),
- dscp_vals, "Unknown (%d)"));
- /*
- * Save this information to build the conversation request key
- * later.
- */
- rsvph->session_type = RSVP_SESSION_TYPE_AGGREGATE_IPV4;
- SET_ADDRESS(&rsvph->destination, AT_IPv4, 4,
- tvb_get_ptr(tvb, offset2, 4));
- rsvph->dscp = tvb_get_guint8(tvb, offset2+7);
- rsvph->ext_tunnel_id = tvb_get_ntohl(tvb, offset2 + 8);
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 9 - IPv4 Aggregate");
+ proto_tree_add_item(rsvp_object_tree,
+ hf_rsvp_filter[RSVPF_SESSION_IP],
+ tvb, offset2, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+7, 1,
+ "DSCP: %u (%s)",
+ tvb_get_guint8(tvb, offset2+7),
+ val_to_str_ext(tvb_get_guint8(tvb, offset2+7),
+ &dscp_vals_ext, "Unknown (%d)"));
+ /*
+ * Save this information to build the conversation request key
+ * later.
+ */
+ rsvph->session_type = RSVP_SESSION_TYPE_AGGREGATE_IPV4;
+ SET_ADDRESS(&rsvph->destination, AT_IPv4, 4,
+ tvb_get_ptr(tvb, offset2, 4));
+ rsvph->dscp = tvb_get_guint8(tvb, offset2+7);
+ rsvph->ext_tunnel_id = tvb_get_ntohl(tvb, offset2 + 8);
+ break;
case RSVP_SESSION_TYPE_IPV4_UNI:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 11 - IPv4 UNI");
- proto_tree_add_item(rsvp_object_tree,
- hf_rsvp_filter[RSVPF_SESSION_IP],
- tvb, offset2, 4, ENC_BIG_ENDIAN);
-
- proto_tree_add_item(rsvp_object_tree,
- hf_rsvp_filter[RSVPF_SESSION_TUNNEL_ID],
- tvb, offset2+6, 2, ENC_BIG_ENDIAN);
-
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+8, 4,
- "Extended IPv4 Address: %s",
- tvb_ip_to_str(tvb, offset2+8));
- hidden_item = proto_tree_add_item(rsvp_object_tree,
- hf_rsvp_filter[RSVPF_SESSION_EXT_TUNNEL_ID],
- tvb, offset2+8, 4, ENC_BIG_ENDIAN);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
-
- /*
- * Save this information to build the conversation request key
- * later.
- */
- rsvph->session_type = RSVP_SESSION_TYPE_IPV4_UNI;
- SET_ADDRESS(&rsvph->destination, AT_IPv4, 4,
- tvb_get_ptr(tvb, offset2, 4));
- rsvph->udp_dest_port = tvb_get_ntohs(tvb, offset2+6);
- rsvph->ext_tunnel_id = tvb_get_ntohl(tvb, offset2 + 8);
-
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 11 - IPv4 UNI");
+ proto_tree_add_item(rsvp_object_tree,
+ hf_rsvp_filter[RSVPF_SESSION_IP],
+ tvb, offset2, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(rsvp_object_tree,
+ hf_rsvp_filter[RSVPF_SESSION_TUNNEL_ID],
+ tvb, offset2+6, 2, ENC_BIG_ENDIAN);
+
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+8, 4,
+ "Extended IPv4 Address: %s",
+ tvb_ip_to_str(tvb, offset2+8));
+ hidden_item = proto_tree_add_item(rsvp_object_tree,
+ hf_rsvp_filter[RSVPF_SESSION_EXT_TUNNEL_ID],
+ tvb, offset2+8, 4, ENC_BIG_ENDIAN);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+
+ /*
+ * Save this information to build the conversation request key
+ * later.
+ */
+ rsvph->session_type = RSVP_SESSION_TYPE_IPV4_UNI;
+ SET_ADDRESS(&rsvph->destination, AT_IPv4, 4,
+ tvb_get_ptr(tvb, offset2, 4));
+ rsvph->udp_dest_port = tvb_get_ntohs(tvb, offset2+6);
+ rsvph->ext_tunnel_id = tvb_get_ntohl(tvb, offset2 + 8);
+
+ break;
case RSVP_SESSION_TYPE_IPV4_E_NNI:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 15 - IPv4 E-NNI");
- proto_tree_add_item(rsvp_object_tree,
- hf_rsvp_filter[RSVPF_SESSION_IP],
- tvb, offset2, 4, ENC_BIG_ENDIAN);
-
- proto_tree_add_item(rsvp_object_tree,
- hf_rsvp_filter[RSVPF_SESSION_TUNNEL_ID],
- tvb, offset2+6, 2, ENC_BIG_ENDIAN);
-
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+8, 4,
- "Extended IPv4 Address: %s",
- tvb_ip_to_str(tvb, offset2+8));
- hidden_item = proto_tree_add_item(rsvp_object_tree,
- hf_rsvp_filter[RSVPF_SESSION_EXT_TUNNEL_ID],
- tvb, offset2+8, 4, ENC_BIG_ENDIAN);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
-
- /*
- * Save this information to build the conversation request key
- * later.
- */
- rsvph->session_type = RSVP_SESSION_TYPE_IPV4_E_NNI;
- SET_ADDRESS(&rsvph->destination, AT_IPv4, 4,
- tvb_get_ptr(tvb, offset2, 4));
- rsvph->udp_dest_port = tvb_get_ntohs(tvb, offset2+6);
- rsvph->ext_tunnel_id = tvb_get_ntohl(tvb, offset2 + 8);
-
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 15 - IPv4 E-NNI");
+ proto_tree_add_item(rsvp_object_tree,
+ hf_rsvp_filter[RSVPF_SESSION_IP],
+ tvb, offset2, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(rsvp_object_tree,
+ hf_rsvp_filter[RSVPF_SESSION_TUNNEL_ID],
+ tvb, offset2+6, 2, ENC_BIG_ENDIAN);
+
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+8, 4,
+ "Extended IPv4 Address: %s",
+ tvb_ip_to_str(tvb, offset2+8));
+ hidden_item = proto_tree_add_item(rsvp_object_tree,
+ hf_rsvp_filter[RSVPF_SESSION_EXT_TUNNEL_ID],
+ tvb, offset2+8, 4, ENC_BIG_ENDIAN);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+
+ /*
+ * Save this information to build the conversation request key
+ * later.
+ */
+ rsvph->session_type = RSVP_SESSION_TYPE_IPV4_E_NNI;
+ SET_ADDRESS(&rsvph->destination, AT_IPv4, 4,
+ tvb_get_ptr(tvb, offset2, 4));
+ rsvph->udp_dest_port = tvb_get_ntohs(tvb, offset2+6);
+ rsvph->ext_tunnel_id = tvb_get_ntohl(tvb, offset2 + 8);
+
+ break;
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)",
- type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length-4,
- "Data (%d bytes)", obj_length-4);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)",
+ type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length-4,
+ "Data (%d bytes)", obj_length-4);
+ break;
}
}
@@ -1829,265 +1900,265 @@ dissect_rsvp_session (proto_item *ti, proto_tree *rsvp_object_tree,
* (TODO: TLV type 12, 13, 25)
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_ifid_tlv (proto_tree *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb, int offset, int length,
- int subtree_type)
+dissect_rsvp_ifid_tlv(proto_tree *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb, int offset, int length,
+ int subtree_type)
{
- int tlv_off, padding;
- guint16 tlv_type;
- int tlv_len;
- guint8 isis_len;
+ int tlv_off, padding;
+ guint16 tlv_type;
+ int tlv_len;
+ guint8 isis_len;
const char *tlv_name;
- proto_tree *rsvp_ifid_subtree = NULL, *ti2;
+ proto_tree *rsvp_ifid_subtree=NULL, *ti2;
for (tlv_off = 0; tlv_off < length; ) {
- tlv_type = tvb_get_ntohs(tvb, offset+tlv_off);
- tlv_len = tvb_get_ntohs(tvb, offset+tlv_off+2);
+ tlv_type = tvb_get_ntohs(tvb, offset+tlv_off);
+ tlv_len = tvb_get_ntohs(tvb, offset+tlv_off+2);
- if (tlv_len == 0 || tlv_off+tlv_len > length) {
- proto_tree_add_text(rsvp_object_tree, tvb, offset+tlv_off+2, 2,
- "Invalid TLV length");
+ if ((tlv_len == 0) || (tlv_off+tlv_len > length)) {
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+tlv_off+2, 2,
+ "Invalid TLV length");
return;
- }
- switch(tlv_type) {
- case 1: /* IPv4 */
- tlv_name = "";
- goto ifid_ipv4;
- case 14: /* PREVIOUS_HOP_IPV4 */
- tlv_name = "Previous-Hop ";
- goto ifid_ipv4;
- case 16: /* INCOMING_IPV4 */
- tlv_name = "Incoming ";
- ifid_ipv4:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+tlv_off, tlv_len,
- "%sIPv4 TLV - %s", tlv_name,
- tvb_ip_to_str(tvb, offset+tlv_off+4));
-
- rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
- "Type: %d (%sIPv4)", tlv_type, tlv_name);
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+2, 2,
- "Length: %u",
- tvb_get_ntohs(tvb, offset+tlv_off+2));
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+4, 4,
- "IPv4 address: %s",
- tvb_ip_to_str(tvb, offset+tlv_off+4));
- proto_item_append_text(ti, "%sIPv4: %s. ", tlv_name,
- tvb_ip_to_str(tvb, offset+tlv_off+4));
- break;
-
- case 2: /* IPv6 */
- tlv_name = "";
- goto ifid_ipv6;
- case 15: /* PREVIOUS_HOP_IPV6 */
- tlv_name = "Previous-Hop ";
- goto ifid_ipv6;
- case 17: /* INCOMING_IPV6 */
- tlv_name = "Incoming ";
- ifid_ipv6:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+tlv_off, tlv_len,
- "%sIPv6 TLV - %s", tlv_name,
- tvb_ip6_to_str(tvb, offset+tlv_off+4));
-
- rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
- "Type: %d (%sIPv6)", tlv_type, tlv_name);
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+2, 2,
- "Length: %u",
- tvb_get_ntohs(tvb, offset+tlv_off+2));
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+4, 4,
- "IPv6 address: %s",
- tvb_ip6_to_str(tvb, offset+tlv_off+4));
- proto_item_append_text(ti, "%sIPv6: %s. ", tlv_name,
- tvb_ip6_to_str(tvb, offset+tlv_off+4));
- break;
-
- case 3: /* IF_INDEX */
- tlv_name = "";
- goto ifid_ifindex;
- case 4: /* COMPONENT_IF_DOWNSTREAM */
- tlv_name = " Forward";
- goto ifid_ifindex;
- case 5: /* COMPONENT_IF_UPSTREAM */
- tlv_name = " Reverse";
- goto ifid_ifindex;
- case 18: /* INCOMING_IF_INDEX */
- tlv_name = " Incoming";
- ifid_ifindex:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+tlv_off, tlv_len,
- "Interface-Index%s TLV - %s, %d",
- tlv_name,
- tvb_ip_to_str(tvb, offset+tlv_off+4),
- tvb_get_ntohl(tvb, offset+tlv_off+8));
- rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
- "Type: %d (Interface Index%s)", tlv_type, tlv_name);
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+2, 2,
- "Length: %u",
- tvb_get_ntohs(tvb, offset+tlv_off+2));
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+4, 4,
- "IPv4 address: %s",
- tvb_ip_to_str(tvb, offset+tlv_off+4));
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+8, 4,
- "Interface-ID: %d (0x%0x)",
- tvb_get_ntohl(tvb, offset+tlv_off+8),
- tvb_get_ntohl(tvb, offset+tlv_off+8));
- proto_item_append_text(ti, "Data If-Index%s: %s, %d. ", tlv_name,
- tvb_ip_to_str(tvb, offset+tlv_off+4),
- tvb_get_ntohl(tvb, offset+tlv_off+8));
- break;
-
- case 6: /* DOWNSTREAM_LABEL */
- tlv_name = "Downstream";
- goto ifid_label;
- case 7: /* UPSTREAM_LABEL */
- tlv_name = "Upstream";
- goto ifid_label;
- case 19: /* INCOMING_DOWN_LABEL */
- tlv_name = "Incoming-Downstream";
- goto ifid_label;
- case 20: /* INCOMING_UP_LABEL */
- tlv_name = "Incoming-Upstream";
- ifid_label:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+tlv_off, tlv_len,
- "%s-Label TLV - %u", tlv_name,
- tvb_get_ntohl(tvb, offset+tlv_off+4));
- rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
- "Type: %d (%s-Label)", tlv_type, tlv_name);
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+2, 2,
- "Length: %u",
- tvb_get_ntohs(tvb, offset+tlv_off+2));
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+4, 4,
- "Label: %u",
- tvb_get_ntohl(tvb, offset+tlv_off+4));
- proto_item_append_text(ti, "%s-Label: %u. ", tlv_name,
- tvb_get_ntohl(tvb, offset+tlv_off+4));
- break;
-
-
- case 8: /* NODE_ID */
- tlv_name = "";
- goto ifid_nodeid;
- case 21: /* REPORTING_NODE_ID */
- tlv_name = "Reporting-";
- ifid_nodeid:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+tlv_off, tlv_len,
- "%sNode-ID TLV - %s", tlv_name,
- tvb_ip_to_str(tvb, offset+tlv_off+4));
- rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
- "Type: %d (%sNode-ID)", tlv_type, tlv_name);
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+2, 2,
- "Length: %u",
- tvb_get_ntohs(tvb, offset+tlv_off+2));
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+4, 4,
- "Node ID: %s",
- tvb_ip_to_str(tvb, offset+tlv_off+4));
- proto_item_append_text(ti, "%sNode-ID: %s. ", tlv_name,
- tvb_ip_to_str(tvb, offset+tlv_off+4));
- break;
-
- case 9: /* OSPF_AREA */
- tlv_name = "";
- goto ifid_ospf;
- case 22: /* REPORTING_OSPF_AREA */
- tlv_name = "Reporting-";
- ifid_ospf:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+tlv_off, tlv_len,
- "%sOSPF-Area TLV - %u", tlv_name,
- tvb_get_ntohl(tvb, offset+tlv_off+4));
- rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
- "Type: %d (%sOSPF-Area)", tlv_type, tlv_name);
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+2, 2,
- "Length: %u",
- tvb_get_ntohs(tvb, offset+tlv_off+2));
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+4, 4,
- "Area: %u",
- tvb_get_ntohl(tvb, offset+tlv_off+4));
- proto_item_append_text(ti, "%sOSPF-Area: %u. ", tlv_name,
- tvb_get_ntohl(tvb, offset+tlv_off+4));
- break;
-
- case 10: /* ISIS_AREA */
- tlv_name = "";
- goto ifid_isis;
- case 23: /* REPORTING_ISIS_AREA */
- tlv_name = "Reporting-";
- ifid_isis:
- isis_len = tvb_get_guint8(tvb, offset+tlv_off+4);
- if (isis_len < 2 || isis_len > 11)
- {
- proto_tree_add_text(rsvp_object_tree, tvb, offset+tlv_off, tlv_len,
- "%sISIS-Area TLV - Invalid Length field", tlv_name);
- break;
- }
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+tlv_off, tlv_len,
- "%sISIS-Area TLV - %s", tlv_name,
- print_nsap_net(tvb_get_ptr(tvb, offset+tlv_off+5, isis_len),
- isis_len));
- rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
- "Type: %d (%sISIS-Area)", tlv_type, tlv_name);
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+2, 2,
- "Length: %u",
- tvb_get_ntohs(tvb, offset+tlv_off+2));
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+4, 4,
- "IS-IS Area Identifier: %s",
- print_nsap_net(tvb_get_ptr(tvb, offset+tlv_off+5, isis_len), isis_len));
- proto_item_append_text(ti, "%sISIS-Area: %s. ", tlv_name,
- print_nsap_net(tvb_get_ptr(tvb, offset+tlv_off+5, isis_len), isis_len));
- break;
-
- case 11: /* AUTONOMOUS_SYSTEM */
- tlv_name = "";
- goto ifid_as;
- case 24: /* REPORTING_AUTONOMOUS_SYSTEM */
- tlv_name = "Reporting-";
- ifid_as:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+tlv_off, tlv_len,
- "%sAS TLV - %u", tlv_name,
- tvb_get_ntohl(tvb, offset+tlv_off+4));
- rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
- "Type: %d (%sAS)", tlv_type, tlv_name);
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+2, 2,
- "Length: %u",
- tvb_get_ntohs(tvb, offset+tlv_off+2));
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+4, 4,
- "Autonomous System: %u",
- tvb_get_ntohl(tvb, offset+tlv_off+4));
- proto_item_append_text(ti, "%sAS: %u. ", tlv_name,
- tvb_get_ntohl(tvb, offset+tlv_off+4));
- break;
-
- case 26: /* NODE_EXCLUSIONS */
- tlv_name = "Node";
- goto ifid_ex;
- case 27: /* LINK_EXCLUSIONS */
- tlv_name = "Link";
- ifid_ex:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+tlv_off, tlv_len,
- "%s-Exclusions TLV - ", tlv_name);
- rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
- "Type: %d (%s-Exclusions)", tlv_type, tlv_name);
- proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+2, 2,
- "Length: %u",
- tvb_get_ntohs(tvb, offset+tlv_off+2));
- dissect_rsvp_ifid_tlv(ti2, rsvp_ifid_subtree, tvb, offset+tlv_off+4,
- tlv_len-4, TREE(TT_HOP_SUBOBJ));
- break;
+ }
+ switch(tlv_type) {
+ case 1: /* IPv4 */
+ tlv_name = "";
+ goto ifid_ipv4;
+ case 14: /* PREVIOUS_HOP_IPV4 */
+ tlv_name = "Previous-Hop ";
+ goto ifid_ipv4;
+ case 16: /* INCOMING_IPV4 */
+ tlv_name = "Incoming ";
+ ifid_ipv4:
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset+tlv_off, tlv_len,
+ "%sIPv4 TLV - %s", tlv_name,
+ tvb_ip_to_str(tvb, offset+tlv_off+4));
+
+ rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
+ "Type: %d (%sIPv4)", tlv_type, tlv_name);
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+2, 2,
+ "Length: %u",
+ tvb_get_ntohs(tvb, offset+tlv_off+2));
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+4, 4,
+ "IPv4 address: %s",
+ tvb_ip_to_str(tvb, offset+tlv_off+4));
+ proto_item_append_text(ti, "%sIPv4: %s. ", tlv_name,
+ tvb_ip_to_str(tvb, offset+tlv_off+4));
+ break;
+
+ case 2: /* IPv6 */
+ tlv_name = "";
+ goto ifid_ipv6;
+ case 15: /* PREVIOUS_HOP_IPV6 */
+ tlv_name = "Previous-Hop ";
+ goto ifid_ipv6;
+ case 17: /* INCOMING_IPV6 */
+ tlv_name = "Incoming ";
+ ifid_ipv6:
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset+tlv_off, tlv_len,
+ "%sIPv6 TLV - %s", tlv_name,
+ tvb_ip6_to_str(tvb, offset+tlv_off+4));
+
+ rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
+ "Type: %d (%sIPv6)", tlv_type, tlv_name);
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+2, 2,
+ "Length: %u",
+ tvb_get_ntohs(tvb, offset+tlv_off+2));
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+4, 4,
+ "IPv6 address: %s",
+ tvb_ip6_to_str(tvb, offset+tlv_off+4));
+ proto_item_append_text(ti, "%sIPv6: %s. ", tlv_name,
+ tvb_ip6_to_str(tvb, offset+tlv_off+4));
+ break;
+
+ case 3: /* IF_INDEX */
+ tlv_name = "";
+ goto ifid_ifindex;
+ case 4: /* COMPONENT_IF_DOWNSTREAM */
+ tlv_name = " Forward";
+ goto ifid_ifindex;
+ case 5: /* COMPONENT_IF_UPSTREAM */
+ tlv_name = " Reverse";
+ goto ifid_ifindex;
+ case 18: /* INCOMING_IF_INDEX */
+ tlv_name = " Incoming";
+ ifid_ifindex:
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset+tlv_off, tlv_len,
+ "Interface-Index%s TLV - %s, %d",
+ tlv_name,
+ tvb_ip_to_str(tvb, offset+tlv_off+4),
+ tvb_get_ntohl(tvb, offset+tlv_off+8));
+ rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
+ "Type: %d (Interface Index%s)", tlv_type, tlv_name);
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+2, 2,
+ "Length: %u",
+ tvb_get_ntohs(tvb, offset+tlv_off+2));
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+4, 4,
+ "IPv4 address: %s",
+ tvb_ip_to_str(tvb, offset+tlv_off+4));
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+8, 4,
+ "Interface-ID: %d (0x%0x)",
+ tvb_get_ntohl(tvb, offset+tlv_off+8),
+ tvb_get_ntohl(tvb, offset+tlv_off+8));
+ proto_item_append_text(ti, "Data If-Index%s: %s, %d. ", tlv_name,
+ tvb_ip_to_str(tvb, offset+tlv_off+4),
+ tvb_get_ntohl(tvb, offset+tlv_off+8));
+ break;
+
+ case 6: /* DOWNSTREAM_LABEL */
+ tlv_name = "Downstream";
+ goto ifid_label;
+ case 7: /* UPSTREAM_LABEL */
+ tlv_name = "Upstream";
+ goto ifid_label;
+ case 19: /* INCOMING_DOWN_LABEL */
+ tlv_name = "Incoming-Downstream";
+ goto ifid_label;
+ case 20: /* INCOMING_UP_LABEL */
+ tlv_name = "Incoming-Upstream";
+ ifid_label:
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset+tlv_off, tlv_len,
+ "%s-Label TLV - %u", tlv_name,
+ tvb_get_ntohl(tvb, offset+tlv_off+4));
+ rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
+ "Type: %d (%s-Label)", tlv_type, tlv_name);
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+2, 2,
+ "Length: %u",
+ tvb_get_ntohs(tvb, offset+tlv_off+2));
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+4, 4,
+ "Label: %u",
+ tvb_get_ntohl(tvb, offset+tlv_off+4));
+ proto_item_append_text(ti, "%s-Label: %u. ", tlv_name,
+ tvb_get_ntohl(tvb, offset+tlv_off+4));
+ break;
+
+
+ case 8: /* NODE_ID */
+ tlv_name = "";
+ goto ifid_nodeid;
+ case 21: /* REPORTING_NODE_ID */
+ tlv_name = "Reporting-";
+ ifid_nodeid:
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset+tlv_off, tlv_len,
+ "%sNode-ID TLV - %s", tlv_name,
+ tvb_ip_to_str(tvb, offset+tlv_off+4));
+ rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
+ "Type: %d (%sNode-ID)", tlv_type, tlv_name);
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+2, 2,
+ "Length: %u",
+ tvb_get_ntohs(tvb, offset+tlv_off+2));
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+4, 4,
+ "Node ID: %s",
+ tvb_ip_to_str(tvb, offset+tlv_off+4));
+ proto_item_append_text(ti, "%sNode-ID: %s. ", tlv_name,
+ tvb_ip_to_str(tvb, offset+tlv_off+4));
+ break;
+
+ case 9: /* OSPF_AREA */
+ tlv_name = "";
+ goto ifid_ospf;
+ case 22: /* REPORTING_OSPF_AREA */
+ tlv_name = "Reporting-";
+ ifid_ospf:
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset+tlv_off, tlv_len,
+ "%sOSPF-Area TLV - %u", tlv_name,
+ tvb_get_ntohl(tvb, offset+tlv_off+4));
+ rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
+ "Type: %d (%sOSPF-Area)", tlv_type, tlv_name);
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+2, 2,
+ "Length: %u",
+ tvb_get_ntohs(tvb, offset+tlv_off+2));
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+4, 4,
+ "Area: %u",
+ tvb_get_ntohl(tvb, offset+tlv_off+4));
+ proto_item_append_text(ti, "%sOSPF-Area: %u. ", tlv_name,
+ tvb_get_ntohl(tvb, offset+tlv_off+4));
+ break;
+
+ case 10: /* ISIS_AREA */
+ tlv_name = "";
+ goto ifid_isis;
+ case 23: /* REPORTING_ISIS_AREA */
+ tlv_name = "Reporting-";
+ ifid_isis:
+ isis_len = tvb_get_guint8(tvb, offset+tlv_off+4);
+ if ((isis_len < 2) || (isis_len > 11))
+ {
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+tlv_off, tlv_len,
+ "%sISIS-Area TLV - Invalid Length field", tlv_name);
+ break;
+ }
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset+tlv_off, tlv_len,
+ "%sISIS-Area TLV - %s", tlv_name,
+ print_nsap_net(tvb_get_ptr(tvb, offset+tlv_off+5, isis_len),
+ isis_len));
+ rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
+ "Type: %d (%sISIS-Area)", tlv_type, tlv_name);
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+2, 2,
+ "Length: %u",
+ tvb_get_ntohs(tvb, offset+tlv_off+2));
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+4, 4,
+ "IS-IS Area Identifier: %s",
+ print_nsap_net(tvb_get_ptr(tvb, offset+tlv_off+5, isis_len), isis_len));
+ proto_item_append_text(ti, "%sISIS-Area: %s. ", tlv_name,
+ print_nsap_net(tvb_get_ptr(tvb, offset+tlv_off+5, isis_len), isis_len));
+ break;
+
+ case 11: /* AUTONOMOUS_SYSTEM */
+ tlv_name = "";
+ goto ifid_as;
+ case 24: /* REPORTING_AUTONOMOUS_SYSTEM */
+ tlv_name = "Reporting-";
+ ifid_as:
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset+tlv_off, tlv_len,
+ "%sAS TLV - %u", tlv_name,
+ tvb_get_ntohl(tvb, offset+tlv_off+4));
+ rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
+ "Type: %d (%sAS)", tlv_type, tlv_name);
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+2, 2,
+ "Length: %u",
+ tvb_get_ntohs(tvb, offset+tlv_off+2));
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+4, 4,
+ "Autonomous System: %u",
+ tvb_get_ntohl(tvb, offset+tlv_off+4));
+ proto_item_append_text(ti, "%sAS: %u. ", tlv_name,
+ tvb_get_ntohl(tvb, offset+tlv_off+4));
+ break;
+
+ case 26: /* NODE_EXCLUSIONS */
+ tlv_name = "Node";
+ goto ifid_ex;
+ case 27: /* LINK_EXCLUSIONS */
+ tlv_name = "Link";
+ ifid_ex:
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset+tlv_off, tlv_len,
+ "%s-Exclusions TLV - ", tlv_name);
+ rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
+ "Type: %d (%s-Exclusions)", tlv_type, tlv_name);
+ proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+2, 2,
+ "Length: %u",
+ tvb_get_ntohs(tvb, offset+tlv_off+2));
+ dissect_rsvp_ifid_tlv(ti2, rsvp_ifid_subtree, tvb, offset+tlv_off+4,
+ tlv_len-4, TREE(TT_HOP_SUBOBJ));
+ break;
case 516:
/* FF: ERROR_STRING TLV, RFC 4783 */
ti2 =
@@ -2143,62 +2214,63 @@ dissect_rsvp_ifid_tlv (proto_tree *ti, proto_tree *rsvp_object_tree,
* HOP
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_hop (proto_item *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_hop(proto_item *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
int offset2 = offset + 4;
switch(type) {
case 1:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 1 - IPv4");
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 4,
- "Neighbor address: %s",
- tvb_ip_to_str(tvb, offset2));
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+4, 4,
- "Logical interface: %u",
- tvb_get_ntohl(tvb, offset2+4));
- proto_item_set_text(ti, "HOP: IPv4, %s",
- tvb_ip_to_str(tvb, offset2));
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 1 - IPv4");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 4,
+ "Neighbor address: %s",
+ tvb_ip_to_str(tvb, offset2));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+4, 4,
+ "Logical interface: %u",
+ tvb_get_ntohl(tvb, offset2+4));
+ proto_item_set_text(ti, "HOP: IPv4, %s",
+ tvb_ip_to_str(tvb, offset2));
+ break;
case 2:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 2 - IPv6");
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 16,
- "Neighbor address: %s",
- tvb_ip6_to_str(tvb, offset2));
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+16, 4,
- "Logical interface: 0x%08x",
- tvb_get_ntohl(tvb, offset2+16));
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 2 - IPv6");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 16,
+ "Neighbor address: %s",
+ tvb_ip6_to_str(tvb, offset2));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+16, 4,
+ "Logical interface: 0x%08x",
+ tvb_get_ntohl(tvb, offset2+16));
+ break;
case 3:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 3 - IPv4 IF-ID");
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 4,
- "Neighbor address: %s",
- tvb_ip_to_str(tvb, offset2));
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+4, 4,
- "Logical interface: %u",
- tvb_get_ntohl(tvb, offset2+4));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 3 - IPv4 IF-ID");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 4,
+ "Neighbor address: %s",
+ tvb_ip_to_str(tvb, offset2));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+4, 4,
+ "Logical interface: %u",
+ tvb_get_ntohl(tvb, offset2+4));
- proto_item_set_text(ti, "HOP: IPv4 IF-ID. Control IPv4: %s. ",
- tvb_ip_to_str(tvb, offset2));
+ proto_item_set_text(ti, "HOP: IPv4 IF-ID. Control IPv4: %s. ",
+ tvb_ip_to_str(tvb, offset2));
- dissect_rsvp_ifid_tlv(ti, rsvp_object_tree, tvb, offset+12, obj_length-12,
- TREE(TT_HOP_SUBOBJ));
+ dissect_rsvp_ifid_tlv(ti, rsvp_object_tree, tvb, offset+12, obj_length-12,
+ TREE(TT_HOP_SUBOBJ));
- break;
+ break;
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)",
- type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)",
+ type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
+ "Data (%d bytes)", obj_length - 4);
+ break;
}
}
@@ -2206,32 +2278,32 @@ dissect_rsvp_hop (proto_item *ti, proto_tree *rsvp_object_tree,
* TIME VALUES
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_time_values (proto_item *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_time_values(proto_item *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
int offset2 = offset + 4;
switch(type) {
case 1:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 1");
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 4,
- "Refresh interval: %u ms (%u seconds)",
- tvb_get_ntohl(tvb, offset2),
- tvb_get_ntohl(tvb, offset2)/1000);
- proto_item_set_text(ti, "TIME VALUES: %d ms",
- tvb_get_ntohl(tvb, offset2));
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 1");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 4,
+ "Refresh interval: %u ms (%u seconds)",
+ tvb_get_ntohl(tvb, offset2),
+ tvb_get_ntohl(tvb, offset2)/1000);
+ proto_item_set_text(ti, "TIME VALUES: %d ms",
+ tvb_get_ntohl(tvb, offset2));
+ break;
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)",
- type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)",
+ type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
+ "Data (%d bytes)", obj_length - 4);
+ break;
}
}
@@ -2239,78 +2311,82 @@ dissect_rsvp_time_values (proto_item *ti, proto_tree *rsvp_object_tree,
* Error value field in ERROR object
*------------------------------------------------------------------------------*/
static guint16
-dissect_rsvp_error_value (proto_tree *ti, tvbuff_t *tvb,
- int offset, guint8 error_code)
+dissect_rsvp_error_value(proto_tree *ti, tvbuff_t *tvb,
+ int offset, guint8 error_code)
{
- guint16 error_val;
- guint8 error_class, error_ctype;
- const value_string *rsvp_error_vals = NULL;
+ guint16 error_val;
+ guint8 error_class, error_ctype;
+ value_string_ext *rsvp_error_vals_ext_p = NULL;
error_val = tvb_get_ntohs(tvb, offset);
switch (error_code) {
case RSVP_ERROR_ADMISSION:
- rsvp_error_vals = rsvp_admission_control_error_vals;
- break;
+ rsvp_error_vals_ext_p = &rsvp_admission_control_error_vals_ext;
+ break;
case RSVP_ERROR_POLICY:
- rsvp_error_vals = rsvp_policy_control_error_vals;
- break;
+ rsvp_error_vals_ext_p = &rsvp_policy_control_error_vals_ext;
+ break;
case RSVP_ERROR_TRAFFIC:
- rsvp_error_vals = rsvp_traffic_control_error_vals;
- break;
+ rsvp_error_vals_ext_p = &rsvp_traffic_control_error_vals_ext;
+ break;
case RSVP_ERROR_ROUTING:
- rsvp_error_vals = rsvp_routing_error_vals;
- break;
+ rsvp_error_vals_ext_p = &rsvp_routing_error_vals_ext;
+ break;
case RSVP_ERROR_NOTIFY:
- rsvp_error_vals = rsvp_notify_error_vals;
- break;
+ rsvp_error_vals_ext_p = &rsvp_notify_error_vals_ext;
+ break;
case RSVP_ERROR_DIFFSERV:
- rsvp_error_vals = rsvp_diffserv_error_vals;
- break;
+ rsvp_error_vals_ext_p = &rsvp_diffserv_error_vals_ext;
+ break;
case RSVP_ERROR_DSTE:
- rsvp_error_vals = rsvp_diffserv_aware_te_error_vals;
- break;
+ rsvp_error_vals_ext_p = &rsvp_diffserv_aware_te_error_vals_ext;
+ break;
case RSVP_ERROR_CALL_MGMT:
- rsvp_error_vals = rsvp_call_mgmt_error_vals;
+ rsvp_error_vals_ext_p = &rsvp_call_mgmt_error_vals_ext;
break;
}
+
switch (error_code) {
case RSVP_ERROR_ADMISSION:
case RSVP_ERROR_TRAFFIC:
- if ((error_val & 0xc0) == 0) {
- proto_tree_add_text(ti, tvb, offset, 2,
- "Error value: %u - %s", error_val,
- val_to_str(error_val, rsvp_error_vals, "Unknown (%d)"));
+ if ((error_val & 0xc0) == 0) {
+ DISSECTOR_ASSERT(rsvp_error_vals_ext_p != NULL);
+ proto_tree_add_text(ti, tvb, offset, 2,
+ "Error value: %u - %s", error_val,
+ val_to_str_ext(error_val, rsvp_error_vals_ext_p, "Unknown (%d)"));
}
else if ((error_val & 0xc0) == 0x80) {
- proto_tree_add_text(ti, tvb, offset, 2,
- "Error value: %u - Organization specific subcode (%u)", error_val,
- error_val);
+ proto_tree_add_text(ti, tvb, offset, 2,
+ "Error value: %u - Organization specific subcode (%u)", error_val,
+ error_val);
}
else if ((error_val & 0xc0) == 0xc0) {
- proto_tree_add_text(ti, tvb, offset, 2,
- "Error value: %u - Service specific subcode (%u)", error_val,
- error_val);
+ proto_tree_add_text(ti, tvb, offset, 2,
+ "Error value: %u - Service specific subcode (%u)", error_val,
+ error_val);
}
- break;
+ break;
case RSVP_ERROR_UNKNOWN_CLASS:
case RSVP_ERROR_UNKNOWN_C_TYPE:
- error_class = error_val / 256;
+ error_class = error_val / 256;
error_ctype = error_val % 256;
- proto_tree_add_text(ti, tvb, offset, 2, "Class: %u (%s) - CType: %u",
- error_class, val_to_str (error_class, rsvp_class_vals, "Unknown"),
- error_ctype);
- break;
+ proto_tree_add_text(ti, tvb, offset, 2, "Class: %u (%s) - CType: %u",
+ error_class, val_to_str_ext_const(error_class, &rsvp_class_vals_ext, "Unknown"),
+ error_ctype);
+ break;
case RSVP_ERROR_POLICY:
case RSVP_ERROR_NOTIFY:
case RSVP_ERROR_ROUTING:
case RSVP_ERROR_DIFFSERV:
case RSVP_ERROR_DSTE:
case RSVP_ERROR_CALL_MGMT:
- proto_tree_add_text(ti, tvb, offset, 2, "Error value: %u - %s", error_val,
- val_to_str(error_val, rsvp_error_vals, "Unknown (%d)"));
- break;
+ DISSECTOR_ASSERT(rsvp_error_vals_ext_p != NULL);
+ proto_tree_add_text(ti, tvb, offset, 2, "Error value: %u - %s", error_val,
+ val_to_str_ext(error_val, rsvp_error_vals_ext_p, "Unknown (%d)"));
+ break;
default:
- proto_tree_add_text(ti, tvb, offset, 2, "Error value: %u", error_val);
+ proto_tree_add_text(ti, tvb, offset, 2, "Error value: %u", error_val);
+ break;
}
return error_val;
}
@@ -2319,97 +2395,97 @@ dissect_rsvp_error_value (proto_tree *ti, tvbuff_t *tvb,
* ERROR
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_error (proto_item *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_error(proto_item *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
- int offset2 = offset + 4;
- int offset3;
- guint8 error_flags;
- guint8 error_code;
- guint16 error_val;
+ int offset2 = offset + 4;
+ int offset3;
+ guint8 error_flags;
+ guint8 error_code;
+ guint16 error_val;
proto_tree *ti2, *rsvp_error_subtree;
switch(type) {
case 1: {
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 1 - IPv4");
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 4,
- "Error node: %s",
- tvb_ip_to_str(tvb, offset2));
- offset3 = offset2+4;
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 1 - IPv4");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 4,
+ "Error node: %s",
+ tvb_ip_to_str(tvb, offset2));
+ offset3 = offset2+4;
+ break;
}
case 2: {
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 2 - IPv6");
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 16,
- "Error node: %s",
- tvb_ip6_to_str(tvb, offset2));
- offset3 = offset2+16;
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 2 - IPv6");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 16,
+ "Error node: %s",
+ tvb_ip6_to_str(tvb, offset2));
+ offset3 = offset2+16;
+ break;
}
case 3: {
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 3 - IPv4 IF-ID");
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 4,
- "Error node: %s",
- tvb_ip_to_str(tvb, offset2));
- offset3 = offset2+4;
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 3 - IPv4 IF-ID");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 4,
+ "Error node: %s",
+ tvb_ip_to_str(tvb, offset2));
+ offset3 = offset2+4;
+ break;
}
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)",
- type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
- return;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)",
+ type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
+ "Data (%d bytes)", obj_length - 4);
+ return;
}
error_flags = tvb_get_guint8(tvb, offset3);
ti2 = proto_tree_add_text(rsvp_object_tree, tvb, offset3, 1,
- "Flags: 0x%02x", error_flags);
+ "Flags: 0x%02x", error_flags);
rsvp_error_subtree = proto_item_add_subtree(ti2, TREE(TT_ERROR_FLAGS));
proto_tree_add_text(rsvp_error_subtree, tvb, offset3, 1, "%s",
- decode_boolean_bitfield(error_flags, 0x04, 8,
- "Path State Removed",
- ""));
+ decode_boolean_bitfield(error_flags, 0x04, 8,
+ "Path State Removed",
+ ""));
proto_tree_add_text(rsvp_error_subtree, tvb, offset3, 1, "%s",
- decode_boolean_bitfield(error_flags, 0x02, 8,
- "NotGuilty",
- ""));
+ decode_boolean_bitfield(error_flags, 0x02, 8,
+ "NotGuilty",
+ ""));
proto_tree_add_text(rsvp_error_subtree, tvb, offset3, 1, "%s",
- decode_boolean_bitfield(error_flags, 0x01, 8,
- "InPlace",
- ""));
+ decode_boolean_bitfield(error_flags, 0x01, 8,
+ "InPlace",
+ ""));
proto_item_append_text(ti2, " %s %s %s",
- (error_flags & (1<<2)) ? "Path-State-Removed" : "",
- (error_flags & (1<<1)) ? "NotGuilty" : "",
- (error_flags & (1<<0)) ? "InPlace" : "");
+ (error_flags & (1<<2)) ? "Path-State-Removed" : "",
+ (error_flags & (1<<1)) ? "NotGuilty" : "",
+ (error_flags & (1<<0)) ? "InPlace" : "");
error_code = tvb_get_guint8(tvb, offset3+1);
proto_tree_add_text(rsvp_object_tree, tvb, offset3+1, 1,
- "Error code: %u - %s", error_code,
- val_to_str(error_code, rsvp_error_codes, "Unknown (%d)"));
+ "Error code: %u - %s", error_code,
+ val_to_str_ext(error_code, &rsvp_error_codes_ext, "Unknown (%d)"));
error_val = dissect_rsvp_error_value(rsvp_object_tree, tvb, offset3+2, error_code);
switch (type) {
case 1:
- proto_item_set_text(ti, "ERROR: IPv4, Error code: %s, Value: %d, Error Node: %s",
- val_to_str(error_code, rsvp_error_codes, "Unknown (%d)"),
- error_val, tvb_ip_to_str(tvb, offset2));
- break;
+ proto_item_set_text(ti, "ERROR: IPv4, Error code: %s, Value: %d, Error Node: %s",
+ val_to_str_ext(error_code, &rsvp_error_codes_ext, "Unknown (%d)"),
+ error_val, tvb_ip_to_str(tvb, offset2));
+ break;
case 3:
- proto_item_set_text(ti, "ERROR: IPv4 IF-ID, Error code: %s, Value: %d, Control Node: %s. ",
- val_to_str(error_code, rsvp_error_codes, "Unknown (%d)"),
- error_val, tvb_ip_to_str(tvb, offset2));
- dissect_rsvp_ifid_tlv(ti, rsvp_object_tree, tvb, offset+12, obj_length-12,
- TREE(TT_ERROR_SUBOBJ));
- break;
+ proto_item_set_text(ti, "ERROR: IPv4 IF-ID, Error code: %s, Value: %d, Control Node: %s. ",
+ val_to_str_ext(error_code, &rsvp_error_codes_ext, "Unknown (%d)"),
+ error_val, tvb_ip_to_str(tvb, offset2));
+ dissect_rsvp_ifid_tlv(ti, rsvp_object_tree, tvb, offset+12, obj_length-12,
+ TREE(TT_ERROR_SUBOBJ));
+ break;
}
}
@@ -2417,10 +2493,10 @@ dissect_rsvp_error (proto_item *ti, proto_tree *rsvp_object_tree,
* SCOPE
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_scope (proto_item *ti _U_, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_scope(proto_item *ti _U_, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
int offset2 = offset + 4;
int mylen;
@@ -2428,37 +2504,38 @@ dissect_rsvp_scope (proto_item *ti _U_, proto_tree *rsvp_object_tree,
mylen = obj_length - 4;
switch(type) {
case 1: {
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 1 - IPv4");
- while (mylen > 0) {
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 4,
- "IPv4 Address: %s",
- tvb_ip_to_str(tvb, offset2));
- offset2 += 4;
- mylen -= 4;
- }
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 1 - IPv4");
+ while (mylen > 0) {
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 4,
+ "IPv4 Address: %s",
+ tvb_ip_to_str(tvb, offset2));
+ offset2 += 4;
+ mylen -= 4;
+ }
+ break;
}
case 2: {
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 2 - IPv6");
- while (mylen > 0) {
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 16,
- "IPv6 Address: %s",
- tvb_ip6_to_str(tvb, offset2));
- offset2 += 16;
- mylen -= 16;
- }
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 2 - IPv6");
+ while (mylen > 0) {
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 16,
+ "IPv6 Address: %s",
+ tvb_ip6_to_str(tvb, offset2));
+ offset2 += 16;
+ mylen -= 16;
+ }
+ break;
}
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)",
- type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, mylen,
- "Data (%d bytes)", mylen);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)",
+ type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, mylen,
+ "Data (%d bytes)", mylen);
+ break;
}
}
@@ -2466,39 +2543,39 @@ dissect_rsvp_scope (proto_item *ti _U_, proto_tree *rsvp_object_tree,
* STYLE
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_style (proto_item *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_style(proto_item *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
int offset2 = offset + 4;
switch(type) {
case 1: {
- guint32 style;
-
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 1");
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
- "Flags: 0x%02x",
- tvb_get_guint8(tvb, offset2));
- style = tvb_get_ntoh24(tvb, offset2+1);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+1,
- 3, "Style: 0x%06X - %s", style,
- val_to_str(style, style_vals, "Unknown"));
- proto_item_set_text(ti, "STYLE: %s (%d)",
- val_to_str(style, style_vals, "Unknown"),
- style);
- break;
+ guint32 style;
+
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 1");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
+ "Flags: 0x%02x",
+ tvb_get_guint8(tvb, offset2));
+ style = tvb_get_ntoh24(tvb, offset2+1);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+1,
+ 3, "Style: 0x%06X - %s", style,
+ val_to_str_const(style, style_vals, "Unknown"));
+ proto_item_set_text(ti, "STYLE: %s (%d)",
+ val_to_str_const(style, style_vals, "Unknown"),
+ style);
+ break;
}
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)",
- type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)",
+ type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
+ "Data (%d bytes)", obj_length - 4);
+ break;
}
}
@@ -2506,40 +2583,41 @@ dissect_rsvp_style (proto_item *ti, proto_tree *rsvp_object_tree,
* CONFIRM
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_confirm (proto_item *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_confirm(proto_item *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
int offset2 = offset + 4;
switch(type) {
case 1: {
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 1 - IPv4");
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 4,
- "Receiver address: %s",
- tvb_ip_to_str(tvb, offset2));
- proto_item_set_text(ti, "CONFIRM: Receiver %s",
- tvb_ip_to_str(tvb, offset2));
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 1 - IPv4");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 4,
+ "Receiver address: %s",
+ tvb_ip_to_str(tvb, offset2));
+ proto_item_set_text(ti, "CONFIRM: Receiver %s",
+ tvb_ip_to_str(tvb, offset2));
+ break;
}
case 2: {
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 2 - IPv6");
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 16,
- "Receiver address: %s",
- tvb_ip6_to_str(tvb, offset2));
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 2 - IPv6");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 16,
+ "Receiver address: %s",
+ tvb_ip6_to_str(tvb, offset2));
+ break;
}
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)",
- type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)",
+ type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
+ "Data (%d bytes)", obj_length - 4);
+ break;
}
}
@@ -2547,81 +2625,82 @@ dissect_rsvp_confirm (proto_item *ti, proto_tree *rsvp_object_tree,
* SENDER TEMPLATE and FILTERSPEC
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_template_filter (proto_item *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type,
- rsvp_conversation_info *rsvph)
+dissect_rsvp_template_filter(proto_item *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type,
+ rsvp_conversation_info *rsvph)
{
int offset2 = offset + 4;
proto_item_set_text(ti, "%s", summary_template(tvb, offset));
switch(type) {
case 1:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 1 - IPv4");
- proto_tree_add_item(rsvp_object_tree,
- hf_rsvp_filter[RSVPF_SENDER_IP],
- tvb, offset2, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(rsvp_object_tree,
- hf_rsvp_filter[RSVPF_SENDER_PORT],
- tvb, offset2+6, 2, ENC_BIG_ENDIAN);
-
- /*
- * Save this information to build the conversation request key later.
- */
- SET_ADDRESS(&rsvph->source, AT_IPv4, 4, tvb_get_ptr(tvb, offset2, 4));
- rsvph->udp_source_port = tvb_get_ntohs(tvb, offset2+6);
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 1 - IPv4");
+ proto_tree_add_item(rsvp_object_tree,
+ hf_rsvp_filter[RSVPF_SENDER_IP],
+ tvb, offset2, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(rsvp_object_tree,
+ hf_rsvp_filter[RSVPF_SENDER_PORT],
+ tvb, offset2+6, 2, ENC_BIG_ENDIAN);
+
+ /*
+ * Save this information to build the conversation request key later.
+ */
+ SET_ADDRESS(&rsvph->source, AT_IPv4, 4, tvb_get_ptr(tvb, offset2, 4));
+ rsvph->udp_source_port = tvb_get_ntohs(tvb, offset2+6);
+ break;
case 2:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 2 - IPv6");
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 16,
- "Source address: %s",
- tvb_ip6_to_str(tvb, offset2));
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+18, 2,
- "Source port: %u",
- tvb_get_ntohs(tvb, offset2+18));
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 2 - IPv6");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 16,
+ "Source address: %s",
+ tvb_ip6_to_str(tvb, offset2));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+18, 2,
+ "Source port: %u",
+ tvb_get_ntohs(tvb, offset2+18));
+ break;
case 7:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 7 - IPv4 LSP");
- proto_tree_add_item(rsvp_object_tree,
- hf_rsvp_filter[RSVPF_SENDER_IP],
- tvb, offset2, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(rsvp_object_tree,
- hf_rsvp_filter[RSVPF_SENDER_LSP_ID],
- tvb, offset2+6, 2, ENC_BIG_ENDIAN);
-
- /*
- * Save this information to build the conversation request key later.
- */
- SET_ADDRESS(&rsvph->source, AT_IPv4, 4, tvb_get_ptr(tvb, offset2, 4));
- rsvph->udp_source_port = tvb_get_ntohs(tvb, offset2+6);
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 7 - IPv4 LSP");
+ proto_tree_add_item(rsvp_object_tree,
+ hf_rsvp_filter[RSVPF_SENDER_IP],
+ tvb, offset2, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(rsvp_object_tree,
+ hf_rsvp_filter[RSVPF_SENDER_LSP_ID],
+ tvb, offset2+6, 2, ENC_BIG_ENDIAN);
+
+ /*
+ * Save this information to build the conversation request key later.
+ */
+ SET_ADDRESS(&rsvph->source, AT_IPv4, 4, tvb_get_ptr(tvb, offset2, 4));
+ rsvph->udp_source_port = tvb_get_ntohs(tvb, offset2+6);
+ break;
case 9:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 9 - IPv4 Aggregate");
- proto_tree_add_item(rsvp_object_tree,
- hf_rsvp_filter[RSVPF_SENDER_IP],
- tvb, offset2, 4, ENC_BIG_ENDIAN);
-
- /*
- * Save this information to build the conversation request key later.
- */
- SET_ADDRESS(&rsvph->source, AT_IPv4, 4, tvb_get_ptr(tvb, offset2, 4));
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 9 - IPv4 Aggregate");
+ proto_tree_add_item(rsvp_object_tree,
+ hf_rsvp_filter[RSVPF_SENDER_IP],
+ tvb, offset2, 4, ENC_BIG_ENDIAN);
+
+ /*
+ * Save this information to build the conversation request key later.
+ */
+ SET_ADDRESS(&rsvph->source, AT_IPv4, 4, tvb_get_ptr(tvb, offset2, 4));
+ break;
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)",
- type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
- }
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)",
+ type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
+ "Data (%d bytes)", obj_length - 4);
+ break;
+ }
}
/*------------------------------------------------------------------------------
@@ -2629,94 +2708,95 @@ dissect_rsvp_template_filter (proto_item *ti, proto_tree *rsvp_object_tree,
*------------------------------------------------------------------------------*/
static void
dissect_rsvp_eth_tspec_tlv(proto_item *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb, int offset, int tlv_length,
- int subtree_type)
+ tvbuff_t *tvb, int offset, int tlv_length,
+ int subtree_type)
{
- int tlv_off;
- guint16 tlv_type;
- int tlv_len;
- guint8 profile;
+ int tlv_off;
+ guint16 tlv_type;
+ int tlv_len;
+ guint8 profile;
proto_tree *rsvp_ethspec_subtree, *ethspec_profile_subtree, *ti2, *ti3;
for (tlv_off = 0; tlv_off < tlv_length; ) {
- tlv_type = tvb_get_ntohs(tvb, offset+tlv_off);
- tlv_len = tvb_get_ntohs(tvb, offset+tlv_off+2);
-
- if (tlv_len == 0 || tlv_off+tlv_len > tlv_length) {
- proto_tree_add_text(rsvp_object_tree, tvb, offset+tlv_off+2, 2,
- "Invalid length");
- return;
- }
- switch(tlv_type) {
- case 0:
- case 1:
- case 255:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+tlv_off, tlv_len,
- "RESERVED (RFC6003)");
- rsvp_ethspec_subtree = proto_item_add_subtree(ti2, subtree_type);
- proto_tree_add_text(rsvp_ethspec_subtree, tvb, offset+tlv_off, 2,
- "Type: %u (RESERVED)", tlv_type);
- proto_tree_add_text(rsvp_ethspec_subtree, tvb, offset+tlv_off+2, 2,
- "Length: %u", tlv_len);
- break;
-
- case 2:
- case 129: /* OIF demo 2009 */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+tlv_off, tlv_len,
- "Ethernet Bandwidth Profile TLV: CIR=%.10g, CBS=%.10g, "
- "EIR=%.10g, EBS=%.10g",
- tvb_get_ntohieee_float(tvb, offset+tlv_off+8),
- tvb_get_ntohieee_float(tvb, offset+tlv_off+12),
- tvb_get_ntohieee_float(tvb, offset+tlv_off+16),
- tvb_get_ntohieee_float(tvb, offset+tlv_off+20));
- rsvp_ethspec_subtree = proto_item_add_subtree(ti2, subtree_type);
- proto_tree_add_text(rsvp_ethspec_subtree, tvb, offset+tlv_off, 2,
- "Type: %u - Ethernet Bandwidth Profile", tlv_type);
- proto_tree_add_text(rsvp_ethspec_subtree, tvb, offset+tlv_off+2, 2,
- "Length: %u", tlv_len);
- profile = tvb_get_guint8(tvb, offset+tlv_off+4);
- ti3 = proto_tree_add_text(rsvp_ethspec_subtree, tvb, offset+tlv_off+4, 1,
- "Profile: 0x%02x", profile);
- ethspec_profile_subtree = proto_item_add_subtree(ti3, TREE(TT_ETHSPEC_SUBTREE));
- proto_tree_add_text(ethspec_profile_subtree, tvb, offset+tlv_off+4, 1, "%s",
- decode_boolean_bitfield(profile, 0x02, 8,
- "Color Mode (CM) set",
- "Color Mode (CM) NOT set"));
- proto_tree_add_text(ethspec_profile_subtree, tvb, offset+tlv_off+4, 1, "%s",
- decode_boolean_bitfield(profile, 0x01, 8,
- "Coupling Flag (CF) set",
- "Coupling Flag (CF) NOT set"));
- proto_item_append_text(ti3, " %s %s",
- (profile & (1<<1)) ? "CM" : "",
- (profile & (1<<0)) ? "CF" : "");
- proto_tree_add_text(rsvp_ethspec_subtree, tvb, offset+tlv_off+5, 1,
- "Index: %x", tvb_get_guint8(tvb, offset+tlv_off+5));
- proto_tree_add_text(rsvp_ethspec_subtree, tvb, offset+tlv_off+6, 2,
- "Reserved: %x", tvb_get_ntohs(tvb, offset+tlv_off+6));
- proto_tree_add_text(rsvp_ethspec_subtree, tvb, offset+tlv_off+8, 4, "CIR: %.10g",
- tvb_get_ntohieee_float(tvb, offset+tlv_off+8));
- proto_tree_add_text(rsvp_ethspec_subtree, tvb, offset+tlv_off+12, 4, "CBS: %.10g",
- tvb_get_ntohieee_float(tvb, offset+tlv_off+12));
- proto_tree_add_text(rsvp_ethspec_subtree, tvb, offset+tlv_off+16, 4, "EIR: %.10g",
- tvb_get_ntohieee_float(tvb, offset+tlv_off+16));
- proto_tree_add_text(rsvp_ethspec_subtree, tvb, offset+tlv_off+20, 4, "EBS: %.10g",
- tvb_get_ntohieee_float(tvb, offset+tlv_off+20));
-
- proto_item_append_text(ti, "ETH profile: CIR=%.10g, CBS=%.10g, EIR=%.10g, "
- "EBS=%.10g",
- tvb_get_ntohieee_float(tvb, offset+tlv_off+8),
- tvb_get_ntohieee_float(tvb, offset+tlv_off+12),
- tvb_get_ntohieee_float(tvb, offset+tlv_off+16),
- tvb_get_ntohieee_float(tvb, offset+tlv_off+20));
- break;
-
- default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+tlv_off, 2,
- "Unknown TLV: %u", tlv_type);
- }
- tlv_off += tlv_len;
+ tlv_type = tvb_get_ntohs(tvb, offset+tlv_off);
+ tlv_len = tvb_get_ntohs(tvb, offset+tlv_off+2);
+
+ if ((tlv_len == 0) || (tlv_off+tlv_len > tlv_length)) {
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+tlv_off+2, 2,
+ "Invalid length");
+ return;
+ }
+ switch(tlv_type) {
+ case 0:
+ case 1:
+ case 255:
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset+tlv_off, tlv_len,
+ "RESERVED (RFC6003)");
+ rsvp_ethspec_subtree = proto_item_add_subtree(ti2, subtree_type);
+ proto_tree_add_text(rsvp_ethspec_subtree, tvb, offset+tlv_off, 2,
+ "Type: %u (RESERVED)", tlv_type);
+ proto_tree_add_text(rsvp_ethspec_subtree, tvb, offset+tlv_off+2, 2,
+ "Length: %u", tlv_len);
+ break;
+
+ case 2:
+ case 129: /* OIF demo 2009 */
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset+tlv_off, tlv_len,
+ "Ethernet Bandwidth Profile TLV: CIR=%.10g, CBS=%.10g, "
+ "EIR=%.10g, EBS=%.10g",
+ tvb_get_ntohieee_float(tvb, offset+tlv_off+8),
+ tvb_get_ntohieee_float(tvb, offset+tlv_off+12),
+ tvb_get_ntohieee_float(tvb, offset+tlv_off+16),
+ tvb_get_ntohieee_float(tvb, offset+tlv_off+20));
+ rsvp_ethspec_subtree = proto_item_add_subtree(ti2, subtree_type);
+ proto_tree_add_text(rsvp_ethspec_subtree, tvb, offset+tlv_off, 2,
+ "Type: %u - Ethernet Bandwidth Profile", tlv_type);
+ proto_tree_add_text(rsvp_ethspec_subtree, tvb, offset+tlv_off+2, 2,
+ "Length: %u", tlv_len);
+ profile = tvb_get_guint8(tvb, offset+tlv_off+4);
+ ti3 = proto_tree_add_text(rsvp_ethspec_subtree, tvb, offset+tlv_off+4, 1,
+ "Profile: 0x%02x", profile);
+ ethspec_profile_subtree = proto_item_add_subtree(ti3, TREE(TT_ETHSPEC_SUBTREE));
+ proto_tree_add_text(ethspec_profile_subtree, tvb, offset+tlv_off+4, 1, "%s",
+ decode_boolean_bitfield(profile, 0x02, 8,
+ "Color Mode (CM) set",
+ "Color Mode (CM) NOT set"));
+ proto_tree_add_text(ethspec_profile_subtree, tvb, offset+tlv_off+4, 1, "%s",
+ decode_boolean_bitfield(profile, 0x01, 8,
+ "Coupling Flag (CF) set",
+ "Coupling Flag (CF) NOT set"));
+ proto_item_append_text(ti3, " %s %s",
+ (profile & (1<<1)) ? "CM" : "",
+ (profile & (1<<0)) ? "CF" : "");
+ proto_tree_add_text(rsvp_ethspec_subtree, tvb, offset+tlv_off+5, 1,
+ "Index: %x", tvb_get_guint8(tvb, offset+tlv_off+5));
+ proto_tree_add_text(rsvp_ethspec_subtree, tvb, offset+tlv_off+6, 2,
+ "Reserved: %x", tvb_get_ntohs(tvb, offset+tlv_off+6));
+ proto_tree_add_text(rsvp_ethspec_subtree, tvb, offset+tlv_off+8, 4, "CIR: %.10g",
+ tvb_get_ntohieee_float(tvb, offset+tlv_off+8));
+ proto_tree_add_text(rsvp_ethspec_subtree, tvb, offset+tlv_off+12, 4, "CBS: %.10g",
+ tvb_get_ntohieee_float(tvb, offset+tlv_off+12));
+ proto_tree_add_text(rsvp_ethspec_subtree, tvb, offset+tlv_off+16, 4, "EIR: %.10g",
+ tvb_get_ntohieee_float(tvb, offset+tlv_off+16));
+ proto_tree_add_text(rsvp_ethspec_subtree, tvb, offset+tlv_off+20, 4, "EBS: %.10g",
+ tvb_get_ntohieee_float(tvb, offset+tlv_off+20));
+
+ proto_item_append_text(ti, "ETH profile: CIR=%.10g, CBS=%.10g, EIR=%.10g, "
+ "EBS=%.10g",
+ tvb_get_ntohieee_float(tvb, offset+tlv_off+8),
+ tvb_get_ntohieee_float(tvb, offset+tlv_off+12),
+ tvb_get_ntohieee_float(tvb, offset+tlv_off+16),
+ tvb_get_ntohieee_float(tvb, offset+tlv_off+20));
+ break;
+
+ default:
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+tlv_off, 2,
+ "Unknown TLV: %u", tlv_type);
+ break;
+ }
+ tlv_off += tlv_len;
}
}
@@ -2724,280 +2804,280 @@ dissect_rsvp_eth_tspec_tlv(proto_item *ti, proto_tree *rsvp_object_tree,
* SENDER TSPEC
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_tspec (proto_item *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_tspec(proto_item *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
- int offset2 = offset + 4;
- int mylen;
+ int offset2 = offset + 4;
+ int mylen;
proto_tree *tspec_tree, *ti2;
- guint8 signal_type;
- guint16 switch_gran;
+ guint8 signal_type;
+ guint16 switch_gran;
mylen = obj_length - 4;
switch(type) {
case 2:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 2 - Integrated Services");
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
- "Message format version: %u",
- tvb_get_guint8(tvb, offset2)>>4);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 2,
- "Data length: %u words, not including header",
- tvb_get_ntohs(tvb, offset2+2));
-
- mylen -= 4;
- offset2 += 4;
-
- proto_item_set_text(ti, "SENDER TSPEC: IntServ, ");
-
- while (mylen > 0) {
- guint8 service_num;
- guint8 param_id;
- guint param_len;
- guint param_len_processed;
- guint length;
-
- service_num = tvb_get_guint8(tvb, offset2);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
- "Service header: %u - %s",
- service_num,
- val_to_str(service_num, qos_vals, "Unknown"));
- length = tvb_get_ntohs(tvb, offset2+2);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 2,
- "Length of service %u data: %u words, "
- "not including header",
- service_num, length);
-
- mylen -= 4;
- offset2 += 4;
-
- /* Process all known service headers as a set of parameters */
- param_len_processed = 0;
- while (param_len_processed < length) {
- param_id = tvb_get_guint8(tvb, offset2);
- param_len = tvb_get_ntohs(tvb, offset2+2) + 1;
- if (param_len < 1)
- THROW(ReportedBoundsError);
- switch(param_id) {
- case 127:
- /* Token Bucket */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2, param_len*4,
- "Token Bucket TSpec: ");
- tspec_tree = proto_item_add_subtree(ti2, TREE(TT_TSPEC_SUBTREE));
-
- proto_tree_add_text(tspec_tree, tvb, offset2, 1,
- "Parameter %u - %s",
- param_id,
- val_to_str(param_id, svc_vals, "Unknown"));
- proto_tree_add_text(tspec_tree, tvb, offset2+1, 1,
- "Parameter %u flags: 0x%02x",
- param_id,
- tvb_get_guint8(tvb, offset2+1));
- proto_tree_add_text(tspec_tree, tvb, offset2+2, 2,
- "Parameter %u data length: %u words, "
- "not including header",
- param_id,
- tvb_get_ntohs(tvb, offset2+2));
- proto_tree_add_text(tspec_tree, tvb, offset2+4, 4,
- "Token bucket rate: %.10g",
- tvb_get_ntohieee_float(tvb, offset2+4));
- proto_tree_add_text(tspec_tree, tvb, offset2+8, 4,
- "Token bucket size: %.10g",
- tvb_get_ntohieee_float(tvb, offset2+8));
- proto_tree_add_text(tspec_tree, tvb, offset2+12, 4,
- "Peak data rate: %.10g",
- tvb_get_ntohieee_float(tvb, offset2+12));
- proto_tree_add_text(tspec_tree, tvb, offset2+16, 4,
- "Minimum policed unit [m]: %u",
- tvb_get_ntohl(tvb, offset2+16));
- proto_tree_add_text(tspec_tree, tvb, offset2+20, 4,
- "Maximum packet size [M]: %u",
- tvb_get_ntohl(tvb, offset2+20));
- proto_item_append_text(ti, "Token Bucket, %.10g bytes/sec. ",
- tvb_get_ntohieee_float(tvb, offset2+4));
- proto_item_append_text(ti2, "Rate=%.10g Burst=%.10g Peak=%.10g m=%u M=%u",
- tvb_get_ntohieee_float(tvb, offset2+4),
- tvb_get_ntohieee_float(tvb, offset2+8),
- tvb_get_ntohieee_float(tvb, offset2+12),
- tvb_get_ntohl(tvb, offset2+16),
- tvb_get_ntohl(tvb, offset2+20));
- break;
-
- case 128:
- /* Null Service (RFC2997) */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2, param_len*4,
- "Null Service TSpec: ");
- tspec_tree = proto_item_add_subtree(ti2, TREE(TT_TSPEC_SUBTREE));
-
- proto_tree_add_text(tspec_tree, tvb, offset2, 1,
- "Parameter %u - %s",
- param_id,
- val_to_str(param_id, svc_vals, "Unknown"));
- proto_tree_add_text(tspec_tree, tvb, offset2+1, 1,
- "Parameter %u flags: %x",
- param_id,
- tvb_get_guint8(tvb, offset2+1));
- proto_tree_add_text(tspec_tree, tvb, offset2+2, 2,
- "Parameter %u data length: %u words, "
- "not including header",
- param_id,
- tvb_get_ntohs(tvb, offset2+2));
- proto_tree_add_text(tspec_tree, tvb, offset2+4, 4,
- "Maximum packet size [M]: %u",
- tvb_get_ntohl(tvb, offset2+4));
- proto_item_append_text(ti, "Null Service. M=%u",
- tvb_get_ntohl(tvb, offset2+4));
- proto_item_append_text(ti2, "Max pkt size=%u",
- tvb_get_ntohl(tvb, offset2+4));
- break;
-
- case 126:
- /* Compression hint (RFC3006) */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2, param_len*4,
- "Compression Hint: ");
- tspec_tree = proto_item_add_subtree(ti2, TREE(TT_TSPEC_SUBTREE));
-
- proto_tree_add_text(tspec_tree, tvb, offset2, 1,
- "Parameter %u - %s",
- param_id,
- val_to_str(param_id, svc_vals, "Unknown"));
- proto_tree_add_text(tspec_tree, tvb, offset2+1, 1,
- "Parameter %u flags: %x",
- param_id,
- tvb_get_guint8(tvb, offset2+1));
- proto_tree_add_text(tspec_tree, tvb, offset2+2, 2,
- "Parameter %u data length: %u words, "
- "not including header",
- param_id,
- tvb_get_ntohs(tvb, offset2+2));
- proto_tree_add_text(tspec_tree, tvb, offset2+4, 4,
- "Hint: %u",
- tvb_get_ntohl(tvb, offset2+4));
- proto_tree_add_text(tspec_tree, tvb, offset2+4, 4,
- "Compression Factor: %u",
- tvb_get_ntohl(tvb, offset2+8));
- proto_item_append_text(ti, "Compression Hint. Hint=%u, Factor=%u",
- tvb_get_ntohl(tvb, offset2+4),
- tvb_get_ntohl(tvb, offset2+8));
- proto_item_append_text(ti2, "Hint=%u, Factor=%u",
- tvb_get_ntohl(tvb, offset2+4),
- tvb_get_ntohl(tvb, offset2+8));
- break;
-
- default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, param_len*4,
- "Unknown parameter %d, %d words",
- param_id, param_len);
- break;
- }
- param_len_processed += param_len;
- offset2 += param_len*4;
- }
- mylen -= length*4;
- }
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 2 - Integrated Services");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
+ "Message format version: %u",
+ tvb_get_guint8(tvb, offset2)>>4);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 2,
+ "Data length: %u words, not including header",
+ tvb_get_ntohs(tvb, offset2+2));
+
+ mylen -= 4;
+ offset2 += 4;
+
+ proto_item_set_text(ti, "SENDER TSPEC: IntServ, ");
+
+ while (mylen > 0) {
+ guint8 service_num;
+ guint8 param_id;
+ guint param_len;
+ guint param_len_processed;
+ guint length;
+
+ service_num = tvb_get_guint8(tvb, offset2);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
+ "Service header: %u - %s",
+ service_num,
+ val_to_str_const(service_num, qos_vals, "Unknown"));
+ length = tvb_get_ntohs(tvb, offset2+2);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 2,
+ "Length of service %u data: %u words, "
+ "not including header",
+ service_num, length);
+
+ mylen -= 4;
+ offset2 += 4;
+
+ /* Process all known service headers as a set of parameters */
+ param_len_processed = 0;
+ while (param_len_processed < length) {
+ param_id = tvb_get_guint8(tvb, offset2);
+ param_len = tvb_get_ntohs(tvb, offset2+2) + 1;
+ if (param_len < 1)
+ THROW(ReportedBoundsError);
+ switch(param_id) {
+ case 127:
+ /* Token Bucket */
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset2, param_len*4,
+ "Token Bucket TSpec: ");
+ tspec_tree = proto_item_add_subtree(ti2, TREE(TT_TSPEC_SUBTREE));
+
+ proto_tree_add_text(tspec_tree, tvb, offset2, 1,
+ "Parameter %u - %s",
+ param_id,
+ val_to_str_ext_const(param_id, &svc_vals_ext, "Unknown"));
+ proto_tree_add_text(tspec_tree, tvb, offset2+1, 1,
+ "Parameter %u flags: 0x%02x",
+ param_id,
+ tvb_get_guint8(tvb, offset2+1));
+ proto_tree_add_text(tspec_tree, tvb, offset2+2, 2,
+ "Parameter %u data length: %u words, "
+ "not including header",
+ param_id,
+ tvb_get_ntohs(tvb, offset2+2));
+ proto_tree_add_text(tspec_tree, tvb, offset2+4, 4,
+ "Token bucket rate: %.10g",
+ tvb_get_ntohieee_float(tvb, offset2+4));
+ proto_tree_add_text(tspec_tree, tvb, offset2+8, 4,
+ "Token bucket size: %.10g",
+ tvb_get_ntohieee_float(tvb, offset2+8));
+ proto_tree_add_text(tspec_tree, tvb, offset2+12, 4,
+ "Peak data rate: %.10g",
+ tvb_get_ntohieee_float(tvb, offset2+12));
+ proto_tree_add_text(tspec_tree, tvb, offset2+16, 4,
+ "Minimum policed unit [m]: %u",
+ tvb_get_ntohl(tvb, offset2+16));
+ proto_tree_add_text(tspec_tree, tvb, offset2+20, 4,
+ "Maximum packet size [M]: %u",
+ tvb_get_ntohl(tvb, offset2+20));
+ proto_item_append_text(ti, "Token Bucket, %.10g bytes/sec. ",
+ tvb_get_ntohieee_float(tvb, offset2+4));
+ proto_item_append_text(ti2, "Rate=%.10g Burst=%.10g Peak=%.10g m=%u M=%u",
+ tvb_get_ntohieee_float(tvb, offset2+4),
+ tvb_get_ntohieee_float(tvb, offset2+8),
+ tvb_get_ntohieee_float(tvb, offset2+12),
+ tvb_get_ntohl(tvb, offset2+16),
+ tvb_get_ntohl(tvb, offset2+20));
+ break;
+
+ case 128:
+ /* Null Service (RFC2997) */
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset2, param_len*4,
+ "Null Service TSpec: ");
+ tspec_tree = proto_item_add_subtree(ti2, TREE(TT_TSPEC_SUBTREE));
+
+ proto_tree_add_text(tspec_tree, tvb, offset2, 1,
+ "Parameter %u - %s",
+ param_id,
+ val_to_str_ext_const(param_id, &svc_vals_ext, "Unknown"));
+ proto_tree_add_text(tspec_tree, tvb, offset2+1, 1,
+ "Parameter %u flags: %x",
+ param_id,
+ tvb_get_guint8(tvb, offset2+1));
+ proto_tree_add_text(tspec_tree, tvb, offset2+2, 2,
+ "Parameter %u data length: %u words, "
+ "not including header",
+ param_id,
+ tvb_get_ntohs(tvb, offset2+2));
+ proto_tree_add_text(tspec_tree, tvb, offset2+4, 4,
+ "Maximum packet size [M]: %u",
+ tvb_get_ntohl(tvb, offset2+4));
+ proto_item_append_text(ti, "Null Service. M=%u",
+ tvb_get_ntohl(tvb, offset2+4));
+ proto_item_append_text(ti2, "Max pkt size=%u",
+ tvb_get_ntohl(tvb, offset2+4));
+ break;
+
+ case 126:
+ /* Compression hint (RFC3006) */
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset2, param_len*4,
+ "Compression Hint: ");
+ tspec_tree = proto_item_add_subtree(ti2, TREE(TT_TSPEC_SUBTREE));
+
+ proto_tree_add_text(tspec_tree, tvb, offset2, 1,
+ "Parameter %u - %s",
+ param_id,
+ val_to_str_ext_const(param_id, &svc_vals_ext, "Unknown"));
+ proto_tree_add_text(tspec_tree, tvb, offset2+1, 1,
+ "Parameter %u flags: %x",
+ param_id,
+ tvb_get_guint8(tvb, offset2+1));
+ proto_tree_add_text(tspec_tree, tvb, offset2+2, 2,
+ "Parameter %u data length: %u words, "
+ "not including header",
+ param_id,
+ tvb_get_ntohs(tvb, offset2+2));
+ proto_tree_add_text(tspec_tree, tvb, offset2+4, 4,
+ "Hint: %u",
+ tvb_get_ntohl(tvb, offset2+4));
+ proto_tree_add_text(tspec_tree, tvb, offset2+4, 4,
+ "Compression Factor: %u",
+ tvb_get_ntohl(tvb, offset2+8));
+ proto_item_append_text(ti, "Compression Hint. Hint=%u, Factor=%u",
+ tvb_get_ntohl(tvb, offset2+4),
+ tvb_get_ntohl(tvb, offset2+8));
+ proto_item_append_text(ti2, "Hint=%u, Factor=%u",
+ tvb_get_ntohl(tvb, offset2+4),
+ tvb_get_ntohl(tvb, offset2+8));
+ break;
+
+ default:
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, param_len*4,
+ "Unknown parameter %d, %d words",
+ param_id, param_len);
+ break;
+ }
+ param_len_processed += param_len;
+ offset2 += param_len*4;
+ }
+ mylen -= length*4;
+ }
+ break;
case 4: /* SONET/SDH Tspec */
- proto_item_set_text(ti, "SENDER TSPEC: SONET/SDH, ");
-
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 4 - SONET/SDH");
- signal_type = tvb_get_guint8(tvb, offset2);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
- "Signal Type: %d - %s", signal_type,
- val_to_str(signal_type,
- gmpls_sonet_signal_type_str, "Unknown"));
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb, offset2+1, 1,
- "Requested Concatenation (RCC): %d", tvb_get_guint8(tvb, offset2+1));
- tspec_tree = proto_item_add_subtree(ti2, TREE(TT_TSPEC_SUBTREE));
- proto_tree_add_text(tspec_tree, tvb, offset2+1, 1, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+1), 0x01, 8,
- "Standard contiguous concatenation",
- "No standard contiguous concatenation"));
- proto_tree_add_text(tspec_tree, tvb, offset2+1, 1, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+1), 0x02, 8,
- "Arbitrary contiguous concatenation",
- "No arbitrary contiguous concatenation"));
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 2,
- "Number of Contiguous Components (NCC): %d", tvb_get_ntohs(tvb, offset2+2));
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+4, 2,
- "Number of Virtual Components (NVC): %d", tvb_get_ntohs(tvb, offset2+4));
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+6, 2,
- "Multiplier (MT): %d", tvb_get_ntohs(tvb, offset2+6));
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb, offset2+8, 4,
- "Transparency (T): 0x%0x", tvb_get_ntohl(tvb, offset2+8));
- tspec_tree = proto_item_add_subtree(ti2, TREE(TT_TSPEC_SUBTREE));
- proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_ntohl(tvb, offset2+8), 0x0001, 32,
- "Section/Regenerator Section layer transparency",
- "No Section/Regenerator Section layer transparency"));
- proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0002, 32,
- "Line/Multiplex Section layer transparency",
- "No Line/Multiplex Section layer transparency"));
- proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0004, 32,
- "J0 transparency",
- "No J0 transparency"));
- proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0008, 32,
- "SOH/RSOH DCC transparency",
- "No SOH/RSOH DCC transparency"));
- proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0010, 32,
- "LOH/MSOH DCC transparency",
- "No LOH/MSOH DCC transparency"));
- proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0020, 32,
- "LOH/MSOH Extended DCC transparency",
- "No LOH/MSOH Extended DCC transparency"));
- proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0040, 32,
- "K1/K2 transparency",
- "No K1/K2 transparency"));
- proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0080, 32,
- "E1 transparency",
- "No E1 transparency"));
- proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0100, 32,
- "F1 transparency",
- "No F1 transparency"));
- proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0200, 32,
- "E2 transparency",
- "No E2 transparency"));
- proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0400, 32,
- "B1 transparency",
- "No B1 transparency"));
- proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0800, 32,
- "B2 transparency",
- "No B2 transparency"));
- proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x1000, 32,
- "M0 transparency",
- "No M0 transparency"));
- proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x2000, 32,
- "M1 transparency",
- "No M1 transparency"));
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+12, 4,
- "Profile (P): %d", tvb_get_ntohl(tvb, offset2+12));
-
- proto_item_append_text(ti, "Signal [%s], RCC %d, NCC %d, NVC %d, MT %d, Transparency %d, Profile %d",
- val_to_str(signal_type, gmpls_sonet_signal_type_str, "Unknown"),
- tvb_get_guint8(tvb, offset2+1), tvb_get_ntohs(tvb, offset2+2),
- tvb_get_ntohs(tvb, offset2+4), tvb_get_ntohs(tvb, offset2+6),
- tvb_get_ntohl(tvb, offset2+8), tvb_get_ntohl(tvb, offset2+12));
- break;
+ proto_item_set_text(ti, "SENDER TSPEC: SONET/SDH, ");
+
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 4 - SONET/SDH");
+ signal_type = tvb_get_guint8(tvb, offset2);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
+ "Signal Type: %d - %s", signal_type,
+ val_to_str_ext_const(signal_type,
+ &gmpls_sonet_signal_type_str_ext, "Unknown"));
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb, offset2+1, 1,
+ "Requested Concatenation (RCC): %d", tvb_get_guint8(tvb, offset2+1));
+ tspec_tree = proto_item_add_subtree(ti2, TREE(TT_TSPEC_SUBTREE));
+ proto_tree_add_text(tspec_tree, tvb, offset2+1, 1, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+1), 0x01, 8,
+ "Standard contiguous concatenation",
+ "No standard contiguous concatenation"));
+ proto_tree_add_text(tspec_tree, tvb, offset2+1, 1, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+1), 0x02, 8,
+ "Arbitrary contiguous concatenation",
+ "No arbitrary contiguous concatenation"));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 2,
+ "Number of Contiguous Components (NCC): %d", tvb_get_ntohs(tvb, offset2+2));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+4, 2,
+ "Number of Virtual Components (NVC): %d", tvb_get_ntohs(tvb, offset2+4));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+6, 2,
+ "Multiplier (MT): %d", tvb_get_ntohs(tvb, offset2+6));
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb, offset2+8, 4,
+ "Transparency (T): 0x%0x", tvb_get_ntohl(tvb, offset2+8));
+ tspec_tree = proto_item_add_subtree(ti2, TREE(TT_TSPEC_SUBTREE));
+ proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_ntohl(tvb, offset2+8), 0x0001, 32,
+ "Section/Regenerator Section layer transparency",
+ "No Section/Regenerator Section layer transparency"));
+ proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0002, 32,
+ "Line/Multiplex Section layer transparency",
+ "No Line/Multiplex Section layer transparency"));
+ proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0004, 32,
+ "J0 transparency",
+ "No J0 transparency"));
+ proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0008, 32,
+ "SOH/RSOH DCC transparency",
+ "No SOH/RSOH DCC transparency"));
+ proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0010, 32,
+ "LOH/MSOH DCC transparency",
+ "No LOH/MSOH DCC transparency"));
+ proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0020, 32,
+ "LOH/MSOH Extended DCC transparency",
+ "No LOH/MSOH Extended DCC transparency"));
+ proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0040, 32,
+ "K1/K2 transparency",
+ "No K1/K2 transparency"));
+ proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0080, 32,
+ "E1 transparency",
+ "No E1 transparency"));
+ proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0100, 32,
+ "F1 transparency",
+ "No F1 transparency"));
+ proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0200, 32,
+ "E2 transparency",
+ "No E2 transparency"));
+ proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0400, 32,
+ "B1 transparency",
+ "No B1 transparency"));
+ proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0800, 32,
+ "B2 transparency",
+ "No B2 transparency"));
+ proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x1000, 32,
+ "M0 transparency",
+ "No M0 transparency"));
+ proto_tree_add_text(tspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x2000, 32,
+ "M1 transparency",
+ "No M1 transparency"));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+12, 4,
+ "Profile (P): %d", tvb_get_ntohl(tvb, offset2+12));
+
+ proto_item_append_text(ti, "Signal [%s], RCC %d, NCC %d, NVC %d, MT %d, Transparency %d, Profile %d",
+ val_to_str_ext_const(signal_type, &gmpls_sonet_signal_type_str_ext, "Unknown"),
+ tvb_get_guint8(tvb, offset2+1), tvb_get_ntohs(tvb, offset2+2),
+ tvb_get_ntohs(tvb, offset2+4), tvb_get_ntohs(tvb, offset2+6),
+ tvb_get_ntohl(tvb, offset2+8), tvb_get_ntohl(tvb, offset2+12));
+ break;
case 5: /* FF: G.709 TSPEC, RFC 4328 */
proto_item_set_text(ti, "SENDER TSPEC: G.709, ");
@@ -3030,37 +3110,37 @@ dissect_rsvp_tspec (proto_item *ti, proto_tree *rsvp_object_tree,
break;
case 6: /* Ethernet TSPEC (RFC6003) */
- proto_item_set_text(ti, "SENDER TSPEC: Ethernet, ");
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 6 - Ethernet");
+ proto_item_set_text(ti, "SENDER TSPEC: Ethernet, ");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 6 - Ethernet");
switch_gran = tvb_get_ntohs(tvb, offset2);
if (switch_gran == 0)
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 2,
- "Switching granularity: 0 - Provided in signaling");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 2,
+ "Switching granularity: 0 - Provided in signaling");
else if (switch_gran == 1)
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 2,
- "Switching granularity: 1 - Ethernet port");
- else if (switch_gran == 2)
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 2,
- "Switching granularity: 2 - Ethernet frame");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 2,
+ "Switching granularity: 1 - Ethernet port");
+ else if (switch_gran == 2)
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 2,
+ "Switching granularity: 2 - Ethernet frame");
else
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 2,
- "Switching granularity: %u - ???", switch_gran);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 2,
+ "Switching granularity: %u - ???", switch_gran);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 2,
- "MTU: %u", tvb_get_ntohs(tvb, offset2+2));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 2,
+ "MTU: %u", tvb_get_ntohs(tvb, offset2+2));
- dissect_rsvp_eth_tspec_tlv(ti, rsvp_object_tree, tvb, offset+8, obj_length-8,
- TREE(TT_TSPEC_SUBTREE));
+ dissect_rsvp_eth_tspec_tlv(ti, rsvp_object_tree, tvb, offset+8, obj_length-8,
+ TREE(TT_TSPEC_SUBTREE));
break;
default: /* Unknown TSpec */
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)",
- type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)",
+ type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
+ "Data (%d bytes)", obj_length - 4);
+ break;
}
}
@@ -3069,299 +3149,299 @@ dissect_rsvp_tspec (proto_item *ti, proto_tree *rsvp_object_tree,
* FLOWSPEC
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_flowspec (proto_item *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_flowspec(proto_item *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
- int offset2 = offset + 4;
- int mylen, signal_type;
+ int offset2 = offset + 4;
+ int mylen, signal_type;
proto_tree *flowspec_tree, *ti2;
proto_item *item;
- guint16 switch_gran;
+ guint16 switch_gran;
proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: %u", type);
+ "C-type: %u", type);
mylen = obj_length - 4;
switch(type) {
case 2:
- if (mylen < 4) {
- item = proto_tree_add_text(rsvp_object_tree, tvb, 0, 0,
- "Object length %u < 8", obj_length);
- PROTO_ITEM_SET_GENERATED(item);
- return;
- }
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
- "Message format version: %u",
- tvb_get_guint8(tvb, offset2)>>4);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 2,
- "Data length: %u words, not including header",
- tvb_get_ntohs(tvb, offset2+2));
-
- proto_item_set_text(ti, "FLOWSPEC: ");
-
- mylen -= 4;
- offset2+= 4;
- while (mylen > 0) {
- guint8 service_num;
- guint length;
- guint8 param_id;
- guint param_len;
- guint param_len_processed;
-
- if (mylen < 4) {
- item = proto_tree_add_text(rsvp_object_tree, tvb, 0, 0,
- "Object length %u not large enough",
- obj_length);
- PROTO_ITEM_SET_GENERATED(item);
- return;
- }
- service_num = tvb_get_guint8(tvb, offset2);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
- "Service header: %u - %s",
- service_num,
- val_to_str(service_num, intsrv_services_str, "Unknown"));
- length = tvb_get_ntohs(tvb, offset2+2);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 2,
- "Length of service %u data: %u words, "
- "not including header",
- service_num,
- length);
-
- mylen -= 4;
- offset2 += 4;
-
- proto_item_append_text(ti, "%s: ",
- val_to_str(service_num, intsrv_services_str,
- "Unknown (%d)"));
-
- /* Process all known service headers as a set of parameters */
- param_len_processed = 0;
- while (param_len_processed < length) {
- param_id = tvb_get_guint8(tvb, offset2);
- param_len = tvb_get_ntohs(tvb, offset2+2) + 1;
- if (param_len < 1)
- THROW(ReportedBoundsError);
- switch(param_id) {
- case 127:
- /* Token Bucket */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2, param_len*4,
- "Token Bucket: ");
- flowspec_tree = proto_item_add_subtree(ti2, TREE(TT_FLOWSPEC_SUBTREE));
-
- proto_tree_add_text(flowspec_tree, tvb, offset2, 1,
- "Parameter %u - %s",
- param_id,
- val_to_str(param_id, svc_vals, "Unknown"));
- proto_tree_add_text(flowspec_tree, tvb, offset2+1, 1,
- "Parameter %u flags: 0x%02x",
- param_id,
- tvb_get_guint8(tvb, offset2+1));
- proto_tree_add_text(flowspec_tree, tvb, offset2+2, 2,
- "Parameter %u data length: %u words, "
- "not including header",
- param_id,
- tvb_get_ntohs(tvb, offset2+2));
- proto_tree_add_text(flowspec_tree, tvb, offset2+4, 4,
- "Token bucket rate: %.10g",
- tvb_get_ntohieee_float(tvb, offset2+4));
- proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4,
- "Token bucket size: %.10g",
- tvb_get_ntohieee_float(tvb, offset2+8));
- proto_tree_add_text(flowspec_tree, tvb, offset2+12, 4,
- "Peak data rate: %.10g",
- tvb_get_ntohieee_float(tvb, offset2+12));
- proto_tree_add_text(flowspec_tree, tvb, offset2+16, 4,
- "Minimum policed unit [m]: %u",
- tvb_get_ntohl(tvb, offset2+16));
- proto_tree_add_text(flowspec_tree, tvb, offset2+20, 4,
- "Maximum packet size [M]: %u",
- tvb_get_ntohl(tvb, offset2+20));
- proto_item_append_text(ti, "Token Bucket, %.10g bytes/sec. ",
- tvb_get_ntohieee_float(tvb, offset2+4));
- proto_item_append_text(ti2, "Rate=%.10g Burst=%.10g Peak=%.10g m=%u M=%u",
- tvb_get_ntohieee_float(tvb, offset2+4),
- tvb_get_ntohieee_float(tvb, offset2+8),
- tvb_get_ntohieee_float(tvb, offset2+12),
- tvb_get_ntohl(tvb, offset2+16),
- tvb_get_ntohl(tvb, offset2+20));
- break;
-
- case 130:
- /* Guaranteed-rate RSpec */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2, param_len*4,
- "Guaranteed-Rate RSpec: ");
- flowspec_tree = proto_item_add_subtree(ti2, TREE(TT_FLOWSPEC_SUBTREE));
- proto_tree_add_text(flowspec_tree, tvb, offset2, 1,
- "Parameter %u - %s",
- param_id,
- val_to_str(param_id, svc_vals, "Unknown"));
- proto_tree_add_text(flowspec_tree, tvb, offset2+1, 1,
- "Parameter %u flags: %x",
- param_id,
- tvb_get_guint8(tvb, offset2+1));
- proto_tree_add_text(flowspec_tree, tvb, offset2+2, 2,
- "Parameter %u data length: %u words, "
- "not including header",
- param_id,
- tvb_get_ntohs(tvb, offset2+2));
-
- proto_tree_add_text(flowspec_tree, tvb, offset2+4, 4,
- "Rate: %.10g",
- tvb_get_ntohieee_float(tvb, offset2+4));
- proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4,
- "Slack term: %u",
- tvb_get_ntohl(tvb, offset2+8));
- proto_item_append_text(ti, "RSpec, %.10g bytes/sec. ",
- tvb_get_ntohieee_float(tvb, offset2+4));
- proto_item_append_text(ti2, "R=%.10g, s=%u",
- tvb_get_ntohieee_float(tvb, offset2+4),
- tvb_get_ntohl(tvb, offset2+8));
- break;
-
- case 128:
- /* Null Service (RFC2997) */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2, param_len*4,
- "Null Service Flowspec: ");
- flowspec_tree = proto_item_add_subtree(ti2, TREE(TT_FLOWSPEC_SUBTREE));
-
- proto_tree_add_text(flowspec_tree, tvb, offset2, 1,
- "Parameter %u - %s",
- param_id,
- val_to_str(param_id, svc_vals, "Unknown"));
- proto_tree_add_text(flowspec_tree, tvb, offset2+1, 1,
- "Parameter %u flags: %x",
- param_id,
- tvb_get_guint8(tvb, offset2+1));
- proto_tree_add_text(flowspec_tree, tvb, offset2+2, 2,
- "Parameter %u data length: %u words, "
- "not including header",
- param_id,
- tvb_get_ntohs(tvb, offset2+2));
- proto_tree_add_text(flowspec_tree, tvb, offset2+4, 4,
- "Maximum packet size [M]: %u",
- tvb_get_ntohl(tvb, offset2+4));
- proto_item_append_text(ti, "Null Service. M=%u",
- tvb_get_ntohl(tvb, offset2+4));
- proto_item_append_text(ti2, "Max pkt size=%u",
- tvb_get_ntohl(tvb, offset2+4));
- break;
-
- default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, param_len*4,
- "Unknown parameter %d, %d words",
- param_id, param_len);
- break;
- }
- param_len_processed += param_len;
- offset2 += param_len * 4;
- }
-
- /* offset2 += length*4; */
- mylen -= length*4;
- }
- break;
+ if (mylen < 4) {
+ item = proto_tree_add_text(rsvp_object_tree, tvb, 0, 0,
+ "Object length %u < 8", obj_length);
+ PROTO_ITEM_SET_GENERATED(item);
+ return;
+ }
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
+ "Message format version: %u",
+ tvb_get_guint8(tvb, offset2)>>4);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 2,
+ "Data length: %u words, not including header",
+ tvb_get_ntohs(tvb, offset2+2));
+
+ proto_item_set_text(ti, "FLOWSPEC: ");
+
+ mylen -= 4;
+ offset2+= 4;
+ while (mylen > 0) {
+ guint8 service_num;
+ guint length;
+ guint8 param_id;
+ guint param_len;
+ guint param_len_processed;
+
+ if (mylen < 4) {
+ item = proto_tree_add_text(rsvp_object_tree, tvb, 0, 0,
+ "Object length %u not large enough",
+ obj_length);
+ PROTO_ITEM_SET_GENERATED(item);
+ return;
+ }
+ service_num = tvb_get_guint8(tvb, offset2);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
+ "Service header: %u - %s",
+ service_num,
+ val_to_str_ext_const(service_num, &intsrv_services_str_ext, "Unknown"));
+ length = tvb_get_ntohs(tvb, offset2+2);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 2,
+ "Length of service %u data: %u words, "
+ "not including header",
+ service_num,
+ length);
+
+ mylen -= 4;
+ offset2 += 4;
+
+ proto_item_append_text(ti, "%s: ",
+ val_to_str_ext(service_num, &intsrv_services_str_ext,
+ "Unknown (%d)"));
+
+ /* Process all known service headers as a set of parameters */
+ param_len_processed = 0;
+ while (param_len_processed < length) {
+ param_id = tvb_get_guint8(tvb, offset2);
+ param_len = tvb_get_ntohs(tvb, offset2+2) + 1;
+ if (param_len < 1)
+ THROW(ReportedBoundsError);
+ switch(param_id) {
+ case 127:
+ /* Token Bucket */
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset2, param_len*4,
+ "Token Bucket: ");
+ flowspec_tree = proto_item_add_subtree(ti2, TREE(TT_FLOWSPEC_SUBTREE));
+
+ proto_tree_add_text(flowspec_tree, tvb, offset2, 1,
+ "Parameter %u - %s",
+ param_id,
+ val_to_str_ext_const(param_id, &svc_vals_ext, "Unknown"));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+1, 1,
+ "Parameter %u flags: 0x%02x",
+ param_id,
+ tvb_get_guint8(tvb, offset2+1));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+2, 2,
+ "Parameter %u data length: %u words, "
+ "not including header",
+ param_id,
+ tvb_get_ntohs(tvb, offset2+2));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+4, 4,
+ "Token bucket rate: %.10g",
+ tvb_get_ntohieee_float(tvb, offset2+4));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4,
+ "Token bucket size: %.10g",
+ tvb_get_ntohieee_float(tvb, offset2+8));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+12, 4,
+ "Peak data rate: %.10g",
+ tvb_get_ntohieee_float(tvb, offset2+12));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+16, 4,
+ "Minimum policed unit [m]: %u",
+ tvb_get_ntohl(tvb, offset2+16));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+20, 4,
+ "Maximum packet size [M]: %u",
+ tvb_get_ntohl(tvb, offset2+20));
+ proto_item_append_text(ti, "Token Bucket, %.10g bytes/sec. ",
+ tvb_get_ntohieee_float(tvb, offset2+4));
+ proto_item_append_text(ti2, "Rate=%.10g Burst=%.10g Peak=%.10g m=%u M=%u",
+ tvb_get_ntohieee_float(tvb, offset2+4),
+ tvb_get_ntohieee_float(tvb, offset2+8),
+ tvb_get_ntohieee_float(tvb, offset2+12),
+ tvb_get_ntohl(tvb, offset2+16),
+ tvb_get_ntohl(tvb, offset2+20));
+ break;
+
+ case 130:
+ /* Guaranteed-rate RSpec */
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset2, param_len*4,
+ "Guaranteed-Rate RSpec: ");
+ flowspec_tree = proto_item_add_subtree(ti2, TREE(TT_FLOWSPEC_SUBTREE));
+ proto_tree_add_text(flowspec_tree, tvb, offset2, 1,
+ "Parameter %u - %s",
+ param_id,
+ val_to_str_ext_const(param_id, &svc_vals_ext, "Unknown"));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+1, 1,
+ "Parameter %u flags: %x",
+ param_id,
+ tvb_get_guint8(tvb, offset2+1));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+2, 2,
+ "Parameter %u data length: %u words, "
+ "not including header",
+ param_id,
+ tvb_get_ntohs(tvb, offset2+2));
+
+ proto_tree_add_text(flowspec_tree, tvb, offset2+4, 4,
+ "Rate: %.10g",
+ tvb_get_ntohieee_float(tvb, offset2+4));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4,
+ "Slack term: %u",
+ tvb_get_ntohl(tvb, offset2+8));
+ proto_item_append_text(ti, "RSpec, %.10g bytes/sec. ",
+ tvb_get_ntohieee_float(tvb, offset2+4));
+ proto_item_append_text(ti2, "R=%.10g, s=%u",
+ tvb_get_ntohieee_float(tvb, offset2+4),
+ tvb_get_ntohl(tvb, offset2+8));
+ break;
+
+ case 128:
+ /* Null Service (RFC2997) */
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset2, param_len*4,
+ "Null Service Flowspec: ");
+ flowspec_tree = proto_item_add_subtree(ti2, TREE(TT_FLOWSPEC_SUBTREE));
+
+ proto_tree_add_text(flowspec_tree, tvb, offset2, 1,
+ "Parameter %u - %s",
+ param_id,
+ val_to_str_ext_const(param_id, &svc_vals_ext, "Unknown"));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+1, 1,
+ "Parameter %u flags: %x",
+ param_id,
+ tvb_get_guint8(tvb, offset2+1));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+2, 2,
+ "Parameter %u data length: %u words, "
+ "not including header",
+ param_id,
+ tvb_get_ntohs(tvb, offset2+2));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+4, 4,
+ "Maximum packet size [M]: %u",
+ tvb_get_ntohl(tvb, offset2+4));
+ proto_item_append_text(ti, "Null Service. M=%u",
+ tvb_get_ntohl(tvb, offset2+4));
+ proto_item_append_text(ti2, "Max pkt size=%u",
+ tvb_get_ntohl(tvb, offset2+4));
+ break;
+
+ default:
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, param_len*4,
+ "Unknown parameter %d, %d words",
+ param_id, param_len);
+ break;
+ }
+ param_len_processed += param_len;
+ offset2 += param_len * 4;
+ }
+
+ /* offset2 += length*4; */
+ mylen -= length*4;
+ }
+ break;
case 4:
- proto_item_set_text(ti, "FLOWSPEC: SONET/SDH, ");
-
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 4 - SONET/SDH");
- signal_type = tvb_get_guint8(tvb, offset2);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
- "Signal Type: %d - %s", signal_type,
- val_to_str(signal_type,
- gmpls_sonet_signal_type_str, "Unknown"));
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb, offset2+1, 1,
- "Requested Concatenation (RCC): %d", tvb_get_guint8(tvb, offset2+1));
- flowspec_tree = proto_item_add_subtree(ti2, TREE(TT_FLOWSPEC_SUBTREE));
- proto_tree_add_text(flowspec_tree, tvb, offset2+1, 1, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+1), 0x01, 8,
- "Standard contiguous concatenation",
- "No standard contiguous concatenation"));
- proto_tree_add_text(flowspec_tree, tvb, offset2+1, 1, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+1), 0x02, 8,
- "Arbitrary contiguous concatenation",
- "No arbitrary contiguous concatenation"));
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 2,
- "Number of Contiguous Components (NCC): %d", tvb_get_ntohs(tvb, offset2+2));
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+4, 2,
- "Number of Virtual Components (NVC): %d", tvb_get_ntohs(tvb, offset2+4));
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+6, 2,
- "Multiplier (MT): %d", tvb_get_ntohs(tvb, offset2+6));
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb, offset2+8, 4,
- "Transparency (T): 0x%0x", tvb_get_ntohl(tvb, offset2+8));
- flowspec_tree = proto_item_add_subtree(ti2, TREE(TT_FLOWSPEC_SUBTREE));
- proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_ntohl(tvb, offset2+8), 0x0001, 32,
- "Section/Regenerator Section layer transparency",
- "No Section/Regenerator Section layer transparency"));
- proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0002, 32,
- "Line/Multiplex Section layer transparency",
- "No Line/Multiplex Section layer transparency"));
- proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0004, 32,
- "J0 transparency",
- "No J0 transparency"));
- proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0008, 32,
- "SOH/RSOH DCC transparency",
- "No SOH/RSOH DCC transparency"));
- proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0010, 32,
- "LOH/MSOH DCC transparency",
- "No LOH/MSOH DCC transparency"));
- proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0020, 32,
- "LOH/MSOH Extended DCC transparency",
- "No LOH/MSOH Extended DCC transparency"));
- proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0040, 32,
- "K1/K2 transparency",
- "No K1/K2 transparency"));
- proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0080, 32,
- "E1 transparency",
- "No E1 transparency"));
- proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0100, 32,
- "F1 transparency",
- "No F1 transparency"));
- proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0200, 32,
- "E2 transparency",
- "No E2 transparency"));
- proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0400, 32,
- "B1 transparency",
- "No B1 transparency"));
- proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0800, 32,
- "B2 transparency",
- "No B2 transparency"));
- proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x1000, 32,
- "M0 transparency",
- "No M0 transparency"));
- proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
- decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x2000, 32,
- "M1 transparency",
- "No M1 transparency"));
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+12, 4,
- "Profile (P): %d", tvb_get_ntohl(tvb, offset2+12));
-
- proto_item_append_text(ti, "Signal [%s], RCC %d, NCC %d, NVC %d, MT %d, Transparency %d, Profile %d",
- val_to_str(signal_type, gmpls_sonet_signal_type_str, "Unknown"),
- tvb_get_guint8(tvb, offset2+1), tvb_get_ntohs(tvb, offset2+2),
- tvb_get_ntohs(tvb, offset2+4), tvb_get_ntohs(tvb, offset2+6),
- tvb_get_ntohl(tvb, offset2+8), tvb_get_ntohl(tvb, offset2+12));
- break;
+ proto_item_set_text(ti, "FLOWSPEC: SONET/SDH, ");
+
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 4 - SONET/SDH");
+ signal_type = tvb_get_guint8(tvb, offset2);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
+ "Signal Type: %d - %s", signal_type,
+ val_to_str_ext_const(signal_type,
+ &gmpls_sonet_signal_type_str_ext, "Unknown"));
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb, offset2+1, 1,
+ "Requested Concatenation (RCC): %d", tvb_get_guint8(tvb, offset2+1));
+ flowspec_tree = proto_item_add_subtree(ti2, TREE(TT_FLOWSPEC_SUBTREE));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+1, 1, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+1), 0x01, 8,
+ "Standard contiguous concatenation",
+ "No standard contiguous concatenation"));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+1, 1, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+1), 0x02, 8,
+ "Arbitrary contiguous concatenation",
+ "No arbitrary contiguous concatenation"));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 2,
+ "Number of Contiguous Components (NCC): %d", tvb_get_ntohs(tvb, offset2+2));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+4, 2,
+ "Number of Virtual Components (NVC): %d", tvb_get_ntohs(tvb, offset2+4));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+6, 2,
+ "Multiplier (MT): %d", tvb_get_ntohs(tvb, offset2+6));
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb, offset2+8, 4,
+ "Transparency (T): 0x%0x", tvb_get_ntohl(tvb, offset2+8));
+ flowspec_tree = proto_item_add_subtree(ti2, TREE(TT_FLOWSPEC_SUBTREE));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_ntohl(tvb, offset2+8), 0x0001, 32,
+ "Section/Regenerator Section layer transparency",
+ "No Section/Regenerator Section layer transparency"));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0002, 32,
+ "Line/Multiplex Section layer transparency",
+ "No Line/Multiplex Section layer transparency"));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0004, 32,
+ "J0 transparency",
+ "No J0 transparency"));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0008, 32,
+ "SOH/RSOH DCC transparency",
+ "No SOH/RSOH DCC transparency"));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0010, 32,
+ "LOH/MSOH DCC transparency",
+ "No LOH/MSOH DCC transparency"));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0020, 32,
+ "LOH/MSOH Extended DCC transparency",
+ "No LOH/MSOH Extended DCC transparency"));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0040, 32,
+ "K1/K2 transparency",
+ "No K1/K2 transparency"));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0080, 32,
+ "E1 transparency",
+ "No E1 transparency"));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0100, 32,
+ "F1 transparency",
+ "No F1 transparency"));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0200, 32,
+ "E2 transparency",
+ "No E2 transparency"));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0400, 32,
+ "B1 transparency",
+ "No B1 transparency"));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x0800, 32,
+ "B2 transparency",
+ "No B2 transparency"));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x1000, 32,
+ "M0 transparency",
+ "No M0 transparency"));
+ proto_tree_add_text(flowspec_tree, tvb, offset2+8, 4, "%s",
+ decode_boolean_bitfield(tvb_get_guint8(tvb, offset2+8), 0x2000, 32,
+ "M1 transparency",
+ "No M1 transparency"));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+12, 4,
+ "Profile (P): %d", tvb_get_ntohl(tvb, offset2+12));
+
+ proto_item_append_text(ti, "Signal [%s], RCC %d, NCC %d, NVC %d, MT %d, Transparency %d, Profile %d",
+ val_to_str_ext_const(signal_type, &gmpls_sonet_signal_type_str_ext, "Unknown"),
+ tvb_get_guint8(tvb, offset2+1), tvb_get_ntohs(tvb, offset2+2),
+ tvb_get_ntohs(tvb, offset2+4), tvb_get_ntohs(tvb, offset2+6),
+ tvb_get_ntohl(tvb, offset2+8), tvb_get_ntohl(tvb, offset2+12));
+ break;
case 5: /* FF: G.709 FLOWSPEC, RFC 4328 */
proto_item_set_text(ti, "FLOWSPEC: G.709, ");
@@ -3394,9 +3474,9 @@ dissect_rsvp_flowspec (proto_item *ti, proto_tree *rsvp_object_tree,
break;
case 6: /* Ethernet FLOWSPEC (RFC6003) */
- proto_item_set_text(ti, "FLOWSPEC: Ethernet, ");
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 6 - Ethernet");
+ proto_item_set_text(ti, "FLOWSPEC: Ethernet, ");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 6 - Ethernet");
switch_gran = tvb_get_ntohs(tvb, offset2);
if (switch_gran == 0)
proto_tree_add_text(rsvp_object_tree, tvb, offset2, 2,
@@ -3404,22 +3484,22 @@ dissect_rsvp_flowspec (proto_item *ti, proto_tree *rsvp_object_tree,
else if (switch_gran == 1)
proto_tree_add_text(rsvp_object_tree, tvb, offset2, 2,
"Switching granularity: 1 - Ethernet port");
- else if (switch_gran == 2)
+ else if (switch_gran == 2)
proto_tree_add_text(rsvp_object_tree, tvb, offset2, 2,
"Switching granularity: 2 - Ethernet frame");
else
proto_tree_add_text(rsvp_object_tree, tvb, offset2, 2,
"Switching granularity: %u - ???", switch_gran);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 2,
- "MTU: %u", tvb_get_ntohs(tvb, offset2+2));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 2,
+ "MTU: %u", tvb_get_ntohs(tvb, offset2+2));
- dissect_rsvp_eth_tspec_tlv(ti, rsvp_object_tree, tvb, offset+8, obj_length-8,
- TREE(TT_FLOWSPEC_SUBTREE));
+ dissect_rsvp_eth_tspec_tlv(ti, rsvp_object_tree, tvb, offset+8, obj_length-8,
+ TREE(TT_FLOWSPEC_SUBTREE));
break;
default:
- break;
+ break;
}
}
@@ -3427,105 +3507,106 @@ dissect_rsvp_flowspec (proto_item *ti, proto_tree *rsvp_object_tree,
* ADSPEC
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_adspec (proto_item *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_adspec(proto_item *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
- int offset2 = offset + 4;
- int mylen, i;
+ int offset2 = offset + 4;
+ int mylen, i;
proto_tree *adspec_tree;
proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: %u", type);
+ "C-type: %u", type);
mylen = obj_length - 4;
proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
- "Message format version: %u",
- tvb_get_guint8(tvb, offset2)>>4);
+ "Message format version: %u",
+ tvb_get_guint8(tvb, offset2)>>4);
proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 2,
- "Data length: %u words, not including header",
- tvb_get_ntohs(tvb, offset2+2));
+ "Data length: %u words, not including header",
+ tvb_get_ntohs(tvb, offset2+2));
mylen -= 4;
offset2 += 4;
while (mylen > 0) {
- guint8 service_num;
- guint8 break_bit;
- guint length;
- const char *str;
-
- service_num = tvb_get_guint8(tvb, offset2);
- str = val_to_str(service_num, intsrv_services_str, "Unknown");
- break_bit = tvb_get_guint8(tvb, offset2+1);
- length = tvb_get_ntohs(tvb, offset2+2);
- ti = proto_tree_add_text(rsvp_object_tree, tvb, offset2,
- (length+1)*4, "%s",
- str);
- adspec_tree = proto_item_add_subtree(ti,
- TREE(TT_ADSPEC_SUBTREE));
- proto_tree_add_text(adspec_tree, tvb, offset2, 1,
- "Service header %u - %s",
- service_num, str);
- proto_tree_add_text(adspec_tree, tvb, offset2+1, 1,
- (break_bit&0x80)?
- "Break bit set":"Break bit not set");
- proto_tree_add_text(adspec_tree, tvb, offset2+2, 2,
- "Data length: %u words, not including header",
- length);
- mylen -= 4;
- offset2 += 4;
- i = length*4;
- while (i > 0) {
- guint8 id;
- guint phdr_length;
-
- id = tvb_get_guint8(tvb, offset2);
- phdr_length = tvb_get_ntohs(tvb, offset2+2);
- str = match_strval(id, adspec_params);
- if (str) {
- switch(id) {
- case 4:
- case 8:
- case 10:
- case 133:
- case 134:
- case 135:
- case 136:
- /* 32-bit unsigned integer */
- proto_tree_add_text(adspec_tree, tvb, offset2,
- (phdr_length+1)<<2,
- "%s - %u (type %u, length %u)",
- str,
- tvb_get_ntohl(tvb, offset2+4),
- id, phdr_length);
- break;
-
- case 6:
- /* IEEE float */
- proto_tree_add_text(adspec_tree, tvb, offset2,
- (phdr_length+1)<<2,
- "%s - %.10g (type %u, length %u)",
- str,
- tvb_get_ntohieee_float(tvb, offset2+4),
- id, phdr_length);
- break;
- default:
- proto_tree_add_text(adspec_tree, tvb, offset2,
- (phdr_length+1)<<2,
- "%s (type %u, length %u)",
- str,
- id, phdr_length);
- }
- } else {
- proto_tree_add_text(adspec_tree, tvb, offset2,
- (phdr_length+1)<<2,
- "Unknown (type %u, length %u)",
- id, phdr_length);
- }
- offset2 += (phdr_length+1)<<2;
- i -= (phdr_length+1)<<2;
- mylen -= (phdr_length+1)<<2;
- }
+ guint8 service_num;
+ guint8 break_bit;
+ guint length;
+ const char *str;
+
+ service_num = tvb_get_guint8(tvb, offset2);
+ str = val_to_str_ext_const(service_num, &intsrv_services_str_ext, "Unknown");
+ break_bit = tvb_get_guint8(tvb, offset2+1);
+ length = tvb_get_ntohs(tvb, offset2+2);
+ ti = proto_tree_add_text(rsvp_object_tree, tvb, offset2,
+ (length+1)*4, "%s",
+ str);
+ adspec_tree = proto_item_add_subtree(ti,
+ TREE(TT_ADSPEC_SUBTREE));
+ proto_tree_add_text(adspec_tree, tvb, offset2, 1,
+ "Service header %u - %s",
+ service_num, str);
+ proto_tree_add_text(adspec_tree, tvb, offset2+1, 1,
+ (break_bit&0x80)?
+ "Break bit set":"Break bit not set");
+ proto_tree_add_text(adspec_tree, tvb, offset2+2, 2,
+ "Data length: %u words, not including header",
+ length);
+ mylen -= 4;
+ offset2 += 4;
+ i = length*4;
+ while (i > 0) {
+ guint8 id;
+ guint phdr_length;
+
+ id = tvb_get_guint8(tvb, offset2);
+ phdr_length = tvb_get_ntohs(tvb, offset2+2);
+ str = match_strval_ext(id, &adspec_params_ext);
+ if (str) {
+ switch(id) {
+ case 4:
+ case 8:
+ case 10:
+ case 133:
+ case 134:
+ case 135:
+ case 136:
+ /* 32-bit unsigned integer */
+ proto_tree_add_text(adspec_tree, tvb, offset2,
+ (phdr_length+1)<<2,
+ "%s - %u (type %u, length %u)",
+ str,
+ tvb_get_ntohl(tvb, offset2+4),
+ id, phdr_length);
+ break;
+
+ case 6:
+ /* IEEE float */
+ proto_tree_add_text(adspec_tree, tvb, offset2,
+ (phdr_length+1)<<2,
+ "%s - %.10g (type %u, length %u)",
+ str,
+ tvb_get_ntohieee_float(tvb, offset2+4),
+ id, phdr_length);
+ break;
+ default:
+ proto_tree_add_text(adspec_tree, tvb, offset2,
+ (phdr_length+1)<<2,
+ "%s (type %u, length %u)",
+ str,
+ id, phdr_length);
+ break;
+ }
+ } else {
+ proto_tree_add_text(adspec_tree, tvb, offset2,
+ (phdr_length+1)<<2,
+ "Unknown (type %u, length %u)",
+ id, phdr_length);
+ }
+ offset2 += (phdr_length+1)<<2;
+ i -= (phdr_length+1)<<2;
+ mylen -= (phdr_length+1)<<2;
+ }
}
}
@@ -3533,59 +3614,59 @@ dissect_rsvp_adspec (proto_item *ti, proto_tree *rsvp_object_tree,
* INTEGRITY
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_integrity (proto_item *ti _U_, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_integrity(proto_item *ti _U_, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
- int offset2 = offset + 4;
+ int offset2 = offset + 4;
proto_tree *ti2, *rsvp_integ_flags_tree;
- int flags;
+ int flags;
proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: %u", type);
+ "C-type: %u", type);
flags = tvb_get_guint8(tvb, offset2);
ti2 = proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
- "Flags: 0x%02x", flags);
+ "Flags: 0x%02x", flags);
rsvp_integ_flags_tree = proto_item_add_subtree(ti2, TREE(TT_INTEGRITY_FLAGS));
proto_tree_add_text(rsvp_integ_flags_tree, tvb, offset2, 1, "%s",
- decode_boolean_bitfield(flags, 0x01, 8, "Handshake capable", "Handshake not capable"));
+ decode_boolean_bitfield(flags, 0x01, 8, "Handshake capable", "Handshake not capable"));
proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 6,
- "Key Identifier: %s", tvb_bytes_to_str(tvb, offset2+2, 6));
+ "Key Identifier: %s", tvb_bytes_to_str(tvb, offset2+2, 6));
proto_tree_add_text(rsvp_object_tree, tvb, offset2+8, 8,
- "Sequence Number: %" G_GINT64_MODIFIER "u", tvb_get_ntoh64(tvb, offset2+8));
+ "Sequence Number: %" G_GINT64_MODIFIER "u", tvb_get_ntoh64(tvb, offset2+8));
proto_tree_add_text(rsvp_object_tree, tvb, offset2+16, obj_length - 20,
- "Hash: %s", tvb_bytes_to_str(tvb, offset2+16, obj_length - 20));
+ "Hash: %s", tvb_bytes_to_str(tvb, offset2+16, obj_length - 20));
}
/*------------------------------------------------------------------------------
* POLICY
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_policy (proto_item *ti _U_, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_policy(proto_item *ti _U_, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
int offset2 = offset + 4;
proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: %u", type);
+ "C-type: %u", type);
proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
+ "Data (%d bytes)", obj_length - 4);
}
/*------------------------------------------------------------------------------
* LABEL_REQUEST
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_label_request (proto_item *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_label_request(proto_item *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
int offset2 = offset + 4;
- const value_string lab_req_type_str[] = {
+ static const value_string lab_req_type_str[] = {
{ 1, ""},
{ 2, "(Label Request with ATM label Range)"},
{ 3, "(Label Request with Frame-Relay label Range)"},
@@ -3593,125 +3674,128 @@ dissect_rsvp_label_request (proto_item *ti, proto_tree *rsvp_object_tree,
{ 5, "(Generalized Channel_set Label Request)"},
{ 0, NULL }
};
+ static value_string_ext lab_req_type_str_ext = VALUE_STRING_EXT_INIT(lab_req_type_str);
proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: %d %s", type,
- val_to_str(type, lab_req_type_str, "Unknown"));
+ "C-type: %d %s", type,
+ val_to_str_ext_const(type, &lab_req_type_str_ext, "Unknown"));
switch(type) {
case 1: {
- unsigned short l3pid = tvb_get_ntohs(tvb, offset2+2);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 2,
- "L3PID: %s (0x%04x)",
- val_to_str(l3pid, etype_vals, "Unknown"),
- l3pid);
- proto_item_set_text(ti, "LABEL REQUEST: Basic: L3PID: %s (0x%04x)",
- val_to_str(l3pid, etype_vals, "Unknown"),
- l3pid);
- break;
+ unsigned short l3pid = tvb_get_ntohs(tvb, offset2+2);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 2,
+ "L3PID: %s (0x%04x)",
+ val_to_str_const(l3pid, etype_vals, "Unknown"),
+ l3pid);
+ proto_item_set_text(ti, "LABEL REQUEST: Basic: L3PID: %s (0x%04x)",
+ val_to_str_const(l3pid, etype_vals, "Unknown"),
+ l3pid);
+ break;
}
case 2: {
- unsigned short l3pid = tvb_get_ntohs(tvb, offset2+2);
- unsigned short min_vpi, min_vci, max_vpi, max_vci;
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 2,
- "L3PID: %s (0x%04x)",
- val_to_str(l3pid, etype_vals, "Unknown"),
- l3pid);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+4, 1,
- "M: %s Merge in Data Plane",
- (tvb_get_guint8(tvb, offset2+4) & 0x80) ?
- "1: Can" : "0: Cannot");
- min_vpi = tvb_get_ntohs(tvb, offset2+4) & 0x7f;
- min_vci = tvb_get_ntohs(tvb, offset2+6);
- max_vpi = tvb_get_ntohs(tvb, offset2+8) & 0x7f;
- max_vci = tvb_get_ntohs(tvb, offset2+10);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+4, 2,
- "Min VPI: %d", min_vpi);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+6, 2,
- "Min VCI: %d", min_vci);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+8, 2,
- "Max VPI: %d", max_vpi);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+10, 2,
- "Max VCI: %d", max_vci);
- proto_item_set_text(ti, "LABEL REQUEST: ATM: L3PID: %s (0x%04x). VPI/VCI: Min: %d/%d, Max: %d/%d. %s Merge. ",
- val_to_str(l3pid, etype_vals, "Unknown"), l3pid,
- min_vpi, min_vci, max_vpi, max_vci,
- (tvb_get_guint8(tvb, offset2+4) & 0x80) ? "Can" : "Cannot");
- break;
+ unsigned short l3pid = tvb_get_ntohs(tvb, offset2+2);
+ unsigned short min_vpi, min_vci, max_vpi, max_vci;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 2,
+ "L3PID: %s (0x%04x)",
+ val_to_str_const(l3pid, etype_vals, "Unknown"),
+ l3pid);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+4, 1,
+ "M: %s Merge in Data Plane",
+ (tvb_get_guint8(tvb, offset2+4) & 0x80) ?
+ "1: Can" : "0: Cannot");
+ min_vpi = tvb_get_ntohs(tvb, offset2+4) & 0x7f;
+ min_vci = tvb_get_ntohs(tvb, offset2+6);
+ max_vpi = tvb_get_ntohs(tvb, offset2+8) & 0x7f;
+ max_vci = tvb_get_ntohs(tvb, offset2+10);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+4, 2,
+ "Min VPI: %d", min_vpi);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+6, 2,
+ "Min VCI: %d", min_vci);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+8, 2,
+ "Max VPI: %d", max_vpi);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+10, 2,
+ "Max VCI: %d", max_vci);
+ proto_item_set_text(ti, "LABEL REQUEST: ATM: L3PID: %s (0x%04x). VPI/VCI: Min: %d/%d, Max: %d/%d. %s Merge. ",
+ val_to_str_const(l3pid, etype_vals, "Unknown"), l3pid,
+ min_vpi, min_vci, max_vpi, max_vci,
+ (tvb_get_guint8(tvb, offset2+4) & 0x80) ? "Can" : "Cannot");
+ break;
}
case 3: {
- guint16 l3pid = tvb_get_ntohs(tvb, offset2+2);
- guint32 min_dlci, max_dlci, dlci_len, dlci_len_code;
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 2,
- "L3PID: %s (0x%04x)",
- val_to_str(l3pid, etype_vals, "Unknown"),
- l3pid);
- dlci_len_code = (tvb_get_ntohs(tvb, offset2+4) & 0x0180) >> 7;
- min_dlci = tvb_get_ntohl(tvb, offset2+4) & 0x7fffff;
- max_dlci = tvb_get_ntohl(tvb, offset2+8) & 0x7fffff;
- switch(dlci_len_code) {
- case 0:
- /* 10-bit DLCIs */
- dlci_len = 10;
- min_dlci &= 0x3ff;
- max_dlci &= 0x3ff;
- case 2:
- dlci_len = 23;
- default:
- dlci_len = 0;
- min_dlci = 0;
- max_dlci = 0;
- }
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+4, 2,
- "DLCI Length: %s (%d)",
- dlci_len==10 ? "10 bits" :
- dlci_len==23 ? "23 bits" :
- "INVALID", dlci_len_code);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+5, 3,
- "Min DLCI: %d", min_dlci);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+8, 2,
- "Max DLCI: %d", max_dlci);
- proto_item_set_text(ti, "LABEL REQUEST: Frame: L3PID: %s (0x%04x). DLCI Len: %s. Min DLCI: %d. Max DLCI: %d",
- val_to_str(l3pid, etype_vals, "Unknown"), l3pid,
- dlci_len==10 ? "10 bits" :
- dlci_len==23 ? "23 bits" :
- "INVALID", min_dlci, max_dlci);
- break;
+ guint16 l3pid = tvb_get_ntohs(tvb, offset2+2);
+ guint32 min_dlci, max_dlci, dlci_len, dlci_len_code;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 2,
+ "L3PID: %s (0x%04x)",
+ val_to_str_const(l3pid, etype_vals, "Unknown"),
+ l3pid);
+ dlci_len_code = (tvb_get_ntohs(tvb, offset2+4) & 0x0180) >> 7;
+ min_dlci = tvb_get_ntohl(tvb, offset2+4) & 0x7fffff;
+ max_dlci = tvb_get_ntohl(tvb, offset2+8) & 0x7fffff;
+ switch(dlci_len_code) {
+ case 0:
+ /* 10-bit DLCIs */
+ dlci_len = 10;
+ min_dlci &= 0x3ff;
+ max_dlci &= 0x3ff;
+ break;
+ case 2:
+ dlci_len = 23;
+ break;
+ default:
+ dlci_len = 0;
+ min_dlci = 0;
+ max_dlci = 0;
+ break;
+ }
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+4, 2,
+ "DLCI Length: %s (%d)",
+ (dlci_len==10) ? "10 bits" :
+ (dlci_len==23) ? "23 bits" :
+ "INVALID", dlci_len_code);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+5, 3,
+ "Min DLCI: %d", min_dlci);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+8, 2,
+ "Max DLCI: %d", max_dlci);
+ proto_item_set_text(ti, "LABEL REQUEST: Frame: L3PID: %s (0x%04x). DLCI Len: %s. Min DLCI: %d. Max DLCI: %d",
+ val_to_str_const(l3pid, etype_vals, "Unknown"), l3pid,
+ (dlci_len==10) ? "10 bits" :
+ (dlci_len==23) ? "23 bits" :
+ "INVALID", min_dlci, max_dlci);
+ break;
}
case 4:
case 5: {
- unsigned short l3pid = tvb_get_ntohs(tvb, offset2+2);
- unsigned char lsp_enc = tvb_get_guint8(tvb,offset2);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
- "LSP Encoding Type: %s",
- rval_to_str(lsp_enc, gmpls_lsp_enc_rvals, "Unknown (%d)"));
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+1, 1,
- "Switching Type: %s",
- rval_to_str(tvb_get_guint8(tvb,offset2+1),
- gmpls_switching_type_rvals, "Unknown (%d)"));
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 2,
- "G-PID: %s (0x%0x)",
- rval_to_str(l3pid, gmpls_gpid_rvals,
- val_to_str(l3pid, etype_vals,
- "Unknown G-PID(0x%04x)")),
- l3pid);
- proto_item_set_text(ti, "LABEL REQUEST: Generalized: LSP Encoding=%s, "
- "Switching Type=%s, G-PID=%s ",
- rval_to_str(lsp_enc, gmpls_lsp_enc_rvals, "Unknown (%d)"),
- rval_to_str(tvb_get_guint8(tvb,offset2+1),
- gmpls_switching_type_rvals, "Unknown (%d)"),
- rval_to_str(l3pid, gmpls_gpid_rvals,
- val_to_str(l3pid, etype_vals,
- "Unknown (0x%04x)")));
- break;
+ unsigned short l3pid = tvb_get_ntohs(tvb, offset2+2);
+ unsigned char lsp_enc = tvb_get_guint8(tvb,offset2);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
+ "LSP Encoding Type: %s",
+ rval_to_str(lsp_enc, gmpls_lsp_enc_rvals, "Unknown (%d)"));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+1, 1,
+ "Switching Type: %s",
+ rval_to_str(tvb_get_guint8(tvb,offset2+1),
+ gmpls_switching_type_rvals, "Unknown (%d)"));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 2,
+ "G-PID: %s (0x%0x)",
+ rval_to_str(l3pid, gmpls_gpid_rvals,
+ val_to_str(l3pid, etype_vals,
+ "Unknown G-PID(0x%04x)")),
+ l3pid);
+ proto_item_set_text(ti, "LABEL REQUEST: Generalized: LSP Encoding=%s, "
+ "Switching Type=%s, G-PID=%s ",
+ rval_to_str(lsp_enc, gmpls_lsp_enc_rvals, "Unknown (%d)"),
+ rval_to_str(tvb_get_guint8(tvb,offset2+1),
+ gmpls_switching_type_rvals, "Unknown (%d)"),
+ rval_to_str(l3pid, gmpls_gpid_rvals,
+ val_to_str(l3pid, etype_vals,
+ "Unknown (0x%04x)")));
+ break;
}
- default: {
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
- break;
- }
+ default:
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
+ "Data (%d bytes)", obj_length - 4);
+ break;
} /* switch(type) */
}
@@ -3733,9 +3817,9 @@ dissect_glabel_lambda(proto_tree *ti _U_, proto_tree *rsvp_object_tree,
tvbuff_t *tvb,
int offset)
{
- float freq = 0.0;
+ float freq = 0.0;
guint32 wavelength = 0;
- float cs_thz = 0.0;
+ float cs_thz = 0.0;
guint8 grid = ((tvb_get_guint8(tvb, offset) & 0xE0) >> 5);
guint8 cs = ((tvb_get_guint8(tvb, offset) & 0x1E) >> 1);
@@ -3882,8 +3966,8 @@ dissect_glabel_sdh(proto_tree *ti _U_, proto_tree *rsvp_object_tree,
*/
static void
dissect_glabel_g709(proto_tree *ti _U_, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset)
+ tvbuff_t *tvb,
+ int offset)
{
guint8 t2 = ((tvb_get_guint8(tvb, offset + 3) & 0x0E) >> 1);
guint8 t1 = ((tvb_get_guint8(tvb, offset + 3) & 0x01) >> 0);
@@ -3905,35 +3989,35 @@ dissect_glabel_g709(proto_tree *ti _U_, proto_tree *rsvp_object_tree,
}
static void
-dissect_rsvp_label (proto_tree *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class, int type)
+dissect_rsvp_label(proto_tree *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class, int type)
{
- int offset2 = offset + 4;
- int mylen, i;
+ int offset2 = offset + 4;
+ int mylen, i;
const char *name;
name = (rsvp_class==RSVP_CLASS_SUGGESTED_LABEL ? "SUGGESTED LABEL":
- (rsvp_class==RSVP_CLASS_UPSTREAM_LABEL ? "UPSTREAM LABEL":
- (rsvp_class==RSVP_CLASS_RECOVERY_LABEL ? "RECOVERY LABEL":
- "LABEL")));
+ (rsvp_class==RSVP_CLASS_UPSTREAM_LABEL ? "UPSTREAM LABEL":
+ (rsvp_class==RSVP_CLASS_RECOVERY_LABEL ? "RECOVERY LABEL":
+ "LABEL")));
mylen = obj_length - 4;
switch(type) {
case 1:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 1 (Packet Label)");
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 4,
- "Label: %u",
- tvb_get_ntohl(tvb, offset2));
- proto_item_set_text(ti, "%s: %u", name,
- tvb_get_ntohl(tvb, offset2));
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 1 (Packet Label)");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 4,
+ "Label: %u",
+ tvb_get_ntohl(tvb, offset2));
+ proto_item_set_text(ti, "%s: %u", name,
+ tvb_get_ntohl(tvb, offset2));
+ break;
case 2:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 2 (Generalized Label)");
- if (rsvp_generalized_label_option == 1) {
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 2 (Generalized Label)");
+ if (rsvp_generalized_label_option == 1) {
/* FF: no generalized label interpretation */
proto_item_set_text(ti, "%s: Generalized: ", name);
for (i = 0; i < mylen; i += 4) {
@@ -3949,43 +4033,43 @@ dissect_rsvp_label (proto_tree *ti, proto_tree *rsvp_object_tree,
proto_item_append_text(ti, "...");
}
}
- } else if (rsvp_generalized_label_option == 2) {
+ } else if (rsvp_generalized_label_option == 2) {
dissect_glabel_sdh(ti, rsvp_object_tree, tvb, offset2);
- } else if (rsvp_generalized_label_option == 4) {
+ } else if (rsvp_generalized_label_option == 4) {
dissect_glabel_g709(ti, rsvp_object_tree, tvb, offset2);
- } else if (rsvp_generalized_label_option == 3) {
+ } else if (rsvp_generalized_label_option == 3) {
dissect_glabel_lambda(ti, rsvp_object_tree, tvb, offset2);
- }
- break;
+ }
+ break;
case 4:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 4 (Generalized Channel_set)");
- proto_item_append_text(ti, ": Generalized Channel_set");
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, mylen,
- "Data (%d bytes)", mylen);
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 4 (Generalized Channel_set)");
+ proto_item_append_text(ti, ": Generalized Channel_set");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, mylen,
+ "Data (%d bytes)", mylen);
+ break;
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)", type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, mylen,
- "Data (%d bytes)", mylen);
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)", type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, mylen,
+ "Data (%d bytes)", mylen);
+ break;
}
}
/*------------------------------------------------------------------------------
* LABEL_SET
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_label_set (proto_item *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_label_set(proto_item *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
- int offset2 = offset + 8;
+ int offset2 = offset + 8;
guint8 label_type;
- int len, i;
+ int len, i;
static const value_string action_type_vals[] = {
{ 0, "Inclusive list"},
@@ -3994,34 +4078,35 @@ dissect_rsvp_label_set (proto_item *ti, proto_tree *rsvp_object_tree,
{ 3, "Exclusive range"},
{ 0, NULL}
};
+ static value_string_ext action_type_vals_ext = VALUE_STRING_EXT_INIT(action_type_vals);
len = obj_length - 8;
proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1, "C-type: %u", type);
proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 1, "Action: %s",
- val_to_str(tvb_get_guint8(tvb, offset+4),
- action_type_vals, "Unknown (%u)"));
+ val_to_str_ext(tvb_get_guint8(tvb, offset+4),
+ &action_type_vals_ext, "Unknown (%u)"));
proto_item_append_text(ti, ": %s",
- val_to_str(tvb_get_guint8(tvb, offset+4),
- action_type_vals, "Unknown (%u)"));
+ val_to_str_ext(tvb_get_guint8(tvb, offset+4),
+ &action_type_vals_ext, "Unknown (%u)"));
label_type = tvb_get_guint8 (tvb, offset+7);
proto_tree_add_text(rsvp_object_tree, tvb, offset+7, 1, "Label type: %s",
- label_type==1 ? "Packet Label" : "Generalized Label");
+ (label_type == 1) ? "Packet Label" : "Generalized Label");
proto_item_append_text(ti, ", %s",
- label_type==1 ? "Packet Label: " : "Generalized Label: ");
+ (label_type == 1) ? "Packet Label: " : "Generalized Label: ");
for (i = 0; i < len/4; i++) {
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+i*4, 4,
- "Subchannel %u: %u (0x%x)", i+1,
- tvb_get_ntohl(tvb, offset2+i*4),
- tvb_get_ntohl(tvb, offset2+i*4));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+i*4, 4,
+ "Subchannel %u: %u (0x%x)", i+1,
+ tvb_get_ntohl(tvb, offset2+i*4),
+ tvb_get_ntohl(tvb, offset2+i*4));
- if (i<5) {
+ if (i<5) {
if (i!=0)
proto_item_append_text(ti, ", ");
proto_item_append_text(ti, "%u",
tvb_get_ntohl(tvb, offset2+i*4));
- }
+ }
}
}
@@ -4029,91 +4114,91 @@ dissect_rsvp_label_set (proto_item *ti, proto_tree *rsvp_object_tree,
* SESSION ATTRIBUTE
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_session_attribute (proto_item *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_session_attribute(proto_item *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
- int offset2 = offset + 4;
- guint8 flags;
- guint8 name_len;
+ int offset2 = offset + 4;
+ guint8 flags;
+ guint8 name_len;
proto_tree *ti2, *rsvp_sa_flags_tree;
switch(type) {
case 1:
case 7:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: %u - IPv4 LSP (%sResource Affinities)",
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: %u - IPv4 LSP (%sResource Affinities)",
type, (type == 1) ? "" : "No ");
if (type == 1) {
proto_tree_add_text(rsvp_object_tree, tvb, offset2, 4,
- "Exclude-Any: 0x%0x", tvb_get_ntohl(tvb, offset2));
+ "Exclude-Any: 0x%0x", tvb_get_ntohl(tvb, offset2));
proto_tree_add_text(rsvp_object_tree, tvb, offset2+4, 4,
- "Include-Any: 0x%0x", tvb_get_ntohl(tvb, offset2+4));
+ "Include-Any: 0x%0x", tvb_get_ntohl(tvb, offset2+4));
proto_tree_add_text(rsvp_object_tree, tvb, offset2+8, 4,
- "Include-All: 0x%0x", tvb_get_ntohl(tvb, offset2+8));
+ "Include-All: 0x%0x", tvb_get_ntohl(tvb, offset2+8));
offset2 = offset2+12;
}
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
- "Setup priority: %u",
- tvb_get_guint8(tvb, offset2));
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+1, 1,
- "Hold priority: %u",
- tvb_get_guint8(tvb, offset2+1));
- flags = tvb_get_guint8(tvb, offset2+2);
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 1,
- "Flags: 0x%02x", flags);
- rsvp_sa_flags_tree = proto_item_add_subtree(ti2,
- TREE(TT_SESSION_ATTRIBUTE_FLAGS));
- proto_tree_add_text(rsvp_sa_flags_tree, tvb, offset2+2, 1, "%s",
- decode_boolean_bitfield(flags, 0x01, 8,
- "Local protection desired",
- "Local protection not desired"));
- proto_tree_add_text(rsvp_sa_flags_tree, tvb, offset2+2, 1, "%s",
- decode_boolean_bitfield(flags, 0x02, 8,
- "Label recording desired",
- "Label recording not desired"));
- proto_tree_add_text(rsvp_sa_flags_tree, tvb, offset2+2, 1, "%s",
- decode_boolean_bitfield(flags, 0x04, 8,
- "SE style desired",
- "SE style not desired"));
- proto_tree_add_text(rsvp_sa_flags_tree, tvb, offset2+2, 1, "%s",
- decode_boolean_bitfield(flags, 0x08, 8,
- "Bandwidth protection desired",
- "Bandwidth protection not desired"));
- proto_tree_add_text(rsvp_sa_flags_tree, tvb, offset2+2, 1, "%s",
- decode_boolean_bitfield(flags, 0x10, 8,
- "Node protection desired",
- "Node protection not desired"));
-
- name_len = tvb_get_guint8(tvb, offset2+3);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+3, 1,
- "Name length: %u", name_len);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+4, name_len,
- "Name: %s",
- tvb_format_text(tvb, offset2+4, name_len));
-
- proto_item_set_text(ti, "SESSION ATTRIBUTE: SetupPrio %d, HoldPrio %d, %s%s%s%s%s [%s]",
- tvb_get_guint8(tvb, offset2),
- tvb_get_guint8(tvb, offset2+1),
- flags &0x01 ? "Local Protection, " : "",
- flags &0x02 ? "Label Recording, " : "",
- flags &0x04 ? "SE Style, " : "",
- flags &0x08 ? "Bandwidth Protection, " : "",
- flags &0x10 ? "Node Protection, " : "",
- name_len ? tvb_format_text(tvb, offset2+4, name_len) : "");
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
+ "Setup priority: %u",
+ tvb_get_guint8(tvb, offset2));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+1, 1,
+ "Hold priority: %u",
+ tvb_get_guint8(tvb, offset2+1));
+ flags = tvb_get_guint8(tvb, offset2+2);
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb, offset2+2, 1,
+ "Flags: 0x%02x", flags);
+ rsvp_sa_flags_tree = proto_item_add_subtree(ti2,
+ TREE(TT_SESSION_ATTRIBUTE_FLAGS));
+ proto_tree_add_text(rsvp_sa_flags_tree, tvb, offset2+2, 1, "%s",
+ decode_boolean_bitfield(flags, 0x01, 8,
+ "Local protection desired",
+ "Local protection not desired"));
+ proto_tree_add_text(rsvp_sa_flags_tree, tvb, offset2+2, 1, "%s",
+ decode_boolean_bitfield(flags, 0x02, 8,
+ "Label recording desired",
+ "Label recording not desired"));
+ proto_tree_add_text(rsvp_sa_flags_tree, tvb, offset2+2, 1, "%s",
+ decode_boolean_bitfield(flags, 0x04, 8,
+ "SE style desired",
+ "SE style not desired"));
+ proto_tree_add_text(rsvp_sa_flags_tree, tvb, offset2+2, 1, "%s",
+ decode_boolean_bitfield(flags, 0x08, 8,
+ "Bandwidth protection desired",
+ "Bandwidth protection not desired"));
+ proto_tree_add_text(rsvp_sa_flags_tree, tvb, offset2+2, 1, "%s",
+ decode_boolean_bitfield(flags, 0x10, 8,
+ "Node protection desired",
+ "Node protection not desired"));
+
+ name_len = tvb_get_guint8(tvb, offset2+3);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+3, 1,
+ "Name length: %u", name_len);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+4, name_len,
+ "Name: %s",
+ tvb_format_text(tvb, offset2+4, name_len));
+
+ proto_item_set_text(ti, "SESSION ATTRIBUTE: SetupPrio %d, HoldPrio %d, %s%s%s%s%s [%s]",
+ tvb_get_guint8(tvb, offset2),
+ tvb_get_guint8(tvb, offset2+1),
+ flags &0x01 ? "Local Protection, " : "",
+ flags &0x02 ? "Label Recording, " : "",
+ flags &0x04 ? "SE Style, " : "",
+ flags &0x08 ? "Bandwidth Protection, " : "",
+ flags &0x10 ? "Node Protection, " : "",
+ name_len ? tvb_format_text(tvb, offset2+4, name_len) : "");
+ break;
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)",
- type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)",
+ type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
+ "Data (%d bytes)", obj_length - 4);
+ break;
}
}
@@ -4121,13 +4206,13 @@ dissect_rsvp_session_attribute (proto_item *ti, proto_tree *rsvp_object_tree,
* EXPLICIT ROUTE AND RECORD ROUTE SUBOBJECTS
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_ero_rro_subobjects (proto_tree *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length, int rsvp_class)
+dissect_rsvp_ero_rro_subobjects(proto_tree *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length, int rsvp_class)
{
- int i, j, k, l, flags;
+ int i, j, k, l, flags;
proto_tree *ti2, *rsvp_ro_subtree, *rsvp_rro_flags_subtree;
- int tree_type;
+ int tree_type;
switch(rsvp_class) {
case RSVP_CLASS_EXPLICIT_ROUTE:
@@ -4142,425 +4227,424 @@ dissect_rsvp_ero_rro_subobjects (proto_tree *ti, proto_tree *rsvp_object_tree,
}
for (i=1, l = 0; l < obj_length - 4; i++) {
- j = tvb_get_guint8(tvb, offset+l) & 0x7f;
- switch(j) {
- case 1: /* IPv4 */
- k = tvb_get_guint8(tvb, offset+l) & 0x80;
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+l, 8,
- "IPv4 Subobject - %s%s",
- tvb_ip_to_str(tvb, offset+l+2),
- rsvp_class == RSVP_CLASS_EXPLICIT_ROUTE ?
- (k ? ", Loose" : ", Strict") : "");
- rsvp_ro_subtree =
- proto_item_add_subtree(ti2, tree_type);
- if (rsvp_class == RSVP_CLASS_EXPLICIT_ROUTE)
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
- k ? "Loose Hop " : "Strict Hop");
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
- "Type: 1 (IPv4)");
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+1, 1,
- "Length: %u",
- tvb_get_guint8(tvb, offset+l+1));
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+2, 4,
- "IPv4 hop: %s",
- tvb_ip_to_str(tvb, offset+l+2));
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+6, 1,
- "Prefix length: %u",
- tvb_get_guint8(tvb, offset+l+6));
- if (i < 4) {
- proto_item_append_text(ti, "IPv4 %s%s",
- tvb_ip_to_str(tvb, offset+l+2),
- k ? " [L]" : "");
- }
- if (rsvp_class == RSVP_CLASS_RECORD_ROUTE) {
- flags = tvb_get_guint8(tvb, offset+l+7);
- if (flags&0x10) {
- proto_item_append_text(ti, " (Node-id)");
- proto_item_append_text(ti2, " (Node-id)");
- }
- if (flags&0x01) proto_item_append_text(ti2, ", Local Protection Available");
- if (flags&0x02) proto_item_append_text(ti2, ", Local Protection In Use");
- if (flags&0x04) proto_item_append_text(ti2, ", Backup BW Avail");
- if (flags&0x08) proto_item_append_text(ti2, ", Backup is Next-Next-Hop");
- ti2 = proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+7, 1,
- "Flags: 0x%02x", flags);
- rsvp_rro_flags_subtree =
- proto_item_add_subtree(ti2, TREE(TT_RECORD_ROUTE_SUBOBJ_FLAGS));
- proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+7, 1, "%s",
- decode_boolean_bitfield(flags, 0x01, 8,
- "Local Protection Available",
- "Local Protection Not Available"));
- proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+7, 1, "%s",
- decode_boolean_bitfield(flags, 0x02, 8,
- "Local Protection In Use",
- "Local Protection Not In Use"));
- proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+7, 1, "%s",
- decode_boolean_bitfield(flags, 0x04, 8,
- "Bandwidth Protection Available",
- "Bandwidth Protection Not Available"));
- proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+7, 1, "%s",
- decode_boolean_bitfield(flags, 0x08, 8,
- "Node Protection Available",
- "Node Protection Not Available"));
- proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+7, 1, "%s",
- decode_boolean_bitfield(flags, 0x10, 8,
- "Address Specifies a Node-id Address",
- "Address Doesn't Specify a Node-id Address"));
- }
-
- break;
-
- case 2: /* IPv6 */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+l, 20,
- "IPv6 Subobject");
- rsvp_ro_subtree =
- proto_item_add_subtree(ti2, tree_type);
- k = tvb_get_guint8(tvb, offset+l) & 0x80;
- if (rsvp_class == RSVP_CLASS_EXPLICIT_ROUTE)
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
- k ? "Loose Hop " : "Strict Hop");
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
- "Type: 2 (IPv6)");
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+1, 1,
- "Length: %u",
- tvb_get_guint8(tvb, offset+l+1));
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+2, 16,
- "IPv6 hop: %s",
- tvb_ip6_to_str(tvb, offset+l+2));
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+18, 1,
- "Prefix length: %u",
- tvb_get_guint8(tvb, offset+l+18));
- if (i < 4) {
- proto_item_append_text(ti, "IPv6 [...]%s", k ? " [L]":"");
- }
- if (rsvp_class == RSVP_CLASS_RECORD_ROUTE) {
- flags = tvb_get_guint8(tvb, offset+l+19);
- if (flags&0x10) {
- proto_item_append_text(ti, " (Node-id)");
- proto_item_append_text(ti2, " (Node-id)");
- }
- if (flags&0x01) proto_item_append_text(ti2, ", Local Protection Available");
- if (flags&0x02) proto_item_append_text(ti2, ", Local Protection In Use");
- if (flags&0x04) proto_item_append_text(ti2, ", Backup BW Avail");
- if (flags&0x08) proto_item_append_text(ti2, ", Backup is Next-Next-Hop");
- ti2 = proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+19, 1,
- "Flags: 0x%02x", flags);
- rsvp_rro_flags_subtree =
- proto_item_add_subtree(ti2, TREE(TT_RECORD_ROUTE_SUBOBJ_FLAGS));
- proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+19, 1, "%s",
- decode_boolean_bitfield(flags, 0x01, 8,
- "Local Protection Available",
- "Local Protection Not Available"));
- proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+19, 1, "%s",
- decode_boolean_bitfield(flags, 0x02, 8,
- "Local Protection In Use",
- "Local Protection Not In Use"));
- proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+19, 1, "%s",
- decode_boolean_bitfield(flags, 0x04, 8,
- "Backup Tunnel Has Bandwidth",
- "Backup Tunnel Does Not Have Bandwidth"));
- proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+19, 1, "%s",
- decode_boolean_bitfield(flags, 0x08, 8,
- "Backup Tunnel Goes To Next-Next-Hop",
- "Backup Tunnel Goes To Next-Hop"));
- proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+19, 1, "%s",
- decode_boolean_bitfield(flags, 0x10, 8,
- "Address Specifies a Node-id Address",
- "Address Doesn't Specify a Node-id Address"));
- }
-
- break;
-
- case 3: /* Label */
- k = tvb_get_guint8(tvb, offset+l) & 0x80;
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+l, 8,
- "Label Subobject - %d, %s",
- tvb_get_ntohl(tvb, offset+l+4),
- rsvp_class == RSVP_CLASS_EXPLICIT_ROUTE ?
- (k ? "Loose" : "Strict") : "");
- rsvp_ro_subtree =
- proto_item_add_subtree(ti2, tree_type);
- if (rsvp_class == RSVP_CLASS_EXPLICIT_ROUTE)
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
- k ? "Loose Hop " : "Strict Hop");
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
- "Type: 3 (Label)");
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+1, 1,
- "Length: %u",
- tvb_get_guint8(tvb, offset+l+1));
- if (rsvp_class == RSVP_CLASS_RECORD_ROUTE) {
- flags = tvb_get_guint8(tvb, offset+l+2);
- if (flags&0x01) proto_item_append_text(ti2, ", Local Protection Available");
- if (flags&0x02) proto_item_append_text(ti2, ", Local Protection In Use");
- if (flags&0x04) proto_item_append_text(ti2, ", Backup BW Avail");
- if (flags&0x08) proto_item_append_text(ti2, ", Backup is Next-Next-Hop");
- ti2 = proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+2, 1,
- "Flags: 0x%02x", flags);
- rsvp_rro_flags_subtree =
- proto_item_add_subtree(ti2, TREE(TT_RECORD_ROUTE_SUBOBJ_FLAGS));
- proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+2, 1, "%s",
- decode_boolean_bitfield(flags, 0x01, 8,
- "Local Protection Available",
- "Local Protection Not Available"));
- proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+2, 1, "%s",
- decode_boolean_bitfield(flags, 0x02, 8,
- "Local Protection In Use",
- "Local Protection Not In Use"));
- proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+2, 1, "%s",
- decode_boolean_bitfield(flags, 0x04, 8,
- "Backup Tunnel Has Bandwidth",
- "Backup Tunnel Does Not Have Bandwidth"));
- proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+2, 1, "%s",
- decode_boolean_bitfield(flags, 0x08, 8,
- "Backup Tunnel Goes To Next-Next-Hop",
- "Backup Tunnel Goes To Next-Hop"));
- }
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+3, 1,
- "C-Type: %u",
- tvb_get_guint8(tvb, offset+l+3));
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+4, 4,
- "Label: %d",
- tvb_get_ntohl(tvb, offset+l+4));
- if (i < 4) {
- proto_item_append_text(ti, "Label %d%s",
- tvb_get_ntohl(tvb, offset+l+4),
- k ? " [L]":"");
- }
- break;
-
- case 4: /* Unnumbered Interface-ID */
- k = tvb_get_guint8(tvb, offset+l) & 0x80;
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+l, 8,
- "Unnumbered Interface-ID - %s, %d, %s",
- tvb_ip_to_str(tvb, offset+l+4),
- tvb_get_ntohl(tvb, offset+l+8),
- rsvp_class == RSVP_CLASS_EXPLICIT_ROUTE ?
- (k ? "Loose" : "Strict") : "");
- rsvp_ro_subtree =
- proto_item_add_subtree(ti2, tree_type);
- if (rsvp_class == RSVP_CLASS_EXPLICIT_ROUTE)
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
- k ? "Loose Hop " : "Strict Hop");
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
- "Type: 4 (Unnumbered Interface-ID)");
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+1, 1,
- "Length: %u",
- tvb_get_guint8(tvb, offset+l+1));
- if (rsvp_class == RSVP_CLASS_RECORD_ROUTE) {
- flags = tvb_get_guint8(tvb, offset+l+2);
- if (flags&0x01) proto_item_append_text(ti2, ", Local Protection Available");
- if (flags&0x02) proto_item_append_text(ti2, ", Local Protection In Use");
- if (flags&0x04) proto_item_append_text(ti2, ", Backup BW Avail");
- if (flags&0x08) proto_item_append_text(ti2, ", Backup is Next-Next-Hop");
- ti2 = proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+2, 1,
- "Flags: 0x%02x", flags);
- rsvp_rro_flags_subtree =
- proto_item_add_subtree(ti2, TREE(TT_RECORD_ROUTE_SUBOBJ_FLAGS));
- proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+2, 1, "%s",
- decode_boolean_bitfield(flags, 0x01, 8,
- "Local Protection Available",
- "Local Protection Not Available"));
- proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+2, 1, "%s",
- decode_boolean_bitfield(flags, 0x02, 8,
- "Local Protection In Use",
- "Local Protection Not In Use"));
- proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+2, 1, "%s",
- decode_boolean_bitfield(flags, 0x04, 8,
- "Backup Tunnel Has Bandwidth",
- "Backup Tunnel Does Not Have Bandwidth"));
- proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+2, 1, "%s",
- decode_boolean_bitfield(flags, 0x08, 8,
- "Backup Tunnel Goes To Next-Next-Hop",
- "Backup Tunnel Goes To Next-Hop"));
- }
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+4, 4,
- "Router-ID: %s",
- tvb_ip_to_str(tvb, offset+l+4));
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+8, 4,
- "Interface-ID: %d",
- tvb_get_ntohl(tvb, offset+l+8));
- if (i < 4) {
- proto_item_append_text(ti, "Unnum %s/%d%s",
- tvb_ip_to_str(tvb, offset+l+4),
- tvb_get_ntohl(tvb, offset+l+8),
- k ? " [L]":"");
- }
- break;
-
- case 32: /* AS */
- if (rsvp_class == RSVP_CLASS_RECORD_ROUTE) goto defaultsub;
- k = tvb_get_ntohs(tvb, offset+l+2);
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+l, 4,
- "Autonomous System %u",
- k);
- rsvp_ro_subtree =
- proto_item_add_subtree(ti2, tree_type);
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
- "Type: 32 (Autonomous System Number)");
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+1, 1,
- "Length: %u",
- tvb_get_guint8(tvb, offset+l+1));
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+2, 2,
- "Autonomous System %u", k);
- if (i < 4) {
- proto_item_append_text(ti, "AS %d",
- tvb_get_ntohs(tvb, offset+l+2));
- }
- break;
-
- case 64: /* PKSv4 - RFC5520 */
- if (rsvp_class == RSVP_CLASS_RECORD_ROUTE) goto defaultsub;
- k = tvb_get_ntohs(tvb, offset+l+2);
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+l, 8,
- "Path Key subobject - %s, %u",
- tvb_ip_to_str(tvb, offset+l+4),
+ j = tvb_get_guint8(tvb, offset+l) & 0x7f;
+ switch(j) {
+ case 1: /* IPv4 */
+ k = tvb_get_guint8(tvb, offset+l) & 0x80;
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset+l, 8,
+ "IPv4 Subobject - %s%s",
+ tvb_ip_to_str(tvb, offset+l+2),
+ rsvp_class == RSVP_CLASS_EXPLICIT_ROUTE ?
+ (k ? ", Loose" : ", Strict") : "");
+ rsvp_ro_subtree =
+ proto_item_add_subtree(ti2, tree_type);
+ if (rsvp_class == RSVP_CLASS_EXPLICIT_ROUTE)
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
+ k ? "Loose Hop " : "Strict Hop");
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
+ "Type: 1 (IPv4)");
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+1, 1,
+ "Length: %u",
+ tvb_get_guint8(tvb, offset+l+1));
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+2, 4,
+ "IPv4 hop: %s",
+ tvb_ip_to_str(tvb, offset+l+2));
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+6, 1,
+ "Prefix length: %u",
+ tvb_get_guint8(tvb, offset+l+6));
+ if (i < 4) {
+ proto_item_append_text(ti, "IPv4 %s%s",
+ tvb_ip_to_str(tvb, offset+l+2),
+ k ? " [L]" : "");
+ }
+ if (rsvp_class == RSVP_CLASS_RECORD_ROUTE) {
+ flags = tvb_get_guint8(tvb, offset+l+7);
+ if (flags&0x10) {
+ proto_item_append_text(ti, " (Node-id)");
+ proto_item_append_text(ti2, " (Node-id)");
+ }
+ if (flags&0x01) proto_item_append_text(ti2, ", Local Protection Available");
+ if (flags&0x02) proto_item_append_text(ti2, ", Local Protection In Use");
+ if (flags&0x04) proto_item_append_text(ti2, ", Backup BW Avail");
+ if (flags&0x08) proto_item_append_text(ti2, ", Backup is Next-Next-Hop");
+ ti2 = proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+7, 1,
+ "Flags: 0x%02x", flags);
+ rsvp_rro_flags_subtree =
+ proto_item_add_subtree(ti2, TREE(TT_RECORD_ROUTE_SUBOBJ_FLAGS));
+ proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+7, 1, "%s",
+ decode_boolean_bitfield(flags, 0x01, 8,
+ "Local Protection Available",
+ "Local Protection Not Available"));
+ proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+7, 1, "%s",
+ decode_boolean_bitfield(flags, 0x02, 8,
+ "Local Protection In Use",
+ "Local Protection Not In Use"));
+ proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+7, 1, "%s",
+ decode_boolean_bitfield(flags, 0x04, 8,
+ "Bandwidth Protection Available",
+ "Bandwidth Protection Not Available"));
+ proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+7, 1, "%s",
+ decode_boolean_bitfield(flags, 0x08, 8,
+ "Node Protection Available",
+ "Node Protection Not Available"));
+ proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+7, 1, "%s",
+ decode_boolean_bitfield(flags, 0x10, 8,
+ "Address Specifies a Node-id Address",
+ "Address Doesn't Specify a Node-id Address"));
+ }
+
+ break;
+
+ case 2: /* IPv6 */
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset+l, 20,
+ "IPv6 Subobject");
+ rsvp_ro_subtree =
+ proto_item_add_subtree(ti2, tree_type);
+ k = tvb_get_guint8(tvb, offset+l) & 0x80;
+ if (rsvp_class == RSVP_CLASS_EXPLICIT_ROUTE)
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
+ k ? "Loose Hop " : "Strict Hop");
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
+ "Type: 2 (IPv6)");
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+1, 1,
+ "Length: %u",
+ tvb_get_guint8(tvb, offset+l+1));
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+2, 16,
+ "IPv6 hop: %s",
+ tvb_ip6_to_str(tvb, offset+l+2));
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+18, 1,
+ "Prefix length: %u",
+ tvb_get_guint8(tvb, offset+l+18));
+ if (i < 4) {
+ proto_item_append_text(ti, "IPv6 [...]%s", k ? " [L]":"");
+ }
+ if (rsvp_class == RSVP_CLASS_RECORD_ROUTE) {
+ flags = tvb_get_guint8(tvb, offset+l+19);
+ if (flags&0x10) {
+ proto_item_append_text(ti, " (Node-id)");
+ proto_item_append_text(ti2, " (Node-id)");
+ }
+ if (flags&0x01) proto_item_append_text(ti2, ", Local Protection Available");
+ if (flags&0x02) proto_item_append_text(ti2, ", Local Protection In Use");
+ if (flags&0x04) proto_item_append_text(ti2, ", Backup BW Avail");
+ if (flags&0x08) proto_item_append_text(ti2, ", Backup is Next-Next-Hop");
+ ti2 = proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+19, 1,
+ "Flags: 0x%02x", flags);
+ rsvp_rro_flags_subtree =
+ proto_item_add_subtree(ti2, TREE(TT_RECORD_ROUTE_SUBOBJ_FLAGS));
+ proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+19, 1, "%s",
+ decode_boolean_bitfield(flags, 0x01, 8,
+ "Local Protection Available",
+ "Local Protection Not Available"));
+ proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+19, 1, "%s",
+ decode_boolean_bitfield(flags, 0x02, 8,
+ "Local Protection In Use",
+ "Local Protection Not In Use"));
+ proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+19, 1, "%s",
+ decode_boolean_bitfield(flags, 0x04, 8,
+ "Backup Tunnel Has Bandwidth",
+ "Backup Tunnel Does Not Have Bandwidth"));
+ proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+19, 1, "%s",
+ decode_boolean_bitfield(flags, 0x08, 8,
+ "Backup Tunnel Goes To Next-Next-Hop",
+ "Backup Tunnel Goes To Next-Hop"));
+ proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+19, 1, "%s",
+ decode_boolean_bitfield(flags, 0x10, 8,
+ "Address Specifies a Node-id Address",
+ "Address Doesn't Specify a Node-id Address"));
+ }
+
+ break;
+
+ case 3: /* Label */
+ k = tvb_get_guint8(tvb, offset+l) & 0x80;
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset+l, 8,
+ "Label Subobject - %d, %s",
+ tvb_get_ntohl(tvb, offset+l+4),
+ rsvp_class == RSVP_CLASS_EXPLICIT_ROUTE ?
+ (k ? "Loose" : "Strict") : "");
+ rsvp_ro_subtree =
+ proto_item_add_subtree(ti2, tree_type);
+ if (rsvp_class == RSVP_CLASS_EXPLICIT_ROUTE)
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
+ k ? "Loose Hop " : "Strict Hop");
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
+ "Type: 3 (Label)");
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+1, 1,
+ "Length: %u",
+ tvb_get_guint8(tvb, offset+l+1));
+ if (rsvp_class == RSVP_CLASS_RECORD_ROUTE) {
+ flags = tvb_get_guint8(tvb, offset+l+2);
+ if (flags&0x01) proto_item_append_text(ti2, ", Local Protection Available");
+ if (flags&0x02) proto_item_append_text(ti2, ", Local Protection In Use");
+ if (flags&0x04) proto_item_append_text(ti2, ", Backup BW Avail");
+ if (flags&0x08) proto_item_append_text(ti2, ", Backup is Next-Next-Hop");
+ ti2 = proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+2, 1,
+ "Flags: 0x%02x", flags);
+ rsvp_rro_flags_subtree =
+ proto_item_add_subtree(ti2, TREE(TT_RECORD_ROUTE_SUBOBJ_FLAGS));
+ proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+2, 1, "%s",
+ decode_boolean_bitfield(flags, 0x01, 8,
+ "Local Protection Available",
+ "Local Protection Not Available"));
+ proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+2, 1, "%s",
+ decode_boolean_bitfield(flags, 0x02, 8,
+ "Local Protection In Use",
+ "Local Protection Not In Use"));
+ proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+2, 1, "%s",
+ decode_boolean_bitfield(flags, 0x04, 8,
+ "Backup Tunnel Has Bandwidth",
+ "Backup Tunnel Does Not Have Bandwidth"));
+ proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+2, 1, "%s",
+ decode_boolean_bitfield(flags, 0x08, 8,
+ "Backup Tunnel Goes To Next-Next-Hop",
+ "Backup Tunnel Goes To Next-Hop"));
+ }
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+3, 1,
+ "C-Type: %u",
+ tvb_get_guint8(tvb, offset+l+3));
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+4, 4,
+ "Label: %d",
+ tvb_get_ntohl(tvb, offset+l+4));
+ if (i < 4) {
+ proto_item_append_text(ti, "Label %d%s",
+ tvb_get_ntohl(tvb, offset+l+4),
+ k ? " [L]":"");
+ }
+ break;
+
+ case 4: /* Unnumbered Interface-ID */
+ k = tvb_get_guint8(tvb, offset+l) & 0x80;
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset+l, 8,
+ "Unnumbered Interface-ID - %s, %d, %s",
+ tvb_ip_to_str(tvb, offset+l+4),
+ tvb_get_ntohl(tvb, offset+l+8),
+ rsvp_class == RSVP_CLASS_EXPLICIT_ROUTE ?
+ (k ? "Loose" : "Strict") : "");
+ rsvp_ro_subtree =
+ proto_item_add_subtree(ti2, tree_type);
+ if (rsvp_class == RSVP_CLASS_EXPLICIT_ROUTE)
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
+ k ? "Loose Hop " : "Strict Hop");
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
+ "Type: 4 (Unnumbered Interface-ID)");
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+1, 1,
+ "Length: %u",
+ tvb_get_guint8(tvb, offset+l+1));
+ if (rsvp_class == RSVP_CLASS_RECORD_ROUTE) {
+ flags = tvb_get_guint8(tvb, offset+l+2);
+ if (flags&0x01) proto_item_append_text(ti2, ", Local Protection Available");
+ if (flags&0x02) proto_item_append_text(ti2, ", Local Protection In Use");
+ if (flags&0x04) proto_item_append_text(ti2, ", Backup BW Avail");
+ if (flags&0x08) proto_item_append_text(ti2, ", Backup is Next-Next-Hop");
+ ti2 = proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+2, 1,
+ "Flags: 0x%02x", flags);
+ rsvp_rro_flags_subtree =
+ proto_item_add_subtree(ti2, TREE(TT_RECORD_ROUTE_SUBOBJ_FLAGS));
+ proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+2, 1, "%s",
+ decode_boolean_bitfield(flags, 0x01, 8,
+ "Local Protection Available",
+ "Local Protection Not Available"));
+ proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+2, 1, "%s",
+ decode_boolean_bitfield(flags, 0x02, 8,
+ "Local Protection In Use",
+ "Local Protection Not In Use"));
+ proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+2, 1, "%s",
+ decode_boolean_bitfield(flags, 0x04, 8,
+ "Backup Tunnel Has Bandwidth",
+ "Backup Tunnel Does Not Have Bandwidth"));
+ proto_tree_add_text(rsvp_rro_flags_subtree, tvb, offset+l+2, 1, "%s",
+ decode_boolean_bitfield(flags, 0x08, 8,
+ "Backup Tunnel Goes To Next-Next-Hop",
+ "Backup Tunnel Goes To Next-Hop"));
+ }
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+4, 4,
+ "Router-ID: %s",
+ tvb_ip_to_str(tvb, offset+l+4));
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+8, 4,
+ "Interface-ID: %d",
+ tvb_get_ntohl(tvb, offset+l+8));
+ if (i < 4) {
+ proto_item_append_text(ti, "Unnum %s/%d%s",
+ tvb_ip_to_str(tvb, offset+l+4),
+ tvb_get_ntohl(tvb, offset+l+8),
+ k ? " [L]":"");
+ }
+ break;
+
+ case 32: /* AS */
+ if (rsvp_class == RSVP_CLASS_RECORD_ROUTE) goto defaultsub;
+ k = tvb_get_ntohs(tvb, offset+l+2);
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset+l, 4,
+ "Autonomous System %u",
k);
- rsvp_ro_subtree =
- proto_item_add_subtree(ti2, tree_type);
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
- "Type: 64 (Path Key with IPv4 PCE-ID)");
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+1, 1,
- "Length: %u",
- tvb_get_guint8(tvb, offset+l+1));
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+2, 2,
- "Path Key: %u", k);
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+4, 4,
- "PCE-ID: %s",
- tvb_ip_to_str(tvb, offset+l+4));
- if (i < 4) {
- proto_item_append_text(ti, "Path Key %d", k);
- }
- break;
-
- case 65: /* PKSv6 - RFC5520 */
- if (rsvp_class == RSVP_CLASS_RECORD_ROUTE) goto defaultsub;
- k = tvb_get_ntohs(tvb, offset+l+2);
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+l, 8,
- "Path Key subobject - %s, %u",
- tvb_ip6_to_str(tvb, offset+l+4),
+ rsvp_ro_subtree =
+ proto_item_add_subtree(ti2, tree_type);
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
+ "Type: 32 (Autonomous System Number)");
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+1, 1,
+ "Length: %u",
+ tvb_get_guint8(tvb, offset+l+1));
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+2, 2,
+ "Autonomous System %u", k);
+ if (i < 4) {
+ proto_item_append_text(ti, "AS %d",
+ tvb_get_ntohs(tvb, offset+l+2));
+ }
+ break;
+
+ case 64: /* PKSv4 - RFC5520 */
+ if (rsvp_class == RSVP_CLASS_RECORD_ROUTE) goto defaultsub;
+ k = tvb_get_ntohs(tvb, offset+l+2);
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset+l, 8,
+ "Path Key subobject - %s, %u",
+ tvb_ip_to_str(tvb, offset+l+4),
k);
- rsvp_ro_subtree =
- proto_item_add_subtree(ti2, tree_type);
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
- "Type: 65 (Path Key with IPv6 PCE-ID)");
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+1, 1,
- "Length: %u",
- tvb_get_guint8(tvb, offset+l+1));
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+2, 2,
- "Path Key: %u", k);
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+4, 4,
- "PCE-ID: %s",
- tvb_ip6_to_str(tvb, offset+l+4));
- if (i < 4) {
- proto_item_append_text(ti, "Path Key %d", k);
- }
- break;
+ rsvp_ro_subtree =
+ proto_item_add_subtree(ti2, tree_type);
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
+ "Type: 64 (Path Key with IPv4 PCE-ID)");
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+1, 1,
+ "Length: %u",
+ tvb_get_guint8(tvb, offset+l+1));
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+2, 2,
+ "Path Key: %u", k);
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+4, 4,
+ "PCE-ID: %s",
+ tvb_ip_to_str(tvb, offset+l+4));
+ if (i < 4) {
+ proto_item_append_text(ti, "Path Key %d", k);
+ }
+ break;
+
+ case 65: /* PKSv6 - RFC5520 */
+ if (rsvp_class == RSVP_CLASS_RECORD_ROUTE) goto defaultsub;
+ k = tvb_get_ntohs(tvb, offset+l+2);
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset+l, 8,
+ "Path Key subobject - %s, %u",
+ tvb_ip6_to_str(tvb, offset+l+4),
+ k);
+ rsvp_ro_subtree =
+ proto_item_add_subtree(ti2, tree_type);
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
+ "Type: 65 (Path Key with IPv6 PCE-ID)");
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+1, 1,
+ "Length: %u",
+ tvb_get_guint8(tvb, offset+l+1));
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+2, 2,
+ "Path Key: %u", k);
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+4, 4,
+ "PCE-ID: %s",
+ tvb_ip6_to_str(tvb, offset+l+4));
+ if (i < 4) {
+ proto_item_append_text(ti, "Path Key %d", k);
+ }
+ break;
case 124:
case 125:
case 126:
case 127:
- /*
- * FF: Types 124 through 127 are to be reserved for Vendor
- * Private Use (see RFC 3936, Section 2.3.1) in case of
- * EXPLICIT_ROUTE (aka ERO).
- */
- if (rsvp_class == RSVP_CLASS_RECORD_ROUTE)
- goto defaultsub;
- else
- goto privatesub;
- break;
+ /*
+ * FF: Types 124 through 127 are to be reserved for Vendor
+ * Private Use (see RFC 3936, Section 2.3.1) in case of
+ * EXPLICIT_ROUTE (aka ERO).
+ */
+ if (rsvp_class == RSVP_CLASS_RECORD_ROUTE)
+ goto defaultsub;
+ else
+ goto privatesub;
+ break;
case 252:
case 253:
case 254:
case 255:
- /*
- * FF: Types 252 through 255 are to be reserved for Vendor
- * Private Use (see RFC 3936, Section 2.3.1) in case of
- * RECORD_ROUTE (aka RRO).
- */
- if (rsvp_class == RSVP_CLASS_EXPLICIT_ROUTE)
- goto defaultsub;
- else
- goto privatesub;
- break;
+ /*
+ * FF: Types 252 through 255 are to be reserved for Vendor
+ * Private Use (see RFC 3936, Section 2.3.1) in case of
+ * RECORD_ROUTE (aka RRO).
+ */
+ if (rsvp_class == RSVP_CLASS_EXPLICIT_ROUTE)
+ goto defaultsub;
+ else
+ goto privatesub;
+ break;
privatesub: /* Private subobject */
- /*
- * FF: The first four octets of the sub-object contents of
- * a Vendor Private sub-object of an EXPLICIT_ROUTE or
- * RECORD_ROUTE object MUST be that vendor's SMI enterprise
- * code in network octet order.
- */
- {
- guint8 private_so_len = tvb_get_guint8(tvb, offset+l+1);
- k = tvb_get_guint8(tvb, offset+l) & 0x80;
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+l,
- tvb_get_guint8(tvb, offset+l+1),
- "Private Subobject: %d", j);
- rsvp_ro_subtree =
- proto_item_add_subtree(ti2, tree_type);
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
- k ? "Loose Hop " : "Strict Hop");
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
- "Type: %u (Private)", j);
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+1, 1,
- "Length: %u",
- private_so_len);
-
- proto_tree_add_item(rsvp_ro_subtree,
- hf_rsvp_filter[RSVPF_ENT_CODE],
- tvb, offset+l+4, 4, ENC_BIG_ENDIAN);
- if (private_so_len > 8) {
- /* some private data */
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+8,
- private_so_len - 8,
- "Data (%d bytes)",
- private_so_len - 8);
- }
- }
- break;
-
- default: /* Unknown subobject */
- defaultsub:
- k = tvb_get_guint8(tvb, offset+l) & 0x80;
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+l,
- tvb_get_guint8(tvb, offset+l+1),
- "Unknown subobject: %d", j);
- rsvp_ro_subtree =
- proto_item_add_subtree(ti2, tree_type);
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
- k ? "Loose Hop " : "Strict Hop");
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
- "Type: %u (Unknown)", j);
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+1, 1,
- "Length: %u",
- tvb_get_guint8(tvb, offset+l+1));
-
- }
-
- if (tvb_get_guint8(tvb, offset+l+1) < 1) {
- proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+1, 1,
- "Invalid length: %u", tvb_get_guint8(tvb, offset+l+1));
- return;
- }
- l += tvb_get_guint8(tvb, offset+l+1);
- if (l < obj_length - 4) {
- if (i < 4)
- proto_item_append_text(ti, ", ");
- else if (i==4)
- proto_item_append_text(ti, "...");
- }
+ /*
+ * FF: The first four octets of the sub-object contents of
+ * a Vendor Private sub-object of an EXPLICIT_ROUTE or
+ * RECORD_ROUTE object MUST be that vendor's SMI enterprise
+ * code in network octet order.
+ */
+ {
+ guint8 private_so_len = tvb_get_guint8(tvb, offset+l+1);
+ k = tvb_get_guint8(tvb, offset+l) & 0x80;
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb, offset+l,
+ tvb_get_guint8(tvb, offset+l+1),
+ "Private Subobject: %d", j);
+ rsvp_ro_subtree =
+ proto_item_add_subtree(ti2, tree_type);
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
+ k ? "Loose Hop " : "Strict Hop");
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
+ "Type: %u (Private)", j);
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+1, 1,
+ "Length: %u",
+ private_so_len);
+
+ proto_tree_add_item(rsvp_ro_subtree,
+ hf_rsvp_filter[RSVPF_ENT_CODE],
+ tvb, offset+l+4, 4, ENC_BIG_ENDIAN);
+ if (private_so_len > 8) {
+ /* some private data */
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+8,
+ private_so_len - 8,
+ "Data (%d bytes)",
+ private_so_len - 8);
+ }
+ }
+ break;
+
+ default: /* Unknown subobject */
+ defaultsub:
+ k = tvb_get_guint8(tvb, offset+l) & 0x80;
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset+l,
+ tvb_get_guint8(tvb, offset+l+1),
+ "Unknown subobject: %d", j);
+ rsvp_ro_subtree =
+ proto_item_add_subtree(ti2, tree_type);
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
+ k ? "Loose Hop " : "Strict Hop");
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
+ "Type: %u (Unknown)", j);
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+1, 1,
+ "Length: %u",
+ tvb_get_guint8(tvb, offset+l+1));
+ break;
+ }
+
+ if (tvb_get_guint8(tvb, offset+l+1) < 1) {
+ proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l+1, 1,
+ "Invalid length: %u", tvb_get_guint8(tvb, offset+l+1));
+ return;
+ }
+ l += tvb_get_guint8(tvb, offset+l+1);
+ if (l < obj_length - 4) {
+ if (i < 4)
+ proto_item_append_text(ti, ", ");
+ else if (i==4)
+ proto_item_append_text(ti, "...");
+ }
}
}
@@ -4568,28 +4652,28 @@ dissect_rsvp_ero_rro_subobjects (proto_tree *ti, proto_tree *rsvp_object_tree,
* EXPLICIT ROUTE OBJECT
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_explicit_route (proto_item *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class, int type)
+dissect_rsvp_explicit_route(proto_item *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class, int type)
{
switch(type) {
case 1:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 1");
- proto_item_set_text(ti, "EXPLICIT ROUTE: ");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 1");
+ proto_item_set_text(ti, "EXPLICIT ROUTE: ");
- dissect_rsvp_ero_rro_subobjects(ti, rsvp_object_tree, tvb,
- offset + 4, obj_length, rsvp_class);
- break;
+ dissect_rsvp_ero_rro_subobjects(ti, rsvp_object_tree, tvb,
+ offset + 4, obj_length, rsvp_class);
+ break;
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)",
- type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset+4, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)",
+ type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+4, obj_length - 4,
+ "Data (%d bytes)", obj_length - 4);
+ break;
}
}
@@ -4597,28 +4681,28 @@ dissect_rsvp_explicit_route (proto_item *ti, proto_tree *rsvp_object_tree,
* RECORD ROUTE OBJECT
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_record_route (proto_item *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class, int type)
+dissect_rsvp_record_route(proto_item *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class, int type)
{
proto_item_set_text(ti, "RECORD ROUTE: ");
switch(type) {
case 1:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 1");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 1");
- dissect_rsvp_ero_rro_subobjects(ti, rsvp_object_tree, tvb,
- offset + 4, obj_length, rsvp_class);
- break;
+ dissect_rsvp_ero_rro_subobjects(ti, rsvp_object_tree, tvb,
+ offset + 4, obj_length, rsvp_class);
+ break;
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)",
- type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset+4, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)",
+ type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+4, obj_length - 4,
+ "Data (%d bytes)", obj_length - 4);
+ break;
}
}
@@ -4626,35 +4710,35 @@ dissect_rsvp_record_route (proto_item *ti, proto_tree *rsvp_object_tree,
* MESSAGE ID
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_message_id (proto_tree *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_message_id(proto_tree *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
int offset2 = offset + 4;
switch(type) {
case 1:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 1");
- proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 1,
- "Flags: %d", tvb_get_guint8(tvb, offset+4));
- proto_tree_add_text(rsvp_object_tree, tvb, offset+5, 3,
- "Epoch: %d", tvb_get_ntoh24(tvb, offset+5));
- proto_tree_add_text(rsvp_object_tree, tvb, offset+8, 4,
- "Message-ID: %d", tvb_get_ntohl(tvb, offset+8));
- proto_item_set_text(ti, "MESSAGE-ID: %d %s",
- tvb_get_ntohl(tvb, offset+8),
- tvb_get_guint8(tvb, offset+4) & 1 ? "(Ack Desired)" : "");
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 1");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 1,
+ "Flags: %d", tvb_get_guint8(tvb, offset+4));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+5, 3,
+ "Epoch: %d", tvb_get_ntoh24(tvb, offset+5));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+8, 4,
+ "Message-ID: %d", tvb_get_ntohl(tvb, offset+8));
+ proto_item_set_text(ti, "MESSAGE-ID: %d %s",
+ tvb_get_ntohl(tvb, offset+8),
+ tvb_get_guint8(tvb, offset+4) & 1 ? "(Ack Desired)" : "");
+ break;
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)",
- type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)",
+ type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
+ "Data (%d bytes)", obj_length - 4);
+ break;
}
}
@@ -4662,45 +4746,45 @@ dissect_rsvp_message_id (proto_tree *ti, proto_tree *rsvp_object_tree,
* MESSAGE ID ACK
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_message_id_ack (proto_tree *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_message_id_ack(proto_tree *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
int offset2 = offset + 4;
switch(type) {
case 1:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 1");
- proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 1,
- "Flags: %d", tvb_get_guint8(tvb, offset+4));
- proto_tree_add_text(rsvp_object_tree, tvb, offset+5, 3,
- "Epoch: %d", tvb_get_ntoh24(tvb, offset+5));
- proto_tree_add_text(rsvp_object_tree, tvb, offset+8, 4,
- "Message-ID: %d", tvb_get_ntohl(tvb, offset+8));
- proto_item_set_text(ti, "MESSAGE-ID ACK: %d", tvb_get_ntohl(tvb, offset+8));
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 1");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 1,
+ "Flags: %d", tvb_get_guint8(tvb, offset+4));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+5, 3,
+ "Epoch: %d", tvb_get_ntoh24(tvb, offset+5));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+8, 4,
+ "Message-ID: %d", tvb_get_ntohl(tvb, offset+8));
+ proto_item_set_text(ti, "MESSAGE-ID ACK: %d", tvb_get_ntohl(tvb, offset+8));
+ break;
case 2:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 2");
- proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 1,
- "Flags: %d", tvb_get_guint8(tvb, offset+4));
- proto_tree_add_text(rsvp_object_tree, tvb, offset+5, 3,
- "Epoch: %d", tvb_get_ntoh24(tvb, offset+5));
- proto_tree_add_text(rsvp_object_tree, tvb, offset+8, 4,
- "Message-ID: %d", tvb_get_ntohl(tvb, offset+8));
- proto_item_set_text(ti, "MESSAGE-ID NACK: %d", tvb_get_ntohl(tvb, offset+8));
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 2");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 1,
+ "Flags: %d", tvb_get_guint8(tvb, offset+4));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+5, 3,
+ "Epoch: %d", tvb_get_ntoh24(tvb, offset+5));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+8, 4,
+ "Message-ID: %d", tvb_get_ntohl(tvb, offset+8));
+ proto_item_set_text(ti, "MESSAGE-ID NACK: %d", tvb_get_ntohl(tvb, offset+8));
+ break;
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)",
- type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)",
+ type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
+ "Data (%d bytes)", obj_length - 4);
+ break;
}
}
@@ -4708,37 +4792,37 @@ dissect_rsvp_message_id_ack (proto_tree *ti, proto_tree *rsvp_object_tree,
* MESSAGE ID LIST
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_message_id_list (proto_tree *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_message_id_list(proto_tree *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
int offset2 = offset + 4;
int mylen;
switch(type) {
case 1:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 1");
- proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 1,
- "Flags: %d", tvb_get_guint8(tvb, offset+4));
- proto_tree_add_text(rsvp_object_tree, tvb, offset+5, 3,
- "Epoch: %d", tvb_get_ntoh24(tvb, offset+5));
- for (mylen = 8; mylen < obj_length; mylen += 4)
- proto_tree_add_text(rsvp_object_tree, tvb, offset+mylen, 4,
- "Message-ID: %d", tvb_get_ntohl(tvb, offset+mylen));
- proto_item_set_text(ti, "MESSAGE-ID LIST: %d IDs",
- (obj_length - 8)/4);
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 1");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 1,
+ "Flags: %d", tvb_get_guint8(tvb, offset+4));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+5, 3,
+ "Epoch: %d", tvb_get_ntoh24(tvb, offset+5));
+ for (mylen = 8; mylen < obj_length; mylen += 4)
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+mylen, 4,
+ "Message-ID: %d", tvb_get_ntohl(tvb, offset+mylen));
+ proto_item_set_text(ti, "MESSAGE-ID LIST: %d IDs",
+ (obj_length - 8)/4);
+ break;
default:
- mylen = obj_length - 4;
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)",
- type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
- break;
+ mylen = obj_length - 4;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)",
+ type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
+ "Data (%d bytes)", obj_length - 4);
+ break;
}
}
@@ -4746,31 +4830,31 @@ dissect_rsvp_message_id_list (proto_tree *ti, proto_tree *rsvp_object_tree,
* HELLO
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_hello (proto_tree *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length _U_,
- int rsvp_class _U_, int type)
+dissect_rsvp_hello(proto_tree *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length _U_,
+ int rsvp_class _U_, int type)
{
switch(type) {
case 1:
case 2:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-Type: %d - HELLO %s object",
- tvb_get_guint8 (tvb, offset+3),
- type==1 ? "REQUEST" : "ACK");
- proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 4,
- "Source Instance: 0x%x",tvb_get_ntohl(tvb, offset+4));
- proto_tree_add_text(rsvp_object_tree, tvb, offset+8, 4,
- "Destination Instance: 0x%x",tvb_get_ntohl(tvb, offset+8));
- proto_item_append_text(ti, ": %s. Src Instance: 0x%0x. Dest Instance: 0x%0x. ",
- type==1 ? "REQUEST" : "ACK",
- tvb_get_ntohl(tvb, offset+4),
- tvb_get_ntohl(tvb, offset+8));
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-Type: %d - HELLO %s object",
+ tvb_get_guint8 (tvb, offset+3),
+ type==1 ? "REQUEST" : "ACK");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 4,
+ "Source Instance: 0x%x",tvb_get_ntohl(tvb, offset+4));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+8, 4,
+ "Destination Instance: 0x%x",tvb_get_ntohl(tvb, offset+8));
+ proto_item_append_text(ti, ": %s. Src Instance: 0x%0x. Dest Instance: 0x%0x. ",
+ type==1 ? "REQUEST" : "ACK",
+ tvb_get_ntohl(tvb, offset+4),
+ tvb_get_ntohl(tvb, offset+8));
+ break;
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-Type: %d - UNKNOWN", type);
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-Type: %d - UNKNOWN", type);
+ break;
};
}
@@ -4778,10 +4862,10 @@ dissect_rsvp_hello (proto_tree *ti, proto_tree *rsvp_object_tree,
* DCLASS
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_dclass (proto_tree *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_dclass(proto_tree *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
int offset2 = offset + 4;
int mylen;
@@ -4789,29 +4873,29 @@ dissect_rsvp_dclass (proto_tree *ti, proto_tree *rsvp_object_tree,
proto_item_set_text(ti, "DCLASS: ");
switch(type) {
case 1:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 1");
- for (mylen = 4; mylen < obj_length; mylen += 4) {
- proto_tree_add_text(rsvp_object_tree, tvb, offset+mylen+3, 1,
- "DSCP: %s",
- val_to_str(tvb_get_guint8(tvb, offset+mylen+3),
- dscp_vals, "Unknown (%d)"));
- proto_item_append_text(ti, "%d%s",
- tvb_get_guint8(tvb, offset+mylen+3)>>2,
- mylen==obj_length-4 ? "":
- mylen<16 ? ", ":
- mylen==16 ? ", ..." : "");
- }
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 1");
+ for (mylen = 4; mylen < obj_length; mylen += 4) {
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+mylen+3, 1,
+ "DSCP: %s",
+ val_to_str_ext(tvb_get_guint8(tvb, offset+mylen+3),
+ &dscp_vals_ext, "Unknown (%d)"));
+ proto_item_append_text(ti, "%d%s",
+ tvb_get_guint8(tvb, offset+mylen+3)>>2,
+ mylen==obj_length-4 ? "":
+ mylen<16 ? ", ":
+ mylen==16 ? ", ..." : "");
+ }
+ break;
default:
- mylen = obj_length - 4;
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)",
- type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, mylen,
- "Data (%d bytes)", mylen);
- break;
+ mylen = obj_length - 4;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)",
+ type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, mylen,
+ "Data (%d bytes)", mylen);
+ break;
}
}
@@ -4819,68 +4903,68 @@ dissect_rsvp_dclass (proto_tree *ti, proto_tree *rsvp_object_tree,
* ADMINISTRATIVE STATUS
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_admin_status (proto_tree *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_admin_status(proto_tree *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
- int offset2 = offset + 4;
+ int offset2 = offset + 4;
proto_tree *ti2, *rsvp_admin_subtree;
- guint32 status;
+ guint32 status;
proto_item_set_text(ti, "ADMIN STATUS: ");
switch(type) {
case 1:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 1");
- status = tvb_get_ntohl(tvb, offset2);
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb, offset2, 4,
- "Admin Status: 0x%08x", status);
- rsvp_admin_subtree =
- proto_item_add_subtree(ti2, TREE(TT_ADMIN_STATUS_FLAGS));
-
- proto_tree_add_boolean(rsvp_admin_subtree,
- hf_rsvp_filter[RSVPF_ADMIN_STATUS_REFLECT],
- tvb, offset2, 4, status);
- proto_tree_add_boolean(rsvp_admin_subtree,
- hf_rsvp_filter[RSVPF_ADMIN_STATUS_HANDOVER],
- tvb, offset2, 4, status);
- proto_tree_add_boolean(rsvp_admin_subtree,
- hf_rsvp_filter[RSVPF_ADMIN_STATUS_LOCKOUT],
- tvb, offset2, 4, status);
- proto_tree_add_boolean(rsvp_admin_subtree,
- hf_rsvp_filter[RSVPF_ADMIN_STATUS_INHIBIT],
- tvb, offset2, 4, status);
- proto_tree_add_boolean(rsvp_admin_subtree,
- hf_rsvp_filter[RSVPF_ADMIN_STATUS_CALL_MGMT],
- tvb, offset2, 4, status);
- proto_tree_add_boolean(rsvp_admin_subtree,
- hf_rsvp_filter[RSVPF_ADMIN_STATUS_TESTING],
- tvb, offset2, 4, status);
- proto_tree_add_boolean(rsvp_admin_subtree,
- hf_rsvp_filter[RSVPF_ADMIN_STATUS_DOWN],
- tvb, offset2, 4, status);
- proto_tree_add_boolean(rsvp_admin_subtree,
- hf_rsvp_filter[RSVPF_ADMIN_STATUS_DELETE],
- tvb, offset2, 4, status);
- proto_item_set_text(ti, "ADMIN-STATUS: %s%s%s%s%s%s%s%s",
- (status & (1<<31)) ? "Reflect " : "",
- (status & (1<<6)) ? "Handover " : "",
- (status & (1<<5)) ? "Lockout " : "",
- (status & (1<<4)) ? "Inhibit " : "",
- (status & (1<<3)) ? "Call " : "",
- (status & (1<<2)) ? "Testing " : "",
- (status & (1<<1)) ? "Admin-Down " : "",
- (status & (1<<0)) ? "Deleting " : "");
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 1");
+ status = tvb_get_ntohl(tvb, offset2);
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb, offset2, 4,
+ "Admin Status: 0x%08x", status);
+ rsvp_admin_subtree =
+ proto_item_add_subtree(ti2, TREE(TT_ADMIN_STATUS_FLAGS));
+
+ proto_tree_add_boolean(rsvp_admin_subtree,
+ hf_rsvp_filter[RSVPF_ADMIN_STATUS_REFLECT],
+ tvb, offset2, 4, status);
+ proto_tree_add_boolean(rsvp_admin_subtree,
+ hf_rsvp_filter[RSVPF_ADMIN_STATUS_HANDOVER],
+ tvb, offset2, 4, status);
+ proto_tree_add_boolean(rsvp_admin_subtree,
+ hf_rsvp_filter[RSVPF_ADMIN_STATUS_LOCKOUT],
+ tvb, offset2, 4, status);
+ proto_tree_add_boolean(rsvp_admin_subtree,
+ hf_rsvp_filter[RSVPF_ADMIN_STATUS_INHIBIT],
+ tvb, offset2, 4, status);
+ proto_tree_add_boolean(rsvp_admin_subtree,
+ hf_rsvp_filter[RSVPF_ADMIN_STATUS_CALL_MGMT],
+ tvb, offset2, 4, status);
+ proto_tree_add_boolean(rsvp_admin_subtree,
+ hf_rsvp_filter[RSVPF_ADMIN_STATUS_TESTING],
+ tvb, offset2, 4, status);
+ proto_tree_add_boolean(rsvp_admin_subtree,
+ hf_rsvp_filter[RSVPF_ADMIN_STATUS_DOWN],
+ tvb, offset2, 4, status);
+ proto_tree_add_boolean(rsvp_admin_subtree,
+ hf_rsvp_filter[RSVPF_ADMIN_STATUS_DELETE],
+ tvb, offset2, 4, status);
+ proto_item_set_text(ti, "ADMIN-STATUS: %s%s%s%s%s%s%s%s",
+ (status & (1<<31)) ? "Reflect " : "",
+ (status & (1<<6)) ? "Handover " : "",
+ (status & (1<<5)) ? "Lockout " : "",
+ (status & (1<<4)) ? "Inhibit " : "",
+ (status & (1<<3)) ? "Call " : "",
+ (status & (1<<2)) ? "Testing " : "",
+ (status & (1<<1)) ? "Admin-Down " : "",
+ (status & (1<<0)) ? "Deleting " : "");
+ break;
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)",
- type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)",
+ type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
+ "Data (%d bytes)", obj_length - 4);
+ break;
}
}
@@ -4888,13 +4972,13 @@ dissect_rsvp_admin_status (proto_tree *ti, proto_tree *rsvp_object_tree,
* LSP ATTRIBUTES
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_lsp_attributes (proto_tree *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb, int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_lsp_attributes(proto_tree *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb, int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
- int tlv_off;
- guint32 attributes;
- guint16 tlv_type, tlv_len;
+ int tlv_off;
+ guint32 attributes;
+ guint16 tlv_type, tlv_len;
proto_tree *ti2, *rsvp_lsp_attr_subtree;
if (rsvp_class == RSVP_CLASS_LSP_REQUIRED_ATTRIBUTES)
@@ -4904,13 +4988,13 @@ dissect_rsvp_lsp_attributes (proto_tree *ti, proto_tree *rsvp_object_tree,
switch(type) {
case 1:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 1");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 1");
for (tlv_off = 4; tlv_off < obj_length-4; ) {
tlv_type = tvb_get_ntohs(tvb, offset+tlv_off);
tlv_len = tvb_get_ntohs(tvb, offset+tlv_off+2);
- if (tlv_len == 0 || tlv_off+tlv_len > obj_length-4) {
+ if ((tlv_len == 0) || (tlv_off+tlv_len > (obj_length-4))) {
proto_tree_add_text(rsvp_object_tree, tvb, offset+tlv_off+2, 2,
"Invalid length");
return;
@@ -4939,7 +5023,7 @@ dissect_rsvp_lsp_attributes (proto_tree *ti, proto_tree *rsvp_object_tree,
(attributes & 0x04) ? " Segment-based re-routing" : "");
break;
- default:
+ default:
proto_tree_add_text(rsvp_object_tree, tvb, offset+tlv_off, tlv_len,
"Unknown TLV");
break;
@@ -4949,12 +5033,12 @@ dissect_rsvp_lsp_attributes (proto_tree *ti, proto_tree *rsvp_object_tree,
break;
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)",
- type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset+4, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)",
+ type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+4, obj_length - 4,
+ "Data (%d bytes)", obj_length - 4);
+ break;
}
}
@@ -4962,13 +5046,14 @@ dissect_rsvp_lsp_attributes (proto_tree *ti, proto_tree *rsvp_object_tree,
* ASSOCIATION
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_association (proto_tree *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_association(proto_tree *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
guint16 association_type;
guint16 association_id;
+
static const value_string association_type_vals[] = {
{ 0, "Reserved"},
{ 1, "Recovery"},
@@ -4977,73 +5062,74 @@ dissect_rsvp_association (proto_tree *ti, proto_tree *rsvp_object_tree,
{ 4, "Inter-domain Recovery"},
{ 0, NULL}
};
+ static value_string_ext association_type_vals_ext = VALUE_STRING_EXT_INIT(association_type_vals);
proto_item_set_text(ti, "ASSOCIATION ");
association_type = tvb_get_ntohs (tvb, offset + 4);
association_id = tvb_get_ntohs (tvb, offset + 6);
switch(type) {
case 1:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 1 (IPv4)");
- proto_item_append_text(ti, "(IPv4): ");
- proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 2,
- "Association type: %s",
- val_to_str(association_type, association_type_vals, "Unknown (%u)"));
- proto_item_append_text(ti, "%s. ",
- val_to_str(association_type, association_type_vals, "Unknown (%u)"));
- proto_tree_add_text(rsvp_object_tree, tvb, offset+6, 2,
- "Association ID: %u", association_id);
- proto_item_append_text(ti, "ID: %u. ", association_id);
- proto_tree_add_text(rsvp_object_tree, tvb, offset+8, 4,
- "Association source: %s", tvb_ip_to_str(tvb, offset+8));
- proto_item_append_text(ti, "Src: %s", tvb_ip_to_str(tvb, offset+8));
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 1 (IPv4)");
+ proto_item_append_text(ti, "(IPv4): ");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 2,
+ "Association type: %s",
+ val_to_str_ext(association_type, &association_type_vals_ext, "Unknown (%u)"));
+ proto_item_append_text(ti, "%s. ",
+ val_to_str_ext(association_type, &association_type_vals_ext, "Unknown (%u)"));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+6, 2,
+ "Association ID: %u", association_id);
+ proto_item_append_text(ti, "ID: %u. ", association_id);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+8, 4,
+ "Association source: %s", tvb_ip_to_str(tvb, offset+8));
+ proto_item_append_text(ti, "Src: %s", tvb_ip_to_str(tvb, offset+8));
+ break;
case 2:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 2 (IPv6)");
- proto_item_append_text(ti, "(IPv6): ");
- proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 2,
- "Association type: %s",
- val_to_str(association_type, association_type_vals, "Unknown (%u)"));
- proto_item_append_text(ti, "%s. ",
- val_to_str(association_type, association_type_vals, "Unknown (%u)"));
- proto_tree_add_text(rsvp_object_tree, tvb, offset+6, 2,
- "Association ID: %u", association_id);
- proto_item_append_text(ti, "ID: %u. ", association_id);
- proto_tree_add_text(rsvp_object_tree, tvb, offset+8, 16,
- "Association source: %s", tvb_ip6_to_str(tvb, offset+8));
- proto_item_append_text(ti, "Src: %s", tvb_ip6_to_str(tvb, offset+8));
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 2 (IPv6)");
+ proto_item_append_text(ti, "(IPv6): ");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 2,
+ "Association type: %s",
+ val_to_str_ext(association_type, &association_type_vals_ext, "Unknown (%u)"));
+ proto_item_append_text(ti, "%s. ",
+ val_to_str_ext(association_type, &association_type_vals_ext, "Unknown (%u)"));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+6, 2,
+ "Association ID: %u", association_id);
+ proto_item_append_text(ti, "ID: %u. ", association_id);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+8, 16,
+ "Association source: %s", tvb_ip6_to_str(tvb, offset+8));
+ proto_item_append_text(ti, "Src: %s", tvb_ip6_to_str(tvb, offset+8));
+ break;
case 4: /* oif2008.389 */
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 4 (Routing Area)");
- proto_item_append_text(ti, "(Routing Area): ");
- proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 2,
- "Association type: %s",
- val_to_str(association_type, association_type_vals, "Unknown (%u)"));
- proto_item_append_text(ti, "%s. ",
- val_to_str(association_type, association_type_vals, "Unknown (%u)"));
- proto_tree_add_text(rsvp_object_tree, tvb, offset+6, 2,
- "Association ID: %u", association_id);
- proto_item_append_text(ti, "Association ID: %u, ", association_id);
- proto_tree_add_text(rsvp_object_tree, tvb, offset+8, 4,
- "Routing Area ID: %u", tvb_get_ntohl (tvb, offset+8));
- proto_item_append_text(ti, "Routing Area ID: %u, ", tvb_get_ntohl (tvb, offset+8));
- proto_tree_add_text(rsvp_object_tree, tvb, offset+12, 4,
- "Node ID: %s", tvb_ip_to_str(tvb, offset+12));
- proto_item_append_text(ti, "Node ID: %s", tvb_ip_to_str(tvb, offset+12));
- proto_tree_add_text(rsvp_object_tree, tvb, offset+8, 16,
- "Padding: %s", tvb_bytes_to_str_punct(tvb, offset+16, 8, ' '));
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 4 (Routing Area)");
+ proto_item_append_text(ti, "(Routing Area): ");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 2,
+ "Association type: %s",
+ val_to_str_ext(association_type, &association_type_vals_ext, "Unknown (%u)"));
+ proto_item_append_text(ti, "%s. ",
+ val_to_str_ext(association_type, &association_type_vals_ext, "Unknown (%u)"));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+6, 2,
+ "Association ID: %u", association_id);
+ proto_item_append_text(ti, "Association ID: %u, ", association_id);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+8, 4,
+ "Routing Area ID: %u", tvb_get_ntohl (tvb, offset+8));
+ proto_item_append_text(ti, "Routing Area ID: %u, ", tvb_get_ntohl (tvb, offset+8));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+12, 4,
+ "Node ID: %s", tvb_ip_to_str(tvb, offset+12));
+ proto_item_append_text(ti, "Node ID: %s", tvb_ip_to_str(tvb, offset+12));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+8, 16,
+ "Padding: %s", tvb_bytes_to_str_punct(tvb, offset+16, 8, ' '));
+ break;
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)", type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset+4, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)", type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+4, obj_length - 4,
+ "Data (%d bytes)", obj_length - 4);
+ break;
}
}
/*------------------------------------------------------------------------------
@@ -5052,8 +5138,8 @@ dissect_rsvp_association (proto_tree *ti, proto_tree *rsvp_object_tree,
*------------------------------------------------------------------------------*/
static void
dissect_rsvp_lsp_tunnel_if_id_tlv(proto_tree *rsvp_object_tree,
- tvbuff_t *tvb, int offset, int tlv_length,
- int subtree_type)
+ tvbuff_t *tvb, int offset, int tlv_length,
+ int subtree_type)
{
int tlv_off;
guint16 tlv_type;
@@ -5061,90 +5147,91 @@ dissect_rsvp_lsp_tunnel_if_id_tlv(proto_tree *rsvp_object_tree,
proto_tree *ti, *rsvp_lsp_tunnel_if_id_subtree;
for (tlv_off = 0; tlv_off < tlv_length; ) {
- tlv_type = tvb_get_ntohs(tvb, offset+tlv_off);
- tlv_len = tvb_get_ntohs(tvb, offset+tlv_off+2);
-
- if (tlv_len == 0 || tlv_off+tlv_len > tlv_length) {
- proto_tree_add_text(rsvp_object_tree, tvb, offset+tlv_off+2, 2,
- "Invalid length");
- return;
- }
- switch(tlv_type) {
- case 1:
- ti = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+tlv_off, tlv_len,
- "Unnumbered component link identifier: %u",
- tvb_get_ntohl(tvb, offset+tlv_off+4));
- rsvp_lsp_tunnel_if_id_subtree = proto_item_add_subtree(ti, subtree_type);
- proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off, 2,
- "Type: 1 (Unnumbered component link identifier)");
- proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off+2, 2,
- "Length: %u", tlv_len);
- proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off+4, 4,
- "Component link identifier: %u",
- tvb_get_ntohl(tvb, offset+tlv_off+4));
- break;
-
- case 2:
- ti = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+tlv_off, tlv_len,
- "IPv4 component link identifier: %s",
- tvb_ip_to_str(tvb, offset+tlv_off+4));
- rsvp_lsp_tunnel_if_id_subtree = proto_item_add_subtree(ti, subtree_type);
- proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off, 2,
- "Type: 2 (IPv4 component link identifier)");
- proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off+2, 2,
- "Length: %u", tlv_len);
- proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off+4, 4,
- "Component link identifier: %s",
- tvb_ip_to_str(tvb, offset+tlv_off+4));
- break;
-
- case 32769: /* oif-p0040.002.09 demo spec */
- ti = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+tlv_off, tlv_len,
- "Targeted client layer: ");
- rsvp_lsp_tunnel_if_id_subtree = proto_item_add_subtree(ti, subtree_type);
- proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off, 2,
- "Type: 32769 (Targeted client layer)");
- proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off+2, 2,
- "Length: %u", tlv_len);
- proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off+4, 1,
- "LSP Encoding Type: %s",
- rval_to_str(tvb_get_guint8(tvb,offset+tlv_off+4),
- gmpls_lsp_enc_rvals, "Unknown (%d)"));
- proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off+5, 1,
- "Switching Type: %s",
- rval_to_str(tvb_get_guint8(tvb,offset+tlv_off+5),
- gmpls_switching_type_rvals, "Unknown (%d)"));
- proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off+6, 1,
- "Signal Type: %s",
- val_to_str(tvb_get_guint8(tvb,offset+tlv_off+6),
- gmpls_sonet_signal_type_str, "Unknown (%d)"));
- proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off+8, 8,
- "Sub Interface/Connection ID: %" G_GINT64_MODIFIER "u (0x%s)",
- tvb_get_ntoh64(tvb, offset+tlv_off+8),
- tvb_bytes_to_str(tvb, offset+tlv_off+8, 8));
- proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off+16, 4,
- "SC PC ID: %s",
- tvb_ip_to_str(tvb, offset+tlv_off+16));
- proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off+20, 4,
- "SC PC SCN Address: %s",
- tvb_ip_to_str(tvb, offset+tlv_off+20));
- proto_item_append_text(ti, "LSP Encoding=%s, Switching Type=%s, Signal Type=%s",
- rval_to_str(tvb_get_guint8(tvb,offset+tlv_off+4),
- gmpls_lsp_enc_rvals, "Unknown (%d)"),
- rval_to_str(tvb_get_guint8(tvb,offset+tlv_off+5),
- gmpls_switching_type_rvals, "Unknown (%d)"),
- val_to_str(tvb_get_guint8(tvb,offset+tlv_off+6),
- gmpls_sonet_signal_type_str, "Unknown (%d)"));
- break;
-
- default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+tlv_off, 2,
- "Unknown TLV: %u", tlv_type);
- }
- tlv_off += tlv_len;
+ tlv_type = tvb_get_ntohs(tvb, offset+tlv_off);
+ tlv_len = tvb_get_ntohs(tvb, offset+tlv_off+2);
+
+ if ((tlv_len == 0) || ((tlv_off+tlv_len) > tlv_length)) {
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+tlv_off+2, 2,
+ "Invalid length");
+ return;
+ }
+ switch(tlv_type) {
+ case 1:
+ ti = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset+tlv_off, tlv_len,
+ "Unnumbered component link identifier: %u",
+ tvb_get_ntohl(tvb, offset+tlv_off+4));
+ rsvp_lsp_tunnel_if_id_subtree = proto_item_add_subtree(ti, subtree_type);
+ proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off, 2,
+ "Type: 1 (Unnumbered component link identifier)");
+ proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off+2, 2,
+ "Length: %u", tlv_len);
+ proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off+4, 4,
+ "Component link identifier: %u",
+ tvb_get_ntohl(tvb, offset+tlv_off+4));
+ break;
+
+ case 2:
+ ti = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset+tlv_off, tlv_len,
+ "IPv4 component link identifier: %s",
+ tvb_ip_to_str(tvb, offset+tlv_off+4));
+ rsvp_lsp_tunnel_if_id_subtree = proto_item_add_subtree(ti, subtree_type);
+ proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off, 2,
+ "Type: 2 (IPv4 component link identifier)");
+ proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off+2, 2,
+ "Length: %u", tlv_len);
+ proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off+4, 4,
+ "Component link identifier: %s",
+ tvb_ip_to_str(tvb, offset+tlv_off+4));
+ break;
+
+ case 32769: /* oif-p0040.002.09 demo spec */
+ ti = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset+tlv_off, tlv_len,
+ "Targeted client layer: ");
+ rsvp_lsp_tunnel_if_id_subtree = proto_item_add_subtree(ti, subtree_type);
+ proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off, 2,
+ "Type: 32769 (Targeted client layer)");
+ proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off+2, 2,
+ "Length: %u", tlv_len);
+ proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off+4, 1,
+ "LSP Encoding Type: %s",
+ rval_to_str(tvb_get_guint8(tvb,offset+tlv_off+4),
+ gmpls_lsp_enc_rvals, "Unknown (%d)"));
+ proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off+5, 1,
+ "Switching Type: %s",
+ rval_to_str(tvb_get_guint8(tvb,offset+tlv_off+5),
+ gmpls_switching_type_rvals, "Unknown (%d)"));
+ proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off+6, 1,
+ "Signal Type: %s",
+ val_to_str_ext(tvb_get_guint8(tvb,offset+tlv_off+6),
+ &gmpls_sonet_signal_type_str_ext, "Unknown (%d)"));
+ proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off+8, 8,
+ "Sub Interface/Connection ID: %" G_GINT64_MODIFIER "u (0x%s)",
+ tvb_get_ntoh64(tvb, offset+tlv_off+8),
+ tvb_bytes_to_str(tvb, offset+tlv_off+8, 8));
+ proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off+16, 4,
+ "SC PC ID: %s",
+ tvb_ip_to_str(tvb, offset+tlv_off+16));
+ proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off+20, 4,
+ "SC PC SCN Address: %s",
+ tvb_ip_to_str(tvb, offset+tlv_off+20));
+ proto_item_append_text(ti, "LSP Encoding=%s, Switching Type=%s, Signal Type=%s",
+ rval_to_str(tvb_get_guint8(tvb,offset+tlv_off+4),
+ gmpls_lsp_enc_rvals, "Unknown (%d)"),
+ rval_to_str(tvb_get_guint8(tvb,offset+tlv_off+5),
+ gmpls_switching_type_rvals, "Unknown (%d)"),
+ val_to_str_ext(tvb_get_guint8(tvb,offset+tlv_off+6),
+ &gmpls_sonet_signal_type_str_ext, "Unknown (%d)"));
+ break;
+
+ default:
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+tlv_off, 2,
+ "Unknown TLV: %u", tlv_type);
+ break;
+ }
+ tlv_off += tlv_len;
}
}
@@ -5152,10 +5239,10 @@ dissect_rsvp_lsp_tunnel_if_id_tlv(proto_tree *rsvp_object_tree,
* LSP TUNNEL INTERFACE ID
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_lsp_tunnel_if_id (proto_tree *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_lsp_tunnel_if_id(proto_tree *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
guint8 action;
@@ -5170,94 +5257,94 @@ dissect_rsvp_lsp_tunnel_if_id (proto_tree *ti, proto_tree *rsvp_object_tree,
proto_item_set_text(ti, "LSP INTERFACE-ID: ");
switch(type) {
case 1:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 1 - Unnumbered interface");
- proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 4,
- "Router ID: %s",
- tvb_ip_to_str(tvb, offset+4));
- proto_tree_add_text(rsvp_object_tree, tvb, offset+8, 4,
- "Interface ID: %u", tvb_get_ntohl(tvb, offset+8));
- proto_item_set_text(ti, "LSP INTERFACE-ID: Unnumbered, Router-ID %s, Interface-ID %d",
- tvb_ip_to_str(tvb, offset+4),
- tvb_get_ntohl(tvb, offset+8));
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 1 - Unnumbered interface");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 4,
+ "Router ID: %s",
+ tvb_ip_to_str(tvb, offset+4));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+8, 4,
+ "Interface ID: %u", tvb_get_ntohl(tvb, offset+8));
+ proto_item_set_text(ti, "LSP INTERFACE-ID: Unnumbered, Router-ID %s, Interface-ID %d",
+ tvb_ip_to_str(tvb, offset+4),
+ tvb_get_ntohl(tvb, offset+8));
+ break;
case 2:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 2 - IPv4");
- proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 4,
- "IPv4 interface address: %s",
- tvb_ip_to_str(tvb, offset+4));
- proto_tree_add_text(rsvp_object_tree, tvb, offset+8, 4,
- "Target IGP instance: %s",
- tvb_ip_to_str(tvb, offset+8));
- proto_item_set_text(ti, "LSP INTERFACE-ID: IPv4, interface address %s,"
- "IGP instance %s",
- tvb_ip_to_str(tvb, offset+4),
- tvb_ip_to_str(tvb, offset+8));
- action = tvb_get_guint8(tvb, offset+12);
- action >>= 4;
- proto_tree_add_text(rsvp_object_tree, tvb, offset+12, 1, "Action: %d - %s",
- action,
- val_to_str(action, lsp_tunnel_if_id_action_str, "Unknown"));
- dissect_rsvp_lsp_tunnel_if_id_tlv(rsvp_object_tree, tvb, offset+16, obj_length-16,
- TREE(TT_LSP_TUNNEL_IF_ID_SUBTREE));
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 2 - IPv4");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 4,
+ "IPv4 interface address: %s",
+ tvb_ip_to_str(tvb, offset+4));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+8, 4,
+ "Target IGP instance: %s",
+ tvb_ip_to_str(tvb, offset+8));
+ proto_item_set_text(ti, "LSP INTERFACE-ID: IPv4, interface address %s,"
+ "IGP instance %s",
+ tvb_ip_to_str(tvb, offset+4),
+ tvb_ip_to_str(tvb, offset+8));
+ action = tvb_get_guint8(tvb, offset+12);
+ action >>= 4;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+12, 1, "Action: %d - %s",
+ action,
+ val_to_str_const(action, lsp_tunnel_if_id_action_str, "Unknown"));
+ dissect_rsvp_lsp_tunnel_if_id_tlv(rsvp_object_tree, tvb, offset+16, obj_length-16,
+ TREE(TT_LSP_TUNNEL_IF_ID_SUBTREE));
+ break;
case 3:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 3 - IPv6");
- proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 16,
- "IPv6 interface address: %s",
- tvb_ip6_to_str(tvb, offset+4));
- proto_tree_add_text(rsvp_object_tree, tvb, offset+20, 4,
- "Target IGP instance: %s",
- tvb_ip_to_str(tvb, offset+20));
- proto_item_set_text(ti, "LSP INTERFACE-ID: IPv6, interface address %s,"
- "IGP instance %s",
- tvb_ip6_to_str(tvb, offset+4),
- tvb_ip_to_str(tvb, offset+20));
- action = tvb_get_guint8(tvb, offset+24);
- action >>= 4;
- proto_tree_add_text(rsvp_object_tree, tvb, offset+24, 1, "Action: %d - %s",
- action,
- val_to_str(action, lsp_tunnel_if_id_action_str, "Unknown"));
- dissect_rsvp_lsp_tunnel_if_id_tlv(rsvp_object_tree, tvb, offset+28, obj_length-28,
- TREE(TT_LSP_TUNNEL_IF_ID_SUBTREE));
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 3 - IPv6");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 16,
+ "IPv6 interface address: %s",
+ tvb_ip6_to_str(tvb, offset+4));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+20, 4,
+ "Target IGP instance: %s",
+ tvb_ip_to_str(tvb, offset+20));
+ proto_item_set_text(ti, "LSP INTERFACE-ID: IPv6, interface address %s,"
+ "IGP instance %s",
+ tvb_ip6_to_str(tvb, offset+4),
+ tvb_ip_to_str(tvb, offset+20));
+ action = tvb_get_guint8(tvb, offset+24);
+ action >>= 4;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+24, 1, "Action: %d - %s",
+ action,
+ val_to_str_const(action, lsp_tunnel_if_id_action_str, "Unknown"));
+ dissect_rsvp_lsp_tunnel_if_id_tlv(rsvp_object_tree, tvb, offset+28, obj_length-28,
+ TREE(TT_LSP_TUNNEL_IF_ID_SUBTREE));
+ break;
case 4:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 4 - Unnumbered interface with target");
- proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 4,
- "Router ID: %s",
- tvb_ip_to_str(tvb, offset+4));
- proto_tree_add_text(rsvp_object_tree, tvb, offset+8, 4,
- "Interface ID: %u", tvb_get_ntohl(tvb, offset+8));
- proto_tree_add_text(rsvp_object_tree, tvb, offset+12, 4,
- "Target IGP instance: %s",
- tvb_ip_to_str(tvb, offset+12));
- proto_item_set_text(ti, "LSP INTERFACE-ID: Unnumbered with target, Router-ID %s,"
- " Interface-ID %d, IGP instance %s",
- tvb_ip_to_str(tvb, offset+4),
- tvb_get_ntohl(tvb, offset+8),
- tvb_ip_to_str(tvb, offset+12));
- action = tvb_get_guint8(tvb, offset+16);
- action >>= 4;
- proto_tree_add_text(rsvp_object_tree, tvb, offset+16, 1, "Action: %d - %s",
- action,
- val_to_str(action, lsp_tunnel_if_id_action_str, "Unknown"));
- dissect_rsvp_lsp_tunnel_if_id_tlv(rsvp_object_tree, tvb, offset+20, obj_length-20,
- TREE(TT_LSP_TUNNEL_IF_ID_SUBTREE));
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 4 - Unnumbered interface with target");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 4,
+ "Router ID: %s",
+ tvb_ip_to_str(tvb, offset+4));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+8, 4,
+ "Interface ID: %u", tvb_get_ntohl(tvb, offset+8));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+12, 4,
+ "Target IGP instance: %s",
+ tvb_ip_to_str(tvb, offset+12));
+ proto_item_set_text(ti, "LSP INTERFACE-ID: Unnumbered with target, Router-ID %s,"
+ " Interface-ID %d, IGP instance %s",
+ tvb_ip_to_str(tvb, offset+4),
+ tvb_get_ntohl(tvb, offset+8),
+ tvb_ip_to_str(tvb, offset+12));
+ action = tvb_get_guint8(tvb, offset+16);
+ action >>= 4;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+16, 1, "Action: %d - %s",
+ action,
+ val_to_str_const(action, lsp_tunnel_if_id_action_str, "Unknown"));
+ dissect_rsvp_lsp_tunnel_if_id_tlv(rsvp_object_tree, tvb, offset+20, obj_length-20,
+ TREE(TT_LSP_TUNNEL_IF_ID_SUBTREE));
+ break;
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)",
- type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset+4, obj_length-4,
- "Data (%d bytes)", obj_length-4);
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)",
+ type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+4, obj_length-4,
+ "Data (%d bytes)", obj_length-4);
+ break;
}
}
@@ -5265,42 +5352,43 @@ dissect_rsvp_lsp_tunnel_if_id (proto_tree *ti, proto_tree *rsvp_object_tree,
* NOTIFY REQUEST
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_notify_request (proto_item *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_notify_request(proto_item *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
int offset2 = offset + 4;
switch(type) {
case 1: {
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 1 - IPv4");
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 4,
- "Notify node address: %s",
- tvb_ip_to_str(tvb, offset2));
- proto_item_append_text(ti, ": Notify node: %s",
- tvb_ip_to_str(tvb, offset2));
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 1 - IPv4");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 4,
+ "Notify node address: %s",
+ tvb_ip_to_str(tvb, offset2));
+ proto_item_append_text(ti, ": Notify node: %s",
+ tvb_ip_to_str(tvb, offset2));
+ break;
}
case 2: {
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 2 - IPv6");
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 16,
- "Notify node address: %s",
- tvb_ip6_to_str(tvb, offset2));
- proto_item_append_text(ti, ": Notify node: %s",
- tvb_ip6_to_str(tvb, offset2));
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 2 - IPv6");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 16,
+ "Notify node address: %s",
+ tvb_ip6_to_str(tvb, offset2));
+ proto_item_append_text(ti, ": Notify node: %s",
+ tvb_ip6_to_str(tvb, offset2));
+ break;
}
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)",
- type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)",
+ type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
+ "Data (%d bytes)", obj_length - 4);
+ break;
}
}
@@ -5308,311 +5396,311 @@ dissect_rsvp_notify_request (proto_item *ti, proto_tree *rsvp_object_tree,
* GENERALIZED UNI
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_gen_uni (proto_tree *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type,
- rsvp_conversation_info *rsvph)
+dissect_rsvp_gen_uni(proto_tree *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type,
+ rsvp_conversation_info *rsvph)
{
- int offset2 = offset + 4;
- int mylen, i, j, k, l, m;
+ int offset2 = offset + 4;
+ int mylen, i, j, k, l, m;
proto_item *ti2;
proto_tree *rsvp_gen_uni_subtree, *rsvp_session_subtree, *rsvp_template_subtree;
- int s_len, s_class, s_type, sobj_len, nsap_len;
- int offset3;
+ int s_len, s_class, s_type, sobj_len, nsap_len;
+ int offset3;
proto_item_set_text(ti, "GENERALIZED UNI: ");
mylen = obj_length - 4;
switch(type) {
case 1: {
- const char *c;
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 1");
- for (i=1, l = 0; l < mylen; i++) {
- sobj_len = tvb_get_ntohs(tvb, offset2+l);
- j = tvb_get_guint8(tvb, offset2+l+2);
- switch(j) {
- case 1:
- case 2: /* We do source and destination TNA together */
- c = (j==1) ? "Source" : "Destination";
- k = tvb_get_guint8(tvb, offset2+l+3);
- switch(k) {
- case 1:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2+l, 8,
- "%s IPv4 TNA: %s", c,
- tvb_ip_to_str(tvb, offset2+l+4));
- rsvp_gen_uni_subtree =
- proto_item_add_subtree(ti2, TREE(TT_GEN_UNI_SUBOBJ));
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+2, 1,
- "Class: %d (%s)", j, c);
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+3, 1,
- "Type: 1 (IPv4)");
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l, 2,
- "Length: %u", sobj_len);
- if (j==1)
- proto_tree_add_item(rsvp_gen_uni_subtree, hf_rsvp_filter[RSVPF_GUNI_SRC_IPV4],
- tvb, offset2+l+4, 4, ENC_BIG_ENDIAN);
- else
- proto_tree_add_item(rsvp_gen_uni_subtree, hf_rsvp_filter[RSVPF_GUNI_DST_IPV4],
- tvb, offset2+l+4, 4, ENC_BIG_ENDIAN);
- if (i < 4) {
- proto_item_append_text(ti, "%s IPv4 TNA: %s", c,
- tvb_ip_to_str(tvb, offset2+l+4));
- }
- break;
-
- case 2:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2+l, 20,
- "%s IPv6 TNA:", c);
- rsvp_gen_uni_subtree =
- proto_item_add_subtree(ti2, TREE(TT_GEN_UNI_SUBOBJ));
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+2, 1,
- "Class: %d (%s)", j, c);
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+3, 1,
- "Type: 2 (IPv6)");
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l, 2,
- "Length: %u", sobj_len);
- if (j==1)
- proto_tree_add_item(rsvp_gen_uni_subtree, hf_rsvp_filter[RSVPF_GUNI_SRC_IPV6],
- tvb, offset2+l+4, 16, ENC_NA);
- else
- proto_tree_add_item(rsvp_gen_uni_subtree, hf_rsvp_filter[RSVPF_GUNI_DST_IPV6],
- tvb, offset2+l+4, 16, ENC_NA);
- if (i < 4) {
- proto_item_append_text(ti, "%s IPv6 TNA: %s", c,
- tvb_ip6_to_str(tvb, offset2+l+4));
- }
- break;
-
- case 3:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2+l, tvb_get_ntohs(tvb, offset2+l),
- "%s NSAP TNA: ", c);
- rsvp_gen_uni_subtree =
- proto_item_add_subtree(ti2, TREE(TT_GEN_UNI_SUBOBJ));
- nsap_len = tvb_get_guint8(tvb, offset2+l+4);
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+2, 1,
- "Class: %d (%s)", j, c);
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+3, 1,
- "Type: 3 (NSAP)");
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l, 2,
- "Length: %u", sobj_len);
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+4, 1,
- "NSAP Length: %u", nsap_len);
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+5,
- sobj_len-4,
- "NSAP address: %s",
- print_nsap_net(tvb_get_ptr(tvb, offset2+l+5, nsap_len), nsap_len));
- if (i < 4) {
- proto_item_append_text(ti, "%s NSAP TNA: %s", c,
- print_nsap_net(tvb_get_ptr(tvb, offset2+l+5, nsap_len), nsap_len));
- }
- break;
-
- default:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2+l, tvb_get_ntohs(tvb, offset2+l),
- "%s UNKNOWN TNA", c);
- rsvp_gen_uni_subtree =
- proto_item_add_subtree(ti2, TREE(TT_GEN_UNI_SUBOBJ));
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+2, 1,
- "Class: %d (%s)", j, c);
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+3, 1,
- "Type: %d (UNKNOWN)", j);
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l, 2,
- "Length: %u", sobj_len);
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+4,
- sobj_len-4,
- "Data");
- if (i < 4) {
- proto_item_append_text(ti, "%s UNKNOWN", c);
- }
- break;
- }
- break;
-
- case 3: /* Diversity subobject */
- k = tvb_get_guint8(tvb, offset2+l+3);
- switch(k) {
- default:
- case 1:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2+l, tvb_get_ntohs(tvb, offset2+l),
- "Diversity Subobject");
- rsvp_gen_uni_subtree =
- proto_item_add_subtree(ti2, TREE(TT_GEN_UNI_SUBOBJ));
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+2, 1,
- "Class: %d (Diversity)", j);
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+3, 1,
- "Type: %d", tvb_get_guint8(tvb, offset2+l+3));
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l, 2,
- "Length: %u", sobj_len);
- m = tvb_get_guint8(tvb, offset2+l+4) >> 4;
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+4, 1,
- "Diversity: %d - %s", m,
- val_to_str(m, ouni_guni_diversity_str, "Unknown"));
- s_len = tvb_get_ntohs(tvb, offset2+l+8);
- s_class = tvb_get_guint8(tvb, offset2+l+10);
- s_type = tvb_get_guint8(tvb, offset2+l+11);
- ti2 = proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+8,
- s_len, "Session");
- rsvp_session_subtree =
- proto_item_add_subtree(ti2, TREE(rsvp_class_to_tree_type(s_class)));
- if (s_len < 4) {
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+l+8, 2,
- "Length: %u (bogus, must be >= 4)", s_len);
- break;
- }
- proto_tree_add_text(rsvp_session_subtree, tvb, offset2+l+8, 2,
- "Length: %u", s_len);
- proto_tree_add_uint(rsvp_session_subtree, hf_rsvp_filter[RSVPF_OBJECT], tvb,
- offset2+8+l+10, 1, s_class);
- dissect_rsvp_session(ti2, rsvp_session_subtree, tvb, offset2+l+8,
- s_len, s_class, s_type, rsvph);
- offset3 = offset2 + s_len;
- s_len = tvb_get_ntohs(tvb, offset3+l+8);
- s_class = tvb_get_guint8(tvb, offset3+l+10);
- s_type = tvb_get_guint8(tvb, offset3+l+11);
- ti2 = proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset3+l+8,
- s_len, "Template");
- rsvp_template_subtree =
- proto_item_add_subtree(ti2, TREE(rsvp_class_to_tree_type(s_class)));
- if (s_len < 4) {
- proto_tree_add_text(rsvp_object_tree, tvb, offset3+l+8, 2,
- "Length: %u (bogus, must be >= 4)", s_len);
- break;
- }
- proto_tree_add_text(rsvp_template_subtree, tvb, offset3+l+8, 2,
- "Length: %u", s_len);
- proto_tree_add_uint(rsvp_template_subtree, hf_rsvp_filter[RSVPF_OBJECT], tvb,
- offset3+8+l+10, 1, s_class);
- dissect_rsvp_template_filter(ti2, rsvp_template_subtree, tvb, offset3+l+8,
- s_len, s_class, s_type, rsvph);
-
- if (i < 4) {
- proto_item_append_text(ti, "Diversity");
- }
- break;
-
- }
- break;
-
- case 4: /* Egress Label */
- k = tvb_get_guint8(tvb, offset2+l+3);
- if (k == 1) /* Egress label sub-type */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2+l, sobj_len,
- "Egress Label Subobject");
- else if (k == 2) /* SPC_label sub-type (see G.7713.2) */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2+l, sobj_len,
- "SPC Label Subobject");
- else
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2+l, sobj_len,
- "Unknown Label Subobject");
- rsvp_gen_uni_subtree = proto_item_add_subtree(ti2, TREE(TT_GEN_UNI_SUBOBJ));
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+2, 1,
- "Class: %d (Egress/SPC Label)", j);
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+3, 1,
- "Type: %d", k);
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l, 2,
- "Length: %u", sobj_len);
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+4, 1,
- "Direction: %s",
- decode_boolean_bitfield(
- tvb_get_guint8(tvb, offset2+l+4), 0x80, 8,
- "U: 1 - Upstream label/port ID",
- "U: 0 - Downstream label/port ID"));
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+7, 1,
- "Label type: %u", tvb_get_guint8(tvb, offset2+l+7));
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+8, 4,
- "Logical Port ID: %u", tvb_get_ntohl(tvb, offset2+l+8));
- proto_item_append_text(ti2, ": %s, Label type %d, Port ID %d, Label ",
- tvb_get_guint8(tvb, offset2+l+4) & 0x80 ?
- "Upstream" : "Downstream",
- tvb_get_guint8(tvb, offset2+l+7),
- tvb_get_ntohl(tvb, offset2+l+8));
- for (j=12; j < sobj_len; j+=4) {
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+j, 4,
- "Label: %u", tvb_get_ntohl(tvb, offset2+l+j));
- proto_item_append_text(ti2, "%u ", tvb_get_ntohl(tvb, offset2+l+j));
- }
- if (i < 4) {
- if (k == 1)
- proto_item_append_text(ti, "Egress Label");
+ const char *c;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 1");
+ for (i=1, l = 0; l < mylen; i++) {
+ sobj_len = tvb_get_ntohs(tvb, offset2+l);
+ j = tvb_get_guint8(tvb, offset2+l+2);
+ switch(j) {
+ case 1:
+ case 2: /* We do source and destination TNA together */
+ c = (j==1) ? "Source" : "Destination";
+ k = tvb_get_guint8(tvb, offset2+l+3);
+ switch(k) {
+ case 1:
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset2+l, 8,
+ "%s IPv4 TNA: %s", c,
+ tvb_ip_to_str(tvb, offset2+l+4));
+ rsvp_gen_uni_subtree =
+ proto_item_add_subtree(ti2, TREE(TT_GEN_UNI_SUBOBJ));
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+2, 1,
+ "Class: %d (%s)", j, c);
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+3, 1,
+ "Type: 1 (IPv4)");
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l, 2,
+ "Length: %u", sobj_len);
+ if (j==1)
+ proto_tree_add_item(rsvp_gen_uni_subtree, hf_rsvp_filter[RSVPF_GUNI_SRC_IPV4],
+ tvb, offset2+l+4, 4, ENC_BIG_ENDIAN);
+ else
+ proto_tree_add_item(rsvp_gen_uni_subtree, hf_rsvp_filter[RSVPF_GUNI_DST_IPV4],
+ tvb, offset2+l+4, 4, ENC_BIG_ENDIAN);
+ if (i < 4) {
+ proto_item_append_text(ti, "%s IPv4 TNA: %s", c,
+ tvb_ip_to_str(tvb, offset2+l+4));
+ }
+ break;
+
+ case 2:
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset2+l, 20,
+ "%s IPv6 TNA:", c);
+ rsvp_gen_uni_subtree =
+ proto_item_add_subtree(ti2, TREE(TT_GEN_UNI_SUBOBJ));
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+2, 1,
+ "Class: %d (%s)", j, c);
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+3, 1,
+ "Type: 2 (IPv6)");
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l, 2,
+ "Length: %u", sobj_len);
+ if (j==1)
+ proto_tree_add_item(rsvp_gen_uni_subtree, hf_rsvp_filter[RSVPF_GUNI_SRC_IPV6],
+ tvb, offset2+l+4, 16, ENC_NA);
+ else
+ proto_tree_add_item(rsvp_gen_uni_subtree, hf_rsvp_filter[RSVPF_GUNI_DST_IPV6],
+ tvb, offset2+l+4, 16, ENC_NA);
+ if (i < 4) {
+ proto_item_append_text(ti, "%s IPv6 TNA: %s", c,
+ tvb_ip6_to_str(tvb, offset2+l+4));
+ }
+ break;
+
+ case 3:
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset2+l, tvb_get_ntohs(tvb, offset2+l),
+ "%s NSAP TNA: ", c);
+ rsvp_gen_uni_subtree =
+ proto_item_add_subtree(ti2, TREE(TT_GEN_UNI_SUBOBJ));
+ nsap_len = tvb_get_guint8(tvb, offset2+l+4);
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+2, 1,
+ "Class: %d (%s)", j, c);
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+3, 1,
+ "Type: 3 (NSAP)");
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l, 2,
+ "Length: %u", sobj_len);
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+4, 1,
+ "NSAP Length: %u", nsap_len);
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+5,
+ sobj_len-4,
+ "NSAP address: %s",
+ print_nsap_net(tvb_get_ptr(tvb, offset2+l+5, nsap_len), nsap_len));
+ if (i < 4) {
+ proto_item_append_text(ti, "%s NSAP TNA: %s", c,
+ print_nsap_net(tvb_get_ptr(tvb, offset2+l+5, nsap_len), nsap_len));
+ }
+ break;
+
+ default:
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset2+l, tvb_get_ntohs(tvb, offset2+l),
+ "%s UNKNOWN TNA", c);
+ rsvp_gen_uni_subtree =
+ proto_item_add_subtree(ti2, TREE(TT_GEN_UNI_SUBOBJ));
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+2, 1,
+ "Class: %d (%s)", j, c);
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+3, 1,
+ "Type: %d (UNKNOWN)", j);
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l, 2,
+ "Length: %u", sobj_len);
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+4,
+ sobj_len-4,
+ "Data");
+ if (i < 4) {
+ proto_item_append_text(ti, "%s UNKNOWN", c);
+ }
+ break;
+ }
+ break;
+
+ case 3: /* Diversity subobject */
+ k = tvb_get_guint8(tvb, offset2+l+3);
+ switch(k) {
+ default:
+ case 1:
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset2+l, tvb_get_ntohs(tvb, offset2+l),
+ "Diversity Subobject");
+ rsvp_gen_uni_subtree =
+ proto_item_add_subtree(ti2, TREE(TT_GEN_UNI_SUBOBJ));
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+2, 1,
+ "Class: %d (Diversity)", j);
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+3, 1,
+ "Type: %d", tvb_get_guint8(tvb, offset2+l+3));
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l, 2,
+ "Length: %u", sobj_len);
+ m = tvb_get_guint8(tvb, offset2+l+4) >> 4;
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+4, 1,
+ "Diversity: %d - %s", m,
+ val_to_str_const(m, ouni_guni_diversity_str, "Unknown"));
+ s_len = tvb_get_ntohs(tvb, offset2+l+8);
+ s_class = tvb_get_guint8(tvb, offset2+l+10);
+ s_type = tvb_get_guint8(tvb, offset2+l+11);
+ ti2 = proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+8,
+ s_len, "Session");
+ rsvp_session_subtree =
+ proto_item_add_subtree(ti2, TREE(rsvp_class_to_tree_type(s_class)));
+ if (s_len < 4) {
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+l+8, 2,
+ "Length: %u (bogus, must be >= 4)", s_len);
+ break;
+ }
+ proto_tree_add_text(rsvp_session_subtree, tvb, offset2+l+8, 2,
+ "Length: %u", s_len);
+ proto_tree_add_uint(rsvp_session_subtree, hf_rsvp_filter[RSVPF_OBJECT], tvb,
+ offset2+8+l+10, 1, s_class);
+ dissect_rsvp_session(ti2, rsvp_session_subtree, tvb, offset2+l+8,
+ s_len, s_class, s_type, rsvph);
+ offset3 = offset2 + s_len;
+ s_len = tvb_get_ntohs(tvb, offset3+l+8);
+ s_class = tvb_get_guint8(tvb, offset3+l+10);
+ s_type = tvb_get_guint8(tvb, offset3+l+11);
+ ti2 = proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset3+l+8,
+ s_len, "Template");
+ rsvp_template_subtree =
+ proto_item_add_subtree(ti2, TREE(rsvp_class_to_tree_type(s_class)));
+ if (s_len < 4) {
+ proto_tree_add_text(rsvp_object_tree, tvb, offset3+l+8, 2,
+ "Length: %u (bogus, must be >= 4)", s_len);
+ break;
+ }
+ proto_tree_add_text(rsvp_template_subtree, tvb, offset3+l+8, 2,
+ "Length: %u", s_len);
+ proto_tree_add_uint(rsvp_template_subtree, hf_rsvp_filter[RSVPF_OBJECT], tvb,
+ offset3+8+l+10, 1, s_class);
+ dissect_rsvp_template_filter(ti2, rsvp_template_subtree, tvb, offset3+l+8,
+ s_len, s_class, s_type, rsvph);
+
+ if (i < 4) {
+ proto_item_append_text(ti, "Diversity");
+ }
+ break;
+
+ }
+ break;
+
+ case 4: /* Egress Label */
+ k = tvb_get_guint8(tvb, offset2+l+3);
+ if (k == 1) /* Egress label sub-type */
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset2+l, sobj_len,
+ "Egress Label Subobject");
+ else if (k == 2) /* SPC_label sub-type (see G.7713.2) */
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset2+l, sobj_len,
+ "SPC Label Subobject");
+ else
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset2+l, sobj_len,
+ "Unknown Label Subobject");
+ rsvp_gen_uni_subtree = proto_item_add_subtree(ti2, TREE(TT_GEN_UNI_SUBOBJ));
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+2, 1,
+ "Class: %d (Egress/SPC Label)", j);
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+3, 1,
+ "Type: %d", k);
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l, 2,
+ "Length: %u", sobj_len);
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+4, 1,
+ "Direction: %s",
+ decode_boolean_bitfield(
+ tvb_get_guint8(tvb, offset2+l+4), 0x80, 8,
+ "U: 1 - Upstream label/port ID",
+ "U: 0 - Downstream label/port ID"));
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+7, 1,
+ "Label type: %u", tvb_get_guint8(tvb, offset2+l+7));
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+8, 4,
+ "Logical Port ID: %u", tvb_get_ntohl(tvb, offset2+l+8));
+ proto_item_append_text(ti2, ": %s, Label type %d, Port ID %d, Label ",
+ tvb_get_guint8(tvb, offset2+l+4) & 0x80 ?
+ "Upstream" : "Downstream",
+ tvb_get_guint8(tvb, offset2+l+7),
+ tvb_get_ntohl(tvb, offset2+l+8));
+ for (j=12; j < sobj_len; j+=4) {
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+j, 4,
+ "Label: %u", tvb_get_ntohl(tvb, offset2+l+j));
+ proto_item_append_text(ti2, "%u ", tvb_get_ntohl(tvb, offset2+l+j));
+ }
+ if (i < 4) {
+ if (k == 1)
+ proto_item_append_text(ti, "Egress Label");
else if (k == 2)
- proto_item_append_text(ti, "SPC Label");
- }
- break;
-
- case 5: /* Service Level */
- k = tvb_get_guint8(tvb, offset2+l+3);
- switch(k) {
- default:
- case 1:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2+l, sobj_len,
- "Service Level Subobject");
- rsvp_gen_uni_subtree =
- proto_item_add_subtree(ti2, TREE(TT_GEN_UNI_SUBOBJ));
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+2, 1,
- "Class: %d (Service Level)", j);
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+3, 1,
- "Type: %d", tvb_get_guint8(tvb, offset2+l+3));
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l, 2,
- "Length: %u", sobj_len);
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+4, 1,
- "Service Level: %u", tvb_get_guint8(tvb, offset2+l+4));
- proto_item_append_text(ti2, ": %u", tvb_get_guint8(tvb, offset2+l+4));
- if (i < 4) {
- proto_item_append_text(ti, "Service Level %d", tvb_get_guint8(tvb, offset2+l+4));
- }
- break;
- }
- break;
-
- default: /* Unknown subobject */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2+l, sobj_len,
- "Unknown subobject: %u",
- j);
- rsvp_gen_uni_subtree =
- proto_item_add_subtree(ti2, TREE(TT_GEN_UNI_SUBOBJ));
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l, 1,
- "Type: %u (Unknown)", j);
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+1, 1,
- "Length: %u",
- tvb_get_guint8(tvb, offset2+l+1));
-
- }
-
- if (tvb_get_guint8(tvb, offset2+l+1) < 1) {
- proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+1, 1,
- "Invalid length: %u", tvb_get_guint8(tvb, offset2+l+1));
- return;
- }
- l += tvb_get_guint8(tvb, offset2+l+1);
- if (l < mylen) {
- if (i < 4)
- proto_item_append_text(ti, ", ");
- else if (i==4)
- proto_item_append_text(ti, "...");
- }
- }
- break;
+ proto_item_append_text(ti, "SPC Label");
+ }
+ break;
+
+ case 5: /* Service Level */
+ k = tvb_get_guint8(tvb, offset2+l+3);
+ switch(k) {
+ default:
+ case 1:
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset2+l, sobj_len,
+ "Service Level Subobject");
+ rsvp_gen_uni_subtree =
+ proto_item_add_subtree(ti2, TREE(TT_GEN_UNI_SUBOBJ));
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+2, 1,
+ "Class: %d (Service Level)", j);
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+3, 1,
+ "Type: %d", tvb_get_guint8(tvb, offset2+l+3));
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l, 2,
+ "Length: %u", sobj_len);
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+4, 1,
+ "Service Level: %u", tvb_get_guint8(tvb, offset2+l+4));
+ proto_item_append_text(ti2, ": %u", tvb_get_guint8(tvb, offset2+l+4));
+ if (i < 4) {
+ proto_item_append_text(ti, "Service Level %d", tvb_get_guint8(tvb, offset2+l+4));
+ }
+ break;
+ }
+ break;
+
+ default: /* Unknown subobject */
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ offset2+l, sobj_len,
+ "Unknown subobject: %u",
+ j);
+ rsvp_gen_uni_subtree =
+ proto_item_add_subtree(ti2, TREE(TT_GEN_UNI_SUBOBJ));
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l, 1,
+ "Type: %u (Unknown)", j);
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+1, 1,
+ "Length: %u",
+ tvb_get_guint8(tvb, offset2+l+1));
+ break;
+ }
+
+ if (tvb_get_guint8(tvb, offset2+l+1) < 1) {
+ proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+1, 1,
+ "Invalid length: %u", tvb_get_guint8(tvb, offset2+l+1));
+ return;
+ }
+ l += tvb_get_guint8(tvb, offset2+l+1);
+ if (l < mylen) {
+ if (i < 4)
+ proto_item_append_text(ti, ", ");
+ else if (i==4)
+ proto_item_append_text(ti, "...");
+ }
+ }
+ break;
}
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)",
- type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, mylen,
- "Data (%d bytes)", mylen);
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)",
+ type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, mylen,
+ "Data (%d bytes)", mylen);
+ break;
}
}
@@ -5620,15 +5708,15 @@ dissect_rsvp_gen_uni (proto_tree *ti, proto_tree *rsvp_object_tree,
* CALL_ID
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_call_id (proto_tree *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int c_type)
+dissect_rsvp_call_id(proto_tree *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int c_type)
{
- int type = 0;
+ int type = 0;
const char *str;
- int offset2 = offset + 4;
- int offset3, offset4, len;
+ int offset2 = offset + 4;
+ int offset3, offset4, len;
static const value_string address_type_vals[] = {
{ 1, "1 (IPv4)"},
@@ -5638,6 +5726,7 @@ dissect_rsvp_call_id (proto_tree *ti, proto_tree *rsvp_object_tree,
{ 0x7f, "0x7f (Vendor-defined)"},
{ 0, NULL}
};
+ static value_string_ext address_type_vals_ext = VALUE_STRING_EXT_INIT(address_type_vals);
proto_item_set_text(ti, "CALL-ID: ");
switch(c_type) {
@@ -5651,93 +5740,94 @@ dissect_rsvp_call_id (proto_tree *ti, proto_tree *rsvp_object_tree,
break;
case 1:
case 2:
- type = tvb_get_guint8 (tvb, offset2);
- if (c_type == 1) {
+ type = tvb_get_guint8 (tvb, offset2);
+ if (c_type == 1) {
offset3 = offset2 + 4;
len = obj_length - 16;
proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
"C-type: 1 (operator specific)");
proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1, "Address type: %s",
- val_to_str(type, address_type_vals, "Unknown (%u)"));
+ val_to_str_ext(type, &address_type_vals_ext, "Unknown (%u)"));
proto_tree_add_text(rsvp_object_tree, tvb, offset2+1, 3, "Reserved: %u",
tvb_get_ntoh24(tvb, offset2+1));
proto_item_append_text(ti, "Operator-Specific. Addr Type: %s. ",
- val_to_str(type, address_type_vals, "Unknown (%u)"));
- }
- else {
+ val_to_str_ext(type, &address_type_vals_ext, "Unknown (%u)"));
+ }
+ else {
offset3 = offset2 + 16;
len = obj_length - 28;
proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
"C-type: 2 (globally unique)");
proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1, "Address type: %s",
- val_to_str(type, address_type_vals, "Unknown (%u)"));
+ val_to_str_ext(type, &address_type_vals_ext, "Unknown (%u)"));
str = tvb_get_ephemeral_string (tvb, offset2 + 1, 3);
proto_tree_add_text(rsvp_object_tree, tvb, offset2 + 1, 3,
"International Segment: %s", str);
proto_item_append_text(ti, "Globally-Unique. Addr Type: %s. Intl Segment: %s. ",
- val_to_str(type, address_type_vals, "Unknown (%u)"), str);
+ val_to_str_ext(type, &address_type_vals_ext, "Unknown (%u)"), str);
str = tvb_get_ephemeral_string (tvb, offset2 + 4, 12);
proto_tree_add_text(rsvp_object_tree, tvb, offset2 + 4, 12,
"National Segment: %s", str);
proto_item_append_text(ti, "Natl Segment: %s. ", str);
- }
+ }
- switch(type) {
- case 1:
+ switch(type) {
+ case 1:
offset4 = offset3 + 4;
str = tvb_ip_to_str(tvb, offset3);
proto_tree_add_item(rsvp_object_tree, hf_rsvp_filter[RSVPF_CALL_ID_SRC_ADDR_IPV4],
tvb, offset3, 4, ENC_BIG_ENDIAN);
break;
- case 2:
+ case 2:
offset4 = offset3 + 16;
str = tvb_ip6_to_str(tvb, offset3);
proto_tree_add_item(rsvp_object_tree, hf_rsvp_filter[RSVPF_CALL_ID_SRC_ADDR_IPV6],
tvb, offset3, 16, ENC_NA);
break;
- case 3:
+ case 3:
offset4 = offset3 + 20;
str = print_nsap_net(tvb_get_ptr(tvb, offset3, 20), 20);
proto_tree_add_text(rsvp_object_tree, tvb, offset3, 20,
"Source Transport Network addr: %s", str);
break;
- case 4:
+ case 4:
offset4 = offset3 + 6;
str = tvb_ether_to_str(tvb, offset3);
proto_tree_add_text(rsvp_object_tree, tvb, offset3, 6,
"Source Transport Network addr: %s", str);
break;
- case 0x7F:
+ case 0x7F:
offset4 = offset3 + len;
str = tvb_bytes_to_str(tvb, offset3, len);
proto_tree_add_text(rsvp_object_tree, tvb, offset3, len,
"Source Transport Network addr: %s", str);
break;
- default:
+ default:
offset4 = offset3 + len;
str = "???";
proto_tree_add_text(rsvp_object_tree, tvb, offset3, len, "Unknown Transport Network type: %d",
type);
- }
+ break;
+ }
- proto_item_append_text(ti, "Src: %s. ", str);
- proto_tree_add_text(rsvp_object_tree, tvb, offset4, 8, "Local Identifier: %s",
- tvb_bytes_to_str(tvb, offset4, 8));
- proto_item_append_text(ti, "Local ID: %s. ", tvb_bytes_to_str(tvb, offset4, 8));
- break;
+ proto_item_append_text(ti, "Src: %s. ", str);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset4, 8, "Local Identifier: %s",
+ tvb_bytes_to_str(tvb, offset4, 8));
+ proto_item_append_text(ti, "Local ID: %s. ", tvb_bytes_to_str(tvb, offset4, 8));
+ break;
default:
- proto_item_append_text(ti, " Unknown");
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)", c_type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length-4,
- "Data (%d bytes)", obj_length-4);
- break;
+ proto_item_append_text(ti, " Unknown");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)", c_type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length-4,
+ "Data (%d bytes)", obj_length-4);
+ break;
}
}
@@ -5745,35 +5835,35 @@ dissect_rsvp_call_id (proto_tree *ti, proto_tree *rsvp_object_tree,
* RESTART CAPABILITY
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_restart_cap (proto_tree *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_restart_cap(proto_tree *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
int offset2 = offset + 4;
proto_item_set_text(ti, "RESTART CAPABILITY: ");
switch(type) {
case 1:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 1");
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 4,
- "Restart Time: %d ms",
- tvb_get_ntohl(tvb, offset2));
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+4, 4,
- "Recovery Time: %d ms",
- tvb_get_ntohl(tvb, offset2+4));
- proto_item_append_text(ti, "Restart Time: %d ms. Recovery Time: %d ms.",
- tvb_get_ntohl(tvb, offset2), tvb_get_ntohl(tvb, offset2+4));
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 1");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 4,
+ "Restart Time: %d ms",
+ tvb_get_ntohl(tvb, offset2));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+4, 4,
+ "Recovery Time: %d ms",
+ tvb_get_ntohl(tvb, offset2+4));
+ proto_item_append_text(ti, "Restart Time: %d ms. Recovery Time: %d ms.",
+ tvb_get_ntohl(tvb, offset2), tvb_get_ntohl(tvb, offset2+4));
+ break;
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)",
- type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)",
+ type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
+ "Data (%d bytes)", obj_length - 4);
+ break;
}
}
@@ -5781,215 +5871,215 @@ dissect_rsvp_restart_cap (proto_tree *ti, proto_tree *rsvp_object_tree,
* PROTECTION INFORMATION
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_protection_info (proto_tree *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_protection_info(proto_tree *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
- guint8 flags1, flags2, lsp_flags, link_flags, seg_flags;
+ guint8 flags1, flags2, lsp_flags, link_flags, seg_flags;
proto_tree *ti2, *ti3, *ti4, *rsvp_pi_link_flags_tree, *rsvp_pi_lsp_flags_tree, *rsvp_pi_seg_flags_tree;
- int offset2 = offset + 4;
+ int offset2 = offset + 4;
proto_item_set_text(ti, "PROTECTION_INFO: ");
switch(type) {
case 1:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: 1");
- flags1 = tvb_get_guint8(tvb, offset2);
- flags1 >>= 4;
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
- "Secondary LSP: %s",
- decode_boolean_bitfield(flags1, 0x08, 4, "Yes", "No"));
-
- link_flags = tvb_get_guint8(tvb, offset2+3);
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb, offset2+3, 1,
- "Link Flags: 0x%02x", link_flags);
- rsvp_pi_link_flags_tree = proto_item_add_subtree(ti2, TREE(TT_PROTECTION_INFO_LINK));
- proto_tree_add_text(rsvp_pi_link_flags_tree, tvb, offset2+3, 1, "%s",
- decode_boolean_bitfield(link_flags, 0x01, 8,
- "Extra Traffic desired",
- "Extra Traffic NOT desired"));
- proto_tree_add_text(rsvp_pi_link_flags_tree, tvb, offset2+3, 1, "%s",
- decode_boolean_bitfield(link_flags, 0x02, 8,
- "Unprotected desired",
- "Unprotected NOT desired"));
- proto_tree_add_text(rsvp_pi_link_flags_tree, tvb, offset2+3, 1, "%s",
- decode_boolean_bitfield(link_flags, 0x04, 8,
- "Shared desired",
- "Shared NOT desired"));
- proto_tree_add_text(rsvp_pi_link_flags_tree, tvb, offset2+3, 1, "%s",
- decode_boolean_bitfield(link_flags, 0x08, 8,
- "Dedicated 1:1 desired",
- "Dedicated 1:1 NOT desired"));
- proto_tree_add_text(rsvp_pi_link_flags_tree, tvb, offset2+3, 1, "%s",
- decode_boolean_bitfield(link_flags, 0x10, 8,
- "Dedicated 1+1 desired",
- "Dedicated 1+1 NOT desired"));
- proto_tree_add_text(rsvp_pi_link_flags_tree, tvb, offset2+3, 1, "%s",
- decode_boolean_bitfield(link_flags, 0x20, 8,
- "Enhanced desired",
- "Enhanced NOT desired"));
- proto_item_append_text(ti, "%s%s%s%s%s%s%s.",
- flags1&0x08 ? "SecondaryLSP ":"",
- link_flags&0x01 ? "ExtraTraffic ":"",
- link_flags&0x02 ? "Unprotected ":"",
- link_flags&0x04 ? "Shared ":"",
- link_flags&0x08 ? "Dedicated1:1 ":"",
- link_flags&0x10 ? "Dedicated1+1 ":"",
- link_flags&0x20 ? "Enhanced ":"");
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 1");
+ flags1 = tvb_get_guint8(tvb, offset2);
+ flags1 >>= 4;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
+ "Secondary LSP: %s",
+ decode_boolean_bitfield(flags1, 0x08, 4, "Yes", "No"));
+
+ link_flags = tvb_get_guint8(tvb, offset2+3);
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb, offset2+3, 1,
+ "Link Flags: 0x%02x", link_flags);
+ rsvp_pi_link_flags_tree = proto_item_add_subtree(ti2, TREE(TT_PROTECTION_INFO_LINK));
+ proto_tree_add_text(rsvp_pi_link_flags_tree, tvb, offset2+3, 1, "%s",
+ decode_boolean_bitfield(link_flags, 0x01, 8,
+ "Extra Traffic desired",
+ "Extra Traffic NOT desired"));
+ proto_tree_add_text(rsvp_pi_link_flags_tree, tvb, offset2+3, 1, "%s",
+ decode_boolean_bitfield(link_flags, 0x02, 8,
+ "Unprotected desired",
+ "Unprotected NOT desired"));
+ proto_tree_add_text(rsvp_pi_link_flags_tree, tvb, offset2+3, 1, "%s",
+ decode_boolean_bitfield(link_flags, 0x04, 8,
+ "Shared desired",
+ "Shared NOT desired"));
+ proto_tree_add_text(rsvp_pi_link_flags_tree, tvb, offset2+3, 1, "%s",
+ decode_boolean_bitfield(link_flags, 0x08, 8,
+ "Dedicated 1:1 desired",
+ "Dedicated 1:1 NOT desired"));
+ proto_tree_add_text(rsvp_pi_link_flags_tree, tvb, offset2+3, 1, "%s",
+ decode_boolean_bitfield(link_flags, 0x10, 8,
+ "Dedicated 1+1 desired",
+ "Dedicated 1+1 NOT desired"));
+ proto_tree_add_text(rsvp_pi_link_flags_tree, tvb, offset2+3, 1, "%s",
+ decode_boolean_bitfield(link_flags, 0x20, 8,
+ "Enhanced desired",
+ "Enhanced NOT desired"));
+ proto_item_append_text(ti, "%s%s%s%s%s%s%s.",
+ flags1&0x08 ? "SecondaryLSP ":"",
+ link_flags&0x01 ? "ExtraTraffic ":"",
+ link_flags&0x02 ? "Unprotected ":"",
+ link_flags&0x04 ? "Shared ":"",
+ link_flags&0x08 ? "Dedicated1:1 ":"",
+ link_flags&0x10 ? "Dedicated1+1 ":"",
+ link_flags&0x20 ? "Enhanced ":"");
+ break;
case 2: /* RFC4872 */
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type:2");
- flags1 = tvb_get_guint8(tvb, offset2);
- flags1 >>= 4;
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
- "Secondary LSP: %s",
- decode_boolean_bitfield(flags1, 0x08, 4, "Yes", "No"));
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
- "Protecting LSP: %s",
- decode_boolean_bitfield(flags1, 0x04, 4, "Yes", "No"));
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
- "Notification msg: %s",
- decode_boolean_bitfield(flags1, 0x02, 4, "Yes", "No"));
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
- "Operational LSP: %s",
- decode_boolean_bitfield(flags1, 0x01, 4, "Yes", "No"));
-
- lsp_flags = tvb_get_guint8(tvb, offset2+1);
- ti3 = proto_tree_add_text(rsvp_object_tree, tvb, offset2+1, 1,
- "LSP Flags: 0x%02x -%s%s%s%s%s%s", lsp_flags,
- lsp_flags == 0 ? " Unprotected":"",
- lsp_flags&0x01 ? " Rerouting":"",
- lsp_flags&0x02 ? " Rerouting with extra-traffic":"",
- lsp_flags&0x04 ? " 1:N Protection with extra-traffic":"",
- lsp_flags&0x08 ? " 1+1 Unidirectional protection":"",
- lsp_flags&0x10 ? " 1+1 Bidirectional protection":"");
- rsvp_pi_lsp_flags_tree = proto_item_add_subtree(ti3, TREE(TT_PROTECTION_INFO_LSP));
- proto_tree_add_text(rsvp_pi_lsp_flags_tree, tvb, offset2+1, 1, "%s",
- decode_boolean_bitfield(lsp_flags, 0x01, 6,
- "(Full) rerouting desired",
- "(Full) rerouting NOT desired"));
- proto_tree_add_text(rsvp_pi_lsp_flags_tree, tvb, offset2+1, 1, "%s",
- decode_boolean_bitfield(lsp_flags, 0x02, 6,
- "Rerouting without extra-traffic desired",
- "Rerouting without extra-traffic NOT desired"));
- proto_tree_add_text(rsvp_pi_lsp_flags_tree, tvb, offset2+1, 1, "%s",
- decode_boolean_bitfield(lsp_flags, 0x04, 6,
- "1:N protection with extra-traffic desired",
- "1:N protection with extra-traffic NOT desired"));
- proto_tree_add_text(rsvp_pi_lsp_flags_tree, tvb, offset2+1, 1, "%s",
- decode_boolean_bitfield(lsp_flags, 0x08, 6,
- "1+1 unidirectional protection desired",
- "1+1 unidirectional protection NOT desired"));
- proto_tree_add_text(rsvp_pi_lsp_flags_tree, tvb, offset2+1, 1, "%s",
- decode_boolean_bitfield(lsp_flags, 0x10, 6,
- "1+1 bidirectional protection desired",
- "1+1 bidirectional protection NOT desired"));
-
- link_flags = tvb_get_guint8(tvb, offset2+3);
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb, offset2+3, 1,
- "Link Flags: 0x%02x -%s%s%s%s%s%s", link_flags,
- link_flags&0x01 ? " ExtraTraffic":"",
- link_flags&0x02 ? " Unprotected":"",
- link_flags&0x04 ? " Shared":"",
- link_flags&0x08 ? " Dedicated1:1":"",
- link_flags&0x10 ? " Dedicated1+1":"",
- link_flags&0x20 ? " Enhanced":"");
- rsvp_pi_link_flags_tree = proto_item_add_subtree(ti2,
- TREE(TT_PROTECTION_INFO_LINK));
- proto_tree_add_text(rsvp_pi_link_flags_tree, tvb, offset2+3, 1, "%s",
- decode_boolean_bitfield(link_flags, 0x01, 8,
- "Extra Traffic desired",
- "Extra Traffic NOT desired"));
- proto_tree_add_text(rsvp_pi_link_flags_tree, tvb, offset2+3, 1, "%s",
- decode_boolean_bitfield(link_flags, 0x02, 8,
- "Unprotected desired",
- "Unprotected NOT desired"));
- proto_tree_add_text(rsvp_pi_link_flags_tree, tvb, offset2+3, 1, "%s",
- decode_boolean_bitfield(link_flags, 0x04, 8,
- "Shared desired",
- "Shared NOT desired"));
- proto_tree_add_text(rsvp_pi_link_flags_tree, tvb, offset2+3, 1, "%s",
- decode_boolean_bitfield(link_flags, 0x08, 8,
- "Dedicated 1:1 desired",
- "Dedicated 1:1 NOT desired"));
- proto_tree_add_text(rsvp_pi_link_flags_tree, tvb, offset2+3, 1, "%s",
- decode_boolean_bitfield(link_flags, 0x10, 8,
- "Dedicated 1+1 desired",
- "Dedicated 1+1 NOT desired"));
- proto_tree_add_text(rsvp_pi_link_flags_tree, tvb, offset2+3, 1, "%s",
- decode_boolean_bitfield(link_flags, 0x20, 8,
- "Enhanced desired",
- "Enhanced NOT desired"));
-
- flags2 = tvb_get_guint8(tvb, offset2+4);
- flags2 >>= 6;
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+4, 1,
- "In-Place: %s",
- decode_boolean_bitfield(flags2, 0x02, 2, "Yes", "No"));
- proto_tree_add_text(rsvp_object_tree, tvb, offset2+4, 1,
- "Required: %s",
- decode_boolean_bitfield(flags2, 0x01, 2, "Yes", "No"));
-
- seg_flags = tvb_get_guint8(tvb, offset2+5);
- ti4 = proto_tree_add_text(rsvp_object_tree, tvb, offset2+5, 1,
- "Segment recovery Flags: 0x%02x - %s%s%s%s%s%s", seg_flags,
- seg_flags == 0 ? " Unprotected":"",
- seg_flags&0x01 ? " Rerouting":"",
- seg_flags&0x02 ? " Rerouting with extra-traffic":"",
- seg_flags&0x04 ? " 1:N Protection with extra-traffic":"",
- seg_flags&0x08 ? " 1+1 Unidirectional protection":"",
- seg_flags&0x10 ? " 1+1 Bidirectional protection":"");
- rsvp_pi_seg_flags_tree = proto_item_add_subtree(ti4, TREE(TT_PROTECTION_INFO_SEG));
- proto_tree_add_text(rsvp_pi_seg_flags_tree, tvb, offset2+5, 1, "%s",
- decode_boolean_bitfield(seg_flags, 0x01, 6,
- "(Full) rerouting desired",
- "(Full) rerouting NOT desired"));
- proto_tree_add_text(rsvp_pi_seg_flags_tree, tvb, offset2+5, 1, "%s",
- decode_boolean_bitfield(seg_flags, 0x02, 6,
- "Rerouting without extra-traffic desired",
- "Rerouting without extra-traffic NOT desired"));
- proto_tree_add_text(rsvp_pi_seg_flags_tree, tvb, offset2+5, 1, "%s",
- decode_boolean_bitfield(seg_flags, 0x04, 6,
- "1:N protection with extra-traffic desired",
- "1:N protection with extra-traffic NOT desired"));
- proto_tree_add_text(rsvp_pi_seg_flags_tree, tvb, offset2+5, 1, "%s",
- decode_boolean_bitfield(seg_flags, 0x08, 6,
- "1+1 unidirectional protection desired",
- "1+1 unidirectional protection NOT desired"));
- proto_tree_add_text(rsvp_pi_seg_flags_tree, tvb, offset2+5, 1, "%s",
- decode_boolean_bitfield(seg_flags, 0x10, 6,
- "1+1 bidirectional protection desired",
- "1+1 bidirectional protection NOT desired"));
-
- proto_item_append_text(ti, "%s%s%s%s Link:%s%s%s%s%s%s, LSP:%s%s%s%s%s%s.",
- flags1&0x08 ? "SecondaryLSP ":"",
- flags1&0x04 ? "ProtectingLSP ":"",
- flags1&0x02 ? "Notification ":"",
- flags1&0x01 ? "OperationalLSP ":"",
- link_flags&0x01 ? " ExtraTraffic":"",
- link_flags&0x02 ? " Unprotected":"",
- link_flags&0x04 ? " Shared":"",
- link_flags&0x08 ? " Dedicated1:1":"",
- link_flags&0x10 ? " Dedicated1+1":"",
- link_flags&0x20 ? " Enhanced":"",
- lsp_flags == 0 ? " Unprotected":"",
- lsp_flags&0x01 ? " Rerouting":"",
- lsp_flags&0x02 ? " Rerouting with extra-traffic":"",
- lsp_flags&0x04 ? " 1:N Protection with extra-traffic":"",
- lsp_flags&0x08 ? " 1+1 Unidirectional protection":"",
- lsp_flags&0x10 ? " 1+1 Bidirectional protection":"");
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type:2");
+ flags1 = tvb_get_guint8(tvb, offset2);
+ flags1 >>= 4;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
+ "Secondary LSP: %s",
+ decode_boolean_bitfield(flags1, 0x08, 4, "Yes", "No"));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
+ "Protecting LSP: %s",
+ decode_boolean_bitfield(flags1, 0x04, 4, "Yes", "No"));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
+ "Notification msg: %s",
+ decode_boolean_bitfield(flags1, 0x02, 4, "Yes", "No"));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, 1,
+ "Operational LSP: %s",
+ decode_boolean_bitfield(flags1, 0x01, 4, "Yes", "No"));
+
+ lsp_flags = tvb_get_guint8(tvb, offset2+1);
+ ti3 = proto_tree_add_text(rsvp_object_tree, tvb, offset2+1, 1,
+ "LSP Flags: 0x%02x -%s%s%s%s%s%s", lsp_flags,
+ lsp_flags == 0 ? " Unprotected":"",
+ lsp_flags&0x01 ? " Rerouting":"",
+ lsp_flags&0x02 ? " Rerouting with extra-traffic":"",
+ lsp_flags&0x04 ? " 1:N Protection with extra-traffic":"",
+ lsp_flags&0x08 ? " 1+1 Unidirectional protection":"",
+ lsp_flags&0x10 ? " 1+1 Bidirectional protection":"");
+ rsvp_pi_lsp_flags_tree = proto_item_add_subtree(ti3, TREE(TT_PROTECTION_INFO_LSP));
+ proto_tree_add_text(rsvp_pi_lsp_flags_tree, tvb, offset2+1, 1, "%s",
+ decode_boolean_bitfield(lsp_flags, 0x01, 6,
+ "(Full) rerouting desired",
+ "(Full) rerouting NOT desired"));
+ proto_tree_add_text(rsvp_pi_lsp_flags_tree, tvb, offset2+1, 1, "%s",
+ decode_boolean_bitfield(lsp_flags, 0x02, 6,
+ "Rerouting without extra-traffic desired",
+ "Rerouting without extra-traffic NOT desired"));
+ proto_tree_add_text(rsvp_pi_lsp_flags_tree, tvb, offset2+1, 1, "%s",
+ decode_boolean_bitfield(lsp_flags, 0x04, 6,
+ "1:N protection with extra-traffic desired",
+ "1:N protection with extra-traffic NOT desired"));
+ proto_tree_add_text(rsvp_pi_lsp_flags_tree, tvb, offset2+1, 1, "%s",
+ decode_boolean_bitfield(lsp_flags, 0x08, 6,
+ "1+1 unidirectional protection desired",
+ "1+1 unidirectional protection NOT desired"));
+ proto_tree_add_text(rsvp_pi_lsp_flags_tree, tvb, offset2+1, 1, "%s",
+ decode_boolean_bitfield(lsp_flags, 0x10, 6,
+ "1+1 bidirectional protection desired",
+ "1+1 bidirectional protection NOT desired"));
+
+ link_flags = tvb_get_guint8(tvb, offset2+3);
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb, offset2+3, 1,
+ "Link Flags: 0x%02x -%s%s%s%s%s%s", link_flags,
+ link_flags&0x01 ? " ExtraTraffic":"",
+ link_flags&0x02 ? " Unprotected":"",
+ link_flags&0x04 ? " Shared":"",
+ link_flags&0x08 ? " Dedicated1:1":"",
+ link_flags&0x10 ? " Dedicated1+1":"",
+ link_flags&0x20 ? " Enhanced":"");
+ rsvp_pi_link_flags_tree = proto_item_add_subtree(ti2,
+ TREE(TT_PROTECTION_INFO_LINK));
+ proto_tree_add_text(rsvp_pi_link_flags_tree, tvb, offset2+3, 1, "%s",
+ decode_boolean_bitfield(link_flags, 0x01, 8,
+ "Extra Traffic desired",
+ "Extra Traffic NOT desired"));
+ proto_tree_add_text(rsvp_pi_link_flags_tree, tvb, offset2+3, 1, "%s",
+ decode_boolean_bitfield(link_flags, 0x02, 8,
+ "Unprotected desired",
+ "Unprotected NOT desired"));
+ proto_tree_add_text(rsvp_pi_link_flags_tree, tvb, offset2+3, 1, "%s",
+ decode_boolean_bitfield(link_flags, 0x04, 8,
+ "Shared desired",
+ "Shared NOT desired"));
+ proto_tree_add_text(rsvp_pi_link_flags_tree, tvb, offset2+3, 1, "%s",
+ decode_boolean_bitfield(link_flags, 0x08, 8,
+ "Dedicated 1:1 desired",
+ "Dedicated 1:1 NOT desired"));
+ proto_tree_add_text(rsvp_pi_link_flags_tree, tvb, offset2+3, 1, "%s",
+ decode_boolean_bitfield(link_flags, 0x10, 8,
+ "Dedicated 1+1 desired",
+ "Dedicated 1+1 NOT desired"));
+ proto_tree_add_text(rsvp_pi_link_flags_tree, tvb, offset2+3, 1, "%s",
+ decode_boolean_bitfield(link_flags, 0x20, 8,
+ "Enhanced desired",
+ "Enhanced NOT desired"));
+
+ flags2 = tvb_get_guint8(tvb, offset2+4);
+ flags2 >>= 6;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+4, 1,
+ "In-Place: %s",
+ decode_boolean_bitfield(flags2, 0x02, 2, "Yes", "No"));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+4, 1,
+ "Required: %s",
+ decode_boolean_bitfield(flags2, 0x01, 2, "Yes", "No"));
+
+ seg_flags = tvb_get_guint8(tvb, offset2+5);
+ ti4 = proto_tree_add_text(rsvp_object_tree, tvb, offset2+5, 1,
+ "Segment recovery Flags: 0x%02x - %s%s%s%s%s%s", seg_flags,
+ seg_flags == 0 ? " Unprotected":"",
+ seg_flags&0x01 ? " Rerouting":"",
+ seg_flags&0x02 ? " Rerouting with extra-traffic":"",
+ seg_flags&0x04 ? " 1:N Protection with extra-traffic":"",
+ seg_flags&0x08 ? " 1+1 Unidirectional protection":"",
+ seg_flags&0x10 ? " 1+1 Bidirectional protection":"");
+ rsvp_pi_seg_flags_tree = proto_item_add_subtree(ti4, TREE(TT_PROTECTION_INFO_SEG));
+ proto_tree_add_text(rsvp_pi_seg_flags_tree, tvb, offset2+5, 1, "%s",
+ decode_boolean_bitfield(seg_flags, 0x01, 6,
+ "(Full) rerouting desired",
+ "(Full) rerouting NOT desired"));
+ proto_tree_add_text(rsvp_pi_seg_flags_tree, tvb, offset2+5, 1, "%s",
+ decode_boolean_bitfield(seg_flags, 0x02, 6,
+ "Rerouting without extra-traffic desired",
+ "Rerouting without extra-traffic NOT desired"));
+ proto_tree_add_text(rsvp_pi_seg_flags_tree, tvb, offset2+5, 1, "%s",
+ decode_boolean_bitfield(seg_flags, 0x04, 6,
+ "1:N protection with extra-traffic desired",
+ "1:N protection with extra-traffic NOT desired"));
+ proto_tree_add_text(rsvp_pi_seg_flags_tree, tvb, offset2+5, 1, "%s",
+ decode_boolean_bitfield(seg_flags, 0x08, 6,
+ "1+1 unidirectional protection desired",
+ "1+1 unidirectional protection NOT desired"));
+ proto_tree_add_text(rsvp_pi_seg_flags_tree, tvb, offset2+5, 1, "%s",
+ decode_boolean_bitfield(seg_flags, 0x10, 6,
+ "1+1 bidirectional protection desired",
+ "1+1 bidirectional protection NOT desired"));
+
+ proto_item_append_text(ti, "%s%s%s%s Link:%s%s%s%s%s%s, LSP:%s%s%s%s%s%s.",
+ flags1&0x08 ? "SecondaryLSP ":"",
+ flags1&0x04 ? "ProtectingLSP ":"",
+ flags1&0x02 ? "Notification ":"",
+ flags1&0x01 ? "OperationalLSP ":"",
+ link_flags&0x01 ? " ExtraTraffic":"",
+ link_flags&0x02 ? " Unprotected":"",
+ link_flags&0x04 ? " Shared":"",
+ link_flags&0x08 ? " Dedicated1:1":"",
+ link_flags&0x10 ? " Dedicated1+1":"",
+ link_flags&0x20 ? " Enhanced":"",
+ lsp_flags == 0 ? " Unprotected":"",
+ lsp_flags&0x01 ? " Rerouting":"",
+ lsp_flags&0x02 ? " Rerouting with extra-traffic":"",
+ lsp_flags&0x04 ? " 1:N Protection with extra-traffic":"",
+ lsp_flags&0x08 ? " 1+1 Unidirectional protection":"",
+ lsp_flags&0x10 ? " 1+1 Bidirectional protection":"");
+ break;
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)",
- type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)",
+ type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
+ "Data (%d bytes)", obj_length - 4);
+ break;
}
}
@@ -5997,69 +6087,69 @@ dissect_rsvp_protection_info (proto_tree *ti, proto_tree *rsvp_object_tree,
* FAST REROUTE
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_fast_reroute (proto_tree *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_fast_reroute(proto_tree *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
- guint8 flags;
+ guint8 flags;
proto_tree *ti2, *rsvp_frr_flags_tree;
proto_item_set_text(ti, "FAST_REROUTE: ");
switch(type) {
case 1:
case 7:
- if ((type==1 && obj_length!=24) || (type==7 && obj_length!=20)) {
- proto_tree_add_text(rsvp_object_tree, tvb, offset, obj_length,
- "<<<Invalid length: cannot decode>>>");
- proto_item_append_text(ti, "Invalid length");
- break;
- }
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: %u", type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 1,
- "Setup Priority: %d", tvb_get_guint8(tvb, offset+4));
- proto_tree_add_text(rsvp_object_tree, tvb, offset+5, 1,
- "Hold Priority: %d", tvb_get_guint8(tvb, offset+5));
- proto_tree_add_text(rsvp_object_tree, tvb, offset+6, 1,
- "Hop Limit: %d", tvb_get_guint8(tvb, offset+6));
+ if (((type == 1) && (obj_length != 24)) || ((type == 7) && (obj_length != 20))) {
+ proto_tree_add_text(rsvp_object_tree, tvb, offset, obj_length,
+ "<<<Invalid length: cannot decode>>>");
+ proto_item_append_text(ti, "Invalid length");
+ break;
+ }
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: %u", type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+4, 1,
+ "Setup Priority: %d", tvb_get_guint8(tvb, offset+4));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+5, 1,
+ "Hold Priority: %d", tvb_get_guint8(tvb, offset+5));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+6, 1,
+ "Hop Limit: %d", tvb_get_guint8(tvb, offset+6));
flags = tvb_get_guint8(tvb, offset+7);
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb, offset+7, 1,
+ ti2 = proto_tree_add_text(rsvp_object_tree, tvb, offset+7, 1,
"Flags: 0x%02x", flags);
rsvp_frr_flags_tree = proto_item_add_subtree(ti2,
TREE(TT_FAST_REROUTE_FLAGS));
- proto_tree_add_text(rsvp_frr_flags_tree, tvb, offset+7, 1, "%s",
- decode_boolean_bitfield(flags, 0x01, 8,
- "One-to-One Backup desired",
- "One-to-One Backup not desired"));
- proto_tree_add_text(rsvp_frr_flags_tree, tvb, offset+7, 1, "%s",
- decode_boolean_bitfield(flags, 0x02, 8,
- "Facility Backup desired",
- "Facility Backup not desired"));
- proto_tree_add_text(rsvp_object_tree, tvb, offset+8, 4,
- "Bandwidth: %.10g", tvb_get_ntohieee_float(tvb, offset+8));
- proto_tree_add_text(rsvp_object_tree, tvb, offset+12, 4,
- "Include-Any: 0x%0x", tvb_get_ntohl(tvb, offset+12));
- proto_tree_add_text(rsvp_object_tree, tvb, offset+16, 4,
- "Exclude-Any: 0x%0x", tvb_get_ntohl(tvb, offset+16));
- if (type==1) {
- proto_tree_add_text(rsvp_object_tree, tvb, offset+20, 4,
- "Include-All: 0x%0x", tvb_get_ntohl(tvb, offset+20));
- }
+ proto_tree_add_text(rsvp_frr_flags_tree, tvb, offset+7, 1, "%s",
+ decode_boolean_bitfield(flags, 0x01, 8,
+ "One-to-One Backup desired",
+ "One-to-One Backup not desired"));
+ proto_tree_add_text(rsvp_frr_flags_tree, tvb, offset+7, 1, "%s",
+ decode_boolean_bitfield(flags, 0x02, 8,
+ "Facility Backup desired",
+ "Facility Backup not desired"));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+8, 4,
+ "Bandwidth: %.10g", tvb_get_ntohieee_float(tvb, offset+8));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+12, 4,
+ "Include-Any: 0x%0x", tvb_get_ntohl(tvb, offset+12));
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+16, 4,
+ "Exclude-Any: 0x%0x", tvb_get_ntohl(tvb, offset+16));
+ if (type == 1) {
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+20, 4,
+ "Include-All: 0x%0x", tvb_get_ntohl(tvb, offset+20));
+ }
proto_item_append_text(ti, "%s%s",
flags &0x01 ? "One-to-One Backup, " : "",
flags &0x02 ? "Facility Backup" : "");
- break;
+ break;
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)",
- type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset+4, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)",
+ type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+4, obj_length - 4,
+ "Data (%d bytes)", obj_length - 4);
+ break;
}
}
@@ -6067,10 +6157,10 @@ dissect_rsvp_fast_reroute (proto_tree *ti, proto_tree *rsvp_object_tree,
* DETOUR
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_detour (proto_tree *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_detour(proto_tree *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
int remaining_length, count;
int iter;
@@ -6080,34 +6170,34 @@ dissect_rsvp_detour (proto_tree *ti, proto_tree *rsvp_object_tree,
case 7:
iter = 0;
proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: %u", type);
- for (remaining_length = obj_length - 4, count = 1;
- remaining_length > 0; remaining_length -= 8, count++) {
- if (remaining_length < 8) {
- proto_tree_add_text(rsvp_object_tree, tvb, offset+remaining_length,
- obj_length-remaining_length,
- "<<<Invalid length: cannot decode>>>");
- proto_item_append_text(ti, "Invalid length");
- break;
- }
- iter++;
- proto_tree_add_text(rsvp_object_tree, tvb, offset+(4*iter), 4,
- "PLR ID %d: %s", count,
- tvb_ip_to_str(tvb, offset+(4*iter)));
- iter++;
- proto_tree_add_text(rsvp_object_tree, tvb, offset+(4*iter), 4,
- "Avoid Node ID %d: %s", count,
- tvb_ip_to_str(tvb, offset+(4*iter)));
- }
- break;
+ "C-type: %u", type);
+ for (remaining_length = obj_length - 4, count = 1;
+ remaining_length > 0; remaining_length -= 8, count++) {
+ if (remaining_length < 8) {
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+remaining_length,
+ obj_length-remaining_length,
+ "<<<Invalid length: cannot decode>>>");
+ proto_item_append_text(ti, "Invalid length");
+ break;
+ }
+ iter++;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+(4*iter), 4,
+ "PLR ID %d: %s", count,
+ tvb_ip_to_str(tvb, offset+(4*iter)));
+ iter++;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+(4*iter), 4,
+ "Avoid Node ID %d: %s", count,
+ tvb_ip_to_str(tvb, offset+(4*iter)));
+ }
+ break;
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)",
- type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset+4, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)",
+ type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+4, obj_length - 4,
+ "Data (%d bytes)", obj_length - 4);
+ break;
}
}
@@ -6115,57 +6205,58 @@ dissect_rsvp_detour (proto_tree *ti, proto_tree *rsvp_object_tree,
* DIFFSERV
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_diffserv (proto_tree *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+dissect_rsvp_diffserv(proto_tree *ti, proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
int mapnb, count;
int *hfindexes[] = {
- &hf_rsvp_filter[RSVPF_DIFFSERV_MAP],
- &hf_rsvp_filter[RSVPF_DIFFSERV_MAP_EXP],
- &hf_rsvp_filter[RSVPF_DIFFSERV_PHBID],
- &hf_rsvp_filter[RSVPF_DIFFSERV_PHBID_DSCP],
- &hf_rsvp_filter[RSVPF_DIFFSERV_PHBID_CODE],
- &hf_rsvp_filter[RSVPF_DIFFSERV_PHBID_BIT14],
- &hf_rsvp_filter[RSVPF_DIFFSERV_PHBID_BIT15]
+ &hf_rsvp_filter[RSVPF_DIFFSERV_MAP],
+ &hf_rsvp_filter[RSVPF_DIFFSERV_MAP_EXP],
+ &hf_rsvp_filter[RSVPF_DIFFSERV_PHBID],
+ &hf_rsvp_filter[RSVPF_DIFFSERV_PHBID_DSCP],
+ &hf_rsvp_filter[RSVPF_DIFFSERV_PHBID_CODE],
+ &hf_rsvp_filter[RSVPF_DIFFSERV_PHBID_BIT14],
+ &hf_rsvp_filter[RSVPF_DIFFSERV_PHBID_BIT15]
};
gint *etts[] = {
- &TREE(TT_DIFFSERV_MAP),
- &TREE(TT_DIFFSERV_MAP_PHBID)
+ &TREE(TT_DIFFSERV_MAP),
+ &TREE(TT_DIFFSERV_MAP_PHBID)
};
proto_item_set_text(ti, "DIFFSERV: ");
offset += 3;
switch (type) {
case 1:
- proto_tree_add_text(rsvp_object_tree, tvb, offset, 1,
- "C-type: 1 - E-LSP");
- proto_tree_add_uint(rsvp_object_tree, hf_rsvp_filter[RSVPF_DIFFSERV_MAPNB],
- tvb, offset + 4, 1,
- mapnb = tvb_get_guint8(tvb, offset + 4) & 15);
- proto_item_append_text(ti, "E-LSP, %u MAP%s", mapnb,
- (mapnb == 0) ? "" : "s");
- offset += 5;
-
- for (count = 0; count < mapnb; count++) {
- dissect_diffserv_mpls_common(tvb, rsvp_object_tree, type,
- offset, hfindexes, etts);
- offset += 4;
- }
- break;
+ proto_tree_add_text(rsvp_object_tree, tvb, offset, 1,
+ "C-type: 1 - E-LSP");
+ proto_tree_add_uint(rsvp_object_tree, hf_rsvp_filter[RSVPF_DIFFSERV_MAPNB],
+ tvb, offset + 4, 1,
+ mapnb = tvb_get_guint8(tvb, offset + 4) & 15);
+ proto_item_append_text(ti, "E-LSP, %u MAP%s", mapnb,
+ (mapnb == 0) ? "" : "s");
+ offset += 5;
+
+ for (count = 0; count < mapnb; count++) {
+ dissect_diffserv_mpls_common(tvb, rsvp_object_tree, type,
+ offset, hfindexes, etts);
+ offset += 4;
+ }
+ break;
case 2:
- proto_item_append_text(ti, "L-LSP");
- proto_tree_add_text(rsvp_object_tree, tvb, offset, 1,
- "C-type: 2 - L-LSP");
- dissect_diffserv_mpls_common(tvb, rsvp_object_tree, type,
- offset + 3, hfindexes, etts);
- break;
+ proto_item_append_text(ti, "L-LSP");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset, 1,
+ "C-type: 2 - L-LSP");
+ dissect_diffserv_mpls_common(tvb, rsvp_object_tree, type,
+ offset + 3, hfindexes, etts);
+ break;
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset, 1,
- "C-type: Unknown (%u)", type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset + 1, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset, 1,
+ "C-type: Unknown (%u)", type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset + 1, obj_length - 4,
+ "Data (%d bytes)", obj_length - 4);
+ break;
}
}
@@ -6174,35 +6265,35 @@ dissect_rsvp_diffserv (proto_tree *ti, proto_tree *rsvp_object_tree,
*------------------------------------------------------------------------------*/
static void
dissect_rsvp_diffserv_aware_te(proto_tree *ti, proto_tree *rsvp_object_tree,
- tvbuff_t *tvb,
- int offset, int obj_length,
- int rsvp_class _U_, int type)
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
{
proto_item *hidden_item;
- int offset2 = offset + 4;
- guint8 ct = 0;
+ int offset2 = offset + 4;
+ guint8 ct = 0;
hidden_item = proto_tree_add_item(rsvp_object_tree,
- hf_rsvp_filter[RSVPF_DSTE],
- tvb, offset, 8, ENC_NA);
+ hf_rsvp_filter[RSVPF_DSTE],
+ tvb, offset, 8, ENC_NA);
PROTO_ITEM_SET_HIDDEN(hidden_item);
switch(type) {
case 1:
- ct = tvb_get_guint8(tvb, offset2+3);
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1, "C-type: 1");
- proto_tree_add_item(rsvp_object_tree,
- hf_rsvp_filter[RSVPF_DSTE_CLASSTYPE],
- tvb, offset2+3, 1, ENC_BIG_ENDIAN);
- proto_item_set_text(ti, "CLASSTYPE: CT %u", ct);
- break;
+ ct = tvb_get_guint8(tvb, offset2+3);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1, "C-type: 1");
+ proto_tree_add_item(rsvp_object_tree,
+ hf_rsvp_filter[RSVPF_DSTE_CLASSTYPE],
+ tvb, offset2+3, 1, ENC_BIG_ENDIAN);
+ proto_item_set_text(ti, "CLASSTYPE: CT %u", ct);
+ break;
default:
- proto_item_set_text(ti, "CLASSTYPE: (Unknown C-type)");
- proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
- "C-type: Unknown (%u)", type);
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
- break;
+ proto_item_set_text(ti, "CLASSTYPE: (Unknown C-type)");
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: Unknown (%u)", type);
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
+ "Data (%d bytes)", obj_length - 4);
+ break;
}
}
@@ -6227,7 +6318,7 @@ dissect_rsvp_vendor_private_use(proto_tree *ti _U_,
* Private Enterprise Codes, and the rest of the data thereafter is for
* the private use of the registered enterprise.
*/
- proto_item *hidden_item = NULL;
+ proto_item *hidden_item;
hidden_item = proto_tree_add_item(rsvp_object_tree,
hf_rsvp_filter[RSVPF_PRIVATE_OBJ],
@@ -6247,57 +6338,57 @@ dissect_rsvp_vendor_private_use(proto_tree *ti _U_,
*------------------------------------------------------------------------------*/
static void
dissect_rsvp_msg_tree(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- int tree_mode, rsvp_conversation_info *rsvph)
+ int tree_mode, rsvp_conversation_info *rsvph)
{
- proto_tree *rsvp_tree = NULL;
+ proto_tree *rsvp_tree;
proto_tree *rsvp_header_tree;
proto_tree *rsvp_object_tree;
proto_tree *ti;
proto_item *hidden_item;
- guint16 cksum, computed_cksum;
- vec_t cksum_vec[1];
- int offset = 0;
- int len;
- guint8 ver_flags;
- guint8 message_type;
- int session_off, tempfilt_off;
- int msg_length;
- int obj_length;
- int offset2;
-
- offset = 0;
- len = 0;
- ver_flags = tvb_get_guint8(tvb, 0);
- msg_length = tvb_get_ntohs(tvb, 6);
+ guint16 cksum, computed_cksum;
+ vec_t cksum_vec[1];
+ int offset = 0;
+ int len;
+ guint8 ver_flags;
+ guint8 message_type;
+ int session_off, tempfilt_off;
+ int msg_length;
+ int obj_length;
+ int offset2;
+
+ offset = 0;
+ len = 0;
+ ver_flags = tvb_get_guint8(tvb, 0);
+ msg_length = tvb_get_ntohs(tvb, 6);
message_type = tvb_get_guint8(tvb, 1);
ti = proto_tree_add_item(tree, proto_rsvp, tvb, offset, msg_length,
- ENC_NA);
+ ENC_NA);
rsvp_tree = proto_item_add_subtree(ti, tree_mode);
if (pinfo->ipproto == IP_PROTO_RSVPE2EI)
- proto_item_append_text(rsvp_tree, " (E2E-IGNORE)");
+ proto_item_append_text(rsvp_tree, " (E2E-IGNORE)");
proto_item_append_text(rsvp_tree, ": ");
- proto_item_append_text(rsvp_tree, "%s", val_to_str(message_type, message_type_vals,
- "Unknown (%u). "));
+ proto_item_append_text(rsvp_tree, "%s", val_to_str_ext(message_type, &message_type_vals_ext,
+ "Unknown (%u). "));
find_rsvp_session_tempfilt(tvb, 0, &session_off, &tempfilt_off);
if (session_off)
- proto_item_append_text(rsvp_tree, "%s", summary_session(tvb, session_off));
+ proto_item_append_text(rsvp_tree, "%s", summary_session(tvb, session_off));
if (tempfilt_off)
- proto_item_append_text(rsvp_tree, "%s", summary_template(tvb, tempfilt_off));
+ proto_item_append_text(rsvp_tree, "%s", summary_template(tvb, tempfilt_off));
ti = proto_tree_add_text(rsvp_tree, tvb, offset, 8, "RSVP Header. %s",
- val_to_str(message_type, message_type_vals,
- "Unknown Message (%u). "));
+ val_to_str_ext(message_type, &message_type_vals_ext,
+ "Unknown Message (%u). "));
if (pinfo->ipproto == IP_PROTO_RSVPE2EI)
- proto_item_append_text(ti, " (E2E-IGNORE)");
+ proto_item_append_text(ti, " (E2E-IGNORE)");
rsvp_header_tree = proto_item_add_subtree(ti, TREE(TT_HDR));
proto_tree_add_text(rsvp_header_tree, tvb, offset, 1, "RSVP Version: %u",
- (ver_flags & 0xf0)>>4);
+ (ver_flags & 0xf0)>>4);
proto_tree_add_text(rsvp_header_tree, tvb, offset, 1, "Flags: %02x",
- ver_flags & 0xf);
+ ver_flags & 0xf);
proto_tree_add_uint(rsvp_header_tree, hf_rsvp_filter[RSVPF_MSG], tvb,
- offset+1, 1, message_type);
+ offset+1, 1, message_type);
switch (RSVPF_MSG + message_type) {
case RSVPF_PATH:
@@ -6313,243 +6404,243 @@ dissect_rsvp_msg_tree(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
case RSVPF_SREFRESH:
case RSVPF_HELLO:
case RSVPF_NOTIFY:
- hidden_item = proto_tree_add_boolean(rsvp_header_tree, hf_rsvp_filter[RSVPF_MSG + message_type], tvb,
- offset+1, 1, 1);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- break;
+ hidden_item = proto_tree_add_boolean(rsvp_header_tree, hf_rsvp_filter[RSVPF_MSG + message_type], tvb,
+ offset+1, 1, 1);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ break;
default:
- proto_tree_add_protocol_format(rsvp_header_tree, proto_malformed, tvb, offset+1, 1,
- "Invalid message type: %u", message_type);
- return;
+ proto_tree_add_protocol_format(rsvp_header_tree, proto_malformed, tvb, offset+1, 1,
+ "Invalid message type: %u", message_type);
+ return;
}
cksum = tvb_get_ntohs(tvb, offset+2);
- if (!pinfo->fragmented && (int) tvb_length(tvb) >= msg_length) {
- /* The packet isn't part of a fragmented datagram and isn't
- truncated, so we can checksum it. */
- cksum_vec[0].ptr = tvb_get_ptr(tvb, 0, msg_length);
- cksum_vec[0].len = msg_length;
- computed_cksum = in_cksum(&cksum_vec[0], 1);
- if (computed_cksum == 0) {
- proto_tree_add_text(rsvp_header_tree, tvb, offset+2, 2,
- "Message Checksum: 0x%04x [correct]",
- cksum);
- } else {
- proto_tree_add_text(rsvp_header_tree, tvb, offset+2, 2,
- "Message Checksum: 0x%04x [incorrect, should be 0x%04x]",
- cksum,
- in_cksum_shouldbe(cksum, computed_cksum));
- }
+ if (!pinfo->fragmented && ((int) tvb_length(tvb) >= msg_length)) {
+ /* The packet isn't part of a fragmented datagram and isn't
+ truncated, so we can checksum it. */
+ cksum_vec[0].ptr = tvb_get_ptr(tvb, 0, msg_length);
+ cksum_vec[0].len = msg_length;
+ computed_cksum = in_cksum(&cksum_vec[0], 1);
+ if (computed_cksum == 0) {
+ proto_tree_add_text(rsvp_header_tree, tvb, offset+2, 2,
+ "Message Checksum: 0x%04x [correct]",
+ cksum);
+ } else {
+ proto_tree_add_text(rsvp_header_tree, tvb, offset+2, 2,
+ "Message Checksum: 0x%04x [incorrect, should be 0x%04x]",
+ cksum,
+ in_cksum_shouldbe(cksum, computed_cksum));
+ }
} else {
- proto_tree_add_text(rsvp_header_tree, tvb, offset+2, 2,
- "Message Checksum: 0x%04x",
- cksum);
+ proto_tree_add_text(rsvp_header_tree, tvb, offset+2, 2,
+ "Message Checksum: 0x%04x",
+ cksum);
}
proto_tree_add_text(rsvp_header_tree, tvb, offset+4, 1,
- "Sending TTL: %u",
- tvb_get_guint8(tvb, offset+4));
+ "Sending TTL: %u",
+ tvb_get_guint8(tvb, offset+4));
proto_tree_add_text(rsvp_header_tree, tvb, offset+6, 2,
- "Message length: %u", msg_length);
+ "Message length: %u", msg_length);
offset = 8;
- len = 8;
+ len = 8;
if (message_type == RSVP_MSG_BUNDLE) {
- /* Bundle message. Dissect component messages */
- if (rsvp_bundle_dissect) {
- int len2 = 8;
- while (len2 < msg_length) {
- gint sub_len;
- tvbuff_t *tvb_sub;
- sub_len = tvb_get_ntohs(tvb, len2+6);
- tvb_sub = tvb_new_subset(tvb, len2, sub_len, sub_len);
- dissect_rsvp_msg_tree(tvb_sub, pinfo, rsvp_tree, TREE(TT_BUNDLE_COMPMSG), rsvph);
- len2 += sub_len;
- }
- } else {
- proto_tree_add_text(rsvp_tree, tvb, offset, msg_length - len,
- "Bundle Component Messages Not Dissected");
- }
- return;
+ /* Bundle message. Dissect component messages */
+ if (rsvp_bundle_dissect) {
+ int len2 = 8;
+ while (len2 < msg_length) {
+ gint sub_len;
+ tvbuff_t *tvb_sub;
+ sub_len = tvb_get_ntohs(tvb, len2+6);
+ tvb_sub = tvb_new_subset(tvb, len2, sub_len, sub_len);
+ dissect_rsvp_msg_tree(tvb_sub, pinfo, rsvp_tree, TREE(TT_BUNDLE_COMPMSG), rsvph);
+ len2 += sub_len;
+ }
+ } else {
+ proto_tree_add_text(rsvp_tree, tvb, offset, msg_length - len,
+ "Bundle Component Messages Not Dissected");
+ }
+ return;
}
while (len < msg_length) {
- guint8 rsvp_class;
- guint8 type;
-
- obj_length = tvb_get_ntohs(tvb, offset);
- rsvp_class = tvb_get_guint8(tvb, offset+2);
- type = tvb_get_guint8(tvb, offset+3);
- ti = proto_tree_add_item(rsvp_tree, hf_rsvp_filter[rsvp_class_to_filter_num(rsvp_class)],
- tvb, offset, obj_length, FALSE);
- rsvp_object_tree = proto_item_add_subtree(ti, TREE(rsvp_class_to_tree_type(rsvp_class)));
- if (obj_length < 4) {
- proto_tree_add_text(rsvp_object_tree, tvb, offset, 2,
- "Length: %u (bogus, must be >= 4)", obj_length);
- break;
- }
- proto_tree_add_text(rsvp_object_tree, tvb, offset, 2,
- "Length: %u", obj_length);
- proto_tree_add_uint(rsvp_object_tree, hf_rsvp_filter[RSVPF_OBJECT], tvb,
- offset+2, 1, rsvp_class);
-
- offset2 = offset+4;
-
- switch(rsvp_class) {
-
- case RSVP_CLASS_SESSION:
- dissect_rsvp_session(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type, rsvph);
- break;
-
- case RSVP_CLASS_HOP:
- dissect_rsvp_hop(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
-
- case RSVP_CLASS_TIME_VALUES:
- dissect_rsvp_time_values(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
-
- case RSVP_CLASS_ERROR:
- dissect_rsvp_error(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
-
- case RSVP_CLASS_SCOPE:
- dissect_rsvp_scope(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
-
- case RSVP_CLASS_STYLE:
- dissect_rsvp_style(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
-
- case RSVP_CLASS_CONFIRM:
- dissect_rsvp_confirm(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
-
- case RSVP_CLASS_SENDER_TEMPLATE:
- case RSVP_CLASS_FILTER_SPEC:
- dissect_rsvp_template_filter(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type, rsvph);
- break;
-
- case RSVP_CLASS_SENDER_TSPEC:
- dissect_rsvp_tspec(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
-
- case RSVP_CLASS_FLOWSPEC:
- dissect_rsvp_flowspec(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
-
- case RSVP_CLASS_ADSPEC:
- dissect_rsvp_adspec(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
-
- case RSVP_CLASS_INTEGRITY:
- dissect_rsvp_integrity(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
-
- case RSVP_CLASS_POLICY:
- dissect_rsvp_policy(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
-
- case RSVP_CLASS_LABEL_REQUEST:
- dissect_rsvp_label_request(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
-
- case RSVP_CLASS_RECOVERY_LABEL:
- case RSVP_CLASS_UPSTREAM_LABEL:
- case RSVP_CLASS_SUGGESTED_LABEL:
- case RSVP_CLASS_LABEL:
- dissect_rsvp_label(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
-
- case RSVP_CLASS_LABEL_SET:
- dissect_rsvp_label_set(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
-
- case RSVP_CLASS_SESSION_ATTRIBUTE:
- dissect_rsvp_session_attribute(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
-
- case RSVP_CLASS_EXPLICIT_ROUTE:
- dissect_rsvp_explicit_route(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
-
- case RSVP_CLASS_RECORD_ROUTE:
- dissect_rsvp_record_route(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
-
- case RSVP_CLASS_MESSAGE_ID:
- dissect_rsvp_message_id(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
-
- case RSVP_CLASS_MESSAGE_ID_ACK:
- dissect_rsvp_message_id_ack(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
-
- case RSVP_CLASS_MESSAGE_ID_LIST:
- dissect_rsvp_message_id_list(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
+ guint8 rsvp_class;
+ guint8 type;
+
+ obj_length = tvb_get_ntohs(tvb, offset);
+ rsvp_class = tvb_get_guint8(tvb, offset+2);
+ type = tvb_get_guint8(tvb, offset+3);
+ ti = proto_tree_add_item(rsvp_tree, hf_rsvp_filter[rsvp_class_to_filter_num(rsvp_class)],
+ tvb, offset, obj_length, ENC_BIG_ENDIAN);
+ rsvp_object_tree = proto_item_add_subtree(ti, TREE(rsvp_class_to_tree_type(rsvp_class)));
+ if (obj_length < 4) {
+ proto_tree_add_text(rsvp_object_tree, tvb, offset, 2,
+ "Length: %u (bogus, must be >= 4)", obj_length);
+ break;
+ }
+ proto_tree_add_text(rsvp_object_tree, tvb, offset, 2,
+ "Length: %u", obj_length);
+ proto_tree_add_uint(rsvp_object_tree, hf_rsvp_filter[RSVPF_OBJECT], tvb,
+ offset+2, 1, rsvp_class);
- case RSVP_CLASS_HELLO:
- dissect_rsvp_hello(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
+ offset2 = offset+4;
- case RSVP_CLASS_DCLASS:
- dissect_rsvp_dclass(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
+ switch(rsvp_class) {
- case RSVP_CLASS_ADMIN_STATUS:
- dissect_rsvp_admin_status(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
+ case RSVP_CLASS_SESSION:
+ dissect_rsvp_session(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type, rsvph);
+ break;
- case RSVP_CLASS_LSP_ATTRIBUTES:
- case RSVP_CLASS_LSP_REQUIRED_ATTRIBUTES:
- dissect_rsvp_lsp_attributes(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
-
- case RSVP_CLASS_ASSOCIATION:
- dissect_rsvp_association(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
-
- case RSVP_CLASS_LSP_TUNNEL_IF_ID:
- dissect_rsvp_lsp_tunnel_if_id(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
-
- case RSVP_CLASS_NOTIFY_REQUEST:
- dissect_rsvp_notify_request(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
-
- case RSVP_CLASS_GENERALIZED_UNI:
- dissect_rsvp_gen_uni(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type, rsvph);
- break;
-
- case RSVP_CLASS_CALL_ID:
- dissect_rsvp_call_id(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
-
- case RSVP_CLASS_RESTART_CAP:
- dissect_rsvp_restart_cap(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
+ case RSVP_CLASS_HOP:
+ dissect_rsvp_hop(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
- case RSVP_CLASS_PROTECTION:
- dissect_rsvp_protection_info(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
+ case RSVP_CLASS_TIME_VALUES:
+ dissect_rsvp_time_values(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_ERROR:
+ dissect_rsvp_error(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
- case RSVP_CLASS_FAST_REROUTE:
- dissect_rsvp_fast_reroute(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
+ case RSVP_CLASS_SCOPE:
+ dissect_rsvp_scope(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
- case RSVP_CLASS_DETOUR:
- dissect_rsvp_detour(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
+ case RSVP_CLASS_STYLE:
+ dissect_rsvp_style(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
- case RSVP_CLASS_DIFFSERV:
- dissect_rsvp_diffserv(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
+ case RSVP_CLASS_CONFIRM:
+ dissect_rsvp_confirm(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
- case RSVP_CLASS_CLASSTYPE:
- dissect_rsvp_diffserv_aware_te(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
- break;
+ case RSVP_CLASS_SENDER_TEMPLATE:
+ case RSVP_CLASS_FILTER_SPEC:
+ dissect_rsvp_template_filter(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type, rsvph);
+ break;
+
+ case RSVP_CLASS_SENDER_TSPEC:
+ dissect_rsvp_tspec(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_FLOWSPEC:
+ dissect_rsvp_flowspec(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_ADSPEC:
+ dissect_rsvp_adspec(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_INTEGRITY:
+ dissect_rsvp_integrity(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_POLICY:
+ dissect_rsvp_policy(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_LABEL_REQUEST:
+ dissect_rsvp_label_request(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_RECOVERY_LABEL:
+ case RSVP_CLASS_UPSTREAM_LABEL:
+ case RSVP_CLASS_SUGGESTED_LABEL:
+ case RSVP_CLASS_LABEL:
+ dissect_rsvp_label(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_LABEL_SET:
+ dissect_rsvp_label_set(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_SESSION_ATTRIBUTE:
+ dissect_rsvp_session_attribute(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_EXPLICIT_ROUTE:
+ dissect_rsvp_explicit_route(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_RECORD_ROUTE:
+ dissect_rsvp_record_route(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_MESSAGE_ID:
+ dissect_rsvp_message_id(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_MESSAGE_ID_ACK:
+ dissect_rsvp_message_id_ack(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_MESSAGE_ID_LIST:
+ dissect_rsvp_message_id_list(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_HELLO:
+ dissect_rsvp_hello(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_DCLASS:
+ dissect_rsvp_dclass(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_ADMIN_STATUS:
+ dissect_rsvp_admin_status(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_LSP_ATTRIBUTES:
+ case RSVP_CLASS_LSP_REQUIRED_ATTRIBUTES:
+ dissect_rsvp_lsp_attributes(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_ASSOCIATION:
+ dissect_rsvp_association(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_LSP_TUNNEL_IF_ID:
+ dissect_rsvp_lsp_tunnel_if_id(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_NOTIFY_REQUEST:
+ dissect_rsvp_notify_request(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_GENERALIZED_UNI:
+ dissect_rsvp_gen_uni(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type, rsvph);
+ break;
+
+ case RSVP_CLASS_CALL_ID:
+ dissect_rsvp_call_id(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_RESTART_CAP:
+ dissect_rsvp_restart_cap(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_PROTECTION:
+ dissect_rsvp_protection_info(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_FAST_REROUTE:
+ dissect_rsvp_fast_reroute(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_DETOUR:
+ dissect_rsvp_detour(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_DIFFSERV:
+ dissect_rsvp_diffserv(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
+
+ case RSVP_CLASS_CLASSTYPE:
+ dissect_rsvp_diffserv_aware_te(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
+ break;
case RSVP_CLASS_VENDOR_PRIVATE_1:
case RSVP_CLASS_VENDOR_PRIVATE_2:
@@ -6566,15 +6657,15 @@ dissect_rsvp_msg_tree(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
dissect_rsvp_vendor_private_use(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
break;
- case RSVP_CLASS_NULL:
- default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
- break;
- }
+ case RSVP_CLASS_NULL:
+ default:
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
+ "Data (%d bytes)", obj_length - 4);
+ break;
+ }
- offset += obj_length;
- len += obj_length;
+ offset += obj_length;
+ len += obj_length;
}
}
@@ -6585,13 +6676,12 @@ static void
dissect_rsvp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
guint8 message_type;
- int session_off, tempfilt_off;
- rsvp_conversation_info *rsvph;
-
+ int session_off, tempfilt_off;
- conversation_t *conversation;
- struct rsvp_request_key request_key, *new_request_key;
- struct rsvp_request_val *request_val = NULL;
+ rsvp_conversation_info *rsvph;
+ conversation_t *conversation;
+ struct rsvp_request_key request_key, *new_request_key;
+ struct rsvp_request_val *request_val;
col_set_str(pinfo->cinfo, COL_PROTOCOL,
(pinfo->ipproto == IP_PROTO_RSVPE2EI) ? "RSVP-E2EI" : "RSVP");
@@ -6606,28 +6696,20 @@ dissect_rsvp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
SET_ADDRESS(&rsvph->destination, pinfo->dst.type, pinfo->dst.len, pinfo->dst.data);
col_add_str(pinfo->cinfo, COL_INFO,
- val_to_str(message_type, message_type_vals, "Unknown (%u). "));
- find_rsvp_session_tempfilt(tvb, 0, &session_off, &tempfilt_off);
- if (session_off)
- col_append_str(pinfo->cinfo, COL_INFO, summary_session(tvb, session_off));
- if (tempfilt_off)
- col_append_str(pinfo->cinfo, COL_INFO, summary_template(tvb, tempfilt_off));
-
-
- col_add_str(pinfo->cinfo, COL_INFO,
- val_to_str(message_type, message_type_vals, "Unknown (%u). "));
- if (message_type == RSVP_MSG_BUNDLE) {
- col_set_str(pinfo->cinfo, COL_INFO,
- rsvp_bundle_dissect ?
- "Component Messages Dissected" :
- "Component Messages Not Dissected");
- } else {
- find_rsvp_session_tempfilt(tvb, 0, &session_off, &tempfilt_off);
- if (session_off)
- col_append_str(pinfo->cinfo, COL_INFO, summary_session(tvb, session_off));
- if (tempfilt_off)
- col_append_str(pinfo->cinfo, COL_INFO, summary_template(tvb, tempfilt_off));
- }
+ val_to_str_ext(message_type, &message_type_vals_ext, "Unknown (%u). "));
+
+ if (message_type == RSVP_MSG_BUNDLE) {
+ col_set_str(pinfo->cinfo, COL_INFO,
+ rsvp_bundle_dissect ?
+ "Component Messages Dissected" :
+ "Component Messages Not Dissected");
+ } else {
+ find_rsvp_session_tempfilt(tvb, 0, &session_off, &tempfilt_off);
+ if (session_off)
+ col_append_str(pinfo->cinfo, COL_INFO, summary_session(tvb, session_off));
+ if (tempfilt_off)
+ col_append_str(pinfo->cinfo, COL_INFO, summary_template(tvb, tempfilt_off));
+ }
if (tree) {
dissect_rsvp_msg_tree(tvb, pinfo, tree, TREE(TT_RSVP), rsvph);
@@ -6635,9 +6717,9 @@ dissect_rsvp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* ACK, SREFRESH and HELLO messages don't have any associated SESSION and,
therefore, no conversation */
- if (message_type == RSVP_MSG_ACK ||
- message_type == RSVP_MSG_SREFRESH ||
- message_type == RSVP_MSG_HELLO)
+ if ((message_type == RSVP_MSG_ACK) ||
+ (message_type == RSVP_MSG_SREFRESH) ||
+ (message_type == RSVP_MSG_HELLO))
return;
/* Find out what conversation this packet is part of. */
@@ -6650,53 +6732,53 @@ dissect_rsvp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
switch (request_key.session_type) {
case RSVP_SESSION_TYPE_IPV4:
- SET_ADDRESS(&request_key.u.session_ipv4.destination,
- rsvph->destination.type, rsvph->destination.len,
- rsvph->destination.data);
- request_key.u.session_ipv4.protocol = rsvph->protocol;
- request_key.u.session_ipv4.udp_dest_port = rsvph->udp_dest_port;
- break;
+ SET_ADDRESS(&request_key.u.session_ipv4.destination,
+ rsvph->destination.type, rsvph->destination.len,
+ rsvph->destination.data);
+ request_key.u.session_ipv4.protocol = rsvph->protocol;
+ request_key.u.session_ipv4.udp_dest_port = rsvph->udp_dest_port;
+ break;
case RSVP_SESSION_TYPE_IPV6:
- /* Not supported yet */
- break;
+ /* Not supported yet */
+ break;
case RSVP_SESSION_TYPE_IPV4_LSP:
- SET_ADDRESS(&request_key.u.session_ipv4_lsp.destination,
- rsvph->destination.type, rsvph->destination.len,
- rsvph->destination.data);
- request_key.u.session_ipv4_lsp.udp_dest_port = rsvph->udp_dest_port;
- request_key.u.session_ipv4_lsp.ext_tunnel_id = rsvph->ext_tunnel_id;
- break;
+ SET_ADDRESS(&request_key.u.session_ipv4_lsp.destination,
+ rsvph->destination.type, rsvph->destination.len,
+ rsvph->destination.data);
+ request_key.u.session_ipv4_lsp.udp_dest_port = rsvph->udp_dest_port;
+ request_key.u.session_ipv4_lsp.ext_tunnel_id = rsvph->ext_tunnel_id;
+ break;
case RSVP_SESSION_TYPE_AGGREGATE_IPV4:
- SET_ADDRESS(&request_key.u.session_agg_ipv4.destination,
- rsvph->destination.type, rsvph->destination.len,
- rsvph->destination.data);
- request_key.u.session_agg_ipv4.dscp = rsvph->dscp;
- break;
+ SET_ADDRESS(&request_key.u.session_agg_ipv4.destination,
+ rsvph->destination.type, rsvph->destination.len,
+ rsvph->destination.data);
+ request_key.u.session_agg_ipv4.dscp = rsvph->dscp;
+ break;
case RSVP_SESSION_TYPE_IPV4_UNI:
- SET_ADDRESS(&request_key.u.session_ipv4_uni.destination,
- rsvph->destination.type, rsvph->destination.len,
- rsvph->destination.data);
- request_key.u.session_ipv4_uni.udp_dest_port = rsvph->udp_dest_port;
- request_key.u.session_ipv4_uni.ext_tunnel_id = rsvph->ext_tunnel_id;
- break;
+ SET_ADDRESS(&request_key.u.session_ipv4_uni.destination,
+ rsvph->destination.type, rsvph->destination.len,
+ rsvph->destination.data);
+ request_key.u.session_ipv4_uni.udp_dest_port = rsvph->udp_dest_port;
+ request_key.u.session_ipv4_uni.ext_tunnel_id = rsvph->ext_tunnel_id;
+ break;
case RSVP_SESSION_TYPE_IPV4_E_NNI:
- SET_ADDRESS(&request_key.u.session_ipv4_enni.destination,
- rsvph->destination.type, rsvph->destination.len,
- rsvph->destination.data);
- request_key.u.session_ipv4_enni.udp_dest_port = rsvph->udp_dest_port;
- request_key.u.session_ipv4_enni.ext_tunnel_id = rsvph->ext_tunnel_id;
- break;
+ SET_ADDRESS(&request_key.u.session_ipv4_enni.destination,
+ rsvph->destination.type, rsvph->destination.len,
+ rsvph->destination.data);
+ request_key.u.session_ipv4_enni.udp_dest_port = rsvph->udp_dest_port;
+ request_key.u.session_ipv4_enni.ext_tunnel_id = rsvph->ext_tunnel_id;
+ break;
default:
- /* This should never happen. */
+ /* This should never happen. */
if (tree) {
proto_tree_add_text(tree, tvb, 0, 0, "Unknown session type");
}
- break;
+ break;
}
SE_COPY_ADDRESS(&request_key.source_info.source, &rsvph->source);
@@ -6704,8 +6786,8 @@ dissect_rsvp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* See if a request with this key already exists */
request_val =
- (struct rsvp_request_val *) g_hash_table_lookup(rsvp_request_hash,
- &request_key);
+ (struct rsvp_request_val *) g_hash_table_lookup(rsvp_request_hash,
+ &request_key);
/* If not, insert the new request key into the hash table */
if (!request_val) {
@@ -6721,23 +6803,23 @@ dissect_rsvp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
static void
-register_rsvp_prefs (void)
+register_rsvp_prefs(void)
{
module_t *rsvp_module;
rsvp_module = prefs_register_protocol(proto_rsvp, NULL);
prefs_register_bool_preference(
- rsvp_module, "process_bundle",
- "Dissect sub-messages in BUNDLE message",
- "Specifies whether Wireshark should decode and display sub-messages within BUNDLE messages",
- &rsvp_bundle_dissect);
+ rsvp_module, "process_bundle",
+ "Dissect sub-messages in BUNDLE message",
+ "Specifies whether Wireshark should decode and display sub-messages within BUNDLE messages",
+ &rsvp_bundle_dissect);
prefs_register_enum_preference(
- rsvp_module, "generalized_label_options",
- "Dissect generalized labels as",
- "Specifies how Wireshark should dissect generalized labels",
- (gint *)&rsvp_generalized_label_option,
- rsvp_generalized_label_options,
- FALSE);
+ rsvp_module, "generalized_label_options",
+ "Dissect generalized labels as",
+ "Specifies how Wireshark should dissect generalized labels",
+ (gint *)&rsvp_generalized_label_option,
+ rsvp_generalized_label_options,
+ FALSE);
}
void
@@ -6749,374 +6831,550 @@ proto_register_rsvp(void)
/* Message type number */
{&hf_rsvp_filter[RSVPF_MSG],
- { "Message Type", "rsvp.msg", FT_UINT8, BASE_DEC, VALS(message_type_vals), 0x0,
- NULL, HFILL }},
+ { "Message Type", "rsvp.msg",
+ FT_UINT8, BASE_DEC | BASE_EXT_STRING, &message_type_vals_ext, 0x0,
+ NULL, HFILL }
+ },
/* Message type shorthands */
{&hf_rsvp_filter[RSVPF_PATH],
- { "Path Message", "rsvp.path", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Path Message", "rsvp.path",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_RESV],
- { "Resv Message", "rsvp.resv", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Resv Message", "rsvp.resv",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_PATHERR],
- { "Path Error Message", "rsvp.perr", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Path Error Message", "rsvp.perr",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_RESVERR],
- { "Resv Error Message", "rsvp.rerr", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Resv Error Message", "rsvp.rerr",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_PATHTEAR],
- { "Path Tear Message", "rsvp.ptear", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Path Tear Message", "rsvp.ptear",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_RESVTEAR],
- { "Resv Tear Message", "rsvp.rtear", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Resv Tear Message", "rsvp.rtear",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_RCONFIRM],
- { "Resv Confirm Message", "rsvp.resvconf", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Resv Confirm Message", "rsvp.resvconf",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_RTEARCONFIRM],
- { "Resv Tear Confirm Message", "rsvp.rtearconf", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Resv Tear Confirm Message", "rsvp.rtearconf",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_BUNDLE],
- { "Bundle Message", "rsvp.bundle", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Bundle Message", "rsvp.bundle",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_ACK],
- { "Ack Message", "rsvp.ack", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Ack Message", "rsvp.ack",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_SREFRESH],
- { "Srefresh Message", "rsvp.srefresh", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Srefresh Message", "rsvp.srefresh",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_HELLO],
- { "HELLO Message", "rsvp.hello", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "HELLO Message", "rsvp.hello",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
/* Object class */
{&hf_rsvp_filter[RSVPF_OBJECT],
- { "Object class", "rsvp.object", FT_UINT8, BASE_DEC, VALS(rsvp_class_vals), 0x0,
- NULL, HFILL }},
+ { "Object class", "rsvp.object",
+ FT_UINT8, BASE_DEC | BASE_EXT_STRING, &rsvp_class_vals_ext, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_NOTIFY],
- { "Notify Message", "rsvp.notify", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Notify Message", "rsvp.notify",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
/* Object present shorthands */
{&hf_rsvp_filter[RSVPF_SESSION],
- { "SESSION", "rsvp.session", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "SESSION", "rsvp.session",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_HOP],
- { "HOP", "rsvp.hop", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "HOP", "rsvp.hop",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_HELLO_OBJ],
- { "HELLO Request/Ack", "rsvp.hello_obj", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "HELLO Request/Ack", "rsvp.hello_obj",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_INTEGRITY],
- { "INTEGRITY", "rsvp.integrity", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "INTEGRITY", "rsvp.integrity",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_TIME_VALUES],
- { "TIME VALUES", "rsvp.time", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "TIME VALUES", "rsvp.time",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_ERROR],
- { "ERROR", "rsvp.error", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "ERROR", "rsvp.error",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_SCOPE],
- { "SCOPE", "rsvp.scope", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "SCOPE", "rsvp.scope",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_STYLE],
- { "STYLE", "rsvp.style", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "STYLE", "rsvp.style",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_FLOWSPEC],
- { "FLOWSPEC", "rsvp.flowspec", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "FLOWSPEC", "rsvp.flowspec",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_FILTER_SPEC],
- { "FILTERSPEC", "rsvp.filter", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "FILTERSPEC", "rsvp.filter",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_SENDER],
- { "SENDER TEMPLATE", "rsvp.sender", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "SENDER TEMPLATE", "rsvp.sender",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_TSPEC],
- { "SENDER TSPEC", "rsvp.tspec", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "SENDER TSPEC", "rsvp.tspec",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_ADSPEC],
- { "ADSPEC", "rsvp.adspec", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "ADSPEC", "rsvp.adspec",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_POLICY],
- { "POLICY", "rsvp.policy", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "POLICY", "rsvp.policy",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_CONFIRM],
- { "CONFIRM", "rsvp.confirm", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "CONFIRM", "rsvp.confirm",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_LABEL],
- { "LABEL", "rsvp.label", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "LABEL", "rsvp.label",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_RECOVERY_LABEL],
- { "RECOVERY LABEL", "rsvp.recovery_label", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "RECOVERY LABEL", "rsvp.recovery_label",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_UPSTREAM_LABEL],
- { "UPSTREAM LABEL", "rsvp.upstream_label", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "UPSTREAM LABEL", "rsvp.upstream_label",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_SUGGESTED_LABEL],
- { "SUGGESTED LABEL", "rsvp.suggested_label", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "SUGGESTED LABEL", "rsvp.suggested_label",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_LABEL_SET],
- { "LABEL SET", "rsvp.label_set", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "LABEL SET", "rsvp.label_set",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_ACCEPTABLE_LABEL_SET],
- { "ACCEPTABLE LABEL SET", "rsvp.acceptable_label_set", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "ACCEPTABLE LABEL SET", "rsvp.acceptable_label_set",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_PROTECTION],
- { "PROTECTION", "rsvp.protection", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "PROTECTION", "rsvp.protection",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_DIFFSERV],
- { "DIFFSERV", "rsvp.diffserv", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "DIFFSERV", "rsvp.diffserv",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_DSTE],
- { "CLASSTYPE", "rsvp.dste", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "CLASSTYPE", "rsvp.dste",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_RESTART_CAP],
- { "RESTART CAPABILITY", "rsvp.restart", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "RESTART CAPABILITY", "rsvp.restart",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_LABEL_REQUEST],
- { "LABEL REQUEST", "rsvp.label_request", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "LABEL REQUEST", "rsvp.label_request",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_SESSION_ATTRIBUTE],
- { "SESSION ATTRIBUTE", "rsvp.session_attribute", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "SESSION ATTRIBUTE", "rsvp.session_attribute",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_EXPLICIT_ROUTE],
- { "EXPLICIT ROUTE", "rsvp.explicit_route", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "EXPLICIT ROUTE", "rsvp.explicit_route",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_RECORD_ROUTE],
- { "RECORD ROUTE", "rsvp.record_route", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "RECORD ROUTE", "rsvp.record_route",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_MESSAGE_ID],
- { "MESSAGE-ID", "rsvp.msgid", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "MESSAGE-ID", "rsvp.msgid",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_MESSAGE_ID_ACK],
- { "MESSAGE-ID ACK", "rsvp.msgid_ack", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "MESSAGE-ID ACK", "rsvp.msgid_ack",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_MESSAGE_ID_LIST],
- { "MESSAGE-ID LIST", "rsvp.msgid_list", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "MESSAGE-ID LIST", "rsvp.msgid_list",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_DCLASS],
- { "DCLASS", "rsvp.dclass", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "DCLASS", "rsvp.dclass",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_LSP_TUNNEL_IF_ID],
- { "LSP INTERFACE-ID", "rsvp.lsp_tunnel_if_id", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "LSP INTERFACE-ID", "rsvp.lsp_tunnel_if_id",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_ADMIN_STATUS],
- { "ADMIN STATUS", "rsvp.admin_status", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
-
- {&hf_rsvp_filter[RSVPF_ADMIN_STATUS_REFLECT],
- { "Reflect", "rsvp.admin_status.reflect", FT_BOOLEAN, 32, NULL, 0x80000000,
- NULL, HFILL }},
-
- {&hf_rsvp_filter[RSVPF_ADMIN_STATUS_HANDOVER],
- { "Handover", "rsvp.admin_status.handover", FT_BOOLEAN, 32, NULL, 0x40,
- NULL, HFILL }},
-
- {&hf_rsvp_filter[RSVPF_ADMIN_STATUS_LOCKOUT],
- { "Lockout", "rsvp.admin_status.lockout", FT_BOOLEAN, 32, NULL, 0x20,
- NULL, HFILL }},
-
- {&hf_rsvp_filter[RSVPF_ADMIN_STATUS_INHIBIT],
- { "Inhibit Alarm Communication", "rsvp.admin_status.inhibit", FT_BOOLEAN, 32, NULL, 0x10,
- NULL, HFILL }},
-
- {&hf_rsvp_filter[RSVPF_ADMIN_STATUS_CALL_MGMT],
- { "Call Management", "rsvp.admin_status.callmgmt", FT_BOOLEAN, 32, NULL, 0x08,
- NULL, HFILL }},
-
- {&hf_rsvp_filter[RSVPF_ADMIN_STATUS_TESTING],
- { "Testing", "rsvp.admin_status.testing", FT_BOOLEAN, 32, NULL, 0x04,
- NULL, HFILL }},
-
- {&hf_rsvp_filter[RSVPF_ADMIN_STATUS_DOWN],
- { "Administratively down", "rsvp.admin_status.down", FT_BOOLEAN, 32, NULL, 0x02,
- NULL, HFILL }},
-
- {&hf_rsvp_filter[RSVPF_ADMIN_STATUS_DELETE],
- { "Delete in progress", "rsvp.admin_status.delete", FT_BOOLEAN, 32, NULL, 0x01,
- NULL, HFILL }},
+ { "ADMIN STATUS", "rsvp.admin_status",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+
+ {&hf_rsvp_filter[RSVPF_ADMIN_STATUS_REFLECT],
+ { "Reflect", "rsvp.admin_status.reflect",
+ FT_BOOLEAN, 32, NULL, 0x80000000,
+ NULL, HFILL }
+ },
+
+ {&hf_rsvp_filter[RSVPF_ADMIN_STATUS_HANDOVER],
+ { "Handover", "rsvp.admin_status.handover",
+ FT_BOOLEAN, 32, NULL, 0x40,
+ NULL, HFILL }
+ },
+
+ {&hf_rsvp_filter[RSVPF_ADMIN_STATUS_LOCKOUT],
+ { "Lockout", "rsvp.admin_status.lockout",
+ FT_BOOLEAN, 32, NULL, 0x20,
+ NULL, HFILL }
+ },
+
+ {&hf_rsvp_filter[RSVPF_ADMIN_STATUS_INHIBIT],
+ { "Inhibit Alarm Communication", "rsvp.admin_status.inhibit",
+ FT_BOOLEAN, 32, NULL, 0x10,
+ NULL, HFILL }
+ },
+
+ {&hf_rsvp_filter[RSVPF_ADMIN_STATUS_CALL_MGMT],
+ { "Call Management", "rsvp.admin_status.callmgmt",
+ FT_BOOLEAN, 32, NULL, 0x08,
+ NULL, HFILL }
+ },
+
+ {&hf_rsvp_filter[RSVPF_ADMIN_STATUS_TESTING],
+ { "Testing", "rsvp.admin_status.testing",
+ FT_BOOLEAN, 32, NULL, 0x04,
+ NULL, HFILL }
+ },
+
+ {&hf_rsvp_filter[RSVPF_ADMIN_STATUS_DOWN],
+ { "Administratively down", "rsvp.admin_status.down",
+ FT_BOOLEAN, 32, NULL, 0x02,
+ NULL, HFILL }
+ },
+
+ {&hf_rsvp_filter[RSVPF_ADMIN_STATUS_DELETE],
+ { "Delete in progress", "rsvp.admin_status.delete",
+ FT_BOOLEAN, 32, NULL, 0x01,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_LSP_ATTRIBUTES],
- { "LSP ATTRIBUTES", "rsvp.lsp_attributes", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "LSP ATTRIBUTES", "rsvp.lsp_attributes",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_ASSOCIATION],
- { "ASSOCIATION", "rsvp.association", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "ASSOCIATION", "rsvp.association",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_NOTIFY_REQUEST],
- { "NOTIFY REQUEST", "rsvp.notify_request", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "NOTIFY REQUEST", "rsvp.notify_request",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_GENERALIZED_UNI],
- { "GENERALIZED UNI", "rsvp.generalized_uni", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "GENERALIZED UNI", "rsvp.generalized_uni",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_CALL_ID],
- { "CALL ID", "rsvp.call_id", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "CALL ID", "rsvp.call_id",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_PRIVATE_OBJ],
- { "Private object", "rsvp.obj_private", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Private object", "rsvp.obj_private",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_UNKNOWN_OBJ],
- { "Unknown object", "rsvp.obj_unknown", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Unknown object", "rsvp.obj_unknown",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
/* Session fields */
{&hf_rsvp_filter[RSVPF_SESSION_IP],
- { "Destination address", "rsvp.session.ip", FT_IPv4, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Destination address", "rsvp.session.ip",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_SESSION_PORT],
- { "Port number", "rsvp.session.port", FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Port number", "rsvp.session.port",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_SESSION_PROTO],
- { "Protocol", "rsvp.session.proto", FT_UINT8, BASE_DEC, VALS(proto_vals), 0x0,
- NULL, HFILL }},
+ { "Protocol", "rsvp.session.proto",
+ FT_UINT8, BASE_DEC, VALS(proto_vals), 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_SESSION_TUNNEL_ID],
- { "Tunnel ID", "rsvp.session.tunnel_id", FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Tunnel ID", "rsvp.session.tunnel_id",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_SESSION_EXT_TUNNEL_ID],
- { "Extended tunnel ID", "rsvp.session.ext_tunnel_id", FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Extended tunnel ID", "rsvp.session.ext_tunnel_id",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
/* Sender template/Filterspec fields */
{&hf_rsvp_filter[RSVPF_SENDER_IP],
- { "Sender IPv4 address", "rsvp.sender.ip", FT_IPv4, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Sender IPv4 address", "rsvp.sender.ip",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_SENDER_PORT],
- { "Sender port number", "rsvp.sender.port", FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Sender port number", "rsvp.sender.port",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_SENDER_LSP_ID],
- { "Sender LSP ID", "rsvp.sender.lsp_id", FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Sender LSP ID", "rsvp.sender.lsp_id",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
/* Diffserv object fields */
{&hf_rsvp_filter[RSVPF_DIFFSERV_MAPNB],
- { "MAPnb", "rsvp.diffserv.mapnb", FT_UINT8, BASE_DEC, NULL, 0x0,
- MAPNB_DESCRIPTION, HFILL }},
+ { "MAPnb", "rsvp.diffserv.mapnb",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ MAPNB_DESCRIPTION, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_DIFFSERV_MAP],
- { "MAP", "rsvp.diffserv.map", FT_NONE, BASE_NONE, NULL, 0x0,
- MAP_DESCRIPTION, HFILL }},
+ { "MAP", "rsvp.diffserv.map",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ MAP_DESCRIPTION, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_DIFFSERV_MAP_EXP],
- { "EXP", "rsvp.diffserv.map.exp", FT_UINT8, BASE_DEC, NULL, 0x0,
- EXP_DESCRIPTION, HFILL }},
+ { "EXP", "rsvp.diffserv.map.exp",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ EXP_DESCRIPTION, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_DIFFSERV_PHBID],
- { PHBID_DESCRIPTION, "rsvp.diffserv.phbid", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { PHBID_DESCRIPTION, "rsvp.diffserv.phbid",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_DIFFSERV_PHBID_DSCP],
- { PHBID_DSCP_DESCRIPTION, "rsvp.diffserv.phbid.dscp", FT_UINT16,
- BASE_DEC, NULL, PHBID_DSCP_MASK, NULL, HFILL }},
+ { PHBID_DSCP_DESCRIPTION, "rsvp.diffserv.phbid.dscp",
+ FT_UINT16, BASE_DEC, NULL, PHBID_DSCP_MASK,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_DIFFSERV_PHBID_CODE],
- { PHBID_CODE_DESCRIPTION, "rsvp.diffserv.phbid.code", FT_UINT16,
- BASE_DEC, NULL, PHBID_CODE_MASK, NULL, HFILL }},
+ { PHBID_CODE_DESCRIPTION, "rsvp.diffserv.phbid.code",
+ FT_UINT16, BASE_DEC, NULL, PHBID_CODE_MASK,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_DIFFSERV_PHBID_BIT14],
- { PHBID_BIT14_DESCRIPTION, "rsvp.diffserv.phbid.bit14", FT_UINT16,
- BASE_DEC, VALS(phbid_bit14_vals), PHBID_BIT14_MASK, NULL, HFILL }},
+ { PHBID_BIT14_DESCRIPTION, "rsvp.diffserv.phbid.bit14",
+ FT_UINT16, BASE_DEC, VALS(phbid_bit14_vals), PHBID_BIT14_MASK,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_DIFFSERV_PHBID_BIT15],
- { PHBID_BIT15_DESCRIPTION, "rsvp.diffserv.phbid.bit15", FT_UINT16,
- BASE_DEC, VALS(phbid_bit15_vals), PHBID_BIT15_MASK, NULL, HFILL }},
+ { PHBID_BIT15_DESCRIPTION, "rsvp.diffserv.phbid.bit15",
+ FT_UINT16, BASE_DEC, VALS(phbid_bit15_vals), PHBID_BIT15_MASK,
+ NULL, HFILL }
+ },
/* Diffserv-aware TE object field */
{&hf_rsvp_filter[RSVPF_DSTE_CLASSTYPE],
- { "CT", "rsvp.dste.classtype", FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "CT", "rsvp.dste.classtype",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
/* Generalized UNI object field */
{&hf_rsvp_filter[RSVPF_GUNI_SRC_IPV4],
- { "Source TNA", "rsvp.guni.srctna.ipv4", FT_IPv4, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Source TNA", "rsvp.guni.srctna.ipv4",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_GUNI_DST_IPV4],
- { "Destination TNA", "rsvp.guni.dsttna.ipv4", FT_IPv4, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Destination TNA", "rsvp.guni.dsttna.ipv4",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_GUNI_SRC_IPV6],
- { "Source TNA", "rsvp.guni.srctna.ipv6", FT_IPv6, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Source TNA", "rsvp.guni.srctna.ipv6",
+ FT_IPv6, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_GUNI_DST_IPV6],
- { "Destination TNA", "rsvp.guni.dsttna.ipv6", FT_IPv6, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Destination TNA", "rsvp.guni.dsttna.ipv6",
+ FT_IPv6, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
/* Generalized UNI object field */
{&hf_rsvp_filter[RSVPF_CALL_ID_SRC_ADDR_IPV4],
- { "Source Transport Network Address", "rsvp.callid.srcaddr.ipv4", FT_IPv4,
- BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { "Source Transport Network Address", "rsvp.callid.srcaddr.ipv4",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_rsvp_filter[RSVPF_CALL_ID_SRC_ADDR_IPV6],
- { "Source Transport Network Address", "rsvp.callid.srcaddr.ipv6", FT_IPv6,
- BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { "Source Transport Network Address", "rsvp.callid.srcaddr.ipv6",
+ FT_IPv6, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
/*
* FF: Vendor Private object field, please see
* http://www.iana.org/assignments/enterprise-numbers
*/
{&hf_rsvp_filter[RSVPF_ENT_CODE],
- { "Enterprise Code",
- "rsvp.obj_private.enterprise", FT_UINT32,
- BASE_DEC|BASE_EXT_STRING, &sminmpec_values_ext, 0x0,
- "IANA Network Management Private Enterprise Code", HFILL }}
+ { "Enterprise Code", "rsvp.obj_private.enterprise",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &sminmpec_values_ext, 0x0,
+ "IANA Network Management Private Enterprise Code", HFILL }
+ }
};
gint *ett_tree[TT_MAX];
@@ -7124,16 +7382,16 @@ proto_register_rsvp(void)
/* Build the tree array */
for (i=0; i<TT_MAX; i++) {
ett_treelist[i] = -1;
- ett_tree[i] = &(ett_treelist[i]);
+ ett_tree[i] = &(ett_treelist[i]);
}
proto_rsvp = proto_register_protocol("Resource ReserVation Protocol (RSVP)",
- "RSVP", "rsvp");
+ "RSVP", "rsvp");
proto_register_field_array(proto_rsvp, rsvpf_info, array_length(rsvpf_info));
proto_register_subtree_array(ett_tree, array_length(ett_tree));
register_rsvp_prefs();
rsvp_dissector_table = register_dissector_table("rsvp.proto", "RSVP Protocol",
- FT_UINT8, BASE_DEC);
+ FT_UINT8, BASE_DEC);
/* Initialization routine for RSVP conversations */
register_init_routine(&rsvp_init_protocol);
diff --git a/epan/dissectors/packet-rsync.c b/epan/dissectors/packet-rsync.c
index 7e44e0cee6..c7b6b30d21 100644
--- a/epan/dissectors/packet-rsync.c
+++ b/epan/dissectors/packet-rsync.c
@@ -28,10 +28,8 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <string.h>
-#include <time.h>
+
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-rtcp.c b/epan/dissectors/packet-rtcp.c
index 68f7e18cb5..1eadc097e8 100644
--- a/epan/dissectors/packet-rtcp.c
+++ b/epan/dissectors/packet-rtcp.c
@@ -66,12 +66,11 @@
# include "config.h"
#endif
+#include <stdlib.h>
+
#include <glib.h>
#include <epan/packet.h>
-#include <stdlib.h>
-#include <string.h>
-
#include "packet-rtcp.h"
#include "packet-rtp.h"
#include "packet-ntp.h"
@@ -125,61 +124,61 @@ static const value_string rtcp_version_vals[] =
static const value_string rtcp_packet_type_vals[] =
{
- { RTCP_SR, "Sender Report" },
- { RTCP_RR, "Receiver Report" },
- { RTCP_SDES, "Source description" },
- { RTCP_BYE, "Goodbye" },
- { RTCP_APP, "Application specific" },
- { RTCP_RTPFB,"Generic RTP Feedback" },
- { RTCP_PSFB, "Payload-specific" },
- { RTCP_XR, "Extended report (RFC 3611)"},
- { RTCP_AVB, "AVB RTCP packet (IEEE1733)" },
- { RTCP_RSI, "Receiver Summary Information" },
- { RTCP_FIR, "Full Intra-frame Request (H.261)" },
- { RTCP_NACK, "Negative Acknowledgement (H.261)" },
+ { RTCP_SR, "Sender Report" },
+ { RTCP_RR, "Receiver Report" },
+ { RTCP_SDES, "Source description" },
+ { RTCP_BYE, "Goodbye" },
+ { RTCP_APP, "Application specific" },
+ { RTCP_RTPFB, "Generic RTP Feedback" },
+ { RTCP_PSFB, "Payload-specific" },
+ { RTCP_XR, "Extended report (RFC 3611)"},
+ { RTCP_AVB, "AVB RTCP packet (IEEE1733)" },
+ { RTCP_RSI, "Receiver Summary Information" },
+ { RTCP_FIR, "Full Intra-frame Request (H.261)" },
+ { RTCP_NACK, "Negative Acknowledgement (H.261)" },
{ RTCP_SMPTETC, "SMPTE time-code mapping" },
- { RTCP_IJ, "Extended inter-arrival jitter report" },
+ { RTCP_IJ, "Extended inter-arrival jitter report" },
{ 0, NULL }
};
/* RTCP SDES types (Section A.11.2) */
-#define RTCP_SDES_END 0
-#define RTCP_SDES_CNAME 1
-#define RTCP_SDES_NAME 2
-#define RTCP_SDES_EMAIL 3
-#define RTCP_SDES_PHONE 4
-#define RTCP_SDES_LOC 5
-#define RTCP_SDES_TOOL 6
-#define RTCP_SDES_NOTE 7
-#define RTCP_SDES_PRIV 8
-#define RTCP_SDES_H323_CADDR 9
+#define RTCP_SDES_END 0
+#define RTCP_SDES_CNAME 1
+#define RTCP_SDES_NAME 2
+#define RTCP_SDES_EMAIL 3
+#define RTCP_SDES_PHONE 4
+#define RTCP_SDES_LOC 5
+#define RTCP_SDES_TOOL 6
+#define RTCP_SDES_NOTE 7
+#define RTCP_SDES_PRIV 8
+#define RTCP_SDES_H323_CADDR 9
static const value_string rtcp_sdes_type_vals[] =
{
- { RTCP_SDES_END, "END" },
- { RTCP_SDES_CNAME, "CNAME (user and domain)" },
- { RTCP_SDES_NAME, "NAME (common name)" },
- { RTCP_SDES_EMAIL, "EMAIL (e-mail address)" },
- { RTCP_SDES_PHONE, "PHONE (phone number)" },
- { RTCP_SDES_LOC, "LOC (geographic location)" },
- { RTCP_SDES_TOOL, "TOOL (name/version of source app)" },
- { RTCP_SDES_NOTE, "NOTE (note about source)" },
- { RTCP_SDES_PRIV, "PRIV (private extensions)" },
- { RTCP_SDES_H323_CADDR,"H323-CADDR (H.323 callable address)"},
+ { RTCP_SDES_END, "END" },
+ { RTCP_SDES_CNAME, "CNAME (user and domain)" },
+ { RTCP_SDES_NAME, "NAME (common name)" },
+ { RTCP_SDES_EMAIL, "EMAIL (e-mail address)" },
+ { RTCP_SDES_PHONE, "PHONE (phone number)" },
+ { RTCP_SDES_LOC, "LOC (geographic location)" },
+ { RTCP_SDES_TOOL, "TOOL (name/version of source app)" },
+ { RTCP_SDES_NOTE, "NOTE (note about source)" },
+ { RTCP_SDES_PRIV, "PRIV (private extensions)" },
+ { RTCP_SDES_H323_CADDR, "H323-CADDR (H.323 callable address)"},
{ 0, NULL }
};
/* RTCP XR Blocks (Section 4, RTC 3611)
* or http://www.iana.org/assignments/rtcp-xr-block-types */
-#define RTCP_XR_LOSS_RLE 1
-#define RTCP_XR_DUP_RLE 2
-#define RTCP_XR_PKT_RXTIMES 3
-#define RTCP_XR_REF_TIME 4
-#define RTCP_XR_DLRR 5
-#define RTCP_XR_STATS_SUMRY 6
-#define RTCP_XR_VOIP_METRCS 7
-#define RTCP_XR_BT_XNQ 8
-#define RTCP_XR_TI_VOIP 9
+#define RTCP_XR_LOSS_RLE 1
+#define RTCP_XR_DUP_RLE 2
+#define RTCP_XR_PKT_RXTIMES 3
+#define RTCP_XR_REF_TIME 4
+#define RTCP_XR_DLRR 5
+#define RTCP_XR_STATS_SUMRY 6
+#define RTCP_XR_VOIP_METRCS 7
+#define RTCP_XR_BT_XNQ 8
+#define RTCP_XR_TI_VOIP 9
#define RTCP_XR_PR_LOSS_RLE 10
#define RTCP_XR_MC_ACQ 11
#define RTCP_XR_IDMS 12
@@ -197,7 +196,7 @@ static const value_string rtcp_xr_type_vals[] =
{ RTCP_XR_TI_VOIP, "Texas Instruments Extended VoIP Quality Block" },
{ RTCP_XR_PR_LOSS_RLE, "Post-repair Loss RLE Report Block" },
{ RTCP_XR_MC_ACQ, "Multicast Acquisition Report Block" },
- { RTCP_XR_IDMS, "Inter-destination Media Synchronization Block" }, /* [http://www.etsi.org/deliver/etsi_ts/183000_183099/183063/][ETSI 183 063][Miguel_Angel_Reina_Ortega] */
+ { RTCP_XR_IDMS, "Inter-destination Media Synchronization Block" }, /* [http://www.etsi.org/deliver/etsi_ts/183000_183099/183063/][ETSI 183 063][Miguel_Angel_Reina_Ortega] */
{ 0, NULL}
};
@@ -234,16 +233,16 @@ static const value_string rtcp_xr_ip_ttl_vals[] =
/* XR IDMS synchronization packet sender type */
static const value_string rtcp_xr_idms_spst[] =
{
- { 0, "Reserved" },
- { 1, "SC" },
- { 2, "MSAS" },
- { 3, "SC' INPUT" },
- { 4, "SC' OUTPUT" },
- { 5, "Reserved" },
- { 6, "Reserved" },
- { 7, "Reserved" },
- { 8, "Reserved" },
- { 9, "Reserved" },
+ { 0, "Reserved" },
+ { 1, "SC" },
+ { 2, "MSAS" },
+ { 3, "SC' INPUT" },
+ { 4, "SC' OUTPUT" },
+ { 5, "Reserved" },
+ { 6, "Reserved" },
+ { 7, "Reserved" },
+ { 8, "Reserved" },
+ { 9, "Reserved" },
{ 10, "Reserved" },
{ 11, "Reserved" },
{ 12, "Reserved" },
@@ -348,102 +347,102 @@ static const value_string rtcp_app_mux_selection_vals[] =
/* RFC 4585 and RFC 5104 */
static const value_string rtcp_rtpfb_fmt_vals[] =
{
- { 1, "Generic negative acknowledgement (NACK)"},
- { 3, "Temporary Maximum Media Stream Bit Rate Request (TMMBR)"},
- { 4, "Temporary Maximum Media Stream Bit Rate Notification (TMMBN)"},
+ { 1, "Generic negative acknowledgement (NACK)"},
+ { 3, "Temporary Maximum Media Stream Bit Rate Request (TMMBR)"},
+ { 4, "Temporary Maximum Media Stream Bit Rate Notification (TMMBN)"},
{ 31, "Reserved for future extensions"},
- { 0, NULL }
+ { 0, NULL }
};
static const value_string rtcp_psfb_fmt_vals[] =
{
- { 1, "Picture Loss Indication"},
- { 2, "Slice Loss Indication"},
- { 3, "Reference Picture Selection Indication"},
- { 4, "Full Intra Request (FIR) Command"},
- { 5, "Temporal-Spatial Trade-off Request (TSTR)"},
- { 6, "Temporal-Spatial Trade-off Notification (TSTN"},
- { 7, "Video Back Channel Message (VBCM)"},
+ { 1, "Picture Loss Indication"},
+ { 2, "Slice Loss Indication"},
+ { 3, "Reference Picture Selection Indication"},
+ { 4, "Full Intra Request (FIR) Command"},
+ { 5, "Temporal-Spatial Trade-off Request (TSTR)"},
+ { 6, "Temporal-Spatial Trade-off Notification (TSTN"},
+ { 7, "Video Back Channel Message (VBCM)"},
{ 15, "Application Layer Feedback"},
{ 31, "Reserved for future extensions"},
- { 0, NULL }
+ { 0, NULL }
};
/* RTCP header fields */
-static int proto_rtcp = -1;
-static int hf_rtcp_version = -1;
-static int hf_rtcp_padding = -1;
-static int hf_rtcp_rc = -1;
-static int hf_rtcp_sc = -1;
-static int hf_rtcp_pt = -1;
-static int hf_rtcp_length = -1;
-static int hf_rtcp_ssrc_sender = -1;
+static int proto_rtcp = -1;
+static int hf_rtcp_version = -1;
+static int hf_rtcp_padding = -1;
+static int hf_rtcp_rc = -1;
+static int hf_rtcp_sc = -1;
+static int hf_rtcp_pt = -1;
+static int hf_rtcp_length = -1;
+static int hf_rtcp_ssrc_sender = -1;
static int hf_rtcp_ssrc_media_source = -1;
-static int hf_rtcp_ntp = -1;
-static int hf_rtcp_ntp_msw = -1;
-static int hf_rtcp_ntp_lsw = -1;
-static int hf_rtcp_rtp_timestamp = -1;
-static int hf_rtcp_sender_pkt_cnt = -1;
-static int hf_rtcp_sender_oct_cnt = -1;
-static int hf_rtcp_ssrc_source = -1;
-static int hf_rtcp_ssrc_fraction = -1;
-static int hf_rtcp_ssrc_cum_nr = -1;
-static int hf_rtcp_ssrc_discarded = -1;
+static int hf_rtcp_ntp = -1;
+static int hf_rtcp_ntp_msw = -1;
+static int hf_rtcp_ntp_lsw = -1;
+static int hf_rtcp_rtp_timestamp = -1;
+static int hf_rtcp_sender_pkt_cnt = -1;
+static int hf_rtcp_sender_oct_cnt = -1;
+static int hf_rtcp_ssrc_source = -1;
+static int hf_rtcp_ssrc_fraction = -1;
+static int hf_rtcp_ssrc_cum_nr = -1;
+static int hf_rtcp_ssrc_discarded = -1;
/* First the 32 bit number, then the split
* up 16 bit values */
/* These two are added to a subtree */
static int hf_rtcp_ssrc_ext_high_seq = -1;
-static int hf_rtcp_ssrc_high_seq = -1;
-static int hf_rtcp_ssrc_high_cycles = -1;
-static int hf_rtcp_ssrc_jitter = -1;
-static int hf_rtcp_ssrc_lsr = -1;
-static int hf_rtcp_ssrc_dlsr = -1;
-static int hf_rtcp_ssrc_csrc = -1;
-static int hf_rtcp_sdes_type = -1;
-static int hf_rtcp_sdes_length = -1;
-static int hf_rtcp_sdes_text = -1;
-static int hf_rtcp_sdes_prefix_len = -1;
-static int hf_rtcp_sdes_prefix_string= -1;
-static int hf_rtcp_subtype = -1;
-static int hf_rtcp_name_ascii = -1;
-static int hf_rtcp_app_data = -1;
-static int hf_rtcp_fsn = -1;
-static int hf_rtcp_blp = -1;
-static int hf_rtcp_padding_count = -1;
-static int hf_rtcp_padding_data = -1;
+static int hf_rtcp_ssrc_high_seq = -1;
+static int hf_rtcp_ssrc_high_cycles = -1;
+static int hf_rtcp_ssrc_jitter = -1;
+static int hf_rtcp_ssrc_lsr = -1;
+static int hf_rtcp_ssrc_dlsr = -1;
+static int hf_rtcp_ssrc_csrc = -1;
+static int hf_rtcp_sdes_type = -1;
+static int hf_rtcp_sdes_length = -1;
+static int hf_rtcp_sdes_text = -1;
+static int hf_rtcp_sdes_prefix_len = -1;
+static int hf_rtcp_sdes_prefix_string = -1;
+static int hf_rtcp_subtype = -1;
+static int hf_rtcp_name_ascii = -1;
+static int hf_rtcp_app_data = -1;
+static int hf_rtcp_fsn = -1;
+static int hf_rtcp_blp = -1;
+static int hf_rtcp_padding_count = -1;
+static int hf_rtcp_padding_data = -1;
static int hf_rtcp_profile_specific_extension = -1;
-static int hf_rtcp_app_poc1 = -1;
-static int hf_rtcp_app_poc1_subtype = -1;
-static int hf_rtcp_app_poc1_sip_uri = -1;
+static int hf_rtcp_app_poc1 = -1;
+static int hf_rtcp_app_poc1_subtype = -1;
+static int hf_rtcp_app_poc1_sip_uri = -1;
static int hf_rtcp_app_poc1_disp_name = -1;
-static int hf_rtcp_app_poc1_priority = -1;
-static int hf_rtcp_app_poc1_request_ts = -1;
-static int hf_rtcp_app_poc1_stt = -1;
-static int hf_rtcp_app_poc1_partic = -1;
-static int hf_rtcp_app_poc1_ssrc_granted = -1;
+static int hf_rtcp_app_poc1_priority = -1;
+static int hf_rtcp_app_poc1_request_ts = -1;
+static int hf_rtcp_app_poc1_stt = -1;
+static int hf_rtcp_app_poc1_partic = -1;
+static int hf_rtcp_app_poc1_ssrc_granted = -1;
static int hf_rtcp_app_poc1_last_pkt_seq_no = -1;
static int hf_rtcp_app_poc1_ignore_seq_no = -1;
-static int hf_rtcp_app_poc1_reason_code1 = -1;
-static int hf_rtcp_app_poc1_reason1_phrase = -1;
-static int hf_rtcp_app_poc1_reason_code2 = -1;
-static int hf_rtcp_app_poc1_new_time_request = -1;
-static int hf_rtcp_app_poc1_ack_subtype = -1;
+static int hf_rtcp_app_poc1_reason_code1 = -1;
+static int hf_rtcp_app_poc1_reason1_phrase = -1;
+static int hf_rtcp_app_poc1_reason_code2 = -1;
+static int hf_rtcp_app_poc1_new_time_request = -1;
+static int hf_rtcp_app_poc1_ack_subtype = -1;
static int hf_rtcp_app_poc1_ack_reason_code = -1;
static int hf_rtcp_app_poc1_qsresp_priority = -1;
static int hf_rtcp_app_poc1_qsresp_position = -1;
static int hf_rtcp_app_poc1_conn_content[5] = { -1, -1, -1, -1, -1 };
-static int hf_rtcp_app_poc1_conn_session_type = -1;
-static int hf_rtcp_app_poc1_conn_add_ind_mao = -1;
+static int hf_rtcp_app_poc1_conn_session_type = -1;
+static int hf_rtcp_app_poc1_conn_add_ind_mao = -1;
static int hf_rtcp_app_poc1_conn_sdes_items[5] = { -1, -1, -1, -1, -1 };
-static int hf_rtcp_app_mux = -1;
-static int hf_rtcp_app_mux_mux = -1;
-static int hf_rtcp_app_mux_cp = -1;
+static int hf_rtcp_app_mux = -1;
+static int hf_rtcp_app_mux_mux = -1;
+static int hf_rtcp_app_mux_cp = -1;
static int hf_rtcp_app_mux_selection = -1;
static int hf_rtcp_app_mux_localmuxport = -1;
-static int hf_rtcp_xr_block_type = -1;
+static int hf_rtcp_xr_block_type = -1;
static int hf_rtcp_xr_block_specific = -1;
-static int hf_rtcp_xr_block_length = -1;
-static int hf_rtcp_xr_thinning = -1;
+static int hf_rtcp_xr_block_length = -1;
+static int hf_rtcp_xr_thinning = -1;
static int hf_rtcp_xr_voip_metrics_burst_density = -1;
static int hf_rtcp_xr_voip_metrics_gap_density = -1;
static int hf_rtcp_xr_voip_metrics_burst_duration = -1;
@@ -523,14 +522,14 @@ static int hf_rtcp_xr_btxnq_ses = -1;
static int hf_rtcp_xr_btxnq_spare = -1;
/* RTCP setup fields */
-static int hf_rtcp_setup = -1;
-static int hf_rtcp_setup_frame = -1;
+static int hf_rtcp_setup = -1;
+static int hf_rtcp_setup_frame = -1;
static int hf_rtcp_setup_method = -1;
/* RTCP roundtrip delay fields */
-static int hf_rtcp_last_sr_timestamp_frame = -1;
+static int hf_rtcp_last_sr_timestamp_frame = -1;
static int hf_rtcp_time_since_last_sr = -1;
-static int hf_rtcp_roundtrip_delay = -1;
+static int hf_rtcp_roundtrip_delay = -1;
@@ -598,9 +597,9 @@ void srtcp_add_address( packet_info *pinfo,
const gchar *setup_method, guint32 setup_frame_number,
struct srtp_info *srtcp_info)
{
- address null_addr;
- conversation_t* p_conv;
- struct _rtcp_conversation_info *p_conv_data = NULL;
+ address null_addr;
+ conversation_t *p_conv;
+ struct _rtcp_conversation_info *p_conv_data;
/*
* If this isn't the first time this packet has been processed,
@@ -729,8 +728,9 @@ dissect_rtcp_heur( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
actual bytes this translates to (i.e. (raw value + 1) * 4) */
int dissect_rtcp_length_field( proto_tree *tree, tvbuff_t *tvb, int offset)
{
- proto_item *ti;
- unsigned short raw_length = tvb_get_ntohs( tvb, offset );
+ proto_item *ti;
+ unsigned short raw_length = tvb_get_ntohs( tvb, offset );
+
ti = proto_tree_add_item( tree, hf_rtcp_length, tvb, offset, 2, ENC_BIG_ENDIAN);
proto_item_append_text(ti, " (%u bytes)", (raw_length+1)*4);
offset += 2;
@@ -769,19 +769,19 @@ dissect_rtcp_nack( tvbuff_t *tvb, int offset, proto_tree *tree )
static int
dissect_rtcp_rtpfb_tmmbr( tvbuff_t *tvb, int offset, proto_tree *rtcp_tree, proto_item *top_item, int num_fci, int is_notification)
{
- int bitrate = 0;
- int exp = 0;
- guint32 mantissa = 0;
- proto_item *ti = (proto_item*) NULL;
- proto_tree *fci_tree = (proto_tree*) NULL;
+ int bitrate;
+ int exp;
+ guint32 mantissa;
+ proto_item *ti;
+ proto_tree *fci_tree;
if (is_notification == 1) {
- ti = proto_tree_add_text( rtcp_tree, tvb, offset, 8, "TMMBN %d", num_fci );
+ ti = proto_tree_add_text( rtcp_tree, tvb, offset, 8, "TMMBN %d", num_fci );
} else {
- ti = proto_tree_add_text( rtcp_tree, tvb, offset, 8, "TMMBR %d", num_fci );
+ ti = proto_tree_add_text( rtcp_tree, tvb, offset, 8, "TMMBR %d", num_fci );
}
- fci_tree = proto_item_add_subtree( ti, ett_ssrc );
+ fci_tree = proto_item_add_subtree( ti, ett_ssrc );
/* SSRC 32 bit*/
proto_tree_add_item( fci_tree, hf_rtcp_rtpfb_tmbbr_fci_ssrc, tvb, offset, 4, ENC_BIG_ENDIAN );
offset += 4;
@@ -808,46 +808,46 @@ dissect_rtcp_rtpfb_tmmbr( tvbuff_t *tvb, int offset, proto_tree *rtcp_tree, prot
static int
dissect_rtcp_rtpfb_nack( tvbuff_t *tvb, int offset, proto_tree *rtcp_tree, proto_item *top_item)
{
- int i;
- char strbuf[64];
- int nack_num_frames_lost = 0;
- proto_tree *bitfield_tree;
- unsigned int rtcp_rtpfb_nack_pid = 0;
- unsigned int rtcp_rtpfb_nack_blp = 0;
- proto_item *ti = (proto_item*) NULL;
+ int i;
+ char strbuf[64];
+ int nack_num_frames_lost;
+ proto_tree *bitfield_tree;
+ unsigned int rtcp_rtpfb_nack_pid;
+ unsigned int rtcp_rtpfb_nack_blp;
+ proto_item *ti;
proto_tree_add_item(rtcp_tree, hf_rtcp_rtpfb_nack_pid, tvb, offset, 2, ENC_BIG_ENDIAN);
- rtcp_rtpfb_nack_pid = tvb_get_ntohs(tvb, offset);
+ rtcp_rtpfb_nack_pid = tvb_get_ntohs(tvb, offset);
offset += 2;
ti = proto_tree_add_item(rtcp_tree, hf_rtcp_rtpfb_nack_blp, tvb, offset, 2, ENC_BIG_ENDIAN);
proto_item_set_text(ti, "RTCP Transport Feedback NACK BLP: ");
- rtcp_rtpfb_nack_blp = tvb_get_ntohs(tvb, offset);
- bitfield_tree = proto_item_add_subtree( ti, ett_rtcp_nack_blp);
- nack_num_frames_lost ++;
- if (rtcp_rtpfb_nack_blp) {
- for (i = 0; i < 16; i ++) {
- g_snprintf(strbuf, 64, "Frame %d also lost", rtcp_rtpfb_nack_pid + i + 1);
- proto_tree_add_text(bitfield_tree, tvb, offset, 2, "%s",
- decode_boolean_bitfield(rtcp_rtpfb_nack_blp, (1<<i), 16, strbuf, ""));
-
- if (rtcp_rtpfb_nack_blp & (1<<i)) {
- proto_item *hidden_ti;
- hidden_ti = proto_tree_add_uint(bitfield_tree, hf_rtcp_rtpfb_nack_pid, tvb, offset, 2, rtcp_rtpfb_nack_pid + i + 1);
- PROTO_ITEM_SET_HIDDEN(hidden_ti);
- proto_item_append_text(ti, "%d ", rtcp_rtpfb_nack_pid + i + 1);
- nack_num_frames_lost ++;
- }
+ rtcp_rtpfb_nack_blp = tvb_get_ntohs(tvb, offset);
+ bitfield_tree = proto_item_add_subtree( ti, ett_rtcp_nack_blp);
+ nack_num_frames_lost = 1;
+ if (rtcp_rtpfb_nack_blp) {
+ for (i = 0; i < 16; i ++) {
+ g_snprintf(strbuf, 64, "Frame %d also lost", rtcp_rtpfb_nack_pid + i + 1);
+ proto_tree_add_text(bitfield_tree, tvb, offset, 2, "%s",
+ decode_boolean_bitfield(rtcp_rtpfb_nack_blp, (1<<i), 16, strbuf, ""));
+
+ if (rtcp_rtpfb_nack_blp & (1<<i)) {
+ proto_item *hidden_ti;
+ hidden_ti = proto_tree_add_uint(bitfield_tree, hf_rtcp_rtpfb_nack_pid, tvb, offset, 2, rtcp_rtpfb_nack_pid + i + 1);
+ PROTO_ITEM_SET_HIDDEN(hidden_ti);
+ proto_item_append_text(ti, "%d ", rtcp_rtpfb_nack_pid + i + 1);
+ nack_num_frames_lost ++;
}
- } else {
- proto_item_set_text(ti, "0 (No additional frames lost)");
}
+ } else {
+ proto_item_set_text(ti, "0 (No additional frames lost)");
+ }
offset += 2;
if (top_item != NULL) {
- proto_item_append_text(top_item, ": NACK: %d frames lost", nack_num_frames_lost);
- }
+ proto_item_append_text(top_item, ": NACK: %d frames lost", nack_num_frames_lost);
+ }
return offset;
}
@@ -855,10 +855,10 @@ dissect_rtcp_rtpfb_nack( tvbuff_t *tvb, int offset, proto_tree *rtcp_tree, proto
static int
dissect_rtcp_rtpfb( tvbuff_t *tvb, int offset, proto_tree *rtcp_tree, proto_item *top_item)
{
- unsigned int counter = 0;
- unsigned int rtcp_rtpfb_fmt = 0;
- int packet_length = 0;
- int start_offset = offset;
+ unsigned int counter;
+ unsigned int rtcp_rtpfb_fmt;
+ int packet_length;
+ int start_offset = offset;
/* Transport layer FB message */
/* Feedback message type (FMT): 5 bits */
@@ -883,6 +883,7 @@ dissect_rtcp_rtpfb( tvbuff_t *tvb, int offset, proto_tree *rtcp_tree, proto_item
offset += 4;
/* Transport-Layer Feedback Message Elements */
+ counter = 0;
while ((offset - start_offset) < packet_length) {
counter++;
if (rtcp_rtpfb_fmt == 1) {
@@ -904,13 +905,13 @@ static int
dissect_rtcp_psfb( tvbuff_t *tvb, int offset, proto_tree *rtcp_tree,
int packet_length )
{
- unsigned int counter = 0;
- unsigned int num_fci = 0;
- unsigned int read_fci = 0;
- proto_tree *fci_tree = (proto_tree*) NULL;
- proto_item *ti = (proto_item*) NULL;
- unsigned int rtcp_psfb_fmt = 0;
- int base_offset = offset;
+ unsigned int counter;
+ unsigned int num_fci;
+ unsigned int read_fci;
+ proto_tree *fci_tree;
+ proto_item *ti;
+ unsigned int rtcp_psfb_fmt;
+ int base_offset = offset;
/* Payload-specific FB message */
/* Feedback message type (FMT): 5 bits */
@@ -924,7 +925,7 @@ dissect_rtcp_psfb( tvbuff_t *tvb, int offset, proto_tree *rtcp_tree,
/* Packet length in 32 bit words MINUS one, 16 bits */
num_fci = (tvb_get_ntohs(tvb, offset) - 2);
- offset = dissect_rtcp_length_field(rtcp_tree, tvb, offset);
+ offset = dissect_rtcp_length_field(rtcp_tree, tvb, offset);
/* SSRC of packet sender, 32 bits */
proto_tree_add_item( rtcp_tree, hf_rtcp_ssrc_sender, tvb, offset, 4, ENC_BIG_ENDIAN );
@@ -935,32 +936,34 @@ dissect_rtcp_psfb( tvbuff_t *tvb, int offset, proto_tree *rtcp_tree,
offset += 4;
/* Feedback Control Information (FCI) */
- while ( read_fci < num_fci ) {
- /* Handle FIR */
- if (rtcp_psfb_fmt == 4) {
- /* Create a new subtree for a length of 8 bytes */
- ti = proto_tree_add_text( rtcp_tree, tvb, offset, 8, "FIR %u", ++counter );
- fci_tree = proto_item_add_subtree( ti, ett_ssrc );
- /* SSRC 32 bit*/
- proto_tree_add_item( fci_tree, hf_rtcp_psfb_fir_fci_ssrc, tvb, offset, 4, ENC_BIG_ENDIAN );
- offset += 4;
- /* Command Sequence Number 8 bit*/
- proto_tree_add_item( fci_tree, hf_rtcp_psfb_fir_fci_csn, tvb, offset, 1, ENC_BIG_ENDIAN );
- /*proto_tree_add_item( ssrc_tree, hf_rtcp_ssrc_source, tvb, offset, 4, ENC_BIG_ENDIAN );*/
- offset += 1;
- /* Reserved 24 bit*/
- proto_tree_add_item( fci_tree, hf_rtcp_psfb_fir_fci_reserved, tvb, offset, 3, ENC_BIG_ENDIAN );
- offset += 3;
- read_fci += 2;
- } else {
- break;
- }
+ counter = 0;
+ read_fci = 0;
+ while ( read_fci < num_fci ) {
+ /* Handle FIR */
+ if (rtcp_psfb_fmt == 4) {
+ /* Create a new subtree for a length of 8 bytes */
+ ti = proto_tree_add_text( rtcp_tree, tvb, offset, 8, "FIR %u", ++counter );
+ fci_tree = proto_item_add_subtree( ti, ett_ssrc );
+ /* SSRC 32 bit*/
+ proto_tree_add_item( fci_tree, hf_rtcp_psfb_fir_fci_ssrc, tvb, offset, 4, ENC_BIG_ENDIAN );
+ offset += 4;
+ /* Command Sequence Number 8 bit*/
+ proto_tree_add_item( fci_tree, hf_rtcp_psfb_fir_fci_csn, tvb, offset, 1, ENC_BIG_ENDIAN );
+ /*proto_tree_add_item( ssrc_tree, hf_rtcp_ssrc_source, tvb, offset, 4, ENC_BIG_ENDIAN );*/
+ offset += 1;
+ /* Reserved 24 bit*/
+ proto_tree_add_item( fci_tree, hf_rtcp_psfb_fir_fci_reserved, tvb, offset, 3, ENC_BIG_ENDIAN );
+ offset += 3;
+ read_fci += 2;
+ } else {
+ break;
+ }
}
/* Append undecoded FCI information */
if ((packet_length - (offset - base_offset)) > 0) {
- proto_tree_add_item( rtcp_tree, hf_rtcp_fci, tvb, offset, packet_length - (offset - base_offset), ENC_NA );
- offset = base_offset + packet_length;
+ proto_tree_add_item( rtcp_tree, hf_rtcp_fci, tvb, offset, packet_length - (offset - base_offset), ENC_NA );
+ offset = base_offset + packet_length;
}
return offset;
}
@@ -990,12 +993,12 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
unsigned int padding, unsigned int packet_len, guint rtcp_subtype,
guint32 app_length )
{
- unsigned int counter = 0;
- char ascii_name[5];
- guint sdes_type = 0;
- guint item_len = 0;
- proto_tree *PoC1_tree;
- proto_item *PoC1_item;
+ unsigned int counter;
+ char ascii_name[5];
+ guint sdes_type;
+ guint item_len;
+ proto_tree *PoC1_tree;
+ proto_item *PoC1_item;
/* XXX If more application types are to be dissected it may be useful to use a table like in packet-sip.c */
static const char poc1_app_name_str[] = "PoC1";
@@ -1004,7 +1007,7 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
/* SSRC / CSRC */
proto_tree_add_item( tree, hf_rtcp_ssrc_source, tvb, offset, 4, ENC_BIG_ENDIAN );
- offset += 4;
+ offset += 4;
packet_len -= 4;
/* Application Name (ASCII) */
@@ -1019,17 +1022,17 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
if ( g_ascii_strncasecmp(ascii_name, poc1_app_name_str,4 ) == 0 )
{
/* PoC1 Application */
- guint8 t2timer_code, participants_code;
+ guint8 t2timer_code, participants_code;
proto_item *item;
- item = proto_tree_add_uint( tree, hf_rtcp_app_poc1_subtype, tvb, offset - 8, 1, rtcp_subtype );
+ item = proto_tree_add_uint( tree, hf_rtcp_app_poc1_subtype, tvb, offset - 8, 1, rtcp_subtype );
PROTO_ITEM_SET_GENERATED(item);
col_add_fstr(pinfo->cinfo, COL_INFO,"(%s) %s",ascii_name,
val_to_str(rtcp_subtype,rtcp_app_poc1_floor_cnt_type_vals,"unknown (%u)") );
- offset += 4;
- packet_len -= 4;
- app_length = app_length -8;
+ offset += 4;
+ packet_len -= 4;
+ app_length = app_length -8;
if ( packet_len == 0 )
- return offset; /* No more data */
+ return offset; /* No more data */
/* Applications specific data */
if ( padding ) {
/* If there's padding present, we have to remove that from the data part
@@ -1049,7 +1052,7 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
case TBCP_BURST_REQUEST:
{
- guint8 code;
+ guint8 code;
guint16 priority;
/* Both items here are optional */
@@ -1059,38 +1062,38 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
}
/* Look for a code in the first byte */
- code = tvb_get_guint8(tvb, offset);
- offset += 1;
- packet_len -=1;
+ code = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ packet_len -= 1;
/* Priority (optional) */
if (code == 102)
{
- item_len = tvb_get_guint8(tvb, offset);
- offset += 1;
+ item_len = tvb_get_guint8(tvb, offset);
+ offset += 1;
packet_len -= 1;
if (item_len != 2) /* SHALL be 2 */
return offset;
- priority = tvb_get_ntohs(tvb, offset);
+ priority = tvb_get_ntohs(tvb, offset);
proto_tree_add_item(PoC1_tree, hf_rtcp_app_poc1_priority, tvb, offset, 2, ENC_BIG_ENDIAN );
- offset += 2;
+ offset += 2;
packet_len -= 2;
col_append_fstr(pinfo->cinfo, COL_INFO,
" \"%s\"",
- val_to_str(priority,
- rtcp_app_poc1_qsresp_priority_vals,
- "Unknown"));
+ val_to_str_const(priority,
+ rtcp_app_poc1_qsresp_priority_vals,
+ "Unknown"));
/* Look for (optional) next code */
if (tvb_reported_length_remaining( tvb, offset) == 0)
{
return offset;
}
- code = tvb_get_guint8(tvb, offset);
- offset += 1;
- packet_len -=1;
+ code = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ packet_len -= 1;
}
@@ -1099,8 +1102,8 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
{
const gchar *buff;
- item_len = tvb_get_guint8(tvb, offset);
- offset += 1;
+ item_len = tvb_get_guint8(tvb, offset);
+ offset += 1;
packet_len -= 1;
if (item_len != 8) /* SHALL be 8 */
return offset;
@@ -1109,8 +1112,8 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
tvb, offset, 8, ENC_TIME_NTP|ENC_BIG_ENDIAN);
buff = tvb_ntp_fmt_ts(tvb, offset);
- offset += 8;
- packet_len -=8;
+ offset += 8;
+ packet_len -= 8;
col_append_fstr(pinfo->cinfo, COL_INFO, " ts=\"%s\"", buff);
}
@@ -1120,18 +1123,18 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
case TBCP_BURST_GRANTED:
{
proto_item *ti;
- guint16 stop_talking_time;
- guint16 participants;
+ guint16 stop_talking_time;
+ guint16 participants;
/* Stop talking timer (now mandatory) */
- t2timer_code = tvb_get_guint8(tvb, offset);
- offset += 1;
- packet_len -=1;
+ t2timer_code = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ packet_len -= 1;
if (t2timer_code != 101) /* SHALL be 101 */
return offset;
- item_len = tvb_get_guint8(tvb, offset);
- offset += 1;
+ item_len = tvb_get_guint8(tvb, offset);
+ offset += 1;
packet_len -= 1;
if (item_len != 2) /* SHALL be 2 */
return offset;
@@ -1152,7 +1155,7 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
proto_item_append_text(ti, " seconds");
break;
}
- offset += item_len;
+ offset += item_len;
packet_len -= item_len;
col_append_fstr(pinfo->cinfo, COL_INFO, " stop-talking-time=%u",
@@ -1163,20 +1166,20 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
{
return offset;
}
- participants_code = tvb_get_guint8(tvb, offset);
- offset += 1;
- packet_len -=1;
+ participants_code = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ packet_len -= 1;
if (participants_code != 100) /* SHALL be 100 */
return offset;
- item_len = tvb_get_guint8(tvb, offset);
- offset += 1;
+ item_len = tvb_get_guint8(tvb, offset);
+ offset += 1;
packet_len -= 1;
if (item_len != 2) /* SHALL be 2 */
return offset;
participants = tvb_get_ntohs(tvb, offset);
- ti = proto_tree_add_item(PoC1_tree, hf_rtcp_app_poc1_partic, tvb, offset, 2, ENC_BIG_ENDIAN );
+ ti = proto_tree_add_item(PoC1_tree, hf_rtcp_app_poc1_partic, tvb, offset, 2, ENC_BIG_ENDIAN );
/* Append text with meanings of extreme values */
switch (participants)
@@ -1190,7 +1193,7 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
default:
break;
}
- offset += item_len;
+ offset += item_len;
packet_len -= item_len;
col_append_fstr(pinfo->cinfo, COL_INFO, " participants=%u",
@@ -1206,7 +1209,7 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
/* SSRC of PoC client */
proto_tree_add_item(PoC1_tree, hf_rtcp_app_poc1_ssrc_granted, tvb, offset, 4, ENC_BIG_ENDIAN );
- offset += 4;
+ offset += 4;
packet_len -= 4;
/* SDES type (must be CNAME) */
@@ -1223,14 +1226,14 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
item_len = tvb_get_guint8( tvb, offset );
/* Item len of 1 because its an FT_UINT_STRING... */
proto_tree_add_item(PoC1_tree, hf_rtcp_app_poc1_sip_uri,
- tvb, offset, 1, ENC_ASCII|ENC_BIG_ENDIAN );
+ tvb, offset, 1, ENC_ASCII|ENC_NA );
offset++;
col_append_fstr(pinfo->cinfo, COL_INFO, " CNAME=\"%s\"",
tvb_get_ephemeral_string(tvb, offset, item_len));
- offset += item_len;
- packet_len = packet_len - item_len - 1;
+ offset += item_len;
+ packet_len = packet_len - item_len - 1;
/* In the application dependent data, the TBCP Talk Burst Taken message SHALL carry
* a SSRC field and SDES items, CNAME and MAY carry SDES item NAME to identify the
@@ -1254,14 +1257,14 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
item_len = tvb_get_guint8( tvb, offset );
/* Item len of 1 because its an FT_UINT_STRING... */
proto_tree_add_item(PoC1_tree, hf_rtcp_app_poc1_disp_name,
- tvb, offset, 1, ENC_ASCII|ENC_BIG_ENDIAN);
+ tvb, offset, 1, ENC_ASCII|ENC_NA);
offset++;
col_append_fstr(pinfo->cinfo, COL_INFO, " DISPLAY-NAME=\"%s\"",
tvb_get_ephemeral_string(tvb, offset, item_len));
- offset += item_len;
- packet_len = packet_len - item_len - 1;
+ offset += item_len;
+ packet_len = packet_len - item_len - 1;
if (packet_len == 0) {
return offset;
@@ -1269,9 +1272,9 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
/* Move onto next 4-byte boundary */
if (offset % 4) {
- int padding2 = (4-(offset%4));
- offset += padding2;
- packet_len -= padding2;
+ int padding2 = (4-(offset%4));
+ offset += padding2;
+ packet_len -= padding2;
}
}
@@ -1279,14 +1282,14 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
if (tvb_reported_length_remaining( tvb, offset) == 0) {
return offset;
}
- participants_code = tvb_get_guint8(tvb, offset);
- offset += 1;
- packet_len -=1;
+ participants_code = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ packet_len -= 1;
if (participants_code != 100) { /* SHALL be 100 */
return offset;
}
- item_len = tvb_get_guint8(tvb, offset);
- offset += 1;
+ item_len = tvb_get_guint8(tvb, offset);
+ offset += 1;
packet_len -= 1;
if (item_len != 2) { /* SHALL be 2 */
return offset;
@@ -1309,7 +1312,7 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
col_append_fstr(pinfo->cinfo, COL_INFO, " Participants=%u",
participants);
- offset += item_len;
+ offset += item_len;
packet_len -= item_len;
}
break;
@@ -1325,16 +1328,16 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
packet_len--;
col_append_fstr(pinfo->cinfo, COL_INFO, " reason-code=\"%s\"",
- val_to_str(reason_code,
- rtcp_app_poc1_reason_code1_vals,
- "Unknown"));
+ val_to_str_const(reason_code,
+ rtcp_app_poc1_reason_code1_vals,
+ "Unknown"));
/* Reason phrase */
item_len = tvb_get_guint8( tvb, offset );
if ( item_len != 0 )
- proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_reason1_phrase, tvb, offset, 1, ENC_ASCII|ENC_BIG_ENDIAN );
+ proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_reason1_phrase, tvb, offset, 1, ENC_ASCII|ENC_NA );
- offset += (item_len+1);
+ offset += (item_len+1);
packet_len -= (item_len+1);
}
break;
@@ -1359,8 +1362,8 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
/* 15 bits of padding follows */
- offset += 2;
- packet_len-=4;
+ offset += 2;
+ packet_len -= 4;
}
break;
@@ -1392,11 +1395,11 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
}
col_append_fstr(pinfo->cinfo, COL_INFO, " reason-code=\"%s\"",
- val_to_str(reason_code,
- rtcp_app_poc1_reason_code2_vals,
- "Unknown"));
- offset += 4;
- packet_len-=4;
+ val_to_str_const(reason_code,
+ rtcp_app_poc1_reason_code2_vals,
+ "Unknown"));
+ offset += 4;
+ packet_len -= 4;
}
break;
@@ -1409,9 +1412,9 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_ack_subtype, tvb, offset, 1, ENC_BIG_ENDIAN );
col_append_fstr(pinfo->cinfo, COL_INFO, " (for %s)",
- val_to_str(subtype,
- rtcp_app_poc1_floor_cnt_type_vals,
- "Unknown"));
+ val_to_str_const(subtype,
+ rtcp_app_poc1_floor_cnt_type_vals,
+ "Unknown"));
/* Reason code only seen if subtype was Connect */
if (subtype == TBCP_CONNECT)
@@ -1420,7 +1423,7 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
}
/* 16 bits of padding follow */
- offset += 4;
+ offset += 4;
packet_len -= 4;
}
break;
@@ -1430,7 +1433,7 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
case TBCP_QUEUE_STATUS_RESPONSE:
{
- guint16 position;
+ guint16 position;
proto_item *ti;
/* Priority */
@@ -1452,7 +1455,7 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
/* 1 bytes of padding follows */
- offset += 4;
+ offset += 4;
packet_len -= 4;
}
break;
@@ -1462,10 +1465,10 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
case TBCP_CONNECT:
{
- proto_item *content = proto_tree_add_text(PoC1_tree, tvb, offset, 2, "SDES item content");
- gboolean contents[5];
- unsigned int i;
- guint8 items_set = 0;
+ proto_item *content = proto_tree_add_text(PoC1_tree, tvb, offset, 2, "SDES item content");
+ gboolean contents[5];
+ unsigned int i;
+ guint8 items_set = 0;
proto_tree *content_tree = proto_item_add_subtree(content, ett_poc1_conn_contents);
guint16 items_field = tvb_get_ntohs(tvb, offset );
@@ -1487,7 +1490,7 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
/* Additional indications */
proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_conn_add_ind_mao, tvb, offset + 3, 1, ENC_BIG_ENDIAN );
- offset += 4;
+ offset += 4;
packet_len -= 4;
/* One SDES item for every set flag in contents array */
@@ -1521,7 +1524,7 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
{
/* 3GPP Nb protocol extension (3GPP 29.414) for RTP Multiplexing */
col_append_fstr(pinfo->cinfo, COL_INFO,"( %s ) subtype=%u",ascii_name, rtcp_subtype);
- offset += 4;
+ offset += 4;
packet_len -= 4;
/* Applications specific data */
if ( padding ) {
@@ -1534,8 +1537,8 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
{
guint16 local_port = 0;
- proto_item* mux_item = proto_tree_add_item(tree, hf_rtcp_app_mux, tvb, offset, packet_len, ENC_NA);
- proto_tree* mux_tree = proto_item_add_subtree( mux_item, ett_mux );
+ proto_item *mux_item = proto_tree_add_item(tree, hf_rtcp_app_mux, tvb, offset, packet_len, ENC_NA);
+ proto_tree *mux_tree = proto_item_add_subtree( mux_item, ett_mux );
proto_tree_add_item( mux_tree, hf_rtcp_app_mux_mux, tvb, offset, 1, ENC_BIG_ENDIAN );
proto_tree_add_item( mux_tree, hf_rtcp_app_mux_cp, tvb, offset, 1, ENC_BIG_ENDIAN );
proto_tree_add_item( mux_tree, hf_rtcp_app_mux_selection, tvb, offset, 1, ENC_BIG_ENDIAN );
@@ -1554,14 +1557,14 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
else
{
tvbuff_t *next_tvb; /* tvb to pass to subdissector */
- /* tvb == Pass the entire APP payload so the subdissector can have access to the
+ /* tvb == Pass the entire APP payload so the subdissector can have access to the
* entire data set
*/
- next_tvb = tvb_new_subset(tvb, offset-8, app_length+4, app_length+4);
+ next_tvb = tvb_new_subset(tvb, offset-8, app_length+4, app_length+4);
/* look for registered sub-dissectors */
if (dissector_try_string(rtcp_dissector_table, ascii_name, next_tvb, pinfo, tree)) {
/* found subdissector - return tvb_length */
- offset += 4;
+ offset += 4;
packet_len -= 4;
if ( padding ) {
/* If there's padding present, we have to remove that from the data part
@@ -1576,7 +1579,7 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
{
/* Unhandled application type, just show app name and raw data */
col_append_fstr(pinfo->cinfo, COL_INFO,"( %s ) subtype=%u",ascii_name, rtcp_subtype);
- offset += 4;
+ offset += 4;
packet_len -= 4;
/* Applications specific data */
if ( padding ) {
@@ -1599,11 +1602,11 @@ static int
dissect_rtcp_bye( tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree,
unsigned int count )
{
- unsigned int chunk = 1;
- unsigned int reason_length = 0;
- gint reason_offset = 0;
- char* reason_text = NULL;
+ unsigned int chunk;
+ unsigned int reason_length = 0;
+ gint reason_offset = 0;
+ chunk = 1;
while ( chunk <= count ) {
/* source identifier, 32 bits */
proto_tree_add_item( tree, hf_rtcp_ssrc_source, tvb, offset, 4, ENC_BIG_ENDIAN);
@@ -1612,6 +1615,7 @@ dissect_rtcp_bye( tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tre
}
if ( tvb_reported_length_remaining( tvb, offset ) > 0 ) {
+ char *reason_text;
/* Bye reason consists of an 8 bit length l and a string with length l */
reason_length = tvb_get_guint8( tvb, offset );
proto_tree_add_item( tree, hf_rtcp_sdes_length, tvb, offset, 1, ENC_BIG_ENDIAN );
@@ -1655,18 +1659,19 @@ static int
dissect_rtcp_sdes( tvbuff_t *tvb, int offset, proto_tree *tree,
unsigned int count )
{
- unsigned int chunk = 1;
- proto_item *sdes_item;
- proto_tree *sdes_tree;
- proto_tree *sdes_item_tree;
- proto_item *ti;
- int start_offset;
- int items_start_offset;
- guint32 ssrc;
- unsigned int item_len = 0;
- unsigned int sdes_type = 0;
- unsigned int prefix_len = 0;
-
+ unsigned int chunk;
+ proto_item *sdes_item;
+ proto_tree *sdes_tree;
+ proto_tree *sdes_item_tree;
+ proto_item *ti;
+ int start_offset;
+ int items_start_offset;
+ guint32 ssrc;
+ unsigned int item_len;
+ unsigned int sdes_type;
+ unsigned int prefix_len;
+
+ chunk = 1;
while ( chunk <= count ) {
/* Create a subtree for this chunk; we don't yet know
the length. */
@@ -1729,7 +1734,7 @@ dissect_rtcp_sdes( tvbuff_t *tvb, int offset, proto_tree *tree,
offset++;
proto_tree_add_item( sdes_item_tree, hf_rtcp_sdes_prefix_string, tvb, offset, prefix_len, ENC_ASCII|ENC_NA );
- offset += prefix_len;
+ offset += prefix_len;
item_len -= prefix_len +1;
if ( item_len == 0 )
continue;
@@ -1763,22 +1768,22 @@ static void parse_xr_type_specific_field(tvbuff_t *tvb, gint offset, guint block
guint8 flags = tvb_get_guint8(tvb, offset);
switch (block_type) {
- case RTCP_XR_LOSS_RLE:
- case RTCP_XR_DUP_RLE:
- case RTCP_XR_PKT_RXTIMES:
- proto_tree_add_item(tree, hf_rtcp_xr_thinning, tvb, offset, 1, ENC_BIG_ENDIAN);
- break;
-
- case RTCP_XR_STATS_SUMRY:
- proto_tree_add_boolean(tree, hf_rtcp_xr_stats_loss_flag, tvb, offset, 1, flags);
- proto_tree_add_boolean(tree, hf_rtcp_xr_stats_dup_flag, tvb, offset, 1, flags);
- proto_tree_add_boolean(tree, hf_rtcp_xr_stats_jitter_flag, tvb, offset, 1, flags);
- proto_tree_add_item(tree, hf_rtcp_xr_stats_ttl, tvb, offset, 1, ENC_BIG_ENDIAN);
- break;
-
- default:
- proto_tree_add_item(tree, hf_rtcp_xr_block_specific, tvb, offset, 1, ENC_BIG_ENDIAN);
- break;
+ case RTCP_XR_LOSS_RLE:
+ case RTCP_XR_DUP_RLE:
+ case RTCP_XR_PKT_RXTIMES:
+ proto_tree_add_item(tree, hf_rtcp_xr_thinning, tvb, offset, 1, ENC_BIG_ENDIAN);
+ break;
+
+ case RTCP_XR_STATS_SUMRY:
+ proto_tree_add_boolean(tree, hf_rtcp_xr_stats_loss_flag, tvb, offset, 1, flags);
+ proto_tree_add_boolean(tree, hf_rtcp_xr_stats_dup_flag, tvb, offset, 1, flags);
+ proto_tree_add_boolean(tree, hf_rtcp_xr_stats_jitter_flag, tvb, offset, 1, flags);
+ proto_tree_add_item(tree, hf_rtcp_xr_stats_ttl, tvb, offset, 1, ENC_BIG_ENDIAN);
+ break;
+
+ default:
+ proto_tree_add_item(tree, hf_rtcp_xr_block_specific, tvb, offset, 1, ENC_BIG_ENDIAN);
+ break;
}
}
@@ -1788,33 +1793,33 @@ static gboolean validate_xr_block_length(tvbuff_t *tvb, packet_info *pinfo, int
ti = proto_tree_add_uint(tree, hf_rtcp_xr_block_length, tvb, offset, 2, block_len);
switch (block_type) {
- case RTCP_XR_REF_TIME:
- if (block_len != 2)
- expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_WARN,
- "Invalid block length, should be 2");
- return FALSE;
-
- case RTCP_XR_STATS_SUMRY:
- if (block_len != 9)
- expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_WARN,
- "Invalid block length, should be 9");
- return FALSE;
-
- case RTCP_XR_VOIP_METRCS:
- case RTCP_XR_BT_XNQ:
- if (block_len != 8)
- expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_WARN,
- "Invalid block length, should be 8");
- return FALSE;
+ case RTCP_XR_REF_TIME:
+ if (block_len != 2)
+ expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_WARN,
+ "Invalid block length, should be 2");
+ return FALSE;
+
+ case RTCP_XR_STATS_SUMRY:
+ if (block_len != 9)
+ expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_WARN,
+ "Invalid block length, should be 9");
+ return FALSE;
+
+ case RTCP_XR_VOIP_METRCS:
+ case RTCP_XR_BT_XNQ:
+ if (block_len != 8)
+ expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_WARN,
+ "Invalid block length, should be 8");
+ return FALSE;
- case RTCP_XR_IDMS:
- if (block_len != 7)
- expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_WARN,
- "Invalid block length, should be 7");
- return FALSE;
+ case RTCP_XR_IDMS:
+ if (block_len != 7)
+ expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_WARN,
+ "Invalid block length, should be 7");
+ return FALSE;
- default:
- break;
+ default:
+ break;
}
return TRUE;
}
@@ -1822,11 +1827,7 @@ static gboolean validate_xr_block_length(tvbuff_t *tvb, packet_info *pinfo, int
static int
dissect_rtcp_xr(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree, gint packet_len)
{
- guint block_num = 1;
- guint temp_value = 0; /* used when checking spare bits in block type 8 */
- proto_item *item;
- int hour,min,sec,msec;
- guint32 tmp_ts;
+ guint block_num;
/* Packet length should at least be 4 */
if (packet_len < 4) {
@@ -1836,19 +1837,19 @@ dissect_rtcp_xr(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree,
/* SSRC */
proto_tree_add_item( tree, hf_rtcp_ssrc_sender, tvb, offset, 4, ENC_BIG_ENDIAN );
- offset += 4;
+ offset += 4;
packet_len -= 4;
- for(;packet_len > 0; block_num++) {
- guint block_type = tvb_get_guint8(tvb, offset), block_length = 0;
- gint content_length = 0;
+ for( block_num = 1; packet_len > 0; block_num++) {
+ guint block_type = tvb_get_guint8(tvb, offset), block_length = 0;
+ gint content_length = 0;
/*gboolean valid = TRUE;*/
/* Create a subtree for this block, dont know the length yet*/
- proto_item *block = proto_tree_add_text(tree, tvb, offset, -1, "Block %u", block_num);
+ proto_item *block = proto_tree_add_text(tree, tvb, offset, -1, "Block %u", block_num);
proto_tree *xr_block_tree = proto_item_add_subtree(block, ett_xr_block);
- proto_item *contents = NULL;
- proto_item *content_tree = NULL;
+ proto_item *contents;
+ proto_tree *content_tree;
proto_tree_add_item(xr_block_tree, hf_rtcp_xr_block_type, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1871,7 +1872,7 @@ dissect_rtcp_xr(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree,
proto_tree_add_text(xr_block_tree, tvb, offset + 2, 2, "Block length is greater than packet length");
}
- offset += 4;
+ offset += 4;
packet_len -= 4;
contents = proto_tree_add_text(xr_block_tree, tvb, offset, content_length, "Contents");
@@ -2129,7 +2130,7 @@ dissect_rtcp_xr(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree,
"Chunk: %u -- Null Terminator ",
count);
} else if ( ! ( value & 0x8000 )) {
- const gchar* run_type = (value & 0x4000) ? "1s" : "0s";
+ const gchar *run_type = (value & 0x4000) ? "1s" : "0s";
value &= 0x3FFF;
proto_tree_add_text(chunks_tree, tvb, offset, 2,
"Chunk: %u -- Length Run %s, length: %u",
@@ -2147,6 +2148,7 @@ dissect_rtcp_xr(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree,
break;
}
case RTCP_XR_BT_XNQ: { /* BT XNQ block as defined in RFC5093 */
+ guint temp_value; /* used when checking spare bits in block type 8 */
proto_tree_add_item(content_tree, hf_rtcp_xr_btxnq_begseq, tvb, offset, 2, ENC_BIG_ENDIAN); /* Begin Sequence number */
proto_tree_add_item(content_tree, hf_rtcp_xr_btxnq_endseq, tvb, offset+2, 2, ENC_BIG_ENDIAN); /* End Sequence number */
@@ -2164,69 +2166,75 @@ dissect_rtcp_xr(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree,
offset += 4;
temp_value = tvb_get_ntohl(tvb, offset); /* tDegNet */
- if( (temp_value & 0x0ff000000) != 0)
+ if ((temp_value & 0x0ff000000) != 0)
proto_tree_add_string(content_tree, hf_rtcp_xr_btxnq_spare, tvb, offset, 1, "Warning - spare bits not 0");
proto_tree_add_uint(content_tree, hf_rtcp_xr_btxnq_tdegnet, tvb, offset+1, 3, temp_value & 0x0ffffff);
offset += 4;
temp_value = tvb_get_ntohl(tvb, offset); /* tDegJit */
- if( (temp_value & 0x0ff000000) != 0)
+ if ((temp_value & 0x0ff000000) != 0)
proto_tree_add_string(content_tree, hf_rtcp_xr_btxnq_spare, tvb, offset, 1, "Warning - spare bits not 0");
proto_tree_add_uint(content_tree, hf_rtcp_xr_btxnq_tdegjit, tvb, offset+1, 3, temp_value & 0x0ffffff);
offset += 4;
temp_value = tvb_get_ntohl(tvb, offset); /* ES */
- if( (temp_value & 0x0ff000000) != 0)
+ if ((temp_value & 0x0ff000000) != 0)
proto_tree_add_string(content_tree, hf_rtcp_xr_btxnq_spare, tvb, offset, 1, "Warning - spare bits not 0");
proto_tree_add_uint(content_tree, hf_rtcp_xr_btxnq_es, tvb, offset+1, 3, temp_value & 0x0ffffff);
offset += 4;
temp_value = tvb_get_ntohl(tvb, offset); /* SES */
- if( (temp_value & 0x0ff000000) != 0)
+ if ((temp_value & 0x0ff000000) != 0)
proto_tree_add_string(content_tree, hf_rtcp_xr_btxnq_spare, tvb, offset, 1, "Warning - spare bits not 0");
proto_tree_add_uint(content_tree, hf_rtcp_xr_btxnq_ses, tvb, offset+1, 3, temp_value & 0x0ffffff);
offset += 4;
break;
}
- case RTCP_XR_IDMS:
- offset -= 3;
- proto_tree_add_item(content_tree, hf_rtcp_xr_idms_spst, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset+=3;
- proto_tree_add_item(content_tree, hf_rtcp_xr_idms_pt, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset+=4;
- proto_tree_add_item(content_tree, hf_rtcp_xr_idms_msci, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset+=4;
- proto_tree_add_item(content_tree, hf_rtcp_xr_idms_source_ssrc, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset+=4;
- proto_tree_add_item(content_tree, hf_rtcp_xr_idms_ntp_rcv_ts_msw, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset+=4;
- proto_tree_add_item(content_tree, hf_rtcp_xr_idms_ntp_rcv_ts_lsw, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset+=4;
- item = proto_tree_add_item(content_tree, hf_rtcp_ntp, tvb, offset-8, 8, ENC_TIME_NTP|ENC_BIG_ENDIAN);
- PROTO_ITEM_SET_GENERATED(item);
+ case RTCP_XR_IDMS: {
+ proto_item *item;
+ int hour,min,sec,msec;
+ guint32 tmp_ts;
+ offset -= 3;
+ proto_tree_add_item(content_tree, hf_rtcp_xr_idms_spst, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset+=3;
+ proto_tree_add_item(content_tree, hf_rtcp_xr_idms_pt, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset+=4;
+ proto_tree_add_item(content_tree, hf_rtcp_xr_idms_msci, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset+=4;
+ proto_tree_add_item(content_tree, hf_rtcp_xr_idms_source_ssrc, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset+=4;
+ proto_tree_add_item(content_tree, hf_rtcp_xr_idms_ntp_rcv_ts_msw, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset+=4;
+ proto_tree_add_item(content_tree, hf_rtcp_xr_idms_ntp_rcv_ts_lsw, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset+=4;
+ item = proto_tree_add_item(content_tree, hf_rtcp_ntp, tvb, offset-8, 8, ENC_TIME_NTP|ENC_BIG_ENDIAN);
+ PROTO_ITEM_SET_GENERATED(item);
- proto_tree_add_item(content_tree, hf_rtcp_xr_idms_rtp_ts, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset+=4;
- proto_tree_add_item(content_tree, hf_rtcp_xr_idms_ntp_pres_ts, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset+=4;
+ proto_tree_add_item(content_tree, hf_rtcp_xr_idms_rtp_ts, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset+=4;
+ proto_tree_add_item(content_tree, hf_rtcp_xr_idms_ntp_pres_ts, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset+=4;
- tmp_ts = tvb_get_ntohl(tvb,offset-4);
- hour = ( (int) ( tmp_ts >> 16 ) ) / 3600;
- min = (( (int) ( tmp_ts >> 16 ) ) - hour * 3600) / 60;
- sec = (( (int) ( tmp_ts >> 16 ) ) - hour * 3600 - min * 60);
- msec = ( (int) ( tmp_ts & 0x0000FFFF ) ) / 66;
+ tmp_ts = tvb_get_ntohl(tvb,offset-4);
+ hour = ( (int) ( tmp_ts >> 16 ) ) / 3600;
+ min = (( (int) ( tmp_ts >> 16 ) ) - hour * 3600) / 60;
+ sec = (( (int) ( tmp_ts >> 16 ) ) - hour * 3600 - min * 60);
+ msec = ( (int) ( tmp_ts & 0x0000FFFF ) ) / 66;
- item = proto_tree_add_text( content_tree, tvb, offset-4, 4, "short NTP timestamp of presentation: %d:%02d:%02d:%03d [h:m:s:ms] ", hour,min,sec,msec);
- PROTO_ITEM_SET_GENERATED(item);
- break;
+ item = proto_tree_add_text( content_tree, tvb, offset-4, 4,
+ "short NTP timestamp of presentation: %d:%02d:%02d:%03d [h:m:s:ms] ",
+ hour,min,sec,msec);
+ PROTO_ITEM_SET_GENERATED(item);
+ }
+ break;
default:
/* skip over the unknown block */
offset += content_length;
break;
- }
+ } /* switch (block_type) */
packet_len -= content_length;
- }
+ } /* for (block_num = ...) */
return offset;
}
@@ -2234,15 +2242,16 @@ static int
dissect_rtcp_rr( packet_info *pinfo, tvbuff_t *tvb, int offset, proto_tree *tree,
unsigned int count, unsigned int packet_length )
{
- unsigned int counter = 1;
- proto_tree *ssrc_tree = (proto_tree*) NULL;
- proto_tree *ssrc_sub_tree = (proto_tree*) NULL;
- proto_tree *high_sec_tree = (proto_tree*) NULL;
- proto_item *ti = (proto_item*) NULL;
- guint8 rr_flt;
- int rr_offset = offset;
+ unsigned int counter;
+ proto_tree *ssrc_tree;
+ proto_tree *ssrc_sub_tree;
+ proto_tree *high_sec_tree;
+ proto_item *ti;
+ guint8 rr_flt;
+ int rr_offset = offset;
+ counter = 1;
while ( counter <= count ) {
guint32 lsr, dlsr;
@@ -2329,9 +2338,9 @@ static int
dissect_rtcp_sr( packet_info *pinfo, tvbuff_t *tvb, int offset, proto_tree *tree,
unsigned int count, unsigned int packet_length )
{
- proto_item* item;
- guint32 ts_msw, ts_lsw;
- int sr_offset = offset;
+ proto_item *item;
+ guint32 ts_msw, ts_lsw;
+ int sr_offset = offset;
/* NTP timestamp */
ts_msw = tvb_get_ntohl(tvb, offset);
@@ -2385,14 +2394,14 @@ dissect_rtcp_sr( packet_info *pinfo, tvbuff_t *tvb, int offset, proto_tree *tree
void show_setup_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
/* Conversation and current data */
- conversation_t *p_conv = NULL;
- struct _rtcp_conversation_info *p_conv_data = NULL;
+ struct _rtcp_conversation_info *p_conv_data;
/* Use existing packet data if available */
p_conv_data = p_get_proto_data(pinfo->fd, proto_rtcp);
if (!p_conv_data)
{
+ conversation_t *p_conv;
/* First time, get info from conversation */
p_conv = find_conversation(pinfo->fd->num, &pinfo->net_dst, &pinfo->net_src,
pinfo->ptype,
@@ -2429,7 +2438,7 @@ void show_setup_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (rtcp_setup_tree)
{
/* Add details into subtree */
- proto_item* item = proto_tree_add_uint(rtcp_setup_tree, hf_rtcp_setup_frame,
+ proto_item *item = proto_tree_add_uint(rtcp_setup_tree, hf_rtcp_setup_frame,
tvb, 0, 0, p_conv_data->setup_frame_number);
PROTO_ITEM_SET_GENERATED(item);
item = proto_tree_add_string(rtcp_setup_tree, hf_rtcp_setup_method,
@@ -2443,9 +2452,9 @@ void show_setup_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Update conversation data to record time that outgoing rr/sr was sent */
static void remember_outgoing_sr(packet_info *pinfo, long lsr)
{
- conversation_t *p_conv = NULL;
- struct _rtcp_conversation_info *p_conv_data = NULL;
- struct _rtcp_conversation_info *p_packet_data = NULL;
+ conversation_t *p_conv;
+ struct _rtcp_conversation_info *p_conv_data;
+ struct _rtcp_conversation_info *p_packet_data;
/* This information will be accessed when an incoming packet comes back to
the side that sent this packet, so no use storing in the packet
@@ -2459,7 +2468,7 @@ static void remember_outgoing_sr(packet_info *pinfo, long lsr)
/* Look first in packet info */
p_packet_data = p_get_proto_data(pinfo->fd, proto_rtcp);
if (p_packet_data && p_packet_data->last_received_set &&
- p_packet_data->last_received_frame_number >= pinfo->fd->num)
+ (p_packet_data->last_received_frame_number >= pinfo->fd->num))
{
/* We already did this, OK */
return;
@@ -2542,9 +2551,9 @@ static void calculate_roundtrip_delay(tvbuff_t *tvb, packet_info *pinfo,
this packet time, and dlsr
*****************************************************/
- conversation_t *p_conv = NULL;
- struct _rtcp_conversation_info *p_conv_data = NULL;
- struct _rtcp_conversation_info *p_packet_data = NULL;
+ conversation_t *p_conv;
+ struct _rtcp_conversation_info *p_conv_data;
+ struct _rtcp_conversation_info *p_packet_data;
/*************************************************/
@@ -2641,7 +2650,7 @@ static void add_roundtrip_delay_info(tvbuff_t *tvb, packet_info *pinfo, proto_tr
gint delay)
{
/* 'Last SR' frame used in calculation. Show this even if no delay shown */
- proto_item* item = proto_tree_add_uint(tree,
+ proto_item *item = proto_tree_add_uint(tree,
hf_rtcp_last_sr_timestamp_frame,
tvb, 0, 0, frame);
PROTO_ITEM_SET_GENERATED(item);
@@ -2692,17 +2701,17 @@ rtcp_packet_type_to_tree( int rtcp_packet_type)
int tree;
switch(rtcp_packet_type) {
- case RTCP_SR: tree = ett_rtcp_sr; break;
- case RTCP_RR: tree = ett_rtcp_rr; break;
- case RTCP_SDES: tree = ett_rtcp_sdes; break;
- case RTCP_BYE: tree = ett_rtcp_bye; break;
- case RTCP_APP: tree = ett_rtcp_app; break;
- case RTCP_RTPFB: tree = ett_rtcp_rtpfb; break;
- case RTCP_PSFB: tree = ett_rtcp_psfb; break;
- case RTCP_XR: tree = ett_rtcp_xr; break;
- case RTCP_FIR: tree = ett_rtcp_fir; break;
- case RTCP_NACK: tree = ett_rtcp_nack; break;
- default: tree = ett_rtcp;
+ case RTCP_SR: tree = ett_rtcp_sr; break;
+ case RTCP_RR: tree = ett_rtcp_rr; break;
+ case RTCP_SDES: tree = ett_rtcp_sdes; break;
+ case RTCP_BYE: tree = ett_rtcp_bye; break;
+ case RTCP_APP: tree = ett_rtcp_app; break;
+ case RTCP_RTPFB: tree = ett_rtcp_rtpfb; break;
+ case RTCP_PSFB: tree = ett_rtcp_psfb; break;
+ case RTCP_XR: tree = ett_rtcp_xr; break;
+ case RTCP_FIR: tree = ett_rtcp_fir; break;
+ case RTCP_NACK: tree = ett_rtcp_nack; break;
+ default: tree = ett_rtcp;
}
return tree;
}
@@ -2710,27 +2719,18 @@ rtcp_packet_type_to_tree( int rtcp_packet_type)
static void
dissect_rtcp( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
{
- proto_item *ti = NULL;
- proto_tree *rtcp_tree = NULL;
- unsigned int temp_byte = 0;
- unsigned int padding_set = 0;
- unsigned int elem_count = 0;
- unsigned int packet_type = 0;
- unsigned int offset = 0;
- guint16 packet_length = 0;
- guint16 total_packet_length = 0;
- guint8 padding_length;
- unsigned int padding_offset = 0;
- guint rtcp_subtype = 0;
- guint32 app_length = 0;
- gboolean srtcp_encrypted = FALSE;
- gboolean srtcp_now_encrypted = FALSE;
- conversation_t *p_conv = NULL;
- struct _rtcp_conversation_info *p_conv_data = NULL;
- struct srtp_info *srtcp_info = NULL;
- gboolean e_bit;
- guint32 srtcp_offset = 0;
- guint32 srtcp_index = 0;
+ proto_item *ti;
+ proto_tree *rtcp_tree = NULL;
+ guint padding_set = 0;
+ guint offset = 0;
+ guint total_packet_length = 0;
+ guint padding_offset = 0;
+ gboolean srtcp_encrypted = FALSE;
+ gboolean srtcp_now_encrypted = FALSE;
+ conversation_t *p_conv;
+ struct srtp_info *srtcp_info = NULL;
+ guint32 srtcp_offset = 0;
+ guint32 srtcp_index = 0;
/* first see if this conversation is encrypted SRTP, and if so do not try to dissect the payload(s) */
p_conv = find_conversation(pinfo->fd->num, &pinfo->net_src, &pinfo->net_dst,
@@ -2738,12 +2738,14 @@ dissect_rtcp( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
pinfo->srcport, pinfo->destport, NO_ADDR_B);
if (p_conv)
{
+ struct _rtcp_conversation_info *p_conv_data;
p_conv_data = conversation_get_proto_data(p_conv, proto_rtcp);
if (p_conv_data && p_conv_data->srtcp_info)
{
+ gboolean e_bit;
srtcp_info = p_conv_data->srtcp_info;
/* get the offset to the start of the SRTCP fields at the end of the packet */
- srtcp_offset = tvb_length_remaining(tvb,offset) - srtcp_info->auth_tag_len - srtcp_info->mki_len - 4;
+ srtcp_offset = tvb_length_remaining(tvb, offset) - srtcp_info->auth_tag_len - srtcp_info->mki_len - 4;
/* It has been setup as SRTCP, but skip to the SRTCP E field at the end
to see if this particular packet is encrypted or not. The E bit is the MSB. */
srtcp_index = tvb_get_ntohl(tvb,srtcp_offset);
@@ -2767,6 +2769,10 @@ dissect_rtcp( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
* that enables us to break from the while loop.
*/
while ( !srtcp_now_encrypted && tvb_bytes_exist( tvb, offset, 4) ) {
+ guint temp_byte;
+ guint elem_count;
+ guint packet_type;
+ guint packet_length;
/*
* First retrieve the packet_type
*/
@@ -2779,7 +2785,7 @@ dissect_rtcp( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
break;
col_add_fstr(pinfo->cinfo, COL_INFO, "%s ",
- val_to_str(packet_type, rtcp_packet_type_vals, "Unknown"));
+ val_to_str_const(packet_type, rtcp_packet_type_vals, "Unknown"));
/*
* get the packet-length for the complete RTCP packet
@@ -2789,9 +2795,9 @@ dissect_rtcp( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
ti = proto_tree_add_item(tree, proto_rtcp, tvb, offset, packet_length, ENC_NA );
proto_item_append_text(ti, " (%s)",
- val_to_str(packet_type,
- rtcp_packet_type_vals,
- "Unknown"));
+ val_to_str_const(packet_type,
+ rtcp_packet_type_vals,
+ "Unknown"));
rtcp_tree = proto_item_add_subtree( ti, rtcp_packet_type_to_tree(packet_type) );
@@ -2860,8 +2866,10 @@ dissect_rtcp( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
offset = dissect_rtcp_length_field(rtcp_tree, tvb, offset);
offset = dissect_rtcp_bye( tvb, pinfo, offset, rtcp_tree, elem_count );
break;
- case RTCP_APP:
+ case RTCP_APP: {
/* Subtype, 5 bits */
+ guint rtcp_subtype;
+ guint app_length;
rtcp_subtype = elem_count;
proto_tree_add_uint( rtcp_tree, hf_rtcp_subtype, tvb, offset, 1, elem_count );
offset++;
@@ -2872,6 +2880,7 @@ dissect_rtcp( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
app_length = tvb_get_ntohs( tvb, offset ) <<2;
offset = dissect_rtcp_length_field(rtcp_tree, tvb, offset);
offset = dissect_rtcp_app( tvb, pinfo, offset,rtcp_tree, padding_set, packet_length - 4, rtcp_subtype, app_length);
+ }
break;
case RTCP_XR:
/* Reserved, 5 bits, Ignore */
@@ -2911,6 +2920,7 @@ dissect_rtcp( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
* We only have to check for this at the end of the LAST RTCP message
*/
if ( padding_set ) {
+ guint padding_length;
/* The last RTCP message in the packet has padding - find it.
*
* The padding count is found at an offset of padding_offset; it
@@ -2946,7 +2956,7 @@ dissect_rtcp( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
}
}
/* offset should be total_packet_length by now... */
- else if (offset == (unsigned int)total_packet_length)
+ else if (offset == total_packet_length)
{
ti = proto_tree_add_boolean_format_value(tree, hf_rtcp_length_check, tvb,
0, 0, TRUE, "OK - %u bytes",
@@ -2972,8 +2982,7 @@ dissect_rtcp( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
void
proto_register_rtcp(void)
{
- static hf_register_info hf[] =
- {
+ static hf_register_info hf[] = {
{
&hf_rtcp_version,
{
@@ -4930,7 +4939,7 @@ proto_register_rtcp(void)
&ett_sdes,
&ett_sdes_item,
&ett_PoC1,
- &ett_mux,
+ &ett_mux,
&ett_rtcp_setup,
&ett_rtcp_roundtrip_delay,
&ett_xr_block,
diff --git a/epan/dissectors/packet-rtmpt.c b/epan/dissectors/packet-rtmpt.c
index 16fa656b9a..e2e9d606c4 100644
--- a/epan/dissectors/packet-rtmpt.c
+++ b/epan/dissectors/packet-rtmpt.c
@@ -35,7 +35,18 @@
* especially regarding the lengths and the structures.
*
* Documentation:
-* RTMP protocol description on Wiki of Red5 Open Source Flash Server
+* RTMP protocol description on Wiki of Red5 Open Source Flash Server at
+*
+* http://trac.red5.org/wiki/Codecs/RTMPSpecification
+*
+* and the pages to which it links:
+*
+* http://osflash.org/documentation/rtmp
+* http://wiki.gnashdev.org/RTMP
+* http://wiki.gnashdev.org/RTMP_Messages_Decoded
+* http://www.acmewebworks.com/Downloads/openCS/TheAMF.pdf
+* http://www.gnashdev.org/files/rtmp-decoded.pdf
+*
* Default TCP port is 1935
*/
@@ -405,11 +416,11 @@ typedef struct rtmpt_frag {
* ID - used for defaulting short headers
*/
typedef struct rtmpt_id {
- guint32 ts; /* bytes 1-3 */
+ guint32 ts; /* bytes 1-3 */
guint32 tsd;
- guint32 len; /* bytes 4-6 */
- guint32 src; /* bytes 8-11 */
- guint8 cmd; /* byte 7 */
+ guint32 len; /* bytes 4-6 */
+ guint32 src; /* bytes 8-11 */
+ guint8 cmd; /* byte 7 */
emem_tree_t *packets;
} rtmpt_id_t;
@@ -795,6 +806,7 @@ dissect_rtmpt_body_command(tvbuff_t *tvb, gint offset, proto_tree *rtmpt_tree, g
guint iValueExtra = 0;
gchar *sValue = "";
int hfvalue = -1;
+ guint encoding = ENC_NA;
guint iPush = 0;
proto_tree *rtmpt_tree_prop = NULL;
proto_item *ti = NULL;
@@ -825,11 +837,13 @@ dissect_rtmpt_body_command(tvbuff_t *tvb, gint offset, proto_tree *rtmpt_tree, g
case RTMPT_AMF_NUMBER:
iValueLength = 8;
hfvalue = hf_rtmpt_amf_number;
+ encoding = ENC_BIG_ENDIAN;
sValue = ep_strdup_printf(" %." STRINGIFY(DBL_DIG) "g", tvb_get_ntohieee_double(tvb, iValueOffset));
break;
case RTMPT_AMF_BOOLEAN:
iValueLength = 1;
hfvalue = hf_rtmpt_amf_boolean;
+ encoding = ENC_BIG_ENDIAN;
sValue = tvb_get_guint8(tvb, iValueOffset) ? " true" : " false";
break;
case RTMPT_AMF_STRING:
@@ -837,12 +851,14 @@ dissect_rtmpt_body_command(tvbuff_t *tvb, gint offset, proto_tree *rtmpt_tree, g
iValueOffset += 2;
iValueExtra = 3;
hfvalue = hf_rtmpt_amf_string;
+ encoding = ENC_ASCII|ENC_NA;
sValue = ep_strdup_printf(" '%s'", tvb_get_ephemeral_string(tvb, iValueOffset, CLAMP(iValueLength, 0, ITEM_LABEL_LENGTH+1)));
break;
case RTMPT_AMF_OBJECT:
/* Uncounted list type, with end marker */
iValueLength = 0;
hfvalue = hf_rtmpt_amf_object;
+ encoding = ENC_NA;
iPush = 1;
break;
case RTMPT_AMF_NULL:
@@ -852,6 +868,7 @@ dissect_rtmpt_body_command(tvbuff_t *tvb, gint offset, proto_tree *rtmpt_tree, g
case RTMPT_AMF_REFERENCE:
iValueLength = 2;
hfvalue = hf_rtmpt_amf_reference;
+ encoding = ENC_BIG_ENDIAN;
sValue = ep_strdup_printf(" %d", tvb_get_ntohs(tvb, iValueOffset));
break;
case RTMPT_AMF_ECMA_ARRAY:
@@ -866,6 +883,7 @@ dissect_rtmpt_body_command(tvbuff_t *tvb, gint offset, proto_tree *rtmpt_tree, g
iValueOffset += 4;
iValueExtra = 5;
hfvalue = hf_rtmpt_amf_ecmaarray;
+ encoding = ENC_NA;
iPush = 1;
break;
case RTMPT_AMF_STRICT_ARRAY:
@@ -875,11 +893,13 @@ dissect_rtmpt_body_command(tvbuff_t *tvb, gint offset, proto_tree *rtmpt_tree, g
* properties */
iValueLength = 4;
hfvalue = hf_rtmpt_amf_strictarray;
+ encoding = ENC_NA;
iPush = 1;
break;
case RTMPT_AMF_DATE:
iValueLength = 10;
hfvalue = hf_rtmpt_amf_date;
+ encoding = ENC_NA;
break;
case RTMPT_AMF_LONG_STRING:
case RTMPT_AMF_XML: /* same representation */
@@ -887,6 +907,7 @@ dissect_rtmpt_body_command(tvbuff_t *tvb, gint offset, proto_tree *rtmpt_tree, g
iValueOffset += 4;
iValueExtra = 5;
hfvalue = (iObjType==RTMPT_AMF_XML) ? hf_rtmpt_amf_xml : hf_rtmpt_amf_longstring;
+ encoding = ENC_ASCII|ENC_NA; /* XXX - code page? */
sValue = ep_strdup_printf(" '%s'", tvb_get_ephemeral_string(tvb, iValueOffset, CLAMP(iValueLength, 0, ITEM_LABEL_LENGTH+1)));
break;
case RTMPT_AMF_UNSUPPORTED:
@@ -895,6 +916,7 @@ dissect_rtmpt_body_command(tvbuff_t *tvb, gint offset, proto_tree *rtmpt_tree, g
case RTMPT_AMF_INT64:
iValueLength = 8;
hfvalue = hf_rtmpt_amf_int64;
+ encoding = ENC_BIG_ENDIAN;
sValue = ep_strdup_printf(" %" G_GINT64_MODIFIER "d", tvb_get_ntoh64(tvb, iValueOffset));
break;
default:
@@ -916,7 +938,7 @@ dissect_rtmpt_body_command(tvbuff_t *tvb, gint offset, proto_tree *rtmpt_tree, g
iPropertyOffset,
iPropertyLength+iValueExtra+iValueLength,
"Property '%s' %s%s",
- sProperty, val_to_str(iObjType, rtmpt_type_vals, "Unknown"), sValue);
+ sProperty, val_to_str_const(iObjType, rtmpt_type_vals, "Unknown"), sValue);
rtmpt_tree_prop = proto_item_add_subtree(ti, ett_rtmpt_property);
ti = proto_tree_add_text(rtmpt_tree_prop, tvb,
@@ -934,7 +956,7 @@ dissect_rtmpt_body_command(tvbuff_t *tvb, gint offset, proto_tree *rtmpt_tree, g
ti = proto_tree_add_text(rtmpt_tree_prop, tvb,
iValueOffset-iValueExtra, iValueExtra+iValueLength,
"%s%s",
- val_to_str(iObjType, rtmpt_type_vals, "Unknown"), sValue);
+ val_to_str_const(iObjType, rtmpt_type_vals, "Unknown"), sValue);
val_tree = proto_item_add_subtree(ti, ett_rtmpt_value);
proto_tree_add_item(val_tree, hf_rtmpt_amf_type, tvb, iValueOffset-iValueExtra, 1, ENC_BIG_ENDIAN);
@@ -943,8 +965,8 @@ dissect_rtmpt_body_command(tvbuff_t *tvb, gint offset, proto_tree *rtmpt_tree, g
} else if (iObjType==RTMPT_AMF_LONG_STRING || iObjType==RTMPT_AMF_XML) {
proto_tree_add_item(val_tree, hf_rtmpt_amf_longstringlength, tvb, iValueOffset-iValueExtra+1, 4, ENC_BIG_ENDIAN);
}
- if (iValueLength>0 && hfvalue!=-1) {
- proto_tree_add_item(val_tree, hfvalue, tvb, iValueOffset, iValueLength, FALSE);
+ if (iValueLength>0 && hfvalue != -1) {
+ proto_tree_add_item(val_tree, hfvalue, tvb, iValueOffset, iValueLength, encoding);
}
}
@@ -957,7 +979,7 @@ dissect_rtmpt_body_command(tvbuff_t *tvb, gint offset, proto_tree *rtmpt_tree, g
ep_stack_push(amfpcs, GINT_TO_POINTER(pc));
pc = 0;
ep_stack_push(amftis, ti_object);
- ti_object = proto_tree_add_item(rtmpt_tree_prop, hfvalue, tvb, iValueOffset+iValueLength, 1, FALSE);
+ ti_object = proto_tree_add_item(rtmpt_tree_prop, hfvalue, tvb, iValueOffset+iValueLength, 1, encoding);
ep_stack_push(amftrs, rtmpt_tree);
rtmpt_tree = proto_item_add_subtree(ti_object, ett_rtmpt_array);
@@ -1006,10 +1028,10 @@ dissect_rtmpt_body_audio(tvbuff_t *tvb, gint offset, proto_tree *rtmpt_tree)
iCtl = tvb_get_guint8(tvb, offset);
ai = proto_tree_add_uint_format(rtmpt_tree, hf_rtmpt_audio_control, tvb, offset, 1, iCtl,
"Control: 0x%02x (%s %s %s %s)", iCtl,
- val_to_str((iCtl & 0xf0)>>4, rtmpt_audio_codecs, "Unknown codec"),
- val_to_str((iCtl & 0x0c)>>2, rtmpt_audio_rates, "Unknown rate"),
- val_to_str((iCtl & 0x02)>>1, rtmpt_audio_sizes, "Unknown sample size"),
- val_to_str(iCtl & 0x01, rtmpt_audio_types, "Unknown channel count"));
+ val_to_str_const((iCtl & 0xf0)>>4, rtmpt_audio_codecs, "Unknown codec"),
+ val_to_str_const((iCtl & 0x0c)>>2, rtmpt_audio_rates, "Unknown rate"),
+ val_to_str_const((iCtl & 0x02)>>1, rtmpt_audio_sizes, "Unknown sample size"),
+ val_to_str_const(iCtl & 0x01, rtmpt_audio_types, "Unknown channel count"));
at = proto_item_add_subtree(ai, ett_rtmpt_audio_control);
proto_tree_add_uint(at, hf_rtmpt_audio_format, tvb, offset, 1, iCtl);
@@ -1029,8 +1051,8 @@ dissect_rtmpt_body_video(tvbuff_t *tvb, gint offset, proto_tree *rtmpt_tree)
iCtl = tvb_get_guint8(tvb, offset);
vi = proto_tree_add_uint_format(rtmpt_tree, hf_rtmpt_video_control, tvb, offset, 1, iCtl,
"Control: 0x%02x (%s %s)", iCtl,
- val_to_str((iCtl & 0xf0)>>4, rtmpt_video_types, "Unknown frame type"),
- val_to_str(iCtl & 0x0f, rtmpt_video_codecs, "Unknown codec"));
+ val_to_str_const((iCtl & 0xf0)>>4, rtmpt_video_types, "Unknown frame type"),
+ val_to_str_const(iCtl & 0x0f, rtmpt_video_codecs, "Unknown codec"));
vt = proto_item_add_subtree(vi, ett_rtmpt_video_control);
proto_tree_add_uint(vt, hf_rtmpt_video_type, tvb, offset, 1, iCtl);
@@ -1054,7 +1076,8 @@ dissect_rtmpt_body_aggregate(tvbuff_t *tvb, gint offset, proto_tree *rtmpt_tree)
iTagType = tvb_get_guint8(tvb, offset + 0);
iDataSize = tvb_get_ntoh24(tvb, offset + 1);
- tag_item = proto_tree_add_text(rtmpt_tree, tvb, offset, 11+iDataSize+4, "%s", val_to_str(iTagType, rtmpt_tag_vals, "Unknown Tag"));
+ tag_item = proto_tree_add_text(rtmpt_tree, tvb, offset, 11+iDataSize+4, "%s",
+ val_to_str_const(iTagType, rtmpt_tag_vals, "Unknown Tag"));
tag_tree = proto_item_add_subtree(tag_item, ett_rtmpt_tag);
proto_tree_add_item(tag_tree, hf_rtmpt_tag_type, tvb, offset+0, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tag_tree, hf_rtmpt_tag_datasize, tvb, offset+1, 3, ENC_BIG_ENDIAN);
@@ -1089,17 +1112,17 @@ dissect_rtmpt_body_aggregate(tvbuff_t *tvb, gint offset, proto_tree *rtmpt_tree)
static void
dissect_rtmpt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, rtmpt_conv_t *rconv, int cdir, rtmpt_packet_t *tp)
{
- proto_tree *rtmpt_tree = NULL;
- proto_tree *rtmptroot_tree = NULL;
- proto_item *ti = NULL;
- static guint iPreviousFrameNumber = 0;
- gint offset = 0;
-
- gchar *sDesc = NULL;
- gint deschasopcode = FALSE;
- gboolean haveETS = FALSE;
- guint32 iBodyOffset = 0;
- guint32 iBodyRemain = 0;
+ proto_tree *rtmpt_tree = NULL;
+ proto_tree *rtmptroot_tree = NULL;
+ proto_item *ti = NULL;
+ static guint iPreviousFrameNumber = 0;
+ gint offset = 0;
+
+ gchar *sDesc = NULL;
+ gint deschasopcode = FALSE;
+ gboolean haveETS = FALSE;
+ guint32 iBodyOffset = 0;
+ guint32 iBodyRemain = 0;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "RTMP");
@@ -1377,7 +1400,6 @@ dissect_rtmpt_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, rtmpt_
id = tf->saved.d[0];
header_type = (id>>6) & 3;
basic_hlen = rtmpt_basic_header_length(id);
- message_hlen = rtmpt_message_header_length(id);
if (header_type<3 && tf->have<basic_hlen+3 && tf->have+want>=basic_hlen+3) {
if (pntoh24(tf->saved.d+basic_hlen)==0xffffff) {
@@ -1953,7 +1975,7 @@ proto_register_rtmpt(void)
NULL, 0x0, "RTMPT AMF number", HFILL }},
{ &hf_rtmpt_amf_boolean,
- { "Boolean", "rtmpt.amf.boolean", FT_BOOLEAN, BASE_DEC,
+ { "Boolean", "rtmpt.amf.boolean", FT_BOOLEAN, BASE_NONE,
NULL, 0x0, "RTMPT AMF boolean", HFILL }},
{ &hf_rtmpt_amf_stringlength,
diff --git a/epan/dissectors/packet-rtnet.c b/epan/dissectors/packet-rtnet.c
index fa95294e25..ff8849bf31 100644
--- a/epan/dissectors/packet-rtnet.c
+++ b/epan/dissectors/packet-rtnet.c
@@ -31,11 +31,8 @@
#include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-#include <time.h>
-
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/addr_resolv.h>
#include <epan/etypes.h>
@@ -979,7 +976,7 @@ proto_register_rtmac(void) {
{ "Padding",
"tdma-v1.msg.ack_conf.padding",
FT_UINT8, BASE_HEX, NULL, 0x0,
- "TDMA PAdding", HFILL }},
+ "TDMA Padding", HFILL }},
{ &hf_tdma_v1_msg_ack_conf_mtu,
{ "MTU",
diff --git a/epan/dissectors/packet-rtp-midi.c b/epan/dissectors/packet-rtp-midi.c
index 3c6c969f56..5199c79020 100644
--- a/epan/dissectors/packet-rtp-midi.c
+++ b/epan/dissectors/packet-rtp-midi.c
@@ -1,4 +1,4 @@
-/* packet-rtpmidi.c
+/* packet-rtp-midi.c
*
* Routines for RFC 4695/6295 RTP-MIDI dissection
* Copyright 2006-2012, Tobias Erichsen <t.erichsen@gmx.de>
@@ -53,11 +53,9 @@
#endif
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/prefs.h>
-
-#include <stdio.h>
-#include <string.h>
#include <epan/conversation.h>
#include <epan/tap.h>
@@ -2513,388 +2511,388 @@ static const true_false_string rtp_midi_sj_chapter_x_flag_l = {
-static int hf_rtp_midi_bflag = -1;
-static int hf_rtp_midi_jflag = -1;
-static int hf_rtp_midi_zflag = -1;
-static int hf_rtp_midi_pflag = -1;
-static int hf_rtp_midi_shortlen = -1;
-static int hf_rtp_midi_longlen = -1;
-
-static int hf_rtp_midi_sflag = -1;
-static int hf_rtp_midi_yflag = -1;
-static int hf_rtp_midi_aflag = -1;
-static int hf_rtp_midi_hflag = -1;
-static int hf_rtp_midi_totchan = -1;
-static int hf_rtp_midi_check_seq_num = -1;
-
-static int hf_rtp_midi_deltatime1 = -1;
-static int hf_rtp_midi_deltatime2 = -1;
-static int hf_rtp_midi_deltatime3 = -1;
-static int hf_rtp_midi_deltatime4 = -1;
-
-static int hf_rtp_midi_channel_status = -1;
-static int hf_rtp_midi_common_status = -1;
-static int hf_rtp_midi_channel = -1;
-static int hf_rtp_midi_note = -1;
-static int hf_rtp_midi_velocity = -1;
-static int hf_rtp_midi_pressure = -1;
-static int hf_rtp_midi_controller = -1;
-static int hf_rtp_midi_controller_value = -1;
-static int hf_rtp_midi_program = -1;
-static int hf_rtp_midi_channel_pressure = -1;
-static int hf_rtp_midi_pitch_bend = -1;
-static int hf_rtp_midi_pitch_bend_truncated = -1;
-
-static int hf_rtp_midi_manu_short = -1;
-static int hf_rtp_midi_manu_long = -1;
-
-static int hf_rtp_midi_sysjour_toc_s = -1;
-static int hf_rtp_midi_sysjour_toc_d = -1;
-static int hf_rtp_midi_sysjour_toc_v = -1;
-static int hf_rtp_midi_sysjour_toc_q = -1;
-static int hf_rtp_midi_sysjour_toc_f = -1;
-static int hf_rtp_midi_sysjour_toc_x = -1;
-static int hf_rtp_midi_sysjour_len = -1;
-
-static int hf_rtp_midi_chanjour_sflag = -1;
-static int hf_rtp_midi_chanjour_chan = -1;
-static int hf_rtp_midi_chanjour_hflag = -1;
-static int hf_rtp_midi_chanjour_len = -1;
-static int hf_rtp_midi_chanjour_toc_p = -1;
-static int hf_rtp_midi_chanjour_toc_c = -1;
-static int hf_rtp_midi_chanjour_toc_m = -1;
-static int hf_rtp_midi_chanjour_toc_w = -1;
-static int hf_rtp_midi_chanjour_toc_n = -1;
-static int hf_rtp_midi_chanjour_toc_e = -1;
-static int hf_rtp_midi_chanjour_toc_t = -1;
-static int hf_rtp_midi_chanjour_toc_a = -1;
-
-static int hf_rtp_midi_cj_chapter_p_sflag = -1;
-static int hf_rtp_midi_cj_chapter_p_program = -1;
-static int hf_rtp_midi_cj_chapter_p_bflag = -1;
-static int hf_rtp_midi_cj_chapter_p_bank_msb = -1;
-static int hf_rtp_midi_cj_chapter_p_xflag = -1;
-static int hf_rtp_midi_cj_chapter_p_bank_lsb = -1;
-
-static int hf_rtp_midi_cj_chapter_c_sflag = -1;
-static int hf_rtp_midi_cj_chapter_c_length = -1;
-static int hf_rtp_midi_cj_chapter_c_number = -1;
-static int hf_rtp_midi_cj_chapter_c_aflag = -1;
-static int hf_rtp_midi_cj_chapter_c_value = -1;
-static int hf_rtp_midi_cj_chapter_c_tflag = -1;
-static int hf_rtp_midi_cj_chapter_c_alt = -1;
-
-static int hf_rtp_midi_cj_chapter_m_sflag = -1;
-static int hf_rtp_midi_cj_chapter_m_pflag = -1;
-static int hf_rtp_midi_cj_chapter_m_eflag = -1;
-static int hf_rtp_midi_cj_chapter_m_uflag = -1;
-static int hf_rtp_midi_cj_chapter_m_wflag = -1;
-static int hf_rtp_midi_cj_chapter_m_zflag = -1;
-static int hf_rtp_midi_cj_chapter_m_length = -1;
-static int hf_rtp_midi_cj_chapter_m_qflag = -1;
-static int hf_rtp_midi_cj_chapter_m_pending = -1;
-static int hf_rtp_midi_cj_chapter_m_log_sflag = -1;
-static int hf_rtp_midi_cj_chapter_m_log_pnum_lsb = -1;
-static int hf_rtp_midi_cj_chapter_m_log_qflag = -1;
-static int hf_rtp_midi_cj_chapter_m_log_pnum_msb = -1;
-static int hf_rtp_midi_cj_chapter_m_log_jflag = -1;
-static int hf_rtp_midi_cj_chapter_m_log_kflag = -1;
-static int hf_rtp_midi_cj_chapter_m_log_lflag = -1;
-static int hf_rtp_midi_cj_chapter_m_log_mflag = -1;
-static int hf_rtp_midi_cj_chapter_m_log_nflag = -1;
-static int hf_rtp_midi_cj_chapter_m_log_tflag = -1;
-static int hf_rtp_midi_cj_chapter_m_log_vflag = -1;
-static int hf_rtp_midi_cj_chapter_m_log_rflag = -1;
-static int hf_rtp_midi_cj_chapter_m_log_msb = -1;
-static int hf_rtp_midi_cj_chapter_m_log_msb_x = -1;
-static int hf_rtp_midi_cj_chapter_m_log_lsb = -1;
-static int hf_rtp_midi_cj_chapter_m_log_lsb_x = -1;
-static int hf_rtp_midi_cj_chapter_m_log_a_button_g = -1;
-static int hf_rtp_midi_cj_chapter_m_log_a_button_x = -1;
-static int hf_rtp_midi_cj_chapter_m_log_a_button = -1;
-static int hf_rtp_midi_cj_chapter_m_log_c_button = -1;
-static int hf_rtp_midi_cj_chapter_m_log_c_button_g = -1;
-static int hf_rtp_midi_cj_chapter_m_log_c_button_r = -1;
-static int hf_rtp_midi_cj_chapter_m_log_count = -1;
-static int hf_rtp_midi_cj_chapter_m_log_count_x = -1;
-
-static int hf_rtp_midi_cj_chapter_w_sflag = -1;
-static int hf_rtp_midi_cj_chapter_w_first = -1;
-static int hf_rtp_midi_cj_chapter_w_rflag = -1;
-static int hf_rtp_midi_cj_chapter_w_second = -1;
-
-static int hf_rtp_midi_cj_chapter_n_bflag = -1;
-static int hf_rtp_midi_cj_chapter_n_len = -1;
-static int hf_rtp_midi_cj_chapter_n_low = -1;
-static int hf_rtp_midi_cj_chapter_n_high = -1;
-static int hf_rtp_midi_cj_chapter_n_log_sflag = -1;
-static int hf_rtp_midi_cj_chapter_n_log_notenum = -1;
-static int hf_rtp_midi_cj_chapter_n_log_yflag = -1;
-static int hf_rtp_midi_cj_chapter_n_log_velocity = -1;
-static int hf_rtp_midi_cj_chapter_n_log_octet = -1;
-
-static int hf_rtp_midi_cj_chapter_e_sflag = -1;
-static int hf_rtp_midi_cj_chapter_e_len = -1;
-static int hf_rtp_midi_cj_chapter_e_log_sflag = -1;
-static int hf_rtp_midi_cj_chapter_e_log_notenum = -1;
-static int hf_rtp_midi_cj_chapter_e_log_vflag = -1;
-static int hf_rtp_midi_cj_chapter_e_log_velocity = -1;
-static int hf_rtp_midi_cj_chapter_e_log_count = -1;
-
-static int hf_rtp_midi_cj_chapter_t_sflag = -1;
-static int hf_rtp_midi_cj_chapter_t_pressure = -1;
-
-static int hf_rtp_midi_cj_chapter_a_sflag = -1;
-static int hf_rtp_midi_cj_chapter_a_len = -1;
-static int hf_rtp_midi_cj_chapter_a_log_sflag = -1;
-static int hf_rtp_midi_cj_chapter_a_log_notenum = -1;
-static int hf_rtp_midi_cj_chapter_a_log_xflag = -1;
-static int hf_rtp_midi_cj_chapter_a_log_pressure = -1;
-
-static int hf_rtp_midi_sj_chapter_v_sflag = -1;
-static int hf_rtp_midi_sj_chapter_v_count = -1;
-
-static int hf_rtp_midi_sj_chapter_d_sflag = -1;
-static int hf_rtp_midi_sj_chapter_d_bflag = -1;
-static int hf_rtp_midi_sj_chapter_d_gflag = -1;
-static int hf_rtp_midi_sj_chapter_d_hflag = -1;
-static int hf_rtp_midi_sj_chapter_d_jflag = -1;
-static int hf_rtp_midi_sj_chapter_d_kflag = -1;
-static int hf_rtp_midi_sj_chapter_d_yflag = -1;
-static int hf_rtp_midi_sj_chapter_d_zflag = -1;
-
-static int hf_rtp_midi_sj_chapter_d_reset_sflag = -1;
-static int hf_rtp_midi_sj_chapter_d_reset_count = -1;
-static int hf_rtp_midi_sj_chapter_d_tune_sflag = -1;
-static int hf_rtp_midi_sj_chapter_d_tune_count = -1;
-static int hf_rtp_midi_sj_chapter_d_song_sel_sflag = -1;
-static int hf_rtp_midi_sj_chapter_d_song_sel_value = -1;
-
-static int hf_rtp_midi_sj_chapter_d_syscom_sflag = -1;
-static int hf_rtp_midi_sj_chapter_d_syscom_cflag = -1;
-static int hf_rtp_midi_sj_chapter_d_syscom_vflag = -1;
-static int hf_rtp_midi_sj_chapter_d_syscom_lflag = -1;
-static int hf_rtp_midi_sj_chapter_d_syscom_dsz = -1;
-static int hf_rtp_midi_sj_chapter_d_syscom_length = -1;
-static int hf_rtp_midi_sj_chapter_d_syscom_count = -1;
-static int hf_rtp_midi_sj_chapter_d_syscom_value = -1;
-static int hf_rtp_midi_sj_chapter_d_syscom_legal = -1;
-static int hf_rtp_midi_sj_chapter_d_syscom_data = -1;
-
-static int hf_rtp_midi_sj_chapter_d_sysreal_sflag = -1;
-static int hf_rtp_midi_sj_chapter_d_sysreal_cflag = -1;
-static int hf_rtp_midi_sj_chapter_d_sysreal_lflag = -1;
-static int hf_rtp_midi_sj_chapter_d_sysreal_length = -1;
-static int hf_rtp_midi_sj_chapter_d_sysreal_count = -1;
-static int hf_rtp_midi_sj_chapter_d_sysreal_legal = -1;
-static int hf_rtp_midi_sj_chapter_d_sysreal_data = -1;
-
-static int hf_rtp_midi_sj_chapter_q_sflag = -1;
-static int hf_rtp_midi_sj_chapter_q_nflag = -1;
-static int hf_rtp_midi_sj_chapter_q_dflag = -1;
-static int hf_rtp_midi_sj_chapter_q_cflag = -1;
-static int hf_rtp_midi_sj_chapter_q_tflag = -1;
-static int hf_rtp_midi_sj_chapter_q_top = -1;
-static int hf_rtp_midi_sj_chapter_q_clock = -1;
-static int hf_rtp_midi_sj_chapter_q_timetools = -1;
-
-static int hf_rtp_midi_sj_chapter_f_sflag = -1;
-static int hf_rtp_midi_sj_chapter_f_cflag = -1;
-static int hf_rtp_midi_sj_chapter_f_pflag = -1;
-static int hf_rtp_midi_sj_chapter_f_qflag = -1;
-static int hf_rtp_midi_sj_chapter_f_dflag = -1;
-static int hf_rtp_midi_sj_chapter_f_point = -1;
-static int hf_rtp_midi_sj_chapter_f_mt0 = -1;
-static int hf_rtp_midi_sj_chapter_f_mt1 = -1;
-static int hf_rtp_midi_sj_chapter_f_mt2 = -1;
-static int hf_rtp_midi_sj_chapter_f_mt3 = -1;
-static int hf_rtp_midi_sj_chapter_f_mt4 = -1;
-static int hf_rtp_midi_sj_chapter_f_mt5 = -1;
-static int hf_rtp_midi_sj_chapter_f_mt6 = -1;
-static int hf_rtp_midi_sj_chapter_f_mt7 = -1;
-static int hf_rtp_midi_sj_chapter_f_hr = -1;
-static int hf_rtp_midi_sj_chapter_f_mn = -1;
-static int hf_rtp_midi_sj_chapter_f_sc = -1;
-static int hf_rtp_midi_sj_chapter_f_fr = -1;
-
-static int hf_rtp_midi_sj_chapter_x_sflag = -1;
-static int hf_rtp_midi_sj_chapter_x_tflag = -1;
-static int hf_rtp_midi_sj_chapter_x_cflag = -1;
-static int hf_rtp_midi_sj_chapter_x_fflag = -1;
-static int hf_rtp_midi_sj_chapter_x_dflag = -1;
-static int hf_rtp_midi_sj_chapter_x_lflag = -1;
-static int hf_rtp_midi_sj_chapter_x_sta = -1;
-static int hf_rtp_midi_sj_chapter_x_tcount = -1;
-static int hf_rtp_midi_sj_chapter_x_count = -1;
-static int hf_rtp_midi_sj_chapter_x_first1 = -1;
-static int hf_rtp_midi_sj_chapter_x_first2 = -1;
-static int hf_rtp_midi_sj_chapter_x_first3 = -1;
-static int hf_rtp_midi_sj_chapter_x_first4 = -1;
-static int hf_rtp_midi_sj_chapter_x_data = -1;
-static int hf_rtp_midi_sj_chapter_x_invalid_data = -1;
-
-static int hf_rtp_midi_quarter_frame_type = -1;
-static int hf_rtp_midi_quarter_frame_value = -1;
-static int hf_rtp_midi_spp_truncated = -1;
-static int hf_rtp_midi_spp = -1;
-static int hf_rtp_midi_song_select = -1;
-static int hf_rtp_midi_manu_data = -1;
-static int hf_rtp_midi_edu_data = -1;
-static int hf_rtp_midi_unknown_data = -1;
-static int hf_rtp_midi_sysex_common_non_realtime = -1;
-static int hf_rtp_midi_sysex_common_realtime = -1;
-static int hf_rtp_midi_sysex_common_device_id = -1;
-
-static int hf_rtp_midi_sysex_common_nrt_mtc = -1;
-static int hf_rtp_midi_sysex_common_nrt_sd_ext = -1;
-static int hf_rtp_midi_sysex_common_nrt_gi = -1;
-static int hf_rtp_midi_sysex_common_nrt_fd = -1;
-static int hf_rtp_midi_sysex_common_tuning = -1;
-static int hf_rtp_midi_sysex_common_nrt_gm = -1;
-static int hf_rtp_midi_sysex_common_nrt_dls = -1;
-
-static int hf_rtp_midi_sysex_common_rt_mtc = -1;
-static int hf_rtp_midi_sysex_common_rt_sc = -1;
-static int hf_rtp_midi_sysex_common_rt_ni = -1;
-static int hf_rtp_midi_sysex_common_rt_dc = -1;
-static int hf_rtp_midi_sysex_common_rt_mtc_cueing = -1;
-static int hf_rtp_midi_sysex_common_rt_mmc_commands = -1;
-static int hf_rtp_midi_sysex_common_rt_mmc_responses = -1;
-
-static int hf_rtp_midi_sysex_common_nrt_gi_device_family = -1;
+static int hf_rtp_midi_bflag = -1;
+static int hf_rtp_midi_jflag = -1;
+static int hf_rtp_midi_zflag = -1;
+static int hf_rtp_midi_pflag = -1;
+static int hf_rtp_midi_shortlen = -1;
+static int hf_rtp_midi_longlen = -1;
+
+static int hf_rtp_midi_sflag = -1;
+static int hf_rtp_midi_yflag = -1;
+static int hf_rtp_midi_aflag = -1;
+static int hf_rtp_midi_hflag = -1;
+static int hf_rtp_midi_totchan = -1;
+static int hf_rtp_midi_check_seq_num = -1;
+
+static int hf_rtp_midi_deltatime1 = -1;
+static int hf_rtp_midi_deltatime2 = -1;
+static int hf_rtp_midi_deltatime3 = -1;
+static int hf_rtp_midi_deltatime4 = -1;
+
+static int hf_rtp_midi_channel_status = -1;
+static int hf_rtp_midi_common_status = -1;
+static int hf_rtp_midi_channel = -1;
+static int hf_rtp_midi_note = -1;
+static int hf_rtp_midi_velocity = -1;
+static int hf_rtp_midi_pressure = -1;
+static int hf_rtp_midi_controller = -1;
+static int hf_rtp_midi_controller_value = -1;
+static int hf_rtp_midi_program = -1;
+static int hf_rtp_midi_channel_pressure = -1;
+static int hf_rtp_midi_pitch_bend = -1;
+static int hf_rtp_midi_pitch_bend_truncated = -1;
+
+static int hf_rtp_midi_manu_short = -1;
+static int hf_rtp_midi_manu_long = -1;
+
+static int hf_rtp_midi_sysjour_toc_s = -1;
+static int hf_rtp_midi_sysjour_toc_d = -1;
+static int hf_rtp_midi_sysjour_toc_v = -1;
+static int hf_rtp_midi_sysjour_toc_q = -1;
+static int hf_rtp_midi_sysjour_toc_f = -1;
+static int hf_rtp_midi_sysjour_toc_x = -1;
+static int hf_rtp_midi_sysjour_len = -1;
+
+static int hf_rtp_midi_chanjour_sflag = -1;
+static int hf_rtp_midi_chanjour_chan = -1;
+static int hf_rtp_midi_chanjour_hflag = -1;
+static int hf_rtp_midi_chanjour_len = -1;
+static int hf_rtp_midi_chanjour_toc_p = -1;
+static int hf_rtp_midi_chanjour_toc_c = -1;
+static int hf_rtp_midi_chanjour_toc_m = -1;
+static int hf_rtp_midi_chanjour_toc_w = -1;
+static int hf_rtp_midi_chanjour_toc_n = -1;
+static int hf_rtp_midi_chanjour_toc_e = -1;
+static int hf_rtp_midi_chanjour_toc_t = -1;
+static int hf_rtp_midi_chanjour_toc_a = -1;
+
+static int hf_rtp_midi_cj_chapter_p_sflag = -1;
+static int hf_rtp_midi_cj_chapter_p_program = -1;
+static int hf_rtp_midi_cj_chapter_p_bflag = -1;
+static int hf_rtp_midi_cj_chapter_p_bank_msb = -1;
+static int hf_rtp_midi_cj_chapter_p_xflag = -1;
+static int hf_rtp_midi_cj_chapter_p_bank_lsb = -1;
+
+static int hf_rtp_midi_cj_chapter_c_sflag = -1;
+static int hf_rtp_midi_cj_chapter_c_length = -1;
+static int hf_rtp_midi_cj_chapter_c_number = -1;
+static int hf_rtp_midi_cj_chapter_c_aflag = -1;
+static int hf_rtp_midi_cj_chapter_c_value = -1;
+static int hf_rtp_midi_cj_chapter_c_tflag = -1;
+static int hf_rtp_midi_cj_chapter_c_alt = -1;
+
+static int hf_rtp_midi_cj_chapter_m_sflag = -1;
+static int hf_rtp_midi_cj_chapter_m_pflag = -1;
+static int hf_rtp_midi_cj_chapter_m_eflag = -1;
+static int hf_rtp_midi_cj_chapter_m_uflag = -1;
+static int hf_rtp_midi_cj_chapter_m_wflag = -1;
+static int hf_rtp_midi_cj_chapter_m_zflag = -1;
+static int hf_rtp_midi_cj_chapter_m_length = -1;
+static int hf_rtp_midi_cj_chapter_m_qflag = -1;
+static int hf_rtp_midi_cj_chapter_m_pending = -1;
+static int hf_rtp_midi_cj_chapter_m_log_sflag = -1;
+static int hf_rtp_midi_cj_chapter_m_log_pnum_lsb = -1;
+static int hf_rtp_midi_cj_chapter_m_log_qflag = -1;
+static int hf_rtp_midi_cj_chapter_m_log_pnum_msb = -1;
+static int hf_rtp_midi_cj_chapter_m_log_jflag = -1;
+static int hf_rtp_midi_cj_chapter_m_log_kflag = -1;
+static int hf_rtp_midi_cj_chapter_m_log_lflag = -1;
+static int hf_rtp_midi_cj_chapter_m_log_mflag = -1;
+static int hf_rtp_midi_cj_chapter_m_log_nflag = -1;
+static int hf_rtp_midi_cj_chapter_m_log_tflag = -1;
+static int hf_rtp_midi_cj_chapter_m_log_vflag = -1;
+static int hf_rtp_midi_cj_chapter_m_log_rflag = -1;
+static int hf_rtp_midi_cj_chapter_m_log_msb = -1;
+static int hf_rtp_midi_cj_chapter_m_log_msb_x = -1;
+static int hf_rtp_midi_cj_chapter_m_log_lsb = -1;
+static int hf_rtp_midi_cj_chapter_m_log_lsb_x = -1;
+static int hf_rtp_midi_cj_chapter_m_log_a_button_g = -1;
+static int hf_rtp_midi_cj_chapter_m_log_a_button_x = -1;
+static int hf_rtp_midi_cj_chapter_m_log_a_button = -1;
+static int hf_rtp_midi_cj_chapter_m_log_c_button = -1;
+static int hf_rtp_midi_cj_chapter_m_log_c_button_g = -1;
+static int hf_rtp_midi_cj_chapter_m_log_c_button_r = -1;
+static int hf_rtp_midi_cj_chapter_m_log_count = -1;
+static int hf_rtp_midi_cj_chapter_m_log_count_x = -1;
+
+static int hf_rtp_midi_cj_chapter_w_sflag = -1;
+static int hf_rtp_midi_cj_chapter_w_first = -1;
+static int hf_rtp_midi_cj_chapter_w_rflag = -1;
+static int hf_rtp_midi_cj_chapter_w_second = -1;
+
+static int hf_rtp_midi_cj_chapter_n_bflag = -1;
+static int hf_rtp_midi_cj_chapter_n_len = -1;
+static int hf_rtp_midi_cj_chapter_n_low = -1;
+static int hf_rtp_midi_cj_chapter_n_high = -1;
+static int hf_rtp_midi_cj_chapter_n_log_sflag = -1;
+static int hf_rtp_midi_cj_chapter_n_log_notenum = -1;
+static int hf_rtp_midi_cj_chapter_n_log_yflag = -1;
+static int hf_rtp_midi_cj_chapter_n_log_velocity = -1;
+static int hf_rtp_midi_cj_chapter_n_log_octet = -1;
+
+static int hf_rtp_midi_cj_chapter_e_sflag = -1;
+static int hf_rtp_midi_cj_chapter_e_len = -1;
+static int hf_rtp_midi_cj_chapter_e_log_sflag = -1;
+static int hf_rtp_midi_cj_chapter_e_log_notenum = -1;
+static int hf_rtp_midi_cj_chapter_e_log_vflag = -1;
+static int hf_rtp_midi_cj_chapter_e_log_velocity = -1;
+static int hf_rtp_midi_cj_chapter_e_log_count = -1;
+
+static int hf_rtp_midi_cj_chapter_t_sflag = -1;
+static int hf_rtp_midi_cj_chapter_t_pressure = -1;
+
+static int hf_rtp_midi_cj_chapter_a_sflag = -1;
+static int hf_rtp_midi_cj_chapter_a_len = -1;
+static int hf_rtp_midi_cj_chapter_a_log_sflag = -1;
+static int hf_rtp_midi_cj_chapter_a_log_notenum = -1;
+static int hf_rtp_midi_cj_chapter_a_log_xflag = -1;
+static int hf_rtp_midi_cj_chapter_a_log_pressure = -1;
+
+static int hf_rtp_midi_sj_chapter_v_sflag = -1;
+static int hf_rtp_midi_sj_chapter_v_count = -1;
+
+static int hf_rtp_midi_sj_chapter_d_sflag = -1;
+static int hf_rtp_midi_sj_chapter_d_bflag = -1;
+static int hf_rtp_midi_sj_chapter_d_gflag = -1;
+static int hf_rtp_midi_sj_chapter_d_hflag = -1;
+static int hf_rtp_midi_sj_chapter_d_jflag = -1;
+static int hf_rtp_midi_sj_chapter_d_kflag = -1;
+static int hf_rtp_midi_sj_chapter_d_yflag = -1;
+static int hf_rtp_midi_sj_chapter_d_zflag = -1;
+
+static int hf_rtp_midi_sj_chapter_d_reset_sflag = -1;
+static int hf_rtp_midi_sj_chapter_d_reset_count = -1;
+static int hf_rtp_midi_sj_chapter_d_tune_sflag = -1;
+static int hf_rtp_midi_sj_chapter_d_tune_count = -1;
+static int hf_rtp_midi_sj_chapter_d_song_sel_sflag = -1;
+static int hf_rtp_midi_sj_chapter_d_song_sel_value = -1;
+
+static int hf_rtp_midi_sj_chapter_d_syscom_sflag = -1;
+static int hf_rtp_midi_sj_chapter_d_syscom_cflag = -1;
+static int hf_rtp_midi_sj_chapter_d_syscom_vflag = -1;
+static int hf_rtp_midi_sj_chapter_d_syscom_lflag = -1;
+static int hf_rtp_midi_sj_chapter_d_syscom_dsz = -1;
+static int hf_rtp_midi_sj_chapter_d_syscom_length = -1;
+static int hf_rtp_midi_sj_chapter_d_syscom_count = -1;
+static int hf_rtp_midi_sj_chapter_d_syscom_value = -1;
+static int hf_rtp_midi_sj_chapter_d_syscom_legal = -1;
+static int hf_rtp_midi_sj_chapter_d_syscom_data = -1;
+
+static int hf_rtp_midi_sj_chapter_d_sysreal_sflag = -1;
+static int hf_rtp_midi_sj_chapter_d_sysreal_cflag = -1;
+static int hf_rtp_midi_sj_chapter_d_sysreal_lflag = -1;
+static int hf_rtp_midi_sj_chapter_d_sysreal_length = -1;
+static int hf_rtp_midi_sj_chapter_d_sysreal_count = -1;
+static int hf_rtp_midi_sj_chapter_d_sysreal_legal = -1;
+static int hf_rtp_midi_sj_chapter_d_sysreal_data = -1;
+
+static int hf_rtp_midi_sj_chapter_q_sflag = -1;
+static int hf_rtp_midi_sj_chapter_q_nflag = -1;
+static int hf_rtp_midi_sj_chapter_q_dflag = -1;
+static int hf_rtp_midi_sj_chapter_q_cflag = -1;
+static int hf_rtp_midi_sj_chapter_q_tflag = -1;
+static int hf_rtp_midi_sj_chapter_q_top = -1;
+static int hf_rtp_midi_sj_chapter_q_clock = -1;
+static int hf_rtp_midi_sj_chapter_q_timetools = -1;
+
+static int hf_rtp_midi_sj_chapter_f_sflag = -1;
+static int hf_rtp_midi_sj_chapter_f_cflag = -1;
+static int hf_rtp_midi_sj_chapter_f_pflag = -1;
+static int hf_rtp_midi_sj_chapter_f_qflag = -1;
+static int hf_rtp_midi_sj_chapter_f_dflag = -1;
+static int hf_rtp_midi_sj_chapter_f_point = -1;
+static int hf_rtp_midi_sj_chapter_f_mt0 = -1;
+static int hf_rtp_midi_sj_chapter_f_mt1 = -1;
+static int hf_rtp_midi_sj_chapter_f_mt2 = -1;
+static int hf_rtp_midi_sj_chapter_f_mt3 = -1;
+static int hf_rtp_midi_sj_chapter_f_mt4 = -1;
+static int hf_rtp_midi_sj_chapter_f_mt5 = -1;
+static int hf_rtp_midi_sj_chapter_f_mt6 = -1;
+static int hf_rtp_midi_sj_chapter_f_mt7 = -1;
+static int hf_rtp_midi_sj_chapter_f_hr = -1;
+static int hf_rtp_midi_sj_chapter_f_mn = -1;
+static int hf_rtp_midi_sj_chapter_f_sc = -1;
+static int hf_rtp_midi_sj_chapter_f_fr = -1;
+
+static int hf_rtp_midi_sj_chapter_x_sflag = -1;
+static int hf_rtp_midi_sj_chapter_x_tflag = -1;
+static int hf_rtp_midi_sj_chapter_x_cflag = -1;
+static int hf_rtp_midi_sj_chapter_x_fflag = -1;
+static int hf_rtp_midi_sj_chapter_x_dflag = -1;
+static int hf_rtp_midi_sj_chapter_x_lflag = -1;
+static int hf_rtp_midi_sj_chapter_x_sta = -1;
+static int hf_rtp_midi_sj_chapter_x_tcount = -1;
+static int hf_rtp_midi_sj_chapter_x_count = -1;
+static int hf_rtp_midi_sj_chapter_x_first1 = -1;
+static int hf_rtp_midi_sj_chapter_x_first2 = -1;
+static int hf_rtp_midi_sj_chapter_x_first3 = -1;
+static int hf_rtp_midi_sj_chapter_x_first4 = -1;
+static int hf_rtp_midi_sj_chapter_x_data = -1;
+static int hf_rtp_midi_sj_chapter_x_invalid_data = -1;
+
+static int hf_rtp_midi_quarter_frame_type = -1;
+static int hf_rtp_midi_quarter_frame_value = -1;
+static int hf_rtp_midi_spp_truncated = -1;
+static int hf_rtp_midi_spp = -1;
+static int hf_rtp_midi_song_select = -1;
+static int hf_rtp_midi_manu_data = -1;
+static int hf_rtp_midi_edu_data = -1;
+static int hf_rtp_midi_unknown_data = -1;
+static int hf_rtp_midi_sysex_common_non_realtime = -1;
+static int hf_rtp_midi_sysex_common_realtime = -1;
+static int hf_rtp_midi_sysex_common_device_id = -1;
+
+static int hf_rtp_midi_sysex_common_nrt_mtc = -1;
+static int hf_rtp_midi_sysex_common_nrt_sd_ext = -1;
+static int hf_rtp_midi_sysex_common_nrt_gi = -1;
+static int hf_rtp_midi_sysex_common_nrt_fd = -1;
+static int hf_rtp_midi_sysex_common_tuning = -1;
+static int hf_rtp_midi_sysex_common_nrt_gm = -1;
+static int hf_rtp_midi_sysex_common_nrt_dls = -1;
+
+static int hf_rtp_midi_sysex_common_rt_mtc = -1;
+static int hf_rtp_midi_sysex_common_rt_sc = -1;
+static int hf_rtp_midi_sysex_common_rt_ni = -1;
+static int hf_rtp_midi_sysex_common_rt_dc = -1;
+static int hf_rtp_midi_sysex_common_rt_mtc_cueing = -1;
+static int hf_rtp_midi_sysex_common_rt_mmc_commands = -1;
+static int hf_rtp_midi_sysex_common_rt_mmc_responses = -1;
+
+static int hf_rtp_midi_sysex_common_nrt_gi_device_family = -1;
static int hf_rtp_midi_sysex_common_nrt_gi_device_family_member = -1;
-static int hf_rtp_midi_sysex_common_nrt_gi_software_rev = -1;
-
-static int hf_rtp_midi_sysex_common_nrt_sd_packet_number = -1;
-
-static int hf_rtp_midi_sysex_common_nrt_sd_header_sn = -1;
-static int hf_rtp_midi_sysex_common_nrt_sd_header_sf = -1;
-static int hf_rtp_midi_sysex_common_nrt_sd_header_sp = -1;
-static int hf_rtp_midi_sysex_common_nrt_sd_header_sl = -1;
-static int hf_rtp_midi_sysex_common_nrt_sd_header_ls = -1;
-static int hf_rtp_midi_sysex_common_nrt_sd_header_le = -1;
-static int hf_rtp_midi_sysex_common_nrt_sd_header_lt = -1;
-
-static int hf_rtp_midi_sysex_common_nrt_sd_packet_count = -1;
-static int hf_rtp_midi_sysex_common_nrt_sd_packet_check = -1;
-static int hf_rtp_midi_sysex_common_nrt_sd_packet_data = -1;
-
-static int hf_rtp_midi_sysex_common_nrt_sd_ext_ln = -1;
-
-static int hf_rtp_midi_sysex_common_nrt_fd_device_id = -1;
-static int hf_rtp_midi_sysex_common_nrt_fd_type = -1;
-static int hf_rtp_midi_sysex_common_nrt_fd_name = -1;
-static int hf_rtp_midi_sysex_common_nrt_fd_length = -1;
-static int hf_rtp_midi_sysex_common_nrt_fd_packet_num = -1;
-static int hf_rtp_midi_sysex_common_nrt_fd_byte_count = -1;
-static int hf_rtp_midi_sysex_common_nrt_fd_packet_data = -1;
-static int hf_rtp_midi_sysex_common_nrt_fd_checksum = -1;
-
-static int hf_rtp_midi_sysex_common_tune_program = -1;
-static int hf_rtp_midi_sysex_common_tune_name = -1;
-static int hf_rtp_midi_sysex_common_tune_freq = -1;
-static int hf_rtp_midi_sysex_common_tune_checksum = -1;
-static int hf_rtp_midi_sysex_common_tune_changes = -1;
-static int hf_rtp_midi_sysex_common_tune_note = -1;
-
-static int hf_rtp_midi_sysex_common_rt_mtc_fm_type = -1;
-static int hf_rtp_midi_sysex_common_rt_mtc_fm_hr = -1;
-static int hf_rtp_midi_sysex_common_rt_mtc_fm_mn = -1;
-static int hf_rtp_midi_sysex_common_rt_mtc_fm_sc = -1;
-static int hf_rtp_midi_sysex_common_rt_mtc_fm_fr = -1;
-
-static int hf_rtp_midi_sysex_common_rt_mtc_ub_u1 = -1;
-static int hf_rtp_midi_sysex_common_rt_mtc_ub_u2 = -1;
-static int hf_rtp_midi_sysex_common_rt_mtc_ub_u3 = -1;
-static int hf_rtp_midi_sysex_common_rt_mtc_ub_u4 = -1;
-static int hf_rtp_midi_sysex_common_rt_mtc_ub_u5 = -1;
-static int hf_rtp_midi_sysex_common_rt_mtc_ub_u6 = -1;
-static int hf_rtp_midi_sysex_common_rt_mtc_ub_u7 = -1;
-static int hf_rtp_midi_sysex_common_rt_mtc_ub_u8 = -1;
-static int hf_rtp_midi_sysex_common_rt_mtc_ub_u9 = -1;
-
-static int hf_rtp_midi_sysex_common_nrt_mtc_type = -1;
-static int hf_rtp_midi_sysex_common_nrt_mtc_hr = -1;
-static int hf_rtp_midi_sysex_common_nrt_mtc_mn = -1;
-static int hf_rtp_midi_sysex_common_nrt_mtc_sc = -1;
-static int hf_rtp_midi_sysex_common_nrt_mtc_fr = -1;
-static int hf_rtp_midi_sysex_common_nrt_mtc_ff = -1;
-static int hf_rtp_midi_sysex_common_nrt_mtc_enl = -1;
-static int hf_rtp_midi_sysex_common_nrt_mtc_enm = -1;
-static int hf_rtp_midi_sysex_common_nrt_mtc_add = -1;
-
-static int hf_rtp_midi_sysex_common_rt_mtc_cue_enl = -1;
-static int hf_rtp_midi_sysex_common_rt_mtc_cue_enm = -1;
-static int hf_rtp_midi_sysex_common_rt_mtc_cue_add = -1;
-
-static int hf_rtp_midi_sysex_common_rt_ni_bar_num = -1;
-static int hf_rtp_midi_sysex_common_rt_ni_bytes = -1;
-static int hf_rtp_midi_sysex_common_rt_ni_numerator = -1;
-static int hf_rtp_midi_sysex_common_rt_ni_denominator = -1;
-static int hf_rtp_midi_sysex_common_rt_ni_midi_clocks = -1;
-static int hf_rtp_midi_sysex_common_rt_ni_32nds = -1;
-
-static int hf_rtp_midi_sysex_common_rt_dc_volume = -1;
-static int hf_rtp_midi_sysex_common_rt_dc_balance = -1;
+static int hf_rtp_midi_sysex_common_nrt_gi_software_rev = -1;
+
+static int hf_rtp_midi_sysex_common_nrt_sd_packet_number = -1;
+
+static int hf_rtp_midi_sysex_common_nrt_sd_header_sn = -1;
+static int hf_rtp_midi_sysex_common_nrt_sd_header_sf = -1;
+static int hf_rtp_midi_sysex_common_nrt_sd_header_sp = -1;
+static int hf_rtp_midi_sysex_common_nrt_sd_header_sl = -1;
+static int hf_rtp_midi_sysex_common_nrt_sd_header_ls = -1;
+static int hf_rtp_midi_sysex_common_nrt_sd_header_le = -1;
+static int hf_rtp_midi_sysex_common_nrt_sd_header_lt = -1;
+
+static int hf_rtp_midi_sysex_common_nrt_sd_packet_count = -1;
+static int hf_rtp_midi_sysex_common_nrt_sd_packet_check = -1;
+static int hf_rtp_midi_sysex_common_nrt_sd_packet_data = -1;
+
+static int hf_rtp_midi_sysex_common_nrt_sd_ext_ln = -1;
+
+static int hf_rtp_midi_sysex_common_nrt_fd_device_id = -1;
+static int hf_rtp_midi_sysex_common_nrt_fd_type = -1;
+static int hf_rtp_midi_sysex_common_nrt_fd_name = -1;
+static int hf_rtp_midi_sysex_common_nrt_fd_length = -1;
+static int hf_rtp_midi_sysex_common_nrt_fd_packet_num = -1;
+static int hf_rtp_midi_sysex_common_nrt_fd_byte_count = -1;
+static int hf_rtp_midi_sysex_common_nrt_fd_packet_data = -1;
+static int hf_rtp_midi_sysex_common_nrt_fd_checksum = -1;
+
+static int hf_rtp_midi_sysex_common_tune_program = -1;
+static int hf_rtp_midi_sysex_common_tune_name = -1;
+static int hf_rtp_midi_sysex_common_tune_freq = -1;
+static int hf_rtp_midi_sysex_common_tune_checksum = -1;
+static int hf_rtp_midi_sysex_common_tune_changes = -1;
+static int hf_rtp_midi_sysex_common_tune_note = -1;
+
+static int hf_rtp_midi_sysex_common_rt_mtc_fm_type = -1;
+static int hf_rtp_midi_sysex_common_rt_mtc_fm_hr = -1;
+static int hf_rtp_midi_sysex_common_rt_mtc_fm_mn = -1;
+static int hf_rtp_midi_sysex_common_rt_mtc_fm_sc = -1;
+static int hf_rtp_midi_sysex_common_rt_mtc_fm_fr = -1;
+
+static int hf_rtp_midi_sysex_common_rt_mtc_ub_u1 = -1;
+static int hf_rtp_midi_sysex_common_rt_mtc_ub_u2 = -1;
+static int hf_rtp_midi_sysex_common_rt_mtc_ub_u3 = -1;
+static int hf_rtp_midi_sysex_common_rt_mtc_ub_u4 = -1;
+static int hf_rtp_midi_sysex_common_rt_mtc_ub_u5 = -1;
+static int hf_rtp_midi_sysex_common_rt_mtc_ub_u6 = -1;
+static int hf_rtp_midi_sysex_common_rt_mtc_ub_u7 = -1;
+static int hf_rtp_midi_sysex_common_rt_mtc_ub_u8 = -1;
+static int hf_rtp_midi_sysex_common_rt_mtc_ub_u9 = -1;
+
+static int hf_rtp_midi_sysex_common_nrt_mtc_type = -1;
+static int hf_rtp_midi_sysex_common_nrt_mtc_hr = -1;
+static int hf_rtp_midi_sysex_common_nrt_mtc_mn = -1;
+static int hf_rtp_midi_sysex_common_nrt_mtc_sc = -1;
+static int hf_rtp_midi_sysex_common_nrt_mtc_fr = -1;
+static int hf_rtp_midi_sysex_common_nrt_mtc_ff = -1;
+static int hf_rtp_midi_sysex_common_nrt_mtc_enl = -1;
+static int hf_rtp_midi_sysex_common_nrt_mtc_enm = -1;
+static int hf_rtp_midi_sysex_common_nrt_mtc_add = -1;
+
+static int hf_rtp_midi_sysex_common_rt_mtc_cue_enl = -1;
+static int hf_rtp_midi_sysex_common_rt_mtc_cue_enm = -1;
+static int hf_rtp_midi_sysex_common_rt_mtc_cue_add = -1;
+
+static int hf_rtp_midi_sysex_common_rt_ni_bar_num = -1;
+static int hf_rtp_midi_sysex_common_rt_ni_bytes = -1;
+static int hf_rtp_midi_sysex_common_rt_ni_numerator = -1;
+static int hf_rtp_midi_sysex_common_rt_ni_denominator = -1;
+static int hf_rtp_midi_sysex_common_rt_ni_midi_clocks = -1;
+static int hf_rtp_midi_sysex_common_rt_ni_32nds = -1;
+
+static int hf_rtp_midi_sysex_common_rt_dc_volume = -1;
+static int hf_rtp_midi_sysex_common_rt_dc_balance = -1;
/* RTP MIDI fields defining a subtree */
-static gint ett_rtp_midi = -1;
-static gint ett_rtp_midi_commands = -1;
-static gint ett_rtp_midi_journal = -1;
-static gint ett_rtp_midi_command = -1;
-static gint ett_rtp_midi_systemjournal = -1;
-static gint ett_rtp_midi_channeljournals = -1;
-static gint ett_rtp_midi_systemchapters = -1;
-static gint ett_rtp_midi_sj_chapter_d = -1;
-static gint ett_rtp_midi_sj_chapter_d_field_b = -1;
-static gint ett_rtp_midi_sj_chapter_d_field_g = -1;
-static gint ett_rtp_midi_sj_chapter_d_field_h = -1;
-static gint ett_rtp_midi_sj_chapter_d_field_j = -1;
-static gint ett_rtp_midi_sj_chapter_d_field_k = -1;
-static gint ett_rtp_midi_sj_chapter_d_field_y = -1;
-static gint ett_rtp_midi_sj_chapter_d_field_z = -1;
-static gint ett_rtp_midi_sj_chapter_v = -1;
-static gint ett_rtp_midi_sj_chapter_q = -1;
-static gint ett_rtp_midi_sj_chapter_f = -1;
-static gint ett_rtp_midi_sj_chapter_f_complete = -1;
-static gint ett_rtp_midi_sj_chapter_f_partial = -1;
-static gint ett_rtp_midi_sj_chapter_x = -1;
-static gint ett_rtp_midi_sj_chapter_x_first = -1;
-static gint ett_rtp_midi_sj_chapter_x_data = -1;
-static gint ett_rtp_midi_channeljournal = -1;
-static gint ett_rtp_midi_channelchapters = -1;
-static gint ett_rtp_midi_cj_chapter_p = -1;
-static gint ett_rtp_midi_cj_chapter_c = -1;
-static gint ett_rtp_midi_cj_chapter_c_loglist = -1;
-static gint ett_rtp_midi_cj_chapter_c_logitem = -1;
-static gint ett_rtp_midi_cj_chapter_m = -1;
-static gint ett_rtp_midi_cj_chapter_m_loglist = -1;
-static gint ett_rtp_midi_cj_chapter_m_logitem = -1;
-static gint ett_rtp_midi_cj_chapter_m_log_msb = -1;
-static gint ett_rtp_midi_cj_chapter_m_log_lsb = -1;
-static gint ett_rtp_midi_cj_chapter_m_log_a_button = -1;
-static gint ett_rtp_midi_cj_chapter_m_log_c_button = -1;
-static gint ett_rtp_midi_cj_chapter_m_log_count = -1;
-static gint ett_rtp_midi_cj_chapter_w = -1;
-static gint ett_rtp_midi_cj_chapter_n = -1;
-static gint ett_rtp_midi_cj_chapter_n_loglist = -1;
-static gint ett_rtp_midi_cj_chapter_n_logitem = -1;
-static gint ett_rtp_midi_cj_chapter_n_octets = -1;
-static gint ett_rtp_midi_cj_chapter_e = -1;
-static gint ett_rtp_midi_cj_chapter_e_loglist = -1;
-static gint ett_rtp_midi_cj_chapter_e_logitem = -1;
-static gint ett_rtp_midi_cj_chapter_t = -1;
-static gint ett_rtp_midi_cj_chapter_a = -1;
-static gint ett_rtp_midi_cj_chapter_a_loglist = -1;
-static gint ett_rtp_midi_cj_chapter_a_logitem = -1;
-static gint ett_rtp_midi_sysex_data = -1;
-static gint ett_rtp_midi_sysex_edu = -1;
-static gint ett_rtp_midi_sysex_manu = -1;
-static gint ett_rtp_midi_sysex_common_rt = -1;
-static gint ett_rtp_midi_sysex_common_nrt = -1;
-static gint ett_rtp_midi_sysex_common_tune_note = -1;
+static gint ett_rtp_midi = -1;
+static gint ett_rtp_midi_commands = -1;
+static gint ett_rtp_midi_journal = -1;
+static gint ett_rtp_midi_command = -1;
+static gint ett_rtp_midi_systemjournal = -1;
+static gint ett_rtp_midi_channeljournals = -1;
+static gint ett_rtp_midi_systemchapters = -1;
+static gint ett_rtp_midi_sj_chapter_d = -1;
+static gint ett_rtp_midi_sj_chapter_d_field_b = -1;
+static gint ett_rtp_midi_sj_chapter_d_field_g = -1;
+static gint ett_rtp_midi_sj_chapter_d_field_h = -1;
+static gint ett_rtp_midi_sj_chapter_d_field_j = -1;
+static gint ett_rtp_midi_sj_chapter_d_field_k = -1;
+static gint ett_rtp_midi_sj_chapter_d_field_y = -1;
+static gint ett_rtp_midi_sj_chapter_d_field_z = -1;
+static gint ett_rtp_midi_sj_chapter_v = -1;
+static gint ett_rtp_midi_sj_chapter_q = -1;
+static gint ett_rtp_midi_sj_chapter_f = -1;
+static gint ett_rtp_midi_sj_chapter_f_complete = -1;
+static gint ett_rtp_midi_sj_chapter_f_partial = -1;
+static gint ett_rtp_midi_sj_chapter_x = -1;
+static gint ett_rtp_midi_sj_chapter_x_first = -1;
+static gint ett_rtp_midi_sj_chapter_x_data = -1;
+static gint ett_rtp_midi_channeljournal = -1;
+static gint ett_rtp_midi_channelchapters = -1;
+static gint ett_rtp_midi_cj_chapter_p = -1;
+static gint ett_rtp_midi_cj_chapter_c = -1;
+static gint ett_rtp_midi_cj_chapter_c_loglist = -1;
+static gint ett_rtp_midi_cj_chapter_c_logitem = -1;
+static gint ett_rtp_midi_cj_chapter_m = -1;
+static gint ett_rtp_midi_cj_chapter_m_loglist = -1;
+static gint ett_rtp_midi_cj_chapter_m_logitem = -1;
+static gint ett_rtp_midi_cj_chapter_m_log_msb = -1;
+static gint ett_rtp_midi_cj_chapter_m_log_lsb = -1;
+static gint ett_rtp_midi_cj_chapter_m_log_a_button = -1;
+static gint ett_rtp_midi_cj_chapter_m_log_c_button = -1;
+static gint ett_rtp_midi_cj_chapter_m_log_count = -1;
+static gint ett_rtp_midi_cj_chapter_w = -1;
+static gint ett_rtp_midi_cj_chapter_n = -1;
+static gint ett_rtp_midi_cj_chapter_n_loglist = -1;
+static gint ett_rtp_midi_cj_chapter_n_logitem = -1;
+static gint ett_rtp_midi_cj_chapter_n_octets = -1;
+static gint ett_rtp_midi_cj_chapter_e = -1;
+static gint ett_rtp_midi_cj_chapter_e_loglist = -1;
+static gint ett_rtp_midi_cj_chapter_e_logitem = -1;
+static gint ett_rtp_midi_cj_chapter_t = -1;
+static gint ett_rtp_midi_cj_chapter_a = -1;
+static gint ett_rtp_midi_cj_chapter_a_loglist = -1;
+static gint ett_rtp_midi_cj_chapter_a_logitem = -1;
+static gint ett_rtp_midi_sysex_data = -1;
+static gint ett_rtp_midi_sysex_edu = -1;
+static gint ett_rtp_midi_sysex_manu = -1;
+static gint ett_rtp_midi_sysex_common_rt = -1;
+static gint ett_rtp_midi_sysex_common_nrt = -1;
+static gint ett_rtp_midi_sysex_common_tune_note = -1;
static guint rtp_midi_payload_type_value = 0;
@@ -2967,12 +2965,12 @@ decodetime(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int
static int
decode_note_off(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int cmd_count, unsigned int offset, unsigned int cmd_len, guint8 status, unsigned int rsoffset, gboolean using_rs ) {
- guint8 note = 0;
- guint8 velocity = 0;
- const gchar *status_str = NULL;
- const gchar *note_str = NULL;
- proto_item *command_item = NULL;
- proto_tree *command_tree = NULL;
+ guint8 note;
+ guint8 velocity;
+ const gchar *status_str;
+ const gchar *note_str;
+ proto_item *command_item;
+ proto_tree *command_tree;
status_str = val_to_str( status >> 4, rtp_midi_channel_status, rtp_midi_unknown_value_hex );
@@ -3088,12 +3086,12 @@ decode_note_off(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned in
static int
decode_note_on(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int cmd_count, unsigned int offset, unsigned int cmd_len, guint8 status, unsigned int rsoffset, gboolean using_rs ) {
- guint8 note = 0;
- guint8 velocity = 0;
- const gchar *status_str = NULL;
- const gchar *note_str = NULL;
- proto_item *command_item = NULL;
- proto_tree *command_tree = NULL;
+ guint8 note;
+ guint8 velocity;
+ const gchar *status_str;
+ const gchar *note_str;
+ proto_item *command_item;
+ proto_tree *command_tree;
status_str = val_to_str( status >> 4, rtp_midi_channel_status, rtp_midi_unknown_value_hex );
@@ -3215,12 +3213,12 @@ decode_note_on(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int
static int
decode_poly_pressure(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int cmd_count, unsigned int offset, unsigned int cmd_len, guint8 status, unsigned int rsoffset, gboolean using_rs ) {
- guint8 note = 0;
- guint8 pressure = 0;
- const gchar *status_str = NULL;
- const gchar *note_str = NULL;
- proto_item *command_item = NULL;
- proto_tree *command_tree = NULL;
+ guint8 note;
+ guint8 pressure;
+ const gchar *status_str;
+ const gchar *note_str;
+ proto_item *command_item;
+ proto_tree *command_tree;
status_str = val_to_str( status >> 4, rtp_midi_channel_status, rtp_midi_unknown_value_hex );
@@ -3336,10 +3334,10 @@ decode_poly_pressure(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsign
static int
decode_channel_pressure(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int cmd_count, unsigned int offset, unsigned int cmd_len, guint8 status, unsigned int rsoffset, gboolean using_rs ) {
- guint8 pressure = 0;
- const gchar *status_str = NULL;
- proto_item *command_item = NULL;
- proto_tree *command_tree = NULL;
+ guint8 pressure;
+ const gchar *status_str;
+ proto_item *command_item;
+ proto_tree *command_tree;
status_str = val_to_str( status >> 4, rtp_midi_channel_status, rtp_midi_unknown_value_hex );
@@ -3412,12 +3410,12 @@ decode_channel_pressure(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, uns
static int
decode_pitch_bend_change(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int cmd_count, unsigned int offset, unsigned int cmd_len, guint8 status, unsigned int rsoffset, gboolean using_rs ) {
- guint8 octet1 = 0;
- guint8 octet2 = 0;
- guint8 pitch = 0;
- const gchar *status_str = NULL;
- proto_item *command_item = NULL;
- proto_tree *command_tree = NULL;
+ guint8 octet1;
+ guint8 octet2;
+ guint8 pitch;
+ const gchar *status_str;
+ proto_item *command_item;
+ proto_tree *command_tree;
status_str = val_to_str( status >> 4, rtp_midi_channel_status, rtp_midi_unknown_value_hex );
@@ -3532,10 +3530,10 @@ decode_pitch_bend_change(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
static int
decode_program_change(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int cmd_count, unsigned int offset, unsigned int cmd_len, guint8 status, unsigned int rsoffset, gboolean using_rs ) {
- guint8 program = 0;
- const gchar *status_str = NULL;
- proto_item *command_item = NULL;
- proto_tree *command_tree = NULL;
+ guint8 program;
+ const gchar *status_str;
+ proto_item *command_item;
+ proto_tree *command_tree;
status_str = val_to_str( status >> 4, rtp_midi_channel_status, rtp_midi_unknown_value_hex );
@@ -3610,12 +3608,12 @@ return 1;
static int
decode_control_change(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int cmd_count, unsigned int offset, unsigned int cmd_len, guint8 status, unsigned int rsoffset, gboolean using_rs ) {
- guint8 controller = 0;
- guint8 value = 0;
- const gchar *status_str = NULL;
- const gchar *ctrl_str = NULL;
- proto_item *command_item = NULL;
- proto_tree *command_tree = NULL;
+ guint8 controller;
+ guint8 value;
+ const gchar *status_str;
+ const gchar *ctrl_str;
+ proto_item *command_item;
+ proto_tree *command_tree;
status_str = val_to_str( status >> 4, rtp_midi_channel_status, rtp_midi_unknown_value_hex );
@@ -3737,7 +3735,7 @@ decode_sysex_common_nrt_sd_hdr( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
/* sample number */
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_nrt_sd_header_sn, tvb, offset, 2, ENC_BIG_ENDIAN );
- offset += 2;
+ offset += 2;
data_len -= 2;
consumed += 2;
@@ -3755,7 +3753,7 @@ decode_sysex_common_nrt_sd_hdr( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
/* sample period */
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_nrt_sd_header_sp, tvb, offset, 3, ENC_BIG_ENDIAN );
- offset += 3;
+ offset += 3;
data_len -= 3;
consumed += 3;
@@ -3764,7 +3762,7 @@ decode_sysex_common_nrt_sd_hdr( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
/* sample length */
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_nrt_sd_header_sl, tvb, offset, 3, ENC_BIG_ENDIAN );
- offset += 3;
+ offset += 3;
data_len -= 3;
consumed += 3;
@@ -3773,7 +3771,7 @@ decode_sysex_common_nrt_sd_hdr( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
/* loop start */
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_nrt_sd_header_ls, tvb, offset, 3, ENC_BIG_ENDIAN );
- offset += 3;
+ offset += 3;
data_len -= 3;
consumed += 3;
@@ -3782,7 +3780,7 @@ decode_sysex_common_nrt_sd_hdr( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
/* loop end */
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_nrt_sd_header_le, tvb, offset, 3, ENC_BIG_ENDIAN );
- offset += 3;
+ offset += 3;
data_len -= 3;
consumed += 3;
@@ -3819,7 +3817,7 @@ decode_sysex_common_nrt_sd_packet( tvbuff_t *tvb, packet_info *pinfo _U_, proto_
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_nrt_sd_packet_data, tvb, offset, data_len - 1, ENC_NA );
- offset += ( data_len - 1 );
+ offset += ( data_len - 1 );
data_len -= ( data_len - 1 );
consumed += ( data_len -1 );
}
@@ -3848,9 +3846,6 @@ decode_sysex_common_nrt_sd_req( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
/* sample number */
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_nrt_sd_header_sn, tvb, offset, 2, ENC_BIG_ENDIAN );
- /*Fix Clang Warning
- offset += 2;
- data_len -= 2;*/
consumed += 2;
return consumed;
@@ -3862,7 +3857,7 @@ decode_sysex_common_nrt_sd_req( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
*/
static unsigned int
decode_sysex_common_nrt_sd_ext( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset, unsigned int data_len ) {
- guint8 sub_id = 0;
+ guint8 sub_id;
int consumed = 0;
if ( data_len < 1 )
@@ -3882,7 +3877,7 @@ decode_sysex_common_nrt_sd_ext( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
/* sample number */
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_nrt_sd_header_sn, tvb, offset, 2, ENC_BIG_ENDIAN );
- offset += 2;
+ offset += 2;
data_len -= 2;
consumed += 2;
@@ -3891,7 +3886,7 @@ decode_sysex_common_nrt_sd_ext( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
/* loop number */
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_nrt_sd_ext_ln, tvb, offset, 2, ENC_BIG_ENDIAN );
- offset += 2;
+ offset += 2;
data_len -= 2;
consumed += 2;
@@ -3909,7 +3904,7 @@ decode_sysex_common_nrt_sd_ext( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
/* loop start */
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_nrt_sd_header_ls, tvb, offset, 3, ENC_BIG_ENDIAN );
- offset += 3;
+ offset += 3;
data_len -= 3;
consumed += 3;
@@ -3918,9 +3913,6 @@ decode_sysex_common_nrt_sd_ext( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
/* loop end */
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_nrt_sd_header_le, tvb, offset, 3, ENC_BIG_ENDIAN );
- /*Fix Clang Warning
- offset += 3;
- data_len -= 3;*/
consumed += 3;
} else if ( sub_id == RTP_MIDI_SYSEX_COMMON_NRT_SD_EXT_LOOP_POINTS_REQUEST ) {
@@ -3930,7 +3922,7 @@ decode_sysex_common_nrt_sd_ext( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
/* sample number */
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_nrt_sd_header_sn, tvb, offset, 2, ENC_BIG_ENDIAN );
- offset += 2;
+ offset += 2;
data_len -= 2;
consumed += 2;
@@ -3939,12 +3931,9 @@ decode_sysex_common_nrt_sd_ext( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
/* loop number */
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_nrt_sd_ext_ln, tvb, offset, 2, ENC_BIG_ENDIAN );
- /*Fix Clang Warning
- offset += 2;
- data_len -= 2; */
consumed += 2;
- };
+ }
return consumed;
}
@@ -3954,8 +3943,7 @@ decode_sysex_common_nrt_sd_ext( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
*/
static unsigned int
decode_sysex_common_nrt_gi( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset, unsigned int data_len ) {
- guint8 sub_id = 0;
- guint8 manu_short = 0;
+ guint8 sub_id;
int consumed = 0;
if ( data_len < 1 )
@@ -3971,11 +3959,12 @@ decode_sysex_common_nrt_gi( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
/* This is the only sub-command that we know that we can decode,
* the Identity Request has already been decoded up to this point. */
- if ( sub_id != RTP_MIDI_SYSEX_COMMON_NRT_GI_IDENTITY_REQUEST ) {
+ if ( sub_id == RTP_MIDI_SYSEX_COMMON_NRT_GI_IDENTITY_REQUEST ) {
/* nothing more to do... */
} else if ( sub_id == RTP_MIDI_SYSEX_COMMON_NRT_GI_IDENTITY_REPLY ) {
+ guint8 manu_short;
if ( data_len < 1 ) {
return consumed;
@@ -3994,7 +3983,7 @@ decode_sysex_common_nrt_gi( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
return consumed;
}
proto_tree_add_item( tree, hf_rtp_midi_manu_long, tvb, offset, 2, ENC_BIG_ENDIAN );
- offset +=2 ;
+ offset += 2 ;
data_len -= 2;
consumed += 2;
}
@@ -4004,7 +3993,7 @@ decode_sysex_common_nrt_gi( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
return consumed;
}
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_nrt_gi_device_family, tvb, offset, 2, ENC_BIG_ENDIAN );
- offset +=2 ;
+ offset += 2 ;
data_len -= 2;
consumed += 2;
@@ -4013,7 +4002,7 @@ decode_sysex_common_nrt_gi( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
return consumed;
}
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_nrt_gi_device_family_member, tvb, offset, 2, ENC_BIG_ENDIAN );
- offset +=2 ;
+ offset += 2 ;
data_len -= 2;
consumed += 2;
@@ -4022,11 +4011,8 @@ decode_sysex_common_nrt_gi( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
return consumed;
}
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_nrt_gi_software_rev, tvb, offset, 4, ENC_BIG_ENDIAN );
- /*Fix Clang Warning
- offset +=4 ;
- data_len -= 4;*/
consumed += 4;
- };
+ }
return consumed;
}
@@ -4036,7 +4022,7 @@ decode_sysex_common_nrt_gi( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
*/
static unsigned int
decode_sysex_common_nrt_fd( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset, unsigned int data_len ) {
- guint8 sub_id = 0;
+ guint8 sub_id;
int consumed = 0;
if ( data_len < 1 )
@@ -4065,7 +4051,7 @@ decode_sysex_common_nrt_fd( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
/* file type */
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_nrt_fd_type, tvb, offset, 4, ENC_ASCII|ENC_NA );
- offset += 4;
+ offset += 4;
data_len -= 4;
consumed += 4;
@@ -4074,7 +4060,7 @@ decode_sysex_common_nrt_fd( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
/* file length */
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_nrt_fd_length, tvb, offset, 4, ENC_BIG_ENDIAN );
- offset += 4;
+ offset += 4;
data_len -= 4;
consumed += 4;
@@ -4082,8 +4068,6 @@ decode_sysex_common_nrt_fd( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
/* file-name */
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_nrt_fd_name, tvb, offset, data_len, ENC_ASCII|ENC_NA );
- /*Fix Clang Warning
- offset += data_len;*/
data_len -= data_len;
consumed += data_len;
}
@@ -4113,7 +4097,7 @@ decode_sysex_common_nrt_fd( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_nrt_fd_packet_data, tvb, offset, data_len - 1, ENC_NA );
- offset += ( data_len - 1 );
+ offset += ( data_len - 1 );
data_len -= ( data_len - 1 );
consumed += ( data_len -1 );
}
@@ -4143,7 +4127,7 @@ decode_sysex_common_nrt_fd( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
/* file type */
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_nrt_fd_type, tvb, offset, 4, ENC_ASCII|ENC_NA );
- offset += 4;
+ offset += 4;
data_len -= 4;
consumed += 4;
@@ -4151,8 +4135,6 @@ decode_sysex_common_nrt_fd( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
/* file-name */
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_nrt_fd_name, tvb, offset, data_len, ENC_ASCII|ENC_NA );
- /*Fix Clang Warning
- offset += data_len;*/
data_len -= data_len;
consumed += data_len;
}
@@ -4168,12 +4150,10 @@ decode_sysex_common_nrt_fd( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
static unsigned int
decode_sysex_common_tuning( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset, unsigned int data_len ) {
- proto_item *tune_item = NULL;
- proto_tree *tune_tree = NULL;
- const gchar *note_str = NULL;
- guint8 sub_id = 0;
- guint8 changes = 0;
- guint8 note = 0;
+ proto_item *tune_item;
+ proto_tree *tune_tree;
+ const gchar *note_str;
+ guint8 sub_id;
int consumed = 0;
unsigned int i;
@@ -4214,7 +4194,7 @@ decode_sysex_common_tuning( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
/* file length */
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_tune_name, tvb, offset, 16, ENC_ASCII|ENC_NA );
- offset += 16;
+ offset += 16;
data_len -= 16;
consumed += 16;
@@ -4231,7 +4211,7 @@ decode_sysex_common_tuning( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
/* frequency */
proto_tree_add_item( tune_tree, hf_rtp_midi_sysex_common_tune_freq, tvb, offset, 3, ENC_BIG_ENDIAN );
- offset += 3;
+ offset += 3;
data_len -= 3;
consumed += 3;
@@ -4247,6 +4227,7 @@ decode_sysex_common_tuning( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
consumed++;
} else if ( sub_id == RTP_MIDI_SYSEX_COMMON_TUNING_NOTE_CHANGE ) {
+ guint8 changes;
if ( data_len < 1 )
return -1;
@@ -4268,6 +4249,7 @@ decode_sysex_common_tuning( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
consumed++;
for ( i=0; i < changes; i++ ) {
+ guint8 note;
if ( data_len < 4 )
return -1;
@@ -4288,7 +4270,7 @@ decode_sysex_common_tuning( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
/* frequency */
proto_tree_add_item( tune_tree, hf_rtp_midi_sysex_common_tune_freq, tvb, offset, 3, ENC_BIG_ENDIAN );
- offset += 3;
+ offset += 3;
data_len -= 3;
consumed += 3;
@@ -4514,8 +4496,6 @@ decode_sysex_common_nrt_mtc( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
/* additional data */
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_nrt_mtc_add, tvb, offset, data_len, ENC_NA );
- /*Fix Clang Warning
- offset += data_len;*/
data_len -= data_len;
consumed += data_len;
}
@@ -4561,8 +4541,6 @@ decode_sysex_common_rt_mtc_cue( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
/* additional data */
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_rt_mtc_cue_add, tvb, offset, data_len, ENC_NA );
- /*Fix Clang Warning
- offset += data_len;*/
data_len -= data_len;
consumed += data_len;
}
@@ -4578,10 +4556,10 @@ decode_sysex_common_rt_mtc_cue( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
*/
static unsigned int
decode_sysex_common_nrt( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset, unsigned int data_len ) {
- guint8 common_nrt = 0;
- const gchar *nrt_str = NULL;
- proto_item *command_item = NULL;
- proto_tree *command_tree = NULL;
+ guint8 common_nrt;
+ const gchar *nrt_str;
+ proto_item *command_item;
+ proto_tree *command_tree;
int consumed = 0;
int ext_consumed = 0;
@@ -4662,7 +4640,7 @@ decode_sysex_common_nrt( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
}
/* set our pointers correct to move past already decoded data */
- offset += ext_consumed;
+ offset += ext_consumed;
data_len -= ext_consumed;
consumed += ext_consumed;
@@ -4684,7 +4662,7 @@ decode_sysex_common_nrt( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
*/
static unsigned int
decode_sysex_common_rt_mtc( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset, unsigned int data_len ) {
- guint8 sub_id = 0;
+ guint8 sub_id;
int consumed = 0;
if ( data_len < 1 )
@@ -4848,9 +4826,8 @@ decode_sysex_common_rt_sc( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
*/
static unsigned int
decode_sysex_common_rt_ni( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset, unsigned int data_len ) {
- guint8 sub_id = 0;
+ guint8 sub_id;
int consumed = 0;
- int bytes = 0;
if ( data_len < 1 )
return consumed;
@@ -4869,13 +4846,11 @@ decode_sysex_common_rt_ni( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
/* bar number */
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_rt_ni_bar_num, tvb, offset, 2, ENC_BIG_ENDIAN );
- /*Fix Clang Warning
- offset += 2;
- data_len -= 2;*/
consumed += 2;
} else if ( ( sub_id == RTP_MIDI_SYSEX_COMMON_RT_NT_TIME_SIGNATURE_IMMEDIATE ) ||
( sub_id == RTP_MIDI_SYSEX_COMMON_RT_NT_TIME_SIGNATURE_DELAYED ) ) {
+ int bytes;
if ( data_len < 1 )
return -1;
@@ -4946,7 +4921,7 @@ decode_sysex_common_rt_ni( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
*/
static unsigned int
decode_sysex_common_rt_dc( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset, unsigned int data_len ) {
- guint8 sub_id = 0;
+ guint8 sub_id;
int consumed = 0;
if ( data_len < 1 )
@@ -4966,9 +4941,6 @@ decode_sysex_common_rt_dc( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
/* volume */
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_rt_dc_volume, tvb, offset, 2, ENC_BIG_ENDIAN );
- /*Fix Clang Warning
- offset += 2;
- data_len -= 2;*/
consumed += 2;
} else if ( sub_id == RTP_MIDI_SYSEX_COMMON_RT_DC_MASTER_BALANCE ) {
@@ -4978,9 +4950,6 @@ decode_sysex_common_rt_dc( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
/* balance */
proto_tree_add_item( tree, hf_rtp_midi_sysex_common_rt_dc_balance, tvb, offset, 2, ENC_BIG_ENDIAN );
- /*Fix Clang Warning
- offset += 2;
- data_len -= 2;*/
consumed += 2;
}
@@ -5036,10 +5005,10 @@ decode_sysex_common_rt_mmc_response( tvbuff_t *tvb, packet_info *pinfo _U_, prot
*/
static unsigned int
decode_sysex_common_rt( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset, unsigned int data_len ) {
- guint8 common_rt = 0;
- const gchar *rt_str = NULL;
- proto_item *command_item = NULL;
- proto_tree *command_tree = NULL;
+ guint8 common_rt;
+ const gchar *rt_str;
+ proto_item *command_item;
+ proto_tree *command_tree;
int consumed = 0;
int ext_consumed = 0;
@@ -5098,7 +5067,7 @@ decode_sysex_common_rt( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
}
/* set our pointers correct to move past already decoded data */
- offset += ext_consumed;
+ offset += ext_consumed;
data_len -= ext_consumed;
consumed += ext_consumed;
@@ -5118,8 +5087,8 @@ decode_sysex_common_rt( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
*/
static unsigned int
decode_sysex_common_educational( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset, unsigned int data_len ) {
- proto_item *command_item = NULL;
- proto_tree *command_tree = NULL;
+ proto_item *command_item;
+ proto_tree *command_tree;
int consumed = 0;
if ( data_len < 1 )
@@ -5139,8 +5108,8 @@ decode_sysex_common_educational( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr
*/
static unsigned int
decode_sysex_common_manufacturer( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset, unsigned int data_len, unsigned int manu_code _U_) {
- proto_item *command_item = NULL;
- proto_tree *command_tree = NULL;
+ proto_item *command_item;
+ proto_tree *command_tree;
int consumed = 0;
if ( data_len < 1 )
@@ -5166,20 +5135,18 @@ decode_sysex_common_manufacturer( tvbuff_t *tvb, packet_info *pinfo _U_, proto_t
*/
static unsigned int
decode_sysex_start(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int cmd_count, unsigned int offset, unsigned int cmd_len ) {
- guint8 octet = 0;
- guint8 manu_short = 0;
- const gchar *status_str = NULL;
- proto_item *command_item = NULL;
- proto_tree *command_tree = NULL;
+ const gchar *status_str;
+ proto_item *command_item;
+ proto_tree *command_tree;
int consumed = 0;
- int data_len = 0;
+ int data_len;
int ext_consumed = 0;
- guint16 manufacturer = 0;
status_str = val_to_str( RTP_MIDI_STATUS_COMMON_SYSEX_END, rtp_midi_common_status, rtp_midi_unknown_value_hex );
/* we need to parse "away" data until the next command */
while ( cmd_len ) {
+ guint8 octet;
octet = tvb_get_guint8( tvb, offset + consumed );
consumed++;
@@ -5211,6 +5178,8 @@ decode_sysex_start(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsi
/* lets see if we have enough data for the sysex-id */
if ( data_len > 1 ) {
+ guint8 manu_short;
+ guint16 manufacturer;
manufacturer = tvb_get_guint8( tvb, offset );
proto_tree_add_item( command_tree, hf_rtp_midi_manu_short, tvb, offset, 1, ENC_BIG_ENDIAN );
manu_short = tvb_get_guint8( tvb, offset );
@@ -5232,11 +5201,11 @@ decode_sysex_start(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsi
if ( data_len > 2 ) {
manufacturer = tvb_get_ntohs( tvb, offset );
proto_tree_add_item( command_tree, hf_rtp_midi_manu_long, tvb, offset, 2, ENC_BIG_ENDIAN );
- offset +=2 ;
- data_len -= 2;
- ext_consumed = decode_sysex_common_manufacturer( tvb, pinfo, command_tree, offset, data_len, manufacturer );
+ offset += 2 ;
+ data_len -= 2;
+ ext_consumed = decode_sysex_common_manufacturer( tvb, pinfo, command_tree, offset, data_len, manufacturer );
} else {
- ext_consumed = -1;
+ ext_consumed = -1;
}
break;
default:
@@ -5251,8 +5220,6 @@ decode_sysex_start(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsi
/* set our pointers correct to move past already decoded data */
offset += ext_consumed;
- /*Fix Clang Warning
- data_len -= ext_consumed;*/
proto_tree_add_item( command_tree, hf_rtp_midi_common_status, tvb, offset, 1, ENC_BIG_ENDIAN );
@@ -5270,10 +5237,10 @@ decode_sysex_start(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsi
*/
static int
decode_mtc_quarter_frame(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int cmd_count, unsigned int offset, unsigned int cmd_len ) {
- guint8 value = 0;
- const gchar *status_str = NULL;
- proto_item *command_item = NULL;
- proto_tree *command_tree = NULL;
+ guint8 value;
+ const gchar *status_str;
+ proto_item *command_item;
+ proto_tree *command_tree;
status_str = val_to_str( RTP_MIDI_STATUS_COMMON_MTC_QUARTER_FRAME, rtp_midi_common_status, rtp_midi_unknown_value_hex );
@@ -5315,12 +5282,12 @@ decode_mtc_quarter_frame(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
*/
static int
decode_song_position_pointer(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int cmd_count, unsigned int offset, unsigned int cmd_len ) {
- guint8 octet1 = 0;
- guint8 octet2 = 0;
- guint8 position = 0;
- const gchar *status_str = NULL;
- proto_item *command_item = NULL;
- proto_tree *command_tree = NULL;
+ guint8 octet1;
+ guint8 octet2;
+ guint8 position;
+ const gchar *status_str;
+ proto_item *command_item;
+ proto_tree *command_tree;
status_str = val_to_str( RTP_MIDI_STATUS_COMMON_SONG_POSITION_POINTER, rtp_midi_common_status, rtp_midi_unknown_value_hex );
@@ -5382,10 +5349,10 @@ decode_song_position_pointer(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
*/
static int
decode_song_select(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int cmd_count, unsigned int offset, unsigned int cmd_len ) {
- guint8 song_nr = 0;
- const gchar *status_str = NULL;
- proto_item *command_item = NULL;
- proto_tree *command_tree = NULL;
+ guint8 song_nr;
+ const gchar *status_str;
+ proto_item *command_item;
+ proto_tree *command_tree;
status_str = val_to_str( RTP_MIDI_STATUS_COMMON_SONG_SELECT, rtp_midi_common_status, rtp_midi_unknown_value_hex );
@@ -5425,16 +5392,16 @@ decode_song_select(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsi
*/
static int
decode_undefined_f4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int cmd_count, unsigned int offset, unsigned int cmd_len ) {
- guint8 octet = 0;
- const gchar *status_str = NULL;
- proto_item *command_item = NULL;
- proto_tree *command_tree = NULL;
+ const gchar *status_str;
+ proto_item *command_item;
+ proto_tree *command_tree;
int consumed = 0;
status_str = val_to_str( RTP_MIDI_STATUS_COMMON_UNDEFINED_F4, rtp_midi_common_status, rtp_midi_unknown_value_hex );
/* we need to parse "away" data until the next command */
while ( cmd_len ) {
+ guint8 octet;
octet = tvb_get_guint8( tvb, offset + consumed );
consumed++;
@@ -5464,16 +5431,16 @@ decode_undefined_f4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, uns
*/
static int
decode_undefined_f5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int cmd_count, unsigned int offset, unsigned int cmd_len ) {
- guint8 octet = 0;
- const gchar *status_str = NULL;
- proto_item *command_item = NULL;
- proto_tree *command_tree = NULL;
+ const gchar *status_str;
+ proto_item *command_item;
+ proto_tree *command_tree;
int consumed = 0;
status_str = val_to_str( RTP_MIDI_STATUS_COMMON_UNDEFINED_F5, rtp_midi_common_status, rtp_midi_unknown_value_hex );
/* we need to parse "away" data until the next command */
while ( cmd_len ) {
+ guint8 octet;
octet = tvb_get_guint8( tvb, offset + consumed );
consumed++;
/* Is this command done? */
@@ -5502,9 +5469,9 @@ decode_undefined_f5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, uns
*/
static int
decode_tune_request(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int cmd_count, unsigned int offset, unsigned int cmd_len _U_ ) {
- const gchar *status_str = NULL;
- proto_item *command_item = NULL;
- proto_tree *command_tree = NULL;
+ const gchar *status_str;
+ proto_item *command_item;
+ proto_tree *command_tree;
status_str = val_to_str( RTP_MIDI_STATUS_COMMON_TUNE_REQUEST, rtp_midi_common_status, rtp_midi_unknown_value_hex );
command_item = proto_tree_add_text(tree, tvb, offset - 1, 1, "%s", status_str );
@@ -5524,16 +5491,16 @@ decode_tune_request(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, uns
*/
static int
decode_sysex_end(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int cmd_count, unsigned int offset, unsigned int cmd_len ) {
- guint8 octet = 0;
- const gchar *status_str = NULL;
- proto_item *command_item = NULL;
- proto_tree *command_tree = NULL;
- int consumed = 0;
+ const gchar *status_str;
+ proto_item *command_item;
+ proto_tree *command_tree;
+ int consumed = 0;
status_str = val_to_str( RTP_MIDI_STATUS_COMMON_SYSEX_END, rtp_midi_common_status, rtp_midi_unknown_value_hex );
/* we need to parse "away" data until the next command */
while ( cmd_len ) {
+ guint8 octet;
octet = tvb_get_guint8( tvb, offset + consumed );
consumed++;
@@ -5584,16 +5551,14 @@ decode_sysex_end(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsign
static int
decodemidi(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int cmd_count, unsigned int offset, unsigned int cmd_len, guint8 *runningstatus, unsigned int *rsoffset )
{
- guint8 octet = 0;
- const gchar *valstr = NULL;
int consumed = 0;
int ext_consumed = 0;
- gboolean using_rs = FALSE;
- proto_item *command_item = NULL;
- proto_tree *command_tree = NULL;
+ guint8 octet;
+ gboolean using_rs;
-/* guint8 octet2;
+#if 0
+ guint8 octet2;
guint8 octet3;
guint8 cmd;
guint8 channel;
@@ -5608,8 +5573,8 @@ decodemidi(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int
guint8 subid1;
guint8 subid2;
guint8 sysexchan;
- unsigned int helpoffset;*/
-
+ unsigned int helpoffset;
+#endif
/* extra sanity check */
if ( !cmd_len ) {
@@ -5623,6 +5588,10 @@ decodemidi(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int
/* midi realtime-data -> one octet -- unlike serial-wired MIDI realtime-commands in RTP-MIDI will
* not be intermingled with other MIDI-commands, so we handle this case right here and return */
if ( octet >= 0xf8 ) {
+ proto_item *command_item;
+ proto_tree *command_tree;
+ const gchar *valstr;
+
valstr = val_to_str( octet, rtp_midi_common_status, rtp_midi_unknown_value_hex );
command_item = proto_tree_add_text(tree, tvb, offset, 1, "%s", valstr );
command_tree = proto_item_add_subtree( command_item, ett_rtp_midi_command);
@@ -5748,9 +5717,9 @@ decodemidi(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int
*/
static int
decode_cj_chapter_c( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset ) {
- proto_item *ti = NULL;
- proto_tree *rtp_midi_cj_chapter_tree = NULL;
- proto_tree *rtp_midi_loglist_tree = NULL;
+ proto_item *ti;
+ proto_tree *rtp_midi_cj_chapter_tree;
+ proto_tree *rtp_midi_loglist_tree;
int consumed = 0;
guint8 octet;
int count;
@@ -5818,10 +5787,10 @@ decode_cj_chapter_c( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
*/
static int
decode_cj_chapter_m( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset ) {
- proto_item *ti = NULL;
- proto_tree *rtp_midi_cj_chapter_tree = NULL;
- proto_tree *rtp_midi_loglist_tree = NULL;
- proto_tree *rtp_midi_loglist_item_tree = NULL;
+ proto_item *ti;
+ proto_tree *rtp_midi_cj_chapter_tree;
+ proto_tree *rtp_midi_loglist_tree;
+ proto_tree *rtp_midi_loglist_item_tree;
guint16 header;
guint8 logitemheader;
int length;
@@ -5854,7 +5823,7 @@ decode_cj_chapter_m( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
/* done with header */
consumed += 2;
- offset += 2;
+ offset += 2;
/* do we have the pending field? */
if ( header & 0x4000 ) {
@@ -6004,8 +5973,8 @@ decode_cj_chapter_m( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
proto_tree_add_item( ti, hf_rtp_midi_cj_chapter_m_log_a_button, tvb, offset, 2, ENC_BIG_ENDIAN );
consumed += 2;
- offset += 2;
- length -= 2;
+ offset += 2;
+ length -= 2;
}
/* do we have a c-button field? */
@@ -6022,8 +5991,8 @@ decode_cj_chapter_m( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
proto_tree_add_item( ti, hf_rtp_midi_cj_chapter_m_log_c_button, tvb, offset, 2, ENC_BIG_ENDIAN );
consumed += 2;
- offset += 2;
- length -= 2;
+ offset += 2;
+ length -= 2;
}
/* do we have a count field? */
@@ -6055,10 +6024,10 @@ decode_cj_chapter_m( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
*/
static int
decode_cj_chapter_n( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset ) {
- proto_item *ti = NULL;
- proto_tree *rtp_midi_cj_chapter_tree = NULL;
- proto_tree *rtp_midi_loglist_tree = NULL;
- const gchar *note_str = NULL;
+ proto_item *ti;
+ proto_tree *rtp_midi_cj_chapter_tree;
+ proto_tree *rtp_midi_loglist_tree;
+ const gchar *note_str;
int consumed = 0;
guint16 header;
guint8 note;
@@ -6104,7 +6073,7 @@ decode_cj_chapter_n( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
proto_tree_add_item( rtp_midi_cj_chapter_tree, hf_rtp_midi_cj_chapter_n_low, tvb, offset, 2, ENC_BIG_ENDIAN );
proto_tree_add_item( rtp_midi_cj_chapter_tree, hf_rtp_midi_cj_chapter_n_high, tvb, offset, 2, ENC_BIG_ENDIAN );
- offset += 2;
+ offset += 2;
consumed += 2;
if ( log_count > 0 ) {
@@ -6120,7 +6089,7 @@ decode_cj_chapter_n( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
for ( i = 0; i < log_count; i++ ) {
note = tvb_get_guint8( tvb, offset ) & 0x7f;
- velocity = tvb_get_guint8( tvb, offset + 1 ) & 0x7f;;
+ velocity = tvb_get_guint8( tvb, offset + 1 ) & 0x7f;
note_str = val_to_str( note, rtp_midi_note_values, rtp_midi_unknown_value_dec );
@@ -6169,10 +6138,10 @@ decode_cj_chapter_n( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
*/
static int
decode_cj_chapter_e( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset ) {
- proto_item *ti = NULL;
- proto_tree *rtp_midi_cj_chapter_tree = NULL;
- proto_tree *rtp_midi_loglist_tree = NULL;
- const gchar *note_str = NULL;
+ proto_item *ti;
+ proto_tree *rtp_midi_cj_chapter_tree;
+ proto_tree *rtp_midi_loglist_tree;
+ const gchar *note_str;
int consumed = 0;
guint8 header;
guint8 note;
@@ -6257,10 +6226,10 @@ decode_cj_chapter_e( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
*/
static int
decode_cj_chapter_a( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset ) {
- proto_item *ti = NULL;
- proto_tree *rtp_midi_cj_chapter_tree = NULL;
- proto_tree *rtp_midi_loglist_tree = NULL;
- const gchar *note_str = NULL;
+ proto_item *ti;
+ proto_tree *rtp_midi_cj_chapter_tree;
+ proto_tree *rtp_midi_loglist_tree;
+ const gchar *note_str;
int consumed = 0;
guint8 header;
guint8 note;
@@ -6299,7 +6268,7 @@ decode_cj_chapter_a( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
for ( i = 0; i < log_count; i++ ) {
- note = tvb_get_guint8( tvb, offset ) & 0x7f;
+ note = tvb_get_guint8( tvb, offset ) & 0x7f;
pressure = tvb_get_guint8( tvb, offset + 1 ) & 0x7f;
note_str = val_to_str( note, rtp_midi_note_values, rtp_midi_unknown_value_dec );
@@ -6332,10 +6301,10 @@ decode_cj_chapter_a( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
*/
static int
decode_channel_journal( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset ) {
- proto_item *ti = NULL;
- proto_tree *rtp_midi_chanjournal_tree = NULL;
- proto_tree *rtp_midi_cj_chapters_tree = NULL;
- proto_tree *rtp_midi_cj_chapter_tree = NULL;
+ proto_item *ti;
+ proto_tree *rtp_midi_chanjournal_tree;
+ proto_tree *rtp_midi_cj_chapters_tree;
+ proto_tree *rtp_midi_cj_chapter_tree;
guint32 chanflags;
guint16 chanjourlen;
int consumed = 0;
@@ -6370,7 +6339,7 @@ decode_channel_journal( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
rtp_midi_cj_chapters_tree = proto_item_add_subtree( ti, ett_rtp_midi_channelchapters );
/* take care of length of header */
- offset += 3;
+ offset += 3;
consumed += 3;
/* Do we have a program change chapter? */
@@ -6391,7 +6360,7 @@ decode_channel_journal( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
proto_tree_add_item( rtp_midi_cj_chapter_tree, hf_rtp_midi_cj_chapter_p_xflag, tvb, offset + 2, 1, ENC_BIG_ENDIAN );
proto_tree_add_item( rtp_midi_cj_chapter_tree, hf_rtp_midi_cj_chapter_p_bank_lsb, tvb, offset + 2, 1, ENC_BIG_ENDIAN );
- offset += 3;
+ offset += 3;
consumed += 3;
}
@@ -6402,7 +6371,7 @@ decode_channel_journal( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return ext_consumed;
}
consumed += ext_consumed;
- offset += ext_consumed;
+ offset += ext_consumed;
}
@@ -6413,7 +6382,7 @@ decode_channel_journal( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return ext_consumed;
}
consumed += ext_consumed;
- offset += ext_consumed;
+ offset += ext_consumed;
}
/* Do we have a pitch-wheel chapter? */
@@ -6447,7 +6416,7 @@ decode_channel_journal( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return ext_consumed;
}
consumed += ext_consumed;
- offset += ext_consumed;
+ offset += ext_consumed;
}
/* Do we have a note command extras chapter? */
@@ -6457,7 +6426,7 @@ decode_channel_journal( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return ext_consumed;
}
consumed += ext_consumed;
- offset += ext_consumed;
+ offset += ext_consumed;
}
/* Do we have channel aftertouch chapter? */
@@ -6484,8 +6453,6 @@ decode_channel_journal( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return ext_consumed;
}
consumed += ext_consumed;
- /*Fix Clang Warning
- offset += ext_consumed;*/
}
/* Make sanity check for consumed data vs. stated length of this channels journal */
@@ -6502,8 +6469,8 @@ decode_channel_journal( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
static int
decode_sj_chapter_d_f4( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset ) {
- proto_item *ti = NULL;
- proto_tree *rtp_midi_field_tree = NULL;
+ proto_item *ti;
+ proto_tree *rtp_midi_field_tree;
int consumed = 0;
guint16 f4flags;
guint16 f4length;
@@ -6528,7 +6495,7 @@ decode_sj_chapter_d_f4( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
proto_tree_add_item( rtp_midi_field_tree, hf_rtp_midi_sj_chapter_d_syscom_dsz, tvb, offset, 2, ENC_BIG_ENDIAN );
proto_tree_add_item( rtp_midi_field_tree, hf_rtp_midi_sj_chapter_d_syscom_length, tvb, offset, 2, ENC_BIG_ENDIAN );
- offset += 2;
+ offset += 2;
consumed += 2;
f4length -= 2;
@@ -6562,8 +6529,8 @@ decode_sj_chapter_d_f4( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
}
}
proto_tree_add_item( rtp_midi_field_tree, hf_rtp_midi_sj_chapter_d_syscom_value, tvb, offset, valuelen, ENC_NA );
- offset+=valuelen;
- f4length-=valuelen;
+ offset += valuelen;
+ f4length -= valuelen;
}
if ( f4flags & RTP_MIDI_SJ_CHAPTER_D_SYSCOM_FLAG_L ) {
@@ -6573,8 +6540,8 @@ decode_sj_chapter_d_f4( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
}
proto_tree_add_item( rtp_midi_field_tree, hf_rtp_midi_sj_chapter_d_syscom_legal, tvb, offset, f4length, ENC_NA );
- offset+=f4length;
- f4length-=f4length;
+ offset += f4length;
+ f4length -= f4length;
}
/* if we still have data, the length-field was incorrect we dump the data here and abort! */
@@ -6585,8 +6552,6 @@ decode_sj_chapter_d_f4( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
}
proto_tree_add_item( rtp_midi_field_tree, hf_rtp_midi_sj_chapter_d_syscom_data, tvb, offset, f4length, ENC_NA );
- /*Fix Clang Warning
- offset += f4length;*/
consumed += f4length;
/* must be a protocol error - since we have a length, we can recover...*/
}
@@ -6602,8 +6567,8 @@ decode_sj_chapter_d_f4( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
static int
decode_sj_chapter_d_f5( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset ) {
- proto_item *ti = NULL;
- proto_tree *rtp_midi_field_tree = NULL;
+ proto_item *ti;
+ proto_tree *rtp_midi_field_tree;
int consumed = 0;
guint16 f5flags;
guint16 f5length;
@@ -6628,7 +6593,7 @@ decode_sj_chapter_d_f5( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
proto_tree_add_item( rtp_midi_field_tree, hf_rtp_midi_sj_chapter_d_syscom_dsz, tvb, offset, 2, ENC_BIG_ENDIAN );
proto_tree_add_item( rtp_midi_field_tree, hf_rtp_midi_sj_chapter_d_syscom_length, tvb, offset, 2, ENC_BIG_ENDIAN );
- offset += 2;
+ offset += 2;
consumed += 2;
f5length -= 2;
@@ -6662,8 +6627,8 @@ decode_sj_chapter_d_f5( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
}
}
proto_tree_add_item( rtp_midi_field_tree, hf_rtp_midi_sj_chapter_d_syscom_value, tvb, offset, valuelen, ENC_NA );
- offset+=valuelen;
- f5length-=valuelen;
+ offset += valuelen;
+ f5length -= valuelen;
}
if ( f5flags & RTP_MIDI_SJ_CHAPTER_D_SYSCOM_FLAG_L ) {
@@ -6673,8 +6638,8 @@ decode_sj_chapter_d_f5( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
}
proto_tree_add_item( rtp_midi_field_tree, hf_rtp_midi_sj_chapter_d_syscom_legal, tvb, offset, f5length, ENC_NA );
- offset+=f5length;
- f5length-=f5length;
+ offset += f5length;
+ f5length -= f5length;
}
/* if we still have data, we dump it here - see above! */
@@ -6685,8 +6650,6 @@ decode_sj_chapter_d_f5( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
}
proto_tree_add_item( rtp_midi_field_tree, hf_rtp_midi_sj_chapter_d_syscom_data, tvb, offset, f5length, ENC_NA );
- /*Fix Clang Warning
- offset += f5length;*/
consumed += f5length;
/* must be a protocol error - since we have a length, we can recover...*/
}
@@ -6700,8 +6663,8 @@ decode_sj_chapter_d_f5( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
static int
decode_sj_chapter_d_f9( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset ) {
- proto_item *ti = NULL;
- proto_tree *rtp_midi_field_tree = NULL;
+ proto_item *ti;
+ proto_tree *rtp_midi_field_tree;
int consumed = 0;
guint8 f9flags;
guint8 f9length;
@@ -6748,8 +6711,8 @@ decode_sj_chapter_d_f9( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
}
proto_tree_add_item( rtp_midi_field_tree, hf_rtp_midi_sj_chapter_d_sysreal_legal, tvb, offset, f9length, ENC_NA );
- offset+=f9length;
- f9length-=f9length;
+ offset += f9length;
+ f9length -= f9length;
}
/* if we still have data, the length-field was incorrect we dump the data here and abort! */
@@ -6761,8 +6724,6 @@ decode_sj_chapter_d_f9( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
}
proto_tree_add_item( rtp_midi_field_tree, hf_rtp_midi_sj_chapter_d_sysreal_data, tvb, offset, f9length, ENC_NA );
- /*Fix Clang Warning
- offset += f9length;*/
consumed += f9length;
/* must be a protocol error - since we have a length, we can recover...*/
}
@@ -6777,8 +6738,8 @@ decode_sj_chapter_d_f9( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
static int
decode_sj_chapter_d_fd( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset ) {
- proto_item *ti = NULL;
- proto_tree *rtp_midi_field_tree = NULL;
+ proto_item *ti;
+ proto_tree *rtp_midi_field_tree;
int consumed = 0;
guint8 fdflags;
guint8 fdlength;
@@ -6789,7 +6750,7 @@ decode_sj_chapter_d_fd( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
}
/* Get flags & length */
- fdflags = tvb_get_guint8( tvb, offset );
+ fdflags = tvb_get_guint8( tvb, offset );
fdlength = fdflags & RTP_MIDI_SJ_CHAPTER_D_SYSREAL_MASK_LENGTH;
/* now we can display our tree, as we now have the full length */
@@ -6825,8 +6786,8 @@ decode_sj_chapter_d_fd( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
}
proto_tree_add_item( rtp_midi_field_tree, hf_rtp_midi_sj_chapter_d_sysreal_legal, tvb, offset, fdlength, ENC_NA );
- offset+=fdlength;
- fdlength-=fdlength;
+ offset += fdlength;
+ fdlength -= fdlength;
}
/* if we still have data, the length-field was incorrect we dump the data here and abort! */
@@ -6839,8 +6800,6 @@ decode_sj_chapter_d_fd( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
proto_tree_add_item( rtp_midi_field_tree, hf_rtp_midi_sj_chapter_d_sysreal_data, tvb, offset, fdlength, ENC_NA );
- /*Fix Clang Warning
- offset += fdlength;*/
consumed += fdlength;
/* must be a protocol error - since we have a length, we can recover...*/
}
@@ -6855,10 +6814,10 @@ decode_sj_chapter_d_fd( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
*/
static int
decode_sj_chapter_d( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset ) {
- proto_item *ti = NULL;
- proto_item *tix = NULL;
- proto_tree *rtp_midi_sj_chapter_tree = NULL;
- proto_tree *rtp_midi_field_tree = NULL;
+ proto_item *ti;
+ proto_item *tix;
+ proto_tree *rtp_midi_sj_chapter_tree;
+ proto_tree *rtp_midi_field_tree;
guint8 header;
int consumed = 0;
int ext_consumed;
@@ -6949,7 +6908,7 @@ decode_sj_chapter_d( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
return ext_consumed;
}
consumed += ext_consumed;
- offset += ext_consumed;
+ offset += ext_consumed;
}
/* do we have 0xF5 field? */
@@ -6959,7 +6918,7 @@ decode_sj_chapter_d( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
return ext_consumed;
}
consumed += ext_consumed;
- offset += ext_consumed;
+ offset += ext_consumed;
}
/* do we have 0xF9 field? */
@@ -6969,7 +6928,7 @@ decode_sj_chapter_d( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
return ext_consumed;
}
consumed += ext_consumed;
- offset += ext_consumed;
+ offset += ext_consumed;
}
/* do we have 0xFD field? */
@@ -6979,8 +6938,6 @@ decode_sj_chapter_d( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
return ext_consumed;
}
consumed += ext_consumed;
- /*Fix Clang Warning
- offset += ext_consumed;*/
}
@@ -6994,8 +6951,8 @@ decode_sj_chapter_d( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
*/
static int
decode_sj_chapter_q( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset ) {
- proto_item *ti = NULL;
- proto_tree *rtp_midi_sj_chapter_tree = NULL;
+ proto_item *ti;
+ proto_tree *rtp_midi_sj_chapter_tree;
guint8 header;
int consumed = 0;
int len = 1;
@@ -7034,7 +6991,7 @@ decode_sj_chapter_q( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
proto_tree_add_item( rtp_midi_sj_chapter_tree, hf_rtp_midi_sj_chapter_q_clock, tvb, offset, 3, ENC_BIG_ENDIAN );
consumed += 3;
- offset += 3;
+ offset += 3;
} else {
proto_tree_add_item( rtp_midi_sj_chapter_tree, hf_rtp_midi_sj_chapter_q_top, tvb, offset, 1, ENC_BIG_ENDIAN );
@@ -7051,8 +7008,6 @@ decode_sj_chapter_q( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
proto_tree_add_item( rtp_midi_sj_chapter_tree, hf_rtp_midi_sj_chapter_q_timetools, tvb, offset, 3, ENC_BIG_ENDIAN );
consumed += 3;
- /*Fix Clang Warning
- offset += 3;*/
}
return consumed;
@@ -7063,9 +7018,9 @@ decode_sj_chapter_q( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
*/
static int
decode_sj_chapter_f( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset ) {
- proto_item *ti = NULL;
- proto_tree *rtp_midi_sj_chapter_tree = NULL;
- proto_tree *rtp_midi_sj_field_tree = NULL;
+ proto_item *ti;
+ proto_tree *rtp_midi_sj_chapter_tree;
+ proto_tree *rtp_midi_sj_field_tree;
guint8 header;
int consumed = 0;
int len = 1;
@@ -7125,7 +7080,7 @@ decode_sj_chapter_f( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
}
consumed += 4;
- offset += 4;
+ offset += 4;
}
if ( header & RTP_MIDI_SJ_CHAPTER_F_FLAG_P ) {
@@ -7146,8 +7101,6 @@ decode_sj_chapter_f( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
proto_tree_add_item( rtp_midi_sj_field_tree, hf_rtp_midi_sj_chapter_f_mt7, tvb, offset, 4, ENC_BIG_ENDIAN );
consumed += 4;
- /*Fix Clang Warning
- offset += 4;*/
}
return consumed;
@@ -7158,18 +7111,16 @@ decode_sj_chapter_f( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
*/
static int
decode_sj_chapter_x( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset, unsigned int max_length ) {
- proto_item *ti = NULL;
- proto_tree *rtp_midi_sj_chapter_tree = NULL;
- proto_tree *rtp_midi_sj_data_tree = NULL;
+ proto_item *ti;
+ proto_tree *rtp_midi_sj_chapter_tree;
+ proto_tree *rtp_midi_sj_data_tree;
guint8 header;
guint8 octet;
unsigned int consumed = 0;
- unsigned long field = 0;
- unsigned long fieldlen = 0;
- unsigned long cmdlen = 0;
+ unsigned long cmdlen = 0;
unsigned int i;
- /* Can we read this chapters header? */
+ /* Can we read this chapter's header? */
if ( !tvb_bytes_exist( tvb, offset, 1 ) ) {
return -1;
}
@@ -7216,6 +7167,8 @@ decode_sj_chapter_x( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
}
if ( header & RTP_MIDI_SJ_CHAPTER_X_FLAG_F ) {
+ unsigned long field = 0;
+ unsigned long fieldlen = 0;
/* FIRST is "compressed" using only the necessary amount of octets, like delta-time */
for ( i=0; i < 4; i++ ) {
@@ -7249,11 +7202,12 @@ decode_sj_chapter_x( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
break;
}
- consumed+=fieldlen;
- offset+=fieldlen;
+ consumed += fieldlen;
+ offset += fieldlen;
}
+ /* XXX: 'cmdlen' in the following is always 0 (since initialized to 0 above) ??? */
if ( header & RTP_MIDI_SJ_CHAPTER_X_FLAG_D ) {
ti = proto_tree_add_text( rtp_midi_sj_chapter_tree, tvb, offset, max_length - consumed, RTP_MIDI_TREE_NAME_SJ_CHAPTER_X_DATA );
rtp_midi_sj_data_tree = proto_item_add_subtree( ti, ett_rtp_midi_sj_chapter_x_data );
@@ -7262,9 +7216,9 @@ decode_sj_chapter_x( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
if ( octet & 0x80 ) {
proto_tree_add_item( rtp_midi_sj_data_tree, hf_rtp_midi_sj_chapter_x_data, tvb, offset, cmdlen, ENC_NA );
offset += cmdlen;
- cmdlen = 0;
+ cmdlen = 0;
}
- consumed +=1;
+ consumed += 1;
}
/* unfinished command still to put into tree */
if ( cmdlen ) {
@@ -7295,11 +7249,10 @@ decode_sj_chapter_x( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, un
*/
static int
decode_system_journal( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned int offset ) {
- proto_item *ti = NULL;
- proto_tree *rtp_midi_sysjournal_tree = NULL;
- proto_tree *rtp_midi_sj_chapters_tree = NULL;
- proto_tree *rtp_midi_sj_chapter_tree = NULL;
- int consumed = 0;
+ proto_item *ti;
+ proto_tree *rtp_midi_sysjournal_tree;
+ proto_tree *rtp_midi_sj_chapters_tree;
+ int consumed = 0;
int ext_consumed = 0;
guint16 sysjourlen;
guint16 systemflags;
@@ -7312,7 +7265,7 @@ decode_system_journal( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
}
systemflags = tvb_get_ntohs( tvb, offset );
- sysjourlen = systemflags & RTP_MIDI_SJ_MASK_LENGTH;
+ sysjourlen = systemflags & RTP_MIDI_SJ_MASK_LENGTH;
ti = proto_tree_add_text( tree, tvb, offset, sysjourlen, RTP_MIDI_TREE_NAME_SYSTEM_JOURNAL );
rtp_midi_sysjournal_tree = proto_item_add_subtree( ti, ett_rtp_midi_systemjournal );
@@ -7325,7 +7278,7 @@ decode_system_journal( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
proto_tree_add_item( rtp_midi_sysjournal_tree, hf_rtp_midi_sysjour_toc_x, tvb, offset, 2, ENC_BIG_ENDIAN );
proto_tree_add_item( rtp_midi_sysjournal_tree, hf_rtp_midi_sysjour_len, tvb, offset, 2, ENC_BIG_ENDIAN );
- offset += 2;
+ offset += 2;
consumed += 2;
ti = proto_tree_add_text( rtp_midi_sysjournal_tree, tvb, offset, sysjourlen - 2, RTP_MIDI_TREE_NAME_SYSTEM_CHAPTERS );
@@ -7338,11 +7291,12 @@ decode_system_journal( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return ext_consumed;
}
consumed += ext_consumed;
- offset += ext_consumed;
+ offset += ext_consumed;
}
/* Do we have a active sensing chapter? */
if ( systemflags & RTP_MIDI_SJ_FLAG_V ) {
+ proto_tree *rtp_midi_sj_chapter_tree;
/* Can we get the data for the Active Sense chapter? */
if ( !tvb_bytes_exist( tvb, offset, 1 ) ) {
return -1;
@@ -7365,7 +7319,7 @@ decode_system_journal( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return ext_consumed;
}
consumed += ext_consumed;
- offset += ext_consumed;
+ offset += ext_consumed;
}
/* Do we have a MTC chapter? */
@@ -7375,7 +7329,7 @@ decode_system_journal( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return ext_consumed;
}
consumed += ext_consumed;
- offset += ext_consumed;
+ offset += ext_consumed;
}
@@ -7391,8 +7345,6 @@ decode_system_journal( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return ext_consumed;
}
consumed += ext_consumed;
- /*Fix Clang Warning
- offset += ext_consumed;*/
}
@@ -7418,25 +7370,19 @@ decode_system_journal( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
static void
dissect_rtp_midi( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree )
{
- proto_item *ti = NULL;
- proto_item *command_item = NULL;
- proto_item *journal_item = NULL;
- proto_tree *rtp_midi_tree = NULL;
- proto_tree *rtp_midi_commands_tree = NULL;
- proto_tree *rtp_midi_journal_tree = NULL;
- proto_tree *rtp_midi_chanjournals_tree = NULL;
- unsigned int offset = 0;
-
- guint8 flags; /* used for command-section and journal-section*/
- guint8 octet;
+ proto_item *ti;
+ proto_tree *rtp_midi_tree;
+ unsigned int offset = 0;
+
+ guint8 flags; /* used for command-section and journal-section*/
unsigned int cmd_len;
unsigned int cmd_count;
- guint8 runningstatus;
+ guint8 runningstatus;
- int consumed;
- unsigned int rsoffset;
+ int consumed;
+ unsigned int rsoffset = 0;
- guint8 totchan;
+ guint8 totchan;
unsigned int i;
@@ -7464,17 +7410,21 @@ dissect_rtp_midi( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree )
/* see if we have small or large len-field */
if (flags & RTP_MIDI_CS_FLAG_B) {
- octet = tvb_get_guint8( tvb, offset+1 );
- cmd_len = ( cmd_len << 8 ) | octet;
+ guint8 octet;
+ octet = tvb_get_guint8( tvb, offset+1 );
+ cmd_len = ( cmd_len << 8 ) | octet;
proto_tree_add_item( rtp_midi_tree, hf_rtp_midi_longlen, tvb, offset, 2, ENC_BIG_ENDIAN );
- offset += 2;
+ offset += 2;
} else {
proto_tree_add_item( rtp_midi_tree, hf_rtp_midi_shortlen, tvb, offset, 1, ENC_BIG_ENDIAN );
- offset++;
+ offset++;
}
/* if we have a command-section -> dissect it */
if ( cmd_len ) {
+ proto_item *command_item;
+ proto_tree *rtp_midi_commands_tree;
+
command_item = proto_tree_add_text( rtp_midi_tree, tvb, offset, cmd_len, RTP_MIDI_TREE_NAME_COMMAND );
rtp_midi_commands_tree = proto_item_add_subtree( command_item, ett_rtp_midi_commands );
@@ -7485,10 +7435,10 @@ dissect_rtp_midi( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree )
}
/* No commands decoded yet */
- cmd_count=0;
+ cmd_count = 0;
/* RTP-MIDI-pdus always start with no running status */
- runningstatus=0;
+ runningstatus = 0;
/* Multiple MIDI-commands might follow - the exact number can only be discovered by really decoding the commands! */
while ( cmd_len) {
@@ -7497,14 +7447,14 @@ dissect_rtp_midi( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree )
if ( ( cmd_count ) || ( flags & RTP_MIDI_CS_FLAG_Z ) ) {
/* Decode a delta-time - if 0 is returned something went wrong */
- consumed=decodetime( tvb, pinfo, rtp_midi_commands_tree, offset, cmd_len );
+ consumed = decodetime( tvb, pinfo, rtp_midi_commands_tree, offset, cmd_len );
if ( -1 == consumed ) {
THROW( ReportedBoundsError );
return;
}
/* seek to next command and set remaining length */
- offset += consumed;
+ offset += consumed;
cmd_len -= consumed;
}
@@ -7519,7 +7469,7 @@ dissect_rtp_midi( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree )
}
/* seek to next delta-time and set remaining length */
- offset += consumed;
+ offset += consumed;
cmd_len -= consumed;
/* as we have successfully decoded another command, increment count */
@@ -7533,6 +7483,8 @@ dissect_rtp_midi( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree )
/* if we have a journal-section -> dissect it */
if ( flags & RTP_MIDI_CS_FLAG_J ) {
+ proto_item *journal_item;
+ proto_tree *rtp_midi_journal_tree;
journal_item = proto_tree_add_text( rtp_midi_tree, tvb, offset, -1, RTP_MIDI_TREE_NAME_JOURNAL );
rtp_midi_journal_tree = proto_item_add_subtree( journal_item, ett_rtp_midi_journal );
@@ -7572,6 +7524,7 @@ dissect_rtp_midi( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree )
/* do we have channel journal(s)? */
if ( flags & RTP_MIDI_JS_FLAG_A ) {
+ proto_tree *rtp_midi_chanjournals_tree;
ti = proto_tree_add_text( rtp_midi_journal_tree, tvb, offset, -1, RTP_MIDI_TREE_NAME_CHANNEL_JOURNAL );
rtp_midi_chanjournals_tree = proto_item_add_subtree( ti, ett_rtp_midi_channeljournals );
@@ -11210,9 +11163,9 @@ proto_reg_handoff_rtp_midi( void )
else {
dissector_delete_uint( "rtp.pt", saved_payload_type_value, rtp_midi_handle );
}
-
- saved_payload_type_value = rtp_midi_payload_type_value;
-
- dissector_add_uint( "rtp.pt", saved_payload_type_value, rtp_midi_handle );
+ if ( rtp_midi_payload_type_value > 95 ){
+ saved_payload_type_value = rtp_midi_payload_type_value;
+ dissector_add_uint( "rtp.pt", saved_payload_type_value, rtp_midi_handle );
+ }
}
diff --git a/epan/dissectors/packet-rtp.c b/epan/dissectors/packet-rtp.c
index a641ce3c51..472c62a165 100644
--- a/epan/dissectors/packet-rtp.c
+++ b/epan/dissectors/packet-rtp.c
@@ -373,42 +373,42 @@ static const value_string rtp_payload_type_vals[] =
/* 93 */ { 93, "Unassigned" },
/* 94 */ { 94, "Unassigned" },
/* 95 */ { 95, "Unassigned" },
- /* Alex Lindberg - Added to support addtional RTP payload types
- See epan/rtp_pt.h */
- { PT_UNDF_96, "DynamicRTP-Type-96" },
- { PT_UNDF_97, "DynamicRTP-Type-97" },
- { PT_UNDF_98, "DynamicRTP-Type-98" },
- { PT_UNDF_99, "DynamicRTP-Type-99" },
- { PT_UNDF_100, "DynamicRTP-Type-100" },
- { PT_UNDF_101, "DynamicRTP-Type-101" },
- { PT_UNDF_102, "DynamicRTP-Type-102" },
- { PT_UNDF_103, "DynamicRTP-Type-103" },
- { PT_UNDF_104, "DynamicRTP-Type-104" },
- { PT_UNDF_105, "DynamicRTP-Type-105" },
- { PT_UNDF_106, "DynamicRTP-Type-106" },
- { PT_UNDF_107, "DynamicRTP-Type-107" },
- { PT_UNDF_108, "DynamicRTP-Type-108" },
- { PT_UNDF_109, "DynamicRTP-Type-109" },
- { PT_UNDF_110, "DynamicRTP-Type-110" },
- { PT_UNDF_111, "DynamicRTP-Type-111" },
- { PT_UNDF_112, "DynamicRTP-Type-112" },
- { PT_UNDF_113, "DynamicRTP-Type-113" },
- { PT_UNDF_114, "DynamicRTP-Type-114" },
- { PT_UNDF_115, "DynamicRTP-Type-115" },
- { PT_UNDF_116, "DynamicRTP-Type-116" },
- { PT_UNDF_117, "DynamicRTP-Type-117" },
- { PT_UNDF_118, "DynamicRTP-Type-118" },
- { PT_UNDF_119, "DynamicRTP-Type-119" },
- { PT_UNDF_120, "DynamicRTP-Type-120" },
- { PT_UNDF_121, "DynamicRTP-Type-121" },
- { PT_UNDF_122, "DynamicRTP-Type-122" },
- { PT_UNDF_123, "DynamicRTP-Type-123" },
- { PT_UNDF_124, "DynamicRTP-Type-124" },
- { PT_UNDF_125, "DynamicRTP-Type-125" },
- { PT_UNDF_126, "DynamicRTP-Type-126" },
- { PT_UNDF_127, "DynamicRTP-Type-127" },
-
- { 0, NULL },
+ /* Added to support addtional RTP payload types
+ * See epan/rtp_pt.h */
+ { PT_UNDF_96, "DynamicRTP-Type-96" },
+ { PT_UNDF_97, "DynamicRTP-Type-97" },
+ { PT_UNDF_98, "DynamicRTP-Type-98" },
+ { PT_UNDF_99, "DynamicRTP-Type-99" },
+ { PT_UNDF_100, "DynamicRTP-Type-100" },
+ { PT_UNDF_101, "DynamicRTP-Type-101" },
+ { PT_UNDF_102, "DynamicRTP-Type-102" },
+ { PT_UNDF_103, "DynamicRTP-Type-103" },
+ { PT_UNDF_104, "DynamicRTP-Type-104" },
+ { PT_UNDF_105, "DynamicRTP-Type-105" },
+ { PT_UNDF_106, "DynamicRTP-Type-106" },
+ { PT_UNDF_107, "DynamicRTP-Type-107" },
+ { PT_UNDF_108, "DynamicRTP-Type-108" },
+ { PT_UNDF_109, "DynamicRTP-Type-109" },
+ { PT_UNDF_110, "DynamicRTP-Type-110" },
+ { PT_UNDF_111, "DynamicRTP-Type-111" },
+ { PT_UNDF_112, "DynamicRTP-Type-112" },
+ { PT_UNDF_113, "DynamicRTP-Type-113" },
+ { PT_UNDF_114, "DynamicRTP-Type-114" },
+ { PT_UNDF_115, "DynamicRTP-Type-115" },
+ { PT_UNDF_116, "DynamicRTP-Type-116" },
+ { PT_UNDF_117, "DynamicRTP-Type-117" },
+ { PT_UNDF_118, "DynamicRTP-Type-118" },
+ { PT_UNDF_119, "DynamicRTP-Type-119" },
+ { PT_UNDF_120, "DynamicRTP-Type-120" },
+ { PT_UNDF_121, "DynamicRTP-Type-121" },
+ { PT_UNDF_122, "DynamicRTP-Type-122" },
+ { PT_UNDF_123, "DynamicRTP-Type-123" },
+ { PT_UNDF_124, "DynamicRTP-Type-124" },
+ { PT_UNDF_125, "DynamicRTP-Type-125" },
+ { PT_UNDF_126, "DynamicRTP-Type-126" },
+ { PT_UNDF_127, "DynamicRTP-Type-127" },
+
+ { 0, NULL },
};
value_string_ext rtp_payload_type_vals_ext = VALUE_STRING_EXT_INIT(rtp_payload_type_vals);
@@ -435,86 +435,86 @@ static const value_string rtp_payload_type_short_vals[] =
{ PT_DVI4_22050, "DVI4 22k" },
{ PT_G729, "g729" },
{ PT_CN_OLD, "CN(old)" },
-/* 20 */ { 20, "Unassigned" },
-/* 21 */ { 21, "Unassigned" },
-/* 22 */ { 22, "Unassigned" },
-/* 23 */ { 23, "Unassigned" },
-/* 24 */ { 24, "Unassigned" },
+ { 20, "Unassigned" },
+ { 21, "Unassigned" },
+ { 22, "Unassigned" },
+ { 23, "Unassigned" },
+ { 24, "Unassigned" },
{ PT_CELB, "CellB" },
{ PT_JPEG, "JPEG" },
-/* 27 */ { 27, "Unassigned" },
+ { 27, "Unassigned" },
{ PT_NV, "NV" },
-/* 29 */ { 29, "Unassigned" },
-/* 30 */ { 30, "Unassigned" },
+ { 29, "Unassigned" },
+ { 30, "Unassigned" },
{ PT_H261, "h261" },
{ PT_MPV, "MPEG-I/II Video"},
{ PT_MP2T, "MPEG-II streams"},
{ PT_H263, "h263" },
/* 35-71 Unassigned */
-/* 35 */ { 35, "Unassigned" },
-/* 36 */ { 36, "Unassigned" },
-/* 37 */ { 37, "Unassigned" },
-/* 38 */ { 38, "Unassigned" },
-/* 39 */ { 39, "Unassigned" },
-/* 40 */ { 40, "Unassigned" },
-/* 41 */ { 41, "Unassigned" },
-/* 42 */ { 42, "Unassigned" },
-/* 43 */ { 43, "Unassigned" },
-/* 44 */ { 44, "Unassigned" },
-/* 45 */ { 45, "Unassigned" },
-/* 46 */ { 46, "Unassigned" },
-/* 47 */ { 47, "Unassigned" },
-/* 48 */ { 48, "Unassigned" },
-/* 49 */ { 49, "Unassigned" },
-/* 50 */ { 50, "Unassigned" },
-/* 51 */ { 51, "Unassigned" },
-/* 52 */ { 52, "Unassigned" },
-/* 53 */ { 53, "Unassigned" },
-/* 54 */ { 54, "Unassigned" },
-/* 55 */ { 55, "Unassigned" },
-/* 56 */ { 56, "Unassigned" },
-/* 57 */ { 57, "Unassigned" },
-/* 58 */ { 58, "Unassigned" },
-/* 59 */ { 59, "Unassigned" },
-/* 60 */ { 60, "Unassigned" },
-/* 61 */ { 61, "Unassigned" },
-/* 62 */ { 62, "Unassigned" },
-/* 63 */ { 63, "Unassigned" },
-/* 64 */ { 64, "Unassigned" },
-/* 65 */ { 65, "Unassigned" },
-/* 66 */ { 66, "Unassigned" },
-/* 67 */ { 67, "Unassigned" },
-/* 68 */ { 68, "Unassigned" },
-/* 69 */ { 69, "Unassigned" },
-/* 70 */ { 70, "Unassigned" },
-/* 71 */ { 71, "Unassigned" },
-/* 72-76 Reserved for RTCP conflict avoidance [RFC3551] */
-/* 72 */ { 72, "Reserved for RTCP conflict avoidance" },
-/* 73 */ { 73, "Reserved for RTCP conflict avoidance" },
-/* 74 */ { 74, "Reserved for RTCP conflict avoidance" },
-/* 75 */ { 75, "Reserved for RTCP conflict avoidance" },
-/* 76 */ { 76, "Reserved for RTCP conflict avoidance" },
+ { 35, "Unassigned" },
+ { 36, "Unassigned" },
+ { 37, "Unassigned" },
+ { 38, "Unassigned" },
+ { 39, "Unassigned" },
+ { 40, "Unassigned" },
+ { 41, "Unassigned" },
+ { 42, "Unassigned" },
+ { 43, "Unassigned" },
+ { 44, "Unassigned" },
+ { 45, "Unassigned" },
+ { 46, "Unassigned" },
+ { 47, "Unassigned" },
+ { 48, "Unassigned" },
+ { 49, "Unassigned" },
+ { 50, "Unassigned" },
+ { 51, "Unassigned" },
+ { 52, "Unassigned" },
+ { 53, "Unassigned" },
+ { 54, "Unassigned" },
+ { 55, "Unassigned" },
+ { 56, "Unassigned" },
+ { 57, "Unassigned" },
+ { 58, "Unassigned" },
+ { 59, "Unassigned" },
+ { 60, "Unassigned" },
+ { 61, "Unassigned" },
+ { 62, "Unassigned" },
+ { 63, "Unassigned" },
+ { 64, "Unassigned" },
+ { 65, "Unassigned" },
+ { 66, "Unassigned" },
+ { 67, "Unassigned" },
+ { 68, "Unassigned" },
+ { 69, "Unassigned" },
+ { 70, "Unassigned" },
+ { 71, "Unassigned" },
+/* 72-76 Reserved for RTCP conflict avoidance - [RFC3551] */
+ { 72, "Reserved for RTCP conflict avoidance" },
+ { 73, "Reserved for RTCP conflict avoidance" },
+ { 74, "Reserved for RTCP conflict avoidance" },
+ { 75, "Reserved for RTCP conflict avoidance" },
+ { 76, "Reserved for RTCP conflict avoidance" },
/* 77-95 Unassigned ? */
-/* 77 */ { 77, "Unassigned" },
-/* 78 */ { 78, "Unassigned" },
-/* 79 */ { 79, "Unassigned" },
-/* 80 */ { 80, "Unassigned" },
-/* 81 */ { 81, "Unassigned" },
-/* 82 */ { 82, "Unassigned" },
-/* 83 */ { 83, "Unassigned" },
-/* 84 */ { 84, "Unassigned" },
-/* 85 */ { 85, "Unassigned" },
-/* 86 */ { 86, "Unassigned" },
-/* 87 */ { 87, "Unassigned" },
-/* 88 */ { 88, "Unassigned" },
-/* 89 */ { 89, "Unassigned" },
-/* 90 */ { 90, "Unassigned" },
-/* 91 */ { 91, "Unassigned" },
-/* 92 */ { 92, "Unassigned" },
-/* 93 */ { 93, "Unassigned" },
-/* 94 */ { 94, "Unassigned" },
-/* 95 */ { 95, "Unassigned" },
- /* Alex Lindberg - Short RTP types */
+ { 77, "Unassigned" },
+ { 78, "Unassigned" },
+ { 79, "Unassigned" },
+ { 80, "Unassigned" },
+ { 81, "Unassigned" },
+ { 82, "Unassigned" },
+ { 83, "Unassigned" },
+ { 84, "Unassigned" },
+ { 85, "Unassigned" },
+ { 86, "Unassigned" },
+ { 87, "Unassigned" },
+ { 88, "Unassigned" },
+ { 89, "Unassigned" },
+ { 90, "Unassigned" },
+ { 91, "Unassigned" },
+ { 92, "Unassigned" },
+ { 93, "Unassigned" },
+ { 94, "Unassigned" },
+ { 95, "Unassigned" },
+ /* Short RTP types */
{ PT_UNDF_96, "RTPType-96" },
{ PT_UNDF_97, "RTPType-97" },
{ PT_UNDF_98, "RTPType-98" },
@@ -556,7 +556,7 @@ value_string_ext rtp_payload_type_short_vals_ext = VALUE_STRING_EXT_INIT(rtp_pay
static const value_string srtp_encryption_alg_vals[] =
{
{ SRTP_ENC_ALG_NULL, "Null Encryption" },
- { SRTP_ENC_ALG_AES_CM, "AES-128 Counter Mode" },
+ { SRTP_ENC_ALG_AES_CM, "AES-128 Counter Mode" },
{ SRTP_ENC_ALG_AES_F8, "AES-128 F8 Mode" },
{ 0, NULL },
};
@@ -570,7 +570,8 @@ static const value_string srtp_auth_alg_vals[] =
#endif
/* initialisation routine */
-static void rtp_fragment_init(void)
+static void
+rtp_fragment_init(void)
{
fragment_table_init(&fragment_table);
}
@@ -584,11 +585,11 @@ rtp_free_hash_dyn_payload(GHashTable *rtp_dyn_payload)
}
/* Set up an SRTP conversation */
-void srtp_add_address(packet_info *pinfo,
- address *addr, int port,
- int other_port,
- const gchar *setup_method, guint32 setup_frame_number, gboolean is_video _U_, GHashTable *rtp_dyn_payload,
- struct srtp_info *srtp_info)
+void
+srtp_add_address(packet_info *pinfo, address *addr, int port, int other_port,
+ const gchar *setup_method, guint32 setup_frame_number,
+ gboolean is_video _U_, GHashTable *rtp_dyn_payload,
+ struct srtp_info *srtp_info)
{
address null_addr;
conversation_t* p_conv;
@@ -605,7 +606,9 @@ void srtp_add_address(packet_info *pinfo,
}
#ifdef DEBUG
- printf("#%u: %srtp_add_address(%s, %u, %u, %s, %u\n", pinfo->fd->num, (srtp_info)?"s":"", ep_address_to_str(addr), port, other_port, setup_method, setup_frame_number);
+ printf("#%u: %srtp_add_address(%s, %u, %u, %s, %u\n",
+ pinfo->fd->num, (srtp_info)?"s":"", ep_address_to_str(addr), port,
+ other_port, setup_method, setup_frame_number);
#endif
SET_ADDRESS(&null_addr, AT_NONE, 0, NULL);
@@ -614,16 +617,16 @@ void srtp_add_address(packet_info *pinfo,
* Check if the ip address and port combination is not
* already registered as a conversation.
*/
- p_conv = find_conversation( setup_frame_number, addr, &null_addr, PT_UDP, port, other_port,
- NO_ADDR_B | (!other_port ? NO_PORT_B : 0));
+ p_conv = find_conversation(setup_frame_number, addr, &null_addr, PT_UDP, port, other_port,
+ NO_ADDR_B | (!other_port ? NO_PORT_B : 0));
/*
* If not, create a new conversation.
*/
- if ( !p_conv || p_conv->setup_frame != setup_frame_number) {
- p_conv = conversation_new( setup_frame_number, addr, &null_addr, PT_UDP,
- (guint32)port, (guint32)other_port,
- NO_ADDR2 | (!other_port ? NO_PORT2 : 0));
+ if (!p_conv || p_conv->setup_frame != setup_frame_number) {
+ p_conv = conversation_new(setup_frame_number, addr, &null_addr, PT_UDP,
+ (guint32)port, (guint32)other_port,
+ NO_ADDR2 | (!other_port ? NO_PORT2 : 0));
}
/* Set dissector */
@@ -637,7 +640,7 @@ void srtp_add_address(packet_info *pinfo,
/*
* If not, add a new data item.
*/
- if ( ! p_conv_data ) {
+ if (! p_conv_data) {
/* Create conversation data */
p_conv_data = se_alloc(sizeof(struct _rtp_conversation_info));
p_conv_data->rtp_dyn_payload = NULL;
@@ -665,16 +668,16 @@ void srtp_add_address(packet_info *pinfo,
}
/* Set up an RTP conversation */
-void rtp_add_address(packet_info *pinfo,
- address *addr, int port,
- int other_port,
- const gchar *setup_method, guint32 setup_frame_number, gboolean is_video , GHashTable *rtp_dyn_payload)
+void
+rtp_add_address(packet_info *pinfo, address *addr, int port, int other_port,
+ const gchar *setup_method, guint32 setup_frame_number,
+ gboolean is_video , GHashTable *rtp_dyn_payload)
{
srtp_add_address(pinfo, addr, port, other_port, setup_method, setup_frame_number, is_video, rtp_dyn_payload, NULL);
}
static gboolean
-dissect_rtp_heur_common( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean check_destport )
+dissect_rtp_heur_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean check_destport)
{
guint8 octet1;
unsigned int version;
@@ -832,10 +835,10 @@ process_rtp_payload(tvbuff_t *newtvb, packet_info *pinfo, proto_tree *tree,
* datagram, and make out that a new one starts on C.
*/
static void
-dissect_rtp_data( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- proto_tree *rtp_tree, int offset, unsigned int data_len,
- unsigned int data_reported_len,
- unsigned int payload_type )
+dissect_rtp_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ proto_tree *rtp_tree, int offset, unsigned int data_len,
+ unsigned int data_reported_len,
+ unsigned int payload_type)
{
tvbuff_t *newtvb;
struct _rtp_conversation_info *p_conv_data= NULL;
@@ -1020,8 +1023,6 @@ dissect_rtp_data( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
}
}
-
-
pinfo->can_desegment = 0;
pinfo->desegment_offset = 0;
pinfo->desegment_len = 0;
@@ -1030,7 +1031,7 @@ dissect_rtp_data( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
static void
-dissect_rtp_rfc2198(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
+dissect_rtp_rfc2198(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
int offset = 0;
guint8 octet1;
@@ -1121,7 +1122,7 @@ dissect_rtp_rfc2198(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
}
static void
-dissect_rtp( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
+dissect_rtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_item *ti = NULL;
proto_tree *rtp_tree = NULL;
@@ -1507,7 +1508,8 @@ dissect_rtp( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
/* calculate the extended sequence number - top 16 bits of the previous sequence number,
* plus our own; then correct for wrapping */
-static guint32 calculate_extended_seqno(guint32 previous_seqno, guint16 raw_seqno)
+static guint32
+calculate_extended_seqno(guint32 previous_seqno, guint16 raw_seqno)
{
guint32 seqno = (previous_seqno & 0xffff0000) | raw_seqno;
if(seqno + 0x8000 < previous_seqno) {
@@ -1521,7 +1523,8 @@ static guint32 calculate_extended_seqno(guint32 previous_seqno, guint16 raw_seqn
}
/* Look for conversation info */
-static void get_conv_info(packet_info *pinfo, struct _rtp_info *rtp_info)
+static void
+get_conv_info(packet_info *pinfo, struct _rtp_info *rtp_info)
{
/* Conversation and current data */
conversation_t *p_conv = NULL;
@@ -1569,7 +1572,8 @@ static void get_conv_info(packet_info *pinfo, struct _rtp_info *rtp_info)
/* Display setup info */
-static void show_setup_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static void
+show_setup_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
/* Conversation and current data */
struct _rtp_conversation_info *p_conv_data = NULL;
@@ -1583,10 +1587,9 @@ static void show_setup_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Create setup info subtree with summary info. */
ti = proto_tree_add_string_format(tree, hf_rtp_setup, tvb, 0, 0,
- "",
- "Stream setup by %s (frame %u)",
- p_conv_data->method,
- p_conv_data->frame_number);
+ "", "Stream setup by %s (frame %u)",
+ p_conv_data->method,
+ p_conv_data->frame_number);
PROTO_ITEM_SET_GENERATED(ti);
rtp_setup_tree = proto_item_add_subtree(ti, ett_rtp_setup);
if (rtp_setup_tree)
diff --git a/epan/dissectors/packet-s1ap.c b/epan/dissectors/packet-s1ap.c
index e2b651aca1..172cd5c8b6 100644
--- a/epan/dissectors/packet-s1ap.c
+++ b/epan/dissectors/packet-s1ap.c
@@ -3168,11 +3168,11 @@ dissect_s1ap_TransportLayerAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_TransportLayerAddress);
if (tvb_len==4){
/* IPv4 */
- proto_tree_add_item(subtree, hf_s1ap_transportLayerAddressIPv4, parameter_tvb, 0, tvb_len, FALSE);
+ proto_tree_add_item(subtree, hf_s1ap_transportLayerAddressIPv4, parameter_tvb, 0, tvb_len, ENC_BIG_ENDIAN);
}
if (tvb_len==16){
/* IPv6 */
- proto_tree_add_item(subtree, hf_s1ap_transportLayerAddressIPv6, parameter_tvb, 0, tvb_len, FALSE);
+ proto_tree_add_item(subtree, hf_s1ap_transportLayerAddressIPv6, parameter_tvb, 0, tvb_len, ENC_NA);
}
diff --git a/epan/dissectors/packet-sametime.c b/epan/dissectors/packet-sametime.c
index 7e91435e99..1a6d133c4b 100644
--- a/epan/dissectors/packet-sametime.c
+++ b/epan/dissectors/packet-sametime.c
@@ -254,7 +254,7 @@ dissect_set_user_status(tvbuff_t *tvb, proto_tree *tree, int offset)
offset += 2;
proto_tree_add_item(tree, hf_sametime_time, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
- offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+ add_text_item(tvb, tree, offset, hf_sametime_field_text);
return user_status;
}
@@ -294,7 +294,7 @@ dissect_handshake_ack(tvbuff_t *tvb, proto_tree *tree, int offset)
offset += 4;
offset += 4;
offset += 4;
- offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+ add_text_item(tvb, tree, offset, hf_sametime_field_text);
}
@@ -302,7 +302,7 @@ static void
dissect_login(tvbuff_t *tvb, proto_tree *tree, int offset)
{
offset += 2;
- offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+ add_text_item(tvb, tree, offset, hf_sametime_field_text);
}
@@ -310,7 +310,7 @@ static void
dissect_login_redirect(tvbuff_t *tvb, proto_tree *tree, int offset)
{
offset += 2;
- offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+ add_text_item(tvb, tree, offset, hf_sametime_field_text);
}
@@ -329,7 +329,7 @@ dissect_login_ack(tvbuff_t *tvb, proto_tree *tree, int offset)
offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
offset += 21;
offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
- offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+ add_text_item(tvb, tree, offset, hf_sametime_field_text);
}
@@ -343,7 +343,7 @@ dissect_channel_create(tvbuff_t *tvb, proto_tree *tree, int offset)
proto_tree_add_item(tree, hf_sametime_channel_service, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
offset += 8;
- offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+ add_text_item(tvb, tree, offset, hf_sametime_field_text);
}
@@ -365,7 +365,7 @@ dissect_channel_send(tvbuff_t *tvb, proto_tree *tree, int offset)
proto_item_append_text(tree, ", %s", val_to_str(awareness, awarenessnames, "0x%04x"));
proto_tree_add_item(tree, hf_sametime_channel_awareness, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
- offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+ add_text_item(tvb, tree, offset, hf_sametime_field_text);
break;
@@ -381,9 +381,9 @@ dissect_channel_send(tvbuff_t *tvb, proto_tree *tree, int offset)
offset += add_text_item(tvb, tree, offset, hf_sametime_location_phone);
offset += 1;
offset += add_text_item(tvb, tree, offset, hf_sametime_location_name);
- offset += add_text_item(tvb, tree, offset, hf_sametime_location_timezone);
+ add_text_item(tvb, tree, offset, hf_sametime_location_timezone);
} else {
- offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+ add_text_item(tvb, tree, offset, hf_sametime_field_text);
}
break;
@@ -407,7 +407,7 @@ dissect_channel_send(tvbuff_t *tvb, proto_tree *tree, int offset)
proto_item_append_text(tree, ", %s", val_to_str(awareness, awarenessnames, "0x%04x"));
proto_tree_add_item(tree, hf_sametime_channel_awareness, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
- offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+ add_text_item(tvb, tree, offset, hf_sametime_field_text);
break;
@@ -430,7 +430,7 @@ dissect_channel_send(tvbuff_t *tvb, proto_tree *tree, int offset)
case 0x0000:
offset += 14;
- offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+ add_text_item(tvb, tree, offset, hf_sametime_field_text);
break;
@@ -438,14 +438,14 @@ dissect_channel_send(tvbuff_t *tvb, proto_tree *tree, int offset)
offset += 8;
offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
offset += 3;
- offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+ add_text_item(tvb, tree, offset, hf_sametime_field_text);
break;
case 0x0005: /* XML */
if (26 <= tvb_reported_length_remaining(tvb, offset + 2)) {
offset += 26;
- offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+ add_text_item(tvb, tree, offset, hf_sametime_field_text);
}
break;
@@ -457,14 +457,14 @@ dissect_channel_send(tvbuff_t *tvb, proto_tree *tree, int offset)
offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
offset += 3;
offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
- offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+ add_text_item(tvb, tree, offset, hf_sametime_field_text);
}
break;
case 0x025a:
offset += 10;
- offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+ add_text_item(tvb, tree, offset, hf_sametime_field_text);
break;
@@ -499,7 +499,6 @@ dissect_sense_service(tvbuff_t *tvb, proto_tree *tree, int offset)
code = tvb_get_ntohl(tvb, offset);
proto_item_append_text(tree, ", %s", val_to_str(code, codenames, "0x%04x"));
proto_tree_add_item(tree, hf_sametime_code, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
}
@@ -934,4 +933,3 @@ proto_reg_handoff_sametime(void)
dissector_add_uint("tcp.port", global_sametime_port, sametime_handle);
saved_sametime_tcp_port = global_sametime_port;
}
-
diff --git a/epan/dissectors/packet-sbc-ap.c b/epan/dissectors/packet-sbc-ap.c
index 015f05363d..89311f6286 100644
--- a/epan/dissectors/packet-sbc-ap.c
+++ b/epan/dissectors/packet-sbc-ap.c
@@ -1183,7 +1183,7 @@ dissect_sbc_ap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* create the sbc_ap protocol tree */
if (tree) {
- sbc_ap_item = proto_tree_add_item(tree, proto_sbc_ap, tvb, 0, -1, FALSE);
+ sbc_ap_item = proto_tree_add_item(tree, proto_sbc_ap, tvb, 0, -1, ENC_NA);
sbc_ap_tree = proto_item_add_subtree(sbc_ap_item, ett_sbc_ap);
dissect_SBC_AP_PDU_PDU(tvb, pinfo, sbc_ap_tree);
diff --git a/epan/dissectors/packet-sccp.c b/epan/dissectors/packet-sccp.c
index ba37d39acd..0d45ca988d 100644
--- a/epan/dissectors/packet-sccp.c
+++ b/epan/dissectors/packet-sccp.c
@@ -35,11 +35,11 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
-#include <stdlib.h>
#include <string.h>
#include <glib.h>
@@ -52,14 +52,14 @@
#include <epan/uat.h>
#include <epan/strutil.h>
#include <epan/expert.h>
+#include <epan/tap.h>
+#include <address.h>
#include "packet-mtp3.h"
#include "packet-tcap.h"
#include "packet-sccp.h"
#include "packet-e164.h"
#include "packet-e212.h"
#include "packet-frame.h"
-#include <epan/tap.h>
-#include <address.h>
/* function prototypes */
void proto_reg_handoff_sccp(void);
@@ -68,174 +68,174 @@ static Standard_Type decode_mtp3_standard;
#define SCCP_MSG_TYPE_OFFSET 0
#define SCCP_MSG_TYPE_LENGTH 1
-#define POINTER_LENGTH 1
-#define POINTER_LENGTH_LONG 2
+#define POINTER_LENGTH 1
+#define POINTER_LENGTH_LONG 2
#define INVALID_LR 0xffffff /* a reserved value */
/* Same as below but with names typed out */
static const value_string sccp_message_type_values[] = {
- { SCCP_MSG_TYPE_CR, "Connection Request" },
- { SCCP_MSG_TYPE_CC, "Connection Confirm" },
- { SCCP_MSG_TYPE_CREF, "Connection Refused" },
- { SCCP_MSG_TYPE_RLSD, "Released" },
- { SCCP_MSG_TYPE_RLC, "Release Complete" },
- { SCCP_MSG_TYPE_DT1, "Data Form 1" },
- { SCCP_MSG_TYPE_DT2, "Data Form 2" },
- { SCCP_MSG_TYPE_AK, "Data Acknowledgement" },
- { SCCP_MSG_TYPE_UDT, "Unitdata" },
- { SCCP_MSG_TYPE_UDTS, "Unitdata Service" },
- { SCCP_MSG_TYPE_ED, "Expedited Data" },
- { SCCP_MSG_TYPE_EA, "Expedited Data Acknowledgement" },
- { SCCP_MSG_TYPE_RSR, "Reset Request" },
- { SCCP_MSG_TYPE_RSC, "Reset Confirmation" },
- { SCCP_MSG_TYPE_ERR, "Error" },
- { SCCP_MSG_TYPE_IT, "Inactivity Timer" },
- { SCCP_MSG_TYPE_XUDT, "Extended Unitdata" },
- { SCCP_MSG_TYPE_XUDTS, "Extended Unitdata Service" },
- { SCCP_MSG_TYPE_LUDT, "Long Unitdata" },
- { SCCP_MSG_TYPE_LUDTS, "Long Unitdata Service" },
- { 0, NULL } };
+ { SCCP_MSG_TYPE_CR, "Connection Request" },
+ { SCCP_MSG_TYPE_CC, "Connection Confirm" },
+ { SCCP_MSG_TYPE_CREF, "Connection Refused" },
+ { SCCP_MSG_TYPE_RLSD, "Released" },
+ { SCCP_MSG_TYPE_RLC, "Release Complete" },
+ { SCCP_MSG_TYPE_DT1, "Data Form 1" },
+ { SCCP_MSG_TYPE_DT2, "Data Form 2" },
+ { SCCP_MSG_TYPE_AK, "Data Acknowledgement" },
+ { SCCP_MSG_TYPE_UDT, "Unitdata" },
+ { SCCP_MSG_TYPE_UDTS, "Unitdata Service" },
+ { SCCP_MSG_TYPE_ED, "Expedited Data" },
+ { SCCP_MSG_TYPE_EA, "Expedited Data Acknowledgement" },
+ { SCCP_MSG_TYPE_RSR, "Reset Request" },
+ { SCCP_MSG_TYPE_RSC, "Reset Confirmation" },
+ { SCCP_MSG_TYPE_ERR, "Error" },
+ { SCCP_MSG_TYPE_IT, "Inactivity Timer" },
+ { SCCP_MSG_TYPE_XUDT, "Extended Unitdata" },
+ { SCCP_MSG_TYPE_XUDTS, "Extended Unitdata Service" },
+ { SCCP_MSG_TYPE_LUDT, "Long Unitdata" },
+ { SCCP_MSG_TYPE_LUDTS, "Long Unitdata Service" },
+ { 0, NULL } };
/* Same as above but in acronym form (for the Info column) */
const value_string sccp_message_type_acro_values[] = {
- { SCCP_MSG_TYPE_CR, "CR" },
- { SCCP_MSG_TYPE_CC, "CC" },
- { SCCP_MSG_TYPE_CREF, "CREF" },
- { SCCP_MSG_TYPE_RLSD, "RLSD" },
- { SCCP_MSG_TYPE_RLC, "RLC" },
- { SCCP_MSG_TYPE_DT1, "DT1" },
- { SCCP_MSG_TYPE_DT2, "DT2" },
- { SCCP_MSG_TYPE_AK, "AK" },
- { SCCP_MSG_TYPE_UDT, "UDT" },
- { SCCP_MSG_TYPE_UDTS, "UDTS" },
- { SCCP_MSG_TYPE_ED, "ED" },
- { SCCP_MSG_TYPE_EA, "EA" },
- { SCCP_MSG_TYPE_RSR, "RSR" },
- { SCCP_MSG_TYPE_RSC, "RSC" },
- { SCCP_MSG_TYPE_ERR, "ERR" },
- { SCCP_MSG_TYPE_IT, "IT" },
- { SCCP_MSG_TYPE_XUDT, "XUDT" },
- { SCCP_MSG_TYPE_XUDTS, "XUDTS" },
- { SCCP_MSG_TYPE_LUDT, "LUDT" },
- { SCCP_MSG_TYPE_LUDTS, "LUDTS" },
- { 0, NULL } };
-
-#define PARAMETER_LENGTH_LENGTH 1
-#define PARAMETER_LONG_DATA_LENGTH_LENGTH 2
-#define PARAMETER_TYPE_LENGTH 1
-
-#define PARAMETER_END_OF_OPTIONAL_PARAMETERS 0x00
-#define PARAMETER_DESTINATION_LOCAL_REFERENCE 0x01
-#define PARAMETER_SOURCE_LOCAL_REFERENCE 0x02
-#define PARAMETER_CALLED_PARTY_ADDRESS 0x03
-#define PARAMETER_CALLING_PARTY_ADDRESS 0x04
-#define PARAMETER_CLASS 0x05
-#define PARAMETER_SEGMENTING_REASSEMBLING 0x06
-#define PARAMETER_RECEIVE_SEQUENCE_NUMBER 0x07
-#define PARAMETER_SEQUENCING_SEGMENTING 0x08
-#define PARAMETER_CREDIT 0x09
-#define PARAMETER_RELEASE_CAUSE 0x0a
-#define PARAMETER_RETURN_CAUSE 0x0b
-#define PARAMETER_RESET_CAUSE 0x0c
-#define PARAMETER_ERROR_CAUSE 0x0d
-#define PARAMETER_REFUSAL_CAUSE 0x0e
-#define PARAMETER_DATA 0x0f
-#define PARAMETER_SEGMENTATION 0x10
-#define PARAMETER_HOP_COUNTER 0x11
+ { SCCP_MSG_TYPE_CR, "CR" },
+ { SCCP_MSG_TYPE_CC, "CC" },
+ { SCCP_MSG_TYPE_CREF, "CREF" },
+ { SCCP_MSG_TYPE_RLSD, "RLSD" },
+ { SCCP_MSG_TYPE_RLC, "RLC" },
+ { SCCP_MSG_TYPE_DT1, "DT1" },
+ { SCCP_MSG_TYPE_DT2, "DT2" },
+ { SCCP_MSG_TYPE_AK, "AK" },
+ { SCCP_MSG_TYPE_UDT, "UDT" },
+ { SCCP_MSG_TYPE_UDTS, "UDTS" },
+ { SCCP_MSG_TYPE_ED, "ED" },
+ { SCCP_MSG_TYPE_EA, "EA" },
+ { SCCP_MSG_TYPE_RSR, "RSR" },
+ { SCCP_MSG_TYPE_RSC, "RSC" },
+ { SCCP_MSG_TYPE_ERR, "ERR" },
+ { SCCP_MSG_TYPE_IT, "IT" },
+ { SCCP_MSG_TYPE_XUDT, "XUDT" },
+ { SCCP_MSG_TYPE_XUDTS, "XUDTS" },
+ { SCCP_MSG_TYPE_LUDT, "LUDT" },
+ { SCCP_MSG_TYPE_LUDTS, "LUDTS" },
+ { 0, NULL } };
+
+#define PARAMETER_LENGTH_LENGTH 1
+#define PARAMETER_LONG_DATA_LENGTH_LENGTH 2
+#define PARAMETER_TYPE_LENGTH 1
+
+#define PARAMETER_END_OF_OPTIONAL_PARAMETERS 0x00
+#define PARAMETER_DESTINATION_LOCAL_REFERENCE 0x01
+#define PARAMETER_SOURCE_LOCAL_REFERENCE 0x02
+#define PARAMETER_CALLED_PARTY_ADDRESS 0x03
+#define PARAMETER_CALLING_PARTY_ADDRESS 0x04
+#define PARAMETER_CLASS 0x05
+#define PARAMETER_SEGMENTING_REASSEMBLING 0x06
+#define PARAMETER_RECEIVE_SEQUENCE_NUMBER 0x07
+#define PARAMETER_SEQUENCING_SEGMENTING 0x08
+#define PARAMETER_CREDIT 0x09
+#define PARAMETER_RELEASE_CAUSE 0x0a
+#define PARAMETER_RETURN_CAUSE 0x0b
+#define PARAMETER_RESET_CAUSE 0x0c
+#define PARAMETER_ERROR_CAUSE 0x0d
+#define PARAMETER_REFUSAL_CAUSE 0x0e
+#define PARAMETER_DATA 0x0f
+#define PARAMETER_SEGMENTATION 0x10
+#define PARAMETER_HOP_COUNTER 0x11
/* Importance is ITU only */
-#define PARAMETER_IMPORTANCE 0x12
-#define PARAMETER_LONG_DATA 0x13
+#define PARAMETER_IMPORTANCE 0x12
+#define PARAMETER_LONG_DATA 0x13
/* ISNI is ANSI only */
-#define PARAMETER_ISNI 0xfa
+#define PARAMETER_ISNI 0xfa
static const value_string sccp_parameter_values[] = {
- { PARAMETER_END_OF_OPTIONAL_PARAMETERS, "End of Optional Parameters" },
- { PARAMETER_DESTINATION_LOCAL_REFERENCE, "Destination Local Reference" },
- { PARAMETER_SOURCE_LOCAL_REFERENCE, "Source Local Reference" },
- { PARAMETER_CALLED_PARTY_ADDRESS, "Called Party Address" },
- { PARAMETER_CALLING_PARTY_ADDRESS, "Calling Party Address" },
- { PARAMETER_CLASS, "Protocol Class" },
- { PARAMETER_SEGMENTING_REASSEMBLING, "Segmenting/Reassembling" },
- { PARAMETER_RECEIVE_SEQUENCE_NUMBER, "Receive Sequence Number" },
- { PARAMETER_SEQUENCING_SEGMENTING, "Sequencing/Segmenting" },
- { PARAMETER_CREDIT, "Credit" },
- { PARAMETER_RELEASE_CAUSE, "Release Cause" },
- { PARAMETER_RETURN_CAUSE, "Return Cause" },
- { PARAMETER_RESET_CAUSE, "Reset Cause" },
- { PARAMETER_ERROR_CAUSE, "Error Cause" },
- { PARAMETER_REFUSAL_CAUSE, "Refusal Cause" },
- { PARAMETER_DATA, "Data" },
- { PARAMETER_SEGMENTATION, "Segmentation" },
- { PARAMETER_HOP_COUNTER, "Hop Counter" },
- { PARAMETER_IMPORTANCE, "Importance (ITU)" },
- { PARAMETER_LONG_DATA, "Long Data" },
- { PARAMETER_ISNI, "Intermediate Signaling Network Identification (ANSI)" },
- { 0, NULL } };
-
-
-#define END_OF_OPTIONAL_PARAMETERS_LENGTH 1
-#define DESTINATION_LOCAL_REFERENCE_LENGTH 3
-#define SOURCE_LOCAL_REFERENCE_LENGTH 3
-#define PROTOCOL_CLASS_LENGTH 1
-#define RECEIVE_SEQUENCE_NUMBER_LENGTH 1
-#define CREDIT_LENGTH 1
-#define RELEASE_CAUSE_LENGTH 1
-#define RETURN_CAUSE_LENGTH 1
-#define RESET_CAUSE_LENGTH 1
-#define ERROR_CAUSE_LENGTH 1
-#define REFUSAL_CAUSE_LENGTH 1
-#define HOP_COUNTER_LENGTH 1
-#define IMPORTANCE_LENGTH 1
+ { PARAMETER_END_OF_OPTIONAL_PARAMETERS, "End of Optional Parameters" },
+ { PARAMETER_DESTINATION_LOCAL_REFERENCE, "Destination Local Reference" },
+ { PARAMETER_SOURCE_LOCAL_REFERENCE, "Source Local Reference" },
+ { PARAMETER_CALLED_PARTY_ADDRESS, "Called Party Address" },
+ { PARAMETER_CALLING_PARTY_ADDRESS, "Calling Party Address" },
+ { PARAMETER_CLASS, "Protocol Class" },
+ { PARAMETER_SEGMENTING_REASSEMBLING, "Segmenting/Reassembling" },
+ { PARAMETER_RECEIVE_SEQUENCE_NUMBER, "Receive Sequence Number" },
+ { PARAMETER_SEQUENCING_SEGMENTING, "Sequencing/Segmenting" },
+ { PARAMETER_CREDIT, "Credit" },
+ { PARAMETER_RELEASE_CAUSE, "Release Cause" },
+ { PARAMETER_RETURN_CAUSE, "Return Cause" },
+ { PARAMETER_RESET_CAUSE, "Reset Cause" },
+ { PARAMETER_ERROR_CAUSE, "Error Cause" },
+ { PARAMETER_REFUSAL_CAUSE, "Refusal Cause" },
+ { PARAMETER_DATA, "Data" },
+ { PARAMETER_SEGMENTATION, "Segmentation" },
+ { PARAMETER_HOP_COUNTER, "Hop Counter" },
+ { PARAMETER_IMPORTANCE, "Importance (ITU)" },
+ { PARAMETER_LONG_DATA, "Long Data" },
+ { PARAMETER_ISNI, "Intermediate Signaling Network Identification (ANSI)" },
+ { 0, NULL } };
+
+
+#define END_OF_OPTIONAL_PARAMETERS_LENGTH 1
+#define DESTINATION_LOCAL_REFERENCE_LENGTH 3
+#define SOURCE_LOCAL_REFERENCE_LENGTH 3
+#define PROTOCOL_CLASS_LENGTH 1
+#define RECEIVE_SEQUENCE_NUMBER_LENGTH 1
+#define CREDIT_LENGTH 1
+#define RELEASE_CAUSE_LENGTH 1
+#define RETURN_CAUSE_LENGTH 1
+#define RESET_CAUSE_LENGTH 1
+#define ERROR_CAUSE_LENGTH 1
+#define REFUSAL_CAUSE_LENGTH 1
+#define HOP_COUNTER_LENGTH 1
+#define IMPORTANCE_LENGTH 1
/* Parts of the Called and Calling Address parameters */
/* Address Indicator */
-#define ADDRESS_INDICATOR_LENGTH 1
-#define ITU_RESERVED_MASK 0x80
-#define ANSI_NATIONAL_MASK 0x80
-#define ROUTING_INDICATOR_MASK 0x40
-#define GTI_MASK 0x3C
-#define GTI_SHIFT 2
-#define ITU_SSN_INDICATOR_MASK 0x02
-#define ITU_PC_INDICATOR_MASK 0x01
-#define ANSI_PC_INDICATOR_MASK 0x02
-#define ANSI_SSN_INDICATOR_MASK 0x01
+#define ADDRESS_INDICATOR_LENGTH 1
+#define ITU_RESERVED_MASK 0x80
+#define ANSI_NATIONAL_MASK 0x80
+#define ROUTING_INDICATOR_MASK 0x40
+#define GTI_MASK 0x3C
+#define GTI_SHIFT 2
+#define ITU_SSN_INDICATOR_MASK 0x02
+#define ITU_PC_INDICATOR_MASK 0x01
+#define ANSI_PC_INDICATOR_MASK 0x02
+#define ANSI_SSN_INDICATOR_MASK 0x01
static const value_string sccp_national_indicator_values[] = {
{ 0x0, "Address coded to International standard" },
{ 0x1, "Address coded to National standard" },
{ 0, NULL } };
-#define ROUTE_ON_GT 0x0
-#define ROUTE_ON_SSN 0x1
-#define ROUTING_INDICATOR_SHIFT 6
+#define ROUTE_ON_GT 0x0
+#define ROUTE_ON_SSN 0x1
+#define ROUTING_INDICATOR_SHIFT 6
static const value_string sccp_routing_indicator_values[] = {
{ ROUTE_ON_GT, "Route on GT" },
{ ROUTE_ON_SSN, "Route on SSN" },
- { 0, NULL } };
+ { 0, NULL } };
-#define AI_GTI_NO_GT 0x0
-#define ITU_AI_GTI_NAI 0x1
-#define AI_GTI_TT 0x2
-#define ITU_AI_GTI_TT_NP_ES 0x3
-#define ITU_AI_GTI_TT_NP_ES_NAI 0x4
+#define AI_GTI_NO_GT 0x0
+#define ITU_AI_GTI_NAI 0x1
+#define AI_GTI_TT 0x2
+#define ITU_AI_GTI_TT_NP_ES 0x3
+#define ITU_AI_GTI_TT_NP_ES_NAI 0x4
static const value_string sccp_itu_global_title_indicator_values[] = {
- { AI_GTI_NO_GT, "No Global Title" },
- { ITU_AI_GTI_NAI, "Nature of Address Indicator only" },
- { AI_GTI_TT, "Translation Type only" },
- { ITU_AI_GTI_TT_NP_ES, "Translation Type, Numbering Plan, and Encoding Scheme included" },
- { ITU_AI_GTI_TT_NP_ES_NAI, "Translation Type, Numbering Plan, Encoding Scheme, and Nature of Address Indicator included" },
- { 0, NULL } };
-
-/* #define AI_GTI_NO_GT 0x0 */
-#define ANSI_AI_GTI_TT_NP_ES 0x1
-/* #define AI_GTI_TT 0x2 */
+ { AI_GTI_NO_GT, "No Global Title" },
+ { ITU_AI_GTI_NAI, "Nature of Address Indicator only" },
+ { AI_GTI_TT, "Translation Type only" },
+ { ITU_AI_GTI_TT_NP_ES, "Translation Type, Numbering Plan, and Encoding Scheme included" },
+ { ITU_AI_GTI_TT_NP_ES_NAI, "Translation Type, Numbering Plan, Encoding Scheme, and Nature of Address Indicator included" },
+ { 0, NULL } };
+
+/* #define AI_GTI_NO_GT 0x0 */
+#define ANSI_AI_GTI_TT_NP_ES 0x1
+/* #define AI_GTI_TT 0x2 */
static const value_string sccp_ansi_global_title_indicator_values[] = {
- { AI_GTI_NO_GT, "No Global Title" },
- { ANSI_AI_GTI_TT_NP_ES, "Translation Type, Numbering Plan, and Encoding Scheme included" },
- { AI_GTI_TT, "Translation Type only" },
- { 0, NULL } };
+ { AI_GTI_NO_GT, "No Global Title" },
+ { ANSI_AI_GTI_TT_NP_ES, "Translation Type, Numbering Plan, and Encoding Scheme included" },
+ { AI_GTI_TT, "Translation Type only" },
+ { 0, NULL } };
static const value_string sccp_ai_pci_values[] = {
{ 0x1, "Point Code present" },
@@ -247,12 +247,12 @@ static const value_string sccp_ai_ssni_values[] = {
{ 0x0, "SSN not present" },
{ 0, NULL } };
-#define ADDRESS_SSN_LENGTH 1
-#define INVALID_SSN 0xff
- /* Some values from 3GPP TS 23.003 */
- /* Japan TTC and NTT define a lot of SSNs, some of which conflict with
- * these. They are not added for now.
- */
+#define ADDRESS_SSN_LENGTH 1
+#define INVALID_SSN 0xff
+/* Some values from 3GPP TS 23.003 */
+/* Japan TTC and NTT define a lot of SSNs, some of which conflict with
+ * these. They are not added for now.
+ */
static const value_string sccp_ssn_values[] = {
{ 0x00, "SSN not known/not used" },
{ 0x01, "SCCP management" },
@@ -295,27 +295,27 @@ static const value_string sccp_ssn_values[] = {
* * * * * * * * * * * * * * * * */
#define GT_NAI_MASK 0x7F
#define GT_NAI_LENGTH 1
-#define GT_NAI_UNKNOWN 0x00
-#define GT_NAI_SUBSCRIBER_NUMBER 0x01
-#define GT_NAI_RESERVED_NATIONAL 0x02
-#define GT_NAI_NATIONAL_SIG_NUM 0x03
-#define GT_NAI_INTERNATIONAL_NUM 0x04
+#define GT_NAI_UNKNOWN 0x00
+#define GT_NAI_SUBSCRIBER_NUMBER 0x01
+#define GT_NAI_RESERVED_NATIONAL 0x02
+#define GT_NAI_NATIONAL_SIG_NUM 0x03
+#define GT_NAI_INTERNATIONAL_NUM 0x04
static const value_string sccp_nai_values[] = {
- { GT_NAI_UNKNOWN, "NAI unknown" },
- { GT_NAI_SUBSCRIBER_NUMBER, "Subscriber Number" },
- { GT_NAI_RESERVED_NATIONAL, "Reserved for national use" },
- { GT_NAI_NATIONAL_SIG_NUM, "National significant number" },
- { GT_NAI_INTERNATIONAL_NUM, "International number" },
- { 0, NULL } };
+ { GT_NAI_UNKNOWN, "NAI unknown" },
+ { GT_NAI_SUBSCRIBER_NUMBER, "Subscriber Number" },
+ { GT_NAI_RESERVED_NATIONAL, "Reserved for national use" },
+ { GT_NAI_NATIONAL_SIG_NUM, "National significant number" },
+ { GT_NAI_INTERNATIONAL_NUM, "International number" },
+ { 0, NULL } };
#define GT_OE_MASK 0x80
#define GT_OE_EVEN 0
#define GT_OE_ODD 1
static const value_string sccp_oe_values[] = {
- { GT_OE_EVEN, "Even number of address signals" },
- { GT_OE_ODD, "Odd number of address signals" },
- { 0, NULL } };
+ { GT_OE_EVEN, "Even number of address signals" },
+ { GT_OE_ODD, "Odd number of address signals" },
+ { 0, NULL } };
const value_string sccp_address_signal_values[] = {
{ 0, "0" },
@@ -346,31 +346,31 @@ const value_string sccp_address_signal_values[] = {
/* * * * * * * * * * * * * * * * * * * * * * * * * *
* Global Title: ITU GTI == 0011, ANSI GTI == 0001 *
* * * * * * * * * * * * * * * * * * * * * * * * * */
-#define GT_NP_MASK 0xf0
-#define GT_NP_SHIFT 4
-#define GT_NP_ES_LENGTH 1
-#define GT_NP_UNKNOWN 0x00
-#define GT_NP_ISDN 0x01
-#define GT_NP_GENERIC_RESERVED 0x02
-#define GT_NP_DATA 0x03
-#define GT_NP_TELEX 0x04
-#define GT_NP_MARITIME_MOBILE 0x05
-#define GT_NP_LAND_MOBILE 0x06
-#define GT_NP_ISDN_MOBILE 0x07
-#define GT_NP_PRIVATE_NETWORK 0x0e
-#define GT_NP_RESERVED 0x0f
+#define GT_NP_MASK 0xf0
+#define GT_NP_SHIFT 4
+#define GT_NP_ES_LENGTH 1
+#define GT_NP_UNKNOWN 0x00
+#define GT_NP_ISDN 0x01
+#define GT_NP_GENERIC_RESERVED 0x02
+#define GT_NP_DATA 0x03
+#define GT_NP_TELEX 0x04
+#define GT_NP_MARITIME_MOBILE 0x05
+#define GT_NP_LAND_MOBILE 0x06
+#define GT_NP_ISDN_MOBILE 0x07
+#define GT_NP_PRIVATE_NETWORK 0x0e
+#define GT_NP_RESERVED 0x0f
static const value_string sccp_np_values[] = {
- { GT_NP_UNKNOWN, "Unknown" },
- { GT_NP_ISDN, "ISDN/telephony" },
- { GT_NP_GENERIC_RESERVED, "Generic (ITU)/Reserved (ANSI)" },
- { GT_NP_DATA, "Data" },
- { GT_NP_TELEX, "Telex" },
- { GT_NP_MARITIME_MOBILE, "Maritime mobile" },
- { GT_NP_LAND_MOBILE, "Land mobile" },
- { GT_NP_ISDN_MOBILE, "ISDN/mobile" },
- { GT_NP_PRIVATE_NETWORK, "Private network or network-specific" },
- { GT_NP_RESERVED, "Reserved" },
- { 0, NULL } };
+ { GT_NP_UNKNOWN, "Unknown" },
+ { GT_NP_ISDN, "ISDN/telephony" },
+ { GT_NP_GENERIC_RESERVED, "Generic (ITU)/Reserved (ANSI)" },
+ { GT_NP_DATA, "Data" },
+ { GT_NP_TELEX, "Telex" },
+ { GT_NP_MARITIME_MOBILE, "Maritime mobile" },
+ { GT_NP_LAND_MOBILE, "Land mobile" },
+ { GT_NP_ISDN_MOBILE, "ISDN/mobile" },
+ { GT_NP_PRIVATE_NETWORK, "Private network or network-specific" },
+ { GT_NP_RESERVED, "Reserved" },
+ { 0, NULL } };
#define GT_ES_MASK 0x0f
#define GT_ES_UNKNOWN 0x0
@@ -379,12 +379,12 @@ static const value_string sccp_np_values[] = {
#define GT_ES_NATIONAL 0x3
#define GT_ES_RESERVED 0xf
static const value_string sccp_es_values[] = {
- { GT_ES_UNKNOWN, "Unknown" },
- { GT_ES_BCD_ODD, "BCD, odd number of digits" },
- { GT_ES_BCD_EVEN, "BCD, even number of digits" },
- { GT_ES_NATIONAL, "National specific" },
- { GT_ES_RESERVED, "Reserved (ITU)/Spare (ANSI)" },
- { 0, NULL } };
+ { GT_ES_UNKNOWN, "Unknown" },
+ { GT_ES_BCD_ODD, "BCD, odd number of digits" },
+ { GT_ES_BCD_EVEN, "BCD, even number of digits" },
+ { GT_ES_NATIONAL, "National specific" },
+ { GT_ES_RESERVED, "Reserved (ITU)/Spare (ANSI)" },
+ { 0, NULL } };
/* Address signals above */
@@ -398,9 +398,9 @@ static const value_string sccp_es_values[] = {
/* Address signals above */
-#define CLASS_CLASS_MASK 0xf
-#define CLASS_SPARE_HANDLING_MASK 0xf0
-#define CLASS_SPARE_HANDLING_SHIFT 4
+#define CLASS_CLASS_MASK 0xf
+#define CLASS_SPARE_HANDLING_MASK 0xf0
+#define CLASS_SPARE_HANDLING_SHIFT 4
static const value_string sccp_class_handling_values [] = {
{ 0x0, "No special options" },
{ 0x8, "Return message on error" },
@@ -413,20 +413,20 @@ static const value_string sccp_class_handling_values [] = {
#define MORE_DATA 1
/* This is also used by sequencing-segmenting parameter */
static const value_string sccp_segmenting_reassembling_values [] = {
- { NO_MORE_DATA, "No more data" },
- { MORE_DATA, "More data" },
- { 0, NULL } };
+ { NO_MORE_DATA, "No more data" },
+ { MORE_DATA, "More data" },
+ { 0, NULL } };
-#define RECEIVE_SEQUENCE_NUMBER_LENGTH 1
-#define RSN_MASK 0xfe
+#define RECEIVE_SEQUENCE_NUMBER_LENGTH 1
+#define RSN_MASK 0xfe
-#define SEQUENCING_SEGMENTING_LENGTH 2
-#define SEQUENCING_SEGMENTING_SSN_LENGTH 1
-#define SEQUENCING_SEGMENTING_RSN_LENGTH 1
-#define SEND_SEQUENCE_NUMBER_MASK 0xfe
-#define RECEIVE_SEQUENCE_NUMBER_MASK 0xfe
-#define SEQUENCING_SEGMENTING_MORE_MASK 0x01
+#define SEQUENCING_SEGMENTING_LENGTH 2
+#define SEQUENCING_SEGMENTING_SSN_LENGTH 1
+#define SEQUENCING_SEGMENTING_RSN_LENGTH 1
+#define SEND_SEQUENCE_NUMBER_MASK 0xfe
+#define RECEIVE_SEQUENCE_NUMBER_MASK 0xfe
+#define SEQUENCING_SEGMENTING_MORE_MASK 0x01
#define CREDIT_LENGTH 1
@@ -534,11 +534,11 @@ const value_string sccp_refusal_cause_values [] = {
{ 0, NULL } };
-#define SEGMENTATION_LENGTH 4
-#define SEGMENTATION_FIRST_SEGMENT_MASK 0x80
-#define SEGMENTATION_CLASS_MASK 0x40
-#define SEGMENTATION_SPARE_MASK 0x30
-#define SEGMENTATION_REMAINING_MASK 0x0f
+#define SEGMENTATION_LENGTH 4
+#define SEGMENTATION_FIRST_SEGMENT_MASK 0x80
+#define SEGMENTATION_CLASS_MASK 0x40
+#define SEGMENTATION_SPARE_MASK 0x30
+#define SEGMENTATION_REMAINING_MASK 0x0f
static const value_string sccp_segmentation_first_segment_values [] = {
{ 1, "First segment" },
{ 0, "Not first segment" },
@@ -551,18 +551,18 @@ static const value_string sccp_segmentation_class_values [] = {
#define HOP_COUNTER_LENGTH 1
-#define IMPORTANCE_LENGTH 1
-#define IMPORTANCE_IMPORTANCE_MASK 0x7
+#define IMPORTANCE_LENGTH 1
+#define IMPORTANCE_IMPORTANCE_MASK 0x7
#define ANSI_ISNI_ROUTING_CONTROL_LENGTH 1
-#define ANSI_ISNI_MI_MASK 0x01
-#define ANSI_ISNI_IRI_MASK 0x06
-#define ANSI_ISNI_RES_MASK 0x08
-#define ANSI_ISNI_TI_MASK 0x10
-#define ANSI_ISNI_TI_SHIFT 4
-#define ANSI_ISNI_COUNTER_MASK 0xe0
-#define ANSI_ISNI_NETSPEC_MASK 0x03
+#define ANSI_ISNI_MI_MASK 0x01
+#define ANSI_ISNI_IRI_MASK 0x06
+#define ANSI_ISNI_RES_MASK 0x08
+#define ANSI_ISNI_TI_MASK 0x10
+#define ANSI_ISNI_TI_SHIFT 4
+#define ANSI_ISNI_COUNTER_MASK 0xe0
+#define ANSI_ISNI_NETSPEC_MASK 0x03
static const value_string sccp_isni_mark_for_id_values [] = {
{ 0x0, "Do not identify networks" },
@@ -579,9 +579,9 @@ static const value_string sccp_isni_iri_values [] = {
#define ANSI_ISNI_TYPE_0 0x0
#define ANSI_ISNI_TYPE_1 0x1
static const value_string sccp_isni_ti_values [] = {
- { ANSI_ISNI_TYPE_0, "Type zero ISNI parameter format" },
- { ANSI_ISNI_TYPE_1, "Type one ISNI parameter format" },
- { 0, NULL } };
+ { ANSI_ISNI_TYPE_0, "Type zero ISNI parameter format" },
+ { ANSI_ISNI_TYPE_1, "Type one ISNI parameter format" },
+ { 0, NULL } };
/* Initialize the protocol and registered fields */
@@ -716,49 +716,49 @@ static int sccp_tap = -1;
static const fragment_items sccp_xudt_msg_frag_items = {
- /* Fragment subtrees */
- &ett_sccp_xudt_msg_fragment,
- &ett_sccp_xudt_msg_fragments,
- /* Fragment fields */
- &hf_sccp_xudt_msg_fragments,
- &hf_sccp_xudt_msg_fragment,
- &hf_sccp_xudt_msg_fragment_overlap,
- &hf_sccp_xudt_msg_fragment_overlap_conflicts,
- &hf_sccp_xudt_msg_fragment_multiple_tails,
- &hf_sccp_xudt_msg_fragment_too_long_fragment,
- &hf_sccp_xudt_msg_fragment_error,
- &hf_sccp_xudt_msg_fragment_count,
- /* Reassembled in field */
- &hf_sccp_xudt_msg_reassembled_in,
- /* Reassembled length field */
- &hf_sccp_xudt_msg_reassembled_length,
- /* Tag */
- "SCCP XUDT Message fragments"
+ /* Fragment subtrees */
+ &ett_sccp_xudt_msg_fragment,
+ &ett_sccp_xudt_msg_fragments,
+ /* Fragment fields */
+ &hf_sccp_xudt_msg_fragments,
+ &hf_sccp_xudt_msg_fragment,
+ &hf_sccp_xudt_msg_fragment_overlap,
+ &hf_sccp_xudt_msg_fragment_overlap_conflicts,
+ &hf_sccp_xudt_msg_fragment_multiple_tails,
+ &hf_sccp_xudt_msg_fragment_too_long_fragment,
+ &hf_sccp_xudt_msg_fragment_error,
+ &hf_sccp_xudt_msg_fragment_count,
+ /* Reassembled in field */
+ &hf_sccp_xudt_msg_reassembled_in,
+ /* Reassembled length field */
+ &hf_sccp_xudt_msg_reassembled_length,
+ /* Tag */
+ "SCCP XUDT Message fragments"
};
static GHashTable *sccp_xudt_msg_fragment_table = NULL;
static GHashTable *sccp_xudt_msg_reassembled_table = NULL;
-#define SCCP_USER_DATA 0
-#define SCCP_USER_TCAP 1
-#define SCCP_USER_RANAP 2
-#define SCCP_USER_BSSAP 3
+#define SCCP_USER_DATA 0
+#define SCCP_USER_TCAP 1
+#define SCCP_USER_RANAP 2
+#define SCCP_USER_BSSAP 3
#define SCCP_USER_GSMMAP 4
-#define SCCP_USER_CAMEL 5
-#define SCCP_USER_INAP 6
+#define SCCP_USER_CAMEL 5
+#define SCCP_USER_INAP 6
typedef struct _sccp_user_t {
- guint ni;
- range_t* called_pc;
- range_t* called_ssn;
- guint user;
- gboolean uses_tcap;
- dissector_handle_t* handlep;
+ guint ni;
+ range_t *called_pc;
+ range_t *called_ssn;
+ guint user;
+ gboolean uses_tcap;
+ dissector_handle_t *handlep;
} sccp_user_t;
-static sccp_user_t* sccp_users;
-static guint num_sccp_users;
+static sccp_user_t *sccp_users;
+static guint num_sccp_users;
static dissector_handle_t data_handle;
static dissector_handle_t tcap_handle;
@@ -769,25 +769,25 @@ static dissector_handle_t camel_handle;
static dissector_handle_t inap_handle;
static dissector_handle_t default_handle;
-static const char *default_payload=NULL;
+static const char *default_payload = NULL;
static const value_string sccp_users_vals[] = {
- { SCCP_USER_DATA, "Data"},
- { SCCP_USER_TCAP, "TCAP"},
- { SCCP_USER_RANAP, "RANAP"},
- { SCCP_USER_BSSAP, "BSSAP"},
- { SCCP_USER_GSMMAP, "GSM MAP"},
- { SCCP_USER_CAMEL, "CAMEL"},
- { SCCP_USER_INAP, "INAP"},
- { 0, NULL }
+ { SCCP_USER_DATA, "Data"},
+ { SCCP_USER_TCAP, "TCAP"},
+ { SCCP_USER_RANAP, "RANAP"},
+ { SCCP_USER_BSSAP, "BSSAP"},
+ { SCCP_USER_GSMMAP, "GSM MAP"},
+ { SCCP_USER_CAMEL, "CAMEL"},
+ { SCCP_USER_INAP, "INAP"},
+ { 0, NULL }
};
/*
* Here are the global variables associated with
* the various user definable characteristics of the dissection
*/
-static guint32 sccp_source_pc_global = 0;
-static gboolean sccp_show_length = FALSE;
+static guint32 sccp_source_pc_global = 0;
+static gboolean sccp_show_length = FALSE;
static module_t *sccp_module;
static heur_dissector_list_t heur_subdissector_list;
@@ -803,670 +803,670 @@ static guint slr = 0;
static dissector_table_t sccp_ssn_dissector_table;
-static emem_tree_t* assocs = NULL;
-static sccp_assoc_info_t* assoc;
-static sccp_msg_info_t* sccp_msg;
-static sccp_assoc_info_t no_assoc = {0,0,0,0,0,FALSE,FALSE,NULL,NULL,SCCP_PLOAD_NONE,NULL,NULL,NULL,0};
-static gboolean trace_sccp = FALSE;
-static guint32 next_assoc_id = 0;
+static emem_tree_t *assocs = NULL;
+static sccp_assoc_info_t *assoc;
+static sccp_msg_info_t *sccp_msg;
+static sccp_assoc_info_t no_assoc = {0,0,0,0,0,FALSE,FALSE,NULL,NULL,SCCP_PLOAD_NONE,NULL,NULL,NULL,0};
+static gboolean trace_sccp = FALSE;
+static guint32 next_assoc_id = 0;
static const value_string assoc_protos[] = {
- { SCCP_PLOAD_BSSAP, "BSSAP" },
- { SCCP_PLOAD_RANAP, "RANAP" },
- { 0, NULL }
+ { SCCP_PLOAD_BSSAP, "BSSAP" },
+ { SCCP_PLOAD_RANAP, "RANAP" },
+ { 0, NULL }
};
#define is_connectionless(m) \
- ( m == SCCP_MSG_TYPE_UDT || m == SCCP_MSG_TYPE_UDTS \
- || m == SCCP_MSG_TYPE_XUDT|| m == SCCP_MSG_TYPE_XUDTS \
- || m == SCCP_MSG_TYPE_LUDT|| m == SCCP_MSG_TYPE_LUDTS)
+ ( m == SCCP_MSG_TYPE_UDT || m == SCCP_MSG_TYPE_UDTS \
+ || m == SCCP_MSG_TYPE_XUDT|| m == SCCP_MSG_TYPE_XUDTS \
+ || m == SCCP_MSG_TYPE_LUDT|| m == SCCP_MSG_TYPE_LUDTS)
#define RETURN_FALSE \
- { \
- /*g_warning("Frame %d not protocol %d @ line %d", frame_num, my_mtp3_standard, __LINE__);*/ \
- return FALSE; \
- }
+ do { \
+ /*g_warning("Frame %d not protocol %d @ line %d", frame_num, my_mtp3_standard, __LINE__);*/ \
+ return FALSE; \
+ } while (0)
static gboolean
sccp_called_calling_looks_valid(guint32 frame_num _U_, tvbuff_t *tvb, guint8 my_mtp3_standard, gboolean is_co)
{
- guint8 ai, ri, gti, ssni, pci;
- guint8 len_needed = 1; /* need at least the Address Indicator */
- guint len = tvb_length(tvb);
-
- ai = tvb_get_guint8(tvb, 0);
- if (my_mtp3_standard == ANSI_STANDARD && (ai & ANSI_NATIONAL_MASK) == 0)
- RETURN_FALSE;
-
- gti = (ai & GTI_MASK) >> GTI_SHIFT;
- if (my_mtp3_standard == ANSI_STANDARD) {
- if (gti > 2)
- RETURN_FALSE;
- } else {
- if (gti > 4)
- RETURN_FALSE;
- }
-
- ri = (ai & ROUTING_INDICATOR_MASK) >> ROUTING_INDICATOR_SHIFT;
- if (my_mtp3_standard == ANSI_STANDARD) {
- pci = ai & ANSI_PC_INDICATOR_MASK;
- ssni = ai & ANSI_SSN_INDICATOR_MASK;
- } else {
- ssni = ai & ITU_SSN_INDICATOR_MASK;
- pci = ai & ITU_PC_INDICATOR_MASK;
- }
+ guint8 ai, ri, gti, ssni, pci;
+ guint8 len_needed = 1; /* need at least the Address Indicator */
+ guint len = tvb_length(tvb);
+
+ ai = tvb_get_guint8(tvb, 0);
+ if ((my_mtp3_standard == ANSI_STANDARD) && ((ai & ANSI_NATIONAL_MASK) == 0))
+ RETURN_FALSE;
+
+ gti = (ai & GTI_MASK) >> GTI_SHIFT;
+ if (my_mtp3_standard == ANSI_STANDARD) {
+ if (gti > 2)
+ RETURN_FALSE;
+ } else {
+ if (gti > 4)
+ RETURN_FALSE;
+ }
- /* Route on SSN with no SSN? */
- if (ri == ROUTE_ON_SSN && ssni == 0)
- RETURN_FALSE;
+ ri = (ai & ROUTING_INDICATOR_MASK) >> ROUTING_INDICATOR_SHIFT;
+ if (my_mtp3_standard == ANSI_STANDARD) {
+ pci = ai & ANSI_PC_INDICATOR_MASK;
+ ssni = ai & ANSI_SSN_INDICATOR_MASK;
+ } else {
+ ssni = ai & ITU_SSN_INDICATOR_MASK;
+ pci = ai & ITU_PC_INDICATOR_MASK;
+ }
- /* Route on GT with no GT? */
- if (ri == ROUTE_ON_GT && gti == AI_GTI_NO_GT)
- RETURN_FALSE;
+ /* Route on SSN with no SSN? */
+ if ((ri == ROUTE_ON_SSN) && (ssni == 0))
+ RETURN_FALSE;
- /* GT routed and connection-oriented (Class-2)?
- * Yes, that's theoretically possible, but it's not used.
- */
- if (ri == ROUTE_ON_GT && is_co)
- RETURN_FALSE;
+ /* Route on GT with no GT? */
+ if ((ri == ROUTE_ON_GT) && (gti == AI_GTI_NO_GT))
+ RETURN_FALSE;
- if (ssni)
- len_needed += ADDRESS_SSN_LENGTH;
- if (pci) {
- if (my_mtp3_standard == ANSI_STANDARD ||
- my_mtp3_standard == CHINESE_ITU_STANDARD)
- len_needed += ANSI_PC_LENGTH;
- else
- len_needed += ITU_PC_LENGTH;
- }
- if (gti)
- len_needed += 2;
+ /* GT routed and connection-oriented (Class-2)?
+ * Yes, that's theoretically possible, but it's not used.
+ */
+ if ((ri == ROUTE_ON_GT) && is_co)
+ RETURN_FALSE;
+
+ if (ssni)
+ len_needed += ADDRESS_SSN_LENGTH;
+ if (pci) {
+ if (my_mtp3_standard == ANSI_STANDARD ||
+ my_mtp3_standard == CHINESE_ITU_STANDARD)
+ len_needed += ANSI_PC_LENGTH;
+ else
+ len_needed += ITU_PC_LENGTH;
+ }
+ if (gti)
+ len_needed += 2;
- if (len_needed > len)
- RETURN_FALSE;
+ if (len_needed > len)
+ RETURN_FALSE;
- return TRUE;
+ return TRUE;
}
gboolean
looks_like_valid_sccp(guint32 frame_num _U_, tvbuff_t *tvb, guint8 my_mtp3_standard)
{
- guint offset;
- guint8 msgtype, msg_class, cause;
- guint called_ptr = 0;
- guint calling_ptr = 0;
- guint data_ptr = 0;
- guint opt_ptr = 0;
- guint8 pointer_length = POINTER_LENGTH;
- guint len = tvb_length(tvb);
-
- /* Ensure we can do some basic checks without throwing an exception.
- * Accesses beyond this length need to check the length first because
- * we don't want to throw an exception in here...
- */
- if (len < 6)
- RETURN_FALSE;
+ guint offset;
+ guint8 msgtype, msg_class, cause;
+ guint called_ptr = 0;
+ guint calling_ptr = 0;
+ guint data_ptr = 0;
+ guint opt_ptr = 0;
+ guint8 pointer_length = POINTER_LENGTH;
+ guint len = tvb_length(tvb);
+
+ /* Ensure we can do some basic checks without throwing an exception.
+ * Accesses beyond this length need to check the length first because
+ * we don't want to throw an exception in here...
+ */
+ if (len < 6)
+ RETURN_FALSE;
+
+ msgtype = tvb_get_guint8(tvb, SCCP_MSG_TYPE_OFFSET);
+ if (!match_strval(msgtype, sccp_message_type_acro_values)) {
+ RETURN_FALSE;
+ }
+ offset = SCCP_MSG_TYPE_LENGTH;
- msgtype = tvb_get_guint8(tvb, SCCP_MSG_TYPE_OFFSET);
- if (!match_strval(msgtype, sccp_message_type_acro_values)) {
- RETURN_FALSE;
+ switch (msgtype) {
+ case SCCP_MSG_TYPE_UDT:
+ case SCCP_MSG_TYPE_XUDT:
+ case SCCP_MSG_TYPE_LUDT:
+ case SCCP_MSG_TYPE_UDTS:
+ case SCCP_MSG_TYPE_XUDTS:
+ case SCCP_MSG_TYPE_LUDTS:
+ {
+ if (msgtype == SCCP_MSG_TYPE_XUDT || msgtype == SCCP_MSG_TYPE_XUDTS) {
+ if (SCCP_MSG_TYPE_LENGTH +
+ PROTOCOL_CLASS_LENGTH + /* or Cause for XUDTS */
+ HOP_COUNTER_LENGTH +
+ POINTER_LENGTH +
+ POINTER_LENGTH +
+ POINTER_LENGTH +
+ POINTER_LENGTH > len)
+ RETURN_FALSE;
}
- offset = SCCP_MSG_TYPE_LENGTH;
-
- switch (msgtype) {
- case SCCP_MSG_TYPE_UDT:
- case SCCP_MSG_TYPE_XUDT:
- case SCCP_MSG_TYPE_LUDT:
- case SCCP_MSG_TYPE_UDTS:
- case SCCP_MSG_TYPE_XUDTS:
- case SCCP_MSG_TYPE_LUDTS:
- {
- if (msgtype == SCCP_MSG_TYPE_XUDT || msgtype == SCCP_MSG_TYPE_XUDTS) {
- if (SCCP_MSG_TYPE_LENGTH +
- PROTOCOL_CLASS_LENGTH + /* or Cause for XUDTS */
- HOP_COUNTER_LENGTH +
- POINTER_LENGTH +
- POINTER_LENGTH +
- POINTER_LENGTH +
- POINTER_LENGTH > len)
- RETURN_FALSE;
- }
-
- if (msgtype == SCCP_MSG_TYPE_LUDT || msgtype == SCCP_MSG_TYPE_LUDTS) {
- if (SCCP_MSG_TYPE_LENGTH +
- PROTOCOL_CLASS_LENGTH + /* or Cause for LUDTS */
- HOP_COUNTER_LENGTH +
- POINTER_LENGTH_LONG +
- POINTER_LENGTH_LONG +
- POINTER_LENGTH_LONG +
- POINTER_LENGTH_LONG > len)
- RETURN_FALSE;
-
- pointer_length = POINTER_LENGTH_LONG;
- }
-
- if (msgtype == SCCP_MSG_TYPE_UDT || msgtype == SCCP_MSG_TYPE_XUDT ||
- msgtype == SCCP_MSG_TYPE_LUDT) {
-
- msg_class = tvb_get_guint8(tvb, offset) & CLASS_CLASS_MASK;
- if (msg_class > 1)
- RETURN_FALSE;
- offset += PROTOCOL_CLASS_LENGTH;
- }
-
- if (msgtype == SCCP_MSG_TYPE_XUDT || msgtype == SCCP_MSG_TYPE_LUDT)
- offset += HOP_COUNTER_LENGTH;
-
- if (msgtype == SCCP_MSG_TYPE_UDTS ||
- msgtype == SCCP_MSG_TYPE_XUDTS ||
- msgtype == SCCP_MSG_TYPE_LUDTS) {
-
- cause = tvb_get_guint8(tvb, offset);
- if (!match_strval(cause, sccp_return_cause_values))
- RETURN_FALSE;
- offset += RETURN_CAUSE_LENGTH;
- }
-
- if (msgtype == SCCP_MSG_TYPE_XUDTS || msgtype == SCCP_MSG_TYPE_LUDTS)
- offset += HOP_COUNTER_LENGTH;
-
- if (msgtype == SCCP_MSG_TYPE_LUDT || msgtype == SCCP_MSG_TYPE_LUDTS)
- called_ptr = tvb_get_letohs(tvb, offset);
- else
- called_ptr = tvb_get_guint8(tvb, offset);
- if (called_ptr == 0) /* Mandatory variable parameters must be present */
- RETURN_FALSE;
- called_ptr += offset;
- offset += pointer_length;
-
- if (msgtype == SCCP_MSG_TYPE_LUDT || msgtype == SCCP_MSG_TYPE_LUDTS)
- calling_ptr = tvb_get_letohs(tvb, offset);
- else
- calling_ptr = tvb_get_guint8(tvb, offset);
- if (calling_ptr == 0) /* Mandatory variable parameters must be present */
- RETURN_FALSE;
- calling_ptr += offset;
- offset += pointer_length;
-
- if (msgtype == SCCP_MSG_TYPE_LUDT || msgtype == SCCP_MSG_TYPE_LUDTS)
- data_ptr = tvb_get_letohs(tvb, offset);
- else
- data_ptr = tvb_get_guint8(tvb, offset);
- if (data_ptr == 0) /* Mandatory variable parameters must be present */
- RETURN_FALSE;
- data_ptr += offset;
- offset += pointer_length;
-
- if (msgtype == SCCP_MSG_TYPE_XUDT || msgtype == SCCP_MSG_TYPE_XUDTS) {
- opt_ptr = tvb_get_guint8(tvb, offset);
- offset += POINTER_LENGTH;
- } else if (msgtype == SCCP_MSG_TYPE_LUDT || msgtype == SCCP_MSG_TYPE_LUDTS) {
- opt_ptr = tvb_get_letohs(tvb, offset);
- offset += POINTER_LENGTH_LONG;
- }
-
- if (msgtype == SCCP_MSG_TYPE_LUDT || msgtype == SCCP_MSG_TYPE_LUDTS) {
- /* Long pointers count from the 2nd (MSB) octet of the pointer */
- called_ptr += 1;
- calling_ptr += 1;
- data_ptr += 1;
- if (opt_ptr)
- opt_ptr += 1;
- }
-
- /* Check that the variable pointers are within bounds */
- if (called_ptr > len || calling_ptr > len || data_ptr > len)
- RETURN_FALSE;
-
- /* Check that the lengths of the variable parameters are within bounds */
- if (tvb_get_guint8(tvb, called_ptr)+called_ptr > len ||
- tvb_get_guint8(tvb, calling_ptr)+calling_ptr > len)
- RETURN_FALSE;
- if (msgtype == SCCP_MSG_TYPE_LUDT || msgtype == SCCP_MSG_TYPE_LUDTS) {
- if (tvb_get_letohs(tvb, data_ptr)+data_ptr > len)
- RETURN_FALSE;
- } else {
- if (tvb_get_guint8(tvb, data_ptr)+data_ptr > len)
- RETURN_FALSE;
- }
- }
- break;
- case SCCP_MSG_TYPE_CR:
- {
- offset += DESTINATION_LOCAL_REFERENCE_LENGTH;
-
- /* Class is only the lower 4 bits, but the upper 4 bits are spare
- * in Class-2. Don't mask them off so the below comparison also
- * fails if any of those spare bits are set.
- */
- msg_class = tvb_get_guint8(tvb, offset);
- if (msg_class != 2)
- RETURN_FALSE;
- }
- break;
- case SCCP_MSG_TYPE_CC:
- {
- if (len < SCCP_MSG_TYPE_LENGTH
- + DESTINATION_LOCAL_REFERENCE_LENGTH
- + SOURCE_LOCAL_REFERENCE_LENGTH
- + PROTOCOL_CLASS_LENGTH
- + POINTER_LENGTH)
- RETURN_FALSE;
-
- offset += DESTINATION_LOCAL_REFERENCE_LENGTH;
- offset += SOURCE_LOCAL_REFERENCE_LENGTH;
-
- /* Class is only the lower 4 bits, but the upper 4 bits are spare
- * in Class-2. Don't mask them off so the below comparison also
- * fails if any of those spare bits are set.
- */
- msg_class = tvb_get_guint8(tvb, offset);
- if (msg_class != 2)
- RETURN_FALSE;
- offset += PROTOCOL_CLASS_LENGTH;
-
- opt_ptr = tvb_get_guint8(tvb, offset);
- offset += POINTER_LENGTH;
-
- /* If the pointer isn't 0 (no optional parameters) or 1 (optional
- * parameter starts immediately after the pointer) then what would
- * be between the pointer and the parameter?
- */
- if (opt_ptr > 1)
- RETURN_FALSE;
-
- /* If there are no optional parameters, are we at the end of the
- * message?
- */
- if (opt_ptr == 0 && offset != len)
- RETURN_FALSE;
- }
- break;
- case SCCP_MSG_TYPE_CREF:
- {
- offset += DESTINATION_LOCAL_REFERENCE_LENGTH;
-
- cause = tvb_get_guint8(tvb, offset);
- if (!match_strval(cause, sccp_refusal_cause_values))
- RETURN_FALSE;
- offset += REFUSAL_CAUSE_LENGTH;
-
- opt_ptr = tvb_get_guint8(tvb, offset);
- offset += POINTER_LENGTH;
-
- /* If the pointer isn't 0 (no optional parameters) or 1 (optional
- * parameter starts immediately after the pointer) then what would
- * be between the pointer and the parameter?
- */
- if (opt_ptr > 1)
- RETURN_FALSE;
-
- /* If there are no optional parameters, are we at the end of the
- * message?
- */
- if (opt_ptr == 0 && offset != len)
- RETURN_FALSE;
- }
- break;
- case SCCP_MSG_TYPE_RLSD:
- {
- if (len < SCCP_MSG_TYPE_LENGTH
- + DESTINATION_LOCAL_REFERENCE_LENGTH
- + SOURCE_LOCAL_REFERENCE_LENGTH
- + RELEASE_CAUSE_LENGTH
- + POINTER_LENGTH)
- RETURN_FALSE;
-
- offset += DESTINATION_LOCAL_REFERENCE_LENGTH;
- offset += SOURCE_LOCAL_REFERENCE_LENGTH;
-
- cause = tvb_get_guint8(tvb, offset);
- if (!match_strval(cause, sccp_release_cause_values))
- RETURN_FALSE;
- offset += RELEASE_CAUSE_LENGTH;
-
- opt_ptr = tvb_get_guint8(tvb, offset);
- offset += POINTER_LENGTH;
-
- /* If the pointer isn't 0 (no optional parameters) or 1 (optional
- * parameter starts immediately after the pointer) then what would
- * be between the pointer and the parameter?
- */
- if (opt_ptr > 1)
- RETURN_FALSE;
-
- /* If there are no optional parameters, are we at the end of the
- * message?
- */
- if (opt_ptr == 0 && offset != len)
- RETURN_FALSE;
- }
- break;
- case SCCP_MSG_TYPE_RLC:
- {
- if (len != SCCP_MSG_TYPE_LENGTH
- + DESTINATION_LOCAL_REFERENCE_LENGTH
- + SOURCE_LOCAL_REFERENCE_LENGTH)
- RETURN_FALSE;
- }
- break;
- case SCCP_MSG_TYPE_ERR:
- {
- if (len != SCCP_MSG_TYPE_LENGTH
- + DESTINATION_LOCAL_REFERENCE_LENGTH
- + ERROR_CAUSE_LENGTH)
- RETURN_FALSE;
-
- offset += DESTINATION_LOCAL_REFERENCE_LENGTH;
-
- cause = tvb_get_guint8(tvb, offset);
- if (!match_strval(cause, sccp_error_cause_values))
- RETURN_FALSE;
- }
- break;
- case SCCP_MSG_TYPE_DT1:
- {
- if (len < SCCP_MSG_TYPE_LENGTH
- + DESTINATION_LOCAL_REFERENCE_LENGTH
- + SEGMENTING_REASSEMBLING_LENGTH
- + POINTER_LENGTH
- + PARAMETER_LENGTH_LENGTH
- + 1) /* At least 1 byte of payload */
- RETURN_FALSE;
- offset += DESTINATION_LOCAL_REFERENCE_LENGTH;
-
- /* Are any of the spare bits in set? */
- if (tvb_get_guint8(tvb, offset) & ~SEGMENTING_REASSEMBLING_MASK)
- RETURN_FALSE;
- offset += SEGMENTING_REASSEMBLING_LENGTH;
-
- data_ptr = tvb_get_guint8(tvb, offset) + offset;
- /* Verify the data pointer is within bounds */
- if (data_ptr > len)
- RETURN_FALSE;
- offset += POINTER_LENGTH;
-
- /* Verify the data length uses the rest of the message */
- if (tvb_get_guint8(tvb, data_ptr) + offset + 1U != len)
- RETURN_FALSE;
- }
- break;
- case SCCP_MSG_TYPE_IT:
- {
- if (len < SCCP_MSG_TYPE_LENGTH
- + DESTINATION_LOCAL_REFERENCE_LENGTH
- + SOURCE_LOCAL_REFERENCE_LENGTH
- + PROTOCOL_CLASS_LENGTH
- + SEQUENCING_SEGMENTING_LENGTH
- + CREDIT_LENGTH)
- RETURN_FALSE;
-
- offset += DESTINATION_LOCAL_REFERENCE_LENGTH;
- offset += SOURCE_LOCAL_REFERENCE_LENGTH;
-
- /* Class is only the lower 4 bits, but the upper 4 bits are spare
- * in Class-2. Don't mask them off so the below comparison also
- * fails if any of those spare bits are set.
- */
- msg_class = tvb_get_guint8(tvb, offset);
- if (msg_class != 2)
- RETURN_FALSE;
- offset += PROTOCOL_CLASS_LENGTH;
- }
- break;
- case SCCP_MSG_TYPE_AK:
- case SCCP_MSG_TYPE_DT2:
- case SCCP_MSG_TYPE_EA:
- case SCCP_MSG_TYPE_ED:
- case SCCP_MSG_TYPE_RSC:
- case SCCP_MSG_TYPE_RSR:
- /* Class-3 is never actually used in the real world */
- RETURN_FALSE;
- break;
- default:
- DISSECTOR_ASSERT_NOT_REACHED();
+ if (msgtype == SCCP_MSG_TYPE_LUDT || msgtype == SCCP_MSG_TYPE_LUDTS) {
+ if (SCCP_MSG_TYPE_LENGTH +
+ PROTOCOL_CLASS_LENGTH + /* or Cause for LUDTS */
+ HOP_COUNTER_LENGTH +
+ POINTER_LENGTH_LONG +
+ POINTER_LENGTH_LONG +
+ POINTER_LENGTH_LONG +
+ POINTER_LENGTH_LONG > len)
+ RETURN_FALSE;
+
+ pointer_length = POINTER_LENGTH_LONG;
}
- if (called_ptr) {
- guint8 param_len = tvb_get_guint8(tvb, called_ptr);
- tvbuff_t *param_tvb;
+ if (msgtype == SCCP_MSG_TYPE_UDT || msgtype == SCCP_MSG_TYPE_XUDT ||
+ msgtype == SCCP_MSG_TYPE_LUDT) {
+
+ msg_class = tvb_get_guint8(tvb, offset) & CLASS_CLASS_MASK;
+ if (msg_class > 1)
+ RETURN_FALSE;
+ offset += PROTOCOL_CLASS_LENGTH;
+ }
- if (param_len == 0)
- RETURN_FALSE;
- param_tvb = tvb_new_subset(tvb, called_ptr+1, param_len, param_len);
+ if (msgtype == SCCP_MSG_TYPE_XUDT || msgtype == SCCP_MSG_TYPE_LUDT)
+ offset += HOP_COUNTER_LENGTH;
- if (!sccp_called_calling_looks_valid(frame_num, param_tvb, my_mtp3_standard, !is_connectionless(msgtype)))
- RETURN_FALSE;
+ if (msgtype == SCCP_MSG_TYPE_UDTS ||
+ msgtype == SCCP_MSG_TYPE_XUDTS ||
+ msgtype == SCCP_MSG_TYPE_LUDTS) {
+
+ cause = tvb_get_guint8(tvb, offset);
+ if (!match_strval(cause, sccp_return_cause_values))
+ RETURN_FALSE;
+ offset += RETURN_CAUSE_LENGTH;
}
- if (calling_ptr) {
- guint8 param_len = tvb_get_guint8(tvb, calling_ptr);
- tvbuff_t *param_tvb;
+ if (msgtype == SCCP_MSG_TYPE_XUDTS || msgtype == SCCP_MSG_TYPE_LUDTS)
+ offset += HOP_COUNTER_LENGTH;
- if (param_len == 0)
- RETURN_FALSE;
- param_tvb = tvb_new_subset(tvb, calling_ptr+1, param_len, param_len);
+ if (msgtype == SCCP_MSG_TYPE_LUDT || msgtype == SCCP_MSG_TYPE_LUDTS)
+ called_ptr = tvb_get_letohs(tvb, offset);
+ else
+ called_ptr = tvb_get_guint8(tvb, offset);
+ if (called_ptr == 0) /* Mandatory variable parameters must be present */
+ RETURN_FALSE;
+ called_ptr += offset;
+ offset += pointer_length;
+
+ if (msgtype == SCCP_MSG_TYPE_LUDT || msgtype == SCCP_MSG_TYPE_LUDTS)
+ calling_ptr = tvb_get_letohs(tvb, offset);
+ else
+ calling_ptr = tvb_get_guint8(tvb, offset);
+ if (calling_ptr == 0) /* Mandatory variable parameters must be present */
+ RETURN_FALSE;
+ calling_ptr += offset;
+ offset += pointer_length;
+
+ if (msgtype == SCCP_MSG_TYPE_LUDT || msgtype == SCCP_MSG_TYPE_LUDTS)
+ data_ptr = tvb_get_letohs(tvb, offset);
+ else
+ data_ptr = tvb_get_guint8(tvb, offset);
+ if (data_ptr == 0) /* Mandatory variable parameters must be present */
+ RETURN_FALSE;
+ data_ptr += offset;
+ offset += pointer_length;
+
+ if (msgtype == SCCP_MSG_TYPE_XUDT || msgtype == SCCP_MSG_TYPE_XUDTS) {
+ opt_ptr = tvb_get_guint8(tvb, offset);
+ offset += POINTER_LENGTH;
+ } else if (msgtype == SCCP_MSG_TYPE_LUDT || msgtype == SCCP_MSG_TYPE_LUDTS) {
+ opt_ptr = tvb_get_letohs(tvb, offset);
+ offset += POINTER_LENGTH_LONG;
+ }
- if (!sccp_called_calling_looks_valid(frame_num, param_tvb, my_mtp3_standard, !is_connectionless(msgtype)))
- RETURN_FALSE;
+ if (msgtype == SCCP_MSG_TYPE_LUDT || msgtype == SCCP_MSG_TYPE_LUDTS) {
+ /* Long pointers count from the 2nd (MSB) octet of the pointer */
+ called_ptr += 1;
+ calling_ptr += 1;
+ data_ptr += 1;
+ if (opt_ptr)
+ opt_ptr += 1;
}
- if (opt_ptr) {
- guint8 opt_param;
+ /* Check that the variable pointers are within bounds */
+ if (called_ptr > len || calling_ptr > len || data_ptr > len)
+ RETURN_FALSE;
+
+ /* Check that the lengths of the variable parameters are within bounds */
+ if (tvb_get_guint8(tvb, called_ptr)+called_ptr > len ||
+ tvb_get_guint8(tvb, calling_ptr)+calling_ptr > len)
+ RETURN_FALSE;
+ if (msgtype == SCCP_MSG_TYPE_LUDT || msgtype == SCCP_MSG_TYPE_LUDTS) {
+ if (tvb_get_letohs(tvb, data_ptr)+data_ptr > len)
+ RETURN_FALSE;
+ } else {
+ if (tvb_get_guint8(tvb, data_ptr)+data_ptr > len)
+ RETURN_FALSE;
+ }
+ }
+ break;
+ case SCCP_MSG_TYPE_CR:
+ {
+ offset += DESTINATION_LOCAL_REFERENCE_LENGTH;
- opt_ptr += offset-1; /* (offset was already incremented) */
+ /* Class is only the lower 4 bits, but the upper 4 bits are spare
+ * in Class-2. Don't mask them off so the below comparison also
+ * fails if any of those spare bits are set.
+ */
+ msg_class = tvb_get_guint8(tvb, offset);
+ if (msg_class != 2)
+ RETURN_FALSE;
+ }
+ break;
+ case SCCP_MSG_TYPE_CC:
+ {
+ if (len < SCCP_MSG_TYPE_LENGTH
+ + DESTINATION_LOCAL_REFERENCE_LENGTH
+ + SOURCE_LOCAL_REFERENCE_LENGTH
+ + PROTOCOL_CLASS_LENGTH
+ + POINTER_LENGTH)
+ RETURN_FALSE;
+
+ offset += DESTINATION_LOCAL_REFERENCE_LENGTH;
+ offset += SOURCE_LOCAL_REFERENCE_LENGTH;
+
+ /* Class is only the lower 4 bits, but the upper 4 bits are spare
+ * in Class-2. Don't mask them off so the below comparison also
+ * fails if any of those spare bits are set.
+ */
+ msg_class = tvb_get_guint8(tvb, offset);
+ if (msg_class != 2)
+ RETURN_FALSE;
+ offset += PROTOCOL_CLASS_LENGTH;
- /* Check that the optional pointer is within bounds */
- if (opt_ptr > len)
- RETURN_FALSE;
+ opt_ptr = tvb_get_guint8(tvb, offset);
+ offset += POINTER_LENGTH;
- opt_param = tvb_get_guint8(tvb, opt_ptr);
- /* Check if the (1st) optional parameter tag is valid */
- if (!match_strval(opt_param, sccp_parameter_values))
- RETURN_FALSE;
+ /* If the pointer isn't 0 (no optional parameters) or 1 (optional
+ * parameter starts immediately after the pointer) then what would
+ * be between the pointer and the parameter?
+ */
+ if (opt_ptr > 1)
+ RETURN_FALSE;
- /* Check that the (1st) parameter length is within bounds */
- if (opt_param != PARAMETER_END_OF_OPTIONAL_PARAMETERS &&
- opt_ptr+1U <= len &&
- tvb_get_guint8(tvb, opt_ptr+1U)+offset > len)
- RETURN_FALSE;
+ /* If there are no optional parameters, are we at the end of the
+ * message?
+ */
+ if ((opt_ptr == 0) && (offset != len))
+ RETURN_FALSE;
+ }
+ break;
+ case SCCP_MSG_TYPE_CREF:
+ {
+ offset += DESTINATION_LOCAL_REFERENCE_LENGTH;
- /* If we're at the end of the parameters, are we also at the end of the
- * message?
- */
- if (opt_param == PARAMETER_END_OF_OPTIONAL_PARAMETERS && opt_ptr+1U != len)
- RETURN_FALSE;
- }
+ cause = tvb_get_guint8(tvb, offset);
+ if (!match_strval(cause, sccp_refusal_cause_values))
+ RETURN_FALSE;
+ offset += REFUSAL_CAUSE_LENGTH;
+
+ opt_ptr = tvb_get_guint8(tvb, offset);
+ offset += POINTER_LENGTH;
+
+ /* If the pointer isn't 0 (no optional parameters) or 1 (optional
+ * parameter starts immediately after the pointer) then what would
+ * be between the pointer and the parameter?
+ */
+ if (opt_ptr > 1)
+ RETURN_FALSE;
+
+ /* If there are no optional parameters, are we at the end of the
+ * message?
+ */
+ if ((opt_ptr == 0) && (offset != len))
+ RETURN_FALSE;
+ }
+ break;
+ case SCCP_MSG_TYPE_RLSD:
+ {
+ if (len < SCCP_MSG_TYPE_LENGTH
+ + DESTINATION_LOCAL_REFERENCE_LENGTH
+ + SOURCE_LOCAL_REFERENCE_LENGTH
+ + RELEASE_CAUSE_LENGTH
+ + POINTER_LENGTH)
+ RETURN_FALSE;
+
+ offset += DESTINATION_LOCAL_REFERENCE_LENGTH;
+ offset += SOURCE_LOCAL_REFERENCE_LENGTH;
+
+ cause = tvb_get_guint8(tvb, offset);
+ if (!match_strval(cause, sccp_release_cause_values))
+ RETURN_FALSE;
+ offset += RELEASE_CAUSE_LENGTH;
+
+ opt_ptr = tvb_get_guint8(tvb, offset);
+ offset += POINTER_LENGTH;
+
+ /* If the pointer isn't 0 (no optional parameters) or 1 (optional
+ * parameter starts immediately after the pointer) then what would
+ * be between the pointer and the parameter?
+ */
+ if (opt_ptr > 1)
+ RETURN_FALSE;
+
+ /* If there are no optional parameters, are we at the end of the
+ * message?
+ */
+ if ((opt_ptr == 0) && (offset != len))
+ RETURN_FALSE;
+ }
+ break;
+ case SCCP_MSG_TYPE_RLC:
+ {
+ if (len != SCCP_MSG_TYPE_LENGTH
+ + DESTINATION_LOCAL_REFERENCE_LENGTH
+ + SOURCE_LOCAL_REFERENCE_LENGTH)
+ RETURN_FALSE;
+ }
+ break;
+ case SCCP_MSG_TYPE_ERR:
+ {
+ if (len != SCCP_MSG_TYPE_LENGTH
+ + DESTINATION_LOCAL_REFERENCE_LENGTH
+ + ERROR_CAUSE_LENGTH)
+ RETURN_FALSE;
+
+ offset += DESTINATION_LOCAL_REFERENCE_LENGTH;
+
+ cause = tvb_get_guint8(tvb, offset);
+ if (!match_strval(cause, sccp_error_cause_values))
+ RETURN_FALSE;
+ }
+ break;
+ case SCCP_MSG_TYPE_DT1:
+ {
+ if (len < SCCP_MSG_TYPE_LENGTH
+ + DESTINATION_LOCAL_REFERENCE_LENGTH
+ + SEGMENTING_REASSEMBLING_LENGTH
+ + POINTER_LENGTH
+ + PARAMETER_LENGTH_LENGTH
+ + 1) /* At least 1 byte of payload */
+ RETURN_FALSE;
+ offset += DESTINATION_LOCAL_REFERENCE_LENGTH;
+
+ /* Are any of the spare bits in set? */
+ if (tvb_get_guint8(tvb, offset) & ~SEGMENTING_REASSEMBLING_MASK)
+ RETURN_FALSE;
+ offset += SEGMENTING_REASSEMBLING_LENGTH;
+
+ data_ptr = tvb_get_guint8(tvb, offset) + offset;
+ /* Verify the data pointer is within bounds */
+ if (data_ptr > len)
+ RETURN_FALSE;
+ offset += POINTER_LENGTH;
+
+ /* Verify the data length uses the rest of the message */
+ if (tvb_get_guint8(tvb, data_ptr) + offset + 1U != len)
+ RETURN_FALSE;
+ }
+ break;
+ case SCCP_MSG_TYPE_IT:
+ {
+ if (len < SCCP_MSG_TYPE_LENGTH
+ + DESTINATION_LOCAL_REFERENCE_LENGTH
+ + SOURCE_LOCAL_REFERENCE_LENGTH
+ + PROTOCOL_CLASS_LENGTH
+ + SEQUENCING_SEGMENTING_LENGTH
+ + CREDIT_LENGTH)
+ RETURN_FALSE;
+
+ offset += DESTINATION_LOCAL_REFERENCE_LENGTH;
+ offset += SOURCE_LOCAL_REFERENCE_LENGTH;
+
+ /* Class is only the lower 4 bits, but the upper 4 bits are spare
+ * in Class-2. Don't mask them off so the below comparison also
+ * fails if any of those spare bits are set.
+ */
+ msg_class = tvb_get_guint8(tvb, offset);
+ if (msg_class != 2)
+ RETURN_FALSE;
+ offset += PROTOCOL_CLASS_LENGTH;
+ }
+ break;
+ case SCCP_MSG_TYPE_AK:
+ case SCCP_MSG_TYPE_DT2:
+ case SCCP_MSG_TYPE_EA:
+ case SCCP_MSG_TYPE_ED:
+ case SCCP_MSG_TYPE_RSC:
+ case SCCP_MSG_TYPE_RSR:
+ /* Class-3 is never actually used in the real world */
+ RETURN_FALSE;
+ break;
+
+ default:
+ DISSECTOR_ASSERT_NOT_REACHED();
+ }
+
+ if (called_ptr) {
+ guint8 param_len = tvb_get_guint8(tvb, called_ptr);
+ tvbuff_t *param_tvb;
+
+ if (param_len == 0)
+ RETURN_FALSE;
+ param_tvb = tvb_new_subset(tvb, called_ptr+1, param_len, param_len);
+
+ if (!sccp_called_calling_looks_valid(frame_num, param_tvb, my_mtp3_standard, !is_connectionless(msgtype)))
+ RETURN_FALSE;
+ }
+
+ if (calling_ptr) {
+ guint8 param_len = tvb_get_guint8(tvb, calling_ptr);
+ tvbuff_t *param_tvb;
+
+ if (param_len == 0)
+ RETURN_FALSE;
+ param_tvb = tvb_new_subset(tvb, calling_ptr+1, param_len, param_len);
+
+ if (!sccp_called_calling_looks_valid(frame_num, param_tvb, my_mtp3_standard, !is_connectionless(msgtype)))
+ RETURN_FALSE;
+ }
+
+ if (opt_ptr) {
+ guint8 opt_param;
+
+ opt_ptr += offset-1; /* (offset was already incremented) */
+
+ /* Check that the optional pointer is within bounds */
+ if (opt_ptr > len)
+ RETURN_FALSE;
- return TRUE;
+ opt_param = tvb_get_guint8(tvb, opt_ptr);
+ /* Check if the (1st) optional parameter tag is valid */
+ if (!match_strval(opt_param, sccp_parameter_values))
+ RETURN_FALSE;
+
+ /* Check that the (1st) parameter length is within bounds */
+ if ((opt_param != PARAMETER_END_OF_OPTIONAL_PARAMETERS) &&
+ ((opt_ptr+1U) <= len) &&
+ ((tvb_get_guint8(tvb, opt_ptr+1U)+offset) > len))
+ RETURN_FALSE;
+
+ /* If we're at the end of the parameters, are we also at the end of the
+ * message?
+ */
+ if ((opt_param == PARAMETER_END_OF_OPTIONAL_PARAMETERS) && ((opt_ptr+1U) != len))
+ RETURN_FALSE;
+ }
+
+ return TRUE;
}
static sccp_assoc_info_t *
new_assoc(guint32 calling, guint32 called)
{
- sccp_assoc_info_t* a = se_alloc0(sizeof(sccp_assoc_info_t));
-
- a->id = next_assoc_id++;
- a->calling_dpc = calling;
- a->called_dpc = called;
- a->calling_ssn = INVALID_SSN;
- a->called_ssn = INVALID_SSN;
- a->msgs = NULL;
- a->curr_msg = NULL;
- a->payload = SCCP_PLOAD_NONE;
- a->calling_party = NULL;
- a->called_party = NULL;
- a->extra_info = NULL;
-
- return a;
+ sccp_assoc_info_t *a = se_alloc0(sizeof(sccp_assoc_info_t));
+
+ a->id = next_assoc_id++;
+ a->calling_dpc = calling;
+ a->called_dpc = called;
+ a->calling_ssn = INVALID_SSN;
+ a->called_ssn = INVALID_SSN;
+ a->msgs = NULL;
+ a->curr_msg = NULL;
+ a->payload = SCCP_PLOAD_NONE;
+ a->calling_party = NULL;
+ a->called_party = NULL;
+ a->extra_info = NULL;
+
+ return a;
}
void
reset_sccp_assoc(void)
{
- assoc = NULL;
+ assoc = NULL;
}
sccp_assoc_info_t *
-get_sccp_assoc(packet_info* pinfo, guint offset, guint32 src_lr, guint32 dst_lr, guint msg_type)
+get_sccp_assoc(packet_info *pinfo, guint offset, guint32 src_lr, guint32 dst_lr, guint msg_type)
{
- guint32 opck, dpck;
- address* opc = &(pinfo->src);
- address* dpc = &(pinfo->dst);
- guint framenum = PINFO_FD_NUM(pinfo);
-
- if(assoc)
- return assoc;
-
- opck = opc->type == AT_SS7PC ? mtp3_pc_hash((const mtp3_addr_pc_t *)opc->data) : g_str_hash(ep_address_to_str(opc));
- dpck = dpc->type == AT_SS7PC ? mtp3_pc_hash((const mtp3_addr_pc_t *)dpc->data) : g_str_hash(ep_address_to_str(dpc));
-
-
- switch (msg_type) {
- case SCCP_MSG_TYPE_CR:
- {
- /* CR contains the opc,dpc,dlr key of backward messages swapped as dpc,opc,slr */
- emem_tree_key_t bw_key[] = {
- {1, &dpck},
- {1, &opck},
- {1, &src_lr},
- {0, NULL}
- };
-
- if (! ( assoc = se_tree_lookup32_array(assocs,bw_key) ) && ! PINFO_FD_VISITED(pinfo) ) {
- assoc = new_assoc(opck, dpck);
- se_tree_insert32_array(assocs, bw_key, assoc);
- assoc->has_bw_key = TRUE;
- }
-
- pinfo->p2p_dir = P2P_DIR_SENT;
-
- break;
- }
- case SCCP_MSG_TYPE_CC:
- {
- emem_tree_key_t fw_key[] = {
- {1, &dpck}, {1, &opck}, {1, &src_lr}, {0, NULL}
- };
- emem_tree_key_t bw_key[] = {
- {1, &opck}, {1, &dpck}, {1, &dst_lr}, {0, NULL}
- };
-
- if ( ( assoc = se_tree_lookup32_array(assocs, bw_key) ) ) {
- goto got_assoc;
- }
-
- if ( (assoc = se_tree_lookup32_array(assocs, fw_key) ) ) {
- goto got_assoc;
- }
-
- assoc = new_assoc(dpck,opck);
-
- got_assoc:
-
- pinfo->p2p_dir = P2P_DIR_RECV;
-
- if ( ! PINFO_FD_VISITED(pinfo) && ! assoc->has_bw_key ) {
- se_tree_insert32_array(assocs, bw_key, assoc);
- assoc->has_bw_key = TRUE;
- }
-
- if ( ! PINFO_FD_VISITED(pinfo) && ! assoc->has_fw_key ) {
- se_tree_insert32_array(assocs, fw_key, assoc);
- assoc->has_fw_key = TRUE;
- }
-
- break;
- }
- case SCCP_MSG_TYPE_RLC:
- {
- emem_tree_key_t bw_key[] = {
- {1, &dpck}, {1, &opck}, {1, &src_lr}, {0, NULL}
- };
- emem_tree_key_t fw_key[] = {
- {1, &opck}, {1, &dpck}, {1, &dst_lr}, {0, NULL}
- };
- if ( ( assoc = se_tree_lookup32_array(assocs, bw_key) ) ) {
- goto got_assoc_rlc;
- }
-
- if ( (assoc = se_tree_lookup32_array(assocs, fw_key) ) ) {
- goto got_assoc_rlc;
- }
-
- assoc = new_assoc(dpck, opck);
-
- got_assoc_rlc:
-
- pinfo->p2p_dir = P2P_DIR_SENT;
-
- if ( ! PINFO_FD_VISITED(pinfo) && ! assoc->has_bw_key ) {
- se_tree_insert32_array(assocs, bw_key, assoc);
- assoc->has_bw_key = TRUE;
- }
-
- if ( ! PINFO_FD_VISITED(pinfo) && ! assoc->has_fw_key ) {
- se_tree_insert32_array(assocs, fw_key, assoc);
- assoc->has_fw_key = TRUE;
- }
- break;
- }
- default:
- {
- emem_tree_key_t key[] = {
- {1, &opck}, {1, &dpck}, {1, &dst_lr}, {0, NULL}
- };
-
- assoc = se_tree_lookup32_array(assocs, key);
-
- if (assoc) {
- if (assoc->calling_dpc == dpck) {
- pinfo->p2p_dir = P2P_DIR_RECV;
- } else {
- pinfo->p2p_dir = P2P_DIR_SENT;
- }
- }
-
- break;
- }
+ guint32 opck, dpck;
+ address *opc = &(pinfo->src);
+ address *dpc = &(pinfo->dst);
+ guint framenum = PINFO_FD_NUM(pinfo);
+
+ if (assoc)
+ return assoc;
+
+ opck = opc->type == AT_SS7PC ? mtp3_pc_hash((const mtp3_addr_pc_t *)opc->data) : g_str_hash(ep_address_to_str(opc));
+ dpck = dpc->type == AT_SS7PC ? mtp3_pc_hash((const mtp3_addr_pc_t *)dpc->data) : g_str_hash(ep_address_to_str(dpc));
+
+
+ switch (msg_type) {
+ case SCCP_MSG_TYPE_CR:
+ {
+ /* CR contains the opc,dpc,dlr key of backward messages swapped as dpc,opc,slr */
+ emem_tree_key_t bw_key[] = {
+ {1, &dpck},
+ {1, &opck},
+ {1, &src_lr},
+ {0, NULL}
+ };
+
+ if (! ( assoc = se_tree_lookup32_array(assocs,bw_key) ) && ! PINFO_FD_VISITED(pinfo) ) {
+ assoc = new_assoc(opck, dpck);
+ se_tree_insert32_array(assocs, bw_key, assoc);
+ assoc->has_bw_key = TRUE;
+ }
+
+ pinfo->p2p_dir = P2P_DIR_SENT;
+
+ break;
+ }
+ case SCCP_MSG_TYPE_CC:
+ {
+ emem_tree_key_t fw_key[] = {
+ {1, &dpck}, {1, &opck}, {1, &src_lr}, {0, NULL}
+ };
+ emem_tree_key_t bw_key[] = {
+ {1, &opck}, {1, &dpck}, {1, &dst_lr}, {0, NULL}
+ };
+
+ if ( ( assoc = se_tree_lookup32_array(assocs, bw_key) ) ) {
+ goto got_assoc;
+ }
+
+ if ( (assoc = se_tree_lookup32_array(assocs, fw_key) ) ) {
+ goto got_assoc;
+ }
+
+ assoc = new_assoc(dpck,opck);
+
+ got_assoc:
+
+ pinfo->p2p_dir = P2P_DIR_RECV;
+
+ if ( ! PINFO_FD_VISITED(pinfo) && ! assoc->has_bw_key ) {
+ se_tree_insert32_array(assocs, bw_key, assoc);
+ assoc->has_bw_key = TRUE;
+ }
+
+ if ( ! PINFO_FD_VISITED(pinfo) && ! assoc->has_fw_key ) {
+ se_tree_insert32_array(assocs, fw_key, assoc);
+ assoc->has_fw_key = TRUE;
}
- if (assoc && trace_sccp) {
- if ( ! PINFO_FD_VISITED(pinfo)) {
- sccp_msg_info_t* msg = se_alloc0(sizeof(sccp_msg_info_t));
- msg->framenum = framenum;
- msg->offset = offset;
- msg->data.co.next = NULL;
- msg->data.co.assoc = assoc;
- msg->data.co.label = NULL;
- msg->data.co.comment = NULL;
- msg->type = msg_type;
-
- if (assoc->msgs) {
- sccp_msg_info_t* m;
- for (m = assoc->msgs; m->data.co.next; m = m->data.co.next) ;
- m->data.co.next = msg;
- } else {
- assoc->msgs = msg;
- }
-
- assoc->curr_msg = msg;
-
- } else {
-
- sccp_msg_info_t* m;
-
- for (m = assoc->msgs; m; m = m->data.co.next) {
- if (m->framenum == framenum && m->offset == offset) {
- assoc->curr_msg = m;
- break;
- }
- }
- }
+ break;
+ }
+ case SCCP_MSG_TYPE_RLC:
+ {
+ emem_tree_key_t bw_key[] = {
+ {1, &dpck}, {1, &opck}, {1, &src_lr}, {0, NULL}
+ };
+ emem_tree_key_t fw_key[] = {
+ {1, &opck}, {1, &dpck}, {1, &dst_lr}, {0, NULL}
+ };
+ if ( ( assoc = se_tree_lookup32_array(assocs, bw_key) ) ) {
+ goto got_assoc_rlc;
+ }
+
+ if ( (assoc = se_tree_lookup32_array(assocs, fw_key) ) ) {
+ goto got_assoc_rlc;
+ }
+
+ assoc = new_assoc(dpck, opck);
+
+ got_assoc_rlc:
+
+ pinfo->p2p_dir = P2P_DIR_SENT;
+
+ if ( ! PINFO_FD_VISITED(pinfo) && ! assoc->has_bw_key ) {
+ se_tree_insert32_array(assocs, bw_key, assoc);
+ assoc->has_bw_key = TRUE;
+ }
+
+ if ( ! PINFO_FD_VISITED(pinfo) && ! assoc->has_fw_key ) {
+ se_tree_insert32_array(assocs, fw_key, assoc);
+ assoc->has_fw_key = TRUE;
+ }
+ break;
+ }
+ default:
+ {
+ emem_tree_key_t key[] = {
+ {1, &opck}, {1, &dpck}, {1, &dst_lr}, {0, NULL}
+ };
+
+ assoc = se_tree_lookup32_array(assocs, key);
+
+ if (assoc) {
+ if (assoc->calling_dpc == dpck) {
+ pinfo->p2p_dir = P2P_DIR_RECV;
+ } else {
+ pinfo->p2p_dir = P2P_DIR_SENT;
+ }
+ }
+
+ break;
+ }
+ }
+
+ if (assoc && trace_sccp) {
+ if ( ! PINFO_FD_VISITED(pinfo)) {
+ sccp_msg_info_t *msg = se_alloc0(sizeof(sccp_msg_info_t));
+ msg->framenum = framenum;
+ msg->offset = offset;
+ msg->data.co.next = NULL;
+ msg->data.co.assoc = assoc;
+ msg->data.co.label = NULL;
+ msg->data.co.comment = NULL;
+ msg->type = msg_type;
+
+ if (assoc->msgs) {
+ sccp_msg_info_t *m;
+ for (m = assoc->msgs; m->data.co.next; m = m->data.co.next) ;
+ m->data.co.next = msg;
+ } else {
+ assoc->msgs = msg;
+ }
+
+ assoc->curr_msg = msg;
+
+ } else {
+
+ sccp_msg_info_t *m;
+
+ for (m = assoc->msgs; m; m = m->data.co.next) {
+ if ((m->framenum == framenum) && (m->offset == offset)) {
+ assoc->curr_msg = m;
+ break;
+ }
+ }
}
+ }
- return assoc ? assoc : &no_assoc;
+ return assoc ? assoc : &no_assoc;
}
@@ -1478,15 +1478,15 @@ dissect_sccp_unknown_message(tvbuff_t *message_tvb, proto_tree *sccp_tree)
message_length = tvb_length(message_tvb);
proto_tree_add_text(sccp_tree, message_tvb, 0, message_length,
- "Unknown message (%u byte%s)",
- message_length, plurality(message_length, "", "s"));
+ "Unknown message (%u byte%s)",
+ message_length, plurality(message_length, "", "s"));
}
static void
dissect_sccp_unknown_param(tvbuff_t *tvb, proto_tree *tree, guint8 type, guint length)
{
proto_tree_add_text(tree, tvb, 0, length, "Unknown parameter 0x%x (%u byte%s)",
- type, length, plurality(length, "", "s"));
+ type, length, plurality(length, "", "s"));
}
static void
@@ -1533,9 +1533,9 @@ dissect_sccp_slr_param(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guin
static proto_tree *
dissect_sccp_gt_address_information(tvbuff_t *tvb, packet_info *pinfo,
- proto_tree *tree, guint length,
- gboolean even_length, gboolean called,
- gboolean route_on_gt)
+ proto_tree *tree, guint length,
+ gboolean even_length, gboolean called,
+ gboolean route_on_gt)
{
guint offset = 0;
guint8 odd_signal, even_signal;
@@ -1545,33 +1545,33 @@ dissect_sccp_gt_address_information(tvbuff_t *tvb, packet_info *pinfo,
gt_digits = ep_alloc0(GT_MAX_SIGNALS+1);
- while(offset < length) {
+ while (offset < length) {
odd_signal = tvb_get_guint8(tvb, offset) & GT_ODD_SIGNAL_MASK;
even_signal = tvb_get_guint8(tvb, offset) & GT_EVEN_SIGNAL_MASK;
even_signal >>= GT_EVEN_SIGNAL_SHIFT;
g_strlcat(gt_digits, val_to_str(odd_signal, sccp_address_signal_values,
- "Unknown: %d"), GT_MAX_SIGNALS+1);
+ "Unknown: %d"), GT_MAX_SIGNALS+1);
/* If the last signal is NOT filler */
if (offset != (length - 1) || even_length == TRUE)
g_strlcat(gt_digits, val_to_str(even_signal, sccp_address_signal_values,
- "Unknown: %d"), GT_MAX_SIGNALS+1);
+ "Unknown: %d"), GT_MAX_SIGNALS+1);
offset += GT_SIGNAL_LENGTH;
}
if (is_connectionless(message_type) && sccp_msg) {
- guint8** gt_ptr = called ? &(sccp_msg->data.ud.called_gt) : &(sccp_msg->data.ud.calling_gt);
+ guint8 **gt_ptr = called ? &(sccp_msg->data.ud.called_gt) : &(sccp_msg->data.ud.calling_gt);
- *gt_ptr = (guint8 *)ep_strdup(gt_digits);
+ *gt_ptr = (guint8 *)ep_strdup(gt_digits);
}
digits_item = proto_tree_add_string(tree, called ? hf_sccp_called_gt_digits
- : hf_sccp_calling_gt_digits,
- tvb, 0, length, gt_digits);
+ : hf_sccp_calling_gt_digits,
+ tvb, 0, length, gt_digits);
digits_tree = proto_item_add_subtree(digits_item, called ? ett_sccp_called_gt_digits
- : ett_sccp_calling_gt_digits);
+ : ett_sccp_calling_gt_digits);
if (set_addresses && route_on_gt) {
if (called) {
@@ -1583,42 +1583,42 @@ dissect_sccp_gt_address_information(tvbuff_t *tvb, packet_info *pinfo,
proto_tree_add_string(digits_tree, hf_sccp_gt_digits, tvb, 0, length, gt_digits);
proto_tree_add_uint(digits_tree, called ? hf_sccp_called_gt_digits_length
- : hf_sccp_calling_gt_digits_length,
- tvb, 0, length, (guint32)strlen(gt_digits));
+ : hf_sccp_calling_gt_digits_length,
+ tvb, 0, length, (guint32)strlen(gt_digits));
return digits_tree;
}
static void
dissect_sccp_global_title(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint length,
- guint8 gti, gboolean route_on_gt, gboolean called)
+ guint8 gti, gboolean route_on_gt, gboolean called)
{
proto_item *gt_item;
proto_tree *gt_tree;
proto_tree *digits_tree;
- tvbuff_t *signals_tvb;
- guint offset = 0;
- guint8 odd_even, nai = 0, np = 0, es;
- gboolean even = TRUE;
+ tvbuff_t *signals_tvb;
+ guint offset = 0;
+ guint8 odd_even, nai = 0, np = 0, es;
+ gboolean even = TRUE;
/* Shift GTI to where we can work with it */
gti >>= GTI_SHIFT;
gt_item = proto_tree_add_text(tree, tvb, offset, length,
- "Global Title 0x%x (%u byte%s)",
- gti, length, plurality(length,"", "s"));
+ "Global Title 0x%x (%u byte%s)",
+ gti, length, plurality(length,"", "s"));
gt_tree = proto_item_add_subtree(gt_item, called ? ett_sccp_called_gt
- : ett_sccp_calling_gt);
+ : ett_sccp_calling_gt);
/* Decode Transation Type (if present) */
if ((gti == AI_GTI_TT) ||
- (decode_mtp3_standard != ANSI_STANDARD &&
- (gti == ITU_AI_GTI_TT_NP_ES || gti == ITU_AI_GTI_TT_NP_ES_NAI)) ||
- (decode_mtp3_standard == ANSI_STANDARD && gti == ANSI_AI_GTI_TT_NP_ES)) {
+ ((decode_mtp3_standard != ANSI_STANDARD) &&
+ ((gti == ITU_AI_GTI_TT_NP_ES) || (gti == ITU_AI_GTI_TT_NP_ES_NAI))) ||
+ ((decode_mtp3_standard == ANSI_STANDARD) && (gti == ANSI_AI_GTI_TT_NP_ES))) {
proto_tree_add_item(gt_tree, called ? hf_sccp_called_gt_tt
- : hf_sccp_calling_gt_tt,
- tvb, offset, GT_TT_LENGTH, ENC_NA);
+ : hf_sccp_calling_gt_tt,
+ tvb, offset, GT_TT_LENGTH, ENC_NA);
offset += GT_TT_LENGTH;
}
@@ -1628,19 +1628,19 @@ dissect_sccp_global_title(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
}
/* Decode Numbering Plan and Encoding Scheme (if present) */
- if ((decode_mtp3_standard != ANSI_STANDARD &&
- (gti == ITU_AI_GTI_TT_NP_ES || gti == ITU_AI_GTI_TT_NP_ES_NAI)) ||
- (decode_mtp3_standard == ANSI_STANDARD && gti == ANSI_AI_GTI_TT_NP_ES)) {
+ if (((decode_mtp3_standard != ANSI_STANDARD) &&
+ ((gti == ITU_AI_GTI_TT_NP_ES) || (gti == ITU_AI_GTI_TT_NP_ES_NAI))) ||
+ ((decode_mtp3_standard == ANSI_STANDARD) && (gti == ANSI_AI_GTI_TT_NP_ES))) {
np = tvb_get_guint8(tvb, offset) & GT_NP_MASK;
proto_tree_add_uint(gt_tree, called ? hf_sccp_called_gt_np
- : hf_sccp_calling_gt_np,
- tvb, offset, GT_NP_ES_LENGTH, np);
+ : hf_sccp_calling_gt_np,
+ tvb, offset, GT_NP_ES_LENGTH, np);
es = tvb_get_guint8(tvb, offset) & GT_ES_MASK;
proto_tree_add_uint(gt_tree, called ? hf_sccp_called_gt_es
- : hf_sccp_calling_gt_es,
- tvb, offset, GT_NP_ES_LENGTH, es);
+ : hf_sccp_calling_gt_es,
+ tvb, offset, GT_NP_ES_LENGTH, es);
even = (es == GT_ES_BCD_EVEN) ? TRUE : FALSE;
@@ -1648,22 +1648,22 @@ dissect_sccp_global_title(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
}
/* Decode Nature of Address Indicator (if present) */
- if (decode_mtp3_standard != ANSI_STANDARD &&
- (gti == ITU_AI_GTI_NAI || gti == ITU_AI_GTI_TT_NP_ES_NAI)) {
+ if ((decode_mtp3_standard != ANSI_STANDARD) &&
+ ((gti == ITU_AI_GTI_NAI) || (gti == ITU_AI_GTI_TT_NP_ES_NAI))) {
/* Decode Odd/Even Indicator (if present) */
if (gti == ITU_AI_GTI_NAI) {
odd_even = tvb_get_guint8(tvb, offset) & GT_OE_MASK;
proto_tree_add_uint(gt_tree, called ? hf_sccp_called_gt_oe
- : hf_sccp_calling_gt_oe,
- tvb, offset, GT_NAI_LENGTH, odd_even);
+ : hf_sccp_calling_gt_oe,
+ tvb, offset, GT_NAI_LENGTH, odd_even);
even = (odd_even == GT_OE_EVEN) ? TRUE : FALSE;
}
nai = tvb_get_guint8(tvb, offset) & GT_NAI_MASK;
proto_tree_add_uint(gt_tree, called ? hf_sccp_called_gt_nai
- : hf_sccp_calling_gt_nai,
- tvb, offset, GT_NAI_LENGTH, nai);
+ : hf_sccp_calling_gt_nai,
+ tvb, offset, GT_NAI_LENGTH, nai);
offset += GT_NAI_LENGTH;
}
@@ -1673,31 +1673,31 @@ dissect_sccp_global_title(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
return;
signals_tvb = tvb_new_subset(tvb, offset, (length - offset),
- (length - offset));
+ (length - offset));
digits_tree = dissect_sccp_gt_address_information(signals_tvb, pinfo, gt_tree,
- (length - offset),
- even, called, route_on_gt);
+ (length - offset),
+ even, called, route_on_gt);
/* Display the country code (if we can) */
- switch(np >> GT_NP_SHIFT) {
- case GT_NP_ISDN:
- case GT_NP_ISDN_MOBILE:
- if(nai == GT_NAI_INTERNATIONAL_NUM) {
- dissect_e164_cc(signals_tvb, digits_tree, 0, TRUE);
- }
- break;
- case GT_NP_LAND_MOBILE:
- dissect_e212_mcc_mnc_in_address(signals_tvb, pinfo, digits_tree, 0);
- break;
- default:
- break;
+ switch (np >> GT_NP_SHIFT) {
+ case GT_NP_ISDN:
+ case GT_NP_ISDN_MOBILE:
+ if (nai == GT_NAI_INTERNATIONAL_NUM) {
+ dissect_e164_cc(signals_tvb, digits_tree, 0, TRUE);
+ }
+ break;
+ case GT_NP_LAND_MOBILE:
+ dissect_e212_mcc_mnc_in_address(signals_tvb, pinfo, digits_tree, 0);
+ break;
+ default:
+ break;
}
}
static int
dissect_sccp_3byte_pc(tvbuff_t *tvb, proto_tree *call_tree, guint offset,
- gboolean called)
+ gboolean called)
{
int hf_pc;
@@ -1716,12 +1716,12 @@ dissect_sccp_3byte_pc(tvbuff_t *tvb, proto_tree *call_tree, guint offset,
/* create and fill the PC tree */
dissect_mtp3_3byte_pc(tvb, offset, call_tree,
- called ? ett_sccp_called_pc : ett_sccp_calling_pc,
- hf_pc,
- called ? hf_sccp_called_pc_network : hf_sccp_calling_pc_network,
- called ? hf_sccp_called_pc_cluster : hf_sccp_calling_pc_cluster,
- called ? hf_sccp_called_pc_member : hf_sccp_calling_pc_member,
- 0, 0);
+ called ? ett_sccp_called_pc : ett_sccp_calling_pc,
+ hf_pc,
+ called ? hf_sccp_called_pc_network : hf_sccp_calling_pc_network,
+ called ? hf_sccp_called_pc_cluster : hf_sccp_calling_pc_cluster,
+ called ? hf_sccp_called_pc_member : hf_sccp_calling_pc_member,
+ 0, 0);
return(offset + ANSI_PC_LENGTH);
}
@@ -1742,242 +1742,251 @@ dissect_sccp_3byte_pc(tvbuff_t *tvb, proto_tree *call_tree, guint offset,
*/
static void
dissect_sccp_called_calling_param(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint length, gboolean called)
+ guint length, gboolean called)
{
- proto_item *call_item = 0, *call_ai_item = 0, *item, *hidden_item, *expert_item;
- proto_tree *call_tree = 0, *call_ai_tree = 0;
- guint offset;
- guint8 national = 0xFFU, routing_ind, gti, pci, ssni, ssn;
- tvbuff_t *gt_tvb;
- dissector_handle_t ssn_dissector = NULL, tcap_ssn_dissector = NULL;
- const char *ssn_dissector_short_name = NULL;
- const char *tcap_ssn_dissector_short_name = NULL;
-
- call_item = proto_tree_add_text(tree, tvb, 0, length,
- "%s Party address (%u byte%s)",
- called ? "Called" : "Calling", length,
- plurality(length, "", "s"));
- call_tree = proto_item_add_subtree(call_item, called ? ett_sccp_called : ett_sccp_calling);
-
- call_ai_item = proto_tree_add_text(call_tree, tvb, 0,
- ADDRESS_INDICATOR_LENGTH,
- "Address Indicator");
- call_ai_tree = proto_item_add_subtree(call_ai_item, called ? ett_sccp_called_ai : ett_sccp_calling_ai);
-
- if (decode_mtp3_standard == ANSI_STANDARD) {
- national = tvb_get_guint8(tvb, 0) & ANSI_NATIONAL_MASK;
- expert_item = proto_tree_add_uint(call_ai_tree, called ? hf_sccp_called_national_indicator
- : hf_sccp_calling_national_indicator,
- tvb, 0, ADDRESS_INDICATOR_LENGTH, national);
- if (national == 0)
- expert_add_info_format(pinfo, expert_item, PI_MALFORMED, PI_WARN, "Address is coded to "
- "international standards. This doesn't normally happen in ANSI "
- "networks.");
+ proto_item *call_item = 0, *call_ai_item = 0, *item, *hidden_item, *expert_item;
+ proto_tree *call_tree = 0, *call_ai_tree = 0;
+ guint offset;
+ guint8 national = 0xFFU, routing_ind, gti, pci, ssni, ssn;
+ tvbuff_t *gt_tvb;
+ dissector_handle_t ssn_dissector = NULL, tcap_ssn_dissector = NULL;
+ const char *ssn_dissector_short_name = NULL;
+ const char *tcap_ssn_dissector_short_name = NULL;
+
+ call_item = proto_tree_add_text(tree, tvb, 0, length,
+ "%s Party address (%u byte%s)",
+ called ? "Called" : "Calling", length,
+ plurality(length, "", "s"));
+ call_tree = proto_item_add_subtree(call_item, called ? ett_sccp_called : ett_sccp_calling);
+
+ call_ai_item = proto_tree_add_text(call_tree, tvb, 0,
+ ADDRESS_INDICATOR_LENGTH,
+ "Address Indicator");
+ call_ai_tree = proto_item_add_subtree(call_ai_item, called ? ett_sccp_called_ai : ett_sccp_calling_ai);
+
+ if (decode_mtp3_standard == ANSI_STANDARD) {
+ national = tvb_get_guint8(tvb, 0) & ANSI_NATIONAL_MASK;
+ expert_item = proto_tree_add_uint(call_ai_tree, called ? hf_sccp_called_national_indicator
+ : hf_sccp_calling_national_indicator,
+ tvb, 0, ADDRESS_INDICATOR_LENGTH, national);
+ if (national == 0)
+ expert_add_info_format(pinfo, expert_item, PI_MALFORMED, PI_WARN, "Address is coded to "
+ "international standards. This doesn't normally happen in ANSI "
+ "networks.");
+ }
+
+ routing_ind = tvb_get_guint8(tvb, 0) & ROUTING_INDICATOR_MASK;
+ proto_tree_add_uint(call_ai_tree, called ? hf_sccp_called_routing_indicator : hf_sccp_calling_routing_indicator,
+ tvb, 0, ADDRESS_INDICATOR_LENGTH, routing_ind);
+ /* Only shift off the other bits after adding the item */
+ routing_ind >>= ROUTING_INDICATOR_SHIFT;
+
+ gti = tvb_get_guint8(tvb, 0) & GTI_MASK;
+
+ if (decode_mtp3_standard == ITU_STANDARD ||
+ decode_mtp3_standard == CHINESE_ITU_STANDARD ||
+ decode_mtp3_standard == JAPAN_STANDARD ||
+ national == 0) {
+
+ proto_tree_add_uint(call_ai_tree,
+ called ? hf_sccp_called_itu_global_title_indicator : hf_sccp_calling_itu_global_title_indicator,
+ tvb, 0, ADDRESS_INDICATOR_LENGTH, gti);
+
+ ssni = tvb_get_guint8(tvb, 0) & ITU_SSN_INDICATOR_MASK;
+ expert_item = proto_tree_add_uint(call_ai_tree,
+ called ? hf_sccp_called_itu_ssn_indicator : hf_sccp_calling_itu_ssn_indicator,
+ tvb, 0, ADDRESS_INDICATOR_LENGTH, ssni);
+ if ((routing_ind == ROUTE_ON_SSN) && (ssni == 0)) {
+ expert_add_info_format(pinfo, expert_item, PI_PROTOCOL, PI_WARN,
+ "Message is routed on SSN, but SSN is not present");
+ }
+
+ pci = tvb_get_guint8(tvb, 0) & ITU_PC_INDICATOR_MASK;
+ proto_tree_add_uint(call_ai_tree, called ? hf_sccp_called_itu_point_code_indicator : hf_sccp_calling_itu_point_code_indicator,
+ tvb, 0, ADDRESS_INDICATOR_LENGTH, pci);
+
+ offset = ADDRESS_INDICATOR_LENGTH;
+
+ /* Dissect PC (if present) */
+ if (pci) {
+ if (decode_mtp3_standard == ITU_STANDARD || national == 0) {
+ if (length < offset + ITU_PC_LENGTH) {
+ expert_item = proto_tree_add_text(call_tree, tvb, 0, -1,
+ "Wrong length indicated (%u) should be at least %u, PC is %u octets",
+ length, offset + ITU_PC_LENGTH, ITU_PC_LENGTH);
+ expert_add_info_format(pinfo, expert_item, PI_MALFORMED, PI_ERROR, "Wrong length indicated");
+ PROTO_ITEM_SET_GENERATED(expert_item);
+ return;
+ }
+ proto_tree_add_item(call_tree, called ? hf_sccp_called_itu_pc : hf_sccp_calling_itu_pc,
+ tvb, offset, ITU_PC_LENGTH, ENC_LITTLE_ENDIAN);
+ offset += ITU_PC_LENGTH;
+
+ } else if (decode_mtp3_standard == JAPAN_STANDARD) {
+
+ if (length < offset + JAPAN_PC_LENGTH) {
+ expert_item = proto_tree_add_text(call_tree, tvb, 0, -1,
+ "Wrong length indicated (%u) should be at least %u, PC is %u octets",
+ length, offset + JAPAN_PC_LENGTH, JAPAN_PC_LENGTH);
+ expert_add_info_format(pinfo, expert_item, PI_MALFORMED, PI_ERROR, "Wrong length indicated");
+ PROTO_ITEM_SET_GENERATED(expert_item);
+ return;
+ }
+ proto_tree_add_item(call_tree, called ? hf_sccp_called_japan_pc : hf_sccp_calling_japan_pc,
+ tvb, offset, JAPAN_PC_LENGTH, ENC_LITTLE_ENDIAN);
+
+ offset += JAPAN_PC_LENGTH;
+
+ } else /* CHINESE_ITU_STANDARD */ {
+
+ if (length < offset + ANSI_PC_LENGTH) {
+ expert_item = proto_tree_add_text(call_tree, tvb, 0, -1,
+ "Wrong length indicated (%u) should be at least %u, PC is %u octets",
+ length, offset + ANSI_PC_LENGTH, ANSI_PC_LENGTH);
+ expert_add_info_format(pinfo, expert_item, PI_MALFORMED, PI_ERROR, "Wrong length indicated");
+ PROTO_ITEM_SET_GENERATED(expert_item);
+ return;
+ }
+ offset = dissect_sccp_3byte_pc(tvb, call_tree, offset, called);
+
+ }
+ }
+
+ /* Dissect SSN (if present) */
+ if (ssni) {
+ ssn = tvb_get_guint8(tvb, offset);
+
+ if ((routing_ind == ROUTE_ON_SSN) && (ssn == 0)) {
+ expert_add_info_format(pinfo, expert_item, PI_PROTOCOL, PI_WARN,
+ "Message is routed on SSN, but SSN is zero (unspecified)");
+ }
+
+ if (called && assoc)
+ assoc->called_ssn = ssn;
+ else if (assoc)
+ assoc->calling_ssn = ssn;
+
+ if (is_connectionless(message_type) && sccp_msg) {
+ guint *ssn_ptr = called ? &(sccp_msg->data.ud.called_ssn) : &(sccp_msg->data.ud.calling_ssn);
+
+ *ssn_ptr = ssn;
+ }
+
+ proto_tree_add_uint(call_tree, called ? hf_sccp_called_ssn
+ : hf_sccp_calling_ssn,
+ tvb, offset, ADDRESS_SSN_LENGTH, ssn);
+ hidden_item = proto_tree_add_uint(call_tree, hf_sccp_ssn, tvb, offset,
+ ADDRESS_SSN_LENGTH, ssn);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+
+ offset += ADDRESS_SSN_LENGTH;
+
+ /* Get the dissector handle of the dissector registered for this ssn
+ * And print it's name.
+ */
+ ssn_dissector = dissector_get_uint_handle(sccp_ssn_dissector_table, ssn);
+
+ if (ssn_dissector) {
+ ssn_dissector_short_name = dissector_handle_get_short_name(ssn_dissector);
+
+ if (ssn_dissector_short_name) {
+ item = proto_tree_add_text(call_tree, tvb, offset - 1, ADDRESS_SSN_LENGTH,
+ "Linked to %s", ssn_dissector_short_name);
+ PROTO_ITEM_SET_GENERATED(item);
+
+ if (g_ascii_strncasecmp("TCAP", ssn_dissector_short_name, 4)== 0) {
+ tcap_ssn_dissector = get_itu_tcap_subdissector(ssn);
+
+ if (tcap_ssn_dissector) {
+ tcap_ssn_dissector_short_name = dissector_handle_get_short_name(tcap_ssn_dissector);
+ proto_item_append_text(item,", TCAP SSN linked to %s", tcap_ssn_dissector_short_name);
+ }
+ }
+ } /* short name */
+ } /* ssn_dissector */
+ } /* ssni */
+
+ /* Dissect GT (if present) */
+ if (gti != AI_GTI_NO_GT) {
+ if (length < offset)
+ return;
+
+ gt_tvb = tvb_new_subset(tvb, offset, (length - offset),
+ (length - offset));
+ dissect_sccp_global_title(gt_tvb, pinfo, call_tree, (length - offset), gti,
+ (routing_ind == ROUTE_ON_GT), called);
+ }
+
+ } else if (decode_mtp3_standard == ANSI_STANDARD) {
+
+ proto_tree_add_uint(call_ai_tree, called ? hf_sccp_called_ansi_global_title_indicator
+ : hf_sccp_calling_ansi_global_title_indicator,
+ tvb, 0, ADDRESS_INDICATOR_LENGTH, gti);
+
+ pci = tvb_get_guint8(tvb, 0) & ANSI_PC_INDICATOR_MASK;
+ proto_tree_add_uint(call_ai_tree, called ? hf_sccp_called_ansi_point_code_indicator
+ : hf_sccp_calling_ansi_point_code_indicator,
+ tvb, 0, ADDRESS_INDICATOR_LENGTH, pci);
+
+ ssni = tvb_get_guint8(tvb, 0) & ANSI_SSN_INDICATOR_MASK;
+ expert_item = proto_tree_add_uint(call_ai_tree, called ? hf_sccp_called_ansi_ssn_indicator
+ : hf_sccp_calling_ansi_ssn_indicator,
+ tvb, 0, ADDRESS_INDICATOR_LENGTH, ssni);
+ if ((routing_ind == ROUTE_ON_SSN) && (ssni == 0)) {
+ expert_add_info_format(pinfo, expert_item, PI_PROTOCOL, PI_WARN,
+ "Message is routed on SSN, but SSN is not present");
+ }
+
+ offset = ADDRESS_INDICATOR_LENGTH;
+
+ /* Dissect SSN (if present) */
+ if (ssni) {
+ ssn = tvb_get_guint8(tvb, offset);
+
+ if ((routing_ind == ROUTE_ON_SSN) && (ssn == 0)) {
+ expert_add_info_format(pinfo, expert_item, PI_PROTOCOL, PI_WARN,
+ "Message is routed on SSN, but SSN is zero (unspecified)");
+ }
+
+ if (called && assoc) {
+ assoc->called_ssn = ssn;
+ } else if (assoc) {
+ assoc->calling_ssn = ssn;
+ }
+
+ if (is_connectionless(message_type) && sccp_msg) {
+ guint *ssn_ptr = called ? &(sccp_msg->data.ud.called_ssn) : &(sccp_msg->data.ud.calling_ssn);
+
+ *ssn_ptr = ssn;
+ }
+
+ proto_tree_add_uint(call_tree, called ? hf_sccp_called_ssn
+ : hf_sccp_calling_ssn,
+ tvb, offset, ADDRESS_SSN_LENGTH, ssn);
+ hidden_item = proto_tree_add_uint(call_tree, hf_sccp_ssn, tvb, offset,
+ ADDRESS_SSN_LENGTH, ssn);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+
+ offset += ADDRESS_SSN_LENGTH;
}
- routing_ind = tvb_get_guint8(tvb, 0) & ROUTING_INDICATOR_MASK;
- proto_tree_add_uint(call_ai_tree, called ? hf_sccp_called_routing_indicator : hf_sccp_calling_routing_indicator,
- tvb, 0, ADDRESS_INDICATOR_LENGTH, routing_ind);
- /* Only shift off the other bits after adding the item */
- routing_ind >>= ROUTING_INDICATOR_SHIFT;
-
- gti = tvb_get_guint8(tvb, 0) & GTI_MASK;
-
- if (decode_mtp3_standard == ITU_STANDARD ||
- decode_mtp3_standard == CHINESE_ITU_STANDARD ||
- decode_mtp3_standard == JAPAN_STANDARD ||
- national == 0) {
-
- proto_tree_add_uint(call_ai_tree, called ? hf_sccp_called_itu_global_title_indicator : hf_sccp_calling_itu_global_title_indicator,
- tvb, 0, ADDRESS_INDICATOR_LENGTH, gti);
-
- ssni = tvb_get_guint8(tvb, 0) & ITU_SSN_INDICATOR_MASK;
- expert_item = proto_tree_add_uint(call_ai_tree, called ? hf_sccp_called_itu_ssn_indicator : hf_sccp_calling_itu_ssn_indicator,
- tvb, 0, ADDRESS_INDICATOR_LENGTH, ssni);
- if (routing_ind == ROUTE_ON_SSN && ssni == 0) {
- expert_add_info_format(pinfo, expert_item, PI_PROTOCOL, PI_WARN,
- "Message is routed on SSN, but SSN is not present");
- }
-
- pci = tvb_get_guint8(tvb, 0) & ITU_PC_INDICATOR_MASK;
- proto_tree_add_uint(call_ai_tree, called ? hf_sccp_called_itu_point_code_indicator : hf_sccp_calling_itu_point_code_indicator,
- tvb, 0, ADDRESS_INDICATOR_LENGTH, pci);
-
- offset = ADDRESS_INDICATOR_LENGTH;
-
- /* Dissect PC (if present) */
- if (pci) {
- if (decode_mtp3_standard == ITU_STANDARD || national == 0) {
- if (length < offset + ITU_PC_LENGTH){
- expert_item = proto_tree_add_text(call_tree, tvb, 0, -1, "Wrong length indicated (%u) should be at least %u, PC is %u octets", length, offset + ITU_PC_LENGTH, ITU_PC_LENGTH);
- expert_add_info_format(pinfo, expert_item, PI_MALFORMED, PI_ERROR, "Wrong length indicated");
- PROTO_ITEM_SET_GENERATED(expert_item);
- return;
- }
- proto_tree_add_item(call_tree, called ? hf_sccp_called_itu_pc : hf_sccp_calling_itu_pc,
- tvb, offset, ITU_PC_LENGTH, ENC_LITTLE_ENDIAN);
- offset += ITU_PC_LENGTH;
-
- } else if (decode_mtp3_standard == JAPAN_STANDARD) {
-
- if (length < offset + JAPAN_PC_LENGTH){
- expert_item = proto_tree_add_text(call_tree, tvb, 0, -1, "Wrong length indicated (%u) should be at least %u, PC is %u octets", length, offset + JAPAN_PC_LENGTH, JAPAN_PC_LENGTH);
- expert_add_info_format(pinfo, expert_item, PI_MALFORMED, PI_ERROR, "Wrong length indicated");
- PROTO_ITEM_SET_GENERATED(expert_item);
- return;
- }
- proto_tree_add_item(call_tree, called ? hf_sccp_called_japan_pc : hf_sccp_calling_japan_pc,
- tvb, offset, JAPAN_PC_LENGTH, ENC_LITTLE_ENDIAN);
-
- offset += JAPAN_PC_LENGTH;
-
- } else /* CHINESE_ITU_STANDARD */ {
-
- if (length < offset + ANSI_PC_LENGTH){
- expert_item = proto_tree_add_text(call_tree, tvb, 0, -1, "Wrong length indicated (%u) should be at least %u, PC is %u octets", length, offset + ANSI_PC_LENGTH, ANSI_PC_LENGTH);
- expert_add_info_format(pinfo, expert_item, PI_MALFORMED, PI_ERROR, "Wrong length indicated");
- PROTO_ITEM_SET_GENERATED(expert_item);
- return;
- }
- offset = dissect_sccp_3byte_pc(tvb, call_tree, offset, called);
-
- }
- }
-
- /* Dissect SSN (if present) */
- if (ssni) {
- ssn = tvb_get_guint8(tvb, offset);
-
- if (routing_ind == ROUTE_ON_SSN && ssn == 0) {
- expert_add_info_format(pinfo, expert_item, PI_PROTOCOL, PI_WARN,
- "Message is routed on SSN, but SSN is zero (unspecified)");
- }
-
- if (called && assoc)
- assoc->called_ssn = ssn;
- else if (assoc)
- assoc->calling_ssn = ssn;
-
- if (is_connectionless(message_type) && sccp_msg) {
- guint *ssn_ptr = called ? &(sccp_msg->data.ud.called_ssn) : &(sccp_msg->data.ud.calling_ssn);
-
- *ssn_ptr = ssn;
- }
-
- proto_tree_add_uint(call_tree, called ? hf_sccp_called_ssn
- : hf_sccp_calling_ssn,
- tvb, offset, ADDRESS_SSN_LENGTH, ssn);
- hidden_item = proto_tree_add_uint(call_tree, hf_sccp_ssn, tvb, offset,
- ADDRESS_SSN_LENGTH, ssn);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
-
- offset += ADDRESS_SSN_LENGTH;
-
- /* Get the dissector handle of the dissector registered for this ssn
- * And print it's name.
- */
- ssn_dissector = dissector_get_uint_handle(sccp_ssn_dissector_table, ssn);
-
- if (ssn_dissector) {
- ssn_dissector_short_name = dissector_handle_get_short_name(ssn_dissector);
-
- if(ssn_dissector_short_name) {
- item = proto_tree_add_text(call_tree, tvb, offset - 1, ADDRESS_SSN_LENGTH, "Linked to %s", ssn_dissector_short_name);
- PROTO_ITEM_SET_GENERATED(item);
-
- if (g_ascii_strncasecmp("TCAP", ssn_dissector_short_name, 4)== 0) {
- tcap_ssn_dissector = get_itu_tcap_subdissector(ssn);
-
- if(tcap_ssn_dissector) {
- tcap_ssn_dissector_short_name = dissector_handle_get_short_name(tcap_ssn_dissector);
- proto_item_append_text(item,", TCAP SSN linked to %s", tcap_ssn_dissector_short_name);
- }
- }
- } /* short name */
- } /* ssn_dissector */
- } /* ssni */
-
- /* Dissect GT (if present) */
- if (gti != AI_GTI_NO_GT) {
- if (length < offset)
- return;
-
- gt_tvb = tvb_new_subset(tvb, offset, (length - offset),
- (length - offset));
- dissect_sccp_global_title(gt_tvb, pinfo, call_tree, (length - offset), gti,
- (routing_ind == ROUTE_ON_GT), called);
- }
-
- } else if (decode_mtp3_standard == ANSI_STANDARD) {
-
- proto_tree_add_uint(call_ai_tree, called ? hf_sccp_called_ansi_global_title_indicator
- : hf_sccp_calling_ansi_global_title_indicator,
- tvb, 0, ADDRESS_INDICATOR_LENGTH, gti);
-
- pci = tvb_get_guint8(tvb, 0) & ANSI_PC_INDICATOR_MASK;
- proto_tree_add_uint(call_ai_tree, called ? hf_sccp_called_ansi_point_code_indicator
- : hf_sccp_calling_ansi_point_code_indicator,
- tvb, 0, ADDRESS_INDICATOR_LENGTH, pci);
-
- ssni = tvb_get_guint8(tvb, 0) & ANSI_SSN_INDICATOR_MASK;
- expert_item = proto_tree_add_uint(call_ai_tree, called ? hf_sccp_called_ansi_ssn_indicator
- : hf_sccp_calling_ansi_ssn_indicator,
- tvb, 0, ADDRESS_INDICATOR_LENGTH, ssni);
- if (routing_ind == ROUTE_ON_SSN && ssni == 0) {
- expert_add_info_format(pinfo, expert_item, PI_PROTOCOL, PI_WARN,
- "Message is routed on SSN, but SSN is not present");
- }
-
- offset = ADDRESS_INDICATOR_LENGTH;
-
- /* Dissect SSN (if present) */
- if (ssni) {
- ssn = tvb_get_guint8(tvb, offset);
-
- if (routing_ind == ROUTE_ON_SSN && ssn == 0) {
- expert_add_info_format(pinfo, expert_item, PI_PROTOCOL, PI_WARN,
- "Message is routed on SSN, but SSN is zero (unspecified)");
- }
-
- if (called && assoc) {
- assoc->called_ssn = ssn;
- } else if (assoc) {
- assoc->calling_ssn = ssn;
- }
-
- if (is_connectionless(message_type) && sccp_msg) {
- guint *ssn_ptr = called ? &(sccp_msg->data.ud.called_ssn) : &(sccp_msg->data.ud.calling_ssn);
-
- *ssn_ptr = ssn;
- }
-
- proto_tree_add_uint(call_tree, called ? hf_sccp_called_ssn
- : hf_sccp_calling_ssn,
- tvb, offset, ADDRESS_SSN_LENGTH, ssn);
- hidden_item = proto_tree_add_uint(call_tree, hf_sccp_ssn, tvb, offset,
- ADDRESS_SSN_LENGTH, ssn);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
-
- offset += ADDRESS_SSN_LENGTH;
- }
-
- /* Dissect PC (if present) */
- if (pci) {
- offset = dissect_sccp_3byte_pc(tvb, call_tree, offset, called);
- }
-
- /* Dissect GT (if present) */
- if (gti != AI_GTI_NO_GT) {
- if (length < offset)
- return;
- gt_tvb = tvb_new_subset(tvb, offset, (length - offset),
- (length - offset));
- dissect_sccp_global_title(gt_tvb, pinfo, call_tree, (length - offset), gti,
- (routing_ind == ROUTE_ON_GT), called);
- }
+ /* Dissect PC (if present) */
+ if (pci) {
+ offset = dissect_sccp_3byte_pc(tvb, call_tree, offset, called);
+ }
+ /* Dissect GT (if present) */
+ if (gti != AI_GTI_NO_GT) {
+ if (length < offset)
+ return;
+ gt_tvb = tvb_new_subset(tvb, offset, (length - offset),
+ (length - offset));
+ dissect_sccp_global_title(gt_tvb, pinfo, call_tree, (length - offset), gti,
+ (routing_ind == ROUTE_ON_GT), called);
}
+ }
+
}
static void
@@ -1995,9 +2004,9 @@ dissect_sccp_calling_param(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
static void
dissect_sccp_class_param(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint length)
{
- guint8 msg_class;
+ guint8 msg_class;
proto_item *pi;
- gboolean invalid_class = FALSE;
+ gboolean invalid_class = FALSE;
if (length != 1) {
pi = proto_tree_add_text(tree, tvb, 0, length, "Wrong length indicated. Expected 1, got %u", length);
@@ -2009,7 +2018,7 @@ dissect_sccp_class_param(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu
msg_class = tvb_get_guint8(tvb, 0) & CLASS_CLASS_MASK;
pi = proto_tree_add_uint(tree, hf_sccp_class, tvb, 0, length, msg_class);
- switch(message_type) {
+ switch (message_type) {
case SCCP_MSG_TYPE_DT1:
if (msg_class != 2)
invalid_class = TRUE;
@@ -2030,7 +2039,7 @@ dissect_sccp_class_param(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu
case SCCP_MSG_TYPE_RLC:
case SCCP_MSG_TYPE_ERR:
case SCCP_MSG_TYPE_IT:
- if (msg_class != 2 && msg_class != 3)
+ if ((msg_class != 2) && (msg_class != 3))
invalid_class = TRUE;
break;
case SCCP_MSG_TYPE_UDT:
@@ -2039,7 +2048,7 @@ dissect_sccp_class_param(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu
case SCCP_MSG_TYPE_XUDTS:
case SCCP_MSG_TYPE_LUDT:
case SCCP_MSG_TYPE_LUDTS:
- if (msg_class != 0 && msg_class != 1)
+ if ((msg_class != 0) && (msg_class != 1))
invalid_class = TRUE;
break;
}
@@ -2093,7 +2102,7 @@ dissect_sccp_receive_sequence_number_param(tvbuff_t *tvb, packet_info *pinfo, pr
static void
dissect_sccp_sequencing_segmenting_param(tvbuff_t *tvb, proto_tree *tree, guint length)
{
- guint8 rsn, ssn;
+ guint8 rsn, ssn;
proto_item *param_item;
proto_tree *param_tree;
@@ -2101,19 +2110,19 @@ dissect_sccp_sequencing_segmenting_param(tvbuff_t *tvb, proto_tree *tree, guint
rsn = tvb_get_guint8(tvb, SEQUENCING_SEGMENTING_SSN_LENGTH) >> 1;
param_item = proto_tree_add_text(tree, tvb, 0, length, "%s",
- val_to_str(PARAMETER_SEQUENCING_SEGMENTING,
- sccp_parameter_values, "Unknown: %d"));
+ val_to_str(PARAMETER_SEQUENCING_SEGMENTING,
+ sccp_parameter_values, "Unknown: %d"));
param_tree = proto_item_add_subtree(param_item,
- ett_sccp_sequencing_segmenting);
+ ett_sccp_sequencing_segmenting);
proto_tree_add_uint(param_tree, hf_sccp_sequencing_segmenting_ssn, tvb, 0,
- SEQUENCING_SEGMENTING_SSN_LENGTH, ssn);
+ SEQUENCING_SEGMENTING_SSN_LENGTH, ssn);
proto_tree_add_uint(param_tree, hf_sccp_sequencing_segmenting_rsn, tvb,
- SEQUENCING_SEGMENTING_SSN_LENGTH,
- SEQUENCING_SEGMENTING_RSN_LENGTH, rsn);
+ SEQUENCING_SEGMENTING_SSN_LENGTH,
+ SEQUENCING_SEGMENTING_RSN_LENGTH, rsn);
proto_tree_add_item(param_tree, hf_sccp_sequencing_segmenting_more, tvb,
- SEQUENCING_SEGMENTING_SSN_LENGTH,
- SEQUENCING_SEGMENTING_RSN_LENGTH, ENC_NA);
+ SEQUENCING_SEGMENTING_SSN_LENGTH,
+ SEQUENCING_SEGMENTING_RSN_LENGTH, ENC_NA);
}
static void
@@ -2122,7 +2131,8 @@ dissect_sccp_credit_param(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
if (length != 1) {
proto_item *expert_item;
expert_item = proto_tree_add_text(tree, tvb, 0, length, "Wrong length indicated. Expected 1, got %u", length);
- expert_add_info_format(pinfo, expert_item, PI_MALFORMED, PI_ERROR, "Wrong length indicated. Expected 1, got %u", length);
+ expert_add_info_format(pinfo, expert_item, PI_MALFORMED, PI_ERROR,
+ "Wrong length indicated. Expected 1, got %u", length);
PROTO_ITEM_SET_GENERATED(expert_item);
return;
}
@@ -2137,8 +2147,10 @@ dissect_sccp_release_cause_param(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
if (length != 1) {
proto_item *expert_item;
- expert_item = proto_tree_add_text(tree, tvb, 0, length, "Wrong length indicated. Expected 1, got %u", length);
- expert_add_info_format(pinfo, expert_item, PI_MALFORMED, PI_ERROR, "Wrong length indicated. Expected 1, got %u", length);
+ expert_item = proto_tree_add_text(tree, tvb, 0, length,
+ "Wrong length indicated. Expected 1, got %u", length);
+ expert_add_info_format(pinfo, expert_item, PI_MALFORMED, PI_ERROR,
+ "Wrong length indicated. Expected 1, got %u", length);
PROTO_ITEM_SET_GENERATED(expert_item);
return;
}
@@ -2158,7 +2170,8 @@ dissect_sccp_return_cause_param(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
if (length != 1) {
proto_item *expert_item;
expert_item = proto_tree_add_text(tree, tvb, 0, length, "Wrong length indicated. Expected 1, got %u", length);
- expert_add_info_format(pinfo, expert_item, PI_MALFORMED, PI_ERROR, "Wrong length indicated. Expected 1, got %u", length);
+ expert_add_info_format(pinfo, expert_item, PI_MALFORMED, PI_ERROR,
+ "Wrong length indicated. Expected 1, got %u", length);
PROTO_ITEM_SET_GENERATED(expert_item);
return;
}
@@ -2178,7 +2191,8 @@ dissect_sccp_reset_cause_param(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr
if (length != 1) {
proto_item *expert_item;
expert_item = proto_tree_add_text(tree, tvb, 0, length, "Wrong length indicated. Expected 1, got %u", length);
- expert_add_info_format(pinfo, expert_item, PI_MALFORMED, PI_ERROR, "Wrong length indicated. Expected 1, got %u", length);
+ expert_add_info_format(pinfo, expert_item, PI_MALFORMED, PI_ERROR,
+ "Wrong length indicated. Expected 1, got %u", length);
PROTO_ITEM_SET_GENERATED(expert_item);
return;
}
@@ -2235,94 +2249,94 @@ dissect_sccp_refusal_cause_param(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
static void
dissect_sccp_data_param(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- guint8 ssn = INVALID_SSN;
- guint8 other_ssn = INVALID_SSN;
- const mtp3_addr_pc_t* dpc = NULL;
- const mtp3_addr_pc_t* opc = NULL;
+ guint8 ssn = INVALID_SSN;
+ guint8 other_ssn = INVALID_SSN;
+ const mtp3_addr_pc_t *dpc = NULL;
+ const mtp3_addr_pc_t *opc = NULL;
- if (trace_sccp && assoc && assoc != &no_assoc) {
- pinfo->sccp_info = assoc->curr_msg;
- } else {
- pinfo->sccp_info = NULL;
- }
+ if ((trace_sccp) && (assoc && assoc != &no_assoc)) {
+ pinfo->sccp_info = assoc->curr_msg;
+ } else {
+ pinfo->sccp_info = NULL;
+ }
- if (assoc) {
- switch (pinfo->p2p_dir) {
- case P2P_DIR_SENT:
- ssn = assoc->calling_ssn;
- other_ssn = assoc->called_ssn;
- dpc = (const mtp3_addr_pc_t*)pinfo->dst.data;
- opc = (const mtp3_addr_pc_t*)pinfo->src.data;
- break;
- case P2P_DIR_RECV:
- ssn = assoc->called_ssn;
- other_ssn = assoc->calling_ssn;
- dpc = (const mtp3_addr_pc_t*)pinfo->src.data;
- opc = (const mtp3_addr_pc_t*)pinfo->dst.data;
- break;
- default:
- ssn = assoc->called_ssn;
- other_ssn = assoc->calling_ssn;
- dpc = (const mtp3_addr_pc_t*)pinfo->dst.data;
- opc = (const mtp3_addr_pc_t*)pinfo->src.data;
- break;
- }
+ if (assoc) {
+ switch (pinfo->p2p_dir) {
+ case P2P_DIR_SENT:
+ ssn = assoc->calling_ssn;
+ other_ssn = assoc->called_ssn;
+ dpc = (const mtp3_addr_pc_t*)pinfo->dst.data;
+ opc = (const mtp3_addr_pc_t*)pinfo->src.data;
+ break;
+ case P2P_DIR_RECV:
+ ssn = assoc->called_ssn;
+ other_ssn = assoc->calling_ssn;
+ dpc = (const mtp3_addr_pc_t*)pinfo->src.data;
+ opc = (const mtp3_addr_pc_t*)pinfo->dst.data;
+ break;
+ default:
+ ssn = assoc->called_ssn;
+ other_ssn = assoc->calling_ssn;
+ dpc = (const mtp3_addr_pc_t*)pinfo->dst.data;
+ opc = (const mtp3_addr_pc_t*)pinfo->src.data;
+ break;
}
+ }
- if (num_sccp_users && pinfo->src.type == AT_SS7PC) {
- guint i;
- dissector_handle_t handle = NULL;
- gboolean uses_tcap = FALSE;
-
- for (i=0; i < num_sccp_users; i++) {
- sccp_user_t* u = &(sccp_users[i]);
-
- if (!dpc || dpc->ni != u->ni) continue;
-
- if (value_is_in_range(u->called_ssn, ssn) && value_is_in_range(u->called_pc, dpc->pc) ) {
- handle = *(u->handlep);
- uses_tcap = u->uses_tcap;
- break;
- } else if (value_is_in_range(u->called_ssn, other_ssn) && opc && value_is_in_range(u->called_pc, opc->pc) ) {
- handle = *(u->handlep);
- uses_tcap = u->uses_tcap;
- break;
- }
- }
-
- if (handle) {
- if (uses_tcap) {
- call_tcap_dissector(handle, tvb, pinfo, tree);
- } else {
- call_dissector(handle, tvb, pinfo, tree);
- }
- return;
- }
-
- }
-
- if (ssn != INVALID_SSN && dissector_try_uint(sccp_ssn_dissector_table, ssn, tvb, pinfo, tree)) {
- return;
- }
+ if ((num_sccp_users) && (pinfo->src.type == AT_SS7PC)) {
+ guint i;
+ dissector_handle_t handle = NULL;
+ gboolean uses_tcap = FALSE;
- if (other_ssn != INVALID_SSN && dissector_try_uint(sccp_ssn_dissector_table, other_ssn, tvb, pinfo, tree)) {
- return;
- }
+ for (i=0; i < num_sccp_users; i++) {
+ sccp_user_t *u = &(sccp_users[i]);
+
+ if (!dpc || dpc->ni != u->ni) continue;
- /* try heuristic subdissector list to see if there are any takers */
- if (dissector_try_heuristic(heur_subdissector_list, tvb, pinfo, tree)) {
- return;
+ if (value_is_in_range(u->called_ssn, ssn) && value_is_in_range(u->called_pc, dpc->pc) ) {
+ handle = *(u->handlep);
+ uses_tcap = u->uses_tcap;
+ break;
+ } else if (value_is_in_range(u->called_ssn, other_ssn) && opc && value_is_in_range(u->called_pc, opc->pc) ) {
+ handle = *(u->handlep);
+ uses_tcap = u->uses_tcap;
+ break;
+ }
}
- /* try user default subdissector */
- if (default_handle) {
- call_dissector(default_handle, tvb, pinfo, tree);
- return;
+ if (handle) {
+ if (uses_tcap) {
+ call_tcap_dissector(handle, tvb, pinfo, tree);
+ } else {
+ call_dissector(handle, tvb, pinfo, tree);
+ }
+ return;
}
- /* No sub-dissection occured, treat it as raw data */
- call_dissector(data_handle, tvb, pinfo, tree);
+ }
+
+ if ((ssn != INVALID_SSN) && dissector_try_uint(sccp_ssn_dissector_table, ssn, tvb, pinfo, tree)) {
+ return;
+ }
+
+ if ((other_ssn != INVALID_SSN) && dissector_try_uint(sccp_ssn_dissector_table, other_ssn, tvb, pinfo, tree)) {
+ return;
+ }
+
+ /* try heuristic subdissector list to see if there are any takers */
+ if (dissector_try_heuristic(heur_subdissector_list, tvb, pinfo, tree)) {
+ return;
+ }
+
+ /* try user default subdissector */
+ if (default_handle) {
+ call_dissector(default_handle, tvb, pinfo, tree);
+ return;
+ }
+
+ /* No sub-dissection occured, treat it as raw data */
+ call_dissector(data_handle, tvb, pinfo, tree);
}
@@ -2333,8 +2347,8 @@ dissect_sccp_segmentation_param(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
proto_tree *param_tree;
param_item = proto_tree_add_text(tree, tvb, 0, length, "%s",
- val_to_str(PARAMETER_SEGMENTATION,
- sccp_parameter_values, "Unknown: %d"));
+ val_to_str(PARAMETER_SEGMENTATION,
+ sccp_parameter_values, "Unknown: %d"));
param_tree = proto_item_add_subtree(param_item, ett_sccp_segmentation);
proto_tree_add_item(param_tree, hf_sccp_segmentation_first, tvb, 0, 1, ENC_NA);
@@ -2385,39 +2399,39 @@ dissect_sccp_isni_param(tvbuff_t *tvb, proto_tree *tree, guint length)
/* Create a subtree for ISNI Routing Control */
param_item = proto_tree_add_text(tree, tvb, offset, ANSI_ISNI_ROUTING_CONTROL_LENGTH,
- "ISNI Routing Control");
+ "ISNI Routing Control");
param_tree = proto_item_add_subtree(param_item,
- ett_sccp_ansi_isni_routing_control);
+ ett_sccp_ansi_isni_routing_control);
proto_tree_add_item(param_tree, hf_sccp_ansi_isni_mi, tvb, offset,
- ANSI_ISNI_ROUTING_CONTROL_LENGTH, ENC_NA);
+ ANSI_ISNI_ROUTING_CONTROL_LENGTH, ENC_NA);
proto_tree_add_item(param_tree, hf_sccp_ansi_isni_iri, tvb, offset,
- ANSI_ISNI_ROUTING_CONTROL_LENGTH, ENC_NA);
+ ANSI_ISNI_ROUTING_CONTROL_LENGTH, ENC_NA);
ti = tvb_get_guint8(tvb, offset) & ANSI_ISNI_TI_MASK;
proto_tree_add_uint(param_tree, hf_sccp_ansi_isni_ti, tvb, offset,
- ANSI_ISNI_ROUTING_CONTROL_LENGTH, ti);
+ ANSI_ISNI_ROUTING_CONTROL_LENGTH, ti);
proto_tree_add_item(param_tree, hf_sccp_ansi_isni_counter, tvb, offset,
- ANSI_ISNI_ROUTING_CONTROL_LENGTH, ENC_NA);
+ ANSI_ISNI_ROUTING_CONTROL_LENGTH, ENC_NA);
offset += ANSI_ISNI_ROUTING_CONTROL_LENGTH;
if ((ti >> ANSI_ISNI_TI_SHIFT) == ANSI_ISNI_TYPE_1) {
proto_tree_add_uint(param_tree, hf_sccp_ansi_isni_netspec, tvb, offset,
- ANSI_ISNI_ROUTING_CONTROL_LENGTH, ti);
+ ANSI_ISNI_ROUTING_CONTROL_LENGTH, ti);
offset += ANSI_ISNI_ROUTING_CONTROL_LENGTH;
}
while (offset < length) {
proto_tree_add_item(tree, hf_sccp_ansi_isni_network, tvb, offset,
- ANSI_NCM_LENGTH, ENC_NA);
+ ANSI_NCM_LENGTH, ENC_NA);
offset++;
proto_tree_add_item(tree, hf_sccp_ansi_isni_cluster, tvb, offset,
- ANSI_NCM_LENGTH, ENC_NA);
+ ANSI_NCM_LENGTH, ENC_NA);
offset++;
}
@@ -2428,147 +2442,147 @@ dissect_sccp_isni_param(tvbuff_t *tvb, proto_tree *tree, guint length)
*/
static guint16
dissect_sccp_parameter(tvbuff_t *tvb, packet_info *pinfo, proto_tree *sccp_tree,
- proto_tree *tree, guint8 parameter_type, guint16 offset,
- guint16 parameter_length)
+ proto_tree *tree, guint8 parameter_type, guint16 offset,
+ guint16 parameter_length)
{
- tvbuff_t *parameter_tvb;
-
- switch (parameter_type) {
- case PARAMETER_CALLED_PARTY_ADDRESS:
- case PARAMETER_CALLING_PARTY_ADDRESS:
- case PARAMETER_DATA:
- case PARAMETER_LONG_DATA:
- case PARAMETER_SOURCE_LOCAL_REFERENCE:
- case PARAMETER_DESTINATION_LOCAL_REFERENCE:
- case PARAMETER_RELEASE_CAUSE:
- case PARAMETER_RETURN_CAUSE:
- case PARAMETER_RESET_CAUSE:
- case PARAMETER_ERROR_CAUSE:
- case PARAMETER_REFUSAL_CAUSE:
-
- /* These parameters must be dissected even if !sccp_tree (so that
- * assoc information can be created).
- */
- break;
+ tvbuff_t *parameter_tvb;
+
+ switch (parameter_type) {
+ case PARAMETER_CALLED_PARTY_ADDRESS:
+ case PARAMETER_CALLING_PARTY_ADDRESS:
+ case PARAMETER_DATA:
+ case PARAMETER_LONG_DATA:
+ case PARAMETER_SOURCE_LOCAL_REFERENCE:
+ case PARAMETER_DESTINATION_LOCAL_REFERENCE:
+ case PARAMETER_RELEASE_CAUSE:
+ case PARAMETER_RETURN_CAUSE:
+ case PARAMETER_RESET_CAUSE:
+ case PARAMETER_ERROR_CAUSE:
+ case PARAMETER_REFUSAL_CAUSE:
+
+ /* These parameters must be dissected even if !sccp_tree (so that
+ * assoc information can be created).
+ */
+ break;
- default:
- if (!sccp_tree) return(parameter_length);
+ default:
+ if (!sccp_tree) return(parameter_length);
- }
+ }
- parameter_tvb = tvb_new_subset(tvb, offset, parameter_length, parameter_length);
+ parameter_tvb = tvb_new_subset(tvb, offset, parameter_length, parameter_length);
- switch (parameter_type) {
+ switch (parameter_type) {
- case PARAMETER_END_OF_OPTIONAL_PARAMETERS:
- proto_tree_add_text(sccp_tree, tvb, offset, parameter_length,
- "End of Optional");
- break;
+ case PARAMETER_END_OF_OPTIONAL_PARAMETERS:
+ proto_tree_add_text(sccp_tree, tvb, offset, parameter_length,
+ "End of Optional");
+ break;
- case PARAMETER_DESTINATION_LOCAL_REFERENCE:
- dissect_sccp_dlr_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
- break;
+ case PARAMETER_DESTINATION_LOCAL_REFERENCE:
+ dissect_sccp_dlr_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
+ break;
- case PARAMETER_SOURCE_LOCAL_REFERENCE:
- dissect_sccp_slr_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
- break;
+ case PARAMETER_SOURCE_LOCAL_REFERENCE:
+ dissect_sccp_slr_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
+ break;
- case PARAMETER_CALLED_PARTY_ADDRESS:
- dissect_sccp_called_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
- break;
+ case PARAMETER_CALLED_PARTY_ADDRESS:
+ dissect_sccp_called_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
+ break;
- case PARAMETER_CALLING_PARTY_ADDRESS:
- dissect_sccp_calling_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
- break;
+ case PARAMETER_CALLING_PARTY_ADDRESS:
+ dissect_sccp_calling_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
+ break;
- case PARAMETER_CLASS:
- dissect_sccp_class_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
- break;
+ case PARAMETER_CLASS:
+ dissect_sccp_class_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
+ break;
- case PARAMETER_SEGMENTING_REASSEMBLING:
- dissect_sccp_segmenting_reassembling_param(parameter_tvb, pinfo, sccp_tree,
- parameter_length);
- break;
+ case PARAMETER_SEGMENTING_REASSEMBLING:
+ dissect_sccp_segmenting_reassembling_param(parameter_tvb, pinfo, sccp_tree,
+ parameter_length);
+ break;
- case PARAMETER_RECEIVE_SEQUENCE_NUMBER:
- dissect_sccp_receive_sequence_number_param(parameter_tvb, pinfo, sccp_tree,
- parameter_length);
- break;
+ case PARAMETER_RECEIVE_SEQUENCE_NUMBER:
+ dissect_sccp_receive_sequence_number_param(parameter_tvb, pinfo, sccp_tree,
+ parameter_length);
+ break;
- case PARAMETER_SEQUENCING_SEGMENTING:
- dissect_sccp_sequencing_segmenting_param(parameter_tvb, sccp_tree,
- parameter_length);
- break;
+ case PARAMETER_SEQUENCING_SEGMENTING:
+ dissect_sccp_sequencing_segmenting_param(parameter_tvb, sccp_tree,
+ parameter_length);
+ break;
- case PARAMETER_CREDIT:
- dissect_sccp_credit_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
- break;
+ case PARAMETER_CREDIT:
+ dissect_sccp_credit_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
+ break;
- case PARAMETER_RELEASE_CAUSE:
- dissect_sccp_release_cause_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
- break;
+ case PARAMETER_RELEASE_CAUSE:
+ dissect_sccp_release_cause_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
+ break;
- case PARAMETER_RETURN_CAUSE:
- dissect_sccp_return_cause_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
- break;
+ case PARAMETER_RETURN_CAUSE:
+ dissect_sccp_return_cause_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
+ break;
- case PARAMETER_RESET_CAUSE:
- dissect_sccp_reset_cause_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
- break;
+ case PARAMETER_RESET_CAUSE:
+ dissect_sccp_reset_cause_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
+ break;
- case PARAMETER_ERROR_CAUSE:
- dissect_sccp_error_cause_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
- break;
+ case PARAMETER_ERROR_CAUSE:
+ dissect_sccp_error_cause_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
+ break;
- case PARAMETER_REFUSAL_CAUSE:
- dissect_sccp_refusal_cause_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
- break;
+ case PARAMETER_REFUSAL_CAUSE:
+ dissect_sccp_refusal_cause_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
+ break;
- case PARAMETER_DATA:
- dissect_sccp_data_param(parameter_tvb, pinfo, tree);
+ case PARAMETER_DATA:
+ dissect_sccp_data_param(parameter_tvb, pinfo, tree);
- /* TODO? Re-adjust length of SCCP item since it may be sub-dissected */
- /* sccp_length = proto_item_get_len(sccp_item);
- * sccp_length -= parameter_length;
- * proto_item_set_len(sccp_item, sccp_length);
- */
- break;
+ /* TODO? Re-adjust length of SCCP item since it may be sub-dissected */
+ /* sccp_length = proto_item_get_len(sccp_item);
+ * sccp_length -= parameter_length;
+ * proto_item_set_len(sccp_item, sccp_length);
+ */
+ break;
- case PARAMETER_SEGMENTATION:
- dissect_sccp_segmentation_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
- break;
+ case PARAMETER_SEGMENTATION:
+ dissect_sccp_segmentation_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
+ break;
- case PARAMETER_HOP_COUNTER:
- dissect_sccp_hop_counter_param(parameter_tvb, sccp_tree, parameter_length);
- break;
+ case PARAMETER_HOP_COUNTER:
+ dissect_sccp_hop_counter_param(parameter_tvb, sccp_tree, parameter_length);
+ break;
- case PARAMETER_IMPORTANCE:
- if (decode_mtp3_standard != ANSI_STANDARD)
- dissect_sccp_importance_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
- else
- dissect_sccp_unknown_param(parameter_tvb, sccp_tree, parameter_type,
- parameter_length);
- break;
+ case PARAMETER_IMPORTANCE:
+ if (decode_mtp3_standard != ANSI_STANDARD)
+ dissect_sccp_importance_param(parameter_tvb, pinfo, sccp_tree, parameter_length);
+ else
+ dissect_sccp_unknown_param(parameter_tvb, sccp_tree, parameter_type,
+ parameter_length);
+ break;
- case PARAMETER_LONG_DATA:
- dissect_sccp_data_param(parameter_tvb, pinfo, tree);
- break;
+ case PARAMETER_LONG_DATA:
+ dissect_sccp_data_param(parameter_tvb, pinfo, tree);
+ break;
- case PARAMETER_ISNI:
- if (decode_mtp3_standard != ANSI_STANDARD)
- dissect_sccp_unknown_param(parameter_tvb, sccp_tree, parameter_type,
- parameter_length);
- else
- dissect_sccp_isni_param(parameter_tvb, sccp_tree, parameter_length);
- break;
+ case PARAMETER_ISNI:
+ if (decode_mtp3_standard != ANSI_STANDARD)
+ dissect_sccp_unknown_param(parameter_tvb, sccp_tree, parameter_type,
+ parameter_length);
+ else
+ dissect_sccp_isni_param(parameter_tvb, sccp_tree, parameter_length);
+ break;
- default:
- dissect_sccp_unknown_param(parameter_tvb, sccp_tree, parameter_type,
- parameter_length);
- break;
- }
+ default:
+ dissect_sccp_unknown_param(parameter_tvb, sccp_tree, parameter_type,
+ parameter_length);
+ break;
+ }
- return(parameter_length);
+ return(parameter_length);
}
/* FUNCTION dissect_sccp_variable_parameter():
@@ -2578,11 +2592,11 @@ dissect_sccp_parameter(tvbuff_t *tvb, packet_info *pinfo, proto_tree *sccp_tree,
*/
static guint16
dissect_sccp_variable_parameter(tvbuff_t *tvb, packet_info *pinfo,
- proto_tree *sccp_tree, proto_tree *tree,
- guint8 parameter_type, guint16 offset)
+ proto_tree *sccp_tree, proto_tree *tree,
+ guint8 parameter_type, guint16 offset)
{
- guint16 parameter_length;
- guint8 length_length;
+ guint16 parameter_length;
+ guint8 length_length;
proto_item *pi;
if (parameter_type != PARAMETER_LONG_DATA) {
@@ -2595,10 +2609,10 @@ dissect_sccp_variable_parameter(tvbuff_t *tvb, packet_info *pinfo,
}
pi = proto_tree_add_uint_format(sccp_tree, hf_sccp_param_length, tvb, offset,
- length_length, parameter_length, "%s length: %d",
- val_to_str(parameter_type, sccp_parameter_values,
- "Unknown: %d"),
- parameter_length);
+ length_length, parameter_length, "%s length: %d",
+ val_to_str(parameter_type, sccp_parameter_values,
+ "Unknown: %d"),
+ parameter_length);
if (!sccp_show_length) {
/* The user doesn't want to see it... */
PROTO_ITEM_SET_HIDDEN(pi);
@@ -2607,7 +2621,7 @@ dissect_sccp_variable_parameter(tvbuff_t *tvb, packet_info *pinfo,
offset += length_length;
dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree, parameter_type, offset,
- parameter_length);
+ parameter_length);
return(parameter_length + length_length);
}
@@ -2618,76 +2632,80 @@ dissect_sccp_variable_parameter(tvbuff_t *tvb, packet_info *pinfo,
*/
static void
dissect_sccp_optional_parameters(tvbuff_t *tvb, packet_info *pinfo,
- proto_tree *sccp_tree, proto_tree *tree,
- guint16 offset)
+ proto_tree *sccp_tree, proto_tree *tree,
+ guint16 offset)
{
guint8 parameter_type;
while ((parameter_type = tvb_get_guint8(tvb, offset)) !=
- PARAMETER_END_OF_OPTIONAL_PARAMETERS) {
+ PARAMETER_END_OF_OPTIONAL_PARAMETERS) {
offset += PARAMETER_TYPE_LENGTH;
offset += dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
- parameter_type, offset);
+ parameter_type, offset);
}
/* Process end of optional parameters */
dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree, parameter_type, offset,
- END_OF_OPTIONAL_PARAMETERS_LENGTH);
+ END_OF_OPTIONAL_PARAMETERS_LENGTH);
}
static sccp_msg_info_t *
-new_ud_msg(packet_info* pinfo, guint32 msg_type _U_)
+new_ud_msg(packet_info *pinfo, guint32 msg_type _U_)
{
- sccp_msg_info_t* m = ep_alloc0(sizeof(sccp_msg_info_t));
- m->framenum = PINFO_FD_NUM(pinfo);
- m->data.ud.calling_gt = NULL;
- m->data.ud.called_gt = NULL;
+ sccp_msg_info_t *m = ep_alloc0(sizeof(sccp_msg_info_t));
+ m->framenum = PINFO_FD_NUM(pinfo);
+ m->data.ud.calling_gt = NULL;
+ m->data.ud.called_gt = NULL;
- register_frame_end_routine(reset_sccp_assoc);
- return m;
+ register_frame_end_routine(reset_sccp_assoc);
+ return m;
}
static void
dissect_sccp_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *sccp_tree,
- proto_tree *tree)
+ proto_tree *tree)
{
- guint16 variable_pointer1 = 0, variable_pointer2 = 0, variable_pointer3 = 0;
- guint16 optional_pointer = 0, orig_opt_ptr = 0;
- guint16 offset = 0;
- gboolean save_fragmented;
+ guint16 variable_pointer1 = 0, variable_pointer2 = 0, variable_pointer3 = 0;
+ guint16 optional_pointer = 0, orig_opt_ptr = 0;
+ guint16 offset = 0;
+ gboolean save_fragmented;
tvbuff_t *new_tvb = NULL;
fragment_data *frag_msg = NULL;
- guint32 source_local_ref=0;
- guint8 more;
- guint msg_offset = tvb_offset_from_real_beginning(tvb);
+ guint32 source_local_ref = 0;
+ guint8 more;
+ guint msg_offset = tvb_offset_from_real_beginning(tvb);
/* Macro for getting pointer to mandatory variable parameters */
#define VARIABLE_POINTER(var, hf_var, ptr_size) \
- if (ptr_size == POINTER_LENGTH) \
- var = tvb_get_guint8(tvb, offset); \
- else \
- var = tvb_get_letohs(tvb, offset); \
+ do { \
+ if (ptr_size == POINTER_LENGTH) \
+ var = tvb_get_guint8(tvb, offset); \
+ else \
+ var = tvb_get_letohs(tvb, offset); \
proto_tree_add_uint(sccp_tree, hf_var, tvb, \
- offset, ptr_size, var); \
- var += offset; \
- if (ptr_size == POINTER_LENGTH_LONG) \
- var += 1; \
- offset += ptr_size;
+ offset, ptr_size, var); \
+ var += offset; \
+ if (ptr_size == POINTER_LENGTH_LONG) \
+ var += 1; \
+ offset += ptr_size; \
+ } while (0)
/* Macro for getting pointer to optional parameters */
-#define OPTIONAL_POINTER(ptr_size) \
- if (ptr_size == POINTER_LENGTH) \
- orig_opt_ptr = optional_pointer = tvb_get_guint8(tvb, offset); \
- else \
- orig_opt_ptr = optional_pointer = tvb_get_letohs(tvb, offset); \
- proto_tree_add_uint(sccp_tree, hf_sccp_optional_pointer, tvb, \
- offset, ptr_size, optional_pointer); \
- optional_pointer += offset; \
- if (ptr_size == POINTER_LENGTH_LONG) \
- optional_pointer += 1; \
- offset += ptr_size;
+#define OPTIONAL_POINTER(ptr_size) \
+ do { \
+ if (ptr_size == POINTER_LENGTH) \
+ orig_opt_ptr = optional_pointer = tvb_get_guint8(tvb, offset); \
+ else \
+ orig_opt_ptr = optional_pointer = tvb_get_letohs(tvb, offset); \
+ proto_tree_add_uint(sccp_tree, hf_sccp_optional_pointer, tvb, \
+ offset, ptr_size, optional_pointer); \
+ optional_pointer += offset; \
+ if (ptr_size == POINTER_LENGTH_LONG) \
+ optional_pointer += 1; \
+ offset += ptr_size; \
+ } while (0)
/* Extract the message type; all other processing is based on this */
@@ -2702,51 +2720,51 @@ dissect_sccp_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *sccp_tree,
* put that info there should call col_set_fence() to protect it.
*/
col_add_fstr(pinfo->cinfo, COL_INFO, "%s ",
- val_to_str(message_type, sccp_message_type_acro_values, "Unknown: %d"));
+ val_to_str(message_type, sccp_message_type_acro_values, "Unknown: %d"));
if (sccp_tree) {
/* add the message type to the protocol tree */
proto_tree_add_uint(sccp_tree, hf_sccp_message_type, tvb,
- SCCP_MSG_TYPE_OFFSET, SCCP_MSG_TYPE_LENGTH, message_type);
+ SCCP_MSG_TYPE_OFFSET, SCCP_MSG_TYPE_LENGTH, message_type);
};
/* Starting a new message dissection; clear the global assoc, SLR, and DLR values */
- dlr = INVALID_LR;
- slr = INVALID_LR;
+ dlr = INVALID_LR;
+ slr = INVALID_LR;
assoc = NULL;
- no_assoc.calling_dpc = 0;
- no_assoc.called_dpc = 0;
- no_assoc.calling_ssn = INVALID_SSN;
- no_assoc.called_ssn = INVALID_SSN;
- no_assoc.has_fw_key = FALSE;
- no_assoc.has_bw_key = FALSE;
- no_assoc.payload = SCCP_PLOAD_NONE;
- no_assoc.called_party = NULL;
+ no_assoc.calling_dpc = 0;
+ no_assoc.called_dpc = 0;
+ no_assoc.calling_ssn = INVALID_SSN;
+ no_assoc.called_ssn = INVALID_SSN;
+ no_assoc.has_fw_key = FALSE;
+ no_assoc.has_bw_key = FALSE;
+ no_assoc.payload = SCCP_PLOAD_NONE;
+ no_assoc.called_party = NULL;
no_assoc.calling_party = NULL;
- no_assoc.extra_info = NULL;
+ no_assoc.extra_info = NULL;
- switch(message_type) {
+ switch (message_type) {
case SCCP_MSG_TYPE_CR:
- /* TTC and NTT (Japan) say that the connection-oriented messages are
- * deleted (not standardized), but they appear to be used anyway, so
- * we'll dissect it...
- */
+ /* TTC and NTT (Japan) say that the connection-oriented messages are
+ * deleted (not standardized), but they appear to be used anyway, so
+ * we'll dissect it...
+ */
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_SOURCE_LOCAL_REFERENCE,
- offset, SOURCE_LOCAL_REFERENCE_LENGTH);
+ PARAMETER_SOURCE_LOCAL_REFERENCE,
+ offset, SOURCE_LOCAL_REFERENCE_LENGTH);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CLASS, offset,
- PROTOCOL_CLASS_LENGTH);
+ PARAMETER_CLASS, offset,
+ PROTOCOL_CLASS_LENGTH);
assoc = get_sccp_assoc(pinfo, msg_offset, slr, dlr, message_type);
- VARIABLE_POINTER(variable_pointer1, hf_sccp_variable_pointer1, POINTER_LENGTH)
- OPTIONAL_POINTER(POINTER_LENGTH)
+ VARIABLE_POINTER(variable_pointer1, hf_sccp_variable_pointer1, POINTER_LENGTH);
+ OPTIONAL_POINTER(POINTER_LENGTH);
dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CALLED_PARTY_ADDRESS,
- variable_pointer1);
+ PARAMETER_CALLED_PARTY_ADDRESS,
+ variable_pointer1);
break;
case SCCP_MSG_TYPE_CC:
@@ -2757,49 +2775,49 @@ dissect_sccp_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *sccp_tree,
* sub-dissected).
*/
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_DESTINATION_LOCAL_REFERENCE,
- offset,
- DESTINATION_LOCAL_REFERENCE_LENGTH);
+ PARAMETER_DESTINATION_LOCAL_REFERENCE,
+ offset,
+ DESTINATION_LOCAL_REFERENCE_LENGTH);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_SOURCE_LOCAL_REFERENCE,
- offset, SOURCE_LOCAL_REFERENCE_LENGTH);
+ PARAMETER_SOURCE_LOCAL_REFERENCE,
+ offset, SOURCE_LOCAL_REFERENCE_LENGTH);
assoc = get_sccp_assoc(pinfo, msg_offset, slr, dlr, message_type);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CLASS, offset,
- PROTOCOL_CLASS_LENGTH);
+ PARAMETER_CLASS, offset,
+ PROTOCOL_CLASS_LENGTH);
OPTIONAL_POINTER(POINTER_LENGTH);
break;
case SCCP_MSG_TYPE_CREF:
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_DESTINATION_LOCAL_REFERENCE,
- offset,
- DESTINATION_LOCAL_REFERENCE_LENGTH);
+ PARAMETER_DESTINATION_LOCAL_REFERENCE,
+ offset,
+ DESTINATION_LOCAL_REFERENCE_LENGTH);
assoc = get_sccp_assoc(pinfo, msg_offset, slr, dlr, message_type);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_REFUSAL_CAUSE, offset,
- REFUSAL_CAUSE_LENGTH);
+ PARAMETER_REFUSAL_CAUSE, offset,
+ REFUSAL_CAUSE_LENGTH);
OPTIONAL_POINTER(POINTER_LENGTH);
break;
case SCCP_MSG_TYPE_RLSD:
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_DESTINATION_LOCAL_REFERENCE,
- offset,
- DESTINATION_LOCAL_REFERENCE_LENGTH);
+ PARAMETER_DESTINATION_LOCAL_REFERENCE,
+ offset,
+ DESTINATION_LOCAL_REFERENCE_LENGTH);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_SOURCE_LOCAL_REFERENCE,
- offset, SOURCE_LOCAL_REFERENCE_LENGTH);
+ PARAMETER_SOURCE_LOCAL_REFERENCE,
+ offset, SOURCE_LOCAL_REFERENCE_LENGTH);
assoc = get_sccp_assoc(pinfo, msg_offset, slr, dlr, message_type);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_RELEASE_CAUSE, offset,
- RELEASE_CAUSE_LENGTH);
+ PARAMETER_RELEASE_CAUSE, offset,
+ RELEASE_CAUSE_LENGTH);
OPTIONAL_POINTER(POINTER_LENGTH);
assoc = get_sccp_assoc(pinfo, msg_offset, slr, dlr, message_type);
@@ -2807,12 +2825,12 @@ dissect_sccp_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *sccp_tree,
case SCCP_MSG_TYPE_RLC:
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_DESTINATION_LOCAL_REFERENCE,
- offset,
- DESTINATION_LOCAL_REFERENCE_LENGTH);
+ PARAMETER_DESTINATION_LOCAL_REFERENCE,
+ offset,
+ DESTINATION_LOCAL_REFERENCE_LENGTH);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_SOURCE_LOCAL_REFERENCE,
- offset, SOURCE_LOCAL_REFERENCE_LENGTH);
+ PARAMETER_SOURCE_LOCAL_REFERENCE,
+ offset, SOURCE_LOCAL_REFERENCE_LENGTH);
assoc = get_sccp_assoc(pinfo, msg_offset, slr, dlr, message_type);
break;
@@ -2820,52 +2838,52 @@ dissect_sccp_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *sccp_tree,
case SCCP_MSG_TYPE_DT1:
source_local_ref = tvb_get_letoh24(tvb, offset);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_DESTINATION_LOCAL_REFERENCE,
- offset,
- DESTINATION_LOCAL_REFERENCE_LENGTH);
+ PARAMETER_DESTINATION_LOCAL_REFERENCE,
+ offset,
+ DESTINATION_LOCAL_REFERENCE_LENGTH);
assoc = get_sccp_assoc(pinfo, msg_offset, slr, dlr, message_type);
more = tvb_get_guint8(tvb, offset) & SEGMENTING_REASSEMBLING_MASK;
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_SEGMENTING_REASSEMBLING,
- offset, SEGMENTING_REASSEMBLING_LENGTH);
- VARIABLE_POINTER(variable_pointer1, hf_sccp_variable_pointer1, POINTER_LENGTH)
+ PARAMETER_SEGMENTING_REASSEMBLING,
+ offset, SEGMENTING_REASSEMBLING_LENGTH);
+ VARIABLE_POINTER(variable_pointer1, hf_sccp_variable_pointer1, POINTER_LENGTH);
/* Reassemble */
if (!sccp_xudt_desegment) {
- proto_tree_add_text(sccp_tree, tvb, variable_pointer1,
- tvb_get_guint8(tvb, variable_pointer1)+1,
- "Segmented Data");
- dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_DATA, variable_pointer1);
+ proto_tree_add_text(sccp_tree, tvb, variable_pointer1,
+ tvb_get_guint8(tvb, variable_pointer1)+1,
+ "Segmented Data");
+ dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
+ PARAMETER_DATA, variable_pointer1);
} else {
- save_fragmented = pinfo->fragmented;
- pinfo->fragmented = TRUE;
- frag_msg = fragment_add_seq_next(tvb, variable_pointer1 + 1, pinfo,
- source_local_ref, /* ID for fragments belonging together */
- sccp_xudt_msg_fragment_table, /* list of message fragments */
- sccp_xudt_msg_reassembled_table, /* list of reassembled messages */
- tvb_get_guint8(tvb,variable_pointer1), /* fragment length - to the end */
- more); /* More fragments? */
-
- new_tvb = process_reassembled_data(tvb, variable_pointer1 + 1, pinfo,
- "Reassembled SCCP", frag_msg,
- &sccp_xudt_msg_frag_items, NULL,
- tree);
-
- if (frag_msg && frag_msg->next) { /* Reassembled */
- col_append_str(pinfo->cinfo, COL_INFO, "(Message reassembled) ");
- } else if (more) { /* Not last packet of reassembled message */
- col_append_str(pinfo->cinfo, COL_INFO, "(Message fragment) ");
- }
-
- pinfo->fragmented = save_fragmented;
-
- if (new_tvb)
- dissect_sccp_data_param(new_tvb, pinfo, tree);
+ save_fragmented = pinfo->fragmented;
+ pinfo->fragmented = TRUE;
+ frag_msg = fragment_add_seq_next(tvb, variable_pointer1 + 1, pinfo,
+ source_local_ref, /* ID for fragments belonging together */
+ sccp_xudt_msg_fragment_table, /* list of message fragments */
+ sccp_xudt_msg_reassembled_table, /* list of reassembled messages */
+ tvb_get_guint8(tvb,variable_pointer1), /* fragment length - to the end */
+ more); /* More fragments? */
+
+ new_tvb = process_reassembled_data(tvb, variable_pointer1 + 1, pinfo,
+ "Reassembled SCCP", frag_msg,
+ &sccp_xudt_msg_frag_items, NULL,
+ tree);
+
+ if (frag_msg && frag_msg->next) { /* Reassembled */
+ col_append_str(pinfo->cinfo, COL_INFO, "(Message reassembled) ");
+ } else if (more) { /* Not last packet of reassembled message */
+ col_append_str(pinfo->cinfo, COL_INFO, "(Message fragment) ");
+ }
+
+ pinfo->fragmented = save_fragmented;
+
+ if (new_tvb)
+ dissect_sccp_data_param(new_tvb, pinfo, tree);
}
/* End reassemble */
@@ -2873,53 +2891,53 @@ dissect_sccp_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *sccp_tree,
case SCCP_MSG_TYPE_DT2:
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_DESTINATION_LOCAL_REFERENCE,
- offset,
- DESTINATION_LOCAL_REFERENCE_LENGTH);
+ PARAMETER_DESTINATION_LOCAL_REFERENCE,
+ offset,
+ DESTINATION_LOCAL_REFERENCE_LENGTH);
assoc = get_sccp_assoc(pinfo, msg_offset, slr, dlr, message_type);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_SEQUENCING_SEGMENTING, offset,
- SEQUENCING_SEGMENTING_LENGTH);
+ PARAMETER_SEQUENCING_SEGMENTING, offset,
+ SEQUENCING_SEGMENTING_LENGTH);
break;
case SCCP_MSG_TYPE_AK:
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_DESTINATION_LOCAL_REFERENCE,
- offset,
- DESTINATION_LOCAL_REFERENCE_LENGTH);
+ PARAMETER_DESTINATION_LOCAL_REFERENCE,
+ offset,
+ DESTINATION_LOCAL_REFERENCE_LENGTH);
assoc = get_sccp_assoc(pinfo, msg_offset, slr, dlr, message_type);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_RECEIVE_SEQUENCE_NUMBER,
- offset, RECEIVE_SEQUENCE_NUMBER_LENGTH);
+ PARAMETER_RECEIVE_SEQUENCE_NUMBER,
+ offset, RECEIVE_SEQUENCE_NUMBER_LENGTH);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CREDIT, offset, CREDIT_LENGTH);
+ PARAMETER_CREDIT, offset, CREDIT_LENGTH);
break;
case SCCP_MSG_TYPE_UDT:
pinfo->sccp_info = sccp_msg = new_ud_msg(pinfo,message_type);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CLASS, offset,
- PROTOCOL_CLASS_LENGTH);
- VARIABLE_POINTER(variable_pointer1, hf_sccp_variable_pointer1, POINTER_LENGTH)
- VARIABLE_POINTER(variable_pointer2, hf_sccp_variable_pointer2, POINTER_LENGTH)
- VARIABLE_POINTER(variable_pointer3, hf_sccp_variable_pointer3, POINTER_LENGTH)
+ PARAMETER_CLASS, offset,
+ PROTOCOL_CLASS_LENGTH);
+ VARIABLE_POINTER(variable_pointer1, hf_sccp_variable_pointer1, POINTER_LENGTH);
+ VARIABLE_POINTER(variable_pointer2, hf_sccp_variable_pointer2, POINTER_LENGTH);
+ VARIABLE_POINTER(variable_pointer3, hf_sccp_variable_pointer3, POINTER_LENGTH);
assoc = get_sccp_assoc(pinfo, msg_offset, slr, dlr, message_type);
dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CALLED_PARTY_ADDRESS,
- variable_pointer1);
+ PARAMETER_CALLED_PARTY_ADDRESS,
+ variable_pointer1);
dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CALLING_PARTY_ADDRESS,
- variable_pointer2);
+ PARAMETER_CALLING_PARTY_ADDRESS,
+ variable_pointer2);
dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree, PARAMETER_DATA,
- variable_pointer3);
+ variable_pointer3);
break;
case SCCP_MSG_TYPE_UDTS:
@@ -2930,189 +2948,189 @@ dissect_sccp_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *sccp_tree,
pinfo->sccp_info = sccp_msg = new_ud_msg(pinfo,message_type);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_RETURN_CAUSE, offset,
- RETURN_CAUSE_LENGTH);
+ PARAMETER_RETURN_CAUSE, offset,
+ RETURN_CAUSE_LENGTH);
- VARIABLE_POINTER(variable_pointer1, hf_sccp_variable_pointer1, POINTER_LENGTH)
- VARIABLE_POINTER(variable_pointer2, hf_sccp_variable_pointer2, POINTER_LENGTH)
- VARIABLE_POINTER(variable_pointer3, hf_sccp_variable_pointer3, POINTER_LENGTH)
+ VARIABLE_POINTER(variable_pointer1, hf_sccp_variable_pointer1, POINTER_LENGTH);
+ VARIABLE_POINTER(variable_pointer2, hf_sccp_variable_pointer2, POINTER_LENGTH);
+ VARIABLE_POINTER(variable_pointer3, hf_sccp_variable_pointer3, POINTER_LENGTH);
assoc = get_sccp_assoc(pinfo, msg_offset, slr, dlr, message_type);
dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CALLED_PARTY_ADDRESS,
- variable_pointer1);
+ PARAMETER_CALLED_PARTY_ADDRESS,
+ variable_pointer1);
dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CALLING_PARTY_ADDRESS,
- variable_pointer2);
+ PARAMETER_CALLING_PARTY_ADDRESS,
+ variable_pointer2);
dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree, PARAMETER_DATA,
- variable_pointer3);
+ variable_pointer3);
pinfo->flags.in_error_pkt = save_in_error_pkt;
break;
}
case SCCP_MSG_TYPE_ED:
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_DESTINATION_LOCAL_REFERENCE,
- offset,
- DESTINATION_LOCAL_REFERENCE_LENGTH);
+ PARAMETER_DESTINATION_LOCAL_REFERENCE,
+ offset,
+ DESTINATION_LOCAL_REFERENCE_LENGTH);
assoc = get_sccp_assoc(pinfo, msg_offset, slr, dlr, message_type);
VARIABLE_POINTER(variable_pointer1, hf_sccp_variable_pointer1, POINTER_LENGTH);
dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree, PARAMETER_DATA,
- variable_pointer1);
+ variable_pointer1);
break;
case SCCP_MSG_TYPE_EA:
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_DESTINATION_LOCAL_REFERENCE,
- offset,
- DESTINATION_LOCAL_REFERENCE_LENGTH);
+ PARAMETER_DESTINATION_LOCAL_REFERENCE,
+ offset,
+ DESTINATION_LOCAL_REFERENCE_LENGTH);
assoc = get_sccp_assoc(pinfo, msg_offset, slr, dlr, message_type);
break;
case SCCP_MSG_TYPE_RSR:
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_DESTINATION_LOCAL_REFERENCE,
- offset,
- DESTINATION_LOCAL_REFERENCE_LENGTH);
+ PARAMETER_DESTINATION_LOCAL_REFERENCE,
+ offset,
+ DESTINATION_LOCAL_REFERENCE_LENGTH);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_SOURCE_LOCAL_REFERENCE,
- offset, SOURCE_LOCAL_REFERENCE_LENGTH);
+ PARAMETER_SOURCE_LOCAL_REFERENCE,
+ offset, SOURCE_LOCAL_REFERENCE_LENGTH);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_RESET_CAUSE, offset,
- RESET_CAUSE_LENGTH);
+ PARAMETER_RESET_CAUSE, offset,
+ RESET_CAUSE_LENGTH);
assoc = get_sccp_assoc(pinfo, msg_offset, slr, dlr, message_type);
break;
case SCCP_MSG_TYPE_RSC:
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_DESTINATION_LOCAL_REFERENCE,
- offset,
- DESTINATION_LOCAL_REFERENCE_LENGTH);
+ PARAMETER_DESTINATION_LOCAL_REFERENCE,
+ offset,
+ DESTINATION_LOCAL_REFERENCE_LENGTH);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_SOURCE_LOCAL_REFERENCE,
- offset, SOURCE_LOCAL_REFERENCE_LENGTH);
+ PARAMETER_SOURCE_LOCAL_REFERENCE,
+ offset, SOURCE_LOCAL_REFERENCE_LENGTH);
assoc = get_sccp_assoc(pinfo, msg_offset, slr, dlr, message_type);
break;
case SCCP_MSG_TYPE_ERR:
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_DESTINATION_LOCAL_REFERENCE,
- offset,
- DESTINATION_LOCAL_REFERENCE_LENGTH);
+ PARAMETER_DESTINATION_LOCAL_REFERENCE,
+ offset,
+ DESTINATION_LOCAL_REFERENCE_LENGTH);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_ERROR_CAUSE, offset,
- ERROR_CAUSE_LENGTH);
+ PARAMETER_ERROR_CAUSE, offset,
+ ERROR_CAUSE_LENGTH);
assoc = get_sccp_assoc(pinfo, msg_offset, slr, dlr, message_type);
break;
case SCCP_MSG_TYPE_IT:
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_DESTINATION_LOCAL_REFERENCE,
- offset,
- DESTINATION_LOCAL_REFERENCE_LENGTH);
+ PARAMETER_DESTINATION_LOCAL_REFERENCE,
+ offset,
+ DESTINATION_LOCAL_REFERENCE_LENGTH);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_SOURCE_LOCAL_REFERENCE,
- offset, SOURCE_LOCAL_REFERENCE_LENGTH);
+ PARAMETER_SOURCE_LOCAL_REFERENCE,
+ offset, SOURCE_LOCAL_REFERENCE_LENGTH);
assoc = get_sccp_assoc(pinfo, msg_offset, slr, dlr, message_type);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CLASS, offset,
- PROTOCOL_CLASS_LENGTH);
+ PARAMETER_CLASS, offset,
+ PROTOCOL_CLASS_LENGTH);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_SEQUENCING_SEGMENTING,
- offset, SEQUENCING_SEGMENTING_LENGTH);
+ PARAMETER_SEQUENCING_SEGMENTING,
+ offset, SEQUENCING_SEGMENTING_LENGTH);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CREDIT, offset, CREDIT_LENGTH);
+ PARAMETER_CREDIT, offset, CREDIT_LENGTH);
break;
case SCCP_MSG_TYPE_XUDT:
pinfo->sccp_info = sccp_msg = new_ud_msg(pinfo,message_type);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CLASS, offset,
- PROTOCOL_CLASS_LENGTH);
+ PARAMETER_CLASS, offset,
+ PROTOCOL_CLASS_LENGTH);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_HOP_COUNTER, offset,
- HOP_COUNTER_LENGTH);
+ PARAMETER_HOP_COUNTER, offset,
+ HOP_COUNTER_LENGTH);
- VARIABLE_POINTER(variable_pointer1, hf_sccp_variable_pointer1, POINTER_LENGTH)
- VARIABLE_POINTER(variable_pointer2, hf_sccp_variable_pointer2, POINTER_LENGTH)
- VARIABLE_POINTER(variable_pointer3, hf_sccp_variable_pointer3, POINTER_LENGTH)
- OPTIONAL_POINTER(POINTER_LENGTH)
+ VARIABLE_POINTER(variable_pointer1, hf_sccp_variable_pointer1, POINTER_LENGTH);
+ VARIABLE_POINTER(variable_pointer2, hf_sccp_variable_pointer2, POINTER_LENGTH);
+ VARIABLE_POINTER(variable_pointer3, hf_sccp_variable_pointer3, POINTER_LENGTH);
+ OPTIONAL_POINTER(POINTER_LENGTH);
- /* Optional parameters are Segmentation and Importance
- * NOTE 2 - Segmentation Should not be present in case of a single XUDT
- * message.
- */
+ /* Optional parameters are Segmentation and Importance
+ * NOTE 2 - Segmentation Should not be present in case of a single XUDT
+ * message.
+ */
assoc = get_sccp_assoc(pinfo, msg_offset, slr, dlr, message_type);
dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CALLED_PARTY_ADDRESS,
- variable_pointer1);
+ PARAMETER_CALLED_PARTY_ADDRESS,
+ variable_pointer1);
dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CALLING_PARTY_ADDRESS,
- variable_pointer2);
+ PARAMETER_CALLING_PARTY_ADDRESS,
+ variable_pointer2);
if (tvb_get_guint8(tvb, optional_pointer) == PARAMETER_SEGMENTATION) {
- if (!sccp_xudt_desegment){
- proto_tree_add_text(sccp_tree, tvb, variable_pointer3, tvb_get_guint8(tvb, variable_pointer3)+1, "Segmented Data");
- } else {
- guint8 octet;
- gboolean more_frag = TRUE;
-
- /* Get the first octet of parameter Segmentation, Ch 3.17 in Q.713
- * Bit 8 of octet 1 is used for First segment indication
- * Bit 7 of octet 1 is used to keep in the message in sequence
- * delivery option required by the SCCP user
- * Bits 6 and 5 in octet 1 are spare bits.
- * Bits 4-1 of octet 1 are used to indicate the number of
- * remaining segments.
- * The values 0000 to 1111 are possible; the value 0000 indicates
- * the last segment.
- */
- octet = tvb_get_guint8(tvb,optional_pointer+2);
- source_local_ref = tvb_get_letoh24(tvb, optional_pointer+3);
-
- if ((octet&0x0f) == 0)
- more_frag = FALSE;
-
- save_fragmented = pinfo->fragmented;
- pinfo->fragmented = TRUE;
- frag_msg = fragment_add_seq_next(tvb, variable_pointer3 + 1, pinfo,
- source_local_ref, /* ID for fragments belonging together */
- sccp_xudt_msg_fragment_table, /* list of message fragments */
- sccp_xudt_msg_reassembled_table, /* list of reassembled messages */
- tvb_get_guint8(tvb,variable_pointer3), /* fragment length - to the end */
- more_frag); /* More fragments? */
-
- if ((octet&0x80) == 0x80) /*First segment, set number of segments*/
- fragment_set_tot_len(pinfo, source_local_ref, sccp_xudt_msg_fragment_table,(octet & 0xf));
-
- new_tvb = process_reassembled_data(tvb, variable_pointer3 + 1,
- pinfo, "Reassembled SCCP",
- frag_msg,
- &sccp_xudt_msg_frag_items,
- NULL, tree);
-
- if (frag_msg) { /* Reassembled */
- col_append_str(pinfo->cinfo, COL_INFO,"(Message reassembled) ");
- } else { /* Not last packet of reassembled message */
- col_append_str(pinfo->cinfo, COL_INFO,"(Message fragment) ");
- }
-
- pinfo->fragmented = save_fragmented;
-
- if (new_tvb)
- dissect_sccp_data_param(new_tvb, pinfo, tree);
- }
+ if (!sccp_xudt_desegment) {
+ proto_tree_add_text(sccp_tree, tvb, variable_pointer3, tvb_get_guint8(tvb, variable_pointer3)+1, "Segmented Data");
+ } else {
+ guint8 octet;
+ gboolean more_frag = TRUE;
+
+ /* Get the first octet of parameter Segmentation, Ch 3.17 in Q.713
+ * Bit 8 of octet 1 is used for First segment indication
+ * Bit 7 of octet 1 is used to keep in the message in sequence
+ * delivery option required by the SCCP user
+ * Bits 6 and 5 in octet 1 are spare bits.
+ * Bits 4-1 of octet 1 are used to indicate the number of
+ * remaining segments.
+ * The values 0000 to 1111 are possible; the value 0000 indicates
+ * the last segment.
+ */
+ octet = tvb_get_guint8(tvb,optional_pointer+2);
+ source_local_ref = tvb_get_letoh24(tvb, optional_pointer+3);
+
+ if ((octet & 0x0f) == 0)
+ more_frag = FALSE;
+
+ save_fragmented = pinfo->fragmented;
+ pinfo->fragmented = TRUE;
+ frag_msg = fragment_add_seq_next(tvb, variable_pointer3 + 1, pinfo,
+ source_local_ref, /* ID for fragments belonging together */
+ sccp_xudt_msg_fragment_table, /* list of message fragments */
+ sccp_xudt_msg_reassembled_table, /* list of reassembled messages */
+ tvb_get_guint8(tvb,variable_pointer3), /* fragment length - to the end */
+ more_frag); /* More fragments? */
+
+ if ((octet & 0x80) == 0x80) /*First segment, set number of segments*/
+ fragment_set_tot_len(pinfo, source_local_ref, sccp_xudt_msg_fragment_table,(octet & 0xf));
+
+ new_tvb = process_reassembled_data(tvb, variable_pointer3 + 1,
+ pinfo, "Reassembled SCCP",
+ frag_msg,
+ &sccp_xudt_msg_frag_items,
+ NULL, tree);
+
+ if (frag_msg) { /* Reassembled */
+ col_append_str(pinfo->cinfo, COL_INFO,"(Message reassembled) ");
+ } else { /* Not last packet of reassembled message */
+ col_append_str(pinfo->cinfo, COL_INFO,"(Message fragment) ");
+ }
+
+ pinfo->fragmented = save_fragmented;
+
+ if (new_tvb)
+ dissect_sccp_data_param(new_tvb, pinfo, tree);
+ }
} else {
- dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_DATA, variable_pointer3);
+ dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
+ PARAMETER_DATA, variable_pointer3);
}
break;
@@ -3123,83 +3141,83 @@ dissect_sccp_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *sccp_tree,
pinfo->sccp_info = sccp_msg = new_ud_msg(pinfo,message_type);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_RETURN_CAUSE, offset,
- RETURN_CAUSE_LENGTH);
+ PARAMETER_RETURN_CAUSE, offset,
+ RETURN_CAUSE_LENGTH);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_HOP_COUNTER, offset,
- HOP_COUNTER_LENGTH);
+ PARAMETER_HOP_COUNTER, offset,
+ HOP_COUNTER_LENGTH);
- VARIABLE_POINTER(variable_pointer1, hf_sccp_variable_pointer1, POINTER_LENGTH)
- VARIABLE_POINTER(variable_pointer2, hf_sccp_variable_pointer2, POINTER_LENGTH)
- VARIABLE_POINTER(variable_pointer3, hf_sccp_variable_pointer3, POINTER_LENGTH)
- OPTIONAL_POINTER(POINTER_LENGTH)
+ VARIABLE_POINTER(variable_pointer1, hf_sccp_variable_pointer1, POINTER_LENGTH);
+ VARIABLE_POINTER(variable_pointer2, hf_sccp_variable_pointer2, POINTER_LENGTH);
+ VARIABLE_POINTER(variable_pointer3, hf_sccp_variable_pointer3, POINTER_LENGTH);
+ OPTIONAL_POINTER(POINTER_LENGTH);
assoc = get_sccp_assoc(pinfo, msg_offset, slr, dlr, message_type);
dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CALLED_PARTY_ADDRESS,
- variable_pointer1);
+ PARAMETER_CALLED_PARTY_ADDRESS,
+ variable_pointer1);
dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CALLING_PARTY_ADDRESS,
- variable_pointer2);
+ PARAMETER_CALLING_PARTY_ADDRESS,
+ variable_pointer2);
if (tvb_get_guint8(tvb, optional_pointer) == PARAMETER_SEGMENTATION) {
- if (!sccp_xudt_desegment){
- proto_tree_add_text(sccp_tree, tvb, variable_pointer3, tvb_get_guint8(tvb, variable_pointer3)+1, "Segmented Data");
-
- } else {
- guint8 octet;
- gboolean more_frag = TRUE;
-
-
- /* Get the first octet of parameter Segmentation, Ch 3.17 in Q.713
- * Bit 8 of octet 1 is used for First segment indication
- * Bit 7 of octet 1 is used to keep in the message in sequence
- * delivery option required by the SCCP user
- * Bits 6 and 5 in octet 1 are spare bits.
- * Bits 4-1 of octet 1 are used to indicate the number of
- * remaining segments.
- * The values 0000 to 1111 are possible; the value 0000 indicates
- * the last segment.
- */
- octet = tvb_get_guint8(tvb,optional_pointer+2);
- source_local_ref = tvb_get_letoh24(tvb, optional_pointer+3);
-
- if ((octet&0x0f) == 0)
- more_frag = FALSE;
-
- save_fragmented = pinfo->fragmented;
- pinfo->fragmented = TRUE;
- frag_msg = fragment_add_seq_next(tvb, variable_pointer3 + 1, pinfo,
- source_local_ref, /* ID for fragments belonging together */
- sccp_xudt_msg_fragment_table, /* list of message fragments */
- sccp_xudt_msg_reassembled_table, /* list of reassembled messages */
- tvb_get_guint8(tvb,variable_pointer3), /* fragment length - to the end */
- more_frag); /* More fragments? */
-
- if ((octet&0x80) == 0x80) /*First segment, set number of segments*/
- fragment_set_tot_len(pinfo, source_local_ref, sccp_xudt_msg_fragment_table,(octet & 0xf));
-
- new_tvb = process_reassembled_data(tvb, variable_pointer3 + 1,
- pinfo, "Reassembled SCCP",
- frag_msg,
- &sccp_xudt_msg_frag_items,
- NULL, tree);
-
- if (frag_msg) { /* Reassembled */
- col_append_str(pinfo->cinfo, COL_INFO, "(Message reassembled) ");
- } else { /* Not last packet of reassembled message */
- col_append_str(pinfo->cinfo, COL_INFO, "(Message fragment) ");
- }
-
- pinfo->fragmented = save_fragmented;
-
- if (new_tvb)
- dissect_sccp_data_param(new_tvb, pinfo, tree);
- }
+ if (!sccp_xudt_desegment) {
+ proto_tree_add_text(sccp_tree, tvb, variable_pointer3, tvb_get_guint8(tvb, variable_pointer3)+1, "Segmented Data");
+
+ } else {
+ guint8 octet;
+ gboolean more_frag = TRUE;
+
+
+ /* Get the first octet of parameter Segmentation, Ch 3.17 in Q.713
+ * Bit 8 of octet 1 is used for First segment indication
+ * Bit 7 of octet 1 is used to keep in the message in sequence
+ * delivery option required by the SCCP user
+ * Bits 6 and 5 in octet 1 are spare bits.
+ * Bits 4-1 of octet 1 are used to indicate the number of
+ * remaining segments.
+ * The values 0000 to 1111 are possible; the value 0000 indicates
+ * the last segment.
+ */
+ octet = tvb_get_guint8(tvb,optional_pointer+2);
+ source_local_ref = tvb_get_letoh24(tvb, optional_pointer+3);
+
+ if ((octet & 0x0f) == 0)
+ more_frag = FALSE;
+
+ save_fragmented = pinfo->fragmented;
+ pinfo->fragmented = TRUE;
+ frag_msg = fragment_add_seq_next(tvb, variable_pointer3 + 1, pinfo,
+ source_local_ref, /* ID for fragments belonging together */
+ sccp_xudt_msg_fragment_table, /* list of message fragments */
+ sccp_xudt_msg_reassembled_table, /* list of reassembled messages */
+ tvb_get_guint8(tvb,variable_pointer3), /* fragment length - to the end */
+ more_frag); /* More fragments? */
+
+ if ((octet & 0x80) == 0x80) /*First segment, set number of segments*/
+ fragment_set_tot_len(pinfo, source_local_ref, sccp_xudt_msg_fragment_table,(octet & 0xf));
+
+ new_tvb = process_reassembled_data(tvb, variable_pointer3 + 1,
+ pinfo, "Reassembled SCCP",
+ frag_msg,
+ &sccp_xudt_msg_frag_items,
+ NULL, tree);
+
+ if (frag_msg) { /* Reassembled */
+ col_append_str(pinfo->cinfo, COL_INFO, "(Message reassembled) ");
+ } else { /* Not last packet of reassembled message */
+ col_append_str(pinfo->cinfo, COL_INFO, "(Message fragment) ");
+ }
+
+ pinfo->fragmented = save_fragmented;
+
+ if (new_tvb)
+ dissect_sccp_data_param(new_tvb, pinfo, tree);
+ }
} else {
- dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_DATA, variable_pointer3);
+ dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
+ PARAMETER_DATA, variable_pointer3);
}
pinfo->flags.in_error_pkt = save_in_error_pkt;
break;
@@ -3208,53 +3226,53 @@ dissect_sccp_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *sccp_tree,
pinfo->sccp_info = sccp_msg = new_ud_msg(pinfo,message_type);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CLASS, offset,
- PROTOCOL_CLASS_LENGTH);
+ PARAMETER_CLASS, offset,
+ PROTOCOL_CLASS_LENGTH);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_HOP_COUNTER, offset,
- HOP_COUNTER_LENGTH);
+ PARAMETER_HOP_COUNTER, offset,
+ HOP_COUNTER_LENGTH);
- VARIABLE_POINTER(variable_pointer1, hf_sccp_variable_pointer1, POINTER_LENGTH_LONG)
- VARIABLE_POINTER(variable_pointer2, hf_sccp_variable_pointer2, POINTER_LENGTH_LONG)
- VARIABLE_POINTER(variable_pointer3, hf_sccp_variable_pointer3, POINTER_LENGTH_LONG)
- OPTIONAL_POINTER(POINTER_LENGTH_LONG)
+ VARIABLE_POINTER(variable_pointer1, hf_sccp_variable_pointer1, POINTER_LENGTH_LONG);
+ VARIABLE_POINTER(variable_pointer2, hf_sccp_variable_pointer2, POINTER_LENGTH_LONG);
+ VARIABLE_POINTER(variable_pointer3, hf_sccp_variable_pointer3, POINTER_LENGTH_LONG);
+ OPTIONAL_POINTER(POINTER_LENGTH_LONG);
assoc = get_sccp_assoc(pinfo, msg_offset, slr, dlr, message_type);
dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CALLED_PARTY_ADDRESS,
- variable_pointer1);
+ PARAMETER_CALLED_PARTY_ADDRESS,
+ variable_pointer1);
dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CALLING_PARTY_ADDRESS,
- variable_pointer2);
+ PARAMETER_CALLING_PARTY_ADDRESS,
+ variable_pointer2);
dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_LONG_DATA, variable_pointer3);
+ PARAMETER_LONG_DATA, variable_pointer3);
break;
case SCCP_MSG_TYPE_LUDTS:
pinfo->sccp_info = sccp_msg = new_ud_msg(pinfo,message_type);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_RETURN_CAUSE, offset,
- RETURN_CAUSE_LENGTH);
+ PARAMETER_RETURN_CAUSE, offset,
+ RETURN_CAUSE_LENGTH);
offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_HOP_COUNTER, offset,
- HOP_COUNTER_LENGTH);
+ PARAMETER_HOP_COUNTER, offset,
+ HOP_COUNTER_LENGTH);
- VARIABLE_POINTER(variable_pointer1, hf_sccp_variable_pointer1, POINTER_LENGTH_LONG)
- VARIABLE_POINTER(variable_pointer2, hf_sccp_variable_pointer2, POINTER_LENGTH_LONG)
- VARIABLE_POINTER(variable_pointer3, hf_sccp_variable_pointer3, POINTER_LENGTH_LONG)
- OPTIONAL_POINTER(POINTER_LENGTH_LONG)
+ VARIABLE_POINTER(variable_pointer1, hf_sccp_variable_pointer1, POINTER_LENGTH_LONG);
+ VARIABLE_POINTER(variable_pointer2, hf_sccp_variable_pointer2, POINTER_LENGTH_LONG);
+ VARIABLE_POINTER(variable_pointer3, hf_sccp_variable_pointer3, POINTER_LENGTH_LONG);
+ OPTIONAL_POINTER(POINTER_LENGTH_LONG);
assoc = get_sccp_assoc(pinfo, msg_offset, slr, dlr, message_type);
dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CALLED_PARTY_ADDRESS,
- variable_pointer1);
+ PARAMETER_CALLED_PARTY_ADDRESS,
+ variable_pointer1);
dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CALLING_PARTY_ADDRESS,
- variable_pointer2);
+ PARAMETER_CALLING_PARTY_ADDRESS,
+ variable_pointer2);
dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_LONG_DATA, variable_pointer3);
+ PARAMETER_LONG_DATA, variable_pointer3);
break;
default:
@@ -3263,30 +3281,30 @@ dissect_sccp_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *sccp_tree,
if (orig_opt_ptr)
dissect_sccp_optional_parameters(tvb, pinfo, sccp_tree, tree,
- optional_pointer);
-
- if (trace_sccp && assoc && assoc != &no_assoc) {
- proto_item *pi = proto_tree_add_uint(sccp_tree, hf_sccp_assoc_id, tvb, 0, 0, assoc->id);
- proto_tree *pt = proto_item_add_subtree(pi, ett_sccp_assoc);
- PROTO_ITEM_SET_GENERATED(pi);
- if (assoc->msgs) {
- sccp_msg_info_t* m;
- for(m = assoc->msgs; m ; m = m->data.co.next) {
- pi = proto_tree_add_uint(pt, hf_sccp_assoc_msg, tvb, 0, 0, m->framenum);
+ optional_pointer);
- if (assoc->payload != SCCP_PLOAD_NONE)
- proto_item_append_text(pi," %s", val_to_str(assoc->payload, assoc_protos, "Unknown: %d"));
-
- if (m->data.co.label)
- proto_item_append_text(pi," %s", m->data.co.label);
-
- if (m->framenum == PINFO_FD_NUM(pinfo) && m->offset == msg_offset ) {
- tap_queue_packet(sccp_tap, pinfo, m);
- proto_item_append_text(pi," (current)");
- }
- PROTO_ITEM_SET_GENERATED(pi);
- }
- }
+ if (trace_sccp && assoc && (assoc != &no_assoc)) {
+ proto_item *pi = proto_tree_add_uint(sccp_tree, hf_sccp_assoc_id, tvb, 0, 0, assoc->id);
+ proto_tree *pt = proto_item_add_subtree(pi, ett_sccp_assoc);
+ PROTO_ITEM_SET_GENERATED(pi);
+ if (assoc->msgs) {
+ sccp_msg_info_t *m;
+ for(m = assoc->msgs; m ; m = m->data.co.next) {
+ pi = proto_tree_add_uint(pt, hf_sccp_assoc_msg, tvb, 0, 0, m->framenum);
+
+ if (assoc->payload != SCCP_PLOAD_NONE)
+ proto_item_append_text(pi," %s", val_to_str(assoc->payload, assoc_protos, "Unknown: %d"));
+
+ if (m->data.co.label)
+ proto_item_append_text(pi," %s", m->data.co.label);
+
+ if ((m->framenum == PINFO_FD_NUM(pinfo)) && (m->offset == msg_offset) ) {
+ tap_queue_packet(sccp_tap, pinfo, m);
+ proto_item_append_text(pi," (current)");
+ }
+ PROTO_ITEM_SET_GENERATED(pi);
+ }
+ }
}
}
@@ -3315,19 +3333,19 @@ dissect_sccp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
/* Make entry in the Protocol column on summary display */
- switch(decode_mtp3_standard) {
- case ITU_STANDARD:
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "SCCP (Int. ITU)");
- break;
- case ANSI_STANDARD:
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "SCCP (ANSI)");
- break;
- case CHINESE_ITU_STANDARD:
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "SCCP (Chin. ITU)");
- break;
- case JAPAN_STANDARD:
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "SCCP (Japan)");
- break;
+ switch (decode_mtp3_standard) {
+ case ITU_STANDARD:
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "SCCP (Int. ITU)");
+ break;
+ case ANSI_STANDARD:
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "SCCP (ANSI)");
+ break;
+ case CHINESE_ITU_STANDARD:
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "SCCP (Chin. ITU)");
+ break;
+ case JAPAN_STANDARD:
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "SCCP (Japan)");
+ break;
};
/* In the interest of speed, if "tree" is NULL, don't do any work not
@@ -3349,16 +3367,16 @@ dissect_sccp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
mtp3_addr_p = (const mtp3_addr_pc_t *)pinfo->src.data;
if (sccp_source_pc_global == mtp3_addr_p->pc) {
- pinfo->p2p_dir = P2P_DIR_SENT;
+ pinfo->p2p_dir = P2P_DIR_SENT;
} else {
/* assuming if src was SS7 PC then dst will be too */
mtp3_addr_p = (const mtp3_addr_pc_t *)pinfo->dst.data;
if (sccp_source_pc_global == mtp3_addr_p->pc)
{
- pinfo->p2p_dir = P2P_DIR_RECV;
+ pinfo->p2p_dir = P2P_DIR_RECV;
} else {
- pinfo->p2p_dir = P2P_DIR_UNKNOWN;
+ pinfo->p2p_dir = P2P_DIR_UNKNOWN;
}
}
}
@@ -3371,60 +3389,64 @@ dissect_sccp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/*** SccpUsers Table **/
static struct _sccp_ul {
- guint id;
- gboolean uses_tcap;
- dissector_handle_t* handlep;
- } user_list[] = {
- {SCCP_USER_DATA, FALSE, &data_handle},
- {SCCP_USER_TCAP, FALSE, &tcap_handle},
- {SCCP_USER_RANAP, FALSE, &ranap_handle},
- {SCCP_USER_BSSAP, FALSE, &bssap_handle},
- {SCCP_USER_GSMMAP, TRUE, &gsmmap_handle},
- {SCCP_USER_CAMEL, TRUE, &camel_handle},
- {SCCP_USER_INAP, TRUE, &inap_handle},
- {0, FALSE, NULL}
+ guint id;
+ gboolean uses_tcap;
+ dissector_handle_t *handlep;
+} user_list[] = {
+
+ {SCCP_USER_DATA, FALSE, &data_handle},
+ {SCCP_USER_TCAP, FALSE, &tcap_handle},
+ {SCCP_USER_RANAP, FALSE, &ranap_handle},
+ {SCCP_USER_BSSAP, FALSE, &bssap_handle},
+ {SCCP_USER_GSMMAP, TRUE, &gsmmap_handle},
+ {SCCP_USER_CAMEL, TRUE, &camel_handle},
+ {SCCP_USER_INAP, TRUE, &inap_handle},
+ {0, FALSE, NULL}
};
static void
-sccp_users_update_cb(void* r, const char** err _U_)
+sccp_users_update_cb(void *r, const char **err _U_)
{
- sccp_user_t* u = r;
- struct _sccp_ul* c;
-
- for (c=user_list; c->handlep; c++) {
- if (c->id == u->user) {
- u->uses_tcap = c->uses_tcap;
- u->handlep = c->handlep;
- return;
- }
- }
-
- u->uses_tcap = FALSE;
- u->handlep = &data_handle;
+ sccp_user_t *u = r;
+ struct _sccp_ul *c;
+
+ for (c=user_list; c->handlep; c++) {
+ if (c->id == u->user) {
+ u->uses_tcap = c->uses_tcap;
+ u->handlep = c->handlep;
+ return;
+ }
+ }
+
+ u->uses_tcap = FALSE;
+ u->handlep = &data_handle;
}
static void *
-sccp_users_copy_cb(void* n, const void* o, size_t siz _U_)
+sccp_users_copy_cb(void *n, const void *o, size_t siz _U_)
{
- const sccp_user_t* u = o;
- sccp_user_t* un = n;
+ const sccp_user_t *u = o;
+ sccp_user_t *un = n;
+
+ un->ni = u->ni;
+ un->user = u->user;
+ un->uses_tcap = u->uses_tcap;
+ un->handlep = u->handlep;
- un->ni = u->ni;
- un->user = u->user;
- un->uses_tcap = u->uses_tcap;
- un->handlep = u->handlep;
- if (u->called_pc) un->called_pc = range_copy(u->called_pc);
- if (u->called_ssn) un->called_ssn = range_copy(u->called_ssn);
+ if (u->called_pc)
+ un->called_pc = range_copy(u->called_pc);
+ if (u->called_ssn)
+ un->called_ssn = range_copy(u->called_ssn);
- return n;
+ return n;
}
static void
-sccp_users_free_cb(void*r)
+sccp_users_free_cb(void *r)
{
- sccp_user_t* u = r;
- if (u->called_pc) g_free(u->called_pc);
- if (u->called_ssn) g_free(u->called_ssn);
+ sccp_user_t *u = r;
+ if (u->called_pc) g_free(u->called_pc);
+ if (u->called_ssn) g_free(u->called_ssn);
}
@@ -3439,9 +3461,9 @@ UAT_VS_DEF(sccp_users, user, sccp_user_t, SCCP_USER_DATA, "Data")
static void
init_sccp(void)
{
- next_assoc_id = 1;
- fragment_table_init (&sccp_xudt_msg_fragment_table);
- reassembled_table_init(&sccp_xudt_msg_reassembled_table);
+ next_assoc_id = 1;
+ fragment_table_init (&sccp_xudt_msg_fragment_table);
+ reassembled_table_init(&sccp_xudt_msg_reassembled_table);
}
@@ -3453,404 +3475,480 @@ proto_register_sccp(void)
static hf_register_info hf[] = {
{ &hf_sccp_message_type,
{ "Message Type", "sccp.message_type",
- FT_UINT8, BASE_HEX, VALS(sccp_message_type_values), 0x0,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_message_type_values), 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_variable_pointer1,
{ "Pointer to first Mandatory Variable parameter", "sccp.variable_pointer1",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL}},
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_variable_pointer2,
{ "Pointer to second Mandatory Variable parameter", "sccp.variable_pointer2",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL}},
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_variable_pointer3,
{ "Pointer to third Mandatory Variable parameter", "sccp.variable_pointer3",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL}},
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_optional_pointer,
{ "Pointer to Optional parameter", "sccp.optional_pointer",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL}},
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_param_length,
{ "Variable parameter length", "sccp.parameter_length",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL}},
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_ssn,
{ "Called or Calling SubSystem Number", "sccp.ssn",
- FT_UINT8, BASE_DEC, VALS(sccp_ssn_values), 0x0,
- NULL, HFILL}},
+ FT_UINT8, BASE_DEC, VALS(sccp_ssn_values), 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_gt_digits,
- { "Called or Calling GT Digits",
- "sccp.digits",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Called or Calling GT Digits", "sccp.digits",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_sccp_called_national_indicator,
{ "National Indicator", "sccp.called.ni",
- FT_UINT8, BASE_HEX, VALS(sccp_national_indicator_values), ANSI_NATIONAL_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_national_indicator_values), ANSI_NATIONAL_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_called_routing_indicator,
{ "Routing Indicator", "sccp.called.ri",
- FT_UINT8, BASE_HEX, VALS(sccp_routing_indicator_values), ROUTING_INDICATOR_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_routing_indicator_values), ROUTING_INDICATOR_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_called_itu_global_title_indicator,
{ "Global Title Indicator", "sccp.called.gti",
- FT_UINT8, BASE_HEX, VALS(sccp_itu_global_title_indicator_values), GTI_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_itu_global_title_indicator_values), GTI_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_called_ansi_global_title_indicator,
{ "Global Title Indicator", "sccp.called.gti",
- FT_UINT8, BASE_HEX, VALS(sccp_ansi_global_title_indicator_values), GTI_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_ansi_global_title_indicator_values), GTI_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_called_itu_ssn_indicator,
{ "SubSystem Number Indicator", "sccp.called.ssni",
- FT_UINT8, BASE_HEX, VALS(sccp_ai_ssni_values), ITU_SSN_INDICATOR_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_ai_ssni_values), ITU_SSN_INDICATOR_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_called_itu_point_code_indicator,
{ "Point Code Indicator", "sccp.called.pci",
- FT_UINT8, BASE_HEX, VALS(sccp_ai_pci_values), ITU_PC_INDICATOR_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_ai_pci_values), ITU_PC_INDICATOR_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_called_ansi_ssn_indicator,
{ "SubSystem Number Indicator", "sccp.called.ssni",
- FT_UINT8, BASE_HEX, VALS(sccp_ai_ssni_values), ANSI_SSN_INDICATOR_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_ai_ssni_values), ANSI_SSN_INDICATOR_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_called_ansi_point_code_indicator,
{ "Point Code Indicator", "sccp.called.pci",
- FT_UINT8, BASE_HEX, VALS(sccp_ai_pci_values), ANSI_PC_INDICATOR_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_ai_pci_values), ANSI_PC_INDICATOR_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_called_ssn,
{ "SubSystem Number", "sccp.called.ssn",
- FT_UINT8, BASE_DEC, VALS(sccp_ssn_values), 0x0,
- NULL, HFILL}},
+ FT_UINT8, BASE_DEC, VALS(sccp_ssn_values), 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_called_itu_pc,
{ "PC", "sccp.called.pc",
- FT_UINT16, BASE_DEC, NULL, ITU_PC_MASK,
- NULL, HFILL}},
+ FT_UINT16, BASE_DEC, NULL, ITU_PC_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_called_ansi_pc,
{ "PC", "sccp.called.ansi_pc",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_called_chinese_pc,
{ "PC", "sccp.called.chinese_pc",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_called_japan_pc,
{ "PC", "sccp.called.pc",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL}},
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_called_pc_network,
- { "PC Network",
- "sccp.called.network",
- FT_UINT24, BASE_DEC, NULL, ANSI_NETWORK_MASK,
- NULL, HFILL }},
+ { "PC Network", "sccp.called.network",
+ FT_UINT24, BASE_DEC, NULL, ANSI_NETWORK_MASK,
+ NULL, HFILL }
+ },
{ &hf_sccp_called_pc_cluster,
- { "PC Cluster",
- "sccp.called.cluster",
- FT_UINT24, BASE_DEC, NULL, ANSI_CLUSTER_MASK,
- NULL, HFILL }},
+ { "PC Cluster", "sccp.called.cluster",
+ FT_UINT24, BASE_DEC, NULL, ANSI_CLUSTER_MASK,
+ NULL, HFILL }
+ },
{ &hf_sccp_called_pc_member,
- { "PC Member",
- "sccp.called.member",
- FT_UINT24, BASE_DEC, NULL, ANSI_MEMBER_MASK,
- NULL, HFILL }},
+ { "PC Member", "sccp.called.member",
+ FT_UINT24, BASE_DEC, NULL, ANSI_MEMBER_MASK,
+ NULL, HFILL }
+ },
{ &hf_sccp_called_gt_nai,
- { "Nature of Address Indicator",
- "sccp.called.nai",
- FT_UINT8, BASE_HEX, VALS(sccp_nai_values), GT_NAI_MASK,
- NULL, HFILL }},
+ { "Nature of Address Indicator", "sccp.called.nai",
+ FT_UINT8, BASE_HEX, VALS(sccp_nai_values), GT_NAI_MASK,
+ NULL, HFILL }
+ },
{ &hf_sccp_called_gt_oe,
- { "Odd/Even Indicator",
- "sccp.called.oe",
- FT_UINT8, BASE_HEX, VALS(sccp_oe_values), GT_OE_MASK,
- NULL, HFILL }},
+ { "Odd/Even Indicator", "sccp.called.oe",
+ FT_UINT8, BASE_HEX, VALS(sccp_oe_values), GT_OE_MASK,
+ NULL, HFILL }
+ },
{ &hf_sccp_called_gt_tt,
- { "Translation Type",
- "sccp.called.tt",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Translation Type", "sccp.called.tt",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_sccp_called_gt_np,
- { "Numbering Plan",
- "sccp.called.np",
- FT_UINT8, BASE_HEX, VALS(sccp_np_values), GT_NP_MASK,
- NULL, HFILL }},
+ { "Numbering Plan", "sccp.called.np",
+ FT_UINT8, BASE_HEX, VALS(sccp_np_values), GT_NP_MASK,
+ NULL, HFILL }
+ },
{ &hf_sccp_called_gt_es,
- { "Encoding Scheme",
- "sccp.called.es",
- FT_UINT8, BASE_HEX, VALS(sccp_es_values), GT_ES_MASK,
- NULL, HFILL }},
+ { "Encoding Scheme", "sccp.called.es",
+ FT_UINT8, BASE_HEX, VALS(sccp_es_values), GT_ES_MASK,
+ NULL, HFILL }
+ },
{ &hf_sccp_called_gt_digits,
- { "Called Party Digits",
- "sccp.called.digits",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Called Party Digits", "sccp.called.digits",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_sccp_called_gt_digits_length,
- { "Number of Called Party Digits",
- "sccp.called.digits.length",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Number of Called Party Digits", "sccp.called.digits.length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_sccp_calling_national_indicator,
{ "National Indicator", "sccp.calling.ni",
- FT_UINT8, BASE_HEX, VALS(sccp_national_indicator_values), ANSI_NATIONAL_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_national_indicator_values), ANSI_NATIONAL_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_calling_routing_indicator,
{ "Routing Indicator", "sccp.calling.ri",
- FT_UINT8, BASE_HEX, VALS(sccp_routing_indicator_values), ROUTING_INDICATOR_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_routing_indicator_values), ROUTING_INDICATOR_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_calling_itu_global_title_indicator,
{ "Global Title Indicator", "sccp.calling.gti",
- FT_UINT8, BASE_HEX, VALS(sccp_itu_global_title_indicator_values), GTI_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_itu_global_title_indicator_values), GTI_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_calling_ansi_global_title_indicator,
{ "Global Title Indicator", "sccp.calling.gti",
- FT_UINT8, BASE_HEX, VALS(sccp_ansi_global_title_indicator_values), GTI_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_ansi_global_title_indicator_values), GTI_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_calling_itu_ssn_indicator,
{ "SubSystem Number Indicator", "sccp.calling.ssni",
- FT_UINT8, BASE_HEX, VALS(sccp_ai_ssni_values), ITU_SSN_INDICATOR_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_ai_ssni_values), ITU_SSN_INDICATOR_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_calling_itu_point_code_indicator,
{ "Point Code Indicator", "sccp.calling.pci",
- FT_UINT8, BASE_HEX, VALS(sccp_ai_pci_values), ITU_PC_INDICATOR_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_ai_pci_values), ITU_PC_INDICATOR_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_calling_ansi_ssn_indicator,
{ "SubSystem Number Indicator", "sccp.calling.ssni",
- FT_UINT8, BASE_HEX, VALS(sccp_ai_ssni_values), ANSI_SSN_INDICATOR_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_ai_ssni_values), ANSI_SSN_INDICATOR_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_calling_ansi_point_code_indicator,
{ "Point Code Indicator", "sccp.calling.pci",
- FT_UINT8, BASE_HEX, VALS(sccp_ai_pci_values), ANSI_PC_INDICATOR_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_ai_pci_values), ANSI_PC_INDICATOR_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_calling_ssn,
{ "SubSystem Number", "sccp.calling.ssn",
- FT_UINT8, BASE_DEC, VALS(sccp_ssn_values), 0x0,
- NULL, HFILL}},
+ FT_UINT8, BASE_DEC, VALS(sccp_ssn_values), 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_calling_itu_pc,
{ "PC", "sccp.calling.pc",
- FT_UINT16, BASE_DEC, NULL, ITU_PC_MASK,
- NULL, HFILL}},
+ FT_UINT16, BASE_DEC, NULL, ITU_PC_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_calling_ansi_pc,
{ "PC", "sccp.calling.ansi_pc",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_calling_chinese_pc,
{ "PC", "sccp.calling.chinese_pc",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL}},
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_calling_japan_pc,
{ "PC", "sccp.calling.pc",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL}},
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_calling_pc_network,
- { "PC Network",
- "sccp.calling.network",
- FT_UINT24, BASE_DEC, NULL, ANSI_NETWORK_MASK,
- NULL, HFILL }},
+ { "PC Network", "sccp.calling.network",
+ FT_UINT24, BASE_DEC, NULL, ANSI_NETWORK_MASK,
+ NULL, HFILL }
+ },
{ &hf_sccp_calling_pc_cluster,
- { "PC Cluster",
- "sccp.calling.cluster",
- FT_UINT24, BASE_DEC, NULL, ANSI_CLUSTER_MASK,
- NULL, HFILL }},
+ { "PC Cluster", "sccp.calling.cluster",
+ FT_UINT24, BASE_DEC, NULL, ANSI_CLUSTER_MASK,
+ NULL, HFILL }
+ },
{ &hf_sccp_calling_pc_member,
- { "PC Member",
- "sccp.calling.member",
- FT_UINT24, BASE_DEC, NULL, ANSI_MEMBER_MASK,
- NULL, HFILL }},
+ { "PC Member", "sccp.calling.member",
+ FT_UINT24, BASE_DEC, NULL, ANSI_MEMBER_MASK,
+ NULL, HFILL }
+ },
{ &hf_sccp_calling_gt_nai,
- { "Nature of Address Indicator",
- "sccp.calling.nai",
- FT_UINT8, BASE_HEX, VALS(sccp_nai_values), GT_NAI_MASK,
- NULL, HFILL }},
+ { "Nature of Address Indicator", "sccp.calling.nai",
+ FT_UINT8, BASE_HEX, VALS(sccp_nai_values), GT_NAI_MASK,
+ NULL, HFILL }
+ },
{ &hf_sccp_calling_gt_oe,
- { "Odd/Even Indicator",
- "sccp.calling.oe",
- FT_UINT8, BASE_HEX, VALS(sccp_oe_values), GT_OE_MASK,
- NULL, HFILL }},
+ { "Odd/Even Indicator", "sccp.calling.oe",
+ FT_UINT8, BASE_HEX, VALS(sccp_oe_values), GT_OE_MASK,
+ NULL, HFILL }
+ },
{ &hf_sccp_calling_gt_tt,
- { "Translation Type",
- "sccp.calling.tt",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Translation Type", "sccp.calling.tt",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_sccp_calling_gt_np,
- { "Numbering Plan",
- "sccp.calling.np",
- FT_UINT8, BASE_HEX, VALS(sccp_np_values), GT_NP_MASK,
- NULL, HFILL }},
+ { "Numbering Plan", "sccp.calling.np",
+ FT_UINT8, BASE_HEX, VALS(sccp_np_values), GT_NP_MASK,
+ NULL, HFILL }
+ },
{ &hf_sccp_calling_gt_es,
- { "Encoding Scheme",
- "sccp.calling.es",
- FT_UINT8, BASE_HEX, VALS(sccp_es_values), GT_ES_MASK,
- NULL, HFILL }},
+ { "Encoding Scheme", "sccp.calling.es",
+ FT_UINT8, BASE_HEX, VALS(sccp_es_values), GT_ES_MASK,
+ NULL, HFILL }
+ },
{ &hf_sccp_calling_gt_digits,
- { "Calling Party Digits",
- "sccp.calling.digits",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Calling Party Digits", "sccp.calling.digits",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_sccp_calling_gt_digits_length,
- { "Number of Calling Party Digits",
- "sccp.calling.digits.length",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Number of Calling Party Digits", "sccp.calling.digits.length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_sccp_dlr,
{ "Destination Local Reference", "sccp.dlr",
- FT_UINT24, BASE_HEX, NULL, 0x0,
- NULL, HFILL}},
+ FT_UINT24, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_slr,
{ "Source Local Reference", "sccp.slr",
- FT_UINT24, BASE_HEX, NULL, 0x0,
- NULL, HFILL}},
+ FT_UINT24, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_lr,
- { "Local Reference", "sccp.lr",
- FT_UINT24, BASE_HEX, NULL, 0x0,
- NULL, HFILL}},
+ { "Local Reference", "sccp.lr",
+ FT_UINT24, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_class,
{ "Class", "sccp.class",
- FT_UINT8, BASE_HEX, NULL, CLASS_CLASS_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, NULL, CLASS_CLASS_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_handling,
{ "Message handling", "sccp.handling",
- FT_UINT8, BASE_HEX, VALS(sccp_class_handling_values), CLASS_SPARE_HANDLING_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_class_handling_values), CLASS_SPARE_HANDLING_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_more,
{ "More data", "sccp.more",
- FT_UINT8, BASE_HEX, VALS(sccp_segmenting_reassembling_values), SEGMENTING_REASSEMBLING_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_segmenting_reassembling_values), SEGMENTING_REASSEMBLING_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_rsn,
{ "Receive Sequence Number", "sccp.rsn",
- FT_UINT8, BASE_HEX, NULL, RSN_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, NULL, RSN_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_sequencing_segmenting_ssn,
{ "Sequencing Segmenting: Send Sequence Number", "sccp.sequencing_segmenting.ssn",
- FT_UINT8, BASE_HEX, NULL, SEND_SEQUENCE_NUMBER_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, NULL, SEND_SEQUENCE_NUMBER_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_sequencing_segmenting_rsn,
{ "Sequencing Segmenting: Receive Sequence Number", "sccp.sequencing_segmenting.rsn",
- FT_UINT8, BASE_HEX, NULL, RECEIVE_SEQUENCE_NUMBER_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, NULL, RECEIVE_SEQUENCE_NUMBER_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_sequencing_segmenting_more,
{ "Sequencing Segmenting: More", "sccp.sequencing_segmenting.more",
- FT_UINT8, BASE_HEX, VALS(sccp_segmenting_reassembling_values), SEQUENCING_SEGMENTING_MORE_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_segmenting_reassembling_values), SEQUENCING_SEGMENTING_MORE_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_credit,
{ "Credit", "sccp.credit",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_release_cause,
{ "Release Cause", "sccp.release_cause",
- FT_UINT8, BASE_HEX, VALS(sccp_release_cause_values), 0x0,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_release_cause_values), 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_return_cause,
{ "Return Cause", "sccp.return_cause",
- FT_UINT8, BASE_HEX, VALS(sccp_return_cause_values), 0x0,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_return_cause_values), 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_reset_cause,
{ "Reset Cause", "sccp.reset_cause",
- FT_UINT8, BASE_HEX, VALS(sccp_reset_cause_values), 0x0,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_reset_cause_values), 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_error_cause,
{ "Error Cause", "sccp.error_cause",
- FT_UINT8, BASE_HEX, VALS(sccp_error_cause_values), 0x0,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_error_cause_values), 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_refusal_cause,
{ "Refusal Cause", "sccp.refusal_cause",
- FT_UINT8, BASE_HEX, VALS(sccp_refusal_cause_values), 0x0,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_refusal_cause_values), 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_segmentation_first,
{ "Segmentation: First", "sccp.segmentation.first",
- FT_UINT8, BASE_HEX, VALS(sccp_segmentation_first_segment_values), SEGMENTATION_FIRST_SEGMENT_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_segmentation_first_segment_values), SEGMENTATION_FIRST_SEGMENT_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_segmentation_class,
{ "Segmentation: Class", "sccp.segmentation.class",
- FT_UINT8, BASE_HEX, VALS(sccp_segmentation_class_values), SEGMENTATION_CLASS_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_segmentation_class_values), SEGMENTATION_CLASS_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_segmentation_remaining,
{ "Segmentation: Remaining", "sccp.segmentation.remaining",
- FT_UINT8, BASE_HEX, NULL, SEGMENTATION_REMAINING_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, NULL, SEGMENTATION_REMAINING_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_segmentation_slr,
{ "Segmentation: Source Local Reference", "sccp.segmentation.slr",
- FT_UINT24, BASE_HEX, NULL, 0x0,
- NULL, HFILL}},
+ FT_UINT24, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_hop_counter,
{ "Hop Counter", "sccp.hops",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_importance,
{ "Importance", "sccp.importance",
- FT_UINT8, BASE_HEX, NULL, IMPORTANCE_IMPORTANCE_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, NULL, IMPORTANCE_IMPORTANCE_MASK,
+ NULL, HFILL}
+ },
/* ISNI is ANSI only */
{ &hf_sccp_ansi_isni_mi,
{ "ISNI Mark for Identification Indicator", "sccp.isni.mi",
- FT_UINT8, BASE_HEX, VALS(sccp_isni_mark_for_id_values), ANSI_ISNI_MI_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_isni_mark_for_id_values), ANSI_ISNI_MI_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_ansi_isni_iri,
{ "ISNI Routing Indicator", "sccp.isni.iri",
- FT_UINT8, BASE_HEX, VALS(sccp_isni_iri_values), ANSI_ISNI_IRI_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_isni_iri_values), ANSI_ISNI_IRI_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_ansi_isni_ti,
{ "ISNI Type Indicator", "sccp.isni.ti",
- FT_UINT8, BASE_HEX, VALS(sccp_isni_ti_values), ANSI_ISNI_TI_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, VALS(sccp_isni_ti_values), ANSI_ISNI_TI_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_ansi_isni_netspec,
{ "ISNI Network Specific (Type 1)", "sccp.isni.netspec",
- FT_UINT8, BASE_HEX, NULL, ANSI_ISNI_NETSPEC_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_HEX, NULL, ANSI_ISNI_NETSPEC_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_ansi_isni_counter,
{ "ISNI Counter", "sccp.isni.counter",
- FT_UINT8, BASE_DEC, NULL, ANSI_ISNI_COUNTER_MASK,
- NULL, HFILL}},
+ FT_UINT8, BASE_DEC, NULL, ANSI_ISNI_COUNTER_MASK,
+ NULL, HFILL}
+ },
{ &hf_sccp_ansi_isni_network,
{ "Network ID network", "sccp.isni.network",
- FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
{ &hf_sccp_ansi_isni_cluster,
{ "Network ID cluster", "sccp.isni.cluster",
- FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
{&hf_sccp_xudt_msg_fragments,
- {"Message fragments", "sccp.msg.fragments",
- FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ { "Message fragments", "sccp.msg.fragments",
+ FT_NONE, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
},
{&hf_sccp_xudt_msg_fragment,
- {"Message fragment", "sccp.msg.fragment",
- FT_FRAMENUM, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ { "Message fragment", "sccp.msg.fragment",
+ FT_FRAMENUM, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
},
{&hf_sccp_xudt_msg_fragment_overlap,
- {"Message fragment overlap", "sccp.msg.fragment.overlap",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }
+ { "Message fragment overlap", "sccp.msg.fragment.overlap",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
},
{&hf_sccp_xudt_msg_fragment_overlap_conflicts,
- {"Message fragment overlapping with conflicting data", "sccp.msg.fragment.overlap.conflicts",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }
+ { "Message fragment overlapping with conflicting data", "sccp.msg.fragment.overlap.conflicts",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
},
{&hf_sccp_xudt_msg_fragment_multiple_tails,
- {"Message has multiple tail fragments", "sccp.msg.fragment.multiple_tails",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }
+ { "Message has multiple tail fragments", "sccp.msg.fragment.multiple_tails",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
},
{&hf_sccp_xudt_msg_fragment_too_long_fragment,
- {"Message fragment too long", "sccp.msg.fragment.too_long_fragment",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }
+ { "Message fragment too long", "sccp.msg.fragment.too_long_fragment",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
},
{&hf_sccp_xudt_msg_fragment_error,
- {"Message defragmentation error", "sccp.msg.fragment.error",
- FT_FRAMENUM, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ { "Message defragmentation error", "sccp.msg.fragment.error",
+ FT_FRAMENUM, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
},
{&hf_sccp_xudt_msg_fragment_count,
- {"Message fragment count", "sccp.msg.fragment.count",
- FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ { "Message fragment count", "sccp.msg.fragment.count",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
},
{&hf_sccp_xudt_msg_reassembled_in,
- {"Reassembled in", "sccp.msg.reassembled.in",
- FT_FRAMENUM, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ { "Reassembled in", "sccp.msg.reassembled.in",
+ FT_FRAMENUM, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
},
{&hf_sccp_xudt_msg_reassembled_length,
- {"Reassembled SCCP length", "sccp.msg.reassembled.length",
- FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ { "Reassembled SCCP length", "sccp.msg.reassembled.length",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
},
{ &hf_sccp_assoc_id,
{ "Association ID", "sccp.assoc.id",
- FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
{&hf_sccp_assoc_msg,
- {"Message in frame", "sccp.assoc.msg",
- FT_FRAMENUM, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ { "Message in frame", "sccp.assoc.msg",
+ FT_FRAMENUM, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
},
-
};
/* Setup protocol subtree array */
@@ -3876,23 +3974,23 @@ proto_register_sccp(void)
static uat_field_t users_flds[] = {
- UAT_FLD_DEC(sccp_users, ni, "Network Indicator", "Network Indicator"),
- UAT_FLD_RANGE(sccp_users, called_pc, "Called DPCs", 0xFFFFFF, "DPCs for which this protocol is to be used"),
- UAT_FLD_RANGE(sccp_users, called_ssn, "Called SSNs", 255, "Called SSNs for which this protocol is to be used"),
- UAT_FLD_VS(sccp_users, user, "User protocol", sccp_users_vals, "The User Protocol"),
- UAT_END_FIELDS
+ UAT_FLD_DEC(sccp_users, ni, "Network Indicator", "Network Indicator"),
+ UAT_FLD_RANGE(sccp_users, called_pc, "Called DPCs", 0xFFFFFF, "DPCs for which this protocol is to be used"),
+ UAT_FLD_RANGE(sccp_users, called_ssn, "Called SSNs", 255, "Called SSNs for which this protocol is to be used"),
+ UAT_FLD_VS(sccp_users, user, "User protocol", sccp_users_vals, "The User Protocol"),
+ UAT_END_FIELDS
};
- uat_t* users_uat = uat_new("SCCP Users Table", sizeof(sccp_user_t),
- "sccp_users", TRUE, (void*) &sccp_users,
- &num_sccp_users, UAT_CAT_PORTS, "ChSccpUsers",
- sccp_users_copy_cb, sccp_users_update_cb,
- sccp_users_free_cb, NULL, users_flds );
+ uat_t *users_uat = uat_new("SCCP Users Table", sizeof(sccp_user_t),
+ "sccp_users", TRUE, (void*) &sccp_users,
+ &num_sccp_users, UAT_CAT_PORTS, "ChSccpUsers",
+ sccp_users_copy_cb, sccp_users_update_cb,
+ sccp_users_free_cb, NULL, users_flds );
- /* Register the protocol name and description */
+ /* Register the protocol name and description */
proto_sccp = proto_register_protocol("Signalling Connection Control Part",
- "SCCP", "sccp");
+ "SCCP", "sccp");
register_dissector("sccp", dissect_sccp, proto_sccp);
@@ -3908,42 +4006,43 @@ proto_register_sccp(void)
sccp_module = prefs_register_protocol(proto_sccp, proto_reg_handoff_sccp);
prefs_register_uint_preference(sccp_module, "source_pc",
- "Source PC (in hex)",
- "The source point code (usually MSC) (to determine whether message is uplink or downlink)",
- 16, &sccp_source_pc_global);
+ "Source PC (in hex)",
+ "The source point code (usually MSC) (to determine whether message is uplink or downlink)",
+ 16, &sccp_source_pc_global);
prefs_register_bool_preference(sccp_module, "show_length", "Show length",
- "Show parameter length in the protocol tree",
- &sccp_show_length);
+ "Show parameter length in the protocol tree",
+ &sccp_show_length);
prefs_register_bool_preference(sccp_module, "defragment_xudt",
- "Reassemble XUDT messages",
- "Whether XUDT messages should be reassembled",
- &sccp_xudt_desegment);
+ "Reassemble XUDT messages",
+ "Whether XUDT messages should be reassembled",
+ &sccp_xudt_desegment);
prefs_register_bool_preference(sccp_module, "trace_sccp",
- "Trace Associations",
- "Whether to keep information about messages and their associations",
- &trace_sccp);
+ "Trace Associations",
+ "Whether to keep information about messages and their associations",
+ &trace_sccp);
prefs_register_bool_preference(sccp_module, "show_more_info",
- "Show key parameters in Info Column",
- "Show SLR, DLR, and CAUSE Parameters in the Information Column of the Summary",
- &show_key_params);
+ "Show key parameters in Info Column",
+ "Show SLR, DLR, and CAUSE Parameters in the Information Column of the Summary",
+ &show_key_params);
prefs_register_uat_preference(sccp_module, "users_table", "Users Table",
- "A table that enumerates user protocols to be used against specific PCs and SSNs",
- users_uat);
+ "A table that enumerates user protocols to be used against specific PCs and SSNs",
+ users_uat);
prefs_register_bool_preference(sccp_module, "set_addresses", "Set source and destination GT addresses",
- "Set the source and destination addresses to the GT digits (if RI=GT)."
- " This may affect TCAP's ability to recognize which messages belong to which TCAP session.", &set_addresses);
+ "Set the source and destination addresses to the GT digits (if RI=GT)."
+ " This may affect TCAP's ability to recognize which messages belong to which TCAP session.",
+ &set_addresses);
prefs_register_string_preference(sccp_module, "default_payload", "Default Payload",
- "The protocol which should be used to dissect the payload if nothing else has claimed it",
- &default_payload);
+ "The protocol which should be used to dissect the payload if nothing else has claimed it",
+ &default_payload);
register_init_routine(&init_sccp);
@@ -3958,7 +4057,7 @@ proto_reg_handoff_sccp(void)
{
dissector_handle_t sccp_handle;
- static gboolean initialised=FALSE;
+ static gboolean initialised = FALSE;
if (!initialised) {
sccp_handle = find_dissector("sccp");
@@ -3967,13 +4066,13 @@ proto_reg_handoff_sccp(void)
dissector_add_uint("mtp3.service_indicator", MTP_SI_SCCP, sccp_handle);
dissector_add_string("tali.opcode", "sccp", sccp_handle);
- data_handle = find_dissector("data");
- tcap_handle = find_dissector("tcap");
- ranap_handle = find_dissector("ranap");
- bssap_handle = find_dissector("bssap");
+ data_handle = find_dissector("data");
+ tcap_handle = find_dissector("tcap");
+ ranap_handle = find_dissector("ranap");
+ bssap_handle = find_dissector("bssap");
gsmmap_handle = find_dissector("gsm_map");
- camel_handle = find_dissector("camel");
- inap_handle = find_dissector("inap");
+ camel_handle = find_dissector("camel");
+ inap_handle = find_dissector("inap");
initialised = TRUE;
}
diff --git a/epan/dissectors/packet-sccpmg.c b/epan/dissectors/packet-sccpmg.c
index 049205a92b..02a5d0d787 100644
--- a/epan/dissectors/packet-sccpmg.c
+++ b/epan/dissectors/packet-sccpmg.c
@@ -37,8 +37,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-scsi-sbc.c b/epan/dissectors/packet-scsi-sbc.c
index d1bb876aa9..6bfa9f5f07 100644
--- a/epan/dissectors/packet-scsi-sbc.c
+++ b/epan/dissectors/packet-scsi-sbc.c
@@ -115,6 +115,8 @@ static int hf_scsi_sbc_verify_flags = -1;
static int hf_scsi_sbc_wrprotect = -1;
static int hf_scsi_sbc_wrverify_flags = -1;
static int hf_scsi_sbc_writesame_flags = -1;
+static int hf_scsi_sbc_anchor = -1;
+static int hf_scsi_sbc_unmap = -1;
static int hf_scsi_sbc_pbdata = -1;
static int hf_scsi_sbc_lbdata = -1;
static int hf_scsi_sbc_xdread_flags = -1;
@@ -123,6 +125,23 @@ static int hf_scsi_sbc_disable_write = -1;
static int hf_scsi_sbc_xdwrite_flags = -1;
static int hf_scsi_sbc_xdwriteread_flags = -1;
static int hf_scsi_sbc_xpwrite_flags = -1;
+static int hf_scsi_sbc_unmap_flags = -1;
+static int hf_scsi_sbc_unmap_anchor = -1;
+static int hf_scsi_sbc_unmap_data_length = -1;
+static int hf_scsi_sbc_unmap_block_descriptor_data_length = -1;
+static int hf_scsi_sbc_unmap_lba = -1;
+static int hf_scsi_sbc_unmap_num_blocks = -1;
+static int hf_scsi_sbc_ptype = -1;
+static int hf_scsi_sbc_prot_en = -1;
+static int hf_scsi_sbc_p_i_exponent = -1;
+static int hf_scsi_sbc_lbppbe = -1;
+static int hf_scsi_sbc_lbpme = -1;
+static int hf_scsi_sbc_lbprz = -1;
+static int hf_scsi_sbc_lalba = -1;
+static int hf_scsi_sbc_get_lba_status_lba = -1;
+static int hf_scsi_sbc_get_lba_status_data_length = -1;
+static int hf_scsi_sbc_get_lba_status_num_blocks = -1;
+static int hf_scsi_sbc_get_lba_status_provisioning_status = -1;
static gint ett_scsi_format_unit = -1;
static gint ett_scsi_prefetch = -1;
@@ -141,7 +160,9 @@ static gint ett_scsi_synccache = -1;
static gint ett_scsi_verify = -1;
static gint ett_scsi_wrverify = -1;
static gint ett_scsi_writesame = -1;
-
+static gint ett_scsi_unmap = -1;
+static gint ett_scsi_unmap_block_descriptor = -1;
+static gint ett_scsi_lba_status_descriptor = -1;
static const true_false_string dpo_tfs = {
@@ -679,6 +700,20 @@ static const value_string scsi_ssu_pwrcnd_val[] = {
{0, NULL},
};
+static const value_string scsi_ptype_val[] = {
+ {0x0, "Type 1 protection" },
+ {0x1, "Type 2 protection" },
+ {0x2, "Type 3 protection" },
+ {0, NULL},
+};
+
+static const value_string scsi_provisioning_type_val[] = {
+ {0x0, "The LBA is MAPPED" },
+ {0x1, "The LBA is DEALLOCATED" },
+ {0x2, "The LBA is ANCHORED" },
+ {0, NULL},
+};
+
void
dissect_sbc_startstopunit (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
guint offset, gboolean isreq _U_, gboolean iscdb,
@@ -1009,6 +1044,8 @@ dissect_sbc_writesame10 (tvbuff_t *tvb, packet_info *pinfo _U_,
{
static const int *writesame10_fields[] = {
&hf_scsi_sbc_wrprotect,
+ &hf_scsi_sbc_anchor,
+ &hf_scsi_sbc_unmap,
&hf_scsi_sbc_pbdata,
&hf_scsi_sbc_lbdata,
NULL
@@ -1036,6 +1073,8 @@ dissect_sbc_writesame16 (tvbuff_t *tvb, packet_info *pinfo _U_,
{
static const int *writesame16_fields[] = {
&hf_scsi_sbc_wrprotect,
+ &hf_scsi_sbc_anchor,
+ &hf_scsi_sbc_unmap,
&hf_scsi_sbc_pbdata,
&hf_scsi_sbc_lbdata,
NULL
@@ -1056,6 +1095,59 @@ dissect_sbc_writesame16 (tvbuff_t *tvb, packet_info *pinfo _U_,
}
static void
+dissect_sbc_unmap (tvbuff_t *tvb, packet_info *pinfo _U_,
+ proto_tree *tree, guint offset, gboolean isreq,
+ gboolean iscdb,
+ guint payload_len _U_, scsi_task_data_t *cdata _U_)
+{
+ static const int *unmap_fields[] = {
+ &hf_scsi_sbc_unmap_anchor,
+ NULL
+ };
+
+ if (!tree)
+ return;
+
+ if (isreq && iscdb) {
+ proto_tree_add_bitmask(tree, tvb, offset, hf_scsi_sbc_unmap_flags,
+ ett_scsi_unmap, unmap_fields, ENC_BIG_ENDIAN);
+ proto_tree_add_item (tree, hf_scsi_sbc_group, tvb, offset+5, 1, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item (tree, hf_scsi_sbc_alloclen16, tvb, offset+6, 2, ENC_BIG_ENDIAN);
+
+ proto_tree_add_bitmask(tree, tvb, offset+8, hf_scsi_control,
+ ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
+ } else if (isreq) {
+ proto_tree_add_item (tree, hf_scsi_sbc_unmap_data_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item (tree, hf_scsi_sbc_unmap_block_descriptor_data_length, tvb, offset+2, 2, ENC_BIG_ENDIAN);
+ offset += 8;
+ while (tvb_reported_length_remaining(tvb, offset) >=16) {
+ proto_tree *tr;
+ proto_item *it;
+ gint64 lba;
+ gint32 num_blocks;
+
+ it = proto_tree_add_text(tree, tvb, offset, 16, "UNMAP Block Descriptor: LBA ");
+ tr = proto_item_add_subtree(it, ett_scsi_unmap_block_descriptor);
+
+ proto_tree_add_item (tr, hf_scsi_sbc_unmap_lba, tvb, offset, 8, ENC_BIG_ENDIAN);
+ lba = tvb_get_ntoh64 (tvb, offset);
+
+ proto_tree_add_item (tr, hf_scsi_sbc_unmap_num_blocks, tvb, offset+8, 4, ENC_BIG_ENDIAN);
+ num_blocks = tvb_get_ntohl(tvb, offset+8);
+
+ if (num_blocks > 1) {
+ proto_item_append_text (it, "%" G_GINT64_MODIFIER "u-%" G_GINT64_MODIFIER "u ", lba, lba+num_blocks-1);
+ } else {
+ proto_item_append_text (it, "%" G_GINT64_MODIFIER "u ", lba);
+ }
+
+ offset += 16;
+ }
+ }
+}
+
+static void
dissect_sbc_readdefectdata12 (tvbuff_t *tvb, packet_info *pinfo _U_,
proto_tree *tree, guint offset, gboolean isreq,
gboolean iscdb,
@@ -1114,6 +1206,7 @@ const value_string service_action_vals[] = {
{EXTENDED_FORM, "Extended Form"},
{SERVICE_READ_CAPACITY16, "Read Capacity(16)"},
{SERVICE_READ_LONG16, "Read Long(16)"},
+ {SERVICE_GET_LBA_STATUS, "Get LBA Status"},
{0, NULL}
};
@@ -1129,7 +1222,7 @@ dissect_sbc_serviceactionin16 (tvbuff_t *tvb, packet_info *pinfo _U_,
guint8 service_action;
guint32 block_len;
guint64 len, tot_len;
- char *un;
+ const char *un;
static const int *pmi_fields[] = {
&hf_scsi_sbc_pmi,
NULL
@@ -1196,6 +1289,28 @@ dissect_sbc_serviceactionin16 (tvbuff_t *tvb, packet_info *pinfo _U_,
offset++;
break;
+ case SERVICE_GET_LBA_STATUS:
+ proto_tree_add_text (tree, tvb, offset, 1,
+ "Service Action: %s",
+ val_to_str (service_action,
+ service_action_vals,
+ "Unknown (0x%02x)"));
+ offset++;
+
+ proto_tree_add_item (tree, hf_scsi_sbc_get_lba_status_lba, tvb, offset, 8, ENC_BIG_ENDIAN);
+ offset += 8;
+
+ proto_tree_add_item (tree, hf_scsi_sbc_alloclen32, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ /* reserved */
+ offset++;
+
+ proto_tree_add_bitmask(tree, tvb, offset, hf_scsi_control,
+ ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
+ offset++;
+
+ break;
};
} else if (!iscdb) {
if(cdata && cdata->itlq){
@@ -1212,7 +1327,62 @@ dissect_sbc_serviceactionin16 (tvbuff_t *tvb, packet_info *pinfo _U_,
proto_tree_add_text (tree, tvb, offset, 8, "LBA: %" G_GINT64_MODIFIER "u (%" G_GINT64_MODIFIER "u %s)",
len, tot_len, un);
proto_tree_add_item (tree, hf_scsi_sbc_blocksize, tvb, offset+8, 4, ENC_BIG_ENDIAN);
+
+
+ proto_tree_add_item (tree, hf_scsi_sbc_prot_en, tvb, offset+12, 1, ENC_BIG_ENDIAN);
+ if (tvb_get_guint8(tvb, offset+12) & 0x01) {
+ /* only decode the protection type if protection is enabled */
+ proto_tree_add_item (tree, hf_scsi_sbc_ptype, tvb, offset+12, 1, ENC_BIG_ENDIAN);
+ }
+
+ proto_tree_add_item (tree, hf_scsi_sbc_p_i_exponent, tvb, offset+13, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item (tree, hf_scsi_sbc_lbppbe, tvb, offset+13, 1, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item (tree, hf_scsi_sbc_lbpme, tvb, offset+14, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item (tree, hf_scsi_sbc_lbprz, tvb, offset+14, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item (tree, hf_scsi_sbc_lalba, tvb, offset+14, 2, ENC_BIG_ENDIAN);
+
break;
+ case SERVICE_GET_LBA_STATUS:
+ proto_tree_add_item (tree, hf_scsi_sbc_get_lba_status_data_length, tvb, offset, 4, ENC_BIG_ENDIAN);
+ block_len = tvb_get_ntohl (tvb, offset);
+ offset += 4;
+
+ /* reserved */
+ offset += 4;
+
+ while (tvb_length_remaining(tvb, offset) >= 16) {
+ proto_tree *tr;
+ proto_item *it;
+ guint64 lba;
+ guint32 num_blocks;
+ guint8 type;
+
+ it = proto_tree_add_text(tree, tvb, offset, 16, "LBA Status Descriptor: ");
+ tr = proto_item_add_subtree(it, ett_scsi_lba_status_descriptor);
+
+ proto_tree_add_item (tr, hf_scsi_sbc_get_lba_status_lba, tvb, offset, 8, ENC_BIG_ENDIAN);
+ lba = tvb_get_ntoh64(tvb, offset);
+ offset += 8;
+
+ proto_tree_add_item (tr, hf_scsi_sbc_get_lba_status_num_blocks, tvb, offset, 4, ENC_BIG_ENDIAN);
+ num_blocks = tvb_get_ntohl(tvb, offset);
+ offset += 4;
+
+ proto_tree_add_item (tr, hf_scsi_sbc_get_lba_status_provisioning_status, tvb, offset, 1, ENC_BIG_ENDIAN);
+ type = tvb_get_guint8(tvb, offset) & 0x07;
+ offset++;
+
+ /* reserved */
+ offset += 3;
+
+ proto_item_append_text (it, "%" G_GINT64_MODIFIER "u-%" G_GINT64_MODIFIER "u %s",
+ lba,
+ lba + num_blocks - 1,
+ val_to_str(type, scsi_provisioning_type_val, "Unknown (0x%02x)")
+ );
+ }
+ break;
}
}
}
@@ -1265,6 +1435,7 @@ const value_string scsi_sbc_vals[] = {
{SCSI_SBC_SYNCCACHE10 , "Synchronize Cache(10)"},
{SCSI_SBC_SYNCCACHE16 , "Synchronize Cache(16)"},
{SCSI_SPC_TESTUNITRDY , "Test Unit Ready"},
+ {SCSI_SBC_UNMAP , "Unmap"},
{SCSI_SBC_VERIFY10 , "Verify(10)"},
{SCSI_SBC_VERIFY12 , "Verify(12)"},
{SCSI_SBC_VERIFY16 , "Verify(16)"},
@@ -1359,7 +1530,7 @@ scsi_cdb_table_t scsi_sbc_table[256] = {
/*SBC 0x3f*/{dissect_sbc_writelong10},
/*SBC 0x40*/{NULL},
/*SBC 0x41*/{dissect_sbc_writesame10},
-/*SBC 0x42*/{NULL},
+/*SBC 0x42*/{dissect_sbc_unmap},
/*SBC 0x43*/{NULL},
/*SBC 0x44*/{NULL},
/*SBC 0x45*/{NULL},
@@ -1748,6 +1919,12 @@ proto_register_scsi_sbc(void)
{ &hf_scsi_sbc_writesame_flags,
{"Flags", "scsi.sbc.writesame_flags", FT_UINT8, BASE_HEX,
NULL, 0, NULL, HFILL}},
+ { &hf_scsi_sbc_anchor,
+ {"ANCHOR", "scsi.sbc.anchor", FT_BOOLEAN, 8, NULL,
+ 0x10, NULL, HFILL}},
+ { &hf_scsi_sbc_unmap,
+ {"UNMAP", "scsi.sbc.unmap", FT_BOOLEAN, 8, NULL,
+ 0x08, NULL, HFILL}},
{ &hf_scsi_sbc_pbdata,
{"PBDATA", "scsi.sbc.pbdata", FT_BOOLEAN, 8, NULL,
0x04, NULL, HFILL}},
@@ -1772,6 +1949,57 @@ proto_register_scsi_sbc(void)
{ &hf_scsi_sbc_xpwrite_flags,
{"Flags", "scsi.sbc.xpwrite.flags", FT_UINT8, BASE_HEX, NULL, 0x0, NULL,
HFILL}},
+ { &hf_scsi_sbc_unmap_anchor,
+ {"ANCHOR", "scsi.sbc.unmap.anchor", FT_BOOLEAN, 8, NULL,
+ 0x01, NULL, HFILL}},
+ { &hf_scsi_sbc_unmap_flags,
+ {"Flags", "scsi.sbc.unmap_flags", FT_UINT8, BASE_HEX,
+ NULL, 0, NULL, HFILL}},
+ { &hf_scsi_sbc_unmap_data_length,
+ {"Data Length", "scsi.sbc.unmap.data_length", FT_UINT16, BASE_DEC,
+ NULL, 0, NULL, HFILL}},
+ { &hf_scsi_sbc_unmap_block_descriptor_data_length,
+ {"Block Descriptor Data Length", "scsi.sbc.unmap.block_descriptor_data_length", FT_UINT16, BASE_DEC,
+ NULL, 0, NULL, HFILL}},
+ { &hf_scsi_sbc_unmap_lba,
+ {"LBA", "scsi.sbc.unmap.lba", FT_UINT64, BASE_DEC,
+ NULL, 0, NULL, HFILL}},
+ { &hf_scsi_sbc_unmap_num_blocks,
+ {"Num Blocks", "scsi.sbc.unmap.num_blocks", FT_UINT32, BASE_DEC,
+ NULL, 0, NULL, HFILL}},
+ { &hf_scsi_sbc_ptype,
+ {"PTYPE", "scsi.sbc.ptype", FT_UINT8, BASE_DEC,
+ VALS(scsi_ptype_val), 0x0e, NULL, HFILL}},
+ { &hf_scsi_sbc_prot_en,
+ {"PROT_EN", "scsi.sbc.prot_en", FT_BOOLEAN, 8,
+ NULL, 0x01, NULL, HFILL}},
+ { &hf_scsi_sbc_p_i_exponent,
+ {"P_I_EXPONENT", "scsi.sbc.p_i_exponent", FT_UINT8, BASE_DEC,
+ NULL, 0xf0, NULL, HFILL}},
+ { &hf_scsi_sbc_lbppbe,
+ {"LOGICAL_BLOCKS_PER_PHYSICAL_BLOCK_EXPONENT", "scsi.sbc.lbppbe", FT_UINT8, BASE_DEC,
+ NULL, 0x0f, NULL, HFILL}},
+ { &hf_scsi_sbc_lbpme,
+ {"LBPME", "scsi.sbc.lbpme", FT_BOOLEAN, 8,
+ NULL, 0x80, NULL, HFILL}},
+ { &hf_scsi_sbc_lbprz,
+ {"LBPRZ", "scsi.sbc.lbprz", FT_BOOLEAN, 8,
+ NULL, 0x40, NULL, HFILL}},
+ { &hf_scsi_sbc_lalba,
+ {"LOWEST_ALIGNED_LBA", "scsi.sbc.lalba", FT_UINT16, BASE_DEC,
+ NULL, 0x3fff, NULL, HFILL}},
+ { &hf_scsi_sbc_get_lba_status_lba,
+ {"LBA", "scsi.sbc.get_lba_status.start_lba", FT_UINT64, BASE_DEC,
+ NULL, 0, NULL, HFILL}},
+ { &hf_scsi_sbc_get_lba_status_data_length,
+ {"Data Length", "scsi.sbc.get_lba_status.data_length", FT_UINT32, BASE_DEC,
+ NULL, 0, NULL, HFILL}},
+ { &hf_scsi_sbc_get_lba_status_num_blocks,
+ {"Num Blocks", "scsi.sbc.get_lba_status.num_blocks", FT_UINT32, BASE_DEC,
+ NULL, 0, NULL, HFILL}},
+ { &hf_scsi_sbc_get_lba_status_provisioning_status,
+ {"Provisioning Type", "scsi.sbc.get_lba_status.provisioning_type", FT_UINT8, BASE_DEC,
+ VALS(scsi_provisioning_type_val), 0x07, NULL, HFILL}},
};
@@ -1793,7 +2021,10 @@ proto_register_scsi_sbc(void)
&ett_scsi_synccache,
&ett_scsi_verify,
&ett_scsi_wrverify,
- &ett_scsi_writesame
+ &ett_scsi_writesame,
+ &ett_scsi_unmap,
+ &ett_scsi_unmap_block_descriptor,
+ &ett_scsi_lba_status_descriptor
};
/* Register the protocol name and description */
diff --git a/epan/dissectors/packet-scsi-sbc.h b/epan/dissectors/packet-scsi-sbc.h
index 5dd6f0be3c..050e8b282b 100644
--- a/epan/dissectors/packet-scsi-sbc.h
+++ b/epan/dissectors/packet-scsi-sbc.h
@@ -55,6 +55,7 @@
#define SCSI_SBC_STARTSTOPUNIT 0x1B
#define SCSI_SBC_SYNCCACHE10 0x35
#define SCSI_SBC_SYNCCACHE16 0x91
+#define SCSI_SBC_UNMAP 0x42
#define SCSI_SBC_VERIFY10 0x2F
#define SCSI_SBC_VERIFY12 0xAF
#define SCSI_SBC_VERIFY16 0x8F
diff --git a/epan/dissectors/packet-scsi.c b/epan/dissectors/packet-scsi.c
index 977f7449f4..86dc36579d 100644
--- a/epan/dissectors/packet-scsi.c
+++ b/epan/dissectors/packet-scsi.c
@@ -41,23 +41,23 @@
*
* There are four main routines that are provided:
* o dissect_scsi_cdb - invoked on receiving a SCSI Command
- * void dissect_scsi_cdb (tvbuff_t *, packet_info *, proto_tree *,
- * guint, itlq_nexus_t *, itl_nexus_t *);
+ * void dissect_scsi_cdb(tvbuff_t *, packet_info *, proto_tree *,
+ * guint, itlq_nexus_t *, itl_nexus_t *);
* o dissect_scsi_payload - invoked to decode SCSI responses
- * void dissect_scsi_payload (tvbuff_t *, packet_info *, proto_tree *, guint,
- * gboolean, itlq_nexusu_t *, itl_nexus_t *,
- * guint32 relative_offset);
+ * void dissect_scsi_payload(tvbuff_t *, packet_info *, proto_tree *, guint,
+ * gboolean, itlq_nexusu_t *, itl_nexus_t *,
+ * guint32 relative_offset);
* The final parameter is the length of the response field that is negotiated
* as part of the SCSI transport layer. If this is not tracked by the
* transport, it can be set to 0.
* o dissect_scsi_rsp - invoked to dissect the scsi status code in a response
* SCSI task.
- * void dissect_scsi_rsp (tvbuff_t *, packet_info *, proto_tree *,
- * itlq_nexus_t *, itl_nexus_t *, guint8);
+ * void dissect_scsi_rsp(tvbuff_t *, packet_info *, proto_tree *,
+ * itlq_nexus_t *, itl_nexus_t *, guint8);
* o dissect_scsi_snsinfo - invoked to decode the sense data provided in case of
* an error.
- * void dissect_scsi_snsinfo (tvbuff_t *, packet_info *, proto_tree *, guint,
- * guint, itlq_nexus_t *, itl_nexus_t *);
+ * void dissect_scsi_snsinfo(tvbuff_t *, packet_info *, proto_tree *, guint,
+ * guint, itlq_nexus_t *, itl_nexus_t *);
*
* In addition to this, the other requirement made from the transport is to
* provide ITL and ITLQ structures that are persistent.
@@ -84,8 +84,8 @@
#endif
#include <glib.h>
-#include <epan/strutil.h>
#include <epan/packet.h>
+#include <epan/strutil.h>
#include <epan/prefs.h>
#include <epan/emem.h>
#include <epan/conversation.h>
@@ -111,8 +111,8 @@ static int hf_scsi_control_reserved = -1;
static int hf_scsi_control_naca = -1;
static int hf_scsi_control_obs1 = -1;
static int hf_scsi_control_obs2 = -1;
- int hf_scsi_control = -1;
- int hf_scsi_alloclen16 = -1;
+int hf_scsi_control = -1;
+int hf_scsi_alloclen16 = -1;
static int hf_scsi_alloclen32 = -1;
static int hf_scsi_time = -1;
static int hf_scsi_request_frame = -1;
@@ -298,11 +298,30 @@ static int hf_scsi_log_ta_aif = -1;
static int hf_scsi_log_ta_fwf = -1;
static int hf_scsi_log_ta_wmicf = -1;
static int hf_scsi_log_ta_wmoa = -1;
-
+static int hf_scsi_sbc_treshold_exponent = -1;
+static int hf_scsi_sbc_lbpu = -1;
+static int hf_scsi_sbc_lbpws = -1;
+static int hf_scsi_sbc_lbpws10 = -1;
+static int hf_scsi_sbc_lbprz = -1;
+static int hf_scsi_sbc_anc_sup = -1;
+static int hf_scsi_sbc_dp = -1;
+static int hf_scsi_sbc_ptype = -1;
+static int hf_scsi_block_limits_wsnz = -1;
+static int hf_scsi_block_limits_mcawl = -1;
+static int hf_scsi_block_limits_otlg = -1;
+static int hf_scsi_block_limits_mtl = -1;
+static int hf_scsi_block_limits_otl = -1;
+static int hf_scsi_block_limits_mpl = -1;
+static int hf_scsi_block_limits_mulc = -1;
+static int hf_scsi_block_limits_mubdc = -1;
+static int hf_scsi_block_limits_oug = -1;
+static int hf_scsi_block_limits_ugavalid = -1;
+static int hf_scsi_block_limits_uga = -1;
+static int hf_scsi_block_limits_mwsl = -1;
static gint ett_scsi = -1;
static gint ett_scsi_page = -1;
- gint ett_scsi_control = -1;
+gint ett_scsi_control = -1;
static gint ett_scsi_inq_control = -1;
static gint ett_scsi_inq_peripheral = -1;
static gint ett_scsi_inq_acaflags = -1;
@@ -341,8 +360,8 @@ const int *cdb_control_fields[6] = {
static void
scsi_defragment_init(void)
{
- fragment_table_init(&scsi_fragment_table);
- reassembled_table_init(&scsi_reassembled_table);
+ fragment_table_init(&scsi_fragment_table);
+ reassembled_table_init(&scsi_reassembled_table);
}
static const fragment_items scsi_frag_items = {
@@ -408,6 +427,12 @@ static const value_string scsi_spc_vals[] = {
{0, NULL},
};
+static const value_string provisioning_vals[] = {
+ {0, "No provisioning"},
+ {1, "Resource provisionied"},
+ {2, "Thin provisioned"},
+ {0, NULL},
+};
static const value_string log_flags_tmc_vals[] = {
{0, "Every update of the cumulative value"},
@@ -430,6 +455,7 @@ static const value_string scsi_select_report_val[] = {
#define SCSI_EVPD_ASCIIOPER 0x82
#define SCSI_EVPD_DEVID 0x83
#define SCSI_EVPD_BLKLIMITS 0xb0
+#define SCSI_EVPD_LBP 0xb2
static const value_string scsi_evpd_pagecode_val[] = {
{SCSI_EVPD_SUPPPG, "Supported Vital Product Data Pages"},
@@ -444,8 +470,9 @@ static const value_string scsi_evpd_pagecode_val[] = {
{SCSI_EVPD_DEVSERNUM, "Unit Serial Number Page"},
{SCSI_EVPD_OPER, "Implemented Operating Definition Page"},
{SCSI_EVPD_ASCIIOPER, "ASCII Implemented Operating Definition Page"},
- {SCSI_EVPD_DEVID, "Device Identification Page"},
+ {SCSI_EVPD_DEVID, "Device Identification Page"},
{SCSI_EVPD_BLKLIMITS, "Block Limits Page"},
+ {SCSI_EVPD_LBP, "Logical Block Provisioning Page"},
{0, NULL},
};
@@ -812,7 +839,7 @@ typedef void (*log_parameter_dissector)(tvbuff_t *tvb, packet_info *pinfo, proto
typedef struct _log_page_parameters_t {
guint32 number;
- char *name;
+ const char *name;
log_parameter_dissector dissector;
} log_page_parameters_t;
static const log_page_parameters_t tape_alert_log_parameters[] = {
@@ -1069,19 +1096,19 @@ static const value_string scsi_devtype_val[] = {
};
static const enum_val_t scsi_devtype_options[] = {
- {"block", "Block Device", SCSI_DEV_SBC},
- {"sequential", "Sequential Device", SCSI_DEV_SSC},
- {"objectbased", "Object Based Storage Device", SCSI_DEV_OSD},
- {"mediumchanger", "Medium Changer Device", SCSI_DEV_SMC},
- {"cdrom", "Multimedia Device", SCSI_DEV_CDROM},
+ {"block", "Block Device", SCSI_DEV_SBC},
+ {"sequential", "Sequential Device", SCSI_DEV_SSC},
+ {"objectbased", "Object Based Storage Device", SCSI_DEV_OSD},
+ {"mediumchanger", "Medium Changer Device", SCSI_DEV_SMC},
+ {"cdrom", "Multimedia Device", SCSI_DEV_CDROM},
{NULL, NULL, -1},
};
static const value_string scsi_inquiry_vers_val[] = {
- {0, "No Compliance to any Standard"},
- {2, "Compliance to ANSI X3.131:1994"},
- {3, "Compliance to ANSI X3.301:1997"},
- {4, "Compliance to SPC-2"},
+ {0x00, "No Compliance to any Standard"},
+ {0x02, "Compliance to ANSI X3.131:1994"},
+ {0x03, "Compliance to ANSI X3.301:1997"},
+ {0x04, "Compliance to SPC-2"},
{0x80, "Compliance to ISO/IEC 9316:1995"},
{0x82, "Compliance to ISO/IEC 9316:1995 and to ANSI X3.131:1994"},
{0x83, "Compliance to ISO/IEC 9316:1995 and to ANSI X3.301:1997"},
@@ -1957,9 +1984,9 @@ static gint scsi_def_devtype = SCSI_DEV_SBC;
typedef struct _cmdset_t {
- int hf_opcode;
+ int hf_opcode;
const value_string *cdb_vals;
- scsi_cdb_table_t *cdb_table;
+ scsi_cdb_table_t *cdb_table;
} cmdset_t;
static cmdset_t *get_cmdset_data(itlq_nexus_t *itlq, itl_nexus_t *itl);
@@ -1967,113 +1994,113 @@ static cmdset_t *get_cmdset_data(itlq_nexus_t *itlq, itl_nexus_t *itl);
static dissector_handle_t data_handle;
static void
-dissect_scsi_evpd (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
- guint offset, guint tot_len _U_)
+dissect_scsi_evpd(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
+ guint offset, guint tot_len _U_)
{
proto_tree *evpd_tree;
proto_item *ti;
- guint pcode, plen, i, idlen;
- guint8 codeset, flags;
+ guint pcode, plen, i, idlen;
+ guint8 codeset, flags;
if (tree) {
- pcode = tvb_get_guint8 (tvb, offset+1);
- plen = tvb_get_guint8 (tvb, offset+3);
- ti = proto_tree_add_text (tree, tvb, offset, plen+4, "Page Code: %s",
- val_to_str (pcode, scsi_evpd_pagecode_val,
- "Unknown (0x%08x)"));
- evpd_tree = proto_item_add_subtree (ti, ett_scsi_page);
-
- proto_tree_add_item (evpd_tree, hf_scsi_inq_qualifier, tvb, offset,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (evpd_tree, hf_scsi_inq_devtype, tvb, offset,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_text (evpd_tree, tvb, offset+1, 1,
- "Page Code: %s",
- val_to_str (pcode, scsi_evpd_pagecode_val,
- "Unknown (0x%02x)"));
- proto_tree_add_text (evpd_tree, tvb, offset+3, 1,
- "Page Length: %u", plen);
+ pcode = tvb_get_guint8(tvb, offset+1);
+ plen = tvb_get_guint8(tvb, offset+3);
+ ti = proto_tree_add_text(tree, tvb, offset, plen+4, "Page Code: %s",
+ val_to_str(pcode, scsi_evpd_pagecode_val,
+ "Unknown (0x%08x)"));
+ evpd_tree = proto_item_add_subtree(ti, ett_scsi_page);
+
+ proto_tree_add_item(evpd_tree, hf_scsi_inq_qualifier, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(evpd_tree, hf_scsi_inq_devtype, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_text(evpd_tree, tvb, offset+1, 1,
+ "Page Code: %s",
+ val_to_str(pcode, scsi_evpd_pagecode_val,
+ "Unknown (0x%02x)"));
+ proto_tree_add_text(evpd_tree, tvb, offset+3, 1,
+ "Page Length: %u", plen);
offset += 4;
switch (pcode) {
case SCSI_EVPD_SUPPPG:
for (i = 0; i < plen; i++) {
- proto_tree_add_text (evpd_tree, tvb, offset+i, 1,
- "Supported Page: %s",
- val_to_str (tvb_get_guint8 (tvb, offset+i),
- scsi_evpd_pagecode_val,
- "Unknown (0x%02x)"));
+ proto_tree_add_text(evpd_tree, tvb, offset+i, 1,
+ "Supported Page: %s",
+ val_to_str(tvb_get_guint8(tvb, offset+i),
+ scsi_evpd_pagecode_val,
+ "Unknown (0x%02x)"));
}
break;
case SCSI_EVPD_DEVID:
while (plen != 0) {
- codeset = tvb_get_guint8 (tvb, offset) & 0x0F;
- proto_tree_add_text (evpd_tree, tvb, offset, 1,
- "Code Set: %s",
- val_to_str (codeset,
- scsi_devid_codeset_val,
- "Unknown (0x%02x)"));
+ codeset = tvb_get_guint8(tvb, offset) & 0x0F;
+ proto_tree_add_text(evpd_tree, tvb, offset, 1,
+ "Code Set: %s",
+ val_to_str(codeset,
+ scsi_devid_codeset_val,
+ "Unknown (0x%02x)"));
plen -= 1;
offset += 1;
if (plen < 1) {
- proto_tree_add_text (evpd_tree, tvb, offset, 0,
- "Product data goes past end of page");
+ proto_tree_add_text(evpd_tree, tvb, offset, 0,
+ "Product data goes past end of page");
break;
}
- flags = tvb_get_guint8 (tvb, offset);
- proto_tree_add_text (evpd_tree, tvb, offset, 1,
- "Association: %s",
- val_to_str ((flags & 0x30) >> 4,
- scsi_devid_assoc_val,
- "Unknown (0x%02x)"));
- proto_tree_add_text (evpd_tree, tvb, offset, 1,
- "Identifier Type: %s",
- val_to_str ((flags & 0x0F),
- scsi_devid_idtype_val,
- "Unknown (0x%02x)"));
+ flags = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(evpd_tree, tvb, offset, 1,
+ "Association: %s",
+ val_to_str((flags & 0x30) >> 4,
+ scsi_devid_assoc_val,
+ "Unknown (0x%02x)"));
+ proto_tree_add_text(evpd_tree, tvb, offset, 1,
+ "Identifier Type: %s",
+ val_to_str((flags & 0x0F),
+ scsi_devid_idtype_val,
+ "Unknown (0x%02x)"));
plen -= 1;
offset += 1;
/* Skip reserved byte */
if (plen < 1) {
- proto_tree_add_text (evpd_tree, tvb, offset, 0,
- "Product data goes past end of page");
+ proto_tree_add_text(evpd_tree, tvb, offset, 0,
+ "Product data goes past end of page");
break;
}
plen -= 1;
offset += 1;
if (plen < 1) {
- proto_tree_add_text (evpd_tree, tvb, offset, 0,
- "Product data goes past end of page");
+ proto_tree_add_text(evpd_tree, tvb, offset, 0,
+ "Product data goes past end of page");
break;
}
- idlen = tvb_get_guint8 (tvb, offset);
- proto_tree_add_text (evpd_tree, tvb, offset, 1,
- "Identifier Length: %u", idlen);
+ idlen = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(evpd_tree, tvb, offset, 1,
+ "Identifier Length: %u", idlen);
plen -= 1;
offset += 1;
if (idlen != 0) {
if (plen < idlen) {
- proto_tree_add_text (evpd_tree, tvb, offset, 0,
- "Product data goes past end of page");
+ proto_tree_add_text(evpd_tree, tvb, offset, 0,
+ "Product data goes past end of page");
break;
}
if (codeset == CODESET_ASCII) {
- proto_tree_add_text (evpd_tree, tvb, offset, idlen,
- "Identifier: %s",
- tvb_format_text (tvb, offset,
- idlen));
+ proto_tree_add_text(evpd_tree, tvb, offset, idlen,
+ "Identifier: %s",
+ tvb_format_text(tvb, offset,
+ idlen));
} else {
/*
* XXX - decode this based on the identifier type,
* if the codeset is CODESET_BINARY?
*/
- proto_tree_add_text (evpd_tree, tvb, offset, idlen,
- "Identifier: %s",
- tvb_bytes_to_str (tvb, offset,
- idlen));
+ proto_tree_add_text(evpd_tree, tvb, offset, idlen,
+ "Identifier: %s",
+ tvb_bytes_to_str(tvb, offset,
+ idlen));
}
plen -= idlen;
offset += idlen;
@@ -2082,41 +2109,93 @@ dissect_scsi_evpd (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
break;
case SCSI_EVPD_DEVSERNUM:
if (plen > 0) {
- proto_tree_add_text (evpd_tree, tvb, offset, plen,
- "Product Serial Number: %s",
- tvb_format_text (tvb, offset, plen));
+ proto_tree_add_text(evpd_tree, tvb, offset, plen,
+ "Product Serial Number: %s",
+ tvb_format_text(tvb, offset, plen));
}
break;
+ case SCSI_EVPD_BLKLIMITS:
+ proto_tree_add_item(evpd_tree, hf_scsi_block_limits_wsnz, tvb, offset, 1, ENC_NA);
+ offset += 1;
+
+ proto_tree_add_item(evpd_tree, hf_scsi_block_limits_mcawl, tvb, offset, 1, ENC_NA);
+ offset += 1;
+
+ proto_tree_add_item(evpd_tree, hf_scsi_block_limits_otlg, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ proto_tree_add_item(evpd_tree, hf_scsi_block_limits_mtl, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(evpd_tree, hf_scsi_block_limits_otl, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(evpd_tree, hf_scsi_block_limits_mpl, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(evpd_tree, hf_scsi_block_limits_mulc, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(evpd_tree, hf_scsi_block_limits_mubdc, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(evpd_tree, hf_scsi_block_limits_oug, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(evpd_tree, hf_scsi_block_limits_ugavalid, tvb, offset, 1, ENC_NA);
+ proto_tree_add_item(evpd_tree, hf_scsi_block_limits_uga, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(evpd_tree, hf_scsi_block_limits_mwsl, tvb, offset, 8, ENC_BIG_ENDIAN);
+ offset += 8;
+
+ break;
+ case SCSI_EVPD_LBP:
+ proto_tree_add_item(evpd_tree, hf_scsi_sbc_treshold_exponent, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+
+ proto_tree_add_item(evpd_tree, hf_scsi_sbc_lbpu, tvb, offset, 1, ENC_NA);
+ proto_tree_add_item(evpd_tree, hf_scsi_sbc_lbpws, tvb, offset, 1, ENC_NA);
+ proto_tree_add_item(evpd_tree, hf_scsi_sbc_lbpws10, tvb, offset, 1, ENC_NA);
+ proto_tree_add_item(evpd_tree, hf_scsi_sbc_lbprz, tvb, offset, 1, ENC_NA);
+ proto_tree_add_item(evpd_tree, hf_scsi_sbc_anc_sup, tvb, offset, 1, ENC_NA);
+ proto_tree_add_item(evpd_tree, hf_scsi_sbc_dp, tvb, offset, 1, ENC_NA);
+ offset += 1;
+
+ proto_tree_add_item(evpd_tree, hf_scsi_sbc_ptype, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+
+ break;
}
}
}
static void
-dissect_scsi_cmddt (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
- guint offset, guint tot_len _U_)
+dissect_scsi_cmddt(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
+ guint offset, guint tot_len _U_)
{
proto_tree *cmdt_tree;
proto_item *ti;
- guint plen;
+ guint plen;
if (tree) {
- plen = tvb_get_guint8 (tvb, offset+5);
- ti = proto_tree_add_text (tree, tvb, offset, plen, "Command Data");
- cmdt_tree = proto_item_add_subtree (ti, ett_scsi_page);
-
- proto_tree_add_item (cmdt_tree, hf_scsi_inq_qualifier, tvb, offset,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (cmdt_tree, hf_scsi_inq_devtype, tvb, offset,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_text (cmdt_tree, tvb, offset+1, 1, "Support: %s",
- val_to_str (tvb_get_guint8 (tvb, offset+1) & 0x7,
- scsi_cmdt_supp_val, "Unknown (%d)"));
- proto_tree_add_text (cmdt_tree, tvb, offset+2, 1, "Version: %s",
- val_to_str_ext (tvb_get_guint8 (tvb, offset+2),
- &scsi_verdesc_val_ext,
- "Unknown (0x%02x)"));
- proto_tree_add_text (cmdt_tree, tvb, offset+5, 1, "CDB Size: %u",
- plen);
+ plen = tvb_get_guint8(tvb, offset+5);
+ ti = proto_tree_add_text(tree, tvb, offset, plen, "Command Data");
+ cmdt_tree = proto_item_add_subtree(ti, ett_scsi_page);
+
+ proto_tree_add_item(cmdt_tree, hf_scsi_inq_qualifier, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(cmdt_tree, hf_scsi_inq_devtype, tvb, offset,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_text(cmdt_tree, tvb, offset+1, 1, "Support: %s",
+ val_to_str(tvb_get_guint8(tvb, offset+1) & 0x7,
+ scsi_cmdt_supp_val, "Unknown (%d)"));
+ proto_tree_add_text(cmdt_tree, tvb, offset+2, 1, "Version: %s",
+ val_to_str_ext(tvb_get_guint8(tvb, offset+2),
+ &scsi_verdesc_val_ext,
+ "Unknown (0x%02x)"));
+ proto_tree_add_text(cmdt_tree, tvb, offset+5, 1, "CDB Size: %u",
+ plen);
}
}
@@ -2149,46 +2228,46 @@ static const value_string inq_tpgs_vals[] = {
static int
dissect_spc_inq_sccsflags(tvbuff_t *tvb, int offset, proto_tree *parent_tree)
{
- guint8 flags;
- proto_item *item=NULL;
- proto_tree *tree=NULL;
+ guint8 flags;
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
- if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_scsi_inq_sccsflags, tvb, offset, 1, ENC_BIG_ENDIAN);
- tree = proto_item_add_subtree (item, ett_scsi_inq_sccsflags);
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_scsi_inq_sccsflags, tvb, offset, 1, ENC_BIG_ENDIAN);
+ tree = proto_item_add_subtree(item, ett_scsi_inq_sccsflags);
}
- flags=tvb_get_guint8 (tvb, offset);
+ flags = tvb_get_guint8(tvb, offset);
/* SCCS (introduced in SPC-2) */
proto_tree_add_boolean(tree, hf_scsi_inq_sccs, tvb, offset, 1, flags);
- if(flags&SCSI_INQ_SCCSFLAGS_SCCS){
- proto_item_append_text(item, " SCCS");
+ if (flags&SCSI_INQ_SCCSFLAGS_SCCS) {
+ proto_item_append_text(item, " SCCS");
}
flags&=(~SCSI_INQ_SCCSFLAGS_SCCS);
/* ACC (introduced in SPC-3) */
proto_tree_add_boolean(tree, hf_scsi_inq_acc, tvb, offset, 1, flags);
- if(flags&SCSI_INQ_SCCSFLAGS_ACC){
- proto_item_append_text(item, " ACC");
+ if (flags&SCSI_INQ_SCCSFLAGS_ACC) {
+ proto_item_append_text(item, " ACC");
}
flags&=(~SCSI_INQ_SCCSFLAGS_ACC);
/* TPGS (introduced in SPC-3) */
- proto_tree_add_item (tree, hf_scsi_inq_tpgs, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_inq_tpgs, tvb, offset, 1, ENC_BIG_ENDIAN);
flags&=0xcf;
/* TPC (introduced in SPC-3) */
proto_tree_add_boolean(tree, hf_scsi_inq_tpc, tvb, offset, 1, flags);
- if(flags&SCSI_INQ_SCCSFLAGS_TPC){
- proto_item_append_text(item, " 3PC");
+ if (flags&SCSI_INQ_SCCSFLAGS_TPC) {
+ proto_item_append_text(item, " 3PC");
}
flags&=(~SCSI_INQ_SCCSFLAGS_TPC);
/* Protect (introduced in SPC-3) */
proto_tree_add_boolean(tree, hf_scsi_inq_protect, tvb, offset, 1, flags);
- if(flags&SCSI_INQ_SCCSFLAGS_PROTECT){
- proto_item_append_text(item, " PROTECT");
+ if (flags&SCSI_INQ_SCCSFLAGS_PROTECT) {
+ proto_item_append_text(item, " PROTECT");
}
flags&=(~SCSI_INQ_SCCSFLAGS_PROTECT);
@@ -2206,41 +2285,41 @@ dissect_spc_inq_sccsflags(tvbuff_t *tvb, int offset, proto_tree *parent_tree)
static int
dissect_spc_inq_bqueflags(tvbuff_t *tvb, int offset, proto_tree *parent_tree)
{
- guint8 flags;
- proto_item *item=NULL;
- proto_tree *tree=NULL;
+ guint8 flags;
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
- if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_scsi_inq_bqueflags, tvb, offset, 1, ENC_BIG_ENDIAN);
- tree = proto_item_add_subtree (item, ett_scsi_inq_bqueflags);
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_scsi_inq_bqueflags, tvb, offset, 1, ENC_BIG_ENDIAN);
+ tree = proto_item_add_subtree(item, ett_scsi_inq_bqueflags);
}
- flags=tvb_get_guint8 (tvb, offset);
+ flags = tvb_get_guint8(tvb, offset);
/* BQUE (introduced in SPC-2) */
proto_tree_add_boolean(tree, hf_scsi_inq_bque, tvb, offset, 1, flags);
- if(flags&SCSI_INQ_BQUEFLAGS_BQUE){
+ if (flags&SCSI_INQ_BQUEFLAGS_BQUE) {
proto_item_append_text(item, " BQue");
}
flags&=(~SCSI_INQ_BQUEFLAGS_BQUE);
/* EncServ */
proto_tree_add_boolean(tree, hf_scsi_inq_encserv, tvb, offset, 1, flags);
- if(flags&SCSI_INQ_BQUEFLAGS_ENCSERV){
+ if (flags&SCSI_INQ_BQUEFLAGS_ENCSERV) {
proto_item_append_text(item, " EncServ");
}
flags&=(~SCSI_INQ_BQUEFLAGS_ENCSERV);
/* MultiP */
proto_tree_add_boolean(tree, hf_scsi_inq_multip, tvb, offset, 1, flags);
- if(flags&SCSI_INQ_BQUEFLAGS_MULTIP){
+ if (flags&SCSI_INQ_BQUEFLAGS_MULTIP) {
proto_item_append_text(item, " MultiP");
}
flags&=(~SCSI_INQ_BQUEFLAGS_MULTIP);
/* MChngr */
proto_tree_add_boolean(tree, hf_scsi_inq_mchngr, tvb, offset, 1, flags);
- if(flags&SCSI_INQ_BQUEFLAGS_MCHNGR){
+ if (flags&SCSI_INQ_BQUEFLAGS_MCHNGR) {
proto_item_append_text(item, " MChngr");
}
flags&=(~SCSI_INQ_BQUEFLAGS_MCHNGR);
@@ -2258,41 +2337,41 @@ dissect_spc_inq_bqueflags(tvbuff_t *tvb, int offset, proto_tree *parent_tree)
static int
dissect_spc_inq_reladrflags(tvbuff_t *tvb, int offset, proto_tree *parent_tree)
{
- guint8 flags;
- proto_item *item=NULL;
- proto_tree *tree=NULL;
+ guint8 flags;
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
- if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_scsi_inq_reladrflags, tvb, offset, 1, ENC_BIG_ENDIAN);
- tree = proto_item_add_subtree (item, ett_scsi_inq_reladrflags);
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_scsi_inq_reladrflags, tvb, offset, 1, ENC_BIG_ENDIAN);
+ tree = proto_item_add_subtree(item, ett_scsi_inq_reladrflags);
}
- flags=tvb_get_guint8 (tvb, offset);
+ flags = tvb_get_guint8(tvb, offset);
/* RelAdr (obsolete in SPC-3 and later) */
proto_tree_add_boolean(tree, hf_scsi_inq_reladr, tvb, offset, 1, flags);
- if(flags&SCSI_INQ_RELADRFLAGS_RELADR){
+ if (flags&SCSI_INQ_RELADRFLAGS_RELADR) {
proto_item_append_text(item, " RelAdr");
}
flags&=(~SCSI_INQ_RELADRFLAGS_RELADR);
/* Sync */
proto_tree_add_boolean(tree, hf_scsi_inq_sync, tvb, offset, 1, flags);
- if(flags&SCSI_INQ_RELADRFLAGS_SYNC){
+ if (flags&SCSI_INQ_RELADRFLAGS_SYNC) {
proto_item_append_text(item, " Sync");
}
flags&=(~SCSI_INQ_RELADRFLAGS_SYNC);
/* Linked */
proto_tree_add_boolean(tree, hf_scsi_inq_linked, tvb, offset, 1, flags);
- if(flags&SCSI_INQ_RELADRFLAGS_LINKED){
+ if (flags&SCSI_INQ_RELADRFLAGS_LINKED) {
proto_item_append_text(item, " Linked");
}
flags&=(~SCSI_INQ_RELADRFLAGS_LINKED);
/* CmdQue */
proto_tree_add_boolean(tree, hf_scsi_inq_cmdque, tvb, offset, 1, flags);
- if(flags&SCSI_INQ_RELADRFLAGS_CMDQUE){
+ if (flags&SCSI_INQ_RELADRFLAGS_CMDQUE) {
proto_item_append_text(item, " CmdQue");
}
flags&=(~SCSI_INQ_RELADRFLAGS_CMDQUE);
@@ -2302,14 +2381,14 @@ dissect_spc_inq_reladrflags(tvbuff_t *tvb, int offset, proto_tree *parent_tree)
}
void
-dissect_spc_inquiry (tvbuff_t *tvb, packet_info *pinfo,
- proto_tree *tree, guint offset, gboolean isreq,
- gboolean iscdb, guint32 payload_len,
- scsi_task_data_t *cdata)
+dissect_spc_inquiry(tvbuff_t *tvb, packet_info *pinfo,
+ proto_tree *tree, guint offset, gboolean isreq,
+ gboolean iscdb, guint32 payload_len,
+ scsi_task_data_t *cdata)
{
- guint8 flags, i;
- tvbuff_t *volatile tvb_v = tvb;
- volatile guint offset_v = offset;
+ guint8 flags, i;
+ tvbuff_t *volatile tvb_v = tvb;
+ volatile guint offset_v = offset;
static const int *inq_control_fields[] = {
&hf_scsi_inq_control_vendor_specific,
@@ -2321,75 +2400,75 @@ dissect_spc_inquiry (tvbuff_t *tvb, packet_info *pinfo,
};
static const int *peripheral_fields[] = {
&hf_scsi_inq_qualifier,
- &hf_scsi_inq_devtype,
- NULL
+ &hf_scsi_inq_devtype,
+ NULL
};
static const int *aca_fields[] = {
&hf_scsi_inq_aerc, /* obsolete in spc3 and forward */
- &hf_scsi_inq_trmtsk,/* obsolete in spc2 and forward */
- &hf_scsi_inq_normaca,
- &hf_scsi_inq_hisup,
- &hf_scsi_inq_rdf,
- NULL
+ &hf_scsi_inq_trmtsk,/* obsolete in spc2 and forward */
+ &hf_scsi_inq_normaca,
+ &hf_scsi_inq_hisup,
+ &hf_scsi_inq_rdf,
+ NULL
};
static const int *rmb_fields[] = {
&hf_scsi_inq_rmb,
- NULL
+ NULL
};
- if (!isreq && (cdata == NULL || !(cdata->itlq->flags & 0x3))
- && (tvb_length_remaining(tvb_v, offset_v)>=1) ) {
+ if (!isreq && ((cdata == NULL) || !(cdata->itlq->flags & 0x3))
+ && (tvb_length_remaining(tvb_v, offset_v) >= 1) ) {
/*
- * INQUIRY response with device type information; add device type
- * to list of known devices & their types if not already known.
- */
- if(cdata && cdata->itl){
- cdata->itl->cmdset=tvb_get_guint8(tvb_v, offset_v)&SCSI_DEV_BITS;
+ * INQUIRY response with device type information; add device type
+ * to list of known devices & their types if not already known.
+ */
+ if (cdata && cdata->itl) {
+ cdata->itl->cmdset = tvb_get_guint8(tvb_v, offset_v)&SCSI_DEV_BITS;
}
}
if (isreq && iscdb) {
- flags = tvb_get_guint8 (tvb_v, offset_v);
+ flags = tvb_get_guint8(tvb_v, offset_v);
if (cdata) {
cdata->itlq->flags = flags;
}
- proto_tree_add_uint_format (tree, hf_scsi_inquiry_flags, tvb_v, offset_v, 1,
- flags, "CMDT = %u, EVPD = %u",
- flags & 0x2, flags & 0x1);
+ proto_tree_add_uint_format(tree, hf_scsi_inquiry_flags, tvb_v, offset_v, 1,
+ flags, "CMDT = %u, EVPD = %u",
+ flags & 0x2, flags & 0x1);
if (flags & 0x1) {
- proto_tree_add_item (tree, hf_scsi_inquiry_evpd_page, tvb_v, offset_v+1,
- 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_inquiry_evpd_page, tvb_v, offset_v+1,
+ 1, ENC_BIG_ENDIAN);
}
else if (flags & 0x2) {
- proto_tree_add_item (tree, hf_scsi_inquiry_cmdt_page, tvb_v, offset_v+1,
- 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_inquiry_cmdt_page, tvb_v, offset_v+1,
+ 1, ENC_BIG_ENDIAN);
}
- proto_tree_add_item (tree, hf_scsi_alloclen, tvb_v, offset_v+3, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_alloclen, tvb_v, offset_v+3, 1, ENC_BIG_ENDIAN);
/* we need the alloc_len in the response */
- if(cdata){
- cdata->itlq->alloc_len=tvb_get_guint8(tvb_v, offset_v+3);
+ if (cdata) {
+ cdata->itlq->alloc_len = tvb_get_guint8(tvb_v, offset_v+3);
}
proto_tree_add_bitmask(tree, tvb_v, offset_v+4, hf_scsi_inq_control,
- ett_scsi_inq_control, inq_control_fields, ENC_BIG_ENDIAN);
+ ett_scsi_inq_control, inq_control_fields, ENC_BIG_ENDIAN);
} else if (!isreq) {
if (!cdata) {
return;
}
if (cdata->itlq->flags & 0x1) {
- dissect_scsi_evpd (tvb_v, pinfo, tree, offset_v, payload_len);
+ dissect_scsi_evpd(tvb_v, pinfo, tree, offset_v, payload_len);
return;
}
if (cdata->itlq->flags & 0x2) {
- dissect_scsi_cmddt (tvb_v, pinfo, tree, offset_v, payload_len);
+ dissect_scsi_cmddt(tvb_v, pinfo, tree, offset_v, payload_len);
return;
}
/* These pdus are sometimes truncated by SCSI allocation length
- * in the CDB
- */
+ * in the CDB
+ */
TRY_SCSI_CDB_ALLOC_LEN(pinfo, tvb_v, offset_v, cdata->itlq->alloc_len);
/* Qualifier and DeviceType */
@@ -2401,7 +2480,7 @@ dissect_spc_inquiry (tvbuff_t *tvb, packet_info *pinfo,
offset_v+=1;
/* Version */
- proto_tree_add_item (tree, hf_scsi_inq_version, tvb_v, offset_v, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_inq_version, tvb_v, offset_v, 1, ENC_BIG_ENDIAN);
offset_v+=1;
/* aca flags */
@@ -2414,13 +2493,13 @@ dissect_spc_inquiry (tvbuff_t *tvb, packet_info *pinfo,
offset_v+=1;
/* sccs flags */
- offset_v=dissect_spc_inq_sccsflags(tvb_v, offset_v, tree);
+ offset_v = dissect_spc_inq_sccsflags(tvb_v, offset_v, tree);
/* bque flags */
- offset_v=dissect_spc_inq_bqueflags(tvb_v, offset_v, tree);
+ offset_v = dissect_spc_inq_bqueflags(tvb_v, offset_v, tree);
/* reladdr flags */
- offset_v=dissect_spc_inq_reladrflags(tvb_v, offset_v, tree);
+ offset_v = dissect_spc_inq_reladrflags(tvb_v, offset_v, tree);
/* vendor id */
proto_tree_add_item(tree, hf_scsi_inq_vendor_id, tvb_v, offset_v, 8, ENC_ASCII|ENC_NA);
@@ -2446,7 +2525,7 @@ dissect_spc_inquiry (tvbuff_t *tvb, packet_info *pinfo,
offset_v++;
/* version descriptors */
- for(i=0;i<8;i++){
+ for(i = 0;i<8;i++) {
proto_tree_add_item(tree, hf_scsi_inq_version_desc, tvb_v, offset_v, 2, ENC_BIG_ENDIAN);
offset_v+=2;
}
@@ -2456,21 +2535,21 @@ dissect_spc_inquiry (tvbuff_t *tvb, packet_info *pinfo,
}
void
-dissect_spc_extcopy (tvbuff_t *tvb _U_, packet_info *pinfo _U_,
- proto_tree *tree _U_, guint offset _U_,
- gboolean isreq _U_, gboolean iscdb _U_,
- guint payload_len _U_, scsi_task_data_t *cdata _U_)
+dissect_spc_extcopy(tvbuff_t *tvb _U_, packet_info *pinfo _U_,
+ proto_tree *tree _U_, guint offset _U_,
+ gboolean isreq _U_, gboolean iscdb _U_,
+ guint payload_len _U_, scsi_task_data_t *cdata _U_)
{
}
static int
-dissect_scsi_log_page (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
- guint offset)
+dissect_scsi_log_page(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
+ guint offset)
{
static const int *pcflags_fields[] = {
&hf_scsi_log_pagecode,
- NULL
+ NULL
};
static const int *paramflags_fields[] = {
&hf_scsi_log_pf_du,
@@ -2484,16 +2563,17 @@ dissect_scsi_log_page (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
};
guint16 pagelen, pagecode;
guint8 paramlen;
- proto_tree *log_tree=NULL;
- proto_item *ti=NULL;
- guint old_offset=offset;
+ proto_tree *log_tree = NULL;
+ proto_item *ti = NULL;
+ guint old_offset = offset;
const log_pages_t *log_page;
- pagecode=tvb_get_guint8(tvb, offset)&0x3f;
+ pagecode = tvb_get_guint8(tvb, offset) & 0x3f;
- if(tree){
- ti=proto_tree_add_text(tree, tvb, offset, -1, "Log Page: %s", val_to_str(pagecode, scsi_log_page_val, "Unknown (0x%04x)"));
- log_tree=proto_item_add_subtree(ti, ett_scsi_log);
+ if (tree) {
+ ti = proto_tree_add_text(tree, tvb, offset, -1,
+ "Log Page: %s", val_to_str(pagecode, scsi_log_page_val, "Unknown (0x%04x)"));
+ log_tree = proto_item_add_subtree(ti, ett_scsi_log);
}
/* page code */
@@ -2504,29 +2584,29 @@ dissect_scsi_log_page (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
offset+=1;
/* page length */
- pagelen=tvb_get_ntohs(tvb, offset);
+ pagelen = tvb_get_ntohs(tvb, offset);
proto_tree_add_item(log_tree, hf_scsi_log_page_length, tvb, offset, 2, ENC_BIG_ENDIAN);
offset+=2;
/* find the appropriate log page */
- for(log_page=log_pages;log_page;log_page++){
- if(log_page->parameters==NULL){
- log_page=NULL;
+ for(log_page = log_pages;log_page;log_page++) {
+ if (log_page->parameters == NULL) {
+ log_page = NULL;
break;
}
- if(log_page->page==pagecode){
+ if (log_page->page == pagecode) {
break;
}
}
/* loop over all parameters */
- while( offset<(old_offset+4+pagelen) ){
- const log_page_parameters_t *log_parameter=NULL;
+ while( offset<(old_offset+4+pagelen) ) {
+ const log_page_parameters_t *log_parameter = NULL;
guint16 log_param;
/* parameter code */
- log_param=tvb_get_ntohs(tvb, offset);
+ log_param = tvb_get_ntohs(tvb, offset);
proto_tree_add_item(log_tree, hf_scsi_log_parameter_code, tvb, offset, 2, ENC_BIG_ENDIAN);
offset+=2;
@@ -2535,29 +2615,29 @@ dissect_scsi_log_page (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
offset+=1;
/* parameter length */
- paramlen=tvb_get_guint8(tvb, offset);
+ paramlen = tvb_get_guint8(tvb, offset);
proto_tree_add_item(log_tree, hf_scsi_log_param_len, tvb, offset, 1, ENC_BIG_ENDIAN);
offset+=1;
/* find the log parameter */
- if(log_page){
- for(log_parameter=log_page->parameters;log_parameter;log_parameter++){
- if(log_parameter->dissector==NULL){
- log_parameter=NULL;
+ if (log_page) {
+ for(log_parameter = log_page->parameters;log_parameter;log_parameter++) {
+ if (log_parameter->dissector == NULL) {
+ log_parameter = NULL;
break;
}
- if(log_parameter->number==log_param){
+ if (log_parameter->number == log_param) {
break;
}
}
}
/* parameter data */
- if(paramlen){
- if(log_parameter && log_parameter->dissector){
+ if (paramlen) {
+ if (log_parameter && log_parameter->dissector) {
tvbuff_t *param_tvb;
- param_tvb=tvb_new_subset(tvb, offset, MIN(tvb_length_remaining(tvb, offset),paramlen), paramlen);
+ param_tvb = tvb_new_subset(tvb, offset, MIN(tvb_length_remaining(tvb, offset),paramlen), paramlen);
log_parameter->dissector(param_tvb, pinfo, log_tree);
} else {
/* We did not have a dissector for this page/parameter so
@@ -2574,18 +2654,18 @@ dissect_scsi_log_page (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
}
void
-dissect_spc_logselect (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
- guint offset, gboolean isreq, gboolean iscdb,
- guint payload_len _U_, scsi_task_data_t *cdata _U_)
+dissect_spc_logselect(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
+ guint offset, gboolean isreq, gboolean iscdb,
+ guint payload_len _U_, scsi_task_data_t *cdata _U_)
{
static const int *ppcflags_fields[] = {
&hf_scsi_log_pcr,
- &hf_scsi_log_sp,
- NULL
+ &hf_scsi_log_sp,
+ NULL
};
static const int *pcflags_fields[] = {
&hf_scsi_log_pc,
- NULL
+ NULL
};
if (!tree)
@@ -2593,11 +2673,11 @@ dissect_spc_logselect (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
if (isreq && iscdb) {
proto_tree_add_bitmask(tree, tvb, offset, hf_scsi_log_ppc_flags,
- ett_scsi_log_ppc, ppcflags_fields, ENC_BIG_ENDIAN);
+ ett_scsi_log_ppc, ppcflags_fields, ENC_BIG_ENDIAN);
proto_tree_add_bitmask(tree, tvb, offset+1, hf_scsi_log_pc_flags, ett_scsi_log_pc, pcflags_fields, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_scsi_paramlen16, tvb, offset+6, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_paramlen16, tvb, offset+6, 2, ENC_BIG_ENDIAN);
proto_tree_add_bitmask(tree, tvb, offset+8, hf_scsi_control,
- ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
+ ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
}
else {
}
@@ -2617,9 +2697,9 @@ static const true_false_string scsi_log_sp_tfs = {
};
void
-dissect_spc_logsense (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- guint offset, gboolean isreq, gboolean iscdb,
- guint payload_len _U_, scsi_task_data_t *cdata _U_)
+dissect_spc_logsense(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ guint offset, gboolean isreq, gboolean iscdb,
+ guint payload_len _U_, scsi_task_data_t *cdata _U_)
{
static const int *ppcflags_fields[] = {
&hf_scsi_log_ppc,
@@ -2637,14 +2717,14 @@ dissect_spc_logsense (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
if (isreq && iscdb) {
proto_tree_add_bitmask(tree, tvb, offset, hf_scsi_log_ppc_flags,
- ett_scsi_log_ppc, ppcflags_fields, ENC_BIG_ENDIAN);
+ ett_scsi_log_ppc, ppcflags_fields, ENC_BIG_ENDIAN);
proto_tree_add_bitmask(tree, tvb, offset+1, hf_scsi_log_pc_flags,
- ett_scsi_log_pc, pcflags_fields, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_scsi_log_parameter_ptr, tvb, offset+4,
- 2, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_scsi_alloclen16, tvb, offset+6, 2, ENC_BIG_ENDIAN);
+ ett_scsi_log_pc, pcflags_fields, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_log_parameter_ptr, tvb, offset+4,
+ 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_alloclen16, tvb, offset+6, 2, ENC_BIG_ENDIAN);
proto_tree_add_bitmask(tree, tvb, offset+8, hf_scsi_control,
- ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
+ ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
} else if (!isreq) {
if (!cdata) {
return;
@@ -2654,11 +2734,11 @@ dissect_spc_logsense (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
}
static void
-dissect_scsi_blockdescs (tvbuff_t *tvb, packet_info *pinfo _U_,
+dissect_scsi_blockdescs(tvbuff_t *tvb, packet_info *pinfo _U_,
proto_tree *scsi_tree,
scsi_task_data_t *cdata, gboolean longlba)
{
- int offset=0;
+ int offset = 0;
/* without cdata there is no point in continuing */
if (!cdata)
@@ -2666,60 +2746,60 @@ dissect_scsi_blockdescs (tvbuff_t *tvb, packet_info *pinfo _U_,
while (tvb_length_remaining(tvb, offset) > 0) {
if (longlba) {
- if(tvb_length_remaining(tvb, offset)<8)
+ if (tvb_length_remaining(tvb, offset)<8)
return;
- proto_tree_add_text (scsi_tree, tvb, offset, 8, "No. of Blocks: %" G_GINT64_MODIFIER "u",
- tvb_get_ntoh64 (tvb, offset));
+ proto_tree_add_text(scsi_tree, tvb, offset, 8, "No. of Blocks: %" G_GINT64_MODIFIER "u",
+ tvb_get_ntoh64(tvb, offset));
offset += 8;
- if(tvb_length_remaining(tvb, offset)<1)
+ if (tvb_length_remaining(tvb, offset)<1)
return;
- proto_tree_add_text (scsi_tree, tvb, offset, 1, "Density Code: 0x%02x",
- tvb_get_guint8 (tvb, offset));
+ proto_tree_add_text(scsi_tree, tvb, offset, 1, "Density Code: 0x%02x",
+ tvb_get_guint8(tvb, offset));
offset += 1;
/* 3 reserved bytes */
offset += 3;
- if(tvb_length_remaining(tvb, offset)<4)
+ if (tvb_length_remaining(tvb, offset)<4)
return;
- proto_tree_add_text (scsi_tree, tvb, offset, 4, "Block Length: %u",
- tvb_get_ntohl (tvb, offset));
+ proto_tree_add_text(scsi_tree, tvb, offset, 4, "Block Length: %u",
+ tvb_get_ntohl(tvb, offset));
offset += 4;
} else {
if ((cdata->itl->cmdset&SCSI_CMDSET_MASK) == SCSI_DEV_SBC) {
- if(tvb_length_remaining(tvb, offset)<4)
+ if (tvb_length_remaining(tvb, offset)<4)
return;
- proto_tree_add_text (scsi_tree, tvb, offset, 4, "No. of Blocks: %u",
- tvb_get_ntohl (tvb, offset));
+ proto_tree_add_text(scsi_tree, tvb, offset, 4, "No. of Blocks: %u",
+ tvb_get_ntohl(tvb, offset));
offset += 4;
offset++; /* reserved */
- if(tvb_length_remaining(tvb, offset)<3)
+ if (tvb_length_remaining(tvb, offset)<3)
return;
- proto_tree_add_text (scsi_tree, tvb, offset, 3, "Block Length: %u",
- tvb_get_ntoh24 (tvb, offset));
+ proto_tree_add_text(scsi_tree, tvb, offset, 3, "Block Length: %u",
+ tvb_get_ntoh24(tvb, offset));
offset += 3;
} else {
- if(tvb_length_remaining(tvb, offset)<1)
+ if (tvb_length_remaining(tvb, offset)<1)
return;
- proto_tree_add_text (scsi_tree, tvb, offset, 1, "Density Code: 0x%02x",
- tvb_get_guint8 (tvb, offset));
+ proto_tree_add_text(scsi_tree, tvb, offset, 1, "Density Code: 0x%02x",
+ tvb_get_guint8(tvb, offset));
offset += 1;
- if(tvb_length_remaining(tvb, offset)<3)
+ if (tvb_length_remaining(tvb, offset)<3)
return;
- proto_tree_add_text (scsi_tree, tvb, offset, 3, "No. of Blocks: %u",
- tvb_get_ntoh24 (tvb, offset));
+ proto_tree_add_text(scsi_tree, tvb, offset, 3, "No. of Blocks: %u",
+ tvb_get_ntoh24(tvb, offset));
offset += 3;
offset++; /* reserved */
- if(tvb_length_remaining(tvb, offset)<3)
+ if (tvb_length_remaining(tvb, offset)<3)
return;
- proto_tree_add_text (scsi_tree, tvb, offset, 3, "Block Length: %u",
- tvb_get_ntoh24 (tvb, offset));
+ proto_tree_add_text(scsi_tree, tvb, offset, 3, "Block Length: %u",
+ tvb_get_ntoh24(tvb, offset));
offset += 3;
}
}
@@ -2727,116 +2807,116 @@ dissect_scsi_blockdescs (tvbuff_t *tvb, packet_info *pinfo _U_,
}
static gboolean
-dissect_scsi_spc_modepage (tvbuff_t *tvb, packet_info *pinfo _U_,
- proto_tree *tree, guint offset, guint8 pcode)
+dissect_scsi_spc_modepage(tvbuff_t *tvb, packet_info *pinfo _U_,
+ proto_tree *tree, guint offset, guint8 pcode)
{
guint8 flags, proto;
switch (pcode) {
case SCSI_SPC_MODEPAGE_CTL:
- flags = tvb_get_guint8 (tvb, offset+2);
- proto_tree_add_item (tree, hf_scsi_modesns_tst, tvb, offset+2, 1, ENC_BIG_ENDIAN);
- proto_tree_add_text (tree, tvb, offset+2, 1,
- "Global Logging Target Save Disable: %u, Report Log Exception Condition: %u",
- (flags & 0x2) >> 1, (flags & 0x1));
- flags = tvb_get_guint8 (tvb, offset+3);
- proto_tree_add_item (tree, hf_scsi_modesns_qmod, tvb, offset+3, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_scsi_modesns_qerr, tvb, offset+3, 1, ENC_BIG_ENDIAN);
- proto_tree_add_text (tree, tvb, offset+3, 1, "Disable Queuing: %u",
- flags & 0x1);
- flags = tvb_get_guint8 (tvb, offset+4);
- proto_tree_add_item (tree, hf_scsi_modesns_rac, tvb, offset+4, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_scsi_modesns_tas, tvb, offset+4, 1, ENC_BIG_ENDIAN);
- proto_tree_add_text (tree, tvb, offset+4, 1,
- "SWP: %u, RAERP: %u, UAAERP: %u, EAERP: %u",
- (flags & 0x8) >> 3, (flags & 0x4) >> 2,
- (flags & 0x2) >> 1, (flags & 0x1));
- proto_tree_add_text (tree, tvb, offset+5, 1, "Autoload Mode: 0x%x",
- tvb_get_guint8 (tvb, offset+5) & 0x7);
- proto_tree_add_text (tree, tvb, offset+6, 2,
- "Ready AER Holdoff Period: %u ms",
- tvb_get_ntohs (tvb, offset+6));
- proto_tree_add_text (tree, tvb, offset+8, 2,
- "Busy Timeout Period: %u ms",
- tvb_get_ntohs (tvb, offset+8)*100);
- proto_tree_add_text (tree, tvb, offset+10, 2,
- "Extended Self-Test Completion Time: %u",
- tvb_get_ntohs (tvb, offset+10));
+ flags = tvb_get_guint8(tvb, offset+2);
+ proto_tree_add_item(tree, hf_scsi_modesns_tst, tvb, offset+2, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_text(tree, tvb, offset+2, 1,
+ "Global Logging Target Save Disable: %u, Report Log Exception Condition: %u",
+ (flags & 0x2) >> 1, (flags & 0x1));
+ flags = tvb_get_guint8(tvb, offset+3);
+ proto_tree_add_item(tree, hf_scsi_modesns_qmod, tvb, offset+3, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_modesns_qerr, tvb, offset+3, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_text(tree, tvb, offset+3, 1, "Disable Queuing: %u",
+ flags & 0x1);
+ flags = tvb_get_guint8(tvb, offset+4);
+ proto_tree_add_item(tree, hf_scsi_modesns_rac, tvb, offset+4, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_modesns_tas, tvb, offset+4, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_text(tree, tvb, offset+4, 1,
+ "SWP: %u, RAERP: %u, UAAERP: %u, EAERP: %u",
+ (flags & 0x8) >> 3, (flags & 0x4) >> 2,
+ (flags & 0x2) >> 1, (flags & 0x1));
+ proto_tree_add_text(tree, tvb, offset+5, 1, "Autoload Mode: 0x%x",
+ tvb_get_guint8(tvb, offset+5) & 0x7);
+ proto_tree_add_text(tree, tvb, offset+6, 2,
+ "Ready AER Holdoff Period: %u ms",
+ tvb_get_ntohs(tvb, offset+6));
+ proto_tree_add_text(tree, tvb, offset+8, 2,
+ "Busy Timeout Period: %u ms",
+ tvb_get_ntohs(tvb, offset+8)*100);
+ proto_tree_add_text(tree, tvb, offset+10, 2,
+ "Extended Self-Test Completion Time: %u",
+ tvb_get_ntohs(tvb, offset+10));
break;
case SCSI_SPC_MODEPAGE_DISCON:
- proto_tree_add_text (tree, tvb, offset+2, 1, "Buffer Full Ratio: %u",
- tvb_get_guint8 (tvb, offset+2));
- proto_tree_add_text (tree, tvb, offset+3, 1, "Buffer Empty Ratio: %u",
- tvb_get_guint8 (tvb, offset+3));
- proto_tree_add_text (tree, tvb, offset+4, 2, "Bus Inactivity Limit: %u",
- tvb_get_ntohs (tvb, offset+4));
- proto_tree_add_text (tree, tvb, offset+6, 2, "Disconnect Time Limit: %u",
- tvb_get_ntohs (tvb, offset+6));
- proto_tree_add_text (tree, tvb, offset+8, 2, "Connect Time Limit: %u",
- tvb_get_ntohs (tvb, offset+8));
- proto_tree_add_text (tree, tvb, offset+10, 2,
- "Maximum Burst Size: %u bytes",
- tvb_get_ntohs (tvb, offset+10)*512);
- flags = tvb_get_guint8 (tvb, offset+12);
- proto_tree_add_text (tree, tvb, offset+12, 1,
- "EMDP: %u, FAA: %u, FAB: %u, FAC: %u",
- (flags & 0x80) >> 7, (flags & 0x40) >> 6,
- (flags & 0x20) >> 5, (flags & 0x10) >> 4);
- proto_tree_add_text (tree, tvb, offset+14, 2,
- "First Burst Size: %u bytes",
- tvb_get_ntohs (tvb, offset+14)*512);
+ proto_tree_add_text(tree, tvb, offset+2, 1, "Buffer Full Ratio: %u",
+ tvb_get_guint8(tvb, offset+2));
+ proto_tree_add_text(tree, tvb, offset+3, 1, "Buffer Empty Ratio: %u",
+ tvb_get_guint8(tvb, offset+3));
+ proto_tree_add_text(tree, tvb, offset+4, 2, "Bus Inactivity Limit: %u",
+ tvb_get_ntohs(tvb, offset+4));
+ proto_tree_add_text(tree, tvb, offset+6, 2, "Disconnect Time Limit: %u",
+ tvb_get_ntohs(tvb, offset+6));
+ proto_tree_add_text(tree, tvb, offset+8, 2, "Connect Time Limit: %u",
+ tvb_get_ntohs(tvb, offset+8));
+ proto_tree_add_text(tree, tvb, offset+10, 2,
+ "Maximum Burst Size: %u bytes",
+ tvb_get_ntohs(tvb, offset+10)*512);
+ flags = tvb_get_guint8(tvb, offset+12);
+ proto_tree_add_text(tree, tvb, offset+12, 1,
+ "EMDP: %u, FAA: %u, FAB: %u, FAC: %u",
+ (flags & 0x80) >> 7, (flags & 0x40) >> 6,
+ (flags & 0x20) >> 5, (flags & 0x10) >> 4);
+ proto_tree_add_text(tree, tvb, offset+14, 2,
+ "First Burst Size: %u bytes",
+ tvb_get_ntohs(tvb, offset+14)*512);
break;
case SCSI_SPC_MODEPAGE_INFOEXCP:
- flags = tvb_get_guint8 (tvb, offset+2);
- proto_tree_add_text (tree, tvb, offset+2, 1,
- "Perf: %u, EBF: %u, EWasc: %u, DExcpt: %u, Test: %u, LogErr: %u",
- (flags & 0x80) >> 7, (flags & 0x20) >> 5,
- (flags & 0x10) >> 4, (flags & 0x08) >> 3,
- (flags & 0x04) >> 2, (flags & 0x01));
+ flags = tvb_get_guint8(tvb, offset+2);
+ proto_tree_add_text(tree, tvb, offset+2, 1,
+ "Perf: %u, EBF: %u, EWasc: %u, DExcpt: %u, Test: %u, LogErr: %u",
+ (flags & 0x80) >> 7, (flags & 0x20) >> 5,
+ (flags & 0x10) >> 4, (flags & 0x08) >> 3,
+ (flags & 0x04) >> 2, (flags & 0x01));
if (!((flags & 0x10) >> 4) && ((flags & 0x08) >> 3)) {
proto_item *hidden_item;
- hidden_item = proto_tree_add_item (tree, hf_scsi_modesns_errrep, tvb,
- offset+3, 1, ENC_BIG_ENDIAN);
+ hidden_item = proto_tree_add_item(tree, hf_scsi_modesns_errrep, tvb,
+ offset+3, 1, ENC_BIG_ENDIAN);
PROTO_ITEM_SET_HIDDEN(hidden_item);
}
else {
- proto_tree_add_item (tree, hf_scsi_modesns_errrep, tvb, offset+3, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_modesns_errrep, tvb, offset+3, 1, ENC_BIG_ENDIAN);
}
- proto_tree_add_text (tree, tvb, offset+4, 4, "Interval Timer: %u",
- tvb_get_ntohl (tvb, offset+4));
- proto_tree_add_text (tree, tvb, offset+8, 4, "Report Count: %u",
- tvb_get_ntohl (tvb, offset+8));
+ proto_tree_add_text(tree, tvb, offset+4, 4, "Interval Timer: %u",
+ tvb_get_ntohl(tvb, offset+4));
+ proto_tree_add_text(tree, tvb, offset+8, 4, "Report Count: %u",
+ tvb_get_ntohl(tvb, offset+8));
break;
case SCSI_SPC_MODEPAGE_PWR:
- flags = tvb_get_guint8 (tvb, offset+3);
- proto_tree_add_text (tree, tvb, offset+3, 1, "Idle: %u, Standby: %u",
- (flags & 0x2) >> 1, (flags & 0x1));
- proto_tree_add_text (tree, tvb, offset+4, 2,
- "Idle Condition Timer: %u ms",
- tvb_get_ntohs (tvb, offset+4) * 100);
- proto_tree_add_text (tree, tvb, offset+6, 2,
- "Standby Condition Timer: %u ms",
- tvb_get_ntohs (tvb, offset+6) * 100);
+ flags = tvb_get_guint8(tvb, offset+3);
+ proto_tree_add_text(tree, tvb, offset+3, 1, "Idle: %u, Standby: %u",
+ (flags & 0x2) >> 1, (flags & 0x1));
+ proto_tree_add_text(tree, tvb, offset+4, 2,
+ "Idle Condition Timer: %u ms",
+ tvb_get_ntohs(tvb, offset+4) * 100);
+ proto_tree_add_text(tree, tvb, offset+6, 2,
+ "Standby Condition Timer: %u ms",
+ tvb_get_ntohs(tvb, offset+6) * 100);
break;
case SCSI_SPC_MODEPAGE_LUN:
return FALSE;
case SCSI_SPC_MODEPAGE_PORT:
- proto = tvb_get_guint8 (tvb, offset+2) & 0x0F;
- proto_tree_add_item (tree, hf_scsi_protocol, tvb, offset+2, 1, ENC_BIG_ENDIAN);
+ proto = tvb_get_guint8(tvb, offset+2) & 0x0F;
+ proto_tree_add_item(tree, hf_scsi_protocol, tvb, offset+2, 1, ENC_BIG_ENDIAN);
if (proto == SCSI_PROTO_FCP) {
- flags = tvb_get_guint8 (tvb, offset+3);
- proto_tree_add_text (tree, tvb, offset+3, 1,
- "DTFD: %u, PLPB: %u, DDIS: %u, DLM: %u, RHA: %u, ALWI: %u, DTIPE: %u, DTOLI:%u",
- (flags & 0x80) >> 7, (flags & 0x40) >> 6,
- (flags & 0x20) >> 5, (flags & 0x10) >> 4,
- (flags & 0x08) >> 3, (flags & 0x04) >> 2,
- (flags & 0x02) >> 1, (flags & 0x1));
- proto_tree_add_text (tree, tvb, offset+6, 1, "RR_TOV Units: %s",
- val_to_str (tvb_get_guint8 (tvb, offset+6) & 0x7,
- scsi_fcp_rrtov_val,
- "Unknown (0x%02x)"));
- proto_tree_add_text (tree, tvb, offset+7, 1, "RR_TOV: %u",
- tvb_get_guint8 (tvb, offset+7));
+ flags = tvb_get_guint8(tvb, offset+3);
+ proto_tree_add_text(tree, tvb, offset+3, 1,
+ "DTFD: %u, PLPB: %u, DDIS: %u, DLM: %u, RHA: %u, ALWI: %u, DTIPE: %u, DTOLI:%u",
+ (flags & 0x80) >> 7, (flags & 0x40) >> 6,
+ (flags & 0x20) >> 5, (flags & 0x10) >> 4,
+ (flags & 0x08) >> 3, (flags & 0x04) >> 2,
+ (flags & 0x02) >> 1, (flags & 0x1));
+ proto_tree_add_text(tree, tvb, offset+6, 1, "RR_TOV Units: %s",
+ val_to_str(tvb_get_guint8(tvb, offset+6) & 0x7,
+ scsi_fcp_rrtov_val,
+ "Unknown (0x%02x)"));
+ proto_tree_add_text(tree, tvb, offset+7, 1, "RR_TOV: %u",
+ tvb_get_guint8(tvb, offset+7));
}
else if (proto == SCSI_PROTO_iSCSI) {
return FALSE;
@@ -2854,125 +2934,125 @@ dissect_scsi_spc_modepage (tvbuff_t *tvb, packet_info *pinfo _U_,
}
static gboolean
-dissect_scsi_sbc_modepage (tvbuff_t *tvb, packet_info *pinfo _U_,
- proto_tree *tree, guint offset, guint8 pcode)
+dissect_scsi_sbc_modepage(tvbuff_t *tvb, packet_info *pinfo _U_,
+ proto_tree *tree, guint offset, guint8 pcode)
{
guint8 flags;
switch (pcode) {
case SCSI_SBC_MODEPAGE_FMTDEV:
- proto_tree_add_text (tree, tvb, offset+2, 2, "Tracks Per Zone: %u",
- tvb_get_ntohs (tvb, offset+2));
- proto_tree_add_text (tree, tvb, offset+4, 2,
- "Alternate Sectors Per Zone: %u",
- tvb_get_ntohs (tvb, offset+4));
- proto_tree_add_text (tree, tvb, offset+6, 2,
- "Alternate Tracks Per Zone: %u",
- tvb_get_ntohs (tvb, offset+6));
- proto_tree_add_text (tree, tvb, offset+8, 2,
- "Alternate Tracks Per LU: %u",
- tvb_get_ntohs (tvb, offset+8));
- proto_tree_add_text (tree, tvb, offset+10, 2, "Sectors Per Track: %u",
- tvb_get_ntohs (tvb, offset+10));
- proto_tree_add_text (tree, tvb, offset+12, 2,
- "Data Bytes Per Physical Sector: %u",
- tvb_get_ntohs (tvb, offset+12));
- proto_tree_add_text (tree, tvb, offset+14, 2, "Interleave: %u",
- tvb_get_ntohs (tvb, offset+14));
- proto_tree_add_text (tree, tvb, offset+16, 2, "Track Skew Factor: %u",
- tvb_get_ntohs (tvb, offset+16));
- proto_tree_add_text (tree, tvb, offset+18, 2,
- "Cylinder Skew Factor: %u",
- tvb_get_ntohs (tvb, offset+18));
- flags = tvb_get_guint8 (tvb, offset+20);
- proto_tree_add_text (tree, tvb, offset+20, 1,
- "SSEC: %u, HSEC: %u, RMB: %u, SURF: %u",
- (flags & 0x80) >> 7, (flags & 0x40) >> 6,
- (flags & 0x20) >> 5, (flags & 0x10) >> 4);
+ proto_tree_add_text(tree, tvb, offset+2, 2, "Tracks Per Zone: %u",
+ tvb_get_ntohs(tvb, offset+2));
+ proto_tree_add_text(tree, tvb, offset+4, 2,
+ "Alternate Sectors Per Zone: %u",
+ tvb_get_ntohs(tvb, offset+4));
+ proto_tree_add_text(tree, tvb, offset+6, 2,
+ "Alternate Tracks Per Zone: %u",
+ tvb_get_ntohs(tvb, offset+6));
+ proto_tree_add_text(tree, tvb, offset+8, 2,
+ "Alternate Tracks Per LU: %u",
+ tvb_get_ntohs(tvb, offset+8));
+ proto_tree_add_text(tree, tvb, offset+10, 2, "Sectors Per Track: %u",
+ tvb_get_ntohs(tvb, offset+10));
+ proto_tree_add_text(tree, tvb, offset+12, 2,
+ "Data Bytes Per Physical Sector: %u",
+ tvb_get_ntohs(tvb, offset+12));
+ proto_tree_add_text(tree, tvb, offset+14, 2, "Interleave: %u",
+ tvb_get_ntohs(tvb, offset+14));
+ proto_tree_add_text(tree, tvb, offset+16, 2, "Track Skew Factor: %u",
+ tvb_get_ntohs(tvb, offset+16));
+ proto_tree_add_text(tree, tvb, offset+18, 2,
+ "Cylinder Skew Factor: %u",
+ tvb_get_ntohs(tvb, offset+18));
+ flags = tvb_get_guint8(tvb, offset+20);
+ proto_tree_add_text(tree, tvb, offset+20, 1,
+ "SSEC: %u, HSEC: %u, RMB: %u, SURF: %u",
+ (flags & 0x80) >> 7, (flags & 0x40) >> 6,
+ (flags & 0x20) >> 5, (flags & 0x10) >> 4);
break;
case SCSI_SBC_MODEPAGE_RDWRERR:
- flags = tvb_get_guint8 (tvb, offset+2);
- proto_tree_add_text (tree, tvb, offset+2, 1,
- "AWRE: %u, ARRE: %u, TB: %u, RC: %u, EER: %u, PER: %u, DTE: %u, DCR: %u",
- (flags & 0x80) >> 7, (flags & 0x40) >> 6,
- (flags & 0x20) >> 5, (flags & 0x10) >> 4,
- (flags & 0x08) >> 3, (flags & 0x04) >> 2,
- (flags & 0x02) >> 1, (flags & 0x01));
- proto_tree_add_text (tree, tvb, offset+3, 1, "Read Retry Count: %u",
- tvb_get_guint8 (tvb, offset+3));
- proto_tree_add_text (tree, tvb, offset+4, 1, "Correction Span: %u",
- tvb_get_guint8 (tvb, offset+4));
- proto_tree_add_text (tree, tvb, offset+5, 1, "Head Offset Count: %u",
- tvb_get_guint8 (tvb, offset+5));
- proto_tree_add_text (tree, tvb, offset+6, 1,
- "Data Strobe Offset Count: %u",
- tvb_get_guint8 (tvb, offset+6));
- proto_tree_add_text (tree, tvb, offset+8, 1, "Write Retry Count: %u",
- tvb_get_guint8 (tvb, offset+8));
- proto_tree_add_text (tree, tvb, offset+10, 2,
- "Recovery Time Limit: %u ms",
- tvb_get_ntohs (tvb, offset+10));
+ flags = tvb_get_guint8(tvb, offset+2);
+ proto_tree_add_text(tree, tvb, offset+2, 1,
+ "AWRE: %u, ARRE: %u, TB: %u, RC: %u, EER: %u, PER: %u, DTE: %u, DCR: %u",
+ (flags & 0x80) >> 7, (flags & 0x40) >> 6,
+ (flags & 0x20) >> 5, (flags & 0x10) >> 4,
+ (flags & 0x08) >> 3, (flags & 0x04) >> 2,
+ (flags & 0x02) >> 1, (flags & 0x01));
+ proto_tree_add_text(tree, tvb, offset+3, 1, "Read Retry Count: %u",
+ tvb_get_guint8(tvb, offset+3));
+ proto_tree_add_text(tree, tvb, offset+4, 1, "Correction Span: %u",
+ tvb_get_guint8(tvb, offset+4));
+ proto_tree_add_text(tree, tvb, offset+5, 1, "Head Offset Count: %u",
+ tvb_get_guint8(tvb, offset+5));
+ proto_tree_add_text(tree, tvb, offset+6, 1,
+ "Data Strobe Offset Count: %u",
+ tvb_get_guint8(tvb, offset+6));
+ proto_tree_add_text(tree, tvb, offset+8, 1, "Write Retry Count: %u",
+ tvb_get_guint8(tvb, offset+8));
+ proto_tree_add_text(tree, tvb, offset+10, 2,
+ "Recovery Time Limit: %u ms",
+ tvb_get_ntohs(tvb, offset+10));
break;
- case SCSI_SBC_MODEPAGE_DISKGEOM:
- proto_tree_add_text (tree, tvb, offset+2, 3, "Number of Cylinders: %u",
- tvb_get_ntoh24 (tvb, offset+2));
- proto_tree_add_text (tree, tvb, offset+5, 1, "Number of Heads: %u",
- tvb_get_guint8 (tvb, offset+5));
- proto_tree_add_text (tree, tvb, offset+6, 3,
- "Starting Cyl Pre-compensation: %u",
- tvb_get_ntoh24 (tvb, offset+6));
- proto_tree_add_text (tree, tvb, offset+9, 3,
- "Starting Cyl-reduced Write Current: %u",
- tvb_get_ntoh24 (tvb, offset+9));
- proto_tree_add_text (tree, tvb, offset+12, 2, "Device Step Rate: %u",
- tvb_get_ntohs (tvb, offset+12));
- proto_tree_add_text (tree, tvb, offset+14, 3, "Landing Zone Cyl: %u",
- tvb_get_ntoh24 (tvb, offset+14));
- proto_tree_add_text (tree, tvb, offset+18, 1, "Rotational Offset: %u",
- tvb_get_guint8 (tvb, offset+18));
- proto_tree_add_text (tree, tvb, offset+20, 2,
- "Medium Rotation Rate: %u",
- tvb_get_ntohs (tvb, offset+20));
+ case SCSI_SBC_MODEPAGE_DISKGEOM:
+ proto_tree_add_text(tree, tvb, offset+2, 3, "Number of Cylinders: %u",
+ tvb_get_ntoh24(tvb, offset+2));
+ proto_tree_add_text(tree, tvb, offset+5, 1, "Number of Heads: %u",
+ tvb_get_guint8(tvb, offset+5));
+ proto_tree_add_text(tree, tvb, offset+6, 3,
+ "Starting Cyl Pre-compensation: %u",
+ tvb_get_ntoh24(tvb, offset+6));
+ proto_tree_add_text(tree, tvb, offset+9, 3,
+ "Starting Cyl-reduced Write Current: %u",
+ tvb_get_ntoh24(tvb, offset+9));
+ proto_tree_add_text(tree, tvb, offset+12, 2, "Device Step Rate: %u",
+ tvb_get_ntohs(tvb, offset+12));
+ proto_tree_add_text(tree, tvb, offset+14, 3, "Landing Zone Cyl: %u",
+ tvb_get_ntoh24(tvb, offset+14));
+ proto_tree_add_text(tree, tvb, offset+18, 1, "Rotational Offset: %u",
+ tvb_get_guint8(tvb, offset+18));
+ proto_tree_add_text(tree, tvb, offset+20, 2,
+ "Medium Rotation Rate: %u",
+ tvb_get_ntohs(tvb, offset+20));
break;
case SCSI_SBC_MODEPAGE_FLEXDISK:
return FALSE;
case SCSI_SBC_MODEPAGE_VERERR:
return FALSE;
case SCSI_SBC_MODEPAGE_CACHE:
- flags = tvb_get_guint8 (tvb, offset+2);
- proto_tree_add_text (tree, tvb, offset+2, 1,
- "IC: %u, ABPF: %u, CAP %u, Disc: %u, Size: %u, WCE: %u, MF: %u, RCD: %u",
- (flags & 0x80) >> 7, (flags & 0x40) >> 6,
- (flags & 0x20) >> 5, (flags & 0x10) >> 4,
- (flags & 0x08) >> 3, (flags & 0x04) >> 2,
- (flags & 0x02) >> 1, (flags & 0x01));
- flags = tvb_get_guint8 (tvb, offset+3);
- proto_tree_add_text (tree, tvb, offset+3, 1,
- "Demand Read Retention Priority: %u, Write Retention Priority: %u",
- (flags & 0xF0) >> 4, (flags & 0x0F));
- proto_tree_add_text (tree, tvb, offset+4, 2,
- "Disable Pre-fetch Xfer Len: %u",
- tvb_get_ntohs (tvb, offset+4));
- proto_tree_add_text (tree, tvb, offset+6, 2, "Minimum Pre-Fetch: %u",
- tvb_get_ntohs (tvb, offset+6));
- proto_tree_add_text (tree, tvb, offset+8, 2, "Maximum Pre-Fetch: %u",
- tvb_get_ntohs (tvb, offset+8));
- proto_tree_add_text (tree, tvb, offset+10, 2,
- "Maximum Pre-Fetch Ceiling: %u",
- tvb_get_ntohs (tvb, offset+10));
- flags = tvb_get_guint8 (tvb, offset+12);
- proto_tree_add_text (tree, tvb, offset+12, 1,
- "FSW: %u, LBCSS: %u, DRA: %u, Vendor Specific: %u",
- (flags & 0x80) >> 7, (flags & 0x40) >> 6,
- (flags & 0x20) >> 5, (flags & 0x1F) >> 4);
- proto_tree_add_text (tree, tvb, offset+13, 1,
- "Number of Cache Segments: %u",
- tvb_get_guint8 (tvb, offset+13));
- proto_tree_add_text (tree, tvb, offset+14, 2, "Cache Segment Size: %u",
- tvb_get_ntohs (tvb, offset+14));
- proto_tree_add_text (tree, tvb, offset+17, 3,
- "Non-Cache Segment Size: %u",
- tvb_get_ntoh24 (tvb, offset+17));
+ flags = tvb_get_guint8(tvb, offset+2);
+ proto_tree_add_text(tree, tvb, offset+2, 1,
+ "IC: %u, ABPF: %u, CAP %u, Disc: %u, Size: %u, WCE: %u, MF: %u, RCD: %u",
+ (flags & 0x80) >> 7, (flags & 0x40) >> 6,
+ (flags & 0x20) >> 5, (flags & 0x10) >> 4,
+ (flags & 0x08) >> 3, (flags & 0x04) >> 2,
+ (flags & 0x02) >> 1, (flags & 0x01));
+ flags = tvb_get_guint8(tvb, offset+3);
+ proto_tree_add_text(tree, tvb, offset+3, 1,
+ "Demand Read Retention Priority: %u, Write Retention Priority: %u",
+ (flags & 0xF0) >> 4, (flags & 0x0F));
+ proto_tree_add_text(tree, tvb, offset+4, 2,
+ "Disable Pre-fetch Xfer Len: %u",
+ tvb_get_ntohs(tvb, offset+4));
+ proto_tree_add_text(tree, tvb, offset+6, 2, "Minimum Pre-Fetch: %u",
+ tvb_get_ntohs(tvb, offset+6));
+ proto_tree_add_text(tree, tvb, offset+8, 2, "Maximum Pre-Fetch: %u",
+ tvb_get_ntohs(tvb, offset+8));
+ proto_tree_add_text(tree, tvb, offset+10, 2,
+ "Maximum Pre-Fetch Ceiling: %u",
+ tvb_get_ntohs(tvb, offset+10));
+ flags = tvb_get_guint8(tvb, offset+12);
+ proto_tree_add_text(tree, tvb, offset+12, 1,
+ "FSW: %u, LBCSS: %u, DRA: %u, Vendor Specific: %u",
+ (flags & 0x80) >> 7, (flags & 0x40) >> 6,
+ (flags & 0x20) >> 5, (flags & 0x1F) >> 4);
+ proto_tree_add_text(tree, tvb, offset+13, 1,
+ "Number of Cache Segments: %u",
+ tvb_get_guint8(tvb, offset+13));
+ proto_tree_add_text(tree, tvb, offset+14, 2, "Cache Segment Size: %u",
+ tvb_get_ntohs(tvb, offset+14));
+ proto_tree_add_text(tree, tvb, offset+17, 3,
+ "Non-Cache Segment Size: %u",
+ tvb_get_ntoh24(tvb, offset+17));
break;
case SCSI_SBC_MODEPAGE_MEDTYPE:
return FALSE;
@@ -2999,111 +3079,111 @@ static const value_string compression_algorithm_vals[] = {
};
static gboolean
-dissect_scsi_ssc2_modepage (tvbuff_t *tvb _U_, packet_info *pinfo _U_,
- proto_tree *tree _U_, guint offset _U_,
- guint8 pcode)
+dissect_scsi_ssc2_modepage(tvbuff_t *tvb _U_, packet_info *pinfo _U_,
+ proto_tree *tree _U_, guint offset _U_,
+ guint8 pcode)
{
guint8 flags;
switch (pcode) {
case SCSI_SSC2_MODEPAGE_DATACOMP:
- flags = tvb_get_guint8 (tvb, offset+2);
- proto_tree_add_text (tree, tvb, offset+2, 1,
- "DCE: %u, DCC: %u",
- (flags & 0x80) >> 7, (flags & 0x40) >> 6);
- flags = tvb_get_guint8 (tvb, offset+3);
- proto_tree_add_text (tree, tvb, offset+3, 1,
- "DDE: %u, RED: %u",
- (flags & 0x80) >> 7, (flags & 0x60) >> 5);
- proto_tree_add_text (tree, tvb, offset+4, 4,
- "Compression algorithm: %s",
- val_to_str (tvb_get_ntohl (tvb, offset+4),
- compression_algorithm_vals,
- "Unknown (0x%08x)"));
- proto_tree_add_text (tree, tvb, offset+8, 4,
- "Decompression algorithm: %s",
- val_to_str (tvb_get_ntohl (tvb, offset+4),
- compression_algorithm_vals,
- "Unknown (0x%08x)"));
+ flags = tvb_get_guint8(tvb, offset+2);
+ proto_tree_add_text(tree, tvb, offset+2, 1,
+ "DCE: %u, DCC: %u",
+ (flags & 0x80) >> 7, (flags & 0x40) >> 6);
+ flags = tvb_get_guint8(tvb, offset+3);
+ proto_tree_add_text(tree, tvb, offset+3, 1,
+ "DDE: %u, RED: %u",
+ (flags & 0x80) >> 7, (flags & 0x60) >> 5);
+ proto_tree_add_text(tree, tvb, offset+4, 4,
+ "Compression algorithm: %s",
+ val_to_str(tvb_get_ntohl(tvb, offset+4),
+ compression_algorithm_vals,
+ "Unknown (0x%08x)"));
+ proto_tree_add_text(tree, tvb, offset+8, 4,
+ "Decompression algorithm: %s",
+ val_to_str(tvb_get_ntohl(tvb, offset+4),
+ compression_algorithm_vals,
+ "Unknown (0x%08x)"));
break;
case SCSI_SSC2_MODEPAGE_DEVCONF:
- flags = tvb_get_guint8 (tvb, offset+2);
- proto_tree_add_text (tree, tvb, offset+2, 1,
- "CAF: %u, Active Format: %u",
- (flags & 0x20) >> 5, (flags & 0x1f));
- flags = tvb_get_guint8 (tvb, offset+3);
- proto_tree_add_text (tree, tvb, offset+3, 1,
- "Active Partition: %u",
- flags);
- flags = tvb_get_guint8 (tvb, offset+4);
- proto_tree_add_text (tree, tvb, offset+4, 1,
- "Write Object Buffer Full Ratio: %u",
- flags);
- flags = tvb_get_guint8 (tvb, offset+5);
- proto_tree_add_text (tree, tvb, offset+5, 1,
- "Read Object Buffer Empty Ratio: %u",
- flags);
- proto_tree_add_text (tree, tvb, offset+6, 2,
- "Write Delay time: %u 100ms",
- tvb_get_ntohs (tvb, offset+6));
- flags = tvb_get_guint8 (tvb, offset+8);
- proto_tree_add_text (tree, tvb, offset+8, 1,
- "OBR: %u, LOIS: %u, RSMK: %u, AVC: %u, SOCF: %u, ROBO: %u, REW: %u",
- (flags & 0x80) >> 7, (flags & 0x40) >> 6,
- (flags & 0x20) >> 5, (flags & 0x10) >> 4,
- (flags & 0x0c) >> 2, (flags & 0x02) >> 1,
- (flags & 0x01));
- flags = tvb_get_guint8 (tvb, offset+9);
- proto_tree_add_text (tree, tvb, offset+9, 1,
- "Gap Size: %u",
- flags);
- flags = tvb_get_guint8 (tvb, offset+10);
- proto_tree_add_text (tree, tvb, offset+10, 1,
- "EOD Defined: %u, EEG: %u, SEW: %u, SWP: %u, BAML: %u, BAM: %u",
- (flags & 0xe0) >> 5, (flags & 0x10) >> 4,
- (flags & 0x08) >> 3, (flags & 0x04) >> 2,
- (flags & 0x02) >> 1, (flags & 0x01));
- proto_tree_add_text (tree, tvb, offset+11, 3,
- "Object Buffer Size At Early Warning: %u",
- tvb_get_ntoh24 (tvb, offset+11));
- flags = tvb_get_guint8 (tvb, offset+14);
- proto_tree_add_text (tree, tvb, offset+14, 1,
- "Select Data Compression Algorithm: %u",
- flags);
- flags = tvb_get_guint8 (tvb, offset+15);
- proto_tree_add_text (tree, tvb, offset+15, 1,
- "OIR: %u, ReWind on Reset: %u, ASOCWP: %u, PERSWP: %u, PRMWP: %u",
- (flags & 0x20) >> 5, (flags & 0x18) >> 3,
- (flags & 0x04) >> 2, (flags & 0x02) >> 1,
- (flags & 0x01));
+ flags = tvb_get_guint8(tvb, offset+2);
+ proto_tree_add_text(tree, tvb, offset+2, 1,
+ "CAF: %u, Active Format: %u",
+ (flags & 0x20) >> 5, (flags & 0x1f));
+ flags = tvb_get_guint8(tvb, offset+3);
+ proto_tree_add_text(tree, tvb, offset+3, 1,
+ "Active Partition: %u",
+ flags);
+ flags = tvb_get_guint8(tvb, offset+4);
+ proto_tree_add_text(tree, tvb, offset+4, 1,
+ "Write Object Buffer Full Ratio: %u",
+ flags);
+ flags = tvb_get_guint8(tvb, offset+5);
+ proto_tree_add_text(tree, tvb, offset+5, 1,
+ "Read Object Buffer Empty Ratio: %u",
+ flags);
+ proto_tree_add_text(tree, tvb, offset+6, 2,
+ "Write Delay time: %u 100ms",
+ tvb_get_ntohs(tvb, offset+6));
+ flags = tvb_get_guint8(tvb, offset+8);
+ proto_tree_add_text(tree, tvb, offset+8, 1,
+ "OBR: %u, LOIS: %u, RSMK: %u, AVC: %u, SOCF: %u, ROBO: %u, REW: %u",
+ (flags & 0x80) >> 7, (flags & 0x40) >> 6,
+ (flags & 0x20) >> 5, (flags & 0x10) >> 4,
+ (flags & 0x0c) >> 2, (flags & 0x02) >> 1,
+ (flags & 0x01));
+ flags = tvb_get_guint8(tvb, offset+9);
+ proto_tree_add_text(tree, tvb, offset+9, 1,
+ "Gap Size: %u",
+ flags);
+ flags = tvb_get_guint8(tvb, offset+10);
+ proto_tree_add_text(tree, tvb, offset+10, 1,
+ "EOD Defined: %u, EEG: %u, SEW: %u, SWP: %u, BAML: %u, BAM: %u",
+ (flags & 0xe0) >> 5, (flags & 0x10) >> 4,
+ (flags & 0x08) >> 3, (flags & 0x04) >> 2,
+ (flags & 0x02) >> 1, (flags & 0x01));
+ proto_tree_add_text(tree, tvb, offset+11, 3,
+ "Object Buffer Size At Early Warning: %u",
+ tvb_get_ntoh24(tvb, offset+11));
+ flags = tvb_get_guint8(tvb, offset+14);
+ proto_tree_add_text(tree, tvb, offset+14, 1,
+ "Select Data Compression Algorithm: %u",
+ flags);
+ flags = tvb_get_guint8(tvb, offset+15);
+ proto_tree_add_text(tree, tvb, offset+15, 1,
+ "OIR: %u, ReWind on Reset: %u, ASOCWP: %u, PERSWP: %u, PRMWP: %u",
+ (flags & 0x20) >> 5, (flags & 0x18) >> 3,
+ (flags & 0x04) >> 2, (flags & 0x02) >> 1,
+ (flags & 0x01));
break;
case SCSI_SSC2_MODEPAGE_MEDPAR1:
- flags = tvb_get_guint8 (tvb, offset+2);
- proto_tree_add_text (tree, tvb, offset+2, 1,
- "Maximum Additional Partitions: %u",
- flags);
- flags = tvb_get_guint8 (tvb, offset+3);
- proto_tree_add_text (tree, tvb, offset+3, 1,
- "Additional Partitions Defined: %u",
- flags);
- flags = tvb_get_guint8 (tvb, offset+4);
- proto_tree_add_text (tree, tvb, offset+4, 1,
- "FDP: %u, DSP: %u, IDP: %u, PSUM: %u, POFM: %u, CLEAR: %u, ADDP: %u",
- (flags & 0x80) >> 7, (flags & 0x40) >> 6,
- (flags & 0x20) >> 5, (flags & 0x18) >> 3,
- (flags & 0x04) >> 2, (flags & 0x02) >> 1,
- (flags & 0x01));
- flags = tvb_get_guint8 (tvb, offset+5);
- proto_tree_add_text (tree, tvb, offset+5, 1,
- "Media Format Recognition: %u",
- flags);
- flags = tvb_get_guint8 (tvb, offset+6);
- proto_tree_add_text (tree, tvb, offset+6, 1,
- "Partition Units: %u",
- flags & 0x0f);
- proto_tree_add_text (tree, tvb, offset+8, 2,
- "Partition Size: %u",
- tvb_get_ntohs (tvb, offset+8));
+ flags = tvb_get_guint8(tvb, offset+2);
+ proto_tree_add_text(tree, tvb, offset+2, 1,
+ "Maximum Additional Partitions: %u",
+ flags);
+ flags = tvb_get_guint8(tvb, offset+3);
+ proto_tree_add_text(tree, tvb, offset+3, 1,
+ "Additional Partitions Defined: %u",
+ flags);
+ flags = tvb_get_guint8(tvb, offset+4);
+ proto_tree_add_text(tree, tvb, offset+4, 1,
+ "FDP: %u, DSP: %u, IDP: %u, PSUM: %u, POFM: %u, CLEAR: %u, ADDP: %u",
+ (flags & 0x80) >> 7, (flags & 0x40) >> 6,
+ (flags & 0x20) >> 5, (flags & 0x18) >> 3,
+ (flags & 0x04) >> 2, (flags & 0x02) >> 1,
+ (flags & 0x01));
+ flags = tvb_get_guint8(tvb, offset+5);
+ proto_tree_add_text(tree, tvb, offset+5, 1,
+ "Media Format Recognition: %u",
+ flags);
+ flags = tvb_get_guint8(tvb, offset+6);
+ proto_tree_add_text(tree, tvb, offset+6, 1,
+ "Partition Units: %u",
+ flags & 0x0f);
+ proto_tree_add_text(tree, tvb, offset+8, 2,
+ "Partition Size: %u",
+ tvb_get_ntohs(tvb, offset+8));
break;
case SCSI_SSC2_MODEPAGE_MEDPAR2:
return FALSE;
@@ -3118,130 +3198,130 @@ dissect_scsi_ssc2_modepage (tvbuff_t *tvb _U_, packet_info *pinfo _U_,
}
static gboolean
-dissect_scsi_mmc5_modepage (tvbuff_t *tvb _U_, packet_info *pinfo _U_,
- proto_tree *tree _U_, guint offset _U_, guint8 pcode)
+dissect_scsi_mmc5_modepage(tvbuff_t *tvb _U_, packet_info *pinfo _U_,
+ proto_tree *tree _U_, guint offset _U_, guint8 pcode)
{
- guint8 flags;
- guint8 i;
+ guint8 flags;
+ guint8 i;
guint16 n;
switch (pcode) {
case SCSI_MMC5_MODEPAGE_MRW:
- flags = tvb_get_guint8 (tvb, offset+3);
- proto_tree_add_text (tree, tvb, offset+3, 1,
- "LBA Space: %u",
- (flags & 0x01));
+ flags = tvb_get_guint8(tvb, offset+3);
+ proto_tree_add_text(tree, tvb, offset+3, 1,
+ "LBA Space: %u",
+ (flags & 0x01));
break;
case SCSI_MMC5_MODEPAGE_WRPARAM:
- flags = tvb_get_guint8 (tvb, offset+2);
- proto_tree_add_text (tree, tvb, offset+2, 1,
- "BUFE: %u, LS_V: %u, Test Write: %u, Write Type: %u",
- (flags & 0x40) >> 6, (flags & 0x20) >> 5, (flags & 0x10) >> 4, (flags & 0x0f));
- flags = tvb_get_guint8 (tvb, offset+3);
- proto_tree_add_text (tree, tvb, offset+3, 1,
- "Multi-session: %u, FP: %u, Copy: %u, Track Mode: %u",
- (flags & 0xc0) >> 6, (flags & 0x20) >> 5, (flags & 0x10) >> 4, (flags & 0x0f));
- flags = tvb_get_guint8 (tvb, offset+4);
- proto_tree_add_text (tree, tvb, offset+4, 1,
- "Data Block Type: %u",
- (flags & 0x0f));
- flags = tvb_get_guint8 (tvb, offset+5);
- proto_tree_add_text (tree, tvb, offset+5, 1,
- "Link Size: %u",
- flags);
- flags = tvb_get_guint8 (tvb, offset+7);
- proto_tree_add_text (tree, tvb, offset+7, 1,
- "Initiator Application Code: %u",
- (flags & 0x3f));
- flags = tvb_get_guint8 (tvb, offset+8);
- proto_tree_add_text (tree, tvb, offset+8, 1,
- "Session Format: %u",
- flags);
- proto_tree_add_text (tree, tvb, offset+10, 4,
- "Packet Size: %u",
- tvb_get_ntohl (tvb, offset+10));
- proto_tree_add_text (tree, tvb, offset+14, 2,
- "Audio Pause Length: %u",
- tvb_get_ntohs (tvb, offset+14));
- proto_tree_add_text (tree, tvb, offset+16, 16,
- "Media Catalog Number: %s",
- tvb_format_stringzpad (tvb, offset+16, 16));
- proto_tree_add_text (tree, tvb, offset+32, 16,
- "International Standard Recording Code: %s",
- tvb_format_stringzpad (tvb, offset+32, 16));
+ flags = tvb_get_guint8(tvb, offset+2);
+ proto_tree_add_text(tree, tvb, offset+2, 1,
+ "BUFE: %u, LS_V: %u, Test Write: %u, Write Type: %u",
+ (flags & 0x40) >> 6, (flags & 0x20) >> 5, (flags & 0x10) >> 4, (flags & 0x0f));
+ flags = tvb_get_guint8(tvb, offset+3);
+ proto_tree_add_text(tree, tvb, offset+3, 1,
+ "Multi-session: %u, FP: %u, Copy: %u, Track Mode: %u",
+ (flags & 0xc0) >> 6, (flags & 0x20) >> 5, (flags & 0x10) >> 4, (flags & 0x0f));
+ flags = tvb_get_guint8(tvb, offset+4);
+ proto_tree_add_text(tree, tvb, offset+4, 1,
+ "Data Block Type: %u",
+ (flags & 0x0f));
+ flags = tvb_get_guint8(tvb, offset+5);
+ proto_tree_add_text(tree, tvb, offset+5, 1,
+ "Link Size: %u",
+ flags);
+ flags = tvb_get_guint8(tvb, offset+7);
+ proto_tree_add_text(tree, tvb, offset+7, 1,
+ "Initiator Application Code: %u",
+ (flags & 0x3f));
+ flags = tvb_get_guint8(tvb, offset+8);
+ proto_tree_add_text(tree, tvb, offset+8, 1,
+ "Session Format: %u",
+ flags);
+ proto_tree_add_text(tree, tvb, offset+10, 4,
+ "Packet Size: %u",
+ tvb_get_ntohl(tvb, offset+10));
+ proto_tree_add_text(tree, tvb, offset+14, 2,
+ "Audio Pause Length: %u",
+ tvb_get_ntohs(tvb, offset+14));
+ proto_tree_add_text(tree, tvb, offset+16, 16,
+ "Media Catalog Number: %s",
+ tvb_format_stringzpad(tvb, offset+16, 16));
+ proto_tree_add_text(tree, tvb, offset+32, 16,
+ "International Standard Recording Code: %s",
+ tvb_format_stringzpad(tvb, offset+32, 16));
for (i = 0; i < 4; i++) {
- flags = tvb_get_guint8 (tvb, offset+48+i);
- proto_tree_add_text (tree, tvb, offset+48+i, 1,
- "Sub-header Byte %u: %u",
- i, flags);
+ flags = tvb_get_guint8(tvb, offset+48+i);
+ proto_tree_add_text(tree, tvb, offset+48+i, 1,
+ "Sub-header Byte %u: %u",
+ i, flags);
}
- if (0x36 == tvb_get_guint8 (tvb, offset+1))
- proto_tree_add_text (tree, tvb, offset+52, 4,
- "Vendor Specific: %u",
- tvb_get_ntohl (tvb, offset+52));
+ if (0x36 == tvb_get_guint8(tvb, offset+1))
+ proto_tree_add_text(tree, tvb, offset+52, 4,
+ "Vendor Specific: %u",
+ tvb_get_ntohl(tvb, offset+52));
break;
case SCSI_MMC3_MODEPAGE_MMCAP:
- flags = tvb_get_guint8 (tvb, offset+2);
- proto_tree_add_text (tree, tvb, offset+2, 1,
- "DVD-RAM Read: %u, DVD-R Read: %u, DVD-ROM Read: %u,"
- "Method 2: %u, CD-RW Read: %u, CD-R Read: %u",
- (flags & 0x20) >> 5, (flags & 0x10) >> 4, (flags & 0x08) >> 3,
- (flags & 0x04) >> 2, (flags & 0x02) >> 1, (flags & 0x01));
- flags = tvb_get_guint8 (tvb, offset+3);
- proto_tree_add_text (tree, tvb, offset+3, 1,
- "DVD-RAM Write: %u, DVD-R Write: %u, DVD-ROM Write: %u,"
- "Test Write: %u, CD-RW Write: %u, CD-R Write: %u",
- (flags & 0x20) >> 5, (flags & 0x10) >> 4, (flags & 0x08) >> 3,
- (flags & 0x04) >> 2, (flags & 0x02) >> 1, (flags & 0x01));
- flags = tvb_get_guint8 (tvb, offset+4);
- proto_tree_add_text (tree, tvb, offset+4, 1,
- "BUF: %u, Multi Session: %u, Mode 2 Form 2: %u, Mode 2 Form 1: %u,"
- "Digital Port (2): %u, Digital Port (1): %u, Composite: %u, Audio Play: %u",
- (flags & 0x80) >> 7, (flags & 0x40) >> 6, (flags & 0x20) >> 5, (flags & 0x10) >> 4,
- (flags & 0x08) >> 3, (flags & 0x04) >> 2, (flags & 0x02) >> 1, (flags & 0x01));
- flags = tvb_get_guint8 (tvb, offset+5);
- proto_tree_add_text (tree, tvb, offset+5, 1,
- "Read Bar Code: %u, UPC: %u, ISRC: %u, C2 Pointers supported: %u,"
- "R-W Deinterleaved & corrected: %u, R-W Supported: %u, CD-DA Stream is Accurate: %u, CD-DA Cmds Supported: %u",
- (flags & 0x80) >> 7, (flags & 0x40) >> 6, (flags & 0x20) >> 5, (flags & 0x10) >> 4,
- (flags & 0x08) >> 3, (flags & 0x04) >> 2, (flags & 0x02) >> 1, (flags & 0x01));
- flags = tvb_get_guint8 (tvb, offset+6);
- proto_tree_add_text (tree, tvb, offset+6, 1,
- "Loading Mechanism Type: %u, Eject: %u, Prevent Jumper: %u,"
- "Lock State: %u, Lock: %u",
- (flags & 0xe0) >> 5, (flags & 0x08) >> 3,
- (flags & 0x04) >> 2, (flags & 0x02) >> 1, (flags & 0x01));
- flags = tvb_get_guint8 (tvb, offset+7);
- proto_tree_add_text (tree, tvb, offset+7, 1,
- "R-W in Lead-in: %u, Side Change Capable: %u, S/W Slot Selection: %u,"
- "Changer Supports Disc Present: %u, Separate Channel Mute: %u, Separate volume levels: %u",
- (flags & 0x20) >> 5, (flags & 0x10) >> 4, (flags & 0x08) >> 3,
- (flags & 0x04) >> 2, (flags & 0x02) >> 1, (flags & 0x01));
- proto_tree_add_text (tree, tvb, offset+10, 2,
- "Number of Volume Levels Supported: %u",
- tvb_get_ntohs (tvb, offset+10));
- proto_tree_add_text (tree, tvb, offset+12, 2,
- "Buffer Size Supported: %u",
- tvb_get_ntohs (tvb, offset+12));
- flags = tvb_get_guint8 (tvb, offset+17);
- proto_tree_add_text (tree, tvb, offset+17, 1,
- "Length: %u, LSBF: %u, RCK: %u, BCKF: %u",
- (flags & 0x30) >> 4, (flags & 0x08) >> 3,
- (flags & 0x04) >> 2, (flags & 0x02) >> 1);
- proto_tree_add_text (tree, tvb, offset+22, 2,
- "Copy Management Revision Support: %u",
- tvb_get_ntohs (tvb, offset+22));
- flags = tvb_get_guint8 (tvb, offset+27);
- proto_tree_add_text (tree, tvb, offset+27, 1,
- "Rotation Control Selected: %u",
- (flags & 0x03));
- proto_tree_add_text (tree, tvb, offset+28, 2,
- "Current Write Speed Selected: %u",
- tvb_get_ntohs (tvb, offset+28));
- n = tvb_get_ntohs (tvb, offset+30);
- proto_tree_add_text (tree, tvb, offset+30, 2,
- "Number of Logical Unit Write Speed Performance Descriptor Tables: %u",
- n);
+ flags = tvb_get_guint8(tvb, offset+2);
+ proto_tree_add_text(tree, tvb, offset+2, 1,
+ "DVD-RAM Read: %u, DVD-R Read: %u, DVD-ROM Read: %u,"
+ "Method 2: %u, CD-RW Read: %u, CD-R Read: %u",
+ (flags & 0x20) >> 5, (flags & 0x10) >> 4, (flags & 0x08) >> 3,
+ (flags & 0x04) >> 2, (flags & 0x02) >> 1, (flags & 0x01));
+ flags = tvb_get_guint8(tvb, offset+3);
+ proto_tree_add_text(tree, tvb, offset+3, 1,
+ "DVD-RAM Write: %u, DVD-R Write: %u, DVD-ROM Write: %u,"
+ "Test Write: %u, CD-RW Write: %u, CD-R Write: %u",
+ (flags & 0x20) >> 5, (flags & 0x10) >> 4, (flags & 0x08) >> 3,
+ (flags & 0x04) >> 2, (flags & 0x02) >> 1, (flags & 0x01));
+ flags = tvb_get_guint8(tvb, offset+4);
+ proto_tree_add_text(tree, tvb, offset+4, 1,
+ "BUF: %u, Multi Session: %u, Mode 2 Form 2: %u, Mode 2 Form 1: %u,"
+ "Digital Port (2): %u, Digital Port (1): %u, Composite: %u, Audio Play: %u",
+ (flags & 0x80) >> 7, (flags & 0x40) >> 6, (flags & 0x20) >> 5, (flags & 0x10) >> 4,
+ (flags & 0x08) >> 3, (flags & 0x04) >> 2, (flags & 0x02) >> 1, (flags & 0x01));
+ flags = tvb_get_guint8(tvb, offset+5);
+ proto_tree_add_text(tree, tvb, offset+5, 1,
+ "Read Bar Code: %u, UPC: %u, ISRC: %u, C2 Pointers supported: %u,"
+ "R-W Deinterleaved & corrected: %u, R-W Supported: %u, CD-DA Stream is Accurate: %u, CD-DA Cmds Supported: %u",
+ (flags & 0x80) >> 7, (flags & 0x40) >> 6, (flags & 0x20) >> 5, (flags & 0x10) >> 4,
+ (flags & 0x08) >> 3, (flags & 0x04) >> 2, (flags & 0x02) >> 1, (flags & 0x01));
+ flags = tvb_get_guint8(tvb, offset+6);
+ proto_tree_add_text(tree, tvb, offset+6, 1,
+ "Loading Mechanism Type: %u, Eject: %u, Prevent Jumper: %u,"
+ "Lock State: %u, Lock: %u",
+ (flags & 0xe0) >> 5, (flags & 0x08) >> 3,
+ (flags & 0x04) >> 2, (flags & 0x02) >> 1, (flags & 0x01));
+ flags = tvb_get_guint8(tvb, offset+7);
+ proto_tree_add_text(tree, tvb, offset+7, 1,
+ "R-W in Lead-in: %u, Side Change Capable: %u, S/W Slot Selection: %u,"
+ "Changer Supports Disc Present: %u, Separate Channel Mute: %u, Separate volume levels: %u",
+ (flags & 0x20) >> 5, (flags & 0x10) >> 4, (flags & 0x08) >> 3,
+ (flags & 0x04) >> 2, (flags & 0x02) >> 1, (flags & 0x01));
+ proto_tree_add_text(tree, tvb, offset+10, 2,
+ "Number of Volume Levels Supported: %u",
+ tvb_get_ntohs(tvb, offset+10));
+ proto_tree_add_text(tree, tvb, offset+12, 2,
+ "Buffer Size Supported: %u",
+ tvb_get_ntohs(tvb, offset+12));
+ flags = tvb_get_guint8(tvb, offset+17);
+ proto_tree_add_text(tree, tvb, offset+17, 1,
+ "Length: %u, LSBF: %u, RCK: %u, BCKF: %u",
+ (flags & 0x30) >> 4, (flags & 0x08) >> 3,
+ (flags & 0x04) >> 2, (flags & 0x02) >> 1);
+ proto_tree_add_text(tree, tvb, offset+22, 2,
+ "Copy Management Revision Support: %u",
+ tvb_get_ntohs(tvb, offset+22));
+ flags = tvb_get_guint8(tvb, offset+27);
+ proto_tree_add_text(tree, tvb, offset+27, 1,
+ "Rotation Control Selected: %u",
+ (flags & 0x03));
+ proto_tree_add_text(tree, tvb, offset+28, 2,
+ "Current Write Speed Selected: %u",
+ tvb_get_ntohs(tvb, offset+28));
+ n = tvb_get_ntohs(tvb, offset+30);
+ proto_tree_add_text(tree, tvb, offset+30, 2,
+ "Number of Logical Unit Write Speed Performance Descriptor Tables: %u",
+ n);
break;
default:
return FALSE;
@@ -3250,105 +3330,105 @@ dissect_scsi_mmc5_modepage (tvbuff_t *tvb _U_, packet_info *pinfo _U_,
}
static gboolean
-dissect_scsi_smc_modepage (tvbuff_t *tvb, packet_info *pinfo _U_,
- proto_tree *tree, guint offset, guint8 pcode)
+dissect_scsi_smc_modepage(tvbuff_t *tvb, packet_info *pinfo _U_,
+ proto_tree *tree, guint offset, guint8 pcode)
{
guint8 flags;
guint8 param_list_len;
switch (pcode) {
case SCSI_SMC_MODEPAGE_EAA:
- param_list_len = tvb_get_guint8 (tvb, offset+2);
- proto_tree_add_text (tree, tvb, offset+2, 1, "Parameter List Length: %u",
- param_list_len);
+ param_list_len = tvb_get_guint8(tvb, offset+2);
+ proto_tree_add_text(tree, tvb, offset+2, 1, "Parameter List Length: %u",
+ param_list_len);
if (param_list_len < 2)
break;
- proto_tree_add_text (tree, tvb, offset+3, 2, "First Medium Transport Element Address: %u",
- tvb_get_ntohs (tvb, offset+3));
+ proto_tree_add_text(tree, tvb, offset+3, 2, "First Medium Transport Element Address: %u",
+ tvb_get_ntohs(tvb, offset+3));
param_list_len -= 2;
if (param_list_len < 2)
break;
- proto_tree_add_text (tree, tvb, offset+5, 2, "Number of Medium Transport Elements: %u",
- tvb_get_ntohs (tvb, offset+5));
+ proto_tree_add_text(tree, tvb, offset+5, 2, "Number of Medium Transport Elements: %u",
+ tvb_get_ntohs(tvb, offset+5));
param_list_len -= 2;
if (param_list_len < 2)
break;
- proto_tree_add_text (tree, tvb, offset+7, 2, "First Storage Element Address: %u",
- tvb_get_ntohs (tvb, offset+7));
+ proto_tree_add_text(tree, tvb, offset+7, 2, "First Storage Element Address: %u",
+ tvb_get_ntohs(tvb, offset+7));
param_list_len -= 2;
if (param_list_len < 2)
break;
- proto_tree_add_text (tree, tvb, offset+9, 2, "Number of Storage Elements: %u",
- tvb_get_ntohs (tvb, offset+9));
+ proto_tree_add_text(tree, tvb, offset+9, 2, "Number of Storage Elements: %u",
+ tvb_get_ntohs(tvb, offset+9));
param_list_len -= 2;
if (param_list_len < 2)
break;
- proto_tree_add_text (tree, tvb, offset+11, 2, "First Import/Export Element Address: %u",
- tvb_get_ntohs (tvb, offset+11));
+ proto_tree_add_text(tree, tvb, offset+11, 2, "First Import/Export Element Address: %u",
+ tvb_get_ntohs(tvb, offset+11));
param_list_len -= 2;
if (param_list_len < 2)
break;
- proto_tree_add_text (tree, tvb, offset+13, 2, "Number of Import/Export Elements: %u",
- tvb_get_ntohs (tvb, offset+13));
+ proto_tree_add_text(tree, tvb, offset+13, 2, "Number of Import/Export Elements: %u",
+ tvb_get_ntohs(tvb, offset+13));
param_list_len -= 2;
if (param_list_len < 2)
break;
- proto_tree_add_text (tree, tvb, offset+15, 2, "First Data Transfer Element Address: %u",
- tvb_get_ntohs (tvb, offset+15));
+ proto_tree_add_text(tree, tvb, offset+15, 2, "First Data Transfer Element Address: %u",
+ tvb_get_ntohs(tvb, offset+15));
param_list_len -= 2;
if (param_list_len < 2)
break;
- proto_tree_add_text (tree, tvb, offset+17, 2, "Number of Data Transfer Elements: %u",
- tvb_get_ntohs (tvb, offset+17));
+ proto_tree_add_text(tree, tvb, offset+17, 2, "Number of Data Transfer Elements: %u",
+ tvb_get_ntohs(tvb, offset+17));
break;
case SCSI_SMC_MODEPAGE_TRANGEOM:
return FALSE;
case SCSI_SMC_MODEPAGE_DEVCAP:
- flags = tvb_get_guint8 (tvb, offset+2);
- proto_tree_add_text (tree, tvb, offset+2, 1,
- "STORDT: %u, STORI/E: %u, STORST: %u, STORMT: %u",
- (flags & 0x08) >> 3, (flags & 0x04) >> 2,
- (flags & 0x02) >> 1, (flags & 0x01));
- flags = tvb_get_guint8 (tvb, offset+4);
- proto_tree_add_text (tree, tvb, offset+4, 1,
- "MT->DT: %u, MT->I/E: %u, MT->ST: %u, MT->MT: %u",
- (flags & 0x08) >> 3, (flags & 0x04) >> 2,
- (flags & 0x02) >> 1, (flags & 0x01));
- flags = tvb_get_guint8 (tvb, offset+5);
- proto_tree_add_text (tree, tvb, offset+5, 1,
- "ST->DT: %u, ST->I/E: %u, ST->ST: %u, ST->MT: %u",
- (flags & 0x08) >> 3, (flags & 0x04) >> 2,
- (flags & 0x02) >> 1, (flags & 0x01));
- flags = tvb_get_guint8 (tvb, offset+6);
- proto_tree_add_text (tree, tvb, offset+6, 1,
- "I/E->DT: %u, I/E->I/E: %u, I/E->ST: %u, I/E->MT: %u",
- (flags & 0x08) >> 3, (flags & 0x04) >> 2,
- (flags & 0x02) >> 1, (flags & 0x01));
- flags = tvb_get_guint8 (tvb, offset+7);
- proto_tree_add_text (tree, tvb, offset+7, 1,
- "DT->DT: %u, DT->I/E: %u, DT->ST: %u, DT->MT: %u",
- (flags & 0x08) >> 3, (flags & 0x04) >> 2,
- (flags & 0x02) >> 1, (flags & 0x01));
- flags = tvb_get_guint8 (tvb, offset+12);
- proto_tree_add_text (tree, tvb, offset+12, 1,
- "MT<>DT: %u, MT<>I/E: %u, MT<>ST: %u, MT<>MT: %u",
- (flags & 0x08) >> 3, (flags & 0x04) >> 2,
- (flags & 0x02) >> 1, (flags & 0x01));
- flags = tvb_get_guint8 (tvb, offset+13);
- proto_tree_add_text (tree, tvb, offset+13, 1,
- "ST<>DT: %u, ST<>I/E: %u, ST<>ST: %u, ST<>MT: %u",
- (flags & 0x08) >> 3, (flags & 0x04) >> 2,
- (flags & 0x02) >> 1, (flags & 0x01));
- flags = tvb_get_guint8 (tvb, offset+14);
- proto_tree_add_text (tree, tvb, offset+14, 1,
- "I/E<>DT: %u, I/E<>I/E: %u, I/E<>ST: %u, I/E<>MT: %u",
- (flags & 0x08) >> 3, (flags & 0x04) >> 2,
- (flags & 0x02) >> 1, (flags & 0x01));
- flags = tvb_get_guint8 (tvb, offset+15);
- proto_tree_add_text (tree, tvb, offset+15, 1,
- "DT<>DT: %u, DT<>I/E: %u, DT<>ST: %u, DT<>MT: %u",
- (flags & 0x08) >> 3, (flags & 0x04) >> 2,
- (flags & 0x02) >> 1, (flags & 0x01));
+ flags = tvb_get_guint8(tvb, offset+2);
+ proto_tree_add_text(tree, tvb, offset+2, 1,
+ "STORDT: %u, STORI/E: %u, STORST: %u, STORMT: %u",
+ (flags & 0x08) >> 3, (flags & 0x04) >> 2,
+ (flags & 0x02) >> 1, (flags & 0x01));
+ flags = tvb_get_guint8(tvb, offset+4);
+ proto_tree_add_text(tree, tvb, offset+4, 1,
+ "MT->DT: %u, MT->I/E: %u, MT->ST: %u, MT->MT: %u",
+ (flags & 0x08) >> 3, (flags & 0x04) >> 2,
+ (flags & 0x02) >> 1, (flags & 0x01));
+ flags = tvb_get_guint8(tvb, offset+5);
+ proto_tree_add_text(tree, tvb, offset+5, 1,
+ "ST->DT: %u, ST->I/E: %u, ST->ST: %u, ST->MT: %u",
+ (flags & 0x08) >> 3, (flags & 0x04) >> 2,
+ (flags & 0x02) >> 1, (flags & 0x01));
+ flags = tvb_get_guint8(tvb, offset+6);
+ proto_tree_add_text(tree, tvb, offset+6, 1,
+ "I/E->DT: %u, I/E->I/E: %u, I/E->ST: %u, I/E->MT: %u",
+ (flags & 0x08) >> 3, (flags & 0x04) >> 2,
+ (flags & 0x02) >> 1, (flags & 0x01));
+ flags = tvb_get_guint8(tvb, offset+7);
+ proto_tree_add_text(tree, tvb, offset+7, 1,
+ "DT->DT: %u, DT->I/E: %u, DT->ST: %u, DT->MT: %u",
+ (flags & 0x08) >> 3, (flags & 0x04) >> 2,
+ (flags & 0x02) >> 1, (flags & 0x01));
+ flags = tvb_get_guint8(tvb, offset+12);
+ proto_tree_add_text(tree, tvb, offset+12, 1,
+ "MT<>DT: %u, MT<>I/E: %u, MT<>ST: %u, MT<>MT: %u",
+ (flags & 0x08) >> 3, (flags & 0x04) >> 2,
+ (flags & 0x02) >> 1, (flags & 0x01));
+ flags = tvb_get_guint8(tvb, offset+13);
+ proto_tree_add_text(tree, tvb, offset+13, 1,
+ "ST<>DT: %u, ST<>I/E: %u, ST<>ST: %u, ST<>MT: %u",
+ (flags & 0x08) >> 3, (flags & 0x04) >> 2,
+ (flags & 0x02) >> 1, (flags & 0x01));
+ flags = tvb_get_guint8(tvb, offset+14);
+ proto_tree_add_text(tree, tvb, offset+14, 1,
+ "I/E<>DT: %u, I/E<>I/E: %u, I/E<>ST: %u, I/E<>MT: %u",
+ (flags & 0x08) >> 3, (flags & 0x04) >> 2,
+ (flags & 0x02) >> 1, (flags & 0x01));
+ flags = tvb_get_guint8(tvb, offset+15);
+ proto_tree_add_text(tree, tvb, offset+15, 1,
+ "DT<>DT: %u, DT<>I/E: %u, DT<>ST: %u, DT<>MT: %u",
+ (flags & 0x08) >> 3, (flags & 0x04) >> 2,
+ (flags & 0x02) >> 1, (flags & 0x01));
break;
default:
return FALSE;
@@ -3357,23 +3437,23 @@ dissect_scsi_smc_modepage (tvbuff_t *tvb, packet_info *pinfo _U_,
}
static guint
-dissect_scsi_modepage (tvbuff_t *tvb, packet_info *pinfo,
- proto_tree *scsi_tree, guint offset,
- scsi_device_type devtype)
+dissect_scsi_modepage(tvbuff_t *tvb, packet_info *pinfo,
+ proto_tree *scsi_tree, guint offset,
+ scsi_device_type devtype)
{
- guint8 pcode, plen;
- proto_tree *tree;
- proto_item *ti;
+ guint8 pcode, plen;
+ proto_tree *tree;
+ proto_item *ti;
const value_string *modepage_val;
- int hf_pagecode;
+ int hf_pagecode;
gboolean (*dissect_modepage)(tvbuff_t *, packet_info *, proto_tree *,
guint, guint8);
- pcode = tvb_get_guint8 (tvb, offset);
- plen = tvb_get_guint8 (tvb, offset+1);
+ pcode = tvb_get_guint8(tvb, offset);
+ plen = tvb_get_guint8(tvb, offset+1);
- if (match_strval (pcode & SCSI_MS_PCODE_BITS,
- scsi_spc_modepage_val) == NULL) {
+ if (match_strval(pcode & SCSI_MS_PCODE_BITS,
+ scsi_spc_modepage_val) == NULL) {
/*
* This isn't a generic mode page that applies to all SCSI
* device types; try to interpret it based on what we deduced,
@@ -3420,50 +3500,50 @@ dissect_scsi_modepage (tvbuff_t *tvb, packet_info *pinfo,
hf_pagecode = hf_scsi_spcpagecode;
dissect_modepage = dissect_scsi_spc_modepage;
}
- ti = proto_tree_add_text (scsi_tree, tvb, offset, plen+2, "%s Mode Page",
- val_to_str (pcode & SCSI_MS_PCODE_BITS,
- modepage_val, "Unknown (0x%08x)"));
- tree = proto_item_add_subtree (ti, ett_scsi_page);
- proto_tree_add_text (tree, tvb, offset, 1, "PS: %u", (pcode & 0x80) >> 7);
+ ti = proto_tree_add_text(scsi_tree, tvb, offset, plen+2, "%s Mode Page",
+ val_to_str(pcode & SCSI_MS_PCODE_BITS,
+ modepage_val, "Unknown (0x%08x)"));
+ tree = proto_item_add_subtree(ti, ett_scsi_page);
+ proto_tree_add_text(tree, tvb, offset, 1, "PS: %u", (pcode & 0x80) >> 7);
- proto_tree_add_item (tree, hf_pagecode, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_text (tree, tvb, offset+1, 1, "Page Length: %u",
- plen);
+ proto_tree_add_item(tree, hf_pagecode, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_text(tree, tvb, offset+1, 1, "Page Length: %u",
+ plen);
- if (!tvb_bytes_exist (tvb, offset, plen)) {
+ if (!tvb_bytes_exist(tvb, offset, plen)) {
/* XXX - why not just drive on and throw an exception? */
return (plen + 2);
}
if (!(*dissect_modepage)(tvb, pinfo, tree, offset,
(guint8) (pcode & SCSI_MS_PCODE_BITS))) {
- proto_tree_add_text (tree, tvb, offset+2, plen,
- "Unknown Page");
+ proto_tree_add_text(tree, tvb, offset+2, plen,
+ "Unknown Page");
}
return (plen+2);
}
void
-dissect_spc_modeselect6 (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- guint offset, gboolean isreq, gboolean iscdb,
- guint payload_len, scsi_task_data_t *cdata)
+dissect_spc_modeselect6(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ guint offset, gboolean isreq, gboolean iscdb,
+ guint payload_len, scsi_task_data_t *cdata)
{
- guint8 flags;
- guint plen;
- gint tot_len, desclen;
+ guint8 flags;
+ guint plen;
+ gint tot_len, desclen;
tvbuff_t *blockdesc_tvb;
if (!tree)
return;
if (isreq && iscdb) {
- flags = tvb_get_guint8 (tvb, offset);
- proto_tree_add_uint_format (tree, hf_scsi_modesel_flags, tvb, offset, 1,
- flags, "PF = %u, SP = %u", flags & 0x10,
- flags & 0x1);
- proto_tree_add_item (tree, hf_scsi_paramlen, tvb, offset+3, 1, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint_format(tree, hf_scsi_modesel_flags, tvb, offset, 1,
+ flags, "PF = %u, SP = %u", flags & 0x10,
+ flags & 0x1);
+ proto_tree_add_item(tree, hf_scsi_paramlen, tvb, offset+3, 1, ENC_BIG_ENDIAN);
proto_tree_add_bitmask(tree, tvb, offset+4, hf_scsi_control,
- ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
+ ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
}
else {
/* Mode Parameter has the following format:
@@ -3477,9 +3557,9 @@ dissect_spc_modeselect6 (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
*/
if (payload_len < 1)
return;
- tot_len = tvb_get_guint8 (tvb, offset);
- proto_tree_add_text (tree, tvb, offset, 1, "Mode Data Length: %d",
- tot_len);
+ tot_len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(tree, tvb, offset, 1, "Mode Data Length: %d",
+ tot_len);
offset += 1;
payload_len -= 1;
/* The mode data length is reserved for MODE SELECT, so we just
@@ -3490,15 +3570,15 @@ dissect_spc_modeselect6 (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
switch (cdata->itl->cmdset&SCSI_CMDSET_MASK) {
case SCSI_DEV_SBC:
- proto_tree_add_text (tree, tvb, offset, 1, "Medium Type: %s",
- val_to_str(tvb_get_guint8 (tvb, offset),
- scsi_modesense_medtype_sbc_val,
- "Unknown (0x%02x)"));
+ proto_tree_add_text(tree, tvb, offset, 1, "Medium Type: %s",
+ val_to_str(tvb_get_guint8(tvb, offset),
+ scsi_modesense_medtype_sbc_val,
+ "Unknown (0x%02x)"));
break;
default:
- proto_tree_add_text (tree, tvb, offset, 1, "Medium Type: 0x%02x",
- tvb_get_guint8 (tvb, offset));
+ proto_tree_add_text(tree, tvb, offset, 1, "Medium Type: 0x%02x",
+ tvb_get_guint8(tvb, offset));
break;
}
offset += 1;
@@ -3506,30 +3586,30 @@ dissect_spc_modeselect6 (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
if (payload_len < 1)
return;
- proto_tree_add_text (tree, tvb, offset, 1,
- "Device-Specific Parameter: 0x%02x",
- tvb_get_guint8 (tvb, offset));
+ proto_tree_add_text(tree, tvb, offset, 1,
+ "Device-Specific Parameter: 0x%02x",
+ tvb_get_guint8(tvb, offset));
offset += 1;
payload_len -= 1;
if (payload_len < 1)
return;
- desclen = tvb_get_guint8 (tvb, offset);
- proto_tree_add_text (tree, tvb, offset, 1,
- "Block Descriptor Length: %d", desclen);
+ desclen = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(tree, tvb, offset, 1,
+ "Block Descriptor Length: %d", desclen);
offset += 1;
payload_len -= 1;
- if(tvb_length_remaining(tvb, offset)>0){
- blockdesc_tvb=tvb_new_subset(tvb, offset, MIN(tvb_length_remaining(tvb, offset),desclen), desclen);
- dissect_scsi_blockdescs (blockdesc_tvb, pinfo, tree, cdata, FALSE);
+ if (tvb_length_remaining(tvb, offset)>0) {
+ blockdesc_tvb = tvb_new_subset(tvb, offset, MIN(tvb_length_remaining(tvb, offset),desclen), desclen);
+ dissect_scsi_blockdescs(blockdesc_tvb, pinfo, tree, cdata, FALSE);
}
offset += desclen;
payload_len -= desclen;
/* offset points to the start of the mode page */
- while ((payload_len > 0) && tvb_bytes_exist (tvb, offset, 2)) {
- plen = dissect_scsi_modepage (tvb, pinfo, tree, offset, cdata->itl->cmdset&SCSI_CMDSET_MASK);
+ while ((payload_len > 0) && tvb_bytes_exist(tvb, offset, 2)) {
+ plen = dissect_scsi_modepage(tvb, pinfo, tree, offset, cdata->itl->cmdset&SCSI_CMDSET_MASK);
offset += plen;
payload_len -= plen;
}
@@ -3537,27 +3617,27 @@ dissect_spc_modeselect6 (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
}
void
-dissect_spc_modeselect10 (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- guint offset, gboolean isreq, gboolean iscdb,
- guint payload_len, scsi_task_data_t *cdata)
+dissect_spc_modeselect10(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ guint offset, gboolean isreq, gboolean iscdb,
+ guint payload_len, scsi_task_data_t *cdata)
{
- guint8 flags;
- gboolean longlba;
- gint tot_len, desclen;
- guint plen;
+ guint8 flags;
+ gboolean longlba;
+ gint tot_len, desclen;
+ guint plen;
tvbuff_t *blockdesc_tvb;
if (!tree)
return;
if (isreq && iscdb) {
- flags = tvb_get_guint8 (tvb, offset);
- proto_tree_add_uint_format (tree, hf_scsi_modesel_flags, tvb, offset, 1,
- flags, "PF = %u, SP = %u", flags & 0x10,
- flags & 0x1);
- proto_tree_add_item (tree, hf_scsi_paramlen16, tvb, offset+6, 2, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint_format(tree, hf_scsi_modesel_flags, tvb, offset, 1,
+ flags, "PF = %u, SP = %u", flags & 0x10,
+ flags & 0x1);
+ proto_tree_add_item(tree, hf_scsi_paramlen16, tvb, offset+6, 2, ENC_BIG_ENDIAN);
proto_tree_add_bitmask(tree, tvb, offset+8, hf_scsi_control,
- ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
+ ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
}
else {
/* Mode Parameter has the following format:
@@ -3571,9 +3651,9 @@ dissect_spc_modeselect10 (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
*/
if (payload_len < 1)
return;
- tot_len = tvb_get_ntohs (tvb, offset);
- proto_tree_add_text (tree, tvb, offset, 2, "Mode Data Length: %u",
- tot_len);
+ tot_len = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_text(tree, tvb, offset, 2, "Mode Data Length: %u",
+ tot_len);
offset += 2;
payload_len -= 2;
/* The mode data length is reserved for MODE SELECT, so we just
@@ -3581,20 +3661,20 @@ dissect_spc_modeselect10 (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
if (payload_len < 1)
return;
- if(!cdata->itl)
+ if (!cdata->itl)
return;
switch (cdata->itl->cmdset&SCSI_CMDSET_MASK) {
case SCSI_DEV_SBC:
- proto_tree_add_text (tree, tvb, offset, 1, "Medium Type: %s",
- val_to_str(tvb_get_guint8 (tvb, offset),
- scsi_modesense_medtype_sbc_val,
- "Unknown (0x%02x)"));
+ proto_tree_add_text(tree, tvb, offset, 1, "Medium Type: %s",
+ val_to_str(tvb_get_guint8(tvb, offset),
+ scsi_modesense_medtype_sbc_val,
+ "Unknown (0x%02x)"));
break;
default:
- proto_tree_add_text (tree, tvb, offset, 1, "Medium Type: 0x%02x",
- tvb_get_guint8 (tvb, offset));
+ proto_tree_add_text(tree, tvb, offset, 1, "Medium Type: 0x%02x",
+ tvb_get_guint8(tvb, offset));
break;
}
offset += 1;
@@ -3602,37 +3682,37 @@ dissect_spc_modeselect10 (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
if (payload_len < 1)
return;
- proto_tree_add_text (tree, tvb, offset, 1,
- "Device-Specific Parameter: 0x%02x",
- tvb_get_guint8 (tvb, offset));
+ proto_tree_add_text(tree, tvb, offset, 1,
+ "Device-Specific Parameter: 0x%02x",
+ tvb_get_guint8(tvb, offset));
offset += 1;
payload_len -= 1;
if (payload_len < 1)
return;
- longlba = tvb_get_guint8 (tvb, offset) & 0x1;
- proto_tree_add_text (tree, tvb, offset, 1, "LongLBA: %u", longlba);
+ longlba = tvb_get_guint8(tvb, offset) & 0x1;
+ proto_tree_add_text(tree, tvb, offset, 1, "LongLBA: %u", longlba);
offset += 2; /* skip LongLBA byte and reserved byte */
payload_len -= 2;
if (payload_len < 1)
return;
- desclen = tvb_get_ntohs (tvb, offset);
- proto_tree_add_text (tree, tvb, offset, 2,
- "Block Descriptor Length: %u", desclen);
+ desclen = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_text(tree, tvb, offset, 2,
+ "Block Descriptor Length: %u", desclen);
offset += 2;
payload_len -= 2;
- if(tvb_length_remaining(tvb, offset)>0){
- blockdesc_tvb=tvb_new_subset(tvb, offset, MIN(tvb_length_remaining(tvb, offset),desclen), desclen);
- dissect_scsi_blockdescs (blockdesc_tvb, pinfo, tree, cdata, longlba);
+ if (tvb_length_remaining(tvb, offset)>0) {
+ blockdesc_tvb = tvb_new_subset(tvb, offset, MIN(tvb_length_remaining(tvb, offset),desclen), desclen);
+ dissect_scsi_blockdescs(blockdesc_tvb, pinfo, tree, cdata, longlba);
}
offset += desclen;
payload_len -= desclen;
/* offset points to the start of the mode page */
- while ((payload_len > 0) && tvb_bytes_exist (tvb, offset, 2)) {
- plen = dissect_scsi_modepage (tvb, pinfo, tree, offset, cdata->itl->cmdset&SCSI_CMDSET_MASK);
+ while ((payload_len > 0) && tvb_bytes_exist(tvb, offset, 2)) {
+ plen = dissect_scsi_modepage(tvb, pinfo, tree, offset, cdata->itl->cmdset&SCSI_CMDSET_MASK);
offset += plen;
payload_len -= plen;
}
@@ -3640,20 +3720,20 @@ dissect_spc_modeselect10 (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
}
static void
-dissect_scsi_pagecode (tvbuff_t *tvb, packet_info *pinfo _U_,
- proto_tree *tree, guint offset,
- scsi_task_data_t *cdata)
+dissect_scsi_pagecode(tvbuff_t *tvb, packet_info *pinfo _U_,
+ proto_tree *tree, guint offset,
+ scsi_task_data_t *cdata)
{
guint8 pcode;
- int hf_pagecode;
+ int hf_pagecode;
/* unless we have cdata there is not much point in continuing */
if (!cdata)
return;
- pcode = tvb_get_guint8 (tvb, offset);
- if (match_strval (pcode & SCSI_MS_PCODE_BITS,
- scsi_spc_modepage_val) == NULL) {
+ pcode = tvb_get_guint8(tvb, offset);
+ if (match_strval(pcode & SCSI_MS_PCODE_BITS,
+ scsi_spc_modepage_val) == NULL) {
/*
* This isn't a generic mode page that applies to all SCSI
* device types; try to interpret it based on what we deduced,
@@ -3683,31 +3763,31 @@ dissect_scsi_pagecode (tvbuff_t *tvb, packet_info *pinfo _U_,
} else {
hf_pagecode = hf_scsi_spcpagecode;
}
- proto_tree_add_uint (tree, hf_pagecode, tvb, offset, 1, pcode);
+ proto_tree_add_uint(tree, hf_pagecode, tvb, offset, 1, pcode);
}
void
-dissect_spc_modesense6 (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- guint offset, gboolean isreq, gboolean iscdb,
- guint payload_len, scsi_task_data_t *cdata)
+dissect_spc_modesense6(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ guint offset, gboolean isreq, gboolean iscdb,
+ guint payload_len, scsi_task_data_t *cdata)
{
- guint8 flags;
- guint plen;
- gint tot_len, desclen;
+ guint8 flags;
+ guint plen;
+ gint tot_len, desclen;
tvbuff_t *blockdesc_tvb;
if (!tree)
return;
if (isreq && iscdb) {
- flags = tvb_get_guint8 (tvb, offset);
- proto_tree_add_uint_format (tree, hf_scsi_modesns_flags, tvb, offset, 1,
- flags, "DBD = %u", flags & 0x8);
- proto_tree_add_item (tree, hf_scsi_modesns_pc, tvb, offset+1, 1, ENC_BIG_ENDIAN);
- dissect_scsi_pagecode (tvb, pinfo, tree, offset+1, cdata);
- proto_tree_add_item (tree, hf_scsi_alloclen, tvb, offset+3, 1, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint_format(tree, hf_scsi_modesns_flags, tvb, offset, 1,
+ flags, "DBD = %u", flags & 0x8);
+ proto_tree_add_item(tree, hf_scsi_modesns_pc, tvb, offset+1, 1, ENC_BIG_ENDIAN);
+ dissect_scsi_pagecode(tvb, pinfo, tree, offset+1, cdata);
+ proto_tree_add_item(tree, hf_scsi_alloclen, tvb, offset+3, 1, ENC_BIG_ENDIAN);
proto_tree_add_bitmask(tree, tvb, offset+4, hf_scsi_control,
- ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
+ ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
}
else {
/* Mode sense response has the following format:
@@ -3719,9 +3799,9 @@ dissect_spc_modesense6 (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
* Page (s)
* - Page code, Page length, Page Parameters
*/
- tot_len = tvb_get_guint8 (tvb, offset);
- proto_tree_add_text (tree, tvb, offset, 1, "Mode Data Length: %u",
- tot_len);
+ tot_len = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(tree, tvb, offset, 1, "Mode Data Length: %u",
+ tot_len);
offset += 1;
/* The actual payload is the min of the length in the response & the
@@ -3736,38 +3816,38 @@ dissect_spc_modesense6 (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
if (tot_len < 1)
return;
- proto_tree_add_text (tree, tvb, offset, 1, "Medium Type: 0x%02x",
- tvb_get_guint8 (tvb, offset));
+ proto_tree_add_text(tree, tvb, offset, 1, "Medium Type: 0x%02x",
+ tvb_get_guint8(tvb, offset));
offset += 1;
tot_len -= 1;
if (tot_len < 1)
return;
- proto_tree_add_text (tree, tvb, offset, 1,
- "Device-Specific Parameter: 0x%02x",
- tvb_get_guint8 (tvb, offset));
+ proto_tree_add_text(tree, tvb, offset, 1,
+ "Device-Specific Parameter: 0x%02x",
+ tvb_get_guint8(tvb, offset));
offset += 1;
tot_len -= 1;
if (tot_len < 1)
return;
- desclen = tvb_get_guint8 (tvb, offset);
- proto_tree_add_text (tree, tvb, offset, 1,
- "Block Descriptor Length: %d", desclen);
+ desclen = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(tree, tvb, offset, 1,
+ "Block Descriptor Length: %d", desclen);
offset += 1;
tot_len -= 1;
- if(tvb_length_remaining(tvb, offset)>0){
- blockdesc_tvb=tvb_new_subset(tvb, offset, MIN(tvb_length_remaining(tvb, offset),desclen), desclen);
- dissect_scsi_blockdescs (blockdesc_tvb, pinfo, tree, cdata, FALSE);
+ if (tvb_length_remaining(tvb, offset)>0) {
+ blockdesc_tvb = tvb_new_subset(tvb, offset, MIN(tvb_length_remaining(tvb, offset),desclen), desclen);
+ dissect_scsi_blockdescs(blockdesc_tvb, pinfo, tree, cdata, FALSE);
}
offset += desclen;
tot_len -= desclen;
/* offset points to the start of the mode page */
- while ((tot_len > 0) && tvb_bytes_exist (tvb, offset, 2)) {
- plen = dissect_scsi_modepage (tvb, pinfo, tree, offset, cdata->itl->cmdset&SCSI_CMDSET_MASK);
+ while ((tot_len > 0) && tvb_bytes_exist(tvb, offset, 2)) {
+ plen = dissect_scsi_modepage(tvb, pinfo, tree, offset, cdata->itl->cmdset&SCSI_CMDSET_MASK);
offset += plen;
tot_len -= plen;
}
@@ -3775,29 +3855,29 @@ dissect_spc_modesense6 (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
}
void
-dissect_spc_modesense10 (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- guint offset, gboolean isreq, gboolean iscdb,
- guint payload_len, scsi_task_data_t *cdata)
+dissect_spc_modesense10(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ guint offset, gboolean isreq, gboolean iscdb,
+ guint payload_len, scsi_task_data_t *cdata)
{
- guint8 flags;
- gboolean longlba;
- gint tot_len, desclen;
- guint plen;
+ guint8 flags;
+ gboolean longlba;
+ gint tot_len, desclen;
+ guint plen;
tvbuff_t *blockdesc_tvb;
if (!tree)
return;
if (isreq && iscdb) {
- flags = tvb_get_guint8 (tvb, offset);
- proto_tree_add_uint_format (tree, hf_scsi_modesns_flags, tvb, offset, 1,
- flags, "LLBAA = %u, DBD = %u", flags & 0x10,
- flags & 0x8);
- proto_tree_add_item (tree, hf_scsi_modesns_pc, tvb, offset+1, 1, ENC_BIG_ENDIAN);
- dissect_scsi_pagecode (tvb, pinfo, tree, offset+1, cdata);
- proto_tree_add_item (tree, hf_scsi_alloclen16, tvb, offset+6, 2, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint_format(tree, hf_scsi_modesns_flags, tvb, offset, 1,
+ flags, "LLBAA = %u, DBD = %u", flags & 0x10,
+ flags & 0x8);
+ proto_tree_add_item(tree, hf_scsi_modesns_pc, tvb, offset+1, 1, ENC_BIG_ENDIAN);
+ dissect_scsi_pagecode(tvb, pinfo, tree, offset+1, cdata);
+ proto_tree_add_item(tree, hf_scsi_alloclen16, tvb, offset+6, 2, ENC_BIG_ENDIAN);
proto_tree_add_bitmask(tree, tvb, offset+8, hf_scsi_control,
- ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
+ ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
}
else {
/* Mode sense response has the following format:
@@ -3809,9 +3889,9 @@ dissect_spc_modesense10 (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
* Page (s)
* - Page code, Page length, Page Parameters
*/
- tot_len = tvb_get_ntohs (tvb, offset);
- proto_tree_add_text (tree, tvb, offset, 2, "Mode Data Length: %u",
- tot_len);
+ tot_len = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_text(tree, tvb, offset, 2, "Mode Data Length: %u",
+ tot_len);
offset += 2;
/* The actual payload is the min of the length in the response & the
* space allocated by the initiator as specified in the request.
@@ -3825,44 +3905,44 @@ dissect_spc_modesense10 (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
if (tot_len < 1)
return;
- proto_tree_add_text (tree, tvb, offset, 1, "Medium Type: 0x%02x",
- tvb_get_guint8 (tvb, offset));
+ proto_tree_add_text(tree, tvb, offset, 1, "Medium Type: 0x%02x",
+ tvb_get_guint8(tvb, offset));
offset += 1;
tot_len -= 1;
if (tot_len < 1)
return;
- proto_tree_add_text (tree, tvb, offset, 1,
- "Device-Specific Parameter: 0x%02x",
- tvb_get_guint8 (tvb, offset));
+ proto_tree_add_text(tree, tvb, offset, 1,
+ "Device-Specific Parameter: 0x%02x",
+ tvb_get_guint8(tvb, offset));
offset += 1;
tot_len -= 1;
if (tot_len < 1)
return;
- longlba = tvb_get_guint8 (tvb, offset) & 0x1;
- proto_tree_add_text (tree, tvb, offset, 1, "LongLBA: %u", longlba);
+ longlba = tvb_get_guint8(tvb, offset) & 0x1;
+ proto_tree_add_text(tree, tvb, offset, 1, "LongLBA: %u", longlba);
offset += 2; /* skip LongLBA byte and reserved byte */
tot_len -= 2;
if (tot_len < 1)
return;
- desclen = tvb_get_guint8 (tvb, offset);
- proto_tree_add_text (tree, tvb, offset, 1,
- "Block Descriptor Length: %u", desclen);
+ desclen = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(tree, tvb, offset, 1,
+ "Block Descriptor Length: %u", desclen);
offset += 2;
tot_len -= 2;
- if(tvb_length_remaining(tvb, offset)>0){
- blockdesc_tvb=tvb_new_subset(tvb, offset, MIN(tvb_length_remaining(tvb, offset),desclen), desclen);
- dissect_scsi_blockdescs (blockdesc_tvb, pinfo, tree, cdata, longlba);
+ if (tvb_length_remaining(tvb, offset)>0) {
+ blockdesc_tvb = tvb_new_subset(tvb, offset, MIN(tvb_length_remaining(tvb, offset),desclen), desclen);
+ dissect_scsi_blockdescs(blockdesc_tvb, pinfo, tree, cdata, longlba);
}
offset += desclen;
tot_len -= desclen;
/* offset points to the start of the mode page */
- while ((tot_len > 0) && tvb_bytes_exist (tvb, offset, 2)) {
- plen = dissect_scsi_modepage (tvb, pinfo, tree, offset, cdata->itl->cmdset&SCSI_CMDSET_MASK);
+ while ((tot_len > 0) && tvb_bytes_exist(tvb, offset, 2)) {
+ plen = dissect_scsi_modepage(tvb, pinfo, tree, offset, cdata->itl->cmdset&SCSI_CMDSET_MASK);
offset += plen;
tot_len -= plen;
}
@@ -3870,9 +3950,9 @@ dissect_spc_modesense10 (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
}
void
-dissect_spc_preventallowmediaremoval (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
- guint offset, gboolean isreq, gboolean iscdb,
- guint payload_len _U_, scsi_task_data_t *cdata _U_)
+dissect_spc_preventallowmediaremoval(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
+ guint offset, gboolean isreq, gboolean iscdb,
+ guint payload_len _U_, scsi_task_data_t *cdata _U_)
{
guint8 flags;
@@ -3880,34 +3960,34 @@ dissect_spc_preventallowmediaremoval (tvbuff_t *tvb, packet_info *pinfo _U_, pro
return;
if (isreq && iscdb) {
- flags = tvb_get_guint8 (tvb, offset+3);
- proto_tree_add_text (tree, tvb, offset+3, 1,
- "Persistent: %u, Prevent: %u",
- flags & 0x02, flags & 0x01);
+ flags = tvb_get_guint8(tvb, offset+3);
+ proto_tree_add_text(tree, tvb, offset+3, 1,
+ "Persistent: %u, Prevent: %u",
+ flags & 0x02, flags & 0x01);
proto_tree_add_bitmask(tree, tvb, offset+4, hf_scsi_control,
- ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
+ ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
}
}
void
-dissect_spc_persistentreservein (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
- guint offset, gboolean isreq, gboolean iscdb,
- guint payload_len, scsi_task_data_t *cdata)
+dissect_spc_persistentreservein(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
+ guint offset, gboolean isreq, gboolean iscdb,
+ guint payload_len, scsi_task_data_t *cdata)
{
guint16 flags;
- int numrec, i;
- guint len;
+ int numrec, i;
+ guint len;
if (!tree)
return;
if (isreq && iscdb) {
- proto_tree_add_item (tree, hf_scsi_persresvin_svcaction, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_scsi_alloclen16, tvb, offset+6, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_persresvin_svcaction, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_alloclen16, tvb, offset+6, 2, ENC_BIG_ENDIAN);
proto_tree_add_bitmask(tree, tvb, offset+8, hf_scsi_control,
- ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
+ ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
/* We store the service action since we want to interpret the data */
- cdata->itlq->flags = tvb_get_guint8 (tvb, offset);
+ cdata->itlq->flags = tvb_get_guint8(tvb, offset);
}
else {
if (cdata) {
@@ -3916,11 +3996,11 @@ dissect_spc_persistentreservein (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr
else {
flags = 0xFF;
}
- proto_tree_add_text (tree, tvb, offset, 4, "Generation Number: 0x%08x",
- tvb_get_ntohl (tvb, offset));
- len = tvb_get_ntohl (tvb, offset+4);
- proto_tree_add_text (tree, tvb, offset+4, 4, "Additional Length: %u",
- len);
+ proto_tree_add_text(tree, tvb, offset, 4, "Generation Number: 0x%08x",
+ tvb_get_ntohl(tvb, offset));
+ len = tvb_get_ntohl(tvb, offset+4);
+ proto_tree_add_text(tree, tvb, offset+4, 4, "Additional Length: %u",
+ len);
len = (payload_len > len) ? len : payload_len;
if ((flags & 0x1F) == SCSI_SPC_RESVIN_SVCA_RDKEYS) {
@@ -3930,47 +4010,47 @@ dissect_spc_persistentreservein (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr
offset += 8;
for (i = 0; i < numrec; i++) {
- proto_tree_add_item (tree, hf_scsi_persresv_key, tvb, offset,
- 8, ENC_NA);
+ proto_tree_add_item(tree, hf_scsi_persresv_key, tvb, offset,
+ 8, ENC_NA);
offset += 8;
}
}
else if ((flags & 0x1F) == SCSI_SPC_RESVIN_SVCA_RDRESV) {
- proto_tree_add_item (tree, hf_scsi_persresv_key, tvb, offset+8,
- 8, ENC_NA);
- proto_tree_add_item (tree, hf_scsi_persresv_scopeaddr, tvb,
- offset+8, 4, ENC_NA);
- proto_tree_add_item (tree, hf_scsi_persresv_scope, tvb, offset+13,
- 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_scsi_persresv_type, tvb, offset+13,
- 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_persresv_key, tvb, offset+8,
+ 8, ENC_NA);
+ proto_tree_add_item(tree, hf_scsi_persresv_scopeaddr, tvb,
+ offset+8, 4, ENC_NA);
+ proto_tree_add_item(tree, hf_scsi_persresv_scope, tvb, offset+13,
+ 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_persresv_type, tvb, offset+13,
+ 1, ENC_BIG_ENDIAN);
}
}
}
void
-dissect_spc_persistentreserveout (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
- guint offset, gboolean isreq, gboolean iscdb,
- guint payload_len _U_, scsi_task_data_t *cdata _U_)
+dissect_spc_persistentreserveout(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
+ guint offset, gboolean isreq, gboolean iscdb,
+ guint payload_len _U_, scsi_task_data_t *cdata _U_)
{
if (!tree)
return;
if (isreq && iscdb) {
- proto_tree_add_item (tree, hf_scsi_persresvout_svcaction, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_scsi_persresv_scope, tvb, offset+1, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_scsi_persresv_type, tvb, offset+1, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_scsi_paramlen16, tvb, offset+6, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_persresvout_svcaction, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_persresv_scope, tvb, offset+1, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_persresv_type, tvb, offset+1, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_paramlen16, tvb, offset+6, 2, ENC_BIG_ENDIAN);
proto_tree_add_bitmask(tree, tvb, offset+8, hf_scsi_control,
- ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
+ ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
/* We store the service action since we want to interpret the params */
- cdata->itlq->flags = tvb_get_guint8 (tvb, offset);
+ cdata->itlq->flags = tvb_get_guint8(tvb, offset);
}
else if (isreq && !iscdb) {
- proto_tree_add_item (tree, hf_scsi_persresvout_reskey, tvb, offset,
- 8, ENC_NA);
- proto_tree_add_item (tree, hf_scsi_persresvout_sareskey, tvb,
- offset +8, 8, ENC_NA);
+ proto_tree_add_item(tree, hf_scsi_persresvout_reskey, tvb, offset,
+ 8, ENC_NA);
+ proto_tree_add_item(tree, hf_scsi_persresvout_sareskey, tvb,
+ offset +8, 8, ENC_NA);
if (cdata->itlq->flags == 0x07) {
const int *persresv_fields[] = {
&hf_scsi_persresv_control_rsvd,
@@ -3978,11 +4058,11 @@ dissect_spc_persistentreserveout (tvbuff_t *tvb, packet_info *pinfo _U_, proto_t
&hf_scsi_persresv_control_aptpl,
NULL
};
- proto_tree_add_item (tree, hf_scsi_persresvout_obsolete, tvb,
- offset+16, 1, ENC_NA);
+ proto_tree_add_item(tree, hf_scsi_persresvout_obsolete, tvb,
+ offset+16, 1, ENC_NA);
proto_tree_add_bitmask(tree, tvb, offset+17,
- hf_scsi_persresvout_control, ett_persresv_control,
- persresv_fields, ENC_BIG_ENDIAN);
+ hf_scsi_persresvout_control, ett_persresv_control,
+ persresv_fields, ENC_BIG_ENDIAN);
}
else {
const int *persresv_fields[] = {
@@ -3994,11 +4074,11 @@ dissect_spc_persistentreserveout (tvbuff_t *tvb, packet_info *pinfo _U_, proto_t
NULL
};
- proto_tree_add_item (tree, hf_scsi_persresvout_obsolete, tvb,
- offset+16, 4, ENC_NA);
+ proto_tree_add_item(tree, hf_scsi_persresvout_obsolete, tvb,
+ offset+16, 4, ENC_NA);
proto_tree_add_bitmask(tree, tvb, offset+20,
- hf_scsi_persresvout_control, ett_persresv_control,
- persresv_fields, ENC_BIG_ENDIAN);
+ hf_scsi_persresvout_control, ett_persresv_control,
+ persresv_fields, ENC_BIG_ENDIAN);
}
}
else {
@@ -4006,23 +4086,23 @@ dissect_spc_persistentreserveout (tvbuff_t *tvb, packet_info *pinfo _U_, proto_t
}
void
-dissect_spc_release6 (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
- guint offset, gboolean isreq, gboolean iscdb,
- guint payload_len _U_, scsi_task_data_t *cdata _U_)
+dissect_spc_release6(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
+ guint offset, gboolean isreq, gboolean iscdb,
+ guint payload_len _U_, scsi_task_data_t *cdata _U_)
{
if (!tree)
return;
if (isreq && iscdb) {
proto_tree_add_bitmask(tree, tvb, offset+4, hf_scsi_control,
- ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
+ ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
}
}
void
-dissect_spc_release10 (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
- guint offset, gboolean isreq, gboolean iscdb,
- guint payload_len _U_, scsi_task_data_t *cdata _U_)
+dissect_spc_release10(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
+ guint offset, gboolean isreq, gboolean iscdb,
+ guint payload_len _U_, scsi_task_data_t *cdata _U_)
{
guint8 flags;
@@ -4030,48 +4110,48 @@ dissect_spc_release10 (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return;
if (isreq && iscdb) {
- flags = tvb_get_guint8 (tvb, offset);
- proto_tree_add_uint_format (tree, hf_scsi_release_flags, tvb, offset, 1,
- flags,
- "Flags: 3rd Party ID = %u, LongID = %u",
- flags & 0x10, flags & 0x2);
+ flags = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint_format(tree, hf_scsi_release_flags, tvb, offset, 1,
+ flags,
+ "Flags: 3rd Party ID = %u, LongID = %u",
+ flags & 0x10, flags & 0x2);
if ((flags & 0x12) == 0x10) {
- proto_tree_add_item (tree, hf_scsi_release_thirdpartyid, tvb,
- offset+2, 1, ENC_NA);
+ proto_tree_add_item(tree, hf_scsi_release_thirdpartyid, tvb,
+ offset+2, 1, ENC_NA);
}
- proto_tree_add_item (tree, hf_scsi_paramlen16, tvb, offset+6, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_paramlen16, tvb, offset+6, 2, ENC_BIG_ENDIAN);
proto_tree_add_bitmask(tree, tvb, offset+8, hf_scsi_control,
- ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
+ ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
}
}
static void
-dissect_spc_reportdeviceidentifier (tvbuff_t *tvb _U_, packet_info *pinfo _U_,
-proto_tree *tree _U_,
- guint offset _U_, gboolean isreq _U_, gboolean iscdb _U_,
- guint payload_len _U_, scsi_task_data_t *cdata _U_)
+dissect_spc_reportdeviceidentifier(tvbuff_t *tvb _U_, packet_info *pinfo _U_,
+ proto_tree *tree _U_,
+ guint offset _U_, gboolean isreq _U_, gboolean iscdb _U_,
+ guint payload_len _U_, scsi_task_data_t *cdata _U_)
{
}
void
-dissect_spc_reportluns (tvbuff_t *tvb, packet_info *pinfo _U_,
- proto_tree *tree, guint offset,
- gboolean isreq, gboolean iscdb, guint payload_len _U_,
- scsi_task_data_t *cdata _U_)
+dissect_spc_reportluns(tvbuff_t *tvb, packet_info *pinfo _U_,
+ proto_tree *tree, guint offset,
+ gboolean isreq, gboolean iscdb, guint payload_len _U_,
+ scsi_task_data_t *cdata _U_)
{
- gint listlen;
- tvbuff_t *volatile tvb_v = tvb;
- volatile guint offset_v = offset;
+ gint listlen;
+ tvbuff_t *volatile tvb_v = tvb;
+ volatile guint offset_v = offset;
if (isreq && iscdb) {
- proto_tree_add_item (tree, hf_scsi_select_report, tvb_v, offset_v+1, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_scsi_alloclen32, tvb_v, offset_v+5, 4, ENC_BIG_ENDIAN);
- if(cdata){
- cdata->itlq->alloc_len=tvb_get_ntohl(tvb_v, offset_v+5);
+ proto_tree_add_item(tree, hf_scsi_select_report, tvb_v, offset_v+1, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_alloclen32, tvb_v, offset_v+5, 4, ENC_BIG_ENDIAN);
+ if (cdata) {
+ cdata->itlq->alloc_len = tvb_get_ntohl(tvb_v, offset_v+5);
}
proto_tree_add_bitmask(tree, tvb, offset_v+10, hf_scsi_control,
- ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
+ ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
} else if (!isreq) {
if (!cdata) {
return;
@@ -4079,17 +4159,17 @@ dissect_spc_reportluns (tvbuff_t *tvb, packet_info *pinfo _U_,
TRY_SCSI_CDB_ALLOC_LEN(pinfo, tvb_v, offset_v, cdata->itlq->alloc_len);
listlen = tvb_get_ntohl(tvb_v, offset_v);
- proto_tree_add_text (tree, tvb_v, offset_v, 4, "LUN List Length: %u",
- listlen);
+ proto_tree_add_text(tree, tvb_v, offset_v, 4, "LUN List Length: %u",
+ listlen);
offset_v += 8;
- while(listlen>0){
- if (!tvb_get_guint8 (tvb_v, offset_v))
- proto_tree_add_item (tree, hf_scsi_rluns_lun, tvb_v, offset_v+1, 1,
- ENC_BIG_ENDIAN);
+ while(listlen>0) {
+ if (!tvb_get_guint8(tvb_v, offset_v))
+ proto_tree_add_item(tree, hf_scsi_rluns_lun, tvb_v, offset_v+1, 1,
+ ENC_BIG_ENDIAN);
else
- proto_tree_add_item (tree, hf_scsi_rluns_multilun, tvb_v, offset_v,
- 8, ENC_NA);
+ proto_tree_add_item(tree, hf_scsi_rluns_multilun, tvb_v, offset_v,
+ 8, ENC_NA);
offset_v+=8;
listlen-=8;
}
@@ -4098,73 +4178,73 @@ dissect_spc_reportluns (tvbuff_t *tvb, packet_info *pinfo _U_,
}
static void
-dissect_scsi_fix_snsinfo (tvbuff_t *tvb, proto_tree *sns_tree, guint offset)
+dissect_scsi_fix_snsinfo(tvbuff_t *tvb, proto_tree *sns_tree, guint offset)
{
proto_item *hidden_item;
- guint8 flags;
-
- flags = tvb_get_guint8 (tvb, offset);
- proto_tree_add_text (sns_tree, tvb, offset, 1, "Valid: %u",
- (flags & 0x80) >> 7);
- proto_tree_add_item (sns_tree, hf_scsi_sns_errtype, tvb, offset, 1, ENC_BIG_ENDIAN);
- flags = tvb_get_guint8 (tvb, offset+2);
- proto_tree_add_text (sns_tree, tvb, offset+2, 1,
- "Filemark: %u, EOM: %u, ILI: %u",
- (flags & 0x80) >> 7, (flags & 0x40) >> 6,
- (flags & 0x20) >> 5);
- proto_tree_add_item (sns_tree, hf_scsi_snskey, tvb, offset+2, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (sns_tree, hf_scsi_snsinfo, tvb, offset+3, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item (sns_tree, hf_scsi_addlsnslen, tvb, offset+7, 1, ENC_BIG_ENDIAN);
- proto_tree_add_text (sns_tree, tvb, offset+8, 4,
- "Command-Specific Information: %s",
- tvb_bytes_to_str (tvb, offset+8, 4));
- proto_tree_add_item (sns_tree, hf_scsi_ascascq, tvb, offset+12, 2, ENC_BIG_ENDIAN);
- hidden_item = proto_tree_add_item (sns_tree, hf_scsi_asc, tvb, offset+12, 1, ENC_BIG_ENDIAN);
+ guint8 flags;
+
+ flags = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(sns_tree, tvb, offset, 1, "Valid: %u",
+ (flags & 0x80) >> 7);
+ proto_tree_add_item(sns_tree, hf_scsi_sns_errtype, tvb, offset, 1, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset+2);
+ proto_tree_add_text(sns_tree, tvb, offset+2, 1,
+ "Filemark: %u, EOM: %u, ILI: %u",
+ (flags & 0x80) >> 7, (flags & 0x40) >> 6,
+ (flags & 0x20) >> 5);
+ proto_tree_add_item(sns_tree, hf_scsi_snskey, tvb, offset+2, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(sns_tree, hf_scsi_snsinfo, tvb, offset+3, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(sns_tree, hf_scsi_addlsnslen, tvb, offset+7, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_text(sns_tree, tvb, offset+8, 4,
+ "Command-Specific Information: %s",
+ tvb_bytes_to_str(tvb, offset+8, 4));
+ proto_tree_add_item(sns_tree, hf_scsi_ascascq, tvb, offset+12, 2, ENC_BIG_ENDIAN);
+ hidden_item = proto_tree_add_item(sns_tree, hf_scsi_asc, tvb, offset+12, 1, ENC_BIG_ENDIAN);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_item (sns_tree, hf_scsi_ascq, tvb, offset+13, 1, ENC_BIG_ENDIAN);
+ hidden_item = proto_tree_add_item(sns_tree, hf_scsi_ascq, tvb, offset+13, 1, ENC_BIG_ENDIAN);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- proto_tree_add_item (sns_tree, hf_scsi_fru, tvb, offset+14, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (sns_tree, hf_scsi_sksv, tvb, offset+15, 1, ENC_BIG_ENDIAN);
- proto_tree_add_text (sns_tree, tvb, offset+15, 3,
- "Sense Key Specific: %s",
- tvb_bytes_to_str (tvb, offset+15, 3));
+ proto_tree_add_item(sns_tree, hf_scsi_fru, tvb, offset+14, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(sns_tree, hf_scsi_sksv, tvb, offset+15, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_text(sns_tree, tvb, offset+15, 3,
+ "Sense Key Specific: %s",
+ tvb_bytes_to_str(tvb, offset+15, 3));
}
void
-dissect_spc_requestsense (tvbuff_t * tvb, packet_info *pinfo _U_, proto_tree *tree,
- guint offset, gboolean isreq, gboolean iscdb,
- guint payload_len _U_, scsi_task_data_t *cdata _U_)
+dissect_spc_requestsense(tvbuff_t * tvb, packet_info *pinfo _U_, proto_tree *tree,
+ guint offset, gboolean isreq, gboolean iscdb,
+ guint payload_len _U_, scsi_task_data_t *cdata _U_)
{
if (!tree)
return;
if (isreq && iscdb) {
- proto_tree_add_item (tree, hf_scsi_alloclen, tvb, offset+3, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_alloclen, tvb, offset+3, 1, ENC_BIG_ENDIAN);
proto_tree_add_bitmask(tree, tvb, offset+4, hf_scsi_control,
- ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
+ ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
}
else if (!isreq)
dissect_scsi_fix_snsinfo(tvb, tree, offset);
}
void
-dissect_spc_reserve6 (tvbuff_t * tvb, packet_info *pinfo _U_, proto_tree *tree,
- guint offset, gboolean isreq, gboolean iscdb,
- guint payload_len _U_, scsi_task_data_t *cdata _U_)
+dissect_spc_reserve6(tvbuff_t * tvb, packet_info *pinfo _U_, proto_tree *tree,
+ guint offset, gboolean isreq, gboolean iscdb,
+ guint payload_len _U_, scsi_task_data_t *cdata _U_)
{
if (!tree)
return;
if (isreq && iscdb) {
proto_tree_add_bitmask(tree, tvb, offset+4, hf_scsi_control,
- ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
+ ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
}
}
void
-dissect_spc_reserve10 (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
- guint offset, gboolean isreq, gboolean iscdb,
- guint payload_len _U_, scsi_task_data_t *cdata _U_)
+dissect_spc_reserve10(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
+ guint offset, gboolean isreq, gboolean iscdb,
+ guint payload_len _U_, scsi_task_data_t *cdata _U_)
{
guint8 flags;
@@ -4172,23 +4252,23 @@ dissect_spc_reserve10 (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return;
if (isreq && iscdb) {
- flags = tvb_get_guint8 (tvb, offset);
- proto_tree_add_uint_format (tree, hf_scsi_release_flags, tvb, offset, 1,
- flags,
- "Flags: 3rd Party ID = %u, LongID = %u",
- flags & 0x10, flags & 0x2);
+ flags = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint_format(tree, hf_scsi_release_flags, tvb, offset, 1,
+ flags,
+ "Flags: 3rd Party ID = %u, LongID = %u",
+ flags & 0x10, flags & 0x2);
if ((flags & 0x12) == 0x10) {
- proto_tree_add_item (tree, hf_scsi_release_thirdpartyid, tvb,
- offset+2, 1, ENC_NA);
+ proto_tree_add_item(tree, hf_scsi_release_thirdpartyid, tvb,
+ offset+2, 1, ENC_NA);
}
- proto_tree_add_item (tree, hf_scsi_paramlen16, tvb, offset+6, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_paramlen16, tvb, offset+6, 2, ENC_BIG_ENDIAN);
proto_tree_add_bitmask(tree, tvb, offset+8, hf_scsi_control,
- ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
+ ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
}
}
void
-dissect_spc_testunitready (tvbuff_t * tvb, packet_info *pinfo _U_, proto_tree *tree,
+dissect_spc_testunitready(tvbuff_t * tvb, packet_info *pinfo _U_, proto_tree *tree,
guint offset, gboolean isreq, gboolean iscdb,
guint payload_len _U_, scsi_task_data_t *cdata _U_)
{
@@ -4198,7 +4278,7 @@ dissect_spc_testunitready (tvbuff_t * tvb, packet_info *pinfo _U_, proto_tree *t
if (isreq && iscdb) {
proto_tree_add_bitmask(tree, tvb, offset+4, hf_scsi_control,
- ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
+ ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
}
}
@@ -4208,450 +4288,450 @@ dissect_spc_testunitready (tvbuff_t * tvb, packet_info *pinfo _U_, proto_tree *t
void
-dissect_spc_senddiagnostic (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
- guint offset, gboolean isreq, gboolean iscdb _U_,
- guint payload_len _U_, scsi_task_data_t *cdata _U_)
+dissect_spc_senddiagnostic(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
+ guint offset, gboolean isreq, gboolean iscdb _U_,
+ guint payload_len _U_, scsi_task_data_t *cdata _U_)
{
if (!tree && !isreq)
return;
- proto_tree_add_uint (tree, hf_scsi_senddiag_st_code, tvb, offset, 1, 0);
- proto_tree_add_boolean (tree, hf_scsi_senddiag_pf, tvb, offset, 1, 0);
- proto_tree_add_boolean (tree, hf_scsi_senddiag_st, tvb, offset, 1, 0);
- proto_tree_add_boolean (tree, hf_scsi_senddiag_devoff, tvb, offset, 1, 0);
- proto_tree_add_boolean (tree, hf_scsi_senddiag_unitoff, tvb, offset, 1, 0);
- proto_tree_add_uint (tree, hf_scsi_paramlen16, tvb, offset+2, 2, 0);
+ proto_tree_add_uint(tree, hf_scsi_senddiag_st_code, tvb, offset, 1, 0);
+ proto_tree_add_boolean(tree, hf_scsi_senddiag_pf, tvb, offset, 1, 0);
+ proto_tree_add_boolean(tree, hf_scsi_senddiag_st, tvb, offset, 1, 0);
+ proto_tree_add_boolean(tree, hf_scsi_senddiag_devoff, tvb, offset, 1, 0);
+ proto_tree_add_boolean(tree, hf_scsi_senddiag_unitoff, tvb, offset, 1, 0);
+ proto_tree_add_uint(tree, hf_scsi_paramlen16, tvb, offset+2, 2, 0);
proto_tree_add_bitmask(tree, tvb, offset+4, hf_scsi_control,
- ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
+ ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
}
void
-dissect_spc_writebuffer (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
- guint offset, gboolean isreq, gboolean iscdb _U_,
- guint payload_len _U_, scsi_task_data_t *cdata _U_)
+dissect_spc_writebuffer(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
+ guint offset, gboolean isreq, gboolean iscdb _U_,
+ guint payload_len _U_, scsi_task_data_t *cdata _U_)
{
if (!tree && !isreq)
return;
- proto_tree_add_uint (tree, hf_scsi_wb_mode, tvb, offset, 1, 0);
- proto_tree_add_uint (tree, hf_scsi_wb_bufferid, tvb, offset+1, 1, 0);
- proto_tree_add_uint (tree, hf_scsi_wb_bufoffset, tvb, offset+2, 3, 0);
- proto_tree_add_uint (tree, hf_scsi_paramlen24, tvb, offset+5, 3, 0);
+ proto_tree_add_uint(tree, hf_scsi_wb_mode, tvb, offset, 1, 0);
+ proto_tree_add_uint(tree, hf_scsi_wb_bufferid, tvb, offset+1, 1, 0);
+ proto_tree_add_uint(tree, hf_scsi_wb_bufoffset, tvb, offset+2, 3, 0);
+ proto_tree_add_uint(tree, hf_scsi_paramlen24, tvb, offset+5, 3, 0);
proto_tree_add_bitmask(tree, tvb, offset+8, hf_scsi_control,
- ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
+ ett_scsi_control, cdb_control_fields, ENC_BIG_ENDIAN);
}
static void
-dissect_scsi_varlencdb (tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
- guint offset, gboolean isreq, gboolean iscdb,
- guint payload_len _U_, scsi_task_data_t *cdata _U_)
+dissect_scsi_varlencdb(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
+ guint offset, gboolean isreq, gboolean iscdb,
+ guint payload_len _U_, scsi_task_data_t *cdata _U_)
{
if (!tree)
return;
if (isreq && iscdb) {
- proto_tree_add_item (tree, hf_scsi_control, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_scsi_add_cdblen, tvb, offset+6, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (tree, hf_scsi_svcaction, tvb, offset+7, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_control, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_add_cdblen, tvb, offset+6, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_scsi_svcaction, tvb, offset+7, 2, ENC_BIG_ENDIAN);
}
}
void
-dissect_scsi_rsp (tvbuff_t *tvb, packet_info *pinfo,
- proto_tree *tree, itlq_nexus_t *itlq, itl_nexus_t *itl,
- guint8 scsi_status)
+dissect_scsi_rsp(tvbuff_t *tvb, packet_info *pinfo,
+ proto_tree *tree, itlq_nexus_t *itlq, itl_nexus_t *itl,
+ guint8 scsi_status)
{
- proto_item *ti;
- proto_tree *scsi_tree = NULL;
- cmdset_t *csdata;
+ proto_item *ti;
+ proto_tree *scsi_tree = NULL;
+ cmdset_t *csdata;
scsi_task_data_t *cdata;
cdata = ep_alloc(sizeof(scsi_task_data_t));
- cdata->itl=itl;
- cdata->itlq=itlq;
- cdata->type=SCSI_PDU_TYPE_RSP;
+ cdata->itl = itl;
+ cdata->itlq = itlq;
+ cdata->type = SCSI_PDU_TYPE_RSP;
tap_queue_packet(scsi_tap, pinfo, cdata);
- csdata=get_cmdset_data(itlq, itl); /* will g_assert if itlq is null */
+ csdata = get_cmdset_data(itlq, itl); /* will g_assert if itlq is null */
/* Nothing really to do here, just print some stuff passed to us
*/
if (tree) {
- ti = proto_tree_add_protocol_format (tree, proto_scsi, tvb, 0,
- 0, "SCSI Response (%s)",
- val_to_str (itlq->scsi_opcode,
- csdata->cdb_vals,
- "CDB:0x%02x"));
- scsi_tree = proto_item_add_subtree (ti, ett_scsi);
+ ti = proto_tree_add_protocol_format(tree, proto_scsi, tvb, 0,
+ 0, "SCSI Response (%s)",
+ val_to_str(itlq->scsi_opcode,
+ csdata->cdb_vals,
+ "CDB:0x%02x"));
+ scsi_tree = proto_item_add_subtree(ti, ett_scsi);
}
- ti=proto_tree_add_uint(scsi_tree, hf_scsi_lun, tvb, 0, 0, itlq->lun);
+ ti = proto_tree_add_uint(scsi_tree, hf_scsi_lun, tvb, 0, 0, itlq->lun);
PROTO_ITEM_SET_GENERATED(ti);
- if(itl){
- ti=proto_tree_add_uint_format(scsi_tree, hf_scsi_inq_devtype, tvb, 0, 0, itl->cmdset&SCSI_CMDSET_MASK, "Command Set:%s (0x%02x) %s", val_to_str(itl->cmdset&SCSI_CMDSET_MASK, scsi_devtype_val, "Unknown (%d)"), itl->cmdset&SCSI_CMDSET_MASK,itl->cmdset&SCSI_CMDSET_DEFAULT?"(Using default commandset)":"");
+ if (itl) {
+ ti = proto_tree_add_uint_format(scsi_tree, hf_scsi_inq_devtype, tvb, 0, 0, itl->cmdset&SCSI_CMDSET_MASK, "Command Set:%s (0x%02x) %s", val_to_str(itl->cmdset&SCSI_CMDSET_MASK, scsi_devtype_val, "Unknown (%d)"), itl->cmdset&SCSI_CMDSET_MASK,itl->cmdset&SCSI_CMDSET_DEFAULT?"(Using default commandset)":"");
PROTO_ITEM_SET_GENERATED(ti);
- if(itlq->scsi_opcode!=0xffff){
- ti=proto_tree_add_uint(scsi_tree, csdata->hf_opcode, tvb, 0, 0, itlq->scsi_opcode);
+ if (itlq->scsi_opcode != 0xffff) {
+ ti = proto_tree_add_uint(scsi_tree, csdata->hf_opcode, tvb, 0, 0, itlq->scsi_opcode);
PROTO_ITEM_SET_GENERATED(ti);
}
}
- if(itlq->first_exchange_frame){
+ if (itlq->first_exchange_frame) {
nstime_t delta_time;
- ti=proto_tree_add_uint(scsi_tree, hf_scsi_request_frame, tvb, 0, 0, itlq->first_exchange_frame);
+ ti = proto_tree_add_uint(scsi_tree, hf_scsi_request_frame, tvb, 0, 0, itlq->first_exchange_frame);
PROTO_ITEM_SET_GENERATED(ti);
nstime_delta(&delta_time, &pinfo->fd->abs_ts, &itlq->fc_time);
- ti=proto_tree_add_time(scsi_tree, hf_scsi_time, tvb, 0, 0, &delta_time);
+ ti = proto_tree_add_time(scsi_tree, hf_scsi_time, tvb, 0, 0, &delta_time);
PROTO_ITEM_SET_GENERATED(ti);
}
- ti=proto_tree_add_uint(scsi_tree, hf_scsi_status, tvb, 0, 0, scsi_status);
+ ti = proto_tree_add_uint(scsi_tree, hf_scsi_status, tvb, 0, 0, scsi_status);
PROTO_ITEM_SET_GENERATED(ti);
- if (check_col (pinfo->cinfo, COL_INFO)) {
- col_add_fstr (pinfo->cinfo, COL_INFO, "SCSI: Response LUN: 0x%02x (%s) (%s)", itlq->lun,
- val_to_str(itlq->scsi_opcode, csdata->cdb_vals, "CDB:0x%02x"),
- val_to_str(scsi_status, scsi_status_val, "Unknown (0x%08x)"));
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_add_fstr(pinfo->cinfo, COL_INFO, "SCSI: Response LUN: 0x%02x (%s) (%s)", itlq->lun,
+ val_to_str(itlq->scsi_opcode, csdata->cdb_vals, "CDB:0x%02x"),
+ val_to_str(scsi_status, scsi_status_val, "Unknown (0x%08x)"));
- col_set_fence(pinfo->cinfo, COL_INFO);
- }
+ col_set_fence(pinfo->cinfo, COL_INFO);
+ }
}
void
-dissect_scsi_snsinfo (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- guint offset, guint snslen, itlq_nexus_t *itlq, itl_nexus_t *itl)
+dissect_scsi_snsinfo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ guint offset, guint snslen, itlq_nexus_t *itlq, itl_nexus_t *itl)
{
- proto_item *ti;
- proto_tree *sns_tree=NULL;
- const char *old_proto;
+ proto_item *ti;
+ proto_tree *sns_tree = NULL;
+ const char *old_proto;
scsi_task_data_t *cdata;
cdata = ep_alloc(sizeof(scsi_task_data_t));
- cdata->itl=itl;
- cdata->itlq=itlq;
- cdata->type=SCSI_PDU_TYPE_SNS;
+ cdata->itl = itl;
+ cdata->itlq = itlq;
+ cdata->type = SCSI_PDU_TYPE_SNS;
tap_queue_packet(scsi_tap, pinfo, cdata);
- old_proto=pinfo->current_proto;
+ old_proto = pinfo->current_proto;
pinfo->current_proto="SCSI";
if (tree) {
- ti = proto_tree_add_protocol_format (tree, proto_scsi, tvb, offset,
- snslen, "SCSI: SNS Info");
- sns_tree = proto_item_add_subtree (ti, ett_scsi);
+ ti = proto_tree_add_protocol_format(tree, proto_scsi, tvb, offset,
+ snslen, "SCSI: SNS Info");
+ sns_tree = proto_item_add_subtree(ti, ett_scsi);
}
- ti=proto_tree_add_uint(sns_tree, hf_scsi_lun, tvb, 0, 0, itlq->lun);
+ ti = proto_tree_add_uint(sns_tree, hf_scsi_lun, tvb, 0, 0, itlq->lun);
PROTO_ITEM_SET_GENERATED(ti);
- if (check_col (pinfo->cinfo, COL_INFO)) {
- col_append_fstr (pinfo->cinfo, COL_INFO, " LUN:0x%02x ", itlq->lun);
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " LUN:0x%02x ", itlq->lun);
- col_set_fence(pinfo->cinfo, COL_INFO);
+ col_set_fence(pinfo->cinfo, COL_INFO);
}
- dissect_scsi_fix_snsinfo (tvb, sns_tree, offset);
+ dissect_scsi_fix_snsinfo(tvb, sns_tree, offset);
- pinfo->current_proto=old_proto;
+ pinfo->current_proto = old_proto;
}
static scsi_cdb_table_t spc[256] = {
-/*SPC 0x00*/{dissect_spc_testunitready},
-/*SPC 0x01*/{NULL},
-/*SPC 0x02*/{NULL},
-/*SPC 0x03*/{dissect_spc_requestsense},
-/*SPC 0x04*/{NULL},
-/*SPC 0x05*/{NULL},
-/*SPC 0x06*/{NULL},
-/*SPC 0x07*/{NULL},
-/*SPC 0x08*/{NULL},
-/*SPC 0x09*/{NULL},
-/*SPC 0x0a*/{NULL},
-/*SPC 0x0b*/{NULL},
-/*SPC 0x0c*/{NULL},
-/*SPC 0x0d*/{NULL},
-/*SPC 0x0e*/{NULL},
-/*SPC 0x0f*/{NULL},
-/*SPC 0x10*/{NULL},
-/*SPC 0x11*/{NULL},
-/*SPC 0x12*/{dissect_spc_inquiry},
-/*SPC 0x13*/{NULL},
-/*SPC 0x14*/{NULL},
-/*SPC 0x15*/{dissect_spc_modeselect6},
-/*SPC 0x16*/{dissect_spc_reserve6},
-/*SPC 0x17*/{dissect_spc_release6},
-/*SPC 0x18*/{NULL},
-/*SPC 0x19*/{NULL},
-/*SPC 0x1a*/{dissect_spc_modesense6},
-/*SPC 0x1b*/{NULL},
-/*SPC 0x1c*/{NULL},
-/*SPC 0x1d*/{dissect_spc_senddiagnostic},
-/*SPC 0x1e*/{dissect_spc_preventallowmediaremoval},
-/*SPC 0x1f*/{NULL},
-/*SPC 0x20*/{NULL},
-/*SPC 0x21*/{NULL},
-/*SPC 0x22*/{NULL},
-/*SPC 0x23*/{NULL},
-/*SPC 0x24*/{NULL},
-/*SPC 0x25*/{NULL},
-/*SPC 0x26*/{NULL},
-/*SPC 0x27*/{NULL},
-/*SPC 0x28*/{NULL},
-/*SPC 0x29*/{NULL},
-/*SPC 0x2a*/{NULL},
-/*SPC 0x2b*/{NULL},
-/*SPC 0x2c*/{NULL},
-/*SPC 0x2d*/{NULL},
-/*SPC 0x2e*/{NULL},
-/*SPC 0x2f*/{NULL},
-/*SPC 0x30*/{NULL},
-/*SPC 0x31*/{NULL},
-/*SPC 0x32*/{NULL},
-/*SPC 0x33*/{NULL},
-/*SPC 0x34*/{NULL},
-/*SPC 0x35*/{NULL},
-/*SPC 0x36*/{NULL},
-/*SPC 0x37*/{NULL},
-/*SPC 0x38*/{NULL},
-/*SPC 0x39*/{NULL},
-/*SPC 0x3a*/{NULL},
-/*SPC 0x3b*/{dissect_spc_writebuffer},
-/*SPC 0x3c*/{NULL},
-/*SPC 0x3d*/{NULL},
-/*SPC 0x3e*/{NULL},
-/*SPC 0x3f*/{NULL},
-/*SPC 0x40*/{NULL},
-/*SPC 0x41*/{NULL},
-/*SPC 0x42*/{NULL},
-/*SPC 0x43*/{NULL},
-/*SPC 0x44*/{NULL},
-/*SPC 0x45*/{NULL},
-/*SPC 0x46*/{NULL},
-/*SPC 0x47*/{NULL},
-/*SPC 0x48*/{NULL},
-/*SPC 0x49*/{NULL},
-/*SPC 0x4a*/{NULL},
-/*SPC 0x4b*/{NULL},
-/*SPC 0x4c*/{dissect_spc_logselect},
-/*SPC 0x4d*/{dissect_spc_logsense},
-/*SPC 0x4e*/{NULL},
-/*SPC 0x4f*/{NULL},
-/*SPC 0x50*/{NULL},
-/*SPC 0x51*/{NULL},
-/*SPC 0x52*/{NULL},
-/*SPC 0x53*/{NULL},
-/*SPC 0x54*/{NULL},
-/*SPC 0x55*/{dissect_spc_modeselect10},
-/*SPC 0x56*/{dissect_spc_reserve10},
-/*SPC 0x57*/{dissect_spc_release10},
-/*SPC 0x58*/{NULL},
-/*SPC 0x59*/{NULL},
-/*SPC 0x5a*/{dissect_spc_modesense10},
-/*SPC 0x5b*/{NULL},
-/*SPC 0x5c*/{NULL},
-/*SPC 0x5d*/{NULL},
-/*SPC 0x5e*/{dissect_spc_persistentreservein},
-/*SPC 0x5f*/{dissect_spc_persistentreserveout},
-/*SPC 0x60*/{NULL},
-/*SPC 0x61*/{NULL},
-/*SPC 0x62*/{NULL},
-/*SPC 0x63*/{NULL},
-/*SPC 0x64*/{NULL},
-/*SPC 0x65*/{NULL},
-/*SPC 0x66*/{NULL},
-/*SPC 0x67*/{NULL},
-/*SPC 0x68*/{NULL},
-/*SPC 0x69*/{NULL},
-/*SPC 0x6a*/{NULL},
-/*SPC 0x6b*/{NULL},
-/*SPC 0x6c*/{NULL},
-/*SPC 0x6d*/{NULL},
-/*SPC 0x6e*/{NULL},
-/*SPC 0x6f*/{NULL},
-/*SPC 0x70*/{NULL},
-/*SPC 0x71*/{NULL},
-/*SPC 0x72*/{NULL},
-/*SPC 0x73*/{NULL},
-/*SPC 0x74*/{NULL},
-/*SPC 0x75*/{NULL},
-/*SPC 0x76*/{NULL},
-/*SPC 0x77*/{NULL},
-/*SPC 0x78*/{NULL},
-/*SPC 0x79*/{NULL},
-/*SPC 0x7a*/{NULL},
-/*SPC 0x7b*/{NULL},
-/*SPC 0x7c*/{NULL},
-/*SPC 0x7d*/{NULL},
-/*SPC 0x7e*/{NULL},
-/*SPC 0x7f*/{dissect_scsi_varlencdb},
-/*SPC 0x80*/{NULL},
-/*SPC 0x81*/{NULL},
-/*SPC 0x82*/{NULL},
-/*SPC 0x83*/{dissect_spc_extcopy},
-/*SPC 0x84*/{NULL},
-/*SPC 0x85*/{NULL},
-/*SPC 0x86*/{NULL},
-/*SPC 0x87*/{NULL},
-/*SPC 0x88*/{NULL},
-/*SPC 0x89*/{NULL},
-/*SPC 0x8a*/{NULL},
-/*SPC 0x8b*/{NULL},
-/*SPC 0x8c*/{NULL},
-/*SPC 0x8d*/{NULL},
-/*SPC 0x8e*/{NULL},
-/*SPC 0x8f*/{NULL},
-/*SPC 0x90*/{NULL},
-/*SPC 0x91*/{NULL},
-/*SPC 0x92*/{NULL},
-/*SPC 0x93*/{NULL},
-/*SPC 0x94*/{NULL},
-/*SPC 0x95*/{NULL},
-/*SPC 0x96*/{NULL},
-/*SPC 0x97*/{NULL},
-/*SPC 0x98*/{NULL},
-/*SPC 0x99*/{NULL},
-/*SPC 0x9a*/{NULL},
-/*SPC 0x9b*/{NULL},
-/*SPC 0x9c*/{NULL},
-/*SPC 0x9d*/{NULL},
-/*SPC 0x9e*/{NULL},
-/*SPC 0x9f*/{NULL},
-/*SPC 0xa0*/{dissect_spc_reportluns},
-/*SPC 0xa1*/{NULL},
-/*SPC 0xa2*/{NULL},
-/*SPC 0xa3*/{dissect_spc_reportdeviceidentifier},
-/*SPC 0xa4*/{NULL},
-/*SPC 0xa5*/{NULL},
-/*SPC 0xa6*/{NULL},
-/*SPC 0xa7*/{NULL},
-/*SPC 0xa8*/{NULL},
-/*SPC 0xa9*/{NULL},
-/*SPC 0xaa*/{NULL},
-/*SPC 0xab*/{NULL},
-/*SPC 0xac*/{NULL},
-/*SPC 0xad*/{NULL},
-/*SPC 0xae*/{NULL},
-/*SPC 0xaf*/{NULL},
-/*SPC 0xb0*/{NULL},
-/*SPC 0xb1*/{NULL},
-/*SPC 0xb2*/{NULL},
-/*SPC 0xb3*/{NULL},
-/*SPC 0xb4*/{NULL},
-/*SPC 0xb5*/{NULL},
-/*SPC 0xb6*/{NULL},
-/*SPC 0xb7*/{NULL},
-/*SPC 0xb8*/{NULL},
-/*SPC 0xb9*/{NULL},
-/*SPC 0xba*/{NULL},
-/*SPC 0xbb*/{NULL},
-/*SPC 0xbc*/{NULL},
-/*SPC 0xbd*/{NULL},
-/*SPC 0xbe*/{NULL},
-/*SPC 0xbf*/{NULL},
-/*SPC 0xc0*/{NULL},
-/*SPC 0xc1*/{NULL},
-/*SPC 0xc2*/{NULL},
-/*SPC 0xc3*/{NULL},
-/*SPC 0xc4*/{NULL},
-/*SPC 0xc5*/{NULL},
-/*SPC 0xc6*/{NULL},
-/*SPC 0xc7*/{NULL},
-/*SPC 0xc8*/{NULL},
-/*SPC 0xc9*/{NULL},
-/*SPC 0xca*/{NULL},
-/*SPC 0xcb*/{NULL},
-/*SPC 0xcc*/{NULL},
-/*SPC 0xcd*/{NULL},
-/*SPC 0xce*/{NULL},
-/*SPC 0xcf*/{NULL},
-/*SPC 0xd0*/{NULL},
-/*SPC 0xd1*/{NULL},
-/*SPC 0xd2*/{NULL},
-/*SPC 0xd3*/{NULL},
-/*SPC 0xd4*/{NULL},
-/*SPC 0xd5*/{NULL},
-/*SPC 0xd6*/{NULL},
-/*SPC 0xd7*/{NULL},
-/*SPC 0xd8*/{NULL},
-/*SPC 0xd9*/{NULL},
-/*SPC 0xda*/{NULL},
-/*SPC 0xdb*/{NULL},
-/*SPC 0xdc*/{NULL},
-/*SPC 0xdd*/{NULL},
-/*SPC 0xde*/{NULL},
-/*SPC 0xdf*/{NULL},
-/*SPC 0xe0*/{NULL},
-/*SPC 0xe1*/{NULL},
-/*SPC 0xe2*/{NULL},
-/*SPC 0xe3*/{NULL},
-/*SPC 0xe4*/{NULL},
-/*SPC 0xe5*/{NULL},
-/*SPC 0xe6*/{NULL},
-/*SPC 0xe7*/{NULL},
-/*SPC 0xe8*/{NULL},
-/*SPC 0xe9*/{NULL},
-/*SPC 0xea*/{NULL},
-/*SPC 0xeb*/{NULL},
-/*SPC 0xec*/{NULL},
-/*SPC 0xed*/{NULL},
-/*SPC 0xee*/{NULL},
-/*SPC 0xef*/{NULL},
-/*SPC 0xf0*/{NULL},
-/*SPC 0xf1*/{NULL},
-/*SPC 0xf2*/{NULL},
-/*SPC 0xf3*/{NULL},
-/*SPC 0xf4*/{NULL},
-/*SPC 0xf5*/{NULL},
-/*SPC 0xf6*/{NULL},
-/*SPC 0xf7*/{NULL},
-/*SPC 0xf8*/{NULL},
-/*SPC 0xf9*/{NULL},
-/*SPC 0xfa*/{NULL},
-/*SPC 0xfb*/{NULL},
-/*SPC 0xfc*/{NULL},
-/*SPC 0xfd*/{NULL},
-/*SPC 0xfe*/{NULL},
-/*SPC 0xff*/{NULL}
+ /*SPC 0x00*/{dissect_spc_testunitready},
+ /*SPC 0x01*/{NULL},
+ /*SPC 0x02*/{NULL},
+ /*SPC 0x03*/{dissect_spc_requestsense},
+ /*SPC 0x04*/{NULL},
+ /*SPC 0x05*/{NULL},
+ /*SPC 0x06*/{NULL},
+ /*SPC 0x07*/{NULL},
+ /*SPC 0x08*/{NULL},
+ /*SPC 0x09*/{NULL},
+ /*SPC 0x0a*/{NULL},
+ /*SPC 0x0b*/{NULL},
+ /*SPC 0x0c*/{NULL},
+ /*SPC 0x0d*/{NULL},
+ /*SPC 0x0e*/{NULL},
+ /*SPC 0x0f*/{NULL},
+ /*SPC 0x10*/{NULL},
+ /*SPC 0x11*/{NULL},
+ /*SPC 0x12*/{dissect_spc_inquiry},
+ /*SPC 0x13*/{NULL},
+ /*SPC 0x14*/{NULL},
+ /*SPC 0x15*/{dissect_spc_modeselect6},
+ /*SPC 0x16*/{dissect_spc_reserve6},
+ /*SPC 0x17*/{dissect_spc_release6},
+ /*SPC 0x18*/{NULL},
+ /*SPC 0x19*/{NULL},
+ /*SPC 0x1a*/{dissect_spc_modesense6},
+ /*SPC 0x1b*/{NULL},
+ /*SPC 0x1c*/{NULL},
+ /*SPC 0x1d*/{dissect_spc_senddiagnostic},
+ /*SPC 0x1e*/{dissect_spc_preventallowmediaremoval},
+ /*SPC 0x1f*/{NULL},
+ /*SPC 0x20*/{NULL},
+ /*SPC 0x21*/{NULL},
+ /*SPC 0x22*/{NULL},
+ /*SPC 0x23*/{NULL},
+ /*SPC 0x24*/{NULL},
+ /*SPC 0x25*/{NULL},
+ /*SPC 0x26*/{NULL},
+ /*SPC 0x27*/{NULL},
+ /*SPC 0x28*/{NULL},
+ /*SPC 0x29*/{NULL},
+ /*SPC 0x2a*/{NULL},
+ /*SPC 0x2b*/{NULL},
+ /*SPC 0x2c*/{NULL},
+ /*SPC 0x2d*/{NULL},
+ /*SPC 0x2e*/{NULL},
+ /*SPC 0x2f*/{NULL},
+ /*SPC 0x30*/{NULL},
+ /*SPC 0x31*/{NULL},
+ /*SPC 0x32*/{NULL},
+ /*SPC 0x33*/{NULL},
+ /*SPC 0x34*/{NULL},
+ /*SPC 0x35*/{NULL},
+ /*SPC 0x36*/{NULL},
+ /*SPC 0x37*/{NULL},
+ /*SPC 0x38*/{NULL},
+ /*SPC 0x39*/{NULL},
+ /*SPC 0x3a*/{NULL},
+ /*SPC 0x3b*/{dissect_spc_writebuffer},
+ /*SPC 0x3c*/{NULL},
+ /*SPC 0x3d*/{NULL},
+ /*SPC 0x3e*/{NULL},
+ /*SPC 0x3f*/{NULL},
+ /*SPC 0x40*/{NULL},
+ /*SPC 0x41*/{NULL},
+ /*SPC 0x42*/{NULL},
+ /*SPC 0x43*/{NULL},
+ /*SPC 0x44*/{NULL},
+ /*SPC 0x45*/{NULL},
+ /*SPC 0x46*/{NULL},
+ /*SPC 0x47*/{NULL},
+ /*SPC 0x48*/{NULL},
+ /*SPC 0x49*/{NULL},
+ /*SPC 0x4a*/{NULL},
+ /*SPC 0x4b*/{NULL},
+ /*SPC 0x4c*/{dissect_spc_logselect},
+ /*SPC 0x4d*/{dissect_spc_logsense},
+ /*SPC 0x4e*/{NULL},
+ /*SPC 0x4f*/{NULL},
+ /*SPC 0x50*/{NULL},
+ /*SPC 0x51*/{NULL},
+ /*SPC 0x52*/{NULL},
+ /*SPC 0x53*/{NULL},
+ /*SPC 0x54*/{NULL},
+ /*SPC 0x55*/{dissect_spc_modeselect10},
+ /*SPC 0x56*/{dissect_spc_reserve10},
+ /*SPC 0x57*/{dissect_spc_release10},
+ /*SPC 0x58*/{NULL},
+ /*SPC 0x59*/{NULL},
+ /*SPC 0x5a*/{dissect_spc_modesense10},
+ /*SPC 0x5b*/{NULL},
+ /*SPC 0x5c*/{NULL},
+ /*SPC 0x5d*/{NULL},
+ /*SPC 0x5e*/{dissect_spc_persistentreservein},
+ /*SPC 0x5f*/{dissect_spc_persistentreserveout},
+ /*SPC 0x60*/{NULL},
+ /*SPC 0x61*/{NULL},
+ /*SPC 0x62*/{NULL},
+ /*SPC 0x63*/{NULL},
+ /*SPC 0x64*/{NULL},
+ /*SPC 0x65*/{NULL},
+ /*SPC 0x66*/{NULL},
+ /*SPC 0x67*/{NULL},
+ /*SPC 0x68*/{NULL},
+ /*SPC 0x69*/{NULL},
+ /*SPC 0x6a*/{NULL},
+ /*SPC 0x6b*/{NULL},
+ /*SPC 0x6c*/{NULL},
+ /*SPC 0x6d*/{NULL},
+ /*SPC 0x6e*/{NULL},
+ /*SPC 0x6f*/{NULL},
+ /*SPC 0x70*/{NULL},
+ /*SPC 0x71*/{NULL},
+ /*SPC 0x72*/{NULL},
+ /*SPC 0x73*/{NULL},
+ /*SPC 0x74*/{NULL},
+ /*SPC 0x75*/{NULL},
+ /*SPC 0x76*/{NULL},
+ /*SPC 0x77*/{NULL},
+ /*SPC 0x78*/{NULL},
+ /*SPC 0x79*/{NULL},
+ /*SPC 0x7a*/{NULL},
+ /*SPC 0x7b*/{NULL},
+ /*SPC 0x7c*/{NULL},
+ /*SPC 0x7d*/{NULL},
+ /*SPC 0x7e*/{NULL},
+ /*SPC 0x7f*/{dissect_scsi_varlencdb},
+ /*SPC 0x80*/{NULL},
+ /*SPC 0x81*/{NULL},
+ /*SPC 0x82*/{NULL},
+ /*SPC 0x83*/{dissect_spc_extcopy},
+ /*SPC 0x84*/{NULL},
+ /*SPC 0x85*/{NULL},
+ /*SPC 0x86*/{NULL},
+ /*SPC 0x87*/{NULL},
+ /*SPC 0x88*/{NULL},
+ /*SPC 0x89*/{NULL},
+ /*SPC 0x8a*/{NULL},
+ /*SPC 0x8b*/{NULL},
+ /*SPC 0x8c*/{NULL},
+ /*SPC 0x8d*/{NULL},
+ /*SPC 0x8e*/{NULL},
+ /*SPC 0x8f*/{NULL},
+ /*SPC 0x90*/{NULL},
+ /*SPC 0x91*/{NULL},
+ /*SPC 0x92*/{NULL},
+ /*SPC 0x93*/{NULL},
+ /*SPC 0x94*/{NULL},
+ /*SPC 0x95*/{NULL},
+ /*SPC 0x96*/{NULL},
+ /*SPC 0x97*/{NULL},
+ /*SPC 0x98*/{NULL},
+ /*SPC 0x99*/{NULL},
+ /*SPC 0x9a*/{NULL},
+ /*SPC 0x9b*/{NULL},
+ /*SPC 0x9c*/{NULL},
+ /*SPC 0x9d*/{NULL},
+ /*SPC 0x9e*/{NULL},
+ /*SPC 0x9f*/{NULL},
+ /*SPC 0xa0*/{dissect_spc_reportluns},
+ /*SPC 0xa1*/{NULL},
+ /*SPC 0xa2*/{NULL},
+ /*SPC 0xa3*/{dissect_spc_reportdeviceidentifier},
+ /*SPC 0xa4*/{NULL},
+ /*SPC 0xa5*/{NULL},
+ /*SPC 0xa6*/{NULL},
+ /*SPC 0xa7*/{NULL},
+ /*SPC 0xa8*/{NULL},
+ /*SPC 0xa9*/{NULL},
+ /*SPC 0xaa*/{NULL},
+ /*SPC 0xab*/{NULL},
+ /*SPC 0xac*/{NULL},
+ /*SPC 0xad*/{NULL},
+ /*SPC 0xae*/{NULL},
+ /*SPC 0xaf*/{NULL},
+ /*SPC 0xb0*/{NULL},
+ /*SPC 0xb1*/{NULL},
+ /*SPC 0xb2*/{NULL},
+ /*SPC 0xb3*/{NULL},
+ /*SPC 0xb4*/{NULL},
+ /*SPC 0xb5*/{NULL},
+ /*SPC 0xb6*/{NULL},
+ /*SPC 0xb7*/{NULL},
+ /*SPC 0xb8*/{NULL},
+ /*SPC 0xb9*/{NULL},
+ /*SPC 0xba*/{NULL},
+ /*SPC 0xbb*/{NULL},
+ /*SPC 0xbc*/{NULL},
+ /*SPC 0xbd*/{NULL},
+ /*SPC 0xbe*/{NULL},
+ /*SPC 0xbf*/{NULL},
+ /*SPC 0xc0*/{NULL},
+ /*SPC 0xc1*/{NULL},
+ /*SPC 0xc2*/{NULL},
+ /*SPC 0xc3*/{NULL},
+ /*SPC 0xc4*/{NULL},
+ /*SPC 0xc5*/{NULL},
+ /*SPC 0xc6*/{NULL},
+ /*SPC 0xc7*/{NULL},
+ /*SPC 0xc8*/{NULL},
+ /*SPC 0xc9*/{NULL},
+ /*SPC 0xca*/{NULL},
+ /*SPC 0xcb*/{NULL},
+ /*SPC 0xcc*/{NULL},
+ /*SPC 0xcd*/{NULL},
+ /*SPC 0xce*/{NULL},
+ /*SPC 0xcf*/{NULL},
+ /*SPC 0xd0*/{NULL},
+ /*SPC 0xd1*/{NULL},
+ /*SPC 0xd2*/{NULL},
+ /*SPC 0xd3*/{NULL},
+ /*SPC 0xd4*/{NULL},
+ /*SPC 0xd5*/{NULL},
+ /*SPC 0xd6*/{NULL},
+ /*SPC 0xd7*/{NULL},
+ /*SPC 0xd8*/{NULL},
+ /*SPC 0xd9*/{NULL},
+ /*SPC 0xda*/{NULL},
+ /*SPC 0xdb*/{NULL},
+ /*SPC 0xdc*/{NULL},
+ /*SPC 0xdd*/{NULL},
+ /*SPC 0xde*/{NULL},
+ /*SPC 0xdf*/{NULL},
+ /*SPC 0xe0*/{NULL},
+ /*SPC 0xe1*/{NULL},
+ /*SPC 0xe2*/{NULL},
+ /*SPC 0xe3*/{NULL},
+ /*SPC 0xe4*/{NULL},
+ /*SPC 0xe5*/{NULL},
+ /*SPC 0xe6*/{NULL},
+ /*SPC 0xe7*/{NULL},
+ /*SPC 0xe8*/{NULL},
+ /*SPC 0xe9*/{NULL},
+ /*SPC 0xea*/{NULL},
+ /*SPC 0xeb*/{NULL},
+ /*SPC 0xec*/{NULL},
+ /*SPC 0xed*/{NULL},
+ /*SPC 0xee*/{NULL},
+ /*SPC 0xef*/{NULL},
+ /*SPC 0xf0*/{NULL},
+ /*SPC 0xf1*/{NULL},
+ /*SPC 0xf2*/{NULL},
+ /*SPC 0xf3*/{NULL},
+ /*SPC 0xf4*/{NULL},
+ /*SPC 0xf5*/{NULL},
+ /*SPC 0xf6*/{NULL},
+ /*SPC 0xf7*/{NULL},
+ /*SPC 0xf8*/{NULL},
+ /*SPC 0xf9*/{NULL},
+ /*SPC 0xfa*/{NULL},
+ /*SPC 0xfb*/{NULL},
+ /*SPC 0xfc*/{NULL},
+ /*SPC 0xfd*/{NULL},
+ /*SPC 0xfe*/{NULL},
+ /*SPC 0xff*/{NULL}
};
/* This function must be called with valid pointers for both itlq and itl */
void
-dissect_scsi_cdb (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- gint devtype_arg _U_, itlq_nexus_t *itlq, itl_nexus_t *itl)
+dissect_scsi_cdb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ gint devtype_arg _U_, itlq_nexus_t *itlq, itl_nexus_t *itl)
{
- int offset = 0;
- proto_item *ti;
- proto_tree *scsi_tree = NULL;
- guint8 opcode;
+ int offset = 0;
+ proto_item *ti;
+ proto_tree *scsi_tree = NULL;
+ guint8 opcode;
#if 0
- scsi_device_type devtype;
+ scsi_device_type devtype;
#endif
- const gchar *valstr;
+ const gchar *valstr;
scsi_task_data_t *cdata;
- const char *old_proto;
- cmdset_t *csdata;
+ const char *old_proto;
+ cmdset_t *csdata;
- old_proto=pinfo->current_proto;
+ old_proto = pinfo->current_proto;
pinfo->current_proto="SCSI";
- if(!itlq){
+ if (!itlq) {
DISSECTOR_ASSERT_NOT_REACHED();
}
- if(!itl){
+ if (!itl) {
DISSECTOR_ASSERT_NOT_REACHED();
}
- opcode = tvb_get_guint8 (tvb, offset);
- itlq->scsi_opcode=opcode;
- csdata=get_cmdset_data(itlq, itl);
+ opcode = tvb_get_guint8(tvb, offset);
+ itlq->scsi_opcode = opcode;
+ csdata = get_cmdset_data(itlq, itl);
#if 0 /* XXX: devtype never actually used ?? */
if (devtype_arg != SCSI_DEV_UNKNOWN) {
@@ -4665,156 +4745,161 @@ dissect_scsi_cdb (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
}
#endif
- if ((valstr = match_strval (opcode, scsi_spc_vals)) == NULL) {
+ if ((valstr = match_strval(opcode, scsi_spc_vals)) == NULL) {
valstr = match_strval(opcode, csdata->cdb_vals);
}
- if (check_col (pinfo->cinfo, COL_INFO)) {
+ if (check_col(pinfo->cinfo, COL_INFO)) {
if (valstr != NULL) {
- col_add_fstr (pinfo->cinfo, COL_INFO, "SCSI: %s LUN: 0x%02x ", valstr, itlq->lun);
+ col_add_fstr(pinfo->cinfo, COL_INFO, "SCSI: %s LUN: 0x%02x ", valstr, itlq->lun);
} else {
- col_add_fstr (pinfo->cinfo, COL_INFO, "SCSI Command: 0x%02x LUN:0x%02x ", opcode, itlq->lun);
+ col_add_fstr(pinfo->cinfo, COL_INFO, "SCSI Command: 0x%02x LUN:0x%02x ", opcode, itlq->lun);
}
/* make sure no one will overwrite this in the info column */
col_set_fence(pinfo->cinfo, COL_INFO);
}
cdata = ep_alloc(sizeof(scsi_task_data_t));
- cdata->itl=itl;
- cdata->itlq=itlq;
- cdata->type=SCSI_PDU_TYPE_CDB;
+ cdata->itl = itl;
+ cdata->itlq = itlq;
+ cdata->type = SCSI_PDU_TYPE_CDB;
tap_queue_packet(scsi_tap, pinfo, cdata);
if (tree) {
- ti = proto_tree_add_protocol_format (tree, proto_scsi, tvb, 0,
- -1, "SCSI CDB %s",
- val_to_str (opcode,
- csdata->cdb_vals,
- "0x%02x")
- );
- scsi_tree = proto_item_add_subtree (ti, ett_scsi);
+ ti = proto_tree_add_protocol_format(tree, proto_scsi, tvb, 0,
+ -1, "SCSI CDB %s",
+ val_to_str(opcode,
+ csdata->cdb_vals,
+ "0x%02x")
+ );
+ scsi_tree = proto_item_add_subtree(ti, ett_scsi);
}
- ti=proto_tree_add_uint(scsi_tree, hf_scsi_lun, tvb, 0, 0, itlq->lun);
+ ti = proto_tree_add_uint(scsi_tree, hf_scsi_lun, tvb, 0, 0, itlq->lun);
PROTO_ITEM_SET_GENERATED(ti);
- if(itl){
- ti=proto_tree_add_uint_format(scsi_tree, hf_scsi_inq_devtype, tvb, 0, 0, itl->cmdset&SCSI_CMDSET_MASK, "Command Set:%s (0x%02x) %s", val_to_str(itl->cmdset&SCSI_CMDSET_MASK, scsi_devtype_val, "Unknown (%d)"), itl->cmdset&SCSI_CMDSET_MASK,itl->cmdset&SCSI_CMDSET_DEFAULT?"(Using default commandset)":"");
+ if (itl) {
+ ti = proto_tree_add_uint_format(scsi_tree, hf_scsi_inq_devtype, tvb, 0, 0, itl->cmdset&SCSI_CMDSET_MASK, "Command Set:%s (0x%02x) %s", val_to_str(itl->cmdset&SCSI_CMDSET_MASK, scsi_devtype_val, "Unknown (%d)"), itl->cmdset&SCSI_CMDSET_MASK,itl->cmdset&SCSI_CMDSET_DEFAULT?"(Using default commandset)":"");
PROTO_ITEM_SET_GENERATED(ti);
}
- if(itlq->last_exchange_frame){
- ti=proto_tree_add_uint(scsi_tree, hf_scsi_response_frame, tvb, 0, 0, itlq->last_exchange_frame);
+ if (itlq->last_exchange_frame) {
+ ti = proto_tree_add_uint(scsi_tree, hf_scsi_response_frame, tvb, 0, 0, itlq->last_exchange_frame);
PROTO_ITEM_SET_GENERATED(ti);
}
if (valstr != NULL) {
- proto_tree_add_uint_format (scsi_tree, csdata->hf_opcode, tvb,
- offset, 1,
- tvb_get_guint8 (tvb, offset),
- "Opcode: %s (0x%02x)", valstr,
- opcode);
+ proto_tree_add_uint_format(scsi_tree, csdata->hf_opcode, tvb,
+ offset, 1,
+ tvb_get_guint8(tvb, offset),
+ "Opcode: %s (0x%02x)", valstr,
+ opcode);
} else {
- proto_tree_add_item (scsi_tree, hf_scsi_spcopcode, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(scsi_tree, hf_scsi_spcopcode, tvb, offset, 1, ENC_BIG_ENDIAN);
}
- if(csdata->cdb_table[opcode].func){
+ if (csdata->cdb_table[opcode].func) {
csdata->cdb_table[opcode].func(tvb, pinfo, scsi_tree, offset+1,
- TRUE, TRUE, 0, cdata);
- } else if(spc[opcode].func){
+ TRUE, TRUE, 0, cdata);
+ } else if (spc[opcode].func) {
spc[opcode].func(tvb, pinfo, scsi_tree, offset+1,
- TRUE, TRUE, 0, cdata);
+ TRUE, TRUE, 0, cdata);
} else {
- call_dissector (data_handle, tvb, pinfo, scsi_tree);
+ call_dissector(data_handle, tvb, pinfo, scsi_tree);
}
- pinfo->current_proto=old_proto;
+ pinfo->current_proto = old_proto;
}
void
-dissect_scsi_payload (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- gboolean isreq, itlq_nexus_t *itlq, itl_nexus_t *itl,
- guint32 relative_offset)
+dissect_scsi_payload(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ gboolean isreq, itlq_nexus_t *itlq, itl_nexus_t *itl,
+ guint32 relative_offset)
{
- int offset=0;
- proto_item *ti;
- proto_tree *scsi_tree = NULL;
- guint8 opcode;
+ int offset = 0;
+ proto_item *ti;
+ proto_tree *scsi_tree = NULL;
+ guint8 opcode;
scsi_task_data_t *cdata;
- int payload_len;
- const char *old_proto;
- cmdset_t *csdata;
- guint32 expected_length;
- fragment_data *ipfd_head;
- tvbuff_t *next_tvb=tvb;
- gboolean update_col_info = TRUE, more_frags = FALSE;
-
- if(!itlq || !itl){
+ int payload_len;
+ const char *old_proto;
+ cmdset_t *csdata;
+ guint32 expected_length;
+ fragment_data *ipfd_head;
+ tvbuff_t *next_tvb = tvb;
+ gboolean update_col_info = TRUE;
+ gboolean more_frags = FALSE;
+
+ if (!itlq || !itl) {
/* we have no record of this exchange and so we can't dissect the
* payload
*/
- proto_tree_add_text(tree, tvb, offset, 0, "Unknown SCSI exchange, can not decode SCSI data");
+ proto_tree_add_text(tree, tvb, offset, 0, "Unknown SCSI exchange, can not decode SCSI data");
return;
}
- payload_len=tvb_length(tvb);
+ payload_len = tvb_length(tvb);
cdata = ep_alloc(sizeof(scsi_task_data_t));
- cdata->itl=itl;
- cdata->itlq=itlq;
- cdata->type=SCSI_PDU_TYPE_CDB;
+ cdata->itl = itl;
+ cdata->itlq = itlq;
+ cdata->type = SCSI_PDU_TYPE_CDB;
tap_queue_packet(scsi_tap, pinfo, cdata);
- csdata=get_cmdset_data(itlq, itl);
+ csdata = get_cmdset_data(itlq, itl);
- old_proto=pinfo->current_proto;
+ old_proto = pinfo->current_proto;
pinfo->current_proto="SCSI";
opcode = (guint8) cdata->itlq->scsi_opcode;
if (tree) {
- ti = proto_tree_add_protocol_format (tree, proto_scsi, tvb, offset,
- payload_len,
- "SCSI Payload (%s %s)",
- val_to_str (opcode,
- csdata->cdb_vals,
- "CDB:0x%02x"),
- isreq ? "Request Data" : "Response Data");
- scsi_tree = proto_item_add_subtree (ti, ett_scsi);
+ ti = proto_tree_add_protocol_format(tree, proto_scsi, tvb, offset,
+ payload_len,
+ "SCSI Payload (%s %s)",
+ val_to_str(opcode,
+ csdata->cdb_vals,
+ "CDB:0x%02x"),
+ isreq ? "Request Data" : "Response Data");
+ scsi_tree = proto_item_add_subtree(ti, ett_scsi);
}
- if (check_col (pinfo->cinfo, COL_INFO)) {
- col_add_fstr (pinfo->cinfo, COL_INFO,
- "SCSI: Data %s LUN: 0x%02x (%s %s) ",
- isreq ? "Out" : "In",
- itlq->lun,
- val_to_str (opcode, csdata->cdb_vals, "0x%02x"),
- isreq ? "Request Data" : "Response Data");
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_add_fstr(pinfo->cinfo, COL_INFO,
+ "SCSI: Data %s LUN: 0x%02x (%s %s) ",
+ isreq ? "Out" : "In",
+ itlq->lun,
+ val_to_str(opcode, csdata->cdb_vals, "0x%02x"),
+ isreq ? "Request Data" : "Response Data");
col_set_fence(pinfo->cinfo, COL_INFO);
}
- ti=proto_tree_add_uint(scsi_tree, hf_scsi_lun, tvb, 0, 0, itlq->lun);
+ ti = proto_tree_add_uint(scsi_tree, hf_scsi_lun, tvb, 0, 0, itlq->lun);
PROTO_ITEM_SET_GENERATED(ti);
- if(itl){
- ti=proto_tree_add_uint_format(scsi_tree, hf_scsi_inq_devtype, tvb, 0, 0, itl->cmdset&SCSI_CMDSET_MASK, "Command Set:%s (0x%02x) %s", val_to_str(itl->cmdset&SCSI_CMDSET_MASK, scsi_devtype_val, "Unknown (%d)"), itl->cmdset&SCSI_CMDSET_MASK,itl->cmdset&SCSI_CMDSET_DEFAULT?"(Using default commandset)":"");
+ if (itl) {
+ ti = proto_tree_add_uint_format(scsi_tree, hf_scsi_inq_devtype, tvb, 0, 0, itl->cmdset&SCSI_CMDSET_MASK,
+ "Command Set:%s (0x%02x) %s",
+ val_to_str(itl->cmdset&SCSI_CMDSET_MASK, scsi_devtype_val, "Unknown (%d)"),
+ itl->cmdset&SCSI_CMDSET_MASK,
+ itl->cmdset&SCSI_CMDSET_DEFAULT ? "(Using default commandset)" : "");
PROTO_ITEM_SET_GENERATED(ti);
- if(itlq && itlq->scsi_opcode!=0xffff){
- ti=proto_tree_add_uint(scsi_tree, csdata->hf_opcode, tvb, 0, 0, itlq->scsi_opcode);
+ if (itlq && (itlq->scsi_opcode != 0xffff)) {
+ ti = proto_tree_add_uint(scsi_tree, csdata->hf_opcode, tvb, 0, 0, itlq->scsi_opcode);
PROTO_ITEM_SET_GENERATED(ti);
}
}
- if(itlq->first_exchange_frame){
- ti=proto_tree_add_uint(scsi_tree, hf_scsi_request_frame, tvb, 0, 0, itlq->first_exchange_frame);
+ if (itlq->first_exchange_frame) {
+ ti = proto_tree_add_uint(scsi_tree, hf_scsi_request_frame, tvb, 0, 0, itlq->first_exchange_frame);
PROTO_ITEM_SET_GENERATED(ti);
}
- if(itlq->last_exchange_frame){
- ti=proto_tree_add_uint(scsi_tree, hf_scsi_response_frame, tvb, 0, 0, itlq->last_exchange_frame);
+ if (itlq->last_exchange_frame) {
+ ti = proto_tree_add_uint(scsi_tree, hf_scsi_response_frame, tvb, 0, 0, itlq->last_exchange_frame);
PROTO_ITEM_SET_GENERATED(ti);
}
@@ -4822,8 +4907,8 @@ dissect_scsi_payload (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
/* If we dont know the CDB opcode there is no point in trying to
* dissect the data.
*/
- if( !itlq->first_exchange_frame ){
- call_dissector (data_handle, tvb, pinfo, scsi_tree);
+ if ( !itlq->first_exchange_frame ) {
+ call_dissector(data_handle, tvb, pinfo, scsi_tree);
goto end_of_payload;
}
@@ -4832,7 +4917,7 @@ dissect_scsi_payload (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
*/
if (!scsi_defragment) {
if (relative_offset) {
- call_dissector (data_handle, tvb, pinfo, scsi_tree);
+ call_dissector(data_handle, tvb, pinfo, scsi_tree);
goto end_of_payload;
} else {
goto dissect_the_payload;
@@ -4842,9 +4927,9 @@ dissect_scsi_payload (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
/* If we dont have the entire PDU there is no point in even trying
* reassembly
*/
- if(tvb_length_remaining(tvb, offset)!=tvb_reported_length_remaining(tvb, offset)){
+ if (tvb_length_remaining(tvb, offset) != tvb_reported_length_remaining(tvb, offset)) {
if (relative_offset) {
- call_dissector (data_handle, tvb, pinfo, scsi_tree);
+ call_dissector(data_handle, tvb, pinfo, scsi_tree);
goto end_of_payload;
} else {
goto dissect_the_payload;
@@ -4853,22 +4938,22 @@ dissect_scsi_payload (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
/* What is the expected data length for this transfer */
- if( (itlq->task_flags&(SCSI_DATA_READ|SCSI_DATA_WRITE))==(SCSI_DATA_READ|SCSI_DATA_WRITE) ){
+ if ( (itlq->task_flags&(SCSI_DATA_READ|SCSI_DATA_WRITE)) == (SCSI_DATA_READ|SCSI_DATA_WRITE) ) {
/* This is a bidirectional transfer */
- if(isreq){
- expected_length=itlq->data_length;
+ if (isreq) {
+ expected_length = itlq->data_length;
} else {
- expected_length=itlq->bidir_data_length;
+ expected_length = itlq->bidir_data_length;
}
} else {
/* This is a unidirectional transfer */
- expected_length=itlq->data_length;
+ expected_length = itlq->data_length;
}
/* If this PDU already contains all the expected data we dont have to do
* reassembly.
*/
- if( (!relative_offset) && ((guint32)tvb_length_remaining(tvb, offset) == expected_length) ){
+ if ( (!relative_offset) && ((guint32)tvb_length_remaining(tvb, offset) == expected_length) ) {
goto dissect_the_payload;
}
@@ -4882,24 +4967,24 @@ dissect_scsi_payload (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
more_frags = TRUE;
}
ipfd_head = fragment_add_check(tvb, offset, pinfo,
- itlq->first_exchange_frame, /* key */
- scsi_fragment_table,
- scsi_reassembled_table,
- relative_offset,
- tvb_length_remaining(tvb, offset),
- more_frags);
+ itlq->first_exchange_frame, /* key */
+ scsi_fragment_table,
+ scsi_reassembled_table,
+ relative_offset,
+ tvb_length_remaining(tvb, offset),
+ more_frags);
next_tvb = process_reassembled_data(tvb, offset, pinfo, "Reassembled SCSI DATA", ipfd_head, &scsi_frag_items, &update_col_info, tree);
- if( ipfd_head && ipfd_head->reassembled_in != pinfo->fd->num ){
+ if ( ipfd_head && (ipfd_head->reassembled_in != pinfo->fd->num) ) {
if (check_col(pinfo->cinfo, COL_INFO)) {
col_prepend_fstr(pinfo->cinfo, COL_INFO, "[Reassembled in #%u] ",
- ipfd_head->reassembled_in);
+ ipfd_head->reassembled_in);
}
}
dissect_the_payload:
- if(!next_tvb){
+ if (!next_tvb) {
/* reassembly has not yet finished so we dont have a tvb yet */
goto end_of_payload;
}
@@ -4915,80 +5000,80 @@ dissect_the_payload:
* commandset used.
*/
if (opcode == SCSI_SPC_INQUIRY) {
- dissect_spc_inquiry (next_tvb, pinfo, scsi_tree, offset, isreq,
- FALSE, payload_len, cdata);
+ dissect_spc_inquiry(next_tvb, pinfo, scsi_tree, offset, isreq,
+ FALSE, payload_len, cdata);
}
} else {
/*
- All commandsets support SPC?
+ All commandsets support SPC?
*/
- if(csdata->cdb_table && (csdata->cdb_table)[opcode].func){
+ if (csdata->cdb_table && (csdata->cdb_table)[opcode].func) {
(csdata->cdb_table)[opcode].func(next_tvb, pinfo, scsi_tree, offset,
- isreq, FALSE, payload_len, cdata);
- } else if(spc[opcode].func){
+ isreq, FALSE, payload_len, cdata);
+ } else if (spc[opcode].func) {
spc[opcode].func(next_tvb, pinfo, scsi_tree, offset,
- isreq, FALSE, payload_len, cdata);
+ isreq, FALSE, payload_len, cdata);
} else { /* dont know this CDB */
- call_dissector (data_handle, next_tvb, pinfo, scsi_tree);
+ call_dissector(data_handle, next_tvb, pinfo, scsi_tree);
}
}
end_of_payload:
- pinfo->current_proto=old_proto;
+ pinfo->current_proto = old_proto;
}
static cmdset_t *
get_cmdset_data(itlq_nexus_t *itlq, itl_nexus_t *itl)
{
cmdset_t *csdata;
- guint8 cmdset;
+ guint8 cmdset;
/* we must have an itlq structure */
- if(!itlq){
+ if (!itlq) {
DISSECTOR_ASSERT_NOT_REACHED();
}
- if(itl){
- if(itl->cmdset==0xff){
- itl->cmdset=scsi_def_devtype|SCSI_CMDSET_DEFAULT;
+ if (itl) {
+ if (itl->cmdset == 0xff) {
+ itl->cmdset = scsi_def_devtype|SCSI_CMDSET_DEFAULT;
}
- cmdset=itl->cmdset;
+ cmdset = itl->cmdset;
} else {
- cmdset=scsi_def_devtype;
+ cmdset = scsi_def_devtype;
}
- csdata=ep_alloc(sizeof(cmdset_t));
+ csdata = ep_alloc(sizeof(cmdset_t));
- switch(cmdset&SCSI_CMDSET_MASK){
+ switch(cmdset&SCSI_CMDSET_MASK) {
case SCSI_DEV_SBC:
- csdata->hf_opcode=hf_scsi_sbc_opcode;
- csdata->cdb_vals=scsi_sbc_vals;
- csdata->cdb_table=scsi_sbc_table;
+ csdata->hf_opcode = hf_scsi_sbc_opcode;
+ csdata->cdb_vals = scsi_sbc_vals;
+ csdata->cdb_table = scsi_sbc_table;
break;
case SCSI_DEV_CDROM:
- csdata->hf_opcode=hf_scsi_mmc_opcode;
- csdata->cdb_vals=scsi_mmc_vals;
- csdata->cdb_table=scsi_mmc_table;
+ csdata->hf_opcode = hf_scsi_mmc_opcode;
+ csdata->cdb_vals = scsi_mmc_vals;
+ csdata->cdb_table = scsi_mmc_table;
break;
case SCSI_DEV_SSC:
- csdata->hf_opcode=hf_scsi_ssc_opcode;
- csdata->cdb_vals=scsi_ssc_vals;
- csdata->cdb_table=scsi_ssc_table;
+ csdata->hf_opcode = hf_scsi_ssc_opcode;
+ csdata->cdb_vals = scsi_ssc_vals;
+ csdata->cdb_table = scsi_ssc_table;
break;
case SCSI_DEV_SMC:
- csdata->hf_opcode=hf_scsi_smc_opcode;
- csdata->cdb_vals=scsi_smc_vals;
- csdata->cdb_table=scsi_smc_table;
+ csdata->hf_opcode = hf_scsi_smc_opcode;
+ csdata->cdb_vals = scsi_smc_vals;
+ csdata->cdb_table = scsi_smc_table;
break;
case SCSI_DEV_OSD:
- csdata->hf_opcode=hf_scsi_osd_opcode;
- csdata->cdb_vals=scsi_osd_vals;
- csdata->cdb_table=scsi_osd_table;
+ csdata->hf_opcode = hf_scsi_osd_opcode;
+ csdata->cdb_vals = scsi_osd_vals;
+ csdata->cdb_table = scsi_osd_table;
break;
default:
- csdata->hf_opcode=hf_scsi_spcopcode;
- csdata->cdb_vals=scsi_spc_vals;
- csdata->cdb_table=spc;
+ csdata->hf_opcode = hf_scsi_spcopcode;
+ csdata->cdb_vals = scsi_spc_vals;
+ csdata->cdb_table = spc;
break;
}
@@ -4997,21 +5082,20 @@ get_cmdset_data(itlq_nexus_t *itlq, itl_nexus_t *itl)
void
-proto_register_scsi (void)
+proto_register_scsi(void)
{
- /* Setup list of header fields See Section 1.6.1 for details*/
static hf_register_info hf[] = {
- /*16 bit to print something useful for weirdo
- volume set addressing hosts*/
+ /* 16 bit to print something useful for weirdo
+ volume set addressing hosts */
{ &hf_scsi_lun,
{"LUN", "scsi.lun", FT_UINT16, BASE_HEX,
NULL, 0x0, NULL, HFILL}},
{ &hf_scsi_status,
{ "Status", "scsi.status", FT_UINT8, BASE_HEX,
- VALS(scsi_status_val), 0, "SCSI command status value", HFILL }},
+ VALS(scsi_status_val), 0, "SCSI command status value", HFILL }},
{ &hf_scsi_spcopcode,
{"SPC-2 Opcode", "scsi.spc.opcode", FT_UINT8, BASE_HEX,
- VALS (scsi_spc_vals), 0x0, NULL, HFILL}},
+ VALS(scsi_spc_vals), 0x0, NULL, HFILL}},
{ &hf_scsi_control,
{"Control", "scsi.cdb.control", FT_UINT8, BASE_HEX, NULL, 0x0, NULL,
HFILL}},
@@ -5038,7 +5122,7 @@ proto_register_scsi (void)
HFILL}},
{ &hf_scsi_inquiry_evpd_page,
{"EVPD Page Code", "scsi.inquiry.evpd.pagecode", FT_UINT8, BASE_HEX,
- VALS (scsi_evpd_pagecode_val), 0x0, NULL, HFILL}},
+ VALS(scsi_evpd_pagecode_val), 0x0, NULL, HFILL}},
{ &hf_scsi_inquiry_cmdt_page,
{"CMDT Page Code", "scsi.inquiry.cmdt.pagecode", FT_UINT8, BASE_HEX,
NULL, 0x0, NULL, HFILL}},
@@ -5050,10 +5134,10 @@ proto_register_scsi (void)
0x0, NULL, HFILL}},
{ &hf_scsi_log_pc,
{"Page Control", "scsi.log.pc", FT_UINT8, BASE_DEC,
- VALS (scsi_log_pc_val), 0xC0, NULL, HFILL}},
+ VALS(scsi_log_pc_val), 0xC0, NULL, HFILL}},
{ &hf_scsi_log_pagecode,
{"Page Code", "scsi.log.pagecode", FT_UINT8, BASE_HEX,
- VALS (scsi_log_page_val), 0x3F, NULL, HFILL}},
+ VALS(scsi_log_page_val), 0x3F, NULL, HFILL}},
{ &hf_scsi_paramlen16,
{"Parameter Length", "scsi.cdb.paramlen16", FT_UINT16, BASE_DEC, NULL,
0x0, NULL, HFILL}},
@@ -5065,46 +5149,46 @@ proto_register_scsi (void)
NULL, 0x0, NULL, HFILL}},
{ &hf_scsi_modesns_pc,
{"Page Control", "scsi.mode.pc", FT_UINT8, BASE_DEC,
- VALS (scsi_modesns_pc_val), 0xC0, NULL, HFILL}},
+ VALS(scsi_modesns_pc_val), 0xC0, NULL, HFILL}},
{ &hf_scsi_spcpagecode,
{"SPC-2 Page Code", "scsi.mode.spc.pagecode", FT_UINT8, BASE_HEX,
- VALS (scsi_spc_modepage_val), 0x3F, NULL, HFILL}},
+ VALS(scsi_spc_modepage_val), 0x3F, NULL, HFILL}},
{ &hf_scsi_sbcpagecode,
{"SBC-2 Page Code", "scsi.mode.sbc.pagecode", FT_UINT8, BASE_HEX,
- VALS (scsi_sbc_modepage_val), 0x3F, NULL, HFILL}},
+ VALS(scsi_sbc_modepage_val), 0x3F, NULL, HFILL}},
{ &hf_scsi_sscpagecode,
{"SSC-2 Page Code", "scsi.mode.ssc.pagecode", FT_UINT8, BASE_HEX,
- VALS (scsi_ssc2_modepage_val), 0x3F, NULL, HFILL}},
+ VALS(scsi_ssc2_modepage_val), 0x3F, NULL, HFILL}},
{ &hf_scsi_mmcpagecode,
{"MMC-5 Page Code", "scsi.mode.mmc.pagecode", FT_UINT8, BASE_HEX,
- VALS (scsi_mmc5_modepage_val), 0x3F, NULL, HFILL}},
+ VALS(scsi_mmc5_modepage_val), 0x3F, NULL, HFILL}},
{ &hf_scsi_smcpagecode,
{"SMC-2 Page Code", "scsi.mode.smc.pagecode", FT_UINT8, BASE_HEX,
- VALS (scsi_smc_modepage_val), 0x3F, NULL, HFILL}},
+ VALS(scsi_smc_modepage_val), 0x3F, NULL, HFILL}},
{ &hf_scsi_modesns_flags,
{"Mode Sense Flags", "scsi.mode.flags", FT_UINT8, BASE_HEX, NULL, 0x0, NULL,
HFILL}},
{ &hf_scsi_persresvin_svcaction,
{"Service Action", "scsi.persresvin.svcaction", FT_UINT8, BASE_HEX,
- VALS (scsi_persresvin_svcaction_val), 0x0F, NULL, HFILL}},
+ VALS(scsi_persresvin_svcaction_val), 0x0F, NULL, HFILL}},
{ &hf_scsi_persresvout_svcaction,
{"Service Action", "scsi.persresvout.svcaction", FT_UINT8, BASE_HEX,
- VALS (scsi_persresvout_svcaction_val), 0x0F, NULL, HFILL}},
+ VALS(scsi_persresvout_svcaction_val), 0x0F, NULL, HFILL}},
{ &hf_scsi_persresv_scope,
{"Reservation Scope", "scsi.persresv.scope", FT_UINT8, BASE_HEX,
- VALS (scsi_persresv_scope_val), 0xF0, NULL, HFILL}},
+ VALS(scsi_persresv_scope_val), 0xF0, NULL, HFILL}},
{ &hf_scsi_persresv_type,
{"Reservation Type", "scsi.persresv.type", FT_UINT8, BASE_HEX,
- VALS (scsi_persresv_type_val), 0x0F, NULL, HFILL}},
+ VALS(scsi_persresv_type_val), 0x0F, NULL, HFILL}},
{ &hf_scsi_persresvout_reskey,
{"Reservation Key", "scsi.persresv.reskey", FT_BYTES, BASE_NONE,
- NULL, 0x0, NULL, HFILL}},
+ NULL, 0x0, NULL, HFILL}},
{ &hf_scsi_persresvout_sareskey,
{"Service Action Reservation Key", "scsi.persresv.sareskey", FT_BYTES,
- BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ BASE_NONE, NULL, 0x0, NULL, HFILL}},
{ &hf_scsi_persresvout_obsolete,
{"Obsolete", "scsi.presresv.obs", FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL}},
+ NULL, HFILL}},
{ &hf_scsi_persresvout_control,
{"Control", "scsi.presresv.control", FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL}},
@@ -5113,19 +5197,19 @@ proto_register_scsi (void)
NULL, 0xFC, NULL, HFILL}},
{ &hf_scsi_persresv_control_rsvd1,
{"Reserved", "scsi.persresv.control.reserved1", FT_UINT8, BASE_HEX,
- NULL, 0xF0, NULL, HFILL}},
+ NULL, 0xF0, NULL, HFILL}},
{ &hf_scsi_persresv_control_rsvd2,
{"Reserved", "scsi.persresv.control.reserved2", FT_UINT8, BASE_HEX,
- NULL, 0x02, NULL, HFILL}},
+ NULL, 0x02, NULL, HFILL}},
{ &hf_scsi_persresv_control_spec_i_pt,
{"SPEC_I_PT", "scsi.persresv.control.spec_i_pt", FT_BOOLEAN, 8,
- TFS(&scsi_spec_i_pt_tfs), 0x08, NULL, HFILL}},
+ TFS(&scsi_spec_i_pt_tfs), 0x08, NULL, HFILL}},
{ &hf_scsi_persresv_control_all_tg_pt,
{"ALL_TG_PT", "scsi.persresv.control.all_tg_pt", FT_BOOLEAN, 8,
- TFS(&scsi_all_tg_pt_tfs), 0x04, NULL, HFILL}},
+ TFS(&scsi_all_tg_pt_tfs), 0x04, NULL, HFILL}},
{ &hf_scsi_persresv_control_aptpl,
{"aptpl", "scsi.persresv.control.aptpl", FT_BOOLEAN, 8,
- TFS(&scsi_aptpl_tfs), 0x01, NULL, HFILL}},
+ TFS(&scsi_aptpl_tfs), 0x01, NULL, HFILL}},
{ &hf_scsi_release_flags,
{"Release Flags", "scsi.release.flags", FT_UINT8, BASE_HEX, NULL,
0x0, NULL, HFILL}},
@@ -5140,7 +5224,7 @@ proto_register_scsi (void)
NULL, 0, NULL, HFILL}},
{ &hf_scsi_inq_qualifier,
{"Qualifier", "scsi.inquiry.qualifier", FT_UINT8, BASE_HEX,
- VALS (scsi_qualifier_val), 0xE0, NULL, HFILL}},
+ VALS(scsi_qualifier_val), 0xE0, NULL, HFILL}},
{ &hf_scsi_inq_peripheral,
{"Peripheral", "scsi.inquiry.peripheral", FT_UINT8, BASE_HEX,
NULL, 0, NULL, HFILL}},
@@ -5164,13 +5248,13 @@ proto_register_scsi (void)
&scsi_verdesc_val_ext, 0, NULL, HFILL}},
{ &hf_scsi_inq_devtype,
{"Device Type", "scsi.inquiry.devtype", FT_UINT8, BASE_HEX,
- VALS (scsi_devtype_val), SCSI_DEV_BITS, NULL, HFILL}},
+ VALS(scsi_devtype_val), SCSI_DEV_BITS, NULL, HFILL}},
{ &hf_scsi_inq_rmb,
{"Removable", "scsi.inquiry.removable", FT_BOOLEAN, 8,
- TFS (&scsi_removable_val), 0x80, NULL, HFILL}},
+ TFS(&scsi_removable_val), 0x80, NULL, HFILL}},
{ & hf_scsi_inq_version,
{"Version", "scsi.inquiry.version", FT_UINT8, BASE_HEX,
- VALS (scsi_inquiry_vers_val), 0x0, NULL, HFILL}},
+ VALS(scsi_inquiry_vers_val), 0x0, NULL, HFILL}},
{ &hf_scsi_inq_reladrflags,
{"Inquiry RelAdr Flags", "scsi.inquiry.reladrflags", FT_UINT8, BASE_HEX, NULL, 0,
NULL, HFILL}},
@@ -5263,31 +5347,31 @@ proto_register_scsi (void)
0x0, NULL, HFILL}},
{ &hf_scsi_modesns_errrep,
{"MRIE", "scsi.mode.mrie", FT_UINT8, BASE_HEX,
- VALS (scsi_modesns_mrie_val), 0x0F, NULL, HFILL}},
+ VALS(scsi_modesns_mrie_val), 0x0F, NULL, HFILL}},
{ &hf_scsi_modesns_tst,
{"Task Set Type", "scsi.mode.tst", FT_UINT8, BASE_DEC,
- VALS (scsi_modesns_tst_val), 0xE0, NULL, HFILL}},
+ VALS(scsi_modesns_tst_val), 0xE0, NULL, HFILL}},
{ &hf_scsi_modesns_qmod,
{"Queue Algorithm Modifier", "scsi.mode.qmod", FT_UINT8, BASE_HEX,
- VALS (scsi_modesns_qmod_val), 0xF0, NULL, HFILL}},
+ VALS(scsi_modesns_qmod_val), 0xF0, NULL, HFILL}},
{ &hf_scsi_modesns_qerr,
{"Queue Error Management", "scsi.mode.qerr", FT_BOOLEAN, 8,
- TFS (&scsi_modesns_qerr_val), 0x2, NULL, HFILL}},
+ TFS(&scsi_modesns_qerr_val), 0x2, NULL, HFILL}},
{ &hf_scsi_modesns_tas,
{"Task Aborted Status", "scsi.mode.tac", FT_BOOLEAN, 8,
- TFS (&scsi_modesns_tas_val), 0x80, NULL, HFILL}},
+ TFS(&scsi_modesns_tas_val), 0x80, NULL, HFILL}},
{ &hf_scsi_modesns_rac,
{"Report a Check", "scsi.mode.rac", FT_BOOLEAN, 8,
- TFS (&scsi_modesns_rac_val), 0x40, NULL, HFILL}},
+ TFS(&scsi_modesns_rac_val), 0x40, NULL, HFILL}},
{ &hf_scsi_protocol,
- {"Protocol", "scsi.proto", FT_UINT8, BASE_DEC, VALS (scsi_proto_val),
+ {"Protocol", "scsi.proto", FT_UINT8, BASE_DEC, VALS(scsi_proto_val),
0x0F, NULL, HFILL}},
{ &hf_scsi_sns_errtype,
{"SNS Error Type", "scsi.sns.errtype", FT_UINT8, BASE_HEX,
- VALS (scsi_sns_errtype_val), 0x7F, NULL, HFILL}},
+ VALS(scsi_sns_errtype_val), 0x7F, NULL, HFILL}},
{ &hf_scsi_snskey,
{"Sense Key", "scsi.sns.key", FT_UINT8, BASE_HEX,
- VALS (scsi_sensekey_val), 0x0F, NULL, HFILL}},
+ VALS(scsi_sensekey_val), 0x0F, NULL, HFILL}},
{ &hf_scsi_snsinfo,
{"Sense Info", "scsi.sns.info", FT_UINT32, BASE_HEX, NULL, 0x0, NULL,
HFILL}},
@@ -5323,7 +5407,7 @@ proto_register_scsi (void)
0x0, NULL, HFILL}},
{ &hf_scsi_wb_mode,
{"Mode", "scsi.spc.wb.mode", FT_UINT8, BASE_HEX,
- VALS (scsi_wb_mode_val), 0xF, NULL, HFILL}},
+ VALS(scsi_wb_mode_val), 0xF, NULL, HFILL}},
{ &hf_scsi_wb_bufferid,
{"Buffer ID", "scsi.spc.sb.bufid", FT_UINT8, BASE_DEC, NULL, 0x0,
NULL, HFILL}},
@@ -5335,13 +5419,13 @@ proto_register_scsi (void)
NULL, 0x0, NULL, HFILL}},
{ &hf_scsi_senddiag_st_code,
{"Self-Test Code", "scsi.spc.senddiag.code", FT_UINT8, BASE_HEX,
- VALS (scsi_senddiag_st_code_val), 0xE0, NULL, HFILL}},
+ VALS(scsi_senddiag_st_code_val), 0xE0, NULL, HFILL}},
{ &hf_scsi_select_report,
{"Select Report", "scsi.spc.select_report", FT_UINT8, BASE_HEX,
- VALS (scsi_select_report_val), 0x00, NULL, HFILL}},
+ VALS(scsi_select_report_val), 0x00, NULL, HFILL}},
{ &hf_scsi_senddiag_pf,
{"PF", "scsi.spc.senddiag.pf", FT_BOOLEAN, 8,
- TFS (&scsi_senddiag_pf_val), 0x10, NULL, HFILL}},
+ TFS(&scsi_senddiag_pf_val), 0x10, NULL, HFILL}},
{ &hf_scsi_senddiag_st,
{"Self Test", "scsi.spc.senddiag.st", FT_BOOLEAN, 8, NULL,
0x4, NULL, HFILL}},
@@ -5353,55 +5437,55 @@ proto_register_scsi (void)
NULL, 0x1, NULL, HFILL}},
{ &hf_scsi_request_frame,
{ "Request in", "scsi.request_frame", FT_FRAMENUM, BASE_NONE, NULL, 0,
- "The request to this transaction is in this frame", HFILL }},
+ "The request to this transaction is in this frame", HFILL }},
{ &hf_scsi_time,
{ "Time from request", "scsi.time", FT_RELATIVE_TIME, BASE_NONE, NULL, 0,
- "Time between the Command and the Response", HFILL }},
+ "Time between the Command and the Response", HFILL }},
{ &hf_scsi_response_frame,
{ "Response in", "scsi.response_frame", FT_FRAMENUM, BASE_NONE, NULL, 0,
- "The response to this transaction is in this frame", HFILL }},
+ "The response to this transaction is in this frame", HFILL }},
{ &hf_scsi_fragments,
{ "SCSI Fragments", "scsi.fragments", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ NULL, HFILL }},
{ &hf_scsi_fragment_overlap,
{ "Fragment overlap", "scsi.fragment.overlap", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "Fragment overlaps with other fragments", HFILL }},
+ "Fragment overlaps with other fragments", HFILL }},
{ &hf_scsi_fragment_overlap_conflict,
{ "Conflicting data in fragment overlap", "scsi.fragment.overlap.conflict", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "Overlapping fragments contained conflicting data", HFILL }},
+ "Overlapping fragments contained conflicting data", HFILL }},
{ &hf_scsi_fragment_multiple_tails,
{ "Multiple tail fragments found", "scsi.fragment.multipletails", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "Several tails were found when defragmenting the packet", HFILL }},
+ "Several tails were found when defragmenting the packet", HFILL }},
{ &hf_scsi_fragment_too_long_fragment,
{ "Fragment too long", "scsi.fragment.toolongfragment", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
- "Fragment contained data past end of packet", HFILL }},
+ "Fragment contained data past end of packet", HFILL }},
{ &hf_scsi_fragment_error,
{ "Defragmentation error", "scsi.fragment.error", FT_FRAMENUM, BASE_NONE, NULL, 0x0,
- "Defragmentation error due to illegal fragments", HFILL }},
+ "Defragmentation error due to illegal fragments", HFILL }},
{ &hf_scsi_fragment_count,
{ "Fragment count", "scsi.fragment.count", FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ NULL, HFILL }},
{ &hf_scsi_fragment,
{ "SCSI DATA Fragment", "scsi.fragment", FT_FRAMENUM, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ NULL, HFILL }},
{ &hf_scsi_reassembled_in,
{ "Reassembled SCSI DATA in frame", "scsi.reassembled_in", FT_FRAMENUM, BASE_NONE, NULL, 0x0,
- "This SCSI DATA packet is reassembled in this frame", HFILL }},
+ "This SCSI DATA packet is reassembled in this frame", HFILL }},
{ &hf_scsi_reassembled_length,
{ "Reassembled SCSI DATA length", "scsi.reassembled.length", FT_UINT32, BASE_DEC, NULL, 0x0,
- "The total length of the reassembled payload", HFILL }},
+ "The total length of the reassembled payload", HFILL }},
{ &hf_scsi_log_ppc_flags,
{"PPC Flags", "scsi.log.ppc.flags", FT_UINT8, BASE_HEX, NULL, 0,
NULL, HFILL}},
{ &hf_scsi_log_ppc,
{"PPC", "scsi.log.ppc", FT_BOOLEAN, 8,
- TFS (&scsi_log_ppc_tfs), 0x02, NULL, HFILL}},
+ TFS(&scsi_log_ppc_tfs), 0x02, NULL, HFILL}},
{ &hf_scsi_log_pcr,
{"PCR", "scsi.log.pcr", FT_BOOLEAN, 8,
- TFS (&scsi_log_pcr_tfs), 0x02, NULL, HFILL}},
+ TFS(&scsi_log_pcr_tfs), 0x02, NULL, HFILL}},
{ &hf_scsi_log_sp,
{"SP", "scsi.log.sp", FT_BOOLEAN, 8,
- TFS (&scsi_log_sp_tfs), 0x01, NULL, HFILL}},
+ TFS(&scsi_log_sp_tfs), 0x01, NULL, HFILL}},
{ &hf_scsi_log_pc_flags,
{"PC Flags", "scsi.log.pc.flags", FT_UINT8, BASE_HEX, NULL, 0,
NULL, HFILL}},
@@ -5594,6 +5678,66 @@ proto_register_scsi (void)
{ &hf_scsi_log_ta_wmoa,
{"worm medium overwrite attempted", "scsi.log.ta.wmoa", FT_BOOLEAN, 8, NULL, 0x01,
NULL, HFILL}},
+ { &hf_scsi_sbc_treshold_exponent,
+ {"Treshold Exponent", "scsi.sbc.treshold_exponent", FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL}},
+ { &hf_scsi_sbc_lbpu,
+ {"LBPU", "scsi.sbc.lbpu", FT_BOOLEAN, 8, NULL, 0x80,
+ NULL, HFILL}},
+ { &hf_scsi_sbc_lbpws,
+ {"LBPWS", "scsi.sbc.lbpws", FT_BOOLEAN, 8, NULL, 0x40,
+ NULL, HFILL}},
+ { &hf_scsi_sbc_lbpws10,
+ {"LBPWS10", "scsi.sbc.lbpws10", FT_BOOLEAN, 8, NULL, 0x20,
+ NULL, HFILL}},
+ { &hf_scsi_sbc_lbprz,
+ {"LBPRZ", "scsi.sbc.lbprz", FT_BOOLEAN, 8, NULL, 0x04,
+ NULL, HFILL}},
+ { &hf_scsi_sbc_anc_sup,
+ {"ANC_SUP", "scsi.sbc.anc_sup", FT_BOOLEAN, 8, NULL, 0x02,
+ NULL, HFILL}},
+ { &hf_scsi_sbc_dp,
+ {"DP", "scsi.sbc.dp", FT_BOOLEAN, 8, NULL, 0x01,
+ NULL, HFILL}},
+ { &hf_scsi_sbc_ptype,
+ {"Provisioning Type", "scsi.sbc.ptype", FT_UINT8, BASE_DEC, VALS(provisioning_vals), 0x07,
+ NULL, HFILL}},
+ { &hf_scsi_block_limits_wsnz,
+ {"WSNZ", "scsi.sbc.bl.wsnz", FT_BOOLEAN, 8, NULL, 0x01,
+ NULL, HFILL}},
+ { &hf_scsi_block_limits_mcawl,
+ {"Maximum Compare And Write Length", "scsi.sbc.bl.mcawl", FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL}},
+ { &hf_scsi_block_limits_otlg,
+ {"Optimal Transfer Length Granularity", "scsi.sbc.bl.otlg", FT_UINT16, BASE_DEC, NULL, 0,
+ NULL, HFILL}},
+ { &hf_scsi_block_limits_mtl,
+ {"Maximum Transfer Length", "scsi.sbc.bl.mtl", FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL}},
+ { &hf_scsi_block_limits_otl,
+ {"Optimal Transfer Length", "scsi.sbc.bl.otl", FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL}},
+ { &hf_scsi_block_limits_mpl,
+ {"Optimal Prefetch/Xdread/Xdwrite Transfer Length", "scsi.sbc.bl.mpl", FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL}},
+ { &hf_scsi_block_limits_mulc,
+ {"Maximum Unmap LBA Count", "scsi.sbc.bl.mulc", FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL}},
+ { &hf_scsi_block_limits_mubdc,
+ {"Maximum Unmap Block Descriptor Count", "scsi.sbc.bl.mubdc", FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL}},
+ { &hf_scsi_block_limits_oug,
+ {"Optimal Unmap Block Granularity", "scsi.sbc.bl.oug", FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL}},
+ { &hf_scsi_block_limits_ugavalid,
+ {"UGAVALID", "scsi.sbc.bl.ugavalid", FT_BOOLEAN, 8, NULL, 0x80,
+ NULL, HFILL}},
+ { &hf_scsi_block_limits_uga,
+ {"Unmap Granularity Alignment", "scsi.sbc.bl.uga", FT_UINT32, BASE_DEC, NULL, 0x7fffffff,
+ NULL, HFILL}},
+ { &hf_scsi_block_limits_mwsl,
+ {"Maximum Write Same Length", "scsi.sbc.bl.mwsl", FT_UINT64, BASE_DEC, NULL, 0,
+ NULL, HFILL}},
};
/* Setup protocol subtree array */
@@ -5626,24 +5770,24 @@ proto_register_scsi (void)
proto_register_subtree_array(ett, array_length(ett));
/* add preferences to decode SCSI message */
- scsi_module = prefs_register_protocol (proto_scsi, NULL);
- prefs_register_enum_preference (scsi_module, "decode_scsi_messages_as",
- "Decode SCSI Messages As",
- "When Target Cannot Be Identified, Decode SCSI Messages As",
- &scsi_def_devtype,
- scsi_devtype_options,
- FALSE);
+ scsi_module = prefs_register_protocol(proto_scsi, NULL);
+ prefs_register_enum_preference(scsi_module, "decode_scsi_messages_as",
+ "Decode SCSI Messages As",
+ "When Target Cannot Be Identified, Decode SCSI Messages As",
+ &scsi_def_devtype,
+ scsi_devtype_options,
+ FALSE);
prefs_register_bool_preference(scsi_module, "defragment",
- "Reassemble fragmented SCSI DATA IN/OUT transfers",
- "Whether fragmented SCSI DATA IN/OUT transfers should be reassembled",
- &scsi_defragment);
+ "Reassemble fragmented SCSI DATA IN/OUT transfers",
+ "Whether fragmented SCSI DATA IN/OUT transfers should be reassembled",
+ &scsi_defragment);
register_init_routine(scsi_defragment_init);
}
void
proto_reg_handoff_scsi(void)
{
- scsi_tap = register_tap("scsi");
- data_handle = find_dissector ("data");
+ scsi_tap = register_tap("scsi");
+ data_handle = find_dissector("data");
}
diff --git a/epan/dissectors/packet-scsi.h b/epan/dissectors/packet-scsi.h
index 0192c75e80..7701ae9f45 100644
--- a/epan/dissectors/packet-scsi.h
+++ b/epan/dissectors/packet-scsi.h
@@ -224,6 +224,7 @@ extern int hf_scsi_alloclen16;
#define EXTENDED_FORM 0x08
#define SERVICE_READ_CAPACITY16 0x10
#define SERVICE_READ_LONG16 0x11
+#define SERVICE_GET_LBA_STATUS 0x12
extern const value_string service_action_vals[];
extern const value_string scsi_devid_codeset_val[];
diff --git a/epan/dissectors/packet-sctp.c b/epan/dissectors/packet-sctp.c
index 18fdfbb562..fbbb2bbeb5 100644
--- a/epan/dissectors/packet-sctp.c
+++ b/epan/dissectors/packet-sctp.c
@@ -1,6 +1,6 @@
/* packet-sctp.c
* Routines for Stream Control Transmission Protocol dissection
- * Copyright 2000-2005 Michael Tuexen <tuexen [AT] fh-muenster.de>
+ * Copyright 2000-2012 Michael Tuexen <tuexen [AT] fh-muenster.de>
* Copyright 2011 Thomas Dreibholz <dreibh [AT] iem.uni-due.de>
*
* $Id$
@@ -32,8 +32,8 @@
* - RFC 4895
* - RFC 4960
* - RFC 5061
+ * - RFC 6525
* - http://tools.ietf.org/html/draft-stewart-sctp-pktdrprep-02
- * - http://tools.ietf.org/html/draft-stewart-sctpstrrst-01
* - http://tools.ietf.org/html/draft-ladha-sctp-nonce-02
* - http://tools.ietf.org/html/draft-tuexen-tsvwg-sctp-sack-immediately-00
*
@@ -175,6 +175,11 @@ static int hf_senders_next_tsn = -1;
static int hf_receivers_next_tsn = -1;
static int hf_stream_reset_rsp_result = -1;
static int hf_stream_reset_sid = -1;
+static int hf_add_outgoing_streams_number_streams = -1;
+static int hf_add_outgoing_streams_reserved = -1;
+static int hf_add_incoming_streams_number_streams = -1;
+static int hf_add_incoming_streams_reserved = -1;
+
static int hf_random_number = -1;
static int hf_chunks_to_auth = -1;
static int hf_hmac_id = -1;
@@ -224,7 +229,8 @@ static int hf_sctp_fragment = -1;
static int hf_sctp_retransmission = -1;
static int hf_sctp_retransmitted = -1;
static int hf_sctp_retransmitted_count = -1;
-static int hf_sctp_rtt = -1;
+static int hf_sctp_data_rtt = -1;
+static int hf_sctp_sack_rtt = -1;
static int hf_sctp_rto = -1;
static int hf_sctp_ack_tsn = -1;
static int hf_sctp_ack_frame = -1;
@@ -294,7 +300,7 @@ static gboolean enable_ulp_dissection = TRUE;
#define SCTP_NR_SACK_CHUNK_ID 16
#define SCTP_ASCONF_ACK_CHUNK_ID 0x80
#define SCTP_PKTDROP_CHUNK_ID 0x81
-#define SCTP_STREAM_RESET_CHUNK_ID 0x82
+#define SCTP_RE_CONFIG_CHUNK_ID 0x82
#define SCTP_PAD_CHUNK_ID 0x84
#define SCTP_FORWARD_TSN_CHUNK_ID 0xC0
#define SCTP_ASCONF_CHUNK_ID 0xC1
@@ -320,7 +326,7 @@ static const value_string chunk_type_values[] = {
{ SCTP_NR_SACK_CHUNK_ID, "NR-SACK" },
{ SCTP_ASCONF_ACK_CHUNK_ID, "ASCONF_ACK" },
{ SCTP_PKTDROP_CHUNK_ID, "PKTDROP" },
- { SCTP_STREAM_RESET_CHUNK_ID, "STREAM_RESET" },
+ { SCTP_RE_CONFIG_CHUNK_ID, "RE_CONFIG" },
{ SCTP_PAD_CHUNK_ID, "PAD" },
{ SCTP_FORWARD_TSN_CHUNK_ID, "FORWARD_TSN" },
{ SCTP_ASCONF_CHUNK_ID, "ASCONF" },
@@ -329,7 +335,7 @@ static const value_string chunk_type_values[] = {
/*
* Based on http://www.iana.org/assignments/sctp-parameters
- * as of November 10th, 2010
+ * as of March 15th, 2012
*/
static const value_string sctp_payload_proto_id_values[] = {
{ NOT_SPECIFIED_PROTOCOL_ID, "not specified" },
@@ -377,6 +383,7 @@ static const value_string sctp_payload_proto_id_values[] = {
{ PROTO_3GPP_RNA_PROTOCOL_ID, "3GPP RNA" },
{ PROTO_3GPP_M2AP_PROTOCOL_ID, "3GPP M2AP" },
{ PROTO_3GPP_M3AP_PROTOCOL_ID, "3GPP M3AP" },
+ { SSH_PAYLOAD_PROTOCOL_ID, "SSH" },
{ 0, NULL } };
@@ -699,7 +706,7 @@ tsn_tree(sctp_tsn_t *t, proto_item *tsn_item, packet_info *pinfo,
pt = proto_item_add_subtree(pi, ett_sctp_ack);
nstime_delta( &rtt, &(t->ack.ts), &(t->first_transmit.ts) );
- pi = proto_tree_add_time(pt, hf_sctp_rtt, tvb, 0, 0, &rtt);
+ pi = proto_tree_add_time(pt, hf_sctp_data_rtt, tvb, 0, 0, &rtt);
PROTO_ITEM_SET_GENERATED(pi);
}
}
@@ -813,7 +820,7 @@ ack_tree(sctp_tsn_t *t, proto_tree *acks_tree,
pi = proto_tree_add_uint(pt, hf_sctp_ack_frame, tvb, 0 , 0, t->first_transmit.framenum);
PROTO_ITEM_SET_GENERATED(pi);
- pi = proto_tree_add_time(pt, hf_sctp_rtt, tvb, 0, 0, &rtt);
+ pi = proto_tree_add_time(pt, hf_sctp_sack_rtt, tvb, 0, 0, &rtt);
PROTO_ITEM_SET_GENERATED(pi);
}
}
@@ -1135,12 +1142,13 @@ static const value_string stream_reset_result_values[] = {
{ 2, "Denied" },
{ 3, "Error - Wrong SSN" },
{ 4, "Error - Request already in progress" },
+ { 5, "Error - Bad sequence number" },
{ 0, NULL }
};
static void
-dissect_stream_reset_response_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item _U_)
+dissect_re_configuration_response_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item _U_)
{
guint length;
@@ -1154,6 +1162,46 @@ dissect_stream_reset_response_parameter(tvbuff_t *parameter_tvb, proto_tree *par
proto_tree_add_item(parameter_tree, hf_receivers_next_tsn, parameter_tvb, RECEIVERS_NEXT_TSN_OFFSET, RECEIVERS_NEXT_TSN_LENGTH, ENC_BIG_ENDIAN);
}
+#define ADD_OUTGOING_STREAM_REQ_SEQ_NR_LENGTH 4
+#define ADD_OUTGOING_STREAM_REQ_NUM_STREAMS_LENGTH 2
+#define ADD_OUTGOING_STREAM_REQ_RESERVED_LENGTH 2
+
+#define ADD_OUTGOING_STREAM_REQ_SEQ_NR_OFFSET PARAMETER_VALUE_OFFSET
+#define ADD_OUTGOING_STREAM_REQ_NUM_STREAMS_OFFSET (ADD_OUTGOING_STREAM_REQ_SEQ_NR_OFFSET + ADD_OUTGOING_STREAM_REQ_SEQ_NR_LENGTH)
+#define ADD_OUTGOING_STREAM_REQ_RESERVED_OFFSET (ADD_OUTGOING_STREAM_REQ_NUM_STREAMS_OFFSET + ADD_OUTGOING_STREAM_REQ_NUM_STREAMS_LENGTH)
+
+static void
+dissect_add_outgoing_streams_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item _U_)
+{
+ /* guint length; */
+
+ /* length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET); */
+
+ proto_tree_add_item(parameter_tree, hf_stream_reset_req_seq_nr, parameter_tvb, ADD_OUTGOING_STREAM_REQ_SEQ_NR_OFFSET, ADD_OUTGOING_STREAM_REQ_SEQ_NR_LENGTH, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_add_outgoing_streams_number_streams, parameter_tvb, ADD_OUTGOING_STREAM_REQ_NUM_STREAMS_OFFSET, ADD_OUTGOING_STREAM_REQ_NUM_STREAMS_LENGTH, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_add_outgoing_streams_reserved, parameter_tvb, ADD_OUTGOING_STREAM_REQ_RESERVED_OFFSET, ADD_OUTGOING_STREAM_REQ_RESERVED_LENGTH, ENC_BIG_ENDIAN);
+}
+
+#define ADD_INCOMING_STREAM_REQ_SEQ_NR_LENGTH 4
+#define ADD_INCOMING_STREAM_REQ_NUM_STREAMS_LENGTH 2
+#define ADD_INCOMING_STREAM_REQ_RESERVED_LENGTH 2
+
+#define ADD_INCOMING_STREAM_REQ_SEQ_NR_OFFSET PARAMETER_VALUE_OFFSET
+#define ADD_INCOMING_STREAM_REQ_NUM_STREAMS_OFFSET (ADD_INCOMING_STREAM_REQ_SEQ_NR_OFFSET + ADD_OUTGOING_STREAM_REQ_SEQ_NR_LENGTH)
+#define ADD_INCOMING_STREAM_REQ_RESERVED_OFFSET (ADD_INCOMING_STREAM_REQ_NUM_STREAMS_OFFSET + ADD_OUTGOING_STREAM_REQ_NUM_STREAMS_LENGTH)
+
+static void
+dissect_add_incoming_streams_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item _U_)
+{
+ /* guint length; */
+
+ /* length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET); */
+
+ proto_tree_add_item(parameter_tree, hf_stream_reset_req_seq_nr, parameter_tvb, ADD_INCOMING_STREAM_REQ_SEQ_NR_OFFSET, ADD_INCOMING_STREAM_REQ_RESERVED_LENGTH, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_add_incoming_streams_number_streams, parameter_tvb, ADD_INCOMING_STREAM_REQ_NUM_STREAMS_OFFSET, ADD_INCOMING_STREAM_REQ_NUM_STREAMS_LENGTH, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_add_incoming_streams_reserved, parameter_tvb, ADD_INCOMING_STREAM_REQ_RESERVED_OFFSET, ADD_INCOMING_STREAM_REQ_RESERVED_LENGTH, ENC_BIG_ENDIAN);
+}
+
static void
dissect_ecn_parameter(tvbuff_t *parameter_tvb _U_)
{
@@ -1335,59 +1383,63 @@ dissect_unknown_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, p
proto_item_append_text(parameter_item, " (Type %u, value length: %u byte%s)", type, parameter_value_length, plurality(parameter_value_length, "", "s"));
}
-#define HEARTBEAT_INFO_PARAMETER_ID 0x0001
-#define IPV4ADDRESS_PARAMETER_ID 0x0005
-#define IPV6ADDRESS_PARAMETER_ID 0x0006
-#define STATE_COOKIE_PARAMETER_ID 0x0007
-#define UNREC_PARA_PARAMETER_ID 0x0008
-#define COOKIE_PRESERVATIVE_PARAMETER_ID 0x0009
-#define HOSTNAME_ADDRESS_PARAMETER_ID 0x000b
-#define SUPPORTED_ADDRESS_TYPES_PARAMETER_ID 0x000c
-#define OUTGOING_SSN_RESET_REQUEST_PARAMETER_ID 0x000d
-#define INCOMING_SSN_RESET_REQUEST_PARAMETER_ID 0x000e
-#define SSN_TSN_RESET_REQUEST_PARAMETER_ID 0x000f
-#define STREAM_RESET_RESPONSE_PARAMETER_ID 0x0010
-#define ECN_PARAMETER_ID 0x8000
-#define NONCE_SUPPORTED_PARAMETER_ID 0x8001
-#define RANDOM_PARAMETER_ID 0x8002
-#define CHUNKS_PARAMETER_ID 0x8003
-#define HMAC_ALGO_PARAMETER_ID 0x8004
-#define SUPPORTED_EXTENSIONS_PARAMETER_ID 0x8008
-#define FORWARD_TSN_SUPPORTED_PARAMETER_ID 0xC000
-#define ADD_IP_ADDRESS_PARAMETER_ID 0xC001
-#define DEL_IP_ADDRESS_PARAMETER_ID 0xC002
-#define ERROR_CAUSE_INDICATION_PARAMETER_ID 0xC003
-#define SET_PRIMARY_ADDRESS_PARAMETER_ID 0xC004
-#define SUCCESS_REPORT_PARAMETER_ID 0xC005
-#define ADAP_LAYER_INDICATION_PARAMETER_ID 0xC006
+#define HEARTBEAT_INFO_PARAMETER_ID 0x0001
+#define IPV4ADDRESS_PARAMETER_ID 0x0005
+#define IPV6ADDRESS_PARAMETER_ID 0x0006
+#define STATE_COOKIE_PARAMETER_ID 0x0007
+#define UNREC_PARA_PARAMETER_ID 0x0008
+#define COOKIE_PRESERVATIVE_PARAMETER_ID 0x0009
+#define HOSTNAME_ADDRESS_PARAMETER_ID 0x000b
+#define SUPPORTED_ADDRESS_TYPES_PARAMETER_ID 0x000c
+#define OUTGOING_SSN_RESET_REQUEST_PARAMETER_ID 0x000d
+#define INCOMING_SSN_RESET_REQUEST_PARAMETER_ID 0x000e
+#define SSN_TSN_RESET_REQUEST_PARAMETER_ID 0x000f
+#define RE_CONFIGURATION_RESPONSE_PARAMETER_ID 0x0010
+#define ADD_OUTGOING_STREAMS_REQUEST_PARAMETER_ID 0x0011
+#define ADD_INCOMING_STREAMS_REQUEST_PARAMETER_ID 0x0012
+#define ECN_PARAMETER_ID 0x8000
+#define NONCE_SUPPORTED_PARAMETER_ID 0x8001
+#define RANDOM_PARAMETER_ID 0x8002
+#define CHUNKS_PARAMETER_ID 0x8003
+#define HMAC_ALGO_PARAMETER_ID 0x8004
+#define SUPPORTED_EXTENSIONS_PARAMETER_ID 0x8008
+#define FORWARD_TSN_SUPPORTED_PARAMETER_ID 0xC000
+#define ADD_IP_ADDRESS_PARAMETER_ID 0xC001
+#define DEL_IP_ADDRESS_PARAMETER_ID 0xC002
+#define ERROR_CAUSE_INDICATION_PARAMETER_ID 0xC003
+#define SET_PRIMARY_ADDRESS_PARAMETER_ID 0xC004
+#define SUCCESS_REPORT_PARAMETER_ID 0xC005
+#define ADAP_LAYER_INDICATION_PARAMETER_ID 0xC006
static const value_string parameter_identifier_values[] = {
- { HEARTBEAT_INFO_PARAMETER_ID, "Heartbeat info" },
- { IPV4ADDRESS_PARAMETER_ID, "IPv4 address" },
- { IPV6ADDRESS_PARAMETER_ID, "IPv6 address" },
- { STATE_COOKIE_PARAMETER_ID, "State cookie" },
- { UNREC_PARA_PARAMETER_ID, "Unrecognized parameter" },
- { COOKIE_PRESERVATIVE_PARAMETER_ID, "Cookie preservative" },
- { HOSTNAME_ADDRESS_PARAMETER_ID, "Hostname address" },
- { OUTGOING_SSN_RESET_REQUEST_PARAMETER_ID, "Outgoing SSN reset request" },
- { INCOMING_SSN_RESET_REQUEST_PARAMETER_ID, "Incoming SSN reset request" },
- { SSN_TSN_RESET_REQUEST_PARAMETER_ID, "SSN/TSN reset request" },
- { STREAM_RESET_RESPONSE_PARAMETER_ID, "Stream reset response" },
- { SUPPORTED_ADDRESS_TYPES_PARAMETER_ID, "Supported address types" },
- { ECN_PARAMETER_ID, "ECN" },
- { NONCE_SUPPORTED_PARAMETER_ID, "Nonce supported" },
- { RANDOM_PARAMETER_ID, "Random" },
- { CHUNKS_PARAMETER_ID, "Authenticated Chunk list" },
- { HMAC_ALGO_PARAMETER_ID, "Requested HMAC Algorithm" },
- { SUPPORTED_EXTENSIONS_PARAMETER_ID, "Supported Extensions" },
- { FORWARD_TSN_SUPPORTED_PARAMETER_ID, "Forward TSN supported" },
- { ADD_IP_ADDRESS_PARAMETER_ID, "Add IP address" },
- { DEL_IP_ADDRESS_PARAMETER_ID, "Delete IP address" },
- { ERROR_CAUSE_INDICATION_PARAMETER_ID, "Error cause indication" },
- { SET_PRIMARY_ADDRESS_PARAMETER_ID, "Set primary address" },
- { SUCCESS_REPORT_PARAMETER_ID, "Success report" },
- { ADAP_LAYER_INDICATION_PARAMETER_ID, "Adaptation Layer Indication" },
- { 0, NULL } };
+ { HEARTBEAT_INFO_PARAMETER_ID, "Heartbeat info" },
+ { IPV4ADDRESS_PARAMETER_ID, "IPv4 address" },
+ { IPV6ADDRESS_PARAMETER_ID, "IPv6 address" },
+ { STATE_COOKIE_PARAMETER_ID, "State cookie" },
+ { UNREC_PARA_PARAMETER_ID, "Unrecognized parameter" },
+ { COOKIE_PRESERVATIVE_PARAMETER_ID, "Cookie preservative" },
+ { HOSTNAME_ADDRESS_PARAMETER_ID, "Hostname address" },
+ { OUTGOING_SSN_RESET_REQUEST_PARAMETER_ID, "Outgoing SSN reset request" },
+ { INCOMING_SSN_RESET_REQUEST_PARAMETER_ID, "Incoming SSN reset request" },
+ { SSN_TSN_RESET_REQUEST_PARAMETER_ID, "SSN/TSN reset request" },
+ { RE_CONFIGURATION_RESPONSE_PARAMETER_ID, "Re-configuration response" },
+ { ADD_OUTGOING_STREAMS_REQUEST_PARAMETER_ID, "Add outgoing streams request" },
+ { ADD_INCOMING_STREAMS_REQUEST_PARAMETER_ID, "Add incoming streams request" },
+ { SUPPORTED_ADDRESS_TYPES_PARAMETER_ID, "Supported address types" },
+ { ECN_PARAMETER_ID, "ECN" },
+ { NONCE_SUPPORTED_PARAMETER_ID, "Nonce supported" },
+ { RANDOM_PARAMETER_ID, "Random" },
+ { CHUNKS_PARAMETER_ID, "Authenticated Chunk list" },
+ { HMAC_ALGO_PARAMETER_ID, "Requested HMAC Algorithm" },
+ { SUPPORTED_EXTENSIONS_PARAMETER_ID, "Supported Extensions" },
+ { FORWARD_TSN_SUPPORTED_PARAMETER_ID, "Forward TSN supported" },
+ { ADD_IP_ADDRESS_PARAMETER_ID, "Add IP address" },
+ { DEL_IP_ADDRESS_PARAMETER_ID, "Delete IP address" },
+ { ERROR_CAUSE_INDICATION_PARAMETER_ID, "Error cause indication" },
+ { SET_PRIMARY_ADDRESS_PARAMETER_ID, "Set primary address" },
+ { SUCCESS_REPORT_PARAMETER_ID, "Success report" },
+ { ADAP_LAYER_INDICATION_PARAMETER_ID, "Adaptation Layer Indication" },
+ { 0, NULL } };
#define SCTP_PARAMETER_BIT_1 0x8000
#define SCTP_PARAMETER_BIT_2 0x4000
@@ -1467,8 +1519,14 @@ dissect_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *chunk
case SSN_TSN_RESET_REQUEST_PARAMETER_ID:
dissect_ssn_tsn_reset_request_parameter(parameter_tvb, parameter_tree, parameter_item);
break;
- case STREAM_RESET_RESPONSE_PARAMETER_ID:
- dissect_stream_reset_response_parameter(parameter_tvb, parameter_tree, parameter_item);
+ case RE_CONFIGURATION_RESPONSE_PARAMETER_ID:
+ dissect_re_configuration_response_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case ADD_OUTGOING_STREAMS_REQUEST_PARAMETER_ID:
+ dissect_add_outgoing_streams_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case ADD_INCOMING_STREAMS_REQUEST_PARAMETER_ID:
+ dissect_add_incoming_streams_parameter(parameter_tvb, parameter_tree, parameter_item);
break;
case ECN_PARAMETER_ID:
dissect_ecn_parameter(parameter_tvb);
@@ -2357,7 +2415,7 @@ fragment_reassembly(tvbuff_t *tvb, sctp_fragment* fragment,
frag_i->frame_num, offset, offset + frag_i->len - 1, frag_i->len);
offset += frag_i->len;
- mark_frame_as_depended_upon(pinfo, frag_i->frame_num);
+ mark_frame_as_depended_upon(pinfo, frag_i->frame_num);
}
for (frag_i = msg->fragments;
@@ -2369,7 +2427,7 @@ fragment_reassembly(tvbuff_t *tvb, sctp_fragment* fragment,
frag_i->frame_num, offset, offset + frag_i->len - 1, frag_i->len);
offset += frag_i->len;
- mark_frame_as_depended_upon(pinfo, frag_i->frame_num);
+ mark_frame_as_depended_upon(pinfo, frag_i->frame_num);
}
} else {
for (frag_i = find_fragment(message->begin, stream_id, stream_seq_num);
@@ -2381,7 +2439,7 @@ fragment_reassembly(tvbuff_t *tvb, sctp_fragment* fragment,
frag_i->frame_num, offset, offset + frag_i->len - 1, frag_i->len);
offset += frag_i->len;
- mark_frame_as_depended_upon(pinfo, frag_i->frame_num);
+ mark_frame_as_depended_upon(pinfo, frag_i->frame_num);
}
}
@@ -2703,14 +2761,12 @@ dissect_data_chunk(tvbuff_t *chunk_tvb,
payload_proto_id = tvb_get_ntohl(chunk_tvb, DATA_CHUNK_PAYLOAD_PROTOCOL_ID_OFFSET);
- /* insert the PPID in the pinfo structure if it is non-zero, not already there and there is still room */
- if (payload_proto_id) {
- for(number_of_ppid = 0; number_of_ppid < MAX_NUMBER_OF_PPIDS; number_of_ppid++)
- if ((pinfo->ppids[number_of_ppid] == 0) || (pinfo->ppids[number_of_ppid] == payload_proto_id))
- break;
- if ((number_of_ppid < MAX_NUMBER_OF_PPIDS) && (pinfo->ppids[number_of_ppid] == 0))
- pinfo->ppids[number_of_ppid] = payload_proto_id;
- }
+ /* insert the PPID in the pinfo structure if it is not already there and there is still room */
+ for(number_of_ppid = 0; number_of_ppid < MAX_NUMBER_OF_PPIDS; number_of_ppid++)
+ if ((pinfo->ppids[number_of_ppid] == LAST_PPID) || (pinfo->ppids[number_of_ppid] == payload_proto_id))
+ break;
+ if ((number_of_ppid < MAX_NUMBER_OF_PPIDS) && (pinfo->ppids[number_of_ppid] == LAST_PPID))
+ pinfo->ppids[number_of_ppid] = payload_proto_id;
e_bit = tvb_get_guint8(chunk_tvb, CHUNK_FLAGS_OFFSET) & SCTP_DATA_CHUNK_E_BIT;
b_bit = tvb_get_guint8(chunk_tvb, CHUNK_FLAGS_OFFSET) & SCTP_DATA_CHUNK_B_BIT;
@@ -3427,17 +3483,17 @@ dissect_forward_tsn_chunk(tvbuff_t *chunk_tvb, guint16 chunk_length, proto_tree
}
}
-#define STREAM_RESET_PARAMETERS_OFFSET CHUNK_HEADER_LENGTH
+#define RE_CONFIG_PARAMETERS_OFFSET CHUNK_HEADER_LENGTH
static void
-dissect_stream_reset_chunk(tvbuff_t *chunk_tvb, guint16 chunk_length, packet_info *pinfo, proto_tree *chunk_tree, proto_item *chunk_item _U_)
+dissect_re_config_chunk(tvbuff_t *chunk_tvb, guint16 chunk_length, packet_info *pinfo, proto_tree *chunk_tree, proto_item *chunk_item _U_)
{
tvbuff_t *parameters_tvb;
if (chunk_tree) {
- parameters_tvb = tvb_new_subset(chunk_tvb, STREAM_RESET_PARAMETERS_OFFSET,
- MIN(chunk_length - CHUNK_HEADER_LENGTH, tvb_length_remaining(chunk_tvb, STREAM_RESET_PARAMETERS_OFFSET)),
- MIN(chunk_length - CHUNK_HEADER_LENGTH, tvb_reported_length_remaining(chunk_tvb, STREAM_RESET_PARAMETERS_OFFSET)));
+ parameters_tvb = tvb_new_subset(chunk_tvb, RE_CONFIG_PARAMETERS_OFFSET,
+ MIN(chunk_length - CHUNK_HEADER_LENGTH, tvb_length_remaining(chunk_tvb, RE_CONFIG_PARAMETERS_OFFSET)),
+ MIN(chunk_length - CHUNK_HEADER_LENGTH, tvb_reported_length_remaining(chunk_tvb, RE_CONFIG_PARAMETERS_OFFSET)));
dissect_parameters(parameters_tvb, pinfo, chunk_tree, NULL, FALSE);
}
}
@@ -3725,8 +3781,8 @@ dissect_sctp_chunk(tvbuff_t *chunk_tvb,
case SCTP_FORWARD_TSN_CHUNK_ID:
dissect_forward_tsn_chunk(chunk_tvb, length, chunk_tree, chunk_item);
break;
- case SCTP_STREAM_RESET_CHUNK_ID:
- dissect_stream_reset_chunk(chunk_tvb, length, pinfo, chunk_tree, chunk_item);
+ case SCTP_RE_CONFIG_CHUNK_ID:
+ dissect_re_config_chunk(chunk_tvb, length, pinfo, chunk_tree, chunk_item);
break;
case SCTP_AUTH_CHUNK_ID:
dissect_auth_chunk(chunk_tvb, length, chunk_tree, chunk_item);
@@ -3962,6 +4018,7 @@ static void
dissect_sctp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
guint16 source_port, destination_port;
+ guint number_of_ppid;
/* Extract the common header */
source_port = tvb_get_ntohs(tvb, SOURCE_PORT_OFFSET);
@@ -3978,7 +4035,10 @@ dissect_sctp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Clear entries in Info column on summary display */
col_set_str(pinfo->cinfo, COL_INFO, "");
- memset(&pinfo->ppids, 0, sizeof(pinfo->ppids));
+
+ for(number_of_ppid = 0; number_of_ppid < MAX_NUMBER_OF_PPIDS; number_of_ppid++) {
+ pinfo->ppids[number_of_ppid] = LAST_PPID;
+ }
/* The tvb array in struct _sctp_info is huge: currently 2k pointers.
* We know (by the value of 'number_of_tvbs') which of these entries have
@@ -4096,13 +4156,17 @@ proto_register_sctp(void)
{ &hf_cookie_preservative_increment, { "Suggested Cookie life-span increment (msec)", "sctp.parameter_cookie_preservative_incr", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_hostname, { "Hostname", "sctp.parameter_hostname", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_supported_address_type, { "Supported address type", "sctp.parameter_supported_addres_type", FT_UINT16, BASE_DEC, VALS(address_types_values), 0x0, NULL, HFILL } },
- { &hf_stream_reset_req_seq_nr, { "Stream reset request sequence number", "sctp.parameter_stream_reset_request_sequence_number", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
- { &hf_stream_reset_rsp_seq_nr, { "Stream reset response sequence number", "sctp.parameter_stream_reset_response_sequence_number", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_stream_reset_req_seq_nr, { "Re-configuration request sequence number", "sctp.parameter_reconfig_request_sequence_number", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_stream_reset_rsp_seq_nr, { "Re-configuration response sequence number", "sctp.parameter_reconfig_response_sequence_number", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_senders_last_assigned_tsn, { "Senders last assigned TSN", "sctp.parameter_senders_last_assigned_tsn", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_senders_next_tsn, { "Senders next TSN", "sctp.parameter_senders_next_tsn", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_receivers_next_tsn, { "Receivers next TSN", "sctp.parameter_receivers_next_tsn", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
- { &hf_stream_reset_rsp_result, { "Result", "sctp.parameter_stream_reset_response_result", FT_UINT32, BASE_DEC, VALS(stream_reset_result_values), 0x0, NULL, HFILL } },
- { &hf_stream_reset_sid, { "Stream Identifier", "sctp.parameter_stream_reset_sid", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_stream_reset_rsp_result, { "Result", "sctp.parameter_reconfig_response_result", FT_UINT32, BASE_DEC, VALS(stream_reset_result_values), 0x0, NULL, HFILL } },
+ { &hf_stream_reset_sid, { "Stream Identifier", "sctp.parameter_reconfig_sid", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_add_outgoing_streams_number_streams, { "Number of streams", "sctp.parameter_add_outgoing_streams_number", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_add_outgoing_streams_reserved, { "Reserved", "sctp.parameter_add_outgoing_streams_reserved", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_add_incoming_streams_number_streams, { "Number of streams", "sctp.parameter_add_incoming_streams_number", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_add_incoming_streams_reserved, { "Reserved", "sctp.parameter_add_incoming_streams_reserved", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_asconf_seq_nr, { "Sequence number", "sctp.asconf_seq_nr_number", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } },
{ &hf_asconf_ack_seq_nr, { "Sequence number", "sctp.asconf_ack_seq_nr_number", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } },
{ &hf_correlation_id, { "Correlation_id", "sctp.correlation_id", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } },
@@ -4110,7 +4174,7 @@ proto_register_sctp(void)
{ &hf_random_number, { "Random number", "sctp.random_number", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_chunks_to_auth, { "Chunk type", "sctp.chunk_type_to_auth", FT_UINT8, BASE_DEC, VALS(chunk_type_values), 0x0, NULL, HFILL } },
{ &hf_hmac_id, { "HMAC identifier", "sctp.hmac_id", FT_UINT16, BASE_DEC, VALS(hmac_id_values), 0x0, NULL, HFILL } },
- { &hf_hmac, { "HMAC", "sctp.hmac", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_hmac, { "HMAC", "sctp.hmac", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_shared_key_id, { "Shared key identifier", "sctp.shared_key_id", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_supported_chunk_type, { "Supported chunk type", "sctp.supported_chunk_type", FT_UINT8, BASE_DEC, VALS(chunk_type_values), 0x0, NULL, HFILL } },
{ &hf_cause_code, { "Cause code", "sctp.cause_code", FT_UINT16, BASE_HEX, VALS(cause_code_values), 0x0, NULL, HFILL } },
@@ -4137,8 +4201,9 @@ proto_register_sctp(void)
{ &hf_sctp_reassembled_in, { "Reassembled Message in frame", "sctp.reassembled_in", FT_FRAMENUM, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_sctp_duplicate, { "Fragment already seen in frame", "sctp.duplicate", FT_FRAMENUM, BASE_NONE, NULL, 0x0, NULL, HFILL } },
- { &hf_sctp_rtt, { "The RTT to ACK the chunk was", "sctp.rtt", FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0, NULL, HFILL } },
- { &hf_sctp_rto, { "Retransmitted after", "sctp.retransmission_time", FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_sctp_data_rtt, { "The RTT to SACK was", "sctp.data_rtt", FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_sctp_sack_rtt, { "The RTT since DATA was", "sctp.sack_rtt", FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_sctp_rto, { "Retransmitted after", "sctp.retransmission_time", FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_sctp_retransmission, { "This TSN is a retransmission of one in frame", "sctp.retransmission", FT_FRAMENUM, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_sctp_retransmitted, { "This TSN is retransmitted in frame", "sctp.retransmitted", FT_FRAMENUM, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_sctp_retransmitted_count, { "TSN was retransmitted this many times", "sctp.retransmitted_count", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
diff --git a/epan/dissectors/packet-sdh.c b/epan/dissectors/packet-sdh.c
new file mode 100644
index 0000000000..8b1b16408d
--- /dev/null
+++ b/epan/dissectors/packet-sdh.c
@@ -0,0 +1,294 @@
+/* packet-sdh.c
+ * Routines for SDH/SONET encapsulation dissection
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 - 2012 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+#include <epan/packet.h>
+#include <epan/prefs.h>
+
+
+#define COLUMNS 270
+
+static int proto_sdh = -1;
+
+static gint ett_sdh = -1;
+
+static int hf_sdh_a1 = -1;
+static int hf_sdh_a2 = -1;
+static int hf_sdh_j0 = -1;
+static int hf_sdh_b1 = -1;
+static int hf_sdh_e1 = -1;
+static int hf_sdh_f1 = -1;
+static int hf_sdh_d1 = -1;
+static int hf_sdh_d2 = -1;
+static int hf_sdh_d3 = -1;
+static int hf_sdh_au = -1;
+static int hf_sdh_b2 = -1;
+static int hf_sdh_k1 = -1;
+static int hf_sdh_k2 = -1;
+static int hf_sdh_d4 = -1;
+static int hf_sdh_d5 = -1;
+static int hf_sdh_d6 = -1;
+static int hf_sdh_d7 = -1;
+static int hf_sdh_d8 = -1;
+static int hf_sdh_d9 = -1;
+static int hf_sdh_d10 = -1;
+static int hf_sdh_d11 = -1;
+static int hf_sdh_d12 = -1;
+static int hf_sdh_s1 = -1;
+static int hf_sdh_m1 = -1;
+static int hf_sdh_e2 = -1;
+
+static int hf_sdh_j1 = -1;
+
+static dissector_handle_t data_handle;
+
+static gint sdh_data_rate = 1;
+
+static enum_val_t data_rates[] = {
+ {"Attempt to guess", "Attempt to guess", -1},
+ {"OC-3", "OC-3", 1},
+ {"OC-12", "OC-12", 4},
+ {"OC-24", "OC-24", 8},
+ {"OC-48", "OC-48", 16},
+ {NULL, NULL, -1}
+};
+
+static int
+get_sdh_level(tvbuff_t *tvb)
+{
+ /*data rate has been set in the SHD options*/
+ if(sdh_data_rate != -1) return sdh_data_rate;
+ /*returns the multiplier for each data level*/
+ switch(tvb_length(tvb)){
+ case 2430: /*OC-3*/
+ return 1;
+ case 9720: /*OC-12*/
+ return 4;
+ case 19440: /*OC-24*/
+ return 8;
+ case 38880: /*OC-48*/
+ return 16;
+ }
+
+ return 1;
+}
+
+static void
+dissect_sdh(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ proto_tree *sdh_tree = NULL;
+ proto_item *sdh_item = NULL;
+ int level = get_sdh_level(tvb);
+ guint32 a1 = 0;
+ guint32 a2 = 0;
+ guint8 j0 = 0;
+ guint8 b1 = 0;
+ guint8 e1 = 0;
+ guint8 f1 = 0;
+ guint8 d1 = 0;
+ guint8 d2 = 0;
+ guint8 d3 = 0;
+ guint8 h1 = 0;
+ guint8 h2 = 0;
+ guint16 au = 0;
+ guint32 b2 = 0;
+ guint8 k1 = 0;
+ guint8 k2 = 0;
+ guint8 d4 = 0;
+ guint8 d5 = 0;
+ guint8 d6 = 0;
+ guint8 d7 = 0;
+ guint8 d8 = 0;
+ guint8 d9 = 0;
+ guint8 d10 = 0;
+ guint8 d11 = 0;
+ guint8 d12 = 0;
+ guint8 s1 = 0;
+ guint8 m1 = 0;
+ guint8 e2 = 0;
+ guint8 j1 = 0;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "SDH");
+ col_clear(pinfo->cinfo,COL_INFO);
+
+ if (tree) {
+ sdh_item = proto_tree_add_protocol_format(tree, proto_sdh, tvb, 0, -1, "SDH");
+ sdh_tree = proto_item_add_subtree(sdh_item, ett_sdh);
+ a1 = tvb_get_ntoh24(tvb, 0+(0*level*COLUMNS));
+ a2 = tvb_get_ntoh24(tvb, 3+(0*level*COLUMNS));
+ j0 = tvb_get_guint8(tvb, 6+(0*level*COLUMNS));
+ b1 = tvb_get_guint8(tvb, 0+(1*level*COLUMNS));
+ e1 = tvb_get_guint8(tvb, 3+(1*level*COLUMNS));
+ f1 = tvb_get_guint8(tvb, 6+(1*level*COLUMNS));
+ d1 = tvb_get_guint8(tvb, 0+(2*level*COLUMNS));
+ d2 = tvb_get_guint8(tvb, 3+(2*level*COLUMNS));
+ d3 = tvb_get_guint8(tvb, 6+(2*level*COLUMNS));
+ h1 = tvb_get_guint8(tvb, 0+(3*level*COLUMNS));
+ h2 = tvb_get_guint8(tvb, 3+(3*level*COLUMNS));
+ au = (h2 | ((0x03 & h1) << 8));
+ b2 = 0;
+ b2 = tvb_get_guint8(tvb, 0+(4*level*COLUMNS)) << 16;
+ b2 = tvb_get_guint8(tvb, (1*level)+(4*level*COLUMNS)) << 8;
+ b2 = tvb_get_guint8(tvb, (2*level)+(4*level*COLUMNS));
+ k1 = tvb_get_guint8(tvb, 3+(4*level*COLUMNS));
+ k2 = tvb_get_guint8(tvb, 6+(4*level*COLUMNS));
+ d4 = tvb_get_guint8(tvb, 0+(5*level*COLUMNS));
+ d5 = tvb_get_guint8(tvb, 3+(5*level*COLUMNS));
+ d6 = tvb_get_guint8(tvb, 6+(5*level*COLUMNS));
+ d7 = tvb_get_guint8(tvb, 0+(6*level*COLUMNS));
+ d8 = tvb_get_guint8(tvb, 3+(6*level*COLUMNS));
+ d9 = tvb_get_guint8(tvb, 6+(6*level*COLUMNS));
+ d10 = tvb_get_guint8(tvb, 0+(7*level*COLUMNS));
+ d11 = tvb_get_guint8(tvb, 3+(7*level*COLUMNS));
+ d12 = tvb_get_guint8(tvb, 6+(7*level*COLUMNS));
+ s1 = tvb_get_guint8(tvb, 0+(8*level*COLUMNS));
+ m1 = tvb_get_guint8(tvb, 5+(8*level*COLUMNS));
+ e2 = tvb_get_guint8(tvb, 6+(8*level*COLUMNS));
+
+ j1 = tvb_get_guint8(tvb, au);
+
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_a1, tvb, 0, 3, a1, "A1 %x", a1);
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_a2, tvb, 3, 3, a2, "A2 %x", a2);
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_j0, tvb, 6, 1, j0, "J0 %d", j0);
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_b1, tvb, 0+(1*level*COLUMNS), 1, b1, "B1 %d", b1);
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_e1, tvb, 3+(1*level*COLUMNS), 1, e1, "E1 %d", e1);
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_f1, tvb, 6+(1*level*COLUMNS), 1, f1, "F1 %d", f1);
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_d1, tvb, 0+(2*level*COLUMNS), 1, d1, "D1 %d", d1);
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_d2, tvb, 3+(2*level*COLUMNS), 1, d2, "D2 %d", d2);
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_d3, tvb, 6+(2*level*COLUMNS), 1, d3, "D3 %d", d3);
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_au, tvb, 0+(3*level*COLUMNS), 9, au, "AU pointer %d h1 %d, h2 %d", au, h1, h2);
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_b2, tvb, 0+(4*level*COLUMNS), 1, b2, "B2 %d", b2);
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_k1, tvb, 3+(4*level*COLUMNS), 1, k1, "K1 %d", k1);
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_k2, tvb, 6+(4*level*COLUMNS), 1, k2, "K2 %d", k2);
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_d4, tvb, 0+(5*level*COLUMNS), 1, d4, "D4 %d", d4);
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_d5, tvb, 3+(5*level*COLUMNS), 1, d5, "D5 %d", d5);
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_d6, tvb, 6+(5*level*COLUMNS), 1, d6, "D6 %d", d6);
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_d7, tvb, 0+(6*level*COLUMNS), 1, d7, "D7 %d", d7);
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_d8, tvb, 3+(6*level*COLUMNS), 1, d8, "D8 %d", d8);
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_d9, tvb, 6+(6*level*COLUMNS), 1, d9, "D9 %d", d9);
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_d10, tvb, 0+(7*level*COLUMNS), 1, d10, "D10 %d", d10);
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_d11, tvb, 3+(7*level*COLUMNS), 1, d11, "D11 %d", d11);
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_d12, tvb, 6+(7*level*COLUMNS), 1, d12, "D12 %d", d12);
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_s1, tvb, 0+(8*level*COLUMNS), 1, s1, "S1 %d", s1);
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_m1, tvb, 5+(8*level*COLUMNS), 1, m1, "M1 %d", m1);
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_e2, tvb, 6+(7*level*COLUMNS), 1, e2, "E2 %d", e2);
+
+ proto_tree_add_uint_format(sdh_tree, hf_sdh_j1, tvb, au, 1, j1, "J1 %d", j1);
+ }
+
+}
+
+void
+proto_register_sdh(void)
+{
+ static hf_register_info hf[] = {
+ { &hf_sdh_a1,
+ { "A1", "sdh.a1", FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_sdh_a2,
+ { "A2", "sdh.a2", FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_sdh_j0,
+ { "J0", "sdh.j0", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_sdh_b1,
+ { "B1", "sdh.b1", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_sdh_e1,
+ { "E1", "sdh.e1", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_sdh_f1,
+ { "F1", "sdh.f1", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_sdh_d1,
+ { "D1", "sdh.d1", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_sdh_d2,
+ { "D2", "sdh.d2", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_sdh_d3,
+ { "D3", "sdh.d3", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_sdh_au,
+ { "AU", "sdh.au", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_sdh_b2,
+ { "B2", "sdh.b2", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_sdh_k1,
+ { "K1", "sdh.k1", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_sdh_k2,
+ { "K2", "sdh.k2", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_sdh_d4,
+ { "D4", "sdh.d4", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_sdh_d5,
+ { "D5", "sdh.d5", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_sdh_d6,
+ { "D6", "sdh.d6", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_sdh_d7,
+ { "D7", "sdh.d7", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_sdh_d8,
+ { "D8", "sdh.d8", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_sdh_d9,
+ { "D9", "sdh.d9", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_sdh_d10,
+ { "D10", "sdh.d10", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_sdh_d11,
+ { "D11", "sdh.d11", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_sdh_d12,
+ { "D12", "sdh.d12", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_sdh_s1,
+ { "S1", "sdh.s1", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_sdh_m1,
+ { "M1", "sdh.m1", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_sdh_e2,
+ { "E2", "sdh.e2", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+ { &hf_sdh_j1,
+ { "J1", "sdh.j1", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }}
+ };
+ static gint *ett[] = {
+ &ett_sdh
+ };
+
+ module_t *sdh_module;
+
+
+ proto_sdh = proto_register_protocol("SDH/SONET Protocol", "SDH", "sdh");
+ proto_register_field_array(proto_sdh, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ sdh_module = prefs_register_protocol(proto_sdh, NULL);
+ prefs_register_enum_preference(sdh_module, "data.rate",
+ "Data rate",
+ "Data rate",
+ &sdh_data_rate, data_rates, ENC_BIG_ENDIAN);
+
+ register_dissector("sdh", dissect_sdh, proto_sdh);
+}
+
+void
+proto_reg_handoff_sdh(void)
+{
+ dissector_handle_t sdh_handle;
+
+ sdh_handle = find_dissector("sdh");
+ dissector_add_uint("wtap_encap", WTAP_ENCAP_SDH, sdh_handle);
+
+ data_handle = find_dissector("data");
+
+}
+
diff --git a/epan/dissectors/packet-sdp.c b/epan/dissectors/packet-sdp.c
index a11bf0192c..855699906c 100644
--- a/epan/dissectors/packet-sdp.c
+++ b/epan/dissectors/packet-sdp.c
@@ -1,4 +1,4 @@
-/* packet-sdp.c
+ /* packet-sdp.c
* Routines for SDP packet disassembly (RFC 2327)
*
* Jason Lango <jal@netapp.com>
@@ -31,6 +31,7 @@
#endif
#include <stdlib.h>
+#include <string.h>
#include <ctype.h>
#ifdef HAVE_SYS_TYPES_H
@@ -78,12 +79,12 @@
#include "packet-h264.h"
#include "packet-mp4ves.h"
-static dissector_handle_t rtp_handle = NULL;
-static dissector_handle_t rtcp_handle = NULL;
-static dissector_handle_t t38_handle = NULL;
-static dissector_handle_t msrp_handle = NULL;
-static dissector_handle_t h264_handle = NULL;
-static dissector_handle_t mp4ves_handle = NULL;
+static dissector_handle_t rtp_handle;
+static dissector_handle_t rtcp_handle;
+static dissector_handle_t t38_handle;
+static dissector_handle_t msrp_handle;
+static dissector_handle_t h264_handle;
+static dissector_handle_t mp4ves_handle;
static int sdp_tap = -1;
@@ -214,20 +215,20 @@ typedef struct {
} transport_media_pt_t;
typedef struct {
- char *connection_address;
- char *connection_type;
- char *media_type;
- char *encoding_name[SDP_NO_OF_PT];
- int sample_rate[SDP_NO_OF_PT];
- char *media_port[SDP_MAX_RTP_CHANNELS];
- char *media_proto[SDP_MAX_RTP_CHANNELS];
+ char *connection_address;
+ char *connection_type;
+ char *media_type;
+ char *encoding_name[SDP_NO_OF_PT];
+ int sample_rate[SDP_NO_OF_PT];
+ char *media_port[SDP_MAX_RTP_CHANNELS];
+ char *media_proto[SDP_MAX_RTP_CHANNELS];
transport_media_pt_t media[SDP_MAX_RTP_CHANNELS];
- gint8 media_count;
+ gint8 media_count;
/* SRTP related info */
- guint encryption_algorithm;
- guint auth_algorithm;
- guint mki_len; /* number of octets used for the MKI in the RTP payload */
- guint auth_tag_len; /* number of octets used for the Auth Tag in the RTP payload */
+ guint encryption_algorithm;
+ guint auth_algorithm;
+ guint mki_len; /* number of octets used for the MKI in the RTP payload */
+ guint auth_tag_len; /* number of octets used for the Auth Tag in the RTP payload */
} transport_info_t;
@@ -265,7 +266,7 @@ static void dissect_sdp_encryption_key(tvbuff_t *tvb, proto_item * ti);
static void dissect_sdp_session_attribute(tvbuff_t *tvb, packet_info *pinfo, proto_item *ti);
static void dissect_sdp_media(tvbuff_t *tvb, proto_item *ti,
transport_info_t *transport_info);
-static void dissect_sdp_media_attribute(tvbuff_t *tvb, packet_info *pinfo, proto_item *ti, int length,transport_info_t *transport_info);
+static void dissect_sdp_media_attribute(tvbuff_t *tvb, packet_info *pinfo, proto_item *ti, int length, transport_info_t *transport_info);
static void free_encoding_name_str (void *ptr)
{
@@ -279,8 +280,8 @@ static void free_encoding_name_str (void *ptr)
static void
dissect_sdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *sdp_tree;
- proto_item *ti, *sub_ti;
+ proto_tree *sdp_tree;
+ proto_item *ti, *sub_ti;
gint offset = 0;
gint next_offset;
int linelen;
@@ -289,60 +290,60 @@ dissect_sdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
guchar delim;
int datalen;
int tokenoffset;
- int hf = -1;
- char *string;
+ int hf = -1;
+ char *string;
address src_addr;
transport_info_t transport_info;
- guint32 port=0;
- gboolean is_rtp=FALSE;
- gboolean is_srtp=FALSE;
- gboolean is_t38=FALSE;
- gboolean is_msrp=FALSE;
- gboolean set_rtp=FALSE;
- gboolean is_ipv4_addr=FALSE;
- gboolean is_ipv6_addr=FALSE;
- gboolean is_video=FALSE;
+ guint32 port = 0;
+ gboolean is_rtp = FALSE;
+ gboolean is_srtp = FALSE;
+ gboolean is_t38 = FALSE;
+ gboolean is_msrp = FALSE;
+ gboolean set_rtp = FALSE;
+ gboolean is_ipv4_addr = FALSE;
+ gboolean is_ipv6_addr = FALSE;
+ gboolean is_video = FALSE;
guint32 ipaddr[4];
- gint n,i;
- sdp_packet_info *sdp_pi;
- gchar *unknown_encoding = ep_strdup("Unknown");
+ gint n, i;
+ sdp_packet_info *sdp_pi;
+ gchar *unknown_encoding = ep_strdup("Unknown");
struct srtp_info *srtp_info = NULL;
/* Initialise packet info for passing to tap */
- sdp_pi = ep_alloc(sizeof(sdp_packet_info));
+ sdp_pi = ep_alloc(sizeof (sdp_packet_info));
sdp_pi->summary_str[0] = '\0';
/* Initialise RTP channel info */
- transport_info.connection_address=NULL;
- transport_info.connection_type=NULL;
- transport_info.media_type=NULL;
+ transport_info.connection_address = NULL;
+ transport_info.connection_type = NULL;
+ transport_info.media_type = NULL;
/* Initialise SRTP crypto info XXX note currently we only handle one crypto line in the SDP
* We should probably handle offer/answer and session updates etc(SIP) quite possibly the whole handling of
* seting up the RTP conversations should be done by the signaling protocol(s) calling the SDP dissector
* and the SDP dissector just provide the relevant data.
*/
- transport_info.encryption_algorithm = SRTP_ENC_ALG_NOT_SET;
- transport_info.auth_algorithm = SRTP_AUTH_ALG_NONE;
- transport_info.mki_len = 0; /* number of octets used for the MKI in the RTP payload */
- transport_info.auth_tag_len = 0; /* number of octets used for the Auth Tag in the RTP payload */
+ transport_info.encryption_algorithm = SRTP_ENC_ALG_NOT_SET;
+ transport_info.auth_algorithm = SRTP_AUTH_ALG_NONE;
+ transport_info.mki_len = 0; /* number of octets used for the MKI in the RTP payload */
+ transport_info.auth_tag_len = 0; /* number of octets used for the Auth Tag in the RTP payload */
- for (n=0; n < SDP_NO_OF_PT; n++){
- transport_info.encoding_name[n]=unknown_encoding;
- transport_info.sample_rate[n] = 0;
+ for (n = 0; n < SDP_NO_OF_PT; n++) {
+ transport_info.encoding_name[n] = unknown_encoding;
+ transport_info.sample_rate[n] = 0;
}
- for (n=0; n < SDP_MAX_RTP_CHANNELS; n++)
+ for (n = 0; n < SDP_MAX_RTP_CHANNELS; n++)
{
- transport_info.media_port[n]=NULL;
- transport_info.media_proto[n]=NULL;
+ transport_info.media_port[n] = NULL;
+ transport_info.media_proto[n] = NULL;
transport_info.media[n].pt_count = 0;
transport_info.media[n].rtp_dyn_payload =
- g_hash_table_new_full( g_int_hash, g_int_equal, g_free, free_encoding_name_str);
+ g_hash_table_new_full(g_int_hash, g_int_equal, g_free, free_encoding_name_str);
}
transport_info.media_count = 0;
@@ -387,8 +388,8 @@ dissect_sdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (linelen < 2)
break;
- type = tvb_get_guint8(tvb,offset);
- delim = tvb_get_guint8(tvb,offset + 1);
+ type = tvb_get_guint8(tvb, offset);
+ delim = tvb_get_guint8(tvb, offset + 1);
if (delim != '=') {
proto_item *ti2 = proto_tree_add_item(sdp_tree, hf_invalid, tvb, offset, linelen, ENC_ASCII|ENC_NA);
expert_add_info_format(pinfo, ti2, PI_MALFORMED, PI_NOTE,
@@ -413,8 +414,7 @@ dissect_sdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case 'i':
if (in_media_description) {
hf = hf_media_title;
- }
- else{
+ } else {
hf = hf_session_info;
}
break;
@@ -449,8 +449,7 @@ dissect_sdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case 'a':
if (in_media_description) {
hf = hf_media_attribute;
- }
- else{
+ } else {
hf = hf_session_attribute;
}
break;
@@ -468,12 +467,12 @@ dissect_sdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
linelen - tokenoffset);
sub_ti = proto_tree_add_string(sdp_tree, hf, tvb, offset, linelen,
string);
- call_sdp_subdissector(tvb_new_subset(tvb,offset+tokenoffset,
- linelen-tokenoffset,
- linelen-tokenoffset),
- pinfo,
- hf,sub_ti,linelen-tokenoffset,&transport_info),
- offset = next_offset;
+ call_sdp_subdissector(tvb_new_subset(tvb, offset + tokenoffset,
+ linelen - tokenoffset,
+ linelen - tokenoffset),
+ pinfo,
+ hf, sub_ti, linelen-tokenoffset,&transport_info),
+ offset = next_offset;
}
@@ -485,62 +484,61 @@ dissect_sdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
for (n = 0; n < transport_info.media_count; n++)
{
- if(transport_info.media_port[n]!=NULL) {
+ if (transport_info.media_port[n] != NULL) {
port = atol(transport_info.media_port[n]);
}
- if(transport_info.media_proto[n]!=NULL) {
+ if (transport_info.media_proto[n] != NULL) {
/* Check if media protocol is RTP
* and stream decoding is enabled in preferences
*/
- if(global_sdp_establish_conversation){
- /* Check if media protocol is RTP */
- is_rtp = (strcmp(transport_info.media_proto[n],"RTP/AVP")==0);
- /* Check if media protocol is SRTP */
- is_srtp = (strcmp(transport_info.media_proto[n],"RTP/SAVP")==0);
- /* Check if media protocol is T38 */
- is_t38 = ( (strcmp(transport_info.media_proto[n],"UDPTL")==0) ||
- (strcmp(transport_info.media_proto[n],"udptl")==0) );
- /* Check if media protocol is MSRP/TCP */
- is_msrp = (strcmp(transport_info.media_proto[n],"msrp/tcp")==0);
- }
+ if (global_sdp_establish_conversation) {
+ /* Check if media protocol is RTP */
+ is_rtp = (strcmp(transport_info.media_proto[n],"RTP/AVP") == 0);
+ /* Check if media protocol is SRTP */
+ is_srtp = (strcmp(transport_info.media_proto[n],"RTP/SAVP") == 0);
+ /* Check if media protocol is T38 */
+ is_t38 = ((strcmp(transport_info.media_proto[n],"UDPTL") == 0) ||
+ (strcmp(transport_info.media_proto[n],"udptl") == 0));
+ /* Check if media protocol is MSRP/TCP */
+ is_msrp = (strcmp(transport_info.media_proto[n],"msrp/tcp") == 0);
+ }
}
- if(transport_info.connection_address!=NULL) {
- if(transport_info.connection_type!=NULL) {
- if (strcmp(transport_info.connection_type,"IP4")==0) {
- if(inet_pton(AF_INET,transport_info.connection_address, &ipaddr)==1 ) {
+ if (transport_info.connection_address != NULL) {
+ if (transport_info.connection_type != NULL) {
+ if (strcmp(transport_info.connection_type, "IP4") == 0) {
+ if (inet_pton(AF_INET, transport_info.connection_address, &ipaddr) == 1) {
/* connection_address could be converted to a valid ipv4 address*/
- is_ipv4_addr=TRUE;
- src_addr.type=AT_IPv4;
- src_addr.len=4;
+ is_ipv4_addr = TRUE;
+ src_addr.type = AT_IPv4;
+ src_addr.len = 4;
}
- }
- else if (strcmp(transport_info.connection_type,"IP6")==0){
- if (inet_pton(AF_INET6, transport_info.connection_address, &ipaddr)==1){
+ } else if (strcmp(transport_info.connection_type, "IP6") == 0) {
+ if (inet_pton(AF_INET6, transport_info.connection_address, &ipaddr) == 1) {
/* connection_address could be converted to a valid ipv6 address*/
- is_ipv6_addr=TRUE;
- src_addr.type=AT_IPv6;
- src_addr.len=16;
+ is_ipv6_addr = TRUE;
+ src_addr.type = AT_IPv6;
+ src_addr.len = 16;
}
}
}
}
- if (strcmp(transport_info.media_type,"video")==0){
+ if (strcmp(transport_info.media_type,"video") == 0) {
is_video = TRUE;
}
set_rtp = FALSE;
/* Add (s)rtp and (s)rtcp conversation, if available (overrides t38 if conversation already set) */
- if((!pinfo->fd->flags.visited) && port!=0 && (is_rtp||is_srtp) && (is_ipv4_addr || is_ipv6_addr)){
- src_addr.data=(guint8*)&ipaddr;
- if(rtp_handle){
+ if ((!pinfo->fd->flags.visited) && port != 0 && (is_rtp || is_srtp) && (is_ipv4_addr || is_ipv6_addr)) {
+ src_addr.data = (guint8*)&ipaddr;
+ if (rtp_handle) {
if (is_srtp) {
- srtp_info = se_alloc0(sizeof(struct srtp_info));
- if(transport_info.encryption_algorithm != SRTP_ENC_ALG_NOT_SET){
- srtp_info->encryption_algorithm = transport_info.encryption_algorithm;
- srtp_info->auth_algorithm = transport_info.auth_algorithm;
- srtp_info->mki_len = transport_info.mki_len;
- srtp_info->auth_tag_len = transport_info.auth_tag_len;
+ srtp_info = se_alloc0(sizeof (struct srtp_info));
+ if (transport_info.encryption_algorithm != SRTP_ENC_ALG_NOT_SET) {
+ srtp_info->encryption_algorithm = transport_info.encryption_algorithm;
+ srtp_info->auth_algorithm = transport_info.auth_algorithm;
+ srtp_info->mki_len = transport_info.mki_len;
+ srtp_info->auth_tag_len = transport_info.auth_tag_len;
}
srtp_add_address(pinfo, &src_addr, port, 0, "SDP", pinfo->fd->num, is_video,
@@ -551,44 +549,45 @@ dissect_sdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
set_rtp = TRUE;
}
- if(rtcp_handle){
+ if (rtcp_handle) {
port++;
- if(is_srtp){
- srtcp_add_address(pinfo, &src_addr, port, 0, "SDP", pinfo->fd->num, srtp_info);
- }else{
- rtcp_add_address(pinfo, &src_addr, port, 0, "SDP", pinfo->fd->num);
+ if (is_srtp) {
+ srtcp_add_address(pinfo, &src_addr, port, 0, "SDP", pinfo->fd->num, srtp_info);
+ } else {
+ rtcp_add_address(pinfo, &src_addr, port, 0, "SDP", pinfo->fd->num);
}
}
}
/* Add t38 conversation, if available and only if no rtp */
- if((!pinfo->fd->flags.visited) && port!=0 && !set_rtp && is_t38 && is_ipv4_addr){
- src_addr.data=(guint8*)&ipaddr;
- if(t38_handle){
+ if ((!pinfo->fd->flags.visited) && (port != 0) && !set_rtp && is_t38 && is_ipv4_addr) {
+ src_addr.data = (guint8*)&ipaddr;
+ if (t38_handle) {
t38_add_address(pinfo, &src_addr, port, 0, "SDP", pinfo->fd->num);
}
}
/* Add MSRP conversation. Uses addresses discovered in attribute
rather than connection information of media session line */
- if (is_msrp ){
- if ((!pinfo->fd->flags.visited) && msrp_transport_address_set){
- if(msrp_handle){
- src_addr.type=AT_IPv4;
- src_addr.len=4;
- src_addr.data=(guint8*)&msrp_ipaddr;
+ if (is_msrp) {
+ if ((!pinfo->fd->flags.visited) && msrp_transport_address_set) {
+ if (msrp_handle) {
+ src_addr.type = AT_IPv4;
+ src_addr.len = 4;
+ src_addr.data = (guint8*)&msrp_ipaddr;
msrp_add_address(pinfo, &src_addr, msrp_port_number, "SDP", pinfo->fd->num);
}
}
}
- if (port!=0) {
+ if (port != 0) {
/* Create the RTP summary str for the Voip Call analysis */
for (i = 0; i < transport_info.media[n].pt_count; i++)
{
/* if the payload type is dynamic (96 to 127), check the hash table to add the desc in the SDP summary */
- if ( (transport_info.media[n].pt[i] >=96) && (transport_info.media[n].pt[i] <=127) ) {
- encoding_name_and_rate_t *encoding_name_and_rate_pt = g_hash_table_lookup(transport_info.media[n].rtp_dyn_payload, &transport_info.media[n].pt[i]);
+ if ((transport_info.media[n].pt[i] >= 96) && (transport_info.media[n].pt[i] <= 127)) {
+ encoding_name_and_rate_t *encoding_name_and_rate_pt =
+ g_hash_table_lookup(transport_info.media[n].rtp_dyn_payload, &transport_info.media[n].pt[i]);
if (encoding_name_and_rate_pt) {
if (strlen(sdp_pi->summary_str)) g_strlcat(sdp_pi->summary_str, " ", 50);
g_strlcat(sdp_pi->summary_str, encoding_name_and_rate_pt->encoding_name, 50);
@@ -600,7 +599,9 @@ dissect_sdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
} else
if (strlen(sdp_pi->summary_str)) g_strlcat(sdp_pi->summary_str, " ", 50);
- g_strlcat(sdp_pi->summary_str, val_to_str_ext(transport_info.media[n].pt[i], &rtp_payload_type_short_vals_ext, "%u"), 50);
+ g_strlcat(sdp_pi->summary_str,
+ val_to_str_ext(transport_info.media[n].pt[i], &rtp_payload_type_short_vals_ext, "%u"),
+ 50);
}
}
@@ -609,7 +610,7 @@ dissect_sdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
rtp_free_hash_dyn_payload(transport_info.media[n].rtp_dyn_payload);
/* Create the T38 summary str for the Voip Call analysis */
- if (port!=0 && is_t38) {
+ if ((port != 0) && is_t38) {
if (strlen(sdp_pi->summary_str)) g_strlcat(sdp_pi->summary_str, " ", 50);
g_strlcat(sdp_pi->summary_str, "t38", 50);
}
@@ -624,8 +625,7 @@ dissect_sdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
datalen = tvb_length_remaining(tvb, offset);
if (datalen > 0) {
- proto_tree_add_text(sdp_tree, tvb, offset, datalen, "Data (%d bytes)",
- datalen);
+ proto_tree_add_text(sdp_tree, tvb, offset, datalen, "Data (%d bytes)", datalen);
}
/* Report this packet to the tap */
@@ -633,42 +633,42 @@ dissect_sdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
static void
-call_sdp_subdissector(tvbuff_t *tvb, packet_info *pinfo, int hf, proto_tree* ti, int length,transport_info_t *transport_info){
- if(hf == hf_owner){
- dissect_sdp_owner(tvb,ti);
- } else if ( hf == hf_connection_info) {
- dissect_sdp_connection_info(tvb,ti,transport_info);
- } else if ( hf == hf_bandwidth) {
- dissect_sdp_bandwidth(tvb,ti);
- } else if ( hf == hf_time) {
- dissect_sdp_time(tvb,ti);
- } else if ( hf == hf_repeat_time ){
- dissect_sdp_repeat_time(tvb,ti);
- } else if ( hf == hf_timezone ) {
- dissect_sdp_timezone(tvb,ti);
- } else if ( hf == hf_encryption_key ) {
- dissect_sdp_encryption_key(tvb,ti);
- } else if ( hf == hf_session_attribute ){
- dissect_sdp_session_attribute(tvb,pinfo,ti);
- } else if ( hf == hf_media ) {
- dissect_sdp_media(tvb,ti,transport_info);
- } else if ( hf == hf_media_attribute ){
- dissect_sdp_media_attribute(tvb,pinfo,ti, length, transport_info);
+call_sdp_subdissector(tvbuff_t *tvb, packet_info *pinfo, int hf, proto_tree* ti, int length, transport_info_t *transport_info) {
+ if (hf == hf_owner) {
+ dissect_sdp_owner(tvb, ti);
+ } else if (hf == hf_connection_info) {
+ dissect_sdp_connection_info(tvb, ti, transport_info);
+ } else if (hf == hf_bandwidth) {
+ dissect_sdp_bandwidth(tvb, ti);
+ } else if (hf == hf_time) {
+ dissect_sdp_time(tvb, ti);
+ } else if (hf == hf_repeat_time) {
+ dissect_sdp_repeat_time(tvb, ti);
+ } else if (hf == hf_timezone) {
+ dissect_sdp_timezone(tvb, ti);
+ } else if (hf == hf_encryption_key) {
+ dissect_sdp_encryption_key(tvb, ti);
+ } else if (hf == hf_session_attribute) {
+ dissect_sdp_session_attribute(tvb, pinfo, ti);
+ } else if (hf == hf_media) {
+ dissect_sdp_media(tvb, ti, transport_info);
+ } else if (hf == hf_media_attribute) {
+ dissect_sdp_media_attribute(tvb, pinfo, ti, length, transport_info);
}
}
static void
-dissect_sdp_owner(tvbuff_t *tvb, proto_item *ti){
+dissect_sdp_owner(tvbuff_t *tvb, proto_item *ti) {
proto_tree *sdp_owner_tree;
- gint offset,next_offset,tokenlen;
+ gint offset, next_offset, tokenlen;
offset = 0;
- sdp_owner_tree = proto_item_add_subtree(ti,ett_sdp_owner);
+ sdp_owner_tree = proto_item_add_subtree(ti, ett_sdp_owner);
/* Find the username */
- next_offset = tvb_find_guint8(tvb,offset,-1,' ');
- if( next_offset == -1 )
+ next_offset = tvb_find_guint8(tvb, offset, -1, ' ');
+ if (next_offset == -1)
return;
tokenlen = next_offset - offset;
@@ -677,8 +677,8 @@ dissect_sdp_owner(tvbuff_t *tvb, proto_item *ti){
offset = next_offset + 1;
/* Find the session id */
- next_offset = tvb_find_guint8(tvb,offset,-1,' ');
- if( next_offset == -1 )
+ next_offset = tvb_find_guint8(tvb, offset, -1, ' ');
+ if (next_offset == -1)
return;
tokenlen = next_offset - offset;
@@ -687,8 +687,8 @@ dissect_sdp_owner(tvbuff_t *tvb, proto_item *ti){
offset = next_offset + 1;
/* Find the version */
- next_offset = tvb_find_guint8(tvb,offset,-1,' ');
- if( next_offset == -1 )
+ next_offset = tvb_find_guint8(tvb, offset, -1, ' ');
+ if (next_offset == -1)
return;
tokenlen = next_offset - offset;
@@ -697,8 +697,8 @@ dissect_sdp_owner(tvbuff_t *tvb, proto_item *ti){
offset = next_offset + 1;
/* Find the network type */
- next_offset = tvb_find_guint8(tvb,offset,-1,' ');
- if( next_offset == -1 )
+ next_offset = tvb_find_guint8(tvb, offset, -1, ' ');
+ if (next_offset == -1)
return;
tokenlen = next_offset - offset;
@@ -707,8 +707,8 @@ dissect_sdp_owner(tvbuff_t *tvb, proto_item *ti){
offset = next_offset + 1;
/* Find the address type */
- next_offset = tvb_find_guint8(tvb,offset,-1,' ');
- if( next_offset == -1 )
+ next_offset = tvb_find_guint8(tvb, offset, -1, ' ');
+ if (next_offset == -1)
return;
tokenlen = next_offset - offset;
@@ -717,7 +717,7 @@ dissect_sdp_owner(tvbuff_t *tvb, proto_item *ti){
offset = next_offset + 1;
/* Find the address */
- proto_tree_add_item(sdp_owner_tree,hf_owner_address, tvb, offset, -1, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(sdp_owner_tree, hf_owner_address, tvb, offset, -1, ENC_ASCII|ENC_NA);
}
/*
@@ -726,9 +726,9 @@ dissect_sdp_owner(tvbuff_t *tvb, proto_item *ti){
*/
static void
dissect_sdp_connection_info(tvbuff_t *tvb, proto_item* ti,
- transport_info_t *transport_info){
+ transport_info_t *transport_info) {
proto_tree *sdp_connection_info_tree;
- gint offset,next_offset,tokenlen;
+ gint offset, next_offset, tokenlen;
offset = 0;
@@ -736,8 +736,8 @@ dissect_sdp_connection_info(tvbuff_t *tvb, proto_item* ti,
ett_sdp_connection_info);
/* Find the network type */
- next_offset = tvb_find_guint8(tvb,offset,-1,' ');
- if( next_offset == -1 )
+ next_offset = tvb_find_guint8(tvb, offset, -1, ' ');
+ if (next_offset == -1)
return;
tokenlen = next_offset - offset;
@@ -747,8 +747,8 @@ dissect_sdp_connection_info(tvbuff_t *tvb, proto_item* ti,
offset = next_offset + 1;
/* Find the address type */
- next_offset = tvb_find_guint8(tvb,offset,-1,' ');
- if( next_offset == -1 )
+ next_offset = tvb_find_guint8(tvb, offset, -1, ' ');
+ if (next_offset == -1)
return;
tokenlen = next_offset - offset;
/* Save connection address type */
@@ -762,12 +762,12 @@ dissect_sdp_connection_info(tvbuff_t *tvb, proto_item* ti,
/* Find the connection address */
/* XXX - what if there's a <number of addresses> value? */
- next_offset = tvb_find_guint8(tvb,offset,-1,'/');
- if( next_offset == -1){
+ next_offset = tvb_find_guint8(tvb, offset, -1, '/');
+ if (next_offset == -1) {
tokenlen = -1; /* end of tvbuff */
/* Save connection address */
transport_info->connection_address =
- (char*)tvb_get_ephemeral_string(tvb, offset, tvb_length_remaining(tvb, offset));
+ (char*)tvb_get_ephemeral_string(tvb, offset, tvb_length_remaining(tvb, offset));
} else {
tokenlen = next_offset - offset;
/* Save connection address */
@@ -777,17 +777,17 @@ dissect_sdp_connection_info(tvbuff_t *tvb, proto_item* ti,
proto_tree_add_item(sdp_connection_info_tree,
hf_connection_info_connection_address, tvb, offset,
tokenlen, ENC_ASCII|ENC_NA);
- if(next_offset != -1){
+ if (next_offset != -1) {
offset = next_offset + 1;
- next_offset = tvb_find_guint8(tvb,offset,-1,'/');
- if( next_offset == -1){
+ next_offset = tvb_find_guint8(tvb, offset, -1, '/');
+ if (next_offset == -1) {
tokenlen = -1; /* end of tvbuff */
} else {
tokenlen = next_offset - offset;
}
proto_tree_add_item(sdp_connection_info_tree,
hf_connection_info_ttl, tvb, offset, tokenlen, ENC_ASCII|ENC_NA);
- if(next_offset != -1){
+ if (next_offset != -1) {
offset = next_offset + 1;
proto_tree_add_item(sdp_connection_info_tree,
hf_connection_info_num_addr, tvb, offset, -1, ENC_ASCII|ENC_NA);
@@ -796,34 +796,34 @@ dissect_sdp_connection_info(tvbuff_t *tvb, proto_item* ti,
}
static void
-dissect_sdp_bandwidth(tvbuff_t *tvb, proto_item *ti){
- proto_tree * sdp_bandwidth_tree;
- gint offset, next_offset, tokenlen;
+dissect_sdp_bandwidth(tvbuff_t *tvb, proto_item *ti) {
+ proto_tree *sdp_bandwidth_tree;
+ gint offset, next_offset, tokenlen;
proto_item *item;
- gboolean unit_is_kbs = FALSE;
- gboolean unit_is_bps = FALSE;
+ gboolean unit_is_kbs = FALSE;
+ gboolean unit_is_bps = FALSE;
offset = 0;
- sdp_bandwidth_tree = proto_item_add_subtree(ti,ett_sdp_bandwidth);
+ sdp_bandwidth_tree = proto_item_add_subtree(ti, ett_sdp_bandwidth);
/* find the modifier */
- next_offset = tvb_find_guint8(tvb,offset,-1,':');
+ next_offset = tvb_find_guint8(tvb, offset, -1, ':');
- if( next_offset == -1)
+ if (next_offset == -1)
return;
tokenlen = next_offset - offset;
item = proto_tree_add_item(sdp_bandwidth_tree, hf_bandwidth_modifier, tvb, offset,
- tokenlen, ENC_ASCII|ENC_NA);
- if (tvb_strneql(tvb, offset, "CT", 2) == 0){
+ tokenlen, ENC_ASCII|ENC_NA);
+ if (tvb_strneql(tvb, offset, "CT", 2) == 0) {
proto_item_append_text(item, " [Conference Total(total bandwidth of all RTP sessions)]");
unit_is_kbs = TRUE;
- }else if (tvb_strneql(tvb, offset, "AS", 2) == 0){
+ } else if (tvb_strneql(tvb, offset, "AS", 2) == 0) {
proto_item_append_text(item, " [Application Specific (RTP session bandwidth)]");
unit_is_kbs = TRUE;
- }else if (tvb_strneql(tvb, offset, "TIAS", 4) == 0){
+ } else if (tvb_strneql(tvb, offset, "TIAS", 4) == 0) {
proto_item_append_text(item, " [Transport Independent Application Specific maximum]");
unit_is_bps = TRUE;
}
@@ -832,24 +832,24 @@ dissect_sdp_bandwidth(tvbuff_t *tvb, proto_item *ti){
offset = next_offset + 1;
item = proto_tree_add_item(sdp_bandwidth_tree, hf_bandwidth_value, tvb, offset, -1,
- ENC_ASCII|ENC_NA);
+ ENC_ASCII|ENC_NA);
if (unit_is_kbs == TRUE)
proto_item_append_text(item, " kb/s");
if (unit_is_bps == TRUE)
proto_item_append_text(item, " b/s");
}
-static void dissect_sdp_time(tvbuff_t *tvb, proto_item* ti){
+static void dissect_sdp_time(tvbuff_t *tvb, proto_item* ti) {
proto_tree *sdp_time_tree;
- gint offset,next_offset, tokenlen;
+ gint offset, next_offset, tokenlen;
offset = 0;
- sdp_time_tree = proto_item_add_subtree(ti,ett_sdp_time);
+ sdp_time_tree = proto_item_add_subtree(ti, ett_sdp_time);
/* get start time */
- next_offset = tvb_find_guint8(tvb,offset,-1,' ');
- if( next_offset == -1 )
+ next_offset = tvb_find_guint8(tvb, offset, -1, ' ');
+ if (next_offset == -1)
return;
tokenlen = next_offset - offset;
@@ -861,17 +861,17 @@ static void dissect_sdp_time(tvbuff_t *tvb, proto_item* ti){
proto_tree_add_item(sdp_time_tree, hf_time_stop, tvb, offset, -1, ENC_ASCII|ENC_NA);
}
-static void dissect_sdp_repeat_time(tvbuff_t *tvb, proto_item* ti){
+static void dissect_sdp_repeat_time(tvbuff_t *tvb, proto_item* ti) {
proto_tree *sdp_repeat_time_tree;
- gint offset,next_offset, tokenlen;
+ gint offset, next_offset, tokenlen;
offset = 0;
- sdp_repeat_time_tree = proto_item_add_subtree(ti,ett_sdp_time);
+ sdp_repeat_time_tree = proto_item_add_subtree(ti, ett_sdp_time);
/* get interval */
- next_offset = tvb_find_guint8(tvb,offset,-1,' ');
- if( next_offset == -1 )
+ next_offset = tvb_find_guint8(tvb, offset, -1, ' ');
+ if (next_offset == -1)
return;
tokenlen = next_offset - offset;
@@ -880,48 +880,48 @@ static void dissect_sdp_repeat_time(tvbuff_t *tvb, proto_item* ti){
/* get duration */
offset = next_offset + 1;
- next_offset = tvb_find_guint8(tvb,offset,-1,' ');
- if( next_offset == -1 )
+ next_offset = tvb_find_guint8(tvb, offset, -1, ' ');
+ if (next_offset == -1)
return;
tokenlen = next_offset - offset;
- proto_tree_add_item(sdp_repeat_time_tree,hf_repeat_time_duration, tvb,
+ proto_tree_add_item(sdp_repeat_time_tree, hf_repeat_time_duration, tvb,
offset, tokenlen, ENC_ASCII|ENC_NA);
/* get offsets */
do{
offset = next_offset +1;
- next_offset = tvb_find_guint8(tvb,offset,-1,' ');
- if(next_offset != -1){
+ next_offset = tvb_find_guint8(tvb, offset, -1, ' ');
+ if (next_offset != -1) {
tokenlen = next_offset - offset;
} else {
tokenlen = -1; /* end of tvbuff */
}
proto_tree_add_item(sdp_repeat_time_tree, hf_repeat_time_offset,
tvb, offset, tokenlen, ENC_ASCII|ENC_NA);
- } while( next_offset != -1 );
+ } while (next_offset != -1);
}
static void
-dissect_sdp_timezone(tvbuff_t *tvb, proto_item* ti){
+dissect_sdp_timezone(tvbuff_t *tvb, proto_item* ti) {
proto_tree* sdp_timezone_tree;
- gint offset, next_offset, tokenlen;
+ gint offset, next_offset, tokenlen;
offset = 0;
- sdp_timezone_tree = proto_item_add_subtree(ti,ett_sdp_timezone);
+ sdp_timezone_tree = proto_item_add_subtree(ti, ett_sdp_timezone);
do{
- next_offset = tvb_find_guint8(tvb,offset,-1,' ');
- if(next_offset == -1)
+ next_offset = tvb_find_guint8(tvb, offset, -1, ' ');
+ if (next_offset == -1)
break;
tokenlen = next_offset - offset;
proto_tree_add_item(sdp_timezone_tree, hf_timezone_time, tvb, offset,
tokenlen, ENC_ASCII|ENC_NA);
offset = next_offset + 1;
- next_offset = tvb_find_guint8(tvb,offset,-1,' ');
- if(next_offset != -1){
+ next_offset = tvb_find_guint8(tvb, offset, -1, ' ');
+ if (next_offset != -1) {
tokenlen = next_offset - offset;
} else {
tokenlen = -1; /* end of tvbuff */
@@ -934,43 +934,43 @@ dissect_sdp_timezone(tvbuff_t *tvb, proto_item* ti){
}
-static void dissect_sdp_encryption_key(tvbuff_t *tvb, proto_item * ti){
+static void dissect_sdp_encryption_key(tvbuff_t *tvb, proto_item * ti) {
proto_tree *sdp_encryption_key_tree;
- gint offset, next_offset, tokenlen;
+ gint offset, next_offset, tokenlen;
offset = 0;
- sdp_encryption_key_tree = proto_item_add_subtree(ti,ett_sdp_encryption_key);
+ sdp_encryption_key_tree = proto_item_add_subtree(ti, ett_sdp_encryption_key);
- next_offset = tvb_find_guint8(tvb,offset,-1,':');
+ next_offset = tvb_find_guint8(tvb, offset, -1, ':');
- if(next_offset == -1)
+ if (next_offset == -1)
return;
tokenlen = next_offset - offset;
- proto_tree_add_item(sdp_encryption_key_tree,hf_encryption_key_type,
+ proto_tree_add_item(sdp_encryption_key_tree, hf_encryption_key_type,
tvb, offset, tokenlen, ENC_ASCII|ENC_NA);
offset = next_offset + 1;
- proto_tree_add_item(sdp_encryption_key_tree,hf_encryption_key_data,
+ proto_tree_add_item(sdp_encryption_key_tree, hf_encryption_key_data,
tvb, offset, -1, ENC_ASCII|ENC_NA);
}
-static void dissect_key_mgmt(tvbuff_t *tvb, packet_info * pinfo, proto_item * ti){
- gchar *data_p = NULL;
- gchar *prtcl_id = NULL;
- gint len;
- tvbuff_t *keymgmt_tvb;
- gboolean found_match = FALSE;
+static void dissect_key_mgmt(tvbuff_t *tvb, packet_info * pinfo, proto_item * ti) {
+ gchar *data_p = NULL;
+ gchar *prtcl_id = NULL;
+ gint len;
+ tvbuff_t *keymgmt_tvb;
+ gboolean found_match = FALSE;
proto_tree *key_tree;
- gint next_offset;
- gint offset = 0;
- gint tokenlen;
+ gint next_offset;
+ gint offset = 0;
+ gint tokenlen;
key_tree = proto_item_add_subtree(ti, ett_sdp_key_mgmt);
- next_offset = tvb_find_guint8(tvb,offset,-1,' ');
+ next_offset = tvb_find_guint8(tvb, offset, -1, ' ');
if (next_offset == -1)
return;
@@ -990,7 +990,7 @@ static void dissect_key_mgmt(tvbuff_t *tvb, packet_info * pinfo, proto_item * ti
keymgmt_tvb = base64_to_tvb(tvb, data_p);
add_new_data_source(pinfo, keymgmt_tvb, "Key Management Data");
- if ( prtcl_id != NULL && key_mgmt_dissector_table != NULL ) {
+ if ((prtcl_id != NULL) && (key_mgmt_dissector_table != NULL)) {
found_match = dissector_try_string(key_mgmt_dissector_table,
prtcl_id,
keymgmt_tvb, pinfo,
@@ -999,10 +999,9 @@ static void dissect_key_mgmt(tvbuff_t *tvb, packet_info * pinfo, proto_item * ti
if (found_match) {
proto_item *ti2 = proto_tree_add_item(key_tree, hf_key_mgmt_data,
- keymgmt_tvb, 0, -1, ENC_NA);
+ keymgmt_tvb, 0, -1, ENC_NA);
PROTO_ITEM_SET_HIDDEN(ti2);
- }
- else {
+ } else {
proto_tree_add_item(key_tree, hf_key_mgmt_data,
keymgmt_tvb, 0, -1, ENC_NA);
}
@@ -1010,78 +1009,78 @@ static void dissect_key_mgmt(tvbuff_t *tvb, packet_info * pinfo, proto_item * ti
}
-static void dissect_sdp_session_attribute(tvbuff_t *tvb, packet_info * pinfo, proto_item * ti){
- proto_tree *sdp_session_attribute_tree;
- gint offset, next_offset, tokenlen;
- guint8 *field_name;
+static void dissect_sdp_session_attribute(tvbuff_t *tvb, packet_info * pinfo, proto_item * ti) {
+ proto_tree *sdp_session_attribute_tree;
+ gint offset, next_offset, tokenlen;
+ guint8 *field_name;
- offset = 0;
+ offset = 0;
- sdp_session_attribute_tree = proto_item_add_subtree(ti,
- ett_sdp_session_attribute);
+ sdp_session_attribute_tree = proto_item_add_subtree(ti,
+ ett_sdp_session_attribute);
- next_offset = tvb_find_guint8(tvb,offset,-1,':');
+ next_offset = tvb_find_guint8(tvb, offset, -1, ':');
- if(next_offset == -1)
- return;
+ if (next_offset == -1)
+ return;
- tokenlen = next_offset - offset;
+ tokenlen = next_offset - offset;
- proto_tree_add_item(sdp_session_attribute_tree, hf_session_attribute_field,
- tvb, offset, tokenlen, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(sdp_session_attribute_tree, hf_session_attribute_field,
+ tvb, offset, tokenlen, ENC_ASCII|ENC_NA);
- field_name = tvb_get_ephemeral_string(tvb, offset, tokenlen);
+ field_name = tvb_get_ephemeral_string(tvb, offset, tokenlen);
- offset = next_offset + 1;
+ offset = next_offset + 1;
- if (strcmp((char*)field_name, "ipbcp") == 0) {
- offset = tvb_pbrk_guint8(tvb,offset,-1,(guint8 *)"0123456789", NULL);
+ if (strcmp((char*)field_name, "ipbcp") == 0) {
+ offset = tvb_pbrk_guint8(tvb, offset, -1,"0123456789", NULL);
- if (offset == -1)
- return;
+ if (offset == -1)
+ return;
- next_offset = tvb_find_guint8(tvb,offset,-1,' ');
+ next_offset = tvb_find_guint8(tvb, offset, -1, ' ');
- if (next_offset == -1)
- return;
+ if (next_offset == -1)
+ return;
- tokenlen = next_offset - offset;
+ tokenlen = next_offset - offset;
- proto_tree_add_item(sdp_session_attribute_tree,hf_ipbcp_version,tvb,offset,tokenlen,ENC_ASCII|ENC_NA);
+ proto_tree_add_item(sdp_session_attribute_tree, hf_ipbcp_version, tvb, offset, tokenlen, ENC_ASCII|ENC_NA);
- offset = tvb_pbrk_guint8(tvb,offset,-1,(guint8 *)"ABCDEFGHIJKLMNOPQRSTUVWXYZ", NULL);
+ offset = tvb_pbrk_guint8(tvb, offset, -1,"ABCDEFGHIJKLMNOPQRSTUVWXYZ", NULL);
- if (offset == -1)
- return;
+ if (offset == -1)
+ return;
- tokenlen = tvb_find_line_end(tvb,offset,-1, &next_offset, FALSE);
+ tokenlen = tvb_find_line_end(tvb, offset, -1, &next_offset, FALSE);
- if (tokenlen == -1)
- return;
+ if (tokenlen == -1)
+ return;
- proto_tree_add_item(sdp_session_attribute_tree,hf_ipbcp_type,tvb,offset,tokenlen,ENC_ASCII|ENC_NA);
- } else if (strcmp((char*)field_name, "key-mgmt") == 0) {
- tvbuff_t *key_tvb;
- proto_item *key_ti;
+ proto_tree_add_item(sdp_session_attribute_tree, hf_ipbcp_type, tvb, offset, tokenlen, ENC_ASCII|ENC_NA);
+ } else if (strcmp((char*)field_name, "key-mgmt") == 0) {
+ tvbuff_t *key_tvb;
+ proto_item *key_ti;
- key_tvb = tvb_new_subset_remaining(tvb, offset);
- key_ti = proto_tree_add_item(sdp_session_attribute_tree, hf_key_mgmt_att_value, key_tvb, 0, -1, ENC_ASCII|ENC_NA);
+ key_tvb = tvb_new_subset_remaining(tvb, offset);
+ key_ti = proto_tree_add_item(sdp_session_attribute_tree, hf_key_mgmt_att_value, key_tvb, 0, -1, ENC_ASCII|ENC_NA);
- dissect_key_mgmt(key_tvb, pinfo, key_ti);
- } else {
- proto_tree_add_item(sdp_session_attribute_tree, hf_session_attribute_value,
- tvb, offset, -1, ENC_ASCII|ENC_NA);
- }
+ dissect_key_mgmt(key_tvb, pinfo, key_ti);
+ } else {
+ proto_tree_add_item(sdp_session_attribute_tree, hf_session_attribute_value,
+ tvb, offset, -1, ENC_ASCII|ENC_NA);
+ }
}
/* Dissect media description */
static void
dissect_sdp_media(tvbuff_t *tvb, proto_item *ti,
- transport_info_t *transport_info){
+ transport_info_t *transport_info) {
proto_tree *sdp_media_tree;
- gint offset, next_offset, tokenlen, idx;
- guint8 *media_format;
+ gint offset, next_offset, tokenlen, idx;
+ guint8 *media_format;
offset = 0;
@@ -1089,11 +1088,11 @@ dissect_sdp_media(tvbuff_t *tvb, proto_item *ti,
msrp_transport_address_set = FALSE;
/* Create tree for media session */
- sdp_media_tree = proto_item_add_subtree(ti,ett_sdp_media);
+ sdp_media_tree = proto_item_add_subtree(ti, ett_sdp_media);
- next_offset = tvb_find_guint8(tvb,offset, -1, ' ');
+ next_offset = tvb_find_guint8(tvb, offset, -1, ' ');
- if(next_offset == -1)
+ if (next_offset == -1)
return;
tokenlen = next_offset - offset;
@@ -1106,13 +1105,13 @@ dissect_sdp_media(tvbuff_t *tvb, proto_item *ti,
offset = next_offset + 1;
- next_offset = tvb_find_guint8(tvb,offset, -1, ' ');
- if(next_offset == -1)
+ next_offset = tvb_find_guint8(tvb, offset, -1, ' ');
+ if (next_offset == -1)
return;
tokenlen = next_offset - offset;
- next_offset = tvb_find_guint8(tvb,offset, tokenlen, '/');
+ next_offset = tvb_find_guint8(tvb, offset, tokenlen, '/');
- if(next_offset != -1){
+ if (next_offset != -1) {
tokenlen = next_offset - offset;
/* Save port info */
transport_info->media_port[transport_info->media_count] = (char*)tvb_get_ephemeral_string(tvb, offset, tokenlen);
@@ -1120,17 +1119,17 @@ dissect_sdp_media(tvbuff_t *tvb, proto_item *ti,
proto_tree_add_uint(sdp_media_tree, hf_media_port, tvb, offset, tokenlen,
atoi((char*)tvb_get_ephemeral_string(tvb, offset, tokenlen)));
offset = next_offset + 1;
- next_offset = tvb_find_guint8(tvb,offset, -1, ' ');
- if(next_offset == -1)
+ next_offset = tvb_find_guint8(tvb, offset, -1, ' ');
+ if (next_offset == -1)
return;
tokenlen = next_offset - offset;
proto_tree_add_item(sdp_media_tree, hf_media_portcount, tvb, offset,
tokenlen, ENC_ASCII|ENC_NA);
offset = next_offset + 1;
} else {
- next_offset = tvb_find_guint8(tvb,offset, -1, ' ');
+ next_offset = tvb_find_guint8(tvb, offset, -1, ' ');
- if(next_offset == -1)
+ if (next_offset == -1)
return;
tokenlen = next_offset - offset;
/* Save port info */
@@ -1142,9 +1141,9 @@ dissect_sdp_media(tvbuff_t *tvb, proto_item *ti,
offset = next_offset + 1;
}
- next_offset = tvb_find_guint8(tvb,offset,-1,' ');
+ next_offset = tvb_find_guint8(tvb, offset, -1, ' ');
- if( next_offset == -1)
+ if ( next_offset == -1)
return;
tokenlen = next_offset - offset;
@@ -1157,9 +1156,9 @@ dissect_sdp_media(tvbuff_t *tvb, proto_item *ti,
do {
offset = next_offset + 1;
- next_offset = tvb_find_guint8(tvb,offset,-1,' ');
+ next_offset = tvb_find_guint8(tvb, offset, -1, ' ');
- if(next_offset == -1){
+ if (next_offset == -1) {
tokenlen = tvb_length_remaining(tvb, offset); /* End of tvbuff */
if (tokenlen == 0)
break; /* Nothing more left */
@@ -1184,7 +1183,7 @@ dissect_sdp_media(tvbuff_t *tvb, proto_item *ti,
/* Increase the count of media channels, but don't walk off the end
of the arrays. */
- if (transport_info->media_count < (SDP_MAX_RTP_CHANNELS-1)){
+ if (transport_info->media_count < (SDP_MAX_RTP_CHANNELS-1)) {
transport_info->media_count++;
}
@@ -1203,68 +1202,68 @@ ascii_bytes_to_tvb(tvbuff_t *tvb, packet_info *pinfo, gint len, gchar *msg)
guint8 *buf = g_malloc(10240);
/* arbitrary maximum length */
- if(len<20480){
+ if (len < 20480) {
int i;
tvbuff_t *bytes_tvb;
/* first, skip to where the encoded pdu starts, this is
the first hex digit after the '=' char.
*/
- while(1){
- if((*msg==0)||(*msg=='\n')){
+ while (1) {
+ if ((*msg == 0) || (*msg == '\n')) {
return NULL;
}
- if(*msg=='='){
+ if (*msg == '=') {
msg++;
break;
}
msg++;
}
- while(1){
- if((*msg==0)||(*msg=='\n')){
+ while (1) {
+ if ((*msg == 0) || (*msg == '\n')) {
return NULL;
}
- if( ((*msg>='0')&&(*msg<='9'))
- || ((*msg>='a')&&(*msg<='f'))
- || ((*msg>='A')&&(*msg<='F'))){
+ if ( ((*msg >= '0') && (*msg <= '9'))
+ || ((*msg >= 'a') && (*msg <= 'f'))
+ || ((*msg >= 'A') && (*msg <= 'F'))) {
break;
}
msg++;
}
- i=0;
- while( ((*msg>='0')&&(*msg<='9'))
- ||((*msg>='a')&&(*msg<='f'))
- ||((*msg>='A')&&(*msg<='F')) ){
+ i = 0;
+ while (((*msg >= '0') && (*msg <= '9'))
+ || ((*msg >= 'a') && (*msg <= 'f'))
+ || ((*msg >= 'A') && (*msg <= 'F'))) {
int val;
- if((*msg>='0')&&(*msg<='9')){
- val=(*msg)-'0';
- } else if((*msg>='a')&&(*msg<='f')){
- val=(*msg)-'a'+10;
- } else if((*msg>='A')&&(*msg<='F')){
- val=(*msg)-'A'+10;
+ if ((*msg >= '0') && (*msg <= '9')) {
+ val = (*msg)-'0';
+ } else if ((*msg >= 'a') && (*msg <= 'f')) {
+ val = (*msg)-'a'+10;
+ } else if ((*msg >= 'A') && (*msg <= 'F')) {
+ val = (*msg)-'A'+10;
} else {
return NULL;
}
- val<<=4;
+ val <<= 4;
msg++;
- if((*msg>='0')&&(*msg<='9')){
- val|=(*msg)-'0';
- } else if((*msg>='a')&&(*msg<='f')){
- val|=(*msg)-'a'+10;
- } else if((*msg>='A')&&(*msg<='F')){
- val|=(*msg)-'A'+10;
+ if ((*msg >= '0') && (*msg <= '9')) {
+ val |= (*msg)-'0';
+ } else if ((*msg >= 'a') && (*msg <= 'f')) {
+ val |= (*msg)-'a'+10;
+ } else if ((*msg >= 'A') && (*msg <= 'F')) {
+ val |= (*msg)-'A'+10;
} else {
return NULL;
}
msg++;
- buf[i]=(guint8)val;
+ buf[i] = (guint8)val;
i++;
}
- if(i==0){
+ if (i == 0) {
return NULL;
}
- bytes_tvb = tvb_new_child_real_data(tvb, buf,i,i);
+ bytes_tvb = tvb_new_child_real_data(tvb, buf, i, i);
tvb_set_free_cb(bytes_tvb, g_free);
add_new_data_source(pinfo, bytes_tvb, "ASCII bytes to tvb");
return bytes_tvb;
@@ -1315,24 +1314,24 @@ static const value_string h264_packetization_mode_vals[] =
* TODO: Make this a more generic routine to dissect fmtp parameters depending on media types
*/
static void
-decode_sdp_fmtp(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint offset, gint tokenlen, char *mime_type){
- gint next_offset;
- gint end_offset;
- guint8 *field_name;
- gchar *format_specific_parameter;
- proto_item *item;
- tvbuff_t * volatile data_tvb;
+decode_sdp_fmtp(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint offset, gint tokenlen, char *mime_type) {
+ gint next_offset;
+ gint end_offset;
+ guint8 *field_name;
+ gchar *format_specific_parameter;
+ proto_item *item;
+ tvbuff_t * volatile data_tvb;
end_offset = offset + tokenlen;
- /*
- proto_tree_add_text(tree, tvb, offset, tokenlen, "Debug; Analysed string: '%s'",
- tvb_get_ephemeral_string(tvb, offset, tokenlen));
- */
+#if 0
+ proto_tree_add_text(tree, tvb, offset, tokenlen, "Debug; Analysed string: '%s'",
+ tvb_get_ephemeral_string(tvb, offset, tokenlen));
+#endif
/* Look for an '=' within this value - this may indicate that there is a
profile-level-id parameter to find if the MPEG4 media type is in use */
- next_offset = tvb_find_guint8(tvb,offset,-1,'=');
+ next_offset = tvb_find_guint8(tvb, offset, -1, '=');
if (next_offset == -1)
{
/* Give up (and avoid exception) if '=' not found */
@@ -1342,12 +1341,13 @@ decode_sdp_fmtp(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint offset
/* Find the name of the parameter */
tokenlen = next_offset - offset;
field_name = tvb_get_ephemeral_string(tvb, offset, tokenlen);
- /*proto_tree_add_text(tree, tvb, offset, tokenlen, "Debug; MIMEtype '%s'Parameter name: '%s'", mime_type, field_name); */
-
+#if 0
+ proto_tree_add_text(tree, tvb, offset, tokenlen, "Debug; MIMEtype '%s'Parameter name: '%s'", mime_type, field_name); */
+#endif
offset = next_offset;
/* Dissect the MPEG4 profile-level-id parameter if present */
- if (mime_type != NULL && g_ascii_strcasecmp(mime_type, "MP4V-ES") == 0) {
+ if ((mime_type != NULL) && (g_ascii_strcasecmp(mime_type, "MP4V-ES") == 0)) {
if (strcmp((char*)field_name, "profile-level-id") == 0) {
offset++;
tokenlen = end_offset - offset;
@@ -1361,14 +1361,15 @@ decode_sdp_fmtp(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint offset
format_specific_parameter = tvb_get_ephemeral_string(tvb, offset, tokenlen);
/* ascii_bytes_to_tvb requires the "=" to be in the buffer */
data_tvb = ascii_bytes_to_tvb(tvb, pinfo, tokenlen, format_specific_parameter);
- if(mp4ves_handle && data_tvb){
+ if (mp4ves_handle && data_tvb) {
dissect_mp4ves_config(data_tvb, pinfo, tree);
}
}
}
/* Dissect the H263-2000 profile parameter if present */
- if ((mime_type != NULL && g_ascii_strcasecmp(mime_type, "H263-2000") == 0)||(mime_type != NULL && g_ascii_strcasecmp(mime_type, "H263-1998") == 0)) {
+ if (((mime_type != NULL) && (g_ascii_strcasecmp(mime_type, "H263-2000") == 0)) ||
+ ((mime_type != NULL) && (g_ascii_strcasecmp(mime_type, "H263-1998") == 0))) {
if (strcmp((char*)field_name, "profile") == 0) {
offset++;
tokenlen = end_offset - offset;
@@ -1376,7 +1377,7 @@ decode_sdp_fmtp(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint offset
item = proto_tree_add_uint(tree, hf_sdp_fmtp_h263_profile, tvb, offset, tokenlen,
atol((char*)format_specific_parameter));
PROTO_ITEM_SET_GENERATED(item);
- } else if(strcmp((char*)field_name, "level") == 0) {
+ } else if (strcmp((char*)field_name, "level") == 0) {
offset++;
tokenlen = end_offset - offset;
format_specific_parameter = tvb_get_ephemeral_string(tvb, offset, tokenlen);
@@ -1399,7 +1400,7 @@ decode_sdp_fmtp(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint offset
* in bit-significance order, starting from the
* most significant bit, and 3) level_idc.
*/
- if (mime_type != NULL && g_ascii_strcasecmp(mime_type, "H264") == 0) {
+ if ((mime_type != NULL) && (g_ascii_strcasecmp(mime_type, "H264") == 0)) {
if (strcmp(field_name, "profile-level-id") == 0) {
int length = 0;
@@ -1407,28 +1408,27 @@ decode_sdp_fmtp(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint offset
tokenlen = end_offset - offset;
format_specific_parameter = tvb_get_ephemeral_string(tvb, offset, tokenlen);
data_tvb = ascii_bytes_to_tvb(tvb, pinfo, tokenlen, format_specific_parameter);
- if(!data_tvb){
- proto_tree_add_text(tree, tvb, offset, tokenlen, "Could not convert '%s' to 3 bytes",format_specific_parameter);
+ if (!data_tvb) {
+ proto_tree_add_text(tree, tvb, offset, tokenlen, "Could not convert '%s' to 3 bytes", format_specific_parameter);
return;
}
length = tvb_length(data_tvb);
- if (length == 3){
- if(h264_handle && data_tvb){
+ if (length == 3) {
+ if (h264_handle && data_tvb) {
dissect_h264_profile(data_tvb, pinfo, tree);
}
- }else{
+ } else {
item = proto_tree_add_text(tree, tvb, offset, tokenlen, "Incorrectly coded, must be three bytes");
PROTO_ITEM_SET_GENERATED(item);
}
- }else if (strcmp(field_name, "packetization-mode") == 0) {
+ } else if (strcmp(field_name, "packetization-mode") == 0) {
offset++;
tokenlen = end_offset - offset;
format_specific_parameter = tvb_get_ephemeral_string(tvb, offset, tokenlen);
item = proto_tree_add_uint(tree, hf_sdp_h264_packetization_mode, tvb, offset, tokenlen,
atol((char*)format_specific_parameter));
PROTO_ITEM_SET_GENERATED(item);
-
- }else if (strcmp(field_name, "sprop-parameter-sets") == 0) {
+ } else if (strcmp(field_name, "sprop-parameter-sets") == 0) {
/* The value of the parameter is the
base64 [6] representation of the initial
parameter set NAL units as specified in
@@ -1439,26 +1439,26 @@ decode_sdp_fmtp(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint offset
pair of parameter sets in the list.
*/
gchar *data_p = NULL;
- gint comma_offset;
+ gint comma_offset;
/* Move past '=' */
offset++;
- comma_offset = tvb_find_guint8(tvb,offset,-1,',');
- if (comma_offset != -1){
+ comma_offset = tvb_find_guint8(tvb, offset, -1, ',');
+ if (comma_offset != -1) {
tokenlen = comma_offset - offset;
- }else{
+ } else {
tokenlen = end_offset - offset;
}
data_p = tvb_get_ephemeral_string(tvb, offset, tokenlen);
proto_tree_add_text(tree, tvb, offset, tokenlen, "NAL unit 1 string: %s", data_p);
- /* proto_tree_add_text(tree, tvb, offset, tokenlen, "String %s",data_p); */
+ /* proto_tree_add_text(tree, tvb, offset, tokenlen, "String %s", data_p); */
data_tvb = base64_to_tvb(tvb, data_p);
add_new_data_source(pinfo, data_tvb, "h264 prop-parameter-sets");
- if(h264_handle && data_tvb){
+ if (h264_handle && data_tvb) {
TRY {
dissect_h264_nal_unit(data_tvb, pinfo, tree);
}
@@ -1469,11 +1469,11 @@ decode_sdp_fmtp(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint offset
show_reported_bounds_error(tvb, pinfo, tree);
}
ENDTRY;
- if (comma_offset != -1){
+ if (comma_offset != -1) {
/* Second NAL unit */
- offset = comma_offset +1;
+ offset = comma_offset +1;
tokenlen = end_offset - offset;
- data_p = tvb_get_ephemeral_string(tvb, offset, tokenlen);
+ data_p = tvb_get_ephemeral_string(tvb, offset, tokenlen);
proto_tree_add_text(tree, tvb, offset, tokenlen, "NAL unit 2 string: %s", data_p);
data_tvb = base64_to_tvb(tvb, data_p);
add_new_data_source(pinfo, data_tvb, "h264 prop-parameter-sets 2");
@@ -1486,7 +1486,7 @@ decode_sdp_fmtp(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint offset
}
typedef struct {
- const char *name;
+ const char *name;
} sdp_names_t;
#define SDP_RTPMAP 1
@@ -1509,436 +1509,450 @@ static gint find_sdp_media_attribute_names(tvbuff_t *tvb, int offset, guint len)
guint i;
for (i = 1; i < array_length(sdp_media_attribute_names); i++) {
- if (len == strlen(sdp_media_attribute_names[i].name) &&
- tvb_strncaseeql(tvb, offset, sdp_media_attribute_names[i].name, len) == 0)
+ if ((len == strlen(sdp_media_attribute_names[i].name)) &&
+ (tvb_strncaseeql(tvb, offset, sdp_media_attribute_names[i].name, len) == 0))
return i;
}
return -1;
}
-static void dissect_sdp_media_attribute(tvbuff_t *tvb, packet_info *pinfo, proto_item * ti, int length, transport_info_t *transport_info){
- proto_tree *sdp_media_attribute_tree, *parameter_item;
- proto_item *fmtp_item, *media_format_item, *parameter_tree;
- proto_tree *fmtp_tree;
- gint offset, next_offset, tokenlen, n, colon_offset;
- /*??guint8 *field_name;*/
- guint8 *payload_type;
- guint8 *attribute_value;
- gint *key;
- guint8 pt;
- gint sdp_media_attrbute_code;
- const char *msrp_res = "msrp://";
- const char *h324ext_h223lcparm = "h324ext/h223lcparm";
- gboolean has_more_pars = TRUE;
- tvbuff_t *h245_tvb;
- encoding_name_and_rate_t *encoding_name_and_rate;
- guint8 master_key_length = 0, master_salt_length = 0;
-
- offset = 0;
-
- /* Create attribute tree */
- sdp_media_attribute_tree = proto_item_add_subtree(ti,
- ett_sdp_media_attribute);
- /* Find end of field */
- colon_offset = tvb_find_guint8(tvb,offset,-1,':');
-
- if(colon_offset == -1)
- return;
+static void dissect_sdp_media_attribute(tvbuff_t *tvb, packet_info *pinfo, proto_item * ti, int length, transport_info_t *transport_info) {
+ proto_tree *sdp_media_attribute_tree, *parameter_item;
+ proto_item *fmtp_item, *media_format_item, *parameter_tree;
+ proto_tree *fmtp_tree;
+ gint offset, next_offset, tokenlen, n, colon_offset;
+ /*??guint8 *field_name;*/
+ guint8 *payload_type;
+ guint8 *attribute_value;
+ gint *key;
+ guint8 pt;
+ gint sdp_media_attrbute_code;
+ const char *msrp_res = "msrp://";
+ const char *h324ext_h223lcparm = "h324ext/h223lcparm";
+ gboolean has_more_pars = TRUE;
+ tvbuff_t *h245_tvb;
+ guint8 master_key_length = 0, master_salt_length = 0;
+ encoding_name_and_rate_t *encoding_name_and_rate;
- /* Attribute field name is token before ':' */
- tokenlen = colon_offset - offset;
- proto_tree_add_item(sdp_media_attribute_tree,
- hf_media_attribute_field,
- tvb, offset, tokenlen, ENC_ASCII|ENC_NA);
- /*??field_name = tvb_get_ephemeral_string(tvb, offset, tokenlen);*/
- sdp_media_attrbute_code = find_sdp_media_attribute_names(tvb, offset, tokenlen);
+ offset = 0;
- /* Skip colon */
- offset = colon_offset + 1;
- /* skip leading wsp */
- offset = tvb_skip_wsp(tvb,offset,tvb_length_remaining(tvb,offset));
+ /* Create attribute tree */
+ sdp_media_attribute_tree = proto_item_add_subtree(ti,
+ ett_sdp_media_attribute);
+ /* Find end of field */
+ colon_offset = tvb_find_guint8(tvb, offset, -1, ':');
- /* Value is the remainder of the line */
- attribute_value = tvb_get_ephemeral_string(tvb, offset, tvb_length_remaining(tvb, offset));
+ if (colon_offset == -1)
+ return;
+ /* Attribute field name is token before ':' */
+ tokenlen = colon_offset - offset;
+ proto_tree_add_item(sdp_media_attribute_tree,
+ hf_media_attribute_field,
+ tvb, offset, tokenlen, ENC_ASCII|ENC_NA);
+ /*??field_name = tvb_get_ephemeral_string(tvb, offset, tokenlen);*/
+ sdp_media_attrbute_code = find_sdp_media_attribute_names(tvb, offset, tokenlen);
+ /* Skip colon */
+ offset = colon_offset + 1;
+ /* skip leading wsp */
+ offset = tvb_skip_wsp(tvb, offset, tvb_length_remaining(tvb, offset));
- /*********************************************/
- /* Special parsing for some field name types */
+ /* Value is the remainder of the line */
+ attribute_value = tvb_get_ephemeral_string(tvb, offset, tvb_length_remaining(tvb, offset));
- switch (sdp_media_attrbute_code){
- case SDP_RTPMAP:
- /* decode the rtpmap to see if it is DynamicPayload to dissect them automatic */
- next_offset = tvb_find_guint8(tvb,offset,-1,' ');
- if(next_offset == -1)
- return;
- tokenlen = next_offset - offset;
+ /*********************************************/
+ /* Special parsing for some field name types */
- proto_tree_add_item(sdp_media_attribute_tree, hf_media_format, tvb,
- offset, tokenlen, ENC_ASCII|ENC_NA);
+ switch (sdp_media_attrbute_code) {
+ case SDP_RTPMAP:
+ /* decode the rtpmap to see if it is DynamicPayload to dissect them automatic */
+ next_offset = tvb_find_guint8(tvb, offset, -1, ' ');
- payload_type = tvb_get_ephemeral_string(tvb, offset, tokenlen);
+ if (next_offset == -1)
+ return;
- offset = next_offset + 1;
+ tokenlen = next_offset - offset;
- next_offset = tvb_find_guint8(tvb,offset,-1,'/');
+ proto_tree_add_item(sdp_media_attribute_tree, hf_media_format, tvb,
+ offset, tokenlen, ENC_ASCII|ENC_NA);
- if(next_offset == -1){
- return;
- }
+ payload_type = tvb_get_ephemeral_string(tvb, offset, tokenlen);
- tokenlen = next_offset - offset;
+ offset = next_offset + 1;
- proto_tree_add_item(sdp_media_attribute_tree, hf_media_encoding_name, tvb,
- offset, tokenlen, ENC_ASCII|ENC_NA);
+ next_offset = tvb_find_guint8(tvb, offset, -1, '/');
- key=g_malloc( sizeof(gint) );
- *key=atol((char*)payload_type);
- pt = atoi((char*)payload_type);
- if (pt >= SDP_NO_OF_PT) {
- return; /* Invalid */
- }
- transport_info->encoding_name[pt] = (char*)tvb_get_ephemeral_string(tvb, offset, tokenlen);
-
- next_offset = next_offset + 1;
- offset = next_offset;
- while (length-1 >= next_offset){
- if(!isdigit(tvb_get_guint8(tvb, next_offset)))
- break;
- next_offset++;
- }
- tokenlen = next_offset - offset;
- proto_tree_add_item(sdp_media_attribute_tree, hf_media_sample_rate, tvb,
- offset, tokenlen, ENC_ASCII|ENC_NA);
- transport_info->sample_rate[pt] = atoi(tvb_get_ephemeral_string(tvb, offset, tokenlen));
- /* As per RFC2327 it is possible to have multiple Media Descriptions ("m=").
- For example:
-
- a=rtpmap:101 G726-32/8000
- m=audio 49170 RTP/AVP 0 97
- a=rtpmap:97 telephone-event/8000
- m=audio 49172 RTP/AVP 97 101
- a=rtpmap:97 G726-24/8000
-
- The Media attributes ("a="s) after the "m=" only apply for that "m=".
- If there is an "a=" before the first "m=", that attribute applies for
- all the session (all the "m="s).
- */
-
- /* so, if this "a=" appear before any "m=", we add it to all the dynamic
- * hash tables
- */
- if (transport_info->media_count == 0) {
- for (n=0; n < SDP_MAX_RTP_CHANNELS; n++) {
- encoding_name_and_rate = g_malloc( sizeof(encoding_name_and_rate_t));
- encoding_name_and_rate->encoding_name = g_strdup(transport_info->encoding_name[pt]);
- encoding_name_and_rate->sample_rate = transport_info->sample_rate[pt];
- if (n==0){
- g_hash_table_insert(transport_info->media[n].rtp_dyn_payload,
- key, encoding_name_and_rate);
- }
- else { /* we create a new key and encoding_name to assign to the other hash tables */
- gint *key2;
- key2=g_malloc( sizeof(gint) );
- *key2=atol((char*)payload_type);
- g_hash_table_insert(transport_info->media[n].rtp_dyn_payload,
- key2, encoding_name_and_rate);
- }
- }
- return;
- /* if the "a=" is after an "m=", only apply to this "m=" */
- }else
- /* in case there is an overflow in SDP_MAX_RTP_CHANNELS, we keep always the last "m=" */
- encoding_name_and_rate = g_malloc( sizeof(encoding_name_and_rate_t));
+ if (next_offset == -1) {
+ return;
+ }
+
+ tokenlen = next_offset - offset;
+
+ proto_tree_add_item(sdp_media_attribute_tree, hf_media_encoding_name, tvb,
+ offset, tokenlen, ENC_ASCII|ENC_NA);
+
+ pt = atoi((char*)payload_type);
+ if (pt >= SDP_NO_OF_PT) {
+ return; /* Invalid */
+ }
+
+ key = g_malloc(sizeof (gint));
+ *key = atol((char*)payload_type);
+
+ transport_info->encoding_name[pt] = (char*)tvb_get_ephemeral_string(tvb, offset, tokenlen);
+ next_offset = next_offset + 1;
+ offset = next_offset;
+ while (length-1 >= next_offset) {
+ if (!isdigit(tvb_get_guint8(tvb, next_offset)))
+ break;
+ next_offset++;
+ }
+ tokenlen = next_offset - offset;
+ proto_tree_add_item(sdp_media_attribute_tree, hf_media_sample_rate, tvb,
+ offset, tokenlen, ENC_ASCII|ENC_NA);
+ transport_info->sample_rate[pt] = atoi(tvb_get_ephemeral_string(tvb, offset, tokenlen));
+ /* As per RFC2327 it is possible to have multiple Media Descriptions ("m=").
+ For example:
+
+ a=rtpmap:101 G726-32/8000
+ m=audio 49170 RTP/AVP 0 97
+ a=rtpmap:97 telephone-event/8000
+ m=audio 49172 RTP/AVP 97 101
+ a=rtpmap:97 G726-24/8000
+
+ The Media attributes ("a="s) after the "m=" only apply for that "m=".
+ If there is an "a=" before the first "m=", that attribute applies for
+ all the session (all the "m="s).
+ */
+
+ /* so, if this "a=" appear before any "m=", we add it to all the dynamic
+ * hash tables
+ */
+ if (transport_info->media_count == 0) {
+ for (n = 0; n < SDP_MAX_RTP_CHANNELS; n++) {
+ encoding_name_and_rate = g_malloc(sizeof (encoding_name_and_rate_t));
encoding_name_and_rate->encoding_name = g_strdup(transport_info->encoding_name[pt]);
encoding_name_and_rate->sample_rate = transport_info->sample_rate[pt];
- if (transport_info->media_count == SDP_MAX_RTP_CHANNELS-1)
- g_hash_table_insert(transport_info->media[ transport_info->media_count ].rtp_dyn_payload,
- key, encoding_name_and_rate);
- else
- g_hash_table_insert(transport_info->media[ transport_info->media_count-1 ].rtp_dyn_payload,
- key, encoding_name_and_rate);
- break;
- case SDP_FMTP:
- if(sdp_media_attribute_tree){
- guint8 media_format;
- /* Reading the Format parameter(fmtp) */
- /* Skip leading space, if any */
- offset = tvb_skip_wsp(tvb,offset,tvb_length_remaining(tvb,offset));
- /* Media format extends to the next space */
- next_offset = tvb_find_guint8(tvb,offset,-1,' ');
-
- if(next_offset == -1)
- return;
+ if (n == 0) {
+ g_hash_table_insert(transport_info->media[n].rtp_dyn_payload,
+ key, encoding_name_and_rate);
+ } else { /* we create a new key and encoding_name to assign to the other hash tables */
+ gint *key2;
+ key2 = g_malloc(sizeof (gint));
+ *key2 = atol((char*)payload_type);
+ g_hash_table_insert(transport_info->media[n].rtp_dyn_payload,
+ key2, encoding_name_and_rate);
+ }
+ }
+ return;
+ /* if the "a=" is after an "m=", only apply to this "m=" */
+ } else
+ /* in case there is an overflow in SDP_MAX_RTP_CHANNELS, we keep always the last "m=" */
+ encoding_name_and_rate = g_malloc(sizeof (encoding_name_and_rate_t));
+
+ encoding_name_and_rate->encoding_name = g_strdup(transport_info->encoding_name[pt]);
+ encoding_name_and_rate->sample_rate = transport_info->sample_rate[pt];
+ if (transport_info->media_count == SDP_MAX_RTP_CHANNELS-1)
+ g_hash_table_insert(transport_info->media[ transport_info->media_count ].rtp_dyn_payload,
+ key, encoding_name_and_rate);
+ else
+ g_hash_table_insert(transport_info->media[ transport_info->media_count-1 ].rtp_dyn_payload,
+ key, encoding_name_and_rate);
+ break;
+ case SDP_FMTP:
+ if (sdp_media_attribute_tree) {
+ guint8 media_format;
+ /* Reading the Format parameter(fmtp) */
+ /* Skip leading space, if any */
+ offset = tvb_skip_wsp(tvb, offset, tvb_length_remaining(tvb, offset));
+ /* Media format extends to the next space */
+ next_offset = tvb_find_guint8(tvb, offset, -1, ' ');
+
+ if (next_offset == -1)
+ return;
- tokenlen = next_offset - offset;
+ tokenlen = next_offset - offset;
- media_format_item = proto_tree_add_item(sdp_media_attribute_tree,
- hf_media_format, tvb, offset,
- tokenlen, ENC_ASCII|ENC_NA);
- media_format = atoi((char*)tvb_get_ephemeral_string(tvb, offset, tokenlen));
- if (media_format >= SDP_NO_OF_PT) {
- return; /* Invalid */
- }
+ media_format_item = proto_tree_add_item(sdp_media_attribute_tree,
+ hf_media_format, tvb, offset,
+ tokenlen, ENC_ASCII|ENC_NA);
+ media_format = atoi((char*)tvb_get_ephemeral_string(tvb, offset, tokenlen));
+ if (media_format >= SDP_NO_OF_PT) {
+ return; /* Invalid */
+ }
+
+ /* Append encoding name to format if known */
+ proto_item_append_text(media_format_item, " [%s]",
+ transport_info->encoding_name[media_format]);
- /* Append encoding name to format if known */
- proto_item_append_text(media_format_item, " [%s]",
- transport_info->encoding_name[media_format]);
+#if 0 /* XXX: ?? */
+ payload_type = tvb_get_ephemeral_string(tvb, offset, tokenlen);
+#endif
+ /* Move offset past the payload type */
+ offset = next_offset + 1;
- /*??payload_type = tvb_get_ephemeral_string(tvb, offset, tokenlen);*/
- /* Move offset past the payload type */
- offset = next_offset + 1;
+ while (has_more_pars == TRUE) {
+ next_offset = tvb_find_guint8(tvb, offset, -1, ';');
+ offset = tvb_skip_wsp(tvb, offset, tvb_length_remaining(tvb, offset));
- while(has_more_pars==TRUE){
- next_offset = tvb_find_guint8(tvb,offset,-1,';');
- offset = tvb_skip_wsp(tvb,offset,tvb_length_remaining(tvb,offset));
+ if (next_offset == -1) {
+ has_more_pars = FALSE;
+ next_offset= tvb_length(tvb);
+ }
- if(next_offset == -1){
- has_more_pars = FALSE;
- next_offset= tvb_length(tvb);
- }
+ /* There are at least 2 - add the first parameter */
+ tokenlen = next_offset - offset;
+ fmtp_item = proto_tree_add_item(sdp_media_attribute_tree,
+ hf_media_format_specific_parameter, tvb,
+ offset, tokenlen, ENC_ASCII|ENC_NA);
- /* There are at least 2 - add the first parameter */
- tokenlen = next_offset - offset;
- fmtp_item = proto_tree_add_item(sdp_media_attribute_tree,
- hf_media_format_specific_parameter, tvb,
- offset, tokenlen, ENC_ASCII|ENC_NA);
+ fmtp_tree = proto_item_add_subtree(fmtp_item, ett_sdp_fmtp);
- fmtp_tree = proto_item_add_subtree(fmtp_item, ett_sdp_fmtp);
+ decode_sdp_fmtp(fmtp_tree, tvb, pinfo, offset, tokenlen,
+ transport_info->encoding_name[media_format]);
- decode_sdp_fmtp(fmtp_tree, tvb, pinfo, offset, tokenlen,
- transport_info->encoding_name[media_format]);
+ /* Move offset past "; " and onto firts char */
+ offset = next_offset + 1;
+ }
+ }
+ break;
+ case SDP_PATH:
+ /* msrp attributes that contain address needed for conversation */
+ /* RFC 4975
+ * path = path-label ":" path-list
+ * path-label = "path"
+ * path-list= MSRP-URI *(SP MSRP-URI)
+ * MSRP-URI = msrp-scheme "://" authority
+ * ["/" session-id] ";" transport *( ";" URI-parameter)
+ * ; authority as defined in RFC3986
+ *
+ * msrp-scheme = "msrp" / "msrps"
+ * RFC 3986
+ * The authority component is preceded by a double slash ("//") and is terminated by
+ * the next slash ("/"), question mark ("?"), or number sign ("#") character, or by
+ * the end of the URI.
+ */
- /* Move offset past "; " and onto firts char */
- offset = next_offset + 1;
- }
+ /* Check for "msrp://" */
+ if (strncmp((char*)attribute_value, msrp_res, strlen(msrp_res)) == 0) {
+ int address_offset, port_offset, port_end_offset;
+
+ /* Address starts here */
+ address_offset = offset + (int)strlen(msrp_res);
+
+ /* Port is after next ':' */
+ port_offset = tvb_find_guint8(tvb, address_offset, -1, ':');
+ /* Check if port is present if not skipp */
+ if (port_offset!= -1) {
+ /* Port ends with '/' */
+ port_end_offset = tvb_find_guint8(tvb, port_offset, -1, '/');
+
+ /* Attempt to convert address */
+ if (inet_pton(AF_INET,
+ (char*)tvb_get_ephemeral_string(tvb, address_offset, port_offset-address_offset),
+ &msrp_ipaddr) > 0) {
+ /* Get port number */
+ msrp_port_number = atoi((char*)tvb_get_ephemeral_string(tvb, port_offset + 1, port_end_offset - port_offset - 1));
+ /* Set flag so this info can be used */
+ msrp_transport_address_set = TRUE;
}
+ }
+ }
+ break;
+ case SDP_H248_ITEM:
+ /* Decode h248 item ITU-T Rec. H.248.12 (2001)/Amd.1 (11/2002)*/
+ if (strncmp((char*)attribute_value, h324ext_h223lcparm, strlen(msrp_res)) == 0) {
+ /* A.5.1.3 H.223 Logical channel parameters
+ * This property indicates the H.245
+ * H223LogicalChannelsParameters structure encoded by applying the PER specified in
+ * ITU-T Rec. X.691. Value encoded as per A.5.1.2. For text encoding the mechanism defined
+ * in ITU-T Rec. H.248.15 is used.
+ */
+ gint len;
+ asn1_ctx_t actx;
+
+ len = (gint)strlen(attribute_value);
+ h245_tvb = ascii_bytes_to_tvb(tvb, pinfo, len, attribute_value);
+ /* arbitrary maximum length */
+ /* should go through a handle, however, the two h245 entry
+ points are different, one is over tpkt and the other is raw
+ */
+ if (h245_tvb) {
+ asn1_ctx_init(&actx, ASN1_ENC_PER, TRUE, pinfo);
+ dissect_h245_H223LogicalChannelParameters(h245_tvb, 0, &actx,
+ sdp_media_attribute_tree,
+ hf_SDPh223LogicalChannelParameters);
+ }
+ }
+ break;
+ case SDP_CRYPTO:
+ /* http://tools.ietf.org/html/rfc4568
+ * 9.1. Generic "Crypto" Attribute Grammar
+ *
+ * The ABNF grammar for the crypto attribute is defined below:
+ *
+ * "a=crypto:" tag 1*WSP crypto-suite 1*WSP key-params
+ * *(1*WSP session-param)
+ *
+ * tag = 1*9DIGIT
+ * crypto-suite = 1*(ALPHA / DIGIT / "_")
+ *
+ * key-params = key-param *(";" key-param)
+ * key-param = key-method ":" key-info
+ * key-method = "inline" / key-method-ext
+ * key-method-ext = 1*(ALPHA / DIGIT / "_")
+ * key-info = 1*(%x21-3A / %x3C-7E) ; visible (printing) chars
+ * ; except semi-colon
+ * session-param = 1*(VCHAR) ; visible (printing) characters
+ *
+ * where WSP, ALPHA, DIGIT, and VCHAR are defined in [RFC4234].
+ *
+ */
+
+ /* We are at the first colon */
+ /* tag */
+ next_offset = tvb_find_guint8(tvb, offset, -1, ' ');
+ tokenlen = next_offset - offset;
+ proto_tree_add_uint(sdp_media_attribute_tree, hf_sdp_crypto_tag, tvb, offset, tokenlen,
+ atoi((char*)tvb_get_ephemeral_string(tvb, offset, tokenlen)));
+ offset = next_offset + 1;
+
+ /* crypto-suite */
+ next_offset = tvb_find_guint8(tvb, offset, -1, ' ');
+ tokenlen = next_offset - offset;
+ proto_tree_add_item(sdp_media_attribute_tree, hf_sdp_crypto_crypto_suite,
+ tvb, offset, tokenlen, ENC_ASCII|ENC_NA);
+ if (tvb_strncaseeql(tvb, offset, "AES_CM_128_HMAC_SHA1_80", tokenlen) == 0) {
+
+ /* XXX This may only work in simple cases */
+ if (transport_info->encryption_algorithm == SRTP_ENC_ALG_NOT_SET) {
+ transport_info->encryption_algorithm = SRTP_ENC_ALG_AES_CM;
+ transport_info->auth_algorithm = SRTP_AUTH_ALG_HMAC_SHA1;
+ /* number of octets used for the Auth Tag in the RTP payload */
+ transport_info->auth_tag_len = 10;
+ }
+ master_key_length = 16; /* 128 bits = 16 octets */
+ master_salt_length = 14; /* 112 bits = 14 octets */
+ } else if (tvb_strncaseeql(tvb, offset, "AES_CM_128_HMAC_SHA1_32", tokenlen) == 0) {
+ /* XXX This may only work in simple cases */
+ if (transport_info->encryption_algorithm == SRTP_ENC_ALG_NOT_SET) {
+ transport_info->encryption_algorithm = SRTP_ENC_ALG_AES_CM;
+ transport_info->auth_algorithm = SRTP_AUTH_ALG_HMAC_SHA1;
+ /* number of octets used for the Auth Tag in the RTP payload */
+ transport_info->auth_tag_len = 4;
+ }
+ master_key_length = 16; /* 128 bits = 16 octets */
+ master_salt_length = 14; /* 112 bits = 14 octets */
+ } else if (tvb_strncaseeql(tvb, offset, "F8_128_HMAC_SHA1_80", tokenlen) == 0) {
+ if (transport_info->encryption_algorithm == SRTP_ENC_ALG_NOT_SET) {
+ /* XXX This may only work in simple cases */
+ transport_info->encryption_algorithm = SRTP_ENC_ALG_AES_F8;
+ transport_info->auth_algorithm = SRTP_AUTH_ALG_HMAC_SHA1;
+ /* number of octets used for the Auth Tag in the RTP payload */
+ transport_info->auth_tag_len = 10;
+ }
+ master_key_length = 16; /* 128 bits = 16 octets */
+ master_salt_length = 14; /* 112 bits = 14 octets */
+ }
+ offset = next_offset + 1;
+
+ /* key-params */
+ while (has_more_pars == TRUE) {
+ int param_end_offset;
+ tvbuff_t *key_salt_tvb;
+ gchar *data_p = NULL;
+
+ param_end_offset = tvb_find_guint8(tvb, offset, -1, ';');
+ if (param_end_offset == -1) {
+ has_more_pars = FALSE;
+ param_end_offset = tvb_length(tvb);
+ }
+ parameter_item = proto_tree_add_text(sdp_media_attribute_tree,
+ tvb, offset, param_end_offset-offset, "Key parameters");
+ parameter_tree = proto_item_add_subtree(parameter_item, ett_sdp_crypto_key_parameters);
+
+ /* key-method or key-method-ext */
+ next_offset = tvb_find_guint8(tvb, offset, -1, ':');
+ if (next_offset == -1) {
+ expert_add_info_format(pinfo, parameter_item, PI_MALFORMED, PI_NOTE,
+ "Invalid key-param (no ':' delimiter)");
break;
- case SDP_PATH:
- /* msrp attributes that contain address needed for conversation */
- /* RFC 4975
- * path = path-label ":" path-list
- * path-label = "path"
- * path-list= MSRP-URI *(SP MSRP-URI)
- * MSRP-URI = msrp-scheme "://" authority
- * ["/" session-id] ";" transport *( ";" URI-parameter)
- * ; authority as defined in RFC3986
- *
- * msrp-scheme = "msrp" / "msrps"
- * RFC 3986
- * The authority component is preceded by a double slash ("//") and is terminated by
- * the next slash ("/"), question mark ("?"), or number sign ("#") character, or by
- * the end of the URI.
- */
-
- /* Check for "msrp://" */
- if (strncmp((char*)attribute_value, msrp_res, strlen(msrp_res)) == 0){
- int address_offset, port_offset, port_end_offset;
-
- /* Address starts here */
- address_offset = offset + (int)strlen(msrp_res);
-
- /* Port is after next ':' */
- port_offset = tvb_find_guint8(tvb, address_offset, -1, ':');
- /* Check if port is present if not skipp */
- if(port_offset!= -1){
- /* Port ends with '/' */
- port_end_offset = tvb_find_guint8(tvb, port_offset, -1, '/');
-
- /* Attempt to convert address */
- if (inet_pton(AF_INET, (char*)tvb_get_ephemeral_string(tvb, address_offset, port_offset-address_offset), &msrp_ipaddr) > 0) {
- /* Get port number */
- msrp_port_number = atoi((char*)tvb_get_ephemeral_string(tvb, port_offset+1, port_end_offset-port_offset-1));
- /* Set flag so this info can be used */
- msrp_transport_address_set = TRUE;
- }
- }
+ }
+ if (tvb_strncaseeql(tvb, offset, "inline", next_offset-offset) == 0) {
+ /* XXX only for SRTP? */
+ /* srtp-key-info = key-salt ["|" lifetime] ["|" mki] */
+ offset = next_offset +1;
+ next_offset = tvb_find_guint8(tvb, offset, -1, '|');
+ if (next_offset == -1) {
+ tokenlen = param_end_offset - offset;
+ } else {
+ tokenlen = next_offset - offset;
}
- break;
- case SDP_H248_ITEM:
- /* Decode h248 item ITU-T Rec. H.248.12 (2001)/Amd.1 (11/2002)*/
- if (strncmp((char*)attribute_value, h324ext_h223lcparm, strlen(msrp_res)) == 0){
- /* A.5.1.3 H.223 Logical channel parameters
- * This property indicates the H.245
- * H223LogicalChannelsParameters structure encoded by applying the PER specified in
- * ITU-T Rec. X.691. Value encoded as per A.5.1.2. For text encoding the mechanism defined
- * in ITU-T Rec. H.248.15 is used.
- */
- gint len;
- asn1_ctx_t actx;
-
- len = (gint)strlen(attribute_value);
- h245_tvb = ascii_bytes_to_tvb(tvb, pinfo, len, attribute_value);
- /* arbitrary maximum length */
- /* should go through a handle, however, the two h245 entry
- points are different, one is over tpkt and the other is raw
- */
- if (h245_tvb){
- asn1_ctx_init(&actx, ASN1_ENC_PER, TRUE, pinfo);
- dissect_h245_H223LogicalChannelParameters(h245_tvb, 0, &actx, sdp_media_attribute_tree, hf_SDPh223LogicalChannelParameters);
- }
+ data_p = tvb_get_ephemeral_string(tvb, offset, tokenlen);
+ key_salt_tvb = base64_to_tvb(tvb, data_p);
+ add_new_data_source(pinfo, key_salt_tvb, "Key_Salt_tvb");
+ if (master_key_length != 0) {
+ proto_tree_add_text(parameter_tree, tvb, offset, tokenlen, "Key and Salt");
+ proto_tree_add_item(parameter_tree, hf_sdp_crypto_master_key,
+ key_salt_tvb, 0, master_key_length, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(parameter_tree, hf_sdp_crypto_master_salt,
+ key_salt_tvb, master_key_length, master_salt_length, ENC_ASCII|ENC_NA);
+ } else {
+ proto_tree_add_text(parameter_tree, key_salt_tvb, 0, -1, "Key and Salt");
}
- break;
- case SDP_CRYPTO:
- /* http://tools.ietf.org/html/rfc4568
- * 9.1. Generic "Crypto" Attribute Grammar
- *
- * The ABNF grammar for the crypto attribute is defined below:
- *
- * "a=crypto:" tag 1*WSP crypto-suite 1*WSP key-params
- * *(1*WSP session-param)
- *
- * tag = 1*9DIGIT
- * crypto-suite = 1*(ALPHA / DIGIT / "_")
- *
- * key-params = key-param *(";" key-param)
- * key-param = key-method ":" key-info
- * key-method = "inline" / key-method-ext
- * key-method-ext = 1*(ALPHA / DIGIT / "_")
- * key-info = 1*(%x21-3A / %x3C-7E) ; visible (printing) chars
- * ; except semi-colon
- * session-param = 1*(VCHAR) ; visible (printing) characters
- *
- * where WSP, ALPHA, DIGIT, and VCHAR are defined in [RFC4234].
- *
- */
-
- /* We are at the first colon */
- /* tag */
- next_offset = tvb_find_guint8(tvb,offset,-1,' ');
- tokenlen = next_offset - offset;
- proto_tree_add_uint(sdp_media_attribute_tree, hf_sdp_crypto_tag, tvb, offset, tokenlen,
- atoi((char*)tvb_get_ephemeral_string(tvb, offset, tokenlen)));
- offset=next_offset+1;
- /* crypto-suite */
- next_offset = tvb_find_guint8(tvb,offset,-1,' ');
- tokenlen = next_offset - offset;
- proto_tree_add_item(sdp_media_attribute_tree, hf_sdp_crypto_crypto_suite, tvb, offset, tokenlen, ENC_ASCII|ENC_NA);
- if(tvb_strncaseeql(tvb, offset, "AES_CM_128_HMAC_SHA1_80",tokenlen) == 0){
-
- /* XXX This may only work in simple cases */
- if(transport_info->encryption_algorithm == SRTP_ENC_ALG_NOT_SET){
- transport_info->encryption_algorithm = SRTP_ENC_ALG_AES_CM;
- transport_info->auth_algorithm = SRTP_AUTH_ALG_HMAC_SHA1;
- /* number of octets used for the Auth Tag in the RTP payload */
- transport_info->auth_tag_len = 10;
- }
- master_key_length = 16; /* 128 bits = 16 octets */
- master_salt_length = 14; /* 112 bits = 14 octets */
- }else if(tvb_strncaseeql(tvb, offset, "AES_CM_128_HMAC_SHA1_32",tokenlen) == 0){
- /* XXX This may only work in simple cases */
- if(transport_info->encryption_algorithm == SRTP_ENC_ALG_NOT_SET){
- transport_info->encryption_algorithm = SRTP_ENC_ALG_AES_CM;
- transport_info->auth_algorithm = SRTP_AUTH_ALG_HMAC_SHA1;
- /* number of octets used for the Auth Tag in the RTP payload */
- transport_info->auth_tag_len = 4;
- }
- master_key_length = 16; /* 128 bits = 16 octets */
- master_salt_length = 14; /* 112 bits = 14 octets */
- }else if(tvb_strncaseeql(tvb, offset, "F8_128_HMAC_SHA1_80",tokenlen) == 0){
- if(transport_info->encryption_algorithm == SRTP_ENC_ALG_NOT_SET){
- /* XXX This may only work in simple cases */
- transport_info->encryption_algorithm = SRTP_ENC_ALG_AES_F8;
- transport_info->auth_algorithm = SRTP_AUTH_ALG_HMAC_SHA1;
- /* number of octets used for the Auth Tag in the RTP payload */
- transport_info->auth_tag_len = 10;
- }
- master_key_length = 16; /* 128 bits = 16 octets */
- master_salt_length = 14; /* 112 bits = 14 octets */
- }
- offset=next_offset+1;
-
- /* key-params */
- while(has_more_pars==TRUE){
- int param_end_offset;
- tvbuff_t *key_salt_tvb;
- gchar *data_p = NULL;
-
- param_end_offset = tvb_find_guint8(tvb,offset,-1,';');
- if(param_end_offset == -1){
- has_more_pars = FALSE;
- param_end_offset = tvb_length(tvb);
- }
- parameter_item = proto_tree_add_text(sdp_media_attribute_tree, tvb, offset, param_end_offset-offset, "Key parameters");
- parameter_tree = proto_item_add_subtree(parameter_item, ett_sdp_crypto_key_parameters);
-
- /* key-method or key-method-ext */
- next_offset = tvb_find_guint8(tvb,offset,-1,':');
- if(next_offset == -1){
- expert_add_info_format(pinfo, parameter_item, PI_MALFORMED, PI_NOTE,
- "Invalid key-param (no ':' delimiter)");
- break;
- }
- if(tvb_strncaseeql(tvb, offset, "inline", next_offset-offset) == 0){
- /* XXX only for SRTP? */
- /* srtp-key-info = key-salt ["|" lifetime] ["|" mki] */
- offset = next_offset +1;
- next_offset = tvb_find_guint8(tvb,offset,-1,'|');
- if(next_offset == -1){
- tokenlen = param_end_offset - offset;
- }else{
- tokenlen = next_offset - offset;
- }
- data_p = tvb_get_ephemeral_string(tvb, offset, tokenlen);
- key_salt_tvb = base64_to_tvb(tvb, data_p);
- add_new_data_source(pinfo, key_salt_tvb, "Key_Salt_tvb");
- if(master_key_length !=0){
- proto_tree_add_text(parameter_tree, tvb, offset, tokenlen, "Key and Salt");
- proto_tree_add_item(parameter_tree, hf_sdp_crypto_master_key, key_salt_tvb, 0, master_key_length, ENC_ASCII|ENC_NA);
- proto_tree_add_item(parameter_tree, hf_sdp_crypto_master_salt, key_salt_tvb, master_key_length, master_salt_length, ENC_ASCII|ENC_NA);
- }else{
- proto_tree_add_text(parameter_tree, key_salt_tvb, 0, -1, "Key and Salt");
- }
-
- /* ["|" lifetime] ["|" mki] are optional */
- if(next_offset != -1){
- offset = next_offset + 1;
- next_offset = tvb_find_guint8(tvb,offset,-1,'|');
- if(next_offset != -1){
- /*lifetime = ["2^"] 1*(DIGIT) ; see section 6.1 for "2^" */
- tokenlen = next_offset - offset;
- proto_tree_add_item(parameter_tree, hf_sdp_crypto_lifetime, tvb, offset, tokenlen, ENC_ASCII|ENC_NA);
- offset = next_offset + 1;
- }
- /* mki = mki-value ":" mki-length
- *
- * mki-value = 1*DIGIT
- */
- next_offset = tvb_find_guint8(tvb,offset,-1,':');
- tokenlen = next_offset - offset;
- proto_tree_add_item(parameter_tree, hf_sdp_crypto_mki, tvb, offset, tokenlen, ENC_ASCII|ENC_NA);
- offset = next_offset + 1;
-
- /* mki-length = 1*3DIGIT ; range 1..128. */
- next_offset = param_end_offset;
- tokenlen = next_offset - offset;
-
- /* This will not work if more than one parameter */
- /* number of octets used for the MKI in the RTP payload */
- transport_info->mki_len = atoi((char*)tvb_get_ephemeral_string(tvb, offset, tokenlen));
- proto_tree_add_item(parameter_tree, hf_sdp_crypto_mki_length, tvb, offset, tokenlen, ENC_ASCII|ENC_NA);
- }
- offset = param_end_offset;
- }else{
- tokenlen = param_end_offset - next_offset+1;
- proto_tree_add_text(parameter_tree, tvb, next_offset+1, tokenlen, "%s", tvb_get_ephemeral_string(tvb, next_offset+1, tokenlen));
- offset = param_end_offset;
- }
+ /* ["|" lifetime] ["|" mki] are optional */
+ if (next_offset != -1) {
+ offset = next_offset + 1;
+ next_offset = tvb_find_guint8(tvb, offset, -1, '|');
+ if (next_offset != -1) {
+ /*lifetime = ["2^"] 1*(DIGIT) ; see section 6.1 for "2^" */
+ tokenlen = next_offset - offset;
+ proto_tree_add_item(parameter_tree, hf_sdp_crypto_lifetime,
+ tvb, offset, tokenlen, ENC_ASCII|ENC_NA);
+ offset = next_offset + 1;
+ }
+ /* mki = mki-value ":" mki-length
+ *
+ * mki-value = 1*DIGIT
+ */
+ next_offset = tvb_find_guint8(tvb, offset, -1, ':');
+ tokenlen = next_offset - offset;
+ proto_tree_add_item(parameter_tree, hf_sdp_crypto_mki, tvb, offset, tokenlen, ENC_ASCII|ENC_NA);
+ offset = next_offset + 1;
+
+ /* mki-length = 1*3DIGIT ; range 1..128. */
+ next_offset = param_end_offset;
+ tokenlen = next_offset - offset;
+
+ /* This will not work if more than one parameter */
+ /* number of octets used for the MKI in the RTP payload */
+ transport_info->mki_len = atoi((char*)tvb_get_ephemeral_string(tvb, offset, tokenlen));
+ proto_tree_add_item(parameter_tree, hf_sdp_crypto_mki_length,
+ tvb, offset, tokenlen, ENC_ASCII|ENC_NA);
}
-
- break;
- default:
- /* No special treatment for values of this attribute type, just add as one item. */
- proto_tree_add_item(sdp_media_attribute_tree, hf_media_attribute_value,
- tvb, offset, -1, ENC_ASCII|ENC_NA);
- break;
+ offset = param_end_offset;
+ } else {
+ tokenlen = param_end_offset - next_offset + 1;
+ proto_tree_add_text(parameter_tree, tvb, next_offset + 1, tokenlen,
+ "%s", tvb_get_ephemeral_string(tvb, next_offset + 1, tokenlen));
+ offset = param_end_offset;
+ }
}
+
+ break;
+ default:
+ /* No special treatment for values of this attribute type, just add as one item. */
+ proto_tree_add_item(sdp_media_attribute_tree, hf_media_attribute_value,
+ tvb, offset, -1, ENC_ASCII|ENC_NA);
+ break;
+ }
}
void
@@ -1946,285 +1960,355 @@ proto_register_sdp(void)
{
static hf_register_info hf[] = {
{ &hf_protocol_version,
- { "Session Description Protocol Version (v)",
- "sdp.version", FT_STRING, BASE_NONE,NULL,0x0,
- NULL, HFILL }},
+ { "Session Description Protocol Version (v)", "sdp.version",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_owner,
{ "Owner/Creator, Session Id (o)",
- "sdp.owner", FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL}},
+ "sdp.owner", FT_STRING, BASE_NONE, NULL,
+ 0x0, NULL, HFILL}
+ },
{ &hf_session_name,
- { "Session Name (s)",
- "sdp.session_name", FT_STRING, BASE_NONE,NULL, 0x0,
- NULL, HFILL }},
+ { "Session Name (s)", "sdp.session_name",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_session_info,
- { "Session Information (i)",
- "sdp.session_info", FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Session Information (i)", "sdp.session_info",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_uri,
- { "URI of Description (u)",
- "sdp.uri", FT_STRING, BASE_NONE,NULL, 0x0,
- NULL, HFILL }},
+ { "URI of Description (u)", "sdp.uri",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_email,
- { "E-mail Address (e)",
- "sdp.email", FT_STRING, BASE_NONE, NULL, 0x0,
- "E-mail Address", HFILL }},
+ { "E-mail Address (e)", "sdp.email",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "E-mail Address", HFILL }
+ },
{ &hf_phone,
- { "Phone Number (p)",
- "sdp.phone", FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Phone Number (p)", "sdp.phone",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_connection_info,
- { "Connection Information (c)",
- "sdp.connection_info", FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Connection Information (c)", "sdp.connection_info",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_bandwidth,
- { "Bandwidth Information (b)",
- "sdp.bandwidth", FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Bandwidth Information (b)", "sdp.bandwidth",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_timezone,
- { "Time Zone Adjustments (z)",
- "sdp.timezone", FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Time Zone Adjustments (z)", "sdp.timezone",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_encryption_key,
- { "Encryption Key (k)",
- "sdp.encryption_key", FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Encryption Key (k)", "sdp.encryption_key",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_session_attribute,
- { "Session Attribute (a)",
- "sdp.session_attr", FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Session Attribute (a)", "sdp.session_attr",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_media_attribute,
- { "Media Attribute (a)",
- "sdp.media_attr", FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Media Attribute (a)", "sdp.media_attr",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_time,
{ "Time Description, active time (t)",
- "sdp.time", FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ "sdp.time", FT_STRING, BASE_NONE, NULL,
+ 0x0, NULL, HFILL }
+ },
{ &hf_repeat_time,
- { "Repeat Time (r)",
- "sdp.repeat_time", FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Repeat Time (r)", "sdp.repeat_time",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_media,
{ "Media Description, name and address (m)",
- "sdp.media", FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ "sdp.media", FT_STRING, BASE_NONE, NULL,
+ 0x0, NULL, HFILL }
+ },
{ &hf_media_title,
- { "Media Title (i)",
- "sdp.media_title",FT_STRING, BASE_NONE, NULL, 0x0,
- "Media Title", HFILL }},
+ { "Media Title (i)", "sdp.media_title",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "Media Title", HFILL }
+ },
{ &hf_unknown,
- { "Unknown",
- "sdp.unknown",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Unknown", "sdp.unknown",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_invalid,
- { "Invalid line",
- "sdp.invalid",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Invalid line", "sdp.invalid",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_owner_username,
- { "Owner Username",
- "sdp.owner.username",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Owner Username", "sdp.owner.username",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_owner_sessionid,
- { "Session ID",
- "sdp.owner.sessionid",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Session ID", "sdp.owner.sessionid",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_owner_version,
- { "Session Version",
- "sdp.owner.version",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Session Version", "sdp.owner.version",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_owner_network_type,
- { "Owner Network Type",
- "sdp.owner.network_type",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Owner Network Type", "sdp.owner.network_type",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_owner_address_type,
- { "Owner Address Type",
- "sdp.owner.address_type",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Owner Address Type", "sdp.owner.address_type",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_owner_address,
- { "Owner Address",
- "sdp.owner.address",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Owner Address", "sdp.owner.address",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_connection_info_network_type,
- { "Connection Network Type",
- "sdp.connection_info.network_type",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Connection Network Type", "sdp.connection_info.network_type",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_connection_info_address_type,
- { "Connection Address Type",
- "sdp.connection_info.address_type",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Connection Address Type", "sdp.connection_info.address_type",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_connection_info_connection_address,
- { "Connection Address",
- "sdp.connection_info.address",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Connection Address", "sdp.connection_info.address",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_connection_info_ttl,
- { "Connection TTL",
- "sdp.connection_info.ttl",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Connection TTL", "sdp.connection_info.ttl",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_connection_info_num_addr,
- { "Connection Number of Addresses",
- "sdp.connection_info.num_addr",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Connection Number of Addresses", "sdp.connection_info.num_addr",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_bandwidth_modifier,
- { "Bandwidth Modifier",
- "sdp.bandwidth.modifier",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Bandwidth Modifier", "sdp.bandwidth.modifier",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_bandwidth_value,
- { "Bandwidth Value",
- "sdp.bandwidth.value",FT_STRING, BASE_NONE, NULL, 0x0,
- "Bandwidth Value (in kbits/s)", HFILL }},
+ { "Bandwidth Value", "sdp.bandwidth.value",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "Bandwidth Value (in kbits/s)", HFILL }
+ },
{ &hf_time_start,
- { "Session Start Time",
- "sdp.time.start",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Session Start Time", "sdp.time.start",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_time_stop,
- { "Session Stop Time",
- "sdp.time.stop",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Session Stop Time", "sdp.time.stop",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_repeat_time_interval,
- { "Repeat Interval",
- "sdp.repeat_time.interval",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Repeat Interval", "sdp.repeat_time.interval",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_repeat_time_duration,
- { "Repeat Duration",
- "sdp.repeat_time.duration",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Repeat Duration", "sdp.repeat_time.duration",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_repeat_time_offset,
- { "Repeat Offset",
- "sdp.repeat_time.offset",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Repeat Offset", "sdp.repeat_time.offset",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_timezone_time,
- { "Timezone Time",
- "sdp.timezone.time",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Timezone Time", "sdp.timezone.time",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_timezone_offset,
- { "Timezone Offset",
- "sdp.timezone.offset",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Timezone Offset", "sdp.timezone.offset",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_encryption_key_type,
- { "Key Type",
- "sdp.encryption_key.type",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Key Type", "sdp.encryption_key.type",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_encryption_key_data,
- { "Key Data",
- "sdp.encryption_key.data",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Key Data", "sdp.encryption_key.data",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_session_attribute_field,
- { "Session Attribute Fieldname",
- "sdp.session_attr.field",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Session Attribute Fieldname", "sdp.session_attr.field",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_session_attribute_value,
- { "Session Attribute Value",
- "sdp.session_attr.value",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Session Attribute Value", "sdp.session_attr.value",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_media_media,
- { "Media Type",
- "sdp.media.media",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Media Type", "sdp.media.media",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_media_port,
- { "Media Port",
- "sdp.media.port",FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Media Port", "sdp.media.port",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_media_portcount,
- { "Media Port Count",
- "sdp.media.portcount",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Media Port Count", "sdp.media.portcount",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_media_proto,
- { "Media Protocol",
- "sdp.media.proto",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Media Protocol", "sdp.media.proto",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_media_format,
- { "Media Format",
- "sdp.media.format",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Media Format", "sdp.media.format",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_media_attribute_field,
- { "Media Attribute Fieldname",
- "sdp.media_attribute.field",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Media Attribute Fieldname", "sdp.media_attribute.field",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_media_attribute_value,
- { "Media Attribute Value",
- "sdp.media_attribute.value",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Media Attribute Value", "sdp.media_attribute.value",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_media_encoding_name,
- { "MIME Type",
- "sdp.mime.type",FT_STRING, BASE_NONE, NULL, 0x0,
- "SDP MIME Type", HFILL }},
+ { "MIME Type", "sdp.mime.type",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "SDP MIME Type", HFILL }
+ },
{ &hf_media_sample_rate,
- { "Sample Rate",
- "sdp.sample_rate",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Sample Rate", "sdp.sample_rate",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_media_format_specific_parameter,
- { "Media format specific parameters",
- "sdp.fmtp.parameter",FT_STRING, BASE_NONE, NULL, 0x0,
- "Format specific parameter(fmtp)", HFILL }},
+ { "Media format specific parameters", "sdp.fmtp.parameter",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "Format specific parameter(fmtp)", HFILL }
+ },
{ &hf_ipbcp_version,
- { "IPBCP Protocol Version",
- "ipbcp.version",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "IPBCP Protocol Version", "ipbcp.version",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_ipbcp_type,
- { "IPBCP Command Type",
- "ipbcp.command",FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "IPBCP Command Type", "ipbcp.command",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{&hf_sdp_fmtp_mpeg4_profile_level_id,
- { "Level Code",
- "sdp.fmtp.profile_level_id",FT_UINT32, BASE_DEC,VALS(mp4ves_level_indication_vals), 0x0,
- NULL, HFILL }},
+ { "Level Code", "sdp.fmtp.profile_level_id",
+ FT_UINT32, BASE_DEC, VALS(mp4ves_level_indication_vals), 0x0,
+ NULL, HFILL }
+ },
{ &hf_sdp_fmtp_h263_profile,
- { "Profile",
- "sdp.fmtp.h263profile",FT_UINT32, BASE_DEC,VALS(h263_profile_vals), 0x0,
- NULL, HFILL }},
+ { "Profile", "sdp.fmtp.h263profile",
+ FT_UINT32, BASE_DEC, VALS(h263_profile_vals), 0x0,
+ NULL, HFILL }
+ },
{ &hf_sdp_fmtp_h263_level,
- { "Level",
- "sdp.fmtp.h263level",FT_UINT32, BASE_DEC,VALS(h263_level_vals), 0x0,
- NULL, HFILL }},
+ { "Level", "sdp.fmtp.h263level",
+ FT_UINT32, BASE_DEC, VALS(h263_level_vals), 0x0,
+ NULL, HFILL }
+ },
{ &hf_sdp_h264_packetization_mode,
- { "Packetization mode",
- "sdp.fmtp.h264_packetization_mode",FT_UINT32, BASE_DEC,VALS(h264_packetization_mode_vals), 0x0,
- NULL, HFILL }},
+ { "Packetization mode", "sdp.fmtp.h264_packetization_mode",
+ FT_UINT32, BASE_DEC, VALS(h264_packetization_mode_vals), 0x0,
+ NULL, HFILL }
+ },
{ &hf_SDPh223LogicalChannelParameters,
{ "h223LogicalChannelParameters", "sdp.h223LogicalChannelParameters",
FT_NONE, BASE_NONE, NULL, 0,
- NULL, HFILL }},
+ NULL, HFILL }
+ },
{ &hf_key_mgmt_att_value,
- { "Key Management",
- "sdp.key_mgmt", FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Key Management", "sdp.key_mgmt",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_key_mgmt_prtcl_id,
- { "Key Management Protocol (kmpid)",
- "sdp.key_mgmt.kmpid", FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Key Management Protocol (kmpid)", "sdp.key_mgmt.kmpid",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_key_mgmt_data,
- { "Key Management Data",
- "sdp.key_mgmt.data", FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Key Management Data", "sdp.key_mgmt.data",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_sdp_crypto_tag,
- { "tag",
- "sdp.crypto.tag", FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "tag", "sdp.crypto.tag",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_sdp_crypto_crypto_suite,
- { "Crypto suite",
- "sdp.crypto.crypto_suite", FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Crypto suite", "sdp.crypto.crypto_suite",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_sdp_crypto_master_key,
- { "Master Key",
- "sdp.crypto.master_key", FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Master Key", "sdp.crypto.master_key",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_sdp_crypto_master_salt,
- { "Mater salt",
- "sdp.crypto.master_salt", FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Mater salt", "sdp.crypto.master_salt",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_sdp_crypto_lifetime,
- { "Lifetime",
- "sdp.crypto.lifetime", FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Lifetime", "sdp.crypto.lifetime",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_sdp_crypto_mki,
- { "mki-value",
- "sdp.crypto.mki-valu", FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "mki-value", "sdp.crypto.mki-valu",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_sdp_crypto_mki_length,
- { "mki_length",
- "sdp.crypto.mki_length", FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "mki_length", "sdp.crypto.mki_length",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
};
static gint *ett[] = {
&ett_sdp,
@@ -2256,12 +2340,12 @@ proto_register_sdp(void)
/*
* Preferences registration
*/
- sdp_module = prefs_register_protocol(proto_sdp, NULL);
- prefs_register_bool_preference(sdp_module, "establish_conversation",
- "Establish Media Conversation",
- "Specifies that RTP/RTCP/T.38/MSRP/etc streams are decoded based "
- "upon port numbers found in SDP payload",
- &global_sdp_establish_conversation);
+ sdp_module = prefs_register_protocol(proto_sdp, NULL);
+ prefs_register_bool_preference(sdp_module, "establish_conversation",
+ "Establish Media Conversation",
+ "Specifies that RTP/RTCP/T.38/MSRP/etc streams are decoded based "
+ "upon port numbers found in SDP payload",
+ &global_sdp_establish_conversation);
/*
* Register the dissector by name, so other dissectors can
@@ -2278,11 +2362,11 @@ proto_reg_handoff_sdp(void)
{
dissector_handle_t sdp_handle;
- rtp_handle = find_dissector("rtp");
- rtcp_handle = find_dissector("rtcp");
- msrp_handle = find_dissector("msrp");
- t38_handle = find_dissector("t38");
- h264_handle = find_dissector("h264");
+ rtp_handle = find_dissector("rtp");
+ rtcp_handle = find_dissector("rtcp");
+ msrp_handle = find_dissector("msrp");
+ t38_handle = find_dissector("t38");
+ h264_handle = find_dissector("h264");
mp4ves_handle = find_dissector("mp4ves");
sdp_handle = find_dissector("sdp");
diff --git a/epan/dissectors/packet-sercosiii.c b/epan/dissectors/packet-sercosiii.c
index 97fdf9b59d..b750d05177 100644
--- a/epan/dissectors/packet-sercosiii.c
+++ b/epan/dissectors/packet-sercosiii.c
@@ -1178,8 +1178,8 @@ dissect_siii(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_item* ti;
proto_tree* siii_tree;
guint type;
- char* tel_ch="?";
- char* tel_type="?";
+ const char* tel_ch="?";
+ const char* tel_type="?";
guint tel_no = 0;
/* setup columns */
diff --git a/epan/dissectors/packet-sflow.c b/epan/dissectors/packet-sflow.c
index 1cafea508f..5eeab5220b 100644
--- a/epan/dissectors/packet-sflow.c
+++ b/epan/dissectors/packet-sflow.c
@@ -115,12 +115,12 @@ static const value_string sflow_5_ieee80211_versions [] = {
#define SFLOW_245_COUNTERS_VLAN 7
static const value_string sflow_245_counterstype[] = {
- { SFLOW_245_COUNTERS_GENERIC, "Generic counters"},
+ { SFLOW_245_COUNTERS_GENERIC, "Generic counters"},
{ SFLOW_245_COUNTERS_ETHERNET, "Ethernet counters"},
- { SFLOW_245_COUNTERS_FDDI, "FDDI counters"},
- { SFLOW_245_COUNTERS_VG, "100baseVG counters"},
- { SFLOW_245_COUNTERS_WAN, "WAN counters"},
- { SFLOW_245_COUNTERS_VLAN, "VLAN counters"},
+ { SFLOW_245_COUNTERS_FDDI, "FDDI counters"},
+ { SFLOW_245_COUNTERS_VG, "100baseVG counters"},
+ { SFLOW_245_COUNTERS_WAN, "WAN counters"},
+ { SFLOW_245_COUNTERS_VLAN, "VLAN counters"},
{ 0, NULL}
};
@@ -132,8 +132,8 @@ static const value_string sflow_245_counterstype[] = {
static const value_string sflow_245_packet_information_type[] = {
{ SFLOW_245_PACKET_DATA_TYPE_HEADER, "Packet headers are sampled"},
- { SFLOW_245_PACKET_DATA_TYPE_IPV4, "IP Version 4 data"},
- { SFLOW_245_PACKET_DATA_TYPE_IPV6, "IP Version 6 data"},
+ { SFLOW_245_PACKET_DATA_TYPE_IPV4, "IP Version 4 data"},
+ { SFLOW_245_PACKET_DATA_TYPE_IPV6, "IP Version 6 data"},
{ 0, NULL}
};
@@ -156,22 +156,22 @@ static const value_string sflow_245_packet_information_type[] = {
#define SFLOW_5_HEADER_80211_AMSDU_SUBFRAME 17
static const value_string sflow_245_header_protocol[] = {
- { SFLOW_245_HEADER_ETHERNET, "Ethernet"},
- { SFLOW_245_HEADER_TOKENBUS, "Token Bus"},
- { SFLOW_245_HEADER_TOKENRING, "Token Ring"},
- { SFLOW_245_HEADER_FDDI, "FDDI"},
- { SFLOW_245_HEADER_FRAME_RELAY, "Frame Relay"},
- { SFLOW_245_HEADER_X25, "X.25"},
- { SFLOW_245_HEADER_PPP, "PPP"},
- { SFLOW_245_HEADER_SMDS, "SMDS"},
- { SFLOW_245_HEADER_AAL5, "ATM AAL5"},
- { SFLOW_245_HEADER_AAL5_IP, "ATM AAL5-IP (e.g., Cisco AAL5 mux)"},
- { SFLOW_245_HEADER_IPv4, "IPv4"},
- { SFLOW_245_HEADER_IPv6, "IPv6"},
- { SFLOW_245_HEADER_MPLS, "MPLS"},
- { SFLOW_5_HEADER_POS, "PPP over SONET/SDH (RFC 1662, 2615)"},
- { SFLOW_5_HEADER_80211_MAC, "802.11 MAC"},
- { SFLOW_5_HEADER_80211_AMPDU, "802.11n Aggregated MPDU"},
+ { SFLOW_245_HEADER_ETHERNET, "Ethernet"},
+ { SFLOW_245_HEADER_TOKENBUS, "Token Bus"},
+ { SFLOW_245_HEADER_TOKENRING, "Token Ring"},
+ { SFLOW_245_HEADER_FDDI, "FDDI"},
+ { SFLOW_245_HEADER_FRAME_RELAY, "Frame Relay"},
+ { SFLOW_245_HEADER_X25, "X.25"},
+ { SFLOW_245_HEADER_PPP, "PPP"},
+ { SFLOW_245_HEADER_SMDS, "SMDS"},
+ { SFLOW_245_HEADER_AAL5, "ATM AAL5"},
+ { SFLOW_245_HEADER_AAL5_IP, "ATM AAL5-IP (e.g., Cisco AAL5 mux)"},
+ { SFLOW_245_HEADER_IPv4, "IPv4"},
+ { SFLOW_245_HEADER_IPv6, "IPv6"},
+ { SFLOW_245_HEADER_MPLS, "MPLS"},
+ { SFLOW_5_HEADER_POS, "PPP over SONET/SDH (RFC 1662, 2615)"},
+ { SFLOW_5_HEADER_80211_MAC, "802.11 MAC"},
+ { SFLOW_5_HEADER_80211_AMPDU, "802.11n Aggregated MPDU"},
{ SFLOW_5_HEADER_80211_AMSDU_SUBFRAME, "A-MSDU Subframe"},
{ 0, NULL}
};
@@ -2393,11 +2393,11 @@ dissect_sflow_5_expanded_flow_sample(tvbuff_t *tvb, packet_info *pinfo,
static gint
dissect_sflow_24_counters_sample(tvbuff_t *tvb, proto_tree *tree, gint offset, proto_item *parent) {
struct sflow_24_counters_sample_header counters_header;
- struct if_counters ifc;
- struct ethernet_counters ethc;
+ struct if_counters ifc;
+ struct ethernet_counters ethc;
struct token_ring_counters tokc;
- struct vg_counters vgc;
- struct vlan_counters vlanc;
+ struct vg_counters vgc;
+ struct vlan_counters vlanc;
/* grab the flow header. This will remain in network byte
order, so must convert each item before use */
@@ -2580,8 +2580,8 @@ dissect_sflow_5_expanded_counters_sample(tvbuff_t *tvb, proto_tree *tree, gint o
static gint
dissect_sflow_245_samples(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, guint32 version) {
proto_tree *sflow_245_sample_tree;
- proto_item *ti; /* tree item */
- guint32 sample_type, enterprise, format, length;
+ proto_item *ti; /* tree item */
+ guint32 sample_type, enterprise, format, length;
/* decide what kind of sample it is. */
sample_type = tvb_get_ntohl(tvb, offset);
@@ -2657,15 +2657,15 @@ static int
dissect_sflow_245(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
/* Set up structures needed to add the protocol subtree and manage it */
- proto_item *ti;
- proto_tree *sflow_245_tree;
- guint32 version, sub_agent_id, seqnum;
- struct sflow_address_details addr_details;
- struct sflow_address_type addr_type = {hf_sflow_agent_address_v4, hf_sflow_agent_address_v6};
+ proto_item *ti;
+ proto_tree *sflow_245_tree;
+ guint32 version, sub_agent_id, seqnum;
+ struct sflow_address_details addr_details;
+ struct sflow_address_type addr_type = {hf_sflow_agent_address_v4, hf_sflow_agent_address_v6};
- guint32 numsamples;
+ guint32 numsamples;
volatile guint offset = 0;
- guint i = 0;
+ guint i = 0;
/* Make entries in Protocol column and Info column on summary display */
col_set_str(pinfo->cinfo, COL_PROTOCOL, "sFlow");
@@ -3471,10 +3471,10 @@ proto_reg_handoff_sflow_245(void) {
*
* Local Variables:
* c-basic-offset: 4
- * tab-width: 4
+ * tab-width: 8
* indent-tabs-mode: nil
* End:
*
- * ex: set shiftwidth=4 tabstop=4 noexpandtab
- * :indentSize=4:tabSize=4:noTabs=true:
+ * ex: set shiftwidth=4 tabstop=8 noexpandtab
+ * :indentSize=4:tabSize=8:noTabs=true:
*/
diff --git a/epan/dissectors/packet-sgsap.c b/epan/dissectors/packet-sgsap.c
index b8d8811352..5e6fff20ff 100644
--- a/epan/dissectors/packet-sgsap.c
+++ b/epan/dissectors/packet-sgsap.c
@@ -1456,7 +1456,7 @@ void proto_register_sgsap(void) {
},
{ &hf_sgsap_elem_id,
{ "Element ID", "sgsap.elem_id",
- FT_UINT8, BASE_DEC, NULL, 0x0,
+ FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }
},
{ &hf_sgsap_eps_location_update_type,
diff --git a/epan/dissectors/packet-sigcomp.c b/epan/dissectors/packet-sigcomp.c
index 1bf4b9137f..b4c901d368 100644
--- a/epan/dissectors/packet-sigcomp.c
+++ b/epan/dissectors/packet-sigcomp.c
@@ -974,7 +974,7 @@ dissect_udvm_bytecode(tvbuff_t *udvm_tvb, proto_tree *sigcomp_udvm_tree,guint st
{
guint instruction;
gint offset = 0;
- gint start_offset;
+ gint start_offset = 0;
gint len;
gint n;
guint instruction_no = 0;
diff --git a/epan/dissectors/packet-sip.c b/epan/dissectors/packet-sip.c
index 9d1d131723..9b06737210 100644
--- a/epan/dissectors/packet-sip.c
+++ b/epan/dissectors/packet-sip.c
@@ -88,11 +88,13 @@ static gint hf_sip_to_user = -1;
static gint hf_sip_to_host = -1;
static gint hf_sip_to_port = -1;
static gint hf_sip_to_param = -1;
+static gint hf_sip_to_tag = -1;
static gint hf_sip_from_addr = -1;
static gint hf_sip_from_user = -1;
static gint hf_sip_from_host = -1;
static gint hf_sip_from_port = -1;
static gint hf_sip_from_param = -1;
+static gint hf_sip_from_tag = -1;
static gint hf_sip_tag = -1;
static gint hf_sip_pai_addr = -1;
static gint hf_sip_pai_user = -1;
@@ -1000,7 +1002,7 @@ dissect_sip_uri(tvbuff_t *tvb, packet_info *pinfo _U_, gint start_offset,
uri_offsets->uri_start = current_offset;
/* Check if it's realy a sip uri ( it might be a tel uri, parse that?) */
- queried_offset = tvb_find_guint8(tvb, current_offset, line_end_offset - current_offset, ':');
+ tvb_find_guint8(tvb, current_offset, line_end_offset - current_offset, ':');
if (tvb_strneql(tvb, current_offset, "sip", 3) != 0)
return -1;
@@ -1136,7 +1138,7 @@ uri_host_end_found:
* hi-entry *(COMMA hi-entry)
*
* hi-entry = hi-targeted-to-uri *( SEMI hi-param )
- * hi-targeted-to-uri= name-addr
+ * hi-targeted-to-uri= name-addr
*
*
* hi-param = hi-index / hi-extension
@@ -1665,7 +1667,7 @@ dissect_sip_reason_header(tvbuff_t *tvb, proto_tree *tree, gint start_offset, gi
length = line_end_offset - current_offset;
/* q850_cause_code_vals */
- cause_value = atoi(tvb_get_ephemeral_string(tvb, current_offset, length));
+ cause_value = strtoul(tvb_get_ephemeral_string(tvb, current_offset, length), NULL, 10);
proto_tree_add_text(tree, tvb, current_offset, length,
"Cause: %u(0x%x)[%s]", cause_value,cause_value,
val_to_str_ext(cause_value, &q850_cause_code_vals_ext, "Unknown (%d)" ));
@@ -2084,6 +2086,7 @@ dissect_sip_common(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tr
char call_id[MAX_CALL_ID_SIZE] = "";
gchar *media_type_str_lower_case = NULL;
char *content_type_parameter_str = NULL;
+ char *content_encoding_parameter_str = NULL;
guint resend_for_packet = 0;
guint request_for_response = 0;
guint32 response_time = 0;
@@ -2328,6 +2331,8 @@ dissect_sip_common(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tr
case POS_TO :
if(hdr_tree) {
+ proto_item *item;
+
sip_element_item = proto_tree_add_string_format(hdr_tree,
hf_header_array[hf_index], tvb,
offset, next_offset - offset,
@@ -2365,8 +2370,12 @@ dissect_sip_common(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tr
if ( parameter_end_offset == -1)
parameter_end_offset = line_end_offset;
parameter_len = parameter_end_offset - parameter_offset;
- proto_tree_add_item(sip_element_tree, hf_sip_tag, tvb, parameter_offset,
+ proto_tree_add_item(sip_element_tree, hf_sip_to_tag, tvb, parameter_offset,
parameter_len, ENC_ASCII|ENC_NA);
+ item = proto_tree_add_item(sip_element_tree, hf_sip_tag, tvb, parameter_offset,
+ parameter_len, ENC_ASCII|ENC_NA);
+ PROTO_ITEM_SET_HIDDEN(item);
+
/* Tag indicates in-dialog messages, in case we have a INVITE, SUBSCRIBE or REFER, mark it */
switch (current_method_idx) {
@@ -2382,6 +2391,8 @@ dissect_sip_common(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tr
case POS_FROM :
if(hdr_tree) {
+ proto_item *item;
+
sip_element_item = proto_tree_add_string_format(hdr_tree,
hf_header_array[hf_index], tvb,
offset, next_offset - offset,
@@ -2420,9 +2431,11 @@ dissect_sip_common(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tr
if ( parameter_end_offset == -1)
parameter_end_offset = line_end_offset;
parameter_len = parameter_end_offset - parameter_offset;
- proto_tree_add_item(sip_element_tree, hf_sip_tag, tvb, parameter_offset,
+ proto_tree_add_item(sip_element_tree, hf_sip_from_tag, tvb, parameter_offset,
parameter_len, ENC_ASCII|ENC_NA);
-
+ item = proto_tree_add_item(sip_element_tree, hf_sip_tag, tvb, parameter_offset,
+ parameter_len, ENC_ASCII|ENC_NA);
+ PROTO_ITEM_SET_HIDDEN(item);
}
}/* hdr_tree */
break;
@@ -2576,7 +2589,7 @@ dissect_sip_common(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tr
case POS_CSEQ :
/* Store the sequence number */
- cseq_number = atoi(value);
+ cseq_number = (guint32)strtoul(value, NULL, 10);
cseq_number_set = 1;
stat_info->tap_cseq_number=cseq_number;
@@ -2668,7 +2681,7 @@ dissect_sip_common(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tr
{
proto_tree_add_uint(rack_tree, hf_sip_rack_rseq_no,
tvb, value_offset, sub_value_offset,
- atoi(value));
+ strtoul(value, NULL, 10));
break;
}
}
@@ -2692,7 +2705,7 @@ dissect_sip_common(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tr
proto_tree_add_uint(rack_tree, hf_sip_rack_cseq_no,
tvb, value_offset+cseq_no_offset,
sub_value_offset-cseq_no_offset,
- atoi(value+cseq_no_offset));
+ strtoul(value+cseq_no_offset, NULL, 10));
break;
}
}
@@ -2816,7 +2829,7 @@ dissect_sip_common(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tr
sip_element_item = proto_tree_add_uint(hdr_tree,
hf_header_array[hf_index], tvb,
offset, next_offset - offset,
- atoi(value));
+ strtoul(value, NULL, 10));
}
break;
@@ -2989,6 +3002,20 @@ dissect_sip_common(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tr
dissect_sip_reason_header(tvb, reason_tree, value_offset, line_end_offset);
}
break;
+ case POS_CONTENT_ENCODING:
+ /* Content-Encoding = ( "Content-Encoding" / "e" ) HCOLON
+ * content-coding *(COMMA content-coding)
+ */
+ if(hdr_tree) {
+ sip_element_item = proto_tree_add_string_format(hdr_tree,
+ hf_header_array[hf_index], tvb,
+ offset, next_offset - offset,
+ value, "%s",
+ tvb_format_text(tvb, offset, linelen));
+ }
+ content_encoding_parameter_str = ascii_strdown_inplace(tvb_get_ephemeral_string(tvb, value_offset,
+ (line_end_offset-value_offset)));
+ break;
default :
/* Default case is to assume its an FT_STRING field */
if(hdr_tree) {
@@ -3030,11 +3057,23 @@ dissect_sip_common(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tr
* Set the length of the header item.
*/
proto_item_set_end(th, tvb, offset);
- next_tvb = tvb_new_subset(tvb, offset, datalen, reported_datalen);
- if(sip_tree) {
- ti_a = proto_tree_add_item(sip_tree, hf_sip_msg_body, next_tvb, 0, -1,
+ if(content_encoding_parameter_str != NULL &&
+ !strncmp(content_encoding_parameter_str, "gzip", 4)){
+ /* The body is gzip:ed */
+ next_tvb = tvb_uncompress(tvb, offset, datalen);
+ add_new_data_source(pinfo, next_tvb, "gunziped data");
+ if(sip_tree) {
+ ti_a = proto_tree_add_item(sip_tree, hf_sip_msg_body, next_tvb, 0, -1,
+ ENC_NA);
+ message_body_tree = proto_item_add_subtree(ti_a, ett_sip_message_body);
+ }
+ }else{
+ next_tvb = tvb_new_subset(tvb, offset, datalen, reported_datalen);
+ if(sip_tree) {
+ ti_a = proto_tree_add_item(sip_tree, hf_sip_msg_body, next_tvb, 0, -1,
ENC_NA);
- message_body_tree = proto_item_add_subtree(ti_a, ett_sip_message_body);
+ message_body_tree = proto_item_add_subtree(ti_a, ett_sip_message_body);
+ }
}
/* give the content type parameters to sub dissectors */
@@ -3986,6 +4025,11 @@ void proto_register_sip(void)
FT_STRING, BASE_NONE,NULL,0x0,
NULL, HFILL }
},
+ { &hf_sip_to_tag,
+ { "SIP to tag", "sip.to.tag",
+ FT_STRING, BASE_NONE,NULL,0x0,
+ "RFC 3261: to tag", HFILL }
+ },
{ &hf_sip_from_addr,
{ "SIP from address", "sip.from.addr",
FT_STRING, BASE_NONE,NULL,0x0,
@@ -4011,6 +4055,11 @@ void proto_register_sip(void)
FT_STRING, BASE_NONE,NULL,0x0,
NULL, HFILL }
},
+ { &hf_sip_from_tag,
+ { "SIP from tag", "sip.from.tag",
+ FT_STRING, BASE_NONE,NULL,0x0,
+ "RFC 3261: from tag", HFILL }
+ },
/* etxrab */
{ &hf_sip_curi,
{ "Contact URI", "sip.contact.uri",
diff --git a/epan/dissectors/packet-sita.c b/epan/dissectors/packet-sita.c
index f5964e988c..bea11cb2b1 100644
--- a/epan/dissectors/packet-sita.c
+++ b/epan/dissectors/packet-sita.c
@@ -25,279 +25,381 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-/* Use tabstops = 4 */
+/* Use indentation = 4 */
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
-#include <stdlib.h>
#include <string.h>
+
#include <glib.h>
+
#include <epan/packet.h>
#include <wiretap/wtap.h>
#include <epan/emem.h>
-static dissector_table_t sita_dissector_table;
-static dissector_handle_t data_handle;
-static gint ett_sita = -1;
-static gint ett_sita_flags = -1;
-static gint ett_sita_signals = -1;
-static gint ett_sita_errors1 = -1;
-static gint ett_sita_errors2 = -1;
-static int proto_sita = -1; /* Initialize the protocol and registered fields */
-static int hf_dir = -1;
-static int hf_framing = -1;
-static int hf_parity = -1;
-static int hf_collision = -1;
-static int hf_longframe = -1;
-static int hf_shortframe = -1;
-static int hf_droppedframe = -1;
-static int hf_nonaligned = -1;
-static int hf_abort = -1;
-static int hf_lostcd = -1;
-static int hf_lostcts = -1;
-static int hf_rxdpll = -1;
-static int hf_overrun = -1;
-static int hf_length = -1;
-static int hf_crc = -1;
-static int hf_break = -1;
-static int hf_underrun = -1;
-static int hf_uarterror = -1;
-static int hf_rtxlimit = -1;
-static int hf_proto = -1;
-static int hf_dsr = -1;
-static int hf_dtr = -1;
-static int hf_cts = -1;
-static int hf_rts = -1;
-static int hf_dcd = -1;
-
-#define MAX_FLAGS_LEN 64 /* max size of a 'flags' decoded string */
-#define IOP "Local"
-#define REMOTE "Remote"
+static dissector_table_t sita_dissector_table;
+static dissector_handle_t data_handle;
+static gint ett_sita = -1;
+static gint ett_sita_flags = -1;
+static gint ett_sita_signals = -1;
+static gint ett_sita_errors1 = -1;
+static gint ett_sita_errors2 = -1;
+static int proto_sita = -1; /* Initialize the protocol and registered fields */
+static int hf_dir = -1;
+static int hf_framing = -1;
+static int hf_parity = -1;
+static int hf_collision = -1;
+static int hf_longframe = -1;
+static int hf_shortframe = -1;
+static int hf_droppedframe = -1;
+static int hf_nonaligned = -1;
+static int hf_abort = -1;
+static int hf_lostcd = -1;
+static int hf_lostcts = -1;
+static int hf_rxdpll = -1;
+static int hf_overrun = -1;
+static int hf_length = -1;
+static int hf_crc = -1;
+static int hf_break = -1;
+static int hf_underrun = -1;
+static int hf_uarterror = -1;
+static int hf_rtxlimit = -1;
+static int hf_proto = -1;
+static int hf_dsr = -1;
+static int hf_dtr = -1;
+static int hf_cts = -1;
+static int hf_rts = -1;
+static int hf_dcd = -1;
+
+#define MAX_FLAGS_LEN 64 /* max size of a 'flags' decoded string */
+#define IOP "Local"
+#define REMOTE "Remote"
static gchar *
format_flags_string(guchar value, const gchar *array[])
{
- int i;
- guint bpos;
- emem_strbuf_t *buf;
- const char *sep = "";
-
- buf = ep_strbuf_sized_new(MAX_FLAGS_LEN, MAX_FLAGS_LEN);
- for (i = 0; i < 8; i++) {
- bpos = 1 << i;
- if (value & bpos) {
- if (array[i][0]) {
- /* there is a string to emit... */
- ep_strbuf_append_printf(buf, "%s%s", sep,
- array[i]);
- sep = ", ";
- }
- }
- }
- return buf->str;
+ int i;
+ guint bpos;
+ emem_strbuf_t *buf;
+ const char *sep = "";
+
+ buf = ep_strbuf_sized_new(MAX_FLAGS_LEN, MAX_FLAGS_LEN);
+ for (i = 0; i < 8; i++) {
+ bpos = 1 << i;
+ if (value & bpos) {
+ if (array[i][0]) {
+ /* there is a string to emit... */
+ ep_strbuf_append_printf(buf, "%s%s", sep,
+ array[i]);
+ sep = ", ";
+ }
+ }
+ }
+ return buf->str;
}
static void
dissect_sita(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti;
- guchar flags, signals, errors1, errors2, proto;
- gchar *errors1_string, *errors2_string, *signals_string, *flags_string;
- proto_tree *sita_tree = NULL;
- proto_tree *sita_flags_tree = NULL;
- proto_tree *sita_errors1_tree = NULL;
- proto_tree *sita_errors2_tree = NULL;
- proto_tree *sita_signals_tree = NULL;
- const gchar *rx_errors1_str[] = {"Framing", "Parity", "Collision", "Long-frame", "Short-frame", "", "", "" };
- const gchar *rx_errors2_str[] = {"Non-Aligned", "Abort", "CD-lost", "DPLL", "Overrun", "Length", "CRC", "Break" };
- /*const gchar *tx_errors1_str[] = {"", "", "", "", "", "", "", "" }; */
- const gchar *tx_errors2_str[] = {"Underrun", "CTS-lost", "UART", "ReTx-limit", "", "", "", "" };
- const gchar *signals_str[] = {"DSR", "DTR", "CTS", "RTS", "DCD", "", "", "" };
- const gchar *flags_str[] = {"", "", "", "", "", "", "", "No-buffers" };
-
- col_clear(pinfo->cinfo, COL_PROTOCOL); /* erase the protocol */
- col_clear(pinfo->cinfo, COL_INFO); /* and info columns so that the next decoder can fill them in */
-
- flags = pinfo->pseudo_header->sita.sita_flags;
- signals = pinfo->pseudo_header->sita.sita_signals;
- errors1 = pinfo->pseudo_header->sita.sita_errors1;
- errors2 = pinfo->pseudo_header->sita.sita_errors2;
- proto = pinfo->pseudo_header->sita.sita_proto;
-
- if (check_col(pinfo->cinfo, COL_DEF_SRC)) {
- if ((flags & SITA_FRAME_DIR) == SITA_FRAME_DIR_TXED) {
- col_set_str(pinfo->cinfo, COL_DEF_SRC, IOP); /* set the source (direction) column accordingly */
- } else {
- col_set_str(pinfo->cinfo, COL_DEF_SRC, REMOTE);
- }
- }
-
- if (check_col(pinfo->cinfo, COL_INFO))
- col_set_str(pinfo->cinfo, COL_INFO, "");
-
- if (tree) {
- ti = proto_tree_add_protocol_format(tree, proto_sita, tvb, 0, 0, "Link Layer");
- sita_tree = proto_item_add_subtree(ti, ett_sita);
-
- proto_tree_add_uint(sita_tree, hf_proto, tvb, 0, 0, proto);
-
- flags_string = format_flags_string(flags, flags_str);
- ti = proto_tree_add_text(sita_tree, tvb, 0, 0, "Flags: 0x%02x (From %s)%s%s",
- flags,
- ((flags & SITA_FRAME_DIR) == SITA_FRAME_DIR_TXED) ? IOP : REMOTE,
- strlen(flags_string) ? ", " : "",
- flags_string);
- sita_flags_tree = proto_item_add_subtree(ti, ett_sita_flags);
- proto_tree_add_boolean(sita_flags_tree, hf_droppedframe, tvb, 0, 0, flags);
- proto_tree_add_boolean(sita_flags_tree, hf_dir, tvb, 0, 0, flags);
-
- signals_string = format_flags_string(signals, signals_str);
- ti = proto_tree_add_text(sita_tree, tvb, 0, 0, "Signals: 0x%02x %s", signals, signals_string);
- sita_signals_tree = proto_item_add_subtree(ti, ett_sita_signals);
- proto_tree_add_boolean(sita_signals_tree, hf_dcd, tvb, 0, 0, signals);
- proto_tree_add_boolean(sita_signals_tree, hf_rts, tvb, 0, 0, signals);
- proto_tree_add_boolean(sita_signals_tree, hf_cts, tvb, 0, 0, signals);
- proto_tree_add_boolean(sita_signals_tree, hf_dtr, tvb, 0, 0, signals);
- proto_tree_add_boolean(sita_signals_tree, hf_dsr, tvb, 0, 0, signals);
-
- if ((flags & SITA_FRAME_DIR) == SITA_FRAME_DIR_RXED) {
- errors1_string = format_flags_string(errors1, rx_errors1_str);
- ti = proto_tree_add_text(sita_tree, tvb, 0, 0, "Receive Status: 0x%02x %s", errors1, errors1_string);
- sita_errors1_tree = proto_item_add_subtree(ti, ett_sita_errors1);
- proto_tree_add_boolean(sita_errors1_tree, hf_shortframe, tvb, 0, 0, errors1);
- proto_tree_add_boolean(sita_errors1_tree, hf_longframe, tvb, 0, 0, errors1);
- proto_tree_add_boolean(sita_errors1_tree, hf_collision, tvb, 0, 0, errors1);
- proto_tree_add_boolean(sita_errors1_tree, hf_parity, tvb, 0, 0, errors1);
- proto_tree_add_boolean(sita_errors1_tree, hf_framing, tvb, 0, 0, errors1);
-
- errors2_string = format_flags_string(errors2, rx_errors2_str);
- ti = proto_tree_add_text(sita_tree, tvb, 0, 0, "Receive Status: 0x%02x %s", errors2, errors2_string);
- sita_errors2_tree = proto_item_add_subtree(ti, ett_sita_errors2);
- proto_tree_add_boolean(sita_errors2_tree, hf_break, tvb, 0, 0, errors2);
- proto_tree_add_boolean(sita_errors2_tree, hf_crc, tvb, 0, 0, errors2);
- proto_tree_add_boolean(sita_errors2_tree, hf_length, tvb, 0, 0, errors2);
- proto_tree_add_boolean(sita_errors2_tree, hf_overrun, tvb, 0, 0, errors2);
- proto_tree_add_boolean(sita_errors2_tree, hf_rxdpll, tvb, 0, 0, errors2);
- proto_tree_add_boolean(sita_errors2_tree, hf_lostcd, tvb, 0, 0, errors2);
- proto_tree_add_boolean(sita_errors2_tree, hf_abort, tvb, 0, 0, errors2);
- proto_tree_add_boolean(sita_errors2_tree, hf_nonaligned, tvb, 0, 0, errors2);
- } else {
- errors2_string = format_flags_string(errors2, tx_errors2_str);
- ti = proto_tree_add_text(sita_tree, tvb, 0, 0, "Transmit Status: 0x%02x %s", errors2, errors2_string);
- sita_errors1_tree = proto_item_add_subtree(ti, ett_sita_errors1);
- proto_tree_add_boolean(sita_errors1_tree, hf_rtxlimit, tvb, 0, 0, errors2);
- proto_tree_add_boolean(sita_errors1_tree, hf_uarterror, tvb, 0, 0, errors2);
- proto_tree_add_boolean(sita_errors1_tree, hf_lostcts, tvb, 0, 0, errors2);
- proto_tree_add_boolean(sita_errors1_tree, hf_underrun, tvb, 0, 0, errors2);
- }
- }
-
- if (!dissector_try_uint(sita_dissector_table, pinfo->pseudo_header->sita.sita_proto, tvb, pinfo, tree)) { /* try to find and run an applicable dissector */
- if (check_col(pinfo->cinfo, COL_PROTOCOL)) /* if one can't be found... tell them we don't */
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "UNKNOWN"); /* know how to decode this protocol */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_add_fstr(pinfo->cinfo, COL_INFO, "IOP protocol number: %u", pinfo->pseudo_header->sita.sita_proto); /* and give them the details then */
- call_dissector(data_handle, tvb, pinfo, tree); /* call the generic (hex display) decoder instead */
- }
+ proto_item *ti;
+ guchar flags, signals, errors1, errors2, proto;
+ gchar *errors1_string, *errors2_string, *signals_string, *flags_string;
+ proto_tree *sita_tree = NULL;
+ proto_tree *sita_flags_tree = NULL;
+ proto_tree *sita_errors1_tree = NULL;
+ proto_tree *sita_errors2_tree = NULL;
+ proto_tree *sita_signals_tree = NULL;
+ const gchar *rx_errors1_str[] = {"Framing", "Parity", "Collision", "Long-frame", "Short-frame", "", "", "" };
+ const gchar *rx_errors2_str[] = {"Non-Aligned", "Abort", "CD-lost", "DPLL", "Overrun", "Length", "CRC", "Break" };
+ /*const gchar *tx_errors1_str[] = {"", "", "", "", "", "", "", "" }; */
+ const gchar *tx_errors2_str[] = {"Underrun", "CTS-lost", "UART", "ReTx-limit", "", "", "", "" };
+ const gchar *signals_str[] = {"DSR", "DTR", "CTS", "RTS", "DCD", "", "", "" };
+ const gchar *flags_str[] = {"", "", "", "", "", "", "", "No-buffers" };
+
+ col_clear(pinfo->cinfo, COL_PROTOCOL); /* erase the protocol */
+ col_clear(pinfo->cinfo, COL_INFO); /* and info columns so that the next decoder can fill them in */
+
+ flags = pinfo->pseudo_header->sita.sita_flags;
+ signals = pinfo->pseudo_header->sita.sita_signals;
+ errors1 = pinfo->pseudo_header->sita.sita_errors1;
+ errors2 = pinfo->pseudo_header->sita.sita_errors2;
+ proto = pinfo->pseudo_header->sita.sita_proto;
+
+ if (check_col(pinfo->cinfo, COL_DEF_SRC)) {
+ if ((flags & SITA_FRAME_DIR) == SITA_FRAME_DIR_TXED) {
+ col_set_str(pinfo->cinfo, COL_DEF_SRC, IOP); /* set the source (direction) column accordingly */
+ } else {
+ col_set_str(pinfo->cinfo, COL_DEF_SRC, REMOTE);
+ }
+ }
+
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_set_str(pinfo->cinfo, COL_INFO, "");
+
+ if (tree) {
+ ti = proto_tree_add_protocol_format(tree, proto_sita, tvb, 0, 0, "Link Layer");
+ sita_tree = proto_item_add_subtree(ti, ett_sita);
+
+ proto_tree_add_uint(sita_tree, hf_proto, tvb, 0, 0, proto);
+
+ flags_string = format_flags_string(flags, flags_str);
+ ti = proto_tree_add_text(sita_tree, tvb, 0, 0, "Flags: 0x%02x (From %s)%s%s",
+ flags,
+ ((flags & SITA_FRAME_DIR) == SITA_FRAME_DIR_TXED) ? IOP : REMOTE,
+ strlen(flags_string) ? ", " : "",
+ flags_string);
+ sita_flags_tree = proto_item_add_subtree(ti, ett_sita_flags);
+ proto_tree_add_boolean(sita_flags_tree, hf_droppedframe, tvb, 0, 0, flags);
+ proto_tree_add_boolean(sita_flags_tree, hf_dir, tvb, 0, 0, flags);
+
+ signals_string = format_flags_string(signals, signals_str);
+ ti = proto_tree_add_text(sita_tree, tvb, 0, 0, "Signals: 0x%02x %s", signals, signals_string);
+ sita_signals_tree = proto_item_add_subtree(ti, ett_sita_signals);
+ proto_tree_add_boolean(sita_signals_tree, hf_dcd, tvb, 0, 0, signals);
+ proto_tree_add_boolean(sita_signals_tree, hf_rts, tvb, 0, 0, signals);
+ proto_tree_add_boolean(sita_signals_tree, hf_cts, tvb, 0, 0, signals);
+ proto_tree_add_boolean(sita_signals_tree, hf_dtr, tvb, 0, 0, signals);
+ proto_tree_add_boolean(sita_signals_tree, hf_dsr, tvb, 0, 0, signals);
+
+ if ((flags & SITA_FRAME_DIR) == SITA_FRAME_DIR_RXED) {
+ errors1_string = format_flags_string(errors1, rx_errors1_str);
+ ti = proto_tree_add_text(sita_tree, tvb, 0, 0, "Receive Status: 0x%02x %s", errors1, errors1_string);
+ sita_errors1_tree = proto_item_add_subtree(ti, ett_sita_errors1);
+ proto_tree_add_boolean(sita_errors1_tree, hf_shortframe, tvb, 0, 0, errors1);
+ proto_tree_add_boolean(sita_errors1_tree, hf_longframe, tvb, 0, 0, errors1);
+ proto_tree_add_boolean(sita_errors1_tree, hf_collision, tvb, 0, 0, errors1);
+ proto_tree_add_boolean(sita_errors1_tree, hf_parity, tvb, 0, 0, errors1);
+ proto_tree_add_boolean(sita_errors1_tree, hf_framing, tvb, 0, 0, errors1);
+
+ errors2_string = format_flags_string(errors2, rx_errors2_str);
+ ti = proto_tree_add_text(sita_tree, tvb, 0, 0, "Receive Status: 0x%02x %s", errors2, errors2_string);
+ sita_errors2_tree = proto_item_add_subtree(ti, ett_sita_errors2);
+ proto_tree_add_boolean(sita_errors2_tree, hf_break, tvb, 0, 0, errors2);
+ proto_tree_add_boolean(sita_errors2_tree, hf_crc, tvb, 0, 0, errors2);
+ proto_tree_add_boolean(sita_errors2_tree, hf_length, tvb, 0, 0, errors2);
+ proto_tree_add_boolean(sita_errors2_tree, hf_overrun, tvb, 0, 0, errors2);
+ proto_tree_add_boolean(sita_errors2_tree, hf_rxdpll, tvb, 0, 0, errors2);
+ proto_tree_add_boolean(sita_errors2_tree, hf_lostcd, tvb, 0, 0, errors2);
+ proto_tree_add_boolean(sita_errors2_tree, hf_abort, tvb, 0, 0, errors2);
+ proto_tree_add_boolean(sita_errors2_tree, hf_nonaligned, tvb, 0, 0, errors2);
+ } else {
+ errors2_string = format_flags_string(errors2, tx_errors2_str);
+ ti = proto_tree_add_text(sita_tree, tvb, 0, 0, "Transmit Status: 0x%02x %s", errors2, errors2_string);
+ sita_errors1_tree = proto_item_add_subtree(ti, ett_sita_errors1);
+ proto_tree_add_boolean(sita_errors1_tree, hf_rtxlimit, tvb, 0, 0, errors2);
+ proto_tree_add_boolean(sita_errors1_tree, hf_uarterror, tvb, 0, 0, errors2);
+ proto_tree_add_boolean(sita_errors1_tree, hf_lostcts, tvb, 0, 0, errors2);
+ proto_tree_add_boolean(sita_errors1_tree, hf_underrun, tvb, 0, 0, errors2);
+ }
+ }
+
+ /* try to find and run an applicable dissector */
+ if (!dissector_try_uint(sita_dissector_table, pinfo->pseudo_header->sita.sita_proto, tvb, pinfo, tree)) {
+ if (check_col(pinfo->cinfo, COL_PROTOCOL)) /* if one can't be found... tell them we don't */
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "UNKNOWN"); /* know how to decode this protocol */
+ if (check_col(pinfo->cinfo, COL_INFO)) /* and give them the details then */
+ col_add_fstr(pinfo->cinfo, COL_INFO, "IOP protocol number: %u", pinfo->pseudo_header->sita.sita_proto);
+ call_dissector(data_handle, tvb, pinfo, tree); /* call the generic (hex display) decoder instead */
+ }
}
-static const true_false_string tfs_sita_flags = { "From Remote", "From Local" };
-static const true_false_string tfs_sita_error = { "Error", "" };
-static const true_false_string tfs_sita_violation = { "Violation", "" };
-static const true_false_string tfs_sita_received = { "Received", "" };
-static const true_false_string tfs_sita_lost = { "Lost", "" };
-static const true_false_string tfs_sita_exceeded = { "Exceeded", "" };
-static const true_false_string tfs_sita_on_off = { "On", "Off" };
+static const true_false_string tfs_sita_flags = { "From Remote", "From Local" };
+static const true_false_string tfs_sita_error = { "Error", "" };
+static const true_false_string tfs_sita_violation = { "Violation", "" };
+static const true_false_string tfs_sita_received = { "Received", "" };
+static const true_false_string tfs_sita_lost = { "Lost", "" };
+static const true_false_string tfs_sita_exceeded = { "Exceeded", "" };
+static const true_false_string tfs_sita_on_off = { "On", "Off" };
static const value_string tfs_sita_proto[] = {
- { SITA_PROTO_UNUSED, "Unused" },
- { SITA_PROTO_BOP_LAPB, "LAPB" },
- { SITA_PROTO_ETHERNET, "Ethernet" },
- { SITA_PROTO_ASYNC_INTIO, "Async (Interrupt I/O)" },
- { SITA_PROTO_ASYNC_BLKIO, "Async (Block I/O)" },
- { SITA_PROTO_ALC, "IPARS" },
- { SITA_PROTO_UTS, "UTS" },
- { SITA_PROTO_PPP_HDLC, "PPP/HDLC" },
- { SITA_PROTO_SDLC, "SDLC" },
- { SITA_PROTO_TOKENRING, "Token Ring" },
- { SITA_PROTO_I2C, "I2C" },
- { SITA_PROTO_DPM_LINK, "DPM Link" },
- { SITA_PROTO_BOP_FRL, "Frame Relay" },
- { 0, NULL }
+ { SITA_PROTO_UNUSED, "Unused" },
+ { SITA_PROTO_BOP_LAPB, "LAPB" },
+ { SITA_PROTO_ETHERNET, "Ethernet" },
+ { SITA_PROTO_ASYNC_INTIO, "Async (Interrupt I/O)" },
+ { SITA_PROTO_ASYNC_BLKIO, "Async (Block I/O)" },
+ { SITA_PROTO_ALC, "IPARS" },
+ { SITA_PROTO_UTS, "UTS" },
+ { SITA_PROTO_PPP_HDLC, "PPP/HDLC" },
+ { SITA_PROTO_SDLC, "SDLC" },
+ { SITA_PROTO_TOKENRING, "Token Ring" },
+ { SITA_PROTO_I2C, "I2C" },
+ { SITA_PROTO_DPM_LINK, "DPM Link" },
+ { SITA_PROTO_BOP_FRL, "Frame Relay" },
+ { 0, NULL }
};
void
proto_register_sita(void)
{
- static hf_register_info hf[] = {
- { &hf_proto, { "Protocol", "sita.errors.protocol", FT_UINT8, BASE_HEX, VALS(tfs_sita_proto), 0, "Protocol value", HFILL }},
-
- { &hf_dir, { "Direction", "sita.flags.flags", FT_BOOLEAN, 8, TFS(&tfs_sita_flags), SITA_FRAME_DIR, "TRUE 'from Remote', FALSE 'from Local'", HFILL }},
- { &hf_droppedframe, { "No Buffers", "sita.flags.droppedframe", FT_BOOLEAN, 8, TFS(&tfs_sita_error), SITA_ERROR_NO_BUFFER, "TRUE if Buffer Failure", HFILL }},
-
- { &hf_framing, { "Framing", "sita.errors.framing", FT_BOOLEAN, 8, TFS(&tfs_sita_error), SITA_ERROR_RX_FRAMING, "TRUE if Framing Error", HFILL }},
- { &hf_parity, { "Parity", "sita.errors.parity", FT_BOOLEAN, 8, TFS(&tfs_sita_error), SITA_ERROR_RX_PARITY, "TRUE if Parity Error", HFILL }},
- { &hf_collision, { "Collision", "sita.errors.collision", FT_BOOLEAN, 8, TFS(&tfs_sita_error), SITA_ERROR_RX_COLLISION, "TRUE if Collision", HFILL }},
- { &hf_longframe, { "Long Frame", "sita.errors.longframe", FT_BOOLEAN, 8, TFS(&tfs_sita_error), SITA_ERROR_RX_FRAME_LONG, "TRUE if Long Frame Received", HFILL }},
- { &hf_shortframe, { "Short Frame", "sita.errors.shortframe", FT_BOOLEAN, 8, TFS(&tfs_sita_error), SITA_ERROR_RX_FRAME_SHORT, "TRUE if Short Frame", HFILL }},
- { &hf_nonaligned, { "NonAligned", "sita.errors.nonaligned", FT_BOOLEAN, 8, TFS(&tfs_sita_error), SITA_ERROR_RX_NONOCTET_ALIGNED, "TRUE if NonAligned Frame", HFILL }},
- { &hf_abort, { "Abort", "sita.errors.abort", FT_BOOLEAN, 8, TFS(&tfs_sita_received), SITA_ERROR_RX_ABORT, "TRUE if Abort Received", HFILL }},
- { &hf_lostcd, { "Carrier", "sita.errors.lostcd", FT_BOOLEAN, 8, TFS(&tfs_sita_lost), SITA_ERROR_RX_CD_LOST, "TRUE if Carrier Lost", HFILL }},
- { &hf_rxdpll, { "DPLL", "sita.errors.rxdpll", FT_BOOLEAN, 8, TFS(&tfs_sita_error), SITA_ERROR_RX_DPLL, "TRUE if DPLL Error", HFILL }},
- { &hf_overrun, { "Overrun", "sita.errors.overrun", FT_BOOLEAN, 8, TFS(&tfs_sita_error), SITA_ERROR_RX_OVERRUN, "TRUE if Overrun Error", HFILL }},
- { &hf_length, { "Length", "sita.errors.length", FT_BOOLEAN, 8, TFS(&tfs_sita_violation),SITA_ERROR_RX_FRAME_LEN_VIOL, "TRUE if Length Violation", HFILL }},
- { &hf_crc, { "CRC", "sita.errors.crc", FT_BOOLEAN, 8, TFS(&tfs_sita_error), SITA_ERROR_RX_CRC, "TRUE if CRC Error", HFILL }},
- { &hf_break, { "Break", "sita.errors.break", FT_BOOLEAN, 8, TFS(&tfs_sita_received), SITA_ERROR_RX_BREAK, "TRUE if Break Received", HFILL }},
-
- { &hf_underrun, { "Underrun", "sita.errors.underrun", FT_BOOLEAN, 8, TFS(&tfs_sita_error), SITA_ERROR_TX_UNDERRUN, "TRUE if Tx Underrun", HFILL }},
- { &hf_lostcts, { "Clear To Send", "sita.errors.lostcts", FT_BOOLEAN, 8, TFS(&tfs_sita_lost), SITA_ERROR_TX_CTS_LOST, "TRUE if Clear To Send Lost", HFILL }},
- { &hf_uarterror, { "UART", "sita.errors.uarterror", FT_BOOLEAN, 8, TFS(&tfs_sita_error), SITA_ERROR_TX_UART_ERROR, "TRUE if UART Error", HFILL }},
- { &hf_rtxlimit, { "Retx Limit", "sita.errors.rtxlimit", FT_BOOLEAN, 8, TFS(&tfs_sita_exceeded), SITA_ERROR_TX_RETX_LIMIT, "TRUE if Retransmit Limit reached", HFILL }},
-
- { &hf_dsr, { "DSR", "sita.signals.dsr", FT_BOOLEAN, 8, TFS(&tfs_sita_on_off), SITA_SIG_DSR, "TRUE if Data Set Ready", HFILL }},
- { &hf_dtr, { "DTR", "sita.signals.dtr", FT_BOOLEAN, 8, TFS(&tfs_sita_on_off), SITA_SIG_DTR, "TRUE if Data Terminal Ready", HFILL }},
- { &hf_cts, { "CTS", "sita.signals.cts", FT_BOOLEAN, 8, TFS(&tfs_sita_on_off), SITA_SIG_CTS, "TRUE if Clear To Send", HFILL }},
- { &hf_rts, { "RTS", "sita.signals.rts", FT_BOOLEAN, 8, TFS(&tfs_sita_on_off), SITA_SIG_RTS, "TRUE if Request To Send", HFILL }},
- { &hf_dcd, { "DCD", "sita.signals.dcd", FT_BOOLEAN, 8, TFS(&tfs_sita_on_off), SITA_SIG_DCD, "TRUE if Data Carrier Detect", HFILL }},
-
- };
-
- static gint *ett[] = {
- &ett_sita,
- &ett_sita_flags,
- &ett_sita_signals,
- &ett_sita_errors1,
- &ett_sita_errors2,
- };
-
- proto_sita = proto_register_protocol("Societe Internationale de Telecommunications Aeronautiques", "SITA", "sita"); /* name, short name,abbreviation */
- sita_dissector_table = register_dissector_table("sita.proto", "SITA protocol number", FT_UINT8, BASE_HEX);
- proto_register_field_array(proto_sita, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
- register_dissector("sita", dissect_sita, proto_sita);
+ static hf_register_info hf[] = {
+ { &hf_proto,
+ { "Protocol", "sita.errors.protocol",
+ FT_UINT8, BASE_HEX, VALS(tfs_sita_proto), 0,
+ "Protocol value", HFILL }
+ },
+
+ { &hf_dir,
+ { "Direction", "sita.flags.flags",
+ FT_BOOLEAN, 8, TFS(&tfs_sita_flags), SITA_FRAME_DIR,
+ "TRUE 'from Remote', FALSE 'from Local'", HFILL }
+ },
+ { &hf_droppedframe,
+ { "No Buffers", "sita.flags.droppedframe",
+ FT_BOOLEAN, 8, TFS(&tfs_sita_error), SITA_ERROR_NO_BUFFER,
+ "TRUE if Buffer Failure", HFILL }
+ },
+
+ { &hf_framing,
+ { "Framing", "sita.errors.framing",
+ FT_BOOLEAN, 8, TFS(&tfs_sita_error), SITA_ERROR_RX_FRAMING,
+ "TRUE if Framing Error", HFILL }
+ },
+ { &hf_parity,
+ { "Parity", "sita.errors.parity",
+ FT_BOOLEAN, 8, TFS(&tfs_sita_error), SITA_ERROR_RX_PARITY,
+ "TRUE if Parity Error", HFILL }
+ },
+ { &hf_collision,
+ { "Collision", "sita.errors.collision",
+ FT_BOOLEAN, 8, TFS(&tfs_sita_error), SITA_ERROR_RX_COLLISION,
+ "TRUE if Collision", HFILL }
+ },
+ { &hf_longframe,
+ { "Long Frame", "sita.errors.longframe",
+ FT_BOOLEAN, 8, TFS(&tfs_sita_error), SITA_ERROR_RX_FRAME_LONG,
+ "TRUE if Long Frame Received", HFILL }
+ },
+ { &hf_shortframe,
+ { "Short Frame", "sita.errors.shortframe",
+ FT_BOOLEAN, 8, TFS(&tfs_sita_error), SITA_ERROR_RX_FRAME_SHORT,
+ "TRUE if Short Frame", HFILL }
+ },
+ { &hf_nonaligned,
+ { "NonAligned", "sita.errors.nonaligned",
+ FT_BOOLEAN, 8, TFS(&tfs_sita_error), SITA_ERROR_RX_NONOCTET_ALIGNED,
+ "TRUE if NonAligned Frame", HFILL }
+ },
+ { &hf_abort,
+ { "Abort", "sita.errors.abort",
+ FT_BOOLEAN, 8, TFS(&tfs_sita_received), SITA_ERROR_RX_ABORT,
+ "TRUE if Abort Received", HFILL }
+ },
+ { &hf_lostcd,
+ { "Carrier", "sita.errors.lostcd",
+ FT_BOOLEAN, 8, TFS(&tfs_sita_lost), SITA_ERROR_RX_CD_LOST,
+ "TRUE if Carrier Lost", HFILL }
+ },
+ { &hf_rxdpll,
+ { "DPLL", "sita.errors.rxdpll",
+ FT_BOOLEAN, 8, TFS(&tfs_sita_error), SITA_ERROR_RX_DPLL,
+ "TRUE if DPLL Error", HFILL }
+ },
+ { &hf_overrun,
+ { "Overrun", "sita.errors.overrun",
+ FT_BOOLEAN, 8, TFS(&tfs_sita_error), SITA_ERROR_RX_OVERRUN,
+ "TRUE if Overrun Error", HFILL }
+ },
+ { &hf_length,
+ { "Length", "sita.errors.length",
+ FT_BOOLEAN, 8, TFS(&tfs_sita_violation), SITA_ERROR_RX_FRAME_LEN_VIOL,
+ "TRUE if Length Violation", HFILL }
+ },
+ { &hf_crc,
+ { "CRC", "sita.errors.crc",
+ FT_BOOLEAN, 8, TFS(&tfs_sita_error), SITA_ERROR_RX_CRC,
+ "TRUE if CRC Error", HFILL }
+ },
+ { &hf_break,
+ { "Break", "sita.errors.break",
+ FT_BOOLEAN, 8, TFS(&tfs_sita_received), SITA_ERROR_RX_BREAK,
+ "TRUE if Break Received", HFILL }
+ },
+
+ { &hf_underrun,
+ { "Underrun", "sita.errors.underrun",
+ FT_BOOLEAN, 8, TFS(&tfs_sita_error), SITA_ERROR_TX_UNDERRUN,
+ "TRUE if Tx Underrun", HFILL }
+ },
+ { &hf_lostcts,
+ { "Clear To Send", "sita.errors.lostcts",
+ FT_BOOLEAN, 8, TFS(&tfs_sita_lost), SITA_ERROR_TX_CTS_LOST,
+ "TRUE if Clear To Send Lost", HFILL }
+ },
+ { &hf_uarterror,
+ { "UART", "sita.errors.uarterror",
+ FT_BOOLEAN, 8, TFS(&tfs_sita_error), SITA_ERROR_TX_UART_ERROR,
+ "TRUE if UART Error", HFILL }
+ },
+ { &hf_rtxlimit,
+ { "Retx Limit", "sita.errors.rtxlimit",
+ FT_BOOLEAN, 8, TFS(&tfs_sita_exceeded), SITA_ERROR_TX_RETX_LIMIT,
+ "TRUE if Retransmit Limit reached", HFILL }
+ },
+
+ { &hf_dsr,
+ { "DSR", "sita.signals.dsr",
+ FT_BOOLEAN, 8, TFS(&tfs_sita_on_off), SITA_SIG_DSR,
+ "TRUE if Data Set Ready", HFILL }
+ },
+ { &hf_dtr,
+ { "DTR", "sita.signals.dtr",
+ FT_BOOLEAN, 8, TFS(&tfs_sita_on_off), SITA_SIG_DTR,
+ "TRUE if Data Terminal Ready", HFILL }
+ },
+ { &hf_cts,
+ { "CTS", "sita.signals.cts",
+ FT_BOOLEAN, 8, TFS(&tfs_sita_on_off), SITA_SIG_CTS,
+ "TRUE if Clear To Send", HFILL }
+ },
+ { &hf_rts,
+ { "RTS", "sita.signals.rts",
+ FT_BOOLEAN, 8, TFS(&tfs_sita_on_off), SITA_SIG_RTS,
+ "TRUE if Request To Send", HFILL }
+ },
+ { &hf_dcd,
+ { "DCD", "sita.signals.dcd",
+ FT_BOOLEAN, 8, TFS(&tfs_sita_on_off), SITA_SIG_DCD,
+ "TRUE if Data Carrier Detect", HFILL }
+ },
+
+ };
+
+ static gint *ett[] = {
+ &ett_sita,
+ &ett_sita_flags,
+ &ett_sita_signals,
+ &ett_sita_errors1,
+ &ett_sita_errors2,
+ };
+
+ proto_sita = proto_register_protocol("Societe Internationale de Telecommunications Aeronautiques", "SITA", "sita"); /* name, short name,abbreviation */
+ sita_dissector_table = register_dissector_table("sita.proto", "SITA protocol number", FT_UINT8, BASE_HEX);
+ proto_register_field_array(proto_sita, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+ register_dissector("sita", dissect_sita, proto_sita);
}
void
proto_reg_handoff_sita(void)
{
- dissector_handle_t lapb_handle;
- dissector_handle_t frame_relay_handle;
- dissector_handle_t uts_handle;
- dissector_handle_t ipars_handle;
- dissector_handle_t sita_handle;
-
- lapb_handle = find_dissector("lapb");
- frame_relay_handle = find_dissector("fr");
- uts_handle = find_dissector("uts");
- ipars_handle = find_dissector("ipars");
- sita_handle = find_dissector("sita");
- data_handle = find_dissector("data");
-
- dissector_add_uint("sita.proto", SITA_PROTO_BOP_LAPB, lapb_handle);
- dissector_add_uint("sita.proto", SITA_PROTO_BOP_FRL, frame_relay_handle);
- dissector_add_uint("sita.proto", SITA_PROTO_UTS, uts_handle);
- dissector_add_uint("sita.proto", SITA_PROTO_ALC, ipars_handle);
- dissector_add_uint("wtap_encap", WTAP_ENCAP_SITA, sita_handle);
+ dissector_handle_t lapb_handle;
+ dissector_handle_t frame_relay_handle;
+ dissector_handle_t uts_handle;
+ dissector_handle_t ipars_handle;
+ dissector_handle_t sita_handle;
+
+ lapb_handle = find_dissector("lapb");
+ frame_relay_handle = find_dissector("fr");
+ uts_handle = find_dissector("uts");
+ ipars_handle = find_dissector("ipars");
+ sita_handle = find_dissector("sita");
+ data_handle = find_dissector("data");
+
+ dissector_add_uint("sita.proto", SITA_PROTO_BOP_LAPB, lapb_handle);
+ dissector_add_uint("sita.proto", SITA_PROTO_BOP_FRL, frame_relay_handle);
+ dissector_add_uint("sita.proto", SITA_PROTO_UTS, uts_handle);
+ dissector_add_uint("sita.proto", SITA_PROTO_ALC, ipars_handle);
+ dissector_add_uint("wtap_encap", WTAP_ENCAP_SITA, sita_handle);
}
diff --git a/epan/dissectors/packet-skinny.c b/epan/dissectors/packet-skinny.c
index 612df41411..2753abe206 100644
--- a/epan/dissectors/packet-skinny.c
+++ b/epan/dissectors/packet-skinny.c
@@ -93,8 +93,8 @@ static const value_string header_version[] = {
* infrastructure for now
*
* typedef struct {
- * guint32 id;
- * char * name;
+ * guint32 id;
+ * char *name;
* } message_id_t;
*/
@@ -242,7 +242,7 @@ static const value_string message_id[] = {
{0x0152, "DialedPhoneBookAckMessage"},
{0x015A, "XMLAlarmMessage"},
- {0 , NULL} /* terminator */
+ {0 , NULL} /* terminator */
};
static value_string_ext message_id_ext = VALUE_STRING_EXT_INIT(message_id);
@@ -384,8 +384,8 @@ static const value_string mediaPayloads[] = {
{10 , "G.728"},
{11 , "G.729"},
{12 , "G.729 Annex A"},
- {13 , "IS11172 AudioCap"}, /* IS11172 is an ISO MPEG standard */
- {14 , "IS13818 AudioCap"}, /* IS13818 is an ISO MPEG standard */
+ {13 , "IS11172 AudioCap"}, /* IS11172 is an ISO MPEG standard */
+ {14 , "IS13818 AudioCap"}, /* IS13818 is an ISO MPEG standard */
{15 , "G.729 Annex B"},
{16 , "G.729 Annex A+Annex B"},
{18 , "GSM Full Rate"},
@@ -966,7 +966,7 @@ static const value_string cast_callSecurityStatusTypes[] = {
#define MAX_LEVEL_PREFERENCE 4
#define MaxAnnouncementList 32
#define StationMaxMonitorParties 16 /* Max Monitor Bridge whisper matrix parties, rm, M&R in Parche */
-#define StationMaxServiceURLSize 256 /* max number of service URLs length */
+#define StationMaxServiceURLSize 256 /* max number of service URLs length */
#define MAX_PICTURE_FORMAT 5
#define MAX_REFERENCE_PICTURE 4
@@ -1239,7 +1239,8 @@ static int pi_current = 0;
static skinny_info_t *si;
/* Get the length of a single SCCP PDU */
-static guint get_skinny_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
+static guint
+get_skinny_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
{
guint32 hdr_data_length;
@@ -1258,10 +1259,10 @@ static guint get_skinny_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offse
static void
dissect_skinny_xml(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, const gint start, gint length)
{
- proto_item *item = NULL;
- proto_tree *subtree = NULL;
- tvbuff_t *next_tvb;
- dissector_handle_t handle;
+ proto_item *item = NULL;
+ proto_tree *subtree = NULL;
+ tvbuff_t *next_tvb;
+ dissector_handle_t handle;
item = proto_tree_add_item(tree, hf_skinny_xmlData, tvb, start, length, ENC_ASCII|ENC_NA);
subtree = proto_item_add_subtree(item, 0);
@@ -1276,21 +1277,21 @@ dissect_skinny_xml(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, const gi
static void
dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- int offset = 0;
- gboolean is_video = FALSE; /* FIX ME: need to indicate video or not */
+ int offset = 0;
+ gboolean is_video = FALSE; /* FIX ME: need to indicate video or not */
/* Header fields */
- guint32 hdr_data_length;
- guint32 hdr_version;
- guint32 data_messageid;
+ guint32 hdr_data_length;
+ guint32 hdr_version;
+ guint32 data_messageid;
/* guint32 data_size; */
- guint i = 0;
- guint t = 0;
- int j = 0;
- guint count;
- int val;
- guint32 ipversion;
+ guint i = 0;
+ guint t = 0;
+ int j = 0;
+ guint count;
+ int val;
+ guint32 ipversion;
guint32 capCount;
guint32 softKeyCount;
@@ -1316,8 +1317,8 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
pi_current++;
if (pi_current == MAX_SKINNY_MESSAGES_IN_PACKET)
{
- /* Overwrite info in first struct if run out of space... */
- pi_current = 0;
+ /* Overwrite info in first struct if run out of space... */
+ pi_current = 0;
}
si = &pi_arr[pi_current];
si->messId = data_messageid;
@@ -1342,7 +1343,7 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (check_col(pinfo->cinfo, COL_INFO)) {
col_add_fstr(pinfo->cinfo, COL_INFO,"%s ", si->messageName);
- col_set_fence(pinfo->cinfo, COL_INFO);
+ col_set_fence(pinfo->cinfo, COL_INFO);
}
if (tree) {
@@ -1372,9 +1373,9 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(skinny_tree, hf_skinny_stationKeypadButton, tvb, offset+12, 4, ENC_LITTLE_ENDIAN);
if (hdr_data_length > 8) {
proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+16, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+20, 4, ENC_LITTLE_ENDIAN);
- si->lineId = tvb_get_letohl(tvb, offset+16);
- si->callId = tvb_get_letohl(tvb, offset+20);
+ proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+20, 4, ENC_LITTLE_ENDIAN);
+ si->lineId = tvb_get_letohl(tvb, offset+16);
+ si->callId = tvb_get_letohl(tvb, offset+20);
}
break;
@@ -1386,26 +1387,26 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(skinny_tree, hf_skinny_stimulus, tvb, offset+12, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(skinny_tree, hf_skinny_stimulusInstance, tvb, offset+16, 4, ENC_LITTLE_ENDIAN);
if (hdr_data_length > 12) {
- proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+20, 4, ENC_LITTLE_ENDIAN);
- si->callId = tvb_get_letohl(tvb, offset+20);
+ proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+20, 4, ENC_LITTLE_ENDIAN);
+ si->callId = tvb_get_letohl(tvb, offset+20);
}
break;
case 0x0006: /* OffHookMessage */
if (hdr_data_length > 4) {
- proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+12, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+16, 4, ENC_LITTLE_ENDIAN);
- si->lineId = tvb_get_letohl(tvb, offset+12);
- si->callId = tvb_get_letohl(tvb, offset+16);
+ proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+12, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+16, 4, ENC_LITTLE_ENDIAN);
+ si->lineId = tvb_get_letohl(tvb, offset+12);
+ si->callId = tvb_get_letohl(tvb, offset+16);
}
break;
case 0x0007: /* OnHookMessage */
if (hdr_data_length > 4) {
- proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+12, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+16, 4, ENC_LITTLE_ENDIAN);
- si->lineId = tvb_get_letohl(tvb, offset+12);
- si->callId = tvb_get_letohl(tvb, offset+16);
+ proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+12, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+16, 4, ENC_LITTLE_ENDIAN);
+ si->lineId = tvb_get_letohl(tvb, offset+12);
+ si->callId = tvb_get_letohl(tvb, offset+16);
}
break;
@@ -1447,9 +1448,9 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
capCount = tvb_get_letohl(tvb, offset+12);
proto_tree_add_uint(skinny_tree, hf_skinny_capCount, tvb, offset+12, 4, capCount);
for (i = 0; i < capCount; i++) {
- proto_tree_add_item(skinny_tree, hf_skinny_payloadCapability, tvb, offset+(i*16)+16, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(skinny_tree, hf_skinny_maxFramesPerPacket, tvb, offset+(i*16)+20, 2, ENC_LITTLE_ENDIAN);
- /* FIXME -- decode the union under here as required, is always 0 on my equipment */
+ proto_tree_add_item(skinny_tree, hf_skinny_payloadCapability, tvb, offset+(i*16)+16, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(skinny_tree, hf_skinny_maxFramesPerPacket, tvb, offset+(i*16)+20, 2, ENC_LITTLE_ENDIAN);
+ /* FIXME -- decode the union under here as required, is always 0 on my equipment */
}
break;
@@ -1491,15 +1492,15 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
si->passThruId = tvb_get_letohl(tvb, offset+24);
} else if (hdr_version == CM7_MSG_TYPE_A || hdr_version == CM7_MSG_TYPE_B || hdr_version == CM7_MSG_TYPE_C) {
proto_tree_add_item(skinny_tree, hf_skinny_ORCStatus, tvb, offset+12, 4, ENC_LITTLE_ENDIAN);
- /*Assume the field of next 4 bytes is IP Version*/
- ipversion = tvb_get_ntohl(tvb, offset+16);
- proto_tree_add_item(skinny_tree, hf_skinny_IPVersion, tvb, offset+16, 4, ENC_LITTLE_ENDIAN);
- /*Here we take "0" as IPv4, "others" as IPv6, maybe we need to fix it later*/
- if (ipversion == 0) {
- proto_tree_add_item(skinny_tree, hf_skinny_ipAddress, tvb, offset+20, 4, ENC_BIG_ENDIAN);
- } else {
+ /*Assume the field of next 4 bytes is IP Version*/
+ ipversion = tvb_get_ntohl(tvb, offset+16);
+ proto_tree_add_item(skinny_tree, hf_skinny_IPVersion, tvb, offset+16, 4, ENC_LITTLE_ENDIAN);
+ /*Here we take "0" as IPv4, "others" as IPv6, maybe we need to fix it later*/
+ if (ipversion == 0) {
+ proto_tree_add_item(skinny_tree, hf_skinny_ipAddress, tvb, offset+20, 4, ENC_BIG_ENDIAN);
+ } else {
proto_tree_add_item(skinny_tree, hf_skinny_ipV6Address, tvb, offset+20, 16, ENC_NA);
- }
+ }
proto_tree_add_item(skinny_tree, hf_skinny_portNumber, tvb, offset+36, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+40, 4, ENC_LITTLE_ENDIAN);
if (rtp_handle) {
@@ -1882,19 +1883,19 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(skinny_tree, hf_skinny_deviceTone, tvb, offset+12, 4, ENC_LITTLE_ENDIAN);
/* offset 16 to 19: reserved */
if (hdr_data_length > 12) {
- proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+20, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+24, 4, ENC_LITTLE_ENDIAN);
- si->lineId = tvb_get_letohl(tvb, offset+20);
- si->callId = tvb_get_letohl(tvb, offset+24);
+ proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+20, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+24, 4, ENC_LITTLE_ENDIAN);
+ si->lineId = tvb_get_letohl(tvb, offset+20);
+ si->callId = tvb_get_letohl(tvb, offset+24);
}
break;
case 0x0083: /* StopToneMessage */
if (hdr_data_length > 4) {
- proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+12, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+16, 4, ENC_LITTLE_ENDIAN);
- si->lineId = tvb_get_letohl(tvb, offset+12);
- si->callId = tvb_get_letohl(tvb, offset+16);
+ proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+12, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+16, 4, ENC_LITTLE_ENDIAN);
+ si->lineId = tvb_get_letohl(tvb, offset+12);
+ si->callId = tvb_get_letohl(tvb, offset+16);
}
break;
@@ -1902,10 +1903,10 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(skinny_tree, hf_skinny_ringType, tvb, offset+12, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(skinny_tree, hf_skinny_ringMode, tvb, offset+16, 4, ENC_LITTLE_ENDIAN);
if (hdr_data_length > 12) {
- proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+20, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+24, 4, ENC_LITTLE_ENDIAN);
- si->lineId = tvb_get_letohl(tvb, offset+20);
- si->callId = tvb_get_letohl(tvb, offset+24);
+ proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+20, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+24, 4, ENC_LITTLE_ENDIAN);
+ si->lineId = tvb_get_letohl(tvb, offset+20);
+ si->callId = tvb_get_letohl(tvb, offset+24);
}
break;
@@ -1957,15 +1958,15 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+16, 4, ENC_LITTLE_ENDIAN);
- /*Assume the field of next 4 bytes is IP Version*/
- ipversion = tvb_get_ntohl(tvb, offset+20);
+ /*Assume the field of next 4 bytes is IP Version*/
+ ipversion = tvb_get_ntohl(tvb, offset+20);
proto_tree_add_item(skinny_tree, hf_skinny_IPVersion, tvb, offset+20, 4, ENC_LITTLE_ENDIAN);
- /*Here we take "0" as IPv4, "others" as IPv6, maybe we need to fix it later*/
- if (ipversion ==0) {
+ /*Here we take "0" as IPv4, "others" as IPv6, maybe we need to fix it later*/
+ if (ipversion ==0) {
proto_tree_add_item(skinny_tree, hf_skinny_remoteIpAddr, tvb, offset+24, 4, ENC_BIG_ENDIAN);
- } else {
+ } else {
proto_tree_add_item(skinny_tree, hf_skinny_ipV6Address, tvb, offset+24, 16, ENC_NA);
- }
+ }
proto_tree_add_item(skinny_tree, hf_skinny_remotePortNumber, tvb, offset+40, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(skinny_tree, hf_skinny_millisecondPacketSize, tvb, offset+44, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(skinny_tree, hf_skinny_payloadCapability, tvb, offset+48, 4, ENC_LITTLE_ENDIAN);
@@ -2048,21 +2049,21 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ti_sub = proto_tree_add_text(skinny_tree, tvb, i, 8, "partyPIRestrictionBits");
skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
proto_tree_add_text(skinny_sub_tree, tvb, i, 4, "%s",
- decode_boolean_bitfield( val, 0x01, 4*8, "Does RestrictCallingPartyName", "Doesn't RestrictCallingPartyName"));
+ decode_boolean_bitfield( val, 0x01, 4*8, "Does RestrictCallingPartyName", "Doesn't RestrictCallingPartyName"));
proto_tree_add_text(skinny_sub_tree, tvb, i, 4, "%s",
- decode_boolean_bitfield( val, 0x02, 4*8, "Does RestrictCallingPartyNumber", "Doesn't RestrictCallingPartyNumber"));
+ decode_boolean_bitfield( val, 0x02, 4*8, "Does RestrictCallingPartyNumber", "Doesn't RestrictCallingPartyNumber"));
proto_tree_add_text(skinny_sub_tree, tvb, i, 4, "%s",
- decode_boolean_bitfield( val, 0x04, 4*8, "Does RestrictCalledPartyName", "Doesn't RestrictCalledPartyName"));
+ decode_boolean_bitfield( val, 0x04, 4*8, "Does RestrictCalledPartyName", "Doesn't RestrictCalledPartyName"));
proto_tree_add_text(skinny_sub_tree, tvb, i, 4, "%s",
- decode_boolean_bitfield( val, 0x08, 4*8, "Does RestrictCalledPartyNumber", "Doesn't RestrictCalledPartyNumber"));
+ decode_boolean_bitfield( val, 0x08, 4*8, "Does RestrictCalledPartyNumber", "Doesn't RestrictCalledPartyNumber"));
proto_tree_add_text(skinny_sub_tree, tvb, i, 4, "%s",
- decode_boolean_bitfield( val, 0x10, 4*8, "Does RestrictOriginalCalledPartyName", "Doesn't RestrictOriginalCalledPartyName"));
+ decode_boolean_bitfield( val, 0x10, 4*8, "Does RestrictOriginalCalledPartyName", "Doesn't RestrictOriginalCalledPartyName"));
proto_tree_add_text(skinny_sub_tree, tvb, i, 4, "%s",
- decode_boolean_bitfield( val, 0x20, 4*8, "Does RestrictOriginalCalledPartyNumber", "Doesn't RestrictOriginalCalledPartyNumber"));
+ decode_boolean_bitfield( val, 0x20, 4*8, "Does RestrictOriginalCalledPartyNumber", "Doesn't RestrictOriginalCalledPartyNumber"));
proto_tree_add_text(skinny_sub_tree, tvb, i, 4, "%s",
- decode_boolean_bitfield( val, 0x40, 4*8, "Does RestrictLastRedirectPartyName", "Doesn't RestrictLastRedirectPartyName"));
+ decode_boolean_bitfield( val, 0x40, 4*8, "Does RestrictLastRedirectPartyName", "Doesn't RestrictLastRedirectPartyName"));
proto_tree_add_text(skinny_sub_tree, tvb, i, 4, "%s",
- decode_boolean_bitfield( val, 0x80, 4*8, "Does RestrictLastRedirectPartyNumber", "Doesn't RestrictLastRedirectPartyNumber"));
+ decode_boolean_bitfield( val, 0x80, 4*8, "Does RestrictLastRedirectPartyNumber", "Doesn't RestrictLastRedirectPartyNumber"));
break;
case 0x0090: /* ForwardStatMessage */
@@ -2141,8 +2142,8 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(skinny_tree, hf_skinny_buttonCount, tvb, offset+16, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(skinny_tree, hf_skinny_totalButtonCount, tvb, offset+20, 4, ENC_LITTLE_ENDIAN);
for (i = 0; i < StationMaxButtonTemplateSize; i++) {
- proto_tree_add_item(skinny_tree, hf_skinny_buttonInstanceNumber, tvb, offset+(i*2)+24, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(skinny_tree, hf_skinny_buttonDefinition, tvb, offset+(i*2)+25, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(skinny_tree, hf_skinny_buttonInstanceNumber, tvb, offset+(i*2)+24, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(skinny_tree, hf_skinny_buttonDefinition, tvb, offset+(i*2)+25, 1, ENC_LITTLE_ENDIAN);
}
break;
@@ -2163,7 +2164,7 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case 0x009c: /* EnunciatorCommandMessage */
proto_tree_add_item(skinny_tree, hf_skinny_mediaEnunciationType, tvb, offset+12, 4, ENC_LITTLE_ENDIAN);
for (i = 0; i < StationMaxDirnumSize; i++) {
- proto_tree_add_item(skinny_tree, hf_skinny_unknown, tvb, offset+16+(i*4), 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(skinny_tree, hf_skinny_unknown, tvb, offset+16+(i*4), 4, ENC_LITTLE_ENDIAN);
}
i = offset+16+StationMaxDirnumSize;
proto_tree_add_item(skinny_tree, hf_skinny_mediaEnunciationType, tvb, i, 4, ENC_LITTLE_ENDIAN);
@@ -2175,15 +2176,16 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case 0x009e: /* ServerResMessage */
for (i = 0; i < StationMaxServers; i++) {
- proto_tree_add_item(skinny_tree, hf_skinny_serverIdentifier, tvb, offset+12+(i*StationMaxServers), StationMaxServerNameSize, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(skinny_tree, hf_skinny_serverIdentifier,
+ tvb, offset+12+(i*StationMaxServers), StationMaxServerNameSize, ENC_ASCII|ENC_NA);
}
j = offset+12+(i*StationMaxServers);
for (i = 0; i < StationMaxServers; i++) {
- proto_tree_add_item(skinny_tree, hf_skinny_serverListenPort, tvb, j+(i*4), 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(skinny_tree, hf_skinny_serverListenPort, tvb, j+(i*4), 4, ENC_LITTLE_ENDIAN);
}
j = j+(i*4);
for (i = 0; i < StationMaxServers; i++) {
- proto_tree_add_item(skinny_tree, hf_skinny_serverIpAddress, tvb, j+(i*4), 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(skinny_tree, hf_skinny_serverIpAddress, tvb, j+(i*4), 4, ENC_BIG_ENDIAN);
}
break;
@@ -2265,8 +2267,9 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_uint(skinny_tree, hf_skinny_softKeyCount, tvb, offset+16, 4, softKeyCount);
proto_tree_add_item(skinny_tree, hf_skinny_totalSoftKeyCount, tvb, offset+20, 4, ENC_LITTLE_ENDIAN);
for (i = 0; ((i < StationMaxSoftKeyDefinition) && (i < softKeyCount)); i++){
- proto_tree_add_item(skinny_tree, hf_skinny_softKeyLabel, tvb, offset+(i*20)+24, StationMaxSoftKeyLabelSize, ENC_ASCII|ENC_NA);
- proto_tree_add_item(skinny_tree, hf_skinny_softKeyEvent, tvb, offset+(i*20)+40, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(skinny_tree, hf_skinny_softKeyLabel,
+ tvb, offset+(i*20)+24, StationMaxSoftKeyLabelSize, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(skinny_tree, hf_skinny_softKeyEvent, tvb, offset+(i*20)+40, 4, ENC_LITTLE_ENDIAN);
}
/* there is more data here, but it doesn't make a whole lot of sense, I imagine
* it's just some not zero'd out stuff in the packet or...
@@ -2279,13 +2282,14 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_uint(skinny_tree, hf_skinny_softKeySetCount, tvb, offset+16, 4, softKeySetCount);
proto_tree_add_item(skinny_tree, hf_skinny_totalSoftKeySetCount, tvb, offset+20, 4, ENC_LITTLE_ENDIAN);
for (i = 0; ((i < StationMaxSoftKeySetDefinition) && (i < softKeySetCount)); i++) {
- proto_tree_add_uint(skinny_tree, hf_skinny_softKeySetDescription, tvb, offset+24+(i*48) , 1, i);
- for (j = 0; j < StationMaxSoftKeyIndex; j++) {
- proto_tree_add_item(skinny_tree, hf_skinny_softKeyTemplateIndex, tvb, offset+24+(i*48)+j, 1, ENC_LITTLE_ENDIAN);
- }
- for (j = 0; j < StationMaxSoftKeyIndex; j++) {
- proto_tree_add_item(skinny_tree, hf_skinny_softKeyInfoIndex, tvb, offset+24+(i*48)+StationMaxSoftKeyIndex+(j*2), 2, ENC_LITTLE_ENDIAN);
- }
+ proto_tree_add_uint(skinny_tree, hf_skinny_softKeySetDescription, tvb, offset+24+(i*48) , 1, i);
+ for (j = 0; j < StationMaxSoftKeyIndex; j++) {
+ proto_tree_add_item(skinny_tree, hf_skinny_softKeyTemplateIndex, tvb, offset+24+(i*48)+j, 1, ENC_LITTLE_ENDIAN);
+ }
+ for (j = 0; j < StationMaxSoftKeyIndex; j++) {
+ proto_tree_add_item(skinny_tree, hf_skinny_softKeyInfoIndex,
+ tvb, offset+24+(i*48)+StationMaxSoftKeyIndex+(j*2), 2, ENC_LITTLE_ENDIAN);
+ }
}
break;
@@ -2541,22 +2545,22 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
si->callId = tvb_get_letohl(tvb, offset+28);
/* add audio part of union */
- ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 12, "audioParameters");
- skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
+ ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 12, "audioParameters");
+ skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
proto_tree_add_item(skinny_sub_tree, hf_skinny_millisecondPacketSize, tvb, offset+44, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(skinny_sub_tree, hf_skinny_echoCancelType, tvb, offset+48, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(skinny_sub_tree, hf_skinny_g723BitRate, tvb, offset+52, 4, ENC_LITTLE_ENDIAN);
/* add video part of union */
- ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 30, "vidParameters");
- skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
+ ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 30, "vidParameters");
+ skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
proto_tree_add_item(skinny_sub_tree, hf_skinny_bitRate, tvb, offset+44, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(skinny_sub_tree, hf_skinny_pictureFormatCount, tvb, offset+48, 4, ENC_LITTLE_ENDIAN);
skinny_sub_tree_sav = skinny_sub_tree;
count = offset+52;
for ( i = 0; i < MAX_PICTURE_FORMAT; i++ ) {
- ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8 * MAX_PICTURE_FORMAT, "pictureFormat[%d]", i);
- skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
+ ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8 * MAX_PICTURE_FORMAT, "pictureFormat[%d]", i);
+ skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
proto_tree_add_item(skinny_sub_tree, hf_skinny_format, tvb, count, 4, ENC_LITTLE_ENDIAN);
count += 4;
proto_tree_add_item(skinny_sub_tree, hf_skinny_MPI, tvb, count, 4, ENC_LITTLE_ENDIAN);
@@ -2568,33 +2572,33 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
val = count;
/* add H261 part of union */
- ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "h261VideoCapability");
- skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
- proto_tree_add_item(skinny_sub_tree, hf_skinny_temporalSpatialTradeOffCapability, tvb, count, 4, ENC_LITTLE_ENDIAN);
+ ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "h261VideoCapability");
+ skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
+ proto_tree_add_item(skinny_sub_tree, hf_skinny_temporalSpatialTradeOffCapability, tvb, count, 4, ENC_LITTLE_ENDIAN);
count += 4;
- proto_tree_add_item(skinny_sub_tree, hf_skinny_stillImageTransmission, tvb, count, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(skinny_sub_tree, hf_skinny_stillImageTransmission, tvb, count, 4, ENC_LITTLE_ENDIAN);
/* add H263 part of union */
count = val;
- ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "h263VideoCapability");
- skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
- proto_tree_add_item(skinny_sub_tree, hf_skinny_h263_capability_bitfield, tvb, count, 4, ENC_LITTLE_ENDIAN);
+ ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "h263VideoCapability");
+ skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
+ proto_tree_add_item(skinny_sub_tree, hf_skinny_h263_capability_bitfield, tvb, count, 4, ENC_LITTLE_ENDIAN);
count += 4;
- proto_tree_add_item(skinny_sub_tree, hf_skinny_annexNandWFutureUse, tvb, count, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(skinny_sub_tree, hf_skinny_annexNandWFutureUse, tvb, count, 4, ENC_LITTLE_ENDIAN);
/* add Vieo part of union */
count = val;
- ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "vieoVideoCapability");
- skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
- proto_tree_add_item(skinny_sub_tree, hf_skinny_modelNumber, tvb, count, 4, ENC_LITTLE_ENDIAN);
+ ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "vieoVideoCapability");
+ skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
+ proto_tree_add_item(skinny_sub_tree, hf_skinny_modelNumber, tvb, count, 4, ENC_LITTLE_ENDIAN);
count += 4;
- proto_tree_add_item(skinny_sub_tree, hf_skinny_bandwidth, tvb, count, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(skinny_sub_tree, hf_skinny_bandwidth, tvb, count, 4, ENC_LITTLE_ENDIAN);
/* add data part of union */
- ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "dataParameters");
- skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
- proto_tree_add_item(skinny_sub_tree, hf_skinny_protocolDependentData, tvb, offset+44, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(skinny_sub_tree, hf_skinny_maxBitRate, tvb, offset+48, 4, ENC_LITTLE_ENDIAN);
+ ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "dataParameters");
+ skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
+ proto_tree_add_item(skinny_sub_tree, hf_skinny_protocolDependentData, tvb, offset+44, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(skinny_sub_tree, hf_skinny_maxBitRate, tvb, offset+48, 4, ENC_LITTLE_ENDIAN);
break;
case 0x0132: /* StartMultiMediaTransmission */
@@ -2611,22 +2615,22 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
si->callId = tvb_get_letohl(tvb, offset+32);
/* add audio part of union */
- ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 12, "audioParameters");
- skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
+ ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 12, "audioParameters");
+ skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
proto_tree_add_item(skinny_sub_tree, hf_skinny_millisecondPacketSize, tvb, offset+48, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(skinny_sub_tree, hf_skinny_echoCancelType, tvb, offset+52, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(skinny_sub_tree, hf_skinny_g723BitRate, tvb, offset+56, 4, ENC_LITTLE_ENDIAN);
/* add video part of union */
- ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 30, "vidParameters");
- skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
+ ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 30, "vidParameters");
+ skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
proto_tree_add_item(skinny_sub_tree, hf_skinny_bitRate, tvb, offset+48, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(skinny_sub_tree, hf_skinny_pictureFormatCount, tvb, offset+52, 4, ENC_LITTLE_ENDIAN);
skinny_sub_tree_sav = skinny_sub_tree;
count = offset+56;
for ( i = 0; i < MAX_PICTURE_FORMAT; i++ ) {
- ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8 * MAX_PICTURE_FORMAT, "pictureFormat[%d]", i);
- skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
+ ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8 * MAX_PICTURE_FORMAT, "pictureFormat[%d]", i);
+ skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
proto_tree_add_item(skinny_sub_tree, hf_skinny_format, tvb, count, 4, ENC_LITTLE_ENDIAN);
count += 4;
proto_tree_add_item(skinny_sub_tree, hf_skinny_MPI, tvb, count, 4, ENC_LITTLE_ENDIAN);
@@ -2638,33 +2642,33 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
val = count;
/* add H261 part of union */
- ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "h261VideoCapability");
- skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
- proto_tree_add_item(skinny_sub_tree, hf_skinny_temporalSpatialTradeOffCapability, tvb, count, 4, ENC_LITTLE_ENDIAN);
+ ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "h261VideoCapability");
+ skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
+ proto_tree_add_item(skinny_sub_tree, hf_skinny_temporalSpatialTradeOffCapability, tvb, count, 4, ENC_LITTLE_ENDIAN);
count += 4;
- proto_tree_add_item(skinny_sub_tree, hf_skinny_stillImageTransmission, tvb, count, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(skinny_sub_tree, hf_skinny_stillImageTransmission, tvb, count, 4, ENC_LITTLE_ENDIAN);
/* add H263 part of union */
count = val;
- ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "h263VideoCapability");
- skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
- proto_tree_add_item(skinny_sub_tree, hf_skinny_h263_capability_bitfield, tvb, count, 4, ENC_LITTLE_ENDIAN);
+ ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "h263VideoCapability");
+ skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
+ proto_tree_add_item(skinny_sub_tree, hf_skinny_h263_capability_bitfield, tvb, count, 4, ENC_LITTLE_ENDIAN);
count += 4;
- proto_tree_add_item(skinny_sub_tree, hf_skinny_annexNandWFutureUse, tvb, count, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(skinny_sub_tree, hf_skinny_annexNandWFutureUse, tvb, count, 4, ENC_LITTLE_ENDIAN);
/* add Vieo part of union */
count = val;
- ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "vieoVideoCapability");
- skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
- proto_tree_add_item(skinny_sub_tree, hf_skinny_modelNumber, tvb, count, 4, ENC_LITTLE_ENDIAN);
+ ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "vieoVideoCapability");
+ skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
+ proto_tree_add_item(skinny_sub_tree, hf_skinny_modelNumber, tvb, count, 4, ENC_LITTLE_ENDIAN);
count += 4;
- proto_tree_add_item(skinny_sub_tree, hf_skinny_bandwidth, tvb, count, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(skinny_sub_tree, hf_skinny_bandwidth, tvb, count, 4, ENC_LITTLE_ENDIAN);
/* add data part of union */
- ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "dataParameters");
- skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
- proto_tree_add_item(skinny_sub_tree, hf_skinny_protocolDependentData, tvb, offset+48, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(skinny_sub_tree, hf_skinny_maxBitRate, tvb, offset+52, 4, ENC_LITTLE_ENDIAN);
+ ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "dataParameters");
+ skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
+ proto_tree_add_item(skinny_sub_tree, hf_skinny_protocolDependentData, tvb, offset+48, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(skinny_sub_tree, hf_skinny_maxBitRate, tvb, offset+52, 4, ENC_LITTLE_ENDIAN);
break;
case 0x0133: /* StopMultiMediaTransmission */
@@ -2690,47 +2694,47 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* not sure of format */
/* show videoFastUpdateGOB */
- ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "videoFastUpdateGOB");
- skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
+ ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "videoFastUpdateGOB");
+ skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
proto_tree_add_item(skinny_sub_tree, hf_skinny_firstGOB, tvb, offset+28, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(skinny_sub_tree, hf_skinny_numberOfGOBs, tvb, offset+32, 4, ENC_LITTLE_ENDIAN);
/* show videoFastUpdateMB */
- ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "videoFastUpdateGOB");
- skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
+ ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "videoFastUpdateGOB");
+ skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
proto_tree_add_item(skinny_sub_tree, hf_skinny_firstGOB, tvb, offset+28, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(skinny_sub_tree, hf_skinny_firstMB, tvb, offset+32, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(skinny_sub_tree, hf_skinny_numberOfMBs, tvb, offset+36, 4, ENC_LITTLE_ENDIAN);
/* show lostPicture */
- ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "lostPicture");
- skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
+ ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "lostPicture");
+ skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
proto_tree_add_item(skinny_sub_tree, hf_skinny_pictureNumber, tvb, offset+28, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(skinny_sub_tree, hf_skinny_longTermPictureIndex, tvb, offset+32, 4, ENC_LITTLE_ENDIAN);
/* show lostPartialPicture */
- ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "lostPartialPicture");
- skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
+ ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "lostPartialPicture");
+ skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
proto_tree_add_item(skinny_sub_tree, hf_skinny_pictureNumber, tvb, offset+28, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(skinny_sub_tree, hf_skinny_longTermPictureIndex, tvb, offset+32, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(skinny_sub_tree, hf_skinny_firstMB, tvb, offset+36, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(skinny_sub_tree, hf_skinny_numberOfMBs, tvb, offset+40, 4, ENC_LITTLE_ENDIAN);
/* show recoveryReferencePicture */
- ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "recoveryReferencePicture");
- skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
+ ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "recoveryReferencePicture");
+ skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
proto_tree_add_item(skinny_sub_tree, hf_skinny_recoveryReferencePictureCount, tvb, offset+28, 4, ENC_LITTLE_ENDIAN);
skinny_sub_tree_sav = skinny_sub_tree;
for ( i = 0; i < MAX_REFERENCE_PICTURE; i++ ) {
- ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "recoveryReferencePicture[%d]", i);
- skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
+ ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "recoveryReferencePicture[%d]", i);
+ skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
proto_tree_add_item(skinny_sub_tree, hf_skinny_pictureNumber, tvb, offset+32+(i*8), 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(skinny_sub_tree, hf_skinny_longTermPictureIndex, tvb, offset+36+(i*8), 4, ENC_LITTLE_ENDIAN);
}
/* show temporalSpatialTradeOff */
- ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 4, "temporalSpatialTradeOff");
- skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
+ ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 4, "temporalSpatialTradeOff");
+ skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree);
proto_tree_add_item(skinny_sub_tree, hf_skinny_temporalSpatialTradeOff, tvb, offset+28, 4, ENC_LITTLE_ENDIAN);
break;
@@ -2974,7 +2978,7 @@ dissect_skinny(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
col_set_str(pinfo->cinfo, COL_INFO, "Skinny Client Control Protocol");
tcp_dissect_pdus(tvb, pinfo, tree, skinny_desegment, 4,
- get_skinny_pdu_len, dissect_skinny_pdu);
+ get_skinny_pdu_len, dissect_skinny_pdu);
return TRUE;
}
@@ -2988,1687 +2992,1687 @@ proto_register_skinny(void)
static hf_register_info hf[] = {
{ &hf_skinny_data_length,
{ "Data length", "skinny.data_length",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Number of bytes in the data portion.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of bytes in the data portion.",
+ HFILL }
},
{ &hf_skinny_hdr_version,
{ "Header version", "skinny.hdr_version",
- FT_UINT32, BASE_HEX, VALS(header_version), 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_HEX, VALS(header_version), 0x0,
+ NULL,
+ HFILL }
},
/* FIXME: Enable use of message name ??? */
{ &hf_skinny_messageid,
{ "Message ID", "skinny.messageid",
- FT_UINT32, BASE_HEX|BASE_EXT_STRING, &message_id_ext, 0x0,
- "The function requested/done with this message.",
- HFILL }
+ FT_UINT32, BASE_HEX|BASE_EXT_STRING, &message_id_ext, 0x0,
+ "The function requested/done with this message.",
+ HFILL }
},
{ &hf_skinny_deviceName,
{ "Device name", "skinny.deviceName",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The device name of the phone.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The device name of the phone.",
+ HFILL }
},
{ &hf_skinny_stationUserId,
{ "Station user ID", "skinny.stationUserId",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_stationInstance,
{ "Station instance", "skinny.stationInstance",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_deviceType,
{ "Device type", "skinny.deviceType",
- FT_UINT32, BASE_DEC|BASE_EXT_STRING, &deviceTypes_ext, 0x0,
- "DeviceType of the station.",
- HFILL }
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &deviceTypes_ext, 0x0,
+ "DeviceType of the station.",
+ HFILL }
},
{ &hf_skinny_maxStreams,
{ "Max streams", "skinny.maxStreams",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "32 bit unsigned integer indicating the maximum number of simultansous RTP duplex streams that the client can handle.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "32 bit unsigned integer indicating the maximum number of simultansous RTP duplex streams that the client can handle.",
+ HFILL }
},
{ &hf_skinny_stationIpPort,
{ "Station ip port", "skinny.stationIpPort",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_stationKeypadButton,
{ "Keypad button", "skinny.stationKeypadButton",
- FT_UINT32, BASE_HEX|BASE_EXT_STRING, &keypadButtons_ext, 0x0,
- "The button pressed on the phone.",
- HFILL }
+ FT_UINT32, BASE_HEX|BASE_EXT_STRING, &keypadButtons_ext, 0x0,
+ "The button pressed on the phone.",
+ HFILL }
},
{ &hf_skinny_calledPartyNumber,
{ "Called party number", "skinny.calledParty",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The number called.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The number called.",
+ HFILL }
},
{ &hf_skinny_stimulus,
{ "Stimulus", "skinny.stimulus",
- FT_UINT32, BASE_HEX|BASE_EXT_STRING, &deviceStimuli_ext, 0x0,
- "Reason for the device stimulus message.",
- HFILL }
+ FT_UINT32, BASE_HEX|BASE_EXT_STRING, &deviceStimuli_ext, 0x0,
+ "Reason for the device stimulus message.",
+ HFILL }
},
{ &hf_skinny_stimulusInstance,
{ "Stimulus instance", "skinny.stimulusInstance",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_lineNumber,
{ "Line number", "skinny.lineNumber",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_speedDialNumber,
{ "Speed-dial number", "skinny.speedDialNumber",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Which speed dial number",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Which speed dial number",
+ HFILL }
},
{ &hf_skinny_capCount,
{ "Capabilities count", "skinny.capCount",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "How many capabilities",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "How many capabilities",
+ HFILL }
},
{ &hf_skinny_payloadCapability,
{ "Payload capability", "skinny.payloadCapability",
- FT_UINT32, BASE_DEC|BASE_EXT_STRING, &mediaPayloads_ext, 0x0,
- "The payload capability for this media capability structure.",
- HFILL }
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &mediaPayloads_ext, 0x0,
+ "The payload capability for this media capability structure.",
+ HFILL }
},
{ &hf_skinny_maxFramesPerPacket,
{ "Max frames per packet", "skinny.maxFramesPerPacket",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_alarmSeverity,
{ "Alarm severity", "skinny.alarmSeverity",
- FT_UINT32, BASE_DEC|BASE_EXT_STRING, &alarmSeverities_ext, 0x0,
- "The severity of the reported alarm.",
- HFILL }
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &alarmSeverities_ext, 0x0,
+ "The severity of the reported alarm.",
+ HFILL }
},
{ &hf_skinny_alarmParam1,
{ "Alarm param 1", "skinny.alarmParam1",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- "An as yet undecoded param1 value from the alarm message",
- HFILL }
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "An as yet undecoded param1 value from the alarm message",
+ HFILL }
},
{ &hf_skinny_alarmParam2,
{ "Alarm param 2", "skinny.alarmParam2",
- FT_IPv4, BASE_NONE, NULL, 0x0,
- "This is the second alarm parameter i think it's an ip address",
- HFILL }
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ "This is the second alarm parameter i think it's an ip address",
+ HFILL }
},
{ &hf_skinny_receptionStatus,
{ "Reception status", "skinny.receptionStatus",
- FT_UINT32, BASE_DEC, VALS(multicastMediaReceptionStatus), 0x0,
- "The current status of the multicast media.",
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(multicastMediaReceptionStatus), 0x0,
+ "The current status of the multicast media.",
+ HFILL }
},
{ &hf_skinny_passThruPartyID,
{ "Pass-thru party ID", "skinny.passThruPartyID",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_ORCStatus,
{ "Opened receive-channel status", "skinny.openReceiveChannelStatus",
- FT_UINT32, BASE_DEC, VALS(openReceiveChanStatus), 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(openReceiveChanStatus), 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_IPVersion,
{ "IP Version", "skinny.ipversion",
- FT_UINT32, BASE_DEC, VALS(ipVersion), 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(ipVersion), 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_ipAddress,
{ "IP address", "skinny.ipAddress",
- FT_IPv4, BASE_NONE, NULL, 0x0,
- NULL,
- HFILL }
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_ipV6Address,
{ "IPv6 address", "skinny.ipv6Address",
- FT_IPv6, BASE_NONE, NULL, 0x0,
- NULL,
- HFILL }
+ FT_IPv6, BASE_NONE, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_portNumber,
{ "Port number", "skinny.portNumber",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_statsProcessingType,
{ "Stats processing type", "skinny.statsProcessingType",
- FT_UINT32, BASE_DEC, VALS(statsProcessingTypes), 0x0,
- "What do do after you send the stats.",
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(statsProcessingTypes), 0x0,
+ "What do do after you send the stats.",
+ HFILL }
},
{ &hf_skinny_callIdentifier,
{ "Call identifier", "skinny.callIdentifier",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_packetsSent,
{ "Packets sent", "skinny.packetsSent",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_octetsSent,
{ "Octets sent", "skinny.octetsSent",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_packetsRecv,
{ "Packets Received", "skinny.packetsRecv",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_octetsRecv,
{ "Octets received", "skinny.octetsRecv",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_packetsLost,
{ "Packets lost", "skinny.packetsLost",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_latency,
{ "Latency(ms)", "skinny.latency",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Average packet latency during the call.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Average packet latency during the call.",
+ HFILL }
},
{ &hf_skinny_jitter,
{ "Jitter", "skinny.jitter",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Average jitter during the call.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Average jitter during the call.",
+ HFILL }
},
{ &hf_skinny_directoryNumber,
{ "Directory number", "skinny.directoryNumber",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The number we are reporting statistics for.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The number we are reporting statistics for.",
+ HFILL }
},
{ &hf_skinny_lineInstance,
{ "Line instance", "skinny.lineInstance",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The display call plane associated with this call.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The display call plane associated with this call.",
+ HFILL }
},
{ &hf_skinny_softKeyEvent,
{ "Soft-key event", "skinny.softKeyEvent",
- FT_UINT32, BASE_DEC|BASE_EXT_STRING, &softKeyEvents_ext, 0x0,
- "Which softkey event is being reported.",
- HFILL }
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &softKeyEvents_ext, 0x0,
+ "Which softkey event is being reported.",
+ HFILL }
},
{ &hf_skinny_keepAliveInterval,
{ "Keep-alive interval", "skinny.keepAliveInterval",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "How often are keep alives exchanges between the client and the call manager.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "How often are keep alives exchanges between the client and the call manager.",
+ HFILL }
},
{ &hf_skinny_secondaryKeepAliveInterval,
{ "Secondary keep-alive interval", "skinny.secondaryKeepAliveInterval",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "How often are keep alives exchanges between the client and the secondary call manager.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "How often are keep alives exchanges between the client and the secondary call manager.",
+ HFILL }
},
{ &hf_skinny_dateTemplate,
{ "Date template", "skinny.dateTemplate",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The display format for the date/time on the phone.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The display format for the date/time on the phone.",
+ HFILL }
},
{ &hf_skinny_buttonOffset,
{ "Button offset", "skinny.buttonOffset",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Offset is the number of the first button referenced by this message.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Offset is the number of the first button referenced by this message.",
+ HFILL }
},
{ &hf_skinny_buttonCount,
{ "Buttons count", "skinny.buttonCount",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Number of (VALID) button definitions in this message.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of (VALID) button definitions in this message.",
+ HFILL }
},
{ &hf_skinny_totalButtonCount,
{ "Total buttons count", "skinny.totalButtonCount",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The total number of buttons defined for this phone.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The total number of buttons defined for this phone.",
+ HFILL }
},
{ &hf_skinny_buttonInstanceNumber,
{ "Instance number", "skinny.buttonInstanceNumber",
- FT_UINT8, BASE_HEX|BASE_EXT_STRING, &keypadButtons_ext, 0x0,
- "The button instance number for a button or the StationKeyPad value, repeats allowed.",
- HFILL }
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &keypadButtons_ext, 0x0,
+ "The button instance number for a button or the StationKeyPad value, repeats allowed.",
+ HFILL }
},
{ &hf_skinny_buttonDefinition,
{ "Button definition", "skinny.buttonDefinition",
- FT_UINT8, BASE_HEX|BASE_EXT_STRING, &buttonDefinitions_ext, 0x0,
- "The button type for this instance (ie line, speed dial, ....",
- HFILL }
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &buttonDefinitions_ext, 0x0,
+ "The button type for this instance (ie line, speed dial, ....",
+ HFILL }
},
{ &hf_skinny_softKeyOffset,
{ "Soft-Key offset", "skinny.softKeyOffset",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The offset for the first soft key in this message.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The offset for the first soft key in this message.",
+ HFILL }
},
{ &hf_skinny_softKeyCount,
{ "Soft-keys count", "skinny.softKeyCount",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The number of valid softkeys in this message.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The number of valid softkeys in this message.",
+ HFILL }
},
{ &hf_skinny_totalSoftKeyCount,
{ "Total soft-keys count", "skinny.totalSoftKeyCount",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The total number of softkeys for this device.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The total number of softkeys for this device.",
+ HFILL }
},
{ &hf_skinny_softKeyLabel,
{ "Soft-key label", "skinny.softKeyLabel",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The text label for this soft key.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The text label for this soft key.",
+ HFILL }
},
{ &hf_skinny_softKeySetOffset,
{ "Soft-key-set offset", "skinny.softKeySetOffset",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The offset for the first soft key set in this message.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The offset for the first soft key set in this message.",
+ HFILL }
},
{ &hf_skinny_softKeySetCount,
{ "Soft-key-sets count", "skinny.softKeySetCount",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The number of valid softkey sets in this message.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The number of valid softkey sets in this message.",
+ HFILL }
},
{ &hf_skinny_totalSoftKeySetCount,
{ "Total soft-key-sets count", "skinny.totalSoftKeySetCount",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The total number of softkey sets for this device.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The total number of softkey sets for this device.",
+ HFILL }
},
{ &hf_skinny_softKeyTemplateIndex,
{ "Soft-key template index", "skinny.softKeyTemplateIndex",
- FT_UINT8, BASE_DEC|BASE_EXT_STRING, &softKeyEvents_ext, 0x0,
- "Array of size 16 8-bit unsigned ints containing an index into the softKeyTemplate.",
- HFILL }
+ FT_UINT8, BASE_DEC|BASE_EXT_STRING, &softKeyEvents_ext, 0x0,
+ "Array of size 16 8-bit unsigned ints containing an index into the softKeyTemplate.",
+ HFILL }
},
{ &hf_skinny_softKeyInfoIndex,
{ "Soft-key info index", "skinny.softKeyInfoIndex",
- FT_UINT16, BASE_DEC|BASE_EXT_STRING, &softKeyIndexes_ext, 0x0,
- "Array of size 16 16-bit unsigned integers containing an index into the soft key description information.",
- HFILL }
+ FT_UINT16, BASE_DEC|BASE_EXT_STRING, &softKeyIndexes_ext, 0x0,
+ "Array of size 16 16-bit unsigned integers containing an index into the soft key description information.",
+ HFILL }
},
{ &hf_skinny_softKeySetDescription,
{ "Soft-key set description", "skinny.softKeySetDescription",
- FT_UINT8, BASE_DEC|BASE_EXT_STRING, &keySetNames_ext, 0x0,
- "A text description of what this softkey when this softkey set is displayed",
- HFILL }
+ FT_UINT8, BASE_DEC|BASE_EXT_STRING, &keySetNames_ext, 0x0,
+ "A text description of what this softkey when this softkey set is displayed",
+ HFILL }
},
{ &hf_skinny_softKeyMap,
{ "Soft-key map","skinny.softKeyMap",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_softKey0,
{ "SoftKey0", "skinny.softKeyMap.0",
- FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY0,
- NULL,
- HFILL }
+ FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_softKey1,
{ "SoftKey1", "skinny.softKeyMap.1",
- FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY1,
- NULL,
- HFILL }
+ FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY1,
+ NULL,
+ HFILL }
},
{ &hf_skinny_softKey2,
{ "SoftKey2", "skinny.softKeyMap.2",
- FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY2,
- NULL,
- HFILL }
+ FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY2,
+ NULL,
+ HFILL }
},
{ &hf_skinny_softKey3,
{ "SoftKey3", "skinny.softKeyMap.3",
- FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY3,
- NULL,
- HFILL }
+ FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY3,
+ NULL,
+ HFILL }
},
{ &hf_skinny_softKey4,
{ "SoftKey4", "skinny.softKeyMap.4",
- FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY4,
- NULL,
- HFILL }
+ FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY4,
+ NULL,
+ HFILL }
},
{ &hf_skinny_softKey5,
{ "SoftKey5", "skinny.softKeyMap.5",
- FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY5,
- NULL,
- HFILL }
+ FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY5,
+ NULL,
+ HFILL }
},
{ &hf_skinny_softKey6,
{ "SoftKey6", "skinny.softKeyMap.6",
- FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY6,
- NULL,
- HFILL }
+ FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY6,
+ NULL,
+ HFILL }
},
{ &hf_skinny_softKey7,
{ "SoftKey7", "skinny.softKeyMap.7",
- FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY7,
- NULL,
- HFILL }
+ FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY7,
+ NULL,
+ HFILL }
},
{ &hf_skinny_softKey8,
{ "SoftKey8", "skinny.softKeyMap.8",
- FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY8,
- NULL,
- HFILL }
+ FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY8,
+ NULL,
+ HFILL }
},
{ &hf_skinny_softKey9,
{ "SoftKey9", "skinny.softKeyMap.9",
- FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY9,
- NULL,
- HFILL }
+ FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY9,
+ NULL,
+ HFILL }
},
{ &hf_skinny_softKey10,
{ "SoftKey10", "skinny.softKeyMap.10",
- FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY10,
- NULL,
- HFILL }
+ FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY10,
+ NULL,
+ HFILL }
},
{ &hf_skinny_softKey11,
{ "SoftKey11", "skinny.softKeyMap.11",
- FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY11,
- NULL,
- HFILL }
+ FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY11,
+ NULL,
+ HFILL }
},
{ &hf_skinny_softKey12,
{ "SoftKey12", "skinny.softKeyMap.12",
- FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY12,
- NULL,
- HFILL }
+ FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY12,
+ NULL,
+ HFILL }
},
{ &hf_skinny_softKey13,
{ "SoftKey13", "skinny.softKeyMap.13",
- FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY13,
- NULL,
- HFILL }
+ FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY13,
+ NULL,
+ HFILL }
},
{ &hf_skinny_softKey14,
{ "SoftKey14", "skinny.softKeyMap.14",
- FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY14,
- NULL,
- HFILL }
+ FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY14,
+ NULL,
+ HFILL }
},
{ &hf_skinny_softKey15,
{ "SoftKey15", "skinny.softKeyMap.15",
- FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY15,
- NULL,
- HFILL }
+ FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY15,
+ NULL,
+ HFILL }
},
{ &hf_skinny_lampMode,
{ "Lamp mode", "skinny.lampMode",
- FT_UINT32, BASE_DEC|BASE_EXT_STRING, &stationLampModes_ext, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &stationLampModes_ext, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_messageTimeOutValue,
{ "Message time-out", "skinny.messageTimeOutValue",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The timeout in seconds for this message",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The timeout in seconds for this message",
+ HFILL }
},
{ &hf_skinny_displayMessage,
{ "Display message", "skinny.displayMessage",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The message displayed on the phone.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The message displayed on the phone.",
+ HFILL }
},
{ &hf_skinny_lineDirNumber,
{ "Line directory number", "skinny.lineDirNumber",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The directory number for this line.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The directory number for this line.",
+ HFILL }
},
{ &hf_skinny_lineFullyQualifiedDisplayName,
{ "Fully qualified display name", "skinny.fqdn",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The full display name for this line.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The full display name for this line.",
+ HFILL }
},
{ &hf_skinny_lineDisplayName,
{ "Display name", "skinny.displayName",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The display name for this line.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The display name for this line.",
+ HFILL }
},
{ &hf_skinny_speedDialDirNumber,
{ "Speed-dial number", "skinny.speedDialDirNum",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "the number to dial for this speed dial.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "the number to dial for this speed dial.",
+ HFILL }
},
{ &hf_skinny_speedDialDisplayName,
{ "Speed-dial display", "skinny.speedDialDisplay",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The text to display for this speed dial.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The text to display for this speed dial.",
+ HFILL }
},
{ &hf_skinny_dateYear,
{ "Year", "skinny.year",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The current year",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The current year",
+ HFILL }
},
{ &hf_skinny_dateMonth,
{ "Month", "skinny.month",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The current month",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The current month",
+ HFILL }
},
{ &hf_skinny_dayOfWeek,
{ "Day of week", "skinny.dayOfWeek",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The day of the week",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The day of the week",
+ HFILL }
},
{ &hf_skinny_dateDay,
{ "Day", "skinny.day",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The day of the current month",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The day of the current month",
+ HFILL }
},
{ &hf_skinny_dateHour,
{ "Hour", "skinny.hour",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Hour of the day",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Hour of the day",
+ HFILL }
},
{ &hf_skinny_dateMinute,
{ "Minute", "skinny.minute",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_dateSeconds,
{ "Seconds", "skinny.dateSeconds",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_dateMilliseconds,
{ "Milliseconds", "skinny.dateMilliseconds",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_timeStamp,
{ "Timestamp", "skinny.timeStamp",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Time stamp for the call reference",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Time stamp for the call reference",
+ HFILL }
},
{ &hf_skinny_callState,
{ "Call state", "skinny.callState",
- FT_UINT32, BASE_DEC|BASE_EXT_STRING, &skinny_stationCallStates_ext, 0x0,
- "The D channel call state of the call",
- HFILL }
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &skinny_stationCallStates_ext, 0x0,
+ "The D channel call state of the call",
+ HFILL }
},
{ &hf_skinny_deviceTone,
{ "Tone", "skinny.deviceTone",
- FT_UINT32, BASE_HEX|BASE_EXT_STRING, &skinny_deviceTones_ext, 0x0,
- "Which tone to play",
- HFILL }
+ FT_UINT32, BASE_HEX|BASE_EXT_STRING, &skinny_deviceTones_ext, 0x0,
+ "Which tone to play",
+ HFILL }
},
{ &hf_skinny_callingPartyName,
{ "Calling party name", "skinny.callingPartyName",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The passed name of the calling party.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The passed name of the calling party.",
+ HFILL }
},
{ &hf_skinny_callingPartyNumber,
{ "Calling party number", "skinny.callingParty",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The passed number of the calling party.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The passed number of the calling party.",
+ HFILL }
},
{ &hf_skinny_calledPartyName,
{ "Called party name", "skinny.calledPartyName",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The name of the party we are calling.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The name of the party we are calling.",
+ HFILL }
},
{ &hf_skinny_callType,
{ "Call type", "skinny.callType",
- FT_UINT32, BASE_DEC, VALS(skinny_callTypes), 0x0,
- "What type of call, in/out/etc",
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(skinny_callTypes), 0x0,
+ "What type of call, in/out/etc",
+ HFILL }
},
{ &hf_skinny_originalCalledPartyName,
{ "Original called party name", "skinny.originalCalledPartyName",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL,
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_originalCalledParty,
{ "Original called party number", "skinny.originalCalledParty",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL,
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_ringType,
{ "Ring type", "skinny.ringType",
- FT_UINT32, BASE_HEX|BASE_EXT_STRING, &skinny_ringTypes_ext, 0x0,
- "What type of ring to play",
- HFILL }
+ FT_UINT32, BASE_HEX|BASE_EXT_STRING, &skinny_ringTypes_ext, 0x0,
+ "What type of ring to play",
+ HFILL }
},
{ &hf_skinny_ringMode,
{ "Ring mode", "skinny.ringMode",
- FT_UINT32, BASE_HEX, VALS(skinny_ringModes), 0x0,
- "What mode of ring to play",
- HFILL }
+ FT_UINT32, BASE_HEX, VALS(skinny_ringModes), 0x0,
+ "What mode of ring to play",
+ HFILL }
},
{ &hf_skinny_speakerMode,
{ "Speaker", "skinny.speakerMode",
- FT_UINT32, BASE_HEX, VALS(skinny_speakerModes), 0x0,
- "This message sets the speaker mode on/off",
- HFILL }
+ FT_UINT32, BASE_HEX, VALS(skinny_speakerModes), 0x0,
+ "This message sets the speaker mode on/off",
+ HFILL }
},
{ &hf_skinny_remoteIpAddr,
{ "Remote IP address", "skinny.remoteIpAddr",
- FT_IPv4, BASE_NONE, NULL, 0x0,
- "The remote end ip address for this stream",
- HFILL }
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ "The remote end ip address for this stream",
+ HFILL }
},
{ &hf_skinny_remotePortNumber,
{ "Remote port", "skinny.remotePortNumber",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The remote port number listening for this stream",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The remote port number listening for this stream",
+ HFILL }
},
{ &hf_skinny_millisecondPacketSize,
{ "MS/packet", "skinny.millisecondPacketSize",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The number of milliseconds of conversation in each packet",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The number of milliseconds of conversation in each packet",
+ HFILL }
},
{ &hf_skinny_precedenceValue,
{ "Precedence", "skinny.precedenceValue",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_silenceSuppression,
{ "Silence suppression", "skinny.silenceSuppression",
- FT_UINT32, BASE_HEX, VALS(skinny_silenceSuppressionModes), 0x0,
- "Mode for silence suppression",
- HFILL }
+ FT_UINT32, BASE_HEX, VALS(skinny_silenceSuppressionModes), 0x0,
+ "Mode for silence suppression",
+ HFILL }
},
{ &hf_skinny_g723BitRate,
{ "G723 bitrate", "skinny.g723BitRate",
- FT_UINT32, BASE_DEC, VALS(skinny_g723BitRates), 0x0,
- "The G723 bit rate for this stream/JUNK if not g723 stream",
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(skinny_g723BitRates), 0x0,
+ "The G723 bit rate for this stream/JUNK if not g723 stream",
+ HFILL }
},
{ &hf_skinny_conferenceID,
{ "Conference ID", "skinny.conferenceID",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_deviceResetType,
{ "Reset type", "skinny.deviceResetType",
- FT_UINT32, BASE_DEC, VALS(skinny_deviceResetTypes), 0x0,
- "How the devices it to be reset (reset/restart)",
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(skinny_deviceResetTypes), 0x0,
+ "How the devices it to be reset (reset/restart)",
+ HFILL }
},
{ &hf_skinny_echoCancelType,
{ "Echo-cancel type", "skinny.echoCancelType",
- FT_UINT32, BASE_DEC, VALS(skinny_echoCancelTypes), 0x0,
- "Is echo cancelling enabled or not",
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(skinny_echoCancelTypes), 0x0,
+ "Is echo cancelling enabled or not",
+ HFILL }
},
{ &hf_skinny_deviceUnregisterStatus,
{ "Unregister status", "skinny.deviceUnregisterStatus",
- FT_UINT32, BASE_DEC, VALS(skinny_deviceUnregisterStatusTypes), 0x0,
- "The status of the device unregister request (*CAN* be refused)",
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(skinny_deviceUnregisterStatusTypes), 0x0,
+ "The status of the device unregister request (*CAN* be refused)",
+ HFILL }
},
{ &hf_skinny_hookFlashDetectMode,
{ "Hook flash mode", "skinny.hookFlashDetectMode",
- FT_UINT32, BASE_DEC, VALS(skinny_hookFlashDetectModes), 0x0,
- "Which method to use to detect that a hook flash has occured",
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(skinny_hookFlashDetectModes), 0x0,
+ "Which method to use to detect that a hook flash has occured",
+ HFILL }
},
{ &hf_skinny_detectInterval,
{ "HF Detect Interval", "skinny.detectInterval",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The number of milliseconds that determines a hook flash has occured",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The number of milliseconds that determines a hook flash has occured",
+ HFILL }
},
{ &hf_skinny_headsetMode,
{ "Headset mode", "skinny.headsetMode",
- FT_UINT32, BASE_DEC, VALS(skinny_headsetModes), 0x0,
- "Turns on and off the headset on the set",
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(skinny_headsetModes), 0x0,
+ "Turns on and off the headset on the set",
+ HFILL }
},
{ &hf_skinny_microphoneMode,
{ "Microphone mode", "skinny.microphoneMode",
- FT_UINT32, BASE_DEC, VALS(skinny_microphoneModes), 0x0,
- "Turns on and off the microphone on the set",
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(skinny_microphoneModes), 0x0,
+ "Turns on and off the microphone on the set",
+ HFILL }
},
{ &hf_skinny_activeForward,
{ "Active forward", "skinny.activeForward",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "This is non zero to indicate that a forward is active on the line",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "This is non zero to indicate that a forward is active on the line",
+ HFILL }
},
{ &hf_skinny_forwardAllActive,
{ "Forward all", "skinny.forwardAllActive",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Forward all calls",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Forward all calls",
+ HFILL }
},
{ &hf_skinny_forwardBusyActive,
{ "Forward busy", "skinny.forwardBusyActive",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Forward calls when busy",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Forward calls when busy",
+ HFILL }
},
{ &hf_skinny_forwardNoAnswerActive,
{ "Forward no answer", "skinny.forwardNoAnswerActive",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Forward only when no answer",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Forward only when no answer",
+ HFILL }
},
{ &hf_skinny_forwardNumber,
{ "Forward number", "skinny.forwardNumber",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The number to forward calls to.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The number to forward calls to.",
+ HFILL }
},
{ &hf_skinny_userName,
{ "Username", "skinny.userName",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "Username for this device.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "Username for this device.",
+ HFILL }
},
{ &hf_skinny_serverName,
{ "Server name", "skinny.serverName",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The server name for this device.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The server name for this device.",
+ HFILL }
},
{ &hf_skinny_numberLines,
{ "Number of lines", "skinny.numberLines",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "How many lines this device has",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "How many lines this device has",
+ HFILL }
},
{ &hf_skinny_numberSpeedDials,
{ "Number of speed-dials", "skinny.numberSpeedDials",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "The number of speed dials this device has",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The number of speed dials this device has",
+ HFILL }
},
{ &hf_skinny_sessionType,
{ "Session type", "skinny.sessionType",
- FT_UINT32, BASE_DEC|BASE_EXT_STRING, &skinny_sessionTypes_ext, 0x0,
- "The type of this session.",
- HFILL }
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &skinny_sessionTypes_ext, 0x0,
+ "The type of this session.",
+ HFILL }
},
{ &hf_skinny_version,
{ "Version", "skinny.version",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL,
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_mediaEnunciationType,
{ "Enunciation type", "skinny.mediaEnunciationType",
- FT_UINT32, BASE_DEC, VALS(skinny_mediaEnunciationTypes), 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(skinny_mediaEnunciationTypes), 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_serverIdentifier,
{ "Server identifier", "skinny.serverIdentifier",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL,
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_serverListenPort,
{ "Server port", "skinny.serverListenPort",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_serverIpAddress,
{ "Server IP address", "skinny.serverIpAddress",
- FT_IPv4, BASE_NONE, NULL, 0x0,
- NULL,
- HFILL }
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_multicastPort,
{ "Multicast port", "skinny.multicastPort",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_multicastIpAddress,
{ "Multicast IP address", "skinny.multicastIpAddress",
- FT_IPv4, BASE_NONE, NULL, 0x0,
- NULL,
- HFILL }
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_tokenRejWaitTime,
{ "Retry wait time", "skinny.tokenRejWaitTime",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_unknown,
{ "Unknown data", "skinny.unknown",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- "Place holder for unknown data.",
- HFILL }
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "Place holder for unknown data.",
+ HFILL }
},
{ &hf_skinny_rawData,
{ "Unknown raw data", "skinny.rawData",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- "Place holder for unknown raw data.",
- HFILL }
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Place holder for unknown raw data.",
+ HFILL }
},
{ &hf_skinny_xmlData,
{ "XML data", "skinny.xmlData",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL,
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_numberOfInServiceStreams,
{ "Number of in-service streams", "skinny.numberOfInServiceStreams",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_maxStreamsPerConf,
{ "Max streams per conf", "skinny.maxStreamsPerConf",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_numberOfOutOfServiceStreams,
{ "Number of out-of-service streams", "skinny.numberOfOutOfServiceStreams",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_applicationID,
{ "Application ID", "skinny.applicationID",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Application ID.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Application ID.",
+ HFILL }
},
{ &hf_skinny_transactionID,
{ "Transaction ID", "skinny.transactionID",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_serviceNum,
{ "Service number", "skinny.serviceNum",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_serviceURLIndex,
{ "Service URL index", "skinny.serviceURLIndex",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_featureIndex,
{ "Feature index", "skinny.featureIndex",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_createConfResults,
{ "Create conf results", "skinny.createConfResults",
- FT_UINT32, BASE_DEC, VALS(skinny_createConfResults), 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(skinny_createConfResults), 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_modifyConfResults,
{ "Modify conf results", "skinny.modifyConfResults",
- FT_UINT32, BASE_DEC|BASE_EXT_STRING, &skinny_modifyConfResults_ext, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &skinny_modifyConfResults_ext, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_deleteConfResults,
{ "Delete conf results", "skinny.deleteConfResults",
- FT_UINT32, BASE_DEC, VALS(skinny_deleteConfResults), 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(skinny_deleteConfResults), 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_addParticipantResults,
{ "Add participant results", "skinny.addParticipantResults",
- FT_UINT32, BASE_DEC|BASE_EXT_STRING, &skinny_addParticipantResults_ext, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &skinny_addParticipantResults_ext, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_passThruData,
{ "Pass-thru data", "skinny.passThruData",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_auditParticipantResults,
{ "Audit participant results", "skinny.auditParticipantResults",
- FT_UINT32, BASE_DEC, VALS(skinny_auditParticipantResults), 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(skinny_auditParticipantResults), 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_last,
{ "Last", "skinny.last",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_numberOfEntries,
{ "Number of entries", "skinny.numberOfEntries",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_participantEntry,
{ "Participant entry", "skinny.participantEntry",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_resourceTypes,
{ "ResourceType", "skinny.resourceTypes",
- FT_UINT32, BASE_DEC, VALS(skinny_resourceTypes), 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(skinny_resourceTypes), 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_numberOfReservedParticipants,
{ "Number of reserved participants", "skinny.numberOfReservedParticipants",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_numberOfActiveParticipants,
{ "Number of active participants", "skinny.numberOfActiveParticipants",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_appID,
{ "Application ID", "skinny.appID",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_appData,
{ "Application data", "skinny.appData",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_appConfID,
{ "Application conf ID", "skinny.appConfID",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_sequenceFlag,
{ "Sequence flag", "skinny.sequenceFlag",
- FT_UINT32, BASE_DEC, VALS(skinny_sequenceFlags), 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(skinny_sequenceFlags), 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_displayPriority,
{ "Display priority", "skinny.displayPriority",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_appInstanceID,
{ "Application instance ID", "skinny.appInstanceID",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_routingID,
{ "Routing ID", "skinny.routingID",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_audioCapCount,
{ "Audio cap count", "skinny.audioCapCount",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_videoCapCount,
{ "Video cap count", "skinny.videoCapCount",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_dataCapCount,
{ "Data cap count", "skinny.dataCapCount",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_RTPPayloadFormat,
{ "RTP payload format", "skinny.RTPPayloadFormat",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_customPictureFormatCount,
{ "Custom picture format count", "skinny.customPictureFormatCount",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_pictureWidth,
{ "Picture width", "skinny.pictureWidth",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_pictureHeight,
{ "Picture height", "skinny.pictureHeight",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_pixelAspectRatio,
{ "Pixel aspect ratio", "skinny.pixelAspectRatio",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_clockConversionCode,
{ "Clock conversion code", "skinny.clockConversionCode",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_clockDivisor,
{ "Clock divisor", "skinny.clockDivisor",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_activeStreamsOnRegistration,
{ "Active streams on registration", "skinny.activeStreamsOnRegistration",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_maxBW,
{ "Max BW", "skinny.maxBW",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_serviceResourceCount,
{ "Service resource count", "skinny.serviceResourceCount",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_layoutCount,
{ "Layout count", "skinny.layoutCount",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_layout,
{ "Layout", "skinny.layout",
- FT_UINT32, BASE_DEC|BASE_EXT_STRING, &skinny_Layouts_ext, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &skinny_Layouts_ext, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_maxConferences,
{ "Max conferences", "skinny.maxConferences",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_activeConferenceOnRegistration,
{ "Active conference on registration", "skinny.activeConferenceOnRegistration",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_transmitOrReceive,
{ "Transmit or receive", "skinny.transmitOrReceive",
- FT_UINT32, BASE_DEC, VALS(skinny_transmitOrReceive), 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(skinny_transmitOrReceive), 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_levelPreferenceCount,
{ "Level preference count", "skinny.levelPreferenceCount",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_transmitPreference,
{ "Transmit preference", "skinny.transmitPreference",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_format,
{ "Format", "skinny.format",
- FT_UINT32, BASE_DEC|BASE_EXT_STRING, &skinny_formatTypes_ext, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &skinny_formatTypes_ext, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_maxBitRate,
{ "Max bitrate", "skinny.maxBitRate",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_minBitRate,
{ "Min bitrate", "skinny.minBitRate",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_MPI,
{ "MPI", "skinny.MPI",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_serviceNumber,
{ "Service number", "skinny.serviceNumber",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_temporalSpatialTradeOffCapability,
{ "Temporal spatial trade off capability", "skinny.temporalSpatialTradeOffCapability",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_stillImageTransmission,
{ "Still image transmission", "skinny.stillImageTransmission",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_h263_capability_bitfield,
{ "H263 capability bitfield", "skinny.h263_capability_bitfield",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_annexNandWFutureUse,
{ "Annex N and W future use", "skinny.annexNandWFutureUse",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_modelNumber,
{ "Model number", "skinny.modelNumber",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_bandwidth,
{ "Bandwidth", "skinny.bandwidth",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_protocolDependentData,
{ "Protocol dependent data", "skinny.protocolDependentData",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_priority,
{ "Priority", "skinny.priority",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_payloadDtmf,
{ "Payload DTMF", "skinny.payloadDtmf",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "RTP payload type.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "RTP payload type.",
+ HFILL }
},
{ &hf_skinny_featureID,
{ "Feature ID", "skinny.featureID",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_featureTextLabel,
{ "Feature text label", "skinny.featureTextLabel",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The feature label text that is displayed on the phone.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The feature label text that is displayed on the phone.",
+ HFILL }
},
{ &hf_skinny_featureStatus,
{ "Feature status", "skinny.featureStatus",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_notify,
{ "Notify", "skinny.notify",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "The message notify text that is displayed on the phone.",
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The message notify text that is displayed on the phone.",
+ HFILL }
},
{ &hf_skinny_endOfAnnAck,
{ "End of ann. ack", "skinny.endOfAnnAck",
- FT_UINT32, BASE_DEC, VALS(skinny_endOfAnnAck), 0x0,
- "End of announcement ack.",
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(skinny_endOfAnnAck), 0x0,
+ "End of announcement ack.",
+ HFILL }
},
{ &hf_skinny_annPlayMode,
{ "Ann. play mode", "skinny.annPlayMode",
- FT_UINT32, BASE_DEC, VALS(skinny_annPlayMode), 0x0,
- "Announcement play mode.",
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(skinny_annPlayMode), 0x0,
+ "Announcement play mode.",
+ HFILL }
},
{ &hf_skinny_annPlayStatus,
{ "Ann. play status", "skinny.annPlayStatus",
- FT_UINT32, BASE_DEC, VALS(skinny_annPlayStatus), 0x0,
- "Announcement play status.",
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(skinny_annPlayStatus), 0x0,
+ "Announcement play status.",
+ HFILL }
},
{ &hf_skinny_locale,
{ "Locale", "skinny.locale",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "User locale ID.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "User locale ID.",
+ HFILL }
},
{ &hf_skinny_country,
{ "Country", "skinny.country",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Country ID (Network locale).",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Country ID (Network locale).",
+ HFILL }
},
{ &hf_skinny_matrixConfPartyID,
{ "Matrix conf party ID", "skinny.matrixConfPartyID",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Existing conference parties.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Existing conference parties.",
+ HFILL }
},
{ &hf_skinny_hearingConfPartyMask,
{ "Hearing conf party mask", "skinny.hearingConfPartyMask",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Bit mask of conference parties to hear media received on this stream. Bit0 = matrixConfPartyID[0], Bit1 = matrixConfPartiID[1].",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Bit mask of conference parties to hear media received on this stream. Bit0 = matrixConfPartyID[0], Bit1 = matrixConfPartiID[1].",
+ HFILL }
},
{ &hf_skinny_serviceURL,
{ "Service URL value", "skinny.serviceURL",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL,
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_serviceURLDisplayName,
{ "Service URL display name", "skinny.serviceURLDisplayName",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL,
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_callSelectStat,
{ "Call select stat", "skinny.callSelectStat",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_isConferenceCreator,
{ "Is conference creator", "skinny.isConferenceCreator",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_payload_rfc_number,
{ "Payload RFC number", "skinny.payload_rfc_number",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_payloadType,
{ "Payload type", "skinny.payloadType",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_bitRate,
{ "Bitrate", "skinny.bitRate",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_pictureFormatCount,
{ "Picture format count", "skinny.pictureFormatCount",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_confServiceNum,
{ "Conf service number", "skinny.confServiceNum",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Conference service number.",
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Conference service number.",
+ HFILL }
},
{ &hf_skinny_DSCPValue,
{ "DSCP value", "skinny.DSCPValue",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_miscCommandType,
{ "Misc command type", "skinny.miscCommandType",
- FT_UINT32, BASE_DEC|BASE_EXT_STRING, &skinny_miscCommandType_ext, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &skinny_miscCommandType_ext, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_temporalSpatialTradeOff,
{ "Temporal spatial trade-off", "skinny.temporalSpatialTradeOff",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_firstGOB,
{ "First GOB", "skinny.firstGOB",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_numberOfGOBs,
{ "Number of GOBs", "skinny.numberOfGOBs",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_firstMB,
{ "First MB", "skinny.firstMB",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_numberOfMBs,
{ "Number of MBs", "skinny.numberOfMBs",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_pictureNumber,
{ "Picture number", "skinny.pictureNumber",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_longTermPictureIndex,
{ "Long-term picture index", "skinny.longTermPictureIndex",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_recoveryReferencePictureCount,
{ "Recovery-reference picture count", "skinny.recoveryReferencePictureCount",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_cast_lastRedirectingPartyName,
{ "Last redirecting party name", "cast.lastRedirectingPartyName",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL,
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_cast_lastRedirectingParty,
{ "Last redirecting party", "cast.lastRedirectingParty",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL,
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_cast_cgpnVoiceMailbox,
{ "Calling party voice mailbox", "cast.cgpnVoiceMailbox",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL,
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_cast_cdpnVoiceMailbox,
{ "Called party voice mailbox", "cast.cdpnVoiceMailbox",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL,
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_cast_originalCdpnVoiceMailbox,
{ "Original called party voice mailbox", "cast.originalCdpnVoiceMailbox",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL,
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_cast_lastRedirectingVoiceMailbox,
{ "Last redirecting voice mailbox", "cast.lastRedirectingVoiceMailbox",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL,
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_cast_originalCdpnRedirectReason,
{ "Original called party redirect reason", "cast.originalCdpnRedirectReason",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_cast_lastRedirectingReason,
{ "Last redirecting reason", "cast.lastRedirectingReason",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_cast_callInstance,
{ "Call instance", "cast.callInstance",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_cast_callSecurityStatus,
{ "Call security status", "cast.callSecurityStatus",
- FT_UINT32, BASE_DEC, VALS(cast_callSecurityStatusTypes), 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, VALS(cast_callSecurityStatusTypes), 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_directoryIndex,
{ "Directory index", "skinny.directoryIndex",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL,
- HFILL }
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL,
+ HFILL }
},
{ &hf_skinny_directoryPhoneNumber,
{ "Directory phone number", "skinny.directoryPhoneNumber",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL,
- HFILL }
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL,
+ HFILL }
},
};
@@ -4684,7 +4688,7 @@ proto_register_skinny(void)
/* Register the protocol name and description */
proto_skinny = proto_register_protocol("Skinny Client Control Protocol",
- "SKINNY", "skinny");
+ "SKINNY", "skinny");
/* Required function calls to register the header fields and subtrees used */
proto_register_field_array(proto_skinny, hf, array_length(hf));
@@ -4694,7 +4698,8 @@ proto_register_skinny(void)
prefs_register_bool_preference(skinny_module, "desegment",
"Reassemble SCCP messages spanning multiple TCP segments",
"Whether the SCCP dissector should reassemble messages spanning multiple TCP segments."
- " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
+ " To use this option, you must also enable"
+ " \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
&skinny_desegment);
skinny_tap = register_tap("skinny");
@@ -4703,7 +4708,7 @@ proto_register_skinny(void)
void
proto_reg_handoff_skinny(void)
{
- static gboolean skinny_prefs_initialized = FALSE;
+ static gboolean skinny_prefs_initialized = FALSE;
dissector_handle_t skinny_handle;
if (!skinny_prefs_initialized) {
@@ -4716,4 +4721,3 @@ proto_reg_handoff_skinny(void)
skinny_prefs_initialized = TRUE;
}
}
-
diff --git a/epan/dissectors/packet-sll.c b/epan/dissectors/packet-sll.c
index f30d322607..3bbfc01d5a 100644
--- a/epan/dissectors/packet-sll.c
+++ b/epan/dissectors/packet-sll.c
@@ -205,8 +205,8 @@ dissect_sll(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
SET_ADDRESS(&pinfo->dl_src, AT_IPv4, 4, src);
SET_ADDRESS(&pinfo->src, AT_IPv4, 4, src);
if (tree) {
- proto_tree_add_ipv4(fh_tree, hf_sll_src_ipv4, tvb,
- 6, 4, FALSE);
+ proto_tree_add_item(fh_tree, hf_sll_src_ipv4, tvb,
+ 6, 4, ENC_BIG_ENDIAN);
}
break;
case 6:
diff --git a/epan/dissectors/packet-slowprotocols.c b/epan/dissectors/packet-slowprotocols.c
index 24b79c6252..7d47d7c0cc 100644
--- a/epan/dissectors/packet-slowprotocols.c
+++ b/epan/dissectors/packet-slowprotocols.c
@@ -31,8 +31,8 @@
# include "config.h"
#endif
-#include <string.h>
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/etypes.h>
#include <epan/llcsaps.h>
@@ -728,7 +728,7 @@ static const value_string esmc_quality_level_opt_2_short[] = {
{ 0, "QL-STU" },
{ 1, "QL-PRS" },
{ 4, "QL-TNC" },
- { 7, "QL-ST2" },
+ { 7, "QL-ST2" },
{ 10, "QL-ST3" },
{ 12, "QL-SMC" },
{ 13, "QL-ST3E" },
@@ -2256,7 +2256,7 @@ dissect_oampdu_information(tvbuff_t *tvb, proto_tree *tree)
proto_tree_add_item(info_tree, hf_oampdu_info_vendor,
tvb, offset, raw_octet-5, ENC_NA);
- offset += raw_octet-2;
+ offset += raw_octet-5;
}
else if (info_type==OAMPDU_INFO_TYPE_ENDMARKER)
@@ -2447,9 +2447,9 @@ dissect_oampdu_event_notification(tvbuff_t *tvb, proto_tree *tree)
offset += OAMPDU_EVENT_TIMESTAMP_SZ;
- raw_word = tvb_get_ntohl(tvb, offset);
+ dword = tvb_get_ntohl(tvb, offset);
proto_tree_add_uint(event_tree, hf_oampdu_event_efpeWindow,
- tvb, offset, 4, raw_word);
+ tvb, offset, 4, dword);
offset += OAMPDU_EFPE_WINDOW_SZ;
@@ -2539,7 +2539,7 @@ dissect_oampdu_event_notification(tvbuff_t *tvb, proto_tree *tree)
offset += OAMPDU_EVENT_LENGTH_SZ;
- offset += (raw_word-2);
+ offset += (raw_octet-2);
break;
}
default:
diff --git a/epan/dissectors/packet-smb-browse.c b/epan/dissectors/packet-smb-browse.c
index c875da5584..1b924d548e 100644
--- a/epan/dissectors/packet-smb-browse.c
+++ b/epan/dissectors/packet-smb-browse.c
@@ -29,12 +29,12 @@
# include "config.h"
#endif
-#include <time.h>
+#include <string.h>
+
#include <glib.h>
-#include <ctype.h>
+
#include <epan/packet.h>
#include <epan/dissectors/packet-smb.h>
-#include <string.h>
#include "packet-smb-browse.h"
#include "packet-dcerpc.h"
@@ -587,7 +587,7 @@ dissect_mailslot_browse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tr
gint namelen;
guint8 server_count, reset_cmd;
guint8 os_major_ver, os_minor_ver;
- gchar *windows_version = NULL;
+ const gchar *windows_version = NULL;
int i;
guint32 uptime;
@@ -846,7 +846,7 @@ dissect_mailslot_lanman(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tr
guint32 periodicity;
const guint8 *host_name;
guint8 os_major_ver, os_minor_ver;
- gchar *windows_version = NULL;
+ const gchar *windows_version = NULL;
guint namelen;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "BROWSER");
diff --git a/epan/dissectors/packet-smb-pipe.c b/epan/dissectors/packet-smb-pipe.c
index e7f69aa8ac..a54b4f2eb0 100644
--- a/epan/dissectors/packet-smb-pipe.c
+++ b/epan/dissectors/packet-smb-pipe.c
@@ -248,9 +248,10 @@ add_word_param(tvbuff_t *tvb, int offset, int count _U_,
{
guint16 WParam;
- if (hf_index != -1)
- proto_tree_add_item(tree, hf_index, tvb, offset, 2, TRUE);
- else {
+ if (hf_index != -1) {
+ proto_tree_add_item(tree, hf_index, tvb, offset, 2,
+ ENC_LITTLE_ENDIAN);
+ } else {
WParam = tvb_get_letohs(tvb, offset);
proto_tree_add_text(tree, tvb, offset, 2,
"Word Param: %u (0x%04X)", WParam, WParam);
@@ -265,9 +266,10 @@ add_dword_param(tvbuff_t *tvb, int offset, int count _U_,
{
guint32 LParam;
- if (hf_index != -1)
- proto_tree_add_item(tree, hf_index, tvb, offset, 4, TRUE);
- else {
+ if (hf_index != -1) {
+ proto_tree_add_item(tree, hf_index, tvb, offset, 4,
+ ENC_LITTLE_ENDIAN);
+ } else {
LParam = tvb_get_letohl(tvb, offset);
proto_tree_add_text(tree, tvb, offset, 4,
"Doubleword Param: %u (0x%08X)", LParam, LParam);
@@ -285,12 +287,29 @@ add_byte_param(tvbuff_t *tvb, int offset, int count, packet_info *pinfo _U_,
if (hf_index != -1) {
hfinfo = proto_registrar_get_nth(hf_index);
- if (hfinfo && count != 1 &&
- (hfinfo->type == FT_INT8 || hfinfo->type == FT_UINT8)
- && count != 1) {
+ if ((hfinfo == NULL) ||
+ ((hfinfo->type == FT_INT8 || hfinfo->type == FT_UINT8)
+ && (count != 1))) {
THROW(ReportedBoundsError);
}
- proto_tree_add_item(tree, hf_index, tvb, offset, count, TRUE);
+ switch (hfinfo->type) {
+
+ case FT_INT8:
+ case FT_UINT8:
+ proto_tree_add_item(tree, hf_index, tvb, offset, count,
+ ENC_LITTLE_ENDIAN);
+ break;
+
+ case FT_STRING:
+ proto_tree_add_item(tree, hf_index, tvb, offset, count,
+ ENC_ASCII|ENC_NA); /* XXX - code page? */
+ break;
+
+ default:
+ proto_tree_add_item(tree, hf_index, tvb, offset, count,
+ ENC_NA);
+ break;
+ }
} else {
if (count == 1) {
BParam = tvb_get_guint8(tvb, offset);
@@ -342,7 +361,7 @@ add_string_param(tvbuff_t *tvb, int offset, int count _U_,
string_len = tvb_strsize(tvb, offset);
if (hf_index != -1) {
proto_tree_add_item(tree, hf_index, tvb, offset, string_len,
- TRUE);
+ ENC_ASCII|ENC_NA); /* XXX - code page? */
} else {
proto_tree_add_text(tree, tvb, offset, string_len,
"String Param: %s",
@@ -389,7 +408,7 @@ add_stringz_pointer_param(tvbuff_t *tvb, int offset, int count _U_,
if (string != NULL) {
if (hf_index != -1) {
proto_tree_add_item(tree, hf_index, tvb, cptr,
- string_len, TRUE);
+ string_len, ENC_ASCII|ENC_NA); /* XXX - code page? */
} else {
proto_tree_add_text(tree, tvb, cptr, string_len,
"String Param: %s", string);
@@ -422,7 +441,7 @@ add_bytes_pointer_param(tvbuff_t *tvb, int offset, int count,
if (tvb_bytes_exist(tvb, cptr, count)) {
if (hf_index != -1) {
proto_tree_add_item(tree, hf_index, tvb, cptr,
- count, TRUE);
+ count, ENC_NA);
} else {
proto_tree_add_text(tree, tvb, cptr, count,
"Byte Param: %s",
@@ -624,7 +643,7 @@ add_logon_hours(tvbuff_t *tvb, int offset, int count, packet_info *pinfo _U_,
* we need the units per week to do that, though.
*/
proto_tree_add_item(tree, hf_index, tvb, cptr, count,
- TRUE);
+ ENC_NA);
} else {
proto_tree_add_bytes_format(tree, hf_index, tvb,
cptr, count, NULL,
diff --git a/epan/dissectors/packet-smb.c b/epan/dissectors/packet-smb.c
index 56f5828181..2dd37dc0a3 100644
--- a/epan/dissectors/packet-smb.c
+++ b/epan/dissectors/packet-smb.c
@@ -168,6 +168,7 @@ static int hf_smb_primary_domain = -1;
static int hf_smb_server = -1;
static int hf_smb_max_raw_buf_size = -1;
static int hf_smb_server_guid = -1;
+static int hf_smb_volume_guid = -1;
static int hf_smb_security_blob_len = -1;
static int hf_smb_security_blob = -1;
static int hf_smb_sm_mode16 = -1;
@@ -505,6 +506,7 @@ static int hf_smb_extended_attributes = -1;
static int hf_smb_oplock_level = -1;
static int hf_smb_create_action = -1;
static int hf_smb_file_id = -1;
+static int hf_smb_file_id_64bit = -1;
static int hf_smb_ea_error_offset = -1;
static int hf_smb_end_of_file = -1;
static int hf_smb_replace = -1;
@@ -557,6 +559,7 @@ static int hf_smb_storage_type = -1;
static int hf_smb_resume = -1;
static int hf_smb_max_referral_level = -1;
static int hf_smb_qfsi_information_level = -1;
+static int hf_smb_sfsi_information_level = -1;
static int hf_smb_number_of_links = -1;
static int hf_smb_delete_pending = -1;
static int hf_smb_index_number = -1;
@@ -3463,7 +3466,6 @@ dissect_smb_fid(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset,
smb_fid_info_t *suspect_fid_info=NULL;
/* We need this to use an array-accessed tree */
GSList *GSL_iterator;
- int found=0;
DISSECTOR_ASSERT(si);
@@ -3510,7 +3512,6 @@ dissect_smb_fid(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset,
if(suspect_fid_info->tid==si->tid && suspect_fid_info->fid==fid)
fid_info=suspect_fid_info;
GSL_iterator=g_slist_next(GSL_iterator);
- found+=1;
}
}
if(!fid_info){
@@ -5782,8 +5783,9 @@ dissect_locking_andx_request(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
}
if (cmd != 0xff) { /* there is an andX command */
- if (andxoffset < offset)
+ if (andxoffset < offset) {
THROW(ReportedBoundsError);
+ }
dissect_smb_command(tvb, pinfo, andxoffset, smb_tree, cmd, FALSE);
}
@@ -5874,8 +5876,9 @@ dissect_locking_andx_response(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
END_OF_SMB
if (cmd != 0xff) { /* there is an andX command */
- if (andxoffset < offset)
+ if (andxoffset < offset) {
THROW(ReportedBoundsError);
+ }
dissect_smb_command(tvb, pinfo, andxoffset, smb_tree, cmd, FALSE);
}
@@ -5974,11 +5977,15 @@ dissect_open_flags(tvbuff_t *tvb, proto_tree *parent_tree, int offset, int bm)
return offset;
}
+/* [MS-CIFS].pdf 2.2.4.64.2 provides the last two file types, however
+ [MS-SMB].PDF 2.2.4.9.2 elides value 4, Character mode device. */
static const value_string filetype_vals[] = {
{ 0, "Disk file or directory"},
{ 1, "Named pipe in byte mode"},
{ 2, "Named pipe in message mode"},
{ 3, "Spooled printer"},
+ { 4, "Character mode device"},
+ { 0xFFFF, "Unknown file type"},
{0, NULL}
};
static int
@@ -6075,8 +6082,9 @@ dissect_open_andx_request(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, i
END_OF_SMB
if (cmd != 0xff) { /* there is an andX command */
- if (andxoffset < offset)
+ if (andxoffset < offset) {
THROW(ReportedBoundsError);
+ }
dissect_smb_command(tvb, pinfo, andxoffset, smb_tree, cmd, FALSE);
}
@@ -6243,8 +6251,9 @@ dissect_open_andx_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
END_OF_SMB
if (cmd != 0xff) { /* there is an andX command */
- if (andxoffset < offset)
+ if (andxoffset < offset) {
THROW(ReportedBoundsError);
+ }
dissect_smb_command(tvb, pinfo, andxoffset, smb_tree, cmd, FALSE);
}
@@ -6403,8 +6412,9 @@ dissect_read_andx_request(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, i
END_OF_SMB
if (cmd != 0xff) { /* there is an andX command */
- if (andxoffset < offset)
+ if (andxoffset < offset) {
THROW(ReportedBoundsError);
+ }
dissect_smb_command(tvb, pinfo, andxoffset, smb_tree, cmd, FALSE);
}
@@ -6438,7 +6448,6 @@ dissect_read_andx_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
guint32 tvblen;
tvbuff_t *data_tvb;
GSList *GSL_iterator;
- int found=0;
DISSECTOR_ASSERT(si);
@@ -6564,7 +6573,6 @@ dissect_read_andx_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
if(suspect_fid_info->tid==si->tid && suspect_fid_info->fid==fid)
fid_info=suspect_fid_info;
GSL_iterator=g_slist_next(GSL_iterator);
- found+=1;
}
}
tid_info = se_tree_lookup32(si->ct->tid_tree, si->tid);
@@ -6601,8 +6609,9 @@ dissect_read_andx_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
END_OF_SMB
if (cmd != 0xff) { /* there is an andX command */
- if (andxoffset < offset)
+ if (andxoffset < offset) {
THROW(ReportedBoundsError);
+ }
dissect_smb_command(tvb, pinfo, andxoffset, smb_tree, cmd, FALSE);
}
@@ -6630,7 +6639,6 @@ dissect_write_andx_request(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
guint32 tvblen;
tvbuff_t *data_tvb;
GSList *GSL_iterator;
- int found=0;
DISSECTOR_ASSERT(si);
@@ -6797,7 +6805,6 @@ dissect_write_andx_request(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
if(suspect_fid_info->tid==si->tid && suspect_fid_info->fid==fid)
fid_info=suspect_fid_info;
GSL_iterator=g_slist_next(GSL_iterator);
- found+=1;
}
}
tid_info = se_tree_lookup32(si->ct->tid_tree, si->tid);
@@ -6837,8 +6844,9 @@ dissect_write_andx_request(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
END_OF_SMB
if (cmd != 0xff) { /* there is an andX command */
- if (andxoffset < offset)
+ if (andxoffset < offset) {
THROW(ReportedBoundsError);
+ }
dissect_smb_command(tvb, pinfo, andxoffset, smb_tree, cmd, FALSE);
}
@@ -6923,8 +6931,9 @@ dissect_write_andx_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
END_OF_SMB
if (cmd != 0xff) { /* there is an andX command */
- if (andxoffset < offset)
+ if (andxoffset < offset) {
THROW(ReportedBoundsError);
+ }
dissect_smb_command(tvb, pinfo, andxoffset, smb_tree, cmd, FALSE);
}
@@ -7328,8 +7337,9 @@ dissect_session_setup_andx_request(tvbuff_t *tvb, packet_info *pinfo, proto_tree
END_OF_SMB
if (cmd != 0xff) { /* there is an andX command */
- if (andxoffset < offset)
+ if (andxoffset < offset) {
THROW(ReportedBoundsError);
+ }
pinfo->private_data = si;
dissect_smb_command(tvb, pinfo, andxoffset, smb_tree, cmd, FALSE);
}
@@ -7463,8 +7473,9 @@ dissect_session_setup_andx_response(tvbuff_t *tvb, packet_info *pinfo, proto_tre
END_OF_SMB
if (cmd != 0xff) { /* there is an andX command */
- if (andxoffset < offset)
+ if (andxoffset < offset) {
THROW(ReportedBoundsError);
+ }
pinfo->private_data = si;
dissect_smb_command(tvb, pinfo, andxoffset, smb_tree, cmd, FALSE);
}
@@ -7505,8 +7516,9 @@ dissect_empty_andx(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offs
END_OF_SMB
if (cmd != 0xff) { /* there is an andX command */
- if (andxoffset < offset)
+ if (andxoffset < offset) {
THROW(ReportedBoundsError);
+ }
dissect_smb_command(tvb, pinfo, andxoffset, smb_tree, cmd, FALSE);
}
@@ -7704,8 +7716,9 @@ dissect_tree_connect_andx_request(tvbuff_t *tvb, packet_info *pinfo, proto_tree
END_OF_SMB
if (cmd != 0xff) { /* there is an andX command */
- if (andxoffset < offset)
+ if (andxoffset < offset) {
THROW(ReportedBoundsError);
+ }
dissect_smb_command(tvb, pinfo, andxoffset, smb_tree, cmd, FALSE);
}
@@ -7856,8 +7869,9 @@ dissect_tree_connect_andx_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree
END_OF_SMB
if (cmd != 0xff) { /* there is an andX command */
- if (andxoffset < offset)
+ if (andxoffset < offset) {
THROW(ReportedBoundsError);
+ }
dissect_smb_command(tvb, pinfo, andxoffset, smb_tree, cmd, FALSE);
}
@@ -8516,8 +8530,10 @@ dissect_nt_trans_data_request(tvbuff_t *tvb, packet_info *pinfo, int offset, pro
DISSECTOR_ASSERT(si);
if(parent_tree){
- tvb_ensure_bytes_exist(tvb, offset, bc);
- item = proto_tree_add_text(parent_tree, tvb, offset, bc,
+ guint32 bytes = 0;
+ bytes = tvb_length_remaining(tvb, offset);
+ /*tvb_ensure_bytes_exist(tvb, offset, bc);*/
+ item = proto_tree_add_text(parent_tree, tvb, offset, bytes,
"%s Data",
val_to_str_ext(ntd->subcmd, &nt_cmd_vals_ext, "Unknown NT transaction (%u)"));
tree = proto_item_add_subtree(item, ett_smb_nt_trans_data);
@@ -8563,6 +8579,11 @@ dissect_nt_trans_data_request(tvbuff_t *tvb, packet_info *pinfo, int offset, pro
offset = dissect_nt_sec_desc(
tvb, offset, pinfo, tree, NULL, TRUE, bc, ami);
+
+ if (offset < (old_offset + bc)) {
+ offset = old_offset + bc;
+ }
+
break;
case NT_TRANS_NOTIFY:
break;
@@ -8851,7 +8872,8 @@ static int
dissect_nt_transaction_request(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, proto_tree *smb_tree _U_)
{
guint8 wc, sc;
- guint32 pc=0, po=0, dc=0, od=0;
+ guint32 pc=0, pd = 0, po=0, dc=0, od=0, dd = 0;
+ guint32 td=0, tp=0;
smb_info_t *si;
smb_saved_info_t *sip;
int subcmd;
@@ -8859,6 +8881,11 @@ dissect_nt_transaction_request(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
guint16 bc;
guint32 padcnt;
smb_nt_transact_info_t *nti=NULL;
+ fragment_data *r_fd = NULL;
+ tvbuff_t *pd_tvb=NULL;
+ gboolean save_fragmented;
+
+ save_fragmented = pinfo->fragmented;
ntd.subcmd = ntd.sd_len = ntd.ea_len = 0;
@@ -8886,11 +8913,13 @@ dissect_nt_transaction_request(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
/* total param count */
- proto_tree_add_item(tree, hf_smb_total_param_count, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ tp = tvb_get_letohl(tvb, offset);
+ proto_tree_add_uint(tree, hf_smb_total_param_count, tvb, offset, 4, tp);
offset += 4;
/* total data count */
- proto_tree_add_item(tree, hf_smb_total_data_count, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ td = tvb_get_letohl(tvb, offset);
+ proto_tree_add_uint(tree, hf_smb_total_data_count, tvb, offset, 4, td);
offset += 4;
if(wc>=19){
@@ -8939,7 +8968,8 @@ dissect_nt_transaction_request(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
/* primary request */
} else {
/* secondary request */
- proto_tree_add_item(tree, hf_smb_data_disp32, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ dd = tvb_get_letohl(tvb, offset);
+ proto_tree_add_uint(tree, hf_smb_data_disp32, tvb, offset, 4, dd);
offset += 4;
}
@@ -9002,8 +9032,53 @@ dissect_nt_transaction_request(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
BYTE_COUNT;
- /* parameters */
- if(po>(guint32)offset){
+ /* reassembly of SMB NT Transaction data payload.
+ In this section we do reassembly of both the data and parameters
+ blocks of the SMB transaction command.
+ */
+ /* do we need reassembly? */
+ if( (td&&(td!=dc)) || (tp&&(tp!=pc)) ){
+ /* oh yeah, either data or parameter section needs
+ reassembly...
+ */
+ pinfo->fragmented = TRUE;
+ if(smb_trans_reassembly){
+ /* ...and we were told to do reassembly */
+ if(pc && ((unsigned int)tvb_length_remaining(tvb, po)>=pc) ){
+ r_fd = smb_trans_defragment(tree, pinfo, tvb,
+ po, pc, pd, td+tp);
+ }
+ if((r_fd==NULL) && dc && ((unsigned int)tvb_length_remaining(tvb, od)>=dc) ){
+ r_fd = smb_trans_defragment(tree, pinfo, tvb,
+ od, dc, dd+tp, td+tp);
+ }
+ }
+ }
+
+ /* if we got a reassembled fd structure from the reassembly routine we
+ must create pd_tvb from it
+ */
+ if(r_fd){
+ proto_item *frag_tree_item;
+
+ pd_tvb = tvb_new_child_real_data(tvb, r_fd->data, r_fd->datalen,
+ r_fd->datalen);
+ add_new_data_source(pinfo, pd_tvb, "Reassembled SMB");
+
+ show_fragment_tree(r_fd, &smb_frag_items, tree, pinfo, pd_tvb, &frag_tree_item);
+ }
+
+ if(pd_tvb){
+ /* we have reassembled data, grab param and data from there */
+ dissect_nt_trans_param_request(pd_tvb, pinfo, 0, tree, tp,
+ &ntd, (guint16) tvb_length(pd_tvb), nti);
+ dissect_nt_trans_data_request(pd_tvb, pinfo, tp, tree, td, &ntd, nti);
+ COUNT_BYTES(bc); /* We are done */
+ } else {
+ /* we do not have reassembled data, just use what we have in the
+ packet as well as we can */
+ /* parameters */
+ if(po>(guint32)offset){
/* We have some initial padding bytes.
*/
padcnt = po-offset;
@@ -9012,15 +9087,15 @@ dissect_nt_transaction_request(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
CHECK_BYTE_COUNT(padcnt);
proto_tree_add_item(tree, hf_smb_padding, tvb, offset, padcnt, ENC_NA);
COUNT_BYTES(padcnt);
- }
- if(pc){
+ }
+ if(pc){
CHECK_BYTE_COUNT(pc);
dissect_nt_trans_param_request(tvb, pinfo, offset, tree, pc, &ntd, bc, nti);
COUNT_BYTES(pc);
- }
+ }
- /* data */
- if(od>(guint32)offset){
+ /* data */
+ if(od>(guint32)offset){
/* We have some initial padding bytes.
*/
padcnt = od-offset;
@@ -9028,16 +9103,18 @@ dissect_nt_transaction_request(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
padcnt = bc;
proto_tree_add_item(tree, hf_smb_padding, tvb, offset, padcnt, ENC_NA);
COUNT_BYTES(padcnt);
- }
- if(dc){
+ }
+ if(dc){
CHECK_BYTE_COUNT(dc);
dissect_nt_trans_data_request(
tvb, pinfo, offset, tree, dc, &ntd, nti);
COUNT_BYTES(dc);
+ }
}
END_OF_SMB
+ pinfo->fragmented = save_fragmented;
return offset;
}
@@ -9548,6 +9625,7 @@ dissect_nt_transaction_response(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
dissect_nt_trans_param_response(pd_tvb, pinfo, 0, tree, tp,
&ntd, (guint16) tvb_length(pd_tvb));
dissect_nt_trans_data_response(pd_tvb, pinfo, tp, tree, td, &ntd, nti);
+ COUNT_BYTES(bc); /* We are done */
} else {
/* we do not have reassembled data, just use what we have in the
packet as well as we can */
@@ -10248,6 +10326,42 @@ dissect_nt_create_andx_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
proto_tree_add_item(tree, hf_smb_is_directory, tvb, offset, 1, ENC_LITTLE_ENDIAN);
offset += 1;
+ /* Do we know whether or not EXTENDED_RESPONSES are required? */
+ /* MS-SMB 2.2.4.9.2 says that there is a Volume GUID, File ID,
+ Maximal Access Rights and Guest Maximal Access Rights here
+ if ExtendedResponses requested. */
+ if (si->sip != NULL && si->sip->extra_info_type == SMB_EI_FILEDATA &&
+ ((smb_fid_saved_info_t *)(si->sip->extra_info))->create_flags & 0x10) {
+ proto_item *mar = NULL;
+ proto_item *gmar = NULL;
+ proto_tree *tr = NULL;
+
+ /* The first field is a Volume GUID ... */
+
+ proto_tree_add_item(tree, hf_smb_volume_guid,
+ tvb, offset, 16, ENC_NA);
+ offset += 16;
+
+ /* The file ID comes next */
+ proto_tree_add_item(tree, hf_smb_file_id_64bit,
+ tvb, offset, 8, ENC_LITTLE_ENDIAN);
+ offset += 8;
+
+ mar = proto_tree_add_text(tree, tvb, offset, 4,
+ "Maximal Access Rights");
+
+ tr = proto_item_add_subtree(mar, ett_smb_nt_access_mask);
+
+ offset = dissect_smb_access_mask(tvb, tr, offset);
+
+ gmar = proto_tree_add_text(tree, tvb, offset, 4,
+ "Guest Maximal Access Rights");
+
+ tr = proto_item_add_subtree(gmar, ett_smb_nt_access_mask);
+
+ offset = dissect_smb_access_mask(tvb, tr, offset);
+ }
+
/* Try to remember the type of this fid so that we can dissect
* any future security descriptor (access mask) properly
*/
@@ -10312,7 +10426,7 @@ static const value_string trans2_cmd_vals[] = {
{ 0x01, "FIND_FIRST2" },
{ 0x02, "FIND_NEXT2" },
{ 0x03, "QUERY_FS_INFO" },
- { 0x04, "SET_FS_QUOTA" },
+ { 0x04, "SET_FS_INFO" },
{ 0x05, "QUERY_PATH_INFO" },
{ 0x06, "SET_PATH_INFO" },
{ 0x07, "QUERY_FILE_INFO" },
@@ -10505,6 +10619,12 @@ static const value_string qfsi_vals[] = {
{0, NULL}
};
+static const value_string sfsi_vals[] = {
+ { 0x203, "Request Transport Encryption"},
+ { 1006, "Set FS Quota Info"},
+ {0, NULL}
+};
+
static const value_string nt_rename_vals[] = {
{ 0x0103, "Create Hard Link"},
{0, NULL}
@@ -10945,6 +11065,21 @@ dissect_transaction2_request_parameters(tvbuff_t *tvb, packet_info *pinfo,
"Unknown (0x%02x)"));
break;
+ case 0x0004: /*TRANS2_SET_FS_INFORMATION*/
+ /* level of interest */
+ CHECK_BYTE_COUNT_TRANS(4);
+ si->info_level = tvb_get_letohs(tvb, offset+2);
+ if (t2i != NULL && !pinfo->fd->flags.visited)
+ t2i->info_level = si->info_level;
+ proto_tree_add_uint(tree, hf_smb_sfsi_information_level, tvb, offset+2, 2, si->info_level);
+ COUNT_BYTES_TRANS(4);
+
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", %s",
+ val_to_str(si->info_level, sfsi_vals,
+ "Unknown (0x%02x)"));
+
+ break;
case 0x0005: /*TRANS2_QUERY_PATH_INFORMATION*/
/* level of interest */
CHECK_BYTE_COUNT_TRANS(2);
@@ -12478,7 +12613,7 @@ dissect_4_2_16_13(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
{
smb_info_t *si = pinfo->private_data;
const char *fn;
- int fn_len;
+ int fn_len = 0;
DISSECTOR_ASSERT(si);
@@ -13366,6 +13501,122 @@ dissect_nt_quota(tvbuff_t *tvb, proto_tree *tree, int offset, guint16 *bcp)
}
static int
+dissect_sfsi_request(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree,
+ int offset, guint16 *bcp)
+{
+ smb_info_t *si;
+
+ if(!*bcp){
+ return offset;
+ }
+
+ si = (smb_info_t *)pinfo->private_data;
+ DISSECTOR_ASSERT(si);
+
+ switch(si->info_level) {
+ case 0x203: /* REQUEST_TRANSPORT_ENCRYPTION */ {
+ proto_item *blob_item;
+ tvbuff_t *blob_tvb;
+ proto_tree *blob_tree;
+
+ /* security blob */
+ blob_item = proto_tree_add_item(tree, hf_smb_security_blob,
+ tvb, offset,
+ tvb_length_remaining(tvb,offset),
+ ENC_NA);
+
+ /* As an optimization, because Windows is perverse,
+ we check to see if NTLMSSP is the first part of the
+ blob, and if so, call the NTLMSSP dissector,
+ otherwise we call the GSS-API dissector. This is because
+ Windows can request RAW NTLMSSP, but will happily handle
+ a client that wraps NTLMSSP in SPNEGO
+ */
+
+ blob_tree = proto_item_add_subtree(blob_item,
+ ett_smb_secblob);
+
+ blob_tvb = tvb_new_subset(tvb, offset,
+ tvb_length_remaining(tvb,offset),
+ tvb_length_remaining(tvb,offset));
+
+ if (tvb_strneql(blob_tvb, 0, "NTLMSSP", 7) == 0) {
+ call_dissector(ntlmssp_handle, blob_tvb, pinfo, blob_tree);
+ } else {
+ call_dissector(gssapi_handle, blob_tvb, pinfo, blob_tree);
+ }
+
+ offset += tvb_length_remaining(tvb,offset);
+ *bcp = 0;
+ break;
+ }
+ case 1006: /* QUERY_FS_QUOTA_INFO */
+ offset = dissect_nt_quota(tvb, tree, offset, bcp);
+ break;
+ }
+
+ return offset;
+}
+
+static int
+dissect_sfsi_response(tvbuff_t * tvb _U_, packet_info * pinfo, proto_tree * tree _U_,
+ int offset, guint16 *bcp)
+{
+ smb_info_t *si;
+
+ if(!*bcp){
+ return offset;
+ }
+
+ si = (smb_info_t *)pinfo->private_data;
+ DISSECTOR_ASSERT(si);
+
+ switch(si->info_level) {
+ case 0x203: /* REQUEST_TRANSPORT_ENCRYPTION */ {
+ proto_item *blob_item;
+ tvbuff_t *blob_tvb;
+ proto_tree *blob_tree;
+
+ /* security blob */
+ blob_item = proto_tree_add_item(tree, hf_smb_security_blob,
+ tvb, offset,
+ tvb_length_remaining(tvb,offset),
+ ENC_NA);
+
+ /* As an optimization, because Windows is perverse,
+ we check to see if NTLMSSP is the first part of the
+ blob, and if so, call the NTLMSSP dissector,
+ otherwise we call the GSS-API dissector. This is because
+ Windows can request RAW NTLMSSP, but will happily handle
+ a client that wraps NTLMSSP in SPNEGO
+ */
+
+ blob_tree = proto_item_add_subtree(blob_item,
+ ett_smb_secblob);
+
+ blob_tvb = tvb_new_subset(tvb, offset,
+ tvb_length_remaining(tvb,offset),
+ tvb_length_remaining(tvb,offset));
+
+ if (tvb_strneql(blob_tvb, 0, "NTLMSSP", 7) == 0) {
+ call_dissector(ntlmssp_handle, blob_tvb, pinfo, blob_tree);
+ } else {
+ call_dissector(gssapi_handle, blob_tvb, pinfo, blob_tree);
+ }
+
+ offset += tvb_length_remaining(tvb,offset);
+ *bcp = 0;
+ break;
+ }
+ case 1006: /* QUERY_FS_QUOTA_INFO */
+ /* nothing */
+ break;
+ }
+
+ return offset;
+}
+
+static int
dissect_transaction2_request_data(tvbuff_t *tvb, packet_info *pinfo,
proto_tree *parent_tree, int offset, int subcmd, guint16 dc)
{
@@ -13398,8 +13649,8 @@ dissect_transaction2_request_data(tvbuff_t *tvb, packet_info *pinfo,
case 0x0003: /*TRANS2_QUERY_FS_INFORMATION*/
/* no data field in this request */
break;
- case 0x0004: /* TRANS2_SET_QUOTA */
- offset = dissect_nt_quota(tvb, tree, offset, &dc);
+ case 0x0004: /* TRANS2_SET_FS_INFORMATION */
+ offset = dissect_sfsi_request(tvb, pinfo, tree, offset, &dc);
break;
case 0x0005: /*TRANS2_QUERY_PATH_INFORMATION*/
/* no data field in this request */
@@ -15634,6 +15885,9 @@ dissect_transaction2_response_data(tvbuff_t *tvb, packet_info *pinfo,
case 0x0003: /*TRANS2_QUERY_FS_INFORMATION*/
offset = dissect_qfsi_vals(tvb, pinfo, tree, offset, &dc);
break;
+ case 0x0004: /*TRANS2_SET_FS_INFORMATION*/
+ offset = dissect_sfsi_response(tvb, pinfo, tree, offset, &dc);
+ break;
case 0x0005: /*TRANS2_QUERY_PATH_INFORMATION*/
offset = dissect_qpi_loi_vals(tvb, pinfo, tree, item, offset, &dc);
break;
@@ -16075,6 +16329,14 @@ dissect_transaction_response(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
item=proto_tree_add_uint(tree, hf_smb_qfsi_information_level, tvb, 0, 0, si->info_level);
PROTO_ITEM_SET_GENERATED(item);
break;
+
+ case 0x0004: /* SET_FS_INFORMATION */
+ if (t2i->info_level == -1)
+ item=proto_tree_add_text(tree, tvb, 0, 0, "Level of Information: <UNKNOWN> since information level wasn't found in request packet");
+ else
+ item=proto_tree_add_uint(tree, hf_smb_sfsi_information_level, tvb, 0, 0, si->info_level);
+ PROTO_ITEM_SET_GENERATED(item);
+ break;
}
if (check_col(pinfo->cinfo, COL_INFO)) {
@@ -17028,6 +17290,8 @@ free_hash_tables(gpointer ctarg, gpointer user_data _U_)
g_hash_table_destroy(ct->unmatched);
if (ct->matched)
g_hash_table_destroy(ct->matched);
+ if (ct->primaries)
+ g_hash_table_destroy(ct->primaries);
if (ct->tid_service)
g_hash_table_destroy(ct->tid_service);
g_free(ct);
@@ -17390,6 +17654,10 @@ dissect_smb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
smb_saved_info_equal_matched);
si->ct->unmatched= g_hash_table_new(smb_saved_info_hash_unmatched,
smb_saved_info_equal_unmatched);
+ /* We used the same key format as the unmatched entries */
+ si->ct->primaries=g_hash_table_new(
+ smb_saved_info_hash_unmatched,
+ smb_saved_info_equal_unmatched);
si->ct->tid_service=g_hash_table_new(
smb_saved_info_hash_unmatched,
smb_saved_info_equal_unmatched);
@@ -17455,6 +17723,12 @@ dissect_smb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
new_key->pid_mid = pid_mid;
g_hash_table_insert(si->ct->matched, new_key,
sip);
+ } else {
+ if (si->cmd == SMB_COM_TRANSACTION_SECONDARY ||
+ si->cmd == SMB_COM_TRANSACTION2_SECONDARY ||
+ si->cmd == SMB_COM_NT_TRANSACT_SECONDARY) {
+ sip = g_hash_table_lookup(si->ct->primaries, GUINT_TO_POINTER(pid_mid));
+ }
}
} else {
/* we have seen this packet before; check the
@@ -17600,6 +17874,12 @@ dissect_smb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
sip=NULL;
}
}
+ } else {
+ if (si->cmd == SMB_COM_TRANSACTION ||
+ si->cmd == SMB_COM_TRANSACTION2 ||
+ si->cmd == SMB_COM_NT_TRANSACT) {
+ sip = g_hash_table_lookup(si->ct->primaries, GUINT_TO_POINTER(pid_mid));
+ }
}
if(si->request){
sip = se_alloc(sizeof(smb_saved_info_t));
@@ -17621,6 +17901,13 @@ dissect_smb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
new_key->frame = sip->frame_req;
new_key->pid_mid = pid_mid;
g_hash_table_insert(si->ct->matched, new_key, sip);
+
+ /* If it is a TRANSACT cmd, insert in hash */
+ if (si->cmd == SMB_COM_TRANSACTION ||
+ si->cmd == SMB_COM_TRANSACTION2 ||
+ si->cmd == SMB_COM_NT_TRANSACT) {
+ g_hash_table_insert(si->ct->primaries, GUINT_TO_POINTER(pid_mid), sip);
+ }
}
} else {
/* we have seen this packet before; check the
@@ -18089,9 +18376,13 @@ proto_register_smb(void)
NULL, 0, "Maximum raw buffer size", HFILL }},
{ &hf_smb_server_guid,
- { "Server GUID", "smb.server_guid", FT_BYTES, BASE_NONE,
+ { "Server GUID", "smb.server_guid", FT_GUID, BASE_NONE,
NULL, 0, "Globally unique identifier for this server", HFILL }},
+ { &hf_smb_volume_guid,
+ { "Volume GUID", "smb.volume_guid", FT_GUID, BASE_NONE,
+ NULL, 0, "Globally unique identifer for this volume", HFILL }},
+
{ &hf_smb_security_blob_len,
{ "Security Blob Length", "smb.security_blob_len", FT_UINT16, BASE_DEC,
NULL, 0, NULL, HFILL }},
@@ -19370,6 +19661,10 @@ proto_register_smb(void)
{ "Server unique file ID", "smb.create.file_id", FT_UINT32, BASE_HEX,
NULL, 0, NULL, HFILL }},
+ { &hf_smb_file_id_64bit,
+ { "Server unique 64-bit file ID", "smb.create.file_id_64b", FT_UINT64, BASE_HEX,
+ NULL, 0, NULL, HFILL }},
+
{ &hf_smb_ea_error_offset,
{ "EA Error offset", "smb.ea.error_offset", FT_UINT32, BASE_DEC,
NULL, 0, "Offset into EA list if EA error", HFILL }},
@@ -19568,6 +19863,10 @@ proto_register_smb(void)
{ "Level of Interest", "smb.qfsi_loi", FT_UINT16, BASE_HEX,
VALS(qfsi_vals), 0, "Level of interest for QUERY_FS_INFORMATION2 command", HFILL }},
+ { &hf_smb_sfsi_information_level,
+ { "Level of Interest", "smb.sfsi_loi", FT_UINT16, BASE_HEX,
+ VALS(sfsi_vals), 0, "Level of interest for SET_FS_INFORMATION2 command", HFILL }},
+
{ &hf_smb_nt_rename_level,
{ "Level of Interest", "smb.ntr_loi", FT_UINT16, BASE_DEC,
VALS(nt_rename_vals), 0, "NT Rename level", HFILL }},
@@ -19725,7 +20024,7 @@ proto_register_smb(void)
NULL, 0, "Dfs expanded name", HFILL }},
{ &hf_smb_dfs_referral_server_guid,
- { "Server GUID", "smb.dfs.referral.server_guid", FT_BYTES, BASE_NONE,
+ { "Server GUID", "smb.dfs.referral.server_guid", FT_GUID, BASE_NONE,
NULL, 0, "Globally unique identifier for this server", HFILL }},
{ &hf_smb_end_of_search,
diff --git a/epan/dissectors/packet-smb.h b/epan/dissectors/packet-smb.h
index 6f502d8d62..7de45eebc5 100644
--- a/epan/dissectors/packet-smb.h
+++ b/epan/dissectors/packet-smb.h
@@ -282,6 +282,9 @@ typedef struct conv_tables {
/* these two tables are used to match requests with responses */
GHashTable *unmatched;
GHashTable *matched;
+ /* This table keeps primary transact requests so secondaries can find
+ them */
+ GHashTable *primaries;
/* This table is used to track TID->services for a conversation */
GHashTable *tid_service;
diff --git a/epan/dissectors/packet-smb2.c b/epan/dissectors/packet-smb2.c
index 2637f1a7a5..2b9a65f211 100644
--- a/epan/dissectors/packet-smb2.c
+++ b/epan/dissectors/packet-smb2.c
@@ -48,7 +48,8 @@
#include "packet-dcerpc-nt.h"
#include <string.h>
-
+static char smb_header_label[] = "SMB2 Header";
+static char smb_transform_header_label[] = "SMB2 Transform Header";
static int proto_smb2 = -1;
static int hf_smb2_cmd = -1;
@@ -227,6 +228,7 @@ static int hf_smb2_signature = -1;
static int hf_smb2_credit_charge = -1;
static int hf_smb2_credits_requested = -1;
static int hf_smb2_credits_granted = -1;
+static int hf_smb2_channel_sequence = -1;
static int hf_smb2_dialect_count = -1;
static int hf_smb2_security_mode = -1;
static int hf_smb2_secmode_flags_sign_required = -1;
@@ -240,6 +242,7 @@ static int hf_smb2_cap_large_mtu = -1;
static int hf_smb2_cap_multi_channel = -1;
static int hf_smb2_cap_persistent_handles = -1;
static int hf_smb2_cap_directory_leasing = -1;
+static int hf_smb2_cap_encryption = -1;
static int hf_smb2_dialect = -1;
static int hf_smb2_max_trans_size = -1;
static int hf_smb2_max_read_size = -1;
@@ -258,6 +261,7 @@ static int hf_smb2_share_flags_access_based_dir_enum = -1;
static int hf_smb2_share_flags_force_levelii_oplock = -1;
static int hf_smb2_share_flags_enable_hash_v1 = -1;
static int hf_smb2_share_flags_enable_hash_v2 = -1;
+static int hf_smb2_share_flags_encrypt_data = -1;
static int hf_smb2_share_caching = -1;
static int hf_smb2_share_caps = -1;
static int hf_smb2_share_caps_dfs = -1;
@@ -306,11 +310,20 @@ static int hf_smb2_error_byte_count = -1;
static int hf_smb2_error_data = -1;
static int hf_smb2_error_reserved = -1;
static int hf_smb2_reserved = -1;
+static int hf_smb2_transform_signature = -1;
+static int hf_smb2_transform_nonce = -1;
+static int hf_smb2_transform_msg_size = -1;
+static int hf_smb2_transform_reserved = -1;
+static int hf_smb2_transform_sessionid = -1;
+static int hf_smb2_encryption_aes128_ccm = -1;
+static int hf_smb2_transform_enc_alg = -1;
+static int hf_smb2_transform_encyrpted_data = -1;
static gint ett_smb2 = -1;
static gint ett_smb2_olb = -1;
static gint ett_smb2_ea = -1;
static gint ett_smb2_header = -1;
+static gint ett_smb2_encrypted= -1;
static gint ett_smb2_command = -1;
static gint ett_smb2_secblob = -1;
static gint ett_smb2_file_basic_info = -1;
@@ -377,6 +390,7 @@ static gint ett_smb2_full_directory_info = -1;
static gint ett_smb2_file_name_info = -1;
static gint ett_smb2_lock_info = -1;
static gint ett_smb2_lock_flags = -1;
+static gint ett_smb2_transform_enc_alg = -1;
static int smb2_tap = -1;
@@ -501,14 +515,14 @@ static const value_string smb2_find_info_levels[] = {
static gint
smb2_saved_info_equal_unmatched(gconstpointer k1, gconstpointer k2)
{
- smb2_saved_info_t *key1 = (smb2_saved_info_t *)k1;
- smb2_saved_info_t *key2 = (smb2_saved_info_t *)k2;
+ const smb2_saved_info_t *key1 = (const smb2_saved_info_t *)k1;
+ const smb2_saved_info_t *key2 = (const smb2_saved_info_t *)k2;
return key1->seqnum==key2->seqnum;
}
static guint
smb2_saved_info_hash_unmatched(gconstpointer k)
{
- smb2_saved_info_t *key = (smb2_saved_info_t *)k;
+ const smb2_saved_info_t *key = (const smb2_saved_info_t *)k;
guint32 hash;
hash=(guint32) (key->seqnum&0xffffffff);
@@ -522,14 +536,14 @@ smb2_saved_info_hash_unmatched(gconstpointer k)
static gint
smb2_saved_info_equal_matched(gconstpointer k1, gconstpointer k2)
{
- smb2_saved_info_t *key1 = (smb2_saved_info_t *)k1;
- smb2_saved_info_t *key2 = (smb2_saved_info_t *)k2;
+ const smb2_saved_info_t *key1 = (const smb2_saved_info_t *)k1;
+ const smb2_saved_info_t *key2 = (const smb2_saved_info_t *)k2;
return key1->seqnum==key2->seqnum;
}
static guint
smb2_saved_info_hash_matched(gconstpointer k)
{
- smb2_saved_info_t *key = (smb2_saved_info_t *)k;
+ const smb2_saved_info_t *key = (const smb2_saved_info_t *)k;
guint32 hash;
hash=(guint32) (key->seqnum&0xffffffff);
@@ -546,14 +560,14 @@ smb2_saved_info_hash_matched(gconstpointer k)
static gint
smb2_tid_info_equal(gconstpointer k1, gconstpointer k2)
{
- smb2_tid_info_t *key1 = (smb2_tid_info_t *)k1;
- smb2_tid_info_t *key2 = (smb2_tid_info_t *)k2;
+ const smb2_tid_info_t *key1 = (const smb2_tid_info_t *)k1;
+ const smb2_tid_info_t *key2 = (const smb2_tid_info_t *)k2;
return key1->tid==key2->tid;
}
static guint
smb2_tid_info_hash(gconstpointer k)
{
- smb2_tid_info_t *key = (smb2_tid_info_t *)k;
+ const smb2_tid_info_t *key = (const smb2_tid_info_t *)k;
guint32 hash;
hash=key->tid;
@@ -570,14 +584,14 @@ smb2_tid_info_hash(gconstpointer k)
static gint
smb2_sesid_info_equal(gconstpointer k1, gconstpointer k2)
{
- smb2_sesid_info_t *key1 = (smb2_sesid_info_t *)k1;
- smb2_sesid_info_t *key2 = (smb2_sesid_info_t *)k2;
+ const smb2_sesid_info_t *key1 = (const smb2_sesid_info_t *)k1;
+ const smb2_sesid_info_t *key2 = (const smb2_sesid_info_t *)k2;
return key1->sesid==key2->sesid;
}
static guint
smb2_sesid_info_hash(gconstpointer k)
{
- smb2_sesid_info_t *key = (smb2_sesid_info_t *)k;
+ const smb2_sesid_info_t *key = (const smb2_sesid_info_t *)k;
guint32 hash;
hash=(guint32)( ((key->sesid>>32)&0xffffffff)+((key->sesid)&0xffffffff) );
@@ -769,7 +783,7 @@ dissect_smb2_olb_buffer(packet_info *pinfo, proto_tree *parent_tree, tvbuff_t *t
sub_tree=parent_tree;
} else {
if(parent_tree){
- sub_item = proto_tree_add_item(parent_tree, olb->hfindex, tvb, offset, len, TRUE);
+ sub_item = proto_tree_add_item(parent_tree, olb->hfindex, tvb, offset, len, ENC_NA);
sub_tree = proto_item_add_subtree(sub_item, ett_smb2_olb);
}
}
@@ -878,6 +892,11 @@ static const true_false_string tfs_cap_directory_leasing = {
"This host does NOT support DIRECTORY LEASING"
};
+static const true_false_string tfs_cap_encryption = {
+ "This host supports ENCRYPTION",
+ "This host does NOT support ENCRYPTION"
+};
+
static const true_false_string tfs_smb2_ioctl_network_interface_capability_rss = {
"This interface supports RSS",
"This interface does not support RSS"
@@ -1939,6 +1958,7 @@ dissect_smb2_buffercode(proto_tree *tree, tvbuff_t *tvb, int offset, guint16 *le
#define NEGPROT_CAP_MULTI_CHANNEL 0x00000008
#define NEGPROT_CAP_PERSISTENT_HANDLES 0x00000010
#define NEGPROT_CAP_DIRECTORY_LEASING 0x00000020
+#define NEGPROT_CAP_ENCRYPTION 0x00000040
static int
dissect_smb2_capabilities(proto_tree *parent_tree, tvbuff_t *tvb, int offset)
{
@@ -1958,6 +1978,7 @@ dissect_smb2_capabilities(proto_tree *parent_tree, tvbuff_t *tvb, int offset)
proto_tree_add_boolean(tree, hf_smb2_cap_multi_channel, tvb, offset, 4, cap);
proto_tree_add_boolean(tree, hf_smb2_cap_persistent_handles, tvb, offset, 4, cap);
proto_tree_add_boolean(tree, hf_smb2_cap_directory_leasing, tvb, offset, 4, cap);
+ proto_tree_add_boolean(tree, hf_smb2_cap_encryption, tvb, offset, 4, cap);
offset += 4;
@@ -2059,6 +2080,7 @@ static const value_string share_cache_vals[] = {
#define SHARE_FLAGS_force_levelii_oplock 0x00001000
#define SHARE_FLAGS_enable_hash_v1 0x00002000
#define SHARE_FLAGS_enable_hash_v2 0x00004000
+#define SHARE_FLAGS_encryption_required 0x00008000
static int
dissect_smb2_share_flags(proto_tree *tree, tvbuff_t *tvb, int offset)
@@ -2073,6 +2095,7 @@ dissect_smb2_share_flags(proto_tree *tree, tvbuff_t *tvb, int offset)
&hf_smb2_share_flags_force_levelii_oplock,
&hf_smb2_share_flags_enable_hash_v1,
&hf_smb2_share_flags_enable_hash_v2,
+ &hf_smb2_share_flags_encrypt_data,
NULL
};
proto_item *item;
@@ -4549,7 +4572,7 @@ static void
report_create_context_malformed_buffer(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, const char *buffer_desc)
{
proto_tree_add_text(tree, tvb, 0, tvb_length_remaining(tvb, 0),
- "%s SHOULD NOT be generated. Malformed packeet", buffer_desc);
+ "%s SHOULD NOT be generated. Malformed packet", buffer_desc);
}
static void
dissect_smb2_ExtA_buffer_request(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, smb2_info_t *si)
@@ -6073,6 +6096,47 @@ static smb2_function smb2_dissector[256] = {
};
+#define ENC_ALG_aes128_ccm 0x0001
+
+static int
+dissect_smb2_transform_header(packet_info *pinfo _U_, proto_tree *tree, tvbuff_t *tvb, int offset, smb2_transform_info_t *sti)
+{
+ static const int *sf_fields[] = {
+ &hf_smb2_encryption_aes128_ccm,
+ NULL
+ };
+
+ /* signature */
+ proto_tree_add_item(tree, hf_smb2_transform_signature, tvb, offset, 16, ENC_LITTLE_ENDIAN);
+ offset += 16;
+
+ /* nonce */
+ proto_tree_add_item(tree, hf_smb2_transform_nonce, tvb, offset, 16, ENC_LITTLE_ENDIAN);
+ tvb_memcpy(tvb, sti->nonce, offset, 16);
+ offset += 16;
+
+ /* size */
+ proto_tree_add_item(tree, hf_smb2_transform_msg_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ sti->size = tvb_get_letohl(tvb, offset);
+ offset += 4;
+
+ /* reserved */
+ proto_tree_add_item(tree, hf_smb2_transform_reserved, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+
+ /* enc algorithm */
+ proto_tree_add_bitmask(tree, tvb, offset, hf_smb2_transform_enc_alg, ett_smb2_transform_enc_alg, sf_fields, ENC_LITTLE_ENDIAN);
+ sti->alg = tvb_get_letohs(tvb, offset);
+ offset += 2;
+
+ /* session ID */
+ proto_tree_add_item(tree, hf_smb2_transform_sessionid, tvb, offset, 8, ENC_LITTLE_ENDIAN);
+ tvb_memcpy(tvb, sti->session_id, offset, 8);
+ offset += 8;
+
+ return offset;
+}
+
static int
dissect_smb2_command(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset, smb2_info_t *si)
{
@@ -6209,6 +6273,7 @@ dissect_smb2_tid_sesid(packet_info *pinfo _U_, proto_tree *tree, tvbuff_t *tvb,
static int
dissect_smb2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, gboolean first_in_chain)
{
+ gboolean smb2_transform_header = FALSE;
proto_item *seqnum_item;
proto_item *item=NULL;
proto_tree *tree=NULL;
@@ -6218,16 +6283,23 @@ dissect_smb2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, gboolea
proto_tree *flags_tree=NULL;
int offset = 0;
int chain_offset = 0;
+ char* label = smb_header_label;
conversation_t *conversation;
smb2_saved_info_t *ssi=NULL, ssi_key;
smb2_info_t *si;
+ smb2_transform_info_t *sti;
+ sti=ep_alloc(sizeof(smb2_transform_info_t));
si=ep_alloc(sizeof(smb2_info_t));
si->conv=NULL;
si->saved=NULL;
si->tree=NULL;
si->top_tree=parent_tree;
+ if (tvb_get_guint8(tvb, 0) == 0xfd) {
+ smb2_transform_header = TRUE;
+ label = smb_transform_header_label;
+ }
/* find which conversation we are part of and get the data for that
* conversation
*/
@@ -6269,7 +6341,7 @@ dissect_smb2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, gboolea
if (tree) {
- header_item = proto_tree_add_text(tree, tvb, offset, -1, "SMB2 Header");
+ header_item = proto_tree_add_text(tree, tvb, offset, -1, "%s", label);
header_tree = proto_item_add_subtree(header_item, ett_smb2_header);
}
@@ -6278,167 +6350,186 @@ dissect_smb2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, gboolea
proto_tree_add_text(header_tree, tvb, offset, 4, "Server Component: SMB2");
offset += 4;
- /* header length */
- proto_tree_add_item(header_tree, hf_smb2_header_len, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset += 2;
+ if (!smb2_transform_header) {
+ /* we need the flags before we know how to parse the credits field */
+ si->flags=tvb_get_letohl(tvb, offset+12);
- /* credit charge (previously "epoch" (unused) which has been deprecated as of "SMB 2.1") */
- proto_tree_add_item(header_tree, hf_smb2_credit_charge, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset += 2;
-
- /* Status Code */
- si->status=tvb_get_letohl(tvb, offset);
- proto_tree_add_item(header_tree, hf_smb2_nt_status, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- offset += 4;
+ /* header length */
+ proto_tree_add_item(header_tree, hf_smb2_header_len, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+ /* credit charge (previously "epoch" (unused) which has been deprecated as of "SMB 2.1") */
+ proto_tree_add_item(header_tree, hf_smb2_credit_charge, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
- /* opcode */
- si->opcode=tvb_get_letohs(tvb, offset);
- proto_tree_add_item(header_tree, hf_smb2_cmd, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset += 2;
+ /* Status Code */
+ if (si->flags & SMB2_FLAGS_RESPONSE) {
+ si->status=tvb_get_letohl(tvb, offset);
+ proto_tree_add_item(header_tree, hf_smb2_nt_status, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+ } else {
+ si->status=0;
+ proto_tree_add_item(header_tree, hf_smb2_channel_sequence, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+ proto_tree_add_item(header_tree, hf_smb2_reserved, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
+ }
- /* we need the flags before we know how to parse the credits field */
- si->flags=tvb_get_letohl(tvb, offset+2);
+ /* opcode */
+ si->opcode=tvb_get_letohs(tvb, offset);
+ proto_tree_add_item(header_tree, hf_smb2_cmd, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 2;
- /* credits */
- if (si->flags & SMB2_FLAGS_RESPONSE) {
- proto_tree_add_item(header_tree, hf_smb2_credits_granted, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- } else {
- proto_tree_add_item(header_tree, hf_smb2_credits_requested, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- }
- offset += 2;
+ /* credits */
+ if (si->flags & SMB2_FLAGS_RESPONSE) {
+ proto_tree_add_item(header_tree, hf_smb2_credits_granted, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ } else {
+ proto_tree_add_item(header_tree, hf_smb2_credits_requested, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ }
+ offset += 2;
- /* flags */
- if(header_tree){
- flags_item = proto_tree_add_text(header_tree, tvb, offset, 4,
- "Flags: 0x%08x", si->flags);
- flags_tree = proto_item_add_subtree(flags_item, ett_smb2_flags);
- }
- proto_tree_add_boolean(flags_tree, hf_smb2_flags_dfs_op, tvb, offset, 4, si->flags);
- proto_tree_add_boolean(flags_tree, hf_smb2_flags_signature, tvb, offset, 4, si->flags);
- proto_tree_add_boolean(flags_tree, hf_smb2_flags_chained, tvb, offset, 4, si->flags);
- proto_tree_add_boolean(flags_tree, hf_smb2_flags_async_cmd, tvb, offset, 4, si->flags);
- proto_tree_add_boolean(flags_tree, hf_smb2_flags_response, tvb, offset, 4, si->flags);
+ /* flags */
+ if(header_tree){
+ flags_item = proto_tree_add_text(header_tree, tvb, offset, 4,
+ "Flags: 0x%08x", si->flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_smb2_flags);
+ }
+ proto_tree_add_boolean(flags_tree, hf_smb2_flags_dfs_op, tvb, offset, 4, si->flags);
+ proto_tree_add_boolean(flags_tree, hf_smb2_flags_signature, tvb, offset, 4, si->flags);
+ proto_tree_add_boolean(flags_tree, hf_smb2_flags_chained, tvb, offset, 4, si->flags);
+ proto_tree_add_boolean(flags_tree, hf_smb2_flags_async_cmd, tvb, offset, 4, si->flags);
+ proto_tree_add_boolean(flags_tree, hf_smb2_flags_response, tvb, offset, 4, si->flags);
- offset += 4;
+ offset += 4;
- /* Next Command */
- chain_offset=tvb_get_letohl(tvb, offset);
- proto_tree_add_item(header_tree, hf_smb2_chain_offset, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
+ /* Next Command */
+ chain_offset=tvb_get_letohl(tvb, offset);
+ proto_tree_add_item(header_tree, hf_smb2_chain_offset, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
- /* command sequence number*/
- si->seqnum=tvb_get_letoh64(tvb, offset);
- ssi_key.seqnum=si->seqnum;
- seqnum_item=proto_tree_add_item(header_tree, hf_smb2_seqnum, tvb, offset, 8, ENC_LITTLE_ENDIAN);
- if(seqnum_item && (si->seqnum==-1)){
- proto_item_append_text(seqnum_item, " (unsolicited response)");
- }
- offset += 8;
+ /* command sequence number*/
+ si->seqnum=tvb_get_letoh64(tvb, offset);
+ ssi_key.seqnum=si->seqnum;
+ seqnum_item=proto_tree_add_item(header_tree, hf_smb2_seqnum, tvb, offset, 8, ENC_LITTLE_ENDIAN);
+ if(seqnum_item && (si->seqnum==-1)){
+ proto_item_append_text(seqnum_item, " (unsolicited response)");
+ }
+ offset += 8;
- /* Tree ID and Session ID */
- offset = dissect_smb2_tid_sesid(pinfo, header_tree, tvb, offset, si);
+ /* Tree ID and Session ID */
+ offset = dissect_smb2_tid_sesid(pinfo, header_tree, tvb, offset, si);
- /* Signature */
- proto_tree_add_item(header_tree, hf_smb2_signature, tvb, offset, 16, ENC_NA);
- offset += 16;
+ /* Signature */
+ proto_tree_add_item(header_tree, hf_smb2_signature, tvb, offset, 16, ENC_NA);
+ offset += 16;
- proto_item_set_len(header_item, offset);
+ proto_item_set_len(header_item, offset);
- if (check_col(pinfo->cinfo, COL_INFO)){
- col_append_fstr(pinfo->cinfo, COL_INFO, "%s %s",
- decode_smb2_name(si->opcode),
- (si->flags & SMB2_FLAGS_RESPONSE)?"Response":"Request");
- if(si->status){
- col_append_fstr(
- pinfo->cinfo, COL_INFO, ", Error: %s",
- val_to_str(si->status, NT_errors,
- "Unknown (0x%08X)"));
+ if (check_col(pinfo->cinfo, COL_INFO)){
+ col_append_fstr(pinfo->cinfo, COL_INFO, "%s %s",
+ decode_smb2_name(si->opcode),
+ (si->flags & SMB2_FLAGS_RESPONSE)?"Response":"Request");
+ if(si->status){
+ col_append_fstr(
+ pinfo->cinfo, COL_INFO, ", Error: %s",
+ val_to_str(si->status, NT_errors,
+ "Unknown (0x%08X)"));
+ }
}
- }
- if(!pinfo->fd->flags.visited){
- /* see if we can find this seqnum in the unmatched table */
- ssi=g_hash_table_lookup(si->conv->unmatched, &ssi_key);
-
- if(!(si->flags & SMB2_FLAGS_RESPONSE)){
- /* This is a request */
- if(ssi){
- /* this is a request and we already found
- * an older ssi so just delete the previous
- * one
- */
- g_hash_table_remove(si->conv->unmatched, ssi);
- ssi=NULL;
- }
+ if(!pinfo->fd->flags.visited){
+ /* see if we can find this seqnum in the unmatched table */
+ ssi=g_hash_table_lookup(si->conv->unmatched, &ssi_key);
- if(!ssi){
- /* no we couldnt find it, so just add it then
- * if was a request we are decoding
- */
- ssi=se_alloc(sizeof(smb2_saved_info_t));
- ssi->class=0;
- ssi->infolevel=0;
- ssi->seqnum=ssi_key.seqnum;
- ssi->frame_req=pinfo->fd->num;
- ssi->frame_res=0;
- ssi->req_time=pinfo->fd->abs_ts;
- ssi->extra_info=NULL;
- ssi->extra_info_type=SMB2_EI_NONE;
- g_hash_table_insert(si->conv->unmatched, ssi, ssi);
+ if(!(si->flags & SMB2_FLAGS_RESPONSE)){
+ /* This is a request */
+ if(ssi){
+ /* this is a request and we already found
+ * an older ssi so just delete the previous
+ * one
+ */
+ g_hash_table_remove(si->conv->unmatched, ssi);
+ ssi=NULL;
+ }
+
+ if(!ssi){
+ /* no we couldnt find it, so just add it then
+ * if was a request we are decoding
+ */
+ ssi=se_alloc(sizeof(smb2_saved_info_t));
+ ssi->class=0;
+ ssi->infolevel=0;
+ ssi->seqnum=ssi_key.seqnum;
+ ssi->frame_req=pinfo->fd->num;
+ ssi->frame_res=0;
+ ssi->req_time=pinfo->fd->abs_ts;
+ ssi->extra_info=NULL;
+ ssi->extra_info_type=SMB2_EI_NONE;
+ g_hash_table_insert(si->conv->unmatched, ssi, ssi);
+ }
+ } else {
+ /* This is a response */
+ if(ssi){
+ /* just set the response frame and move it to the matched table */
+ ssi->frame_res=pinfo->fd->num;
+ g_hash_table_remove(si->conv->unmatched, ssi);
+ g_hash_table_insert(si->conv->matched, ssi, ssi);
+ }
}
} else {
- /* This is a response */
- if(ssi){
- /* just set the response frame and move it to the matched table */
- ssi->frame_res=pinfo->fd->num;
- g_hash_table_remove(si->conv->unmatched, ssi);
- g_hash_table_insert(si->conv->matched, ssi, ssi);
+ /* see if we can find this seqnum in the matched table */
+ ssi=g_hash_table_lookup(si->conv->matched, &ssi_key);
+ /* if we couldnt find it in the matched table, it might still
+ * be in the unmatched table
+ */
+ if(!ssi){
+ ssi=g_hash_table_lookup(si->conv->unmatched, &ssi_key);
}
}
- } else {
- /* see if we can find this seqnum in the matched table */
- ssi=g_hash_table_lookup(si->conv->matched, &ssi_key);
- /* if we couldnt find it in the matched table, it might still
- * be in the unmatched table
- */
- if(!ssi){
- ssi=g_hash_table_lookup(si->conv->unmatched, &ssi_key);
- }
- }
- if(ssi){
- if(!(si->flags & SMB2_FLAGS_RESPONSE)){
- if(ssi->frame_res){
- proto_item *tmp_item;
- tmp_item=proto_tree_add_uint(header_tree, hf_smb2_response_in, tvb, 0, 0, ssi->frame_res);
- PROTO_ITEM_SET_GENERATED(tmp_item);
- }
- } else {
- if(ssi->frame_req){
- proto_item *tmp_item;
- nstime_t t, deltat;
-
- tmp_item=proto_tree_add_uint(header_tree, hf_smb2_response_to, tvb, 0, 0, ssi->frame_req);
- PROTO_ITEM_SET_GENERATED(tmp_item);
- t = pinfo->fd->abs_ts;
- nstime_delta(&deltat, &t, &ssi->req_time);
- tmp_item=proto_tree_add_time(header_tree, hf_smb2_time, tvb,
- 0, 0, &deltat);
- PROTO_ITEM_SET_GENERATED(tmp_item);
+ if(ssi){
+ if(!(si->flags & SMB2_FLAGS_RESPONSE)){
+ if(ssi->frame_res){
+ proto_item *tmp_item;
+ tmp_item=proto_tree_add_uint(header_tree, hf_smb2_response_in, tvb, 0, 0, ssi->frame_res);
+ PROTO_ITEM_SET_GENERATED(tmp_item);
+ }
+ } else {
+ if(ssi->frame_req){
+ proto_item *tmp_item;
+ nstime_t t, deltat;
+
+ tmp_item=proto_tree_add_uint(header_tree, hf_smb2_response_to, tvb, 0, 0, ssi->frame_req);
+ PROTO_ITEM_SET_GENERATED(tmp_item);
+ t = pinfo->fd->abs_ts;
+ nstime_delta(&deltat, &t, &ssi->req_time);
+ tmp_item=proto_tree_add_time(header_tree, hf_smb2_time, tvb,
+ 0, 0, &deltat);
+ PROTO_ITEM_SET_GENERATED(tmp_item);
+ }
}
}
- }
- /* if we dont have ssi yet we must fake it */
- /*qqq*/
- si->saved=ssi;
+ /* if we dont have ssi yet we must fake it */
+ /*qqq*/
+ si->saved=ssi;
- tap_queue_packet(smb2_tap, pinfo, si);
+ tap_queue_packet(smb2_tap, pinfo, si);
- /* Decode the payload */
- offset = dissect_smb2_command(pinfo, tree, tvb, offset, si);
+ /* Decode the payload */
+ offset = dissect_smb2_command(pinfo, tree, tvb, offset, si);
+ } else {
+ proto_item *enc_item=NULL;
+ proto_tree *enc_tree=NULL;
+
+ offset = dissect_smb2_transform_header(pinfo, header_tree, tvb, offset, sti);
+ enc_item = proto_tree_add_text(tree, tvb, offset, -1, "Encrypted SMB2 data");
+ enc_tree = proto_item_add_subtree(enc_item, ett_smb2_encrypted);
+ proto_tree_add_item(enc_tree, hf_smb2_transform_encyrpted_data, tvb, offset, sti->size, ENC_LITTLE_ENDIAN);
+ col_append_fstr(pinfo->cinfo, COL_INFO, "Encrypted SMB 2.2");
+ offset += sti->size;
+ }
if (chain_offset > 0) {
tvbuff_t *next_tvb;
@@ -6460,7 +6551,7 @@ dissect_smb2_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
if (tvb_length(tvb) < 4)
return FALSE;
- if( (tvb_get_guint8(tvb, 0) != 0xfe)
+ if( ((tvb_get_guint8(tvb, 0) != 0xfe) && (tvb_get_guint8(tvb, 0) != 0xfd))
|| (tvb_get_guint8(tvb, 1) != 'S')
|| (tvb_get_guint8(tvb, 2) != 'M')
|| (tvb_get_guint8(tvb, 3) != 'B') ){
@@ -7108,6 +7199,10 @@ proto_register_smb2(void)
{ "Credits granted", "smb2.credits.granted", FT_UINT16, BASE_DEC,
NULL, 0, NULL, HFILL }},
+ { &hf_smb2_channel_sequence,
+ { "Channel Sequence", "smb2.channel_sequence", FT_UINT16, BASE_DEC,
+ NULL, 0, NULL, HFILL }},
+
{ &hf_smb2_dialect_count,
{ "Dialect count", "smb2.dialect_count", FT_UINT16, BASE_DEC,
NULL, 0, NULL, HFILL }},
@@ -7229,7 +7324,7 @@ proto_register_smb2(void)
"If the host supports MULTI CHANNEL", HFILL }},
{ &hf_smb2_cap_persistent_handles,
- { "LARGE MTU", "smb2.capabilities.persistent_handles", FT_BOOLEAN, 32,
+ { "PERSISTENT HANDLES", "smb2.capabilities.persistent_handles", FT_BOOLEAN, 32,
TFS(&tfs_cap_persistent_handles), NEGPROT_CAP_PERSISTENT_HANDLES,
"If the host supports PERSISTENT HANDLES", HFILL }},
@@ -7238,6 +7333,11 @@ proto_register_smb2(void)
TFS(&tfs_cap_directory_leasing), NEGPROT_CAP_DIRECTORY_LEASING,
"If the host supports DIRECTORY LEASING", HFILL }},
+ { &hf_smb2_cap_encryption,
+ { "ENCRYPTION", "smb2.capabilities.encryption", FT_BOOLEAN, 32,
+ TFS(&tfs_cap_encryption), NEGPROT_CAP_ENCRYPTION,
+ "If the host supports ENCRYPTION", HFILL }},
+
{ &hf_smb2_max_trans_size,
{ "Max Transaction Size", "smb2.max_trans_size", FT_UINT32, BASE_DEC,
NULL, 0, "Maximum size of a transaction", HFILL }},
@@ -7294,6 +7394,10 @@ proto_register_smb2(void)
{ "Enable hash V2", "smb2.share_flags.enable_hash_v2", FT_BOOLEAN, 32,
NULL, SHARE_FLAGS_enable_hash_v2, "The share supports hash generation V2 for branch cache retrieval of data (see also section 2.2.31.2 of MS-SMB2)", HFILL }},
+ { &hf_smb2_share_flags_encrypt_data,
+ { "Encrypted data required", "smb2.share_flags.encrypt_data", FT_BOOLEAN, 32,
+ NULL, SHARE_FLAGS_encryption_required, "The share require data encryption", HFILL }},
+
{ &hf_smb2_share_caching,
{ "Caching policy", "smb2.share.caching", FT_UINT32, BASE_HEX,
VALS(share_cache_vals), 0, NULL, HFILL }},
@@ -7439,7 +7543,7 @@ proto_register_smb2(void)
NULL, 0, "Reserved bytes", HFILL }},
{ &hf_smb2_dhnq_buffer_reserved,
- { "Reserved", "smb2.hf_smb2_dhnq_buffer_reserved", FT_UINT64, BASE_HEX,
+ { "Reserved", "smb2.dhnq_buffer_reserved", FT_UINT64, BASE_HEX,
NULL, 0, NULL, HFILL}},
{ &hf_smb2_dh2x_buffer_timeout,
@@ -7463,7 +7567,7 @@ proto_register_smb2(void)
NULL, 0, NULL, HFILL}},
{ &hf_smb2_APP_INSTANCE_buffer_struct_size,
- { "Struct Size", "smb2.app_instance.struct_size", FT_UINT16, 16,
+ { "Struct Size", "smb2.app_instance.struct_size", FT_UINT16, BASE_DEC,
NULL, 0, NULL, HFILL}},
{ &hf_smb2_APP_INSTANCE_buffer_reserved,
@@ -7474,6 +7578,38 @@ proto_register_smb2(void)
{ "Application Guid", "smb2.app_instance.app_guid", FT_GUID, BASE_NONE,
NULL, 0, NULL, HFILL}},
+ { &hf_smb2_transform_signature,
+ { "Signature", "smb2.header.transform.signature", FT_BYTES, BASE_NONE,
+ NULL, 0, NULL, HFILL }},
+
+ { &hf_smb2_transform_nonce,
+ { "Nonce", "smb2.header.transform.nonce", FT_BYTES, BASE_NONE,
+ NULL, 0, NULL, HFILL }},
+
+ { &hf_smb2_transform_msg_size,
+ { "Message size", "smb2.header.transform.msg_size", FT_UINT32, BASE_DEC,
+ NULL, 0, NULL, HFILL }},
+
+ { &hf_smb2_transform_reserved,
+ { "Reserved", "smb2.header.transform.reserved", FT_BYTES, BASE_NONE,
+ NULL, 0, NULL, HFILL }},
+
+ { &hf_smb2_transform_sessionid,
+ { "Session ID", "smb2.header.transform.sessionid", FT_BYTES, BASE_NONE,
+ NULL, 0, NULL, HFILL }},
+
+ { &hf_smb2_transform_enc_alg,
+ { "Encryption ALG", "smb2.header.transform.encryption_alg", FT_UINT16, BASE_HEX,
+ NULL, 0, NULL, HFILL }},
+
+ { &hf_smb2_encryption_aes128_ccm,
+ { "SMB2_ENCRYPTION_AES128_CCM", "smb2.header.transform.enc_aes128_ccm", FT_BOOLEAN, 16,
+ NULL, ENC_ALG_aes128_ccm, NULL, HFILL }},
+
+ { &hf_smb2_transform_encyrpted_data,
+ { "Data", "smb2.header.transform.enc_data", FT_BYTES, BASE_NONE,
+ NULL, 0, NULL, HFILL }},
+
};
static gint *ett[] = {
@@ -7481,6 +7617,7 @@ proto_register_smb2(void)
&ett_smb2_ea,
&ett_smb2_olb,
&ett_smb2_header,
+ &ett_smb2_encrypted,
&ett_smb2_command,
&ett_smb2_secblob,
&ett_smb2_file_basic_info,
@@ -7547,6 +7684,7 @@ proto_register_smb2(void)
&ett_smb2_DH2C_buffer,
&ett_smb2_dh2x_flags,
&ett_smb2_APP_INSTANCE_buffer,
+ &ett_smb2_transform_enc_alg,
};
proto_smb2 = proto_register_protocol("SMB2 (Server Message Block Protocol version 2)",
diff --git a/epan/dissectors/packet-smb2.h b/epan/dissectors/packet-smb2.h
index 6648c6df25..78f8569502 100644
--- a/epan/dissectors/packet-smb2.h
+++ b/epan/dissectors/packet-smb2.h
@@ -107,6 +107,15 @@ typedef struct _smb2_info_t {
proto_tree *top_tree;
} smb2_info_t;
+/* for transform content information */
+
+typedef struct _smb2_transform_info_t {
+ guint8 nonce[16];
+ guint32 size;
+ guint16 alg;
+ guint8 session_id[8];
+} smb2_transform_info_t;
+
int dissect_smb2_FILE_OBJECTID_BUFFER(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset);
int dissect_smb2_ioctl_function(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, int offset, guint32 *ioctl_function);
diff --git a/epan/dissectors/packet-smpp.c b/epan/dissectors/packet-smpp.c
index 35a20b4a06..f00cf767ca 100644
--- a/epan/dissectors/packet-smpp.c
+++ b/epan/dissectors/packet-smpp.c
@@ -15,7 +15,7 @@
* introduced by Abhik Sarkar
*
* Support for Huawei SMPP+ extensions
- * introduced by Xu Bo and enhance by Abhik Sarkar
+ * introduced by Xu Bo and enhanced by Abhik Sarkar
*
* Enhanced error code handling
* provided by Stipe Tolj from Kannel.
@@ -42,6 +42,7 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
* ----------
*
* Dissector of an SMPP (Short Message Peer to Peer) PDU, as defined by the
@@ -53,8 +54,6 @@
# include "config.h"
#endif
-#include <stdio.h>
-#include <stdlib.h>
#include <string.h>
#include <time.h>
@@ -95,182 +94,182 @@ static void dissect_smpp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
*
* Fixed header section
*/
-static int proto_smpp = -1;
+static int proto_smpp = -1;
-static int st_smpp_ops = -1;
-static int st_smpp_req = -1;
-static int st_smpp_res = -1;
-static int st_smpp_res_status = -1;
+static int st_smpp_ops = -1;
+static int st_smpp_req = -1;
+static int st_smpp_res = -1;
+static int st_smpp_res_status = -1;
-static int hf_smpp_command_id = -1;
-static int hf_smpp_command_length = -1;
-static int hf_smpp_command_status = -1;
-static int hf_smpp_sequence_number = -1;
+static int hf_smpp_command_id = -1;
+static int hf_smpp_command_length = -1;
+static int hf_smpp_command_status = -1;
+static int hf_smpp_sequence_number = -1;
/*
* Fixed body section
*/
-static int hf_smpp_system_id = -1;
-static int hf_smpp_password = -1;
-static int hf_smpp_system_type = -1;
-static int hf_smpp_interface_version = -1;
-static int hf_smpp_addr_ton = -1;
-static int hf_smpp_addr_npi = -1;
-static int hf_smpp_address_range = -1;
-static int hf_smpp_service_type = -1;
-static int hf_smpp_source_addr_ton = -1;
-static int hf_smpp_source_addr_npi = -1;
-static int hf_smpp_source_addr = -1;
-static int hf_smpp_dest_addr_ton = -1;
-static int hf_smpp_dest_addr_npi = -1;
-static int hf_smpp_destination_addr = -1;
-static int hf_smpp_esm_submit_msg_mode = -1;
-static int hf_smpp_esm_submit_msg_type = -1;
-static int hf_smpp_esm_submit_features = -1;
-static int hf_smpp_protocol_id = -1;
-static int hf_smpp_priority_flag = -1;
-static int hf_smpp_schedule_delivery_time = -1;
-static int hf_smpp_schedule_delivery_time_r = -1;
-static int hf_smpp_validity_period = -1;
-static int hf_smpp_validity_period_r = -1;
-static int hf_smpp_regdel_receipt = -1;
-static int hf_smpp_regdel_acks = -1;
-static int hf_smpp_regdel_notif = -1;
-static int hf_smpp_replace_if_present_flag = -1;
-static int hf_smpp_data_coding = -1;
-static int hf_smpp_sm_default_msg_id = -1;
-static int hf_smpp_sm_length = -1;
-static int hf_smpp_short_message = -1;
-static int hf_smpp_message_id = -1;
-static int hf_smpp_dlist = -1;
-static int hf_smpp_dlist_resp = -1;
-static int hf_smpp_dl_name = -1;
-static int hf_smpp_final_date = -1;
-static int hf_smpp_final_date_r = -1;
-static int hf_smpp_message_state = -1;
-static int hf_smpp_error_code = -1;
-static int hf_smpp_error_status_code = -1;
-static int hf_smpp_esme_addr_ton = -1;
-static int hf_smpp_esme_addr_npi = -1;
-static int hf_smpp_esme_addr = -1;
+static int hf_smpp_system_id = -1;
+static int hf_smpp_password = -1;
+static int hf_smpp_system_type = -1;
+static int hf_smpp_interface_version = -1;
+static int hf_smpp_addr_ton = -1;
+static int hf_smpp_addr_npi = -1;
+static int hf_smpp_address_range = -1;
+static int hf_smpp_service_type = -1;
+static int hf_smpp_source_addr_ton = -1;
+static int hf_smpp_source_addr_npi = -1;
+static int hf_smpp_source_addr = -1;
+static int hf_smpp_dest_addr_ton = -1;
+static int hf_smpp_dest_addr_npi = -1;
+static int hf_smpp_destination_addr = -1;
+static int hf_smpp_esm_submit_msg_mode = -1;
+static int hf_smpp_esm_submit_msg_type = -1;
+static int hf_smpp_esm_submit_features = -1;
+static int hf_smpp_protocol_id = -1;
+static int hf_smpp_priority_flag = -1;
+static int hf_smpp_schedule_delivery_time = -1;
+static int hf_smpp_schedule_delivery_time_r = -1;
+static int hf_smpp_validity_period = -1;
+static int hf_smpp_validity_period_r = -1;
+static int hf_smpp_regdel_receipt = -1;
+static int hf_smpp_regdel_acks = -1;
+static int hf_smpp_regdel_notif = -1;
+static int hf_smpp_replace_if_present_flag = -1;
+static int hf_smpp_data_coding = -1;
+static int hf_smpp_sm_default_msg_id = -1;
+static int hf_smpp_sm_length = -1;
+static int hf_smpp_short_message = -1;
+static int hf_smpp_message_id = -1;
+static int hf_smpp_dlist = -1;
+static int hf_smpp_dlist_resp = -1;
+static int hf_smpp_dl_name = -1;
+static int hf_smpp_final_date = -1;
+static int hf_smpp_final_date_r = -1;
+static int hf_smpp_message_state = -1;
+static int hf_smpp_error_code = -1;
+static int hf_smpp_error_status_code = -1;
+static int hf_smpp_esme_addr_ton = -1;
+static int hf_smpp_esme_addr_npi = -1;
+static int hf_smpp_esme_addr = -1;
/*
* Optional parameter section
*/
-static int hf_smpp_opt_params = -1;
-static int hf_smpp_opt_param = -1;
-static int hf_smpp_opt_param_tag = -1;
-static int hf_smpp_opt_param_len = -1;
-static int hf_smpp_vendor_op = -1;
-static int hf_smpp_reserved_op = -1;
-
-static int hf_smpp_dest_addr_subunit = -1;
-static int hf_smpp_dest_network_type = -1;
-static int hf_smpp_dest_bearer_type = -1;
-static int hf_smpp_dest_telematics_id = -1;
-static int hf_smpp_source_addr_subunit = -1;
-static int hf_smpp_source_network_type = -1;
-static int hf_smpp_source_bearer_type = -1;
-static int hf_smpp_source_telematics_id = -1;
-static int hf_smpp_qos_time_to_live = -1;
-static int hf_smpp_payload_type = -1;
-static int hf_smpp_additional_status_info_text = -1;
-static int hf_smpp_receipted_message_id = -1;
-static int hf_smpp_msg_wait_ind = -1;
-static int hf_smpp_msg_wait_type = -1;
-static int hf_smpp_privacy_indicator = -1;
-static int hf_smpp_source_subaddress = -1;
-static int hf_smpp_dest_subaddress = -1;
-static int hf_smpp_user_message_reference = -1;
-static int hf_smpp_user_response_code = -1;
-static int hf_smpp_source_port = -1;
-static int hf_smpp_destination_port = -1;
-static int hf_smpp_sar_msg_ref_num = -1;
-static int hf_smpp_language_indicator = -1;
-static int hf_smpp_sar_total_segments = -1;
-static int hf_smpp_sar_segment_seqnum = -1;
-static int hf_smpp_SC_interface_version = -1;
-static int hf_smpp_callback_num_pres = -1;
-static int hf_smpp_callback_num_scrn = -1;
-static int hf_smpp_callback_num_atag = -1;
-static int hf_smpp_number_of_messages = -1;
-static int hf_smpp_callback_num = -1;
-static int hf_smpp_dpf_result = -1;
-static int hf_smpp_set_dpf = -1;
-static int hf_smpp_ms_availability_status = -1;
-static int hf_smpp_network_error_type = -1;
-static int hf_smpp_network_error_code = -1;
-static int hf_smpp_message_payload = -1;
-static int hf_smpp_delivery_failure_reason = -1;
-static int hf_smpp_more_messages_to_send = -1;
-static int hf_smpp_ussd_service_op = -1;
-static int hf_smpp_display_time = -1;
-static int hf_smpp_sms_signal = -1;
-static int hf_smpp_ms_validity = -1;
-static int hf_smpp_alert_on_message_delivery_null = -1;
-static int hf_smpp_alert_on_message_delivery = -1;
-static int hf_smpp_its_reply_type = -1;
-static int hf_smpp_its_session_number = -1;
-static int hf_smpp_its_session_sequence = -1;
-static int hf_smpp_its_session_ind = -1;
+static int hf_smpp_opt_params = -1;
+static int hf_smpp_opt_param = -1;
+static int hf_smpp_opt_param_tag = -1;
+static int hf_smpp_opt_param_len = -1;
+static int hf_smpp_vendor_op = -1;
+static int hf_smpp_reserved_op = -1;
+
+static int hf_smpp_dest_addr_subunit = -1;
+static int hf_smpp_dest_network_type = -1;
+static int hf_smpp_dest_bearer_type = -1;
+static int hf_smpp_dest_telematics_id = -1;
+static int hf_smpp_source_addr_subunit = -1;
+static int hf_smpp_source_network_type = -1;
+static int hf_smpp_source_bearer_type = -1;
+static int hf_smpp_source_telematics_id = -1;
+static int hf_smpp_qos_time_to_live = -1;
+static int hf_smpp_payload_type = -1;
+static int hf_smpp_additional_status_info_text = -1;
+static int hf_smpp_receipted_message_id = -1;
+static int hf_smpp_msg_wait_ind = -1;
+static int hf_smpp_msg_wait_type = -1;
+static int hf_smpp_privacy_indicator = -1;
+static int hf_smpp_source_subaddress = -1;
+static int hf_smpp_dest_subaddress = -1;
+static int hf_smpp_user_message_reference = -1;
+static int hf_smpp_user_response_code = -1;
+static int hf_smpp_source_port = -1;
+static int hf_smpp_destination_port = -1;
+static int hf_smpp_sar_msg_ref_num = -1;
+static int hf_smpp_language_indicator = -1;
+static int hf_smpp_sar_total_segments = -1;
+static int hf_smpp_sar_segment_seqnum = -1;
+static int hf_smpp_SC_interface_version = -1;
+static int hf_smpp_callback_num_pres = -1;
+static int hf_smpp_callback_num_scrn = -1;
+static int hf_smpp_callback_num_atag = -1;
+static int hf_smpp_number_of_messages = -1;
+static int hf_smpp_callback_num = -1;
+static int hf_smpp_dpf_result = -1;
+static int hf_smpp_set_dpf = -1;
+static int hf_smpp_ms_availability_status = -1;
+static int hf_smpp_network_error_type = -1;
+static int hf_smpp_network_error_code = -1;
+static int hf_smpp_message_payload = -1;
+static int hf_smpp_delivery_failure_reason = -1;
+static int hf_smpp_more_messages_to_send = -1;
+static int hf_smpp_ussd_service_op = -1;
+static int hf_smpp_display_time = -1;
+static int hf_smpp_sms_signal = -1;
+static int hf_smpp_ms_validity = -1;
+static int hf_smpp_alert_on_message_delivery_null = -1;
+static int hf_smpp_alert_on_message_delivery = -1;
+static int hf_smpp_its_reply_type = -1;
+static int hf_smpp_its_session_number = -1;
+static int hf_smpp_its_session_sequence = -1;
+static int hf_smpp_its_session_ind = -1;
/* Optional Parameters introduced in SMPP 5.0 */
-static int hf_smpp_congestion_state = -1;
-static int hf_smpp_billing_identification = -1;
-static int hf_smpp_dest_addr_np_country = -1;
-static int hf_smpp_dest_addr_np_information = -1;
-static int hf_smpp_dest_addr_np_resolution = -1;
-static int hf_smpp_source_network_id = -1;
-static int hf_smpp_source_node_id = -1;
-static int hf_smpp_dest_network_id = -1;
-static int hf_smpp_dest_node_id = -1;
+static int hf_smpp_congestion_state = -1;
+static int hf_smpp_billing_identification = -1;
+static int hf_smpp_dest_addr_np_country = -1;
+static int hf_smpp_dest_addr_np_information = -1;
+static int hf_smpp_dest_addr_np_resolution = -1;
+static int hf_smpp_source_network_id = -1;
+static int hf_smpp_source_node_id = -1;
+static int hf_smpp_dest_network_id = -1;
+static int hf_smpp_dest_node_id = -1;
/* Optional Parameters for Cell Broadcast Operations */
-static int hf_smpp_broadcast_channel_indicator = -1;
-static int hf_smpp_broadcast_content_type_nw = -1;
-static int hf_smpp_broadcast_content_type_type = -1;
-static int hf_smpp_broadcast_content_type_info = -1;
-static int hf_smpp_broadcast_message_class = -1;
-static int hf_smpp_broadcast_rep_num = -1;
-static int hf_smpp_broadcast_frequency_interval_unit = -1;
-static int hf_smpp_broadcast_frequency_interval_value = -1;
-static int hf_smpp_broadcast_area_identifier = -1;
-static int hf_smpp_broadcast_area_identifier_format = -1;
-static int hf_smpp_broadcast_error_status = -1;
-static int hf_smpp_broadcast_area_success = -1;
-static int hf_smpp_broadcast_end_time = -1;
-static int hf_smpp_broadcast_end_time_r = -1;
-static int hf_smpp_broadcast_service_group = -1;
+static int hf_smpp_broadcast_channel_indicator = -1;
+static int hf_smpp_broadcast_content_type_nw = -1;
+static int hf_smpp_broadcast_content_type_type = -1;
+static int hf_smpp_broadcast_content_type_info = -1;
+static int hf_smpp_broadcast_message_class = -1;
+static int hf_smpp_broadcast_rep_num = -1;
+static int hf_smpp_broadcast_frequency_interval_unit = -1;
+static int hf_smpp_broadcast_frequency_interval_value = -1;
+static int hf_smpp_broadcast_area_identifier = -1;
+static int hf_smpp_broadcast_area_identifier_format = -1;
+static int hf_smpp_broadcast_error_status = -1;
+static int hf_smpp_broadcast_area_success = -1;
+static int hf_smpp_broadcast_end_time = -1;
+static int hf_smpp_broadcast_end_time_r = -1;
+static int hf_smpp_broadcast_service_group = -1;
/*
* Data Coding Scheme section
*/
-static int hf_smpp_dcs = -1;
-static int hf_smpp_dcs_sms_coding_group = -1;
-static int hf_smpp_dcs_text_compression = -1;
-static int hf_smpp_dcs_class_present = -1;
-static int hf_smpp_dcs_charset = -1;
-static int hf_smpp_dcs_class = -1;
-static int hf_smpp_dcs_cbs_coding_group = -1;
-static int hf_smpp_dcs_cbs_language = -1;
-static int hf_smpp_dcs_wap_charset = -1;
-static int hf_smpp_dcs_wap_class = -1;
-static int hf_smpp_dcs_cbs_class = -1;
+static int hf_smpp_dcs = -1;
+static int hf_smpp_dcs_sms_coding_group = -1;
+static int hf_smpp_dcs_text_compression = -1;
+static int hf_smpp_dcs_class_present = -1;
+static int hf_smpp_dcs_charset = -1;
+static int hf_smpp_dcs_class = -1;
+static int hf_smpp_dcs_cbs_coding_group = -1;
+static int hf_smpp_dcs_cbs_language = -1;
+static int hf_smpp_dcs_wap_charset = -1;
+static int hf_smpp_dcs_wap_class = -1;
+static int hf_smpp_dcs_cbs_class = -1;
/*
* Huawei SMPP+ extensions
*/
-static int hf_huawei_smpp_version = -1;
-static int hf_huawei_smpp_smsc_addr = -1;
-static int hf_huawei_smpp_msc_addr_noa = -1;
-static int hf_huawei_smpp_msc_addr_npi = -1;
-static int hf_huawei_smpp_msc_addr = -1;
-static int hf_huawei_smpp_mo_mt_flag = -1;
-static int hf_huawei_smpp_length_auth = -1;
-static int hf_huawei_smpp_sm_id = -1;
-static int hf_huawei_smpp_service_id = -1;
-static int hf_huawei_smpp_operation_result = -1;
-static int hf_huawei_smpp_notify_mode = -1;
-static int hf_huawei_smpp_delivery_result = -1;
+static int hf_huawei_smpp_version = -1;
+static int hf_huawei_smpp_smsc_addr = -1;
+static int hf_huawei_smpp_msc_addr_noa = -1;
+static int hf_huawei_smpp_msc_addr_npi = -1;
+static int hf_huawei_smpp_msc_addr = -1;
+static int hf_huawei_smpp_mo_mt_flag = -1;
+static int hf_huawei_smpp_length_auth = -1;
+static int hf_huawei_smpp_sm_id = -1;
+static int hf_huawei_smpp_service_id = -1;
+static int hf_huawei_smpp_operation_result = -1;
+static int hf_huawei_smpp_notify_mode = -1;
+static int hf_huawei_smpp_delivery_result = -1;
/* Initialize the subtree pointers */
static gint ett_smpp = -1;
@@ -584,16 +583,16 @@ static const value_string vals_replace_if_present_flag[] = {
};
static const value_string vals_data_coding[] = {
- { 0, "SMSC default alphabet" },
- { 1, "IA5 (CCITT T.50/ASCII (ANSI X3.4)" },
- { 2, "Octet unspecified (8-bit binary)" },
- { 3, "Latin 1 (ISO-8859-1)" },
- { 4, "Octet unspecified (8-bit binary)" },
- { 5, "JIS (X 0208-1990)" },
- { 6, "Cyrillic (ISO-8859-5)" },
- { 7, "Latin/Hebrew (ISO-8859-8)" },
- { 8, "UCS2 (ISO/IEC-10646)" },
- { 9, "Pictogram encoding" },
+ { 0, "SMSC default alphabet" },
+ { 1, "IA5 (CCITT T.50/ASCII (ANSI X3.4)" },
+ { 2, "Octet unspecified (8-bit binary)" },
+ { 3, "Latin 1 (ISO-8859-1)" },
+ { 4, "Octet unspecified (8-bit binary)" },
+ { 5, "JIS (X 0208-1990)" },
+ { 6, "Cyrillic (ISO-8859-5)" },
+ { 7, "Latin/Hebrew (ISO-8859-8)" },
+ { 8, "UCS2 (ISO/IEC-10646)" },
+ { 9, "Pictogram encoding" },
{ 10, "ISO-2022-JP (Music codes)" },
{ 11, "reserved" },
{ 12, "reserved" },
@@ -1030,9 +1029,9 @@ static const value_string vals_dest_addr_np_resolution[] = {
};
static const range_string vals_broadcast_area_identifier_format[] = {
- {0, 0, "Alias / Name"},
- {1, 1, "Ellipsoid Arc"},
- {2, 2, "Polygon"},
+ {0, 0, "Alias / Name"},
+ {1, 1, "Ellipsoid Arc"},
+ {2, 2, "Polygon"},
{3, 255, "[Reserved]"},
{0, 0, NULL }
};
@@ -1056,7 +1055,7 @@ static const value_string vals_operation_result[] = {
{ 0x0f, "MO account balance is not enough" },
{ 0x10, "MT account balance is not enough" },
{ 0x11, "MO VAS is not supported" },
- { 0x12, "MT VAS is not suppoeted" },
+ { 0x12, "MT VAS is not supported" },
{ 0x13, "MO user is post-paid user and checked success" },
{ 0x14, "MT user is post-paid user and checked success" },
{ 0x15, "MO post-paid user status is incorrect" },
@@ -1179,35 +1178,35 @@ smpp_mktime(const char *datestr, time_t *secs, int *nsecs)
r_time.tm_isdst = -1;
if (relative == FALSE) {
- struct tm *gm, *local_time;
- int gm_hour, gm_min;
- time_t current_time;
+ struct tm *gm, *local_time;
+ int gm_hour, gm_min;
+ time_t current_time;
*secs = mktime(&r_time);
- /* Subtract out the timezone information since we will adjust for
- * the presented time's timezone below and then display in UTC.
- *
- * To do that, first determine the current timezone's offset to UTC.
- */
- current_time = time(NULL);
- gm = gmtime(&current_time);
- gm_hour = gm->tm_hour;
- gm_min = gm->tm_min;
- local_time = localtime(&current_time);
- /* Then subtract out that difference (whether the difference is
- * measured in hours, minutes, or both).
- */
- *secs -= 3600*(gm_hour - local_time->tm_hour);
- *secs -= 60*(gm_min - local_time->tm_min);
+ /* Subtract out the timezone information since we will adjust for
+ * the presented time's timezone below and then display in UTC.
+ *
+ * To do that, first determine the current timezone's offset to UTC.
+ */
+ current_time = time(NULL);
+ gm = gmtime(&current_time);
+ gm_hour = gm->tm_hour;
+ gm_min = gm->tm_min;
+ local_time = localtime(&current_time);
+ /* Then subtract out that difference (whether the difference is
+ * measured in hours, minutes, or both).
+ */
+ *secs -= 3600*(gm_hour - local_time->tm_hour);
+ *secs -= 60*(gm_min - local_time->tm_min);
*nsecs = (datestr[12] - '0') * 100000000;
t_diff = (10 * (datestr[13] - '0') + (datestr[14] - '0')) * 900;
if (datestr[15] == '-')
- /* Represented time is behind UTC, shift it forward to UTC */
+ /* Represented time is behind UTC, shift it forward to UTC */
*secs += t_diff;
else if (datestr[15] == '+')
- /* Represented time is ahead of UTC, shift it backward to UTC */
+ /* Represented time is ahead of UTC, shift it backward to UTC */
*secs -= t_diff;
} else {
*secs = r_time.tm_sec + 60 *
@@ -1309,9 +1308,9 @@ static void
smpp_handle_time(proto_tree *tree, tvbuff_t *tvb,
int field, int field_R, int *offset)
{
- char *strval;
- gint len;
- nstime_t tmptime;
+ char *strval;
+ gint len;
+ nstime_t tmptime;
strval = (char *) tvb_get_ephemeral_stringz(tvb, *offset, &len);
if (*strval)
@@ -1794,8 +1793,8 @@ smpp_handle_tlv(proto_tree *tree, tvbuff_t *tvb, int *offset)
void
smpp_handle_dcs(proto_tree *tree, tvbuff_t *tvb, int *offset)
{
- guint8 val;
- int off = *offset;
+ guint8 val;
+ int off = *offset;
proto_tree *subtree = NULL;
proto_item *pi;
@@ -1881,7 +1880,7 @@ bind_receiver(proto_tree *tree, tvbuff_t *tvb)
int offset = 0;
guint8 field;
guint8 major, minor;
- char *strval;
+ char *strval;
smpp_handle_string(tree, tvb, hf_smpp_system_id, &offset);
smpp_handle_string(tree, tvb, hf_smpp_password, &offset);
@@ -1925,13 +1924,13 @@ static void
submit_sm(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo,
proto_tree *top_tree)
{
- tvbuff_t *tvb_msg;
- int offset = 0;
- guint8 flag, udhi;
- guint8 length;
- char *src_str = NULL;
- char *dst_str = NULL;
- address save_src, save_dst;
+ tvbuff_t *tvb_msg;
+ int offset = 0;
+ guint8 flag, udhi;
+ guint8 length;
+ char *src_str = NULL;
+ char *dst_str = NULL;
+ address save_src, save_dst;
smpp_handle_string_z(tree, tvb, hf_smpp_service_type, &offset, "(Default)");
smpp_handle_int1(tree, tvb, hf_smpp_source_addr_ton, &offset);
@@ -2289,7 +2288,7 @@ query_broadcast_sm_resp(proto_tree *tree, tvbuff_t *tvb)
static void
huawei_auth_acc(proto_tree *tree, tvbuff_t *tvb)
{
- int offset = 0;
+ int offset = 0;
guint8 version = 0;
smpp_handle_int1(tree, tvb, hf_huawei_smpp_version, &offset);
@@ -2320,7 +2319,7 @@ huawei_auth_acc_resp(proto_tree *tree, tvbuff_t *tvb)
static void
huawei_sm_result_notify(proto_tree *tree, tvbuff_t *tvb)
{
- int offset = 0;
+ int offset = 0;
guint8 version = 0;
smpp_handle_int1(tree, tvb, hf_huawei_smpp_version, &offset);
@@ -2377,7 +2376,7 @@ dissect_smpp_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
return FALSE;
command_status = tvb_get_ntohl(tvb, 8); /* ..with known status */
if (match_strval(command_status, vals_command_status) == NULL &&
- match_strrval(command_status, reserved_command_status) == NULL)
+ match_strrval(command_status, reserved_command_status) == NULL)
return FALSE;
dissect_smpp(tvb, pinfo, tree);
return TRUE;
@@ -2436,17 +2435,17 @@ dissect_smpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
dissect_smpp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- int offset = 0; /* Offset within tvbuff */
- guint command_length; /* length of PDU */
- guint command_id; /* SMPP command */
- guint command_status; /* Status code */
- guint sequence_number; /* ...of command */
- smpp_tap_rec_t* tap_rec; /* Tap record */
- const gchar *command_str;
- const gchar *command_status_str = NULL;
+ int offset = 0; /* Offset within tvbuff */
+ guint command_length; /* length of PDU */
+ guint command_id; /* SMPP command */
+ guint command_status; /* Status code */
+ guint sequence_number; /* ...of command */
+ smpp_tap_rec_t *tap_rec; /* Tap record */
+ const gchar *command_str;
+ const gchar *command_status_str = NULL;
/* Set up structures needed to add the protocol subtree and manage it */
- proto_item *ti = NULL;
- proto_tree *smpp_tree = NULL;
+ proto_item *ti = NULL;
+ proto_tree *smpp_tree = NULL;
/*
* Safety: don't even try to dissect the PDU
@@ -2463,13 +2462,13 @@ dissect_smpp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
command_status = tvb_get_ntohl(tvb, offset);
if (command_id & 0x80000000) {
/* PDU is a response. */
- command_status_str = match_strval(command_status, vals_command_status);
- if (command_status_str == NULL) {
- /* Check if the reserved value is in the vendor-specific range. */
- command_status_str = (command_status >= 0x400 && command_status <= 0x4FF ?
- ep_strdup_printf("Vendor-specific Error (0x%08X)", command_status) :
- ep_strdup_printf("(Reserved Error 0x%08X)", command_status));
- }
+ command_status_str = match_strval(command_status, vals_command_status);
+ if (command_status_str == NULL) {
+ /* Check if the reserved value is in the vendor-specific range. */
+ command_status_str = (command_status >= 0x400 && command_status <= 0x4FF ?
+ ep_strdup_printf("Vendor-specific Error (0x%08X)", command_status) :
+ ep_strdup_printf("(Reserved Error 0x%08X)", command_status));
+ }
}
offset += 4;
sequence_number = tvb_get_ntohl(tvb, offset);
@@ -3788,11 +3787,6 @@ proto_register_smpp(void)
&reassemble_over_tcp);
}
-/*
- * If dissector uses sub-dissector registration add a registration routine.
- * This format is required because a script is used to find these routines and
- * create the code that calls these routines.
- */
void
proto_reg_handoff_smpp(void)
{
diff --git a/epan/dissectors/packet-smtp.c b/epan/dissectors/packet-smtp.c
index e613322420..70b79ed312 100644
--- a/epan/dissectors/packet-smtp.c
+++ b/epan/dissectors/packet-smtp.c
@@ -5,6 +5,9 @@
*
* Copyright (c) 2000 by Richard Sharpe <rsharpe@ns.aus.com>
*
+ * Added RFC 4954 SMTP Authentication
+ * Michael Mann * Copyright 2012
+ *
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1999 Gerald Combs
@@ -39,6 +42,7 @@
#include <epan/strutil.h>
#include <epan/emem.h>
#include <epan/reassemble.h>
+#include <epan/base64.h>
#include <epan/dissectors/packet-ssl.h>
/* RFC 2821 */
@@ -59,6 +63,8 @@ static int hf_smtp_req_parameter = -1;
static int hf_smtp_response = -1;
static int hf_smtp_rsp_code = -1;
static int hf_smtp_rsp_parameter = -1;
+static int hf_smtp_username = -1;
+static int hf_smtp_password = -1;
static int hf_smtp_data_fragments = -1;
static int hf_smtp_data_fragment = -1;
@@ -77,6 +83,7 @@ static int ett_smtp_cmdresp = -1;
static gint ett_smtp_data_fragment = -1;
static gint ett_smtp_data_fragments = -1;
+static gboolean stmp_decryption_enabled = FALSE;
/* desegmentation of SMTP command and response lines */
static gboolean smtp_desegment = TRUE;
static gboolean smtp_data_desegment = TRUE;
@@ -131,8 +138,25 @@ typedef enum {
SMTP_STATE_AWAITING_STARTTLS_RESPONSE /* sent STARTTLS, awaiting response */
} smtp_state_t;
+typedef enum {
+ SMTP_AUTH_STATE_NONE, /* No authentication seen or used */
+ SMTP_AUTH_STATE_START, /* Authentication started, waiting for username */
+ SMTP_AUTH_STATE_USERNAME_REQ, /* Received username request from server */
+ SMTP_AUTH_STATE_USERNAME_RSP, /* Received username response from client */
+ SMTP_AUTH_STATE_PASSWORD_REQ, /* Received password request from server */
+ SMTP_AUTH_STATE_PASSWORD_RSP, /* Received password request from server */
+ SMTP_AUTH_STATE_SUCCESS, /* Password received, authentication successful, start decoding */
+ SMTP_AUTH_STATE_FAILED, /* authentication failed, no decoding */
+} smtp_auth_state_t;
+
struct smtp_session_state {
smtp_state_t smtp_state; /* Current state */
+ smtp_auth_state_t auth_state; /* Current authentication state */
+ /* Values that need to be saved because state machine can't be used during tree dissection */
+ guint32 first_auth_frame; /* First frame involving authentication. */
+ guint32 username_frame; /* Frame containing client username */
+ guint32 password_frame; /* Frame containing client password */
+ guint32 last_auth_frame; /* Last frame involving authentication. */
gboolean crlf_seen; /* Have we seen a CRLF on the end of a packet */
gboolean data_seen; /* Have we seen a DATA command yet */
guint32 msg_read_len; /* Length of BDAT message read so far */
@@ -166,19 +190,27 @@ static const value_string response_codes_vs[] = {
{ 214, "Help message" },
{ 220, "<domain> Service ready" },
{ 221, "<domain> Service closing transmission channel" },
+ { 235, "Authentication successful" },
{ 250, "Requested mail action okay, completed" },
{ 251, "User not local; will forward to <forward-path>" },
{ 252, "Cannot VRFY user, but will accept message and attempt delivery" },
+ { 334, "AUTH input" },
{ 354, "Start mail input; end with <CRLF>.<CRLF>" },
{ 421, "<domain> Service not available, closing transmission channel" },
+ { 432, "A password transition is needed" },
{ 450, "Requested mail action not taken: mailbox unavailable" },
{ 451, "Requested action aborted: local error in processing" },
{ 452, "Requested action not taken: insufficient system storage" },
+ { 454, "Temporary authenticaion failed" },
{ 500, "Syntax error, command unrecognized" },
{ 501, "Syntax error in parameters or arguments" },
{ 502, "Command not implemented" },
{ 503, "Bad sequence of commands" },
{ 504, "Command parameter not implemented" },
+ { 530, "Authentication required" },
+ { 534, "Authentication mechanism is too weak" },
+ { 535, "Authentication credentials invalid" },
+ { 538, "Encryption required for requested authentication mechanism" },
{ 550, "Requested action not taken: mailbox unavailable" },
{ 551, "User not local; please try <forward-path>" },
{ 552, "Requested mail action aborted: exceeded storage allocation" },
@@ -269,6 +301,8 @@ dissect_smtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
int cmdlen;
fragment_data *frag_msg = NULL;
tvbuff_t *next_tvb;
+ guint8 *decrypt = NULL;
+ guint8 line_code[3];
/* As there is no guarantee that we will only see frames in the
* the SMTP conversation once, and that we will see them in
@@ -304,6 +338,9 @@ dissect_smtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
*/
session_state = se_alloc(sizeof(struct smtp_session_state));
session_state->smtp_state = SMTP_STATE_READING_CMDS;
+ session_state->auth_state = SMTP_AUTH_STATE_NONE;
+ session_state->first_auth_frame = 0;
+ session_state->last_auth_frame = 0;
session_state->crlf_seen = FALSE;
session_state->data_seen = FALSE;
session_state->msg_read_len = 0;
@@ -392,7 +429,6 @@ dissect_smtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
next_offset = loffset + linelen;
}
}
- line = tvb_get_ptr(tvb, loffset, linelen);
/*
* Check whether or not this packet is an end of message packet
@@ -476,6 +512,19 @@ dissect_smtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
* for a space or the end of the line to see where
* the putative command ends.
*/
+ if ((session_state->auth_state != SMTP_AUTH_STATE_NONE) &&
+ (pinfo->fd->num >= session_state->first_auth_frame) &&
+ ((session_state->last_auth_frame == 0) || (pinfo->fd->num <= session_state->last_auth_frame))) {
+ decrypt = tvb_get_ephemeral_string(tvb, loffset, linelen);
+ if ((stmp_decryption_enabled) && (epan_base64_decode(decrypt) > 0)) {
+ line = decrypt;
+ } else {
+ line = tvb_get_ptr(tvb, loffset, linelen);
+ }
+ } else {
+ line = tvb_get_ptr(tvb, loffset, linelen);
+ }
+
linep = line;
lineend = line + linelen;
while (linep < lineend && *linep != ' ')
@@ -528,6 +577,16 @@ dissect_smtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
} else {
session_state->msg_last = FALSE;
}
+ } else if (g_ascii_strncasecmp(line, "AUTH", 4) == 0) {
+ /*
+ * DATA command.
+ * This is a command, but everything that comes after it,
+ * until an EOM, is data.
+ */
+ spd_frame_data->pdu_type = SMTP_PDU_CMD;
+ session_state->smtp_state = SMTP_STATE_READING_CMDS;
+ session_state->auth_state = SMTP_AUTH_STATE_START;
+ session_state->first_auth_frame = pinfo->fd->num;
} else if (g_ascii_strncasecmp(line, "STARTTLS", 8) == 0) {
/*
* STARTTLS command.
@@ -542,7 +601,15 @@ dissect_smtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
*/
spd_frame_data->pdu_type = SMTP_PDU_CMD;
}
- } else {
+ } else if (session_state->auth_state == SMTP_AUTH_STATE_USERNAME_REQ) {
+ session_state->auth_state = SMTP_AUTH_STATE_USERNAME_RSP;
+ session_state->username_frame = pinfo->fd->num;
+ } else if (session_state->auth_state == SMTP_AUTH_STATE_PASSWORD_REQ) {
+ session_state->auth_state = SMTP_AUTH_STATE_PASSWORD_RSP;
+ session_state->password_frame = pinfo->fd->num;
+ }
+ else {
+
/*
* Assume it's message data.
*/
@@ -565,72 +632,7 @@ dissect_smtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
*/
col_set_str(pinfo->cinfo, COL_PROTOCOL, "SMTP");
-
- if (check_col(pinfo->cinfo, COL_INFO)) { /* Add the appropriate type here */
- col_clear(pinfo->cinfo, COL_INFO);
-
- /*
- * If it is a request, we have to look things up, otherwise, just
- * display the right things
- */
-
- if (request) {
- /* We must have frame_data here ... */
- switch (spd_frame_data->pdu_type) {
- case SMTP_PDU_MESSAGE:
-
- length_remaining = tvb_length_remaining(tvb, offset);
- col_set_str(pinfo->cinfo, COL_INFO, smtp_data_desegment ? "C: DATA fragment" : "C: Message Body");
- col_append_fstr(pinfo->cinfo, COL_INFO, ", %d byte%s", length_remaining,
- plurality (length_remaining, "", "s"));
- break;
-
- case SMTP_PDU_EOM:
- col_set_str(pinfo->cinfo, COL_INFO, "C: .");
- break;
-
- case SMTP_PDU_CMD:
- loffset = offset;
- while (tvb_offset_exists(tvb, loffset)) {
- /*
- * Find the end of the line.
- */
- linelen = tvb_find_line_end(tvb, loffset, -1, &next_offset, FALSE);
- line = tvb_get_ptr(tvb, loffset, linelen);
-
- if(loffset == offset)
- col_append_fstr(pinfo->cinfo, COL_INFO, "C: %s",
- format_text(line, linelen));
- else {
- col_append_fstr(pinfo->cinfo, COL_INFO, " | %s",
- format_text(line, linelen));
- }
-
- loffset = next_offset;
- }
- break;
- }
- } else {
- loffset = offset;
- while (tvb_offset_exists(tvb, loffset)) {
- /*
- * Find the end of the line.
- */
- linelen = tvb_find_line_end(tvb, loffset, -1, &next_offset, FALSE);
- line = tvb_get_ptr(tvb, loffset, linelen);
-
- if (loffset == offset)
- col_append_fstr(pinfo->cinfo, COL_INFO, "S: %s",
- format_text(line, linelen));
- else {
- col_append_fstr(pinfo->cinfo, COL_INFO, " | %s",
- format_text(line, linelen));
- }
-
- loffset = next_offset;
- }
- }
- }
+ col_clear(pinfo->cinfo, COL_INFO);
if (tree) { /* Build the tree info ... */
ti = proto_tree_add_item(tree, proto_smtp, tvb, offset, -1, ENC_NA);
@@ -653,6 +655,12 @@ dissect_smtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
switch (spd_frame_data->pdu_type) {
case SMTP_PDU_MESSAGE:
+ /* Column Info */
+ length_remaining = tvb_length_remaining(tvb, offset);
+ col_set_str(pinfo->cinfo, COL_INFO, smtp_data_desegment ? "C: DATA fragment" : "C: Message Body");
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", %d byte%s", length_remaining,
+ plurality (length_remaining, "", "s"));
+
if (smtp_data_desegment) {
frag_msg = fragment_add_seq_next(tvb, 0, pinfo, spd_frame_data->conversation_id,
smtp_data_segment_table, smtp_data_reassembled_table,
@@ -675,6 +683,8 @@ dissect_smtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
* DATA command this terminates before sending another
* request, but we should probably handle it.
*/
+ col_set_str(pinfo->cinfo, COL_INFO, "C: .");
+
proto_tree_add_text(smtp_tree, tvb, offset, linelen, "C: .");
if (smtp_data_desegment) {
@@ -707,34 +717,72 @@ dissect_smtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
*/
linelen = tvb_find_line_end(tvb, loffset, -1, &next_offset, FALSE);
- if (linelen >= 4)
- cmdlen = 4;
+ /* Column Info */
+ if(loffset == offset)
+ col_append_str(pinfo->cinfo, COL_INFO, "C: ");
else
- cmdlen = linelen;
+ col_append_str(pinfo->cinfo, COL_INFO, " | ");
+
hidden_item = proto_tree_add_boolean(smtp_tree, hf_smtp_req, tvb,
0, 0, TRUE);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- /*
- * Put the command line into the protocol tree.
- */
- ti = proto_tree_add_item(smtp_tree, hf_smtp_command_line, tvb,
+ if (session_state->username_frame == pinfo->fd->num) {
+ if (decrypt == NULL) {
+ /* This line wasn't already decrypted through the state machine */
+ decrypt = tvb_get_ephemeral_string(tvb, loffset, linelen);
+ if (stmp_decryption_enabled) {
+ if (epan_base64_decode(decrypt) == 0) {
+ /* Go back to the original string */
+ decrypt = tvb_get_ephemeral_string(tvb, loffset, linelen);
+ }
+ }
+ }
+ proto_tree_add_string(smtp_tree, hf_smtp_username, tvb,
+ loffset, linelen, decrypt);
+ col_append_str(pinfo->cinfo, COL_INFO, decrypt);
+ } else if (session_state->password_frame == pinfo->fd->num) {
+ if (decrypt == NULL) {
+ /* This line wasn't already decrypted through the state machine */
+ decrypt = tvb_get_ephemeral_string(tvb, loffset, linelen);
+ if (stmp_decryption_enabled) {
+ if (epan_base64_decode(decrypt) == 0) {
+ /* Go back to the original string */
+ decrypt = tvb_get_ephemeral_string(tvb, loffset, linelen);
+ }
+ }
+ }
+ proto_tree_add_string(smtp_tree, hf_smtp_password, tvb,
+ loffset, linelen, decrypt);
+ col_append_str(pinfo->cinfo, COL_INFO, decrypt);
+ } else {
+ col_append_str(pinfo->cinfo, COL_INFO, tvb_get_ephemeral_string(tvb, loffset, linelen));
+
+ if (linelen >= 4)
+ cmdlen = 4;
+ else
+ cmdlen = linelen;
+
+ /*
+ * Put the command line into the protocol tree.
+ */
+ ti = proto_tree_add_item(smtp_tree, hf_smtp_command_line, tvb,
loffset, next_offset - loffset, ENC_ASCII|ENC_NA);
- cmdresp_tree = proto_item_add_subtree(ti, ett_smtp_cmdresp);
+ cmdresp_tree = proto_item_add_subtree(ti, ett_smtp_cmdresp);
- proto_tree_add_item(cmdresp_tree, hf_smtp_req_command, tvb,
+ proto_tree_add_item(cmdresp_tree, hf_smtp_req_command, tvb,
loffset, cmdlen, ENC_ASCII|ENC_NA);
- if (linelen > 5) {
- proto_tree_add_item(cmdresp_tree, hf_smtp_req_parameter, tvb,
+ if (linelen > 5) {
+ proto_tree_add_item(cmdresp_tree, hf_smtp_req_parameter, tvb,
loffset + 5, linelen - 5, ENC_ASCII|ENC_NA);
- }
+ }
- if (smtp_data_desegment && !spd_frame_data->more_frags) {
- /* terminate the desegmentation */
- frag_msg = fragment_end_seq_next (pinfo, spd_frame_data->conversation_id, smtp_data_segment_table,
- smtp_data_reassembled_table);
+ if (smtp_data_desegment && !spd_frame_data->more_frags) {
+ /* terminate the desegmentation */
+ frag_msg = fragment_end_seq_next (pinfo, spd_frame_data->conversation_id, smtp_data_segment_table,
+ smtp_data_reassembled_table);
+ }
}
-
/*
* Step past this line.
*/
@@ -773,12 +821,18 @@ dissect_smtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
PROTO_ITEM_SET_HIDDEN(hidden_item);
}
+ loffset = offset;
while (tvb_offset_exists(tvb, offset)) {
/*
* Find the end of the line.
*/
linelen = tvb_find_line_end(tvb, offset, -1, &next_offset, FALSE);
+ if (loffset == offset)
+ col_append_str(pinfo->cinfo, COL_INFO, "S: ");
+ else
+ col_append_str(pinfo->cinfo, COL_INFO, " | ");
+
if (tree) {
/*
* Put it into the protocol tree.
@@ -789,41 +843,88 @@ dissect_smtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
} else
cmdresp_tree = NULL;
- line = tvb_get_ptr(tvb, offset, linelen);
- if (linelen >= 3 && isdigit(line[0]) && isdigit(line[1])
- && isdigit(line[2])) {
- /*
- * We have a 3-digit response code.
- */
- code = (line[0] - '0')*100 + (line[1] - '0')*10 + (line[2] - '0');
+ if (linelen >= 3) {
+ line_code[0] = tvb_get_guint8(tvb, offset);
+ line_code[1] = tvb_get_guint8(tvb, offset+1);
+ line_code[2] = tvb_get_guint8(tvb, offset+2);
+ if (isdigit(line_code[0]) && isdigit(line_code[1])
+ && isdigit(line_code[2])) {
+ /*
+ * We have a 3-digit response code.
+ */
+ code = (line_code[0] - '0')*100 + (line_code[1] - '0')*10 + (line_code[2] - '0');
- /*
- * If we're awaiting the response to a STARTTLS code, this
- * is it - if it's 220, all subsequent traffic will
- * be TLS, otherwise we're back to boring old SMTP.
- */
- if (session_state->smtp_state == SMTP_STATE_AWAITING_STARTTLS_RESPONSE) {
- if (code == 220) {
- /* This is the last non-TLS frame. */
- session_state->last_nontls_frame = pinfo->fd->num;
- }
- session_state->smtp_state = SMTP_STATE_READING_CMDS;
- }
+ /*
+ * If we're awaiting the response to a STARTTLS code, this
+ * is it - if it's 220, all subsequent traffic will
+ * be TLS, otherwise we're back to boring old SMTP.
+ */
+ if (session_state->smtp_state == SMTP_STATE_AWAITING_STARTTLS_RESPONSE) {
+ if (code == 220) {
+ /* This is the last non-TLS frame. */
+ session_state->last_nontls_frame = pinfo->fd->num;
+ }
+ session_state->smtp_state = SMTP_STATE_READING_CMDS;
+ }
- if (tree) {
- /*
- * Put the response code and parameters into the protocol tree.
- */
- proto_tree_add_uint(cmdresp_tree, hf_smtp_rsp_code, tvb, offset, 3,
- code);
+ if (code == 334) {
+ switch(session_state->auth_state)
+ {
+ case SMTP_AUTH_STATE_START:
+ session_state->auth_state = SMTP_AUTH_STATE_USERNAME_REQ;
+ break;
+ case SMTP_AUTH_STATE_USERNAME_RSP:
+ session_state->auth_state = SMTP_AUTH_STATE_PASSWORD_REQ;
+ break;
+ case SMTP_AUTH_STATE_NONE:
+ case SMTP_AUTH_STATE_USERNAME_REQ:
+ case SMTP_AUTH_STATE_PASSWORD_REQ:
+ case SMTP_AUTH_STATE_PASSWORD_RSP:
+ case SMTP_AUTH_STATE_SUCCESS:
+ case SMTP_AUTH_STATE_FAILED:
+ /* ignore */
+ break;
+ }
+ } else if (session_state->auth_state == SMTP_AUTH_STATE_PASSWORD_RSP) {
+ if (code == 235) {
+ session_state->auth_state = SMTP_AUTH_STATE_SUCCESS;
+ } else {
+ session_state->auth_state = SMTP_AUTH_STATE_FAILED;
+ }
+ session_state->last_auth_frame = pinfo->fd->num;
+ }
- if (linelen >= 4) {
- proto_tree_add_item(cmdresp_tree, hf_smtp_rsp_parameter, tvb,
- offset + 4, linelen - 4, ENC_ASCII|ENC_NA);
+ /*
+ * Put the response code and parameters into the protocol tree.
+ */
+ proto_tree_add_uint(cmdresp_tree, hf_smtp_rsp_code, tvb, offset, 3,
+ code);
+
+ decrypt = NULL;
+ if (linelen >= 4) {
+ if ((stmp_decryption_enabled) && (code == 334)) {
+ decrypt = tvb_get_ephemeral_string(tvb, offset + 4, linelen - 4);
+ if (epan_base64_decode(decrypt) > 0) {
+ proto_tree_add_string(cmdresp_tree, hf_smtp_rsp_parameter, tvb,
+ offset + 4, linelen - 4, (const char*)decrypt);
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, "%d %s", code, decrypt);
+ } else {
+ decrypt = NULL;
+ }
+ }
+
+ if (decrypt == NULL) {
+ proto_tree_add_item(cmdresp_tree, hf_smtp_rsp_parameter, tvb,
+ offset + 4, linelen - 4, ENC_ASCII|ENC_NA);
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, "%d %s", code, tvb_get_ephemeral_string(tvb, offset + 4, linelen - 4));
+ }
+ } else {
+ col_append_str(pinfo->cinfo, COL_INFO, tvb_get_ephemeral_string(tvb, offset, linelen));
+ }
}
- }
}
-
/*
* Step past this line.
*/
@@ -882,6 +983,14 @@ proto_register_smtp(void)
{ "Response parameter", "smtp.rsp.parameter",
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_smtp_username,
+ { "Username", "smtp.auth.username",
+ FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+
+ { &hf_smtp_password,
+ { "Password", "smtp.auth.password",
+ FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+
/* Fragment entries */
{ &hf_smtp_data_fragments,
{ "DATA fragments", "smtp.data.fragments",
@@ -959,6 +1068,10 @@ proto_register_smtp(void)
"\"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
&smtp_data_desegment);
+ prefs_register_bool_preference(smtp_module, "decryption",
+ "Decrypt AUTH parameters",
+ "Whether the SMTP dissector should cecrypt AUTH parameters",
+ &stmp_decryption_enabled);
}
/* The registration hand-off routine */
diff --git a/epan/dissectors/packet-sndcp-xid.c b/epan/dissectors/packet-sndcp-xid.c
index 2f1f37c1b8..2c69147793 100644
--- a/epan/dissectors/packet-sndcp-xid.c
+++ b/epan/dissectors/packet-sndcp-xid.c
@@ -28,8 +28,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-snmp.c b/epan/dissectors/packet-snmp.c
index ebd268561a..aec59fa00f 100644
--- a/epan/dissectors/packet-snmp.c
+++ b/epan/dissectors/packet-snmp.c
@@ -573,7 +573,7 @@ dissect_snmp_VarBind(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset,
pt_name = proto_item_add_subtree(pi_name,ett_name);
/* fetch ObjectName and its relative oid_info */
- oid_bytes = ep_tvb_memdup(tvb, name_offset, name_len);
+ oid_bytes = (guint8*)ep_tvb_memdup(tvb, name_offset, name_len);
oid_info = oid_get_from_encoded(oid_bytes, name_len, &subids, &oid_matched, &oid_left);
add_oid_debug_subtree(oid_info,pt_name);
@@ -773,7 +773,7 @@ show_oid_index:
goto indexing_done;
}
- buf = ep_alloc(buf_len+1);
+ buf = (guint8*)ep_alloc(buf_len+1);
for (i = 0; i < buf_len; i++)
buf[i] = (guint8)suboid[i];
buf[i] = '\0';
@@ -861,8 +861,9 @@ indexing_done:
unsigned int_val_offset = value_offset;
unsigned i;
- max_len = 5; min_len = 1;
- if (value_len > (guint)max_len && value_len < (guint)min_len) {
+ max_len = 4; min_len = 1;
+ if (value_len > (guint)max_len || value_len < (guint)min_len) {
+ hfid = hf_snmp_integer32_value;
format_error = BER_WRONG_LENGTH;
break;
}
@@ -1020,16 +1021,16 @@ set_label:
switch (format_error) {
case BER_WRONG_LENGTH: {
- proto_tree* pt = proto_item_add_subtree(pi_value,ett_decoding_error);
- proto_item* pi = proto_tree_add_text(pt,tvb,0,0,"Wrong value length: %u expecting: %u <= len <= %u",
+ proto_tree* p_tree = proto_item_add_subtree(pi_value,ett_decoding_error);
+ proto_item* pi = proto_tree_add_text(p_tree,tvb,0,0,"Wrong value length: %u expecting: %u <= len <= %u",
value_len, min_len, max_len == -1 ? 0xFFFFFF : max_len);
pt = proto_item_add_subtree(pi,ett_decoding_error);
expert_add_info_format(actx->pinfo, pi, PI_MALFORMED, PI_WARN, "Wrong length for SNMP VarBind/value");
return dissect_unknown_ber(actx->pinfo, tvb, value_start, pt);
}
case BER_WRONG_TAG: {
- proto_tree* pt = proto_item_add_subtree(pi_value,ett_decoding_error);
- proto_item* pi = proto_tree_add_text(pt,tvb,0,0,"Wrong class/tag for Value expected: %d,%d got: %d,%d",
+ proto_tree* p_tree = proto_item_add_subtree(pi_value,ett_decoding_error);
+ proto_item* pi = proto_tree_add_text(p_tree,tvb,0,0,"Wrong class/tag for Value expected: %d,%d got: %d,%d",
oid_info->value_type->ber_class, oid_info->value_type->ber_tag,
ber_class, tag);
pt = proto_item_add_subtree(pi,ett_decoding_error);
@@ -1184,8 +1185,9 @@ dissect_snmp_engineid(proto_tree *tree, tvbuff_t *tvb, int offset, int len)
offset+=8;
len_remain=0;
}
+ break;
}
- break;
+ /* fall through */
case SNMP_ENGINEID_FORMAT_OCTETS:
default:
/* max. 27 bytes, administratively assigned or unknown format */
@@ -1209,7 +1211,7 @@ dissect_snmp_engineid(proto_tree *tree, tvbuff_t *tvb, int offset, int len)
static void set_ue_keys(snmp_ue_assoc_t* n ) {
guint key_size = n->user.authModel->key_size;
- n->user.authKey.data = se_alloc(key_size);
+ n->user.authKey.data = (guint8 *)se_alloc(key_size);
n->user.authKey.len = key_size;
n->user.authModel->pass2key(n->user.authPassword.data,
n->user.authPassword.len,
@@ -1217,7 +1219,7 @@ static void set_ue_keys(snmp_ue_assoc_t* n ) {
n->engine.len,
n->user.authKey.data);
- n->user.privKey.data = se_alloc(key_size);
+ n->user.privKey.data = (guint8 *)se_alloc(key_size);
n->user.privKey.len = key_size;
n->user.authModel->pass2key(n->user.privPassword.data,
n->user.privPassword.len,
@@ -1229,25 +1231,25 @@ static void set_ue_keys(snmp_ue_assoc_t* n ) {
static snmp_ue_assoc_t*
ue_se_dup(snmp_ue_assoc_t* o)
{
- snmp_ue_assoc_t* d = se_memdup(o,sizeof(snmp_ue_assoc_t));
+ snmp_ue_assoc_t* d = (snmp_ue_assoc_t*)se_memdup(o,sizeof(snmp_ue_assoc_t));
d->user.authModel = o->user.authModel;
d->user.privProtocol = o->user.privProtocol;
- d->user.userName.data = se_memdup(o->user.userName.data,o->user.userName.len);
+ d->user.userName.data = (guint8 *)se_memdup(o->user.userName.data,o->user.userName.len);
d->user.userName.len = o->user.userName.len;
- d->user.authPassword.data = o->user.authPassword.data ? se_memdup(o->user.authPassword.data,o->user.authPassword.len) : NULL;
+ d->user.authPassword.data = o->user.authPassword.data ? (guint8 *)se_memdup(o->user.authPassword.data,o->user.authPassword.len) : NULL;
d->user.authPassword.len = o->user.authPassword.len;
- d->user.privPassword.data = o->user.privPassword.data ? se_memdup(o->user.privPassword.data,o->user.privPassword.len) : NULL;
+ d->user.privPassword.data = o->user.privPassword.data ? (guint8 *)se_memdup(o->user.privPassword.data,o->user.privPassword.len) : NULL;
d->user.privPassword.len = o->user.privPassword.len;
d->engine.len = o->engine.len;
if (d->engine.len) {
- d->engine.data = se_memdup(o->engine.data,o->engine.len);
+ d->engine.data = (guint8 *)se_memdup(o->engine.data,o->engine.len);
set_ue_keys(d);
}
@@ -1285,9 +1287,9 @@ renew_ue_cache(void)
static snmp_ue_assoc_t*
localize_ue( snmp_ue_assoc_t* o, const guint8* engine, guint engine_len )
{
- snmp_ue_assoc_t* n = se_memdup(o,sizeof(snmp_ue_assoc_t));
+ snmp_ue_assoc_t* n = (snmp_ue_assoc_t*)se_memdup(o,sizeof(snmp_ue_assoc_t));
- n->engine.data = se_memdup(engine,engine_len);
+ n->engine.data = (guint8*)se_memdup(engine,engine_len);
n->engine.len = engine_len;
set_ue_keys(n);
@@ -1319,9 +1321,9 @@ get_user_assoc(tvbuff_t* engine_tvb, tvbuff_t* user_tvb)
if (! ( user_tvb && engine_tvb ) ) return NULL;
given_username_len = tvb_ensure_length_remaining(user_tvb,0);
- given_username = ep_tvb_memdup(user_tvb,0,-1);
+ given_username = (guint8*)ep_tvb_memdup(user_tvb,0,-1);
given_engine_len = tvb_ensure_length_remaining(engine_tvb,0);
- given_engine = ep_tvb_memdup(engine_tvb,0,-1);
+ given_engine = (guint8*)ep_tvb_memdup(engine_tvb,0,-1);
for (a = localized_ues; a; a = a->next) {
if ( localized_match(a, given_username, given_username_len, given_engine, given_engine_len) ) {
@@ -1376,10 +1378,14 @@ snmp_usm_auth_md5(snmp_usm_params_t* p, guint8** calc_auth_p, guint* calc_auth_l
}
msg_len = tvb_length_remaining(p->msg_tvb,0);
- msg = ep_tvb_memdup(p->msg_tvb,0,msg_len);
+ if (msg_len <= 0) {
+ *error = "Not enough data remaining";
+ return FALSE;
+ }
+ msg = (guint8*)ep_tvb_memdup(p->msg_tvb,0,msg_len);
- auth = ep_tvb_memdup(p->auth_tvb,0,auth_len);
+ auth = (guint8*)ep_tvb_memdup(p->auth_tvb,0,auth_len);
start = p->auth_offset - p->start_offset;
end = start + auth_len;
@@ -1389,7 +1395,7 @@ snmp_usm_auth_md5(snmp_usm_params_t* p, guint8** calc_auth_p, guint* calc_auth_l
msg[i] = '\0';
}
- calc_auth = ep_alloc(16);
+ calc_auth = (guint8*)ep_alloc(16);
md5_hmac(msg, msg_len, key, key_len, calc_auth);
@@ -1437,9 +1443,13 @@ snmp_usm_auth_sha1(snmp_usm_params_t* p _U_, guint8** calc_auth_p, guint* calc_a
}
msg_len = tvb_length_remaining(p->msg_tvb,0);
- msg = ep_tvb_memdup(p->msg_tvb,0,msg_len);
+ if (msg_len <= 0) {
+ *error = "Not enough data remaining";
+ return FALSE;
+ }
+ msg = (guint8*)ep_tvb_memdup(p->msg_tvb,0,msg_len);
- auth = ep_tvb_memdup(p->auth_tvb,0,auth_len);
+ auth = (guint8*)ep_tvb_memdup(p->auth_tvb,0,auth_len);
start = p->auth_offset - p->start_offset;
end = start + auth_len;
@@ -1449,7 +1459,7 @@ snmp_usm_auth_sha1(snmp_usm_params_t* p _U_, guint8** calc_auth_p, guint* calc_a
msg[i] = '\0';
}
- calc_auth = ep_alloc(20);
+ calc_auth = (guint8*)ep_alloc(20);
sha1_hmac(key, key_len, msg, msg_len, calc_auth);
@@ -1485,7 +1495,7 @@ snmp_usm_priv_des(snmp_usm_params_t* p _U_, tvbuff_t* encryptedData _U_, gchar c
return NULL;
}
- salt = ep_tvb_memdup(p->priv_tvb,0,salt_len);
+ salt = (guint8*)ep_tvb_memdup(p->priv_tvb,0,salt_len);
/*
The resulting "salt" is XOR-ed with the pre-IV to obtain the IV.
@@ -1496,14 +1506,14 @@ snmp_usm_priv_des(snmp_usm_params_t* p _U_, tvbuff_t* encryptedData _U_, gchar c
cryptgrm_len = tvb_length_remaining(encryptedData,0);
- if (cryptgrm_len % 8) {
+ if ((cryptgrm_len <= 0) || (cryptgrm_len % 8)) {
*error = "decryptionError: the length of the encrypted data is not a mutiple of 8 octets";
return NULL;
}
- cryptgrm = ep_tvb_memdup(encryptedData,0,-1);
+ cryptgrm = (guint8*)ep_tvb_memdup(encryptedData,0,-1);
- cleartext = ep_alloc(cryptgrm_len);
+ cleartext = (guint8*)ep_alloc(cryptgrm_len);
err = gcry_cipher_open(&hd, GCRY_CIPHER_DES, GCRY_CIPHER_MODE_CBC, 0);
if (err != GPG_ERR_NO_ERROR) goto on_gcry_error;
@@ -1566,9 +1576,13 @@ snmp_usm_priv_aes(snmp_usm_params_t* p _U_, tvbuff_t* encryptedData _U_, gchar c
tvb_memcpy(p->priv_tvb,&(iv[8]),0,8);
cryptgrm_len = tvb_length_remaining(encryptedData,0);
- cryptgrm = ep_tvb_memdup(encryptedData,0,-1);
+ if (cryptgrm_len <= 0) {
+ *error = "Not enough data remaining";
+ return NULL;
+ }
+ cryptgrm = (guint8*)ep_tvb_memdup(encryptedData,0,-1);
- cleartext = ep_alloc(cryptgrm_len);
+ cleartext = (guint8*)ep_alloc(cryptgrm_len);
err = gcry_cipher_open(&hd, GCRY_CIPHER_AES, GCRY_CIPHER_MODE_CFB, 0);
if (err != GPG_ERR_NO_ERROR) goto on_gcry_error;
@@ -2264,9 +2278,9 @@ dissect_snmp_T_msgFlags(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
guint8 v3_flags = tvb_get_guint8(parameter_tvb, 0);
proto_tree* flags_tree = proto_item_add_subtree(actx->created_item,ett_msgFlags);
- proto_tree_add_item(flags_tree, hf_snmp_v3_flags_report, parameter_tvb, 0, 1, FALSE);
- proto_tree_add_item(flags_tree, hf_snmp_v3_flags_crypt, parameter_tvb, 0, 1, FALSE);
- proto_tree_add_item(flags_tree, hf_snmp_v3_flags_auth, parameter_tvb, 0, 1, FALSE);
+ proto_tree_add_item(flags_tree, hf_snmp_v3_flags_report, parameter_tvb, 0, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_snmp_v3_flags_crypt, parameter_tvb, 0, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_snmp_v3_flags_auth, parameter_tvb, 0, 1, ENC_BIG_ENDIAN);
usm_p.encrypted = v3_flags & TH_CRYPT ? TRUE : FALSE;
usm_p.authenticated = v3_flags & TH_AUTH ? TRUE : FALSE;
@@ -2392,7 +2406,7 @@ dissect_snmp_T_encryptedPDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
add_new_data_source(actx->pinfo, cleartext_tvb, "Decrypted ScopedPDU");
- decrypted_item = proto_tree_add_item(encryptedpdu_tree, hf_snmp_decryptedPDU,cleartext_tvb,0,-1,FALSE);
+ decrypted_item = proto_tree_add_item(encryptedpdu_tree, hf_snmp_decryptedPDU,cleartext_tvb,0,-1,ENC_NA);
decrypted_tree = proto_item_add_subtree(decrypted_item,ett_decrypted);
dissect_snmp_ScopedPDU(FALSE, cleartext_tvb, 0, actx, decrypted_tree, -1);
}
@@ -2758,7 +2772,7 @@ static void dissect_SMUX_PDUs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, pro
/*--- End of included file: packet-snmp-fn.c ---*/
-#line 1538 "../../asn1/snmp/packet-snmp-template.c"
+#line 1552 "../../asn1/snmp/packet-snmp-template.c"
guint
@@ -3173,24 +3187,24 @@ snmp_users_copy_cb(void* dest, const void* orig, size_t len _U_)
d->priv_proto = o->priv_proto;
d->user.privProtocol = priv_protos[o->priv_proto];
- d->user.userName.data = g_memdup(o->user.userName.data,o->user.userName.len);
+ d->user.userName.data = (guint8*)g_memdup(o->user.userName.data,o->user.userName.len);
d->user.userName.len = o->user.userName.len;
- d->user.authPassword.data = o->user.authPassword.data ? g_memdup(o->user.authPassword.data,o->user.authPassword.len) : NULL;
+ d->user.authPassword.data = o->user.authPassword.data ? (guint8*)g_memdup(o->user.authPassword.data,o->user.authPassword.len) : NULL;
d->user.authPassword.len = o->user.authPassword.len;
- d->user.privPassword.data = o->user.privPassword.data ? g_memdup(o->user.privPassword.data,o->user.privPassword.len) : NULL;
+ d->user.privPassword.data = o->user.privPassword.data ? (guint8*)g_memdup(o->user.privPassword.data,o->user.privPassword.len) : NULL;
d->user.privPassword.len = o->user.privPassword.len;
d->engine.len = o->engine.len;
if (o->engine.data) {
- d->engine.data = g_memdup(o->engine.data,o->engine.len);
+ d->engine.data = (guint8*)g_memdup(o->engine.data,o->engine.len);
}
- d->user.authKey.data = o->user.authKey.data ? g_memdup(o->user.authKey.data,o->user.authKey.len) : NULL;
+ d->user.authKey.data = o->user.authKey.data ? (guint8*)g_memdup(o->user.authKey.data,o->user.authKey.len) : NULL;
d->user.authKey.len = o->user.authKey.len;
- d->user.privKey.data = o->user.privKey.data ? g_memdup(o->user.privKey.data,o->user.privKey.len) : NULL;
+ d->user.privKey.data = o->user.privKey.data ? (guint8*)g_memdup(o->user.privKey.data,o->user.privKey.len) : NULL;
d->user.privKey.len = o->user.privKey.len;
return d;
@@ -3324,7 +3338,7 @@ void proto_register_snmp(void) {
"Engine ID Data: IPv6 address", "snmp.engineid.ipv6", FT_IPv6, BASE_NONE,
NULL, 0, NULL, HFILL }},
{ &hf_snmp_engineid_cisco_type, {
- "Engine ID Data: Cisco type", "snmp.engineid.cisco.type", FT_UINT8, BASE_NONE,
+ "Engine ID Data: Cisco type", "snmp.engineid.cisco.type", FT_UINT8, BASE_HEX,
VALS(snmp_engineid_cisco_type_vals), 0, NULL, HFILL }},
{ &hf_snmp_engineid_mac, {
"Engine ID Data: MAC address", "snmp.engineid.mac", FT_ETHER, BASE_NONE,
@@ -3675,7 +3689,7 @@ void proto_register_snmp(void) {
NULL, HFILL }},
/*--- End of included file: packet-snmp-hfarr.c ---*/
-#line 2190 "../../asn1/snmp/packet-snmp-template.c"
+#line 2204 "../../asn1/snmp/packet-snmp-template.c"
};
/* List of subtrees */
@@ -3715,7 +3729,7 @@ void proto_register_snmp(void) {
&ett_snmp_RReqPDU_U,
/*--- End of included file: packet-snmp-ettarr.c ---*/
-#line 2206 "../../asn1/snmp/packet-snmp-template.c"
+#line 2220 "../../asn1/snmp/packet-snmp-template.c"
};
module_t *snmp_module;
diff --git a/epan/dissectors/packet-socketcan.c b/epan/dissectors/packet-socketcan.c
index 8c9ee2eaa4..d4ac2da2c1 100644
--- a/epan/dissectors/packet-socketcan.c
+++ b/epan/dissectors/packet-socketcan.c
@@ -28,14 +28,15 @@
#endif
#include <glib.h>
+
#include <epan/packet.h>
#include <prefs.h>
#include "packet-sll.h"
/* controller area network (CAN) kernel definitions
- * This maskare usualy defined within <linux/can.h> but not
- * available on non-Linux platforms - that the reason for the
- * redefinition right here
+ * These masks are usually defined within <linux/can.h> but are not
+ * available on non-Linux platforms; that's the reason for the
+ * redefinitions below
*
* special address description flags for the CAN_ID */
#define CAN_EFF_FLAG 0x80000000U /* EFF/SFF is set in the MSB */
@@ -57,28 +58,26 @@ static int proto_can = -1;
static dissector_handle_t data_handle;
static dissector_handle_t canopen_handle;
-static module_t *can_module;
-
-#define LINUX_CAN_STD 0
-#define LINUX_CAN_EXT 1
-#define LINUX_CAN_RTR 2
-#define LINUX_CAN_ERR 3
+#define LINUX_CAN_STD 0
+#define LINUX_CAN_EXT 1
+#define LINUX_CAN_RTR 2
+#define LINUX_CAN_ERR 3
-#define CAN_LEN_OFFSET 4
+#define CAN_LEN_OFFSET 4
#define CAN_DATA_OFFSET 8
typedef enum {
- DATA_DISSECTOR = 1,
- CANOPEN_DISSECTOR = 2
+ CAN_DATA_DISSECTOR = 1,
+ CAN_CANOPEN_DISSECTOR = 2
} Dissector_Option;
static enum_val_t can_high_level_protocol_dissector_options[] = {
- { "raw", "Raw data (no further dissection)", DATA_DISSECTOR },
- { "CANopen", "CANopen protocol", CANOPEN_DISSECTOR },
- { NULL, NULL, 0 }
+ { "raw", "Raw data (no further dissection)", CAN_DATA_DISSECTOR },
+ { "CANopen", "CANopen protocol", CAN_CANOPEN_DISSECTOR },
+ { NULL, NULL, 0 }
};
-static guint can_high_level_protocol_dissector = DATA_DISSECTOR;
+static guint can_high_level_protocol_dissector = CAN_DATA_DISSECTOR;
static const value_string frame_type_vals[] =
{
@@ -92,143 +91,157 @@ static const value_string frame_type_vals[] =
static void
dissect_socketcan(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- guint8 frame_type = LINUX_CAN_STD;
- tvbuff_t *next_tvb;
- guint8 frame_len = tvb_get_guint8( tvb, CAN_LEN_OFFSET );
- guint32 id = tvb_get_ntohl(tvb, 0);
+ proto_tree *can_tree;
+ proto_item *ti;
+ guint8 frame_type;
+ gint frame_len;
+ guint32 id;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "CAN");
+ col_clear(pinfo->cinfo,COL_INFO);
+
+ frame_len = tvb_get_guint8( tvb, CAN_LEN_OFFSET);
+ id = tvb_get_ntohl(tvb, 0);
- if( id & CAN_RTR_FLAG )
+ if (id & CAN_RTR_FLAG)
{
frame_type = LINUX_CAN_RTR;
}
- else if ( id & CAN_ERR_FLAG )
+ else if (id & CAN_ERR_FLAG)
{
frame_type = LINUX_CAN_ERR;
}
- else if( id & CAN_EFF_FLAG )
+ else if (id & CAN_EFF_FLAG)
{
frame_type = LINUX_CAN_EXT;
}
+ else
+ {
+ frame_type = LINUX_CAN_STD;
+ }
id &= CAN_EFF_MASK;
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "CAN");
- col_clear(pinfo->cinfo,COL_INFO);
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s: 0x%08x", val_to_str(frame_type, frame_type_vals, "Unknown (0x%02x)"), id );
- col_append_fstr(pinfo->cinfo, COL_INFO, " %s", tvb_bytes_to_str_punct(tvb, CAN_DATA_OFFSET, frame_len, ' '));
-
- if (tree)
- {
- proto_tree *can_tree = NULL;
- proto_item *ti = proto_tree_add_item(tree, proto_can, tvb, 0, 1 , ENC_NA );
- can_tree = proto_item_add_subtree(ti, ett_can);
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s: 0x%08x",
+ val_to_str(frame_type, frame_type_vals, "Unknown (0x%02x)"), id);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s",
+ tvb_bytes_to_str_punct(tvb, CAN_DATA_OFFSET, frame_len, ' '));
- proto_tree_add_item(can_tree, hf_can_ident, tvb, 0, 4, ENC_BIG_ENDIAN );
- proto_tree_add_item(can_tree, hf_can_extflag, tvb, 0, 4, ENC_BIG_ENDIAN );
- proto_tree_add_item(can_tree, hf_can_rtrflag, tvb, 0, 4, ENC_BIG_ENDIAN );
- proto_tree_add_item(can_tree, hf_can_errflag, tvb, 0, 4, ENC_BIG_ENDIAN );
- proto_tree_add_item(can_tree, hf_can_len, tvb, CAN_LEN_OFFSET, 1, ENC_BIG_ENDIAN );
+ ti = proto_tree_add_item(tree, proto_can, tvb, 0, -1, ENC_NA);
+ can_tree = proto_item_add_subtree(ti, ett_can);
- switch (can_high_level_protocol_dissector)
- {
- case DATA_DISSECTOR:
- next_tvb = tvb_new_subset(tvb, CAN_DATA_OFFSET, tvb_get_guint8(tvb, CAN_LEN_OFFSET), 8 );
- call_dissector(data_handle, next_tvb, pinfo, tree );
- break;
- case CANOPEN_DISSECTOR:
- call_dissector(canopen_handle, tvb, pinfo, tree );
- break;
- }
- }
-}
+ proto_tree_add_item(can_tree, hf_can_ident, tvb, 0, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(can_tree, hf_can_extflag, tvb, 0, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(can_tree, hf_can_rtrflag, tvb, 0, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(can_tree, hf_can_errflag, tvb, 0, 4, ENC_BIG_ENDIAN);
-void
-proto_reg_handoff_socketcan(void)
-{
- dissector_handle_t can_handle;
-
- data_handle = find_dissector("data");
- canopen_handle = find_dissector("canopen");
+ proto_tree_add_item(can_tree, hf_can_len, tvb, CAN_LEN_OFFSET, 1, ENC_BIG_ENDIAN);
- can_handle = create_dissector_handle(dissect_socketcan, proto_can);
- dissector_add_uint("wtap_encap", WTAP_ENCAP_SOCKETCAN, can_handle);
- dissector_add_uint("sll.ltype", LINUX_SLL_P_CAN, can_handle);
+ switch (can_high_level_protocol_dissector)
+ {
+ case CAN_DATA_DISSECTOR:
+ call_dissector(data_handle,
+ tvb_new_subset(tvb, CAN_DATA_OFFSET, frame_len, frame_len),
+ pinfo, tree);
+ break;
+ case CAN_CANOPEN_DISSECTOR:
+ /* XXX: The canopen dissector *redissects in a different manner* */
+ /* the same header bytes dissected above. */
+ /* What's the right way to handle SocketCan dissection ? */
+ call_dissector(canopen_handle, tvb, pinfo, tree);
+ break;
+ }
}
void
proto_register_socketcan(void)
{
- static hf_register_info hf[] =
- {
+ static hf_register_info hf[] = {
{
&hf_can_ident,
{
"Identifier", "can.id",
- FT_UINT32, BASE_HEX,
- NULL, CAN_EFF_MASK,
- NULL, HFILL
+ FT_UINT32, BASE_HEX,
+ NULL, CAN_EFF_MASK,
+ NULL, HFILL
}
},
{
&hf_can_extflag,
{
"Extended Flag", "can.flags.xtd",
- FT_BOOLEAN, 32,
- NULL, CAN_EFF_FLAG,
- NULL, HFILL
+ FT_BOOLEAN, 32,
+ NULL, CAN_EFF_FLAG,
+ NULL, HFILL
}
},
{
&hf_can_rtrflag,
{
"Remote Transmission Request Flag", "can.flags.rtr",
- FT_BOOLEAN, 32,
- NULL, CAN_RTR_FLAG,
- NULL, HFILL
+ FT_BOOLEAN, 32,
+ NULL, CAN_RTR_FLAG,
+ NULL, HFILL
}
},
{
&hf_can_errflag,
{
"Error Flag", "can.flags.err",
- FT_BOOLEAN, 32,
- NULL, CAN_ERR_FLAG,
- NULL, HFILL
+ FT_BOOLEAN, 32,
+ NULL, CAN_ERR_FLAG,
+ NULL, HFILL
}
},
{
&hf_can_len,
{
"Frame-Length", "can.len",
- FT_UINT8, BASE_DEC,
- NULL, 0x0,
- NULL, HFILL
+ FT_UINT8, BASE_DEC,
+ NULL, 0x0,
+ NULL, HFILL
}
}
};
/* Setup protocol subtree array */
static gint *ett[] =
- {
- &ett_can
- };
-
- proto_can = proto_register_protocol (
- "Controller Area Network",/* name */
- "CAN", /* short name */
- "can" /* abbrev */
+ {
+ &ett_can
+ };
+ module_t *can_module;
+
+ proto_can = proto_register_protocol(
+ "Controller Area Network", /* name */
+ "CAN", /* short name */
+ "can" /* abbrev */
);
proto_register_field_array(proto_can, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
- can_module = prefs_register_protocol(proto_can, proto_reg_handoff_socketcan);
+ can_module = prefs_register_protocol(proto_can, NULL);
- prefs_register_enum_preference(can_module, "protocol",
- "Next level protocol",
- "Next level protocol like CANopen etc.",
- (gint *)&can_high_level_protocol_dissector,
- can_high_level_protocol_dissector_options, FALSE);
+ prefs_register_enum_preference(
+ can_module,
+ "protocol",
+ "Next level protocol",
+ "Next level protocol like CANopen etc.",
+ (gint *)&can_high_level_protocol_dissector,
+ can_high_level_protocol_dissector_options,
+ FALSE
+ );
}
-/* eof */
+void
+proto_reg_handoff_socketcan(void)
+{
+ dissector_handle_t can_handle;
+
+ can_handle = create_dissector_handle(dissect_socketcan, proto_can);
+ dissector_add_uint("wtap_encap", WTAP_ENCAP_SOCKETCAN, can_handle);
+ dissector_add_uint("sll.ltype", LINUX_SLL_P_CAN, can_handle);
+
+ canopen_handle = find_dissector("canopen");
+ data_handle = find_dissector("data");
+}
diff --git a/epan/dissectors/packet-spice.c b/epan/dissectors/packet-spice.c
index f1b957672f..89984145dd 100644
--- a/epan/dissectors/packet-spice.c
+++ b/epan/dissectors/packet-spice.c
@@ -155,23 +155,29 @@ static const value_string playback_server_message_types[] = {
{ 0, NULL }
};
+#define SPICE_AUDIO_DATA_MODE_INVALID 0
+#define SPICE_AUDIO_DATA_MODE_RAW 1
+#define SPICE_AUDIO_DATA_MODE_CELT_0_5_1 2
static const value_string playback_mode_vals[] = {
- { 0, "INVALID" },
- { 1, "RAW" },
- { 2, "CELT_0_5_1" },
+ { SPICE_AUDIO_DATA_MODE_INVALID, "INVALID" },
+ { SPICE_AUDIO_DATA_MODE_RAW, "RAW" },
+ { SPICE_AUDIO_DATA_MODE_CELT_0_5_1, "CELT_0_5_1" },
{ 0, NULL }
};
#define SPICE_PLAYBACK_CAP_CELT_0_5_1 0
#define SPICE_PLAYBACK_CAP_VOLUME 1
-#define SPICE_PLAYBACK_CAP_CELT_0_5_1_MASK (1 << SPICE_PLAYBACK_CAP_CELT_0_5_1)
+#define SPICE_PLAYBACK_CAP_CELT_0_5_1_MASK (1 << SPICE_PLAYBACK_CAP_CELT_0_5_1)
#define SPICE_PLAYBACK_CAP_VOLUME_MASK (1 << SPICE_PLAYBACK_CAP_VOLUME) /* 0x2 */
/* main channel */
#define SPICE_MAIN_CAP_SEMI_SEAMLESS_MIGRATE 0
+#define SPICE_MAIN_CAP_VM_NAME_UUID 1
#define SPICE_MAIN_CAP_SEMI_SEAMLESS_MIGRATE_MASK (1 << SPICE_MAIN_CAP_SEMI_SEAMLESS_MIGRATE)
+#define SPICE_MAIN_CAP_VM_NAME_UUID_MASK (1 << SPICE_MAIN_CAP_VM_NAME_UUID)
+
/* main channel server messages */
#define SPICE_MAIN_MIGRATE_BEGIN 101
#define SPICE_MAIN_MIGRATE_CANCEL 102
@@ -183,6 +189,10 @@ static const value_string playback_mode_vals[] = {
#define SPICE_MAIN_AGENT_DISCONNECTED 108
#define SPICE_MAIN_AGENT_DATA 109
#define SPICE_MAIN_AGENT_TOKEN 110
+#define SPICE_MAIN_MIGRATE_SWITCH_HOST 111
+#define SPICE_MAIN_MIGRATE_END 112
+#define SPICE_MAIN_NAME 113
+#define SPICE_MAIN_UUID 114
static const value_string main_server_message_types[] = {
{ SPICE_MAIN_MIGRATE_BEGIN, "Server MIGRATE_BEGIN" },
@@ -195,6 +205,10 @@ static const value_string main_server_message_types[] = {
{ SPICE_MAIN_AGENT_DISCONNECTED, "Server AGENT_DISCONNECTED" },
{ SPICE_MAIN_AGENT_DATA, "Server AGENT_DATA" },
{ SPICE_MAIN_AGENT_TOKEN, "Server AGENT_TOKEN" },
+ { SPICE_MAIN_MIGRATE_SWITCH_HOST, "Server MIGRATE_SWITCH_HOST" },
+ { SPICE_MAIN_MIGRATE_END, "Server MIGRATE_END" },
+ { SPICE_MAIN_NAME, "Server VM_NAME" },
+ { SPICE_MAIN_UUID, "Server VM_UUID" },
{ 0, NULL }
};
@@ -254,19 +268,22 @@ static const value_string agent_clipboard_type[] = {
{ VD_AGENT_CLIPBOARD_NONE, "NONE" },
{ VD_AGENT_CLIPBOARD_UTF8_TEXT, "UTF8_TEXT" },
{ VD_AGENT_CLIPBOARD_IMAGE_PNG, "IMAGE_PNG" },
- { VD_AGENT_CLIPBOARD_IMAGE_PNG, "IMAGE_BMP" },
- { VD_AGENT_CLIPBOARD_IMAGE_PNG, "IMAGE_TIFF" },
- { VD_AGENT_CLIPBOARD_IMAGE_PNG, "IMAGE_JPG" },
+ { VD_AGENT_CLIPBOARD_IMAGE_BMP, "IMAGE_BMP" },
+ { VD_AGENT_CLIPBOARD_IMAGE_TIFF,"IMAGE_TIFF" },
+ { VD_AGENT_CLIPBOARD_IMAGE_JPG, "IMAGE_JPG" },
{ 0, NULL }
};
/* record channel */
/* record channel server messages */
#define SPICE_RECORD_START 101
#define SPICE_RECORD_STOP 102
-
+#define SPICE_RECORD_VOLUME 103
+#define SPICE_RECORD_MUTE 104
static const value_string record_server_message_types[] = {
- { SPICE_RECORD_START, "Server RECORD_START" },
- { SPICE_RECORD_STOP, "Server RECORD_STOP" },
+ { SPICE_RECORD_START, "Server RECORD_START" },
+ { SPICE_RECORD_STOP, "Server RECORD_STOP" },
+ { SPICE_RECORD_VOLUME, "Server RECORD_VOLUME" },
+ { SPICE_RECORD_MUTE, "Server RECORD_MUTE" },
{ 0, NULL }
};
@@ -284,10 +301,16 @@ static const value_string record_client_message_types[] = {
/* record channel capabilities - same as playback */
#define SPICE_RECORD_CAP_CELT_0_5_1 0
+#define SPICE_RECORD_CAP_VOLUME 1
-#define SPICE_RECORD_CAP_CELT_0_5_1_MASK (1 << SPICE_RECORD_CAP_CELT_0_5_1)
+#define SPICE_RECORD_CAP_CELT_0_5_1_MASK (1 << SPICE_RECORD_CAP_CELT_0_5_1)
+#define SPICE_RECORD_CAP_VOLUME_MASK (1 << SPICE_RECORD_CAP_VOLUME)
/* display channel */
+#define SPICE_DISPLAY_CAP_SIZED_STREAM 0
+
+#define SPICE_DISPLAY_CAP_SIZED_STREAM_MASK (1 << SPICE_DISPLAY_CAP_SIZED_STREAM)
+
/* display channel server messages */
#define SPICE_DISPLAY_MODE 101
#define SPICE_DISPLAY_MARK 102
@@ -316,6 +339,7 @@ static const value_string record_client_message_types[] = {
#define SPICE_DISPLAY_DRAW_ALPHA_BLEND 313
#define SPICE_DISPLAY_DRAW_SURFACE_CREATE 314
#define SPICE_DISPLAY_DRAW_SURFACE_DESTROY 315
+#define SPICE_DISPLAY_STREAM_DATA_SIZED 316
static const value_string display_server_message_types[] = {
{ SPICE_DISPLAY_MODE, "MODE" },
@@ -345,6 +369,7 @@ static const value_string display_server_message_types[] = {
{ SPICE_DISPLAY_DRAW_ALPHA_BLEND, "DRAW_ALPHA_BLEND" },
{ SPICE_DISPLAY_DRAW_SURFACE_CREATE, "DRAW_SURFACE_CREATE" },
{ SPICE_DISPLAY_DRAW_SURFACE_DESTROY, "DRAW_SURFACE_DESTROY" },
+ { SPICE_DISPLAY_STREAM_DATA_SIZED, "STREAM_DATA_SIZED" },
{ 0, NULL }
};
@@ -512,7 +537,7 @@ static const value_string spice_error_codes_vs[] = {
static const value_string inputs_client_message_types[] = {
{ SPICEC_INPUTS_KEY_DOWN, "Client KEY_DOWN" },
- { SPICEC_INPUTS_KEY_UP, "Client INPUTS_KEY_UP" },
+ { SPICEC_INPUTS_KEY_UP, "Client KEY_UP" },
{ SPICEC_INPUTS_KEY_MODIFIERS, "Client KEY_MODIFIERS" },
{ SPICEC_INPUTS_MOUSE_MOTION, "Client MOUSE_MOTION" },
{ SPICEC_INPUTS_MOUSE_POSITION, "Client MOUSE_POSITION" },
@@ -549,6 +574,7 @@ typedef struct {
guint32 server_auth;
guint32 auth_selected;
spice_session_state_e next_state;
+ guint16 playback_mode;
guint8 channel_type;
guint8 channel_id;
gboolean client_mini_header;
@@ -604,8 +630,8 @@ typedef struct {
gint16 y;
} point16_t;
-#define SPICE_BRUSH_TYPE_NONE 0
-#define SPICE_BRUSH_TYPE_SOLID 1
+#define SPICE_BRUSH_TYPE_NONE 0
+#define SPICE_BRUSH_TYPE_SOLID 1
#define SPICE_BRUSH_TYPE_PATTERN 2
static const value_string brush_types_vs[] = {
@@ -690,8 +716,8 @@ static const value_string image_type_vs[] = {
};
/* FIXME - those flags should be bit-wise, I guess! */
-#define IMAGE_FLAGS_CACHE_ME (1 << 0)
-#define IMAGE_FLAGS_HIGH_BITS_SET (1 << 1)
+#define IMAGE_FLAGS_CACHE_ME (1 << 0)
+#define IMAGE_FLAGS_HIGH_BITS_SET (1 << 1)
#define IMAGE_FLAGS_REPLACE_ME (1 << 2)
static const value_string image_flags_vs[] = {
{ 0, "None" },
@@ -717,11 +743,11 @@ static const value_string rop_descriptor_vs[] = {
};
#define QUIC_IMAGE_TYPE_INVALID 0
-#define QUIC_IMAGE_TYPE_GRAY 1
-#define QUIC_IMAGE_TYPE_RGB16 2
-#define QUIC_IMAGE_TYPE_RGB24 3
-#define QUIC_IMAGE_TYPE_RGB32 4
-#define QUIC_IMAGE_TYPE_RGBA 5
+#define QUIC_IMAGE_TYPE_GRAY 1
+#define QUIC_IMAGE_TYPE_RGB16 2
+#define QUIC_IMAGE_TYPE_RGB24 3
+#define QUIC_IMAGE_TYPE_RGB32 4
+#define QUIC_IMAGE_TYPE_RGBA 5
static const value_string quic_type_vs[] = {
{ QUIC_IMAGE_TYPE_INVALID, "INVALID" },
@@ -784,20 +810,20 @@ static const value_string Pixmap_types_vs[] = {
#define SPICE_COMMON_CAP_PROTOCOL_AUTH_SELECTION 0
-#define SPICE_COMMON_CAP_AUTH_SPICE 1
-#define SPICE_COMMON_CAP_AUTH_SASL 2
-#define SPICE_COMMON_CAP_MINI_HEADER 3
+#define SPICE_COMMON_CAP_AUTH_SPICE 1
+#define SPICE_COMMON_CAP_AUTH_SASL 2
+#define SPICE_COMMON_CAP_MINI_HEADER 3
#define SPICE_COMMON_CAP_PROTOCOL_AUTH_SELECTION_MASK (1 << SPICE_COMMON_CAP_PROTOCOL_AUTH_SELECTION) /* 0x1 */
-#define SPICE_COMMON_CAP_AUTH_SPICE_MASK (1 << SPICE_COMMON_CAP_AUTH_SPICE) /* 0x2 */
-#define SPICE_COMMON_CAP_AUTH_SASL_MASK (1 << SPICE_COMMON_CAP_AUTH_SASL) /*0x4 */
-#define SPICE_COMMON_CAP_MINI_HEADER_MASK (1 << SPICE_COMMON_CAP_MINI_HEADER)
+#define SPICE_COMMON_CAP_AUTH_SPICE_MASK (1 << SPICE_COMMON_CAP_AUTH_SPICE) /* 0x2 */
+#define SPICE_COMMON_CAP_AUTH_SASL_MASK (1 << SPICE_COMMON_CAP_AUTH_SASL) /* 0x4 */
+#define SPICE_COMMON_CAP_MINI_HEADER_MASK (1 << SPICE_COMMON_CAP_MINI_HEADER)
static const value_string spice_auth_select_vs[] = {
{ SPICE_COMMON_CAP_PROTOCOL_AUTH_SELECTION, "Auth Selection" },
- { SPICE_COMMON_CAP_AUTH_SPICE, "Spice" },
- { SPICE_COMMON_CAP_AUTH_SASL, "SASL" },
- { SPICE_COMMON_CAP_MINI_HEADER, "Mini header" },
+ { SPICE_COMMON_CAP_AUTH_SPICE, "Spice" },
+ { SPICE_COMMON_CAP_AUTH_SASL, "SASL" },
+ { SPICE_COMMON_CAP_MINI_HEADER, "Mini header" },
{ 0, NULL }
};
@@ -853,6 +879,7 @@ static gint ett_inputs_client = -1;
static gint ett_rectlist = -1;
static gint ett_inputs_server = -1;
static gint ett_record_client = -1;
+static gint ett_record_server = -1;
static gint ett_main_client = -1;
static gint ett_spice_agent = -1;
static gint ett_auth_tree = -1;
@@ -879,7 +906,7 @@ static int hf_ticket_client = -1;
static int hf_auth_select_client = -1;
static int hf_ticket_server = -1;
static int hf_main_cap_semi_migrate = -1;
-static int hf_display_cap = -1;
+static int hf_main_cap_vm_name_uuid = -1;
static int hf_inputs_cap = -1;
static int hf_cursor_cap = -1;
static int hf_common_cap_byte1 = -1;
@@ -951,6 +978,7 @@ static int hf_pixmap_address = -1;
static int hf_pixmap_format = -1;
static int hf_pixmap_flags = -1;
static int hf_keyboard_bits = -1;
+static int hf_keyboard_code = -1;
static int hf_rectlist_size = -1;
static int hf_session_id = -1;
static int hf_display_channels_hint = -1;
@@ -982,7 +1010,11 @@ static int hf_tranparent_true_color = -1;
static int hf_spice_sasl_auth_result = -1;
static int hf_playback_cap_celt = -1;
static int hf_playback_cap_volume = -1;
+static int hf_record_cap_volume = -1;
static int hf_record_cap_celt = -1;
+static int hf_display_cap_sized_stream = -1;
+static int hf_vm_uuid = -1;
+static int hf_vm_name = -1;
static dissector_handle_t jpeg_handle;
@@ -998,10 +1030,10 @@ dissect_ID(tvbuff_t *tvb, proto_tree *tree, const guint32 offset)
static guint32
dissect_Pixmap(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
{
- proto_item *ti=NULL;
+ proto_item *ti = NULL;
proto_tree *Pixmap_tree;
- guint32 PixmapSize;
- guint32 strides, height, pallete_ptr;
+ guint32 PixmapSize;
+ guint32 strides, height, pallete_ptr;
ti = proto_tree_add_text(tree, tvb, offset, 0, "Pixmap"); /* size is fixed later */
Pixmap_tree = proto_item_add_subtree(ti, ett_Pixmap);
@@ -1035,9 +1067,10 @@ dissect_Pixmap(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
static guint8
dissect_CursorHeader(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint16 *width, guint16 *height)
{
- proto_item *ti=NULL;
- proto_tree *CursorHeader_tree;
- const guint8 type = tvb_get_guint8(tvb, offset + 8);
+ proto_item *ti = NULL;
+ proto_tree *CursorHeader_tree;
+ const guint8 type = tvb_get_guint8(tvb, offset + 8);
+
*width = tvb_get_letohs(tvb, offset + 8 + 1);
*height = tvb_get_letohs(tvb, offset + 8 + 1 + 2);
@@ -1064,12 +1097,12 @@ dissect_CursorHeader(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint16 *w
static guint32
dissect_RedCursor(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
{
- proto_item *ti=NULL;
- proto_tree *RedCursor_tree;
- guint8 type;
- guint16 height, width;
- guint32 init_offset = offset, data_size = 0;
- const guint16 flags = tvb_get_letohs(tvb, offset);
+ proto_item *ti = NULL;
+ proto_tree *RedCursor_tree;
+ guint8 type;
+ guint16 height, width;
+ guint32 init_offset = offset, data_size = 0;
+ const guint16 flags = tvb_get_letohs(tvb, offset);
ti = proto_tree_add_text(tree, tvb, offset, 2, "RedCursor"); /* FIXME - fix size if flag is not NONE */
RedCursor_tree = proto_item_add_subtree(ti, ett_RedCursor);
@@ -1123,9 +1156,9 @@ dissect_RedCursor(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
static guint8
dissect_ImageDescriptor(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
{
- proto_item *ti=NULL;
- proto_tree *ImageDescriptor_tree;
- const guint8 type = tvb_get_guint8(tvb, offset + 8);
+ proto_item *ti = NULL;
+ proto_tree *ImageDescriptor_tree;
+ const guint8 type = tvb_get_guint8(tvb, offset + 8);
if (tree) {
ti = proto_tree_add_text(tree, tvb, offset, sizeof_ImageDescriptor, "Image Descriptor");
@@ -1148,9 +1181,9 @@ dissect_ImageDescriptor(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
static guint32
dissect_ImageQuic(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
{
- proto_item *ti=NULL;
- proto_tree *ImageQuic_tree;
- const guint32 QuicSize = tvb_get_letohl(tvb, offset);
+ proto_item *ti = NULL;
+ proto_tree *ImageQuic_tree;
+ const guint32 QuicSize = tvb_get_letohl(tvb, offset);
if (tree) {
ti = proto_tree_add_text(tree, tvb, offset, QuicSize + 4, "QUIC Image");
@@ -1250,9 +1283,9 @@ dissect_ImageLZ_common(tvbuff_t *tvb, proto_tree *tree, guint32 offset, const gb
static guint32
dissect_ImageLZ_JPEG(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
{
- proto_item *ti=NULL;
- proto_tree *LZ_JPEG_tree;
- const guint32 LZ_JPEGSize = tvb_get_letohl(tvb, offset);
+ proto_item *ti = NULL;
+ proto_tree *LZ_JPEG_tree;
+ const guint32 LZ_JPEGSize = tvb_get_letohl(tvb, offset);
ti = proto_tree_add_text(tree, tvb, offset, LZ_JPEGSize + 4, "LZ_JPEG Image");
LZ_JPEG_tree = proto_item_add_subtree(ti, ett_LZ_JPEG);
@@ -1267,9 +1300,9 @@ dissect_ImageLZ_JPEG(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
static guint32
dissect_ImageGLZ_RGB(tvbuff_t *tvb, proto_tree *tree, guint32 offset, const guint32 size)
{
- proto_item *ti=NULL;
+ proto_item *ti = NULL;
proto_tree *GLZ_RGB_tree;
- guint32 GLZ_RGBSize;
+ guint32 GLZ_RGBSize;
if (size == 0) { /* if no size was passed to us, need to fetch it. Otherwise, we already have it from the callee */
GLZ_RGBSize = tvb_get_letohl(tvb, offset);
@@ -1291,9 +1324,9 @@ dissect_ImageGLZ_RGB(tvbuff_t *tvb, proto_tree *tree, guint32 offset, const guin
static guint32
dissect_ImageLZ_RGB(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
{
- proto_item *ti=NULL;
- proto_tree *LZ_RGB_tree;
- const guint32 LZ_RGBSize = tvb_get_letohl(tvb, offset);
+ proto_item *ti = NULL;
+ proto_tree *LZ_RGB_tree;
+ const guint32 LZ_RGBSize = tvb_get_letohl(tvb, offset);
ti = proto_tree_add_text(tree, tvb, offset, LZ_RGBSize + 4, "LZ_RGB Image");
LZ_RGB_tree = proto_item_add_subtree(ti, ett_LZ_RGB);
@@ -1308,9 +1341,9 @@ dissect_ImageLZ_RGB(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
static guint32
dissect_ImageLZ_PLT(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
{
- proto_item *ti=NULL;
+ proto_item *ti = NULL;
proto_tree *LZ_PLT_tree;
- guint32 LZ_PLTSize, pal_size;
+ guint32 LZ_PLTSize, pal_size;
const guint32 current_offset = offset;
@@ -1354,10 +1387,10 @@ dissect_ImageLZ_PLT(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
static guint32
dissect_ImageJPEG_Alpha(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset)
{
- proto_item *ti=NULL;
+ proto_item *ti = NULL;
proto_tree *JPEG_tree;
- tvbuff_t *jpeg_tvb;
- guint32 JPEG_Size, Data_Size;
+ tvbuff_t *jpeg_tvb;
+ guint32 JPEG_Size, Data_Size;
/*TODO: const guint8 flags = tvb_get_guint8(tvb, offset); dissect and present */
offset += 1;
@@ -1383,9 +1416,9 @@ dissect_ImageJPEG_Alpha(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
static guint32
dissect_ImageJPEG(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, const guint32 offset)
{
- proto_item *ti=NULL;
+ proto_item *ti = NULL;
proto_tree *JPEG_tree;
- tvbuff_t *jpeg_tvb;
+ tvbuff_t *jpeg_tvb;
const guint32 JPEG_Size = tvb_get_letohl(tvb, offset);
ti = proto_tree_add_text(tree, tvb, offset, JPEG_Size + 4, "JPEG Image (%u bytes)", JPEG_Size);
@@ -1428,9 +1461,9 @@ dissect_ImageZLIB_GLZ_stream(tvbuff_t *tvb, proto_tree *ZLIB_GLZ_tree, packet_in
static guint32
dissect_ImageZLIB_GLZ(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset)
{
- proto_item *ti=NULL;
+ proto_item *ti = NULL;
proto_tree *ZLIB_GLZ_tree;
- guint32 ZLIB_GLZSize, ZLIB_uncompSize;
+ guint32 ZLIB_GLZSize, ZLIB_uncompSize;
ZLIB_uncompSize = tvb_get_letohl(tvb, offset);
ZLIB_GLZSize = tvb_get_letohl(tvb, offset + 4); /* compressed size */
@@ -1452,8 +1485,8 @@ dissect_ImageZLIB_GLZ(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint
static guint32
dissect_Image(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset)
{
- guint32 ImageSize = 0;
- const guint8 type = dissect_ImageDescriptor(tvb, tree, offset);;
+ guint32 ImageSize = 0;
+ const guint8 type = dissect_ImageDescriptor(tvb, tree, offset);
offset += sizeof_ImageDescriptor;
@@ -1502,9 +1535,9 @@ dissect_Image(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offse
static SpiceRect
dissect_SpiceRect(tvbuff_t *tvb, proto_tree *tree, const guint32 offset, const gint32 id)
{
- proto_item *ti=NULL;
+ proto_item *ti = NULL;
proto_tree *rect_tree;
- SpiceRect rect;
+ SpiceRect rect;
rect.left = tvb_get_letohl(tvb, offset);
rect.top = tvb_get_letohl(tvb, offset + 4);
@@ -1539,10 +1572,10 @@ rect_is_empty(const SpiceRect r)
static guint32
dissect_RectList(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
{
- proto_item *ti=NULL;
- proto_tree *rectlist_tree;
- guint32 i;
- const guint32 rectlist_size = tvb_get_letohl(tvb, offset);
+ proto_item *ti = NULL;
+ proto_tree *rectlist_tree;
+ guint32 i;
+ const guint32 rectlist_size = tvb_get_letohl(tvb, offset);
if (tree) {
ti = proto_tree_add_text(tree, tvb, offset, 4 + (rectlist_size * sizeof_SpiceRect),
@@ -1564,9 +1597,9 @@ dissect_RectList(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
static guint8
dissect_Clip(tvbuff_t *tvb, proto_tree *tree, const guint32 offset)
{
- proto_item *ti=NULL;
- proto_tree *Clip_tree;
- const guint8 type = tvb_get_guint8(tvb, offset);
+ proto_item *ti = NULL;
+ proto_tree *Clip_tree;
+ const guint8 type = tvb_get_guint8(tvb, offset);
if (tree) {
ti = proto_tree_add_text(tree, tvb, offset, 1, "SpiceClip");
@@ -1580,9 +1613,9 @@ dissect_Clip(tvbuff_t *tvb, proto_tree *tree, const guint32 offset)
static point32_t
dissect_POINT32(tvbuff_t *tvb, proto_tree *tree, const guint32 offset)
{
- proto_item *ti=NULL;
+ proto_item *ti = NULL;
proto_tree *point_tree;
- point32_t point;
+ point32_t point;
point.x = tvb_get_letohl(tvb, offset);
point.y = tvb_get_letohl(tvb, offset + 4);
@@ -1601,9 +1634,9 @@ dissect_POINT32(tvbuff_t *tvb, proto_tree *tree, const guint32 offset)
static point16_t
dissect_POINT16(tvbuff_t *tvb, proto_tree *tree, const guint32 offset)
{
- proto_item *ti=NULL;
+ proto_item *ti = NULL;
proto_tree *point16_tree;
- point16_t point16;
+ point16_t point16;
point16.x = tvb_get_letohs(tvb, offset);
point16.y = tvb_get_letohs(tvb, offset + 2);
@@ -1622,9 +1655,9 @@ dissect_POINT16(tvbuff_t *tvb, proto_tree *tree, const guint32 offset)
static guint32
dissect_Mask(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
{
- proto_item *ti=NULL;
+ proto_item *ti = NULL;
proto_tree *Mask_tree;
- guint32 bitmap;
+ guint32 bitmap;
ti = proto_tree_add_text(tree, tvb, offset, sizeof_Mask, "Mask");
Mask_tree = proto_item_add_subtree(ti, ett_Mask);
@@ -1654,9 +1687,9 @@ dissect_Mask(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
static guint32
dissect_Brush(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
{
- proto_item *ti=NULL;
- proto_tree *brush_tree;
- const guint8 type = tvb_get_guint8(tvb, offset);
+ proto_item *ti = NULL;
+ proto_tree *brush_tree;
+ const guint8 type = tvb_get_guint8(tvb, offset);
switch(type) {
case SPICE_BRUSH_TYPE_SOLID:
@@ -1696,11 +1729,12 @@ dissect_Brush(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
static guint32
dissect_DisplayBase(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
{
- proto_item *ti=NULL;
+ proto_item *ti = NULL;
proto_tree *DisplayBase_tree;
- SpiceRect rect;
- guint8 clip_type;
- guint32 clip_size = 0;
+ SpiceRect rect;
+ guint8 clip_type;
+ guint32 clip_size = 0;
+
ti = proto_tree_add_text(tree, tvb, offset, sizeof_DisplayBase, "SpiceMsgDisplayBase");
DisplayBase_tree = proto_item_add_subtree(ti, ett_DisplayBase);
proto_tree_add_item(DisplayBase_tree, hf_display_surface_id, tvb, offset, 4, ENC_LITTLE_ENDIAN);
@@ -1718,7 +1752,8 @@ dissect_DisplayBase(tvbuff_t *tvb, proto_tree *tree, guint32 offset)
return sizeof_DisplayBase;
}
-static const gchar* get_message_type_string(const guint16 message_type, const spice_conversation_t *spice_info, const gboolean client_message)
+static const gchar* get_message_type_string(const guint16 message_type, const spice_conversation_t *spice_info,
+ const gboolean client_message)
{
if (message_type < SPICE_FIRST_AVAIL_MESSAGE) { /* this is a common message */
@@ -1774,7 +1809,8 @@ static const gchar* get_message_type_string(const guint16 message_type, const sp
return "Unknown message";
}
static void
-dissect_spice_mini_data_header(tvbuff_t *tvb, proto_tree *tree, const spice_conversation_t *spice_info, const gboolean client_message, const guint16 message_type, guint32 offset)
+dissect_spice_mini_data_header(tvbuff_t *tvb, proto_tree *tree, const spice_conversation_t *spice_info,
+ const gboolean client_message, const guint16 message_type, guint32 offset)
{
if (tree) {
proto_tree_add_text(tree, tvb, offset, 2, "Message type: %s (%d)", get_message_type_string(message_type, spice_info, client_message), message_type);
@@ -1784,7 +1820,8 @@ dissect_spice_mini_data_header(tvbuff_t *tvb, proto_tree *tree, const spice_conv
}
static void
-dissect_spice_data_header(tvbuff_t *tvb, proto_tree *tree, const spice_conversation_t *spice_info, const gboolean client_message, const guint16 message_type, guint32 *sublist_size, guint32 offset)
+dissect_spice_data_header(tvbuff_t *tvb, proto_tree *tree, const spice_conversation_t *spice_info,
+ const gboolean client_message, const guint16 message_type, guint32 *sublist_size, guint32 offset)
{
*sublist_size = tvb_get_letohl(tvb, offset + 14);
@@ -1840,9 +1877,9 @@ dissect_spice_common_client_messages(tvbuff_t *tvb, proto_tree *tree, const guin
static guint32
dissect_spice_common_server_messages(tvbuff_t *tvb, proto_tree *tree, const guint16 message_type, guint32 offset, const guint32 total_message_size)
{
- proto_item *ti=NULL;
+ proto_item *ti = NULL;
proto_tree *server_message_tree;
- guint32 message_len, severity, visibility;
+ guint32 message_len, severity, visibility;
switch(message_type) {
/*
@@ -1957,11 +1994,11 @@ dissect_spice_display_client(tvbuff_t *tvb, proto_tree *tree, const guint16 mess
static guint32
dissect_spice_display_server(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, const guint16 message_type, guint32 offset)
{
- guint32 data_size, displayBaseLen;
- guint8 clip_type;
- guint16 glyphs;
- SpiceRect r;
- tvbuff_t *jpeg_tvb;
+ guint32 data_size, displayBaseLen;
+ guint8 clip_type;
+ guint16 glyphs;
+ SpiceRect r;
+ tvbuff_t *jpeg_tvb;
switch(message_type) {
case SPICE_DISPLAY_MODE:
@@ -2074,15 +2111,15 @@ dissect_spice_display_server(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
/* source area */
dissect_SpiceRect(tvb, tree, offset, -1);
offset += sizeof_SpiceRect;
-
+
data_size = dissect_Brush(tvb, tree, offset);
offset += data_size;
proto_tree_add_text(tree, tvb, offset, 1, "ROP3");
- offset += 1;
+ offset += 1;
proto_tree_add_text(tree, tvb, offset, 1, "scale mode");
offset += 1;
-
+
offset += dissect_Mask(tvb, tree, offset);
/*FIXME - need to understand what the rest of the message contains. */
data_size = dissect_Image(tvb, tree, pinfo, offset);
@@ -2173,6 +2210,20 @@ dissect_spice_display_server(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
proto_tree_add_item(tree, hf_display_stream_id, tvb, offset, 4, ENC_LITTLE_ENDIAN);
offset += 4;
break;
+ case SPICE_DISPLAY_STREAM_DATA_SIZED:
+ proto_tree_add_item(tree, hf_display_stream_id, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+ proto_tree_add_item(tree, hf_multi_media_time, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+ proto_tree_add_item(tree, hf_display_stream_width, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+ proto_tree_add_item(tree, hf_display_stream_height, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+ dissect_SpiceRect(tvb, tree, offset, -1);
+ offset += sizeof_SpiceRect;
+ proto_tree_add_item(tree, hf_display_stream_data_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+ break;
case SPICE_DISPLAY_STREAM_DESTROY_ALL:
proto_tree_add_text(tree, tvb, offset, 0, "DISPLAY_STREAM_DESTROY_ALL message");
break;
@@ -2200,18 +2251,31 @@ dissect_spice_display_server(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
}
static guint32
-dissect_spice_playback_server(tvbuff_t *tvb, proto_tree *tree, const guint16 message_type, guint32 offset)
+dissect_spice_playback_server(tvbuff_t *tvb, proto_tree *tree, const guint16 message_type, guint32 message_size, spice_conversation_t *spice_info, guint32 offset)
{
+ guint8 num_channels, mute;
+
switch(message_type) {
case SPICE_PLAYBACK_DATA:
proto_tree_add_item(tree, hf_playback_record_mode_timstamp, tvb, offset, 4, ENC_LITTLE_ENDIAN);
offset += 4;
- /* TODO - mode dependent, there may be more data here */
- break;
+ switch (spice_info->playback_mode) {
+ case SPICE_AUDIO_DATA_MODE_RAW:
+ proto_tree_add_text(tree, tvb, offset, message_size - 4, "RAW playback data");
+ break;
+ case SPICE_AUDIO_DATA_MODE_CELT_0_5_1:
+ proto_tree_add_text(tree, tvb, offset, message_size - 4, "CELT 0.5.1 encoded playback data");
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, offset, message_size - 4, "unknown playback mode: %u", spice_info->playback_mode);
+ break;
+ }
+ offset += (message_size - 4);
break;
case SPICE_PLAYBACK_MODE:
proto_tree_add_item(tree, hf_playback_record_mode_timstamp, tvb, offset, 4, ENC_LITTLE_ENDIAN);
offset += 4;
+ spice_info->playback_mode = tvb_get_letohs(tvb, offset);
proto_tree_add_item(tree, hf_playback_record_mode, tvb, offset, 2, ENC_LITTLE_ENDIAN);
offset += 2;
/* TODO - mode dependent, there may be more data here */
@@ -2223,6 +2287,19 @@ dissect_spice_playback_server(tvbuff_t *tvb, proto_tree *tree, const guint16 mes
case SPICE_PLAYBACK_STOP:
proto_tree_add_text(tree, tvb, offset, 0, "PLAYBACK_STOP message");
break;
+ case SPICE_PLAYBACK_VOLUME:
+ proto_tree_add_text(tree, tvb, offset, 0, "PLAYBACK_VOLUME message");
+ num_channels = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(tree, tvb, offset, 1, "Number of channels: %u", num_channels);
+ offset += 1;
+ /* TODO: iterate over all channels and parse volume */
+ break;
+ case SPICE_PLAYBACK_MUTE:
+ proto_tree_add_text(tree, tvb, offset, 1, "PLAYBACK_MUTE message");
+ mute = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(tree, tvb, offset, 1, "Mute: %u", mute);
+ offset += 1;
+ break;
default:
proto_tree_add_text(tree, tvb, offset, 0, "Unknown playback server message - cannot dissect");
break;
@@ -2286,12 +2363,31 @@ dissect_spice_cursor_server(tvbuff_t *tvb, proto_tree *tree, const guint16 messa
}
static guint32
-dissect_spice_record_server(tvbuff_t *tvb, proto_tree *tree, const guint16 message_type, const guint32 offset)
+dissect_spice_record_server(tvbuff_t *tvb, proto_tree *tree, const guint16 message_type, guint32 offset)
{
+ proto_item *ti=NULL;
+ proto_tree *record_tree;
+ guint8 num_channels, mute;
+
switch(message_type) {
case SPICE_RECORD_STOP:
proto_tree_add_text(tree, tvb, offset, 0, "RECORD_STOP message");
break;
+ case SPICE_RECORD_VOLUME:
+ ti = proto_tree_add_text(tree, tvb, offset, 0, "RECORD_VOLUME message"); /* TODO: fix length */
+ record_tree = proto_item_add_subtree(ti, ett_record_server);
+ num_channels = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(record_tree, tvb, offset, 1, "Number of channels: %u", num_channels);
+ offset += 1;
+ /* TODO: complete dissection - go over all channels and parse the volume */
+ break;
+ case SPICE_RECORD_MUTE:
+ ti = proto_tree_add_text(tree, tvb, offset, 1, "RECORD_MUTE message");
+ record_tree = proto_item_add_subtree(ti, ett_record_server);
+ mute = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(record_tree, tvb, offset, 1, "mute: %u", mute);
+ offset += 1;
+ break;
default:
proto_tree_add_text(tree, tvb, offset, 0, "Unknown record server message - cannot dissect");
break;
@@ -2370,8 +2466,8 @@ dissect_spice_agent_message(tvbuff_t *tvb, proto_tree *tree, const guint32 messa
static guint32
dissect_spice_main_server(tvbuff_t *tvb, proto_tree *tree, const guint16 message_type, guint32 offset)
{
- guint32 num_channels, i, agent_msg_type, agent_msg_len;
- guint8 channel_type;
+ guint32 num_channels, i, agent_msg_type, agent_msg_len, name_len;
+ guint8 channel_type;
switch(message_type) {
case SPICE_MAIN_INIT:
@@ -2392,6 +2488,17 @@ dissect_spice_main_server(tvbuff_t *tvb, proto_tree *tree, const guint16 message
proto_tree_add_item(tree, hf_ram_hint, tvb, offset, 4, ENC_LITTLE_ENDIAN);
offset += 4;
break;
+ case SPICE_MAIN_NAME:
+ name_len = tvb_get_letohl(tvb, offset);
+ proto_tree_add_text(tree, tvb, offset, 4, "Name length (bytes): %u", name_len);
+ offset += 4;
+ proto_tree_add_item(tree, hf_vm_name, tvb, offset, name_len, ENC_ASCII|ENC_NA);
+ offset += name_len;
+ break;
+ case SPICE_MAIN_UUID:
+ proto_tree_add_item(tree, hf_vm_uuid, tvb, offset, 16, ENC_BIG_ENDIAN);
+ offset += 16;
+ break;
case SPICE_MAIN_CHANNELS_LIST:
num_channels = tvb_get_letohl(tvb, offset);
proto_tree_add_text(tree, tvb, offset, 4, "Number of channels: %u", num_channels);
@@ -2444,9 +2551,9 @@ dissect_spice_main_server(tvbuff_t *tvb, proto_tree *tree, const guint16 message
static guint32
dissect_spice_main_client(tvbuff_t *tvb, proto_tree *tree, const guint16 message_type, guint32 offset)
{
- proto_item *ti=NULL;
+ proto_item *ti = NULL;
proto_tree *main_tree;
- guint32 agent_msg_type, agent_msg_len;
+ guint32 agent_msg_type, agent_msg_len;
switch(message_type) {
case SPICEC_MAIN_MOUSE_MODE_REQUEST:
@@ -2498,17 +2605,15 @@ dissect_spice_inputs_client(tvbuff_t *tvb, proto_tree *tree, const guint16 messa
switch(message_type) {
case SPICEC_INPUTS_KEY_DOWN:
- /*ti = */proto_tree_add_text(tree, tvb, offset, 4, "Client KEY_DOWN message");
- /* TODO: complete dissection
+ ti = proto_tree_add_text(tree, tvb, offset, 4, "Client KEY_DOWN message");
inputs_tree = proto_item_add_subtree(ti, ett_inputs_client);
- */
+ proto_tree_add_item(inputs_tree, hf_keyboard_code, tvb, offset, 4, ENC_LITTLE_ENDIAN);
offset += 4;
break;
case SPICEC_INPUTS_KEY_UP:
- /*ti = */proto_tree_add_text(tree, tvb, offset, 4, "Client KEY_UP message");
- /* TODO: complete dissection
+ ti = proto_tree_add_text(tree, tvb, offset, 4, "Client KEY_UP message");
inputs_tree = proto_item_add_subtree(ti, ett_inputs_client);
- */
+ proto_tree_add_item(inputs_tree, hf_keyboard_code, tvb, offset, 4, ENC_LITTLE_ENDIAN);
offset += 4;
break;
case SPICEC_INPUTS_KEY_MODIFIERS:
@@ -2583,11 +2688,12 @@ dissect_spice_inputs_server(tvbuff_t *tvb, proto_tree *tree, const guint16 messa
static guint32
dissect_spice_data_server_pdu(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, spice_conversation_t *spice_info, guint32 offset, const guint32 total_message_size)
{
- proto_item *ti=NULL, *msg_ti=NULL;
+ proto_item *ti = NULL, *msg_ti=NULL;
proto_tree *data_header_tree, *message_tree;
- guint16 message_type;
- guint32 message_size, sublist_size, old_offset;
- guint32 header_size;
+ guint16 message_type;
+ guint32 message_size, sublist_size, old_offset;
+ guint32 header_size;
+
if (spice_info->client_mini_header && spice_info->server_mini_header) {
header_size = sizeof_SpiceMiniDataHeader;
message_type = tvb_get_letohs(tvb, offset);
@@ -2626,7 +2732,7 @@ dissect_spice_data_server_pdu(tvbuff_t *tvb, proto_tree *tree, packet_info *pinf
switch (spice_info->channel_type) {
case SPICE_CHANNEL_PLAYBACK:
- offset = dissect_spice_playback_server(tvb, message_tree, message_type, offset);
+ offset = dissect_spice_playback_server(tvb, message_tree, message_type, message_size, spice_info, offset);
break;
case SPICE_CHANNEL_RECORD:
offset = dissect_spice_record_server(tvb, message_tree, message_type, offset);
@@ -2665,11 +2771,11 @@ dissect_spice_data_server_pdu(tvbuff_t *tvb, proto_tree *tree, packet_info *pinf
static guint32
dissect_spice_data_client_pdu(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, spice_conversation_t *spice_info, guint32 offset)
{
- proto_item *ti=NULL;
+ proto_item *ti = NULL;
proto_tree *data_header_tree;
- guint16 message_type;
+ guint16 message_type;
guint32 /** message_size,**/ sublist_size;
- guint32 header_size;
+ guint32 header_size;
if (spice_info->client_mini_header && spice_info->server_mini_header) {
header_size = sizeof_SpiceMiniDataHeader;
@@ -2733,9 +2839,9 @@ static void
dissect_spice_common_capabilities(tvbuff_t *tvb, proto_tree *tree, guint32 offset, const int caps_len, spice_conversation_t *spice_info, gboolean is_client)
{
/* TODO: save common and per-channel capabilities in spice_info ? */
- int i;
- guint32 val;
- proto_item *ti=NULL;
+ int i;
+ guint32 val;
+ proto_item *ti = NULL;
proto_tree *auth_tree;
for(i = 0; i != caps_len ; i++) {
@@ -2747,7 +2853,7 @@ dissect_spice_common_capabilities(tvbuff_t *tvb, proto_tree *tree, guint32 offse
} else {
spice_info->server_auth = val;
}
- ti = proto_tree_add_item(tree, hf_common_cap_byte1, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ ti = proto_tree_add_item(tree, hf_common_cap_byte1, tvb, offset, 4, ENC_NA);
auth_tree = proto_item_add_subtree(ti, ett_auth_tree);
proto_tree_add_boolean(auth_tree, hf_common_cap_auth_select, tvb, offset, 4, val);
proto_tree_add_boolean(auth_tree, hf_common_cap_auth_spice, tvb, offset, 4, val);
@@ -2775,18 +2881,18 @@ static void
dissect_spice_link_capabilities(tvbuff_t *tvb, proto_tree *tree, guint32 offset, const int caps_len, const spice_conversation_t *spice_info)
{
/* TODO: save common and per-channel capabilities in spice_info ? */
- int i;
- guint32 val;
- proto_item *ti=NULL;
+ int i;
+ guint32 val;
+ proto_item *ti = NULL;
proto_tree *cap_tree;
-
+
for(i = 0; i != caps_len ; i++) {
val = tvb_get_letohl(tvb, offset);
switch (spice_info->channel_type) {
case SPICE_CHANNEL_PLAYBACK:
switch (i) {
case 0:
- ti = proto_tree_add_item(tree, hf_common_cap_byte1, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ ti = proto_tree_add_item(tree, hf_common_cap_byte1, tvb, offset, 4, ENC_NA);
cap_tree = proto_item_add_subtree(ti, ett_cap_tree);
proto_tree_add_boolean(cap_tree, hf_playback_cap_celt, tvb, offset, 4, val);
proto_tree_add_boolean(cap_tree, hf_playback_cap_volume, tvb, offset, 4, val);
@@ -2798,16 +2904,25 @@ dissect_spice_link_capabilities(tvbuff_t *tvb, proto_tree *tree, guint32 offset,
case SPICE_CHANNEL_MAIN:
switch (i) {
case 0:
- ti = proto_tree_add_item(tree, hf_common_cap_byte1, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ ti = proto_tree_add_item(tree, hf_common_cap_byte1, tvb, offset, 4, ENC_NA);
cap_tree = proto_item_add_subtree(ti, ett_cap_tree);
proto_tree_add_boolean(cap_tree, hf_main_cap_semi_migrate, tvb, offset, 4, val);
+ proto_tree_add_boolean(cap_tree, hf_main_cap_vm_name_uuid, tvb, offset, 4, val); /*Note: only relevant for client. TODO: dissect only for client */
break;
default:
break;
}
break;
case SPICE_CHANNEL_DISPLAY:
- proto_tree_add_item(tree, hf_display_cap, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ switch (i) {
+ case 0:
+ ti = proto_tree_add_item(tree, hf_common_cap_byte1, tvb, offset, 4, ENC_NA);
+ cap_tree = proto_item_add_subtree(ti, ett_cap_tree);
+ proto_tree_add_boolean(cap_tree, hf_display_cap_sized_stream, tvb, offset, 4, val);
+ break;
+ default:
+ break;
+ }
break;
case SPICE_CHANNEL_INPUTS:
proto_tree_add_item(tree, hf_inputs_cap, tvb, offset, 4, ENC_LITTLE_ENDIAN);
@@ -2818,9 +2933,10 @@ dissect_spice_link_capabilities(tvbuff_t *tvb, proto_tree *tree, guint32 offset,
case SPICE_CHANNEL_RECORD:
switch (i) {
case 0:
- ti = proto_tree_add_item(tree, hf_common_cap_byte1, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ ti = proto_tree_add_item(tree, hf_common_cap_byte1, tvb, offset, 4, ENC_NA);
cap_tree = proto_item_add_subtree(ti, ett_cap_tree);
proto_tree_add_boolean(cap_tree, hf_record_cap_celt, tvb, offset, 4, val);
+ proto_tree_add_boolean(cap_tree, hf_record_cap_volume, tvb, offset, 4, val);
break;
default:
break;
@@ -2837,11 +2953,11 @@ dissect_spice_link_capabilities(tvbuff_t *tvb, proto_tree *tree, guint32 offset,
static void
dissect_spice_link_client_pdu(tvbuff_t *tvb, proto_tree *tree, spice_conversation_t *spice_info)
{
- guint32 offset;
- guint32 common_caps_len, channel_caps_len;
- proto_item *ti=NULL;
+ guint32 offset;
+ guint32 common_caps_len, channel_caps_len;
+ proto_item *ti = NULL;
proto_tree *link_header_tree = NULL;
- proto_tree *caps_tree = NULL;
+ proto_tree *caps_tree = NULL;
if (tree) {
ti = proto_tree_add_item(tree, hf_link_client, tvb, 0, sizeof_SpiceLinkHeader, ENC_NA);
@@ -2889,9 +3005,9 @@ dissect_spice_link_client_pdu(tvbuff_t *tvb, proto_tree *tree, spice_conversatio
static void
dissect_spice_link_server_pdu(tvbuff_t *tvb, proto_tree *tree, spice_conversation_t *spice_info)
{
- guint32 offset;
- guint32 common_caps_len, channel_caps_len;
- proto_item *ti=NULL;
+ guint32 offset;
+ guint32 common_caps_len, channel_caps_len;
+ proto_item *ti = NULL;
proto_tree *link_tree = NULL;
proto_tree *caps_tree = NULL;
@@ -2938,18 +3054,18 @@ static int
dissect_spice(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- conversation_t *conversation;
+ conversation_t *conversation;
spice_conversation_t *spice_info;
- spice_packet_t *per_packet_info;
- guint32 avail;
- guint32 pdu_len = 0;
- guint32 offset;
- proto_item *ti=NULL;
- proto_tree *spice_tree=NULL;
- proto_tree *spice_data_tree=NULL;
- gboolean client_sasl_list=FALSE;
- gboolean first_record_in_frame;
- guint8 sasl_auth_result;
+ spice_packet_t *per_packet_info;
+ guint32 avail;
+ guint32 pdu_len = 0;
+ guint32 offset;
+ proto_item *ti = NULL;
+ proto_tree *spice_tree = NULL;
+ proto_tree *spice_data_tree = NULL;
+ gboolean client_sasl_list = FALSE;
+ gboolean first_record_in_frame;
+ guint8 sasl_auth_result;
conversation = find_or_create_conversation(pinfo);
@@ -2961,6 +3077,7 @@ dissect_spice(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
spice_info->next_state = SPICE_LINK_CLIENT;
spice_info->client_auth = 0;
spice_info->server_auth = 0;
+ spice_info->playback_mode = SPICE_AUDIO_DATA_MODE_INVALID;
spice_info->client_mini_header = FALSE;
spice_info->server_mini_header = FALSE;
conversation_add_proto_data(conversation, proto_spice, spice_info);
@@ -3486,12 +3603,22 @@ proto_register_spice(void)
{ "Volume playback channel support", "spice.playback_cap_volume",
FT_BOOLEAN, 3, TFS(&tfs_set_notset), SPICE_PLAYBACK_CAP_VOLUME_MASK,
NULL, HFILL }
- },
+ },
+ { &hf_record_cap_volume,
+ { "Volume record channel support", "spice.record_cap_volume",
+ FT_BOOLEAN, 3, TFS(&tfs_set_notset), SPICE_RECORD_CAP_VOLUME_MASK,
+ NULL, HFILL }
+ },
{ &hf_record_cap_celt,
{ "CELT 0.5.1 record channel support", "spice.record_cap_celt",
FT_BOOLEAN, 3, TFS(&tfs_set_notset), SPICE_RECORD_CAP_CELT_0_5_1_MASK,
NULL, HFILL }
},
+ { &hf_display_cap_sized_stream,
+ { "Sized stream display channel support", "spice.display_cap_sized_stream",
+ FT_BOOLEAN, 3, TFS(&tfs_set_notset), SPICE_DISPLAY_CAP_SIZED_STREAM_MASK,
+ NULL, HFILL }
+ },
{ &hf_cursor_cap,
{ "Cursor channel capability", "spice.cursor_cap",
FT_UINT32, BASE_DEC, NULL, 0x0,
@@ -3507,9 +3634,9 @@ proto_register_spice(void)
FT_BOOLEAN, 3, TFS(&tfs_set_notset), SPICE_MAIN_CAP_SEMI_SEAMLESS_MIGRATE_MASK,
NULL, HFILL }
},
- { &hf_display_cap,
- { "Display channelcapability", "spice.display_cap",
- FT_UINT32, BASE_DEC, NULL, 0x0,
+ { &hf_main_cap_vm_name_uuid,
+ { "VM name and UUID messages capability", "spice.main_cap_vm_name_uuid",
+ FT_BOOLEAN, 3, TFS(&tfs_set_notset), SPICE_MAIN_CAP_VM_NAME_UUID_MASK,
NULL, HFILL }
},
{ &hf_playback_record_mode_timstamp,
@@ -3787,6 +3914,11 @@ proto_register_spice(void)
FT_UINT16, BASE_HEX, VALS(input_modifiers_types), 0x0,
NULL, HFILL }
},
+ { &hf_keyboard_code,
+ { "Key scan code", "spice.keyboard_key_code",
+ FT_UINT32, BASE_DEC_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_rectlist_size,
{ "RectList size", "spice.rectlist_size",
FT_UINT32, BASE_DEC, NULL, 0x0,
@@ -3976,6 +4108,16 @@ proto_register_spice(void)
{ "Authentication result", "spice.sasl_auth_result",
FT_UINT8, BASE_DEC, VALS(spice_sasl_auth_result_vs), 0x0,
NULL, HFILL }
+ },
+ { &hf_vm_uuid,
+ { "VM UUID", "spice.vm_uuid",
+ FT_GUID, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_vm_name,
+ { "VM Name", "spice.vm_name",
+ FT_STRINGZ, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
}
};
@@ -4021,6 +4163,7 @@ proto_register_spice(void)
&ett_rectlist,
&ett_inputs_server,
&ett_record_client,
+ &ett_record_server,
&ett_main_client,
&ett_spice_agent,
&ett_auth_tree,
@@ -4051,11 +4194,10 @@ proto_reg_handoff_spice(void)
*
* Local variables:
* c-basic-offset: 4
- * tab-width: 4
+ * tab-width: 8
* indent-tabs-mode: nil
* End:
*
- * vi: set shiftwidth=4 tabstop=4 expandtab:
- * :indentSize=4:tabSize=4:noTabs=true:
+ * vi: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
*/
-
diff --git a/epan/dissectors/packet-spnego.c b/epan/dissectors/packet-spnego.c
index 4de80216d8..2cf69675c0 100644
--- a/epan/dissectors/packet-spnego.c
+++ b/epan/dissectors/packet-spnego.c
@@ -531,7 +531,7 @@ dissect_spnego_InnerContextToken(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, i
* Now dissect the GSS_Wrap token; it's assumed to be in the
* rest of the tvbuff.
*/
- item = proto_tree_add_item(tree, hf_spnego_wraptoken, tvb, offset, -1, FALSE);
+ item = proto_tree_add_item(tree, hf_spnego_wraptoken, tvb, offset, -1, ENC_NA);
subtree = proto_item_add_subtree(item, ett_spnego_wraptoken);
diff --git a/epan/dissectors/packet-srvloc.c b/epan/dissectors/packet-srvloc.c
index be1954b85f..786d02130f 100644
--- a/epan/dissectors/packet-srvloc.c
+++ b/epan/dissectors/packet-srvloc.c
@@ -416,13 +416,14 @@ add_v1_string(proto_tree *tree, int hf, tvbuff_t *tvb, int offset, int length,
switch (encoding) {
case CHARSET_ISO_10646_UCS_2:
- unicode_str = tvb_get_ephemeral_unicode_string(tvb, offset, length/2, ENC_BIG_ENDIAN);
+ unicode_str = tvb_get_ephemeral_unicode_string(tvb, offset, length, ENC_BIG_ENDIAN);
proto_tree_add_string(tree, hf, tvb, offset, length,
unicode_str);
break;
default:
- proto_tree_add_item(tree, hf, tvb, offset, length, TRUE);
+ /* XXX - need to support all the CHARSET_ values */
+ proto_tree_add_item(tree, hf, tvb, offset, length, ENC_ASCII|ENC_NA);
break;
}
}
@@ -545,14 +546,14 @@ attr_list(proto_tree *tree, int hf, tvbuff_t *tvb, int offset, int length,
break;
}
/* Parse the attribute name */
- tmp = tvb_get_ephemeral_unicode_string(tvb, offset, (length-offset)/2, ENC_BIG_ENDIAN);
+ tmp = tvb_get_ephemeral_unicode_string(tvb, offset, length-offset, ENC_BIG_ENDIAN);
type_len = (int)strcspn(tmp, "=");
- attr_type = tvb_get_ephemeral_unicode_string(tvb, offset, type_len, ENC_BIG_ENDIAN);
+ attr_type = tvb_get_ephemeral_unicode_string(tvb, offset, type_len*2, ENC_BIG_ENDIAN);
proto_tree_add_string(tree, hf, tvb, offset, type_len*2, attr_type);
offset += (type_len*2)+2;
/* If this is the attribute svcname */
if (strcmp(attr_type, "svcname-ws")==0) {
- tmp = tvb_get_ephemeral_unicode_string(tvb, offset, (length-offset)/2, ENC_BIG_ENDIAN);
+ tmp = tvb_get_ephemeral_unicode_string(tvb, offset, length-offset, ENC_BIG_ENDIAN);
type_len = (int)strcspn(tmp, ")");
add_v1_string(tree, hf_srvloc_srvrply_svcname, tvb, offset, type_len*2, encoding);
offset += (type_len*2)+4;
@@ -699,7 +700,8 @@ attr_list(proto_tree *tree, int hf, tvbuff_t *tvb, int offset, int length,
default:
- proto_tree_add_item(tree, hf, tvb, offset, length, TRUE);
+ /* XXX - need to handle specific encodings */
+ proto_tree_add_item(tree, hf, tvb, offset, length, ENC_ASCII|ENC_NA);
break;
}
}
@@ -719,7 +721,8 @@ attr_list2(proto_tree *tree, int hf, tvbuff_t *tvb, int offset, int length, guin
*/
/* create a sub tree for attributes */
- ti = proto_tree_add_item(tree, hf, tvb, offset, length, TRUE);
+ /* XXX - is this always ASCII, or what? */
+ ti = proto_tree_add_item(tree, hf, tvb, offset, length, ENC_ASCII|ENC_NA);
attr_tree = proto_item_add_subtree(ti, ett_srvloc_attr);
/* this will ensure there is a terminating null */
diff --git a/epan/dissectors/packet-ssh.c b/epan/dissectors/packet-ssh.c
index a0cb99e5a9..105f49da6e 100644
--- a/epan/dissectors/packet-ssh.c
+++ b/epan/dissectors/packet-ssh.c
@@ -52,6 +52,7 @@
#include <epan/packet.h>
#include <epan/conversation.h>
#include <epan/emem.h>
+#include <epan/sctpppids.h>
#include "packet-tcp.h"
#include <epan/prefs.h>
@@ -456,7 +457,7 @@ ssh_dissect_ssh2(tvbuff_t *tvb, packet_info *pinfo,
ti=proto_tree_add_text(tree,tvb,offset,-1, "%s", title->str);
ssh2_tree = proto_item_add_subtree(ti ,ett_ssh2);
- if (title) g_string_free(title,TRUE);
+ g_string_free(title,TRUE);
}
if((is_response && this_number > 3) || (!is_response && this_number>4)) {
@@ -945,7 +946,7 @@ ssh_gslist_compare_strings(gconstpointer a, gconstpointer b)
return -1;
if (b == NULL)
return 1;
- return strcmp((char*)a,(char*)b);
+ return strcmp((const char*)a,(const char*)b);
}
/* expects that *result is NULL */
@@ -1339,4 +1340,5 @@ proto_reg_handoff_ssh(void)
dissector_add_uint("tcp.port", TCP_PORT_SSH, ssh_handle);
dissector_add_uint("sctp.port", SCTP_PORT_SSH, ssh_handle);
+ dissector_add_uint("sctp.ppi", SSH_PAYLOAD_PROTOCOL_ID, ssh_handle);
}
diff --git a/epan/dissectors/packet-ssl-utils.c b/epan/dissectors/packet-ssl-utils.c
index a13e66a340..5bab348b05 100644
--- a/epan/dissectors/packet-ssl-utils.c
+++ b/epan/dissectors/packet-ssl-utils.c
@@ -50,6 +50,7 @@ const value_string ssl_version_short_names[] = {
{ SSL_VER_TLS, "TLSv1" },
{ SSL_VER_TLSv1DOT1, "TLSv1.1" },
{ SSL_VER_DTLS, "DTLSv1.0" },
+ { SSL_VER_DTLS1DOT2, "DTLSv1.2" },
{ SSL_VER_PCT, "PCT" },
{ SSL_VER_TLSv1DOT2, "TLSv1.2" },
{ 0x00, NULL }
@@ -350,15 +351,15 @@ value_string_ext ssl_20_cipher_suites_ext = VALUE_STRING_EXT_INIT(ssl_20_cipher_
const value_string ssl_extension_curves[] = {
- { 1, "sect163k1" },
- { 2, "sect163r1" },
- { 3, "sect163r2" },
- { 4, "sect193r1" },
- { 5, "sect193r2" },
- { 6, "sect233k1" },
- { 7, "sect233r1" },
- { 8, "sect239k1" },
- { 9, "sect283k1" },
+ { 1, "sect163k1" },
+ { 2, "sect163r1" },
+ { 3, "sect163r2" },
+ { 4, "sect193r1" },
+ { 5, "sect193r2" },
+ { 6, "sect233k1" },
+ { 7, "sect233r1" },
+ { 8, "sect239k1" },
+ { 9, "sect283k1" },
{ 10, "sect283r1" },
{ 11, "sect409k1" },
{ 12, "sect409r1" },
@@ -410,6 +411,7 @@ const value_string ssl_31_content_type[] = {
};
const value_string ssl_versions[] = {
+ { 0xfefd, "DTLS 1.2" },
{ 0xfeff, "DTLS 1.0" },
{ 0x0100, "DTLS 1.0 (OpenSSL pre 0.9.8f)" },
{ 0x0303, "TLS 1.2" },
@@ -436,29 +438,29 @@ const value_string ssl_31_alert_level[] = {
};
const value_string ssl_31_alert_description[] = {
- { 0, "Close Notify" },
- { 10, "Unexpected Message" },
- { 20, "Bad Record MAC" },
- { 21, "Decryption Failed" },
- { 22, "Record Overflow" },
- { 30, "Decompression Failure" },
- { 40, "Handshake Failure" },
- { 41, "No Certificate" },
- { 42, "Bad Certificate" },
- { 43, "Unsupported Certificate" },
- { 44, "Certificate Revoked" },
- { 45, "Certificate Expired" },
- { 46, "Certificate Unknown" },
- { 47, "Illegal Parameter" },
- { 48, "Unknown CA" },
- { 49, "Access Denied" },
- { 50, "Decode Error" },
- { 51, "Decrypt Error" },
- { 60, "Export Restriction" },
- { 70, "Protocol Version" },
- { 71, "Insufficient Security" },
- { 80, "Internal Error" },
- { 90, "User Canceled" },
+ { 0, "Close Notify" },
+ { 10, "Unexpected Message" },
+ { 20, "Bad Record MAC" },
+ { 21, "Decryption Failed" },
+ { 22, "Record Overflow" },
+ { 30, "Decompression Failure" },
+ { 40, "Handshake Failure" },
+ { 41, "No Certificate" },
+ { 42, "Bad Certificate" },
+ { 43, "Unsupported Certificate" },
+ { 44, "Certificate Revoked" },
+ { 45, "Certificate Expired" },
+ { 46, "Certificate Unknown" },
+ { 47, "Illegal Parameter" },
+ { 48, "Unknown CA" },
+ { 49, "Access Denied" },
+ { 50, "Decode Error" },
+ { 51, "Decrypt Error" },
+ { 60, "Export Restriction" },
+ { 70, "Protocol Version" },
+ { 71, "Insufficient Security" },
+ { 80, "Internal Error" },
+ { 90, "User Canceled" },
{ 100, "No Renegotiation" },
{ 110, "Unsupported Extension" },
{ 111, "Certificate Unobtainable" },
@@ -499,8 +501,8 @@ const value_string tls_heartbeat_mode[] = {
};
const value_string ssl_31_compression_method[] = {
- { 0, "null" },
- { 1, "DEFLATE" },
+ { 0, "null" },
+ { 1, "DEFLATE" },
{ 64, "LZS" },
{ 0x00, NULL }
};
@@ -898,7 +900,7 @@ const value_string pct_error_code[] = {
/* RFC 4366 */
const value_string tls_hello_extension_types[] = {
- { 0, "server_name" },
+ { SSL_HND_HELLO_EXT_SERVER_NAME, "server_name" }, /* RFC 3546 */
{ 1, "max_fragment_length" },
{ 2, "client_certificate_url" },
{ 3, "trusted_ca_keys" },
@@ -915,7 +917,13 @@ const value_string tls_hello_extension_types[] = {
{ 14, "use_srtp" },
{ SSL_HND_HELLO_EXT_HEARTBEAT, "Heartbeat" }, /* RFC 6520 */
{ 35, "SessionTicket TLS" }, /* RFC 4507 */
- { 65281, "renegotiation_info" },
+ { SSL_HND_HELLO_EXT_NPN, "next_protocol_negotiation"}, /* http://technotes.googlecode.com/git/nextprotoneg.html */
+ { SSL_HND_HELLO_EXT_RENEG_INFO, "renegotiation_info" }, /* RFC 5746 */
+ { 0, NULL }
+};
+
+const value_string tls_hello_ext_server_name_type_vs[] = {
+ { 0, "host_name" },
{ 0, NULL }
};
@@ -967,192 +975,192 @@ struct _SslDecompress {
0 indicates unknown */
gint ssl_get_keyex_alg(gint cipher)
{
- switch(cipher) {
- case 0x0001:
- case 0x0002:
- case 0x0003:
- case 0x0004:
- case 0x0005:
- case 0x0006:
- case 0x0007:
- case 0x0008:
- case 0x0009:
- case 0x000a:
- case 0x002e:
- case 0x002f:
- case 0x0035:
- case 0x003b:
- case 0x003c:
- case 0x003d:
- case 0x0041:
- case 0x0060:
- case 0x0061:
- case 0x0062:
- case 0x0064:
- case 0x0084:
- case 0x0092:
- case 0x0093:
- case 0x0094:
- case 0x0095:
- case 0x0096:
- case 0x009c:
- case 0x009d:
- case 0x00ac:
- case 0x00ad:
- case 0x00b6:
- case 0x00b7:
- case 0x00b8:
- case 0x00b9:
- case 0x00ba:
- case 0x00c0:
- case 0xfefe:
- case 0xfeff:
- case 0xffe0:
- case 0xffe1:
- return KEX_RSA;
- case 0x000b:
- case 0x000c:
- case 0x000d:
- case 0x000e:
- case 0x000f:
- case 0x0010:
- case 0x0011:
- case 0x0012:
- case 0x0013:
- case 0x0014:
- case 0x0015:
- case 0x0016:
- case 0x0017:
- case 0x0018:
- case 0x0019:
- case 0x001a:
- case 0x001b:
- case 0x002d:
- case 0x0030:
- case 0x0031:
- case 0x0032:
- case 0x0033:
- case 0x0034:
- case 0x0036:
- case 0x0037:
- case 0x0038:
- case 0x0039:
- case 0x003a:
- case 0x003e:
- case 0x003f:
- case 0x0040:
- case 0x0042:
- case 0x0043:
- case 0x0044:
- case 0x0045:
- case 0x0046:
- case 0x0063:
- case 0x0065:
- case 0x0066:
- case 0x0067:
- case 0x0068:
- case 0x0069:
- case 0x006a:
- case 0x006b:
- case 0x006c:
- case 0x006d:
- case 0x0085:
- case 0x0086:
- case 0x0087:
- case 0x0088:
- case 0x0089:
- case 0x008e:
- case 0x008f:
- case 0x0090:
- case 0x0091:
- case 0x0097:
- case 0x0098:
- case 0x0099:
- case 0x009a:
- case 0x009b:
- case 0x009e:
- case 0x009f:
- case 0x00a0:
- case 0x00a1:
- case 0x00a2:
- case 0x00a3:
- case 0x00a4:
- case 0x00a5:
- case 0x00a6:
- case 0x00a7:
- case 0x00aa:
- case 0x00ab:
- case 0x00b2:
- case 0x00b3:
- case 0x00b4:
- case 0x00b5:
- case 0x00bb:
- case 0x00bc:
- case 0x00bd:
- case 0x00be:
- case 0x00bf:
- case 0x00c1:
- case 0x00c2:
- case 0x00c3:
- case 0x00c4:
- case 0x00c5:
- return KEX_DH;
- case 0xc001:
- case 0xc002:
- case 0xc003:
- case 0xc004:
- case 0xc005:
- case 0xc006:
- case 0xc007:
- case 0xc008:
- case 0xc009:
- case 0xc00a:
- case 0xc00b:
- case 0xc00c:
- case 0xc00d:
- case 0xc00e:
- case 0xc00f:
- case 0xc010:
- case 0xc011:
- case 0xc012:
- case 0xc013:
- case 0xc014:
- case 0xc015:
- case 0xc016:
- case 0xc017:
- case 0xc018:
- case 0xc019:
- case 0xc023:
- case 0xc024:
- case 0xc025:
- case 0xc026:
- case 0xc027:
- case 0xc028:
- case 0xc029:
- case 0xc02a:
- case 0xc02b:
- case 0xc02c:
- case 0xc02d:
- case 0xc02e:
- case 0xc02f:
- case 0xc030:
- case 0xc031:
- case 0xc032:
- case 0xc033:
- case 0xc034:
- case 0xc035:
- case 0xc036:
- case 0xc037:
- case 0xc038:
- case 0xc039:
- case 0xc03a:
- case 0xc03b:
- return KEX_ECDH;
- default:
- break;
- }
+ switch(cipher) {
+ case 0x0001:
+ case 0x0002:
+ case 0x0003:
+ case 0x0004:
+ case 0x0005:
+ case 0x0006:
+ case 0x0007:
+ case 0x0008:
+ case 0x0009:
+ case 0x000a:
+ case 0x002e:
+ case 0x002f:
+ case 0x0035:
+ case 0x003b:
+ case 0x003c:
+ case 0x003d:
+ case 0x0041:
+ case 0x0060:
+ case 0x0061:
+ case 0x0062:
+ case 0x0064:
+ case 0x0084:
+ case 0x0092:
+ case 0x0093:
+ case 0x0094:
+ case 0x0095:
+ case 0x0096:
+ case 0x009c:
+ case 0x009d:
+ case 0x00ac:
+ case 0x00ad:
+ case 0x00b6:
+ case 0x00b7:
+ case 0x00b8:
+ case 0x00b9:
+ case 0x00ba:
+ case 0x00c0:
+ case 0xfefe:
+ case 0xfeff:
+ case 0xffe0:
+ case 0xffe1:
+ return KEX_RSA;
+ case 0x000b:
+ case 0x000c:
+ case 0x000d:
+ case 0x000e:
+ case 0x000f:
+ case 0x0010:
+ case 0x0011:
+ case 0x0012:
+ case 0x0013:
+ case 0x0014:
+ case 0x0015:
+ case 0x0016:
+ case 0x0017:
+ case 0x0018:
+ case 0x0019:
+ case 0x001a:
+ case 0x001b:
+ case 0x002d:
+ case 0x0030:
+ case 0x0031:
+ case 0x0032:
+ case 0x0033:
+ case 0x0034:
+ case 0x0036:
+ case 0x0037:
+ case 0x0038:
+ case 0x0039:
+ case 0x003a:
+ case 0x003e:
+ case 0x003f:
+ case 0x0040:
+ case 0x0042:
+ case 0x0043:
+ case 0x0044:
+ case 0x0045:
+ case 0x0046:
+ case 0x0063:
+ case 0x0065:
+ case 0x0066:
+ case 0x0067:
+ case 0x0068:
+ case 0x0069:
+ case 0x006a:
+ case 0x006b:
+ case 0x006c:
+ case 0x006d:
+ case 0x0085:
+ case 0x0086:
+ case 0x0087:
+ case 0x0088:
+ case 0x0089:
+ case 0x008e:
+ case 0x008f:
+ case 0x0090:
+ case 0x0091:
+ case 0x0097:
+ case 0x0098:
+ case 0x0099:
+ case 0x009a:
+ case 0x009b:
+ case 0x009e:
+ case 0x009f:
+ case 0x00a0:
+ case 0x00a1:
+ case 0x00a2:
+ case 0x00a3:
+ case 0x00a4:
+ case 0x00a5:
+ case 0x00a6:
+ case 0x00a7:
+ case 0x00aa:
+ case 0x00ab:
+ case 0x00b2:
+ case 0x00b3:
+ case 0x00b4:
+ case 0x00b5:
+ case 0x00bb:
+ case 0x00bc:
+ case 0x00bd:
+ case 0x00be:
+ case 0x00bf:
+ case 0x00c1:
+ case 0x00c2:
+ case 0x00c3:
+ case 0x00c4:
+ case 0x00c5:
+ return KEX_DH;
+ case 0xc001:
+ case 0xc002:
+ case 0xc003:
+ case 0xc004:
+ case 0xc005:
+ case 0xc006:
+ case 0xc007:
+ case 0xc008:
+ case 0xc009:
+ case 0xc00a:
+ case 0xc00b:
+ case 0xc00c:
+ case 0xc00d:
+ case 0xc00e:
+ case 0xc00f:
+ case 0xc010:
+ case 0xc011:
+ case 0xc012:
+ case 0xc013:
+ case 0xc014:
+ case 0xc015:
+ case 0xc016:
+ case 0xc017:
+ case 0xc018:
+ case 0xc019:
+ case 0xc023:
+ case 0xc024:
+ case 0xc025:
+ case 0xc026:
+ case 0xc027:
+ case 0xc028:
+ case 0xc029:
+ case 0xc02a:
+ case 0xc02b:
+ case 0xc02c:
+ case 0xc02d:
+ case 0xc02e:
+ case 0xc02f:
+ case 0xc030:
+ case 0xc031:
+ case 0xc032:
+ case 0xc033:
+ case 0xc034:
+ case 0xc035:
+ case 0xc036:
+ case 0xc037:
+ case 0xc038:
+ case 0xc039:
+ case 0xc03a:
+ case 0xc03b:
+ return KEX_ECDH;
+ default:
+ break;
+ }
- return 0;
+ return 0;
}
@@ -1187,8 +1195,9 @@ static gint ver_major, ver_minor, ver_patch;
static inline gint
ssl_hmac_init(SSL_HMAC* md, const void * key, gint len, gint algo)
{
- gcry_error_t err;
- const char *err_str, *err_src;
+ gcry_error_t err;
+ const char *err_str, *err_src;
+
err = gcry_md_open(md,algo, GCRY_MD_FLAG_HMAC);
if (err != 0) {
err_str = gcry_strerror(err);
@@ -1207,12 +1216,13 @@ ssl_hmac_update(SSL_HMAC* md, const void* data, gint len)
static inline void
ssl_hmac_final(SSL_HMAC* md, guchar* data, guint* datalen)
{
- gint algo;
+ gint algo;
guint len;
+
algo = gcry_md_get_algo (*(md));
- len = gcry_md_get_algo_dlen(algo);
+ len = gcry_md_get_algo_dlen(algo);
memcpy(data, gcry_md_read(*(md), algo), len);
- *datalen =len;
+ *datalen = len;
}
static inline void
ssl_hmac_cleanup(SSL_HMAC* md)
@@ -1226,8 +1236,8 @@ ssl_hmac_cleanup(SSL_HMAC* md)
static inline gint
ssl_md_init(SSL_MD* md, gint algo)
{
- gcry_error_t err;
- const char *err_str, *err_src;
+ gcry_error_t err;
+ const char *err_str, *err_src;
err = gcry_md_open(md,algo, 0);
if (err != 0) {
err_str = gcry_strerror(err);
@@ -1276,7 +1286,7 @@ static inline void
ssl_sha_final(guchar* buf, SSL_SHA_CTX* md)
{
memcpy(buf, gcry_md_read(*(md), GCRY_MD_SHA1),
- gcry_md_get_algo_dlen(GCRY_MD_SHA1));
+ gcry_md_get_algo_dlen(GCRY_MD_SHA1));
}
static inline void
ssl_sha_cleanup(SSL_SHA_CTX* md)
@@ -1298,7 +1308,7 @@ static inline void
ssl_md5_final(guchar* buf, SSL_MD5_CTX* md)
{
memcpy(buf, gcry_md_read(*(md), GCRY_MD_MD5),
- gcry_md_get_algo_dlen(GCRY_MD_MD5));
+ gcry_md_get_algo_dlen(GCRY_MD_MD5));
}
static inline void
ssl_md5_cleanup(SSL_MD5_CTX* md)
@@ -1309,27 +1319,30 @@ ssl_md5_cleanup(SSL_MD5_CTX* md)
gint
ssl_cipher_setiv(SSL_CIPHER_CTX *cipher, guchar* iv, gint iv_len)
{
- /* guchar * ivp; */
gint ret;
- /* gint i; */
- /* gcry_cipher_hd_t c; */
- /*c=(gcry_cipher_hd_t)*cipher;*/
-
+#if 0
+ guchar *ivp;
+ gint i;
+ gcry_cipher_hd_t c;
+ c=(gcry_cipher_hd_t)*cipher;
+#endif
ssl_debug_printf("--------------------------------------------------------------------");
- /*for(ivp=c->iv,i=0; i < iv_len; i++ )
+#if 0
+ for(ivp=c->iv,i=0; i < iv_len; i++ )
{
ssl_debug_printf("%d ",ivp[i]);
i++;
}
- */
+#endif
ssl_debug_printf("--------------------------------------------------------------------");
ret = gcry_cipher_setiv(*(cipher), iv, iv_len);
- /*for(ivp=c->iv,i=0; i < iv_len; i++ )
+#if 0
+ for(ivp=c->iv,i=0; i < iv_len; i++ )
{
ssl_debug_printf("%d ",ivp[i]);
i++;
}
- */
+#endif
ssl_debug_printf("--------------------------------------------------------------------");
return ret;
}
@@ -1400,9 +1413,9 @@ _gcry_rsa_decrypt (int algo, gcry_mpi_t *result, gcry_mpi_t *data,
const gchar*
ssl_private_key_to_str(SSL_PRIVATE_KEY* pk)
{
- const gchar *str="NULL";
- size_t n;
- gchar *buf;
+ const gchar *str = "NULL";
+ size_t n;
+ gchar *buf;
if (!pk) return str;
#ifndef SSL_FAST
@@ -1422,16 +1435,16 @@ ssl_private_key_to_str(SSL_PRIVATE_KEY* pk)
int
ssl_private_decrypt(guint len, guchar* encr_data, SSL_PRIVATE_KEY* pk)
{
- gint rc;
- size_t decr_len;
- gcry_sexp_t s_data, s_plain;
- gcry_mpi_t encr_mpi;
- size_t i, encr_len;
- guchar* decr_data_ptr;
- gcry_mpi_t text;
+ gint rc;
+ size_t decr_len;
+ gcry_sexp_t s_data, s_plain;
+ gcry_mpi_t encr_mpi;
+ size_t i, encr_len;
+ guchar* decr_data_ptr;
+ gcry_mpi_t text;
decr_len = 0;
encr_len = len;
- text=NULL;
+ text = NULL;
/* build up a mpi rappresentation for encrypted data */
rc = gcry_mpi_scan(&encr_mpi, GCRYMPI_FMT_USG,encr_data, encr_len, &encr_len);
@@ -1653,6 +1666,7 @@ static SslCipherSuite cipher_suites[]={
{139,KEX_PSK,SIG_RSA,ENC_3DES,8,192,192,DIG_SHA,20,0, SSL_CIPHER_MODE_CBC},
{140,KEX_PSK,SIG_RSA,ENC_AES,16,128,128,DIG_SHA,20,0, SSL_CIPHER_MODE_CBC},
{141,KEX_PSK,SIG_RSA,ENC_AES256,16,256,256,DIG_SHA,20,0, SSL_CIPHER_MODE_CBC},
+ {49169,KEX_DH,SIG_RSA,ENC_RC4,1,128,128,DIG_SHA,20,0, SSL_CIPHER_MODE_STREAM}, /* TLS_ECDHE_RSA_WITH_RC4_128_SHA */
{49187,KEX_DH,SIG_DSS,ENC_AES,16,128,128,DIG_SHA256,32,0, SSL_CIPHER_MODE_CBC}, /* TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 */
{49188,KEX_DH,SIG_DSS,ENC_AES256,16,256,256,DIG_SHA384,48,0, SSL_CIPHER_MODE_CBC}, /* TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 */
{49189,KEX_DH,SIG_DSS,ENC_AES,16,128,128,DIG_SHA256,32,0, SSL_CIPHER_MODE_CBC}, /* TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 */
@@ -1685,15 +1699,15 @@ ssl_find_cipher(int num,SslCipherSuite* cs)
static gint
tls_hash(StringInfo* secret, StringInfo* seed, gint md, StringInfo* out)
{
- guint8 *ptr;
- guint left;
- gint tocpy;
- guint8 *A;
- guint8 _A[48],tmp[48];
- guint A_l,tmp_l;
- SSL_HMAC hm;
- ptr=out->data;
- left=out->data_len;
+ guint8 *ptr;
+ guint left;
+ gint tocpy;
+ guint8 *A;
+ guint8 _A[48],tmp[48];
+ guint A_l,tmp_l;
+ SSL_HMAC hm;
+ ptr = out->data;
+ left = out->data_len;
ssl_print_string("tls_hash: hash secret", secret);
@@ -1728,12 +1742,12 @@ static gint
tls_prf(StringInfo* secret, const gchar *usage,
StringInfo* rnd1, StringInfo* rnd2, StringInfo* out)
{
- StringInfo seed, sha_out, md5_out;
- guint8 *ptr;
- StringInfo s1, s2;
- guint i,s_l, r;
- size_t usage_len;
- r=-1;
+ StringInfo seed, sha_out, md5_out;
+ guint8 *ptr;
+ StringInfo s1, s2;
+ guint i,s_l, r;
+ size_t usage_len;
+ r = -1;
usage_len = strlen(usage);
/* initalize buffer for sha, md5 random seed*/
@@ -1802,7 +1816,7 @@ static gint
tls12_prf(gint md, StringInfo* secret, const gchar* usage, StringInfo* rnd1, StringInfo* rnd2, StringInfo* out)
{
StringInfo label_seed;
- size_t usage_len;
+ size_t usage_len;
usage_len = strlen(usage);
if (ssl_data_alloc(&label_seed, usage_len+rnd1->data_len+rnd2->data_len) < 0) {
@@ -1827,7 +1841,7 @@ ssl3_generate_export_iv(StringInfo* r1,
StringInfo* r2, StringInfo* out)
{
SSL_MD5_CTX md5;
- guint8 tmp[16];
+ guint8 tmp[16];
ssl_md5_init(&md5);
ssl_md5_update(&md5,r1->data,r1->data_len);
@@ -1846,12 +1860,12 @@ ssl3_prf(StringInfo* secret, const gchar* usage,
StringInfo* r1,
StringInfo* r2,StringInfo* out)
{
- SSL_MD5_CTX md5;
- SSL_SHA_CTX sha;
- StringInfo *rnd1,*rnd2;
- guint off;
- gint i=0,j;
- guint8 buf[20];
+ SSL_MD5_CTX md5;
+ SSL_SHA_CTX sha;
+ StringInfo *rnd1,*rnd2;
+ guint off;
+ gint i = 0,j;
+ guint8 buf[20];
rnd1=r1; rnd2=r2;
@@ -1902,8 +1916,9 @@ static gint prf(SslDecryptSession* ssl,StringInfo* secret,gchar* usage,StringInf
gint ret;
if (ssl->version_netorder==SSLV3_VERSION){
ret = ssl3_prf(secret,usage,rnd1,rnd2,out);
- }else if (ssl->version_netorder==TLSV1_VERSION || ssl->version_netorder==TLSV1DOT1_VERSION ||
- ssl->version_netorder==DTLSV1DOT0_VERSION || ssl->version_netorder==DTLSV1DOT0_VERSION_NOT){
+ }else if (ssl->version_netorder==TLSV1_VERSION || ssl->version_netorder==TLSV1DOT1_VERSION ||
+ ssl->version_netorder==DTLSV1DOT0_VERSION || ssl->version_netorder==DTLSV1DOT2_VERSION ||
+ ssl->version_netorder==DTLSV1DOT0_VERSION_NOT){
ret = tls_prf(secret,usage,rnd1,rnd2,out);
}else{
if (ssl->cipher_suite.dig == DIG_SHA384){
@@ -1980,7 +1995,7 @@ ssl_create_decoder(SslCipherSuite *cipher_suite, gint compression,
guint8 *mk, guint8 *sk, guint8 *iv)
{
SslDecoder *dec;
- gint ciph;
+ gint ciph;
dec = se_alloc0(sizeof(SslDecoder));
/* Find the SSLeay cipher */
@@ -2023,11 +2038,11 @@ ssl_create_decoder(SslCipherSuite *cipher_suite, gint compression,
int
ssl_generate_keyring_material(SslDecryptSession*ssl_session)
{
- StringInfo key_block;
- guint8 _iv_c[MAX_BLOCK_SIZE],_iv_s[MAX_BLOCK_SIZE];
- guint8 _key_c[MAX_KEY_SIZE],_key_s[MAX_KEY_SIZE];
- gint needed;
- guint8 *ptr,*c_wk,*s_wk,*c_mk,*s_mk,*c_iv = _iv_c,*s_iv = _iv_s;
+ StringInfo key_block;
+ guint8 _iv_c[MAX_BLOCK_SIZE],_iv_s[MAX_BLOCK_SIZE];
+ guint8 _key_c[MAX_KEY_SIZE],_key_s[MAX_KEY_SIZE];
+ gint needed;
+ guint8 *ptr,*c_wk,*s_wk,*c_mk,*s_mk,*c_iv = _iv_c,*s_iv = _iv_s;
/* check for enough info to proced */
guint need_all = SSL_CIPHER|SSL_CLIENT_RANDOM|SSL_SERVER_RANDOM|SSL_VERSION;
@@ -2318,17 +2333,17 @@ tls_check_mac(SslDecoder*decoder, gint ct, gint ver, guint8* data,
guint32 datalen, guint8* mac)
{
SSL_HMAC hm;
- gint md;
- guint32 len;
- guint8 buf[48];
- gint16 temp;
+ gint md;
+ guint32 len;
+ guint8 buf[48];
+ gint16 temp;
md=ssl_get_digest_by_name(digests[decoder->cipher_suite->dig-0x40]);
ssl_debug_printf("tls_check_mac mac type:%s md %d\n",
digests[decoder->cipher_suite->dig-0x40], md);
if (ssl_hmac_init(&hm,decoder->mac_key.data,decoder->mac_key.data_len,md) != 0)
- return -1;;
+ return -1;
/* hash sequence number */
fmt_seq(decoder->seq,buf);
@@ -2367,12 +2382,12 @@ int
ssl3_check_mac(SslDecoder*decoder,int ct,guint8* data,
guint32 datalen, guint8* mac)
{
- SSL_MD mc;
- gint md;
+ SSL_MD mc;
+ gint md;
guint32 len;
- guint8 buf[64],dgst[20];
- gint pad_ct;
- gint16 temp;
+ guint8 buf[64],dgst[20];
+ gint pad_ct;
+ gint16 temp;
pad_ct=(decoder->cipher_suite->dig==DIG_SHA)?40:48;
@@ -2432,10 +2447,10 @@ dtls_check_mac(SslDecoder*decoder, gint ct,int ver, guint8* data,
guint32 datalen, guint8* mac)
{
SSL_HMAC hm;
- gint md;
- guint32 len;
- guint8 buf[20];
- gint16 temp;
+ gint md;
+ guint32 len;
+ guint8 buf[20];
+ gint16 temp;
md=ssl_get_digest_by_name(digests[decoder->cipher_suite->dig-0x40]);
ssl_debug_printf("dtls_check_mac mac type:%s md %d\n",
@@ -2517,7 +2532,7 @@ int
ssl_decrypt_record(SslDecryptSession*ssl,SslDecoder* decoder, gint ct,
const guchar* in, guint inl, StringInfo* comp_str, StringInfo* out_str, guint* outl)
{
- guint pad, worklen, uncomplen;
+ guint pad, worklen, uncomplen;
guint8 *mac;
ssl_debug_printf("ssl_decrypt_record ciphertext len %d\n", inl);
@@ -2565,6 +2580,7 @@ ssl_decrypt_record(SslDecryptSession*ssl,SslDecoder* decoder, gint ct,
memcpy(out_str->data,out_str->data+(decoder->cipher_suite->block!=1 ? decoder->cipher_suite->block : 0),worklen);
}
if(ssl->version_netorder==DTLSV1DOT0_VERSION ||
+ ssl->version_netorder==DTLSV1DOT2_VERSION ||
ssl->version_netorder==DTLSV1DOT0_VERSION_NOT){
worklen=worklen-decoder->cipher_suite->block;
memcpy(out_str->data,out_str->data+decoder->cipher_suite->block,worklen);
@@ -2574,13 +2590,13 @@ ssl_decrypt_record(SslDecryptSession*ssl,SslDecoder* decoder, gint ct,
worklen, ssl->version_netorder, ct, decoder->seq);
if(ssl->version_netorder==SSLV3_VERSION){
if(ssl3_check_mac(decoder,ct,out_str->data,worklen,mac) < 0) {
- if(ssl_ignore_mac_failed) {
- ssl_debug_printf("ssl_decrypt_record: mac failed, but ignored for troubleshooting ;-)\n");
+ if(ssl_ignore_mac_failed) {
+ ssl_debug_printf("ssl_decrypt_record: mac failed, but ignored for troubleshooting ;-)\n");
+ }
+ else{
+ ssl_debug_printf("ssl_decrypt_record: mac failed\n");
+ return -1;
}
- else{
- ssl_debug_printf("ssl_decrypt_record: mac failed\n");
- return -1;
- }
}
else{
ssl_debug_printf("ssl_decrypt_record: mac ok\n");
@@ -2588,19 +2604,20 @@ ssl_decrypt_record(SslDecryptSession*ssl,SslDecoder* decoder, gint ct,
}
else if(ssl->version_netorder==TLSV1_VERSION || ssl->version_netorder==TLSV1DOT1_VERSION || ssl->version_netorder==TLSV1DOT2_VERSION){
if(tls_check_mac(decoder,ct,ssl->version_netorder,out_str->data,worklen,mac)< 0) {
- if(ssl_ignore_mac_failed) {
- ssl_debug_printf("ssl_decrypt_record: mac failed, but ignored for troubleshooting ;-)\n");
+ if(ssl_ignore_mac_failed) {
+ ssl_debug_printf("ssl_decrypt_record: mac failed, but ignored for troubleshooting ;-)\n");
+ }
+ else{
+ ssl_debug_printf("ssl_decrypt_record: mac failed\n");
+ return -1;
}
- else{
- ssl_debug_printf("ssl_decrypt_record: mac failed\n");
- return -1;
- }
}
else{
ssl_debug_printf("ssl_decrypt_record: mac ok\n");
}
}
else if(ssl->version_netorder==DTLSV1DOT0_VERSION ||
+ ssl->version_netorder==DTLSV1DOT2_VERSION ||
ssl->version_netorder==DTLSV1DOT0_VERSION_NOT){
/* Try rfc-compliant mac first, and if failed, try old openssl's non-rfc-compliant mac */
if(dtls_check_mac(decoder,ct,ssl->version_netorder,out_str->data,worklen,mac)>= 0) {
@@ -2618,19 +2635,19 @@ ssl_decrypt_record(SslDecryptSession*ssl,SslDecoder* decoder, gint ct,
}
}
- *outl = worklen;
+ *outl = worklen;
if (decoder->compression > 0) {
- ssl_debug_printf("ssl_decrypt_record: compression method %d\n", decoder->compression);
- ssl_data_copy(comp_str, out_str);
- ssl_print_data("Plaintext compressed", comp_str->data, worklen);
- if (!decoder->decomp) {
- ssl_debug_printf("decrypt_ssl3_record: no decoder available\n");
- return -1;
- }
- if (ssl_decompress_record(decoder->decomp, comp_str->data, worklen, out_str, &uncomplen) < 0) return -1;
- ssl_print_data("Plaintext uncompressed", out_str->data, uncomplen);
- *outl = uncomplen;
+ ssl_debug_printf("ssl_decrypt_record: compression method %d\n", decoder->compression);
+ ssl_data_copy(comp_str, out_str);
+ ssl_print_data("Plaintext compressed", comp_str->data, worklen);
+ if (!decoder->decomp) {
+ ssl_debug_printf("decrypt_ssl3_record: no decoder available\n");
+ return -1;
+ }
+ if (ssl_decompress_record(decoder->decomp, comp_str->data, worklen, out_str, &uncomplen) < 0) return -1;
+ ssl_print_data("Plaintext uncompressed", out_str->data, uncomplen);
+ *outl = uncomplen;
}
return 0;
@@ -2649,13 +2666,13 @@ SSL_PRIVATE_KEY*
ssl_privkey_to_sexp(struct gnutls_x509_privkey_int* priv_key)
{
gnutls_datum_t rsa_datum[RSA_PARS]; /* m, e, d, p, q, u */
- size_t tmp_size;
- gcry_sexp_t rsa_priv_key = NULL;
- gint major, minor, patch;
- gint i, p_idx, q_idx;
- int ret;
- size_t buf_len;
- unsigned char buf_keyid[32];
+ size_t tmp_size;
+ gcry_sexp_t rsa_priv_key = NULL;
+ gint major, minor, patch;
+ gint i, p_idx, q_idx;
+ int ret;
+ size_t buf_len;
+ unsigned char buf_keyid[32];
#ifdef SSL_FAST
gcry_mpi_t* rsa_params = g_malloc(sizeof(gcry_mpi_t)*RSA_PARS);
@@ -2711,7 +2728,7 @@ ssl_privkey_to_sexp(struct gnutls_x509_privkey_int* priv_key)
ssl_get_version(&major, &minor, &patch);
/* certain versions of gnutls require swap of rsa params 'p' and 'q' */
- if ((major <= 1) && (minor <= 0) && (patch <=13))
+ if ((major <= 1) && (minor <= 0) && (patch <= 13))
{
gcry_mpi_t tmp;
ssl_debug_printf("ssl_load_key: swapping p and q parameters\n");
@@ -2744,14 +2761,14 @@ ssl_privkey_to_sexp(struct gnutls_x509_privkey_int* priv_key)
Ssl_private_key_t *
ssl_load_key(FILE* fp)
{
- /* gnutls make our work much harded, since we have to work internally with
- * s-exp formatted data, but PEM loader export only in "gnutls_datum"
+ /* gnutls makes our work much harder, since we have to work internally with
+ * s-exp formatted data, but PEM loader exports only in "gnutls_datum"
* format, and a datum -> s-exp convertion function does not exist.
*/
gnutls_x509_privkey_t priv_key;
- gnutls_datum key;
- gint size;
- guint bytes;
+ gnutls_datum key;
+ gint size;
+ guint bytes;
Ssl_private_key_t *private_key = g_malloc0(sizeof(Ssl_private_key_t));
@@ -2828,16 +2845,16 @@ BAGTYPE(gnutls_pkcs12_bag_type_t x) {
Ssl_private_key_t *
ssl_load_pkcs12(FILE* fp, const gchar *cert_passwd) {
- int i, j, ret;
- int rest;
- unsigned char *p;
- gnutls_datum_t data;
- gnutls_pkcs12_bag_t bag = NULL;
- gnutls_pkcs12_bag_type_t bag_type;
- size_t len, buf_len;
- static char buf_name[256];
- static char buf_email[128];
- unsigned char buf_keyid[32];
+ int i, j, ret;
+ int rest;
+ unsigned char *p;
+ gnutls_datum_t data;
+ gnutls_pkcs12_bag_t bag = NULL;
+ gnutls_pkcs12_bag_type_t bag_type;
+ size_t len, buf_len;
+ static char buf_name[256];
+ static char buf_email[128];
+ unsigned char buf_keyid[32];
gnutls_pkcs12_t ssl_p12 = NULL;
gnutls_x509_crt_t ssl_cert = NULL;
@@ -3005,10 +3022,14 @@ void ssl_free_key(Ssl_private_key_t* key)
gint
ssl_find_private_key(SslDecryptSession *ssl_session, GHashTable *key_hash, GTree* associations, packet_info *pinfo) {
SslService dummy;
- char ip_addr_any[] = {0,0,0,0};
- guint32 port = 0;
+ char ip_addr_any[] = {0,0,0,0};
+ guint32 port = 0;
Ssl_private_key_t * private_key;
+ if (!ssl_session) {
+ return 0;
+ }
+
/* we need to know which side of the conversation is speaking */
if (ssl_packet_from_server(ssl_session, associations, pinfo)) {
dummy.addr = pinfo->src;
@@ -3238,12 +3259,13 @@ guint
ssl_private_key_hash (gconstpointer v)
{
const SslService *key;
- guint l, hash, len ;
+ guint l, hash, len ;
const guint* cur;
- key = (const SslService *)v;
+
+ key = (const SslService *)v;
hash = key->port;
- len = key->addr.len;
- cur = (const guint*) key->addr.data;
+ len = key->addr.len;
+ cur = (const guint*) key->addr.data;
for (l=4; (l<len); l+=4, cur++)
hash = hash ^ (*cur);
@@ -3326,7 +3348,7 @@ SslAssociation*
ssl_association_find(GTree * associations, guint port, gboolean tcp)
{
register SslAssociation* ret;
- SslAssociation assoc_tmp;
+ SslAssociation assoc_tmp;
assoc_tmp.tcp = tcp;
assoc_tmp.ssl_port = port;
@@ -3362,7 +3384,7 @@ ssl_packet_from_server(SslDecryptSession* ssl, GTree* associations, packet_info
void
ssl_add_record_info(gint proto, packet_info *pinfo, guchar* data, gint data_len, gint record_id)
{
- guchar* real_data;
+ guchar* real_data;
SslRecordInfo* rec;
SslPacketInfo* pi;
@@ -3408,7 +3430,7 @@ ssl_get_record_info(tvbuff_t *parent_tvb, int proto, packet_info *pinfo, gint re
void
ssl_add_data_info(gint proto, packet_info *pinfo, guchar* data, gint data_len, gint key, SslFlow *flow)
{
- SslDataInfo *rec, **prec;
+ SslDataInfo *rec, **prec;
SslPacketInfo *pi;
pi = p_get_proto_data(pinfo->fd, proto);
@@ -3444,7 +3466,7 @@ ssl_add_data_info(gint proto, packet_info *pinfo, guchar* data, gint data_len, g
SslDataInfo*
ssl_get_data_info(int proto, packet_info *pinfo, gint key)
{
- SslDataInfo* rec;
+ SslDataInfo* rec;
SslPacketInfo* pi;
pi = p_get_proto_data(pinfo->fd, proto);
@@ -3478,11 +3500,11 @@ ssl_common_init(GHashTable **session_hash, StringInfo *decrypted_data, StringInf
void
ssl_parse_key_list(const ssldecrypt_assoc_t * uats, GHashTable *key_hash, GTree* associations, dissector_handle_t handle, gboolean tcp)
{
- SslService* service;
- Ssl_private_key_t * private_key, *tmp_private_key;
- FILE* fp = NULL;
- guint32 addr_data[4];
- int addr_len, at;
+ SslService* service;
+ Ssl_private_key_t* private_key, *tmp_private_key;
+ FILE* fp = NULL;
+ guint32 addr_data[4];
+ int addr_len, at;
address_type addr_type[2] = { AT_IPv4, AT_IPv6 };
/* try to load keys file first */
@@ -3603,7 +3625,7 @@ ssl_restore_session(SslDecryptSession* ssl, GHashTable *session_hash)
int
ssl_is_valid_content_type(guint8 type)
{
- if (type >= 0x14 && type <= 0x18)
+ if ((type >= 0x14) && (type <= 0x18))
{
return 1;
}
@@ -3613,22 +3635,192 @@ ssl_is_valid_content_type(guint8 type)
static guint8
from_hex_char(gchar c) {
- if (c >= '0' && c <= '9')
+ if ((c >= '0') && (c <= '9'))
return c - '0';
- if (c >= 'A' && c <= 'F')
+ if ((c >= 'A') && (c <= 'F'))
return c - 'A' + 10;
- if (c >= 'a' && c <= 'f')
+ if ((c >= 'a') && (c <= 'f'))
return c - 'a' + 10;
return 16;
}
+/* from_hex converts |hex_len| bytes of hex data from |in| and sets |*out| to
+ * the result. |out->data| will be allocated using se_alloc. Returns TRUE on
+ * success. */
+static gboolean from_hex(StringInfo* out, const char* in, gsize hex_len) {
+ gsize i;
+
+ if (hex_len & 1)
+ return FALSE;
+
+ out->data_len = (guint)hex_len/2;
+ out->data = se_alloc(out->data_len);
+ for (i = 0; i < out->data_len; i++) {
+ guint8 a = from_hex_char(in[i*2]);
+ guint8 b = from_hex_char(in[i*2 + 1]);
+ if (a == 16 || b == 16)
+ return FALSE;
+ out->data[i] = a << 4 | b;
+ }
+ return TRUE;
+}
+
+static const unsigned int kRSAMasterSecretLength = 48; /* RFC5246 8.1 */
+
+/* ssl_keylog_parse_session_id parses, from |line|, a string that looks like:
+ * RSA Session-ID:<hex session id> Master-Key:<hex TLS master secret>.
+ *
+ * It returns TRUE iff the session id matches |ssl_session| and the master
+ * secret is correctly extracted. */
+static gboolean
+ssl_keylog_parse_session_id(const char* line,
+ SslDecryptSession* ssl_session)
+{
+ gsize len = strlen(line);
+ unsigned int i;
+
+ if (ssl_session->session_id.data_len == 0)
+ return FALSE;
+
+ if (len < 15 || memcmp(line, "RSA Session-ID:", 15) != 0)
+ return FALSE;
+ line += 15;
+ len -= 15;
+
+ if (len < ssl_session->session_id.data_len*2)
+ return FALSE;
+
+ for (i = 0; i < ssl_session->session_id.data_len; i++) {
+ if (from_hex_char(line[2*i]) != (ssl_session->session_id.data[i] >> 4) ||
+ from_hex_char(line[2*i+1]) != (ssl_session->session_id.data[i] & 15)) {
+ ssl_debug_printf(" line does not match session id\n");
+ return FALSE;
+ }
+ }
+
+ line += 2*i;
+ len -= 2*i;
+
+ if (len != 12 + kRSAMasterSecretLength*2 ||
+ memcmp(line, " Master-Key:", 12) != 0) {
+ return FALSE;
+ }
+ line += 12;
+ len -= 12;
+
+ if (!from_hex(&ssl_session->master_secret, line, len))
+ return FALSE;
+ ssl_session->state &= ~(SSL_PRE_MASTER_SECRET|SSL_HAVE_SESSION_KEY);
+ ssl_session->state |= SSL_MASTER_SECRET;
+ ssl_debug_printf("found master secret in key log\n");
+ return TRUE;
+}
+
+/* ssl_keylog_parse_client_random parses, from |line|, a string that looks like:
+ * CLIENT_RANDOM <hex client_random> <hex TLS master secret>.
+ *
+ * It returns TRUE iff the client_random matches |ssl_session| and the master
+ * secret is correctly extracted. */
+static gboolean
+ssl_keylog_parse_client_random(const char* line,
+ SslDecryptSession* ssl_session)
+{
+ static const unsigned int kTLSRandomSize = 32; /* RFC5246 A.6 */
+ gsize len = strlen(line);
+ unsigned int i;
+
+ if (len < 14 || memcmp(line, "CLIENT_RANDOM ", 14) != 0)
+ return FALSE;
+ line += 14;
+ len -= 14;
+
+ if (len < kTLSRandomSize*2 ||
+ ssl_session->client_random.data_len != kTLSRandomSize) {
+ return FALSE;
+ }
+
+ for (i = 0; i < kTLSRandomSize; i++) {
+ if (from_hex_char(line[2*i]) != (ssl_session->client_random.data[i] >> 4) ||
+ from_hex_char(line[2*i+1]) != (ssl_session->client_random.data[i] & 15)) {
+ ssl_debug_printf(" line does not match client random\n");
+ return FALSE;
+ }
+ }
+
+ line += 2*kTLSRandomSize;
+ len -= 2*kTLSRandomSize;
+
+ if (len != 1 + kRSAMasterSecretLength*2 || line[0] != ' ')
+ return FALSE;
+ line++;
+ len--;
+
+ if (!from_hex(&ssl_session->master_secret, line, len))
+ return FALSE;
+ ssl_session->state &= ~(SSL_PRE_MASTER_SECRET|SSL_HAVE_SESSION_KEY);
+ ssl_session->state |= SSL_MASTER_SECRET;
+ ssl_debug_printf("found master secret in key log\n");
+ return TRUE;
+}
+
+/* ssl_keylog_parse_session_id parses, from |line|, a string that looks like:
+ * RSA <hex, 8-bytes of encrypted pre-master secret> <hex pre-master secret>.
+ *
+ * It returns TRUE iff the session id matches |ssl_session| and the master
+ * secret is correctly extracted. */
+static gboolean
+ssl_keylog_parse_rsa_premaster(const char* line,
+ SslDecryptSession* ssl_session,
+ StringInfo* encrypted_pre_master)
+{
+ static const unsigned int kRSAPremasterLength = 48; /* RFC5246 7.4.7.1 */
+ gsize len = strlen(line);
+ unsigned int i;
+
+ if (encrypted_pre_master == NULL)
+ return FALSE;
+
+ if (encrypted_pre_master->data_len < 8)
+ return FALSE;
+
+ if (len < 4 || memcmp(line, "RSA ", 4) != 0)
+ return FALSE;
+ line += 4;
+ len -= 4;
+
+ if (len < 16)
+ return FALSE;
+
+ for (i = 0; i < 8; i++) {
+ if (from_hex_char(line[2*i]) != (encrypted_pre_master->data[i] >> 4) ||
+ from_hex_char(line[2*i+1]) != (encrypted_pre_master->data[i] & 15)) {
+ ssl_debug_printf(" line does not match encrypted pre-master secret");
+ return FALSE;
+ }
+ }
+
+ line += 16;
+ len -= 16;
+
+ if (len != 1 + kRSAPremasterLength*2 || line[0] != ' ')
+ return FALSE;
+ line++;
+ len--;
+
+ if (!from_hex(&ssl_session->pre_master_secret, line, len))
+ return FALSE;
+ ssl_session->state &= ~(SSL_MASTER_SECRET|SSL_HAVE_SESSION_KEY);
+ ssl_session->state |= SSL_PRE_MASTER_SECRET;
+ ssl_debug_printf("found pre-master secret in key log\n");
+
+ return TRUE;
+}
+
int
ssl_keylog_lookup(SslDecryptSession* ssl_session,
const gchar* ssl_keylog_filename,
StringInfo* encrypted_pre_master) {
- static const unsigned int kRSAPremasterLength = 48; /* RFC5246 7.4.7.1 */
FILE* ssl_keylog;
- gsize bytes_read;
int ret = -1;
ssl_debug_printf("trying to use SSL keylog in %s\n", ssl_keylog_filename);
@@ -3645,19 +3837,26 @@ ssl_keylog_lookup(SslDecryptSession* ssl_session,
* Where yyyy is the cleartext pre-master secret (hex-encoded)
* (this is the original format introduced with bug 4349)
*
- * - "RSA Sesion-ID:xxxx Master-Key:yyyy"
+ * - "RSA Session-ID:xxxx Master-Key:yyyy"
* Where xxxx is the SSL session ID (hex-encoded)
* Where yyyy is the cleartext master secret (hex-encoded)
* (added to support openssl s_client Master-Key output)
+ * This is somewhat is a misnomer because there's nothing RSA specific
+ * about this.
+ *
+ * - "CLIENT_RANDOM xxxx yyyy"
+ * Where xxxx is the client_random from the ClientHello (hex-encoded)
+ * Where yyy is the cleartext master secret (hex-encoded)
+ * (This format allows non-RSA SSL connections to be decrypted, i.e.
+ * ECDHE-RSA.)
*/
for (;;) {
char buf[512], *line;
- unsigned int i;
- unsigned int offset;
+ gsize bytes_read;
line = fgets(buf, sizeof(buf), ssl_keylog);
if (!line)
- break;
+ break;
bytes_read = strlen(line);
/* fgets includes the \n at the end of the line. */
@@ -3668,104 +3867,14 @@ ssl_keylog_lookup(SslDecryptSession* ssl_session,
ssl_debug_printf(" checking keylog line: %s\n", line);
- if ( memcmp(line, "RSA ", 4) != 0) {
- ssl_debug_printf(" rejecting line due to bad format\n");
- continue;
- }
-
- offset = 4;
-
- if ( ssl_session->session_id.data_len>0 && memcmp(line+offset,"Session-ID:",11) == 0 ) {
- offset += 11;
- for (i = 0; i < ssl_session->session_id.data_len; i++) {
- if (from_hex_char(line[offset + i*2]) != (ssl_session->session_id.data[i] >> 4) ||
- from_hex_char(line[offset + i*2 + 1]) != (ssl_session->session_id.data[i] & 15)) {
- line = NULL;
- break;
- }
- }
-
- if (line == NULL) {
- ssl_debug_printf(" line does not match SSL-ID\n");
- continue;
- }
-
- offset += 2*ssl_session->session_id.data_len;
- offset++;
-
- } else if( line[offset+16] == ' ' ) {
- for (i = 0; i < 8; i++) {
- if (from_hex_char(line[offset + i*2]) != (encrypted_pre_master->data[i] >> 4) ||
- from_hex_char(line[offset + i*2 + 1]) != (encrypted_pre_master->data[i] & 15)) {
- line = NULL;
- break;
- }
- }
-
- if (line == NULL) {
- ssl_debug_printf(" line does not match encrypted pre-master secret\n");
- continue;
- }
-
- offset += 17;
-
- } else {
- ssl_debug_printf(" rejecting line due to bad format\n");
- continue;
- }
-
-
- /* This record seems to match. */
- if (memcmp(line+offset, "Master-Key:", 11) == 0) {
- /* Key is a MasterSecret */
- offset += 11;
- ssl_session->master_secret.data = se_alloc(kRSAPremasterLength);
- for (i = 0; i < kRSAPremasterLength; i++) {
- guint8 a = from_hex_char(line[offset + i*2]);
- guint8 b = from_hex_char(line[offset + i*2 + 1]);
- if (a == 16 || b == 16) {
- line = NULL;
- break;
- }
- ssl_session->master_secret.data[i] = a << 4 | b;
- }
-
- if (line == NULL) {
- ssl_debug_printf(" line contains non-hex chars in master secret\n");
- continue;
- }
-
- ssl_session->master_secret.data_len = kRSAPremasterLength;
- ssl_session->state &= ~(SSL_PRE_MASTER_SECRET|SSL_HAVE_SESSION_KEY);
- ssl_session->state |= SSL_MASTER_SECRET;
- ssl_debug_printf("found master secret in key log\n");
- ret = 0;
+ if (ssl_keylog_parse_session_id(line, ssl_session) ||
+ ssl_keylog_parse_rsa_premaster(line, ssl_session,
+ encrypted_pre_master) ||
+ ssl_keylog_parse_client_random(line, ssl_session)) {
+ ret = 1;
break;
-
} else {
- /* Key is a PreMasterSecret */
- ssl_session->pre_master_secret.data = se_alloc(kRSAPremasterLength);
- for (i = 0; i < kRSAPremasterLength; i++) {
- guint8 a = from_hex_char(line[offset + i*2]);
- guint8 b = from_hex_char(line[offset + i*2 + 1]);
- if (a == 16 || b == 16) {
- line = NULL;
- break;
- }
- ssl_session->pre_master_secret.data[i] = a << 4 | b;
- }
-
- if (line == NULL) {
- ssl_debug_printf(" line contains non-hex chars in pre-master secret\n");
- continue;
- }
-
- ssl_session->pre_master_secret.data_len = kRSAPremasterLength;
- ssl_session->state &= ~(SSL_MASTER_SECRET|SSL_HAVE_SESSION_KEY);
- ssl_session->state |= SSL_PRE_MASTER_SECRET;
- ssl_debug_printf("found pre-master secret in key log\n");
- ret = 0;
- break;
+ ssl_debug_printf(" line does not match\n");
}
}
@@ -3778,12 +3887,13 @@ ssl_keylog_lookup(SslDecryptSession* ssl_session,
static FILE* ssl_debug_file=NULL;
void
-ssl_set_debug(char* name)
+ssl_set_debug(const gchar* name)
{
static gint debug_file_must_be_closed;
- gint use_stderr;
+ gint use_stderr;
+
debug_file_must_be_closed = 0;
- use_stderr = name?(strcmp(name, SSL_DEBUG_USE_STDERR) == 0):0;
+ use_stderr = name?(strcmp(name, SSL_DEBUG_USE_STDERR) == 0):0;
if (debug_file_must_be_closed)
fclose(ssl_debug_file);
@@ -3838,7 +3948,7 @@ ssl_print_data(const gchar* name, const guchar* data, size_t len)
return;
fprintf(ssl_debug_file,"%s[%d]:\n",name, (int) len);
for (i=0; i< len; i++) {
- if ((i>0) && (i%16 == 0))
+ if ((i > 0) && (i%16 == 0))
fprintf(ssl_debug_file,"\n");
fprintf(ssl_debug_file,"%.2x ",data[i]&255);
}
@@ -3923,12 +4033,12 @@ ssldecrypt_uat_fld_fileopen_chk_cb(void* r _U_, const char* p, unsigned len _U_,
}
gboolean
-ssldecrypt_uat_fld_password_chk_cb(void* r _U_, const char* p, unsigned len _U_, const void* u1 _U_, const void* u2 _U_, const char** err)
+ssldecrypt_uat_fld_password_chk_cb(void* r _U_, const char* p, unsigned len _U_, const void* u1 _U_, const void* u2 _U_, const char ** err)
{
- ssldecrypt_assoc_t* f = r;
- FILE *fp = NULL;
+ ssldecrypt_assoc_t* f = r;
+ FILE *fp = NULL;
- if (p && strlen(p) > 0u) {
+ if (p && (strlen(p) > 0u)) {
fp = ws_fopen(f->keyfile, "rb");
if (fp) {
if (!ssl_load_pkcs12(fp, p)) {
diff --git a/epan/dissectors/packet-ssl-utils.h b/epan/dissectors/packet-ssl-utils.h
index 59565b1ef5..c7229ec1e5 100644
--- a/epan/dissectors/packet-ssl-utils.h
+++ b/epan/dissectors/packet-ssl-utils.h
@@ -63,6 +63,7 @@
#define SSL_VER_TLS 3
#define SSL_VER_TLSv1DOT1 4
#define SSL_VER_DTLS 5
+#define SSL_VER_DTLS1DOT2 8
#define SSL_VER_PCT 6
#define SSL_VER_TLSv1DOT2 7
@@ -146,10 +147,12 @@
#define PCT_ERR_SERVER_AUTH_FAILED 0x05
#define PCT_ERR_SPECS_MISMATCH 0x06
+#define SSL_HND_HELLO_EXT_SERVER_NAME 0x0
#define SSL_HND_HELLO_EXT_ELLIPTIC_CURVES 0x000a
#define SSL_HND_HELLO_EXT_EC_POINT_FORMATS 0x000b
#define SSL_HND_HELLO_EXT_HEARTBEAT 0x000f
-
+#define SSL_HND_HELLO_EXT_RENEG_INFO 0xff01
+#define SSL_HND_HELLO_EXT_NPN 0x3374
#define SSL_HND_CERT_STATUS_TYPE_OCSP 1
/*
@@ -188,6 +191,7 @@ extern const value_string tls_cert_status_type[];
extern const value_string ssl_extension_curves[];
extern const value_string ssl_extension_ec_point_formats[];
extern const value_string ssl_curve_types[];
+extern const value_string tls_hello_ext_server_name_type_vs[];
/* XXX Should we use GByteArray instead? */
typedef struct _StringInfo {
@@ -203,6 +207,7 @@ typedef struct _StringInfo {
#define TLSV1DOT2_VERSION 0x303
#define DTLSV1DOT0_VERSION 0xfeff
#define DTLSV1DOT0_VERSION_NOT 0x100
+#define DTLSV1DOT2_VERSION 0xfefd
#define SSL_CLIENT_RANDOM (1<<0)
#define SSL_SERVER_RANDOM (1<<1)
@@ -545,7 +550,7 @@ ssl_print_string(const gchar* name, const StringInfo* data);
extern void
ssl_print_text_data(const gchar* name, const guchar* data, size_t len);
extern void
-ssl_set_debug(gchar* name);
+ssl_set_debug(const gchar* name);
extern void
ssl_debug_flush(void);
#else
diff --git a/epan/dissectors/packet-ssl.c b/epan/dissectors/packet-ssl.c
index ba2acae0f9..608ddd2e06 100644
--- a/epan/dissectors/packet-ssl.c
+++ b/epan/dissectors/packet-ssl.c
@@ -172,6 +172,17 @@ static gint hf_ssl_handshake_extension_elliptic_curves = -1;
static gint hf_ssl_handshake_extension_elliptic_curve = -1;
static gint hf_ssl_handshake_extension_ec_point_formats_len = -1;
static gint hf_ssl_handshake_extension_ec_point_format = -1;
+static gint hf_ssl_handshake_extension_npn_len = -1;
+static gint hf_ssl_handshake_extension_npn_str_len = -1;
+static gint hf_ssl_handshake_extension_npn_str = -1;
+static gint hf_ssl_handshake_extension_reneg_info_len = -1;
+static gint hf_ssl_handshake_extension_server_name_len = -1;
+static gint hf_ssl_handshake_extension_server_name_list_len = -1;
+static gint hf_ssl_handshake_extension_server_name_type = -1;
+static gint hf_ssl_handshake_extension_server_name = -1;
+static gint hf_ssl_handshake_session_ticket_lifetime_hint = -1;
+static gint hf_ssl_handshake_session_ticket_len = -1;
+static gint hf_ssl_handshake_session_ticket = -1;
static gint hf_ssl_handshake_certificates_len = -1;
static gint hf_ssl_handshake_certificates = -1;
static gint hf_ssl_handshake_certificate = -1;
@@ -272,12 +283,16 @@ static gint ett_ssl_comp_methods = -1;
static gint ett_ssl_extension = -1;
static gint ett_ssl_extension_curves = -1;
static gint ett_ssl_extension_curves_point_formats = -1;
+static gint ett_ssl_extension_npn = -1;
+static gint ett_ssl_extension_reneg_info = -1;
+static gint ett_ssl_extension_server_name = -1;
static gint ett_ssl_certs = -1;
static gint ett_ssl_cert_types = -1;
static gint ett_ssl_sig_hash_algs = -1;
static gint ett_ssl_sig_hash_alg = -1;
static gint ett_ssl_dnames = -1;
static gint ett_ssl_random = -1;
+static gint ett_ssl_new_ses_ticket = -1;
static gint ett_ssl_keyex_params = -1;
static gint ett_ssl_cert_status = -1;
static gint ett_ssl_ocsp_resp = -1;
@@ -319,15 +334,15 @@ static StringInfo ssl_decrypted_data = {NULL, 0};
static gint ssl_decrypted_data_avail = 0;
static uat_t *ssldecrypt_uat = NULL;
-static gchar* ssl_keys_list = NULL;
-static gchar* ssl_psk = NULL;
-static gchar* ssl_keylog_filename = NULL;
+static const gchar* ssl_keys_list = NULL;
+static const gchar* ssl_psk = NULL;
+static const gchar* ssl_keylog_filename = NULL;
/* List of dissectors to call for SSL data */
static heur_dissector_list_t ssl_heur_subdissector_list;
#if defined(SSL_DECRYPT_DEBUG) || defined(HAVE_LIBGNUTLS)
-static gchar* ssl_debug_file_name = NULL;
+static const gchar* ssl_debug_file_name = NULL;
#endif
@@ -475,6 +490,15 @@ static gint dissect_ssl3_hnd_hello_ext_elliptic_curves(tvbuff_t *tvb,
static gint dissect_ssl3_hnd_hello_ext_ec_point_formats(tvbuff_t *tvb,
proto_tree *tree, guint32 offset);
+static gint dissect_ssl3_hnd_hello_ext_npn(tvbuff_t *tvb,
+ proto_tree *tree, guint32 offset, guint32 ext_len);
+
+static gint dissect_ssl3_hnd_hello_ext_reneg_info(tvbuff_t *tvb,
+ proto_tree *tree, guint32 offset, guint32 ext_len);
+
+static gint dissect_ssl3_hnd_hello_ext_server_name(tvbuff_t *tvb,
+ proto_tree *tree, guint32 offset, guint32 ext_len);
+
static void dissect_ssl3_hnd_cli_hello(tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree,
guint32 offset, guint32 length,
@@ -485,6 +509,10 @@ static void dissect_ssl3_hnd_srv_hello(tvbuff_t *tvb,
guint32 offset, guint32 length,
SslDecryptSession* ssl);
+static void dissect_ssl3_hnd_new_ses_ticket(tvbuff_t *tvb,
+ proto_tree *tree,
+ guint32 offset, guint32 length);
+
static void dissect_ssl3_hnd_cert(tvbuff_t *tvb,
proto_tree *tree, guint32 offset, packet_info *pinfo);
@@ -1292,7 +1320,7 @@ process_ssl_payload(tvbuff_t *tvb, volatile int offset, packet_info *pinfo,
}
}
-void
+static void
dissect_ssl_payload(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree, SslAssociation* association)
{
gboolean save_fragmented;
@@ -1946,7 +1974,7 @@ dissect_ssl3_handshake(tvbuff_t *tvb, packet_info *pinfo,
break;
case SSL_HND_NEWSESSION_TICKET:
- /* Content depends on implementation, so nothing to do! */
+ dissect_ssl3_hnd_new_ses_ticket(tvb, ssl_hand_tree, offset, length);
break;
case SSL_HND_CERTIFICATE:
@@ -2349,9 +2377,19 @@ dissect_ssl3_hnd_hello_ext(tvbuff_t *tvb,
case SSL_HND_HELLO_EXT_EC_POINT_FORMATS:
offset = dissect_ssl3_hnd_hello_ext_ec_point_formats(tvb, ext_tree, offset);
break;
+ case SSL_HND_HELLO_EXT_NPN:
+ offset = dissect_ssl3_hnd_hello_ext_npn(tvb, ext_tree, offset, ext_len);
+ break;
+ case SSL_HND_HELLO_EXT_RENEG_INFO:
+ offset = dissect_ssl3_hnd_hello_ext_reneg_info(tvb, ext_tree, offset, ext_len);
+ break;
+ case SSL_HND_HELLO_EXT_SERVER_NAME:
+ offset = dissect_ssl3_hnd_hello_ext_server_name(tvb, ext_tree, offset, ext_len);
+ break;
case SSL_HND_HELLO_EXT_HEARTBEAT:
proto_tree_add_item(ext_tree, hf_ssl_heartbeat_extension_mode,
tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += ext_len;
break;
default:
proto_tree_add_bytes_format(ext_tree, hf_ssl_handshake_extension_data,
@@ -2369,6 +2407,110 @@ dissect_ssl3_hnd_hello_ext(tvbuff_t *tvb,
}
static gint
+dissect_ssl3_hnd_hello_ext_npn(tvbuff_t *tvb,
+ proto_tree *tree, guint32 offset, guint32 ext_len)
+{
+ guint8 npn_length;
+ proto_tree *npn_tree, *ti;
+
+ if (ext_len == 0) {
+ return offset;
+ }
+
+ ti = proto_tree_add_text(tree, tvb, offset, ext_len, "Next Protocol Negotiation");
+ npn_tree = proto_item_add_subtree(ti, ett_ssl_extension_npn);
+
+ while (ext_len > 0) {
+ npn_length = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(npn_tree, hf_ssl_handshake_extension_npn_str_len,
+ tvb, offset, 1, ENC_NA);
+ offset++;
+ ext_len--;
+
+ if (npn_length > 0) {
+ tvb_ensure_bytes_exist(tvb, offset, npn_length);
+ proto_tree_add_item(npn_tree, hf_ssl_handshake_extension_npn_str,
+ tvb, offset, npn_length, ENC_NA);
+ offset += npn_length;
+ ext_len -= npn_length;
+ }
+ }
+
+ return offset;
+}
+
+static gint
+dissect_ssl3_hnd_hello_ext_reneg_info(tvbuff_t *tvb,
+ proto_tree *tree, guint32 offset, guint32 ext_len)
+{
+ guint8 reneg_info_length;
+ proto_tree *reneg_info_tree, *ti;
+
+ if (ext_len == 0) {
+ return offset;
+ }
+
+ ti = proto_tree_add_text(tree, tvb, offset, ext_len, "Renegotiation Info extension");
+ reneg_info_tree = proto_item_add_subtree(ti, ett_ssl_extension_reneg_info);
+
+ reneg_info_length = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(reneg_info_tree, hf_ssl_handshake_extension_reneg_info_len,
+ tvb, offset, 1, ENC_NA);
+ offset++;
+
+ if (reneg_info_length > 0) {
+ tvb_ensure_bytes_exist(tvb, offset, reneg_info_length);
+ proto_tree_add_text(reneg_info_tree, tvb, offset, reneg_info_length, "Renegotiation Info");
+ offset += reneg_info_length;
+ }
+
+ return offset;
+}
+
+static gint
+dissect_ssl3_hnd_hello_ext_server_name(tvbuff_t *tvb,
+ proto_tree *tree, guint32 offset, guint32 ext_len)
+{
+ guint8 server_name_length;
+ proto_tree *server_name_tree, *ti;
+
+
+ if (ext_len == 0) {
+ return offset;
+ }
+
+ ti = proto_tree_add_text(tree, tvb, offset, ext_len, "Server Name Indication extension");
+ server_name_tree = proto_item_add_subtree(ti, ett_ssl_extension_server_name);
+
+ proto_tree_add_item(server_name_tree, hf_ssl_handshake_extension_server_name_list_len,
+ tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ ext_len -= 2;
+
+ while (ext_len > 0) {
+ proto_tree_add_item(server_name_tree, hf_ssl_handshake_extension_server_name_type,
+ tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ ext_len -= 2;
+
+ server_name_length = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(server_name_tree, hf_ssl_handshake_extension_server_name_len,
+ tvb, offset, 1, ENC_NA);
+ offset++;
+ ext_len--;
+
+ if (server_name_length > 0) {
+ tvb_ensure_bytes_exist(tvb, offset, server_name_length);
+ proto_tree_add_item(server_name_tree, hf_ssl_handshake_extension_server_name,
+ tvb, offset, server_name_length, ENC_NA);
+ offset += server_name_length;
+ ext_len -= server_name_length;
+ }
+ }
+ return offset;
+}
+
+static gint
dissect_ssl3_hnd_hello_ext_elliptic_curves(tvbuff_t *tvb,
proto_tree *tree, guint32 offset)
{
@@ -2645,6 +2787,34 @@ no_cipher:
}
static void
+dissect_ssl3_hnd_new_ses_ticket(tvbuff_t *tvb, proto_tree *tree,
+ guint32 offset, guint32 length)
+{
+ guint nst_len;
+ proto_item *ti;
+ proto_tree *subtree;
+
+
+ nst_len = tvb_get_ntohs(tvb, offset+4);
+ if (6 + nst_len != length) {
+ return;
+ }
+
+ ti = proto_tree_add_text(tree, tvb, offset, 6+nst_len, "TLS Session Ticket");
+ subtree = proto_item_add_subtree(ti, ett_ssl_new_ses_ticket);
+
+ proto_tree_add_item(subtree, hf_ssl_handshake_session_ticket_lifetime_hint,
+ tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_uint(subtree, hf_ssl_handshake_session_ticket_len,
+ tvb, offset, 2, nst_len);
+ /* Content depends on implementation, so just show data! */
+ proto_tree_add_item(subtree, hf_ssl_handshake_session_ticket,
+ tvb, offset + 2, nst_len, ENC_NA);
+}
+
+static void
dissect_ssl3_hnd_cert(tvbuff_t *tvb,
proto_tree *tree, guint32 offset, packet_info *pinfo)
{
@@ -2903,7 +3073,7 @@ dissect_ssl3_hnd_cert_req(tvbuff_t *tvb,
}
static void
-dissect_ssl3_hnd_srv_keyex_ecdh(tvbuff_t *tvb, proto_tree *tree,
+dissect_ssl3_hnd_srv_keyex_ecdh(tvbuff_t *tvb, proto_tree *tree,
guint32 offset, guint32 length)
{
gint curve_type, curve_type_offset;
@@ -2913,9 +3083,9 @@ dissect_ssl3_hnd_srv_keyex_ecdh(tvbuff_t *tvb, proto_tree *tree,
proto_item *ti_ecdh;
proto_tree *ssl_ecdh_tree;
guint32 orig_offset;
-
+
orig_offset = offset;
-
+
curve_type_offset = offset;
curve_type = tvb_get_guint8(tvb, offset);
if (curve_type != 3)
@@ -2925,7 +3095,7 @@ dissect_ssl3_hnd_srv_keyex_ecdh(tvbuff_t *tvb, proto_tree *tree,
return;
}
- named_curve_offset = offset;
+ named_curve_offset = offset;
named_curve = tvb_get_ntohs(tvb, offset);
offset += 2;
if ((offset - orig_offset) > length) {
@@ -2938,7 +3108,7 @@ dissect_ssl3_hnd_srv_keyex_ecdh(tvbuff_t *tvb, proto_tree *tree,
return;
}
offset += 1 + point_len;
-
+
sig_len_offset = offset;
sig_len = tvb_get_ntohs(tvb, offset);
offset += 2 + sig_len;
@@ -2946,65 +3116,65 @@ dissect_ssl3_hnd_srv_keyex_ecdh(tvbuff_t *tvb, proto_tree *tree,
/* Lengths don't line up (wasn't what we expected?) */
return;
}
-
- ti_ecdh = proto_tree_add_text(tree, tvb, orig_offset,
+
+ ti_ecdh = proto_tree_add_text(tree, tvb, orig_offset,
(offset - orig_offset), "EC Diffie-Hellman Server Params");
ssl_ecdh_tree = proto_item_add_subtree(ti_ecdh, ett_ssl_keyex_params);
-
+
/* curve_type */
proto_tree_add_uint(ssl_ecdh_tree, hf_ssl_handshake_server_keyex_curve_type,
tvb, curve_type_offset, 1, curve_type);
-
+
/* named_curve */
proto_tree_add_uint(ssl_ecdh_tree, hf_ssl_handshake_server_keyex_named_curve,
tvb, named_curve_offset, 2, named_curve);
-
+
/* point */
proto_tree_add_uint(ssl_ecdh_tree, hf_ssl_handshake_server_keyex_point_len,
tvb, point_len_offset, 1, point_len);
proto_tree_add_item(ssl_ecdh_tree, hf_ssl_handshake_server_keyex_point,
tvb, point_len_offset+1, point_len, ENC_NA);
-
+
/* Sig */
proto_tree_add_uint(ssl_ecdh_tree, hf_ssl_handshake_server_keyex_sig_len,
tvb, sig_len_offset, 2, sig_len);
proto_tree_add_item(ssl_ecdh_tree, hf_ssl_handshake_server_keyex_sig,
tvb, sig_len_offset + 2, sig_len, ENC_NA);
-
+
}
static void
-dissect_ssl3_hnd_cli_keyex_ecdh(tvbuff_t *tvb, proto_tree *tree,
+dissect_ssl3_hnd_cli_keyex_ecdh(tvbuff_t *tvb, proto_tree *tree,
guint32 offset, guint32 length)
{
gint point_len, point_len_offset;
proto_item *ti_ecdh;
proto_tree *ssl_ecdh_tree;
guint32 orig_offset;
-
+
orig_offset = offset;
-
+
point_len_offset = offset;
point_len = tvb_get_guint8(tvb, offset);
if ((offset + point_len - orig_offset) > length) {
return;
}
offset += 1 + point_len;
-
- ti_ecdh = proto_tree_add_text(tree, tvb, orig_offset,
+
+ ti_ecdh = proto_tree_add_text(tree, tvb, orig_offset,
(offset - orig_offset), "EC Diffie-Hellman Client Params");
ssl_ecdh_tree = proto_item_add_subtree(ti_ecdh, ett_ssl_keyex_params);
-
+
/* point */
proto_tree_add_uint(ssl_ecdh_tree, hf_ssl_handshake_client_keyex_point_len,
tvb, point_len_offset, 1, point_len);
proto_tree_add_item(ssl_ecdh_tree, hf_ssl_handshake_client_keyex_point,
tvb, point_len_offset+1, point_len, ENC_NA);
-
+
}
static void
-dissect_ssl3_hnd_srv_keyex_dh(tvbuff_t *tvb, proto_tree *tree,
+dissect_ssl3_hnd_srv_keyex_dh(tvbuff_t *tvb, proto_tree *tree,
guint32 offset, guint32 length)
{
gint p_len, p_len_offset;
@@ -3014,30 +3184,30 @@ dissect_ssl3_hnd_srv_keyex_dh(tvbuff_t *tvb, proto_tree *tree,
proto_item *ti_dh;
proto_tree *ssl_dh_tree;
guint32 orig_offset;
-
+
orig_offset = offset;
-
+
p_len_offset = offset;
p_len = tvb_get_ntohs(tvb, offset);
offset += 2 + p_len;
if ((offset - orig_offset) > length) {
return;
}
-
+
g_len_offset = offset;
g_len = tvb_get_ntohs(tvb, offset);
offset += 2 + g_len;
if ((offset - orig_offset) > length) {
return;
}
-
+
ys_len_offset = offset;
ys_len = tvb_get_ntohs(tvb, offset);
offset += 2 + ys_len;
if ((offset - orig_offset) > length) {
return;
}
-
+
sig_len_offset = offset;
sig_len = tvb_get_ntohs(tvb, offset);
offset += 2 + sig_len;
@@ -3045,35 +3215,35 @@ dissect_ssl3_hnd_srv_keyex_dh(tvbuff_t *tvb, proto_tree *tree,
/* Lengths don't line up (wasn't what we expected?) */
return;
}
-
- ti_dh = proto_tree_add_text(tree, tvb, orig_offset,
+
+ ti_dh = proto_tree_add_text(tree, tvb, orig_offset,
(offset - orig_offset), "Diffie-Hellman Server Params");
ssl_dh_tree = proto_item_add_subtree(ti_dh, ett_ssl_keyex_params);
-
+
/* p */
proto_tree_add_uint(ssl_dh_tree, hf_ssl_handshake_server_keyex_p_len,
tvb, p_len_offset, 2, p_len);
proto_tree_add_item(ssl_dh_tree, hf_ssl_handshake_server_keyex_p,
tvb, p_len_offset + 2, p_len, ENC_NA);
-
+
/* g */
proto_tree_add_uint(ssl_dh_tree, hf_ssl_handshake_server_keyex_g_len,
tvb, g_len_offset, 2, g_len);
proto_tree_add_item(ssl_dh_tree, hf_ssl_handshake_server_keyex_g,
tvb, g_len_offset + 2, g_len, ENC_NA);
-
+
/* Ys */
proto_tree_add_uint(ssl_dh_tree, hf_ssl_handshake_server_keyex_ys_len,
tvb, ys_len_offset, 2, ys_len);
proto_tree_add_item(ssl_dh_tree, hf_ssl_handshake_server_keyex_ys,
tvb, ys_len_offset + 2, ys_len, ENC_NA);
-
+
/* Sig */
proto_tree_add_uint(ssl_dh_tree, hf_ssl_handshake_server_keyex_sig_len,
tvb, sig_len_offset, 2, sig_len);
proto_tree_add_item(ssl_dh_tree, hf_ssl_handshake_server_keyex_sig,
tvb, sig_len_offset + 2, sig_len, ENC_NA);
-
+
}
/* Only used in RSA-EXPORT cipher suites */
@@ -3145,27 +3315,27 @@ dissect_ssl3_hnd_cli_keyex_dh(tvbuff_t *tvb, proto_tree *tree,
proto_item *ti_dh;
proto_tree *ssl_dh_tree;
guint32 orig_offset;
-
+
orig_offset = offset;
-
+
yc_len_offset = offset;
yc_len = tvb_get_ntohs(tvb, offset);
offset += 2 + yc_len;
if ((offset - orig_offset) != length) {
return;
}
-
- ti_dh = proto_tree_add_text(tree, tvb, orig_offset,
+
+ ti_dh = proto_tree_add_text(tree, tvb, orig_offset,
(offset - orig_offset), "Diffie-Hellman Client Params");
ssl_dh_tree = proto_item_add_subtree(ti_dh, ett_ssl_keyex_params);
-
+
/* encrypted PreMaster secret */
proto_tree_add_uint(ssl_dh_tree, hf_ssl_handshake_client_keyex_yc_len,
tvb, yc_len_offset, 2, yc_len);
proto_tree_add_item(ssl_dh_tree, hf_ssl_handshake_client_keyex_yc,
tvb, yc_len_offset + 2, yc_len, ENC_NA);
}
-
+
static void
dissect_ssl3_hnd_cli_keyex_rsa(tvbuff_t *tvb, proto_tree *tree,
guint32 offset, guint32 length)
@@ -4962,6 +5132,61 @@ proto_register_ssl(void)
FT_UINT8, BASE_DEC, VALS(ssl_extension_ec_point_formats), 0x0,
"Elliptic curves point format", HFILL }
},
+ { &hf_ssl_handshake_extension_npn_len,
+ { "NPN extension length", "ssl.handshake.extensions_npn_length",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Length of NPN extension", HFILL }
+ },
+ { &hf_ssl_handshake_extension_npn_str_len,
+ { "Protocol string length", "ssl.handshake.extensions_npn_str_len",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Length of next protocol string", HFILL }
+ },
+ { &hf_ssl_handshake_extension_npn_str,
+ { "Next Protocol", "ssl.handshake.extensions_npn",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_ssl_handshake_extension_reneg_info_len,
+ { "Renegotiation info extension length", "ssl.handshake.extensions_reneg_info_len",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_ssl_handshake_extension_server_name_list_len,
+ { "Server Name list length", "ssl.handshake.extensions_server_name_list_len",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Length of server name list", HFILL }
+ },
+ { &hf_ssl_handshake_extension_server_name_len,
+ { "Server Name length", "ssl.handshake.extensions_server_name_len",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Length of server name string", HFILL }
+ },
+ { &hf_ssl_handshake_extension_server_name_type,
+ { "Server Name Type", "ssl.handshake.extensions_server_name_type",
+ FT_UINT16, BASE_DEC, VALS(tls_hello_ext_server_name_type_vs), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_ssl_handshake_extension_server_name,
+ { "Server Name", "ssl.handshake.extensions_server_name",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_ssl_handshake_session_ticket_lifetime_hint,
+ { "Session Ticket Lifetime Hint", "ssl.handshake.session_ticket_lifetime_hint",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "New TLS Session Ticket Lifetime Hint", HFILL }
+ },
+ { &hf_ssl_handshake_session_ticket_len,
+ { "Session Ticket Length", "ssl.handshake.session_ticket_length",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "New TLS Session Ticket Length", HFILL }
+ },
+ { &hf_ssl_handshake_session_ticket,
+ { "Session Ticket", "ssl.handshake.session_ticket",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "New TLS Session Ticket", HFILL }
+ },
{ &hf_ssl_handshake_certificates_len,
{ "Certificates Length", "ssl.handshake.certificates_length",
FT_UINT24, BASE_DEC, NULL, 0x0,
@@ -5402,12 +5627,16 @@ proto_register_ssl(void)
&ett_ssl_extension,
&ett_ssl_extension_curves,
&ett_ssl_extension_curves_point_formats,
+ &ett_ssl_extension_npn,
+ &ett_ssl_extension_reneg_info,
+ &ett_ssl_extension_server_name,
&ett_ssl_certs,
&ett_ssl_cert_types,
&ett_ssl_sig_hash_algs,
&ett_ssl_sig_hash_alg,
&ett_ssl_dnames,
&ett_ssl_random,
+ &ett_ssl_new_ses_ticket,
&ett_ssl_keyex_params,
&ett_ssl_cert_status,
&ett_ssl_ocsp_resp,
@@ -5461,15 +5690,15 @@ proto_register_ssl(void)
"A table of RSA keys for SSL decryption",
ssldecrypt_uat);
- prefs_register_string_preference(ssl_module, "debug_file", "SSL debug file",
+ prefs_register_filename_preference(ssl_module, "debug_file", "SSL debug file",
"Redirect SSL debug to file name; leave empty to disable debugging, "
"or use \"" SSL_DEBUG_USE_STDERR "\" to redirect output to stderr\n",
- (const gchar **)&ssl_debug_file_name);
+ &ssl_debug_file_name);
prefs_register_string_preference(ssl_module, "keys_list", "RSA keys list (deprecated)",
"Semicolon-separated list of private RSA keys used for SSL decryption. "
"Used by versions of Wireshark prior to 1.6",
- (const gchar **)&ssl_keys_list);
+ &ssl_keys_list);
#endif
prefs_register_bool_preference(ssl_module,
@@ -5491,9 +5720,9 @@ proto_register_ssl(void)
#ifdef HAVE_LIBGNUTLS
prefs_register_string_preference(ssl_module, "psk", "Pre-Shared-Key",
"Pre-Shared-Key as HEX string, should be 0 to 16 bytes",
- (const gchar **)&ssl_psk);
+ &ssl_psk);
- prefs_register_string_preference(ssl_module, "keylog_file", "(Pre)-Master-Secret log filename",
+ prefs_register_filename_preference(ssl_module, "keylog_file", "(Pre)-Master-Secret log filename",
"The filename of a file which contains a list of \n"
"(pre-)master secrets in one of the following formats:\n"
"\n"
@@ -5507,7 +5736,7 @@ proto_register_ssl(void)
"<MS> = The Master-Secret (MS)\n"
"\n"
"(All fields are in hex notation)",
- (const gchar **)&ssl_keylog_filename);
+ &ssl_keylog_filename);
#endif
}
diff --git a/epan/dissectors/packet-sync.c b/epan/dissectors/packet-sync.c
new file mode 100644
index 0000000000..959af49dc5
--- /dev/null
+++ b/epan/dissectors/packet-sync.c
@@ -0,0 +1,309 @@
+/* packet-sync.c
+ * Routines for MBMS synchronisation protocol dissection
+ * Copyright 2012, David Wei <davidwei@lavabit.com>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+
+#define TYPE_0_LEN 17
+#define TYPE_1_LEN 11
+#define TYPE_2_LEN 12
+#define TYPE_3_LEN 19
+
+/* Initialize the protocol and registered fields */
+static int proto_sync = -1;
+static int hf_sync_type = -1;
+static int hf_sync_spare4 = -1;
+static int hf_sync_timestamp = -1;
+static int hf_sync_packet_nr = -1;
+static int hf_sync_elapsed_octet_ctr = -1;
+static int hf_sync_total_nr_of_packet = -1;
+static int hf_sync_total_nr_of_octet = -1;
+static int hf_sync_header_crc = -1;
+static int hf_sync_payload_crc = -1;
+static int hf_sync_length_of_packet = -1;
+
+/* Initialize the subtree pointers */
+static gint ett_sync = -1;
+
+static dissector_handle_t sync_handle;
+static dissector_handle_t ip_handle;
+
+static const value_string sync_type_vals[] = {
+ { 0, "Synchronisation frame without payload" },
+ { 1, "User data with synchronisation frame for uncompressed headers" },
+ { 2, "User data with synchronisation frame for compressed headers" },
+ { 3, "Synchronisation frame with Length of Packets" },
+ /* 4-15 reserved for future PDU type extensions */
+ { 0, NULL}
+};
+
+static int
+dissect_sync(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ proto_item *ti;
+ proto_tree *sync_tree;
+ guint8 type, spare;
+ guint16 packet_nr, packet_len1, packet_len2;
+ guint32 timestamp, total_nr_of_packet;
+ int offset = 0;
+ tvbuff_t *next_tvb;
+
+ type = tvb_get_guint8(tvb, offset) >> 4;
+ spare = tvb_get_guint8(tvb, offset) & 0x0F;
+
+ /* Heuristics to check if packet is really MBMS sync */
+#if 0
+ if ( type > 3 )
+ return 0;
+
+ if ( type == 0 && tvb_length(tvb) < 18) {
+ return 0;
+ } else if ( type == 1 && tvb_length(tvb) < 11 ) {
+ return 0;
+ } else if ( type == 3 && tvb_length(tvb) < 19 ) {
+ return 0;
+ }
+
+ if ( (type != 2) && (spare != 0) )
+ return 0;
+#endif
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "SYNC");
+ col_set_str(pinfo->cinfo, COL_INFO, "MBMS synchronisation protocol");
+
+ /* Ugly, but necessary to get the correct length for type 3 */
+ packet_nr = tvb_get_ntohs(tvb, offset+3);
+
+ if (tree) {
+ /* The length varies depending on PDU type */
+ switch (type) {
+ case 0:
+ ti = proto_tree_add_item(tree, proto_sync, tvb, 0, TYPE_0_LEN, ENC_NA);
+ break;
+ case 1:
+ ti = proto_tree_add_item(tree, proto_sync, tvb, 0, TYPE_1_LEN, ENC_NA);
+ break;
+ case 2:
+ ti = proto_tree_add_item(tree, proto_sync, tvb, 0, TYPE_2_LEN + (spare & 0x01 ? 40 : 20), ENC_NA);
+ break;
+ case 3:
+ ti = proto_tree_add_item(tree, proto_sync, tvb, 0,
+ TYPE_3_LEN + (gint16)(packet_nr % 2 == 0 ?
+ 1.5*packet_nr : 1.5*(packet_nr-1)+2),
+ ENC_NA);
+ break;
+ default:
+ ti = proto_tree_add_item(tree, proto_sync, tvb, 0, -1, ENC_NA);
+ break;
+ }
+
+ sync_tree = proto_item_add_subtree(ti, ett_sync);
+
+ /* Octet 1 - PDU Type */
+ proto_tree_add_item(sync_tree, hf_sync_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(sync_tree, hf_sync_spare4, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+
+ /* Octet 2 - Time Stamp */
+ timestamp = tvb_get_ntohs(tvb, offset) * 10;
+ proto_tree_add_string_format(sync_tree, hf_sync_timestamp, tvb, offset, 2, "", "Timestamp: %u ms", timestamp);
+ offset += 2;
+
+ /* Octet 4 - Packet Number */
+ proto_tree_add_string_format(sync_tree, hf_sync_packet_nr, tvb, offset, 2, "", "Packet Number: %hu", packet_nr+1);
+ offset += 2;
+
+ /* Octet 6 - Elapsed Octet Counter */
+ proto_tree_add_item(sync_tree, hf_sync_elapsed_octet_ctr, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ switch (type) {
+ case 0:
+ /* SYNC PDU Type 0 */
+ proto_tree_add_item(sync_tree, hf_sync_total_nr_of_packet, tvb, offset, 3, ENC_BIG_ENDIAN);
+ offset += 3;
+ proto_tree_add_item(sync_tree, hf_sync_total_nr_of_octet, tvb, offset, 5, ENC_BIG_ENDIAN);
+ offset += 5;
+ proto_tree_add_item(sync_tree, hf_sync_header_crc, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ break;
+ case 1:
+ /* SYNC PDU Type 1 */
+ /* XXX - Calculate the CRC and check against this value? */
+ proto_tree_add_item(sync_tree, hf_sync_header_crc, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(sync_tree, hf_sync_payload_crc, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ /* XXX - The payload may not always be present? */
+ next_tvb = tvb_new_subset(tvb, offset, -1, -1);
+ /* XXX - The payload may not always be IP? */
+ call_dissector(ip_handle, next_tvb, pinfo, tree);
+ break;
+ case 2:
+ /* SYNC PDU Type 2 */
+ proto_tree_add_text(tree, tvb, offset, -1, "SYNC PDU type 2 unsupported");
+ break;
+ case 3:
+ /* SYNC PDU Type 3 */
+ total_nr_of_packet = tvb_get_ntoh24(tvb, offset);
+ proto_tree_add_item(sync_tree, hf_sync_total_nr_of_packet, tvb, offset, 3, ENC_BIG_ENDIAN);
+ offset += 3;
+ proto_tree_add_item(sync_tree, hf_sync_total_nr_of_octet, tvb, offset, 5, ENC_BIG_ENDIAN);
+ offset += 5;
+ proto_tree_add_item(sync_tree, hf_sync_header_crc, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(sync_tree, hf_sync_payload_crc, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ if (offset < (gint)tvb_reported_length(tvb)) {
+ int i;
+
+ if (total_nr_of_packet != 0 && packet_nr % 2 == 0) {
+ /* Even number of packets */
+ for (i = 1; i < packet_nr; i+=2, offset+=3) {
+ packet_len1 = tvb_get_bits16(tvb, offset*8, 12, ENC_BIG_ENDIAN);
+ packet_len2 = tvb_get_bits16(tvb, offset*8+12, 12, ENC_BIG_ENDIAN);
+ proto_tree_add_string_format(sync_tree, hf_sync_length_of_packet, tvb, offset, 2, "", "Length of Packet %u : %hu", i, packet_len1);
+ proto_tree_add_string_format(sync_tree, hf_sync_length_of_packet, tvb, offset+1, 2, "", "Length of Packet %u : %hu", i+1, packet_len2);
+ }
+ } else {
+ /* Odd number of packets */
+ for (i = 1; i < packet_nr; i+=2, offset+=3) {
+ packet_len1 = tvb_get_bits16(tvb, offset*8, 12, ENC_BIG_ENDIAN);
+ packet_len2 = tvb_get_bits16(tvb, offset*8+12, 12, ENC_BIG_ENDIAN);
+ proto_tree_add_string_format(sync_tree, hf_sync_length_of_packet, tvb, offset, 2, "", "Length of Packet %u : %hu", i, packet_len1);
+ proto_tree_add_string_format(sync_tree, hf_sync_length_of_packet, tvb, offset+1, 2, "", "Length of Packet %u : %hu", i+1, packet_len2);
+ }
+ packet_len1 = tvb_get_bits16(tvb, offset*8, 12, ENC_BIG_ENDIAN);
+ proto_tree_add_string_format(sync_tree, hf_sync_length_of_packet, tvb, offset, 2, "", "Length of Packet %u : %hu", packet_nr, packet_len1);
+ offset++;
+ proto_tree_add_item(sync_tree, hf_sync_spare4, tvb, offset, 1, ENC_BIG_ENDIAN);
+ }
+
+ }
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, offset, -1, "Unknown SYNC PDU type");
+ break;
+ }
+ }
+
+ return tvb_length(tvb);
+
+}
+
+void
+proto_register_sync(void)
+{
+ static hf_register_info hf_sync[] = {
+ { &hf_sync_type,
+ { "PDU Type", "sync.type",
+ FT_UINT8, BASE_DEC, VALS(sync_type_vals), 0xF0,
+ NULL, HFILL }
+ },
+ { &hf_sync_spare4,
+ { "Spare", "sync.spare",
+ FT_UINT8, BASE_DEC, NULL, 0x0F,
+ NULL, HFILL }
+ },
+ { &hf_sync_timestamp,
+ { "Timestamp", "sync.timestamp",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "Relative time value for the starting time of a synchronisation sequence within the synchronisation period.", HFILL }
+ },
+ { &hf_sync_packet_nr,
+ { "Packet Number", "sync.packet_nr",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "Number of elapsed SYNC PDUs cumulatively within the synchronisation sequence.", HFILL }
+ },
+ { &hf_sync_elapsed_octet_ctr,
+ { "Elapsed Octet Counter", "sync.elapsed_octet_ctr",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of elapsed cumulative octets cumulatively within one synchronisation sequence.", HFILL }
+ },
+ { &hf_sync_total_nr_of_packet,
+ { "Total Number of Packet", "sync.total_nr_of_packet",
+ FT_UINT24, BASE_DEC, NULL, 0x0,
+ "Cumulatively the number of the packets for the MBMS service within one synchronisation period.", HFILL }
+ },
+ { &hf_sync_total_nr_of_octet,
+ { "Total Number of Octet", "sync.total_nr_of_octet",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ "Cumulatively the number of the octets for the MBMS service within one synchronisation period.", HFILL }
+ },
+ { &hf_sync_header_crc,
+ { "Header CRC", "sync.header_crc",
+ FT_UINT8, BASE_HEX, NULL, 0xFC,
+ NULL, HFILL }
+ },
+ { &hf_sync_payload_crc,
+ { "Payload CRC", "sync.payload_crc",
+ FT_UINT16, BASE_HEX, NULL, 0x3FF,
+ NULL, HFILL }
+ },
+ { &hf_sync_length_of_packet,
+ { "Length of Packet", "sync.length_of_packet",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ };
+
+ static gint *ett_sync_array[] = {
+ &ett_sync
+ };
+
+ proto_sync = proto_register_protocol("MBMS synchronisation protocol", "SYNC", "sync");
+
+ proto_register_field_array(proto_sync, hf_sync, array_length(hf_sync));
+ proto_register_subtree_array(ett_sync_array, array_length(ett_sync_array));
+
+ new_register_dissector("sync", dissect_sync, proto_sync);
+}
+
+void
+proto_reg_handoff_sync(void)
+{
+ sync_handle = new_create_dissector_handle(dissect_sync, proto_sync);
+ ip_handle = find_dissector("ip");
+
+ dissector_add_handle("udp.port", sync_handle);
+}
+
+/*
+ * Editor modelines - http://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vi: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
+ */
diff --git a/epan/dissectors/packet-synergy.c b/epan/dissectors/packet-synergy.c
index 84a408f87d..4dac3484dc 100644
--- a/epan/dissectors/packet-synergy.c
+++ b/epan/dissectors/packet-synergy.c
@@ -28,7 +28,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
#include <string.h>
#include <glib.h>
diff --git a/epan/dissectors/packet-syslog.c b/epan/dissectors/packet-syslog.c
index a56a7c9844..84636086a0 100644
--- a/epan/dissectors/packet-syslog.c
+++ b/epan/dissectors/packet-syslog.c
@@ -32,11 +32,11 @@
# include "config.h"
#endif
-#include <stdlib.h>
+#include <string.h>
#include <ctype.h>
-#include <string.h>
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/strutil.h>
@@ -357,6 +357,7 @@ proto_reg_handoff_syslog(void)
syslog_handle = create_dissector_handle(dissect_syslog, proto_syslog);
dissector_add_uint("udp.port", UDP_PORT_SYSLOG, syslog_handle);
+ dissector_add_handle("tcp.port", syslog_handle);
/* Find the mtp3 dissector */
mtp_handle = find_dissector("mtp3");
diff --git a/epan/dissectors/packet-t124.c b/epan/dissectors/packet-t124.c
index e698ec5cb8..4617af2f73 100644
--- a/epan/dissectors/packet-t124.c
+++ b/epan/dissectors/packet-t124.c
@@ -4010,7 +4010,7 @@ void proto_register_t124(void) {
proto_register_subtree_array(ett, array_length(ett));
t124_ns_dissector_table = register_dissector_table("t124.ns", "T.124 H.221 Non Standard Dissectors", FT_STRING, BASE_NONE);
- t124_sd_dissector_table = register_dissector_table("t124.sd", "T.124 H.221 Send Data Dissectors", FT_UINT32, BASE_NONE);
+ t124_sd_dissector_table = register_dissector_table("t124.sd", "T.124 H.221 Send Data Dissectors", FT_UINT32, BASE_HEX);
new_register_dissector("t124", dissect_t124_new, proto_t124);
diff --git a/epan/dissectors/packet-tango.c b/epan/dissectors/packet-tango.c
new file mode 100644
index 0000000000..7609c704d8
--- /dev/null
+++ b/epan/dissectors/packet-tango.c
@@ -0,0 +1,4394 @@
+/* packet-tango.c
+ *
+ * $Id$
+ *
+ * Routines for IDL dissection
+ *
+ * Autogenerated from idl2wrs
+ * Copyright 2001 Frank Singleton <frank.singleton@ericsson.com>
+ */
+
+
+/*
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs
+ * Copyright 1999 - 2006 Gerald Combs
+ */
+
+static int hf_operationrequest = -1;/* Request_Operation field */
+
+
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <gmodule.h>
+
+#include <string.h>
+#include <glib.h>
+#include <epan/packet.h>
+#include <epan/proto.h>
+#include <epan/dissectors/packet-giop.h>
+
+#ifdef _MSC_VER
+/* disable warning: "unreference local variable" */
+#pragma warning(disable:4101)
+#endif
+
+
+static proto_tree *start_dissecting(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ptree, int *offset);
+
+
+
+/* Struct prototype declaration Start */
+
+
+/* Struct = IDL:Tango/DevVarLongStringArray:1.0 */
+
+static void decode_Tango_DevVarLongStringArray_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:Tango/DevVarDoubleStringArray:1.0 */
+
+static void decode_Tango_DevVarDoubleStringArray_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:Tango/TimeVal:1.0 */
+
+static void decode_Tango_TimeVal_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:Tango/DevCmdInfo:1.0 */
+
+static void decode_Tango_DevCmdInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:Tango/DevCmdInfo_2:1.0 */
+
+static void decode_Tango_DevCmdInfo_2_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:Tango/DevError:1.0 */
+
+static void decode_Tango_DevError_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:Tango/NamedDevError:1.0 */
+
+static void decode_Tango_NamedDevError_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:Tango/AttributeConfig:1.0 */
+
+static void decode_Tango_AttributeConfig_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:Tango/AttributeConfig_2:1.0 */
+
+static void decode_Tango_AttributeConfig_2_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:Tango/AttributeValue:1.0 */
+
+static void decode_Tango_AttributeValue_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:Tango/AttributeDim:1.0 */
+
+static void decode_Tango_AttributeDim_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:Tango/AttributeValue_3:1.0 */
+
+static void decode_Tango_AttributeValue_3_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:Tango/ChangeEventProp:1.0 */
+
+static void decode_Tango_ChangeEventProp_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:Tango/PeriodicEventProp:1.0 */
+
+static void decode_Tango_PeriodicEventProp_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:Tango/ArchiveEventProp:1.0 */
+
+static void decode_Tango_ArchiveEventProp_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:Tango/EventProperties:1.0 */
+
+static void decode_Tango_EventProperties_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:Tango/AttributeAlarm:1.0 */
+
+static void decode_Tango_AttributeAlarm_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:Tango/AttributeConfig_3:1.0 */
+
+static void decode_Tango_AttributeConfig_3_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:Tango/DevInfo:1.0 */
+
+static void decode_Tango_DevInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:Tango/DevInfo_3:1.0 */
+
+static void decode_Tango_DevInfo_3_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:Tango/DevCmdHistory:1.0 */
+
+static void decode_Tango_DevCmdHistory_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:Tango/DevAttrHistory:1.0 */
+
+static void decode_Tango_DevAttrHistory_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct = IDL:Tango/DevAttrHistory_3:1.0 */
+
+static void decode_Tango_DevAttrHistory_3_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
+
+
+/* Struct prototype declaration End */
+
+
+/* Union prototype declaration Start */
+
+
+/* Union prototype declaration End */
+
+
+
+/* Initialise the protocol and subtree pointers */
+
+static int proto_tango = -1;
+
+static gint ett_tango = -1;
+
+
+/* Initialise the initial Alignment */
+
+static guint32 boundary = GIOP_HEADER_SIZE; /* initial value */
+
+
+
+/* Initialise the Registered fields */
+
+/* TODO - Use registered fields */
+
+/*
+ * IDL Operations Start
+ */
+
+static const char Tango_Device_command_inout_op[] = "command_inout" ;
+static const char Tango_Device_get_attribute_config_op[] = "get_attribute_config" ;
+static const char Tango_Device_set_attribute_config_op[] = "set_attribute_config" ;
+static const char Tango_Device_read_attributes_op[] = "read_attributes" ;
+static const char Tango_Device_write_attributes_op[] = "write_attributes" ;
+static const char Tango_Device_ping_op[] = "ping" ;
+static const char Tango_Device_black_box_op[] = "black_box" ;
+static const char Tango_Device_info_op[] = "info" ;
+static const char Tango_Device_command_list_query_op[] = "command_list_query" ;
+static const char Tango_Device_command_query_op[] = "command_query" ;
+static const char Tango_Device_2_command_inout_2_op[] = "command_inout_2" ;
+static const char Tango_Device_2_read_attributes_2_op[] = "read_attributes_2" ;
+static const char Tango_Device_2_get_attribute_config_2_op[] = "get_attribute_config_2" ;
+static const char Tango_Device_2_command_list_query_2_op[] = "command_list_query_2" ;
+static const char Tango_Device_2_command_query_2_op[] = "command_query_2" ;
+static const char Tango_Device_2_command_inout_history_2_op[] = "command_inout_history_2" ;
+static const char Tango_Device_2_read_attribute_history_2_op[] = "read_attribute_history_2" ;
+static const char Tango_Device_3_read_attributes_3_op[] = "read_attributes_3" ;
+static const char Tango_Device_3_write_attributes_3_op[] = "write_attributes_3" ;
+static const char Tango_Device_3_read_attribute_history_3_op[] = "read_attribute_history_3" ;
+static const char Tango_Device_3_info_3_op[] = "info_3" ;
+static const char Tango_Device_3_get_attribute_config_3_op[] = "get_attribute_config_3" ;
+static const char Tango_Device_3_set_attribute_config_3_op[] = "set_attribute_config_3" ;
+
+/*
+ * IDL Operations End
+ */
+
+/* Begin Exception (containing members) String Declare */
+
+
+static const char user_exception_Tango_DevFailed[] = "IDL:Tango/DevFailed:1.0" ;
+static const char user_exception_Tango_MultiDevFailed[] = "IDL:Tango/MultiDevFailed:1.0" ;
+
+/* End Exception (containing members) String Declare */
+
+/*
+ * IDL Attributes Start
+ */
+
+static const char get_Tango_Device_name_at[] = "_get_name" ;
+static const char get_Tango_Device_description_at[] = "_get_description" ;
+static const char get_Tango_Device_state_at[] = "_get_state" ;
+static const char get_Tango_Device_status_at[] = "_get_status" ;
+static const char get_Tango_Device_adm_name_at[] = "_get_adm_name" ;
+
+/*
+ * IDL Attributes End
+ */
+
+/*
+ * IDL Enums Start
+ */
+
+/*
+ * Enum = IDL:Tango/AttrQuality:1.0
+ */
+
+static const value_string Tango_AttrQuality[] = {
+
+ { 0, "ATTR_VALID" },
+ { 1, "ATTR_INVALID" },
+ { 2, "ATTR_ALARM" },
+ { 3, "ATTR_CHANGING" },
+ { 4, "ATTR_WARNING" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:Tango/AttrWriteType:1.0
+ */
+
+static const value_string Tango_AttrWriteType[] = {
+
+ { 0, "READ" },
+ { 1, "READ_WITH_WRITE" },
+ { 2, "WRITE" },
+ { 3, "READ_WRITE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:Tango/AttrDataFormat:1.0
+ */
+
+static const value_string Tango_AttrDataFormat[] = {
+
+ { 0, "SCALAR" },
+ { 1, "SPECTRUM" },
+ { 2, "IMAGE" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:Tango/DevSource:1.0
+ */
+
+static const value_string Tango_DevSource[] = {
+
+ { 0, "DEV" },
+ { 1, "CACHE" },
+ { 2, "CACHE_DEV" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:Tango/ErrSeverity:1.0
+ */
+
+static const value_string Tango_ErrSeverity[] = {
+
+ { 0, "WARN" },
+ { 1, "ERR" },
+ { 2, "PANIC" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:Tango/DevState:1.0
+ */
+
+static const value_string Tango_DevState[] = {
+
+ { 0, "ON" },
+ { 1, "OFF" },
+ { 2, "CLOSE" },
+ { 3, "OPEN" },
+ { 4, "INSERT" },
+ { 5, "EXTRACT" },
+ { 6, "MOVING" },
+ { 7, "STANDBY" },
+ { 8, "FAULT" },
+ { 9, "INIT" },
+ { 10, "RUNNING" },
+ { 11, "ALARM" },
+ { 12, "DISABLE" },
+ { 13, "UNKNOWN" },
+ { 0, NULL },
+};
+
+/*
+ * Enum = IDL:Tango/DispLevel:1.0
+ */
+
+static const value_string Tango_DispLevel[] = {
+
+ { 0, "OPERATOR" },
+ { 1, "EXPERT" },
+ { 0, NULL },
+};
+
+/*
+ * IDL Enums End
+ */
+
+/* Begin Exception Helper Functions */
+
+
+/* Exception = IDL:Tango/DevFailed:1.0 */
+
+static void decode_ex_Tango_DevFailed(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_DevFailed_errors;
+ guint32 i_DevFailed_errors;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_DevFailed_errors = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevFailed_errors = %u",u_octet4_loop_DevFailed_errors);
+ }
+
+ for (i_DevFailed_errors=0; i_DevFailed_errors < u_octet4_loop_DevFailed_errors; i_DevFailed_errors++) {
+
+ /* Begin struct "Tango_DevError" */
+
+
+
+ decode_Tango_DevError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_DevError" */
+
+ }
+
+}
+
+/* Exception = IDL:Tango/MultiDevFailed:1.0 */
+
+static void decode_ex_Tango_MultiDevFailed(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_MultiDevFailed_errors;
+ guint32 i_MultiDevFailed_errors;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_MultiDevFailed_errors = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of MultiDevFailed_errors = %u",u_octet4_loop_MultiDevFailed_errors);
+ }
+
+ for (i_MultiDevFailed_errors=0; i_MultiDevFailed_errors < u_octet4_loop_MultiDevFailed_errors; i_MultiDevFailed_errors++) {
+
+ /* Begin struct "Tango_NamedDevError" */
+
+
+
+ decode_Tango_NamedDevError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_NamedDevError" */
+
+ }
+
+}
+
+
+/* End Exception Helper Functions */
+
+/*
+ * Main delegator for exception handling
+ *
+ */
+
+static gboolean decode_user_exception(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *ptree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+ /*gboolean stream_is_big_endian _U_;*/ /* big endianess */
+ proto_tree *tree _U_;
+
+ if (!header->exception_id)
+ return FALSE;
+
+ if (strcmp(header->exception_id, user_exception_Tango_DevFailed) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_Tango_DevFailed(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:Tango/DevFailed:1.0 */
+ return TRUE;
+ }
+
+ if (strcmp(header->exception_id, user_exception_Tango_MultiDevFailed) == 0) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_ex_Tango_MultiDevFailed(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian); /* IDL:Tango/MultiDevFailed:1.0 */
+ return TRUE;
+ }
+
+
+
+ return FALSE; /* user exception not found */
+
+}
+
+/* Begin Attribute Helper Functions */
+
+
+/* Attribute = IDL:Tango/Device/name:1.0 */
+
+static void decode_get_Tango_Device_name_at(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+
+/* Attribute = IDL:Tango/Device/description:1.0 */
+
+static void decode_get_Tango_Device_description_at(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"description (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+
+/* Attribute = IDL:Tango/Device/state:1.0 */
+
+static void decode_get_Tango_Device_state_at(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+
+ /* Operation specific Variable declarations End */
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"state = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_DevState,"Unknown Enum Value"));
+ }
+
+}
+
+
+/* Attribute = IDL:Tango/Device/status:1.0 */
+
+static void decode_get_Tango_Device_status_at(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"status (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+
+/* Attribute = IDL:Tango/Device/adm_name:1.0 */
+
+static void decode_get_Tango_Device_adm_name_at(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"adm_name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+
+/* End Attribute Helper Functions */
+
+/*
+ * IDL:Tango/Device/command_inout:1.0
+ */
+
+static void decode_Tango_Device_command_inout(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"command (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ get_CDR_any(tvb,tree,offset,stream_is_big_endian, boundary, header);
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_any(tvb,tree,offset,stream_is_big_endian, boundary, header);
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:Tango/Device/get_attribute_config:1.0
+ */
+
+static void decode_Tango_Device_get_attribute_config(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_names;
+ guint32 i_names;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_AttributeConfigList;
+ guint32 i_AttributeConfigList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_names = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of names = %u",u_octet4_loop_names);
+ }
+
+ for (i_names=0; i_names < u_octet4_loop_names; i_names++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"names (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_AttributeConfigList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AttributeConfigList = %u",u_octet4_loop_AttributeConfigList);
+ }
+
+ for (i_AttributeConfigList=0; i_AttributeConfigList < u_octet4_loop_AttributeConfigList; i_AttributeConfigList++) {
+
+ /* Begin struct "Tango_AttributeConfig" */
+
+
+
+ decode_Tango_AttributeConfig_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_AttributeConfig" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:Tango/Device/set_attribute_config:1.0
+ */
+
+static void decode_Tango_Device_set_attribute_config(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_new_conf;
+ guint32 i_new_conf;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_new_conf = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of new_conf = %u",u_octet4_loop_new_conf);
+ }
+
+ for (i_new_conf=0; i_new_conf < u_octet4_loop_new_conf; i_new_conf++) {
+
+ /* Begin struct "Tango_AttributeConfig" */
+
+
+
+ decode_Tango_AttributeConfig_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_AttributeConfig" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:Tango/Device/read_attributes:1.0
+ */
+
+static void decode_Tango_Device_read_attributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_names;
+ guint32 i_names;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_AttributeValueList;
+ guint32 i_AttributeValueList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_names = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of names = %u",u_octet4_loop_names);
+ }
+
+ for (i_names=0; i_names < u_octet4_loop_names; i_names++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"names (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_AttributeValueList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AttributeValueList = %u",u_octet4_loop_AttributeValueList);
+ }
+
+ for (i_AttributeValueList=0; i_AttributeValueList < u_octet4_loop_AttributeValueList; i_AttributeValueList++) {
+
+ /* Begin struct "Tango_AttributeValue" */
+
+
+
+ decode_Tango_AttributeValue_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_AttributeValue" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:Tango/Device/write_attributes:1.0
+ */
+
+static void decode_Tango_Device_write_attributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_values;
+ guint32 i_values;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_values = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of values = %u",u_octet4_loop_values);
+ }
+
+ for (i_values=0; i_values < u_octet4_loop_values; i_values++) {
+
+ /* Begin struct "Tango_AttributeValue" */
+
+
+
+ decode_Tango_AttributeValue_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_AttributeValue" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:Tango/Device/ping:1.0
+ */
+
+static void decode_Tango_Device_ping(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:Tango/Device/black_box:1.0
+ */
+
+static void decode_Tango_Device_black_box(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+ guint32 u_octet4_loop_DevVarStringArray;
+ guint32 i_DevVarStringArray;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"n = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_DevVarStringArray = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevVarStringArray = %u",u_octet4_loop_DevVarStringArray);
+ }
+
+ for (i_DevVarStringArray=0; i_DevVarStringArray < u_octet4_loop_DevVarStringArray; i_DevVarStringArray++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevVarStringArray (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:Tango/Device/info:1.0
+ */
+
+static void decode_Tango_Device_info(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "Tango_DevInfo" */
+
+
+
+ decode_Tango_DevInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_DevInfo" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:Tango/Device/command_list_query:1.0
+ */
+
+static void decode_Tango_Device_command_list_query(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_DevCmdInfoList;
+ guint32 i_DevCmdInfoList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_DevCmdInfoList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevCmdInfoList = %u",u_octet4_loop_DevCmdInfoList);
+ }
+
+ for (i_DevCmdInfoList=0; i_DevCmdInfoList < u_octet4_loop_DevCmdInfoList; i_DevCmdInfoList++) {
+
+ /* Begin struct "Tango_DevCmdInfo" */
+
+
+
+ decode_Tango_DevCmdInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_DevCmdInfo" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:Tango/Device/command_query:1.0
+ */
+
+static void decode_Tango_Device_command_query(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"command (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "Tango_DevCmdInfo" */
+
+
+
+ decode_Tango_DevCmdInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_DevCmdInfo" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:Tango/Device_2/command_inout_2:1.0
+ */
+
+static void decode_Tango_Device_2_command_inout_2(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"command (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ get_CDR_any(tvb,tree,offset,stream_is_big_endian, boundary, header);
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"source = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_DevSource,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ get_CDR_any(tvb,tree,offset,stream_is_big_endian, boundary, header);
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:Tango/Device_2/read_attributes_2:1.0
+ */
+
+static void decode_Tango_Device_2_read_attributes_2(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_names;
+ guint32 i_names;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_AttributeValueList;
+ guint32 i_AttributeValueList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_names = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of names = %u",u_octet4_loop_names);
+ }
+
+ for (i_names=0; i_names < u_octet4_loop_names; i_names++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"names (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"source = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_DevSource,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_AttributeValueList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AttributeValueList = %u",u_octet4_loop_AttributeValueList);
+ }
+
+ for (i_AttributeValueList=0; i_AttributeValueList < u_octet4_loop_AttributeValueList; i_AttributeValueList++) {
+
+ /* Begin struct "Tango_AttributeValue" */
+
+
+
+ decode_Tango_AttributeValue_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_AttributeValue" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:Tango/Device_2/get_attribute_config_2:1.0
+ */
+
+static void decode_Tango_Device_2_get_attribute_config_2(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_names;
+ guint32 i_names;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_AttributeConfigList_2;
+ guint32 i_AttributeConfigList_2;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_names = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of names = %u",u_octet4_loop_names);
+ }
+
+ for (i_names=0; i_names < u_octet4_loop_names; i_names++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"names (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_AttributeConfigList_2 = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AttributeConfigList_2 = %u",u_octet4_loop_AttributeConfigList_2);
+ }
+
+ for (i_AttributeConfigList_2=0; i_AttributeConfigList_2 < u_octet4_loop_AttributeConfigList_2; i_AttributeConfigList_2++) {
+
+ /* Begin struct "Tango_AttributeConfig_2" */
+
+
+
+ decode_Tango_AttributeConfig_2_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_AttributeConfig_2" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:Tango/Device_2/command_list_query_2:1.0
+ */
+
+static void decode_Tango_Device_2_command_list_query_2(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_DevCmdInfoList_2;
+ guint32 i_DevCmdInfoList_2;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_DevCmdInfoList_2 = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevCmdInfoList_2 = %u",u_octet4_loop_DevCmdInfoList_2);
+ }
+
+ for (i_DevCmdInfoList_2=0; i_DevCmdInfoList_2 < u_octet4_loop_DevCmdInfoList_2; i_DevCmdInfoList_2++) {
+
+ /* Begin struct "Tango_DevCmdInfo_2" */
+
+
+
+ decode_Tango_DevCmdInfo_2_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_DevCmdInfo_2" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:Tango/Device_2/command_query_2:1.0
+ */
+
+static void decode_Tango_Device_2_command_query_2(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"command (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "Tango_DevCmdInfo_2" */
+
+
+
+ decode_Tango_DevCmdInfo_2_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_DevCmdInfo_2" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:Tango/Device_2/command_inout_history_2:1.0
+ */
+
+static void decode_Tango_Device_2_command_inout_history_2(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+ guint32 u_octet4_loop_DevCmdHistoryList;
+ guint32 i_DevCmdHistoryList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"command (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"n = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_DevCmdHistoryList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevCmdHistoryList = %u",u_octet4_loop_DevCmdHistoryList);
+ }
+
+ for (i_DevCmdHistoryList=0; i_DevCmdHistoryList < u_octet4_loop_DevCmdHistoryList; i_DevCmdHistoryList++) {
+
+ /* Begin struct "Tango_DevCmdHistory" */
+
+
+
+ decode_Tango_DevCmdHistory_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_DevCmdHistory" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:Tango/Device_2/read_attribute_history_2:1.0
+ */
+
+static void decode_Tango_Device_2_read_attribute_history_2(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+ guint32 u_octet4_loop_DevAttrHistoryList;
+ guint32 i_DevAttrHistoryList;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"n = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_DevAttrHistoryList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevAttrHistoryList = %u",u_octet4_loop_DevAttrHistoryList);
+ }
+
+ for (i_DevAttrHistoryList=0; i_DevAttrHistoryList < u_octet4_loop_DevAttrHistoryList; i_DevAttrHistoryList++) {
+
+ /* Begin struct "Tango_DevAttrHistory" */
+
+
+
+ decode_Tango_DevAttrHistory_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_DevAttrHistory" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:Tango/Device_3/read_attributes_3:1.0
+ */
+
+static void decode_Tango_Device_3_read_attributes_3(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_names;
+ guint32 i_names;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_AttributeValueList_3;
+ guint32 i_AttributeValueList_3;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_names = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of names = %u",u_octet4_loop_names);
+ }
+
+ for (i_names=0; i_names < u_octet4_loop_names; i_names++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"names (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"source = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_DevSource,"Unknown Enum Value"));
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_AttributeValueList_3 = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AttributeValueList_3 = %u",u_octet4_loop_AttributeValueList_3);
+ }
+
+ for (i_AttributeValueList_3=0; i_AttributeValueList_3 < u_octet4_loop_AttributeValueList_3; i_AttributeValueList_3++) {
+
+ /* Begin struct "Tango_AttributeValue_3" */
+
+
+
+ decode_Tango_AttributeValue_3_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_AttributeValue_3" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:Tango/Device_3/write_attributes_3:1.0
+ */
+
+static void decode_Tango_Device_3_write_attributes_3(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_values;
+ guint32 i_values;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_values = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of values = %u",u_octet4_loop_values);
+ }
+
+ for (i_values=0; i_values < u_octet4_loop_values; i_values++) {
+
+ /* Begin struct "Tango_AttributeValue" */
+
+
+
+ decode_Tango_AttributeValue_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_AttributeValue" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:Tango/Device_3/read_attribute_history_3:1.0
+ */
+
+static void decode_Tango_Device_3_read_attribute_history_3(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+ guint32 u_octet4_loop_DevAttrHistoryList_3;
+ guint32 i_DevAttrHistoryList_3;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"n = %i",s_octet4);
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_DevAttrHistoryList_3 = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevAttrHistoryList_3 = %u",u_octet4_loop_DevAttrHistoryList_3);
+ }
+
+ for (i_DevAttrHistoryList_3=0; i_DevAttrHistoryList_3 < u_octet4_loop_DevAttrHistoryList_3; i_DevAttrHistoryList_3++) {
+
+ /* Begin struct "Tango_DevAttrHistory_3" */
+
+
+
+ decode_Tango_DevAttrHistory_3_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_DevAttrHistory_3" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:Tango/Device_3/info_3:1.0
+ */
+
+static void decode_Tango_Device_3_info_3(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Begin struct "Tango_DevInfo_3" */
+
+
+
+ decode_Tango_DevInfo_3_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_DevInfo_3" */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:Tango/Device_3/get_attribute_config_3:1.0
+ */
+
+static void decode_Tango_Device_3_get_attribute_config_3(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_names;
+ guint32 i_names;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_AttributeConfigList_3;
+ guint32 i_AttributeConfigList_3;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_names = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of names = %u",u_octet4_loop_names);
+ }
+
+ for (i_names=0; i_names < u_octet4_loop_names; i_names++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"names (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ u_octet4_loop_AttributeConfigList_3 = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AttributeConfigList_3 = %u",u_octet4_loop_AttributeConfigList_3);
+ }
+
+ for (i_AttributeConfigList_3=0; i_AttributeConfigList_3 < u_octet4_loop_AttributeConfigList_3; i_AttributeConfigList_3++) {
+
+ /* Begin struct "Tango_AttributeConfig_3" */
+
+
+
+ decode_Tango_AttributeConfig_3_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_AttributeConfig_3" */
+
+ }
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/*
+ * IDL:Tango/Device_3/set_attribute_config_3:1.0
+ */
+
+static void decode_Tango_Device_3_set_attribute_config_3(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_new_conf;
+ guint32 i_new_conf;
+
+ /* Operation specific Variable declarations End */
+
+
+ switch(header->message_type) {
+
+ case Request:
+
+ u_octet4_loop_new_conf = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of new_conf = %u",u_octet4_loop_new_conf);
+ }
+
+ for (i_new_conf=0; i_new_conf < u_octet4_loop_new_conf; i_new_conf++) {
+
+ /* Begin struct "Tango_AttributeConfig_3" */
+
+
+
+ decode_Tango_AttributeConfig_3_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_AttributeConfig_3" */
+
+ }
+
+ break;
+
+ case Reply:
+
+ switch(header->rep_status) {
+
+ case NO_EXCEPTION:
+
+ /* Function returns void */
+
+ break;
+
+ case USER_EXCEPTION:
+
+ break;
+
+ default:
+
+ /* Unknown Exception */
+
+ g_warning("Unknown Exception ");
+
+ break;
+
+
+ } /* switch(header->message_type) */
+
+ break;
+
+ default:
+
+ /* Unknown GIOP Message */
+
+ g_warning("Unknown GIOP Message");
+
+ break;
+
+ } /* switch(header->message_type) */
+
+}
+
+/* Struct = IDL:Tango/DevVarLongStringArray:1.0 */
+
+static void decode_Tango_DevVarLongStringArray_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_DevVarLongStringArray_lvalue;
+ guint32 i_DevVarLongStringArray_lvalue;
+ gint32 s_octet4;
+ guint32 u_octet4_loop_DevVarLongStringArray_svalue;
+ guint32 i_DevVarLongStringArray_svalue;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_DevVarLongStringArray_lvalue = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevVarLongStringArray_lvalue = %u",u_octet4_loop_DevVarLongStringArray_lvalue);
+ }
+
+ for (i_DevVarLongStringArray_lvalue=0; i_DevVarLongStringArray_lvalue < u_octet4_loop_DevVarLongStringArray_lvalue; i_DevVarLongStringArray_lvalue++) {
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"DevVarLongStringArray_lvalue = %i",s_octet4);
+ }
+
+ }
+
+ u_octet4_loop_DevVarLongStringArray_svalue = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevVarLongStringArray_svalue = %u",u_octet4_loop_DevVarLongStringArray_svalue);
+ }
+
+ for (i_DevVarLongStringArray_svalue=0; i_DevVarLongStringArray_svalue < u_octet4_loop_DevVarLongStringArray_svalue; i_DevVarLongStringArray_svalue++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevVarLongStringArray_svalue (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:Tango/DevVarDoubleStringArray:1.0 */
+
+static void decode_Tango_DevVarDoubleStringArray_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4_loop_DevVarDoubleStringArray_dvalue;
+ guint32 i_DevVarDoubleStringArray_dvalue;
+ gdouble my_double;
+ guint32 u_octet4_loop_DevVarDoubleStringArray_svalue;
+ guint32 i_DevVarDoubleStringArray_svalue;
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4_loop_DevVarDoubleStringArray_dvalue = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevVarDoubleStringArray_dvalue = %u",u_octet4_loop_DevVarDoubleStringArray_dvalue);
+ }
+
+ for (i_DevVarDoubleStringArray_dvalue=0; i_DevVarDoubleStringArray_dvalue < u_octet4_loop_DevVarDoubleStringArray_dvalue; i_DevVarDoubleStringArray_dvalue++) {
+
+ my_double = get_CDR_double(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-8,8,"DevVarDoubleStringArray_dvalue = %.15e",my_double);
+ }
+
+ }
+
+ u_octet4_loop_DevVarDoubleStringArray_svalue = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevVarDoubleStringArray_svalue = %u",u_octet4_loop_DevVarDoubleStringArray_svalue);
+ }
+
+ for (i_DevVarDoubleStringArray_svalue=0; i_DevVarDoubleStringArray_svalue < u_octet4_loop_DevVarDoubleStringArray_svalue; i_DevVarDoubleStringArray_svalue++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevVarDoubleStringArray_svalue (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:Tango/TimeVal:1.0 */
+
+static void decode_Tango_TimeVal_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TimeVal_tv_sec = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TimeVal_tv_usec = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"TimeVal_tv_nsec = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:Tango/DevCmdInfo:1.0 */
+
+static void decode_Tango_DevCmdInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevCmdInfo_cmd_name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"DevCmdInfo_cmd_tag = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"DevCmdInfo_in_type = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"DevCmdInfo_out_type = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevCmdInfo_in_type_desc (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevCmdInfo_out_type_desc (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:Tango/DevCmdInfo_2:1.0 */
+
+static void decode_Tango_DevCmdInfo_2_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevCmdInfo_2_cmd_name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"DevCmdInfo_2_level = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_DispLevel,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"DevCmdInfo_2_cmd_tag = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"DevCmdInfo_2_in_type = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"DevCmdInfo_2_out_type = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevCmdInfo_2_in_type_desc (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevCmdInfo_2_out_type_desc (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:Tango/DevError:1.0 */
+
+static void decode_Tango_DevError_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevError_reason (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"DevError_severity = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_ErrSeverity,"Unknown Enum Value"));
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevError_desc (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevError_origin (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:Tango/NamedDevError:1.0 */
+
+static void decode_Tango_NamedDevError_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+ guint32 u_octet4_loop_NamedDevError_err_list;
+ guint32 i_NamedDevError_err_list;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"NamedDevError_name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"NamedDevError_index_in_call = %i",s_octet4);
+ }
+
+ u_octet4_loop_NamedDevError_err_list = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of NamedDevError_err_list = %u",u_octet4_loop_NamedDevError_err_list);
+ }
+
+ for (i_NamedDevError_err_list=0; i_NamedDevError_err_list < u_octet4_loop_NamedDevError_err_list; i_NamedDevError_err_list++) {
+
+ /* Begin struct "Tango_DevError" */
+
+
+
+ decode_Tango_DevError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_DevError" */
+
+ }
+
+}
+
+/* Struct = IDL:Tango/AttributeConfig:1.0 */
+
+static void decode_Tango_AttributeConfig_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+ guint32 u_octet4_loop_AttributeConfig_extensions;
+ guint32 i_AttributeConfig_extensions;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_writable = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_AttrWriteType,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_data_format = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_AttrDataFormat,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_data_type = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_max_dim_x = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_max_dim_y = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_description (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_label (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_unit (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_standard_unit (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_display_unit (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_format (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_min_value (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_max_value (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_min_alarm (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_max_alarm (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_writable_attr_name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_AttributeConfig_extensions = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AttributeConfig_extensions = %u",u_octet4_loop_AttributeConfig_extensions);
+ }
+
+ for (i_AttributeConfig_extensions=0; i_AttributeConfig_extensions < u_octet4_loop_AttributeConfig_extensions; i_AttributeConfig_extensions++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_extensions (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:Tango/AttributeConfig_2:1.0 */
+
+static void decode_Tango_AttributeConfig_2_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+ guint32 u_octet4_loop_AttributeConfig_2_extensions;
+ guint32 i_AttributeConfig_2_extensions;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_2_writable = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_AttrWriteType,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_2_data_format = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_AttrDataFormat,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_2_data_type = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_2_max_dim_x = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_2_max_dim_y = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_description (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_label (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_unit (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_standard_unit (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_display_unit (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_format (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_min_value (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_max_value (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_min_alarm (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_max_alarm (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_writable_attr_name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_2_level = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_DispLevel,"Unknown Enum Value"));
+ }
+
+ u_octet4_loop_AttributeConfig_2_extensions = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AttributeConfig_2_extensions = %u",u_octet4_loop_AttributeConfig_2_extensions);
+ }
+
+ for (i_AttributeConfig_2_extensions=0; i_AttributeConfig_2_extensions < u_octet4_loop_AttributeConfig_2_extensions; i_AttributeConfig_2_extensions++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_extensions (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:Tango/AttributeValue:1.0 */
+
+static void decode_Tango_AttributeValue_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ get_CDR_any(tvb,tree,offset,stream_is_big_endian, boundary, header);
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeValue_quality = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_AttrQuality,"Unknown Enum Value"));
+ }
+
+ /* Begin struct "Tango_TimeVal" */
+
+
+
+ decode_Tango_TimeVal_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_TimeVal" */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeValue_name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeValue_dim_x = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeValue_dim_y = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:Tango/AttributeDim:1.0 */
+
+static void decode_Tango_AttributeDim_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeDim_dim_x = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeDim_dim_y = %i",s_octet4);
+ }
+
+}
+
+/* Struct = IDL:Tango/AttributeValue_3:1.0 */
+
+static void decode_Tango_AttributeValue_3_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_AttributeValue_3_err_list;
+ guint32 i_AttributeValue_3_err_list;
+
+ /* Operation specific Variable declarations End */
+
+ get_CDR_any(tvb,tree,offset,stream_is_big_endian, boundary, header);
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeValue_3_quality = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_AttrQuality,"Unknown Enum Value"));
+ }
+
+ /* Begin struct "Tango_TimeVal" */
+
+
+
+ decode_Tango_TimeVal_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_TimeVal" */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeValue_3_name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ /* Begin struct "Tango_AttributeDim" */
+
+
+
+ decode_Tango_AttributeDim_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_AttributeDim" */
+
+ /* Begin struct "Tango_AttributeDim" */
+
+
+
+ decode_Tango_AttributeDim_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_AttributeDim" */
+
+ u_octet4_loop_AttributeValue_3_err_list = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AttributeValue_3_err_list = %u",u_octet4_loop_AttributeValue_3_err_list);
+ }
+
+ for (i_AttributeValue_3_err_list=0; i_AttributeValue_3_err_list < u_octet4_loop_AttributeValue_3_err_list; i_AttributeValue_3_err_list++) {
+
+ /* Begin struct "Tango_DevError" */
+
+
+
+ decode_Tango_DevError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_DevError" */
+
+ }
+
+}
+
+/* Struct = IDL:Tango/ChangeEventProp:1.0 */
+
+static void decode_Tango_ChangeEventProp_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_ChangeEventProp_extensions;
+ guint32 i_ChangeEventProp_extensions;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ChangeEventProp_rel_change (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ChangeEventProp_abs_change (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_ChangeEventProp_extensions = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of ChangeEventProp_extensions = %u",u_octet4_loop_ChangeEventProp_extensions);
+ }
+
+ for (i_ChangeEventProp_extensions=0; i_ChangeEventProp_extensions < u_octet4_loop_ChangeEventProp_extensions; i_ChangeEventProp_extensions++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ChangeEventProp_extensions (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:Tango/PeriodicEventProp:1.0 */
+
+static void decode_Tango_PeriodicEventProp_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_PeriodicEventProp_extensions;
+ guint32 i_PeriodicEventProp_extensions;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"PeriodicEventProp_period (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_PeriodicEventProp_extensions = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of PeriodicEventProp_extensions = %u",u_octet4_loop_PeriodicEventProp_extensions);
+ }
+
+ for (i_PeriodicEventProp_extensions=0; i_PeriodicEventProp_extensions < u_octet4_loop_PeriodicEventProp_extensions; i_PeriodicEventProp_extensions++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"PeriodicEventProp_extensions (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:Tango/ArchiveEventProp:1.0 */
+
+static void decode_Tango_ArchiveEventProp_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_ArchiveEventProp_extensions;
+ guint32 i_ArchiveEventProp_extensions;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ArchiveEventProp_rel_change (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ArchiveEventProp_abs_change (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ArchiveEventProp_period (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_ArchiveEventProp_extensions = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of ArchiveEventProp_extensions = %u",u_octet4_loop_ArchiveEventProp_extensions);
+ }
+
+ for (i_ArchiveEventProp_extensions=0; i_ArchiveEventProp_extensions < u_octet4_loop_ArchiveEventProp_extensions; i_ArchiveEventProp_extensions++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ArchiveEventProp_extensions (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:Tango/EventProperties:1.0 */
+
+static void decode_Tango_EventProperties_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "Tango_ChangeEventProp" */
+
+
+
+ decode_Tango_ChangeEventProp_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_ChangeEventProp" */
+
+ /* Begin struct "Tango_PeriodicEventProp" */
+
+
+
+ decode_Tango_PeriodicEventProp_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_PeriodicEventProp" */
+
+ /* Begin struct "Tango_ArchiveEventProp" */
+
+
+
+ decode_Tango_ArchiveEventProp_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_ArchiveEventProp" */
+
+}
+
+/* Struct = IDL:Tango/AttributeAlarm:1.0 */
+
+static void decode_Tango_AttributeAlarm_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ guint32 u_octet4_loop_AttributeAlarm_extensions;
+ guint32 i_AttributeAlarm_extensions;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeAlarm_min_alarm (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeAlarm_max_alarm (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeAlarm_min_warning (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeAlarm_max_warning (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeAlarm_delta_t (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeAlarm_delta_val (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4_loop_AttributeAlarm_extensions = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AttributeAlarm_extensions = %u",u_octet4_loop_AttributeAlarm_extensions);
+ }
+
+ for (i_AttributeAlarm_extensions=0; i_AttributeAlarm_extensions < u_octet4_loop_AttributeAlarm_extensions; i_AttributeAlarm_extensions++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeAlarm_extensions (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:Tango/AttributeConfig_3:1.0 */
+
+static void decode_Tango_AttributeConfig_3_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+ guint32 u_octet4_loop_AttributeConfig_3_extensions;
+ guint32 i_AttributeConfig_3_extensions;
+ guint32 u_octet4_loop_AttributeConfig_3_sys_extensions;
+ guint32 i_AttributeConfig_3_sys_extensions;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_3_name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_3_writable = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_AttrWriteType,"Unknown Enum Value"));
+ }
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_3_data_format = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_AttrDataFormat,"Unknown Enum Value"));
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_3_data_type = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_3_max_dim_x = %i",s_octet4);
+ }
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_3_max_dim_y = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_3_description (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_3_label (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_3_unit (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_3_standard_unit (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_3_display_unit (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_3_format (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_3_min_value (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_3_max_value (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_3_writable_attr_name (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+
+ u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_3_level = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_DispLevel,"Unknown Enum Value"));
+ }
+
+ /* Begin struct "Tango_AttributeAlarm" */
+
+
+
+ decode_Tango_AttributeAlarm_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_AttributeAlarm" */
+
+ /* Begin struct "Tango_EventProperties" */
+
+
+
+ decode_Tango_EventProperties_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_EventProperties" */
+
+ u_octet4_loop_AttributeConfig_3_extensions = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AttributeConfig_3_extensions = %u",u_octet4_loop_AttributeConfig_3_extensions);
+ }
+
+ for (i_AttributeConfig_3_extensions=0; i_AttributeConfig_3_extensions < u_octet4_loop_AttributeConfig_3_extensions; i_AttributeConfig_3_extensions++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_3_extensions (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+ u_octet4_loop_AttributeConfig_3_sys_extensions = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AttributeConfig_3_sys_extensions = %u",u_octet4_loop_AttributeConfig_3_sys_extensions);
+ }
+
+ for (i_AttributeConfig_3_sys_extensions=0; i_AttributeConfig_3_sys_extensions < u_octet4_loop_AttributeConfig_3_sys_extensions; i_AttributeConfig_3_sys_extensions++) {
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_3_sys_extensions (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ }
+
+}
+
+/* Struct = IDL:Tango/DevInfo:1.0 */
+
+static void decode_Tango_DevInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevInfo_dev_class (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevInfo_server_id (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevInfo_server_host (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"DevInfo_server_version = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevInfo_doc_url (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:Tango/DevInfo_3:1.0 */
+
+static void decode_Tango_DevInfo_3_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint32 u_octet4;
+ gchar *seq = NULL;
+ gint32 s_octet4;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevInfo_3_dev_class (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevInfo_3_server_id (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevInfo_3_server_host (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4,4,"DevInfo_3_server_version = %i",s_octet4);
+ }
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevInfo_3_doc_url (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+ u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevInfo_3_dev_type (%u) = %s",
+ u_octet4, (u_octet4 > 0) ? seq : "");
+ }
+
+ g_free(seq); /* free buffer */
+ seq = NULL;
+
+}
+
+/* Struct = IDL:Tango/DevCmdHistory:1.0 */
+
+static void decode_Tango_DevCmdHistory_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint8 u_octet1;
+ guint32 u_octet4_loop_DevCmdHistory_errors;
+ guint32 i_DevCmdHistory_errors;
+
+ /* Operation specific Variable declarations End */
+
+ /* Begin struct "Tango_TimeVal" */
+
+
+
+ decode_Tango_TimeVal_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_TimeVal" */
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"DevCmdHistory_cmd_failed = %u",u_octet1);
+ }
+
+ get_CDR_any(tvb,tree,offset,stream_is_big_endian, boundary, header);
+
+ u_octet4_loop_DevCmdHistory_errors = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevCmdHistory_errors = %u",u_octet4_loop_DevCmdHistory_errors);
+ }
+
+ for (i_DevCmdHistory_errors=0; i_DevCmdHistory_errors < u_octet4_loop_DevCmdHistory_errors; i_DevCmdHistory_errors++) {
+
+ /* Begin struct "Tango_DevError" */
+
+
+
+ decode_Tango_DevError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_DevError" */
+
+ }
+
+}
+
+/* Struct = IDL:Tango/DevAttrHistory:1.0 */
+
+static void decode_Tango_DevAttrHistory_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint8 u_octet1;
+ guint32 u_octet4_loop_DevAttrHistory_errors;
+ guint32 i_DevAttrHistory_errors;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"DevAttrHistory_attr_failed = %u",u_octet1);
+ }
+
+ /* Begin struct "Tango_AttributeValue" */
+
+
+
+ decode_Tango_AttributeValue_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_AttributeValue" */
+
+ u_octet4_loop_DevAttrHistory_errors = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevAttrHistory_errors = %u",u_octet4_loop_DevAttrHistory_errors);
+ }
+
+ for (i_DevAttrHistory_errors=0; i_DevAttrHistory_errors < u_octet4_loop_DevAttrHistory_errors; i_DevAttrHistory_errors++) {
+
+ /* Begin struct "Tango_DevError" */
+
+
+
+ decode_Tango_DevError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_DevError" */
+
+ }
+
+}
+
+/* Struct = IDL:Tango/DevAttrHistory_3:1.0 */
+
+static void decode_Tango_DevAttrHistory_3_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
+
+
+ /* Operation specific Variable declarations Begin */
+
+ guint8 u_octet1;
+
+ /* Operation specific Variable declarations End */
+
+ u_octet1 = get_CDR_boolean(tvb,offset);
+ if (tree) {
+ proto_tree_add_text(tree,tvb,*offset-1,1,"DevAttrHistory_3_attr_failed = %u",u_octet1);
+ }
+
+ /* Begin struct "Tango_AttributeValue_3" */
+
+
+
+ decode_Tango_AttributeValue_3_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+
+ /* End struct "Tango_AttributeValue_3" */
+
+}
+
+/*
+ * Called once we accept the packet as being for us; it sets the
+ * Protocol and Info columns and creates the top-level protocol
+ * tree item.
+ */
+static proto_tree *start_dissecting(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ptree, int *offset) {
+
+ proto_item *ti = NULL;
+ proto_tree *tree = NULL; /* init later, inside if(tree) */
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "TANGO");
+
+ /*
+ * Do not clear COL_INFO, as nothing is being written there by
+ * this dissector yet. So leave it as is from the GIOP dissector.
+ * TODO: add something useful to COL_INFO
+ * col_clear(pinfo->cinfo, COL_INFO);
+ */
+
+ if (ptree) {
+ ti = proto_tree_add_item(ptree, proto_tango, tvb, *offset, -1, ENC_NA);
+ tree = proto_item_add_subtree(ti, ett_tango);
+ }
+ return tree;
+}
+
+static gboolean dissect_tango(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ptree, int *offset, MessageHeader *header, gchar *operation, gchar *idlname) {
+
+ gboolean stream_is_big_endian; /* big endianess */
+ proto_tree *tree _U_;
+#define process_RequestOperation(){ \
+ proto_item *pi; \
+ if(header->message_type == Reply){ col_append_fstr(pinfo->cinfo, COL_INFO, " op = %s",operation); }; /* fill-up info column */ \
+ pi=proto_tree_add_string_format_value(ptree,hf_operationrequest,tvb,0,0,operation," %s",operation);PROTO_ITEM_SET_GENERATED(pi); /* fill-up the field */ \
+ };
+
+ stream_is_big_endian = is_big_endian(header); /* get endianess */
+
+ /* If we have a USER Exception, then decode it and return */
+
+ if ((header->message_type == Reply) && (header->rep_status == USER_EXCEPTION)) {
+
+ return decode_user_exception(tvb, pinfo, ptree, offset, header, operation, stream_is_big_endian);
+
+ }
+
+ switch(header->message_type) {
+
+ case Request:
+ case Reply:
+
+ if (strcmp(operation, Tango_Device_command_inout_op) == 0
+ && (!idlname || strcmp(idlname, "Tango/Device") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_Tango_Device_command_inout(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, Tango_Device_get_attribute_config_op) == 0
+ && (!idlname || strcmp(idlname, "Tango/Device") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_Tango_Device_get_attribute_config(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, Tango_Device_set_attribute_config_op) == 0
+ && (!idlname || strcmp(idlname, "Tango/Device") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_Tango_Device_set_attribute_config(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, Tango_Device_read_attributes_op) == 0
+ && (!idlname || strcmp(idlname, "Tango/Device") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_Tango_Device_read_attributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, Tango_Device_write_attributes_op) == 0
+ && (!idlname || strcmp(idlname, "Tango/Device") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_Tango_Device_write_attributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, Tango_Device_ping_op) == 0
+ && (!idlname || strcmp(idlname, "Tango/Device") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_Tango_Device_ping(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, Tango_Device_black_box_op) == 0
+ && (!idlname || strcmp(idlname, "Tango/Device") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_Tango_Device_black_box(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, Tango_Device_info_op) == 0
+ && (!idlname || strcmp(idlname, "Tango/Device") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_Tango_Device_info(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, Tango_Device_command_list_query_op) == 0
+ && (!idlname || strcmp(idlname, "Tango/Device") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_Tango_Device_command_list_query(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, Tango_Device_command_query_op) == 0
+ && (!idlname || strcmp(idlname, "Tango/Device") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_Tango_Device_command_query(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, Tango_Device_2_command_inout_2_op) == 0
+ && (!idlname || strcmp(idlname, "Tango/Device_2") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_Tango_Device_2_command_inout_2(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, Tango_Device_2_read_attributes_2_op) == 0
+ && (!idlname || strcmp(idlname, "Tango/Device_2") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_Tango_Device_2_read_attributes_2(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, Tango_Device_2_get_attribute_config_2_op) == 0
+ && (!idlname || strcmp(idlname, "Tango/Device_2") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_Tango_Device_2_get_attribute_config_2(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, Tango_Device_2_command_list_query_2_op) == 0
+ && (!idlname || strcmp(idlname, "Tango/Device_2") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_Tango_Device_2_command_list_query_2(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, Tango_Device_2_command_query_2_op) == 0
+ && (!idlname || strcmp(idlname, "Tango/Device_2") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_Tango_Device_2_command_query_2(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, Tango_Device_2_command_inout_history_2_op) == 0
+ && (!idlname || strcmp(idlname, "Tango/Device_2") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_Tango_Device_2_command_inout_history_2(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, Tango_Device_2_read_attribute_history_2_op) == 0
+ && (!idlname || strcmp(idlname, "Tango/Device_2") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_Tango_Device_2_read_attribute_history_2(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, Tango_Device_3_read_attributes_3_op) == 0
+ && (!idlname || strcmp(idlname, "Tango/Device_3") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_Tango_Device_3_read_attributes_3(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, Tango_Device_3_write_attributes_3_op) == 0
+ && (!idlname || strcmp(idlname, "Tango/Device_3") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_Tango_Device_3_write_attributes_3(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, Tango_Device_3_read_attribute_history_3_op) == 0
+ && (!idlname || strcmp(idlname, "Tango/Device_3") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_Tango_Device_3_read_attribute_history_3(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, Tango_Device_3_info_3_op) == 0
+ && (!idlname || strcmp(idlname, "Tango/Device_3") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_Tango_Device_3_info_3(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, Tango_Device_3_get_attribute_config_3_op) == 0
+ && (!idlname || strcmp(idlname, "Tango/Device_3") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_Tango_Device_3_get_attribute_config_3(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, Tango_Device_3_set_attribute_config_3_op) == 0
+ && (!idlname || strcmp(idlname, "Tango/Device_3") == 0)) {
+ process_RequestOperation(); /* fill-up Request_Operation field & info column */
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_Tango_Device_3_set_attribute_config_3(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, get_Tango_Device_name_at) == 0 && (header->message_type == Reply) && (header->rep_status == NO_EXCEPTION) ) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_get_Tango_Device_name_at(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, get_Tango_Device_description_at) == 0 && (header->message_type == Reply) && (header->rep_status == NO_EXCEPTION) ) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_get_Tango_Device_description_at(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, get_Tango_Device_state_at) == 0 && (header->message_type == Reply) && (header->rep_status == NO_EXCEPTION) ) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_get_Tango_Device_state_at(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, get_Tango_Device_status_at) == 0 && (header->message_type == Reply) && (header->rep_status == NO_EXCEPTION) ) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_get_Tango_Device_status_at(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+ if (strcmp(operation, get_Tango_Device_adm_name_at) == 0 && (header->message_type == Reply) && (header->rep_status == NO_EXCEPTION) ) {
+ tree = start_dissecting(tvb, pinfo, ptree, offset);
+ decode_get_Tango_Device_adm_name_at(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
+ return TRUE;
+ }
+
+
+ break;
+
+ case CancelRequest:
+ case LocateRequest:
+ case LocateReply:
+ case CloseConnection:
+ case MessageError:
+ case Fragment:
+ return FALSE; /* not handled yet */
+
+ default:
+ return FALSE; /* not handled yet */
+
+ } /* switch */
+
+
+ return FALSE;
+
+} /* End of main dissector */
+
+
+
+/* Register the protocol with Wireshark */
+
+void proto_register_giop_tango(void) {
+
+ /* setup list of header fields */
+
+ static hf_register_info hf[] = {
+ /* field that indicates the currently ongoing request/reply exchange */
+ {&hf_operationrequest, {"Request_Operation","TANGO.Request_Operation",FT_STRING,BASE_NONE,NULL,0x0,NULL,HFILL}},
+
+ /* no fields yet */
+
+ };
+
+ /* setup protocol subtree array */
+
+ static gint *ett[] = {
+ &ett_tango,
+ };
+
+ /* Register the protocol name and description */
+
+ proto_tango = proto_register_protocol("Tango Dissector Using GIOP API" , "TANGO", "giop-tango" );
+
+ proto_register_field_array(proto_tango, hf, array_length(hf));
+
+ proto_register_subtree_array(ett,array_length(ett));
+
+}
+
+
+/* register me as handler for these interfaces */
+
+void proto_reg_handoff_giop_tango(void) {
+
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_tango, "TANGO", "Tango/Device", proto_tango ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_tango, "TANGO", "Tango/Device_2", proto_tango ); /* explicit dissector */
+
+
+ /* Register for Explicit Dissection */
+
+ register_giop_user_module(dissect_tango, "TANGO", "Tango/Device_3", proto_tango ); /* explicit dissector */
+
+
+ /* Register for Heuristic Dissection */
+
+ register_giop_user(dissect_tango, "TANGO" ,proto_tango); /* heuristic dissector */
+
+
+}
+
+
+#if 0
+
+G_MODULE_EXPORT void
+plugin_register(void)
+{
+ if (proto_tango == -1) {
+ proto_register_giop_tango();
+ }
+}
+
+G_MODULE_EXPORT void
+plugin_reg_handoff(void){
+ proto_register_handoff_giop_tango();
+}
+#endif
+
diff --git a/epan/dissectors/packet-tcap.c b/epan/dissectors/packet-tcap.c
index 4ddfb6b4e6..89ab403c31 100644
--- a/epan/dissectors/packet-tcap.c
+++ b/epan/dissectors/packet-tcap.c
@@ -752,7 +752,9 @@ proto_tree *subtree;
tid_item = proto_tree_add_text(tree, tvb, offset, -1, "Source Transaction ID");
subtree = proto_item_add_subtree(tid_item, ett_otid);
-offset = dissect_ber_octet_string(implicit_tag, actx, subtree, tvb, offset, hf_tcap_tid,
+dissect_ber_octet_string(implicit_tag, actx, subtree, tvb, offset, hf_tcap_tid, NULL);
+PROTO_ITEM_SET_HIDDEN(actx->created_item);
+offset = dissect_ber_octet_string(implicit_tag, actx, subtree, tvb, offset, hf_tcap_otid,
&parameter_tvb);
if (parameter_tvb){
@@ -797,7 +799,7 @@ static const ber_sequence_t Begin_sequence[] = {
static int
dissect_tcap_Begin(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 200 "../../asn1/tcap/tcap.cnf"
+#line 204 "../../asn1/tcap/tcap.cnf"
gp_tcapsrt_info->ope=TC_BEGIN;
/* Do not change col_add_str() to col_append_str() here: we _want_ this call
@@ -819,15 +821,17 @@ gp_tcapsrt_info->ope=TC_BEGIN;
static int
dissect_tcap_DestTransactionID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 165 "../../asn1/tcap/tcap.cnf"
+#line 167 "../../asn1/tcap/tcap.cnf"
tvbuff_t *parameter_tvb;
guint8 len , i;
proto_item *tid_item;
proto_tree *subtree;
tid_item = proto_tree_add_text(tree, tvb, offset, -1, "Destination Transaction ID");
-subtree = proto_item_add_subtree(tid_item, ett_otid);
+subtree = proto_item_add_subtree(tid_item, ett_dtid);
-offset = dissect_ber_octet_string(implicit_tag, actx, subtree, tvb, offset, hf_tcap_tid,
+dissect_ber_octet_string(implicit_tag, actx, subtree, tvb, offset, hf_tcap_tid, NULL);
+PROTO_ITEM_SET_HIDDEN(actx->created_item);
+offset = dissect_ber_octet_string(implicit_tag, actx, subtree, tvb, offset, hf_tcap_dtid,
&parameter_tvb);
if (parameter_tvb){
@@ -869,7 +873,7 @@ static const ber_sequence_t End_sequence[] = {
static int
dissect_tcap_End(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 214 "../../asn1/tcap/tcap.cnf"
+#line 218 "../../asn1/tcap/tcap.cnf"
gp_tcapsrt_info->ope=TC_END;
col_set_str(actx->pinfo->cinfo, COL_INFO, "End ");
@@ -891,7 +895,7 @@ static const ber_sequence_t Continue_sequence[] = {
static int
dissect_tcap_Continue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 221 "../../asn1/tcap/tcap.cnf"
+#line 225 "../../asn1/tcap/tcap.cnf"
gp_tcapsrt_info->ope=TC_CONT;
col_set_str(actx->pinfo->cinfo, COL_INFO, "Continue ");
@@ -962,7 +966,7 @@ static const ber_sequence_t Abort_sequence[] = {
static int
dissect_tcap_Abort(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 228 "../../asn1/tcap/tcap.cnf"
+#line 232 "../../asn1/tcap/tcap.cnf"
gp_tcapsrt_info->ope=TC_ABORT;
col_set_str(actx->pinfo->cinfo, COL_INFO, "Abort ");
diff --git a/epan/dissectors/packet-tcp.c b/epan/dissectors/packet-tcp.c
index 3f7c971aad..4b214a5c50 100644
--- a/epan/dissectors/packet-tcp.c
+++ b/epan/dissectors/packet-tcp.c
@@ -94,6 +94,7 @@ static int hf_tcp_checksum_bad = -1;
static int hf_tcp_checksum_good = -1;
static int hf_tcp_len = -1;
static int hf_tcp_urgent_pointer = -1;
+static int hf_tcp_analysis = -1;
static int hf_tcp_analysis_flags = -1;
static int hf_tcp_analysis_bytes_in_flight = -1;
static int hf_tcp_analysis_acks_frame = -1;
@@ -273,6 +274,15 @@ static gint ett_tcp_opt_rvbd_probe_flags = -1;
static gint ett_tcp_opt_rvbd_trpy = -1;
static gint ett_tcp_opt_rvbd_trpy_flags = -1;
+/* Some protocols such as encrypted DCE/RPCoverHTTP have dependencies
+ * from one PDU to the next PDU and require that they are called in sequence.
+ * These protocols would not be able to handle PDUs coming out of order
+ * or for example when a PDU is seen twice, like for retransmissions.
+ * This preference can be set for such protocols to make sure that we dont invoke
+ * the subdissectors for retransmitted or out-of-order segments.
+ */
+static gboolean tcp_no_subdissector_on_error = FALSE;
+
/*
* TCP option
*/
@@ -462,6 +472,7 @@ init_tcp_conversation_data(packet_info *pinfo)
tcpd->flow1.valid_bif = 1;
tcpd->flow2.valid_bif = 1;
tcpd->stream = tcp_stream_index++;
+ tcpd->server_port = 0;
return tcpd;
}
@@ -753,15 +764,18 @@ pdu_store_window_scale_option(guint8 ws, struct tcp_analysis *tcpd)
/* when this function returns, it will (if createflag) populate the ta pointer.
*/
static void
-tcp_analyze_get_acked_struct(guint32 frame, gboolean createflag, struct tcp_analysis *tcpd)
+tcp_analyze_get_acked_struct(guint32 frame, guint32 seq, guint32 ack, gboolean createflag, struct tcp_analysis *tcpd)
{
- if (!tcpd)
+ emem_tree_key_t key[] = {{1, &frame}, {1, &seq}, {1, &ack}, {0, NULL}};
+
+ if (!tcpd) {
return;
+ }
- tcpd->ta=se_tree_lookup32(tcpd->acked_table, frame);
+ tcpd->ta = se_tree_lookup32_array(tcpd->acked_table, key);
if((!tcpd->ta) && createflag){
- tcpd->ta=se_alloc0(sizeof(struct tcp_acked));
- se_tree_insert32(tcpd->acked_table, frame, (void *)tcpd->ta);
+ tcpd->ta = se_alloc0(sizeof(struct tcp_acked));
+ se_tree_insert32_array(tcpd->acked_table, key, (void *)tcpd->ta);
}
}
@@ -829,7 +843,7 @@ printf("REV list lastflags:0x%04x base_seq:0x%08x:\n",tcpd->rev->lastsegmentflag
&& seq==tcpd->fwd->nextseq
&& tcpd->rev->window==0 ){
if(!tcpd->ta){
- tcp_analyze_get_acked_struct(pinfo->fd->num, TRUE, tcpd);
+ tcp_analyze_get_acked_struct(pinfo->fd->num, seq, ack, TRUE, tcpd);
}
tcpd->ta->flags|=TCP_A_ZERO_WINDOW_PROBE;
goto finished_fwd;
@@ -843,7 +857,7 @@ printf("REV list lastflags:0x%04x base_seq:0x%08x:\n",tcpd->rev->lastsegmentflag
if( window==0
&& (flags&(TH_RST|TH_FIN|TH_SYN))==0 ){
if(!tcpd->ta){
- tcp_analyze_get_acked_struct(pinfo->fd->num, TRUE, tcpd);
+ tcp_analyze_get_acked_struct(pinfo->fd->num, seq, ack, TRUE, tcpd);
}
tcpd->ta->flags|=TCP_A_ZERO_WINDOW;
}
@@ -861,7 +875,7 @@ printf("REV list lastflags:0x%04x base_seq:0x%08x:\n",tcpd->rev->lastsegmentflag
&& GT_SEQ(seq, tcpd->fwd->nextseq)
&& (flags&(TH_RST))==0 ){
if(!tcpd->ta){
- tcp_analyze_get_acked_struct(pinfo->fd->num, TRUE, tcpd);
+ tcp_analyze_get_acked_struct(pinfo->fd->num, seq, ack, TRUE, tcpd);
}
tcpd->ta->flags|=TCP_A_LOST_PACKET;
@@ -880,7 +894,7 @@ printf("REV list lastflags:0x%04x base_seq:0x%08x:\n",tcpd->rev->lastsegmentflag
&& seq==(tcpd->fwd->nextseq-1)
&& (flags&(TH_SYN|TH_FIN|TH_RST))==0 ){
if(!tcpd->ta){
- tcp_analyze_get_acked_struct(pinfo->fd->num, TRUE, tcpd);
+ tcp_analyze_get_acked_struct(pinfo->fd->num, seq, ack, TRUE, tcpd);
}
tcpd->ta->flags|=TCP_A_KEEP_ALIVE;
}
@@ -896,7 +910,7 @@ printf("REV list lastflags:0x%04x base_seq:0x%08x:\n",tcpd->rev->lastsegmentflag
&& ack==tcpd->fwd->lastack
&& (flags&(TH_SYN|TH_FIN|TH_RST))==0 ){
if(!tcpd->ta){
- tcp_analyze_get_acked_struct(pinfo->fd->num, TRUE, tcpd);
+ tcp_analyze_get_acked_struct(pinfo->fd->num, seq, ack, TRUE, tcpd);
}
tcpd->ta->flags|=TCP_A_WINDOW_UPDATE;
}
@@ -915,7 +929,7 @@ printf("REV list lastflags:0x%04x base_seq:0x%08x:\n",tcpd->rev->lastsegmentflag
&& (seq+seglen)==(tcpd->rev->lastack+(tcpd->rev->window<<(tcpd->rev->win_scale==-2?0:tcpd->rev->win_scale)))
&& (flags&(TH_SYN|TH_FIN|TH_RST))==0 ){
if(!tcpd->ta){
- tcp_analyze_get_acked_struct(pinfo->fd->num, TRUE, tcpd);
+ tcp_analyze_get_acked_struct(pinfo->fd->num, seq, ack, TRUE, tcpd);
}
tcpd->ta->flags|=TCP_A_WINDOW_FULL;
}
@@ -934,7 +948,7 @@ printf("REV list lastflags:0x%04x base_seq:0x%08x:\n",tcpd->rev->lastsegmentflag
&& (tcpd->rev->lastsegmentflags&TCP_A_KEEP_ALIVE)
&& (flags&(TH_SYN|TH_FIN|TH_RST))==0 ){
if(!tcpd->ta){
- tcp_analyze_get_acked_struct(pinfo->fd->num, TRUE, tcpd);
+ tcp_analyze_get_acked_struct(pinfo->fd->num, seq, ack, TRUE, tcpd);
}
tcpd->ta->flags|=TCP_A_KEEP_ALIVE_ACK;
goto finished_fwd;
@@ -955,7 +969,7 @@ printf("REV list lastflags:0x%04x base_seq:0x%08x:\n",tcpd->rev->lastsegmentflag
&& (tcpd->rev->lastsegmentflags&TCP_A_ZERO_WINDOW_PROBE)
&& (flags&(TH_SYN|TH_FIN|TH_RST))==0 ){
if(!tcpd->ta){
- tcp_analyze_get_acked_struct(pinfo->fd->num, TRUE, tcpd);
+ tcp_analyze_get_acked_struct(pinfo->fd->num, seq, ack, TRUE, tcpd);
}
tcpd->ta->flags|=TCP_A_ZERO_WINDOW_PROBE_ACK;
goto finished_fwd;
@@ -974,7 +988,7 @@ printf("REV list lastflags:0x%04x base_seq:0x%08x:\n",tcpd->rev->lastsegmentflag
&& (flags&(TH_SYN|TH_FIN|TH_RST))==0 ){
tcpd->fwd->dupacknum++;
if(!tcpd->ta){
- tcp_analyze_get_acked_struct(pinfo->fd->num, TRUE, tcpd);
+ tcp_analyze_get_acked_struct(pinfo->fd->num, seq, ack, TRUE, tcpd);
}
tcpd->ta->flags|=TCP_A_DUPLICATE_ACK;
tcpd->ta->dupack_num=tcpd->fwd->dupacknum;
@@ -1004,7 +1018,7 @@ finished_fwd:
&& (flags&(TH_ACK))!=0 ){
/*QQQ tested*/
if(!tcpd->ta){
- tcp_analyze_get_acked_struct(pinfo->fd->num, TRUE, tcpd);
+ tcp_analyze_get_acked_struct(pinfo->fd->num, seq, ack, TRUE, tcpd);
}
tcpd->ta->flags|=TCP_A_ACK_LOST_PACKET;
/* update 'max seq to be acked' in the other direction so we don't get
@@ -1044,7 +1058,7 @@ finished_fwd:
&& tcpd->rev->lastack==seq
&& t<20000000 ){
if(!tcpd->ta){
- tcp_analyze_get_acked_struct(pinfo->fd->num, TRUE, tcpd);
+ tcp_analyze_get_acked_struct(pinfo->fd->num, seq, ack, TRUE, tcpd);
}
tcpd->ta->flags|=TCP_A_FAST_RETRANSMISSION;
goto finished_checking_retransmission_type;
@@ -1060,7 +1074,7 @@ finished_fwd:
if( t<3000000
&& tcpd->fwd->nextseq != seq + seglen ){
if(!tcpd->ta){
- tcp_analyze_get_acked_struct(pinfo->fd->num, TRUE, tcpd);
+ tcp_analyze_get_acked_struct(pinfo->fd->num, seq, ack, TRUE, tcpd);
}
tcpd->ta->flags|=TCP_A_OUT_OF_ORDER;
goto finished_checking_retransmission_type;
@@ -1068,7 +1082,7 @@ finished_fwd:
/* Then it has to be a generic retransmission */
if(!tcpd->ta){
- tcp_analyze_get_acked_struct(pinfo->fd->num, TRUE, tcpd);
+ tcp_analyze_get_acked_struct(pinfo->fd->num, seq, ack, TRUE, tcpd);
}
tcpd->ta->flags|=TCP_A_RETRANSMISSION;
nstime_delta(&tcpd->ta->rto_ts, &pinfo->fd->abs_ts, &tcpd->fwd->nextseqtime);
@@ -1145,7 +1159,7 @@ finished_checking_retransmission_type:
/* If this ack matches the segment, process accordingly */
if(ack==ual->nextseq){
- tcp_analyze_get_acked_struct(pinfo->fd->num, TRUE, tcpd);
+ tcp_analyze_get_acked_struct(pinfo->fd->num, seq, ack, TRUE, tcpd);
tcpd->ta->frame_acked=ual->frame;
nstime_delta(&tcpd->ta->ts, &pinfo->fd->abs_ts, &ual->ts);
}
@@ -1206,7 +1220,7 @@ finished_checking_retransmission_type:
if (in_flight>0 && in_flight<2000000000) {
if(!tcpd->ta){
- tcp_analyze_get_acked_struct(pinfo->fd->num, TRUE, tcpd);
+ tcp_analyze_get_acked_struct(pinfo->fd->num, seq, ack, TRUE, tcpd);
}
tcpd->ta->bytes_in_flight = in_flight;
}
@@ -1327,14 +1341,14 @@ tcp_sequence_number_analysis_print_lost(packet_info * pinfo,
flags_item=proto_tree_add_none_format(flags_tree,
hf_tcp_analysis_lost_packet,
tvb, 0, 0,
- "A segment before this frame was "
- "lost"
+ "A segment before this frame "
+ "wasn't captured"
);
PROTO_ITEM_SET_GENERATED(flags_item);
expert_add_info_format(pinfo, flags_item, PI_SEQUENCE, PI_WARN,
- "Previous segment lost (common at capture start)");
+ "Previous segment not captured (common at capture start)");
col_prepend_fence_fstr(pinfo->cinfo, COL_INFO,
- "[TCP Previous segment lost] ");
+ "[TCP Previous segment not captured] ");
}
/* TCP Ack lost segment */
if (ta->flags & TCP_A_ACK_LOST_PACKET) {
@@ -1342,13 +1356,13 @@ tcp_sequence_number_analysis_print_lost(packet_info * pinfo,
hf_tcp_analysis_ack_lost_packet,
tvb, 0, 0,
"This frame ACKs a segment we have "
- "not seen (lost?)"
+ "not seen"
);
PROTO_ITEM_SET_GENERATED(flags_item);
expert_add_info_format(pinfo, flags_item, PI_SEQUENCE, PI_WARN,
- "ACKed lost segment (common at capture start)");
+ "ACKed segment that wasn't captured (common at capture start)");
col_prepend_fence_fstr(pinfo->cinfo, COL_INFO,
- "[TCP ACKed lost segment] ");
+ "[TCP ACKed unseen segment] ");
}
}
@@ -1536,7 +1550,8 @@ tcp_sequence_number_analysis_print_bytes_in_flight(packet_info * pinfo _U_,
}
static void
-tcp_print_sequence_number_analysis(packet_info *pinfo, tvbuff_t *tvb, proto_tree *parent_tree, struct tcp_analysis *tcpd)
+tcp_print_sequence_number_analysis(packet_info *pinfo, tvbuff_t *tvb, proto_tree *parent_tree,
+ struct tcp_analysis *tcpd, guint32 seq, guint32 ack)
{
struct tcp_acked *ta = NULL;
proto_item *item;
@@ -1547,14 +1562,14 @@ tcp_print_sequence_number_analysis(packet_info *pinfo, tvbuff_t *tvb, proto_tree
return;
}
if(!tcpd->ta){
- tcp_analyze_get_acked_struct(pinfo->fd->num, FALSE, tcpd);
+ tcp_analyze_get_acked_struct(pinfo->fd->num, seq, ack, FALSE, tcpd);
}
ta=tcpd->ta;
if(!ta){
return;
}
- item=proto_tree_add_text(parent_tree, tvb, 0, 0, "SEQ/ACK analysis");
+ item=proto_tree_add_item(parent_tree, hf_tcp_analysis, tvb, 0, 0, ENC_NA);
PROTO_ITEM_SET_GENERATED(item);
tree=proto_item_add_subtree(item, ett_tcp_analysis);
@@ -2822,27 +2837,6 @@ static void
dissect_tcpopt_qs(const ip_tcp_opt *optp, tvbuff_t *tvb,
int offset, guint optlen, packet_info *pinfo, proto_tree *opt_tree)
{
- /* Quick-Start TCP option, as defined by RFC4782 */
- static const value_string qs_rates[] = {
- { 0, "0 bit/s"},
- { 1, "80 kbit/s"},
- { 2, "160 kbit/s"},
- { 3, "320 kbit/s"},
- { 4, "640 kbit/s"},
- { 5, "1.28 Mbit/s"},
- { 6, "2.56 Mbit/s"},
- { 7, "5.12 Mbit/s"},
- { 8, "10.24 Mbit/s"},
- { 9, "20.48 Mbit/s"},
- {10, "40.96 Mbit/s"},
- {11, "81.92 Mbit/s"},
- {12, "163.84 Mbit/s"},
- {13, "327.68 Mbit/s"},
- {14, "655.36 Mbit/s"},
- {15, "1.31072 Gbit/s"},
- {0, NULL}
- };
- static value_string_ext qs_rates_ext = VALUE_STRING_EXT_INIT(qs_rates);
proto_item *hidden_item;
@@ -2860,9 +2854,9 @@ dissect_tcpopt_qs(const ip_tcp_opt *optp, tvbuff_t *tvb,
PROTO_ITEM_SET_HIDDEN(hidden_item);
proto_tree_add_text(opt_tree, tvb, offset, optlen,
"%s: Rate response, %s, TTL diff %u ", optp->name,
- val_to_str_ext(rate, &qs_rates_ext, "Unknown"),
+ val_to_str_ext_const(rate, &qs_rate_vals_ext, "Unknown"),
tvb_get_guint8(tvb, offset + 3));
- col_append_fstr(pinfo->cinfo, COL_INFO, " QSresp=%s", val_to_str_ext(rate, &qs_rates_ext, "Unknown"));
+ col_append_fstr(pinfo->cinfo, COL_INFO, " QSresp=%s", val_to_str_ext_const(rate, &qs_rate_vals_ext, "Unknown"));
}
@@ -2933,7 +2927,7 @@ dissect_tcpopt_scps(const ip_tcp_opt *optp _U_, tvbuff_t *tvb,
struct capvec
{
guint8 mask;
- gchar *str;
+ const gchar *str;
} capvecs[] = {
{0x80, "BETS"},
{0x40, "SNACK1"},
@@ -3580,7 +3574,7 @@ static const ip_tcp_opt tcpopts[] = {
TCPOPT_EOL,
"End of Option List (EOL)",
NULL,
- NO_LENGTH,
+ OPT_LEN_NO_LENGTH,
0,
NULL,
},
@@ -3588,7 +3582,7 @@ static const ip_tcp_opt tcpopts[] = {
TCPOPT_NOP,
"No-Operation (NOP)",
NULL,
- NO_LENGTH,
+ OPT_LEN_NO_LENGTH,
0,
NULL,
},
@@ -3596,7 +3590,7 @@ static const ip_tcp_opt tcpopts[] = {
TCPOPT_MSS,
"Maximum segment size",
NULL,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
TCPOLEN_MSS,
dissect_tcpopt_mss
},
@@ -3604,7 +3598,7 @@ static const ip_tcp_opt tcpopts[] = {
TCPOPT_WINDOW,
"Window scale",
NULL,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
TCPOLEN_WINDOW,
dissect_tcpopt_wscale
},
@@ -3612,7 +3606,7 @@ static const ip_tcp_opt tcpopts[] = {
TCPOPT_SACK_PERM,
"SACK permitted",
NULL,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
TCPOLEN_SACK_PERM,
dissect_tcpopt_sack_perm,
},
@@ -3620,7 +3614,7 @@ static const ip_tcp_opt tcpopts[] = {
TCPOPT_SACK,
"SACK",
&ett_tcp_option_sack,
- VARIABLE_LENGTH,
+ OPT_LEN_VARIABLE_LENGTH,
TCPOLEN_SACK_MIN,
dissect_tcpopt_sack
},
@@ -3628,7 +3622,7 @@ static const ip_tcp_opt tcpopts[] = {
TCPOPT_ECHO,
"Echo",
NULL,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
TCPOLEN_ECHO,
dissect_tcpopt_echo
},
@@ -3636,7 +3630,7 @@ static const ip_tcp_opt tcpopts[] = {
TCPOPT_ECHOREPLY,
"Echo reply",
NULL,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
TCPOLEN_ECHOREPLY,
dissect_tcpopt_echo
},
@@ -3644,7 +3638,7 @@ static const ip_tcp_opt tcpopts[] = {
TCPOPT_TIMESTAMP,
"Timestamps",
NULL,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
TCPOLEN_TIMESTAMP,
dissect_tcpopt_timestamp
},
@@ -3652,7 +3646,7 @@ static const ip_tcp_opt tcpopts[] = {
TCPOPT_MPTCP,
"Multipath TCP",
NULL,
- VARIABLE_LENGTH,
+ OPT_LEN_VARIABLE_LENGTH,
TCPOLEN_MPTCP_MIN,
dissect_tcpopt_mptcp
},
@@ -3660,7 +3654,7 @@ static const ip_tcp_opt tcpopts[] = {
TCPOPT_CC,
"CC",
NULL,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
TCPOLEN_CC,
dissect_tcpopt_cc
},
@@ -3668,7 +3662,7 @@ static const ip_tcp_opt tcpopts[] = {
TCPOPT_CCNEW,
"CC.NEW",
NULL,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
TCPOLEN_CCNEW,
dissect_tcpopt_cc
},
@@ -3676,7 +3670,7 @@ static const ip_tcp_opt tcpopts[] = {
TCPOPT_CCECHO,
"CC.ECHO",
NULL,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
TCPOLEN_CCECHO,
dissect_tcpopt_cc
},
@@ -3684,7 +3678,7 @@ static const ip_tcp_opt tcpopts[] = {
TCPOPT_MD5,
"TCP MD5 signature",
NULL,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
TCPOLEN_MD5,
NULL
},
@@ -3692,7 +3686,7 @@ static const ip_tcp_opt tcpopts[] = {
TCPOPT_SCPS,
"SCPS capabilities",
&ett_tcp_option_scps,
- VARIABLE_LENGTH,
+ OPT_LEN_VARIABLE_LENGTH,
TCPOLEN_SCPS,
dissect_tcpopt_scps
},
@@ -3700,7 +3694,7 @@ static const ip_tcp_opt tcpopts[] = {
TCPOPT_SNACK,
"Selective Negative Acknowledgment",
NULL,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
TCPOLEN_SNACK,
dissect_tcpopt_snack
},
@@ -3708,7 +3702,7 @@ static const ip_tcp_opt tcpopts[] = {
TCPOPT_RECBOUND,
"SCPS record boundary",
NULL,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
TCPOLEN_RECBOUND,
NULL
},
@@ -3716,7 +3710,7 @@ static const ip_tcp_opt tcpopts[] = {
TCPOPT_CORREXP,
"SCPS corruption experienced",
NULL,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
TCPOLEN_CORREXP,
NULL
},
@@ -3724,7 +3718,7 @@ static const ip_tcp_opt tcpopts[] = {
TCPOPT_QS,
"Quick-Start",
NULL,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
TCPOLEN_QS,
dissect_tcpopt_qs
},
@@ -3732,7 +3726,7 @@ static const ip_tcp_opt tcpopts[] = {
TCPOPT_USER_TO,
"User Timeout",
&ett_tcp_option_user_to,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
TCPOLEN_USER_TO,
dissect_tcpopt_user_to
},
@@ -3740,7 +3734,7 @@ static const ip_tcp_opt tcpopts[] = {
TCPOPT_RVBD_PROBE,
"Riverbed Probe",
NULL,
- VARIABLE_LENGTH,
+ OPT_LEN_VARIABLE_LENGTH,
TCPOLEN_RVBD_PROBE_MIN,
dissect_tcpopt_rvbd_probe
},
@@ -3748,7 +3742,7 @@ static const ip_tcp_opt tcpopts[] = {
TCPOPT_RVBD_TRPY,
"Riverbed Transparency",
NULL,
- FIXED_LENGTH,
+ OPT_LEN_FIXED_LENGTH,
TCPOLEN_RVBD_TRPY_MIN,
dissect_tcpopt_rvbd_trpy
},
@@ -3756,7 +3750,7 @@ static const ip_tcp_opt tcpopts[] = {
TCPOPT_EXP_FD,
"Experimental",
NULL,
- VARIABLE_LENGTH,
+ OPT_LEN_VARIABLE_LENGTH,
TCPOLEN_EXP_MIN,
dissect_tcpopt_exp
},
@@ -3764,7 +3758,7 @@ static const ip_tcp_opt tcpopts[] = {
TCPOPT_EXP_FE,
"Experimental",
NULL,
- VARIABLE_LENGTH,
+ OPT_LEN_VARIABLE_LENGTH,
TCPOLEN_EXP_MIN,
dissect_tcpopt_exp
}
@@ -3806,6 +3800,13 @@ decode_tcp_ports(tvbuff_t *tvb, int offset, packet_info *pinfo,
next_tvb = tvb_new_subset_remaining(tvb, offset);
+ if (tcp_no_subdissector_on_error && tcpd && tcpd->ta && tcpd->ta->flags & (TCP_A_RETRANSMISSION | TCP_A_OUT_OF_ORDER)) {
+ /* Don't try to dissect a retransmission high chance that it will mess
+ * subdissectors for protocols that require in-order delivery of the
+ * PDUs. (i.e. DCE/RPCoverHTTP and encryption)
+ */
+ return FALSE;
+ }
/* determine if this packet is part of a conversation and call dissector */
/* for the conversation if available */
@@ -3835,7 +3836,8 @@ decode_tcp_ports(tvbuff_t *tvb, int offset, packet_info *pinfo,
}
/* Do lookups with the subdissector table.
- We try the port number with the lower value first, followed by the
+ Try the server port captured on the SYN or SYN|ACK packet. After that
+ try the port number with the lower value first, followed by the
port number with the higher value. This means that, for packets
where a dissector is registered for *both* port numbers:
@@ -3849,6 +3851,13 @@ decode_tcp_ports(tvbuff_t *tvb, int offset, packet_info *pinfo,
XXX - we ignore port numbers of 0, as some dissectors use a port
number of 0 to disable the port. */
+
+ if (tcpd && tcpd->server_port != 0 &&
+ dissector_try_uint(subdissector_table, tcpd->server_port, next_tvb, pinfo, tree)){
+ pinfo->want_pdu_tracking -= !!(pinfo->want_pdu_tracking);
+ return TRUE;
+ }
+
if (src_port > dst_port) {
low_port = dst_port;
high_port = src_port;
@@ -3856,6 +3865,13 @@ decode_tcp_ports(tvbuff_t *tvb, int offset, packet_info *pinfo,
low_port = src_port;
high_port = dst_port;
}
+ if (tcp_no_subdissector_on_error && tcpd && tcpd->ta && tcpd->ta->flags & (TCP_A_RETRANSMISSION | TCP_A_OUT_OF_ORDER)) {
+ /* Don't try to dissect a retransmission high chance that it will mess
+ * subdissectors for protocols that require in-order delivery of the
+ * PDUs. (i.e. DCE/RPCoverHTTP and encryption)
+ */
+ return FALSE;
+ }
if (low_port != 0 &&
dissector_try_uint(subdissector_table, low_port, next_tvb, pinfo, tree)){
pinfo->want_pdu_tracking -= !!(pinfo->want_pdu_tracking);
@@ -4115,13 +4131,18 @@ dissect_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
tcpd=get_tcp_conversation_data(conv,pinfo);
}
if(!tcpd->ta)
- tcp_analyze_get_acked_struct(pinfo->fd->num, TRUE, tcpd);
+ tcp_analyze_get_acked_struct(pinfo->fd->num, tcph->th_seq, tcph->th_ack, TRUE, tcpd);
tcpd->ta->flags|=TCP_A_REUSED_PORTS;
}
if (tcpd) {
item = proto_tree_add_uint(tcp_tree, hf_tcp_stream, tvb, offset, 0, tcpd->stream);
PROTO_ITEM_SET_GENERATED(item);
+
+ /* Copy the stream index into the header as well to make it available
+ * to tap listeners.
+ */
+ tcph->th_stream = tcpd->stream;
}
/* Do we need to calculate timestamps relative to the tcp-stream? */
@@ -4337,12 +4358,18 @@ dissect_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
if(tcph->th_flags & TH_SYN) {
- if(tcph->th_flags & TH_ACK)
- expert_add_info_format(pinfo, tf_syn, PI_SEQUENCE, PI_CHAT, "Connection establish acknowledge (SYN+ACK): server port %s",
+ if(tcph->th_flags & TH_ACK) {
+ expert_add_info_format(pinfo, tf_syn, PI_SEQUENCE, PI_CHAT, "Connection establish acknowledge (SYN+ACK): server port %s",
get_tcp_port(tcph->th_sport));
- else
- expert_add_info_format(pinfo, tf_syn, PI_SEQUENCE, PI_CHAT, "Connection establish request (SYN): server port %s",
+ /* Save the server port to help determine dissector used */
+ tcpd->server_port = tcph->th_sport;
+ }
+ else {
+ expert_add_info_format(pinfo, tf_syn, PI_SEQUENCE, PI_CHAT, "Connection establish request (SYN): server port %s",
get_tcp_port(tcph->th_dport));
+ /* Save the server port to help determine dissector used */
+ tcpd->server_port = tcph->th_dport;
+ }
}
if(tcph->th_flags & TH_FIN)
/* XXX - find a way to know the server port and output only that one */
@@ -4606,7 +4633,14 @@ dissect_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* handle TCP seq# analysis, print any extra SEQ/ACK data for this segment*/
if(tcp_analyze_seq){
- tcp_print_sequence_number_analysis(pinfo, tvb, tcp_tree, tcpd);
+ guint32 use_seq = tcph->th_seq;
+ guint32 use_ack = tcph->th_ack;
+ /* May need to recover absolute values here... */
+ if (tcp_relative_seq) {
+ use_seq += tcpd->fwd->base_seq;
+ use_ack += tcpd->rev->base_seq;
+ }
+ tcp_print_sequence_number_analysis(pinfo, tvb, tcp_tree, tcpd, use_seq, use_ack);
}
/* handle conversation timestamps */
@@ -4832,6 +4866,10 @@ proto_register_tcp(void)
{ "Bad Checksum", "tcp.checksum_bad", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
"True: checksum doesn't match packet content; False: matches content or not checked", HFILL }},
+ { &hf_tcp_analysis,
+ { "SEQ/ACK analysis", "tcp.analysis", FT_NONE, BASE_NONE, NULL, 0x0,
+ "This frame has some of the TCP analysis shown", HFILL }},
+
{ &hf_tcp_analysis_flags,
{ "TCP Analysis Flags", "tcp.analysis.flags", FT_NONE, BASE_NONE, NULL, 0x0,
"This frame has some of the TCP analysis flags set", HFILL }},
@@ -4853,12 +4891,12 @@ proto_register_tcp(void)
"A new tcp session has started with previously used port numbers", HFILL }},
{ &hf_tcp_analysis_lost_packet,
- { "Previous Segment Lost", "tcp.analysis.lost_segment", FT_NONE, BASE_NONE, NULL, 0x0,
- "A segment before this one was lost from the capture", HFILL }},
+ { "Previous Segment Unseen", "tcp.analysis.lost_segment", FT_NONE, BASE_NONE, NULL, 0x0,
+ "We may not have captured a segment before this one", HFILL }},
{ &hf_tcp_analysis_ack_lost_packet,
- { "ACKed Lost Packet", "tcp.analysis.ack_lost_segment", FT_NONE, BASE_NONE, NULL, 0x0,
- "This frame ACKs a lost segment", HFILL }},
+ { "ACKed Unseen Packet", "tcp.analysis.ack_lost_segment", FT_NONE, BASE_NONE, NULL, 0x0,
+ "This frame ACKs a segment that may not have been captured", HFILL }},
{ &hf_tcp_analysis_window_update,
{ "Window update", "tcp.analysis.window_update", FT_NONE, BASE_NONE, NULL, 0x0,
@@ -5561,6 +5599,11 @@ proto_register_tcp(void)
"Do not place the TCP Timestamps in the summary line",
&tcp_ignore_timestamps);
+ prefs_register_bool_preference(tcp_module, "no_subdissector_on_error",
+ "Do not call subdissectors for error packets",
+ "Do not call any subdissectors for Retransmitted or OutOfOrder segments",
+ &tcp_no_subdissector_on_error);
+
register_init_routine(tcp_init);
}
diff --git a/epan/dissectors/packet-tcp.h b/epan/dissectors/packet-tcp.h
index c06a40bc30..f93c2d5ba2 100644
--- a/epan/dissectors/packet-tcp.h
+++ b/epan/dissectors/packet-tcp.h
@@ -59,6 +59,7 @@ typedef struct tcpheader {
guint16 th_dport;
guint8 th_hlen;
guint16 th_flags;
+ guint32 th_stream; /* this stream index field is included to help differentiate when address/port pairs are reused */
address ip_src;
address ip_dst;
} tcp_info_t;
@@ -118,7 +119,7 @@ struct tcp_acked {
guint32 rto_frame;
nstime_t rto_ts; /* Time since previous packet for
retransmissions. */
- guint16 flags;
+ guint16 flags; /* see TCP_A_* in packet-tcp.c */
guint32 dupack_num; /* dup ack number */
guint32 dupack_frame; /* dup ack to frame # */
guint32 bytes_in_flight; /* number of bytes in flight */
@@ -229,11 +230,16 @@ struct tcp_analysis {
*/
nstime_t ts_prev;
- /* Keep track of tcp stream numbers instead of using the conversation
- * index (as how it was done before). This prevents gaps in the
- * stream index numbering
- */
- guint32 stream;
+ /* Keep track of tcp stream numbers instead of using the conversation
+ * index (as how it was done before). This prevents gaps in the
+ * stream index numbering
+ */
+ guint32 stream;
+
+ /* Remembers the server port on the SYN (or SYN|ACK) packet to
+ * help determine which dissector to call
+ */
+ guint16 server_port;
};
/* Structure that keeps per packet data. First used to be able
diff --git a/epan/dissectors/packet-tds.c b/epan/dissectors/packet-tds.c
index 7a696c767c..7b4bbcfb58 100644
--- a/epan/dissectors/packet-tds.c
+++ b/epan/dissectors/packet-tds.c
@@ -148,14 +148,13 @@
# include "config.h"
#endif
-#include <stdlib.h>
#include <string.h>
#include <ctype.h>
-#include <glib.h>
-
#include "isprint.h"
+#include <glib.h>
+
#include <epan/packet.h>
#include <epan/conversation.h>
#include <epan/strutil.h>
@@ -967,7 +966,7 @@ dissect_tds_query_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
is_unicode = FALSE;
if (is_unicode)
- msg = tvb_get_ephemeral_unicode_string(tvb, offset, len/2, ENC_LITTLE_ENDIAN);
+ msg = tvb_get_ephemeral_unicode_string(tvb, offset, len, ENC_LITTLE_ENDIAN);
else
msg = (gchar*)tvb_get_ephemeral_string(tvb, offset, len);
@@ -986,7 +985,7 @@ dissect_tds5_lang_token(tvbuff_t *tvb, guint offset, guint len, proto_tree *tree
len -= 1;
if (is_unicode)
- msg = tvb_get_ephemeral_unicode_string(tvb, offset, (len)/2, ENC_LITTLE_ENDIAN);
+ msg = tvb_get_ephemeral_unicode_string(tvb, offset, len, ENC_LITTLE_ENDIAN);
else
msg = (gchar*)tvb_get_ephemeral_string(tvb, offset, len);
@@ -1149,8 +1148,8 @@ dissect_tds7_login(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (len != 0) {
if( i != 2) {
/* tds 7 is always unicode */
- val = tvb_get_ephemeral_unicode_string(tvb, offset2, len, ENC_LITTLE_ENDIAN);
len *= 2;
+ val = tvb_get_ephemeral_unicode_string(tvb, offset2, len, ENC_LITTLE_ENDIAN);
proto_tree_add_text(login_tree, tvb, offset2, len, "%s: %s", val_to_str(i, login_field_names, "Unknown"), val);
} else {
/* This field is the password. We retrieve it from the packet
@@ -1465,9 +1464,9 @@ dissect_tds_env_chg(tvbuff_t *tvb, guint offset, guint token_sz,
if (env_type != 7) { /* if it's not 'Collation Info - which is not textual! */
string_offset = offset + 2;
if (is_unicode == TRUE) {
+ new_len *= 2;
new_val = tvb_get_ephemeral_unicode_string(tvb, string_offset,
new_len, ENC_LITTLE_ENDIAN);
- new_len *= 2;
} else
new_val = (gchar*)tvb_get_ephemeral_string(tvb, string_offset, new_len);
proto_tree_add_text(tree, tvb, string_offset, new_len,
@@ -1492,9 +1491,9 @@ dissect_tds_env_chg(tvbuff_t *tvb, guint offset, guint token_sz,
if (old_len) {
string_offset = old_len_offset + 1;
if (is_unicode == TRUE) {
+ old_len *= 2;
old_val = tvb_get_ephemeral_unicode_string(tvb, string_offset,
old_len, ENC_LITTLE_ENDIAN);
- old_len *= 2;
} else
old_val = (gchar*)tvb_get_ephemeral_string(tvb, string_offset, old_len);
proto_tree_add_text(tree, tvb, string_offset, old_len,
@@ -1525,8 +1524,8 @@ dissect_tds_err_token(tvbuff_t *tvb, guint offset, guint token_sz _U_, proto_tre
is_unicode = TRUE;
if(is_unicode) {
- msg = tvb_get_ephemeral_unicode_string(tvb, offset, msg_len, ENC_LITTLE_ENDIAN);
msg_len *= 2;
+ msg = tvb_get_ephemeral_unicode_string(tvb, offset, msg_len, ENC_LITTLE_ENDIAN);
} else {
msg = (gchar*)tvb_get_ephemeral_string(tvb, offset, msg_len);
}
@@ -1539,8 +1538,8 @@ dissect_tds_err_token(tvbuff_t *tvb, guint offset, guint token_sz _U_, proto_tre
offset +=1;
if(srvr_len) {
if (is_unicode) {
- msg = tvb_get_ephemeral_unicode_string(tvb, offset, srvr_len, ENC_LITTLE_ENDIAN);
srvr_len *=2;
+ msg = tvb_get_ephemeral_unicode_string(tvb, offset, srvr_len, ENC_LITTLE_ENDIAN);
} else {
msg = (gchar*)tvb_get_ephemeral_string(tvb, offset, srvr_len);
}
@@ -1554,8 +1553,8 @@ dissect_tds_err_token(tvbuff_t *tvb, guint offset, guint token_sz _U_, proto_tre
offset +=1;
if(proc_len) {
if (is_unicode) {
- msg = tvb_get_ephemeral_unicode_string(tvb, offset, proc_len, ENC_LITTLE_ENDIAN);
proc_len *=2;
+ msg = tvb_get_ephemeral_unicode_string(tvb, offset, proc_len, ENC_LITTLE_ENDIAN);
} else {
msg = (gchar*)tvb_get_ephemeral_string(tvb, offset, proc_len);
}
@@ -1590,8 +1589,8 @@ dissect_tds_login_ack_token(tvbuff_t *tvb, guint offset, guint token_sz, proto_t
is_unicode = TRUE;
proto_tree_add_text(tree, tvb, offset, 0, "msg_len: %d, token_sz: %d, total: %d",msg_len, token_sz, msg_len + 6U + 3U);
if(is_unicode) {
- msg = tvb_get_ephemeral_unicode_string(tvb, offset, msg_len, ENC_LITTLE_ENDIAN);
msg_len *= 2;
+ msg = tvb_get_ephemeral_unicode_string(tvb, offset, msg_len, ENC_LITTLE_ENDIAN);
} else {
msg = (gchar*)tvb_get_ephemeral_string(tvb, offset, msg_len);
}
@@ -1643,9 +1642,10 @@ dissect_tds7_results_token(tvbuff_t *tvb, guint offset, proto_tree *tree)
table_len = tvb_get_letohs(tvb, offset);
offset +=2;
if(table_len != 0) {
+ table_len *= 2;
msg = tvb_get_ephemeral_unicode_string(tvb, offset, table_len, ENC_LITTLE_ENDIAN);
- proto_tree_add_text(tree, tvb, offset, table_len*2, "Table name: %s", msg);
- offset += table_len*2;
+ proto_tree_add_text(tree, tvb, offset, table_len, "Table name: %s", msg);
+ offset += table_len;
}
}
else if (type == 106 || type == 108) {
@@ -1671,9 +1671,10 @@ dissect_tds7_results_token(tvbuff_t *tvb, guint offset, proto_tree *tree)
proto_tree_add_text(tree, tvb, offset, 1, "message length: %d",msg_len);
offset += 1;
if(msg_len != 0) {
+ msg_len *= 2;
msg = tvb_get_ephemeral_unicode_string(tvb, offset, msg_len, ENC_LITTLE_ENDIAN);
- proto_tree_add_text(tree, tvb, offset, msg_len*2, "Text: %s", msg);
- offset += msg_len*2;
+ proto_tree_add_text(tree, tvb, offset, msg_len, "Text: %s", msg);
+ offset += msg_len;
}
}
return offset;
@@ -1864,7 +1865,7 @@ dissect_tds_type_varbyte(tvbuff_t *tvb, guint *offset, packet_info *pinfo, proto
proto_tree_add_item(sub_tree, hf_tds_type_varbyte_data_string, tvb, *offset, length, ENC_ASCII|ENC_NA);
break;
case TDS_DATA_TYPE_NVARCHAR: /* NVarChar */
- string_value = tvb_get_ephemeral_unicode_string(tvb, *offset, length / 2, ENC_LITTLE_ENDIAN);
+ string_value = tvb_get_ephemeral_unicode_string(tvb, *offset, length, ENC_LITTLE_ENDIAN);
proto_tree_add_string(sub_tree, hf_tds_type_varbyte_data_string, tvb, *offset, length, string_value);
break;
case TDS_DATA_TYPE_XML: /* XML (introduced in TDS 7.2) */
@@ -2018,7 +2019,7 @@ dissect_tds_type_varbyte(tvbuff_t *tvb, guint *offset, packet_info *pinfo, proto
break;
case TDS_DATA_TYPE_NVARCHAR: /* NVarChar */
case TDS_DATA_TYPE_NCHAR: /* NChar */
- string_value = tvb_get_ephemeral_unicode_string(tvb, *offset, length / 2, ENC_LITTLE_ENDIAN);
+ string_value = tvb_get_ephemeral_unicode_string(tvb, *offset, length, ENC_LITTLE_ENDIAN);
proto_tree_add_string(sub_tree, hf_tds_type_varbyte_data_string, tvb, *offset, length, string_value);
break;
default:
@@ -2045,7 +2046,7 @@ dissect_tds_type_varbyte(tvbuff_t *tvb, guint *offset, packet_info *pinfo, proto
else {
switch(data_type) {
case TDS_DATA_TYPE_NTEXT: /* NText */
- string_value = tvb_get_ephemeral_unicode_string(tvb, *offset, length / 2, ENC_LITTLE_ENDIAN);
+ string_value = tvb_get_ephemeral_unicode_string(tvb, *offset, length, ENC_LITTLE_ENDIAN);
proto_tree_add_string(sub_tree, hf_tds_type_varbyte_data_string, tvb, *offset, length, string_value);
break;
default: /*TODO*/
@@ -2099,9 +2100,10 @@ dissect_tds_rpc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset += 2;
}
else if (len != 0) {
+ len *= 2;
val = tvb_get_ephemeral_unicode_string(tvb, offset, len, ENC_LITTLE_ENDIAN);
- proto_tree_add_string(tree, hf_tds_rpc_name, tvb, offset, len * 2, val);
- offset += len * 2;
+ proto_tree_add_string(tree, hf_tds_rpc_name, tvb, offset, len, val);
+ offset += len;
}
break;
}
@@ -2128,9 +2130,10 @@ dissect_tds_rpc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(sub_tree, hf_tds_rpc_parameter_name_length, tvb, offset, 1, ENC_LITTLE_ENDIAN);
++offset;
if(len) {
+ len *= 2;
val = tvb_get_ephemeral_unicode_string(tvb, offset, len, ENC_LITTLE_ENDIAN);
- proto_tree_add_string(sub_tree, hf_tds_rpc_parameter_name, tvb, offset, len * 2, val);
- offset += len * 2;
+ proto_tree_add_string(sub_tree, hf_tds_rpc_parameter_name, tvb, offset, len, val);
+ offset += len;
}
item = proto_tree_add_item(sub_tree, hf_tds_rpc_parameter_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
status_sub_tree = proto_item_add_subtree(item, ett_tds_rpc_parameter_status);
diff --git a/epan/dissectors/packet-teamspeak2.c b/epan/dissectors/packet-teamspeak2.c
index bedb57ee4d..c6b2607746 100644
--- a/epan/dissectors/packet-teamspeak2.c
+++ b/epan/dissectors/packet-teamspeak2.c
@@ -28,13 +28,13 @@
# include "config.h"
#endif
+#include <glib.h>
+
#include <epan/packet.h>
#include <wsutil/crc32.h>
#include <epan/crc32-tvb.h>
#include <epan/reassemble.h>
#include <epan/conversation.h>
-#include <stdlib.h>
-
/* Packet Classes */
#define TS2C_STANDARD 0xbef0
@@ -509,7 +509,7 @@ static void ts2_parse_newplayerjoined(tvbuff_t *tvb, proto_tree *ts2_tree)
offset+=4;
proto_tree_add_item(ts2_tree, hf_ts2_unknown, tvb, offset, 6, ENC_NA);
offset+=6;
- proto_tree_add_item(ts2_tree, hf_ts2_nick, tvb, offset, 1, ENC_ASCII|ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ts2_tree, hf_ts2_nick, tvb, offset, 1, ENC_ASCII|ENC_NA);
offset+=30;
}
@@ -539,7 +539,7 @@ static void ts2_parse_switchchannel(tvbuff_t *tvb, proto_tree *ts2_tree)
offset=0;
proto_tree_add_item(ts2_tree, hf_ts2_channel_id, tvb, offset, 4, ENC_LITTLE_ENDIAN);
offset+=4;
- proto_tree_add_item(ts2_tree, hf_ts2_password, tvb, offset, 1, ENC_ASCII|ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ts2_tree, hf_ts2_password, tvb, offset, 1, ENC_ASCII|ENC_NA);
offset+=30;
}
@@ -589,11 +589,11 @@ static void ts2_parse_loginpart2(tvbuff_t *tvb, proto_tree *ts2_tree)
offset=0;
proto_tree_add_item(ts2_tree, hf_ts2_unknown, tvb, 0, 2, ENC_NA);
offset+=2;
- proto_tree_add_item(ts2_tree, hf_ts2_channel, tvb, offset, 1, ENC_ASCII|ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ts2_tree, hf_ts2_channel, tvb, offset, 1, ENC_ASCII|ENC_NA);
offset+=30;
- proto_tree_add_item(ts2_tree, hf_ts2_subchannel, tvb, offset, 1, ENC_ASCII|ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ts2_tree, hf_ts2_subchannel, tvb, offset, 1, ENC_ASCII|ENC_NA);
offset+=30;
- proto_tree_add_item(ts2_tree, hf_ts2_channelpassword, tvb, offset, 1, ENC_ASCII|ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ts2_tree, hf_ts2_channelpassword, tvb, offset, 1, ENC_ASCII|ENC_NA);
offset+=30;
proto_tree_add_item(ts2_tree, hf_ts2_unknown, tvb, offset, 4, ENC_NA);
@@ -678,7 +678,7 @@ static void ts2_parse_playerlist(tvbuff_t *tvb, proto_tree *ts2_tree)
proto_tree_add_item(ts2_tree, hf_ts2_player_status_flags, tvb, offset, 2, ENC_LITTLE_ENDIAN);
ts2_add_statusflags(tvb, ts2_tree, offset);
offset+=2;
- proto_tree_add_item(ts2_tree, hf_ts2_nick, tvb, offset, 1, ENC_ASCII|ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ts2_tree, hf_ts2_nick, tvb, offset, 1, ENC_ASCII|ENC_NA);
offset+=30;
x++;
}
@@ -782,27 +782,27 @@ static void dissect_ts2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(ts2_tree, hf_ts2_ackto, tvb, 20, 4, ENC_LITTLE_ENDIAN);
break;
case TS2T_LOGINREQUEST:
- proto_tree_add_item(ts2_tree, hf_ts2_protocol_string, tvb, 20, 1, ENC_ASCII|ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ts2_tree, hf_ts2_platform_string, tvb, 50, 1, ENC_ASCII|ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ts2_tree, hf_ts2_protocol_string, tvb, 20, 1, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(ts2_tree, hf_ts2_platform_string, tvb, 50, 1, ENC_ASCII|ENC_NA);
proto_tree_add_item(ts2_tree, hf_ts2_unknown, tvb, 80, 9, ENC_NA);
proto_tree_add_item(ts2_tree, hf_ts2_registeredlogin, tvb, 90, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ts2_tree, hf_ts2_name, tvb, 90, 1, ENC_ASCII|ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ts2_tree, hf_ts2_password, tvb, 120, 1, ENC_ASCII|ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ts2_tree, hf_ts2_nick, tvb, 150, 1, ENC_ASCII|ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ts2_tree, hf_ts2_name, tvb, 90, 1, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(ts2_tree, hf_ts2_password, tvb, 120, 1, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(ts2_tree, hf_ts2_nick, tvb, 150, 1, ENC_ASCII|ENC_NA);
conversation_data->server_port=pinfo->destport;
conversation_data->server_addr=pinfo->dst;
break;
case TS2T_LOGINREPLY:
- proto_tree_add_item(ts2_tree, hf_ts2_server_name, tvb, 20, 1, ENC_ASCII|ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ts2_tree, hf_ts2_platform_string, tvb, 50, 1, ENC_ASCII|ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ts2_tree, hf_ts2_server_name, tvb, 20, 1, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(ts2_tree, hf_ts2_platform_string, tvb, 50, 1, ENC_ASCII|ENC_NA);
proto_tree_add_item(ts2_tree, hf_ts2_unknown, tvb, 80, 9, ENC_NA);
proto_tree_add_item(ts2_tree, hf_ts2_badlogin, tvb, 89, 3, ENC_LITTLE_ENDIAN);
proto_tree_add_item(ts2_tree, hf_ts2_unknown, tvb, 92, 80, ENC_NA);
proto_tree_add_item(ts2_tree, hf_ts2_sessionkey, tvb, 172, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(ts2_tree, hf_ts2_unknown, tvb, 178, 3, ENC_NA);
- proto_tree_add_item(ts2_tree, hf_ts2_server_welcome_message, tvb, 180, 1, ENC_ASCII|ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ts2_tree, hf_ts2_server_welcome_message, tvb, 180, 1, ENC_ASCII|ENC_NA);
break;
}
break;
diff --git a/epan/dissectors/packet-telnet.c b/epan/dissectors/packet-telnet.c
index c07e14a41f..fcd106ea50 100644
--- a/epan/dissectors/packet-telnet.c
+++ b/epan/dissectors/packet-telnet.c
@@ -103,7 +103,7 @@ static dissector_handle_t tn5250_handle;
/* Some defines for Telnet */
-#define TCP_PORT_TELNET 23
+#define TCP_PORT_TELNET 23
#define TN_IAC 255
#define TN_DONT 254
@@ -125,40 +125,41 @@ static dissector_handle_t tn5250_handle;
#define TN_ABORT 238
#define TN_SUSP 237
#define TN_EOF 236
-#define TN_ARE 1
+#define TN_ARE 1
typedef enum {
- NO_LENGTH, /* option has no data, hence no length */
- FIXED_LENGTH, /* option always has the same length */
- VARIABLE_LENGTH /* option is variable-length - optlen is minimum */
+ NO_LENGTH, /* option has no data, hence no length */
+ FIXED_LENGTH, /* option always has the same length */
+ VARIABLE_LENGTH /* option is variable-length - optlen is minimum */
} tn_opt_len_type;
/* Member of table of IP or TCP options. */
typedef struct tn_opt {
- const char *name; /* name of option */
- gint *subtree_index; /* pointer to subtree index for option */
- tn_opt_len_type len_type; /* type of option length field */
- int optlen; /* value length should be (minimum if VARIABLE) */
- void (*dissect)(packet_info *pinfo, const char *, tvbuff_t *, int, int, proto_tree *);
- /* routine to dissect option */
+ const char *name; /* name of option */
+ gint *subtree_index; /* pointer to subtree index for option */
+ tn_opt_len_type len_type; /* type of option length field */
+ int optlen; /* value length should be (minimum if VARIABLE) */
+ void (*dissect)(packet_info *pinfo, const char *, tvbuff_t *, int, int, proto_tree *);
+ /* routine to dissect option */
} tn_opt;
static void
check_tn3270_model(packet_info *pinfo _U_, const char *terminaltype)
{
- int model;
+ int model;
char str_model[2];
+
if ((strcmp(terminaltype,"IBM-3278-2-E") == 0) || (strcmp(terminaltype,"IBM-3278-2") == 0) ||
(strcmp(terminaltype,"IBM-3278-3") == 0) || (strcmp(terminaltype,"IBM-3278-4") == 0) ||
(strcmp(terminaltype,"IBM-3278-5") == 0) || (strcmp(terminaltype,"IBM-3277-2") == 0) ||
(strcmp(terminaltype,"IBM-3279-3") == 0) || (strcmp(terminaltype,"IBM-3279-4") == 0) ||
(strcmp(terminaltype,"IBM-3279-2-E") == 0) || (strcmp(terminaltype,"IBM-3279-2") == 0) ||
(strcmp(terminaltype,"IBM-3279-4-E") == 0)) {
- str_model[0] = terminaltype[9];
- str_model[1] = '\0';
- model = atoi(str_model);
- add_tn3270_conversation(pinfo, 0, model);
+ str_model[0] = terminaltype[9];
+ str_model[1] = '\0';
+ model = atoi(str_model);
+ add_tn3270_conversation(pinfo, 0, model);
}
}
@@ -166,7 +167,7 @@ static void
check_for_tn3270(packet_info *pinfo _U_, const char *optname, const char *terminaltype)
{
if (strcmp(optname,"Terminal Type") != 0) {
- return;
+ return;
}
check_tn3270_model(pinfo, terminaltype);
@@ -179,8 +180,8 @@ check_for_tn3270(packet_info *pinfo _U_, const char *optname, const char *termin
(strcmp(terminaltype,"IBM-3196-A1") == 0) || /* 24 x 80 monochrome display*/
(strcmp(terminaltype,"IBM-5292-2") == 0) || /* 24 x 80 color display*/
(strcmp(terminaltype,"IBM-5291-1") == 0) || /* 24 x 80 monochrome display*/
- (strcmp(terminaltype,"IBM-5251-11") == 0)) /* 24 x 80 monochrome display*/
- add_tn5250_conversation(pinfo, 0);
+ (strcmp(terminaltype,"IBM-5251-11") == 0)) /* 24 x 80 monochrome display*/
+ add_tn5250_conversation(pinfo, 0);
}
static void
@@ -192,7 +193,7 @@ dissect_string_subopt(packet_info *pinfo _U_, const char *optname, tvbuff_t *tvb
cmd = tvb_get_guint8(tvb, offset);
switch (cmd) {
- case 0: /* IS */
+ case 0: /* IS */
proto_tree_add_text(tree, tvb, offset, 1, "Here's my %s", optname);
offset++;
len--;
@@ -203,7 +204,7 @@ dissect_string_subopt(packet_info *pinfo _U_, const char *optname, tvbuff_t *tvb
check_for_tn3270(pinfo, optname, tvb_format_text(tvb, offset, len));
break;
- case 1: /* SEND */
+ case 1: /* SEND */
proto_tree_add_text(tree, tvb, offset, 1, "Send your %s", optname);
offset++;
len--;
@@ -229,27 +230,27 @@ dissect_tn3270_regime_subopt(packet_info *pinfo _U_, const char *optname _U_, tv
#define TN3270_REGIME_ARE 0x01
#define TN3270_REGIME_IS 0x00
-
guint8 cmd;
+
while (len > 0) {
cmd = tvb_get_guint8(tvb, offset);
switch (cmd) {
- case TN3270_REGIME_ARE:
- case TN3270_REGIME_IS:
- if (cmd == TN3270_REGIME_ARE) {
- proto_tree_add_text(tree, tvb, offset, 1, "ARE");
- add_tn3270_conversation(pinfo, 0, 0);
- } else {
- proto_tree_add_text(tree, tvb, offset, 1, "IS");
- }
- proto_tree_add_text(tree, tvb, offset + 1, len - 1, "%s",
- tvb_format_text(tvb, offset + 1, len - 1));
- offset += len;
- len -= len;
- return;
- default:
- proto_tree_add_text(tree, tvb, offset, 1, "Bogus value: %u", cmd);
- break;
+ case TN3270_REGIME_ARE:
+ case TN3270_REGIME_IS:
+ if (cmd == TN3270_REGIME_ARE) {
+ proto_tree_add_text(tree, tvb, offset, 1, "ARE");
+ add_tn3270_conversation(pinfo, 0, 0);
+ } else {
+ proto_tree_add_text(tree, tvb, offset, 1, "IS");
+ }
+ proto_tree_add_text(tree, tvb, offset + 1, len - 1, "%s",
+ tvb_format_text(tvb, offset + 1, len - 1));
+ offset += len;
+ len -= len;
+ return;
+ default:
+ proto_tree_add_text(tree, tvb, offset, 1, "Bogus value: %u", cmd);
+ break;
}
offset++;
len --;
@@ -288,10 +289,11 @@ dissect_tn3270e_subopt(packet_info *pinfo _U_, const char *optname _U_, tvbuff_t
{
guint8 cmd;
- int datalen;
- int connect_offset = 0;
- int device_type = 0;
- int rsn = 0;
+ int datalen;
+ int connect_offset = 0;
+ int device_type = 0;
+ int rsn = 0;
+
while (len > 0) {
cmd = tvb_get_guint8(tvb, offset);
switch (cmd) {
@@ -423,17 +425,17 @@ dissect_outmark_subopt(packet_info *pinfo _U_, const char *optname _U_, tvbuff_t
int len, proto_tree *tree)
{
guint8 cmd;
- int gs_offset, datalen;
+ int gs_offset, datalen;
while (len > 0) {
cmd = tvb_get_guint8(tvb, offset);
switch (cmd) {
- case 6: /* ACK */
+ case 6: /* ACK */
proto_tree_add_text(tree, tvb, offset, 1, "ACK");
break;
- case 21: /* NAK */
+ case 21: /* NAK */
proto_tree_add_text(tree, tvb, offset, 1, "NAK");
break;
@@ -490,13 +492,13 @@ dissect_htstops_subopt(packet_info *pinfo _U_, const char *optname, tvbuff_t *tv
cmd = tvb_get_guint8(tvb, offset);
switch (cmd) {
- case 0: /* IS */
+ case 0: /* IS */
proto_tree_add_text(tree, tvb, offset, 1, "Here's my %s", optname);
offset++;
len--;
break;
- case 1: /* SEND */
+ case 1: /* SEND */
proto_tree_add_text(tree, tvb, offset, 1, "Send your %s", optname);
offset++;
len--;
@@ -558,26 +560,27 @@ dissect_naws_subopt(packet_info *pinfo _U_, const char *optname _U_, tvbuff_t *t
/* BEGIN RFC-2217 (COM Port Control) Definitions */
-#define TNCOMPORT_SIGNATURE 0
-#define TNCOMPORT_SETBAUDRATE 1
-#define TNCOMPORT_SETDATASIZE 2
-#define TNCOMPORT_SETPARITY 3
-#define TNCOMPORT_SETSTOPSIZE 4
-#define TNCOMPORT_SETCONTROL 5
-#define TNCOMPORT_NOTIFYLINESTATE 6
-#define TNCOMPORT_NOTIFYMODEMSTATE 7
-#define TNCOMPORT_FLOWCONTROLSUSPEND 8
+#define TNCOMPORT_SIGNATURE 0
+#define TNCOMPORT_SETBAUDRATE 1
+#define TNCOMPORT_SETDATASIZE 2
+#define TNCOMPORT_SETPARITY 3
+#define TNCOMPORT_SETSTOPSIZE 4
+#define TNCOMPORT_SETCONTROL 5
+#define TNCOMPORT_NOTIFYLINESTATE 6
+#define TNCOMPORT_NOTIFYMODEMSTATE 7
+#define TNCOMPORT_FLOWCONTROLSUSPEND 8
#define TNCOMPORT_FLOWCONTROLRESUME 9
-#define TNCOMPORT_SETLINESTATEMASK 10
-#define TNCOMPORT_SETMODEMSTATEMASK 11
-#define TNCOMPORT_PURGEDATA 12
+#define TNCOMPORT_SETLINESTATEMASK 10
+#define TNCOMPORT_SETMODEMSTATEMASK 11
+#define TNCOMPORT_PURGEDATA 12
/* END RFC-2217 (COM Port Control) Definitions */
static void
dissect_comport_subopt(packet_info *pinfo _U_, const char *optname, tvbuff_t *tvb, int offset, int len,
proto_tree *tree)
-{static const char *datasizes[] = {
+{
+ static const char *datasizes[] = {
"Request",
"<invalid>",
"<invalid>",
@@ -587,22 +590,22 @@ dissect_comport_subopt(packet_info *pinfo _U_, const char *optname, tvbuff_t *tv
"6",
"7",
"8"
- };
- static const char *parities[] = {
+ };
+ static const char *parities[] = {
"Request",
"None",
"Odd",
"Even",
"Mark",
"Space"
- };
- static const char *stops[] = {
+ };
+ static const char *stops[] = {
"Request",
"1",
"2",
"1.5"
- };
- static const char *control[] = {
+ };
+ static const char *control[] = {
"Output Flow Control Request",
"Output Flow: None",
"Output Flow: XON/XOFF",
@@ -623,8 +626,8 @@ dissect_comport_subopt(packet_info *pinfo _U_, const char *optname, tvbuff_t *tv
"Output Flow: DCD",
"Input Flow: DTR",
"Output Flow: DSR"
- };
- static const char *linestate_bits[] = {
+ };
+ static const char *linestate_bits[] = {
"Data Ready",
"Overrun Error",
"Parity Error",
@@ -633,23 +636,23 @@ dissect_comport_subopt(packet_info *pinfo _U_, const char *optname, tvbuff_t *tv
"Transfer Holding Register Empty",
"Transfer Shift Register Empty",
"Timeout Error"
- };
- static const char *modemstate_bits[] = {
- "DCTS",
- "DDSR",
- "TERI",
- "DDCD",
- "CTS",
- "DSR",
- "RI",
- "DCD"
- };
- static const char *purges[] = {
- "Purge None",
- "Purge RX",
- "Purge TX",
- "Purge RX/TX"
- };
+ };
+ static const char *modemstate_bits[] = {
+ "DCTS",
+ "DDSR",
+ "TERI",
+ "DDCD",
+ "CTS",
+ "DSR",
+ "RI",
+ "DCD"
+ };
+ static const char *purges[] = {
+ "Purge None",
+ "Purge RX",
+ "Purge TX",
+ "Purge RX/TX"
+ };
guint8 cmd;
guint8 isservercmd;
@@ -664,68 +667,68 @@ dissect_comport_subopt(packet_info *pinfo _U_, const char *optname, tvbuff_t *tv
case TNCOMPORT_SIGNATURE:
len--;
if (len == 0) {
- proto_tree_add_text(tree, tvb, offset, 1, "%s Requests Signature",source);
+ proto_tree_add_text(tree, tvb, offset, 1, "%s Requests Signature",source);
} else {
- guint8 *sig = tvb_get_ephemeral_string(tvb, offset + 1, len);
- proto_tree_add_text(tree, tvb, offset, 1 + len, "%s Signature: %s",source, sig);
+ guint8 *sig = tvb_get_ephemeral_string(tvb, offset + 1, len);
+ proto_tree_add_text(tree, tvb, offset, 1 + len, "%s Signature: %s",source, sig);
}
break;
case TNCOMPORT_SETBAUDRATE:
len--;
if (len >= 4) {
- guint32 baud = tvb_get_ntohl(tvb, offset+1);
- if (baud == 0) {
- proto_tree_add_text(tree, tvb, offset, 5, "%s Requests Baud Rate",source);
- } else {
- proto_tree_add_text(tree, tvb, offset, 5, "%s Baud Rate: %d",source,baud);
- }
+ guint32 baud = tvb_get_ntohl(tvb, offset+1);
+ if (baud == 0) {
+ proto_tree_add_text(tree, tvb, offset, 5, "%s Requests Baud Rate",source);
+ } else {
+ proto_tree_add_text(tree, tvb, offset, 5, "%s Baud Rate: %d",source,baud);
+ }
} else {
- proto_tree_add_text(tree, tvb, offset, 1 + len, "%s <Invalid Baud Rate Packet>",source);
+ proto_tree_add_text(tree, tvb, offset, 1 + len, "%s <Invalid Baud Rate Packet>",source);
}
break;
case TNCOMPORT_SETDATASIZE:
len--;
if (len >= 1) {
- guint8 datasize = tvb_get_guint8(tvb, offset+1);
- const char *ds = (datasize > 8) ? "<invalid>" : datasizes[datasize];
- proto_tree_add_text(tree, tvb, offset, 2, "%s Data Size: %s",source,ds);
+ guint8 datasize = tvb_get_guint8(tvb, offset+1);
+ const char *ds = (datasize > 8) ? "<invalid>" : datasizes[datasize];
+ proto_tree_add_text(tree, tvb, offset, 2, "%s Data Size: %s",source,ds);
} else {
- proto_tree_add_text(tree, tvb, offset, 1 + len, "%s <Invalid Data Size Packet>",source);
+ proto_tree_add_text(tree, tvb, offset, 1 + len, "%s <Invalid Data Size Packet>",source);
}
break;
case TNCOMPORT_SETPARITY:
len--;
if (len >= 1) {
- guint8 parity = tvb_get_guint8(tvb, offset+1);
- const char *pr = (parity > 5) ? "<invalid>" : parities[parity];
- proto_tree_add_text(tree, tvb, offset, 2, "%s Parity: %s",source,pr);
+ guint8 parity = tvb_get_guint8(tvb, offset+1);
+ const char *pr = (parity > 5) ? "<invalid>" : parities[parity];
+ proto_tree_add_text(tree, tvb, offset, 2, "%s Parity: %s",source,pr);
} else {
- proto_tree_add_text(tree, tvb, offset, 1 + len, "%s <Invalid Parity Packet>",source);
+ proto_tree_add_text(tree, tvb, offset, 1 + len, "%s <Invalid Parity Packet>",source);
}
break;
case TNCOMPORT_SETSTOPSIZE:
len--;
if (len >= 1) {
- guint8 stop = tvb_get_guint8(tvb, offset+1);
- const char *st = (stop > 3) ? "<invalid>" : stops[stop];
- proto_tree_add_text(tree, tvb, offset, 2, "%s Stop: %s",source,st);
+ guint8 stop = tvb_get_guint8(tvb, offset+1);
+ const char *st = (stop > 3) ? "<invalid>" : stops[stop];
+ proto_tree_add_text(tree, tvb, offset, 2, "%s Stop: %s",source,st);
} else {
- proto_tree_add_text(tree, tvb, offset, 1 + len, "%s <Invalid Stop Packet>",source);
+ proto_tree_add_text(tree, tvb, offset, 1 + len, "%s <Invalid Stop Packet>",source);
}
break;
case TNCOMPORT_SETCONTROL:
len--;
if (len >= 1) {
- guint8 crt = tvb_get_guint8(tvb, offset+1);
- const char *c = (crt > 19) ? "Control: <invalid>" : control[crt];
- proto_tree_add_text(tree, tvb, offset, 2, "%s %s",source,c);
+ guint8 crt = tvb_get_guint8(tvb, offset+1);
+ const char *c = (crt > 19) ? "Control: <invalid>" : control[crt];
+ proto_tree_add_text(tree, tvb, offset, 2, "%s %s",source,c);
} else {
- proto_tree_add_text(tree, tvb, offset, 1 + len, "%s <Invalid Control Packet>",source);
+ proto_tree_add_text(tree, tvb, offset, 1 + len, "%s <Invalid Control Packet>",source);
}
break;
@@ -733,29 +736,29 @@ dissect_comport_subopt(packet_info *pinfo _U_, const char *optname, tvbuff_t *tv
case TNCOMPORT_NOTIFYLINESTATE:
len--;
if (len >= 1) {
- const char *print_pattern = (cmd == TNCOMPORT_SETLINESTATEMASK) ?
- "%s Set Linestate Mask: %s" : "%s Linestate: %s";
- char ls_buffer[512];
- guint8 ls = tvb_get_guint8(tvb, offset+1);
- int print_count = 0;
- int idx;
- ls_buffer[0] = '\0';
- for (idx = 0; idx < 8; idx++) {
- int bit = ls & 1;
- if (bit) {
- if (print_count != 0) {
- g_strlcat(ls_buffer,", ",512);
- }
- g_strlcat(ls_buffer,linestate_bits[idx], 512);
- print_count++;
- }
- ls = ls >> 1;
+ const char *print_pattern = (cmd == TNCOMPORT_SETLINESTATEMASK) ?
+ "%s Set Linestate Mask: %s" : "%s Linestate: %s";
+ char ls_buffer[512];
+ guint8 ls = tvb_get_guint8(tvb, offset+1);
+ int print_count = 0;
+ int idx;
+ ls_buffer[0] = '\0';
+ for (idx = 0; idx < 8; idx++) {
+ int bit = ls & 1;
+ if (bit) {
+ if (print_count != 0) {
+ g_strlcat(ls_buffer,", ",512);
+ }
+ g_strlcat(ls_buffer,linestate_bits[idx], 512);
+ print_count++;
}
- proto_tree_add_text(tree, tvb, offset, 2, print_pattern, source, ls_buffer);
+ ls = ls >> 1;
+ }
+ proto_tree_add_text(tree, tvb, offset, 2, print_pattern, source, ls_buffer);
} else {
- const char *print_pattern = (cmd == TNCOMPORT_SETLINESTATEMASK) ?
- "%s <Invalid Linestate Mask>" : "%s <Invalid Linestate Packet>";
- proto_tree_add_text(tree, tvb, offset, 1 + len, print_pattern, source);
+ const char *print_pattern = (cmd == TNCOMPORT_SETLINESTATEMASK) ?
+ "%s <Invalid Linestate Mask>" : "%s <Invalid Linestate Packet>";
+ proto_tree_add_text(tree, tvb, offset, 1 + len, print_pattern, source);
}
break;
@@ -763,29 +766,29 @@ dissect_comport_subopt(packet_info *pinfo _U_, const char *optname, tvbuff_t *tv
case TNCOMPORT_NOTIFYMODEMSTATE:
len--;
if (len >= 1) {
- const char *print_pattern = (cmd == TNCOMPORT_SETMODEMSTATEMASK) ?
- "%s Set Modemstate Mask: %s" : "%s Modemstate: %s";
- char ms_buffer[256];
- guint8 ms = tvb_get_guint8(tvb, offset+1);
- int print_count = 0;
- int idx;
- ms_buffer[0] = '\0';
- for (idx = 0; idx < 8; idx++) {
- int bit = ms & 1;
- if (bit) {
- if (print_count != 0) {
- g_strlcat(ms_buffer,", ",256);
- }
- g_strlcat(ms_buffer,modemstate_bits[idx],256);
- print_count++;
- }
- ms = ms >> 1;
+ const char *print_pattern = (cmd == TNCOMPORT_SETMODEMSTATEMASK) ?
+ "%s Set Modemstate Mask: %s" : "%s Modemstate: %s";
+ char ms_buffer[256];
+ guint8 ms = tvb_get_guint8(tvb, offset+1);
+ int print_count = 0;
+ int idx;
+ ms_buffer[0] = '\0';
+ for (idx = 0; idx < 8; idx++) {
+ int bit = ms & 1;
+ if (bit) {
+ if (print_count != 0) {
+ g_strlcat(ms_buffer,", ",256);
+ }
+ g_strlcat(ms_buffer,modemstate_bits[idx],256);
+ print_count++;
}
- proto_tree_add_text(tree, tvb, offset, 2, print_pattern, source, ms_buffer);
+ ms = ms >> 1;
+ }
+ proto_tree_add_text(tree, tvb, offset, 2, print_pattern, source, ms_buffer);
} else {
- const char *print_pattern = (cmd == TNCOMPORT_SETMODEMSTATEMASK) ?
- "%s <Invalid Modemstate Mask>" : "%s <Invalid Modemstate Packet>";
- proto_tree_add_text(tree, tvb, offset, 1 + len, print_pattern, source);
+ const char *print_pattern = (cmd == TNCOMPORT_SETMODEMSTATEMASK) ?
+ "%s <Invalid Modemstate Mask>" : "%s <Invalid Modemstate Packet>";
+ proto_tree_add_text(tree, tvb, offset, 1 + len, print_pattern, source);
}
break;
@@ -802,11 +805,11 @@ dissect_comport_subopt(packet_info *pinfo _U_, const char *optname, tvbuff_t *tv
case TNCOMPORT_PURGEDATA:
len--;
if (len >= 1) {
- guint8 purge = tvb_get_guint8(tvb, offset+1);
- const char *p = (purge > 3) ? "<Purge invalid>" : purges[purge];
- proto_tree_add_text(tree, tvb, offset, 2, "%s %s",source,p);
+ guint8 purge = tvb_get_guint8(tvb, offset+1);
+ const char *p = (purge > 3) ? "<Purge invalid>" : purges[purge];
+ proto_tree_add_text(tree, tvb, offset, 2, "%s %s",source,p);
} else {
- proto_tree_add_text(tree, tvb, offset, 1 + len, "%s <Invalid Purge Packet>",source);
+ proto_tree_add_text(tree, tvb, offset, 1 + len, "%s <Invalid Purge Packet>",source);
}
break;
@@ -823,11 +826,11 @@ dissect_comport_subopt(packet_info *pinfo _U_, const char *optname, tvbuff_t *tv
}
static const value_string rfc_opt_vals[] = {
- { 0, "OFF" },
- { 1, "ON" },
- { 2, "RESTART-ANY" },
- { 3, "RESTART-XON" },
- { 0, NULL }
+ { 0, "OFF" },
+ { 1, "ON" },
+ { 2, "RESTART-ANY" },
+ { 3, "RESTART-XON" },
+ { 0, NULL }
};
static void
@@ -841,185 +844,185 @@ dissect_rfc_subopt(packet_info *pinfo _U_, const char *optname _U_, tvbuff_t *tv
val_to_str(cmd, rfc_opt_vals, "Unknown (%u)"));
}
-#define TN_ENC_IS 0
-#define TN_ENC_SUPPORT 1
-#define TN_ENC_REPLY 2
-#define TN_ENC_START 3
-#define TN_ENC_END 4
-#define TN_ENC_REQUEST_START 5
-#define TN_ENC_REQUEST_END 6
-#define TN_ENC_ENC_KEYID 7
-#define TN_ENC_DEC_KEYID 8
+#define TN_ENC_IS 0
+#define TN_ENC_SUPPORT 1
+#define TN_ENC_REPLY 2
+#define TN_ENC_START 3
+#define TN_ENC_END 4
+#define TN_ENC_REQUEST_START 5
+#define TN_ENC_REQUEST_END 6
+#define TN_ENC_ENC_KEYID 7
+#define TN_ENC_DEC_KEYID 8
static const value_string enc_cmd_vals[] = {
- { TN_ENC_IS, "IS" },
- { TN_ENC_SUPPORT, "SUPPORT" },
- { TN_ENC_REPLY, "REPLY" },
- { TN_ENC_START, "START" },
- { TN_ENC_END, "END" },
- { TN_ENC_REQUEST_START, "REQUEST-START" },
- { TN_ENC_REQUEST_END, "REQUEST-END" },
- { TN_ENC_ENC_KEYID, "ENC_KEYID" },
- { TN_ENC_DEC_KEYID, "DEC_KEYID" },
- { 0, NULL }
+ { TN_ENC_IS, "IS" },
+ { TN_ENC_SUPPORT, "SUPPORT" },
+ { TN_ENC_REPLY, "REPLY" },
+ { TN_ENC_START, "START" },
+ { TN_ENC_END, "END" },
+ { TN_ENC_REQUEST_START, "REQUEST-START" },
+ { TN_ENC_REQUEST_END, "REQUEST-END" },
+ { TN_ENC_ENC_KEYID, "ENC_KEYID" },
+ { TN_ENC_DEC_KEYID, "DEC_KEYID" },
+ { 0, NULL }
};
-#define TN_ENCTYPE_NULL 0
-#define TN_ENCTYPE_DES_CFB64 1
-#define TN_ENCTYPE_DES_OFB64 2
-#define TN_ENCTYPE_DES3_CFB64 3
-#define TN_ENCTYPE_DES3_OFB64 4
-#define TN_ENCTYPE_CAST5_40_CFB64 8
-#define TN_ENCTYPE_CAST5_40_OFB64 9
-#define TN_ENCTYPE_CAST128_CFB64 10
-#define TN_ENCTYPE_CAST128_OFB64 11
+#define TN_ENCTYPE_NULL 0
+#define TN_ENCTYPE_DES_CFB64 1
+#define TN_ENCTYPE_DES_OFB64 2
+#define TN_ENCTYPE_DES3_CFB64 3
+#define TN_ENCTYPE_DES3_OFB64 4
+#define TN_ENCTYPE_CAST5_40_CFB64 8
+#define TN_ENCTYPE_CAST5_40_OFB64 9
+#define TN_ENCTYPE_CAST128_CFB64 10
+#define TN_ENCTYPE_CAST128_OFB64 11
static const value_string enc_type_vals[] = {
- { TN_ENCTYPE_NULL, "NULL" },
- { TN_ENCTYPE_DES_CFB64, "DES_CFB64" },
- { TN_ENCTYPE_DES_OFB64, "DES_OFB64" },
- { TN_ENCTYPE_DES3_CFB64, "DES3_CFB64" },
- { TN_ENCTYPE_DES3_OFB64, "DES3_OFB64" },
- { TN_ENCTYPE_CAST5_40_CFB64, "CAST5_40_CFB64" },
- { TN_ENCTYPE_CAST5_40_OFB64, "CAST5_40_OFB64" },
- { TN_ENCTYPE_CAST128_CFB64, "CAST128_CFB64" },
- { TN_ENCTYPE_CAST128_OFB64, "CAST128_OFB64" },
- { 0, NULL }
+ { TN_ENCTYPE_NULL, "NULL" },
+ { TN_ENCTYPE_DES_CFB64, "DES_CFB64" },
+ { TN_ENCTYPE_DES_OFB64, "DES_OFB64" },
+ { TN_ENCTYPE_DES3_CFB64, "DES3_CFB64" },
+ { TN_ENCTYPE_DES3_OFB64, "DES3_OFB64" },
+ { TN_ENCTYPE_CAST5_40_CFB64, "CAST5_40_CFB64" },
+ { TN_ENCTYPE_CAST5_40_OFB64, "CAST5_40_OFB64" },
+ { TN_ENCTYPE_CAST128_CFB64, "CAST128_CFB64" },
+ { TN_ENCTYPE_CAST128_OFB64, "CAST128_OFB64" },
+ { 0, NULL }
};
-#define TN_AC_IS 0
-#define TN_AC_SEND 1
-#define TN_AC_REPLY 2
-#define TN_AC_NAME 3
+#define TN_AC_IS 0
+#define TN_AC_SEND 1
+#define TN_AC_REPLY 2
+#define TN_AC_NAME 3
static const value_string auth_cmd_vals[] = {
- { TN_AC_IS, "IS" },
- { TN_AC_SEND, "SEND" },
- { TN_AC_REPLY, "REPLY" },
- { TN_AC_NAME, "NAME" },
- { 0, NULL }
+ { TN_AC_IS, "IS" },
+ { TN_AC_SEND, "SEND" },
+ { TN_AC_REPLY, "REPLY" },
+ { TN_AC_NAME, "NAME" },
+ { 0, NULL }
};
-#define TN_AT_NULL 0
-#define TN_AT_KRB4 1
-#define TN_AT_KRB5 2
-#define TN_AT_SPX 3
-#define TN_AT_MINK 4
-#define TN_AT_SRP 5
-#define TN_AT_RSA 6
-#define TN_AT_SSL 7
-#define TN_AT_LOKI 10
-#define TN_AT_SSA 11
-#define TN_AT_KEA_SJ 12
-#define TN_AT_KEA_SJ_INTEG 13
-#define TN_AT_DSS 14
-#define TN_AT_NTLM 15
+#define TN_AT_NULL 0
+#define TN_AT_KRB4 1
+#define TN_AT_KRB5 2
+#define TN_AT_SPX 3
+#define TN_AT_MINK 4
+#define TN_AT_SRP 5
+#define TN_AT_RSA 6
+#define TN_AT_SSL 7
+#define TN_AT_LOKI 10
+#define TN_AT_SSA 11
+#define TN_AT_KEA_SJ 12
+#define TN_AT_KEA_SJ_INTEG 13
+#define TN_AT_DSS 14
+#define TN_AT_NTLM 15
static const value_string auth_type_vals[] = {
- { TN_AT_NULL, "NULL" },
- { TN_AT_KRB4, "Kerberos v4" },
- { TN_AT_KRB5, "Kerberos v5" },
- { TN_AT_SPX, "SPX" },
- { TN_AT_MINK, "MINK" },
- { TN_AT_SRP, "SRP" },
- { TN_AT_RSA, "RSA" },
- { TN_AT_SSL, "SSL" },
- { TN_AT_LOKI, "LOKI" },
- { TN_AT_SSA, "SSA" },
- { TN_AT_KEA_SJ, "KEA_SJ" },
- { TN_AT_KEA_SJ_INTEG, "KEA_SJ_INTEG" },
- { TN_AT_DSS, "DSS" },
- { TN_AT_NTLM, "NTLM" },
- { 0, NULL }
+ { TN_AT_NULL, "NULL" },
+ { TN_AT_KRB4, "Kerberos v4" },
+ { TN_AT_KRB5, "Kerberos v5" },
+ { TN_AT_SPX, "SPX" },
+ { TN_AT_MINK, "MINK" },
+ { TN_AT_SRP, "SRP" },
+ { TN_AT_RSA, "RSA" },
+ { TN_AT_SSL, "SSL" },
+ { TN_AT_LOKI, "LOKI" },
+ { TN_AT_SSA, "SSA" },
+ { TN_AT_KEA_SJ, "KEA_SJ" },
+ { TN_AT_KEA_SJ_INTEG, "KEA_SJ_INTEG" },
+ { TN_AT_DSS, "DSS" },
+ { TN_AT_NTLM, "NTLM" },
+ { 0, NULL }
};
static const true_false_string auth_mod_cred_fwd = {
- "Client WILL forward auth creds",
- "Client will NOT forward auth creds"
+ "Client WILL forward auth creds",
+ "Client will NOT forward auth creds"
};
static const true_false_string auth_mod_who = {
- "Mask server to client",
- "Mask client to server"
+ "Mask server to client",
+ "Mask client to server"
};
static const true_false_string auth_mod_how = {
- "MUTUAL authentication",
- "One Way authentication"
+ "MUTUAL authentication",
+ "One Way authentication"
};
-#define TN_AM_OFF 0x00
-#define TN_AM_USING_TELOPT 0x01
-#define TN_AM_AFTER_EXCHANGE 0x02
-#define TN_AM_RESERVED 0x04
+#define TN_AM_OFF 0x00
+#define TN_AM_USING_TELOPT 0x01
+#define TN_AM_AFTER_EXCHANGE 0x02
+#define TN_AM_RESERVED 0x04
static const value_string auth_mod_enc[] = {
- { TN_AM_OFF, "Off" },
- { TN_AM_USING_TELOPT, "Telnet Options" },
- { TN_AM_AFTER_EXCHANGE, "After Exchange" },
- { TN_AM_RESERVED, "Reserved" },
- { 0, NULL }
+ { TN_AM_OFF, "Off" },
+ { TN_AM_USING_TELOPT, "Telnet Options" },
+ { TN_AM_AFTER_EXCHANGE, "After Exchange" },
+ { TN_AM_RESERVED, "Reserved" },
+ { 0, NULL }
};
-#define TN_KRB5_TYPE_AUTH 0
-#define TN_KRB5_TYPE_REJECT 1
-#define TN_KRB5_TYPE_ACCEPT 2
-#define TN_KRB5_TYPE_RESPONSE 3
-#define TN_KRB5_TYPE_FORWARD 4
-#define TN_KRB5_TYPE_FORWARD_ACCEPT 5
-#define TN_KRB5_TYPE_FORWARD_REJECT 6
+#define TN_KRB5_TYPE_AUTH 0
+#define TN_KRB5_TYPE_REJECT 1
+#define TN_KRB5_TYPE_ACCEPT 2
+#define TN_KRB5_TYPE_RESPONSE 3
+#define TN_KRB5_TYPE_FORWARD 4
+#define TN_KRB5_TYPE_FORWARD_ACCEPT 5
+#define TN_KRB5_TYPE_FORWARD_REJECT 6
static const value_string auth_krb5_types[] = {
- { TN_KRB5_TYPE_AUTH, "Auth" },
- { TN_KRB5_TYPE_REJECT, "Reject" },
- { TN_KRB5_TYPE_ACCEPT, "Accept" },
- { TN_KRB5_TYPE_RESPONSE, "Response" },
- { TN_KRB5_TYPE_FORWARD, "Forward" },
- { TN_KRB5_TYPE_FORWARD_ACCEPT, "Forward Accept" },
- { TN_KRB5_TYPE_FORWARD_REJECT, "Forward Reject" },
- { 0, NULL }
+ { TN_KRB5_TYPE_AUTH, "Auth" },
+ { TN_KRB5_TYPE_REJECT, "Reject" },
+ { TN_KRB5_TYPE_ACCEPT, "Accept" },
+ { TN_KRB5_TYPE_RESPONSE, "Response" },
+ { TN_KRB5_TYPE_FORWARD, "Forward" },
+ { TN_KRB5_TYPE_FORWARD_ACCEPT, "Forward Accept" },
+ { TN_KRB5_TYPE_FORWARD_REJECT, "Forward Reject" },
+ { 0, NULL }
};
static void
dissect_authentication_type_pair(packet_info *pinfo _U_, tvbuff_t *tvb, int offset, proto_tree *tree)
{
- guint8 type, mod;
+ guint8 type, mod;
- type=tvb_get_guint8(tvb, offset);
- proto_tree_add_uint(tree, hf_telnet_auth_type, tvb, offset, 1, type);
+ type=tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint(tree, hf_telnet_auth_type, tvb, offset, 1, type);
- mod=tvb_get_guint8(tvb, offset+1);
- proto_tree_add_uint(tree, hf_telnet_auth_mod_enc, tvb, offset+1, 1, mod);
- proto_tree_add_boolean(tree, hf_telnet_auth_mod_cred_fwd, tvb, offset+1, 1, mod);
- proto_tree_add_boolean(tree, hf_telnet_auth_mod_how, tvb, offset+1, 1, mod);
- proto_tree_add_boolean(tree, hf_telnet_auth_mod_who, tvb, offset+1, 1, mod);
+ mod=tvb_get_guint8(tvb, offset+1);
+ proto_tree_add_uint(tree, hf_telnet_auth_mod_enc, tvb, offset+1, 1, mod);
+ proto_tree_add_boolean(tree, hf_telnet_auth_mod_cred_fwd, tvb, offset+1, 1, mod);
+ proto_tree_add_boolean(tree, hf_telnet_auth_mod_how, tvb, offset+1, 1, mod);
+ proto_tree_add_boolean(tree, hf_telnet_auth_mod_who, tvb, offset+1, 1, mod);
}
/* no kerberos blobs are ever >10kb ? (arbitrary limit) */
-#define MAX_KRB5_BLOB_LEN 10240
+#define MAX_KRB5_BLOB_LEN 10240
static tvbuff_t *
unescape_and_tvbuffify_telnet_option(packet_info *pinfo, tvbuff_t *tvb, int offset, int len)
{
- tvbuff_t *krb5_tvb;
- guint8 *buf;
- const guint8 *spos;
- guint8 *dpos;
- int skip, l;
-
- if(len>=MAX_KRB5_BLOB_LEN)
- return NULL;
-
- spos=tvb_get_ptr(tvb, offset, len);
- buf=g_malloc(len);
- dpos=buf;
- skip=0;
- l=len;
- while(l>0){
- if((spos[0]==0xff) && (spos[1]==0xff)){
- skip++;
- l-=2;
- *(dpos++)=0xff;
- spos+=2;
- continue;
- }
- *(dpos++)=*(spos++);
- l--;
- }
- krb5_tvb = tvb_new_child_real_data(tvb, buf, len-skip, len-skip);
- tvb_set_free_cb(krb5_tvb, g_free);
- add_new_data_source(pinfo, krb5_tvb, "Unpacked Telnet Option");
-
- return krb5_tvb;
+ tvbuff_t *krb5_tvb;
+ guint8 *buf;
+ const guint8 *spos;
+ guint8 *dpos;
+ int skip, l;
+
+ if(len>=MAX_KRB5_BLOB_LEN)
+ return NULL;
+
+ spos=tvb_get_ptr(tvb, offset, len);
+ buf=g_malloc(len);
+ dpos=buf;
+ skip=0;
+ l=len;
+ while(l>0){
+ if((spos[0]==0xff) && (spos[1]==0xff)){
+ skip++;
+ l-=2;
+ *(dpos++)=0xff;
+ spos+=2;
+ continue;
+ }
+ *(dpos++)=*(spos++);
+ l--;
+ }
+ krb5_tvb = tvb_new_child_real_data(tvb, buf, len-skip, len-skip);
+ tvb_set_free_cb(krb5_tvb, g_free);
+ add_new_data_source(pinfo, krb5_tvb, "Unpacked Telnet Option");
+
+ return krb5_tvb;
}
@@ -1027,490 +1030,490 @@ unescape_and_tvbuffify_telnet_option(packet_info *pinfo, tvbuff_t *tvb, int offs
static void
dissect_krb5_authentication_data(packet_info *pinfo, tvbuff_t *tvb, int offset, int len, proto_tree *tree, guint8 acmd)
{
- tvbuff_t *krb5_tvb;
- guint8 krb5_cmd;
-
- dissect_authentication_type_pair(pinfo, tvb, offset, tree);
- offset+=2;
- len-=2;
+ tvbuff_t *krb5_tvb;
+ guint8 krb5_cmd;
+ dissect_authentication_type_pair(pinfo, tvb, offset, tree);
+ offset+=2;
+ len-=2;
- krb5_cmd=tvb_get_guint8(tvb, offset);
- proto_tree_add_uint(tree, hf_telnet_auth_krb5_type, tvb, offset, 1, krb5_cmd);
- offset++;
- len--;
-
- /* IAC SB AUTHENTICATION IS <authentication-type-pair> AUTH <Kerberos V5 KRB_AP_REQ message> IAC SE */
- if((acmd==TN_AC_IS)&&(krb5_cmd==TN_KRB5_TYPE_AUTH)){
- if(len){
- krb5_tvb=unescape_and_tvbuffify_telnet_option(pinfo, tvb, offset, len);
- if(krb5_tvb)
- dissect_kerberos_main(krb5_tvb, pinfo, tree, FALSE, NULL);
- else
- proto_tree_add_text(tree, tvb, offset, len, "Kerberos blob (too long to dissect - length %u > %u",
- len, MAX_KRB5_BLOB_LEN);
- }
- }
+ krb5_cmd=tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint(tree, hf_telnet_auth_krb5_type, tvb, offset, 1, krb5_cmd);
+ offset++;
+ len--;
+
+
+ /* IAC SB AUTHENTICATION IS <authentication-type-pair> AUTH <Kerberos V5 KRB_AP_REQ message> IAC SE */
+ if((acmd==TN_AC_IS)&&(krb5_cmd==TN_KRB5_TYPE_AUTH)){
+ if(len){
+ krb5_tvb=unescape_and_tvbuffify_telnet_option(pinfo, tvb, offset, len);
+ if(krb5_tvb)
+ dissect_kerberos_main(krb5_tvb, pinfo, tree, FALSE, NULL);
+ else
+ proto_tree_add_text(tree, tvb, offset, len, "Kerberos blob (too long to dissect - length %u > %u",
+ len, MAX_KRB5_BLOB_LEN);
+ }
+ }
- /* IAC SB AUTHENTICATION REPLY <authentication-type-pair> ACCEPT IAC SE */
- /* nothing more to dissect */
+ /* IAC SB AUTHENTICATION REPLY <authentication-type-pair> ACCEPT IAC SE */
+ /* nothing more to dissect */
- /* IAC SB AUTHENTICATION REPLY <authentication-type-pair> REJECT <optional reason for rejection> IAC SE*/
+ /* IAC SB AUTHENTICATION REPLY <authentication-type-pair> REJECT <optional reason for rejection> IAC SE*/
/*qqq*/
- /* IAC SB AUTHENTICATION REPLY <authentication-type-pair> RESPONSE <KRB_AP_REP message> IAC SE */
- if((acmd==TN_AC_REPLY)&&(krb5_cmd==TN_KRB5_TYPE_RESPONSE)){
- if(len){
- krb5_tvb=unescape_and_tvbuffify_telnet_option(pinfo, tvb, offset, len);
- dissect_kerberos_main(krb5_tvb, pinfo, tree, FALSE, NULL);
- }
- }
+ /* IAC SB AUTHENTICATION REPLY <authentication-type-pair> RESPONSE <KRB_AP_REP message> IAC SE */
+ if((acmd==TN_AC_REPLY)&&(krb5_cmd==TN_KRB5_TYPE_RESPONSE)){
+ if(len){
+ krb5_tvb=unescape_and_tvbuffify_telnet_option(pinfo, tvb, offset, len);
+ dissect_kerberos_main(krb5_tvb, pinfo, tree, FALSE, NULL);
+ }
+ }
- /* IAC SB AUTHENTICATION <authentication-type-pair> FORWARD <KRB_CRED message> IAC SE */
- /* XXX unclear what this one looks like */
+ /* IAC SB AUTHENTICATION <authentication-type-pair> FORWARD <KRB_CRED message> IAC SE */
+ /* XXX unclear what this one looks like */
- /* IAC SB AUTHENTICATION <authentication-type-pair> FORWARD_ACCEPT IAC SE */
- /* nothing more to dissect */
+ /* IAC SB AUTHENTICATION <authentication-type-pair> FORWARD_ACCEPT IAC SE */
+ /* nothing more to dissect */
- /* IAC SB AUTHENTICATION <authentication-type-pair> FORWARD_REJECT */
- /* nothing more to dissect */
+ /* IAC SB AUTHENTICATION <authentication-type-pair> FORWARD_REJECT */
+ /* nothing more to dissect */
}
static void
dissect_authentication_subopt(packet_info *pinfo, const char *optname _U_, tvbuff_t *tvb, int offset, int len, proto_tree *tree)
{
- guint8 acmd;
- char *name;
+ guint8 acmd;
+ char *name;
/* XXX here we should really split it up in a conversation struct keeping
- track of what method we actually use and not just assume it is always
- kerberos v5
+ track of what method we actually use and not just assume it is always
+ kerberos v5
*/
- acmd=tvb_get_guint8(tvb, offset);
- proto_tree_add_uint(tree, hf_telnet_auth_cmd, tvb, offset, 1, acmd);
- offset++;
- len--;
-
- switch(acmd){
- case TN_AC_REPLY:
- case TN_AC_IS:
- /* XXX here we shouldnt just assume it is krb5 */
- dissect_krb5_authentication_data(pinfo, tvb, offset, len, tree, acmd);
- break;
- case TN_AC_SEND:
- while(len>0){
- dissect_authentication_type_pair(pinfo, tvb, offset, tree);
- offset+=2;
- len-=2;
- }
- break;
- case TN_AC_NAME:
- if(len<255){
- name=ep_alloc(256);
- tvb_memcpy(tvb, (guint8*)name, offset, len);
- name[len]=0;
- } else {
- name="<...name too long...>";
- }
- proto_tree_add_string(tree, hf_telnet_auth_name, tvb, offset, len, name);
- break;
- }
+ acmd=tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint(tree, hf_telnet_auth_cmd, tvb, offset, 1, acmd);
+ offset++;
+ len--;
+
+ switch(acmd){
+ case TN_AC_REPLY:
+ case TN_AC_IS:
+ /* XXX here we shouldnt just assume it is krb5 */
+ dissect_krb5_authentication_data(pinfo, tvb, offset, len, tree, acmd);
+ break;
+ case TN_AC_SEND:
+ while(len>0){
+ dissect_authentication_type_pair(pinfo, tvb, offset, tree);
+ offset+=2;
+ len-=2;
+ }
+ break;
+ case TN_AC_NAME:
+ if(len<255){
+ name=ep_alloc(256);
+ tvb_memcpy(tvb, (guint8*)name, offset, len);
+ name[len]=0;
+ } else {
+ name="<...name too long...>";
+ }
+ proto_tree_add_string(tree, hf_telnet_auth_name, tvb, offset, len, name);
+ break;
+ }
}
/* This function only uses the octet in the buffer at 'offset' */
static void dissect_encryption_type(tvbuff_t *tvb, int offset, proto_tree *tree) {
- guint8 etype;
- etype = tvb_get_guint8(tvb, offset);
- proto_tree_add_uint(tree, hf_telnet_enc_type, tvb, offset, 1, etype);
+ guint8 etype;
+ etype = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint(tree, hf_telnet_enc_type, tvb, offset, 1, etype);
}
static void
dissect_encryption_subopt(packet_info *pinfo _U_, const char *optname _U_, tvbuff_t *tvb, int offset, int len, proto_tree *tree)
{
- guint8 ecmd, key_first_octet;
-
- ecmd = tvb_get_guint8(tvb, offset);
- proto_tree_add_uint(tree, hf_telnet_enc_cmd, tvb, offset, 1, ecmd);
-
- offset++;
- len--;
-
- switch(ecmd) {
- case TN_ENC_IS:
- case TN_ENC_REPLY:
- /* encryption type, type-specific data ... */
- if (len > 0) {
- dissect_encryption_type(tvb, offset, tree);
- offset++;
- len--;
- proto_tree_add_text(tree, tvb, offset, len, "Type-specific data");
- }
- break;
-
- case TN_ENC_SUPPORT:
- /* list of encryption types ... */
- while (len > 0) {
- dissect_encryption_type(tvb, offset, tree);
- offset++;
- len--;
- }
- break;
-
- case TN_ENC_START:
- /* keyid ... */
- if (len > 0) {
- key_first_octet = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(tree, tvb, offset, len, (key_first_octet == 0) ? "Default key" : "Key ID");
- }
- break;
-
- case TN_ENC_END:
- /* no data */
- break;
-
- case TN_ENC_REQUEST_START:
- /* (optional) keyid */
- if (len > 0)
- proto_tree_add_text(tree, tvb, offset, len, "Key ID (advisory)");
- break;
-
- case TN_ENC_REQUEST_END:
- /* no data */
- break;
-
- case TN_ENC_ENC_KEYID:
- case TN_ENC_DEC_KEYID:
- /* (optional) keyid - if not supplied, there are no more known keys */
- if (len > 0)
- proto_tree_add_text(tree, tvb, offset, len, "Key ID");
- break;
-
- default:
- proto_tree_add_text(tree, tvb, offset, len, "Unknown command");
- }
+ guint8 ecmd, key_first_octet;
+
+ ecmd = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint(tree, hf_telnet_enc_cmd, tvb, offset, 1, ecmd);
+
+ offset++;
+ len--;
+
+ switch(ecmd) {
+ case TN_ENC_IS:
+ case TN_ENC_REPLY:
+ /* encryption type, type-specific data ... */
+ if (len > 0) {
+ dissect_encryption_type(tvb, offset, tree);
+ offset++;
+ len--;
+ proto_tree_add_text(tree, tvb, offset, len, "Type-specific data");
+ }
+ break;
+
+ case TN_ENC_SUPPORT:
+ /* list of encryption types ... */
+ while (len > 0) {
+ dissect_encryption_type(tvb, offset, tree);
+ offset++;
+ len--;
+ }
+ break;
+
+ case TN_ENC_START:
+ /* keyid ... */
+ if (len > 0) {
+ key_first_octet = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(tree, tvb, offset, len, (key_first_octet == 0) ? "Default key" : "Key ID");
+ }
+ break;
+
+ case TN_ENC_END:
+ /* no data */
+ break;
+
+ case TN_ENC_REQUEST_START:
+ /* (optional) keyid */
+ if (len > 0)
+ proto_tree_add_text(tree, tvb, offset, len, "Key ID (advisory)");
+ break;
+
+ case TN_ENC_REQUEST_END:
+ /* no data */
+ break;
+
+ case TN_ENC_ENC_KEYID:
+ case TN_ENC_DEC_KEYID:
+ /* (optional) keyid - if not supplied, there are no more known keys */
+ if (len > 0)
+ proto_tree_add_text(tree, tvb, offset, len, "Key ID");
+ break;
+
+ default:
+ proto_tree_add_text(tree, tvb, offset, len, "Unknown command");
+ }
}
static tn_opt options[] = {
{
- "Binary Transmission", /* RFC 856 */
- NULL, /* no suboption negotiation */
+ "Binary Transmission", /* RFC 856 */
+ NULL, /* no suboption negotiation */
NO_LENGTH,
0,
NULL
},
{
- "Echo", /* RFC 857 */
- NULL, /* no suboption negotiation */
+ "Echo", /* RFC 857 */
+ NULL, /* no suboption negotiation */
NO_LENGTH,
0,
NULL
},
{
- "Reconnection", /* DOD Protocol Handbook */
+ "Reconnection", /* DOD Protocol Handbook */
NULL,
NO_LENGTH,
0,
NULL
},
{
- "Suppress Go Ahead", /* RFC 858 */
- NULL, /* no suboption negotiation */
+ "Suppress Go Ahead", /* RFC 858 */
+ NULL, /* no suboption negotiation */
NO_LENGTH,
0,
NULL
},
{
- "Approx Message Size Negotiation", /* Ethernet spec(!) */
+ "Approx Message Size Negotiation", /* Ethernet spec(!) */
NULL,
NO_LENGTH,
0,
NULL
},
{
- "Status", /* RFC 859 */
+ "Status", /* RFC 859 */
&ett_status_subopt,
VARIABLE_LENGTH,
1,
- NULL /* XXX - fill me in */
+ NULL /* XXX - fill me in */
},
{
- "Timing Mark", /* RFC 860 */
- NULL, /* no suboption negotiation */
+ "Timing Mark", /* RFC 860 */
+ NULL, /* no suboption negotiation */
NO_LENGTH,
0,
NULL
},
{
- "Remote Controlled Trans and Echo", /* RFC 726 */
+ "Remote Controlled Trans and Echo", /* RFC 726 */
&ett_rcte_subopt,
VARIABLE_LENGTH,
1,
- NULL /* XXX - fill me in */
+ NULL /* XXX - fill me in */
},
{
- "Output Line Width", /* DOD Protocol Handbook */
+ "Output Line Width", /* DOD Protocol Handbook */
&ett_olw_subopt,
- VARIABLE_LENGTH, /* XXX - fill me in */
- 0, /* XXX - fill me in */
- NULL /* XXX - fill me in */
+ VARIABLE_LENGTH, /* XXX - fill me in */
+ 0, /* XXX - fill me in */
+ NULL /* XXX - fill me in */
},
{
- "Output Page Size", /* DOD Protocol Handbook */
+ "Output Page Size", /* DOD Protocol Handbook */
&ett_ops_subopt,
- VARIABLE_LENGTH, /* XXX - fill me in */
- 0, /* XXX - fill me in */
- NULL /* XXX - fill me in */
+ VARIABLE_LENGTH, /* XXX - fill me in */
+ 0, /* XXX - fill me in */
+ NULL /* XXX - fill me in */
},
{
- "Output Carriage-Return Disposition", /* RFC 652 */
+ "Output Carriage-Return Disposition", /* RFC 652 */
&ett_crdisp_subopt,
FIXED_LENGTH,
2,
- NULL /* XXX - fill me in */
+ NULL /* XXX - fill me in */
},
{
- "Output Horizontal Tab Stops", /* RFC 653 */
+ "Output Horizontal Tab Stops", /* RFC 653 */
&ett_htstops_subopt,
VARIABLE_LENGTH,
1,
dissect_htstops_subopt
},
{
- "Output Horizontal Tab Disposition", /* RFC 654 */
+ "Output Horizontal Tab Disposition", /* RFC 654 */
&ett_htdisp_subopt,
FIXED_LENGTH,
2,
- NULL /* XXX - fill me in */
+ NULL /* XXX - fill me in */
},
{
- "Output Formfeed Disposition", /* RFC 655 */
+ "Output Formfeed Disposition", /* RFC 655 */
&ett_ffdisp_subopt,
FIXED_LENGTH,
2,
- NULL /* XXX - fill me in */
+ NULL /* XXX - fill me in */
},
{
- "Output Vertical Tabstops", /* RFC 656 */
+ "Output Vertical Tabstops", /* RFC 656 */
&ett_vtstops_subopt,
VARIABLE_LENGTH,
1,
- NULL /* XXX - fill me in */
+ NULL /* XXX - fill me in */
},
{
- "Output Vertical Tab Disposition", /* RFC 657 */
+ "Output Vertical Tab Disposition", /* RFC 657 */
&ett_vtdisp_subopt,
FIXED_LENGTH,
2,
- NULL /* XXX - fill me in */
+ NULL /* XXX - fill me in */
},
{
- "Output Linefeed Disposition", /* RFC 658 */
+ "Output Linefeed Disposition", /* RFC 658 */
&ett_lfdisp_subopt,
FIXED_LENGTH,
2,
- NULL /* XXX - fill me in */
+ NULL /* XXX - fill me in */
},
{
- "Extended ASCII", /* RFC 698 */
+ "Extended ASCII", /* RFC 698 */
&ett_extasc_subopt,
FIXED_LENGTH,
2,
- NULL /* XXX - fill me in */
+ NULL /* XXX - fill me in */
},
{
- "Logout", /* RFC 727 */
- NULL, /* no suboption negotiation */
+ "Logout", /* RFC 727 */
+ NULL, /* no suboption negotiation */
NO_LENGTH,
0,
NULL
},
{
- "Byte Macro", /* RFC 735 */
+ "Byte Macro", /* RFC 735 */
&ett_bytemacro_subopt,
VARIABLE_LENGTH,
2,
- NULL /* XXX - fill me in */
+ NULL /* XXX - fill me in */
},
{
- "Data Entry Terminal", /* RFC 732, RFC 1043 */
+ "Data Entry Terminal", /* RFC 732, RFC 1043 */
&ett_det_subopt,
VARIABLE_LENGTH,
2,
- NULL /* XXX - fill me in */
+ NULL /* XXX - fill me in */
},
{
- "SUPDUP", /* RFC 734, RFC 736 */
- NULL, /* no suboption negotiation */
+ "SUPDUP", /* RFC 734, RFC 736 */
+ NULL, /* no suboption negotiation */
NO_LENGTH,
0,
NULL
},
{
- "SUPDUP Output", /* RFC 749 */
+ "SUPDUP Output", /* RFC 749 */
&ett_supdupout_subopt,
VARIABLE_LENGTH,
1,
- NULL /* XXX - fill me in */
+ NULL /* XXX - fill me in */
},
{
- "Send Location", /* RFC 779 */
+ "Send Location", /* RFC 779 */
&ett_sendloc_subopt,
VARIABLE_LENGTH,
0,
- NULL /* XXX - fill me in */
+ NULL /* XXX - fill me in */
},
{
- "Terminal Type", /* RFC 1091 */
+ "Terminal Type", /* RFC 1091 */
&ett_termtype_subopt,
VARIABLE_LENGTH,
1,
dissect_string_subopt
},
{
- "End of Record", /* RFC 885 */
- NULL, /* no suboption negotiation */
+ "End of Record", /* RFC 885 */
+ NULL, /* no suboption negotiation */
NO_LENGTH,
0,
NULL
},
{
- "TACACS User Identification", /* RFC 927 */
+ "TACACS User Identification", /* RFC 927 */
&ett_tacacsui_subopt,
FIXED_LENGTH,
4,
- NULL /* XXX - fill me in */
+ NULL /* XXX - fill me in */
},
{
- "Output Marking", /* RFC 933 */
+ "Output Marking", /* RFC 933 */
&ett_outmark_subopt,
VARIABLE_LENGTH,
1,
dissect_outmark_subopt,
},
{
- "Terminal Location Number", /* RFC 946 */
+ "Terminal Location Number", /* RFC 946 */
&ett_tlocnum_subopt,
VARIABLE_LENGTH,
1,
- NULL /* XXX - fill me in */
+ NULL /* XXX - fill me in */
},
{
- "Telnet 3270 Regime", /* RFC 1041 */
+ "Telnet 3270 Regime", /* RFC 1041 */
&ett_tn3270reg_subopt,
VARIABLE_LENGTH,
1,
dissect_tn3270_regime_subopt
},
{
- "X.3 PAD", /* RFC 1053 */
+ "X.3 PAD", /* RFC 1053 */
&ett_x3pad_subopt,
VARIABLE_LENGTH,
1,
- NULL /* XXX - fill me in */
+ NULL /* XXX - fill me in */
},
{
- "Negotiate About Window Size", /* RFC 1073, DW183 */
+ "Negotiate About Window Size", /* RFC 1073, DW183 */
&ett_naws_subopt,
FIXED_LENGTH,
4,
dissect_naws_subopt
},
{
- "Terminal Speed", /* RFC 1079 */
+ "Terminal Speed", /* RFC 1079 */
&ett_tspeed_subopt,
VARIABLE_LENGTH,
1,
- NULL /* XXX - fill me in */
+ NULL /* XXX - fill me in */
},
{
- "Remote Flow Control", /* RFC 1372 */
+ "Remote Flow Control", /* RFC 1372 */
&ett_rfc_subopt,
FIXED_LENGTH,
1,
dissect_rfc_subopt
},
{
- "Linemode", /* RFC 1184 */
+ "Linemode", /* RFC 1184 */
&ett_linemode_subopt,
VARIABLE_LENGTH,
1,
- NULL /* XXX - fill me in */
+ NULL /* XXX - fill me in */
},
{
- "X Display Location", /* RFC 1096 */
+ "X Display Location", /* RFC 1096 */
&ett_xdpyloc_subopt,
VARIABLE_LENGTH,
1,
dissect_string_subopt
},
{
- "Environment Option", /* RFC 1408, RFC 1571 */
+ "Environment Option", /* RFC 1408, RFC 1571 */
&ett_env_subopt,
VARIABLE_LENGTH,
1,
- NULL /* XXX - fill me in */
+ NULL /* XXX - fill me in */
},
{
- "Authentication Option", /* RFC 2941 */
+ "Authentication Option", /* RFC 2941 */
&ett_auth_subopt,
VARIABLE_LENGTH,
1,
dissect_authentication_subopt
},
{
- "Encryption Option", /* RFC 2946 */
+ "Encryption Option", /* RFC 2946 */
&ett_enc_subopt,
VARIABLE_LENGTH,
1,
dissect_encryption_subopt
},
{
- "New Environment Option", /* RFC 1572 */
+ "New Environment Option", /* RFC 1572 */
&ett_newenv_subopt,
VARIABLE_LENGTH,
1,
- NULL /* XXX - fill me in */
+ NULL /* XXX - fill me in */
},
{
- "TN3270E", /* RFC 1647 */
+ "TN3270E", /* RFC 1647 */
&ett_tn3270e_subopt,
VARIABLE_LENGTH,
1,
dissect_tn3270e_subopt
},
{
- "XAUTH", /* XAUTH */
+ "XAUTH", /* XAUTH */
&ett_xauth_subopt,
VARIABLE_LENGTH,
1,
- NULL /* XXX - fill me in */
+ NULL /* XXX - fill me in */
},
{
- "CHARSET", /* CHARSET */
+ "CHARSET", /* CHARSET */
&ett_charset_subopt,
VARIABLE_LENGTH,
1,
- NULL /* XXX - fill me in */
+ NULL /* XXX - fill me in */
},
{
- "Remote Serial Port", /* Remote Serial Port */
+ "Remote Serial Port", /* Remote Serial Port */
&ett_rsp_subopt,
VARIABLE_LENGTH,
1,
- NULL /* XXX - fill me in */
+ NULL /* XXX - fill me in */
},
{
- "COM Port Control", /* RFC 2217 */
+ "COM Port Control", /* RFC 2217 */
&ett_comport_subopt,
VARIABLE_LENGTH,
1,
@@ -1519,23 +1522,23 @@ static tn_opt options[] = {
};
-#define NOPTIONS array_length(options)
+#define NOPTIONS array_length(options)
static int
telnet_sub_option(packet_info *pinfo, proto_tree *telnet_tree, tvbuff_t *tvb, int start_offset)
{
proto_tree *ti, *option_tree;
- int offset = start_offset;
- guint8 opt_byte;
- int subneg_len;
+ int offset = start_offset;
+ guint8 opt_byte;
+ int subneg_len;
const char *opt;
- gint ett = ett_telnet_subopt;
- int iac_offset;
- guint len;
- tvbuff_t * unescaped_tvb;
- void (*dissect)(packet_info *, const char *, tvbuff_t *, int, int, proto_tree *);
- gint cur_offset;
- gboolean iac_found;
+ gint ett = ett_telnet_subopt;
+ int iac_offset;
+ guint len;
+ tvbuff_t *unescaped_tvb;
+ void (*dissect)(packet_info *, const char *, tvbuff_t *, int, int, proto_tree *);
+ gint cur_offset;
+ gboolean iac_found;
/*
* As data with value iac (0xff) is possible, this value must be escaped
@@ -1543,7 +1546,7 @@ telnet_sub_option(packet_info *pinfo, proto_tree *telnet_tree, tvbuff_t *tvb, in
*/
int iac_data = 0;
- offset += 2; /* skip IAC and SB */
+ offset += 2; /* skip IAC and SB */
/* Get the option code */
opt_byte = tvb_get_guint8(tvb, offset);
@@ -1563,26 +1566,26 @@ telnet_sub_option(packet_info *pinfo, proto_tree *telnet_tree, tvbuff_t *tvb, in
iac_found = FALSE;
len = tvb_length_remaining(tvb, offset);
do {
- iac_offset = tvb_find_guint8(tvb, cur_offset, len, TN_IAC);
- iac_found = TRUE;
- if (iac_offset == -1) {
- /* None found - run to the end of the packet. */
- offset += len;
+ iac_offset = tvb_find_guint8(tvb, cur_offset, len, TN_IAC);
+ iac_found = TRUE;
+ if (iac_offset == -1) {
+ /* None found - run to the end of the packet. */
+ offset += len;
+ } else {
+ if (((guint)(iac_offset + 1) >= len) ||
+ (tvb_get_guint8(tvb, iac_offset + 1) != TN_IAC)) {
+ /* We really found a single IAC, so we're done */
+ offset = iac_offset;
} else {
- if (((guint)(iac_offset + 1) >= len) ||
- (tvb_get_guint8(tvb, iac_offset + 1) != TN_IAC)) {
- /* We really found a single IAC, so we're done */
- offset = iac_offset;
- } else {
- /*
- * We saw an escaped IAC, so we have to move ahead to the
- * next section
- */
- iac_found = FALSE;
- cur_offset = iac_offset + 2;
- iac_data += 1;
- }
+ /*
+ * We saw an escaped IAC, so we have to move ahead to the
+ * next section
+ */
+ iac_found = FALSE;
+ cur_offset = iac_offset + 2;
+ iac_data += 1;
}
+ }
} while (!iac_found);
@@ -1591,7 +1594,7 @@ telnet_sub_option(packet_info *pinfo, proto_tree *telnet_tree, tvbuff_t *tvb, in
ti = proto_tree_add_text(telnet_tree, tvb, start_offset, subneg_len,
"Suboption Begin: %s", opt);
option_tree = proto_item_add_subtree(ti, ett);
- start_offset += 3; /* skip IAC, SB, and option code */
+ start_offset += 3; /* skip IAC, SB, and option code */
subneg_len -= 3;
if (subneg_len > 0) {
@@ -1602,30 +1605,30 @@ telnet_sub_option(packet_info *pinfo, proto_tree *telnet_tree, tvbuff_t *tvb, in
switch (options[opt_byte].len_type) {
case NO_LENGTH:
- /* There isn't supposed to *be* sub-option negotiation for this. */
- proto_tree_add_text(option_tree, tvb, start_offset, subneg_len,
- "Bogus suboption data");
- return offset;
+ /* There isn't supposed to *be* sub-option negotiation for this. */
+ proto_tree_add_text(option_tree, tvb, start_offset, subneg_len,
+ "Bogus suboption data");
+ return offset;
case FIXED_LENGTH:
- /* Make sure the length is what it's supposed to be. */
- if (subneg_len - iac_data != options[opt_byte].optlen) {
- proto_tree_add_text(option_tree, tvb, start_offset, subneg_len,
- "Suboption parameter length is %d, should be %d",
- subneg_len, options[opt_byte].optlen);
- return offset;
- }
- break;
+ /* Make sure the length is what it's supposed to be. */
+ if (subneg_len - iac_data != options[opt_byte].optlen) {
+ proto_tree_add_text(option_tree, tvb, start_offset, subneg_len,
+ "Suboption parameter length is %d, should be %d",
+ subneg_len, options[opt_byte].optlen);
+ return offset;
+ }
+ break;
case VARIABLE_LENGTH:
- /* Make sure the length is greater than the minimum. */
- if (subneg_len - iac_data < options[opt_byte].optlen) {
- proto_tree_add_text(option_tree, tvb, start_offset, subneg_len,
- "Suboption parameter length is %d, should be at least %d",
- subneg_len, options[opt_byte].optlen);
- return offset;
- }
- break;
+ /* Make sure the length is greater than the minimum. */
+ if (subneg_len - iac_data < options[opt_byte].optlen) {
+ proto_tree_add_text(option_tree, tvb, start_offset, subneg_len,
+ "Suboption parameter length is %d, should be at least %d",
+ subneg_len, options[opt_byte].optlen);
+ return offset;
+ }
+ break;
}
/* We have a dissector for this suboption's parameters; call it. */
@@ -1642,10 +1645,10 @@ telnet_sub_option(packet_info *pinfo, proto_tree *telnet_tree, tvbuff_t *tvb, in
/* Data is escaped, we have to unescape it. */
unescaped_tvb = unescape_and_tvbuffify_telnet_option(pinfo, tvb, start_offset, subneg_len);
proto_tree_add_text(option_tree, unescaped_tvb, 0, subneg_len - iac_data,
- "Option data");
+ "Option data");
} else {
proto_tree_add_text(option_tree, tvb, start_offset, subneg_len,
- "Option data");
+ "Option data");
}
}
}
@@ -1654,13 +1657,13 @@ telnet_sub_option(packet_info *pinfo, proto_tree *telnet_tree, tvbuff_t *tvb, in
static int
telnet_will_wont_do_dont(proto_tree *telnet_tree, tvbuff_t *tvb,
- int start_offset, const char *type)
+ int start_offset, const char *type)
{
- int offset = start_offset;
- guint8 opt_byte;
+ int offset = start_offset;
+ guint8 opt_byte;
const char *opt;
- offset += 2; /* skip IAC and WILL,WONT,DO,DONT} */
+ offset += 2; /* skip IAC and WILL,WONT,DO,DONT} */
opt_byte = tvb_get_guint8(tvb, offset);
if (opt_byte >= NOPTIONS)
opt = "<unknown option>";
@@ -1669,89 +1672,89 @@ telnet_will_wont_do_dont(proto_tree *telnet_tree, tvbuff_t *tvb,
offset++;
proto_tree_add_text(telnet_tree, tvb, start_offset, 3,
- "Command: %s %s", type, opt);
+ "Command: %s %s", type, opt);
return offset;
}
static int
telnet_command(packet_info *pinfo, proto_tree *telnet_tree, tvbuff_t *tvb, int start_offset)
{
- int offset = start_offset;
+ int offset = start_offset;
guchar optcode;
- offset += 1; /* skip IAC */
+ offset += 1; /* skip IAC */
optcode = tvb_get_guint8(tvb, offset);
offset++;
switch(optcode) {
case TN_EOF:
proto_tree_add_text(telnet_tree, tvb, start_offset, 2,
- "Command: End of File");
+ "Command: End of File");
break;
case TN_SUSP:
proto_tree_add_text(telnet_tree, tvb, start_offset, 2,
- "Command: Suspend Current Process");
+ "Command: Suspend Current Process");
break;
case TN_ABORT:
proto_tree_add_text(telnet_tree, tvb, start_offset, 2,
- "Command: Abort Process");
+ "Command: Abort Process");
break;
case TN_EOR:
proto_tree_add_text(telnet_tree, tvb, start_offset, 2,
- "Command: End of Record");
+ "Command: End of Record");
break;
case TN_SE:
proto_tree_add_text(telnet_tree, tvb, start_offset, 2,
- "Command: Suboption End");
+ "Command: Suboption End");
break;
case TN_NOP:
proto_tree_add_text(telnet_tree, tvb, start_offset, 2,
- "Command: No Operation");
+ "Command: No Operation");
break;
case TN_DM:
proto_tree_add_text(telnet_tree, tvb, start_offset, 2,
- "Command: Data Mark");
+ "Command: Data Mark");
break;
case TN_BRK:
proto_tree_add_text(telnet_tree, tvb, start_offset, 2,
- "Command: Break");
+ "Command: Break");
break;
case TN_IP:
proto_tree_add_text(telnet_tree, tvb, start_offset, 2,
- "Command: Interrupt Process");
+ "Command: Interrupt Process");
break;
case TN_AO:
proto_tree_add_text(telnet_tree, tvb, start_offset, 2,
- "Command: Abort Output");
+ "Command: Abort Output");
break;
case TN_AYT:
proto_tree_add_text(telnet_tree, tvb, start_offset, 2,
- "Command: Are You There?");
+ "Command: Are You There?");
break;
case TN_EC:
proto_tree_add_text(telnet_tree, tvb, start_offset, 2,
- "Command: Escape Character");
+ "Command: Escape Character");
break;
case TN_EL:
proto_tree_add_text(telnet_tree, tvb, start_offset, 2,
- "Command: Erase Line");
+ "Command: Erase Line");
break;
case TN_GA:
proto_tree_add_text(telnet_tree, tvb, start_offset, 2,
- "Command: Go Ahead");
+ "Command: Go Ahead");
break;
case TN_SB:
@@ -1760,27 +1763,27 @@ telnet_command(packet_info *pinfo, proto_tree *telnet_tree, tvbuff_t *tvb, int s
case TN_WILL:
offset = telnet_will_wont_do_dont(telnet_tree, tvb, start_offset,
- "Will");
+ "Will");
break;
case TN_WONT:
offset = telnet_will_wont_do_dont(telnet_tree, tvb, start_offset,
- "Won't");
+ "Won't");
break;
case TN_DO:
offset = telnet_will_wont_do_dont(telnet_tree, tvb, start_offset,
- "Do");
+ "Do");
break;
case TN_DONT:
offset = telnet_will_wont_do_dont(telnet_tree, tvb, start_offset,
- "Don't");
+ "Don't");
break;
default:
proto_tree_add_text(telnet_tree, tvb, start_offset, 2,
- "Command: Unknown (0x%02x)", optcode);
+ "Command: Unknown (0x%02x)", optcode);
break;
}
@@ -1790,9 +1793,9 @@ telnet_command(packet_info *pinfo, proto_tree *telnet_tree, tvbuff_t *tvb, int s
static void
telnet_add_text(proto_tree *tree, tvbuff_t *tvb, int offset, int len)
{
- gint next_offset;
- int linelen;
- guint8 c;
+ gint next_offset;
+ int linelen;
+ guint8 c;
gboolean last_char_was_cr;
while (len != 0 && tvb_offset_exists(tvb, offset)) {
@@ -1800,7 +1803,7 @@ telnet_add_text(proto_tree *tree, tvbuff_t *tvb, int offset, int len)
* Find the end of the line.
*/
linelen = tvb_find_line_end(tvb, offset, len, &next_offset, FALSE);
- len -= next_offset - offset; /* subtract out the line's characters */
+ len -= next_offset - offset; /* subtract out the line's characters */
/*
* In Telnet, CR NUL is the way you send a CR by itself in the
@@ -1818,20 +1821,20 @@ telnet_add_text(proto_tree *tree, tvbuff_t *tvb, int offset, int len)
* a line.
*/
if (tvb_get_guint8(tvb, offset + linelen) == '\r') {
- last_char_was_cr = TRUE;
- while (len != 0 && tvb_offset_exists(tvb, next_offset)) {
+ last_char_was_cr = TRUE;
+ while (len != 0 && tvb_offset_exists(tvb, next_offset)) {
c = tvb_get_guint8(tvb, next_offset);
- next_offset++; /* skip over that character */
- len--;
+ next_offset++; /* skip over that character */
+ len--;
if (c == '\n' || (c == '\0' && last_char_was_cr)) {
/*
- * LF is a line ending, whether preceded by CR or not.
- * NUL is a line ending if preceded by CR.
- */
+ * LF is a line ending, whether preceded by CR or not.
+ * NUL is a line ending if preceded by CR.
+ */
break;
}
- last_char_was_cr = (c == '\r');
- }
+ last_char_was_cr = (c == '\r');
+ }
}
}
@@ -1848,175 +1851,186 @@ telnet_add_text(proto_tree *tree, tvbuff_t *tvb, int offset, int len)
static int find_unescaped_iac(tvbuff_t *tvb, int offset, int len)
{
- int iac_offset = offset;
-
- /* If we find an IAC (0XFF), make sure it is not followed by another 0XFF.
- Such cases indicate that it is not an IAC at all */
- while ((iac_offset = tvb_find_guint8(tvb, iac_offset, len, TN_IAC)) != -1 &&
- (tvb_get_guint8(tvb, iac_offset + 1) == TN_IAC))
- {
- iac_offset+=2;
- len = tvb_length_remaining(tvb, iac_offset);
- }
- return iac_offset;
+ int iac_offset = offset;
+
+ /* If we find an IAC (0XFF), make sure it is not followed by another 0XFF.
+ Such cases indicate that it is not an IAC at all */
+ while ((iac_offset = tvb_find_guint8(tvb, iac_offset, len, TN_IAC)) != -1 &&
+ (tvb_get_guint8(tvb, iac_offset + 1) == TN_IAC))
+ {
+ iac_offset+=2;
+ len = tvb_length_remaining(tvb, iac_offset);
+ }
+ return iac_offset;
}
static void
dissect_telnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *telnet_tree, *ti;
- tvbuff_t *next_tvb;
- gint offset = 0;
- guint len = 0;
- guint is_tn3270 = 0;
- guint is_tn5250 = 0;
- int data_len;
- gint iac_offset;
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "TELNET");
- col_set_str(pinfo->cinfo, COL_INFO, "Telnet Data ...");
-
- is_tn3270 = find_tn3270_conversation(pinfo);
- is_tn5250 = find_tn5250_conversation(pinfo);
-
- ti = proto_tree_add_item(tree, proto_telnet, tvb, offset, -1, ENC_NA);
- telnet_tree = proto_item_add_subtree(ti, ett_telnet);
-
- /*
- * Scan through the buffer looking for an IAC byte.
- */
- while ((len = tvb_length_remaining(tvb, offset)) > 0) {
- iac_offset = find_unescaped_iac(tvb, offset, len);
- if (iac_offset != -1) {
- /*
- * We found an IAC byte.
- * If there's any data before it, add that data to the
- * tree, a line at a time.
- */
- data_len = iac_offset - offset;
- if (data_len > 0) {
- if (is_tn3270) {
- next_tvb = tvb_new_subset(tvb, offset, data_len, data_len);
- call_dissector(tn3270_handle, next_tvb, pinfo, telnet_tree);
- } else if (is_tn5250) {
- next_tvb = tvb_new_subset(tvb, offset, data_len, data_len);
- call_dissector(tn5250_handle, next_tvb, pinfo, telnet_tree);
- } else
- telnet_add_text(telnet_tree, tvb, offset, data_len);
- }
- /*
- * Now interpret the command.
- */
- offset = telnet_command(pinfo, telnet_tree, tvb, iac_offset);
- } else {
- /* get more data if tn3270 */
- if (is_tn3270 || is_tn5250) {
- pinfo->desegment_offset = offset;
- pinfo->desegment_len = DESEGMENT_ONE_MORE_SEGMENT;
- return;
- }
- /*
- * We found no IAC byte, so what remains in the buffer
- * is the last of the data in the packet.
- * Add it to the tree, a line at a time, and then quit.
- */
- telnet_add_text(telnet_tree, tvb, offset, len);
- break;
- }
- }
+ proto_tree *telnet_tree, *ti;
+ tvbuff_t *next_tvb;
+ gint offset = 0;
+ guint len = 0;
+ guint is_tn3270 = 0;
+ guint is_tn5250 = 0;
+ int data_len;
+ gint iac_offset;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "TELNET");
+ col_set_str(pinfo->cinfo, COL_INFO, "Telnet Data ...");
+
+ is_tn3270 = find_tn3270_conversation(pinfo);
+ is_tn5250 = find_tn5250_conversation(pinfo);
+
+ ti = proto_tree_add_item(tree, proto_telnet, tvb, offset, -1, ENC_NA);
+ telnet_tree = proto_item_add_subtree(ti, ett_telnet);
+
+ /*
+ * Scan through the buffer looking for an IAC byte.
+ */
+ while ((len = tvb_length_remaining(tvb, offset)) > 0) {
+ iac_offset = find_unescaped_iac(tvb, offset, len);
+ if (iac_offset != -1) {
+ /*
+ * We found an IAC byte.
+ * If there's any data before it, add that data to the
+ * tree, a line at a time.
+ */
+ data_len = iac_offset - offset;
+ if (data_len > 0) {
+ if (is_tn3270) {
+ next_tvb = tvb_new_subset(tvb, offset, data_len, data_len);
+ call_dissector(tn3270_handle, next_tvb, pinfo, telnet_tree);
+ } else if (is_tn5250) {
+ next_tvb = tvb_new_subset(tvb, offset, data_len, data_len);
+ call_dissector(tn5250_handle, next_tvb, pinfo, telnet_tree);
+ } else
+ telnet_add_text(telnet_tree, tvb, offset, data_len);
+ }
+ /*
+ * Now interpret the command.
+ */
+ offset = telnet_command(pinfo, telnet_tree, tvb, iac_offset);
+ } else {
+ /* get more data if tn3270 */
+ if (is_tn3270 || is_tn5250) {
+ pinfo->desegment_offset = offset;
+ pinfo->desegment_len = DESEGMENT_ONE_MORE_SEGMENT;
+ return;
+ }
+ /*
+ * We found no IAC byte, so what remains in the buffer
+ * is the last of the data in the packet.
+ * Add it to the tree, a line at a time, and then quit.
+ */
+ telnet_add_text(telnet_tree, tvb, offset, len);
+ break;
+ }
+ }
}
void
proto_register_telnet(void)
{
- static hf_register_info hf[] = {
- { &hf_telnet_auth_name,
- { "Name", "telnet.auth.name", FT_STRING, BASE_NONE,
- NULL, 0, "Name of user being authenticated", HFILL }},
- { &hf_telnet_auth_cmd,
- { "Auth Cmd", "telnet.auth.cmd", FT_UINT8, BASE_DEC,
- VALS(auth_cmd_vals), 0, "Authentication Command", HFILL }},
- { &hf_telnet_auth_type,
- { "Auth Type", "telnet.auth.type", FT_UINT8, BASE_DEC,
- VALS(auth_type_vals), 0, "Authentication Type", HFILL }},
- { &hf_telnet_auth_mod_cred_fwd,
- { "Cred Fwd", "telnet.auth.mod.cred_fwd", FT_BOOLEAN, 8,
- TFS(&auth_mod_cred_fwd), 0x08, "Modifier: Whether client will forward creds or not", HFILL }},
- { &hf_telnet_auth_mod_who,
- { "Who", "telnet.auth.mod.who", FT_BOOLEAN, 8,
- TFS(&auth_mod_who), 0x01, "Modifier: Who to mask", HFILL }},
- { &hf_telnet_auth_mod_how,
- { "How", "telnet.auth.mod.how", FT_BOOLEAN, 8,
- TFS(&auth_mod_how), 0x02, "Modifier: How to mask", HFILL }},
- { &hf_telnet_auth_mod_enc,
- { "Encrypt", "telnet.auth.mod.enc", FT_UINT8, BASE_DEC,
- VALS(auth_mod_enc), 0x14, "Modifier: How to enable Encryption", HFILL }},
- { &hf_telnet_auth_krb5_type,
- { "Command", "telnet.auth.krb5.cmd", FT_UINT8, BASE_DEC,
- VALS(auth_krb5_types), 0, "Krb5 Authentication sub-command", HFILL }},
- { &hf_telnet_enc_cmd,
- { "Enc Cmd", "telnet.enc.cmd", FT_UINT8, BASE_DEC,
- VALS(enc_cmd_vals), 0, "Encryption command", HFILL }},
- { &hf_telnet_enc_type,
- { "Enc Type", "telnet.enc.type", FT_UINT8, BASE_DEC,
- VALS(enc_type_vals), 0, "Encryption type", HFILL }},
- { &hf_telnet_data,
- { "Data", "telnet.data", FT_STRING, BASE_NONE,
- NULL, 0, NULL, HFILL }},
- };
- static gint *ett[] = {
- &ett_telnet,
- &ett_telnet_subopt,
- &ett_status_subopt,
- &ett_rcte_subopt,
- &ett_olw_subopt,
- &ett_ops_subopt,
- &ett_crdisp_subopt,
- &ett_htstops_subopt,
- &ett_htdisp_subopt,
- &ett_ffdisp_subopt,
- &ett_vtstops_subopt,
- &ett_vtdisp_subopt,
- &ett_lfdisp_subopt,
- &ett_extasc_subopt,
- &ett_bytemacro_subopt,
- &ett_det_subopt,
- &ett_supdupout_subopt,
- &ett_sendloc_subopt,
- &ett_termtype_subopt,
- &ett_tacacsui_subopt,
- &ett_outmark_subopt,
- &ett_tlocnum_subopt,
- &ett_tn3270reg_subopt,
- &ett_x3pad_subopt,
- &ett_naws_subopt,
- &ett_tspeed_subopt,
- &ett_rfc_subopt,
- &ett_linemode_subopt,
- &ett_xdpyloc_subopt,
- &ett_env_subopt,
- &ett_auth_subopt,
- &ett_enc_subopt,
- &ett_newenv_subopt,
- &ett_tn3270e_subopt,
- &ett_xauth_subopt,
- &ett_charset_subopt,
- &ett_rsp_subopt,
- &ett_comport_subopt
- };
-
- proto_telnet = proto_register_protocol("Telnet", "TELNET", "telnet");
- proto_register_field_array(proto_telnet, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ static hf_register_info hf[] = {
+ { &hf_telnet_auth_name,
+ { "Name", "telnet.auth.name", FT_STRING, BASE_NONE,
+ NULL, 0, "Name of user being authenticated", HFILL }
+ },
+ { &hf_telnet_auth_cmd,
+ { "Auth Cmd", "telnet.auth.cmd", FT_UINT8, BASE_DEC,
+ VALS(auth_cmd_vals), 0, "Authentication Command", HFILL }
+ },
+ { &hf_telnet_auth_type,
+ { "Auth Type", "telnet.auth.type", FT_UINT8, BASE_DEC,
+ VALS(auth_type_vals), 0, "Authentication Type", HFILL }
+ },
+ { &hf_telnet_auth_mod_cred_fwd,
+ { "Cred Fwd", "telnet.auth.mod.cred_fwd", FT_BOOLEAN, 8,
+ TFS(&auth_mod_cred_fwd), 0x08, "Modifier: Whether client will forward creds or not", HFILL }
+ },
+ { &hf_telnet_auth_mod_who,
+ { "Who", "telnet.auth.mod.who", FT_BOOLEAN, 8,
+ TFS(&auth_mod_who), 0x01, "Modifier: Who to mask", HFILL }
+ },
+ { &hf_telnet_auth_mod_how,
+ { "How", "telnet.auth.mod.how", FT_BOOLEAN, 8,
+ TFS(&auth_mod_how), 0x02, "Modifier: How to mask", HFILL }
+ },
+ { &hf_telnet_auth_mod_enc,
+ { "Encrypt", "telnet.auth.mod.enc", FT_UINT8, BASE_DEC,
+ VALS(auth_mod_enc), 0x14, "Modifier: How to enable Encryption", HFILL }
+ },
+ { &hf_telnet_auth_krb5_type,
+ { "Command", "telnet.auth.krb5.cmd", FT_UINT8, BASE_DEC,
+ VALS(auth_krb5_types), 0, "Krb5 Authentication sub-command", HFILL }
+ },
+ { &hf_telnet_enc_cmd,
+ { "Enc Cmd", "telnet.enc.cmd", FT_UINT8, BASE_DEC,
+ VALS(enc_cmd_vals), 0, "Encryption command", HFILL }
+ },
+ { &hf_telnet_enc_type,
+ { "Enc Type", "telnet.enc.type", FT_UINT8, BASE_DEC,
+ VALS(enc_type_vals), 0, "Encryption type", HFILL }
+ },
+ { &hf_telnet_data,
+ { "Data", "telnet.data", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }
+ },
+ };
+ static gint *ett[] = {
+ &ett_telnet,
+ &ett_telnet_subopt,
+ &ett_status_subopt,
+ &ett_rcte_subopt,
+ &ett_olw_subopt,
+ &ett_ops_subopt,
+ &ett_crdisp_subopt,
+ &ett_htstops_subopt,
+ &ett_htdisp_subopt,
+ &ett_ffdisp_subopt,
+ &ett_vtstops_subopt,
+ &ett_vtdisp_subopt,
+ &ett_lfdisp_subopt,
+ &ett_extasc_subopt,
+ &ett_bytemacro_subopt,
+ &ett_det_subopt,
+ &ett_supdupout_subopt,
+ &ett_sendloc_subopt,
+ &ett_termtype_subopt,
+ &ett_tacacsui_subopt,
+ &ett_outmark_subopt,
+ &ett_tlocnum_subopt,
+ &ett_tn3270reg_subopt,
+ &ett_x3pad_subopt,
+ &ett_naws_subopt,
+ &ett_tspeed_subopt,
+ &ett_rfc_subopt,
+ &ett_linemode_subopt,
+ &ett_xdpyloc_subopt,
+ &ett_env_subopt,
+ &ett_auth_subopt,
+ &ett_enc_subopt,
+ &ett_newenv_subopt,
+ &ett_tn3270e_subopt,
+ &ett_xauth_subopt,
+ &ett_charset_subopt,
+ &ett_rsp_subopt,
+ &ett_comport_subopt
+ };
+
+ proto_telnet = proto_register_protocol("Telnet", "TELNET", "telnet");
+ proto_register_field_array(proto_telnet, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_telnet(void)
{
- dissector_handle_t telnet_handle;
+ dissector_handle_t telnet_handle;
- telnet_handle = create_dissector_handle(dissect_telnet, proto_telnet);
- dissector_add_uint("tcp.port", TCP_PORT_TELNET, telnet_handle);
- tn3270_handle = find_dissector("tn3270");
- tn5250_handle = find_dissector("tn5250");
+ telnet_handle = create_dissector_handle(dissect_telnet, proto_telnet);
+ dissector_add_uint("tcp.port", TCP_PORT_TELNET, telnet_handle);
+ tn3270_handle = find_dissector("tn3270");
+ tn5250_handle = find_dissector("tn5250");
}
diff --git a/epan/dissectors/packet-teredo.c b/epan/dissectors/packet-teredo.c
index 690cdb06ac..504e33b88c 100644
--- a/epan/dissectors/packet-teredo.c
+++ b/epan/dissectors/packet-teredo.c
@@ -31,9 +31,8 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/addr_resolv.h>
#include <epan/ipproto.h>
diff --git a/epan/dissectors/packet-tetra.c b/epan/dissectors/packet-tetra.c
index a42f77cb35..338e34c923 100644
--- a/epan/dissectors/packet-tetra.c
+++ b/epan/dissectors/packet-tetra.c
@@ -9116,7 +9116,7 @@ void proto_register_tetra (void)
{ "Timer", "tetra.timer", FT_UINT16, BASE_HEX, NULL, 0x0,
"Timer Register", HFILL }},
{ &hf_tetra_crc,
- { "CRC", "tetra.crc", FT_BOOLEAN, BASE_DEC, NULL, 0x0,
+ { "CRC", "tetra.crc", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
"CRC result", HFILL }},
{ &hf_tetra_len0,
{ "Length", "tetra.len0", FT_UINT16, BASE_DEC, NULL, 0x0,
diff --git a/epan/dissectors/packet-text-media.c b/epan/dissectors/packet-text-media.c
index b8d600777d..13ed2aaffb 100644
--- a/epan/dissectors/packet-text-media.c
+++ b/epan/dissectors/packet-text-media.c
@@ -36,9 +36,8 @@
#include "config.h"
#endif
-#include <ctype.h>
-
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/strutil.h>
diff --git a/epan/dissectors/packet-tipc.c b/epan/dissectors/packet-tipc.c
index 312a038fda..bf8784ea30 100644
--- a/epan/dissectors/packet-tipc.c
+++ b/epan/dissectors/packet-tipc.c
@@ -1910,7 +1910,7 @@ dissect_tipc_int_prot_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tipc_tr
* part of the changeover procedure. This message type may be regarded as an empty
* ORIGINAL_MSG, where message count is zero, and no packet is wrapped inside.
*/
- proto_tree_add_text(tipc_tree, tvb, offset, -1, "TIPC_CHANGEOVER_PROTOCOL Protol/dissection Error");
+ proto_tree_add_text(tipc_tree, tvb, offset, -1, "TIPC_CHANGEOVER_PROTOCOL Protocol/dissection Error");
break;
}
break;
diff --git a/epan/dissectors/packet-tivoconnect.c b/epan/dissectors/packet-tivoconnect.c
index 12f1e8f76c..f573f69adf 100644
--- a/epan/dissectors/packet-tivoconnect.c
+++ b/epan/dissectors/packet-tivoconnect.c
@@ -41,7 +41,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
#include <string.h>
#include <glib.h>
diff --git a/epan/dissectors/packet-tn3270.c b/epan/dissectors/packet-tn3270.c
index cfae6f31ad..98adc60a72 100644
--- a/epan/dissectors/packet-tn3270.c
+++ b/epan/dissectors/packet-tn3270.c
@@ -1,10 +1,26 @@
/* packet-tn3270.c
* Routines for tn3270.packet dissection
*
- * Reference:
+ * References:
* 3270 Information Display System: Data Stream Programmer's Reference
- * GA23-0059-07
- * (http://www-01.ibm.com/support/docview.wss?uid=pub1ga23005907)
+ * GA23-0059-07
+ * http://publib.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/CN7P4000
+ * (Paragraph references in the comments in this file (e.g., 6.15) are to the above document)
+ *
+ * 3174 Establishment Controller Functional Description
+ * GA23-0218-11
+ * http://publib.boulder.ibm.com/cgi-bin/bookmgr/BOOKS/cn7a7003
+ *
+ *
+ * RFC 1041: Telnet 3270 Regime Option
+ * http://tools.ietf.org/html/rfc1041
+ *
+ * RFC 1576: TN3270 Current Practices
+ * http://tools.ietf.org/html/rfc1576
+ *
+ * RFC 2355: TN3270 Enhancements
+ * http://tools.ietf.org/html/rfc2355
+ *
*
* Copyright 2009, Robert Hogan <robert@roberthogan.net>
*
@@ -34,1094 +50,1166 @@
#endif
#include <string.h>
+
#include <glib.h>
+
+#include <epan/packet.h>
#include <epan/address.h>
#include <epan/conversation.h>
-#include <epan/packet.h>
#include <epan/strutil.h>
#include "packet-tn3270.h"
+/* Note well:
+ * In the IBM "3270 Information Display System: Data Stream Programmer's Reference"
+ * document, the references to bit numbers in the text and tables
+ * are based upon the "MSB 0" bit numbering scheme.
+ * That is: bits are numbered in a byte from left-to-right:
+ * "Bit 0" is the MSB of the byte
+ * "Bit 7" is the LSB of the byte
+ */
+
+/*
+ ToDo:
+ - better tree display: e.g., separate tree for each order code ....
+ - review 'structured field grouping: 5.2
+ - Telnet uses 0xFF as IAC ["interpret as command"] and thus for
+ telnet: any actual 0xFF bytes in a 3270 data stream will be prefixed with
+ a 0xFF escape. The escapes should be removed from the TVB before the
+ buffer is passed to this dissector. See packet-telnet.c
+ - Show the 'as a fraction" display as xx/yy ?
+*/
+
+/* Dissection is for EBCDIC 3270 */
+
/* OUTBOUND DATA STREAM (MAINFRAME PROGRAM -> DISPLAY)
- ________________ _____ __________________
-| Command Code |WCC | Orders and Data |
-|________________|_____|__________________|
+ ________________ _____ __________________
+ | Command Code |WCC | Orders and Data |
+ |________________|_____|__________________|
- or
- ______ ______________________
-| WSF | Structured Field(s) |
-|______|______________________|
+ or
+ ______ ______________________
+ | WSF | Structured Field(s) |
+ |______|______________________|
*/
-/*3270 Command Codes - Undocumented*/
-#define W 0x01
-#define RB 0x02
-#define NOP 0x03
-#define EW 0x05
-#define RM 0x06
-#define EWA 0x0D
-#define RMA 0x0E
-#define EAU 0x0F
-#define WSF 0x11
-
-/* SNA 3270 Command Codes */
-#define SNA_W 0xF1
-#define SNA_EW 0xF5
-#define SNA_EWA 0x7E
-#define SNA_RB 0xF2
-#define SNA_RM 0xF6
-#define SNA_RMA 0x6E
-#define SNA_EAU 0x6F
-#define SNA_WSF 0xF3
-#define SNA_BSC 0xF7
+/*--- 3270 Command Codes - "Local Attachment" ----- */
+#define CC_LCL_W 0x01
+#define CC_LCL_EW 0x05
+#define CC_LCL_EWA 0x0D
+#define CC_LCL_EAU 0x0F
+#define CC_LCL_WSF 0x11
-static const value_string vals_command_codes[] = {
- { W , "Write"},
- { EW , "Erase/Write"},
- { EWA, "Erase/Write Alternate"},
- { RB , "Read Buffer"},
- { RM , "Read Modified"},
- { RMA, "Read Modified All"},
- { EAU, "Erase All Unprotected"},
- { WSF, "Write Structured Field"},
- { SNA_W , "Write"},
- { SNA_EW , "Erase/Write"},
- { SNA_EWA, "Erase/Write Alternate"},
- { SNA_RB , "Read Buffer"},
- { SNA_RM , "Read Modified"},
- { SNA_RMA, "Read Modified All"},
- { SNA_EAU, "Erase All Unprotected"},
- { SNA_WSF, "Write Structured Field"},
- { SNA_BSC, "BSC Copy"},
- { 0x00, NULL }
-};
+#define CC_LCL_RB 0x02
+#define CC_LCL_RM 0x06
+#define CC_LCL_RMA 0x0E /* XXX Not valid ?? See 3174 Function Description 2.1.4 */
-/* WCC (Write Control Characters) */
-/*
-#define NOP 0x01
-#define WCC_RESET 0x02
-#define PRINTER1 0x04
-#define PRINTER2 0x08
-#define START_PRINTER 0x10
-#define SOUND_ALARM 0x20
-#define KEYBOARD_RESTORE 0x40
-#define RESET_MDT 0x80
-
-static const value_string vals_write_control_characters[] = {
- { NOP , "Nop"},
- { WCC_RESET , "Wcc Reset"},
- { PRINTER1 , "Printer"},
- { PRINTER2 , "Printer"},
- { START_PRINTER , "Start Printer"},
- { SOUND_ALARM , "Sound Alarm"},
- { KEYBOARD_RESTORE, "Keyboard Restore"},
- { RESET_MDT , "Reset Mdt"},
- { 0x00, NULL }
-};
-*/
+#if 0 /* ??? */
+#define CC_NOP 0x03
+#endif
-/* Order Codes */
-#define SF 0x1D
-#define SFE 0x29
-#define SBA 0x11
-#define SA 0x28
-#define MF 0x2C
-#define IC 0x13
-#define PT 0x05
-#define RA 0x3C
-#define EUA 0x12
-#define GE 0x08
+/*--- 3.3 3270 Command Codes - "Remote Attachment" ----- */
+#define CC_RMT_W 0xF1
+#define CC_RMT_EW 0xF5
+#define CC_RMT_EWA 0x7E
+#define CC_RMT_EAU 0x6F
+#define CC_RMT_WSF 0xF3
-static const value_string vals_order_codes[] = {
- { SF , "Start Field (SF)"},
- { SFE, "Start Field Extended (SFE)"},
- { SBA, "Set Buffer Address (SBA)"},
- { SA , "Set Attribute (SA)"},
- { MF , "Modify Field (MF)"},
- { IC , "Insert Cursor (IC)"},
- { PT , "Program Tab (PT)"},
- { RA , "Repeat to Address (RA)"},
- { EUA, "Erase Unprotected to Address (EUA)"},
- { GE , "Graphic Escape (GE)"},
- { 0x00, NULL }
-};
+#define CC_RMT_RB 0xF2
+#define CC_RMT_RM 0xF6
+#define CC_RMT_RMA 0x6E
-/* 4.3.11 Format Control Orders */
+#define CC_SNA_BSC 0xF7 /* local copy in a BSC environment */
-#define NUL 0x00
-#define SUB 0x3F
-#define DUP 0x1C
-#define FM 0x1E
-#define FF 0x0C
-#define CR 0x0D
-#define NL 0x15
-#define EM 0x19
-#define EO 0xFF
+static const value_string vals_command_codes[] = {
-static const value_string vals_format_control_orders[] = {
- { NUL , "Null"},
- { SUB , "Substitute"},
- { DUP , "Duplicate"},
- { FM , "Field Mark"},
- { FF , "Form Feed"},
- { CR , "Carriage Return"},
- { NL , "New Line"},
- { EM , "End of Medium"},
- { EO , "Eight Ones"},
- { 0x00, NULL }
+ { CC_LCL_W, "Write (Local)" },
+ { CC_LCL_EW, "Erase/Write (Local)" },
+ { CC_LCL_EWA, "Erase/Write Alternate (Local)" },
+ { CC_LCL_EAU, "Erase All Unprotected (Local)" },
+ { CC_LCL_WSF, "Write Structured Field (Local)" },
+ { CC_LCL_RB, "Read Buffer (Local)" },
+ { CC_LCL_RM, "Read Modified (Local)" },
+ { CC_LCL_RMA, "Read Modified All (Local)" },
+ { CC_RMT_W, "Write" },
+ { CC_RMT_EW, "Erase/Write" },
+ { CC_RMT_EWA, "Erase/Write Alternate" },
+ { CC_RMT_EAU, "Erase All Unprotected" },
+ { CC_RMT_WSF, "Write Structured Field" },
+ { CC_RMT_RB, "Read Buffer" },
+ { CC_RMT_RM, "Read Modified" },
+ { CC_RMT_RMA, "Read Modified All" },
+ { CC_SNA_BSC, "BSC Copy" },
+ { 0x00, NULL }
};
+/*--- 3.4 WCC (Write Control Characters) ----- */
+#define WCC_NOP 0x80 /* "Bit 0" */
+#define WCC_RESET 0x40 /* "Bit 1" */
+#define WCC_PRINTER1 0x20 /* "Bit 2" */
+#define WCC_PRINTER2 0x10 /* "Bit 3" */
+#define WCC_START_PRINTER 0x08 /* "Bit 4" */
+#define WCC_SOUND_ALARM 0x04 /* "Bit 5" */
+#define WCC_KEYBOARD_RESTORE 0x02 /* "Bit 6" */
+#define WCC_RESET_MDT 0x01 /* "Bit 7" */
+
+/*--- 4.3 Order Codes ----- */
+#define OC_MAX 0x3F
+
+#define OC_SF 0x1D
+#define OC_SFE 0x29
+#define OC_SBA 0x11
+#define OC_SA 0x28
+#define OC_MF 0x2C
+#define OC_IC 0x13
+#define OC_PT 0x05
+#define OC_RA 0x3C
+#define OC_EUA 0x12
+#define OC_GE 0x08
-/* 8.7 Copy Control Code */
-#define BIT_14 0x00
-#define BIT_12 0x40
-#define RESERVEDCCC 0x80
-#define BIT_12_2 0xC0
-#define CODING_BITS 0xC0
+static const value_string vals_order_codes[] = {
+ { OC_SF, "Start Field (SF)" },
+ { OC_SFE, "Start Field Extended (SFE)" },
+ { OC_SBA, "Set Buffer Address (SBA)" },
+ { OC_SA, "Set Attribute (SA)" },
+ { OC_MF, "Modify Field (MF)" },
+ { OC_IC, "Insert Cursor (IC)" },
+ { OC_PT, "Program Tab (PT)" },
+ { OC_RA, "Repeat to Address (RA)" },
+ { OC_EUA, "Erase Unprotected to Address (EUA)" },
+ { OC_GE, "Graphic Escape (GE)" },
+ { 0x00, NULL }
+};
-static const value_string vals_coding[] = {
- { BIT_14 , "Display Selector Pen Detectable"},
- { BIT_12 , "Intensified Display Selector Pen Detectable"},
- { RESERVEDCCC, "Non Display Non Detectable"},
- { BIT_12_2, "Display Not Selector Pen Detectable"},
- { 0x00, NULL }
+#if 0 /* Not used */
+/*--- 4.3.11 Format Control Orders ----- */
+/* Special treatment for display */
+#define FCO_NUL 0x00
+#define FCO_SUB 0x3F
+#define FCO_DUP 0x1C
+#define FCO_FM 0x1E
+#define FCO_FF 0x0C
+#define FCO_CR 0x0D
+#define FCO_NL 0x15
+#define FCO_EM 0x19
+#define FCO_EO 0xFF
+
+static const value_string vals_format_control_orders[] = {
+ { FCO_NUL, "Null" },
+ { FCO_SUB, "Substitute" },
+ { FCO_DUP, "Duplicate" },
+ { FCO_FM, "Field Mark" },
+ { FCO_FF, "Form Feed" },
+ { FCO_CR, "Carriage Return" },
+ { FCO_NL, "New Line" },
+ { FCO_EM, "End of Medium" },
+ { FCO_EO, "Eight Ones" },
+ { 0x00, NULL }
};
+#endif
-#define POINT_LINE_LENGTH 0x00
-#define PRINT_LINE_40 0x10
-#define PRINT_LINE_64 0x20
-#define PRINT_LINE_80 0x30
-#define PRINT_BITS 0x30
-
-static const value_string vals_printout_format[] = {
- { POINT_LINE_LENGTH, "The NL, EM, and CR orders in the data stream determine pointline length. "
- "Provides a 132-print position line when the orders are not present."},
- { PRINT_LINE_40 , "Specifies a 40-character print line."},
- { PRINT_LINE_64 , "Specifies a 64-character print line."},
- { PRINT_LINE_80 , "Specifies an 80-character print line."},
- { 0x00, NULL }
+/*--- 8.7 Copy Control Code ----- */
+/* Use for "local Copy" in a "BSC [BiSync] Environment" */
+
+/* "Coding Bits" are those required such that the */
+/* complete 8 bit CCC is a valid EBCDIC character */
+#define CCC_GRAPHIC_CONVERT_MASK 0xC0
+
+#define CCC_PRINT_BITS_MASK 0x30
+#define CCC_PRINT_BITS_POINT_LINE_LENGTH 0x00
+#define CCC_PRINT_BITS_PRINT_LINE_40 0x01
+#define CCC_PRINT_BITS_PRINT_LINE_64 0x02
+#define CCC_PRINT_BITS_PRINT_LINE_80 0x03
+
+static const value_string ccc_vals_printout_format[] = {
+ { CCC_PRINT_BITS_POINT_LINE_LENGTH,
+ "The NL, EM, and CR orders in the data stream determine pointline length. "
+ "Provides a 132-print position line when the orders are not present." },
+ { CCC_PRINT_BITS_PRINT_LINE_40,
+ "Specifies a 40-character print line." },
+ { CCC_PRINT_BITS_PRINT_LINE_64,
+ "Specifies a 64-character print line." },
+ { CCC_PRINT_BITS_PRINT_LINE_80,
+ "Specifies an 80-character print line." },
+ { 0x00, NULL }
};
-#define START_PRINT 0x08
-#define SOUND_ALARM 0x04
-
-#define ONLY_ATTRIBUTE_CHARACTERS 0x00
-#define ATTRIBUTE_CHARACTERS_UNPROTECTED_AN 0x01
-#define ALL_ATTRIBUTE_PROTECTED 0x02
-#define ENTIRE_CONTENTS 0x03
-#define ATTRIBUTE_BITS 0x03
-
-static const value_string vals_copytype[] = {
- { ONLY_ATTRIBUTE_CHARACTERS , "Only attribute characters are copied."},
- { ATTRIBUTE_CHARACTERS_UNPROTECTED_AN , "Attribute characters and unprotected alphanumeric fields (including nulls) are copied. Nulls are transferred for the alphanumeric characters not copied from the protected fields."},
- { ALL_ATTRIBUTE_PROTECTED , "All attribute characters and protected alphanumeric fields (including nulls) are copied. Nulls are transferred for the alphanumeric characters not copied from the unprotected fields."},
- { ENTIRE_CONTENTS , "The entire contents of the storage buffer (including nulls) are copied."},
- { 0x00, NULL }
+#define CCC_START_PRINT 0x08
+#define CCC_SOUND_ALARM 0x04
+
+#define CCC_ATTRIBUTE_BITS_MASK 0x03
+#define CCC_ATTRIBUTE_BITS_ONLY_ATTRIBUTE_CHARACTERS 0x00
+#define CCC_ATTRIBUTE_BITS_ATTRIBUTE_CHARACTERS_UNPROTECTED_AN 0x01
+#define CCC_ATTRIBUTE_BITS_ALL_ATTRIBUTE_PROTECTED 0x02
+#define CCC_ATTRIBUTE_BITS_ENTIRE_CONTENTS 0x03
+
+static const value_string ccc_vals_copytype[] = {
+ { CCC_ATTRIBUTE_BITS_ONLY_ATTRIBUTE_CHARACTERS,
+ "Only attribute characters are copied." },
+ { CCC_ATTRIBUTE_BITS_ATTRIBUTE_CHARACTERS_UNPROTECTED_AN,
+ "Attribute characters and unprotected alphanumeric fields"
+ " (including nulls) are copied. Nulls are transferred for"
+ " the alphanumeric characters not copied from the"
+ " protected fields." },
+ { CCC_ATTRIBUTE_BITS_ALL_ATTRIBUTE_PROTECTED,
+ "All attribute characters and protected alphanumeric fields"
+ " (including nulls) are copied. Nulls are transferred for the alphanumeric characters not"
+ " copied from the unprotected fields." },
+ { CCC_ATTRIBUTE_BITS_ENTIRE_CONTENTS,
+ "The entire contents of the storage buffer (including nulls) are copied." },
+ { 0x00, NULL }
};
-/* 4.4.1 Field Attributes */
-#define GRAPHIC_CONVERT1 0x80
-#define GRAPHIC_CONVERT2 0x40
-#define PROTECTED 0x20
-#define NUMERIC 0x10
-#define RESERVED 0x08
-#define MODIFIED 0x04
+/*--- 4.4.1 Field Attributes ----- */
+#define FA_GRAPHIC_CONVERT_MASK 0xC0
+
+#define FA_PROTECTED 0x20 /* "Bit 2" */
+#define FA_NUMERIC 0x10 /* "Bit 3" */
+
+#define FA_RESERVED 0x02 /* "Bit 6" */
+#define FA_MODIFIED 0x01 /* "Bit 7" */
-#define DISPLAY_NOT_SELECTOR_PEN_DETECTABLE 0x00
-#define DISPLAY_SELECTOR_PEN_DETECTABLE 0x01
-#define INTENSIFIED_DISPLAY_SELECTOR_PEN_DETECTABLE 0x02
-#define NON_DISPLAY_NON_DETECTABLE 0x03
-#define DISPLAY_BITS 0x03
+#define FA_DISPLAY_BITS_MASK 0x0C /* "Bits 4,5" */
+#define FA_DISPLAY_BITS_DISPLAY_NOT_SELECTOR_PEN_DETECTABLE 0x00
+#define FA_DISPLAY_BITS_DISPLAY_SELECTOR_PEN_DETECTABLE 0x01
+#define FA_DISPLAY_BITS_INTENSIFIED_DISPLAY_SELECTOR_PEN_DETECTABLE 0x02
+#define FA_DISPLAY_BITS_NON_DISPLAY_NON_DETECTABLE 0x03
static const value_string vals_fa_display[] = {
- { DISPLAY_SELECTOR_PEN_DETECTABLE , "Display Selector Pen Detectable"},
- { INTENSIFIED_DISPLAY_SELECTOR_PEN_DETECTABLE, "Intensified Display Selector Pen Detectable"},
- { NON_DISPLAY_NON_DETECTABLE , "Non Display Non Detectable"},
- { DISPLAY_NOT_SELECTOR_PEN_DETECTABLE , "Display Not Selector Pen Detectable"},
- { 0x00, NULL }
+ { FA_DISPLAY_BITS_DISPLAY_NOT_SELECTOR_PEN_DETECTABLE, "Display/Not Selector Pen Detectable" },
+ { FA_DISPLAY_BITS_DISPLAY_SELECTOR_PEN_DETECTABLE, "Display/Selector Pen Detectable" },
+ { FA_DISPLAY_BITS_INTENSIFIED_DISPLAY_SELECTOR_PEN_DETECTABLE, "Intensified Display/Selector Pen Detectable" },
+ { FA_DISPLAY_BITS_NON_DISPLAY_NON_DETECTABLE, "Non Display, Non Detectable (not printable)" },
+ { 0x00, NULL }
};
-/* 4.4.5 Attribute Types */
-#define ALL_CHARACTER_ATTRIBUTES 0x00
-#define T3270_FIELD_ATTRIBUTE 0xC0
-#define FIELD_VALIDATION 0xC1
-#define FIELD_OUTLINING 0xC2
-#define EXTENDED_HIGHLIGHTING 0x41
-#define FOREGROUND_COLOR 0x42
-#define CHARACTER_SET 0x43
-#define BACKGROUND_COLOR 0x45
-#define TRANSPARENCY 0x46
+/*--- 4.4.5 Attribute Types ----- */
+#define AT_ALL_CHARACTER_ATTRIBUTES 0x00
+#define AT_T3270_FIELD_ATTRIBUTE 0xC0
+#define AT_FIELD_VALIDATION 0xC1
+#define AT_FIELD_OUTLINING 0xC2
+#define AT_EXTENDED_HIGHLIGHTING 0x41
+#define AT_FOREGROUND_COLOR 0x42
+#define AT_CHARACTER_SET 0x43
+#define AT_BACKGROUND_COLOR 0x45
+#define AT_TRANSPARENCY 0x46
static const value_string vals_attribute_types[] = {
- { ALL_CHARACTER_ATTRIBUTES, "All character attributes"},
- { T3270_FIELD_ATTRIBUTE , "3270 Field attribute"},
- { FIELD_VALIDATION , "Field validation"},
- { FIELD_OUTLINING , "Field outlining"},
- { EXTENDED_HIGHLIGHTING , "Extended highlighting"},
- { FOREGROUND_COLOR , "Foreground color"},
- { CHARACTER_SET , "Character set"},
- { BACKGROUND_COLOR , "Background color"},
- { TRANSPARENCY , "Transparency"},
- { 0x00, NULL }
+ { AT_ALL_CHARACTER_ATTRIBUTES, "All character attributes" },
+ { AT_T3270_FIELD_ATTRIBUTE, "3270 Field attribute" },
+ { AT_FIELD_VALIDATION, "Field validation" },
+ { AT_FIELD_OUTLINING, "Field outlining" },
+ { AT_EXTENDED_HIGHLIGHTING, "Extended highlighting" },
+ { AT_FOREGROUND_COLOR, "Foreground color" },
+ { AT_CHARACTER_SET, "Character set" },
+ { AT_BACKGROUND_COLOR, "Background color" },
+ { AT_TRANSPARENCY, "Transparency" },
+ { 0x00, NULL }
};
-/* 4.4.6.3 Extended Highlighting */
-#define DEFAULT_HIGHLIGHTING 0x00
-#define NORMAL 0xF0
-#define BLINK 0xF1
-#define REVERSE_VIDEO 0xF2
-#define UNDERSCORE 0xF4
-
-static const value_string vals_extended_highlighting[] = {
- { DEFAULT_HIGHLIGHTING , "Default"},
- { NORMAL , "Normal (as determined by the 3270 field attribute)"},
- { BLINK , "Blink"},
- { REVERSE_VIDEO, "Reverse video"},
- { UNDERSCORE , "Underscore."},
- { 0x00, NULL }
+/*--- 4.4.6.3 Extended Highlighting ----- */
+#define AT_EH_DEFAULT_HIGHLIGHTING 0x00
+#define AT_EH_NORMAL 0xF0
+#define AT_EH_BLINK 0xF1
+#define AT_EH_REVERSE_VIDEO 0xF2
+#define AT_EH_UNDERSCORE 0xF4
+
+static const value_string vals_at_extended_highlighting[] = {
+ { AT_EH_DEFAULT_HIGHLIGHTING, "Default" },
+ { AT_EH_NORMAL, "Normal (as determined by the 3270 field attribute)" },
+ { AT_EH_BLINK, "Blink" },
+ { AT_EH_REVERSE_VIDEO, "Reverse video" },
+ { AT_EH_UNDERSCORE, "Underscore." },
+ { 0x00, NULL }
};
-/* 4.4.6.4 Color Identifications */
-#define ALL_PLANES 0x00
-#define BLUE_PLANE 0x01
-#define RED_PLANE 0x02
-#define GREEN_PLANE 0x04
-#define NEUTRAL1 0xF0
-#define BLUE 0xF1
-#define RED 0xF2
-#define PINK 0xF3
-#define GREEN 0xF4
-#define TURQUOISE 0xF5
-#define YELLOW 0xF6
-#define NEUTRAL2 0xF7
-#define BLACK 0xF8
-#define DEEP_BLUE 0xF9
-#define ORANGE 0xFA
-#define PURPLE 0xFB
-#define PALE_GREEN 0xFC
-#define PALE_TURQUOISE 0xFD
-#define GREY 0xFE
-#define WHITE 0xFF
-
-
-static const value_string vals_color_identifications[] = {
- { ALL_PLANES , "ALL PLANES"},
- { BLUE_PLANE , "BLUE PLANE"},
- { RED_PLANE , "RED PLANE"},
- { GREEN_PLANE , "GREEN PLANE"},
- { NEUTRAL1 , "Neutral"},
- { BLUE , "Blue"},
- { RED , "Red"},
- { PINK , "Pink"},
- { GREEN , "Green"},
- { TURQUOISE , "Turquoise"},
- { YELLOW , "Yellow"},
- { NEUTRAL2 , "Neutral"},
- { BLACK , "Black"},
- { DEEP_BLUE , "Deep Blue"},
- { ORANGE , "Orange"},
- { PURPLE , "Purple"},
- { PALE_GREEN , "Pale Green"},
- { PALE_TURQUOISE, "Pale Turquoise"},
- { GREY , "Grey"},
- { WHITE , "White"},
- { 0x00, NULL }
+/*--- 4.4.6.4 Color Identifications ----- */
+#define AT_CI_ALL_PLANES 0x00
+#define AT_CI_BLUE_PLANE 0x01
+#define AT_CI_RED_PLANE 0x02
+#define AT_CI_GREEN_PLANE 0x04
+#define AT_CI_NEUTRAL1 0xF0
+#define AT_CI_BLUE 0xF1
+#define AT_CI_RED 0xF2
+#define AT_CI_PINK 0xF3
+#define AT_CI_GREEN 0xF4
+#define AT_CI_TURQUOISE 0xF5
+#define AT_CI_YELLOW 0xF6
+#define AT_CI_NEUTRAL2 0xF7
+#define AT_CI_BLACK 0xF8
+#define AT_CI_DEEP_BLUE 0xF9
+#define AT_CI_ORANGE 0xFA
+#define AT_CI_PURPLE 0xFB
+#define AT_CI_PALE_GREEN 0xFC
+#define AT_CI_PALE_TURQUOISE 0xFD
+#define AT_CI_GREY 0xFE
+#define AT_CI_WHITE 0xFF
+
+
+static const value_string vals_at_color_identifications[] = {
+ { AT_CI_ALL_PLANES, "ALL PLANES" },
+ { AT_CI_BLUE_PLANE, "BLUE PLANE" },
+ { AT_CI_RED_PLANE, "RED PLANE" },
+ { AT_CI_GREEN_PLANE, "GREEN PLANE" },
+ { AT_CI_NEUTRAL1, "Neutral" },
+ { AT_CI_BLUE, "Blue" },
+ { AT_CI_RED, "Red" },
+ { AT_CI_PINK, "Pink" },
+ { AT_CI_GREEN, "Green" },
+ { AT_CI_TURQUOISE, "Turquoise" },
+ { AT_CI_YELLOW, "Yellow" },
+ { AT_CI_NEUTRAL2, "Neutral" },
+ { AT_CI_BLACK, "Black" },
+ { AT_CI_DEEP_BLUE, "Deep Blue" },
+ { AT_CI_ORANGE, "Orange" },
+ { AT_CI_PURPLE, "Purple" },
+ { AT_CI_PALE_GREEN, "Pale Green" },
+ { AT_CI_PALE_TURQUOISE, "Pale Turquoise" },
+ { AT_CI_GREY, "Grey" },
+ { AT_CI_WHITE, "White" },
+ { 0x00, NULL }
};
-/* 4.4.6.5 Character Set */
-
-#define DEFAULT_CHARACTER_SET 0x00
-#define MIN_LOCAL_ID_FOR_LOADABLE_CHARACTER_SETS 0x40
-#define MAX_LOCAL_ID_FOR_LOADABLE_CHARACTER_SETS 0xEF
-#define MIN_LOCAL_ID_FOR_NONLOADABLE_CHARACTER_SETS 0xF0
-#define MAX_LOCAL_ID_FOR_NONLOADABLE_CHARACTER_SETS 0xF7
-#define MIN_LOCAL_ID_FOR_TWO_BYTE_CODED_CHARACTER_SETS 0xF8
-#define MAX_LOCAL_ID_FOR_TWO_BYTE_CODED_CHARACTER_SETS 0xFE
-
-
-static const range_string rvals_character_set[] = {
- { DEFAULT_CHARACTER_SET, DEFAULT_CHARACTER_SET,
- "DEFAULT_CHARACTER_SET" },
- { MIN_LOCAL_ID_FOR_LOADABLE_CHARACTER_SETS, MAX_LOCAL_ID_FOR_LOADABLE_CHARACTER_SETS,
- "LOCAL_ID_FOR_LOADABLE_CHARACTER_SETS"},
- { MIN_LOCAL_ID_FOR_NONLOADABLE_CHARACTER_SETS, MAX_LOCAL_ID_FOR_NONLOADABLE_CHARACTER_SETS,
- "LOCAL_ID_FOR_NONLOADABLE_CHARACTER_SETS"},
- { MIN_LOCAL_ID_FOR_TWO_BYTE_CODED_CHARACTER_SETS, MAX_LOCAL_ID_FOR_TWO_BYTE_CODED_CHARACTER_SETS,
- "LOCAL_ID_FOR_TWO_BYTE_CODED_CHARACTER_SETS" },
- { 0, 0, NULL }
+/*--- 4.4.6.5 Character Set ----- */
+#define AT_CS_DEFAULT_CHARACTER_SET 0x00
+#define AT_CS_MIN_LOCAL_ID_FOR_LOADABLE_CHARACTER_SETS 0x40
+#define AT_CS_MAX_LOCAL_ID_FOR_LOADABLE_CHARACTER_SETS 0xEF
+#define AT_CS_MIN_LOCAL_ID_FOR_NONLOADABLE_CHARACTER_SETS 0xF0
+#define AT_CS_MAX_LOCAL_ID_FOR_NONLOADABLE_CHARACTER_SETS 0xF7
+#define AT_CS_MIN_LOCAL_ID_FOR_TWO_BYTE_CODED_CHARACTER_SETS 0xF8
+#define AT_CS_MAX_LOCAL_ID_FOR_TWO_BYTE_CODED_CHARACTER_SETS 0xFE
+
+static const range_string rvals_at_character_set[] = {
+ { AT_CS_DEFAULT_CHARACTER_SET,
+ AT_CS_DEFAULT_CHARACTER_SET,
+ "Default Character Set" },
+ { AT_CS_MIN_LOCAL_ID_FOR_LOADABLE_CHARACTER_SETS,
+ AT_CS_MAX_LOCAL_ID_FOR_LOADABLE_CHARACTER_SETS,
+ "Local Id For Loadable Character Sets" },
+ { AT_CS_MIN_LOCAL_ID_FOR_NONLOADABLE_CHARACTER_SETS,
+ AT_CS_MAX_LOCAL_ID_FOR_NONLOADABLE_CHARACTER_SETS,
+ "Local Id For Nonloadable Character Sets" },
+ { AT_CS_MIN_LOCAL_ID_FOR_TWO_BYTE_CODED_CHARACTER_SETS,
+ AT_CS_MAX_LOCAL_ID_FOR_TWO_BYTE_CODED_CHARACTER_SETS,
+ "Local Id For Two Byte Coded Character Sets" },
+ { 0, 0, NULL }
};
-/* 4.4.6.6 Field Outlining */
-#define NO_OUTLINING_LINES 0X00
-#define UNDERLINE_ONLY 0X01
-#define RIGHT_VERTICAL_LINE_ONLY 0X02
-#define OVERLINE_ONLY 0X04
-#define LEFT_VERTICAL_LINE_ONLY 0X08
-#define UNDERLINE_AND_RIGHT_VERTICAL_LINE 0X03
-#define UNDERLINE_AND_OVERLINE 0X05
-#define UNDERLINE_AND_LEFT_VERTICAL_LINE 0X09
-#define RIGHT_VERTICAL_LINE_AND_OVERLINE 0X06
-#define RIGHT_AND_LEFT_VERTICAL_LINES 0X0A
-#define OVERLINE_AND_LEFT_VERTICAL_LINE 0X0C
-#define RECTANGLE_MINUS_LEFT_VERTICAL_LINE 0X07
-#define RECTANGLE_MINUS_OVERLINE 0X0B
-#define RECTANGLE_MINUS_RIGHT_VERTICAL_LINE 0X0D
-#define RECTANGLE_MINUS_UNDERLINE 0X0E
-#define RECTANGLE 0X0F
-
-
-static const value_string vals_field_outlining[] = {
- { NO_OUTLINING_LINES , "No outlining lines"},
- { UNDERLINE_ONLY , "Underline only"},
- { RIGHT_VERTICAL_LINE_ONLY , "Right vertical line only"},
- { OVERLINE_ONLY , "Overline only"},
- { LEFT_VERTICAL_LINE_ONLY , "Left vertical line only"},
- { UNDERLINE_AND_RIGHT_VERTICAL_LINE , "Underline and right vertical line"},
- { UNDERLINE_AND_OVERLINE , "Underline and overline"},
- { UNDERLINE_AND_LEFT_VERTICAL_LINE , "Underline and left vertical line"},
- { RIGHT_VERTICAL_LINE_AND_OVERLINE , "Right vertical line and overline"},
- { RIGHT_AND_LEFT_VERTICAL_LINES , "Right and left vertical lines"},
- { OVERLINE_AND_LEFT_VERTICAL_LINE , "Overline and left vertical line"},
- { RECTANGLE_MINUS_LEFT_VERTICAL_LINE , "Rectangle minus left vertical line"},
- { RECTANGLE_MINUS_OVERLINE , "Rectangle minus overline"},
- { RECTANGLE_MINUS_RIGHT_VERTICAL_LINE , "Rectangle minus right vertical line"},
- { RECTANGLE_MINUS_UNDERLINE , "Rectangle minus underline"},
- { RECTANGLE , "Rectangle"},
- { 0x00, NULL }
+/*--- 4.4.6.6 Field Outlining ----- */
+#define AT_FO_NO_OUTLINING_LINES 0X00
+#define AT_FO_UNDERLINE_ONLY 0X01
+#define AT_FO_RIGHT_VERTICAL_LINE_ONLY 0X02
+#define AT_FO_OVERLINE_ONLY 0X04
+#define AT_FO_LEFT_VERTICAL_LINE_ONLY 0X08
+#define AT_FO_UNDERLINE_AND_RIGHT_VERTICAL_LINE 0X03
+#define AT_FO_UNDERLINE_AND_OVERLINE 0X05
+#define AT_FO_UNDERLINE_AND_LEFT_VERTICAL_LINE 0X09
+#define AT_FO_RIGHT_VERTICAL_LINE_AND_OVERLINE 0X06
+#define AT_FO_RIGHT_AND_LEFT_VERTICAL_LINES 0X0A
+#define AT_FO_OVERLINE_AND_LEFT_VERTICAL_LINE 0X0C
+#define AT_FO_RECTANGLE_MINUS_LEFT_VERTICAL_LINE 0X07
+#define AT_FO_RECTANGLE_MINUS_OVERLINE 0X0B
+#define AT_FO_RECTANGLE_MINUS_RIGHT_VERTICAL_LINE 0X0D
+#define AT_FO_RECTANGLE_MINUS_UNDERLINE 0X0E
+#define AT_FO_RECTANGLE 0X0F
+
+static const value_string vals_at_field_outlining[] = {
+ { AT_FO_NO_OUTLINING_LINES, "No outlining lines" },
+ { AT_FO_UNDERLINE_ONLY, "Underline only" },
+ { AT_FO_RIGHT_VERTICAL_LINE_ONLY, "Right vertical line only" },
+ { AT_FO_OVERLINE_ONLY, "Overline only" },
+ { AT_FO_LEFT_VERTICAL_LINE_ONLY, "Left vertical line only" },
+ { AT_FO_UNDERLINE_AND_RIGHT_VERTICAL_LINE, "Underline and right vertical line" },
+ { AT_FO_UNDERLINE_AND_OVERLINE, "Underline and overline" },
+ { AT_FO_UNDERLINE_AND_LEFT_VERTICAL_LINE, "Underline and left vertical line" },
+ { AT_FO_RIGHT_VERTICAL_LINE_AND_OVERLINE, "Right vertical line and overline" },
+ { AT_FO_RIGHT_AND_LEFT_VERTICAL_LINES, "Right and left vertical lines" },
+ { AT_FO_OVERLINE_AND_LEFT_VERTICAL_LINE, "Overline and left vertical line" },
+ { AT_FO_RECTANGLE_MINUS_LEFT_VERTICAL_LINE, "Rectangle minus left vertical line" },
+ { AT_FO_RECTANGLE_MINUS_OVERLINE, "Rectangle minus overline" },
+ { AT_FO_RECTANGLE_MINUS_RIGHT_VERTICAL_LINE, "Rectangle minus right vertical line" },
+ { AT_FO_RECTANGLE_MINUS_UNDERLINE, "Rectangle minus underline" },
+ { AT_FO_RECTANGLE, "Rectangle" },
+ { 0x00, NULL }
};
-
-/* 4.4.6.7 Transparency */
-#define DEFAULT_TRANSPARENCY 0X00
-#define BACKGROUND_IS_TRANSPARENT_OR 0XF0
-#define BACKGROUND_IS_TRANSPARENT_XOR 0XF1
-#define BACKGROUND_IS_OPAQUE 0XFF
-
-static const value_string vals_transparency[] = {
- { DEFAULT_TRANSPARENCY , "Default"},
- { BACKGROUND_IS_TRANSPARENT_OR , "Background is transparent (OR)"},
- { BACKGROUND_IS_TRANSPARENT_XOR, "Background is transparent (XOR)"},
- { BACKGROUND_IS_OPAQUE , "Background is opaque (non-transparent)"},
- { 0x00, NULL }
+/*--- 4.4.6.7 Transparency ----- */
+#define AT_TR_DEFAULT_TRANSPARENCY 0X00
+#define AT_TR_BACKGROUND_IS_TRANSPARENT_OR 0XF0
+#define AT_TR_BACKGROUND_IS_TRANSPARENT_XOR 0XF1
+#define AT_TR_BACKGROUND_IS_OPAQUE 0XFF
+
+static const value_string vals_at_transparency[] = {
+ { AT_TR_DEFAULT_TRANSPARENCY, "Default" },
+ { AT_TR_BACKGROUND_IS_TRANSPARENT_OR, "Background is transparent (OR)" },
+ { AT_TR_BACKGROUND_IS_TRANSPARENT_XOR, "Background is transparent (XOR)" },
+ { AT_TR_BACKGROUND_IS_OPAQUE, "Background is opaque (non-transparent)" },
+ { 0x00, NULL }
};
-/* 4.4.6.8 Field Validation */
-#define MANDATORY_FILL 0X10
-#define MANDATORY_ENTRY 0X20
-#define TRIGGER 0X40
-
-static const value_string vals_field_validation[] = {
- { MANDATORY_FILL , "Mandatory fill"},
- { MANDATORY_ENTRY, "Mandatory entry"},
- { TRIGGER , "Trigger"},
- { 0x00, NULL }
-};
+/*--- 4.4.6.8 Field Validation ----- */
+#define AT_FV_MANDATORY_FILL 0x04 /* "Bit 5" */
+#define AT_FV_MANDATORY_ENTRY 0x02 /* "Bit 6" */
+#define AT_FV_TRIGGER 0x01 /* "Bit 7" */
static const struct true_false_string tn3270_field_validation_mandatory_fill = {
- "Mandatory fill",
- ""
+ "Mandatory fill",
+ ""
};
static const struct true_false_string tn3270_field_validation_mandatory_entry = {
- "Mandatory entry",
- ""
+ "Mandatory entry",
+ ""
};
static const struct true_false_string tn3270_field_validation_trigger = {
- "Trigger",
- ""
+ "Trigger",
+ ""
};
-/* 5.1 Outbound Structured Fields */
-
-#define READ_PARTITION_QUERY 0x02
-#define READ_PARTITION_QUERY_LIST 0x03
-#define READ_PARTITION_READ_MODIFIED_ALL 0x6E
-#define READ_PARTITION_READ_BUFFER 0xF2
-#define READ_PARTITION_READ_MODIFIED 0xF6
-
-static const value_string vals_operation_types[] = {
- { READ_PARTITION_QUERY , "Read Partition Query"},
- { READ_PARTITION_QUERY_LIST , "Read Partition Query List"},
- { READ_PARTITION_READ_MODIFIED_ALL , "Read Partition Read Modified All"},
- { READ_PARTITION_READ_BUFFER , "Read Partition Read Buffer"},
- { READ_PARTITION_READ_MODIFIED , "Read Partition Read Modified"},
- { 0x00, NULL }
+/*--- 5.1 Outbound Structured Fields ----- */
+#define SF_OB_ACTIVATE_PARTITION 0x0E
+#define SF_OB_BEGIN_OR_END_OF_FILE 0x0F85
+#define SF_OB_CREATE_PARTITION 0x0C
+#define SF_OB_DESTROY_PARTITION 0x0D
+#define SF_OB_ERASE_OR_RESET 0x03
+#define SF_OB_LOAD_COLOR_TABLE 0x0F05
+#define SF_OB_LOAD_FORMAT_STORAGE 0x0F24
+#define SF_OB_LOAD_LINE_TYPE 0x0F07
+#define SF_OB_LOAD_PROGRAMMED_SYMBOLS 0x06
+#define SF_OB_MODIFY_PARTITION 0x0F0A
+#define SF_OB_OUTBOUND_TEXT_HEADER 0x0F71
+#define SF_OB_OUTBOUND_3270DS 0x40
+#define SF_OB_PRESENT_ABSOLUTE_FORMAT 0x4B
+#define SF_OB_PRESENT_RELATIVE_FORMAT 0x4C
+#define SF_OB_SET_PARTITION_CHARACTERISTICS 0x0F08
+#define SF_OB_SET_REPLY_MODE 0x09
+#define SF_OB_TYPE_1_TEXT_OUTBOUND 0x0FC1
+#define SF_OB_READ_PARTITION 0x01
+#define SF_OB_REQUEST_RECOVERY_DATA 0x1030
+#define SF_OB_RESET_PARTITION 0x00
+#define SF_OB_RESTART 0x1033
+#define SF_OB_SCS_DATA 0x41
+#define SF_OB_SELECT_COLOR_TABLE 0x0F04
+#define SF_OB_SELECT_FORMAT_GROUP 0x4A
+#define SF_OB_SET_CHECKPOINT_INTERVAL 0x1032
+#define SF_OB_SET_MSR_CONTROL 0x0F01
+#define SF_OB_SET_PRINTER_CHARACTERISTICS 0x0F84
+#define SF_OB_SET_WINDOW_ORIGIN 0x0B
+
+
+static const value_string vals_outbound_structured_fields[] = {
+ { SF_OB_ACTIVATE_PARTITION, "Activate Partition" },
+ { SF_OB_BEGIN_OR_END_OF_FILE, "Begin Or End Of File" },
+ { SF_OB_CREATE_PARTITION, "Create Partition" },
+ { SF_OB_DESTROY_PARTITION, "Destroy Partition" },
+ { SF_OB_ERASE_OR_RESET, "Erase Or Reset" },
+ { SF_OB_LOAD_COLOR_TABLE, "Load Color Table" },
+ { SF_OB_LOAD_FORMAT_STORAGE, "Load Format Storage" },
+ { SF_OB_LOAD_LINE_TYPE, "Load Line Type" },
+ { SF_OB_LOAD_PROGRAMMED_SYMBOLS, "Load Programmed Symbols" },
+ { SF_OB_MODIFY_PARTITION, "Modify Partition" },
+ { SF_OB_OUTBOUND_TEXT_HEADER, "Outbound Text Header" },
+ { SF_OB_OUTBOUND_3270DS, "Outbound 3270ds" },
+ { SF_OB_PRESENT_ABSOLUTE_FORMAT, "Present Absolute Format" },
+ { SF_OB_PRESENT_RELATIVE_FORMAT, "Present Relative Format" },
+ { SF_OB_SET_PARTITION_CHARACTERISTICS, "Set Partition Characteristics" },
+ { SF_OB_SET_REPLY_MODE, "Set Reply Mode" },
+ { SF_OB_TYPE_1_TEXT_OUTBOUND, "Type 1 Text Outbound" },
+ { SF_OB_READ_PARTITION, "Read Partition" },
+ { SF_OB_REQUEST_RECOVERY_DATA, "Request Recovery Data" },
+ { SF_OB_RESET_PARTITION, "Reset Partition" },
+ { SF_OB_RESTART, "Restart" },
+ { SF_OB_SCS_DATA, "Scs Data" },
+ { SF_OB_SELECT_COLOR_TABLE, "Select Color Table" },
+ { SF_OB_SELECT_FORMAT_GROUP, "Select Format Group" },
+ { SF_OB_SET_CHECKPOINT_INTERVAL, "Set Checkpoint Interval" },
+ { SF_OB_SET_MSR_CONTROL, "Set Msr Control" },
+ { SF_OB_SET_PRINTER_CHARACTERISTICS, "Set Printer Characteristics" },
+ { SF_OB_SET_WINDOW_ORIGIN, "Set Window Origin" },
+ { 0x00, NULL }
};
+/*--- 5.1 Outbound/Inbound Structured Fields ----- */
+#define SF_OB_IB_DATA_CHAIN 0x0F21
+#define SF_OB_IB_DESTINATION_OR_ORIGIN 0x0F02
+#define SF_OB_IB_OBJECT_CONTROL 0x0F11
+#define SF_OB_IB_OBJECT_DATA 0x0F0F
+#define SF_OB_IB_OBJECT_PICTURE 0x0F10
+#define SF_OB_IB_OEM_DATA 0x0F1F
+#define SF_OB_IB_SAVE_OR_RESTORE_FORMAT 0x1034
+#define SF_OB_IB_SELECT_IPDS_MODE 0x0F83
-#define ACTIVATE_PARTITION 0x0E
-#define BEGIN_OR_END_OF_FILE 0x0F85
-#define CREATE_PARTITION 0x0C
-#define DESTROY_PARTITION 0x0D
-#define ERASE_OR_RESET 0x03
-#define LOAD_COLOR_TABLE 0x0F05
-#define LOAD_FORMAT_STORAGE 0x0F24
-#define LOAD_LINE_TYPE 0x0F07
-#define LOAD_PROGRAMMED_SYMBOLS 0x06
-#define MODIFY_PARTITION 0x0F0A
-#define OUTBOUND_TEXT_HEADER 0x0F71
-#define OUTBOUND_3270DS 0x40
-#define PRESENT_ABSOLUTE_FORMAT 0x4B
-#define PRESENT_RELATIVE_FORMAT 0x4C
-#define SET_PARTITION_CHARACTERISTICS 0x0F08
-#define SET_REPLY_MODE 0x09
-#define TYPE_1_TEXT_OUTBOUND 0x0FC1
-#define READ_PARTITION 0x01
-#define REQUEST_RECOVERY_DATA 0x1030
-#define RESET_PARTITION 0x00
-#define RESTART 0x1033
-#define SCS_DATA 0x41
-#define SELECT_COLOR_TABLE 0x0F04
-#define SELECT_FORMAT_GROUP 0x4A
-#define SET_CHECKPOINT_INTERVAL 0x1032
-#define SET_MSR_CONTROL 0x0F01
-#define SET_PRINTER_CHARACTERISTICS 0x0F84
-#define SET_WINDOW_ORIGIN 0x0B
+static const value_string vals_outbound_inbound_structured_fields[] = {
+ { SF_OB_IB_DATA_CHAIN, "Data Chain" },
+ { SF_OB_IB_DESTINATION_OR_ORIGIN, "Destination/Origin" },
+ { SF_OB_IB_OBJECT_CONTROL, "Object Control" },
+ { SF_OB_IB_OBJECT_DATA, "Object Data" },
+ { SF_OB_IB_OBJECT_PICTURE, "Object Picture" },
+ { SF_OB_IB_OEM_DATA, "OEM Data" },
+ { SF_OB_IB_SAVE_OR_RESTORE_FORMAT, "Save/Restore Format" },
+ { SF_OB_IB_SELECT_IPDS_MODE, "Select IPDS Mode." },
+ { 0x00, NULL }
+};
+/*--- 5.11 Load Format Storage ----- */
+#define LOAD_FORMAT_STORAGE_OPERAND_ADD 0x01
+#define LOAD_FORMAT_STORAGE_OPERAND_DELETE_FORMAT 0x02
+#define LOAD_FORMAT_STORAGE_OPERAND_DELETE_GROUP 0x03
+#define LOAD_FORMAT_STORAGE_OPERAND_RESET_ALL 0x04
+#define LOAD_FORMAT_STORAGE_OPERAND_REQUEST_SUMMARY_STATUS 0x05
+#define LOAD_FORMAT_STORAGE_OPERAND_REQUEST_GROUP_STATUS 0x06
+
+static const value_string vals_load_storage_format_operand[] = {
+ { LOAD_FORMAT_STORAGE_OPERAND_ADD, "Add" },
+ { LOAD_FORMAT_STORAGE_OPERAND_DELETE_FORMAT, "Delete Format" },
+ { LOAD_FORMAT_STORAGE_OPERAND_DELETE_GROUP, "Delete Group" },
+ { LOAD_FORMAT_STORAGE_OPERAND_RESET_ALL, "Reset All" },
+ { LOAD_FORMAT_STORAGE_OPERAND_REQUEST_SUMMARY_STATUS, "Request Summary Status" },
+ { LOAD_FORMAT_STORAGE_OPERAND_REQUEST_GROUP_STATUS, "Request Group Status" },
+ { 0x00, NULL }
+};
-static const value_string vals_outbound_structured_fields[] = {
- { ACTIVATE_PARTITION , "Activate Partition"},
- { BEGIN_OR_END_OF_FILE , "Begin Or End Of File"},
- { CREATE_PARTITION , "Create Partition"},
- { DESTROY_PARTITION , "Destroy Partition"},
- { ERASE_OR_RESET , "Erase Or Reset"},
- { LOAD_COLOR_TABLE , "Load Color Table"},
- { LOAD_FORMAT_STORAGE , "Load Format Storage"},
- { LOAD_LINE_TYPE , "Load Line Type"},
- { LOAD_PROGRAMMED_SYMBOLS , "Load Programmed Symbols"},
- { MODIFY_PARTITION , "Modify Partition"},
- { OUTBOUND_TEXT_HEADER , "Outbound Text Header"},
- { OUTBOUND_3270DS , "Outbound 3270ds"},
- { PRESENT_ABSOLUTE_FORMAT , "Present Absolute Format"},
- { PRESENT_RELATIVE_FORMAT , "Present Relative Format"},
- { SET_PARTITION_CHARACTERISTICS , "Set Partition Characteristics"},
- { SET_REPLY_MODE , "Set Reply Mode"},
- { TYPE_1_TEXT_OUTBOUND , "Type 1 Text Outbound"},
- { READ_PARTITION , "Read Partition"},
- { REQUEST_RECOVERY_DATA , "Request Recovery Data"},
- { RESET_PARTITION , "Reset Partition"},
- { RESTART , "Restart"},
- { SCS_DATA , "Scs Data"},
- { SELECT_COLOR_TABLE , "Select Color Table"},
- { SELECT_FORMAT_GROUP , "Select Format Group"},
- { SET_CHECKPOINT_INTERVAL , "Set Checkpoint Interval"},
- { SET_MSR_CONTROL , "Set Msr Control"},
- { SET_PRINTER_CHARACTERISTICS , "Set Printer Characteristics"},
- { SET_WINDOW_ORIGIN , "Set Window Origin"},
- { 0x00, NULL }
+/*--- 5.19 Read Partition ----- */
+#define READ_PARTITION_OPTYPE_QUERY 0x02
+#define READ_PARTITION_OPTYPE_QUERY_LIST 0x03
+#define READ_PARTITION_OPTYPE_READ_MODIFIED_ALL 0x6E
+#define READ_PARTITION_OPTYPE_READ_BUFFER 0xF2
+#define READ_PARTITION_OPTYPE_READ_MODIFIED 0xF6
+
+static const value_string vals_read_partition_operation_type[] = {
+ { READ_PARTITION_OPTYPE_QUERY, "Read Partition Query" },
+ { READ_PARTITION_OPTYPE_QUERY_LIST, "Read Partition Query List" },
+ { READ_PARTITION_OPTYPE_READ_MODIFIED_ALL, "Read Partition Read Modified All" },
+ { READ_PARTITION_OPTYPE_READ_BUFFER, "Read Partition Read Buffer" },
+ { READ_PARTITION_OPTYPE_READ_MODIFIED, "Read Partition Read Modified" },
+ { 0x00, NULL }
};
-/* 5.1 Outbound/Inbound Structured Fields */
+#define READ_PARTITION_REQTYPE_MASK 0xC0
+static const value_string vals_read_partition_reqtype[] = {
+ { 0x00, "QCODE List" },
+ { 0x01, "Equivalent + QCODE List" },
+ { 0x02, "All" },
+ { 0x00, NULL }
+};
-#define DATA_CHAIN 0x0F21
-#define DESTINATION_OR_ORIGIN 0x0F02
-#define OBJECT_CONTROL 0x0F11
-#define OBJECT_DATA 0x0F0F
-#define OBJECT_PICTURE 0x0F10
-#define OEM_DATA 0x0F1F
-#define SAVE_OR_RESTORE_FORMAT 0x1034
-#define SELECT_IPDS_MODE 0x0F83
+/*--- 5.34 Data Chain ----- */
+#define DATA_CHAIN_GROUP_MASK 0x60
+#define DATA_CHAIN_INBOUND_CONTROL_MASK 0x18
-static const value_string vals_outbound_inbound_structured_fields[] = {
- { DATA_CHAIN , "Data Chain"},
- { DESTINATION_OR_ORIGIN , "Destination/Origin"},
- { OBJECT_CONTROL , "Object Control"},
- { OBJECT_DATA , "Object Data"},
- { OBJECT_PICTURE , "Object Picture"},
- { OEM_DATA , "OEM Data"},
- { SAVE_OR_RESTORE_FORMAT , "Save/Restore Format"},
- { SELECT_IPDS_MODE , "Select IPDS Mode."},
- { 0x00, NULL }
+static const value_string vals_data_chain_group[] = {
+ { 0x00, "Continue" },
+ { 0x01, "End" },
+ { 0x02, "Begin" },
+ { 0x03, "Only" },
+ { 0x00, NULL }
};
-/* 5.11 Load Format Storage */
-#define ADD 0x01
-#define DELETE_FORMAT 0x02
-#define DELETE_GROUP 0x03
-#define RESET_ALL 0x04
-#define REQUEST_SUMMARY_STATUS 0x05
-#define REQUEST_GROUP_STATUS 0x06
-
-static const value_string vals_operand[] = {
- { ADD , "Add"},
- { DELETE_FORMAT , "Delete Format"},
- { DELETE_GROUP , "Delete Group"},
- { RESET_ALL , "Reset All"},
- { REQUEST_SUMMARY_STATUS , "Request Summary Status"},
- { REQUEST_GROUP_STATUS , "Request Group Status"},
- { 0x00, NULL }
+static const value_string vals_data_chain_inbound_control[] = {
+ { 0x00, "No Change" },
+ { 0x01, "Enable Inbound Data Chaining" },
+ { 0x02, "Disable Inbound Data Chaining" },
+ { 0x03, "Reserved" },
+ { 0x00, NULL }
+};
+
+/*--- 5.35 Destination or Origin ----- */
+#define DESTINATION_OR_ORIGIN_FLAGS_INPUT_CONTROL_MASK 0xC0
+
+static const value_string vals_destination_or_origin_flags_input_control[] = {
+ { 0x00, "Enable input" },
+ { 0x01, "No Change" },
+ { 0x02, "Disable Input" },
+ { 0x03, "Reserved" },
+ { 0x00, NULL }
};
/* INBOUND DATA STREAM (DISPLAY -> MAINFRAME PROGRAM) */
/*
- ______ _______ ________ _______
-| | | | |
-| AID | Cursor address | Data |
-| | (2 bytes) | |
-| | | | |
-|______|_______|________|_______|
-
-An inbound data stream can also consist of an AID (X'88') followed by
-structured fields as follows:
- ______ __________________ ________ ___________________
-| | | | |
-| AID | Structured Field | ...... | Structured Field |
-| 0x88 | | | |
-|______|__________________|________|___________________|
+ ______ _______ ________ _______
+ | | | | |
+ | AID | Cursor address | Data |
+ | | (2 bytes) | |
+ | | | | |
+ |______|_______|________|_______|
+
+ An inbound data stream can also consist of an AID (X'88') followed by
+ structured fields as follows:
+ ______ __________________ ________ ___________________
+ | | | | |
+ | AID | Structured Field | ...... | Structured Field |
+ | 0x88 | | | |
+ |______|__________________|________|___________________|
*/
-/* 3.5.6 Attention Identification Bytes (AID) */
-
-#define NO_AID_GENERATED 0x60
-#define NO_AID_GENERATED_(PRINTER_ONLY) 0xE8
-#define STRUCTURED_FIELD 0x88
-#define READ_PARTITION_AID 0x61
-#define TRIGGER_ACTION 0x7F
-#define TEST_REQ_AND_SYS_REQ 0xF0
-#define PF1_KEY 0xF1
-#define PF2_KEY 0xF2
-#define PF3_KEY 0xF3
-#define PF4_KEY 0xF4
-#define PF5_KEY 0xF5
-#define PF6_KEY 0xF6
-#define PF7_KEY 0xF7
-#define PF8_KEY 0xF8
-#define PF9_KEY 0xF9
-#define PF10_KEY 0x7A
-#define PF11_KEY 0x7B
-#define PF12_KEY 0x7C
-#define PF13_KEY 0xC1
-#define PF14_KEY 0xC2
-#define PF15_KEY 0xC3
-#define PF16_KEY 0xC4
-#define PF17_KEY 0xC5
-#define PF18_KEY 0xC6
-#define PF19_KEY 0xC7
-#define PF20_KEY 0xC8
-#define PF21_KEY 0xC9
-#define PF22_KEY 0x4A
-#define PF23_KEY 0x4B
-#define PF24_KEY 0x4C
-#define PA1_KEY 0x6C
-#define PA2_KEY_(CNCL) 0x6E
-#define PA3_KEY 0x6B
-#define CLEAR_KEY 0x6D
-#define CLEAR_PARTITION_KEY 0x6A
-#define ENTER_KEY 0x7D
-#define SELECTOR_PEN_ATTENTION 0x7E
-#define OPERATOR_ID_READER 0xE6
-#define MAG_READER_NUMBER 0xE7
+/*--- 3.5.6 Attention Identification Bytes (AID) ----- */
+#define AID_NO_AID_GENERATED 0x60
+#define AID_NO_AID_GENERATED_PRINTER_ONLY 0xE8
+#define AID_STRUCTURED_FIELD 0x88
+#define AID_READ_PARTITION_AID 0x61
+#define AID_TRIGGER_ACTION 0x7F
+#define AID_TEST_REQ_AND_SYS_REQ 0xF0
+#define AID_PF1_KEY 0xF1
+#define AID_PF2_KEY 0xF2
+#define AID_PF3_KEY 0xF3
+#define AID_PF4_KEY 0xF4
+#define AID_PF5_KEY 0xF5
+#define AID_PF6_KEY 0xF6
+#define AID_PF7_KEY 0xF7
+#define AID_PF8_KEY 0xF8
+#define AID_PF9_KEY 0xF9
+#define AID_PF10_KEY 0x7A
+#define AID_PF11_KEY 0x7B
+#define AID_PF12_KEY 0x7C
+#define AID_PF13_KEY 0xC1
+#define AID_PF14_KEY 0xC2
+#define AID_PF15_KEY 0xC3
+#define AID_PF16_KEY 0xC4
+#define AID_PF17_KEY 0xC5
+#define AID_PF18_KEY 0xC6
+#define AID_PF19_KEY 0xC7
+#define AID_PF20_KEY 0xC8
+#define AID_PF21_KEY 0xC9
+#define AID_PF22_KEY 0x4A
+#define AID_PF23_KEY 0x4B
+#define AID_PF24_KEY 0x4C
+#define AID_PA1_KEY 0x6C
+#define AID_PA2_KEY_CNCL 0x6E
+#define AID_PA3_KEY 0x6B
+#define AID_CLEAR_KEY 0x6D
+#define AID_CLEAR_PARTITION_KEY 0x6A
+#define AID_ENTER_KEY 0x7D
+#define AID_SELECTOR_PEN_ATTENTION 0x7E
+#define AID_OPERATOR_ID_READER 0xE6
+#define AID_MAG_READER_NUMBER 0xE7
static const value_string vals_attention_identification_bytes[] = {
- { NO_AID_GENERATED , "No AID generated"},
- { NO_AID_GENERATED_(PRINTER_ONLY), "No AID generated (printer only)"},
- { STRUCTURED_FIELD , "Structured field"},
- { READ_PARTITION_AID , "Read partition"},
- { TRIGGER_ACTION , "Trigger action"},
- { TEST_REQ_AND_SYS_REQ , "Test Req and Sys Req"},
- { PF1_KEY , "PF1 key"},
- { PF2_KEY , "PF2 key"},
- { PF3_KEY , "PF3 key"},
- { PF4_KEY , "PF4 key"},
- { PF5_KEY , "PF5 key"},
- { PF6_KEY , "PF6 key"},
- { PF7_KEY , "PF7 key"},
- { PF8_KEY , "PF8 key"},
- { PF9_KEY , "PF9 key"},
- { PF10_KEY , "PF10 key"},
- { PF11_KEY , "PF11 key"},
- { PF12_KEY , "PF12 key"},
- { PF13_KEY , "PF13 key"},
- { PF14_KEY , "PF14 key"},
- { PF15_KEY , "PF15 key"},
- { PF16_KEY , "PF16 key"},
- { PF17_KEY , "PF17 key"},
- { PF18_KEY , "PF18 key"},
- { PF19_KEY , "PF19 key"},
- { PF20_KEY , "PF20 key"},
- { PF21_KEY , "PF21 key"},
- { PF22_KEY , "PF22 key"},
- { PF23_KEY , "PF23 key"},
- { PF24_KEY , "PF24 key"},
- { PA1_KEY , "PA1 key"},
- { PA2_KEY_(CNCL) , "PA2 key (Cncl)"},
- { PA3_KEY , "PA3 key"},
- { CLEAR_KEY , "Clear key"},
- { CLEAR_PARTITION_KEY , "Clear Partition key"},
- { ENTER_KEY , "Enter key"},
- { SELECTOR_PEN_ATTENTION , "Selector pen attention"},
- { OPERATOR_ID_READER , "Operator ID reader"},
- { MAG_READER_NUMBER , "Mag Reader Number"},
- { 0x00, NULL }
+ { AID_NO_AID_GENERATED, "No AID generated" },
+ { AID_NO_AID_GENERATED_PRINTER_ONLY, "No AID generated (printer only)" },
+ { AID_STRUCTURED_FIELD, "Structured field" },
+ { AID_READ_PARTITION_AID, "Read partition" },
+ { AID_TRIGGER_ACTION, "Trigger action" },
+ { AID_TEST_REQ_AND_SYS_REQ, "Test Req and Sys Req" },
+ { AID_PF1_KEY, "PF1 key" },
+ { AID_PF2_KEY, "PF2 key" },
+ { AID_PF3_KEY, "PF3 key" },
+ { AID_PF4_KEY, "PF4 key" },
+ { AID_PF5_KEY, "PF5 key" },
+ { AID_PF6_KEY, "PF6 key" },
+ { AID_PF7_KEY, "PF7 key" },
+ { AID_PF8_KEY, "PF8 key" },
+ { AID_PF9_KEY, "PF9 key" },
+ { AID_PF10_KEY, "PF10 key" },
+ { AID_PF11_KEY, "PF11 key" },
+ { AID_PF12_KEY, "PF12 key" },
+ { AID_PF13_KEY, "PF13 key" },
+ { AID_PF14_KEY, "PF14 key" },
+ { AID_PF15_KEY, "PF15 key" },
+ { AID_PF16_KEY, "PF16 key" },
+ { AID_PF17_KEY, "PF17 key" },
+ { AID_PF18_KEY, "PF18 key" },
+ { AID_PF19_KEY, "PF19 key" },
+ { AID_PF20_KEY, "PF20 key" },
+ { AID_PF21_KEY, "PF21 key" },
+ { AID_PF22_KEY, "PF22 key" },
+ { AID_PF23_KEY, "PF23 key" },
+ { AID_PF24_KEY, "PF24 key" },
+ { AID_PA1_KEY, "PA1 key" },
+ { AID_PA2_KEY_CNCL, "PA2 key (Cncl)" },
+ { AID_PA3_KEY, "PA3 key" },
+ { AID_CLEAR_KEY, "Clear key" },
+ { AID_CLEAR_PARTITION_KEY, "Clear Partition key" },
+ { AID_ENTER_KEY, "Enter key" },
+ { AID_SELECTOR_PEN_ATTENTION, "Selector pen attention" },
+ { AID_OPERATOR_ID_READER, "Operator ID reader" },
+ { AID_MAG_READER_NUMBER, "Mag Reader Number" },
+ { 0x00, NULL }
};
-
-
-/* 5.3.6 Object Control */
-#define OCGRAPHICS 0x00
-#define OCIMAGE 0x01
+/*--- 5.3.6 Object Control ----- */
+#define OBJC_GRAPHICS 0x00
+#define OBJC_IMAGE 0x01
static const value_string vals_oc_type[] = {
- { OCGRAPHICS, "Graphics"},
- { OCIMAGE , "Image)"},
- { 0x00, NULL }
+ { OBJC_GRAPHICS, "Graphics" },
+ { OBJC_IMAGE, "Image)" },
+ { 0x00, NULL }
};
-/* 5.19 Read Partition */
-static const value_string vals_reqtype[] = {
- { 0x00, "QCODE List" },
- { 0x01, "Equivalent + QCODE List" },
- { 0x02, "All" },
- { 0x00, NULL }
-};
-
-
-/* 6.1 Inbound Structured Fields */
-
-#define EXCEPTION_OR_STATUS 0x0F22
-#define INBOUND_TEXT_HEADER 0x0FB1
-#define INBOUND_3270DS 0x0F80 /* TODO: Check */
-#define RECOVERY_DATA 0x1031
-#define TYPE_1_TEXT_INBOUND 0x0FC1
-#define QUERY_REPLY_ALPHANUMERIC_PARTITIONS 0x8184
-#define QUERY_REPLY_AUXILIARY_DEVICE 0x8199
-#define QUERY_REPLY_BEGIN_OR_END_OF_FILE 0x819F
-#define QUERY_REPLY_CHARACTER_SETS 0x8185
-#define QUERY_REPLY_COLOR 0x8186
-#define QUERY_REPLY_COOPERATIVE_PROCESSING_REQUESTOR 0x81AB
-#define QUERY_REPLY_DATA_CHAINING 0x8198
-#define QUERY_REPLY_DATA_STREAMS 0x81A2
-#define QUERY_REPLY_DBCS_ASIA 0x8191
-#define QUERY_REPLY_DEVICE_CHARACTERISTICS 0x81A0
-#define QUERY_REPLY_DISTRIBUTED_DATA_MANAGEMENT 0x8195
-#define QUERY_REPLY_DOCUMENT_INTERCHANGE_ARCHITECTURE 0x8197
-#define QUERY_REPLY_EXTENDED_DRAWING_ROUTINE 0x81B5
-#define QUERY_REPLY_FIELD_OUTLINING 0x818C
-#define QUERY_REPLY_FIELD_VALIDATION 0x818A
-#define QUERY_REPLY_FORMAT_PRESENTATION 0x8190
-#define QUERY_REPLY_FORMAT_STORAGE_AUXILIARY_DEVICE 0x8194
-#define QUERY_REPLY_GRAPHIC_COLOR 0x81B4
-#define QUERY_REPLY_GRAPHIC_SYMBOL_SETS 0x81B6
-#define QUERY_REPLY_HIGHLIGHTING 0x8187
-#define QUERY_REPLY_IBM_AUXILIARY_DEVICE 0x819E
-#define QUERY_REPLY_IMAGE 0x8182
-#define QUERY_REPLY_IMPLICIT_PARTITION 0x81A6
-#define QUERY_REPLY_IOCA_AUXILIARY_DEVICE 0x81AA
-#define QUERY_REPLY_LINE_TYPE 0x81B2
-#define QUERY_REPLY_MSR_CONTROL 0x818B
-#define QUERY_REPLY_NULL 0x81FF
-#define QUERY_REPLY_OEM_AUXILIARY_DEVICE 0x818F
-#define QUERY_REPLY_PAPER_FEED_TECHNIQUES 0x81A7
-#define QUERY_REPLY_PARTITION_CHARACTERISTICS 0x818E
-#define QUERY_REPLY_PORT 0x81B3
-#define QUERY_REPLY_PROCEDURE 0x81B1
-#define QUERY_REPLY_PRODUCT_DEFINED_DATA_STREAM 0x819C
-#define QUERY_REPLY_REPLY_MODES 0x8188
-#define QUERY_REPLY_RPQ_NAMES 0x81A1
-#define QUERY_REPLY_SAVE_OR_RESTORE_FORMAT 0x8192
-#define QUERY_REPLY_SEGMENT 0x81B0
-#define QUERY_REPLY_SETTABLE_PRINTER_CHARACTERISTICS 0x81A9
-#define QUERY_REPLY_STORAGE_POOLS 0x8196
-#define QUERY_REPLY_SUMMARY 0x8180
-#define QUERY_REPLY_TEXT_PARTITIONS 0x8183
-#define QUERY_REPLY_TRANSPARENCY 0x81A8
-#define QUERY_REPLY_USABLE_AREA 0x8181
-#define QUERY_REPLY_3270_IPDS 0x819A
-
+/*--- 6.1 Inbound Structured Fields ----- */
+#define SF_IB_EXCEPTION_OR_STATUS 0x0F22
+#define SF_IB_INBOUND_TEXT_HEADER 0x0FB1
+#define SF_IB_INBOUND_3270DS 0x0F80 /* TODO: Check */
+#define SF_IB_RECOVERY_DATA 0x1031
+#define SF_IB_TYPE_1_TEXT_INBOUND 0x0FC1
+#define SF_IB_QUERY_REPLY_ALPHANUMERIC_PARTITIONS 0x8184
+#define SF_IB_QUERY_REPLY_AUXILIARY_DEVICE 0x8199
+#define SF_IB_QUERY_REPLY_BEGIN_OR_END_OF_FILE 0x819F
+#define SF_IB_QUERY_REPLY_CHARACTER_SETS 0x8185
+#define SF_IB_QUERY_REPLY_COLOR 0x8186
+#define SF_IB_QUERY_REPLY_COOPERATIVE_PROCESSING_REQUESTOR 0x81AB
+#define SF_IB_QUERY_REPLY_DATA_CHAINING 0x8198
+#define SF_IB_QUERY_REPLY_DATA_STREAMS 0x81A2
+#define SF_IB_QUERY_REPLY_DBCS_ASIA 0x8191
+#define SF_IB_QUERY_REPLY_DEVICE_CHARACTERISTICS 0x81A0
+#define SF_IB_QUERY_REPLY_DISTRIBUTED_DATA_MANAGEMENT 0x8195
+#define SF_IB_QUERY_REPLY_DOCUMENT_INTERCHANGE_ARCHITECTURE 0x8197
+#define SF_IB_QUERY_REPLY_EXTENDED_DRAWING_ROUTINE 0x81B5
+#define SF_IB_QUERY_REPLY_FIELD_OUTLINING 0x818C
+#define SF_IB_QUERY_REPLY_FIELD_VALIDATION 0x818A
+#define SF_IB_QUERY_REPLY_FORMAT_PRESENTATION 0x8190
+#define SF_IB_QUERY_REPLY_FORMAT_STORAGE_AUXILIARY_DEVICE 0x8194
+#define SF_IB_QUERY_REPLY_GRAPHIC_COLOR 0x81B4
+#define SF_IB_QUERY_REPLY_GRAPHIC_SYMBOL_SETS 0x81B6
+#define SF_IB_QUERY_REPLY_HIGHLIGHTING 0x8187
+#define SF_IB_QUERY_REPLY_IBM_AUXILIARY_DEVICE 0x819E
+#define SF_IB_QUERY_REPLY_IMAGE 0x8182
+#define SF_IB_QUERY_REPLY_IMPLICIT_PARTITION 0x81A6
+#define SF_IB_QUERY_REPLY_IOCA_AUXILIARY_DEVICE 0x81AA
+#define SF_IB_QUERY_REPLY_LINE_TYPE 0x81B2
+#define SF_IB_QUERY_REPLY_MSR_CONTROL 0x818B
+#define SF_IB_QUERY_REPLY_NULL 0x81FF
+#define SF_IB_QUERY_REPLY_OEM_AUXILIARY_DEVICE 0x818F
+#define SF_IB_QUERY_REPLY_PAPER_FEED_TECHNIQUES 0x81A7
+#define SF_IB_QUERY_REPLY_PARTITION_CHARACTERISTICS 0x818E
+#define SF_IB_QUERY_REPLY_PORT 0x81B3
+#define SF_IB_QUERY_REPLY_PROCEDURE 0x81B1
+#define SF_IB_QUERY_REPLY_PRODUCT_DEFINED_DATA_STREAM 0x819C
+#define SF_IB_QUERY_REPLY_REPLY_MODES 0x8188
+#define SF_IB_QUERY_REPLY_RPQ_NAMES 0x81A1
+#define SF_IB_QUERY_REPLY_SAVE_OR_RESTORE_FORMAT 0x8192
+#define SF_IB_QUERY_REPLY_SEGMENT 0x81B0
+#define SF_IB_QUERY_REPLY_SETTABLE_PRINTER_CHARACTERISTICS 0x81A9
+#define SF_IB_QUERY_REPLY_STORAGE_POOLS 0x8196
+#define SF_IB_QUERY_REPLY_SUMMARY 0x8180
+#define SF_IB_QUERY_REPLY_TEXT_PARTITIONS 0x8183
+#define SF_IB_QUERY_REPLY_TRANSPARENCY 0x81A8
+#define SF_IB_QUERY_REPLY_USABLE_AREA 0x8181
+#define SF_IB_QUERY_REPLY_3270_IPDS 0x819A
static const value_string vals_inbound_structured_fields[] = {
- { EXCEPTION_OR_STATUS , "Exception/Status"},
- { INBOUND_TEXT_HEADER , "Inbound Text Header"},
- { INBOUND_3270DS , "Inbound 3270DS"},
- { RECOVERY_DATA , "Recovery Data"},
- { TYPE_1_TEXT_INBOUND , "Type 1 Text Inbound"},
- { QUERY_REPLY_ALPHANUMERIC_PARTITIONS , "Query Reply (Alphanumeric Partitions)"},
- { QUERY_REPLY_AUXILIARY_DEVICE , "Query Reply (Auxiliary Device)"},
- { QUERY_REPLY_BEGIN_OR_END_OF_FILE , "Query Reply (Begin/End of File)"},
- { QUERY_REPLY_CHARACTER_SETS , "Query Reply (Character Sets)"},
- { QUERY_REPLY_COLOR , "Query Reply (Color)"},
- { QUERY_REPLY_COOPERATIVE_PROCESSING_REQUESTOR , "Query Reply (Cooperative Processing Requestor)"},
- { QUERY_REPLY_DATA_CHAINING , "Query Reply (Data Chaining)"},
- { QUERY_REPLY_DATA_STREAMS , "Query Reply (Data Streams)"},
- { QUERY_REPLY_DBCS_ASIA , "Query Reply (DBCS-Asia)"},
- { QUERY_REPLY_DEVICE_CHARACTERISTICS , "Query Reply (Device Characteristics)"},
- { QUERY_REPLY_DISTRIBUTED_DATA_MANAGEMENT , "Query Reply (Distributed Data Management)"},
- { QUERY_REPLY_DOCUMENT_INTERCHANGE_ARCHITECTURE , "Query Reply (Document Interchange Architecture)"},
- { QUERY_REPLY_EXTENDED_DRAWING_ROUTINE , "Query Reply (Extended Drawing Routine)"},
- { QUERY_REPLY_FIELD_OUTLINING , "Query Reply (Field Outlining)"},
- { QUERY_REPLY_FIELD_VALIDATION , "Query Reply (Field Validation)"},
- { QUERY_REPLY_FORMAT_PRESENTATION , "Query Reply (Format Presentation)"},
- { QUERY_REPLY_FORMAT_STORAGE_AUXILIARY_DEVICE , "Query Reply (Format Storage Auxiliary Device)"},
- { QUERY_REPLY_GRAPHIC_COLOR , "Query Reply (Graphic Color)"},
- { QUERY_REPLY_GRAPHIC_SYMBOL_SETS , "Query Reply (Graphic Symbol Sets)"},
- { QUERY_REPLY_HIGHLIGHTING , "Query Reply (Highlighting)"},
- { QUERY_REPLY_IBM_AUXILIARY_DEVICE , "Query Reply (IBM Auxiliary Device)"},
- { QUERY_REPLY_IMAGE , "Query Reply (Image)"},
- { QUERY_REPLY_IMPLICIT_PARTITION , "Query Reply (Implicit Partition)"},
- { QUERY_REPLY_IOCA_AUXILIARY_DEVICE , "Query Reply (IOCA Auxiliary Device)"},
- { QUERY_REPLY_LINE_TYPE , "Query Reply (Line Type)"},
- { QUERY_REPLY_MSR_CONTROL , "Query Reply (MSR Control)"},
- { QUERY_REPLY_NULL , "Query Reply (Null)"},
- { QUERY_REPLY_OEM_AUXILIARY_DEVICE , "Query Reply (OEM Auxiliary Device)"},
- { QUERY_REPLY_PAPER_FEED_TECHNIQUES , "Query Reply (Paper Feed Techniques)"},
- { QUERY_REPLY_PARTITION_CHARACTERISTICS , "Query Reply (Partition Characteristics)"},
- { QUERY_REPLY_PORT , "Query Reply (Port)"},
- { QUERY_REPLY_PROCEDURE , "Query Reply (Procedure)"},
- { QUERY_REPLY_PRODUCT_DEFINED_DATA_STREAM , "Query Reply (Product Defined Data Stream)"},
- { QUERY_REPLY_REPLY_MODES , "Query Reply (Reply Modes)"},
- { QUERY_REPLY_RPQ_NAMES , "Query Reply (RPQ Names)"},
- { QUERY_REPLY_SAVE_OR_RESTORE_FORMAT , "Query Reply (Save/Restore Format)"},
- { QUERY_REPLY_SEGMENT , "Query Reply (Segment)"},
- { QUERY_REPLY_SETTABLE_PRINTER_CHARACTERISTICS , "Query Reply (Settable Printer Characteristics)"},
- { QUERY_REPLY_STORAGE_POOLS , "Query Reply (Storage Pools)"},
- { QUERY_REPLY_SUMMARY , "Query Reply (Summary)"},
- { QUERY_REPLY_TEXT_PARTITIONS , "Query Reply (Text Partitions)"},
- { QUERY_REPLY_TRANSPARENCY , "Query Reply (Transparency)"},
- { QUERY_REPLY_USABLE_AREA , "Query Reply (Usable Area)"},
- { QUERY_REPLY_3270_IPDS , "Query Reply (3270 IPDS)."},
- { 0x00, NULL }
+ { SF_IB_EXCEPTION_OR_STATUS, "Exception/Status" },
+ { SF_IB_INBOUND_TEXT_HEADER, "Inbound Text Header" },
+ { SF_IB_INBOUND_3270DS, "Inbound 3270DS" },
+ { SF_IB_RECOVERY_DATA, "Recovery Data" },
+ { SF_IB_TYPE_1_TEXT_INBOUND, "Type 1 Text Inbound" },
+ { SF_IB_QUERY_REPLY_ALPHANUMERIC_PARTITIONS, "Query Reply (Alphanumeric Partitions)" },
+ { SF_IB_QUERY_REPLY_AUXILIARY_DEVICE, "Query Reply (Auxiliary Device)" },
+ { SF_IB_QUERY_REPLY_BEGIN_OR_END_OF_FILE, "Query Reply (Begin/End of File)" },
+ { SF_IB_QUERY_REPLY_CHARACTER_SETS, "Query Reply (Character Sets)" },
+ { SF_IB_QUERY_REPLY_COLOR, "Query Reply (Color)" },
+ { SF_IB_QUERY_REPLY_COOPERATIVE_PROCESSING_REQUESTOR, "Query Reply (Cooperative Processing Requestor)" },
+ { SF_IB_QUERY_REPLY_DATA_CHAINING, "Query Reply (Data Chaining)" },
+ { SF_IB_QUERY_REPLY_DATA_STREAMS, "Query Reply (Data Streams)" },
+ { SF_IB_QUERY_REPLY_DBCS_ASIA, "Query Reply (DBCS-Asia)" },
+ { SF_IB_QUERY_REPLY_DEVICE_CHARACTERISTICS, "Query Reply (Device Characteristics)" },
+ { SF_IB_QUERY_REPLY_DISTRIBUTED_DATA_MANAGEMENT, "Query Reply (Distributed Data Management)" },
+ { SF_IB_QUERY_REPLY_DOCUMENT_INTERCHANGE_ARCHITECTURE, "Query Reply (Document Interchange Architecture)" },
+ { SF_IB_QUERY_REPLY_EXTENDED_DRAWING_ROUTINE, "Query Reply (Extended Drawing Routine)" },
+ { SF_IB_QUERY_REPLY_FIELD_OUTLINING, "Query Reply (Field Outlining)" },
+ { SF_IB_QUERY_REPLY_FIELD_VALIDATION, "Query Reply (Field Validation)" },
+ { SF_IB_QUERY_REPLY_FORMAT_PRESENTATION, "Query Reply (Format Presentation)" },
+ { SF_IB_QUERY_REPLY_FORMAT_STORAGE_AUXILIARY_DEVICE, "Query Reply (Format Storage Auxiliary Device)" },
+ { SF_IB_QUERY_REPLY_GRAPHIC_COLOR, "Query Reply (Graphic Color)" },
+ { SF_IB_QUERY_REPLY_GRAPHIC_SYMBOL_SETS, "Query Reply (Graphic Symbol Sets)" },
+ { SF_IB_QUERY_REPLY_HIGHLIGHTING, "Query Reply (Highlighting)" },
+ { SF_IB_QUERY_REPLY_IBM_AUXILIARY_DEVICE, "Query Reply (IBM Auxiliary Device)" },
+ { SF_IB_QUERY_REPLY_IMAGE, "Query Reply (Image)" },
+ { SF_IB_QUERY_REPLY_IMPLICIT_PARTITION, "Query Reply (Implicit Partition)" },
+ { SF_IB_QUERY_REPLY_IOCA_AUXILIARY_DEVICE, "Query Reply (IOCA Auxiliary Device)" },
+ { SF_IB_QUERY_REPLY_LINE_TYPE, "Query Reply (Line Type)" },
+ { SF_IB_QUERY_REPLY_MSR_CONTROL, "Query Reply (MSR Control)" },
+ { SF_IB_QUERY_REPLY_NULL, "Query Reply (Null)" },
+ { SF_IB_QUERY_REPLY_OEM_AUXILIARY_DEVICE, "Query Reply (OEM Auxiliary Device)" },
+ { SF_IB_QUERY_REPLY_PAPER_FEED_TECHNIQUES, "Query Reply (Paper Feed Techniques)" },
+ { SF_IB_QUERY_REPLY_PARTITION_CHARACTERISTICS, "Query Reply (Partition Characteristics)" },
+ { SF_IB_QUERY_REPLY_PORT, "Query Reply (Port)" },
+ { SF_IB_QUERY_REPLY_PROCEDURE, "Query Reply (Procedure)" },
+ { SF_IB_QUERY_REPLY_PRODUCT_DEFINED_DATA_STREAM, "Query Reply (Product Defined Data Stream)" },
+ { SF_IB_QUERY_REPLY_REPLY_MODES, "Query Reply (Reply Modes)" },
+ { SF_IB_QUERY_REPLY_RPQ_NAMES, "Query Reply (RPQ Names)" },
+ { SF_IB_QUERY_REPLY_SAVE_OR_RESTORE_FORMAT, "Query Reply (Save/Restore Format)" },
+ { SF_IB_QUERY_REPLY_SEGMENT, "Query Reply (Segment)" },
+ { SF_IB_QUERY_REPLY_SETTABLE_PRINTER_CHARACTERISTICS, "Query Reply (Settable Printer Characteristics)" },
+ { SF_IB_QUERY_REPLY_STORAGE_POOLS, "Query Reply (Storage Pools)" },
+ { SF_IB_QUERY_REPLY_SUMMARY, "Query Reply (Summary)" },
+ { SF_IB_QUERY_REPLY_TEXT_PARTITIONS, "Query Reply (Text Partitions)" },
+ { SF_IB_QUERY_REPLY_TRANSPARENCY, "Query Reply (Transparency)" },
+ { SF_IB_QUERY_REPLY_USABLE_AREA, "Query Reply (Usable Area)" },
+ { SF_IB_QUERY_REPLY_3270_IPDS, "Query Reply (3270 IPDS)." },
+ { 0x00, NULL }
};
-/* 6.2 - Exception/Status */
-
-#define ACKNOWLEDGED 0x0000
-#define AUXDEVICEAVAIL 0X0001
+/*--- 6.2 - Exception/Status ----- */
+#define SDP_STATCODE_ACKNOWLEDGED 0x0000
+#define SDP_STATCODE_AUXDEVICEAVAIL 0X0001
-static const value_string vals_statcode[] = {
- { ACKNOWLEDGED , "Acknowledged. The formats were successfully loaded, and no exception occurred."},
- { AUXDEVICEAVAIL , "Auxiliary device available"},
- { 0x00, NULL }
+static const value_string vals_sdp_statcode[] = {
+ { SDP_STATCODE_ACKNOWLEDGED, "Acknowledged. The formats were successfully loaded, and no exception occurred." },
+ { SDP_STATCODE_AUXDEVICEAVAIL, "Auxiliary device available" },
+ { 0x00, NULL }
};
-
-#define INVALID_DOID 0x0801
-#define DEVICENOTAVAIL 0X0802
-#define RETIRED 0X0803
-#define BUFFER_OVERRUN 0X0804
-#define STORAGE 0X0805
-#define FORMATNOTSPEC 0X0806
-#define DATAERROR 0X0807
-#define INSUFFRESOURCE 0X084B
-#define EXCEEDSLIMIT 0X084C
-#define FUNCTNOTSUPP 0X1003
-
-static const value_string vals_excode[] = {
- { INVALID_DOID , "Invalid/unrecognized DOID in the Destination/Origin structured field. "
- "AVAILSTAT must be set to B'0'."},
- { DEVICENOTAVAIL , "DOID valid, but the auxiliary device is not available because of an "
- "intervention required condition (for example, out of paper, power "
- "off, or processing code not resident). Available status is sent "
- "when the condition clears. AVAILSTAT must be set to B'1'."},
- { RETIRED , "Retired."},
- { BUFFER_OVERRUN , "Buffer overrun."},
- { STORAGE , "Insufficient storage. The loading of the formats could not be "
- "completed because storage was exhausted."},
- { FORMATNOTSPEC , "The format or group name was not specified in the Load Format "
- "Storage structured field."},
- { DATAERROR , "Data error."},
- { INSUFFRESOURCE , "Temporary insufficient resource. The application does not have "
- "a buffer available or is busy. The device chooses whether to "
- "set send status when the condition clears and set AVAILSTAT accordingly."},
- { EXCEEDSLIMIT , "The auxiliary device data in the transmission exceeds the limit specified "
- "in the LIMOUT parameter of the Query Reply for the auxiliary device. "
- "AVAILSTAT must be set to B'0'."},
- { FUNCTNOTSUPP , "Function not supported."},
- { 0x00, NULL }
+#define SDP_EXCODE_INVALID_DOID 0x0801
+#define SDP_EXCODE_DEVICENOTAVAIL 0X0802
+#define SDP_EXCODE_RETIRED 0X0803
+#define SDP_EXCODE_BUFFER_OVERRUN 0X0804
+#define SDP_EXCODE_STORAGE 0X0805
+#define SDP_EXCODE_FORMATNOTSPEC 0X0806
+#define SDP_EXCODE_DATAERROR 0X0807
+#define SDP_EXCODE_INSUFFRESOURCE 0X084B
+#define SDP_EXCODE_EXCEEDSLIMIT 0X084C
+#define SDP_EXCODE_FUNCTNOTSUPP 0X1003
+
+static const value_string vals_sdp_excode[] = {
+ { SDP_EXCODE_INVALID_DOID,
+ "Invalid/unrecognized DOID in the Destination/Origin structured field."
+ " AVAILSTAT must be set to B'0'." },
+ { SDP_EXCODE_DEVICENOTAVAIL,
+ "DOID valid, but the auxiliary device is not available because of an"
+ " intervention required condition (for example, out of paper, power"
+ " off, or processing code not resident). Available status is sent"
+ " when the condition clears. AVAILSTAT must be set to B'1'." },
+ { SDP_EXCODE_RETIRED,
+ "Retired." },
+ { SDP_EXCODE_BUFFER_OVERRUN,
+ "Buffer overrun." },
+ { SDP_EXCODE_STORAGE,
+ "Insufficient storage. The loading of the formats could not be"
+ " completed because storage was exhausted." },
+ { SDP_EXCODE_FORMATNOTSPEC,
+ "The format or group name was not specified in the Load Format"
+ " Storage structured field." },
+ { SDP_EXCODE_DATAERROR,
+ "Data error." },
+ { SDP_EXCODE_INSUFFRESOURCE,
+ "Temporary insufficient resource. The application does not have"
+ " a buffer available or is busy. The device chooses whether to"
+ " set send status when the condition clears and set AVAILSTAT accordingly." },
+ { SDP_EXCODE_EXCEEDSLIMIT,
+ "The auxiliary device data in the transmission exceeds the limit specified"
+ " in the LIMOUT parameter of the Query Reply for the auxiliary device."
+ " AVAILSTAT must be set to B'0'." },
+ { SDP_EXCODE_FUNCTNOTSUPP,
+ "Function not supported." },
+ { 0x00, NULL }
};
/* Query Reply Types */
-#define ALPHANUMERIC_PARTITIONS 0x84
-#define AUXILIARY_DEVICE 0x99
-#define QBEGIN_OR_END_OF_FILE 0x9F
-#define CHARACTER_SETS 0x85
-#define COLOR 0x86
-#define COOPERATIVE_PROCESSING_REQUESTOR 0xAB
-#define DATA_CHAINING 0x98
-#define DATA_STREAMS 0xA2
-#define DBCS_ASIA 0x91
-#define DEVICE_CHARACTERISTICS 0xA0
-#define DISTRIBUTED_DATA_MANAGEMENT 0x95
-#define DOCUMENT_INTERCHANGE_ARCHITECTURE 0x97
-#define EXTENDED_DRAWING_ROUTINE 0xB5
-#define QFIELD_OUTLINING 0x8C
-#define QFIELD_VALIDATION 0x8A
-#define FORMAT_PRESENTATION 0x90
-#define FORMAT_STORAGE_AUXILIARY_DEVICE 0x94
-#define GRAPHIC_COLOR 0xB4
-#define GRAPHIC_SYMBOL_SETS 0xB6
-#define HIGHLIGHTING 0x87
-#define IBM_AUXILIARY_DEVICE 0x9E
-#define IMAGE 0x82
-#define IMPLICIT_PARTITION 0xA6
-#define IOCA_AUXILIARY_DEVICE 0xAA
-#define LINE_TYPE 0xB2
-#define MSR_CONTROL 0x8B
-#define QNULL 0xFF
-#define OEM_AUXILIARY_DEVICE 0x8F
-#define PAPER_FEED_TECHNIQUES 0xA7
-#define PARTITION_CHARACTERISTICS 0x8E
-#define PORT 0xB3
-#define PROCEDURE 0xB1
-#define PRODUCT_DEFINED_DATA_STREAM 0x9C
-#define REPLY_MODES 0x88
-#define RPQ_NAMES 0xA1
-#define QSAVE_OR_RESTORE_FORMAT 0x92
-#define SEGMENT 0xB0
-#define SETTABLE_PRINTER_CHARACTERISTICS 0xA9
-#define STORAGE_POOLS 0x96
-#define SUMMARY 0x80
-#define TEXT_PARTITIONS 0x83
-#define QTRANSPARENCY 0xA8
-#define USABLE_AREA 0x81
-#define T3270_IPDS 0x9A
-
-
-static const value_string vals_query_replies[] = {
- { ALPHANUMERIC_PARTITIONS , "Alphanumeric Partitions"},
- { AUXILIARY_DEVICE , "Auxiliary Device"},
- { QBEGIN_OR_END_OF_FILE , "Begin/End of File"},
- { CHARACTER_SETS , "Character Sets"},
- { COLOR , "Color"},
- { COOPERATIVE_PROCESSING_REQUESTOR , "Cooperative Processing Requestor"},
- { DATA_CHAINING , "Data Chaining"},
- { DATA_STREAMS , "Data Streams"},
- { DBCS_ASIA , "DBCS-Asia"},
- { DEVICE_CHARACTERISTICS , "Device Characteristics"},
- { DISTRIBUTED_DATA_MANAGEMENT , "Distributed Data Management"},
- { DOCUMENT_INTERCHANGE_ARCHITECTURE , "Document Interchange Architecture"},
- { EXTENDED_DRAWING_ROUTINE , "Extended Drawing Routine"},
- { QFIELD_OUTLINING , "Field Outlining"},
- { QFIELD_VALIDATION , "Field Validation"},
- { FORMAT_PRESENTATION , "Format Presentation"},
- { FORMAT_STORAGE_AUXILIARY_DEVICE , "Format Storage Auxiliary Device"},
- { GRAPHIC_COLOR , "Graphic Color"},
- { GRAPHIC_SYMBOL_SETS , "Graphic Symbol Sets"},
- { HIGHLIGHTING , "Highlighting"},
- { IBM_AUXILIARY_DEVICE , "IBM Auxiliary Device"},
- { IMAGE , "Image"},
- { IMPLICIT_PARTITION , "Implicit Partition"},
- { IOCA_AUXILIARY_DEVICE , "IOCA Auxiliary Device"},
- { LINE_TYPE , "Line Type"},
- { MSR_CONTROL , "MSR Control"},
- { QNULL , "Null"},
- { OEM_AUXILIARY_DEVICE , "OEM Auxiliary Device"},
- { PAPER_FEED_TECHNIQUES , "Paper Feed Techniques"},
- { PARTITION_CHARACTERISTICS , "Partition Characteristics"},
- { PORT , "Port"},
- { PROCEDURE , "Procedure"},
- { PRODUCT_DEFINED_DATA_STREAM , "Product Defined Data Stream"},
- { REPLY_MODES , "Reply Modes"},
- { RPQ_NAMES , "RPQ Names"},
- { QSAVE_OR_RESTORE_FORMAT , "Save/Restore Format"},
- { SEGMENT , "Segment"},
- { SETTABLE_PRINTER_CHARACTERISTICS , "Settable Printer Characteristics"},
- { STORAGE_POOLS , "Storage Pools"},
- { SUMMARY , "Summary"},
- { TEXT_PARTITIONS , "Text Partitions"},
- { QTRANSPARENCY , "Transparency"},
- { USABLE_AREA , "Usable Area"},
- { T3270_IPDS , "3270 IPDS."},
- { 0x00, NULL }
+#define SF_QR_ALPHANUMERIC_PARTITIONS 0x84
+#define SF_QR_AUXILIARY_DEVICE 0x99
+#define SF_QR_QBEGIN_OR_END_OF_FILE 0x9F
+#define SF_QR_CHARACTER_SETS 0x85
+#define SF_QR_COLOR 0x86
+#define SF_QR_COOPERATIVE_PROCESSING_REQUESTOR 0xAB
+#define SF_QR_DATA_CHAINING 0x98
+#define SF_QR_DATA_STREAMS 0xA2
+#define SF_QR_DBCS_ASIA 0x91
+#define SF_QR_DEVICE_CHARACTERISTICS 0xA0
+#define SF_QR_DISTRIBUTED_DATA_MANAGEMENT 0x95
+#define SF_QR_DOCUMENT_INTERCHANGE_ARCHITECTURE 0x97
+#define SF_QR_EXTENDED_DRAWING_ROUTINE 0xB5
+#define SF_QR_QFIELD_OUTLINING 0x8C
+#define SF_QR_QFIELD_VALIDATION 0x8A
+#define SF_QR_FORMAT_PRESENTATION 0x90
+#define SF_QR_FORMAT_STORAGE_AUXILIARY_DEVICE 0x94
+#define SF_QR_GRAPHIC_COLOR 0xB4
+#define SF_QR_GRAPHIC_SYMBOL_SETS 0xB6
+#define SF_QR_HIGHLIGHTING 0x87
+#define SF_QR_IBM_AUXILIARY_DEVICE 0x9E
+#define SF_QR_IMAGE 0x82
+#define SF_QR_IMPLICIT_PARTITION 0xA6
+#define SF_QR_IOCA_AUXILIARY_DEVICE 0xAA
+#define SF_QR_LINE_TYPE 0xB2
+#define SF_QR_MSR_CONTROL 0x8B
+#define SF_QR_QNULL 0xFF
+#define SF_QR_OEM_AUXILIARY_DEVICE 0x8F
+#define SF_QR_PAPER_FEED_TECHNIQUES 0xA7
+#define SF_QR_PARTITION_CHARACTERISTICS 0x8E
+#define SF_QR_PORT 0xB3
+#define SF_QR_PROCEDURE 0xB1
+#define SF_QR_PRODUCT_DEFINED_DATA_STREAM 0x9C
+#define SF_QR_REPLY_MODES 0x88
+#define SF_QR_RPQ_NAMES 0xA1
+#define SF_QR_QSAVE_OR_RESTORE_FORMAT 0x92
+#define SF_QR_SEGMENT 0xB0
+#define SF_QR_SETTABLE_PRINTER_CHARACTERISTICS 0xA9
+#define SF_QR_STORAGE_POOLS 0x96
+#define SF_QR_SUMMARY 0x80
+#define SF_QR_TEXT_PARTITIONS 0x83
+#define SF_QR_QTRANSPARENCY 0xA8
+#define SF_QR_USABLE_AREA 0x81
+#define SF_QR_T3270_IPDS 0x9A
+
+static const value_string vals_sf_query_replies[] = {
+ { SF_QR_ALPHANUMERIC_PARTITIONS, "Alphanumeric Partitions" },
+ { SF_QR_AUXILIARY_DEVICE, "Auxiliary Device" },
+ { SF_QR_QBEGIN_OR_END_OF_FILE, "Begin/End of File" },
+ { SF_QR_CHARACTER_SETS, "Character Sets" },
+ { SF_QR_COLOR, "Color" },
+ { SF_QR_COOPERATIVE_PROCESSING_REQUESTOR, "Cooperative Processing Requestor" },
+ { SF_QR_DATA_CHAINING, "Data Chaining" },
+ { SF_QR_DATA_STREAMS, "Data Streams" },
+ { SF_QR_DBCS_ASIA, "DBCS-Asia" },
+ { SF_QR_DEVICE_CHARACTERISTICS, "Device Characteristics" },
+ { SF_QR_DISTRIBUTED_DATA_MANAGEMENT, "Distributed Data Management" },
+ { SF_QR_DOCUMENT_INTERCHANGE_ARCHITECTURE, "Document Interchange Architecture" },
+ { SF_QR_EXTENDED_DRAWING_ROUTINE, "Extended Drawing Routine" },
+ { SF_QR_QFIELD_OUTLINING, "Field Outlining" },
+ { SF_QR_QFIELD_VALIDATION, "Field Validation" },
+ { SF_QR_FORMAT_PRESENTATION, "Format Presentation" },
+ { SF_QR_FORMAT_STORAGE_AUXILIARY_DEVICE, "Format Storage Auxiliary Device" },
+ { SF_QR_GRAPHIC_COLOR, "Graphic Color" },
+ { SF_QR_GRAPHIC_SYMBOL_SETS, "Graphic Symbol Sets" },
+ { SF_QR_HIGHLIGHTING, "Highlighting" },
+ { SF_QR_IBM_AUXILIARY_DEVICE, "IBM Auxiliary Device" },
+ { SF_QR_IMAGE, "Image" },
+ { SF_QR_IMPLICIT_PARTITION, "Implicit Partition" },
+ { SF_QR_IOCA_AUXILIARY_DEVICE, "IOCA Auxiliary Device" },
+ { SF_QR_LINE_TYPE, "Line Type" },
+ { SF_QR_MSR_CONTROL, "MSR Control" },
+ { SF_QR_QNULL, "Null" },
+ { SF_QR_OEM_AUXILIARY_DEVICE, "OEM Auxiliary Device" },
+ { SF_QR_PAPER_FEED_TECHNIQUES, "Paper Feed Techniques" },
+ { SF_QR_PARTITION_CHARACTERISTICS, "Partition Characteristics" },
+ { SF_QR_PORT, "Port" },
+ { SF_QR_PROCEDURE, "Procedure" },
+ { SF_QR_PRODUCT_DEFINED_DATA_STREAM, "Product Defined Data Stream" },
+ { SF_QR_REPLY_MODES, "Reply Modes" },
+ { SF_QR_RPQ_NAMES, "RPQ Names" },
+ { SF_QR_QSAVE_OR_RESTORE_FORMAT, "Save/Restore Format" },
+ { SF_QR_SEGMENT, "Segment" },
+ { SF_QR_SETTABLE_PRINTER_CHARACTERISTICS, "Settable Printer Characteristics" },
+ { SF_QR_STORAGE_POOLS, "Storage Pools" },
+ { SF_QR_SUMMARY, "Summary" },
+ { SF_QR_TEXT_PARTITIONS, "Text Partitions" },
+ { SF_QR_QTRANSPARENCY, "Transparency" },
+ { SF_QR_USABLE_AREA, "Usable Area" },
+ { SF_QR_T3270_IPDS, "3270 IPDS." },
+ { 0x00, NULL }
};
-/* 6.9 Query Reply Alphanumeric Partitions */
-
-#define VERTWIN 0x80
-#define HORWIN 0x40
-#define APRES1 0x20
-#define APA_FLG 0x10
-#define PROT 0x08
-#define LCOPY 0x04
-#define MODPART 0x02
-#define APRES2 0x01
-
-/* 6.12 - Query Reply (Character Sets) */
-#define ALT 0x80
-#define MULTID 0x40
-#define LOADABLE 0x20
-#define EXT 0x10
-#define MS 0x08
-#define CH2 0x04
-#define GF 0x02
-#define CSRES 0x01
-
-#define CSRES2 0x80
-#define PSCS 0x40
-#define CSRES3 0x20
-#define CF 0x10
-#define CSRES4 0x08
-#define CSRES5 0x04
-#define GCSRES6 0x02
-#define CSRES7 0x01
-
-
-/* 6.15 Query Reply (Data Chaining) */
+/*--- 6.9 Query Reply Alphanumeric Partitions ----- */
+#define QR_AP_VERTWIN 0x80
+#define QR_AP_HORWIN 0x40
+#define QR_AP_APRES1 0x20
+#define QR_AP_APA_FLG 0x10
+#define QR_AP_PROT 0x08
+#define QR_AP_LCOPY 0x04
+#define QR_AP_MODPART 0x02
+#define QR_AP_APRES2 0x01
+
+/*--- 6.12 - Query Reply (Character Sets) ----- */
+#define QR_CS_ALT 0x80
+#define QR_CS_MULTID 0x40
+#define QR_CS_LOADABLE 0x20
+#define QR_CS_EXT 0x10
+#define QR_CS_MS 0x08
+#define QR_CS_CH2 0x04
+#define QR_CS_GF 0x02
+#define QR_CS_CSRES 0x01
+
+#define QR_CS_CSRES2 0x80
+#define QR_CS_PSCS 0x40
+#define QR_CS_CSRES3 0x20
+#define QR_CS_CF 0x10
+#define QR_CS_CSRES4 0x08
+#define QR_CS_CSRES5 0x04
+#define QR_CS_GCSRES6 0x02
+#define QR_CS_CSRES7 0x01
+
+
+/*--- 6.15 Query Reply (Data Chaining) ----- */
static const value_string vals_data_chaining_dir[] = {
- { 0x00, "Both" },
- { 0x40, "From device only" },
- { 0x80, "To device only" },
- { 0x00, NULL }
+ { 0x00, "Both" },
+ { 0x01, "From device only" },
+ { 0x02, "To device only" },
+ { 0x00, NULL }
};
-/* 6.16 Query Reply (Data Streams) */
-#define SCS 0x00
-#define DCAL2 0x01
-#define IPDS 0x02
+/*--- 6.16 Query Reply (Data Streams) ----- */
+#define QR_DS_SCS 0x00
+#define QR_DS_DCAL2 0x01
+#define QR_DS_IPDS 0x02
static const value_string vals_data_streams[] = {
- { SCS , "SCS Base Data Stream with extensions as specified in the BIND request and Device Characteristics Query Reply structured field"},
- { DCAL2, "Document Content Architecture Level 2"},
- { IPDS , "IPDS as defined in related documentation"},
- { 0x00, NULL }
+ { QR_DS_SCS,
+ "SCS Base Data Stream with extensions as specified in the BIND request"
+ " and Device Characteristics Query Reply structured field" },
+ { QR_DS_DCAL2,
+ "Document Content Architecture Level 2" },
+ { QR_DS_IPDS,
+ "IPDS as defined in related documentation" },
+ { 0x00, NULL }
+};
+
+/*--- 6.51 Query Reply Usable Area ----- */
+#define QR_UA_RESERVED1 0x80
+#define QR_UA_PAGE_PRINTER 0x40
+#define QR_UA_RESERVED2 0x20
+#define QR_UA_HARD_COPY 0x10
+
+#define QR_UA_ADDR_MODE_MASK 0x0F
+#define QR_UA_ADDR_MODE_RESERVED1 0x00
+#define QR_UA_ADDR_MODE_TWELVE_FOURTEEN_BIT_OK 0x01
+#define QR_UA_ADDR_MODE_RESERVED2 0x02
+#define QR_UA_ADDR_MODE_TWELVE_FOURTEEN_SXTN_BIT_OK 0x03
+#define QR_UA_ADDR_MODE_UNMAPPED 0x0F
+
+static const value_string vals_usable_area_addr_mode[] = {
+ { QR_UA_ADDR_MODE_RESERVED1, "Reserved" },
+ { QR_UA_ADDR_MODE_TWELVE_FOURTEEN_BIT_OK, "Twelve/Fourteen Bit Addressing Allowed" },
+ { QR_UA_ADDR_MODE_RESERVED2, "Reserved" },
+ { QR_UA_ADDR_MODE_TWELVE_FOURTEEN_SXTN_BIT_OK , "Twelve/Fourteen/Sixteen Bit Addressing Allowed" },
+ { QR_UA_ADDR_MODE_UNMAPPED, "Unmapped" },
+ { 0x00, NULL }
+};
+
+#define QR_UA_VARIABLE_CELLS 0x80
+#define QR_UA_CHARACTERS 0x40
+#define QR_UA_CELL_UNITS 0x20
+
+static const struct true_false_string tn3270_tfs_ua_variable_cells = {
+ "Supported",
+ "Not supported"
+};
+
+static const struct true_false_string tn3270_tfs_ua_characters = {
+ "Non-matrix character",
+ "Matrix character"
};
-/* 6.51 Query Reply Usable Area */
-#define UA_RESERVED1 0x80
-#define PAGE_PRINTER 0x40
-#define UA_RESERVED2 0x20
-#define HARD_COPY 0x10
-
-#define UA_RESERVED3 0x00
-#define TWELVE_FOURTEEN_BIT_ADDRESSING 0x01
-#define UA_RESERVED4 0x02
-#define TWELVE_FOURTEEN_SXTN_BIT_ADDRESSING 0x03
-#define UNMAPPED 0x0F
-
-static const value_string vals_usable_area_flags1[] = {
- { UA_RESERVED3 , "RESERVED "},
- { TWELVE_FOURTEEN_BIT_ADDRESSING , "TWELVE FOURTEEN BIT ADDRESSING"},
- { UA_RESERVED4 , "RESERVED"},
- { TWELVE_FOURTEEN_SXTN_BIT_ADDRESSING , "TWELVE FOURTEEN SXTN BIT ADDRESSING"},
- { UNMAPPED , "UNMAPPED"},
- { 0x00, NULL }
+static const struct true_false_string tn3270_tfs_ua_cell_units = {
+ "Pels",
+ "Cells"
};
-#define VARIABLE_CELLS 0x10
-#define CHARACTERS 0x20
-#define CELL_UNITS 0x40
-#define INCHES 0x00
-#define MM 0x01
+#define QR_UA_UOM_INCHES 0x00
+#define QR_UA_UOM_MILLIMETERS 0x01
static const value_string vals_usable_area_uom[] = {
- { INCHES , "Inches"},
- { MM , "Millimetres"},
- { 0x00, NULL }
+ { QR_UA_UOM_INCHES, "Inches" },
+ { QR_UA_UOM_MILLIMETERS, "Millimeters" },
+ { 0x00, NULL }
};
-/* 6.42 - Reply Modes */
+/*--- 6.42 - Query reply (Reply Modes) ----- */
+/* Also for: 5.30 - Set Reply Mode */
-#define FIELD_MODE 0x00
-#define EXTENDED_FIELD_MODE 0x01
-#define CHARACTER_MODE 0x02
+#define RM_REPLY_FIELD_MODE 0x00
+#define RM_REPLY_EXTENDED_FIELD_MODE 0x01
+#define RM_REPLY_CHARACTER_MODE 0x02
-static const value_string vals_modes[] = {
- { FIELD_MODE , "Field Mode"},
- { EXTENDED_FIELD_MODE, "Extended Field Mode"},
- { CHARACTER_MODE , "Character Mode"},
- { 0x00, NULL }
+static const value_string vals_reply_modes[] = {
+ { RM_REPLY_FIELD_MODE, "Field Mode" },
+ { RM_REPLY_EXTENDED_FIELD_MODE, "Extended Field Mode" },
+ { RM_REPLY_CHARACTER_MODE, "Character Mode" },
+ { 0x00, NULL }
};
-/* 6.19 - Query Reply (Distributed Data Management) */
-#define DDM_COPY_SUBSET_1 0x01
+/*--- 6.19 - Query Reply (Distributed Data Management) ----- */
+#define QR_DDM_COPY_SUBSET_1 0x01
-static const value_string vals_ddm[] = {
- { DDM_COPY_SUBSET_1 , "DDM Copy Subset 1"},
- { 0x00, NULL }
+static const value_string vals_qr_ddm[] = {
+ { QR_DDM_COPY_SUBSET_1, "DDM Copy Subset 1" },
+ { 0x00, NULL }
};
-/* 6.20 - Query Reply (Document Interchange Architecture) */
-#define FILE_SERVER 0x01
-#define FILE_REQ 0x02
-#define FILE_SERVER_REQ 0x03
-
-static const value_string vals_dia[] = {
- { FILE_SERVER , "File Server"},
- { FILE_REQ , "File Requestor"},
- { FILE_SERVER_REQ , "Both File Server and File Requestor"},
- { 0x00, NULL }
+/*--- 6.20 - Query Reply (Document Interchange Architecture) ----- */
+#define QR_DIA_FILE_SERVER 0x01
+#define QR_DIA_FILE_REQ 0x02
+#define QR_DIA_FILE_SERVER_REQ 0x03
+
+static const value_string vals_qr_dia[] = {
+ { QR_DIA_FILE_SERVER, "File Server" },
+ { QR_DIA_FILE_REQ, "File Requestor" },
+ { QR_DIA_FILE_SERVER_REQ, "Both File Server and File Requestor" },
+ { 0x00, NULL }
};
-/* 6.31 - Query Reply (Implicit Partitions) */
-#define DISPLAY 0x01
-#define PRINTER 0x02
-#define CHARACTER 0x03
-
-static const value_string vals_ip[] = {
- { DISPLAY , "Display Devices"},
- { PRINTER , "Printer Devices"},
- { CHARACTER , "Character Devices"},
- { 0x00, NULL }
+/*--- 6.31 - Query Reply (Implicit Partitions) ----- */
+#define QR_IP_SDP_DISPLAY 0x01
+#define QR_IP_SDP_PRINTER 0x02
+#define QR_IP_SDP_CHARACTER 0x03
+
+#if 0
+static const value_string vals_qr_ip[] = {
+ { QR_IP_SDP_DISPLAY, "Display Devices" },
+ { QR_IP_SDP_PRINTER, "Printer Devices" },
+ { QR_IP_SDP_CHARACTER, "Character Devices" },
+ { 0x00, NULL }
};
+#endif
-/* 6.41 - Query Reply (Product Defined Data Streams) */
-#define GRAPH5080 0x01
-#define WHIPAPI 0x02
+/*--- 6.41 - Query Reply (Product Defined Data Streams) ----- */
+#define QR_PDDS_REFID_GRAPH5080 0x01
+#define QR_PDDS_REFID_WHIPAPI 0x02
-static const value_string vals_pdds_refid[] = {
- { GRAPH5080 , "Supports the 5080 Graphics System"},
- { WHIPAPI , "Supports the WHIP API data stream"},
- { 0x00, NULL }
+static const value_string vals_qr_pdds_refid[] = {
+ { QR_PDDS_REFID_GRAPH5080, "Supports the 5080 Graphics System" },
+ { QR_PDDS_REFID_WHIPAPI, "Supports the WHIP API data stream" },
+ { 0x00, NULL }
};
-#define HFGD 0x01
-#define RS232 0x02
+#define QR_PDDS_SSID_HFGD 0x01
+#define QR_PDDS_SSID_RS232 0x02
-static const value_string vals_pdds_ssid[] = {
- { HFGD , "5080 HFGD Graphics Subset"},
- { RS232 , "5080 RS232 Ports Subset"},
- { 0x00, NULL }
+static const value_string vals_qr_pdds_ssid[] = {
+ { QR_PDDS_SSID_HFGD , "5080 HFGD Graphics Subset" },
+ { QR_PDDS_SSID_RS232, "5080 RS232 Ports Subset" },
+ { 0x00, NULL }
};
-/* 6.47 - Query Reply (Storage Pools) */
-#define SEGMENT1 0x0001
-#define PROCEDURE1 0x0002
-#define EXTENDED_DRAWING 0x0003
-#define DATA_UNIT 0x0004
-#define TEMPORARY 0x0005
-#define LINE_TYPE1 0x0006
-#define SYMBOL_SET 0x0007
-
-static const value_string vals_objlist[] = {
- { SEGMENT1 , "Segment"},
- { PROCEDURE1 , "Procedure"},
- { EXTENDED_DRAWING , "Extended drawing routine"},
- { DATA_UNIT , "Data unit"},
- { TEMPORARY , "Temporary"},
- { LINE_TYPE1 , "Line type"},
- { SYMBOL_SET , "Symbol set"},
- { 0x00, NULL }
+/*--- 6.47 - Query Reply (Storage Pools) ----- */
+#define QR_SP_OBJ_SEGMENT1 0x0001
+#define QR_SP_OBJ_PROCEDURE1 0x0002
+#define QR_SP_OBJ_EXTENDED_DRAWING 0x0003
+#define QR_SP_OBJ_DATA_UNIT 0x0004
+#define QR_SP_OBJ_TEMPORARY 0x0005
+#define QR_SP_OBJ_LINE_TYPE1 0x0006
+#define QR_SP_OBJ_SYMBOL_SET 0x0007
+
+static const value_string vals_sp_objlist[] = {
+ { QR_SP_OBJ_SEGMENT1, "Segment" },
+ { QR_SP_OBJ_PROCEDURE1, "Procedure" },
+ { QR_SP_OBJ_EXTENDED_DRAWING, "Extended drawing routine" },
+ { QR_SP_OBJ_DATA_UNIT, "Data unit" },
+ { QR_SP_OBJ_TEMPORARY, "Temporary" },
+ { QR_SP_OBJ_LINE_TYPE1, "Line type" },
+ { QR_SP_OBJ_SYMBOL_SET, "Symbol set" },
+ { 0x00, NULL }
};
/* TN3270E Header - Data Type */
-#define TN3270E_3270_DATA 0x00
-#define TN3270E_BIND_IMAGE 0x03
-#define TN3270E_NVT_DATA 0x05
-#define TN3270E_REQUEST 0x06
-#define TN3270E_RESPONSE 0x02
-#define TN3270E_SCS_DATA 0x01
-#define TN3270E_SSCP_LU_DATA 0x07
-#define TN3270E_UNBIND 0x04
+#define TN3270E_3270_DATA 0x00
+#define TN3270E_BIND_IMAGE 0x03
+#define TN3270E_NVT_DATA 0x05
+#define TN3270E_REQUEST 0x06
+#define TN3270E_RESPONSE 0x02
+#define TN3270E_SCS_DATA 0x01
+#define TN3270E_SSCP_LU_DATA 0x07
+#define TN3270E_UNBIND 0x04
static const value_string vals_tn3270_header_data_types[] = {
- { TN3270E_3270_DATA , "3270_DATA"},
- { TN3270E_BIND_IMAGE , "BIND_IMAGE"},
- { TN3270E_NVT_DATA , "NVT_DATA"},
- { TN3270E_REQUEST , "REQUEST"},
- { TN3270E_RESPONSE , "RESPONSE"},
- { TN3270E_SCS_DATA , "SCS_DATA"},
- { TN3270E_SSCP_LU_DATA, "SSCP_LU_DATA"},
- { TN3270E_UNBIND , "UNBIND"},
- { 0x00, NULL }
+ { TN3270E_3270_DATA, "3270_DATA" },
+ { TN3270E_BIND_IMAGE, "BIND_IMAGE" },
+ { TN3270E_NVT_DATA, "NVT_DATA" },
+ { TN3270E_REQUEST, "REQUEST" },
+ { TN3270E_RESPONSE, "RESPONSE" },
+ { TN3270E_SCS_DATA, "SCS_DATA" },
+ { TN3270E_SSCP_LU_DATA, "SSCP_LU_DATA" },
+ { TN3270E_UNBIND, "UNBIND" },
+ { 0x00, NULL }
};
@@ -1129,547 +1217,545 @@ static const value_string vals_tn3270_header_data_types[] = {
#define TN3270E_COND_CLEARED 0x00
static const value_string vals_tn3270_header_request_flags[] = {
- { TN3270E_COND_CLEARED , "Condition Cleared"},
- { 0x00, NULL }
+ { TN3270E_COND_CLEARED, "Condition Cleared" },
+ { 0x00, NULL }
};
/* TN3270E Header - Response Flags - Data Type 3270 and SCS */
-#define TN3270E_ALWAYS_RESPONSE 0x02
-#define TN3270E_ERROR_RESPONSE 0x01
-#define TN3270E_NO_RESPONSE 0x00
+#define TN3270E_NO_RESPONSE 0x00
+#define TN3270E_ERROR_RESPONSE 0x01
+#define TN3270E_ALWAYS_RESPONSE 0x02
static const value_string vals_tn3270_header_response_flags_3270_SCS[] = {
- { TN3270E_ALWAYS_RESPONSE, "ALWAYS-RESPONSE"},
- { TN3270E_ERROR_RESPONSE , "ERROR-RESPONSE "},
- { TN3270E_NO_RESPONSE , "NO-RESPONSE "},
- { 0x00, NULL }
+ { TN3270E_NO_RESPONSE, "No-Response" },
+ { TN3270E_ERROR_RESPONSE, "Error-Response" },
+ { TN3270E_ALWAYS_RESPONSE, "Always-Response" },
+ { 0x00, NULL }
};
/* TN3270E Header _ Response Flags - Data Type Response */
-#define TN3270E_POSITIVE_RESPONSE 0x00
-#define TN3270E_NEGATIVE_RESPONSE 0x01
+#define TN3270E_POSITIVE_RESPONSE 0x00
+#define TN3270E_NEGATIVE_RESPONSE 0x01
static const value_string vals_tn3270_header_response_flags_response[] = {
- { TN3270E_POSITIVE_RESPONSE, "POSITIVE-RESPONSE"},
- { TN3270E_NEGATIVE_RESPONSE, "NEGATIVE-RESPONSE"},
- { 0x00, NULL }
+ { TN3270E_POSITIVE_RESPONSE, "Positive-Response" },
+ { TN3270E_NEGATIVE_RESPONSE, "Negative-Response" },
+ { 0x00, NULL }
};
-
/*
* Data structure attached to a conversation, giving authentication
* information from a bind request.
- * We keep a linked list of them, so that we can free up all the
- * authentication mechanism strings.
*/
typedef struct tn3270_conv_info_t {
- struct tn3270_conv_info_t *next;
address outbound_addr;
guint32 outbound_port;
address inbound_addr;
guint32 inbound_port;
- gint extended;
+ gint extended;
+ guint8 altrows;
+ guint8 altcols;
+ guint8 rows;
+ guint8 cols;
} tn3270_conv_info_t;
-static int proto_tn3270=-1;
-
-static int hf_tn3270_fa_display=-1;
-static int hf_tn3270_fa_graphic_convert1=-1;
-static int hf_tn3270_fa_graphic_convert2=-1;
-static int hf_tn3270_fa_modified=-1;
-static int hf_tn3270_fa_numeric=-1;
-static int hf_tn3270_fa_protected=-1;
-static int hf_tn3270_fa_reserved=-1;
-static int hf_tn3270_field_attribute=-1;
-static int hf_tn3270_aid=-1;
-static int hf_tn3270_all_character_attributes=-1;
-static int hf_tn3270_attribute_type=-1;
-static int hf_tn3270_begin_end_flags1=-1;
-static int hf_tn3270_begin_end_flags2=-1;
-static int hf_tn3270_bsc=-1;
-static int hf_tn3270_buffer_address=-1;
-static int hf_tn3270_c_cav=-1;
-static int hf_tn3270_cc=-1;
-static int hf_tn3270_character_code=-1;
-static int hf_tn3270_character_set=-1;
-static int hf_tn3270_charset=-1;
-static int hf_tn3270_checkpoint=-1;
-static int hf_tn3270_c_ci=-1;
-static int hf_tn3270_c_offset=-1;
-static int hf_tn3270_color=-1;
-static int hf_tn3270_color_command=-1;
-static int hf_tn3270_color_flags=-1;
-static int hf_tn3270_command_code=-1;
-static int hf_tn3270_cro=-1;
-static int hf_tn3270_c_scsoff=-1;
-static int hf_tn3270_c_seqoff=-1;
-static int hf_tn3270_c_sequence=-1;
-static int hf_tn3270_cursor_x=-1;
-static int hf_tn3270_cursor_y=-1;
-static int hf_tn3270_cw=-1;
-static int hf_tn3270_data_chain_bitmask=-1;
-static int hf_tn3270_destination_or_origin_bitmask=-1;
-static int hf_tn3270_double_byte_sf_id=-1;
-static int hf_tn3270_erase_flags=-1;
-static int hf_tn3270_exception_or_status_flags=-1;
-static int hf_tn3270_extended_highlighting=-1;
-static int hf_tn3270_extended_ps_color=-1;
-static int hf_tn3270_extended_ps_echar=-1;
-static int hf_tn3270_extended_ps_flags=-1;
-static int hf_tn3270_extended_ps_length=-1;
-static int hf_tn3270_extended_ps_lw=-1;
-static int hf_tn3270_extended_ps_lh=-1;
-static int hf_tn3270_extended_ps_nh=-1;
-static int hf_tn3270_extended_ps_nw=-1;
-static int hf_tn3270_extended_ps_res=-1;
-static int hf_tn3270_extended_ps_stsubs=-1;
-static int hf_tn3270_extended_ps_subsn=-1;
-static int hf_tn3270_featl=-1;
-static int hf_tn3270_feats=-1;
-static int hf_tn3270_field_data=-1;
-static int hf_tn3270_field_outlining=-1;
-static int hf_tn3270_field_validation_mandatory_entry=-1;
-static int hf_tn3270_field_validation_mandatory_fill=-1;
-static int hf_tn3270_field_validation_trigger=-1;
-static int hf_tn3270_format_group=-1;
-static int hf_tn3270_format_name=-1;
-static int hf_tn3270_fov=-1;
-static int hf_tn3270_fpc=-1;
-static int hf_tn3270_hilite=-1;
-static int hf_tn3270_h_length=-1;
-static int hf_tn3270_h_offset=-1;
-static int hf_tn3270_horizon=-1;
-static int hf_tn3270_h_sequence=-1;
-static int hf_tn3270_hw=-1;
-static int hf_tn3270_interval=-1;
-static int hf_tn3270_limin=-1;
-static int hf_tn3270_limout=-1;
-static int hf_tn3270_lines=-1;
-static int hf_tn3270_load_color_command=-1;
-static int hf_tn3270_load_format_storage_flags1=-1;
-static int hf_tn3270_load_format_storage_flags2=-1;
-static int hf_tn3270_load_format_storage_format_data=-1;
-static int hf_tn3270_load_format_storage_localname=-1;
-static int hf_tn3270_load_format_storage_operand=-1;
-static int hf_tn3270_load_line_type_command=-1;
-static int hf_tn3270_lvl=-1;
-static int hf_tn3270_mode=-1;
-static int hf_tn3270_msr_ind_mask=-1;
-static int hf_tn3270_msr_ind_value=-1;
-static int hf_tn3270_msr_state_mask=-1;
-static int hf_tn3270_msr_state_value=-1;
-static int hf_tn3270_msr_type=-1;
-static int hf_tn3270_ap_na=-1;
-static int hf_tn3270_ap_m=-1;
-static int hf_tn3270_ap_vertical_scrolling=-1;
-static int hf_tn3270_ap_horizontal_scrolling=-1;
-static int hf_tn3270_ap_apres1=-1;
-static int hf_tn3270_ap_apa=-1;
-static int hf_tn3270_ap_pp=-1;
-static int hf_tn3270_ap_lc=-1;
-static int hf_tn3270_ap_mp=-1;
-static int hf_tn3270_ap_apres2=-1;
-static int hf_tn3270_c_np=-1;
-static int hf_tn3270_number_of_attributes=-1;
-static int hf_tn3270_object_control_flags=-1;
-static int hf_tn3270_object_type=-1;
-static int hf_tn3270_operation_type=-1;
-static int hf_tn3270_order_code=-1;
-static int hf_tn3270_outbound_text_header_hdr=-1;
-static int hf_tn3270_outbound_text_header_lhdr=-1;
-static int hf_tn3270_pages=-1;
-static int hf_tn3270_partition_command=-1;
-static int hf_tn3270_partition_cv=-1;
-static int hf_tn3270_partition_cw=-1;
-static int hf_tn3270_partition_flags=-1;
-static int hf_tn3270_partition_height=-1;
-static int hf_tn3270_partition_hv=-1;
-static int hf_tn3270_partition_id=-1;
-static int hf_tn3270_partition_ph=-1;
-static int hf_tn3270_partition_pw=-1;
-static int hf_tn3270_partition_res=-1;
-static int hf_tn3270_partition_rs=-1;
-static int hf_tn3270_partition_rv=-1;
-static int hf_tn3270_partition_rw=-1;
-static int hf_tn3270_partition_uom=-1;
-static int hf_tn3270_partition_width=-1;
-static int hf_tn3270_partition_wv=-1;
-static int hf_tn3270_prime=-1;
-static int hf_tn3270_printer_flags=-1;
-static int hf_tn3270_ps_char=-1;
-static int hf_tn3270_ps_flags=-1;
-static int hf_tn3270_ps_lcid=-1;
-static int hf_tn3270_ps_rws=-1;
-static int hf_tn3270_query_reply_alphanumeric_flags=-1;
-static int hf_tn3270_recovery_data_flags=-1;
-static int hf_tn3270_reply_mode_attr_list=-1;
-static int hf_tn3270_reqtyp=-1;
-static int hf_tn3270_resbyte=-1;
-static int hf_tn3270_resbytes=-1;
-static int hf_tn3270_res_twobytes=-1;
-static int hf_tn3270_rw=-1;
-static int hf_tn3270_save_or_restore_format_flags=-1;
-static int hf_tn3270_scs_data=-1;
-static int hf_tn3270_sf_outbound_id=-1;
-static int hf_tn3270_sf_inbound_id=-1;
-static int hf_tn3270_sf_inbound_outbound_id=-1;
-static int hf_tn3270_sf_length=-1;
-static int hf_tn3270_sf_query_reply=-1;
-static int hf_tn3270_sld=-1;
-static int hf_tn3270_spd=-1;
-static int hf_tn3270_start_line=-1;
-static int hf_tn3270_start_page=-1;
-static int hf_tn3270_stop_address=-1;
-static int hf_tn3270_transparency=-1;
-static int hf_tn3270_type_1_text_outbound_data=-1;
-static int hf_tn3270_vertical=-1;
-static int hf_tn3270_v_length=-1;
-static int hf_tn3270_v_offset=-1;
-static int hf_tn3270_v_sequence=-1;
-static int hf_tn3270_wcc_nop=-1;
-static int hf_tn3270_wcc_reset=-1;
-static int hf_tn3270_wcc_printer1=-1;
-static int hf_tn3270_wcc_printer2=-1;
-static int hf_tn3270_wcc_start_printer=-1;
-static int hf_tn3270_wcc_sound_alarm=-1;
-static int hf_tn3270_wcc_keyboard_restore=-1;
-static int hf_tn3270_wcc_reset_mdt=-1;
-static int hf_tn3270_ww=-1;
-static int hf_tn3270_tn3270e_data_type=-1;
-static int hf_tn3270_tn3270e_request_flag=-1;
-static int hf_tn3270_tn3270e_response_flag_3270_SCS=-1;
-static int hf_tn3270_tn3270e_seq_number=-1;
-static int hf_tn3270_tn3270e_header_data=-1;
-static int hf_tn3270_ua_cell_units=-1;
-static int hf_tn3270_ua_characters=-1;
-static int hf_tn3270_ua_hard_copy=-1;
-static int hf_tn3270_ua_page_printer=-1;
-static int hf_tn3270_ua_reserved1=-1;
-static int hf_tn3270_ua_reserved2=-1;
-static int hf_tn3270_ua_variable_cells=-1;
-static int hf_tn3270_usable_area_flags1=-1;
-static int hf_tn3270_usable_area_flags2=-1;
-static int hf_tn3270_ua_addressing=-1;
-static int hf_tn3270_ua_width_cells_pels=-1;
-static int hf_tn3270_ua_height_cells_pels=-1;
-static int hf_tn3270_ua_uom_cells_pels=-1;
-static int hf_tn3270_ua_xr=-1;
-static int hf_tn3270_ua_yr=-1;
-static int hf_tn3270_ua_aw=-1;
-static int hf_tn3270_ua_ah=-1;
-static int hf_tn3270_ua_buffsz=-1;
-static int hf_tn3270_ua_xmin=-1;
-static int hf_tn3270_ua_ymin=-1;
-static int hf_tn3270_ua_xmax=-1;
-static int hf_tn3270_ua_ymax=-1;
-static int hf_tn3270_cs_ge=-1;
-static int hf_tn3270_cs_mi=-1;
-static int hf_tn3270_cs_lps=-1;
-static int hf_tn3270_cs_lpse=-1;
-static int hf_tn3270_cs_ms=-1;
-static int hf_tn3270_cs_ch2=-1;
-static int hf_tn3270_cs_gf=-1;
-static int hf_tn3270_cs_res=-1;
-static int hf_tn3270_cs_res2=-1;
-static int hf_tn3270_cs_pscs=-1;
-static int hf_tn3270_cs_res3=-1;
-static int hf_tn3270_cs_cf=-1;
-static int hf_tn3270_cs_form_type1=-1;
-static int hf_tn3270_cs_form_type2=-1;
-static int hf_tn3270_cs_form_type3=-1;
-static int hf_tn3270_cs_form_type4=-1;
-static int hf_tn3270_cs_form_type5=-1;
-static int hf_tn3270_cs_form_type6=-1;
-static int hf_tn3270_cs_form_type8=-1;
-static int hf_tn3270_cs_ds_load=-1;
-static int hf_tn3270_cs_ds_triple=-1;
-static int hf_tn3270_cs_ds_char=-1;
-static int hf_tn3270_cs_ds_cb=-1;
-static int hf_tn3270_character_sets_flags1=-1;
-static int hf_tn3270_character_sets_flags2=-1;
-static int hf_tn3270_sdw=-1;
-static int hf_tn3270_sdh=-1;
-static int hf_tn3270_form=-1;
-static int hf_tn3270_formres=-1;
-static int hf_tn3270_cs_dl=-1;
-static int hf_tn3270_cs_descriptor_set=-1;
-static int hf_tn3270_cs_descriptor_flags=-1;
-static int hf_tn3270_lcid=-1;
-static int hf_tn3270_sw=-1;
-static int hf_tn3270_sh=-1;
-static int hf_tn3270_ssubsn=-1;
-static int hf_tn3270_esubsn=-1;
-static int hf_tn3270_ccsgid=-1;
-static int hf_tn3270_ccsid=-1;
-static int hf_tn3270_c_prtblk=-1;
-static int hf_tn3270_h_np=-1;
-static int hf_tn3270_h_vi=-1;
-static int hf_tn3270_h_ai=-1;
-static int hf_tn3270_ddm_flags=-1;
-static int hf_tn3270_ddm_limin=-1;
-static int hf_tn3270_ddm_limout=-1;
-static int hf_tn3270_ddm_nss=-1;
-static int hf_tn3270_ddm_ddmss=-1;
-static int hf_tn3270_rpq_device=-1;
-static int hf_tn3270_rpq_mid=-1;
-static int hf_tn3270_rpq_rpql=-1;
-static int hf_tn3270_rpq_name=-1;
-static int hf_tn3270_ip_flags=-1;
-static int hf_tn3270_ipdd_wd=-1;
-static int hf_tn3270_ipdd_hd=-1;
-static int hf_tn3270_ipdd_wa=-1;
-static int hf_tn3270_ipdd_ha=-1;
-static int hf_tn3270_ippd_dpbs=-1;
-static int hf_tn3270_ippd_apbs=-1;
-static int hf_tn3270_ipccd_wcd=-1;
-static int hf_tn3270_ipccd_hcd=-1;
-static int hf_tn3270_ipccd_wca=-1;
-static int hf_tn3270_ipccd_hca=-1;
-static int hf_tn3270_dc_dir_flags=-1;
-static int hf_tn3270_dc_both=-1;
-static int hf_tn3270_dc_from_device=-1;
-static int hf_tn3270_dc_to_device=-1;
-static int hf_tn3270_oem_dsref=-1;
-static int hf_tn3270_oem_dtype=-1;
-static int hf_tn3270_oem_uname=-1;
-static int hf_tn3270_sdp_daid=-1;
-static int hf_tn3270_oem_sdp_ll_limin=-1;
-static int hf_tn3270_oem_sdp_ll_limout=-1;
-static int hf_tn3270_oem_sdp_pclk_vers=-1;
-static int hf_tn3270_null=-1;
-static int hf_tn3270_unknown_data=-1;
-static int hf_tn3270_ds_default_sfid=-1;
-static int hf_tn3270_ds_sfid=-1;
-static int hf_tn3270_asia_sdp_sosi_soset=-1;
-static int hf_tn3270_asia_sdp_ic_func=-1;
-static int hf_tn3270_ccc=-1;
-static int hf_tn3270_ccc_coding=-1;
-static int hf_tn3270_ccc_printout=-1;
-static int hf_tn3270_ccc_start_print=-1;
-static int hf_tn3270_ccc_sound_alarm=-1;
-static int hf_tn3270_ccc_copytype=-1;
-static int hf_tn3270_msr_user=-1;
-static int hf_tn3270_msr_locked=-1;
-static int hf_tn3270_msr_auto=-1;
-static int hf_tn3270_msr_ind1=-1;
-static int hf_tn3270_msr_ind2=-1;
-static int hf_tn3270_spc_sdp_ot=-1;
-static int hf_tn3270_spc_sdp_ob=-1;
-static int hf_tn3270_spc_sdp_ol=-1;
-static int hf_tn3270_spc_sdp_or=-1;
-static int hf_tn3270_spc_sdp_eucflags=-1;
-static int hf_tn3270_spc_sdp_srepc=-1;
-static int hf_tn3270_srf_fpcb=-1;
-static int hf_tn3270_sdp_statcode=-1;
-static int hf_tn3270_sdp_excode=-1;
-static int hf_tn3270_sdp_ngl=-1;
-static int hf_tn3270_sdp_nml=-1;
-static int hf_tn3270_sdp_nlml=-1;
-static int hf_tn3270_sdp_stor=-1;
-static int hf_tn3270_ap_cm=-1;
-static int hf_tn3270_ap_ro=-1;
-static int hf_tn3270_ap_co=-1;
-static int hf_tn3270_ap_fo=-1;
-static int hf_tn3270_sdp_ln=-1;
-static int hf_tn3270_sdp_id=-1;
-static int hf_tn3270_db_cavdef=-1;
-static int hf_tn3270_db_cidef=-1;
-static int hf_tn3270_dia_flags=-1;
-static int hf_tn3270_dia_limin=-1;
-static int hf_tn3270_dia_limout=-1;
-static int hf_tn3270_dia_nfs=-1;
-static int hf_tn3270_dia_diafs=-1;
-static int hf_tn3270_dia_diafn=-1;
-static int hf_tn3270_fo_flags=-1;
-static int hf_tn3270_fo_vpos=-1;
-static int hf_tn3270_fo_hpos=-1;
-static int hf_tn3270_fo_hpos0=-1;
-static int hf_tn3270_fo_hpos1=-1;
-static int hf_tn3270_fsad_flags=-1;
-static int hf_tn3270_fsad_limin=-1;
-static int hf_tn3270_fsad_limout=-1;
-static int hf_tn3270_fsad_size=-1;
-static int hf_tn3270_ibm_flags=-1;
-static int hf_tn3270_ibm_limin=-1;
-static int hf_tn3270_ibm_limout=-1;
-static int hf_tn3270_ibm_type=-1;
-static int hf_tn3270_msr_nd=-1;
-static int hf_tn3270_pft_flags=-1;
-static int hf_tn3270_pft_tmo=-1;
-static int hf_tn3270_pft_bmo=-1;
-static int hf_tn3270_ioca_limin=-1;
-static int hf_tn3270_ioca_limout=-1;
-static int hf_tn3270_ioca_type=-1;
-static int hf_tn3270_pc_vo_thickness=-1;
-static int hf_tn3270_pdds_ssid=-1;
-static int hf_tn3270_pdds_refid=-1;
-static int hf_tn3270_srf_fpcbl=-1;
-static int hf_tn3270_spc_epc_flags=-1;
-static int hf_tn3270_sp_spid=-1;
-static int hf_tn3270_sp_size=-1;
-static int hf_tn3270_sp_space=-1;
-static int hf_tn3270_sp_objlist=-1;
-static int hf_tn3270_tp_nt=-1;
-static int hf_tn3270_tp_m=-1;
-static int hf_tn3270_tp_flags=-1;
-static int hf_tn3270_tp_ntt=-1;
-static int hf_tn3270_tp_tlist=-1;
-static int hf_tn3270_t_np=-1;
-static int hf_tn3270_t_vi=-1;
-static int hf_tn3270_t_ai=-1;
-static int hf_tn3270_3270_tranlim=-1;
-
-static gint ett_tn3270 =-1;
-static gint ett_sf =-1;
-static gint ett_tn3270_field_attribute =-1;
-static gint ett_tn3270_field_validation =-1;
-static gint ett_tn3270_wcc =-1;
-static gint ett_tn3270_usable_area_flags1 =-1;
-static gint ett_tn3270_usable_area_flags2 =-1;
-static gint ett_tn3270_query_reply_alphanumeric_flags=-1;
-static gint ett_tn3270_character_sets_flags1=-1;
-static gint ett_tn3270_character_sets_flags2=-1;
-static gint ett_tn3270_character_sets_form=-1;
-static gint ett_tn3270_cs_descriptor_flags=-1;
-static gint ett_tn3270_color_flags=-1;
-static gint ett_tn3270_dc_dir_flags=-1;
-static gint ett_tn3270_ccc=-1;
-static gint ett_tn3270_msr_state_mask=-1;
-static gint ett_tn3270_query_list=-1;
-
-static tn3270_conv_info_t *tn3270_info_items;
-
-static guint8 ROWS, COLS, MAXROWS, MAXCOLS;
-
-static gint dissect_orders_and_data(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset);
+static int proto_tn3270 = -1;
+
+static int hf_tn3270_fa_display = -1;
+static int hf_tn3270_fa_graphic_convert = -1;
+static int hf_tn3270_fa_modified = -1;
+static int hf_tn3270_fa_numeric = -1;
+static int hf_tn3270_fa_protected = -1;
+static int hf_tn3270_fa_reserved = -1;
+static int hf_tn3270_field_attribute = -1;
+static int hf_tn3270_aid = -1;
+static int hf_tn3270_all_character_attributes = -1;
+static int hf_tn3270_attribute_type = -1;
+static int hf_tn3270_begin_end_flags1 = -1;
+static int hf_tn3270_begin_end_flags2 = -1;
+static int hf_tn3270_bsc = -1;
+static int hf_tn3270_buffer_address = -1;
+static int hf_tn3270_c_cav = -1;
+static int hf_tn3270_cc = -1;
+static int hf_tn3270_character_code = -1;
+static int hf_tn3270_character_set = -1;
+static int hf_tn3270_charset = -1;
+static int hf_tn3270_checkpoint = -1;
+static int hf_tn3270_c_ci = -1;
+static int hf_tn3270_c_offset = -1;
+static int hf_tn3270_color = -1;
+static int hf_tn3270_color_command = -1;
+static int hf_tn3270_color_flags = -1;
+static int hf_tn3270_command_code = -1;
+static int hf_tn3270_cro = -1;
+static int hf_tn3270_c_scsoff = -1;
+static int hf_tn3270_c_seqoff = -1;
+static int hf_tn3270_c_sequence = -1;
+static int hf_tn3270_cursor_address = -1;
+static int hf_tn3270_cw = -1;
+static int hf_tn3270_data_chain_fields = -1;
+static int hf_tn3270_data_chain_group = -1;
+static int hf_tn3270_data_chain_inbound_control = -1;
+static int hf_tn3270_destination_or_origin_flags_input_control = -1;
+static int hf_tn3270_destination_or_origin_doid = -1;
+static int hf_tn3270_erase_flags = -1;
+static int hf_tn3270_exception_or_status_flags = -1;
+static int hf_tn3270_extended_highlighting = -1;
+static int hf_tn3270_extended_ps_color = -1;
+static int hf_tn3270_extended_ps_echar = -1;
+static int hf_tn3270_extended_ps_flags = -1;
+static int hf_tn3270_extended_ps_length = -1;
+static int hf_tn3270_extended_ps_lw = -1;
+static int hf_tn3270_extended_ps_lh = -1;
+static int hf_tn3270_extended_ps_nh = -1;
+static int hf_tn3270_extended_ps_nw = -1;
+static int hf_tn3270_extended_ps_res = -1;
+static int hf_tn3270_extended_ps_stsubs = -1;
+static int hf_tn3270_extended_ps_subsn = -1;
+static int hf_tn3270_featl = -1;
+static int hf_tn3270_feats = -1;
+static int hf_tn3270_field_data = -1;
+static int hf_tn3270_field_outlining = -1;
+static int hf_tn3270_field_validation_mandatory_entry = -1;
+static int hf_tn3270_field_validation_mandatory_fill = -1;
+static int hf_tn3270_field_validation_trigger = -1;
+static int hf_tn3270_format_group = -1;
+static int hf_tn3270_format_name = -1;
+static int hf_tn3270_fov = -1;
+static int hf_tn3270_fpc = -1;
+static int hf_tn3270_hilite = -1;
+static int hf_tn3270_h_length = -1;
+static int hf_tn3270_h_offset = -1;
+static int hf_tn3270_horizon = -1;
+static int hf_tn3270_h_sequence = -1;
+static int hf_tn3270_hw = -1;
+static int hf_tn3270_interval = -1;
+static int hf_tn3270_limin = -1;
+static int hf_tn3270_limout = -1;
+static int hf_tn3270_lines = -1;
+static int hf_tn3270_load_color_command = -1;
+static int hf_tn3270_load_format_storage_flags1 = -1;
+static int hf_tn3270_load_format_storage_flags2 = -1;
+static int hf_tn3270_load_format_storage_format_data = -1;
+static int hf_tn3270_load_format_storage_localname = -1;
+static int hf_tn3270_load_format_storage_operand = -1;
+static int hf_tn3270_load_line_type_command = -1;
+static int hf_tn3270_lvl = -1;
+static int hf_tn3270_mode = -1;
+static int hf_tn3270_msr_ind_mask = -1;
+static int hf_tn3270_msr_ind_value = -1;
+static int hf_tn3270_msr_state_mask = -1;
+static int hf_tn3270_msr_state_value = -1;
+static int hf_tn3270_msr_type = -1;
+static int hf_tn3270_ap_na = -1;
+static int hf_tn3270_ap_m = -1;
+static int hf_tn3270_ap_vertical_scrolling = -1;
+static int hf_tn3270_ap_horizontal_scrolling = -1;
+static int hf_tn3270_ap_apres1 = -1;
+static int hf_tn3270_ap_apa = -1;
+static int hf_tn3270_ap_pp = -1;
+static int hf_tn3270_ap_lc = -1;
+static int hf_tn3270_ap_mp = -1;
+static int hf_tn3270_ap_apres2 = -1;
+static int hf_tn3270_c_np = -1;
+static int hf_tn3270_number_of_attributes = -1;
+static int hf_tn3270_object_control_flags = -1;
+static int hf_tn3270_object_type = -1;
+static int hf_tn3270_order_code = -1;
+static int hf_tn3270_outbound_text_header_operation_type = -1;
+static int hf_tn3270_outbound_text_header_hdr = -1;
+static int hf_tn3270_outbound_text_header_lhdr = -1;
+static int hf_tn3270_pages = -1;
+static int hf_tn3270_partition_command = -1;
+static int hf_tn3270_partition_cv = -1;
+static int hf_tn3270_partition_cw = -1;
+static int hf_tn3270_partition_flags = -1;
+static int hf_tn3270_partition_height = -1;
+static int hf_tn3270_partition_hv = -1;
+static int hf_tn3270_partition_id = -1;
+static int hf_tn3270_partition_ph = -1;
+static int hf_tn3270_partition_pw = -1;
+static int hf_tn3270_partition_res = -1;
+static int hf_tn3270_partition_rs = -1;
+static int hf_tn3270_partition_rv = -1;
+static int hf_tn3270_partition_rw = -1;
+static int hf_tn3270_partition_uom = -1;
+static int hf_tn3270_partition_width = -1;
+static int hf_tn3270_partition_wv = -1;
+static int hf_tn3270_prime = -1;
+static int hf_tn3270_printer_flags = -1;
+static int hf_tn3270_ps_char = -1;
+static int hf_tn3270_ps_flags = -1;
+static int hf_tn3270_ps_lcid = -1;
+static int hf_tn3270_ps_rws = -1;
+static int hf_tn3270_query_reply_alphanumeric_flags = -1;
+static int hf_tn3270_recovery_data_flags = -1;
+static int hf_tn3270_reply_mode_attr_list = -1;
+static int hf_tn3270_read_partition_operation_type = -1;
+static int hf_tn3270_read_partition_reqtyp = -1;
+static int hf_tn3270_resbyte = -1;
+static int hf_tn3270_resbytes = -1;
+static int hf_tn3270_res_twobytes = -1;
+static int hf_tn3270_rw = -1;
+static int hf_tn3270_save_or_restore_format_flags = -1;
+static int hf_tn3270_scs_data = -1;
+static int hf_tn3270_sf_single_byte_id = -1;
+static int hf_tn3270_sf_double_byte_id = -1;
+static int hf_tn3270_sf_length = -1;
+static int hf_tn3270_sf_query_reply = -1;
+static int hf_tn3270_sld = -1;
+static int hf_tn3270_spd = -1;
+static int hf_tn3270_start_line = -1;
+static int hf_tn3270_start_page = -1;
+static int hf_tn3270_stop_address = -1;
+static int hf_tn3270_transparency = -1;
+static int hf_tn3270_type_1_text_outbound_data = -1;
+static int hf_tn3270_vertical = -1;
+static int hf_tn3270_v_length = -1;
+static int hf_tn3270_v_offset = -1;
+static int hf_tn3270_v_sequence = -1;
+static int hf_tn3270_wcc_nop = -1;
+static int hf_tn3270_wcc_reset = -1;
+static int hf_tn3270_wcc_printer1 = -1;
+static int hf_tn3270_wcc_printer2 = -1;
+static int hf_tn3270_wcc_start_printer = -1;
+static int hf_tn3270_wcc_sound_alarm = -1;
+static int hf_tn3270_wcc_keyboard_restore = -1;
+static int hf_tn3270_wcc_reset_mdt = -1;
+static int hf_tn3270_ww = -1;
+static int hf_tn3270_tn3270e_data_type = -1;
+static int hf_tn3270_tn3270e_request_flag = -1;
+static int hf_tn3270_tn3270e_response_flag_3270_SCS = -1;
+static int hf_tn3270_tn3270e_response_flag_response = -1;
+static int hf_tn3270_tn3270e_response_flag_unused = -1;
+static int hf_tn3270_tn3270e_seq_number = -1;
+static int hf_tn3270_tn3270e_header_data = -1;
+static int hf_tn3270_ua_cell_units = -1;
+static int hf_tn3270_ua_characters = -1;
+static int hf_tn3270_ua_hard_copy = -1;
+static int hf_tn3270_ua_page_printer = -1;
+static int hf_tn3270_ua_reserved1 = -1;
+static int hf_tn3270_ua_reserved2 = -1;
+static int hf_tn3270_ua_variable_cells = -1;
+static int hf_tn3270_usable_area_flags1 = -1;
+static int hf_tn3270_usable_area_flags2 = -1;
+static int hf_tn3270_ua_addressing = -1;
+static int hf_tn3270_ua_width_cells_pels = -1;
+static int hf_tn3270_ua_height_cells_pels = -1;
+static int hf_tn3270_ua_uom_cells_pels = -1;
+static int hf_tn3270_ua_xr = -1;
+static int hf_tn3270_ua_yr = -1;
+static int hf_tn3270_ua_aw = -1;
+static int hf_tn3270_ua_ah = -1;
+static int hf_tn3270_ua_buffsz = -1;
+static int hf_tn3270_ua_xmin = -1;
+static int hf_tn3270_ua_ymin = -1;
+static int hf_tn3270_ua_xmax = -1;
+static int hf_tn3270_ua_ymax = -1;
+static int hf_tn3270_cs_ge = -1;
+static int hf_tn3270_cs_mi = -1;
+static int hf_tn3270_cs_lps = -1;
+static int hf_tn3270_cs_lpse = -1;
+static int hf_tn3270_cs_ms = -1;
+static int hf_tn3270_cs_ch2 = -1;
+static int hf_tn3270_cs_gf = -1;
+static int hf_tn3270_cs_res = -1;
+static int hf_tn3270_cs_res2 = -1;
+static int hf_tn3270_cs_pscs = -1;
+static int hf_tn3270_cs_res3 = -1;
+static int hf_tn3270_cs_cf = -1;
+static int hf_tn3270_cs_form_type1 = -1;
+static int hf_tn3270_cs_form_type2 = -1;
+static int hf_tn3270_cs_form_type3 = -1;
+static int hf_tn3270_cs_form_type4 = -1;
+static int hf_tn3270_cs_form_type5 = -1;
+static int hf_tn3270_cs_form_type6 = -1;
+static int hf_tn3270_cs_form_type8 = -1;
+static int hf_tn3270_cs_ds_load = -1;
+static int hf_tn3270_cs_ds_triple = -1;
+static int hf_tn3270_cs_ds_char = -1;
+static int hf_tn3270_cs_ds_cb = -1;
+static int hf_tn3270_character_sets_flags1 = -1;
+static int hf_tn3270_character_sets_flags2 = -1;
+static int hf_tn3270_sdw = -1;
+static int hf_tn3270_sdh = -1;
+static int hf_tn3270_form = -1;
+static int hf_tn3270_formres = -1;
+static int hf_tn3270_cs_dl = -1;
+static int hf_tn3270_cs_descriptor_set = -1;
+static int hf_tn3270_cs_descriptor_flags = -1;
+static int hf_tn3270_lcid = -1;
+static int hf_tn3270_sw = -1;
+static int hf_tn3270_sh = -1;
+static int hf_tn3270_ssubsn = -1;
+static int hf_tn3270_esubsn = -1;
+static int hf_tn3270_ccsgid = -1;
+static int hf_tn3270_ccsid = -1;
+static int hf_tn3270_c_prtblk = -1;
+static int hf_tn3270_h_np = -1;
+static int hf_tn3270_h_vi = -1;
+static int hf_tn3270_h_ai = -1;
+static int hf_tn3270_ddm_flags = -1;
+static int hf_tn3270_ddm_limin = -1;
+static int hf_tn3270_ddm_limout = -1;
+static int hf_tn3270_ddm_nss = -1;
+static int hf_tn3270_ddm_ddmss = -1;
+static int hf_tn3270_rpq_device = -1;
+static int hf_tn3270_rpq_mid = -1;
+static int hf_tn3270_rpq_rpql = -1;
+static int hf_tn3270_rpq_name = -1;
+static int hf_tn3270_ip_flags = -1;
+static int hf_tn3270_ipdd_wd = -1;
+static int hf_tn3270_ipdd_hd = -1;
+static int hf_tn3270_ipdd_wa = -1;
+static int hf_tn3270_ipdd_ha = -1;
+static int hf_tn3270_ippd_dpbs = -1;
+static int hf_tn3270_ippd_apbs = -1;
+static int hf_tn3270_ipccd_wcd = -1;
+static int hf_tn3270_ipccd_hcd = -1;
+static int hf_tn3270_ipccd_wca = -1;
+static int hf_tn3270_ipccd_hca = -1;
+static int hf_tn3270_dc_dir = -1;
+static int hf_tn3270_oem_dsref = -1;
+static int hf_tn3270_oem_dtype = -1;
+static int hf_tn3270_oem_uname = -1;
+static int hf_tn3270_sdp_daid = -1;
+static int hf_tn3270_oem_sdp_ll_limin = -1;
+static int hf_tn3270_oem_sdp_ll_limout = -1;
+static int hf_tn3270_oem_sdp_pclk_vers = -1;
+static int hf_tn3270_null = -1;
+static int hf_tn3270_unknown_data = -1;
+static int hf_tn3270_ds_default_sfid = -1;
+static int hf_tn3270_ds_sfid = -1;
+static int hf_tn3270_asia_sdp_sosi_soset = -1;
+static int hf_tn3270_asia_sdp_ic_func = -1;
+static int hf_tn3270_ccc = -1;
+static int hf_tn3270_ccc_coding = -1;
+static int hf_tn3270_ccc_printout = -1;
+static int hf_tn3270_ccc_start_print = -1;
+static int hf_tn3270_ccc_sound_alarm = -1;
+static int hf_tn3270_ccc_copytype = -1;
+static int hf_tn3270_msr_user = -1;
+static int hf_tn3270_msr_locked = -1;
+static int hf_tn3270_msr_auto = -1;
+static int hf_tn3270_msr_ind1 = -1;
+static int hf_tn3270_msr_ind2 = -1;
+static int hf_tn3270_spc_sdp_ot = -1;
+static int hf_tn3270_spc_sdp_ob = -1;
+static int hf_tn3270_spc_sdp_ol = -1;
+static int hf_tn3270_spc_sdp_or = -1;
+static int hf_tn3270_spc_sdp_eucflags = -1;
+static int hf_tn3270_spc_sdp_srepc = -1;
+static int hf_tn3270_srf_fpcb = -1;
+static int hf_tn3270_sdp_statcode = -1;
+static int hf_tn3270_sdp_excode = -1;
+static int hf_tn3270_sdp_ngl = -1;
+static int hf_tn3270_sdp_nml = -1;
+static int hf_tn3270_sdp_nlml = -1;
+static int hf_tn3270_sdp_stor = -1;
+static int hf_tn3270_ap_cm = -1;
+static int hf_tn3270_ap_ro = -1;
+static int hf_tn3270_ap_co = -1;
+static int hf_tn3270_ap_fo = -1;
+static int hf_tn3270_sdp_ln = -1;
+static int hf_tn3270_sdp_id = -1;
+static int hf_tn3270_db_cavdef = -1;
+static int hf_tn3270_db_cidef = -1;
+static int hf_tn3270_dia_flags = -1;
+static int hf_tn3270_dia_limin = -1;
+static int hf_tn3270_dia_limout = -1;
+static int hf_tn3270_dia_nfs = -1;
+static int hf_tn3270_dia_diafs = -1;
+static int hf_tn3270_dia_diafn = -1;
+static int hf_tn3270_fo_flags = -1;
+static int hf_tn3270_fo_vpos = -1;
+static int hf_tn3270_fo_hpos = -1;
+static int hf_tn3270_fo_hpos0 = -1;
+static int hf_tn3270_fo_hpos1 = -1;
+static int hf_tn3270_fsad_flags = -1;
+static int hf_tn3270_fsad_limin = -1;
+static int hf_tn3270_fsad_limout = -1;
+static int hf_tn3270_fsad_size = -1;
+static int hf_tn3270_ibm_flags = -1;
+static int hf_tn3270_ibm_limin = -1;
+static int hf_tn3270_ibm_limout = -1;
+static int hf_tn3270_ibm_type = -1;
+static int hf_tn3270_msr_nd = -1;
+static int hf_tn3270_pft_flags = -1;
+static int hf_tn3270_pft_tmo = -1;
+static int hf_tn3270_pft_bmo = -1;
+static int hf_tn3270_ioca_limin = -1;
+static int hf_tn3270_ioca_limout = -1;
+static int hf_tn3270_ioca_type = -1;
+static int hf_tn3270_pc_vo_thickness = -1;
+static int hf_tn3270_pdds_ssid = -1;
+static int hf_tn3270_pdds_refid = -1;
+static int hf_tn3270_srf_fpcbl = -1;
+static int hf_tn3270_spc_epc_flags = -1;
+static int hf_tn3270_sp_spid = -1;
+static int hf_tn3270_sp_size = -1;
+static int hf_tn3270_sp_space = -1;
+static int hf_tn3270_sp_objlist = -1;
+static int hf_tn3270_tp_nt = -1;
+static int hf_tn3270_tp_m = -1;
+static int hf_tn3270_tp_flags = -1;
+static int hf_tn3270_tp_ntt = -1;
+static int hf_tn3270_tp_tlist = -1;
+static int hf_tn3270_t_np = -1;
+static int hf_tn3270_t_vi = -1;
+static int hf_tn3270_t_ai = -1;
+static int hf_tn3270_3270_tranlim = -1;
+
+static gint ett_tn3270 = -1;
+static gint ett_tn3270e_hdr = -1;
+static gint ett_sf = -1;
+static gint ett_tn3270_field_attribute = -1;
+static gint ett_tn3270_field_validation = -1;
+static gint ett_tn3270_wcc = -1;
+static gint ett_tn3270_usable_area_flags1 = -1;
+static gint ett_tn3270_usable_area_flags2 = -1;
+static gint ett_tn3270_query_reply_alphanumeric_flags = -1;
+static gint ett_tn3270_character_sets_flags1 = -1;
+static gint ett_tn3270_character_sets_flags2 = -1;
+static gint ett_tn3270_character_sets_form = -1;
+static gint ett_tn3270_cs_descriptor_flags = -1;
+static gint ett_tn3270_color_flags = -1;
+static gint ett_tn3270_ccc = -1;
+static gint ett_tn3270_msr_state_mask = -1;
+static gint ett_tn3270_data_chain_fields = -1;
+static gint ett_tn3270_query_list = -1;
+
+static gint dissect_orders_and_data(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset, tn3270_conv_info_t *tn3270_info);
+static gint dissect_buffer_address(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset, gint hf, tn3270_conv_info_t *tn3270_info);
typedef struct hf_items {
- int hf;
- gint bitmask_ett;
- int length;
- const int **bitmask;
- gint encoding;
+ int *hf_idx_p;
+ gint *bitmask_ett_idx_p;
+ gint length;
+ const gint **bitmask;
+ const gint encoding;
} hf_items;
/* Utility Functions */
static gint
tn3270_add_hf_items(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- hf_items *fields)
+ const hf_items *fields)
{
- int start=offset;
- int i;
+ gint start = offset;
+ gint i;
- for (i = 0; fields[i].hf; ++i) {
+ for (i = 0; fields[i].hf_idx_p; i++) {
if (fields[i].bitmask == 0) {
proto_tree_add_item(tn3270_tree,
- fields[i].hf,
- tvb, offset,
- fields[i].length,
- fields[i].encoding);
- } else {
- proto_tree_add_bitmask(tn3270_tree, tvb, offset, fields[i].hf,
- fields[i].bitmask_ett, fields[i].bitmask, ENC_BIG_ENDIAN);
+ *fields[i].hf_idx_p,
+ tvb, offset,
+ fields[i].length,
+ fields[i].encoding);
+ }
+ else {
+ proto_tree_add_bitmask(tn3270_tree, tvb, offset, *fields[i].hf_idx_p,
+ *fields[i].bitmask_ett_idx_p, fields[i].bitmask, ENC_BIG_ENDIAN);
}
- offset+=fields[i].length;
+ offset += fields[i].length;
}
+
return (offset - start);
}
+/*
+ * offset; tvb offset of next byte of data (first byte of unprocessed data);
+ * start: tvb offset of beginning of data;
+ * data_length: total length of data;
+ */
static gint
dissect_unknown_data(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset, gint start,
- gint sf_length)
+ gint data_length)
{
- int len_left;
+ gint len_left;
- len_left = (sf_length - 4) - (offset - start);
+ len_left = (data_length) - (offset - start);
if (len_left > 0) {
proto_tree_add_item(tn3270_tree, hf_tn3270_unknown_data,
- tvb, offset, len_left,
- ENC_NA);
+ tvb, offset, len_left,
+ ENC_NA);
return len_left;
}
+
return 0;
}
static gint
add_data_until_next_order_code(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
{
- int datalen = 0;
- gint order_code = 0;
- int done = 0;
-
- while (tvb_offset_exists(tvb, (offset + datalen)) && !done) {
- order_code = tvb_get_guint8(tvb, (offset + datalen));
- switch (order_code) {
- case SF:
- /*dummy*/
- case SFE:
- case SA:
- case MF:
- case IC:
- case PT:
- case RA:
- case EUA:
- case GE:
- case SBA:
- done = 1;
- break;
- default:
- datalen++;
- break;
- }
+ gint datalen = 0;
+ gint length_remaining = tvb_reported_length_remaining(tvb, offset);
+
+ /* XXX: From 4.3:
+ * "All order codes have an EBCDIC value in the range of hexadecimal 00
+ * (X'00') through hexadecimal 3F (X'3F'). Order codes with values in this
+ * range but not defined in this chapter are rejected."
+ * However, the code (as originally committed) treats a '0' order code as data.
+ */
+
+ while (datalen < length_remaining) {
+ guint order_code;
+ order_code = tvb_get_guint8(tvb, offset + datalen);
+ if ((order_code > 0) && (order_code <= OC_MAX))
+ break;
+ datalen += 1;
}
- if (datalen) {
+ if (datalen > 0) {
+ /* XXX: Need to handle "Format Control Orders" ?? */
proto_tree_add_item(tn3270_tree, hf_tn3270_field_data, tvb, offset,
datalen, ENC_EBCDIC|ENC_NA);
}
+
return datalen;
}
static gint
dissect_query_reply_resbytes(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
-
+ gint start = offset;
- hf_items fields[] = {
- { hf_tn3270_res_twobytes, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_res_twobytes, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
fields);
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
-static int
+static gint
dissect_wcc(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
{
- static const int *wcc_fields[] = {
- &hf_tn3270_wcc_nop,
- &hf_tn3270_wcc_reset,
- &hf_tn3270_wcc_printer1,
- &hf_tn3270_wcc_printer2,
- &hf_tn3270_wcc_start_printer,
- &hf_tn3270_wcc_sound_alarm,
- &hf_tn3270_wcc_keyboard_restore,
- &hf_tn3270_wcc_reset_mdt,
- NULL
+ static const gint *wcc_fields[] = {
+ &hf_tn3270_wcc_nop,
+ &hf_tn3270_wcc_reset,
+ &hf_tn3270_wcc_printer1,
+ &hf_tn3270_wcc_printer2,
+ &hf_tn3270_wcc_start_printer,
+ &hf_tn3270_wcc_sound_alarm,
+ &hf_tn3270_wcc_keyboard_restore,
+ &hf_tn3270_wcc_reset_mdt,
+ NULL
};
/* Qualifier and DeviceType */
proto_tree_add_bitmask_text(tn3270_tree, tvb, offset, 1, "Write Control Character: ", "None",
- ett_tn3270_wcc, wcc_fields, ENC_BIG_ENDIAN, 0);
+ ett_tn3270_wcc, wcc_fields, ENC_BIG_ENDIAN, 0);
return 1;
}
@@ -1677,19 +1763,20 @@ dissect_wcc(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
static gint
dissect_3270_field_validation(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
{
- int start = offset;
+ gint start = offset;
- static const int *byte[] = {
+ static const gint *byte[] = {
&hf_tn3270_field_validation_mandatory_fill,
&hf_tn3270_field_validation_mandatory_entry,
&hf_tn3270_field_validation_trigger,
NULL
- };
+ };
proto_tree_add_bitmask_text(tn3270_tree, tvb, 1, 1, "Field Validation: ",
"None", ett_tn3270_field_validation, byte, ENC_BIG_ENDIAN, 0);
- offset++;
+ offset += 1;
+
return (offset - start);
}
@@ -1697,24 +1784,24 @@ dissect_3270_field_validation(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offse
static gint
dissect_3270_field_attribute(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
{
- int start = offset;
+ gint start = offset;
- static const int *byte[] = {
- &hf_tn3270_fa_display,
- &hf_tn3270_fa_graphic_convert1,
- &hf_tn3270_fa_graphic_convert2,
- &hf_tn3270_fa_modified,
- &hf_tn3270_fa_numeric,
+ static const gint *byte[] = {
+ &hf_tn3270_fa_graphic_convert,
&hf_tn3270_fa_protected,
+ &hf_tn3270_fa_numeric,
+ &hf_tn3270_fa_display,
&hf_tn3270_fa_reserved,
+ &hf_tn3270_fa_modified,
NULL
- };
+ };
proto_tree_add_bitmask(tn3270_tree, tvb, offset, hf_tn3270_field_attribute,
- ett_tn3270_field_attribute, byte, ENC_BIG_ENDIAN);
+ ett_tn3270_field_attribute, byte, ENC_BIG_ENDIAN);
+
+ offset += 1;
- offset++;
return (offset - start);
}
@@ -1722,23 +1809,22 @@ dissect_3270_field_attribute(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset
static gint
dissect_ccc(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
{
- int start = offset;
+ gint start = offset;
- static const int *byte[] = {
+ static const gint *byte[] = {
&hf_tn3270_ccc_coding,
&hf_tn3270_ccc_printout,
&hf_tn3270_ccc_start_print,
&hf_tn3270_ccc_sound_alarm,
&hf_tn3270_ccc_copytype,
NULL
- };
-
-
+ };
proto_tree_add_bitmask(tn3270_tree, tvb, offset, hf_tn3270_ccc,
- ett_tn3270_ccc, byte, ENC_BIG_ENDIAN);
+ ett_tn3270_ccc, byte, ENC_BIG_ENDIAN);
+
+ offset += 1;
- offset++;
return (offset - start);
}
@@ -1754,58 +1840,58 @@ dissect_ccc(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
/* 5.6 Begin/End of File - Search for BEGIN_OR_END_OF_FILE */
/* 5.7 Create Partition */
static gint
-dissect_create_partition(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset, gint sf_length)
+dissect_create_partition(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset, gint sf_body_length)
{
- int start=offset;
+ gint start = offset;
- hf_items fields[] = {
- { hf_tn3270_partition_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_uom, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_flags, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_height, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_width, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_rv, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_cv, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_hv, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_wv, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_rw, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_cw, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_rs, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_res, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_pw, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_ph, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_partition_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_uom, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_flags, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_height, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_width, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_rv, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_cv, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_hv, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_wv, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_rw, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_cw, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_rs, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_res, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_pw, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_ph, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
fields);
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
-/* 5.7 Create Partition - Search for CREATE_PARTITION */
+/* 5.7 Create Partition - Search for CREATE_PARTITION */
/* 5.8 Destroy Partition - Search for DESTROY_PARTITION */
-/* 5.9 Erase/Reset - Search for ERASE_OR_RESET */
+/* 5.9 Erase/Reset - Search for ERASE_OR_RESET */
/* 5.10 Load Color Table - Search for LOAD_COLOR_TABLE */
/* 5.11 Load Format Storage */
static gint
-dissect_load_format_storage(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset, gint sf_length)
+dissect_load_format_storage(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset, gint sf_body_length)
{
- int start=offset;
- int operand;
-
- hf_items fields[] = {
- { hf_tn3270_load_format_storage_flags1, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_load_format_storage_flags2, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_load_format_storage_operand, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_load_format_storage_localname, 0, 8, 0, ENC_EBCDIC|ENC_NA },
- { hf_tn3270_format_group, 0, 6, 0, ENC_EBCDIC|ENC_NA },
- { hf_tn3270_format_name, 0, 16, 0, ENC_EBCDIC|ENC_NA },
- { 0, 0, 0, 0, 0 }
+ gint start = offset;
+ gint operand;
+
+ static const hf_items fields[] = {
+ { &hf_tn3270_load_format_storage_flags1, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_load_format_storage_flags2, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_load_format_storage_operand, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_load_format_storage_localname, NULL, 8, NULL, ENC_EBCDIC|ENC_NA },
+ { &hf_tn3270_format_group, NULL, 6, NULL, ENC_EBCDIC|ENC_NA },
+ { &hf_tn3270_format_name, NULL, 16, NULL, ENC_EBCDIC|ENC_NA },
+ { NULL, NULL, 0, NULL, 0 }
};
operand = tvb_get_guint8(tvb, offset+2);
@@ -1813,14 +1899,14 @@ dissect_load_format_storage(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
fields);
- if (operand == ADD) {
- int fmtln = ((sf_length - 4) - (offset - start));
+ if (operand == LOAD_FORMAT_STORAGE_OPERAND_ADD) {
+ gint fmtln = sf_body_length - (offset - start);
proto_tree_add_item(tn3270_tree, hf_tn3270_load_format_storage_format_data,
tvb, offset, fmtln, ENC_EBCDIC|ENC_NA);
- offset+=fmtln;
+ offset += fmtln;
}
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -1829,33 +1915,34 @@ dissect_load_format_storage(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
/* 5.13 Load Programmed Symbols (Load PS) */
static gint
-dissect_load_programmed_symbols(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset, gint sf_length)
+dissect_load_programmed_symbols(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset, gint sf_body_length)
{
- int start=offset, i;
+ gint start = offset, i;
gint8 flags;
gint8 extended_ps_length;
- hf_items ps_fields[] = {
- { hf_tn3270_ps_flags, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ps_lcid, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ps_char, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ps_rws, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+
+ static const hf_items ps_fields[] = {
+ { &hf_tn3270_ps_flags, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ps_lcid, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ps_char, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ps_rws, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- hf_items extended_ps_fields[] = {
- { hf_tn3270_extended_ps_lw, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_extended_ps_lh, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_extended_ps_subsn, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_extended_ps_color, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_extended_ps_stsubs, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_extended_ps_echar, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_extended_ps_nw, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_extended_ps_nh, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_extended_ps_res, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items extended_ps_fields[] = {
+ { &hf_tn3270_extended_ps_lw, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_extended_ps_lh, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_extended_ps_subsn, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_extended_ps_color, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_extended_ps_stsubs, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_extended_ps_echar, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_extended_ps_nw, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_extended_ps_nh, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_extended_ps_res, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- flags = tvb_get_guint8(tvb, offset);
+ flags = tvb_get_guint8(tvb, offset);
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
ps_fields);
@@ -1865,57 +1952,60 @@ dissect_load_programmed_symbols(proto_tree *tn3270_tree, tvbuff_t *tvb, gint off
}
extended_ps_length = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(tn3270_tree, hf_tn3270_extended_ps_length,
- tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
+ proto_tree_add_item(tn3270_tree, hf_tn3270_extended_ps_length,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
proto_tree_add_item(tn3270_tree, hf_tn3270_extended_ps_flags,
- tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
for (i = 0; i < extended_ps_length; ++i) {
- proto_tree_add_item(tn3270_tree, extended_ps_fields[i].hf,
- tvb, offset, extended_ps_fields[i].length,
- extended_ps_fields[i].encoding);
- offset+=extended_ps_fields[i].length;
+ if (extended_ps_fields[i].hf_idx_p == NULL) {
+ break; /* Malformed (Bad value for extended_ps_length) ! ToDo: 'expert' */
+ }
+ proto_tree_add_item(tn3270_tree, *extended_ps_fields[i].hf_idx_p,
+ tvb, offset, extended_ps_fields[i].length,
+ extended_ps_fields[i].encoding);
+ offset += extended_ps_fields[i].length;
}
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
/* 5.14 Modify Partition) */
static gint
-dissect_modify_partition(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset, gint sf_length)
+dissect_modify_partition(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset, gint sf_body_length)
{
- int start=offset;
+ gint start = offset;
- hf_items fields[] = {
- { hf_tn3270_resbyte, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_resbyte, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_flags, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_resbyte, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_resbytes, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_rv, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_cv, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_hv, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_wv, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_rw, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_cw, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_rs, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_res, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_pw, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_partition_ph, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_resbyte, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_resbyte, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_flags, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_resbyte, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_resbytes, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_rv, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_cv, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_hv, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_wv, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_rw, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_cw, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_rs, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_res, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_pw, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_partition_ph, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
fields);
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -1923,24 +2013,24 @@ dissect_modify_partition(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset, gi
/* 5.15 Outbound Text Header */
static gint
dissect_outbound_text_header(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
+ gint start = offset;
gint16 hdr_length;
- hf_items outbound_text_header_fields1[] = {
- { hf_tn3270_partition_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_operation_type, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items outbound_text_header_fields1[] = {
+ { &hf_tn3270_partition_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_outbound_text_header_operation_type, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- hf_items outbound_text_header_fields2[] = {
- { hf_tn3270_resbyte, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_resbyte, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_lvl, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_cro, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_cc, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items outbound_text_header_fields2[] = {
+ { &hf_tn3270_resbyte, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_resbyte, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_lvl, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_cro, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_cc, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
@@ -1953,13 +2043,13 @@ dissect_outbound_text_header(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset
proto_tree_add_item(tn3270_tree, hf_tn3270_outbound_text_header_lhdr,
tvb, offset, 2, ENC_BIG_ENDIAN);
- offset+=2;
+ offset += 2;
proto_tree_add_item(tn3270_tree, hf_tn3270_outbound_text_header_hdr,
tvb, offset, hdr_length, ENC_BIG_ENDIAN);
- offset+=hdr_length;
+ offset += hdr_length;
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -1967,57 +2057,58 @@ dissect_outbound_text_header(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset
/* 5.16 Outbound 3270DS */
static gint
dissect_outbound_3270ds(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ tn3270_conv_info_t *tn3270_info, gint sf_body_length )
{
- int start=offset;
- int cmd;
+ gint start = offset;
+ gint cmd;
proto_tree_add_item(tn3270_tree,
- hf_tn3270_partition_id,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ hf_tn3270_partition_id,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
cmd = tvb_get_guint8(tvb, offset);
proto_tree_add_item(tn3270_tree,
- hf_tn3270_partition_command,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ hf_tn3270_partition_command,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
- /* FIXME: the spec is ambiguous at best about what to expect here,
- need a live sample to validate. */
switch (cmd) {
- case SNA_BSC:
+ case CC_SNA_BSC:
+ /* FIXME: the spec is ambiguous at best about what to expect here,
+ need a live sample to validate. */
offset += dissect_ccc(tn3270_tree, tvb, offset);
proto_tree_add_item(tn3270_tree,
- hf_tn3270_bsc,
- tvb, offset,
- 2,
- ENC_BIG_ENDIAN);
- offset+=2;
+ hf_tn3270_bsc,
+ tvb, offset,
+ 2,
+ ENC_BIG_ENDIAN);
+ offset += 2;
break;
- case W:
- case EW:
- case EWA:
- case EAU:
- case SNA_W:
- case SNA_EW:
- case SNA_EWA:
- case SNA_EAU:
+ /* XXX: are "local" commands valid for Outbound 3270DS ? */
+ case CC_LCL_W:
+ case CC_LCL_EW:
+ case CC_LCL_EWA:
+ case CC_LCL_EAU:
+ case CC_RMT_W:
+ case CC_RMT_EW:
+ case CC_RMT_EWA:
+ case CC_RMT_EAU:
/* WCC */
- if ((offset - start) < (sf_length - 3))
+ if ((offset - start) < sf_body_length)
offset += dissect_wcc(tn3270_tree, tvb, offset);
- if ((offset - start) < (sf_length - 3))
- offset += dissect_orders_and_data(tn3270_tree, tvb, offset);
+ if ((offset - start) < sf_body_length)
+ offset += dissect_orders_and_data(tn3270_tree, tvb, offset, tn3270_info);
break;
default:
break;
}
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -2025,126 +2116,130 @@ dissect_outbound_3270ds(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
/* 5.17 Present Absolute Format */
static gint
dissect_present_absolute_format(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
+ gint start = offset;
proto_tree_add_item(tn3270_tree,
- hf_tn3270_partition_id,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ hf_tn3270_partition_id,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
proto_tree_add_item(tn3270_tree,
- hf_tn3270_fpc,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ hf_tn3270_fpc,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
- offset+=dissect_wcc(tn3270_tree, tvb, offset);
+ offset += dissect_wcc(tn3270_tree, tvb, offset);
proto_tree_add_item(tn3270_tree,
- hf_tn3270_format_name,
- tvb, offset,
- (sf_length - 5),
- ENC_EBCDIC|ENC_NA);
- offset+=(sf_length - 5);
+ hf_tn3270_format_name,
+ tvb, offset,
+ sf_body_length - (offset - start),
+ ENC_EBCDIC|ENC_NA);
+ offset += (sf_body_length - (offset - start));
+
return (offset - start);
}
/* 5.18 Present Relative Format */
static gint
dissect_present_relative_format(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
+ gint start = offset;
proto_tree_add_item(tn3270_tree,
- hf_tn3270_partition_id,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ hf_tn3270_partition_id,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
proto_tree_add_item(tn3270_tree,
- hf_tn3270_fov,
- tvb, offset,
- 2,
- ENC_BIG_ENDIAN);
- offset+=2;
+ hf_tn3270_fov,
+ tvb, offset,
+ 2,
+ ENC_BIG_ENDIAN);
+ offset += 2;
proto_tree_add_item(tn3270_tree,
- hf_tn3270_fpc,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ hf_tn3270_fpc,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
offset += dissect_wcc(tn3270_tree, tvb, offset);
proto_tree_add_item(tn3270_tree,
- hf_tn3270_format_name,
- tvb, offset,
- (sf_length - 7),
- ENC_EBCDIC|ENC_NA);
- offset+=(sf_length - 7);
+ hf_tn3270_format_name,
+ tvb, offset,
+ sf_body_length - (offset - start),
+ ENC_EBCDIC|ENC_NA);
+ offset += (sf_body_length - (offset - start));
+
return (offset - start);
}
/* 5.19 Read Partition */
static gint
dissect_read_partition(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
- int type;
- proto_item *ti;
+ gint start = offset;
+ gint type;
+ proto_item *pi;
proto_tree *query_list_tree;
- gint qcode_list_len, i;
+ gint qcode_list_len, i;
proto_tree_add_item(tn3270_tree,
- hf_tn3270_partition_id,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ hf_tn3270_partition_id,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
type = tvb_get_guint8(tvb, offset);
if (type == 0xFF) { /* Partition ID of 0xFF is escaped with another 0xFF */
- offset++;
+ /* XXX: removing tn3270 IAX escapes should be handled in the telnet dissector ! */
+ offset += 1;
type = tvb_get_guint8(tvb, offset);
}
proto_tree_add_item(tn3270_tree,
- hf_tn3270_operation_type,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ hf_tn3270_read_partition_operation_type,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
- if (type == 0x03) { /* 'Query List' */
+ if (type == READ_PARTITION_OPTYPE_QUERY_LIST) { /* 'Query List' */
proto_tree_add_item(tn3270_tree,
- hf_tn3270_reqtyp,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
-
- if (sf_length > 6) {
- qcode_list_len = sf_length - 6;
- ti = proto_tree_add_text(tn3270_tree, tvb, offset, qcode_list_len,
+ hf_tn3270_read_partition_reqtyp,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
+
+ if (sf_body_length > (offset - start)) {
+ qcode_list_len = sf_body_length - (offset - start);
+ pi = proto_tree_add_text(tn3270_tree, tvb, offset, qcode_list_len,
"Query List");
- query_list_tree = proto_item_add_subtree(ti, ett_tn3270_query_list);
+ query_list_tree = proto_item_add_subtree(pi, ett_tn3270_query_list);
for (i = 0; i < qcode_list_len; i++) {
proto_tree_add_item(query_list_tree,
hf_tn3270_sf_query_reply,
tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
+ offset += 1;
}
}
}
+
return (offset - start);
}
@@ -2154,78 +2249,78 @@ dissect_read_partition(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
/*5.22 Restart */
static gint
dissect_restart(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
+ gint start = offset;
proto_tree_add_item(tn3270_tree,
- hf_tn3270_resbyte,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ hf_tn3270_resbyte,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
proto_tree_add_item(tn3270_tree,
- hf_tn3270_start_page,
- tvb, offset,
- 2,
- ENC_BIG_ENDIAN);
- offset+=2;
+ hf_tn3270_start_page,
+ tvb, offset,
+ 2,
+ ENC_BIG_ENDIAN);
+ offset += 2;
proto_tree_add_item(tn3270_tree,
- hf_tn3270_start_line,
- tvb, offset,
- 2,
- ENC_BIG_ENDIAN);
- offset+=2;
+ hf_tn3270_start_line,
+ tvb, offset,
+ 2,
+ ENC_BIG_ENDIAN);
+ offset += 2;
proto_tree_add_item(tn3270_tree,
- hf_tn3270_scs_data,
- tvb, offset,
- (sf_length - 9),
- ENC_NA);
- offset+=(sf_length - 9);
+ hf_tn3270_scs_data,
+ tvb, offset,
+ sf_body_length - (offset - start),
+ ENC_NA);
+ offset += (sf_body_length - (offset - start));
return (offset - start);
}
-/* 5.23 SCS Data - Search for SCS_DATA */
-/* 5.24 Color Table - Search for COLOR_TABLE */
+/* 5.23 SCS Data - Search for SCS_DATA */
+/* 5.24 Color Table - Search for COLOR_TABLE */
/* 5.25 Format Group - Search for FORMAT_GROUP */
/* 5.26 Set Checkpoint Interval - Search for CHECKPOINT_INTERVAL */
/* 5.27 Set MSR Control */
static gint
dissect_set_msr_control(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
-
- static const int *byte[] = {
- &hf_tn3270_msr_user,
- &hf_tn3270_msr_locked,
- &hf_tn3270_msr_auto,
- &hf_tn3270_msr_ind1,
- &hf_tn3270_msr_ind2,
- NULL
+ gint start = offset;
+
+ static const gint *byte[] = {
+ &hf_tn3270_msr_user,
+ &hf_tn3270_msr_locked,
+ &hf_tn3270_msr_auto,
+ &hf_tn3270_msr_ind1,
+ &hf_tn3270_msr_ind2,
+ NULL
};
- hf_items outbound_text_header_fields[] = {
- { hf_tn3270_partition_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_msr_type, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_msr_state_mask, ett_tn3270_msr_state_mask, 1, byte, 0 },
- { hf_tn3270_msr_state_value, 1, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_msr_ind_mask, 1, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_msr_ind_value, 1, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items outbound_text_header_fields[] = {
+ { &hf_tn3270_partition_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_msr_type, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_msr_state_mask, &ett_tn3270_msr_state_mask, 1, byte, 0 },
+ { &hf_tn3270_msr_state_value, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_msr_ind_mask, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_msr_ind_value, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
outbound_text_header_fields);
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -2235,32 +2330,32 @@ static gint
dissect_set_partition_characteristics_sd_parms(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
{
- int start=offset;
+ gint start = offset;
guint16 sdp;
- hf_items sdp1[] = {
- { hf_tn3270_sdp_ln, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_spc_sdp_ot, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_spc_sdp_ob, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_spc_sdp_ol, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_spc_sdp_or, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items sdp1[] = {
+ { &hf_tn3270_sdp_ln, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_spc_sdp_ot, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_spc_sdp_ob, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_spc_sdp_ol, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_spc_sdp_or, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- hf_items sdp2[] = {
- { hf_tn3270_sdp_ln, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_spc_sdp_eucflags, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items sdp2[] = {
+ { &hf_tn3270_sdp_ln, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_spc_sdp_eucflags, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- hf_items sdp3[] = {
- { hf_tn3270_sdp_ln, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_spc_sdp_eucflags, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_spc_sdp_eucflags, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items sdp3[] = {
+ { &hf_tn3270_sdp_ln, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_spc_sdp_eucflags, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_spc_sdp_eucflags, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
@@ -2289,16 +2384,16 @@ dissect_set_partition_characteristics_sd_parms(proto_tree *tn3270_tree, tvbuff_t
static gint
dissect_set_partition_characteristics(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
- int i;
+ gint start = offset;
+ gint i;
- hf_items fields[] = {
- { hf_tn3270_partition_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_resbytes, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_partition_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_resbytes, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
@@ -2307,11 +2402,11 @@ dissect_set_partition_characteristics(proto_tree *tn3270_tree, tvbuff_t *tvb, gi
for (i = 0; i < 3; i++) {
offset += dissect_set_partition_characteristics_sd_parms(tn3270_tree, tvb, offset);
- if (!tvb_length_remaining(tvb, offset))
+ if (tvb_reported_length_remaining(tvb, offset) <= 0)
break;
}
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -2321,14 +2416,14 @@ static gint
dissect_set_printer_characteristics_sd_parms(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
{
- int start=offset;
+ gint start = offset;
guint16 sdp;
- hf_items sdp1[] = {
- { hf_tn3270_sdp_ln, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_spc_sdp_srepc, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items sdp1[] = {
+ { &hf_tn3270_sdp_ln, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_spc_sdp_srepc, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
sdp = tvb_get_ntohs(tvb, offset);
@@ -2348,16 +2443,16 @@ dissect_set_printer_characteristics_sd_parms(proto_tree *tn3270_tree, tvbuff_t *
static gint
dissect_set_printer_characteristics(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
- int i;
+ gint start = offset;
+ gint i;
- hf_items fields[] = {
- { hf_tn3270_printer_flags, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_resbyte, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_printer_flags, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_resbyte, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
@@ -2365,11 +2460,11 @@ dissect_set_printer_characteristics(proto_tree *tn3270_tree, tvbuff_t *tvb, gint
for (i = 0; i < 3; i++) {
offset += dissect_set_printer_characteristics_sd_parms(tn3270_tree, tvb, offset);
- if (!tvb_length_remaining(tvb, offset))
+ if (tvb_reported_length_remaining(tvb, offset) <= 0)
break;
}
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -2378,16 +2473,16 @@ dissect_set_printer_characteristics(proto_tree *tn3270_tree, tvbuff_t *tvb, gint
/* 5.30 Set Reply Mode */
static gint
dissect_set_reply_mode(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
- int type;
+ gint start = offset;
+ gint type;
gint i;
- hf_items fields[] = {
- { hf_tn3270_partition_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_mode, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_partition_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_mode, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
type = tvb_get_guint8(tvb, offset+1);
@@ -2396,13 +2491,14 @@ dissect_set_reply_mode(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
fields);
if (type == 0x02) { /* 'Query List' */
- for (i = 5; i < sf_length; i++) {
+ for (i = 0; i < (sf_body_length-(offset-start)); i++) {
proto_tree_add_item(tn3270_tree,
hf_tn3270_reply_mode_attr_list,
tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
}
}
+
return (offset - start);
}
@@ -2411,53 +2507,81 @@ dissect_set_reply_mode(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
5.32 Type 1 Text Outbound */
static gint
dissect_type_1_text(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
+ gint start = offset;
- hf_items fields[] = {
- { hf_tn3270_partition_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_resbytes, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_partition_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_resbytes, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
fields);
proto_tree_add_item(tn3270_tree,
- hf_tn3270_field_data,
- tvb, offset,
- (sf_length - 7),
- ENC_EBCDIC|ENC_NA);
- offset+=(sf_length - 7);
+ hf_tn3270_field_data,
+ tvb, offset,
+ sf_body_length - (offset - start),
+ ENC_EBCDIC|ENC_NA);
+ offset += (sf_body_length - (offset - start));
+
+ return (offset - start);
+}
+
+/* 5.34 Data Chain */
+static guint
+dissect_data_chain(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
+ gint sf_body_length)
+{
+ gint start = offset;
+
+ static const gint *byte[] = {
+ &hf_tn3270_data_chain_group,
+ &hf_tn3270_data_chain_inbound_control,
+ NULL
+ };
+
+ static const hf_items data_chain_fields[] = {
+ { &hf_tn3270_data_chain_fields, &ett_tn3270_data_chain_fields, 1, byte, 0 },
+ { &hf_tn3270_resbyte, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
+ };
+
+ offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
+ data_chain_fields);
+
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
+
return (offset - start);
}
-/* 5.34 Data Chain - Search for DATA_CHAIN*/
/* 5.35 Destination/Origin - Search for DESTINATION_OR_ORIGIN*/
/* 5.36 Object Control */
static gint
dissect_object_control(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
+ gint start = offset;
- hf_items fields[] = {
- { hf_tn3270_partition_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_object_control_flags, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_object_type, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_partition_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_object_control_flags, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_object_type, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
fields);
proto_tree_add_item(tn3270_tree,
- hf_tn3270_type_1_text_outbound_data,
- tvb, offset,
- (sf_length - 7),
- ENC_NA);
- offset+=(sf_length - 7);
+ hf_tn3270_type_1_text_outbound_data,
+ tvb, offset,
+ sf_body_length - (offset - start),
+ ENC_NA);
+ offset += (sf_body_length - (offset - start));
+
return (offset - start);
}
@@ -2468,20 +2592,20 @@ dissect_object_control(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
/* 5.40 Save/Restore Format */
static gint
dissect_save_or_restore_format(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
+ gint start = offset;
hf_items fields[] = {
- { hf_tn3270_save_or_restore_format_flags, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_srf_fpcb, 0, (sf_length-5), 0, ENC_NA },
- { 0, 0, 0, 0, 0 }
+ { &hf_tn3270_save_or_restore_format_flags, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_srf_fpcb, NULL, sf_body_length-1, NULL, ENC_NA },
+ { NULL, NULL, 0, NULL, 0 }
};
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
fields);
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -2497,48 +2621,48 @@ static gint
dissect_exception_or_status_sd_parms(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
{
- int start=offset;
+ gint start = offset;
guint16 sdp;
- hf_items sdp1[] = {
- { hf_tn3270_sdp_ln, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_resbyte, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_excode, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items sdp1[] = {
+ { &hf_tn3270_sdp_ln, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_resbyte, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_excode, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- hf_items sdp2[] = {
- { hf_tn3270_sdp_ln, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_statcode, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items sdp2[] = {
+ { &hf_tn3270_sdp_ln, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_statcode, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- hf_items sdp3[] = {
- { hf_tn3270_sdp_ln, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_format_group, 0, 16, 0, ENC_EBCDIC|ENC_NA },
- { hf_tn3270_format_name, 0, 16, 0, ENC_EBCDIC|ENC_NA },
- { 0, 0, 0, 0, 0 }
+ static const hf_items sdp3[] = {
+ { &hf_tn3270_sdp_ln, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_format_group, NULL, 16, NULL, ENC_EBCDIC|ENC_NA },
+ { &hf_tn3270_format_name, NULL, 16, NULL, ENC_EBCDIC|ENC_NA },
+ { NULL, NULL, 0, NULL, 0 }
};
- hf_items sdp4[] = {
- { hf_tn3270_sdp_ln, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_ngl, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_nml, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_nlml, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_stor, 0, 4, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items sdp4[] = {
+ { &hf_tn3270_sdp_ln, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_ngl, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_nml, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_nlml, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_stor, NULL, 4, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- hf_items sdp5[] = {
- { hf_tn3270_sdp_ln, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_format_group, 0, 16, 0, ENC_EBCDIC|ENC_NA },
- { hf_tn3270_sdp_nml, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items sdp5[] = {
+ { &hf_tn3270_sdp_ln, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_format_group, NULL, 16, NULL, ENC_EBCDIC|ENC_NA },
+ { &hf_tn3270_sdp_nml, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
sdp = tvb_get_ntohs(tvb, offset);
@@ -2559,6 +2683,7 @@ dissect_exception_or_status_sd_parms(proto_tree *tn3270_tree, tvbuff_t *tvb, gin
case 0x0C04: /*Format status*/
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
sdp4);
+ break;
case 0x1405: /*Group status*/
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
sdp5);
@@ -2573,15 +2698,15 @@ dissect_exception_or_status_sd_parms(proto_tree *tn3270_tree, tvbuff_t *tvb, gin
static gint
dissect_exception_or_status(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset, i;
+ gint start = offset, i;
- hf_items fields[] = {
- { hf_tn3270_partition_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_exception_or_status_flags, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_resbyte, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_partition_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_exception_or_status_flags, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_resbyte, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
@@ -2589,11 +2714,11 @@ dissect_exception_or_status(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
for (i = 0; i < 5; i++) {
offset += dissect_exception_or_status_sd_parms(tn3270_tree, tvb, offset);
- if (!tvb_length_remaining(tvb, offset))
+ if (tvb_reported_length_remaining(tvb, offset) <= 0)
break;
}
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -2601,31 +2726,31 @@ dissect_exception_or_status(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
/* 6.3 Inbound Text Header */
static gint
dissect_inbound_text_header(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
-
- hf_items outbound_text_header_fields[] = {
- { hf_tn3270_partition_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_aid, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_resbyte, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_resbyte, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_resbyte, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_lvl, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_cro, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_cc, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_rw, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_cw, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_hw, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ww, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ gint start = offset;
+
+ static const hf_items outbound_text_header_fields[] = {
+ { &hf_tn3270_partition_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_aid, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_resbyte, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_resbyte, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_resbyte, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_lvl, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_cro, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_cc, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_rw, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_cw, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_hw, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ww, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
outbound_text_header_fields);
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -2633,21 +2758,24 @@ dissect_inbound_text_header(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
/* 6.4 Inbound 3270DS */
static gint
dissect_inbound_3270ds(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ tn3270_conv_info_t *tn3270_info, gint sf_body_length)
{
- int start=offset;
+ gint start = offset;
- hf_items fields[] = {
- { hf_tn3270_partition_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_aid, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_cursor_x, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_cursor_y, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_field_data, 0, (sf_length - 8), 0, ENC_EBCDIC|ENC_NA },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields1[] = {
+ { &hf_tn3270_partition_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_aid, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
- fields);
+ hf_items fields2[] = {
+ { &hf_tn3270_field_data, NULL, sf_body_length - 4, NULL, ENC_EBCDIC|ENC_NA },
+ { NULL, NULL, 0, NULL, 0 }
+ };
+
+ offset += tn3270_add_hf_items(tn3270_tree, tvb, offset, fields1);
+ offset += dissect_buffer_address(tn3270_tree, tvb, offset, hf_tn3270_cursor_address, tn3270_info);
+ offset += tn3270_add_hf_items(tn3270_tree, tvb, offset, fields2);
return (offset - start);
}
@@ -2657,43 +2785,43 @@ dissect_inbound_3270ds(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
/* 6.5 Recovery Data */
static gint
dissect_recovery_data(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
+ gint start = offset;
- hf_items fields[] = {
- { hf_tn3270_resbyte, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_recovery_data_flags, 1, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sld, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_charset, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_vertical, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_v_offset, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_v_sequence, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_v_length, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_spd, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_horizon, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_h_offset, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_h_sequence, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_h_length, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_color, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_hilite, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_pages, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_lines, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_checkpoint, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_c_offset, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_c_sequence, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_c_seqoff, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_c_scsoff, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_prime, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_resbyte, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_recovery_data_flags, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sld, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_charset, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_vertical, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_v_offset, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_v_sequence, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_v_length, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_spd, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_horizon, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_h_offset, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_h_sequence, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_h_length, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_color, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_hilite, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_pages, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_lines, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_checkpoint, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_c_offset, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_c_sequence, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_c_seqoff, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_c_scsoff, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_prime, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
fields);
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -2706,17 +2834,17 @@ static gint
dissect_query_reply_alphanumeric_sd_parms(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
{
- int start=offset;
+ gint start = offset;
guint16 sdp;
- hf_items sdp1[] = {
- { hf_tn3270_sdp_ln, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ap_cm, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ap_ro, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ap_co, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ap_fo, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items sdp1[] = {
+ { &hf_tn3270_sdp_ln, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ap_cm, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ap_ro, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ap_co, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ap_fo, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
@@ -2737,11 +2865,11 @@ dissect_query_reply_alphanumeric_sd_parms(proto_tree *tn3270_tree, tvbuff_t *tvb
static gint
dissect_query_reply_alphanumeric(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
+ gint start = offset;
- static const int *byte[] = {
+ static const gint *byte[] = {
&hf_tn3270_ap_vertical_scrolling,
&hf_tn3270_ap_horizontal_scrolling,
&hf_tn3270_ap_apres1,
@@ -2751,13 +2879,13 @@ dissect_query_reply_alphanumeric(proto_tree *tn3270_tree, tvbuff_t *tvb, gint of
&hf_tn3270_ap_mp,
&hf_tn3270_ap_apres2,
NULL
- };
+ };
- hf_items fields[] = {
- { hf_tn3270_ap_na, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ap_m, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_query_reply_alphanumeric_flags, ett_tn3270_query_reply_alphanumeric_flags, 1, byte, 0 },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_ap_na, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ap_m, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_query_reply_alphanumeric_flags, &ett_tn3270_query_reply_alphanumeric_flags, 1, byte, 0 },
+ { NULL, NULL, 0, NULL, 0 }
};
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
@@ -2765,7 +2893,7 @@ dissect_query_reply_alphanumeric(proto_tree *tn3270_tree, tvbuff_t *tvb, gint of
offset += dissect_query_reply_alphanumeric_sd_parms(tn3270_tree, tvb, offset);
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -2776,12 +2904,12 @@ dissect_query_reply_alphanumeric(proto_tree *tn3270_tree, tvbuff_t *tvb, gint of
/* 6.12 Query Reply (Character Sets) */
static gint
dissect_query_reply_character_sets(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
- int flagbyte1, flagbyte2;
+ gint start = offset;
+ gint flagbyte1, flagbyte2;
- static const int *byte1[] = {
+ static const gint *byte1[] = {
&hf_tn3270_cs_ge,
&hf_tn3270_cs_mi,
&hf_tn3270_cs_lps,
@@ -2791,17 +2919,17 @@ dissect_query_reply_character_sets(proto_tree *tn3270_tree, tvbuff_t *tvb, gint
&hf_tn3270_cs_gf,
&hf_tn3270_cs_res,
NULL
- };
+ };
- static const int *byte2[] = {
+ static const gint *byte2[] = {
&hf_tn3270_cs_res2,
&hf_tn3270_cs_pscs,
&hf_tn3270_cs_res3,
&hf_tn3270_cs_cf,
NULL
- };
+ };
- static const int *byte3[] = {
+ static const gint *byte3[] = {
&hf_tn3270_cs_form_type1,
&hf_tn3270_cs_form_type2,
&hf_tn3270_cs_form_type3,
@@ -2810,57 +2938,57 @@ dissect_query_reply_character_sets(proto_tree *tn3270_tree, tvbuff_t *tvb, gint
&hf_tn3270_cs_form_type6,
&hf_tn3270_cs_form_type8,
NULL
- };
+ };
- static const int *byte4[] = {
+ static const gint *byte4[] = {
&hf_tn3270_cs_ds_load,
&hf_tn3270_cs_ds_triple,
&hf_tn3270_cs_ds_char,
&hf_tn3270_cs_ds_cb,
NULL
- };
+ };
- hf_items fields[] = {
- { hf_tn3270_character_sets_flags1, ett_tn3270_character_sets_flags1, 1, byte1, 0 },
- { hf_tn3270_character_sets_flags2, ett_tn3270_character_sets_flags2, 1, byte2, 0 },
- { hf_tn3270_sdw, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdh, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_form, ett_tn3270_character_sets_form, 1, byte3, 0 },
- { hf_tn3270_formres, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_formres, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_formres, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_cs_dl, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_character_sets_flags1, &ett_tn3270_character_sets_flags1, 1, byte1, 0 },
+ { &hf_tn3270_character_sets_flags2, &ett_tn3270_character_sets_flags2, 1, byte2, 0 },
+ { &hf_tn3270_sdw, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdh, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_form, &ett_tn3270_character_sets_form, 1, byte3, 0 },
+ { &hf_tn3270_formres, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_formres, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_formres, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_cs_dl, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- hf_items descriptors[] = {
- { hf_tn3270_cs_descriptor_set, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_cs_descriptor_flags, ett_tn3270_cs_descriptor_flags, 1, byte4, 0 },
- { hf_tn3270_lcid, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items descriptors[] = {
+ { &hf_tn3270_cs_descriptor_set, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_cs_descriptor_flags, &ett_tn3270_cs_descriptor_flags, 1, byte4, 0 },
+ { &hf_tn3270_lcid, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- hf_items sw_sh[] = {
- { hf_tn3270_sw, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sh, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items sw_sh[] = {
+ { &hf_tn3270_sw, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sh, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- hf_items subsn[] = {
- { hf_tn3270_ssubsn, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_esubsn, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items subsn[] = {
+ { &hf_tn3270_ssubsn, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_esubsn, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- hf_items gf[] = {
- { hf_tn3270_ccsgid, 0, 4, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items gf[] = {
+ { &hf_tn3270_ccsgid, NULL, 4, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- hf_items cf[] = {
- { hf_tn3270_ccsid, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items cf[] = {
+ { &hf_tn3270_ccsid, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
flagbyte1 = tvb_get_guint8(tvb, offset);
@@ -2869,32 +2997,32 @@ dissect_query_reply_character_sets(proto_tree *tn3270_tree, tvbuff_t *tvb, gint
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
fields);
- while ((offset - start) < (sf_length - 4)) {
+ while ((offset - start) < sf_body_length) {
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
- descriptors);
+ descriptors);
- if (flagbyte1 & MS) {
+ if (flagbyte1 & QR_CS_MS) {
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
- sw_sh);
+ sw_sh);
}
- if (flagbyte1 & CH2) {
+ if (flagbyte1 & QR_CS_CH2) {
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
- subsn);
+ subsn);
}
- if (flagbyte1 & GF) {
+ if (flagbyte1 & QR_CS_GF) {
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
- gf);
+ gf);
}
- if (flagbyte2 & CF) {
+ if (flagbyte2 & QR_CS_CF) {
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
- cf);
+ cf);
}
}
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -2904,15 +3032,15 @@ static gint
dissect_query_reply_color_sd_parms(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
{
- int start=offset;
+ gint start = offset;
guint16 sdp;
- hf_items sdp1[] = {
- { hf_tn3270_sdp_ln, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_db_cavdef, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_db_cidef, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items sdp1[] = {
+ { &hf_tn3270_sdp_ln, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_db_cavdef, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_db_cidef, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
@@ -2933,21 +3061,21 @@ dissect_query_reply_color_sd_parms(proto_tree *tn3270_tree, tvbuff_t *tvb, gint
static gint
dissect_query_reply_color(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
- int i;
- int np;
+ gint start = offset;
+ gint i;
+ gint np;
- static const int *byte[] = {
+ static const gint *byte[] = {
&hf_tn3270_c_prtblk,
NULL
- };
+ };
- hf_items fields[] = {
- { hf_tn3270_color_flags, ett_tn3270_color_flags, 1, byte, 0 },
- { hf_tn3270_c_np, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_color_flags, &ett_tn3270_color_flags, 1, byte, 0 },
+ { &hf_tn3270_c_np, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
@@ -2957,27 +3085,27 @@ dissect_query_reply_color(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
for (i=0; i < np; i++) {
if (tvb_get_guint8(tvb, offset) == 0xFF) {
- offset++;
+ offset += 1;
}
proto_tree_add_item(tn3270_tree,
- hf_tn3270_c_cav,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ hf_tn3270_c_cav,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
if (tvb_get_guint8(tvb, offset) == 0xFF) {
- offset++;
+ offset += 1;
}
proto_tree_add_item(tn3270_tree,
- hf_tn3270_c_ci,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ hf_tn3270_c_ci,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
}
offset += dissect_query_reply_color_sd_parms(tn3270_tree, tvb, offset);
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -2988,13 +3116,13 @@ static gint
dissect_daid_sd_parm(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
{
- int start=offset;
+ gint start = offset;
- hf_items sdp1[] = {
- { hf_tn3270_sdp_ln, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_daid, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items sdp1[] = {
+ { &hf_tn3270_sdp_ln, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_daid, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
@@ -3007,13 +3135,13 @@ static gint
dissect_pclk_sd_parm(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
{
- int start=offset;
+ gint start = offset;
- hf_items sdp1[] = {
- { hf_tn3270_sdp_ln, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_oem_sdp_pclk_vers, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items sdp1[] = {
+ { &hf_tn3270_sdp_ln, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_oem_sdp_pclk_vers, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
@@ -3026,31 +3154,31 @@ static gint
dissect_query_reply_oem_auxiliary_device_sd_parms(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
{
- int start=offset;
- int sdp_len;
- int sdp;
-
- hf_items sdp1[] = {
- { hf_tn3270_sdp_ln, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_daid, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ gint start = offset;
+ gint sdp_len;
+ gint sdp;
+
+ static const hf_items sdp1[] = {
+ { &hf_tn3270_sdp_ln, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_daid, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- hf_items sdp2[] = {
- { hf_tn3270_sdp_ln, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_oem_sdp_ll_limin, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_oem_sdp_ll_limout, 0, 2, 0, ENC_BIG_ENDIAN },
+ static const hf_items sdp2[] = {
+ { &hf_tn3270_sdp_ln, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_oem_sdp_ll_limin, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_oem_sdp_ll_limout, NULL, 2, NULL, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ { NULL, NULL, 0, NULL, 0 }
};
- hf_items sdp3[] = {
- { hf_tn3270_sdp_ln, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_oem_sdp_pclk_vers, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items sdp3[] = {
+ { &hf_tn3270_sdp_ln, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_oem_sdp_pclk_vers, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
@@ -3085,35 +3213,37 @@ dissect_query_reply_oem_auxiliary_device_sd_parms(proto_tree *tn3270_tree, tvbuf
/* 6.14 - Query Reply (Cooperative Processing Requestor) */
static gint
dissect_query_reply_cooperative(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
+ gint start = offset;
- hf_items fields[] = {
- { hf_tn3270_res_twobytes, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_limin, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_limout, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_featl, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_feats, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_res_twobytes, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_limin, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_limout, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_featl, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_feats, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
fields);
+#if 0
/*FIXME: Need to see this in action to dissect in detail */
proto_tree_add_item(tn3270_tree,
- hf_tn3270_field_data,
- tvb, offset,
- (sf_length - 13),
- ENC_EBCDIC|ENC_NA);
- offset+=(sf_length - 13);
+ hf_tn3270_field_data,
+ tvb, offset,
+ sf_body_length - (offset-start),
+ ENC_EBCDIC|ENC_NA);
+ offset += (sf_body_length - (offset - start));
/* Uses same Self-Defining Parm as OEM Auxiliary Device */
offset += dissect_query_reply_oem_auxiliary_device_sd_parms(tn3270_tree, tvb, offset);
+#endif
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -3121,27 +3251,20 @@ dissect_query_reply_cooperative(proto_tree *tn3270_tree, tvbuff_t *tvb, gint off
/* 6.15 - Query Reply (Data Chaining) */
static gint
dissect_query_reply_data_chaining(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
-
- static const int *byte1[] = {
- &hf_tn3270_dc_both,
- &hf_tn3270_dc_from_device,
- &hf_tn3270_dc_to_device,
- NULL
- };
+ gint start = offset;
- hf_items fields[] = {
- { hf_tn3270_dc_dir_flags, ett_tn3270_dc_dir_flags, 1, byte1, 0 },
- { hf_tn3270_resbyte, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_dc_dir, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_resbyte, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
fields);
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -3150,22 +3273,25 @@ dissect_query_reply_data_chaining(proto_tree *tn3270_tree, tvbuff_t *tvb, gint o
static gint
dissect_query_reply_data_streams(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
- int i;
+ gint start = offset;
+ gint i;
proto_tree_add_item(tn3270_tree, hf_tn3270_ds_default_sfid, tvb, offset, 1,
ENC_BIG_ENDIAN);
- for (i=0; i < (sf_length - 4); i++) {
+ offset += 1;
+
+ for (i=0; i < (sf_body_length-(offset-start)); i++) {
proto_tree_add_item(tn3270_tree,
- hf_tn3270_ds_sfid,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ hf_tn3270_ds_sfid,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
}
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
+
return (offset - start);
}
@@ -3175,22 +3301,22 @@ static gint
dissect_query_reply_dbcs_asia_sd_parms(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
{
- int start=offset;
- int sdp_len;
- int sdp;
-
- hf_items sdp1[] = {
- { hf_tn3270_sdp_ln, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_asia_sdp_sosi_soset, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ gint start = offset;
+ gint sdp_len;
+ gint sdp;
+
+ static const hf_items sdp1[] = {
+ { &hf_tn3270_sdp_ln, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_asia_sdp_sosi_soset, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- hf_items sdp2[] = {
- { hf_tn3270_sdp_ln, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_asia_sdp_ic_func, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items sdp2[] = {
+ { &hf_tn3270_sdp_ln, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_asia_sdp_ic_func, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
sdp_len = tvb_get_guint8(tvb, offset);
@@ -3202,10 +3328,12 @@ dissect_query_reply_dbcs_asia_sd_parms(proto_tree *tn3270_tree, tvbuff_t *tvb, g
switch (sdp) {
case 0x01: /*SO/SI*/
- offset += tn3270_add_hf_items(tn3270_tree, tvb, offset, sdp1);
+ offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
+ sdp1);
break;
case 0x02: /*Input Control*/
- offset += tn3270_add_hf_items(tn3270_tree, tvb, offset, sdp2);
+ offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
+ sdp2);
break;
default:
return 0;
@@ -3217,15 +3345,15 @@ dissect_query_reply_dbcs_asia_sd_parms(proto_tree *tn3270_tree, tvbuff_t *tvb, g
static gint
dissect_query_reply_dbcs_asia(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
- int i;
+ gint start = offset;
+ gint i;
- hf_items fields[] = {
- { hf_tn3270_resbyte, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_resbyte, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
@@ -3234,11 +3362,11 @@ dissect_query_reply_dbcs_asia(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offse
for (i = 0; i < 3; i++) {
offset += dissect_query_reply_dbcs_asia_sd_parms(tn3270_tree, tvb, offset);
- if (!tvb_length_remaining(tvb, offset))
+ if (tvb_reported_length_remaining(tvb, offset) <= 0)
break;
}
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -3246,19 +3374,21 @@ dissect_query_reply_dbcs_asia(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offse
/* 6.18 - Query Reply (Device Characteristics) */
static gint
dissect_query_reply_device_characteristics(proto_tree *tn3270_tree, tvbuff_t *tvb,
- gint offset, gint sf_length)
+ gint offset, gint sf_body_length)
{
- int start=offset;
+ gint start = offset;
+#if 0 /* XXX: I don't think this is correct (i.e., this field is not part of this message) .... */
proto_tree_add_item(tn3270_tree,
- hf_tn3270_sf_outbound_id,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ hf_tn3270_sf_outbound_id,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
+#endif
/* TODO: dissect descriptors */
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -3266,20 +3396,20 @@ dissect_query_reply_device_characteristics(proto_tree *tn3270_tree, tvbuff_t *tv
/* 6.19 - Query Reply (Distributed Data Management) */
static gint
dissect_query_reply_distributed_data_management(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset, i;
- int sdp;
- int done = 0;
-
- hf_items fields[] = {
- { hf_tn3270_ddm_flags,0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ddm_flags,0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ddm_limin,0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ddm_limout,0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ddm_nss,0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ddm_ddmss,0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ gint start = offset, i;
+ gint sdp;
+ gboolean done = FALSE;
+
+ static const hf_items fields[] = {
+ { &hf_tn3270_ddm_flags, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ddm_flags, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ddm_limin, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ddm_limout, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ddm_nss, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ddm_ddmss, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
@@ -3299,14 +3429,14 @@ dissect_query_reply_distributed_data_management(proto_tree *tn3270_tree, tvbuff_
offset += dissect_pclk_sd_parm(tn3270_tree, tvb, offset);
break;
default:
- done = 1;
+ done = TRUE;
break;
}
- if (!tvb_length_remaining(tvb, offset) || done)
+ if ((tvb_reported_length_remaining(tvb, offset) <= 0) || done)
break;
}
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -3314,37 +3444,38 @@ dissect_query_reply_distributed_data_management(proto_tree *tn3270_tree, tvbuff_
/* 6.20 - Query Reply (Document Interchange Architecture) */
static gint
dissect_query_reply_document_interchange_architecture(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset, sdp, ln, i;
+ gint start = offset, sdp, ln, i;
- hf_items fields[] = {
- { hf_tn3270_dia_flags, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_dia_limin, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_dia_limout, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_dia_flags, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_dia_limin, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_dia_limout, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- offset += tn3270_add_hf_items(tn3270_tree, tvb, offset, fields);
+ offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
+ fields);
ln = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(tn3270_tree, hf_tn3270_dia_nfs,tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tn3270_tree, hf_tn3270_dia_nfs, tvb, offset, 1, ENC_BIG_ENDIAN);
for (i=0; i < ln; i++) {
proto_tree_add_item(tn3270_tree, hf_tn3270_dia_diafs, tvb, offset, 1,
ENC_BIG_ENDIAN);
- offset++;
+ offset += 1;
proto_tree_add_item(tn3270_tree, hf_tn3270_dia_diafn, tvb, offset, 2,
ENC_BIG_ENDIAN);
- offset++;
+ offset += 1;
}
sdp = tvb_get_guint8(tvb, offset+1);
if (sdp == 0x01) { /*DAID*/
- offset += dissect_daid_sd_parm(tn3270_tree, tvb, offset);
+ offset += dissect_daid_sd_parm(tn3270_tree, tvb, offset);
}
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -3352,14 +3483,14 @@ dissect_query_reply_document_interchange_architecture(proto_tree *tn3270_tree, t
/* 6.21 - Query Reply (Extended Drawing Routine) */
static gint
dissect_query_reply_extended_drawing_routine(proto_tree *tn3270_tree, tvbuff_t *tvb,
- gint offset, gint sf_length)
+ gint offset, gint sf_body_length)
{
- int start=offset;
+ gint start = offset;
proto_tree_add_item(tn3270_tree, hf_tn3270_field_data ,tvb, offset,
- (sf_length-4), ENC_EBCDIC|ENC_NA);
+ sf_body_length, ENC_EBCDIC|ENC_NA);
- offset += (sf_length - 4);
+ offset += sf_body_length;
return (offset - start);
}
@@ -3367,23 +3498,24 @@ dissect_query_reply_extended_drawing_routine(proto_tree *tn3270_tree, tvbuff_t *
/* 6.22 - Query Reply (Field Outlining) */
static gint
dissect_query_reply_field_outlining(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
+ gint start = offset;
- hf_items fields[] = {
- { hf_tn3270_resbyte, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_fo_flags, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_fo_vpos, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_fo_hpos, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_fo_hpos0, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_fo_hpos1, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_resbyte, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_fo_flags, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_fo_vpos, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_fo_hpos, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_fo_hpos0, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_fo_hpos1, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- offset += tn3270_add_hf_items(tn3270_tree, tvb, offset, fields);
+ offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
+ fields);
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -3394,29 +3526,30 @@ dissect_query_reply_field_outlining(proto_tree *tn3270_tree, tvbuff_t *tvb, gint
/* 6.25 - Query Reply (Format Storage Auxiliary Device)*/
static gint
dissect_query_reply_format_storage_aux_device(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset, sdp;
-
- hf_items fields[] = {
- { hf_tn3270_fsad_flags, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_resbyte, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_fsad_limin, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_fsad_limout, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ gint start = offset, sdp;
+
+ static const hf_items fields[] = {
+ { &hf_tn3270_fsad_flags, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_resbyte, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_fsad_limin, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_fsad_limout, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- offset += tn3270_add_hf_items(tn3270_tree, tvb, offset, fields);
+ offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
+ fields);
sdp = tvb_get_guint8(tvb, offset+1);
if (sdp == 0x01) { /*DAID*/
- offset += dissect_daid_sd_parm(tn3270_tree, tvb, offset);
- proto_tree_add_item(tn3270_tree, hf_tn3270_fsad_size ,tvb, offset,
- 2, ENC_BIG_ENDIAN);
- offset+=2;
+ offset += dissect_daid_sd_parm(tn3270_tree, tvb, offset);
+ proto_tree_add_item(tn3270_tree, hf_tn3270_fsad_size ,tvb, offset,
+ 2, ENC_BIG_ENDIAN);
+ offset += 2;
}
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -3427,15 +3560,15 @@ dissect_query_reply_format_storage_aux_device(proto_tree *tn3270_tree, tvbuff_t
/* 6.28 - Query Reply (Highlighting) */
static gint
dissect_query_reply_highlighting(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
- int i;
- int np;
+ gint start = offset;
+ gint i;
+ gint np;
- hf_items fields[] = {
- { hf_tn3270_h_np, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_h_np, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
@@ -3445,26 +3578,26 @@ dissect_query_reply_highlighting(proto_tree *tn3270_tree, tvbuff_t *tvb, gint of
for (i=0; i < np; i++) {
if (tvb_get_guint8(tvb, offset) == 0xFF) {
- offset++;
+ offset += 1;
}
proto_tree_add_item(tn3270_tree,
- hf_tn3270_h_vi,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ hf_tn3270_h_vi,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
if (tvb_get_guint8(tvb, offset) == 0xFF) {
- offset++;
+ offset += 1;
}
proto_tree_add_item(tn3270_tree,
- hf_tn3270_h_ai,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ hf_tn3270_h_ai,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
}
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -3472,21 +3605,22 @@ dissect_query_reply_highlighting(proto_tree *tn3270_tree, tvbuff_t *tvb, gint of
/* 6.29 - Query Reply (IBM Auxiliary Device) */
static gint
dissect_query_reply_ibm_aux_device(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset, i, sdp;
- int done = 0;
-
- hf_items fields[] = {
- { hf_tn3270_ibm_flags, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_resbyte, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ibm_limin, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ibm_limout, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ibm_type, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ gint start = offset, i, sdp;
+ gboolean done = FALSE;
+
+ static const hf_items fields[] = {
+ { &hf_tn3270_ibm_flags, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_resbyte, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ibm_limin, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ibm_limout, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ibm_type, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- offset += tn3270_add_hf_items(tn3270_tree, tvb, offset, fields);
+ offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
+ fields);
for (i = 0; i < 3; i++) {
sdp = tvb_get_guint8(tvb, offset+1);
@@ -3502,14 +3636,14 @@ dissect_query_reply_ibm_aux_device(proto_tree *tn3270_tree, tvbuff_t *tvb, gint
offset += dissect_pclk_sd_parm(tn3270_tree, tvb, offset);
break;
default:
- done = 1;
+ done = TRUE;
break;
}
- if (!tvb_length_remaining(tvb, offset) || done)
+ if ((tvb_reported_length_remaining(tvb, offset) <= 0) || done)
break;
}
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -3521,39 +3655,39 @@ static gint
dissect_query_reply_implicit_partitions_sd_parms(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
{
- int start=offset;
- int sdp_len;
- int sdp;
-
- hf_items sdp1[] = {
- { hf_tn3270_sdp_ln, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ip_flags, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ipdd_wd, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ipdd_hd, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ipdd_wa, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ipdd_ha, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ gint start = offset;
+ gint sdp_len;
+ gint sdp;
+
+ static const hf_items sdp1[] = {
+ { &hf_tn3270_sdp_ln, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ip_flags, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ipdd_wd, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ipdd_hd, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ipdd_wa, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ipdd_ha, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- hf_items sdp2[] = {
- { hf_tn3270_sdp_ln, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ip_flags, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ippd_dpbs, 0, 4, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ippd_apbs, 0, 4, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items sdp2[] = {
+ { &hf_tn3270_sdp_ln, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ip_flags, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ippd_dpbs, NULL, 4, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ippd_apbs, NULL, 4, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- hf_items sdp3[] = {
- { hf_tn3270_sdp_ln, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ip_flags, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ipccd_wcd, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ipccd_hcd, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ipccd_wca, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ipccd_hca, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items sdp3[] = {
+ { &hf_tn3270_sdp_ln, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ip_flags, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ipccd_wcd, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ipccd_hcd, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ipccd_wca, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ipccd_hca, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
sdp_len = tvb_get_guint8(tvb, offset);
@@ -3564,15 +3698,16 @@ dissect_query_reply_implicit_partitions_sd_parms(proto_tree *tn3270_tree, tvbuff
sdp = tvb_get_guint8(tvb, offset+1);
switch (sdp) {
- case DISPLAY:
+ case QR_IP_SDP_DISPLAY:
+ /* XXX: Save default and alternate screen size info as reported ? */
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
sdp1);
break;
- case PRINTER:
+ case QR_IP_SDP_PRINTER:
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
sdp2);
break;
- case CHARACTER:
+ case QR_IP_SDP_CHARACTER:
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
sdp3);
break;
@@ -3586,27 +3721,29 @@ dissect_query_reply_implicit_partitions_sd_parms(proto_tree *tn3270_tree, tvbuff
static gint
dissect_query_reply_implicit_partitions(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
- int i;
+ gint start = offset;
+ gint i;
- hf_items fields[] = {
- { hf_tn3270_ip_flags, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ip_flags, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_ip_flags, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ip_flags, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
fields);
for (i = 0; i < 3; i++) {
- offset += dissect_query_reply_implicit_partitions_sd_parms(tn3270_tree, tvb, offset);
- if (!tvb_length_remaining(tvb, offset))
+ gint len;
+ len = dissect_query_reply_implicit_partitions_sd_parms(tn3270_tree, tvb, offset);
+ if ((len == 0) || (tvb_reported_length_remaining(tvb, offset) <= 0))
break;
+ offset += len;
}
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -3614,22 +3751,23 @@ dissect_query_reply_implicit_partitions(proto_tree *tn3270_tree, tvbuff_t *tvb,
/* 6.32 - Query Reply (IOCA Auxiliary Device) */
static gint
dissect_query_reply_ioca_aux_device(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
+ gint start = offset;
- hf_items fields[] = {
- { hf_tn3270_resbyte, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_resbyte, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ioca_limin, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ioca_limout, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ioca_type, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_resbyte, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_resbyte, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ioca_limin, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ioca_limout, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ioca_type, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- offset += tn3270_add_hf_items(tn3270_tree, tvb, offset, fields);
+ offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
+ fields);
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -3639,19 +3777,20 @@ dissect_query_reply_ioca_aux_device(proto_tree *tn3270_tree, tvbuff_t *tvb, gint
/* 6.34 - Query Reply (MSR Control) */
static gint
dissect_query_reply_msr_control(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
+ gint start = offset;
- hf_items fields[] = {
- { hf_tn3270_resbyte, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_msr_nd, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_msr_type, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_resbyte, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_msr_nd, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_msr_type, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- offset += tn3270_add_hf_items(tn3270_tree, tvb, offset, fields);
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
+ fields);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -3661,17 +3800,17 @@ dissect_query_reply_msr_control(proto_tree *tn3270_tree, tvbuff_t *tvb, gint off
/* 6.36 - Query Reply (OEM Auxiliary Device) */
static gint
dissect_query_reply_oem_auxiliary_device(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
- int i;
+ gint start = offset;
+ gint i;
- hf_items fields[] = {
- { hf_tn3270_resbyte, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_oem_dsref, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_oem_dtype, 0, 8, 0, ENC_EBCDIC|ENC_NA },
- { hf_tn3270_oem_uname, 0, 8, 0, ENC_EBCDIC|ENC_NA },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_resbyte, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_oem_dsref, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_oem_dtype, NULL, 8, NULL, ENC_EBCDIC|ENC_NA },
+ { &hf_tn3270_oem_uname, NULL, 8, NULL, ENC_EBCDIC|ENC_NA },
+ { NULL, NULL, 0, NULL, 0 }
};
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
@@ -3679,11 +3818,11 @@ dissect_query_reply_oem_auxiliary_device(proto_tree *tn3270_tree, tvbuff_t *tvb,
for (i = 0; i < 3; i++) {
offset += dissect_query_reply_oem_auxiliary_device_sd_parms(tn3270_tree, tvb, offset);
- if (!tvb_length_remaining(tvb, offset))
+ if (tvb_reported_length_remaining(tvb, offset) <= 0)
break;
}
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -3691,19 +3830,20 @@ dissect_query_reply_oem_auxiliary_device(proto_tree *tn3270_tree, tvbuff_t *tvb,
/* 6.37 - Query Reply (Paper Feed Techniques) */
static gint
dissect_query_reply_paper_feed_techniques(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
+ gint start = offset;
- hf_items fields[] = {
- { hf_tn3270_pft_flags, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_pft_tmo, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_pft_bmo, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_pft_flags, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_pft_tmo, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_pft_bmo, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- offset += tn3270_add_hf_items(tn3270_tree, tvb, offset, fields);
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
+ fields);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -3711,38 +3851,40 @@ dissect_query_reply_paper_feed_techniques(proto_tree *tn3270_tree, tvbuff_t *tvb
/* 6.38 - Query Reply (Partition Characteristics) */
static gint
dissect_query_reply_partition_characteristics(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset, i, sdp;
- int done = 0;
+ gint start = offset, i, sdp;
+ gboolean done = FALSE;
- hf_items fields[] = {
- { hf_tn3270_sdp_ln, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_sdp_ln, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
for (i = 0; i < 2; i++) {
sdp = tvb_get_guint8(tvb, offset+1);
switch (sdp) {
case 0x01: /*Viewport Outline*/
- offset += tn3270_add_hf_items(tn3270_tree, tvb, offset, fields);
+ offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
+ fields);
proto_tree_add_item(tn3270_tree, hf_tn3270_pc_vo_thickness,
- tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
break;
case 0x03: /*Enable User Call-Up*/
- offset += tn3270_add_hf_items(tn3270_tree, tvb, offset, fields);
+ offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
+ fields);
break;
default:
- done = 1;
+ done = TRUE;
break;
}
- if (!tvb_length_remaining(tvb, offset) || done)
+ if ((tvb_reported_length_remaining(tvb, offset) <= 0) || done)
break;
}
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -3753,25 +3895,26 @@ dissect_query_reply_partition_characteristics(proto_tree *tn3270_tree, tvbuff_t
/* 6.41 - Query Reply ((Product Defined Data Stream) */
static gint
dissect_query_reply_product_defined_data_stream(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset, sdp;
+ gint start = offset, sdp;
- hf_items fields[] = {
- { hf_tn3270_resbytes, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_pdds_refid, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_pdds_ssid, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_resbytes, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_pdds_refid, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_pdds_ssid, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- offset += tn3270_add_hf_items(tn3270_tree, tvb, offset, fields);
+ offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
+ fields);
sdp = tvb_get_guint8(tvb, offset+1);
if (sdp == 0x01) { /*DAID*/
- offset += dissect_daid_sd_parm(tn3270_tree, tvb, offset);
+ offset += dissect_daid_sd_parm(tn3270_tree, tvb, offset);
}
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -3779,20 +3922,19 @@ dissect_query_reply_product_defined_data_stream(proto_tree *tn3270_tree, tvbuff_
/* 6.42 - Query Reply (Modes) */
static gint
dissect_query_reply_modes(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
- int i;
+ gint start = offset;
+ gint i;
- for (i=0; i < (sf_length - 4); i++) {
+ for (i=0; i < sf_body_length; i++) {
proto_tree_add_item(tn3270_tree,
- hf_tn3270_mode,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ hf_tn3270_mode,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
}
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
return (offset - start);
}
@@ -3800,15 +3942,15 @@ dissect_query_reply_modes(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
/* 6.43 - Query Reply (RPQ Names) */
static gint
dissect_query_reply_rpq_names(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
- int rpql;
+ gint start = offset;
+ gint rpql;
- hf_items fields[] = {
- { hf_tn3270_rpq_device,0, 4, 0, ENC_EBCDIC|ENC_NA },
- { hf_tn3270_rpq_mid,0, 4, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_rpq_device, NULL, 4, NULL, ENC_EBCDIC|ENC_NA },
+ { &hf_tn3270_rpq_mid, NULL, 4, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
@@ -3817,20 +3959,20 @@ dissect_query_reply_rpq_names(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offse
rpql = tvb_get_guint8(tvb, offset);
proto_tree_add_item(tn3270_tree,
- hf_tn3270_rpq_rpql,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ hf_tn3270_rpq_rpql,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
proto_tree_add_item(tn3270_tree,
- hf_tn3270_rpq_name,
- tvb, offset,
- (rpql - 1),
- ENC_EBCDIC|ENC_NA);
- offset+=(rpql-1);
+ hf_tn3270_rpq_name,
+ tvb, offset,
+ (rpql - 1),
+ ENC_EBCDIC|ENC_NA);
+ offset += (rpql-1);
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -3838,18 +3980,19 @@ dissect_query_reply_rpq_names(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offse
/* 6.44 - Query Reply (Save/Restore Format) */
static gint
dissect_query_reply_save_or_restore_format(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
+ gint start = offset;
- hf_items fields[] = {
- { hf_tn3270_srf_fpcbl, 0, 1, 0, ENC_NA },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_srf_fpcbl, NULL, 1, NULL, ENC_NA },
+ { NULL, NULL, 0, NULL, 0 }
};
- offset += tn3270_add_hf_items(tn3270_tree, tvb, offset, fields);
+ offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
+ fields);
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -3859,32 +4002,34 @@ dissect_query_reply_save_or_restore_format(proto_tree *tn3270_tree, tvbuff_t *tv
/* 6.46 - Query Reply ((Settable Printer Characteristics) */
static gint
dissect_query_reply_settable_printer_characteristics(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset, sdp;
+ gint start = offset, sdp;
- hf_items fields[] = {
- { hf_tn3270_resbytes, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_resbytes, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- hf_items fields2[] = {
- { hf_tn3270_sdp_ln, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields2[] = {
+ { &hf_tn3270_sdp_ln, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- offset += tn3270_add_hf_items(tn3270_tree, tvb, offset, fields);
+ offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
+ fields);
sdp = tvb_get_guint8(tvb, offset+1);
if (sdp == 0x01) { /*Early Print Complete*/
- offset += tn3270_add_hf_items(tn3270_tree, tvb, offset, fields2);
+ offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
+ fields2);
proto_tree_add_item(tn3270_tree, hf_tn3270_spc_epc_flags, tvb, offset,
1, ENC_BIG_ENDIAN);
- offset++;
+ offset += 1;
}
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -3892,30 +4037,31 @@ dissect_query_reply_settable_printer_characteristics(proto_tree *tn3270_tree, tv
/* 6.47 - Query Reply (Storage Pools) */
static gint
dissect_query_reply_storage_pools(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset, sdp, i;
-
- hf_items fields2[] = {
- { hf_tn3270_sdp_ln, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sdp_id, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sp_spid, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sp_size, 0, 4, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_sp_space, 0, 4, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ gint start = offset, sdp, i;
+
+ static const hf_items fields2[] = {
+ { &hf_tn3270_sdp_ln, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sdp_id, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sp_spid, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sp_size, NULL, 4, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_sp_space, NULL, 4, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
sdp = tvb_get_guint8(tvb, offset+1);
- if (sdp == 0x01) { /*Storage Pool Characteristics*/
- offset += tn3270_add_hf_items(tn3270_tree, tvb, offset, fields2);
- for (i=0; i < (sf_length - 4); i+=2) {
+ if (sdp == 0x01) { /* Storage Pool Characteristics */
+ offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
+ fields2);
+ for (i=0; i < (sf_body_length-(offset-start)); i+=2) {
proto_tree_add_item(tn3270_tree, hf_tn3270_sp_objlist,
- tvb, offset, 2, ENC_BIG_ENDIAN);
- offset+=2;
+ tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
}
}
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -3923,53 +4069,56 @@ dissect_query_reply_storage_pools(proto_tree *tn3270_tree, tvbuff_t *tvb, gint o
/* 6.48 - Query Reply (Summary) */
static gint
dissect_query_reply_summary(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
- int i;
+ gint i;
+ gint datalen = 0;
+ gint length_remaining = tvb_reported_length_remaining(tvb, offset);
- for (i=0; i < (sf_length - 4); i++) {
- if (!tvb_offset_exists(tvb, offset)) {
- return (offset - start);
+ for (i=0; i < sf_body_length; i++) {
+ if (datalen >= length_remaining) {
+ return (datalen);
}
proto_tree_add_item(tn3270_tree,
- hf_tn3270_sf_query_reply,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ hf_tn3270_sf_query_reply,
+ tvb, offset + datalen,
+ 1,
+ ENC_BIG_ENDIAN);
+ datalen += 1;
}
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
- return (offset - start);
+ datalen += dissect_unknown_data(tn3270_tree, tvb, offset+datalen, offset, sf_body_length);
+
+ return (datalen);
}
/* 6.49 - Query Reply (Text Partitions) */
static gint
dissect_query_reply_text_partitions(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset, len, i;
+ gint start = offset, len, i;
- hf_items fields[] = {
- { hf_tn3270_tp_nt, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_tp_m, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_tp_flags, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_tp_nt, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_tp_m, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_tp_flags, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- offset += tn3270_add_hf_items(tn3270_tree, tvb, offset, fields);
+ offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
+ fields);
len = tvb_get_guint8(tvb, offset);
proto_tree_add_item(tn3270_tree, hf_tn3270_tp_ntt, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
+ offset += 1;
for (i=0; i < len; i++) {
proto_tree_add_item(tn3270_tree, hf_tn3270_tp_tlist,
- tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
}
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -3977,24 +4126,24 @@ dissect_query_reply_text_partitions(proto_tree *tn3270_tree, tvbuff_t *tvb, gint
/* 6.50 - Query Reply (Transparency) */
static gint
dissect_query_reply_transparency(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset, i, len;
+ gint start = offset, i, len;
len = tvb_get_guint8(tvb, offset);
proto_tree_add_item(tn3270_tree, hf_tn3270_t_np, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
+ offset += 1;
for (i=0; i < len; i+=2) {
proto_tree_add_item(tn3270_tree, hf_tn3270_t_vi,
- tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
proto_tree_add_item(tn3270_tree, hf_tn3270_t_ai,
- tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
}
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -4002,12 +4151,12 @@ dissect_query_reply_transparency(proto_tree *tn3270_tree, tvbuff_t *tvb, gint of
/* 6.51 - Query Reply Usable Area */
static gint
dissect_query_reply_usable_area(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
- int vcp;
+ gint start = offset;
+ gint vcp;
- static const int *byte1[] = {
+ static const gint *byte1[] = {
&hf_tn3270_ua_reserved1,
&hf_tn3270_ua_page_printer,
&hf_tn3270_ua_reserved2,
@@ -4016,33 +4165,33 @@ dissect_query_reply_usable_area(proto_tree *tn3270_tree, tvbuff_t *tvb, gint off
NULL
};
- static const int *byte2[] = {
+ static const gint *byte2[] = {
&hf_tn3270_ua_variable_cells,
&hf_tn3270_ua_characters,
&hf_tn3270_ua_cell_units,
NULL
};
- hf_items fields[] = {
- { hf_tn3270_usable_area_flags1, ett_tn3270_usable_area_flags1, 1, byte1, 0 },
- { hf_tn3270_usable_area_flags2, ett_tn3270_usable_area_flags1, 1, byte2, 0 },
- { hf_tn3270_ua_width_cells_pels, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ua_height_cells_pels, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ua_uom_cells_pels, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ua_xr, 0, 4, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ua_yr, 0, 4, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ua_aw, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ua_ah, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ua_buffsz, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_usable_area_flags1, &ett_tn3270_usable_area_flags1, 1, byte1, 0 },
+ { &hf_tn3270_usable_area_flags2, &ett_tn3270_usable_area_flags1, 1, byte2, 0 },
+ { &hf_tn3270_ua_width_cells_pels, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ua_height_cells_pels, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ua_uom_cells_pels, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ua_xr, NULL, 4, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ua_yr, NULL, 4, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ua_aw, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ua_ah, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ua_buffsz, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- hf_items fields2[] = {
- { hf_tn3270_ua_xmin, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ua_ymin, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ua_xmax, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_ua_ymax, 0, 1, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields2[] = {
+ { &hf_tn3270_ua_xmin, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ua_ymin, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ua_xmax, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_ua_ymax, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
vcp = tvb_get_guint8(tvb, offset+1);
@@ -4050,13 +4199,13 @@ dissect_query_reply_usable_area(proto_tree *tn3270_tree, tvbuff_t *tvb, gint off
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
fields);
- if (vcp == VARIABLE_CELLS) {
+ if ((vcp & QR_UA_VARIABLE_CELLS) != 0) {
offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
fields2);
}
/*TODO: self defining parms */
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
@@ -4064,520 +4213,562 @@ dissect_query_reply_usable_area(proto_tree *tn3270_tree, tvbuff_t *tvb, gint off
/* 6.52 - Query Reply 3270 IPDS */
static gint
dissect_query_reply_3270_ipds(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length)
+ gint sf_body_length)
{
- int start=offset;
+ gint start = offset;
- hf_items fields[] = {
- { hf_tn3270_resbytes, 0, 2, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_3270_tranlim, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ static const hf_items fields[] = {
+ { &hf_tn3270_resbytes, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_3270_tranlim, NULL, 2, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
- offset += tn3270_add_hf_items(tn3270_tree, tvb, offset, fields);
- offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_length);
+ offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
+ fields);
+ offset += dissect_unknown_data(tn3270_tree, tvb, offset, start, sf_body_length);
return (offset - start);
}
+/* sf_body_length is the total length of the structured field including the sf_len and sf_id fields */
+/* call only with valid sf_id */
static gint
-process_in_out_structured_fields(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
- gint sf_length, gint16 sfid)
+process_inbound_structured_field(proto_tree *sf_tree, tvbuff_t *tvb, gint offset,
+ tn3270_conv_info_t *tn3270_info, guint sf_id, gint sf_body_length)
{
- int start = offset;
+ gint start = offset; /* start of structured field param(s) */
- switch (sfid) {
- case DATA_CHAIN:
- proto_tree_add_bits_item(tn3270_tree,
- hf_tn3270_data_chain_bitmask,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
- proto_tree_add_item(tn3270_tree,
- hf_tn3270_resbyte,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
- break;
- case DESTINATION_OR_ORIGIN:
- proto_tree_add_bits_item(tn3270_tree,
- hf_tn3270_destination_or_origin_bitmask,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
- proto_tree_add_item(tn3270_tree,
- hf_tn3270_resbyte,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
- proto_tree_add_item(tn3270_tree,
- hf_tn3270_sf_inbound_outbound_id,
- tvb, offset,
- 2,
- ENC_BIG_ENDIAN);
- offset+=2;
- break;
- case OBJECT_DATA:
- case OBJECT_CONTROL:
- case OBJECT_PICTURE:
- case OEM_DATA: /* FIXME: Not really but same layout */
- offset += dissect_object_control(tn3270_tree, tvb, offset, sf_length);
- break;
- case SAVE_OR_RESTORE_FORMAT:
- offset += dissect_save_or_restore_format(tn3270_tree, tvb, offset, sf_length);
- break;
- case SELECT_IPDS_MODE:
- proto_tree_add_item(tn3270_tree,
- hf_tn3270_resbytes,
- tvb, offset,
- 2,
- ENC_BIG_ENDIAN);
- offset+=2;
- break;
- default:
- break;
+ switch (sf_id) {
+ case SF_IB_EXCEPTION_OR_STATUS:
+ offset += dissect_exception_or_status(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_INBOUND_TEXT_HEADER:
+ offset += dissect_inbound_text_header(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_INBOUND_3270DS:
+ offset += dissect_inbound_3270ds(sf_tree, tvb, offset, tn3270_info, sf_body_length);
+ break;
+ case SF_IB_RECOVERY_DATA:
+ offset += dissect_recovery_data(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_TYPE_1_TEXT_INBOUND:
+ offset += dissect_type_1_text(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_ALPHANUMERIC_PARTITIONS:
+ offset += dissect_query_reply_alphanumeric(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_AUXILIARY_DEVICE:
+ case SF_IB_QUERY_REPLY_BEGIN_OR_END_OF_FILE:
+ offset += dissect_query_reply_resbytes(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_CHARACTER_SETS:
+ offset += dissect_query_reply_character_sets(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_COLOR:
+ offset += dissect_query_reply_color(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_COOPERATIVE_PROCESSING_REQUESTOR:
+ offset += dissect_query_reply_cooperative(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_DATA_CHAINING:
+ offset += dissect_query_reply_data_chaining(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_DATA_STREAMS:
+ offset += dissect_query_reply_data_streams(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_DBCS_ASIA:
+ offset += dissect_query_reply_dbcs_asia(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_DEVICE_CHARACTERISTICS:
+ /*TODO: implement this beast */
+ offset += dissect_query_reply_device_characteristics(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_SUMMARY:
+ offset += dissect_query_reply_summary(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_USABLE_AREA:
+ offset += dissect_query_reply_usable_area(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_HIGHLIGHTING:
+ offset += dissect_query_reply_highlighting(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_REPLY_MODES:
+ offset += dissect_query_reply_modes(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_DISTRIBUTED_DATA_MANAGEMENT:
+ offset += dissect_query_reply_distributed_data_management(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_RPQ_NAMES:
+ offset += dissect_query_reply_rpq_names(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_IMPLICIT_PARTITION:
+ offset += dissect_query_reply_implicit_partitions(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_OEM_AUXILIARY_DEVICE:
+ offset += dissect_query_reply_oem_auxiliary_device(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_DOCUMENT_INTERCHANGE_ARCHITECTURE:
+ offset += dissect_query_reply_document_interchange_architecture(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_EXTENDED_DRAWING_ROUTINE:
+ offset += dissect_query_reply_extended_drawing_routine(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_FIELD_OUTLINING:
+ offset += dissect_query_reply_field_outlining(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_FIELD_VALIDATION:
+ offset += dissect_3270_field_validation(sf_tree, tvb, offset);
+ break;
+ case SF_IB_QUERY_REPLY_FORMAT_STORAGE_AUXILIARY_DEVICE:
+ offset += dissect_query_reply_format_storage_aux_device(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_GRAPHIC_COLOR:
+ case SF_IB_QUERY_REPLY_GRAPHIC_SYMBOL_SETS:
+ case SF_IB_QUERY_REPLY_IMAGE:
+ case SF_IB_QUERY_REPLY_LINE_TYPE:
+ case SF_IB_QUERY_REPLY_PROCEDURE:
+ case SF_IB_QUERY_REPLY_SEGMENT:
+ /* Not an error - just has a data field like 'extended drawing'*/
+ offset += dissect_query_reply_extended_drawing_routine(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_IBM_AUXILIARY_DEVICE:
+ offset += dissect_query_reply_ibm_aux_device(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_IOCA_AUXILIARY_DEVICE:
+ offset += dissect_query_reply_ioca_aux_device(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_MSR_CONTROL:
+ offset += dissect_query_reply_msr_control(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_FORMAT_PRESENTATION:
+ case SF_IB_QUERY_REPLY_NULL:
+ case SF_IB_QUERY_REPLY_PORT:
+ /* This field is always empty */
+ break;
+ case SF_IB_QUERY_REPLY_PAPER_FEED_TECHNIQUES:
+ offset += dissect_query_reply_paper_feed_techniques(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_PARTITION_CHARACTERISTICS:
+ offset += dissect_query_reply_partition_characteristics(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_PRODUCT_DEFINED_DATA_STREAM:
+ offset += dissect_query_reply_product_defined_data_stream(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_SAVE_OR_RESTORE_FORMAT:
+ offset += dissect_query_reply_save_or_restore_format(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_SETTABLE_PRINTER_CHARACTERISTICS:
+ offset += dissect_query_reply_settable_printer_characteristics(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_STORAGE_POOLS:
+ offset += dissect_query_reply_storage_pools(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_TEXT_PARTITIONS:
+ offset += dissect_query_reply_text_partitions(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_TRANSPARENCY:
+ offset += dissect_query_reply_transparency(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_IB_QUERY_REPLY_3270_IPDS:
+ offset += dissect_query_reply_3270_ipds(sf_tree, tvb, offset, sf_body_length);
+ break;
+ default:
+ DISSECTOR_ASSERT_NOT_REACHED();
+ break;
}
return (offset - start);
}
+
+/* sf_body_length is the total length of the structured field including the sf_len and sf_id fields */
+/* call only with valid sf_id */
static gint
-process_double_byte_sf(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset, gint sf_length)
+process_outbound_structured_field(proto_tree *sf_tree, tvbuff_t *tvb, gint offset,
+ tn3270_conv_info_t *tn3270_info, guint sf_id, gint sf_body_length)
{
- gint16 full_sf_id;
- int start = offset;
+ gint start = offset; /* start of structured field param(s) */
- full_sf_id = tvb_get_guint8(tvb, offset-1);
- proto_tree_add_item(tn3270_tree,
- hf_tn3270_double_byte_sf_id,
- tvb, offset-1,
+ switch (sf_id) {
+ case SF_OB_READ_PARTITION:
+ offset += dissect_read_partition(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_OB_ACTIVATE_PARTITION:
+ case SF_OB_DESTROY_PARTITION:
+ case SF_OB_RESET_PARTITION:
+ proto_tree_add_item(sf_tree,
+ hf_tn3270_partition_id,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+ case SF_OB_CREATE_PARTITION:
+ offset += dissect_create_partition(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_OB_ERASE_OR_RESET:
+ /* Bit 0: 0= Use default screen size; 1= use alternate screen size */
+ /* XXX: Not really valid: See comment under dissect_outbound_stream(). */
+ if ((tvb_get_guint8(tvb, offset) & 0x80) != 0) {
+ tn3270_info->rows = tn3270_info->altrows;
+ tn3270_info->cols = tn3270_info->altcols;
+ }
+ else {
+ tn3270_info->rows = 24;
+ tn3270_info->cols = 80;
+ }
+ proto_tree_add_bits_item(sf_tree,
+ hf_tn3270_erase_flags,
+ tvb, offset<<3,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+ case SF_OB_LOAD_PROGRAMMED_SYMBOLS:
+ offset += dissect_load_programmed_symbols(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_OB_OUTBOUND_3270DS:
+ offset += dissect_outbound_3270ds(sf_tree, tvb, offset, tn3270_info, sf_body_length);
+ break;
+ case SF_OB_PRESENT_ABSOLUTE_FORMAT:
+ offset += dissect_present_absolute_format(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_OB_PRESENT_RELATIVE_FORMAT:
+ offset += dissect_present_relative_format(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_OB_SCS_DATA:
+ proto_tree_add_item(sf_tree,
+ hf_tn3270_partition_id,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(sf_tree,
+ hf_tn3270_scs_data,
+ tvb, offset,
+ (sf_body_length - (offset - start)),
+ ENC_NA);
+ offset += (sf_body_length - (offset - start));
+ break;
+ case SF_OB_SET_REPLY_MODE:
+ offset += dissect_set_reply_mode(sf_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_OB_SELECT_FORMAT_GROUP:
+ proto_tree_add_item(sf_tree,
+ hf_tn3270_partition_id,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(sf_tree,
+ hf_tn3270_format_group,
+ tvb, offset,
+ (sf_body_length - (offset - start)),
+ ENC_EBCDIC|ENC_NA);
+ offset += (sf_body_length - (offset - start));
+ break;
+ case SF_OB_SET_WINDOW_ORIGIN:
+ proto_tree_add_item(sf_tree,
+ hf_tn3270_partition_id,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(sf_tree,
+ hf_tn3270_partition_rw,
+ tvb, offset,
2,
ENC_BIG_ENDIAN);
- offset++;
- switch (full_sf_id) {
- case BEGIN_OR_END_OF_FILE:
- proto_tree_add_item(tn3270_tree,
- hf_tn3270_partition_id,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ offset += 2;
+ proto_tree_add_item(sf_tree,
+ hf_tn3270_partition_cw,
+ tvb, offset,
+ 2,
+ ENC_BIG_ENDIAN);
+ offset += 2;
+ break;
+ case SF_OB_BEGIN_OR_END_OF_FILE:
+ proto_tree_add_item(sf_tree,
+ hf_tn3270_partition_id,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
/*TODO: use bits_text */
- proto_tree_add_bits_item(tn3270_tree,
- hf_tn3270_begin_end_flags1,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
- proto_tree_add_bits_item(tn3270_tree,
- hf_tn3270_begin_end_flags2,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ proto_tree_add_bits_item(sf_tree,
+ hf_tn3270_begin_end_flags1,
+ tvb, offset<<3,
+ 2,
+ ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(sf_tree,
+ hf_tn3270_begin_end_flags2,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
break;
- case LOAD_COLOR_TABLE:
+ case SF_OB_LOAD_COLOR_TABLE:
/* Refer to related graphics docs !*/
- proto_tree_add_item(tn3270_tree,
- hf_tn3270_load_color_command,
- tvb, offset,
- (sf_length - 4),
- ENC_NA);
- offset+=(sf_length - 4);
+ proto_tree_add_item(sf_tree,
+ hf_tn3270_load_color_command,
+ tvb, offset,
+ sf_body_length,
+ ENC_NA);
+ offset += sf_body_length;
break;
- case LOAD_FORMAT_STORAGE:
- offset += dissect_load_format_storage(tn3270_tree, tvb, offset, sf_length);
+ case SF_OB_LOAD_FORMAT_STORAGE:
+ offset += dissect_load_format_storage(sf_tree, tvb, offset, sf_body_length);
break;
- case LOAD_LINE_TYPE:
+ case SF_OB_LOAD_LINE_TYPE:
/* Refer to related graphics docs !*/
- proto_tree_add_item(tn3270_tree,
- hf_tn3270_load_line_type_command,
- tvb, offset,
- (sf_length - 4),
- ENC_NA);
- offset+=(sf_length - 4);
+ proto_tree_add_item(sf_tree,
+ hf_tn3270_load_line_type_command,
+ tvb, offset,
+ sf_body_length,
+ ENC_NA);
+ offset += sf_body_length;
break;
- case MODIFY_PARTITION:
- offset += dissect_modify_partition(tn3270_tree, tvb, offset, sf_length);
+ case SF_OB_MODIFY_PARTITION:
+ offset += dissect_modify_partition(sf_tree, tvb, offset, sf_body_length);
break;
- case OUTBOUND_TEXT_HEADER:
- offset += dissect_outbound_text_header(tn3270_tree, tvb, offset, sf_length);
+ case SF_OB_OUTBOUND_TEXT_HEADER:
+ offset += dissect_outbound_text_header(sf_tree, tvb, offset, sf_body_length);
break;
- case REQUEST_RECOVERY_DATA:
- proto_tree_add_item(tn3270_tree,
- hf_tn3270_resbyte,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ case SF_OB_REQUEST_RECOVERY_DATA:
+ proto_tree_add_item(sf_tree,
+ hf_tn3270_resbyte,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
break;
- case RESTART:
- offset += dissect_restart(tn3270_tree, tvb, offset, sf_length);
+ case SF_OB_RESTART:
+ offset += dissect_restart(sf_tree, tvb, offset, sf_body_length);
break;
- case SELECT_COLOR_TABLE:
- proto_tree_add_item(tn3270_tree,
- hf_tn3270_color_command,
- tvb, offset,
- 2,
- ENC_BIG_ENDIAN);
- offset+=2;
+ case SF_OB_SELECT_COLOR_TABLE:
+ proto_tree_add_item(sf_tree,
+ hf_tn3270_color_command,
+ tvb, offset,
+ 2,
+ ENC_BIG_ENDIAN);
+ offset += 2;
break;
- case SET_CHECKPOINT_INTERVAL:
- proto_tree_add_item(tn3270_tree,
- hf_tn3270_resbyte,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
- proto_tree_add_item(tn3270_tree,
- hf_tn3270_interval,
- tvb, offset,
- 2,
- ENC_BIG_ENDIAN);
- offset+=2;
+ case SF_OB_SET_CHECKPOINT_INTERVAL:
+ proto_tree_add_item(sf_tree,
+ hf_tn3270_resbyte,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(sf_tree,
+ hf_tn3270_interval,
+ tvb, offset,
+ 2,
+ ENC_BIG_ENDIAN);
+ offset += 2;
break;
- case SET_MSR_CONTROL:
- offset += dissect_set_msr_control(tn3270_tree, tvb, offset, sf_length);
+ case SF_OB_SET_MSR_CONTROL:
+ offset += dissect_set_msr_control(sf_tree, tvb, offset, sf_body_length);
break;
- case SET_PARTITION_CHARACTERISTICS:
- offset += dissect_set_partition_characteristics(tn3270_tree, tvb, offset, sf_length);
+ case SF_OB_SET_PARTITION_CHARACTERISTICS:
+ offset += dissect_set_partition_characteristics(sf_tree, tvb, offset, sf_body_length);
break;
- case SET_PRINTER_CHARACTERISTICS:
- offset += dissect_set_printer_characteristics(tn3270_tree, tvb, offset, sf_length);
+ case SF_OB_SET_PRINTER_CHARACTERISTICS:
+ offset += dissect_set_printer_characteristics(sf_tree, tvb, offset, sf_body_length);
break;
- case TYPE_1_TEXT_OUTBOUND:
- offset += dissect_type_1_text(tn3270_tree, tvb, offset, sf_length);
+ case SF_OB_TYPE_1_TEXT_OUTBOUND:
+ offset += dissect_type_1_text(sf_tree, tvb, offset, sf_body_length);
break;
default:
- offset += process_in_out_structured_fields(tn3270_tree, tvb, offset, sf_length,
- full_sf_id);
+ DISSECTOR_ASSERT_NOT_REACHED();
break;
}
return (offset - start);
}
+/* sf_body_length is the total length of the structured field including the sf_len and sf_id fields */
+/* call only with valid sf_id */
static gint
-dissect_outbound_structured_fields(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
+process_outbound_inbound_structured_field(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
+ tn3270_conv_info_t *tn3270_info _U_, guint sf_id, gint sf_body_length)
{
- int start = offset;
- int sf_id;
- gint16 sf_length;
- proto_tree *sf_tree;
- proto_item *ti;
-
- while (tvb_offset_exists(tvb, offset)) {
- sf_length = tvb_get_ntohs(tvb, offset);
- proto_tree_add_item(tn3270_tree,
- hf_tn3270_sf_length,
- tvb, offset,
- 2,
- ENC_BIG_ENDIAN);
- offset+=2;
- sf_id = tvb_get_guint8(tvb, offset);
- ti = proto_tree_add_item(tn3270_tree, hf_tn3270_sf_outbound_id, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
- sf_tree = proto_item_add_subtree(ti, ett_sf);
- switch (sf_id) {
- case 0x0F:
- case 0x10:
- process_double_byte_sf(sf_tree, tvb, offset, sf_length);
- break;
- case READ_PARTITION:
- offset += dissect_read_partition(sf_tree, tvb, offset, sf_length);
- break;
- case ACTIVATE_PARTITION:
- case DESTROY_PARTITION:
- case RESET_PARTITION:
- proto_tree_add_item(sf_tree,
- hf_tn3270_partition_id,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
- break;
- case CREATE_PARTITION:
- offset += dissect_create_partition(sf_tree, tvb, offset, sf_length);
- break;
- case ERASE_OR_RESET:
- proto_tree_add_bits_item(sf_tree,
- hf_tn3270_erase_flags,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
- break;
- case LOAD_PROGRAMMED_SYMBOLS:
- offset += dissect_load_programmed_symbols(sf_tree, tvb, offset, sf_length);
- break;
- case OUTBOUND_3270DS:
- offset += dissect_outbound_3270ds(sf_tree, tvb, offset, sf_length);
- break;
- case PRESENT_ABSOLUTE_FORMAT:
- offset += dissect_present_absolute_format(sf_tree, tvb, offset, sf_length);
- break;
- case PRESENT_RELATIVE_FORMAT:
- offset += dissect_present_relative_format(sf_tree, tvb, offset, sf_length);
- break;
- case SCS_DATA:
- proto_tree_add_item(sf_tree,
- hf_tn3270_partition_id,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
- proto_tree_add_item(sf_tree,
- hf_tn3270_scs_data,
- tvb, offset,
- (sf_length - 4),
- ENC_NA);
- offset+=(sf_length - 4);
- break;
- case SET_REPLY_MODE:
- offset += dissect_set_reply_mode(sf_tree, tvb, offset, sf_length);
- break;
- case SELECT_FORMAT_GROUP:
- proto_tree_add_item(sf_tree,
- hf_tn3270_partition_id,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
- proto_tree_add_item(sf_tree,
- hf_tn3270_format_group,
- tvb, offset,
- (sf_length - 4),
- ENC_EBCDIC|ENC_NA);
- offset+=(sf_length - 4);
- break;
- case SET_WINDOW_ORIGIN:
- proto_tree_add_item(sf_tree,
- hf_tn3270_partition_id,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
- proto_tree_add_item(sf_tree,
- hf_tn3270_partition_rw,
- tvb, offset,
- 2,
- ENC_BIG_ENDIAN);
- offset+=2;
- proto_tree_add_item(sf_tree,
- hf_tn3270_partition_cw,
- tvb, offset,
- 2,
- ENC_BIG_ENDIAN);
- offset+=2;
- break;
- default:
- break;
- }
+ gint start = offset;
+
+ switch (sf_id) {
+ case SF_OB_IB_DATA_CHAIN:
+ offset += dissect_data_chain(tn3270_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_OB_IB_DESTINATION_OR_ORIGIN:
+ proto_tree_add_item(tn3270_tree,
+ hf_tn3270_destination_or_origin_flags_input_control,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(tn3270_tree,
+ hf_tn3270_resbyte,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(tn3270_tree,
+ hf_tn3270_destination_or_origin_doid,
+ tvb, offset,
+ 2,
+ ENC_BIG_ENDIAN);
+ offset += 2;
+ break;
+ case SF_OB_IB_OBJECT_DATA:
+ case SF_OB_IB_OBJECT_CONTROL:
+ case SF_OB_IB_OBJECT_PICTURE:
+ case SF_OB_IB_OEM_DATA: /* FIXME: Not really but same layout */
+ offset += dissect_object_control(tn3270_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_OB_IB_SAVE_OR_RESTORE_FORMAT:
+ offset += dissect_save_or_restore_format(tn3270_tree, tvb, offset, sf_body_length);
+ break;
+ case SF_OB_IB_SELECT_IPDS_MODE:
+ proto_tree_add_item(tn3270_tree,
+ hf_tn3270_resbytes,
+ tvb, offset,
+ 2,
+ ENC_BIG_ENDIAN);
+ offset += 2;
+ break;
+ default:
+ DISSECTOR_ASSERT_NOT_REACHED();
+ break;
}
+
return (offset - start);
}
+static proto_tree *
+display_sf_hdr(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
+ gint sf_length, guint sf_id, guint sf_id_len, const gchar *sf_id_str)
+{
+ proto_item *pi;
+ proto_tree *sf_tree;
+
+ pi = proto_tree_add_text(tn3270_tree, tvb, offset, sf_length,
+ "Structured Field: %s", sf_id_str);
+ sf_tree = proto_item_add_subtree(pi, ett_sf);
+
+ proto_tree_add_item(sf_tree,
+ hf_tn3270_sf_length,
+ tvb, offset,
+ 2,
+ ENC_BIG_ENDIAN);
+
+ proto_tree_add_uint_format_value(sf_tree,
+ (sf_id_len == 1) ? hf_tn3270_sf_single_byte_id : hf_tn3270_sf_double_byte_id,
+ tvb, offset+2, sf_id_len,
+ sf_id, "%s (0x%0*x)", sf_id_str, sf_id_len*2, sf_id);
+
+ return sf_tree;
+}
+
static gint
-dissect_inbound_structured_fields(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
+dissect_structured_fields(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
+ tn3270_conv_info_t *tn3270_info, gboolean direction_inbound)
{
- int start = offset;
- gint16 sf_length;
- guint16 sf_id;
- proto_tree *sf_tree;
- proto_item *ti;
-
- while (tvb_offset_exists(tvb, offset)) {
- /*Handle NULL bytes until we find a length value */
- sf_length = tvb_get_ntohs(tvb, offset);
- while (!sf_length){
+ proto_tree *sf_tree;
+ gint start;
+ gint sf_length;
+ guint sf_id;
+ guint sf_id_len;
+ const gchar *sf_id_str;
+
+ start = offset;
+
+ while (tvb_reported_length_remaining(tvb, offset) >= 2) {
+
+ /* Handle NULL bytes until we find a length value */
+ /* XXX: An earlier version of the code for structured field */
+ /* processing did this check only for inbound structured */
+ /* fields. Should the same be done in this code which */
+ /* combines handling for both inbound and outbound */
+ /* structured fields ? */
+ if ((sf_length = tvb_get_ntohs(tvb, offset)) == 0) {
proto_tree_add_item(tn3270_tree,
- hf_tn3270_null,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
- sf_length = tvb_get_ntohs(tvb, offset);
+ hf_tn3270_null,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
+ continue;
}
- proto_tree_add_item(tn3270_tree,
- hf_tn3270_sf_length,
- tvb, offset,
- 2,
- ENC_BIG_ENDIAN);
- offset+=2;
-
- sf_id = tvb_get_ntohs(tvb, offset);
- ti = proto_tree_add_item(tn3270_tree, hf_tn3270_sf_inbound_id, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset+=2;
- sf_tree = proto_item_add_subtree(ti, ett_sf);
- switch (sf_id) {
- case EXCEPTION_OR_STATUS:
- offset += dissect_exception_or_status(sf_tree, tvb, offset, sf_length);
- break;
- case INBOUND_TEXT_HEADER:
- offset += dissect_inbound_text_header(sf_tree, tvb, offset, sf_length);
- break;
- case INBOUND_3270DS:
- offset += dissect_inbound_3270ds(sf_tree, tvb, offset, sf_length);
- break;
- case RECOVERY_DATA:
- offset += dissect_recovery_data(sf_tree, tvb, offset, sf_length);
- break;
- case TYPE_1_TEXT_INBOUND:
- offset += dissect_type_1_text(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_ALPHANUMERIC_PARTITIONS:
- offset += dissect_query_reply_alphanumeric(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_AUXILIARY_DEVICE:
- case QUERY_REPLY_BEGIN_OR_END_OF_FILE:
- offset += dissect_query_reply_resbytes(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_CHARACTER_SETS:
- offset += dissect_query_reply_character_sets(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_COLOR:
- offset += dissect_query_reply_color(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_COOPERATIVE_PROCESSING_REQUESTOR:
- offset += dissect_query_reply_cooperative(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_DATA_CHAINING:
- offset += dissect_query_reply_data_chaining(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_DATA_STREAMS:
- offset += dissect_query_reply_data_streams(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_DBCS_ASIA:
- offset += dissect_query_reply_dbcs_asia(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_DEVICE_CHARACTERISTICS:
- /*TODO: implement this beast */
- offset += dissect_query_reply_device_characteristics(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_SUMMARY:
- offset += dissect_query_reply_summary(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_USABLE_AREA:
- offset += dissect_query_reply_usable_area(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_HIGHLIGHTING:
- offset += dissect_query_reply_highlighting(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_REPLY_MODES:
- offset += dissect_query_reply_modes(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_DISTRIBUTED_DATA_MANAGEMENT:
- offset += dissect_query_reply_distributed_data_management(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_RPQ_NAMES:
- offset += dissect_query_reply_rpq_names(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_IMPLICIT_PARTITION:
- offset += dissect_query_reply_implicit_partitions(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_OEM_AUXILIARY_DEVICE:
- offset += dissect_query_reply_oem_auxiliary_device(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_DOCUMENT_INTERCHANGE_ARCHITECTURE:
- offset += dissect_query_reply_document_interchange_architecture(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_EXTENDED_DRAWING_ROUTINE:
- offset += dissect_query_reply_extended_drawing_routine(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_FIELD_OUTLINING:
- offset += dissect_query_reply_field_outlining(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_FIELD_VALIDATION:
- offset += dissect_3270_field_validation(sf_tree, tvb, offset);
- break;
- case QUERY_REPLY_FORMAT_STORAGE_AUXILIARY_DEVICE:
- offset += dissect_query_reply_format_storage_aux_device(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_GRAPHIC_COLOR:
- case QUERY_REPLY_GRAPHIC_SYMBOL_SETS:
- case QUERY_REPLY_IMAGE:
- case QUERY_REPLY_LINE_TYPE:
- case QUERY_REPLY_PROCEDURE:
- case QUERY_REPLY_SEGMENT:
- /* Not an error - just has a data field like 'extended drawing'*/
- offset += dissect_query_reply_extended_drawing_routine(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_IBM_AUXILIARY_DEVICE:
- offset += dissect_query_reply_ibm_aux_device(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_IOCA_AUXILIARY_DEVICE:
- offset += dissect_query_reply_ioca_aux_device(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_MSR_CONTROL:
- offset += dissect_query_reply_msr_control(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_FORMAT_PRESENTATION:
- case QUERY_REPLY_NULL:
- case QUERY_REPLY_PORT:
- /* This field is always empty */
- break;
- case QUERY_REPLY_PAPER_FEED_TECHNIQUES:
- offset += dissect_query_reply_paper_feed_techniques(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_PARTITION_CHARACTERISTICS:
- offset += dissect_query_reply_partition_characteristics(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_PRODUCT_DEFINED_DATA_STREAM:
- offset += dissect_query_reply_product_defined_data_stream(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_SAVE_OR_RESTORE_FORMAT:
- offset += dissect_query_reply_save_or_restore_format(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_SETTABLE_PRINTER_CHARACTERISTICS:
- offset += dissect_query_reply_settable_printer_characteristics(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_STORAGE_POOLS:
- offset += dissect_query_reply_storage_pools(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_TEXT_PARTITIONS:
- offset += dissect_query_reply_text_partitions(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_TRANSPARENCY:
- offset += dissect_query_reply_transparency(sf_tree, tvb, offset, sf_length);
- break;
- case QUERY_REPLY_3270_IPDS:
- offset += dissect_query_reply_3270_ipds(sf_tree, tvb, offset, sf_length);
- break;
- default:
- break;
+ sf_id = tvb_get_guint8(tvb, offset+2);
+ sf_id_len = 1;
+ if ((sf_id == 0x0F) ||
+ (sf_id == 0x10) ||
+ (sf_id == 0x81)) {
+ sf_id = (sf_id << 8) + tvb_get_guint8(tvb, offset+3);
+ sf_id_len = 2;
}
- }
+
+ sf_id_str = match_strval(sf_id, direction_inbound ?
+ vals_inbound_structured_fields : vals_outbound_structured_fields);
+ if (sf_id_str != NULL) {
+ sf_tree = display_sf_hdr(tn3270_tree, tvb, offset,
+ sf_length, sf_id, sf_id_len, sf_id_str);
+ offset += (sf_id_len + 2);
+ if (direction_inbound) {
+ offset += process_inbound_structured_field(sf_tree, tvb, offset, tn3270_info, sf_id, sf_length-2-sf_id_len);
+ }
+ else {
+ offset += process_outbound_structured_field(sf_tree, tvb, offset, tn3270_info, sf_id, sf_length-2-sf_id_len);
+ }
+ continue;
+ }
+
+ /* Not found above: See if an "outbound-inbound" field */
+ sf_id_str = match_strval(sf_id, vals_outbound_inbound_structured_fields);
+ if (sf_id_str != NULL) {
+ sf_tree = display_sf_hdr(tn3270_tree, tvb, offset,
+ sf_length, sf_id, sf_id_len, sf_id_str);
+ offset += (sf_id_len + 2);
+ offset += process_outbound_inbound_structured_field(sf_tree, tvb, offset, tn3270_info, sf_id, sf_length-2-sf_id_len);
+ continue;
+ }
+
+ /* Not found */
+ sf_id_str = ep_strdup_printf("Unknown [%0*x]", sf_id_len*2, sf_id);
+ display_sf_hdr(tn3270_tree, tvb, offset, sf_length,
+ sf_length, sf_id_len, sf_id_str);
+ offset += sf_length;
+ continue;
+ } /* while */
return (offset - start);
}
+
/* Start: Handle WCC, Orders and Data */
static gint
dissect_stop_address(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
{
- int start = offset;
- int is_ge;
+ gint start = offset;
+ gint is_oc_ge;
proto_tree_add_item(tn3270_tree,
- hf_tn3270_stop_address,
- tvb, offset,
- 2,
- ENC_BIG_ENDIAN);
- offset++;
- is_ge = tvb_get_guint8(tvb, offset);
- if (is_ge != GE) {
+ hf_tn3270_stop_address,
+ tvb, offset,
+ 2,
+ ENC_BIG_ENDIAN);
+ offset += 1;
+ is_oc_ge = tvb_get_guint8(tvb, offset);
+ if (is_oc_ge != OC_GE) {
proto_tree_add_item(tn3270_tree,
- hf_tn3270_character_code,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ hf_tn3270_character_code,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
}
return (offset - start);
@@ -4593,28 +4784,31 @@ dissect_stop_address(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
*
* XXX - what about 16-bit addressing?
*/
-#define SBA_ADDRESS_FORMAT_MASK 0xC000
-#define SBA_ADDRESS_MASK_SHIFT 14
-#define SBA_ADDRESS_FORMAT(address) (((address) & SBA_ADDRESS_FORMAT_MASK) >> SBA_ADDRESS_MASK_SHIFT)
-#define SBA_ADDRESS_VALUE_MASK 0x3FFF
-#define SBA_ADDRESS_VALUE(address) ((address) & SBA_ADDRESS_VALUE_MASK)
+#define SBA_ADDRESS_FORMAT_MASK 0xC000
+#define SBA_ADDRESS_MASK_SHIFT 14
+#define SBA_ADDRESS_FORMAT(address) (((address) & SBA_ADDRESS_FORMAT_MASK) >> SBA_ADDRESS_MASK_SHIFT)
+
+#define SBA_ADDRESS_VALUE_MASK 0x3FFF
+#define SBA_ADDRESS_VALUE(address) ((address) & SBA_ADDRESS_VALUE_MASK)
-#define SBA_14_BIT_BINARY 0x0
-#define SBA_12_BIT_CODED_1 0x1
-#define SBA_RESERVED 0x2
-#define SBA_12_BIT_CODED_2 0x3
+#define SBA_14_BIT_BINARY 0x0
+#define SBA_12_BIT_CODED_1 0x1
+#define SBA_RESERVED 0x2
+#define SBA_12_BIT_CODED_2 0x3
static gint
-dissect_sba(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
+dissect_buffer_address(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset, gint hf, tn3270_conv_info_t *tn3270_info)
{
- int start = offset;
+ gint start = offset;
guint16 buffer_addr;
guint16 address_format, address_value;
- guint8 b1, b2;
+ guint8 b1, b2;
+ guint8 rowsx = tn3270_info->rows;
+ guint8 colsx = tn3270_info->cols;
- buffer_addr = tvb_get_ntohs(tvb, offset);
+ buffer_addr = tvb_get_ntohs(tvb, offset);
address_format = SBA_ADDRESS_FORMAT(buffer_addr);
- address_value = SBA_ADDRESS_VALUE(buffer_addr);
+ address_value = SBA_ADDRESS_VALUE(buffer_addr);
/*
* XXX - put the address format and address value into the protocol
@@ -4622,54 +4816,54 @@ dissect_sba(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
*/
switch (address_format) {
- case SBA_14_BIT_BINARY:
- proto_tree_add_uint_format_value(tn3270_tree,
- hf_tn3270_buffer_address,
- tvb, offset, 2,
- buffer_addr,
- "14-bit binary, %u = row %u, column %u, for %ux%u display (0x%04x)",
- address_value,
- (address_value / COLS) + 1,
- (address_value % COLS) + 1,
- ROWS, COLS,
- buffer_addr);
- break;
+ case SBA_14_BIT_BINARY:
+ proto_tree_add_uint_format_value(tn3270_tree,
+ hf,
+ tvb, offset, 2,
+ buffer_addr,
+ "14-bit address, %u = row %u, column %u [assuming a %ux%u display] (0x%04x)",
+ address_value,
+ (address_value / colsx) + 1,
+ (address_value % colsx) + 1,
+ rowsx, colsx,
+ buffer_addr);
+ break;
- case SBA_12_BIT_CODED_1:
- case SBA_12_BIT_CODED_2:
- /*
- * This is a wacky encoding. At least as I read the IBM document
- * in question, the lower 6 bits of the first byte of the SBA
- * address, and the lower 6 bits of the second byte of the SBA
- * address, are combined into a 12-bit binary address. The upper
- * 2 bits of the first byte are the address format; the upper 2
- * bits of the second byte are ignored.
- */
- b1 = (address_value >> 8) & 0x3F;
- b2 = (address_value >> 0) & 0x3F;
- address_value = (b1 << 6) | b2;
- proto_tree_add_uint_format_value(tn3270_tree,
- hf_tn3270_buffer_address,
- tvb, offset, 2,
- buffer_addr,
- "12-bit coded, %u = row %u, column %u, for %ux%u display (0x%04x)",
- address_value,
- (address_value / COLS) + 1,
- (address_value % COLS) + 1,
- ROWS, COLS,
- buffer_addr);
- break;
+ case SBA_12_BIT_CODED_1:
+ case SBA_12_BIT_CODED_2:
+ /*
+ * This is a wacky encoding. At least as I read the IBM document
+ * in question, the lower 6 bits of the first byte of the SBA
+ * address, and the lower 6 bits of the second byte of the SBA
+ * address, are combined into a 12-bit binary address. The upper
+ * 2 bits of the first byte are the address format; the upper 2
+ * bits of the second byte are ignored.
+ */
+ b1 = (address_value >> 8) & 0x3F;
+ b2 = (address_value >> 0) & 0x3F;
+ address_value = (b1 << 6) | b2;
+ proto_tree_add_uint_format_value(tn3270_tree,
+ hf,
+ tvb, offset, 2,
+ buffer_addr,
+ "12-bit address, %u = row %u, column %u [assuming a %ux%u display] (0x%04x)",
+ address_value,
+ (address_value / colsx) + 1,
+ (address_value % colsx) + 1,
+ rowsx, colsx,
+ buffer_addr);
+ break;
- case SBA_RESERVED:
- proto_tree_add_uint_format_value(tn3270_tree,
- hf_tn3270_buffer_address,
- tvb, offset, 2,
- buffer_addr,
- "Reserved (0x%04x)",
- buffer_addr);
- break;
+ case SBA_RESERVED:
+ proto_tree_add_uint_format_value(tn3270_tree,
+ hf,
+ tvb, offset, 2,
+ buffer_addr,
+ "Reserved (0x%04x)",
+ buffer_addr);
+ break;
}
- offset+=2;
+ offset += 2;
return (offset - start);
}
@@ -4677,70 +4871,70 @@ dissect_sba(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
static gint
dissect_field_attribute_pair(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
{
- int start = offset;
- int attribute_type;
+ gint start = offset;
+ gint attribute_type;
attribute_type = tvb_get_guint8(tvb, offset);
proto_tree_add_item(tn3270_tree,
- hf_tn3270_attribute_type,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ hf_tn3270_attribute_type,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
switch (attribute_type) {
- case ALL_CHARACTER_ATTRIBUTES:
+ case AT_ALL_CHARACTER_ATTRIBUTES:
proto_tree_add_item(tn3270_tree,
hf_tn3270_all_character_attributes,
tvb, offset,
1,
ENC_BIG_ENDIAN);
- offset++;
+ offset += 1;
break;
- case T3270_FIELD_ATTRIBUTE:
+ case AT_T3270_FIELD_ATTRIBUTE:
offset += dissect_3270_field_attribute(tn3270_tree, tvb, offset);
break;
- case EXTENDED_HIGHLIGHTING:
+ case AT_EXTENDED_HIGHLIGHTING:
proto_tree_add_item(tn3270_tree,
hf_tn3270_extended_highlighting,
tvb, offset,
1,
ENC_BIG_ENDIAN);
- offset++;
+ offset += 1;
break;
- case FOREGROUND_COLOR:
- case BACKGROUND_COLOR:
+ case AT_FOREGROUND_COLOR:
+ case AT_BACKGROUND_COLOR:
proto_tree_add_item(tn3270_tree,
hf_tn3270_color,
tvb, offset,
1,
ENC_BIG_ENDIAN);
- offset++;
+ offset += 1;
break;
- case CHARACTER_SET:
+ case AT_CHARACTER_SET:
proto_tree_add_item(tn3270_tree,
hf_tn3270_character_set,
tvb, offset,
1,
ENC_BIG_ENDIAN);
- offset++;
+ offset += 1;
break;
- case FIELD_OUTLINING:
+ case AT_FIELD_OUTLINING:
proto_tree_add_item(tn3270_tree,
hf_tn3270_field_outlining,
tvb, offset,
1,
ENC_BIG_ENDIAN);
- offset++;
+ offset += 1;
break;
- case TRANSPARENCY:
+ case AT_TRANSPARENCY:
proto_tree_add_item(tn3270_tree,
hf_tn3270_transparency,
tvb, offset,
1,
ENC_BIG_ENDIAN);
- offset++;
+ offset += 1;
break;
- case FIELD_VALIDATION:
+ case AT_FIELD_VALIDATION:
offset += dissect_3270_field_validation(tn3270_tree, tvb, offset);
break;
}
@@ -4751,85 +4945,83 @@ dissect_field_attribute_pair(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset
static gint
dissect_field_attribute_pairs(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
{
- int start = offset;
- int no_of_pairs;
- int i;
+ gint start = offset;
+ gint no_of_pairs;
+ gint i;
no_of_pairs = tvb_get_guint8(tvb, offset);
proto_tree_add_item(tn3270_tree,
- hf_tn3270_number_of_attributes,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ hf_tn3270_number_of_attributes,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
for (i=0; i < no_of_pairs; i++) {
offset += dissect_field_attribute_pair(tn3270_tree, tvb, offset);
}
+
return (offset - start);
}
static gint
-dissect_orders_and_data(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
+dissect_orders_and_data(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset, tn3270_conv_info_t *tn3270_info)
{
gint start = offset;
gint order_code;
/* Order Code */
- while (tvb_offset_exists(tvb, offset)) {
+ /* XXX: '0' is treated as data; See comment under add_data_until_next_order_code() */
+ while (tvb_reported_length_remaining(tvb, offset) > 0) {
order_code = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(tn3270_tree,
- hf_tn3270_order_code,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
- switch (order_code) {
- case SF:
- offset += dissect_3270_field_attribute(tn3270_tree, tvb, offset);
- break;
- case MF:
- case SFE:
- offset += dissect_field_attribute_pairs(tn3270_tree, tvb, offset);
- break;
- case SA:
- offset += dissect_field_attribute_pair(tn3270_tree, tvb, offset);
- break;
- case EUA:
- case RA:
- offset += dissect_stop_address(tn3270_tree, tvb, offset);
- break;
- case GE:
- proto_tree_add_item(tn3270_tree,
- hf_tn3270_character_code,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
- break;
- case SBA:
- offset += dissect_sba(tn3270_tree, tvb, offset);
- break;
-/* case PT:*/
- case IC:
- break;
- case EW:
- ROWS=24;
- COLS=80;
- break;
- case EWA:
- ROWS=MAXROWS;
- COLS=MAXCOLS;
- break;
- default:
- proto_tree_add_text(tn3270_tree, tvb, offset, 1, "Bogus value: %u", order_code);
- offset ++;
- break;
+ if ((order_code > 0) && (order_code <= OC_MAX)) { /* XXX: also 0xFF ?? */
+ proto_tree_add_item(tn3270_tree,
+ hf_tn3270_order_code,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
+
+ switch (order_code) {
+ case OC_SF:
+ offset += dissect_3270_field_attribute(tn3270_tree, tvb, offset);
+ break;
+ case OC_MF:
+ case OC_SFE:
+ offset += dissect_field_attribute_pairs(tn3270_tree, tvb, offset);
+ break;
+ case OC_SA:
+ offset += dissect_field_attribute_pair(tn3270_tree, tvb, offset);
+ break;
+ case OC_EUA:
+ case OC_RA:
+ offset += dissect_stop_address(tn3270_tree, tvb, offset);
+ break;
+ case OC_GE:
+ proto_tree_add_item(tn3270_tree,
+ hf_tn3270_character_code,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
+ case OC_SBA:
+ offset += dissect_buffer_address(tn3270_tree, tvb, offset, hf_tn3270_buffer_address, tn3270_info);
+ break;
+ case OC_PT: /* XXX: This case was previously commented out; I don't know why */
+ case OC_IC:
+ break;
+ default:
+ proto_tree_add_text(tn3270_tree, tvb, offset, 1, "Bogus value: %u", order_code);
+ break;
+ } /* switch */
}
- offset += add_data_until_next_order_code(tn3270_tree, tvb, offset);
- }
- offset += add_data_until_next_order_code(tn3270_tree, tvb, offset);
+ else {
+ offset += add_data_until_next_order_code(tn3270_tree, tvb, offset);
+ }
+ } /* while */
+
return (offset - start);
}
@@ -4839,23 +5031,47 @@ dissect_orders_and_data(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
static gint
dissect_tn3270e_header(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
{
-
- int start=offset;
- gint data_type;
- int len = 0;
-
- hf_items fields[] = {
- { hf_tn3270_tn3270e_data_type, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_tn3270e_request_flag, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_tn3270e_response_flag_3270_SCS, 0, 1, 0, ENC_BIG_ENDIAN },
- { hf_tn3270_tn3270e_seq_number, 0, 2, 0, ENC_BIG_ENDIAN },
- { 0, 0, 0, 0, 0 }
+ proto_item *pi;
+ proto_tree *tn3270e_hdr_tree;
+ gint start = offset;
+ gint data_type;
+
+ static const hf_items fields[] = {
+ { &hf_tn3270_tn3270e_data_type, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { &hf_tn3270_tn3270e_request_flag, NULL, 1, NULL, ENC_BIG_ENDIAN },
+ { NULL, NULL, 0, NULL, 0 }
};
data_type = tvb_get_guint8(tvb, offset);
- offset += tn3270_add_hf_items(tn3270_tree, tvb, offset,
+ pi = proto_tree_add_text(tn3270_tree, tvb, offset, -1,
+ "TN3270E Header (Data Type: %s)",
+ val_to_str_const(data_type, vals_tn3270_header_data_types, "Unknown"));
+ tn3270e_hdr_tree = proto_item_add_subtree(pi, ett_tn3270e_hdr);
+
+ offset += tn3270_add_hf_items(tn3270e_hdr_tree, tvb, offset,
fields);
+ switch(data_type) {
+ case TN3270E_3270_DATA:
+ case TN3270E_SCS_DATA:
+ proto_tree_add_item(tn3270e_hdr_tree, hf_tn3270_tn3270e_response_flag_3270_SCS, tvb, offset, 1, ENC_BIG_ENDIAN);
+ break;
+ case TN3270E_RESPONSE:
+ proto_tree_add_item(tn3270e_hdr_tree, hf_tn3270_tn3270e_response_flag_response, tvb, offset, 1, ENC_BIG_ENDIAN);
+ break;
+ case TN3270E_BIND_IMAGE:
+ case TN3270E_NVT_DATA:
+ case TN3270E_REQUEST:
+ case TN3270E_SSCP_LU_DATA:
+ case TN3270E_UNBIND:
+ default:
+ proto_tree_add_item(tn3270e_hdr_tree, hf_tn3270_tn3270e_response_flag_unused, tvb, offset, 1, ENC_BIG_ENDIAN);
+ break;
+ }
+ offset += 1;
+
+ proto_tree_add_item(tn3270e_hdr_tree, hf_tn3270_tn3270e_seq_number, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
switch (data_type) {
case TN3270E_BIND_IMAGE:
@@ -4865,65 +5081,105 @@ dissect_tn3270e_header(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
case TN3270E_SCS_DATA:
case TN3270E_SSCP_LU_DATA:
case TN3270E_UNBIND:
- len = tvb_length_remaining(tvb, offset);
- proto_tree_add_item(tn3270_tree, hf_tn3270_tn3270e_header_data, tvb, offset, len, ENC_EBCDIC|ENC_NA);
- offset += len;
+ proto_tree_add_item(tn3270e_hdr_tree, hf_tn3270_tn3270e_header_data, tvb, offset, -1, ENC_EBCDIC|ENC_NA);
+ offset += tvb_reported_length_remaining(tvb, offset);
break;
default:
break;
}
+ proto_item_set_len(pi, offset - start);
+
return (offset - start);
}
/* Detect and Handle Direction of Stream */
static gint
-dissect_outbound_stream(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
+dissect_outbound_stream(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset, tn3270_conv_info_t *tn3270_info)
{
gint command_code;
gint start = offset;
+
/* Command Code*/
command_code = tvb_get_guint8(tvb, offset);
+ /* XXX: Storing rows/cols each time they change is not valid */
+ /* since packets can (will be) randomly selected for dissection */
+ /* after the initial dissection pass. In actuality screen size */
+ /* "state" needs to be associated in some manner with each */
+ /* frame of a conversation. */
+ switch (command_code) {
+ case CC_LCL_EW:
+ case CC_RMT_EW:
+ tn3270_info->rows = 24;
+ tn3270_info->cols = 80;
+ break;
+ case CC_LCL_EWA:
+ case CC_RMT_EWA:
+ tn3270_info->rows = tn3270_info->altrows;
+ tn3270_info->cols = tn3270_info->altcols;
+ break;
+ default:
+ break;
+ }
+
switch (command_code) {
- case W:
- case EW:
- case EWA:
- case SNA_W:
- case SNA_EW:
- case SNA_EWA:
+ case CC_LCL_W:
+ case CC_LCL_EW:
+ case CC_LCL_EWA:
+ case CC_LCL_EAU:
+ case CC_RMT_W:
+ case CC_RMT_EW:
+ case CC_RMT_EWA:
+ case CC_RMT_EAU:
proto_tree_add_item(tn3270_tree,
- hf_tn3270_command_code,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ hf_tn3270_command_code,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
/* WCC */
offset += dissect_wcc(tn3270_tree, tvb, offset);
- offset += dissect_orders_and_data(tn3270_tree, tvb, offset);
+ offset += dissect_orders_and_data(tn3270_tree, tvb, offset, tn3270_info);
break;
- case WSF:
- case SNA_WSF:
+ case CC_LCL_WSF:
+ case CC_RMT_WSF:
proto_tree_add_item(tn3270_tree,
- hf_tn3270_command_code,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
- offset += dissect_outbound_structured_fields(tn3270_tree, tvb, offset);
+ hf_tn3270_command_code,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
+ offset += dissect_structured_fields(tn3270_tree, tvb, offset, tn3270_info, FALSE);
+ break;
+ case CC_LCL_RB:
+ case CC_LCL_RM:
+ case CC_LCL_RMA:
+ case CC_RMT_RB:
+ case CC_RMT_RM:
+ case CC_RMT_RMA:
+ proto_tree_add_item(tn3270_tree,
+ hf_tn3270_command_code,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
break;
default:
+ /* XXX: Add expert item ? */
proto_tree_add_text(tn3270_tree, tvb, offset, 1, "Bogus value: %u", command_code);
- offset ++;
+ offset += 1;
break;
}
+
return (offset - start);
}
/* INBOUND DATA STREAM (DISPLAY -> MAINFRAME PROGRAM) */
+/* Dissect tvb as inbound */
static gint
-dissect_inbound_stream(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
+dissect_inbound_stream(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset, tn3270_conv_info_t *tn3270_info)
{
gint start = offset;
gint aid;
@@ -4931,73 +5187,67 @@ dissect_inbound_stream(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
/* Command Code*/
aid = tvb_get_guint8(tvb, offset);
proto_tree_add_item(tn3270_tree,
- hf_tn3270_aid,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
+ hf_tn3270_aid,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
switch (aid) {
- case STRUCTURED_FIELD:
- offset += dissect_inbound_structured_fields(tn3270_tree, tvb, offset);
+ case AID_STRUCTURED_FIELD:
+ offset += dissect_structured_fields(tn3270_tree, tvb, offset, tn3270_info, TRUE);
break;
- case READ_PARTITION_AID:
- case NO_AID_GENERATED:
- case NO_AID_GENERATED_(PRINTER_ONLY):
- case TRIGGER_ACTION:
- case TEST_REQ_AND_SYS_REQ:
- case PF1_KEY:
- case PF2_KEY:
- case PF3_KEY:
- case PF4_KEY:
- case PF5_KEY:
- case PF6_KEY:
- case PF7_KEY:
- case PF8_KEY:
- case PF9_KEY:
- case PF10_KEY:
- case PF11_KEY:
- case PF12_KEY:
- case PF13_KEY:
- case PF14_KEY:
- case PF15_KEY:
- case PF16_KEY:
- case PF17_KEY:
- case PF18_KEY:
- case PF19_KEY:
- case PF20_KEY:
- case PF21_KEY:
- case PF22_KEY:
- case PF23_KEY:
- case PF24_KEY:
- case PA1_KEY:
- case PA2_KEY_(CNCL):
- case PA3_KEY:
- case CLEAR_KEY:
- case CLEAR_PARTITION_KEY:
- case ENTER_KEY:
- case SELECTOR_PEN_ATTENTION:
- case OPERATOR_ID_READER:
- case MAG_READER_NUMBER:
- proto_tree_add_item(tn3270_tree,
- hf_tn3270_cursor_x,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
-
- proto_tree_add_item(tn3270_tree,
- hf_tn3270_cursor_y,
- tvb, offset,
- 1,
- ENC_BIG_ENDIAN);
- offset++;
- offset += dissect_orders_and_data(tn3270_tree, tvb, offset);
+ case AID_PA1_KEY:
+ case AID_PA2_KEY_CNCL:
+ case AID_PA3_KEY:
+ case AID_CLEAR_KEY:
+ /* Certain AID bytes need not be followed by anything */
+ /* XXX: Is this the correct/complete set of AID bytes for this case ? */
+ if (tvb_reported_length_remaining(tvb, offset) <= 0)
+ break;
+ /* fall into next */
+ case AID_READ_PARTITION_AID:
+ case AID_NO_AID_GENERATED:
+ case AID_NO_AID_GENERATED_PRINTER_ONLY:
+ case AID_TRIGGER_ACTION:
+ case AID_TEST_REQ_AND_SYS_REQ:
+ case AID_PF1_KEY:
+ case AID_PF2_KEY:
+ case AID_PF3_KEY:
+ case AID_PF4_KEY:
+ case AID_PF5_KEY:
+ case AID_PF6_KEY:
+ case AID_PF7_KEY:
+ case AID_PF8_KEY:
+ case AID_PF9_KEY:
+ case AID_PF10_KEY:
+ case AID_PF11_KEY:
+ case AID_PF12_KEY:
+ case AID_PF13_KEY:
+ case AID_PF14_KEY:
+ case AID_PF15_KEY:
+ case AID_PF16_KEY:
+ case AID_PF17_KEY:
+ case AID_PF18_KEY:
+ case AID_PF19_KEY:
+ case AID_PF20_KEY:
+ case AID_PF21_KEY:
+ case AID_PF22_KEY:
+ case AID_PF23_KEY:
+ case AID_PF24_KEY:
+ case AID_CLEAR_PARTITION_KEY:
+ case AID_ENTER_KEY:
+ case AID_SELECTOR_PEN_ATTENTION:
+ case AID_OPERATOR_ID_READER:
+ case AID_MAG_READER_NUMBER:
+ offset += dissect_buffer_address(tn3270_tree, tvb, offset, hf_tn3270_cursor_address, tn3270_info);
+ offset += dissect_orders_and_data(tn3270_tree, tvb, offset, tn3270_info);
break;
default:
proto_tree_add_text(tn3270_tree, tvb, offset, 1, "Bogus value: %u", aid);
- offset++;
+ offset += 1;
break;
}
+
return (offset - start);
}
@@ -5005,10 +5255,10 @@ dissect_inbound_stream(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset)
static void
dissect_tn3270(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *tn3270_tree;
- proto_item *ti;
- gint offset = 0;
- conversation_t *conversation;
+ proto_tree *tn3270_tree;
+ proto_item *pi;
+ gint offset = 0;
+ conversation_t *conversation;
tn3270_conv_info_t *tn3270_info = NULL;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "TN3270");
@@ -5017,31 +5267,41 @@ dissect_tn3270(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Do we have a conversation for this connection? */
conversation = find_conversation(pinfo->fd->num, &pinfo->src, &pinfo->dst,
- pinfo->ptype, pinfo->srcport,
- pinfo->destport, 0);
+ pinfo->ptype, pinfo->srcport,
+ pinfo->destport, 0);
if (conversation != NULL) {
- /* Do we already have a type and mechanism? */
- tn3270_info = conversation_get_proto_data(conversation, proto_tn3270);
+ /* Do we already have a type and mechanism? */
+ tn3270_info = conversation_get_proto_data(conversation, proto_tn3270);
}
- if (!tn3270_info)
- return;
+ if (tn3270_info == NULL)
+ return;
- if (tree) {
- ti = proto_tree_add_item(tree, proto_tn3270, tvb, offset, -1, ENC_NA);
- tn3270_tree = proto_item_add_subtree(ti, ett_tn3270);
- col_clear(pinfo->cinfo, COL_INFO);
+ pi = proto_tree_add_item(tree, proto_tn3270, tvb, offset, -1, ENC_NA);
+ tn3270_tree = proto_item_add_subtree(pi, ett_tn3270);
+ col_clear(pinfo->cinfo, COL_INFO);
- if (tn3270_info->extended) {
- offset += dissect_tn3270e_header(tn3270_tree, tvb, offset);
- }
- while (tvb_offset_exists(tvb, offset)) {
+ if (tn3270_info->extended) {
+ offset += dissect_tn3270e_header(tn3270_tree, tvb, offset);
+ }
+
+ if (tvb_reported_length_remaining(tvb, offset) <= 0)
+ return;
+
+ if (pinfo->srcport == tn3270_info->outbound_port) {
+ col_set_str(pinfo->cinfo, COL_INFO, "TN3270 Data from Mainframe");
+ }
+ else {
+ col_set_str(pinfo->cinfo, COL_INFO, "TN3270 Data to Mainframe");
+ }
+
+ if(tree) {
+ while (tvb_reported_length_remaining(tvb, offset) > 0) {
if (pinfo->srcport == tn3270_info->outbound_port) {
- col_set_str(pinfo->cinfo, COL_INFO, "TN3270 Data from Mainframe");
- offset += dissect_outbound_stream(tn3270_tree, tvb, offset);
- }else{
- col_set_str(pinfo->cinfo, COL_INFO, "TN3270 Data to Mainframe");
- offset += dissect_inbound_stream(tn3270_tree, tvb, offset);
+ offset += dissect_outbound_stream(tn3270_tree, tvb, offset, tn3270_info);
+ }
+ else {
+ offset += dissect_inbound_stream(tn3270_tree, tvb, offset, tn3270_info);
}
}
}
@@ -5049,73 +5309,79 @@ dissect_tn3270(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
void
-add_tn3270_conversation(packet_info *pinfo, int tn3270e, int model)
+add_tn3270_conversation(packet_info *pinfo, int tn3270e, gint model)
{
- conversation_t *conversation;
- tn3270_conv_info_t *tn3270_info = NULL;
+ conversation_t *conversation;
+ tn3270_conv_info_t *tn3270_info;
- conversation = find_or_create_conversation(pinfo);
+ conversation = find_or_create_conversation(pinfo);
- /*
- * Do we already have a type and mechanism?
- */
- tn3270_info = conversation_get_proto_data(conversation, proto_tn3270);
- if (tn3270_info == NULL) {
- /* No. Attach that information to the conversation, and add
- * it to the list of information structures.
- */
- tn3270_info = se_alloc(sizeof(tn3270_conv_info_t));
- COPY_ADDRESS(&(tn3270_info->outbound_addr),&(pinfo->dst));
- tn3270_info->outbound_port = pinfo->destport;
- COPY_ADDRESS(&(tn3270_info->inbound_addr),&(pinfo->src));
- tn3270_info->inbound_port = pinfo->srcport;
- conversation_add_proto_data(conversation, proto_tn3270, tn3270_info);
- tn3270_info->next = tn3270_info_items;
- tn3270_info_items = tn3270_info;
- }
+ /*
+ * Do we already have a type and mechanism?
+ */
+ tn3270_info = conversation_get_proto_data(conversation, proto_tn3270);
+ if (tn3270_info == NULL) {
+ /* No. Attach that information to the conversation, and add
+ * it to the list of information structures.
+ */
+ tn3270_info = se_alloc(sizeof(tn3270_conv_info_t));
- /* The maximum rows/cols is tied to the 3270 model number */
- switch (model) {
- case 4:
- MAXROWS = 32;
- MAXCOLS = 80;
- break;
- case 5:
- MAXROWS = 27;
- MAXCOLS = 132;
- break;
- case 2:
- default:
- MAXROWS = 24;
- MAXCOLS = 80;
- }
- ROWS = 24;
- COLS = 80;
+ COPY_ADDRESS(&(tn3270_info->outbound_addr), &(pinfo->dst));
+ tn3270_info->outbound_port = pinfo->destport;
+
+ COPY_ADDRESS(&(tn3270_info->inbound_addr), &(pinfo->src));
+ tn3270_info->inbound_port = pinfo->srcport;
- tn3270_info->extended = tn3270e;
+ conversation_add_proto_data(conversation, proto_tn3270, tn3270_info);
+ }
+
+ /* The maximum rows/cols is tied to the 3270 model number */
+ switch (model) {
+ default:
+ case 2:
+ tn3270_info->altrows = 24;
+ tn3270_info->altcols = 80;
+ break;
+ case 3:
+ tn3270_info->altrows = 32;
+ tn3270_info->altcols = 80;
+ break;
+ case 4:
+ tn3270_info->altrows = 43;
+ tn3270_info->altcols = 80;
+ break;
+ case 5:
+ tn3270_info->altrows = 27;
+ tn3270_info->altcols = 132;
+ break;
+ }
+ tn3270_info->rows = 24;
+ tn3270_info->cols = 80;
+
+ tn3270_info->extended = tn3270e;
}
int
find_tn3270_conversation(packet_info *pinfo)
{
- conversation_t *conversation = NULL;
- tn3270_conv_info_t *tn3270_info = NULL;
+ conversation_t *conversation = NULL;
+ tn3270_conv_info_t *tn3270_info = NULL;
/*
- * Do we have a conversation for this connection?
- */
+ * Do we have a conversation for this connection?
+ */
conversation = find_conversation(pinfo->fd->num, &pinfo->src, &pinfo->dst,
- pinfo->ptype, pinfo->srcport,
- pinfo->destport, 0);
+ pinfo->ptype, pinfo->srcport,
+ pinfo->destport, 0);
if (conversation != NULL) {
- tn3270_info = conversation_get_proto_data(conversation, proto_tn3270);
- if (tn3270_info != NULL) {
- /*
- * Do we already have a type and mechanism?
- */
- return 1;
- }
+ tn3270_info = conversation_get_proto_data(conversation, proto_tn3270);
+ if (tn3270_info != NULL) {
+ /*
+ * Do we already have a type and mechanism?
+ */
+ return 1;
+ }
}
return 0;
}
@@ -5125,1501 +5391,2273 @@ proto_register_tn3270(void)
{
static hf_register_info hf[] = {
{ &hf_tn3270_command_code,
- { "Command Code", "tn3270.command_code",
+ { "Command Code",
+ "tn3270.command_code",
FT_UINT8, BASE_HEX, VALS(vals_command_codes), 0x0,
- NULL, HFILL }},
+ NULL, HFILL }
+ },
{ &hf_tn3270_sf_length,
- { "Structured Field Length", "tn3270.sf_length",
+ { "Structured Field Length",
+ "tn3270.sf_length",
FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
- /* Write Control Characters */
+ NULL, HFILL }
+ },
+
+ /* 3.4 Write Control Characters */
{ &hf_tn3270_wcc_nop,
- { "WCC NOP",
- "tn3270.wcc.nop", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }},
+ { "WCC NOP",
+ "tn3270.wcc.nop",
+ FT_BOOLEAN, 8, NULL, WCC_NOP,
+ NULL, HFILL }
+ },
{ &hf_tn3270_wcc_reset,
- { "WCC Reset",
- "tn3270.wcc.reset", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }},
+ { "WCC Reset",
+ "tn3270.wcc.reset",
+ FT_BOOLEAN, 8, NULL, WCC_RESET,
+ NULL, HFILL }
+ },
{ &hf_tn3270_wcc_printer1,
- { "WCC Printer1",
- "tn3270.wcc.printer1", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }},
+ { "WCC Printer1",
+ "tn3270.wcc.printer1",
+ FT_BOOLEAN, 8, NULL, WCC_PRINTER1,
+ NULL, HFILL }
+ },
{ &hf_tn3270_wcc_printer2,
- { "WCC Printer2",
- "tn3270.wcc.printer2", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }},
+ { "WCC Printer2",
+ "tn3270.wcc.printer2",
+ FT_BOOLEAN, 8, NULL, WCC_PRINTER2,
+ NULL, HFILL }
+ },
{ &hf_tn3270_wcc_start_printer,
- { "WCC Start Printer",
- "tn3270.wcc.start_printer", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }},
+ { "WCC Start Printer",
+ "tn3270.wcc.start_printer",
+ FT_BOOLEAN, 8, NULL, WCC_START_PRINTER,
+ NULL, HFILL }
+ },
{ &hf_tn3270_wcc_sound_alarm,
- { "WCC Sound Alarm",
- "tn3270.wcc.sound_alarm", FT_BOOLEAN, 8, NULL, 0x20, NULL, HFILL }},
+ { "WCC Sound Alarm",
+ "tn3270.wcc.sound_alarm",
+ FT_BOOLEAN, 8, NULL, WCC_SOUND_ALARM,
+ NULL, HFILL }
+ },
{ &hf_tn3270_wcc_keyboard_restore,
- { "WCC Keyboard Restore",
- "tn3270.wcc.keyboard_restore", FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL }},
+ { "WCC Keyboard Restore",
+ "tn3270.wcc.keyboard_restore",
+ FT_BOOLEAN, 8, NULL, WCC_KEYBOARD_RESTORE,
+ NULL, HFILL }
+ },
{ &hf_tn3270_wcc_reset_mdt,
- { "WCC Reset MDT",
- "tn3270.wcc.reset_mdt", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }},
+ { "WCC Reset MDT",
+ "tn3270.wcc.reset_mdt",
+ FT_BOOLEAN, 8, NULL, WCC_RESET_MDT,
+ NULL, HFILL }
+ },
/* 8.7 Copy Control Codes (CCC) */
{ &hf_tn3270_ccc,
- { "Copy Control Code", "tn3270.ccc", FT_UINT8, BASE_HEX,
- NULL, 0, NULL, HFILL }},
+ { "Copy Control Code",
+ "tn3270.ccc",
+ FT_UINT8, BASE_HEX, NULL, 0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ccc_coding,
- { "Coding", "tn3270.ccc_coding", FT_UINT8, BASE_HEX,
- VALS(vals_coding), CODING_BITS, NULL, HFILL }},
+ { "Coding",
+ "tn3270.ccc_coding",
+ FT_UINT8, BASE_HEX, NULL, CCC_GRAPHIC_CONVERT_MASK,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ccc_printout,
- { "Printout Format", "tn3270.ccc_printout", FT_UINT8, BASE_HEX,
- VALS(vals_printout_format), PRINT_BITS, NULL, HFILL }},
+ { "Printout Format",
+ "tn3270.ccc_printout",
+ FT_UINT8, BASE_HEX, VALS(ccc_vals_printout_format), CCC_PRINT_BITS_MASK,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ccc_start_print,
{ "The start-print bit",
- "tn3270.ccc_start_print", FT_BOOLEAN, 8, NULL, START_PRINT, NULL, HFILL }},
+ "tn3270.ccc_start_print",
+ FT_BOOLEAN, 8, NULL, CCC_START_PRINT,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ccc_sound_alarm,
{ "The sound-alarm bit",
- "tn3270.ccc_sound_alarm", FT_BOOLEAN, 8, NULL, SOUND_ALARM, NULL, HFILL }},
+ "tn3270.ccc_sound_alarm",
+ FT_BOOLEAN, 8, NULL, CCC_SOUND_ALARM,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ccc_copytype,
- { "Type of Data to be Copied", "tn3270.ccc_copytype", FT_UINT8, BASE_HEX,
- VALS(vals_copytype), ATTRIBUTE_BITS, NULL, HFILL }},
+ { "Type of Data to be Copied",
+ "tn3270.ccc_copytype",
+ FT_UINT8, BASE_HEX, VALS(ccc_vals_copytype), CCC_ATTRIBUTE_BITS_MASK,
+ NULL, HFILL }
+ },
/* 4.4.1 Field Attributes */
{ &hf_tn3270_field_attribute,
- { "3270 Field Attribute", "tn3270.field_attribute", FT_UINT8, BASE_HEX,
- NULL, 0, NULL, HFILL }},
- { &hf_tn3270_fa_graphic_convert1,
- { "Graphic Convert1",
- "tn3270.fa.graphic_convert1", FT_BOOLEAN, 8, NULL, GRAPHIC_CONVERT1, NULL, HFILL }},
- { &hf_tn3270_fa_graphic_convert2,
- { "Graphic Convert2",
- "tn3270.fa.graphic_convert2", FT_BOOLEAN, 8, NULL, GRAPHIC_CONVERT2, NULL, HFILL }},
+ { "3270 Field Attribute",
+ "tn3270.field_attribute",
+ FT_UINT8, BASE_HEX, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_tn3270_fa_graphic_convert,
+ { "Graphic Convert",
+ "tn3270.fa.graphic_convert",
+ FT_UINT8, BASE_HEX, NULL, FA_GRAPHIC_CONVERT_MASK,
+ NULL, HFILL }
+ },
{ &hf_tn3270_fa_protected,
- { "Protected",
- "tn3270.fa.protected", FT_BOOLEAN, 8, NULL, PROTECTED, NULL, HFILL }},
+ { "Protected",
+ "tn3270.fa.protected",
+ FT_BOOLEAN, 8, NULL, FA_PROTECTED,
+ NULL, HFILL }
+ },
{ &hf_tn3270_fa_numeric,
- { "Numeric",
- "tn3270.fa.numeric", FT_BOOLEAN, 8, NULL, NUMERIC, NULL, HFILL }},
+ { "Numeric",
+ "tn3270.fa.numeric",
+ FT_BOOLEAN, 8, NULL, FA_NUMERIC,
+ NULL, HFILL }
+ },
{ &hf_tn3270_fa_display,
- { "Display", "tn3270.fa.display", FT_UINT8, BASE_HEX,
- VALS(vals_fa_display), DISPLAY_BITS, NULL, HFILL }},
+ { "Display",
+ "tn3270.fa.display",
+ FT_UINT8, BASE_HEX, VALS(vals_fa_display), FA_DISPLAY_BITS_MASK,
+ NULL, HFILL }
+ },
{ &hf_tn3270_fa_reserved,
- { "Reserved",
- "tn3270.fa.reserved", FT_BOOLEAN, 8, NULL, RESERVED, NULL, HFILL }},
+ { "Reserved",
+ "tn3270.fa.reserved",
+ FT_BOOLEAN, 8, NULL, FA_RESERVED,
+ NULL, HFILL }
+ },
{ &hf_tn3270_fa_modified,
- { "Modified",
- "tn3270.fa.modified", FT_BOOLEAN, 8, NULL, MODIFIED, NULL, HFILL }},
+ { "Modified",
+ "tn3270.fa.modified",
+ FT_BOOLEAN, 8, NULL, FA_MODIFIED,
+ NULL, HFILL }
+ },
/* Order Code */
{ &hf_tn3270_order_code,
- { "Order Code", "tn3270.order_code",
+ { "Order Code",
+ "tn3270.order_code",
FT_UINT8, BASE_HEX, VALS(vals_order_codes), 0x0,
- NULL, HFILL }},
+ NULL, HFILL }
+ },
{ &hf_tn3270_character_code,
- { "Character Code", "tn3270.character_code",
+ { "Character Code",
+ "tn3270.character_code",
FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ NULL, HFILL }
+ },
{ &hf_tn3270_stop_address,
- { "Stop Address", "tn3270.stop_address",
+ { "Stop Address",
+ "tn3270.stop_address",
FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ NULL, HFILL }
+ },
{ &hf_tn3270_attribute_type,
- { "Attribute Type", "tn3270.attribute_type",
+ { "Attribute Type",
+ "tn3270.attribute_type",
FT_UINT8, BASE_HEX, VALS(vals_attribute_types), 0x0,
- NULL, HFILL }},
+ NULL, HFILL }
+ },
{ &hf_tn3270_extended_highlighting,
- { "Extended Highlighting", "tn3270.extended_highlighting",
- FT_UINT8, BASE_HEX, VALS(vals_extended_highlighting), 0x0,
- NULL, HFILL }},
+ { "Extended Highlighting",
+ "tn3270.extended_highlighting",
+ FT_UINT8, BASE_HEX, VALS(vals_at_extended_highlighting), 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_color,
- { "Color", "tn3270.color",
- FT_UINT8, BASE_HEX, VALS(vals_color_identifications), 0x0,
- NULL, HFILL }},
+ { "Color",
+ "tn3270.color",
+ FT_UINT8, BASE_HEX, VALS(vals_at_color_identifications), 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_character_set,
- { "Character Set", "tn3270.character_set",
- FT_UINT8, BASE_HEX, RVALS(rvals_character_set), 0x0,
- NULL, HFILL }},
+ { "Character Set",
+ "tn3270.character_set",
+ FT_UINT8, BASE_RANGE_STRING|BASE_HEX, RVALS(rvals_at_character_set), 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_field_outlining,
- { "Field Outlining", "tn3270.field_outlining",
- FT_UINT8, BASE_HEX, VALS(vals_field_outlining), 0x0,
- NULL, HFILL }},
+ { "Field Outlining",
+ "tn3270.field_outlining",
+ FT_UINT8, BASE_HEX, VALS(vals_at_field_outlining), 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_transparency,
- { "Transparency", "tn3270.transparency",
- FT_UINT8, BASE_HEX, VALS(vals_transparency), 0x0,
- NULL, HFILL }},
+ { "Transparency",
+ "tn3270.transparency",
+ FT_UINT8, BASE_HEX, VALS(vals_at_transparency), 0x0,
+ NULL, HFILL }
+ },
+
{ &hf_tn3270_field_validation_mandatory_fill,
- { "3270 Field validation_mandatory_fill", "tn3270.field_validation_mandatory_fill",
- FT_BOOLEAN, 8, TFS(&tn3270_field_validation_mandatory_fill),
- RESERVED, NULL, HFILL }},
- { &hf_tn3270_field_validation_trigger,
- { "3270 Field validation_mandatory_trigger", "tn3270.field_validation_mandatory_trigger",
- FT_BOOLEAN, 8, TFS(&tn3270_field_validation_trigger),
- RESERVED, NULL, HFILL }},
+ { "3270 Field validation_mandatory_fill",
+ "tn3270.field_validation_mandatory_fill",
+ FT_BOOLEAN, 8, TFS(&tn3270_field_validation_mandatory_fill), AT_FV_MANDATORY_FILL,
+ NULL, HFILL }
+ },
{ &hf_tn3270_field_validation_mandatory_entry,
- { "3270 Field validation_mandatory_entry", "tn3270.field_validation_mandatory_entry",
- FT_BOOLEAN, 8, TFS(&tn3270_field_validation_mandatory_entry),
- RESERVED, NULL, HFILL }},
+ { "3270 Field validation_mandatory_entry",
+ "tn3270.field_validation_mandatory_entry",
+ FT_BOOLEAN, 8, TFS(&tn3270_field_validation_mandatory_entry), AT_FV_MANDATORY_ENTRY,
+ NULL, HFILL }
+ },
+ { &hf_tn3270_field_validation_trigger,
+ { "3270 Field validation_trigger",
+ "tn3270.field_validation_trigger",
+ FT_BOOLEAN, 8, TFS(&tn3270_field_validation_trigger), AT_FV_TRIGGER,
+ NULL, HFILL }
+ },
+
{ &hf_tn3270_all_character_attributes,
- { "all_character_attributes", "tn3270.all_character_attributes",
+ { "all_character_attributes",
+ "tn3270.all_character_attributes",
FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ NULL, HFILL }
+ },
{ &hf_tn3270_aid,
- { "Attention Identification", "tn3270.aid",
+ { "Attention Identification",
+ "tn3270.aid",
FT_UINT8, BASE_HEX, VALS(vals_attention_identification_bytes), 0x0,
- NULL, HFILL }},
+ NULL, HFILL }
+ },
{ &hf_tn3270_buffer_address,
- { "Buffer Address", "tn3270.buffer_address",
+ { "Buffer Address",
+ "tn3270.buffer_address",
FT_UINT16, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ NULL, HFILL }
+ },
/* Self Defining Parameters */
{ &hf_tn3270_sdp_ln,
- { "Length of this Self-Defining Parameter", "tn3270.sdp_ln",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Length of this Self-Defining Parameter",
+ "tn3270.sdp_ln",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_sdp_id,
- { "Self-Defining Parameter ID", "tn3270.sdp_id",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Self-Defining Parameter ID",
+ "tn3270.sdp_id",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
/* Self Defining Parameters */
/* 5.6 - Begin/End of File */
{ &hf_tn3270_begin_end_flags1,
- { "Begin End Flags1", "tn3270.begin_end_flags1",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Begin End Flags1",
+ "tn3270.begin_end_flags1",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_begin_end_flags2,
- { "Begin End Flags2", "tn3270.begin_end_flags2",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Begin End Flags2",
+ "tn3270.begin_end_flags2",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 5.6 - Begin/End of File */
/* 5.7 - Create Partition */
{ &hf_tn3270_partition_id,
- { "Partition ID", "tn3270.partition_id",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Partition ID",
+ "tn3270.partition_id",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_partition_uom,
- { "The unit of measure and address mode", "tn3270.partition_uom",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "The unit of measure and address mode",
+ "tn3270.partition_uom",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_partition_flags,
- { "Flags", "tn3270.partition_flags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags",
+ "tn3270.partition_flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_partition_height,
- { "The height of the presentation space", "tn3270.partition_height",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "The height of the presentation space",
+ "tn3270.partition_height",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_partition_width,
- { "The width of the presentation space", "tn3270.partition_width",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "The width of the presentation space",
+ "tn3270.partition_width",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_partition_rv,
- { "The y, or row, origin of the viewport relative to the top edge of the usable area", "tn3270.partition_rv",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "The y, or row, origin of the viewport relative to the top edge of the usable area",
+ "tn3270.partition_rv",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_partition_cv,
- { "The x, or column, origin of the viewport relative to the left side of the usable area", "tn3270.partition_cv",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "The x, or column, origin of the viewport relative to the left side of the usable area",
+ "tn3270.partition_cv",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_partition_hv,
- { "The height of the viewport", "tn3270.partition_hv",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "The height of the viewport",
+ "tn3270.partition_hv",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_partition_wv,
- { "The width of the viewport", "tn3270.partition_wv",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "The width of the viewport",
+ "tn3270.partition_wv",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_partition_rw,
- { "The y, or row, origin of the window relative to the top edge of the presentation space", "tn3270.partition_rw",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "The y, or row, origin of the window relative to the top edge of the presentation space",
+ "tn3270.partition_rw",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_partition_cw,
- { "The x, or column, origin of the window relative to the left edge of the presentation space", "tn3270.partition_cw",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "The x, or column, origin of the window relative to the left edge of the presentation space",
+ "tn3270.partition_cw",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_partition_rs,
- { "The number of units to be scrolled in a vertical multiple scroll", "tn3270.partition_rs",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "The number of units to be scrolled in a vertical multiple scroll",
+ "tn3270.partition_rs",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_partition_res,
- { "Reserved", "tn3270.partition_res",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Reserved",
+ "tn3270.partition_res",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_partition_pw,
- { "The number of points in the horizontal direction in a character cell in this presentation space", "tn3270.partition_pw",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "The number of points in the horizontal direction in a character cell in this presentation space",
+ "tn3270.partition_pw",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_partition_ph,
- { "The number of points in the vertical direction in a character cell in this presentation space", "tn3270.partition_ph",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "The number of points in the vertical direction in a character cell in this presentation space",
+ "tn3270.partition_ph",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_partition_command,
- { "Partition Command", "tn3270.partition_command",
- FT_UINT8, BASE_HEX, VALS(vals_command_codes), 0x0,
- NULL, HFILL }},
+ { "Partition Command",
+ "tn3270.partition_command",
+ FT_UINT8, BASE_HEX, VALS(vals_command_codes), 0x0,
+ NULL, HFILL }
+ },
/* End - 5.7 - Create Partition */
/* 5.9 - Erase/Reset */
{ &hf_tn3270_erase_flags,
- { "Erase Flags", "tn3270.erase_flags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Erase Flags",
+ "tn3270.erase_flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
/* End - 5.9 - Erase/Reset */
/* 5.10 - Load Color Table */
{ &hf_tn3270_load_color_command,
- { "Command", "tn3270.load_color_command",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Command",
+ "tn3270.load_color_command",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
/* End - 5.10 - Load Color Table */
/* 5.11 - Load Format Storage */
{ &hf_tn3270_load_format_storage_flags1,
- { "Flags", "tn3270.load_format_storage_flags1",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags",
+ "tn3270.load_format_storage_flags1",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_load_format_storage_flags2,
- { "Flags (Reserved)", "tn3270.load_format_storage_flags2",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags (Reserved)",
+ "tn3270.load_format_storage_flags2",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_load_format_storage_operand,
- { "Operand:", "tn3270.load_format_storage_operand",
- FT_UINT8, BASE_HEX, VALS(vals_operand), 0x0,
- NULL, HFILL }},
+ { "Operand:",
+ "tn3270.load_format_storage_operand",
+ FT_UINT8, BASE_HEX, VALS(vals_load_storage_format_operand), 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_load_format_storage_localname,
- { "Local name for user selectable formats", "tn3270.load_format_storage_localname",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Local name for user selectable formats",
+ "tn3270.load_format_storage_localname",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_format_group,
- { "Format Group name", "tn3270.format_group_name",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Format Group name",
+ "tn3270.format_group_name",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_format_name,
- { "Format name", "tn3270.format_name",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Format name",
+ "tn3270.format_name",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_load_format_storage_format_data,
- { "Format data", "tn3270.load_format_storage_format_data",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Format data",
+ "tn3270.load_format_storage_format_data",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
/* END - 5.11 - Load Format Storage */
/* 5.12 - Load Line Type */
{ &hf_tn3270_load_line_type_command,
- { "Line Type Command", "tn3270.load_line_type_command",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Line Type Command",
+ "tn3270.load_line_type_command",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
/* 5.13 - Load Programmed Symbols */
{ &hf_tn3270_ps_flags,
- { "Flags", "tn3270.ps_flags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags",
+ "tn3270.ps_flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ps_lcid,
- { "Local character set ID", "tn3270.ps_lcid",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Local character set ID",
+ "tn3270.ps_lcid",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ps_char,
- { "Beginning code point X'41' through X'FE'", "tn3270.ps_char",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Beginning code point X'41' through X'FE'",
+ "tn3270.ps_char",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ps_rws,
- { "Loadable Character Set RWS Number", "tn3270.ps_rws",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Loadable Character Set RWS Number",
+ "tn3270.ps_rws",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_extended_ps_length,
- { "Length of parameters for extended form, including the length parameter", "tn3270.extended_ps_length",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Length of parameters for extended form, including the length parameter",
+ "tn3270.extended_ps_length",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_extended_ps_flags,
- { "Flags", "tn3270.extended_ps_flags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags",
+ "tn3270.extended_ps_flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_extended_ps_lw,
- { "Number of X-units in character cell (width of character matrixes)", "tn3270.extended_ps_lw",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Number of X-units in character cell (width of character matrixes)",
+ "tn3270.extended_ps_lw",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_extended_ps_lh,
- { "Number of Y-units in character cell (depth ofcharacter matrixes)", "tn3270.extended_ps_lh",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Number of Y-units in character cell (depth ofcharacter matrixes)",
+ "tn3270.extended_ps_lh",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_extended_ps_subsn,
- { "Subsection ID", "tn3270.extended_ps_subsn",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Subsection ID",
+ "tn3270.extended_ps_subsn",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_extended_ps_color,
- { "Color planes", "tn3270.extended_ps_color",
- FT_UINT8, BASE_HEX, VALS(vals_color_identifications), 0x0,
- NULL, HFILL }},
+ { "Color planes",
+ "tn3270.extended_ps_color",
+ FT_UINT8, BASE_HEX, VALS(vals_at_color_identifications), 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_extended_ps_stsubs,
- { "Starting Subsection Identifier", "tn3270.extended_ps_stsubs",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Starting Subsection Identifier",
+ "tn3270.extended_ps_stsubs",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_extended_ps_echar,
- { "Ending code point", "tn3270.extended_ps_echar",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Ending code point",
+ "tn3270.extended_ps_echar",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_extended_ps_nw,
- { "Number of width pairs", "tn3270.extended_ps_nw",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Number of width pairs",
+ "tn3270.extended_ps_nw",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_extended_ps_nh,
- { "Number of height pairs", "tn3270.extended_ps_nh",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Number of height pairs",
+ "tn3270.extended_ps_nh",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_extended_ps_res,
- { "Reserved", "tn3270.extended_ps_res",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Reserved",
+ "tn3270.extended_ps_res",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 5.13 - Load Programmed Symbols */
/* 5.15 - Outbound Text Header */
- { &hf_tn3270_operation_type,
- { "Operation Type", "tn3270.operation_type",
- FT_UINT8, BASE_HEX, VALS(vals_operation_types), 0x0,
- NULL, HFILL }},
+ /* Note: some of these entries multiply used */
+ { &hf_tn3270_outbound_text_header_operation_type,
+ { "Outbound Text Operation Type",
+ "tn3270.outbound_text_operation_type",
+ FT_UINT8, BASE_HEX, VALS(vals_command_codes), 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_lvl,
- { "Cursor level", "tn3270.lvl",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Cursor level",
+ "tn3270.lvl",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cro,
- { "Cursor row offset", "tn3270.cro",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Cursor row offset",
+ "tn3270.cro",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cc,
- { "Cursor column offset", "tn3270.cc",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Cursor column offset",
+ "tn3270.cc",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_outbound_text_header_lhdr,
- { "Header length includes itself", "tn3270.outbound_text_header_lhdr",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Header length includes itself",
+ "tn3270.outbound_text_header_lhdr",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_outbound_text_header_hdr,
- { "Initial format controls", "tn3270.outbound_text_header_hdr",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Initial format controls",
+ "tn3270.outbound_text_header_hdr",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 5.15 - Outbound Text Header */
/* 5.16 - Outbound 3270DS */
{ &hf_tn3270_bsc,
- { "SNA BSC", "tn3270.bsc",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "SNA BSC",
+ "tn3270.bsc",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 5.16 - Outbound 3270DS */
/* 5.17 - Present Absolute Format */
{ &hf_tn3270_fpc,
- { "Format Presentation Command", "tn3270.fpc",
- FT_UINT8, BASE_HEX, VALS(vals_command_codes), 0x0,
- NULL, HFILL }},
+ { "Format Presentation Command",
+ "tn3270.fpc",
+ FT_UINT8, BASE_HEX, VALS(vals_command_codes), 0x0,
+ NULL, HFILL }
+ },
/* END - 5.17 - Present Absolute Format */
/* 5.18 - Present Relative Format */
{ &hf_tn3270_fov,
- { "Format Offset Value", "tn3270.fov",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Format Offset Value",
+ "tn3270.fov",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
/* End - 5.18 - Present Relative Format */
/* 5.19 - Read Partition */
- { &hf_tn3270_reqtyp,
- { "Request Type", "tn3270.reqtyp",
- FT_UINT8, BASE_HEX, VALS(vals_reqtype), 0xC0,
- NULL, HFILL }},
+ { &hf_tn3270_read_partition_operation_type,
+ { "Read Partition Operation Type",
+ "tn3270.read_partition_reqtyp",
+ FT_UINT8, BASE_HEX, VALS(vals_read_partition_operation_type), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_tn3270_read_partition_reqtyp,
+ { "Read Partition Request Type",
+ "tn3270.read_partition_reqtyp",
+ FT_UINT8, BASE_HEX, VALS(vals_read_partition_reqtype), READ_PARTITION_REQTYPE_MASK,
+ NULL, HFILL }
+ },
/* End - 5.19 - Read Partition */
/* 5.22 - Restart */
{ &hf_tn3270_start_page,
- { "Number of pages to skip on restart", "tn3270.start_page",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Number of pages to skip on restart",
+ "tn3270.start_page",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_start_line,
- { "Number of lines to skip on page for restart", "tn3270.start_line",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Number of lines to skip on page for restart",
+ "tn3270.start_line",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_scs_data,
- { "SCS data (noncompressed and noncompacted) to set up for restart", "tn3270.scs_data",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "SCS data (noncompressed and noncompacted) to set up for restart",
+ "tn3270.scs_data",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
/* End - 5.22 - Restart */
/* 5.24 - Select Color Table */
{ &hf_tn3270_color_command,
- { "Color Command", "tn3270.color_command",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Color Command",
+ "tn3270.color_command",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
/* 5.24 - Select Color Table */
/* 5.26 - Set Checkpoint Interval */
{ &hf_tn3270_interval,
- { "Checkpoint interval", "tn3270.interval",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- "Specifies the number of pages in the interval between terminal checkpoints", HFILL }},
+ { "Checkpoint interval",
+ "tn3270.interval",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ "Specifies the number of pages in the interval between terminal checkpoints", HFILL }
+ },
/* End - 5.26 - Set Checkpoint Interval */
/* 5.27 - Set MSR Interval */
{ &hf_tn3270_msr_type,
- { "MSR type", "tn3270.msr_type",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "MSR type",
+ "tn3270.msr_type",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_msr_state_mask,
- { "State Mask", "tn3270.msr_state_mask",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "State Mask",
+ "tn3270.msr_state_mask",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_msr_user,
- { "User Mode",
- "tn3270.msr.user", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }},
+ { "User Mode",
+ "tn3270.msr.user",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ NULL, HFILL }
+ },
{ &hf_tn3270_msr_locked,
- { "Locked",
- "tn3270.msr.locked", FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL }},
+ { "Locked",
+ "tn3270.msr.locked",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ NULL, HFILL }
+ },
{ &hf_tn3270_msr_auto,
- { "Auto Enter",
- "tn3270.msr.auto", FT_BOOLEAN, 8, NULL, 0x20, NULL, HFILL }},
+ { "Auto Enter",
+ "tn3270.msr.auto",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ NULL, HFILL }
+ },
{ &hf_tn3270_msr_ind1,
- { "Audible Ind 1 Suppress",
- "tn3270.msr.ind1", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }},
+ { "Audible Ind 1 Suppress",
+ "tn3270.msr.ind1",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ NULL, HFILL }
+ },
{ &hf_tn3270_msr_ind2,
- { "Audible Ind 2 Suppress",
- "tn3270.msr.ind2", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }},
+ { "Audible Ind 2 Suppress",
+ "tn3270.msr.ind2",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ NULL, HFILL }
+ },
{ &hf_tn3270_msr_state_value,
- { "State Value", "tn3270.msr_state_value",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "State Value", "tn3270.msr_state_value",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_msr_ind_mask,
- { "Indicator Mask", "tn3270.msr_ind_mask",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Indicator Mask",
+ "tn3270.msr_ind_mask",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_msr_ind_value,
- { "Indicator Value", "tn3270.msr_ind_value",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Indicator Value",
+ "tn3270.msr_ind_value",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 5.27 - Set MSR Interval */
/* 5.28 - Set Partition Characteristics */
{ &hf_tn3270_spc_sdp_ot,
- { "Top edge outline thickness", "tn3270.spc_sdp_ot",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Top edge outline thickness",
+ "tn3270.spc_sdp_ot",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_spc_sdp_ob,
- { "Bottom edge outline thickness", "tn3270.spc_sdp_ob",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Bottom edge outline thickness",
+ "tn3270.spc_sdp_ob",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_spc_sdp_ol,
- { "Left edge outline thickness", "tn3270.spc_sdp_ol",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Left edge outline thickness",
+ "tn3270.spc_sdp_ol",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_spc_sdp_or,
- { "Right edge outline thickness", "tn3270.spc_sdp_or",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Right edge outline thickness",
+ "tn3270.spc_sdp_or",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_spc_sdp_eucflags,
- { "Flags", "tn3270.spc_sdp_eucflags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags",
+ "tn3270.spc_sdp_eucflags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 5.28 - Set Partition Characteristics */
/* 5.29 - Set Printer Characteristics */
{ &hf_tn3270_printer_flags,
- { "Flags", "tn3270.printer_flags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags",
+ "tn3270.printer_flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_spc_sdp_srepc,
- { "Set/Reset Early Print Complete", "tn3270.spc_sdp_srepc",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Set/Reset Early Print Complete",
+ "tn3270.spc_sdp_srepc",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 5.29 - Set Printer Characteristics */
/* 5.30 - Set Reply Mode */
+ /* hf_tn3270_mode also used for 6.42: Query Reply (modes) */
{ &hf_tn3270_mode,
- { "Mode", "tn3270.mode",
- FT_UINT8, BASE_HEX, VALS(vals_modes), 0x0,
- NULL, HFILL }},
+ { "Mode",
+ "tn3270.mode",
+ FT_UINT8, BASE_HEX, VALS(vals_reply_modes), 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_reply_mode_attr_list,
- { "Type codes for the attribute types", "tn3270.reply_mode_attr_list",
- FT_UINT8, BASE_HEX, VALS(vals_attribute_types), 0x0,
- NULL, HFILL }},
+ { "Type codes for the attribute types",
+ "tn3270.reply_mode_attr_list",
+ FT_UINT8, BASE_HEX, VALS(vals_attribute_types), 0x0,
+ NULL, HFILL }
+ },
/* END - 5.30 - Set Reply Mode */
/* 5.34 - Data Chain */
- { &hf_tn3270_data_chain_bitmask,
- { "Mask", "tn3270.data_chain_bitmask",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { &hf_tn3270_data_chain_fields,
+ { "Data Chain Fields",
+ "tn3270.data_chain_fields",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_tn3270_data_chain_group,
+ { "Data Chain Group",
+ "tn3270.data_chain_group",
+ FT_UINT8, BASE_HEX, VALS(vals_data_chain_group), DATA_CHAIN_GROUP_MASK,
+ NULL, HFILL }
+ },
+ { &hf_tn3270_data_chain_inbound_control,
+ { "Data Chain Inbound Control",
+ "tn3270.data_chain_inbound_control",
+ FT_UINT8, BASE_HEX, VALS(vals_data_chain_inbound_control), DATA_CHAIN_INBOUND_CONTROL_MASK,
+ NULL, HFILL }
+ },
/* END - 5.34 - Data Chain */
/* 5.35 - Destination/Origin */
- { &hf_tn3270_destination_or_origin_bitmask,
- { "Mask", "tn3270.destination_or_origin_bitmask",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { &hf_tn3270_destination_or_origin_flags_input_control,
+ { "Input Control",
+ "tn3270.destination_or_origin_flags_input_control",
+ FT_UINT8, BASE_HEX, VALS(vals_destination_or_origin_flags_input_control), DESTINATION_OR_ORIGIN_FLAGS_INPUT_CONTROL_MASK,
+ NULL, HFILL }
+ },
+ { &hf_tn3270_destination_or_origin_doid,
+ { "DOID",
+ "tn3270.destination_or_origin_doid",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 5.35 - Destination/Origin */
/* 5.36 - Object Control */
{ &hf_tn3270_object_control_flags,
- { "Flags", "tn3270.object_control_flags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags",
+ "tn3270.object_control_flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_object_type,
- { "Object Type", "tn3270.object_type",
- FT_UINT8, BASE_HEX, VALS(vals_oc_type), 0x0,
- NULL, HFILL }},
+ { "Object Type",
+ "tn3270.object_type",
+ FT_UINT8, BASE_HEX, VALS(vals_oc_type), 0x0,
+ NULL, HFILL }
+ },
/* END - 5.36 - Object Control */
/* 5.40 - Save/Restore Format */
{ &hf_tn3270_save_or_restore_format_flags,
- { "Flags", "tn3270.save_or_restore_format_flags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
- { &hf_tn3270_srf_fpcb,
- { "Contents of the FPCB that is to be saved or restored", "tn3270.srf_fpcb",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
- /* 5.40 - Save/Restore Format */
-
- { &hf_tn3270_type_1_text_outbound_data,
- { "Type 1 text outbound data", "tn3270.type_1_text_outbound_data",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags",
+ "tn3270.save_or_restore_format_flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_tn3270_srf_fpcb,
+ { "Contents of the FPCB that is to be saved or restored",
+ "tn3270.srf_fpcb",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+
+ /* 5.40 - Save/Restore Format */
+ { &hf_tn3270_type_1_text_outbound_data,
+ { "Type 1 text outbound data",
+ "tn3270.type_1_text_outbound_data",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
/* 6.2 - Exception/Status */
- { &hf_tn3270_exception_or_status_flags,
- { "Flags", "tn3270.exception_or_status_flags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { &hf_tn3270_exception_or_status_flags,
+ { "Flags",
+ "tn3270.exception_or_status_flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_sdp_excode,
- { "Exception Code", "tn3270.sdp_excode",
- FT_UINT16, BASE_DEC, VALS(vals_excode), 0x0,
- NULL, HFILL }},
+ { "Exception Code",
+ "tn3270.sdp_excode",
+ FT_UINT16, BASE_DEC, VALS(vals_sdp_excode), 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_sdp_statcode,
- { "Status Code", "tn3270.sdp_statcode",
- FT_UINT16, BASE_DEC, VALS(vals_statcode), 0x0,
- NULL, HFILL }},
+ { "Status Code",
+ "tn3270.sdp_statcode",
+ FT_UINT16, BASE_DEC, VALS(vals_sdp_statcode), 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_sdp_ngl,
- { "Number of groups currently assigned", "tn3270.sdp_ngl",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Number of groups currently assigned",
+ "tn3270.sdp_ngl",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_sdp_nml,
- { "Number of formats currently loaded", "tn3270.sdp_nml",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Number of formats currently loaded",
+ "tn3270.sdp_nml",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_sdp_nlml,
- { "Number of local names used", "tn3270.sdp_nlml",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Number of local names used",
+ "tn3270.sdp_nlml",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_sdp_stor,
- { "Amount of format storage space available (KB)", "tn3270.sdp_stor",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Amount of format storage space available (KB)",
+ "tn3270.sdp_stor",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
/* 6.2 - Exception/Status */
/* 6.3 - Inbound Text Header */
{ &hf_tn3270_hw,
- { "Window height", "tn3270.hw",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Window height",
+ "tn3270.hw",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_rw,
- { "Row offset of window origin", "tn3270.rw",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Row offset of window origin",
+ "tn3270.rw",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ww,
- { "Window width", "tn3270.ww",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Window width",
+ "tn3270.ww",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cw,
- { "Column Offset of Window Origin", "tn3270.cw",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Column Offset of Window Origin",
+ "tn3270.cw",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 6.3 - Inbound Text Header */
/* 6.4 Inbound 3270DS */
- { &hf_tn3270_cursor_x,
- { "Cursor X", "tn3270.cursor_x",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
- { &hf_tn3270_cursor_y,
- { "Cursor Y", "tn3270.cursor_y",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { &hf_tn3270_cursor_address,
+ { "Cursor Address",
+ "tn3270.cursor_address",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 6.4 Inbound 3270DS */
/* 6.5 - Recovery Data */
{ &hf_tn3270_recovery_data_flags,
- { "Flags", "tn3270.recovery_data_flags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags",
+ "tn3270.recovery_data_flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_sld,
- { "SLD -- Set line density parameter in effect at the checkpoint", "tn3270.sld",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "SLD -- Set line density parameter in effect at the checkpoint",
+ "tn3270.sld",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_charset,
- { "Character set parameter of Set Attribute control in effect at the checkpoint", "tn3270.charset",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Character set parameter of Set Attribute control in effect at the checkpoint",
+ "tn3270.charset",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_vertical,
- { "Byte offset from Checkpoint Interval structured field to the Set Vertical Format control in effect for the checkpoint", "tn3270.vertical",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Byte offset from Checkpoint Interval structured field to the Set Vertical Format control in effect for the checkpoint",
+ "tn3270.vertical",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_v_offset,
- { "Byte offset within the string control byte string or the SVF character", "tn3270.v_offset",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Byte offset within the string control byte string or the SVF character",
+ "tn3270.v_offset",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_v_sequence,
- { "RU sequence number", "tn3270.v_sequence",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "RU sequence number",
+ "tn3270.v_sequence",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_v_length,
- { "Length of the SVF character string required for restart", "tn3270.v_length",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Length of the SVF character string required for restart",
+ "tn3270.v_length",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_spd,
- { "Set Primary Density parameter in effect at the checkpoint", "tn3270.spd",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Set Primary Density parameter in effect at the checkpoint",
+ "tn3270.spd",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_horizon,
- { "Byte offset from Checkpoint Interval structured field to the Set Horizontal Format control in effect for the checkpoint", "tn3270.horizon",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Byte offset from Checkpoint Interval structured field to the Set Horizontal Format control in effect for the checkpoint",
+ "tn3270.horizon",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_h_offset,
- { "Byte offset from Checkpoint Interval structured field to the Set Horizontal Format control in effect for the checkpoint", "tn3270.h_offset",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Byte offset from Checkpoint Interval structured field to the Set Horizontal Format control in effect for the checkpoint",
+ "tn3270.h_offset",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_h_sequence,
- { "RU sequence number", "tn3270.h_sequence",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "RU sequence number",
+ "tn3270.h_sequence",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_h_length,
- { "Length of the SHF character string required for restart", "tn3270.h_length",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Length of the SHF character string required for restart",
+ "tn3270.h_length",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_hilite,
- { "Highlighting", "tn3270.hilite",
- FT_UINT8, BASE_HEX, VALS(vals_extended_highlighting), 0x0,
- NULL, HFILL }},
+ { "Highlighting",
+ "tn3270.hilite",
+ FT_UINT8, BASE_HEX, VALS(vals_at_extended_highlighting), 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_pages,
- { "Number of pages printed since the checkpoint", "tn3270.pages",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Number of pages printed since the checkpoint",
+ "tn3270.pages",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_lines,
- { "Number of lines printed since the checkpoint", "tn3270.lines",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Number of lines printed since the checkpoint",
+ "tn3270.lines",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_checkpoint,
- { "Byte offset from Set Checkpoint Interval structured field to the first "
- "character afterhe code point or character that caused an eject to the "
- "checkpointed page", "tn3270.checkpoint",
- FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
+ { "Byte offset from Set Checkpoint Interval structured field to the first"
+ " character afterhe code point or character that caused an eject to the"
+ " checkpointed page",
+ "tn3270.checkpoint",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_c_offset,
- { "Byte offset within the String Control Byte string or structured field of the checkpointed character", "tn3270.c_offset",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Byte offset within the String Control Byte string or structured field of"
+ " the checkpointed character",
+ "tn3270.c_offset",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_c_sequence,
- { "RU sequence number of the RU containing the checkpoint character", "tn3270.c_sequence",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "RU sequence number of the RU containing the checkpoint character",
+ "tn3270.c_sequence",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_c_seqoff,
- { "Byte offset within the RU of the checkpointed character", "tn3270.c_seqoff",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Byte offset within the RU of the checkpointed character",
+ "tn3270.c_seqoff",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_c_scsoff,
- { "Byte offset within the parameterized SCS control code (for example, TRN) of the checkpointed character.", "tn3270.c_scsoff",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Byte offset within the parameterized SCS control code (for example, TRN) of the checkpointed character.",
+ "tn3270.c_scsoff",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_prime,
- { "Prime compression character", "tn3270.prime",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Prime compression character",
+ "tn3270.prime",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 6.5 - Recovery Data */
/* 6.9 - Query Reply (Alphanumeric Partitions) */
{ &hf_tn3270_ap_na,
- { "Max number of alphanumeric partitions", "tn3270.ap_na",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Max number of alphanumeric partitions",
+ "tn3270.ap_na",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ap_m,
- { "Total available partition storage", "tn3270.ap_m",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Total available partition storage",
+ "tn3270.ap_m",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_query_reply_alphanumeric_flags,
- { "Flags", "tn3270.ap_flags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags",
+ "tn3270.ap_flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ap_vertical_scrolling,
- { "Vertical Scrolling Supported",
- "tn3270.ap_vertical_scrolling", FT_BOOLEAN, 8, NULL, VERTWIN, NULL, HFILL }},
+ { "Vertical Scrolling Supported",
+ "tn3270.ap_vertical_scrolling",
+ FT_BOOLEAN, 8, NULL, QR_AP_VERTWIN,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ap_horizontal_scrolling,
- { "Horizontal Scrolling Supported",
- "tn3270.ap_horizontal_scrolling", FT_BOOLEAN, 8, NULL, HORWIN, NULL, HFILL }},
+ { "Horizontal Scrolling Supported",
+ "tn3270.ap_horizontal_scrolling",
+ FT_BOOLEAN, 8, NULL, QR_AP_HORWIN,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ap_apres1,
- { "Reserved",
- "tn3270.ap_apres1", FT_BOOLEAN, 8, NULL, APRES1, NULL, HFILL }},
+ { "Reserved",
+ "tn3270.ap_apres1",
+ FT_BOOLEAN, 8, NULL, QR_AP_APRES1,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ap_apa,
- { "All Points addressability supported",
- "tn3270.ap_apa", FT_BOOLEAN, 8, NULL, APA_FLG, NULL, HFILL }},
+ { "All Points addressability supported",
+ "tn3270.ap_apa",
+ FT_BOOLEAN, 8, NULL, QR_AP_APA_FLG,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ap_pp,
- { "Partition protection supported",
- "tn3270.ap_pp", FT_BOOLEAN, 8, NULL, PROT, NULL, HFILL }},
+ { "Partition protection supported",
+ "tn3270.ap_pp",
+ FT_BOOLEAN, 8, NULL, QR_AP_PROT,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ap_lc,
- { "Presentation space local copy supported",
- "tn3270.ap_lc", FT_BOOLEAN, 8, NULL, LCOPY, NULL, HFILL }},
+ { "Presentation space local copy supported",
+ "tn3270.ap_lc",
+ FT_BOOLEAN, 8, NULL, QR_AP_LCOPY,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ap_mp,
- { "Modify Partition supported",
- "tn3270.ap_mp", FT_BOOLEAN, 8, NULL, MODPART, NULL, HFILL }},
+ { "Modify Partition supported",
+ "tn3270.ap_mp",
+ FT_BOOLEAN, 8, NULL, QR_AP_MODPART,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ap_apres2,
- { "Reserved",
- "tn3270.ap_apres2", FT_BOOLEAN, 8, NULL, APRES2, NULL, HFILL }},
+ { "Reserved",
+ "tn3270.ap_apres2",
+ FT_BOOLEAN, 8, NULL, QR_AP_APRES2,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ap_cm,
- { "Character multiplier", "tn3270.ap_cm",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Character multiplier",
+ "tn3270.ap_cm",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ap_ro,
- { "Row overhead", "tn3270.ap_ro",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Row overhead",
+ "tn3270.ap_ro",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ap_co,
- { "Column overhead", "tn3270.ap_co",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Column overhead",
+ "tn3270.ap_co",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ap_fo,
- { "Fixed overhead", "tn3270.ap_fo",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Fixed overhead",
+ "tn3270.ap_fo",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 6.9 - Query Reply (Alphanumeric Partitions) */
/* 6.12 - Query Reply (Character Sets) */
{ &hf_tn3270_character_sets_flags1,
- { "Flags (1)", "tn3270.character_sets_flags1",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags (1)",
+ "tn3270.character_sets_flags1",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_ge,
- { "Graphic Escape supported",
- "tn3270.cs_ge", FT_BOOLEAN, 8, NULL, ALT, NULL, HFILL }},
+ { "Graphic Escape supported",
+ "tn3270.cs_ge",
+ FT_BOOLEAN, 8, NULL, QR_CS_ALT,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_mi,
- { "Multiple LCIDs are supported",
- "tn3270.cs_mi", FT_BOOLEAN, 8, NULL, MULTID, NULL, HFILL }},
+ { "Multiple LCIDs are supported",
+ "tn3270.cs_mi",
+ FT_BOOLEAN, 8, NULL, QR_CS_MULTID,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_lps,
- { "Load PSSF is supported",
- "tn3270.cs_lps", FT_BOOLEAN, 8, NULL, LOADABLE, NULL, HFILL }},
+ { "Load PSSF is supported",
+ "tn3270.cs_lps",
+ FT_BOOLEAN, 8, NULL, QR_CS_LOADABLE,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_lpse,
- { "Load PS EXTENDED is supported",
- "tn3270.cs_lpse", FT_BOOLEAN, 8, NULL, EXT, NULL, HFILL }},
+ { "Load PS EXTENDED is supported",
+ "tn3270.cs_lpse",
+ FT_BOOLEAN, 8, NULL, QR_CS_EXT,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_ms,
- { "More than one size of character slot is supported",
- "tn3270.cs_ms", FT_BOOLEAN, 8, NULL, MS, NULL, HFILL }},
+ { "More than one size of character slot is supported",
+ "tn3270.cs_ms",
+ FT_BOOLEAN, 8, NULL, QR_CS_MS,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_ch2,
- { "Two-byte coded character sets are supported",
- "tn3270.cs_ch2", FT_BOOLEAN, 8, NULL, CH2, NULL, HFILL }},
+ { "Two-byte coded character sets are supported",
+ "tn3270.cs_ch2",
+ FT_BOOLEAN, 8, NULL, QR_CS_CH2,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_gf,
- { "CGCSGID is present",
- "tn3270.cs_gf", FT_BOOLEAN, 8, NULL, GF, NULL, HFILL }},
+ { "CGCSGID is present",
+ "tn3270.cs_gf",
+ FT_BOOLEAN, 8, NULL, QR_CS_GF,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_res,
- { "Reserved",
- "tn3270.cs_res", FT_BOOLEAN, 8, NULL, CSRES, NULL, HFILL }},
+ { "Reserved",
+ "tn3270.cs_res",
+ FT_BOOLEAN, 8, NULL, QR_CS_CSRES,
+ NULL, HFILL }
+ },
{ &hf_tn3270_character_sets_flags2,
- { "Flags (2)", "tn3270.character_sets_flags2",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags (2)",
+ "tn3270.character_sets_flags2",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_res2,
- { "Reserved",
- "tn3270.cs_res2", FT_BOOLEAN, 8, NULL, CSRES2, NULL, HFILL }},
+ { "Reserved",
+ "tn3270.cs_res2",
+ FT_BOOLEAN, 8, NULL, QR_CS_CSRES2,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_pscs,
- { "Load PS slot size match not required",
- "tn3270.cs_pscs", FT_BOOLEAN, 8, NULL, PSCS, NULL, HFILL }},
+ { "Load PS slot size match not required",
+ "tn3270.cs_pscs",
+ FT_BOOLEAN, 8, NULL, QR_CS_PSCS,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_res3,
- { "Reserved",
- "tn3270.cs_res3", FT_BOOLEAN, 8, NULL, CSRES3, NULL, HFILL }},
+ { "Reserved",
+ "tn3270.cs_res3",
+ FT_BOOLEAN, 8, NULL, QR_CS_CSRES3,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_cf,
- { "CCSID present",
- "tn3270.cs_cf", FT_BOOLEAN, 8, NULL, CF, NULL, HFILL }},
+ { "CCSID present",
+ "tn3270.cs_cf",
+ FT_BOOLEAN, 8, NULL, QR_CS_CF,
+ NULL, HFILL }
+ },
{ &hf_tn3270_sdw,
- { "Default character slot width", "tn3270.cs_sdw",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Default character slot width",
+ "tn3270.cs_sdw",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_sdh,
- { "Default character slot height", "tn3270.cs_sdh",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Default character slot height",
+ "tn3270.cs_sdh",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_form,
- { "Form Types", "tn3270.form",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Form Types",
+ "tn3270.form",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_formres,
- { "Form Types (Reserved)", "tn3270.formres",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Form Types (Reserved)",
+ "tn3270.formres",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_form_type1,
- { "18-byte form; the first 2 bytes contain a 16-bit vertical slice, "
- "the following 16 bytes contain 8-bit horizontal slices. For a 9 "
- "x 12 character matrix the last 4 bytes contain binary zero.",
- "tn3270.cs_form_type1", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }},
+ { "18-byte form; the first 2 bytes contain a 16-bit vertical slice,"
+ " the following 16 bytes contain 8-bit horizontal slices. For a 9"
+ " x 12 character matrix the last 4 bytes contain binary zero.",
+ "tn3270.cs_form_type1",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_form_type2,
- { "18-byte form; the first 2 bytes contain a 16-bit vertical slice, "
- "the following 16 bytes contain 8-bit horizontal slices. For a 9 "
- "x 12 character matrix the last 4 bytes contain binary zero. (COMPRESSED)",
- "tn3270.cs_form_type2", FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL }},
+ { "18-byte form; the first 2 bytes contain a 16-bit vertical slice,"
+ " the following 16 bytes contain 8-bit horizontal slices. For a 9"
+ " x 12 character matrix the last 4 bytes contain binary zero. (COMPRESSED)",
+ "tn3270.cs_form_type2",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_form_type3,
- { "Row loading (from top to bottom)",
- "tn3270.cs_form_type3", FT_BOOLEAN, 8, NULL, 0x20, NULL, HFILL }},
+ { "Row loading (from top to bottom)",
+ "tn3270.cs_form_type3",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_form_type4,
- { "Row loading (from top to bottom) (Compressed)",
- "tn3270.cs_form_type4", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }},
+ { "Row loading (from top to bottom) (Compressed)",
+ "tn3270.cs_form_type4",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_form_type5,
- { "Column loading (from left to right)",
- "tn3270.cs_form_type5", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }},
+ { "Column loading (from left to right)",
+ "tn3270.cs_form_type5",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_form_type6,
- { "Column loading (from left to right) (Compressed)",
- "tn3270.cs_form_type6", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }},
+ { "Column loading (from left to right) (Compressed)",
+ "tn3270.cs_form_type6",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_form_type8,
- { "Vector",
- "tn3270.cs_form_type8", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }},
+ { "Vector",
+ "tn3270.cs_form_type8",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_dl,
- { "Length of each descriptor", "tn3270.cs_dl",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Length of each descriptor",
+ "tn3270.cs_dl",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_descriptor_set,
- { "Device Specific Character Set ID (PS store No.)", "tn3270.cs_descriptor_set",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Device Specific Character Set ID (PS store No.)",
+ "tn3270.cs_descriptor_set",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_descriptor_flags,
- { "Flags", "tn3270.cs_descriptor_flags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags",
+ "tn3270.cs_descriptor_flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_ds_load,
- { "Loadable character set",
- "tn3270.cs_ds_load", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }},
+ { "Loadable character set",
+ "tn3270.cs_ds_load",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_ds_triple,
- { "Triple-plane character set",
- "tn3270.cs_ds_triple", FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL }},
+ { "Triple-plane character set",
+ "tn3270.cs_ds_triple",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_ds_char,
- { "Double-Byte coded character set",
- "tn3270.cs_ds_char", FT_BOOLEAN, 8, NULL, 0x20, NULL, HFILL }},
+ { "Double-Byte coded character set",
+ "tn3270.cs_ds_char",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ NULL, HFILL }
+ },
{ &hf_tn3270_cs_ds_cb,
- { "No LCID compare",
- "tn3270.cs_ds_cb", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }},
+ { "No LCID compare",
+ "tn3270.cs_ds_cb",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ NULL, HFILL }
+ },
{ &hf_tn3270_lcid,
- { "Local character set ID (alias)", "tn3270.lcid",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Local character set ID (alias)",
+ "tn3270.lcid",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_sw,
- { "Width of the character slots in this characterset.", "tn3270.sw",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Width of the character slots in this characterset.",
+ "tn3270.sw",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_sh,
- { "Height of the character slots in this character set.", "tn3270.sh",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Height of the character slots in this character set.",
+ "tn3270.sh",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ssubsn,
- { "Starting subsection.", "tn3270.ssubsn",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Starting subsection.",
+ "tn3270.ssubsn",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_esubsn,
- { "Ending subsection.", "tn3270.esubsn",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Ending subsection.",
+ "tn3270.esubsn",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ccsgid,
- { "Coded Graphic Character Set Identifier.", "tn3270.ccsgid",
- FT_UINT64, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Coded Graphic Character Set Identifier.",
+ "tn3270.ccsgid",
+ FT_UINT64, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ccsid,
- { "Coded Character Set Identifier.", "tn3270.ccsid",
- FT_UINT64, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Coded Character Set Identifier.",
+ "tn3270.ccsid",
+ FT_UINT64, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 6.12 - Query Reply (Character Sets) */
/* 6.13 - Query Reply (Color) */
{ &hf_tn3270_color_flags,
- { "Flags", "tn3270.color_flags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags",
+ "tn3270.color_flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_c_prtblk,
- { "Printer only - black ribbon is loaded",
- "tn3270.cc_prtblk", FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL }},
+ { "Printer only - black ribbon is loaded",
+ "tn3270.cc_prtblk",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ NULL, HFILL }
+ },
{ &hf_tn3270_c_np,
- { "Length of color attribute list", "tn3270.np",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Length of color attribute list",
+ "tn3270.np",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_c_cav,
- { "Color attribute value accepted by the device", "tn3270.c_cav",
- FT_UINT8, BASE_HEX, VALS(vals_color_identifications), 0x0,
- NULL, HFILL }},
+ { "Color attribute value accepted by the device",
+ "tn3270.c_cav",
+ FT_UINT8, BASE_HEX, VALS(vals_at_color_identifications), 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_c_ci,
- { "Color identifier", "tn3270.c_ci",
- FT_UINT8, BASE_HEX, VALS(vals_color_identifications), 0x0,
- NULL, HFILL }},
+ { "Color identifier",
+ "tn3270.c_ci",
+ FT_UINT8, BASE_HEX, VALS(vals_at_color_identifications), 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_db_cavdef,
- { "Default color attribute value", "tn3270.db_cavdef",
- FT_UINT8, BASE_HEX, VALS(vals_color_identifications), 0x0,
- NULL, HFILL }},
+ { "Default color attribute value",
+ "tn3270.db_cavdef",
+ FT_UINT8, BASE_HEX, VALS(vals_at_color_identifications), 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_db_cidef,
- { "Default background color identifier", "tn3270.db_cidef",
- FT_UINT8, BASE_HEX, VALS(vals_color_identifications), 0x0,
- NULL, HFILL }},
+ { "Default background color identifier",
+ "tn3270.db_cidef",
+ FT_UINT8, BASE_HEX, VALS(vals_at_color_identifications), 0x0,
+ NULL, HFILL }
+ },
/* END - 6.13 - Query Reply (Color) */
/* 6.14 - Query Reply (Cooperative Processing Requestor) */
{ &hf_tn3270_limin,
- { "Maximum CPR bytes/transmission allowed inbound", "tn3270.limin",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Maximum CPR bytes/transmission allowed inbound",
+ "tn3270.limin",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_limout,
- { "Maximum CPR bytes/transmission allowed outbound", "tn3270.limout",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Maximum CPR bytes/transmission allowed outbound",
+ "tn3270.limout",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_featl,
- { "Length (in bytes) of feature information that follows", "tn3270.featl",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Length (in bytes) of feature information that follows",
+ "tn3270.featl",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_feats,
- { "CPR length and feature flags", "tn3270.feats",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "CPR length and feature flags",
+ "tn3270.feats",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 6.14 - Query Reply (Cooperative Processing Requestor) */
/* 6.15 - Query Reply (Data Chaining) */
- { &hf_tn3270_dc_dir_flags,
- { "Indicates which direction can use the Data Chain structured field.", "tn3270.dc_dir_flags",
- FT_UINT8, BASE_HEX, VALS(vals_data_chaining_dir), 0xC0,
- NULL, HFILL }},
+ { &hf_tn3270_dc_dir,
+ { "Indicates which direction can use the Data Chain structured field.",
+ "tn3270.dc_dir",
+ FT_UINT8, BASE_HEX, VALS(vals_data_chaining_dir), 0xC0,
+ NULL, HFILL }
+ },
/* END - 6.15 - Query Reply (Data Chaining) */
/* 6.16 - Query Reply (Data Streams) */
{ &hf_tn3270_ds_default_sfid,
- { "Default Data Stream", "tn3270.ds_default_sfid",
- FT_UINT8, BASE_HEX, VALS(vals_data_streams), 0x0,
- NULL, HFILL }},
+ { "Default Data Stream",
+ "tn3270.ds_default_sfid",
+ FT_UINT8, BASE_HEX, VALS(vals_data_streams), 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ds_sfid,
- { "Supported Data Stream", "tn3270.ds_sfid",
- FT_UINT8, BASE_HEX, VALS(vals_data_streams), 0x0,
- NULL, HFILL }},
+ { "Supported Data Stream",
+ "tn3270.ds_sfid",
+ FT_UINT8, BASE_HEX, VALS(vals_data_streams), 0x0,
+ NULL, HFILL }
+ },
/* END - 6.16 - Query Reply (Data Streams) */
/* 6.17 - Query Reply (DBCS Asia) */
{ &hf_tn3270_asia_sdp_sosi_soset,
- { "Set ID of the Shift Out (SO) character set", "tn3270.asia_sdp_sosi_soset",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Set ID of the Shift Out (SO) character set",
+ "tn3270.asia_sdp_sosi_soset",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_asia_sdp_ic_func,
- { "SO/SI Creation supported",
- "tn3270.asia_sdp_ic_func", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }},
+ { "SO/SI Creation supported",
+ "tn3270.asia_sdp_ic_func",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ NULL, HFILL }
+ },
/* END - 6.17 - Query Reply (DBCS Asia) */
/* 6.19 - Query Reply (Distributed Data Management) */
{ &hf_tn3270_ddm_flags,
- { "Flags (Reserved)", "tn3270.ddm_flags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags (Reserved)",
+ "tn3270.ddm_flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ddm_limin,
- { "Maximum DDM bytes/transmission allowed inbound", "tn3270.ddm_limin",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Maximum DDM bytes/transmission allowed inbound",
+ "tn3270.ddm_limin",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ddm_limout,
- { "Maximum DDM bytes/transmission allowed outbound", "tn3270.ddm_limout",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Maximum DDM bytes/transmission allowed outbound",
+ "tn3270.ddm_limout",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ddm_nss,
- { "Number of subsets supported", "tn3270.ddm_nss",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Number of subsets supported",
+ "tn3270.ddm_nss",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ddm_ddmss,
- { "DDM subset identifier", "tn3270.ddm_ddmss",
- FT_UINT8, BASE_HEX, VALS(vals_ddm), 0x0,
- NULL, HFILL }},
+ { "DDM subset identifier",
+ "tn3270.ddm_ddmss",
+ FT_UINT8, BASE_HEX, VALS(vals_qr_ddm), 0x0,
+ NULL, HFILL }
+ },
/* END - 6.19 - Query Reply (Distributed Data Management) */
/* 6.20 - Query Reply (Document Interchange Architecture) */
{ &hf_tn3270_dia_flags,
- { "Flags (Reserved)", "tn3270.dia_flags",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags (Reserved)",
+ "tn3270.dia_flags",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_dia_limin,
- { "Maximum DIA bytes/transmission allowed inbound", "tn3270.dia_limin",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Maximum DIA bytes/transmission allowed inbound",
+ "tn3270.dia_limin",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_dia_limout,
- { "Maximum DIA bytes/transmission allowed outbound", "tn3270.dia_limout",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Maximum DIA bytes/transmission allowed outbound",
+ "tn3270.dia_limout",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_dia_nfs,
- { "Number of subsets supported", "tn3270.dia_nfs",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Number of subsets supported",
+ "tn3270.dia_nfs",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_dia_diafs,
- { "DIA function set identifier", "tn3270.dia_diafs",
- FT_UINT8, BASE_HEX, VALS(vals_dia), 0x0,
- NULL, HFILL }},
+ { "DIA function set identifier",
+ "tn3270.dia_diafs",
+ FT_UINT8, BASE_HEX, VALS(vals_qr_dia), 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_dia_diafn,
- { "DIA function set number", "tn3270.dia_diafn",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "DIA function set number",
+ "tn3270.dia_diafn",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 6.20 - Query Reply (Document Interchange Architecture) */
/* 6.22 - Query Reply (Field Outlining) */
{ &hf_tn3270_fo_flags,
- { "Flags", "tn3270.fo_flags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags",
+ "tn3270.fo_flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_fo_vpos,
- { "Location of vertical line", "tn3270.fo_vpos",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Location of vertical line",
+ "tn3270.fo_vpos",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_fo_hpos,
- { "Location of overline/underline", "tn3270.fo_hpos",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Location of overline/underline",
+ "tn3270.fo_hpos",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_fo_hpos0,
- { "Location of overline in case of separation", "tn3270.fo_hpos0",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Location of overline in case of separation",
+ "tn3270.fo_hpos0",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_fo_hpos1,
- { "Location of underline in case of separation", "tn3270.fo_hpos1",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Location of underline in case of separation",
+ "tn3270.fo_hpos1",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 6.22 - Query Reply (Field Outlining) */
/* 6.25 - Query Reply (Format Storage Auxiliary Device) */
{ &hf_tn3270_fsad_flags,
- { "Flags", "tn3270.fsad_flags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags",
+ "tn3270.fsad_flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_fsad_limin,
- { "Reserved for LIMIN parameter. Must be set to zeros.", "tn3270.fsad_limin",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Reserved for LIMIN parameter. Must be set to zeros.",
+ "tn3270.fsad_limin",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_fsad_limout,
- { "Maximum bytes of format storage data per transmission allowed outbound.", "tn3270.fsad_limout",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Maximum bytes of format storage data per transmission allowed outbound.",
+ "tn3270.fsad_limout",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_fsad_size,
- { "Size of the format storage space", "tn3270.fsad_size",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Size of the format storage space",
+ "tn3270.fsad_size",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 6.25 - Query Reply (Format Storage Auxiliary Device) */
/* 6.28 - Query Reply (Highlighting) */
{ &hf_tn3270_h_np,
- { "Number of attribute-value/action pairs", "tn3270.h_np",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Number of attribute-value/action pairs",
+ "tn3270.h_np",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_h_vi,
- { "Data stream attribute value accepted", "tn3270.h_vi",
- FT_UINT8, BASE_HEX, VALS(vals_extended_highlighting), 0x0,
- NULL, HFILL }},
+ { "Data stream attribute value accepted",
+ "tn3270.h_vi",
+ FT_UINT8, BASE_HEX, VALS(vals_at_extended_highlighting), 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_h_ai,
- { "Data stream action", "tn3270.h_ai",
- FT_UINT8, BASE_HEX, VALS(vals_extended_highlighting), 0x0,
- NULL, HFILL }},
+ { "Data stream action",
+ "tn3270.h_ai",
+ FT_UINT8, BASE_HEX, VALS(vals_at_extended_highlighting), 0x0,
+ NULL, HFILL }
+ },
/* END - Query Reply (Highlighting) */
/* 6.29 - Query Reply (IBM Auxiliary Device) */
{ &hf_tn3270_ibm_flags,
- { "Flags", "tn3270.ibm_flags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags",
+ "tn3270.ibm_flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ibm_limin,
- { "Inbound message size limit", "tn3270.ibm_limin",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Inbound message size limit",
+ "tn3270.ibm_limin",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ibm_limout,
- { "Outbound message size limit", "tn3270.ibm_limout",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Outbound message size limit",
+ "tn3270.ibm_limout",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ibm_type,
- { "Type of IBM Auxiliary Device", "tn3270.ibm_type",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Type of IBM Auxiliary Device",
+ "tn3270.ibm_type",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 6.29 - Query Reply (IBM Auxiliary Device) */
/* 6.31 - Query Reply (Implicit Partitions) */
{ &hf_tn3270_ip_flags,
- { "Flags (Reserved)", "tn3270.ip_flags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags (Reserved)",
+ "tn3270.ip_flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ipdd_wd,
- { "Width of the Implicit Partition default screen siz (in character cells)", "tn3270.ipdd_wd",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Width of the Implicit Partition default screen size (in character cells)",
+ "tn3270.ipdd_wd",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ipdd_hd,
- { "Height of the Implicit Partition default screen size", "tn3270.ipdd_hd",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Height of the Implicit Partition default screen size",
+ "tn3270.ipdd_hd",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ipdd_wa,
- { "Width of the Implicit Partition alternate screen size", "tn3270.ipdd_wa",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Width of the Implicit Partition alternate screen size",
+ "tn3270.ipdd_wa",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ipdd_ha,
- { "Height of the Implicit Partition alternate screen size", "tn3270.ipdd_ha",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Height of the Implicit Partition alternate screen size",
+ "tn3270.ipdd_ha",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ippd_dpbs,
- { "Default printer buffer size (in character cells)", "tn3270.ippd_dpbs",
- FT_UINT64, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Default printer buffer size (in character cells)",
+ "tn3270.ippd_dpbs",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ippd_apbs,
- { "Default printer buffer size (in character cells)", "tn3270.ippd_apbs",
- FT_UINT64, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Default printer buffer size (in character cells)",
+ "tn3270.ippd_apbs",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ipccd_wcd,
- { "Width of the character cell for the Implicit Partition default screen size", "tn3270.ipccd_wcd",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Width of the character cell for the Implicit Partition default screen size",
+ "tn3270.ipccd_wcd",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ipccd_hcd,
- { "Height of the character cell for the Implicit Partition default screen size", "tn3270.ipccd_hcd",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Height of the character cell for the Implicit Partition default screen size",
+ "tn3270.ipccd_hcd",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ipccd_wca,
- { "Width of the character cell for the Implicit Partition alternate screen size", "tn3270.ipccd_wca",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Width of the character cell for the Implicit Partition alternate screen size",
+ "tn3270.ipccd_wca",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ipccd_hca,
- { "Height of the character cell for the Implicit Partition alternate screen size", "tn3270.ipccd_hca",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Height of the character cell for the Implicit Partition alternate screen size",
+ "tn3270.ipccd_hca",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - Query Reply (Implicit Partitions) */
/* 6.32 - Query Reply (IOCA Auxiliary Device) */
{ &hf_tn3270_ioca_limin,
- { "Max IOCA bytes/inbound transmission", "tn3270.ioca_limin",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Max IOCA bytes/inbound transmission",
+ "tn3270.ioca_limin",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ioca_limout,
- { "Max IOCA bytes/outbound transmission", "tn3270.ioca_limout",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Max IOCA bytes/outbound transmission",
+ "tn3270.ioca_limout",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ioca_type,
- { "Type of IOCA Auxiliary Device", "tn3270.ioca_type",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Type of IOCA Auxiliary Device",
+ "tn3270.ioca_type",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 6.32 - Query Reply (IOCA Auxiliary Device) */
/* 6.34 - Query Reply (MSR Control) */
{ &hf_tn3270_msr_nd,
- { "Number of MSR device types", "tn3270.msr_nd",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Number of MSR device types",
+ "tn3270.msr_nd",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 6.34 - Query Reply (MSR Control) */
/* 6.36 - Query Reply (OEM Auxiliary Device) */
{ &hf_tn3270_oem_dsref,
- { "Data stream reference identifier", "tn3270.oem_dsref",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Data stream reference identifier",
+ "tn3270.oem_dsref",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_oem_dtype,
- { "Device type", "tn3270.oem_dtype",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Device type",
+ "tn3270.oem_dtype",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_oem_uname,
- { "User assigned name", "tn3270.oem_uname",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "User assigned name",
+ "tn3270.oem_uname",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_sdp_daid,
- { "Destination/Origin ID", "tn3270.oem_sdp_daid_doid",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Destination/Origin ID",
+ "tn3270.oem_sdp_daid_doid",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_oem_sdp_ll_limin,
- { "Maximum OEM dsf bytes/transmission allowed inbound", "tn3270.oem_sdp_ll_limin",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Maximum OEM dsf bytes/transmission allowed inbound",
+ "tn3270.oem_sdp_ll_limin",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_oem_sdp_ll_limout,
- { "Maximum OEM dsf bytes/transmission allowed outbound", "tn3270.oem_sdp_ll_limout",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Maximum OEM dsf bytes/transmission allowed outbound",
+ "tn3270.oem_sdp_ll_limout",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_oem_sdp_pclk_vers,
- { "Protocol version", "tn3270.oem_sdp_pclk_vers",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Protocol version",
+ "tn3270.oem_sdp_pclk_vers",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 6.36 - Query Reply (OEM Auxiliary Device) */
/* 6.37 - Query Reply (Paper Feed Techniques) */
{ &hf_tn3270_pft_flags,
- { "Flags", "tn3270.pft_flags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags",
+ "tn3270.pft_flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_pft_tmo,
- { "Top margin offset in 1/1440ths of an inch", "tn3270.pft_tmo",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Top margin offset in 1/1440ths of an inch",
+ "tn3270.pft_tmo",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_pft_bmo,
- { "Bottom margin offset in 1/1440ths of an inch", "tn3270.pft_bmo",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Bottom margin offset in 1/1440ths of an inch",
+ "tn3270.pft_bmo",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 6.37 - Query Reply (Paper Feed Techniques) */
/* 6.38 - Query Reply (Partition Characteristics) */
{ &hf_tn3270_pc_vo_thickness,
- { "Thickness", "tn3270.pc_vo_thickness",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Thickness",
+ "tn3270.pc_vo_thickness",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END- 6.38 - Query Reply (Partition Characteristics) */
/* 6.41 - Query Reply (Product Defined Data Stream) */
{ &hf_tn3270_pdds_refid,
- { "Reference identifier", "tn3270.pdds_refid",
- FT_UINT8, BASE_HEX, VALS(vals_pdds_refid), 0x0,
- NULL, HFILL }},
+ { "Reference identifier",
+ "tn3270.pdds_refid",
+ FT_UINT8, BASE_HEX, VALS(vals_qr_pdds_refid), 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_pdds_ssid,
- { "Subset identifier", "tn3270.pdds_ssid",
- FT_UINT8, BASE_HEX, VALS(vals_pdds_ssid), 0x0,
- NULL, HFILL }},
+ { "Subset identifier",
+ "tn3270.pdds_ssid",
+ FT_UINT8, BASE_HEX, VALS(vals_qr_pdds_ssid), 0x0,
+ NULL, HFILL }
+ },
/* END - 6.41 - Query Reply (Product Defined Data Stream) */
/* 6.43 - Query Reply (RPQ Names) */
{ &hf_tn3270_rpq_device,
- { "Device type identifier", "tn3270.rpq_device",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Device type identifier",
+ "tn3270.rpq_device",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_rpq_mid,
- { "Model type identifier", "tn3270.rpq_mid",
- FT_UINT64, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Model type identifier",
+ "tn3270.rpq_mid",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_rpq_rpql,
- { "Length of RPQ name (including this byte)", "tn3270.rpq_rpql",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Length of RPQ name (including this byte)",
+ "tn3270.rpq_rpql",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_rpq_name,
- { "RPQ name", "tn3270.rpq_name",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "RPQ name",
+ "tn3270.rpq_name",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - Query Reply (Names) */
/* 6.44 - Query Reply (Save or Restore Format) */
{ &hf_tn3270_srf_fpcbl,
- { "Format parameter control block length", "tn3270.srf_fpcbl",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Format parameter control block length",
+ "tn3270.srf_fpcbl",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 6.44 - Query Reply (Save or Restore Format) */
/* 6.45 - Query Reply (Settable Printer Characteristics) */
{ &hf_tn3270_spc_epc_flags,
- { "Flags", "tn3270.spc_epc_flags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags",
+ "tn3270.spc_epc_flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 6.45 - Query Reply (Settable Printer Characteristics) */
/* 6.47 - Query Reply (Storage Pools) */
{ &hf_tn3270_sp_spid,
- { "Storage pool identity", "tn3270.sp_spid",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Storage pool identity",
+ "tn3270.sp_spid",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_sp_size,
- { "Size of this storage pool when empty", "tn3270.sp_size",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Size of this storage pool when empty",
+ "tn3270.sp_size",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_sp_space,
- { "Space available in this storage pool", "tn3270.sp_space",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Space available in this storage pool",
+ "tn3270.sp_space",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_sp_objlist,
- { "Identifiers of objects housed in this storage pool", "tn3270.sp_objlist",
- FT_UINT16, BASE_HEX, VALS(vals_objlist), 0x0,
- NULL, HFILL }},
+ { "Identifiers of objects housed in this storage pool",
+ "tn3270.sp_objlist",
+ FT_UINT16, BASE_HEX, VALS(vals_sp_objlist), 0x0,
+ NULL, HFILL }
+ },
/* END - 6.47 - Query Reply (Storage Pools) */
/* 6.49 - Query Reply (Text Partitions) */
{ &hf_tn3270_tp_nt,
- { "Maximum number of text partitions", "tn3270.tp_nt",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Maximum number of text partitions",
+ "tn3270.tp_nt",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_tp_m,
- { "Maximum partition size", "tn3270.tp_m",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Maximum partition size",
+ "tn3270.tp_m",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_tp_flags,
- { "Flags", "tn3270.tp_flags",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags",
+ "tn3270.tp_flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_tp_ntt,
- { "Number of text types supported", "tn3270.tp_ntt",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Number of text types supported",
+ "tn3270.tp_ntt",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_tp_tlist,
- { "List of types supported", "tn3270.tp_tlist",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "List of types supported",
+ "tn3270.tp_tlist",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 6.49 - Query Reply (Text Partitions) */
/* 6.50 - Query Reply (Transparency) */
{ &hf_tn3270_t_np,
- { "Number of pairs", "tn3270.t_np",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Number of pairs",
+ "tn3270.t_np",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_t_vi,
- { "Data stream attribute value accepted", "tn3270.t_vi",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Data stream attribute value accepted",
+ "tn3270.t_vi",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_t_ai,
- { "Associated action value", "tn3270.t_ai",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Associated action value",
+ "tn3270.t_ai",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 6.50 - Query Reply (Transparency) */
/* 6.51 Query Reply Usable Area */
{ &hf_tn3270_usable_area_flags1,
- {"Usable Area Flags", "tn3270.query_reply_usable_area_flags1", FT_UINT8, BASE_HEX,
- NULL, 0, NULL, HFILL}},
+ {"Usable Area Flags",
+ "tn3270.query_reply_usable_area_flags1",
+ FT_UINT8, BASE_HEX, NULL, 0,
+ NULL, HFILL}
+ },
{ &hf_tn3270_ua_reserved1,
- { "Reserved",
- "tn3270.reserved", FT_BOOLEAN, 8, NULL, UA_RESERVED1, NULL, HFILL }},
+ { "Reserved",
+ "tn3270.reserved",
+ FT_BOOLEAN, 8, NULL, QR_UA_RESERVED1,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ua_page_printer,
- { "Page Printer",
- "tn3270.ua_page_printer", FT_BOOLEAN, 8, NULL, PAGE_PRINTER, NULL, HFILL }},
+ { "Page Printer",
+ "tn3270.ua_page_printer",
+ FT_BOOLEAN, 8, NULL, QR_UA_PAGE_PRINTER,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ua_reserved2,
- { "Reserved",
- "tn3270.reserved", FT_BOOLEAN, 8, NULL, UA_RESERVED2, NULL, HFILL }},
+ { "Reserved",
+ "tn3270.reserved",
+ FT_BOOLEAN, 8, NULL, QR_UA_RESERVED2,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ua_hard_copy,
- { "Hard Copy",
- "tn3270.ua_hard_copy", FT_BOOLEAN, 8, NULL, HARD_COPY, NULL, HFILL }},
+ { "Hard Copy",
+ "tn3270.ua_hard_copy",
+ FT_BOOLEAN, 8, NULL, QR_UA_HARD_COPY,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ua_addressing,
- {"Usable Area Addressing", "tn3270.ua_addressing", FT_UINT8, BASE_HEX,
- VALS (vals_usable_area_flags1), UNMAPPED, NULL, HFILL}},
+ { "Usable Area Addressing",
+ "tn3270.ua_addressing",
+ FT_UINT8, BASE_HEX, VALS(vals_usable_area_addr_mode), QR_UA_ADDR_MODE_MASK,
+ NULL, HFILL}
+ },
{ &hf_tn3270_usable_area_flags2,
- {"Usable Area Flags", "tn3270.query_reply_usable_area_flags2", FT_UINT8, BASE_HEX,
- NULL, 0x30, NULL, HFILL}},
+ { "Usable Area Flags",
+ "tn3270.query_reply_usable_area_flags2",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}
+ },
{ &hf_tn3270_ua_variable_cells,
- { "Variable Cells",
- "tn3270.ua_variable_cells", FT_BOOLEAN, 8, NULL, VARIABLE_CELLS, NULL, HFILL }},
+ { "Variable Cells",
+ "tn3270.ua_variable_cells",
+ FT_BOOLEAN, 8, TFS(&tn3270_tfs_ua_variable_cells), QR_UA_VARIABLE_CELLS,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ua_characters,
- { "Variable Characters",
- "tn3270.ua_characters", FT_BOOLEAN, 8, NULL, CHARACTERS, NULL, HFILL }},
+ { "Characters",
+ "tn3270.ua_characters",
+ FT_BOOLEAN, 8, TFS(&tn3270_tfs_ua_characters), QR_UA_CHARACTERS,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ua_cell_units,
- { "Cell Units",
- "tn3270.ua_cell_units", FT_BOOLEAN, 8, NULL, CELL_UNITS, NULL, HFILL }},
+ { "Cell Units",
+ "tn3270.ua_cell_units",
+ FT_BOOLEAN, 8, TFS(&tn3270_tfs_ua_cell_units), QR_UA_CELL_UNITS,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ua_width_cells_pels,
- { "Width of usable area in cells/pels", "tn3270.ua_width_cells_pels",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Width of usable area in cells/pels",
+ "tn3270.ua_width_cells_pels",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ua_height_cells_pels,
- { "Height of usable area in cells/pels", "tn3270.ua_height_cells_pels",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Height of usable area in cells/pels",
+ "tn3270.ua_height_cells_pels",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ua_uom_cells_pels,
- { "Units of measure for cells/pels", "tn3270.ua_uom_cells_pels",
- FT_UINT8, BASE_HEX, VALS(vals_usable_area_uom), 0x0,
- NULL, HFILL }},
+ { "Units of measure for cells/pels",
+ "tn3270.ua_uom_cells_pels",
+ FT_UINT8, BASE_HEX, VALS(vals_usable_area_uom), 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ua_xr,
- { "Distance between points in X direction as a fraction, measured in UNITS, with 2-byte "
- "numerator and 2-byte denominator", "tn3270.ua_xr",
- FT_UINT64, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Distance between points in X direction as a fraction, measured in UNITS, with 2-byte"
+ " numerator and 2-byte denominator",
+ "tn3270.ua_xr",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ua_yr,
- { "Distance between points in Y direction as a fraction, measured in UNITS, with 2-byte "
- "numerator and 2-byte denominator", "tn3270.ua_xr",
- FT_UINT64, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Distance between points in Y direction as a fraction, measured in UNITS, with 2-byte"
+ " numerator and 2-byte denominator",
+ "tn3270.ua_xr",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ua_aw,
- { "Number of X units in default cell", "tn3270.ua_aw",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Number of X units in default cell",
+ "tn3270.ua_aw",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ua_ah,
- { "Number of Y units in default cell", "tn3270.ua_ah",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Number of Y units in default cell",
+ "tn3270.ua_ah",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ua_buffsz,
- { "Character buffer size (bytes)", "tn3270.ua_buffsz",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Character buffer size (bytes)",
+ "tn3270.ua_buffsz",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ua_xmin,
- { "Minimum number of X units in variable cell", "tn3270.ua_xmin",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Minimum number of X units in variable cell",
+ "tn3270.ua_xmin",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ua_ymin,
- { "Minimum number of Y units in variable cell", "tn3270.ua_ymin",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Minimum number of Y units in variable cell",
+ "tn3270.ua_ymin",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ua_xmax,
- { "Maximum number of X units in variable cell", "tn3270.ua_xmax",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Maximum number of X units in variable cell",
+ "tn3270.ua_xmax",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_ua_ymax,
- { "Maximum number of Y units in variable cell", "tn3270.ua_ymax",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Maximum number of Y units in variable cell",
+ "tn3270.ua_ymax",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
/* End - 6.51 Query Reply Usable Area */
/* 6.52 - Query Reply (3270 IPDS) */
{ &hf_tn3270_3270_tranlim,
- { "Maximum transmission size allowed outbound", "tn3270.3270_tranlim",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "Maximum transmission size allowed outbound",
+ "tn3270.3270_tranlim",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
/* END - 6.52 - Query Reply (3270 IPDS) */
/* Miscellaneous */
- { &hf_tn3270_double_byte_sf_id,
- { "Structured Field", "tn3270.double_byte_sf_id",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
{ &hf_tn3270_field_data,
- { "Field Data", "tn3270.field_data",
- FT_STRING, BASE_NONE, NULL, 0x0,
- "tn3270.field_data", HFILL }},
+ { "Field Data",
+ "tn3270.field_data",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "tn3270.field_data", HFILL }
+ },
{ &hf_tn3270_number_of_attributes,
- { "Number of Attributes", "tn3270.number_of_attributes",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Number of Attributes",
+ "tn3270.number_of_attributes",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_resbyte,
- { "Flags (Reserved)", "tn3270.resbyte",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags (Reserved)",
+ "tn3270.resbyte",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_resbytes,
- { "Flags (Reserved)", "tn3270.resbytes",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Flags (Reserved)",
+ "tn3270.resbytes",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_res_twobytes,
- { "Flags (Reserved)", "tn3270.res_twobytes",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
- { &hf_tn3270_sf_outbound_id,
- { "Structured Field", "tn3270.sf_outbound_id",
- FT_UINT8, BASE_HEX, VALS(vals_outbound_structured_fields), 0x0,
- NULL, HFILL }},
- { &hf_tn3270_sf_inbound_id,
- { "Structured Field", "tn3270.sf_inbound_id",
- FT_UINT8, BASE_HEX, VALS(vals_inbound_structured_fields), 0x0,
- NULL, HFILL }},
- { &hf_tn3270_sf_inbound_outbound_id,
- { "Structured Field", "tn3270.sf_inbound_outbound_id",
- FT_UINT8, BASE_HEX, VALS(vals_outbound_inbound_structured_fields), 0x0,
- NULL, HFILL }},
+ { "Flags (Reserved)",
+ "tn3270.res_twobytes",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_tn3270_sf_single_byte_id,
+ { "Structured Field",
+ "tn3270.sf_id",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_tn3270_sf_double_byte_id,
+ { "Structured Field",
+ "tn3270.sf_id",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_sf_query_reply,
- { "Query Reply", "tn3270.sf_query_reply",
- FT_UINT8, BASE_HEX, VALS(vals_query_replies), 0x0,
- NULL, HFILL }},
+ { "Query Reply",
+ "tn3270.sf_query_reply",
+ FT_UINT8, BASE_HEX, VALS(vals_sf_query_replies), 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_null,
- { "Trailing Null (Possible Mainframe/Emulator Bug)", "tn3270.null",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
+ { "Trailing Null (Possible Mainframe/Emulator Bug)",
+ "tn3270.null",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_unknown_data,
- { "Unknown Data (Possible Mainframe/Emulator Bug)", "tn3270.unknown_data",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
+ { "Unknown Data (Possible Mainframe/Emulator Bug)",
+ "tn3270.unknown_data",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
- /*TN3270E - Header Fields */
+ /* TN3270E - Header Fields */
{ &hf_tn3270_tn3270e_data_type,
- { "TN3270E Data Type", "tn3270.tn3270e_data_type",
- FT_UINT8, BASE_HEX, VALS(vals_tn3270_header_data_types), 0x0,
- NULL, HFILL }},
+ { "TN3270E Data Type",
+ "tn3270.tn3270e_data_type",
+ FT_UINT8, BASE_HEX, VALS(vals_tn3270_header_data_types), 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_tn3270e_request_flag,
- { "TN3270E Request Flag", "tn3270.tn3270e_request_flag",
- FT_UINT8, BASE_HEX, VALS(vals_tn3270_header_request_flags), 0x0,
- NULL, HFILL }},
+ { "TN3270E Request Flag",
+ "tn3270.tn3270e_request_flag",
+ FT_UINT8, BASE_HEX, VALS(vals_tn3270_header_request_flags), 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_tn3270e_response_flag_3270_SCS,
- { "TN3270E Response Flag", "tn3270.tn3270e_response_flag",
- FT_UINT8, BASE_HEX, VALS(vals_tn3270_header_response_flags_3270_SCS), 0x0,
- NULL, HFILL }},
+ { "TN3270E Response Flag",
+ "tn3270.tn3270e_response_flag",
+ FT_UINT8, BASE_HEX, VALS(vals_tn3270_header_response_flags_3270_SCS), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_tn3270_tn3270e_response_flag_response,
+ { "TN3270E Response Flag",
+ "tn3270.tn3270e_response_flag",
+ FT_UINT8, BASE_HEX, VALS(vals_tn3270_header_response_flags_response), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_tn3270_tn3270e_response_flag_unused,
+ { "TN3270E Response Flag",
+ "tn3270.tn3270e_response_flag",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_tn3270e_seq_number,
- { "TN3270E Seq Number", "tn3270.tn3270e_seq_number",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
+ { "TN3270E Seq Number",
+ "tn3270.tn3270e_seq_number",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_tn3270_tn3270e_header_data,
- { "TN3270E Header Data", "tn3270.tn3270e_header_data",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }}
+ { "TN3270E Header Data",
+ "tn3270.tn3270e_header_data",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ }
};
static gint *ett[] = {
&ett_tn3270,
+ &ett_tn3270e_hdr,
&ett_sf,
&ett_tn3270_field_attribute,
&ett_tn3270_field_validation,
@@ -6631,10 +7669,10 @@ proto_register_tn3270(void)
&ett_tn3270_character_sets_form,
&ett_tn3270_cs_descriptor_flags,
&ett_tn3270_color_flags,
- &ett_tn3270_dc_dir_flags,
&ett_tn3270_wcc,
&ett_tn3270_ccc,
&ett_tn3270_msr_state_mask,
+ &ett_tn3270_data_chain_fields,
&ett_tn3270_query_list
};
@@ -6644,3 +7682,16 @@ proto_register_tn3270(void)
proto_register_subtree_array(ett, array_length(ett));
}
+
+/*
+ * Editor modelines
+ *
+ * Local Variables:
+ * c-basic-offset: 2
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * ex: set shiftwidth=2 tabstop=8 expandtab:
+ * :indentSize=2:tabSize=8:noTabs=true:
+ */
diff --git a/epan/dissectors/packet-tnef.c b/epan/dissectors/packet-tnef.c
index bd5943f3e6..6f474f4bf8 100644
--- a/epan/dissectors/packet-tnef.c
+++ b/epan/dissectors/packet-tnef.c
@@ -28,9 +28,6 @@
#include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-#include <time.h>
#include <glib.h>
#include <epan/packet.h>
@@ -244,7 +241,7 @@ static const value_string tnef_Attribute_vals[] = {
{ 0, NULL }
};
-static gint dissect_counted_values(tvbuff_t *tvb, gint offset, int hf_id, packet_info *pinfo _U_, proto_tree *tree, gboolean single, gboolean unicode)
+static gint dissect_counted_values(tvbuff_t *tvb, gint offset, int hf_id, packet_info *pinfo _U_, proto_tree *tree, gboolean single, gboolean unicode, guint encoding)
{
proto_item *item;
guint32 length, count, i;
@@ -271,10 +268,10 @@ static gint dissect_counted_values(tvbuff_t *tvb, gint offset, int hf_id, packe
offset += 4;
if (unicode) {
- char *unicode_str = tvb_get_ephemeral_unicode_string(tvb, offset, length/2, ENC_LITTLE_ENDIAN);
+ char *unicode_str = tvb_get_ephemeral_unicode_string(tvb, offset, length, ENC_LITTLE_ENDIAN);
proto_tree_add_string(tree, hf_id, tvb, offset, length, unicode_str);
} else {
- proto_tree_add_item(tree, hf_id, tvb, offset, length, FALSE);
+ proto_tree_add_item(tree, hf_id, tvb, offset, length, encoding);
}
offset += length;
@@ -408,7 +405,7 @@ static void dissect_mapiprops(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
proto_tree_add_item(tag_tree, hf_tnef_property_tag_name_length, tvb, offset, 4, ENC_LITTLE_ENDIAN);
offset += 4;
- name_string = tvb_get_ephemeral_unicode_string (tvb, offset, tag_length / 2, ENC_LITTLE_ENDIAN);
+ name_string = tvb_get_ephemeral_unicode_string (tvb, offset, tag_length, ENC_LITTLE_ENDIAN);
proto_tree_add_string_format(tag_tree, hf_tnef_property_tag_name_string, tvb, offset,
tag_length, name_string, "Name: %s", name_string);
offset += tag_length;
@@ -438,13 +435,15 @@ static void dissect_mapiprops(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
offset = PIDL_dissect_uint16(tvb, offset, pinfo, prop_tree, drep, hf_tnef_PropValue_b, 0);
break;
case PT_STRING8:
- offset = dissect_counted_values(tvb, offset, hf_tnef_PropValue_lpszA, pinfo, prop_tree, TRUE, FALSE);
+ /* XXX - code page? */
+ offset = dissect_counted_values(tvb, offset, hf_tnef_PropValue_lpszA, pinfo, prop_tree, TRUE, FALSE, ENC_ASCII|ENC_NA);
break;
case PT_BINARY:
- offset = dissect_counted_values(tvb, offset, hf_tnef_PropValue_bin, pinfo, prop_tree, TRUE, FALSE);
+ offset = dissect_counted_values(tvb, offset, hf_tnef_PropValue_bin, pinfo, prop_tree, TRUE, FALSE, ENC_NA);
break;
case PT_UNICODE:
- offset = dissect_counted_values (tvb, offset, hf_tnef_PropValue_lpszW, pinfo, prop_tree, TRUE, TRUE);
+ /* XXX - UCS-2 and UTF-16 need ENC_ values */
+ offset = dissect_counted_values (tvb, offset, hf_tnef_PropValue_lpszW, pinfo, prop_tree, TRUE, TRUE, ENC_NA);
break;
case PT_CLSID:
offset = nspi_dissect_struct_MAPIUID(tvb, offset, pinfo, prop_tree, drep, hf_tnef_PropValue_lpguid, 0);
diff --git a/epan/dissectors/packet-tte-pcf.c b/epan/dissectors/packet-tte-pcf.c
index 9a15357630..2c8023cda0 100644
--- a/epan/dissectors/packet-tte-pcf.c
+++ b/epan/dissectors/packet-tte-pcf.c
@@ -33,7 +33,6 @@
#include "config.h"
#endif
-#include <stdlib.h>
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-turbocell.c b/epan/dissectors/packet-turbocell.c
index b34b61a4b2..5ea32ea82b 100644
--- a/epan/dissectors/packet-turbocell.c
+++ b/epan/dissectors/packet-turbocell.c
@@ -39,8 +39,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-turnchannel.c b/epan/dissectors/packet-turnchannel.c
index 3e4f8709cf..d856ea0061 100644
--- a/epan/dissectors/packet-turnchannel.c
+++ b/epan/dissectors/packet-turnchannel.c
@@ -35,8 +35,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-tzsp.c b/epan/dissectors/packet-tzsp.c
index b5781fb926..d2f4d57a88 100644
--- a/epan/dissectors/packet-tzsp.c
+++ b/epan/dissectors/packet-tzsp.c
@@ -30,10 +30,6 @@
# include "config.h"
#endif
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
#include <glib.h>
#include <epan/packet.h>
@@ -87,8 +83,8 @@ static int hf_sensormac = -1;
#define TZSP_ENCAP_ETHERNET 1
#define TZSP_ENCAP_IEEE_802_11 18
-#define TZSP_ENCAP_PRISM_HEADER 119
-#define TZSP_ENCAP_WLAN_AVS 127
+#define TZSP_ENCAP_IEEE_802_11_PRISM 119
+#define TZSP_ENCAP_IEEE_802_11_AVS 127
/* ************************************************************************* */
/* Generic header options */
@@ -117,11 +113,11 @@ static int hf_sensormac = -1;
/* Add option information to the display */
/* ************************************************************************* */
-static int
+static int
add_option_info(tvbuff_t *tvb, int pos, proto_tree *tree, proto_item *ti)
{
guint8 tag, length, fcs_err = 0, encr = 0, seen_fcs_err = 0;
-
+
/*
* Read all option tags in an endless loop. If the packet is malformed this
* loop might be a problem.
@@ -254,8 +250,8 @@ struct encap_map {
static const struct encap_map map_table[] = {
{ TZSP_ENCAP_ETHERNET, WTAP_ENCAP_ETHERNET },
- { TZSP_ENCAP_PRISM_HEADER, WTAP_ENCAP_PRISM_HEADER },
- { TZSP_ENCAP_WLAN_AVS, WTAP_ENCAP_IEEE_802_11_WLAN_AVS },
+ { TZSP_ENCAP_IEEE_802_11_PRISM, WTAP_ENCAP_IEEE_802_11_PRISM },
+ { TZSP_ENCAP_IEEE_802_11_AVS, WTAP_ENCAP_IEEE_802_11_AVS },
{ TZSP_ENCAP_IEEE_802_11, WTAP_ENCAP_IEEE_802_11 },
{ 0, -1 }
};
diff --git a/epan/dissectors/packet-ua.c b/epan/dissectors/packet-ua.c
index cae38d6eb8..516b02c3a4 100644
--- a/epan/dissectors/packet-ua.c
+++ b/epan/dissectors/packet-ua.c
@@ -27,150 +27,146 @@
#include "config.h"
#endif
+#include <glib.h>
+
#include "epan/packet.h"
#include "epan/prefs.h"
-#include "epan/tap.h"
-#include "epan/value_string.h"
+
#include "epan/dissectors/packet-rtp.h"
#include "epan/dissectors/packet-rtcp.h"
-#include <string.h>
#include "packet-uaudp.h"
-
-
/*-----------------------------------------------------------------------------
GLOBALS
---------------------------------------------------------------------------*/
-static int proto_ua_msg = -1;
-static gint ett_ua_msg = -1;
-
-e_ua_direction message_direction; /* Uses to determine UA3G messages */
-static gboolean setup_conversations_enabled = TRUE;
-
-static dissector_handle_t rtp_handle = NULL;
-static dissector_handle_t rtcp_handle = NULL;
+#if 0
+static dissector_table_t ua_opcode_dissector_table;
+#endif
-extern gint find_terminal_port(guint port);
+static int proto_ua_msg = -1;
+static gint ett_ua_msg = -1;
+e_ua_direction message_direction; /* Uses to determine UA3G messages */
-extern void dhs2ua(char *p, const char *ptr, int opcode, int length);
-extern void ua2dhs(char *p, const char *ptr, int opcode, int length);
+static gboolean setup_conversations_enabled = TRUE;
+static dissector_handle_t noe_handle;
+static dissector_handle_t ua3g_handle;
-static void uadecode(e_ua_direction direction,
- proto_tree *tree,
- packet_info *pinfo,
- tvbuff_t *tvb,
- gint offset,
- gint opcode,
- gint length)
+static void uadecode(e_ua_direction direction,
+ proto_tree *tree,
+ packet_info *pinfo,
+ tvbuff_t *tvb,
+ gint offset,
+ gint opcode,
+ gint length)
{
- message_direction = direction;
-
- switch(opcode & 0x7f) /* suppression of the CP bit */
- {
- case 0x15:
- case 0x16:
- {
- call_dissector(find_dissector("noe"),
- tvb_new_subset(tvb, offset, length, length),
- pinfo,
- tree);
- break;
- }
- case 0x00:
- case 0x01:
- case 0x02:
- case 0x03:
- case 0x04:
- case 0x05:
- case 0x06:
- case 0x07: /* Only UA NOE */
- case 0x08: /* Only UA NOE */
- case 0x09:
- case 0x0A:
- case 0x0B:
- case 0x0C:
- case 0x0D:
- case 0x0E:
- case 0x0F:
- case 0x11:
- case 0x12:
- case 0x13:
- case 0x14:
- case 0x17:
- case 0x18:
- case 0x1F: /* case 0x9F */
- case 0x20:
- case 0x21:
- case 0x22:
- case 0x23:
- case 0x24: /* Only IP NOE */
- case 0x25: /* Only IP NOE */
- case 0x26:
- case 0x27:
- case 0x28:
- case 0x29:
- case 0x2A:
- case 0x2B: /* Only UA NOE */
- case 0x2C:
- case 0x2D:
- case 0x2E:
- case 0x30:
- case 0x31:
- case 0x32: /* Only UA NOE */
- case 0x33:
- case 0x35:
- case 0x36: /* IP Phone */
- case 0x38:
- case 0x39:
- case 0x3A:
- case 0x3B:
- case 0x3C:
- case 0x3D:
- case 0x3E:
- case 0x3F:
- case 0x40:
- case 0x41:
- case 0x42:
- case 0x43:
- case 0x44:
- case 0x45:
- case 0x46:
- case 0x47:
- case 0x48:
- case 0x49:
- case 0x4A:
- case 0x4B:
- case 0x4C:
- case 0x4D:
- case 0x4E:
- case 0x4F:
- case 0x50: /* Only UA NOE */
- {
- call_dissector(find_dissector("ua3g"),
- tvb_new_subset(tvb, offset, length, length),
- pinfo,
- tree);
- break;
- }
- default:
- {
- /* add text to the frame "INFO" column */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, " - UA3G Message ERR: Opcode Unknown");
-
- proto_tree_add_text(tree,
- tvb,
- offset,
- length,
- "Opcode Unknown 0x%02x",
- tvb_get_guint8(tvb, (offset + 2)));
- break;
- }
- }
+ message_direction = direction;
+
+ switch (opcode & 0x7f) /* suppression of the CP bit */
+ {
+ case 0x15:
+ case 0x16:
+ {
+ call_dissector(noe_handle,
+ tvb_new_subset(tvb, offset, length, length),
+ pinfo,
+ tree);
+ break;
+ }
+ case 0x00:
+ case 0x01:
+ case 0x02:
+ case 0x03:
+ case 0x04:
+ case 0x05:
+ case 0x06:
+ case 0x07: /* Only UA NOE */
+ case 0x08: /* Only UA NOE */
+ case 0x09:
+ case 0x0A:
+ case 0x0B:
+ case 0x0C:
+ case 0x0D:
+ case 0x0E:
+ case 0x0F:
+ case 0x11:
+ case 0x12:
+ case 0x13:
+ case 0x14:
+ case 0x17:
+ case 0x18:
+ case 0x1F: /* case 0x9F */
+ case 0x20:
+ case 0x21:
+ case 0x22:
+ case 0x23:
+ case 0x24: /* Only IP NOE */
+ case 0x25: /* Only IP NOE */
+ case 0x26:
+ case 0x27:
+ case 0x28:
+ case 0x29:
+ case 0x2A:
+ case 0x2B: /* Only UA NOE */
+ case 0x2C:
+ case 0x2D:
+ case 0x2E:
+ case 0x30:
+ case 0x31:
+ case 0x32: /* Only UA NOE */
+ case 0x33:
+ case 0x35:
+ case 0x36: /* IP Phone */
+ case 0x38:
+ case 0x39:
+ case 0x3A:
+ case 0x3B:
+ case 0x3C:
+ case 0x3D:
+ case 0x3E:
+ case 0x3F:
+ case 0x40:
+ case 0x41:
+ case 0x42:
+ case 0x43:
+ case 0x44:
+ case 0x45:
+ case 0x46:
+ case 0x47:
+ case 0x48:
+ case 0x49:
+ case 0x4A:
+ case 0x4B:
+ case 0x4C:
+ case 0x4D:
+ case 0x4E:
+ case 0x4F:
+ case 0x50: /* Only UA NOE */
+ {
+ call_dissector(ua3g_handle,
+ tvb_new_subset(tvb, offset, length, length),
+ pinfo,
+ tree);
+ break;
+ }
+ default:
+ {
+ /* add text to the frame "INFO" column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, " - UA3G Message ERR: Opcode Unknown");
+
+ proto_tree_add_text(tree,
+ tvb,
+ offset,
+ length,
+ "Opcode Unknown 0x%02x",
+ tvb_get_guint8(tvb, (offset + 2)));
+ break;
+ }
+ }
}
@@ -178,100 +174,93 @@ static void uadecode(e_ua_direction direction,
/*-----------------------------------------------------------------------------
UA DISSECTOR
---------------------------------------------------------------------------*/
-static void _dissect_ua_msg(tvbuff_t *tvb,
- packet_info *pinfo,
- proto_tree *tree,
- e_ua_direction direction)
+static void _dissect_ua_msg(tvbuff_t *tvb,
+ packet_info *pinfo,
+ proto_tree *tree,
+ e_ua_direction direction)
{
- proto_item *ua_msg_item = NULL;
- proto_tree *ua_msg_tree = NULL;
- gint offset = 0;
- gint length = 0;
- gint opcode = 0;
- gint suboffset = 0;
- address remote_rtp_addr;
- guint32 remote_rtp_port = 0;
-
- if(tree)
- {
- ua_msg_item = proto_tree_add_protocol_format(tree, proto_ua_msg, tvb, 0, -1,
- "Universal Alcatel Protocol, %s",
- ((direction == SYS_TO_TERM) ?
- "System -> Terminal" : "Terminal -> System"));
-
- ua_msg_tree = proto_item_add_subtree(ua_msg_item, ett_ua_msg);
-
- while (tvb_offset_exists(tvb, offset))
- {
- length = (tvb_get_guint8(tvb, offset+0) +
- tvb_get_guint8(tvb, offset+1) * 256) + 2;
-
- opcode = tvb_get_guint8(tvb, offset+2);
-
- /* RTP/RTCP conversation setup */
- if(setup_conversations_enabled && opcode==0x13 && tvb_get_guint8(tvb, offset+3)==0x01)
- {
- /* StartRTP */
- suboffset = offset+5;
- remote_rtp_addr.data = NULL;
-
- while(suboffset < offset+length)
- {
- switch(tvb_get_guint8(tvb, suboffset))
- {
- case 0x00: /* local port */
- {
- /*local_rtp_port = tvb_get_ntohs(tvb, suboffset+2);*/
- break;
- }
- case 0x01: /* remote IP */
- {
- remote_rtp_addr.type=AT_IPv4;
- remote_rtp_addr.len=4;
- remote_rtp_addr.data=tvb_get_ptr(tvb, suboffset+2, 4);
- break;
- }
- case 0x02: /* remote port */
- {
- remote_rtp_port = tvb_get_ntohs(tvb, suboffset+2);
- break;
- }
- }
-
- suboffset += tvb_get_guint8(tvb, suboffset+1) + 2;
- }
-
- if(remote_rtp_addr.data!=NULL && remote_rtp_port!=0)
- {
- if(rtp_handle)
- {
- rtp_add_address(pinfo, &remote_rtp_addr, remote_rtp_port, 0,
- "UA", pinfo->fd->num, 0, NULL);
- }
- if(rtcp_handle)
- {
- rtcp_add_address(pinfo, &remote_rtp_addr, remote_rtp_port+1, 0,
- "UA", pinfo->fd->num);
- }
- }
- }
-
- uadecode(direction, ua_msg_tree, pinfo, tvb, offset, opcode, length);
-
- offset += length;
- }
- }
+ gint offset = 0;
+ proto_item *ua_msg_item;
+ proto_tree *ua_msg_tree;
+
+ ua_msg_item = proto_tree_add_protocol_format(tree, proto_ua_msg, tvb, 0, -1,
+ "Universal Alcatel Protocol, %s",
+ ((direction == SYS_TO_TERM) ?
+ "System -> Terminal" : "Terminal -> System"));
+
+ ua_msg_tree = proto_item_add_subtree(ua_msg_item, ett_ua_msg);
+
+ while (tvb_offset_exists(tvb, offset))
+ {
+ gint length;
+ gint opcode;
+
+ length = tvb_get_letohs(tvb, offset) + 2;
+ opcode = tvb_get_guint8(tvb, offset+2);
+
+ /* RTP/RTCP conversation setup */
+ if (setup_conversations_enabled && (opcode==0x13) && (tvb_get_guint8(tvb, offset+3)==0x01))
+ {
+ address remote_rtp_addr;
+ guint32 remote_rtp_port;
+ gint suboffset;
+
+ remote_rtp_addr.data = NULL;
+ remote_rtp_port = 0;
+
+ /* StartRTP */
+ suboffset = offset + 5;
+
+ while (suboffset < offset+length)
+ {
+ switch (tvb_get_guint8(tvb, suboffset))
+ {
+ case 0x00: /* local port */
+ {
+ /*local_rtp_port = tvb_get_ntohs(tvb, suboffset+2);*/
+ break;
+ }
+ case 0x01: /* remote IP */
+ {
+ remote_rtp_addr.type = AT_IPv4;
+ remote_rtp_addr.len = 4;
+ remote_rtp_addr.data = tvb_get_ptr(tvb, suboffset+2, 4);
+ break;
+ }
+ case 0x02: /* remote port */
+ {
+ remote_rtp_port = tvb_get_ntohs(tvb, suboffset+2);
+ break;
+ }
+ }
+
+ suboffset += tvb_get_guint8(tvb, suboffset+1) + 2;
+ }
+
+ if ((remote_rtp_addr.data != NULL) && (remote_rtp_port != 0))
+ {
+ rtp_add_address(pinfo, &remote_rtp_addr, remote_rtp_port, 0,
+ "UA", pinfo->fd->num, 0, NULL);
+ rtcp_add_address(pinfo, &remote_rtp_addr, remote_rtp_port+1, 0,
+ "UA", pinfo->fd->num);
+ }
+ }
+
+ uadecode(direction, ua_msg_tree, pinfo, tvb, offset, opcode, length);
+
+ offset += length;
+ }
}
static void dissect_ua_sys_to_term(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- _dissect_ua_msg(tvb, pinfo, tree, SYS_TO_TERM);
+ _dissect_ua_msg(tvb, pinfo, tree, SYS_TO_TERM);
}
static void dissect_ua_term_to_sys(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- _dissect_ua_msg(tvb, pinfo, tree, TERM_TO_SYS);
+ _dissect_ua_msg(tvb, pinfo, tree, TERM_TO_SYS);
}
@@ -279,56 +268,56 @@ static void dissect_ua_term_to_sys(tvbuff_t *tvb, packet_info *pinfo, proto_tree
DISSECTORS REGISTRATION FUNCTIONS
---------------------------------------------------------------------------*/
-void proto_reg_handoff_ua_msg(void)
+void proto_register_ua_msg(void)
{
- static gboolean prefs_initialized = FALSE;
- dissector_handle_t handle_ua_msg;
-
- if(!prefs_initialized)
- {
- /* hooking of UA on UAUDP */
- register_dissector_table("uaudp.opcode",
- "UAUDP opcode",
- FT_UINT8,
- BASE_DEC);
-
- handle_ua_msg = find_dissector("ua_sys_to_term");
- dissector_add_uint("uaudp.opcode", UAUDP_DATA, handle_ua_msg);
-
- handle_ua_msg = find_dissector("ua_term_to_sys");
- dissector_add_uint("uaudp.opcode", UAUDP_DATA, handle_ua_msg);
- prefs_initialized = TRUE;
- }
-}
+ module_t *ua_msg_module;
+ static gint *ett[] =
+ {
+ &ett_ua_msg,
+ };
-void proto_register_ua_msg(void)
-{
- module_t *ua_msg_module;
+ /* UA dissector registration */
+ proto_ua_msg = proto_register_protocol("Universal Alcatel Protocol", "UA", "ua");
+
+ register_dissector("ua_sys_to_term", dissect_ua_sys_to_term, proto_ua_msg);
+ register_dissector("ua_term_to_sys", dissect_ua_term_to_sys, proto_ua_msg);
+
+ /* Common subtree array registration */
+ proto_register_subtree_array(ett, array_length(ett));
- static gint *ett[] =
- {
- &ett_ua_msg,
- };
+ /* Register preferences */
+ ua_msg_module = prefs_register_protocol(proto_ua_msg, NULL);
- /* used for StartRTP conversation setup */
- rtp_handle = find_dissector("rtp");
- rtcp_handle = find_dissector("rtcp");
+ prefs_register_bool_preference(ua_msg_module, "setup_conversations",
+ "Setup RTP/RTCP conversations on Start RTP",
+ "Setup RTP/RTCP conversations when parsing Start RTP messages",
+ &setup_conversations_enabled);
+}
+
+void proto_reg_handoff_ua_msg(void)
+{
+#if 0 /* Future */
+ dissector_handle_t handle_ua_msg;
+
+ /* hooking of UA on UAUDP */
+ /* XXX: The following is NG since the same 'pattern' is added twice */
+ handle_ua_msg = find_dissector("ua_sys_to_term");
+ dissector_add_uint("uaudp.opcode", UAUDP_DATA, handle_ua_msg);
- /* UA dissector registration */
- proto_ua_msg = proto_register_protocol("Universal Alcatel Protocol", "UA", "ua");
+ handle_ua_msg = find_dissector("ua_term_to_sys");
+ dissector_add_uint("uaudp.opcode", UAUDP_DATA, handle_ua_msg);
- register_dissector("ua_sys_to_term", dissect_ua_sys_to_term, proto_ua_msg);
- register_dissector("ua_term_to_sys", dissect_ua_term_to_sys, proto_ua_msg);
+ /* For hooking dissectors to UA */
+ ua_opcode_dissector_table =
+ register_dissector_table("ua.opcode",
+ "ua.opcode",
+ FT_UINT8,
+ BASE_HEX);
- /* Common subtree array registration */
- proto_register_subtree_array(ett, array_length(ett));
- /* Register preferences */
- ua_msg_module = prefs_register_protocol(proto_ua_msg, proto_reg_handoff_ua_msg);
+#endif
+ noe_handle = find_dissector("noe");
+ ua3g_handle = find_dissector("ua3g");
- prefs_register_bool_preference(ua_msg_module, "setup_conversations",
- "Setup RTP/RTCP conversations on Start RTP",
- "Setup RTP/RTCP conversations when parsing Start RTP messages",
- &setup_conversations_enabled);
}
diff --git a/epan/dissectors/packet-ua3g.c b/epan/dissectors/packet-ua3g.c
index edbbe0e534..f719be94b9 100644
--- a/epan/dissectors/packet-ua3g.c
+++ b/epan/dissectors/packet-ua3g.c
@@ -27,6353 +27,5140 @@
#include "config.h"
#endif
+#include <ctype.h>
+
#include <glib.h>
+
#include "epan/packet.h"
-#include "epan/prefs.h"
-#include "epan/tap.h"
-#include "epan/value_string.h"
#include "epan/emem.h"
#include "packet-uaudp.h"
-extern int isprint( int ch );
/*-----------------------------------------------------------------------------
- Globals
- ---------------------------------------------------------------------------*/
-static int proto_ua3g = -1;
-static gint ett_ua3g = -1;
-static gint ett_ua3g_body = -1;
-static gint ett_ua3g_param = -1;
-static gint ett_ua3g_option = -1;
-static int hf_ua3g_length = -1;
-static int hf_ua3g_opcode = -1;
-static int hf_ua3g_ip = -1;
-static int hf_ua3g_command = -1;
+ Globals
+ ---------------------------------------------------------------------------*/
+
+#if 0
+static dissector_table_t ua3g_opcode_dissector_table;
+#endif
+
+
+static int proto_ua3g = -1;
+static gint ett_ua3g = -1;
+static gint ett_ua3g_body = -1;
+static gint ett_ua3g_param = -1;
+static gint ett_ua3g_option = -1;
+static int hf_ua3g_length = -1;
+static int hf_ua3g_opcode = -1;
+static int hf_ua3g_ip = -1;
+static int hf_ua3g_command = -1;
extern e_ua_direction message_direction;
/* Definition of opcodes */
/* System To Terminal */
-#define NOP 0x00
-#define PRODUCTION_TEST 0x01 /* IP Phone */
-#define SUBDEVICE_ESCAPE 0x02 /* IP Phone */
-#define SOFT_RESET 0x03
-#define IP_PHONE_WARMSTART 0x04 /* IP Phone */
-#define HE_ROUTING 0x05 /* IP Phone - NOT EXPECTED */
-#define SUBDEVICE_RESET 0x06
-#define LOOPBACK_ON 0x07 /* IP Phone & UA NOE */
-#define LOOPBACK_OFF 0x08 /* IP Phone & UA NOE */
-#define VIDEO_ROUTING 0x09 /* IP Phone - NOT EXPECTED */
-#define SUPER_MSG 0x0B
-#define SEGMENT_MSG 0x0C
-#define REMOTE_UA_ROUTING 0x0D /* IP Phone - NOT EXPECTED */
-#define VERY_REMOTE_UA_ROUTING 0x0E /* IP Phone - NOT EXPECTED */
-#define OSI_ROUTING 0x0F /* IP Phone - NOT EXPECTED */
-#define ABC_A_ROUTING 0x11 /* IP Phone - NOT EXPECTED */
-#define IBS_ROUTING 0x12 /* IP Phone - NOT EXPECTED */
-#define IP_DEVICE_ROUTING 0x13
-#define M_REFLEX_HUB_ROUTING 0x14 /* IP Phone - NOT EXPECTED */
-/*#define NOE_CS_ROUTING 0x15 // Decoded by packet-noe.c */
-/*#define NOE_PS_ROUTING 0x16 // Decoded by packet-noe.c */
-#define SUPER_MSG_2 0x17
-#define DEBUG_IN_LINE 0x18
-#define LED_COMMAND 0x21 /* IP Phone */
-#define START_BUZZER 0x22 /* VTA */
-#define STOP_BUZZER 0x23 /* VTA */
-#define ENABLE_DTMF 0x24 /* Only IP NOE */
-#define DISABLE_DTMF 0x25 /* Only IP NOE */
-#define CLEAR_LCD_DISP 0x26 /* IP Phone */
-#define LCD_LINE_1_CMD 0x27 /* IP Phone */
-#define LCD_LINE_2_CMD 0x28 /* IP Phone */
-#define MAIN_VOICE_MODE 0x29
-#define VERSION_INQUIRY 0x2A
-#define ARE_YOU_THERE 0x2B /* IP Phone & UA NOE */
-#define SUBDEVICE_METASTATE 0x2C
-#define VTA_STATUS_INQUIRY 0x2D /* IP Phone */
-#define SUBDEVICE_STATE 0x2E
-#define DWL_DTMF_CLCK_FORMAT 0x30 /* IP Phone */
-#define SET_CLCK 0x31 /* IP Phone */
-#define VOICE_CHANNEL 0x32 /* IP Phone & UA NOE */
-#define EXTERNAL_RINGING 0x33
-#define LCD_CURSOR 0x35 /* IP Phone */
-#define DWL_SPECIAL_CHAR 0x36 /* IP Phone */
-#define SET_CLCK_TIMER_POS 0x38 /* IP Phone */
-#define SET_LCD_CONTRAST 0x39 /* IP Phone */
-#define AUDIO_IDLE 0x3A
-#define SET_SPEAKER_VOL 0x3B /* IP Phone */
-#define BEEP 0x3C
-#define SIDETONE 0x3D
-#define RINGING_CADENCE 0x3E
-#define MUTE 0x3F
-#define FEEDBACK 0x40
-#define KEY_RELEASE 0x41 /* IP Phone */
-#define TRACE_ON 0x42 /* IP Phone - NOT EXPECTED */
-#define TRACE_OFF 0x43 /* IP Phone - NOT EXPECTED */
-#define READ_PERIPHERAL 0x44 /* IP Phone - NOT EXPECTED */
-#define WRITE_PERIPHERAL 0x45 /* IP Phone - NOT EXPECTED */
-#define ALL_ICONS_OFF 0x46 /* IP Phone */
-#define ICON_CMD 0x47 /* IP Phone */
-#define AMPLIFIED_HANDSET 0x48 /* IP Phone */
-#define AUDIO_CONFIG 0x49
-#define AUDIO_PADDED_PATH 0x4A /* IP Phone */
-#define RELEASE_RADIO_LINK 0x4B /* IP Phone - NOT EXPECTED */
-#define DECT_HANDOVER 0x4C /* IP Phone - NOT EXPECTED */
-#define LOUDSPEAKER 0x4D
-#define ANNOUNCE 0x4E
-#define RING 0x4F
-#define UA_DWL_PROTOCOL 0x50 /* Only UA NOE */
+#define SC_NOP 0x00
+#define SC_PRODUCTION_TEST 0x01 /* IP Phone */
+#define SC_SUBDEVICE_ESCAPE 0x02 /* IP Phone */
+#define SC_SOFT_RESET 0x03
+#define SC_IP_PHONE_WARMSTART 0x04 /* IP Phone */
+#define SC_HE_ROUTING 0x05 /* IP Phone - NOT EXPECTED */
+#define SC_SUBDEVICE_RESET 0x06
+#define SC_LOOPBACK_ON 0x07 /* IP Phone & UA NOE */
+#define SC_LOOPBACK_OFF 0x08 /* IP Phone & UA NOE */
+#define SC_VIDEO_ROUTING 0x09 /* IP Phone - NOT EXPECTED */
+#define SC_SUPER_MSG 0x0B
+#define SC_SEGMENT_MSG 0x0C
+#define SC_REMOTE_UA_ROUTING 0x0D /* IP Phone - NOT EXPECTED */
+#define SC_VERY_REMOTE_UA_ROUTING 0x0E /* IP Phone - NOT EXPECTED */
+#define SC_OSI_ROUTING 0x0F /* IP Phone - NOT EXPECTED */
+#define SC_ABC_A_ROUTING 0x11 /* IP Phone - NOT EXPECTED */
+#define SC_IBS_ROUTING 0x12 /* IP Phone - NOT EXPECTED */
+#define SC_IP_DEVICE_ROUTING 0x13
+#define SC_M_REFLEX_HUB_ROUTING 0x14 /* IP Phone - NOT EXPECTED */
+#if 0
+#define SC_NOE_CS_ROUTING 0x15 /* Decoded by packet-noe.c */
+#define SC_NOE_PS_ROUTING 0x16 /* Decoded by packet-noe.c */
+#endif
+#define SC_SUPER_MSG_2 0x17
+#define SC_DEBUG_IN_LINE 0x18
+#define SC_LED_COMMAND 0x21 /* IP Phone */
+#define SC_START_BUZZER 0x22 /* VTA */
+#define SC_STOP_BUZZER 0x23 /* VTA */
+#define SC_ENABLE_DTMF 0x24 /* Only IP NOE */
+#define SC_DISABLE_DTMF 0x25 /* Only IP NOE */
+#define SC_CLEAR_LCD_DISP 0x26 /* IP Phone */
+#define SC_LCD_LINE_1_CMD 0x27 /* IP Phone */
+#define SC_LCD_LINE_2_CMD 0x28 /* IP Phone */
+#define SC_MAIN_VOICE_MODE 0x29
+#define SC_VERSION_INQUIRY 0x2A
+#define SC_ARE_YOU_THERE 0x2B /* IP Phone & UA NOE */
+#define SC_SUBDEVICE_METASTATE 0x2C
+#define SC_VTA_STATUS_INQUIRY 0x2D /* IP Phone */
+#define SC_SUBDEVICE_STATE 0x2E
+#define SC_DWL_DTMF_CLCK_FORMAT 0x30 /* IP Phone */
+#define SC_SET_CLCK 0x31 /* IP Phone */
+#define SC_VOICE_CHANNEL 0x32 /* IP Phone & UA NOE */
+#define SC_EXTERNAL_RINGING 0x33
+#define SC_LCD_CURSOR 0x35 /* IP Phone */
+#define SC_DWL_SPECIAL_CHAR 0x36 /* IP Phone */
+#define SC_SET_CLCK_TIMER_POS 0x38 /* IP Phone */
+#define SC_SET_LCD_CONTRAST 0x39 /* IP Phone */
+#define SC_AUDIO_IDLE 0x3A
+#define SC_SET_SPEAKER_VOL 0x3B /* IP Phone */
+#define SC_BEEP 0x3C
+#define SC_SIDETONE 0x3D
+#define SC_RINGING_CADENCE 0x3E
+#define SC_MUTE 0x3F
+#define SC_FEEDBACK 0x40
+#define SC_KEY_RELEASE 0x41 /* IP Phone */
+#define SC_TRACE_ON 0x42 /* IP Phone - NOT EXPECTED */
+#define SC_TRACE_OFF 0x43 /* IP Phone - NOT EXPECTED */
+#define SC_READ_PERIPHERAL 0x44 /* IP Phone - NOT EXPECTED */
+#define SC_WRITE_PERIPHERAL 0x45 /* IP Phone - NOT EXPECTED */
+#define SC_ALL_ICONS_OFF 0x46 /* IP Phone */
+#define SC_ICON_CMD 0x47 /* IP Phone */
+#define SC_AMPLIFIED_HANDSET 0x48 /* IP Phone */
+#define SC_AUDIO_CONFIG 0x49
+#define SC_AUDIO_PADDED_PATH 0x4A /* IP Phone */
+#define SC_RELEASE_RADIO_LINK 0x4B /* IP Phone - NOT EXPECTED */
+#define SC_DECT_HANDOVER 0x4C /* IP Phone - NOT EXPECTED */
+#define SC_LOUDSPEAKER 0x4D
+#define SC_ANNOUNCE 0x4E
+#define SC_RING 0x4F
+#define SC_UA_DWL_PROTOCOL 0x50 /* Only UA NOE */
+
/* Terminal To System */
-#define CS_NOP_ACK 0x00
-#define CS_HANDSET_OFFHOOK 0x01 /* IP Phone */
-#define CS_HANDSET_ONHOOK 0x02 /* IP Phone */
-#define CS_DIGIT_DIALED 0x03 /* IP Phone */
-#define CS_SUBDEVICE_MSG 0x04
-#define CS_HE_ROUTING 0x05 /* IP Phone - NOT EXPECTED */
-#define CS_LOOPBACK_ON 0x06 /* IP Phone & UA NOE */
-#define CS_LOOPBACK_OFF 0x07 /* IP Phone & UA NOE */
-#define CS_VIDEO_ROUTING 0x09 /* IP Phone - NOT EXPECTED */
-#define CS_WARMSTART_ACK 0x0A /* IP Phone */
-#define CS_SUPER_MSG 0x0B /* IP Phone - NOT EXPECTED */
-#define CS_SEGMENT_MSG 0x0C
-#define CS_REMOTE_UA_ROUTING 0x0D /* IP Phone - NOT EXPECTED */
-#define CS_VERY_REMOTE_UA_R 0x0E /* IP Phone - NOT EXPECTED */
-#define CS_OSI_ROUTING 0x0F /* IP Phone - NOT EXPECTED */
-#define CS_ABC_A_ROUTING 0x11 /* IP Phone - NOT EXPECTED */
-#define CS_IBS_ROUTING 0x12 /* IP Phone - NOT EXPECTED */
-#define CS_IP_DEVICE_ROUTING 0x13
-/*#define CS_NOE_CS_ROUTING 0x15 // Decoded by packet-noe.c */
-/*#define CS_NOE_PS_ROUTING 0x16 // Decoded by packet-noe.c */
-#define CS_SUPER_MSG_2 0x17
-#define CS_DEBUG_IN_LINE 0x18
-#define CS_UNSOLICITED_MSG 0x9F
-#define CS_NON_DIGIT_KEY_PUSHED 0x20 /* IP Phone */
-#define CS_VERSION_RESPONSE 0x21
-#define CS_I_M_HERE 0x22
-#define CS_RSP_STATUS_INQUIRY 0x23 /* IP Phone */
-#define CS_SUBDEVICE_STATE 0x24
-#define CS_DIGIT_KEY_RELEASED 0x26 /* IP Phone */
-#define CS_TRACE_ON_ACK 0x27 /* IP Phone */
-#define CS_TRACE_OFF_ACK 0x28 /* IP Phone */
-#define CS_SPECIAL_KEY_STATUS 0x29 /* IP Phone */
-#define CS_KEY_RELEASED 0x2A /* IP Phone */
-#define CS_PERIPHERAL_CONTENT 0x2B /* IP Phone */
-#define CS_TM_KEY_PUSHED 0x2D /* IP Phone */
-#define CS_UA_DWL_PROTOCOL 0x50 /* Only UA NOE */
-
-
-static const value_string *opcodes_vals;
+#define CS_NOP_ACK 0x00
+#define CS_HANDSET_OFFHOOK 0x01 /* IP Phone */
+#define CS_HANDSET_ONHOOK 0x02 /* IP Phone */
+#define CS_DIGIT_DIALED 0x03 /* IP Phone */
+#define CS_SUBDEVICE_MSG 0x04
+#define CS_HE_ROUTING 0x05 /* IP Phone - NOT EXPECTED */
+#define CS_LOOPBACK_ON 0x06 /* IP Phone & UA NOE */
+#define CS_LOOPBACK_OFF 0x07 /* IP Phone & UA NOE */
+#define CS_VIDEO_ROUTING 0x09 /* IP Phone - NOT EXPECTED */
+#define CS_WARMSTART_ACK 0x0A /* IP Phone */
+#define CS_SUPER_MSG 0x0B /* IP Phone - NOT EXPECTED */
+#define CS_SEGMENT_MSG 0x0C
+#define CS_REMOTE_UA_ROUTING 0x0D /* IP Phone - NOT EXPECTED */
+#define CS_VERY_REMOTE_UA_R 0x0E /* IP Phone - NOT EXPECTED */
+#define CS_OSI_ROUTING 0x0F /* IP Phone - NOT EXPECTED */
+#define CS_ABC_A_ROUTING 0x11 /* IP Phone - NOT EXPECTED */
+#define CS_IBS_ROUTING 0x12 /* IP Phone - NOT EXPECTED */
+#define CS_IP_DEVICE_ROUTING 0x13
+#if 0
+#define CS_NOE_CS_ROUTING 0x15 /* Decoded by packet-noe.c */
+#define CS_NOE_PS_ROUTING 0x16 /* Decoded by packet-noe.c */
+#endif
+#define CS_SUPER_MSG_2 0x17
+#define CS_DEBUG_IN_LINE 0x18
+#define CS_UNSOLICITED_MSG 0x9F
+#define CS_NON_DIGIT_KEY_PUSHED 0x20 /* IP Phone */
+#define CS_VERSION_RESPONSE 0x21
+#define CS_I_M_HERE 0x22
+#define CS_RSP_STATUS_INQUIRY 0x23 /* IP Phone */
+#define CS_SUBDEVICE_STATE 0x24
+#define CS_DIGIT_KEY_RELEASED 0x26 /* IP Phone */
+#define CS_TRACE_ON_ACK 0x27 /* IP Phone */
+#define CS_TRACE_OFF_ACK 0x28 /* IP Phone */
+#define CS_SPECIAL_KEY_STATUS 0x29 /* IP Phone */
+#define CS_KEY_RELEASED 0x2A /* IP Phone */
+#define CS_PERIPHERAL_CONTENT 0x2B /* IP Phone */
+#define CS_TM_KEY_PUSHED 0x2D /* IP Phone */
+#define CS_UA_DWL_PROTOCOL 0x50 /* Only UA NOE */
/* System To Terminal Opcodes */
static const value_string opcodes_vals_sys[] =
{
- {NOP , "NOP"},
- {PRODUCTION_TEST , "Production Test"}, /* IP Phone */
- {SUBDEVICE_ESCAPE , "Subdevice Escape To Subdevice"}, /* IP Phone */
- {SOFT_RESET , "Software Reset"},
- {IP_PHONE_WARMSTART , "IP-Phone Warmstart"}, /* IP Phone */
- {HE_ROUTING , "HE Routing Code"}, /* IP Phone - NOT EXPECTED */
- {SUBDEVICE_RESET , "Subdevice Reset"},
- {LOOPBACK_ON , "Loopback On"},
- {LOOPBACK_OFF , "Loopback Off"},
- {VIDEO_ROUTING , "Video Routing Code"}, /* IP Phone - NOT EXPECTED */
- {SUPER_MSG , "Super Message"},
- {SEGMENT_MSG , "Segment Message"},
- {REMOTE_UA_ROUTING , "Remote UA Routing Code"}, /* IP Phone - NOT EXPECTED */
- {VERY_REMOTE_UA_ROUTING , "Very Remote UA Routing Code"}, /* IP Phone - NOT EXPECTED */
- {OSI_ROUTING , "OSI Routing Code"}, /* IP Phone - NOT EXPECTED */
- {ABC_A_ROUTING , "ABC-A Routing Code"}, /* IP Phone - NOT EXPECTED */
- {IBS_ROUTING , "IBS Routing Code"}, /* IP Phone - NOT EXPECTED */
- {IP_DEVICE_ROUTING , "IP Device Routing"},
- {M_REFLEX_HUB_ROUTING , "Mutli-Reflex Hub Routing Code"}, /* IP Phone - NOT EXPECTED */
- {SUPER_MSG_2 , "Super Message 2"},
- {DEBUG_IN_LINE , "Debug In Line"},
- {LED_COMMAND , "Led Command"}, /* IP Phone */
- {START_BUZZER , "Start Buzzer"}, /* VTA */
- {STOP_BUZZER , "Stop Buzzer"}, /* VTA */
- {ENABLE_DTMF , "Enable DTMF"},
- {DISABLE_DTMF , "Disable DTMF"},
- {CLEAR_LCD_DISP , "Clear LCD Display"}, /* IP Phone */
- {LCD_LINE_1_CMD , "LCD Line 1 Commands"}, /* IP Phone */
- {LCD_LINE_2_CMD , "LCD Line 2 Commands"}, /* IP Phone */
- {MAIN_VOICE_MODE , "Main Voice Mode"},
- {VERSION_INQUIRY , "Version Inquiry"},
- {ARE_YOU_THERE , "Are You There?"},
- {SUBDEVICE_METASTATE , "Subdevice Metastate"},
- {VTA_STATUS_INQUIRY , "VTA Status Inquiry"}, /* IP Phone */
- {SUBDEVICE_STATE , "Subdevice State?"},
- {DWL_DTMF_CLCK_FORMAT , "Download DTMF & Clock Format"}, /* IP Phone */
- {SET_CLCK , "Set Clock"}, /* IP Phone */
- {VOICE_CHANNEL , "Voice Channel"}, /* IP Phone & UA NOE */
- {EXTERNAL_RINGING , "External Ringing"},
- {LCD_CURSOR , "LCD Cursor"}, /* IP Phone */
- {DWL_SPECIAL_CHAR , "Download Special Character"}, /* IP Phone */
- {SET_CLCK_TIMER_POS , "Set Clock/Timer Position"}, /* IP Phone */
- {SET_LCD_CONTRAST , "Set LCD Contrast"}, /* IP Phone */
- {AUDIO_IDLE , "Audio Idle"},
- {SET_SPEAKER_VOL , "Set Speaker Volume"}, /* IP Phone */
- {BEEP , "Beep"},
- {SIDETONE , "Sidetone"},
- {RINGING_CADENCE , "Set Programmable Ringing Cadence"},
- {MUTE , "Mute"},
- {FEEDBACK , "Feedback"},
- {KEY_RELEASE , "Key Release"}, /* IP Phone */
- {TRACE_ON , "Trace On"}, /* IP Phone - NOT EXPECTED */
- {TRACE_OFF , "Trace Off"}, /* IP Phone - NOT EXPECTED */
- {READ_PERIPHERAL , "Read Peripheral"}, /* IP Phone - NOT EXPECTED */
- {WRITE_PERIPHERAL , "Write Peripheral"}, /* IP Phone - NOT EXPECTED */
- {ALL_ICONS_OFF , "All Icons Off"}, /* IP Phone */
- {ICON_CMD , "Icon Command"}, /* IP Phone */
- {AMPLIFIED_HANDSET , "Amplified Handset (Boost)"}, /* IP Phone */
- {AUDIO_CONFIG , "Audio Config"},
- {AUDIO_PADDED_PATH , "Audio Padded Path"}, /* IP Phone */
- {RELEASE_RADIO_LINK , "Release Radio Link"}, /* IP Phone - NOT EXPECTED */
- {DECT_HANDOVER , "DECT External Handover Routing Code"}, /* IP Phone - NOT EXPECTED */
- {LOUDSPEAKER , "Loudspeaker"},
- {ANNOUNCE , "Announce"},
- {RING , "Ring"},
- {UA_DWL_PROTOCOL , "UA Download Protocol"},
- {0, NULL}
+ {SC_NOP , "NOP"},
+ {SC_PRODUCTION_TEST , "Production Test"}, /* IP Phone */
+ {SC_SUBDEVICE_ESCAPE , "Subdevice Escape To Subdevice"}, /* IP Phone */
+ {SC_SOFT_RESET , "Software Reset"},
+ {SC_IP_PHONE_WARMSTART , "IP-Phone Warmstart"}, /* IP Phone */
+ {SC_HE_ROUTING , "HE Routing Code"}, /* IP Phone - NOT EXPECTED */
+ {SC_SUBDEVICE_RESET , "Subdevice Reset"},
+ {SC_LOOPBACK_ON , "Loopback On"},
+ {SC_LOOPBACK_OFF , "Loopback Off"},
+ {SC_VIDEO_ROUTING , "Video Routing Code"}, /* IP Phone - NOT EXPECTED */
+ {SC_SUPER_MSG , "Super Message"},
+ {SC_SEGMENT_MSG , "Segment Message"},
+ {SC_REMOTE_UA_ROUTING , "Remote UA Routing Code"}, /* IP Phone - NOT EXPECTED */
+ {SC_VERY_REMOTE_UA_ROUTING , "Very Remote UA Routing Code"}, /* IP Phone - NOT EXPECTED */
+ {SC_OSI_ROUTING , "OSI Routing Code"}, /* IP Phone - NOT EXPECTED */
+ {SC_ABC_A_ROUTING , "ABC-A Routing Code"}, /* IP Phone - NOT EXPECTED */
+ {SC_IBS_ROUTING , "IBS Routing Code"}, /* IP Phone - NOT EXPECTED */
+ {SC_IP_DEVICE_ROUTING , "IP Device Routing"},
+ {SC_M_REFLEX_HUB_ROUTING , "Mutli-Reflex Hub Routing Code"}, /* IP Phone - NOT EXPECTED */
+ {SC_SUPER_MSG_2 , "Super Message 2"},
+ {SC_DEBUG_IN_LINE , "Debug In Line"},
+ {SC_LED_COMMAND , "Led Command"}, /* IP Phone */
+ {SC_START_BUZZER , "Start Buzzer"}, /* VTA */
+ {SC_STOP_BUZZER , "Stop Buzzer"}, /* VTA */
+ {SC_ENABLE_DTMF , "Enable DTMF"},
+ {SC_DISABLE_DTMF , "Disable DTMF"},
+ {SC_CLEAR_LCD_DISP , "Clear LCD Display"}, /* IP Phone */
+ {SC_LCD_LINE_1_CMD , "LCD Line 1 Commands"}, /* IP Phone */
+ {SC_LCD_LINE_2_CMD , "LCD Line 2 Commands"}, /* IP Phone */
+ {SC_MAIN_VOICE_MODE , "Main Voice Mode"},
+ {SC_VERSION_INQUIRY , "Version Inquiry"},
+ {SC_ARE_YOU_THERE , "Are You There?"},
+ {SC_SUBDEVICE_METASTATE , "Subdevice Metastate"},
+ {SC_VTA_STATUS_INQUIRY , "VTA Status Inquiry"}, /* IP Phone */
+ {SC_SUBDEVICE_STATE , "Subdevice State?"},
+ {SC_DWL_DTMF_CLCK_FORMAT , "Download DTMF & Clock Format"}, /* IP Phone */
+ {SC_SET_CLCK , "Set Clock"}, /* IP Phone */
+ {SC_VOICE_CHANNEL , "Voice Channel"}, /* IP Phone & UA NOE */
+ {SC_EXTERNAL_RINGING , "External Ringing"},
+ {SC_LCD_CURSOR , "LCD Cursor"}, /* IP Phone */
+ {SC_DWL_SPECIAL_CHAR , "Download Special Character"}, /* IP Phone */
+ {SC_SET_CLCK_TIMER_POS , "Set Clock/Timer Position"}, /* IP Phone */
+ {SC_SET_LCD_CONTRAST , "Set LCD Contrast"}, /* IP Phone */
+ {SC_AUDIO_IDLE , "Audio Idle"},
+ {SC_SET_SPEAKER_VOL , "Set Speaker Volume"}, /* IP Phone */
+ {SC_BEEP , "Beep"},
+ {SC_SIDETONE , "Sidetone"},
+ {SC_RINGING_CADENCE , "Set Programmable Ringing Cadence"},
+ {SC_MUTE , "Mute"},
+ {SC_FEEDBACK , "Feedback"},
+ {SC_KEY_RELEASE , "Key Release"}, /* IP Phone */
+ {SC_TRACE_ON , "Trace On"}, /* IP Phone - NOT EXPECTED */
+ {SC_TRACE_OFF , "Trace Off"}, /* IP Phone - NOT EXPECTED */
+ {SC_READ_PERIPHERAL , "Read Peripheral"}, /* IP Phone - NOT EXPECTED */
+ {SC_WRITE_PERIPHERAL , "Write Peripheral"}, /* IP Phone - NOT EXPECTED */
+ {SC_ALL_ICONS_OFF , "All Icons Off"}, /* IP Phone */
+ {SC_ICON_CMD , "Icon Command"}, /* IP Phone */
+ {SC_AMPLIFIED_HANDSET , "Amplified Handset (Boost)"}, /* IP Phone */
+ {SC_AUDIO_CONFIG , "Audio Config"},
+ {SC_AUDIO_PADDED_PATH , "Audio Padded Path"}, /* IP Phone */
+ {SC_RELEASE_RADIO_LINK , "Release Radio Link"}, /* IP Phone - NOT EXPECTED */
+ {SC_DECT_HANDOVER , "DECT External Handover Routing Code"}, /* IP Phone - NOT EXPECTED */
+ {SC_LOUDSPEAKER , "Loudspeaker"},
+ {SC_ANNOUNCE , "Announce"},
+ {SC_RING , "Ring"},
+ {SC_UA_DWL_PROTOCOL , "UA Download Protocol"},
+ {0, NULL}
};
+static value_string_ext opcodes_vals_sys_ext = VALUE_STRING_EXT_INIT(opcodes_vals_sys);
/* Terminal To System Opcodes */
static const value_string opcodes_vals_term[] =
{
- {CS_NOP_ACK , "NOP Acknowledge"},
- {CS_HANDSET_OFFHOOK , "Handset Offhook"}, /* IP Phone */
- {CS_HANDSET_ONHOOK , "Hansdet Onhook"}, /* IP Phone */
- {CS_DIGIT_DIALED , "Digital Dialed"}, /* IP Phone */
- {CS_SUBDEVICE_MSG , "Subdevice Message"},
- {CS_HE_ROUTING , "HE Routing Response Code"}, /* IP Phone - NOT EXPECTED */
- {CS_LOOPBACK_ON , "Loopback On Acknowledge"}, /* Same as CS To Terminal */
- {CS_LOOPBACK_OFF , "Loopback Off Acknowledge"}, /* Same as CS To Terminal */
- {CS_VIDEO_ROUTING , "Video Routing Response Code"}, /* IP Phone - NOT EXPECTED */
- {CS_WARMSTART_ACK , "Warmstart Acknowledge"}, /* IP Phone */
- {CS_SUPER_MSG , "Super Message"}, /* IP Phone - NOT EXPECTED */
- {CS_SEGMENT_MSG , "Segment Message"}, /* Same as CS To Terminal */
- {CS_REMOTE_UA_ROUTING , "Remote UA Routing Response Code"}, /* IP Phone - NOT EXPECTED */
- {CS_VERY_REMOTE_UA_R , "Very Remote UA Routing Response Code"}, /* IP Phone - NOT EXPECTED */
- {CS_OSI_ROUTING , "OSI Response Code"}, /* IP Phone - NOT EXPECTED */
- {CS_ABC_A_ROUTING , "ABC-A Routing Response Code"}, /* IP Phone - NOT EXPECTED */
- {CS_IBS_ROUTING , "IBS Routing Response Code"}, /* IP Phone - NOT EXPECTED */
- {CS_IP_DEVICE_ROUTING , "IP Device Routing"},
- {CS_SUPER_MSG_2 , "Super Message 2"}, /* Same as CS To Terminal */
- {CS_DEBUG_IN_LINE , "Debug Message"},
- {CS_UNSOLICITED_MSG , "Unsolicited Message"},
- {CS_NON_DIGIT_KEY_PUSHED, "Non-Digit Key Pushed"}, /* IP Phone */
- {CS_VERSION_RESPONSE , "Version Information"},
- {CS_I_M_HERE , "I'm Here Response"},
- {CS_RSP_STATUS_INQUIRY , "Response To Status Inquiry"}, /* IP Phone */
- {CS_SUBDEVICE_STATE , "Subdevice State Response"},
- {CS_DIGIT_KEY_RELEASED , "Digit Key Released"}, /* IP Phone */
- {CS_TRACE_ON_ACK , "Trace On Acknowledge"}, /* IP Phone - NOT EXPECTED */
- {CS_TRACE_OFF_ACK , "Trace Off Acknowledge"}, /* IP Phone - NOT EXPECTED */
- {CS_SPECIAL_KEY_STATUS , "Special Key Status"}, /* IP Phone */
- {CS_KEY_RELEASED , "Key Released"}, /* IP Phone */
- {CS_PERIPHERAL_CONTENT , "Peripheral Content"}, /* IP Phone - NOT EXPECTED */
- {CS_TM_KEY_PUSHED , "TM Key Pushed"}, /* IP Phone - NOT EXPECTED */
- {CS_UA_DWL_PROTOCOL , "Download Protocol"},
- {0, NULL}
+ {CS_NOP_ACK , "NOP Acknowledge"},
+ {CS_HANDSET_OFFHOOK , "Handset Offhook"}, /* IP Phone */
+ {CS_HANDSET_ONHOOK , "Hansdet Onhook"}, /* IP Phone */
+ {CS_DIGIT_DIALED , "Digital Dialed"}, /* IP Phone */
+ {CS_SUBDEVICE_MSG , "Subdevice Message"},
+ {CS_HE_ROUTING , "HE Routing Response Code"}, /* IP Phone - NOT EXPECTED */
+ {CS_LOOPBACK_ON , "Loopback On Acknowledge"}, /* Same as CS To Terminal */
+ {CS_LOOPBACK_OFF , "Loopback Off Acknowledge"}, /* Same as CS To Terminal */
+ {CS_VIDEO_ROUTING , "Video Routing Response Code"}, /* IP Phone - NOT EXPECTED */
+ {CS_WARMSTART_ACK , "Warmstart Acknowledge"}, /* IP Phone */
+ {CS_SUPER_MSG , "Super Message"}, /* IP Phone - NOT EXPECTED */
+ {CS_SEGMENT_MSG , "Segment Message"}, /* Same as CS To Terminal */
+ {CS_REMOTE_UA_ROUTING , "Remote UA Routing Response Code"}, /* IP Phone - NOT EXPECTED */
+ {CS_VERY_REMOTE_UA_R , "Very Remote UA Routing Response Code"}, /* IP Phone - NOT EXPECTED */
+ {CS_OSI_ROUTING , "OSI Response Code"}, /* IP Phone - NOT EXPECTED */
+ {CS_ABC_A_ROUTING , "ABC-A Routing Response Code"}, /* IP Phone - NOT EXPECTED */
+ {CS_IBS_ROUTING , "IBS Routing Response Code"}, /* IP Phone - NOT EXPECTED */
+ {CS_IP_DEVICE_ROUTING , "IP Device Routing"},
+ {CS_SUPER_MSG_2 , "Super Message 2"}, /* Same as CS To Terminal */
+ {CS_DEBUG_IN_LINE , "Debug Message"},
+ {CS_UNSOLICITED_MSG , "Unsolicited Message"},
+ {CS_NON_DIGIT_KEY_PUSHED , "Non-Digit Key Pushed"}, /* IP Phone */
+ {CS_VERSION_RESPONSE , "Version Information"},
+ {CS_I_M_HERE , "I'm Here Response"},
+ {CS_RSP_STATUS_INQUIRY , "Response To Status Inquiry"}, /* IP Phone */
+ {CS_SUBDEVICE_STATE , "Subdevice State Response"},
+ {CS_DIGIT_KEY_RELEASED , "Digit Key Released"}, /* IP Phone */
+ {CS_TRACE_ON_ACK , "Trace On Acknowledge"}, /* IP Phone - NOT EXPECTED */
+ {CS_TRACE_OFF_ACK , "Trace Off Acknowledge"}, /* IP Phone - NOT EXPECTED */
+ {CS_SPECIAL_KEY_STATUS , "Special Key Status"}, /* IP Phone */
+ {CS_KEY_RELEASED , "Key Released"}, /* IP Phone */
+ {CS_PERIPHERAL_CONTENT , "Peripheral Content"}, /* IP Phone - NOT EXPECTED */
+ {CS_TM_KEY_PUSHED , "TM Key Pushed"}, /* IP Phone - NOT EXPECTED */
+ {CS_UA_DWL_PROTOCOL , "Download Protocol"},
+ {0, NULL}
};
-
-static const value_string str_on_off[] = {
- {0x00, "Off"},
- {0x01, "On"},
- {0, NULL}
-};
-static const value_string str_yes_no[] = {
- {0x00, "No"},
- {0x01, "Yes"},
- {0, NULL}
+static value_string_ext opcodes_vals_term_ext = VALUE_STRING_EXT_INIT(opcodes_vals_term);
+
+static const value_string str_digit[] = {
+ { 0, "0"},
+ { 1, "1"},
+ { 2, "2"},
+ { 3, "3"},
+ { 4, "4"},
+ { 5, "5"},
+ { 6, "6"},
+ { 7, "7"},
+ { 8, "8"},
+ { 9, "9"},
+ {10, "*"},
+ {11, "#"},
+ {12, "A"},
+ {13, "B"},
+ {14, "C"},
+ {15, "D"},
+ {16, "Flash"},
+ {0, NULL}
};
+static value_string_ext str_digit_ext = VALUE_STRING_EXT_INIT(str_digit);
+
+#define STR_ON_OFF(arg) ((arg) ? "On" : "Off")
+#define STR_YES_NO(arg) ((arg) ? "Yes" : "No")
+
+
static const value_string str_device_type[] = {
- {0x00, "Voice Terminal Adaptor"},
- {0, NULL}
+ {0x00, "Voice Terminal Adaptor"},
+ {0, NULL}
};
/*-----------------------------------------------------------------------------
- VERSION NUMBER COMPUTER - This function computes a version number (S.SZ.AB) from a 16 bits number
- ---------------------------------------------------------------------------*/
-static char *version_number_computer(int hexa_version)
+ VERSION NUMBER COMPUTER - This function computes a version number (S.SZ.AB) from a 16 bits number
+ ---------------------------------------------------------------------------*/
+static char *
+version_number_computer(int hexa_version)
{
- static char version[10];
- int release, vers, fix;
-
- release = (int)(hexa_version / 10000);
- vers = (int)((hexa_version % 10000) / 100);
- fix = (hexa_version % 10000) % 100;
- g_snprintf(version, 10, "%d.%02d.%02d", release, vers, fix);
- return version;
+ int release, vers, fix;
+
+ release = (int)(hexa_version / 10000);
+ vers = (int)((hexa_version % 10000) / 100);
+ fix = (hexa_version % 10000) % 100;
+ return ep_strdup_printf("%d.%02d.%02d", release, vers, fix);
}
/*-----------------------------------------------------------------------------
- Function for UA3G message with opcode and one parameter
-
- PRODUCTION TEST - 01h (MESSAGE FROM THE SYSTEM)
- SUBDEVICE RESET - 06h (MESSAGE FROM THE SYSTEM)
- ARE YOU THERE - 2Bh - IPhone & UA NOE (MESSAGE FROM THE SYSTEM)
- SET SPEAKER VOLUME - 3Bh (MESSAGE FROM THE SYSTEM)
- TRACE ON - 42h (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ Function for UA3G message with opcode and one parameter
+
+ PRODUCTION TEST - 01h (MESSAGE FROM THE SYSTEM)
+ SUBDEVICE RESET - 06h (MESSAGE FROM THE SYSTEM)
+ ARE YOU THERE - 2Bh - IPhone & UA NOE (MESSAGE FROM THE SYSTEM)
+ SET SPEAKER VOLUME - 3Bh (MESSAGE FROM THE SYSTEM)
+ TRACE ON - 42h (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_with_one_parameter(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo _U_,
- guint offset,
- guint length,
- guint8 opcode,
- proto_item *ua3g_body_item)
+decode_with_one_parameter(proto_tree *tree _U_, tvbuff_t *tvb,
+ packet_info *pinfo _U_, guint offset, guint length,
+ guint8 opcode, proto_item *ua3g_body_item)
{
- proto_tree *ua3g_body_tree;
- static const value_string str_first_parameter[] = {
- {0x01, "Production Test Command"},
- {0x06, "Reserved For Compatibility"},
- {0x2B, "Temporization"},
- {0x3B, "Volmue"},
- {0x42, "Subdevice Address"},
- {0, NULL}
- };
-
- if(length > 0)
- {
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- length,
- "%s: %d",
- val_to_str(opcode, str_first_parameter, "Unknown"), tvb_get_guint8(tvb, offset));
- length--;
- }
+ proto_tree *ua3g_body_tree;
+ static const value_string str_first_parameter[] = {
+ {0x01, "Production Test Command"},
+ {0x06, "Reserved For Compatibility"},
+ {0x2B, "Temporization"},
+ {0x3B, "Volume"},
+ {0x42, "Subdevice Address"},
+ {0, NULL}
+ };
+
+ if (!ua3g_body_item || (length == 0))
+ return;
+
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, length, "%s: %d",
+ val_to_str_const(opcode, str_first_parameter, "Unknown"), tvb_get_guint8(tvb, offset));
}
/*-----------------------------------------------------------------------------
- SUBDEVICE ESCAPE TO SUBDEVICE - 02h (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ SUBDEVICE ESCAPE TO SUBDEVICE - 02h (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_subdevice_escape(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo _U_,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_body_item)
+decode_subdevice_escape(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo _U_,
+ guint offset, guint length, guint8 opcode _U_,
+ proto_item *ua3g_body_item)
{
- proto_tree *ua3g_body_tree;
- int j = 0;
-
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Subdevice Address: %d",
- (tvb_get_guint8(tvb, offset) & 0x0F));
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Subdevice Opcode: 0x%02x",
- (tvb_get_guint8(tvb, offset) & 0x7F));
- offset++;
- length--;
-
- while(length > 0)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Parameter Byte %2d: %d",
- j++, tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- }
+ proto_tree *ua3g_body_tree;
+ int j;
+
+ if (!ua3g_body_item)
+ return;
+
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Subdevice Address: %d", (tvb_get_guint8(tvb, offset) & 0x0F));
+ offset++;
+ length--;
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Subdevice Opcode: 0x%02x", (tvb_get_guint8(tvb, offset) & 0x7F));
+ offset++;
+ length--;
+
+ j = 0;
+ while (length > 0) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Parameter Byte %2d: %d", j++,
+ tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ }
}
/*-----------------------------------------------------------------------------
- SOFTWARE RESET - 03h (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ SOFTWARE RESET - 03h (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_software_reset(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo _U_,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_body_item)
+decode_software_reset(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo _U_,
+ guint offset, guint length, guint8 opcode _U_,
+ proto_item *ua3g_body_item)
{
- proto_tree *ua3g_body_tree;
- static const value_string str_verswitch[] = {
- {0x00, "Reset Without Version Switch"},
- {0x01, "Reset With Version Switch"},
- {0, NULL}
- };
-
- if(length > 0)
- {
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "%s",
- val_to_str(tvb_get_guint8(tvb, offset), str_verswitch, "Unknown"));
- offset++;
- length--;
- }
+ proto_tree *ua3g_body_tree;
+ static const value_string str_verswitch[] = {
+ {0x00, "Reset Without Version Switch"},
+ {0x01, "Reset With Version Switch"},
+ {0, NULL}
+ };
+
+ if (!ua3g_body_item || (length == 0))
+ return;
+
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "%s",
+ val_to_str_const(tvb_get_guint8(tvb, offset), str_verswitch, "Unknown"));
+ /* offset++; */
+ /* length--; */
}
/*-----------------------------------------------------------------------------
- IP-PHONE WARMSTART - 04h (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ IP-PHONE WARMSTART - 04h (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_ip_phone_warmstart(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo _U_,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_body_item)
+decode_ip_phone_warmstart(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo _U_,
+ guint offset, guint length, guint8 opcode _U_,
+ proto_item *ua3g_body_item)
{
- proto_tree *ua3g_body_tree;
- static const value_string str_command[] = {
- {0x00, "Run In UA2G Emulation Mode"},
- {0x01, "Run In Full UA3G Mode"},
- {0, NULL}
- };
-
- if(length > 0)
- {
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Command: %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_command, "Unknown"));
- offset++;
- length--;
- }
+ proto_tree *ua3g_body_tree;
+ static const value_string str_command[] = {
+ {0x00, "Run In UA2G Emulation Mode"},
+ {0x01, "Run In Full UA3G Mode"},
+ {0, NULL}
+ };
+
+ if (!ua3g_body_item || (length == 0))
+ return;
+
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+ proto_tree_add_text(ua3g_body_tree,
+ tvb,
+ offset,
+ 1,
+ "Command: %s",
+ val_to_str_const(tvb_get_guint8(tvb, offset), str_command, "Unknown"));
+ /* offset++; */
+ /* length--; */
}
/*-----------------------------------------------------------------------------
- SUPER MESSAGE - 0Bh (MESSAGE FROM THE SYSTEM)
- SUPER MESSAGE 2 - 17h (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ SUPER MESSAGE - 0Bh (MESSAGE FROM THE SYSTEM)
+ SUPER MESSAGE 2 - 17h (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_super_msg(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo _U_,
- guint offset,
- guint length,
- guint8 opcode,
- proto_item *ua3g_body_item)
+decode_super_msg(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo _U_,
+ guint offset, guint length, guint8 opcode,
+ proto_item *ua3g_body_item)
{
- proto_tree *ua3g_body_tree;
- int i, parameter_length;
- int j = 0;
-
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
-
- while(length > 0)
- {
- if(opcode == 0x17)
- {
- parameter_length = tvb_get_ntohs(tvb, offset);
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 2,
- "Length %d: %d",
- j++, parameter_length);
- offset += 2;
- length -= 2;
- }
- else
- {
- parameter_length = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Length %d: %d",
- j++, parameter_length);
- offset++;
- length--;
- }
-
- for(i = 1; i <= parameter_length; i++)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "L%d Byte %2d: %d",
- j, i, tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- }
- }
+ proto_tree *ua3g_body_tree;
+ int i, parameter_length;
+ int j;
+
+ if (!ua3g_body_item || (length == 0))
+ return;
+
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+
+ j = 0;
+ while (length > 0) {
+ if (opcode == 0x17) {
+ parameter_length = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 2,
+ "Length %d: %d", j++, parameter_length);
+ offset += 2;
+ length -= 2;
+ } else {
+ parameter_length = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Length %d: %d", j++, parameter_length);
+ offset++;
+ length--;
+ }
+
+ for (i = 1; i <= parameter_length; i++) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "L%d Byte %2d: %d",
+ j, i, tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ }
+ }
}
/*-----------------------------------------------------------------------------
- SEGMENT MESSAGE - 0Ch (MESSAGE FROM THE TERMINAL AND FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ SEGMENT MESSAGE - 0Ch (MESSAGE FROM THE TERMINAL AND FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_segment_msg(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo _U_,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_body_item)
+decode_segment_msg(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo _U_,
+ guint offset, guint length, guint8 opcode _U_,
+ proto_item *ua3g_body_item)
{
- proto_tree *ua3g_body_tree;
- int first_sub_segment;
- int j = 0;
- static const value_string str_first_sub_segment[] = {
- {0x00, "Subsequent Segment"},
- {0x80, "Fisrt Segment"},
- {0, NULL}
- };
-
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
- first_sub_segment = (tvb_get_guint8(tvb, offset) & 0x80);
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "F/S: %s (%d)",
- val_to_str(first_sub_segment, str_first_sub_segment, "Unknown"),
- first_sub_segment);
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Number Of Remaining Segments: %d",
- (tvb_get_guint8(tvb, offset) & 0x7F));
- offset++;
- length--;
-
- if(first_sub_segment == 0x80)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 2,
- "Length: %d",
- tvb_get_ntohs(tvb, offset));
- offset += 2;
- length -= 2;
- }
-
- while(length > 0)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Segment Message byte %d: %d",
- j++, tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- }
+ proto_tree *ua3g_body_tree;
+ guint8 val;
+ int j;
+
+ if (!ua3g_body_item)
+ return;
+
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+
+ val = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "F/S: %s (%d)",
+ (val & 0x80) ? "First Segment" : "Subsequent Segment",
+ val & 0x80);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Number Of Remaining Segments: %d",
+ (val & 0x7F));
+ offset++;
+ length--;
+
+ if (val & 0x80) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 2, "Length: %d",
+ tvb_get_ntohs(tvb, offset));
+ offset += 2;
+ length -= 2;
+ }
+
+ j = 0;
+ while (length > 0) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Segment Message byte %d: %d",
+ j++, tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ }
}
/*-----------------------------------------------------------------------------
- IP DEVICE ROUTING - 13h (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ IP DEVICE ROUTING - 13h (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_ip_device_routing(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_item,
- proto_item *ua3g_body_item)
+decode_ip_device_routing(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo,
+ guint offset, guint length, guint8 opcode _U_,
+ proto_item *ua3g_item, proto_item *ua3g_body_item)
{
- guint8 command = tvb_get_guint8(tvb, offset);
- gint *lengthp = 0;
- proto_tree *ua3g_body_tree;
- proto_item *ua3g_param_item;
- proto_tree *ua3g_param_tree;
- static const value_string str_command[] = {
- {0x00, "Reset"},
- {0x01, "Start RTP"},
- {0x02, "Stop RTP"},
- {0x03, "Redirect"},
- {0x04, "Tone Definition"},
- {0x05, "Start Tone"},
- {0x06, "Stop Tone"},
- {0x07, "Start Listen RTP"},
- {0x08, "Stop Listen RTP"},
- {0x09, "Get Parameters Value"},
- {0x0A, "Set Parameters Value"},
- {0x0B, "Send Digit"},
- {0x0C, "Pause RTP"},
- {0x0D, "Restart RTP"},
- {0x0E, "Start Record RTP"},
- {0x0F, "Stop Record RTP"},
- {0, NULL}
- };
-
- emem_strbuf_t *strbuf = ep_strbuf_new_label("");
-
- /* add text to the frame tree */
- proto_item_append_text(ua3g_item,
- ", %s",
- val_to_str(command, str_command, "Unknown"));
- proto_item_append_text(ua3g_body_item,
- " - %s",
- val_to_str(command, str_command, "Unknown"));
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
-
- /* add text to the frame "INFO" column */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
- val_to_str(command, str_command, "Unknown"));
-
- proto_tree_add_uint_format(ua3g_body_tree,
- hf_ua3g_ip,
- tvb,
- offset,
- 1,
- command,
- "Command: %s",
- val_to_str(command, str_command, "Unknown"));
- offset++;
- length--;
-
- switch(command)
- {
- case 0x00: /* RESET */
- {
- int i, parameter_id, parameter_length;
- static const value_string str_parameter_id[] = {
- {0x00, "Update Mode"},
- {0x01, "Bad Sec Mode"},
- {0x02, "Customization Name"},
- {0x03, "Localization Name"},
- {0, NULL}
- };
-
- if(length > 0)
- {
- parameter_id = tvb_get_guint8(tvb, offset);
- parameter_length = tvb_get_guint8(tvb, offset + 1);
-
- if(parameter_length > 0)
- {
- switch(parameter_id)
- {
- case 0x00: /* Update Mode */
- {
- int i;
- static const value_string str_update_mode[] = {
- {0x00, "NOE Update Mode"},
- {0x01, "Bootloader"},
- {0x02, "Data"},
- {0x04, "Customization"},
- {0x08, "Localization"},
- {0x10, "Code"},
- {0x20, "SIP"},
- {0, NULL}
- };
- static const value_string str_disable_enable[] = {
- {0, "Disable"},
- {1, "Enable"},
- {0, NULL}
- };
-
- if((tvb_get_guint8(tvb, offset + 2) & 0x80) == 0x00)
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf,
- "%s: ",
- val_to_str(tvb_get_guint8(tvb, offset + 2) & 0x80, str_update_mode, "Unknown"));
-
- for(i = 0; i < 6; i++)
- {
- ep_strbuf_append_printf(strbuf,
- "%s: %s, ",
- val_to_str(0x01 << i, str_update_mode, "Unknown"),
- val_to_str((tvb_get_guint8(tvb, offset + 2) >> i) & 0x01, str_disable_enable, ""));
- }
- }
-
- else
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf,
- "%s",
- val_to_str(tvb_get_guint8(tvb, offset + 2) & 0x80, str_update_mode, "Unknown"));
- }
-
- break;
- }
- case 0x01: /* Bad_Sec_Mode */
- {
- static const value_string str_bad_sec_mode[] = {
- {0x01, "Binary is full, CS is secured, but terminal running in clear mode"},
- {0, NULL}
- };
-
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append(strbuf,
- val_to_str(tvb_get_guint8(tvb, offset + 2), str_bad_sec_mode, "Unknown"));
- break;
- }
- case 0x02: /* Cust_Name */
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append(strbuf, "\"");
- for(i = 1; i <= parameter_length; i++)
- {
- if(isprint(tvb_get_guint8(tvb, offset + 1 + i)))
- ep_strbuf_append(strbuf, tvb_get_const_stringz(tvb, offset+1+i, lengthp));
- else
- ep_strbuf_append(strbuf, tvb_get_const_stringz(tvb, offset+1+i, lengthp));
- }
-
- ep_strbuf_append(strbuf, "\"");
- break;
- }
- case 0x03: /* L10N_Name */
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append(strbuf, "\"");
- for(i = 1; i <= parameter_length; i++)
- {
- if(isprint(tvb_get_guint8(tvb, offset + 1 + i)))
- ep_strbuf_append(strbuf, tvb_get_const_stringz(tvb, offset+1+i, lengthp));
- else
- ep_strbuf_append(strbuf, tvb_get_const_stringz(tvb, offset+1+i, lengthp));
- }
-
- ep_strbuf_append(strbuf, "\"");
- break;
- }
- }
-
- ua3g_param_item = proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- parameter_length + 2,
- "%s: %s",
- val_to_str(parameter_id, str_parameter_id, "Unknown"), strbuf->str);
- }
- else
- ua3g_param_item = proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- parameter_length + 2,
- "%s",
- val_to_str(parameter_id, str_parameter_id, "Unknown"));
-
- ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Parameter: %s",
- val_to_str(parameter_id, str_parameter_id, "Unknown"));
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Length: %d",
- parameter_length);
- offset++;
- length--;
-
- if(parameter_length > 0)
- {
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- parameter_length,
- "Value: %s",
- strbuf->str);
- /*Fix Clang Warning*/
- /*offset += parameter_length;*/
- /*length -= parameter_length;*/
- }
- }
- break;
- }
- case 0x01: /* START RTP */
- {
- int i, parameter_length, parameter_id;
- static const value_string str_direction[] = {
- {0x00, "Terminal Input"},
- {0x01, "Terminal Output"},
- {0x02, "Terminal Input/Output (Both Directions)"},
- {0, NULL}
- };
- static const value_string str_parameter_id[] = {
- {0x00, "Local UDP Port"},
- {0x01, "Remote IP Address"},
- {0x02, "Remote UDP Port"},
- {0x03, "Type Of Service"},
- {0x04, "Compressor"},
- {0x05, "Payload Concatenation (ms)"},
- {0x06, "Echo Cancelation Enabler"},
- {0x07, "Silence Suppression Enabler"},
- {0x08, "802.1 Q User Priority"},
- {0x09, "Reserved"},
- {0x0a, "Post Filtering Enabler"},
- {0x0b, "High Pass Filtering Enabler"},
- {0x0c, "Remote SSRC"},
- {0x0d, "Must Send QOS Tickets"},
- {0x0e, "Local Identifier"},
- {0x0f, "Distant Identifier"},
- {0x10, "Destination For RTCP Sender Reports - Port Number"},
- {0x11, "Destination For RTCP Sender Reports - IP Address"},
- {0x12, "Destination For RTCP Receiver Reports - Port Number"},
- {0x13, "Destination For RTCP Receiver Reports - IP Address"},
- {0x14, "Channel Number"},
- {0x15, "DTMF Sending"},
- {0x16, "Payload Type Of Redundancy"},
- {0x17, "Payload Type Of DTMF Events"},
- {0x18, "Enable / Disable RFC 2198"},
- {0x31, "SRTP Encryption Enable For This Communication"},
- {0x32, "Master Key For SRTP Session"},
- {0x33, "Master Salt Key For SRTP Session"},
- {0x34, "Master key for output stream of SRTP session"},
- {0x35, "Master salt key for output stream of SRTP session"},
- {0x36, "Integrity checking enabled for this communication"},
- {0x37, "MKI value for SRTP packets in input stream"},
- {0x38, "MKI value for SRTP packets in output stream"},
- {0x50, "MD5 Authentication"},
- {0, NULL}
- };
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Direction: %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_direction, "Unknown"));
- offset++;
- length--;
-
- while(length > 0)
- {
- parameter_id = tvb_get_guint8(tvb, offset);
- parameter_length = tvb_get_guint8(tvb, offset + 1);
-
- if(parameter_length > 0)
- {
- switch(parameter_id)
- {
- case 0x01: /* Remote IP Address */
- case 0x11: /* Destination For RTCP Sender Reports - IP Address */
- case 0x13: /* Destination For RTCP Receiver Reports - IP Address */
- {
- if(parameter_length > 0) {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf, "%d", tvb_get_guint8(tvb, offset + 2));
- }
-
- for(i = 2; i <= parameter_length; i++)
- {
- ep_strbuf_append(strbuf, ".");
- ep_strbuf_append_printf(strbuf, "%u", tvb_get_guint8(tvb, offset+1+i));
- }
- break;
- }
- case 0x04: /* Compressor */
- {
- static const value_string str_compressor[] = {
- {0x00, "G.711 A-law"},
- {0x01, "G.711 mu-law"},
- {0x0F, "G.723.1 5.3kbps"},
- {0x10, "G.723.1 6.3kbps"},
- {0x11, "G.729A 8 kbps"},
- {0, NULL}
- };
-
- if((parameter_length > 0) && (parameter_length <= 8))
- {
- guint64 param_value = 0;
- for(i = parameter_length; i > 0; i--)
- {
- param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
- }
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append(strbuf, val_to_str((guint8)(param_value), str_compressor, "Default Codec"));
- }
- else
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf,
- "0x%02x 0x%02x ... 0x%02x 0x%02x",
- tvb_get_guint8(tvb, offset + 2),
- tvb_get_guint8(tvb, offset + 3),
- tvb_get_guint8(tvb, offset + parameter_length),
- tvb_get_guint8(tvb, offset + 1 + parameter_length));
- }
- break;
- }
- case 0x06: /* Echo Cancelation Enabler */
- case 0x07: /* Silence Suppression Enabler */
- case 0x0A: /* Post Filtering Enabler */
- case 0x0B: /* High Pass Filtering Enabler */
- {
- if((parameter_length > 0) && (parameter_length <= 8))
- {
- guint64 param_value = 0;
- for(i = parameter_length; i > 0; i--)
- {
- param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
- }
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append(strbuf, val_to_str((guint8)(param_value), str_on_off, "On"));
- }
- else
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf,
- "0x%02x 0x%02x ... 0x%02x 0x%02x",
- tvb_get_guint8(tvb, offset + 2),
- tvb_get_guint8(tvb, offset + 3),
- tvb_get_guint8(tvb, offset + parameter_length),
- tvb_get_guint8(tvb, offset + 1 + parameter_length));
- }
- break;
- }
- case 0x0D: /* Must Send QOS Tickets */
- {
- if((parameter_length > 0) && (parameter_length <= 8))
- {
- guint64 param_value = 0;
- for(i = parameter_length; i > 0; i--)
- {
- param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
- }
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append(strbuf, val_to_str((guint8)(param_value), str_yes_no, "No"));
- }
- else
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf,
- "0x%02x 0x%02x ... 0x%02x 0x%02x",
- tvb_get_guint8(tvb, offset + 2),
- tvb_get_guint8(tvb, offset + 3),
- tvb_get_guint8(tvb, offset + parameter_length),
- tvb_get_guint8(tvb, offset + 1 + parameter_length));
- }
- break;
- }
- case 0x0E: /* Local Identifier */
- case 0x0F: /* Distant Identifier */
- {
- break;
- }
- case 0x15: /* DTMF Sending */
- {
- static const value_string str_dtmf_sending[] = {
- {0x00, "Don't Send DTMF"},
- {0, NULL}
- };
- if((parameter_length > 0) && (parameter_length <= 8))
- {
- guint64 param_value = 0;
- for(i = parameter_length; i > 0; i--)
- {
- param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
- }
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append(strbuf, val_to_str((guint8)(param_value), str_dtmf_sending, "Send DTMF"));
- }
- else
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf,
- "0x%02x 0x%02x ... 0x%02x 0x%02x",
- tvb_get_guint8(tvb, offset + 2),
- tvb_get_guint8(tvb, offset + 3),
- tvb_get_guint8(tvb, offset + parameter_length),
- tvb_get_guint8(tvb, offset + 1 + parameter_length));
- }
- break;
- }
- case 0x18: /* Enable / Disable RFC 2198 */
- {
- static const value_string str_enable_00[] = {
- {0x00, "Enable"},
- {0, NULL}
- };
-
- if((parameter_length > 0) && (parameter_length <= 8))
- {
- guint64 param_value = 0;
- for(i = parameter_length; i > 0; i--)
- {
- param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
- }
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append(strbuf, val_to_str((guint8)(param_value), str_enable_00, "Disable"));
- }
- else
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf,
- "0x%02x 0x%02x ... 0x%02x 0x%02x",
- tvb_get_guint8(tvb, offset + 2),
- tvb_get_guint8(tvb, offset + 3),
- tvb_get_guint8(tvb, offset + parameter_length),
- tvb_get_guint8(tvb, offset + 1 + parameter_length));
- }
- break;
- }
- case 0x31: /* SRTP Encryption Enable For This Communication */
- {
- static const value_string str_enable_10[] = {
- {0x10, "Enable"},
- {0, NULL}
- };
-
- if((parameter_length > 0) && (parameter_length <= 8))
- {
- guint64 param_value = 0;
- for(i = parameter_length; i > 0; i--)
- {
- param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
- }
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append(strbuf, val_to_str((guint8)(param_value), str_enable_10, "Disable"));
- }
- else
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf,
- "0x%02x 0x%02x ... 0x%02x 0x%02x",
- tvb_get_guint8(tvb, offset + 2),
- tvb_get_guint8(tvb, offset + 3),
- tvb_get_guint8(tvb, offset + parameter_length),
- tvb_get_guint8(tvb, offset + 1 + parameter_length));
- }
- break;
- }
- case 0x00: /* Local UDP Port */
- case 0x02: /* Remote UDP Port */
- case 0x03: /* Type Of Service */
- case 0x05: /* Payload Concatenation */
- case 0x08: /* 802.1 Q User Priority */
- case 0x09: /* Reserved */
- case 0x0C: /* Remote SSRC */
- case 0x10: /* Destination For RTCP Sender Reports - Port Number */
- case 0x12: /* Destination For RTCP Receiver Reports - Port Number */
- case 0x14: /* Channel Number */
- case 0x16: /* Payload Type For Redundancy */
- case 0x17: /* Payload Type For DTMF Events */
- case 0x32: /* Master Key For SRTP Session */
- case 0x33: /* Master Salt Key For SRTP Session */
- case 0x34: /* Master key for output stream of SRTP session */
- case 0x35: /* Master salt key for output stream of SRTP session */
- case 0x36: /* Integrity checking enabled for this communication */
- case 0x37: /* MKI value for SRTP packets in input stream */
- case 0x38: /* MKI value for SRTP packets in output stream */
- case 0x50: /* MD5 Authentication */
- default:
- {
- if((parameter_length > 0) && (parameter_length <= 8))
- {
- guint64 param_value = 0;
- for(i = parameter_length; i > 0; i--)
- {
- param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
- }
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf, "%" G_GINT64_MODIFIER "u", param_value);
- }
- else
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf,
- "0x%02x 0x%02x ... 0x%02x 0x%02x",
- tvb_get_guint8(tvb, offset + 2),
- tvb_get_guint8(tvb, offset + 3),
- tvb_get_guint8(tvb, offset + parameter_length),
- tvb_get_guint8(tvb, offset + 1 + parameter_length));
- }
- break;
- }
- }
-
- ua3g_param_item = proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- parameter_length + 2,
- "%s: %s",
- val_to_str(parameter_id, str_parameter_id, "Unknown"), strbuf->str);
- }
- else
- ua3g_param_item = proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- parameter_length + 2,
- "%s",
- val_to_str(parameter_id, str_parameter_id, "Unknown"));
-
- ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Parameter: %s (0x%02x)",
- val_to_str(parameter_id, str_parameter_id, "Unknown"), parameter_id);
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Length: %d",
- parameter_length);
- offset++;
- length--;
-
- if(parameter_length > 0)
- {
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- parameter_length,
- "Value: %s",
- strbuf->str);
- offset += parameter_length;
- length -= parameter_length;
- }
- }
- break;
- }
- case 0x02: /* STOP_RTP */
- {
- int i, parameter_id, parameter_length;
- static const value_string str_parameter_id[] = {
- {0x0E, "Local Identifier"},
- {0x0F, "Distant Identifier"},
- {0x14, "Canal Identifier"},
- {0, NULL}
- };
-
- while(length > 0)
- {
- parameter_id = tvb_get_guint8(tvb, offset);
- parameter_length = tvb_get_guint8(tvb, offset + 1);
-
- if(parameter_length > 0)
- {
- switch(parameter_id)
- {
- case 0x0E: /* Local Identifier */
- case 0x0F: /* Distant Identifier */
- {
- break;
- }
- case 0x14: /* Canal Identifier */
- default:
- {
- if((parameter_length > 0) && (parameter_length <= 8))
- {
- guint64 param_value = 0;
- for(i = parameter_length; i > 0; i--)
- {
- param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
- }
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf, "%" G_GINT64_MODIFIER "u", param_value);
- }
- else
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf,
- "0x%02x 0x%02x ... 0x%02x 0x%02x",
- tvb_get_guint8(tvb, offset + 2),
- tvb_get_guint8(tvb, offset + 3),
- tvb_get_guint8(tvb, offset + parameter_length),
- tvb_get_guint8(tvb, offset + 1 + parameter_length));
- }
- break;
- }
- }
-
- ua3g_param_item = proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- parameter_length + 2,
- "%s: %s",
- val_to_str(parameter_id, str_parameter_id, "Unknown"), strbuf->str);
- }
- else
- ua3g_param_item = proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- parameter_length + 2,
- "%s",
- val_to_str(parameter_id, str_parameter_id, "Unknown"));
-
- ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Parameter: %s (0x%02x)",
- val_to_str(parameter_id, str_parameter_id, "Unknown"), parameter_id);
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Length: %d",
- parameter_length);
- offset++;
- length--;
-
- if(parameter_length > 0)
- {
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- parameter_length,
- "Value: %s",
- strbuf->str);
- offset += parameter_length;
- length -= parameter_length;
- }
- }
- break;
- }
- case 0x03: /* REDIRECT */
- {
- int i, parameter_length, parameter_id;
- static const value_string str_parameter_id[] = {
- {0x00, "Remote MainCPU Server IP Adress"},
- {0x01, "Remote MainCPU Server Port"},
- {0, NULL}
- };
-
- while(length > 0)
- {
- parameter_id = tvb_get_guint8(tvb, offset);
- parameter_length = tvb_get_guint8(tvb, offset + 1);
-
- if(parameter_length > 0)
- {
- switch(parameter_id)
- {
- case 0x00: /* Remote MainCPU Server IP Adress */
- {
- if(parameter_length > 0) {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf, "%d", tvb_get_guint8(tvb, offset + 2));
- }
-
- for(i = 2; i <= parameter_length; i++)
- {
- ep_strbuf_append(strbuf, ".");
- ep_strbuf_append_printf(strbuf, "%u", tvb_get_guint8(tvb, offset+1+i));
- }
- break;
- }
- case 0x01: /* Remote MainCPU Server Port */
- default:
- {
- if((parameter_length > 0) && (parameter_length <= 8))
- {
- guint64 param_value = 0;
-
- for(i = parameter_length; i > 0; i--)
- {
- param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
- }
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf, "%" G_GINT64_MODIFIER "u", param_value);
- }
- else
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf,
- "0x%02x 0x%02x ... 0x%02x 0x%02x",
- tvb_get_guint8(tvb, offset + 2),
- tvb_get_guint8(tvb, offset + 3),
- tvb_get_guint8(tvb, offset + parameter_length),
- tvb_get_guint8(tvb, offset + 1 + parameter_length));
- }
- }
- break;
- }
-
- ua3g_param_item = proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- parameter_length + 2,
- "%s: %s",
- val_to_str(parameter_id, str_parameter_id, "Unknown"), strbuf->str);
- }
- else
- ua3g_param_item = proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- parameter_length + 2,
- "%s",
- val_to_str(parameter_id, str_parameter_id, "Unknown"));
-
- ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Parameter: %s (0x%02x)",
- val_to_str(parameter_id, str_parameter_id, "Unknown"), parameter_id);
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Length: %d",
- parameter_length);
- offset++;
- length--;
-
- if(parameter_length > 0)
- {
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- parameter_length,
- "Value: %s",
- strbuf->str);
- offset += parameter_length;
- length -= parameter_length;
- }
- }
- break;
- }
- case 0x04: /* DEF_TONES */
- {
- int i, tone_nb_entries;
- guint16 frequency_1, frequency_2;
- signed char level_1, level_2;
-
- tone_nb_entries = tvb_get_guint8(tvb, offset);
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Nomber Of Entries: %d",
- tone_nb_entries);
- offset++;
- length--;
-
- while(length > 0)
- {
- for(i = 1; i <= tone_nb_entries; i++)
- {
- frequency_1 = tvb_get_ntohs(tvb, offset);
- level_1 = (signed char)(tvb_get_guint8(tvb, offset + 2)) / 2;
- frequency_2 = tvb_get_ntohs(tvb, offset + 3);
- level_2 = (signed char)(tvb_get_guint8(tvb, offset + 5)) / 2;
-
- ua3g_param_item = proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 6,
- "Tone Pair %d: %d Hz at %d dB / %d Hz at %d dB",
- i, frequency_1, level_1, frequency_2, level_2);
- ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
-
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 2,
- "Frequency 1: %d Hz",
- frequency_1);
- offset += 2;
- length -= 2;
-
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Level: %d dB",
- level_1);
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 2,
- "Frequency 2: %d Hz",
- frequency_2);
- offset += 2;
- length -= 2;
-
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Level: %d dB",
- level_2);
- offset++;
- length--;
- }
- }
- break;
- }
- case 0x05: /* START TONE */
- {
- guint8 i, tone_nb_entries, tone_direction, tone_id;
-/* guint8 i, tone_nb_entries, tone_direction, tone_id, tone_duration tone_silence; */
- int tone_duration;
- static const value_string str_tone_direction[] = {
- {0x00, "On The Phone"},
- {0x40, "To The Network"},
- {0x80, "On The Phone and To The Network"},
- {0, NULL}
- };
-
- tone_direction = tvb_get_guint8(tvb, offset) & 0xC0;
- tone_nb_entries = tvb_get_guint8(tvb, offset);
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Direction: %s - Nomber Of Entries: %d",
- val_to_str(tone_direction, str_tone_direction, "Unknown"), tone_nb_entries);
- offset++;
- length--;
-
- while(length > 0 && tone_nb_entries)
- {
- for(i = 1; i <= tone_nb_entries; i++)
- {
- tone_id = tvb_get_guint8(tvb, offset);
- tone_duration = tvb_get_ntohs(tvb, offset + 1);
- /*tone_duration = tvb_get_guint8(tvb, offset + 1);
- tone_silence = tvb_get_guint8(tvb, offset + 2);*/
-
- ua3g_param_item = proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 6,
- "Tone Pair %d: Id: %d, Duration: %d ms",
-/* "Tone Pair %d: Id: %d, Duration: %d ms, Silence: %d ms", */
- i, tone_id, tone_duration);
-/* i, tone_id, tone_duration, tone_silence); */
- ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
-
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Identification: %d",
- tone_id);
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 2,
- "Duration: %d ms",
- tone_duration);
- offset += 2;
- length -= 2;
-
- /*proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Duration: %d ms",
- tone_duration);
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Silence: %d ms",
- tone_silence);
- offset++;
- length--;*/
- }
- }
- break;
- }
- case 0x07: /* START LISTEN RTP */
- case 0x08: /* STOP LISTEN RTP */
- {
- int i, parameter_length, parameter_id;
- static const value_string str_parameter_id[] = {
- {0x00, "Remote IP Adress "},
- {0x01, "Remote UDP Port In "},
- {0x02, "Remote UDP Port Out "},
- {0x03, "Remote IP Address Out"},
- {0x04, "Canal Number"},
- {0, NULL}
- };
-
- while(length > 0)
- {
- parameter_id = tvb_get_guint8(tvb, offset);
- parameter_length = tvb_get_guint8(tvb, offset + 1);
-
- if(parameter_length > 0)
- {
- switch(parameter_id)
- {
- case 0x00: /* Remote IP Adress - Not for start listening rtp */
- case 0x03: /* Remote IP Adress Out - Not for start listening rtp */
- {
- if(parameter_length > 0) {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf, "%d", tvb_get_guint8(tvb, offset + 2));
- }
-
- for(i = 2; i <= parameter_length; i++)
- {
- ep_strbuf_append(strbuf, ".");
- ep_strbuf_append_printf(strbuf, "%u", tvb_get_guint8(tvb, offset+1+i));
- }
- break;
- }
- case 0x01: /* Remote UDP Port In - Not for start listening rtp */
- case 0x02: /* Remote UDP Port Out - Not for start listening rtp */
- case 0x04: /* Canal Number */
- default:
- {
- if((parameter_length > 0) && (parameter_length <= 8))
- {
- guint64 param_value = 0;
-
- for(i = parameter_length; i > 0; i--)
- {
- param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
- }
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf, "%" G_GINT64_MODIFIER "u", param_value);
- }
- else
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf,
- "0x%02x 0x%02x ... 0x%02x 0x%02x",
- tvb_get_guint8(tvb, offset + 2),
- tvb_get_guint8(tvb, offset + 3),
- tvb_get_guint8(tvb, offset + parameter_length),
- tvb_get_guint8(tvb, offset + 1 + parameter_length));
- }
- }
- break;
- }
-
- ua3g_param_item = proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- parameter_length + 2,
- "%s: %s",
- val_to_str(parameter_id, str_parameter_id, "Unknown"), strbuf->str);
- }
- else
- ua3g_param_item = proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- parameter_length + 2,
- "%s",
- val_to_str(parameter_id, str_parameter_id, "Unknown"));
-
- ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Parameter: %s (0x%02x)",
- val_to_str(parameter_id, str_parameter_id, "Unknown"), parameter_id);
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Length: %d",
- parameter_length);
- offset++;
- length--;
-
- if(parameter_length > 0)
- {
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- parameter_length,
- "Value: %s",
- strbuf->str);
- offset += parameter_length;
- length -= parameter_length;
- }
- }
- break;
- }
- case 0x09: /* GET_PARAM_REQ */
- {
- guint8 parameter;
- static const value_string str_parameter[] = {
- {0x00 , "Firmware Version"},
- {0x01 , "Firmware Version"},
- {0x02 , "DHCP IP Address"},
- {0x03 , "Local IP Address"},
- {0x04 , "Subnetwork Mask"},
- {0x05 , "Router IP Address"},
- {0x06 , "TFTP IP Address"},
- {0x07 , "MainCPU IP Address"},
- {0x08 , "Default Codec"},
- {0x09 , "Ethernet Drivers Config"},
- {0x0A , "MAC Address"},
- {0, NULL}
- };
-
- while(length > 0)
- {
- parameter = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "%s",
- val_to_str(parameter, str_parameter, "Unknown"));
- offset++;
- length--;
- }
- break;
- }
- case 0x0A: /* SET_PARAM_REQ */
- {
- int i, parameter_id, parameter_length;
- static const value_string str_parameter_id[] = {
- {0x00 , "QOS IP TOS"},
- {0x01 , "QOS 8021 VLID"},
- {0x02 , "QOS 8021 PRI"},
- {0x03 , "SNMP MIB2 SysContact"},
- {0x04 , "SNMP MIB2 SysName"},
- {0x05 , "SNMP MIB2 SysLocation"},
- {0x06 , "Default Compressor"},
- {0x07 , "Error String Net Down"},
- {0x08 , "Error String Cable PB"},
- {0x09 , "Error String Try Connect"},
- {0x0A , "Error String Connected"},
- {0x0B , "Error String Reset"},
- {0x0C , "Error String Duplicate IP Address"},
- {0x0D , "SNMP MIB Community"},
- {0x0E , "TFTP Backup Sec Mode"},
- {0x0F , "TFTP Backup IP Address"},
- {0x10 , "Set MMI Password"},
- {0x11 , "Set PC Port Status"},
- {0x12 , "Record RTP Authorization"},
- {0x13 , "Security Flags"},
- {0x14 , "ARP Spoofing"},
- {0x15 , "Session Param"},
- {0x30 , "MD5 Authentication"},
- {0, NULL}
- };
-
- while(length > 0)
- {
- guint64 param_value = 0;
-
- parameter_id = tvb_get_guint8(tvb, offset);
- parameter_length = tvb_get_guint8(tvb, offset + 1);
-
- if(parameter_length > 0)
- {
- switch(parameter_id)
- {
- case 0x06: /* Compressor */
- {
- static const value_string str_compressor[] = {
- {0x00, "G.711 A-law"},
- {0x01, "G.711 mu-law"},
- {0x0F, "G.723.1 5.3kbps"},
- {0x10, "G.723.1 6.3kbps"},
- {0x11, "G.729A 8 kbps"},
- {0, NULL}
- };
-
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append(strbuf, val_to_str(tvb_get_guint8(tvb, offset + 2),
- str_compressor,
- "Default Codec"));
- break;
- }
- case 0x07: /* ERR STRING NET DOWN */
- case 0x08: /* ERR STRING CABLE PB */
- case 0x09: /* ERR STRING TRY CONNECT */
- case 0x0A: /* ERR STRING CONNECTED */
- case 0x0B: /* ERR STRING RESET */
- case 0x0C: /* ERR STRING DUPLICATE IP ADDRESS */
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append(strbuf, "\"");
- for(i = 1; i <= parameter_length; i++)
- {
- if(isprint(tvb_get_guint8(tvb, offset + 1 + i)))
- ep_strbuf_append(strbuf, tvb_get_const_stringz(tvb, offset+1+i, lengthp));
- else
- ep_strbuf_append(strbuf, tvb_get_const_stringz(tvb, offset+1+i, lengthp));
- }
- ep_strbuf_append(strbuf, "\"");
- break;
- }
- case 0x0F: /* TFTP BACKUP IP ADDR */
- {
- if(parameter_length > 0) {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf, "%d", tvb_get_guint8(tvb, offset + 2));
- }
-
- for(i = 2; i <= parameter_length; i++)
- {
- ep_strbuf_append(strbuf, ".");
- ep_strbuf_append_printf(strbuf, "%u", tvb_get_guint8(tvb, offset+1+i));
- }
- break;
- }
- case 0x11: /* Set PC Port status */
- {
- static const value_string str_set_pc_port_status[] = {
- {0x00, "No PC Port Security"},
- {0x01, "Block PC Port"},
- {0x02, "Filter VLAN"},
- {0, NULL}
- };
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append(strbuf, val_to_str(tvb_get_guint8(tvb, offset + 2),
- str_set_pc_port_status,
- "Unknown"));
- break;
- }
- case 0x12: /* Record RTP Authorization */
- {
- static const value_string str_enable_feature[] = {
- {0x00, "Disable Feature"},
- {0x01, "Enable Feature"},
- {0, NULL}
- };
-
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append(strbuf, val_to_str(tvb_get_guint8(tvb, offset + 2),
- str_enable_feature,
- "Unknown"));
- break;
- }
- case 0x13: /* Security Flags */
- {
- static const value_string str_set_pc_port_status[] = {
- {0x00, "Filtering Not Active"},
- {0x01, "Filtering Activated"},
- {0, NULL}
- };
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append(strbuf, val_to_str((tvb_get_guint8(tvb, offset + 2) & 0x01),
- str_set_pc_port_status,
- "Unknown"));
- break;
- }
- case 0x00: /* QOS IP TOS */
- case 0x01: /* QOS 8021 VLID */
- case 0x02: /* QOS 8021 PRI */
- case 0x03: /* SNMP MIB2 SYSCONTACT */
- case 0x04: /* SNMP MIB2 SYSNAME */
- case 0x05: /* SNMP MIB2 SYSLOCATION */
- case 0x0D: /* SNMP MIB COMMUNITY */
- case 0x0E: /* TFTP BACKUP SEC MODE */
- case 0x10: /* SET MMI PASSWORD */
- case 0x14: /* ARP Spoofing */
- case 0x15: /* Session Param */
- case 0x30: /* MD5 Authentication */
- default:
- {
- if((parameter_length > 0) && (parameter_length <= 8))
- {
- for(i = parameter_length; i > 0; i--)
- {
- param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
- }
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf, "%" G_GINT64_MODIFIER "u", param_value);
- }
- else if(parameter_length > 8)
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf,
- "0x%02x 0x%02x ... 0x%02x 0x%02x",
- tvb_get_guint8(tvb, offset + 2),
- tvb_get_guint8(tvb, offset + 3),
- tvb_get_guint8(tvb, offset + parameter_length),
- tvb_get_guint8(tvb, offset + 1 + parameter_length));
- }
- break;
- }
- }
-
- ua3g_param_item = proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- parameter_length + 2,
- "%s: %s",
- val_to_str(parameter_id, str_parameter_id, "Unknown"), strbuf->str);
- }
- else
- ua3g_param_item = proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- parameter_length + 2,
- "%s",
- val_to_str(parameter_id, str_parameter_id, "Unknown"));
-
- ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Parameter: %s (0x%02x)",
- val_to_str(parameter_id, str_parameter_id, "Unknown"), parameter_id);
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Length: %d",
- parameter_length);
- offset++;
- length--;
-
- if(parameter_length > 0)
- {
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- parameter_length,
- "Value: %s",
- strbuf->str);
- offset += parameter_length;
- length -= parameter_length;
- }
- }
- break;
- }
- case 0x0B: /* SEND_DIGIT */
- {
- static const value_string str_digit[] = {
- {0, "0"},
- {1, "1"},
- {2, "2"},
- {3, "3"},
- {4, "4"},
- {5, "5"},
- {6, "6"},
- {7, "7"},
- {8, "8"},
- {9, "9"},
- {10, "*"},
- {11, "#"},
- {12, "A"},
- {13, "B"},
- {14, "C"},
- {15, "D"},
- {16, "Flash"},
- {0, NULL}
- };
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Digit Value: %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_digit, "Unknown"));
- break;
- }
- case 0x0C: /* PAUSE_RTP */
- case 0x0D: /* RESTART_RTP */
- {
- int i, parameter_length, parameter_id;
- static const value_string str_parameter_id[] = {
- {0x14, "Canal Identifier"},
- {0, NULL}
- };
-
- while(length > 0)
- {
- parameter_id = tvb_get_guint8(tvb, offset);
- parameter_length = tvb_get_guint8(tvb, offset + 1);
-
- if(parameter_length > 0)
- {
- if((parameter_length > 0) && (parameter_length <= 8))
- {
- guint64 param_value = 0;
-
- for(i = parameter_length; i > 0; i--)
- {
- param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
- }
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf, "%" G_GINT64_MODIFIER "u", param_value);
- }
- else
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf,
- "0x%02x 0x%02x ... 0x%02x 0x%02x",
- tvb_get_guint8(tvb, offset + 2),
- tvb_get_guint8(tvb, offset + 3),
- tvb_get_guint8(tvb, offset + parameter_length),
- tvb_get_guint8(tvb, offset + 1 + parameter_length));
- }
-
- ua3g_param_item = proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- parameter_length + 2,
- "%s: %s",
- val_to_str(parameter_id, str_parameter_id, "Unknown"), strbuf->str);
- }
- else
- ua3g_param_item = proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- parameter_length + 2,
- "%s",
- val_to_str(parameter_id, str_parameter_id, "Unknown"));
-
- ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
-
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Parameter: %s (0x%02x)",
- val_to_str(parameter_id, str_parameter_id, "Unknown"), parameter_id);
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Length: %d",
- parameter_length);
- offset++;
- length--;
-
- if(parameter_length > 0)
- {
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- parameter_length,
- "Value: %s",
- strbuf->str);
- offset += parameter_length;
- length -= parameter_length;
- }
- }
- break;
- }
- case 0x0E: /* START_RECORD_RTP */
- case 0x0F: /* STOP RECORD RTP */
- {
- int i, parameter_length, parameter_id;
- static const value_string str_parameter_id[] = {
- {0x00 , "Recorder Index"},
- {0x01 , "Remote IP Address"},
- {0x02 , "Remote UDP Port In"},
- {0x03 , "Remote UDP Port Out"},
- {0x04 , "Remote IP Address Out"},
- {0x05 , "Local UDP Port In"},
- {0x06 , "Local UDP Port Out"},
- {0x07 , "Type Of Service"},
- {0x08 , "Master Key For SRTP Session"},
- {0x09 , "Master Salt Key For SRTP Session"},
- {0x30 , "MD5 Authentication"},
- {0, NULL}
- };
-
- while(length > 0)
- {
- parameter_id = tvb_get_guint8(tvb, offset);
- parameter_length = tvb_get_guint8(tvb, offset + 1);
-
- if(parameter_length > 0)
- {
- switch(parameter_id)
- {
- case 0x01: /* Remote IP Address */
- case 0x04: /* Remote IP Address Out */
- {
- if(parameter_length > 0) {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf, "%d", tvb_get_guint8(tvb, offset + 2));
- }
-
- for(i = 2; i <= parameter_length; i++)
- {
- ep_strbuf_append(strbuf, ".");
- ep_strbuf_append_printf(strbuf, "%u", tvb_get_guint8(tvb, offset+1+i));
- }
- break;
- }
- case 0x00: /* Recorder Index */
- case 0x02: /* Remote UDP Port In */
- case 0x03: /* Remote UDP Port Out */
- case 0x05: /* Local UDP Port In */
- case 0x06: /* Local UDP Port Out */
- case 0x07: /* Type Of Service */
- case 0x08: /* Master Key For SRTP Session */
- case 0x09: /* Master Salt Key For SRTP Session */
- case 0x30: /* MD5 Authentication */
- default:
- {
- if((parameter_length > 0) && (parameter_length <= 8))
- {
- guint64 param_value = 0;
- for(i = parameter_length; i > 0; i--)
- {
- param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
- }
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf, "%" G_GINT64_MODIFIER "u", param_value);
- }
- else
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf,
- "0x%02x 0x%02x ... 0x%02x 0x%02x",
- tvb_get_guint8(tvb, offset + 2),
- tvb_get_guint8(tvb, offset + 3),
- tvb_get_guint8(tvb, offset + parameter_length),
- tvb_get_guint8(tvb, offset + 1 + parameter_length));
- }
- }
- break;
- }
-
- ua3g_param_item = proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- parameter_length + 2,
- "%s: %s",
- val_to_str(parameter_id, str_parameter_id, "Unknown"), strbuf->str);
- }
- else
- ua3g_param_item = proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- parameter_length + 2,
- "%s",
- val_to_str(parameter_id, str_parameter_id, "Unknown"));
-
- ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Parameter: %s (0x%02x)",
- val_to_str(parameter_id, str_parameter_id, "Unknown"), parameter_id);
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Length: %d",
- parameter_length);
- offset++;
- length--;
-
- if(parameter_length > 0)
- {
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- parameter_length,
- "Value: %s",
- strbuf->str);
- offset += parameter_length;
- length -= parameter_length;
- }
- }
- break;
- }
- case 0x06: /* STOP TONE */
- default:
- {
- break;
- }
- }
+ guint8 command;
+ proto_tree *ua3g_body_tree;
+ proto_item *ua3g_param_item;
+ proto_tree *ua3g_param_tree;
+
+ static const value_string str_command[] = {
+ {0x00, "Reset"},
+ {0x01, "Start RTP"},
+ {0x02, "Stop RTP"},
+ {0x03, "Redirect"},
+ {0x04, "Tone Definition"},
+ {0x05, "Start Tone"},
+ {0x06, "Stop Tone"},
+ {0x07, "Start Listen RTP"},
+ {0x08, "Stop Listen RTP"},
+ {0x09, "Get Parameters Value"},
+ {0x0A, "Set Parameters Value"},
+ {0x0B, "Send Digit"},
+ {0x0C, "Pause RTP"},
+ {0x0D, "Restart RTP"},
+ {0x0E, "Start Record RTP"},
+ {0x0F, "Stop Record RTP"},
+ {0, NULL}
+ };
+ static value_string_ext str_command_ext = VALUE_STRING_EXT_INIT(str_command);
+
+ command = tvb_get_guint8(tvb, offset);
+
+ /* add text to the frame "INFO" column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
+ val_to_str_ext_const(command, &str_command_ext, "Unknown"));
+
+ if (!ua3g_body_item)
+ return;
+
+ /* add text to the frame tree */
+ proto_item_append_text(ua3g_item, ", %s",
+ val_to_str_ext_const(command, &str_command_ext, "Unknown"));
+ proto_item_append_text(ua3g_body_item, " - %s",
+ val_to_str_ext_const(command, &str_command_ext, "Unknown"));
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+
+ proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_ip, tvb, offset, 1,
+ command, "Command: %s",
+ val_to_str_ext_const(command, &str_command_ext, "Unknown"));
+ offset++;
+ length--;
+
+ switch (command) {
+ case 0x00: /* RESET */
+ {
+ int i, parameter_id, parameter_length;
+ static const value_string str_parameter_id[] = {
+ {0x00, "Update Mode"},
+ {0x01, "Bad Sec Mode"},
+ {0x02, "Customization Name"},
+ {0x03, "Localization Name"},
+ {0, NULL}
+ };
+
+ if (length > 0) {
+ emem_strbuf_t *strbuf;
+ strbuf = ep_strbuf_new_label(NULL);
+
+ parameter_id = tvb_get_guint8(tvb, offset);
+ parameter_length = tvb_get_guint8(tvb, offset + 1);
+
+ if (parameter_length > 0) {
+ guint8 param;
+ switch (parameter_id) {
+ case 0x00: /* Update Mode */
+ {
+ static const char *str_update_mode[] = {
+ "Bootloader",
+ "Data",
+ "Customization",
+ "Localization",
+ "Code",
+ "SIP"
+ };
+ param = tvb_get_guint8(tvb, offset + 2);
+ if ((param & 0x80) == 0x00) {
+ ep_strbuf_append(strbuf, "NOE Update Mode: ");
+
+ for (i = 0; i < 6; i++) {
+ ep_strbuf_append_printf(strbuf, "%s: %s, ",
+ str_update_mode[i],
+ ((param >> i) & 0x01) ? "Enable" : "Disable");
+ }
+ } else {
+ ep_strbuf_append(strbuf, "Unknown");
+ }
+
+ break;
+ }
+ case 0x01: /* Bad_Sec_Mode */
+ {
+ static const value_string str_bad_sec_mode[] = {
+ {0x01, "Binary is full, CS is secured, but terminal running in clear mode"},
+ {0, NULL}
+ };
+
+ ep_strbuf_append(strbuf,
+ val_to_str_const(tvb_get_guint8(tvb, offset + 2), str_bad_sec_mode, "Unknown"));
+ break;
+ }
+ case 0x02: /* Cust_Name */
+ {
+ ep_strbuf_append(strbuf, "\"");
+ /* XXX: Advancing thru param byte by byte, yet using stringz ?? */
+ /* XXX: ! isprint() action same as for isprint() ?? */
+ for (i = 1; i <= parameter_length; i++) {
+ if (isprint(tvb_get_guint8(tvb, offset + 1 + i)))
+ ep_strbuf_append(strbuf, tvb_get_const_stringz(tvb, offset+1+i, NULL));
+ else
+ ep_strbuf_append(strbuf, tvb_get_const_stringz(tvb, offset+1+i, NULL));
+ }
+
+ ep_strbuf_append(strbuf, "\"");
+ break;
+ }
+ case 0x03: /* L10N_Name */
+ {
+ ep_strbuf_append(strbuf, "\"");
+ /* XXX: Advancing thru param byte by byte, yet using stringz ?? */
+ /* XXX: ! isprint() action same as for isprint() ?? */
+ for (i = 1; i <= parameter_length; i++) {
+ if (isprint(tvb_get_guint8(tvb, offset + 1 + i)))
+ ep_strbuf_append(strbuf, tvb_get_const_stringz(tvb, offset+1+i, NULL));
+ else
+ ep_strbuf_append(strbuf, tvb_get_const_stringz(tvb, offset+1+i, NULL));
+ }
+
+ ep_strbuf_append(strbuf, "\"");
+ break;
+ }
+ }
+
+ ua3g_param_item = proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ parameter_length + 2, "%s: %s",
+ val_to_str_const(parameter_id, str_parameter_id, "Unknown"), strbuf->str);
+ } else {
+ ua3g_param_item = proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ parameter_length + 2, "%s",
+ val_to_str_const(parameter_id, str_parameter_id, "Unknown"));
+ }
+
+ ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1,
+ "Parameter: %s", val_to_str_const(parameter_id, str_parameter_id, "Unknown"));
+ offset++;
+ length--;
+
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1, "Length: %d", parameter_length);
+ offset++;
+ length--;
+
+ if (parameter_length > 0) {
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, parameter_length,
+ "Value: %s", strbuf->str);
+ /*offset += parameter_length;*/
+ /*length -= parameter_length;*/
+ }
+ }
+ break;
+ }
+ case 0x01: /* START RTP */
+ {
+ emem_strbuf_t *strbuf;
+ int i, parameter_length, parameter_id;
+
+ static const value_string str_direction[] = {
+ {0x00, "Terminal Input"},
+ {0x01, "Terminal Output"},
+ {0x02, "Terminal Input/Output (Both Directions)"},
+ {0, NULL}
+ };
+ static const value_string str_parameter_id[] = {
+ {0x00, "Local UDP Port"},
+ {0x01, "Remote IP Address"},
+ {0x02, "Remote UDP Port"},
+ {0x03, "Type Of Service"},
+ {0x04, "Compressor"},
+ {0x05, "Payload Concatenation (ms)"},
+ {0x06, "Echo Cancelation Enabler"},
+ {0x07, "Silence Suppression Enabler"},
+ {0x08, "802.1 Q User Priority"},
+ {0x09, "Reserved"},
+ {0x0a, "Post Filtering Enabler"},
+ {0x0b, "High Pass Filtering Enabler"},
+ {0x0c, "Remote SSRC"},
+ {0x0d, "Must Send QOS Tickets"},
+ {0x0e, "Local Identifier"},
+ {0x0f, "Distant Identifier"},
+ {0x10, "Destination For RTCP Sender Reports - Port Number"},
+ {0x11, "Destination For RTCP Sender Reports - IP Address"},
+ {0x12, "Destination For RTCP Receiver Reports - Port Number"},
+ {0x13, "Destination For RTCP Receiver Reports - IP Address"},
+ {0x14, "Channel Number"},
+ {0x15, "DTMF Sending"},
+ {0x16, "Payload Type Of Redundancy"},
+ {0x17, "Payload Type Of DTMF Events"},
+ {0x18, "Enable / Disable RFC 2198"},
+ {0x31, "SRTP Encryption Enable For This Communication"},
+ {0x32, "Master Key For SRTP Session"},
+ {0x33, "Master Salt Key For SRTP Session"},
+ {0x34, "Master key for output stream of SRTP session"},
+ {0x35, "Master salt key for output stream of SRTP session"},
+ {0x36, "Integrity checking enabled for this communication"},
+ {0x37, "MKI value for SRTP packets in input stream"},
+ {0x38, "MKI value for SRTP packets in output stream"},
+ {0x50, "MD5 Authentication"},
+ {0, NULL}
+ };
+ static value_string_ext str_parameter_id_ext = VALUE_STRING_EXT_INIT(str_parameter_id);
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "Direction: %s",
+ val_to_str_const(tvb_get_guint8(tvb, offset), str_direction, "Unknown"));
+ offset++;
+ length--;
+
+ strbuf = ep_strbuf_new_label(NULL);
+ while (length > 0) {
+ ep_strbuf_truncate(strbuf, 0);
+
+ parameter_id = tvb_get_guint8(tvb, offset);
+ parameter_length = tvb_get_guint8(tvb, offset + 1);
+
+ if (parameter_length > 0) {
+ switch (parameter_id) {
+ case 0x01: /* Remote IP Address */
+ case 0x11: /* Destination For RTCP Sender Reports - IP Address */
+ case 0x13: /* Destination For RTCP Receiver Reports - IP Address */
+ {
+ ep_strbuf_append_printf(strbuf, "%d", tvb_get_guint8(tvb, offset + 2));
+
+ for (i = 1; i < parameter_length; i++) {
+ ep_strbuf_append(strbuf, ".");
+ ep_strbuf_append_printf(strbuf, "%u", tvb_get_guint8(tvb, offset+2+i));
+ }
+ break;
+ }
+ case 0x04: /* Compressor */
+ {
+ static const value_string str_compressor[] = {
+ {0x00, "G.711 A-law"},
+ {0x01, "G.711 mu-law"},
+ {0x0F, "G.723.1 5.3kbps"},
+ {0x10, "G.723.1 6.3kbps"},
+ {0x11, "G.729A 8 kbps"},
+ {0, NULL}
+ };
+
+ if (parameter_length <= 8) {
+ guint64 param_value = 0;
+ for (i = parameter_length; i > 0; i--) { /* XXX: Not needed since only LO byte used ? */
+ param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
+ }
+ ep_strbuf_append(strbuf, val_to_str_const((guint8)(param_value), str_compressor, "Default Codec"));
+ } else {
+ ep_strbuf_append_printf(strbuf, "0x%02x 0x%02x ... 0x%02x 0x%02x",
+ tvb_get_guint8(tvb, offset + 2),
+ tvb_get_guint8(tvb, offset + 3),
+ tvb_get_guint8(tvb, offset + parameter_length),
+ tvb_get_guint8(tvb, offset + 1 + parameter_length));
+ }
+ break;
+ }
+ case 0x06: /* Echo Cancelation Enabler */
+ case 0x07: /* Silence Suppression Enabler */
+ case 0x0A: /* Post Filtering Enabler */
+ case 0x0B: /* High Pass Filtering Enabler */
+ {
+ if (parameter_length <= 8) {
+ guint64 param_value = 0;
+
+ for (i = parameter_length; i > 0; i--) { /* XXX: Not needed since only LO byte used ? */
+ param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
+ }
+ ep_strbuf_append(strbuf, STR_ON_OFF((guint8)(param_value)));
+ } else {
+ ep_strbuf_append_printf(strbuf, "0x%02x 0x%02x ... 0x%02x 0x%02x",
+ tvb_get_guint8(tvb, offset + 2),
+ tvb_get_guint8(tvb, offset + 3),
+ tvb_get_guint8(tvb, offset + parameter_length),
+ tvb_get_guint8(tvb, offset + 1 + parameter_length));
+ }
+ break;
+ }
+ case 0x0D: /* Must Send QOS Tickets */
+ {
+ if (parameter_length <= 8) {
+ guint64 param_value = 0;
+
+ for (i = parameter_length; i > 0; i--) { /* XXX: Not needed since only LO byte used ? */
+ param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
+ }
+ /* XXX: Only 0x01 ==> "Yes" ?? */
+ ep_strbuf_append(strbuf, ((guint8)param_value == 0x01) ? "Yes": "No");
+ } else {
+ ep_strbuf_append_printf(strbuf, "0x%02x 0x%02x ... 0x%02x 0x%02x",
+ tvb_get_guint8(tvb, offset + 2),
+ tvb_get_guint8(tvb, offset + 3),
+ tvb_get_guint8(tvb, offset + parameter_length),
+ tvb_get_guint8(tvb, offset + 1 + parameter_length));
+ }
+ break;
+ }
+ case 0x0E: /* Local Identifier */
+ case 0x0F: /* Distant Identifier */
+ {
+ break;
+ }
+ case 0x15: /* DTMF Sending */
+ {
+ if (parameter_length <= 8) {
+ guint64 param_value = 0;
+
+ for (i = parameter_length; i > 0; i--) { /* XXX: Not needed since only LO byte used ? */
+ param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
+ }
+ ep_strbuf_append(strbuf, ((guint8)param_value) ? "Send DTMF" : "Don't Send DTMF");
+ } else {
+ ep_strbuf_append_printf(strbuf, "0x%02x 0x%02x ... 0x%02x 0x%02x",
+ tvb_get_guint8(tvb, offset + 2),
+ tvb_get_guint8(tvb, offset + 3),
+ tvb_get_guint8(tvb, offset + parameter_length),
+ tvb_get_guint8(tvb, offset + 1 + parameter_length));
+ }
+ break;
+ }
+ case 0x18: /* Enable / Disable RFC 2198 */
+ {
+ if (parameter_length <= 8) {
+ guint64 param_value = 0;
+
+ for (i = parameter_length; i > 0; i--) { /* XXX: Not needed since only LO byte used ? */
+ param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
+ }
+ ep_strbuf_append(strbuf, (((guint8)param_value) == 0x00) ? "Enable" : "Disable"); /* XXX: OK ? */
+ } else {
+ ep_strbuf_append_printf(strbuf, "0x%02x 0x%02x ... 0x%02x 0x%02x",
+ tvb_get_guint8(tvb, offset + 2),
+ tvb_get_guint8(tvb, offset + 3),
+ tvb_get_guint8(tvb, offset + parameter_length),
+ tvb_get_guint8(tvb, offset + 1 + parameter_length));
+ }
+ break;
+ }
+ case 0x31: /* SRTP Encryption Enable For This Communication */
+ {
+ if (parameter_length <= 8) {
+ guint64 param_value = 0;
+
+ for (i = parameter_length; i > 0; i--) { /* XXX: Not needed since only LO byte used ? */
+ param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
+ }
+ ep_strbuf_append(strbuf, (((guint8)param_value) == 0x10) ? "Enable" : "Disable");
+ } else {
+ ep_strbuf_append_printf(strbuf, "0x%02x 0x%02x ... 0x%02x 0x%02x",
+ tvb_get_guint8(tvb, offset + 2),
+ tvb_get_guint8(tvb, offset + 3),
+ tvb_get_guint8(tvb, offset + parameter_length),
+ tvb_get_guint8(tvb, offset + 1 + parameter_length));
+ }
+ break;
+ }
+ case 0x00: /* Local UDP Port */
+ case 0x02: /* Remote UDP Port */
+ case 0x03: /* Type Of Service */
+ case 0x05: /* Payload Concatenation */
+ case 0x08: /* 802.1 Q User Priority */
+ case 0x09: /* Reserved */
+ case 0x0C: /* Remote SSRC */
+ case 0x10: /* Destination For RTCP Sender Reports - Port Number */
+ case 0x12: /* Destination For RTCP Receiver Reports - Port Number */
+ case 0x14: /* Channel Number */
+ case 0x16: /* Payload Type For Redundancy */
+ case 0x17: /* Payload Type For DTMF Events */
+ case 0x32: /* Master Key For SRTP Session */
+ case 0x33: /* Master Salt Key For SRTP Session */
+ case 0x34: /* Master key for output stream of SRTP session */
+ case 0x35: /* Master salt key for output stream of SRTP session */
+ case 0x36: /* Integrity checking enabled for this communication */
+ case 0x37: /* MKI value for SRTP packets in input stream */
+ case 0x38: /* MKI value for SRTP packets in output stream */
+ case 0x50: /* MD5 Authentication */
+ default:
+ {
+ if (parameter_length <= 8) {
+ guint64 param_value = 0;
+
+ for (i = parameter_length; i > 0; i--) {
+ param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
+ }
+ ep_strbuf_append_printf(strbuf, "%" G_GINT64_MODIFIER "u", param_value);
+ } else {
+ ep_strbuf_append_printf(strbuf, "0x%02x 0x%02x ... 0x%02x 0x%02x",
+ tvb_get_guint8(tvb, offset + 2),
+ tvb_get_guint8(tvb, offset + 3),
+ tvb_get_guint8(tvb, offset + parameter_length),
+ tvb_get_guint8(tvb, offset + 1 + parameter_length));
+ }
+ break;
+ }
+ }
+
+ ua3g_param_item = proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ parameter_length + 2, "%s: %s",
+ val_to_str_ext_const(parameter_id, &str_parameter_id_ext, "Unknown"), strbuf->str);
+ } else {
+ /* (parameter_length == 0) */
+ ua3g_param_item = proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ parameter_length + 2, "%s",
+ val_to_str_ext_const(parameter_id, &str_parameter_id_ext, "Unknown"));
+ }
+ ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1, "Parameter: %s (0x%02x)",
+ val_to_str_ext_const(parameter_id, &str_parameter_id_ext, "Unknown"), parameter_id);
+ offset++;
+ length--;
+
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1, "Length: %d", parameter_length);
+ offset++;
+ length--;
+
+ if (parameter_length > 0) {
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, parameter_length,
+ "Value: %s", strbuf->str);
+ offset += parameter_length;
+ length -= parameter_length;
+ }
+ }
+ break;
+ }
+ case 0x02: /* STOP_RTP */
+ {
+ emem_strbuf_t *strbuf;
+ int i, parameter_id, parameter_length;
+
+ static const value_string str_parameter_id[] = {
+ {0x0E, "Local Identifier"},
+ {0x0F, "Distant Identifier"},
+ {0x14, "Canal Identifier"},
+ {0, NULL}
+ };
+
+ strbuf = ep_strbuf_new_label(NULL);
+
+ while (length > 0) {
+ ep_strbuf_truncate(strbuf, 0);
+
+ parameter_id = tvb_get_guint8(tvb, offset);
+ parameter_length = tvb_get_guint8(tvb, offset + 1);
+
+ if (parameter_length > 0) {
+ switch (parameter_id) {
+ case 0x0E: /* Local Identifier */
+ case 0x0F: /* Distant Identifier */
+ {
+ break;
+ }
+ case 0x14: /* Canal Identifier */
+ default:
+ {
+ if (parameter_length <= 8) {
+ guint64 param_value = 0;
+
+ for (i = parameter_length; i > 0; i--)
+ {
+ param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
+ }
+ ep_strbuf_append_printf(strbuf, "%" G_GINT64_MODIFIER "u", param_value);
+ } else {
+ ep_strbuf_append_printf(strbuf, "0x%02x 0x%02x ... 0x%02x 0x%02x",
+ tvb_get_guint8(tvb, offset + 2),
+ tvb_get_guint8(tvb, offset + 3),
+ tvb_get_guint8(tvb, offset + parameter_length),
+ tvb_get_guint8(tvb, offset + 1 + parameter_length));
+ }
+ break;
+ }
+ }
+
+ ua3g_param_item = proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ parameter_length + 2, "%s: %s",
+ val_to_str_const(parameter_id, str_parameter_id, "Unknown"), strbuf->str);
+ } else {
+ ua3g_param_item = proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ parameter_length + 2, "%s",
+ val_to_str_const(parameter_id, str_parameter_id, "Unknown"));
+ }
+ ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1,
+ "Parameter: %s (0x%02x)",
+ val_to_str_const(parameter_id, str_parameter_id, "Unknown"), parameter_id);
+ offset++;
+ length--;
+
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1, "Length: %d", parameter_length);
+ offset++;
+ length--;
+
+ if (parameter_length > 0) {
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, parameter_length,
+ "Value: %s", strbuf->str);
+ offset += parameter_length;
+ length -= parameter_length;
+ }
+ }
+ break;
+ }
+ case 0x03: /* REDIRECT */
+ {
+ emem_strbuf_t *strbuf;
+ int i, parameter_length, parameter_id;
+
+ static const value_string str_parameter_id[] = {
+ {0x00, "Remote MainCPU Server IP Adress"},
+ {0x01, "Remote MainCPU Server Port"},
+ {0, NULL}
+ };
+
+ strbuf = ep_strbuf_new_label(NULL);
+
+ while (length > 0) {
+ ep_strbuf_truncate(strbuf, 0);
+ parameter_id = tvb_get_guint8(tvb, offset);
+ parameter_length = tvb_get_guint8(tvb, offset + 1);
+
+ if (parameter_length > 0) {
+ switch (parameter_id) {
+ case 0x00: /* Remote MainCPU Server IP Adress */
+ {
+ ep_strbuf_append_printf(strbuf, "%d", tvb_get_guint8(tvb, offset + 2));
+
+ for (i = 2; i <= parameter_length; i++) {
+ ep_strbuf_append(strbuf, ".");
+ ep_strbuf_append_printf(strbuf, "%u", tvb_get_guint8(tvb, offset+1+i));
+ }
+ break;
+ }
+ case 0x01: /* Remote MainCPU Server Port */
+ default:
+ {
+ if (parameter_length <= 8) {
+ guint64 param_value = 0;
+
+ for (i = parameter_length; i > 0; i--) {
+ param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
+ }
+ ep_strbuf_append_printf(strbuf, "%" G_GINT64_MODIFIER "u", param_value);
+ } else {
+ ep_strbuf_append_printf(strbuf, "0x%02x 0x%02x ... 0x%02x 0x%02x",
+ tvb_get_guint8(tvb, offset + 2),
+ tvb_get_guint8(tvb, offset + 3),
+ tvb_get_guint8(tvb, offset + parameter_length),
+ tvb_get_guint8(tvb, offset + 1 + parameter_length));
+ }
+ }
+ break;
+ }
+
+ ua3g_param_item = proto_tree_add_text(ua3g_body_tree, tvb, offset, parameter_length + 2,
+ "%s: %s", val_to_str_const(parameter_id, str_parameter_id, "Unknown"), strbuf->str);
+ } else {
+ ua3g_param_item = proto_tree_add_text(ua3g_body_tree, tvb, offset, parameter_length + 2,
+ "%s", val_to_str_const(parameter_id, str_parameter_id, "Unknown"));
+ }
+
+ ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1,
+ "Parameter: %s (0x%02x)",
+ val_to_str_const(parameter_id, str_parameter_id, "Unknown"), parameter_id);
+ offset++;
+ length--;
+
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1, "Length: %d", parameter_length);
+ offset++;
+ length--;
+
+ if (parameter_length > 0) {
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, parameter_length,
+ "Value: %s", strbuf->str);
+ offset += parameter_length;
+ length -= parameter_length;
+ }
+ }
+ break;
+ }
+ case 0x04: /* DEF_TONES */
+ {
+ int i, tone_nb_entries;
+ guint16 frequency_1, frequency_2;
+ signed char level_1, level_2;
+
+ tone_nb_entries = tvb_get_guint8(tvb, offset);
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "Number Of Entries: %d", tone_nb_entries);
+ offset++;
+ length--;
+
+ while (length > 0 && tone_nb_entries) {
+ for (i = 1; i <= tone_nb_entries; i++) {
+ frequency_1 = tvb_get_ntohs(tvb, offset);
+ level_1 = (signed char)(tvb_get_guint8(tvb, offset + 2)) / 2;
+ frequency_2 = tvb_get_ntohs(tvb, offset + 3);
+ level_2 = (signed char)(tvb_get_guint8(tvb, offset + 5)) / 2;
+
+ ua3g_param_item = proto_tree_add_text(ua3g_body_tree, tvb, offset, 6,
+ "Tone Pair %d: %d Hz at %d dB / %d Hz at %d dB",
+ i, frequency_1, level_1, frequency_2, level_2);
+ ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
+
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 2,
+ "Frequency 1: %d Hz", frequency_1);
+ offset += 2;
+ length -= 2;
+
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1, "Level: %d dB", level_1);
+ offset++;
+ length--;
+
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 2, "Frequency 2: %d Hz", frequency_2);
+ offset += 2;
+ length -= 2;
+
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1, "Level: %d dB", level_2);
+ offset++;
+ length--;
+ }
+ }
+ break;
+ }
+ case 0x05: /* START TONE */
+ {
+ guint8 i, tone_nb_entries, tone_direction, tone_id;
+/* guint8 i, tone_nb_entries, tone_direction, tone_id, tone_duration tone_silence; */
+ int tone_duration;
+ static const value_string str_tone_direction[] = {
+ {0x00, "On The Phone"},
+ {0x40, "To The Network"},
+ {0x80, "On The Phone and To The Network"},
+ {0, NULL}
+ };
+
+ tone_direction = tvb_get_guint8(tvb, offset) & 0xC0;
+ tone_nb_entries = tvb_get_guint8(tvb, offset);
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Direction: %s - Number Of Entries: %d",
+ val_to_str_const(tone_direction, str_tone_direction, "Unknown"), tone_nb_entries);
+ offset++;
+ length--;
+
+ while (length > 0 && tone_nb_entries) {
+ for (i = 1; i <= tone_nb_entries; i++) {
+ tone_id = tvb_get_guint8(tvb, offset);
+ tone_duration = tvb_get_ntohs(tvb, offset + 1);
+#if 0
+ tone_duration = tvb_get_guint8(tvb, offset + 1);
+ tone_silence = tvb_get_guint8(tvb, offset + 2);
+#endif
+
+ ua3g_param_item = proto_tree_add_text(ua3g_body_tree, tvb, offset, 6,
+#if 0
+ "Tone Pair %d: Id: %d, Duration: %d ms, Silence: %d ms",
+ i, tone_id, tone_duration, tone_silence);
+#endif
+ "Tone Pair %d: Id: %d, Duration: %d ms",
+ i, tone_id, tone_duration);
+ ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
+
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1,
+ "Identification: %d", tone_id);
+ offset++;
+ length--;
+
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 2,
+ "Duration: %d ms", tone_duration);
+ offset += 2;
+ length -= 2;
+
+#if 0
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1,
+ "Duration: %d ms", tone_duration);
+ offset++;
+ length--;
+
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1,
+ "Silence: %d ms", tone_silence);
+ offset++;
+ length--;
+#endif
+ }
+ }
+ break;
+ }
+ case 0x07: /* START LISTEN RTP */
+ case 0x08: /* STOP LISTEN RTP */
+ {
+ emem_strbuf_t *strbuf;
+ int i, parameter_length, parameter_id;
+
+ static const value_string str_parameter_id[] = {
+ {0x00, "Remote IP Adress "},
+ {0x01, "Remote UDP Port In "},
+ {0x02, "Remote UDP Port Out "},
+ {0x03, "Remote IP Address Out"},
+ {0x04, "Canal Number"},
+ {0, NULL}
+ };
+
+ strbuf = ep_strbuf_new_label(NULL);
+
+ while (length > 0) {
+ ep_strbuf_truncate(strbuf, 0);
+
+ parameter_id = tvb_get_guint8(tvb, offset);
+ parameter_length = tvb_get_guint8(tvb, offset + 1);
+
+ if (parameter_length > 0) {
+ switch (parameter_id) {
+ case 0x00: /* Remote IP Adress - Not for start listening rtp */
+ case 0x03: /* Remote IP Adress Out - Not for start listening rtp */
+ {
+ ep_strbuf_append_printf(strbuf, "%d", tvb_get_guint8(tvb, offset + 2));
+
+ for (i = 2; i <= parameter_length; i++) {
+ ep_strbuf_append(strbuf, ".");
+ ep_strbuf_append_printf(strbuf, "%u", tvb_get_guint8(tvb, offset+1+i));
+ }
+ break;
+ }
+ case 0x01: /* Remote UDP Port In - Not for start listening rtp */
+ case 0x02: /* Remote UDP Port Out - Not for start listening rtp */
+ case 0x04: /* Canal Number */
+ default:
+ {
+ if (parameter_length <= 8) {
+ guint64 param_value = 0;
+
+ for (i = parameter_length; i > 0; i--) {
+ param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
+ }
+ ep_strbuf_append_printf(strbuf, "%" G_GINT64_MODIFIER "u", param_value);
+ } else {
+ ep_strbuf_append_printf(strbuf, "0x%02x 0x%02x ... 0x%02x 0x%02x",
+ tvb_get_guint8(tvb, offset + 2),
+ tvb_get_guint8(tvb, offset + 3),
+ tvb_get_guint8(tvb, offset + parameter_length),
+ tvb_get_guint8(tvb, offset + 1 + parameter_length));
+ }
+ }
+ break;
+ }
+
+ ua3g_param_item = proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ parameter_length + 2, "%s: %s",
+ val_to_str_const(parameter_id, str_parameter_id, "Unknown"), strbuf->str);
+ } else {
+ ua3g_param_item = proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ parameter_length + 2, "%s",
+ val_to_str_const(parameter_id, str_parameter_id, "Unknown"));
+ }
+
+ ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1,
+ "Parameter: %s (0x%02x)",
+ val_to_str_const(parameter_id, str_parameter_id, "Unknown"), parameter_id);
+ offset++;
+ length--;
+
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1, "Length: %d", parameter_length);
+ offset++;
+ length--;
+
+ if (parameter_length > 0) {
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, parameter_length,
+ "Value: %s", strbuf->str);
+ offset += parameter_length;
+ length -= parameter_length;
+ }
+ }
+ break;
+ }
+ case 0x09: /* GET_PARAM_REQ */
+ {
+ guint8 parameter;
+ static const value_string str_parameter[] = {
+ {0x00 , "Firmware Version"},
+ {0x01 , "Firmware Version"},
+ {0x02 , "DHCP IP Address"},
+ {0x03 , "Local IP Address"},
+ {0x04 , "Subnetwork Mask"},
+ {0x05 , "Router IP Address"},
+ {0x06 , "TFTP IP Address"},
+ {0x07 , "MainCPU IP Address"},
+ {0x08 , "Default Codec"},
+ {0x09 , "Ethernet Drivers Config"},
+ {0x0A , "MAC Address"},
+ {0, NULL}
+ };
+ static value_string_ext str_parameter_ext = VALUE_STRING_EXT_INIT(str_parameter);
+
+ while (length > 0) {
+ parameter = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "%s",
+ val_to_str_ext_const(parameter, &str_parameter_ext, "Unknown"));
+ offset++;
+ length--;
+ }
+ break;
+ }
+ case 0x0A: /* SET_PARAM_REQ */
+ {
+ emem_strbuf_t *strbuf;
+ int i, parameter_id, parameter_length;
+
+ static const value_string str_parameter_id[] = {
+ {0x00 , "QOS IP TOS"},
+ {0x01 , "QOS 8021 VLID"},
+ {0x02 , "QOS 8021 PRI"},
+ {0x03 , "SNMP MIB2 SysContact"},
+ {0x04 , "SNMP MIB2 SysName"},
+ {0x05 , "SNMP MIB2 SysLocation"},
+ {0x06 , "Default Compressor"},
+ {0x07 , "Error String Net Down"},
+ {0x08 , "Error String Cable PB"},
+ {0x09 , "Error String Try Connect"},
+ {0x0A , "Error String Connected"},
+ {0x0B , "Error String Reset"},
+ {0x0C , "Error String Duplicate IP Address"},
+ {0x0D , "SNMP MIB Community"},
+ {0x0E , "TFTP Backup Sec Mode"},
+ {0x0F , "TFTP Backup IP Address"},
+ {0x10 , "Set MMI Password"},
+ {0x11 , "Set PC Port Status"},
+ {0x12 , "Record RTP Authorization"},
+ {0x13 , "Security Flags"},
+ {0x14 , "ARP Spoofing"},
+ {0x15 , "Session Param"},
+ {0x30 , "MD5 Authentication"},
+ {0, NULL}
+ };
+ static value_string_ext str_parameter_id_ext = VALUE_STRING_EXT_INIT(str_parameter_id);
+
+ strbuf = ep_strbuf_new_label(NULL);
+
+ while (length > 0) {
+ guint64 param_value = 0;
+
+ ep_strbuf_truncate(strbuf, 0);
+
+ parameter_id = tvb_get_guint8(tvb, offset);
+ parameter_length = tvb_get_guint8(tvb, offset + 1);
+
+ if (parameter_length > 0) {
+ switch (parameter_id) {
+ case 0x06: /* Compressor */
+ {
+ static const value_string str_compressor[] = {
+ {0x00, "G.711 A-law"},
+ {0x01, "G.711 mu-law"},
+ {0x0F, "G.723.1 5.3kbps"},
+ {0x10, "G.723.1 6.3kbps"},
+ {0x11, "G.729A 8 kbps"},
+ {0, NULL}
+ };
+
+ ep_strbuf_append(strbuf, val_to_str_const(tvb_get_guint8(tvb, offset + 2),
+ str_compressor, "Default Codec"));
+ break;
+ }
+ case 0x07: /* ERR STRING NET DOWN */
+ case 0x08: /* ERR STRING CABLE PB */
+ case 0x09: /* ERR STRING TRY CONNECT */
+ case 0x0A: /* ERR STRING CONNECTED */
+ case 0x0B: /* ERR STRING RESET */
+ case 0x0C: /* ERR STRING DUPLICATE IP ADDRESS */
+ {
+ ep_strbuf_append(strbuf, "\"");
+ for (i = 1; i <= parameter_length; i++) {
+ /* XXX: Advancing thru param byte by byte, yet using stringz ?? */
+ /* XXX: ! isprint() action same as for isprint() ?? */
+ if (isprint(tvb_get_guint8(tvb, offset + 1 + i)))
+ ep_strbuf_append(strbuf, tvb_get_const_stringz(tvb, offset+1+i, NULL));
+ else
+ ep_strbuf_append(strbuf, tvb_get_const_stringz(tvb, offset+1+i, NULL));
+ }
+ ep_strbuf_append(strbuf, "\"");
+ break;
+ }
+ case 0x0F: /* TFTP BACKUP IP ADDR */
+ {
+ ep_strbuf_append_printf(strbuf, "%d", tvb_get_guint8(tvb, offset + 2));
+
+ for (i = 2; i <= parameter_length; i++) {
+ ep_strbuf_append(strbuf, ".");
+ ep_strbuf_append_printf(strbuf, "%u", tvb_get_guint8(tvb, offset+1+i));
+ }
+ break;
+ }
+ case 0x11: /* Set PC Port status */
+ {
+ static const value_string str_set_pc_port_status[] = {
+ {0x00, "No PC Port Security"},
+ {0x01, "Block PC Port"},
+ {0x02, "Filter VLAN"},
+ {0, NULL}
+ };
+ ep_strbuf_append(strbuf, val_to_str_const(tvb_get_guint8(tvb, offset + 2),
+ str_set_pc_port_status, "Unknown"));
+ break;
+ }
+ case 0x12: /* Record RTP Authorization */
+ {
+ static const value_string str_enable_feature[] = {
+ {0x00, "Disable Feature"},
+ {0x01, "Enable Feature"},
+ {0, NULL}
+ };
+
+ ep_strbuf_append(strbuf, val_to_str_const(tvb_get_guint8(tvb, offset + 2),
+ str_enable_feature, "Unknown"));
+ break;
+ }
+ case 0x13: /* Security Flags */
+ {
+ ep_strbuf_append(strbuf,
+ (tvb_get_guint8(tvb, offset + 2) & 0x01) ?
+ "Filtering Activated" : "Filtering Not Active");
+ break;
+ }
+ case 0x00: /* QOS IP TOS */
+ case 0x01: /* QOS 8021 VLID */
+ case 0x02: /* QOS 8021 PRI */
+ case 0x03: /* SNMP MIB2 SYSCONTACT */
+ case 0x04: /* SNMP MIB2 SYSNAME */
+ case 0x05: /* SNMP MIB2 SYSLOCATION */
+ case 0x0D: /* SNMP MIB COMMUNITY */
+ case 0x0E: /* TFTP BACKUP SEC MODE */
+ case 0x10: /* SET MMI PASSWORD */
+ case 0x14: /* ARP Spoofing */
+ case 0x15: /* Session Param */
+ case 0x30: /* MD5 Authentication */
+ default:
+ {
+ if ((parameter_length > 0) && (parameter_length <= 8)) {
+ for (i = parameter_length; i > 0; i--) {
+ param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
+ }
+ ep_strbuf_append_printf(strbuf, "%" G_GINT64_MODIFIER "u", param_value);
+ } else if (parameter_length > 8) {
+ ep_strbuf_append_printf(strbuf, "0x%02x 0x%02x ... 0x%02x 0x%02x",
+ tvb_get_guint8(tvb, offset + 2),
+ tvb_get_guint8(tvb, offset + 3),
+ tvb_get_guint8(tvb, offset + parameter_length),
+ tvb_get_guint8(tvb, offset + 1 + parameter_length));
+ }
+ break;
+ }
+ }
+
+ ua3g_param_item = proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ parameter_length + 2, "%s: %s",
+ val_to_str_ext_const(parameter_id, &str_parameter_id_ext, "Unknown"), strbuf->str);
+ } else {
+ ua3g_param_item = proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ parameter_length + 2, "%s",
+ val_to_str_ext_const(parameter_id, &str_parameter_id_ext, "Unknown"));
+ }
+
+ ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1, "Parameter: %s (0x%02x)",
+ val_to_str_ext_const(parameter_id, &str_parameter_id_ext, "Unknown"), parameter_id);
+ offset++;
+ length--;
+
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1, "Length: %d", parameter_length);
+ offset++;
+ length--;
+
+ if (parameter_length > 0) {
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, parameter_length,
+ "Value: %s", strbuf->str);
+ offset += parameter_length;
+ length -= parameter_length;
+ }
+ }
+ break;
+ }
+ case 0x0B: /* SEND_DIGIT */
+ {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "Digit Value: %s",
+ val_to_str_ext_const(tvb_get_guint8(tvb, offset), &str_digit_ext, "Unknown"));
+ break;
+ }
+ case 0x0C: /* PAUSE_RTP */
+ case 0x0D: /* RESTART_RTP */
+ {
+ emem_strbuf_t *strbuf;
+ int i, parameter_length, parameter_id;
+
+ static const value_string str_parameter_id[] = {
+ {0x14, "Canal Identifier"},
+ {0, NULL}
+ };
+
+ strbuf = ep_strbuf_new_label(NULL);
+
+ while (length > 0) {
+ ep_strbuf_truncate(strbuf, 0);
+
+ parameter_id = tvb_get_guint8(tvb, offset);
+ parameter_length = tvb_get_guint8(tvb, offset + 1);
+
+ if (parameter_length > 0) {
+ if (parameter_length <= 8) {
+ guint64 param_value = 0;
+
+ for (i = parameter_length; i > 0; i--) {
+ param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
+ }
+ ep_strbuf_append_printf(strbuf, "%" G_GINT64_MODIFIER "u", param_value);
+ } else {
+ ep_strbuf_append_printf(strbuf, "0x%02x 0x%02x ... 0x%02x 0x%02x",
+ tvb_get_guint8(tvb, offset + 2),
+ tvb_get_guint8(tvb, offset + 3),
+ tvb_get_guint8(tvb, offset + parameter_length),
+ tvb_get_guint8(tvb, offset + 1 + parameter_length));
+ }
+
+ ua3g_param_item = proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ parameter_length + 2, "%s: %s",
+ val_to_str_const(parameter_id, str_parameter_id, "Unknown"), strbuf->str);
+ } else {
+ ua3g_param_item = proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ parameter_length + 2, "%s",
+ val_to_str_const(parameter_id, str_parameter_id, "Unknown"));
+ }
+
+ ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
+
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1,
+ "Parameter: %s (0x%02x)",
+ val_to_str_const(parameter_id, str_parameter_id, "Unknown"), parameter_id);
+ offset++;
+ length--;
+
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1, "Length: %d", parameter_length);
+ offset++;
+ length--;
+
+ if (parameter_length > 0) {
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, parameter_length,
+ "Value: %s", strbuf->str);
+ offset += parameter_length;
+ length -= parameter_length;
+ }
+ }
+ break;
+ }
+ case 0x0E: /* START_RECORD_RTP */
+ case 0x0F: /* STOP RECORD RTP */
+ {
+ emem_strbuf_t *strbuf;
+ int i, parameter_length, parameter_id;
+
+ static const value_string str_parameter_id[] = {
+ {0x00 , "Recorder Index"},
+ {0x01 , "Remote IP Address"},
+ {0x02 , "Remote UDP Port In"},
+ {0x03 , "Remote UDP Port Out"},
+ {0x04 , "Remote IP Address Out"},
+ {0x05 , "Local UDP Port In"},
+ {0x06 , "Local UDP Port Out"},
+ {0x07 , "Type Of Service"},
+ {0x08 , "Master Key For SRTP Session"},
+ {0x09 , "Master Salt Key For SRTP Session"},
+ {0x30 , "MD5 Authentication"},
+ {0, NULL}
+ };
+ static value_string_ext str_parameter_id_ext = VALUE_STRING_EXT_INIT(str_parameter_id);
+
+ strbuf = ep_strbuf_new_label(NULL);
+
+ while (length > 0) {
+ ep_strbuf_truncate(strbuf, 0);
+
+ parameter_id = tvb_get_guint8(tvb, offset);
+ parameter_length = tvb_get_guint8(tvb, offset + 1);
+
+ if (parameter_length > 0) {
+ switch (parameter_id) {
+ case 0x01: /* Remote IP Address */
+ case 0x04: /* Remote IP Address Out */
+ {
+ ep_strbuf_append_printf(strbuf, "%d", tvb_get_guint8(tvb, offset + 2));
+
+ for (i = 2; i <= parameter_length; i++) {
+ ep_strbuf_append(strbuf, ".");
+ ep_strbuf_append_printf(strbuf, "%u", tvb_get_guint8(tvb, offset+1+i));
+ }
+ break;
+ }
+ case 0x00: /* Recorder Index */
+ case 0x02: /* Remote UDP Port In */
+ case 0x03: /* Remote UDP Port Out */
+ case 0x05: /* Local UDP Port In */
+ case 0x06: /* Local UDP Port Out */
+ case 0x07: /* Type Of Service */
+ case 0x08: /* Master Key For SRTP Session */
+ case 0x09: /* Master Salt Key For SRTP Session */
+ case 0x30: /* MD5 Authentication */
+ default:
+ {
+ if (parameter_length <= 8) {
+ guint64 param_value = 0;
+
+ for (i = parameter_length; i > 0; i--) {
+ param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
+ }
+ ep_strbuf_append_printf(strbuf, "%" G_GINT64_MODIFIER "u", param_value);
+ } else {
+ ep_strbuf_append_printf(strbuf, "0x%02x 0x%02x ... 0x%02x 0x%02x",
+ tvb_get_guint8(tvb, offset + 2),
+ tvb_get_guint8(tvb, offset + 3),
+ tvb_get_guint8(tvb, offset + parameter_length),
+ tvb_get_guint8(tvb, offset + 1 + parameter_length));
+ }
+ }
+ break;
+ }
+
+ ua3g_param_item = proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ parameter_length + 2, "%s: %s",
+ val_to_str_ext_const(parameter_id, &str_parameter_id_ext, "Unknown"), strbuf->str);
+ } else {
+ ua3g_param_item = proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ parameter_length + 2, "%s",
+ val_to_str_ext_const(parameter_id, &str_parameter_id_ext, "Unknown"));
+ }
+
+ ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1,
+ "Parameter: %s (0x%02x)",
+ val_to_str_ext_const(parameter_id, &str_parameter_id_ext, "Unknown"), parameter_id);
+ offset++;
+ length--;
+
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1,
+ "Length: %d", parameter_length);
+ offset++;
+ length--;
+
+ if (parameter_length > 0) {
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, parameter_length,
+ "Value: %s", strbuf->str);
+ offset += parameter_length;
+ length -= parameter_length;
+ }
+ }
+ break;
+ }
+ case 0x06: /* STOP TONE */
+ default:
+ {
+ break;
+ }
+ }
}
/*-----------------------------------------------------------------------------
- DEBUG IN LINE - 18h (MESSAGE FROM THE TERMINAL AND FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ DEBUG IN LINE - 18h (MESSAGE FROM THE TERMINAL AND FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_debug_in_line(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo _U_,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_body_item)
+decode_debug_in_line(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo _U_,
+ guint offset, guint length, guint8 opcode _U_,
+ proto_item *ua3g_body_item)
{
- gint *lengthp = 0;
- proto_tree *ua3g_body_tree;
- int i, parameter_length;
- emem_strbuf_t *strbuf = ep_strbuf_new_label("");
-
- parameter_length = length;
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
-
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append(strbuf, "\"");
- for(i = 0; i < parameter_length; i++)
- {
- if(isprint(tvb_get_guint8(tvb, offset + i)))
- ep_strbuf_append(strbuf, tvb_get_const_stringz(tvb, offset+i, lengthp));
- else
- ep_strbuf_append(strbuf, tvb_get_const_stringz(tvb, offset+i, lengthp));
- }
- ep_strbuf_append(strbuf, "\"");
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- length,
- "Text String With Debug: %s",
- strbuf->str);
+ proto_tree *ua3g_body_tree;
+ int i, parameter_length;
+ emem_strbuf_t *strbuf;
+
+ if (!ua3g_body_item)
+ return;
+
+ parameter_length = length;
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+
+ strbuf = ep_strbuf_new_label(NULL);
+
+ ep_strbuf_append(strbuf, "\"");
+ for (i = 0; i < parameter_length; i++) {
+ /* XXX: Advancing thru param byte by byte, yet using stringz ?? */
+ /* XXX: ! isprint() action same as for isprint() ?? */
+ if (isprint(tvb_get_guint8(tvb, offset + i)))
+ ep_strbuf_append(strbuf, tvb_get_const_stringz(tvb, offset+i, NULL));
+ else
+ ep_strbuf_append(strbuf, tvb_get_const_stringz(tvb, offset+i, NULL));
+ }
+ ep_strbuf_append(strbuf, "\"");
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, length,
+ "Text String With Debug: %s", strbuf->str);
}
/*-----------------------------------------------------------------------------
- LED COMMAND - 21h (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ LED COMMAND - 21h (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_led_command(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_item,
- proto_item *ua3g_body_item)
+decode_led_command(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo,
+ guint offset, guint length, guint8 opcode _U_,
+ proto_item *ua3g_item, proto_item *ua3g_body_item)
{
- proto_tree *ua3g_body_tree;
- int command = tvb_get_guint8(tvb, offset);
- static const value_string str_command[] = {
- {0x00, "Led Off"},
- {0x01, "Led On"},
- {0x02, "Red Led Fast Flash"},
- {0x03, "Red Led Slow Flash"},
- {0x04, "Green Led On"},
- {0x05, "Green Led Fast Flash"},
- {0x06, "Green Led Slow Flash"},
- {0x07, "All Led Off"},
- {0, NULL}
- };
-
- /* add text to the frame tree */
- proto_item_append_text(ua3g_item,
- ", %s",
- val_to_str(command, str_command, "Unknown"));
- proto_item_append_text(ua3g_body_item,
- "s - %s",
- val_to_str(command, str_command, "Unknown"));
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
-
- /* add text to the frame "INFO" column */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
- val_to_str(command, str_command, "Unknown"));
-
- proto_tree_add_uint_format(ua3g_body_tree,
- hf_ua3g_command,
- tvb,
- offset,
- 1,
- command,
- "Command: %s",
- val_to_str(command, str_command, "Unknown"));
- offset++;
- length--;
-
- if(command != 0x07)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Led Number: %d",
- tvb_get_guint8(tvb, offset));
- }
+ proto_tree *ua3g_body_tree;
+ int command;
+
+ static const value_string str_command[] = {
+ {0x00, "Led Off"},
+ {0x01, "Led On"},
+ {0x02, "Red Led Fast Flash"},
+ {0x03, "Red Led Slow Flash"},
+ {0x04, "Green Led On"},
+ {0x05, "Green Led Fast Flash"},
+ {0x06, "Green Led Slow Flash"},
+ {0x07, "All Led Off"},
+ {0, NULL}
+ };
+ static value_string_ext str_command_ext = VALUE_STRING_EXT_INIT(str_command);
+
+ command = tvb_get_guint8(tvb, offset);
+
+ /* add text to the frame "INFO" column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
+ val_to_str_ext_const(command, &str_command_ext, "Unknown"));
+
+ if (!ua3g_body_item)
+ return;
+
+ /* add text to the frame tree */
+ proto_item_append_text(ua3g_item, ", %s",
+ val_to_str_ext_const(command, &str_command_ext, "Unknown"));
+ proto_item_append_text(ua3g_body_item, "s - %s",
+ val_to_str_ext_const(command, &str_command_ext, "Unknown"));
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+
+ proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_command, tvb, offset,
+ 1, command, "Command: %s",
+ val_to_str_ext_const(command, &str_command_ext, "Unknown"));
+ offset++;
+ length--;
+
+ if ((command >= 0) && (command < 7)) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Led Number: %d", tvb_get_guint8(tvb, offset));
+ }
}
/*-----------------------------------------------------------------------------
- LCD LINE 1 COMMANDS - 27h (MESSAGE FROM THE SYSTEM)
- LCD LINE 2 COMMANDS - 28h (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ LCD LINE 1 COMMANDS - 27h (MESSAGE FROM THE SYSTEM)
+ LCD LINE 2 COMMANDS - 28h (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_lcd_line_cmd(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_item,
- proto_item *ua3g_body_item)
+decode_lcd_line_cmd(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo,
+ guint offset, guint length, guint8 opcode _U_,
+ proto_item *ua3g_item, proto_item *ua3g_body_item)
{
- guint8 i, lcd_options, command, column_n;
- proto_tree *ua3g_body_tree;
- proto_item *ua3g_param_item;
- proto_tree *ua3g_param_tree;
- proto_item *ua3g_option_item;
- proto_tree *ua3g_option_tree;
- static char str_ascii[40];
-/* static char lcd_options_tab[6];*/
- static const value_string str_command[] = {
- {0, "Clear Line & Write From Column"},
- {1, "Write From Column"},
- {2, "Append To Current Line"},
- {0, NULL}
- };
- static const value_string str_enable_disable[] = {
- {0, "Disable"},
- {0, NULL}
- };
- static const value_string str_lcd_option[] = {
- {7, "Suspend Display Refresh"},
- {6, "Time Of Day Display "},
- {5, "Call Timer Display "},
- {4, "Call Timer Control "},
- {2, "Blink "},
- {0, NULL}
- };
- static const value_string str_call_timer_ctrl[] = {
- {0x00, "Call Timer Status Not Changed"},
- {0x08, "Stop Call Timer"},
- {0x10, "Start Call Timer From Current Value"},
- {0x18, "Initialize And Call Timer"},
- {0, NULL}
- };
- emem_strbuf_t *strbuf = ep_strbuf_new_label("");
-
- lcd_options = tvb_get_guint8(tvb, offset) & 0xFC;
- command = tvb_get_guint8(tvb, offset) & 0x03;
- column_n = tvb_get_guint8(tvb, offset + 1);
-
- /* add text to the frame tree */
- proto_item_append_text(ua3g_item,
- ", %s %d",
- val_to_str(command, str_command, "Unknown"),
- column_n);
- proto_item_append_text(ua3g_body_item,
- " %s %d",
- val_to_str(command, str_command, "Unknown"),
- column_n);
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
-
- /* add text to the frame "INFO" column */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, ": %s %d",
- val_to_str(command, str_command, "Unknown"),
- column_n);
-
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append(strbuf, "\"");
- for(i = 0; i < length - 2; i++)
- {
- if(isprint(tvb_get_guint8(tvb, offset + 2 + i)))
- ep_strbuf_append_printf(strbuf, "%c", tvb_get_guint8(tvb, offset + 2 + i));
- else
- ep_strbuf_append_printf(strbuf, "'0x%02x'", tvb_get_guint8(tvb, offset + 2 + i));
- }
- ep_strbuf_append(strbuf, "\"");
-
- ua3g_param_item = proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- length,
- "%s %d: %s",
- val_to_str(command, str_command, "Unknown"), column_n, str_ascii);
- ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
-
- proto_tree_add_uint_format(ua3g_body_tree,
- hf_ua3g_command,
- tvb,
- offset,
- 1,
- command,
- "Command: %s",
- val_to_str(command, str_command, "Unknown"));
- ua3g_option_item = proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "LCD Options: 0x%x",
- lcd_options);
- ua3g_option_tree = proto_item_add_subtree(ua3g_option_item, ett_ua3g_option);
-
- for(i = 2; i <= 7; i++)
- {
- int shift_value = 1 << i;
- if(i != 3)
- {
- proto_tree_add_text(ua3g_option_tree,
- tvb,
- offset,
- 1,
- "%s: %s",
- val_to_str(i, str_lcd_option, "Unknown"),
- val_to_str((tvb_get_guint8(tvb, offset) & shift_value), str_enable_disable, "Enable"));
- }
- else
- {
- i++;
- proto_tree_add_text(ua3g_option_tree,
- tvb,
- offset,
- 1,
- "%s: %s",
- val_to_str(i, str_lcd_option, "Unknown"),
- val_to_str((tvb_get_guint8(tvb, offset) & 0x18), str_call_timer_ctrl, "Unknown"));
- }
- }
- offset++;
- length--;
-
- if(command != 3)
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Starting Column: %d",
- column_n);
- else
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Unused");
-
- offset++;
- length--;
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- length,
- "ASCII Char: %s",
- str_ascii);
+ guint8 lcd_options, command, column_n;
+ guint i;
+ proto_tree *ua3g_body_tree;
+ proto_item *ua3g_param_item;
+ proto_tree *ua3g_param_tree;
+ proto_item *ua3g_option_item;
+ proto_tree *ua3g_option_tree;
+ emem_strbuf_t *strbuf;
+/* static char str_ascii[40]; */ /* XXX: value never created ? */
+/* static char lcd_options_tab[6];*/
+
+ static const value_string str_command[] = {
+ {0, "Clear Line & Write From Column"},
+ {1, "Write From Column"},
+ {2, "Append To Current Line"},
+ {0, NULL}
+ };
+ static const value_string str_lcd_option[] = {
+ {7, "Suspend Display Refresh"},
+ {6, "Time Of Day Display "},
+ {5, "Call Timer Display "},
+ {4, "Call Timer Control "},
+ {2, "Blink "},
+ {0, NULL}
+ };
+ static const value_string str_call_timer_ctrl[] = {
+ {0x00, "Call Timer Status Not Changed"},
+ {0x01, "Stop Call Timer"},
+ {0x02, "Start Call Timer From Current Value"},
+ {0x03, "Initialize And Call Timer"},
+ {0, NULL}
+ };
+
+ lcd_options = tvb_get_guint8(tvb, offset) & 0xFC;
+ command = tvb_get_guint8(tvb, offset) & 0x03;
+ column_n = tvb_get_guint8(tvb, offset + 1);
+
+ /* add text to the frame "INFO" column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, ": %s %d",
+ val_to_str_const(command, str_command, "Unknown"),
+ column_n);
+
+ if (!ua3g_body_item)
+ return;
+
+ strbuf = ep_strbuf_new_label(NULL);
+
+ /* add text to the frame tree */
+ proto_item_append_text(ua3g_item, ", %s %d",
+ val_to_str_const(command, str_command, "Unknown"),
+ column_n);
+ proto_item_append_text(ua3g_body_item, " %s %d",
+ val_to_str_const(command, str_command, "Unknown"),
+ column_n);
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+
+ ep_strbuf_append(strbuf, "\"");
+ for (i = 0; i < length - 2; i++) {
+ if (isprint(tvb_get_guint8(tvb, offset + 2 + i)))
+ ep_strbuf_append_printf(strbuf, "%c", tvb_get_guint8(tvb, offset + 2 + i));
+ else
+ ep_strbuf_append_printf(strbuf, "'0x%02x'", tvb_get_guint8(tvb, offset + 2 + i));
+ }
+ ep_strbuf_append(strbuf, "\"");
+
+ ua3g_param_item = proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ length, "%s %d: %s",
+ val_to_str_const(command, str_command, "Unknown"), column_n, /*str_ascii*/ strbuf->str);
+ ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
+
+ proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_command, tvb, offset,
+ 1, command, "Command: %s",
+ val_to_str_const(command, str_command, "Unknown"));
+ ua3g_option_item = proto_tree_add_text(ua3g_param_tree, tvb, offset,
+ 1, "LCD Options: 0x%x", lcd_options);
+ ua3g_option_tree = proto_item_add_subtree(ua3g_option_item, ett_ua3g_option);
+
+ for (i = 2; i <= 7; i++) {
+ if (i != 3) {
+ proto_tree_add_text(ua3g_option_tree, tvb, offset, 1, "%s: %s",
+ val_to_str_const(i, str_lcd_option, "Unknown"),
+ (lcd_options & (1 << i)) ? "Enable" : "Disable");
+ } else {
+ i++;
+ proto_tree_add_text(ua3g_option_tree, tvb, offset, 1, "%s: %s",
+ val_to_str_const(i, str_lcd_option, "Unknown"),
+ val_to_str_const((lcd_options >> 3) & 0x03, str_call_timer_ctrl, "Unknown"));
+ }
+ }
+ offset++;
+ length--;
+
+ if (command != 3)
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1, "Starting Column: %d", column_n);
+ else
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1, "Unused");
+
+ offset++;
+ length--;
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, length, "ASCII Char: %s", /*str_ascii*/ strbuf->str);
}
/*-----------------------------------------------------------------------------
- MAIN VOICE MODE - 29h (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ MAIN VOICE MODE - 29h (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_main_voice_mode(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_item,
- proto_item *ua3g_body_item)
+decode_main_voice_mode(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo,
+ guint offset, guint length, guint8 opcode _U_,
+ proto_item *ua3g_item, proto_item *ua3g_body_item)
{
- guint8 mode = tvb_get_guint8(tvb, offset);
- proto_tree *ua3g_body_tree;
- static const value_string str_voice_mode[] = {
- {0x00, "Idle"},
- {0x01, "Handset"},
- {0x02, "Group Listening"},
- {0x03, "On Hook Dial"},
- {0x04, "Handsfree"},
- {0x05, "Announce Loudspeaker"},
- {0x06, "Ringing"},
- {0x10, "Idle"},
- {0x11, "Handset"},
- {0x12, "Headset"},
- {0x13, "Handsfree"},
- {0, NULL}
- };
-
- /* add text to the frame tree */
- proto_item_append_text(ua3g_item,
- ", %s",
- val_to_str(mode, str_voice_mode, "Unknown"));
- proto_item_append_text(ua3g_body_item,
- " - %s",
- val_to_str(mode, str_voice_mode, "Unknown"));
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
-
- /* add text to the frame "INFO" column */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
- val_to_str(mode, str_voice_mode, "Unknown"));
-
- proto_tree_add_uint_format(ua3g_body_tree,
- hf_ua3g_command,
- tvb,
- offset,
- 1,
- mode,
- "Voice Mode: %s",
- val_to_str(mode, str_voice_mode, "Unknown"));
- offset++;
- length--;
-
- switch(mode)
- {
- case 0x06: /* Ringing */
- {
- static const value_string str_cadence[] = {
- {0x00, "Standard Ringing"},
- {0x01, "Double Burst"},
- {0x02, "Triple Burst"},
- {0x03, "Continuous Ringing"},
- {0x04, "Priority Attendant Ringing"},
- {0x05, "Regular Attendant Ringing"},
- {0x06, "Programmable Cadence"},
- {0x07, "Programmable Cadence"},
- {0, NULL}
- };
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Tune: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Cadence: %s (%d)",
- val_to_str(tvb_get_guint8(tvb, offset), str_cadence, "Unknown"),
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- }
- case 0x02: /* Group Listening */
- case 0x03: /* On Hook Dial */
- case 0x04: /* Handsfree */
- case 0x05: /* Announce Loudspeaker */
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Speaker Volume: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
-
- if(length > 0)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Microphone Volume: %d",
- tvb_get_guint8(tvb, offset));
- }
- break;
- }
- case 0x11: /* Handset */
- case 0x12: /* Headset */
- case 0x13: /* Handsfree */
- {
- signed char level;
- static const value_string str_receiving_level[] = {
- {0x11, "Receiving Level "},
- {0x12, "Receiving Level "},
- {0x13, "Speaker Level "},
- {0, NULL}
- };
-
- level = (signed char)(tvb_get_guint8(tvb, offset)) / 2;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "%s: %d dB",
- val_to_str(mode, str_receiving_level, "Unknown"), level);
- offset++;
- length--;
-
- level = (signed char)(tvb_get_guint8(tvb, offset)) / 2;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Sending Level : %d dB",
- level);
- break;
- }
- case 0x00: /* Idle */
- case 0x01: /* Handset */
- case 0x10: /* Idle */
- default:
- {
- break;
- }
- }
+ guint8 mode;
+ proto_tree *ua3g_body_tree;
+
+ static const value_string str_voice_mode[] = {
+ {0x00, "Idle"},
+ {0x01, "Handset"},
+ {0x02, "Group Listening"},
+ {0x03, "On Hook Dial"},
+ {0x04, "Handsfree"},
+ {0x05, "Announce Loudspeaker"},
+ {0x06, "Ringing"},
+ {0x10, "Idle"},
+ {0x11, "Handset"},
+ {0x12, "Headset"},
+ {0x13, "Handsfree"},
+ {0, NULL}
+ };
+ static value_string_ext str_voice_mode_ext = VALUE_STRING_EXT_INIT(str_voice_mode);
+
+ mode = tvb_get_guint8(tvb, offset);
+
+ /* add text to the frame "INFO" column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
+ val_to_str_ext_const(mode, &str_voice_mode_ext, "Unknown"));
+
+ if (!ua3g_body_item)
+ return;
+
+ /* add text to the frame tree */
+ proto_item_append_text(ua3g_item, ", %s",
+ val_to_str_ext_const(mode, &str_voice_mode_ext, "Unknown"));
+ proto_item_append_text(ua3g_body_item, " - %s",
+ val_to_str_ext_const(mode, &str_voice_mode_ext, "Unknown"));
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+
+ proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_command, tvb, offset,
+ 1, mode, "Voice Mode: %s",
+ val_to_str_ext_const(mode, &str_voice_mode_ext, "Unknown"));
+ offset++;
+ length--;
+
+ switch (mode) {
+ case 0x06: /* Ringing */
+ {
+ static const value_string str_cadence[] = {
+ {0x00, "Standard Ringing"},
+ {0x01, "Double Burst"},
+ {0x02, "Triple Burst"},
+ {0x03, "Continuous Ringing"},
+ {0x04, "Priority Attendant Ringing"},
+ {0x05, "Regular Attendant Ringing"},
+ {0x06, "Programmable Cadence"},
+ {0x07, "Programmable Cadence"},
+ {0, NULL}
+ };
+ static value_string_ext str_cadence_ext = VALUE_STRING_EXT_INIT(str_cadence);
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Tune: %d", tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Cadence: %s (%d)",
+ val_to_str_ext_const(tvb_get_guint8(tvb, offset), &str_cadence_ext, "Unknown"),
+ tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ }
+ /* FALLTHROUGH */
+ case 0x02: /* Group Listening */
+ case 0x03: /* On Hook Dial */
+ case 0x04: /* Handsfree */
+ case 0x05: /* Announce Loudspeaker */
+ {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Speaker Volume: %d",
+ tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+
+ if (length > 0) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ 1, "Microphone Volume: %d",
+ tvb_get_guint8(tvb, offset));
+ }
+ break;
+ }
+ case 0x11: /* Handset */
+ case 0x12: /* Headset */
+ case 0x13: /* Handsfree */
+ {
+ signed char level;
+ static const value_string str_receiving_level[] = {
+ {0x11, "Receiving Level "},
+ {0x12, "Receiving Level "},
+ {0x13, "Speaker Level "},
+ {0, NULL}
+ };
+
+ level = (signed char)(tvb_get_guint8(tvb, offset)) / 2;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "%s: %d dB",
+ val_to_str_const(mode, str_receiving_level, "Unknown"), level);
+ offset++;
+ length--;
+
+ level = (signed char)(tvb_get_guint8(tvb, offset)) / 2;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Sending Level: %d dB", level);
+ break;
+ }
+ case 0x00: /* Idle */
+ case 0x01: /* Handset */
+ case 0x10: /* Idle */
+ default:
+ {
+ break;
+ }
+ }
}
/*-----------------------------------------------------------------------------
- SUBDEVICE METASTATE - 2Ch (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ SUBDEVICE METASTATE - 2Ch (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_subdevice_metastate(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo _U_,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_body_item)
+decode_subdevice_metastate(proto_tree *tree _U_, tvbuff_t *tvb,
+ packet_info *pinfo _U_, guint offset, guint length,
+ guint8 opcode _U_, proto_item *ua3g_body_item)
{
- proto_tree *ua3g_body_tree;
- static const value_string str_new_metastate[] = {
- {0x00, "Disable"},
- {0x01, "Active"},
- {0x02, "Wake Up"},
- {0, NULL}
- };
-
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Subchannel Address: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "New Metastate: %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_new_metastate, "Unknown"));
+ proto_tree *ua3g_body_tree;
+ static const value_string str_new_metastate[] = {
+ {0x00, "Disable"},
+ {0x01, "Active"},
+ {0x02, "Wake Up"},
+ {0, NULL}
+ };
+
+ if (!ua3g_body_item)
+ return;
+
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Subchannel Address: %d", tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "New Metastate: %s",
+ val_to_str_const(tvb_get_guint8(tvb, offset), str_new_metastate, "Unknown"));
}
/*-----------------------------------------------------------------------------
- Download DTMF & CLOCK FORMAT - 30h (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ Download DTMF & CLOCK FORMAT - 30h (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_dwl_dtmf_clck_format(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo _U_,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_body_item)
+decode_dwl_dtmf_clck_format(proto_tree *tree _U_, tvbuff_t *tvb,
+ packet_info *pinfo _U_, guint offset, guint length,
+ guint8 opcode _U_, proto_item *ua3g_body_item)
{
- proto_tree *ua3g_body_tree;
- static const value_string str_clock_format[] = {
- {0, "Europe"},
- {1, "US"},
- {0, NULL}
- };
-
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Minimum 'ON' Time: %d ms",
- (tvb_get_guint8(tvb, offset) * 10));
- offset++;
- length--;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Inter-Digit Pause Time: %d ms",
- (tvb_get_guint8(tvb, offset) * 10));
- offset++;
- length--;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Clock Time Format: %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_clock_format, "Unknown"));
- offset++;
- length--;
-
- if(length > 0)
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "DTMF Country Adaptation: %d",
- tvb_get_guint8(tvb, offset));
+ proto_tree *ua3g_body_tree;
+
+ static const value_string str_clock_format[] = {
+ {0, "Europe"},
+ {1, "US"},
+ {0, NULL}
+ };
+
+ if (!ua3g_body_item)
+ return;
+
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Minimum 'ON' Time: %d ms", (tvb_get_guint8(tvb, offset) * 10));
+ offset++;
+ length--;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Inter-Digit Pause Time: %d ms",
+ (tvb_get_guint8(tvb, offset) * 10));
+ offset++;
+ length--;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Clock Time Format: %s",
+ val_to_str_const(tvb_get_guint8(tvb, offset), str_clock_format, "Unknown"));
+ offset++;
+ length--;
+
+ if (length > 0)
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "DTMF Country Adaptation: %d", tvb_get_guint8(tvb, offset));
}
/*-----------------------------------------------------------------------------
- SET CLOCK - 31h (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ SET CLOCK - 31h (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_set_clck(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_item,
- proto_item *ua3g_body_item)
+decode_set_clck(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo,
+ guint offset, guint length, guint8 opcode _U_,
+ proto_item *ua3g_item, proto_item *ua3g_body_item)
{
- guint8 command = tvb_get_guint8(tvb, offset);
- proto_tree *ua3g_body_tree;
- proto_item *ua3g_param_item;
- proto_tree *ua3g_param_tree;
- int hour, minute, second, call_timer;
- static const value_string str_command[] = {
- {0x00, "Set Current Time/Call Timer"},
- {0x01, "Set Current Time"},
- {0x02, "Set Call Timer"},
- {0, NULL}
- };
-
- /* add text to the frame tree */
- proto_item_append_text(ua3g_item,
- ", %s",
- val_to_str(command, str_command, "Unknown"));
- proto_item_append_text(ua3g_body_item,
- " - %s",
- val_to_str(command, str_command, "Unknown"));
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
-
- /* add text to the frame "INFO" column */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
- val_to_str(command, str_command, "Unknown"));
-
- proto_tree_add_uint_format(ua3g_body_tree,
- hf_ua3g_command,
- tvb,
- offset,
- 1,
- command,
- "Command: %s",
- val_to_str(command, str_command, "Unknown"));
- offset++;
- length--;
- call_timer = 0;
-
- switch(command)
- {
- case 0x02: /* Timer Form */
- {
- call_timer = 1;
- }
- case 0x00: /* Set Current Time/Call Timer */
- case 0x01: /* Set Current Time */
- {
- static const value_string str_call_timer[] = {
- {1, "Call Timer "},
- {0, NULL}
- };
-
- while(length > 0)
- {
- hour = tvb_get_guint8(tvb, offset);
- minute = tvb_get_guint8(tvb, offset + 1);
- second = tvb_get_guint8(tvb, offset + 2);
-
- ua3g_param_item = proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 3,
- "%s: %d:%d:%d",
- val_to_str(call_timer, str_call_timer, "Current Time"), hour, minute, second);
- ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "%sHour: %d",
- val_to_str(call_timer, str_call_timer, ""), hour);
- offset++;
- length--;
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "%sMinute: %d",
- val_to_str(call_timer, str_call_timer, ""), minute);
- offset++;
- length--;
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "%sSecond: %d",
- val_to_str(call_timer, str_call_timer, ""), second);
- offset++;
- length--;
-
- call_timer = 1;
- }
- }
- default:
- {
- break;
- }
- }
+ guint8 command;
+ proto_tree *ua3g_body_tree;
+ proto_item *ua3g_param_item;
+ proto_tree *ua3g_param_tree;
+ int hour, minute, second, call_timer;
+
+ static const value_string str_command[] = {
+ {0x00, "Set Current Time/Call Timer"},
+ {0x01, "Set Current Time"},
+ {0x02, "Set Call Timer"},
+ {0, NULL}
+ };
+
+ command = tvb_get_guint8(tvb, offset);
+
+ /* add text to the frame "INFO" column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
+ val_to_str_const(command, str_command, "Unknown"));
+
+ if (!ua3g_body_item)
+ return;
+
+ /* add text to the frame tree */
+ proto_item_append_text(ua3g_item, ", %s",
+ val_to_str_const(command, str_command, "Unknown"));
+ proto_item_append_text(ua3g_body_item, " - %s",
+ val_to_str_const(command, str_command, "Unknown"));
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+
+ proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_command, tvb, offset,
+ 1, command, "Command: %s",
+ val_to_str_const(command, str_command, "Unknown"));
+ offset++;
+ length--;
+ call_timer = 0;
+
+ switch (command) {
+ case 0x02: /* Timer Form */
+ {
+ call_timer = 1;
+ }
+ /* FALLTHROUGH */
+ case 0x00: /* Set Current Time/Call Timer */
+ case 0x01: /* Set Current Time */
+ {
+ static const value_string str_call_timer[] = {
+ {1, "Call Timer "},
+ {0, NULL}
+ };
+
+ while (length > 0) {
+ hour = tvb_get_guint8(tvb, offset);
+ minute = tvb_get_guint8(tvb, offset + 1);
+ second = tvb_get_guint8(tvb, offset + 2);
+
+ ua3g_param_item = proto_tree_add_text(ua3g_body_tree, tvb, offset, 3,
+ "%s: %d:%d:%d",
+ val_to_str_const(call_timer, str_call_timer, "Current Time"), hour, minute, second);
+ ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1, "%sHour: %d",
+ val_to_str_const(call_timer, str_call_timer, ""), hour);
+ offset++;
+ length--;
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1, "%sMinute: %d",
+ val_to_str_const(call_timer, str_call_timer, ""), minute);
+ offset++;
+ length--;
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1, "%sSecond: %d",
+ val_to_str_const(call_timer, str_call_timer, ""), second);
+ offset++;
+ length--;
+
+ call_timer = 1;
+ }
+ }
+ default:
+ {
+ break;
+ }
+ }
}
/*-----------------------------------------------------------------------------
- VOICE CHANNEL - 32h - (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ VOICE CHANNEL - 32h - (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_voice_channel(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo _U_,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_body_item)
+decode_voice_channel(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo _U_,
+ guint offset, guint length, guint8 opcode _U_,
+ proto_item *ua3g_body_item)
{
- proto_tree *ua3g_body_tree;
- static const value_string str_v[] = {
- {0x00, "Normal Voice Channel Mode"},
- {0x01, "Write 00 to Voice Channel"},
- {0, NULL}
- };
- static const value_string str_c[] = {
- {0x00, "Normal Codec Operation"},
- {0x02, "Write Quiet To Codec"},
- {0, NULL}
- };
- static const value_string str_b[] = {
- {0x00, "Use B1 As Voice Channel"},
- {0x04, "Use B3 As Voice Channel"},
- {0, NULL}
- };
- static const value_string str_voice_channel[] = {
- {0x00, "No"},
- {0x01, "B1"},
- {0x02, "B2"},
- {0x03, "B3"},
- {0, NULL}
- };
-
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
-
- if(length == 1)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "%s",
- val_to_str((tvb_get_guint8(tvb, offset) & 0x01), str_v, "Unknown"));
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "%s",
- val_to_str((tvb_get_guint8(tvb, offset) & 0x02), str_c, "Unknown"));
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "%s",
- val_to_str((tvb_get_guint8(tvb, offset) & 0x04), str_b, "Unknown"));
- offset++;
- length--;
- }
-
- else if(length == 2)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Main Voice: %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_voice_channel, "Unknown"));
- offset++;
- length--;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Announce: %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_voice_channel, "Unknown"));
- offset++;
- length--;
- }
-
- else if(length == 4)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "B General: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "B Loud Speaker: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "B Ear Piece: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "B Microphones: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- }
+ proto_tree *ua3g_body_tree;
+
+ static const value_string str_voice_channel[] = {
+ {0x00, "No"},
+ {0x01, "B1"},
+ {0x02, "B2"},
+ {0x03, "B3"},
+ {0, NULL}
+ };
+
+ if (!ua3g_body_item)
+ return;
+
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+
+ if (length == 1) {
+ guint8 val = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "%s",
+ (val & 0x01) ? "Write 00 to Voice Channel" : "Normal Voice Channel Mode");
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "%s",
+ (val & 0x02) ? "Write Quiet To Codec" : "Normal Codec Operation");
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "%s",
+ (val & 0x04) ? "Use B3 As Voice Channel" : "Use B1 As Voice Channel");
+ offset++;
+ length--;
+ } else if (length == 2) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "Main Voice: %s",
+ val_to_str_const(tvb_get_guint8(tvb, offset), str_voice_channel, "Unknown"));
+ offset++;
+ length--;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "Announce: %s",
+ val_to_str_const(tvb_get_guint8(tvb, offset), str_voice_channel, "Unknown"));
+ offset++;
+ length--;
+ } else if (length == 4) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "B General: %d",
+ tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "B Loud Speaker: %d",
+ tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "B Ear Piece: %d",
+ tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "B Microphones: %d",
+ tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ }
}
/*-----------------------------------------------------------------------------
- EXTERNAL RINGING - 33h (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ EXTERNAL RINGING - 33h (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_external_ringing(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo,
- guint offset,
- guint length _U_,
- guint8 opcode _U_,
- proto_item *ua3g_item,
- proto_item *ua3g_body_item)
+decode_external_ringing(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo,
+ guint offset, guint length _U_, guint8 opcode _U_,
+ proto_item *ua3g_item, proto_item *ua3g_body_item)
{
- proto_tree *ua3g_body_tree;
- static const value_string str_ext_ring_cmd[] = {
- {0x00, "Turn Off"},
- {0x01, "Turn On"},
- {0x02, "Follow The Normal Ringing"},
- {0, NULL}
- };
-
- /* add text to the frame tree */
- proto_item_append_text(ua3g_item,
- ", %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_ext_ring_cmd, "Unknown"));
- proto_item_append_text(ua3g_body_item,
- " - %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_ext_ring_cmd, "Unknown"));
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
-
- /* add text to the frame "INFO" column */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_ext_ring_cmd, "Unknown"));
-
- proto_tree_add_uint_format(ua3g_body_tree,
- hf_ua3g_command,
- tvb,
- offset,
- 1,
- tvb_get_guint8(tvb, offset),
- "External Ringing Command: %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_ext_ring_cmd, "Unknown"));
+ proto_tree *ua3g_body_tree;
+ guint8 command;
+
+ static const value_string str_ext_ring_cmd[] = {
+ {0x00, "Turn Off"},
+ {0x01, "Turn On"},
+ {0x02, "Follow The Normal Ringing"},
+ {0, NULL}
+ };
+
+ command = tvb_get_guint8(tvb, offset);
+
+ /* add text to the frame "INFO" column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
+ val_to_str_const(command, str_ext_ring_cmd, "Unknown"));
+
+ if (!ua3g_body_item)
+ return;
+
+ /* add text to the frame tree */
+ proto_item_append_text(ua3g_item, ", %s",
+ val_to_str_const(command, str_ext_ring_cmd, "Unknown"));
+ proto_item_append_text(ua3g_body_item, " - %s",
+ val_to_str_const(command, str_ext_ring_cmd, "Unknown"));
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+
+ proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_command, tvb, offset, 1,
+ tvb_get_guint8(tvb, offset), "External Ringing Command: %s",
+ val_to_str_const(command, str_ext_ring_cmd, "Unknown"));
}
/*-----------------------------------------------------------------------------
- LCD CURSOR - 35h - (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ LCD CURSOR - 35h - (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_lcd_cursor(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_item,
- proto_item *ua3g_body_item)
+decode_lcd_cursor(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo,
+ guint offset, guint length, guint8 opcode _U_,
+ proto_item *ua3g_item, proto_item *ua3g_body_item)
{
- proto_tree *ua3g_body_tree;
-
- /* add text to the frame tree */
- proto_item_append_text(ua3g_item,
- ", %s",
- val_to_str((tvb_get_guint8(tvb, offset + 1) & 0x02), str_on_off, "On"));
- proto_item_append_text(ua3g_body_item,
- " - %s",
- val_to_str((tvb_get_guint8(tvb, offset + 1) & 0x02), str_on_off, "On"));
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
-
- /* add text to the frame "INFO" column */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
- val_to_str((tvb_get_guint8(tvb, offset + 1) & 0x02), str_on_off, "On"));
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Line Number: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
-
- proto_tree_add_uint_format(ua3g_body_tree,
- hf_ua3g_command,
- tvb,
- offset,
- 1,
- tvb_get_guint8(tvb, offset),
- "Cursor %s",
- val_to_str((tvb_get_guint8(tvb, offset) & 0x02), str_on_off, "On"));
+ proto_tree *ua3g_body_tree;
+ guint8 str_on_off_val;
+
+ str_on_off_val = tvb_get_guint8(tvb, offset + 1) & 0x02;
+
+ /* add text to the frame "INFO" column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
+ STR_ON_OFF(str_on_off_val));
+
+ if (!ua3g_body_item)
+ return;
+
+ /* add text to the frame tree */
+ proto_item_append_text(ua3g_item, ", %s",
+ STR_ON_OFF(str_on_off_val));
+ proto_item_append_text(ua3g_body_item, " - %s",
+ STR_ON_OFF(str_on_off_val));
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Line Number: %d", tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+
+ proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_command, tvb, offset, 1,
+ tvb_get_guint8(tvb, offset), "Cursor %s",
+ STR_ON_OFF(tvb_get_guint8(tvb, offset) & 0x02));
}
/*-----------------------------------------------------------------------------
- DOWNLOAD SPECIAL CHARACTER - 36h - (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ DOWNLOAD SPECIAL CHARACTER - 36h - (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_dwl_special_char(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo _U_,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_body_item)
+decode_dwl_special_char(proto_tree *tree _U_, tvbuff_t *tvb,
+ packet_info *pinfo _U_, guint offset, guint length,
+ guint8 opcode _U_, proto_item *ua3g_body_item)
{
- proto_tree *ua3g_body_tree;
- int i, j;
- emem_strbuf_t *strbuf = ep_strbuf_new_label("");
-
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
-
- while(length > 0)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Character Number: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- for(i = 1; i <= 8; i++)
- {
- int byte = tvb_get_guint8(tvb, offset);
- char byte_char[20] = " ";
-
- /* The following loop will draw a picture of the character with "spaces" and "o" */
- for(j = 7; j >= 0; j--)
- {
- if(((byte >> j) & 0x01) == 0)
- ep_strbuf_append_printf(strbuf, " ");
- else
- ep_strbuf_append_printf(strbuf, "o ");
- }
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Byte %d: 0x%02x %s",
- i, byte, byte_char);
- offset++;
- length--;
- }
- }
+ proto_tree *ua3g_body_tree;
+ int i, j;
+ emem_strbuf_t *strbuf;
+
+ if (!ua3g_body_item)
+ return;
+
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+
+ strbuf = ep_strbuf_new_label(NULL);
+
+ while (length > 0) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Character Number: %d", tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ for (i = 1; i <= 8; i++) {
+ int byte = tvb_get_guint8(tvb, offset);
+
+ /* The following loop will draw a picture of the character with "spaces" and "o" */
+ ep_strbuf_truncate(strbuf, 0);
+ for (j = 7; j >= 0; j--) {
+ if (((byte >> j) & 0x01) == 0)
+ ep_strbuf_append_printf(strbuf, " ");
+ else
+ ep_strbuf_append_printf(strbuf, "o ");
+ }
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Byte %d: 0x%02x %s", i, byte, strbuf->str);
+ offset++;
+ length--;
+ }
+ }
}
/*-----------------------------------------------------------------------------
- SET CLOCK/TIMER POSITION - 38h - (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ SET CLOCK/TIMER POSITION - 38h - (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_set_clck_timer_pos(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo _U_,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_body_item)
+decode_set_clck_timer_pos(proto_tree *tree _U_, tvbuff_t *tvb,
+ packet_info *pinfo _U_, guint offset, guint length,
+ guint8 opcode _U_, proto_item *ua3g_body_item)
{
- proto_tree *ua3g_body_tree;
-
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Clock Line Number: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Clock Column Number: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Call Timer Line Number: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Call Timer Column Number: %d",
- tvb_get_guint8(tvb, offset));
+ proto_tree *ua3g_body_tree;
+
+ if (!ua3g_body_item)
+ return;
+
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Clock Line Number: %d", tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Clock Column Number: %d", tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Call Timer Line Number: %d", tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Call Timer Column Number: %d", tvb_get_guint8(tvb, offset));
}
/*-----------------------------------------------------------------------------
- SET LCD CONTRAST - 39h - (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ SET LCD CONTRAST - 39h - (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_set_lcd_contrast(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo _U_,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_body_item)
+decode_set_lcd_contrast(proto_tree *tree _U_, tvbuff_t *tvb,
+ packet_info *pinfo _U_, guint offset, guint length,
+ guint8 opcode _U_, proto_item *ua3g_body_item)
{
- proto_tree *ua3g_body_tree;
- static const value_string str_driver_number[] = {
- {0x00, "Display"},
- {0x01, "Icon"},
- {0, NULL}
- };
-
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Driver Number: %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_driver_number, "Unknown"));
- offset++;
- length--;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Contrast Value: %d",
- tvb_get_guint8(tvb, offset));
+ proto_tree *ua3g_body_tree;
+ static const value_string str_driver_number[] = {
+ {0x00, "Display"},
+ {0x01, "Icon"},
+ {0, NULL}
+ };
+
+ if (!ua3g_body_item)
+ return;
+
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Driver Number: %s",
+ val_to_str_const(tvb_get_guint8(tvb, offset), str_driver_number, "Unknown"));
+ offset++;
+ length--;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Contrast Value: %d", tvb_get_guint8(tvb, offset));
}
/*-----------------------------------------------------------------------------
- BEEP - 3Ch (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ BEEP - 3Ch (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_beep(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_item,
- proto_item *ua3g_body_item)
+decode_beep(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo,
+ guint offset, guint length, guint8 opcode _U_,
+ proto_item *ua3g_item, proto_item *ua3g_body_item)
{
- emem_strbuf_t *strbuf = ep_strbuf_new_label("");
- if(length > 0) /* All cases except classical beep */
- {
- guint8 command = tvb_get_guint8(tvb, offset);
- proto_tree *ua3g_body_tree;
- static const value_string str_command[] = {
- {0x01, "Beep Once"},
- {0x02, "Beep Start"},
- {0x03, "Stop Beep"},
- {0x04, "Start Beep"},
- {0x05, "Define Beep"},
- {0, NULL}
- };
-
- /* add text to the frame tree */
- proto_item_append_text(ua3g_item,
- ", %s",
- val_to_str(command, str_command, "Unknown"));
- proto_item_append_text(ua3g_body_item,
- " - %s",
- val_to_str(command, str_command, "Unknown"));
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
-
- /* add text to the frame "INFO" column */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
- val_to_str(command, str_command, "Unknown"));
-
- proto_tree_add_uint_format(ua3g_body_tree,
- hf_ua3g_command,
- tvb,
- offset,
- 1,
- command,
- "Beep: %s",
- val_to_str(command, str_command, "Unknown"));
- offset++;
- length--;
-
- switch(command)
- {
- case 0x01: /* Beep Once */
- case 0x02: /* Beep Start */
- {
- int i = 0;
- static const value_string str_destination[] = {
- {0x01, "Ear-Piece"},
- {0x02, "Loudspeaker"},
- {0x02, "Ear-Piece and Loudspeaker"},
- {0, NULL}
- };
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Destination: %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_destination, "Unknown"));
- offset++;
- length--;
-
- while(length > 0)
- {
- i++;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "On / Off: %s",
- val_to_str((tvb_get_guint8(tvb, offset) & 0x80), str_on_off, "On"));
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Cadence T%d: %d ms",
- i, ((tvb_get_guint8(tvb, offset) & 0x7F) * 10));
- offset++;
- length--;
- }
- break;
- }
- case 0x04: /* Start Beep */
- {
- int i;
- static const value_string str_destination[] = {
- {0x01, "Handset"},
- {0x02, "Headset"},
- {0x04, "Loudspeaker"},
- {0x08, "Announce Loudspeaker"},
- {0x10, "Handsfree"},
- {0, NULL}
- };
-
- ep_strbuf_append_printf(strbuf,
- "%s",
- val_to_str((tvb_get_guint8(tvb, offset) & 0x01), str_destination, ""));
- for(i = 1; i < 5; i++)
- {
- ep_strbuf_append(strbuf,
- val_to_str((tvb_get_guint8(tvb, offset) & (0x01 << i)), str_destination, ""));
- }
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Destination: %s",
- strbuf->str);
- offset++;
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Beep Number: %x",
- tvb_get_guint8(tvb, offset));
- break;
- }
- case 0x05:
- {
- int i, nb_of_notes, beep_number;
- static const value_string str_freq_sample_nb[] = {
- {0x00, "Frequency"},
- {0xFF, "Audio Sample Number"},
- {0, NULL}
- };
- static const value_string str_duration[] = {
- {0x00, "Duration "},
- {0xFF, "Duration (Ignored)"},
- {0, NULL}
- };
- static const value_string str_terminator[] = {
- {0xFD, "Stop"},
- {0xFE, "Loop"},
- {0xFF, "Infinite"},
- {0, NULL}
- };
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Beep Number: %x",
- beep_number = tvb_get_guint8(tvb, offset));
- offset++;
- length--;
-
- if(beep_number <= 0x44)
- beep_number = 0x00;
- else beep_number = 0xFF;
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Number Of Notes: %x",
- nb_of_notes = tvb_get_guint8(tvb, offset));
- offset++;
- length--;
-
- while(length > 0)
- {
- for(i = 1; i <= nb_of_notes; i++)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "%s %d: %d",
- val_to_str(beep_number, str_freq_sample_nb, "Unknown"),
- i, tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Level %d: %d",
- i, tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "%s %d: %x",
- val_to_str(beep_number, str_duration, "Unknown"),
- i, tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- }
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Terminator: %d (%s)",
- tvb_get_guint8(tvb, offset),
- val_to_str(tvb_get_guint8(tvb, offset), str_terminator, "Unknown"));
- offset++;
- length--;
- }
- break;
- }
- case 0x03: /* Stop Beep */
- default:
- {
- break;
- }
- }
- }
- else /* Classical Beep */
- {
- /* add text to the frame tree */
- proto_item_append_text(ua3g_item,
- ", Classical Beep");
- proto_item_append_text(ua3g_body_item,
- " - Classical Beep");
-
- /* add text to the frame "INFO" column */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, ": Classical Beep");
- }
+ if (length > 0) { /* All cases except classical beep */
+ guint8 command;
+ proto_tree *ua3g_body_tree;
+
+ static const value_string str_command[] = {
+ {0x01, "Beep Once"},
+ {0x02, "Beep Start"},
+ {0x03, "Stop Beep"},
+ {0x04, "Start Beep"},
+ {0x05, "Define Beep"},
+ {0, NULL}
+ };
+
+ command = tvb_get_guint8(tvb, offset);
+
+ /* add text to the frame "INFO" column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
+ val_to_str_const(command, str_command, "Unknown"));
+
+ if (!ua3g_body_item)
+ return;
+
+ /* add text to the frame tree */
+ proto_item_append_text(ua3g_item, ", %s",
+ val_to_str_const(command, str_command, "Unknown"));
+ proto_item_append_text(ua3g_body_item, " - %s",
+ val_to_str_const(command, str_command, "Unknown"));
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+
+ proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_command, tvb,
+ offset, 1, command, "Beep: %s",
+ val_to_str_const(command, str_command, "Unknown"));
+ offset++;
+ length--;
+
+ switch (command) {
+ case 0x01: /* Beep Once */
+ case 0x02: /* Beep Start */
+ {
+ int i = 0;
+ static const value_string str_destination[] = {
+ {0x01, "Ear-Piece"},
+ {0x02, "Loudspeaker"},
+ {0x03, "Ear-Piece and Loudspeaker"},
+ {0, NULL}
+ };
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Destination: %s",
+ val_to_str_const(tvb_get_guint8(tvb, offset), str_destination, "Unknown"));
+ offset++;
+ length--;
+
+ while (length > 0) {
+ guint8 val;
+
+ i++;
+ val = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "On / Off: %s",
+ STR_ON_OFF(val & 0x80));
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "Cadence T%d: %d ms",
+ i, ((val & 0x7F) * 10));
+ offset++;
+ length--;
+ }
+ break;
+ }
+ case 0x04: /* Start Beep */
+ {
+ guint8 beep_dest;
+ emem_strbuf_t *strbuf;
+ int i;
+
+ static const value_string str_destination[] = {
+ {0x01, "Handset"},
+ {0x02, "Headset"},
+ {0x04, "Loudspeaker"},
+ {0x08, "Announce Loudspeaker"},
+ {0x10, "Handsfree"},
+ {0, NULL}
+ };
+
+ beep_dest = tvb_get_guint8(tvb, offset);
+
+ strbuf = ep_strbuf_new_label(NULL);
+
+ for (i = 0; i < 5; i++) {
+ ep_strbuf_append(strbuf,
+ val_to_str_const(beep_dest & (0x01 << i), str_destination, ""));
+ }
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Destination: %s", strbuf->str);
+ offset++;
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Beep Number: %x", tvb_get_guint8(tvb, offset));
+ break;
+ }
+ case 0x05:
+ {
+ int i, nb_of_notes, beep_number;
+
+ static const value_string str_freq_sample_nb[] = {
+ {0x00, "Frequency"},
+ {0xFF, "Audio Sample Number"},
+ {0, NULL}
+ };
+ static const value_string str_duration[] = {
+ {0x00, "Duration "},
+ {0xFF, "Duration (Ignored)"},
+ {0, NULL}
+ };
+ static const value_string str_terminator[] = {
+ {0xFD, "Stop"},
+ {0xFE, "Loop"},
+ {0xFF, "Infinite"},
+ {0, NULL}
+ };
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Beep Number: %x", beep_number = tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+
+ if (beep_number <= 0x44)
+ beep_number = 0x00;
+ else
+ beep_number = 0xFF;
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Number Of Notes: %x", nb_of_notes = tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+
+ while (length > 0) {
+ for (i = 1; i <= nb_of_notes; i++) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "%s %d: %d",
+ val_to_str_const(beep_number, str_freq_sample_nb, "Unknown"),
+ i, tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "Level %d: %d",
+ i, tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "%s %d: %x",
+ val_to_str(beep_number, str_duration, "Unknown"),
+ i, tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ }
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "Terminator: %d (%s)",
+ tvb_get_guint8(tvb, offset),
+ val_to_str_const(tvb_get_guint8(tvb, offset), str_terminator, "Unknown"));
+ offset++;
+ length--;
+ }
+ break;
+ }
+ case 0x03: /* Stop Beep */
+ default:
+ {
+ break;
+ }
+ }
+ } else { /* Classical Beep */
+ /* add text to the frame "INFO" column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, ": Classical Beep");
+
+ if (!ua3g_body_item)
+ return;
+
+ /* add text to the frame tree */
+ proto_item_append_text(ua3g_item, ", Classical Beep");
+ proto_item_append_text(ua3g_body_item, " - Classical Beep");
+
+ }
}
/*-----------------------------------------------------------------------------
- SIDETONE ON / OFF - 3Dh (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ SIDETONE ON / OFF - 3Dh (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_sidetone(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo,
- guint offset,
- guint length _U_,
- guint8 opcode _U_,
- proto_item *ua3g_item,
- proto_item *ua3g_body_item)
+decode_sidetone(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo,
+ guint offset, guint length _U_, guint8 opcode _U_,
+ proto_item *ua3g_item, proto_item *ua3g_body_item)
{
- guint8 command = tvb_get_guint8(tvb, offset);
- proto_tree *ua3g_body_tree;
-
- /* add text to the frame tree */
- proto_item_append_text(ua3g_item,
- ", %s",
- val_to_str(command, str_on_off, "On"));
- proto_item_append_text(ua3g_body_item,
- " - %s",
- val_to_str(command, str_on_off, "On"));
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
-
- /* add text to the frame "INFO" column */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
- val_to_str(command, str_on_off, "On"));
-
- proto_tree_add_uint_format(ua3g_body_tree,
- hf_ua3g_command,
- tvb,
- offset,
- 1,
- command,
- "Command: %s",
- val_to_str(command, str_on_off, "On"));
- offset++;
-
- if(command == 0x01)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Level: %d dB",
- (signed char)(tvb_get_guint8(tvb, offset) / 2));
- }
+ guint8 command;
+ proto_tree *ua3g_body_tree;
+
+ command = tvb_get_guint8(tvb, offset);
+
+ /* add text to the frame "INFO" column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
+ STR_ON_OFF(command));
+
+ if (!ua3g_body_item)
+ return;
+
+ /* add text to the frame tree */
+ proto_item_append_text(ua3g_item, ", %s",
+ STR_ON_OFF(command));
+ proto_item_append_text(ua3g_body_item, " - %s",
+ STR_ON_OFF(command));
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+
+ proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_command, tvb, offset,
+ 1, command, "Command: %s",
+ STR_ON_OFF(command));
+ offset++;
+
+ if (command == 0x01) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Level: %d dB",
+ (signed char)(tvb_get_guint8(tvb, offset) / 2));
+ }
}
/*-----------------------------------------------------------------------------
- SET PROGRAMMABLE RINGING CADENCE - 3Eh (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ SET PROGRAMMABLE RINGING CADENCE - 3Eh (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_ringing_cadence(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo _U_,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_body_item)
+decode_ringing_cadence(proto_tree *tree _U_, tvbuff_t *tvb,
+ packet_info *pinfo _U_, guint offset, guint length,
+ guint8 opcode _U_, proto_item *ua3g_body_item)
{
- proto_tree *ua3g_body_tree;
- int i = 0;
-
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Cadence: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
-
- while(length > 0)
- {
- i++;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "On / Off : %s",
- val_to_str((tvb_get_guint8(tvb, offset) & 0x80), str_on_off, "On"));
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Length %d : %d ms",
- i, ((tvb_get_guint8(tvb, offset) & 0x7F) * 10));
- offset++;
- length--;
- }
+ proto_tree *ua3g_body_tree;
+ int i = 0;
+
+ if (!ua3g_body_item)
+ return;
+
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "Cadence: %d",
+ tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+
+ while (length > 0) {
+ i++;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "On / Off : %s",
+ STR_ON_OFF(tvb_get_guint8(tvb, offset) & 0x80));
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "Length %d : %d ms",
+ i, ((tvb_get_guint8(tvb, offset) & 0x7F) * 10));
+ offset++;
+ length--;
+ }
}
/*-----------------------------------------------------------------------------
- MUTE ON / OFF - 3Fh (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ MUTE ON / OFF - 3Fh (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_mute(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo,
- guint offset,
- guint length _U_,
- guint8 opcode _U_,
- proto_item *ua3g_item,
- proto_item *ua3g_body_item)
+decode_mute(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo,
+ guint offset, guint length _U_, guint8 opcode _U_,
+ proto_item *ua3g_item, proto_item *ua3g_body_item)
{
- guint8 command = tvb_get_guint8(tvb, offset);
- proto_tree *ua3g_body_tree;
- static const value_string str_mute[] = {
- {0x00, "Microphone Disable"},
- {0x01, "Microphone Enable"},
- {0, NULL}
- };
-
- /* add text to the frame tree */
- proto_item_append_text(ua3g_item,
- ", %s",
- val_to_str(command, str_mute, "Unknown"));
- proto_item_append_text(ua3g_body_item,
- " - %s",
- val_to_str(command, str_mute, "Unknown"));
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
-
- /* add text to the frame "INFO" column */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
- val_to_str(command, str_mute, "Unknown"));
-
- proto_tree_add_uint_format(ua3g_body_tree,
- hf_ua3g_command,
- tvb,
- offset,
- 1,
- command,
- "%s",
- val_to_str(command, str_mute, "Unknown"));
+ guint8 command;
+ proto_tree *ua3g_body_tree;
+
+ static const value_string str_mute[] = {
+ {0x00, "Microphone Disable"},
+ {0x01, "Microphone Enable"},
+ {0, NULL}
+ };
+
+ command = tvb_get_guint8(tvb, offset);
+
+ /* add text to the frame "INFO" column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
+ val_to_str_const(command, str_mute, "Unknown"));
+
+ if (!ua3g_body_item)
+ return;
+
+ /* add text to the frame tree */
+ proto_item_append_text(ua3g_item, ", %s",
+ val_to_str_const(command, str_mute, "Unknown"));
+ proto_item_append_text(ua3g_body_item, " - %s",
+ val_to_str_const(command, str_mute, "Unknown"));
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+
+ proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_command, tvb, offset,
+ 1, command, "%s",
+ val_to_str_const(command, str_mute, "Unknown"));
}
/*-----------------------------------------------------------------------------
- FEEDBACK ON / OFF - 40h (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ FEEDBACK ON / OFF - 40h (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_feedback(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_item,
- proto_item *ua3g_body_item)
+decode_feedback(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo,
+ guint offset, guint length, guint8 opcode _U_,
+ proto_item *ua3g_item, proto_item *ua3g_body_item)
{
- guint8 command = tvb_get_guint8(tvb, offset);
- proto_tree *ua3g_body_tree;
-
- /* add text to the frame tree */
- proto_item_append_text(ua3g_item,
- ", %s",
- val_to_str(command, str_on_off, "On"));
- proto_item_append_text(ua3g_body_item,
- " - %s",
- val_to_str(command, str_on_off, "On"));
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
-
- /* add text to the frame "INFO" column */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
- val_to_str(command, str_on_off, "On"));
-
- proto_tree_add_uint_format(ua3g_body_tree,
- hf_ua3g_command,
- tvb,
- offset,
- 1,
- command,
- "Command: %s",
- val_to_str(command, str_on_off, "On"));
- offset++;
- length--;
-
- if(command == 0x01)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Level: %d dB",
- (signed char)(tvb_get_guint8(tvb, offset) / 2));
- offset++;
- length--;
-
- if(length > 0)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Duration: %d ms",
- (tvb_get_guint8(tvb, offset) * 10));
- }
- }
+ guint8 command;
+ proto_tree *ua3g_body_tree;
+
+ command = tvb_get_guint8(tvb, offset);
+
+ /* add text to the frame "INFO" column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
+ STR_ON_OFF(command));
+
+ if (!ua3g_body_item)
+ return;
+
+ /* add text to the frame tree */
+ proto_item_append_text(ua3g_item, ", %s",
+ STR_ON_OFF(command));
+ proto_item_append_text(ua3g_body_item, " - %s",
+ STR_ON_OFF(command));
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+
+ proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_command, tvb, offset,
+ 1, command, "Command: %s",
+ STR_ON_OFF(command));
+ offset++;
+ length--;
+
+ if (command == 0x01) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Level: %d dB",
+ (signed char)(tvb_get_guint8(tvb, offset) / 2));
+ offset++;
+ length--;
+
+ if (length > 0) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Duration: %d ms",
+ (tvb_get_guint8(tvb, offset) * 10));
+ }
+ }
}
/*-----------------------------------------------------------------------------
- READ PERIPHERAL - 44h (MESSAGE FROM THE SYSTEM)
- WRITE PERIPHERAL - 45h (MESSAGE FROM THE SYSTEM)
- PERIPHERAL CONTENT - 2Bh (MESSAGE FROM THE TERMINAL)
- ---------------------------------------------------------------------------*/
+ READ PERIPHERAL - 44h (MESSAGE FROM THE SYSTEM)
+ WRITE PERIPHERAL - 45h (MESSAGE FROM THE SYSTEM)
+ PERIPHERAL CONTENT - 2Bh (MESSAGE FROM THE TERMINAL)
+ ---------------------------------------------------------------------------*/
static void
-decode_r_w_peripheral(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo _U_,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_body_item)
+decode_r_w_peripheral(proto_tree *tree _U_, tvbuff_t *tvb,
+ packet_info *pinfo _U_, guint offset, guint length,
+ guint8 opcode _U_, proto_item *ua3g_body_item)
{
- proto_tree *ua3g_body_tree;
-
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 2,
- "Address: %d",
- tvb_get_ntohs(tvb, offset));
- offset += 2;
- length -= 2;
-
- if(length > 0)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Content: %d",
- tvb_get_guint8(tvb, offset));
- }
+ proto_tree *ua3g_body_tree;
+
+ if (!ua3g_body_item)
+ return;
+
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 2, "Address: %d",
+ tvb_get_ntohs(tvb, offset));
+ offset += 2;
+ length -= 2;
+
+ if (length > 0) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Content: %d", tvb_get_guint8(tvb, offset));
+ }
}
/*-----------------------------------------------------------------------------
- ICON COMMAND - 47h (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ ICON COMMAND - 47h (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_icon_cmd(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo _U_,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_body_item)
+decode_icon_cmd(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo _U_,
+ guint offset, guint length, guint8 opcode _U_,
+ proto_item *ua3g_body_item)
{
- proto_tree *ua3g_body_tree;
- int i;
- static const value_string str_state[] = {
- {0x00, "Off"},
- {0x01, "Slow Flash"},
- {0x02, "Not Used"},
- {0x03, "Steady On"},
- {0, NULL}
- };
-
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Icon Number: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
-
- for(i = 0; i < 8; i++)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 2,
- "Segment %d: %s (%d)",
- i,
- val_to_str((((tvb_get_guint8(tvb, offset) << 1) >> i) & 0x02) + ((tvb_get_guint8(tvb, offset + 1) >> i) & 0x01),str_state, "Unknwon"),
- (((tvb_get_guint8(tvb, offset) << 1) >> i) & 0x02) + ((tvb_get_guint8(tvb, offset + 1) >> i) & 0x01));
- }
+ proto_tree *ua3g_body_tree;
+ guint8 byte0, byte1, bytex;
+ int i;
+
+ static const value_string str_state[] = {
+ {0x00, "Off"},
+ {0x01, "Slow Flash"},
+ {0x02, "Not Used"},
+ {0x03, "Steady On"},
+ {0, NULL}
+ };
+
+ if (!ua3g_body_item)
+ return;
+
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Icon Number: %d", tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+
+ byte0 = tvb_get_guint8(tvb, offset);
+ byte1 = tvb_get_guint8(tvb, offset+1);
+
+ for (i = 0; i < 8; i++) {
+ bytex =
+ ((byte0 >> i) & 0x01) * 2 +
+ ((byte1 >> i) & 0x01);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 2,
+ "Segment %d: %s (%d)", i,
+ val_to_str_const(bytex, str_state, "Unknown"),
+ bytex
+ );
+ }
}
/*-----------------------------------------------------------------------------
- AUDIO CONFIGURATION - 49h (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ AUDIO CONFIGURATION - 49h (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_audio_config(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_item,
- proto_item *ua3g_body_item)
+decode_audio_config(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo,
+ guint offset, guint length, guint8 opcode _U_,
+ proto_item *ua3g_item, proto_item *ua3g_body_item)
{
- guint8 command = tvb_get_guint8(tvb, offset);
- proto_tree *ua3g_body_tree;
- static const value_string str_command[] = {
- {0x00, "Audio Coding"},
- {0x01, "DPI Channel Allocations"},
- {0x02, "Loudspeaker Volume Adjust"},
- {0x03, "Audio Circuit Configuration"},
- {0x04, "Handsfree Parameters"},
- {0x05, "Loudspeaker Acoustic Parameters"},
- {0x06, "Device Congiguration"},
- {0, NULL}
- };
-
- /* add text to the frame tree */
- proto_item_append_text(ua3g_item,
- ", %s",
- val_to_str(command, str_command, "Unknown"));
- proto_item_append_text(ua3g_body_item,
- " - %s",
- val_to_str(command, str_command, "Unknown"));
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
-
- /* add text to the frame "INFO" column */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
- val_to_str(command, str_command, "Unknown"));
-
- proto_tree_add_uint_format(ua3g_body_tree,
- hf_ua3g_command,
- tvb,
- offset,
- 1,
- command,
- "Command : %s (%d)",
- val_to_str(command, str_command, "Unknown"), command);
- offset++;
- length--;
-
- switch(command)
- {
- case 0x00: /* Audio Coding */
- {
- static const value_string str_law[] = {
- {0x00, "A Law"},
- {0x01, "m Law"},
- {0, NULL}
- };
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Ignored : %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Law : %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_law, "Unknown"));
- break;
- }
- case 0x01: /* DPI Channel Allocations */
- {
- int i;
- static const value_string str_body[] = {
- {0, "UA Channel UA-TX1 "},
- {1, "UA Channel UA-TX2 "},
- {2, "GCI Channel GCI-TX1 "},
- {3, "GCI Channel GCI-TX2 "},
- {4, "Codec Channel COD-TX"},
- {0, NULL}
- };
- for(i = 0; i < 5; i++)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "%s: %d",
- val_to_str(i, str_body, "Unknown"), tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- }
- break;
- }
- case 0x02: /* Loudspeaker Volume Adjust */
- {
- int i;
- for(i = 1; i < 8; i++)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Volume Level %d: %d",
- i, tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- }
- break;
- }
- case 0x03: /* Audio Circuit Configuration */
- {
- int i;
- static const value_string str_body[] = {
- {0, "Anti-Distortion Coeff 1(DTH)"},
- {1, "Anti-Distortion Coeff 2(DTR)"},
- {2, "Anti-Distortion Coeff 3(DTF)"},
- {3, "Sidetone Attenuation (STR) "},
- {4, "Anti-Larsen Coeff 1 (AHP1) "},
- {5, "Anti-Larsen Coeff 2 (AHP2) "},
- {6, "Anti-Larsen Coeff 3 (ATH) "},
- {7, "Anti-Larsen Coeff 4 (ATR) "},
- {8, "Anti-Larsen Coeff 5 (ATF) "},
- {9, "Anti-Larsen Coeff 6 (ALM) "},
- {0, NULL}
- };
-
- for(i = 0; i < 10; i++)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "%s: %d",
- val_to_str(i, str_body, "Unknown"), tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- }
- break;
- }
- case 0x04: /* Handsfree Parameters */
- {
- static const value_string str_return_loss[] = {
- {0x00, "Return Loss Normal"},
- {0x01, "Return Loss Active"},
- {0, NULL}
- };
- static const value_string str_full_duplex[] = {
- {0x00, "Handsfree Normal"},
- {0x02, "More Full Duplex"},
- {0, NULL}
- };
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "%s",
- val_to_str((tvb_get_guint8(tvb, offset) & 0x01), str_return_loss, "Unknown"));
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "%s",
- val_to_str((tvb_get_guint8(tvb, offset) & 0x02), str_full_duplex, "Unknown"));
- break;
- }
- case 0x05: /* Loudspeaker Acoustic Parameters */
- {
- int i;
- static const value_string str_body[] = {
- {0, "Group Listening Attenuation Constant "},
- {1, "Handsfree Attenuation Constant "},
- {2, "Handsfree Number Of ms To Stay In Send State Before Going To Another State"},
- {3, "Handsfree Number Of Positions To Shift Right MTx "},
- {4, "Handsfree Number Of Positions To Shift Right MRc "},
- {5, "Handsfree Idle Transmission Threshold "},
- {6, "Handsfree Low Transmission Threshold "},
- {7, "Handsfree Idle Reception Threshold "},
- {8, "Handsfree Low Reception Threshold "},
- {9, "Handsfree Medium Reception Threshold "},
- {10, "Handsfree High Reception Threshold "},
- {0, NULL}
- };
-
- for(i = 0; i < 11; i++)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "%s: %d",
- val_to_str(i, str_body, "Unknown"), tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- }
- break;
- }
- case 0x06: /* Device Configuration */
- {
- static const value_string str_device[] = {
- {0, "Handset Device "},
- {1, "Headset Device "},
- {2, "Loudspeaker Device "},
- {3, "Announce Loudspeaker Device"},
- {4, "Handsfree Device "},
- {0, NULL}
- };
- static const value_string str_device_values[] = {
- {0x01, " Internal"},
- {0x02, " Rj9 Plug"},
- {0x04, " Jack Plug"},
- {0x08, " Bluetooth Link"},
- {0x10, " USB Link"},
- {0, NULL}
- };
- emem_strbuf_t *strbuf = ep_strbuf_new_label("");
- int j;
- int i = 0;
-
- while(length > 0)
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf,
- "%s",
- val_to_str(tvb_get_guint8(tvb, offset) & 0x01, str_device_values, ""));
-
- for(j = 1; j < 4; j++)
- {
- ep_strbuf_append_printf(strbuf,
- "%s",
- val_to_str((tvb_get_guint8(tvb, offset) & (0x01 << j)), str_device_values, ""));
- }
- if(strcmp(strbuf->str, "") <= 0) {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append(strbuf, " None");
- }
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "%s:%s",
- val_to_str(i, str_device, "Unknown"), strbuf->str);
- offset++;
- length--;
- i++;
- }
- break;
- }
- default:
- {
- break;
- }
- }
+ guint8 command;
+ proto_tree *ua3g_body_tree;
+
+ static const value_string str_command[] = {
+ {0x00, "Audio Coding"},
+ {0x01, "DPI Channel Allocations"},
+ {0x02, "Loudspeaker Volume Adjust"},
+ {0x03, "Audio Circuit Configuration"},
+ {0x04, "Handsfree Parameters"},
+ {0x05, "Loudspeaker Acoustic Parameters"},
+ {0x06, "Device Configuration"},
+ {0, NULL}
+ };
+ static value_string_ext str_command_ext = VALUE_STRING_EXT_INIT(str_command);
+
+ command = tvb_get_guint8(tvb, offset);
+
+ /* add text to the frame "INFO" column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
+ val_to_str_ext_const(command, &str_command_ext, "Unknown"));
+
+ if (!ua3g_body_item)
+ return;
+
+ /* add text to the frame tree */
+ proto_item_append_text(ua3g_item, ", %s",
+ val_to_str_ext_const(command, &str_command_ext, "Unknown"));
+ proto_item_append_text(ua3g_body_item, " - %s",
+ val_to_str_ext_const(command, &str_command_ext, "Unknown"));
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+
+ proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_command, tvb,
+ offset, 1, command, "Command: %s (%d)",
+ val_to_str_ext_const(command, &str_command_ext, "Unknown"), command);
+ offset++;
+ length--;
+
+ switch (command) {
+ case 0x00: /* Audio Coding */
+ {
+ static const value_string str_law[] = {
+ {0x00, "A Law"},
+ {0x01, "m Law"},
+ {0, NULL}
+ };
+ proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ 1, "Ignored: %d",
+ tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ 1, "Law: %s",
+ val_to_str_const(tvb_get_guint8(tvb, offset), str_law, "Unknown"));
+ break;
+ }
+ case 0x01: /* DPI Channel Allocations */
+ {
+ int i;
+ static const gchar *str_body[] = {
+ "UA Channel UA-TX1 ",
+ "UA Channel UA-TX2 ",
+ "GCI Channel GCI-TX1 ",
+ "GCI Channel GCI-TX2 ",
+ "Codec Channel COD-TX"
+ };
+ for (i = 0; i < 5; i++) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ 1, "%s: %d",
+ str_body[i], tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ }
+ break;
+ }
+ case 0x02: /* Loudspeaker Volume Adjust */
+ {
+ int i;
+ for (i = 1; i < 8; i++) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ 1, "Volume Level %d: %d",
+ i, tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ }
+ break;
+ }
+ case 0x03: /* Audio Circuit Configuration */
+ {
+ int i;
+ static const gchar *str_body[] = {
+ "Anti-Distortion Coeff 1(DTH)",
+ "Anti-Distortion Coeff 2(DTR)",
+ "Anti-Distortion Coeff 3(DTF)",
+ "Sidetone Attenuation (STR) ",
+ "Anti-Larsen Coeff 1 (AHP1) ",
+ "Anti-Larsen Coeff 2 (AHP2) ",
+ "Anti-Larsen Coeff 3 (ATH) ",
+ "Anti-Larsen Coeff 4 (ATR) ",
+ "Anti-Larsen Coeff 5 (ATF) ",
+ "Anti-Larsen Coeff 6 (ALM) "
+ };
+
+ for (i = 0; i < 10; i++) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ 1, "%s: %d",
+ str_body[i], tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ }
+ break;
+ }
+ case 0x04: /* Handsfree Parameters */
+ {
+ guint8 val;
+
+ val = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "%s",
+ (val & 0x01) ? "Return Loss Active" : "Return Loss Normal");
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "%s",
+ (val & 0x02) ? "More Full Duplex" : "Handsfree Normal");
+ break;
+ }
+ case 0x05: /* Loudspeaker Acoustic Parameters */
+ {
+ int i;
+ static const gchar *str_body[] = {
+ "Group Listening Attenuation Constant ",
+ "Handsfree Attenuation Constant ",
+ "Handsfree Number Of ms To Stay In Send State Before Going To Another State",
+ "Handsfree Number Of Positions To Shift Right MTx ",
+ "Handsfree Number Of Positions To Shift Right MRc ",
+ "Handsfree Idle Transmission Threshold ",
+ "Handsfree Low Transmission Threshold ",
+ "Handsfree Idle Reception Threshold ",
+ "Handsfree Low Reception Threshold ",
+ "Handsfree Medium Reception Threshold ",
+ "Handsfree High Reception Threshold "
+ };
+
+ for (i = 0; i < 11; i++) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "%s: %d",
+ str_body[i], tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ }
+ break;
+ }
+ case 0x06: /* Device Configuration */
+ {
+ static const value_string str_device[] = {
+ { 0, "Handset Device "},
+ { 1, "Headset Device "},
+ { 2, "Loudspeaker Device "},
+ { 3, "Announce Loudspeaker Device"},
+ { 4, "Handsfree Device "},
+ { 0, NULL }
+ };
+ static value_string_ext str_device_ext = VALUE_STRING_EXT_INIT(str_device);
+
+ static const gchar *str_device_values[] = {
+ " Internal",
+ " Rj9 Plug",
+ " Jack Plug",
+ " Bluetooth Link",
+ " USB Link"
+ };
+ emem_strbuf_t *strbuf;
+ guint8 device_values;
+ int j;
+ int device_index = 0;
+
+ strbuf = ep_strbuf_new_label(NULL);
+
+ while (length > 0) {
+
+ device_values = tvb_get_guint8(tvb, offset);
+
+ ep_strbuf_truncate(strbuf, 0);
+
+ if (device_values != 0) {
+ for (j = 0; j < 5; j++) {
+ if (device_values & (0x01 << j)) {
+ ep_strbuf_append(strbuf, str_device_values[j]);
+ }
+ }
+ } else {
+ ep_strbuf_append(strbuf, " None");
+ }
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "%s:%s",
+ val_to_str_ext_const(device_index, &str_device_ext, "Unknown"),
+ strbuf->str);
+ offset++;
+ length--;
+ device_index++;
+ }
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
}
/*-----------------------------------------------------------------------------
- AUDIO PADDED PATH - 4Ah (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ AUDIO PADDED PATH - 4Ah (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_audio_padded_path(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo _U_,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_body_item)
+decode_audio_padded_path(proto_tree *tree _U_, tvbuff_t *tvb,
+ packet_info *pinfo _U_, guint offset, guint length,
+ guint8 opcode _U_, proto_item *ua3g_body_item)
{
- proto_tree *ua3g_body_tree;
-
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Emission Padded Level: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Reception Padded Level: %d",
- tvb_get_guint8(tvb, offset));
+ proto_tree *ua3g_body_tree;
+
+ if (!ua3g_body_item)
+ return;
+
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Emission Padded Level: %d", tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Reception Padded Level: %d", tvb_get_guint8(tvb, offset));
}
/*-----------------------------------------------------------------------------
- KEY RELEASE ON / OFF - 41h (MESSAGE FROM THE SYSTEM)
- AMPLIFIED HANDSET (BOOST) - 48h (MESSAGE FROM THE SYSTEM)
- LOUDSPEAKER ON / OFF - 4Dh (MESSAGE FROM THE SYSTEM)
- ANNOUNCE ON / OFF - 4Eh (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ KEY RELEASE ON / OFF - 41h (MESSAGE FROM THE SYSTEM)
+ AMPLIFIED HANDSET (BOOST) - 48h (MESSAGE FROM THE SYSTEM)
+ LOUDSPEAKER ON / OFF - 4Dh (MESSAGE FROM THE SYSTEM)
+ ANNOUNCE ON / OFF - 4Eh (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_on_off_level(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_item,
- proto_item *ua3g_body_item)
+decode_on_off_level(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo,
+ guint offset, guint length, guint8 opcode _U_,
+ proto_item *ua3g_item, proto_item *ua3g_body_item)
{
- guint8 command = tvb_get_guint8(tvb, offset);
- proto_tree *ua3g_body_tree;
-
- /* add text to the frame tree */
- proto_item_append_text(ua3g_item,
- ", %s",
- val_to_str(command, str_on_off, "On"));
- proto_item_append_text(ua3g_body_item,
- " - %s",
- val_to_str(command, str_on_off, "On"));
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
-
- /* add text to the frame "INFO" column */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
- val_to_str(command, str_on_off, "On"));
-
- proto_tree_add_uint_format(ua3g_body_tree,
- hf_ua3g_command,
- tvb,
- offset,
- 1,
- command,
- "Command: %s",
- val_to_str(command, str_on_off, "On"));
- offset++;
- length--;
-
- if(length > 0)
- {
- if(command == 0x01)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Level on Loudspeaker: %d dB",
- (signed char)(tvb_get_guint8(tvb, offset)));
- }
- }
+ guint8 command;
+ proto_tree *ua3g_body_tree;
+
+ command = tvb_get_guint8(tvb, offset);
+
+ /* add text to the frame "INFO" column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
+ STR_ON_OFF(command));
+
+ if (!ua3g_body_item)
+ return;
+
+ /* add text to the frame tree */
+ proto_item_append_text(ua3g_item, ", %s",
+ STR_ON_OFF(command));
+ proto_item_append_text(ua3g_body_item, " - %s",
+ STR_ON_OFF(command));
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+
+ proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_command, tvb, offset,
+ 1, command, "Command: %s",
+ STR_ON_OFF(command));
+ offset++;
+ length--;
+
+ if (length > 0) {
+ if (command == 0x01) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Level on Loudspeaker: %d dB",
+ (signed char)(tvb_get_guint8(tvb, offset)));
+ }
+ }
}
/*-----------------------------------------------------------------------------
- RING ON / OFF - 4Fh (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ RING ON / OFF - 4Fh (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_ring(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_item,
- proto_item *ua3g_body_item)
+decode_ring(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo,
+ guint offset, guint length, guint8 opcode _U_,
+ proto_item *ua3g_item, proto_item *ua3g_body_item)
{
- guint8 command = tvb_get_guint8(tvb, offset);
- proto_tree *ua3g_body_tree;
- static const value_string str_cadence[] = {
- {0x00, "Standard Ringing"},
- {0x01, "Double Burst"},
- {0x02, "Triple Burst"},
- {0x03, "Continuous"},
- {0x04, "Priority Attendant Ringing"},
- {0x05, "Regular Attendant Ringing"},
- {0x06, "Programmable Cadence"},
- {0, NULL}
- };
-
- /* add text to the frame tree */
- proto_item_append_text(ua3g_item,
- ", %s",
- val_to_str(command, str_on_off, "On"));
- proto_item_append_text(ua3g_body_item,
- " - %s",
- val_to_str(command, str_on_off, "On"));
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
-
- /* add text to the frame "INFO" column */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
- val_to_str(command, str_on_off, "On"));
-
- proto_tree_add_uint_format(ua3g_body_tree,
- hf_ua3g_command,
- tvb,
- offset,
- 1,
- command,
- "Command: %s",
- val_to_str(command, str_on_off, "On"));
- offset++;
- length--;
-
- if(command == 0x01)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Melody: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Cadence: %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_cadence, "Unknown"));
- offset++;
- length--;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Speaker level: %d dB",
- (signed char)(tvb_get_guint8(tvb, offset)));
- offset++;
- length--;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Beep number: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Silent: %s",
- val_to_str((tvb_get_guint8(tvb, offset) & 0x80), str_on_off, "On"));
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Progressive: %d",
- (tvb_get_guint8(tvb, offset) & 0x03));
- }
+ guint8 command;
+ proto_tree *ua3g_body_tree;
+
+ static const value_string str_cadence[] = {
+ {0x00, "Standard Ringing"},
+ {0x01, "Double Burst"},
+ {0x02, "Triple Burst"},
+ {0x03, "Continuous"},
+ {0x04, "Priority Attendant Ringing"},
+ {0x05, "Regular Attendant Ringing"},
+ {0x06, "Programmable Cadence"},
+ {0, NULL}
+ };
+ static value_string_ext str_cadence_ext = VALUE_STRING_EXT_INIT(str_cadence);
+
+ command = tvb_get_guint8(tvb, offset);
+
+ /* add text to the frame "INFO" column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
+ STR_ON_OFF(command));
+
+ if (!ua3g_body_item)
+ return;
+
+ /* add text to the frame tree */
+ proto_item_append_text(ua3g_item, ", %s",
+ STR_ON_OFF(command));
+ proto_item_append_text(ua3g_body_item, " - %s",
+ STR_ON_OFF(command));
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+
+ proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_command, tvb, offset,
+ 1, command, "Command: %s",
+ STR_ON_OFF(command));
+ offset++;
+ length--;
+
+ if (command == 0x01) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Melody: %d", tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "Cadence: %s",
+ val_to_str_ext_const(tvb_get_guint8(tvb, offset), &str_cadence_ext, "Unknown"));
+ offset++;
+ length--;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Speaker level: %d dB",
+ (signed char)(tvb_get_guint8(tvb, offset)));
+ offset++;
+ length--;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Beep number: %d", tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "Silent: %s",
+ STR_ON_OFF(tvb_get_guint8(tvb, offset) & 0x80));
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "Progressive: %d",
+ (tvb_get_guint8(tvb, offset) & 0x03));
+ }
}
/*-----------------------------------------------------------------------------
- UA DOWNLOAD PROTOCOL - 50h - Only for UA NOE (MESSAGE FROM THE TERMINAL AND FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ UA DOWNLOAD PROTOCOL - 50h - Only for UA NOE (MESSAGE FROM THE TERMINAL AND FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_ua_dwl_protocol(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_item,
- proto_item *ua3g_body_item)
+decode_ua_dwl_protocol(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo,
+ guint offset, guint length, guint8 opcode _U_,
+ proto_item *ua3g_item, proto_item *ua3g_body_item)
{
- guint8 command = tvb_get_guint8(tvb, offset);
- proto_tree *ua3g_body_tree;
- static const value_string str_command[] = {
- {0x00, "Downloading Suggest"},
- {0x01, "Downloading Request"},
- {0x02, "Downloading Acknowledge"},
- {0x03, "Downloading Data"},
- {0x04, "Downloading End"},
- {0x05, "Downloading End Acknowledge"},
- {0x06, "Downloading ISO Checksum"},
- {0x07, "Downloading ISO Checksum Acknowledge"},
- {0, NULL}
- };
-
- /* add text to the frame tree */
- proto_item_append_text(ua3g_item,
- ", %s",
- val_to_str(command, str_command, "Unknown"));
- proto_item_append_text(ua3g_body_item,
- " - %s",
- val_to_str(command, str_command, "Unknown"));
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
-
- /* add text to the frame "INFO" column */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
- val_to_str(command, str_command, "Unknown"));
-
- proto_tree_add_uint_format(ua3g_body_tree,
- hf_ua3g_command,
- tvb,
- offset,
- 1,
- command,
- "Command : %s",
- val_to_str(command, str_command, "Unknown"));
- offset++;
- length--;
-
- switch(command)
- {
- case 0x00: /* Downloading Suggest (MESSAGE FROM THE TERMINAL) */
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Item Identifier: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Item Version: %s",
- version_number_computer(tvb_get_letohs(tvb, offset)));
- offset += 2;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Cause: %d",
- tvb_get_guint8(tvb, offset));
- break;
- }
- case 0x01: /* Downloading Request (MESSAGE FROM THE SYSTEM) */
- {
- static const value_string str_force_mode[] = {
- {0x00, "System Accept All Refusals"},
- {0x01, "Force Software Lock"},
- {0, NULL}
- };
- static const value_string str_item_id[] = {
- {0x00, "Patches File"},
- {0x01, "Application Binary"},
- {0x02, "Datas Binary"},
- {0, NULL}
- };
- static const value_string str_mode_selection_country[] = {
- {0x00, "No Check"},
- {0x01, "For All Countries Except Chinese"},
- {0x02, "For Chinese"},
- {0, NULL}
- };
- static const value_string str_mem_size[] = {
- {0x00, "No Check"},
- {0x01, "128 Kbytes"},
- {0x02, "256 Kbytes"},
- {0x03, "512 Kbytes"},
- {0x04, "1 Mbytes"},
- {0x05, "2 Mbytes"},
- {0x06, "4 Mbytes"},
- {0x07, "8 Mbytes"},
- {0, NULL}
- };
- static const value_string str_bin_info[] = {
- {0x00, "Uncompressed Binary"},
- {0x01, "LZO Compressed Binary"},
- {0, NULL}
- };
-
- if(length > 7) /* Not R1 */
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Force Mode: %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_force_mode, "Unknown"));
- offset++;
- length--;
- }
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Item Identifier: %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_item_id, "Unknown"));
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 2,
- "Item Version: %d",
- tvb_get_ntohs(tvb, offset));
- offset += 2;
- length -= 2;
-
- if(length > 2) /* Not R1 */
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Files Included: %s Boot Binary Included, %s Loader Binary Included, %s Appli Binary Included, %s Datas Binary Included",
- val_to_str((tvb_get_guint8(tvb, offset) & 0x01), str_yes_no, ""),
- val_to_str((tvb_get_guint8(tvb, offset) & 0x02), str_yes_no, ""),
- val_to_str((tvb_get_guint8(tvb, offset) & 0x04), str_yes_no, ""),
- val_to_str((tvb_get_guint8(tvb, offset) & 0x08), str_yes_no, ""));
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Model Selection: For A Model: %s, For B Model: %s, For C Model %s, Country Version: %s",
- val_to_str((tvb_get_guint8(tvb, offset) & 0x01), str_yes_no, "Yes"),
- val_to_str((tvb_get_guint8(tvb, offset) & 0x02), str_yes_no, "Yes"),
- val_to_str((tvb_get_guint8(tvb, offset) & 0x04), str_yes_no, "Yes"),
- val_to_str(((tvb_get_guint8(tvb, offset) & 0xE0) >> 5), str_mode_selection_country, "Unknown"));
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Hardware Selection: For Ivanoe 1: %s, For Ivanoe 2: %s",
- val_to_str((tvb_get_guint8(tvb, offset) & 0x01), str_yes_no, "Yes"),
- val_to_str((tvb_get_guint8(tvb, offset) & 0x02), str_yes_no, "Yes"));
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Memory Sizes Required: Flash Min Size: %s, External Ram Min Size: %s",
- val_to_str((tvb_get_guint8(tvb, offset) & 0x07), str_mem_size, "Unknown"),
- val_to_str(((tvb_get_guint8(tvb, offset) & 0x38) >> 3), str_mem_size, "Unknown"));
- offset++;
- length--;
- }
- else /* R1 */
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Binary Information: %s, Country/Operator/CLient Identifier ?",
- val_to_str((tvb_get_guint8(tvb, offset) & 0x01), str_bin_info, ""));
- offset++;
- length--;
- }
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 3,
- "Binary Length: %d",
- tvb_get_ntoh24(tvb, offset));
- break;
- }
- case 0x02: /* Downloading Acknowledge (MESSAGE FROM THE TERMINAL) */
- {
- static const value_string str_status[] = {
- {0x00, "Ok (Binary Item Downloading In \"Normal\" Progress)"},
- {0x01, "Hardware Failure: Flash Failure"},
- {0x02, "Not Enough Place To Store The Downloaded Binary"},
- {0x03, "Wrong Seq Number On Latest Received Download_Data Message"},
- {0x04, "Wrong Packet Number On Latest Received Download_Data Message"},
- {0x05, "Download Refusal Terminal (Validation Purpose)"},
- {0x06, "Download Refusal Terminal (Development Purpose)"},
- {0x10, "Download Refusal: Hardware Cause (Unknown Flash Device, Incompatible Hardware)"},
- {0x11, "Download Refusal: No Loader Available Into The Terminal"},
- {0x12, "Download Refusal: Software Lock"},
- {0x13, "Download Refusal: Wrong Parameter Into Download Request"},
- {0x20, "Wrong Packet Number On Latest Received Downloading_Data Message"},
- {0x21, "Compress Header Invalid"},
- {0x22, "Decompress Error"},
- {0x23, "Binary Header Invalid"},
- {0x24, "Binary Check Error: Flash Write Error Or Binary Is Invalid"},
- {0x25, "Error Already Signaled - No More Data Accepted"},
- {0x26, "No Downloading In Progress"},
- {0x27, "Too Many Bytes Received (More Than Size Given Into The Download_Req Message)"},
- {0xFF, "Undefined Error"},
- {0, NULL}
- };
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 2,
- "Packet Number: %d",
- tvb_get_ntohs(tvb, offset));
- offset += 2;
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Status: %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_status, "Unknown"));
- break;
- }
- case 0x03: /* Downloading Data (MESSAGE FROM THE SYSTEM) */
- {
- int i = 1;
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 2,
- "Packet Number: %d",
- tvb_get_ntohs(tvb, offset));
- offset += 2;
- length -= 2;
-
- while(length > 0)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Packet Number %3d: %d",
- i, tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- i++;
- }
- break;
- }
- case 0x05: /* Downloading End Acknowledge (MESSAGE FROM THE TERMINAL) */
- {
- static const value_string str_ok[] = {
- {0x00, "Ok"},
- {0x01, "Hardware Failure: Flash Problems"},
- {0x02, "Not Enough Place To Store The Downloaded Binary"},
- {0, NULL}
- };
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Status: %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_ok, "Not Ok"));
- break;
- }
- case 0x06: /* Downloading Iso Checksum (MESSAGE FROM THE SYSTEM) */
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 4,
- "Checksum: %d",
- tvb_get_ntohl(tvb, offset));
- /*Fix Clang Warning*/
- /*offset += 4;*/
- /*length -= 4;*/
- break;
- }
- case 0x07: /* Downloading ISO Checksum Acknowledge (MESSAGE FROM THE TERMINAL) */
- {
- static const value_string str_ack_status[] = {
- {0x00, "The Checksum Matches"},
- {0x25, "Error Detected And Already Signaled"},
- {0x30, "Checksum Error (All Bytes Received)"},
- {0x31, "Checksum Error (Bytes Missing)"},
- {0, NULL}
- };
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Acknowledge: %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_ack_status, "Unknown"));
- break;
- }
- case 0x04: /* Downloading End (MESSAGE FROM THE SYSTEM) */
- default:
- {
- break;
- }
- }
+ guint8 command;
+ proto_tree *ua3g_body_tree;
+
+ static const value_string str_command[] = {
+ {0x00, "Downloading Suggest"},
+ {0x01, "Downloading Request"},
+ {0x02, "Downloading Acknowledge"},
+ {0x03, "Downloading Data"},
+ {0x04, "Downloading End"},
+ {0x05, "Downloading End Acknowledge"},
+ {0x06, "Downloading ISO Checksum"},
+ {0x07, "Downloading ISO Checksum Acknowledge"},
+ {0, NULL}
+ };
+ static value_string_ext str_command_ext = VALUE_STRING_EXT_INIT(str_command);
+
+ command = tvb_get_guint8(tvb, offset);
+
+ /* add text to the frame "INFO" column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
+ val_to_str_ext_const(command, &str_command_ext, "Unknown"));
+
+ if (!ua3g_body_item)
+ return;
+
+ /* add text to the frame tree */
+ proto_item_append_text(ua3g_item, ", %s",
+ val_to_str_ext_const(command, &str_command_ext, "Unknown"));
+ proto_item_append_text(ua3g_body_item, " - %s",
+ val_to_str_ext_const(command, &str_command_ext, "Unknown"));
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+
+ proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_command, tvb,
+ offset, 1, command, "Command: %s",
+ val_to_str_ext_const(command, &str_command_ext, "Unknown"));
+ offset++;
+ length--;
+
+ switch (command) {
+ case 0x00: /* Downloading Suggest (MESSAGE FROM THE TERMINAL) */
+ {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Item Identifier: %d", tvb_get_guint8(tvb, offset));
+ offset++;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Item Version: %s",
+ version_number_computer(tvb_get_letohs(tvb, offset)));
+ offset += 2;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Cause: %d", tvb_get_guint8(tvb, offset));
+ break;
+ }
+ case 0x01: /* Downloading Request (MESSAGE FROM THE SYSTEM) */
+ {
+ static const value_string str_force_mode[] = {
+ {0x00, "System Accept All Refusals"},
+ {0x01, "Force Software Lock"},
+ {0, NULL}
+ };
+ static const value_string str_item_id[] = {
+ {0x00, "Patches File"},
+ {0x01, "Application Binary"},
+ {0x02, "Datas Binary"},
+ {0, NULL}
+ };
+ static const value_string str_mode_selection_country[] = {
+ {0x00, "No Check"},
+ {0x01, "For All Countries Except Chinese"},
+ {0x02, "For Chinese"},
+ {0, NULL}
+ };
+ static const gchar *str_mem_size[] = {
+ "No Check",
+ "128 Kbytes",
+ "256 Kbytes",
+ "512 Kbytes",
+ "1 Mbytes",
+ "2 Mbytes",
+ "4 Mbytes",
+ "8 Mbytes"
+ };
+
+ static const gchar *str_bin_info[] = {
+ "Uncompressed Binary",
+ "LZO Compressed Binary"
+ };
+
+ if (length > 7) { /* Not R1 */
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "Force Mode: %s",
+ val_to_str_const(tvb_get_guint8(tvb, offset), str_force_mode, "Unknown"));
+ offset++;
+ length--;
+ }
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "Item Identifier: %s",
+ val_to_str_const(tvb_get_guint8(tvb, offset), str_item_id, "Unknown"));
+ offset++;
+ length--;
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 2,
+ "Item Version: %d", tvb_get_ntohs(tvb, offset));
+ offset += 2;
+ length -= 2;
+
+ if (length > 2) { /* Not R1 */
+ guint8 val;
+ val = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Files Included: %sBoot Binary Included, %sLoader Binary Included,"
+ " %sAppli Binary Included, %sDatas Binary Included",
+ (val & 0x01) ? "" : "No ",
+ (val & 0x02) ? "" : "No ",
+ (val & 0x04) ? "" : "No ",
+ (val & 0x08) ? "" : "No ");
+ offset++;
+ length--;
+
+ val = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Model Selection: For A Model: %s, For B Model: %s, For C Model %s, Country Version: %s",
+ STR_YES_NO(val & 0x01),
+ STR_YES_NO(val & 0x02),
+ STR_YES_NO(val & 0x04),
+ val_to_str_const(((tvb_get_guint8(tvb, offset) & 0xE0) >> 5), str_mode_selection_country, "Unknown"));
+ offset++;
+ length--;
+
+ val = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Hardware Selection: For Ivanoe 1: %s, For Ivanoe 2: %s",
+ STR_YES_NO(val & 0x01),
+ STR_YES_NO(val & 0x02));
+ offset++;
+ length--;
+
+ val = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Memory Sizes Required: Flash Min Size: %s, External Ram Min Size: %s",
+ str_mem_size[(val & 0x07)],
+ str_mem_size[(val & 0x38) >> 3]);
+ offset++;
+ length--;
+ } else { /* R1 */
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Binary Information: %s, Country/Operator/CLient Identifier ?",
+ str_bin_info[tvb_get_guint8(tvb, offset) & 0x01]);
+ offset++;
+ length--;
+ }
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 3,
+ "Binary Length: %d", tvb_get_ntoh24(tvb, offset));
+ break;
+ }
+ case 0x02: /* Downloading Acknowledge (MESSAGE FROM THE TERMINAL) */
+ {
+ static const value_string str_status[] = {
+ {0x00, "Ok (Binary Item Downloading In \"Normal\" Progress)"},
+ {0x01, "Hardware Failure: Flash Failure"},
+ {0x02, "Not Enough Place To Store The Downloaded Binary"},
+ {0x03, "Wrong Seq Number On Latest Received Download_Data Message"},
+ {0x04, "Wrong Packet Number On Latest Received Download_Data Message"},
+ {0x05, "Download Refusal Terminal (Validation Purpose)"},
+ {0x06, "Download Refusal Terminal (Development Purpose)"},
+ {0x10, "Download Refusal: Hardware Cause (Unknown Flash Device, Incompatible Hardware)"},
+ {0x11, "Download Refusal: No Loader Available Into The Terminal"},
+ {0x12, "Download Refusal: Software Lock"},
+ {0x13, "Download Refusal: Wrong Parameter Into Download Request"},
+ {0x20, "Wrong Packet Number On Latest Received Downloading_Data Message"},
+ {0x21, "Compress Header Invalid"},
+ {0x22, "Decompress Error"},
+ {0x23, "Binary Header Invalid"},
+ {0x24, "Binary Check Error: Flash Write Error Or Binary Is Invalid"},
+ {0x25, "Error Already Signaled - No More Data Accepted"},
+ {0x26, "No Downloading In Progress"},
+ {0x27, "Too Many Bytes Received (More Than Size Given Into The Download_Req Message)"},
+ {0xFF, "Undefined Error"},
+ {0, NULL}
+ };
+ static value_string_ext str_status_ext = VALUE_STRING_EXT_INIT(str_status);
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 2,
+ "Packet Number: %d", tvb_get_ntohs(tvb, offset));
+ offset += 2;
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "Status: %s",
+ val_to_str_ext_const(tvb_get_guint8(tvb, offset), &str_status_ext, "Unknown"));
+ break;
+ }
+ case 0x03: /* Downloading Data (MESSAGE FROM THE SYSTEM) */
+ {
+ int i = 1;
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 2,
+ "Packet Number: %d", tvb_get_ntohs(tvb, offset));
+ offset += 2;
+ length -= 2;
+
+ while (length > 0) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Packet Number %3d: %d", i, tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ i++;
+ }
+ break;
+ }
+ case 0x05: /* Downloading End Acknowledge (MESSAGE FROM THE TERMINAL) */
+ {
+ static const value_string str_ok[] = {
+ {0x00, "Ok"},
+ {0x01, "Hardware Failure: Flash Problems"},
+ {0x02, "Not Enough Place To Store The Downloaded Binary"},
+ {0, NULL}
+ };
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "Status: %s",
+ val_to_str_const(tvb_get_guint8(tvb, offset), str_ok, "Not Ok"));
+ break;
+ }
+ case 0x06: /* Downloading Iso Checksum (MESSAGE FROM THE SYSTEM) */
+ {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 4,
+ "Checksum: %d", tvb_get_ntohl(tvb, offset));
+ /*offset += 4;*/
+ /*length -= 4;*/
+ break;
+ }
+ case 0x07: /* Downloading ISO Checksum Acknowledge (MESSAGE FROM THE TERMINAL) */
+ {
+ static const value_string str_ack_status[] = {
+ {0x00, "The Checksum Matches"},
+ {0x25, "Error Detected And Already Signaled"},
+ {0x30, "Checksum Error (All Bytes Received)"},
+ {0x31, "Checksum Error (Bytes Missing)"},
+ {0, NULL}
+ };
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "Acknowledge: %s",
+ val_to_str_const(tvb_get_guint8(tvb, offset), str_ack_status, "Unknown"));
+ break;
+ }
+ case 0x04: /* Downloading End (MESSAGE FROM THE SYSTEM) */
+ default:
+ {
+ break;
+ }
+ }
}
/*-----------------------------------------------------------------------------
- DIGIT DIALED - 03h (MESSAGE FROM THE SYSTEM)
- ---------------------------------------------------------------------------*/
+ DIGIT DIALED - 03h (MESSAGE FROM THE SYSTEM)
+ ---------------------------------------------------------------------------*/
static void
-decode_digit_dialed(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo _U_,
- guint offset,
- guint length _U_,
- guint8 opcode _U_,
- proto_item *ua3g_body_item)
+decode_digit_dialed(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo _U_,
+ guint offset, guint length _U_, guint8 opcode _U_,
+ proto_item *ua3g_body_item)
{
- proto_tree *ua3g_body_tree;
- static const value_string str_digit[] = {
- {0, "0"},
- {1, "1"},
- {2, "2"},
- {3, "3"},
- {4, "4"},
- {5, "5"},
- {6, "6"},
- {7, "7"},
- {8, "8"},
- {9, "9"},
- {10, "*"},
- {11, "#"},
- {12, "A"},
- {13, "B"},
- {14, "C"},
- {15, "D"},
- {16, "Flash"},
- {0, NULL}
- };
-
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Digit Value: %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_digit, "Unknown"));
+ proto_tree *ua3g_body_tree;
+
+ if (!ua3g_body_item)
+ return;
+
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "Digit Value: %s",
+ val_to_str_ext_const(tvb_get_guint8(tvb, offset), &str_digit_ext, "Unknown"));
}
/*-----------------------------------------------------------------------------
- SUBDEVICE_MSG - 04h (MESSAGE FROM THE TERMINAL)
- ---------------------------------------------------------------------------*/
+ SUBDEVICE_MSG - 04h (MESSAGE FROM THE TERMINAL)
+ ---------------------------------------------------------------------------*/
static void
-decode_subdevice_msg(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo _U_,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_body_item)
+decode_subdevice_msg(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo _U_,
+ guint offset, guint length, guint8 opcode _U_,
+ proto_item *ua3g_body_item)
{
- proto_tree *ua3g_body_tree;
- int i = 0;
-
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Subdev Type: %d",
- (tvb_get_guint8(tvb, offset) & 0xF0));
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Subdev Address: %d",
- (tvb_get_guint8(tvb, offset) & 0x0F));
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Subdevice Opcode: %d",
- (tvb_get_guint8(tvb, offset) & 0x7F));
- offset++;
- length--;
-
- while(length > 0)
- {
- i++;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Parameter Byte %2d: %d",
- i, tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- }
+ proto_tree *ua3g_body_tree;
+ int i = 0;
+
+ if (!ua3g_body_item)
+ return;
+
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Subdev Type: %d", (tvb_get_guint8(tvb, offset) & 0xF0));
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Subdev Address: %d", (tvb_get_guint8(tvb, offset) & 0x0F));
+ offset++;
+ length--;
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Subdevice Opcode: %d", (tvb_get_guint8(tvb, offset) & 0x7F));
+ offset++;
+ length--;
+
+ while (length > 0) {
+ i++;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Parameter Byte %2d: %d", i, tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ }
}
/*-----------------------------------------------------------------------------
- IP DEVICE ROUTING - 13h (MESSAGE FROM THE TERMINAL)
- ---------------------------------------------------------------------------*/
+ IP DEVICE ROUTING - 13h (MESSAGE FROM THE TERMINAL)
+ ---------------------------------------------------------------------------*/
static void
-decode_cs_ip_device_routing(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_item,
- proto_item *ua3g_body_item)
+decode_cs_ip_device_routing(proto_tree *tree _U_, tvbuff_t *tvb,
+ packet_info *pinfo, guint offset, guint length,
+ guint8 opcode _U_, proto_item *ua3g_item,
+ proto_item *ua3g_body_item)
{
- guint8 command = tvb_get_guint8(tvb, offset);
- gint *lengthp = 0;
- proto_tree *ua3g_body_tree;
- proto_item *ua3g_param_item;
- proto_tree *ua3g_param_tree;
- emem_strbuf_t *strbuf = ep_strbuf_new_label("");
- static const value_string str_command[] = {
- {0x00, "Init"},
- {0x01, "Incident"},
- {0x02, "Get Parameters Value Response"},
- {0x03, "QOS Ticket RSP"},
- {0, NULL}
- };
-
- /* add text to the frame tree */
- proto_item_append_text(ua3g_item,
- ", %s",
- val_to_str(command, str_command, "Unknown"));
- proto_item_append_text(ua3g_body_item,
- " - %s",
- val_to_str(command, str_command, "Unknown"));
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
-
- /* add text to the frame "INFO" column */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
- val_to_str(command, str_command, "Unknown"));
-
- proto_tree_add_uint_format(ua3g_body_tree,
- hf_ua3g_ip,
- tvb,
- offset,
- 1,
- command,
- "Command: %s",
- val_to_str(command, str_command, "Unknown"));
- offset++;
- length--;
-
- switch(command)
- {
- case 0x00:
- {
- static const value_string str_vta_type[] = {
- {0x20, "NOE A"},
- {0x21, "NOE B"},
- {0x22, "NOE C"},
- {0x23, "NOE D"},
- {0, NULL}
- };
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "VTA Type: %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_vta_type, "Unknown"));
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Characteristic Number: %d",
- tvb_get_guint8(tvb, offset));
- break;
- }
- case 0x01:
- {
- int i=0;
- if(length == 1)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Incident 0: %d",
- tvb_get_guint8(tvb, offset));
- }
- else
- {
- while(length >0)
- {
- i++;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Parameter %d Identifier: %d",
- i, tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- }
- }
- break;
- }
- case 0x02:
- {
- int i, parameter_id, parameter_length;
- static const value_string str_parameter_id[] = {
- {0x00, "Firmware Version"},
- {0x01, "Firmware Version"},
- {0x02, "DHCP IP Address"},
- {0x03, "Local IP Address"},
- {0x04, "Subnetwork Mask"},
- {0x05, "Router IP Address"},
- {0x06, "TFTP IP Address"},
- {0x07, "Main CPU Address"},
- {0x08, "Default Codec"},
- {0x09, "Ethernet Drivers Config"},
- {0x0A, "MAC Address"},
- {0, NULL}
- };
-
- while(length > 0)
- {
- parameter_id = tvb_get_guint8(tvb, offset);
- parameter_length = tvb_get_guint8(tvb, offset + 1);
-
- if(parameter_length > 0)
- {
- switch(parameter_id)
- {
- case 0x00: /* Firmware Version */
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf, "%s", version_number_computer(tvb_get_ntohs(tvb, offset + 2)));
- break;
- }
- case 0x01: /* Firmware Version */
- case 0x02: /* DHCP IP Address */
- case 0x03: /* Local IP Address */
- case 0x04: /* Subnetwork Mask */
- case 0x05: /* Router IP Address */
- case 0x06: /* TFTP IP Address */
- case 0x07: /* Main CPU Address */
- {
- if(parameter_length > 0) {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf, "%d", tvb_get_guint8(tvb, offset + 2));
- }
-
- for(i = 2; i <= parameter_length; i++)
- {
- ep_strbuf_append(strbuf, ".");
- ep_strbuf_append_printf(strbuf, "%u", tvb_get_guint8(tvb, offset+1+i));
- }
- break;
- }
- case 0x08: /* Default Codec */
- {
- static const value_string str_compressor[] = {
- {0x00, "G.711 A-law"},
- {0x01, "G.711 mu-law"},
- {0x0F, "G.723.1 5.3kbps"},
- {0x10, "G.723.1 6.3kbps"},
- {0x11, "G.729A 8 kbps"},
- {0, NULL}
- };
-
- if((parameter_length > 0) && (parameter_length <= 8))
- {
- guint64 param_value = 0;
- for(i = parameter_length; i > 0; i--)
- {
- param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
- }
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append(strbuf, val_to_str((guint8)(param_value), str_compressor, "Default Codec"));
- }
- else
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf,
- "0x%02x 0x%02x ... 0x%02x 0x%02x",
- tvb_get_guint8(tvb, offset + 2),
- tvb_get_guint8(tvb, offset + 3),
- tvb_get_guint8(tvb, offset + parameter_length),
- tvb_get_guint8(tvb, offset + 1 + parameter_length));
- }
- break;
- }
- case 0x09: /* Ethernet Drivers Config */
- {
- if(parameter_length == 2)
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf,
- "Port Lan Speed: %d - Port Lan Duplex: %d",
- tvb_get_guint8(tvb, offset + 2),
- tvb_get_guint8(tvb, offset + 3));
- }
- else if(parameter_length == 4)
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf,
- "Port Lan Speed: %d - Port Lan Duplex: %d - Port PC Speed: %d - Port PC Duplex: %d",
- tvb_get_guint8(tvb, offset + 2),
- tvb_get_guint8(tvb, offset + 3),
- tvb_get_guint8(tvb, offset + 4),
- tvb_get_guint8(tvb, offset + 5));
- }
- else
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf,
- "0x%02x 0x%02x ... 0x%02x 0x%02x",
- tvb_get_guint8(tvb, offset + 2),
- tvb_get_guint8(tvb, offset + 3),
- tvb_get_guint8(tvb, offset + parameter_length),
- tvb_get_guint8(tvb, offset + 1 + parameter_length));
- }
- break;
- }
- case 0x0A: /* MAC Address */
- {
- if(parameter_length > 0) {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf, "%02x", tvb_get_guint8(tvb, offset + 2));
- }
-
- for(i = 2; i <= parameter_length; i++)
- {
- ep_strbuf_append(strbuf, ":");
- ep_strbuf_append(strbuf, tvb_get_const_stringz(tvb, offset+1+i, lengthp));
- }
- break;
- }
- default:
- {
- if((parameter_length > 0) && (parameter_length <= 8))
- {
- guint64 param_value = 0;
-
- for(i = parameter_length; i > 0; i--)
- {
- param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
- }
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf, "%" G_GINT64_MODIFIER "u", param_value);
- }
- else
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf,
- "0x%02x 0x%02x ... 0x%02x 0x%02x",
- tvb_get_guint8(tvb, offset + 2),
- tvb_get_guint8(tvb, offset + 3),
- tvb_get_guint8(tvb, offset + parameter_length),
- tvb_get_guint8(tvb, offset + 1 + parameter_length));
- }
- }
- break;
- }
-
- ua3g_param_item = proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- parameter_length + 2,
- "%s: %s",
- val_to_str(parameter_id, str_parameter_id, "Unknown"), strbuf->str);
- }
- else
- ua3g_param_item = proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- parameter_length + 2,
- "%s",
- val_to_str(parameter_id, str_parameter_id, "Unknown"));
-
- ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Parameter: %s (0x%02x)",
- val_to_str(parameter_id, str_parameter_id, "Unknown"), parameter_id);
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Length: %d",
- parameter_length);
- offset++;
- length--;
-
- if(parameter_length > 0)
- {
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- parameter_length,
- "Value: %s",
- strbuf->str);
- offset += parameter_length;
- length -= parameter_length;
- }
- }
- break;
- }
- case 0x03:
- {
- int i, parameter_id, parameter_length;
- int element_length = 1;
- int framing_rtp = 0;
- char parameter_value_tab[15][50];
- static const value_string str_parameter_id[] = {
- {0x01, "Date Of End Of Communication"},
- {0x02, "Node Number"},
- {0x03, "Ticket Protocol Version"},
- {0x06, "Equiment Type"},
- {0x08, "Local IP Address"},
- {0x09, "Distant IP Address"},
- {0x0A, "Local ID"},
- {0x0B, "Distant ID"},
- {0x0C, "Call Duration (second)"},
- {0x0D, "Local SSRC"},
- {0x0E, "Distant SSRC"},
- {0x0F, "Codec"},
- {0x10, "VAD"},
- {0x11, "ECE"},
- {0x12, "Voice Mode"},
- {0x13, "Transmitted Framing (ms)"},
- {0x14, "Received Framing (ms)"},
- {0x15, "Framing Changes"},
- {0x16, "Number Of RTP Packets Received"},
- {0x17, "Number Of RTP Packets Sent"},
- {0x18, "Number Of RTP Packets Lost"},
- {0x19, "Total Silence Detected (second)"},
- {0x1A, "Number Of SID Received"},
- {0x1B, "Delay Distribution"},
- {0x1C, "Maximum Delay (ms)"},
- {0x1D, "Number Of DTMF Received"},
- {0x1E, "Consecutive BFI"},
- {0x1F, "BFI Distribution"},
- {0x20, "Jitter Depth Distribution"},
- {0x21, "Number Of ICMP Host Unreachable"},
- {0x26, "Firmware Version"},
- {0x29, "DSP Framing (ms)"},
- {0x2A, "Transmitter SID"},
- {0x2D, "Minimum Delay (ms)"},
- {0x2E, "802.1 Q Used"},
- {0x2F, "802.1p Priority"},
- {0x30, "VLAN Id"},
- {0x31, "DiffServ"},
- {0x3D, "200 ms BFI Distribution"},
- {0x3E, "Consecutive RTP Lost"},
- {0, NULL}
- };
- static const value_string str_parameter_id_tab[] = {
- {0x1B, "Range: Value"},
- {0x1F, "Range: Value"},
- {0x20, "Jitter: Value"},
- {0x3D, "Contents: Value"},
- {0x3E, "Contents: Value"},
- {0, NULL}
- };
-
- while(length > 0)
- {
- parameter_id = tvb_get_guint8(tvb, offset);
- parameter_length = tvb_get_ntohs(tvb, offset + 1);
-
- if(parameter_length > 0)
- {
- switch(parameter_id)
- {
- case 0x06: /* Type Of Equipment */
- {
- static const value_string str_first_byte[] = {
- {0x01, "IP-Phone"},
- {0x02, "Appli-PC"},
- {0x03, "Coupler OmniPCX Enterprise"},
- {0x04, "Coupler OmniPCX Office"},
- {0, NULL}
- };
- static const value_string str_second_byte[] = {
- {0x0101, "IP-Phone V2"},
- {0x0102, "NOE-IP"},
- {0x0200, "4980 Softphone (PCMM2)"},
- {0x0201, "WebSoftphoneIP"},
- {0x0300, "INTIP"},
- {0x0301, "GD"},
- {0x0302, "eVA"},
- {0, NULL}
- };
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf, "%s, %s",
- val_to_str(tvb_get_guint8(tvb, offset + 3), str_first_byte, "Unknown"),
- val_to_str(tvb_get_ntohs(tvb, offset + 3), str_second_byte, "Unknown"));
- break;
- }
- case 0x08: /* Local IP Address */
- case 0x09: /* Distant IP Address */
- case 0x26: /* Firmware Version */
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf, "%d", tvb_get_guint8(tvb, offset + 3));
- for(i = 2; i <= parameter_length; i++)
- {
- ep_strbuf_append(strbuf, ".");
- ep_strbuf_append_printf(strbuf, "%u", tvb_get_guint8(tvb, offset+2+i));
- }
- break;
- }
- case 0x0A:
- case 0x0B:
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append(strbuf, "\"");
- for(i = 1; i <= parameter_length; i++)
- {
- if(isprint(tvb_get_guint8(tvb, offset + 2 + i)))
- ep_strbuf_append(strbuf, tvb_get_const_stringz(tvb, offset+2+i, lengthp));
- else
- ep_strbuf_append(strbuf, tvb_get_const_stringz(tvb, offset+2+i, lengthp));
- }
- ep_strbuf_append(strbuf, "\"");
- break;
- }
- case 0x0F: /* Default Codec */
- {
- static const value_string str_compressor[] = {
- {0x00, "G.711 A-law"},
- {0x01, "G.711 mu-law"},
- {0x02, "G.723.1 6.3kbps"},
- {0x03, "G.729"},
- {0x04, "G.723.1 5.3kbps"},
- {0, NULL}
- };
-
- if((parameter_length > 0) && (parameter_length <= 8))
- {
- guint64 param_value = 0;
- for(i = parameter_length; i > 0; i--)
- {
- param_value += (tvb_get_guint8(tvb, offset + 2 + i) << (8 * (parameter_length - i)));
- }
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append(strbuf, val_to_str((guint8)(param_value), str_compressor, "Default Codec"));
- }
- else
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append(strbuf, "Parameter Value Too Long (more than 64 bits)");
- }
-
- break;
- }
- case 0x10: /* VAD */
- case 0x11: /* ECE */
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf, "%s", val_to_str(tvb_get_guint8(tvb, offset + 3), str_on_off, "On"));
- break;
- }
- case 0x12: /* Voice Mode */
- {
- static const value_string str_voice_mode[] = {
- {0x50, "Idle"},
- {0x51, "Handset"},
- {0x52, "Group Listening"},
- {0x53, "On Hook Dial"},
- {0x54, "Handsfree"},
- {0x55, "Headset"},
- {0, NULL}
- };
-
- if((parameter_length > 0) && (parameter_length <= 8))
- {
- guint64 param_value = 0;
- for(i = parameter_length; i > 0; i--)
- {
- param_value += (tvb_get_guint8(tvb, offset + 2 + i) << (8 * (parameter_length - i)));
- }
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append(strbuf, val_to_str((guint8)(param_value), str_voice_mode, "Unknown"));
- }
- else
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append(strbuf, "Parameter Value Too Long (more than 64 bits)");
- }
-
- break;
- }
- case 0x1B: /* Delay Distribution */
- {
- static const value_string str_range[] = {
- {0, "0-40 "},
- {1, "40-80 "},
- {2, "80-150 "},
- {3, "150-250 "},
- {4, "250 and +"},
- {0, NULL}
- };
- element_length = 2;
- for(i = 0; i < (parameter_length / element_length); i++)
- {
- g_snprintf(parameter_value_tab[i], 50, "%s: %d",
- val_to_str(i, str_range, "Unknown"),
- tvb_get_ntohs(tvb, offset + 3 + element_length * i));
- }
- break;
- }
- case 0x1E: /* Consecutive BFI */
- {
- static const value_string str_range[] = {
- {0, "0"},
- {1, "1"},
- {2, "2"},
- {3, "3"},
- {4, "4"},
- {5, "5"},
- {6, "5"},
- {7, "7"},
- {8, "8"},
- {9, "9"},
- {0, NULL}
- };
- element_length = 2;
- for(i = 0; i < (parameter_length / element_length); i++)
- {
- g_snprintf(parameter_value_tab[i], 50, "%s: %d",
- val_to_str(i, str_range, "Unknown"),
- tvb_get_ntohs(tvb, offset + 3 + element_length * i));
- }
- break;
- }
- case 0x1F: /* BFI Distribution */
- {
- static const value_string str_range[] = {
- {0, "0 "},
- {1, "0-1 "},
- {2, "1-2 "},
- {3, "2-3 "},
- {4, "3 and +"},
- {0, NULL}
- };
- element_length = 2;
- for(i = 0; i < (parameter_length / element_length); i++)
- {
- g_snprintf(parameter_value_tab[i], 50, "%s: %d",
- val_to_str(i, str_range, "Unknown"),
- tvb_get_ntohs(tvb, offset + 3 + element_length * i));
- }
- break;
- }
- case 0x20: /* Jitter Depth Distribution */
- {
- element_length = 4;
- for(i = 0; i < (parameter_length / element_length); i++)
- {
- g_snprintf(parameter_value_tab[i], 50, "+/- %3d ms: %d",
- ((2 * i) + 1) * framing_rtp / 2,
- tvb_get_ntohl(tvb, offset + 3 + 4 * i));
- }
- break;
- }
- case 0x2E: /* 802.1 Q Used */
- {
- static const value_string str_bool[] = {
- {0x00, "False"},
- {0, NULL}
- };
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf, "%s", val_to_str(tvb_get_guint8(tvb, offset + 3), str_bool, "True"));
- break;
- }
- case 0x2F: /* 802.1p Priority */
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf, "%d", (tvb_get_guint8(tvb, offset + 3) & 0x07));
- break;
- }
- case 0x30: /* VLAN Id */
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf, "%d", (tvb_get_ntohs(tvb, offset + 3) & 0x0FFF));
- break;
- }
- case 0x31: /* DiffServ */
- {
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf, "%d (%d)", tvb_get_guint8(tvb, offset + 3), tvb_get_guint8(tvb, offset + 3)>>2);
- break;
- }
- case 0x3D: /* 200 ms BFI Distribution */
- {
- static const value_string str_range[] = {
- {0, "< 10 % "},
- {1, "< 20 % "},
- {2, "< 40 % "},
- {3, "< 60 % "},
- {4, ">= 60 % "},
- {0, NULL}
- };
- element_length = 2;
- for(i = 0; i < (parameter_length / element_length); i++)
- {
- g_snprintf(parameter_value_tab[i], 50, "%s: %d",
- val_to_str(i, str_range, "Unknown"),
- tvb_get_ntohs(tvb, offset + 3 + element_length * i));
- }
- break;
- }
- case 0x3E: /* Consecutive RTP Lost */
- {
- static const value_string str_range[] = {
- {0, "1 "},
- {1, "2 "},
- {2, "3 "},
- {3, "4 "},
- {4, "5 and more"},
- {0, NULL}
- };
- element_length = 2;
- for(i = 0; i < (parameter_length / element_length); i++)
- {
- g_snprintf(parameter_value_tab[i], 50, "%s: %d",
- val_to_str(i, str_range, "Unknown"),
- tvb_get_ntohs(tvb, offset + 3 + element_length * i));
- }
- break;
- }
- case 0x14: /* Received Framing (ms) */
- {
- framing_rtp = tvb_get_guint8(tvb, offset + 3);
- }
- case 0x01: /* Date Of End Of Communication */
- case 0x02: /* Node Number */
- case 0x03: /* Ticket Protocol Version */
- case 0x0C: /* Call Duration (second) */
- case 0x0D: /* Local SSRC */
- case 0x0E: /* Distant SSRC */
- case 0x13: /* Transmitted Framing (ms) */
- case 0x15: /* Framing Changes */
- case 0x16: /* Number Of RTP Packets Received */
- case 0x17: /* Number Of RTP Packets Sent */
- case 0x18: /* Number Of RTP Packets Lost */
- case 0x19: /* Total Silence Detected (second) */
- case 0x1A: /* Number Of SID Received */
- case 0x1C: /* Maximum Delay (ms) */
- case 0x1D: /* Number Of DTMF Received */
- case 0x21: /* Number Of ICMP Host Unreachable */
- case 0x29: /* DSP Framing (ms) */
- case 0x2A: /* Transmitter SID */
- case 0x2D: /* Minimum Delay (ms) */
- default:
- {
- guint64 param_value = 0;
-
- for(i = parameter_length; i > 0; i--)
- {
- param_value += (tvb_get_guint8(tvb, offset + 2 + i) << (8 * (parameter_length - i)));
- }
- ep_strbuf_truncate(strbuf, 0); ep_strbuf_append_printf(strbuf, "%" G_GINT64_MODIFIER "u", param_value);
- break;
- }
- }
- }
-
- switch(parameter_id)
- {
- /* Case of values in table */
- case 0x1B:
- case 0x1E:
- case 0x1F:
- case 0x20:
- case 0x3D:
- case 0x3E:
- {
- ua3g_param_item = proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- parameter_length + 3,
- "%s:",
- val_to_str(parameter_id, str_parameter_id, "Unknown"));
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset + 3,
- parameter_length,
- " %s",
- val_to_str(parameter_id, str_parameter_id_tab, "Unknown"));
- ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
-
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Parameter: %s (0x%02x)",
- val_to_str(parameter_id, str_parameter_id, "Unknown"), parameter_id);
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 2,
- "Length: %d",
- parameter_length);
- offset += 2;
- length -= 2;
-
- for(i = 0; i < (parameter_length / element_length); i++)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- element_length,
- " %s",
- parameter_value_tab[i]);
- offset += element_length;
- length -= element_length;
- }
- break;
- }
- default:
- {
- if(parameter_length > 0)
- ua3g_param_item = proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- parameter_length + 3,
- "%s: %s",
- val_to_str(parameter_id, str_parameter_id, "Unknown"), strbuf->str);
- else
- ua3g_param_item = proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- parameter_length + 3,
- "%s",
- val_to_str(parameter_id, str_parameter_id, "Unknown"));
-
- ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
-
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 1,
- "Parameter: %s (0x%02x)",
- val_to_str(parameter_id, str_parameter_id, "Unknown"), parameter_id);
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- 2,
- "Length: %d",
- parameter_length);
- offset += 2;
- length -= 2;
-
- if(parameter_length > 0)
- {
- proto_tree_add_text(ua3g_param_tree,
- tvb,
- offset,
- parameter_length,
- "Value: %s",
- strbuf->str);
- offset += parameter_length;
- length -= parameter_length;
- }
- break;
- }
- }
-
- }
- break;
- }
- default:
- {
- break;
- }
- }
+ guint8 command;
+ proto_tree *ua3g_body_tree;
+ proto_item *ua3g_param_item;
+ proto_tree *ua3g_param_tree;
+
+ static const value_string str_command[] = {
+ {0x00, "Init"},
+ {0x01, "Incident"},
+ {0x02, "Get Parameters Value Response"},
+ {0x03, "QOS Ticket RSP"},
+ {0, NULL}
+ };
+
+ command = tvb_get_guint8(tvb, offset);
+
+ /* add text to the frame "INFO" column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
+ val_to_str_const(command, str_command, "Unknown"));
+
+ if (!ua3g_body_item)
+ return;
+
+ /* add text to the frame tree */
+ proto_item_append_text(ua3g_item, ", %s",
+ val_to_str_const(command, str_command, "Unknown"));
+ proto_item_append_text(ua3g_body_item, " - %s",
+ val_to_str_const(command, str_command, "Unknown"));
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+
+ proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_ip, tvb, offset,
+ 1, command, "Command: %s",
+ val_to_str_const(command, str_command, "Unknown"));
+ offset++;
+ length--;
+
+ switch (command) {
+ case 0x00:
+ {
+ static const value_string str_vta_type[] = {
+ {0x20, "NOE A"},
+ {0x21, "NOE B"},
+ {0x22, "NOE C"},
+ {0x23, "NOE D"},
+ {0, NULL}
+ };
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "VTA Type: %s",
+ val_to_str_const(tvb_get_guint8(tvb, offset), str_vta_type, "Unknown"));
+ offset++;
+ length--;
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ 1, "Characteristic Number: %d", tvb_get_guint8(tvb, offset));
+ break;
+ }
+ case 0x01:
+ {
+ int i = 0;
+ if (length == 1) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Incident 0: %d", tvb_get_guint8(tvb, offset));
+ } else {
+ while (length >0) {
+ i++;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Parameter %d Identifier: %d",
+ i, tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ }
+ }
+ break;
+ }
+ case 0x02:
+ {
+ emem_strbuf_t *strbuf;
+ int i, parameter_id, parameter_length;
+
+ static const value_string str_parameter_id[] = {
+ {0x00, "Firmware Version"},
+ {0x01, "Firmware Version"},
+ {0x02, "DHCP IP Address"},
+ {0x03, "Local IP Address"},
+ {0x04, "Subnetwork Mask"},
+ {0x05, "Router IP Address"},
+ {0x06, "TFTP IP Address"},
+ {0x07, "Main CPU Address"},
+ {0x08, "Default Codec"},
+ {0x09, "Ethernet Drivers Config"},
+ {0x0A, "MAC Address"},
+ {0, NULL}
+ };
+ static value_string_ext str_parameter_id_ext = VALUE_STRING_EXT_INIT(str_parameter_id);
+
+ strbuf = ep_strbuf_new_label(NULL);
+
+ while (length > 0) {
+ ep_strbuf_truncate(strbuf, 0);
+
+ parameter_id = tvb_get_guint8(tvb, offset);
+ parameter_length = tvb_get_guint8(tvb, offset + 1);
+
+ if (parameter_length > 0) {
+ switch (parameter_id) {
+ case 0x00: /* Firmware Version */
+ {
+ ep_strbuf_append_printf(strbuf, "%s",
+ version_number_computer(tvb_get_ntohs(tvb, offset + 2)));
+ break;
+ }
+ case 0x01: /* Firmware Version */
+ case 0x02: /* DHCP IP Address */
+ case 0x03: /* Local IP Address */
+ case 0x04: /* Subnetwork Mask */
+ case 0x05: /* Router IP Address */
+ case 0x06: /* TFTP IP Address */
+ case 0x07: /* Main CPU Address */
+ {
+ ep_strbuf_append_printf(strbuf, "%d", tvb_get_guint8(tvb, offset + 2));
+
+ for (i = 2; i <= parameter_length; i++) {
+ ep_strbuf_append(strbuf, ".");
+ ep_strbuf_append_printf(strbuf, "%u", tvb_get_guint8(tvb, offset+1+i));
+ }
+ break;
+ }
+ case 0x08: /* Default Codec */
+ {
+ static const value_string str_compressor[] = {
+ {0x00, "G.711 A-law"},
+ {0x01, "G.711 mu-law"},
+ {0x0F, "G.723.1 5.3kbps"},
+ {0x10, "G.723.1 6.3kbps"},
+ {0x11, "G.729A 8 kbps"},
+ {0, NULL}
+ };
+
+ if (parameter_length <= 8) {
+ guint64 param_value = 0;
+
+ for (i = parameter_length; i > 0; i--) { /* XXX: Not needed since only LO byte used ? */
+ param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
+ }
+ ep_strbuf_append(strbuf,
+ val_to_str_const((guint8)(param_value), str_compressor, "Default Codec"));
+ } else {
+ ep_strbuf_append_printf(strbuf, "0x%02x 0x%02x ... 0x%02x 0x%02x",
+ tvb_get_guint8(tvb, offset + 2),
+ tvb_get_guint8(tvb, offset + 3),
+ tvb_get_guint8(tvb, offset + parameter_length),
+ tvb_get_guint8(tvb, offset + 1 + parameter_length));
+ }
+ break;
+ }
+ case 0x09: /* Ethernet Drivers Config */
+ {
+ if (parameter_length == 2) {
+ ep_strbuf_append_printf(strbuf,
+ "Port Lan Speed: %d - Port Lan Duplex: %d",
+ tvb_get_guint8(tvb, offset + 2),
+ tvb_get_guint8(tvb, offset + 3));
+ } else if (parameter_length == 4) {
+ ep_strbuf_append_printf(strbuf,
+ "Port Lan Speed: %d - Port Lan Duplex: %d - Port PC Speed: %d - Port PC Duplex: %d",
+ tvb_get_guint8(tvb, offset + 2),
+ tvb_get_guint8(tvb, offset + 3),
+ tvb_get_guint8(tvb, offset + 4),
+ tvb_get_guint8(tvb, offset + 5));
+ } else {
+ ep_strbuf_append_printf(strbuf, "0x%02x 0x%02x ... 0x%02x 0x%02x",
+ tvb_get_guint8(tvb, offset + 2),
+ tvb_get_guint8(tvb, offset + 3),
+ tvb_get_guint8(tvb, offset + parameter_length),
+ tvb_get_guint8(tvb, offset + 1 + parameter_length));
+ }
+ break;
+ }
+ case 0x0A: /* MAC Address */
+ {
+ ep_strbuf_append_printf(strbuf, "%02x", tvb_get_guint8(tvb, offset + 2));
+
+
+ /* XXX: Advancing thru param byte by byte, yet using stringz ?? */
+ for (i = 2; i <= parameter_length; i++) {
+ ep_strbuf_append(strbuf, ":");
+ ep_strbuf_append(strbuf, tvb_get_const_stringz(tvb, offset+1+i, NULL));
+ }
+ break;
+ }
+ default:
+ {
+ if (parameter_length <= 8) {
+ guint64 param_value = 0;
+
+ for (i = parameter_length; i > 0; i--) {
+ param_value += (tvb_get_guint8(tvb, offset + 1 + i) << (8 * (parameter_length - i)));
+ }
+ ep_strbuf_append_printf(strbuf, "%" G_GINT64_MODIFIER "u", param_value);
+ } else {
+ ep_strbuf_append_printf(strbuf, "0x%02x 0x%02x ... 0x%02x 0x%02x",
+ tvb_get_guint8(tvb, offset + 2),
+ tvb_get_guint8(tvb, offset + 3),
+ tvb_get_guint8(tvb, offset + parameter_length),
+ tvb_get_guint8(tvb, offset + 1 + parameter_length));
+ }
+ }
+ break;
+ }
+
+ ua3g_param_item = proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ parameter_length + 2, "%s: %s",
+ val_to_str_ext_const(parameter_id, &str_parameter_id_ext, "Unknown"), strbuf->str);
+ } else {
+ ua3g_param_item = proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ parameter_length + 2, "%s",
+ val_to_str_ext_const(parameter_id, &str_parameter_id_ext, "Unknown"));
+ }
+
+ ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1, "Parameter: %s (0x%02x)",
+ val_to_str_ext_const(parameter_id, &str_parameter_id_ext, "Unknown"), parameter_id);
+ offset++;
+ length--;
+
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1,
+ "Length: %d", parameter_length);
+ offset++;
+ length--;
+
+ if (parameter_length > 0) {
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, parameter_length,
+ "Value: %s", strbuf->str);
+ offset += parameter_length;
+ length -= parameter_length;
+ }
+ }
+ break;
+ }
+ case 0x03:
+ {
+ emem_strbuf_t *strbuf;
+ int i, parameter_id, parameter_length;
+ int element_length = 1;
+ int framing_rtp = 0;
+#define PVT_ROWS 15
+#define PVT_COLS 50
+ char parameter_value_tab[PVT_ROWS][PVT_COLS]; /* XXX: Use ep_alloc'd memory */
+
+ static const value_string str_parameter_id[] = {
+ {0x01, "Date Of End Of Communication"},
+ {0x02, "Node Number"},
+ {0x03, "Ticket Protocol Version"},
+ {0x06, "Equipment Type"},
+ {0x08, "Local IP Address"},
+ {0x09, "Distant IP Address"},
+ {0x0A, "Local ID"},
+ {0x0B, "Distant ID"},
+ {0x0C, "Call Duration (second)"},
+ {0x0D, "Local SSRC"},
+ {0x0E, "Distant SSRC"},
+ {0x0F, "Codec"},
+ {0x10, "VAD"},
+ {0x11, "ECE"},
+ {0x12, "Voice Mode"},
+ {0x13, "Transmitted Framing (ms)"},
+ {0x14, "Received Framing (ms)"},
+ {0x15, "Framing Changes"},
+ {0x16, "Number Of RTP Packets Received"},
+ {0x17, "Number Of RTP Packets Sent"},
+ {0x18, "Number Of RTP Packets Lost"},
+ {0x19, "Total Silence Detected (second)"},
+ {0x1A, "Number Of SID Received"},
+ {0x1B, "Delay Distribution"},
+ {0x1C, "Maximum Delay (ms)"},
+ {0x1D, "Number Of DTMF Received"},
+ {0x1E, "Consecutive BFI"},
+ {0x1F, "BFI Distribution"},
+ {0x20, "Jitter Depth Distribution"},
+ {0x21, "Number Of ICMP Host Unreachable"},
+ {0x26, "Firmware Version"},
+ {0x29, "DSP Framing (ms)"},
+ {0x2A, "Transmitter SID"},
+ {0x2D, "Minimum Delay (ms)"},
+ {0x2E, "802.1 Q Used"},
+ {0x2F, "802.1p Priority"},
+ {0x30, "VLAN Id"},
+ {0x31, "DiffServ"},
+ {0x3D, "200 ms BFI Distribution"},
+ {0x3E, "Consecutive RTP Lost"},
+ {0, NULL}
+ };
+ static value_string_ext str_parameter_id_ext = VALUE_STRING_EXT_INIT(str_parameter_id);
+
+ static const value_string str_parameter_id_tab[] = {
+ {0x1B, "Range: Value"},
+ {0x1F, "Range: Value"},
+ {0x20, "Jitter: Value"},
+ {0x3D, "Contents: Value"},
+ {0x3E, "Contents: Value"},
+ {0, NULL}
+ };
+
+ strbuf = ep_strbuf_new_label(NULL);
+
+ while (length > 0) {
+ ep_strbuf_truncate(strbuf, 0);
+
+ parameter_id = tvb_get_guint8(tvb, offset);
+ parameter_length = tvb_get_ntohs(tvb, offset + 1);
+
+ if (parameter_length > 0) {
+ switch (parameter_id) {
+ case 0x06: /* Type Of Equipment */
+ {
+ static const value_string str_first_byte[] = {
+ {0x01, "IP-Phone"},
+ {0x02, "Appli-PC"},
+ {0x03, "Coupler OmniPCX Enterprise"},
+ {0x04, "Coupler OmniPCX Office"},
+ {0, NULL}
+ };
+ static const value_string str_second_byte[] = {
+ {0x0101, "IP-Phone V2"},
+ {0x0102, "NOE-IP"},
+ {0x0200, "4980 Softphone (PCMM2)"},
+ {0x0201, "WebSoftphoneIP"},
+ {0x0300, "INTIP"},
+ {0x0301, "GD"},
+ {0x0302, "eVA"},
+ {0, NULL}
+ };
+ ep_strbuf_append_printf(strbuf, "%s, %s",
+ val_to_str_const(tvb_get_guint8(tvb, offset + 3), str_first_byte, "Unknown"),
+ val_to_str_const(tvb_get_ntohs(tvb, offset + 3), str_second_byte, "Unknown"));
+ break;
+ }
+ case 0x08: /* Local IP Address */
+ case 0x09: /* Distant IP Address */
+ case 0x26: /* Firmware Version */
+ {
+ ep_strbuf_append_printf(strbuf, "%d", tvb_get_guint8(tvb, offset + 3));
+ for (i = 2; i <= parameter_length; i++) {
+ ep_strbuf_append(strbuf, ".");
+ ep_strbuf_append_printf(strbuf, "%u", tvb_get_guint8(tvb, offset+2+i));
+ }
+ break;
+ }
+ case 0x0A:
+ case 0x0B:
+ {
+ ep_strbuf_append(strbuf, "\"");
+ for (i = 1; i <= parameter_length; i++) {
+ /* XXX: Advancing thru param byte by byte, yet using stringz ?? */
+ /* XXX: ! isprint() action same as for isprint() ?? */
+ if (isprint(tvb_get_guint8(tvb, offset + 2 + i)))
+ ep_strbuf_append(strbuf, tvb_get_const_stringz(tvb, offset+2+i, NULL));
+ else
+ ep_strbuf_append(strbuf, tvb_get_const_stringz(tvb, offset+2+i, NULL));
+ }
+ ep_strbuf_append(strbuf, "\"");
+ break;
+ }
+ case 0x0F: /* Default Codec */
+ {
+ static const value_string str_compressor[] = {
+ {0x00, "G.711 A-law"},
+ {0x01, "G.711 mu-law"},
+ {0x02, "G.723.1 6.3kbps"},
+ {0x03, "G.729"},
+ {0x04, "G.723.1 5.3kbps"},
+ {0, NULL}
+ };
+
+ if (parameter_length <= 8) {
+ guint64 param_value = 0;
+
+ for (i = parameter_length; i > 0; i--) { /* XXX: Not needed since only LO byte used ? */
+ param_value += (tvb_get_guint8(tvb, offset + 2 + i) << (8 * (parameter_length - i)));
+ }
+ ep_strbuf_append(strbuf,
+ val_to_str_const((guint8)(param_value), str_compressor, "Default Codec"));
+ } else {
+ ep_strbuf_append(strbuf, "Parameter Value Too Long (more than 64 bits)");
+ }
+
+ break;
+ }
+ case 0x10: /* VAD */
+ case 0x11: /* ECE */
+ {
+ ep_strbuf_append_printf(strbuf, "%s",
+ STR_ON_OFF(tvb_get_guint8(tvb, offset + 3)));
+ break;
+ }
+ case 0x12: /* Voice Mode */
+ {
+ static const value_string str_voice_mode[] = {
+ {0x50, "Idle"},
+ {0x51, "Handset"},
+ {0x52, "Group Listening"},
+ {0x53, "On Hook Dial"},
+ {0x54, "Handsfree"},
+ {0x55, "Headset"},
+ {0, NULL}
+ };
+
+ if (parameter_length <= 8) {
+ guint64 param_value = 0;
+
+ for (i = parameter_length; i > 0; i--) { /* XXX: Not needed since only LO byte used ? */
+ param_value += (tvb_get_guint8(tvb, offset + 2 + i) << (8 * (parameter_length - i)));
+ }
+ ep_strbuf_append(strbuf,
+ val_to_str_const((guint8)(param_value), str_voice_mode, "Unknown"));
+ } else {
+ ep_strbuf_append(strbuf, "Parameter Value Too Long (more than 64 bits)");
+ }
+
+ break;
+ }
+ case 0x1B: /* Delay Distribution */
+ {
+ static const value_string str_range[] = {
+ {0, "0-40 "},
+ {1, "40-80 "},
+ {2, "80-150 "},
+ {3, "150-250 "},
+ {4, "250 and +"},
+ {0, NULL}
+ };
+ element_length = 2;
+ for (i = 0; (i < (parameter_length / element_length)) && (i < PVT_ROWS); i++) {
+ g_snprintf(parameter_value_tab[i], PVT_COLS, "%s: %d",
+ val_to_str_const(i, str_range, "Unknown"),
+ tvb_get_ntohs(tvb, offset + 3 + element_length * i));
+ }
+ break;
+ }
+ case 0x1E: /* Consecutive BFI */
+ {
+ static const value_string str_range[] = {
+ {0, "0"},
+ {1, "1"},
+ {2, "2"},
+ {3, "3"},
+ {4, "4"},
+ {5, "5"},
+ {6, "5"},
+ {7, "7"},
+ {8, "8"},
+ {9, "9"},
+ {0, NULL}
+ };
+ static value_string_ext str_range_ext = VALUE_STRING_EXT_INIT(str_range);
+
+ element_length = 2;
+ for (i = 0; (i < (parameter_length / element_length)) && (i < PVT_ROWS); i++) {
+ g_snprintf(parameter_value_tab[i], PVT_COLS, "%s: %d",
+ val_to_str_ext_const(i, &str_range_ext, "Unknown"),
+ tvb_get_ntohs(tvb, offset + 3 + element_length * i));
+ }
+ break;
+ }
+ case 0x1F: /* BFI Distribution */
+ {
+ static const value_string str_range[] = {
+ {0, "0 "},
+ {1, "0-1 "},
+ {2, "1-2 "},
+ {3, "2-3 "},
+ {4, "3 and +"},
+ {0, NULL}
+ };
+ static value_string_ext str_range_ext = VALUE_STRING_EXT_INIT(str_range);
+
+ element_length = 2;
+ for (i = 0; (i < (parameter_length / element_length)) && (i < PVT_ROWS); i++) {
+ g_snprintf(parameter_value_tab[i], PVT_COLS, "%s: %d",
+ val_to_str_ext_const(i, &str_range_ext, "Unknown"),
+ tvb_get_ntohs(tvb, offset + 3 + element_length * i));
+ }
+ break;
+ }
+ case 0x20: /* Jitter Depth Distribution */
+ {
+ element_length = 4;
+ for (i = 0; (i < (parameter_length / element_length)) && (i < PVT_ROWS); i++) {
+ g_snprintf(parameter_value_tab[i], PVT_COLS, "+/- %3d ms: %d",
+ ((2 * i) + 1) * framing_rtp / 2,
+ tvb_get_ntohl(tvb, offset + 3 + 4 * i));
+ }
+ break;
+ }
+ case 0x2E: /* 802.1 Q Used */
+ {
+ ep_strbuf_append(strbuf,
+ tvb_get_guint8(tvb, offset + 3) ? "True" : "False");
+ break;
+ }
+ case 0x2F: /* 802.1p Priority */
+ {
+ ep_strbuf_append_printf(strbuf, "%d", (tvb_get_guint8(tvb, offset + 3) & 0x07));
+ break;
+ }
+ case 0x30: /* VLAN Id */
+ {
+ ep_strbuf_append_printf(strbuf, "%d", (tvb_get_ntohs(tvb, offset + 3) & 0x0FFF));
+ break;
+ }
+ case 0x31: /* DiffServ */
+ {
+ ep_strbuf_append_printf(strbuf, "%d (%d)", tvb_get_guint8(tvb, offset + 3),
+ tvb_get_guint8(tvb, offset + 3)>>2);
+ break;
+ }
+ case 0x3D: /* 200 ms BFI Distribution */
+ {
+ static const value_string str_range[] = {
+ {0, "< 10 % "},
+ {1, "< 20 % "},
+ {2, "< 40 % "},
+ {3, "< 60 % "},
+ {4, ">= 60 % "},
+ {0, NULL}
+ };
+ static value_string_ext str_range_ext = VALUE_STRING_EXT_INIT(str_range);
+
+ element_length = 2;
+ for (i = 0; (i < (parameter_length / element_length)) && (i < PVT_ROWS); i++) {
+ g_snprintf(parameter_value_tab[i], PVT_COLS, "%s: %d",
+ val_to_str_ext_const(i, &str_range_ext, "Unknown"),
+ tvb_get_ntohs(tvb, offset + 3 + element_length * i));
+ }
+ break;
+ }
+ case 0x3E: /* Consecutive RTP Lost */
+ {
+ static const value_string str_range[] = {
+ {0, "1 "},
+ {1, "2 "},
+ {2, "3 "},
+ {3, "4 "},
+ {4, "5 and more"},
+ {0, NULL}
+ };
+ static value_string_ext str_range_ext = VALUE_STRING_EXT_INIT(str_range);
+
+ element_length = 2;
+ for (i = 0; (i < (parameter_length / element_length)) && (i < PVT_ROWS); i++) {
+ g_snprintf(parameter_value_tab[i], PVT_COLS, "%s: %d",
+ val_to_str_ext_const(i, &str_range_ext, "Unknown"),
+ tvb_get_ntohs(tvb, offset + 3 + element_length * i));
+ }
+ break;
+ }
+ case 0x14: /* Received Framing (ms) */
+ {
+ framing_rtp = tvb_get_guint8(tvb, offset + 3);
+ }
+ case 0x01: /* Date Of End Of Communication */
+ case 0x02: /* Node Number */
+ case 0x03: /* Ticket Protocol Version */
+ case 0x0C: /* Call Duration (second) */
+ case 0x0D: /* Local SSRC */
+ case 0x0E: /* Distant SSRC */
+ case 0x13: /* Transmitted Framing (ms) */
+ case 0x15: /* Framing Changes */
+ case 0x16: /* Number Of RTP Packets Received */
+ case 0x17: /* Number Of RTP Packets Sent */
+ case 0x18: /* Number Of RTP Packets Lost */
+ case 0x19: /* Total Silence Detected (second) */
+ case 0x1A: /* Number Of SID Received */
+ case 0x1C: /* Maximum Delay (ms) */
+ case 0x1D: /* Number Of DTMF Received */
+ case 0x21: /* Number Of ICMP Host Unreachable */
+ case 0x29: /* DSP Framing (ms) */
+ case 0x2A: /* Transmitter SID */
+ case 0x2D: /* Minimum Delay (ms) */
+ default:
+ {
+ guint64 param_value = 0;
+
+ for (i = parameter_length; i > 0; i--) {
+ param_value += (tvb_get_guint8(tvb, offset + 2 + i) << (8 * (parameter_length - i)));
+ }
+ ep_strbuf_append_printf(strbuf, "%" G_GINT64_MODIFIER "u", param_value);
+ break;
+ }
+ }
+ }
+
+ switch (parameter_id)
+ {
+ /* Case of values in table */
+ case 0x1B:
+ case 0x1E:
+ case 0x1F:
+ case 0x20:
+ case 0x3D:
+ case 0x3E:
+ {
+ ua3g_param_item = proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ parameter_length + 3, "%s:",
+ val_to_str_ext_const(parameter_id, &str_parameter_id_ext, "Unknown"));
+ proto_tree_add_text(ua3g_body_tree, tvb, offset + 3,
+ parameter_length, " %s",
+ val_to_str_const(parameter_id, str_parameter_id_tab, "Unknown"));
+ ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
+
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1,
+ "Parameter: %s (0x%02x)",
+ val_to_str_ext_const(parameter_id, &str_parameter_id_ext, "Unknown"), parameter_id);
+ offset++;
+ length--;
+
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 2,
+ "Length: %d", parameter_length);
+ offset += 2;
+ length -= 2;
+
+ for (i = 0; (i < (parameter_length / element_length)) && (i < PVT_ROWS); i++) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ element_length, " %s", parameter_value_tab[i]);
+ offset += element_length;
+ length -= element_length;
+ }
+ if (i >= PVT_ROWS) {
+ gint length_remaining = parameter_length - PVT_ROWS*element_length;
+ proto_tree_add_text(ua3g_body_tree,
+ tvb, offset, length_remaining,
+ "Unknown Parameter Data");
+ offset += length_remaining;
+ length -= length_remaining;
+ }
+ break;
+ }
+ default:
+ {
+ if (parameter_length > 0) {
+ ua3g_param_item = proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ parameter_length + 3, "%s: %s",
+ val_to_str_ext_const(parameter_id, &str_parameter_id_ext, "Unknown"), strbuf->str);
+ } else {
+ ua3g_param_item = proto_tree_add_text(ua3g_body_tree, tvb, offset,
+ parameter_length + 3, "%s",
+ val_to_str_ext_const(parameter_id, &str_parameter_id_ext, "Unknown"));
+ }
+
+ ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param);
+
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 1, "Parameter: %s (0x%02x)",
+ val_to_str_ext_const(parameter_id, &str_parameter_id_ext, "Unknown"), parameter_id);
+ offset++;
+ length--;
+
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, 2, "Length: %d", parameter_length);
+ offset += 2;
+ length -= 2;
+
+ if (parameter_length > 0) {
+ proto_tree_add_text(ua3g_param_tree, tvb, offset, parameter_length,
+ "Value: %s", strbuf->str);
+ offset += parameter_length;
+ length -= parameter_length;
+ }
+ break;
+ }
+ }
+
+ }
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
}
/*-----------------------------------------------------------------------------
- UNSOLICITED MESSAGE - 9Fh/1Fh (MESSAGE FROM THE TERMINAL)
- VERSION RESPONSE - 21h (MESSAGE FROM THE TERMINAL)
- ---------------------------------------------------------------------------*/
+ UNSOLICITED MESSAGE - 9Fh/1Fh (MESSAGE FROM THE TERMINAL)
+ VERSION RESPONSE - 21h (MESSAGE FROM THE TERMINAL)
+ ---------------------------------------------------------------------------*/
static void
-decode_unsolicited_msg(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo,
- guint offset,
- guint length,
- guint8 opcode,
- proto_item *ua3g_item,
- proto_item *ua3g_body_item)
+decode_unsolicited_msg(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo,
+ guint offset, guint length, guint8 opcode,
+ proto_item *ua3g_item, proto_item *ua3g_body_item)
{
- guint8 command = tvb_get_guint8(tvb, offset);
- proto_tree *ua3g_body_tree;
- static const value_string str_command[] = {
- {0x00, "Hardware Reset Acknowledge"},
- {0x01, "Software Reset Acknowledge"},
- {0x02, "Illegal Command Received"},
- {0x05, "Subdevice Down"},
- {0x06, "Segment Failure"},
- {0x07, "UA Device Event"},
- {0, NULL}
- };
-
- if(opcode != 0x21)
- {
- /* add text to the frame tree */
- proto_item_append_text(ua3g_item,
- ", %s",
- val_to_str(command, str_command, "Unknown"));
- proto_item_append_text(ua3g_body_item,
- " - %s",
- val_to_str(command, str_command, "Unknown"));
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
-
- /* add text to the frame "INFO" column */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
- val_to_str(command, str_command, "Unknown"));
-
- proto_tree_add_uint_format(ua3g_body_tree,
- hf_ua3g_command,
- tvb,
- offset,
- 1,
- command,
- "Command: %s",
- val_to_str(command, str_command, "Unknown"));
- offset++;
- length--;
- }
- else
- {
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
- command = 0xFF; /* Opcode = 0x21 */
- }
-
- switch(command)
- {
- case 0x00: /* Hardware Reset Acknowledge */
- case 0x01: /* Software Reset Acknowledge */
- case 0xFF: /* Opcode = 0x21 : Version Response */
- {
- int link, vta_type;
- static const value_string str_vta_type[] = {
- {0x03, "4035"},
- {0x04, "4020"},
- {0x05, "4010"},
- {0x20, "NOE A"},
- {0x21, "NOE B"},
- {0x22, "NOE C"},
- {0x23, "NOE D"},
- {0, NULL}
- };
- static const value_string str_other_info_1[] = {
- {0x00, "Link Is TDM"},
- {0x01, "Link Is IP"},
- {0, NULL}
- };
- static const value_string str_other_info_2[] = {
- {0x00, "Download Allowed"},
- {0x01, "Download Refused"},
- {0, NULL}
- };
- static const value_string str_hard_config_ip[] = {
- {0x00, "Export Binary (No Thales)"},
- {0x01, "Full Binary (Thales)"},
- {0, NULL}
- };
- static const value_string str_hard_config_chip[] = {
- {0x00, "Chip Id: Unknown"},
- {0x01, "Chip Id: Ivanoe 1"},
- {0x02, "Chip Id: Ivanoe 2"},
- {0x03, "Chip Id: Reserved"},
- {0, NULL}
- };
- static const value_string str_hard_config_flash[] = {
- {0x00, "Flash Size: No Flash"},
- {0x01, "Flash Size: 128 Kbytes"},
- {0x02, "Flash Size: 256 Kbytes"},
- {0x03, "Flash Size: 512 Kbytes"},
- {0x04, "Flash Size: 1 Mbytes"},
- {0x05, "Flash Size: 2 Mbytes"},
- {0x06, "Flash Size: 4 Mbytes"},
- {0x07, "Flash Size: 8 Mbytes"},
- {0, NULL}
- };
- static const value_string str_hard_config_ram[] = {
- {0x00, "External RAM Size: No External RAM"},
- {0x01, "External RAM Size: 128 Kbytes"},
- {0x02, "External RAM Size: 256 Kbytes"},
- {0x03, "External RAM Size: 512 Kbytes"},
- {0x04, "External RAM Size: 1 Mbytes"},
- {0x05, "External RAM Size: 2 Mbytes"},
- {0x06, "External RAM Size: 4 Mbytes"},
- {0x07, "External RAM Size: 8 Mbytes"},
- {0, NULL}
- };
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Device Type: %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_device_type, "Unknown"));
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 2,
- "Firmware Version: %s",
- version_number_computer(tvb_get_ntohs(tvb, offset)));
- offset += 2;
- length -= 2;
-
- if(opcode != 0x21)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Self-Test Result: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- }
-
- vta_type = tvb_get_guint8(tvb, offset);
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "VTA Type: %s",
- val_to_str(vta_type, str_vta_type, "Unknown"));
- offset++;
- length--;
-
- switch(vta_type)
- {
- case 0x03:
- case 0x04:
- case 0x05:
- {
- static const value_string str_subtype[] = {
- {0x03, "2x40"},
- {0x04, "1x20"},
- {0x05, "1x20"},
- {0, NULL}
- };
- static const value_string str_generation[] = {
- {0x02, "3"},
- {0, NULL}
- };
- static const value_string str_design[] = {
- {0x00, "Alpha"},
- {0, NULL}
- };
- static const value_string str_hard_vta_type[] = {
- {0x03, "MR2 (4035)"},
- {0x05, "VLE (4010)"},
- {0x07, "LE (4020)"},
- {0, NULL}
- };
- static const value_string str_hard_design[] = {
- {0x06, "Alpha"},
- {0, NULL}
- };
- static const value_string str_hard_subtype[] = {
- {0x06, "2x40"},
- {0x07, "1x20"},
- {0x08, "1x20"},
- {0, NULL}
- };
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Characteristic Number: VTA SubType: %s, Generation: %s, Design: %s",
- val_to_str((((tvb_get_guint8(tvb, offset) & 0xC0) >> 6) + vta_type), str_subtype, "Unknown"),
- val_to_str(((tvb_get_guint8(tvb, offset) & 0x38) >> 3), str_generation, "Unknown"),
- val_to_str((tvb_get_guint8(tvb, offset) & 0x07), str_design, "Unknown"));
- offset++;
- length--;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Other Information: %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_other_info_2, "Unknown"));
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Hardware Configuration: VTA Type: %s, Design: %s, VTA SubType: %s",
- val_to_str((((tvb_get_guint8(tvb, offset) & 0xE0) >> 5) + vta_type), str_hard_vta_type, "Unknown"),
- val_to_str(((tvb_get_guint8(tvb, offset) & 0x1C) >> 2), str_hard_design, "Unknown"),
- val_to_str((tvb_get_guint8(tvb, offset) & 0x03), str_hard_subtype, "Unknown"));
- offset++;
- length--;
-
- if(opcode != 0x21)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Hook Status/BCM Version: %s Hook",
- val_to_str(tvb_get_guint8(tvb, offset), str_on_off, "On"));
- offset++;
- length--;
-
- }
- break;
- }
- case 0x20:
- case 0x21:
- case 0x22:
- case 0x23:
- default:
- {
- link = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Other Information 1: %s",
- val_to_str(link, str_other_info_1, "Unknown"));
- offset++;
- length--;
-
- if(link == 0x00)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Hardware Version: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Hardware Configuration: %s, %s, %s",
- val_to_str((tvb_get_guint8(tvb, offset) & 0x03), str_hard_config_chip, "Unknown"),
- val_to_str(((tvb_get_guint8(tvb, offset) & 0x1C) >> 2), str_hard_config_flash, "Unknown"),
- val_to_str(((tvb_get_guint8(tvb, offset) & 0xE0) >> 5), str_hard_config_ram, "Unknown"));
- offset++;
- length--;
- }
- else
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Other Information 2: %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_other_info_2, "Unknown"));
- offset++;
- length--;
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Hardware Configuration: %s",
- val_to_str((tvb_get_guint8(tvb, offset) & 0x01), str_hard_config_ip, "Unknown"));
- offset++;
- length--;
- }
-
- if(opcode != 0x21)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Hook Status: %s Hook",
- val_to_str(tvb_get_guint8(tvb, offset), str_on_off, "On"));
- offset++;
- length--;
-
- if(length > 0)
- {
- if(link == 0x00)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 2,
- "Firmware Datas Patch Version: %s",
- version_number_computer(tvb_get_ntohs(tvb, offset)));
- offset += 2;
- length -= 2;
-
- if(length >0)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 2,
- "Firmware Version (Loader): %s",
- version_number_computer(tvb_get_ntohs(tvb, offset)));
- }
- }
-
- else
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 2,
- "Datas Version: %s",
- version_number_computer(tvb_get_ntohs(tvb, offset)));
- offset += 2;
- length -= 2;
-
- if(length >0)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 2,
- "Firmware Version (Bootloader): %s",
- version_number_computer(tvb_get_ntohs(tvb, offset)));
- }
- }
- }
- }
- break;
- }
- }
- break;
- }
- case 0x02: /* Illegal Command Received */
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Opcode Of Bad Command: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
-
- while(length >0)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Next Byte Of Bad Command: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
- length--;
- }
- break;
- }
- case 0x05: /* Subdevice Down */
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Subdevice Address: %d",
- tvb_get_guint8(tvb, offset));
- break;
- }
- case 0x06: /* Segment Failure */
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "T: %d",
- (tvb_get_guint8(tvb, offset) & 0x01));
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Num: %d",
- (tvb_get_guint8(tvb, offset) & 0x02));
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "/S: %d",
- (tvb_get_guint8(tvb, offset) & 0x04));
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "L: %d",
- (tvb_get_guint8(tvb, offset) & 0x08));
- offset++;
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Opcode Bad Segment: %d",
- tvb_get_guint8(tvb, offset));
- offset++;
-
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Next Byte Of Bad Segment: %d",
- tvb_get_guint8(tvb, offset));
- break;
- }
- case 0x07: /* UA Device Event */
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Device Event: %d",
- tvb_get_guint8(tvb, offset));
- break;
- }
- default:
- {
- break;
- }
- }
+ guint8 command;
+ proto_tree *ua3g_body_tree;
+
+ static const value_string str_command[] = {
+ {0x00, "Hardware Reset Acknowledge"},
+ {0x01, "Software Reset Acknowledge"},
+ {0x02, "Illegal Command Received"},
+ {0x05, "Subdevice Down"},
+ {0x06, "Segment Failure"},
+ {0x07, "UA Device Event"},
+ {0, NULL}
+ };
+ static value_string_ext str_command_ext = VALUE_STRING_EXT_INIT(str_command);
+
+ command = tvb_get_guint8(tvb, offset);
+
+ if (opcode != 0x21) {
+ /* add text to the frame "INFO" column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
+ val_to_str_ext_const(command, &str_command_ext, "Unknown"));
+
+ if (!ua3g_body_item)
+ return;
+
+ /* add text to the frame tree */
+ proto_item_append_text(ua3g_item, ", %s",
+ val_to_str_ext_const(command, &str_command_ext, "Unknown"));
+ proto_item_append_text(ua3g_body_item, " - %s",
+ val_to_str_ext_const(command, &str_command_ext, "Unknown"));
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+
+ proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_command, tvb,
+ offset, 1, command, "Command: %s",
+ val_to_str_ext_const(command, &str_command_ext, "Unknown"));
+ offset++;
+ length--;
+ } else {
+ if (!ua3g_body_item)
+ return;
+
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+ command = 0xFF; /* Opcode = 0x21 */
+ }
+
+ switch (command)
+ {
+ case 0x00: /* Hardware Reset Acknowledge */
+ case 0x01: /* Software Reset Acknowledge */
+ case 0xFF: /* Opcode = 0x21 : Version Response */
+ {
+ int link, vta_type;
+ static const value_string str_vta_type[] = {
+ {0x03, "4035"},
+ {0x04, "4020"},
+ {0x05, "4010"},
+ {0x20, "NOE A"},
+ {0x21, "NOE B"},
+ {0x22, "NOE C"},
+ {0x23, "NOE D"},
+ {0, NULL}
+ };
+ static const value_string str_other_info_1[] = {
+ {0x00, "Link Is TDM"},
+ {0x01, "Link Is IP"},
+ {0, NULL}
+ };
+ static const value_string str_other_info_2[] = {
+ {0x00, "Download Allowed"},
+ {0x01, "Download Refused"},
+ {0, NULL}
+ };
+ static const value_string str_hard_config_ip[] = {
+ {0x00, "Export Binary (No Thales)"},
+ {0x01, "Full Binary (Thales)"},
+ {0, NULL}
+ };
+ static const value_string str_hard_config_chip[] = {
+ {0x00, "Chip Id: Unknown"},
+ {0x01, "Chip Id: Ivanoe 1"},
+ {0x02, "Chip Id: Ivanoe 2"},
+ {0x03, "Chip Id: Reserved"},
+ {0, NULL}
+ };
+ static const value_string str_hard_config_flash[] = {
+ {0x00, "Flash Size: No Flash"},
+ {0x01, "Flash Size: 128 Kbytes"},
+ {0x02, "Flash Size: 256 Kbytes"},
+ {0x03, "Flash Size: 512 Kbytes"},
+ {0x04, "Flash Size: 1 Mbytes"},
+ {0x05, "Flash Size: 2 Mbytes"},
+ {0x06, "Flash Size: 4 Mbytes"},
+ {0x07, "Flash Size: 8 Mbytes"},
+ {0, NULL}
+ };
+ static const value_string str_hard_config_ram[] = {
+ {0x00, "External RAM Size: No External RAM"},
+ {0x01, "External RAM Size: 128 Kbytes"},
+ {0x02, "External RAM Size: 256 Kbytes"},
+ {0x03, "External RAM Size: 512 Kbytes"},
+ {0x04, "External RAM Size: 1 Mbytes"},
+ {0x05, "External RAM Size: 2 Mbytes"},
+ {0x06, "External RAM Size: 4 Mbytes"},
+ {0x07, "External RAM Size: 8 Mbytes"},
+ {0, NULL}
+ };
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "Device Type: %s",
+ val_to_str_const(tvb_get_guint8(tvb, offset), str_device_type, "Unknown"));
+ offset++;
+ length--;
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 2, "Firmware Version: %s",
+ version_number_computer(tvb_get_ntohs(tvb, offset)));
+ offset += 2;
+ length -= 2;
+
+ if (opcode != 0x21) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Self-Test Result: %d", tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ }
+
+ vta_type = tvb_get_guint8(tvb, offset);
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "VTA Type: %s",
+ val_to_str_const(vta_type, str_vta_type, "Unknown"));
+ offset++;
+ length--;
+
+ switch (vta_type)
+ {
+ case 0x03:
+ case 0x04:
+ case 0x05:
+ {
+ static const value_string str_subtype[] = {
+ {0x03, "2x40"},
+ {0x04, "1x20"},
+ {0x05, "1x20"},
+ {0, NULL}
+ };
+ static const value_string str_generation[] = {
+ {0x02, "3"},
+ {0, NULL}
+ };
+ static const value_string str_design[] = {
+ {0x00, "Alpha"},
+ {0, NULL}
+ };
+ static const value_string str_hard_vta_type[] = {
+ {0x03, "MR2 (4035)"},
+ {0x05, "VLE (4010)"},
+ {0x07, "LE (4020)"},
+ {0, NULL}
+ };
+ static const value_string str_hard_design[] = {
+ {0x06, "Alpha"},
+ {0, NULL}
+ };
+ static const value_string str_hard_subtype[] = {
+ {0x06, "2x40"},
+ {0x07, "1x20"},
+ {0x08, "1x20"},
+ {0, NULL}
+ };
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Characteristic Number: VTA SubType: %s, Generation: %s, Design: %s",
+ val_to_str_const((((tvb_get_guint8(tvb, offset) & 0xC0) >> 6) + vta_type), str_subtype, "Unknown"),
+ val_to_str_const(((tvb_get_guint8(tvb, offset) & 0x38) >> 3), str_generation, "Unknown"),
+ val_to_str_const((tvb_get_guint8(tvb, offset) & 0x07), str_design, "Unknown"));
+ offset++;
+ length--;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Other Information: %s",
+ val_to_str_const(tvb_get_guint8(tvb, offset), str_other_info_2, "Unknown"));
+ offset++;
+ length--;
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Hardware Configuration: VTA Type: %s, Design: %s, VTA SubType: %s",
+ val_to_str_const((((tvb_get_guint8(tvb, offset) & 0xE0) >> 5) + vta_type), str_hard_vta_type, "Unknown"),
+ val_to_str_const(((tvb_get_guint8(tvb, offset) & 0x1C) >> 2), str_hard_design, "Unknown"),
+ val_to_str_const((tvb_get_guint8(tvb, offset) & 0x03), str_hard_subtype, "Unknown"));
+ offset++;
+ length--;
+
+ if (opcode != 0x21) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Hook Status/BCM Version: %s Hook",
+ STR_ON_OFF(tvb_get_guint8(tvb, offset)));
+ offset++;
+ length--;
+
+ }
+ break;
+ }
+ case 0x20:
+ case 0x21:
+ case 0x22:
+ case 0x23:
+ default:
+ {
+ link = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Other Information 1: %s",
+ val_to_str_const(link, str_other_info_1, "Unknown"));
+ offset++;
+ length--;
+
+ if (link == 0x00) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Hardware Version: %d", tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Hardware Configuration: %s, %s, %s",
+ val_to_str_const((tvb_get_guint8(tvb, offset) & 0x03), str_hard_config_chip, "Unknown"),
+ val_to_str_const(((tvb_get_guint8(tvb, offset) & 0x1C) >> 2), str_hard_config_flash, "Unknown"),
+ val_to_str_const(((tvb_get_guint8(tvb, offset) & 0xE0) >> 5), str_hard_config_ram, "Unknown"));
+ offset++;
+ length--;
+ } else {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "Other Information 2: %s",
+ val_to_str_const(tvb_get_guint8(tvb, offset), str_other_info_2, "Unknown"));
+ offset++;
+ length--;
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "Hardware Configuration: %s",
+ val_to_str_const((tvb_get_guint8(tvb, offset) & 0x01), str_hard_config_ip, "Unknown"));
+ offset++;
+ length--;
+ }
+
+ if (opcode != 0x21) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "Hook Status: %s Hook",
+ STR_ON_OFF(tvb_get_guint8(tvb, offset)));
+ offset++;
+ length--;
+
+ if (length > 0) {
+ if (link == 0x00) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 2,
+ "Firmware Datas Patch Version: %s",
+ version_number_computer(tvb_get_ntohs(tvb, offset)));
+ offset += 2;
+ length -= 2;
+
+ if (length > 0) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 2,
+ "Firmware Version (Loader): %s",
+ version_number_computer(tvb_get_ntohs(tvb, offset)));
+ }
+ } else {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 2,
+ "Datas Version: %s",
+ version_number_computer(tvb_get_ntohs(tvb, offset)));
+ offset += 2;
+ length -= 2;
+
+ if (length > 0) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 2,
+ "Firmware Version (Bootloader): %s",
+ version_number_computer(tvb_get_ntohs(tvb, offset)));
+ }
+ }
+ }
+ }
+ break;
+ }
+ }
+ break;
+ }
+ case 0x02: /* Illegal Command Received */
+ {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Opcode Of Bad Command: %d", tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+
+ while (length >0) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Next Byte Of Bad Command: %d", tvb_get_guint8(tvb, offset));
+ offset++;
+ length--;
+ }
+ break;
+ }
+ case 0x05: /* Subdevice Down */
+ {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Subdevice Address: %d", tvb_get_guint8(tvb, offset));
+ break;
+ }
+ case 0x06: /* Segment Failure */
+ {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "T: %d",
+ (tvb_get_guint8(tvb, offset) & 0x01));
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "Num: %d",
+ (tvb_get_guint8(tvb, offset) & 0x02));
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "/S: %d",
+ (tvb_get_guint8(tvb, offset) & 0x04));
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "L: %d",
+ (tvb_get_guint8(tvb, offset) & 0x08));
+ offset++;
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Opcode Bad Segment: %d", tvb_get_guint8(tvb, offset));
+ offset++;
+
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Next Byte Of Bad Segment: %d",
+ tvb_get_guint8(tvb, offset));
+ break;
+ }
+ case 0x07: /* UA Device Event */
+ {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Device Event: %d", tvb_get_guint8(tvb, offset));
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
}
/*-----------------------------------------------------------------------------
- NON-DIGIT KEY PUSHED - 20h (MESSAGE FROM THE TERMINAL)
- DIGIT KEY RELEASED - 26h (MESSAGE FROM THE TERMINAL)
- KEY RELEASED - 2Ah (MESSAGE FROM THE TERMINAL)
- TM KEY PUSHED - 2Dh (MESSAGE FROM THE TERMINAL)
- ---------------------------------------------------------------------------*/
+ NON-DIGIT KEY PUSHED - 20h (MESSAGE FROM THE TERMINAL)
+ DIGIT KEY RELEASED - 26h (MESSAGE FROM THE TERMINAL)
+ KEY RELEASED - 2Ah (MESSAGE FROM THE TERMINAL)
+ TM KEY PUSHED - 2Dh (MESSAGE FROM THE TERMINAL)
+ ---------------------------------------------------------------------------*/
static void
-decode_key_number(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo _U_,
- guint offset,
- guint length,
- guint8 opcode _U_,
- proto_item *ua3g_body_item)
+decode_key_number(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_,
+ guint offset, guint length, guint8 opcode _U_,
+ proto_item *ua3g_body_item _U_)
{
-/* proto_tree *ua3g_body_tree;*/
-/*
- static const value_string str_first_parameter[] = {
- {0x01, "Production Test Command"},
- {0x06, "Reserved For Compatibility"},
- {0x3B, "Volmue"},
- {0x42, "Subdevice Address"},
- {0, NULL}
- };
-*/
- if(length > 0)
- {
-/* ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);*/
- proto_tree_add_text(ua3g_body_item,
- tvb,
- offset,
- length,
- "Key Number: Row %d, Column %d",
- (tvb_get_guint8(tvb, offset) & 0xF0), (tvb_get_guint8(tvb, offset) & 0x0F));
- }
+#if 0
+ proto_tree *ua3g_body_tree;
+ static const value_string str_first_parameter[] = {
+ {0x01, "Production Test Command"},
+ {0x06, "Reserved For Compatibility"},
+ {0x3B, "Volume"},
+ {0x42, "Subdevice Address"},
+ {0, NULL}
+ };
+#endif
+
+ if (!tree)
+ return;
+
+ if (length > 0) {
+#if 0
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+#endif
+ proto_tree_add_text(tree, tvb, offset, length,
+ "Key Number: Row %d, Column %d",
+ (tvb_get_guint8(tvb, offset) & 0xF0), (tvb_get_guint8(tvb, offset) & 0x0F));
+ }
}
/*-----------------------------------------------------------------------------
- I'M HERE - 22h - Only for UA NOE (MESSAGE FROM THE TERMINAL)
- ---------------------------------------------------------------------------*/
+ I'M HERE - 22h - Only for UA NOE (MESSAGE FROM THE TERMINAL)
+ ---------------------------------------------------------------------------*/
static void
-decode_i_m_here(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo _U_,
- guint offset,
- guint length _U_,
- guint8 opcode _U_,
- proto_item *ua3g_body_item)
+decode_i_m_here(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo _U_,
+ guint offset, guint length _U_, guint8 opcode _U_,
+ proto_item *ua3g_body_item)
{
- proto_tree *ua3g_body_tree;
-
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Id Code: %s",
- val_to_str(tvb_get_guint8(tvb, offset), str_device_type, "Unknown"));
+ proto_tree *ua3g_body_tree;
+
+ if (!ua3g_body_item)
+ return;
+
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "Id Code: %s",
+ val_to_str_const(tvb_get_guint8(tvb, offset), str_device_type, "Unknown"));
}
/*-----------------------------------------------------------------------------
- RESPONSE STATUS INQUIRY - 23h (MESSAGE FROM THE TERMINAL)
- SPECIAL KEY STATUS - 29h (MESSAGE FROM THE TERMINAL)
- ---------------------------------------------------------------------------*/
+ RESPONSE STATUS INQUIRY - 23h (MESSAGE FROM THE TERMINAL)
+ SPECIAL KEY STATUS - 29h (MESSAGE FROM THE TERMINAL)
+ ---------------------------------------------------------------------------*/
static void
-decode_special_key(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo _U_,
- guint offset,
- guint length,
- guint8 opcode,
- proto_item *ua3g_body_item)
+decode_special_key(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo _U_,
+ guint offset, guint length, guint8 opcode,
+ proto_item *ua3g_body_item)
{
-/* guint8 command = tvb_get_guint8(tvb, offset);*/
- proto_tree *ua3g_body_tree;
- int i;
- static const value_string str_parameters[] = {
- {0x00, "Not Received Default In Effect"},
- {0x02, "Downloaded Values In Effect"},
- {0, NULL}
- };
- static const value_string str_special_key_status[] = {
- {0x00, "Released"},
- {0, NULL}
- };
- static const value_string str_special_key[] = {
- {0, "Shift "},
- {1, "Ctrl "},
- {2, "Alt "},
- {3, "Cmd "},
- {4, "Shift'"},
- {5, "Ctrl' "},
- {6, "Alt' "},
- {7, "Cmd' "},
- {0, NULL}
- };
-
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
- if(opcode == 0x23)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Parameters Received for DTMF: %s",
- val_to_str((tvb_get_guint8(tvb, offset) & 0x02), str_parameters, "Unknown"));
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Hookswitch Status: %shook",
- val_to_str((tvb_get_guint8(tvb, offset) & 0x01), str_on_off, "On"));
- offset++;
- length--;
- }
-
- for(i = 0; i < 8; i++)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "%s: %s",
- val_to_str(i, str_special_key, "Unknown"),
- val_to_str((tvb_get_guint8(tvb, offset) & (0x01 << i)),
- str_special_key_status, "Pressed"));
- }
+ guint8 special_key_status;
+ proto_tree *ua3g_body_tree;
+ int i;
+
+ static const value_string str_parameters[] = {
+ {0x00, "Not Received Default In Effect"},
+ {0x02, "Downloaded Values In Effect"},
+ {0, NULL}
+ };
+ static const value_string str_special_key_status[] = {
+ {0x00, "Released"},
+ {0, NULL}
+ };
+ static const char *const str_special_key_name[] = {
+ "Shift ",
+ "Ctrl ",
+ "Alt ",
+ "Cmd ",
+ "Shift'",
+ "Ctrl' ",
+ "Alt' ",
+ "Cmd' "
+ };
+
+ if (!ua3g_body_item)
+ return;
+
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+ if (opcode == 0x23) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Parameters Received for DTMF: %s",
+ val_to_str_const((tvb_get_guint8(tvb, offset) & 0x02), str_parameters, "Unknown"));
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Hookswitch Status: %shook",
+ STR_ON_OFF(tvb_get_guint8(tvb, offset) & 0x01));
+ offset++;
+ length--;
+ }
+
+ special_key_status = tvb_get_guint8(tvb, offset);
+ for (i = 0; i < 8; i++) {
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1, "%s: %s",
+ str_special_key_name[i],
+ val_to_str_const(special_key_status & (0x01 << i), str_special_key_status, "Pressed"));
+ }
}
/*-----------------------------------------------------------------------------
- SUBDEVICE STATE ENQUIRY - 24h (MESSAGE FROM THE TERMINAL)
- ---------------------------------------------------------------------------*/
+ SUBDEVICE STATE ENQUIRY - 24h (MESSAGE FROM THE TERMINAL)
+ ---------------------------------------------------------------------------*/
static void
-decode_subdevice_state(proto_tree *tree _U_,
- tvbuff_t *tvb,
- packet_info *pinfo _U_,
- guint offset,
- guint length _U_,
- guint8 opcode _U_,
- proto_item *ua3g_body_item)
+decode_subdevice_state(proto_tree *tree _U_, tvbuff_t *tvb,
+ packet_info *pinfo _U_, guint offset, guint length _U_,
+ guint8 opcode _U_, proto_item *ua3g_body_item)
{
- proto_tree *ua3g_body_tree;
- int i;
-
- ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
-
- for(i = 0; i <= 7; i++)
- {
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Subdevice %d State: %d",
- i, (tvb_get_guint8(tvb, offset) & 0x0F));
- i++;
- proto_tree_add_text(ua3g_body_tree,
- tvb,
- offset,
- 1,
- "Subdevice %d State: %d",
- i, ((tvb_get_guint8(tvb, offset) & 0xF0) >> 4));
- offset++;
- }
+ proto_tree *ua3g_body_tree;
+ guint8 info;
+ int i;
+
+ if (!ua3g_body_item)
+ return;
+
+ ua3g_body_tree = proto_item_add_subtree(ua3g_body_item, ett_ua3g_body);
+
+ for (i = 0; i <= 7; i++) {
+ info = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Subdevice %d State: %d",
+ i, info & 0x0F);
+ i++;
+ proto_tree_add_text(ua3g_body_tree, tvb, offset, 1,
+ "Subdevice %d State: %d",
+ i, (info & 0xF0) >> 4);
+ offset++;
+ }
}
/*-----------------------------------------------------------------------------
- UA3G DISSECTOR
- ---------------------------------------------------------------------------*/
-static void dissect_ua3g(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+ UA3G DISSECTOR
+ ---------------------------------------------------------------------------*/
+static void
+dissect_ua3g(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ua3g_item = NULL;
- proto_tree *ua3g_tree = NULL;
- proto_item *ua3g_body_item = NULL;
- gint length = 0;
- gint offset = 0;
- guint8 opcode = 0x00;
-
- (void)pinfo;
-
- if(tree)
- {
- ua3g_item = proto_tree_add_item(tree, proto_ua3g, tvb, 0, -1, ENC_NA);
- ua3g_tree = proto_item_add_subtree(ua3g_item, ett_ua3g);
-
- if(message_direction == SYS_TO_TERM)
- {
- opcodes_vals = opcodes_vals_sys;
- }
- else
- opcodes_vals = opcodes_vals_term;
-
- /* Length of the UA Message */
- length = tvb_get_letohs(tvb, offset);
-
- /* add text to the frame "INFO" column */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, " - UA3G Message:");
-
- proto_tree_add_uint(ua3g_tree,
- hf_ua3g_length,
- tvb,
- offset,
- 2,
- length);
- offset += 2;
-
- /* Opcode of the UA Message */
- opcode = tvb_get_guint8(tvb, offset);
- if(opcode != 0x9f)
- opcode = (opcode & 0x7f);
-
- /* Usefull for a research in wireshark */
- proto_tree_add_uint_format(ua3g_tree,
- hf_ua3g_opcode,
- tvb,
- offset,
- 1,
- opcode,
- "Opcode: %s (0x%02x)",
- val_to_str(opcode, opcodes_vals, "Unknown"), opcode);
- offset++;
- length--;
-
- /* add text to the frame "INFO" column */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, " %s",
- val_to_str(opcode, opcodes_vals, "Unknown"));
-
- proto_item_append_text(ua3g_item, ", %s", val_to_str(opcode, opcodes_vals, "Unknown"));
-
- if(length > 0)
- ua3g_body_item = proto_tree_add_text(ua3g_tree,
- tvb,
- offset,
- length,
- "UA3G Body - %s",
- val_to_str(opcode, opcodes_vals, "Unknown"));
-
- if(message_direction == SYS_TO_TERM)
- {
- switch(opcode)
- {
- case PRODUCTION_TEST: /* 0x01 */
- case SUBDEVICE_RESET: /* 0x06 */
- case ARE_YOU_THERE: /* 0x2B */
- case SET_SPEAKER_VOL: /* 0x3B */
- case TRACE_ON: /* 0x42 */
- {
- decode_with_one_parameter(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case SUBDEVICE_ESCAPE: /* 0x02 */
- {
- decode_subdevice_escape(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case SOFT_RESET: /* 0x03 */
- {
- decode_software_reset(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case IP_PHONE_WARMSTART: /* 0x04 */
- {
- decode_ip_phone_warmstart(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case SUPER_MSG: /* 0x0B */
- case SUPER_MSG_2: /* 0x17 */
- {
- decode_super_msg(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case SEGMENT_MSG: /* 0x0C */
- {
- decode_segment_msg(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case IP_DEVICE_ROUTING: /* 0x13 */
- {
- decode_ip_device_routing(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
- break;
- }
- case DEBUG_IN_LINE: /* 0x18 */
- {
- decode_debug_in_line(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case LED_COMMAND: /* 0x21 */
- {
- decode_led_command(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
- break;
- }
- case LCD_LINE_1_CMD: /* 0x27 */
- case LCD_LINE_2_CMD: /* 0x28 */
- {
- decode_lcd_line_cmd(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
- break;
- }
- case MAIN_VOICE_MODE: /* 0x29 */
- {
- decode_main_voice_mode(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
- break;
- }
- case SUBDEVICE_METASTATE: /* 0x2C */
- {
- decode_subdevice_metastate(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case DWL_DTMF_CLCK_FORMAT: /* 0x30 */
- {
- decode_dwl_dtmf_clck_format(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case SET_CLCK: /* 0x31 */
- {
- decode_set_clck(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
- break;
- }
- case VOICE_CHANNEL: /* 0x32 */
- {
- decode_voice_channel(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case EXTERNAL_RINGING: /* 0x33 */
- {
- decode_external_ringing(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
- break;
- }
- case LCD_CURSOR: /* 0x35 */
- {
- decode_lcd_cursor(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
- break;
- }
- case DWL_SPECIAL_CHAR: /* 0x36 */
- {
- decode_dwl_special_char(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case SET_CLCK_TIMER_POS: /* 0x38 */
- {
- decode_set_clck_timer_pos(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case SET_LCD_CONTRAST: /* 0x39 */
- {
- decode_set_lcd_contrast(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case BEEP: /* 0x3C */
- {
- decode_beep(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
- break;
- }
- case SIDETONE: /* 0x3D */
- {
- decode_sidetone(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
- break;
- }
- case RINGING_CADENCE: /* 0x3E */
- {
- decode_ringing_cadence(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case MUTE: /* 0x3F */
- {
- decode_mute(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
- break;
- }
- case FEEDBACK: /* 0x40 */
- {
- decode_feedback(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
- break;
- }
- case READ_PERIPHERAL: /* 0x44 */
- case WRITE_PERIPHERAL: /* 0x45 */
- {
- decode_r_w_peripheral(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case ICON_CMD: /* 0x47 */
- {
- decode_icon_cmd(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case AUDIO_CONFIG: /* 0x49 */
- {
- decode_audio_config(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
- break;
- }
- case AUDIO_PADDED_PATH: /* 0x4A */
- {
- decode_audio_padded_path(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case KEY_RELEASE: /* 0x41 */
- case AMPLIFIED_HANDSET: /* 0x48 */
- case LOUDSPEAKER: /* 0x4D */
- case ANNOUNCE: /* 0x4E */
- {
- decode_on_off_level(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
- break;
- }
- case RING: /* 0x4F */
- {
- decode_ring(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
- break;
- }
- case UA_DWL_PROTOCOL: /* 0x50 */
- {
- decode_ua_dwl_protocol(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
- break;
- }
- /* Case for UA3G message with only opcode (No body) */
- case NOP: /* 0x00 */
- case HE_ROUTING: /* 0x05 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
- case LOOPBACK_ON: /* 0x07 */
- case LOOPBACK_OFF: /* 0x08 */
- case VIDEO_ROUTING: /* 0x09 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
- case REMOTE_UA_ROUTING: /* 0x0D NOT DECODED - No description in 3AK 29000 0556 DSZZA */
- case VERY_REMOTE_UA_ROUTING: /* 0x0E NOT DECODED - No description in 3AK 29000 0556 DSZZA */
- case OSI_ROUTING: /* 0x0F NOT DECODED - No description in 3AK 29000 0556 DSZZA */
- case ABC_A_ROUTING: /* 0x11 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
- case IBS_ROUTING: /* 0x12 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
- case M_REFLEX_HUB_ROUTING: /* 0x14 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
- case START_BUZZER: /* 0x22 */
- case STOP_BUZZER: /* 0x23 */
- case ENABLE_DTMF: /* 0x24 */
- case DISABLE_DTMF: /* 0x25 */
- case CLEAR_LCD_DISP: /* 0x26 */
- case VERSION_INQUIRY: /* 0x2A */
- case VTA_STATUS_INQUIRY: /* 0x2D */
- case SUBDEVICE_STATE: /* 0x2E */
- case AUDIO_IDLE: /* 0x3A */
- case TRACE_OFF: /* 0x43 */
- case ALL_ICONS_OFF: /* 0x46 */
- case RELEASE_RADIO_LINK: /* 0x4B */
- case DECT_HANDOVER: /* 0x4C NOT DECODED - No description in 3AK 29000 0556 DSZZA */
- default:
- {
- break;
- }
- }
- }
- if(message_direction == TERM_TO_SYS)
- {
- switch(opcode)
- {
- case CS_DIGIT_DIALED: /* 0x03 */
- {
- decode_digit_dialed(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case CS_SUBDEVICE_MSG: /* 0x04 */
- {
- decode_subdevice_msg(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case CS_SUPER_MSG: /* 0x0B */
- case CS_SUPER_MSG_2: /* 0x17 */
- {
- decode_super_msg(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case CS_SEGMENT_MSG: /* 0x0C */
- {
- decode_segment_msg(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case CS_IP_DEVICE_ROUTING: /* 0x13 */
- {
- decode_cs_ip_device_routing(ua3g_tree, tvb, pinfo, offset, length, opcode,ua3g_item, ua3g_body_item);
- break;
- }
- case CS_DEBUG_IN_LINE: /* 0x18 */
- {
- decode_debug_in_line(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case CS_NON_DIGIT_KEY_PUSHED: /* 0x20 Key translation not sure */
- case CS_DIGIT_KEY_RELEASED: /* 0x26 Key translation not sure */
- case CS_KEY_RELEASED: /* 0x2A */
- case CS_TM_KEY_PUSHED: /* 0x2D Key translation not sure */
- {
- decode_key_number(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case CS_UNSOLICITED_MSG: /* 0x9F (0x1F) */
- case CS_VERSION_RESPONSE: /* 0x21 */
- {
- decode_unsolicited_msg(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
- break;
- }
- case CS_I_M_HERE: /* 0x22 */
- {
- decode_i_m_here(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case CS_RSP_STATUS_INQUIRY: /* 0x23 */
- case CS_SPECIAL_KEY_STATUS: /* 0x29 */
- {
- decode_special_key(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case CS_SUBDEVICE_STATE: /* 0x24 */
- {
- decode_subdevice_state(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case CS_PERIPHERAL_CONTENT: /* 0x2B */
- {
- decode_r_w_peripheral(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
- break;
- }
- case CS_UA_DWL_PROTOCOL: /* 0x50 */
- {
- decode_ua_dwl_protocol(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
- break;
- }
- /* Case for UA3G message with only opcode (No body) */
- case CS_NOP_ACK: /* 0x00 */
- case CS_HANDSET_OFFHOOK: /* 0x01 */
- case CS_HANDSET_ONHOOK: /* 0x02 */
- case CS_HE_ROUTING: /* 0x05 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
- case CS_LOOPBACK_ON: /* 0x06 */
- case CS_LOOPBACK_OFF: /* 0x07 */
- case CS_VIDEO_ROUTING: /* 0x09 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
- case CS_WARMSTART_ACK: /* 0x0A */
- case CS_REMOTE_UA_ROUTING: /* 0x0D NOT DECODED - No description in 3AK 29000 0556 DSZZA */
- case CS_VERY_REMOTE_UA_R: /* 0x0E NOT DECODED - No description in 3AK 29000 0556 DSZZA */
- case CS_OSI_ROUTING: /* 0x0F NOT DECODED - No description in 3AK 29000 0556 DSZZA */
- case CS_ABC_A_ROUTING: /* 0x11 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
- case CS_IBS_ROUTING: /* 0x12 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
- case CS_TRACE_ON_ACK: /* 0x27 */
- case CS_TRACE_OFF_ACK: /* 0x28 */
- default:
- {
- break;
- }
- }
- }
- }
+ gint offset = 0;
+ proto_item *ua3g_item;
+ proto_tree *ua3g_tree;
+ proto_item *ua3g_body_item = NULL;
+ gint length;
+ guint8 opcode;
+ value_string_ext *opcodes_vals_ext_p;
+
+ ua3g_item = proto_tree_add_item(tree, proto_ua3g, tvb, 0, -1, ENC_NA);
+ ua3g_tree = proto_item_add_subtree(ua3g_item, ett_ua3g);
+
+ if (message_direction == SYS_TO_TERM) {
+ opcodes_vals_ext_p = &opcodes_vals_sys_ext;
+ } else
+ opcodes_vals_ext_p = &opcodes_vals_term_ext;
+
+ /* Length of the UA Message */
+ length = tvb_get_letohs(tvb, offset);
+
+ /* add text to the frame "INFO" column */
+ col_append_fstr(pinfo->cinfo, COL_INFO, " - UA3G Message:");
+
+ proto_tree_add_uint(ua3g_tree, hf_ua3g_length, tvb, offset, 2, length);
+ offset += 2;
+
+ /* Opcode of the UA Message */
+ opcode = tvb_get_guint8(tvb, offset);
+ if (opcode != 0x9f)
+ opcode = (opcode & 0x7f);
+
+ /* Useful for a research in wireshark */
+ proto_tree_add_uint_format(ua3g_tree, hf_ua3g_opcode, tvb, offset,
+ 1, opcode, "Opcode: %s (0x%02x)",
+ val_to_str_ext_const(opcode, opcodes_vals_ext_p, "Unknown"), opcode);
+ offset++;
+ length--;
+
+ /* add text to the frame "INFO" column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s",
+ val_to_str_ext_const(opcode, opcodes_vals_ext_p, "Unknown"));
+
+ proto_item_append_text(ua3g_item, ", %s", val_to_str_ext_const(opcode, opcodes_vals_ext_p, "Unknown"));
+
+ if (length > 0)
+ ua3g_body_item = proto_tree_add_text(ua3g_tree, tvb, offset,
+ length, "UA3G Body - %s",
+ val_to_str_ext_const(opcode, opcodes_vals_ext_p, "Unknown"));
+
+ if (message_direction == SYS_TO_TERM) {
+ switch (opcode) {
+ case SC_PRODUCTION_TEST: /* 0x01 */
+ case SC_SUBDEVICE_RESET: /* 0x06 */
+ case SC_ARE_YOU_THERE: /* 0x2B */
+ case SC_SET_SPEAKER_VOL: /* 0x3B */
+ case SC_TRACE_ON: /* 0x42 */
+ {
+ decode_with_one_parameter(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case SC_SUBDEVICE_ESCAPE: /* 0x02 */
+ {
+ decode_subdevice_escape(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case SC_SOFT_RESET: /* 0x03 */
+ {
+ decode_software_reset(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case SC_IP_PHONE_WARMSTART: /* 0x04 */
+ {
+ decode_ip_phone_warmstart(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case SC_SUPER_MSG: /* 0x0B */
+ case SC_SUPER_MSG_2: /* 0x17 */
+ {
+ decode_super_msg(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case SC_SEGMENT_MSG: /* 0x0C */
+ {
+ decode_segment_msg(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case SC_IP_DEVICE_ROUTING: /* 0x13 */
+ {
+ decode_ip_device_routing(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
+ break;
+ }
+ case SC_DEBUG_IN_LINE: /* 0x18 */
+ {
+ decode_debug_in_line(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case SC_LED_COMMAND: /* 0x21 */
+ {
+ decode_led_command(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
+ break;
+ }
+ case SC_LCD_LINE_1_CMD: /* 0x27 */
+ case SC_LCD_LINE_2_CMD: /* 0x28 */
+ {
+ decode_lcd_line_cmd(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
+ break;
+ }
+ case SC_MAIN_VOICE_MODE: /* 0x29 */
+ {
+ decode_main_voice_mode(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
+ break;
+ }
+ case SC_SUBDEVICE_METASTATE: /* 0x2C */
+ {
+ decode_subdevice_metastate(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case SC_DWL_DTMF_CLCK_FORMAT: /* 0x30 */
+ {
+ decode_dwl_dtmf_clck_format(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case SC_SET_CLCK: /* 0x31 */
+ {
+ decode_set_clck(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
+ break;
+ }
+ case SC_VOICE_CHANNEL: /* 0x32 */
+ {
+ decode_voice_channel(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case SC_EXTERNAL_RINGING: /* 0x33 */
+ {
+ decode_external_ringing(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
+ break;
+ }
+ case SC_LCD_CURSOR: /* 0x35 */
+ {
+ decode_lcd_cursor(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
+ break;
+ }
+ case SC_DWL_SPECIAL_CHAR: /* 0x36 */
+ {
+ decode_dwl_special_char(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case SC_SET_CLCK_TIMER_POS: /* 0x38 */
+ {
+ decode_set_clck_timer_pos(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case SC_SET_LCD_CONTRAST: /* 0x39 */
+ {
+ decode_set_lcd_contrast(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case SC_BEEP: /* 0x3C */
+ {
+ decode_beep(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
+ break;
+ }
+ case SC_SIDETONE: /* 0x3D */
+ {
+ decode_sidetone(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
+ break;
+ }
+ case SC_RINGING_CADENCE: /* 0x3E */
+ {
+ decode_ringing_cadence(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case SC_MUTE: /* 0x3F */
+ {
+ decode_mute(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
+ break;
+ }
+ case SC_FEEDBACK: /* 0x40 */
+ {
+ decode_feedback(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
+ break;
+ }
+ case SC_READ_PERIPHERAL: /* 0x44 */
+ case SC_WRITE_PERIPHERAL: /* 0x45 */
+ {
+ decode_r_w_peripheral(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case SC_ICON_CMD: /* 0x47 */
+ {
+ decode_icon_cmd(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case SC_AUDIO_CONFIG: /* 0x49 */
+ {
+ decode_audio_config(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
+ break;
+ }
+ case SC_AUDIO_PADDED_PATH: /* 0x4A */
+ {
+ decode_audio_padded_path(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case SC_KEY_RELEASE: /* 0x41 */
+ case SC_AMPLIFIED_HANDSET: /* 0x48 */
+ case SC_LOUDSPEAKER: /* 0x4D */
+ case SC_ANNOUNCE: /* 0x4E */
+ {
+ decode_on_off_level(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
+ break;
+ }
+ case SC_RING: /* 0x4F */
+ {
+ decode_ring(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
+ break;
+ }
+ case SC_UA_DWL_PROTOCOL: /* 0x50 */
+ {
+ decode_ua_dwl_protocol(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
+ break;
+ }
+ /* Case for UA3G message with only opcode (No body) */
+ case SC_NOP: /* 0x00 */
+ case SC_HE_ROUTING: /* 0x05 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
+ case SC_LOOPBACK_ON: /* 0x07 */
+ case SC_LOOPBACK_OFF: /* 0x08 */
+ case SC_VIDEO_ROUTING: /* 0x09 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
+ case SC_REMOTE_UA_ROUTING: /* 0x0D NOT DECODED - No description in 3AK 29000 0556 DSZZA */
+ case SC_VERY_REMOTE_UA_ROUTING: /* 0x0E NOT DECODED - No description in 3AK 29000 0556 DSZZA */
+ case SC_OSI_ROUTING: /* 0x0F NOT DECODED - No description in 3AK 29000 0556 DSZZA */
+ case SC_ABC_A_ROUTING: /* 0x11 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
+ case SC_IBS_ROUTING: /* 0x12 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
+ case SC_M_REFLEX_HUB_ROUTING: /* 0x14 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
+ case SC_START_BUZZER: /* 0x22 */
+ case SC_STOP_BUZZER: /* 0x23 */
+ case SC_ENABLE_DTMF: /* 0x24 */
+ case SC_DISABLE_DTMF: /* 0x25 */
+ case SC_CLEAR_LCD_DISP: /* 0x26 */
+ case SC_VERSION_INQUIRY: /* 0x2A */
+ case SC_VTA_STATUS_INQUIRY: /* 0x2D */
+ case SC_SUBDEVICE_STATE: /* 0x2E */
+ case SC_AUDIO_IDLE: /* 0x3A */
+ case SC_TRACE_OFF: /* 0x43 */
+ case SC_ALL_ICONS_OFF: /* 0x46 */
+ case SC_RELEASE_RADIO_LINK: /* 0x4B */
+ case SC_DECT_HANDOVER: /* 0x4C NOT DECODED - No description in 3AK 29000 0556 DSZZA */
+ default:
+ {
+ break;
+ }
+ }
+ }
+ if (message_direction == TERM_TO_SYS) {
+ switch (opcode) {
+ case CS_DIGIT_DIALED: /* 0x03 */
+ {
+ decode_digit_dialed(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case CS_SUBDEVICE_MSG: /* 0x04 */
+ {
+ decode_subdevice_msg(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case CS_SUPER_MSG: /* 0x0B */
+ case CS_SUPER_MSG_2: /* 0x17 */
+ {
+ decode_super_msg(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case CS_SEGMENT_MSG: /* 0x0C */
+ {
+ decode_segment_msg(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case CS_IP_DEVICE_ROUTING: /* 0x13 */
+ {
+ decode_cs_ip_device_routing(ua3g_tree, tvb, pinfo, offset, length, opcode,ua3g_item, ua3g_body_item);
+ break;
+ }
+ case CS_DEBUG_IN_LINE: /* 0x18 */
+ {
+ decode_debug_in_line(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case CS_NON_DIGIT_KEY_PUSHED: /* 0x20 Key translation not sure */
+ case CS_DIGIT_KEY_RELEASED: /* 0x26 Key translation not sure */
+ case CS_KEY_RELEASED: /* 0x2A */
+ case CS_TM_KEY_PUSHED: /* 0x2D Key translation not sure */
+ {
+ decode_key_number(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case CS_UNSOLICITED_MSG: /* 0x9F (0x1F) */
+ case CS_VERSION_RESPONSE: /* 0x21 */
+ {
+ decode_unsolicited_msg(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
+ break;
+ }
+ case CS_I_M_HERE: /* 0x22 */
+ {
+ decode_i_m_here(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case CS_RSP_STATUS_INQUIRY: /* 0x23 */
+ case CS_SPECIAL_KEY_STATUS: /* 0x29 */
+ {
+ decode_special_key(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case CS_SUBDEVICE_STATE: /* 0x24 */
+ {
+ decode_subdevice_state(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case CS_PERIPHERAL_CONTENT: /* 0x2B */
+ {
+ decode_r_w_peripheral(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_body_item);
+ break;
+ }
+ case CS_UA_DWL_PROTOCOL: /* 0x50 */
+ {
+ decode_ua_dwl_protocol(ua3g_tree, tvb, pinfo, offset, length, opcode, ua3g_item, ua3g_body_item);
+ break;
+ }
+ /* Case for UA3G message with only opcode (No body) */
+ case CS_NOP_ACK: /* 0x00 */
+ case CS_HANDSET_OFFHOOK: /* 0x01 */
+ case CS_HANDSET_ONHOOK: /* 0x02 */
+ case CS_HE_ROUTING: /* 0x05 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
+ case CS_LOOPBACK_ON: /* 0x06 */
+ case CS_LOOPBACK_OFF: /* 0x07 */
+ case CS_VIDEO_ROUTING: /* 0x09 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
+ case CS_WARMSTART_ACK: /* 0x0A */
+ case CS_REMOTE_UA_ROUTING: /* 0x0D NOT DECODED - No description in 3AK 29000 0556 DSZZA */
+ case CS_VERY_REMOTE_UA_R: /* 0x0E NOT DECODED - No description in 3AK 29000 0556 DSZZA */
+ case CS_OSI_ROUTING: /* 0x0F NOT DECODED - No description in 3AK 29000 0556 DSZZA */
+ case CS_ABC_A_ROUTING: /* 0x11 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
+ case CS_IBS_ROUTING: /* 0x12 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
+ case CS_TRACE_ON_ACK: /* 0x27 */
+ case CS_TRACE_OFF_ACK: /* 0x28 */
+ default:
+ {
+ break;
+ }
+ }
+ }
}
/*-----------------------------------------------------------------------------
- DISSECTORS REGISTRATION FUNCTIONS
- ---------------------------------------------------------------------------*/
-void proto_register_ua3g(void)
+ DISSECTORS REGISTRATION FUNCTIONS
+ ---------------------------------------------------------------------------*/
+void
+proto_register_ua3g(void)
{
- static hf_register_info hf_ua3g[] =
- {
- { &hf_ua3g_length,
- {
- "Length",
- "ua3g.length",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x00,
- "Decimal Value",
- HFILL
- }
- },
- { &hf_ua3g_opcode,
- {
- "Opcode",
- "ua3g.opcode",
- FT_UINT8,
- BASE_HEX,
- NULL,
- 0x00,
- "Hexa Value",
- HFILL
- }
- },
- { &hf_ua3g_ip,
- {
- "IP Device Routing",
- "ua3g.ip",
- FT_UINT8,
- BASE_HEX,
- NULL,
- 0x00,
- "Hexa Value - 2nd Command For IP Device Routing Opcode",
- HFILL
- }
- },
- { &hf_ua3g_command,
- {
- "Command",
- "ua3g.command",
- FT_UINT8,
- BASE_HEX,
- NULL,
- 0x00,
- "Hexa Value - 2nd Command (Excepted IP Device Routing Opcode)",
- HFILL
- }
- },
- };
-
- static gint *ett[] =
- {
- &ett_ua3g,
- &ett_ua3g_body,
- &ett_ua3g_param,
- &ett_ua3g_option,
- };
-
- /* UA3G dissector registration */
- proto_ua3g = proto_register_protocol("UA3G Message",
- "UA3G",
- "ua3g");
-
- proto_register_field_array(proto_ua3g, hf_ua3g, array_length(hf_ua3g));
-
- register_dissector("ua3g", dissect_ua3g, proto_ua3g);
-
- /* Common subtree array registration */
- proto_register_subtree_array(ett, array_length(ett));
+ static hf_register_info hf_ua3g[] =
+ {
+ { &hf_ua3g_length,
+ { "Length", "ua3g.length",
+ FT_UINT16, BASE_DEC, NULL, 0x00,
+ "Decimal Value", HFILL }
+ },
+ { &hf_ua3g_opcode,
+ { "Opcode", "ua3g.opcode",
+ FT_UINT8, BASE_HEX, NULL, 0x00,
+ "Hexa Value", HFILL }
+ },
+ { &hf_ua3g_ip,
+ { "IP Device Routing", "ua3g.ip",
+ FT_UINT8, BASE_HEX, NULL, 0x00,
+ "Hexa Value - 2nd Command For IP Device Routing Opcode", HFILL }
+ },
+ { &hf_ua3g_command,
+ { "Command", "ua3g.command",
+ FT_UINT8, BASE_HEX, NULL, 0x00,
+ "Hexa Value - 2nd Command (Excepted IP Device Routing Opcode)", HFILL }
+ },
+ };
+
+ static gint *ett[] =
+ {
+ &ett_ua3g,
+ &ett_ua3g_body,
+ &ett_ua3g_param,
+ &ett_ua3g_option,
+ };
+
+ /* UA3G dissector registration */
+ proto_ua3g = proto_register_protocol("UA3G Message", "UA3G", "ua3g");
+
+ proto_register_field_array(proto_ua3g, hf_ua3g, array_length(hf_ua3g));
+
+ register_dissector("ua3g", dissect_ua3g, proto_ua3g);
+
+ /* Common subtree array registration */
+ proto_register_subtree_array(ett, array_length(ett));
}
-
void proto_reg_handoff_ua3g(void)
{
+#if 0 /* Future */
dissector_handle_t handle_ua3g = find_dissector("ua3g");
- /* hooking of UA3G on UDP */
- register_dissector_table("ua3g.opcode",
- "ua3g.opcode",
- FT_UINT8,
- BASE_HEX);
-
- dissector_add_uint("ua3g.opcode", 0x15, handle_ua3g);
+ /* hooking of UA3G on UA */
+
+ dissector_add_uint("ua.opcode", 0x15, handle_ua3g);
+#endif
}
diff --git a/epan/dissectors/packet-uasip.c b/epan/dissectors/packet-uasip.c
index f301944b0e..d945ff4800 100644
--- a/epan/dissectors/packet-uasip.c
+++ b/epan/dissectors/packet-uasip.c
@@ -27,548 +27,485 @@
# include "config.h"
#endif
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
+#include <string.h>
-#include "packet-uaudp.h"
+#ifdef HAVE_ARPA_INET_H
+# include <arpa/inet.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+# include <sys/socket.h> /* needed to define AF_ values on UNIX */
+#endif
+#ifdef HAVE_WINSOCK2_H
+# include <winsock2.h> /* needed to define AF_ values on Windows */
+#endif
+#ifdef NEED_INET_V6DEFS_H
+# include "wsutil/inet_v6defs.h"
+#endif
-#include <string.h>
#include <glib.h>
#include "epan/packet.h"
#include "epan/prefs.h"
#include "epan/tap.h"
-#include "epan/value_string.h"
+
+#include "packet-uaudp.h"
void proto_reg_handoff_uasip(void);
-gboolean str_to_ipaddr(const gchar *addr, guint8 *ad);
static tap_struct_uaudp ua_tap_info;
-static int uasip_tap = -1;
-static int proto_uasip = -1;
-static int hf_uasip_opcode = -1;
-static int hf_uasip_version = -1;
-static int hf_uasip_window_size = -1;
-static int hf_uasip_mtu = -1;
-static int hf_uasip_udp_lost = -1;
-static int hf_uasip_udp_lost_reinit = -1;
-static int hf_uasip_keepalive = -1;
-static int hf_uasip_qos_ip_tos = -1;
-static int hf_uasip_qos_8021_vlid = -1;
-static int hf_uasip_qos_8021_pri = -1;
-static int hf_uasip_expseq = -1;
-static int hf_uasip_sntseq = -1;
-static gint ett_uasip = -1;
-
-static guint8 proxy_ipaddr[4];
-static const char* pref_proxy_ipaddr_s = NULL;
+#if 0
+static int uasip_tap = -1;
+#endif
+
+static int proto_uasip = -1;
+static int hf_uasip_opcode = -1;
+static int hf_uasip_version = -1;
+static int hf_uasip_window_size = -1;
+static int hf_uasip_mtu = -1;
+static int hf_uasip_udp_lost = -1;
+static int hf_uasip_udp_lost_reinit = -1;
+static int hf_uasip_keepalive = -1;
+static int hf_uasip_qos_ip_tos = -1;
+static int hf_uasip_qos_8021_vlid = -1;
+static int hf_uasip_qos_8021_pri = -1;
+static int hf_uasip_expseq = -1;
+static int hf_uasip_sntseq = -1;
+static gint ett_uasip = -1;
+
+static guint8 proxy_ipaddr[4];
+static const char *pref_proxy_ipaddr_s = NULL;
+
static gboolean use_proxy_ipaddr = FALSE;
-static gboolean noesip_enabled = FALSE;
-
-#define UAUDP_CONNECT_VERSION 0x00
-#define UAUDP_CONNECT_WINDOW_SIZE 0x01
-#define UAUDP_CONNECT_MTU 0x02
-#define UAUDP_CONNECT_UDP_LOST 0x03
-#define UAUDP_CONNECT_UDP_LOST_REINIT 0x04
-#define UAUDP_CONNECT_KEEPALIVE 0x05
-#define UAUDP_CONNECT_QOS_IP_TOS 0x06
-#define UAUDP_CONNECT_QOS_8021_VLID 0x07
-#define UAUDP_CONNECT_QOS_8021_PRI 0x08
-
-static const value_string uasip_opcode_str[] =
-{
- { UAUDP_CONNECT, "Connect" },
- { UAUDP_CONNECT_ACK, "Connect ACK" },
- { UAUDP_RELEASE, "Release" },
- { UAUDP_RELEASE_ACK, "Release ACK" },
- { UAUDP_KEEPALIVE, "Keepalive" },
- { UAUDP_KEEPALIVE_ACK, "Keepalive ACK" },
- { UAUDP_NACK, "NACK" },
- { UAUDP_DATA, "DATA" },
- { 0, NULL }
-};
-
-static const value_string uasip_connect_vals[] =
-{
- { UAUDP_CONNECT_VERSION, "Version" },
- { UAUDP_CONNECT_WINDOW_SIZE, "Window Size" },
- { UAUDP_CONNECT_MTU, "MTU" },
- { UAUDP_CONNECT_UDP_LOST, "UDP lost" },
- { UAUDP_CONNECT_UDP_LOST_REINIT, "UDP lost reinit" },
- { UAUDP_CONNECT_KEEPALIVE, "Keepalive" },
- { UAUDP_CONNECT_QOS_IP_TOS, "QoS IP TOS" },
- { UAUDP_CONNECT_QOS_8021_VLID, "QoS 802.1 VLID" },
- { UAUDP_CONNECT_QOS_8021_PRI, "QoS 802.1 PRI"},
- { 0, NULL }
-};
+static gboolean noesip_enabled = FALSE;
static dissector_handle_t ua_sys_to_term_handle;
static dissector_handle_t ua_term_to_sys_handle;
-gboolean str_to_ipaddr(const gchar *addr, guint8 *ad)
-{
- int i = 0;
- const gchar *p = addr;
- guint32 value;
-
- if (addr == NULL)
- {
- return FALSE;
- }
-
- for (i = 0; i < 4; i++)
- {
- value = 0;
- while (*p != '.' && *p != '\0')
- {
- value = value * 10 + (*p - '0');
- p++;
- }
- if(value > 255)
- {
- return FALSE;
- }
- ad[i] = value;
- p++;
- }
-
- return TRUE;
-}
-
static void rTLV(proto_tree *tree, int *V, tvbuff_t *tvb, gint offset, gint8 L)
{
- switch(L)
- {
- case 1:
- proto_tree_add_uint(tree, *V, tvb, offset, L+2, tvb_get_guint8(tvb, offset+2));
- break;
-
- case 2:
- proto_tree_add_uint(tree, *V, tvb, offset, L+2, tvb_get_ntohs(tvb, offset+2));
- break;
-
- case 3:
- proto_tree_add_uint(tree, *V, tvb, offset, L+2, tvb_get_ntoh24(tvb, offset+2));
- break;
-
- case 4:
- proto_tree_add_uint(tree, *V, tvb, offset, L+2, tvb_get_ntohl(tvb, offset+2));
- break;
-
- default:
- break;
- }
+ switch (L)
+ {
+ case 1:
+ proto_tree_add_uint(tree, *V, tvb, offset, L+2, tvb_get_guint8(tvb, offset+2));
+ break;
+
+ case 2:
+ proto_tree_add_uint(tree, *V, tvb, offset, L+2, tvb_get_ntohs(tvb, offset+2));
+ break;
+
+ case 3:
+ proto_tree_add_uint(tree, *V, tvb, offset, L+2, tvb_get_ntoh24(tvb, offset+2));
+ break;
+
+ case 4:
+ proto_tree_add_uint(tree, *V, tvb, offset, L+2, tvb_get_ntohl(tvb, offset+2));
+ break;
+
+ default:
+ break;
+ }
}
static void _dissect_uasip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, e_ua_direction direction)
{
- proto_item *uasip_item = NULL;
- proto_tree *uasip_tree = NULL;
- gint offset = 0;
- guint8 opcode = 0;
-
- if (noesip_enabled)
- {
- if (check_col(pinfo->cinfo, COL_PROTOCOL))
- {
- col_append_str(pinfo->cinfo, COL_PROTOCOL, "/NOE");
- }
- }
- else
- {
- if (check_col(pinfo->cinfo, COL_PROTOCOL))
- {
- col_append_str(pinfo->cinfo, COL_PROTOCOL, "/DL");
- }
- }
-
- opcode = tvb_get_guint8(tvb, offset);
- offset++;
-
- ua_tap_info.opcode = opcode;
- ua_tap_info.expseq = 0;
- ua_tap_info.sntseq = 0;
-
- if (check_col(pinfo->cinfo, COL_INFO))
- {
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s", val_to_str(opcode, uasip_opcode_str, "unknown (0x%02x)"));
- }
-
- uasip_item = proto_tree_add_protocol_format(tree, proto_uasip, tvb, 0, 5, "SIP/NOE Protocol, %s", val_to_str(opcode, uasip_opcode_str, "unknown (0x%02x)"));
- uasip_tree = proto_item_add_subtree(uasip_item, ett_uasip);
- proto_tree_add_uint(uasip_tree, hf_uasip_opcode, tvb, 0, 1, opcode);
-
- switch(opcode)
- {
- case UAUDP_CONNECT:
- {
- while(tvb_offset_exists(tvb, offset))
- {
- guint8 T = tvb_get_guint8(tvb, offset+0);
- guint8 L = tvb_get_guint8(tvb, offset+1);
-
- switch(T)
- {
- case UAUDP_CONNECT_VERSION:
- rTLV(uasip_tree, &hf_uasip_version, tvb, offset, L);
- break;
-
- case UAUDP_CONNECT_WINDOW_SIZE:
- rTLV(uasip_tree, &hf_uasip_window_size, tvb, offset, L);
- break;
-
- case UAUDP_CONNECT_MTU:
- rTLV(uasip_tree, &hf_uasip_mtu, tvb, offset, L);
- break;
-
- case UAUDP_CONNECT_UDP_LOST:
- rTLV(uasip_tree, &hf_uasip_udp_lost, tvb, offset, L);
- break;
-
- case UAUDP_CONNECT_UDP_LOST_REINIT:
- rTLV(uasip_tree, &hf_uasip_udp_lost_reinit, tvb, offset, L);
- break;
-
- case UAUDP_CONNECT_KEEPALIVE:
- rTLV(uasip_tree, &hf_uasip_keepalive, tvb, offset, L);
- break;
-
- case UAUDP_CONNECT_QOS_IP_TOS:
- rTLV(uasip_tree, &hf_uasip_qos_ip_tos, tvb, offset, L);
- break;
-
- case UAUDP_CONNECT_QOS_8021_VLID:
- rTLV(uasip_tree, &hf_uasip_qos_8021_vlid, tvb, offset, L);
- break;
-
- case UAUDP_CONNECT_QOS_8021_PRI:
- rTLV(uasip_tree, &hf_uasip_qos_8021_pri, tvb, offset, L);
- break;
-
- default:
- break;
- }
- offset += (2 + L);
- }
- }
- break;
-
- case UAUDP_NACK:
- {
- proto_tree_add_uint(uasip_tree, hf_uasip_expseq, tvb, offset, 2, tvb_get_ntohs(tvb, offset));
- ua_tap_info.expseq = tvb_get_ntohs(tvb, offset+0);
- /*Fix Clang Warning*/
- /*offset += 2;*/
-
- if (noesip_enabled)
- {
- if (check_col(pinfo->cinfo, COL_INFO))
- {
- col_add_fstr(pinfo->cinfo, COL_INFO, "NACK");
- }
- }
- else
- {
- if (check_col(pinfo->cinfo, COL_INFO))
- {
- col_add_fstr(pinfo->cinfo, COL_INFO, "NACK exp:%d", ua_tap_info.expseq);
- }
- }
- }
- break;
-
- case UAUDP_DATA:
- {
- int datalen;
-
- proto_tree_add_uint(uasip_tree, hf_uasip_expseq, tvb, offset+0, 2, tvb_get_ntohs(tvb, offset+0));
- proto_tree_add_uint(uasip_tree, hf_uasip_sntseq, tvb, offset+2, 2, tvb_get_ntohs(tvb, offset+2));
- ua_tap_info.expseq = tvb_get_ntohs(tvb, offset+0);
- ua_tap_info.sntseq = tvb_get_ntohs(tvb, offset+2);
- offset += 4;
- datalen = (tvb_length(tvb) - offset);
-
- if (noesip_enabled)
- {
- if (datalen > 0)
- {
- if (direction == SYS_TO_TERM)
- {
- call_dissector(ua_sys_to_term_handle, tvb_new_subset(tvb, offset, datalen, datalen), pinfo, tree);
- }
- else if (direction == TERM_TO_SYS)
- {
- call_dissector(ua_term_to_sys_handle, tvb_new_subset(tvb, offset, datalen, datalen), pinfo, tree);
- }
- else
- {
- if (check_col(pinfo->cinfo, COL_INFO))
- {
- col_add_str(pinfo->cinfo, COL_INFO, "DATA - Couldn't resolve direction.");
- }
- }
- }
- else
- {
- if (check_col(pinfo->cinfo, COL_INFO))
- {
- col_add_str(pinfo->cinfo, COL_INFO, "ACK");
- }
- }
- }
- else
- {
- if (datalen > 0)
- {
- if (check_col(pinfo->cinfo, COL_INFO))
- {
- col_add_fstr(pinfo->cinfo, COL_INFO, "DATA exp:%d", ua_tap_info.expseq);
- col_append_fstr(pinfo->cinfo, COL_INFO, " snt:%d", ua_tap_info.sntseq);
- }
- }
- else
- {
- if (check_col(pinfo->cinfo, COL_INFO))
- {
- col_add_fstr(pinfo->cinfo, COL_INFO, "ACK exp:%d", ua_tap_info.expseq);
- col_append_fstr(pinfo->cinfo, COL_INFO, " snt:%d", ua_tap_info.sntseq);
- }
- }
- }
- }
- break;
-
- default:
- break;
- }
- tap_queue_packet(uasip_tap, pinfo, &ua_tap_info);
+ proto_item *uasip_item;
+ proto_tree *uasip_tree;
+ guint8 opcode;
+ gint offset = 0;
+
+ if (noesip_enabled)
+ {
+ col_append_str(pinfo->cinfo, COL_PROTOCOL, "/NOE");
+ }
+ else
+ {
+ col_append_str(pinfo->cinfo, COL_PROTOCOL, "/DL");
+ }
+
+ opcode = tvb_get_guint8(tvb, offset);
+ offset++;
+
+ ua_tap_info.opcode = opcode;
+ ua_tap_info.expseq = 0;
+ ua_tap_info.sntseq = 0;
+
+ if (check_col(pinfo->cinfo, COL_INFO))
+ {
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s", val_to_str_ext(opcode, &uaudp_opcode_str_ext, "unknown (0x%02x)"));
+ }
+
+ uasip_item = proto_tree_add_protocol_format(tree, proto_uasip, tvb, 0, 5,
+ "SIP/NOE Protocol, %s",
+ val_to_str_ext(opcode, &uaudp_opcode_str_ext, "unknown (0x%02x)"));
+ uasip_tree = proto_item_add_subtree(uasip_item, ett_uasip);
+ proto_tree_add_uint(uasip_tree, hf_uasip_opcode, tvb, 0, 1, opcode);
+
+ switch(opcode)
+ {
+ case UAUDP_CONNECT:
+ {
+ if (!tree)
+ break;
+ while(tvb_offset_exists(tvb, offset))
+ {
+ guint8 T = tvb_get_guint8(tvb, offset+0);
+ guint8 L = tvb_get_guint8(tvb, offset+1);
+
+ switch(T)
+ {
+ case UAUDP_CONNECT_VERSION:
+ rTLV(uasip_tree, &hf_uasip_version, tvb, offset, L);
+ break;
+
+ case UAUDP_CONNECT_WINDOW_SIZE:
+ rTLV(uasip_tree, &hf_uasip_window_size, tvb, offset, L);
+ break;
+
+ case UAUDP_CONNECT_MTU:
+ rTLV(uasip_tree, &hf_uasip_mtu, tvb, offset, L);
+ break;
+
+ case UAUDP_CONNECT_UDP_LOST:
+ rTLV(uasip_tree, &hf_uasip_udp_lost, tvb, offset, L);
+ break;
+
+ case UAUDP_CONNECT_UDP_LOST_REINIT:
+ rTLV(uasip_tree, &hf_uasip_udp_lost_reinit, tvb, offset, L);
+ break;
+
+ case UAUDP_CONNECT_KEEPALIVE:
+ rTLV(uasip_tree, &hf_uasip_keepalive, tvb, offset, L);
+ break;
+
+ case UAUDP_CONNECT_QOS_IP_TOS:
+ rTLV(uasip_tree, &hf_uasip_qos_ip_tos, tvb, offset, L);
+ break;
+
+ case UAUDP_CONNECT_QOS_8021_VLID:
+ rTLV(uasip_tree, &hf_uasip_qos_8021_vlid, tvb, offset, L);
+ break;
+
+ case UAUDP_CONNECT_QOS_8021_PRI:
+ rTLV(uasip_tree, &hf_uasip_qos_8021_pri, tvb, offset, L);
+ break;
+
+ default:
+ break;
+ }
+ offset += (2 + L);
+ }
+ }
+ break;
+
+ case UAUDP_NACK:
+ {
+ proto_tree_add_uint(uasip_tree, hf_uasip_expseq, tvb, offset, 2, tvb_get_ntohs(tvb, offset));
+ ua_tap_info.expseq = tvb_get_ntohs(tvb, offset+0);
+
+ /*offset += 2;*/
+
+ if (noesip_enabled)
+ {
+ col_add_fstr(pinfo->cinfo, COL_INFO, "NACK");
+ }
+ else
+ {
+ col_add_fstr(pinfo->cinfo, COL_INFO, "NACK exp:%d", ua_tap_info.expseq);
+ }
+ }
+ break;
+
+ case UAUDP_DATA:
+ {
+ int datalen;
+
+ proto_tree_add_uint(uasip_tree, hf_uasip_expseq, tvb, offset+0, 2, tvb_get_ntohs(tvb, offset+0));
+ proto_tree_add_uint(uasip_tree, hf_uasip_sntseq, tvb, offset+2, 2, tvb_get_ntohs(tvb, offset+2));
+ ua_tap_info.expseq = tvb_get_ntohs(tvb, offset+0);
+ ua_tap_info.sntseq = tvb_get_ntohs(tvb, offset+2);
+ offset += 4;
+ datalen = (tvb_length(tvb) - offset);
+
+ if (noesip_enabled)
+ {
+ if (datalen > 0)
+ {
+ if (direction == SYS_TO_TERM)
+ {
+ call_dissector(ua_sys_to_term_handle, tvb_new_subset(tvb, offset, datalen, datalen), pinfo, tree);
+ }
+ else if (direction == TERM_TO_SYS)
+ {
+ call_dissector(ua_term_to_sys_handle, tvb_new_subset(tvb, offset, datalen, datalen), pinfo, tree);
+ }
+ else
+ {
+ col_add_str(pinfo->cinfo, COL_INFO, "DATA - Couldn't resolve direction.");
+ }
+ }
+ else
+ {
+ col_add_str(pinfo->cinfo, COL_INFO, "ACK");
+ }
+ }
+ else
+ {
+ if (datalen > 0)
+ {
+ if (check_col(pinfo->cinfo, COL_INFO))
+ {
+ col_add_fstr(pinfo->cinfo, COL_INFO, "DATA exp:%d", ua_tap_info.expseq);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " snt:%d", ua_tap_info.sntseq);
+ }
+ }
+ else
+ {
+ if (check_col(pinfo->cinfo, COL_INFO))
+ {
+ col_add_fstr(pinfo->cinfo, COL_INFO, "ACK exp:%d", ua_tap_info.expseq);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " snt:%d", ua_tap_info.sntseq);
+ }
+ }
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+#if 0
+ tap_queue_packet(uasip_tap, pinfo, &ua_tap_info);
+#endif
}
static void dissect_uasip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- if (use_proxy_ipaddr)
- {
- if (memcmp((pinfo->src).data, proxy_ipaddr, 4*sizeof(guint8)) == 0)
- {
- _dissect_uasip(tvb, pinfo, tree, SYS_TO_TERM);
- return;
- }
- else if (memcmp((pinfo->dst).data, proxy_ipaddr, 4*sizeof(guint8)) == 0)
- {
- _dissect_uasip(tvb, pinfo, tree, TERM_TO_SYS);
- return;
- }
- }
- _dissect_uasip(tvb, pinfo, tree, DIR_UNKNOWN);
+ if (use_proxy_ipaddr)
+ {
+ if (memcmp((pinfo->src).data, proxy_ipaddr, sizeof(proxy_ipaddr)) == 0)
+ {
+ _dissect_uasip(tvb, pinfo, tree, SYS_TO_TERM);
+ return;
+ }
+ else if (memcmp((pinfo->dst).data, proxy_ipaddr, sizeof(proxy_ipaddr)) == 0)
+ {
+ _dissect_uasip(tvb, pinfo, tree, TERM_TO_SYS);
+ return;
+ }
+ }
+ _dissect_uasip(tvb, pinfo, tree, DIR_UNKNOWN);
}
void proto_register_uasip(void)
{
- module_t *uasip_module;
-
- static hf_register_info hf_uasip[] =
- {
- {
- &hf_uasip_opcode,
- {
- "Opcode",
- "uasip.opcode",
- FT_UINT8,
- BASE_DEC,
- VALS(uasip_opcode_str),
- 0x0,
- "UA/SIP Opcode",
- HFILL
- }
- },
- {
- &hf_uasip_version,
- {
- "Version",
- "uasip.version",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- "UA/SIP Version",
- HFILL
- }
- },
- {
- &hf_uasip_window_size,
- {
- "Window Size",
- "uasip.window_size",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- "UA/SIP Window Size",
- HFILL
- }
- },
- {
- &hf_uasip_mtu,
- {
- "MTU",
- "uasip.mtu",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- "UA/SIP MTU",
- HFILL
- }
- },
- {
- &hf_uasip_udp_lost,
- {
- "UDP Lost",
- "uasip.udp_lost",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- "UA/SIP Lost",
- HFILL
- }
- },
- {
- &hf_uasip_udp_lost_reinit,
- {
- "UDP lost reinit",
- "uasip.udp_lost_reinit",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- "UA/SIP Lost Re-Init",
- HFILL
- }
- },
- {
- &hf_uasip_keepalive,
- {
- "Keepalive",
- "uasip.keepalive",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- "UA/SIP Keepalive",
- HFILL
- }
- },
- {
- &hf_uasip_qos_ip_tos,
- {
- "QoS IP TOS",
- "uasip.qos_ip_tos",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- "UA/SIP QoS IP TOS",
- HFILL
- }
- },
- {
- &hf_uasip_qos_8021_vlid,
- {
- "QoS 802.1 VLID",
- "uasip.qos_8021_vlid",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- "UA/SIP QoS 802.1 VLID",
- HFILL
- }
- },
- {
- &hf_uasip_qos_8021_pri,
- {
- "QoS 802.1 PRI",
- "uasip.qos_8021_pri",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- "UA/SIP QoS 802.1 PRI",
- HFILL
- }
- },
- {
- &hf_uasip_expseq,
- {
- "Sequence Number (expected)",
- "uasip.expseq",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- "UA/SIP Expected Sequence Number",
- HFILL
- }
- },
- {
- &hf_uasip_sntseq,
- {
- "Sequence Number (sent)",
- "uasip.sntseq",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- "UA/SIP Sent Sequence Number",
- HFILL
- }
- },
- };
-
- static gint *ett[] =
- {
- &ett_uasip,
- };
-
- proto_uasip = proto_register_protocol("UA/SIP Protocol", "UASIP", "uasip");
- register_dissector("uasip", dissect_uasip, proto_uasip);
-
- proto_register_field_array(proto_uasip, hf_uasip, array_length(hf_uasip));
- proto_register_subtree_array(ett, array_length(ett));
-
- uasip_module = prefs_register_protocol(proto_uasip, proto_reg_handoff_uasip);
- prefs_register_bool_preference(uasip_module, "noesip", "Try to decode SIP NOE", "NOE SIP Protocol", &noesip_enabled);
- prefs_register_string_preference(uasip_module, "proxy_ipaddr", "Proxy IP Address", "IPv4 address of the proxy", &pref_proxy_ipaddr_s);
-/* uasip_tap = register_tap("uasip");*/
+ module_t *uasip_module;
+
+ static hf_register_info hf_uasip[] = {
+ {
+ &hf_uasip_opcode,
+ {
+ "Opcode",
+ "uasip.opcode",
+ FT_UINT8,
+ BASE_DEC | BASE_EXT_STRING,
+ &uaudp_opcode_str_ext,
+ 0x0,
+ "UA/SIP Opcode",
+ HFILL
+ }
+ },
+ {
+ &hf_uasip_version,
+ {
+ "Version",
+ "uasip.version",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "UA/SIP Version",
+ HFILL
+ }
+ },
+ {
+ &hf_uasip_window_size,
+ {
+ "Window Size",
+ "uasip.window_size",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "UA/SIP Window Size",
+ HFILL
+ }
+ },
+ {
+ &hf_uasip_mtu,
+ {
+ "MTU",
+ "uasip.mtu",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "UA/SIP MTU",
+ HFILL
+ }
+ },
+ {
+ &hf_uasip_udp_lost,
+ {
+ "UDP Lost",
+ "uasip.udp_lost",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "UA/SIP Lost",
+ HFILL
+ }
+ },
+ {
+ &hf_uasip_udp_lost_reinit,
+ {
+ "UDP lost reinit",
+ "uasip.udp_lost_reinit",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "UA/SIP Lost Re-Init",
+ HFILL
+ }
+ },
+ {
+ &hf_uasip_keepalive,
+ {
+ "Keepalive",
+ "uasip.keepalive",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "UA/SIP Keepalive",
+ HFILL
+ }
+ },
+ {
+ &hf_uasip_qos_ip_tos,
+ {
+ "QoS IP TOS",
+ "uasip.qos_ip_tos",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "UA/SIP QoS IP TOS",
+ HFILL
+ }
+ },
+ {
+ &hf_uasip_qos_8021_vlid,
+ {
+ "QoS 802.1 VLID",
+ "uasip.qos_8021_vlid",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "UA/SIP QoS 802.1 VLID",
+ HFILL
+ }
+ },
+ {
+ &hf_uasip_qos_8021_pri,
+ {
+ "QoS 802.1 PRI",
+ "uasip.qos_8021_pri",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "UA/SIP QoS 802.1 PRI",
+ HFILL
+ }
+ },
+ {
+ &hf_uasip_expseq,
+ {
+ "Sequence Number (expected)",
+ "uasip.expseq",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "UA/SIP Expected Sequence Number",
+ HFILL
+ }
+ },
+ {
+ &hf_uasip_sntseq,
+ {
+ "Sequence Number (sent)",
+ "uasip.sntseq",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "UA/SIP Sent Sequence Number",
+ HFILL
+ }
+ },
+ };
+
+ static gint *ett[] =
+ {
+ &ett_uasip,
+ };
+
+ proto_uasip = proto_register_protocol("UA/SIP Protocol", "UASIP", "uasip");
+ register_dissector("uasip", dissect_uasip, proto_uasip);
+
+ proto_register_field_array(proto_uasip, hf_uasip, array_length(hf_uasip));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ uasip_module = prefs_register_protocol(proto_uasip, proto_reg_handoff_uasip);
+ prefs_register_bool_preference(uasip_module, "noesip", "Try to decode SIP NOE", "NOE SIP Protocol", &noesip_enabled);
+ prefs_register_string_preference(uasip_module, "proxy_ipaddr", "Proxy IP Address",
+ "IPv4 address of the proxy (Invalid values will be ignored)",
+ &pref_proxy_ipaddr_s);
+#if 0
+ uasip_tap = register_tap("uasip");
+#endif
}
void proto_reg_handoff_uasip(void)
{
- static gboolean prefs_initialized = FALSE;
- static dissector_handle_t uasip_handle;
-
- if(!prefs_initialized)
- {
- uasip_handle = create_dissector_handle(dissect_uasip, proto_uasip);
- ua_sys_to_term_handle = find_dissector("ua_sys_to_term");
- ua_term_to_sys_handle = find_dissector("ua_term_to_sys");
- prefs_initialized = TRUE;
- }
- else
- {
- if (str_to_ipaddr(pref_proxy_ipaddr_s, proxy_ipaddr))
- {
- use_proxy_ipaddr = TRUE;
- }
- else
- {
- use_proxy_ipaddr = FALSE;
- pref_proxy_ipaddr_s = g_strdup("");
- }
- }
- dissector_add_string("media_type", "application/octet-stream", uasip_handle);
+ dissector_handle_t uasip_handle;
+ static gboolean prefs_initialized = FALSE;
+
+ if (!prefs_initialized)
+ {
+ uasip_handle = create_dissector_handle(dissect_uasip, proto_uasip);
+ dissector_add_string("media_type", "application/octet-stream", uasip_handle);
+ ua_sys_to_term_handle = find_dissector("ua_sys_to_term");
+ ua_term_to_sys_handle = find_dissector("ua_term_to_sys");
+ prefs_initialized = TRUE;
+ }
+
+ use_proxy_ipaddr = FALSE;
+ memset(proxy_ipaddr, 0, sizeof(proxy_ipaddr));
+
+ if (strcmp(pref_proxy_ipaddr_s, "") != 0) {
+ if (inet_pton(AF_INET, pref_proxy_ipaddr_s, proxy_ipaddr) == 1)
+ {
+ use_proxy_ipaddr = TRUE;
+ }
+ else
+ {
+ g_warning("uasip: Invalid 'Proxy IP Address': \"%s\"", pref_proxy_ipaddr_s);
+ }
+ }
}
-
diff --git a/epan/dissectors/packet-uaudp.c b/epan/dissectors/packet-uaudp.c
index c0ae16b5ed..9600fbb594 100644
--- a/epan/dissectors/packet-uaudp.c
+++ b/epan/dissectors/packet-uaudp.c
@@ -27,24 +27,23 @@
# include "config.h"
#endif
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#include "packet-uaudp.h"
-
-#include <string.h>
#include <glib.h>
#include "epan/packet.h"
#include "epan/prefs.h"
#include "epan/tap.h"
-#include "epan/value_string.h"
+#include "packet-uaudp.h"
/* GLOBALS */
+#if 0
+static dissector_table_t uaudp_opcode_dissector_table;
+#endif
+
+#if 0
static int uaudp_tap = -1;
+#endif
static tap_struct_uaudp ua_tap_info;
@@ -70,620 +69,614 @@ static guint8 sys_ip[4];
static const char* pref_sys_ip_s = "";
static gboolean use_sys_ip = FALSE;
-static gboolean decode_ua = TRUE;
-
-#define UAUDP_CONNECT_VERSION 0x00
-#define UAUDP_CONNECT_WINDOW_SIZE 0x01
-#define UAUDP_CONNECT_MTU 0x02
-#define UAUDP_CONNECT_UDP_LOST 0x03
-#define UAUDP_CONNECT_UDP_LOST_REINIT 0x04
-#define UAUDP_CONNECT_KEEPALIVE 0x05
-#define UAUDP_CONNECT_QOS_IP_TOS 0x06
-#define UAUDP_CONNECT_QOS_8021_VLID 0x07
-#define UAUDP_CONNECT_QOS_8021_PRI 0x08
-
+static gboolean decode_ua = TRUE;
static const value_string uaudp_opcode_str[] =
{
- { UAUDP_CONNECT, "Connect" },
- { UAUDP_CONNECT_ACK, "Connect ACK" },
- { UAUDP_RELEASE, "Release" },
- { UAUDP_RELEASE_ACK, "Release ACK" },
- { UAUDP_KEEPALIVE, "Keepalive" },
- { UAUDP_KEEPALIVE_ACK, "Keepalive ACK" },
- { UAUDP_NACK, "NACK" },
- { UAUDP_DATA, "Data" },
- { 0, NULL }
+ { UAUDP_CONNECT, "Connect" },
+ { UAUDP_CONNECT_ACK, "Connect ACK" },
+ { UAUDP_RELEASE, "Release" },
+ { UAUDP_RELEASE_ACK, "Release ACK" },
+ { UAUDP_KEEPALIVE, "Keepalive" },
+ { UAUDP_KEEPALIVE_ACK, "Keepalive ACK" },
+ { UAUDP_NACK, "NACK" },
+ { UAUDP_DATA, "Data" },
+ { 0, NULL }
};
+value_string_ext uaudp_opcode_str_ext = VALUE_STRING_EXT_INIT(uaudp_opcode_str);
-
+#if 0 /* XXX: Unused ? */
static const value_string uaudp_connect_vals[] =
{
- { UAUDP_CONNECT_VERSION, "Version" },
- { UAUDP_CONNECT_WINDOW_SIZE, "Window Size" },
- { UAUDP_CONNECT_MTU, "MTU" },
- { UAUDP_CONNECT_UDP_LOST, "UDP lost" },
- { UAUDP_CONNECT_UDP_LOST_REINIT,"UDP lost reinit" },
- { UAUDP_CONNECT_KEEPALIVE, "Keepalive" },
- { UAUDP_CONNECT_QOS_IP_TOS, "QoS IP TOS" },
- { UAUDP_CONNECT_QOS_8021_VLID, "QoS 802.1 VLID" },
- { UAUDP_CONNECT_QOS_8021_PRI, "QoS 802.1 PRI"},
- { 0, NULL }
+ { UAUDP_CONNECT_VERSION, "Version" },
+ { UAUDP_CONNECT_WINDOW_SIZE, "Window Size" },
+ { UAUDP_CONNECT_MTU, "MTU" },
+ { UAUDP_CONNECT_UDP_LOST, "UDP lost" },
+ { UAUDP_CONNECT_UDP_LOST_REINIT,"UDP lost reinit" },
+ { UAUDP_CONNECT_KEEPALIVE, "Keepalive" },
+ { UAUDP_CONNECT_QOS_IP_TOS, "QoS IP TOS" },
+ { UAUDP_CONNECT_QOS_8021_VLID, "QoS 802.1 VLID" },
+ { UAUDP_CONNECT_QOS_8021_PRI, "QoS 802.1 PRI"},
+ { 0, NULL }
};
-
+value_string_ext uaudp_connect_vals_ext = VALUE_STRING_EXT_INIT(uaudp_connect_vals);
+#endif
static dissector_handle_t ua_sys_to_term_handle;
static dissector_handle_t ua_term_to_sys_handle;
-
typedef struct
{
- char *name;
- char *text;
- guint port;
- guint last_port;
+ const char *name;
+ const char *text;
+ guint port;
+ guint last_port;
} prefs_uaudp_t;
-#define MAX_TERMINAL_PORTS 4
-
-static prefs_uaudp_t ports[MAX_TERMINAL_PORTS] =
+static prefs_uaudp_t ports[] =
{
- {"port1", "Terminal UDP port (setting 1)", 32000, 32000},
- {"port2", "Terminal UDP port (setting 2)", 32512, 32512},
- {"port3", "Terminal UDP port (setting 3)", 0, 0},
- {"port4", "Terminal UDP port (setting 4)", 0, 0},
-};
-/*
- {"port5", "Terminal UDP port (setting 5)", 0, 0},
- {"port6", "Terminal UDP port (setting 6)", 0, 0},
- {"port7", "Terminal UDP port (setting 7)", 0, 0},
- {"port8", "Terminal UDP port (setting 8)", 0, 0}
+ {"port1", "Terminal UDP port (setting 1)", 32000, 32000},
+ {"port2", "Terminal UDP port (setting 2)", 32512, 32512},
+ {"port3", "Terminal UDP port (setting 3)", 0, 0},
+ {"port4", "Terminal UDP port (setting 4)", 0, 0},
+#if 0
+ {"port5", "Terminal UDP port (setting 5)", 0, 0},
+ {"port6", "Terminal UDP port (setting 6)", 0, 0},
+ {"port7", "Terminal UDP port (setting 7)", 0, 0},
+ {"port8", "Terminal UDP port (setting 8)", 0, 0}
+#endif
};
-*/
+#define MAX_TERMINAL_PORTS (signed)(array_length(ports))
-guint find_terminal_port(guint port)
+static gboolean find_terminal_port(guint port)
{
- int i;
- for (i=0; i<MAX_TERMINAL_PORTS; i++)
- if (ports[i].port == port)
- return 1;
- return 0;
+ int i;
+ for (i=0; i<MAX_TERMINAL_PORTS; i++)
+ if (ports[i].port == port)
+ return TRUE;
+ return FALSE;
}
static void rV(proto_tree *tree, int *V, tvbuff_t *tvb, gint offset, gint8 L)
{
- switch(L)
- {
- case 1:
- proto_tree_add_uint(tree,
- *V,
- tvb,
- offset,
- L+2,
- tvb_get_guint8(tvb, offset+2));
- break;
- case 2:
- proto_tree_add_uint(tree,
- *V,
- tvb,
- offset,
- L+2,
- tvb_get_ntohs(tvb, offset+2));
- break;
- case 3:
- proto_tree_add_uint(tree,
- *V,
- tvb,
- offset,
- L+2,
- tvb_get_ntoh24(tvb, offset+2));
- break;
- case 4:
- proto_tree_add_uint(tree,
- *V,
- tvb,
- offset,
- L+2,
- tvb_get_ntohl(tvb, offset+2));
- break;
- }
+ switch(L)
+ {
+ case 1:
+ proto_tree_add_uint(tree,
+ *V,
+ tvb,
+ offset,
+ L+2,
+ tvb_get_guint8(tvb, offset+2));
+ break;
+ case 2:
+ proto_tree_add_uint(tree,
+ *V,
+ tvb,
+ offset,
+ L+2,
+ tvb_get_ntohs(tvb, offset+2));
+ break;
+ case 3:
+ proto_tree_add_uint(tree,
+ *V,
+ tvb,
+ offset,
+ L+2,
+ tvb_get_ntoh24(tvb, offset+2));
+ break;
+ case 4:
+ proto_tree_add_uint(tree,
+ *V,
+ tvb,
+ offset,
+ L+2,
+ tvb_get_ntohl(tvb, offset+2));
+ break;
+ }
}
/* UA/UDP DISSECTOR */
static void _dissect_uaudp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- e_ua_direction direction)
+ e_ua_direction direction)
{
- proto_item *uaudp_item = NULL;
- proto_tree *uaudp_tree = NULL;
- gint offset = 0;
- guint8 opcode = 0;
-
- /* print the name of the protocol in the "PROTOCOL" column */
- if (check_col(pinfo->cinfo, COL_PROTOCOL))
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "UAUDP");
-
- /* get the identifer, it means operation code */
- opcode = tvb_get_guint8(tvb, offset);
- offset++;
-
- ua_tap_info.opcode = opcode;
- ua_tap_info.expseq = 0;
- ua_tap_info.sntseq = 0;
-
- /* print in "INFO" column the type of UAUDP message */
-
- if (check_col(pinfo->cinfo, COL_INFO))
- col_add_fstr(pinfo->cinfo,
- COL_INFO,
- "%s",
- val_to_str(opcode, uaudp_opcode_str, "unknown (0x%02x)"));
-
- if (tree)
- {
- uaudp_item = proto_tree_add_protocol_format(tree, proto_uaudp, tvb, 0, 5,
- "Universal Alcatel/UDP Encapsulation Protocol, %s",
- val_to_str(opcode, uaudp_opcode_str, "unknown (0x%02x)"));
-
- uaudp_tree = proto_item_add_subtree(uaudp_item, ett_uaudp);
-
- /* print the identifier */
- proto_tree_add_uint(uaudp_tree, hf_uaudp_opcode, tvb, 0, 1, opcode);
-
- switch(opcode)
- {
- case UAUDP_CONNECT:
- {
- while(tvb_offset_exists(tvb, offset))
- {
- guint8 T = tvb_get_guint8(tvb, offset+0);
- guint8 L = tvb_get_guint8(tvb, offset+1);
-
- switch(T)
- {
- case UAUDP_CONNECT_VERSION:
- rV(uaudp_tree, &hf_uaudp_version , tvb, offset, L);
- break;
- case UAUDP_CONNECT_WINDOW_SIZE:
- rV(uaudp_tree, &hf_uaudp_window_size , tvb, offset, L);
- break;
- case UAUDP_CONNECT_MTU:
- rV(uaudp_tree, &hf_uaudp_mtu , tvb, offset, L);
- break;
- case UAUDP_CONNECT_UDP_LOST:
- rV(uaudp_tree, &hf_uaudp_udp_lost , tvb, offset, L);
- break;
- case UAUDP_CONNECT_UDP_LOST_REINIT:
- rV(uaudp_tree, &hf_uaudp_udp_lost_reinit, tvb, offset, L);
- break;
- case UAUDP_CONNECT_KEEPALIVE:
- rV(uaudp_tree, &hf_uaudp_keepalive , tvb, offset, L);
- break;
- case UAUDP_CONNECT_QOS_IP_TOS:
- rV(uaudp_tree, &hf_uaudp_qos_ip_tos , tvb, offset, L);
- break;
- case UAUDP_CONNECT_QOS_8021_VLID:
- rV(uaudp_tree, &hf_uaudp_qos_8021_vlid , tvb, offset, L);
- break;
- case UAUDP_CONNECT_QOS_8021_PRI:
- rV(uaudp_tree, &hf_uaudp_qos_8021_pri , tvb, offset, L);
- break;
- }
- offset += (2 + L);
- }
- break;
- }
-
- case UAUDP_NACK:
- {
- proto_tree_add_uint(uaudp_tree,
- hf_uaudp_expseq,
- tvb,
- offset,
- 2,
- tvb_get_ntohs(tvb, offset));
- /*Fix Clang Warning*/
- /*offset += 2;*/
- break;
- }
-
- case UAUDP_DATA:
- {
- int datalen;
-
- proto_tree_add_uint(uaudp_tree,
- hf_uaudp_expseq,
- tvb,
- offset+0,
- 2,
- tvb_get_ntohs(tvb, offset+0));
-
- proto_tree_add_uint(uaudp_tree,
- hf_uaudp_sntseq,
- tvb,
- offset+2,
- 2,
- tvb_get_ntohs(tvb, offset+2));
-
- ua_tap_info.expseq = hf_uaudp_expseq;
- ua_tap_info.sntseq = hf_uaudp_sntseq;
- offset += 4;
- datalen = (tvb_length(tvb) - offset);
-
- /* if it remains some data, call of UA dissector */
- if (datalen > 0)
- {
- if (direction==SYS_TO_TERM)
- call_dissector(ua_sys_to_term_handle,
- tvb_new_subset(tvb, offset, datalen, datalen),
- pinfo,
- tree);
- else if (direction==TERM_TO_SYS)
- call_dissector(ua_term_to_sys_handle,
- tvb_new_subset(tvb, offset, datalen, datalen),
- pinfo,
- tree);
- else {
- if (check_col(pinfo->cinfo, COL_INFO))
- col_add_str(pinfo->cinfo,
- COL_INFO,
- "Data - Couldn't resolve direction. Check UAUDP Preferences.");
- }
- ua_tap_info.expseq = hf_uaudp_expseq;
- }
- else {
- /* print in "INFO" column */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_add_str(pinfo->cinfo,
- COL_INFO,
- "Data ACK");
- }
- break;
- }
- default:
- break;
- }
- }
- tap_queue_packet(uaudp_tap, pinfo, &ua_tap_info);
+ gint offset = 0;
+ guint8 opcode;
+ proto_item *uaudp_item;
+ proto_tree *uaudp_tree;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "UAUDP");
+
+ /* get the identifier; it means operation code */
+ opcode = tvb_get_guint8(tvb, offset);
+ offset += 1;
+
+ ua_tap_info.opcode = opcode;
+ ua_tap_info.expseq = 0;
+ ua_tap_info.sntseq = 0;
+
+ /* print in "INFO" column the type of UAUDP message */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_add_fstr(pinfo->cinfo,
+ COL_INFO,
+ "%s",
+ val_to_str_ext(opcode, &uaudp_opcode_str_ext, "unknown (0x%02x)"));
+
+ uaudp_item = proto_tree_add_protocol_format(tree, proto_uaudp, tvb, 0, 5,
+ "Universal Alcatel/UDP Encapsulation Protocol, %s",
+ val_to_str_ext(opcode, &uaudp_opcode_str_ext, "unknown (0x%02x)"));
+
+ uaudp_tree = proto_item_add_subtree(uaudp_item, ett_uaudp);
+
+ /* print the identifier */
+ proto_tree_add_uint(uaudp_tree, hf_uaudp_opcode, tvb, 0, 1, opcode);
+
+ switch(opcode)
+ {
+ case UAUDP_CONNECT:
+ {
+ if (!tree)
+ break;
+ while (tvb_offset_exists(tvb, offset))
+ {
+ guint8 T = tvb_get_guint8(tvb, offset+0);
+ guint8 L = tvb_get_guint8(tvb, offset+1);
+
+ switch(T)
+ {
+ case UAUDP_CONNECT_VERSION:
+ rV(uaudp_tree, &hf_uaudp_version , tvb, offset, L);
+ break;
+ case UAUDP_CONNECT_WINDOW_SIZE:
+ rV(uaudp_tree, &hf_uaudp_window_size , tvb, offset, L);
+ break;
+ case UAUDP_CONNECT_MTU:
+ rV(uaudp_tree, &hf_uaudp_mtu , tvb, offset, L);
+ break;
+ case UAUDP_CONNECT_UDP_LOST:
+ rV(uaudp_tree, &hf_uaudp_udp_lost , tvb, offset, L);
+ break;
+ case UAUDP_CONNECT_UDP_LOST_REINIT:
+ rV(uaudp_tree, &hf_uaudp_udp_lost_reinit, tvb, offset, L);
+ break;
+ case UAUDP_CONNECT_KEEPALIVE:
+ rV(uaudp_tree, &hf_uaudp_keepalive , tvb, offset, L);
+ break;
+ case UAUDP_CONNECT_QOS_IP_TOS:
+ rV(uaudp_tree, &hf_uaudp_qos_ip_tos , tvb, offset, L);
+ break;
+ case UAUDP_CONNECT_QOS_8021_VLID:
+ rV(uaudp_tree, &hf_uaudp_qos_8021_vlid , tvb, offset, L);
+ break;
+ case UAUDP_CONNECT_QOS_8021_PRI:
+ rV(uaudp_tree, &hf_uaudp_qos_8021_pri , tvb, offset, L);
+ break;
+ }
+ offset += (2 + L);
+ }
+ break;
+ }
+
+ case UAUDP_NACK:
+ {
+ proto_tree_add_uint(uaudp_tree,
+ hf_uaudp_expseq,
+ tvb,
+ offset,
+ 2,
+ tvb_get_ntohs(tvb, offset));
+ break;
+ }
+
+ case UAUDP_DATA:
+ {
+ int datalen;
+
+ proto_tree_add_uint(uaudp_tree,
+ hf_uaudp_expseq,
+ tvb,
+ offset+0,
+ 2,
+ tvb_get_ntohs(tvb, offset+0));
+
+ proto_tree_add_uint(uaudp_tree,
+ hf_uaudp_sntseq,
+ tvb,
+ offset+2,
+ 2,
+ tvb_get_ntohs(tvb, offset+2));
+
+ ua_tap_info.expseq = hf_uaudp_expseq;
+ ua_tap_info.sntseq = hf_uaudp_sntseq;
+
+ offset += 4;
+ datalen = tvb_reported_length(tvb) - offset;
+
+ /* if there is remaining data, call the UA dissector */
+ if (datalen > 0)
+ {
+ if (direction == SYS_TO_TERM)
+ call_dissector(ua_sys_to_term_handle,
+ tvb_new_subset(tvb, offset, datalen, datalen),
+ pinfo,
+ tree);
+ else if (direction == TERM_TO_SYS)
+ call_dissector(ua_term_to_sys_handle,
+ tvb_new_subset(tvb, offset, datalen, datalen),
+ pinfo,
+ tree);
+ else {
+ /* XXX: expert ?? */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_add_str(pinfo->cinfo,
+ COL_INFO,
+ "Data - Couldn't resolve direction. Check UAUDP Preferences.");
+ }
+ ua_tap_info.expseq = hf_uaudp_expseq;
+ }
+ else {
+ /* print in "INFO" column */
+ col_add_str(pinfo->cinfo,
+ COL_INFO,
+ "Data ACK");
+ }
+ break;
+ }
+ default:
+ break;
+ }
+#if 0
+ tap_queue_packet(uaudp_tap, pinfo, &ua_tap_info);
+#endif
}
+#if 0
+/* XXX: The following are never actually used ?? */
static void dissect_uaudp_dir_unknown(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- _dissect_uaudp(tvb, pinfo, tree, DIR_UNKNOWN);
+ _dissect_uaudp(tvb, pinfo, tree, DIR_UNKNOWN);
}
static void dissect_uaudp_term_to_serv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- _dissect_uaudp(tvb, pinfo, tree, TERM_TO_SYS);
+ _dissect_uaudp(tvb, pinfo, tree, TERM_TO_SYS);
}
static void dissect_uaudp_serv_to_term(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- _dissect_uaudp(tvb, pinfo, tree, SYS_TO_TERM);
+ _dissect_uaudp(tvb, pinfo, tree, SYS_TO_TERM);
}
+#endif
/*
* UA/UDP DISSECTOR
- * Ethereal packet dissector entry point
- */
+ Wireshark packet dissector entry point
+*/
static void dissect_uaudp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- /* server addres has precedence on ports if present */
- if (use_sys_ip) {
- /* use server address to find direction*/
- if (memcmp((pinfo->src).data, sys_ip, 4*sizeof(guint8)) == 0)
- {
- _dissect_uaudp(tvb, pinfo, tree, SYS_TO_TERM);
- return;
- }
- else if (memcmp((pinfo->dst).data, sys_ip, 4*sizeof(guint8)) == 0)
- {
- _dissect_uaudp(tvb, pinfo, tree, TERM_TO_SYS);
- return;
- }
- }
-
- /* use ports to find direction */
- if (find_terminal_port(pinfo->srcport))
- {
- _dissect_uaudp(tvb, pinfo, tree, TERM_TO_SYS);
- return;
- }
- else if (find_terminal_port(pinfo->destport))
- {
- _dissect_uaudp(tvb, pinfo, tree, SYS_TO_TERM);
- return;
- }
-
- _dissect_uaudp(tvb, pinfo, tree, DIR_UNKNOWN);
+ /* server address, if present, has precedence on ports */
+ if (use_sys_ip) {
+ /* use server address to find direction*/
+ if (memcmp((pinfo->src).data, sys_ip, 4*sizeof(guint8)) == 0)
+ {
+ _dissect_uaudp(tvb, pinfo, tree, SYS_TO_TERM);
+ return;
+ }
+ else if (memcmp((pinfo->dst).data, sys_ip, 4*sizeof(guint8)) == 0)
+ {
+ _dissect_uaudp(tvb, pinfo, tree, TERM_TO_SYS);
+ return;
+ }
+ }
+
+ /* use ports to find direction */
+ if (find_terminal_port(pinfo->srcport))
+ {
+ _dissect_uaudp(tvb, pinfo, tree, TERM_TO_SYS);
+ return;
+ }
+ else if (find_terminal_port(pinfo->destport))
+ {
+ _dissect_uaudp(tvb, pinfo, tree, SYS_TO_TERM);
+ return;
+ }
+
+ _dissect_uaudp(tvb, pinfo, tree, DIR_UNKNOWN);
}
-
-gboolean str_to_addr_ip(const gchar *addr, guint8 *ad)
+/* XXX: Presumably there's a util fcn for this ... */
+static gboolean str_to_addr_ip(const gchar *addr, guint8 *ad)
{
- int i = 0;
- const gchar *p = addr;
- guint32 value;
-
- if (addr==NULL) return FALSE;
-
- for (i=0; i<4; i++)
- {
- value = 0;
- while (*p != '.' && *p != '\0')
- {
- value = value * 10 + (*p - '0');
- p++;
- }
- if(value > 255)
- {
- return FALSE;
- }
- ad[i] = value;
- p++;
- }
-
- return TRUE;
+ int i;
+ const gchar *p = addr;
+ guint32 value;
+
+ if (addr == NULL)
+ return FALSE;
+
+ for (i=0; i<4; i++)
+ {
+ value = 0;
+ while (*p != '.' && *p != '\0')
+ {
+ value = value * 10 + (*p - '0');
+ p++;
+ }
+ if (value > 255)
+ {
+ return FALSE;
+ }
+ ad[i] = value;
+ p++;
+ }
+
+ return TRUE;
}
-/* Register the protocol with Ethereal */
+/* Register the protocol with Wireshark */
void proto_reg_handoff_uaudp(void);
void proto_register_uaudp(void)
{
- module_t *uaudp_module;
- int i;
-
- /* Setup list of header fields. See Section 1.6.1 for details */
- static hf_register_info hf_uaudp[] =
- {
- {
- &hf_uaudp_opcode,
- {
- "Opcode",
- "uaudp.opcode",
- FT_UINT8,
- BASE_DEC,
- VALS(uaudp_opcode_str),
- 0x0,
- "UA/UDP Opcode",
- HFILL
- }
- },
- {
- &hf_uaudp_version,
- {
- "Version",
- "uaudp.version",
- FT_UINT8,
- BASE_DEC,
- NULL, 0x0,
- "UA/UDP Version",
- HFILL
- }
- },
- {
- &hf_uaudp_window_size,
- {
- "Window Size",
- "uaudp.window_size",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- "UA/UDP Window Size",
- HFILL
- }
- },
- {
- &hf_uaudp_mtu,
- {
- "MTU",
- "uaudp.mtu",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- "UA/UDP MTU",
- HFILL
- }
- },
- {
- &hf_uaudp_udp_lost,
- {
- "UDP Lost",
- "uaudp.udp_lost",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- "UA/UDP Lost",
- HFILL
- }
- },
- {
- &hf_uaudp_udp_lost_reinit,
- {
- "UDP lost reinit",
- "uaudp.udp_lost_reinit",
- FT_UINT8,
- BASE_DEC,
- NULL, 0x0,
- "UA/UDP Lost Re-Init",
- HFILL
- }
- },
- {
- &hf_uaudp_keepalive,
- {
- "Keepalive",
- "uaudp.keepalive",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- "UA/UDP Keepalive",
- HFILL
- }
- },
- {
- &hf_uaudp_qos_ip_tos,
- {
- "QoS IP TOS",
- "uaudp.qos_ip_tos",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- "UA/UDP QoS IP TOS",
- HFILL
- }
- },
- {
- &hf_uaudp_qos_8021_vlid,
- {
- "QoS 802.1 VLID",
- "uaudp.qos_8021_vlid",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- "UA/UDP QoS 802.1 VLID",
- HFILL
- }
- },
- {
- &hf_uaudp_qos_8021_pri,
- {
- "QoS 802.1 PRI",
- "uaudp.qos_8021_pri",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- "UA/UDP QoS 802.1 PRI",
- HFILL
- }
- },
- {
- &hf_uaudp_expseq,
- {
- "Sequence Number (expected)",
- "uaudp.expseq",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- "UA/UDP Expected Sequence Number",
- HFILL
- }
- },
- {
- &hf_uaudp_sntseq,
- {
- "Sequence Number (sent)",
- "uaudp.sntseq",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- "UA/UDP Sent Sequence Number",
- HFILL
- }
- },
- };
-
- /* Setup protocol subtree array */
- static gint *ett[] =
- {
- &ett_uaudp,
- };
-
- /* Register the protocol name and description */
- proto_uaudp = proto_register_protocol("UA/UDP Encapsulation Protocol",
- "UAUDP",
- "uaudp");
-
- register_dissector("uaudp", dissect_uaudp, proto_uaudp);
- register_dissector("uaudp_dir_unknown", dissect_uaudp_dir_unknown, proto_uaudp);
- register_dissector("uaudp_term_to_serv", dissect_uaudp_term_to_serv, proto_uaudp);
- register_dissector("uaudp_serv_to_term", dissect_uaudp_serv_to_term, proto_uaudp);
-
- /* Required function calls to register the header fields and subtrees used */
- proto_register_field_array(proto_uaudp, hf_uaudp, array_length(hf_uaudp));
- proto_register_subtree_array(ett, array_length(ett));
-
- /* Register preferences */
- uaudp_module = prefs_register_protocol(proto_uaudp, proto_reg_handoff_uaudp);
+ module_t *uaudp_module;
+ int i;
+
+ /* Setup list of header fields. See Section 1.6.1 for details */
+ static hf_register_info hf_uaudp[] = {
+ {
+ &hf_uaudp_opcode,
+ {
+ "Opcode",
+ "uaudp.opcode",
+ FT_UINT8,
+ BASE_DEC | BASE_EXT_STRING,
+ &uaudp_opcode_str_ext,
+ 0x0,
+ "UA/UDP Opcode",
+ HFILL
+ }
+ },
+ {
+ &hf_uaudp_version,
+ {
+ "Version",
+ "uaudp.version",
+ FT_UINT8,
+ BASE_DEC,
+ NULL, 0x0,
+ "UA/UDP Version",
+ HFILL
+ }
+ },
+ {
+ &hf_uaudp_window_size,
+ {
+ "Window Size",
+ "uaudp.window_size",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "UA/UDP Window Size",
+ HFILL
+ }
+ },
+ {
+ &hf_uaudp_mtu,
+ {
+ "MTU",
+ "uaudp.mtu",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "UA/UDP MTU",
+ HFILL
+ }
+ },
+ {
+ &hf_uaudp_udp_lost,
+ {
+ "UDP Lost",
+ "uaudp.udp_lost",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "UA/UDP Lost",
+ HFILL
+ }
+ },
+ {
+ &hf_uaudp_udp_lost_reinit,
+ {
+ "UDP lost reinit",
+ "uaudp.udp_lost_reinit",
+ FT_UINT8,
+ BASE_DEC,
+ NULL, 0x0,
+ "UA/UDP Lost Re-Init",
+ HFILL
+ }
+ },
+ {
+ &hf_uaudp_keepalive,
+ {
+ "Keepalive",
+ "uaudp.keepalive",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "UA/UDP Keepalive",
+ HFILL
+ }
+ },
+ {
+ &hf_uaudp_qos_ip_tos,
+ {
+ "QoS IP TOS",
+ "uaudp.qos_ip_tos",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "UA/UDP QoS IP TOS",
+ HFILL
+ }
+ },
+ {
+ &hf_uaudp_qos_8021_vlid,
+ {
+ "QoS 802.1 VLID",
+ "uaudp.qos_8021_vlid",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "UA/UDP QoS 802.1 VLID",
+ HFILL
+ }
+ },
+ {
+ &hf_uaudp_qos_8021_pri,
+ {
+ "QoS 802.1 PRI",
+ "uaudp.qos_8021_pri",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "UA/UDP QoS 802.1 PRI",
+ HFILL
+ }
+ },
+ {
+ &hf_uaudp_expseq,
+ {
+ "Sequence Number (expected)",
+ "uaudp.expseq",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "UA/UDP Expected Sequence Number",
+ HFILL
+ }
+ },
+ {
+ &hf_uaudp_sntseq,
+ {
+ "Sequence Number (sent)",
+ "uaudp.sntseq",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "UA/UDP Sent Sequence Number",
+ HFILL
+ }
+ },
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] =
+ {
+ &ett_uaudp,
+ };
+
+ /* Register the protocol name and description */
+ proto_uaudp = proto_register_protocol("UA/UDP Encapsulation Protocol",
+ "UAUDP",
+ "uaudp");
+
+ register_dissector("uaudp", dissect_uaudp, proto_uaudp);
+#if 0 /* XXX: Not used ?? */
+ register_dissector("uaudp_dir_unknown", dissect_uaudp_dir_unknown, proto_uaudp);
+ register_dissector("uaudp_term_to_serv", dissect_uaudp_term_to_serv, proto_uaudp);
+ register_dissector("uaudp_serv_to_term", dissect_uaudp_serv_to_term, proto_uaudp);
+#endif
-/*
- prefs_register_bool_preference(uaudp_module, "enable",
- "Enable UA/UDP decoding based on preferences",
- "Enable UA/UDP decoding based on preferences",
- &decode_ua);
-*/
- for (i=0; i<MAX_TERMINAL_PORTS; i++) {
- prefs_register_uint_preference(uaudp_module,
- ports[i].name,
- ports[i].text,
- ports[i].text,
- 10,
- &ports[i].port);
- }
- prefs_register_string_preference(uaudp_module, "system_ip",
- "System IP Address (optional)",
- "IPv4 address of the DHS3 system. (Used only in case of identical source and destination ports)",
- &pref_sys_ip_s);
-
- /* Register tap listener */
-/* uaudp_tap = register_tap("uaudp");*/
+ proto_register_field_array(proto_uaudp, hf_uaudp, array_length(hf_uaudp));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ /* Register preferences */
+ uaudp_module = prefs_register_protocol(proto_uaudp, proto_reg_handoff_uaudp);
+
+#if 0
+ prefs_register_bool_preference(uaudp_module, "enable",
+ "Enable UA/UDP decoding based on preferences",
+ "Enable UA/UDP decoding based on preferences",
+ &decode_ua);
+#endif
+ for (i=0; i<MAX_TERMINAL_PORTS; i++) {
+ prefs_register_uint_preference(uaudp_module,
+ ports[i].name,
+ ports[i].text,
+ ports[i].text,
+ 10,
+ &ports[i].port);
+ }
+ prefs_register_string_preference(uaudp_module, "system_ip",
+ "System IP Address (optional)",
+ "IPv4 address of the DHS3 system."
+ " (Used only in case of identical source and destination ports)",
+ &pref_sys_ip_s);
+
+#if 0
+ /* Register tap */
+ uaudp_tap = register_tap("uaudp");*/
+#endif
}
-/* If this dissector uses sub-dissector registration add a registration routine.
- This format is required because a script is used to find these routines and
- create the code that calls these routines.
-*/
-void
-proto_reg_handoff_uaudp(void)
+void proto_reg_handoff_uaudp(void)
{
- static gboolean prefs_initialized = FALSE;
- static dissector_handle_t uaudp_handle;
- int i;
-
- if(!prefs_initialized)
- {
- uaudp_handle = create_dissector_handle(dissect_uaudp, proto_uaudp);
- ua_sys_to_term_handle = find_dissector("ua_sys_to_term");
- ua_term_to_sys_handle = find_dissector("ua_term_to_sys");
- prefs_initialized = TRUE;
- }
- else
- {
- for(i=0; i<MAX_TERMINAL_PORTS; i++)
- {
- dissector_delete_uint("udp.port", ports[i].last_port, uaudp_handle);
- }
- if(str_to_addr_ip(pref_sys_ip_s, sys_ip))
- {
- use_sys_ip = TRUE;
- }
- else
- {
- use_sys_ip = FALSE;
- pref_sys_ip_s = g_strdup("");
- }
- }
-
- if(decode_ua)
- {
- for(i=0; i < MAX_TERMINAL_PORTS; i++)
- {
- dissector_add_uint("udp.port", ports[i].port, uaudp_handle);
- ports[i].last_port = ports[i].port;
- }
- }
+ static gboolean prefs_initialized = FALSE;
+ static dissector_handle_t uaudp_handle;
+ int i;
+
+ if (!prefs_initialized)
+ {
+ uaudp_handle = find_dissector("uaudp");
+ ua_sys_to_term_handle = find_dissector("ua_sys_to_term");
+ ua_term_to_sys_handle = find_dissector("ua_term_to_sys");
+#if 0
+ uaudp_opcode_dissector_table =
+ register_dissector_table("uaudp.opcode",
+ "UAUDP opcode",
+ FT_UINT8,
+ BASE_DEC);
+#endif
+ prefs_initialized = TRUE;
+ }
+ else
+ {
+ for (i=0; i<MAX_TERMINAL_PORTS; i++)
+ {
+ dissector_delete_uint("udp.port", ports[i].last_port, uaudp_handle);
+ }
+ if (str_to_addr_ip(pref_sys_ip_s, sys_ip))
+ {
+ use_sys_ip = TRUE;
+ }
+ else
+ {
+ use_sys_ip = FALSE;
+ pref_sys_ip_s = g_strdup("");
+ }
+ }
+
+ if (decode_ua)
+ {
+ for (i=0; i < MAX_TERMINAL_PORTS; i++)
+ {
+ dissector_add_uint("udp.port", ports[i].port, uaudp_handle);
+ ports[i].last_port = ports[i].port;
+ }
+ }
}
diff --git a/epan/dissectors/packet-uaudp.h b/epan/dissectors/packet-uaudp.h
index fb05171dab..3dd9a481f7 100644
--- a/epan/dissectors/packet-uaudp.h
+++ b/epan/dissectors/packet-uaudp.h
@@ -26,8 +26,6 @@
#ifndef _PACKET_UAUDP_H_
#define _PACKET_UAUDP_H_
-#include <gmodule.h>
-
#define UAUDP_CONNECT 0
#define UAUDP_CONNECT_ACK 1
#define UAUDP_RELEASE 2
@@ -37,6 +35,21 @@
#define UAUDP_NACK 6
#define UAUDP_DATA 7
+#define UAUDP_CONNECT_VERSION 0x00
+#define UAUDP_CONNECT_WINDOW_SIZE 0x01
+#define UAUDP_CONNECT_MTU 0x02
+#define UAUDP_CONNECT_UDP_LOST 0x03
+#define UAUDP_CONNECT_UDP_LOST_REINIT 0x04
+#define UAUDP_CONNECT_KEEPALIVE 0x05
+#define UAUDP_CONNECT_QOS_IP_TOS 0x06
+#define UAUDP_CONNECT_QOS_8021_VLID 0x07
+#define UAUDP_CONNECT_QOS_8021_PRI 0x08
+
+extern value_string_ext uaudp_opcode_str_ext;
+#if 0
+extern value_string_ext uaudp_connect_vals_ext;
+#endif
+
typedef enum _e_ua_direction {
SYS_TO_TERM, /* system -> terminal */
TERM_TO_SYS, /* terminal -> system */
diff --git a/epan/dissectors/packet-ucp.c b/epan/dissectors/packet-ucp.c
index 8f7601638c..bac62dee18 100644
--- a/epan/dissectors/packet-ucp.c
+++ b/epan/dissectors/packet-ucp.c
@@ -37,10 +37,7 @@
# include "config.h"
#endif
-#include <stdio.h>
#include <stdlib.h>
-#include <ctype.h>
-#include <time.h>
#include <glib.h>
@@ -804,17 +801,19 @@ ucp_handle_string(proto_tree *tree, tvbuff_t *tvb, int field, int *offset)
*offset += 1; /* skip terminating '/' */
}
+#define UCP_BUFSIZ 512
+
static void
ucp_handle_IRAstring(proto_tree *tree, tvbuff_t *tvb, int field, int *offset)
{
- char strval[BUFSIZ + 1],
+ char strval[UCP_BUFSIZ + 1],
*p_dst = strval;
guint8 byte;
int idx = 0;
int tmpoff = *offset;
while (((byte = tvb_get_guint8(tvb, tmpoff++)) != '/') &&
- (idx < BUFSIZ))
+ (idx < UCP_BUFSIZ))
{
if (byte >= '0' && byte <= '9')
{
@@ -839,7 +838,7 @@ ucp_handle_IRAstring(proto_tree *tree, tvbuff_t *tvb, int field, int *offset)
idx++;
}
strval[idx] = '\0';
- if (idx == BUFSIZ)
+ if (idx == UCP_BUFSIZ)
{
/*
* Data clipped, eat rest of field
@@ -926,7 +925,20 @@ ucp_handle_data(proto_tree *tree, tvbuff_t *tvb, int field, int *offset)
;
if ((tmpoff - *offset) > 1)
proto_tree_add_item(tree, field, tvb, *offset,
- tmpoff - *offset - 1, FALSE);
+ tmpoff - *offset - 1, ENC_NA);
+ *offset = tmpoff;
+}
+
+static void
+ucp_handle_data_string(proto_tree *tree, tvbuff_t *tvb, int field, int *offset)
+{
+ int tmpoff = *offset;
+
+ while (tvb_get_guint8(tvb, tmpoff++) != '/')
+ ;
+ if ((tmpoff - *offset) > 1)
+ proto_tree_add_item(tree, field, tvb, *offset,
+ tmpoff - *offset - 1, ENC_ASCII|ENC_NA);
*offset = tmpoff;
}
@@ -1025,6 +1037,9 @@ ucp_handle_XSer(proto_tree *tree, tvbuff_t *tvb)
#define UcpHandleData(field) ucp_handle_data(tree, tvb, (field), &offset)
+#define UcpHandleDataString(field)\
+ ucp_handle_data_string(tree, tvb, (field), &offset)
+
/*!
* The next set of routines handle the different operation types,
* associated with UCP.
@@ -1648,7 +1663,7 @@ add_5xO(proto_tree *tree, tvbuff_t *tvb)
;
if ((tmpoff - offset) > 1) {
int len = tmpoff - offset - 1;
- proto_tree *subtree;
+ proto_tree *subtree;
ti = proto_tree_add_item(tree, hf_ucp_parm_XSer, tvb, offset, len, ENC_NA);
tmptvb = tvb_new_subset(tvb, offset, len + 1, len + 1);
@@ -1656,8 +1671,8 @@ add_5xO(proto_tree *tree, tvbuff_t *tvb)
ucp_handle_XSer(subtree, tmptvb);
}
offset = tmpoff;
- UcpHandleData(hf_ucp_parm_RES4);
- UcpHandleData(hf_ucp_parm_RES5);
+ UcpHandleDataString(hf_ucp_parm_RES4);
+ UcpHandleDataString(hf_ucp_parm_RES5);
}
#define add_5xR(a, b,c ) add_30R(a, b, c)
@@ -1684,9 +1699,9 @@ add_6xO(proto_tree *tree, tvbuff_t *tvb, guint8 OT)
if (OT == 60) {
UcpHandleInt(hf_ucp_parm_OPID);
}
- UcpHandleData(hf_ucp_parm_RES1);
+ UcpHandleDataString(hf_ucp_parm_RES1);
if (OT == 61) {
- UcpHandleData(hf_ucp_parm_RES2);
+ UcpHandleDataString(hf_ucp_parm_RES2);
}
}
@@ -2761,7 +2776,7 @@ proto_reg_handoff_ucp(void)
heur_dissector_add("tcp", dissect_ucp_heur, proto_ucp);
/*
- * Also register as a dissectoir that can be selected by a TCP port number via "decode as".
+ * Also register as a dissector that can be selected by a TCP port number via "decode as".
*/
ucp_handle = create_dissector_handle(dissect_ucp_tcp, proto_ucp);
dissector_add_handle("tcp.port", ucp_handle);
diff --git a/epan/dissectors/packet-udld.c b/epan/dissectors/packet-udld.c
index bb08f43c3d..ad92f14bde 100644
--- a/epan/dissectors/packet-udld.c
+++ b/epan/dissectors/packet-udld.c
@@ -26,9 +26,8 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/strutil.h>
diff --git a/epan/dissectors/packet-udp.c b/epan/dissectors/packet-udp.c
index 72bae85e2f..7eacdc2f1b 100644
--- a/epan/dissectors/packet-udp.c
+++ b/epan/dissectors/packet-udp.c
@@ -29,10 +29,10 @@
# include "config.h"
#endif
-#include <stdlib.h>
#include <string.h>
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/emem.h>
#include <epan/addr_resolv.h>
@@ -418,7 +418,7 @@ dissect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 ip_proto)
len = tvb_length(tvb);
if (udph->uh_sum == 0) {
/* No checksum supplied in the packet. */
- if (ip_proto == IP_PROTO_UDP) {
+ if ((ip_proto == IP_PROTO_UDP) && (pinfo->src.type == AT_IPv4)) {
item = proto_tree_add_uint_format(udp_tree, hf_udp_checksum, tvb, offset + 6, 2, 0,
"Checksum: 0x%04x (none)", 0);
@@ -462,12 +462,18 @@ dissect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 ip_proto)
switch (pinfo->src.type) {
case AT_IPv4:
- phdr[0] = g_htonl((ip_proto<<16) | udph->uh_ulen);
+ if (ip_proto == IP_PROTO_UDP)
+ phdr[0] = g_htonl((ip_proto<<16) | udph->uh_ulen);
+ else
+ phdr[0] = g_htonl((ip_proto<<16) | reported_len);
cksum_vec[2].len = 4;
break;
case AT_IPv6:
- phdr[0] = g_htonl(udph->uh_ulen);
+ if (ip_proto == IP_PROTO_UDP)
+ phdr[0] = g_htonl(udph->uh_ulen);
+ else
+ phdr[0] = g_htonl(reported_len);
phdr[1] = g_htonl(ip_proto);
cksum_vec[2].len = 8;
break;
diff --git a/epan/dissectors/packet-ulp.c b/epan/dissectors/packet-ulp.c
index f767306f40..2779ab6ad6 100644
--- a/epan/dissectors/packet-ulp.c
+++ b/epan/dissectors/packet-ulp.c
@@ -6250,7 +6250,7 @@ static const per_sequence_t ULP_PDU_sequence[] = {
static int
dissect_ulp_ULP_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 29 "../../asn1/ulp/ulp.cnf"
- proto_tree_add_item(tree, proto_ulp, tvb, 0, -1, FALSE);
+ proto_tree_add_item(tree, proto_ulp, tvb, 0, -1, ENC_NA);
col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, PSNAME);
col_clear(actx->pinfo->cinfo, COL_INFO);
diff --git a/epan/dissectors/packet-uma.c b/epan/dissectors/packet-uma.c
index 8f7c23368a..396a8d3578 100644
--- a/epan/dissectors/packet-uma.c
+++ b/epan/dissectors/packet-uma.c
@@ -57,15 +57,12 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
-#include <epan/conversation.h>
#include <epan/packet.h>
-#include <epan/asn1.h>
-
+#include <epan/conversation.h>
#include <epan/prefs.h>
+#include <epan/asn1.h>
#include "packet-bssap.h"
#include "packet-gsm_a_common.h"
#include "packet-gsm_map.h"
diff --git a/epan/dissectors/packet-umts_fp.c b/epan/dissectors/packet-umts_fp.c
index 230ed444e0..c6789f51c7 100644
--- a/epan/dissectors/packet-umts_fp.c
+++ b/epan/dissectors/packet-umts_fp.c
@@ -30,7 +30,10 @@
#include <epan/packet.h>
#include <epan/expert.h>
#include <epan/prefs.h>
+#include <epan/conversation.h>
+#include "packet-umts_mac.h"
+#include "packet-rlc.h"
#include "packet-umts_fp.h"
/* The Frame Protocol (FP) is described in:
@@ -45,6 +48,8 @@
/* Initialize the protocol and registered fields. */
int proto_fp = -1;
+extern int proto_umts_mac;
+extern int proto_rlc;
static int hf_fp_release = -1;
static int hf_fp_release_version = -1;
@@ -181,6 +186,7 @@ static int hf_fp_e_rucch_present = -1;
static int hf_fp_extended_bits_present = -1;
static int hf_fp_extended_bits = -1;
static int hf_fp_spare_extension = -1;
+static int hf_fp_ul_setup_frame = -1;
/* Subtrees. */
static int ett_fp = -1;
@@ -233,27 +239,27 @@ struct edch_t2_subframe_info
static const value_string channel_type_vals[] =
{
- { CHANNEL_RACH_FDD, "RACH_FDD" },
- { CHANNEL_RACH_TDD, "RACH_TDD" },
- { CHANNEL_FACH_FDD, "FACH_FDD" },
- { CHANNEL_FACH_TDD, "FACH_TDD" },
- { CHANNEL_DSCH_FDD, "DSCH_FDD" },
- { CHANNEL_DSCH_TDD, "DSCH_TDD" },
- { CHANNEL_USCH_TDD_384, "USCH_TDD_384" },
- { CHANNEL_USCH_TDD_128, "USCH_TDD_128" },
- { CHANNEL_PCH, "PCH" },
- { CHANNEL_CPCH, "CPCH" },
- { CHANNEL_BCH, "BCH" },
- { CHANNEL_DCH, "DCH" },
- { CHANNEL_HSDSCH, "HSDSCH" },
- { CHANNEL_IUR_CPCHF, "IUR CPCHF" },
- { CHANNEL_IUR_FACH, "IUR FACH" },
- { CHANNEL_IUR_DSCH, "IUR DSCH" },
- { CHANNEL_EDCH, "EDCH" },
- { CHANNEL_RACH_TDD_128, "RACH_TDD_128" },
- { CHANNEL_HSDSCH_COMMON,"HSDSCH-COMMON" },
- { CHANNEL_HSDSCH_COMMON_T3,"HSDSCH-COMMON-T3" },
- { CHANNEL_EDCH_COMMON, "EDCH-COMMON"},
+ { CHANNEL_RACH_FDD, "RACH_FDD" },
+ { CHANNEL_RACH_TDD, "RACH_TDD" },
+ { CHANNEL_FACH_FDD, "FACH_FDD" },
+ { CHANNEL_FACH_TDD, "FACH_TDD" },
+ { CHANNEL_DSCH_FDD, "DSCH_FDD" },
+ { CHANNEL_DSCH_TDD, "DSCH_TDD" },
+ { CHANNEL_USCH_TDD_384, "USCH_TDD_384" },
+ { CHANNEL_USCH_TDD_128, "USCH_TDD_128" },
+ { CHANNEL_PCH, "PCH" },
+ { CHANNEL_CPCH, "CPCH" },
+ { CHANNEL_BCH, "BCH" },
+ { CHANNEL_DCH, "DCH" },
+ { CHANNEL_HSDSCH, "HSDSCH" },
+ { CHANNEL_IUR_CPCHF, "IUR CPCHF" },
+ { CHANNEL_IUR_FACH, "IUR FACH" },
+ { CHANNEL_IUR_DSCH, "IUR DSCH" },
+ { CHANNEL_EDCH, "EDCH" },
+ { CHANNEL_RACH_TDD_128, "RACH_TDD_128" },
+ { CHANNEL_HSDSCH_COMMON, "HSDSCH-COMMON" },
+ { CHANNEL_HSDSCH_COMMON_T3, "HSDSCH-COMMON-T3" },
+ { CHANNEL_EDCH_COMMON, "EDCH-COMMON"},
{ 0, NULL }
};
@@ -270,44 +276,44 @@ static const value_string division_vals[] =
static const value_string data_control_vals[] = {
{ 0, "Data" },
{ 1, "Control" },
- { 0, NULL },
+ { 0, NULL }
};
static const value_string direction_vals[] = {
{ 0, "Downlink" },
{ 1, "Uplink" },
- { 0, NULL },
+ { 0, NULL }
};
static const value_string crci_vals[] = {
{ 0, "Correct" },
{ 1, "Not correct" },
- { 0, NULL },
+ { 0, NULL }
};
static const value_string paging_indication_vals[] = {
{ 0, "no PI-bitmap in payload" },
{ 1, "PI-bitmap in payload" },
- { 0, NULL },
+ { 0, NULL }
};
static const value_string spreading_factor_vals[] = {
- {0, "4"},
- {1, "8"},
- {2, "16"},
- {3, "32"},
- {4, "64"},
- {5, "128"},
- {6, "256"},
- {0, NULL }
+ { 0, "4"},
+ { 1, "8"},
+ { 2, "16"},
+ { 3, "32"},
+ { 4, "64"},
+ { 5, "128"},
+ { 6, "256"},
+ { 0, NULL }
};
static const value_string congestion_status_vals[] = {
- {0, "No TNL congestion"},
- {1, "Reserved for future use"},
- {2, "TNL congestion - detected by delay build-up"},
- {3, "TNL congestion - detected by frame loss"},
- {0, NULL }
+ { 0, "No TNL congestion"},
+ { 1, "Reserved for future use"},
+ { 2, "TNL congestion - detected by delay build-up"},
+ { 3, "TNL congestion - detected by frame loss"},
+ { 0, NULL }
};
static const value_string e_rucch_flag_vals[] = {
@@ -324,6 +330,7 @@ static const value_string hsdshc_mac_entity_vals[] = {
};
/* TODO: add and use */
+#if 0
static const value_string segmentation_status_vals[] = {
{ 0, "" },
{ 1, "" },
@@ -331,18 +338,19 @@ static const value_string segmentation_status_vals[] = {
{ 3, "" },
{ 0, NULL }
};
+#endif
static const value_string lchid_vals[] = {
- { 0, "Logical Channel 1" },
- { 1, "Logical Channel 2" },
- { 2, "Logical Channel 3" },
- { 3, "Logical Channel 4" },
- { 4, "Logical Channel 5" },
- { 5, "Logical Channel 6" },
- { 6, "Logical Channel 7" },
- { 7, "Logical Channel 8" },
- { 8, "Logical Channel 9" },
- { 9, "Logical Channel 10" },
+ { 0, "Logical Channel 1" },
+ { 1, "Logical Channel 2" },
+ { 2, "Logical Channel 3" },
+ { 3, "Logical Channel 4" },
+ { 4, "Logical Channel 5" },
+ { 5, "Logical Channel 6" },
+ { 6, "Logical Channel 7" },
+ { 7, "Logical Channel 8" },
+ { 8, "Logical Channel 9" },
+ { 9, "Logical Channel 10" },
{ 10, "Logical Channel 11" },
{ 11, "Logical Channel 12" },
{ 12, "Logical Channel 13" },
@@ -362,8 +370,8 @@ static const value_string lchid_vals[] = {
#define DCH_UL_NODE_SYNCHRONISATION 7
#define DCH_RX_TIMING_DEVIATION 8
#define DCH_RADIO_INTERFACE_PARAMETER_UPDATE 9
-#define DCH_TIMING_ADVANCE 10
-#define DCH_TNL_CONGESTION_INDICATION 11
+#define DCH_TIMING_ADVANCE 10
+#define DCH_TNL_CONGESTION_INDICATION 11
static const value_string dch_control_frame_type_vals[] = {
{ DCH_OUTER_LOOP_POWER_CONTROL, "OUTER LOOP POWER CONTROL" },
@@ -377,7 +385,7 @@ static const value_string dch_control_frame_type_vals[] = {
{ DCH_RADIO_INTERFACE_PARAMETER_UPDATE, "RADIO INTERFACE PARAMETER UPDATE" },
{ DCH_TIMING_ADVANCE, "TIMING ADVANCE" },
{ DCH_TNL_CONGESTION_INDICATION, "TNL CONGESTION INDICATION" },
- { 0, NULL },
+ { 0, NULL }
};
@@ -391,9 +399,9 @@ static const value_string dch_control_frame_type_vals[] = {
#define COMMON_UL_NODE_SYNCHRONISATION 7
#define COMMON_DYNAMIC_PUSCH_ASSIGNMENT 8
#define COMMON_TIMING_ADVANCE 9
-#define COMMON_HS_DSCH_Capacity_Request 10
-#define COMMON_HS_DSCH_Capacity_Allocation 11
-#define COMMON_HS_DSCH_Capacity_Allocation_Type_2 12
+#define COMMON_HS_DSCH_Capacity_Request 10
+#define COMMON_HS_DSCH_Capacity_Allocation 11
+#define COMMON_HS_DSCH_Capacity_Allocation_Type_2 12
static const value_string common_control_frame_type_vals[] = {
{ COMMON_OUTER_LOOP_POWER_CONTROL, "OUTER LOOP POWER CONTROL" },
@@ -408,7 +416,7 @@ static const value_string common_control_frame_type_vals[] = {
{ COMMON_HS_DSCH_Capacity_Request, "HS-DSCH Capacity Request" },
{ COMMON_HS_DSCH_Capacity_Allocation, "HS-DSCH Capacity Allocation" },
{ COMMON_HS_DSCH_Capacity_Allocation_Type_2, "HS-DSCH Capacity Allocation Type 2" },
- { 0, NULL },
+ { 0, NULL }
};
/* Dissect message parts */
@@ -512,7 +520,7 @@ static void dissect_dch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tr
/* Dissect dedicated channels */
static void dissect_e_dch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
int offset, struct fp_info *p_fp_info,
- gboolean is_common);
+ gboolean is_common, rlc_info *rlcinf);
static void dissect_e_dch_t2_or_common_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
int offset, struct fp_info *p_fp_info,
@@ -522,12 +530,22 @@ static void dissect_e_dch_t2_or_common_channel_info(tvbuff_t *tvb, packet_info *
/* Main dissection function */
static void dissect_fp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
-/* Protocol registration */
-void proto_register_fp(void);
-void proto_reg_handoff_fp(void);
+/*
+ * CRNC sends data downlink on uplink parameters.
+ */
+void
+set_umts_fp_conv_data(conversation_t *conversation, umts_fp_conversation_info_t *umts_fp_conversation_info)
+{
+ if (conversation == NULL)
+ return;
+
+ conversation_add_proto_data(conversation, proto_fp, umts_fp_conversation_info);
+}
-static int get_tb_count(struct fp_info *p_fp_info)
+
+static int
+get_tb_count(struct fp_info *p_fp_info)
{
int chan, tb_count = 0;
for (chan = 0; chan < p_fp_info->num_chans; chan++) {
@@ -537,33 +555,45 @@ static int get_tb_count(struct fp_info *p_fp_info)
}
/* Dissect the TBs of a data frame */
-static int dissect_tb_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- int offset, struct fp_info *p_fp_info,
- dissector_handle_t *data_handle)
+static int
+dissect_tb_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ int offset, struct fp_info *p_fp_info,
+ dissector_handle_t *data_handle)
{
- int chan, num_tbs = 0;
- int bit_offset = 0;
- guint data_bits = 0;
- proto_item *tree_ti = NULL;
- proto_tree *data_tree = NULL;
- gboolean dissected = FALSE;
-
- if (tree)
- {
+ int chan, num_tbs = 0;
+ int bit_offset = 0;
+ int crci_bit_offset = (offset+1)<<3; /* Current offset + Quality estimate of 1 byte at the end*/
+ guint data_bits = 0;
+ guint8 crci_bit = 0;
+ proto_item *tree_ti = NULL;
+ proto_tree *data_tree = NULL;
+ gboolean dissected = FALSE;
+
+ if (tree) {
/* Add data subtree */
tree_ti = proto_tree_add_item(tree, hf_fp_data, tvb, offset, -1, ENC_NA);
proto_item_set_text(tree_ti, "TB data for %u chans", p_fp_info->num_chans);
data_tree = proto_item_add_subtree(tree_ti, ett_fp_data);
}
+ /* Calculate offset to CRCI bits */
+ for (chan=0; chan < p_fp_info->num_chans; chan++) {
+ int n;
+ for (n=0; n < p_fp_info->chan_num_tbs[chan]; n++) {
+ /* Advance bit offset */
+ crci_bit_offset += p_fp_info->chan_tf_size[chan];
+ /* Pad out to next byte */
+ if (crci_bit_offset % 8) {
+ crci_bit_offset += (8 - (crci_bit_offset % 8));
+ }
+ }
+ }
/* Now for the TB data */
- for (chan=0; chan < p_fp_info->num_chans; chan++)
- {
+ for (chan=0; chan < p_fp_info->num_chans; chan++) {
int n;
/* Clearly show channels with no TBs */
- if (p_fp_info->chan_num_tbs[chan] == 0)
- {
+ if (p_fp_info->chan_num_tbs[chan] == 0) {
proto_item *no_tb_ti = proto_tree_add_uint(data_tree, hf_fp_chan_zero_tbs, tvb,
offset+(bit_offset/8),
0, chan+1);
@@ -574,11 +604,9 @@ static int dissect_tb_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
/* Show TBs from non-empty channels */
pinfo->fd->subnum = chan; /* set subframe number to current TB */
- for (n=0; n < p_fp_info->chan_num_tbs[chan]; n++)
- {
+ for (n=0; n < p_fp_info->chan_num_tbs[chan]; n++) {
proto_item *ti;
- if (data_tree)
- {
+ if (data_tree) {
ti = proto_tree_add_item(data_tree, hf_fp_tb, tvb,
offset + (bit_offset/8),
((bit_offset % 8) + p_fp_info->chan_tf_size[chan] + 7) / 8,
@@ -586,24 +614,36 @@ static int dissect_tb_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
proto_item_set_text(ti, "TB (chan %u, tb %u, %u bits)",
chan+1, n+1, p_fp_info->chan_tf_size[chan]);
}
- if (preferences_call_mac_dissectors && data_handle &&
- p_fp_info->chan_tf_size[chan] > 0) {
+ if (preferences_call_mac_dissectors && data_handle &&
+ (p_fp_info->chan_tf_size[chan] > 0)) {
tvbuff_t *next_tvb;
- next_tvb = tvb_new_subset(tvb, offset + bit_offset/8,
- ((bit_offset % 8) + p_fp_info->chan_tf_size[chan] + 7) / 8, -1);
- /* TODO: maybe this decision can be based only on info available in fp_info */
- call_dissector(*data_handle, next_tvb, pinfo, top_level_tree);
- dissected = TRUE;
- }
+ proto_item *item;
+
+ item = proto_tree_add_item(data_tree, hf_fp_crci[n%8], tvb, (crci_bit_offset/8)+(n/8), 1, ENC_BIG_ENDIAN);
+ PROTO_ITEM_SET_GENERATED(item);
+ crci_bit = tvb_get_bits8(tvb,crci_bit_offset+(n/8),1);
+
+ if(crci_bit == 0) {
+ next_tvb = tvb_new_subset(tvb, offset + bit_offset/8,
+ ((bit_offset % 8) + p_fp_info->chan_tf_size[chan] + 7) / 8, -1);
+ /* TODO: maybe this decision can be based only on info available in fp_info */
+ call_dissector(*data_handle, next_tvb, pinfo, top_level_tree);
+ dissected = TRUE;
+ } else {
+ item = proto_tree_add_text(tree, tvb, offset + bit_offset/8,
+ ((bit_offset % 8) + p_fp_info->chan_tf_size[chan] + 7) / 8,
+ "Not sent to subdissector as CRCI is set");
+ PROTO_ITEM_SET_GENERATED(item);
+ }
+ }
num_tbs++;
/* Advance bit offset */
bit_offset += p_fp_info->chan_tf_size[chan];
- data_bits += p_fp_info->chan_tf_size[chan];
+ data_bits += p_fp_info->chan_tf_size[chan];
/* Pad out to next byte */
- if (bit_offset % 8)
- {
+ if (bit_offset % 8) {
bit_offset += (8 - (bit_offset % 8));
}
}
@@ -629,18 +669,18 @@ static int dissect_tb_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
/* Dissect the MAC-d PDUs of an HS-DSCH (type 1) frame.
Length is in bits, and payload is offset by 4 bits of padding */
-static int dissect_macd_pdu_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- int offset, guint16 length, guint16 number_of_pdus)
+static int
+dissect_macd_pdu_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ int offset, guint16 length, guint16 number_of_pdus)
{
- int pdu;
- int bit_offset = 0;
- proto_item *pdus_ti = NULL;
- proto_tree *data_tree = NULL;
- gboolean dissected = FALSE;
+ int pdu;
+ int bit_offset = 0;
+ proto_item *pdus_ti = NULL;
+ proto_tree *data_tree = NULL;
+ gboolean dissected = FALSE;
/* Add data subtree */
- if (tree)
- {
+ if (tree) {
pdus_ti = proto_tree_add_item(tree, hf_fp_data, tvb, offset, -1, ENC_NA);
proto_item_set_text(pdus_ti, "%u MAC-d PDUs of %u bits", number_of_pdus, length);
data_tree = proto_item_add_subtree(pdus_ti, ett_fp_data);
@@ -665,20 +705,19 @@ static int dissect_macd_pdu_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
ENC_NA);
proto_item_set_text(pdu_ti, "MAC-d PDU (PDU %u)", pdu+1);
}
- if (preferences_call_mac_dissectors) {
+ if (preferences_call_mac_dissectors) {
tvbuff_t *next_tvb;
- next_tvb = tvb_new_subset(tvb, offset + bit_offset/8,
- ((bit_offset % 8) + length + 7)/8, -1);
- call_dissector(mac_fdd_hsdsch_handle, next_tvb, pinfo, top_level_tree);
- dissected = TRUE;
- }
+ next_tvb = tvb_new_subset(tvb, offset + bit_offset/8,
+ ((bit_offset % 8) + length + 7)/8, -1);
+ call_dissector(mac_fdd_hsdsch_handle, next_tvb, pinfo, top_level_tree);
+ dissected = TRUE;
+ }
/* Advance bit offset */
bit_offset += length;
/* Pad out to next byte */
- if (bit_offset % 8)
- {
+ if (bit_offset % 8) {
bit_offset += (8 - (bit_offset % 8));
}
}
@@ -701,31 +740,29 @@ static int dissect_macd_pdu_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
/* Dissect the MAC-d PDUs of an HS-DSCH (type 2) frame.
Length is in bytes, and payload is byte-aligned (no padding) */
-static int dissect_macd_pdu_data_type_2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- int offset, guint16 length, guint16 number_of_pdus)
+static int
+dissect_macd_pdu_data_type_2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ int offset, guint16 length, guint16 number_of_pdus)
{
- int pdu;
- proto_item *pdus_ti = NULL;
- proto_tree *data_tree = NULL;
- int first_offset = offset;
- gboolean dissected = FALSE;
+ int pdu;
+ proto_item *pdus_ti = NULL;
+ proto_tree *data_tree = NULL;
+ int first_offset = offset;
+ gboolean dissected = FALSE;
/* Add data subtree */
- if (tree)
- {
+ if (tree) {
pdus_ti = proto_tree_add_item(tree, hf_fp_data, tvb, offset, -1, ENC_NA);
proto_item_set_text(pdus_ti, "%u MAC-d PDUs of %u bytes", number_of_pdus, length);
data_tree = proto_item_add_subtree(pdus_ti, ett_fp_data);
}
/* Now for the PDUs */
- for (pdu=0; pdu < number_of_pdus; pdu++)
- {
+ for (pdu=0; pdu < number_of_pdus; pdu++) {
proto_item *pdu_ti;
/* Data bytes! */
- if (data_tree)
- {
+ if (data_tree) {
pdu_ti = proto_tree_add_item(data_tree, hf_fp_mac_d_pdu, tvb,
offset, length, ENC_NA);
proto_item_set_text(pdu_ti, "MAC-d PDU (PDU %u)", pdu+1);
@@ -753,33 +790,31 @@ static int dissect_macd_pdu_data_type_2(tvbuff_t *tvb, packet_info *pinfo, proto
}
/* Dissect CRCI bits (uplink) */
-static int dissect_crci_bits(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- fp_info *p_fp_info, int offset)
+static int
+dissect_crci_bits(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ fp_info *p_fp_info, int offset)
{
- int n, num_tbs;
- proto_item *ti = NULL;
+ int n, num_tbs;
+ proto_item *ti = NULL;
proto_tree *crcis_tree = NULL;
- guint errors = 0;
+ guint errors = 0;
num_tbs = get_tb_count(p_fp_info);
/* Add CRCIs subtree */
- if (tree)
- {
+ if (tree) {
ti = proto_tree_add_item(tree, hf_fp_crcis, tvb, offset, (num_tbs+7)/8, ENC_NA);
proto_item_set_text(ti, "CRCI bits for %u tbs", num_tbs);
crcis_tree = proto_item_add_subtree(ti, ett_fp_crcis);
}
/* CRCIs */
- for (n=0; n < num_tbs; n++)
- {
+ for (n=0; n < num_tbs; n++) {
int bit = (tvb_get_guint8(tvb, offset+(n/8)) >> (7-(n%8))) & 0x01;
proto_tree_add_item(crcis_tree, hf_fp_crci[n%8], tvb, offset+(n/8),
1, ENC_BIG_ENDIAN);
- if (bit == 1)
- {
+ if (bit == 1) {
errors++;
expert_add_info_format(pinfo, ti,
PI_CHECKSUM, PI_WARN,
@@ -787,8 +822,7 @@ static int dissect_crci_bits(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
}
}
- if (tree)
- {
+ if (tree) {
/* Highlight range of bytes covered by indicator bits */
proto_item_set_len(ti, (num_tbs+7) / 8);
@@ -801,22 +835,21 @@ static int dissect_crci_bits(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
}
-static void dissect_spare_extension_and_crc(tvbuff_t *tvb, packet_info *pinfo,
- proto_tree *tree, guint8 dch_crc_present,
- int offset)
+static void
+dissect_spare_extension_and_crc(tvbuff_t *tvb, packet_info *pinfo,
+ proto_tree *tree, guint8 dch_crc_present,
+ int offset)
{
- int crc_size = 0;
- int remain = tvb_length_remaining(tvb, offset);
- proto_item *ti = NULL;
+ int crc_size = 0;
+ int remain = tvb_length_remaining(tvb, offset);
/* Payload CRC (optional) */
- if (dch_crc_present == 1 || (dch_crc_present == 2 && remain >= 2))
- {
+ if ((dch_crc_present == 1) || ((dch_crc_present == 2) && (remain >= 2))) {
crc_size = 2;
}
- if (remain > crc_size)
- {
+ if (remain > crc_size) {
+ proto_item *ti;
ti = proto_tree_add_item(tree, hf_fp_spare_extension, tvb,
offset, remain-crc_size, ENC_NA);
proto_item_append_text(ti, " (%u octets)", remain-crc_size);
@@ -826,8 +859,7 @@ static void dissect_spare_extension_and_crc(tvbuff_t *tvb, packet_info *pinfo,
offset += remain-crc_size;
}
- if (crc_size)
- {
+ if (crc_size) {
proto_tree_add_item(tree, hf_fp_payload_crc, tvb, offset, crc_size,
ENC_BIG_ENDIAN);
}
@@ -838,18 +870,19 @@ static void dissect_spare_extension_and_crc(tvbuff_t *tvb, packet_info *pinfo,
/***********************************************************/
/* Common control message types */
-int dissect_common_outer_loop_power_control(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb,
- int offset, struct fp_info *p_fp_info _U_)
+static int
+dissect_common_outer_loop_power_control(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb,
+ int offset, struct fp_info *p_fp_info _U_)
{
return dissect_dch_outer_loop_power_control(tree, pinfo, tvb, offset);
}
-int dissect_common_timing_adjustment(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb,
- int offset, struct fp_info *p_fp_info)
+static int
+dissect_common_timing_adjustment(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb,
+ int offset, struct fp_info *p_fp_info)
{
- if (p_fp_info->channel != CHANNEL_PCH)
- {
+ if (p_fp_info->channel != CHANNEL_PCH) {
guint8 cfn;
gint16 toa;
@@ -865,8 +898,7 @@ int dissect_common_timing_adjustment(packet_info *pinfo, proto_tree *tree, tvbuf
col_append_fstr(pinfo->cinfo, COL_INFO, " CFN=%u, ToA=%d", cfn, toa);
}
- else
- {
+ else {
guint16 cfn;
gint32 toa;
@@ -887,8 +919,9 @@ int dissect_common_timing_adjustment(packet_info *pinfo, proto_tree *tree, tvbuf
return offset;
}
-static int dissect_common_dl_node_synchronisation(packet_info *pinfo, proto_tree *tree,
- tvbuff_t *tvb, int offset)
+static int
+dissect_common_dl_node_synchronisation(packet_info *pinfo, proto_tree *tree,
+ tvbuff_t *tvb, int offset)
{
/* T1 (3 bytes) */
guint32 t1 = tvb_get_ntoh24(tvb, offset);
@@ -900,8 +933,9 @@ static int dissect_common_dl_node_synchronisation(packet_info *pinfo, proto_tree
return offset;
}
-static int dissect_common_ul_node_synchronisation(packet_info *pinfo, proto_tree *tree,
- tvbuff_t *tvb, int offset)
+static int
+dissect_common_ul_node_synchronisation(packet_info *pinfo, proto_tree *tree,
+ tvbuff_t *tvb, int offset)
{
guint32 t1, t2, t3;
@@ -926,20 +960,19 @@ static int dissect_common_ul_node_synchronisation(packet_info *pinfo, proto_tree
return offset;
}
-static int dissect_common_dl_synchronisation(packet_info *pinfo, proto_tree *tree,
- tvbuff_t *tvb, int offset, struct fp_info *p_fp_info)
+static int
+dissect_common_dl_synchronisation(packet_info *pinfo, proto_tree *tree,
+ tvbuff_t *tvb, int offset, struct fp_info *p_fp_info)
{
guint16 cfn;
- if (p_fp_info->channel != CHANNEL_PCH)
- {
+ if (p_fp_info->channel != CHANNEL_PCH) {
/* CFN control */
cfn = tvb_get_guint8(tvb, offset);
proto_tree_add_item(tree, hf_fp_cfn_control, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
}
- else
- {
+ else {
/* PCH CFN is 12 bits */
cfn = (tvb_get_ntohs(tvb, offset) >> 4);
proto_tree_add_item(tree, hf_fp_pch_cfn, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -953,15 +986,17 @@ static int dissect_common_dl_synchronisation(packet_info *pinfo, proto_tree *tre
return offset;
}
-static int dissect_common_ul_synchronisation(packet_info *pinfo, proto_tree *tree,
- tvbuff_t *tvb, int offset, struct fp_info *p_fp_info)
+static int
+dissect_common_ul_synchronisation(packet_info *pinfo, proto_tree *tree,
+ tvbuff_t *tvb, int offset, struct fp_info *p_fp_info)
{
return dissect_common_timing_adjustment(pinfo, tree, tvb, offset, p_fp_info);
}
-static int dissect_common_timing_advance(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset)
+static int
+dissect_common_timing_advance(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset)
{
- guint8 cfn;
+ guint8 cfn;
guint16 timing_advance;
/* CFN control */
@@ -980,10 +1015,11 @@ static int dissect_common_timing_advance(packet_info *pinfo, proto_tree *tree, t
return offset;
}
-static int dissect_hsdpa_capacity_request(packet_info *pinfo, proto_tree *tree,
- tvbuff_t *tvb, int offset)
+static int
+dissect_hsdpa_capacity_request(packet_info *pinfo, proto_tree *tree,
+ tvbuff_t *tvb, int offset)
{
- guint8 priority;
+ guint8 priority;
guint16 user_buffer_size;
/* CmCH-PI */
@@ -1002,20 +1038,20 @@ static int dissect_hsdpa_capacity_request(packet_info *pinfo, proto_tree *tree,
return offset;
}
-static int dissect_hsdpa_capacity_allocation(packet_info *pinfo, proto_tree *tree,
- tvbuff_t *tvb, int offset,
- struct fp_info *p_fp_info)
+static int
+dissect_hsdpa_capacity_allocation(packet_info *pinfo, proto_tree *tree,
+ tvbuff_t *tvb, int offset,
+ struct fp_info *p_fp_info)
{
proto_item *ti;
proto_item *rate_ti;
- guint16 max_pdu_length;
- guint8 repetition_period;
- guint8 interval;
- guint64 credits;
+ guint16 max_pdu_length;
+ guint8 repetition_period;
+ guint8 interval;
+ guint64 credits;
/* Congestion status (introduced sometime during R6...) */
- if ((p_fp_info->release == 6) || (p_fp_info->release == 7))
- {
+ if ((p_fp_info->release == 6) || (p_fp_info->release == 7)) {
proto_tree_add_bits_item(tree, hf_fp_congestion_status, tvb,
offset*8 + 2, 2, ENC_BIG_ENDIAN);
}
@@ -1035,15 +1071,13 @@ static int dissect_hsdpa_capacity_allocation(packet_info *pinfo, proto_tree *tre
offset += 2;
/* Interesting values */
- if (credits == 0)
- {
+ if (credits == 0) {
proto_item_append_text(ti, " (stop transmission)");
expert_add_info_format(pinfo, ti,
PI_RESPONSE_CODE, PI_NOTE,
"Stop HSDPA transmission");
}
- if (credits == 2047)
- {
+ if (credits == 2047) {
proto_item_append_text(ti, " (unlimited)");
}
@@ -1051,8 +1085,7 @@ static int dissect_hsdpa_capacity_allocation(packet_info *pinfo, proto_tree *tre
interval = tvb_get_guint8(tvb, offset);
ti = proto_tree_add_uint(tree, hf_fp_hsdsch_interval, tvb, offset, 1, interval*10);
offset++;
- if (interval == 0)
- {
+ if (interval == 0) {
proto_item_append_text(ti, " (none of the credits shall be used)");
}
@@ -1060,21 +1093,17 @@ static int dissect_hsdpa_capacity_allocation(packet_info *pinfo, proto_tree *tre
repetition_period = tvb_get_guint8(tvb, offset);
ti = proto_tree_add_item(tree, hf_fp_hsdsch_repetition_period, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
- if (repetition_period == 0)
- {
+ if (repetition_period == 0) {
proto_item_append_text(ti, " (unlimited repetition period)");
}
/* Calculated and show effective rate enabled */
- if (credits == 2047)
- {
+ if (credits == 2047) {
rate_ti = proto_tree_add_item(tree, hf_fp_hsdsch_unlimited_rate, tvb, 0, 0, ENC_NA);
PROTO_ITEM_SET_GENERATED(rate_ti);
}
- else
- {
- if (interval != 0)
- {
+ else {
+ if (interval != 0) {
/* Cast on credits is safe, since we know it won't exceed 10^11 */
rate_ti = proto_tree_add_uint(tree, hf_fp_hsdsch_calculated_rate, tvb, 0, 0,
(guint16)credits * max_pdu_length * (1000 / (interval*10)));
@@ -1089,15 +1118,16 @@ static int dissect_hsdpa_capacity_allocation(packet_info *pinfo, proto_tree *tre
return offset;
}
-static int dissect_hsdpa_capacity_allocation_type_2(packet_info *pinfo, proto_tree *tree,
- tvbuff_t *tvb, int offset)
+static int
+dissect_hsdpa_capacity_allocation_type_2(packet_info *pinfo, proto_tree *tree,
+ tvbuff_t *tvb, int offset)
{
proto_item *ti;
proto_item *rate_ti;
- guint16 max_pdu_length;
- guint8 repetition_period;
- guint8 interval;
- guint16 credits;
+ guint16 max_pdu_length;
+ guint8 repetition_period;
+ guint8 interval;
+ guint16 credits;
/* Congestion status */
proto_tree_add_bits_item(tree, hf_fp_congestion_status, tvb,
@@ -1121,15 +1151,13 @@ static int dissect_hsdpa_capacity_allocation_type_2(packet_info *pinfo, proto_tr
offset += 2;
/* Interesting values */
- if (credits == 0)
- {
+ if (credits == 0) {
proto_item_append_text(ti, " (stop transmission)");
expert_add_info_format(pinfo, ti,
PI_RESPONSE_CODE, PI_NOTE,
"Stop HSDPA transmission");
}
- if (credits == 65535)
- {
+ if (credits == 65535) {
proto_item_append_text(ti, " (unlimited)");
}
@@ -1137,8 +1165,7 @@ static int dissect_hsdpa_capacity_allocation_type_2(packet_info *pinfo, proto_tr
interval = tvb_get_guint8(tvb, offset);
ti = proto_tree_add_uint(tree, hf_fp_hsdsch_interval, tvb, offset, 1, interval*10);
offset++;
- if (interval == 0)
- {
+ if (interval == 0) {
proto_item_append_text(ti, " (none of the credits shall be used)");
}
@@ -1146,21 +1173,17 @@ static int dissect_hsdpa_capacity_allocation_type_2(packet_info *pinfo, proto_tr
repetition_period = tvb_get_guint8(tvb, offset);
ti = proto_tree_add_item(tree, hf_fp_hsdsch_repetition_period, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
- if (repetition_period == 0)
- {
+ if (repetition_period == 0) {
proto_item_append_text(ti, " (unlimited repetition period)");
}
/* Calculated and show effective rate enabled */
- if (credits == 65535)
- {
+ if (credits == 65535) {
rate_ti = proto_tree_add_item(tree, hf_fp_hsdsch_unlimited_rate, tvb, 0, 0, ENC_NA);
PROTO_ITEM_SET_GENERATED(rate_ti);
}
- else
- {
- if (interval != 0)
- {
+ else {
+ if (interval != 0) {
rate_ti = proto_tree_add_uint(tree, hf_fp_hsdsch_calculated_rate, tvb, 0, 0,
credits * max_pdu_length * (1000 / (interval*10)));
PROTO_ITEM_SET_GENERATED(rate_ti);
@@ -1176,8 +1199,9 @@ static int dissect_hsdpa_capacity_allocation_type_2(packet_info *pinfo, proto_tr
-static int dissect_common_dynamic_pusch_assignment(packet_info *pinfo, proto_tree *tree,
- tvbuff_t *tvb, int offset)
+static int
+dissect_common_dynamic_pusch_assignment(packet_info *pinfo, proto_tree *tree,
+ tvbuff_t *tvb, int offset)
{
guint8 pusch_set_id;
guint8 activation_cfn;
@@ -1210,8 +1234,9 @@ static int dissect_common_dynamic_pusch_assignment(packet_info *pinfo, proto_tre
/* Dissect the control part of a common channel message */
-static void dissect_common_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- int offset, struct fp_info *p_fp_info)
+static void
+dissect_common_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ int offset, struct fp_info *p_fp_info)
{
/* Common control frame type */
guint8 control_frame_type = tvb_get_guint8(tvb, offset);
@@ -1222,8 +1247,7 @@ static void dissect_common_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree
val_to_str_const(control_frame_type, common_control_frame_type_vals, "Unknown"));
/* Frame-type specific dissection */
- switch (control_frame_type)
- {
+ switch (control_frame_type) {
case COMMON_OUTER_LOOP_POWER_CONTROL:
offset = dissect_common_outer_loop_power_control(pinfo, tree, tvb, offset, p_fp_info);
break;
@@ -1270,8 +1294,9 @@ static void dissect_common_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree
/**************************/
/* Dissect a RACH channel */
-static void dissect_rach_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- int offset, struct fp_info *p_fp_info)
+static void
+dissect_rach_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ int offset, struct fp_info *p_fp_info)
{
gboolean is_control_frame;
@@ -1285,19 +1310,17 @@ static void dissect_rach_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_t
col_append_str(pinfo->cinfo, COL_INFO, is_control_frame ? " [Control] " : " [Data] ");
- if (is_control_frame)
- {
+ if (is_control_frame) {
dissect_common_control(tvb, pinfo, tree, offset, p_fp_info);
}
- else
- {
- guint8 cfn;
- guint32 propagation_delay = 0;
- proto_item *propagation_delay_ti = NULL;
- guint32 received_sync_ul_timing_deviation = 0;
+ else {
+ guint8 cfn;
+ guint32 propagation_delay = 0;
+ proto_item *propagation_delay_ti = NULL;
+ guint32 received_sync_ul_timing_deviation = 0;
proto_item *received_sync_ul_timing_deviation_ti = NULL;
- proto_item *rx_timing_deviation_ti = NULL;
- guint16 rx_timing_deviation = 0;
+ proto_item *rx_timing_deviation_ti = NULL;
+ guint16 rx_timing_deviation = 0;
/* DATA */
@@ -1312,8 +1335,7 @@ static void dissect_rach_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_t
proto_tree_add_item(tree, hf_fp_tfi, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
- if (p_fp_info->channel == CHANNEL_RACH_FDD)
- {
+ if (p_fp_info->channel == CHANNEL_RACH_FDD) {
/* Propagation delay */
propagation_delay = tvb_get_guint8(tvb, offset);
propagation_delay_ti = proto_tree_add_uint(tree, hf_fp_propagation_delay, tvb, offset, 1,
@@ -1322,16 +1344,14 @@ static void dissect_rach_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_t
}
/* Should be TDD 3.84 or 7.68 */
- if (p_fp_info->channel == CHANNEL_RACH_TDD)
- {
+ if (p_fp_info->channel == CHANNEL_RACH_TDD) {
/* Rx Timing Deviation */
rx_timing_deviation = tvb_get_guint8(tvb, offset);
rx_timing_deviation_ti = proto_tree_add_item(tree, hf_fp_rx_timing_deviation, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
}
- if (p_fp_info->channel == CHANNEL_RACH_TDD_128)
- {
+ if (p_fp_info->channel == CHANNEL_RACH_TDD_128) {
/* Received SYNC UL Timing Deviation */
received_sync_ul_timing_deviation = tvb_get_guint8(tvb, offset);
received_sync_ul_timing_deviation_ti =
@@ -1348,21 +1368,20 @@ static void dissect_rach_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_t
/* Info introduced in R6 */
/* only check if it looks as if they are present */
if (((p_fp_info->release == 6) || (p_fp_info->release == 7)) &&
- tvb_length_remaining(tvb, offset) > 2)
+ (tvb_length_remaining(tvb, offset) > 2))
{
int n;
guint8 flags;
/* guint8 flag_bytes = 0; */
- gboolean cell_portion_id_present = FALSE;
- gboolean ext_propagation_delay_present = FALSE;
- gboolean angle_of_arrival_present = FALSE;
+ gboolean cell_portion_id_present = FALSE;
+ gboolean ext_propagation_delay_present = FALSE;
+ gboolean angle_of_arrival_present = FALSE;
gboolean ext_rx_sync_ul_timing_deviation_present = FALSE;
- gboolean ext_rx_timing_deviation_present = FALSE;
+ gboolean ext_rx_timing_deviation_present = FALSE;
/* New IE flags (assume mandatory for now) */
- do
- {
+ do {
proto_item *new_ie_flags_ti;
proto_tree *new_ie_flags_tree;
guint ies_found = 0;
@@ -1377,12 +1396,10 @@ static void dissect_rach_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_t
/* flag_bytes++ */
/* Dissect individual bits */
- for (n=0; n < 8; n++)
- {
+ for (n=0; n < 8; n++) {
switch (n) {
case 6:
- switch (p_fp_info->division)
- {
+ switch (p_fp_info->division) {
case Division_FDD:
/* Ext propagation delay */
ext_propagation_delay_present = TRUE;
@@ -1404,8 +1421,7 @@ static void dissect_rach_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_t
}
break;
case 7:
- switch (p_fp_info->division)
- {
+ switch (p_fp_info->division) {
case Division_FDD:
/* Cell Portion ID */
cell_portion_id_present = TRUE;
@@ -1435,8 +1451,7 @@ static void dissect_rach_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_t
tvb, offset, 1, ENC_BIG_ENDIAN);
break;
}
- if ((flags >> (7-n)) & 0x01)
- {
+ if ((flags >> (7-n)) & 0x01) {
ies_found++;
}
}
@@ -1454,12 +1469,10 @@ static void dissect_rach_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_t
}
/* Ext Rx Timing Deviation */
- if (ext_rx_timing_deviation_present)
- {
+ if (ext_rx_timing_deviation_present) {
guint8 extra_bits;
guint bits_to_extend;
- switch (p_fp_info->division)
- {
+ switch (p_fp_info->division) {
case Division_TDD_384:
bits_to_extend = 1;
break;
@@ -1484,8 +1497,7 @@ static void dissect_rach_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_t
}
/* Ext propagation delay. */
- if (ext_propagation_delay_present)
- {
+ if (ext_propagation_delay_present) {
guint16 extra_bits = tvb_get_ntohs(tvb, offset) & 0x03ff;
proto_tree_add_item(tree, hf_fp_ext_propagation_delay, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -1496,8 +1508,7 @@ static void dissect_rach_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_t
}
/* Angle of Arrival (AOA) */
- if (angle_of_arrival_present)
- {
+ if (angle_of_arrival_present) {
proto_tree_add_item(tree, hf_fp_angle_of_arrival, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
}
@@ -1525,8 +1536,9 @@ static void dissect_rach_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_t
/**************************/
/* Dissect a FACH channel */
-static void dissect_fach_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- int offset, struct fp_info *p_fp_info)
+static void
+dissect_fach_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ int offset, struct fp_info *p_fp_info)
{
gboolean is_control_frame;
@@ -1540,12 +1552,10 @@ static void dissect_fach_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_t
col_append_str(pinfo->cinfo, COL_INFO, is_control_frame ? " [Control] " : " [Data] ");
- if (is_control_frame)
- {
+ if (is_control_frame) {
dissect_common_control(tvb, pinfo, tree, offset, p_fp_info);
}
- else
- {
+ else {
guint8 cfn;
/* DATA */
@@ -1571,14 +1581,13 @@ static void dissect_fach_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_t
/* New IE flags (if it looks as though they are present) */
if ((p_fp_info->release == 7) &&
- (tvb_length_remaining(tvb, offset) > 2))
- {
+ (tvb_length_remaining(tvb, offset) > 2)) {
+
guint8 flags = tvb_get_guint8(tvb, offset);
guint8 aoa_present = flags & 0x01;
offset++;
- if (aoa_present)
- {
+ if (aoa_present) {
proto_tree_add_item(tree, hf_fp_angle_of_arrival, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
}
@@ -1592,8 +1601,9 @@ static void dissect_fach_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_t
/**************************/
/* Dissect a DSCH channel */
-static void dissect_dsch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- int offset, struct fp_info *p_fp_info)
+static void
+dissect_dsch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ int offset, struct fp_info *p_fp_info)
{
gboolean is_control_frame;
@@ -1607,12 +1617,10 @@ static void dissect_dsch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_t
col_append_str(pinfo->cinfo, COL_INFO, is_control_frame ? " [Control] " : " [Data] ");
- if (is_control_frame)
- {
+ if (is_control_frame) {
dissect_common_control(tvb, pinfo, tree, offset, p_fp_info);
}
- else
- {
+ else {
guint8 cfn;
/* DATA */
@@ -1631,8 +1639,8 @@ static void dissect_dsch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_t
/* Other fields depend upon release & FDD/TDD settings */
if (((p_fp_info->release == 99) || (p_fp_info->release == 4)) &&
- (p_fp_info->channel == CHANNEL_DSCH_FDD))
- {
+ (p_fp_info->channel == CHANNEL_DSCH_FDD)) {
+
/* Power offset */
proto_tree_add_float(tree, hf_fp_power_offset, tvb, offset, 1,
(float)(-32.0) +
@@ -1652,8 +1660,7 @@ static void dissect_dsch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_t
/* Last bit of this byte is spare */
offset++;
}
- else
- {
+ else {
/* Normal case */
/* PDSCH Set Id */
@@ -1677,8 +1684,9 @@ static void dissect_dsch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_t
/**************************/
/* Dissect a USCH channel */
-static void dissect_usch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- int offset, struct fp_info *p_fp_info)
+static void
+dissect_usch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ int offset, struct fp_info *p_fp_info)
{
gboolean is_control_frame;
@@ -1692,12 +1700,10 @@ static void dissect_usch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_t
col_append_str(pinfo->cinfo, COL_INFO, is_control_frame ? " [Control] " : " [Data] ");
- if (is_control_frame)
- {
+ if (is_control_frame) {
dissect_common_control(tvb, pinfo, tree, offset, p_fp_info);
}
- else
- {
+ else {
guint cfn;
guint16 rx_timing_deviation;
proto_item *rx_timing_deviation_ti;
@@ -1733,14 +1739,13 @@ static void dissect_usch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_t
/* New IEs */
if ((p_fp_info->release == 7) &&
- (tvb_length_remaining(tvb, offset) > 2))
- {
+ (tvb_length_remaining(tvb, offset) > 2)) {
+
guint8 flags = tvb_get_guint8(tvb, offset);
guint8 bits_extended = flags & 0x01;
offset++;
- if (bits_extended)
- {
+ if (bits_extended) {
guint8 extra_bits = tvb_get_guint8(tvb, offset) & 0x03;
proto_item_append_text(rx_timing_deviation_ti,
" (extended to %u)",
@@ -1758,8 +1763,9 @@ static void dissect_usch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_t
/**************************/
/* Dissect a PCH channel */
-static void dissect_pch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- int offset, struct fp_info *p_fp_info)
+static void
+dissect_pch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ int offset, struct fp_info *p_fp_info)
{
gboolean is_control_frame;
guint16 pch_cfn;
@@ -1775,12 +1781,10 @@ static void dissect_pch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tr
col_append_str(pinfo->cinfo, COL_INFO, is_control_frame ? " [Control] " : " [Data] ");
- if (is_control_frame)
- {
+ if (is_control_frame) {
dissect_common_control(tvb, pinfo, tree, offset, p_fp_info);
}
- else
- {
+ else {
/* DATA */
/* 12-bit CFN value */
@@ -1800,8 +1804,7 @@ static void dissect_pch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tr
offset++;
/* Optional paging indications */
- if (paging_indication)
- {
+ if (paging_indication) {
proto_item *ti;
ti = proto_tree_add_item(tree, hf_fp_paging_indication_bitmap, tvb,
offset,
@@ -1822,8 +1825,9 @@ static void dissect_pch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tr
/**************************/
/* Dissect a CPCH channel */
-static void dissect_cpch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- int offset, struct fp_info *p_fp_info)
+static void
+dissect_cpch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ int offset, struct fp_info *p_fp_info)
{
gboolean is_control_frame;
@@ -1837,12 +1841,10 @@ static void dissect_cpch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_t
col_append_str(pinfo->cinfo, COL_INFO, is_control_frame ? " [Control] " : " [Data] ");
- if (is_control_frame)
- {
+ if (is_control_frame) {
dissect_common_control(tvb, pinfo, tree, offset, p_fp_info);
}
- else
- {
+ else {
guint cfn;
/* DATA */
@@ -1877,8 +1879,9 @@ static void dissect_cpch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_t
/**************************/
/* Dissect a BCH channel */
-static void dissect_bch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- int offset, struct fp_info *p_fp_info)
+static void
+dissect_bch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ int offset, struct fp_info *p_fp_info)
{
gboolean is_control_frame;
@@ -1892,8 +1895,7 @@ static void dissect_bch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tr
col_append_str(pinfo->cinfo, COL_INFO, is_control_frame ? " [Control] " : " [Data] ");
- if (is_control_frame)
- {
+ if (is_control_frame) {
dissect_common_control(tvb, pinfo, tree, offset, p_fp_info);
}
}
@@ -1901,8 +1903,9 @@ static void dissect_bch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tr
/********************************/
/* Dissect an IUR DSCH channel */
-static void dissect_iur_dsch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- int offset, struct fp_info *p_fp_info)
+static void
+dissect_iur_dsch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ int offset, struct fp_info *p_fp_info)
{
gboolean is_control_frame;
@@ -1916,12 +1919,10 @@ static void dissect_iur_dsch_channel_info(tvbuff_t *tvb, packet_info *pinfo, pro
col_append_str(pinfo->cinfo, COL_INFO, is_control_frame ? " [Control] " : " [Data] ");
- if (is_control_frame)
- {
+ if (is_control_frame) {
dissect_common_control(tvb, pinfo, tree, offset, p_fp_info);
}
- else
- {
+ else {
/* TODO: DATA */
}
}
@@ -1932,10 +1933,11 @@ static void dissect_iur_dsch_channel_info(tvbuff_t *tvb, packet_info *pinfo, pro
/************************/
/* DCH control messages */
-static int dissect_dch_timing_adjustment(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, int offset)
+static int
+dissect_dch_timing_adjustment(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, int offset)
{
- guint8 control_cfn;
- gint16 toa;
+ guint8 control_cfn;
+ gint16 toa;
proto_item *toa_ti;
/* CFN control */
@@ -1959,13 +1961,14 @@ static int dissect_dch_timing_adjustment(proto_tree *tree, packet_info *pinfo, t
return offset;
}
-static int dissect_dch_rx_timing_deviation(packet_info *pinfo, proto_tree *tree,
- tvbuff_t *tvb, int offset,
- struct fp_info *p_fp_info)
+static int
+dissect_dch_rx_timing_deviation(packet_info *pinfo, proto_tree *tree,
+ tvbuff_t *tvb, int offset,
+ struct fp_info *p_fp_info)
{
- guint16 timing_deviation = 0;
- gint timing_deviation_chips = 0;
- proto_item *timing_deviation_ti = NULL;
+ guint16 timing_deviation;
+ gint timing_deviation_chips;
+ proto_item *timing_deviation_ti;
/* CFN control */
proto_tree_add_item(tree, hf_fp_cfn_control, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1978,8 +1981,8 @@ static int dissect_dch_rx_timing_deviation(packet_info *pinfo, proto_tree *tree,
/* May be extended in R7, but in this case there are at least 2 bytes remaining */
if ((p_fp_info->release == 7) &&
- (tvb_length_remaining(tvb, offset) >= 2))
- {
+ (tvb_length_remaining(tvb, offset) >= 2)) {
+
/* New IE flags */
guint64 extended_bits_present;
guint64 e_rucch_present;
@@ -1992,13 +1995,12 @@ static int dissect_dch_rx_timing_deviation(packet_info *pinfo, proto_tree *tree,
offset++;
/* Optional E-RUCCH */
- if (e_rucch_present)
- {
+ if (e_rucch_present) {
+
/* Value of bit_offset depends upon division type */
int bit_offset;
- switch (p_fp_info->division)
- {
+ switch (p_fp_info->division) {
case Division_TDD_384:
bit_offset = 6;
break;
@@ -2026,12 +2028,10 @@ static int dissect_dch_rx_timing_deviation(packet_info *pinfo, proto_tree *tree,
- 1 bits (3.84 TDD) OR
- 2 bits (7.68 TDD)
*/
- if (extended_bits_present)
- {
+ if (extended_bits_present) {
guint8 extra_bits;
guint bits_to_extend;
- switch (p_fp_info->division)
- {
+ switch (p_fp_info->division) {
case Division_TDD_384:
bits_to_extend = 1;
break;
@@ -2066,7 +2066,8 @@ static int dissect_dch_rx_timing_deviation(packet_info *pinfo, proto_tree *tree,
return offset;
}
-static int dissect_dch_dl_synchronisation(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, int offset)
+static int
+dissect_dch_dl_synchronisation(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, int offset)
{
/* CFN control */
guint cfn = tvb_get_guint8(tvb, offset);
@@ -2078,7 +2079,8 @@ static int dissect_dch_dl_synchronisation(proto_tree *tree, packet_info *pinfo,
return offset;
}
-static int dissect_dch_ul_synchronisation(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, int offset)
+static int
+dissect_dch_ul_synchronisation(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, int offset)
{
guint8 cfn;
gint16 toa;
@@ -2099,7 +2101,8 @@ static int dissect_dch_ul_synchronisation(proto_tree *tree, packet_info *pinfo,
return offset;
}
-static int dissect_dch_outer_loop_power_control(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, int offset)
+static int
+dissect_dch_outer_loop_power_control(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, int offset)
{
/* UL SIR target */
float target = (float)-8.2 + ((float)0.1 * (float)(int)(tvb_get_guint8(tvb, offset)));
@@ -2111,24 +2114,26 @@ static int dissect_dch_outer_loop_power_control(proto_tree *tree, packet_info *p
return offset;
}
-static int dissect_dch_dl_node_synchronisation(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, int offset)
+static int
+dissect_dch_dl_node_synchronisation(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, int offset)
{
return dissect_common_dl_node_synchronisation(pinfo, tree, tvb, offset);
}
-static int dissect_dch_ul_node_synchronisation(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, int offset)
+static int
+dissect_dch_ul_node_synchronisation(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, int offset)
{
return dissect_common_ul_node_synchronisation(pinfo, tree, tvb, offset);
}
-static int dissect_dch_radio_interface_parameter_update(proto_tree *tree, packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
+static int
+dissect_dch_radio_interface_parameter_update(proto_tree *tree, packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
{
- int n;
+ int n;
guint8 value;
/* Show defined flags in these 2 bytes */
- for (n=4; n >= 0; n--)
- {
+ for (n=4; n >= 0; n--) {
proto_tree_add_item(tree, hf_fp_radio_interface_parameter_update_flag[n], tvb, offset, 2, ENC_BIG_ENDIAN);
}
offset += 2;
@@ -2157,11 +2162,12 @@ static int dissect_dch_radio_interface_parameter_update(proto_tree *tree, packet
return offset;
}
-static int dissect_dch_timing_advance(proto_tree *tree, packet_info *pinfo,
- tvbuff_t *tvb, int offset, struct fp_info *p_fp_info)
+static int
+dissect_dch_timing_advance(proto_tree *tree, packet_info *pinfo,
+ tvbuff_t *tvb, int offset, struct fp_info *p_fp_info)
{
- guint8 cfn;
- guint16 timing_advance;
+ guint8 cfn;
+ guint16 timing_advance;
proto_item *timing_advance_ti;
/* CFN control */
@@ -2175,15 +2181,14 @@ static int dissect_dch_timing_advance(proto_tree *tree, packet_info *pinfo,
offset++;
if ((p_fp_info->release == 7) &&
- (tvb_length_remaining(tvb, offset) > 0))
- {
+ (tvb_length_remaining(tvb, offset) > 0)) {
+
/* New IE flags */
guint8 flags = tvb_get_guint8(tvb, offset);
guint8 extended_bits = flags & 0x01;
offset++;
- if (extended_bits)
- {
+ if (extended_bits) {
guint8 extra_bit = tvb_get_guint8(tvb, offset) & 0x01;
proto_item_append_text(timing_advance_ti, " (extended to %u)",
(timing_advance << 1) | extra_bit);
@@ -2191,14 +2196,14 @@ static int dissect_dch_timing_advance(proto_tree *tree, packet_info *pinfo,
offset++;
}
-
col_append_fstr(pinfo->cinfo, COL_INFO, " CFN = %u, TA = %u",
cfn, timing_advance);
return offset;
}
-static int dissect_dch_tnl_congestion_indication(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, int offset)
+static int
+dissect_dch_tnl_congestion_indication(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, int offset)
{
guint64 status;
@@ -2217,8 +2222,9 @@ static int dissect_dch_tnl_congestion_indication(proto_tree *tree, packet_info *
/* DCH control frame */
-static void dissect_dch_control_frame(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, int offset,
- struct fp_info *p_fp_info)
+static void
+dissect_dch_control_frame(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb,
+ int offset, struct fp_info *p_fp_info)
{
/* Control frame type */
guint8 control_frame_type = tvb_get_guint8(tvb, offset);
@@ -2229,8 +2235,7 @@ static void dissect_dch_control_frame(proto_tree *tree, packet_info *pinfo, tvbu
val_to_str_const(control_frame_type,
dch_control_frame_type_vals, "Unknown"));
- switch (control_frame_type)
- {
+ switch (control_frame_type) {
case DCH_TIMING_ADJUSTMENT:
offset = dissect_dch_timing_adjustment(tree, pinfo, tvb, offset);
break;
@@ -2269,8 +2274,9 @@ static void dissect_dch_control_frame(proto_tree *tree, packet_info *pinfo, tvbu
/*******************************/
/* Dissect a DCH channel */
-static void dissect_dch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- int offset, struct fp_info *p_fp_info)
+static void
+dissect_dch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ int offset, struct fp_info *p_fp_info)
{
gboolean is_control_frame;
guint8 cfn;
@@ -2288,13 +2294,11 @@ static void dissect_dch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tr
((p_fp_info->is_uplink) ? " [ULData] " :
" [DLData] " ));
- if (is_control_frame)
- {
+ if (is_control_frame) {
/* DCH control frame */
dissect_dch_control_frame(tree, pinfo, tvb, offset, p_fp_info);
}
- else
- {
+ else {
/************************/
/* DCH data here */
int chan;
@@ -2307,8 +2311,7 @@ static void dissect_dch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tr
col_append_fstr(pinfo->cinfo, COL_INFO, "CFN=%03u ", cfn);
/* One TFI for each channel */
- for (chan=0; chan < p_fp_info->num_chans; chan++)
- {
+ for (chan=0; chan < p_fp_info->num_chans; chan++) {
proto_tree_add_item(tree, hf_fp_tfi, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
}
@@ -2317,15 +2320,13 @@ static void dissect_dch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tr
offset = dissect_tb_data(tvb, pinfo, tree, offset, p_fp_info, &mac_fdd_dch_handle);
/* QE (uplink only) */
- if (p_fp_info->is_uplink)
- {
+ if (p_fp_info->is_uplink) {
proto_tree_add_item(tree, hf_fp_quality_estimate, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
}
/* CRCI bits (uplink only) */
- if (p_fp_info->is_uplink)
- {
+ if (p_fp_info->is_uplink) {
offset = dissect_crci_bits(tvb, pinfo, tree, p_fp_info, offset);
}
@@ -2339,9 +2340,10 @@ static void dissect_dch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tr
/**********************************/
/* Dissect an E-DCH channel */
-static void dissect_e_dch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- int offset, struct fp_info *p_fp_info,
- gboolean is_common)
+static void
+dissect_e_dch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ int offset, struct fp_info *p_fp_info,
+ gboolean is_common, rlc_info *rlcinf)
{
gboolean is_control_frame;
guint8 number_of_subframes;
@@ -2363,13 +2365,11 @@ static void dissect_e_dch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_
col_append_str(pinfo->cinfo, COL_INFO, is_control_frame ? " [Control] " : " [Data] ");
- if (is_control_frame)
- {
+ if (is_control_frame) {
/* DCH control frame */
dissect_dch_control_frame(tree, pinfo, tvb, offset, p_fp_info);
}
- else
- {
+ else {
/********************************/
/* E-DCH data here */
@@ -2386,13 +2386,12 @@ static void dissect_e_dch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_
This was 3 bits in early releases, is 4 bits offset by 1 in later releases */
if ((p_fp_info->release >= 6) &&
((p_fp_info->release_year > 2005) ||
- (p_fp_info->release_year == 2005 && p_fp_info->release_month >= 9)))
- {
+ ((p_fp_info->release_year == 2005) && (p_fp_info->release_month >= 9)))) {
+
/* Use 4 bits plus offset of 1 */
number_of_subframes = (tvb_get_guint8(tvb, offset) & 0x0f) + 1;
}
- else
- {
+ else {
/* Use 3 bits only */
number_of_subframes = (tvb_get_guint8(tvb, offset) & 0x07);
}
@@ -2414,8 +2413,7 @@ static void dissect_e_dch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_
}
/* EDCH subframe header list */
- for (n=0; n < number_of_subframes; n++)
- {
+ for (n=0; n < number_of_subframes; n++) {
int i;
int start_offset = offset;
proto_item *subframe_header_ti;
@@ -2447,8 +2445,7 @@ static void dissect_e_dch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_
subframes[n].number_of_mac_es_pdus);
/* Details of each MAC-es PDU */
- for (i=0; i < subframes[n].number_of_mac_es_pdus; i++)
- {
+ for (i=0; i < subframes[n].number_of_mac_es_pdus; i++) {
guint64 ddi;
guint64 n_pdus;
proto_item *ddi_ti;
@@ -2458,25 +2455,24 @@ static void dissect_e_dch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_
/* DDI (6 bits) */
ddi_ti = proto_tree_add_bits_ret_val(subframe_header_tree, hf_fp_edch_ddi, tvb,
offset*8 + bit_offset, 6, &ddi, ENC_BIG_ENDIAN);
+ if(rlcinf){
+ rlcinf->rbid[i] = (guint8)ddi;
+ }
/* Look up the size from this DDI value */
- for (p=0; p < p_fp_info->no_ddi_entries; p++)
- {
- if (ddi == p_fp_info->edch_ddi[p])
- {
+ for (p=0; p < p_fp_info->no_ddi_entries; p++) {
+ if (ddi == p_fp_info->edch_ddi[p]) {
ddi_size = p_fp_info->edch_macd_pdu_size[p];
break;
}
}
- if (ddi_size == -1)
- {
+ if (ddi_size == -1) {
expert_add_info_format(pinfo, ddi_ti,
PI_MALFORMED, PI_ERROR,
"DDI %u not defined for this UE!", (guint)ddi);
return;
}
- else
- {
+ else {
proto_item_append_text(ddi_ti, " (%d bits)", ddi_size);
}
@@ -2498,9 +2494,7 @@ static void dissect_e_dch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_
}
/* EDCH subframes */
- bit_offset = 0;
- for (n=0; n < number_of_subframes; n++)
- {
+ for (n=0; n < number_of_subframes; n++) {
int i;
proto_item *subframe_ti;
proto_tree *subframe_tree;
@@ -2514,8 +2508,7 @@ static void dissect_e_dch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_
"", "Subframe %u data", subframes[n].subframe_number);
subframe_tree = proto_item_add_subtree(subframe_ti, ett_fp_edch_subframe);
- for (i=0; i < subframes[n].number_of_mac_es_pdus; i++)
- {
+ for (i=0; i < subframes[n].number_of_mac_es_pdus; i++) {
int m;
guint16 size = 0;
/* guint8 tsn; */
@@ -2525,17 +2518,14 @@ static void dissect_e_dch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_
proto_tree *maces_tree = NULL;
/* Look up mac-d pdu size for this ddi */
- for (m=0; m < p_fp_info->no_ddi_entries; m++)
- {
- if (subframes[n].ddi[i] == p_fp_info->edch_ddi[m])
- {
+ for (m=0; m < p_fp_info->no_ddi_entries; m++) {
+ if (subframes[n].ddi[i] == p_fp_info->edch_ddi[m]) {
size = p_fp_info->edch_macd_pdu_size[m];
break;
}
}
- if (m == p_fp_info->no_ddi_entries)
- {
+ if (m == p_fp_info->no_ddi_entries) {
/* Not found. Oops */
return;
}
@@ -2557,8 +2547,7 @@ static void dissect_e_dch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_
bit_offset += 6;
/* PDU */
- if (subframe_tree)
- {
+ if (subframe_tree) {
ti = proto_tree_add_item(subframe_tree, hf_fp_edch_mac_es_pdu, tvb,
offset + (bit_offset/8),
((bit_offset % 8) + send_size + 7) / 8,
@@ -2594,14 +2583,12 @@ static void dissect_e_dch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_
mac_d_pdus_in_subframe += subframes[n].number_of_mac_d_pdus[i];
/* Pad out to next byte */
- if (bit_offset % 8)
- {
+ if (bit_offset % 8) {
bit_offset += (8 - (bit_offset % 8));
}
}
- if (tree)
- {
+ if (tree) {
/* Tree should cover entire subframe */
proto_item_set_len(subframe_ti, bit_offset/8);
/* Append summary info to subframe label */
@@ -2616,8 +2603,7 @@ static void dissect_e_dch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_
/* Report number of subframes in info column
* do this only if no other dissector was called */
- if (dissected == FALSE)
- {
+ if (dissected == FALSE) {
col_append_fstr(pinfo->cinfo, COL_INFO,
" CFN = %03u (%u bits in %u pdus in %u subframes)",
cfn, total_bits, total_pdus, number_of_subframes);
@@ -2630,21 +2616,22 @@ static void dissect_e_dch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_
}
/* Dissect the remainder of the T2 or common frame that differs from T1 */
-static void dissect_e_dch_t2_or_common_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- int offset, struct fp_info *p_fp_info,
- int number_of_subframes,
- gboolean is_common)
+static void
+dissect_e_dch_t2_or_common_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ int offset, struct fp_info *p_fp_info,
+ int number_of_subframes, gboolean is_common)
{
- int n;
- int pdu_no;
- static struct edch_t2_subframe_info subframes[16];
- guint64 total_macis_sdus;
- guint16 macis_sdus_found = 0;
- guint16 macis_pdus = 0;
- guint32 total_bytes = 0;
- gboolean F = TRUE; /* We want to continue loop if get E-RNTI indication... */
+ int n;
+ int pdu_no;
+ guint64 total_macis_sdus;
+ guint16 macis_sdus_found = 0;
+ guint16 macis_pdus = 0;
+ guint32 total_bytes = 0;
+ gboolean F = TRUE; /* We want to continue loop if get E-RNTI indication... */
+ gint bit_offset;
+
proto_item *subframe_macis_descriptors_ti = NULL;
- gint bit_offset;
+ static struct edch_t2_subframe_info subframes[16];
/* User Buffer size */
proto_tree_add_bits_item(tree, hf_fp_edch_user_buffer_size, tvb, offset*8,
@@ -2846,7 +2833,7 @@ static void dissect_e_dch_t2_or_common_channel_info(tvbuff_t *tvb, packet_info *
/* Add data summary to info column */
col_append_fstr(pinfo->cinfo, COL_INFO, " (%u bytes in %u SDUs in %u MAC-is PDUs in %u subframes)",
- total_bytes, macis_sdus_found, macis_pdus, number_of_subframes);;
+ total_bytes, macis_sdus_found, macis_pdus, number_of_subframes);
/* Spare extension and payload CRC (optional) */
dissect_spare_extension_and_crc(tvb, pinfo, tree,
@@ -2858,8 +2845,9 @@ static void dissect_e_dch_t2_or_common_channel_info(tvbuff_t *tvb, packet_info *
/* Dissect an HSDSCH channel */
/* The data format corresponds to the format */
/* described in R5 and R6, and frame type 1 in Release 7. */
-static void dissect_hsdsch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- int offset, struct fp_info *p_fp_info)
+static void
+dissect_hsdsch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ int offset, struct fp_info *p_fp_info)
{
gboolean is_control_frame;
@@ -2873,12 +2861,10 @@ static void dissect_hsdsch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto
col_append_str(pinfo->cinfo, COL_INFO, is_control_frame ? " [Control] " : " [Data] ");
- if (is_control_frame)
- {
+ if (is_control_frame) {
dissect_common_control(tvb, pinfo, tree, offset, p_fp_info);
}
- else
- {
+ else {
guint8 number_of_pdus;
guint16 pdu_length;
guint16 user_buffer_size;
@@ -2888,8 +2874,8 @@ static void dissect_hsdsch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto
/* Frame Seq Nr */
if ((p_fp_info->release == 6) ||
- (p_fp_info->release == 7))
- {
+ (p_fp_info->release == 7)) {
+
guint8 frame_seq_no = (tvb_get_guint8(tvb, offset) & 0xf0) >> 4;
proto_tree_add_item(tree, hf_fp_frame_seq_nr, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2906,8 +2892,8 @@ static void dissect_hsdsch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto
offset += 2;
if ((p_fp_info->release == 6) ||
- (p_fp_info->release == 7))
- {
+ (p_fp_info->release == 7)) {
+
/* Flush bit */
proto_tree_add_item(tree, hf_fp_flush, tvb, offset-1, 1, ENC_BIG_ENDIAN);
@@ -2936,15 +2922,14 @@ static void dissect_hsdsch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto
/* Extra IEs (if there is room for them) */
if (((p_fp_info->release == 6) ||
(p_fp_info->release == 7)) &&
- (tvb_length_remaining(tvb, offset) > 2))
- {
+ (tvb_length_remaining(tvb, offset) > 2)) {
+
int n;
guint8 flags;
/* guint8 flag_bytes = 0; */
/* New IE flags */
- do
- {
+ do {
proto_item *new_ie_flags_ti;
proto_tree *new_ie_flags_tree;
guint ies_found = 0;
@@ -2959,11 +2944,9 @@ static void dissect_hsdsch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto
/* flag_bytes++; */
/* Dissect individual bits */
- for (n=0; n < 8; n++)
- {
+ for (n=0; n < 8; n++) {
proto_tree_add_item(new_ie_flags_tree, hf_fp_hsdsch_new_ie_flag[n], tvb, offset, 1, ENC_BIG_ENDIAN);
- if ((flags >> (7-n)) & 0x01)
- {
+ if ((flags >> (7-n)) & 0x01) {
ies_found++;
}
}
@@ -2974,8 +2957,7 @@ static void dissect_hsdsch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto
/* Last bit set will indicate another flags byte follows... */
} while (0); /*((flags & 0x01) && (flag_bytes < 31));*/
- if (1) /*(flags & 0x8) */
- {
+ if (1) /*(flags & 0x8) */ {
/* DRT is shown as mandatory in the diagram (3GPP TS 25.435 V6.3.0),
but the description below it states that
it should depend upon the first bit. The detailed description of
@@ -2996,8 +2978,9 @@ static void dissect_hsdsch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto
/* (introduced in Release 7) */
/* N.B. there is currently no support for */
/* frame type 3 (IuR only?) */
-static void dissect_hsdsch_type_2_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- int offset, struct fp_info *p_fp_info)
+static void
+dissect_hsdsch_type_2_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ int offset, struct fp_info *p_fp_info)
{
gboolean is_control_frame;
@@ -3011,12 +2994,10 @@ static void dissect_hsdsch_type_2_channel_info(tvbuff_t *tvb, packet_info *pinfo
col_append_str(pinfo->cinfo, COL_INFO, is_control_frame ? " [Control] " : " [Data] ");
- if (is_control_frame)
- {
+ if (is_control_frame) {
dissect_common_control(tvb, pinfo, tree, offset, p_fp_info);
}
- else
- {
+ else {
guint8 number_of_pdu_blocks;
gboolean drt_present = FALSE;
gboolean fach_present = FALSE;
@@ -3035,8 +3016,8 @@ static void dissect_hsdsch_type_2_channel_info(tvbuff_t *tvb, packet_info *pinfo
/* Frame Seq Nr (4 bits) */
if ((p_fp_info->release == 6) ||
- (p_fp_info->release == 7))
- {
+ (p_fp_info->release == 7)) {
+
guint8 frame_seq_no = (tvb_get_guint8(tvb, offset) & 0xf0) >> 4;
proto_tree_add_item(tree, hf_fp_frame_seq_nr, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -3051,8 +3032,7 @@ static void dissect_hsdsch_type_2_channel_info(tvbuff_t *tvb, packet_info *pinfo
number_of_pdu_blocks = (tvb_get_guint8(tvb, offset) >> 3);
proto_tree_add_item(tree, hf_fp_total_pdu_blocks, tvb, offset, 1, ENC_BIG_ENDIAN);
- if (p_fp_info->release == 7)
- {
+ if (p_fp_info->release == 7) {
/* Flush bit */
proto_tree_add_item(tree, hf_fp_flush, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -3080,8 +3060,7 @@ static void dissect_hsdsch_type_2_channel_info(tvbuff_t *tvb, packet_info *pinfo
/********************************************************************/
/* Now read number_of_pdu_blocks header entries */
- for (n=0; n < number_of_pdu_blocks; n++)
- {
+ for (n=0; n < number_of_pdu_blocks; n++) {
proto_item *pdu_block_header_ti;
proto_tree *pdu_block_header_tree;
int block_header_start_offset = offset;
@@ -3147,15 +3126,13 @@ static void dissect_hsdsch_type_2_channel_info(tvbuff_t *tvb, packet_info *pinfo
/**********************************************/
/* Optional fields indicated by earlier flags */
- if (drt_present)
- {
+ if (drt_present) {
/* DRT */
proto_tree_add_item(tree, hf_fp_drt, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
}
- if (fach_present)
- {
+ if (fach_present) {
/* H-RNTI: */
proto_tree_add_item(tree, hf_fp_hrnti, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
@@ -3168,8 +3145,7 @@ static void dissect_hsdsch_type_2_channel_info(tvbuff_t *tvb, packet_info *pinfo
/********************************************************************/
/* Now read the MAC-d/c PDUs for each block using info from headers */
- for (n=0; n < number_of_pdu_blocks; n++)
- {
+ for (n=0; n < number_of_pdu_blocks; n++) {
/* Add PDU block header subtree */
offset = dissect_macd_pdu_data_type_2(tvb, pinfo, tree, offset,
(guint16)pdu_length[n],
@@ -3181,11 +3157,12 @@ static void dissect_hsdsch_type_2_channel_info(tvbuff_t *tvb, packet_info *pinfo
}
}
-static gboolean heur_dissect_fp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static gboolean
+heur_dissect_fp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
struct fp_info *p_fp_info;
- p_fp_info = p_get_proto_data(pinfo->fd, proto_fp);
+ p_fp_info = (fp_info *)p_get_proto_data(pinfo->fd, proto_fp);
/* if no FP info is present, assume this is not FP over UDP */
if (!p_fp_info) return FALSE;
@@ -3195,12 +3172,6 @@ static gboolean heur_dissect_fp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
return FALSE;
}
- /* remember 'lower' UDP layer port information */
- if (!p_fp_info->srcport || !p_fp_info->destport) {
- p_fp_info->srcport = pinfo->srcport;
- p_fp_info->destport = pinfo->destport;
- }
-
/* discriminate 'lower' UDP layer from 'user data' UDP layer
* (i.e. if an FP over UDP packet contains a user UDP packet */
if (p_fp_info->srcport != pinfo->srcport ||
@@ -3212,15 +3183,229 @@ static gboolean heur_dissect_fp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
return TRUE;
}
+static fp_info *
+fp_set_per_packet_inf_from_conv(umts_fp_conversation_info_t *p_conv_data,
+ tvbuff_t *tvb, packet_info *pinfo,
+ proto_tree *tree _U_)
+{
+ fp_info *fpi;
+ guint8 tfi, c_t;
+ int offset = 0, i;
+ gboolean is_control_frame;
+ umts_mac_info *macinf;
+ rlc_info *rlcinf;
+
+ fpi = se_new0(fp_info);
+ p_add_proto_data(pinfo->fd, proto_fp, fpi);
+
+ fpi->iface_type = p_conv_data->iface_type;
+ fpi->division = p_conv_data->division;
+ fpi->release = 7; /* Set values greater then the checks performed */
+ fpi->release_year = 2006;
+ fpi->release_month = 12;
+ fpi->channel = p_conv_data->channel;
+ fpi->dch_crc_present = p_conv_data->dch_crc_present;
+ /*fpi->paging_indications;*/
+ fpi->link_type = FP_Link_Ethernet;
+
+ /* remember 'lower' UDP layer port information so we can later
+ * differentiate 'lower' UDP layer from 'user data' UDP layer */
+ fpi->srcport = pinfo->srcport;
+ fpi->destport = pinfo->destport;
+
+ if (pinfo->link_dir==P2P_DIR_UL) {
+ fpi->is_uplink = TRUE;
+ } else {
+ fpi->is_uplink = FALSE;
+ }
+
+ is_control_frame = tvb_get_guint8(tvb, offset) & 0x01;
+
+ switch (fpi->channel) {
+ case CHANNEL_HSDSCH: /* HS-DSCH - High Speed Downlink Shared Channel */
+ fpi->hsdsch_entity = p_conv_data->hsdsch_entity;
+ macinf = se_new0(umts_mac_info);
+ macinf->content[0] = MAC_CONTENT_PS_DTCH;
+ p_add_proto_data(pinfo->fd, proto_umts_mac, macinf);
+
+ rlcinf = se_new0(rlc_info);
+ /* Make configurable ?(available in NBAP?) */
+ /* urnti[MAX_RLC_CHANS] */
+ switch (p_conv_data->rlc_mode) {
+ case FP_RLC_TM:
+ rlcinf->mode[0] = RLC_TM;
+ break;
+ case FP_RLC_UM:
+ rlcinf->mode[0] = RLC_UM;
+ break;
+ case FP_RLC_AM:
+ rlcinf->mode[0] = RLC_AM;
+ break;
+ case FP_RLC_MODE_UNKNOWN:
+ default:
+ rlcinf->mode[0] = RLC_UNKNOWN_MODE;
+ break;
+ }
+ /* rbid[MAX_RLC_CHANS] */
+ /* For RLC re-assembly to work we need to fake urnti */
+ rlcinf->urnti[0] = fpi->channel;
+ rlcinf->li_size[0] = RLC_LI_7BITS;
+ rlcinf->ciphered[0] = FALSE;
+ rlcinf->deciphered[0] = FALSE;
+ p_add_proto_data(pinfo->fd, proto_rlc, rlcinf);
+
+ return fpi;
+
+ case CHANNEL_EDCH:
+ fpi->no_ddi_entries = p_conv_data->no_ddi_entries;
+ for (i=0; i<fpi->no_ddi_entries; i++) {
+ fpi->edch_ddi[i] = p_conv_data->edch_ddi[i];
+ fpi->edch_macd_pdu_size[i] = p_conv_data->edch_macd_pdu_size[i];
+ }
+
+ fpi->edch_type = p_conv_data->edch_type;
+
+ macinf = se_new0(umts_mac_info);
+ macinf->content[0] = MAC_CONTENT_PS_DTCH;
+ p_add_proto_data(pinfo->fd, proto_umts_mac, macinf);
+
+ rlcinf = se_new0(rlc_info);
+ /* For RLC re-assembly to work we need to fake urnti */
+ rlcinf->urnti[0] = fpi->channel;
+ rlcinf->mode[0] = RLC_AM;
+ rlcinf->li_size[0] = RLC_LI_7BITS;
+ rlcinf->ciphered[0] = FALSE;
+ rlcinf->deciphered[0] = FALSE;
+ p_add_proto_data(pinfo->fd, proto_rlc, rlcinf);
+
+ return fpi;
+
+ case CHANNEL_PCH:
+ fpi->paging_indications = p_conv_data->paging_indications;
+ fpi->num_chans = p_conv_data->num_dch_in_flow;
+ /* Set offset to point to first TFI
+ */
+ if (is_control_frame) {
+ /* control frame, we're done */
+ return fpi;
+ }
+ /* Set offset to TFI */
+ offset = 3;
+ break;
+ case CHANNEL_DCH:
+ fpi->num_chans = p_conv_data->num_dch_in_flow;
+ if (is_control_frame) {
+ /* control frame, we're done */
+ return fpi;
+ }
+ /* For now cheat */
+ if (p_conv_data->dchs_in_flow_list[0] == 31) {
+ macinf = se_new0(umts_mac_info);
+ macinf->ctmux[0] = 1;
+ macinf->content[0] = MAC_CONTENT_DCCH;
+ p_add_proto_data(pinfo->fd, proto_umts_mac, macinf);
+
+ /* Set RLC data */
+ /* Peek at C/T, different RLC params for different logical channels */
+ c_t = tvb_get_guint8(tvb,offset);
+ rlcinf = se_new0(rlc_info);
+ /* Make configurable ?(avaliable in NBAP?) */
+ /* urnti[MAX_RLC_CHANS] */
+ if(c_t == 0 ) {
+ rlcinf->mode[0] = RLC_UM;
+ } else {
+ rlcinf->mode[0] = RLC_AM;
+ }
+ /* rbid[MAX_RLC_CHANS] */
+ /* For RLC re-assembly to work we need to fake urnti */
+ rlcinf->urnti[0] = fpi->channel;
+ rlcinf->li_size[0] = RLC_LI_7BITS;
+ rlcinf->ciphered[0] = FALSE;
+ rlcinf->deciphered[0] = FALSE;
+
+ p_add_proto_data(pinfo->fd, proto_rlc, rlcinf);
+ }
+ /* Set offset to point to first TFI
+ * the Number of TFI's = number of DCH's in the flow
+ */
+ offset = 2;
+ break;
+ case CHANNEL_FACH_FDD:
+ fpi->num_chans = p_conv_data->num_dch_in_flow;
+ if (is_control_frame) {
+ /* control frame, we're done */
+ return fpi;
+ }
+ /* Set offset to point to first TFI
+ * the Number of TFI's = number of DCH's in the flow
+ */
+ offset = 2;
+ /* Set MAC data */
+ macinf = se_new0(umts_mac_info);
+ macinf->ctmux[0] = 1;
+ macinf->content[0] = MAC_CONTENT_DCCH;
+ p_add_proto_data(pinfo->fd, proto_umts_mac, macinf);
+ /* Set RLC data */
+ rlcinf = se_new0(rlc_info);
+ /* Make configurable ?(avaliable in NBAP?) */
+ /* For RLC re-assembly to work we need to fake urnti */
+ rlcinf->urnti[0] = fpi->channel;
+ rlcinf->mode[0] = RLC_AM;
+ /* rbid[MAX_RLC_CHANS] */
+ rlcinf->li_size[0] = RLC_LI_7BITS;
+ rlcinf->ciphered[0] = FALSE;
+ rlcinf->deciphered[0] = FALSE;
+ p_add_proto_data(pinfo->fd, proto_rlc, rlcinf);
+ break;
+ case CHANNEL_RACH_FDD:
+ fpi->num_chans = p_conv_data->num_dch_in_flow;
+ if (is_control_frame) {
+ /* control frame, we're done */
+ return fpi;
+ }
+ /* Set offset to point to first TFI
+ * the Number of TFI's = number of DCH's in the flow
+ */
+ offset = 2;
+ /* set MAC data */
+ macinf = se_new0(umts_mac_info);
+ macinf->ctmux[0] = 1;
+ macinf->content[0] = MAC_CONTENT_DCCH;
+ p_add_proto_data(pinfo->fd, proto_umts_mac, macinf);
+ break;
+ default:
+ return NULL;
+ }
+
+ /* Peek at the packet as the per packet info seems not to take the tfi into account */
+ for (i=0; i<fpi->num_chans; i++) {
+ tfi = tvb_get_guint8(tvb,offset);
+ if (pinfo->link_dir==P2P_DIR_UL) {
+ fpi->chan_tf_size[i] = p_conv_data->fp_dch_channel_info[i].ul_chan_tf_size[tfi];
+ fpi->chan_num_tbs[i] = p_conv_data->fp_dch_channel_info[i].ul_chan_num_tbs[tfi];
+ } else {
+ fpi->chan_tf_size[i] = p_conv_data->fp_dch_channel_info[i].dl_chan_tf_size[tfi];
+ fpi->chan_num_tbs[i] = p_conv_data->fp_dch_channel_info[i].dl_chan_num_tbs[tfi];
+ }
+ offset++;
+ }
+
+
+ return fpi;
+}
/*****************************/
/* Main dissection function. */
-void dissect_fp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static void
+dissect_fp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_tree *fp_tree;
proto_item *ti;
- gint offset = 0;
+ gint offset = 0;
struct fp_info *p_fp_info;
+ rlc_info *rlcinf;
+ conversation_t *p_conv;
+ umts_fp_conversation_info_t *p_conv_data = NULL;
/* Append this protocol name rather than replace. */
col_set_str(pinfo->cinfo, COL_PROTOCOL, "FP");
@@ -3232,17 +3417,56 @@ void dissect_fp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
top_level_tree = tree;
/* Look for packet info! */
- p_fp_info = p_get_proto_data(pinfo->fd, proto_fp);
+ p_fp_info = (struct fp_info *)p_get_proto_data(pinfo->fd, proto_fp);
+
+ /* Check if we have converstaion info */
+ p_conv = (conversation_t *)find_conversation(pinfo->fd->num, &pinfo->net_dst, &pinfo->net_src,
+ pinfo->ptype,
+ pinfo->destport, pinfo->srcport, NO_ADDR_B);
+ if (p_conv) {
+ p_conv_data = (umts_fp_conversation_info_t *)conversation_get_proto_data(p_conv, proto_fp);
+ if (p_conv_data) {
+ if (ADDRESSES_EQUAL(&(pinfo->net_dst), (&p_conv_data->crnc_address))) {
+ proto_item* item = proto_tree_add_uint(fp_tree, hf_fp_ul_setup_frame,
+ tvb, 0, 0, p_conv_data->ul_frame_number);
+ PROTO_ITEM_SET_GENERATED(item);
+ /* CRNC -> Node B */
+ pinfo->link_dir=P2P_DIR_UL;
+ if (p_fp_info == NULL) {
+ p_fp_info = fp_set_per_packet_inf_from_conv(p_conv_data, tvb, pinfo, fp_tree);
+ }
+ }
+ else {
+ proto_item* item = proto_tree_add_uint(fp_tree, hf_fp_ul_setup_frame,
+ tvb, 0, 0, p_conv_data->ul_frame_number);
+ PROTO_ITEM_SET_GENERATED(item);
+ pinfo->link_dir=P2P_DIR_DL;
+ if (p_fp_info == NULL) {
+ p_fp_info = fp_set_per_packet_inf_from_conv(p_conv_data, tvb, pinfo, fp_tree);
+ }
+ }
+ }
+
+ }
+
+ if(pinfo->p2p_dir == P2P_DIR_UNKNOWN){
+ if(pinfo->link_dir==P2P_DIR_UL) {
+ pinfo->p2p_dir = P2P_DIR_RECV;
+ } else {
+ pinfo->p2p_dir = P2P_DIR_SENT;
+ }
+ }
/* Can't dissect anything without it... */
- if (p_fp_info == NULL)
- {
+ if (p_fp_info == NULL) {
ti = proto_tree_add_text(fp_tree, tvb, offset, -1,
- "Can't dissect FP frame because no per-frame info was attached!");
+ "Can't dissect FP frame because no per-frame info was attached!");
PROTO_ITEM_SET_GENERATED(ti);
return;
}
+ rlcinf = (rlc_info *)p_get_proto_data(pinfo->fd, proto_rlc);
+
/* Show release information */
if (preferences_show_release_info) {
proto_item *release_ti;
@@ -3270,6 +3494,14 @@ void dissect_fp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
val_to_str_const(p_fp_info->channel,
channel_type_vals,
"Unknown channel type"));
+ if (p_conv_data) {
+ int i;
+ col_append_fstr(pinfo->cinfo, COL_INFO, "(%u",p_conv_data->dchs_in_flow_list[0]);
+ for (i=1; i < p_conv_data->num_dch_in_flow; i++) {
+ col_append_fstr(pinfo->cinfo, COL_INFO, ",%u",p_conv_data->dchs_in_flow_list[i]);
+ }
+ col_append_fstr(pinfo->cinfo, COL_INFO, ") ");
+ }
proto_item_append_text(ti, " (%s)",
val_to_str_const(p_fp_info->channel,
channel_type_vals,
@@ -3280,8 +3512,7 @@ void dissect_fp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
PROTO_ITEM_SET_GENERATED(ti);
/* Add division type as a generated field */
- if (p_fp_info->release == 7)
- {
+ if (p_fp_info->release == 7) {
ti = proto_tree_add_uint(fp_tree, hf_fp_division, tvb, 0, 0, p_fp_info->division);
PROTO_ITEM_SET_GENERATED(ti);
}
@@ -3292,8 +3523,7 @@ void dissect_fp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Don't currently handle IuR-specific formats, but its useful to even see
the channel type and direction */
- if (p_fp_info->iface_type == IuR_Interface)
- {
+ if (p_fp_info->iface_type == IuR_Interface) {
return;
}
@@ -3326,8 +3556,7 @@ void dissect_fp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/*************************************/
/* Dissect according to channel type */
- switch (p_fp_info->channel)
- {
+ switch (p_fp_info->channel) {
case CHANNEL_RACH_TDD:
case CHANNEL_RACH_TDD_128:
case CHANNEL_RACH_FDD:
@@ -3399,7 +3628,7 @@ void dissect_fp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case CHANNEL_EDCH:
case CHANNEL_EDCH_COMMON:
dissect_e_dch_channel_info(tvb, pinfo, fp_tree, offset, p_fp_info,
- p_fp_info->channel == CHANNEL_EDCH_COMMON);
+ p_fp_info->channel == CHANNEL_EDCH_COMMON, rlcinf);
break;
default:
@@ -3411,930 +3640,936 @@ void dissect_fp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
void proto_register_fp(void)
{
static hf_register_info hf[] =
- {
- { &hf_fp_release,
- { "Release",
- "fp.release", FT_NONE, BASE_NONE, NULL, 0x0,
- "Release information", HFILL
- }
- },
- { &hf_fp_release_version,
- { "Release Version",
- "fp.release.version", FT_UINT8, BASE_DEC, NULL, 0x0,
- "3GPP Release number", HFILL
- }
- },
- { &hf_fp_release_year,
- { "Release year",
- "fp.release.year", FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_release_month,
- { "Release month",
- "fp.release.month", FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_channel_type,
- { "Channel Type",
- "fp.channel-type", FT_UINT8, BASE_HEX, VALS(channel_type_vals), 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_division,
- { "Division",
- "fp.division", FT_UINT8, BASE_HEX, VALS(division_vals), 0x0,
- "Radio division type", HFILL
- }
- },
- { &hf_fp_direction,
- { "Direction",
- "fp.direction", FT_UINT8, BASE_HEX, VALS(direction_vals), 0x0,
- "Link direction", HFILL
- }
- },
- { &hf_fp_ddi_config,
- { "DDI Config",
- "fp.ddi-config", FT_STRING, BASE_NONE, NULL, 0x0,
- "DDI Config (for E-DCH)", HFILL
- }
- },
- { &hf_fp_ddi_config_ddi,
- { "DDI",
- "fp.ddi-config.ddi", FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_ddi_config_macd_pdu_size,
- { "MACd PDU Size",
- "fp.ddi-config.macd-pdu-size", FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL
- }
- },
-
-
- { &hf_fp_header_crc,
- { "Header CRC",
- "fp.header-crc", FT_UINT8, BASE_HEX, NULL, 0xfe,
- NULL, HFILL
- }
- },
- { &hf_fp_ft,
- { "Frame Type",
- "fp.ft", FT_UINT8, BASE_HEX, VALS(data_control_vals), 0x01,
- NULL, HFILL
- }
- },
- { &hf_fp_cfn,
- { "CFN",
- "fp.cfn", FT_UINT8, BASE_DEC, NULL, 0x0,
- "Connection Frame Number", HFILL
- }
- },
- { &hf_fp_pch_cfn,
- { "CFN (PCH)",
- "fp.pch.cfn", FT_UINT16, BASE_DEC, NULL, 0xfff0,
- "PCH Connection Frame Number", HFILL
- }
- },
- { &hf_fp_pch_toa,
- { "ToA (PCH)",
- "fp.pch.toa", FT_INT24, BASE_DEC, NULL, 0x0,
- "PCH Time of Arrival", HFILL
- }
- },
- { &hf_fp_cfn_control,
- { "CFN control",
- "fp.cfn-control", FT_UINT8, BASE_DEC, NULL, 0x0,
- "Connection Frame Number Control", HFILL
- }
- },
- { &hf_fp_toa,
- { "ToA",
- "fp.toa", FT_INT16, BASE_DEC, NULL, 0x0,
- "Time of arrival (units are 125 microseconds)", HFILL
- }
- },
- { &hf_fp_tb,
- { "TB",
- "fp.tb", FT_BYTES, BASE_NONE, NULL, 0x0,
- "Transport Block", HFILL
- }
- },
- { &hf_fp_chan_zero_tbs,
- { "No TBs for channel",
- "fp.channel-with-zero-tbs", FT_UINT32, BASE_DEC, NULL, 0x0,
- "Channel with 0 TBs", HFILL
- }
- },
- { &hf_fp_tfi,
- { "TFI",
- "fp.tfi", FT_UINT8, BASE_DEC, NULL, 0x0,
- "Transport Format Indicator", HFILL
- }
- },
- { &hf_fp_usch_tfi,
- { "TFI",
- "fp.usch.tfi", FT_UINT8, BASE_DEC, NULL, 0x1f,
- "USCH Transport Format Indicator", HFILL
- }
- },
- { &hf_fp_cpch_tfi,
- { "TFI",
- "fp.cpch.tfi", FT_UINT8, BASE_DEC, NULL, 0x1f,
- "CPCH Transport Format Indicator", HFILL
- }
- },
- { &hf_fp_propagation_delay,
- { "Propagation Delay",
- "fp.propagation-delay", FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_dch_control_frame_type,
- { "Control Frame Type",
- "fp.dch.control.frame-type", FT_UINT8, BASE_HEX, VALS(dch_control_frame_type_vals), 0x0,
- "DCH Control Frame Type", HFILL
- }
- },
- { &hf_fp_dch_rx_timing_deviation,
- { "Rx Timing Deviation",
- "fp.dch.control.rx-timing-deviation", FT_UINT8, BASE_DEC, 0, 0x0,
- "DCH Rx Timing Deviation", HFILL
- }
- },
- { &hf_fp_quality_estimate,
- { "Quality Estimate",
- "fp.dch.quality-estimate", FT_UINT8, BASE_DEC, 0, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_payload_crc,
- { "Payload CRC",
- "fp.payload-crc", FT_UINT16, BASE_HEX, 0, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_common_control_frame_type,
- { "Control Frame Type",
- "fp.common.control.frame-type", FT_UINT8, BASE_HEX, VALS(common_control_frame_type_vals), 0x0,
- "Common Control Frame Type", HFILL
- }
- },
- { &hf_fp_crci[0],
- { "CRCI",
- "fp.crci", FT_UINT8, BASE_HEX, VALS(crci_vals), 0x80,
- "CRC correctness indicator", HFILL
- }
- },
- { &hf_fp_crci[1],
- { "CRCI",
- "fp.crci", FT_UINT8, BASE_HEX, VALS(crci_vals), 0x40,
- "CRC correctness indicator", HFILL
- }
- },
- { &hf_fp_crci[2],
- { "CRCI",
- "fp.crci", FT_UINT8, BASE_HEX, VALS(crci_vals), 0x20,
- "CRC correctness indicator", HFILL
- }
- },
- { &hf_fp_crci[3],
- { "CRCI",
- "fp.crci", FT_UINT8, BASE_HEX, VALS(crci_vals), 0x10,
- "CRC correctness indicator", HFILL
- }
- },
- { &hf_fp_crci[4],
- { "CRCI",
- "fp.crci", FT_UINT8, BASE_HEX, VALS(crci_vals), 0x08,
- "CRC correctness indicator", HFILL
- }
- },
- { &hf_fp_crci[5],
- { "CRCI",
- "fp.crci", FT_UINT8, BASE_HEX, VALS(crci_vals), 0x04,
- "CRC correctness indicator", HFILL
- }
- },
- { &hf_fp_crci[6],
- { "CRCI",
- "fp.crci", FT_UINT8, BASE_HEX, VALS(crci_vals), 0x02,
- "CRC correctness indicator", HFILL
- }
- },
- { &hf_fp_crci[7],
- { "CRCI",
- "fp.crci", FT_UINT8, BASE_HEX, VALS(crci_vals), 0x01,
- "CRC correctness indicator", HFILL
- }
- },
- { &hf_fp_received_sync_ul_timing_deviation,
- { "Received SYNC UL Timing Deviation",
- "fp.rx-sync-ul-timing-deviation", FT_UINT8, BASE_DEC, 0, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_pch_pi,
- { "Paging Indication",
- "fp.pch.pi", FT_UINT8, BASE_DEC, VALS(paging_indication_vals), 0x01,
- "Indicates if the PI Bitmap is present", HFILL
- }
- },
- { &hf_fp_pch_tfi,
- { "TFI",
- "fp.pch.tfi", FT_UINT8, BASE_DEC, 0, 0x1f,
- "PCH Transport Format Indicator", HFILL
- }
- },
- { &hf_fp_fach_tfi,
- { "TFI",
- "fp.fach.tfi", FT_UINT8, BASE_DEC, 0, 0x1f,
- "FACH Transport Format Indicator", HFILL
- }
- },
- { &hf_fp_transmit_power_level,
- { "Transmit Power Level",
- "fp.transmit-power-level", FT_FLOAT, BASE_NONE, 0, 0x0,
- "Transmit Power Level (dB)", HFILL
- }
- },
- { &hf_fp_pdsch_set_id,
- { "PDSCH Set Id",
- "fp.pdsch-set-id", FT_UINT8, BASE_DEC, 0, 0x0,
- "A pointer to the PDSCH Set which shall be used to transmit", HFILL
- }
- },
- { &hf_fp_paging_indication_bitmap,
- { "Paging Indications bitmap",
- "fp.pch.pi-bitmap", FT_NONE, BASE_NONE, NULL, 0x0,
- "Paging Indication bitmap", HFILL
- }
- },
- { &hf_fp_rx_timing_deviation,
- { "Rx Timing Deviation",
- "fp.common.control.rx-timing-deviation", FT_UINT8, BASE_DEC, 0, 0x0,
- "Common Rx Timing Deviation", HFILL
- }
- },
- { &hf_fp_dch_e_rucch_flag,
- { "E-RUCCH Flag",
- "fp.common.control.e-rucch-flag", FT_UINT8, BASE_DEC, VALS(e_rucch_flag_vals), 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_edch_header_crc,
- { "E-DCH Header CRC",
- "fp.edch.header-crc", FT_UINT16, BASE_HEX, 0, 0xfef0,
- NULL, HFILL
- }
- },
- { &hf_fp_edch_fsn,
- { "FSN",
- "fp.edch.fsn", FT_UINT8, BASE_DEC, 0, 0x0f,
- "E-DCH Frame Sequence Number", HFILL
- }
- },
- { &hf_fp_edch_number_of_subframes,
- { "No of subframes",
- "fp.edch.no-of-subframes", FT_UINT8, BASE_DEC, 0, 0x0f,
- "E-DCH Number of subframes", HFILL
- }
- },
- { &hf_fp_edch_harq_retransmissions,
- { "No of HARQ Retransmissions",
- "fp.edch.no-of-harq-retransmissions", FT_UINT8, BASE_DEC, 0, 0x78,
- "E-DCH Number of HARQ retransmissions", HFILL
- }
- },
- { &hf_fp_edch_subframe_number,
- { "Subframe number",
- "fp.edch.subframe-number", FT_UINT8, BASE_DEC, 0, 0x0,
- "E-DCH Subframe number", HFILL
- }
- },
- { &hf_fp_edch_number_of_mac_es_pdus,
- { "Number of Mac-es PDUs",
- "fp.edch.number-of-mac-es-pdus", FT_UINT8, BASE_DEC, 0, 0xf0,
- NULL, HFILL
- }
- },
- { &hf_fp_edch_ddi,
- { "DDI",
- "fp.edch.ddi", FT_UINT8, BASE_DEC, 0, 0x0,
- "E-DCH Data Description Indicator", HFILL
- }
- },
- { &hf_fp_edch_subframe,
- { "Subframe",
- "fp.edch.subframe", FT_STRING, BASE_NONE, NULL, 0x0,
- "EDCH Subframe", HFILL
- }
- },
- { &hf_fp_edch_subframe_header,
- { "Subframe header",
- "fp.edch.subframe-header", FT_STRING, BASE_NONE, NULL, 0x0,
- "EDCH Subframe header", HFILL
- }
- },
- { &hf_fp_edch_number_of_mac_d_pdus,
- { "Number of Mac-d PDUs",
- "fp.edch.number-of-mac-d-pdus", FT_UINT8, BASE_DEC, 0, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_edch_pdu_padding,
- { "Padding",
- "fp.edch-data-padding", FT_UINT8, BASE_DEC, 0, 0xc0,
- "E-DCH padding before PDU", HFILL
- }
- },
- { &hf_fp_edch_tsn,
- { "TSN",
- "fp.edch-tsn", FT_UINT8, BASE_DEC, 0, 0x3f,
- "E-DCH Transmission Sequence Number", HFILL
- }
- },
- { &hf_fp_edch_mac_es_pdu,
- { "MAC-es PDU",
- "fp.edch.mac-es-pdu", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL
- }
- },
-
- { &hf_fp_edch_user_buffer_size,
- { "User Buffer Size",
- "fp.edch.user-buffer-size", FT_UINT24, BASE_DEC, NULL, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_edch_no_macid_sdus,
- { "No of MAC-is SDUs",
- "fp.edch.no-macis-sdus", FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_edch_number_of_mac_is_pdus,
- { "Number of Mac-is PDUs",
- "fp.edch.number-of-mac-is-pdus", FT_UINT8, BASE_DEC, 0, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_edch_e_rnti,
- { "E-RNTI",
- "fp.edch.e-rnti", FT_UINT16, BASE_DEC, 0, 0x0,
- NULL, HFILL
- }
- },
-
- { &hf_fp_edch_macis_descriptors,
- { "MAC-is Descriptors",
- "fp.edch.mac-is.descriptors", FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_edch_macis_lchid,
- { "LCH-ID",
- "fp.edch.mac-is.lchid", FT_UINT8, BASE_HEX, VALS(lchid_vals), 0xf0,
- NULL, HFILL
- }
- },
- { &hf_fp_edch_macis_length,
- { "Length",
- "fp.edch.mac-is.length", FT_UINT16, BASE_DEC, 0, 0x0ffe,
- NULL, HFILL
- }
- },
- { &hf_fp_edch_macis_flag,
- { "Flag",
- "fp.edch.mac-is.lchid", FT_UINT8, BASE_HEX, 0, 0x01,
- "Indicates if another entry follows", HFILL
- }
- },
- { &hf_fp_edch_macis_ss,
- { "SS",
- /* TODO: VALS */
- "fp.edch.mac-is.tsn", FT_UINT8, BASE_HEX, 0, 0xc0,
- "Segmentation Status", HFILL
- }
- },
- { &hf_fp_edch_macis_tsn,
- { "TSN",
- "fp.edch.mac-is.tsn", FT_UINT8, BASE_HEX, 0, 0x3f,
- "Transmission Sequence Number", HFILL
- }
- },
- { &hf_fp_edch_macis_sdu,
- { "MAC-is SDU",
- "fp.edch.mac-is.sdu", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL
- }
- },
-
-
- { &hf_fp_frame_seq_nr,
- { "Frame Seq Nr",
- "fp.frame-seq-nr", FT_UINT8, BASE_DEC, 0, 0xf0,
- "Frame Sequence Number", HFILL
- }
- },
- { &hf_fp_hsdsch_pdu_block_header,
- { "PDU block header",
- "fp.hsdsch.pdu-block-header", FT_STRING, BASE_NONE, NULL, 0x0,
- "HS-DSCH type 2 PDU block header", HFILL
- }
- },
- { &hf_fp_hsdsch_pdu_block,
- { "PDU block",
- "fp.hsdsch.pdu-block", FT_STRING, BASE_NONE, NULL, 0x0,
- "HS-DSCH type 2 PDU block data", HFILL
- }
- },
- { &hf_fp_flush,
- { "Flush",
- "fp.flush", FT_UINT8, BASE_DEC, 0, 0x04,
- "Whether all PDUs for this priority queue should be removed", HFILL
- }
- },
- { &hf_fp_fsn_drt_reset,
- { "FSN-DRT reset",
- "fp.fsn-drt-reset", FT_UINT8, BASE_DEC, 0, 0x02,
- "FSN/DRT Reset Flag", HFILL
- }
- },
- { &hf_fp_drt_indicator,
- { "DRT Indicator",
- "fp.drt-indicator", FT_UINT8, BASE_DEC, 0, 0x01,
- NULL, HFILL
- }
- },
- { &hf_fp_fach_indicator,
- { "FACH Indicator",
- "fp.fach-indicator", FT_UINT8, BASE_DEC, 0, 0x80,
- NULL, HFILL
- }
- },
- { &hf_fp_total_pdu_blocks,
- { "PDU Blocks",
- "fp.pdu_blocks", FT_UINT8, BASE_DEC, 0, 0xf8,
- "Total number of PDU blocks", HFILL
- }
- },
- { &hf_fp_drt,
- { "DRT",
- "fp.drt", FT_UINT16, BASE_DEC, 0, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_hrnti,
- { "HRNTI",
- "fp.hrnti", FT_UINT16, BASE_DEC, 0, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_rach_measurement_result,
- { "RACH Measurement Result",
- "fp.rach-measurement-result", FT_UINT16, BASE_DEC, 0, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_lchid,
- { "Logical Channel ID",
- "fp.lchid", FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_pdu_length_in_block,
- { "PDU length in block",
- "fp.pdu-length-in-block", FT_UINT8, BASE_DEC, 0, 0x0,
- "Length of each PDU in this block in bytes", HFILL
- }
- },
- { &hf_fp_pdus_in_block,
- { "PDUs in block",
- "fp.no-pdus-in-block", FT_UINT8, BASE_DEC, 0, 0x0,
- "Number of PDUs in block", HFILL
- }
- },
- { &hf_fp_cmch_pi,
- { "CmCH-PI",
- "fp.cmch-pi", FT_UINT8, BASE_DEC, 0, 0x0f,
- "Common Transport Channel Priority Indicator", HFILL
- }
- },
- { &hf_fp_user_buffer_size,
- { "User buffer size",
- "fp.user-buffer-size", FT_UINT16, BASE_DEC, 0, 0x0,
- "User buffer size in octets", HFILL
- }
- },
- { &hf_fp_hsdsch_credits,
- { "HS-DSCH Credits",
- "fp.hsdsch-credits", FT_UINT16, BASE_DEC, 0, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_hsdsch_max_macd_pdu_len,
- { "Max MAC-d PDU Length",
- "fp.hsdsch.max-macd-pdu-len", FT_UINT16, BASE_DEC, 0, 0xfff8,
- "Maximum MAC-d PDU Length in bits", HFILL
- }
- },
- { &hf_fp_hsdsch_max_macdc_pdu_len,
- { "Max MAC-d/c PDU Length",
- "fp.hsdsch.max-macdc-pdu-len", FT_UINT16, BASE_DEC, 0, 0x07ff,
- "Maximum MAC-d/c PDU Length in bits", HFILL
- }
- },
- { &hf_fp_hsdsch_interval,
- { "HS-DSCH Interval in milliseconds",
- "fp.hsdsch-interval", FT_UINT8, BASE_DEC, 0, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_hsdsch_calculated_rate,
- { "Calculated rate allocation (bps)",
- "fp.hsdsch-calculated-rate", FT_UINT32, BASE_DEC, 0, 0x0,
- "Calculated rate RNC is allowed to send in bps", HFILL
- }
- },
- { &hf_fp_hsdsch_unlimited_rate,
- { "Unlimited rate",
- "fp.hsdsch-unlimited-rate", FT_NONE, BASE_NONE, 0, 0x0,
- "No restriction on rate at which date may be sent", HFILL
- }
- },
- { &hf_fp_hsdsch_repetition_period,
- { "HS-DSCH Repetition Period",
- "fp.hsdsch-repetition-period", FT_UINT8, BASE_DEC, 0, 0x0,
- "HS-DSCH Repetition Period in milliseconds", HFILL
- }
- },
- { &hf_fp_hsdsch_data_padding,
- { "Padding",
- "fp.hsdsch-data-padding", FT_UINT8, BASE_DEC, 0, 0xf0,
- "HS-DSCH Repetition Period in milliseconds", HFILL
- }
- },
- { &hf_fp_hsdsch_new_ie_flags,
- { "New IEs flags",
- "fp.hsdsch.new-ie-flags", FT_STRING, BASE_NONE, 0, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_hsdsch_new_ie_flag[0],
- { "DRT IE present",
- "fp.hsdsch.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x80,
- NULL, HFILL
- }
- },
- { &hf_fp_hsdsch_new_ie_flag[1],
- { "New IE present",
- "fp.hsdsch.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x40,
- NULL, HFILL
- }
- },
- { &hf_fp_hsdsch_new_ie_flag[2],
- { "New IE present",
- "fp.hsdsch.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x20,
- NULL, HFILL
- }
- },
- { &hf_fp_hsdsch_new_ie_flag[3],
- { "New IE present",
- "fp.hsdsch.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x10,
- NULL, HFILL
- }
- },
- { &hf_fp_hsdsch_new_ie_flag[4],
- { "New IE present",
- "fp.hsdsch.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x08,
- NULL, HFILL
- }
- },
- { &hf_fp_hsdsch_new_ie_flag[5],
- { "New IE present",
- "fp.hsdsch.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x04,
- NULL, HFILL
- }
- },
- { &hf_fp_hsdsch_new_ie_flag[6],
- { "New IE present",
- "fp.hsdsch.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x02,
- NULL, HFILL
- }
- },
- { &hf_fp_hsdsch_new_ie_flag[7],
- { "Another new IE flags byte",
- "fp.hsdsch.new-ie-flags-byte", FT_UINT8, BASE_DEC, 0, 0x01,
- "Another new IE flagsbyte", HFILL
- }
- },
- { &hf_fp_hsdsch_drt,
- { "DRT",
- "fp.hsdsch.drt", FT_UINT8, BASE_DEC, 0, 0xf0,
- "Delay Reference Time", HFILL
- }
- },
- { &hf_fp_hsdsch_entity,
- { "HS-DSCH Entity",
- "fp.hsdsch.entity", FT_UINT8, BASE_DEC, VALS(hsdshc_mac_entity_vals), 0x0,
- "Type of MAC entity for this HS-DSCH channel", HFILL
- }
- },
- { &hf_fp_timing_advance,
- { "Timing advance",
- "fp.timing-advance", FT_UINT8, BASE_DEC, 0, 0x3f,
- "Timing advance in chips", HFILL
- }
- },
- { &hf_fp_num_of_pdu,
- { "Number of PDUs",
- "fp.hsdsch.num-of-pdu", FT_UINT8, BASE_DEC, 0, 0x0,
- "Number of PDUs in the payload", HFILL
- }
- },
- { &hf_fp_mac_d_pdu_len,
- { "MAC-d PDU Length",
- "fp.hsdsch.mac-d-pdu-len", FT_UINT16, BASE_DEC, 0, 0xfff8,
- "MAC-d PDU Length in bits", HFILL
- }
- },
- { &hf_fp_mac_d_pdu,
- { "MAC-d PDU",
- "fp.mac-d-pdu", FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_data,
- { "Data",
- "fp.data", FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_crcis,
- { "CRCIs",
- "fp.crcis", FT_BYTES, BASE_NONE, NULL, 0x0,
- "CRC Indicators for uplink TBs", HFILL
- }
- },
- { &hf_fp_t1,
- { "T1",
- "fp.t1", FT_UINT24, BASE_DEC, NULL, 0x0,
- "RNC frame number indicating time it sends frame", HFILL
- }
- },
- { &hf_fp_t2,
- { "T2",
- "fp.t2", FT_UINT24, BASE_DEC, NULL, 0x0,
- "NodeB frame number indicating time it received DL Sync", HFILL
- }
- },
- { &hf_fp_t3,
- { "T3",
- "fp.t3", FT_UINT24, BASE_DEC, NULL, 0x0,
- "NodeB frame number indicating time it sends frame", HFILL
- }
- },
- { &hf_fp_ul_sir_target,
- { "UL_SIR_TARGET",
- "fp.ul-sir-target", FT_FLOAT, BASE_NONE, 0, 0x0,
- "Value (in dB) of the SIR target to be used by the UL inner loop power control", HFILL
- }
- },
- { &hf_fp_pusch_set_id,
- { "PUSCH Set Id",
- "fp.pusch-set-id", FT_UINT8, BASE_DEC, NULL, 0x0,
- "Identifies PUSCH Set from those configured in NodeB", HFILL
- }
- },
- { &hf_fp_activation_cfn,
- { "Activation CFN",
- "fp.activation-cfn", FT_UINT8, BASE_DEC, NULL, 0x0,
- "Activation Connection Frame Number", HFILL
- }
- },
- { &hf_fp_duration,
- { "Duration (ms)",
- "fp.pusch-set-id", FT_UINT8, BASE_DEC, NULL, 0x0,
- "Duration of the activation period of the PUSCH Set", HFILL
- }
- },
- { &hf_fp_power_offset,
- { "Power offset",
- "fp.power-offset", FT_FLOAT, BASE_NONE, NULL, 0x0,
- "Power offset (in dB)", HFILL
- }
- },
- { &hf_fp_code_number,
- { "Code number",
- "fp.code-number", FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_spreading_factor,
- { "Spreading factor",
- "fp.spreading-factor", FT_UINT8, BASE_DEC, VALS(spreading_factor_vals), 0xf0,
- NULL, HFILL
- }
- },
- { &hf_fp_mc_info,
- { "MC info",
- "fp.mc-info", FT_UINT8, BASE_DEC, NULL, 0x0e,
- NULL, HFILL
- }
- },
- { &hf_fp_rach_new_ie_flags,
- { "New IEs flags",
- "fp.rach.new-ie-flags", FT_STRING, BASE_NONE, 0, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_rach_new_ie_flag_unused[0],
- { "New IE present",
- "fp.rach.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x80,
- NULL, HFILL
- }
- },
- { &hf_fp_rach_new_ie_flag_unused[1],
- { "New IE present",
- "fp.rach.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x40,
- NULL, HFILL
- }
- },
- { &hf_fp_rach_new_ie_flag_unused[2],
- { "New IE present",
- "fp.rach.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x20,
- "New IE present (unused)", HFILL
- }
- },
- { &hf_fp_rach_new_ie_flag_unused[3],
- { "New IE present",
- "fp.rach.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x10,
- "New IE present (unused)", HFILL
- }
- },
- { &hf_fp_rach_new_ie_flag_unused[4],
- { "New IE present",
- "fp.rach.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x08,
- "New IE present (unused)", HFILL
- }
- },
- { &hf_fp_rach_new_ie_flag_unused[5],
- { "New IE present",
- "fp.rach.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x04,
- "New IE present (unused)", HFILL
- }
- },
- { &hf_fp_rach_new_ie_flag_unused[6],
- { "New IE present",
- "fp.rach.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x02,
- "New IE present (unused)", HFILL
- }
- },
- { &hf_fp_rach_cell_portion_id_present,
- { "Cell portion ID present",
- "fp.rach.cell-portion-id-present", FT_UINT8, BASE_DEC, 0, 0x01,
- NULL, HFILL
- }
- },
- { &hf_fp_rach_angle_of_arrival_present,
- { "Angle of arrival present",
- "fp.rach.angle-of-arrival-present", FT_UINT8, BASE_DEC, 0, 0x01,
- NULL, HFILL
- }
- },
- { &hf_fp_rach_ext_propagation_delay_present,
- { "Ext Propagation Delay Present",
- "fp.rach.ext-propagation-delay-present", FT_UINT8, BASE_DEC, 0, 0x02,
- NULL, HFILL
- }
- },
- { &hf_fp_rach_ext_rx_sync_ul_timing_deviation_present,
- { "Ext Received Sync UL Timing Deviation present",
- "fp.rach.ext-rx-sync-ul-timing-deviation-present", FT_UINT8, BASE_DEC, 0, 0x02,
- NULL, HFILL
- }
- },
- { &hf_fp_rach_ext_rx_timing_deviation_present,
- { "Ext Rx Timing Deviation present",
- "fp.rach.ext-rx-timing-deviation-present", FT_UINT8, BASE_DEC, 0, 0x01,
- NULL, HFILL
- }
- },
- { &hf_fp_cell_portion_id,
- { "Cell Portion ID",
- "fp.cell-portion-id", FT_UINT8, BASE_DEC, NULL, 0x3f,
- NULL, HFILL
- }
- },
- { &hf_fp_ext_propagation_delay,
- { "Ext Propagation Delay",
- "fp.ext-propagation-delay", FT_UINT16, BASE_DEC, NULL, 0x03ff,
- NULL, HFILL
- }
- },
- { &hf_fp_angle_of_arrival,
- { "Angle of Arrival",
- "fp.angle-of-arrival", FT_UINT16, BASE_DEC, NULL, 0x03ff,
- NULL, HFILL
- }
- },
- { &hf_fp_ext_received_sync_ul_timing_deviation,
- { "Ext Received SYNC UL Timing Deviation",
- "fp.ext-received-sync-ul-timing-deviation", FT_UINT16, BASE_DEC, NULL, 0x1fff,
- NULL, HFILL
- }
- },
-
-
- { &hf_fp_radio_interface_parameter_update_flag[0],
- { "CFN valid",
- "fp.radio-interface-param.cfn-valid", FT_UINT16, BASE_DEC, 0, 0x0001,
- NULL, HFILL
- }
- },
- { &hf_fp_radio_interface_parameter_update_flag[1],
- { "TPC PO valid",
- "fp.radio-interface-param.tpc-po-valid", FT_UINT16, BASE_DEC, 0, 0x0002,
- NULL, HFILL
- }
- },
- { &hf_fp_radio_interface_parameter_update_flag[2],
- { "DPC mode valid",
- "fp.radio-interface-param.dpc-mode-valid", FT_UINT16, BASE_DEC, 0, 0x0004,
- NULL, HFILL
- }
- },
- { &hf_fp_radio_interface_parameter_update_flag[3],
- { "RL sets indicator valid",
- "fp.radio-interface_param.rl-sets-indicator-valid", FT_UINT16, BASE_DEC, 0, 0x0020,
- NULL, HFILL
- }
- },
- { &hf_fp_radio_interface_parameter_update_flag[4],
- { "MAX_UE_TX_POW valid",
- "fp.radio-interface-param.max-ue-tx-pow-valid", FT_UINT16, BASE_DEC, 0, 0x0040,
- "MAX UE TX POW valid", HFILL
- }
- },
- { &hf_fp_dpc_mode,
- { "DPC Mode",
- "fp.dpc-mode", FT_UINT8, BASE_DEC, NULL, 0x20,
- "DPC Mode to be applied in the uplink", HFILL
- }
- },
- { &hf_fp_tpc_po,
- { "TPC PO",
- "fp.tpc-po", FT_UINT8, BASE_DEC, NULL, 0x1f,
- NULL, HFILL
- }
- },
- { &hf_fp_multiple_rl_set_indicator,
- { "Multiple RL sets indicator",
- "fp.multiple-rl-sets-indicator", FT_UINT8, BASE_DEC, NULL, 0x80,
- NULL, HFILL
- }
- },
- { &hf_fp_max_ue_tx_pow,
- { "MAX_UE_TX_POW",
- "fp.max-ue-tx-pow", FT_INT8, BASE_DEC, NULL, 0x0,
- "Max UE TX POW (dBm)", HFILL
- }
- },
- { &hf_fp_congestion_status,
- { "Congestion Status",
- "fp.congestion-status", FT_UINT8, BASE_DEC, VALS(congestion_status_vals), 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_e_rucch_present,
- { "E-RUCCH Present",
- "fp.erucch-present", FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_extended_bits_present,
- { "Extended Bits Present",
- "fp.extended-bits-present", FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_extended_bits,
- { "Extended Bits",
- "fp.extended-bits", FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL
- }
- },
- { &hf_fp_spare_extension,
- { "Spare Extension",
- "fp.spare-extension", FT_NONE, BASE_NONE, NULL, 0x0,
- NULL, HFILL
- }
- },
-
- };
+ {
+ { &hf_fp_release,
+ { "Release",
+ "fp.release", FT_NONE, BASE_NONE, NULL, 0x0,
+ "Release information", HFILL
+ }
+ },
+ { &hf_fp_release_version,
+ { "Release Version",
+ "fp.release.version", FT_UINT8, BASE_DEC, NULL, 0x0,
+ "3GPP Release number", HFILL
+ }
+ },
+ { &hf_fp_release_year,
+ { "Release year",
+ "fp.release.year", FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_release_month,
+ { "Release month",
+ "fp.release.month", FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_channel_type,
+ { "Channel Type",
+ "fp.channel-type", FT_UINT8, BASE_HEX, VALS(channel_type_vals), 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_division,
+ { "Division",
+ "fp.division", FT_UINT8, BASE_HEX, VALS(division_vals), 0x0,
+ "Radio division type", HFILL
+ }
+ },
+ { &hf_fp_direction,
+ { "Direction",
+ "fp.direction", FT_UINT8, BASE_HEX, VALS(direction_vals), 0x0,
+ "Link direction", HFILL
+ }
+ },
+ { &hf_fp_ddi_config,
+ { "DDI Config",
+ "fp.ddi-config", FT_STRING, BASE_NONE, NULL, 0x0,
+ "DDI Config (for E-DCH)", HFILL
+ }
+ },
+ { &hf_fp_ddi_config_ddi,
+ { "DDI",
+ "fp.ddi-config.ddi", FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_ddi_config_macd_pdu_size,
+ { "MACd PDU Size",
+ "fp.ddi-config.macd-pdu-size", FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+
+
+ { &hf_fp_header_crc,
+ { "Header CRC",
+ "fp.header-crc", FT_UINT8, BASE_HEX, NULL, 0xfe,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_ft,
+ { "Frame Type",
+ "fp.ft", FT_UINT8, BASE_HEX, VALS(data_control_vals), 0x01,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_cfn,
+ { "CFN",
+ "fp.cfn", FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Connection Frame Number", HFILL
+ }
+ },
+ { &hf_fp_pch_cfn,
+ { "CFN (PCH)",
+ "fp.pch.cfn", FT_UINT16, BASE_DEC, NULL, 0xfff0,
+ "PCH Connection Frame Number", HFILL
+ }
+ },
+ { &hf_fp_pch_toa,
+ { "ToA (PCH)",
+ "fp.pch.toa", FT_INT24, BASE_DEC, NULL, 0x0,
+ "PCH Time of Arrival", HFILL
+ }
+ },
+ { &hf_fp_cfn_control,
+ { "CFN control",
+ "fp.cfn-control", FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Connection Frame Number Control", HFILL
+ }
+ },
+ { &hf_fp_toa,
+ { "ToA",
+ "fp.toa", FT_INT16, BASE_DEC, NULL, 0x0,
+ "Time of arrival (units are 125 microseconds)", HFILL
+ }
+ },
+ { &hf_fp_tb,
+ { "TB",
+ "fp.tb", FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Transport Block", HFILL
+ }
+ },
+ { &hf_fp_chan_zero_tbs,
+ { "No TBs for channel",
+ "fp.channel-with-zero-tbs", FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Channel with 0 TBs", HFILL
+ }
+ },
+ { &hf_fp_tfi,
+ { "TFI",
+ "fp.tfi", FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Transport Format Indicator", HFILL
+ }
+ },
+ { &hf_fp_usch_tfi,
+ { "TFI",
+ "fp.usch.tfi", FT_UINT8, BASE_DEC, NULL, 0x1f,
+ "USCH Transport Format Indicator", HFILL
+ }
+ },
+ { &hf_fp_cpch_tfi,
+ { "TFI",
+ "fp.cpch.tfi", FT_UINT8, BASE_DEC, NULL, 0x1f,
+ "CPCH Transport Format Indicator", HFILL
+ }
+ },
+ { &hf_fp_propagation_delay,
+ { "Propagation Delay",
+ "fp.propagation-delay", FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_dch_control_frame_type,
+ { "Control Frame Type",
+ "fp.dch.control.frame-type", FT_UINT8, BASE_HEX, VALS(dch_control_frame_type_vals), 0x0,
+ "DCH Control Frame Type", HFILL
+ }
+ },
+ { &hf_fp_dch_rx_timing_deviation,
+ { "Rx Timing Deviation",
+ "fp.dch.control.rx-timing-deviation", FT_UINT8, BASE_DEC, 0, 0x0,
+ "DCH Rx Timing Deviation", HFILL
+ }
+ },
+ { &hf_fp_quality_estimate,
+ { "Quality Estimate",
+ "fp.dch.quality-estimate", FT_UINT8, BASE_DEC, 0, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_payload_crc,
+ { "Payload CRC",
+ "fp.payload-crc", FT_UINT16, BASE_HEX, 0, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_common_control_frame_type,
+ { "Control Frame Type",
+ "fp.common.control.frame-type", FT_UINT8, BASE_HEX, VALS(common_control_frame_type_vals), 0x0,
+ "Common Control Frame Type", HFILL
+ }
+ },
+ { &hf_fp_crci[0],
+ { "CRCI",
+ "fp.crci", FT_UINT8, BASE_HEX, VALS(crci_vals), 0x80,
+ "CRC correctness indicator", HFILL
+ }
+ },
+ { &hf_fp_crci[1],
+ { "CRCI",
+ "fp.crci", FT_UINT8, BASE_HEX, VALS(crci_vals), 0x40,
+ "CRC correctness indicator", HFILL
+ }
+ },
+ { &hf_fp_crci[2],
+ { "CRCI",
+ "fp.crci", FT_UINT8, BASE_HEX, VALS(crci_vals), 0x20,
+ "CRC correctness indicator", HFILL
+ }
+ },
+ { &hf_fp_crci[3],
+ { "CRCI",
+ "fp.crci", FT_UINT8, BASE_HEX, VALS(crci_vals), 0x10,
+ "CRC correctness indicator", HFILL
+ }
+ },
+ { &hf_fp_crci[4],
+ { "CRCI",
+ "fp.crci", FT_UINT8, BASE_HEX, VALS(crci_vals), 0x08,
+ "CRC correctness indicator", HFILL
+ }
+ },
+ { &hf_fp_crci[5],
+ { "CRCI",
+ "fp.crci", FT_UINT8, BASE_HEX, VALS(crci_vals), 0x04,
+ "CRC correctness indicator", HFILL
+ }
+ },
+ { &hf_fp_crci[6],
+ { "CRCI",
+ "fp.crci", FT_UINT8, BASE_HEX, VALS(crci_vals), 0x02,
+ "CRC correctness indicator", HFILL
+ }
+ },
+ { &hf_fp_crci[7],
+ { "CRCI",
+ "fp.crci", FT_UINT8, BASE_HEX, VALS(crci_vals), 0x01,
+ "CRC correctness indicator", HFILL
+ }
+ },
+ { &hf_fp_received_sync_ul_timing_deviation,
+ { "Received SYNC UL Timing Deviation",
+ "fp.rx-sync-ul-timing-deviation", FT_UINT8, BASE_DEC, 0, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_pch_pi,
+ { "Paging Indication",
+ "fp.pch.pi", FT_UINT8, BASE_DEC, VALS(paging_indication_vals), 0x01,
+ "Indicates if the PI Bitmap is present", HFILL
+ }
+ },
+ { &hf_fp_pch_tfi,
+ { "TFI",
+ "fp.pch.tfi", FT_UINT8, BASE_DEC, 0, 0x1f,
+ "PCH Transport Format Indicator", HFILL
+ }
+ },
+ { &hf_fp_fach_tfi,
+ { "TFI",
+ "fp.fach.tfi", FT_UINT8, BASE_DEC, 0, 0x1f,
+ "FACH Transport Format Indicator", HFILL
+ }
+ },
+ { &hf_fp_transmit_power_level,
+ { "Transmit Power Level",
+ "fp.transmit-power-level", FT_FLOAT, BASE_NONE, 0, 0x0,
+ "Transmit Power Level (dB)", HFILL
+ }
+ },
+ { &hf_fp_pdsch_set_id,
+ { "PDSCH Set Id",
+ "fp.pdsch-set-id", FT_UINT8, BASE_DEC, 0, 0x0,
+ "A pointer to the PDSCH Set which shall be used to transmit", HFILL
+ }
+ },
+ { &hf_fp_paging_indication_bitmap,
+ { "Paging Indications bitmap",
+ "fp.pch.pi-bitmap", FT_NONE, BASE_NONE, NULL, 0x0,
+ "Paging Indication bitmap", HFILL
+ }
+ },
+ { &hf_fp_rx_timing_deviation,
+ { "Rx Timing Deviation",
+ "fp.common.control.rx-timing-deviation", FT_UINT8, BASE_DEC, 0, 0x0,
+ "Common Rx Timing Deviation", HFILL
+ }
+ },
+ { &hf_fp_dch_e_rucch_flag,
+ { "E-RUCCH Flag",
+ "fp.common.control.e-rucch-flag", FT_UINT8, BASE_DEC, VALS(e_rucch_flag_vals), 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_edch_header_crc,
+ { "E-DCH Header CRC",
+ "fp.edch.header-crc", FT_UINT16, BASE_HEX, 0, 0xfef0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_edch_fsn,
+ { "FSN",
+ "fp.edch.fsn", FT_UINT8, BASE_DEC, 0, 0x0f,
+ "E-DCH Frame Sequence Number", HFILL
+ }
+ },
+ { &hf_fp_edch_number_of_subframes,
+ { "No of subframes",
+ "fp.edch.no-of-subframes", FT_UINT8, BASE_DEC, 0, 0x0f,
+ "E-DCH Number of subframes", HFILL
+ }
+ },
+ { &hf_fp_edch_harq_retransmissions,
+ { "No of HARQ Retransmissions",
+ "fp.edch.no-of-harq-retransmissions", FT_UINT8, BASE_DEC, 0, 0x78,
+ "E-DCH Number of HARQ retransmissions", HFILL
+ }
+ },
+ { &hf_fp_edch_subframe_number,
+ { "Subframe number",
+ "fp.edch.subframe-number", FT_UINT8, BASE_DEC, 0, 0x0,
+ "E-DCH Subframe number", HFILL
+ }
+ },
+ { &hf_fp_edch_number_of_mac_es_pdus,
+ { "Number of Mac-es PDUs",
+ "fp.edch.number-of-mac-es-pdus", FT_UINT8, BASE_DEC, 0, 0xf0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_edch_ddi,
+ { "DDI",
+ "fp.edch.ddi", FT_UINT8, BASE_DEC, 0, 0x0,
+ "E-DCH Data Description Indicator", HFILL
+ }
+ },
+ { &hf_fp_edch_subframe,
+ { "Subframe",
+ "fp.edch.subframe", FT_STRING, BASE_NONE, NULL, 0x0,
+ "EDCH Subframe", HFILL
+ }
+ },
+ { &hf_fp_edch_subframe_header,
+ { "Subframe header",
+ "fp.edch.subframe-header", FT_STRING, BASE_NONE, NULL, 0x0,
+ "EDCH Subframe header", HFILL
+ }
+ },
+ { &hf_fp_edch_number_of_mac_d_pdus,
+ { "Number of Mac-d PDUs",
+ "fp.edch.number-of-mac-d-pdus", FT_UINT8, BASE_DEC, 0, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_edch_pdu_padding,
+ { "Padding",
+ "fp.edch-data-padding", FT_UINT8, BASE_DEC, 0, 0xc0,
+ "E-DCH padding before PDU", HFILL
+ }
+ },
+ { &hf_fp_edch_tsn,
+ { "TSN",
+ "fp.edch-tsn", FT_UINT8, BASE_DEC, 0, 0x3f,
+ "E-DCH Transmission Sequence Number", HFILL
+ }
+ },
+ { &hf_fp_edch_mac_es_pdu,
+ { "MAC-es PDU",
+ "fp.edch.mac-es-pdu", FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+
+ { &hf_fp_edch_user_buffer_size,
+ { "User Buffer Size",
+ "fp.edch.user-buffer-size", FT_UINT24, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_edch_no_macid_sdus,
+ { "No of MAC-is SDUs",
+ "fp.edch.no-macis-sdus", FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_edch_number_of_mac_is_pdus,
+ { "Number of Mac-is PDUs",
+ "fp.edch.number-of-mac-is-pdus", FT_UINT8, BASE_DEC, 0, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_edch_e_rnti,
+ { "E-RNTI",
+ "fp.edch.e-rnti", FT_UINT16, BASE_DEC, 0, 0x0,
+ NULL, HFILL
+ }
+ },
+
+ { &hf_fp_edch_macis_descriptors,
+ { "MAC-is Descriptors",
+ "fp.edch.mac-is.descriptors", FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_edch_macis_lchid,
+ { "LCH-ID",
+ "fp.edch.mac-is.lchid", FT_UINT8, BASE_HEX, VALS(lchid_vals), 0xf0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_edch_macis_length,
+ { "Length",
+ "fp.edch.mac-is.length", FT_UINT16, BASE_DEC, 0, 0x0ffe,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_edch_macis_flag,
+ { "Flag",
+ "fp.edch.mac-is.lchid", FT_UINT8, BASE_HEX, 0, 0x01,
+ "Indicates if another entry follows", HFILL
+ }
+ },
+ { &hf_fp_edch_macis_ss,
+ { "SS",
+ /* TODO: VALS */
+ "fp.edch.mac-is.tsn", FT_UINT8, BASE_HEX, 0, 0xc0,
+ "Segmentation Status", HFILL
+ }
+ },
+ { &hf_fp_edch_macis_tsn,
+ { "TSN",
+ "fp.edch.mac-is.tsn", FT_UINT8, BASE_HEX, 0, 0x3f,
+ "Transmission Sequence Number", HFILL
+ }
+ },
+ { &hf_fp_edch_macis_sdu,
+ { "MAC-is SDU",
+ "fp.edch.mac-is.sdu", FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+
+
+ { &hf_fp_frame_seq_nr,
+ { "Frame Seq Nr",
+ "fp.frame-seq-nr", FT_UINT8, BASE_DEC, 0, 0xf0,
+ "Frame Sequence Number", HFILL
+ }
+ },
+ { &hf_fp_hsdsch_pdu_block_header,
+ { "PDU block header",
+ "fp.hsdsch.pdu-block-header", FT_STRING, BASE_NONE, NULL, 0x0,
+ "HS-DSCH type 2 PDU block header", HFILL
+ }
+ },
+ { &hf_fp_hsdsch_pdu_block,
+ { "PDU block",
+ "fp.hsdsch.pdu-block", FT_STRING, BASE_NONE, NULL, 0x0,
+ "HS-DSCH type 2 PDU block data", HFILL
+ }
+ },
+ { &hf_fp_flush,
+ { "Flush",
+ "fp.flush", FT_UINT8, BASE_DEC, 0, 0x04,
+ "Whether all PDUs for this priority queue should be removed", HFILL
+ }
+ },
+ { &hf_fp_fsn_drt_reset,
+ { "FSN-DRT reset",
+ "fp.fsn-drt-reset", FT_UINT8, BASE_DEC, 0, 0x02,
+ "FSN/DRT Reset Flag", HFILL
+ }
+ },
+ { &hf_fp_drt_indicator,
+ { "DRT Indicator",
+ "fp.drt-indicator", FT_UINT8, BASE_DEC, 0, 0x01,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_fach_indicator,
+ { "FACH Indicator",
+ "fp.fach-indicator", FT_UINT8, BASE_DEC, 0, 0x80,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_total_pdu_blocks,
+ { "PDU Blocks",
+ "fp.pdu_blocks", FT_UINT8, BASE_DEC, 0, 0xf8,
+ "Total number of PDU blocks", HFILL
+ }
+ },
+ { &hf_fp_drt,
+ { "DelayRefTime",
+ "fp.drt", FT_UINT16, BASE_DEC, 0, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_hrnti,
+ { "HRNTI",
+ "fp.hrnti", FT_UINT16, BASE_DEC, 0, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_rach_measurement_result,
+ { "RACH Measurement Result",
+ "fp.rach-measurement-result", FT_UINT16, BASE_DEC, 0, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_lchid,
+ { "Logical Channel ID",
+ "fp.lchid", FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_pdu_length_in_block,
+ { "PDU length in block",
+ "fp.pdu-length-in-block", FT_UINT8, BASE_DEC, 0, 0x0,
+ "Length of each PDU in this block in bytes", HFILL
+ }
+ },
+ { &hf_fp_pdus_in_block,
+ { "PDUs in block",
+ "fp.no-pdus-in-block", FT_UINT8, BASE_DEC, 0, 0x0,
+ "Number of PDUs in block", HFILL
+ }
+ },
+ { &hf_fp_cmch_pi,
+ { "CmCH-PI",
+ "fp.cmch-pi", FT_UINT8, BASE_DEC, 0, 0x0f,
+ "Common Transport Channel Priority Indicator", HFILL
+ }
+ },
+ { &hf_fp_user_buffer_size,
+ { "User buffer size",
+ "fp.user-buffer-size", FT_UINT16, BASE_DEC, 0, 0x0,
+ "User buffer size in octets", HFILL
+ }
+ },
+ { &hf_fp_hsdsch_credits,
+ { "HS-DSCH Credits",
+ "fp.hsdsch-credits", FT_UINT16, BASE_DEC, 0, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_hsdsch_max_macd_pdu_len,
+ { "Max MAC-d PDU Length",
+ "fp.hsdsch.max-macd-pdu-len", FT_UINT16, BASE_DEC, 0, 0xfff8,
+ "Maximum MAC-d PDU Length in bits", HFILL
+ }
+ },
+ { &hf_fp_hsdsch_max_macdc_pdu_len,
+ { "Max MAC-d/c PDU Length",
+ "fp.hsdsch.max-macdc-pdu-len", FT_UINT16, BASE_DEC, 0, 0x07ff,
+ "Maximum MAC-d/c PDU Length in bits", HFILL
+ }
+ },
+ { &hf_fp_hsdsch_interval,
+ { "HS-DSCH Interval in milliseconds",
+ "fp.hsdsch-interval", FT_UINT8, BASE_DEC, 0, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_hsdsch_calculated_rate,
+ { "Calculated rate allocation (bps)",
+ "fp.hsdsch-calculated-rate", FT_UINT32, BASE_DEC, 0, 0x0,
+ "Calculated rate RNC is allowed to send in bps", HFILL
+ }
+ },
+ { &hf_fp_hsdsch_unlimited_rate,
+ { "Unlimited rate",
+ "fp.hsdsch-unlimited-rate", FT_NONE, BASE_NONE, 0, 0x0,
+ "No restriction on rate at which date may be sent", HFILL
+ }
+ },
+ { &hf_fp_hsdsch_repetition_period,
+ { "HS-DSCH Repetition Period",
+ "fp.hsdsch-repetition-period", FT_UINT8, BASE_DEC, 0, 0x0,
+ "HS-DSCH Repetition Period in milliseconds", HFILL
+ }
+ },
+ { &hf_fp_hsdsch_data_padding,
+ { "Padding",
+ "fp.hsdsch-data-padding", FT_UINT8, BASE_DEC, 0, 0xf0,
+ "HS-DSCH Repetition Period in milliseconds", HFILL
+ }
+ },
+ { &hf_fp_hsdsch_new_ie_flags,
+ { "New IEs flags",
+ "fp.hsdsch.new-ie-flags", FT_STRING, BASE_NONE, 0, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_hsdsch_new_ie_flag[0],
+ { "DRT IE present",
+ "fp.hsdsch.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x80,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_hsdsch_new_ie_flag[1],
+ { "New IE present",
+ "fp.hsdsch.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x40,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_hsdsch_new_ie_flag[2],
+ { "New IE present",
+ "fp.hsdsch.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x20,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_hsdsch_new_ie_flag[3],
+ { "New IE present",
+ "fp.hsdsch.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x10,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_hsdsch_new_ie_flag[4],
+ { "New IE present",
+ "fp.hsdsch.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x08,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_hsdsch_new_ie_flag[5],
+ { "New IE present",
+ "fp.hsdsch.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x04,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_hsdsch_new_ie_flag[6],
+ { "New IE present",
+ "fp.hsdsch.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x02,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_hsdsch_new_ie_flag[7],
+ { "Another new IE flags byte",
+ "fp.hsdsch.new-ie-flags-byte", FT_UINT8, BASE_DEC, 0, 0x01,
+ "Another new IE flagsbyte", HFILL
+ }
+ },
+ { &hf_fp_hsdsch_drt,
+ { "DRT",
+ "fp.hsdsch.drt", FT_UINT8, BASE_DEC, 0, 0xf0,
+ "Delay Reference Time", HFILL
+ }
+ },
+ { &hf_fp_hsdsch_entity,
+ { "HS-DSCH Entity",
+ "fp.hsdsch.entity", FT_UINT8, BASE_DEC, VALS(hsdshc_mac_entity_vals), 0x0,
+ "Type of MAC entity for this HS-DSCH channel", HFILL
+ }
+ },
+ { &hf_fp_timing_advance,
+ { "Timing advance",
+ "fp.timing-advance", FT_UINT8, BASE_DEC, 0, 0x3f,
+ "Timing advance in chips", HFILL
+ }
+ },
+ { &hf_fp_num_of_pdu,
+ { "Number of PDUs",
+ "fp.hsdsch.num-of-pdu", FT_UINT8, BASE_DEC, 0, 0x0,
+ "Number of PDUs in the payload", HFILL
+ }
+ },
+ { &hf_fp_mac_d_pdu_len,
+ { "MAC-d PDU Length",
+ "fp.hsdsch.mac-d-pdu-len", FT_UINT16, BASE_DEC, 0, 0xfff8,
+ "MAC-d PDU Length in bits", HFILL
+ }
+ },
+ { &hf_fp_mac_d_pdu,
+ { "MAC-d PDU",
+ "fp.mac-d-pdu", FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_data,
+ { "Data",
+ "fp.data", FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_crcis,
+ { "CRCIs",
+ "fp.crcis", FT_BYTES, BASE_NONE, NULL, 0x0,
+ "CRC Indicators for uplink TBs", HFILL
+ }
+ },
+ { &hf_fp_t1,
+ { "T1",
+ "fp.t1", FT_UINT24, BASE_DEC, NULL, 0x0,
+ "RNC frame number indicating time it sends frame", HFILL
+ }
+ },
+ { &hf_fp_t2,
+ { "T2",
+ "fp.t2", FT_UINT24, BASE_DEC, NULL, 0x0,
+ "NodeB frame number indicating time it received DL Sync", HFILL
+ }
+ },
+ { &hf_fp_t3,
+ { "T3",
+ "fp.t3", FT_UINT24, BASE_DEC, NULL, 0x0,
+ "NodeB frame number indicating time it sends frame", HFILL
+ }
+ },
+ { &hf_fp_ul_sir_target,
+ { "UL_SIR_TARGET",
+ "fp.ul-sir-target", FT_FLOAT, BASE_NONE, 0, 0x0,
+ "Value (in dB) of the SIR target to be used by the UL inner loop power control", HFILL
+ }
+ },
+ { &hf_fp_pusch_set_id,
+ { "PUSCH Set Id",
+ "fp.pusch-set-id", FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Identifies PUSCH Set from those configured in NodeB", HFILL
+ }
+ },
+ { &hf_fp_activation_cfn,
+ { "Activation CFN",
+ "fp.activation-cfn", FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Activation Connection Frame Number", HFILL
+ }
+ },
+ { &hf_fp_duration,
+ { "Duration (ms)",
+ "fp.pusch-set-id", FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Duration of the activation period of the PUSCH Set", HFILL
+ }
+ },
+ { &hf_fp_power_offset,
+ { "Power offset",
+ "fp.power-offset", FT_FLOAT, BASE_NONE, NULL, 0x0,
+ "Power offset (in dB)", HFILL
+ }
+ },
+ { &hf_fp_code_number,
+ { "Code number",
+ "fp.code-number", FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_spreading_factor,
+ { "Spreading factor",
+ "fp.spreading-factor", FT_UINT8, BASE_DEC, VALS(spreading_factor_vals), 0xf0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_mc_info,
+ { "MC info",
+ "fp.mc-info", FT_UINT8, BASE_DEC, NULL, 0x0e,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_rach_new_ie_flags,
+ { "New IEs flags",
+ "fp.rach.new-ie-flags", FT_STRING, BASE_NONE, 0, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_rach_new_ie_flag_unused[0],
+ { "New IE present",
+ "fp.rach.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x80,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_rach_new_ie_flag_unused[1],
+ { "New IE present",
+ "fp.rach.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x40,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_rach_new_ie_flag_unused[2],
+ { "New IE present",
+ "fp.rach.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x20,
+ "New IE present (unused)", HFILL
+ }
+ },
+ { &hf_fp_rach_new_ie_flag_unused[3],
+ { "New IE present",
+ "fp.rach.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x10,
+ "New IE present (unused)", HFILL
+ }
+ },
+ { &hf_fp_rach_new_ie_flag_unused[4],
+ { "New IE present",
+ "fp.rach.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x08,
+ "New IE present (unused)", HFILL
+ }
+ },
+ { &hf_fp_rach_new_ie_flag_unused[5],
+ { "New IE present",
+ "fp.rach.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x04,
+ "New IE present (unused)", HFILL
+ }
+ },
+ { &hf_fp_rach_new_ie_flag_unused[6],
+ { "New IE present",
+ "fp.rach.new-ie-flag", FT_UINT8, BASE_DEC, 0, 0x02,
+ "New IE present (unused)", HFILL
+ }
+ },
+ { &hf_fp_rach_cell_portion_id_present,
+ { "Cell portion ID present",
+ "fp.rach.cell-portion-id-present", FT_UINT8, BASE_DEC, 0, 0x01,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_rach_angle_of_arrival_present,
+ { "Angle of arrival present",
+ "fp.rach.angle-of-arrival-present", FT_UINT8, BASE_DEC, 0, 0x01,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_rach_ext_propagation_delay_present,
+ { "Ext Propagation Delay Present",
+ "fp.rach.ext-propagation-delay-present", FT_UINT8, BASE_DEC, 0, 0x02,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_rach_ext_rx_sync_ul_timing_deviation_present,
+ { "Ext Received Sync UL Timing Deviation present",
+ "fp.rach.ext-rx-sync-ul-timing-deviation-present", FT_UINT8, BASE_DEC, 0, 0x02,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_rach_ext_rx_timing_deviation_present,
+ { "Ext Rx Timing Deviation present",
+ "fp.rach.ext-rx-timing-deviation-present", FT_UINT8, BASE_DEC, 0, 0x01,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_cell_portion_id,
+ { "Cell Portion ID",
+ "fp.cell-portion-id", FT_UINT8, BASE_DEC, NULL, 0x3f,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_ext_propagation_delay,
+ { "Ext Propagation Delay",
+ "fp.ext-propagation-delay", FT_UINT16, BASE_DEC, NULL, 0x03ff,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_angle_of_arrival,
+ { "Angle of Arrival",
+ "fp.angle-of-arrival", FT_UINT16, BASE_DEC, NULL, 0x03ff,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_ext_received_sync_ul_timing_deviation,
+ { "Ext Received SYNC UL Timing Deviation",
+ "fp.ext-received-sync-ul-timing-deviation", FT_UINT16, BASE_DEC, NULL, 0x1fff,
+ NULL, HFILL
+ }
+ },
+
+
+ { &hf_fp_radio_interface_parameter_update_flag[0],
+ { "CFN valid",
+ "fp.radio-interface-param.cfn-valid", FT_UINT16, BASE_DEC, 0, 0x0001,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_radio_interface_parameter_update_flag[1],
+ { "TPC PO valid",
+ "fp.radio-interface-param.tpc-po-valid", FT_UINT16, BASE_DEC, 0, 0x0002,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_radio_interface_parameter_update_flag[2],
+ { "DPC mode valid",
+ "fp.radio-interface-param.dpc-mode-valid", FT_UINT16, BASE_DEC, 0, 0x0004,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_radio_interface_parameter_update_flag[3],
+ { "RL sets indicator valid",
+ "fp.radio-interface_param.rl-sets-indicator-valid", FT_UINT16, BASE_DEC, 0, 0x0020,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_radio_interface_parameter_update_flag[4],
+ { "MAX_UE_TX_POW valid",
+ "fp.radio-interface-param.max-ue-tx-pow-valid", FT_UINT16, BASE_DEC, 0, 0x0040,
+ "MAX UE TX POW valid", HFILL
+ }
+ },
+ { &hf_fp_dpc_mode,
+ { "DPC Mode",
+ "fp.dpc-mode", FT_UINT8, BASE_DEC, NULL, 0x20,
+ "DPC Mode to be applied in the uplink", HFILL
+ }
+ },
+ { &hf_fp_tpc_po,
+ { "TPC PO",
+ "fp.tpc-po", FT_UINT8, BASE_DEC, NULL, 0x1f,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_multiple_rl_set_indicator,
+ { "Multiple RL sets indicator",
+ "fp.multiple-rl-sets-indicator", FT_UINT8, BASE_DEC, NULL, 0x80,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_max_ue_tx_pow,
+ { "MAX_UE_TX_POW",
+ "fp.max-ue-tx-pow", FT_INT8, BASE_DEC, NULL, 0x0,
+ "Max UE TX POW (dBm)", HFILL
+ }
+ },
+ { &hf_fp_congestion_status,
+ { "Congestion Status",
+ "fp.congestion-status", FT_UINT8, BASE_DEC, VALS(congestion_status_vals), 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_e_rucch_present,
+ { "E-RUCCH Present",
+ "fp.erucch-present", FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_extended_bits_present,
+ { "Extended Bits Present",
+ "fp.extended-bits-present", FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_extended_bits,
+ { "Extended Bits",
+ "fp.extended-bits", FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_spare_extension,
+ { "Spare Extension",
+ "fp.spare-extension", FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_fp_ul_setup_frame,
+ { "UL setup frame",
+ "fp.ul.setup_frame", FT_FRAMENUM, BASE_NONE, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+
+ };
static gint *ett[] =
@@ -4384,11 +4619,11 @@ void proto_register_fp(void)
void proto_reg_handoff_fp(void)
{
- mac_fdd_rach_handle = find_dissector("mac.fdd.rach");
- mac_fdd_fach_handle = find_dissector("mac.fdd.fach");
- mac_fdd_pch_handle = find_dissector("mac.fdd.pch");
- mac_fdd_dch_handle = find_dissector("mac.fdd.dch");
- mac_fdd_edch_handle = find_dissector("mac.fdd.edch");
+ mac_fdd_rach_handle = find_dissector("mac.fdd.rach");
+ mac_fdd_fach_handle = find_dissector("mac.fdd.fach");
+ mac_fdd_pch_handle = find_dissector("mac.fdd.pch");
+ mac_fdd_dch_handle = find_dissector("mac.fdd.dch");
+ mac_fdd_edch_handle = find_dissector("mac.fdd.edch");
mac_fdd_hsdsch_handle = find_dissector("mac.fdd.hsdsch");
heur_dissector_add("udp", heur_dissect_fp, proto_fp);
diff --git a/epan/dissectors/packet-umts_fp.h b/epan/dissectors/packet-umts_fp.h
index 030318db5a..b23c3fc1cc 100644
--- a/epan/dissectors/packet-umts_fp.h
+++ b/epan/dissectors/packet-umts_fp.h
@@ -23,25 +23,25 @@
*/
/* Channel types */
-#define CHANNEL_RACH_FDD 1
-#define CHANNEL_RACH_TDD 2
-#define CHANNEL_FACH_FDD 3
-#define CHANNEL_FACH_TDD 4
-#define CHANNEL_DSCH_FDD 5
-#define CHANNEL_DSCH_TDD 6
-#define CHANNEL_USCH_TDD_384 8
-#define CHANNEL_USCH_TDD_128 24
-#define CHANNEL_PCH 9
-#define CHANNEL_CPCH 10
-#define CHANNEL_BCH 11
-#define CHANNEL_DCH 12
-#define CHANNEL_HSDSCH 13
-#define CHANNEL_IUR_CPCHF 14
-#define CHANNEL_IUR_FACH 15
-#define CHANNEL_IUR_DSCH 16
-#define CHANNEL_EDCH 17
-#define CHANNEL_RACH_TDD_128 18
-#define CHANNEL_HSDSCH_COMMON 19
+#define CHANNEL_RACH_FDD 1
+#define CHANNEL_RACH_TDD 2
+#define CHANNEL_FACH_FDD 3
+#define CHANNEL_FACH_TDD 4
+#define CHANNEL_DSCH_FDD 5 /* DSCH Downlink Shared Channel */
+#define CHANNEL_DSCH_TDD 6
+#define CHANNEL_USCH_TDD_384 8
+#define CHANNEL_USCH_TDD_128 24
+#define CHANNEL_PCH 9
+#define CHANNEL_CPCH 10
+#define CHANNEL_BCH 11
+#define CHANNEL_DCH 12 /* DCH Dedicated Transport Channel */
+#define CHANNEL_HSDSCH 13 /* HS-DSCH - High Speed Downlink Shared Channel */
+#define CHANNEL_IUR_CPCHF 14
+#define CHANNEL_IUR_FACH 15
+#define CHANNEL_IUR_DSCH 16
+#define CHANNEL_EDCH 17 /* E-DCH Enhanced DCH */
+#define CHANNEL_RACH_TDD_128 18
+#define CHANNEL_HSDSCH_COMMON 19 /* HS-DSCH - High Speed Downlink Shared Channel */
#define CHANNEL_HSDSCH_COMMON_T3 20
#define CHANNEL_EDCH_COMMON 21
@@ -53,17 +53,17 @@ enum fp_interface_type
enum division_type
{
- Division_FDD=1,
- Division_TDD_384=2,
- Division_TDD_128=3,
- Division_TDD_768=4
+ Division_FDD = 1,
+ Division_TDD_384 = 2,
+ Division_TDD_128 = 3,
+ Division_TDD_768 = 4
};
enum fp_hsdsch_entity
{
- entity_not_specified=0,
- hs=1,
- ehs=2
+ entity_not_specified = 0,
+ hs = 1,
+ ehs = 2
};
enum fp_link_type
@@ -73,6 +73,13 @@ enum fp_link_type
FP_Link_Ethernet
};
+enum fp_rlc_mode {
+ FP_RLC_MODE_UNKNOWN,
+ FP_RLC_TM,
+ FP_RLC_UM,
+ FP_RLC_AM
+};
+
/* Info attached to each FP packet */
typedef struct fp_info
{
@@ -82,7 +89,7 @@ typedef struct fp_info
guint16 release_year; /* e.g. 2001 */
guint8 release_month; /* e.g. 12 for December */
gboolean is_uplink;
- gint channel; /* see definitions above */
+ gint channel; /* see Channel types definitions above */
guint8 dch_crc_present; /* 0=No, 1=Yes, 2=Unknown */
gint paging_indications;
gint num_chans;
@@ -96,12 +103,62 @@ typedef struct fp_info
guint edch_macd_pdu_size[MAX_EDCH_DDIS];
guint8 edch_type; /* 1 means T2 */
- gint cur_tb; /* current transport block (required for dissecting of single TBs */
+ gint cur_tb; /* current transport block (required for dissecting of single TBs */
gint cur_chan; /* current channel, required to retrieve the correct channel configuration for UMTS MAC */
guint16 srcport, destport;
+ /* HSDSCH Related data */
enum fp_hsdsch_entity hsdsch_entity;
enum fp_link_type link_type;
} fp_info;
+/* From NBAC-Constants.asn */
+#define FP_maxNrOfTFs 32
+
+typedef struct
+{
+ gint num_ul_chans;
+ gint ul_chan_tf_size[MAX_FP_CHANS];
+ gint ul_chan_num_tbs[MAX_FP_CHANS];
+ gint num_dl_chans;
+ gint dl_chan_tf_size[MAX_FP_CHANS];
+ gint dl_chan_num_tbs[MAX_FP_CHANS];
+
+} fp_dch_channel_info_t;
+
+
+typedef struct
+{
+ enum fp_interface_type iface_type;
+ enum division_type division;
+ gint channel; /* see Channel types definitions above */
+ guint32 dl_frame_number; /* the frame where this conversation is started from CRNC */
+ guint32 ul_frame_number; /* the frame where this conversation is started from Node B */
+ address crnc_address;
+ guint16 crnc_port;
+
+ /* For PCH channel */
+ gint paging_indications;
+
+ /* DCH's in this flow */
+ gint num_dch_in_flow;
+ gint dchs_in_flow_list[FP_maxNrOfTFs];
+
+ guint8 dch_crc_present; /* 0=No, 1=Yes, 2=Unknown */
+ enum fp_rlc_mode rlc_mode;
+
+ /* DCH type channel data */
+ fp_dch_channel_info_t fp_dch_channel_info[FP_maxNrOfTFs];
+
+ /* E-DCH related data */
+ gint no_ddi_entries;
+ guint8 edch_ddi[MAX_EDCH_DDIS];
+ guint edch_macd_pdu_size[MAX_EDCH_DDIS];
+ guint8 edch_type; /* 1 means T2 */
+
+ /* HSDSCH Related data */
+ enum fp_hsdsch_entity hsdsch_entity;
+} umts_fp_conversation_info_t;
+
+void set_umts_fp_conv_data(conversation_t *conversation, umts_fp_conversation_info_t *umts_fp_conversation_info);
diff --git a/epan/dissectors/packet-umts_mac.c b/epan/dissectors/packet-umts_mac.c
index b26e10769b..4fc0be15d9 100644
--- a/epan/dissectors/packet-umts_mac.c
+++ b/epan/dissectors/packet-umts_mac.c
@@ -28,12 +28,15 @@
#include <glib.h>
#include <epan/packet.h>
+#include <epan/conversation.h>
#include "packet-umts_fp.h"
+#include "packet-rlc.h"
#include "packet-umts_mac.h"
int proto_umts_mac = -1;
extern int proto_fp;
+extern int proto_rlc;
/* dissector fields */
static int hf_mac_fach_fdd_tctf = -1;
@@ -138,7 +141,7 @@ static guint8 fach_fdd_tctf(guint8 hdr, guint16 *bit_offs)
}
static guint16 tree_add_common_dcch_dtch_fields(tvbuff_t *tvb, packet_info *pinfo _U_,
- proto_tree *tree, guint16 bitoffs, fp_info *fpinf, umts_mac_info *macinf)
+ proto_tree *tree, guint16 bitoffs, fp_info *fpinf, umts_mac_info *macinf, rlc_info *rlcinf)
{
guint8 ueid_type;
@@ -154,6 +157,9 @@ static guint16 tree_add_common_dcch_dtch_fields(tvbuff_t *tvb, packet_info *pinf
}
if (macinf->ctmux[fpinf->cur_tb]) {
+ if(rlcinf){
+ rlcinf->rbid[fpinf->cur_tb] = tvb_get_bits8(tvb, bitoffs, 4);
+ }
proto_tree_add_bits_item(tree, hf_mac_ct, tvb, bitoffs, 4, ENC_BIG_ENDIAN);
bitoffs += 4;
}
@@ -189,6 +195,7 @@ static void dissect_mac_fdd_rach(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
proto_item *channel_type;
umts_mac_info *macinf;
fp_info *fpinf;
+ rlc_info *rlcinf;
proto_item *ti = NULL;
/* RACH TCTF is always 2 bit */
@@ -203,8 +210,9 @@ static void dissect_mac_fdd_rach(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
ti = proto_tree_add_item(tree, proto_umts_mac, tvb, 0, -1, ENC_NA);
rach_tree = proto_item_add_subtree(ti, ett_mac_rach);
- macinf = p_get_proto_data(pinfo->fd, proto_umts_mac);
- fpinf = p_get_proto_data(pinfo->fd, proto_fp);
+ macinf = (umts_mac_info *)p_get_proto_data(pinfo->fd, proto_umts_mac);
+ fpinf = (fp_info *)p_get_proto_data(pinfo->fd, proto_fp);
+ rlcinf = (rlc_info *)p_get_proto_data(pinfo->fd, proto_rlc);
if (!macinf || !fpinf) {
proto_tree_add_text(rach_tree, tvb, 0, -1,
"Cannot dissect MAC frame because per-frame info is missing");
@@ -214,7 +222,7 @@ static void dissect_mac_fdd_rach(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
proto_tree_add_bits_item(rach_tree, hf_mac_rach_fdd_tctf, tvb, 0, 2, ENC_BIG_ENDIAN);
if (tctf == TCTF_DCCH_DTCH_RACH_FDD) {
macinf->ctmux[fpinf->cur_tb] = 1; /* DCCH/DTCH on RACH *always* has a C/T */
- bitoffs = tree_add_common_dcch_dtch_fields(tvb, pinfo, rach_tree, bitoffs, fpinf, macinf);
+ bitoffs = tree_add_common_dcch_dtch_fields(tvb, pinfo, rach_tree, bitoffs, fpinf, macinf, rlcinf);
}
chan = fpinf->cur_chan;
@@ -268,6 +276,7 @@ static void dissect_mac_fdd_fach(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
proto_item *channel_type;
umts_mac_info *macinf;
fp_info *fpinf;
+ rlc_info *rlcinf;
proto_item *ti = NULL;
hdr = tvb_get_guint8(tvb, 0);
@@ -284,8 +293,10 @@ static void dissect_mac_fdd_fach(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
ti = proto_tree_add_item(tree, proto_umts_mac, tvb, 0, -1, ENC_NA);
fach_tree = proto_item_add_subtree(ti, ett_mac_fach);
- macinf = p_get_proto_data(pinfo->fd, proto_umts_mac);
- fpinf = p_get_proto_data(pinfo->fd, proto_fp);
+ macinf = (umts_mac_info *)p_get_proto_data(pinfo->fd, proto_umts_mac);
+ fpinf = (fp_info *)p_get_proto_data(pinfo->fd, proto_fp);
+ rlcinf = (rlc_info *)p_get_proto_data(pinfo->fd, proto_rlc);
+
if (!macinf || !fpinf) {
proto_tree_add_text(fach_tree, tvb, 0, -1,
"Cannot dissect MAC frame because per-frame info is missing");
@@ -295,7 +306,7 @@ static void dissect_mac_fdd_fach(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
proto_tree_add_bits_item(fach_tree, hf_mac_fach_fdd_tctf, tvb, 0, tctf_len, ENC_BIG_ENDIAN);
if (tctf == TCTF_DCCH_DTCH_FACH_FDD) {
macinf->ctmux[fpinf->cur_tb] = 1; /* DCCH/DTCH on FACH *always* has a C/T */
- bitoffs = tree_add_common_dcch_dtch_fields(tvb, pinfo, fach_tree, bitoffs, fpinf, macinf);
+ bitoffs = tree_add_common_dcch_dtch_fields(tvb, pinfo, fach_tree, bitoffs, fpinf, macinf, rlcinf);
}
chan = fpinf->cur_chan;
@@ -354,6 +365,7 @@ static void dissect_mac_fdd_dch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
guint8 bitoffs = 0;
umts_mac_info *macinf;
fp_info *fpinf;
+ rlc_info *rlcinf;
proto_tree *dch_tree = NULL;
proto_item *channel_type;
tvbuff_t *next_tvb;
@@ -364,8 +376,9 @@ static void dissect_mac_fdd_dch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
ti = proto_tree_add_item(tree, proto_umts_mac, tvb, 0, -1, ENC_NA);
dch_tree = proto_item_add_subtree(ti, ett_mac_dch);
- macinf = p_get_proto_data(pinfo->fd, proto_umts_mac);
- fpinf = p_get_proto_data(pinfo->fd, proto_fp);
+ macinf = (umts_mac_info *)p_get_proto_data(pinfo->fd, proto_umts_mac);
+ fpinf = (fp_info *)p_get_proto_data(pinfo->fd, proto_fp);
+ rlcinf = (rlc_info *)p_get_proto_data(pinfo->fd, proto_rlc);
if (!macinf || !fpinf) {
proto_tree_add_text(dch_tree, tvb, 0, -1,
"Cannot dissect MAC frame because per-frame info is missing");
@@ -373,6 +386,9 @@ static void dissect_mac_fdd_dch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
}
pos = fpinf->cur_tb;
if (macinf->ctmux[pos]) {
+ if(rlcinf){
+ rlcinf->rbid[fpinf->cur_tb] = tvb_get_bits8(tvb, bitoffs, 4);
+ }
proto_tree_add_bits_item(dch_tree, hf_mac_ct, tvb, 0, 4, ENC_BIG_ENDIAN);
bitoffs = 4;
}
@@ -419,15 +435,16 @@ static void dissect_mac_fdd_edch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
ti = proto_tree_add_item(tree, proto_umts_mac, tvb, 0, -1, ENC_NA);
edch_tree = proto_item_add_subtree(ti, ett_mac_edch);
- fpinf = p_get_proto_data(pinfo->fd, proto_fp);
- macinf = p_get_proto_data(pinfo->fd, proto_umts_mac);
- pos = fpinf->cur_tb;
- if (!macinf) {
+ fpinf = (fp_info *)p_get_proto_data(pinfo->fd, proto_fp);
+ macinf = (umts_mac_info *)p_get_proto_data(pinfo->fd, proto_umts_mac);
+ if (!macinf|| !fpinf) {
proto_tree_add_text(edch_tree, tvb, 0, -1,
"Cannot dissect MAC frame because per-frame info is missing");
return;
}
+ pos = fpinf->cur_tb;
+
switch (macinf->content[pos]) {
case MAC_CONTENT_DCCH:
proto_item_append_text(ti, " (DCCH)");
@@ -472,8 +489,8 @@ static void dissect_mac_fdd_hsdsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree
ti = proto_tree_add_item(tree, proto_umts_mac, tvb, 0, -1, ENC_NA);
hsdsch_tree = proto_item_add_subtree(ti, ett_mac_hsdsch);
- fpinf = p_get_proto_data(pinfo->fd, proto_fp);
- macinf = p_get_proto_data(pinfo->fd, proto_umts_mac);
+ fpinf = (fp_info *)p_get_proto_data(pinfo->fd, proto_fp);
+ macinf = (umts_mac_info *)p_get_proto_data(pinfo->fd, proto_umts_mac);
pos = fpinf->cur_tb;
bitoffs = fpinf->hsdsch_entity == ehs ? 0 : 4;
diff --git a/epan/dissectors/packet-usb-ccid.c b/epan/dissectors/packet-usb-ccid.c
index c2f60fd46d..05e1d18040 100644
--- a/epan/dissectors/packet-usb-ccid.c
+++ b/epan/dissectors/packet-usb-ccid.c
@@ -146,7 +146,9 @@ static gint ett_ccid = -1;
/* Table of payload types - adapted from the I2C dissector */
enum {
SUB_DATA = 0,
+ SUB_ISO7816,
SUB_GSM_SIM,
+ SUB_PN532_ACS_PSEUDO_APDU,
SUB_MAX
};
@@ -167,167 +169,211 @@ dissect_ccid(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
col_set_str(pinfo->cinfo, COL_PROTOCOL, "USBCCID");
col_set_str(pinfo->cinfo, COL_INFO, "CCID Packet");
- if (tree) {
- /* Start with a top-level item to add everything else to */
+ /* Start with a top-level item to add everything else to */
+ item = proto_tree_add_item(tree, proto_ccid, tvb, 0, -1, ENC_NA);
+ ccid_tree = proto_item_add_subtree(item, ett_ccid);
- item = proto_tree_add_item(tree, proto_ccid, tvb, 0, -1, ENC_NA);
- ccid_tree = proto_item_add_subtree(item, ett_ccid);
+ proto_tree_add_item(ccid_tree, hf_ccid_bMessageType, tvb, 0, 1, ENC_NA);
+ cmd = tvb_get_guint8(tvb, 0);
- proto_tree_add_item(ccid_tree, hf_ccid_bMessageType, tvb, 0, 1, ENC_NA);
- cmd = tvb_get_guint8(tvb, 0);
+ switch (cmd) {
- switch (cmd) {
+ case PC_RDR_SET_PARAMS:
+ proto_tree_add_item(ccid_tree, hf_ccid_dwLength, tvb, 1, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_bSlot, tvb, 5, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_bSeq, tvb, 6, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_bProtocolNum, tvb, 7, 1, ENC_LITTLE_ENDIAN);
- case PC_RDR_SET_PARAMS:
- proto_tree_add_item(ccid_tree, hf_ccid_dwLength, tvb, 1, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_bSlot, tvb, 5, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_bSeq, tvb, 6, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_bProtocolNum, tvb, 7, 1, ENC_LITTLE_ENDIAN);
+ /* Placeholder for abRFU */
+ proto_tree_add_text(ccid_tree, tvb, 8, 2, "Reserved for Future Use");
- /* Placeholder for abRFU */
- proto_tree_add_text(ccid_tree, tvb, 8, 2, "Reserved for Future Use");
+ next_tvb = tvb_new_subset_remaining(tvb, 10);
+ call_dissector(sub_handles[SUB_DATA], next_tvb, pinfo, ccid_tree);
- next_tvb = tvb_new_subset_remaining(tvb, 10);
- call_dissector(sub_handles[SUB_DATA], next_tvb, pinfo, ccid_tree);
+ col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: Set Parameters");
+ break;
- col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: Set Parameters");
- break;
+ case PC_RDR_ICC_ON:
+ proto_tree_add_item(ccid_tree, hf_ccid_dwLength, tvb, 1, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_bSlot, tvb, 5, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_bSeq, tvb, 6, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_bPowerSelect, tvb, 7, 1, ENC_LITTLE_ENDIAN);
- case PC_RDR_ICC_ON:
- proto_tree_add_item(ccid_tree, hf_ccid_dwLength, tvb, 1, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_bSlot, tvb, 5, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_bSeq, tvb, 6, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_bPowerSelect, tvb, 7, 1, ENC_LITTLE_ENDIAN);
+ /* Placeholder for abRFU */
+ proto_tree_add_text(ccid_tree, tvb, 8, 2, "Reserved for Future Use");
- /* Placeholder for abRFU */
- proto_tree_add_text(ccid_tree, tvb, 8, 2, "Reserved for Future Use");
+ col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: ICC Power On");
+ break;
- col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: ICC Power On");
- break;
+ case PC_RDR_ICC_OFF:
+ proto_tree_add_item(ccid_tree, hf_ccid_dwLength, tvb, 1, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_bSlot, tvb, 5, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_bSeq, tvb, 6, 1, ENC_LITTLE_ENDIAN);
- case PC_RDR_ICC_OFF:
- proto_tree_add_item(ccid_tree, hf_ccid_dwLength, tvb, 1, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_bSlot, tvb, 5, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_bSeq, tvb, 6, 1, ENC_LITTLE_ENDIAN);
+ /* Placeholder for abRFU */
+ proto_tree_add_text(ccid_tree, tvb, 7, 3, "Reserved for Future Use");
- /* Placeholder for abRFU */
- proto_tree_add_text(ccid_tree, tvb, 7, 3, "Reserved for Future Use");
+ col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: ICC Power Off");
+ break;
- col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: ICC Power Off");
- break;
+ case PC_RDR_GET_SLOT_STATUS:
+ proto_tree_add_item(ccid_tree, hf_ccid_dwLength, tvb, 1, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_bSlot, tvb, 5, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_bSeq, tvb, 6, 1, ENC_LITTLE_ENDIAN);
- case PC_RDR_GET_SLOT_STATUS:
- proto_tree_add_item(ccid_tree, hf_ccid_dwLength, tvb, 1, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_bSlot, tvb, 5, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_bSeq, tvb, 6, 1, ENC_LITTLE_ENDIAN);
+ /* Placeholder for abRFU */
+ proto_tree_add_text(ccid_tree, tvb, 7, 3, "Reserved for Future Use");
- /* Placeholder for abRFU */
- proto_tree_add_text(ccid_tree, tvb, 7, 3, "Reserved for Future Use");
+ col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: Get Slot Status");
+ break;
- col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: Get Slot Status");
- break;
+ case PC_RDR_SECURE:
+ col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: Secure");
+ break;
- case PC_RDR_SECURE:
- col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: Secure");
- break;
+ case PC_RDR_T0APDU:
+ col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: T=0 APDU");
+ break;
- case PC_RDR_T0APDU:
- col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: T=0 APDU");
- break;
+ case PC_RDR_ESCAPE:
+ col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: Escape");
+ break;
- case PC_RDR_ESCAPE:
- col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: Escape");
- break;
+ case PC_RDR_GET_PARAMS:
+ proto_tree_add_item(ccid_tree, hf_ccid_dwLength, tvb, 1, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_bSlot, tvb, 5, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_bSeq, tvb, 6, 1, ENC_LITTLE_ENDIAN);
- case PC_RDR_GET_PARAMS:
- proto_tree_add_item(ccid_tree, hf_ccid_dwLength, tvb, 1, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_bSlot, tvb, 5, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_bSeq, tvb, 6, 1, ENC_LITTLE_ENDIAN);
+ /* Placeholder for abRFU */
+ proto_tree_add_text(ccid_tree, tvb, 7, 3, "Reserved for Future Use");
- /* Placeholder for abRFU */
- proto_tree_add_text(ccid_tree, tvb, 7, 3, "Reserved for Future Use");
+ col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: Get Parameters");
+ break;
- col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: Get Parameters");
- break;
+ case PC_RDR_RESET_PARAMS:
+ col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: Reset Parameters");
+ break;
- case PC_RDR_RESET_PARAMS:
- col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: Reset Parameters");
- break;
+ case PC_RDR_ICC_CLOCK:
+ col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: ICC Clock");
+ break;
- case PC_RDR_ICC_CLOCK:
- col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: ICC Clock");
- break;
+ case PC_RDR_XFR_BLOCK:
+ col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: Transfer Block");
- case PC_RDR_XFR_BLOCK:
- proto_tree_add_item(ccid_tree, hf_ccid_dwLength, tvb, 1, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_bSlot, tvb, 5, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_bSeq, tvb, 6, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_bBWI, tvb, 7, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_wLevelParameter, tvb, 8, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_dwLength, tvb, 1, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_bSlot, tvb, 5, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_bSeq, tvb, 6, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_bBWI, tvb, 7, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_wLevelParameter, tvb, 8, 2, ENC_LITTLE_ENDIAN);
- next_tvb = tvb_new_subset_remaining(tvb, 10);
+ next_tvb = tvb_new_subset_remaining(tvb, 10);
+ /* See if the dissector isn't Data */
if (sub_selected != SUB_DATA) {
- call_dissector(sub_handles[sub_selected], next_tvb, pinfo, tree);
- } else {
- call_dissector(sub_handles[SUB_DATA], next_tvb, pinfo, tree);
- }
-
- col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: Transfer Block");
- break;
-
- case PC_RDR_MECH:
- col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: Mechanical");
- break;
-
- case PC_RDR_ABORT:
- col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: Abort");
- break;
-
- case PC_RDR_DATA_CLOCK:
- col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: Set Data Rate and Clock Frequency");
- break;
-
- case RDR_PC_DATA_BLOCK:
- col_set_str(pinfo->cinfo, COL_INFO, "Reader to PC: Data Block");
- proto_tree_add_item(ccid_tree, hf_ccid_dwLength, tvb, 1, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_bSlot, tvb, 5, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_bSeq, tvb, 6, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_bStatus, tvb, 7, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_bError, tvb, 8, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_bChainParameter, tvb, 9, 1, ENC_LITTLE_ENDIAN);
-
- next_tvb = tvb_new_subset_remaining(tvb, 10);
+
+ /* See if we're in PN532-with-ACS PseudoHeader Mode */
+ if (sub_selected == SUB_PN532_ACS_PSEUDO_APDU) {
+
+ /* See if the payload starts with 0xD4 (Host -> PN532) */
+ if (tvb_get_guint8(tvb, 15) == 0xD4) {
+
+ /* Skip the 5 byte ACS Pseudo-Header */
+ call_dissector(sub_handles[sub_selected], tvb_new_subset_remaining(tvb, 15), pinfo, tree);
+ }
+
+ else {
+
+ /* We've probably got an APDU addressed elsewhere */
+ call_dissector(sub_handles[SUB_DATA], next_tvb, pinfo, tree);
+ }
+ }
+
+ else if (sub_selected == SUB_ISO7816) {
+ /* sent/received is from the perspective of the card reader */
+ pinfo->p2p_dir = P2P_DIR_SENT;
+ call_dissector(sub_handles[SUB_ISO7816], next_tvb, pinfo, tree);
+ }
+
+ /* The user probably wanted GSM SIM, or something else */
+ else {
+ call_dissector(sub_handles[sub_selected], next_tvb, pinfo, tree);
+ }
+
+ }
+
+ /* The user only wants plain data */
+ else {
+ call_dissector(sub_handles[SUB_DATA], next_tvb, pinfo, tree);
+ }
+
+ break;
+
+ case PC_RDR_MECH:
+ col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: Mechanical");
+ break;
+
+ case PC_RDR_ABORT:
+ col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: Abort");
+ break;
+
+ case PC_RDR_DATA_CLOCK:
+ col_set_str(pinfo->cinfo, COL_INFO, "PC to Reader: Set Data Rate and Clock Frequency");
+ break;
+
+ case RDR_PC_DATA_BLOCK:
+ col_set_str(pinfo->cinfo, COL_INFO, "Reader to PC: Data Block");
+ proto_tree_add_item(ccid_tree, hf_ccid_dwLength, tvb, 1, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_bSlot, tvb, 5, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_bSeq, tvb, 6, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_bStatus, tvb, 7, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_bError, tvb, 8, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_bChainParameter, tvb, 9, 1, ENC_LITTLE_ENDIAN);
+
+ next_tvb = tvb_new_subset_remaining(tvb, 10);
+
+ /* If the user has opted to use the PN532 dissector for PC -> Reader comms, then use it here */
+ if (sub_selected == SUB_PN532_ACS_PSEUDO_APDU && tvb_get_guint8(tvb, 10) == 0xD5) {
+ call_dissector(sub_handles[SUB_PN532_ACS_PSEUDO_APDU], next_tvb, pinfo, ccid_tree);
+ }
+
+ else if (sub_selected == SUB_ISO7816) {
+ pinfo->p2p_dir = P2P_DIR_RECV;
+ call_dissector(sub_handles[SUB_ISO7816], next_tvb, pinfo, tree);
+ }
+
+ else {
call_dissector(sub_handles[SUB_DATA], next_tvb, pinfo, ccid_tree);
- break;
-
- case RDR_PC_SLOT_STATUS:
- proto_tree_add_item(ccid_tree, hf_ccid_dwLength, tvb, 1, 4, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_bSlot, tvb, 5, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_bSeq, tvb, 6, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_bStatus, tvb, 7, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_bError, tvb, 8, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ccid_tree, hf_ccid_bClockStatus, tvb, 9, 1, ENC_LITTLE_ENDIAN);
-
- col_set_str(pinfo->cinfo, COL_INFO, "Reader to PC: Slot Status");
- break;
-
- case RDR_PC_PARAMS:
- col_set_str(pinfo->cinfo, COL_INFO, "Reader to PC: Parameters");
- break;
-
- case RDR_PC_ESCAPE:
- col_set_str(pinfo->cinfo, COL_INFO, "Reader to PC: Escape");
- break;
-
- case RDR_PC_DATA_CLOCK:
- col_set_str(pinfo->cinfo, COL_INFO, "Reader to PC: Data Rate and Clock Frequency");
- break;
-
- default:
- col_set_str(pinfo->cinfo, COL_INFO, "Unknown type");
- break;
}
+
+ break;
+
+ case RDR_PC_SLOT_STATUS:
+ proto_tree_add_item(ccid_tree, hf_ccid_dwLength, tvb, 1, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_bSlot, tvb, 5, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_bSeq, tvb, 6, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_bStatus, tvb, 7, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_bError, tvb, 8, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ccid_tree, hf_ccid_bClockStatus, tvb, 9, 1, ENC_LITTLE_ENDIAN);
+
+ col_set_str(pinfo->cinfo, COL_INFO, "Reader to PC: Slot Status");
+ break;
+
+ case RDR_PC_PARAMS:
+ col_set_str(pinfo->cinfo, COL_INFO, "Reader to PC: Parameters");
+ break;
+
+ case RDR_PC_ESCAPE:
+ col_set_str(pinfo->cinfo, COL_INFO, "Reader to PC: Escape");
+ break;
+
+ case RDR_PC_DATA_CLOCK:
+ col_set_str(pinfo->cinfo, COL_INFO, "Reader to PC: Data Rate and Clock Frequency");
+ break;
+
+ default:
+ col_set_str(pinfo->cinfo, COL_INFO, "Unknown type");
+ break;
}
}
@@ -381,16 +427,18 @@ proto_register_ccid(void)
static const enum_val_t sub_enum_vals[] = {
{ "data", "Data", SUB_DATA },
+ { "iso7816", "Generic ISO 7816", SUB_ISO7816 },
{ "gsm_sim", "GSM SIM", SUB_GSM_SIM },
+ { "pn532", "NXP PN532 with ACS Pseudo-Header", SUB_PN532_ACS_PSEUDO_APDU},
{ NULL, NULL, 0 }
};
-
+
module_t *pref_mod;
-
+
proto_ccid = proto_register_protocol("USB CCID", "USBCCID", "usbccid");
proto_register_field_array(proto_ccid, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
-
+
pref_mod = prefs_register_protocol(proto_ccid, NULL);
prefs_register_enum_preference(pref_mod, "prtype", "PC -> Reader Payload Type", "How commands from the PC to the reader are interpreted",
&sub_selected, sub_enum_vals, FALSE);
@@ -409,9 +457,11 @@ proto_reg_handoff_ccid(void)
usb_ccid_bulk_handle = find_dissector("usbccid");
dissector_add_uint("usb.bulk", IF_CLASS_SMART_CARD, usb_ccid_bulk_handle);
-
+
sub_handles[SUB_DATA] = find_dissector("data");
+ sub_handles[SUB_ISO7816] = find_dissector("iso7816");
sub_handles[SUB_GSM_SIM] = find_dissector("gsm_sim");
+ sub_handles[SUB_PN532_ACS_PSEUDO_APDU] = find_dissector("pn532");
}
/*
diff --git a/epan/dissectors/packet-usb-hid.c b/epan/dissectors/packet-usb-hid.c
index 59fb47b616..3e1a965613 100644
--- a/epan/dissectors/packet-usb-hid.c
+++ b/epan/dissectors/packet-usb-hid.c
@@ -583,7 +583,7 @@ dissect_usb_hid_get_report(packet_info *pinfo _U_, proto_tree *tree, tvbuff_t *t
offset += 2;
proto_tree_add_item(tree, hf_usb_hid_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset += 2;
+ /*offset += 2;*/
} else {
}
}
@@ -608,7 +608,7 @@ dissect_usb_hid_set_report(packet_info *pinfo _U_, proto_tree *tree, tvbuff_t *t
offset += 2;
proto_tree_add_item(tree, hf_usb_hid_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset += 2;
+ /*offset += 2;*/
} else {
}
}
@@ -634,7 +634,7 @@ dissect_usb_hid_get_idle(packet_info *pinfo _U_, proto_tree *tree, tvbuff_t *tvb
offset += 2;
proto_tree_add_item(tree, hf_usb_hid_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset += 2;
+ /*offset += 2;*/
} else {
}
}
@@ -660,7 +660,7 @@ dissect_usb_hid_set_idle(packet_info *pinfo _U_, proto_tree *tree, tvbuff_t *tvb
offset += 2;
proto_tree_add_item(tree, hf_usb_hid_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset += 2;
+ /*offset += 2;*/
} else {
}
}
@@ -677,7 +677,7 @@ dissect_usb_hid_get_protocol(packet_info *pinfo _U_, proto_tree *tree, tvbuff_t
offset += 2;
proto_tree_add_item(tree, hf_usb_hid_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset += 2;
+ /*offset += 2;*/
} else {
}
}
@@ -694,7 +694,7 @@ dissect_usb_hid_set_protocol(packet_info *pinfo _U_, proto_tree *tree, tvbuff_t
offset += 2;
proto_tree_add_item(tree, hf_usb_hid_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset += 2;
+ /*offset += 2;*/
} else {
}
}
@@ -768,10 +768,10 @@ dissect_usb_hid_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
dissector = NULL;
/* Check valid values for bmRequestType. See Chapter 7.2 in USBHID 1.11 */
- if ((usb_trans_info->requesttype & 0x7F) ==
+ if ((usb_trans_info->setup.requesttype & 0x7F) ==
((RQT_SETUP_TYPE_CLASS << 5) | RQT_SETUP_RECIPIENT_INTERFACE)) {
for (tmp = setup_dissectors; tmp->dissector; tmp++) {
- if (tmp->request == usb_trans_info->request) {
+ if (tmp->request == usb_trans_info->setup.request) {
dissector = tmp->dissector;
break;
}
@@ -788,7 +788,7 @@ dissect_usb_hid_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (check_col(pinfo->cinfo, COL_INFO)) {
col_add_fstr(pinfo->cinfo, COL_INFO, "%s %s",
- val_to_str(usb_trans_info->request, setup_request_names_vals, "Unknown type %x"),
+ val_to_str(usb_trans_info->setup.request, setup_request_names_vals, "Unknown type %x"),
is_request ? "Request" : "Response");
}
@@ -880,13 +880,13 @@ proto_register_usb_hid(void)
TFS(&tfs_mainitem_bit8), 1<<8, NULL, HFILL }},
{ &hf_usb_hid_mainitem_colltype,
- { "Collection type", "usbhid.item.main.colltype", FT_UINT8, BASE_HEX,
+ { "Collection type", "usbhid.item.main.colltype", FT_UINT8, BASE_RANGE_STRING|BASE_HEX,
RVALS(usb_hid_mainitem_colltype_vals), 0, NULL, HFILL }},
/* Global-report item data */
{ &hf_usb_hid_globalitem_usage,
- { "Usage page", "usbhid.item.global.usage", FT_UINT8, BASE_HEX,
+ { "Usage page", "usbhid.item.global.usage", FT_UINT8, BASE_RANGE_STRING|BASE_HEX,
RVALS(usb_hid_item_usage_vals), 0, NULL, HFILL }},
{ &hf_usb_hid_globalitem_log_min,
@@ -960,7 +960,7 @@ proto_register_usb_hid(void)
/* Local-report item data */
{ &hf_usb_hid_localitem_usage,
- { "Usage", "usbhid.item.local.usage", FT_UINT8, BASE_HEX,
+ { "Usage", "usbhid.item.local.usage", FT_UINT8, BASE_RANGE_STRING|BASE_HEX,
RVALS(usb_hid_item_usage_vals), 0, NULL, HFILL }},
{ &hf_usb_hid_localitem_usage_min,
diff --git a/epan/dissectors/packet-usb-hub.c b/epan/dissectors/packet-usb-hub.c
index bdf3a438be..b19d839295 100644
--- a/epan/dissectors/packet-usb-hub.c
+++ b/epan/dissectors/packet-usb-hub.c
@@ -151,7 +151,7 @@ dissect_usb_hub_clear_hub_feature(packet_info *pinfo _U_, proto_tree *tree, tvbu
item = proto_tree_add_item(tree, hf_usb_hub_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
subtree = proto_item_add_subtree(item, ett_usb_hub_wLength);
proto_tree_add_item(subtree, hf_usb_hub_zero, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset += 2;
+ /*offset += 2;*/
} else {
}
}
@@ -179,7 +179,7 @@ dissect_usb_hub_clear_port_feature(packet_info *pinfo _U_, proto_tree *tree, tvb
item = proto_tree_add_item(tree, hf_usb_hub_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
subtree = proto_item_add_subtree(item, ett_usb_hub_wLength);
proto_tree_add_item(subtree, hf_usb_hub_zero, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset += 2;
+ /*offset += 2;*/
} else {
}
}
@@ -207,7 +207,7 @@ dissect_usb_hub_clear_tt_buffer(packet_info *pinfo _U_, proto_tree *tree, tvbuff
proto_tree_add_item(tree, hf_usb_hub_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
subtree = proto_item_add_subtree(item, ett_usb_hub_wLength);
proto_tree_add_item(subtree, hf_usb_hub_zero, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset += 2;
+ /*offset += 2;*/
} else {
}
}
@@ -235,7 +235,7 @@ dissect_usb_hub_get_hub_descriptor(packet_info *pinfo _U_, proto_tree *tree, tvb
item = proto_tree_add_item(tree, hf_usb_hub_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
subtree = proto_item_add_subtree(item, ett_usb_hub_wLength);
proto_tree_add_item(subtree, hf_usb_hub_descriptor_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset += 2;
+ /*offset += 2;*/
} else {
}
}
@@ -260,7 +260,7 @@ dissect_usb_hub_get_hub_status(packet_info *pinfo _U_, proto_tree *tree, tvbuff_
proto_tree_add_item(tree, hf_usb_hub_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
/* length shall always contain 4 */
- offset += 2;
+ /*offset += 2;*/
} else {
}
}
@@ -285,7 +285,7 @@ dissect_usb_hub_get_port_status(packet_info *pinfo _U_, proto_tree *tree, tvbuff
proto_tree_add_item(tree, hf_usb_hub_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
/* length shall always contain 4 */
- offset += 2;
+ /*offset += 2;*/
} else {
}
}
@@ -311,7 +311,7 @@ dissect_usb_hub_get_tt_state(packet_info *pinfo _U_, proto_tree *tree, tvbuff_t
item = proto_tree_add_item(tree, hf_usb_hub_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
subtree = proto_item_add_subtree(item, ett_usb_hub_wLength);
proto_tree_add_item(subtree, hf_usb_hub_tt_state_length, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset += 2;
+ /*offset += 2;*/
} else {
}
}
@@ -337,7 +337,7 @@ dissect_usb_hub_reset_tt(packet_info *pinfo _U_, proto_tree *tree, tvbuff_t *tvb
item = proto_tree_add_item(tree, hf_usb_hub_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
subtree = proto_item_add_subtree(item, ett_usb_hub_wLength);
proto_tree_add_item(subtree, hf_usb_hub_zero, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset += 2;
+ /*offset += 2;*/
} else {
}
}
@@ -365,7 +365,7 @@ dissect_usb_hub_set_hub_descriptor(packet_info *pinfo _U_, proto_tree *tree, tvb
item = proto_tree_add_item(tree, hf_usb_hub_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
subtree = proto_item_add_subtree(item, ett_usb_hub_wLength);
proto_tree_add_item(subtree, hf_usb_hub_descriptor_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset += 2;
+ /*offset += 2;*/
} else {
}
}
@@ -391,7 +391,7 @@ dissect_usb_hub_stop_tt(packet_info *pinfo _U_, proto_tree *tree, tvbuff_t *tvb,
item = proto_tree_add_item(tree, hf_usb_hub_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
subtree = proto_item_add_subtree(item, ett_usb_hub_wLength);
proto_tree_add_item(subtree, hf_usb_hub_zero, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset += 2;
+ /*offset += 2;*/
} else {
}
}
@@ -417,7 +417,7 @@ dissect_usb_hub_set_hub_feature(packet_info *pinfo _U_, proto_tree *tree, tvbuff
item = proto_tree_add_item(tree, hf_usb_hub_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
subtree = proto_item_add_subtree(item, ett_usb_hub_wLength);
proto_tree_add_item(subtree, hf_usb_hub_zero, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset += 2;
+ /*offset += 2;*/
} else {
}
}
@@ -445,7 +445,7 @@ dissect_usb_hub_set_port_feature(packet_info *pinfo _U_, proto_tree *tree, tvbuf
item = proto_tree_add_item(tree, hf_usb_hub_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
subtree = proto_item_add_subtree(item, ett_usb_hub_wLength);
proto_tree_add_item(subtree, hf_usb_hub_zero, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- offset += 2;
+ /*offset += 2;*/
} else {
}
}
@@ -550,8 +550,8 @@ dissect_usb_hub_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Check valid values for bmRequestType and bRequest */
for (tmp = setup_dissectors; tmp->dissector; tmp++) {
- if (tmp->request_type == usb_trans_info->requesttype &&
- tmp->request == usb_trans_info->request) {
+ if (tmp->request_type == usb_trans_info->setup.requesttype &&
+ tmp->request == usb_trans_info->setup.request) {
dissector = tmp->dissector;
break;
}
@@ -567,7 +567,7 @@ dissect_usb_hub_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (check_col(pinfo->cinfo, COL_INFO)) {
col_add_fstr(pinfo->cinfo, COL_INFO, "%s %s",
- val_to_str(usb_trans_info->request, setup_request_names_vals, "Unknown type %x"),
+ val_to_str(usb_trans_info->setup.request, setup_request_names_vals, "Unknown type %x"),
is_request ? "Request" : "Response");
}
diff --git a/epan/dissectors/packet-usb-masstorage.c b/epan/dissectors/packet-usb-masstorage.c
index cd53ba29d4..7f29db8b2b 100644
--- a/epan/dissectors/packet-usb-masstorage.c
+++ b/epan/dissectors/packet-usb-masstorage.c
@@ -80,7 +80,7 @@ dissect_usb_ms_reset(packet_info *pinfo _U_, proto_tree *tree, tvbuff_t *tvb, in
offset += 2;
proto_tree_add_item(tree, hf_usb_ms_length, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
+ /*offset += 2;*/
} else {
/* no data in reset response */
}
@@ -97,7 +97,7 @@ dissect_usb_ms_get_max_lun(packet_info *pinfo _U_, proto_tree *tree, tvbuff_t *t
offset += 2;
proto_tree_add_item(tree, hf_usb_ms_length, tvb, offset, 2, ENC_BIG_ENDIAN);
- offset += 2;
+ /*offset += 2;*/
} else {
proto_tree_add_item(tree, hf_usb_ms_maxlun, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
@@ -148,7 +148,7 @@ dissect_usb_ms_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* See if we can find a class specific dissector for this request */
dissector=NULL;
for(tmp=setup_dissectors;tmp->dissector;tmp++){
- if(tmp->request==usb_trans_info->request){
+ if (tmp->request == usb_trans_info->setup.request){
dissector=tmp->dissector;
break;
}
@@ -165,7 +165,7 @@ dissect_usb_ms_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (check_col(pinfo->cinfo, COL_INFO)) {
col_add_fstr(pinfo->cinfo, COL_INFO, "%s %s",
- val_to_str(usb_trans_info->request, setup_request_names_vals, "Unknown type %x"),
+ val_to_str(usb_trans_info->setup.request, setup_request_names_vals, "Unknown type %x"),
is_request?"Request":"Response");
}
@@ -324,7 +324,7 @@ dissect_usb_ms_bulk(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
/* dCSWStatus */
proto_tree_add_item(tree, hf_usb_ms_dCSWStatus, tvb, offset, 1, ENC_LITTLE_ENDIAN);
status=tvb_get_guint8(tvb, offset);
- offset+=1;
+ /*offset+=1;*/
itlq=(itlq_nexus_t *)se_tree_lookup32_le(usb_ms_conv_info->itlq, pinfo->fd->num);
if(!itlq){
diff --git a/epan/dissectors/packet-usb.c b/epan/dissectors/packet-usb.c
index bd14fc148f..74d60a318e 100644
--- a/epan/dissectors/packet-usb.c
+++ b/epan/dissectors/packet-usb.c
@@ -118,6 +118,8 @@ static int hf_usb_bEndpointAttributeTransfer = -1;
static int hf_usb_bEndpointAttributeSynchonisation = -1;
static int hf_usb_bEndpointAttributeBehaviour = -1;
static int hf_usb_wMaxPacketSize = -1;
+static int hf_usb_wMaxPacketSize_size = -1;
+static int hf_usb_wMaxPacketSize_slots = -1;
static int hf_usb_bInterval = -1;
static int hf_usb_wTotalLength = -1;
static int hf_usb_bNumInterfaces = -1;
@@ -149,6 +151,7 @@ static gint ett_descriptor_device = -1;
static gint ett_configuration_bmAttributes = -1;
static gint ett_configuration_bEndpointAddress = -1;
static gint ett_endpoint_bmAttributes = -1;
+static gint ett_endpoint_wMaxPacketSize = -1;
static const int *usb_endpoint_fields[] = {
&hf_usb_endpoint_direction,
@@ -161,9 +164,12 @@ static gboolean try_heuristics = TRUE;
static dissector_table_t usb_bulk_dissector_table;
static dissector_table_t usb_control_dissector_table;
+static dissector_table_t usb_interrupt_dissector_table;
static dissector_table_t usb_descriptor_dissector_table;
+
static heur_dissector_list_t heur_bulk_subdissector_list;
static heur_dissector_list_t heur_control_subdissector_list;
+static heur_dissector_list_t heur_interrupt_subdissector_list;
/* http://www.usb.org/developers/docs/USB_LANGIDs.pdf */
static const value_string usb_langid_vals[] = {
@@ -345,22 +351,22 @@ static const value_string usb_class_vals[] = {
static const value_string usb_transfer_type_vals[] = {
- {URB_CONTROL, "URB_CONTROL"},
- {URB_ISOCHRONOUS,"URB_ISOCHRONOUS"},
- {URB_INTERRUPT,"URB_INTERRUPT"},
- {URB_BULK,"URB_BULK"},
+ {URB_CONTROL, "URB_CONTROL"},
+ {URB_ISOCHRONOUS, "URB_ISOCHRONOUS"},
+ {URB_INTERRUPT, "URB_INTERRUPT"},
+ {URB_BULK, "URB_BULK"},
{0, NULL}
};
static const value_string usb_transfer_type_and_direction_vals[] = {
- {URB_CONTROL, "URB_CONTROL out"},
- {URB_ISOCHRONOUS,"URB_ISOCHRONOUS out"},
- {URB_INTERRUPT,"URB_INTERRUPT out"},
- {URB_BULK,"URB_BULK out"},
- {URB_CONTROL | URB_TRANSFER_IN, "URB_CONTROL in"},
- {URB_ISOCHRONOUS | URB_TRANSFER_IN,"URB_ISOCHRONOUS in"},
- {URB_INTERRUPT | URB_TRANSFER_IN,"URB_INTERRUPT in"},
- {URB_BULK | URB_TRANSFER_IN,"URB_BULK in"},
+ {URB_CONTROL, "URB_CONTROL out"},
+ {URB_ISOCHRONOUS, "URB_ISOCHRONOUS out"},
+ {URB_INTERRUPT, "URB_INTERRUPT out"},
+ {URB_BULK, "URB_BULK out"},
+ {URB_CONTROL | URB_TRANSFER_IN, "URB_CONTROL in"},
+ {URB_ISOCHRONOUS | URB_TRANSFER_IN, "URB_ISOCHRONOUS in"},
+ {URB_INTERRUPT | URB_TRANSFER_IN, "URB_INTERRUPT in"},
+ {URB_BULK | URB_TRANSFER_IN, "URB_BULK in"},
{0, NULL}
};
@@ -380,16 +386,16 @@ static const value_string usb_urb_type_vals[] = {
/*
* Descriptor types.
*/
-#define USB_DT_DEVICE 1
-#define USB_DT_CONFIG 2
-#define USB_DT_STRING 3
-#define USB_DT_INTERFACE 4
-#define USB_DT_ENDPOINT 5
-#define USB_DT_DEVICE_QUALIFIER 6
-#define USB_DT_OTHER_SPEED_CONFIG 7
-#define USB_DT_INTERFACE_POWER 8
+#define USB_DT_DEVICE 1
+#define USB_DT_CONFIG 2
+#define USB_DT_STRING 3
+#define USB_DT_INTERFACE 4
+#define USB_DT_ENDPOINT 5
+#define USB_DT_DEVICE_QUALIFIER 6
+#define USB_DT_OTHER_SPEED_CONFIG 7
+#define USB_DT_INTERFACE_POWER 8
/* these are from a minor usb 2.0 revision (ECN) */
-#define USB_DT_OTG 9
+#define USB_DT_OTG 9
#define USB_DT_DEBUG 10
#define USB_DT_INTERFACE_ASSOCIATION 11
/* these are from the Wireless USB spec */
@@ -463,6 +469,14 @@ static const value_string usb_bmAttributes_behaviour_vals[] = {
{0,NULL}
};
+static const value_string usb_wMaxPacketSize_slots_vals[] = {
+ {0x00, "1"},
+ {0x01, "2"},
+ {0x02, "3"},
+ {0x03, "Reserved"},
+ {0,NULL}
+};
+
/* from linux/include/asm-generic/errno.h */
#define EPERM 1 /* Operation not permitted */
#define ENOENT 2 /* No such file or directory */
@@ -750,9 +764,9 @@ get_usb_conv_info(conversation_t *conversation)
if(!usb_conv_info){
/* no not yet so create some */
usb_conv_info = se_alloc0(sizeof(usb_conv_info_t));
- usb_conv_info->interfaceClass=IF_CLASS_UNKNOWN;
+ usb_conv_info->interfaceClass = IF_CLASS_UNKNOWN;
usb_conv_info->interfaceSubclass = IF_SUBCLASS_UNKNOWN;
- usb_conv_info->transactions=se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "usb transactions");
+ usb_conv_info->transactions = se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "usb transactions");
conversation_add_proto_data(conversation, proto_usb, usb_conv_info);
}
@@ -833,7 +847,7 @@ static int
dissect_usb_setup_get_configuration_response(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset, usb_trans_info_t *usb_trans_info _U_, usb_conv_info_t *usb_conv_info _U_)
{
proto_tree_add_item(tree, hf_usb_bConfigurationValue, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
return offset;
}
@@ -844,27 +858,30 @@ dissect_usb_setup_get_configuration_response(packet_info *pinfo _U_, proto_tree
* for URB_CONTROL_INPUT / GET DESCRIPTOR
*/
+void dissect_usb_descriptor_header(proto_tree *tree, tvbuff_t *tvb, int offset)
+{
+ /* bLength */
+ proto_tree_add_item(tree, hf_usb_bLength, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+
+ /* bDescriptorType */
+ proto_tree_add_item(tree, hf_usb_bDescriptorType, tvb, offset+1, 1, ENC_LITTLE_ENDIAN);
+}
/* 9.6.2 */
static int
dissect_usb_device_qualifier_descriptor(packet_info *pinfo _U_, proto_tree *parent_tree, tvbuff_t *tvb, int offset, usb_trans_info_t *usb_trans_info _U_, usb_conv_info_t *usb_conv_info _U_)
{
- proto_item *item=NULL;
- proto_tree *tree=NULL;
- int old_offset=offset;
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset = offset;
if(parent_tree){
- item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DEVICE QUALIFIER DESCRIPTOR");
- tree=proto_item_add_subtree(item, ett_descriptor_device);
+ item = proto_tree_add_text(parent_tree, tvb, offset, -1, "DEVICE QUALIFIER DESCRIPTOR");
+ tree = proto_item_add_subtree(item, ett_descriptor_device);
}
- /* bLength */
- proto_tree_add_item(tree, hf_usb_bLength, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- /* bDescriptorType */
- proto_tree_add_item(tree, hf_usb_bDescriptorType, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ dissect_usb_descriptor_header(tree, tvb, offset);
+ offset += 2;
/* bcdUSB */
proto_tree_add_item(tree, hf_usb_bcdUSB, tvb, offset, 2, ENC_LITTLE_ENDIAN);
@@ -872,26 +889,26 @@ dissect_usb_device_qualifier_descriptor(packet_info *pinfo _U_, proto_tree *pare
/* bDeviceClass */
proto_tree_add_item(tree, hf_usb_bDeviceClass, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
/* bDeviceSubClass */
proto_tree_add_item(tree, hf_usb_bDeviceSubClass, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
/* bDeviceProtocol */
proto_tree_add_item(tree, hf_usb_bDeviceProtocol, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
/* bMaxPacketSize0 */
proto_tree_add_item(tree, hf_usb_bMaxPacketSize0, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
/* bNumConfigurations */
proto_tree_add_item(tree, hf_usb_bNumConfigurations, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
/* one reserved byte */
- offset++;
+ offset += 1;
if(item){
proto_item_set_len(item, offset-old_offset);
@@ -904,22 +921,17 @@ dissect_usb_device_qualifier_descriptor(packet_info *pinfo _U_, proto_tree *pare
static int
dissect_usb_device_descriptor(packet_info *pinfo _U_, proto_tree *parent_tree, tvbuff_t *tvb, int offset, usb_trans_info_t *usb_trans_info _U_, usb_conv_info_t *usb_conv_info _U_)
{
- proto_item *item=NULL;
- proto_tree *tree=NULL;
- int old_offset=offset;
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset = offset;
if(parent_tree){
- item=proto_tree_add_text(parent_tree, tvb, offset, -1, "DEVICE DESCRIPTOR");
- tree=proto_item_add_subtree(item, ett_descriptor_device);
+ item = proto_tree_add_text(parent_tree, tvb, offset, -1, "DEVICE DESCRIPTOR");
+ tree = proto_item_add_subtree(item, ett_descriptor_device);
}
- /* bLength */
- proto_tree_add_item(tree, hf_usb_bLength, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- /* bDescriptorType */
- proto_tree_add_item(tree, hf_usb_bDescriptorType, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ dissect_usb_descriptor_header(tree, tvb, offset);
+ offset += 2;
/* bcdUSB */
proto_tree_add_item(tree, hf_usb_bcdUSB, tvb, offset, 2, ENC_LITTLE_ENDIAN);
@@ -927,19 +939,19 @@ dissect_usb_device_descriptor(packet_info *pinfo _U_, proto_tree *parent_tree, t
/* bDeviceClass */
proto_tree_add_item(tree, hf_usb_bDeviceClass, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
/* bDeviceSubClass */
proto_tree_add_item(tree, hf_usb_bDeviceSubClass, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
/* bDeviceProtocol */
proto_tree_add_item(tree, hf_usb_bDeviceProtocol, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
/* bMaxPacketSize0 */
proto_tree_add_item(tree, hf_usb_bMaxPacketSize0, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
/* idVendor */
proto_tree_add_item(tree, hf_usb_idVendor, tvb, offset, 2, ENC_LITTLE_ENDIAN);
@@ -955,19 +967,19 @@ dissect_usb_device_descriptor(packet_info *pinfo _U_, proto_tree *parent_tree, t
/* iManufacturer */
proto_tree_add_item(tree, hf_usb_iManufacturer, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
/* iProduct */
proto_tree_add_item(tree, hf_usb_iProduct, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
/* iSerialNumber */
proto_tree_add_item(tree, hf_usb_iSerialNumber, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
/* bNumConfigurations */
proto_tree_add_item(tree, hf_usb_bNumConfigurations, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
if(item){
proto_item_set_len(item, offset-old_offset);
@@ -980,24 +992,19 @@ dissect_usb_device_descriptor(packet_info *pinfo _U_, proto_tree *parent_tree, t
static int
dissect_usb_string_descriptor(packet_info *pinfo _U_, proto_tree *parent_tree, tvbuff_t *tvb, int offset, usb_trans_info_t *usb_trans_info, usb_conv_info_t *usb_conv_info _U_)
{
- proto_item *item=NULL;
- proto_tree *tree=NULL;
- int old_offset=offset;
- guint8 len;
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset = offset;
+ guint8 len;
if(parent_tree){
- item=proto_tree_add_text(parent_tree, tvb, offset, -1, "STRING DESCRIPTOR");
- tree=proto_item_add_subtree(item, ett_descriptor_device);
+ item = proto_tree_add_text(parent_tree, tvb, offset, -1, "STRING DESCRIPTOR");
+ tree = proto_item_add_subtree(item, ett_descriptor_device);
}
- /* bLength */
- proto_tree_add_item(tree, hf_usb_bLength, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- len=tvb_get_guint8(tvb, offset);
- offset++;
-
- /* bDescriptorType */
- proto_tree_add_item(tree, hf_usb_bDescriptorType, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ len = tvb_get_guint8(tvb, offset);
+ dissect_usb_descriptor_header(tree, tvb, offset);
+ offset += 2;
if(!usb_trans_info->u.get_descriptor.index){
/* list of languanges */
@@ -1010,7 +1017,7 @@ dissect_usb_string_descriptor(packet_info *pinfo _U_, proto_tree *parent_tree, t
char *str;
/* unicode string */
- str=tvb_get_ephemeral_unicode_string(tvb, offset, (len-2)/2, ENC_LITTLE_ENDIAN);
+ str = tvb_get_ephemeral_unicode_string(tvb, offset, len-2, ENC_LITTLE_ENDIAN);
proto_tree_add_string(tree, hf_usb_bString, tvb, offset, len-2, str);
offset += len-2;
}
@@ -1028,61 +1035,70 @@ dissect_usb_string_descriptor(packet_info *pinfo _U_, proto_tree *parent_tree, t
static int
dissect_usb_interface_descriptor(packet_info *pinfo, proto_tree *parent_tree, tvbuff_t *tvb, int offset, usb_trans_info_t *usb_trans_info, usb_conv_info_t *usb_conv_info)
{
- proto_item *item=NULL;
- proto_tree *tree=NULL;
- int old_offset=offset;
- guint8 len;
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset = offset;
+ guint8 len;
+ guint8 interface_num;
+ guint8 alt_setting;
if(parent_tree){
- item=proto_tree_add_text(parent_tree, tvb, offset, -1, "INTERFACE DESCRIPTOR");
- tree=proto_item_add_subtree(item, ett_descriptor_device);
+ item = proto_tree_add_text(parent_tree, tvb, offset, -1, "INTERFACE DESCRIPTOR");
+ tree = proto_item_add_subtree(item, ett_descriptor_device);
}
- /* bLength */
- proto_tree_add_item(tree, hf_usb_bLength, tvb, offset, 1, ENC_LITTLE_ENDIAN);
len = tvb_get_guint8(tvb, offset);
- offset++;
-
- /* bDescriptorType */
- proto_tree_add_item(tree, hf_usb_bDescriptorType, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ dissect_usb_descriptor_header(tree, tvb, offset);
+ offset += 2;
/* bInterfaceNumber */
+ interface_num = tvb_get_guint8(tvb, offset);
proto_tree_add_item(tree, hf_usb_bInterfaceNumber, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
/* bAlternateSetting */
+ alt_setting = tvb_get_guint8(tvb, offset);
proto_tree_add_item(tree, hf_usb_bAlternateSetting, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
/* bNumEndpoints */
proto_tree_add_item(tree, hf_usb_bNumEndpoints, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
/* bInterfaceClass */
proto_tree_add_item(tree, hf_usb_bInterfaceClass, tvb, offset, 1, ENC_LITTLE_ENDIAN);
/* save the class so we can access it later in the endpoint descriptor */
- usb_conv_info->interfaceClass=tvb_get_guint8(tvb, offset);
- if(!pinfo->fd->flags.visited){
- usb_trans_info->interface_info=se_alloc0(sizeof(usb_conv_info_t));
- usb_trans_info->interface_info->interfaceClass=tvb_get_guint8(tvb, offset);
- usb_trans_info->interface_info->transactions=se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "usb transactions");
+ usb_conv_info->interfaceClass = tvb_get_guint8(tvb, offset);
+ if (!pinfo->fd->flags.visited && (alt_setting == 0)) {
+ conversation_t *conversation;
+ guint32 if_port;
+
+ usb_trans_info->interface_info = se_alloc0(sizeof(usb_conv_info_t));
+ usb_trans_info->interface_info->interfaceClass = tvb_get_guint8(tvb, offset);
+ /* save the subclass so we can access it later in class-specific descriptors */
+ usb_trans_info->interface_info->interfaceSubclass = tvb_get_guint8(tvb, offset+1);
+ usb_trans_info->interface_info->transactions = se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "usb transactions");
+
+ /* Register conversation for this interface in case CONTROL messages are sent to it */
+ if_port = htolel(INTERFACE_PORT | interface_num);
+ conversation = get_usb_conversation(pinfo, &pinfo->src, &pinfo->dst, if_port, pinfo->destport);
+ conversation_add_proto_data(conversation, proto_usb, usb_trans_info->interface_info);
}
- offset++;
+ offset += 1;
/* bInterfaceSubClass */
proto_tree_add_item(tree, hf_usb_bInterfaceSubClass, tvb, offset, 1, ENC_LITTLE_ENDIAN);
/* save the subclass so we can access it later in class-specific descriptors */
usb_conv_info->interfaceSubclass = tvb_get_guint8(tvb, offset);
- offset++;
+ offset += 1;
/* bInterfaceProtocol */
proto_tree_add_item(tree, hf_usb_bInterfaceProtocol, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
/* iInterface */
proto_tree_add_item(tree, hf_usb_iInterface, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
if(item){
proto_item_set_len(item, len);
@@ -1100,44 +1116,50 @@ static const true_false_string tfs_endpoint_direction = {
"IN Endpoint",
"OUT Endpoint"
};
+
+void dissect_usb_endpoint_address(proto_tree *tree, tvbuff_t *tvb, int offset)
+{
+ proto_item *endpoint_item = NULL;
+ proto_tree *endpoint_tree = NULL;
+ guint8 endpoint;
+
+ if(tree){
+ endpoint_item = proto_tree_add_item(tree, hf_usb_bEndpointAddress, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ endpoint_tree = proto_item_add_subtree(endpoint_item, ett_configuration_bEndpointAddress);
+ }
+ endpoint = tvb_get_guint8(tvb, offset)&0x0f;
+ proto_tree_add_item(endpoint_tree, hf_usb_bEndpointAddress_direction, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(endpoint_item, " %s", (tvb_get_guint8(tvb, offset)&0x80)?"IN":"OUT");
+ proto_tree_add_item(endpoint_tree, hf_usb_bEndpointAddress_number, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(endpoint_item, " Endpoint:%d", endpoint);
+}
+
static int
dissect_usb_endpoint_descriptor(packet_info *pinfo, proto_tree *parent_tree, tvbuff_t *tvb, int offset, usb_trans_info_t *usb_trans_info _U_, usb_conv_info_t *usb_conv_info _U_)
{
- proto_item *item=NULL;
- proto_tree *tree=NULL;
- proto_item *endpoint_item=NULL;
- proto_tree *endpoint_tree=NULL;
- proto_item *ep_attrib_item=NULL;
- proto_tree *ep_attrib_tree=NULL;
- int old_offset=offset;
- guint8 endpoint;
- guint8 len;
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ proto_item *ep_attrib_item = NULL;
+ proto_tree *ep_attrib_tree = NULL;
+ proto_item *ep_pktsize_item;
+ proto_tree *ep_pktsize_tree;
+ int old_offset = offset;
+ guint8 endpoint;
+ guint8 ep_type;
+ guint8 len;
if(parent_tree){
- item=proto_tree_add_text(parent_tree, tvb, offset, -1, "ENDPOINT DESCRIPTOR");
- tree=proto_item_add_subtree(item, ett_descriptor_device);
+ item = proto_tree_add_text(parent_tree, tvb, offset, -1, "ENDPOINT DESCRIPTOR");
+ tree = proto_item_add_subtree(item, ett_descriptor_device);
}
- /* bLength */
- proto_tree_add_item(tree, hf_usb_bLength, tvb, offset, 1, ENC_LITTLE_ENDIAN);
len = tvb_get_guint8(tvb, offset);
- offset++;
+ dissect_usb_descriptor_header(tree, tvb, offset);
+ offset += 2;
- /* bDescriptorType */
- proto_tree_add_item(tree, hf_usb_bDescriptorType, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- /* bEndpointAddress */
- if(tree){
- endpoint_item=proto_tree_add_item(tree, hf_usb_bEndpointAddress, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- endpoint_tree=proto_item_add_subtree(endpoint_item, ett_configuration_bEndpointAddress);
- }
- endpoint=tvb_get_guint8(tvb, offset)&0x0f;
- proto_tree_add_item(endpoint_tree, hf_usb_bEndpointAddress_direction, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_item_append_text(endpoint_item, " %s", (tvb_get_guint8(tvb, offset)&0x80)?"IN":"OUT");
- proto_tree_add_item(endpoint_tree, hf_usb_bEndpointAddress_number, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_item_append_text(endpoint_item, " Endpoint:%d", endpoint);
- offset++;
+ endpoint = tvb_get_guint8(tvb, offset)&0x0f;
+ dissect_usb_endpoint_address(tree, tvb, offset);
+ offset += 1;
/* Together with class from the interface descriptor we know what kind
* of class the device at endpoint is.
@@ -1157,10 +1179,10 @@ dissect_usb_endpoint_descriptor(packet_info *pinfo, proto_tree *parent_tree, tvb
/* Create a new address structure that points to the same device
* but the new endpoint.
*/
- usb_addr.device=((usb_address_t *)(pinfo->src.data))->device;
- usb_addr.endpoint=endpoint;
+ usb_addr.device = ((usb_address_t *)(pinfo->src.data))->device;
+ usb_addr.endpoint = htolel(endpoint);
SET_ADDRESS(&tmp_addr, AT_USB, USB_ADDR_LEN, (char *)&usb_addr);
- conversation=get_usb_conversation(pinfo, &tmp_addr, &pinfo->dst, endpoint, pinfo->destport);
+ conversation = get_usb_conversation(pinfo, &tmp_addr, &pinfo->dst, usb_addr.endpoint, pinfo->destport);
} else {
static address tmp_addr;
static usb_address_t usb_addr;
@@ -1168,34 +1190,40 @@ dissect_usb_endpoint_descriptor(packet_info *pinfo, proto_tree *parent_tree, tvb
/* Create a new address structure that points to the same device
* but the new endpoint.
*/
- usb_addr.device=((usb_address_t *)(pinfo->dst.data))->device;
- usb_addr.endpoint=endpoint;
+ usb_addr.device = ((usb_address_t *)(pinfo->dst.data))->device;
+ usb_addr.endpoint = htolel(endpoint);
SET_ADDRESS(&tmp_addr, AT_USB, USB_ADDR_LEN, (char *)&usb_addr);
- conversation=get_usb_conversation(pinfo, &pinfo->src, &tmp_addr, pinfo->srcport, endpoint);
+ conversation = get_usb_conversation(pinfo, &pinfo->src, &tmp_addr, pinfo->srcport, usb_addr.endpoint);
}
conversation_add_proto_data(conversation, proto_usb, usb_trans_info->interface_info);
}
/* bmAttributes */
+ ep_type = ENDPOINT_TYPE(tvb_get_guint8(tvb, offset));
if (tree) {
- ep_attrib_item=proto_tree_add_item(tree, hf_usb_bmAttributes, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- ep_attrib_tree=proto_item_add_subtree(ep_attrib_item, ett_endpoint_bmAttributes);
+ ep_attrib_item = proto_tree_add_item(tree, hf_usb_bmAttributes, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ ep_attrib_tree = proto_item_add_subtree(ep_attrib_item, ett_endpoint_bmAttributes);
}
proto_tree_add_item(ep_attrib_tree, hf_usb_bEndpointAttributeTransfer, tvb, offset, 1, ENC_LITTLE_ENDIAN);
/* isochronous only */
proto_tree_add_item(ep_attrib_tree, hf_usb_bEndpointAttributeSynchonisation, tvb, offset, 1, ENC_LITTLE_ENDIAN);
/* isochronous only */
proto_tree_add_item(ep_attrib_tree, hf_usb_bEndpointAttributeBehaviour, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
/* wMaxPacketSize */
- proto_tree_add_item(tree, hf_usb_wMaxPacketSize, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ ep_pktsize_item = proto_tree_add_item(tree, hf_usb_wMaxPacketSize, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ ep_pktsize_tree = proto_item_add_subtree(ep_pktsize_item, ett_endpoint_wMaxPacketSize);
+ if ((ep_type == ENDPOINT_TYPE_INTERRUPT) || (ep_type == ENDPOINT_TYPE_ISOCHRONOUS)) {
+ proto_tree_add_item(ep_pktsize_tree, hf_usb_wMaxPacketSize_slots, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ }
+ proto_tree_add_item(ep_pktsize_tree, hf_usb_wMaxPacketSize_size, tvb, offset, 2, ENC_LITTLE_ENDIAN);
offset+=2;
/* bInterval */
proto_tree_add_item(tree, hf_usb_bInterval, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
if(item){
proto_item_set_len(item, len);
@@ -1211,49 +1239,44 @@ dissect_usb_endpoint_descriptor(packet_info *pinfo, proto_tree *parent_tree, tvb
/* ECN */
static int
dissect_usb_interface_assn_descriptor(packet_info *pinfo _U_, proto_tree *parent_tree,
- tvbuff_t *tvb, int offset, usb_trans_info_t *usb_trans_info _U_,
- usb_conv_info_t *usb_conv_info _U_)
+ tvbuff_t *tvb, int offset, usb_trans_info_t *usb_trans_info _U_,
+ usb_conv_info_t *usb_conv_info _U_)
{
- proto_item *item=NULL;
- proto_tree *tree=NULL;
- int old_offset=offset;
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset = offset;
if(parent_tree){
- item=proto_tree_add_text(parent_tree, tvb, offset, -1, "INTERFACE ASSOCIATION DESCRIPTOR");
- tree=proto_item_add_subtree(item, ett_descriptor_device);
+ item = proto_tree_add_text(parent_tree, tvb, offset, -1, "INTERFACE ASSOCIATION DESCRIPTOR");
+ tree = proto_item_add_subtree(item, ett_descriptor_device);
}
- /* bLength */
- proto_tree_add_item(tree, hf_usb_bLength, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- /* bDescriptorType */
- proto_tree_add_item(tree, hf_usb_bDescriptorType, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ dissect_usb_descriptor_header(tree, tvb, offset);
+ offset += 2;
/* bFirstInterface */
proto_tree_add_item(tree, hf_usb_bFirstInterface, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
/* bInterfaceCount */
proto_tree_add_item(tree, hf_usb_bInterfaceCount, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
/* bFunctionClass */
proto_tree_add_item(tree, hf_usb_bFunctionClass, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
/* bFunctionSubclass */
proto_tree_add_item(tree, hf_usb_bFunctionSubClass, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
/* bFunctionProtocol */
proto_tree_add_item(tree, hf_usb_bFunctionProtocol, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
/* iFunction */
proto_tree_add_item(tree, hf_usb_iFunction, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
if(item){
proto_item_set_len(item, offset-old_offset);
@@ -1265,20 +1288,20 @@ dissect_usb_interface_assn_descriptor(packet_info *pinfo _U_, proto_tree *parent
static int
dissect_usb_unknown_descriptor(packet_info *pinfo _U_, proto_tree *parent_tree, tvbuff_t *tvb, int offset, usb_trans_info_t *usb_trans_info _U_, usb_conv_info_t *usb_conv_info _U_)
{
- proto_item *item=NULL;
- proto_tree *tree=NULL;
- int old_offset=offset;
- guint8 bLength;
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset = offset;
+ guint8 bLength;
if(parent_tree){
- item=proto_tree_add_text(parent_tree, tvb, offset, -1, "UNKNOWN DESCRIPTOR");
- tree=proto_item_add_subtree(item, ett_descriptor_device);
+ item = proto_tree_add_text(parent_tree, tvb, offset, -1, "UNKNOWN DESCRIPTOR");
+ tree = proto_item_add_subtree(item, ett_descriptor_device);
}
/* bLength */
proto_tree_add_item(tree, hf_usb_bLength, tvb, offset, 1, ENC_LITTLE_ENDIAN);
bLength = tvb_get_guint8(tvb, offset);
- offset++;
+ offset += 1;
if (bLength < 3) {
if(item){
proto_item_set_len(item, offset-old_offset);
@@ -1294,7 +1317,7 @@ dissect_usb_unknown_descriptor(packet_info *pinfo _U_, proto_tree *parent_tree,
/* bDescriptorType */
proto_tree_add_item(tree, hf_usb_bDescriptorType, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
offset += bLength - 2;
@@ -1321,67 +1344,65 @@ static const true_false_string tfs_remotewakeup = {
static int
dissect_usb_configuration_descriptor(packet_info *pinfo _U_, proto_tree *parent_tree, tvbuff_t *tvb, int offset, usb_trans_info_t *usb_trans_info, usb_conv_info_t *usb_conv_info)
{
- proto_item *item=NULL;
- proto_tree *tree=NULL;
- int old_offset=offset;
- guint16 len;
- proto_item *flags_item=NULL;
- proto_tree *flags_tree=NULL;
- guint8 flags;
- proto_item *power_item=NULL;
- guint8 power;
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset = offset;
+ guint16 len;
+ proto_item *flags_item = NULL;
+ proto_tree *flags_tree = NULL;
+ guint8 flags;
+ proto_item *power_item;
+ guint8 power;
+
+ usb_conv_info->interfaceClass = IF_CLASS_UNKNOWN;
+ usb_conv_info->interfaceSubclass = IF_SUBCLASS_UNKNOWN;
if(parent_tree){
- item=proto_tree_add_text(parent_tree, tvb, offset, -1, "CONFIGURATION DESCRIPTOR");
- tree=proto_item_add_subtree(item, ett_descriptor_device);
+ item = proto_tree_add_text(parent_tree, tvb, offset, -1, "CONFIGURATION DESCRIPTOR");
+ tree = proto_item_add_subtree(item, ett_descriptor_device);
}
- /* bLength */
- proto_tree_add_item(tree, hf_usb_bLength, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
-
- /* bDescriptorType */
- proto_tree_add_item(tree, hf_usb_bDescriptorType, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ dissect_usb_descriptor_header(tree, tvb, offset);
+ offset += 2;
/* wTotalLength */
proto_tree_add_item(tree, hf_usb_wTotalLength, tvb, offset, 2, ENC_LITTLE_ENDIAN);
- len=tvb_get_letohs(tvb, offset);
+ len = tvb_get_letohs(tvb, offset);
offset+=2;
/* bNumInterfaces */
proto_tree_add_item(tree, hf_usb_bNumInterfaces, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
/* bConfigurationValue */
proto_tree_add_item(tree, hf_usb_bConfigurationValue, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
/* iConfiguration */
proto_tree_add_item(tree, hf_usb_iConfiguration, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
/* bmAttributes */
if(tree){
- flags_item=proto_tree_add_item(tree, hf_usb_configuration_bmAttributes, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- flags_tree=proto_item_add_subtree(flags_item, ett_configuration_bmAttributes);
+ flags_item = proto_tree_add_item(tree, hf_usb_configuration_bmAttributes, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ flags_tree = proto_item_add_subtree(flags_item, ett_configuration_bmAttributes);
}
- flags=tvb_get_guint8(tvb, offset);
+ flags = tvb_get_guint8(tvb, offset);
proto_tree_add_item(flags_tree, hf_usb_configuration_legacy10buspowered, tvb, offset, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(flags_tree, hf_usb_configuration_selfpowered, tvb, offset, 1, ENC_LITTLE_ENDIAN);
proto_item_append_text(flags_item, " %sSELF-POWERED", (flags&0x40)?"":"NOT ");
proto_tree_add_item(flags_tree, hf_usb_configuration_remotewakeup, tvb, offset, 1, ENC_LITTLE_ENDIAN);
proto_item_append_text(flags_item, " %sREMOTE-WAKEUP", (flags&0x20)?"":"NO ");
- offset++;
+ offset += 1;
/* bMaxPower */
- power_item=proto_tree_add_item(tree, hf_usb_bMaxPower, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- power=tvb_get_guint8(tvb, offset);
+ power_item = proto_tree_add_item(tree, hf_usb_bMaxPower, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ power = tvb_get_guint8(tvb, offset);
proto_item_append_text(power_item, " (%dmA)", power*2);
- offset++;
+ offset += 1;
/* initialize interface_info to NULL */
- usb_trans_info->interface_info=NULL;
+ usb_trans_info->interface_info = NULL;
/* decode any additional interface and endpoint descriptors */
while(len>(old_offset-offset)){
@@ -1391,23 +1412,23 @@ dissect_usb_configuration_descriptor(packet_info *pinfo _U_, proto_tree *parent_
if(tvb_length_remaining(tvb, offset)<2){
break;
}
- next_type=tvb_get_guint8(tvb, offset+1);
+ next_type = tvb_get_guint8(tvb, offset+1);
switch(next_type){
case USB_DT_INTERFACE:
- offset=dissect_usb_interface_descriptor(pinfo, parent_tree, tvb, offset, usb_trans_info, usb_conv_info);
+ offset = dissect_usb_interface_descriptor(pinfo, parent_tree, tvb, offset, usb_trans_info, usb_conv_info);
break;
case USB_DT_ENDPOINT:
- offset=dissect_usb_endpoint_descriptor(pinfo, parent_tree, tvb, offset, usb_trans_info, usb_conv_info);
+ offset = dissect_usb_endpoint_descriptor(pinfo, parent_tree, tvb, offset, usb_trans_info, usb_conv_info);
break;
case USB_DT_INTERFACE_ASSOCIATION:
- offset=dissect_usb_interface_assn_descriptor(pinfo, parent_tree, tvb, offset, usb_trans_info, usb_conv_info);
+ offset = dissect_usb_interface_assn_descriptor(pinfo, parent_tree, tvb, offset, usb_trans_info, usb_conv_info);
break;
default:
next_tvb = tvb_new_subset_remaining(tvb, offset);
if (dissector_try_uint(usb_descriptor_dissector_table, usb_conv_info->interfaceClass, next_tvb, pinfo, parent_tree)){
offset += tvb_get_guint8(next_tvb, 0);
} else {
- offset=dissect_usb_unknown_descriptor(pinfo, parent_tree, tvb, offset, usb_trans_info, usb_conv_info);
+ offset = dissect_usb_unknown_descriptor(pinfo, parent_tree, tvb, offset, usb_trans_info, usb_conv_info);
}
break;
/* was: return offset; */
@@ -1418,6 +1439,17 @@ dissect_usb_configuration_descriptor(packet_info *pinfo _U_, proto_tree *parent_
proto_item_set_len(item, offset-old_offset);
}
+ /* Clear any class association from the Control endpoint.
+ * We need the association temporarily, to establish
+ * context for class-specific descriptor dissectors,
+ * but the association must not persist beyond this function.
+ * If it did, all traffic on the Control endpoint would be labeled
+ * as belonging to the class of the last INTERFACE descriptor,
+ * which would be especially inappropriate for composite devices.
+ */
+ usb_conv_info->interfaceClass = IF_CLASS_UNKNOWN;
+ usb_conv_info->interfaceSubclass = IF_SUBCLASS_UNKNOWN;
+
return offset;
}
@@ -1427,13 +1459,13 @@ dissect_usb_setup_get_descriptor_request(packet_info *pinfo, proto_tree *tree, t
{
/* descriptor index */
proto_tree_add_item(tree, hf_usb_descriptor_index, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- usb_trans_info->u.get_descriptor.index=tvb_get_guint8(tvb, offset);
- offset++;
+ usb_trans_info->u.get_descriptor.index = tvb_get_guint8(tvb, offset);
+ offset += 1;
/* descriptor type */
proto_tree_add_item(tree, hf_usb_bDescriptorType, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- usb_trans_info->u.get_descriptor.type=tvb_get_guint8(tvb, offset);
- offset++;
+ usb_trans_info->u.get_descriptor.type = tvb_get_guint8(tvb, offset);
+ offset += 1;
if (check_col(pinfo->cinfo, COL_INFO)) {
col_append_fstr(pinfo->cinfo, COL_INFO, " %s",
val_to_str(usb_trans_info->u.get_descriptor.type, descriptor_type_vals, "Unknown type %u"));
@@ -1460,26 +1492,26 @@ dissect_usb_setup_get_descriptor_response(packet_info *pinfo, proto_tree *tree,
}
switch(usb_trans_info->u.get_descriptor.type){
case USB_DT_DEVICE:
- offset=dissect_usb_device_descriptor(pinfo, tree, tvb, offset, usb_trans_info, usb_conv_info);
+ offset = dissect_usb_device_descriptor(pinfo, tree, tvb, offset, usb_trans_info, usb_conv_info);
break;
case USB_DT_CONFIG:
- offset=dissect_usb_configuration_descriptor(pinfo, tree, tvb, offset, usb_trans_info, usb_conv_info);
+ offset = dissect_usb_configuration_descriptor(pinfo, tree, tvb, offset, usb_trans_info, usb_conv_info);
break;
case USB_DT_STRING:
- offset=dissect_usb_string_descriptor(pinfo, tree, tvb, offset, usb_trans_info, usb_conv_info);
+ offset = dissect_usb_string_descriptor(pinfo, tree, tvb, offset, usb_trans_info, usb_conv_info);
break;
case USB_DT_INTERFACE:
- offset=dissect_usb_interface_descriptor(pinfo, tree, tvb, offset, usb_trans_info, usb_conv_info);
+ offset = dissect_usb_interface_descriptor(pinfo, tree, tvb, offset, usb_trans_info, usb_conv_info);
break;
case USB_DT_ENDPOINT:
- offset=dissect_usb_endpoint_descriptor(pinfo, tree, tvb, offset, usb_trans_info, usb_conv_info);
+ offset = dissect_usb_endpoint_descriptor(pinfo, tree, tvb, offset, usb_trans_info, usb_conv_info);
break;
case USB_DT_DEVICE_QUALIFIER:
- offset=dissect_usb_device_qualifier_descriptor(pinfo, tree, tvb, offset, usb_trans_info, usb_conv_info);
+ offset = dissect_usb_device_qualifier_descriptor(pinfo, tree, tvb, offset, usb_trans_info, usb_conv_info);
break;
case USB_DT_RPIPE:
if (usb_conv_info->interfaceClass == IF_CLASS_HID) {
- offset=dissect_usb_hid_get_report_descriptor(pinfo, tree, tvb, offset, usb_trans_info, usb_conv_info);
+ offset = dissect_usb_hid_get_report_descriptor(pinfo, tree, tvb, offset, usb_trans_info, usb_conv_info);
break;
}
/* else fall through as default/unknown */
@@ -1524,7 +1556,7 @@ dissect_usb_setup_get_interface_response(packet_info *pinfo _U_, proto_tree *tre
{
/* alternate setting */
proto_tree_add_item(tree, hf_usb_bAlternateSetting, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
return offset;
}
@@ -1740,42 +1772,42 @@ typedef struct _usb_setup_dissector_table_t {
guint8 request;
usb_setup_dissector dissector;
} usb_setup_dissector_table_t;
-#define USB_SETUP_GET_STATUS 0
-#define USB_SETUP_CLEAR_FEATURE 1
-#define USB_SETUP_SET_FEATURE 2
-#define USB_SETUP_SET_ADDRESS 5
-#define USB_SETUP_GET_DESCRIPTOR 6
-#define USB_SETUP_SET_DESCRIPTOR 7
-#define USB_SETUP_GET_CONFIGURATION 8
-#define USB_SETUP_SET_CONFIGURATION 9
+#define USB_SETUP_GET_STATUS 0
+#define USB_SETUP_CLEAR_FEATURE 1
+#define USB_SETUP_SET_FEATURE 3
+#define USB_SETUP_SET_ADDRESS 5
+#define USB_SETUP_GET_DESCRIPTOR 6
+#define USB_SETUP_SET_DESCRIPTOR 7
+#define USB_SETUP_GET_CONFIGURATION 8
+#define USB_SETUP_SET_CONFIGURATION 9
#define USB_SETUP_GET_INTERFACE 10
#define USB_SETUP_SET_INTERFACE 11
#define USB_SETUP_SYNCH_FRAME 12
static const usb_setup_dissector_table_t setup_request_dissectors[] = {
- {USB_SETUP_GET_STATUS, dissect_usb_setup_get_status_request},
- {USB_SETUP_CLEAR_FEATURE, dissect_usb_setup_clear_feature_request},
- {USB_SETUP_SET_FEATURE, dissect_usb_setup_set_feature_request},
- {USB_SETUP_SET_ADDRESS, dissect_usb_setup_set_address_request},
- {USB_SETUP_GET_DESCRIPTOR, dissect_usb_setup_get_descriptor_request},
+ {USB_SETUP_GET_STATUS, dissect_usb_setup_get_status_request},
+ {USB_SETUP_CLEAR_FEATURE, dissect_usb_setup_clear_feature_request},
+ {USB_SETUP_SET_FEATURE, dissect_usb_setup_set_feature_request},
+ {USB_SETUP_SET_ADDRESS, dissect_usb_setup_set_address_request},
+ {USB_SETUP_GET_DESCRIPTOR, dissect_usb_setup_get_descriptor_request},
{USB_SETUP_SET_CONFIGURATION, dissect_usb_setup_set_configuration_request},
- {USB_SETUP_GET_INTERFACE, dissect_usb_setup_get_interface_request},
- {USB_SETUP_SET_INTERFACE, dissect_usb_setup_set_interface_request},
- {USB_SETUP_SYNCH_FRAME, dissect_usb_setup_synch_frame_request},
+ {USB_SETUP_GET_INTERFACE, dissect_usb_setup_get_interface_request},
+ {USB_SETUP_SET_INTERFACE, dissect_usb_setup_set_interface_request},
+ {USB_SETUP_SYNCH_FRAME, dissect_usb_setup_synch_frame_request},
{0, NULL}
};
static const usb_setup_dissector_table_t setup_response_dissectors[] = {
- {USB_SETUP_GET_STATUS, dissect_usb_setup_get_status_response},
- {USB_SETUP_CLEAR_FEATURE, dissect_usb_setup_clear_feature_response},
- {USB_SETUP_SET_FEATURE, dissect_usb_setup_set_feature_response},
- {USB_SETUP_SET_ADDRESS, dissect_usb_setup_set_address_response},
- {USB_SETUP_GET_DESCRIPTOR, dissect_usb_setup_get_descriptor_response},
+ {USB_SETUP_GET_STATUS, dissect_usb_setup_get_status_response},
+ {USB_SETUP_CLEAR_FEATURE, dissect_usb_setup_clear_feature_response},
+ {USB_SETUP_SET_FEATURE, dissect_usb_setup_set_feature_response},
+ {USB_SETUP_SET_ADDRESS, dissect_usb_setup_set_address_response},
+ {USB_SETUP_GET_DESCRIPTOR, dissect_usb_setup_get_descriptor_response},
{USB_SETUP_GET_CONFIGURATION, dissect_usb_setup_get_configuration_response},
{USB_SETUP_SET_CONFIGURATION, dissect_usb_setup_set_configuration_response},
- {USB_SETUP_GET_INTERFACE, dissect_usb_setup_get_interface_response},
- {USB_SETUP_SET_INTERFACE, dissect_usb_setup_set_interface_response},
- {USB_SETUP_SYNCH_FRAME, dissect_usb_setup_synch_frame_response},
+ {USB_SETUP_GET_INTERFACE, dissect_usb_setup_get_interface_response},
+ {USB_SETUP_SET_INTERFACE, dissect_usb_setup_set_interface_response},
+ {USB_SETUP_SYNCH_FRAME, dissect_usb_setup_synch_frame_response},
{0, NULL}
};
@@ -1820,11 +1852,11 @@ static int
dissect_usb_bmrequesttype(proto_tree *parent_tree, tvbuff_t *tvb, int offset,
int *type)
{
- proto_item *item=NULL;
- proto_tree *tree=NULL;
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
if(parent_tree){
- item=proto_tree_add_item(parent_tree, hf_usb_bmRequestType, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ item = proto_tree_add_item(parent_tree, hf_usb_bmRequestType, tvb, offset, 1, ENC_LITTLE_ENDIAN);
tree = proto_item_add_subtree(item, ett_usb_setup_bmrequesttype);
}
@@ -1845,10 +1877,10 @@ dissect_usb_bmrequesttype(proto_tree *parent_tree, tvbuff_t *tvb, int offset,
static void
dissect_linux_usb_pseudo_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- guint8 transfer_type;
- guint8 endpoint_number;
- guint8 transfer_type_and_direction;
- guint8 type, flag;
+ guint8 transfer_type;
+ guint8 endpoint_number;
+ guint8 transfer_type_and_direction;
+ guint8 type, flag;
guint16 val16;
guint32 val32;
guint64 val64;
@@ -1864,7 +1896,7 @@ dissect_linux_usb_pseudo_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
proto_tree_add_item(tree, hf_usb_transfer_type, tvb, 9, 1, ENC_BIG_ENDIAN);
if (check_col(pinfo->cinfo, COL_INFO)) {
- transfer_type = tvb_get_guint8(tvb, 9);
+ transfer_type = tvb_get_guint8(tvb, 9);
endpoint_number = tvb_get_guint8(tvb, 10);
transfer_type_and_direction = (transfer_type & 0x7F) | (endpoint_number & 0x80);
col_append_str(pinfo->cinfo, COL_INFO,
@@ -1942,18 +1974,18 @@ static void
dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent,
gboolean header_len_64_bytes)
{
- unsigned int offset = 0;
- int type, endpoint;
- guint8 setup_flag;
- proto_tree *tree = NULL;
- guint32 tmp_addr;
- static usb_address_t src_addr, dst_addr; /* has to be static due to SET_ADDRESS */
- guint32 src_endpoint, dst_endpoint;
- gboolean is_request=FALSE;
- usb_conv_info_t *usb_conv_info=NULL;
- usb_trans_info_t *usb_trans_info=NULL;
- conversation_t *conversation;
- usb_tap_data_t *tap_data=NULL;
+ unsigned int offset = 0;
+ int type, endpoint;
+ guint8 setup_flag;
+ proto_tree *tree = NULL;
+ guint32 tmp_addr;
+ static usb_address_t src_addr, dst_addr; /* has to be static due to SET_ADDRESS */
+ guint32 src_endpoint, dst_endpoint;
+ gboolean is_request = FALSE;
+ usb_conv_info_t *usb_conv_info = NULL;
+ usb_trans_info_t *usb_trans_info = NULL;
+ conversation_t *conversation;
+ usb_tap_data_t *tap_data = NULL;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "USB");
@@ -1966,23 +1998,23 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent,
}
dissect_linux_usb_pseudo_header(tvb, pinfo, tree);
- is_request = (tvb_get_guint8(tvb, 8) == URB_SUBMIT) ? TRUE : FALSE;
- type = tvb_get_guint8(tvb, 9);
- endpoint = tvb_get_guint8(tvb, 10) & (~URB_TRANSFER_IN);
- tmp_addr = tvb_get_guint8(tvb, 11);
- setup_flag = tvb_get_guint8(tvb, 14);
- offset += 40; /* skip first part of the pseudo-header */
+ is_request = (tvb_get_guint8(tvb, 8) == URB_SUBMIT) ? TRUE : FALSE;
+ type = tvb_get_guint8(tvb, 9);
+ endpoint = tvb_get_guint8(tvb, 10) & (~URB_TRANSFER_IN);
+ tmp_addr = tvb_get_guint8(tvb, 11);
+ setup_flag = tvb_get_guint8(tvb, 14);
+ offset += 40; /* skip first part of the pseudo-header */
/* Set up addresses and ports. */
if (is_request) {
- src_addr.device = 0xffffffff;
+ src_addr.device = 0xffffffff;
src_addr.endpoint = src_endpoint = NO_ENDPOINT;
- dst_addr.device = htolel(tmp_addr);
+ dst_addr.device = htolel(tmp_addr);
dst_addr.endpoint = dst_endpoint = htolel(endpoint);
} else {
- src_addr.device = htolel(tmp_addr);
+ src_addr.device = htolel(tmp_addr);
src_addr.endpoint = src_endpoint = htolel(endpoint);
- dst_addr.device = 0xffffffff;
+ dst_addr.device = 0xffffffff;
dst_addr.endpoint = dst_endpoint = NO_ENDPOINT;
}
@@ -1990,14 +2022,14 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent,
SET_ADDRESS(&pinfo->src, AT_USB, USB_ADDR_LEN, (char *)&src_addr);
SET_ADDRESS(&pinfo->net_dst, AT_USB, USB_ADDR_LEN, (char *)&dst_addr);
SET_ADDRESS(&pinfo->dst, AT_USB, USB_ADDR_LEN, (char *)&dst_addr);
- pinfo->ptype=PT_USB;
- pinfo->srcport=src_endpoint;
- pinfo->destport=dst_endpoint;
+ pinfo->ptype = PT_USB;
+ pinfo->srcport = src_endpoint;
+ pinfo->destport = dst_endpoint;
- conversation=get_usb_conversation(pinfo, &pinfo->src, &pinfo->dst, pinfo->srcport, pinfo->destport);
+ conversation = get_usb_conversation(pinfo, &pinfo->src, &pinfo->dst, pinfo->srcport, pinfo->destport);
- usb_conv_info=get_usb_conv_info(conversation);
- pinfo->usb_conv_info=usb_conv_info;
+ usb_conv_info = get_usb_conv_info(conversation);
+ pinfo->usb_conv_info = usb_conv_info;
/* request/response matching so we can keep track of transaction specific
@@ -2005,61 +2037,66 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent,
*/
if(is_request){
/* this is a request */
- usb_trans_info=se_tree_lookup32(usb_conv_info->transactions, pinfo->fd->num);
+ usb_trans_info = se_tree_lookup32(usb_conv_info->transactions, pinfo->fd->num);
if(!usb_trans_info){
- usb_trans_info=se_alloc0(sizeof(usb_trans_info_t));
- usb_trans_info->request_in=pinfo->fd->num;
- usb_trans_info->req_time=pinfo->fd->abs_ts;
+ usb_trans_info = se_alloc0(sizeof(usb_trans_info_t));
+ usb_trans_info->request_in = pinfo->fd->num;
+ usb_trans_info->req_time = pinfo->fd->abs_ts;
+ usb_trans_info->header_len_64 = header_len_64_bytes;
+
se_tree_insert32(usb_conv_info->transactions, pinfo->fd->num, usb_trans_info);
}
- usb_conv_info->usb_trans_info=usb_trans_info;
+ usb_conv_info->usb_trans_info = usb_trans_info;
if(usb_trans_info->response_in){
proto_item *ti;
- ti=proto_tree_add_uint(tree, hf_usb_response_in, tvb, 0, 0, usb_trans_info->response_in);
+ ti = proto_tree_add_uint(tree, hf_usb_response_in, tvb, 0, 0, usb_trans_info->response_in);
PROTO_ITEM_SET_GENERATED(ti);
}
} else {
/* this is a response */
if(pinfo->fd->flags.visited){
- usb_trans_info=se_tree_lookup32(usb_conv_info->transactions, pinfo->fd->num);
+ usb_trans_info = se_tree_lookup32(usb_conv_info->transactions, pinfo->fd->num);
} else {
- usb_trans_info=se_tree_lookup32_le(usb_conv_info->transactions, pinfo->fd->num);
+ usb_trans_info = se_tree_lookup32_le(usb_conv_info->transactions, pinfo->fd->num);
if(usb_trans_info){
- usb_trans_info->response_in=pinfo->fd->num;
+ usb_trans_info->response_in = pinfo->fd->num;
se_tree_insert32(usb_conv_info->transactions, pinfo->fd->num, usb_trans_info);
}
}
- usb_conv_info->usb_trans_info=usb_trans_info;
+ usb_conv_info->usb_trans_info = usb_trans_info;
if(usb_trans_info && usb_trans_info->request_in){
proto_item *ti;
nstime_t t, deltat;
- ti=proto_tree_add_uint(tree, hf_usb_request_in, tvb, 0, 0, usb_trans_info->request_in);
+ ti = proto_tree_add_uint(tree, hf_usb_request_in, tvb, 0, 0, usb_trans_info->request_in);
PROTO_ITEM_SET_GENERATED(ti);
t = pinfo->fd->abs_ts;
nstime_delta(&deltat, &t, &usb_trans_info->req_time);
- ti=proto_tree_add_time(tree, hf_usb_time, tvb, 0, 0, &deltat);
+ ti = proto_tree_add_time(tree, hf_usb_time, tvb, 0, 0, &deltat);
PROTO_ITEM_SET_GENERATED(ti);
}
}
- tap_data=ep_alloc(sizeof(usb_tap_data_t));
- tap_data->urb_type=tvb_get_guint8(tvb, 8);
- tap_data->transfer_type=(guint8)type;
- tap_data->conv_info=usb_conv_info;
- tap_data->trans_info=usb_trans_info;
- tap_queue_packet(usb_tap, pinfo, tap_data);
+ tap_data = ep_alloc(sizeof(usb_tap_data_t));
+ tap_data->urb_type = tvb_get_guint8(tvb, 8);
+ tap_data->transfer_type = (guint8)type;
+ tap_data->conv_info = usb_conv_info;
+ tap_data->trans_info = usb_trans_info;
+
+ if (type != URB_CONTROL) {
+ tap_queue_packet(usb_tap, pinfo, tap_data);
+ }
switch(type){
case URB_BULK:
{
proto_item *item;
- item=proto_tree_add_uint(tree, hf_usb_bInterfaceClass, tvb, 0, 0, usb_conv_info->interfaceClass);
+ item = proto_tree_add_uint(tree, hf_usb_bInterfaceClass, tvb, 0, 0, usb_conv_info->interfaceClass);
PROTO_ITEM_SET_GENERATED(item);
/* Skip setup/isochronous header - it's not applicable */
@@ -2075,8 +2112,8 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent,
if(tvb_reported_length_remaining(tvb, offset)){
tvbuff_t *next_tvb;
- pinfo->usb_conv_info=usb_conv_info;
- next_tvb=tvb_new_subset_remaining(tvb, offset);
+ pinfo->usb_conv_info = usb_conv_info;
+ next_tvb = tvb_new_subset_remaining(tvb, offset);
if (try_heuristics && dissector_try_heuristic(heur_bulk_subdissector_list, next_tvb, pinfo, parent)) {
return;
}
@@ -2086,6 +2123,37 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent,
}
}
break;
+ case URB_INTERRUPT:
+ {
+ proto_item *item;
+
+ item = proto_tree_add_uint(tree, hf_usb_bInterfaceClass, tvb, 0, 0, usb_conv_info->interfaceClass);
+ PROTO_ITEM_SET_GENERATED(item);
+
+ /* Skip setup/isochronous header - it's not applicable */
+ offset += 8;
+
+ /*
+ * If this has a 64-byte header, process the extra 16 bytes of
+ * pseudo-header information.
+ */
+ if (header_len_64_bytes)
+ offset = dissect_linux_usb_pseudo_header_ext(tvb, offset, pinfo, tree);
+
+ if(tvb_reported_length_remaining(tvb, offset)){
+ tvbuff_t *next_tvb;
+
+ pinfo->usb_conv_info = usb_conv_info;
+ next_tvb = tvb_new_subset_remaining(tvb, offset);
+ if (try_heuristics && dissector_try_heuristic(heur_interrupt_subdissector_list, next_tvb, pinfo, parent)) {
+ return;
+ }
+ else if(dissector_try_uint(usb_interrupt_dissector_table, usb_conv_info->interfaceClass, next_tvb, pinfo, parent)){
+ return;
+ }
+ }
+ }
+ break;
case URB_CONTROL:
{
const usb_setup_dissector_table_t *tmp;
@@ -2094,9 +2162,6 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent,
proto_tree *setup_tree = NULL;
int type_2;
- ti=proto_tree_add_uint(tree, hf_usb_bInterfaceClass, tvb, offset, 0, usb_conv_info->interfaceClass);
- PROTO_ITEM_SET_GENERATED(ti);
-
if(is_request){
if (setup_flag == 0) {
tvbuff_t *next_tvb;
@@ -2105,16 +2170,22 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent,
/* Dissect the setup header - it's applicable */
- ti = proto_tree_add_protocol_format(tree, proto_usb, tvb, offset, 8, "URB setup");
+ ti = proto_tree_add_protocol_format(parent, proto_usb, tvb, offset, 8, "URB setup");
setup_tree = proto_item_add_subtree(ti, usb_setup_hdr);
- usb_trans_info->requesttype=tvb_get_guint8(tvb, offset);
- offset=dissect_usb_bmrequesttype(setup_tree, tvb, offset, &type_2);
+ usb_trans_info->setup.requesttype = tvb_get_guint8(tvb, offset);
+ offset = dissect_usb_bmrequesttype(setup_tree, tvb, offset, &type_2);
/* read the request code and spawn off to a class specific
* dissector if found
*/
- usb_trans_info->request=tvb_get_guint8(tvb, offset);
+ usb_trans_info->setup.request = tvb_get_guint8(tvb, offset);
+ usb_trans_info->setup.wValue = tvb_get_letohs(tvb, offset+1);
+ usb_trans_info->setup.wIndex = tvb_get_letohs(tvb, offset+3);
+
+ if (type_2 != RQT_SETUP_TYPE_CLASS) {
+ tap_queue_packet(usb_tap, pinfo, tap_data);
+ }
switch (type_2) {
@@ -2124,23 +2195,23 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent,
* dissector
*/
proto_tree_add_item(setup_tree, hf_usb_request, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
if (check_col(pinfo->cinfo, COL_INFO)) {
col_add_fstr(pinfo->cinfo, COL_INFO, "%s Request",
- val_to_str(usb_trans_info->request, setup_request_names_vals, "Unknown type %x"));
+ val_to_str(usb_trans_info->setup.request, setup_request_names_vals, "Unknown type %x"));
}
- dissector=NULL;
- for(tmp=setup_request_dissectors;tmp->dissector;tmp++){
- if(tmp->request==usb_trans_info->request){
- dissector=tmp->dissector;
+ dissector = NULL;
+ for(tmp = setup_request_dissectors;tmp->dissector;tmp++){
+ if (tmp->request == usb_trans_info->setup.request){
+ dissector = tmp->dissector;
break;
}
}
if(dissector){
- offset=dissector(pinfo, setup_tree, tvb, offset, usb_trans_info, usb_conv_info);
+ offset = dissector(pinfo, setup_tree, tvb, offset, usb_trans_info, usb_conv_info);
} else {
proto_tree_add_item(setup_tree, hf_usb_value, tvb, offset, 2, ENC_LITTLE_ENDIAN);
offset += 2;
@@ -2152,17 +2223,45 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent,
break;
case RQT_SETUP_TYPE_CLASS:
+ /* Make sure we have the proper conversation */
+ if (USB_RECIPIENT(usb_trans_info->setup.requesttype) == RQT_SETUP_RECIPIENT_INTERFACE) {
+ guint16 interface_num = usb_trans_info->setup.wIndex & 0xff;
+ guint32 if_port = htolel(INTERFACE_PORT | interface_num);
+ conversation = get_usb_conversation(pinfo, &pinfo->src, &pinfo->dst, pinfo->srcport, if_port);
+ usb_conv_info = get_usb_conv_info(conversation);
+ usb_conv_info->usb_trans_info = usb_trans_info;
+ pinfo->usb_conv_info = usb_conv_info;
+ } else if (USB_RECIPIENT(usb_trans_info->setup.requesttype) == RQT_SETUP_RECIPIENT_ENDPOINT) {
+ static address endpoint_addr;
+ endpoint = usb_trans_info->setup.wIndex & 0x0f;
+
+ dst_addr.endpoint = dst_endpoint = htolel(endpoint);
+ SET_ADDRESS(&endpoint_addr, AT_USB, USB_ADDR_LEN, (char *)&dst_addr);
+
+ conversation = get_usb_conversation(pinfo, &pinfo->src, &endpoint_addr, pinfo->srcport, dst_endpoint);
+ usb_conv_info = get_usb_conv_info(conversation);
+ usb_conv_info->usb_trans_info = usb_trans_info;
+ pinfo->usb_conv_info = usb_conv_info;
+ }
+
+ tap_data->conv_info = usb_conv_info;
+ tap_data->trans_info = usb_trans_info;
+ tap_queue_packet(usb_tap, pinfo, tap_data);
+
+ ti = proto_tree_add_uint(tree, hf_usb_bInterfaceClass, tvb, 0, 0, usb_conv_info->interfaceClass);
+ PROTO_ITEM_SET_GENERATED(ti);
+
/* Try to find a class specific dissector */
- next_tvb=tvb_new_subset_remaining(tvb, offset);
- if (try_heuristics && dissector_try_heuristic(heur_control_subdissector_list, next_tvb, pinfo, tree)) {
+ next_tvb = tvb_new_subset_remaining(tvb, offset);
+ if (try_heuristics && dissector_try_heuristic(heur_control_subdissector_list, next_tvb, pinfo, setup_tree)) {
return;
}
- if(dissector_try_uint(usb_control_dissector_table, usb_conv_info->interfaceClass, next_tvb, pinfo, tree)){
+ if(dissector_try_uint(usb_control_dissector_table, usb_conv_info->interfaceClass, next_tvb, pinfo, setup_tree)){
return;
}
/* Else no class dissector, just display generic fields */
proto_tree_add_item(setup_tree, hf_usb_request_unknown_class, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
proto_tree_add_item(setup_tree, hf_usb_value, tvb, offset, 2, ENC_LITTLE_ENDIAN);
offset += 2;
proto_tree_add_item(setup_tree, hf_usb_index, tvb, offset, 2, ENC_LITTLE_ENDIAN);
@@ -2173,7 +2272,7 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent,
default:
proto_tree_add_item(setup_tree, hf_usb_request_unknown_class, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
proto_tree_add_item(setup_tree, hf_usb_value, tvb, offset, 2, ENC_LITTLE_ENDIAN);
offset += 2;
proto_tree_add_item(setup_tree, hf_usb_index, tvb, offset, 2, ENC_LITTLE_ENDIAN);
@@ -2197,10 +2296,10 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent,
tvbuff_t *next_tvb;
next_tvb = tvb_new_subset_remaining(tvb, offset);
- if (try_heuristics && dissector_try_heuristic(heur_control_subdissector_list, next_tvb, pinfo, tree)) {
+ if (try_heuristics && dissector_try_heuristic(heur_control_subdissector_list, next_tvb, pinfo, parent)) {
return;
}
- if(dissector_try_uint(usb_control_dissector_table, usb_conv_info->interfaceClass, next_tvb, pinfo, tree)){
+ if(dissector_try_uint(usb_control_dissector_table, usb_conv_info->interfaceClass, next_tvb, pinfo, parent)){
return;
}
}
@@ -2212,6 +2311,37 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent,
/* Skip setup header - it's never applicable for responses */
offset += 8;
+ /* Make sure we have the proper conversation */
+ if (usb_trans_info) {
+ if (USB_TYPE(usb_trans_info->setup.requesttype) == RQT_SETUP_TYPE_CLASS) {
+ if (USB_RECIPIENT(usb_trans_info->setup.requesttype) == RQT_SETUP_RECIPIENT_INTERFACE) {
+ guint32 if_port = htolel(INTERFACE_PORT | (usb_trans_info->setup.wIndex & 0xff));
+ conversation = get_usb_conversation(pinfo, &pinfo->src, &pinfo->dst, if_port, pinfo->destport);
+ usb_conv_info = get_usb_conv_info(conversation);
+ usb_conv_info->usb_trans_info = usb_trans_info;
+ pinfo->usb_conv_info = usb_conv_info;
+ } else if (USB_RECIPIENT(usb_trans_info->setup.requesttype) == RQT_SETUP_RECIPIENT_ENDPOINT) {
+ static address endpoint_addr;
+ endpoint = usb_trans_info->setup.wIndex & 0x0f;
+
+ src_addr.endpoint = src_endpoint = htolel(endpoint);
+ SET_ADDRESS(&endpoint_addr, AT_USB, USB_ADDR_LEN, (char *)&src_addr);
+
+ conversation = get_usb_conversation(pinfo, &endpoint_addr, &pinfo->dst, src_endpoint, pinfo->destport);
+ usb_conv_info = get_usb_conv_info(conversation);
+ usb_conv_info->usb_trans_info = usb_trans_info;
+ pinfo->usb_conv_info = usb_conv_info;
+ }
+ }
+ }
+
+ tap_data->conv_info = usb_conv_info;
+ tap_data->trans_info = usb_trans_info;
+ tap_queue_packet(usb_tap, pinfo, tap_data);
+
+ ti = proto_tree_add_uint(tree, hf_usb_bInterfaceClass, tvb, 0, 0, usb_conv_info->interfaceClass);
+ PROTO_ITEM_SET_GENERATED(ti);
+
/*
* If this has a 64-byte header, process the extra 16 bytes of
* pseudo-header information.
@@ -2221,15 +2351,15 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent,
if(usb_trans_info){
/* Try to find a class specific dissector */
- next_tvb=tvb_new_subset_remaining(tvb, offset);
- if (try_heuristics && dissector_try_heuristic(heur_control_subdissector_list, next_tvb, pinfo, tree)) {
+ next_tvb = tvb_new_subset_remaining(tvb, offset);
+ if (try_heuristics && dissector_try_heuristic(heur_control_subdissector_list, next_tvb, pinfo, parent)) {
return;
}
- if(dissector_try_uint(usb_control_dissector_table, usb_conv_info->interfaceClass, next_tvb, pinfo, tree)){
+ if(dissector_try_uint(usb_control_dissector_table, usb_conv_info->interfaceClass, next_tvb, pinfo, parent)){
return;
}
- type_2 = USB_TYPE(usb_trans_info->requesttype);
+ type_2 = USB_TYPE(usb_trans_info->setup.requesttype);
switch (type_2) {
case RQT_SETUP_TYPE_STANDARD:
@@ -2239,29 +2369,30 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent,
*/
if (check_col(pinfo->cinfo, COL_INFO)) {
col_add_fstr(pinfo->cinfo, COL_INFO, "%s Response",
- val_to_str(usb_conv_info->usb_trans_info->request, setup_request_names_vals, "Unknown type %x"));
+ val_to_str(usb_conv_info->usb_trans_info->setup.request,
+ setup_request_names_vals, "Unknown type %x"));
}
- dissector=NULL;
- for(tmp=setup_response_dissectors;tmp->dissector;tmp++){
- if(tmp->request==usb_conv_info->usb_trans_info->request){
- dissector=tmp->dissector;
+ dissector = NULL;
+ for(tmp = setup_response_dissectors;tmp->dissector;tmp++){
+ if (tmp->request == usb_conv_info->usb_trans_info->setup.request){
+ dissector = tmp->dissector;
break;
}
}
if(dissector){
- offset = dissector(pinfo, tree, tvb, offset, usb_conv_info->usb_trans_info, usb_conv_info);
+ offset = dissector(pinfo, parent, tvb, offset, usb_conv_info->usb_trans_info, usb_conv_info);
} else {
if (tvb_reported_length_remaining(tvb, offset) != 0) {
- proto_tree_add_text(tree, tvb, offset, -1, "CONTROL response data");
+ proto_tree_add_text(parent, tvb, offset, -1, "CONTROL response data");
offset += tvb_length_remaining(tvb, offset);
}
}
break;
default:
if (tvb_reported_length_remaining(tvb, offset) != 0) {
- proto_tree_add_text(tree, tvb, offset, -1, "CONTROL response data");
+ proto_tree_add_text(parent, tvb, offset, -1, "CONTROL response data");
offset += tvb_length_remaining(tvb, offset);
}
break;
@@ -2269,7 +2400,7 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent,
} else {
/* no matching request available */
if (tvb_reported_length_remaining(tvb, offset) != 0) {
- proto_tree_add_text(tree, tvb, offset, -1, "CONTROL response data");
+ proto_tree_add_text(parent, tvb, offset, -1, "CONTROL response data");
offset += tvb_length_remaining(tvb, offset);
}
}
@@ -2280,7 +2411,7 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent,
{
guint32 iso_numdesc = 0;
proto_item *ti = NULL;
- ti=proto_tree_add_uint(tree, hf_usb_bInterfaceClass, tvb, offset, 0, usb_conv_info->interfaceClass);
+ ti = proto_tree_add_uint(tree, hf_usb_bInterfaceClass, tvb, offset, 0, usb_conv_info->interfaceClass);
PROTO_ITEM_SET_GENERATED(ti);
/* All fields which belong to Linux usbmon headers are in host-endian
@@ -2294,16 +2425,16 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent,
if (setup_flag == 0) {
proto_tree *setup_tree = NULL;
- int type_2;
+ int type_2;
/* Dissect the setup header - it's applicable */
- ti = proto_tree_add_protocol_format(tree, proto_usb, tvb, offset, 8, "URB setup");
+ ti = proto_tree_add_protocol_format(parent, proto_usb, tvb, offset, 8, "URB setup");
setup_tree = proto_item_add_subtree(ti, usb_setup_hdr);
offset = dissect_usb_bmrequesttype(setup_tree, tvb, offset, &type_2);
proto_tree_add_item(setup_tree, hf_usb_request, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ offset += 1;
proto_tree_add_item(setup_tree, hf_usb_value, tvb, offset, 2, ENC_LITTLE_ENDIAN);
offset += 2;
proto_tree_add_item(setup_tree, hf_usb_index, tvb, offset, 2, ENC_LITTLE_ENDIAN);
@@ -2344,13 +2475,13 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent,
}
if (setup_flag != 0) {
- proto_tree *urb_tree = NULL;
- guint32 i;
- unsigned int data_base;
- guint32 iso_status;
- guint32 iso_off;
- guint32 iso_len;
- guint32 iso_pad;
+ proto_tree *urb_tree = NULL;
+ guint32 i;
+ unsigned int data_base;
+ guint32 iso_status;
+ guint32 iso_off;
+ guint32 iso_len;
+ guint32 iso_pad;
data_base = offset + iso_numdesc * 16;
urb_tree = tree;
@@ -2388,7 +2519,6 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent,
proto_tree_add_uint(tree, hf_usb_iso_pad, tvb, offset, 4, iso_pad);
offset += 4;
}
- tree = urb_tree;
}
}
@@ -2397,23 +2527,23 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent,
default:
/* dont know */
if (setup_flag == 0) {
- proto_item *ti = NULL;
- proto_tree *setup_tree = NULL;
- int type_2;
+ proto_item *ti;
+ proto_tree *setup_tree;
+ int type_2;
/* Dissect the setup header - it's applicable */
- ti = proto_tree_add_protocol_format(tree, proto_usb, tvb, offset, 8, "URB setup");
+ ti = proto_tree_add_protocol_format(parent, proto_usb, tvb, offset, 8, "URB setup");
setup_tree = proto_item_add_subtree(ti, usb_setup_hdr);
- offset=dissect_usb_bmrequesttype(setup_tree, tvb, offset, &type_2);
+ offset = dissect_usb_bmrequesttype(setup_tree, tvb, offset, &type_2);
proto_tree_add_item(setup_tree, hf_usb_request, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
- proto_tree_add_item(setup_tree, hf_usb_value, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ offset += 1;
+ proto_tree_add_item(setup_tree, hf_usb_value, tvb, offset, 2, ENC_LITTLE_ENDIAN);
offset += 2;
- proto_tree_add_item(setup_tree, hf_usb_index, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(setup_tree, hf_usb_index, tvb, offset, 2, ENC_LITTLE_ENDIAN);
offset += 2;
- proto_tree_add_item(setup_tree, hf_usb_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(setup_tree, hf_usb_length, tvb, offset, 2, ENC_LITTLE_ENDIAN);
offset += 2;
} else {
/* Skip setup/isochronous header - it's not applicable */
@@ -2432,7 +2562,7 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent,
if (tvb_reported_length_remaining(tvb, offset) != 0) {
/* There is leftover capture data to add (padding?) */
- proto_tree_add_item(tree, hf_usb_capdata, tvb, offset, -1, ENC_NA);
+ proto_tree_add_item(parent, hf_usb_capdata, tvb, offset, -1, ENC_NA);
}
}
@@ -2750,6 +2880,14 @@ proto_register_usb(void)
{ "wMaxPacketSize", "usb.wMaxPacketSize", FT_UINT16, BASE_DEC,
NULL, 0x0, NULL, HFILL }},
+ { &hf_usb_wMaxPacketSize_size,
+ { "Maximum Packet Size", "usb.wMaxPacketSize.size", FT_UINT16, BASE_DEC,
+ NULL, 0x3FF, NULL, HFILL }},
+
+ { &hf_usb_wMaxPacketSize_slots,
+ { "Transactions per microframe", "usb.wMaxPacketSize.slots", FT_UINT16, BASE_DEC,
+ VALS(usb_wMaxPacketSize_slots_vals), (3<<11), NULL, HFILL }},
+
{ &hf_usb_bInterval,
{ "bInterval", "usb.bInterval", FT_UINT8, BASE_DEC,
NULL, 0x0, NULL, HFILL }},
@@ -2840,7 +2978,8 @@ proto_register_usb(void)
&ett_descriptor_device,
&ett_configuration_bmAttributes,
&ett_configuration_bEndpointAddress,
- &ett_endpoint_bmAttributes
+ &ett_endpoint_bmAttributes,
+ &ett_endpoint_wMaxPacketSize
};
@@ -2855,6 +2994,9 @@ proto_register_usb(void)
usb_control_dissector_table = register_dissector_table("usb.control",
"USB control endpoint", FT_UINT8, BASE_DEC);
register_heur_dissector_list("usb.control", &heur_control_subdissector_list);
+ usb_interrupt_dissector_table = register_dissector_table("usb.interrupt",
+ "USB interrupt endpoint", FT_UINT8, BASE_DEC);
+ register_heur_dissector_list("usb.interrupt", &heur_interrupt_subdissector_list);
usb_descriptor_dissector_table = register_dissector_table("usb.descriptor",
"USB descriptor", FT_UINT8, BASE_DEC);
@@ -2862,10 +3004,10 @@ proto_register_usb(void)
prefs_register_bool_preference(usb_module, "try_heuristics",
"Try heuristic sub-dissectors",
"Try to decode a packet using a heuristic sub-dissector before "
- "attempting to dissect the packet using the \"usb.bulk\" or "
+ "attempting to dissect the packet using the \"usb.bulk\", \"usb.interrupt\" or "
"\"usb.control\" dissector tables.", &try_heuristics);
- usb_tap=register_tap("usb");
+ usb_tap = register_tap("usb");
}
void
diff --git a/epan/dissectors/packet-usb.h b/epan/dissectors/packet-usb.h
index 48ec7e01d1..3a1de74489 100644
--- a/epan/dissectors/packet-usb.h
+++ b/epan/dissectors/packet-usb.h
@@ -30,6 +30,11 @@ typedef struct _usb_address_t {
} usb_address_t;
#define USB_ADDR_LEN (sizeof(usb_address_t))
+/* Flag used to mark usb_address_t.endpoint as an interface
+ * address instead of the normal endpoint address.
+ */
+#define INTERFACE_PORT 0x80000000
+
typedef struct _usb_conv_info_t usb_conv_info_t;
@@ -38,8 +43,17 @@ typedef struct _usb_trans_info_t {
guint32 request_in;
guint32 response_in;
nstime_t req_time;
- guint8 requesttype;
- guint8 request;
+ gboolean header_len_64;
+
+ /* Valid only for SETUP transactions */
+ struct _usb_setup {
+ guint8 requesttype;
+ guint8 request;
+ guint16 wValue;
+ guint16 wIndex;
+ } setup;
+
+ /* Valid only during GET DESCRIPTOR transactions */
union {
struct {
guint8 type;
@@ -53,6 +67,7 @@ typedef struct _usb_trans_info_t {
* descriptors so that we can create a
* conversation with the appropriate class
* once we know the endpoint.
+ * Valid only during GET CONFIGURATION response.
*/
usb_conv_info_t *interface_info;
} usb_trans_info_t;
@@ -74,11 +89,11 @@ typedef struct _usb_tap_data_t {
usb_trans_info_t *trans_info;
} usb_tap_data_t;
-/* This is the endpoint number user for "no endpoint" or the fake endpoint
+/* This is the endpoint number used for "no endpoint" or the fake endpoint
* for the host side since we need two endpoints to manage conversations
* properly.
*/
-#define NO_ENDPOINT 0xffff
+#define NO_ENDPOINT 0xffffffff
/*
* Values from the Linux USB pseudo-header.
@@ -133,9 +148,21 @@ typedef struct _usb_tap_data_t {
#define RQT_SETUP_TYPE_CLASS 1
#define RQT_SETUP_TYPE_VENDOR 2
+#define USB_RECIPIENT_MASK 0x1F
+#define USB_RECIPIENT(type) ((type) & USB_RECIPIENT_MASK)
#define RQT_SETUP_RECIPIENT_DEVICE 0
#define RQT_SETUP_RECIPIENT_INTERFACE 1
#define RQT_SETUP_RECIPIENT_ENDPOINT 2
#define RQT_SETUP_RECIPIENT_OTHER 3
+/* Endpoint descriptor bmAttributes */
+#define ENDPOINT_TYPE(ep_attrib) ((ep_attrib) & 0x03)
+#define ENDPOINT_TYPE_CONTROL 0
+#define ENDPOINT_TYPE_ISOCHRONOUS 1
+#define ENDPOINT_TYPE_BULK 2
+#define ENDPOINT_TYPE_INTERRUPT 3
+
+void dissect_usb_descriptor_header(proto_tree *tree, tvbuff_t *tvb, int offset);
+void dissect_usb_endpoint_address(proto_tree *tree, tvbuff_t *tvb, int offset);
+
#endif
diff --git a/epan/dissectors/packet-v5dl.c b/epan/dissectors/packet-v5dl.c
new file mode 100644
index 0000000000..3be986a927
--- /dev/null
+++ b/epan/dissectors/packet-v5dl.c
@@ -0,0 +1,441 @@
+/* packet-v5dl.c
+ * Routines for V5 data link frame disassembly
+ * Rolf Fiedler <rolf.fiedler@innoventif.de> using the LAPD code of
+ * Gilbert Ramirez <gram@alumni.rice.edu>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+/*
+ * V5 Data Link Layer
+ *
+ * V5 references:
+ * ETS 300 324-1
+ * ETS 300 347-1
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+#include <epan/conversation.h>
+#include <epan/xdlc.h>
+#include <epan/crc16-tvb.h>
+
+static int proto_v5dl = -1;
+static int hf_v5dl_direction = -1;
+static int hf_v5dl_address = -1;
+static int hf_v5dl_ef = -1;
+static int hf_v5dl_eah = -1;
+static int hf_v5dl_cr = -1;
+static int hf_v5dl_ea1 = -1;
+static int hf_v5dl_eal = -1;
+static int hf_v5dl_ea2 = -1;
+static int hf_v5dl_control = -1;
+static int hf_v5dl_n_r = -1;
+static int hf_v5dl_n_s = -1;
+static int hf_v5dl_p = -1;
+static int hf_v5dl_p_ext = -1;
+static int hf_v5dl_f = -1;
+static int hf_v5dl_f_ext = -1;
+static int hf_v5dl_s_ftype = -1;
+static int hf_v5dl_u_modifier_cmd = -1;
+static int hf_v5dl_u_modifier_resp = -1;
+static int hf_v5dl_ftype_i = -1;
+static int hf_v5dl_ftype_s_u = -1;
+static int hf_v5dl_ftype_s_u_ext = -1;
+static int hf_v5dl_checksum = -1;
+static int hf_v5dl_checksum_good = -1;
+static int hf_v5dl_checksum_bad = -1;
+
+static gint ett_v5dl = -1;
+static gint ett_v5dl_address = -1;
+static gint ett_v5dl_control = -1;
+static gint ett_v5dl_checksum = -1;
+
+static dissector_handle_t v52_handle;
+
+/*
+ * Bits in the address field.
+ */
+#define V5DL_EAH 0xfc00 /* Service Access Point Identifier */
+#define V5DL_EAH_SHIFT 10
+#define V5DL_CR 0x0200 /* Command/Response bit */
+#define V5DL_EA1 0x0100 /* First Address Extension bit */
+#define V5DL_EAL 0x00fe /* Terminal Endpoint Identifier */
+#define V5DL_EAL_SHIFT 1
+#define V5DL_EA2 0x0001 /* Second Address Extension bit */
+
+static const value_string v5dl_direction_vals[] = {
+ { P2P_DIR_RECV, "Network->User"},
+ { P2P_DIR_SENT, "User->Network"},
+ { 0, NULL }
+};
+
+static const value_string v5dl_addr_vals[] = {
+ { 8175, "ISDN Protocol" },
+ { 8176, "PSTN Protocol" },
+ { 8177, "CONTROL Protocol" },
+ { 8178, "BCC Protocol" },
+ { 8179, "PROT Protocol" },
+ { 8180, "Link Control Protocol" },
+ { 8191, "VALUE RESERVED" },
+ { 0, NULL } };
+
+/* Used only for U frames */
+static const xdlc_cf_items v5dl_cf_items = {
+ NULL,
+ NULL,
+ &hf_v5dl_p,
+ &hf_v5dl_f,
+ NULL,
+ &hf_v5dl_u_modifier_cmd,
+ &hf_v5dl_u_modifier_resp,
+ NULL,
+ &hf_v5dl_ftype_s_u
+};
+
+/* Used only for I and S frames */
+static const xdlc_cf_items v5dl_cf_items_ext = {
+ &hf_v5dl_n_r,
+ &hf_v5dl_n_s,
+ &hf_v5dl_p_ext,
+ &hf_v5dl_f_ext,
+ &hf_v5dl_s_ftype,
+ NULL,
+ NULL,
+ &hf_v5dl_ftype_i,
+ &hf_v5dl_ftype_s_u_ext
+};
+
+
+#define MAX_V5DL_PACKET_LEN 1024
+
+static void
+dissect_v5dl(tvbuff_t*, packet_info*, proto_tree*);
+
+static void
+dissect_v5dl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ proto_tree *v5dl_tree, *addr_tree;
+ proto_item *v5dl_ti, *addr_ti;
+ int direction;
+ guint v5dl_header_len;
+ guint16 control;
+#if 0
+ proto_tree *checksum_tree;
+ proto_item *checksum_ti;
+ guint16 checksum, checksum_calculated;
+ guint checksum_offset;
+#endif
+ guint16 addr, cr, eah, eal, v5addr;
+ gboolean is_response = 0;
+#if 0
+ guint length, reported_length;
+#endif
+ tvbuff_t *next_tvb;
+ const char *srcname = "?";
+ const char *dstname = "?";
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "V5DL");
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ addr = tvb_get_ntohs(tvb, 0);
+ cr = addr & V5DL_CR;
+ eal = (addr & V5DL_EAL) >> V5DL_EAL_SHIFT;
+ eah = (addr & V5DL_EAH) >> V5DL_EAH_SHIFT;
+ v5addr = (eah << 7) + eal;
+ v5dl_header_len = 2; /* addr */
+
+ direction = pinfo->p2p_dir;
+ if (pinfo->p2p_dir == P2P_DIR_RECV) {
+ is_response = cr ? FALSE : TRUE;
+ srcname = "Network";
+ dstname = "User";
+ }
+ else if (pinfo->p2p_dir == P2P_DIR_SENT) {
+ is_response = cr ? TRUE : FALSE;
+ srcname = "User";
+ dstname = "Network";
+ }
+
+ col_set_str(pinfo->cinfo, COL_RES_DL_SRC, srcname);
+ col_set_str(pinfo->cinfo, COL_RES_DL_DST, dstname);
+
+ if (tree) {
+ proto_item *direction_ti;
+
+ v5dl_ti = proto_tree_add_item(tree, proto_v5dl, tvb, 0, -1,
+ ENC_NA);
+ v5dl_tree = proto_item_add_subtree(v5dl_ti, ett_v5dl);
+
+ /*
+ * Don't show the direction if we don't know it.
+ */
+ if (direction != P2P_DIR_UNKNOWN) {
+ direction_ti = proto_tree_add_uint(v5dl_tree, hf_v5dl_direction,
+ tvb, 0, 0, pinfo->p2p_dir);
+ PROTO_ITEM_SET_GENERATED(direction_ti);
+ }
+
+ addr_ti = proto_tree_add_uint(v5dl_tree, hf_v5dl_ef, tvb,
+ 0, 2, v5addr);
+ addr_tree = proto_item_add_subtree(addr_ti, ett_v5dl_address);
+ proto_tree_add_uint(addr_tree, hf_v5dl_eah, tvb, 0, 1, addr);
+ proto_tree_add_uint(addr_tree, hf_v5dl_cr, tvb, 0, 1, addr);
+ proto_tree_add_uint(addr_tree, hf_v5dl_ea1, tvb, 0, 1, addr);
+ proto_tree_add_uint(addr_tree, hf_v5dl_eal, tvb, 1, 1, addr);
+ proto_tree_add_uint(addr_tree, hf_v5dl_ea2, tvb, 1, 1, addr);
+ }
+ else {
+ v5dl_ti = NULL;
+ v5dl_tree = NULL;
+ }
+
+ control = dissect_xdlc_control(tvb, 2, pinfo, v5dl_tree, hf_v5dl_control,
+ ett_v5dl_control, &v5dl_cf_items, &v5dl_cf_items_ext, NULL, NULL,
+ is_response, TRUE, FALSE);
+ v5dl_header_len += XDLC_CONTROL_LEN(control, TRUE);
+
+ if (tree)
+ proto_item_set_len(v5dl_ti, v5dl_header_len);
+
+ /*
+ * XXX - the sample capture supplied with bug 7027 does not
+ * appear to include checksums in the packets.
+ */
+#if 0
+ /*
+ * Check the checksum, if available.
+ * The checksum is a CCITT CRC-16 at the end of the packet, so
+ * if we don't have the entire packet in the capture - i.e., if
+ * tvb_length(tvb) != tvb_reported_length(tvb) we can't check it.
+ */
+ length = tvb_length(tvb);
+ reported_length = tvb_reported_length(tvb);
+
+ /*
+ * If the reported length isn't big enough for the V5DL header
+ * and 2 bytes of checksum, the packet is malformed, as the
+ * checksum overlaps the header.
+ */
+ if (reported_length < v5dl_header_len + 2)
+ THROW(ReportedBoundsError);
+
+ if (length == reported_length) {
+ /*
+ * There's no snapshot length cutting off any of the
+ * packet.
+ */
+ checksum_offset = reported_length - 2;
+ checksum = tvb_get_ntohs(tvb, checksum_offset);
+ checksum_calculated = crc16_ccitt_tvb(tvb, checksum_offset);
+ checksum_calculated = g_htons(checksum_calculated); /* Note: g_htons() macro may eval arg multiple times */
+
+ if (checksum == checksum_calculated) {
+ checksum_ti = proto_tree_add_uint_format(v5dl_tree, hf_v5dl_checksum, tvb, checksum_offset,
+ 2, 0,
+ "Checksum: 0x%04x [correct]",
+ checksum);
+ checksum_tree = proto_item_add_subtree(checksum_ti, ett_v5dl_checksum);
+ proto_tree_add_boolean(checksum_tree, hf_v5dl_checksum_good, tvb, checksum_offset, 2, TRUE);
+ proto_tree_add_boolean(checksum_tree, hf_v5dl_checksum_bad, tvb, checksum_offset, 2, FALSE);
+ } else {
+ checksum_ti = proto_tree_add_uint_format(v5dl_tree, hf_v5dl_checksum, tvb, checksum_offset,
+ 2, 0,
+ "Checksum: 0x%04x [incorrect, should be 0x%04x]",
+ checksum, checksum_calculated);
+ checksum_tree = proto_item_add_subtree(checksum_ti, ett_v5dl_checksum);
+ proto_tree_add_boolean(checksum_tree, hf_v5dl_checksum_good, tvb, checksum_offset, 2, FALSE);
+ proto_tree_add_boolean(checksum_tree, hf_v5dl_checksum_bad, tvb, checksum_offset, 2, TRUE);
+ }
+
+ /*
+ * Remove the V5DL header *and* the checksum.
+ */
+ next_tvb = tvb_new_subset(tvb, v5dl_header_len,
+ tvb_length_remaining(tvb, v5dl_header_len) - 2,
+ tvb_reported_length_remaining(tvb, v5dl_header_len) - 2);
+ } else {
+ /*
+ * Some or all of the packet is cut off by a snapshot
+ * length.
+ */
+ if (length == reported_length - 1) {
+ /*
+ * One byte is cut off, so there's only one
+ * byte of checksum in the captured data.
+ * Remove that byte from the captured length
+ * and both bytes from the reported length.
+ */
+ next_tvb = tvb_new_subset(tvb, v5dl_header_len,
+ tvb_length_remaining(tvb, v5dl_header_len) - 1,
+ tvb_reported_length_remaining(tvb, v5dl_header_len) - 2);
+ } else {
+ /*
+ * Two or more bytes are cut off, so there are
+ * no bytes of checksum in the captured data.
+ * Just remove the checksum from the reported
+ * length.
+ */
+ next_tvb = tvb_new_subset(tvb, v5dl_header_len,
+ tvb_length_remaining(tvb, v5dl_header_len),
+ tvb_reported_length_remaining(tvb, v5dl_header_len) - 2);
+ }
+ }
+#else
+ next_tvb = tvb_new_subset_remaining(tvb, v5dl_header_len);
+#endif
+
+ if (XDLC_IS_INFORMATION(control)) {
+ /* call V5.2 dissector */
+ call_dissector(v52_handle, next_tvb, pinfo, tree);
+ }
+}
+
+void
+proto_reg_handoff_v5dl(void);
+
+void
+proto_register_v5dl(void)
+{
+ static hf_register_info hf[] = {
+
+ { &hf_v5dl_direction,
+ { "Direction", "v5dl.direction", FT_UINT8, BASE_DEC, VALS(v5dl_direction_vals), 0x0,
+ NULL, HFILL }},
+
+ { &hf_v5dl_address,
+ { "Address Field", "v5dl.address", FT_UINT16, BASE_HEX, NULL, 0x0,
+ "Address", HFILL }},
+
+ { &hf_v5dl_ef,
+ { "EF", "v5dl.ef", FT_UINT16, BASE_DEC, VALS(v5dl_addr_vals), 0x0,
+ "Envelope Function Address", HFILL }},
+
+ { &hf_v5dl_eah,
+ { "EAH", "v5dl.eah", FT_UINT16, BASE_DEC, NULL, V5DL_EAH,
+ "Envelope Address High", HFILL }},
+
+ { &hf_v5dl_cr,
+ { "C/R", "v5dl.cr", FT_UINT16, BASE_DEC, NULL, V5DL_CR,
+ "Command/Response bit", HFILL }},
+
+ { &hf_v5dl_ea1,
+ { "EA1", "v5dl.ea1", FT_UINT16, BASE_DEC, NULL, V5DL_EA1,
+ "First Address Extension bit", HFILL }},
+
+ { &hf_v5dl_eal,
+ { "EAL", "v5dl.eal", FT_UINT16, BASE_DEC, NULL, V5DL_EAL,
+ "Envelope Address Low", HFILL }},
+
+ { &hf_v5dl_ea2,
+ { "EA2", "v5dl.ea2", FT_UINT16, BASE_DEC, NULL, V5DL_EA2,
+ "Second Address Extension bit", HFILL }},
+
+ { &hf_v5dl_control,
+ { "Control Field", "v5dl.control", FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_v5dl_n_r,
+ { "N(R)", "v5dl.control.n_r", FT_UINT16, BASE_DEC,
+ NULL, XDLC_N_R_EXT_MASK, NULL, HFILL }},
+
+ { &hf_v5dl_n_s,
+ { "N(S)", "v5dl.control.n_s", FT_UINT16, BASE_DEC,
+ NULL, XDLC_N_S_EXT_MASK, NULL, HFILL }},
+
+ { &hf_v5dl_p,
+ { "Poll", "v5dl.control.p", FT_BOOLEAN, 8,
+ TFS(&tfs_set_notset), XDLC_P_F, NULL, HFILL }},
+
+ { &hf_v5dl_p_ext,
+ { "Poll", "v5dl.control.p", FT_BOOLEAN, 16,
+ TFS(&tfs_set_notset), XDLC_P_F_EXT, NULL, HFILL }},
+
+ { &hf_v5dl_f,
+ { "Final", "v5dl.control.f", FT_BOOLEAN, 8,
+ TFS(&tfs_set_notset), XDLC_P_F, NULL, HFILL }},
+
+ { &hf_v5dl_f_ext,
+ { "Final", "v5dl.control.f", FT_BOOLEAN, 16,
+ TFS(&tfs_set_notset), XDLC_P_F_EXT, NULL, HFILL }},
+
+ { &hf_v5dl_s_ftype,
+ { "Supervisory frame type", "v5dl.control.s_ftype", FT_UINT16, BASE_HEX,
+ VALS(stype_vals), XDLC_S_FTYPE_MASK, NULL, HFILL }},
+
+ { &hf_v5dl_u_modifier_cmd,
+ { "Command", "v5dl.control.u_modifier_cmd", FT_UINT8, BASE_HEX,
+ VALS(modifier_vals_cmd), XDLC_U_MODIFIER_MASK, NULL, HFILL }},
+
+ { &hf_v5dl_u_modifier_resp,
+ { "Response", "v5dl.control.u_modifier_resp", FT_UINT8, BASE_HEX,
+ VALS(modifier_vals_resp), XDLC_U_MODIFIER_MASK, NULL, HFILL }},
+
+ { &hf_v5dl_ftype_i,
+ { "Frame type", "v5dl.control.ftype", FT_UINT16, BASE_HEX,
+ VALS(ftype_vals), XDLC_I_MASK, NULL, HFILL }},
+
+ { &hf_v5dl_ftype_s_u,
+ { "Frame type", "v5dl.control.ftype", FT_UINT8, BASE_HEX,
+ VALS(ftype_vals), XDLC_S_U_MASK, NULL, HFILL }},
+
+ { &hf_v5dl_ftype_s_u_ext,
+ { "Frame type", "v5dl.control.ftype", FT_UINT16, BASE_HEX,
+ VALS(ftype_vals), XDLC_S_U_MASK, NULL, HFILL }},
+
+ { &hf_v5dl_checksum,
+ { "Checksum", "v5dl.checksum", FT_UINT16, BASE_HEX,
+ NULL, 0x0, "Details at: http://www.wireshark.org/docs/wsug_html_chunked/ChAdvChecksums.html", HFILL }},
+
+ { &hf_v5dl_checksum_good,
+ { "Good Checksum", "v5dl.checksum_good", FT_BOOLEAN, BASE_NONE,
+ NULL, 0x0, "True: checksum matches packet content; False: doesn't match content or not checked", HFILL }},
+
+ { &hf_v5dl_checksum_bad,
+ { "Bad Checksum", "v5dl.checksum_bad", FT_BOOLEAN, BASE_NONE,
+ NULL, 0x0, "True: checksum doesn't match packet content; False: matches content or not checked", HFILL }}
+ };
+
+ static gint *ett[] = {
+ &ett_v5dl,
+ &ett_v5dl_address,
+ &ett_v5dl_control,
+ &ett_v5dl_checksum
+ };
+
+ proto_v5dl = proto_register_protocol("V5 Data Link Layer",
+ "V5DL", "v5dl");
+ proto_register_field_array (proto_v5dl, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ register_dissector("v5dl", dissect_v5dl, proto_v5dl);
+}
+
+void
+proto_reg_handoff_v5dl(void)
+{
+ v52_handle = find_dissector("v52");
+}
diff --git a/epan/dissectors/packet-v5ef.c b/epan/dissectors/packet-v5ef.c
new file mode 100644
index 0000000000..1e68d0d0a7
--- /dev/null
+++ b/epan/dissectors/packet-v5ef.c
@@ -0,0 +1,209 @@
+/* packet-v5ef.c
+ * Routines for V5 envelope function frame disassembly
+ * Rolf Fiedler <rolf.fiedler@innoventif.de>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+/*
+ * V5 bitstream over HDLC handling
+ *
+ * V5 references:
+ *
+ * ETS 300 324-1
+ * ETS 300 347-1
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+#include <epan/conversation.h>
+#include <epan/xdlc.h>
+#include <epan/crc16-tvb.h>
+
+static int proto_v5ef = -1;
+static int hf_v5ef_direction = -1;
+static int hf_v5ef_address = -1;
+static int hf_v5ef_eah = -1;
+static int hf_v5ef_ea1 = -1;
+static int hf_v5ef_eal = -1;
+static int hf_v5ef_ea2 = -1;
+
+static gint ett_v5ef = -1;
+static gint ett_v5ef_address = -1;
+
+static dissector_handle_t v5dl_handle, lapd_handle;
+
+/*
+ * Bits in the address field.
+ */
+#define V5EF_EAH 0xfc00 /* Service Access Point Identifier */
+#define V5EF_EAH_SHIFT 10
+#define V5EF_EA1 0x0100 /* First Address Extension bit */
+#define V5EF_EAL 0x00fe /* Terminal Endpoint Identifier */
+#define V5EF_EAL_SHIFT 1
+#define V5EF_EA2 0x0001 /* Second Address Extension bit */
+
+static const value_string v5ef_direction_vals[] = {
+ { 0, "AN->LE"},
+ { 1, "LE->AN"},
+ { 0, NULL }
+};
+
+#define MAX_V5EF_PACKET_LEN 1024
+
+static void
+dissect_v5ef(tvbuff_t*, packet_info*, proto_tree*);
+
+static void
+dissect_v5ef(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ proto_tree *v5ef_tree, *addr_tree;
+ proto_item *v5ef_ti, *addr_ti;
+ int direction;
+ int v5ef_header_len;
+ guint16 addr, eah, eal, efaddr;
+ tvbuff_t *next_tvb;
+ const char *srcname = "src";
+ const char *dstname = "dst";
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "V5-EF");
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ addr = tvb_get_ntohs(tvb, 0);
+ eah = (addr & V5EF_EAH) >> V5EF_EAH_SHIFT;
+ eal = (addr & V5EF_EAL) >> V5EF_EAL_SHIFT;
+ efaddr = (eah << 7) + eal;
+ v5ef_header_len = 2; /* addr */
+
+ direction = pinfo->pseudo_header->isdn.uton;
+ if (direction==0) {
+ srcname = "LE";
+ dstname = "AN";
+ } else if (direction > 0) {
+ srcname = "AN";
+ dstname = "LE";
+ }
+ col_set_str(pinfo->cinfo, COL_RES_DL_SRC, srcname);
+ col_set_str(pinfo->cinfo, COL_RES_DL_DST, dstname);
+
+ if (tree) {
+ proto_item *direction_ti;
+
+ v5ef_ti = proto_tree_add_item(tree, proto_v5ef, tvb, 0, -1,
+ ENC_NA);
+ v5ef_tree = proto_item_add_subtree(v5ef_ti, ett_v5ef);
+
+ /*
+ * Don't show the direction if we don't know it.
+ */
+ if (direction != P2P_DIR_UNKNOWN) {
+ direction_ti = proto_tree_add_uint(v5ef_tree, hf_v5ef_direction,
+ tvb, 0, 0, direction);
+ PROTO_ITEM_SET_GENERATED(direction_ti);
+ }
+
+ addr_ti = proto_tree_add_uint(v5ef_tree, hf_v5ef_address, tvb,
+ 0, 2, addr);
+ addr_tree = proto_item_add_subtree(addr_ti, ett_v5ef_address);
+
+ proto_tree_add_uint(addr_tree, hf_v5ef_eah, tvb, 0, 1, addr);
+ proto_tree_add_uint(addr_tree, hf_v5ef_ea1, tvb, 0, 1, addr);
+ proto_tree_add_uint(addr_tree, hf_v5ef_eal, tvb, 1, 1, addr);
+ proto_tree_add_uint(addr_tree, hf_v5ef_ea2, tvb, 1, 1, addr);
+ }
+ else {
+ v5ef_ti = NULL;
+ v5ef_tree = NULL;
+ }
+
+ if (tree)
+ proto_item_set_len(v5ef_ti, v5ef_header_len);
+
+ next_tvb = tvb_new_subset_remaining(tvb, v5ef_header_len);
+
+ if (efaddr>8175)
+ call_dissector(v5dl_handle,next_tvb, pinfo, tree);
+ else
+ call_dissector(lapd_handle,next_tvb, pinfo, tree);
+}
+
+void
+proto_reg_handoff_v5ef(void);
+
+void
+proto_register_v5ef(void)
+{
+ static hf_register_info hf[] = {
+
+ { &hf_v5ef_direction,
+ { "Direction", "v5ef.direction", FT_UINT8, BASE_DEC, VALS(v5ef_direction_vals), 0x0,
+ NULL, HFILL }},
+
+ { &hf_v5ef_address,
+ { "Address Field", "v5ef.address", FT_UINT16, BASE_HEX, NULL, 0x0,
+ "Address", HFILL }},
+
+ { &hf_v5ef_eah,
+ { "EAH", "v5ef.eah", FT_UINT16, BASE_DEC, NULL, V5EF_EAH,
+ "Envelope Address High Part", HFILL }},
+
+ { &hf_v5ef_ea1,
+ { "EA1", "v5ef.ea1", FT_UINT16, BASE_DEC, NULL, V5EF_EA1,
+ "First Address Extension bit", HFILL }},
+
+ { &hf_v5ef_eal,
+ { "EAL", "v5ef.eal", FT_UINT16, BASE_DEC, NULL, V5EF_EAL,
+ "Envelope Address Low Part", HFILL }},
+
+ { &hf_v5ef_ea2,
+ { "EA2", "v5ef.ea2", FT_UINT16, BASE_DEC, NULL, V5EF_EA2,
+ "Second Address Extension bit", HFILL }},
+ };
+
+ static gint *ett[] = {
+ &ett_v5ef,
+ &ett_v5ef_address,
+ };
+
+ proto_v5ef = proto_register_protocol("V5 Envelope Function (v5ef)",
+ "v5ef", "v5ef");
+ proto_register_field_array (proto_v5ef, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ register_dissector("v5ef", dissect_v5ef, proto_v5ef);
+
+}
+
+void
+proto_reg_handoff_v5ef(void)
+{
+ dissector_handle_t v5ef_handle;
+
+ v5ef_handle = find_dissector("v5ef");
+ dissector_add_uint("wtap_encap", WTAP_ENCAP_V5_EF, v5ef_handle);
+
+ lapd_handle = find_dissector("lapd");
+ v5dl_handle = find_dissector("v5dl");
+}
diff --git a/epan/dissectors/packet-v5ua.c b/epan/dissectors/packet-v5ua.c
index 9c0423fdf3..6ba53b108a 100644
--- a/epan/dissectors/packet-v5ua.c
+++ b/epan/dissectors/packet-v5ua.c
@@ -45,9 +45,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-
#include <glib.h>
#include <epan/packet.h>
@@ -385,7 +382,7 @@ dissect_draft_error_code_parameter(tvbuff_t *parameter_tvb, proto_tree *paramete
static const value_string error_code_values[] = {
{ MGMT_ERROR_INVALID_VERSION, "Invalid version" },
{ MGMT_ERROR_INVALID_IF_ID, "Invalid interface identifier" },
- { MGMT_ERROR_UNSUPPORTED_MSG_CLASS, "Unsuported message class" },
+ { MGMT_ERROR_UNSUPPORTED_MSG_CLASS, "Unsupported message class" },
{ MGMT_ERROR_UNSUPPORTED_MSG_TYPE, "Unsupported message type" },
{ MGMT_ERROR_UNSUPPORTED_TRAFFIC_HANDLING_MODE, "Unsupported traffic handling mode" },
{ MGMT_ERROR_UNEXPECTED_MSG, "Unexpected message" },
diff --git a/epan/dissectors/packet-vcdu.c b/epan/dissectors/packet-vcdu.c
index 68460cf59c..97d94008bf 100644
--- a/epan/dissectors/packet-vcdu.c
+++ b/epan/dissectors/packet-vcdu.c
@@ -279,7 +279,7 @@ dissect_vcdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(smex_tree, hf_smex_gsc, tvb, offset, 8, ENC_BIG_ENDIAN);
offset += 8;
- /* proto_tree_add_uint(smex_tree, hf_smex_unused, tvb, offset, 2, FALSE); */
+ /* proto_tree_add_item(smex_tree, hf_smex_unused, tvb, offset, 2, ENC_BIG_ENDIAN); */
offset += 2;
first_word=tvb_get_ntohs(tvb, offset);
diff --git a/epan/dissectors/packet-vines.c b/epan/dissectors/packet-vines.c
index 2fed48b2ab..788908357e 100644
--- a/epan/dissectors/packet-vines.c
+++ b/epan/dissectors/packet-vines.c
@@ -1229,7 +1229,7 @@ dissect_vines_rtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset = srtp_show_machine_info(vines_rtp_tree,
tvb, offset, "Preferred Gateway");
offset += 1;
- offset = rtp_show_gateway_info(vines_rtp_tree,
+ rtp_show_gateway_info(vines_rtp_tree,
tvb,offset, link_addr_length,
source_route_length);
break;
@@ -1490,7 +1490,7 @@ dissect_vines_rtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
"Preferred Gateway Sequence Number: %u",
tvb_get_ntohl(tvb, offset));
offset += 4;
- offset = rtp_show_gateway_info(vines_rtp_tree,
+ rtp_show_gateway_info(vines_rtp_tree,
tvb,offset, link_addr_length,
source_route_length);
break;
diff --git a/epan/dissectors/packet-vmlab.c b/epan/dissectors/packet-vmlab.c
index 14fdb9aa9e..c394c813f4 100644
--- a/epan/dissectors/packet-vmlab.c
+++ b/epan/dissectors/packet-vmlab.c
@@ -146,7 +146,7 @@ proto_register_vmlab(void)
{ &hf_vmlab_flags_part1, { "Unknown", "vmlab.unknown1",
FT_UINT8, BASE_HEX, NULL, 0xF8, NULL, HFILL }},
{ &hf_vmlab_flags_fragment, { "More Fragments", "vmlab.fragment",
- FT_UINT8, BASE_NONE, VALS(fragment_vals), 0x04, NULL, HFILL }},
+ FT_UINT8, BASE_DEC, VALS(fragment_vals), 0x04, NULL, HFILL }},
{ &hf_vmlab_flags_part2, { "Unknown", "vmlab.unknown2",
FT_UINT8, BASE_HEX, NULL, 0x03, NULL, HFILL }},
diff --git a/epan/dissectors/packet-vnc.c b/epan/dissectors/packet-vnc.c
index ad5c93c5c9..469465a352 100644
--- a/epan/dissectors/packet-vnc.c
+++ b/epan/dissectors/packet-vnc.c
@@ -88,8 +88,8 @@ static const value_string vnc_security_types_vs[] = {
};
static const true_false_string auth_result_tfs = {
- "Failed",
- "OK"
+ "Failed",
+ "OK"
};
static const value_string yes_no_vs[] = {
@@ -621,13 +621,13 @@ static void
dissect_vnc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
gboolean ret;
- gint offset = 0;
+ gint offset = 0;
/* Set up structures needed to add the protocol subtree and manage it */
- proto_item *ti=NULL;
- proto_tree *vnc_tree=NULL;
+ proto_item *ti = NULL;
+ proto_tree *vnc_tree = NULL;
- conversation_t *conversation;
+ conversation_t *conversation;
vnc_conversation_t *per_conversation_info;
conversation = find_or_create_conversation(pinfo);
@@ -1257,7 +1257,7 @@ vnc_client_to_server(tvbuff_t *tvb, packet_info *pinfo, gint *offset,
{
guint8 message_type;
- proto_item *ti=NULL;
+ proto_item *ti = NULL;
proto_tree *vnc_client_message_type_tree;
message_type = tvb_get_guint8(tvb, *offset);
@@ -1318,7 +1318,7 @@ vnc_server_to_client(tvbuff_t *tvb, packet_info *pinfo, gint *offset,
guint8 message_type;
gint bytes_needed = 0, length_remaining;
- proto_item *ti=NULL;
+ proto_item *ti = NULL;
proto_tree *vnc_server_message_type_tree;
start_offset = *offset;
@@ -1434,8 +1434,8 @@ static void
vnc_client_set_encodings(tvbuff_t *tvb, packet_info *pinfo, gint *offset,
proto_tree *tree)
{
- guint16 number_of_encodings;
- guint counter;
+ guint16 number_of_encodings;
+ guint counter;
vnc_packet_t *per_packet_info;
per_packet_info = p_get_proto_data(pinfo->fd, proto_vnc);
@@ -1586,10 +1586,10 @@ static guint
vnc_server_framebuffer_update(tvbuff_t *tvb, packet_info *pinfo, gint *offset,
proto_tree *tree)
{
- gint i;
- guint16 num_rects, width, height;
- guint bytes_needed = 0;
- guint32 encoding_type;
+ gint i;
+ guint16 num_rects, width, height;
+ guint bytes_needed = 0;
+ guint32 encoding_type;
proto_item *ti, *ti_x, *ti_y, *ti_width, *ti_height;
proto_tree *vnc_rect_tree, *vnc_encoding_type_tree;
@@ -1745,7 +1745,7 @@ static guint32
vnc_extended_desktop_size(tvbuff_t *tvb, gint *offset, proto_tree *tree)
{
- guint8 i, num_of_screens;
+ guint8 i, num_of_screens;
proto_item *ti;
proto_tree *screen_tree;
@@ -1814,9 +1814,9 @@ static guint
vnc_rre_encoding(tvbuff_t *tvb, packet_info *pinfo, gint *offset,
proto_tree *tree, const guint16 width _U_, const guint16 height _U_)
{
- guint8 bytes_per_pixel = vnc_get_bytes_per_pixel(pinfo);
- guint32 num_subrects, i;
- guint bytes_needed;
+ guint8 bytes_per_pixel = vnc_get_bytes_per_pixel(pinfo);
+ guint32 num_subrects, i;
+ guint bytes_needed;
proto_item *ti;
proto_tree *subrect_tree;
@@ -1879,12 +1879,12 @@ static guint
vnc_hextile_encoding(tvbuff_t *tvb, packet_info *pinfo, gint *offset,
proto_tree *tree, const guint16 width, const guint16 height)
{
- guint8 bytes_per_pixel = vnc_get_bytes_per_pixel(pinfo);
- guint8 i, subencoding_mask, num_subrects, subrect_len, tile_height, tile_width;
- guint32 raw_length;
+ guint8 bytes_per_pixel = vnc_get_bytes_per_pixel(pinfo);
+ guint8 i, subencoding_mask, num_subrects, subrect_len, tile_height, tile_width;
+ guint32 raw_length;
proto_tree *tile_tree, *subencoding_mask_tree, *subrect_tree, *num_subrects_tree;
proto_item *ti, *tile_item;
- guint16 current_height = 0, current_width;
+ guint16 current_height = 0, current_width;
while(current_height != height) {
if (current_height + 16 > height)
@@ -2353,10 +2353,10 @@ vnc_rich_cursor_encoding(tvbuff_t *tvb, packet_info *pinfo, gint *offset,
proto_tree *tree, const guint16 width, const guint16 height)
{
guint8 bytes_per_pixel = vnc_get_bytes_per_pixel(pinfo);
- guint pixels_bytes, mask_bytes;
+ guint pixels_bytes, mask_bytes;
pixels_bytes = width * height * bytes_per_pixel;
- mask_bytes = ((width + 7) / 8) * height;
+ mask_bytes = ((width + 7) / 8) * height;
return decode_cursor(tvb, offset, tree,
pixels_bytes, mask_bytes);
@@ -2368,7 +2368,7 @@ vnc_x_cursor_encoding(tvbuff_t *tvb, packet_info *pinfo _U_, gint *offset,
proto_tree *tree, const guint16 width, const guint16 height)
{
gint bitmap_row_bytes = (width + 7) / 8;
- gint mask_bytes = bitmap_row_bytes * height;
+ gint mask_bytes = bitmap_row_bytes * height;
VNC_BYTES_NEEDED (6);
proto_tree_add_item(tree, hf_vnc_cursor_x_fore_back, tvb, *offset, 6, ENC_NA);
@@ -2465,7 +2465,7 @@ static guint
vnc_server_cut_text(tvbuff_t *tvb, packet_info *pinfo, gint *offset,
proto_tree *tree)
{
- guint32 text_len;
+ guint32 text_len;
proto_item *pi;
col_set_str(pinfo->cinfo, COL_INFO, "Server cut text");
@@ -2908,7 +2908,7 @@ proto_register_vnc(void)
/* Client Key Event */
{ &hf_vnc_key_down,
{ "Key down", "vnc.key_down",
- FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x0,
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_yes_no), 0x0,
"Specifies whether the key is being pressed or not", HFILL }
},
{ &hf_vnc_key,
diff --git a/epan/dissectors/packet-vtp.c b/epan/dissectors/packet-vtp.c
index 912f716716..137da6d0f2 100644
--- a/epan/dissectors/packet-vtp.c
+++ b/epan/dissectors/packet-vtp.c
@@ -22,11 +22,12 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+#ifdef HAVE_CONFIG_H
#include "config.h"
-
-#include <stdlib.h>
+#endif
#include <glib.h>
+
#include <epan/packet.h>
/*
diff --git a/epan/dissectors/packet-waveagent.c b/epan/dissectors/packet-waveagent.c
new file mode 100644
index 0000000000..bc31590c93
--- /dev/null
+++ b/epan/dissectors/packet-waveagent.c
@@ -0,0 +1,1939 @@
+/* packet-waveagent.c
+ * Routines for WaveAgent dissection
+ * Copyright 2009-2011, Tom Cook <tcook@ixiacom.com>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ * *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+
+
+#define ETHERNET_INTERFACE 1
+#define WLAN_INTERFACE 2
+
+#define IPV4_TYPE 2
+#define IPV6_TYPE 10
+
+#define NUM_STATE_CHANGES 8
+#define NUM_BSS 8
+#define SHORT_STR 256
+
+#define WA_V2_PAYLOAD_OFFSET 40
+#define WA_V3_PAYLOAD_OFFSET 44
+
+/* Forward declaration we need below */
+void proto_reg_handoff_waveagent(void);
+
+/* Initialize the protocol and registered fields */
+static int proto_waveagent = -1;
+static int hf_waveagent_controlword = -1;
+static int hf_waveagent_payloadlen = -1;
+static int hf_waveagent_transnum = -1;
+static int hf_waveagent_rtoken = -1;
+static int hf_waveagent_flowid = -1;
+static int hf_waveagent_capstatus = -1;
+static int hf_waveagent_protocolversion = -1;
+static int hf_waveagent_capimpl = -1;
+static int hf_waveagent_id = -1;
+static int hf_waveagent_bindtag = -1;
+static int hf_waveagent_version = -1;
+static int hf_waveagent_brokerip = -1;
+static int hf_waveagent_brokerport = -1;
+static int hf_waveagent_bindlevel = -1;
+static int hf_waveagent_bindport = -1;
+static int hf_waveagent_numinterfaces = -1;
+static int hf_waveagent_capabilities2 = -1;
+static int hf_waveagent_ifmask = -1;
+static int hf_waveagent_commandstatus = -1;
+static int hf_waveagent_syserrno = -1;
+static int hf_waveagent_statusstring = -1;
+static int hf_waveagent_rxdatapckts = -1;
+static int hf_waveagent_rxdatabytes = -1;
+static int hf_waveagent_rxpcktrate = -1;
+static int hf_waveagent_rxbyterate = -1;
+static int hf_waveagent_txdatapckts = -1;
+static int hf_waveagent_txdatabytes = -1;
+static int hf_waveagent_txpcktrate = -1;
+static int hf_waveagent_txbyterate = -1;
+static int hf_waveagent_looppckts = -1;
+static int hf_waveagent_loopbytes = -1;
+static int hf_waveagent_rxctlpckts = -1;
+static int hf_waveagent_rxctlbytes = -1;
+static int hf_waveagent_txctlpckts = -1;
+static int hf_waveagent_txctlbytes = -1;
+static int hf_waveagent_unknowncmds = -1;
+static int hf_waveagent_snap = -1;
+static int hf_waveagent_state = -1;
+static int hf_waveagent_appstate = -1;
+static int hf_waveagent_rx1pl = -1;
+static int hf_waveagent_rx2pl = -1;
+static int hf_waveagent_rx3pl = -1;
+static int hf_waveagent_rx4pl = -1;
+static int hf_waveagent_rx5pl = -1;
+static int hf_waveagent_rxoospkts = -1;
+static int hf_waveagent_rxmeanlatency = -1;
+static int hf_waveagent_rxminlatency = -1;
+static int hf_waveagent_rxmaxlatency = -1;
+static int hf_waveagent_latencysum = -1;
+static int hf_waveagent_latencycount = -1;
+static int hf_waveagent_txflowstop = -1;
+static int hf_waveagent_jitter = -1;
+static int hf_waveagent_remoteport = -1;
+static int hf_waveagent_remoteaddr = -1;
+static int hf_waveagent_dscp = -1;
+static int hf_waveagent_fsflags = -1;
+static int hf_waveagent_fscbrflag = -1;
+static int hf_waveagent_fscombinedsetupflag = -1;
+/* static int hf_waveagent_totalbytes = -1; */
+static int hf_waveagent_payfill = -1;
+static int hf_waveagent_paysize = -1;
+static int hf_waveagent_avgrate = -1;
+static int hf_waveagent_rxflownum = -1;
+static int hf_waveagent_mode = -1;
+static int hf_waveagent_endpointtype = -1;
+static int hf_waveagent_totalframes = -1;
+static int hf_waveagent_bssidstartindex = -1;
+static int hf_waveagent_bssidstopindex = -1;
+static int hf_waveagent_ifindex = -1;
+static int hf_waveagent_iftype = -1;
+static int hf_waveagent_ifdescription = -1;
+static int hf_waveagent_ifmacaddr = -1;
+static int hf_waveagent_iflinkspeed = -1;
+static int hf_waveagent_ifdhcp = -1;
+static int hf_waveagent_ifwlanbssid = -1;
+static int hf_waveagent_ifwlanssid = -1;
+static int hf_waveagent_ifiptype = -1;
+static int hf_waveagent_ifipv4 = -1;
+static int hf_waveagent_ifipv6 = -1;
+static int hf_waveagent_ifdhcpserver = -1;
+static int hf_waveagent_ifgateway = -1;
+static int hf_waveagent_ifdnsserver = -1;
+static int hf_waveagent_ifethl2status = -1;
+static int hf_waveagent_ifwlanl2status = -1;
+static int hf_waveagent_ifl3status = -1;
+static int hf_waveagent_totalbssid = -1;
+static int hf_waveagent_returnedbssid = -1;
+static int hf_waveagent_scanbssid = -1;
+static int hf_waveagent_scanssid = -1;
+static int hf_waveagent_ifwlanrssi = -1;
+static int hf_waveagent_ifwlansupprates = -1;
+static int hf_waveagent_ifwlancapabilities = -1;
+static int hf_waveagent_ifwlanchannel = -1;
+static int hf_waveagent_ifwlanprivacy = -1;
+static int hf_waveagent_ifwlanbssmode = -1;
+static int hf_waveagent_ifwlannoise = -1;
+static int hf_waveagent_ifphytypes = -1;
+static int hf_waveagent_ifphytypebit0 = -1;
+static int hf_waveagent_ifphytypebit1 = -1;
+static int hf_waveagent_ifphytypebit2 = -1;
+static int hf_waveagent_ifphytypebit3 = -1;
+/* static int hf_waveagent_ifphytypebit4 = -1; */
+static int hf_waveagent_ifwlanauthentication = -1;
+static int hf_waveagent_ifwlancipher = -1;
+static int hf_waveagent_delayfactor = -1;
+static int hf_waveagent_medialossrate = -1;
+static int hf_waveagent_txstartts = -1;
+static int hf_waveagent_txendts = -1;
+static int hf_waveagent_rxstartts = -1;
+static int hf_waveagent_rxendts = -1;
+static int hf_waveagent_oidcode = -1;
+static int hf_waveagent_oidvalue = -1;
+static int hf_waveagent_destip = -1;
+static int hf_waveagent_destport = -1;
+static int hf_waveagent_connectflags = -1;
+static int hf_waveagent_connecttype = -1;
+static int hf_waveagent_minrssi = -1;
+static int hf_waveagent_connecttimeout = -1;
+static int hf_waveagent_connectattempts = -1;
+static int hf_waveagent_reason = -1;
+static int hf_waveagent_sigsequencenum = -1;
+static int hf_waveagent_relaydestid = -1;
+static int hf_waveagent_relaysrcid = -1;
+static int hf_waveagent_relaymessagest = -1;
+
+/* Initialize the subtree pointers */
+static gint ett_waveagent = -1;
+static gint ett_statechange = -1;
+static gint ett_phytypes = -1;
+static gint ett_fsflags = -1;
+static gint ett_scindex0 = -1;
+static gint ett_scindex1 = -1;
+static gint ett_scindex2 = -1;
+static gint ett_scindex3 = -1;
+static gint ett_scindex4 = -1;
+static gint ett_scindex5 = -1;
+static gint ett_scindex6 = -1;
+static gint ett_scindex7 = -1;
+static gint ett_bss0 = -1;
+static gint ett_bss1 = -1;
+static gint ett_bss2 = -1;
+static gint ett_bss3 = -1;
+static gint ett_bss4 = -1;
+static gint ett_bss5 = -1;
+static gint ett_bss6 = -1;
+static gint ett_bss7 = -1;
+static gint ett_relaymessage = -1;
+
+static const value_string control_words[] = {
+ { 0x01, "Receive, Count, Discard"},
+ { 0x02, "Receive, Count, Loopback"},
+ { 0x03, "Receive, Count, Push timestamp, Discard"},
+ { 0x04, "Receive, Count, Push timestamp, Loopback"},
+ { 0x08, "Transmit"},
+ { 0x11, "Start Flow"},
+ { 0x12, "Stop Flow"},
+ { 0x20, "Stats Reset"},
+ { 0x21, "Stats Request"},
+ { 0x22, "Flow Stats Reset"},
+ { 0x23, "Scan Results Request"},
+ { 0x24, "Interface Info Request"},
+ { 0x25, "Interface Change Info Request"},
+ { 0x26, "OID Request"},
+ { 0x2e, "Scan Results Response"},
+ { 0x2f, "Stats Response"},
+ { 0x30, "Interface Info Response"},
+ { 0x31, "Interface Change Info Response"},
+ { 0x3e, "Relay Message"},
+ { 0x3f, "Relay Response"},
+ { 0x40, "Client Connect Request"},
+ { 0x41, "Client Disconnect Request"},
+ { 0x32, "OID Response"},
+ { 0x80, "Capabilities Request"},
+ { 0x81, "Capabilities Response"},
+ { 0x82, "Reserve Request"},
+ { 0x84, "Release Request"},
+ { 0x85, "Flow Setup"},
+ { 0x86, "Flow Destroy"},
+ { 0x87, "Flow Connect"},
+ { 0x88, "Flow Disconnect"},
+ { 0x89, "Flow Listen"},
+ { 0x8a, "Scan Request"},
+ { 0x8b, "Learning Message"},
+ { 0x8f, "Command Response"},
+ { 0, NULL},
+};
+
+/* Dissects the WLAN interface stats structure */
+static void dissect_wlan_if_stats(guint32 starting_offset, proto_item *parent_tree, tvbuff_t *tvb)
+{
+ proto_item *phy_types;
+ proto_tree *phy_types_tree;
+ guint32 phy_types_bitfield, noise_floor;
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifwlanbssid, tvb, starting_offset, 6, ENC_NA);
+
+ /* two bytes of pad go here */
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifwlanssid, tvb, starting_offset + 8, 32, ENC_ASCII|ENC_NA);
+
+ /* 4 byte SSID length field not reported */
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifwlanrssi, tvb, starting_offset + 44, 4, ENC_BIG_ENDIAN);
+
+ noise_floor = tvb_get_ntohl(tvb, starting_offset + 48);
+
+ if (noise_floor != 0x7fffffff) {
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifwlannoise, tvb, starting_offset + 48, 4, ENC_BIG_ENDIAN);
+ }
+ else {
+ proto_tree_add_int_format(parent_tree,
+ hf_waveagent_ifwlannoise, tvb, starting_offset + 48, 4, noise_floor,
+ "WLAN Interface Noise Floor (dBm): Not Reported");
+ }
+
+ phy_types_bitfield = tvb_get_ntohl(tvb, starting_offset + 52);
+
+ phy_types = proto_tree_add_uint(parent_tree, hf_waveagent_ifphytypes,
+ tvb, starting_offset + 52, 4, phy_types_bitfield);
+
+ phy_types_tree = proto_item_add_subtree(phy_types, ett_phytypes);
+
+ proto_tree_add_item(phy_types_tree,
+ hf_waveagent_ifphytypebit0, tvb, starting_offset + 55, 1, ENC_LITTLE_ENDIAN);
+
+ proto_tree_add_item(phy_types_tree,
+ hf_waveagent_ifphytypebit1, tvb, starting_offset + 55, 1, ENC_LITTLE_ENDIAN);
+
+ proto_tree_add_item(phy_types_tree,
+ hf_waveagent_ifphytypebit2, tvb, starting_offset + 55, 1, ENC_LITTLE_ENDIAN);
+
+ proto_tree_add_item(phy_types_tree,
+ hf_waveagent_ifphytypebit3, tvb, starting_offset + 55, 1, ENC_LITTLE_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifwlanauthentication, tvb, starting_offset + 56, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifwlancipher, tvb, starting_offset + 60, 4, ENC_BIG_ENDIAN);
+}
+
+static void dissect_wa_payload(guint32 starting_offset, proto_item *parent_tree, tvbuff_t *tvb, guint32 control_word, guint8 version)
+{
+ guint32 if_type, if_status, flags_bitfield;
+ guint8 iLoop, isr, n, ret;
+ guint32 offset, delta, num_bss_entries, st_index[NUM_STATE_CHANGES], bss_array[NUM_BSS];
+ proto_tree *st_change_index_tree[NUM_STATE_CHANGES], *fs_flags;
+ proto_tree *bss_tree[NUM_BSS], *fs_flags_tree;
+ proto_item *stIndex[NUM_STATE_CHANGES], *bssIndex[NUM_BSS];
+ const guint8 *tag_data_ptr;
+ guint32 tag_len;
+ char out_buff[SHORT_STR];
+ char print_buff[SHORT_STR];
+
+ switch (control_word)
+ {
+ case 0x11: /* Flow start message */
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_payfill, tvb, starting_offset, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_paysize, tvb, starting_offset+4, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_avgrate, tvb, starting_offset+8, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_totalframes, tvb, starting_offset+12, 4, ENC_BIG_ENDIAN);
+
+ break;
+
+ case 0x23: /* Scan results request */
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifindex, tvb, starting_offset, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_bssidstartindex, tvb, starting_offset+4, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_bssidstopindex, tvb, starting_offset+8, 4, ENC_BIG_ENDIAN);
+
+ break;
+
+ case 0x24: /* Interface info request */
+ case 0x25: /* Interface change info request */
+ case 0x8a: /* Scan request */
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifindex, tvb, starting_offset, 4, ENC_BIG_ENDIAN);
+
+ break;
+
+ case 0x26: /* OID request */
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifindex, tvb, starting_offset, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_oidcode, tvb, starting_offset+4, 4, ENC_BIG_ENDIAN);
+
+ break;
+
+ case 0x30: /* Interface stats response */
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifindex, tvb, starting_offset, 4, ENC_BIG_ENDIAN);
+
+ if_type = tvb_get_ntohl(tvb, starting_offset + 4);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_iftype, tvb, starting_offset + 4, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifdhcp, tvb, starting_offset + 8, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifmacaddr, tvb, starting_offset + 12, 6, ENC_NA);
+
+ /* 2 bytes of pad go here */
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_iflinkspeed, tvb, starting_offset + 20, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifdescription, tvb, starting_offset + 24, 128, ENC_ASCII|ENC_NA);
+
+ /* 4 byte length field goes here - skip it */
+
+ /* two bytes of pad go here */
+
+ /* If we have WLAN interface, then report the following */
+ if (if_type == WLAN_INTERFACE)
+ dissect_wlan_if_stats(starting_offset + 156, parent_tree, tvb);
+
+ /* Next come the BindingAddress fields (for each address):
+ 2 bytes: IP type (v4 or v6)
+ 2 bytes: address length
+ 4 bytes: service number (not used)
+ 16 bytes: IP address */
+
+ /* for the bound IP address, report both IP type and address */
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifiptype, tvb, starting_offset + 252, 2, ENC_BIG_ENDIAN);
+
+ if (tvb_get_ntohs(tvb, starting_offset + 252) == IPV4_TYPE) {
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifipv4, tvb, starting_offset + 260, 4, ENC_BIG_ENDIAN); /* grab the last 4 bytes of the IP address field */
+ }
+ else {
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifipv6, tvb, starting_offset + 260, 16, ENC_NA);
+ }
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifdhcpserver, tvb, starting_offset + 284, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifgateway, tvb, starting_offset + 308, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifdnsserver, tvb, starting_offset + 332, 4, ENC_BIG_ENDIAN);
+
+ break;
+
+ case 0x31: /* Interface change info response */
+ /* Create the array of subtree elements for the state change array */
+ st_index[0] = ett_scindex0;
+ st_index[1] = ett_scindex1;
+ st_index[2] = ett_scindex2;
+ st_index[3] = ett_scindex3;
+ st_index[4] = ett_scindex4;
+ st_index[5] = ett_scindex5;
+ st_index[6] = ett_scindex6;
+ st_index[7] = ett_scindex7;
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifindex, tvb, starting_offset, 4, ENC_BIG_ENDIAN);
+
+ if_type = tvb_get_ntohl(tvb, starting_offset + 4);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_iftype, tvb, starting_offset + 4, 4, ENC_BIG_ENDIAN);
+
+ offset = starting_offset + 8;
+ delta = 156;
+
+ for (iLoop = 0; iLoop < NUM_STATE_CHANGES; iLoop++) {
+ int current_offset;
+ current_offset = offset + iLoop * delta;
+
+ /* Check to see if the interface entry is valid */
+ if_status = tvb_get_ntohl(tvb, current_offset);
+ if (if_status == 0) continue; /* No entry at this index, keep going */
+
+ /* Add index specific trees to hide the details */
+ stIndex[iLoop] = proto_tree_add_uint_format_value(parent_tree,
+ hf_waveagent_ifwlanl2status, tvb, current_offset, 4, if_status, "Interface state change %d", iLoop);
+
+ st_change_index_tree[iLoop] = proto_item_add_subtree(stIndex[iLoop], st_index[iLoop]);
+
+ if (if_type == WLAN_INTERFACE) {
+ proto_tree_add_item(st_change_index_tree[iLoop],
+ hf_waveagent_ifwlanl2status, tvb, current_offset, 4, ENC_BIG_ENDIAN);
+ } else {
+ proto_tree_add_item(st_change_index_tree[iLoop],
+ hf_waveagent_ifethl2status, tvb, current_offset, 4, ENC_BIG_ENDIAN);
+ }
+
+ proto_tree_add_item(st_change_index_tree[iLoop],
+ hf_waveagent_ifl3status, tvb, current_offset + 4, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(st_change_index_tree[iLoop],
+ hf_waveagent_iflinkspeed, tvb, current_offset + 8, 4, ENC_BIG_ENDIAN);
+
+ if (if_type == WLAN_INTERFACE) {
+ dissect_wlan_if_stats(current_offset + 12, st_change_index_tree[iLoop], tvb);
+ }
+
+ proto_tree_add_item(st_change_index_tree[iLoop],
+ hf_waveagent_snap, tvb, current_offset + 108, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(st_change_index_tree[iLoop],
+ hf_waveagent_ifiptype, tvb, current_offset + 116, 2, ENC_BIG_ENDIAN);
+
+ if (tvb_get_ntohs(tvb, current_offset + 116) == IPV4_TYPE) {
+ proto_tree_add_item(st_change_index_tree[iLoop],
+ hf_waveagent_ifipv4, tvb, current_offset + 124, 4, ENC_BIG_ENDIAN); /* grab the last 4 bytes of the IP address field */
+ }
+ else {
+ proto_tree_add_item(st_change_index_tree[iLoop],
+ hf_waveagent_ifipv6, tvb, current_offset + 124, 16, ENC_NA);
+ }
+
+ /* 16 bytes of padding */
+ }
+
+ break;
+
+ case 0x32: /* OID response */
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifindex, tvb, starting_offset, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_oidcode, tvb, starting_offset + 4, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_oidvalue, tvb, starting_offset + 12, 1024, ENC_ASCII|ENC_NA);
+
+ break;
+
+ case 0x2e: /* scan results response message */
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifindex, tvb, starting_offset, 4, ENC_BIG_ENDIAN);
+
+ bss_array[0] = ett_bss0;
+ bss_array[1] = ett_bss1;
+ bss_array[2] = ett_bss2;
+ bss_array[3] = ett_bss3;
+ bss_array[4] = ett_bss4;
+ bss_array[5] = ett_bss5;
+ bss_array[6] = ett_bss6;
+ bss_array[7] = ett_bss7;
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_totalbssid, tvb, starting_offset + 4, 4, ENC_BIG_ENDIAN);
+
+ num_bss_entries = tvb_get_ntohl(tvb, starting_offset + 8);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_returnedbssid, tvb, starting_offset + 8, 4, ENC_BIG_ENDIAN);
+
+ /* Add 4 bytes of pad for the offset */
+
+ offset = starting_offset + 16;
+ delta = 148;
+
+ for (iLoop = 0; iLoop < num_bss_entries; iLoop++)
+ {
+ int current_offset;
+ current_offset = offset + iLoop * delta;
+
+ bssIndex[iLoop] = proto_tree_add_item(parent_tree,
+ hf_waveagent_scanssid, tvb, current_offset, 32, ENC_ASCII|ENC_NA);
+
+ bss_tree[iLoop] = proto_item_add_subtree(bssIndex[iLoop], bss_array[iLoop]);
+
+ tag_len = tvb_get_ntohl(tvb, current_offset + 52);
+
+ if (tag_len > 0) {
+ tag_data_ptr = tvb_get_ptr (tvb, offset + 36, tag_len);
+
+ for (isr = 0, n = 0; isr < tag_len; isr++) {
+ if (tag_data_ptr[isr] == 0xFF){
+ proto_tree_add_string (bss_tree[iLoop], hf_waveagent_ifwlansupprates, tvb, offset + 36 + isr,
+ 1, "BSS requires support for mandatory features of HT PHY (IEEE 802.11 - Clause 20)");
+ } else {
+ ret = g_snprintf (print_buff + n, SHORT_STR - n, "%2.1f%s ",
+ (tag_data_ptr[isr] & 0x7F) * 0.5,
+ (tag_data_ptr[isr] & 0x80) ? "(B)" : "");
+ if (ret >= SHORT_STR - n) {
+ /* ret = <buf_size> or greater. means buffer truncated */
+ break;
+ }
+ n += ret;
+ }
+ }
+
+ g_snprintf (out_buff, SHORT_STR, "%s [Mbit/sec]", print_buff);
+ }
+ else {
+ g_snprintf (out_buff, SHORT_STR, "Not defined");
+ }
+
+ proto_tree_add_string (bss_tree[iLoop], hf_waveagent_ifwlansupprates, tvb, offset + 36,
+ tag_len, out_buff);
+
+ proto_tree_add_item(bss_tree[iLoop],
+ hf_waveagent_scanbssid, tvb, current_offset + 56, 6, ENC_NA);
+
+ proto_tree_add_item(bss_tree[iLoop],
+ hf_waveagent_ifwlancapabilities, tvb, current_offset + 62, 2, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(bss_tree[iLoop],
+ hf_waveagent_ifwlanrssi, tvb, current_offset + 64, 4, ENC_BIG_ENDIAN);
+
+ /* For now this is just a 4 byte pad, so comment it out... */
+ /* proto_tree_add_item(bss_tree[iLoop],
+ hf_waveagent_ifwlansigquality, tvb, current_offset + 68, 4, ENC_BIG_ENDIAN);
+ */
+ proto_tree_add_item(bss_tree[iLoop],
+ hf_waveagent_ifwlanchannel, tvb, current_offset + 72, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(bss_tree[iLoop],
+ hf_waveagent_ifwlanprivacy, tvb, current_offset + 76, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(bss_tree[iLoop],
+ hf_waveagent_ifwlanbssmode, tvb, current_offset + 80, 4, ENC_BIG_ENDIAN);
+ }
+
+ break;
+
+ case 0x2f: /* Stats response message */
+ if (version < 3) {
+ /* For version 2 WA protocol the capability status is not in the header but in the CAP
+ RESPONSE. Need to read it here and then advance the payload offset. This is a
+ packet that had a structure change in the beginning of the packet when moving
+ to v3 */
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_capstatus, tvb, starting_offset, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_protocolversion, tvb, starting_offset, 1, ENC_BIG_ENDIAN);
+
+ starting_offset += 4;
+ }
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_capimpl, tvb, starting_offset, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_state, tvb, starting_offset + 4, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_appstate, tvb, starting_offset + 8, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_rxdatapckts, tvb, starting_offset + 12, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_rxdatabytes, tvb, starting_offset + 20, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_rxpcktrate, tvb, starting_offset + 28, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_rxbyterate, tvb, starting_offset + 36, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_txdatapckts, tvb, starting_offset + 44, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_txdatabytes, tvb, starting_offset + 52, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_txpcktrate, tvb, starting_offset + 60, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_txbyterate, tvb, starting_offset + 68, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_looppckts, tvb, starting_offset + 76, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_loopbytes, tvb, starting_offset + 84, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_rxctlpckts, tvb, starting_offset + 92, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_rxctlbytes, tvb, starting_offset + 100, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_txctlpckts, tvb, starting_offset + 108, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_txctlbytes, tvb, starting_offset + 116, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_unknowncmds, tvb, starting_offset + 124, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_snap, tvb, starting_offset + 132, 8, ENC_BIG_ENDIAN);
+
+ /* proto_tree_add_item(parent_tree,
+ hf_waveagent_tstamp1, tvb, 140, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_tstamp2, tvb, 144, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_tstamp3, tvb, 148, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_tstamp4, tvb, 152, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_tstamp5, tvb, 156, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_tstamp6, tvb, 160, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_tstamp7, tvb, 164, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_tstamp8, tvb, 168, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_minlcldelta, tvb, 172, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_maxlcldelta, tvb, 176, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_avglcldelta, tvb, 180, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_minremdelta, tvb, 184, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_maxremdelta, tvb, 188, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_avgremdelta, tvb, 192, 4, ENC_BIG_ENDIAN);
+ */
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_rx1pl, tvb, starting_offset + 284, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_rx2pl, tvb, starting_offset + 292, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_rx3pl, tvb, starting_offset + 300, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_rx4pl, tvb, starting_offset + 308, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_rx5pl, tvb, starting_offset + 316, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_rxoospkts, tvb, starting_offset + 324, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_jitter, tvb, starting_offset + 356, 8, ENC_BIG_ENDIAN);
+
+ if (version >= 3) {
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_delayfactor, tvb, starting_offset + 364, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_medialossrate, tvb, starting_offset + 372, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_txstartts, tvb, starting_offset + 380, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_txendts, tvb, starting_offset + 388, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_rxstartts, tvb, starting_offset + 396, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_rxendts, tvb, starting_offset + 404, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_latencysum, tvb, starting_offset + 412, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_latencycount, tvb, starting_offset + 420, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_txflowstop, tvb, starting_offset + 428, 8, ENC_BIG_ENDIAN);
+ }
+
+ break;
+
+ case 0x40:
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifindex, tvb, starting_offset, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_connectflags, tvb, starting_offset + 4, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_connecttype, tvb, starting_offset + 8, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_scanssid, tvb, starting_offset + 12, 32, ENC_ASCII|ENC_NA);
+
+ num_bss_entries = tvb_get_ntohl(tvb, starting_offset + 142);
+
+ offset = starting_offset + 46;
+ delta = 6;
+ for (iLoop = 0; iLoop < num_bss_entries; iLoop++)
+ {
+ int current_offset;
+ current_offset = offset + iLoop * delta;
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_scanbssid, tvb, current_offset, 6, ENC_NA);
+ }
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_minrssi, tvb, starting_offset + 146, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_connecttimeout, tvb, starting_offset + 150, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_connectattempts, tvb, starting_offset + 154, 4, ENC_BIG_ENDIAN);
+
+ break;
+
+ case 0x41:
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifindex, tvb, starting_offset, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_reason, tvb, starting_offset + 4, 4, ENC_BIG_ENDIAN);
+
+ break;
+
+ case 0x81: /* Capabilities response */
+ if (version < 3) {
+ /* For version 2 WA protocol the capability status is not in the header but in the CAP
+ RESPONSE. Need to read it here and then advance the payload offset. This is a
+ packet that had a structure change in the beginning of the packet when moving
+ to v3 */
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_capstatus, tvb, starting_offset, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_protocolversion, tvb, starting_offset, 1, ENC_BIG_ENDIAN);
+
+ starting_offset += 4;
+ }
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_capimpl, tvb, starting_offset, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_id, tvb, starting_offset + 4, 128, ENC_ASCII|ENC_NA);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_bindtag, tvb, starting_offset + 136, 128, ENC_ASCII|ENC_NA);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_version, tvb, starting_offset + 268, 128, ENC_ASCII|ENC_NA);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_brokerip, tvb, starting_offset + 400, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_brokerport, tvb, starting_offset + 404, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_bindlevel, tvb, starting_offset + 408, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_bindport, tvb, starting_offset + 412, 4, ENC_BIG_ENDIAN);
+
+ if (version >= 3) {
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_capabilities2, tvb, starting_offset + 416, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_numinterfaces, tvb, starting_offset + 420, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifmask, tvb, starting_offset + 424, 4, ENC_BIG_ENDIAN);
+ }
+
+ break;
+
+ case 0x82: /* Reserve request */
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_bindtag, tvb, starting_offset, 128, ENC_ASCII|ENC_NA);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_brokerip, tvb, starting_offset + 132, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_brokerport, tvb, starting_offset + 136, 4, ENC_BIG_ENDIAN);
+
+ break;
+
+ case 0x85: /* Flow setup */
+ if (version < 3) {
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_rxflownum, tvb, starting_offset, 4, ENC_BIG_ENDIAN);
+ }
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_mode, tvb, starting_offset + 7, 1, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_endpointtype, tvb, starting_offset + 7, 1, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_bindport, tvb, starting_offset + 8, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_bindlevel, tvb, starting_offset + 12, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_remoteport, tvb, starting_offset + 16, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_remoteaddr, tvb, starting_offset + 24, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_dscp, tvb, starting_offset + 40, 4, ENC_BIG_ENDIAN);
+
+ flags_bitfield = tvb_get_ntohl(tvb, starting_offset + 44);
+
+ fs_flags = proto_tree_add_uint(parent_tree, hf_waveagent_fsflags,
+ tvb, starting_offset + 44, 4, flags_bitfield);
+
+ fs_flags_tree = proto_item_add_subtree(fs_flags, ett_fsflags);
+
+ proto_tree_add_item(fs_flags_tree,
+ hf_waveagent_fscbrflag, tvb, starting_offset + 47, 1, ENC_LITTLE_ENDIAN);
+
+ proto_tree_add_item(fs_flags_tree,
+ hf_waveagent_fscombinedsetupflag, tvb, starting_offset + 47, 1, ENC_LITTLE_ENDIAN);
+
+ if (version >= 3) {
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_ifindex, tvb, starting_offset + 48, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_payfill, tvb, starting_offset + 52, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_paysize, tvb, starting_offset + 56, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_avgrate, tvb, starting_offset + 60, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_totalframes, tvb, starting_offset + 64, 4, ENC_BIG_ENDIAN);
+ }
+
+ break;
+
+ case 0x8b:
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_destip, tvb, starting_offset, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_destport, tvb, starting_offset + 4, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_connectflags, tvb, starting_offset + 8, 4, ENC_BIG_ENDIAN);
+
+ break;
+
+ case 0x3f: /* Relay response */
+ case 0x8f: /* Command Response */
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_commandstatus, tvb, starting_offset, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_syserrno, tvb, starting_offset + 4, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_statusstring, tvb, starting_offset + 8, 128, ENC_ASCII|ENC_NA);
+
+ break;
+ }
+}
+
+
+
+static guint32 dissect_wa_header(guint32 starting_offset, proto_item *parent_tree, tvbuff_t *tvb, guint8 version)
+{
+ guint32 wa_payload_offset;
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_controlword, tvb, 30+starting_offset, 2, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_payloadlen, tvb, 20+starting_offset, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_transnum, tvb, 24+starting_offset, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_rtoken, tvb, 32+starting_offset, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_flowid, tvb, 36+starting_offset, 4, ENC_BIG_ENDIAN);
+
+ if (version >= 3) {
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_capstatus, tvb, 40+starting_offset, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_protocolversion, tvb, 40+starting_offset, 1, ENC_BIG_ENDIAN);
+
+ wa_payload_offset = WA_V3_PAYLOAD_OFFSET + starting_offset;
+ }
+ else {
+ wa_payload_offset = WA_V2_PAYLOAD_OFFSET + starting_offset;
+ }
+
+ proto_tree_add_item(parent_tree,
+ hf_waveagent_sigsequencenum, tvb, 4+starting_offset, 1, ENC_BIG_ENDIAN);
+
+ return wa_payload_offset;
+}
+
+/* Code to actually dissect the packets */
+static int dissect_waveagent(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+
+/* Set up structures needed to add the protocol subtree and manage it */
+ proto_item *ti, *rmi;
+ proto_tree *waveagent_tree, *relay_message_tree, *payload_tree;
+ guint8 signature_start, signature_end;
+ guint8 version;
+ guint32 magic_number;
+ guint32 control_word, paylen;
+ guint32 wa_payload_offset;
+
+/* First, if at all possible, do some heuristics to check if the packet cannot
+ * possibly belong to your protocol. This is especially important for
+ * protocols directly on top of TCP or UDP where port collisions are
+ * common place (e.g., even though your protocol uses a well known port,
+ * someone else may set up, for example, a web server on that port which,
+ * if someone analyzed that web server's traffic in Wireshark, would result
+ * in Wireshark handing an HTTP packet to your dissector). For example:
+ */
+ /* Check that there's enough data */
+ if (tvb_length(tvb) < 52 )
+ return 0;
+
+ signature_start = tvb_get_guint8(tvb, 0);
+ signature_end = tvb_get_guint8(tvb, 15);
+ version = ((tvb_get_ntohl(tvb, 16) & 0xF0000000) >> 28 == 1) ? 3 : 2; /* Mask version bit off */
+ magic_number = tvb_get_ntohl(tvb, 16) & 0x0FFFFFFF; /* Mask magic number off */
+
+ /* Get some values from the packet header, probably using tvb_get_*() */
+ if ( (signature_start != 0xcc && signature_start !=0xdd) ||
+ signature_end != 0xE2 || magic_number != 0x0F87C3A5 )
+ /* This packet does not appear to belong to WaveAgent.
+ * Return 0 to give another dissector a chance to dissect it.
+ */
+ return 0;
+
+/* Make entries in Protocol column and Info column on summary display */
+ if (check_col(pinfo->cinfo, COL_PROTOCOL))
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "WA");
+
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_clear(pinfo->cinfo, COL_INFO);
+
+
+/* Grab the control word, parse the WaveAgent payload accordingly */
+
+ control_word = tvb_get_ntohl(tvb, 28);
+ paylen = tvb_get_ntohl(tvb, 20);
+
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s (0x%x)",
+ val_to_str_const(control_word, control_words, "Unknown"), control_word);
+
+ if (tree) {
+/* create display subtree for the protocol */
+ ti = proto_tree_add_protocol_format(tree, proto_waveagent, tvb, 0, -1,
+ "WaveAgent, %s (0x%x), Payload Length %u Bytes",
+ val_to_str_const(control_word, control_words, "Unknown"), control_word, paylen);
+
+ waveagent_tree = proto_item_add_subtree(ti, ett_waveagent);
+
+ wa_payload_offset = dissect_wa_header(0, waveagent_tree, tvb, version);
+
+ payload_tree = waveagent_tree;
+
+ /* Need to check for a relay message. If so, parse the extra fields and then parse the WA packet */
+ if (control_word == 0x3e)
+ {
+ proto_tree_add_item(waveagent_tree,
+ hf_waveagent_relaydestid, tvb, wa_payload_offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(waveagent_tree,
+ hf_waveagent_relaysrcid, tvb, wa_payload_offset+4, 4, ENC_BIG_ENDIAN);
+
+ /* Parse control_word of the relay message */
+ control_word = tvb_get_ntohl(tvb, wa_payload_offset+12+28);
+ rmi = proto_tree_add_none_format(waveagent_tree, hf_waveagent_relaymessagest, tvb, wa_payload_offset+12+28, 0,
+ "Relayed WaveAgent Message, %s (0x%x)",
+ val_to_str_const(control_word, control_words, "Unknown"), control_word);
+
+ relay_message_tree = proto_item_add_subtree(rmi, ett_relaymessage);
+
+ wa_payload_offset = dissect_wa_header(wa_payload_offset+12, relay_message_tree, tvb, version);
+ payload_tree = relay_message_tree;
+ }
+
+ dissect_wa_payload(wa_payload_offset, payload_tree, tvb, control_word, version);
+ }
+
+/* Return the amount of data this dissector was able to dissect */
+ return tvb_length(tvb);
+}
+
+/* Register the protocol with Wireshark */
+
+/* this format is require because a script is used to build the C function
+ that calls all the protocol registration.
+*/
+
+static const value_string status_values[] = {
+ { 0, "OK" },
+ { 1, "In Use" },
+ { 0, NULL }
+};
+
+void proto_register_waveagent(void)
+{
+ static const value_string tcp_states[] = {
+ { 0, "Closed" },
+ { 1, "Listen" },
+ { 2, "SYN Sent" },
+ { 3, "SYN received" },
+ { 4, "Established" },
+ { 5, "FIN Wait 1" },
+ { 6, "FIN Wait 2" },
+ { 7, "Close Wait" },
+ { 8, "Closing" },
+ { 9, "Last ACK" },
+ { 10, "Time Wait" },
+ { 0, NULL },
+ };
+
+ static const value_string app_states[] = {
+ { 0, "IDLE" },
+ { 1, "READY" },
+ { 0, NULL },
+ };
+
+ static const value_string wa_modes[] = {
+ { 0, "In-band" },
+ { 1, "Source" },
+ { 2, "Sink" },
+ { 3, "Loopback" },
+ { 0, NULL },
+ };
+
+ static const value_string wa_endpointtypes[] = {
+ { 0, "Undefined" },
+ { 1, "Server" },
+ { 2, "Client" },
+ { 0, NULL },
+ };
+
+ static const value_string binding_levels[] = {
+ { 0, "WLAN" },
+ { 1, "Ethernet" },
+ { 2, "IP" },
+ { 3, "UDP" },
+ { 4, "TCP" },
+ { 5, "FIN Wait 1" },
+ { 6, "FIN Wait 2" },
+ { 7, "Close Wait" },
+ { 8, "Closing" },
+ { 9, "Last ACK" },
+ { 10, "Time Wait" },
+ { 0, NULL },
+ };
+
+ static const value_string if_types[] = {
+ { ETHERNET_INTERFACE, "Ethernet" },
+ { WLAN_INTERFACE, "WLAN" },
+ { 0, NULL },
+ };
+
+ static const value_string no_yes[] = {
+ { 0, "No" },
+ { 1, "Yes" },
+ { 0, NULL },
+ };
+
+ static const value_string ip_types[] = {
+ { 0, "Unspecified" },
+ { IPV4_TYPE, "IPv4" },
+ { IPV6_TYPE, "IPv6" },
+ { 0, NULL },
+ };
+
+ static const value_string if_l3_states[] = {
+ { 0, "Uninitialized" },
+ { 1, "Disconnected" },
+ { 2, "Connected" },
+ { 3, "Error" },
+ { 0, NULL },
+ };
+
+ static const value_string if_wlan_states[] = {
+ { 0, "Uninitialized" },
+ { 1, "Not ready" },
+ { 2, "Connected" },
+ { 3, "Ad Hoc network formed" },
+ { 4, "Disconnecting" },
+ { 5, "Disconnected" },
+ { 6, "Associating" },
+ { 7, "Discovering" },
+ { 8, "Authenticating" },
+ { 0, NULL },
+ };
+
+ static const value_string if_eth_states[] = {
+ { 0, "Uninitialized" },
+ { 1, "Not Operational" },
+ { 2, "Unreachable" },
+ { 3, "Disconnected" },
+ { 4, "Connecting" },
+ { 5, "Connected" },
+ { 6, "Operational" },
+ { 7, "Error" },
+ { 0, NULL },
+ };
+
+ static const value_string bss_modes[] = {
+ { 0, "Infrastructure" },
+ { 1, "IBSS" },
+ { 2, "Unknown" },
+ { 0, NULL },
+ };
+
+ static const value_string auth_algs[] = {
+ { 0, "Open" },
+ { 1, "Shared Key" },
+ { 2, "WPA" },
+ { 4, "WPA PSK" },
+ { 8, "WPA2" },
+ { 16, "WPA2 PSK" },
+ { 0, NULL },
+ };
+
+ static const value_string cipher_algs[] = {
+ { 0, "None" },
+ { 1, "WEP 40" },
+ { 2, "WEP 104" },
+ { 4, "WEP" },
+ { 8, "TKIP" },
+ { 16, "CCMP" },
+ { 0, NULL },
+ };
+
+ /* Setup list of header fields See Section 1.6.1 for details*/
+ static hf_register_info hf[] = {
+
+ /* START: General purpose message fields - used in multiple messages */
+ { &hf_waveagent_controlword,
+ { "Control Word", "waveagent.cword",
+ FT_UINT16, BASE_HEX, VALS(control_words), 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_payloadlen,
+ { "Payload Length", "waveagent.paylen",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_transnum,
+ { "Transaction Number", "waveagent.transnum",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_rtoken,
+ { "Reservation Token", "waveagent.rtoken",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_flowid,
+ { "Flow ID", "waveagent.flowid",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_capstatus,
+ { "Capabilities Status", "waveagent.capstatus",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_protocolversion,
+ { "Protocol Version", "waveagent.protocolversion",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_capimpl,
+ { "Capabilities Implementation", "waveagent.capimpl",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_sigsequencenum,
+ { "Signature Sequence Number", "waveagent.sigsequencenum",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_id,
+ { "ID", "waveagent.id",
+ FT_STRING, 0, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_bindtag,
+ { "Binding Tag", "waveagent.bindtag",
+ FT_STRING, 0, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_version,
+ { "Version", "waveagent.version",
+ FT_STRING, 0, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_brokerip,
+ { "Broker IP address", "waveagent.brokerip",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_brokerport,
+ { "Broker Port", "waveagent.brokerport",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_bindlevel,
+ { "Binding Level", "waveagent.bindlevel",
+ FT_UINT32, BASE_DEC, VALS(binding_levels), 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_bindport,
+ { "Binding Port", "waveagent.bindport",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_ifindex,
+ { "Interface Index", "waveagent.ifindex",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+ /* END: General purpose message fields - used in multiple messages */
+
+ /* START: Capabilities response fields (specific to this message, other general fields are also used) */
+ { &hf_waveagent_capabilities2,
+ { "Additional Capabilities", "waveagent.capabilities2",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_numinterfaces,
+ { "Number of WA Interfaces", "waveagent.numinterfaces",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_ifmask,
+ { "Mask of Active Interfaces", "waveagent.ifmask",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL } },
+ /* END: Capabilities response fields (specific to this message, other general fields are also used) */
+
+ /* START: Command response message fields */
+ { &hf_waveagent_commandstatus,
+ { "Status of Previous Command", "waveagent.cmdstat",
+ FT_INT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_syserrno,
+ { "System Error Number", "waveagent.syserrno",
+ FT_INT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_statusstring,
+ { "Status Message", "waveagent.statmsg",
+ FT_STRING, 0, NULL, 0x0,
+ NULL, HFILL } },
+ /* END: Command response message fields */
+
+ /* START: Stats response message fields */
+ { &hf_waveagent_rxdatapckts,
+ { "Received Data Packets", "waveagent.rxdpkts",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_rxdatabytes,
+ { "Received Data Bytes", "waveagent.rxdbytes",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_rxpcktrate,
+ { "Received Data Packet Rate (pps)", "waveagent.rxpktrate",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_rxbyterate,
+ { "Received Byte Rate", "waveagent.rxbyterate",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_txdatapckts,
+ { "Transmitted Data Packets", "waveagent.txdpkts",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_txdatabytes,
+ { "Transmitted Data Bytes", "waveagent.txdbytes",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_txpcktrate,
+ { "Transmitted Data Packet Rate (pps)", "waveagent.txpktrate",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_txbyterate,
+ { "Transmitted Byte Rate", "waveagent.txbyterate",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_looppckts,
+ { "Loopback Packets", "waveagent.looppckts",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_loopbytes,
+ { "Loopback Bytes", "waveagent.loopbytes",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_rxctlpckts,
+ { "Received Control Packets", "waveagent.rxctlpkts",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_rxctlbytes,
+ { "Received Control Bytes", "waveagent.rxctlbytes",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_txctlpckts,
+ { "Transmitted Control Packets", "waveagent.txctlpkts",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_txctlbytes,
+ { "Transmitted Control Bytes", "waveagent.txctlbytes",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_unknowncmds,
+ { "Unknown Commands", "waveagent.unkcmds",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_snap,
+ { "Time Snap for Counters", "waveagent.snap",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_appstate,
+ { "TCP State", "waveagent.state",
+ FT_UINT32, BASE_DEC, VALS(tcp_states), 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_state,
+ { "Application State", "waveagent.appstate",
+ FT_UINT32, BASE_DEC, VALS(app_states), 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_rx1pl,
+ { "Instances of single packet loss", "waveagent.rx1pl",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_rx2pl,
+ { "Instances of 2 sequential packets lost", "waveagent.rx2pl",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_rx3pl,
+ { "Instances of 3 sequential packets lost", "waveagent.rx3pl",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_rx4pl,
+ { "Instances of 4 sequential packets lost", "waveagent.rx4pl",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_rx5pl,
+ { "Instances of 5 sequential packets lost", "waveagent.rx5pl",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_rxoospkts,
+ { "Instances of out-of-sequence packets", "waveagent.rxoospkts",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_rxmeanlatency,
+ { "Rx Mean latency", "waveagent.rxmeanlatency",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_rxminlatency,
+ { "Rx Minimum latency", "waveagent.rxminlatency",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_rxmaxlatency,
+ { "Rx Maximum latency", "waveagent.rxmaxlatency",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_jitter,
+ { "Jitter (microseconds)", "waveagent.jitter",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_delayfactor,
+ { "Delay Factor", "waveagent.delayfactor",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_medialossrate,
+ { "Media Loss Rate", "waveagent.medialossrate",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_txstartts,
+ { "Timestamp for first Tx flow packet", "waveagent.txstartts",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_txendts,
+ { "Timestamp for last Tx flow packet", "waveagent.txendts",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_rxstartts,
+ { "Timestamp for first Rx flow packet", "waveagent.rxstartts",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_rxendts,
+ { "Timestamp for last Rx flow packet", "waveagent.rxendts",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_latencysum,
+ { "Sum of latencies across all received packets", "waveagent.latencysum",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_latencycount,
+ { "Count of packets included in the latency sum", "waveagent.latencycount",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_txflowstop,
+ { "Timestamp for Tx flow stop message", "waveagent.txflowstop",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+ /* END Stats response message fields */
+
+ /* START: Flow setup message */
+ { &hf_waveagent_rxflownum,
+ { "Received Flow Number", "waveagent.rxflownum",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_mode,
+ { "WaveAgent Mode", "waveagent.trafficmode",
+ FT_UINT8, BASE_DEC, VALS(wa_modes), 0x03,
+ NULL, HFILL } },
+
+ { &hf_waveagent_endpointtype,
+ { "WaveAgent Endpoint Type", "waveagent.endpointtype",
+ FT_UINT8, BASE_DEC, VALS(wa_endpointtypes), 0x0c,
+ NULL, HFILL } },
+
+ { &hf_waveagent_remoteport,
+ { "Remote port", "waveagent.remoteport",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_remoteaddr,
+ { "Remote address", "waveagent.remoteaddr",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_dscp,
+ { "DSCP Setting", "waveagent.dscp",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_fsflags,
+ { "Flow Setup Flags", "waveagent.fsflags",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_fscbrflag,
+ { "CBR Transmit Mode", "waveagent.fscbrflag",
+ FT_BOOLEAN, 4, NULL, 0x01, NULL, HFILL } },
+
+ { &hf_waveagent_fscombinedsetupflag,
+ { "Setup, Connect/Listen, Start Combined", "waveagent.fscombinedsetupflag",
+ FT_BOOLEAN, 4, NULL, 0x02, NULL, HFILL } },
+
+ /* END: Flow setup message */
+
+ /* START: Flow start message fields */
+ { &hf_waveagent_payfill,
+ { "Payload Fill", "waveagent.payfill",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_paysize,
+ { "WaveAgent Payload Size (bytes)", "waveagent.paysize",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_avgrate,
+ { "Average Rate (header + payload + trailer bytes/s)", "waveagent.avgrate",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_totalframes,
+ { "Total Frames", "waveagent.totalframes",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ /* END: Flow start message fields */
+
+ /* START: Scan results request (0x23) fields */
+ { &hf_waveagent_bssidstartindex,
+ { "Starting Index of BSSID list for reporting", "waveagent.bssidstartindex",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_bssidstopindex,
+ { "Ending Index of BSSID list for reporting", "waveagent.bssidstopindex",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ /* END: Scan results request (0x23) fields */
+
+ /* START: WLAN Interface stats fields */
+ { &hf_waveagent_ifwlanbssid,
+ { "WLAN Interface Connected to BSSID", "waveagent.ifwlanbssid",
+ FT_ETHER, 0, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_ifwlanssid,
+ { "WLAN Interface Connected to SSID", "waveagent.ifwlanssid",
+ FT_STRING, 0, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_ifwlanrssi,
+ { "WLAN Interface RSSI", "waveagent.ifwlanrssi",
+ FT_INT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_ifwlannoise,
+ { "WLAN Interface Noise Floor (dBm)", "waveagent.ifwlannoise",
+ FT_INT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_ifphytypes,
+ { "WLAN Interface Supported PHY Types", "waveagent.ifphytypes",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_ifphytypebit0,
+ { "11b", "waveagent.ifphytypebit0",
+ FT_BOOLEAN, 4, NULL, 0x01, NULL, HFILL } },
+
+ { &hf_waveagent_ifphytypebit1,
+ { "11g", "waveagent.ifphytypebit1",
+ FT_BOOLEAN, 4, NULL, 0x02, NULL, HFILL } },
+
+ { &hf_waveagent_ifphytypebit2,
+ { "11a", "waveagent.ifphytypebit2",
+ FT_BOOLEAN, 4, NULL, 0x04, NULL, HFILL } },
+
+ { &hf_waveagent_ifphytypebit3,
+ { "11n", "waveagent.ifphytypebit3",
+ FT_BOOLEAN, 4, NULL, 0x08, NULL, HFILL } },
+
+ { &hf_waveagent_ifwlanauthentication,
+ { "WLAN Interface Authentication Algorithm", "waveagent.ifwlanauthentication",
+ FT_UINT32, BASE_DEC, VALS(auth_algs), 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_ifwlancipher,
+ { "WLAN Interface Encryption/Cipher Algorithm", "waveagent.ifwlancipher",
+ FT_UINT32, BASE_DEC, VALS(cipher_algs), 0x0,
+ NULL, HFILL } },
+ /* END: WLAN Interface stats fields */
+
+ /* START: Interface stats response (0x2d) fields */
+ { &hf_waveagent_iftype,
+ { "Interface type", "waveagent.iftype",
+ FT_UINT32, BASE_DEC, VALS(if_types), 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_ifdescription,
+ { "Name/Description of the adapter", "waveagent.ifdescription",
+ FT_STRING, 0, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_ifmacaddr,
+ { "Interface MAC Address", "waveagent.ifmacaddr",
+ FT_ETHER, 0, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_iflinkspeed,
+ { "Interface Link Speed (kbps)", "waveagent.iflinkspeed",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_ifdhcp,
+ { "Interface DHCP Enabled", "waveagent.ifdhcp",
+ FT_UINT32, BASE_DEC, VALS(no_yes), 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_ifiptype,
+ { "Interface IP Type", "waveagent.ifiptype",
+ FT_UINT32, BASE_DEC, VALS(ip_types), 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_ifipv4,
+ { "Interface Bound to IP Address", "waveagent.ifipv4",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_ifipv6,
+ { "Interface Bound to IP Address", "waveagent.ifipv6",
+ FT_IPv6, BASE_NONE, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_ifdhcpserver,
+ { "Interface DHCP Server Address", "waveagent.ifdhcpserver",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_ifgateway,
+ { "Interface Gateway", "waveagent.ifgateway",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_ifdnsserver,
+ { "Interface DNS Server Address", "waveagent.ifdnsserver",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_ifethl2status,
+ { "Ethernet L2 Interface Status", "waveagent.ifethl2status",
+ FT_UINT32, BASE_DEC, VALS(if_eth_states), 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_ifwlanl2status,
+ { "WLAN L2 Interface Status", "waveagent.ifwlanl2status",
+ FT_UINT32, BASE_DEC, VALS(if_wlan_states), 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_ifl3status,
+ { "L3 Interface Status", "waveagent.ifl3status",
+ FT_UINT32, BASE_DEC, VALS(if_l3_states), 0x0,
+ NULL, HFILL } },
+
+ /* END: Interface stats response (0x2d) fields */
+
+ /* START: Scan results response (0x2e) fields */
+ { &hf_waveagent_totalbssid,
+ { "Number of Found BSSID", "waveagent.totalbssid",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_returnedbssid,
+ { "Number of BSSID Reported in This Response", "waveagent.returnedbssid",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_scanbssid,
+ { "BSSID", "waveagent.scanbssid",
+ FT_ETHER, 0, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_scanssid,
+ { "SSID", "waveagent.scanssid",
+ FT_STRING, 0, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_ifwlansupprates,
+ { "Supported Rates", "waveagent.ifwlansupportedrates",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_ifwlancapabilities,
+ { "Capabilities field", "waveagent.ifwlancapabilities",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_ifwlanchannel,
+ { "Channel", "waveagent.ifwlanchannel",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_ifwlanprivacy,
+ { "Privacy Enabled", "waveagent.ifwlanprivacy",
+ FT_UINT32, BASE_DEC, VALS(no_yes), 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_ifwlanbssmode,
+ { "BSS Mode", "waveagent.ifwlanbssmode",
+ FT_UINT32, BASE_DEC, VALS(bss_modes), 0x0,
+ NULL, HFILL } },
+ /* END: Scan results response (0x2e) fields */
+
+ /* START: OID fields */
+ { &hf_waveagent_oidcode,
+ { "OID Code", "waveagent.oidcode",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_oidvalue,
+ { "OID Value", "waveagent.oidvalue",
+ FT_STRING, 0, NULL, 0x0,
+ NULL, HFILL } },
+ /* END: OID fields */
+
+ /* START: Learning Message fields */
+ { &hf_waveagent_destip,
+ { "Destination IP", "waveagent.destip",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_destport,
+ { "Destination Port", "waveagent.destport",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_connectflags,
+ { "Connect Flags", "waveagent.connectflags",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL } },
+ /* END: Learning Message fields */
+
+ /* START: client connect fields */
+ { &hf_waveagent_connecttype,
+ { "Connect Type", "waveagent.connecttype",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_minrssi,
+ { "Minimum RSSI", "waveagent.minrssi",
+ FT_INT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_connecttimeout,
+ { "Connect timeout (s)", "waveagent.connecttimeout",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_connectattempts,
+ { "Connect attempts", "waveagent.connectattempt",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_reason,
+ { "Reason", "waveagent.reason",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+ /* END: client connect fields */
+
+ /* START: relay server fields */
+ { &hf_waveagent_relaydestid,
+ { "ID of destination client (assigned by relay server)", "waveagent.relaydestid",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_relaysrcid,
+ { "ID of source client (assigned by relay server)", "waveagent.relaysrcid",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+
+ { &hf_waveagent_relaymessagest,
+ { "Relayed WaveAgent Message", "waveagent.relaymessagest",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ "This is a relayed WaveAgent message", HFILL } },
+
+/* END: relay server fields */
+
+ };
+
+/* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_waveagent,
+ &ett_statechange,
+ &ett_phytypes,
+ &ett_fsflags,
+ &ett_scindex0,
+ &ett_scindex1,
+ &ett_scindex2,
+ &ett_scindex3,
+ &ett_scindex4,
+ &ett_scindex5,
+ &ett_scindex6,
+ &ett_scindex7,
+ &ett_bss0,
+ &ett_bss1,
+ &ett_bss2,
+ &ett_bss3,
+ &ett_bss4,
+ &ett_bss5,
+ &ett_bss6,
+ &ett_bss7,
+ &ett_relaymessage,
+ };
+
+/* Register the protocol name and description */
+ proto_waveagent = proto_register_protocol("WaveAgent",
+ "waveagent", "waveagent");
+
+/* Required function calls to register the header fields and subtrees used */
+ proto_register_field_array(proto_waveagent, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+}
+
+
+/* If this dissector uses sub-dissector registration add a registration routine.
+ This exact format is required because a script is used to find these
+ routines and create the code that calls these routines.
+
+ This function is also called by preferences whenever "Apply" is pressed
+ (see prefs_register_protocol above) so it should accommodate being called
+ more than once.
+*/
+
+void proto_reg_handoff_waveagent(void)
+{
+ static gboolean inited = FALSE;
+
+ if (!inited) {
+
+ /* Use new_create_dissector_handle() to indicate that dissect_waveagent()
+ * returns the number of bytes it dissected (or 0 if it thinks the packet
+ * does not belong to WaveAgent).
+ */
+ new_create_dissector_handle(dissect_waveagent,
+ proto_waveagent);
+ heur_dissector_add("udp", dissect_waveagent, proto_waveagent);
+
+ inited = TRUE;
+ }
+}
+
+
diff --git a/epan/dissectors/packet-wbxml.c b/epan/dissectors/packet-wbxml.c
index 12f51637cc..24071487f4 100644
--- a/epan/dissectors/packet-wbxml.c
+++ b/epan/dissectors/packet-wbxml.c
@@ -48,14 +48,11 @@
# include "config.h"
#endif
-#include <stdio.h>
-#include <stdlib.h>
#include <string.h>
#include <glib.h>
#include <epan/packet.h>
-
#include <epan/prefs.h>
#include <epan/emem.h>
@@ -2903,11 +2900,7 @@ static const wbxml_decoding decode_syncmlc_12 = {
NULL,
NULL
};
-
-
-
-
-/* Microsoft ActiveSync 1.0 (Actual Version Unknown - either 1.0 or 2.0, taken from Z-Push)
+/* Microsoft ActiveSync 1.0 (Actual Version Unknown - either 1.0 or 2.0, taken from [MS-ASWBXML].pdf)
*
* ActiveSync Representation Protocol
***************************************/
@@ -2915,56 +2908,55 @@ static const wbxml_decoding decode_syncmlc_12 = {
/***** Global extension tokens *****/
/***** Tag tokens *****/
-static const value_string wbxml_mssyncc10_tags_cp0[] = { /* ActiveSync */
+static const value_string wbxml_mssyncc10_tags_cp0[] = { /* ActiveSync 'AirSync:' Page */
/* 0x00 -- 0x04 GLOBAL */
- { 0x05, "Synchronize" },
- { 0x06, "Replies" },
+ { 0x05, "Sync" },
+ { 0x06, "Responses" },
{ 0x07, "Add" },
- { 0x08, "Modify" },
- { 0x09, "Remove" },
- { 0x0a, "Fetch" },
- { 0x0b, "SyncKey" },
- { 0x0c, "ClientEntryId" },
- { 0x0d, "ServerEntryId" },
- { 0x0e, "Error" },
- { 0x0f, "Folder" },
- { 0x10, "FolderType" },
- { 0x11, "Version" },
- { 0x12, "FolderId" },
+ { 0x08, "Change" },
+ { 0x09, "Delete" },
+ { 0x0A, "Fetch" },
+ { 0x0B, "SyncKey" },
+ { 0x0C, "ClientId" },
+ { 0x0D, "ServerId" },
+ { 0x0E, "Status" },
+ { 0x0F, "Collection" },
+ { 0x10, "Class" },
+ { 0x12, "CollectionId" },
{ 0x13, "GetChanges" },
{ 0x14, "MoreAvailable" },
- { 0x15, "MaxItems" },
- { 0x16, "Perform" },
+ { 0x15, "WindowSize" },
+ { 0x16, "Commands" },
{ 0x17, "Options" },
{ 0x18, "FilterType" },
- { 0x19, "Truncation" },
- { 0x1a, "RtfTruncation" },
- { 0x1b, "Conflict" },
- { 0x1c, "Folders" },
- { 0x1d, "Data" },
- { 0x1e, "DeletesAsMoves" },
- { 0x1f, "NotifyGUID" },
+ { 0x1B, "Conflict" },
+ { 0x1C, "Collections" },
+ { 0x1D, "ApplicationData" },
+ { 0x1E, "DeletesAsMoves" },
{ 0x20, "Supported" },
{ 0x21, "SoftDelete" },
{ 0x22, "MIMESupport" },
{ 0x23, "MIMETruncation" },
+ { 0x24, "Wait" },
+ { 0x25, "Limit" },
+ { 0x26, "Partial" },
+ { 0x27, "ConversationMode" },
+ { 0x28, "MaxItems" },
+ { 0x29, "HeartbeatInterval" },
{ 0x00, NULL }
};
-static const value_string wbxml_mssyncc10_tags_cp1[] = { /* ActiveSync POOMCONTACTS Page */
+static const value_string wbxml_mssyncc10_tags_cp1[] = { /* ActiveSync 'Contacts:' Page */
/* 0x00 -- 0x04 GLOBAL */
{ 0x05, "Anniversary" },
{ 0x06, "AssistantName" },
- { 0x07, "AssistnamePhoneNumber" },
+ { 0x07, "AssistantTelephoneNumber" },
{ 0x08, "Birthday" },
- { 0x09, "Body" },
- { 0x0a, "BodySize" },
- { 0x0b, "BodyTruncated" },
- { 0x0c, "Business2PhoneNumber" },
- { 0x0d, "BusinessCity" },
- { 0x0e, "BusinessCountry" },
- { 0x0f, "BusinessPostalCode" },
+ { 0x0C, "Business2PhoneNumber" },
+ { 0x0D, "BusinessCity" },
+ { 0x0E, "BusinessCountry" },
+ { 0x0F, "BusinessPostalCode" },
{ 0x10, "BusinessState" },
{ 0x11, "BusinessStreet" },
{ 0x12, "BusinessFaxNumber" },
@@ -2975,12 +2967,12 @@ static const value_string wbxml_mssyncc10_tags_cp1[] = { /* ActiveSync POOMCONTA
{ 0x17, "Children" },
{ 0x18, "Child" },
{ 0x19, "CompanyName" },
- { 0x1a, "Department" },
- { 0x1b, "Email1Address" },
- { 0x1c, "Email2Address" },
- { 0x1d, "Email3Address" },
- { 0x1e, "FileAs" },
- { 0x1f, "FirstName" },
+ { 0x1A, "Department" },
+ { 0x1B, "Email1Address" },
+ { 0x1C, "Email2Address" },
+ { 0x1D, "Email3Address" },
+ { 0x1E, "FileAs" },
+ { 0x1F, "FirstName" },
{ 0x20, "Home2PhoneNumber" },
{ 0x21, "HomeCity" },
{ 0x22, "HomeCountry" },
@@ -2989,14 +2981,13 @@ static const value_string wbxml_mssyncc10_tags_cp1[] = { /* ActiveSync POOMCONTA
{ 0x25, "HomeStreet" },
{ 0x26, "HomeFaxNumber" },
{ 0x27, "HomePhoneNumber" },
- { 0x28, "JobTitle" },
- { 0x29, "LastName" },
- { 0x2a, "MiddleName" },
- { 0x2b, "MobilePhoneNumber" },
- { 0x2c, "OfficeLocation" },
- { 0x2d, "OtherCity" },
- { 0x2e, "OtherCountry" },
- { 0x2f, "OtherPostalCode" },
+ { 0x29, "JobTitle" },
+ { 0x2A, "MiddleName" },
+ { 0x2B, "MobilePhoneNumber" },
+ { 0x2C, "OfficeLocation" },
+ { 0x2D, "OtherCity" },
+ { 0x2E, "OtherCountry" },
+ { 0x2F, "OtherPostalCode" },
{ 0x30, "OtherState" },
{ 0x31, "OtherStreet" },
{ 0x32, "PagerNumber" },
@@ -3004,186 +2995,158 @@ static const value_string wbxml_mssyncc10_tags_cp1[] = { /* ActiveSync POOMCONTA
{ 0x34, "Spouse" },
{ 0x35, "Suffix" },
{ 0x36, "Title" },
- { 0x37, "WebPage" },
+ { 0x37, "Webpage" },
{ 0x38, "YomiCompanyName" },
{ 0x39, "YomiFirstName" },
- { 0x3a, "YomiLastName" },
- { 0x3b, "Rtf" },
- { 0x3c, "Picture" },
+ { 0x3A, "YomiLastName" },
+ { 0x3C, "Picture" },
+ { 0x3D, "Alias" },
+ { 0x3E, "WeightedRank" },
{ 0x00, NULL }
};
-static const value_string wbxml_mssyncc10_tags_cp2[] = { /* ActiveSync POOMMAIL Page */
+static const value_string wbxml_mssyncc10_tags_cp2[] = { /* ActiveSync 'Email:' Page */
/* 0x00 -- 0x04 GLOBAL */
- { 0x05, "Attachment" },
- { 0x06, "Attachments" },
- { 0x07, "AttName" },
- { 0x08, "AttSize" },
- { 0x09, "AttOid" },
- { 0x0a, "AttMethod" },
- { 0x0b, "AttRemoved" },
- { 0x0c, "Body" },
- { 0x0d, "BodySize" },
- { 0x0e, "BodyTruncated" },
- { 0x0f, "DateReceived" },
- { 0x10, "DisplayName" },
+ { 0x0F, "DateReceived" },
{ 0x11, "DisplayTo" },
{ 0x12, "Importance" },
{ 0x13, "MessageClass" },
{ 0x14, "Subject" },
{ 0x15, "Read" },
{ 0x16, "To" },
- { 0x17, "Cc" },
+ { 0x17, "CC" },
{ 0x18, "From" },
- { 0x19, "Reply-To" },
- { 0x1a, "AllDayEvent" },
- { 0x1b, "Categories" },
- { 0x1c, "Category" },
- { 0x1d, "DtStamp" },
- { 0x1e, "EndTime" },
- { 0x1f, "InstanceType" },
+ { 0x19, "ReplyTo" },
+ { 0x1A, "AllDayEvent" },
+ { 0x1B, "Categories" },
+ { 0x1C, "Category" },
+ { 0x1D, "DTStamp" },
+ { 0x1E, "EndTime" },
+ { 0x1F, "InstanceType" },
{ 0x20, "BusyStatus" },
{ 0x21, "Location" },
{ 0x22, "MeetingRequest" },
{ 0x23, "Organizer" },
{ 0x24, "RecurrenceId" },
{ 0x25, "Reminder" },
- { 0x26, "ResponseRequested" },
+ { 0x26, "ResponseRequest" },
{ 0x27, "Recurrences" },
{ 0x28, "Recurrence" },
- { 0x29, "Type" },
- { 0x2a, "Until" },
- { 0x2b, "Occurrences" },
- { 0x2c, "Interval" },
- { 0x2d, "DayOfWeek" },
- { 0x2e, "DayOfMonth" },
- { 0x2f, "WeekOfMonth" },
- { 0x30, "MonthOfYear" },
+ { 0x29, "Recurrence_Type" },
+ { 0x2A, "Recurrence_Until" },
+ { 0x2B, "Recurrence_Occurrences" },
+ { 0x2C, "Recurrence_Interval" },
+ { 0x2D, "Recurrence_DayOfWeek" },
+ { 0x2E, "Recurrence_DayOfMonth" },
+ { 0x2F, "Recurrence_WeekOfMonth" },
+ { 0x30, "Recurrence_MonthOfYear" },
{ 0x31, "StartTime" },
{ 0x32, "Sensitivity" },
{ 0x33, "TimeZone" },
{ 0x34, "GlobalObjId" },
{ 0x35, "ThreadTopic" },
- { 0x36, "MIMEData" },
- { 0x37, "MIMETruncated" },
- { 0x38, "MIMESize" },
{ 0x39, "InternetCPID" },
+ { 0x3A, "Flag" },
+ { 0x3B, "FlagStatus" },
+ { 0x3C, "ContentClass" },
+ { 0x3D, "FlagType" },
+ { 0x3E, "CompleteTime" },
+ { 0x3F, "DisallowNewTimeProposal" },
{ 0x00, NULL }
};
-static const value_string wbxml_mssyncc10_tags_cp3[] = { /* ActiveSync AirNotify Page */
+static const value_string wbxml_mssyncc10_tags_cp4[] = { /* ActiveSync 'Calendar:' Page */
/* 0x00 -- 0x04 GLOBAL */
- { 0x05, "Notify" },
- { 0x06, "Notification" },
- { 0x07, "Version" },
- { 0x08, "Lifetime" },
- { 0x09, "DeviceInfo" },
- { 0x0a, "Enable" },
- { 0x0b, "Folder" },
- { 0x0c, "ServerEntryId" },
- { 0x0d, "DeviceAddress" },
- { 0x0e, "ValidCarrierProfiles" },
- { 0x0f, "CarrierProfile" },
- { 0x10, "Error" },
- { 0x11, "Replies" },
- /* Version 1.1 */
- { 0x12, "Devices" },
- { 0x13, "Device" },
- { 0x14, "Id" },
- { 0x15, "Expiry" },
- { 0x16, "NotifyGUID" },
-
- { 0x00, NULL }
-};
-
-static const value_string wbxml_mssyncc10_tags_cp4[] = { /* ActiveSync POOMCAL Page */
- /* 0x00 -- 0x04 GLOBAL */
- { 0x05, "Timezone" },
- { 0x06, "AllDayEvent" },
+ { 0x05, "TimeZone" },
+ { 0x06, "AllDAyEvent" },
{ 0x07, "Attendees" },
{ 0x08, "Attendee" },
- { 0x09, "Email" },
- { 0x0a, "Name" },
- { 0x0b, "Body" },
- { 0x0c, "BodyTruncated" },
- { 0x0d, "BusyStatus" },
- { 0x0e, "Categories" },
- { 0x0f, "Category" },
- { 0x10, "Rtf" },
- { 0x11, "DtStamp" },
+ { 0x09, "Attendee_Email" },
+ { 0x0A, "Attendee_Name" },
+ { 0x0D, "BusyStatus" },
+ { 0x0E, "Categories" },
+ { 0x0F, "Category" },
+ { 0x11, "DTStamp" },
{ 0x12, "EndTime" },
{ 0x13, "Exception" },
{ 0x14, "Exceptions" },
- { 0x15, "Deleted" },
- { 0x16, "ExceptionStartTime" },
+ { 0x15, "Exception_Deleted" },
+ { 0x16, "Exception_StartTime" },
{ 0x17, "Location" },
{ 0x18, "MeetingStatus" },
- { 0x19, "OrganizerEmail" },
- { 0x1a, "OrganizerName" },
- { 0x1b, "Recurrence" },
- { 0x1c, "Type" },
- { 0x1d, "Until" },
- { 0x1e, "Occurrences" },
- { 0x1f, "Interval" },
- { 0x20, "DayOfWeek" },
- { 0x21, "DayOfMonth" },
- { 0x22, "WeekOfMonth" },
- { 0x23, "MonthOfYear" },
+ { 0x19, "Organizer_Email" },
+ { 0x1A, "Organizer_Name" },
+ { 0x1B, "Recurrence" },
+ { 0x1C, "Recurrence_Type" },
+ { 0x1D, "Recurrence_Until" },
+ { 0x1E, "Recurrence_Occurrences" },
+ { 0x1F, "Recurrence_Interval" },
+ { 0x20, "Recurrence_DayOfWeek" },
+ { 0x21, "Recurrence_DayOfMonth" },
+ { 0x22, "Recurrence_WeekOfMonth" },
+ { 0x23, "Recurrence_MonthOfYear" },
{ 0x24, "Reminder" },
{ 0x25, "Sensitivity" },
{ 0x26, "Subject" },
{ 0x27, "StartTime" },
{ 0x28, "UID" },
+ { 0x29, "Attendee_Status" },
+ { 0x2A, "Attendee_Type" },
+ { 0x33, "DisallowNewTimeProposal" },
+ { 0x34, "ResponseRequested" },
+ { 0x35, "AppointmentReplyTime" },
+ { 0x36, "ResponseType" },
+ { 0x37, "CalendarType" },
+ { 0x38, "IsLeapMonth" },
+ { 0x39, "FirstDayOfWeek" },
+ { 0x3A, "OnlineMeetingConfLink" },
+ { 0x3B, "OnlineMeetingExternalLink" },
{ 0x00, NULL }
};
-static const value_string wbxml_mssyncc10_tags_cp5[] = { /* ActiveSync Move Page */
+static const value_string wbxml_mssyncc10_tags_cp5[] = { /* ActiveSync 'Move:' Page */
/* 0x00 -- 0x04 GLOBAL */
- { 0x05, "Moves" },
+ { 0x05, "MoveItems" },
{ 0x06, "Move" },
{ 0x07, "SrcMsgId" },
{ 0x08, "SrcFldId" },
{ 0x09, "DstFldId" },
- { 0x0a, "Response" },
- { 0x0b, "Error" },
- { 0x0c, "DstMsgId" },
+ { 0x0A, "Response" },
+ { 0x0B, "Status" },
+ { 0x0C, "DstMsgId" },
{ 0x00, NULL }
};
-static const value_string wbxml_mssyncc10_tags_cp6[] = { /* ActiveSync GetItemEstimate Page */
+static const value_string wbxml_mssyncc10_tags_cp6[] = { /* ActiveSync 'GetItemEstimate:' Page */
/* 0x00 -- 0x04 GLOBAL */
{ 0x05, "GetItemEstimate" },
{ 0x06, "Version" },
- { 0x07, "Folders" },
- { 0x08, "Folder" },
- { 0x09, "FolderType" },
- { 0x0a, "FolderId" },
- { 0x0b, "DateTime" },
- { 0x0c, "Estimate" },
- { 0x0d, "Response" },
- { 0x0e, "Error" },
+ { 0x07, "Collections" },
+ { 0x08, "Collection" },
+ { 0x09, "Class" },
+ { 0x0A, "CollectionId" },
+ { 0x0B, "DateTime" },
+ { 0x0C, "Estimate" },
+ { 0x0D, "Response" },
+ { 0x0E, "Status" },
{ 0x00, NULL }
};
-static const value_string wbxml_mssyncc10_tags_cp7[] = { /* ActiveSync FolderHierarchy Page */
+static const value_string wbxml_mssyncc10_tags_cp7[] = { /* ActiveSync 'FolderHierarchy:' Page */
/* 0x00 -- 0x04 GLOBAL */
- { 0x05, "Folders" },
- { 0x06, "Folder" },
{ 0x07, "DisplayName" },
- { 0x08, "ServerEntryId" },
+ { 0x08, "ServerId" },
{ 0x09, "ParentId" },
- { 0x0a, "Type" },
- { 0x0b, "Response" },
- { 0x0c, "Error" },
- { 0x0d, "ContentClass" },
- { 0x0e, "Changes" },
- { 0x0f, "Add" },
- { 0x10, "Remove" },
+ { 0x0A, "Type" },
+ { 0x0C, "Status" },
+ { 0x0E, "Changes" },
+ { 0x0F, "Add" },
+ { 0x10, "Delete" },
{ 0x11, "Update" },
{ 0x12, "SyncKey" },
{ 0x13, "FolderCreate" },
@@ -3191,146 +3154,469 @@ static const value_string wbxml_mssyncc10_tags_cp7[] = { /* ActiveSync FolderHie
{ 0x15, "FolderUpdate" },
{ 0x16, "FolderSync" },
{ 0x17, "Count" },
- { 0x18, "Version" },
{ 0x00, NULL }
};
-static const value_string wbxml_mssyncc10_tags_cp8[] = { /* ActiveSync MeetingResponse Page */
+static const value_string wbxml_mssyncc10_tags_cp8[] = { /* ActiveSync 'MeetingResponse:' Page */
/* 0x00 -- 0x04 GLOBAL */
{ 0x05, "CalendarId" },
- { 0x06, "FolderId" },
+ { 0x06, "CollectionId" },
{ 0x07, "MeetingResponse" },
{ 0x08, "RequestId" },
{ 0x09, "Request" },
- { 0x0a, "Result" },
- { 0x0b, "Error" },
- { 0x0c, "UserResponse" },
- { 0x0d, "Version" },
+ { 0x0A, "Result" },
+ { 0x0B, "Status" },
+ { 0x0C, "UserResponse" },
+ { 0x0E, "InstanceId" },
{ 0x00, NULL }
};
-static const value_string wbxml_mssyncc10_tags_cp9[] = { /* ActiveSync POOMTASKS Page */
+static const value_string wbxml_mssyncc10_tags_cp9[] = { /* ActiveSync 'Tasks:' Page */
/* 0x00 -- 0x04 GLOBAL */
- { 0x05, "Body" },
- { 0x06, "BodySize" },
- { 0x07, "BodyTruncated" },
{ 0x08, "Categories" },
{ 0x09, "Category" },
- { 0x0a, "Complete" },
- { 0x0b, "DateCompleted" },
- { 0x0c, "DueDate" },
- { 0x0d, "UtcDueDate" },
- { 0x0e, "Importance" },
- { 0x0f, "Recurrence" },
- { 0x10, "Type" },
- { 0x11, "Start" },
- { 0x12, "Until" },
- { 0x13, "Occurrences" },
- { 0x14, "Interval" },
- { 0x16, "DayOfWeek" },
- { 0x15, "DayOfMonth" },
- { 0x17, "WeekOfMonth" },
- { 0x18, "MonthOfYear" },
- { 0x19, "Regenerate" },
- { 0x1a, "DeadOccur" },
- { 0x1b, "ReminderSet" },
- { 0x1c, "ReminderTime" },
- { 0x1d, "Sensitivity" },
- { 0x1e, "StartDate" },
- { 0x1f, "UtcStartDate" },
+ { 0x0A, "Complete" },
+ { 0x0B, "DateCompleted" },
+ { 0x0D, "DueDate" },
+ { 0x0E, "Importance" },
+ { 0x0F, "Recurrence" },
+ { 0x10, "Recurrence_Type" },
+ { 0x11, "Recurrence_Start" },
+ { 0x12, "Recurrence_Until" },
+ { 0x13, "Recurrence_Occurrences" },
+ { 0x14, "Recurrence_Interval" },
+ { 0x15, "Recurrence_DayOfMonth" },
+ { 0x16, "Recurrence_DayOfWeek" },
+ { 0x17, "Recurrence_WeekOfMonth" },
+ { 0x18, "Recurrence_MonthOfYear" },
+ { 0x19, "Recurrence_Regenerate" },
+ { 0x1A, "Recurrence_DeadOccur" },
+ { 0x1B, "ReminderSet" },
+ { 0x1C, "ReminderTime" },
+ { 0x1D, "Sensitivity" },
+ { 0x1E, "StartDate" },
+ { 0x1F, "UTCStartDate" },
{ 0x20, "Subject" },
- { 0x21, "Rtf" },
+ { 0x22, "OrdinalDate" },
+ { 0x23, "SubOrdinalDate" },
+ { 0x24, "CalendarType" },
+ { 0x25, "IsLeapMonth" },
+ { 0x26, "FirstDayOfWeek" },
{ 0x00, NULL }
};
-static const value_string wbxml_mssyncc10_tags_cp10[] = { /* ActiveSync ResolveRecipients Page */
+static const value_string wbxml_mssyncc10_tags_cp10[] = { /* ActiveSync 'ResolveRecipients:' Page */
/* 0x00 -- 0x04 GLOBAL */
{ 0x05, "ResolveRecipients" },
{ 0x06, "Response" },
- { 0x07, "Error" },
+ { 0x07, "Status" },
{ 0x08, "Type" },
{ 0x09, "Recipient" },
- { 0x0a, "DisplayName" },
- { 0x0b, "EmailAddress" },
- { 0x0c, "Certificates" },
- { 0x0d, "Certificate" },
- { 0x0e, "MiniCertificate" },
- { 0x0f, "Options" },
+ { 0x0A, "DisplayName" },
+ { 0x0B, "EmailAddress" },
+ { 0x0C, "Certificates" },
+ { 0x0D, "Certificate" },
+ { 0x0E, "MiniCertificate" },
+ { 0x0F, "Options" },
{ 0x10, "To" },
{ 0x11, "CertificateRetrieval" },
{ 0x12, "RecipientCount" },
{ 0x13, "MaxCertificates" },
{ 0x14, "MaxAmbiguousRecipients" },
{ 0x15, "CertificateCount" },
+ { 0x16, "Availability" },
+ { 0x17, "StartTime" },
+ { 0x18, "EndTime" },
+ { 0x19, "MergedFreeBusy" },
+ { 0x1A, "Picture" },
+ { 0x1B, "MaxSize" },
+ { 0x1C, "Data" },
+ { 0x1D, "MaxPictures" },
{ 0x00, NULL }
};
-static const value_string wbxml_mssyncc10_tags_cp11[] = { /* ActiveSync ValidateCerts Page */
+static const value_string wbxml_mssyncc10_tags_cp11[] = { /* ActiveSync 'ValidateCert:' Page */
/* 0x00 -- 0x04 GLOBAL */
{ 0x05, "ValidateCert" },
{ 0x06, "Certificates" },
{ 0x07, "Certificate" },
{ 0x08, "CertificateChain" },
{ 0x09, "CheckCRL" },
- { 0x0a, "Error" },
+ { 0x0A, "Status" },
{ 0x00, NULL }
};
-static const value_string wbxml_mssyncc10_tags_cp12[] = { /* ActiveSync POOMCONTACTS2 Page */
+static const value_string wbxml_mssyncc10_tags_cp12[] = { /* ActiveSync 'Contacts2:' Page */
/* 0x00 -- 0x04 GLOBAL */
{ 0x05, "CustomerId" },
{ 0x06, "GovernmentId" },
{ 0x07, "IMAddress" },
{ 0x08, "IMAddress2" },
{ 0x09, "IMAddress3" },
- { 0x0a, "ManagerName" },
- { 0x0b, "CompanyMainPhone" },
- { 0x0c, "AccountName" },
- { 0x0d, "NickName" },
- { 0x0e, "MMS" },
+ { 0x0A, "ManagerName" },
+ { 0x0B, "CompanyMainPhone" },
+ { 0x0C, "AccountName" },
+ { 0x0D, "NickName" },
+ { 0x0E, "MMS" },
{ 0x00, NULL }
};
-static const value_string wbxml_mssyncc10_tags_cp13[] = { /* ActiveSync Ping Page */
+static const value_string wbxml_mssyncc10_tags_cp13[] = { /* ActiveSync 'Ping:' Page */
/* 0x00 -- 0x04 GLOBAL */
{ 0x05, "Ping" },
- { 0x07, "Error" },
- { 0x08, "LifeTime" },
+ { 0x06, "AutdState" },
+ { 0x07, "Status" },
+ { 0x08, "HeartbeatInterval" },
{ 0x09, "Folders" },
- { 0x0a, "Folder" },
- { 0x0b, "ServerEntryId" },
- { 0x0c, "FolderType" },
+ { 0x0A, "Folder" },
+ { 0x0B, "Id" },
+ { 0x0C, "Class" },
+ { 0x0D, "MaxFolders" },
+
+ { 0x00, NULL }
+};
+
+static const value_string wbxml_mssyncc10_tags_cp14[] = { /* ActiveSync 'Provision:' Page */
+ /* 0x00 -- 0x04 GLOBAL */
+ { 0x05, "Provision" },
+ { 0x06, "Policies" },
+ { 0x07, "Policy" },
+ { 0x08, "PolicyType" },
+ { 0x09, "PolicyKey" },
+ { 0x0A, "Data" },
+ { 0x0B, "Status" },
+ { 0x0C, "RemoteWipe" },
+ { 0x0D, "EASProvisionDoc" },
+ { 0x0E, "DevicePasswordEnabled" },
+ { 0x0F, "AlphanumericDevicePasswordRequired" },
+ { 0x10, "DeviceEncryptionEnabled" },
+ { 0x11, "PasswordRecoveryEnabled" },
+ { 0x13, "AttachmentsEnabled" },
+ { 0x14, "MinDevicePasswordLength" },
+ { 0x15, "MaxInactivityTimeDeviceLock" },
+ { 0x16, "MaxDevicePasswordFailedAttempts" },
+ { 0x17, "MaxAttachmentSize" },
+ { 0x18, "AllowSimpleDevicePassword" },
+ { 0x19, "DevicePasswordExpiration" },
+ { 0x1A, "DevicePasswordHistory" },
+ { 0x1B, "AllowStorageCard" },
+ { 0x1C, "AllowCamera" },
+ { 0x1D, "RequireDeviceEncryption" },
+ { 0x1E, "AllowUnsignedApplications" },
+ { 0x1F, "AllowUnsignedInstallationPackages" },
+ { 0x20, "MinDevicePasswordComplexCharacters" },
+ { 0x21, "AllowWiFi" },
+ { 0x22, "AllowTextMessaging" },
+ { 0x23, "AllowPOPIMAPEmail" },
+ { 0x24, "AllowBluetooth" },
+ { 0x25, "AllowIrDA" },
+ { 0x26, "RequireManualSyncWhenRoaming" },
+ { 0x27, "AllowDesktopSync" },
+ { 0x28, "MaxCalendarAgeFilter" },
+ { 0x29, "AllowHTMLEmail" },
+ { 0x2A, "MaxEmailAgeFilter" },
+ { 0x2B, "MaxEmailBodyTruncationSize" },
+ { 0x2C, "MaxEmailHTMLBodyTruncationSize" },
+ { 0x2D, "RequireSignedSMIMEMessages" },
+ { 0x2E, "RequireEncryptedSMIMEMessages" },
+ { 0x2F, "RequireSignedSMIMEAlgorithm" },
+ { 0x30, "RequireEncryptionSMIMEAlgorithm" },
+ { 0x31, "AllowSMIMEEncryptionAlgorithmNegotiation" },
+ { 0x32, "AllowSMIMESoftCerts" },
+ { 0x33, "AllowBrowser" },
+ { 0x34, "AllowConsumerEmail" },
+ { 0x35, "AllowRemoteDesktop" },
+ { 0x36, "AllowInternetSharing" },
+ { 0x37, "UnapprovedInROMApplicationList" },
+ { 0x38, "ApplicationName" },
+ { 0x39, "ApprovedApplicationList" },
+ { 0x3A, "Hash" },
+
+ { 0x00, NULL }
+};
+
+static const value_string wbxml_mssyncc10_tags_cp15[] = { /* ActiveSync 'Search:' Page */
+ /* 0x00 -- 0x04 GLOBAL */
+ { 0x05, "Search" },
+ { 0x07, "Store" },
+ { 0x08, "Name" },
+ { 0x09, "Query" },
+ { 0x0A, "Options" },
+ { 0x0B, "Range" },
+ { 0x0C, "Status" },
+ { 0x0D, "Response" },
+ { 0x0E, "Result" },
+ { 0x0F, "Properties" },
+ { 0x10, "Total" },
+ { 0x11, "EqualTo" },
+ { 0x12, "Value" },
+ { 0x13, "And" },
+ { 0x14, "Or" },
+ { 0x15, "FreeText" },
+ { 0x17, "DeepTraversal" },
+ { 0x18, "LongId" },
+ { 0x19, "RebuildResults" },
+ { 0x1A, "LessThan" },
+ { 0x1B, "GreaterThan" },
+ { 0x1E, "UserName" },
+ { 0x1F, "Password" },
+ { 0x20, "ConversationId" },
+ { 0x21, "Picture" },
+ { 0x22, "MaxSize" },
+ { 0x23, "MaxPictures" },
+
+ { 0x00, NULL }
+};
+
+static const value_string wbxml_mssyncc10_tags_cp16[] = { /* ActiveSync 'Gal:' Page */
+ /* 0x00 -- 0x04 GLOBAL */
+ { 0x05, "DisplayName" },
+ { 0x06, "Phone" },
+ { 0x07, "Office" },
+ { 0x08, "Title" },
+ { 0x09, "Company" },
+ { 0x0A, "Alias" },
+ { 0x0B, "FirstName" },
+ { 0x0C, "LastName" },
+ { 0x0D, "HomePhone" },
+ { 0x0E, "MobilePhone" },
+ { 0x0F, "EmailAddress" },
+ { 0x10, "Picture" },
+ { 0x11, "Status" },
+ { 0x12, "Data" },
{ 0x00, NULL }
};
+static const value_string wbxml_mssyncc10_tags_cp17[] = { /* ActiveSync 'AirSyncBase:' Page */
+ /* 0x00 -- 0x04 GLOBAL */
+ { 0x05, "BodyPreference" },
+ { 0x06, "Type" },
+ { 0x07, "TruncationSize" },
+ { 0x08, "AllOrNone" },
+ { 0x0A, "Body" },
+ { 0x0B, "Data" },
+ { 0x0C, "EstimatedDataSize" },
+ { 0x0D, "Truncated" },
+ { 0x0E, "Attachments" },
+ { 0x0F, "Attachment" },
+ { 0x10, "DisplayName" },
+ { 0x11, "FileReference" },
+ { 0x12, "Method" },
+ { 0x13, "ContentId" },
+ { 0x14, "ContentLocation" },
+ { 0x15, "IsInline" },
+ { 0x16, "NativeBodyType" },
+ { 0x17, "ContentType" },
+ { 0x18, "Preview" },
+ { 0x19, "BodyPartReference" },
+ { 0x1A, "BodyPart" },
+ { 0x1B, "Status" },
+
+ { 0x00, NULL }
+};
+
+static const value_string wbxml_mssyncc10_tags_cp18[] = { /* ActiveSync 'Settings:' Page */
+ /* 0x00 -- 0x04 GLOBAL */
+ { 0x05, "Settings" },
+ { 0x06, "Status" },
+ { 0x07, "Get" },
+ { 0x08, "Set" },
+ { 0x09, "Oof" },
+ { 0x0A, "OofState" },
+ { 0x0B, "StartTime" },
+ { 0x0C, "EndTime" },
+ { 0x0D, "OofMessage" },
+ { 0x0E, "AppliesToInteral" },
+ { 0x0F, "AppliesToExternalKnown" },
+ { 0x10, "AppliesToExternalUnknown" },
+ { 0x11, "Enabled" },
+ { 0x12, "ReplyMessage" },
+ { 0x13, "BodyType" },
+ { 0x14, "DevicePassword" },
+ { 0x15, "Password" },
+ { 0x16, "DeviceInformation" },
+ { 0x17, "Model" },
+ { 0x18, "IMEI" },
+ { 0x19, "FriendlyName" },
+ { 0x1A, "OS" },
+ { 0x1B, "OSLanguage" },
+ { 0x1C, "PhoneNumber" },
+ { 0x1D, "UserInformation" },
+ { 0x1E, "EmailAddresses" },
+ { 0x1F, "SmtpAddress" },
+ { 0x20, "UserAgent" },
+ { 0x21, "EnableOutboundSMS" },
+ { 0x22, "MobileOperator" },
+ { 0x23, "PrimarySmtpAddress" },
+ { 0x24, "Accounts" },
+ { 0x25, "Account" },
+ { 0x26, "AccountId" },
+ { 0x27, "AccountName" },
+ { 0x28, "UserDisplayName" },
+ { 0x29, "SendDisabled" },
+ { 0x2B, "RightsManagementInformation" },
+
+ { 0x00, NULL }
+};
+
+static const value_string wbxml_mssyncc10_tags_cp19[] = { /* ActiveSync 'DocumentLibrary:' Page */
+ /* 0x00 -- 0x04 GLOBAL */
+ { 0x05, "LinkId" },
+ { 0x06, "DisplayName" },
+ { 0x07, "IsFolder" },
+ { 0x09, "CreationDate" },
+ { 0x0A, "LastModifiedDate" },
+ { 0x0B, "ContentLength" },
+ { 0x0C, "ContentType" },
+
+ { 0x00, NULL }
+};
+
+static const value_string wbxml_mssyncc10_tags_cp20[] = { /* ActiveSync 'ItemOperations:' Page */
+ /* 0x00 -- 0x04 GLOBAL */
+ { 0x05, "ItemOperations" },
+ { 0x06, "Fetch" },
+ { 0x07, "Store" },
+ { 0x08, "Options" },
+ { 0x09, "Range" },
+ { 0x0A, "Total" },
+ { 0x0B, "Properties" },
+ { 0x0C, "Data" },
+ { 0x0D, "Status" },
+ { 0x0E, "Response" },
+ { 0x0F, "Version" },
+ { 0x10, "Schema" },
+ { 0x11, "Part" },
+ { 0x12, "EmptyFolderContents" },
+ { 0x13, "DeleteSubFolders" },
+ { 0x14, "UserName" },
+ { 0x15, "Password" },
+ { 0x16, "Move" },
+ { 0x17, "DstFldId" },
+ { 0x18, "ConversationId" },
+ { 0x19, "MoveAlways" },
+
+ { 0x00, NULL }
+};
+
+static const value_string wbxml_mssyncc10_tags_cp21[] = { /* ActiveSync 'ComposeMail:' Page */
+ /* 0x00 -- 0x04 GLOBAL */
+ { 0x05, "SendMail" },
+ { 0x06, "SmartForward" },
+ { 0x07, "SmartReply" },
+ { 0x08, "SaveInSentItems" },
+ { 0x09, "ReplaceMime" },
+ { 0x0B, "Source" },
+ { 0x0C, "FolderId" },
+ { 0x0D, "ItemId" },
+ { 0x0E, "LongId" },
+ { 0x0F, "InstanceId" },
+ { 0x10, "MIME" },
+ { 0x11, "ClientId" },
+ { 0x12, "Status" },
+ { 0x13, "AccountId" },
+
+ { 0x00, NULL }
+};
+
+static const value_string wbxml_mssyncc10_tags_cp22[] = { /* ActiveSync 'Email2:' Page */
+ /* 0x00 -- 0x04 GLOBAL */
+ { 0x05, "UmCallerID" },
+ { 0x06, "UmUserNotes" },
+ { 0x07, "UmAttDuration" },
+ { 0x08, "UmAttOrder" },
+ { 0x09, "ConversationId" },
+ { 0x0A, "ConversationIndex" },
+ { 0x0B, "LastVerbExecuted" },
+ { 0x0C, "LastVerbExecutionTime" },
+ { 0x0D, "ReceivedAsBcc" },
+ { 0x0E, "Sender" },
+ { 0x0F, "CalendarType" },
+ { 0x10, "IsLeapMonth" },
+ { 0x11, "AccountId" },
+ { 0x12, "FirstDayOfWeek" },
+ { 0x13, "MeetingMessageType" },
+
+ { 0x00, NULL }
+};
+
+static const value_string wbxml_mssyncc10_tags_cp23[] = { /* ActiveSync 'Notes:' Page */
+ /* 0x00 -- 0x04 GLOBAL */
+ { 0x05, "Subject" },
+ { 0x06, "MessageClass" },
+ { 0x07, "LastModifiedDate" },
+ { 0x08, "Categories" },
+ { 0x09, "Category" },
+
+ { 0x00, NULL }
+};
+
+static const value_string wbxml_mssyncc10_tags_cp24[] = { /* ActiveSync 'RightsManagement:' Page */
+ /* 0x00 -- 0x04 GLOBAL */
+ { 0x05, "RightsManagementSupport" },
+ { 0x06, "RightsManagementTemplates" },
+ { 0x07, "RightsManagementTemplate" },
+ { 0x08, "RightsManagementLicense" },
+ { 0x09, "EditAllowed" },
+ { 0x0A, "ReplyAllowed" },
+ { 0x0B, "ReplyAllAllowed" },
+ { 0x0C, "ForwardAllowed" },
+ { 0x0D, "ModifyRecipientsAllowed" },
+ { 0x0E, "ExtractAllowed" },
+ { 0x0F, "PrintAllowed" },
+ { 0x10, "ExportAllowed" },
+ { 0x11, "ProgrammaticAccessAllowed" },
+ { 0x12, "RMOwner" },
+ { 0x13, "ContentExpiryDate" },
+ { 0x14, "TemplateId" },
+ { 0x15, "TemplateName" },
+ { 0x16, "TemplateDescription" },
+ { 0x17, "ContentOwner" },
+ { 0x18, "RemoveRightsManagementDistribution" },
+
+ { 0x00, NULL }
+};
+
+
/***** Attribute Start tokens *****/
/***** Attribute Value tokens *****/
/***** Token code page aggregation *****/
static const value_valuestring wbxml_mssyncc10_tags[] = {
- { 0, wbxml_mssyncc10_tags_cp0 }, /* application/vnd.ms-sync.wbxml */
- { 1, wbxml_mssyncc10_tags_cp1 }, /* POOMCONTACTS */
- { 2, wbxml_mssyncc10_tags_cp2 }, /* POOMMAIL */
- { 3, wbxml_mssyncc10_tags_cp3 }, /* AirNotify */
- { 4, wbxml_mssyncc10_tags_cp4 }, /* POOMCAL */
- { 5, wbxml_mssyncc10_tags_cp5 }, /* Move */
- { 6, wbxml_mssyncc10_tags_cp6 }, /* GetItemEstimate */
- { 7, wbxml_mssyncc10_tags_cp7 }, /* FolderHierarchy */
- { 8, wbxml_mssyncc10_tags_cp8 }, /* MeetingResponse */
- { 9, wbxml_mssyncc10_tags_cp9 }, /* POOMTASKS */
- { 0x0a, wbxml_mssyncc10_tags_cp10 }, /* ResolveRecipients */
- { 0x0b, wbxml_mssyncc10_tags_cp11 }, /* ValidateCerts */
- { 0x0c, wbxml_mssyncc10_tags_cp12 }, /* POOMCONTACTS2 */
- { 0x0d, wbxml_mssyncc10_tags_cp13 }, /* Ping */
- { 0, NULL }
+ { 0x00, wbxml_mssyncc10_tags_cp0 }, /* AirSync: */
+ { 0x01, wbxml_mssyncc10_tags_cp1 }, /* Contacts: */
+ { 0x02, wbxml_mssyncc10_tags_cp2 }, /* Email: */
+ { 0x04, wbxml_mssyncc10_tags_cp4 }, /* Calendar: */
+ { 0x05, wbxml_mssyncc10_tags_cp5 }, /* Move: */
+ { 0x06, wbxml_mssyncc10_tags_cp6 }, /* GetItemEstimate: */
+ { 0x07, wbxml_mssyncc10_tags_cp7 }, /* FolderHierarchy: */
+ { 0x08, wbxml_mssyncc10_tags_cp8 }, /* MeetingResponse: */
+ { 0x09, wbxml_mssyncc10_tags_cp9 }, /* Tasks: */
+ { 0x0A, wbxml_mssyncc10_tags_cp10 }, /* ResolveRecipients: */
+ { 0x0B, wbxml_mssyncc10_tags_cp11 }, /* ValidateCert: */
+ { 0x0C, wbxml_mssyncc10_tags_cp12 }, /* Contacts2: */
+ { 0x0D, wbxml_mssyncc10_tags_cp13 }, /* Ping: */
+ { 0x0E, wbxml_mssyncc10_tags_cp14 }, /* Provision: */
+ { 0x0F, wbxml_mssyncc10_tags_cp15 }, /* Search: */
+ { 0x10, wbxml_mssyncc10_tags_cp16 }, /* Gal: */
+ { 0x11, wbxml_mssyncc10_tags_cp17 }, /* AirSyncBase: */
+ { 0x12, wbxml_mssyncc10_tags_cp18 }, /* Settings: */
+ { 0x13, wbxml_mssyncc10_tags_cp19 }, /* DocumentLibrary: */
+ { 0x14, wbxml_mssyncc10_tags_cp20 }, /* ItemOperations: */
+ { 0x15, wbxml_mssyncc10_tags_cp21 }, /* ComposeMail: */
+ { 0x16, wbxml_mssyncc10_tags_cp22 }, /* Email2: */
+ { 0x17, wbxml_mssyncc10_tags_cp23 }, /* Notes: */
+ { 0x18, wbxml_mssyncc10_tags_cp24 }, /* RightsManagement: */
+
+ { 0x00, NULL }
};
static const wbxml_decoding decode_mssync_10 = {
diff --git a/epan/dissectors/packet-wccp.c b/epan/dissectors/packet-wccp.c
index a22438f71d..a369d619fb 100644
--- a/epan/dissectors/packet-wccp.c
+++ b/epan/dissectors/packet-wccp.c
@@ -37,10 +37,91 @@
static int proto_wccp = -1;
static int hf_wccp_message_type = -1; /* the message type */
static int hf_wccp_version = -1; /* protocol version */
+static int hf_wccp2_version = -1;
static int hf_hash_revision = -1; /* the version of the hash */
static int hf_change_num = -1; /* change number */
+static int hf_hash_flag = -1;
+static int hf_hash_flag_u = -1;
static int hf_recvd_id = -1;
+static int hf_num_web_caches = -1;
static int hf_cache_ip = -1;
+static int hf_item_header_length = -1;
+static int hf_item_type = -1;
+static int hf_item_length = -1;
+static int hf_item_data = -1;
+static int hf_security_option = -1;
+static int hf_security_md5_checksum = -1;
+static int hf_service_type = -1;
+static int hf_service_id = -1;
+static int hf_service_priority = -1;
+static int hf_service_protocol = -1;
+static int hf_service_flags = -1;
+static int hf_service_flags_src_ip_hash = -1;
+static int hf_service_flags_dest_ip_hash = -1;
+static int hf_service_flags_src_port_hash = -1;
+static int hf_service_flags_dest_port_hash = -1;
+static int hf_service_flags_ports_defined = -1;
+static int hf_service_flags_ports_source = -1;
+static int hf_service_flags_src_ip_alt_hash = -1;
+static int hf_service_flags_dest_ip_alt_hash = -1;
+static int hf_service_flags_src_port_alt_hash = -1;
+static int hf_service_flags_dest_port_alt_hash = -1;
+static int hf_service_port = -1;
+static int hf_router_identity_ip = -1;
+static int hf_router_identity_receive_id = -1;
+static int hf_router_send_to_ip = -1;
+static int hf_router_num_recv_ip = -1;
+static int hf_router_recv_ip = -1;
+static int hf_web_cache_identity_ip = -1;
+static int hf_web_cache_identity_hash_rev = -1;
+static int hf_web_cache_identity_flags = -1;
+static int hf_web_cache_identity_flag_hash_info = -1;
+static int hf_web_cache_identity_flag_assign_type = -1;
+static int hf_web_cache_identity_num_mask = -1;
+static int hf_web_cache_identity_assign_mask = -1;
+static int hf_web_cache_identity_assign_weight = -1;
+static int hf_web_cache_identity_status = -1;
+static int hf_assignment_key_ip = -1;
+static int hf_assignment_key_change_num = -1;
+static int hf_router_view_member_change_num = -1;
+static int hf_router_router_num = -1;
+static int hf_router_router_ip = -1;
+static int hf_wc_view_info_change_num = -1;
+static int hf_wc_view_router_num = -1;
+static int hf_wc_view_ip = -1;
+static int hf_router_assignment_element_ip = -1;
+static int hf_router_assignment_element_receive_id = -1;
+static int hf_router_assignment_element_change_num = -1;
+static int hf_wccp2_assignment_info_router_num = -1;
+static int hf_wccp2_assignment_info_ip = -1;
+static int hf_router_query_info_ip = -1;
+static int hf_router_query_info_receive_id = -1;
+static int hf_router_query_info_send_to_ip = -1;
+static int hf_router_query_info_target_ip = -1;
+static int hf_capability_info_type = -1;
+static int hf_capability_info_length = -1;
+static int hf_capability_info_bytes = -1;
+static int hf_capability_info_value = -1;
+static int hf_capability_forwarding_method_flag_gre = -1;
+static int hf_capability_forwarding_method_flag_l2 = -1;
+static int hf_capability_assignment_method_flag_hash = -1;
+static int hf_capability_assignment_method_flag_mask = -1;
+static int hf_capability_return_method_flag_gre = -1;
+static int hf_capability_return_method_flag_l2 = -1;
+static int hf_wccp2_value_element_src_ip = -1;
+static int hf_wccp2_value_element_dest_ip = -1;
+static int hf_wccp2_value_element_src_port = -1;
+static int hf_wccp2_value_element_dest_port = -1;
+static int hf_wccp2_value_element_web_cache_ip = -1;
+static int hf_wccp2_mask_value_set_element_src_ip = -1;
+static int hf_wccp2_mask_value_set_element_dest_ip = -1;
+static int hf_wccp2_mask_value_set_element_src_port = -1;
+static int hf_wccp2_mask_value_set_element_dest_port = -1;
+static int hf_wccp2_mask_value_set_element_num = -1;
+static int hf_alt_assignment_info_assignment_type = -1;
+static int hf_alt_assignment_info_assignment_length = -1;
+static int hf_alt_assignment_info_num_routers = -1;
+static int hf_alt_assignment_info_num_elements = -1;
static gint ett_wccp = -1;
static gint ett_cache_count = -1;
@@ -113,9 +194,15 @@ static const value_string wccp_version_val[] = {
{ 0, NULL}
};
+const true_false_string tfs_defined_not_defined = { "Defined", "Not defined" };
+const true_false_string tfs_src_dest_port = { "Source port", "Destination port" };
+const true_false_string tfs_historical_current = { "Historical", "Current" };
+const true_false_string tfs_mask_hash = { "Mask", "Hash" };
+
#define HASH_INFO_SIZE (4*(1+8+1))
#define WCCP_U_FLAG 0x80000000
+#define WCCP_T_FLAG 0x4000
#define WCCP2_SECURITY_INFO 0
#define WCCP2_SERVICE_INFO 1
@@ -154,14 +241,14 @@ const value_string service_id_vals[] = {
typedef struct capability_flag {
guint32 value;
const char *short_name;
- const char *long_name;
+ int* phf;
} capability_flag;
static void dissect_hash_data(tvbuff_t *tvb, int offset,
proto_tree *wccp_tree);
static void dissect_web_cache_list_entry(tvbuff_t *tvb, int offset,
int idx, proto_tree *wccp_tree);
-static int wccp_bucket_info(guint8 bucket_info, proto_tree *bucket_tree,
+static guint32 wccp_bucket_info(guint8 bucket_info, proto_tree *bucket_tree,
guint32 start, tvbuff_t *tvb, int offset);
static gchar *bucket_name(guint8 bucket);
static guint16 dissect_wccp2_header(tvbuff_t *tvb, int offset,
@@ -169,28 +256,28 @@ static guint16 dissect_wccp2_header(tvbuff_t *tvb, int offset,
static void dissect_wccp2_info(tvbuff_t *tvb, int offset, guint16 length,
packet_info *pinfo, proto_tree *wccp_tree);
static gboolean dissect_wccp2_security_info(tvbuff_t *tvb, int offset,
- int length, packet_info *pinfo _U_, proto_tree *info_tree);
+ int length, packet_info *pinfo, proto_tree *info_tree, proto_item *info_item);
static gboolean dissect_wccp2_service_info(tvbuff_t *tvb, int offset,
- int length, packet_info *pinfo, proto_tree *info_tree);
+ int length, packet_info *pinfo, proto_tree *info_tree, proto_item *info_item);
static gboolean dissect_wccp2_router_identity_info(tvbuff_t *tvb, int offset,
- int length, packet_info *pinfo _U_, proto_tree *info_tree);
+ int length, packet_info *pinfo, proto_tree *info_tree, proto_item *info_item);
static gboolean dissect_wccp2_wc_identity_info(tvbuff_t *tvb, int offset,
- int length, packet_info *pinfo _U_, proto_tree *info_tree);
+ int length, packet_info *pinfo, proto_tree *info_tree, proto_item *info_item);
static gboolean dissect_wccp2_router_view_info(tvbuff_t *tvb, int offset,
- int length, packet_info *pinfo _U_, proto_tree *info_tree);
+ int length, packet_info *pinfo, proto_tree *info_tree, proto_item *info_item);
static gboolean dissect_wccp2_wc_view_info(tvbuff_t *tvb, int offset,
- int length, packet_info *pinfo _U_, proto_tree *info_tree);
+ int length, packet_info *pinfo, proto_tree *info_tree, proto_item *info_item);
static gboolean dissect_wccp2_assignment_info(tvbuff_t *tvb, int offset,
- int length, packet_info *pinfo _U_, proto_tree *info_tree);
+ int length, packet_info *pinfo, proto_tree *info_tree, proto_item *info_item);
static gboolean dissect_wccp2_router_query_info(tvbuff_t *tvb, int offset,
- int length, packet_info *pinfo _U_, proto_tree *info_tree);
+ int length, packet_info *pinfo, proto_tree *info_tree, proto_item *info_item);
static gboolean dissect_wccp2_capability_info(tvbuff_t *tvb, int offset,
- int length, packet_info *pinfo _U_, proto_tree *info_tree);
+ int length, packet_info *pinfo, proto_tree *info_tree, proto_item *info_item);
static void dissect_32_bit_capability_flags(tvbuff_t *tvb, int curr_offset,
- guint16 capability_val_len, gint ett, const capability_flag *flags,
- proto_tree *element_tree);
+ guint16 capability_val_len, packet_info *pinfo, gint ett, const capability_flag *flags,
+ proto_tree *element_tree, proto_item *element_item);
static gboolean dissect_wccp2_alt_assignment_info(tvbuff_t *tvb, int offset,
- int length, packet_info *pinfo, proto_tree *info_tree);
+ int length, packet_info *pinfo, proto_tree *info_tree, proto_item *info_item);
static int
dissect_wccp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
@@ -225,14 +312,13 @@ dissect_wccp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
wccp_tree = proto_item_add_subtree(wccp_tree_item, ett_wccp);
proto_tree_add_uint(wccp_tree, hf_wccp_message_type, tvb, offset,
- sizeof(wccp_message_type), wccp_message_type);
- offset += sizeof(wccp_message_type);
+ 4, wccp_message_type);
+ offset += 4;
switch (wccp_message_type) {
case WCCP_HERE_I_AM:
- proto_tree_add_item(wccp_tree, hf_wccp_version, tvb,
- offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(wccp_tree, hf_wccp_version, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
dissect_hash_data(tvb, offset, wccp_tree);
offset += HASH_INFO_SIZE;
@@ -242,22 +328,17 @@ dissect_wccp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
break;
case WCCP_I_SEE_YOU:
- proto_tree_add_item(wccp_tree, hf_wccp_version, tvb,
- offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(wccp_tree, hf_wccp_version, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
- proto_tree_add_item(wccp_tree, hf_change_num, tvb, offset,
- 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(wccp_tree, hf_change_num, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
- proto_tree_add_item(wccp_tree, hf_recvd_id, tvb, offset,
- 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(wccp_tree, hf_recvd_id, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
cache_count = tvb_get_ntohl(tvb, offset);
- proto_tree_add_text(wccp_tree, tvb, offset, 4,
- "Number of Web Caches: %u", cache_count);
+ proto_tree_add_uint(wccp_tree, hf_num_web_caches, tvb, offset, 4, cache_count);
offset += 4;
for (i = 0; i < cache_count; i++) {
- dissect_web_cache_list_entry(tvb, offset, i,
- wccp_tree);
+ dissect_web_cache_list_entry(tvb, offset, i, wccp_tree);
offset += 4 + HASH_INFO_SIZE;
}
break;
@@ -271,12 +352,10 @@ dissect_wccp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
* have a Received ID field after the type,
* rather than a Version field.
*/
- proto_tree_add_item(wccp_tree, hf_recvd_id, tvb, offset,
- 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(wccp_tree, hf_recvd_id, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
cache_count = tvb_get_ntohl(tvb, offset);
- proto_tree_add_text(wccp_tree, tvb, offset, 4,
- "Number of Web Caches: %u", cache_count);
+ proto_tree_add_uint(wccp_tree, hf_num_web_caches, tvb, offset, 4, cache_count);
offset += 4;
for (i = 0; i < cache_count; i++) {
ipaddr = tvb_get_ipv4(tvb, offset);
@@ -321,10 +400,8 @@ dissect_hash_data(tvbuff_t *tvb, int offset, proto_tree *wccp_tree)
proto_tree *bucket_tree;
proto_item *tf;
proto_tree *field_tree;
- int i;
+ int i, n;
guint8 bucket_info;
- int n;
- guint32 flags;
proto_tree_add_item(wccp_tree, hf_hash_revision, tvb, offset, 4,
ENC_BIG_ENDIAN);
@@ -339,18 +416,10 @@ dissect_hash_data(tvbuff_t *tvb, int offset, proto_tree *wccp_tree)
n = wccp_bucket_info(bucket_info, bucket_tree, n, tvb, offset);
offset += 1;
}
- flags = tvb_get_ntohl(tvb, offset);
- tf = proto_tree_add_text(wccp_tree, tvb, offset, 4,
- "Flags: 0x%08X (%s)", flags,
- ((flags & WCCP_U_FLAG) ?
- "Hash information is historical" :
- "Hash information is current"));
+
+ tf = proto_tree_add_item(wccp_tree, hf_hash_flag, tvb, offset, 4, ENC_BIG_ENDIAN);
field_tree = proto_item_add_subtree(tf, ett_flags);
- proto_tree_add_text(field_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(flags, WCCP_U_FLAG,
- sizeof (flags)*8,
- "Hash information is historical",
- "Hash information is current"));
+ proto_tree_add_item(field_tree, hf_hash_flag_u, tvb, offset, 4, ENC_BIG_ENDIAN);
}
static void
@@ -363,8 +432,7 @@ dissect_web_cache_list_entry(tvbuff_t *tvb, int offset, int idx,
tl = proto_tree_add_text(wccp_tree, tvb, offset, 4 + HASH_INFO_SIZE,
"Web-Cache List Entry(%d)", idx);
list_entry_tree = proto_item_add_subtree(tl, ett_cache_info);
- proto_tree_add_item(list_entry_tree, hf_cache_ip, tvb, offset, 4,
- ENC_BIG_ENDIAN);
+ proto_tree_add_item(list_entry_tree, hf_cache_ip, tvb, offset, 4, ENC_BIG_ENDIAN);
dissect_hash_data(tvb, offset + 4, list_entry_tree);
}
@@ -373,7 +441,7 @@ dissect_web_cache_list_entry(tvbuff_t *tvb, int offset, int idx,
* takes an integer representing a "Hash Information" bitmap, and spits out
* the corresponding proto_tree entries, returning the next bucket number.
*/
-static int
+static guint32
wccp_bucket_info(guint8 bucket_info, proto_tree *bucket_tree, guint32 start,
tvbuff_t *tvb, int offset)
{
@@ -404,12 +472,10 @@ dissect_wccp2_header(tvbuff_t *tvb, int offset, proto_tree *wccp_tree)
{
guint16 length;
- proto_tree_add_item(wccp_tree, hf_wccp_version, tvb, offset, 2,
- ENC_BIG_ENDIAN);
+ proto_tree_add_item(wccp_tree, hf_wccp2_version, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
length = tvb_get_ntohs(tvb, offset);
- proto_tree_add_text(wccp_tree, tvb, offset, 2, "Length: %u",
- length);
+ proto_tree_add_uint(wccp_tree, hf_item_header_length, tvb, offset, 2, length);
return length;
}
@@ -422,7 +488,7 @@ dissect_wccp2_info(tvbuff_t *tvb, int offset, guint16 length,
proto_item *ti;
proto_tree *info_tree;
gint ett;
- gboolean (*dissector)(tvbuff_t *, int, int, packet_info *, proto_tree *);
+ gboolean (*dissector)(tvbuff_t *, int, int, packet_info *, proto_tree *, proto_item *);
while (length != 0) {
type = tvb_get_ntohs(tvb, offset);
@@ -488,14 +554,12 @@ dissect_wccp2_info(tvbuff_t *tvb, int offset, guint16 length,
break;
}
- ti = proto_tree_add_text(wccp_tree, tvb, offset, item_length + 4, "%s",
+ ti = proto_tree_add_text(wccp_tree, tvb, offset, item_length + 4, "Message Component (%s)",
val_to_str(type, info_type_vals, "Unknown info type (%u)"));
info_tree = proto_item_add_subtree(ti, ett);
- proto_tree_add_text(info_tree, tvb, offset, 2,
- "Type: %s",
- val_to_str(type, info_type_vals, "Unknown info type (%u)"));
- proto_tree_add_text(info_tree, tvb, offset+2, 2,
- "Length: %u", item_length);
+ proto_tree_add_item(info_tree, hf_item_type, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(info_tree, hf_item_length, tvb, offset+2, 2, ENC_BIG_ENDIAN);
+
offset += 4;
length -= 4;
@@ -503,12 +567,10 @@ dissect_wccp2_info(tvbuff_t *tvb, int offset, guint16 length,
* XXX - pass in "length" and check for that as well.
*/
if (dissector != NULL) {
- if (!(*dissector)(tvb, offset, item_length, pinfo, info_tree))
+ if (!(*dissector)(tvb, offset, item_length, pinfo, info_tree, ti))
return; /* ran out of data */
} else {
- proto_tree_add_text(info_tree, tvb, offset, item_length,
- "Data: %u byte%s", item_length,
- plurality(item_length, "", "s"));
+ proto_tree_add_item(info_tree, hf_item_data, tvb, offset, item_length, ENC_NA);
}
offset += item_length;
length -= item_length;
@@ -520,43 +582,30 @@ dissect_wccp2_info(tvbuff_t *tvb, int offset, guint16 length,
#define WCCP2_NO_SECURITY 0
#define WCCP2_MD5_SECURITY 1
+const value_string security_option_vals[] = {
+ { WCCP2_NO_SECURITY, "None" },
+ { WCCP2_MD5_SECURITY, "MD5" },
+ { 0, NULL }
+};
+
static gboolean
dissect_wccp2_security_info(tvbuff_t *tvb, int offset, int length,
- packet_info *pinfo _U_, proto_tree *info_tree)
+ packet_info *pinfo, proto_tree *info_tree, proto_item *info_item)
{
guint32 security_option;
if (length < SECURITY_INFO_LEN) {
- proto_tree_add_text(info_tree, tvb, offset, 0,
- "Item length is %u, should be %u", length,
- SECURITY_INFO_LEN);
+ expert_add_info_format(pinfo, info_item, PI_PROTOCOL, PI_WARN,
+ "Item length is %u, should be >= %u", length, SECURITY_INFO_LEN);
return TRUE;
}
security_option = tvb_get_ntohl(tvb, offset);
- switch (security_option) {
-
- case WCCP2_NO_SECURITY:
- proto_tree_add_text(info_tree, tvb, offset, 4,
- "Security Option: None");
- break;
-
- case WCCP2_MD5_SECURITY:
- proto_tree_add_text(info_tree, tvb, offset, 4,
- "Security Option: MD5");
- offset += 4;
- if (length > 4) {
- proto_tree_add_text(info_tree, tvb, offset,
- length - 4, "MD5 checksum: %s",
- tvb_bytes_to_str(tvb, offset, length - 4));
- }
- break;
-
- default:
- proto_tree_add_text(info_tree, tvb, offset, 4,
- "Security Option: Unknown (%u)", security_option);
- break;
+ proto_tree_add_item(info_tree, hf_security_option, tvb, offset, 4, ENC_BIG_ENDIAN);
+ if (security_option == WCCP2_MD5_SECURITY) {
+ proto_tree_add_item(info_tree, hf_security_md5_checksum, tvb, offset+4, length-4, ENC_NA);
}
+
return TRUE;
}
@@ -565,6 +614,12 @@ dissect_wccp2_security_info(tvbuff_t *tvb, int offset, int length,
#define WCCP2_SERVICE_STANDARD 0
#define WCCP2_SERVICE_DYNAMIC 1
+const value_string service_type_vals[] = {
+ { WCCP2_SERVICE_STANDARD, "Well-known service" },
+ { WCCP2_SERVICE_DYNAMIC, "Dynamic service" },
+ { 0, NULL }
+};
+
/*
* Service flags.
*/
@@ -581,7 +636,7 @@ dissect_wccp2_security_info(tvbuff_t *tvb, int offset, int length,
static gboolean
dissect_wccp2_service_info(tvbuff_t *tvb, int offset, int length,
- packet_info *pinfo, proto_tree *info_tree)
+ packet_info *pinfo, proto_tree *info_tree, proto_item *info_item)
{
guint8 service_type;
guint8 priority;
@@ -592,124 +647,63 @@ dissect_wccp2_service_info(tvbuff_t *tvb, int offset, int length,
int i;
if (length != SERVICE_INFO_LEN) {
- proto_tree_add_text(info_tree, tvb, offset, 0,
- "Item length is %u, should be %u", length,
- SERVICE_INFO_LEN);
+ expert_add_info_format(pinfo, info_item, PI_PROTOCOL, PI_WARN,
+ "Item length is %u, should be %u", length, SERVICE_INFO_LEN);
return TRUE;
}
service_type = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(info_tree, hf_service_type, tvb, offset, 1, ENC_BIG_ENDIAN);
switch (service_type) {
case WCCP2_SERVICE_STANDARD:
- proto_tree_add_text(info_tree, tvb, offset, 1,
- "Service Type: Well-known service");
- proto_tree_add_text(info_tree, tvb, offset+1, 1,
- "Service ID: %s",
- val_to_str(tvb_get_guint8(tvb, offset+1), service_id_vals,
- "Unknown (0x%02X)"));
+ proto_tree_add_item(info_tree, hf_service_id, tvb, offset+1, 1, ENC_BIG_ENDIAN);
+ tf = proto_tree_add_item(info_tree, hf_service_priority, tvb, offset+2, 1, ENC_BIG_ENDIAN);
priority = tvb_get_guint8(tvb, offset+2);
- tf = proto_tree_add_text(info_tree, tvb, offset+2, 1,
- "Priority: %u (unused, must be zero)", priority);
if (priority != 0)
- expert_add_info_format(pinfo, tf, PI_PROTOCOL, PI_WARN,
- "The priority must be zero for well-known services.");
+ expert_add_info_format(pinfo, tf, PI_PROTOCOL, PI_WARN,
+ "The priority must be zero for well-known services.");
+ tf = proto_tree_add_item(info_tree, hf_service_protocol, tvb, offset+3, 1, ENC_BIG_ENDIAN);
protocol = tvb_get_guint8(tvb, offset+3);
- tf = proto_tree_add_text(info_tree, tvb, offset+3, 1,
- "Protocol: %u (unused, must be zero)", protocol);
if (protocol != 0)
- expert_add_info_format(pinfo, tf, PI_PROTOCOL, PI_WARN,
- "The protocol must be zero for well-known services.");
+ expert_add_info_format(pinfo, tf, PI_PROTOCOL, PI_WARN,
+ "The protocol must be zero for well-known services.");
break;
case WCCP2_SERVICE_DYNAMIC:
- proto_tree_add_text(info_tree, tvb, offset, 1,
- "Service Type: Dynamic service");
- proto_tree_add_text(info_tree, tvb, offset+1, 1,
- "Service ID: %s",
- val_to_str(tvb_get_guint8(tvb, offset+1), service_id_vals,
- "Unknown (0x%02X)"));
- proto_tree_add_text(info_tree, tvb, offset+2, 1,
- "Priority: %u", tvb_get_guint8(tvb, offset+2));
+ proto_tree_add_item(info_tree, hf_service_id, tvb, offset+1, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(info_tree, hf_service_priority, tvb, offset+2, 1, ENC_BIG_ENDIAN);
/*
* XXX - does "IP protocol identifier" mean this is a
* protocol type of the sort you get in IP headers?
* If so, we should get a table of those from the
* IP dissector, and use that.
*/
- proto_tree_add_text(info_tree, tvb, offset+3, 1,
- "Protocol: %u", tvb_get_guint8(tvb, offset+3)); /* IP protocol identifier */
- break;
-
- default:
- proto_tree_add_text(info_tree, tvb, offset, 1,
- "Service Type: Unknown (%u)", service_type);
+ proto_tree_add_item(info_tree, hf_service_protocol, tvb, offset+3, 1, ENC_BIG_ENDIAN);
break;
}
offset += 4;
flags = tvb_get_ntohl(tvb, offset);
- tf = proto_tree_add_text(info_tree, tvb, offset, 4,
- "Flags: 0x%08X", flags);
+ tf = proto_tree_add_item(info_tree, hf_service_flags, tvb, offset, 4, ENC_BIG_ENDIAN);
field_tree = proto_item_add_subtree(tf, ett_service_flags);
- proto_tree_add_text(field_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(flags, WCCP2_SI_SRC_IP_HASH,
- sizeof (flags)*8,
- "Use source IP address in primary hash",
- "Don't use source IP address in primary hash"));
- proto_tree_add_text(field_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(flags, WCCP2_SI_DST_IP_HASH,
- sizeof (flags)*8,
- "Use destination IP address in primary hash",
- "Don't use destination IP address in primary hash"));
- proto_tree_add_text(field_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(flags, WCCP2_SI_SRC_PORT_HASH,
- sizeof (flags)*8,
- "Use source port in primary hash",
- "Don't use source port in primary hash"));
- proto_tree_add_text(field_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(flags, WCCP2_SI_DST_PORT_HASH,
- sizeof (flags)*8,
- "Use destination port in primary hash",
- "Don't use destination port in primary hash"));
- proto_tree_add_text(field_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(flags, WCCP2_SI_PORTS_DEFINED,
- sizeof (flags)*8,
- "Ports defined",
- "Ports not defined"));
- if (flags & WCCP2_SI_PORTS_DEFINED) {
- proto_tree_add_text(field_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(flags, WCCP2_SI_PORTS_SOURCE,
- sizeof (flags)*8,
- "Ports refer to source port",
- "Ports refer to destination port"));
- }
- proto_tree_add_text(field_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(flags, WCCP2_SI_SRC_IP_ALT_HASH,
- sizeof (flags)*8,
- "Use source IP address in secondary hash",
- "Don't use source IP address in secondary hash"));
- proto_tree_add_text(field_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(flags, WCCP2_SI_DST_IP_ALT_HASH,
- sizeof (flags)*8,
- "Use destination IP address in secondary hash",
- "Don't use destination IP address in secondary hash"));
- proto_tree_add_text(field_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(flags, WCCP2_SI_SRC_PORT_ALT_HASH,
- sizeof (flags)*8,
- "Use source port in secondary hash",
- "Don't use source port in secondary hash"));
- proto_tree_add_text(field_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(flags, WCCP2_SI_DST_PORT_ALT_HASH,
- sizeof (flags)*8,
- "Use destination port in secondary hash",
- "Don't use destination port in secondary hash"));
+
+ proto_tree_add_item(field_tree, hf_service_flags_src_ip_hash, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(field_tree, hf_service_flags_dest_ip_hash, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(field_tree, hf_service_flags_src_port_hash, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(field_tree, hf_service_flags_dest_port_hash, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(field_tree, hf_service_flags_ports_defined, tvb, offset, 4, ENC_BIG_ENDIAN);
+ if (flags & WCCP2_SI_PORTS_DEFINED)
+ proto_tree_add_item(field_tree, hf_service_flags_ports_source, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(field_tree, hf_service_flags_src_ip_alt_hash, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(field_tree, hf_service_flags_dest_ip_alt_hash, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(field_tree, hf_service_flags_src_port_alt_hash, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(field_tree, hf_service_flags_dest_port_alt_hash, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
if (flags & WCCP2_SI_PORTS_DEFINED) {
for (i = 0; i < 8; i++) {
- proto_tree_add_text(info_tree, tvb, offset, 2,
- "Port %d: %u", i, tvb_get_ntohs(tvb, offset));
+ proto_tree_add_item(info_tree, hf_service_port, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
}
}
@@ -723,15 +717,13 @@ static void
dissect_wccp2_router_identity_element(tvbuff_t *tvb, int offset,
proto_tree *tree)
{
- proto_tree_add_text(tree, tvb, offset, 4,
- "IP Address: %s", tvb_ip_to_str(tvb, offset));
- proto_tree_add_text(tree, tvb, offset + 4, 4,
- "Receive ID: %u", tvb_get_ntohl(tvb, offset + 4));
+ proto_tree_add_item(tree, hf_router_identity_ip, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_router_identity_receive_id, tvb, offset+4, 4, ENC_BIG_ENDIAN);
}
static gboolean
dissect_wccp2_router_identity_info(tvbuff_t *tvb, int offset, int length,
- packet_info *pinfo _U_, proto_tree *info_tree)
+ packet_info *pinfo, proto_tree *info_tree, proto_item *info_item)
{
guint32 n_received_from;
guint i;
@@ -739,33 +731,28 @@ dissect_wccp2_router_identity_info(tvbuff_t *tvb, int offset, int length,
proto_tree *element_tree;
if (length < ROUTER_ID_INFO_MIN_LEN) {
- proto_tree_add_text(info_tree, tvb, offset, 0,
- "Item length is %u, should be >= %u", length,
- ROUTER_ID_INFO_MIN_LEN);
+ expert_add_info_format(pinfo, info_item, PI_PROTOCOL, PI_WARN,
+ "Item length is %u, should be >= %u", length, ROUTER_ID_INFO_MIN_LEN);
return TRUE;
}
te = proto_tree_add_text(info_tree, tvb, offset, 8,
"Router Identity Element: IP address %s",
tvb_ip_to_str(tvb, offset));
- element_tree = proto_item_add_subtree(te,
- ett_router_identity_element);
+ element_tree = proto_item_add_subtree(te, ett_router_identity_element);
dissect_wccp2_router_identity_element(tvb, offset, element_tree);
offset += 8;
- proto_tree_add_text(info_tree, tvb, offset, 4,
- "Sent To IP Address: %s", tvb_ip_to_str(tvb, offset));
+ proto_tree_add_item(info_tree, hf_router_send_to_ip, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
n_received_from = tvb_get_ntohl(tvb, offset);
- proto_tree_add_text(info_tree, tvb, offset, 4,
- "Number of Received From IP addresses: %u", n_received_from);
+ proto_tree_add_item(info_tree, hf_router_num_recv_ip, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
-
for (i = 0; i < n_received_from; i++) {
- proto_tree_add_text(info_tree, tvb, offset, 4,
- "Received From IP Address %d: %s", i,
- tvb_ip_to_str(tvb, offset));
+ proto_tree_add_ipv4_format_value(info_tree, hf_router_recv_ip, tvb, offset, 4,
+ tvb_get_ipv4(tvb, offset), "Received From IP Address %d: %s", i,
+ tvb_ip_to_str(tvb, offset));
offset += 4;
}
@@ -775,78 +762,74 @@ dissect_wccp2_router_identity_info(tvbuff_t *tvb, int offset, int length,
#define WC_ID_INFO_LEN (4+4+8*4+4)
static gboolean
-dissect_wccp2_web_cache_identity_element(tvbuff_t *tvb, int offset,
- proto_tree *tree)
+dissect_wccp2_web_cache_identity_element(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int length)
{
proto_item *bucket_item;
proto_tree *bucket_tree;
proto_item *tf;
proto_tree *field_tree;
- guint16 flags;
- int i;
+ guint16 flags;
+ guint32 i, n, num_masks;
guint8 bucket_info;
- int n;
- proto_tree_add_text(tree, tvb, offset, 4,
- "Web-Cache IP Address: %s", tvb_ip_to_str(tvb, offset));
+ proto_tree_add_item(tree, hf_web_cache_identity_ip, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
-
- proto_tree_add_text(tree, tvb, offset, 2,
- "Hash Revision %u", tvb_get_ntohs(tvb, offset));
+ proto_tree_add_item(tree, hf_web_cache_identity_hash_rev, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
- flags = tvb_get_ntohs(tvb, offset);
- tf = proto_tree_add_text(tree, tvb, offset, 2,
- "Flags: 0x%04X (%s)", flags,
- ((flags & 0x8000) ?
- "Hash information is historical" :
- "Hash information is current"));
+ flags = tvb_get_ntohs(tvb, offset);
+ tf = proto_tree_add_uint(tree, hf_web_cache_identity_flags, tvb, offset, 2, flags);
field_tree = proto_item_add_subtree(tf, ett_flags);
- proto_tree_add_text(field_tree, tvb, offset, 2, "%s",
- decode_boolean_bitfield(flags, 0x8000,
- sizeof (flags)*8,
- "Hash information is historical",
- "Hash information is current"));
+ proto_tree_add_item(field_tree, hf_web_cache_identity_flag_hash_info, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(field_tree, hf_web_cache_identity_flag_assign_type, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
- bucket_item = proto_tree_add_text(tree, tvb, offset, 8*4,
- "Hash information");
- bucket_tree = proto_item_add_subtree(bucket_item, ett_buckets);
- for (i = 0, n = 0; i < 32; i++) {
- bucket_info = tvb_get_guint8(tvb, offset);
- n = wccp_bucket_info(bucket_info, bucket_tree, n, tvb, offset);
- offset += 1;
- }
-
- proto_tree_add_text(tree, tvb, offset, 2,
- "Assignment Weight: %u", tvb_get_ntohs(tvb, offset));
+ if (flags & WCCP_T_FLAG) {
+ bucket_item = proto_tree_add_text(tree, tvb, offset, 8*4, "Mask Assignment information");
+ bucket_tree = proto_item_add_subtree(bucket_item, ett_buckets);
+
+ num_masks = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_uint(bucket_tree, hf_web_cache_identity_num_mask, tvb, offset, 4, num_masks);
+ offset += 4;
+ for (i = 0; i < num_masks; i++) {
+ proto_tree_add_item(bucket_tree, hf_web_cache_identity_assign_mask, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ }
+ }
+ else {
+ if (length != WC_ID_INFO_LEN) {
+ expert_add_info_format(pinfo, tf, PI_PROTOCOL, PI_WARN,
+ "Item length is %u, should be %u", length, WC_ID_INFO_LEN);
+ return TRUE;
+ }
+
+ bucket_item = proto_tree_add_text(tree, tvb, offset, 8*4, "Hash information");
+ bucket_tree = proto_item_add_subtree(bucket_item, ett_buckets);
+ for (i = 0, n = 0; i < 32; i++) {
+ bucket_info = tvb_get_guint8(tvb, offset);
+ n = wccp_bucket_info(bucket_info, bucket_tree, n, tvb, offset);
+ offset += 1;
+ }
+ }
+
+ proto_tree_add_item(tree, hf_web_cache_identity_assign_weight, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
-
- proto_tree_add_text(tree, tvb, offset, 2,
- "Status: 0x%04X", tvb_get_ntohs(tvb, offset));
-
+ proto_tree_add_item(tree, hf_web_cache_identity_status, tvb, offset, 2, ENC_BIG_ENDIAN);
return TRUE;
}
static gboolean
dissect_wccp2_wc_identity_info(tvbuff_t *tvb, int offset, int length,
- packet_info *pinfo _U_, proto_tree *info_tree)
+ packet_info *pinfo, proto_tree *info_tree, proto_item *info_item _U_)
{
proto_item *te;
proto_tree *element_tree;
- if (length != WC_ID_INFO_LEN) {
- proto_tree_add_text(info_tree, tvb, offset, 0,
- "Item length is %u, should be %u", length, WC_ID_INFO_LEN);
- return TRUE;
- }
-
- te = proto_tree_add_text(info_tree, tvb, offset, 4+2+2+32+2+2,
+ te = proto_tree_add_text(info_tree, tvb, offset, length,
"Web-Cache Identity Element: IP address %s",
tvb_ip_to_str(tvb, offset));
element_tree = proto_item_add_subtree(te, ett_wc_identity_element);
- if (!dissect_wccp2_web_cache_identity_element(tvb, offset,
- element_tree))
+ if (!dissect_wccp2_web_cache_identity_element(tvb, offset, pinfo, element_tree, length))
return FALSE; /* ran out of data */
return TRUE;
@@ -858,16 +841,13 @@ static void
dissect_wccp2_assignment_key(tvbuff_t *tvb, int offset,
proto_tree *info_tree)
{
- proto_tree_add_text(info_tree, tvb, offset, 4,
- "Assignment Key IP Address: %s",
- tvb_ip_to_str(tvb, offset));
- proto_tree_add_text(info_tree, tvb, offset + 4, 4,
- "Assignment Key Change Number: %u", tvb_get_ntohl(tvb, offset + 4));
+ proto_tree_add_item(info_tree, hf_assignment_key_ip, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(info_tree, hf_assignment_key_change_num, tvb, offset+4, 4, ENC_BIG_ENDIAN);
}
static gboolean
dissect_wccp2_router_view_info(tvbuff_t *tvb, int offset, int length,
- packet_info *pinfo _U_, proto_tree *info_tree)
+ packet_info *pinfo, proto_tree *info_tree, proto_item *info_item)
{
guint32 n_routers;
guint32 n_web_caches;
@@ -876,44 +856,38 @@ dissect_wccp2_router_view_info(tvbuff_t *tvb, int offset, int length,
proto_tree *element_tree;
if (length < ROUTER_VIEW_INFO_MIN_LEN) {
- proto_tree_add_text(info_tree, tvb, offset, 0,
- "Item length is %u, should be >= %u", length,
- ROUTER_VIEW_INFO_MIN_LEN);
+ expert_add_info_format(pinfo, info_item, PI_PROTOCOL, PI_WARN,
+ "Item length is %u, should be >= %u", length, ROUTER_VIEW_INFO_MIN_LEN);
return TRUE;
}
- proto_tree_add_text(info_tree, tvb, offset, 4,
- "Member Change Number: %u", tvb_get_ntohl(tvb, offset));
+ proto_tree_add_item(info_tree, hf_router_view_member_change_num, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
dissect_wccp2_assignment_key(tvb, offset, info_tree);
offset += 8;
n_routers = tvb_get_ntohl(tvb, offset);
- proto_tree_add_text(info_tree, tvb, offset, 4,
- "Number of Routers: %u", n_routers);
+ proto_tree_add_uint(info_tree, hf_router_router_num, tvb, offset, 4, n_routers);
offset += 4;
for (i = 0; i < n_routers; i++) {
- proto_tree_add_text(info_tree, tvb, offset, 4,
- "Router %d IP Address: %s", i,
- tvb_ip_to_str(tvb, offset));
+ proto_tree_add_ipv4_format_value(info_tree, hf_router_router_ip, tvb, offset, 4,
+ tvb_get_ipv4(tvb, offset), "Router %d IP Address: %s", i,
+ tvb_ip_to_str(tvb, offset));
offset += 4;
}
n_web_caches = tvb_get_ntohl(tvb, offset);
- proto_tree_add_text(info_tree, tvb, offset, 4,
- "Number of Web Caches: %u", n_web_caches);
+ proto_tree_add_uint(info_tree, hf_num_web_caches, tvb, offset, 4, n_web_caches);
offset += 4;
for (i = 0; i < n_web_caches; i++) {
te = proto_tree_add_text(info_tree, tvb, offset, WC_ID_INFO_LEN,
"Web-Cache Identity Element %d: IP address %s", i,
tvb_ip_to_str(tvb, offset));
- element_tree = proto_item_add_subtree(te,
- ett_wc_identity_element);
- if (!dissect_wccp2_web_cache_identity_element(tvb,
- offset, element_tree))
+ element_tree = proto_item_add_subtree(te, ett_wc_identity_element);
+ if (!dissect_wccp2_web_cache_identity_element(tvb, offset, pinfo, element_tree, WC_ID_INFO_LEN))
return FALSE; /* ran out of data */
offset += WC_ID_INFO_LEN;
}
@@ -925,7 +899,7 @@ dissect_wccp2_router_view_info(tvbuff_t *tvb, int offset, int length,
static gboolean
dissect_wccp2_wc_view_info(tvbuff_t *tvb, int offset, int length,
- packet_info *pinfo _U_, proto_tree *info_tree)
+ packet_info *pinfo, proto_tree *info_tree, proto_item *info_item)
{
guint32 n_routers;
guint32 n_web_caches;
@@ -934,40 +908,35 @@ dissect_wccp2_wc_view_info(tvbuff_t *tvb, int offset, int length,
proto_tree *element_tree;
if (length < WC_VIEW_INFO_MIN_LEN) {
- proto_tree_add_text(info_tree, tvb, offset, 0,
- "Item length is %u, should be >= %u", length,
- WC_VIEW_INFO_MIN_LEN);
+ expert_add_info_format(pinfo, info_item, PI_PROTOCOL, PI_WARN,
+ "Item length is %u, should be >= %u", length, WC_VIEW_INFO_MIN_LEN);
return TRUE;
}
- proto_tree_add_text(info_tree, tvb, offset, 4,
- "Change Number: %u", tvb_get_ntohl(tvb, offset));
+ proto_tree_add_item(info_tree, hf_wc_view_info_change_num, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
n_routers = tvb_get_ntohl(tvb, offset);
- proto_tree_add_text(info_tree, tvb, offset, 4,
- "Number of Routers: %u", n_routers);
+ proto_tree_add_uint(info_tree, hf_wc_view_router_num, tvb, offset, 4, n_routers);
offset += 4;
for (i = 0; i < n_routers; i++) {
te = proto_tree_add_text(info_tree, tvb, offset, 8,
"Router %d Identity Element: IP address %s", i,
tvb_ip_to_str(tvb, offset));
- element_tree = proto_item_add_subtree(te,
- ett_router_identity_element);
+ element_tree = proto_item_add_subtree(te, ett_router_identity_element);
dissect_wccp2_router_identity_element(tvb, offset, element_tree);
offset += 8;
}
n_web_caches = tvb_get_ntohl(tvb, offset);
- proto_tree_add_text(info_tree, tvb, offset, 4,
- "Number of Web Caches: %u", n_web_caches);
+ proto_tree_add_uint(info_tree, hf_num_web_caches, tvb, offset, 4, n_web_caches);
offset += 4;
for (i = 0; i < n_web_caches; i++) {
- proto_tree_add_text(info_tree, tvb, offset, 4,
- "Web-Cache %d: IP address %s", i,
- tvb_ip_to_str(tvb, offset));
+ proto_tree_add_ipv4_format_value(info_tree, hf_wc_view_ip, tvb, offset, 4,
+ tvb_get_ipv4(tvb, offset), "Web-Cache %d IP Address: %s", i,
+ tvb_ip_to_str(tvb, offset));
offset += 4;
}
@@ -980,12 +949,9 @@ static void
dissect_wccp2_router_assignment_element(tvbuff_t *tvb, int offset,
proto_tree *tree)
{
- proto_tree_add_text(tree, tvb, offset, 4,
- "IP Address: %s", tvb_ip_to_str(tvb, offset));
- proto_tree_add_text(tree, tvb, offset + 4, 4,
- "Receive ID: %u", tvb_get_ntohl(tvb, offset + 4));
- proto_tree_add_text(tree, tvb, offset + 8, 4,
- "Change Number: %u", tvb_get_ntohl(tvb, offset + 8));
+ proto_tree_add_item(tree, hf_router_assignment_element_ip, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_router_assignment_element_receive_id, tvb, offset+4, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_router_assignment_element_change_num, tvb, offset+8, 4, ENC_BIG_ENDIAN);
}
static gchar *
@@ -1004,7 +970,7 @@ assignment_bucket_name(guint8 bucket)
static gboolean
dissect_wccp2_assignment_info(tvbuff_t *tvb, int offset, int length,
- packet_info *pinfo _U_, proto_tree *info_tree)
+ packet_info *pinfo, proto_tree *info_tree, proto_item *info_item)
{
guint32 n_routers;
guint32 n_web_caches;
@@ -1013,9 +979,8 @@ dissect_wccp2_assignment_info(tvbuff_t *tvb, int offset, int length,
proto_tree *element_tree;
if (length < ASSIGNMENT_INFO_MIN_LEN) {
- proto_tree_add_text(info_tree, tvb, offset, 0,
- "Item length is %u, should be >= %u", length,
- ASSIGNMENT_INFO_MIN_LEN);
+ expert_add_info_format(pinfo, info_item, PI_PROTOCOL, PI_WARN,
+ "Item length is %u, should be >= %u", length, ASSIGNMENT_INFO_MIN_LEN);
return TRUE;
}
@@ -1023,29 +988,25 @@ dissect_wccp2_assignment_info(tvbuff_t *tvb, int offset, int length,
offset += 8;
n_routers = tvb_get_ntohl(tvb, offset);
- proto_tree_add_text(info_tree, tvb, offset, 4,
- "Number of Routers: %u", n_routers);
+ proto_tree_add_uint(info_tree, hf_wccp2_assignment_info_router_num, tvb, offset, 4, n_routers);
offset += 4;
for (i = 0; i < n_routers; i++) {
te = proto_tree_add_text(info_tree, tvb, offset, 4,
"Router %d Assignment Element: IP address %s", i,
tvb_ip_to_str(tvb, offset));
- element_tree = proto_item_add_subtree(te,
- ett_router_assignment_element);
- dissect_wccp2_router_assignment_element(tvb, offset,
- element_tree);
+ element_tree = proto_item_add_subtree(te, ett_router_assignment_element);
+ dissect_wccp2_router_assignment_element(tvb, offset, element_tree);
offset += 12;
}
n_web_caches = tvb_get_ntohl(tvb, offset);
- proto_tree_add_text(info_tree, tvb, offset, 4,
- "Number of Web Caches: %u", n_web_caches);
+ proto_tree_add_uint(info_tree, hf_num_web_caches, tvb, offset, 4, n_web_caches);
offset += 4;
for (i = 0; i < n_web_caches; i++) {
- proto_tree_add_text(info_tree, tvb, offset, 4,
- "Web-Cache %d: IP address %s", i,
+ proto_tree_add_ipv4_format_value(info_tree, hf_wccp2_assignment_info_ip, tvb, offset, 4,
+ tvb_get_ipv4(tvb, offset), "Web-Cache %d IP Address: %s", i,
tvb_ip_to_str(tvb, offset));
offset += 4;
}
@@ -1068,28 +1029,18 @@ dissect_wccp2_assignment_info(tvbuff_t *tvb, int offset, int length,
static gboolean
dissect_wccp2_router_query_info(tvbuff_t *tvb, int offset, int length,
- packet_info *pinfo _U_, proto_tree *info_tree)
+ packet_info *pinfo, proto_tree *info_tree, proto_item *info_item)
{
if (length != QUERY_INFO_LEN) {
- proto_tree_add_text(info_tree, tvb, offset, 0,
- "Item length is %u, should be %u", length, QUERY_INFO_LEN);
+ expert_add_info_format(pinfo, info_item, PI_PROTOCOL, PI_WARN,
+ "Item length is %u, should be %u", length, QUERY_INFO_LEN);
return TRUE;
}
- proto_tree_add_text(info_tree, tvb, offset, 4,
- "Router IP Address: %s", tvb_ip_to_str(tvb, offset));
- offset += 4;
-
- proto_tree_add_text(info_tree, tvb, offset, 4,
- "Receive ID: %u", tvb_get_ntohl(tvb, offset));
- offset += 4;
-
- proto_tree_add_text(info_tree, tvb, offset, 4,
- "Sent To IP Address: %s", tvb_ip_to_str(tvb, offset));
- offset += 4;
-
- proto_tree_add_text(info_tree, tvb, offset, 4,
- "Target IP Address: %s", tvb_ip_to_str(tvb, offset));
+ proto_tree_add_item(info_tree, hf_router_query_info_ip, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(info_tree, hf_router_query_info_receive_id, tvb, offset+4, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(info_tree, hf_router_query_info_send_to_ip, tvb, offset+8, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(info_tree, hf_router_query_info_target_ip, tvb, offset+12, 4, ENC_BIG_ENDIAN);
return TRUE;
}
@@ -1109,20 +1060,17 @@ static const value_string capability_type_vals[] = {
#define WCCP2_FORWARDING_METHOD_L2 0x00000002
static const capability_flag forwarding_method_flags[] = {
- { WCCP2_FORWARDING_METHOD_GRE,
- "IP-GRE", "GRE-encapsulated" },
- { WCCP2_FORWARDING_METHOD_L2,
- "L2", "L2 rewrite" },
- { 0,
- NULL, NULL }
+ { WCCP2_FORWARDING_METHOD_GRE, "IP-GRE", &hf_capability_forwarding_method_flag_gre },
+ { WCCP2_FORWARDING_METHOD_L2, "L2", &hf_capability_forwarding_method_flag_l2 },
+ { 0, NULL, NULL }
};
#define WCCP2_ASSIGNMENT_METHOD_HASH 0x00000001
#define WCCP2_ASSIGNMENT_METHOD_MASK 0x00000002
static const capability_flag assignment_method_flags[] = {
- { WCCP2_ASSIGNMENT_METHOD_HASH, "Hash", "Hash" },
- { WCCP2_ASSIGNMENT_METHOD_MASK, "Mask", "Mask" },
+ { WCCP2_ASSIGNMENT_METHOD_HASH, "Hash", &hf_capability_assignment_method_flag_hash },
+ { WCCP2_ASSIGNMENT_METHOD_MASK, "Mask", &hf_capability_assignment_method_flag_mask },
{ 0, NULL, NULL }
};
@@ -1130,17 +1078,14 @@ static const capability_flag assignment_method_flags[] = {
#define WCCP2_PACKET_RETURN_METHOD_L2 0x00000002
static const capability_flag packet_return_method_flags[] = {
- { WCCP2_PACKET_RETURN_METHOD_GRE,
- "IP-GRE", "GRE-encapsulated" },
- { WCCP2_PACKET_RETURN_METHOD_L2,
- "L2", "L2 rewrite" },
- { 0,
- NULL, NULL }
+ { WCCP2_PACKET_RETURN_METHOD_GRE, "IP-GRE", &hf_capability_return_method_flag_gre },
+ { WCCP2_PACKET_RETURN_METHOD_L2, "L2", &hf_capability_return_method_flag_l2 },
+ { 0, NULL, NULL }
};
static gboolean
dissect_wccp2_capability_info(tvbuff_t *tvb, int offset, int length,
- packet_info *pinfo _U_, proto_tree *info_tree)
+ packet_info *pinfo, proto_tree *info_tree, proto_item *info_item _U_)
{
guint16 capability_type;
guint16 capability_val_len;
@@ -1149,59 +1094,45 @@ dissect_wccp2_capability_info(tvbuff_t *tvb, int offset, int length,
proto_tree *element_tree;
for (curr_offset = offset; curr_offset < (length + offset);
- curr_offset += (capability_val_len + 4)) {
+ curr_offset += (capability_val_len + 4)) {
capability_type = tvb_get_ntohs(tvb, curr_offset);
capability_val_len = tvb_get_ntohs(tvb, curr_offset + 2);
- te = proto_tree_add_text(info_tree, tvb, curr_offset,
- capability_val_len + 4, "%s",
- val_to_str(capability_type,
- capability_type_vals, "Unknown Capability Element (0x%08X)"));
- element_tree = proto_item_add_subtree(te,
- ett_capability_element);
-
- proto_tree_add_text(element_tree, tvb, curr_offset, 2,
- "Type: %s",
- val_to_str(capability_type,
- capability_type_vals, "Unknown (0x%08X)"));
+ te = proto_tree_add_item(info_tree, hf_capability_info_type, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ proto_item_set_len(te, capability_val_len + 4);
+ element_tree = proto_item_add_subtree(te, ett_capability_element);
if (capability_val_len < 4) {
- proto_tree_add_text(element_tree, tvb, curr_offset+2, 2,
- "Value Length: %u (illegal, must be >= 4)",
- capability_val_len);
+ expert_add_info_format(pinfo, te, PI_PROTOCOL, PI_WARN,
+ "Value Length: %u (illegal, must be >= 4)", capability_val_len);
break;
}
- proto_tree_add_text(element_tree, tvb, curr_offset+2, 2,
- "Value Length: %u", capability_val_len);
+ proto_tree_add_uint(element_tree, hf_capability_info_length, tvb, curr_offset+2, 2, capability_val_len);
switch (capability_type) {
case WCCP2_FORWARDING_METHOD:
dissect_32_bit_capability_flags(tvb, curr_offset,
- capability_val_len,
+ capability_val_len, pinfo,
ett_capability_forwarding_method,
- forwarding_method_flags, element_tree);
+ forwarding_method_flags, element_tree, te);
break;
case WCCP2_ASSIGNMENT_METHOD:
dissect_32_bit_capability_flags(tvb, curr_offset,
- capability_val_len,
+ capability_val_len, pinfo,
ett_capability_assignment_method,
- assignment_method_flags, element_tree);
+ assignment_method_flags, element_tree, te);
break;
case WCCP2_PACKET_RETURN_METHOD:
dissect_32_bit_capability_flags(tvb, curr_offset,
- capability_val_len,
+ capability_val_len, pinfo,
ett_capability_return_method,
- packet_return_method_flags, element_tree);
+ packet_return_method_flags, element_tree, te);
break;
default:
- proto_tree_add_text(element_tree, tvb,
- curr_offset+4, capability_val_len,
- "Value: %s",
- tvb_bytes_to_str(tvb, curr_offset+4,
- capability_val_len));
+ proto_tree_add_item(element_tree, hf_capability_info_bytes, tvb, curr_offset+4, capability_val_len, ENC_NA);
break;
}
@@ -1211,62 +1142,42 @@ dissect_wccp2_capability_info(tvbuff_t *tvb, int offset, int length,
static void
dissect_32_bit_capability_flags(tvbuff_t *tvb, int curr_offset,
- guint16 capability_val_len, gint ett, const capability_flag *flags,
- proto_tree *element_tree)
+ guint16 capability_val_len, packet_info *pinfo, gint ett, const capability_flag *flags,
+ proto_tree *element_tree, proto_item *element_item)
{
guint32 capability_val;
proto_item *tm;
proto_tree *method_tree;
int i;
- char *flags_string;
- char *p;
- gint returned_length, str_index = 0;
- char *buf;
+ gboolean first = TRUE;
if (capability_val_len != 4) {
- proto_tree_add_text(element_tree, tvb,
- curr_offset+4, capability_val_len,
- "Illegal length (must be 4)");
+ expert_add_info_format(pinfo, element_item, PI_PROTOCOL, PI_WARN,
+ "Value Length: %u (illegal, must be >= 4)", capability_val_len);
return;
}
capability_val = tvb_get_ntohl(tvb, curr_offset + 4);
-#define FLAGS_STRING_LEN (128+1)
- flags_string=ep_alloc(FLAGS_STRING_LEN);
- flags_string[0] = 0;
+ tm = proto_tree_add_uint(element_tree, hf_capability_info_value, tvb, curr_offset + 4, 4, capability_val);
+
for (i = 0; flags[i].short_name != NULL; i++) {
if (capability_val & flags[i].value) {
- if (str_index != 0) {
- returned_length = g_snprintf(&flags_string[str_index],
- FLAGS_STRING_LEN-str_index, ",");
- str_index += MIN(returned_length, FLAGS_STRING_LEN-str_index);
+ if (first) {
+ proto_item_append_text( tm, " (%s", flags[i].short_name);
+ first = FALSE;
+ } else {
+ proto_item_append_text( tm, ", %s", flags[i].short_name);
}
- returned_length = g_snprintf(&flags_string[str_index],
- FLAGS_STRING_LEN-str_index, "%s", flags[i].short_name);
- str_index += MIN(returned_length, FLAGS_STRING_LEN-str_index);
}
}
- tm = proto_tree_add_text(element_tree, tvb, curr_offset+4, 4,
- "Value: 0x%08X (%s)", capability_val, flags_string);
+
+ if (first == FALSE)
+ proto_item_append_text( tm, ")");
method_tree = proto_item_add_subtree(tm, ett);
-#define BUF_SIZE 1024
- buf=ep_alloc(BUF_SIZE);
- buf[0]=0;
- for (i = 0; flags[i].long_name != NULL; i++) {
- p = decode_bitfield_value(buf, capability_val,
- flags[i].value, 32);
- str_index = MIN((gint)(p-buf), BUF_SIZE);
- returned_length = g_snprintf(&flags_string[str_index], BUF_SIZE-str_index,
- "%s: %s", flags[i].long_name,
- (capability_val & flags[i].value)?
- "Supported":
- "Not supported"
- );
- str_index += MIN(returned_length, BUF_SIZE-str_index);
- proto_tree_add_text(method_tree, tvb, curr_offset+4, 4,
- "%s", buf);
- }
+ for (i = 0; flags[i].phf != NULL; i++)
+ proto_tree_add_item(method_tree, *(flags[i].phf), tvb, curr_offset+4, 4, ENC_BIG_ENDIAN);
+
}
#define ALT_ASSIGNMENT_INFO_MIN_LEN (4+4)
@@ -1289,15 +1200,11 @@ dissect_wccp2_value_element(tvbuff_t *tvb, int offset, int idx, proto_tree *info
tl = proto_tree_add_text(info_tree, tvb, offset, 16, "Value Element(%u)", idx);
element_tree = proto_item_add_subtree(tl, ett_value_element);
- proto_tree_add_text(element_tree, tvb, offset, 4, "Source Address value: %s", tvb_ip_to_str(tvb, offset));
- offset += 4;
- proto_tree_add_text(element_tree, tvb, offset, 4, "Destination Address value: %s", tvb_ip_to_str(tvb, offset));
- offset += 4;
- proto_tree_add_text(element_tree, tvb, offset, 2, "Source Port value: %u", tvb_get_ntohs(tvb, offset));
- offset += 2;
- proto_tree_add_text(element_tree, tvb, offset, 2, "Source Port value: %u", tvb_get_ntohs(tvb, offset));
- offset += 2;
- proto_tree_add_text(element_tree, tvb, offset, 4, "Web Cache Address: %s", tvb_ip_to_str(tvb, offset));
+ proto_tree_add_item(element_tree, hf_wccp2_value_element_src_ip, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(element_tree, hf_wccp2_value_element_dest_ip, tvb, offset+4, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(element_tree, hf_wccp2_value_element_src_port, tvb, offset+8, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(element_tree, hf_wccp2_value_element_dest_port, tvb, offset+10, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(element_tree, hf_wccp2_value_element_web_cache_ip, tvb, offset+12, 4, ENC_BIG_ENDIAN);
}
static guint
@@ -1308,22 +1215,16 @@ dissect_wccp2_mask_value_set_element(tvbuff_t *tvb, int offset, int idx, proto_t
guint num_of_val_elements;
guint i;
- tl = proto_tree_add_text(info_tree, tvb, offset, 0,
- "Mask/Value Set Element(%d)", idx);
+ tl = proto_tree_add_text(info_tree, tvb, offset, 0, "Mask/Value Set Element(%d)", idx);
element_tree = proto_item_add_subtree(tl, ett_mv_set_element);
- proto_tree_add_text(element_tree, tvb, offset, 4, "Source Address Mask: %s", tvb_ip_to_str(tvb, offset));
- offset += 4;
- proto_tree_add_text(element_tree, tvb, offset, 4, "Destination Address Mask: %s", tvb_ip_to_str(tvb, offset));
- offset += 4;
- proto_tree_add_text(element_tree, tvb, offset, 2, "Source Port Mask: %04x", tvb_get_ntohs(tvb, offset));
- offset += 2;
- proto_tree_add_text(element_tree, tvb, offset, 2, "Destination Port Mask: %04x", tvb_get_ntohs(tvb, offset));
- offset += 2;
-
- proto_tree_add_text(element_tree, tvb, offset, 4, "Number of Value Elements: %u", tvb_get_ntohl(tvb, offset));
- num_of_val_elements = tvb_get_ntohl(tvb, offset);
- offset += 4;
+ proto_tree_add_item(element_tree, hf_wccp2_mask_value_set_element_src_ip, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(element_tree, hf_wccp2_mask_value_set_element_dest_ip, tvb, offset+4, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(element_tree, hf_wccp2_mask_value_set_element_src_port, tvb, offset+8, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(element_tree, hf_wccp2_mask_value_set_element_dest_port, tvb, offset+10, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(element_tree, hf_wccp2_mask_value_set_element_num, tvb, offset+12, 4, ENC_BIG_ENDIAN);
+ num_of_val_elements = tvb_get_ntohl(tvb, offset+12);
+ offset += 16;
for (i = 0; i < num_of_val_elements; i++)
{
@@ -1338,33 +1239,28 @@ dissect_wccp2_mask_value_set_element(tvbuff_t *tvb, int offset, int idx, proto_t
static gboolean
dissect_wccp2_alt_assignment_info(tvbuff_t *tvb, int offset, int length,
- packet_info *pinfo, proto_tree *info_tree)
+ packet_info *pinfo, proto_tree *info_tree, proto_item *info_item)
{
guint16 assignment_type;
guint16 assignment_length;
if (length < ALT_ASSIGNMENT_INFO_MIN_LEN) {
- proto_tree_add_text(info_tree, tvb, offset, 0,
- "Item length is %u, should be >= %u", length,
- ALT_ASSIGNMENT_INFO_MIN_LEN);
+ expert_add_info_format(pinfo, info_item, PI_PROTOCOL, PI_WARN,
+ "Item length is %u, should be >= %u", length, ALT_ASSIGNMENT_INFO_MIN_LEN);
return TRUE;
}
assignment_type = tvb_get_ntohs(tvb, offset);
- proto_tree_add_text(info_tree, tvb, offset, 2,
- "Assignment type: %s", val_to_str(assignment_type,
- assignment_type_vals, "Unknown assignment type (%u)"));
+ proto_tree_add_item(info_tree, hf_alt_assignment_info_assignment_type, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
assignment_length = tvb_get_ntohs(tvb, offset);
- proto_tree_add_text(info_tree, tvb, offset, 2,
- "Assignment length: %u", assignment_length);
+ proto_tree_add_item(info_tree, hf_alt_assignment_info_assignment_length, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
switch (assignment_type) {
case WCCP2_HASH_ASSIGNMENT_TYPE:
- dissect_wccp2_assignment_info(tvb, offset, assignment_length,
- pinfo, info_tree);
+ dissect_wccp2_assignment_info(tvb, offset, assignment_length, pinfo, info_tree, info_item);
break;
case WCCP2_MASK_ASSIGNMENT_TYPE:
@@ -1377,7 +1273,7 @@ dissect_wccp2_alt_assignment_info(tvbuff_t *tvb, int offset, int length,
offset += 8;
num_of_rtr = tvb_get_ntohl(tvb, offset);
- proto_tree_add_text(info_tree, tvb, offset, 4, "Number of routers: %u", num_of_rtr);
+ proto_tree_add_uint(info_tree, hf_alt_assignment_info_num_routers, tvb, offset, 4, num_of_rtr);
offset += 4;
for (i = 0; i < num_of_rtr; i++)
{
@@ -1386,7 +1282,7 @@ dissect_wccp2_alt_assignment_info(tvbuff_t *tvb, int offset, int length,
}
num_of_elem = tvb_get_ntohl(tvb, offset);
- proto_tree_add_text(info_tree, tvb, offset, 4, "Number of elements: %u", num_of_elem);
+ proto_tree_add_uint(info_tree, hf_alt_assignment_info_num_elements, tvb, offset, 4, num_of_elem);
offset += 4;
for (i = 0; i < num_of_elem; i++)
{
@@ -1414,6 +1310,10 @@ proto_register_wccp(void)
{ "WCCP Version", "wccp.version", FT_UINT32, BASE_HEX, VALS(wccp_version_val), 0x0,
"The WCCP version", HFILL }
},
+ { &hf_wccp2_version,
+ { "WCCP Version", "wccp.version", FT_UINT16, BASE_HEX, NULL, 0x0,
+ "The WCCP version", HFILL }
+ },
{ &hf_hash_revision,
{ "Hash Revision", "wccp.hash_revision", FT_UINT32, BASE_DEC, 0x0, 0x0,
"The cache hash revision", HFILL }
@@ -1422,15 +1322,336 @@ proto_register_wccp(void)
{ "Change Number", "wccp.change_num", FT_UINT32, BASE_DEC, 0x0, 0x0,
"The Web-Cache list entry change number", HFILL }
},
+ { &hf_hash_flag,
+ { "Flags", "wccp.hash_flag", FT_UINT32, BASE_HEX, 0x0, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hash_flag_u,
+ { "Hash information", "wccp.hash_flag.u", FT_BOOLEAN, 32, TFS(&tfs_historical_current), WCCP_U_FLAG,
+ NULL, HFILL }
+ },
{ &hf_recvd_id,
{ "Received ID", "wccp.recvd_id", FT_UINT32, BASE_DEC, 0x0, 0x0,
"The number of I_SEE_YOU's that have been sent", HFILL }
},
+ { &hf_num_web_caches,
+ { "Number of Web Caches", "wccp.num_web_caches", FT_UINT32, BASE_DEC, 0x0, 0x0,
+ NULL, HFILL }
+ },
{ &hf_cache_ip,
{ "Web Cache IP address", "wccp.cache_ip", FT_IPv4, BASE_NONE, NULL, 0x0,
"The IP address of a Web cache", HFILL }
},
+ { &hf_item_header_length,
+ { "Length", "wccp.item_header_length", FT_UINT16, BASE_DEC, 0x0, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_item_length,
+ { "Length", "wccp.item_length", FT_UINT16, BASE_DEC, 0x0, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_item_type,
+ { "Type", "wccp.item_type", FT_UINT16, BASE_DEC, VALS(info_type_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_item_data,
+ { "Data", "wccp.item_data", FT_BYTES, BASE_NONE, 0x0, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_security_option,
+ { "Security Option", "wccp.security_option", FT_UINT16, BASE_DEC, VALS(security_option_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_security_md5_checksum,
+ { "MD5 checksum", "wccp.security_md5_checksum", FT_BYTES, BASE_NONE, 0x0, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_service_type,
+ { "Service Type", "wccp.service_type", FT_UINT8, BASE_DEC, VALS(service_type_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_service_id,
+ { "Service ID", "wccp.service_id", FT_UINT8, BASE_DEC, VALS(service_id_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_service_priority,
+ { "Priority", "wccp.service_priority", FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_service_protocol,
+ { "Protocol", "wccp.service_protocol", FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_service_flags,
+ { "Flags", "wccp.service_flags", FT_UINT32, BASE_HEX, 0x0, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_service_flags_src_ip_hash,
+ { "Source IP address in primary hash", "wccp.service_flag.src_ip_hash", FT_BOOLEAN, 32, TFS(&tfs_used_notused), WCCP2_SI_SRC_IP_HASH,
+ NULL, HFILL }
+ },
+ { &hf_service_flags_dest_ip_hash,
+ { "Destination IP address in primary hash", "wccp.service_flag.dest_ip_hash", FT_BOOLEAN, 32, TFS(&tfs_used_notused), WCCP2_SI_DST_IP_HASH,
+ NULL, HFILL }
+ },
+ { &hf_service_flags_src_port_hash,
+ { "Source port in primary hash", "wccp.service_flag.src_port_hash", FT_BOOLEAN, 32, TFS(&tfs_used_notused), WCCP2_SI_SRC_PORT_HASH,
+ NULL, HFILL }
+ },
+ { &hf_service_flags_dest_port_hash,
+ { "Destination port in primary hash", "wccp.service_flag.dest_port_hash", FT_BOOLEAN, 32, TFS(&tfs_used_notused), WCCP2_SI_DST_PORT_HASH,
+ NULL, HFILL }
+ },
+ { &hf_service_flags_ports_defined,
+ { "Ports", "wccp.service_flag.ports_defined", FT_BOOLEAN, 32, TFS(&tfs_defined_not_defined), WCCP2_SI_PORTS_DEFINED,
+ NULL, HFILL }
+ },
+ { &hf_service_flags_ports_source,
+ { "Ports refer to", "wccp.service_flag.ports_source", FT_BOOLEAN, 32, TFS(&tfs_src_dest_port), WCCP2_SI_PORTS_SOURCE,
+ NULL, HFILL }
+ },
+ { &hf_service_flags_src_ip_alt_hash,
+ { "Source IP address in secondary hash", "wccp.service_flag.src_ip_alt_hash", FT_BOOLEAN, 32, TFS(&tfs_used_notused), WCCP2_SI_SRC_IP_ALT_HASH,
+ NULL, HFILL }
+ },
+ { &hf_service_flags_dest_ip_alt_hash,
+ { "Destination IP address in secondary hash", "wccp.service_flag.dest_ip_alt_hash", FT_BOOLEAN, 32, TFS(&tfs_used_notused), WCCP2_SI_DST_IP_ALT_HASH,
+ NULL, HFILL }
+ },
+ { &hf_service_flags_src_port_alt_hash,
+ { "Source port in secondary hash", "wccp.service_flag.src_port_alt_hash", FT_BOOLEAN, 32, TFS(&tfs_used_notused), WCCP2_SI_SRC_PORT_ALT_HASH,
+ NULL, HFILL }
+ },
+ { &hf_service_flags_dest_port_alt_hash,
+ { "Destination port in secondary hash", "wccp.service_flag.dest_port_alt_hash", FT_BOOLEAN, 32, TFS(&tfs_used_notused), WCCP2_SI_DST_PORT_ALT_HASH,
+ NULL, HFILL }
+ },
+ { &hf_service_port,
+ { "Port", "wccp.service_port", FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_router_identity_ip,
+ { "IP Address", "wccp.router_identity.ip", FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_router_identity_receive_id,
+ { "Received ID", "wccp.router_identity.receive_id", FT_UINT32, BASE_DEC, 0x0, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_router_send_to_ip,
+ { "Sent To IP Address", "wccp.router.send_to_ip", FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_router_num_recv_ip,
+ { "Number of Received From IP addresses", "wccp.router.num_recv_ip", FT_UINT32, BASE_DEC, 0x0, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_router_recv_ip,
+ { "Received From IP Address", "wccp.router.recv_ip", FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_web_cache_identity_ip,
+ { "Web-Cache IP Address", "wccp.web_cache_identity.ip", FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_web_cache_identity_hash_rev,
+ { "Hash Revision", "wccp.web_cache_identity.hash_rev", FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_web_cache_identity_flags,
+ { "Flags", "wccp.web_cache_identity.flags", FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_web_cache_identity_flag_hash_info,
+ { "Hash information", "wccp.web_cache_identity.flags.hash_info", FT_BOOLEAN, 16, TFS(&tfs_historical_current), 0x8000,
+ NULL, HFILL }
+ },
+ { &hf_web_cache_identity_flag_assign_type,
+ { "Assignment Type", "wccp.web_cache_identity.flags.assign_type", FT_BOOLEAN, 16, TFS(&tfs_mask_hash), 0x4000,
+ NULL, HFILL }
+ },
+ { &hf_web_cache_identity_num_mask,
+ { "Number of Masks", "wccp.web_cache_identity.num_mask", FT_UINT32, BASE_DEC, 0x0, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_web_cache_identity_assign_mask,
+ { "Mask Element", "wccp.web_cache_identity.assign_mask", FT_UINT32, BASE_HEX, 0x0, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_web_cache_identity_assign_weight,
+ { "Assignment Weight", "wccp.web_cache_identity.assignment_weight", FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_web_cache_identity_status,
+ { "Status", "wccp.web_cache_identity.status", FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_assignment_key_ip,
+ { "Assignment Key IP Address", "wccp.assignment_key.ip", FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_assignment_key_change_num,
+ { "Assignment Key Change Number", "wccp.assignment_key.change_num", FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_router_view_member_change_num,
+ { "Member Change Number", "wccp.router_view.member_change_num", FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_router_router_num,
+ { "Number of Routers", "wccp.router_view.router_num", FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_router_router_ip,
+ { "Router IP Address", "wccp.router_view.router_ip", FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_wc_view_info_change_num,
+ { "Change Number", "wccp.wc_view.change_num", FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_wc_view_router_num,
+ { "Number of Routers", "wccp.wc_view.router_num", FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_wc_view_ip,
+ { "Router IP Address", "wccp.wc_view.ip", FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_router_assignment_element_ip,
+ { "IP Address", "wccp.router_assignment_element.ip", FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_router_assignment_element_receive_id,
+ { "Receive ID", "wccp.router_assignment_element.receive_id", FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_router_assignment_element_change_num,
+ { "Change Number", "wccp.router_assignment_element.change_num", FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_wccp2_assignment_info_router_num,
+ { "Number of Routers", "wccp.assignment_info.router_num", FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_wccp2_assignment_info_ip,
+ { "Router IP Address", "wccp.assignment_info.ip", FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_router_query_info_ip,
+ { "Router IP Address", "wccp.router_query_info.ip", FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_router_query_info_receive_id,
+ { "Receive ID", "wccp.router_query_info.receive_id", FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_router_query_info_send_to_ip,
+ { "Sent To IP Address", "wccp.router_query_info.send_to_ip", FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_router_query_info_target_ip,
+ { "Target IP Address", "wccp.router_query_info.target_ip", FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_capability_info_type,
+ { "Type", "wccp.capability_info.type", FT_UINT16, BASE_DEC, VALS(capability_type_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_capability_info_length,
+ { "Value Length", "wccp.capability_info.length", FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_capability_info_bytes,
+ { "Value", "wccp.capability_info.bytes", FT_BYTES, BASE_NONE, 0x0, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_capability_info_value,
+ { "Value", "wccp.capability_info.value", FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_capability_forwarding_method_flag_gre,
+ { "GRE-encapsulated", "wccp.capability_info.forwarding_method_flag.gre", FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), WCCP2_FORWARDING_METHOD_GRE,
+ NULL, HFILL }
+ },
+ { &hf_capability_forwarding_method_flag_l2,
+ { "L2 rewrite", "wccp.capability_info.forwarding_method_flag.l2", FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), WCCP2_FORWARDING_METHOD_L2,
+ NULL, HFILL }
+ },
+ { &hf_capability_assignment_method_flag_hash,
+ { "Hash", "wccp.capability_info.assignment_method_flag.hash", FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), WCCP2_ASSIGNMENT_METHOD_HASH,
+ NULL, HFILL }
+ },
+ { &hf_capability_assignment_method_flag_mask,
+ { "Mask", "wccp.capability_info.assignment_method_flag.mask", FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), WCCP2_ASSIGNMENT_METHOD_MASK,
+ NULL, HFILL }
+ },
+ { &hf_capability_return_method_flag_gre,
+ { "GRE-encapsulated", "wccp.capability_info.return_method_flag.gre", FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), WCCP2_PACKET_RETURN_METHOD_GRE,
+ NULL, HFILL }
+ },
+ { &hf_capability_return_method_flag_l2,
+ { "L2 rewrite", "wccp.capability_info.return_method_flag.l2", FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), WCCP2_PACKET_RETURN_METHOD_L2,
+ NULL, HFILL }
+ },
+ { &hf_wccp2_value_element_src_ip,
+ { "Source Address", "wccp.value_element.src_ip", FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_wccp2_value_element_dest_ip,
+ { "Destination Address", "wccp.value_element.dest_ip", FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_wccp2_value_element_src_port,
+ { "Source Port", "wccp.value_element.src_port", FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_wccp2_value_element_dest_port,
+ { "Destination Port", "wccp.value_element.dest_port", FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_wccp2_value_element_web_cache_ip,
+ { "Web Cache Address", "wccp.value_element.web_cache_ip", FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_wccp2_mask_value_set_element_src_ip,
+ { "Source Address Mask", "wccp.mask_value_set_element.src_ip", FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_wccp2_mask_value_set_element_dest_ip,
+ { "Destination Address Mask", "wccp.mask_value_set_element.dest_ip", FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_wccp2_mask_value_set_element_src_port,
+ { "Source Port Mask", "wccp.mask_value_set_element.src_port", FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_wccp2_mask_value_set_element_dest_port,
+ { "Destination Port Mask", "wccp.mask_value_set_element.dest_port", FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_wccp2_mask_value_set_element_num,
+ { "Number of Value Elements", "wccp.mask_value_set_element.num", FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_alt_assignment_info_assignment_type,
+ { "Assignment type", "wccp.alt_assignment_info.assignment_type", FT_UINT16, BASE_DEC, VALS(assignment_type_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_alt_assignment_info_assignment_length,
+ { "Assignment length", "wccp.alt_assignment_info.assignment_length", FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_alt_assignment_info_num_routers,
+ { "Number of routers", "wccp.alt_assignment_info.num_routers", FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_alt_assignment_info_num_elements,
+ { "Number of elements", "wccp.alt_assignment_info.num_elements", FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
};
+
static gint *ett[] = {
&ett_wccp,
&ett_cache_count,
diff --git a/epan/dissectors/packet-websocket.c b/epan/dissectors/packet-websocket.c
new file mode 100644
index 0000000000..2513e2e52a
--- /dev/null
+++ b/epan/dissectors/packet-websocket.c
@@ -0,0 +1,518 @@
+/* packet-websocket.c
+ * Routines for WebSocket dissection
+ * Copyright 2012, Alexis La Goutte <alexis.lagoutte@gmail.com>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+#include <epan/prefs.h>
+#include <epan/expert.h>
+
+/*
+ * The information used comes from:
+ * RFC6455: The WebSocket Protocol
+ * http://www.iana.org/assignments/websocket (last updated 2012-04-12)
+ */
+
+/* Initialize the protocol and registered fields */
+static int proto_websocket = -1;
+static int hf_ws_fin = -1;
+static int hf_ws_reserved = -1;
+static int hf_ws_opcode = -1;
+static int hf_ws_mask = -1;
+static int hf_ws_payload_length = -1;
+static int hf_ws_payload_length_ext_16 = -1;
+static int hf_ws_payload_length_ext_64 = -1;
+static int hf_ws_masking_key = -1;
+static int hf_ws_payload = -1;
+static int hf_ws_payload_unmask = -1;
+static int hf_ws_payload_continue = -1;
+static int hf_ws_payload_text = -1;
+static int hf_ws_payload_text_mask = -1;
+static int hf_ws_payload_text_unmask = -1;
+static int hf_ws_payload_binary = -1;
+static int hf_ws_payload_binary_mask = -1;
+static int hf_ws_payload_binary_unmask = -1;
+static int hf_ws_payload_close = -1;
+static int hf_ws_payload_close_mask = -1;
+static int hf_ws_payload_close_unmask = -1;
+static int hf_ws_payload_close_status_code = -1;
+static int hf_ws_payload_close_reason = -1;
+static int hf_ws_payload_ping = -1;
+static int hf_ws_payload_ping_mask = -1;
+static int hf_ws_payload_ping_unmask = -1;
+static int hf_ws_payload_pong = -1;
+static int hf_ws_payload_pong_mask = -1;
+static int hf_ws_payload_pong_unmask = -1;
+static int hf_ws_payload_unknown = -1;
+
+static gint ett_ws = -1;
+static gint ett_ws_pl = -1;
+static gint ett_ws_mask = -1;
+
+#define WS_CONTINUE 0x0
+#define WS_TEXT 0x1
+#define WS_BINARY 0x2
+#define WS_CLOSE 0x8
+#define WS_PING 0x9
+#define WS_PONG 0xA
+
+static const value_string ws_opcode_vals[] = {
+ { WS_CONTINUE, "Continuation" },
+ { WS_TEXT, "Text" },
+ { WS_BINARY, "Binary" },
+ { WS_CLOSE, "Connection Close" },
+ { WS_PING, "Ping" },
+ { WS_PONG, "Pong" },
+ { 0, NULL}
+};
+
+#define MASK_WS_FIN 0x80
+#define MASK_WS_RSV 0x70
+#define MASK_WS_OPCODE 0x0F
+#define MASK_WS_MASK 0x80
+#define MASK_WS_PAYLOAD_LEN 0x7F
+
+static const value_string ws_close_status_code_vals[] = {
+ { 1000, "Normal Closure" },
+ { 1001, "Going Away" },
+ { 1002, "Protocol error" },
+ { 1003, "Unsupported Data" },
+ { 1004, "---Reserved----" },
+ { 1005, "No Status Rcvd" },
+ { 1006, "Abnormal Closure" },
+ { 1007, "Invalid frame payload data" },
+ { 1008, "Policy Violation" },
+ { 1009, "Message Too Big" },
+ { 1010, "Mandatory Ext." },
+ { 1011, "Internal Server" },
+ { 1015, "TLS handshake" },
+ { 0, NULL}
+};
+
+#define MAX_UNMASKED_LEN (1024 * 64)
+tvbuff_t *
+tvb_unmasked(tvbuff_t *tvb, const int offset, int payload_length, const guint8 *masking_key)
+{
+
+ gchar *data_unmask;
+ tvbuff_t *tvb_unmask = NULL;
+ int i;
+ const guint8 *data_mask;
+ int unmasked_length = payload_length > MAX_UNMASKED_LEN ? MAX_UNMASKED_LEN : payload_length;
+
+ data_unmask = g_malloc(unmasked_length);
+ data_mask = tvb_get_ptr(tvb, offset, unmasked_length);
+ /* Unmasked(XOR) Data... */
+ for(i=0; i < unmasked_length; i++){
+ data_unmask[i] = data_mask[i] ^ masking_key[i%4];
+ }
+
+ tvb_unmask = tvb_new_real_data(data_unmask, unmasked_length, unmasked_length);
+ tvb_set_free_cb(tvb_unmask, g_free);
+ return tvb_unmask;
+}
+
+static int
+dissect_websocket_payload(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ws_tree, guint8 opcode, guint64 payload_length, guint8 mask, const guint8* masking_key)
+{
+ int offset = 0;
+ int payload_length_32bit;
+ proto_item *ti_unmask, *ti;
+ proto_tree *pl_tree, *mask_tree = NULL;
+ tvbuff_t *unmask_tvb = NULL;
+
+ /* Wireshark does not handle packets larger than 2^31-1 bytes. */
+ payload_length_32bit = (int)payload_length;
+ if (payload_length != (guint64)payload_length_32bit) {
+ proto_tree_add_text(ws_tree, tvb, offset, -1, "Payload length %" G_GINT64_MODIFIER "u is too large to dissect",
+ payload_length);
+ return tvb_length(tvb);
+ }
+
+ /* Payload */
+ ti = proto_tree_add_item(ws_tree, hf_ws_payload, tvb, offset, payload_length_32bit, ENC_NA);
+ pl_tree = proto_item_add_subtree(ti, ett_ws_pl);
+ if(mask){
+ unmask_tvb = tvb_unmasked(tvb, offset, payload_length_32bit, masking_key);
+ tvb_set_child_real_data_tvbuff(tvb, unmask_tvb);
+ add_new_data_source(pinfo, unmask_tvb, payload_length_32bit > (int) tvb_length(unmask_tvb) ? "Unmasked Data (truncated)" : "Unmasked Data");
+ ti = proto_tree_add_item(ws_tree, hf_ws_payload_unmask, unmask_tvb, offset, payload_length_32bit, ENC_NA);
+ mask_tree = proto_item_add_subtree(ti, ett_ws_mask);
+ }
+
+ /* Extension Data */
+ /* TODO: Add dissector of Extension (not extension available for the moment...) */
+
+ /* Application Data */
+ switch(opcode){
+
+ case WS_CONTINUE: /* Continue */
+ proto_tree_add_item(pl_tree, hf_ws_payload_continue, tvb, offset, payload_length_32bit, ENC_NA);
+ /* TODO: Add Fragmentation support... */
+ break;
+
+ case WS_TEXT: /* Text */
+ if(mask){
+
+ proto_tree_add_item(pl_tree, hf_ws_payload_text_mask, tvb, offset, payload_length_32bit, ENC_NA);
+ ti_unmask = proto_tree_add_item(mask_tree, hf_ws_payload_text_unmask, unmask_tvb, offset, payload_length_32bit, ENC_UTF_8|ENC_NA);
+ PROTO_ITEM_SET_GENERATED(ti_unmask);
+ ti_unmask = proto_tree_add_item(mask_tree, hf_ws_payload_text, unmask_tvb, offset, payload_length_32bit, ENC_UTF_8|ENC_NA);
+ PROTO_ITEM_SET_HIDDEN(ti_unmask);
+ }else{
+ proto_tree_add_item(pl_tree, hf_ws_payload_text, tvb, offset, payload_length_32bit, ENC_UTF_8|ENC_NA);
+
+ }
+ offset += payload_length_32bit;
+ break;
+
+ case WS_BINARY: /* Binary */
+ if(mask){
+ proto_tree_add_item(pl_tree, hf_ws_payload_binary_mask, tvb, offset, payload_length_32bit, ENC_NA);
+ ti_unmask = proto_tree_add_item(mask_tree, hf_ws_payload_binary_unmask, unmask_tvb, offset, payload_length_32bit, ENC_NA);
+ PROTO_ITEM_SET_GENERATED(ti_unmask);
+ ti_unmask = proto_tree_add_item(mask_tree, hf_ws_payload_binary, unmask_tvb, offset, payload_length_32bit, ENC_NA);
+ PROTO_ITEM_SET_HIDDEN(ti_unmask);
+ }else{
+ proto_tree_add_item(pl_tree, hf_ws_payload_binary, tvb, offset, payload_length_32bit, ENC_NA);
+ }
+ offset += payload_length_32bit;
+ break;
+
+ case WS_CLOSE: /* Close */
+ if(mask){
+ proto_tree_add_item(pl_tree, hf_ws_payload_close_mask, tvb, offset, payload_length_32bit, ENC_NA);
+ ti_unmask = proto_tree_add_item(mask_tree, hf_ws_payload_close_unmask, unmask_tvb, offset, payload_length_32bit, ENC_NA);
+ PROTO_ITEM_SET_GENERATED(ti_unmask);
+ ti_unmask = proto_tree_add_item(mask_tree, hf_ws_payload_close, unmask_tvb, offset, payload_length_32bit, ENC_NA);
+ PROTO_ITEM_SET_HIDDEN(ti_unmask);
+ ti_unmask = proto_tree_add_item(mask_tree, hf_ws_payload_close_status_code, unmask_tvb, offset, 2, ENC_BIG_ENDIAN);
+ PROTO_ITEM_SET_GENERATED(ti_unmask);
+
+ if(payload_length_32bit > 2){
+ ti_unmask = proto_tree_add_item(mask_tree, hf_ws_payload_close_reason, unmask_tvb, offset+2, payload_length_32bit-2, ENC_ASCII|ENC_NA);
+ PROTO_ITEM_SET_GENERATED(ti_unmask);
+ }
+ }else{
+ proto_tree_add_item(pl_tree, hf_ws_payload_close, tvb, offset, payload_length_32bit, ENC_NA);
+ proto_tree_add_item(pl_tree, hf_ws_payload_close_status_code, tvb, offset, 2, ENC_BIG_ENDIAN);
+ if(payload_length_32bit > 2){
+ proto_tree_add_item(pl_tree, hf_ws_payload_close_reason, tvb, offset+2, payload_length_32bit-2, ENC_ASCII|ENC_NA);
+ }
+ }
+ offset += payload_length_32bit;
+ break;
+
+ case WS_PING: /* Ping */
+ if(mask){
+ proto_tree_add_item(pl_tree, hf_ws_payload_ping_mask, tvb, offset, payload_length_32bit, ENC_NA);
+ ti_unmask = proto_tree_add_item(mask_tree, hf_ws_payload_ping_unmask, unmask_tvb, offset, payload_length_32bit, ENC_NA);
+ PROTO_ITEM_SET_GENERATED(ti_unmask);
+ ti_unmask = proto_tree_add_item(mask_tree, hf_ws_payload_ping, unmask_tvb, offset, payload_length_32bit, ENC_NA);
+ PROTO_ITEM_SET_HIDDEN(ti_unmask);
+ }else{
+ proto_tree_add_item(pl_tree, hf_ws_payload_ping, tvb, offset, payload_length_32bit, ENC_NA);
+ }
+ offset += payload_length_32bit;
+ break;
+
+ case WS_PONG: /* Pong */
+ if(mask){
+ proto_tree_add_item(pl_tree, hf_ws_payload_pong_mask, tvb, offset, payload_length_32bit, ENC_NA);
+ ti_unmask = proto_tree_add_item(mask_tree, hf_ws_payload_pong_unmask, unmask_tvb, offset, payload_length_32bit, ENC_NA);
+ PROTO_ITEM_SET_GENERATED(ti_unmask);
+ ti_unmask = proto_tree_add_item(mask_tree, hf_ws_payload_pong, unmask_tvb, offset, payload_length_32bit, ENC_NA);
+ PROTO_ITEM_SET_HIDDEN(ti_unmask);
+ }else{
+ proto_tree_add_item(pl_tree, hf_ws_payload_pong, tvb, offset, payload_length_32bit, ENC_NA);
+ }
+ offset += payload_length_32bit;
+ break;
+
+ default: /* Unknown */
+ ti = proto_tree_add_item(pl_tree, hf_ws_payload_unknown, tvb, offset, payload_length_32bit, ENC_NA);
+ expert_add_info_format(pinfo, ti, PI_UNDECODED, PI_NOTE, "Dissector for Websocket Opcode (%d)"
+ " code not implemented, Contact Wireshark developers"
+ " if you want this supported", opcode);
+ break;
+ }
+ return offset;
+}
+static int
+dissect_websocket(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+
+ proto_item *ti, *ti_len;
+ proto_tree *ws_tree = NULL;
+ int offset = 0;
+ guint8 fin, opcode, mask;
+ const guint8 *masking_key = NULL;
+ guint64 payload_length;
+ tvbuff_t *tvb_payload = NULL;
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "WebSocket");
+ col_set_str(pinfo->cinfo, COL_INFO, "WebSocket");
+ if (tree) {
+
+ ti = proto_tree_add_item(tree, proto_websocket, tvb, 0, -1, ENC_NA);
+ ws_tree = proto_item_add_subtree(ti, ett_ws);
+
+ }
+ /* Flags */
+ proto_tree_add_item(ws_tree, hf_ws_fin, tvb, offset, 1, ENC_NA);
+ fin = (tvb_get_guint8(tvb, offset) & MASK_WS_FIN) >> 4;
+ proto_tree_add_item(ws_tree, hf_ws_reserved, tvb, offset, 1, ENC_NA);
+
+ /* Opcode */
+ proto_tree_add_item(ws_tree, hf_ws_opcode, tvb, offset, 1, ENC_NA);
+ opcode = tvb_get_guint8(tvb, offset) & MASK_WS_OPCODE;
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s", val_to_str_const(opcode, ws_opcode_vals, "Unknown Opcode"));
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s", fin ? "[FIN]" : "");
+ offset +=1;
+
+ /* Mask */
+ proto_tree_add_item(ws_tree, hf_ws_mask, tvb, offset, 1, ENC_NA);
+ mask = (tvb_get_guint8(tvb, offset) & MASK_WS_MASK) >> 4;
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s", mask ? "[MASKED]" : "");
+
+ /* (Extended) Payload Length */
+ ti_len = proto_tree_add_item(ws_tree, hf_ws_payload_length, tvb, offset, 1, ENC_NA);
+ payload_length = (guint64)tvb_get_guint8(tvb, offset) & MASK_WS_PAYLOAD_LEN;
+ offset +=1;
+ switch(payload_length){
+ case 126:
+ proto_item_append_text(ti_len, " Extended Payload Length (16 bits)");
+ proto_tree_add_item(ws_tree, hf_ws_payload_length_ext_16, tvb, offset, 2, ENC_BIG_ENDIAN);
+ payload_length = (guint64)tvb_get_ntohs(tvb, offset);
+ offset += 2;
+ break;
+ case 127:
+ proto_item_append_text(ti_len, " Extended Payload Length (64 bits)");
+ proto_tree_add_item(ws_tree, hf_ws_payload_length_ext_64, tvb, offset, 8, ENC_BIG_ENDIAN);
+ payload_length = tvb_get_ntoh64(tvb, offset);
+ offset += 8;
+ break;
+ default:
+ break;
+ }
+
+ /* Masking-key */
+ if(mask){
+ proto_tree_add_item(ws_tree, hf_ws_masking_key, tvb, offset, 4, ENC_NA);
+ masking_key = tvb_get_ptr(tvb, offset, 4);
+ offset += 4;
+ }
+
+ tvb_payload = tvb_new_subset_remaining(tvb, offset);
+ offset += dissect_websocket_payload(tvb_payload, pinfo, ws_tree, opcode, payload_length, mask, masking_key);
+
+ return offset;
+}
+
+
+void
+proto_register_websocket(void)
+{
+
+ static hf_register_info hf[] = {
+ { &hf_ws_fin,
+ { "Fin", "websocket.fin",
+ FT_BOOLEAN, 8, NULL, MASK_WS_FIN,
+ "Indicates that this is the final fragment in a message", HFILL }
+ },
+ { &hf_ws_reserved,
+ { "Reserved", "websocket.rsv",
+ FT_UINT8, BASE_HEX, NULL, MASK_WS_RSV,
+ "Must be zero", HFILL }
+ },
+ { &hf_ws_opcode,
+ { "Opcode", "websocket.opcode",
+ FT_UINT8, BASE_DEC, VALS(ws_opcode_vals), MASK_WS_OPCODE,
+ "Defines the interpretation of the Payload data", HFILL }
+ },
+ { &hf_ws_mask,
+ { "Mask", "websocket.mask",
+ FT_BOOLEAN, 8, NULL, MASK_WS_MASK,
+ "Defines whether the Payload data is masked", HFILL }
+ },
+ { &hf_ws_payload_length,
+ { "Payload length", "websocket.payload_length",
+ FT_UINT8, BASE_DEC, NULL, MASK_WS_PAYLOAD_LEN,
+ "The length of the Payload data", HFILL }
+ },
+ { &hf_ws_payload_length_ext_16,
+ { "Extended Payload length (16 bits)", "websocket.payload_length_ext_16",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "The length (16 bits) of the Payload data", HFILL }
+ },
+ { &hf_ws_payload_length_ext_64,
+ { "Extended Payload length (16 bits)", "websocket.payload_length_ext_64",
+ FT_UINT64, BASE_DEC, NULL, 0x0,
+ "The length (64 bits) of the Payload data", HFILL }
+ },
+ { &hf_ws_masking_key,
+ { "Masking-Key", "websocket.masking_key",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "All frames sent from the client to the server are masked by a 32-bit value that is contained within the frame", HFILL }
+ },
+ { &hf_ws_payload,
+ { "Payload", "websocket.payload",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_ws_payload_unmask,
+ { "Unmask Payload", "websocket.payload.unmask",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_ws_payload_continue,
+ { "Continue", "websocket.payload.continue",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_ws_payload_text,
+ { "Text", "websocket.payload.text",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_ws_payload_text_mask,
+ { "Text", "websocket.payload.text_mask",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_ws_payload_text_unmask,
+ { "Text unmask", "websocket.payload.text_unmask",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_ws_payload_binary,
+ { "Binary", "websocket.payload.binary",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_ws_payload_binary_mask,
+ { "Binary", "websocket.payload.binary_mask",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_ws_payload_binary_unmask,
+ { "Binary", "websocket.payload.binary_unmask",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_ws_payload_close,
+ { "Close", "websocket.payload.close",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_ws_payload_close_mask,
+ { "Close", "websocket.payload.close_mask",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_ws_payload_close_unmask,
+ { "Unmask Close", "websocket.payload.close_unmask",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_ws_payload_close_status_code,
+ { "Close", "websocket.payload.close.status_code",
+ FT_UINT16, BASE_DEC, VALS(ws_close_status_code_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_ws_payload_close_reason,
+ { "Reason", "websocket.payload.close.reason",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_ws_payload_ping,
+ { "Ping", "websocket.payload.ping",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_ws_payload_ping_mask,
+ { "Ping", "websocket.payload.ping_mask",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_ws_payload_ping_unmask,
+ { "Ping", "websocket.payload.ping_unmask",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_ws_payload_pong,
+ { "Pong", "websocket.payload.pong",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_ws_payload_pong_mask,
+ { "Pong", "websocket.payload.pong_mask",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_ws_payload_pong_unmask,
+ { "Pong", "websocket.payload.pong_unmask",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_ws_payload_unknown,
+ { "Unknown", "websocket.payload.unknown",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ };
+
+
+ static gint *ett[] = {
+ &ett_ws,
+ &ett_ws_pl,
+ &ett_ws_mask
+ };
+
+ proto_websocket = proto_register_protocol("WebSocket",
+ "WebSocket", "websocket");
+
+ proto_register_field_array(proto_websocket, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ new_register_dissector("websocket", dissect_websocket, proto_websocket);
+}
+
+
+/*
+ * Editor modelines - http://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 2
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vi: set shiftwidth=2 tabstop=8 expandtab:
+ * :indentSize=2:tabSize=8:noTabs=true:
+ */
diff --git a/epan/dissectors/packet-windows-common.c b/epan/dissectors/packet-windows-common.c
index 71986e821c..35a78c0aa0 100644
--- a/epan/dissectors/packet-windows-common.c
+++ b/epan/dissectors/packet-windows-common.c
@@ -1439,7 +1439,7 @@ static const sid_strings well_known_sids[] = {
{NULL, NULL}
};
-const char*
+static const char*
match_wkwn_sids(const char* sid) {
int i = 0;
while (well_known_sids[i].name) {
@@ -2356,12 +2356,13 @@ dissect_nt_acl(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *parent_tree, guint8 *drep, const char *name,
struct access_mask_info *ami)
{
- proto_item *item = NULL;
- proto_tree *tree = NULL;
+ proto_item *volatile item = NULL;
+ proto_tree *volatile tree = NULL;
int old_offset = offset;
int pre_ace_offset;
guint16 revision;
- guint32 num_aces;
+ guint32 volatile num_aces;
+ gboolean missing_data = FALSE;
if(parent_tree){
item = proto_tree_add_text(parent_tree, tvb, offset, -1,
@@ -2407,15 +2408,25 @@ dissect_nt_acl(tvbuff_t *tvb, int offset, packet_info *pinfo,
tvb, offset, 4, num_aces);
offset += 4;
- while(num_aces--){
+ while(num_aces-- && !missing_data){
pre_ace_offset = offset;
- offset = dissect_nt_v2_ace(tvb, offset, pinfo, tree, drep, ami);
- if (pre_ace_offset == offset) {
+
+ TRY {
+ offset = dissect_nt_v2_ace(tvb, offset, pinfo, tree, drep, ami);
+ if (pre_ace_offset == offset) {
/*
* Bogus ACE, with a length < 4.
*/
break;
+ }
+ }
+
+ CATCH2(BoundsError, ReportedBoundsError) {
+ proto_tree_add_text(tree, tvb, offset, 0, "ACE Extends beyond end of captured or reassembled buffer");
+ missing_data = TRUE;
}
+
+ ENDTRY;
}
}
@@ -2591,11 +2602,12 @@ dissect_nt_sec_desc(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree = NULL;
guint16 revision;
int start_offset = offset;
- int item_offset, end_offset;
+ int volatile end_offset;
+ int item_offset;
guint32 owner_sid_offset;
- guint32 group_sid_offset;
- guint32 sacl_offset;
- guint32 dacl_offset;
+ guint32 volatile group_sid_offset;
+ guint32 volatile sacl_offset;
+ guint32 volatile dacl_offset;
item = proto_tree_add_text(parent_tree, tvb, offset, -1,
"NT Security Descriptor");
@@ -2663,9 +2675,17 @@ dissect_nt_sec_desc(tvbuff_t *tvb, int offset, packet_info *pinfo,
*/
THROW(ReportedBoundsError);
}
- offset = dissect_nt_sid(tvb, item_offset, tree, "Owner", NULL, -1);
- if (offset > end_offset)
- end_offset = offset;
+ TRY{
+ offset = dissect_nt_sid(tvb, item_offset, tree, "Owner", NULL, -1);
+ if (offset > end_offset)
+ end_offset = offset;
+ }
+
+ CATCH2(BoundsError, ReportedBoundsError) {
+ proto_tree_add_text(tree, tvb, item_offset, 0, "Owner SID beyond end of captured or reassembled buffer");
+ }
+
+ ENDTRY;
}
/*group SID*/
@@ -2677,9 +2697,17 @@ dissect_nt_sec_desc(tvbuff_t *tvb, int offset, packet_info *pinfo,
*/
THROW(ReportedBoundsError);
}
- offset = dissect_nt_sid(tvb, item_offset, tree, "Group", NULL, -1);
- if (offset > end_offset)
- end_offset = offset;
+ TRY {
+ offset = dissect_nt_sid(tvb, item_offset, tree, "Group", NULL, -1);
+ if (offset > end_offset)
+ end_offset = offset;
+ }
+
+ CATCH2(BoundsError, ReportedBoundsError) {
+ proto_tree_add_text(tree, tvb, item_offset, 0, "Group SID beyond end of captured or reassembled buffer");
+ }
+
+ ENDTRY;
}
/* sacl */
@@ -2711,6 +2739,7 @@ dissect_nt_sec_desc(tvbuff_t *tvb, int offset, packet_info *pinfo,
if (offset > end_offset)
end_offset = offset;
}
+
break;
default:
@@ -2720,16 +2749,17 @@ dissect_nt_sec_desc(tvbuff_t *tvb, int offset, packet_info *pinfo,
if (len_supplied) {
/* Make sure the length isn't too large (so that we get an
overflow) */
- tvb_ensure_bytes_exist(tvb, start_offset, len);
+ /* tvb_ensure_bytes_exist(tvb, start_offset, len);*/
} else {
/* The length of the security descriptor is the difference
between the starting offset and the offset past the last
item in the descriptor. */
len = end_offset - start_offset;
}
+ len = end_offset - start_offset;
proto_item_set_len(item, len);
- return offset+len;
+ return offset;
}
/*
diff --git a/epan/dissectors/packet-windows-common.h b/epan/dissectors/packet-windows-common.h
index 32e5781ee1..be8699cf8f 100644
--- a/epan/dissectors/packet-windows-common.h
+++ b/epan/dissectors/packet-windows-common.h
@@ -209,8 +209,8 @@ int dissect_nt_64bit_time(tvbuff_t *tvb, proto_tree *tree, int offset, int hf_da
*/
typedef struct _sid_strings {
- char* sid;
- char* name;
+ const char* sid;
+ const char* name;
} sid_strings;
/* Dissect a NT SID. Label it with 'name' and return a string version
diff --git a/epan/dissectors/packet-wlccp.c b/epan/dissectors/packet-wlccp.c
index 2022878abb..7e27c0dfc8 100644
--- a/epan/dissectors/packet-wlccp.c
+++ b/epan/dissectors/packet-wlccp.c
@@ -63,8 +63,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
@@ -2615,7 +2613,7 @@ static guint dissect_wlccp_rrm_tlv(proto_tree *_tree, tvbuff_t *_tvb, guint _off
proto_tree_add_item(_80211_capabilities_tree, hf_80211_cap_ibss,
_tvb, _offset, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(_80211_capabilities_tree, hf_80211_cap_ess,
- _tvb, _offset, 2, ENC_BIG_ENDIAN);;
+ _tvb, _offset, 2, ENC_BIG_ENDIAN);
/* proto_tree_add_item(_tree, hf_wlccp_capabilities, _tvb, _offset, 2, ENC_BIG_ENDIAN); */
_offset += 2;
diff --git a/epan/dissectors/packet-wol.c b/epan/dissectors/packet-wol.c
index 68a16b7671..6fd6fafe98 100644
--- a/epan/dissectors/packet-wol.c
+++ b/epan/dissectors/packet-wol.c
@@ -58,13 +58,10 @@
# include "config.h"
#endif
-#include <stdio.h>
-#include <stdlib.h>
-
#include <glib.h>
-#include <epan/addr_resolv.h>
#include <epan/packet.h>
+#include <epan/addr_resolv.h>
#include <epan/etypes.h>
/* IF PROTO exposes code to other dissectors, then it must be exported
@@ -88,10 +85,10 @@ static gint ett_wol_macblock = -1;
static int
dissect_wol(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- guint len;
- gint offset;
- guint8 sync[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
- guint8 *mac;
+ guint len;
+ gint offset;
+ guint8 sync[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
+ guint8 *mac;
const guint8 *passwd;
/* Set up structures needed to add the protocol subtree and manage it */
@@ -352,11 +349,10 @@ proto_reg_handoff_wol(void)
*
* Local variables:
* c-basic-offset: 4
- * tab-width: 4
+ * tab-width: 8
* indent-tabs-mode: nil
* End:
*
- * vi: set shiftwidth=4 tabstop=4 expandtab:
- * :indentSize=4:tabSize=4:noTabs=true:
+ * vi: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
*/
-
diff --git a/epan/dissectors/packet-wow.c b/epan/dissectors/packet-wow.c
index 3751c4765f..0e0ad5b60b 100644
--- a/epan/dissectors/packet-wow.c
+++ b/epan/dissectors/packet-wow.c
@@ -32,8 +32,6 @@
# include "config.h"
#endif
-#include <stdlib.h>
-
#include <glib.h>
#include <epan/packet.h>
diff --git a/epan/dissectors/packet-wps.c b/epan/dissectors/packet-wps.c
index 8e19992d8c..b8108e4e1d 100644
--- a/epan/dissectors/packet-wps.c
+++ b/epan/dissectors/packet-wps.c
@@ -1568,7 +1568,7 @@ dissect_wps_tlvs(proto_tree *eap_tree, tvbuff_t *tvb, int offset,
guint32 value = -1;
void* valuep = NULL;
header_field_info* hf_info = NULL;
- char* fmt = NULL;
+ const char* fmt = NULL;
proto_item_set_text(tlv_item, "%s",
val_to_str(tlv_type, eapwps_tlv_types, "Unknown (0x%04x)"));
diff --git a/epan/dissectors/packet-wreth.c b/epan/dissectors/packet-wreth.c
new file mode 100644
index 0000000000..b899f9c724
--- /dev/null
+++ b/epan/dissectors/packet-wreth.c
@@ -0,0 +1,2017 @@
+/* packet-wreth.c
+ * Functions for the WSE Remote Ethernet Dissector
+ *
+ * $Id$
+ *
+ * Dissector - WSE RemoteEthernet
+ * By Clement Marrast <clement.marrast@molex.com>
+ * Copyright 2012 Clement Marrast
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <http://www.gnu.org/licenses/>
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <epan/packet.h>
+
+#define WRETH_PORT 0xAAAA
+
+static void dissect_wreth(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
+static gint WrethIdentPacket(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo, proto_tree * pWrethTree);
+static gint WrethConnectPacket(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo, proto_tree * pWrethTree);
+static gint WrethDisconnectPacket(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo, proto_tree * pWrethTree);
+static gint WrethBlinkyPacket(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo, proto_tree * pWrethTree);
+static gint WrethGetValuePacket(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo, proto_tree * pWrethTree);
+static gint WrethSetValuePacket(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo, proto_tree * pWrethTree);
+static gint WrethBoostPacket(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo, proto_tree * pWrethTree);
+static gint WrethAckPacket(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo, proto_tree * pWrethTree);
+static gint WrethNackPacket(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo, proto_tree * pWrethTree);
+static gint WrethMailPacket(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo, proto_tree * pWrethTree);
+static gint WrethMailDissection(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo, proto_tree * pWrethTree, guint8 fragmented);
+static gint WrethCodefMasterInfoDissection(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo, proto_tree * pWrethMailboxTree);
+static gint WrethCodefEquipmentInfoDissection(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo, proto_tree * pWrethMailboxTree);
+
+/* Remote ethernet sub packet type */
+#define WSE_RETH_SUBTYPE 0x0200
+
+/* Remote ethernet function code */
+#define WRETH_IDENT 1
+#define WRETH_CONNECT 2
+#define WRETH_ACK 3
+#define WRETH_NACK 4
+#define WRETH_DISCONNECT 5
+#define WRETH_MAIL 6
+#define WRETH_BLINKY 7
+#define WRETH_GET_VALUE 8
+#define WRETH_SET_VALUE 9
+#define WRETH_BOOST 10
+
+/* Remote ethernet error code */
+#define WRETH_BAD_FUNCTION_CODE 1
+#define WRETH_ALREADY_CONNECTED 2
+#define WRETH_INVALID_PROTOCOL_VERSION 3
+#define WRETH_NOT_CONNECTED 4
+#define WRETH_INVALID_MAC_ADDRESS 5
+#define WRETH_INVALID_FRAME_SIZE 6
+#define WRETH_NO_MEMORY_AVAILABLE 7
+#define WRETH_BAD_PARAMETER 8
+#define WRETH_TASK_REGISTERED 9
+
+/* Initialize the protocol and registered fields */
+static gint wreth_proto = -1;
+
+/* static gint wreth_mail_proto = -1; */
+static int hf_Wreth_Subtype = -1;
+static int hf_Wreth_Size = -1;
+static int hf_Wreth_FunctionCode = -1;
+static int hf_Wreth_FrameId = -1;
+static int hf_Wreth_ErrorCode = -1;
+static int hf_Wreth_Fragmented = -1;
+static int hf_Wreth_Retry = -1;
+static int hf_Wreth_IdentificationBiosVersion = -1;
+static int hf_Wreth_IdentificationBoardNumber = -1;
+static int hf_Wreth_IdentificationProtocolVersion = -1;
+static int hf_Wreth_IdentificationBoardId = -1;
+static int hf_Wreth_IdentificationState = -1;
+static int hf_Wreth_IdentificationMacAddr = -1;
+static int hf_Wreth_ConnectProtocolVersion = -1;
+static int hf_Wreth_ConnectTimeout = -1;
+static int hf_Wreth_BlinkyPeriod = -1;
+static int hf_Wreth_GetValueVal = -1;
+static int hf_Wreth_SetValueVal = -1;
+static int hf_Wreth_BoostValue = -1;
+static int hf_Wreth_MailDestTic = -1;
+static int hf_Wreth_MailReserved = -1;
+static int hf_Wreth_Mail_Codef = -1;
+static int hf_Wreth_Mail_Status = -1;
+static int hf_Wreth_Mail_TicUser_Root = -1;
+static int hf_Wreth_Mail_PidUser = -1;
+static int hf_Wreth_Mail_Mode = -1;
+static int hf_Wreth_Mail_Time = -1;
+static int hf_Wreth_Mail_Stop = -1;
+static int hf_Wreth_Mail_Nfonc = -1;
+static int hf_Wreth_Mail_Ncard = -1;
+static int hf_Wreth_Mail_Nchan = -1;
+static int hf_Wreth_Mail_Nes = -1;
+static int hf_Wreth_Mail_Nb = -1;
+static int hf_Wreth_Mail_TypVar = -1;
+static int hf_Wreth_Mail_Adr = -1;
+static int hf_Wreth_Mail_TicUser_DispCyc = -1;
+static int hf_Wreth_Mail_Nb_Max_Size_Mail = -1;
+static int hf_Wreth_Mail_User_ThreadID = -1;
+static int hf_Wreth_Mail_DispCyc_Version = -1;
+static int hf_Wreth_Mail_DifUserParam = -1;
+static int hf_Wreth_Mail_Filler = -1;
+/* static int hf_Wreth_Mail_Data = -1; */
+static int hf_Wreth_Mail_Mastinf_Version = -1;
+static int hf_Wreth_Mail_Mastinf_Release = -1;
+static int hf_Wreth_Mail_Mastinf_Protocol = -1;
+static int hf_Wreth_Mail_Mastinf_CyclicFlux = -1;
+static int hf_Wreth_Mail_Mastinf_szProtocolName = -1;
+static int hf_Wreth_Mail_Mastinf_MaxTypeEquipment = -1;
+static int hf_Wreth_Mail_Mastinf_MinEquipmentNumber = -1;
+static int hf_Wreth_Mail_Mastinf_MaxEquipmentNumber = -1;
+static int hf_Wreth_Mail_Equinf_Version = -1;
+static int hf_Wreth_Mail_Equinf_Release = -1;
+static int hf_Wreth_Mail_Equinf_Network = -1;
+static int hf_Wreth_Mail_Equinf_Protocol = -1;
+static int hf_Wreth_Mail_Equinf_Messaging = -1;
+static int hf_Wreth_Mail_Equinf_Equipment = -1;
+static int hf_Wreth_Mail_Equinf_Flux = -1;
+static int hf_Wreth_Mail_Equinf_IncWord = -1;
+static int hf_Wreth_Mail_Equinf_IncDWord = -1;
+static int hf_Wreth_Mail_Equinf_IncFWord = -1;
+static int hf_Wreth_Mail_Mastinf_DllItemName = -1;
+static int hf_Wreth_Mail_Mastinf_szEquipmentName = -1;
+static int hf_Wreth_Mail_Equinf_MaxWriteBit = -1;
+static int hf_Wreth_Mail_Equinf_MaxReadBit = -1;
+static int hf_Wreth_Mail_Equinf_BreakBit = -1;
+static int hf_Wreth_Mail_Equinf_MaxWriteIBit = -1;
+static int hf_Wreth_Mail_Equinf_MaxReadIBit = -1;
+static int hf_Wreth_Mail_Equinf_MaxWriteQBit = -1;
+static int hf_Wreth_Mail_Equinf_MaxReadQBit = -1;
+static int hf_Wreth_Mail_Equinf_BreakQBit = -1;
+static int hf_Wreth_Mail_Equinf_MaxWriteByte = -1;
+static int hf_Wreth_Mail_Equinf_MaxReadByte = -1;
+static int hf_Wreth_Mail_Equinf_BreakByte = -1;
+static int hf_Wreth_Mail_Equinf_MaxWriteIByte = -1;
+static int hf_Wreth_Mail_Equinf_MaxReadIByte = -1;
+static int hf_Wreth_Mail_Equinf_BreakIByte = -1;
+static int hf_Wreth_Mail_Equinf_MaxWriteQByte = -1;
+static int hf_Wreth_Mail_Equinf_MaxReadQByte = -1;
+static int hf_Wreth_Mail_Equinf_BreakQByte = -1;
+static int hf_Wreth_Mail_Equinf_MaxWriteWord = -1;
+static int hf_Wreth_Mail_Equinf_MaxReadWord = -1;
+static int hf_Wreth_Mail_Equinf_BreakWord = -1;
+static int hf_Wreth_Mail_Equinf_MaxWriteIWord = -1;
+static int hf_Wreth_Mail_Equinf_MaxReadIWord = -1;
+static int hf_Wreth_Mail_Equinf_BreakIWord = -1;
+static int hf_Wreth_Mail_Equinf_MaxWriteQWord = -1;
+static int hf_Wreth_Mail_Equinf_MaxReadQWord = -1;
+static int hf_Wreth_Mail_Equinf_BreakQWord = -1;
+static int hf_Wreth_Mail_Equinf_MaxWriteDWord = -1;
+static int hf_Wreth_Mail_Equinf_MaxReadDWord = -1;
+static int hf_Wreth_Mail_Equinf_BreakDWord = -1;
+static int hf_Wreth_Mail_Equinf_MaxWriteFWord = -1;
+static int hf_Wreth_Mail_Equinf_MaxReadFWord = -1;
+static int hf_Wreth_Mail_Equinf_BreakFWord = -1;
+static int hf_Wreth_Mail_Equinf_ReadFactorWord = -1;
+static int hf_Wreth_Mail_Equinf_ReadFactorIWord = -1;
+static int hf_Wreth_Mail_Equinf_ReadFactorQWord = -1;
+static int hf_Wreth_Mail_Equinf_ReadFactorDWord = -1;
+static int hf_Wreth_Mail_Equinf_ReadFactorFWord = -1;
+static int hf_Wreth_Mail_Equinf_WriteFactorWord = -1;
+static int hf_Wreth_Mail_Equinf_WriteFactorIWord = -1;
+static int hf_Wreth_Mail_Equinf_WriteFactorQWord = -1;
+static int hf_Wreth_Mail_Equinf_WriteFactorDWord = -1;
+static int hf_Wreth_Mail_Equinf_WriteFactorFWord = -1;
+static int hf_Wreth_Mail_Equinf_DataFormat = -1;
+static int hf_Wreth_Mail_Equinf_BreakIBit = -1;
+
+/* Initialize the subtree pointers */
+static gint ett_wreth = -1;
+
+/* Note: vals are stored as unsigned 32 bit quantities */
+static const value_string tabStatus[] = {
+ { 0, "stat_ok" },
+ { 1, "stat_err_fonc" },
+ { 2, "stat_err_addr" },
+ { 3, "stat_bad_frame" },
+ { 4, "stat_lock_data" },
+ { 10, "STAT_QUEUE_OVERFLOW" },
+
+ { 32, "stat_par" },
+ { 33, "statjb_timeout" },
+ { 34, "statjb_crc" },
+ { 35, "stat_cyc_inc" },
+ { 36, "stat_escl_inconnu" },
+
+ { 40, "STAT_DIF_MAX_THREAD" },
+ { 41, "stat_dif_full" },
+ { 42, "stat_dif_empty" },
+ { 43, "STAT_NES_UNKNOWN" },
+ { 45, "stat_no_soft" },
+ { 46, "stat_conf" },
+ { 47, "stat_no_board" },
+ { 48, "stat_timeout_cts" },
+ { 49, "stat_timeout_wait" },
+ { 50, "stat_fill" },
+ { 51, "stat_sys" },
+ { 52, "stat_bug" },
+ { 53, "stat_sync" },
+ { 54, "stat_nopolling" },
+ { 55, "stat_badintpol" },
+ { 56, "stat_answer" },
+ { 57, "stat_no_statment" },
+ { 58, "stat_net_no_ready" },
+ { 59, "stat_key" },
+
+ { 60, "stat_no_retmail" },
+ { 61, "stat_no_dsr_gt4000" },
+ { 62, "stat_no_cts_gt4000" },
+ { 63, "stat_timeout_gt4000" },
+ { 64, "stat_bcc_gt4000" },
+ { 65, "STAT_NOT_CONNECT" },
+ { 66, "STAT_RESSOURCE" },
+ { 67, "STAT_ERR_PDU" },
+ { 68, "STAT_OBJECT_NON_EXISTENT" },
+ { 69, "STAT_TYPE_CONFLICT" },
+ { 70, "STAT_ABORT_USER" },
+ { 71, "STAT_ABORT_FMS" },
+ { 72, "STAT_ABORT_LLI" },
+ { 73, "STAT_ABORT_LAYER2" },
+ { 74, "STAT_MAX_PDU_SIZE" },
+ { 75, "STAT_FEATURE_NOT_SUPPORTED" },
+ { 76, "STAT_VERSION_INCOMPATIBLE" },
+ { 77, "STAT_USER_INITIATE_DENIED" },
+ { 78, "STAT_PASSWORD_ERROR" },
+ { 79, "STAT_PROFILE_INCOMPATIBLE" },
+ { 80, "STAT_ABORT_LLI_CONTEXT" },
+ { 81, "STAT_ABORT_LLI_ABT_RC2" },
+ { 82, "STAT_ABORT_LLI_ABT_RC3" },
+ { 83, "STAT_ERR_CLASS_VFD_STATE" },
+ { 84, "STAT_ERR_CLASS_APPLICATION_REF" },
+ { 85, "STAT_ERR_CLASS_DEFINITION" },
+ { 86, "STAT_ERR_CLASS_RESSOURCE" },
+ { 87, "STAT_ERR_CLASS_SERVICE" },
+ { 88, "STAT_ERR_CLASS_ACCESS" },
+ { 89, "STAT_ERR_CLASS_OD" },
+ { 90, "STAT_ERR_CLASS_OTHER" },
+ { 91, "STAT_REJECT_PDU" },
+ { 92, "STAT_ERR_HARDWARE" },
+ { 93, "STAT_DRIVER_ACCESS" },
+ { 94, "STAT_DRIVER_BAD_VERSION" },
+ { 95, "STAT_FILL_BIG_MAIL" },
+ { 96, "STAT_NO_TASK_VERSION" },
+ { 97, "STAT_DLL_LOCKED" },
+ { 98, "STAT_BOARD_LOCKED" },
+ { 99, "STAT_MODEIO_LOCKED" },
+
+ /*---- RESERVED STATUS FOR USER KIT4000 ----*/
+ { 100, "STAT_KIT_START" },
+ /* ..... */
+ { 127, "STAT_KIT_END" },
+ /*------------------------------------------*/
+ { 128, "STAT_ERR_NO_REMOTE_CONNECTION" },
+ { 129, "STAT_CONFIG_OK" },
+ { 130, "STAT_CONFIG_NOK" },
+
+ { 131, "STAT_DNS_PENDING" },
+ { 132, "STAT_DNS_ERROR" },
+ { 133, "STAT_OVERTIME" },
+
+ { 134, "STAT_FRAG_WRITE" },
+ { 135, "STAT_FRAG_READ" },
+
+ { 136, "STAT_API_ACCESS" },
+ { 137, "STAT_QUEUE_EMPTY" },
+ { 138, "STAT_QUEUE_FULL" },
+
+ { 254, "STAT_DEV_INIT" },
+ { 255, "STAT_NA" },
+ { -11, "index not updated" },
+ { -10, "stat_handshake" },
+ { -9, "stat_event_data" },
+ { -8, "stat_timeout_ic_read" },
+ { -7, "stat_timeout_read" },
+ { -6, "stat_cyc_stopped" },
+ { -5, "stat_dif_not_ready" },
+ { -4, "stat_unchanged" },
+ { -3, "stat_nes_broadcast" },
+ { -2, "Unknown Status" },
+ { -1, "stat_writedif_ok" },
+ { 0, NULL }
+};
+static value_string_ext tabStatus_ext = VALUE_STRING_EXT_INIT(tabStatus);
+
+static const value_string tabCodef[] = {
+ /* Code for monitor */
+ { 0x0000, "TIC_INVALID_ROOT" },
+ { 0x0002, "tic_monitor" },
+
+ /*Loader*/
+ { 0x0003, "COD_LOAD_TASK" },
+ { 0x0004, "COD_LOAD_TASK" },
+
+ { 0x00ff, "TIC_TASK_NON_INIT" }, /* 255 */
+
+ /* Code for monitor */
+ { 0x0106, "COD_MON_INFO" },
+ { 0x0109, "COD_GETTIC" },
+ { 0x0119, "COD_MON_SETTIME" },
+ { 0x0126, "COD_MON_SIZEMAIL" },
+ { 0x0127, "COD_MON_SETSYNCHRO" },
+ { 0x0128, "COD_MON_GETSYNCHRO" },
+
+ { 0x012A, "COD_MON_FLAG_DEBUG" },
+ { 0x012B, "COD_MON_SETSCADA_PT" },
+ { 0x012C, "COD_MON_GETSCADA_PT" },
+
+ { 0x0134, "COD_MON_SETGENVAR" },
+ { 0x0135, "COD_MON_GETGENVAR" },
+ { 0x0200, "COD_MON_READFLASHGT" },
+ { 0x0206, "COD_MON_SETCOMSPEED" },
+ { 0x020c, "COD_MON_TESTCARDTYPE" },
+
+ /*Loader*/
+ { 0x0400, "COD_LOAD_TASK" },
+ { 0x0600, "COD_RELOAD_TASK" },
+
+ /* Code for master function */
+ { 0x1000, "cod_initmasterline" },
+ { 0x1001, "cod_loadmasterconf" },
+ { 0x1002, "cod_masterinfo" },
+ { 0x1003, "cod_readpackbit" },
+ { 0x1004, "cod_readpackibit" },
+ { 0x1005, "cod_readword" },
+ { 0x1006, "cod_readiword" },
+ { 0x1007, "cod_readdword" },
+ { 0x1008, "cod_readfword" },
+ { 0x1009, "cod_writepackbit" },
+ { 0x100A, "cod_writeword" },
+ { 0x100B, "cod_writedword" },
+ { 0x100C, "cod_writefword" },
+ { 0x100D, "cod_readquickbit" },
+ { 0x100E, "cod_readdiag" },
+ { 0x100F, "cod_readeven" },
+ { 0x1010, "cod_readtrace" },
+ { 0x1011, "cod_statjbus" },
+ { 0x1012, "cod_creatjnet" },
+ { 0x1013, "cod_rijnet" },
+ { 0x1014, "cod_rcjnet" },
+ { 0x1015, "cod_writemes" },
+ { 0x1016, "cod_readmes" },
+ { 0x1017, "cod_manual" },
+ { 0x1018, "cod_automatic" },
+ { 0x1019, "cod_connect" },
+ { 0x101A, "cod_unconnect" },
+ { 0x101B, "cod_iocounter" },
+ { 0x101C, "cod_resetiocounter" },
+ { 0x101D, "codute_identequipment" },
+ { 0x101E, "codute_readbit_SY" },
+ { 0x101F, "codute_readbit_IO" },
+ { 0x1020, "codute_readword_CW" },
+ { 0x1021, "codute_readword_SW" },
+ { 0x1022, "codute_readword_COM" },
+ { 0x1023, "codute_readtempo" },
+ { 0x1024, "codute_readmonost_Mi" },
+ { 0x1025, "codute_readcounter_Ci" },
+ { 0x1026, "codute_readreg_Ri" },
+ { 0x1027, "codute_readsteps_Xi" },
+ { 0x1028, "codute_readdword_DW" },
+ { 0x1029, "codute_readdword_CDW" },
+ { 0x102A, "codute_readone_step" },
+ { 0x102B, "codute_writebit_SY" },
+ { 0x102C, "codute_writebit_IO" },
+ { 0x102D, "codute_writeword_SW" },
+ { 0x102E, "codute_writeword_COM" },
+ { 0x102F, "codute_writetimer_Ti" },
+ { 0x1030, "codute_writemonost_Mi" },
+ { 0x1031, "codute_writecounter_Ci" },
+ { 0x1032, "codute_writereg_Ri" },
+ { 0x1033, "codute_writedword_DW" },
+ { 0x1034, "codute_readbit_B" },
+ { 0x1035, "codute_readword_W" },
+ { 0x1036, "codute_readobjets" },
+ { 0x1037, "codute_readstruc_obj" },
+ { 0x1038, "codute_writebit_B" },
+ { 0x1039, "codute_writeword_W" },
+ { 0x103A, "codute_writestruc_obj" },
+ { 0x103B, "codute_no_requestdata" },
+ { 0x103C, "codute_prot_ver" },
+ { 0x103D, "codute_status" },
+ { 0x103E, "codute_mirror" },
+ { 0x103F, "codute_readerror_count" },
+ { 0x1040, "codute_readstation_status" },
+ { 0x1041, "codute_razerror_counter" },
+ { 0x1042, "codute_write_xgs" },
+ { 0x1043, "codute_stop" },
+ { 0x1044, "codute_run" },
+ { 0x1045, "codute_selftest" },
+ { 0x1046, "codute_init" },
+ { 0x1047, "codute_reserv" },
+ { 0x1048, "codute_unreserv" },
+ { 0x1049, "codute_entreserv" },
+ { 0x104A, "codute_initloader" },
+ { 0x104B, "codute_upload_seg" },
+ { 0x104C, "codute_end_upload_seg" },
+ { 0x104D, "codute_init_download" },
+ { 0x104E, "codute_download_seg" },
+ { 0x104F, "codute_end_download" },
+ { 0x1050, "codute_writereq_file" },
+ { 0x1051, "codute_readanswer_file" },
+ { 0x1052, "codute_exereq_file" },
+ { 0x1053, "codute_razreq_file" },
+ { 0x1054, "codute_stopdrum_DiS" },
+ { 0x1055, "codute_incdrum_DiS" },
+ { 0x1056, "codute_godrum_DiS" },
+ { 0x1057, "codute_readeven_DiS" },
+ { 0x1058, "codute_readone_DiS" },
+ { 0x1059, "codute_write_objet" },
+ { 0x105A, "cod_readpackqbit" },
+ { 0x105B, "cod_writepackqbit" },
+ { 0x105C, "cod_send_rec_txt" },
+ { 0x105D, "cod_iowhite" },
+ { 0x105E, "cod_readpackbyte" },
+ { 0x105F, "cod_readbyte" },
+ { 0x1060, "cod_writepackbyte" },
+ { 0x1061, "cod_writebyte" },
+ { 0x1062, "cod_readwordbcd" },
+ { 0x1063, "cod_writewordbcd" },
+ { 0x1064, "cod_writereadmes" },
+ { 0x1065, "cod_readqword" },
+ { 0x1066, "cod_writeqword" },
+ { 0x1067, "cod_writereaddifmes" },
+ { 0x1068, "cod_readpackibyte" },
+ { 0x1069, "cod_readibyte" },
+ { 0x106A, "cod_readpackqbyte" },
+ { 0x106B, "cod_readqbyte" },
+ { 0x106C, "cod_writepackqbyte" },
+ { 0x106D, "cod_writeqbyte" },
+ { 0x106E, "cod_readident" },
+ { 0x106F, "cod_readpackiqbit" },
+ { 0x1070, "cod_writepackiqbit" },
+ { 0x1071, "cod_layer2profibus" },
+ { 0x1072, "cod_readtimer" },
+ { 0x1073, "cod_writetimer" },
+ { 0x1074, "cod_readcounter" },
+ { 0x1075, "cod_writecounter" },
+ { 0x1076, "0x1076COD_FMSGETOD" },
+ { 0x1077, "cod_endloadmasterconf" },
+ { 0x1078, "COD_FMSSTATUS" },
+ { 0x1079, "COD_EQUIPMENTINFO" },
+ { 0x107A, "COD_WRITEREADPACKBIT" },
+ { 0x107B, "COD_WRITEREADPACKQBIT" },
+ { 0x107C, "COD_WRITEREADPACKBYTE" },
+ { 0x107D, "COD_WRITEREADBYTE" },
+ { 0x107E, "COD_WRITEREADPACKQBYTE" },
+ { 0x107F, "COD_WRITEREADQBYTE" },
+ { 0x1080, "COD_WRITEREADWORD" },
+ { 0x1081, "COD_WRITEREADQWORD" },
+ { 0x1082, "COD_WRITEREADDWORD" },
+ { 0x1083, "COD_WRITEREADFWORD" },
+ { 0x1084, "COD_WRITEREADWORDBCD" },
+ { 0x1085, "COD_CLOSECONNECTION" },
+ { 0x1086, "COD_GET_SUPPORTED_FUNCTION" },
+ { 0x1087, "COD_READOBJECT" },
+ { 0x1088, "COD_WRITEFIELDOBJECT" },
+ { 0x1089, "COD_EQUINFO_OBJ" },
+ { 0x1090, "COD_WRITEREADMSG" },
+ { 0x1091, "COD_START_SCANNER" },
+
+ /* Code slave function */
+ { 0x2000, "cod_initslave" },
+ { 0x2001, "cod_loadslaveconf" },
+ { 0x2002, "cod_endloadslaveconf" },
+
+ /* Codes Database*/
+ { 0x3000, "cod_getpackbit" },
+ { 0x3001, "cod_getbit" },
+ { 0x3002, "cod_getword" },
+ { 0x3003, "cod_getdword" },
+ { 0x3004, "cod_getfword" },
+ { 0x3005, "cod_setpackbit" },
+ { 0x3006, "cod_setbit" },
+ { 0x3007, "cod_setword" },
+ { 0x3008, "cod_setdword" },
+ { 0x3009, "cod_setfword" },
+ { 0x300A, "cod_getdispbit" },
+ { 0x300B, "cod_getdispword" },
+ { 0x300C, "cod_getdispdword" },
+ { 0x300D, "cod_getdispfword" },
+ { 0x300E, "cod_setdispbit" },
+ { 0x300F, "cod_setdispword" },
+ { 0x3010, "cod_setdispdword" },
+ { 0x3011, "cod_setdispfword" },
+ { 0x3012, "cod_incdispword" },
+ { 0x3013, "cod_incdispdword" },
+ { 0x3014, "cod_decdispword" },
+ { 0x3015, "cod_decdispdword" },
+ { 0x3016, "cod_getevent" },
+ { 0x3017, "cod_confdb" },
+ { 0x3018, "cod_puteventvar" },
+ { 0x3019, "cod_getpackbyte" },
+ { 0x301A, "cod_setpackbyte" },
+ { 0x301B, "cod_fillbit" },
+ { 0x301C, "cod_fillbyte" },
+ { 0x301D, "cod_fillword" },
+ { 0x301E, "cod_filldword" },
+ { 0x301F, "cod_fillfword" },
+ { 0x3020, "COD_APPGETBIT" },
+ { 0x3021, "COD_DBEXECUTED" },
+ { 0x3022, "COD_GETRIGHTS" },
+ { 0x3023, "COD_WFCYC_COS" },
+ { 0x3024, "COD_END_FCYC" },
+ { 0x3025, "COD_FCYC_END" },
+ { 0x3026, "COD_TAB_FCYC" },
+ { 0x3027, "COD_GETFCYCCOS" },
+ { 0x3028, "COD_SETIOAREAADDR" },
+ { 0x3029, "COD_GETIOAREAADDR" },
+ { 0x3030, "COD_SETACTFNTADDR" },
+ { 0x3031, "COD_GETACTFNTADDR" },
+ { 0x3032, "COD_GETACTFNTBITWORD" },
+
+ /* Code disp_cyc functions */
+ { 0x4000, "cod_cycinfo" },
+ { 0x4001, "cod_createcyc" },
+ { 0x4002, "cod_startcyc" },
+ { 0x4003, "cod_stopcyc" },
+ { 0x4004, "cod_transcyc" },
+ { 0x4005, "cod_actcyc" },
+ { 0x4006, "cod_initcyc" },
+ { 0x4007, "cod_cycparam" },
+ { 0x4008, "cod_stopallcyc" },
+ { 0x4009, "cod_stopallcycread" },
+ { 0x400A, "cod_stopallcycwrite" },
+ { 0x400B, "cod_cyctimebase" },
+ { 0x400C, "COD_CYCEXECUTED" },
+ { 0x400E, "COD_NEWCREATECYC" },
+ { 0x400F, "COD_DISPCYC_DEBUG" },
+ { 0x4010, "COD_NEWCREATECYC_ID" },
+ { 0x4011, "COD_DESTROYCYC_ID" },
+ { 0x4012, "COD_CREATECYC_OBJ" },
+ { 0x4013, "COD_TRANSCYC_VERIF" },
+ { 0x4014, "COD_CREATECYC_WRMSG" },
+ { 0x4015, "COD_NEWCREATECYC_WRMSG" },
+ { 0x4016, "COD_NEWCREATECYC_WRMSG_ID" },
+ { 0x4017, "COD_CYCEXECUTED_AND_COS" },
+ { 0x4018, "COD_STARTCYCONE" },
+ { 0x4019, "COD_GETCRESCENDO_USB" },
+ { 0x4020, "COD_GETCYCPARAM2" },
+ { 0x4021, "COD_FCYCWRITENONCOS" },
+ { 0x4022, "COD_RESETCPTACTIVATION" },
+
+ /* Code Root function */
+ { 0x5000, "cod_rootinfo" },
+ { 0x5001, "cod_initjbus" },
+ { 0x5002, "cod_exitjbus" },
+ { 0x5003, "cod_transdif" },
+ { 0x5004, "cod_testtransdif" },
+ { 0x5005, "cod_watchdog" },
+ { 0x5006, "cod_accesskey" },
+ { 0x5007, "cod_getmodem" },
+ { 0x5008, "cod_setmodem" },
+ { 0x5009, "COD_GETSTATIONNAME" },
+ { 0x500A, "COD_GETSTATIONINFO" },
+ { 0x500B, "COD_GETWATCHDOG" },
+ { 0x500C, "COD_DIAG_ROOT" },
+
+ /* Code bt100 function */
+ { 0x6000, "COD_CREATEBT" },
+ { 0x6001, "COD_TIMEBASEBT" },
+ { 0x6002, "COD_CREATEBASETIME" },
+
+ /* Code ADMINFL-0 : files */
+ { 0x7000, "COD_OPENFILE" },
+ { 0x7001, "COD_CLOSEFILE" },
+ { 0x7002, "COD_READFILE" },
+ { 0x7003, "COD_WRITEFILE" },
+ { 0x7004, "COD_DELETEFILE" },
+ { 0x7005, "COD_SEEKFILE" },
+ { 0x7006, "COD_TEELFILE" },
+ { 0x7007, "COD_EOFFILE" },
+ { 0x7008, "COD_GETPTRFILE" },
+ { 0x7009, "COD_DIRFILE" },
+
+ /* Code MSG USER */
+ { 0x7500, "COD_USER_FIRST" },
+
+ { 0x7501, "COD_USER_EXCHANGE" },
+ { 0x7502, "COD_USER_STATUSEXCHANGE" },
+ { 0x7503, "COD_USER_SENDFRAME" },
+ { 0x7504, "COD_USER_STATUSSENDFRAME" },
+
+ { 0x7600, "COD_USER_EQUIPPARAMSREAD" },
+ { 0x7601, "COD_USER_EQUIPINFOUPDATE" },
+ { 0x7602, "COD_USER_ANALYZESTDREQUEST" },
+ { 0x7603, "COD_USER_ANALYZEOBJREQUEST" },
+ { 0x7604, "COD_USER_PREPROCESSREQUEST" },
+ { 0x7605, "COD_USER_PREPROCESSANSWER" },
+ { 0x7606, "COD_USER_EXEFUNCREQUEST" },
+ { 0x7607, "COD_USER_EXEFUNCANSWER" },
+ { 0x7608, "COD_USER_ABORTFRAME" },
+
+ { 0x7700, "COD_USER_GETFUNCTION" },
+ { 0x7701, "COD_USER_EXEFUNCREQ" },
+ { 0x7702, "COD_USER_EXEFUNCACK" },
+
+ { 0x7999, "COD_USER_LAST" },
+
+ /* ??? */
+ { 0x8000, "COD_INDWRITEMASK" },
+
+ /* Code ADMINMSG-0 : message */
+ { 0x9000, "COD_READMSG" },
+ { 0x9001, "COD_CLEARMSG" },
+ { 0x9002, "COD_DIRMSG" },
+ { 0x9003, "COD_ENABLEMSG" },
+ { 0x9004, "COD_DISABLEMSG" },
+ { 0x9005, "COD_CREATEMSG" },
+ { 0x9006, "COD_GETDESCRMSG" },
+ { 0x9007, "COD_DIRALLMSG" },
+ { 0x9008, "COD_INFOMSG" },
+ { 0x9009, "COD_GETFLAGSMSG" },
+ { 0x900A, "COD_SETFLAGSMSG" },
+ { 0x9100, "COD_MSG_ENABLED" },
+
+ /* First LLI MAIL Codef */
+ { 0x9500, "COD_LLI_WHITE" },
+
+ /* system commands */
+ { 0x9510, "COD_MANAGE_INIT" },
+ { 0x9511, "COD_MANAGE_SAP" },
+ { 0x9512, "COD_LLI_DIAG" },
+ { 0x9513, "COD_LLI_MANAGE" },
+ { 0x9514, "COD_ADD_INSTANCE" },
+ { 0x9515, "COD_REM_INSTANCE" },
+ { 0x9516, "COD_GET_MESSAGING" },
+ { 0x9517, "COD_LLI_CMD" },
+
+ /* protocol commands */
+ { 0x9600, "COD_LLI_EXCHANGE" },
+ { 0x9602, "COD_LLI_INIT" },
+ { 0x9603, "COD_LLI_START" },
+ { 0x9604, "COD_LLI_STOP" },
+ { 0x9605, "COD_LLI_READ_INPUT" },
+ { 0x9606, "COD_LLI_READ_OUTPUT" },
+ { 0x9607, "COD_LLI_ABORT" },
+ { 0x9608, "COD_LLI_TRACE_ON" },
+ { 0x9609, "COD_LLI_TRACE_OFF" },
+ { 0x960A, "COD_LLI_WRITE_OUTPUT" },
+ { 0x960B, "COD_LLI_READ_ASYNC" },
+ { 0x960C, "COD_LLI_WRITE_ASYNC" },
+ { 0x960D, "COD_LLI_DP_SERVICE" },
+ { 0x960E, "COD_LLI_FDL_SERVICE" },
+ { 0x960F, "COD_LLI_SCAN_L2" },
+ { 0x9610, "COD_LLI_SCAN_MESSAGING" },
+ { 0x9611, "COD_LLI_MPISLAVE_SERVICE" },
+ { 0x9612, "COD_LLI_FDL_MESSAGING" },
+
+ /* Last LLI MAIL Codef */
+ { 0x96FF, "COD_LLI_LAST" },
+
+ { 0xA001, "COD_REFRESH_INPUT" },
+ { 0xA002, "COD_REFRESH_OUTPUT" },
+
+ /* Codef SOCKET */
+ { 0xB001, "COD_SOCKET_CREATE" },
+ { 0xB002, "COD_SOCKET_BIND" },
+ { 0xB003, "COD_SOCKET_CONNECT" },
+ { 0xB004, "COD_SOCKET_LISTEN" },
+ { 0xB005, "COD_SOCKET_ACCEPT" },
+ { 0xB006, "COD_SOCKET_SENDTO" },
+ { 0xB007, "COD_SOCKET_RECVFROM" },
+ { 0xB008, "COD_SOCKET_SEND" },
+ { 0xB009, "COD_SOCKET_RECV" },
+ { 0xB010, "COD_SOCKET_CLOSE" },
+ { 0xB011, "COD_SOCKET_HOST_INFO" },
+ { 0xB012, "COD_SOCKET_PEER_INFO" },
+ { 0xB013, "COD_SOCKET_RECV_GET_DATA" },
+ { 0xB014, "COD_SOCKET_GET_STAT" },
+ { 0xB015, "COD_SOCKET_RESET_STAT" },
+ /*New type for the version 2*/
+ { 0xB016, "COD_SOCKET_SETSOCKOPT" },
+ { 0xB017, "COD_SOCKET_SELECT" },
+ { 0xB018, "COD_SOCKET_SHUTDOWN_ALL" },
+ { 0xB019, "COD_SOCKET_DIAG_SUMMARY" },
+ { 0xB01A, "COD_SOCKET_DIAG_DETAILS" },
+ { 0xB01B, "COD_SOCKET_DIAG_SO" },
+ { 0xB01C, "COD_SOCKET_EVENT" },
+
+ /* Codef ARP */
+ { 0xC000, "COD_ARP_QUERY" },
+ { 0xC001, "COD_ARP_FLUSH" },
+
+ { 0xFFEF, "index not updated" }, /* -11 */
+
+ { 0xFFFE, "Unknown Status" },
+ { 0, NULL }
+};
+static value_string_ext tabCodef_ext = VALUE_STRING_EXT_INIT(tabCodef);
+
+static const value_string FunctionCodes[] = {
+ { WRETH_IDENT, "Identification" },
+ { WRETH_CONNECT, "Connection" },
+ { WRETH_ACK, "Acknowledge" },
+ { WRETH_NACK, "Non acknowledge" },
+ { WRETH_DISCONNECT, "Disconnection" },
+ { WRETH_MAIL, "Mail" },
+ { WRETH_BLINKY, "Blinky" },
+ { WRETH_GET_VALUE, "Get value" },
+ { WRETH_SET_VALUE, "Set value" },
+ { WRETH_BOOST, "Boost" },
+ { 0, NULL }
+};
+static value_string_ext FunctionCodes_ext = VALUE_STRING_EXT_INIT(FunctionCodes);
+
+static const value_string ErrorCode_vals[] = {
+ { 0, "No error" },
+ { WRETH_BAD_FUNCTION_CODE, "Bad function code" },
+ { WRETH_ALREADY_CONNECTED, "Already connected" },
+ { WRETH_INVALID_PROTOCOL_VERSION, "Invalid protocol version" },
+ { WRETH_NOT_CONNECTED, "Not connected" },
+ { WRETH_INVALID_MAC_ADDRESS, "Invalid MAC address" },
+ { WRETH_INVALID_FRAME_SIZE, "Invalid frame size" },
+ { WRETH_NO_MEMORY_AVAILABLE, "No memory available" },
+ { WRETH_BAD_PARAMETER, "Bad parameter" },
+ { WRETH_TASK_REGISTERED, "Task registered" },
+ { 0, NULL }
+};
+static value_string_ext ErrorCode_vals_ext = VALUE_STRING_EXT_INIT(ErrorCode_vals);
+
+static void dissect_wreth(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+
+ guint16 packet_type,functionCode;
+ guint8 fragmented;
+ proto_item *mi, *ti;
+ proto_tree *pWrethTree ;
+ guint8 Offset = 0 ;
+
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "Wreth");
+ /* Clear out stuff in the info column */
+ col_clear(pinfo->cinfo,COL_INFO);
+
+ /*Read the packet type, if not good, exit*/
+ packet_type = tvb_get_ntohs(tvb,0);
+ if(packet_type != WSE_RETH_SUBTYPE) return;
+
+ mi = proto_tree_add_protocol_format(tree, wreth_proto, tvb, Offset, -1, "WSE remote ethernet");
+ pWrethTree = proto_item_add_subtree(mi, ett_wreth);
+
+ functionCode = tvb_get_letohs(tvb,4);
+ fragmented = tvb_get_guint8(tvb,10);
+
+ if(fragmented > 2)
+ {
+ col_set_str(pinfo->cinfo, COL_INFO, "Invalid fragmented byte");
+ return;
+ }
+
+ if (tree)
+ {
+ /*Subtype*/
+ proto_tree_add_item(pWrethTree, hf_Wreth_Subtype, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+
+ /*Size*/
+ proto_tree_add_item(pWrethTree, hf_Wreth_Size, tvb, Offset + 2, 2, ENC_LITTLE_ENDIAN);
+
+ /*Function code*/
+ proto_tree_add_item(pWrethTree, hf_Wreth_FunctionCode, tvb, Offset + 4, 2, ENC_LITTLE_ENDIAN);
+
+ /*FrameID*/
+ proto_tree_add_item(pWrethTree, hf_Wreth_FrameId, tvb, Offset + 6, 2, ENC_LITTLE_ENDIAN);
+
+ /*Error Code*/
+ proto_tree_add_item(pWrethTree, hf_Wreth_ErrorCode, tvb, Offset + 8, 2, ENC_LITTLE_ENDIAN);
+
+ }
+
+ /*Fragmented*/
+ if(fragmented == 2)
+ {
+ ti = proto_tree_add_item(pWrethTree, hf_Wreth_Fragmented, tvb, Offset + 10, 1, ENC_LITTLE_ENDIAN);
+ proto_item_append_text(ti, ": second fragment");
+
+ /*Retry*/
+ proto_tree_add_item(pWrethTree, hf_Wreth_Retry, tvb, Offset + 11, 1, ENC_LITTLE_ENDIAN);
+
+ WrethMailDissection(tvb, Offset + 12, pinfo, pWrethTree, fragmented);
+ return;
+ }
+
+ ti = proto_tree_add_item(pWrethTree, hf_Wreth_Fragmented, tvb, Offset + 10, 1, ENC_LITTLE_ENDIAN);
+ if(fragmented == 1)
+ {
+ proto_item_append_text(ti, ": first fragment");
+ }else
+ proto_item_append_text(ti, ": no");
+
+ /*Retry*/
+ proto_tree_add_item(pWrethTree, hf_Wreth_Retry, tvb, Offset + 11, 1, ENC_LITTLE_ENDIAN);
+
+ /* Add items to protocol tree specific to Wreth */
+ switch(functionCode)
+ {
+ case WRETH_IDENT:
+ WrethIdentPacket(tvb, Offset + 12, pinfo, pWrethTree);
+ break;
+ case WRETH_CONNECT:
+ WrethConnectPacket(tvb, Offset + 12, pinfo, pWrethTree);
+ break;
+ case WRETH_ACK:
+ WrethAckPacket(tvb, Offset + 12, pinfo, pWrethTree);
+ break;
+ case WRETH_NACK:
+ WrethNackPacket(tvb, Offset + 12, pinfo, pWrethTree);
+ break;
+ case WRETH_DISCONNECT:
+ WrethDisconnectPacket(tvb, Offset + 12, pinfo, pWrethTree);
+ break;
+ case WRETH_MAIL:
+ WrethMailPacket(tvb, Offset + 12, pinfo, pWrethTree);
+ break;
+ case WRETH_BLINKY:
+ WrethBlinkyPacket(tvb, Offset + 12, pinfo, pWrethTree);
+ break;
+ case WRETH_GET_VALUE:
+ WrethGetValuePacket(tvb, Offset + 12, pinfo, pWrethTree);
+ break;
+ case WRETH_SET_VALUE:
+ WrethSetValuePacket(tvb, Offset + 12, pinfo, pWrethTree);
+ break;
+ case WRETH_BOOST:
+ WrethBoostPacket(tvb, Offset + 12, pinfo, pWrethTree);
+ break;
+ default:
+ break;
+ }
+
+}
+
+/*****************************************************************************/
+
+static const value_string IdentState[] = {
+ { 0, "Ready" },
+ { 1, "Busy"},
+ { 0, NULL }
+};
+
+gint WrethIdentPacket(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo, proto_tree * pWrethTree)
+{
+ guint16 Size;
+
+ Size = tvb_get_letohs(tvb, 2);
+
+ if((Size != 0)&&(Size != 19))
+ {
+ /* Invalid identification frame */
+ col_set_str(pInfo->cinfo, COL_INFO, "Invalid identification frame");
+ return 0;
+ }
+
+ if(Size == 0)
+ {
+ col_set_str(pInfo->cinfo, COL_INFO, "Identification question");
+ return 0;
+ }
+
+ /*BiosVersion*/
+ proto_tree_add_item(pWrethTree, hf_Wreth_IdentificationBiosVersion, tvb, Offset, 6, ENC_ASCII|ENC_NA);
+
+ /*Board Number*/
+ proto_tree_add_item(pWrethTree, hf_Wreth_IdentificationBoardNumber, tvb, Offset + 6, 2, ENC_LITTLE_ENDIAN);
+
+ /*Protocol*/
+ proto_tree_add_item(pWrethTree, hf_Wreth_IdentificationProtocolVersion, tvb, Offset + 8, 2, ENC_LITTLE_ENDIAN);
+
+ /*Board Id*/
+ proto_tree_add_item(pWrethTree, hf_Wreth_IdentificationBoardId, tvb, Offset + 10, 2, ENC_LITTLE_ENDIAN);
+
+ /*State*/
+ proto_tree_add_item(pWrethTree, hf_Wreth_IdentificationState, tvb, Offset + 12, 1, ENC_LITTLE_ENDIAN);
+
+ /*Client MAC address*/
+ proto_tree_add_item(pWrethTree, hf_Wreth_IdentificationMacAddr, tvb, Offset + 13, 6, ENC_BIG_ENDIAN);
+
+ col_set_str(pInfo->cinfo, COL_INFO, "Identification response");
+
+ return Offset;
+}
+
+/*****************************************************************************/
+
+gint WrethConnectPacket(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo, proto_tree * pWrethTree _U_)
+{
+ guint16 Size;
+
+ Size = tvb_get_letohs(tvb,2);
+
+ if(Size != 4)
+ {
+ /* Invalid connection frame */
+ col_set_str(pInfo->cinfo, COL_INFO, "Invalid connection frame");
+ return 0;
+ }
+
+ col_set_str(pInfo->cinfo, COL_INFO, "Connection");
+
+ proto_tree_add_item(pWrethTree, hf_Wreth_ConnectProtocolVersion, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+
+ proto_tree_add_item(pWrethTree, hf_Wreth_ConnectTimeout, tvb, Offset + 2, 2, ENC_LITTLE_ENDIAN);
+
+ return Offset;
+}
+
+/*****************************************************************************/
+
+gint WrethDisconnectPacket(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo, proto_tree * pWrethTree _U_)
+{
+ guint16 Size;
+
+ Size = tvb_get_letohs(tvb,2);
+
+ if(Size != 0)
+ {
+ /* Invalid disconnection frame */
+ col_set_str(pInfo->cinfo, COL_INFO, "Invalid disconnection frame");
+ return 0;
+ }
+
+ col_set_str(pInfo->cinfo, COL_INFO, "Disconnection");
+
+ return Offset;
+}
+
+/*****************************************************************************/
+
+gint WrethBlinkyPacket(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo, proto_tree * pWrethTree)
+{
+ guint16 Size;
+
+ Size = tvb_get_letohs(tvb,2);
+
+ if(Size != 2)
+ {
+ /* Invalid blinky frame */
+ col_set_str(pInfo->cinfo, COL_INFO, "Invalid blinky frame");
+ return 0;
+ }
+
+ col_set_str(pInfo->cinfo, COL_INFO, "Blinky");
+
+ proto_tree_add_item(pWrethTree, hf_Wreth_BlinkyPeriod, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+
+ return Offset;
+}
+
+/*****************************************************************************/
+
+gint WrethGetValuePacket(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo, proto_tree * pWrethTree)
+{
+ guint16 Size;
+
+ Size = tvb_get_letohs(tvb,2);
+
+ switch(Size)
+ {
+ case 0:
+ col_set_str(pInfo->cinfo, COL_INFO, "Get value question");
+ break;
+ case 1:
+ proto_tree_add_item(pWrethTree, hf_Wreth_GetValueVal, tvb, Offset, 1, ENC_LITTLE_ENDIAN);
+ col_set_str(pInfo->cinfo, COL_INFO, "Get value response");
+ break;
+ default:
+ col_set_str(pInfo->cinfo, COL_INFO, "Invalid get value frame");
+ break;
+ }
+
+ return Offset;
+}
+
+/*****************************************************************************/
+
+gint WrethSetValuePacket(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo, proto_tree * pWrethTree)
+{
+ guint16 Size;
+
+ Size = tvb_get_letohs(tvb,2);
+
+ if(Size != 0)
+ {
+ col_set_str(pInfo->cinfo, COL_INFO, "Invalid set value frame");
+ }
+
+ proto_tree_add_item(pWrethTree, hf_Wreth_SetValueVal, tvb, Offset, 1, ENC_LITTLE_ENDIAN);
+
+ col_set_str(pInfo->cinfo, COL_INFO, "Set value question");
+
+ return Offset;
+}
+
+/*****************************************************************************/
+static const value_string BoostValue[] = {
+ { 0, "disabled" },
+ { 1, "enabled"},
+ { 0, NULL }
+};
+
+gint WrethBoostPacket(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo, proto_tree * pWrethTree)
+{
+ guint16 Size;
+
+ Size = tvb_get_letohs(tvb,2);
+
+ if(Size != 2)
+ {
+ /* Invalid boost frame */
+ col_set_str(pInfo->cinfo, COL_INFO, "Invalid boost frame");
+ return 0;
+ }
+
+ col_set_str(pInfo->cinfo, COL_INFO, "Boost");
+
+ proto_tree_add_item(pWrethTree, hf_Wreth_BoostValue, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+
+ return Offset;
+}
+
+/*****************************************************************************/
+
+gint WrethAckPacket(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo, proto_tree * pWrethTree _U_)
+{
+ guint16 Size;
+
+ Size = tvb_get_letohs(tvb,2);
+
+ if(Size != 0)
+ {
+ /* Invalid ack frame */
+ col_set_str(pInfo->cinfo, COL_INFO, "Invalid acknowledge frame");
+ return 0;
+ }
+
+ col_set_str(pInfo->cinfo, COL_INFO, "Acknowledge");
+
+ return Offset;
+}
+
+/*****************************************************************************/
+
+gint WrethNackPacket(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo, proto_tree * pWrethTree)
+{
+ guint16 Size;
+ guint16 ErrorCode;
+
+ Size = tvb_get_letohs(tvb,2);
+ ErrorCode = tvb_get_letohs(tvb,2); /* XXX: what offset should be used ?? */
+
+ if((Size != 0)&&(Size != 6))
+ {
+ /* Invalid ack frame */
+ col_set_str(pInfo->cinfo, COL_INFO, "Invalid non acknowledge frame");
+ return 0;
+ }
+
+
+ col_add_str(pInfo->cinfo, COL_INFO, val_to_str_ext(ErrorCode, &ErrorCode_vals_ext, "Unknown 0x%04x"));
+
+ if(Size == 6)
+ {
+ proto_tree_add_item(pWrethTree, hf_Wreth_IdentificationMacAddr, tvb, Offset, 6, ENC_BIG_ENDIAN);
+ }
+
+ return Offset;
+}
+
+/*****************************************************************************/
+
+gint WrethMailPacket(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo, proto_tree * pWrethTree)
+{
+
+ proto_tree_add_item(pWrethTree, hf_Wreth_MailDestTic, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(pWrethTree, hf_Wreth_MailReserved, tvb, Offset + 2, 4, ENC_LITTLE_ENDIAN);
+
+ col_set_str(pInfo->cinfo, COL_INFO, "Mail");
+
+ /*Frame not fragmented => last argument = 0*/
+ WrethMailDissection(tvb, Offset+6, pInfo, pWrethTree,0);
+
+ return Offset;
+}
+
+/*****************************************************************************/
+
+gint WrethMailDissection(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo, proto_tree * pWrethTree, guint8 fragmented)
+{
+ proto_item *mi;
+ proto_tree *pWrethMailboxTree;
+ gint Nb = 0;
+ guint16 Codef = 0;
+
+ mi = proto_tree_add_protocol_format(pWrethTree, wreth_proto, tvb, Offset, -1, "MailBox");
+ pWrethMailboxTree = proto_item_add_subtree(mi, ett_wreth);
+
+ /*If it's not the last fragment, display the header of the MailBox*/
+ if (2 != fragmented)
+ {
+ guint16 Card, Chan;
+ gint Status;
+
+ /*Codef*/
+ Codef = tvb_get_letohs(tvb,Offset);
+ proto_tree_add_item(pWrethMailboxTree, hf_Wreth_Mail_Codef, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*Status*/
+ Status = (gint16)tvb_get_letohs(tvb,Offset); /* cast fetched value to signed so sign is extended */
+ /* so that lookup of 32-bit unsigned in tabCodef */
+ /* value_string array will work properly. */
+ proto_tree_add_item(pWrethMailboxTree, hf_Wreth_Mail_Status, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*TicUser Root*/
+ proto_tree_add_item(pWrethMailboxTree, hf_Wreth_Mail_TicUser_Root, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*Mail PidUser*/
+ proto_tree_add_item(pWrethMailboxTree, hf_Wreth_Mail_PidUser, tvb, Offset, 4, ENC_LITTLE_ENDIAN);
+ Offset += 4;
+ /*Mail Mode*/
+ proto_tree_add_item(pWrethMailboxTree, hf_Wreth_Mail_Mode, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*Mail Time*/
+ proto_tree_add_item(pWrethMailboxTree, hf_Wreth_Mail_Time, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*Mail Stop*/
+ proto_tree_add_item(pWrethMailboxTree, hf_Wreth_Mail_Stop, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*Mail Nfonc*/
+ proto_tree_add_item(pWrethMailboxTree, hf_Wreth_Mail_Nfonc, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*Mail Ncard*/
+ Card = tvb_get_letohs(tvb,Offset);
+ proto_tree_add_item(pWrethMailboxTree, hf_Wreth_Mail_Ncard, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*Mail Nchan*/
+ Chan = tvb_get_letohs(tvb,Offset);
+ proto_tree_add_item(pWrethMailboxTree, hf_Wreth_Mail_Nchan, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*Mail Nes*/
+ proto_tree_add_item(pWrethMailboxTree, hf_Wreth_Mail_Nes, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*Mail Nb*/
+ Nb = (gint)tvb_get_letohs(tvb,Offset);
+ proto_tree_add_item(pWrethMailboxTree, hf_Wreth_Mail_Nb, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*Mail TypVar*/
+ proto_tree_add_item(pWrethMailboxTree, hf_Wreth_Mail_TypVar, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*Mail Adr*/
+ proto_tree_add_item(pWrethMailboxTree, hf_Wreth_Mail_Adr, tvb, Offset, 4, ENC_LITTLE_ENDIAN);
+ Offset += 4;
+ /*Mail TicUser*/
+ proto_tree_add_item(pWrethMailboxTree, hf_Wreth_Mail_TicUser_DispCyc, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*Mail Nb Max Size Mail*/
+ proto_tree_add_item(pWrethMailboxTree, hf_Wreth_Mail_Nb_Max_Size_Mail, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*Mail User ThreadID*/
+ proto_tree_add_item(pWrethMailboxTree, hf_Wreth_Mail_User_ThreadID, tvb, Offset, 4, ENC_LITTLE_ENDIAN);
+ Offset += 4;
+ /*Mail DispCyc Version*/
+ proto_tree_add_item(pWrethMailboxTree, hf_Wreth_Mail_DispCyc_Version, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*Mail DifUserParam*/
+ proto_tree_add_item(pWrethMailboxTree, hf_Wreth_Mail_DifUserParam, tvb, Offset, 4, ENC_LITTLE_ENDIAN);
+ Offset += 4;
+ /*Mail Filler*/
+ proto_tree_add_item(pWrethMailboxTree, hf_Wreth_Mail_Filler, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+
+ col_add_fstr(pInfo->cinfo, COL_INFO, "Mail : Codef = Ox%X (%s), Status = %02d (%s), Card = %d, Chan = %d" ,
+ Codef,
+ val_to_str_ext(Codef, &tabCodef_ext, "Unknown 0x%04x%"),
+ Status,
+ val_to_str_ext(Status, &tabStatus_ext, "Unknown %d"),
+ Card,
+ Chan);
+ }
+ else
+ {
+ col_set_str(pInfo->cinfo, COL_INFO, "Mail : Data Second Fragment ");
+ }
+
+ if (0 != Nb)
+ {
+ /*Specific Decode for some Codef*/
+ switch(Codef)
+ {
+ case 0x1002: /*Master Info*/
+ WrethCodefMasterInfoDissection(tvb, Offset, pInfo, pWrethMailboxTree);
+ break;
+ case 0x1079: /*Equipment Info*/
+ WrethCodefEquipmentInfoDissection(tvb, Offset, pInfo, pWrethMailboxTree);
+ break;
+ default:
+ proto_tree_add_protocol_format(pWrethMailboxTree, wreth_proto, tvb, Offset, -1, "Data");
+ break;
+ }
+ }
+
+ return Offset;
+}
+
+/*****************************************************************************/
+
+gint WrethCodefMasterInfoDissection(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo _U_, proto_tree * pWrethMailboxTree)
+{
+ proto_item *mi;
+ proto_tree *pWrethMailboxDataTree;
+
+ mi = proto_tree_add_protocol_format(pWrethMailboxTree, wreth_proto, tvb, Offset, -1, "Data");
+ pWrethMailboxDataTree = proto_item_add_subtree(mi, ett_wreth);
+
+ /*bVersion*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Mastinf_Version, tvb, Offset, 1, ENC_LITTLE_ENDIAN);
+ Offset += 1;
+ /*bRelease*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Mastinf_Release, tvb, Offset, 1, ENC_LITTLE_ENDIAN);
+ Offset += 1;
+ /*bProtocol*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Mastinf_Protocol, tvb, Offset, 1, ENC_LITTLE_ENDIAN);
+ Offset += 1;
+ /*bCyclicFlux*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Mastinf_CyclicFlux, tvb, Offset, 1, ENC_LITTLE_ENDIAN);
+ Offset += 1;
+ /*szProtocolName*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Mastinf_szProtocolName, tvb, Offset, 16, ENC_ASCII|ENC_NA);
+ Offset += 16;
+ /*bMaxTypeEquipment*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Mastinf_MaxTypeEquipment, tvb, Offset, 1, ENC_LITTLE_ENDIAN);
+ Offset += 1;
+ /*wMinEquipmentNumber*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Mastinf_MinEquipmentNumber, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wMaxEquipmentNumber*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Mastinf_MaxEquipmentNumber, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+
+ return Offset;
+}
+
+/*****************************************************************************/
+
+gint WrethCodefEquipmentInfoDissection(tvbuff_t *tvb, guint8 Offset, packet_info * pInfo _U_, proto_tree * pWrethMailboxTree)
+{
+ proto_item *mi;
+ proto_tree *pWrethMailboxDataTree;
+
+ mi = proto_tree_add_protocol_format(pWrethMailboxTree, wreth_proto, tvb, Offset, -1, "Data");
+ pWrethMailboxDataTree = proto_item_add_subtree(mi, ett_wreth);
+
+ /*bVersion*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_Version, tvb, Offset, 1, ENC_LITTLE_ENDIAN);
+ Offset += 1;
+ /*Free*/
+ Offset += 1;
+ /*bRelease*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_Release, tvb, Offset, 1, ENC_LITTLE_ENDIAN);
+ Offset += 1;
+ /*bNetwork*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_Network, tvb, Offset, 1, ENC_LITTLE_ENDIAN);
+ Offset += 1;
+ /*bProtocol*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_Protocol, tvb, Offset, 1, ENC_LITTLE_ENDIAN);
+ Offset += 1;
+ /*bMessaging*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_Messaging, tvb, Offset, 1, ENC_LITTLE_ENDIAN);
+ Offset += 1;
+ /*wEquipment*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_Equipment, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wFlux*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_Flux, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*Free*/
+ Offset += 10;
+ /*IncWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_IncWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*IncDWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_IncDWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*IncFWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_IncFWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*Free*/
+ Offset += 4;
+ /*DllItemName*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Mastinf_DllItemName, tvb, Offset, 14, ENC_ASCII|ENC_NA);
+ Offset += 14;
+ /*szEquipmentName*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Mastinf_szEquipmentName, tvb, Offset, 16, ENC_ASCII|ENC_NA);
+ Offset += 16;
+ /*Free*/
+ Offset += 2;
+ /*wMaxWriteBit*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_MaxWriteBit, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wMaxReadBit*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_MaxReadBit, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wBreakBit*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_BreakBit, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wMaxWriteIBit*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_MaxWriteIBit, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wMaxReadIBit*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_MaxReadIBit, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wBreakIBit*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_BreakIBit, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wMaxWriteQBit*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_MaxWriteQBit, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wMaxReadQBit*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_MaxReadQBit, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wBreakQBit*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_BreakQBit, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wMaxWriteByte*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_MaxWriteByte, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wMaxReadByte*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_MaxReadByte, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wBreakByte*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_BreakByte, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wMaxWriteIByte*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_MaxWriteIByte, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wMaxReadIByte*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_MaxReadIByte, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wBreakIByte*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_BreakIByte, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wMaxWriteQByte*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_MaxWriteQByte, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wMaxReadQByte*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_MaxReadQByte, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wBreakQByte*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_BreakQByte, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wMaxWriteWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_MaxWriteWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wMaxReadWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_MaxReadWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wBreakWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_BreakWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wMaxWriteIWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_MaxWriteIWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wMaxReadIWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_MaxReadIWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wBreakIWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_BreakIWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wMaxWriteQWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_MaxWriteQWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wMaxReadQWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_MaxReadQWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wBreakQWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_BreakQWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wMaxWriteDWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_MaxWriteDWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wMaxReadDWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_MaxReadDWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wBreakDWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_BreakDWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wMaxWriteFWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_MaxWriteFWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wMaxReadFWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_MaxReadFWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wBreakFWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_BreakFWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wReadFactorWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_ReadFactorWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wReadFactorIWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_ReadFactorIWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wReadFactorQWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_ReadFactorQWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wReadFactorDWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_ReadFactorDWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wReadFactorFWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_ReadFactorFWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wWriteFactorWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_WriteFactorWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wWriteFactorIWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_WriteFactorIWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wWriteFactorQWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_WriteFactorQWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wWriteFactorDWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_WriteFactorDWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wWriteFactorFWord*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_WriteFactorFWord, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+ /*wDataFormat*/
+ proto_tree_add_item(pWrethMailboxDataTree, hf_Wreth_Mail_Equinf_DataFormat, tvb, Offset, 2, ENC_LITTLE_ENDIAN);
+ Offset += 2;
+
+ return Offset;
+}
+
+void proto_register_wreth(void)
+{
+ static hf_register_info hf[] =
+ {
+ /* Wreth header fields */
+ { &hf_Wreth_Subtype,
+ { "Subtype", "wreth.Subtype",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Size,
+ { "Size", "wreth.Size",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "", HFILL }
+ },
+ { &hf_Wreth_FunctionCode,
+ { "Function code","wreth.FunctionCode",
+ FT_UINT16, BASE_DEC | BASE_EXT_STRING, &FunctionCodes_ext, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_FrameId,
+ { "FrameId", "wreth.FrameId",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_ErrorCode,
+ { "Error code", "wreth.ErrorCode",
+ FT_UINT16, BASE_DEC | BASE_EXT_STRING, &ErrorCode_vals_ext, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Fragmented,
+ { "Fragmented", "wreth.Fragmented",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Retry,
+ { "Retry", "wreth.Retry",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_IdentificationBiosVersion,
+ { "Bios version", "wreth.IdentBiosVersion",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_IdentificationBoardNumber,
+ { "Board number", "wreth.IdentBoardNumber",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_IdentificationProtocolVersion,
+ { "Protocol version", "wreth.IdentProtocolVersion",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_IdentificationBoardId,
+ { "Board Id", "wreth.IdentBoardId",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_IdentificationState,
+ { "State", "wreth.IdentState",
+ FT_UINT8, BASE_DEC, VALS(IdentState), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_IdentificationMacAddr,
+ { "Client MAC address :", "wreth.IdentClientMacAddr",
+ FT_ETHER, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_ConnectProtocolVersion,
+ { "Protocol version", "wreth.ConnectProtocolVersion",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_ConnectTimeout,
+ { "Connect timeout", "wreth.ConnectTimeout",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_BlinkyPeriod,
+ { "Period", "wreth.BlinkyPeriod",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_GetValueVal,
+ { "Value", "wreth.GetValue",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_SetValueVal,
+ { "Value", "wreth.SetValue",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_BoostValue,
+ { "Boost", "wreth.BoostStatus",
+ FT_UINT16, BASE_DEC, VALS(BoostValue), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_MailDestTic,
+ { "Dest tic", "wreth.MailDestTic",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_MailReserved,
+ { "Reserved", "wreth.MailReserved",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Codef,
+ { "Codef", "wreth.Mail.Codef",
+ FT_UINT16, BASE_HEX | BASE_EXT_STRING, &tabCodef_ext, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Status,
+ { "Status", "wreth.Mail.Status",
+ FT_INT16, BASE_DEC | BASE_EXT_STRING, &tabStatus_ext, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_TicUser_Root,
+ { "TicUser Root", "wreth.Mail.TicUserRoot",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_PidUser,
+ { "PidUser", "wreth.Mail.PidUser",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Mode,
+ { "Mode", "wreth.Mail.Mode",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Time,
+ { "Time", "wreth.Mail.Time",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Stop,
+ { "Stop", "wreth.Mail.Stop",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Nfonc,
+ { "Nfonc", "wreth.Mail.Nfonc",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Ncard,
+ { "Ncard", "wreth.Mail.Ncard",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Nchan,
+ { "Nchan", "wreth.Mail.Nchan",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Nes,
+ { "Nes", "wreth.Mail.Nes",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Nb,
+ { "Nb", "wreth.Mail.Nb",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_TypVar,
+ { "TypVar", "wreth.Mail.TypVar",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Adr,
+ { "Adr", "wreth.Mail.Adr",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_TicUser_DispCyc,
+ { "TicUser DispCyc", "wreth.Mail.TicUser.DispCyc",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Nb_Max_Size_Mail,
+ { "Nb Max Size Mail", "wreth.Mail.TicUser.Nb.Max.Size.Mail",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_User_ThreadID,
+ { "User ThreadID", "wreth.Mail.User.ThreadID",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_DispCyc_Version,
+ { "DispCyc Version", "wreth.Mail.DispCyc.Version",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_DifUserParam,
+ { "DifUserParam", "wreth.Mail.DifUserParam",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Filler,
+ { "Filler", "wreth.Mail.Filler",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+#if 0
+ { &hf_Wreth_Mail_Data,
+ { "Data", "wreth.Mail.Data",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+#endif
+ { &hf_Wreth_Mail_Mastinf_Version,
+ { "Version", "wreth.Mail.Mastinf.Version",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Mastinf_Release,
+ { "Release", "wreth.Mail.Mastinf.Release",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Mastinf_Protocol,
+ { "Protocol", "wreth.Mail.Mastinf.Protocol",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Mastinf_CyclicFlux,
+ { "CyclicFlux", "wreth.Mail.Mastinf.CyclicFlux",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Mastinf_szProtocolName,
+ { "ProtocolName", "wreth.Mail.Mastinf.ProtocolName",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Mastinf_MaxTypeEquipment,
+ { "MaxTypeEquipment", "wreth.Mail.Mastinf.MaxTypeEquipment",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Mastinf_MinEquipmentNumber,
+ { "MinEquipmentNumber", "wreth.Mail.Mastinf.MinEquipmentNumber",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Mastinf_MaxEquipmentNumber,
+ { "MaxEquipmentNumber", "wreth.Mail.Mastinf.MaxEquipmentNumber",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_Version,
+ { "Version", "wreth.Mail.Equinf.Version",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_Release,
+ { "Release", "wreth.Mail.Equinf.Release",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_Network,
+ { "Network", "wreth.Mail.Equinf.Network",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_Protocol,
+ { "Protocol", "wreth.Mail.Equinf.Protocol",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_Messaging,
+ { "Messaging", "wreth.Mail.Equinf.Messaging",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_Equipment,
+ { "Equipment", "wreth.Mail.Equinf.Equipment",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_Flux,
+ { "Flux", "wreth.Mail.Equinf.Flux",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_IncWord,
+ { "IncWord", "wreth.Mail.Equinf.IncWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_IncDWord,
+ { "IncDWord", "wreth.Mail.Equinf.IncDWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_IncFWord,
+ { "IncFWord", "wreth.Mail.Equinf.IncFWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Mastinf_DllItemName,
+ { "DllItemName", "wreth.Mail.Equinf.DllItemName",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Mastinf_szEquipmentName,
+ { "EquipmentName", "wreth.Mail.Equinf.EquipmentName",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_MaxWriteBit,
+ { "MaxWriteBit", "wreth.Mail.Equinf.MaxWriteBit",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_MaxReadBit,
+ { "MaxReadBit", "wreth.Mail.Equinf.MaxReadBit",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_BreakBit,
+ { "BreakBit", "wreth.Mail.Equinf.BreakBit",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_MaxWriteIBit,
+ { "MaxWriteIBit", "wreth.Mail.Equinf.MaxWriteIBit",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_MaxReadIBit,
+ { "MaxReadIBit", "wreth.Mail.Equinf.MaxReadIBit",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_MaxWriteQBit,
+ { "MaxWriteQBit", "wreth.Mail.Equinf.MaxWriteQBit",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_MaxReadQBit,
+ { "MaxReadQBit", "wreth.Mail.Equinf.MaxReadQBit",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_BreakQBit,
+ { "BreakQBit", "wreth.Mail.Equinf.BreakQBit",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_MaxWriteByte,
+ { "MaxWriteByte", "wreth.Mail.Equinf.MaxWriteByte",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_MaxReadByte,
+ { "MaxReadByte", "wreth.Mail.Equinf.MaxReadByte",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_BreakByte,
+ { "BreakByte", "wreth.Mail.Equinf.BreakByte",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_MaxWriteIByte,
+ { "MaxWriteIByte", "wreth.Mail.Equinf.MaxWriteIByte",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_MaxReadIByte,
+ { "MaxReadIByte", "wreth.Mail.Equinf.MaxReadIByte",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_BreakIByte,
+ { "BreakIByte", "wreth.Mail.Equinf.BreakIByte",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_MaxWriteQByte,
+ { "MaxWriteQByte", "wreth.Mail.Equinf.MaxWriteQByte",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_MaxReadQByte,
+ { "MaxReadQByte", "wreth.Mail.Equinf.MaxReadQByte",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ }
+ ,
+ { &hf_Wreth_Mail_Equinf_BreakQByte ,
+ { "BreakQByte", "wreth.Mail.Equinf.BreakQByte",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_MaxWriteWord ,
+ { "MaxWriteWord", "wreth.Mail.Equinf.MaxWriteWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_MaxReadWord ,
+ { "MaxReadWord", "wreth.Mail.Equinf.MaxReadWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_BreakWord ,
+ { "BreakWord", "wreth.Mail.Equinf.BreakWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_MaxWriteIWord ,
+ { "MaxWriteIWord", "wreth.Mail.Equinf.MaxWriteIWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_MaxReadIWord ,
+ { "MaxReadIWord", "wreth.Mail.Equinf.MaxReadIWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_BreakIWord ,
+ { "BreakIWord", "wreth.Mail.Equinf.BreakIWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_MaxReadQWord ,
+ { "MaxReadQWord", "wreth.Mail.Equinf.MaxReadQWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_MaxWriteQWord ,
+ { "MaxWriteQWord", "wreth.Mail.Equinf.MaxWriteQWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_BreakQWord ,
+ { "BreakQWord", "wreth.Mail.Equinf.BreakQWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_MaxWriteDWord ,
+ { "MaxWriteDWord", "wreth.Mail.Equinf.MaxWriteDWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_MaxReadDWord ,
+ { "MaxReadDWord", "wreth.Mail.Equinf.MaxReadDWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_BreakDWord ,
+ { "BreakDWord", "wreth.Mail.Equinf.BreakDWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_MaxWriteFWord ,
+ { "MaxWriteFWord", "wreth.Mail.Equinf.MaxWriteFWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_MaxReadFWord ,
+ { "MaxReadFWord", "wreth.Mail.Equinf.MaxReadFWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_BreakFWord ,
+ { "BreakFWord", "wreth.Mail.Equinf.BreakFWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_ReadFactorWord ,
+ { "ReadFactorWord", "wreth.Mail.Equinf.ReadFactorWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_ReadFactorIWord ,
+ { "ReadFactorIWord", "wreth.Mail.Equinf.ReadFactorIWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_ReadFactorQWord ,
+ { "ReadFactorQWord", "wreth.Mail.Equinf.ReadFactorQWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_ReadFactorDWord ,
+ { "ReadFactorDWord", "wreth.Mail.Equinf.ReadFactorDWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_ReadFactorFWord ,
+ { "ReadFactorFWord", "wreth.Mail.Equinf.ReadFactorFWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_WriteFactorWord ,
+ { "WriteFactorWord", "wreth.Mail.Equinf.WriteFactorWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_WriteFactorIWord ,
+ { "WriteFactorIWord", "wreth.Mail.Equinf.WriteFactorIWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_WriteFactorQWord ,
+ { "WriteFactorQWord", "wreth.Mail.Equinf.WriteFactorQWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_WriteFactorDWord ,
+ { "WriteFactorDWord", "wreth.Mail.Equinf.WriteFactorDWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_WriteFactorFWord ,
+ { "WriteFactorFWord", "wreth.Mail.Equinf.WriteFactorFWord",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_DataFormat ,
+ { "DataFormat", "wreth.Mail.Equinf.DataFormat",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_Wreth_Mail_Equinf_BreakIBit ,
+ { "BreakIBit", "wreth.Mail.Equinf.BreakIBit",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ }
+ };
+
+ static gint *ett[] = {
+ &ett_wreth
+ };
+
+ wreth_proto = proto_register_protocol (
+ "WSE remote ethernet", /* name */
+ "WRETH", /* short name */
+ "wreth" /* abbrev */
+ );
+ proto_register_field_array(wreth_proto, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+}
+
+void proto_reg_handoff_wreth(void)
+{
+ static dissector_handle_t wreth_handle;
+
+ wreth_handle = create_dissector_handle(dissect_wreth, wreth_proto);
+ dissector_add_uint("ethertype", WRETH_PORT, wreth_handle);
+}
+
+/*
+ * Editor modelines - http://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vi: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
+ */
diff --git a/epan/dissectors/packet-wsmp.c b/epan/dissectors/packet-wsmp.c
index 95db12ca2d..30ceaf12c6 100644
--- a/epan/dissectors/packet-wsmp.c
+++ b/epan/dissectors/packet-wsmp.c
@@ -29,7 +29,7 @@
# include "config.h"
#endif
-#include <stdlib.h>
+#include <glib.h>
#include <epan/packet.h>
#include <epan/etypes.h>
diff --git a/epan/dissectors/packet-wtls.c b/epan/dissectors/packet-wtls.c
index d16fbc6e77..ea25caec07 100644
--- a/epan/dissectors/packet-wtls.c
+++ b/epan/dissectors/packet-wtls.c
@@ -31,78 +31,80 @@
# include "config.h"
#endif
+#ifdef DEBUG
#include <stdio.h>
-#include <stdlib.h>
+#endif
#include <glib.h>
+
#include <epan/packet.h>
#include "packet-wap.h"
#include "packet-wtls.h"
/* File scoped variables for the protocol and registered fields */
-static int proto_wtls = HF_EMPTY;
+static int proto_wtls = HF_EMPTY;
/* These fields used by fixed part of header */
-static int hf_wtls_record = HF_EMPTY;
-static int hf_wtls_record_type = HF_EMPTY;
-static int hf_wtls_record_length = HF_EMPTY;
-static int hf_wtls_record_sequence = HF_EMPTY;
-static int hf_wtls_record_ciphered = HF_EMPTY;
-static int hf_wtls_hands = HF_EMPTY;
-static int hf_wtls_hands_type = HF_EMPTY;
-static int hf_wtls_hands_length = HF_EMPTY;
-static int hf_wtls_hands_cli_hello = HF_EMPTY;
-static int hf_wtls_hands_cli_hello_version = HF_EMPTY;
-static int hf_wtls_hands_cli_hello_gmt = HF_EMPTY;
-static int hf_wtls_hands_cli_hello_random = HF_EMPTY;
-static int hf_wtls_hands_cli_hello_session = HF_EMPTY;
-static int hf_wtls_hands_cli_hello_session_str = HF_EMPTY;
-static int hf_wtls_hands_cli_hello_cli_key_id = HF_EMPTY;
-static int hf_wtls_hands_cli_hello_cli_key_len = HF_EMPTY;
-static int hf_wtls_hands_cli_hello_trust_key_id = HF_EMPTY;
-static int hf_wtls_hands_cli_hello_key_exchange =HF_EMPTY;
-static int hf_wtls_hands_cli_hello_key_exchange_suite =HF_EMPTY;
-static int hf_wtls_hands_cli_hello_key_parameter_index =HF_EMPTY;
-static int hf_wtls_hands_cli_hello_key_parameter_set =HF_EMPTY;
-static int hf_wtls_hands_cli_hello_key_identifier_type =HF_EMPTY;
-static int hf_wtls_hands_cli_hello_key_identifier_charset =HF_EMPTY;
-static int hf_wtls_hands_cli_hello_key_identifier_size =HF_EMPTY;
-static int hf_wtls_hands_cli_hello_key_identifier =HF_EMPTY;
-static int hf_wtls_hands_cli_hello_key_identifier_str =HF_EMPTY;
-static int hf_wtls_hands_cli_hello_cipher_suite =HF_EMPTY;
-static int hf_wtls_hands_cli_hello_cipher_suite_item =HF_EMPTY;
-static int hf_wtls_hands_cli_hello_compression_methods =HF_EMPTY;
-static int hf_wtls_hands_cli_hello_compression =HF_EMPTY;
-static int hf_wtls_hands_cli_hello_sequence_mode =HF_EMPTY;
-static int hf_wtls_hands_cli_hello_key_refresh =HF_EMPTY;
-static int hf_wtls_hands_serv_hello = HF_EMPTY;
-static int hf_wtls_hands_serv_hello_version = HF_EMPTY;
-static int hf_wtls_hands_serv_hello_gmt = HF_EMPTY;
-static int hf_wtls_hands_serv_hello_random = HF_EMPTY;
-static int hf_wtls_hands_serv_hello_session = HF_EMPTY;
-static int hf_wtls_hands_serv_hello_session_str = HF_EMPTY;
-static int hf_wtls_hands_serv_hello_cli_key_id =HF_EMPTY;
-static int hf_wtls_hands_serv_hello_cipher_suite_item =HF_EMPTY;
-static int hf_wtls_hands_serv_hello_cipher_bulk =HF_EMPTY;
-static int hf_wtls_hands_serv_hello_cipher_mac =HF_EMPTY;
-static int hf_wtls_hands_serv_hello_compression =HF_EMPTY;
-static int hf_wtls_hands_serv_hello_sequence_mode =HF_EMPTY;
-static int hf_wtls_hands_serv_hello_key_refresh =HF_EMPTY;
-static int hf_wtls_hands_certificates =HF_EMPTY;
-static int hf_wtls_hands_certificate =HF_EMPTY;
-static int hf_wtls_hands_certificate_type =HF_EMPTY;
-static int hf_wtls_hands_certificate_wtls_version =HF_EMPTY;
-static int hf_wtls_hands_certificate_wtls_signature_type =HF_EMPTY;
-static int hf_wtls_hands_certificate_wtls_issuer_type =HF_EMPTY;
-static int hf_wtls_hands_certificate_wtls_issuer_charset =HF_EMPTY;
-static int hf_wtls_hands_certificate_wtls_issuer_size =HF_EMPTY;
-static int hf_wtls_hands_certificate_wtls_issuer_name =HF_EMPTY;
-static int hf_wtls_hands_certificate_wtls_valid_not_before =HF_EMPTY;
-static int hf_wtls_hands_certificate_wtls_valid_not_after =HF_EMPTY;
-static int hf_wtls_hands_certificate_wtls_subject_type =HF_EMPTY;
-static int hf_wtls_hands_certificate_wtls_subject_charset =HF_EMPTY;
-static int hf_wtls_hands_certificate_wtls_subject_size = HF_EMPTY;
-static int hf_wtls_hands_certificate_wtls_subject_name = HF_EMPTY;
+static int hf_wtls_record = HF_EMPTY;
+static int hf_wtls_record_type = HF_EMPTY;
+static int hf_wtls_record_length = HF_EMPTY;
+static int hf_wtls_record_sequence = HF_EMPTY;
+static int hf_wtls_record_ciphered = HF_EMPTY;
+static int hf_wtls_hands = HF_EMPTY;
+static int hf_wtls_hands_type = HF_EMPTY;
+static int hf_wtls_hands_length = HF_EMPTY;
+static int hf_wtls_hands_cli_hello = HF_EMPTY;
+static int hf_wtls_hands_cli_hello_version = HF_EMPTY;
+static int hf_wtls_hands_cli_hello_gmt = HF_EMPTY;
+static int hf_wtls_hands_cli_hello_random = HF_EMPTY;
+static int hf_wtls_hands_cli_hello_session = HF_EMPTY;
+static int hf_wtls_hands_cli_hello_session_str = HF_EMPTY;
+static int hf_wtls_hands_cli_hello_cli_key_id = HF_EMPTY;
+static int hf_wtls_hands_cli_hello_cli_key_len = HF_EMPTY;
+static int hf_wtls_hands_cli_hello_trust_key_id = HF_EMPTY;
+static int hf_wtls_hands_cli_hello_key_exchange = HF_EMPTY;
+static int hf_wtls_hands_cli_hello_key_exchange_suite = HF_EMPTY;
+static int hf_wtls_hands_cli_hello_key_parameter_index = HF_EMPTY;
+static int hf_wtls_hands_cli_hello_key_parameter_set = HF_EMPTY;
+static int hf_wtls_hands_cli_hello_key_identifier_type = HF_EMPTY;
+static int hf_wtls_hands_cli_hello_key_identifier_charset = HF_EMPTY;
+static int hf_wtls_hands_cli_hello_key_identifier_size = HF_EMPTY;
+static int hf_wtls_hands_cli_hello_key_identifier = HF_EMPTY;
+static int hf_wtls_hands_cli_hello_key_identifier_str = HF_EMPTY;
+static int hf_wtls_hands_cli_hello_cipher_suite = HF_EMPTY;
+static int hf_wtls_hands_cli_hello_cipher_suite_item = HF_EMPTY;
+static int hf_wtls_hands_cli_hello_compression_methods = HF_EMPTY;
+static int hf_wtls_hands_cli_hello_compression = HF_EMPTY;
+static int hf_wtls_hands_cli_hello_sequence_mode = HF_EMPTY;
+static int hf_wtls_hands_cli_hello_key_refresh = HF_EMPTY;
+static int hf_wtls_hands_serv_hello = HF_EMPTY;
+static int hf_wtls_hands_serv_hello_version = HF_EMPTY;
+static int hf_wtls_hands_serv_hello_gmt = HF_EMPTY;
+static int hf_wtls_hands_serv_hello_random = HF_EMPTY;
+static int hf_wtls_hands_serv_hello_session = HF_EMPTY;
+static int hf_wtls_hands_serv_hello_session_str = HF_EMPTY;
+static int hf_wtls_hands_serv_hello_cli_key_id = HF_EMPTY;
+static int hf_wtls_hands_serv_hello_cipher_suite_item = HF_EMPTY;
+static int hf_wtls_hands_serv_hello_cipher_bulk = HF_EMPTY;
+static int hf_wtls_hands_serv_hello_cipher_mac = HF_EMPTY;
+static int hf_wtls_hands_serv_hello_compression = HF_EMPTY;
+static int hf_wtls_hands_serv_hello_sequence_mode = HF_EMPTY;
+static int hf_wtls_hands_serv_hello_key_refresh = HF_EMPTY;
+static int hf_wtls_hands_certificates = HF_EMPTY;
+static int hf_wtls_hands_certificate = HF_EMPTY;
+static int hf_wtls_hands_certificate_type = HF_EMPTY;
+static int hf_wtls_hands_certificate_wtls_version = HF_EMPTY;
+static int hf_wtls_hands_certificate_wtls_signature_type = HF_EMPTY;
+static int hf_wtls_hands_certificate_wtls_issuer_type = HF_EMPTY;
+static int hf_wtls_hands_certificate_wtls_issuer_charset = HF_EMPTY;
+static int hf_wtls_hands_certificate_wtls_issuer_size = HF_EMPTY;
+static int hf_wtls_hands_certificate_wtls_issuer_name = HF_EMPTY;
+static int hf_wtls_hands_certificate_wtls_valid_not_before = HF_EMPTY;
+static int hf_wtls_hands_certificate_wtls_valid_not_after = HF_EMPTY;
+static int hf_wtls_hands_certificate_wtls_subject_type = HF_EMPTY;
+static int hf_wtls_hands_certificate_wtls_subject_charset = HF_EMPTY;
+static int hf_wtls_hands_certificate_wtls_subject_size = HF_EMPTY;
+static int hf_wtls_hands_certificate_wtls_subject_name = HF_EMPTY;
static int hf_wtls_hands_certificate_wtls_public_key_type = HF_EMPTY;
static int hf_wtls_hands_certificate_wtls_key_parameter_index = HF_EMPTY;
static int hf_wtls_hands_certificate_wtls_key_parameter_set = HF_EMPTY;
@@ -114,12 +116,12 @@ static int hf_wtls_alert_level = HF_EMPTY;
static int hf_wtls_alert_description = HF_EMPTY;
/* Initialize the subtree pointers */
-static gint ett_wtls = ETT_EMPTY;
-static gint ett_wtls_rec = ETT_EMPTY;
-static gint ett_wtls_msg_type = ETT_EMPTY;
-static gint ett_wtls_msg_type_item = ETT_EMPTY;
-static gint ett_wtls_msg_type_item_sub = ETT_EMPTY;
-static gint ett_wtls_msg_type_item_sub_sub = ETT_EMPTY;
+static gint ett_wtls = ETT_EMPTY;
+static gint ett_wtls_rec = ETT_EMPTY;
+static gint ett_wtls_msg_type = ETT_EMPTY;
+static gint ett_wtls_msg_type_item = ETT_EMPTY;
+static gint ett_wtls_msg_type_item_sub = ETT_EMPTY;
+static gint ett_wtls_msg_type_item_sub_sub = ETT_EMPTY;
static const value_string wtls_vals_record_type[] = {
{ 1, "change_cipher_data" },
@@ -159,9 +161,9 @@ static const value_string wtls_vals_cipher_mac[] = {
static value_string_ext wtls_vals_cipher_mac_ext = VALUE_STRING_EXT_INIT(wtls_vals_cipher_mac);
static const value_string wtls_vals_handshake_type[] = {
- { 0, "Hello Request" },
- { 1, "Client Hello" },
- { 2, "Server Hello" },
+ { 0, "Hello Request" },
+ { 1, "Client Hello" },
+ { 2, "Server Hello" },
{ 11, "Certificate" },
{ 12, "Server Key Exchange" },
{ 13, "Certificate Request" },
@@ -169,21 +171,21 @@ static const value_string wtls_vals_handshake_type[] = {
{ 15, "Certificate Verify" },
{ 16, "Client Key Exchange" },
{ 20, "Finished" },
- { 0x00, NULL }
+ { 0, NULL }
};
static value_string_ext wtls_vals_handshake_type_ext = VALUE_STRING_EXT_INIT(wtls_vals_handshake_type);
static const value_string wtls_vals_key_exchange_suite[] = {
- { 0, "NULL" },
- { 1, "Shared Secret" },
- { 2, "Diffie Hellman Anonymous" },
- { 3, "Diffie Hellman Anonymous 512" },
- { 4, "Diffie Hellman Anonymous 768" },
- { 5, "RSA Anonymous" },
- { 6, "RSA Anonymous 512" },
- { 7, "RSA Anonymous 768" },
- { 8, "RSA" },
- { 9, "RSA 512" },
+ { 0, "NULL" },
+ { 1, "Shared Secret" },
+ { 2, "Diffie Hellman Anonymous" },
+ { 3, "Diffie Hellman Anonymous 512" },
+ { 4, "Diffie Hellman Anonymous 768" },
+ { 5, "RSA Anonymous" },
+ { 6, "RSA Anonymous 512" },
+ { 7, "RSA Anonymous 768" },
+ { 8, "RSA" },
+ { 9, "RSA 512" },
{ 10, "RSA 768" },
{ 11, "EC Diffie Hellman Anonymous" },
{ 12, "EC Diffie Hellman Anonymous 113" },
@@ -198,12 +200,12 @@ static const value_string wtls_vals_key_exchange_suite[] = {
static value_string_ext wtls_vals_key_exchange_suite_ext = VALUE_STRING_EXT_INIT(wtls_vals_key_exchange_suite);
static const value_string wtls_vals_identifier_type[] = {
- { 0, "No identifier" },
- { 1, "Textual Name" },
- { 2, "Binary Name" },
+ { 0, "No identifier" },
+ { 1, "Textual Name" },
+ { 2, "Binary Name" },
{ 254, "SHA-1 Hash of Public Key" },
{ 255, "x509 Distinguished Name" },
- { 0x00, NULL }
+ { 0, NULL }
};
static value_string_ext wtls_vals_identifier_type_ext = VALUE_STRING_EXT_INIT(wtls_vals_identifier_type);
@@ -212,77 +214,77 @@ static const value_string wtls_vals_certificate_type[] = {
{ 2, "X.509" },
{ 3, "X.968" },
{ 4, "URL" },
- { 0x00, NULL }
+ { 0, NULL }
};
static value_string_ext wtls_vals_certificate_type_ext = VALUE_STRING_EXT_INIT(wtls_vals_certificate_type);
static const value_string wtls_vals_compression[] = {
{ 0, "Null" },
- { 0x00, NULL }
+ { 0, NULL }
};
static const value_string wtls_vals_sequence_mode[] = {
{ 0, "Off" },
{ 1, "Implicit" },
{ 2, "Explicit" },
- { 0x00, NULL }
+ { 0, NULL }
};
static const value_string wtls_vals_certificate_signature[] = {
{ 0, "Anonymous" },
{ 1, "ECDSA_SHA" },
{ 2, "RSA_SHA" },
- { 0x00, NULL }
+ { 0, NULL }
};
static const value_string wtls_vals_public_key_type[] = {
{ 2, "RSA" },
{ 3, "ECDH" },
{ 4, "ECSA" },
- { 0x00, NULL }
+ { 0, NULL }
};
static const value_string wtls_vals_alert_level[] = {
{ 1, "Warning" },
{ 2, "Critical" },
{ 3, "Fatal" },
- { 0x00, NULL }
+ { 0, NULL }
};
static const value_string wtls_vals_alert_description[] = {
- { 0,"connection_close_notify"},
- { 1,"session_close_notify"},
- { 5,"no_connection"},
- { 10,"unexpected_message"},
- { 11,"time_required"},
- { 20,"bad_record_mac"},
- { 21,"decryption_failed"},
- { 22,"record_overflow"},
- { 30,"decompression_failure"},
- { 40,"handshake_failure"},
- { 42,"bad_certificate"},
- { 43,"unsupported_certificate"},
- { 44,"certificate_revoked"},
- { 45,"certificate_expired"},
- { 46,"certificate_unknown"},
- { 47,"illegal_parameter"},
- { 48,"unknown_ca"},
- { 49,"access_denied"},
- { 50,"decode_error"},
- { 51,"decrypt_error"},
- { 52,"unknown_key_id"},
- { 53,"disabled_key_id"},
- { 54,"key_exchange_disabled"},
- { 55,"session_not_ready"},
- { 56,"unknown_parameter_index"},
- { 57,"duplicate_finished_received"},
- { 60,"export_restriction"},
- { 70,"protocol_version"},
- { 71,"insufficient_security"},
- { 80,"internal_error"},
- { 90,"user_canceled"},
- { 100,"no_renegotiation"},
- { 0x00, NULL }
+ { 0, "connection_close_notify"},
+ { 1, "session_close_notify"},
+ { 5, "no_connection"},
+ { 10, "unexpected_message"},
+ { 11, "time_required"},
+ { 20, "bad_record_mac"},
+ { 21, "decryption_failed"},
+ { 22, "record_overflow"},
+ { 30, "decompression_failure"},
+ { 40, "handshake_failure"},
+ { 42, "bad_certificate"},
+ { 43, "unsupported_certificate"},
+ { 44, "certificate_revoked"},
+ { 45, "certificate_expired"},
+ { 46, "certificate_unknown"},
+ { 47, "illegal_parameter"},
+ { 48, "unknown_ca"},
+ { 49, "access_denied"},
+ { 50, "decode_error"},
+ { 51, "decrypt_error"},
+ { 52, "unknown_key_id"},
+ { 53, "disabled_key_id"},
+ { 54, "key_exchange_disabled"},
+ { 55, "session_not_ready"},
+ { 56, "unknown_parameter_index"},
+ { 57, "duplicate_finished_received"},
+ { 60, "export_restriction"},
+ { 70, "protocol_version"},
+ { 71, "insufficient_security"},
+ { 80, "internal_error"},
+ { 90, "user_canceled"},
+ { 100, "no_renegotiation"},
+ { 0, NULL }
};
static value_string_ext wtls_vals_alert_description_ext = VALUE_STRING_EXT_INIT(wtls_vals_alert_description);
@@ -294,24 +296,24 @@ static value_string_ext wtls_vals_alert_description_ext = VALUE_STRING_EXT_INIT(
#define WTLS_ALERT 0x02
#define WTLS_PLAIN_HANDSHAKE 0x03
-#define WTLS_HANDSHAKE_CLIENT_HELLO 1
-#define WTLS_HANDSHAKE_SERVER_HELLO 2
+#define WTLS_HANDSHAKE_CLIENT_HELLO 1
+#define WTLS_HANDSHAKE_SERVER_HELLO 2
#define WTLS_HANDSHAKE_CERTIFICATE 11
-#define CERTIFICATE_WTLS 1
-#define CERTIFICATE_X509 2
-#define CERTIFICATE_X968 3
-#define CERTIFICATE_URL 4
+#define CERTIFICATE_WTLS 1
+#define CERTIFICATE_X509 2
+#define CERTIFICATE_X968 3
+#define CERTIFICATE_URL 4
-#define IDENTIFIER_NULL 0
-#define IDENTIFIER_TEXT 1
-#define IDENTIFIER_BIN 2
-#define IDENTIFIER_SHA_1 254
-#define IDENTIFIER_X509 255
+#define IDENTIFIER_NULL 0
+#define IDENTIFIER_TEXT 1
+#define IDENTIFIER_BIN 2
+#define IDENTIFIER_SHA_1 254
+#define IDENTIFIER_X509 255
-#define PUBLIC_KEY_RSA 2
-#define PUBLIC_KEY_ECDH 3
-#define PUBLIC_KEY_ECDSA 4
+#define PUBLIC_KEY_RSA 2
+#define PUBLIC_KEY_ECDH 3
+#define PUBLIC_KEY_ECDSA 4
static void dissect_wtls_handshake (proto_tree *, tvbuff_t *, guint, guint);
diff --git a/epan/dissectors/packet-wtp.c b/epan/dissectors/packet-wtp.c
index 7370f63cbf..cf2df5a924 100644
--- a/epan/dissectors/packet-wtp.c
+++ b/epan/dissectors/packet-wtp.c
@@ -31,10 +31,12 @@
# include "config.h"
#endif
+#ifdef DEBUG
#include <stdio.h>
-#include <stdlib.h>
+#endif
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/reassemble.h>
#include <epan/emem.h>
diff --git a/epan/dissectors/packet-x11.c b/epan/dissectors/packet-x11.c
index 218fee2bca..b72fc43e37 100644
--- a/epan/dissectors/packet-x11.c
+++ b/epan/dissectors/packet-x11.c
@@ -55,12 +55,11 @@
#endif
#include <assert.h>
+#include <string.h>
#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
#include <glib.h>
+
#include <epan/packet.h>
#include <epan/conversation.h>
#include <epan/expert.h>
@@ -1066,25 +1065,25 @@ static const value_string zero_is_none_vals[] = {
************************************************************************/
#define VALUE8(tvb, offset) (tvb_get_guint8(tvb, offset))
-#define VALUE16(tvb, offset) (little_endian ? tvb_get_letohs(tvb, offset) : tvb_get_ntohs(tvb, offset))
-#define VALUE32(tvb, offset) (little_endian ? tvb_get_letohl(tvb, offset) : tvb_get_ntohl(tvb, offset))
-#define FLOAT(tvb, offset) (little_endian ? tvb_get_letohieee_float(tvb, offset) : tvb_get_ntohieee_float(tvb, offset))
-#define DOUBLE(tvb, offset) (little_endian ? tvb_get_letohieee_double(tvb, offset) : tvb_get_ntohieee_double(tvb, offset))
+#define VALUE16(tvb, offset) (byte_order == ENC_BIG_ENDIAN ? tvb_get_ntohs(tvb, offset) : tvb_get_letohs(tvb, offset))
+#define VALUE32(tvb, offset) (byte_order == ENC_BIG_ENDIAN ? tvb_get_ntohl(tvb, offset) : tvb_get_letohl(tvb, offset))
+#define FLOAT(tvb, offset) (byte_order == ENC_BIG_ENDIAN ? tvb_get_ntohieee_float(tvb, offset) : tvb_get_letohieee_float(tvb, offset))
+#define DOUBLE(tvb, offset) (byte_order == ENC_BIG_ENDIAN ? tvb_get_ntohieee_double(tvb, offset) : tvb_get_letohieee_double(tvb, offset))
-#define FIELD8(name) (field8(tvb, offsetp, t, hf_x11_##name, little_endian))
-#define FIELD16(name) (field16(tvb, offsetp, t, hf_x11_##name, little_endian))
-#define FIELD32(name) (field32(tvb, offsetp, t, hf_x11_##name, little_endian))
+#define FIELD8(name) (field8(tvb, offsetp, t, hf_x11_##name, byte_order))
+#define FIELD16(name) (field16(tvb, offsetp, t, hf_x11_##name, byte_order))
+#define FIELD32(name) (field32(tvb, offsetp, t, hf_x11_##name, byte_order))
#define BITFIELD(TYPE, position, name) { \
int unused; \
int save = *offsetp; \
proto_tree_add_item(bitmask_tree, hf_x11_##position##_##name, tvb, bitmask_offset, \
- bitmask_size, little_endian); \
+ bitmask_size, byte_order); \
if (bitmask_value & proto_registrar_get_nth(hf_x11_##position##_##name) -> bitmask) { \
TYPE(name); \
unused = save + 4 - *offsetp; \
if (unused) \
- proto_tree_add_item(t, hf_x11_unused, tvb, *offsetp, unused, little_endian); \
+ proto_tree_add_item(t, hf_x11_unused, tvb, *offsetp, unused, ENC_NA); \
*offsetp = save + 4; \
} \
}
@@ -1096,7 +1095,7 @@ static const value_string zero_is_none_vals[] = {
if (bitmask_value & proto_registrar_get_nth(hf_x11_##position##_mask##_##name) -> bitmask) \
proto_tree_add_boolean(bitmask_tree, hf_x11_##position##_mask##_##name, tvb, bitmask_offset, bitmask_size, bitmask_value); } while (0)
-#define ATOM(name) { atom(tvb, offsetp, t, hf_x11_##name, little_endian); }
+#define ATOM(name) { atom(tvb, offsetp, t, hf_x11_##name, byte_order); }
#define BITGRAVITY(name) { gravity(tvb, offsetp, t, hf_x11_##name, "Forget"); }
#define BITMASK(name, size) {\
proto_item *bitmask_ti; \
@@ -1162,28 +1161,28 @@ static const value_string zero_is_none_vals[] = {
event_proto_tree = proto_item_add_subtree(event_ti, \
ett_x11_event); \
decode_x11_event(next_tvb, eventcode, sent, event_proto_tree, \
- state, little_endian); \
+ state, byte_order); \
offset = next_offset; \
} while (0)
-#define LISTofARC(name) { listOfArc(tvb, offsetp, t, hf_x11_##name, (next_offset - *offsetp) / 12, little_endian); }
-#define LISTofATOM(name, length) { listOfAtom(tvb, offsetp, t, hf_x11_##name, (length) / 4, little_endian); }
-#define LISTofBYTE(name, length) { listOfByte(tvb, offsetp, t, hf_x11_##name, (length), little_endian); }
-#define LISTofCARD8(name, length) { listOfByte(tvb, offsetp, t, hf_x11_##name, (length), little_endian); }
+#define LISTofARC(name) { listOfArc(tvb, offsetp, t, hf_x11_##name, (next_offset - *offsetp) / 12, byte_order); }
+#define LISTofATOM(name, length) { listOfAtom(tvb, offsetp, t, hf_x11_##name, (length) / 4, byte_order); }
+#define LISTofBYTE(name, length) { listOfByte(tvb, offsetp, t, hf_x11_##name, (length), byte_order); }
+#define LISTofCARD8(name, length) { listOfByte(tvb, offsetp, t, hf_x11_##name, (length), byte_order); }
#define LISTofIPADDRESS(name, length) { listOfByte(tvb, offsetp, t, hf_x11_##name, (length), FALSE); }
-#define LISTofCARD16(name, length) { listOfCard16(tvb, offsetp, t, hf_x11_##name, hf_x11_##name##_item, (length) / 2, little_endian); }
-#define LISTofCARD32(name, length) { listOfCard32(tvb, offsetp, t, hf_x11_##name, hf_x11_##name##_item, (length) / 4, little_endian); }
-#define LISTofCOLORITEM(name, length) { listOfColorItem(tvb, offsetp, t, hf_x11_##name, (length) / 12, little_endian); }
-#define LISTofKEYCODE(map, name, length) { listOfKeycode(tvb, offsetp, t, hf_x11_##name, map, (length), little_endian); }
+#define LISTofCARD16(name, length) { listOfCard16(tvb, offsetp, t, hf_x11_##name, hf_x11_##name##_item, (length) / 2, byte_order); }
+#define LISTofCARD32(name, length) { listOfCard32(tvb, offsetp, t, hf_x11_##name, hf_x11_##name##_item, (length) / 4, byte_order); }
+#define LISTofCOLORITEM(name, length) { listOfColorItem(tvb, offsetp, t, hf_x11_##name, (length) / 12, byte_order); }
+#define LISTofKEYCODE(map, name, length) { listOfKeycode(tvb, offsetp, t, hf_x11_##name, map, (length), byte_order); }
#define LISTofKEYSYM(name, map, keycode_first, keycode_count, \
keysyms_per_keycode) {\
- listOfKeysyms(tvb, offsetp, t, hf_x11_##name, hf_x11_##name##_item, map, (keycode_first), (keycode_count), (keysyms_per_keycode), little_endian); }
-#define LISTofPOINT(name, length) { listOfPoint(tvb, offsetp, t, hf_x11_##name, (length) / 4, little_endian); }
-#define LISTofRECTANGLE(name) { listOfRectangle(tvb, offsetp, t, hf_x11_##name, (next_offset - *offsetp) / 8, little_endian); }
-#define LISTofSEGMENT(name) { listOfSegment(tvb, offsetp, t, hf_x11_##name, (next_offset - *offsetp) / 8, little_endian); }
-#define LISTofSTRING8(name, length) { listOfString8(tvb, offsetp, t, hf_x11_##name, hf_x11_##name##_string, (length), little_endian); }
-#define LISTofTEXTITEM8(name) { listOfTextItem(tvb, offsetp, t, hf_x11_##name, FALSE, next_offset, little_endian); }
-#define LISTofTEXTITEM16(name) { listOfTextItem(tvb, offsetp, t, hf_x11_##name, TRUE, next_offset, little_endian); }
+ listOfKeysyms(tvb, offsetp, t, hf_x11_##name, hf_x11_##name##_item, map, (keycode_first), (keycode_count), (keysyms_per_keycode), byte_order); }
+#define LISTofPOINT(name, length) { listOfPoint(tvb, offsetp, t, hf_x11_##name, (length) / 4, byte_order); }
+#define LISTofRECTANGLE(name) { listOfRectangle(tvb, offsetp, t, hf_x11_##name, (next_offset - *offsetp) / 8, byte_order); }
+#define LISTofSEGMENT(name) { listOfSegment(tvb, offsetp, t, hf_x11_##name, (next_offset - *offsetp) / 8, byte_order); }
+#define LISTofSTRING8(name, length) { listOfString8(tvb, offsetp, t, hf_x11_##name, hf_x11_##name##_string, (length), byte_order); }
+#define LISTofTEXTITEM8(name) { listOfTextItem(tvb, offsetp, t, hf_x11_##name, FALSE, next_offset, byte_order); }
+#define LISTofTEXTITEM16(name) { listOfTextItem(tvb, offsetp, t, hf_x11_##name, TRUE, next_offset, byte_order); }
#define OPCODE() { \
opcode = VALUE8(tvb, *offsetp); \
proto_tree_add_uint_format(t, hf_x11_opcode, tvb, *offsetp, \
@@ -1193,18 +1192,18 @@ static const value_string zero_is_none_vals[] = {
}
#define PIXMAP(name) { FIELD32(name); }
-#define REQUEST_LENGTH() (requestLength(tvb, offsetp, t, little_endian))
-#define SETofEVENT(name) { setOfEvent(tvb, offsetp, t, little_endian); }
-#define SETofDEVICEEVENT(name) { setOfDeviceEvent(tvb, offsetp, t, little_endian);}
-#define SETofKEYMASK(name) { setOfKeyButMask(tvb, offsetp, t, little_endian, 0); }
-#define SETofKEYBUTMASK(name) { setOfKeyButMask(tvb, offsetp, t, little_endian, 1); }
-#define SETofPOINTEREVENT(name) { setOfPointerEvent(tvb, offsetp, t, little_endian); }
+#define REQUEST_LENGTH() (requestLength(tvb, offsetp, t, byte_order))
+#define SETofEVENT(name) { setOfEvent(tvb, offsetp, t, byte_order); }
+#define SETofDEVICEEVENT(name) { setOfDeviceEvent(tvb, offsetp, t, byte_order);}
+#define SETofKEYMASK(name) { setOfKeyButMask(tvb, offsetp, t, byte_order, 0); }
+#define SETofKEYBUTMASK(name) { setOfKeyButMask(tvb, offsetp, t, byte_order, 1); }
+#define SETofPOINTEREVENT(name) { setOfPointerEvent(tvb, offsetp, t, byte_order); }
#define STRING8(name, length) { string8(tvb, offsetp, t, hf_x11_##name, length); }
-#define STRING16(name, length) { string16(tvb, offsetp, t, hf_x11_##name, hf_x11_##name##_bytes, length, little_endian); }
-#define TIMESTAMP(name){ timestamp(tvb, offsetp, t, hf_x11_##name, little_endian); }
-#define UNDECODED(x) { proto_tree_add_item(t, hf_x11_undecoded, tvb, *offsetp, x, little_endian); *offsetp += x; }
-#define UNUSED(x) { proto_tree_add_item(t, hf_x11_unused, tvb, *offsetp, x, little_endian); *offsetp += x; }
-#define PAD() { if (next_offset - *offsetp > 0) proto_tree_add_item(t, hf_x11_unused, tvb, *offsetp, next_offset - *offsetp, little_endian); *offsetp = next_offset; }
+#define STRING16(name, length) { string16(tvb, offsetp, t, hf_x11_##name, hf_x11_##name##_bytes, length, byte_order); }
+#define TIMESTAMP(name){ timestamp(tvb, offsetp, t, hf_x11_##name, byte_order); }
+#define UNDECODED(x) { proto_tree_add_item(t, hf_x11_undecoded, tvb, *offsetp, x, ENC_NA); *offsetp += x; }
+#define UNUSED(x) { proto_tree_add_item(t, hf_x11_unused, tvb, *offsetp, x, ENC_NA); *offsetp += x; }
+#define PAD() { if (next_offset - *offsetp > 0) proto_tree_add_item(t, hf_x11_unused, tvb, *offsetp, next_offset - *offsetp, ENC_NA); *offsetp = next_offset; }
#define WINDOW(name) { FIELD32(name); }
#define WINGRAVITY(name) { gravity(tvb, offsetp, t, hf_x11_##name, "Unmap"); }
@@ -1223,7 +1222,7 @@ static const value_string zero_is_none_vals[] = {
INT16(root_y); \
INT16(event_x); \
INT16(event_y); \
- setOfKeyButMask(tvb, offsetp, t, little_endian, 1); \
+ setOfKeyButMask(tvb, offsetp, t, byte_order, 1); \
} while (0)
#define SEQUENCENUMBER_REPLY(name) do { \
@@ -1241,12 +1240,12 @@ static const value_string zero_is_none_vals[] = {
#define REPLYCONTENTS_COMMON() do { \
REPLY(reply); \
proto_tree_add_item(t, hf_x11_undecoded, tvb, *offsetp, \
- 1, little_endian); \
+ 1, ENC_NA); \
++(*offsetp); \
SEQUENCENUMBER_REPLY(sequencenumber); \
REPLYLENGTH(replylength); \
proto_tree_add_item(t, hf_x11_undecoded, tvb, *offsetp, \
- tvb_reported_length_remaining(tvb, *offsetp), little_endian); \
+ tvb_reported_length_remaining(tvb, *offsetp), ENC_NA); \
*offsetp += tvb_reported_length_remaining(tvb, *offsetp); \
} while (0)
@@ -1272,7 +1271,7 @@ static const value_string zero_is_none_vals[] = {
} \
\
TRY { \
- func(next_tvb, pinfo, tree, sep, state, little_endian); \
+ func(next_tvb, pinfo, tree, sep, state, byte_order); \
} \
\
CATCH(BoundsError) { \
@@ -1289,27 +1288,27 @@ static const value_string zero_is_none_vals[] = {
static void
dissect_x11_initial_reply(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
const char *sep, x11_conv_data_t *volatile state,
- gboolean little_endian);
+ guint byte_order);
static void
dissect_x11_reply(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
const char *volatile sep, x11_conv_data_t *volatile state,
- gboolean little_endian);
+ guint byte_order);
static void
dissect_x11_error(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
const char *volatile sep, x11_conv_data_t *volatile state,
- gboolean little_endian);
+ guint byte_order);
static void
dissect_x11_event(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
const char *volatile sep, x11_conv_data_t *volatile state,
- gboolean little_endian);
+ guint byte_order);
static void
decode_x11_event(tvbuff_t *tvb, unsigned char eventcode, const char *sent,
proto_tree *t, x11_conv_data_t *volatile state,
- gboolean little_endian);
+ guint byte_order);
static x11_conv_data_t *
x11_stateinit(conversation_t *conversation);
@@ -1325,7 +1324,7 @@ keysymString(guint32 v);
************************************************************************/
static void atom(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
- gboolean little_endian)
+ guint byte_order)
{
const char *interpretation = NULL;
@@ -1420,9 +1419,9 @@ static void gravity(tvbuff_t *tvb, int *offsetp, proto_tree *t,
}
static void listOfArc(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
- int length, gboolean little_endian)
+ int length, guint byte_order)
{
- proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, length * 8, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, length * 8, byte_order);
proto_tree *tt = proto_item_add_subtree(ti, ett_x11_list_of_arc);
while(length--) {
gint16 x = VALUE16(tvb, *offsetp);
@@ -1453,26 +1452,26 @@ static void listOfArc(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
}
static void listOfAtom(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
- int length, gboolean little_endian)
+ int length, guint byte_order)
{
- proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, length * 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, length * 4, byte_order);
proto_tree *tt = proto_item_add_subtree(ti, ett_x11_list_of_atom);
while(length--)
- atom(tvb, offsetp, tt, hf_x11_properties_item, little_endian);
+ atom(tvb, offsetp, tt, hf_x11_properties_item, byte_order);
}
static void listOfByte(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
- int length, gboolean little_endian)
+ int length, guint byte_order)
{
if (length <= 0) length = 1;
- proto_tree_add_item(t, hf, tvb, *offsetp, length, little_endian);
+ proto_tree_add_item(t, hf, tvb, *offsetp, length, byte_order);
*offsetp += length;
}
static void listOfCard16(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
- int hf_item, int length, gboolean little_endian)
+ int hf_item, int length, guint byte_order)
{
- proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, length * 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, length * 2, byte_order);
proto_tree *tt = proto_item_add_subtree(ti, ett_x11_list_of_card32);
while(length--) {
proto_tree_add_uint(tt, hf_item, tvb, *offsetp, 2, VALUE16(tvb, *offsetp));
@@ -1481,9 +1480,9 @@ static void listOfCard16(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
}
static void listOfInt16(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
- int hf_item, int length, gboolean little_endian)
+ int hf_item, int length, guint byte_order)
{
- proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, length * 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, length * 2, byte_order);
proto_tree *tt = proto_item_add_subtree(ti, ett_x11_list_of_card32);
while(length--) {
proto_tree_add_int(tt, hf_item, tvb, *offsetp, 2, VALUE16(tvb, *offsetp));
@@ -1492,9 +1491,9 @@ static void listOfInt16(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
}
static void listOfCard32(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
- int hf_item, int length, gboolean little_endian)
+ int hf_item, int length, guint byte_order)
{
- proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, length * 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, length * 4, byte_order);
proto_tree *tt = proto_item_add_subtree(ti, ett_x11_list_of_card32);
while(length--) {
proto_tree_add_uint(tt, hf_item, tvb, *offsetp, 4, VALUE32(tvb, *offsetp));
@@ -1503,9 +1502,9 @@ static void listOfCard32(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
}
static void listOfInt32(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
- int hf_item, int length, gboolean little_endian)
+ int hf_item, int length, guint byte_order)
{
- proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, length * 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, length * 4, byte_order);
proto_tree *tt = proto_item_add_subtree(ti, ett_x11_list_of_card32);
while(length--) {
proto_tree_add_int(tt, hf_item, tvb, *offsetp, 4, VALUE32(tvb, *offsetp));
@@ -1514,9 +1513,9 @@ static void listOfInt32(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
}
static void listOfFloat(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
- int hf_item, int length, gboolean little_endian)
+ int hf_item, int length, guint byte_order)
{
- proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, length * 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, length * 4, byte_order);
proto_tree *tt = proto_item_add_subtree(ti, ett_x11_list_of_float);
while(length--) {
proto_tree_add_float(tt, hf_item, tvb, *offsetp, 4, FLOAT(tvb, *offsetp));
@@ -1525,9 +1524,9 @@ static void listOfFloat(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
}
static void listOfDouble(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
- int hf_item, int length, gboolean little_endian)
+ int hf_item, int length, guint byte_order)
{
- proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, length * 8, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, length * 8, byte_order);
proto_tree *tt = proto_item_add_subtree(ti, ett_x11_list_of_double);
while(length--) {
proto_tree_add_double(tt, hf_item, tvb, *offsetp, 8, DOUBLE(tvb, *offsetp));
@@ -1536,9 +1535,9 @@ static void listOfDouble(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
}
static void listOfColorItem(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
- int length, gboolean little_endian)
+ int length, guint byte_order)
{
- proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, length * 8, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, length * 8, byte_order);
proto_tree *tt = proto_item_add_subtree(ti, ett_x11_list_of_color_item);
while(length--) {
proto_item *tti;
@@ -1568,16 +1567,16 @@ static void listOfColorItem(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
tti = proto_tree_add_none_format(tt, hf_x11_coloritem, tvb, *offsetp, 12, "%s", buffer->str);
ttt = proto_item_add_subtree(tti, ett_x11_color_item);
- proto_tree_add_item(ttt, hf_x11_coloritem_pixel, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(ttt, hf_x11_coloritem_pixel, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(ttt, hf_x11_coloritem_red, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(ttt, hf_x11_coloritem_red, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- proto_tree_add_item(ttt, hf_x11_coloritem_green, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(ttt, hf_x11_coloritem_green, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- proto_tree_add_item(ttt, hf_x11_coloritem_blue, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(ttt, hf_x11_coloritem_blue, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
colorFlags(tvb, offsetp, ttt);
- proto_tree_add_item(ttt, hf_x11_coloritem_unused, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(ttt, hf_x11_coloritem_unused, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
}
@@ -1888,10 +1887,10 @@ static const char *keysymString(guint32 v)
static void listOfKeycode(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
int *modifiermap[], int keycodes_per_modifier,
- gboolean little_endian)
+ guint byte_order _U_)
{
proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp,
- array_length(modifiers) * keycodes_per_modifier, little_endian);
+ array_length(modifiers) * keycodes_per_modifier, ENC_NA);
proto_tree *tt = proto_item_add_subtree(ti, ett_x11_list_of_keycode);
size_t m;
@@ -1921,9 +1920,9 @@ static void listOfKeycode(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
static void listOfKeysyms(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
int hf_item, int *keycodemap[256],
int keycode_first, int keycode_count,
- int keysyms_per_keycode, gboolean little_endian)
+ int keysyms_per_keycode, guint byte_order)
{
- proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, keycode_count * keysyms_per_keycode * 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, keycode_count * keysyms_per_keycode * 4, byte_order);
proto_tree *tt = proto_item_add_subtree(ti, ett_x11_list_of_keysyms);
proto_item *tti;
proto_tree *ttt;
@@ -1994,9 +1993,9 @@ static void listOfKeysyms(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
}
static void listOfPoint(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
- int length, gboolean little_endian)
+ int length, guint byte_order)
{
- proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, length * 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, length * 4, byte_order);
proto_tree *tt = proto_item_add_subtree(ti, ett_x11_list_of_point);
while(length--) {
gint16 x, y;
@@ -2016,9 +2015,9 @@ static void listOfPoint(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
}
static void listOfRectangle(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
- int length, gboolean little_endian)
+ int length, guint byte_order)
{
- proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, length * 8, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, length * 8, byte_order);
proto_tree *tt = proto_item_add_subtree(ti, ett_x11_list_of_rectangle);
while(length--) {
gint16 x, y;
@@ -2046,9 +2045,9 @@ static void listOfRectangle(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
}
static void listOfSegment(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
- int length, gboolean little_endian)
+ int length, guint byte_order)
{
- proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, length * 8, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf, tvb, *offsetp, length * 8, byte_order);
proto_tree *tt = proto_item_add_subtree(ti, ett_x11_list_of_segment);
while(length--) {
gint16 x1, y1, x2, y2;
@@ -2063,13 +2062,13 @@ static void listOfSegment(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
tti = proto_tree_add_none_format(tt, hf_x11_segment, tvb, *offsetp, 8,
"segment: (%d,%d)-(%d,%d)", x1, y1, x2, y2);
ttt = proto_item_add_subtree(tti, ett_x11_segment);
- proto_tree_add_item(ttt, hf_x11_segment_x1, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(ttt, hf_x11_segment_x1, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- proto_tree_add_item(ttt, hf_x11_segment_y1, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(ttt, hf_x11_segment_y1, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- proto_tree_add_item(ttt, hf_x11_segment_x2, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(ttt, hf_x11_segment_x2, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- proto_tree_add_item(ttt, hf_x11_segment_y2, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(ttt, hf_x11_segment_y2, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
}
@@ -2088,7 +2087,7 @@ static void stringCopy(char *dest, const char *source, int length)
}
static void listOfString8(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
- int hf_item, int length, gboolean little_endian)
+ int hf_item, int length, guint byte_order)
{
char *s = NULL;
guint allocated = 0;
@@ -2105,7 +2104,7 @@ static void listOfString8(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
scanning_offset += 1 + l;
}
- ti = proto_tree_add_item(t, hf, tvb, *offsetp, scanning_offset - *offsetp, little_endian);
+ ti = proto_tree_add_item(t, hf, tvb, *offsetp, scanning_offset - *offsetp, byte_order);
tt = proto_item_add_subtree(ti, ett_x11_list_of_string8);
while(length--) {
@@ -2138,7 +2137,7 @@ static void string16_with_buffer_preallocated(tvbuff_t *tvb, proto_tree *t,
int hf, int hf_bytes,
int offset, unsigned length,
char **s, int *sLength,
- gboolean little_endian)
+ guint byte_order)
{
int truncated = FALSE;
unsigned l = length / 2;
@@ -2173,12 +2172,12 @@ static void string16_with_buffer_preallocated(tvbuff_t *tvb, proto_tree *t,
proto_tree_add_string_format(t, hf, tvb, offset, length, (gchar *)tvb_get_ptr(tvb, offset, length), "%s: %s",
proto_registrar_get_nth(hf) -> name, *s);
} else
- proto_tree_add_item(t, hf_bytes, tvb, offset, length, little_endian);
+ proto_tree_add_item(t, hf_bytes, tvb, offset, length, byte_order);
}
static void listOfTextItem(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
- int sizeIs16, int next_offset, gboolean little_endian)
+ int sizeIs16, int next_offset, guint byte_order)
{
int allocated = 0;
char *s = NULL;
@@ -2200,7 +2199,7 @@ static void listOfTextItem(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
scanning_offset += l == 255 ? 4 : l + (sizeIs16 ? l : 0) + 1;
}
- ti = proto_tree_add_item(t, hf, tvb, *offsetp, scanning_offset - *offsetp, little_endian);
+ ti = proto_tree_add_item(t, hf, tvb, *offsetp, scanning_offset - *offsetp, byte_order);
tt = proto_item_add_subtree(ti, ett_x11_list_of_text_item);
while(n--) {
@@ -2223,13 +2222,13 @@ static void listOfTextItem(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
"textitem (string): delta = %d, \"%s\"",
delta, s);
ttt = proto_item_add_subtree(tti, ett_x11_text_item);
- proto_tree_add_item(ttt, hf_x11_textitem_string_delta, tvb, *offsetp + 1, 1, little_endian);
+ proto_tree_add_item(ttt, hf_x11_textitem_string_delta, tvb, *offsetp + 1, 1, byte_order);
if (sizeIs16)
string16_with_buffer_preallocated(tvb, ttt, hf_x11_textitem_string_string16,
hf_x11_textitem_string_string16_bytes,
*offsetp + 2, l,
&s, &allocated,
- little_endian);
+ byte_order);
else
proto_tree_add_string_format(ttt, hf_x11_textitem_string_string8, tvb,
*offsetp + 2, l, s, "\"%s\"", s);
@@ -2239,7 +2238,7 @@ static void listOfTextItem(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
}
static guint32 field8(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
- gboolean little_endian)
+ guint byte_order)
{
guint32 v = VALUE8(tvb, *offsetp);
header_field_info *hfi = proto_registrar_get_nth(hf);
@@ -2252,13 +2251,13 @@ static guint32 field8(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
hfi -> display == BASE_DEC ? "%s: %u (%s)" : "%s: 0x%02x (%s)",
hfi -> name, v, enumValue);
else
- proto_tree_add_item(t, hf, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
return v;
}
static guint32 field16(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
- gboolean little_endian)
+ guint byte_order)
{
guint32 v = VALUE16(tvb, *offsetp);
header_field_info *hfi = proto_registrar_get_nth(hf);
@@ -2271,13 +2270,13 @@ static guint32 field16(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
hfi -> display == BASE_DEC ? "%s: %u (%s)" : "%s: 0x%02x (%s)",
hfi -> name, v, enumValue);
else
- proto_tree_add_item(t, hf, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
return v;
}
static guint32 field32(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
- gboolean little_endian)
+ guint byte_order)
{
guint32 v = VALUE32(tvb, *offsetp);
header_field_info *hfi = proto_registrar_get_nth(hf);
@@ -2299,7 +2298,7 @@ static guint32 field32(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
}
static void gcAttributes(tvbuff_t *tvb, int *offsetp, proto_tree *t,
- gboolean little_endian)
+ guint byte_order)
{
BITMASK32(gc_value);
BITFIELD(ENUM8, gc_value_mask, function);
@@ -2329,7 +2328,7 @@ static void gcAttributes(tvbuff_t *tvb, int *offsetp, proto_tree *t,
}
static void gcMask(tvbuff_t *tvb, int *offsetp, proto_tree *t,
- gboolean little_endian)
+ guint byte_order)
{
BITMASK32(gc_value);
FLAG(gc_value, function);
@@ -2359,7 +2358,7 @@ static void gcMask(tvbuff_t *tvb, int *offsetp, proto_tree *t,
}
static guint32 requestLength(tvbuff_t *tvb, int *offsetp, proto_tree *t,
- gboolean little_endian)
+ guint byte_order)
{
guint32 res = VALUE16(tvb, *offsetp);
proto_tree_add_uint(t, hf_x11_request_length, tvb, *offsetp, 2, res);
@@ -2368,7 +2367,7 @@ static guint32 requestLength(tvbuff_t *tvb, int *offsetp, proto_tree *t,
}
static void setOfEvent(tvbuff_t *tvb, int *offsetp, proto_tree *t,
- gboolean little_endian)
+ guint byte_order)
{
BITMASK32(event);
FLAG(event, KeyPress);
@@ -2401,7 +2400,7 @@ static void setOfEvent(tvbuff_t *tvb, int *offsetp, proto_tree *t,
}
static void setOfDeviceEvent(tvbuff_t *tvb, int *offsetp, proto_tree *t,
- gboolean little_endian)
+ guint byte_order)
{
BITMASK32(do_not_propagate);
FLAG(do_not_propagate, KeyPress);
@@ -2421,7 +2420,7 @@ static void setOfDeviceEvent(tvbuff_t *tvb, int *offsetp, proto_tree *t,
static void setOfKeyButMask(tvbuff_t *tvb, int *offsetp, proto_tree *t,
- gboolean little_endian, gboolean butmask)
+ guint byte_order, gboolean butmask)
{
proto_item *ti;
guint32 bitmask_value;
@@ -2466,7 +2465,7 @@ static void setOfKeyButMask(tvbuff_t *tvb, int *offsetp, proto_tree *t,
}
static void setOfPointerEvent(tvbuff_t *tvb, int *offsetp, proto_tree *t,
- gboolean little_endian)
+ guint byte_order)
{
BITMASK16(pointer_event);
FLAG(pointer_event, ButtonPress);
@@ -2502,20 +2501,20 @@ static void string8(tvbuff_t *tvb, int *offsetp, proto_tree *t,
/* The length is the length of the _byte_zone_ (twice the length of the string) */
static void string16(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
- int hf_bytes, unsigned length, gboolean little_endian)
+ int hf_bytes, unsigned length, guint byte_order)
{
char *s = NULL;
gint l = 0;
length += length;
string16_with_buffer_preallocated(tvb, t, hf, hf_bytes, *offsetp, length,
- &s, &l, little_endian);
+ &s, &l, byte_order);
*offsetp += length;
}
static void timestamp(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
- gboolean little_endian)
+ guint byte_order)
{
guint32 v = VALUE32(tvb, *offsetp);
@@ -2528,7 +2527,7 @@ static void timestamp(tvbuff_t *tvb, int *offsetp, proto_tree *t, int hf,
}
static void windowAttributes(tvbuff_t *tvb, int *offsetp, proto_tree *t,
- gboolean little_endian)
+ guint byte_order)
{
BITMASK32(window_value);
BITFIELD(PIXMAP, window_value_mask, background_pixmap);
@@ -2572,7 +2571,7 @@ static void x11_init_protocol(void)
*** ***
************************************************************************/
-/* If we can't guess, we return TRUE (that is little_endian), cause
+/* If we can't guess, we return ENC_LITTLE_ENDIAN, cause
I'm developing on a Linux box :-). The (non-)guess isn't cached
however, so we may have more luck next time. I'm quite conservative
in my assertions, cause once it's cached, it stays in cache, and
@@ -2853,61 +2852,64 @@ static int x_endian_match(tvbuff_t *tvb, guint16 (*v16)(tvbuff_t *, const gint))
return atLeastOne;
}
-static gboolean
+static guint
guess_byte_ordering(tvbuff_t *tvb, packet_info *pinfo,
x11_conv_data_t *state)
{
/* With X the client gives the byte ordering for the protocol,
and the port on the server tells us we're speaking X. */
- int le, be, decision, decisionToCache;
+ int le, be;
+ guint decision;
if (state->byte_order == BYTE_ORDER_BE)
- return FALSE; /* known to be big-endian */
+ return ENC_BIG_ENDIAN; /* known to be big-endian */
else if (state->byte_order == BYTE_ORDER_LE)
- return TRUE; /* known to be little-endian */
+ return ENC_LITTLE_ENDIAN; /* known to be little-endian */
if (pinfo->srcport == pinfo->match_uint) {
/*
* This is a reply or event; we don't try to guess the
* byte order on it for now.
*/
- return TRUE;
+ return ENC_LITTLE_ENDIAN;
}
le = x_endian_match(tvb, tvb_get_letohs);
be = x_endian_match(tvb, tvb_get_ntohs);
- /* remember that "decision" really means "little_endian". */
if (le == be) {
/* We have no reason to believe it's little- rather than
big-endian, so we guess the shortest length is the
right one.
*/
if (!tvb_bytes_exist(tvb, 0, 4))
- /* Not even a way to get the length. We're biased
- toward little endianness here (essentially the
- x86 world right now). Decoding won't go very far
- anyway.
- */
- decision = TRUE;
- else
- decision = tvb_get_letohs(tvb, 2) <= tvb_get_ntohs(tvb, 2);
- } else
- decision = le >= be;
+ /* Not even a way to get the length. We're biased
+ toward little endianness here (essentially the
+ x86 world right now). Decoding won't go very far
+ anyway.
+ */
+ decision = ENC_LITTLE_ENDIAN;
+ else {
+ if (tvb_get_letohs(tvb, 2) <= tvb_get_ntohs(tvb, 2))
+ decision = ENC_LITTLE_ENDIAN;
+ else
+ decision = ENC_BIG_ENDIAN;
+ }
+ } else {
+ if (le >= be)
+ decision = ENC_LITTLE_ENDIAN;
+ else
+ decision = ENC_BIG_ENDIAN;
+ }
- decisionToCache = (le < 0 && be > 0) || (le > 0 && be < 0);
- if (decisionToCache) {
+ if ((le < 0 && be > 0) || (le > 0 && be < 0)) {
/*
* Remember the decision.
*/
- state->byte_order = decision ? BYTE_ORDER_LE : BYTE_ORDER_BE;
+ state->byte_order = (decision == ENC_BIG_ENDIAN) ? BYTE_ORDER_BE : BYTE_ORDER_LE;
}
- /*
- fprintf(stderr, "packet %d\tle %d\tbe %d\tlittle_endian %d\tcache %d\n",
- pinfo->fd -> num, le, be, decision, decisionToCache);
- */
return decision;
}
@@ -2921,7 +2923,7 @@ guess_byte_ordering(tvbuff_t *tvb, packet_info *pinfo,
* Decode an initial connection request.
*/
static void dissect_x11_initial_conn(tvbuff_t *tvb, packet_info *pinfo,
- proto_tree *tree, x11_conv_data_t *state, gboolean little_endian)
+ proto_tree *tree, x11_conv_data_t *state, guint byte_order)
{
int offset = 0;
int *offsetp = &offset;
@@ -2954,7 +2956,7 @@ static void dissect_x11_initial_conn(tvbuff_t *tvb, packet_info *pinfo,
if ((left = tvb_reported_length_remaining(tvb, offset)) > 0)
proto_tree_add_item(t, hf_x11_undecoded, tvb, offset, left,
- little_endian);
+ ENC_NA);
/*
* This is the initial connection request...
@@ -2971,7 +2973,7 @@ static void dissect_x11_initial_conn(tvbuff_t *tvb, packet_info *pinfo,
static void dissect_x11_initial_reply(tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree, const char _U_ *sep, x11_conv_data_t *volatile state,
- gboolean little_endian)
+ guint byte_order)
{
int offset = 0, *offsetp = &offset, left;
unsigned char success;
@@ -3025,15 +3027,15 @@ static void dissect_x11_initial_reply(tvbuff_t *tvb, packet_info *pinfo,
typedef struct x11_reply_info {
const guint8 minor;
- void (*dissect)(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian);
+ void (*dissect)(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order);
} x11_reply_info;
typedef struct event_info {
const gchar *name;
- void (*dissect)(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian);
+ void (*dissect)(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order);
} x11_event_info;
-static void set_handler(const char *name, void (*func)(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian),
+static void set_handler(const char *name, void (*func)(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order),
const char **errors,
const x11_event_info *event_info,
const x11_reply_info *reply_info)
@@ -3063,10 +3065,10 @@ static int popcount(unsigned int mask)
#include "x11-extension-implementation.h"
static void tryExtension(int opcode, tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t,
- x11_conv_data_t *state, gboolean little_endian)
+ x11_conv_data_t *state, guint byte_order)
{
const gchar *extension;
- void (*func)(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian);
+ void (*func)(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order);
extension = match_strval(opcode, state->opcode_vals);
if (!extension)
@@ -3074,29 +3076,29 @@ static void tryExtension(int opcode, tvbuff_t *tvb, packet_info *pinfo, int *off
func = g_hash_table_lookup(extension_table, extension);
if (func)
- func(tvb, pinfo, offsetp, t, little_endian);
+ func(tvb, pinfo, offsetp, t, byte_order);
}
static void tryExtensionReply(int opcode, tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t,
- x11_conv_data_t *state, gboolean little_endian)
+ x11_conv_data_t *state, guint byte_order)
{
- void (*func)(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian);
+ void (*func)(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order);
func = g_hash_table_lookup(state->reply_funcs, GINT_TO_POINTER(opcode));
if (func)
- func(tvb, pinfo, offsetp, t, little_endian);
+ func(tvb, pinfo, offsetp, t, byte_order);
else
REPLYCONTENTS_COMMON();
}
static void tryExtensionEvent(int event, tvbuff_t *tvb, int *offsetp, proto_tree *t,
- x11_conv_data_t *state, gboolean little_endian)
+ x11_conv_data_t *state, guint byte_order)
{
- void (*func)(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian);
+ void (*func)(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order);
func = g_hash_table_lookup(state->eventcode_funcs, GINT_TO_POINTER(event));
if (func)
- func(tvb, offsetp, t, little_endian);
+ func(tvb, offsetp, t, byte_order);
}
static void register_extension(x11_conv_data_t *state, value_string *vals_p,
@@ -3160,7 +3162,7 @@ static void register_extension(x11_conv_data_t *state, value_string *vals_p,
static void dissect_x11_request(tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree, const char *sep, x11_conv_data_t *state,
- gboolean little_endian)
+ guint byte_order)
{
int offset = 0;
int *offsetp = &offset;
@@ -3319,14 +3321,14 @@ static void dissect_x11_request(tvbuff_t *tvb, packet_info *pinfo,
CARD16(border_width);
ENUM16(window_class);
VISUALID(visual);
- windowAttributes(tvb, offsetp, t, little_endian);
+ windowAttributes(tvb, offsetp, t, byte_order);
break;
case X_ChangeWindowAttributes:
UNUSED(1);
REQUEST_LENGTH();
WINDOW(window);
- windowAttributes(tvb, offsetp, t, little_endian);
+ windowAttributes(tvb, offsetp, t, byte_order);
break;
case X_GetWindowAttributes:
@@ -3725,14 +3727,14 @@ static void dissect_x11_request(tvbuff_t *tvb, packet_info *pinfo,
REQUEST_LENGTH();
GCONTEXT(cid);
DRAWABLE(drawable);
- gcAttributes(tvb, offsetp, t, little_endian);
+ gcAttributes(tvb, offsetp, t, byte_order);
break;
case X_ChangeGC:
UNUSED(1);
REQUEST_LENGTH();
GCONTEXT(gc);
- gcAttributes(tvb, offsetp, t, little_endian);
+ gcAttributes(tvb, offsetp, t, byte_order);
break;
case X_CopyGC:
@@ -3740,7 +3742,7 @@ static void dissect_x11_request(tvbuff_t *tvb, packet_info *pinfo,
REQUEST_LENGTH();
GCONTEXT(src_gc);
GCONTEXT(dst_gc);
- gcMask(tvb, offsetp, t, little_endian);
+ gcMask(tvb, offsetp, t, byte_order);
break;
case X_SetDashes:
@@ -4290,7 +4292,7 @@ static void dissect_x11_request(tvbuff_t *tvb, packet_info *pinfo,
REQUEST_LENGTH();
break;
default:
- tryExtension(opcode, tvb, pinfo, offsetp, t, state, little_endian);
+ tryExtension(opcode, tvb, pinfo, offsetp, t, state, byte_order);
break;
}
@@ -4303,7 +4305,7 @@ static void dissect_x11_requests(tvbuff_t *tvb, packet_info *pinfo,
{
volatile int offset = 0;
int length_remaining;
- volatile gboolean little_endian;
+ volatile guint byte_order;
guint8 opcode;
volatile int plen;
proto_item *ti;
@@ -4366,7 +4368,7 @@ static void dissect_x11_requests(tvbuff_t *tvb, packet_info *pinfo,
/*
* Guess the byte order if we don't already know it.
*/
- little_endian = guess_byte_ordering(tvb, pinfo, state);
+ byte_order = guess_byte_ordering(tvb, pinfo, state);
/*
* Get the opcode and length of the putative X11 request.
@@ -4385,7 +4387,7 @@ static void dissect_x11_requests(tvbuff_t *tvb, packet_info *pinfo,
ENC_NA);
t = proto_item_add_subtree(ti, ett_x11);
proto_tree_add_text(t, tvb, offset, -1,
- "Bogus request length (0)");
+ "Bogus request length (0)");
return;
}
@@ -4430,13 +4432,13 @@ static void dissect_x11_requests(tvbuff_t *tvb, packet_info *pinfo,
* Big-endian.
*/
state->byte_order = BYTE_ORDER_BE;
- little_endian = FALSE;
+ byte_order = ENC_BIG_ENDIAN;
} else {
/*
* Little-endian.
*/
state->byte_order = BYTE_ORDER_LE;
- little_endian = TRUE;
+ byte_order = ENC_LITTLE_ENDIAN;
}
}
@@ -4558,10 +4560,10 @@ static void dissect_x11_requests(tvbuff_t *tvb, packet_info *pinfo,
TRY {
if (is_initial_creq) {
dissect_x11_initial_conn(next_tvb, pinfo, tree,
- state, little_endian);
+ state, byte_order);
} else {
dissect_x11_request(next_tvb, pinfo, tree, sep,
- state, little_endian);
+ state, byte_order);
}
}
CATCH(BoundsError) {
@@ -4653,7 +4655,7 @@ dissect_x11_replies(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
tvbuff_t * volatile next_tvb;
conversation_t *conversation;
x11_conv_data_t *volatile state;
- volatile gboolean little_endian;
+ volatile guint byte_order;
int length_remaining;
const char *volatile sep = NULL;
@@ -4679,7 +4681,7 @@ dissect_x11_replies(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/*
* Guess the byte order if we don't already know it.
*/
- little_endian = guess_byte_ordering(tvb, pinfo, state);
+ byte_order = guess_byte_ordering(tvb, pinfo, state);
offset = 0;
while (tvb_reported_length_remaining(tvb, offset) != 0) {
@@ -4790,7 +4792,7 @@ dissect_x11_replies(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
dissect_x11_reply(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
const char *volatile sep, x11_conv_data_t *volatile state,
- gboolean little_endian)
+ guint byte_order)
{
int offset = 0, *offsetp = &offset, length, left, opcode;
int major_opcode, sequence_number, first_error, first_event;
@@ -5157,7 +5159,7 @@ dissect_x11_reply(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
break;
default:
- tryExtensionReply(opcode, tvb, pinfo, offsetp, t, state, little_endian);
+ tryExtensionReply(opcode, tvb, pinfo, offsetp, t, state, byte_order);
}
if ((left = tvb_reported_length_remaining(tvb, offset)) > 0)
@@ -5189,7 +5191,7 @@ same_screen_focus(tvbuff_t *tvb, int *offsetp, proto_tree *t)
static void
dissect_x11_event(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
const char *volatile sep, x11_conv_data_t *volatile state,
- gboolean little_endian)
+ guint byte_order)
{
unsigned char eventcode;
const char *sent;
@@ -5216,7 +5218,7 @@ dissect_x11_event(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
if (tree == NULL)
return;
- decode_x11_event(tvb, eventcode, sent, t, state, little_endian);
+ decode_x11_event(tvb, eventcode, sent, t, state, byte_order);
return;
}
@@ -5224,7 +5226,7 @@ dissect_x11_event(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
static void
decode_x11_event(tvbuff_t *tvb, unsigned char eventcode, const char *sent,
proto_tree *t, x11_conv_data_t *volatile state,
- gboolean little_endian)
+ guint byte_order)
{
int offset = 0, *offsetp = &offset, left;
@@ -5521,7 +5523,7 @@ decode_x11_event(tvbuff_t *tvb, unsigned char eventcode, const char *sent,
break;
default:
- tryExtensionEvent(eventcode & 0x7F, tvb, offsetp, t, state, little_endian);
+ tryExtensionEvent(eventcode & 0x7F, tvb, offsetp, t, state, byte_order);
break;
}
@@ -5534,7 +5536,7 @@ decode_x11_event(tvbuff_t *tvb, unsigned char eventcode, const char *sent,
static void
dissect_x11_error(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
const char *volatile sep, x11_conv_data_t *volatile state _U_,
- gboolean little_endian)
+ guint byte_order)
{
int offset = 0, *offsetp = &offset, left;
unsigned char errorcode;
diff --git a/epan/dissectors/packet-x25.c b/epan/dissectors/packet-x25.c
index cdd4c176bf..4088c4888e 100644
--- a/epan/dissectors/packet-x25.c
+++ b/epan/dissectors/packet-x25.c
@@ -27,11 +27,12 @@
# include "config.h"
#endif
-#include <glib.h>
-#include <stdlib.h>
#include <string.h>
-#include <epan/llcsaps.h>
+
+#include <glib.h>
+
#include <epan/packet.h>
+#include <epan/llcsaps.h>
#include <epan/circuit.h>
#include <epan/reassemble.h>
#include <epan/prefs.h>
@@ -178,6 +179,9 @@ static gint hf_x25_segment_too_long_segment = -1;
static gint hf_x25_segment_error = -1;
static gint hf_x25_segment_count = -1;
static gint hf_x25_reassembled_length = -1;
+static gint hf_x25_fast_select = -1;
+static gint hf_x25_icrd = -1;
+static gint hf_x25_reverse_charging = -1;
static const value_string vals_modulo[] = {
{ 1, "8" },
@@ -211,6 +215,27 @@ static struct true_false_string m_bit_tfs = {
"End of data"
};
+static const value_string x25_fast_select_vals[] = {
+ { 0, "Not requested" },
+ { 1, "Not requested" },
+ { 2, "No restriction on response" },
+ { 3, "Restriction on response" },
+ { 0, NULL}
+};
+
+static const value_string x25_icrd_vals[] = {
+ { 0, "Status not selected" },
+ { 1, "Prevention requested" },
+ { 2, "Allowance requested" },
+ { 3, "Not allowed" },
+ { 0, NULL}
+};
+
+static struct true_false_string x25_reverse_charging_val = {
+ "Requested",
+ "Not requested"
+};
+
static const fragment_items x25_frag_items = {
&ett_x25_segment,
&ett_x25_segments,
@@ -670,22 +695,11 @@ dump_facilities(proto_tree *tree, int *offset, tvbuff_t *tvb)
ti = proto_tree_add_text(fac_tree, tvb, *offset, 1, "Code : %02X "
"(Reverse charging / Fast select)", fac);
fac_subtree = proto_item_add_subtree(ti, ett_x25_fac_reverse);
- byte1 = tvb_get_guint8(tvb, *offset + 1);
proto_tree_add_text(fac_subtree, tvb, *offset+1, 1,
- "Parameter : %02X", byte1);
- if (byte1 & 0xC0)
- proto_tree_add_text(fac_subtree, tvb, *offset+1, 1,
- "11.. .... = Fast select with restriction");
- else if (byte1 & 0x80)
- proto_tree_add_text(fac_subtree, tvb, *offset+1, 1,
- "10.. .... = Fast select - no restriction");
- else
- proto_tree_add_text(fac_subtree, tvb, *offset+1, 1,
- "00.. .... = Fast select not requested");
- proto_tree_add_text(fac_subtree, tvb, *offset+1, 1, "%s",
- decode_boolean_bitfield(byte1, 0x01, 1*8,
- "Reverse charging requested",
- "Reverse charging not requested"));
+ "Parameter : %02X", tvb_get_guint8(tvb, *offset + 1));
+ proto_tree_add_item(fac_subtree, hf_x25_fast_select, tvb, *offset+1, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(fac_subtree, hf_x25_icrd, tvb, *offset+1, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(fac_subtree, hf_x25_reverse_charging, tvb, *offset+1, 1, ENC_BIG_ENDIAN);
}
break;
case X25_FAC_CHARGING_INFO:
@@ -2654,6 +2668,18 @@ proto_register_x25(void)
{ &hf_x25_segments,
{ "X.25 Fragments", "x25.fragments", FT_NONE, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
+
+ { &hf_x25_fast_select,
+ { "Fast select", "x25.fast_select", FT_UINT8, BASE_DEC, VALS(x25_fast_select_vals), 0xC0,
+ NULL, HFILL }},
+
+ { &hf_x25_icrd,
+ { "ICRD", "x25.icrd", FT_UINT8, BASE_DEC, VALS(x25_icrd_vals), 0x30,
+ NULL, HFILL }},
+
+ { &hf_x25_reverse_charging,
+ { "Reverse charging", "x25.reverse_charging", FT_BOOLEAN, 8, TFS(&x25_reverse_charging_val), 0x01,
+ NULL, HFILL }},
};
static gint *ett[] = {
&ett_x25,
diff --git a/epan/dissectors/packet-x2ap.c b/epan/dissectors/packet-x2ap.c
index 08ccf2a8de..7f453a9e9a 100644
--- a/epan/dissectors/packet-x2ap.c
+++ b/epan/dissectors/packet-x2ap.c
@@ -2417,11 +2417,11 @@ dissect_x2ap_TransportLayerAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
subtree = proto_item_add_subtree(actx->created_item, ett_x2ap_TransportLayerAddress);
if (tvb_len==4){
/* IPv4 */
- proto_tree_add_item(subtree, hf_x2ap_transportLayerAddressIPv4, parameter_tvb, 0, tvb_len, FALSE);
+ proto_tree_add_item(subtree, hf_x2ap_transportLayerAddressIPv4, parameter_tvb, 0, tvb_len, ENC_BIG_ENDIAN);
}
if (tvb_len==16){
/* IPv6 */
- proto_tree_add_item(subtree, hf_x2ap_transportLayerAddressIPv6, parameter_tvb, 0, tvb_len, FALSE);
+ proto_tree_add_item(subtree, hf_x2ap_transportLayerAddressIPv6, parameter_tvb, 0, tvb_len, ENC_NA);
}
@@ -5482,7 +5482,7 @@ void proto_register_x2ap(void) {
NULL, HFILL }},
{ &hf_x2ap_transportLayerAddressIPv6,
{ "transportLayerAddress(IPv6)", "x2ap.transportLayerAddressIPv6",
- FT_IPv4, BASE_NONE, NULL, 0,
+ FT_IPv6, BASE_NONE, NULL, 0,
NULL, HFILL }},
diff --git a/epan/dissectors/packet-x509ce.c b/epan/dissectors/packet-x509ce.c
index abda0696be..54e60b9ef3 100644
--- a/epan/dissectors/packet-x509ce.c
+++ b/epan/dissectors/packet-x509ce.c
@@ -420,7 +420,7 @@ dissect_x509ce_T_uniformResourceIdentifier(gboolean implicit_tag _U_, tvbuff_t *
static int
dissect_x509ce_T_iPAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 165 "../../asn1/x509ce/x509ce.cnf"
- proto_tree_add_item(tree, hf_x509ce_IPAddress, tvb, offset, 4, FALSE);
+ proto_tree_add_item(tree, hf_x509ce_IPAddress, tvb, offset, 4, ENC_BIG_ENDIAN);
offset+=4;
diff --git a/epan/dissectors/packet-x509sat.c b/epan/dissectors/packet-x509sat.c
index 99098e526e..60bb0a4ff0 100644
--- a/epan/dissectors/packet-x509sat.c
+++ b/epan/dissectors/packet-x509sat.c
@@ -1518,7 +1518,7 @@ dissect_x509sat_SyntaxBMPString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
if (! wide_tvb) {
return offset;
}
- string = tvb_get_ephemeral_unicode_string (wide_tvb, 0, tvb_length(wide_tvb) / 2, ENC_BIG_ENDIAN);
+ string = tvb_get_ephemeral_unicode_string (wide_tvb, 0, tvb_length(wide_tvb), ENC_BIG_ENDIAN);
proto_item_append_text(actx->created_item, " %s", string);
diff --git a/epan/dissectors/packet-xdmcp.c b/epan/dissectors/packet-xdmcp.c
index 8238b4157b..dc59f9c22e 100644
--- a/epan/dissectors/packet-xdmcp.c
+++ b/epan/dissectors/packet-xdmcp.c
@@ -27,10 +27,10 @@
# include "config.h"
#endif
-#include <stdlib.h>
#include <ctype.h>
#include <glib.h>
+
#include <epan/packet.h>
#define UDP_PORT_XDMCP 177
diff --git a/epan/dissectors/packet-xmcp.c b/epan/dissectors/packet-xmcp.c
index bb4c6d63f0..a9f59e4517 100644
--- a/epan/dissectors/packet-xmcp.c
+++ b/epan/dissectors/packet-xmcp.c
@@ -607,7 +607,7 @@ decode_xmcp_attr_value (proto_tree *attr_tree, guint16 attr_type,
{
e_guid_t guid;
char buf[GUID_STR_LEN];
- tvb_get_guid(tvb, (offset+4), &guid, FALSE);
+ tvb_get_guid(tvb, (offset+4), &guid, ENC_BIG_ENDIAN);
guid_to_str_buf(&guid, buf, sizeof(buf));
proto_item_append_text(attr_tree, ": %u:%u:%s",
tvb_get_ntohs(tvb, offset),
diff --git a/epan/dissectors/packet-xml.c b/epan/dissectors/packet-xml.c
index 9daef272d2..c26b241f23 100644
--- a/epan/dissectors/packet-xml.c
+++ b/epan/dissectors/packet-xml.c
@@ -217,7 +217,7 @@ dissect_xml(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
current_frame->ns = root_ns;
- current_frame->item = proto_tree_add_item(tree,current_frame->ns->hf_tag,tvb,0,-1,FALSE);
+ current_frame->item = proto_tree_add_item(tree,current_frame->ns->hf_tag,tvb,0,-1,ENC_UTF_8|ENC_NA);
current_frame->tree = proto_item_add_subtree(current_frame->item,current_frame->ns->ett);
current_frame->last_item = current_frame->item;
@@ -227,18 +227,16 @@ dissect_xml(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
static gboolean dissect_xml_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
- if (pref_heuristic_media || pref_heuristic_tcp || pref_heuristic_udp) {
- if (tvbparse_peek(tvbparse_init(tvb,0,-1,NULL,want_ignore), want_heur)) {
- dissect_xml(tvb, pinfo, tree);
+ if (tvbparse_peek(tvbparse_init(tvb,0,-1,NULL,want_ignore), want_heur)) {
+ dissect_xml(tvb, pinfo, tree);
+ return TRUE;
+ } else if (pref_heuristic_unicode) {
+ const guint8 *data = tvb_get_ephemeral_unicode_string(tvb, 0, tvb_length(tvb), ENC_LITTLE_ENDIAN);
+ tvbuff_t *unicode_tvb = tvb_new_child_real_data(tvb, data, tvb_length(tvb)/2, tvb_length(tvb)/2);
+ if (tvbparse_peek(tvbparse_init(unicode_tvb,0,-1,NULL,want_ignore), want_heur)) {
+ add_new_data_source(pinfo, unicode_tvb, "UTF8");
+ dissect_xml(unicode_tvb, pinfo, tree);
return TRUE;
- } else if (pref_heuristic_unicode) {
- const guint8 *data = tvb_get_ephemeral_unicode_string(tvb, 0, tvb_length(tvb)/2, ENC_LITTLE_ENDIAN);
- tvbuff_t *unicode_tvb = tvb_new_child_real_data(tvb, data, tvb_length(tvb)/2, tvb_length(tvb)/2);
- if (tvbparse_peek(tvbparse_init(unicode_tvb,0,-1,NULL,want_ignore), want_heur)) {
- add_new_data_source(pinfo, unicode_tvb, "UTF8");
- dissect_xml(unicode_tvb, pinfo, tree);
- return TRUE;
- }
}
}
return FALSE;
@@ -312,7 +310,7 @@ static void after_token(void* tvbparse_data, const void* wanted_data _U_, tvbpar
hfid = xml_ns.hf_cdata;
}
- pi = proto_tree_add_item(current_frame->tree, hfid, tok->tvb, tok->offset, tok->len, FALSE);
+ pi = proto_tree_add_item(current_frame->tree, hfid, tok->tvb, tok->offset, tok->len, ENC_UTF_8|ENC_NA);
proto_item_set_text(pi, "%s",
tvb_format_text(tok->tvb,tok->offset,tok->len));
@@ -354,7 +352,7 @@ static void before_xmpli(void* tvbparse_data, const void* wanted_data _U_, tvbpa
ett = ns->ett;
}
- pi = proto_tree_add_item(current_frame->tree,hf_tag,tok->tvb,tok->offset,tok->len,FALSE);
+ pi = proto_tree_add_item(current_frame->tree,hf_tag,tok->tvb,tok->offset,tok->len,ENC_UTF_8|ENC_NA);
proto_item_set_text(pi, "%s", tvb_format_text(tok->tvb,tok->offset,(name_tok->offset - tok->offset) + name_tok->len));
@@ -440,7 +438,7 @@ static void before_tag(void* tvbparse_data, const void* wanted_data _U_, tvbpars
}
}
- pi = proto_tree_add_item(current_frame->tree,ns->hf_tag,tok->tvb,tok->offset,tok->len,FALSE);
+ pi = proto_tree_add_item(current_frame->tree,ns->hf_tag,tok->tvb,tok->offset,tok->len,ENC_UTF_8|ENC_NA);
proto_item_set_text(pi, "%s", tvb_format_text(tok->tvb,tok->offset,(name_tok->offset - tok->offset) + name_tok->len));
pt = proto_item_add_subtree(pi,ns->ett);
@@ -575,7 +573,7 @@ static void after_attrib(void* tvbparse_data, const void* wanted_data _U_, tvbpa
value = tok;
}
- pi = proto_tree_add_item(current_frame->tree,hfid,value->tvb,value->offset,value->len,FALSE);
+ pi = proto_tree_add_item(current_frame->tree,hfid,value->tvb,value->offset,value->len,ENC_UTF_8|ENC_NA);
proto_item_set_text(pi, "%s", tvb_format_text(tok->tvb,tok->offset,tok->len));
current_frame->last_item = pi;
@@ -1417,5 +1415,6 @@ proto_reg_handoff_xml(void)
xml_handle = find_dissector("xml");
g_hash_table_foreach(media_types,add_dissector_media,NULL);
+ heur_dissector_add("wtap_file", dissect_xml_heur, xml_ns.hf_tag);
}
diff --git a/epan/dissectors/packet-xmpp.c b/epan/dissectors/packet-xmpp.c
index 788a276c5a..f313e56544 100644
--- a/epan/dissectors/packet-xmpp.c
+++ b/epan/dissectors/packet-xmpp.c
@@ -412,6 +412,14 @@ dissect_xmpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
call_dissector(xml_handle,tvb,pinfo,xmpp_tree);
+ /* If XML dissector is disabled, we can't do much */
+ if (!proto_is_protocol_enabled(find_protocol_by_id(dissector_handle_get_protocol_index(xml_handle))))
+ {
+ col_append_str(pinfo->cinfo, COL_INFO, "(XML dissector disabled, can't dissect XMPP)");
+ expert_add_info_format(pinfo, xmpp_item, PI_UNDECODED, PI_WARN, "XML dissector disabled, can't dissect XMPP");
+ return;
+ }
+
/*if stream end occurs then return*/
if(xmpp_stream_close(xmpp_tree,tvb, pinfo))
{
diff --git a/epan/dissectors/packet-xot.c b/epan/dissectors/packet-xot.c
index 66a157db19..66fa0da966 100644
--- a/epan/dissectors/packet-xot.c
+++ b/epan/dissectors/packet-xot.c
@@ -28,10 +28,8 @@
# include "config.h"
#endif
-#include <stdlib.h>
-#include <ctype.h>
-
#include <glib.h>
+
#include <epan/packet.h>
#include "packet-tcp.h"
#include <epan/prefs.h>
diff --git a/epan/dissectors/packet-xtp.c b/epan/dissectors/packet-xtp.c
index e15384ec22..589681c4c1 100644
--- a/epan/dissectors/packet-xtp.c
+++ b/epan/dissectors/packet-xtp.c
@@ -190,7 +190,7 @@ static const value_string aformat_vals[] = {
{ XTP_ADDR_XEROX, "Xerox Network System Address" },
{ XTP_ADDR_IPX, "IPX Address" },
{ XTP_ADDR_LOCAL, "Local Address" },
- { XTP_ADDR_IP6, "Internet Protocl Version 6 Address" },
+ { XTP_ADDR_IP6, "Internet Protocol Version 6 Address" },
{ 0, NULL }
};
diff --git a/epan/dissectors/packet-yami.c b/epan/dissectors/packet-yami.c
new file mode 100644
index 0000000000..4f4f23737d
--- /dev/null
+++ b/epan/dissectors/packet-yami.c
@@ -0,0 +1,612 @@
+/* packet-yami.c
+ * Routines for YAMI dissection
+ * Copyright 2010, Pawel Korbut
+ * Copyright 2012, Jakub Zawadzki <darkjames-ws@darkjames.pl>
+ *
+ * $Id$
+ *
+ * Protocol documentation available at http://www.inspirel.com/yami4/book/B-2.html
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <epan/packet.h>
+#include <epan/prefs.h>
+#include <epan/tvbuff.h>
+#include <epan/strutil.h>
+#include <epan/dissectors/packet-tcp.h>
+
+static gboolean yami_desegment = TRUE;
+static guint yami_config_tcp_port = 3000;
+static guint yami_config_udp_port = 5000;
+
+static int hf_yami_message_id = -1;
+static int hf_yami_frame_number = -1;
+static int hf_yami_message_header_size = -1;
+static int hf_yami_frame_payload_size = -1;
+
+static int hf_yami_message_hdr = -1;
+static int hf_yami_message_data = -1;
+
+static int hf_yami_param = -1;
+static int hf_yami_param_name = -1;
+static int hf_yami_param_type = -1;
+static int hf_yami_param_value_bool = -1;
+static int hf_yami_param_value_int = -1;
+static int hf_yami_param_value_long = -1;
+static int hf_yami_param_value_double = -1;
+static int hf_yami_param_value_str = -1;
+static int hf_yami_param_value_bin = -1;
+
+static int hf_yami_params_count = -1;
+static int hf_yami_items_count = -1;
+
+static int ett_yami = -1;
+static int ett_yami_msg_hdr = -1;
+static int ett_yami_msg_data = -1;
+static int ett_yami_param = -1;
+
+static int proto_yami = -1;
+
+void proto_reg_handoff_yami(void);
+
+#define YAMI_TYPE_BOOLEAN 1
+#define YAMI_TYPE_INTEGER 2
+#define YAMI_TYPE_LONGLONG 3
+#define YAMI_TYPE_DOUBLE 4
+#define YAMI_TYPE_STRING 5
+#define YAMI_TYPE_BINARY 6
+#define YAMI_TYPE_BOOLEAN_ARRAY 7
+#define YAMI_TYPE_INTEGER_ARRAY 8
+#define YAMI_TYPE_LONGLONG_ARRAY 9
+#define YAMI_TYPE_DOUBLE_ARRAY 10
+#define YAMI_TYPE_STRING_ARRAY 11
+#define YAMI_TYPE_BINARY_ARRAY 12
+#define YAMI_TYPE_NESTED 13
+
+static const value_string yami_param_type_vals[] = {
+ { YAMI_TYPE_BOOLEAN, "boolean" },
+ { YAMI_TYPE_INTEGER, "integer" },
+ { YAMI_TYPE_LONGLONG, "long long" },
+ { YAMI_TYPE_DOUBLE, "double" },
+ { YAMI_TYPE_STRING, "string" },
+ { YAMI_TYPE_BINARY, "binary" },
+ { YAMI_TYPE_BOOLEAN_ARRAY, "boolean array" },
+ { YAMI_TYPE_INTEGER_ARRAY, "integer array" },
+ { YAMI_TYPE_LONGLONG_ARRAY, "long long array" },
+ { YAMI_TYPE_DOUBLE_ARRAY, "double array" },
+ { YAMI_TYPE_STRING_ARRAY, "string array" },
+ { YAMI_TYPE_BINARY_ARRAY, "binary array" },
+ { YAMI_TYPE_NESTED, "nested parameters" },
+ { 0, NULL }
+};
+
+static int
+dissect_yami_parameter(tvbuff_t *tvb, proto_tree *tree, int offset, proto_item *par_ti)
+{
+ const int orig_offset = offset;
+
+ proto_tree *yami_param;
+ proto_item *ti;
+
+ char *name;
+ int name_offset;
+ guint32 name_len;
+
+ guint32 type;
+
+ ti = proto_tree_add_item(tree, hf_yami_param, tvb, offset, 0, ENC_NA);
+ yami_param = proto_item_add_subtree(ti, ett_yami_param);
+
+ name_offset = offset;
+ name_len = tvb_get_letohl(tvb, offset);
+ offset += 4;
+
+ name = tvb_get_ephemeral_string_enc(tvb, offset, name_len, ENC_ASCII | ENC_NA);
+ proto_item_append_text(ti, ": %s", name);
+ proto_item_append_text(par_ti, "%s, ", name);
+ offset += (name_len + 3) & ~3;
+ proto_tree_add_string(yami_param, hf_yami_param_name, tvb, name_offset, offset - name_offset, name);
+
+ type = tvb_get_letohl(tvb, offset);
+ proto_tree_add_item(yami_param, hf_yami_param_type, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ switch (type) {
+ case YAMI_TYPE_BOOLEAN:
+ {
+ guint32 val = tvb_get_letohl(tvb, offset);
+ proto_item_append_text(ti, ", Type: boolean, Value: %s", val ? "True" : "False");
+ proto_tree_add_item(yami_param, hf_yami_param_value_bool, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+ break;
+ }
+
+ case YAMI_TYPE_INTEGER:
+ {
+ gint32 val = tvb_get_letohl(tvb, offset);
+ proto_item_append_text(ti, ", Type: integer, Value: %d", val);
+ proto_tree_add_item(yami_param, hf_yami_param_value_int, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+ break;
+ }
+
+ case YAMI_TYPE_LONGLONG:
+ {
+ gint64 val = tvb_get_letoh64(tvb, offset);
+ proto_item_append_text(ti, ", Type: long, Value: %" G_GINT64_MODIFIER "d", val);
+ proto_tree_add_item(yami_param, hf_yami_param_value_long, tvb, offset, 8, ENC_LITTLE_ENDIAN);
+ offset += 8;
+ break;
+ }
+
+ case YAMI_TYPE_DOUBLE:
+ {
+ gdouble val = tvb_get_letohieee_double(tvb, offset);
+ proto_item_append_text(ti, ", Type: double, Value: %g", val);
+ proto_tree_add_item(yami_param, hf_yami_param_value_double, tvb, offset, 8, ENC_LITTLE_ENDIAN);
+ offset += 8;
+ break;
+ }
+
+ case YAMI_TYPE_STRING:
+ {
+ const int val_offset = offset;
+ guint32 val_len;
+ char *val;
+
+ val_len = tvb_get_letohl(tvb, offset);
+ offset += 4;
+
+ val = tvb_get_ephemeral_string_enc(tvb, offset, val_len, ENC_ASCII | ENC_NA);
+
+ proto_item_append_text(ti, ", Type: string, Value: \"%s\"", val);
+ offset += (val_len + 3) & ~3;
+ proto_tree_add_string(yami_param, hf_yami_param_value_str, tvb, val_offset, offset - val_offset, val);
+ break;
+ }
+
+ case YAMI_TYPE_BINARY:
+ {
+ const int val_offset = offset;
+ guint32 val_len;
+ const guint8 *val;
+ char *repr;
+
+ val_len = tvb_get_letohl(tvb, offset);
+ offset += 4;
+
+ val = tvb_get_ptr(tvb, offset, val_len);
+ repr = bytes_to_str(val, val_len);
+
+ proto_item_append_text(ti, ", Type: binary, Value: %s", repr);
+ offset += (val_len + 3) & ~3;
+ proto_tree_add_bytes_format_value(yami_param, hf_yami_param_value_bin, tvb, val_offset, offset - val_offset, val, "%s", repr);
+ break;
+ }
+
+ case YAMI_TYPE_BOOLEAN_ARRAY:
+ {
+ guint32 count;
+ guint i;
+ int j;
+
+ count = tvb_get_letohl(tvb, offset);
+ proto_tree_add_item(yami_param, hf_yami_items_count, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_item_append_text(ti, ", Type: boolean[], %u items: {", count);
+
+ for (i = 0; i < count/32; i++) {
+ guint32 val = tvb_get_letohl(tvb, offset);
+
+ for (j = 0; j < 32; j++) {
+ int r = !!(val & (1 << j));
+
+ proto_item_append_text(ti, "%s, ", r ? "T" : "F");
+ proto_tree_add_boolean(yami_param, hf_yami_param_value_bool, tvb, offset+(j/8), 1, r);
+ }
+ offset += 4;
+ }
+
+ if (count % 32) {
+ guint32 val = tvb_get_letohl(tvb, offset);
+ int tmp = count % 32;
+
+ for (j = 0; j < tmp; j++) {
+ int r = !!(val & (1 << j));
+
+ proto_item_append_text(ti, "%s, ", r ? "T" : "F");
+ proto_tree_add_boolean(yami_param, hf_yami_param_value_bool, tvb, offset+(j/8), 1, r);
+ }
+ offset += 4;
+ }
+
+ proto_item_append_text(ti, "}");
+ break;
+ }
+
+ case YAMI_TYPE_INTEGER_ARRAY:
+ {
+ guint32 count;
+ guint i;
+
+ count = tvb_get_letohl(tvb, offset);
+ proto_tree_add_item(yami_param, hf_yami_items_count, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_item_append_text(ti, ", Type: integer[], %u items: {", count);
+ for (i = 0; i < count; i++) {
+ gint32 val = tvb_get_letohl(tvb, offset);
+
+ proto_item_append_text(ti, "%d, ", val);
+ proto_tree_add_item(yami_param, hf_yami_param_value_int, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+ }
+ proto_item_append_text(ti, "}");
+ break;
+ }
+
+ case YAMI_TYPE_LONGLONG_ARRAY:
+ {
+ guint32 count;
+ guint i;
+
+ count = tvb_get_letohl(tvb, offset);
+ proto_tree_add_item(yami_param, hf_yami_items_count, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_item_append_text(ti, ", Type: long long[], %u items: {", count);
+
+ for (i = 0; i < count; i++) {
+ gint64 val = tvb_get_letoh64(tvb, offset);
+
+ proto_item_append_text(ti, "%" G_GINT64_MODIFIER "d, ", val);
+ proto_tree_add_item(yami_param, hf_yami_param_value_long, tvb, offset, 8, ENC_LITTLE_ENDIAN);
+ offset += 8;
+ }
+ proto_item_append_text(ti, "}");
+ break;
+ }
+
+ case YAMI_TYPE_DOUBLE_ARRAY:
+ {
+ guint32 count;
+ guint i;
+
+ count = tvb_get_letohl(tvb, offset);
+ proto_tree_add_item(yami_param, hf_yami_items_count, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_item_append_text(ti, ", Type: double[], %u items: {", count);
+
+ for (i = 0; i < count; i++) {
+ gdouble val = tvb_get_letohieee_double(tvb, offset);
+
+ proto_item_append_text(ti, "%g, ", val);
+ proto_tree_add_item(yami_param, hf_yami_param_value_double, tvb, offset, 8, ENC_LITTLE_ENDIAN);
+ offset += 8;
+ }
+ proto_item_append_text(ti, "}");
+ break;
+ }
+
+ case YAMI_TYPE_STRING_ARRAY:
+ {
+ guint32 count;
+ guint i;
+
+ count = tvb_get_letohl(tvb, offset);
+ proto_tree_add_item(yami_param, hf_yami_items_count, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_item_append_text(ti, ", Type: string[], %u items: {", count);
+
+ for (i = 0; i < count; i++) {
+ const int val_offset = offset;
+ guint32 val_len;
+ char *val;
+
+ val_len = tvb_get_letohl(tvb, offset);
+ offset += 4;
+
+ val = tvb_get_ephemeral_string_enc(tvb, offset, val_len, ENC_ASCII | ENC_NA);
+
+ proto_item_append_text(ti, "\"%s\", ", val);
+ proto_tree_add_string(yami_param, hf_yami_param_value_str, tvb, val_offset, offset - val_offset, val);
+ offset += (val_len + 3) & ~3;
+ }
+ proto_item_append_text(ti, "}");
+ break;
+ }
+
+ case YAMI_TYPE_BINARY_ARRAY:
+ {
+ guint32 count;
+ guint i;
+
+ count = tvb_get_letohl(tvb, offset);
+ proto_tree_add_item(yami_param, hf_yami_items_count, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_item_append_text(ti, ", Type: binary[], %u items: {", count);
+
+ for (i = 0; i < count; i++) {
+ const int val_offset = offset;
+ guint32 val_len;
+ const guint8 *val;
+ char *repr;
+
+ val_len = tvb_get_letohl(tvb, offset);
+ offset += 4;
+
+ val = tvb_get_ptr(tvb, offset, val_len);
+ repr = bytes_to_str(val, val_len);
+
+ proto_item_append_text(ti, "%s, ", repr);
+ offset += (val_len + 3) & ~3;
+ proto_tree_add_bytes_format_value(yami_param, hf_yami_param_value_bin, tvb, val_offset, offset - val_offset, val, "%s", repr);
+ }
+ proto_item_append_text(ti, "}");
+ break;
+ }
+
+ case YAMI_TYPE_NESTED:
+ {
+ guint32 count;
+ guint i;
+
+ count = tvb_get_letohl(tvb, offset);
+ proto_tree_add_item(yami_param, hf_yami_params_count, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_item_append_text(ti, ", Type: nested, %u parameters: ", count);
+
+ for (i = 0; i < count; i++) {
+ offset = dissect_yami_parameter(tvb, yami_param, offset, ti);
+ /* smth went wrong */
+ if (offset == -1)
+ return -1;
+ }
+ break;
+ }
+
+ default:
+ proto_item_append_text(ti, ", Type: unknown (%d)!", type);
+ return -1;
+ }
+
+ proto_item_set_len(ti, offset - orig_offset);
+ return offset;
+}
+
+static int
+dissect_yami_data(tvbuff_t *tvb, gboolean data, proto_tree *tree, int offset)
+{
+ const int orig_offset = offset;
+
+ proto_tree *yami_data_tree;
+ proto_item *ti;
+
+ guint32 count;
+ guint i;
+
+ ti = proto_tree_add_item(tree, (data) ? hf_yami_message_data : hf_yami_message_hdr, tvb, offset, 0, ENC_NA);
+ yami_data_tree = proto_item_add_subtree(ti, (data) ? ett_yami_msg_data : ett_yami_msg_hdr);
+
+ count = tvb_get_letohl(tvb, offset);
+ proto_tree_add_item(yami_data_tree, hf_yami_params_count, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ proto_item_append_text(ti, ", %u parameters: ", count);
+
+ for (i = 0; i < count; i++) {
+ offset = dissect_yami_parameter(tvb, yami_data_tree, offset, ti);
+ /* smth went wrong */
+ if (offset == -1)
+ return -1;
+ }
+
+ proto_item_set_len(ti, offset - orig_offset);
+
+ return offset;
+}
+
+static void
+dissect_yami_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ proto_tree *yami_tree = NULL;
+ proto_item *ti;
+
+ gint frame_number;
+ gint message_header_size;
+ gint frame_payload_size;
+ gint frame_size;
+ int offset;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "YAMI");
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_yami, tvb, 0, -1, ENC_NA);
+ yami_tree = proto_item_add_subtree(ti, ett_yami);
+ }
+
+ offset = 0;
+
+ proto_tree_add_item(yami_tree, hf_yami_message_id, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ offset += 4;
+
+ frame_number = tvb_get_letohl(tvb, offset);
+ ti = proto_tree_add_item(yami_tree, hf_yami_frame_number, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ if(frame_number < 0)
+ proto_item_append_text(ti, "%s", " (last frame)");
+ offset += 4;
+
+ message_header_size = tvb_get_letohl(tvb, offset);
+ proto_tree_add_item(yami_tree, hf_yami_message_header_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ if (message_header_size < 4) {
+ /* XXX, expert info */
+ }
+ offset += 4;
+
+ frame_payload_size = tvb_get_letohl(tvb, offset);
+ ti = proto_tree_add_item(yami_tree, hf_yami_frame_payload_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ frame_size = frame_payload_size + 16;
+ proto_item_append_text(ti, ", (YAMI Frame Size: %d)", frame_size);
+ offset += 4;
+
+ if (frame_number == 1 || frame_number == -1) {
+ if (message_header_size <= frame_payload_size) {
+ const int orig_offset = offset;
+
+ offset = dissect_yami_data(tvb, FALSE, yami_tree, offset);
+ if (offset != orig_offset + message_header_size) {
+ /* XXX, expert info */
+ offset = orig_offset + message_header_size;
+ }
+
+ dissect_yami_data(tvb, TRUE, yami_tree, offset);
+ }
+ }
+}
+
+#define FRAME_HEADER_LEN 16
+
+static guint
+get_yami_message_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
+{
+ guint32 len = tvb_get_letohl(tvb, offset + 12);
+
+ return len + FRAME_HEADER_LEN;
+}
+
+static int
+dissect_yami(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ tcp_dissect_pdus(tvb, pinfo, tree, yami_desegment, FRAME_HEADER_LEN, get_yami_message_len, dissect_yami_pdu);
+ return tvb_length(tvb);
+}
+
+void
+proto_register_yami(void)
+{
+ static hf_register_info hf[] = {
+ /* Header */
+ { &hf_yami_message_id,
+ { "Message ID", "yami.message_id", FT_INT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_yami_frame_number,
+ { "Frame Number", "yami.frame_number", FT_INT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_yami_message_header_size,
+ { "Message Header Size", "yami.message_header_size", FT_INT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_yami_frame_payload_size,
+ { "Frame Payload Size", "yami.frame_payload_size", FT_INT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_yami_message_hdr,
+ { "Header message", "yami.msg_hdr", FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_yami_message_data,
+ { "Data message", "yami.msg_data", FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ },
+ /* Parameter */
+ { &hf_yami_param,
+ { "Parameter", "yami.param", FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_yami_param_name,
+ { "Name", "yami.param.name", FT_STRING, BASE_NONE, NULL, 0x00, "Parameter name", HFILL }
+ },
+ { &hf_yami_param_type,
+ { "Type", "yami.param.type", FT_INT32, BASE_DEC, VALS(yami_param_type_vals), 0x00, "Parameter type", HFILL }
+ },
+ { &hf_yami_param_value_bool,
+ { "Value", "yami.param.value_bool", FT_BOOLEAN, BASE_NONE, NULL, 0x00, "Parameter value (bool)", HFILL }
+ },
+ { &hf_yami_param_value_int,
+ { "Value", "yami.param.value_int", FT_INT32, BASE_DEC, NULL, 0x00, "Parameter value (int)", HFILL }
+ },
+ { &hf_yami_param_value_long,
+ { "Value", "yami.param.value_long", FT_INT64, BASE_DEC, NULL, 0x00, "Parameter value (long)", HFILL }
+ },
+ { &hf_yami_param_value_double,
+ { "Value", "yami.param.value_double", FT_DOUBLE, BASE_NONE, NULL, 0x00, "Parameter value (double)", HFILL }
+ },
+ { &hf_yami_param_value_str,
+ { "Value", "yami.param.value_str", FT_STRING, BASE_NONE, NULL, 0x00, "Parameter value (string)", HFILL }
+ },
+ { &hf_yami_param_value_bin,
+ { "Value", "yami.param.value_bin", FT_BYTES, BASE_NONE, NULL, 0x00, "Parameter value (binary)", HFILL }
+ },
+ { &hf_yami_params_count,
+ { "Parameters count", "yami.params_count", FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_yami_items_count,
+ { "Items count", "yami.items_count", FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ }
+ };
+
+ static gint *ett[] = {
+ &ett_yami,
+ &ett_yami_msg_hdr,
+ &ett_yami_msg_data,
+ &ett_yami_param
+ };
+
+ module_t *yami_module;
+
+ proto_yami = proto_register_protocol("YAMI Protocol", "YAMI", "yami");
+
+ proto_register_field_array(proto_yami, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ yami_module = prefs_register_protocol(proto_yami, proto_reg_handoff_yami);
+ prefs_register_uint_preference(yami_module, "tcp.port", "YAMI TCP Port", "The TCP port on which YAMI messages will be read", 10, &yami_config_tcp_port);
+ prefs_register_uint_preference(yami_module, "udp.port", "YAMI UDP Port", "The UDP port on which YAMI messages will be read", 10, &yami_config_udp_port);
+ prefs_register_bool_preference(yami_module, "desegment",
+ "Reassemble YAMI messages spanning multiple TCP segments",
+ "Whether the YAMI dissector should reassemble messages spanning multiple TCP segments."
+ "To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
+ &yami_desegment);
+}
+
+void
+proto_reg_handoff_yami(void)
+{
+ static dissector_handle_t yami_handle;
+ static guint yami_tcp_port, yami_udp_port;
+
+ if (yami_handle) {
+ dissector_delete_uint("tcp.port", yami_tcp_port, yami_handle);
+ dissector_delete_uint("udp.port", yami_udp_port, yami_handle);
+ } else
+ yami_handle = new_create_dissector_handle(dissect_yami, proto_yami);
+
+ yami_tcp_port = yami_config_tcp_port;
+ yami_udp_port = yami_config_udp_port;
+
+ dissector_add_uint("tcp.port", yami_tcp_port, yami_handle);
+ dissector_add_uint("udp.port", yami_udp_port, yami_handle);
+}
+
diff --git a/epan/dissectors/packet-yhoo.c b/epan/dissectors/packet-yhoo.c
index 35577d3a6e..93562d03f3 100644
--- a/epan/dissectors/packet-yhoo.c
+++ b/epan/dissectors/packet-yhoo.c
@@ -29,8 +29,8 @@
# include "config.h"
#endif
-#include <string.h>
#include <glib.h>
+
#include <epan/packet.h>
static int proto_yhoo = -1;
@@ -52,48 +52,48 @@ static gint ett_yhoo = -1;
/* This is from yahoolib.h from gtkyahoo */
/* Service constants */
-#define YAHOO_SERVICE_LOGON 1
-#define YAHOO_SERVICE_LOGOFF 2
-#define YAHOO_SERVICE_ISAWAY 3
-#define YAHOO_SERVICE_ISBACK 4
-#define YAHOO_SERVICE_IDLE 5
-#define YAHOO_SERVICE_MESSAGE 6
-#define YAHOO_SERVICE_IDACT 7
-#define YAHOO_SERVICE_IDDEACT 8
-#define YAHOO_SERVICE_MAILSTAT 9
-#define YAHOO_SERVICE_USERSTAT 10
-#define YAHOO_SERVICE_NEWMAIL 11
-#define YAHOO_SERVICE_CHATINVITE 12
-#define YAHOO_SERVICE_CALENDAR 13
-#define YAHOO_SERVICE_NEWPERSONALMAIL 14
-#define YAHOO_SERVICE_NEWCONTACT 15
-#define YAHOO_SERVICE_ADDIDENT 16
-#define YAHOO_SERVICE_ADDIGNORE 17
-#define YAHOO_SERVICE_PING 18
-#define YAHOO_SERVICE_GROUPRENAME 19
-#define YAHOO_SERVICE_SYSMESSAGE 20
-#define YAHOO_SERVICE_PASSTHROUGH2 22
-#define YAHOO_SERVICE_CONFINVITE 24
-#define YAHOO_SERVICE_CONFLOGON 25
-#define YAHOO_SERVICE_CONFDECLINE 26
-#define YAHOO_SERVICE_CONFLOGOFF 27
-#define YAHOO_SERVICE_CONFADDINVITE 28
-#define YAHOO_SERVICE_CONFMSG 29
-#define YAHOO_SERVICE_CHATLOGON 30
-#define YAHOO_SERVICE_CHATLOGOFF 31
-#define YAHOO_SERVICE_CHATMSG 32
-#define YAHOO_SERVICE_FILETRANSFER 70
-#define YAHOO_SERVICE_CHATADDINVITE 157
-#define YAHOO_SERVICE_AVATAR 188
-#define YAHOO_SERVICE_PICTURE_CHECKSUM 189
-#define YAHOO_SERVICE_PICTURE 190
-#define YAHOO_SERVICE_PICTURE_UPDATE 193
-#define YAHOO_SERVICE_PICTURE_UPLOAD 194
-#define YAHOO_SERVICE_YAHOO6_STATUS_UPDATE 198
-#define YAHOO_SERVICE_AVATAR_UPDATE 199
-#define YAHOO_SERVICE_AUDIBLE 208
-#define YAHOO_SERVICE_WEBLOGIN 550
-#define YAHOO_SERVICE_SMS_MSG 746
+#define YAHOO_SERVICE_LOGON 1
+#define YAHOO_SERVICE_LOGOFF 2
+#define YAHOO_SERVICE_ISAWAY 3
+#define YAHOO_SERVICE_ISBACK 4
+#define YAHOO_SERVICE_IDLE 5
+#define YAHOO_SERVICE_MESSAGE 6
+#define YAHOO_SERVICE_IDACT 7
+#define YAHOO_SERVICE_IDDEACT 8
+#define YAHOO_SERVICE_MAILSTAT 9
+#define YAHOO_SERVICE_USERSTAT 10
+#define YAHOO_SERVICE_NEWMAIL 11
+#define YAHOO_SERVICE_CHATINVITE 12
+#define YAHOO_SERVICE_CALENDAR 13
+#define YAHOO_SERVICE_NEWPERSONALMAIL 14
+#define YAHOO_SERVICE_NEWCONTACT 15
+#define YAHOO_SERVICE_ADDIDENT 16
+#define YAHOO_SERVICE_ADDIGNORE 17
+#define YAHOO_SERVICE_PING 18
+#define YAHOO_SERVICE_GROUPRENAME 19
+#define YAHOO_SERVICE_SYSMESSAGE 20
+#define YAHOO_SERVICE_PASSTHROUGH2 22
+#define YAHOO_SERVICE_CONFINVITE 24
+#define YAHOO_SERVICE_CONFLOGON 25
+#define YAHOO_SERVICE_CONFDECLINE 26
+#define YAHOO_SERVICE_CONFLOGOFF 27
+#define YAHOO_SERVICE_CONFADDINVITE 28
+#define YAHOO_SERVICE_CONFMSG 29
+#define YAHOO_SERVICE_CHATLOGON 30
+#define YAHOO_SERVICE_CHATLOGOFF 31
+#define YAHOO_SERVICE_CHATMSG 32
+#define YAHOO_SERVICE_FILETRANSFER 70
+#define YAHOO_SERVICE_CHATADDINVITE 157
+#define YAHOO_SERVICE_AVATAR 188
+#define YAHOO_SERVICE_PICTURE_CHECKSUM 189
+#define YAHOO_SERVICE_PICTURE 190
+#define YAHOO_SERVICE_PICTURE_UPDATE 193
+#define YAHOO_SERVICE_PICTURE_UPLOAD 194
+#define YAHOO_SERVICE_YAHOO6_STATUS_UPDATE 198
+#define YAHOO_SERVICE_AVATAR_UPDATE 199
+#define YAHOO_SERVICE_AUDIBLE 208
+#define YAHOO_SERVICE_WEBLOGIN 550
+#define YAHOO_SERVICE_SMS_MSG 746
/* Message flags */
@@ -103,71 +103,75 @@ static gint ett_yhoo = -1;
#define YAHOO_MSGTYPE_STATUS 4
#define YAHOO_MSGTYPE_OFFLINE 1515563606 /* yuck! */
+#define YAHOO_RAWPACKET_LEN 105
+
+#if 0
struct yahoo_rawpacket
{
- char version[8]; /* 7 chars and trailing null */
- unsigned char len[4]; /* length - little endian */
- unsigned char service[4]; /* service - little endian */
- unsigned char connection_id[4]; /* connection number - little endian */
- unsigned char magic_id[4]; /* magic number used for http session */
+ char version[8]; /* 7 chars and trailing null */
+ unsigned char len[4]; /* length - little endian */
+ unsigned char service[4]; /* service - little endian */
+ unsigned char connection_id[4]; /* connection number - little endian */
+ unsigned char magic_id[4]; /* magic number used for http session */
unsigned char unknown1[4];
unsigned char msgtype[4];
- char nick1[36];
- char nick2[36];
- char content[1]; /* was zero, had problems with aix xlc */
+ char nick1[36];
+ char nick2[36];
+ char content[1]; /* was zero, had problems with aix xlc */
};
+#endif
static const value_string yhoo_service_vals[] = {
- {YAHOO_SERVICE_LOGON, "Pager Logon"},
- {YAHOO_SERVICE_LOGOFF, "Pager Logoff"},
- {YAHOO_SERVICE_ISAWAY, "Is Away"},
- {YAHOO_SERVICE_ISBACK, "Is Back"},
- {YAHOO_SERVICE_IDLE, "Idle"},
- {YAHOO_SERVICE_MESSAGE, "Message"},
- {YAHOO_SERVICE_IDACT, "Activate Identity"},
- {YAHOO_SERVICE_IDDEACT, "Deactivate Identity"},
- {YAHOO_SERVICE_MAILSTAT, "Mail Status"},
- {YAHOO_SERVICE_USERSTAT, "User Status"},
- {YAHOO_SERVICE_NEWMAIL, "New Mail"},
- {YAHOO_SERVICE_CHATINVITE, "Chat Invitation"},
- {YAHOO_SERVICE_CALENDAR, "Calendar Reminder"},
- {YAHOO_SERVICE_NEWPERSONALMAIL, "New Personals Mail"},
- {YAHOO_SERVICE_NEWCONTACT, "New Friend"},
- {YAHOO_SERVICE_GROUPRENAME, "Group Renamed"},
- {YAHOO_SERVICE_ADDIDENT, "Add Identity"},
- {YAHOO_SERVICE_ADDIGNORE, "Add Ignore"},
- {YAHOO_SERVICE_PING, "Ping"},
- {YAHOO_SERVICE_SYSMESSAGE, "System Message"},
- {YAHOO_SERVICE_CONFINVITE, "Conference Invitation"},
- {YAHOO_SERVICE_CONFLOGON, "Conference Logon"},
- {YAHOO_SERVICE_CONFDECLINE, "Conference Decline"},
- {YAHOO_SERVICE_CONFLOGOFF, "Conference Logoff"},
- {YAHOO_SERVICE_CONFMSG, "Conference Message"},
- {YAHOO_SERVICE_CONFADDINVITE, "Conference Additional Invitation"},
- {YAHOO_SERVICE_CHATLOGON, "Chat Logon"},
- {YAHOO_SERVICE_CHATLOGOFF, "Chat Logoff"},
- {YAHOO_SERVICE_CHATMSG, "Chat Message"},
- {YAHOO_SERVICE_FILETRANSFER, "File Transfer"},
- {YAHOO_SERVICE_PASSTHROUGH2, "Passthrough 2"},
- {YAHOO_SERVICE_CHATADDINVITE, "Chat add Invite"},
- {YAHOO_SERVICE_AVATAR, "Avatar"},
- {YAHOO_SERVICE_PICTURE_CHECKSUM, "Picture Checksum"},
- {YAHOO_SERVICE_PICTURE, "Picture"},
- {YAHOO_SERVICE_PICTURE_UPDATE, "Picture Update"},
- {YAHOO_SERVICE_PICTURE_UPLOAD, "Picture Upload"},
+ {YAHOO_SERVICE_LOGON, "Pager Logon"},
+ {YAHOO_SERVICE_LOGOFF, "Pager Logoff"},
+ {YAHOO_SERVICE_ISAWAY, "Is Away"},
+ {YAHOO_SERVICE_ISBACK, "Is Back"},
+ {YAHOO_SERVICE_IDLE, "Idle"},
+ {YAHOO_SERVICE_MESSAGE, "Message"},
+ {YAHOO_SERVICE_IDACT, "Activate Identity"},
+ {YAHOO_SERVICE_IDDEACT, "Deactivate Identity"},
+ {YAHOO_SERVICE_MAILSTAT, "Mail Status"},
+ {YAHOO_SERVICE_USERSTAT, "User Status"},
+ {YAHOO_SERVICE_NEWMAIL, "New Mail"},
+ {YAHOO_SERVICE_CHATINVITE, "Chat Invitation"},
+ {YAHOO_SERVICE_CALENDAR, "Calendar Reminder"},
+ {YAHOO_SERVICE_NEWPERSONALMAIL, "New Personals Mail"},
+ {YAHOO_SERVICE_NEWCONTACT, "New Friend"},
+ {YAHOO_SERVICE_GROUPRENAME, "Group Renamed"},
+ {YAHOO_SERVICE_ADDIDENT, "Add Identity"},
+ {YAHOO_SERVICE_ADDIGNORE, "Add Ignore"},
+ {YAHOO_SERVICE_PING, "Ping"},
+ {YAHOO_SERVICE_SYSMESSAGE, "System Message"},
+ {YAHOO_SERVICE_CONFINVITE, "Conference Invitation"},
+ {YAHOO_SERVICE_CONFLOGON, "Conference Logon"},
+ {YAHOO_SERVICE_CONFDECLINE, "Conference Decline"},
+ {YAHOO_SERVICE_CONFLOGOFF, "Conference Logoff"},
+ {YAHOO_SERVICE_CONFMSG, "Conference Message"},
+ {YAHOO_SERVICE_CONFADDINVITE, "Conference Additional Invitation"},
+ {YAHOO_SERVICE_CHATLOGON, "Chat Logon"},
+ {YAHOO_SERVICE_CHATLOGOFF, "Chat Logoff"},
+ {YAHOO_SERVICE_CHATMSG, "Chat Message"},
+ {YAHOO_SERVICE_FILETRANSFER, "File Transfer"},
+ {YAHOO_SERVICE_PASSTHROUGH2, "Passthrough 2"},
+ {YAHOO_SERVICE_CHATADDINVITE, "Chat add Invite"},
+ {YAHOO_SERVICE_AVATAR, "Avatar"},
+ {YAHOO_SERVICE_PICTURE_CHECKSUM, "Picture Checksum"},
+ {YAHOO_SERVICE_PICTURE, "Picture"},
+ {YAHOO_SERVICE_PICTURE_UPDATE, "Picture Update"},
+ {YAHOO_SERVICE_PICTURE_UPLOAD, "Picture Upload"},
{YAHOO_SERVICE_YAHOO6_STATUS_UPDATE, "Status update"},
- {YAHOO_SERVICE_AUDIBLE, "Audible"},
- {YAHOO_SERVICE_WEBLOGIN, "Weblogin"},
- {YAHOO_SERVICE_SMS_MSG, "SMS Message"},
+ {YAHOO_SERVICE_AUDIBLE, "Audible"},
+ {YAHOO_SERVICE_WEBLOGIN, "Weblogin"},
+ {YAHOO_SERVICE_SMS_MSG, "SMS Message"},
{0, NULL}
};
static const value_string yhoo_msgtype_vals[] = {
- {YAHOO_MSGTYPE_NONE, "None"},
- {YAHOO_MSGTYPE_NORMAL, "Normal"},
- {YAHOO_MSGTYPE_BOUNCE, "Bounce"},
- {YAHOO_MSGTYPE_STATUS, "Status Update"},
- {YAHOO_MSGTYPE_OFFLINE, "Request Offline"},
+ {YAHOO_MSGTYPE_NONE, "None"},
+ {YAHOO_MSGTYPE_NORMAL, "Normal"},
+ {YAHOO_MSGTYPE_BOUNCE, "Bounce"},
+ {YAHOO_MSGTYPE_STATUS, "Status Update"},
+ {YAHOO_MSGTYPE_OFFLINE, "Request Offline"},
{0, NULL}
};
@@ -175,7 +179,7 @@ static gboolean
dissect_yhoo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_tree *yhoo_tree, *ti;
- int offset = 0;
+ int offset = 0;
if (pinfo->srcport != TCP_PORT_YHOO && pinfo->destport != TCP_PORT_YHOO) {
/* Not the Yahoo port - not a Yahoo Messenger packet. */
@@ -183,7 +187,7 @@ dissect_yhoo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
/* get at least a full packet structure */
- if ( tvb_length(tvb) < sizeof(struct yahoo_rawpacket) ) {
+ if ( tvb_length(tvb) < YAHOO_RAWPACKET_LEN ) {
/* Not enough data captured; maybe it is a Yahoo
Messenger packet, but it contains too little data to
tell. */
@@ -198,7 +202,6 @@ dissect_yhoo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
col_set_str(pinfo->cinfo, COL_PROTOCOL, "YHOO");
- offset = 0;
if (check_col(pinfo->cinfo, COL_INFO)) {
col_add_fstr(pinfo->cinfo, COL_INFO, "%s: %s",
( tvb_memeql(tvb, offset + 0, "YPNS", 4) == 0 ) ? "Request" : "Response",
@@ -207,8 +210,8 @@ dissect_yhoo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
if (tree) {
- ti = proto_tree_add_item(tree, proto_yhoo, tvb, offset, -1,
- ENC_NA);
+ ti = proto_tree_add_item(tree, proto_yhoo, tvb,
+ offset, -1, ENC_NA);
yhoo_tree = proto_item_add_subtree(ti, ett_yhoo);
proto_tree_add_item(yhoo_tree, hf_yhoo_version, tvb,
@@ -258,34 +261,34 @@ void
proto_register_yhoo(void)
{
static hf_register_info hf[] = {
- { &hf_yhoo_service, {
+ { &hf_yhoo_service, {
"Service Type", "yhoo.service", FT_UINT32, BASE_DEC,
VALS(yhoo_service_vals), 0, NULL, HFILL }},
- { &hf_yhoo_msgtype, {
+ { &hf_yhoo_msgtype, {
"Message Type", "yhoo.msgtype", FT_UINT32, BASE_DEC,
VALS(yhoo_msgtype_vals), 0, "Message Type Flags", HFILL }},
- { &hf_yhoo_connection_id, {
+ { &hf_yhoo_connection_id, {
"Connection ID", "yhoo.connection_id", FT_UINT32, BASE_HEX,
NULL, 0, NULL, HFILL }},
- { &hf_yhoo_magic_id, {
+ { &hf_yhoo_magic_id, {
"Magic ID", "yhoo.magic_id", FT_UINT32, BASE_HEX,
NULL, 0, NULL, HFILL }},
- { &hf_yhoo_unknown1, {
+ { &hf_yhoo_unknown1, {
"Unknown 1", "yhoo.unknown1", FT_UINT32, BASE_HEX,
NULL, 0, NULL, HFILL }},
- { &hf_yhoo_len, {
+ { &hf_yhoo_len, {
"Packet Length", "yhoo.len", FT_UINT32, BASE_DEC,
NULL, 0, NULL, HFILL }},
- { &hf_yhoo_nick1, {
+ { &hf_yhoo_nick1, {
"Real Nick (nick1)", "yhoo.nick1", FT_STRING, BASE_NONE,
NULL, 0, NULL, HFILL }},
- { &hf_yhoo_nick2, {
+ { &hf_yhoo_nick2, {
"Active Nick (nick2)", "yhoo.nick2", FT_STRING, BASE_NONE,
NULL, 0, NULL, HFILL }},
- { &hf_yhoo_content, {
+ { &hf_yhoo_content, {
"Content", "yhoo.content", FT_STRING, BASE_NONE,
NULL, 0, "Data portion of the packet", HFILL }},
- { &hf_yhoo_version, {
+ { &hf_yhoo_version, {
"Version", "yhoo.version", FT_STRING, BASE_NONE,
NULL, 0, "Packet version identifier", HFILL }},
};
diff --git a/epan/dissectors/packet-ymsg.c b/epan/dissectors/packet-ymsg.c
index 2549894013..77b0e68ca5 100644
--- a/epan/dissectors/packet-ymsg.c
+++ b/epan/dissectors/packet-ymsg.c
@@ -51,8 +51,8 @@ static gint ett_ymsg = -1;
static gint ett_ymsg_content = -1;
static gint ett_ymsg_content_line = -1;
-#define TCP_PORT_YMSG 23 /* XXX - this is Telnet! */
-#define TCP_PORT_YMSG_2 25 /* And this is SMTP! */
+#define TCP_PORT_YMSG 23 /* XXX - this is Telnet! */
+#define TCP_PORT_YMSG_2 25 /* And this is SMTP! */
#define TCP_PORT_YMSG_3 5050 /* This, however, is regular Yahoo Messenger */
/* desegmentation of YMSG over TCP */
@@ -84,29 +84,29 @@ static gboolean ymsg_desegment = TRUE;
/* Service constants */
enum yahoo_service { /* these are easier to see in hex */
- YAHOO_SERVICE_LOGON = 1,
+ YAHOO_SERVICE_LOGON = 1,
YAHOO_SERVICE_LOGOFF,
YAHOO_SERVICE_ISAWAY,
YAHOO_SERVICE_ISBACK,
- YAHOO_SERVICE_IDLE, /* 5 (placemarker) */
+ YAHOO_SERVICE_IDLE, /* 5 (placemarker) */
YAHOO_SERVICE_MESSAGE,
YAHOO_SERVICE_IDACT,
YAHOO_SERVICE_IDDEACT,
YAHOO_SERVICE_MAILSTAT,
- YAHOO_SERVICE_USERSTAT, /* 0xa */
+ YAHOO_SERVICE_USERSTAT, /* 0xa */
YAHOO_SERVICE_NEWMAIL,
YAHOO_SERVICE_CHATINVITE,
YAHOO_SERVICE_CALENDAR,
YAHOO_SERVICE_NEWPERSONALMAIL,
YAHOO_SERVICE_NEWCONTACT,
- YAHOO_SERVICE_ADDIDENT, /* 0x10 */
+ YAHOO_SERVICE_ADDIDENT, /* 0x10 */
YAHOO_SERVICE_ADDIGNORE,
YAHOO_SERVICE_PING,
- YAHOO_SERVICE_GOTGROUPRENAME, /* < 1, 36(old), 37(new) */
- YAHOO_SERVICE_SYSMESSAGE = 0x14,
- YAHOO_SERVICE_SKINNAME = 0x15,
- YAHOO_SERVICE_PASSTHROUGH2 = 0x16,
- YAHOO_SERVICE_CONFINVITE = 0x18,
+ YAHOO_SERVICE_GOTGROUPRENAME, /* < 1, 36(old), 37(new) */
+ YAHOO_SERVICE_SYSMESSAGE = 0x14,
+ YAHOO_SERVICE_SKINNAME = 0x15,
+ YAHOO_SERVICE_PASSTHROUGH2 = 0x16,
+ YAHOO_SERVICE_CONFINVITE = 0x18,
YAHOO_SERVICE_CONFLOGON,
YAHOO_SERVICE_CONFDECLINE,
YAHOO_SERVICE_CONFLOGOFF,
@@ -114,68 +114,68 @@ enum yahoo_service { /* these are easier to see in hex */
YAHOO_SERVICE_CONFMSG,
YAHOO_SERVICE_CHATLOGON,
YAHOO_SERVICE_CHATLOGOFF,
- YAHOO_SERVICE_CHATMSG = 0x20,
- YAHOO_SERVICE_GAMELOGON = 0x28,
+ YAHOO_SERVICE_CHATMSG = 0x20,
+ YAHOO_SERVICE_GAMELOGON = 0x28,
YAHOO_SERVICE_GAMELOGOFF,
- YAHOO_SERVICE_GAMEMSG = 0x2a,
- YAHOO_SERVICE_FILETRANSFER = 0x46,
- YAHOO_SERVICE_VOICECHAT = 0x4A,
+ YAHOO_SERVICE_GAMEMSG = 0x2a,
+ YAHOO_SERVICE_FILETRANSFER = 0x46,
+ YAHOO_SERVICE_VOICECHAT = 0x4A,
YAHOO_SERVICE_NOTIFY,
YAHOO_SERVICE_VERIFY,
YAHOO_SERVICE_P2PFILEXFER,
- YAHOO_SERVICE_PEERTOPEER = 0x4F, /* Checks if P2P possible */
+ YAHOO_SERVICE_PEERTOPEER = 0x4F, /* Checks if P2P possible */
YAHOO_SERVICE_WEBCAM,
- YAHOO_SERVICE_AUTHRESP = 0x54,
+ YAHOO_SERVICE_AUTHRESP = 0x54,
YAHOO_SERVICE_LIST,
- YAHOO_SERVICE_AUTH = 0x57,
- YAHOO_SERVICE_AUTHBUDDY = 0x6d,
- YAHOO_SERVICE_ADDBUDDY = 0x83,
+ YAHOO_SERVICE_AUTH = 0x57,
+ YAHOO_SERVICE_AUTHBUDDY = 0x6d,
+ YAHOO_SERVICE_ADDBUDDY = 0x83,
YAHOO_SERVICE_REMBUDDY,
- YAHOO_SERVICE_IGNORECONTACT, /* > 1, 7, 13 < 1, 66, 13, 0*/
+ YAHOO_SERVICE_IGNORECONTACT, /* > 1, 7, 13 < 1, 66, 13, 0*/
YAHOO_SERVICE_REJECTCONTACT,
- YAHOO_SERVICE_GROUPRENAME = 0x89, /* > 1, 65(new), 66(0), 67(old) */
- YAHOO_SERVICE_KEEPALIVE = 0x8a,
- YAHOO_SERVICE_CHATONLINE = 0x96, /* > 109(id), 1, 6(abcde) < 0,1*/
+ YAHOO_SERVICE_GROUPRENAME = 0x89, /* > 1, 65(new), 66(0), 67(old) */
+ YAHOO_SERVICE_KEEPALIVE = 0x8a,
+ YAHOO_SERVICE_CHATONLINE = 0x96, /* > 109(id), 1, 6(abcde) < 0,1*/
YAHOO_SERVICE_CHATGOTO,
- YAHOO_SERVICE_CHATJOIN, /* > 1 104-room 129-1600326591 62-2 */
+ YAHOO_SERVICE_CHATJOIN, /* > 1 104-room 129-1600326591 62-2 */
YAHOO_SERVICE_CHATLEAVE,
- YAHOO_SERVICE_CHATEXIT = 0x9b,
- YAHOO_SERVICE_CHATADDINVITE = 0x9d,
- YAHOO_SERVICE_CHATLOGOUT = 0xa0,
+ YAHOO_SERVICE_CHATEXIT = 0x9b,
+ YAHOO_SERVICE_CHATADDINVITE = 0x9d,
+ YAHOO_SERVICE_CHATLOGOUT = 0xa0,
YAHOO_SERVICE_CHATPING,
- YAHOO_SERVICE_COMMENT = 0xa8,
- YAHOO_SERVICE_GAME_INVITE = 0xb7,
- YAHOO_SERVICE_STEALTH_PERM = 0xb9,
- YAHOO_SERVICE_STEALTH_SESSION = 0xba,
- YAHOO_SERVICE_AVATAR = 0xbc,
- YAHOO_SERVICE_PICTURE_CHECKSUM = 0xbd,
- YAHOO_SERVICE_PICTURE = 0xbe,
- YAHOO_SERVICE_PICTURE_UPDATE = 0xc1,
- YAHOO_SERVICE_PICTURE_UPLOAD = 0xc2,
- YAHOO_SERVICE_YAB_UPDATE = 0xc4,
- YAHOO_SERVICE_Y6_VISIBLE_TOGGLE = 0xc5, /* YMSG13, key 13: 2 = invisible, 1 = visible */
- YAHOO_SERVICE_Y6_STATUS_UPDATE = 0xc6, /* YMSG13 */
- YAHOO_SERVICE_PICTURE_STATUS = 0xc7, /* YMSG13, key 213: 0 = none, 1 = avatar, 2 = picture */
- YAHOO_SERVICE_VERIFY_ID_EXISTS = 0xc8,
- YAHOO_SERVICE_AUDIBLE = 0xd0,
- YAHOO_SERVICE_Y7_PHOTO_SHARING = 0xd2,
- YAHOO_SERVICE_Y7_CONTACT_DETAILS = 0xd3,/* YMSG13 */
- YAHOO_SERVICE_Y7_CHAT_SESSION = 0xd4,
- YAHOO_SERVICE_Y7_AUTHORIZATION = 0xd6, /* YMSG13 */
- YAHOO_SERVICE_Y7_FILETRANSFER = 0xdc, /* YMSG13 */
- YAHOO_SERVICE_Y7_FILETRANSFERINFO, /* YMSG13 */
- YAHOO_SERVICE_Y7_FILETRANSFERACCEPT, /* YMSG13 */
- YAHOO_SERVICE_Y7_MINGLE = 0xe1, /* YMSG13 */
- YAHOO_SERVICE_Y7_CHANGE_GROUP = 0xe7, /* YMSG13 */
- YAHOO_SERVICE_STATUS_15 = 0xf0,
- YAHOO_SERVICE_LIST_15 = 0xf1,
- YAHOO_SERVICE_WEBLOGIN = 0x0226,
- YAHOO_SERVICE_SMS_MSG = 0x02ea
+ YAHOO_SERVICE_COMMENT = 0xa8,
+ YAHOO_SERVICE_GAME_INVITE = 0xb7,
+ YAHOO_SERVICE_STEALTH_PERM = 0xb9,
+ YAHOO_SERVICE_STEALTH_SESSION = 0xba,
+ YAHOO_SERVICE_AVATAR = 0xbc,
+ YAHOO_SERVICE_PICTURE_CHECKSUM = 0xbd,
+ YAHOO_SERVICE_PICTURE = 0xbe,
+ YAHOO_SERVICE_PICTURE_UPDATE = 0xc1,
+ YAHOO_SERVICE_PICTURE_UPLOAD = 0xc2,
+ YAHOO_SERVICE_YAB_UPDATE = 0xc4,
+ YAHOO_SERVICE_Y6_VISIBLE_TOGGLE = 0xc5, /* YMSG13, key 13: 2 = invisible, 1 = visible */
+ YAHOO_SERVICE_Y6_STATUS_UPDATE = 0xc6, /* YMSG13 */
+ YAHOO_SERVICE_PICTURE_STATUS = 0xc7, /* YMSG13, key 213: 0 = none, 1 = avatar, 2 = picture */
+ YAHOO_SERVICE_VERIFY_ID_EXISTS = 0xc8,
+ YAHOO_SERVICE_AUDIBLE = 0xd0,
+ YAHOO_SERVICE_Y7_PHOTO_SHARING = 0xd2,
+ YAHOO_SERVICE_Y7_CONTACT_DETAILS = 0xd3, /* YMSG13 */
+ YAHOO_SERVICE_Y7_CHAT_SESSION = 0xd4,
+ YAHOO_SERVICE_Y7_AUTHORIZATION = 0xd6, /* YMSG13 */
+ YAHOO_SERVICE_Y7_FILETRANSFER = 0xdc, /* YMSG13 */
+ YAHOO_SERVICE_Y7_FILETRANSFERINFO, /* YMSG13 */
+ YAHOO_SERVICE_Y7_FILETRANSFERACCEPT, /* YMSG13 */
+ YAHOO_SERVICE_Y7_MINGLE = 0xe1, /* YMSG13 */
+ YAHOO_SERVICE_Y7_CHANGE_GROUP = 0xe7, /* YMSG13 */
+ YAHOO_SERVICE_STATUS_15 = 0xf0,
+ YAHOO_SERVICE_LIST_15 = 0xf1,
+ YAHOO_SERVICE_WEBLOGIN = 0x0226,
+ YAHOO_SERVICE_SMS_MSG = 0x02ea
};
/* Message flags */
enum yahoo_status {
- YAHOO_STATUS_AVAILABLE = 0,
+ YAHOO_STATUS_AVAILABLE = 0,
YAHOO_STATUS_BRB,
YAHOO_STATUS_BUSY,
YAHOO_STATUS_NOTATHOME,
@@ -185,28 +185,32 @@ enum yahoo_status {
YAHOO_STATUS_ONVACATION,
YAHOO_STATUS_OUTTOLUNCH,
YAHOO_STATUS_STEPPEDOUT,
- YAHOO_STATUS_INVISIBLE = 12,
- YAHOO_STATUS_CUSTOM = 99,
- YAHOO_STATUS_IDLE = 999,
- YAHOO_STATUS_WEBLOGIN = 0x5a55aa55,
- YAHOO_STATUS_OFFLINE = 0x5a55aa56, /* don't ask */
- YAHOO_STATUS_TYPING = 0x16,
- YAHOO_STATUS_DISCONNECTED = 0xffffffff /* in ymsg 15. doesnt mean the normal sense of 'disconnected' */
+ YAHOO_STATUS_INVISIBLE = 12,
+ YAHOO_STATUS_CUSTOM = 99,
+ YAHOO_STATUS_IDLE = 999,
+ YAHOO_STATUS_WEBLOGIN = 0x5a55aa55,
+ YAHOO_STATUS_OFFLINE = 0x5a55aa56, /* don't ask */
+ YAHOO_STATUS_TYPING = 0x16,
+ YAHOO_STATUS_DISCONNECTED = 0xffffffff /* in ymsg 15. doesnt mean the normal sense of 'disconnected' */
};
enum ypacket_status {
YPACKET_STATUS_DISCONNECTED = -1,
- YPACKET_STATUS_DEFAULT = 0,
- YPACKET_STATUS_SERVERACK = 1,
- YPACKET_STATUS_GAME = 0x2,
- YPACKET_STATUS_AWAY = 0x4,
- YPACKET_STATUS_CONTINUED = 0x5,
- YPACKET_STATUS_INVISIBLE = 12,
- YPACKET_STATUS_NOTIFY = 0x16, /* TYPING */
- YPACKET_STATUS_WEBLOGIN = 0x5a55aa55,
- YPACKET_STATUS_OFFLINE = 0x5a55aa56
+ YPACKET_STATUS_DEFAULT = 0,
+ YPACKET_STATUS_SERVERACK = 1,
+ YPACKET_STATUS_GAME = 0x2,
+ YPACKET_STATUS_AWAY = 0x4,
+ YPACKET_STATUS_CONTINUED = 0x5,
+ YPACKET_STATUS_INVISIBLE = 12,
+ YPACKET_STATUS_NOTIFY = 0x16, /* TYPING */
+ YPACKET_STATUS_WEBLOGIN = 0x5a55aa55,
+ YPACKET_STATUS_OFFLINE = 0x5a55aa56
};
+/* The size of the below struct minus 6 bytes of content */
+#define YAHOO_HEADER_SIZE 20
+
+#if 0
struct yahoo_rawpacket
{
char ymsg[4]; /* Packet identification string (YMSG) */
@@ -218,106 +222,107 @@ struct yahoo_rawpacket
unsigned char session_id[4]; /* Session ID */
char content[6]; /* 6 is the minimum size of the content */
};
+#endif
static const value_string ymsg_service_vals[] = {
- {YAHOO_SERVICE_LOGON, "Pager Logon"},
- {YAHOO_SERVICE_LOGOFF, "Pager Logoff"},
- {YAHOO_SERVICE_ISAWAY, "Is Away"},
- {YAHOO_SERVICE_ISBACK, "Is Back"},
- {YAHOO_SERVICE_IDLE, "Idle"},
- {YAHOO_SERVICE_MESSAGE, "Message"},
- {YAHOO_SERVICE_IDACT, "Activate Identity"},
- {YAHOO_SERVICE_IDDEACT, "Deactivate Identity"},
- {YAHOO_SERVICE_MAILSTAT, "Mail Status"},
- {YAHOO_SERVICE_USERSTAT, "User Status"},
- {YAHOO_SERVICE_NEWMAIL, "New Mail"},
- {YAHOO_SERVICE_CHATINVITE, "Chat Invitation"},
- {YAHOO_SERVICE_CALENDAR, "Calendar Reminder"},
- {YAHOO_SERVICE_NEWPERSONALMAIL, "New Personals Mail"},
- {YAHOO_SERVICE_NEWCONTACT, "New Friend"},
- {YAHOO_SERVICE_ADDIDENT, "Add Identity"},
- {YAHOO_SERVICE_ADDIGNORE, "Add Ignore"},
- {YAHOO_SERVICE_PING, "Ping"},
- {YAHOO_SERVICE_GOTGROUPRENAME, "Got Group Rename"},
- {YAHOO_SERVICE_SYSMESSAGE, "System Message"},
- {YAHOO_SERVICE_SKINNAME, "Skinname"},
- {YAHOO_SERVICE_PASSTHROUGH2, "Passthrough 2"},
- {YAHOO_SERVICE_CONFINVITE, "Conference Invitation"},
- {YAHOO_SERVICE_CONFLOGON, "Conference Logon"},
- {YAHOO_SERVICE_CONFDECLINE, "Conference Decline"},
- {YAHOO_SERVICE_CONFLOGOFF, "Conference Logoff"},
- {YAHOO_SERVICE_CONFADDINVITE, "Conference Additional Invitation"},
- {YAHOO_SERVICE_CONFMSG, "Conference Message"},
- {YAHOO_SERVICE_CHATLOGON, "Chat Logon"},
- {YAHOO_SERVICE_CHATLOGOFF, "Chat Logoff"},
- {YAHOO_SERVICE_CHATMSG, "Chat Message"},
- {YAHOO_SERVICE_GAMELOGON, "Game Logon"},
- {YAHOO_SERVICE_GAMELOGOFF, "Game Logoff"},
- {YAHOO_SERVICE_GAMEMSG, "Game Message"},
- {YAHOO_SERVICE_FILETRANSFER, "File Transfer"},
- {YAHOO_SERVICE_VOICECHAT, "Voice Chat"},
- {YAHOO_SERVICE_NOTIFY, "Notify"},
- {YAHOO_SERVICE_VERIFY, "Verify"},
- {YAHOO_SERVICE_P2PFILEXFER, "P2P File Transfer"},
- {YAHOO_SERVICE_PEERTOPEER, "Peer To Peer"},
- {YAHOO_SERVICE_WEBCAM, "WebCam"},
- {YAHOO_SERVICE_AUTHRESP, "Authentication Response"},
- {YAHOO_SERVICE_LIST, "List"},
- {YAHOO_SERVICE_AUTH, "Authentication"},
- {YAHOO_SERVICE_AUTHBUDDY, "Authorize Buddy"},
- {YAHOO_SERVICE_ADDBUDDY, "Add Buddy"},
- {YAHOO_SERVICE_REMBUDDY, "Remove Buddy"},
- {YAHOO_SERVICE_IGNORECONTACT, "Ignore Contact"},
- {YAHOO_SERVICE_REJECTCONTACT, "Reject Contact"},
- {YAHOO_SERVICE_GROUPRENAME, "Group Rename"},
- {YAHOO_SERVICE_KEEPALIVE, "Keep Alive"},
- {YAHOO_SERVICE_CHATONLINE, "Chat Online"},
- {YAHOO_SERVICE_CHATGOTO, "Chat Goto"},
- {YAHOO_SERVICE_CHATJOIN, "Chat Join"},
- {YAHOO_SERVICE_CHATLEAVE, "Chat Leave"},
- {YAHOO_SERVICE_CHATEXIT, "Chat Exit"},
- {YAHOO_SERVICE_CHATADDINVITE, "Chat Invite"},
- {YAHOO_SERVICE_CHATLOGOUT, "Chat Logout"},
- {YAHOO_SERVICE_CHATPING, "Chat Ping"},
- {YAHOO_SERVICE_COMMENT, "Comment"},
- {YAHOO_SERVICE_GAME_INVITE,"Game Invite"},
- {YAHOO_SERVICE_STEALTH_PERM, "Stealth Permanent"},
- {YAHOO_SERVICE_STEALTH_SESSION, "Stealth Session"},
- {YAHOO_SERVICE_AVATAR,"Avatar"},
- {YAHOO_SERVICE_PICTURE_CHECKSUM,"Picture Checksum"},
- {YAHOO_SERVICE_PICTURE,"Picture"},
- {YAHOO_SERVICE_PICTURE_UPDATE,"Picture Update"},
- {YAHOO_SERVICE_PICTURE_UPLOAD,"Picture Upload"},
- {YAHOO_SERVICE_YAB_UPDATE,"Yahoo Address Book Update"},
- {YAHOO_SERVICE_Y6_VISIBLE_TOGGLE, "Y6 Visibility Toggle"},
- {YAHOO_SERVICE_Y6_STATUS_UPDATE, "Y6 Status Update"},
- {YAHOO_SERVICE_PICTURE_STATUS, "Picture Sharing Status"},
- {YAHOO_SERVICE_VERIFY_ID_EXISTS, "Verify ID Exists"},
- {YAHOO_SERVICE_AUDIBLE, "Audible"},
- {YAHOO_SERVICE_Y7_CONTACT_DETAILS,"Y7 Contact Details"},
- {YAHOO_SERVICE_Y7_CHAT_SESSION, "Y7 Chat Session"},
- {YAHOO_SERVICE_Y7_AUTHORIZATION,"Y7 Buddy Authorization"},
- {YAHOO_SERVICE_Y7_FILETRANSFER,"Y7 File Transfer"},
- {YAHOO_SERVICE_Y7_FILETRANSFERINFO,"Y7 File Transfer Information"},
- {YAHOO_SERVICE_Y7_FILETRANSFERACCEPT,"Y7 File Transfer Accept"},
- {YAHOO_SERVICE_Y7_CHANGE_GROUP, "Y7 Change Group"},
- {YAHOO_SERVICE_STATUS_15, "Status V15"},
- {YAHOO_SERVICE_LIST_15, "List V15"},
- {YAHOO_SERVICE_WEBLOGIN,"WebLogin"},
- {YAHOO_SERVICE_SMS_MSG,"SMS Message"},
+ {YAHOO_SERVICE_LOGON, "Pager Logon"},
+ {YAHOO_SERVICE_LOGOFF, "Pager Logoff"},
+ {YAHOO_SERVICE_ISAWAY, "Is Away"},
+ {YAHOO_SERVICE_ISBACK, "Is Back"},
+ {YAHOO_SERVICE_IDLE, "Idle"},
+ {YAHOO_SERVICE_MESSAGE, "Message"},
+ {YAHOO_SERVICE_IDACT, "Activate Identity"},
+ {YAHOO_SERVICE_IDDEACT, "Deactivate Identity"},
+ {YAHOO_SERVICE_MAILSTAT, "Mail Status"},
+ {YAHOO_SERVICE_USERSTAT, "User Status"},
+ {YAHOO_SERVICE_NEWMAIL, "New Mail"},
+ {YAHOO_SERVICE_CHATINVITE, "Chat Invitation"},
+ {YAHOO_SERVICE_CALENDAR, "Calendar Reminder"},
+ {YAHOO_SERVICE_NEWPERSONALMAIL, "New Personals Mail"},
+ {YAHOO_SERVICE_NEWCONTACT, "New Friend"},
+ {YAHOO_SERVICE_ADDIDENT, "Add Identity"},
+ {YAHOO_SERVICE_ADDIGNORE, "Add Ignore"},
+ {YAHOO_SERVICE_PING, "Ping"},
+ {YAHOO_SERVICE_GOTGROUPRENAME, "Got Group Rename"},
+ {YAHOO_SERVICE_SYSMESSAGE, "System Message"},
+ {YAHOO_SERVICE_SKINNAME, "Skinname"},
+ {YAHOO_SERVICE_PASSTHROUGH2, "Passthrough 2"},
+ {YAHOO_SERVICE_CONFINVITE, "Conference Invitation"},
+ {YAHOO_SERVICE_CONFLOGON, "Conference Logon"},
+ {YAHOO_SERVICE_CONFDECLINE, "Conference Decline"},
+ {YAHOO_SERVICE_CONFLOGOFF, "Conference Logoff"},
+ {YAHOO_SERVICE_CONFADDINVITE, "Conference Additional Invitation"},
+ {YAHOO_SERVICE_CONFMSG, "Conference Message"},
+ {YAHOO_SERVICE_CHATLOGON, "Chat Logon"},
+ {YAHOO_SERVICE_CHATLOGOFF, "Chat Logoff"},
+ {YAHOO_SERVICE_CHATMSG, "Chat Message"},
+ {YAHOO_SERVICE_GAMELOGON, "Game Logon"},
+ {YAHOO_SERVICE_GAMELOGOFF, "Game Logoff"},
+ {YAHOO_SERVICE_GAMEMSG, "Game Message"},
+ {YAHOO_SERVICE_FILETRANSFER, "File Transfer"},
+ {YAHOO_SERVICE_VOICECHAT, "Voice Chat"},
+ {YAHOO_SERVICE_NOTIFY, "Notify"},
+ {YAHOO_SERVICE_VERIFY, "Verify"},
+ {YAHOO_SERVICE_P2PFILEXFER, "P2P File Transfer"},
+ {YAHOO_SERVICE_PEERTOPEER, "Peer To Peer"},
+ {YAHOO_SERVICE_WEBCAM, "WebCam"},
+ {YAHOO_SERVICE_AUTHRESP, "Authentication Response"},
+ {YAHOO_SERVICE_LIST, "List"},
+ {YAHOO_SERVICE_AUTH, "Authentication"},
+ {YAHOO_SERVICE_AUTHBUDDY, "Authorize Buddy"},
+ {YAHOO_SERVICE_ADDBUDDY, "Add Buddy"},
+ {YAHOO_SERVICE_REMBUDDY, "Remove Buddy"},
+ {YAHOO_SERVICE_IGNORECONTACT, "Ignore Contact"},
+ {YAHOO_SERVICE_REJECTCONTACT, "Reject Contact"},
+ {YAHOO_SERVICE_GROUPRENAME, "Group Rename"},
+ {YAHOO_SERVICE_KEEPALIVE, "Keep Alive"},
+ {YAHOO_SERVICE_CHATONLINE, "Chat Online"},
+ {YAHOO_SERVICE_CHATGOTO, "Chat Goto"},
+ {YAHOO_SERVICE_CHATJOIN, "Chat Join"},
+ {YAHOO_SERVICE_CHATLEAVE, "Chat Leave"},
+ {YAHOO_SERVICE_CHATEXIT, "Chat Exit"},
+ {YAHOO_SERVICE_CHATADDINVITE, "Chat Invite"},
+ {YAHOO_SERVICE_CHATLOGOUT, "Chat Logout"},
+ {YAHOO_SERVICE_CHATPING, "Chat Ping"},
+ {YAHOO_SERVICE_COMMENT, "Comment"},
+ {YAHOO_SERVICE_GAME_INVITE, "Game Invite"},
+ {YAHOO_SERVICE_STEALTH_PERM, "Stealth Permanent"},
+ {YAHOO_SERVICE_STEALTH_SESSION, "Stealth Session"},
+ {YAHOO_SERVICE_AVATAR, "Avatar"},
+ {YAHOO_SERVICE_PICTURE_CHECKSUM, "Picture Checksum"},
+ {YAHOO_SERVICE_PICTURE, "Picture"},
+ {YAHOO_SERVICE_PICTURE_UPDATE, "Picture Update"},
+ {YAHOO_SERVICE_PICTURE_UPLOAD, "Picture Upload"},
+ {YAHOO_SERVICE_YAB_UPDATE, "Yahoo Address Book Update"},
+ {YAHOO_SERVICE_Y6_VISIBLE_TOGGLE, "Y6 Visibility Toggle"},
+ {YAHOO_SERVICE_Y6_STATUS_UPDATE, "Y6 Status Update"},
+ {YAHOO_SERVICE_PICTURE_STATUS, "Picture Sharing Status"},
+ {YAHOO_SERVICE_VERIFY_ID_EXISTS, "Verify ID Exists"},
+ {YAHOO_SERVICE_AUDIBLE, "Audible"},
+ {YAHOO_SERVICE_Y7_CONTACT_DETAILS, "Y7 Contact Details"},
+ {YAHOO_SERVICE_Y7_CHAT_SESSION, "Y7 Chat Session"},
+ {YAHOO_SERVICE_Y7_AUTHORIZATION, "Y7 Buddy Authorization"},
+ {YAHOO_SERVICE_Y7_FILETRANSFER, "Y7 File Transfer"},
+ {YAHOO_SERVICE_Y7_FILETRANSFERINFO, "Y7 File Transfer Information"},
+ {YAHOO_SERVICE_Y7_FILETRANSFERACCEPT, "Y7 File Transfer Accept"},
+ {YAHOO_SERVICE_Y7_CHANGE_GROUP, "Y7 Change Group"},
+ {YAHOO_SERVICE_STATUS_15, "Status V15"},
+ {YAHOO_SERVICE_LIST_15, "List V15"},
+ {YAHOO_SERVICE_WEBLOGIN, "WebLogin"},
+ {YAHOO_SERVICE_SMS_MSG, "SMS Message"},
{0, NULL}
};
static const value_string ymsg_status_vals[] = {
- {YPACKET_STATUS_DISCONNECTED,"Disconnected"},
- {YPACKET_STATUS_DEFAULT,"Default"},
- {YPACKET_STATUS_SERVERACK,"Server Ack"},
- {YPACKET_STATUS_GAME,"Playing Game"},
- {YPACKET_STATUS_AWAY, "Away"},
- {YPACKET_STATUS_CONTINUED,"More Packets??"},
- {YPACKET_STATUS_NOTIFY, "Notify"},
- {YPACKET_STATUS_WEBLOGIN,"Web Login"},
- {YPACKET_STATUS_OFFLINE,"Offline"},
+ {YPACKET_STATUS_DISCONNECTED, "Disconnected"},
+ {YPACKET_STATUS_DEFAULT, "Default"},
+ {YPACKET_STATUS_SERVERACK, "Server Ack"},
+ {YPACKET_STATUS_GAME, "Playing Game"},
+ {YPACKET_STATUS_AWAY, "Away"},
+ {YPACKET_STATUS_CONTINUED, "More Packets??"},
+ {YPACKET_STATUS_NOTIFY, "Notify"},
+ {YPACKET_STATUS_WEBLOGIN, "Web Login"},
+ {YPACKET_STATUS_OFFLINE, "Offline"},
{0, NULL}
};
@@ -334,7 +339,7 @@ static int get_content_item_length(tvbuff_t *tvb, int offset)
if (tvb_get_ntohs(tvb, offset) == 0xc080) {
break;
}
- offset++;
+ offset += 1;
}
return offset - origoffset;
}
@@ -343,50 +348,50 @@ static int get_content_item_length(tvbuff_t *tvb, int offset)
static gboolean
dissect_ymsg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
+ if (tvb_length(tvb) < 4) {
+ return FALSE;
+ }
+ if (tvb_memeql(tvb, 0, "YMSG", 4) == -1) {
+ /* Not a Yahoo Messenger packet. */
+ return FALSE;
+ }
- if (tvb_memeql(tvb, 0, "YMSG", 4) == -1) {
- /* Not a Yahoo Messenger packet. */
- return FALSE;
- }
-
- tcp_dissect_pdus(tvb, pinfo, tree, ymsg_desegment, 8, get_ymsg_pdu_len,
- dissect_ymsg_pdu);
- return TRUE;
+ tcp_dissect_pdus(tvb, pinfo, tree, ymsg_desegment, 10, get_ymsg_pdu_len,
+ dissect_ymsg_pdu);
+ return TRUE;
}
static guint
get_ymsg_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
{
- guint16 plen;
+ guint plen;
- /*
- * Get the length of the YMSG packet.
- */
- plen = tvb_get_ntohs(tvb, offset + 8);
+ /*
+ * Get the length of the YMSG packet.
+ */
+ plen = tvb_get_ntohs(tvb, offset + 8);
- /*
- * That length doesn't include the length of the header itself; add that in.
- */
- return plen + 20;
+ /*
+ * That length doesn't include the length of the header itself; add that in.
+ */
+ return plen + YAHOO_HEADER_SIZE;
}
static void
dissect_ymsg_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *ymsg_tree, *ti;
- proto_item *content_item;
- proto_tree *content_tree;
- char *keybuf;
- char *valbuf;
- int headersize = sizeof(struct yahoo_rawpacket)-6;
- int keylen = 0;
- int vallen = 0;
- int offset = 0;
- int content_len = 0;
+ proto_tree *ymsg_tree, *ti;
+ proto_item *content_item;
+ proto_tree *content_tree;
+ char *keybuf;
+ char *valbuf;
+ int keylen;
+ int vallen;
+ int content_len;
+ int offset = 0;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "YMSG");
- offset = 0;
if (check_col(pinfo->cinfo, COL_INFO)) {
col_add_fstr(pinfo->cinfo, COL_INFO,
"%s (status=%s) ",
@@ -418,9 +423,9 @@ dissect_ymsg_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Service */
proto_item_append_text(ti, " (%s)",
- val_to_str(tvb_get_ntohs(tvb, offset),
- ymsg_service_vals,
- "Unknown"));
+ val_to_str_const(tvb_get_ntohs(tvb, offset),
+ ymsg_service_vals,
+ "Unknown"));
proto_tree_add_item(ymsg_tree, hf_ymsg_service, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
@@ -452,7 +457,7 @@ dissect_ymsg_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Don't continue unless there is room for another whole item.
(including 2 2-byte delimiters */
- if (offset >= (headersize+content_len-4))
+ if (offset >= (YAHOO_HEADER_SIZE+content_len-4))
{
break;
}
@@ -494,35 +499,35 @@ void
proto_register_ymsg(void)
{
static hf_register_info hf[] = {
- { &hf_ymsg_version, {
+ { &hf_ymsg_version, {
"Version", "ymsg.version", FT_UINT16, BASE_DEC,
NULL, 0, "Packet version identifier", HFILL }},
- { &hf_ymsg_vendor, {
+ { &hf_ymsg_vendor, {
"Vendor ID", "ymsg.vendor", FT_UINT16, BASE_DEC,
NULL, 0, "Vendor identifier", HFILL }},
- { &hf_ymsg_len, {
+ { &hf_ymsg_len, {
"Packet Length", "ymsg.len", FT_UINT16, BASE_DEC,
NULL, 0, NULL, HFILL }},
- { &hf_ymsg_service, {
+ { &hf_ymsg_service, {
"Service", "ymsg.service", FT_UINT16, BASE_DEC,
VALS(ymsg_service_vals), 0, "Service Type", HFILL }},
- { &hf_ymsg_status, {
+ { &hf_ymsg_status, {
"Status", "ymsg.status", FT_UINT32, BASE_DEC,
VALS(ymsg_status_vals), 0, "Message Type Flags", HFILL }},
- { &hf_ymsg_session_id, {
+ { &hf_ymsg_session_id, {
"Session ID", "ymsg.session_id", FT_UINT32, BASE_HEX,
NULL, 0, "Connection ID", HFILL }},
- { &hf_ymsg_content, {
+ { &hf_ymsg_content, {
"Content", "ymsg.content", FT_STRING, BASE_NONE,
NULL, 0, "Data portion of the packet", HFILL }},
- { &hf_ymsg_content_line, {
+ { &hf_ymsg_content_line, {
"Content-line", "ymsg.content-line", FT_STRING, BASE_NONE,
NULL, 0, "Data portion of the packet", HFILL }},
- { &hf_ymsg_content_line_key, {
+ { &hf_ymsg_content_line_key, {
"Key", "ymsg.content-line.key", FT_STRING, BASE_NONE,
NULL, 0, "Content line key", HFILL }},
- { &hf_ymsg_content_line_value, {
+ { &hf_ymsg_content_line_value, {
"Value", "ymsg.content-line.value", FT_STRING, BASE_NONE,
NULL, 0, "Content line value", HFILL }}
};
@@ -544,7 +549,8 @@ proto_register_ymsg(void)
prefs_register_bool_preference(ymsg_module, "desegment",
"Reassemble YMSG messages spanning multiple TCP segments",
"Whether the YMSG dissector should reassemble messages spanning multiple TCP segments. "
- "To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
+ "To use this option, you must also enable"
+ " \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
&ymsg_desegment);
}
diff --git a/epan/dissectors/packet-ziop.c b/epan/dissectors/packet-ziop.c
index 3e75d75914..752fa9364d 100644
--- a/epan/dissectors/packet-ziop.c
+++ b/epan/dissectors/packet-ziop.c
@@ -242,7 +242,7 @@ dissect_ziop (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree) {
if (tree)
{
guint8 flags;
- gboolean little_endian;
+ guint byte_order;
emem_strbuf_t *flags_strbuf = ep_strbuf_new_label("none");
ti = proto_tree_add_item (tree, proto_ziop, tvb, 0, -1, ENC_NA);
@@ -256,7 +256,7 @@ dissect_ziop (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree) {
offset++;
flags = tvb_get_guint8(tvb, offset);
- little_endian = flags & 0x01;
+ byte_order = (flags & 0x01) ? ENC_LITTLE_ENDIAN : ENC_BIG_ENDIAN;
if (flags & 0x01) {
ep_strbuf_printf(flags_strbuf, "little-endian");
@@ -268,11 +268,11 @@ dissect_ziop (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree) {
proto_tree_add_item(ziop_tree, hf_ziop_message_type, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
- proto_tree_add_item(ziop_tree, hf_ziop_message_size, tvb, offset, 4, little_endian);
+ proto_tree_add_item(ziop_tree, hf_ziop_message_size, tvb, offset, 4, byte_order);
offset += 4;
- proto_tree_add_item(ziop_tree, hf_ziop_compressor_id, tvb, offset, 2, little_endian);
+ proto_tree_add_item(ziop_tree, hf_ziop_compressor_id, tvb, offset, 2, byte_order);
offset += 4;
- proto_tree_add_item(ziop_tree, hf_ziop_original_length, tvb, offset, 4, little_endian);
+ proto_tree_add_item(ziop_tree, hf_ziop_original_length, tvb, offset, 4, byte_order);
}
}
diff --git a/epan/dissectors/pidl/dnsserver.cnf b/epan/dissectors/pidl/dnsserver.cnf
index 98af099a63..d0381c7774 100644
--- a/epan/dissectors/pidl/dnsserver.cnf
+++ b/epan/dissectors/pidl/dnsserver.cnf
@@ -24,7 +24,7 @@ dnsserver_dissect_struct_DNS_RPC_NAME(tvbuff_t *tvb _U_, int offset _U_, packet_
dcerpc_info *di = NULL;
guint8 len;
const char *dn;
- int dn_len;
+ int dn_len = 0;
guint16 bc;
di=pinfo->private_data;
@@ -94,4 +94,4 @@ dnsserver_dissect_element_DNS_RPC_NODE_records(tvbuff_t *tvb _U_, int offset _U_
return offset;
}
-CODE END \ No newline at end of file
+CODE END
diff --git a/epan/dissectors/pidl/frsrpc.cnf b/epan/dissectors/pidl/frsrpc.cnf
index 060f91ab94..6eeb03e482 100644
--- a/epan/dissectors/pidl/frsrpc.cnf
+++ b/epan/dissectors/pidl/frsrpc.cnf
@@ -30,7 +30,7 @@ frsrpc_dissect_element_CommPktChangeOrderCommand_file_name(tvbuff_t *tvb _U_, in
int
frsrpc_dissect_struct_CommPktChunk(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
{
- guint1632 type;
+ guint1632 type = 0;
int i = 0;
const char *s = NULL;
proto_item *item = NULL;
diff --git a/epan/dissectors/x11-declarations.h b/epan/dissectors/x11-declarations.h
index 0953f2faed..b455ee79cc 100644
--- a/epan/dissectors/x11-declarations.h
+++ b/epan/dissectors/x11-declarations.h
@@ -1422,9 +1422,6 @@ static int hf_x11_glx_render_ProgramLocalParameter4fvARB_params_item = -1;
static int hf_x11_glx_render_BeginQueryARB_target = -1;
static int hf_x11_glx_render_BeginQueryARB_id = -1;
static int hf_x11_glx_render_EndQueryARB_target = -1;
-static int hf_x11_glx_render_DrawBuffersARB_n = -1;
-static int hf_x11_glx_render_DrawBuffersARB_bufs = -1;
-static int hf_x11_glx_render_DrawBuffersARB_bufs_item = -1;
static int hf_x11_glx_render_PolygonOffsetEXT_factor = -1;
static int hf_x11_glx_render_PolygonOffsetEXT_bias = -1;
static int hf_x11_glx_render_TexFilterFuncSGIS_target = -1;
@@ -1889,6 +1886,54 @@ static int hf_x11_dri2_GetBuffersWithFormat_reply_height = -1;
static int hf_x11_dri2_GetBuffersWithFormat_reply_count = -1;
static int hf_x11_dri2_GetBuffersWithFormat_reply_buffers = -1;
static int hf_x11_dri2_GetBuffersWithFormat_reply_buffers_item = -1;
+static int hf_x11_dri2_SwapBuffers_drawable = -1;
+static int hf_x11_dri2_SwapBuffers_target_msc_hi = -1;
+static int hf_x11_dri2_SwapBuffers_target_msc_lo = -1;
+static int hf_x11_dri2_SwapBuffers_divisor_hi = -1;
+static int hf_x11_dri2_SwapBuffers_divisor_lo = -1;
+static int hf_x11_dri2_SwapBuffers_remainder_hi = -1;
+static int hf_x11_dri2_SwapBuffers_remainder_lo = -1;
+static int hf_x11_dri2_SwapBuffers_reply_swap_hi = -1;
+static int hf_x11_dri2_SwapBuffers_reply_swap_lo = -1;
+static int hf_x11_dri2_GetMSC_drawable = -1;
+static int hf_x11_dri2_GetMSC_reply_ust_hi = -1;
+static int hf_x11_dri2_GetMSC_reply_ust_lo = -1;
+static int hf_x11_dri2_GetMSC_reply_msc_hi = -1;
+static int hf_x11_dri2_GetMSC_reply_msc_lo = -1;
+static int hf_x11_dri2_GetMSC_reply_sbc_hi = -1;
+static int hf_x11_dri2_GetMSC_reply_sbc_lo = -1;
+static int hf_x11_dri2_WaitMSC_drawable = -1;
+static int hf_x11_dri2_WaitMSC_target_msc_hi = -1;
+static int hf_x11_dri2_WaitMSC_target_msc_lo = -1;
+static int hf_x11_dri2_WaitMSC_divisor_hi = -1;
+static int hf_x11_dri2_WaitMSC_divisor_lo = -1;
+static int hf_x11_dri2_WaitMSC_remainder_hi = -1;
+static int hf_x11_dri2_WaitMSC_remainder_lo = -1;
+static int hf_x11_dri2_WaitMSC_reply_ust_hi = -1;
+static int hf_x11_dri2_WaitMSC_reply_ust_lo = -1;
+static int hf_x11_dri2_WaitMSC_reply_msc_hi = -1;
+static int hf_x11_dri2_WaitMSC_reply_msc_lo = -1;
+static int hf_x11_dri2_WaitMSC_reply_sbc_hi = -1;
+static int hf_x11_dri2_WaitMSC_reply_sbc_lo = -1;
+static int hf_x11_dri2_WaitSBC_drawable = -1;
+static int hf_x11_dri2_WaitSBC_target_sbc_hi = -1;
+static int hf_x11_dri2_WaitSBC_target_sbc_lo = -1;
+static int hf_x11_dri2_WaitSBC_reply_ust_hi = -1;
+static int hf_x11_dri2_WaitSBC_reply_ust_lo = -1;
+static int hf_x11_dri2_WaitSBC_reply_msc_hi = -1;
+static int hf_x11_dri2_WaitSBC_reply_msc_lo = -1;
+static int hf_x11_dri2_WaitSBC_reply_sbc_hi = -1;
+static int hf_x11_dri2_WaitSBC_reply_sbc_lo = -1;
+static int hf_x11_dri2_SwapInterval_drawable = -1;
+static int hf_x11_dri2_SwapInterval_interval = -1;
+static int hf_x11_dri2_BufferSwapComplete_event_type = -1;
+static int hf_x11_dri2_BufferSwapComplete_drawable = -1;
+static int hf_x11_dri2_BufferSwapComplete_ust_hi = -1;
+static int hf_x11_dri2_BufferSwapComplete_ust_lo = -1;
+static int hf_x11_dri2_BufferSwapComplete_msc_hi = -1;
+static int hf_x11_dri2_BufferSwapComplete_msc_lo = -1;
+static int hf_x11_dri2_BufferSwapComplete_sbc = -1;
+static int hf_x11_dri2_InvalidateBuffers_drawable = -1;
static int hf_x11_dri2_extension_minor = -1;
static int hf_x11_ge_QueryVersion_client_major_version = -1;
@@ -1991,8 +2036,6 @@ static int hf_x11_glx_CreateNewContext_screen = -1;
static int hf_x11_glx_CreateNewContext_render_type = -1;
static int hf_x11_glx_CreateNewContext_share_list = -1;
static int hf_x11_glx_CreateNewContext_is_direct = -1;
-static int hf_x11_glx_CreateNewContext_reserved1 = -1;
-static int hf_x11_glx_CreateNewContext_reserved2 = -1;
static int hf_x11_glx_QueryContext_context = -1;
static int hf_x11_glx_QueryContext_reply_num_attribs = -1;
static int hf_x11_glx_QueryContext_reply_attribs = -1;
@@ -2025,6 +2068,32 @@ static int hf_x11_glx_CreateWindow_num_attribs = -1;
static int hf_x11_glx_CreateWindow_attribs = -1;
static int hf_x11_glx_CreateWindow_attribs_item = -1;
static int hf_x11_glx_DeleteWindow_glxwindow = -1;
+static int hf_x11_glx_SetClientInfoARB_major_version = -1;
+static int hf_x11_glx_SetClientInfoARB_minor_version = -1;
+static int hf_x11_glx_SetClientInfoARB_num_versions = -1;
+static int hf_x11_glx_SetClientInfoARB_gl_str_len = -1;
+static int hf_x11_glx_SetClientInfoARB_glx_str_len = -1;
+static int hf_x11_glx_SetClientInfoARB_gl_versions = -1;
+static int hf_x11_glx_SetClientInfoARB_gl_versions_item = -1;
+static int hf_x11_glx_SetClientInfoARB_gl_extension_string = -1;
+static int hf_x11_glx_SetClientInfoARB_glx_extension_string = -1;
+static int hf_x11_glx_CreateContextAttribsARB_context = -1;
+static int hf_x11_glx_CreateContextAttribsARB_fbconfig = -1;
+static int hf_x11_glx_CreateContextAttribsARB_screen = -1;
+static int hf_x11_glx_CreateContextAttribsARB_share_list = -1;
+static int hf_x11_glx_CreateContextAttribsARB_is_direct = -1;
+static int hf_x11_glx_CreateContextAttribsARB_num_attribs = -1;
+static int hf_x11_glx_CreateContextAttribsARB_attribs = -1;
+static int hf_x11_glx_CreateContextAttribsARB_attribs_item = -1;
+static int hf_x11_glx_SetClientInfo2ARB_major_version = -1;
+static int hf_x11_glx_SetClientInfo2ARB_minor_version = -1;
+static int hf_x11_glx_SetClientInfo2ARB_num_versions = -1;
+static int hf_x11_glx_SetClientInfo2ARB_gl_str_len = -1;
+static int hf_x11_glx_SetClientInfo2ARB_glx_str_len = -1;
+static int hf_x11_glx_SetClientInfo2ARB_gl_versions = -1;
+static int hf_x11_glx_SetClientInfo2ARB_gl_versions_item = -1;
+static int hf_x11_glx_SetClientInfo2ARB_gl_extension_string = -1;
+static int hf_x11_glx_SetClientInfo2ARB_glx_extension_string = -1;
static int hf_x11_glx_NewList_context_tag = -1;
static int hf_x11_glx_NewList_list = -1;
static int hf_x11_glx_NewList_mode = -1;
@@ -3344,20 +3413,19 @@ static int hf_x11_xf86vidmode_GetModeLine_reply_vdisplay = -1;
static int hf_x11_xf86vidmode_GetModeLine_reply_vsyncstart = -1;
static int hf_x11_xf86vidmode_GetModeLine_reply_vsyncend = -1;
static int hf_x11_xf86vidmode_GetModeLine_reply_vtotal = -1;
-static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_HsyncPositive = -1;
-static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_HsyncNegative = -1;
-static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_VsyncPositive = -1;
-static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_VsyncNegative = -1;
+static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Positive_HSync = -1;
+static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Negative_HSync = -1;
+static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Positive_VSync = -1;
+static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Negative_VSync = -1;
static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Interlace = -1;
-static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_DoubleScan = -1;
-static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Csync = -1;
-static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_CsyncPositive = -1;
-static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_CsyncNegative = -1;
-static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_HskewPresent = -1;
-static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Bcast = -1;
-static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_PixelMultiplex = -1;
-static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_DoubleClock = -1;
-static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_HalveClock = -1;
+static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Composite_Sync = -1;
+static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Positive_CSync = -1;
+static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Negative_CSync = -1;
+static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_HSkew = -1;
+static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Broadcast = -1;
+static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Pixmux = -1;
+static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Double_Clock = -1;
+static int hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Half_Clock = -1;
static int hf_x11_xf86vidmode_GetModeLine_reply_flags = -1;
static int hf_x11_xf86vidmode_GetModeLine_reply_privsize = -1;
static int hf_x11_xf86vidmode_GetModeLine_reply_private = -1;
@@ -3371,20 +3439,19 @@ static int hf_x11_xf86vidmode_ModModeLine_vdisplay = -1;
static int hf_x11_xf86vidmode_ModModeLine_vsyncstart = -1;
static int hf_x11_xf86vidmode_ModModeLine_vsyncend = -1;
static int hf_x11_xf86vidmode_ModModeLine_vtotal = -1;
-static int hf_x11_xf86vidmode_ModModeLine_flags_mask_HsyncPositive = -1;
-static int hf_x11_xf86vidmode_ModModeLine_flags_mask_HsyncNegative = -1;
-static int hf_x11_xf86vidmode_ModModeLine_flags_mask_VsyncPositive = -1;
-static int hf_x11_xf86vidmode_ModModeLine_flags_mask_VsyncNegative = -1;
+static int hf_x11_xf86vidmode_ModModeLine_flags_mask_Positive_HSync = -1;
+static int hf_x11_xf86vidmode_ModModeLine_flags_mask_Negative_HSync = -1;
+static int hf_x11_xf86vidmode_ModModeLine_flags_mask_Positive_VSync = -1;
+static int hf_x11_xf86vidmode_ModModeLine_flags_mask_Negative_VSync = -1;
static int hf_x11_xf86vidmode_ModModeLine_flags_mask_Interlace = -1;
-static int hf_x11_xf86vidmode_ModModeLine_flags_mask_DoubleScan = -1;
-static int hf_x11_xf86vidmode_ModModeLine_flags_mask_Csync = -1;
-static int hf_x11_xf86vidmode_ModModeLine_flags_mask_CsyncPositive = -1;
-static int hf_x11_xf86vidmode_ModModeLine_flags_mask_CsyncNegative = -1;
-static int hf_x11_xf86vidmode_ModModeLine_flags_mask_HskewPresent = -1;
-static int hf_x11_xf86vidmode_ModModeLine_flags_mask_Bcast = -1;
-static int hf_x11_xf86vidmode_ModModeLine_flags_mask_PixelMultiplex = -1;
-static int hf_x11_xf86vidmode_ModModeLine_flags_mask_DoubleClock = -1;
-static int hf_x11_xf86vidmode_ModModeLine_flags_mask_HalveClock = -1;
+static int hf_x11_xf86vidmode_ModModeLine_flags_mask_Composite_Sync = -1;
+static int hf_x11_xf86vidmode_ModModeLine_flags_mask_Positive_CSync = -1;
+static int hf_x11_xf86vidmode_ModModeLine_flags_mask_Negative_CSync = -1;
+static int hf_x11_xf86vidmode_ModModeLine_flags_mask_HSkew = -1;
+static int hf_x11_xf86vidmode_ModModeLine_flags_mask_Broadcast = -1;
+static int hf_x11_xf86vidmode_ModModeLine_flags_mask_Pixmux = -1;
+static int hf_x11_xf86vidmode_ModModeLine_flags_mask_Double_Clock = -1;
+static int hf_x11_xf86vidmode_ModModeLine_flags_mask_Half_Clock = -1;
static int hf_x11_xf86vidmode_ModModeLine_flags = -1;
static int hf_x11_xf86vidmode_ModModeLine_privsize = -1;
static int hf_x11_xf86vidmode_ModModeLine_private = -1;
@@ -3419,20 +3486,19 @@ static int hf_x11_xf86vidmode_AddModeLine_vdisplay = -1;
static int hf_x11_xf86vidmode_AddModeLine_vsyncstart = -1;
static int hf_x11_xf86vidmode_AddModeLine_vsyncend = -1;
static int hf_x11_xf86vidmode_AddModeLine_vtotal = -1;
-static int hf_x11_xf86vidmode_AddModeLine_flags_mask_HsyncPositive = -1;
-static int hf_x11_xf86vidmode_AddModeLine_flags_mask_HsyncNegative = -1;
-static int hf_x11_xf86vidmode_AddModeLine_flags_mask_VsyncPositive = -1;
-static int hf_x11_xf86vidmode_AddModeLine_flags_mask_VsyncNegative = -1;
+static int hf_x11_xf86vidmode_AddModeLine_flags_mask_Positive_HSync = -1;
+static int hf_x11_xf86vidmode_AddModeLine_flags_mask_Negative_HSync = -1;
+static int hf_x11_xf86vidmode_AddModeLine_flags_mask_Positive_VSync = -1;
+static int hf_x11_xf86vidmode_AddModeLine_flags_mask_Negative_VSync = -1;
static int hf_x11_xf86vidmode_AddModeLine_flags_mask_Interlace = -1;
-static int hf_x11_xf86vidmode_AddModeLine_flags_mask_DoubleScan = -1;
-static int hf_x11_xf86vidmode_AddModeLine_flags_mask_Csync = -1;
-static int hf_x11_xf86vidmode_AddModeLine_flags_mask_CsyncPositive = -1;
-static int hf_x11_xf86vidmode_AddModeLine_flags_mask_CsyncNegative = -1;
-static int hf_x11_xf86vidmode_AddModeLine_flags_mask_HskewPresent = -1;
-static int hf_x11_xf86vidmode_AddModeLine_flags_mask_Bcast = -1;
-static int hf_x11_xf86vidmode_AddModeLine_flags_mask_PixelMultiplex = -1;
-static int hf_x11_xf86vidmode_AddModeLine_flags_mask_DoubleClock = -1;
-static int hf_x11_xf86vidmode_AddModeLine_flags_mask_HalveClock = -1;
+static int hf_x11_xf86vidmode_AddModeLine_flags_mask_Composite_Sync = -1;
+static int hf_x11_xf86vidmode_AddModeLine_flags_mask_Positive_CSync = -1;
+static int hf_x11_xf86vidmode_AddModeLine_flags_mask_Negative_CSync = -1;
+static int hf_x11_xf86vidmode_AddModeLine_flags_mask_HSkew = -1;
+static int hf_x11_xf86vidmode_AddModeLine_flags_mask_Broadcast = -1;
+static int hf_x11_xf86vidmode_AddModeLine_flags_mask_Pixmux = -1;
+static int hf_x11_xf86vidmode_AddModeLine_flags_mask_Double_Clock = -1;
+static int hf_x11_xf86vidmode_AddModeLine_flags_mask_Half_Clock = -1;
static int hf_x11_xf86vidmode_AddModeLine_flags = -1;
static int hf_x11_xf86vidmode_AddModeLine_privsize = -1;
static int hf_x11_xf86vidmode_AddModeLine_after_dotclock = -1;
@@ -3445,20 +3511,19 @@ static int hf_x11_xf86vidmode_AddModeLine_after_vdisplay = -1;
static int hf_x11_xf86vidmode_AddModeLine_after_vsyncstart = -1;
static int hf_x11_xf86vidmode_AddModeLine_after_vsyncend = -1;
static int hf_x11_xf86vidmode_AddModeLine_after_vtotal = -1;
-static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_HsyncPositive = -1;
-static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_HsyncNegative = -1;
-static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_VsyncPositive = -1;
-static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_VsyncNegative = -1;
+static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Positive_HSync = -1;
+static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Negative_HSync = -1;
+static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Positive_VSync = -1;
+static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Negative_VSync = -1;
static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Interlace = -1;
-static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_DoubleScan = -1;
-static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Csync = -1;
-static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_CsyncPositive = -1;
-static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_CsyncNegative = -1;
-static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_HskewPresent = -1;
-static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Bcast = -1;
-static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_PixelMultiplex = -1;
-static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_DoubleClock = -1;
-static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_HalveClock = -1;
+static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Composite_Sync = -1;
+static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Positive_CSync = -1;
+static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Negative_CSync = -1;
+static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_HSkew = -1;
+static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Broadcast = -1;
+static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Pixmux = -1;
+static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Double_Clock = -1;
+static int hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Half_Clock = -1;
static int hf_x11_xf86vidmode_AddModeLine_after_flags = -1;
static int hf_x11_xf86vidmode_AddModeLine_private = -1;
static int hf_x11_xf86vidmode_DeleteModeLine_screen = -1;
@@ -3472,20 +3537,19 @@ static int hf_x11_xf86vidmode_DeleteModeLine_vdisplay = -1;
static int hf_x11_xf86vidmode_DeleteModeLine_vsyncstart = -1;
static int hf_x11_xf86vidmode_DeleteModeLine_vsyncend = -1;
static int hf_x11_xf86vidmode_DeleteModeLine_vtotal = -1;
-static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_HsyncPositive = -1;
-static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_HsyncNegative = -1;
-static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_VsyncPositive = -1;
-static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_VsyncNegative = -1;
+static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Positive_HSync = -1;
+static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Negative_HSync = -1;
+static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Positive_VSync = -1;
+static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Negative_VSync = -1;
static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Interlace = -1;
-static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_DoubleScan = -1;
-static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Csync = -1;
-static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_CsyncPositive = -1;
-static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_CsyncNegative = -1;
-static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_HskewPresent = -1;
-static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Bcast = -1;
-static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_PixelMultiplex = -1;
-static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_DoubleClock = -1;
-static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_HalveClock = -1;
+static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Composite_Sync = -1;
+static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Positive_CSync = -1;
+static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Negative_CSync = -1;
+static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_HSkew = -1;
+static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Broadcast = -1;
+static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Pixmux = -1;
+static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Double_Clock = -1;
+static int hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Half_Clock = -1;
static int hf_x11_xf86vidmode_DeleteModeLine_flags = -1;
static int hf_x11_xf86vidmode_DeleteModeLine_privsize = -1;
static int hf_x11_xf86vidmode_DeleteModeLine_private = -1;
@@ -3500,20 +3564,19 @@ static int hf_x11_xf86vidmode_ValidateModeLine_vdisplay = -1;
static int hf_x11_xf86vidmode_ValidateModeLine_vsyncstart = -1;
static int hf_x11_xf86vidmode_ValidateModeLine_vsyncend = -1;
static int hf_x11_xf86vidmode_ValidateModeLine_vtotal = -1;
-static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_HsyncPositive = -1;
-static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_HsyncNegative = -1;
-static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_VsyncPositive = -1;
-static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_VsyncNegative = -1;
+static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Positive_HSync = -1;
+static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Negative_HSync = -1;
+static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Positive_VSync = -1;
+static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Negative_VSync = -1;
static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Interlace = -1;
-static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_DoubleScan = -1;
-static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Csync = -1;
-static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_CsyncPositive = -1;
-static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_CsyncNegative = -1;
-static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_HskewPresent = -1;
-static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Bcast = -1;
-static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_PixelMultiplex = -1;
-static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_DoubleClock = -1;
-static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_HalveClock = -1;
+static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Composite_Sync = -1;
+static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Positive_CSync = -1;
+static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Negative_CSync = -1;
+static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_HSkew = -1;
+static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Broadcast = -1;
+static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Pixmux = -1;
+static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Double_Clock = -1;
+static int hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Half_Clock = -1;
static int hf_x11_xf86vidmode_ValidateModeLine_flags = -1;
static int hf_x11_xf86vidmode_ValidateModeLine_privsize = -1;
static int hf_x11_xf86vidmode_ValidateModeLine_private = -1;
@@ -3529,20 +3592,19 @@ static int hf_x11_xf86vidmode_SwitchToMode_vdisplay = -1;
static int hf_x11_xf86vidmode_SwitchToMode_vsyncstart = -1;
static int hf_x11_xf86vidmode_SwitchToMode_vsyncend = -1;
static int hf_x11_xf86vidmode_SwitchToMode_vtotal = -1;
-static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_HsyncPositive = -1;
-static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_HsyncNegative = -1;
-static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_VsyncPositive = -1;
-static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_VsyncNegative = -1;
+static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_Positive_HSync = -1;
+static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_Negative_HSync = -1;
+static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_Positive_VSync = -1;
+static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_Negative_VSync = -1;
static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_Interlace = -1;
-static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_DoubleScan = -1;
-static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_Csync = -1;
-static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_CsyncPositive = -1;
-static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_CsyncNegative = -1;
-static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_HskewPresent = -1;
-static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_Bcast = -1;
-static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_PixelMultiplex = -1;
-static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_DoubleClock = -1;
-static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_HalveClock = -1;
+static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_Composite_Sync = -1;
+static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_Positive_CSync = -1;
+static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_Negative_CSync = -1;
+static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_HSkew = -1;
+static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_Broadcast = -1;
+static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_Pixmux = -1;
+static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_Double_Clock = -1;
+static int hf_x11_xf86vidmode_SwitchToMode_flags_mask_Half_Clock = -1;
static int hf_x11_xf86vidmode_SwitchToMode_flags = -1;
static int hf_x11_xf86vidmode_SwitchToMode_privsize = -1;
static int hf_x11_xf86vidmode_SwitchToMode_private = -1;
@@ -4931,6 +4993,16 @@ static int hf_x11_xkb_GetState_reply_compatGrabMods_mask_4 = -1;
static int hf_x11_xkb_GetState_reply_compatGrabMods_mask_5 = -1;
static int hf_x11_xkb_GetState_reply_compatGrabMods_mask_Any = -1;
static int hf_x11_xkb_GetState_reply_compatGrabMods = -1;
+static int hf_x11_xkb_GetState_reply_lookupMods_mask_Shift = -1;
+static int hf_x11_xkb_GetState_reply_lookupMods_mask_Lock = -1;
+static int hf_x11_xkb_GetState_reply_lookupMods_mask_Control = -1;
+static int hf_x11_xkb_GetState_reply_lookupMods_mask_1 = -1;
+static int hf_x11_xkb_GetState_reply_lookupMods_mask_2 = -1;
+static int hf_x11_xkb_GetState_reply_lookupMods_mask_3 = -1;
+static int hf_x11_xkb_GetState_reply_lookupMods_mask_4 = -1;
+static int hf_x11_xkb_GetState_reply_lookupMods_mask_5 = -1;
+static int hf_x11_xkb_GetState_reply_lookupMods_mask_Any = -1;
+static int hf_x11_xkb_GetState_reply_lookupMods = -1;
static int hf_x11_xkb_GetState_reply_compatLookupMods_mask_Shift = -1;
static int hf_x11_xkb_GetState_reply_compatLookupMods_mask_Lock = -1;
static int hf_x11_xkb_GetState_reply_compatLookupMods_mask_Control = -1;
@@ -5097,16 +5169,16 @@ static int hf_x11_xkb_SetControls_affectInternalRealMods_mask_4 = -1;
static int hf_x11_xkb_SetControls_affectInternalRealMods_mask_5 = -1;
static int hf_x11_xkb_SetControls_affectInternalRealMods_mask_Any = -1;
static int hf_x11_xkb_SetControls_affectInternalRealMods = -1;
-static int hf_x11_xkb_SetControls_interanlRealMods_mask_Shift = -1;
-static int hf_x11_xkb_SetControls_interanlRealMods_mask_Lock = -1;
-static int hf_x11_xkb_SetControls_interanlRealMods_mask_Control = -1;
-static int hf_x11_xkb_SetControls_interanlRealMods_mask_1 = -1;
-static int hf_x11_xkb_SetControls_interanlRealMods_mask_2 = -1;
-static int hf_x11_xkb_SetControls_interanlRealMods_mask_3 = -1;
-static int hf_x11_xkb_SetControls_interanlRealMods_mask_4 = -1;
-static int hf_x11_xkb_SetControls_interanlRealMods_mask_5 = -1;
-static int hf_x11_xkb_SetControls_interanlRealMods_mask_Any = -1;
-static int hf_x11_xkb_SetControls_interanlRealMods = -1;
+static int hf_x11_xkb_SetControls_internalRealMods_mask_Shift = -1;
+static int hf_x11_xkb_SetControls_internalRealMods_mask_Lock = -1;
+static int hf_x11_xkb_SetControls_internalRealMods_mask_Control = -1;
+static int hf_x11_xkb_SetControls_internalRealMods_mask_1 = -1;
+static int hf_x11_xkb_SetControls_internalRealMods_mask_2 = -1;
+static int hf_x11_xkb_SetControls_internalRealMods_mask_3 = -1;
+static int hf_x11_xkb_SetControls_internalRealMods_mask_4 = -1;
+static int hf_x11_xkb_SetControls_internalRealMods_mask_5 = -1;
+static int hf_x11_xkb_SetControls_internalRealMods_mask_Any = -1;
+static int hf_x11_xkb_SetControls_internalRealMods = -1;
static int hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_Shift = -1;
static int hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_Lock = -1;
static int hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_Control = -1;
@@ -5161,40 +5233,40 @@ static int hf_x11_xkb_SetControls_internalVirtualMods_mask_13 = -1;
static int hf_x11_xkb_SetControls_internalVirtualMods_mask_14 = -1;
static int hf_x11_xkb_SetControls_internalVirtualMods_mask_15 = -1;
static int hf_x11_xkb_SetControls_internalVirtualMods = -1;
-static int hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_0 = -1;
-static int hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_1 = -1;
-static int hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_2 = -1;
-static int hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_3 = -1;
-static int hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_4 = -1;
-static int hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_5 = -1;
-static int hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_6 = -1;
-static int hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_7 = -1;
-static int hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_8 = -1;
-static int hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_9 = -1;
-static int hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_10 = -1;
-static int hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_11 = -1;
-static int hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_12 = -1;
-static int hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_13 = -1;
-static int hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_14 = -1;
-static int hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_15 = -1;
-static int hf_x11_xkb_SetControls_affectInternalLockVirtualMods = -1;
-static int hf_x11_xkb_SetControls_internalLockVirtualMods_mask_0 = -1;
-static int hf_x11_xkb_SetControls_internalLockVirtualMods_mask_1 = -1;
-static int hf_x11_xkb_SetControls_internalLockVirtualMods_mask_2 = -1;
-static int hf_x11_xkb_SetControls_internalLockVirtualMods_mask_3 = -1;
-static int hf_x11_xkb_SetControls_internalLockVirtualMods_mask_4 = -1;
-static int hf_x11_xkb_SetControls_internalLockVirtualMods_mask_5 = -1;
-static int hf_x11_xkb_SetControls_internalLockVirtualMods_mask_6 = -1;
-static int hf_x11_xkb_SetControls_internalLockVirtualMods_mask_7 = -1;
-static int hf_x11_xkb_SetControls_internalLockVirtualMods_mask_8 = -1;
-static int hf_x11_xkb_SetControls_internalLockVirtualMods_mask_9 = -1;
-static int hf_x11_xkb_SetControls_internalLockVirtualMods_mask_10 = -1;
-static int hf_x11_xkb_SetControls_internalLockVirtualMods_mask_11 = -1;
-static int hf_x11_xkb_SetControls_internalLockVirtualMods_mask_12 = -1;
-static int hf_x11_xkb_SetControls_internalLockVirtualMods_mask_13 = -1;
-static int hf_x11_xkb_SetControls_internalLockVirtualMods_mask_14 = -1;
-static int hf_x11_xkb_SetControls_internalLockVirtualMods_mask_15 = -1;
-static int hf_x11_xkb_SetControls_internalLockVirtualMods = -1;
+static int hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_0 = -1;
+static int hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_1 = -1;
+static int hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_2 = -1;
+static int hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_3 = -1;
+static int hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_4 = -1;
+static int hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_5 = -1;
+static int hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_6 = -1;
+static int hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_7 = -1;
+static int hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_8 = -1;
+static int hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_9 = -1;
+static int hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_10 = -1;
+static int hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_11 = -1;
+static int hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_12 = -1;
+static int hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_13 = -1;
+static int hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_14 = -1;
+static int hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_15 = -1;
+static int hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods = -1;
+static int hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_0 = -1;
+static int hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_1 = -1;
+static int hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_2 = -1;
+static int hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_3 = -1;
+static int hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_4 = -1;
+static int hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_5 = -1;
+static int hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_6 = -1;
+static int hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_7 = -1;
+static int hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_8 = -1;
+static int hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_9 = -1;
+static int hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_10 = -1;
+static int hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_11 = -1;
+static int hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_12 = -1;
+static int hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_13 = -1;
+static int hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_14 = -1;
+static int hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_15 = -1;
+static int hf_x11_xkb_SetControls_ignoreLockVirtualMods = -1;
static int hf_x11_xkb_SetControls_mouseKeysDfltBtn = -1;
static int hf_x11_xkb_SetControls_groupsWrap = -1;
static int hf_x11_xkb_SetControls_accessXOptions = -1;
diff --git a/epan/dissectors/x11-enum.h b/epan/dissectors/x11-enum.h
index 889f981efa..eb6ce8df9a 100644
--- a/epan/dissectors/x11-enum.h
+++ b/epan/dissectors/x11-enum.h
@@ -1,6 +1,6 @@
/* Do not modify this file. */
/* It was automatically generated by ../../tools/process-x11-xcb.pl
- using xcbproto version 1.6-26-gfb2af7c */
+ using xcbproto version 1.7.1-1-gb02b7f8 */
/* $Id$ */
/*
@@ -25,19 +25,19 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-static const value_string x11_enum_PictType[] = {
+static const value_string x11_enum_render_PictType[] = {
{ 0, "Indexed" },
{ 1, "Direct" },
{ 0, NULL },
};
-static const value_string x11_enum_Redirect[] = {
+static const value_string x11_enum_composite_Redirect[] = {
{ 0, "Automatic" },
{ 1, "Manual" },
{ 0, NULL },
};
-static const value_string x11_enum_ReportLevel[] = {
+static const value_string x11_enum_damage_ReportLevel[] = {
{ 0, "RawRectangles" },
{ 1, "DeltaRectangles" },
{ 2, "BoundingBox" },
@@ -45,12 +45,12 @@ static const value_string x11_enum_ReportLevel[] = {
{ 0, NULL },
};
-static const value_string x11_enum_Region[] = {
+static const value_string x11_enum_xfixes_Region[] = {
{ 0, "None" },
{ 0, NULL },
};
-static const value_string x11_enum_DPMSMode[] = {
+static const value_string x11_enum_dpms_DPMSMode[] = {
{ 0, "On" },
{ 1, "Standby" },
{ 2, "Suspend" },
@@ -58,7 +58,7 @@ static const value_string x11_enum_DPMSMode[] = {
{ 0, NULL },
};
-static const value_string x11_enum_Attachment[] = {
+static const value_string x11_enum_dri2_Attachment[] = {
{ 0, "BufferFrontLeft" },
{ 1, "BufferBackLeft" },
{ 2, "BufferFrontRight" },
@@ -69,15 +69,24 @@ static const value_string x11_enum_Attachment[] = {
{ 7, "BufferFakeFrontLeft" },
{ 8, "BufferFakeFrontRight" },
{ 9, "BufferDepthStencil" },
+ { 10, "BufferHiz" },
{ 0, NULL },
};
-static const value_string x11_enum_DriverType[] = {
+static const value_string x11_enum_dri2_DriverType[] = {
{ 0, "DRI" },
+ { 1, "VDPAU" },
{ 0, NULL },
};
-static const value_string x11_enum_SetConfig[] = {
+static const value_string x11_enum_dri2_EventType[] = {
+ { 1, "ExchangeComplete" },
+ { 2, "BlitComplete" },
+ { 3, "FlipComplete" },
+ { 0, NULL },
+};
+
+static const value_string x11_enum_randr_SetConfig[] = {
{ 0, "Success" },
{ 1, "InvalidConfigTime" },
{ 2, "InvalidTime" },
@@ -85,7 +94,7 @@ static const value_string x11_enum_SetConfig[] = {
{ 0, NULL },
};
-static const value_string x11_enum_SubPixel[] = {
+static const value_string x11_enum_render_SubPixel[] = {
{ 0, "Unknown" },
{ 1, "HorizontalRGB" },
{ 2, "HorizontalBGR" },
@@ -95,26 +104,26 @@ static const value_string x11_enum_SubPixel[] = {
{ 0, NULL },
};
-static const value_string x11_enum_Connection[] = {
+static const value_string x11_enum_randr_Connection[] = {
{ 0, "Connected" },
{ 1, "Disconnected" },
{ 2, "Unknown" },
{ 0, NULL },
};
-static const value_string x11_enum_PropMode[] = {
+static const value_string x11_enum_xproto_PropMode[] = {
{ 0, "Replace" },
{ 1, "Prepend" },
{ 2, "Append" },
{ 0, NULL },
};
-static const value_string x11_enum_GetPropertyType[] = {
+static const value_string x11_enum_xproto_GetPropertyType[] = {
{ 0, "Any" },
{ 0, NULL },
};
-static const value_string x11_enum_Atom[] = {
+static const value_string x11_enum_xproto_Atom[] = {
{ 0, "Any" },
{ 1, "PRIMARY" },
{ 2, "SECONDARY" },
@@ -187,20 +196,20 @@ static const value_string x11_enum_Atom[] = {
{ 0, NULL },
};
-static const value_string x11_enum_Property[] = {
+static const value_string x11_enum_xproto_Property[] = {
{ 0, "NewValue" },
{ 1, "Delete" },
{ 0, NULL },
};
-static const value_string x11_enum_Notify[] = {
+static const value_string x11_enum_randr_Notify[] = {
{ 0, "CrtcChange" },
{ 1, "OutputChange" },
{ 2, "OutputProperty" },
{ 0, NULL },
};
-static const value_string x11_enum_PictOp[] = {
+static const value_string x11_enum_render_PictOp[] = {
{ 0, "Clear" },
{ 1, "Src" },
{ 2, "Dst" },
@@ -239,22 +248,37 @@ static const value_string x11_enum_PictOp[] = {
{ 41, "ConjointAtop" },
{ 42, "ConjointAtopReverse" },
{ 43, "ConjointXor" },
- { 0, NULL },
-};
-
-static const value_string x11_enum_Picture[] = {
+ { 48, "Multiply" },
+ { 49, "Screen" },
+ { 50, "Overlay" },
+ { 51, "Darken" },
+ { 52, "Lighten" },
+ { 53, "ColorDodge" },
+ { 54, "ColorBurn" },
+ { 55, "HardLight" },
+ { 56, "SoftLight" },
+ { 57, "Difference" },
+ { 58, "Exclusion" },
+ { 59, "HSLHue" },
+ { 60, "HSLSaturation" },
+ { 61, "HSLColor" },
+ { 62, "HSLLuminosity" },
+ { 0, NULL },
+};
+
+static const value_string x11_enum_render_Picture[] = {
{ 0, "None" },
{ 0, NULL },
};
-static const value_string x11_enum_SK[] = {
+static const value_string x11_enum_shape_SK[] = {
{ 0, "Bounding" },
{ 1, "Clip" },
{ 2, "Input" },
{ 0, NULL },
};
-static const value_string x11_enum_SO[] = {
+static const value_string x11_enum_shape_SO[] = {
{ 0, "Set" },
{ 1, "Union" },
{ 2, "Intersect" },
@@ -263,7 +287,7 @@ static const value_string x11_enum_SO[] = {
{ 0, NULL },
};
-static const value_string x11_enum_ClipOrdering[] = {
+static const value_string x11_enum_xproto_ClipOrdering[] = {
{ 0, "Unsorted" },
{ 1, "YSorted" },
{ 2, "YXSorted" },
@@ -271,18 +295,18 @@ static const value_string x11_enum_ClipOrdering[] = {
{ 0, NULL },
};
-static const value_string x11_enum_Pixmap[] = {
+static const value_string x11_enum_xproto_Pixmap[] = {
{ 0, "None" },
{ 0, NULL },
};
-static const value_string x11_enum_VALUETYPE[] = {
+static const value_string x11_enum_sync_VALUETYPE[] = {
{ 0, "Absolute" },
{ 1, "Relative" },
{ 0, NULL },
};
-static const value_string x11_enum_TESTTYPE[] = {
+static const value_string x11_enum_sync_TESTTYPE[] = {
{ 0, "PositiveTransition" },
{ 1, "NegativeTransition" },
{ 2, "PositiveComparison" },
@@ -290,44 +314,44 @@ static const value_string x11_enum_TESTTYPE[] = {
{ 0, NULL },
};
-static const value_string x11_enum_ALARMSTATE[] = {
+static const value_string x11_enum_sync_ALARMSTATE[] = {
{ 0, "Active" },
{ 1, "Inactive" },
{ 2, "Destroyed" },
{ 0, NULL },
};
-static const value_string x11_enum_SaveSetMode[] = {
+static const value_string x11_enum_xfixes_SaveSetMode[] = {
{ 0, "Insert" },
{ 1, "Delete" },
{ 0, NULL },
};
-static const value_string x11_enum_SaveSetTarget[] = {
+static const value_string x11_enum_xfixes_SaveSetTarget[] = {
{ 0, "Nearest" },
{ 1, "Root" },
{ 0, NULL },
};
-static const value_string x11_enum_SaveSetMapping[] = {
+static const value_string x11_enum_xfixes_SaveSetMapping[] = {
{ 0, "Map" },
{ 1, "Unmap" },
{ 0, NULL },
};
-static const value_string x11_enum_SelectionEvent[] = {
+static const value_string x11_enum_xfixes_SelectionEvent[] = {
{ 0, "SetSelectionOwner" },
{ 1, "SelectionWindowDestroy" },
{ 2, "SelectionClientClose" },
{ 0, NULL },
};
-static const value_string x11_enum_CursorNotify[] = {
+static const value_string x11_enum_xfixes_CursorNotify[] = {
{ 0, "DisplayCursor" },
{ 0, NULL },
};
-static const value_string x11_enum_DeviceUse[] = {
+static const value_string x11_enum_xinput_DeviceUse[] = {
{ 0, "IsXPointer" },
{ 1, "IsXKeyboard" },
{ 2, "IsXExtensionDevice" },
@@ -336,7 +360,7 @@ static const value_string x11_enum_DeviceUse[] = {
{ 0, NULL },
};
-static const value_string x11_enum_InputClass[] = {
+static const value_string x11_enum_xinput_InputClass[] = {
{ 0, "Key" },
{ 1, "Button" },
{ 2, "Valuator" },
@@ -347,13 +371,13 @@ static const value_string x11_enum_InputClass[] = {
{ 0, NULL },
};
-static const value_string x11_enum_ValuatorMode[] = {
+static const value_string x11_enum_xinput_ValuatorMode[] = {
{ 0, "Relative" },
{ 1, "Absolute" },
{ 0, NULL },
};
-static const value_string x11_enum_GrabStatus[] = {
+static const value_string x11_enum_xproto_GrabStatus[] = {
{ 0, "Success" },
{ 1, "AlreadyGrabbed" },
{ 2, "InvalidTime" },
@@ -362,29 +386,29 @@ static const value_string x11_enum_GrabStatus[] = {
{ 0, NULL },
};
-static const value_string x11_enum_PropagateMode[] = {
+static const value_string x11_enum_xinput_PropagateMode[] = {
{ 0, "AddToList" },
{ 1, "DeleteFromList" },
{ 0, NULL },
};
-static const value_string x11_enum_Time[] = {
+static const value_string x11_enum_xproto_Time[] = {
{ 0, "CurrentTime" },
{ 0, NULL },
};
-static const value_string x11_enum_GrabMode[] = {
+static const value_string x11_enum_xproto_GrabMode[] = {
{ 0, "Sync" },
{ 1, "Async" },
{ 0, NULL },
};
-static const value_string x11_enum_Grab[] = {
+static const value_string x11_enum_xproto_Grab[] = {
{ 0, "Any" },
{ 0, NULL },
};
-static const value_string x11_enum_DeviceInputMode[] = {
+static const value_string x11_enum_xinput_DeviceInputMode[] = {
{ 0, "AsyncThisDevice" },
{ 1, "SyncThisDevice" },
{ 2, "ReplayThisDevice" },
@@ -394,7 +418,7 @@ static const value_string x11_enum_DeviceInputMode[] = {
{ 0, NULL },
};
-static const value_string x11_enum_InputFocus[] = {
+static const value_string x11_enum_xproto_InputFocus[] = {
{ 0, "None" },
{ 1, "PointerRoot" },
{ 2, "Parent" },
@@ -402,19 +426,19 @@ static const value_string x11_enum_InputFocus[] = {
{ 0, NULL },
};
-static const value_string x11_enum_MappingStatus[] = {
+static const value_string x11_enum_xproto_MappingStatus[] = {
{ 0, "Success" },
{ 1, "Busy" },
{ 2, "Failure" },
{ 0, NULL },
};
-static const value_string x11_enum_Window[] = {
+static const value_string x11_enum_xproto_Window[] = {
{ 0, "None" },
{ 0, NULL },
};
-static const value_string x11_enum_NotifyDetail[] = {
+static const value_string x11_enum_xproto_NotifyDetail[] = {
{ 0, "Ancestor" },
{ 1, "Virtual" },
{ 2, "Inferior" },
@@ -426,7 +450,7 @@ static const value_string x11_enum_NotifyDetail[] = {
{ 0, NULL },
};
-static const value_string x11_enum_NotifyMode[] = {
+static const value_string x11_enum_xproto_NotifyMode[] = {
{ 0, "Normal" },
{ 1, "Grab" },
{ 2, "Ungrab" },
@@ -434,35 +458,35 @@ static const value_string x11_enum_NotifyMode[] = {
{ 0, NULL },
};
-static const value_string x11_enum_AXFBOpt[] = {
+static const value_string x11_enum_xkb_AXFBOpt[] = {
{ 0, NULL },
};
-static const value_string x11_enum_AXSKOpt[] = {
+static const value_string x11_enum_xkb_AXSKOpt[] = {
{ 0, NULL },
};
-static const value_string x11_enum_IMFlag[] = {
+static const value_string x11_enum_xkb_IMFlag[] = {
{ 0, NULL },
};
-static const value_string x11_enum_IMGroupsWhich[] = {
+static const value_string x11_enum_xkb_IMGroupsWhich[] = {
{ 0, NULL },
};
-static const value_string x11_enum_SetOfGroup[] = {
+static const value_string x11_enum_xkb_SetOfGroup[] = {
{ 0, NULL },
};
-static const value_string x11_enum_IMModsWhich[] = {
+static const value_string x11_enum_xkb_IMModsWhich[] = {
{ 0, NULL },
};
-static const value_string x11_enum_BoolCtrl[] = {
+static const value_string x11_enum_xkb_BoolCtrl[] = {
{ 0, NULL },
};
-static const value_string x11_enum_DoodadType[] = {
+static const value_string x11_enum_xkb_DoodadType[] = {
{ 1, "Outline" },
{ 2, "Solid" },
{ 3, "Text" },
@@ -471,13 +495,13 @@ static const value_string x11_enum_DoodadType[] = {
{ 0, NULL },
};
-static const value_string x11_enum_LedClass[] = {
+static const value_string x11_enum_xkb_LedClass[] = {
{ 768, "DfltXIClass" },
{ 1280, "AllXIClasses" },
{ 0, NULL },
};
-static const value_string x11_enum_ID[] = {
+static const value_string x11_enum_xkb_ID[] = {
{ 256, "UseCoreKbd" },
{ 512, "UseCorePtr" },
{ 768, "DfltXIClass" },
@@ -488,7 +512,7 @@ static const value_string x11_enum_ID[] = {
{ 0, NULL },
};
-static const value_string x11_enum_SAType[] = {
+static const value_string x11_enum_xkb_SAType[] = {
{ 0, "NoAction" },
{ 1, "SetMods" },
{ 2, "LatchMods" },
@@ -513,7 +537,7 @@ static const value_string x11_enum_SAType[] = {
{ 0, NULL },
};
-static const value_string x11_enum_SAValWhat[] = {
+static const value_string x11_enum_xkb_SAValWhat[] = {
{ 0, "IgnoreVal" },
{ 1, "SetValMin" },
{ 2, "SetValCenter" },
@@ -523,15 +547,15 @@ static const value_string x11_enum_SAValWhat[] = {
{ 0, NULL },
};
-static const value_string x11_enum_EventType[] = {
+static const value_string x11_enum_xkb_EventType[] = {
{ 0, NULL },
};
-static const value_string x11_enum_MapPart[] = {
+static const value_string x11_enum_xkb_MapPart[] = {
{ 0, NULL },
};
-static const value_string x11_enum_Group[] = {
+static const value_string x11_enum_xkb_Group[] = {
{ 0, "1" },
{ 1, "2" },
{ 2, "3" },
@@ -539,43 +563,43 @@ static const value_string x11_enum_Group[] = {
{ 0, NULL },
};
-static const value_string x11_enum_BellClassResult[] = {
+static const value_string x11_enum_xkb_BellClassResult[] = {
{ 0, "KbdFeedbackClass" },
{ 5, "BellFeedbackClass" },
{ 0, NULL },
};
-static const value_string x11_enum_LedClassResult[] = {
+static const value_string x11_enum_xkb_LedClassResult[] = {
{ 0, "KbdFeedbackClass" },
{ 4, "LedFeedbackClass" },
{ 0, NULL },
};
-static const value_string x11_enum_ImageFormatInfoType[] = {
+static const value_string x11_enum_xv_ImageFormatInfoType[] = {
{ 0, "RGB" },
{ 1, "YUV" },
{ 0, NULL },
};
-static const value_string x11_enum_ImageOrder[] = {
+static const value_string x11_enum_xproto_ImageOrder[] = {
{ 0, "LSBFirst" },
{ 1, "MSBFirst" },
{ 0, NULL },
};
-static const value_string x11_enum_ImageFormatInfoFormat[] = {
+static const value_string x11_enum_xv_ImageFormatInfoFormat[] = {
{ 0, "Packed" },
{ 1, "Planar" },
{ 0, NULL },
};
-static const value_string x11_enum_ScanlineOrder[] = {
+static const value_string x11_enum_xv_ScanlineOrder[] = {
{ 0, "TopToBottom" },
{ 1, "BottomToTop" },
{ 0, NULL },
};
-static const value_string x11_enum_VideoNotifyReason[] = {
+static const value_string x11_enum_xv_VideoNotifyReason[] = {
{ 0, "Started" },
{ 1, "Stopped" },
{ 2, "Busy" },
@@ -584,7 +608,7 @@ static const value_string x11_enum_VideoNotifyReason[] = {
{ 0, NULL },
};
-static const value_string x11_enum_GrabPortStatus[] = {
+static const value_string x11_enum_xv_GrabPortStatus[] = {
{ 0, "Success" },
{ 1, "BadExtension" },
{ 2, "AlreadyGrabbed" },
diff --git a/epan/dissectors/x11-extension-errors.h b/epan/dissectors/x11-extension-errors.h
index 6fd05e5ecb..4928403db8 100644
--- a/epan/dissectors/x11-extension-errors.h
+++ b/epan/dissectors/x11-extension-errors.h
@@ -1,6 +1,6 @@
/* Do not modify this file. */
/* It was automatically generated by ../../tools/process-x11-xcb.pl
- using xcbproto version 1.6-26-gfb2af7c */
+ using xcbproto version 1.7.1-1-gb02b7f8 */
/* $Id$ */
/*
@@ -64,6 +64,7 @@ const char *glx_errors[] = {
"glx-BadPbuffer",
"glx-BadCurrentDrawable",
"glx-BadWindow",
+ "glx-GLXBadProfileARB",
NULL
};
diff --git a/epan/dissectors/x11-extension-implementation.h b/epan/dissectors/x11-extension-implementation.h
index c8ff70e01b..b7c2c12783 100644
--- a/epan/dissectors/x11-extension-implementation.h
+++ b/epan/dissectors/x11-extension-implementation.h
@@ -1,6 +1,6 @@
/* Do not modify this file. */
/* It was automatically generated by ../../tools/process-x11-xcb.pl
- using xcbproto version 1.6-26-gfb2af7c */
+ using xcbproto version 1.7.1-1-gb02b7f8 */
/* $Id$ */
/*
@@ -27,3310 +27,3301 @@
#include "x11-glx-render-enum.h"
-static void mesa_CallList(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CallList(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_CallList_list, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CallList_list, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_CallLists(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CallLists(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int n;
n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_CallLists_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CallLists_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CallLists_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CallLists_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_CallLists_lists, (length - 8) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_CallLists_lists, (length - 8) / 1, byte_order);
}
-static void mesa_ListBase(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ListBase(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ListBase_base, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ListBase_base, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_Begin(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Begin(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Begin_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Begin_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_Bitmap(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Bitmap(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Bitmap_swapbytes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Bitmap_swapbytes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- proto_tree_add_item(t, hf_x11_glx_render_Bitmap_lsbfirst, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Bitmap_lsbfirst, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- proto_tree_add_item(t, hf_x11_glx_render_Bitmap_rowlength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Bitmap_rowlength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Bitmap_skiprows, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Bitmap_skiprows, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Bitmap_skippixels, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Bitmap_skippixels, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Bitmap_alignment, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Bitmap_alignment, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Bitmap_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Bitmap_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Bitmap_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Bitmap_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Bitmap_xorig, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Bitmap_xorig, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Bitmap_yorig, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Bitmap_yorig, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Bitmap_xmove, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Bitmap_xmove, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Bitmap_ymove, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Bitmap_ymove, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_Bitmap_bitmap, (length - 44) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_Bitmap_bitmap, (length - 44) / 1, byte_order);
}
-static void mesa_Color3bv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Color3bv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_Color3bv_v, 3, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_Color3bv_v, 3, byte_order);
}
-static void mesa_Color3dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Color3dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Color3dv_v, hf_x11_glx_render_Color3dv_v_item, 3, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Color3dv_v, hf_x11_glx_render_Color3dv_v_item, 3, byte_order);
}
-static void mesa_Color3fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Color3fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Color3fv_v, hf_x11_glx_render_Color3fv_v_item, 3, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Color3fv_v, hf_x11_glx_render_Color3fv_v_item, 3, byte_order);
}
-static void mesa_Color3iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Color3iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Color3iv_v, hf_x11_glx_render_Color3iv_v_item, 3, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Color3iv_v, hf_x11_glx_render_Color3iv_v_item, 3, byte_order);
}
-static void mesa_Color3sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Color3sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Color3sv_v, hf_x11_glx_render_Color3sv_v_item, 3, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Color3sv_v, hf_x11_glx_render_Color3sv_v_item, 3, byte_order);
}
-static void mesa_Color3ubv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Color3ubv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_Color3ubv_v, 3, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_Color3ubv_v, 3, byte_order);
}
-static void mesa_Color3uiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Color3uiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfCard32(tvb, offsetp, t, hf_x11_glx_render_Color3uiv_v, hf_x11_glx_render_Color3uiv_v_item, 3, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_render_Color3uiv_v, hf_x11_glx_render_Color3uiv_v_item, 3, byte_order);
}
-static void mesa_Color3usv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Color3usv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfCard16(tvb, offsetp, t, hf_x11_glx_render_Color3usv_v, hf_x11_glx_render_Color3usv_v_item, 3, little_endian);
+ listOfCard16(tvb, offsetp, t, hf_x11_glx_render_Color3usv_v, hf_x11_glx_render_Color3usv_v_item, 3, byte_order);
}
-static void mesa_Color4bv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Color4bv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_Color4bv_v, 4, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_Color4bv_v, 4, byte_order);
}
-static void mesa_Color4dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Color4dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Color4dv_v, hf_x11_glx_render_Color4dv_v_item, 4, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Color4dv_v, hf_x11_glx_render_Color4dv_v_item, 4, byte_order);
}
-static void mesa_Color4fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Color4fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Color4fv_v, hf_x11_glx_render_Color4fv_v_item, 4, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Color4fv_v, hf_x11_glx_render_Color4fv_v_item, 4, byte_order);
}
-static void mesa_Color4iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Color4iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Color4iv_v, hf_x11_glx_render_Color4iv_v_item, 4, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Color4iv_v, hf_x11_glx_render_Color4iv_v_item, 4, byte_order);
}
-static void mesa_Color4sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Color4sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Color4sv_v, hf_x11_glx_render_Color4sv_v_item, 4, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Color4sv_v, hf_x11_glx_render_Color4sv_v_item, 4, byte_order);
}
-static void mesa_Color4ubv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Color4ubv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_Color4ubv_v, 4, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_Color4ubv_v, 4, byte_order);
}
-static void mesa_Color4uiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Color4uiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfCard32(tvb, offsetp, t, hf_x11_glx_render_Color4uiv_v, hf_x11_glx_render_Color4uiv_v_item, 4, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_render_Color4uiv_v, hf_x11_glx_render_Color4uiv_v_item, 4, byte_order);
}
-static void mesa_Color4usv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Color4usv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfCard16(tvb, offsetp, t, hf_x11_glx_render_Color4usv_v, hf_x11_glx_render_Color4usv_v_item, 4, little_endian);
+ listOfCard16(tvb, offsetp, t, hf_x11_glx_render_Color4usv_v, hf_x11_glx_render_Color4usv_v_item, 4, byte_order);
}
-static void mesa_EdgeFlagv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_EdgeFlagv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_EdgeFlagv_flag, 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_EdgeFlagv_flag, 1, byte_order);
}
-static void mesa_End(tvbuff_t *tvb _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void mesa_End(tvbuff_t *tvb _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void mesa_Indexdv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Indexdv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Indexdv_c, hf_x11_glx_render_Indexdv_c_item, 1, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Indexdv_c, hf_x11_glx_render_Indexdv_c_item, 1, byte_order);
}
-static void mesa_Indexfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Indexfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Indexfv_c, hf_x11_glx_render_Indexfv_c_item, 1, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Indexfv_c, hf_x11_glx_render_Indexfv_c_item, 1, byte_order);
}
-static void mesa_Indexiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Indexiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Indexiv_c, hf_x11_glx_render_Indexiv_c_item, 1, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Indexiv_c, hf_x11_glx_render_Indexiv_c_item, 1, byte_order);
}
-static void mesa_Indexsv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Indexsv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Indexsv_c, hf_x11_glx_render_Indexsv_c_item, 1, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Indexsv_c, hf_x11_glx_render_Indexsv_c_item, 1, byte_order);
}
-static void mesa_Normal3bv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Normal3bv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_Normal3bv_v, 3, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_Normal3bv_v, 3, byte_order);
}
-static void mesa_Normal3dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Normal3dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Normal3dv_v, hf_x11_glx_render_Normal3dv_v_item, 3, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Normal3dv_v, hf_x11_glx_render_Normal3dv_v_item, 3, byte_order);
}
-static void mesa_Normal3fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Normal3fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Normal3fv_v, hf_x11_glx_render_Normal3fv_v_item, 3, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Normal3fv_v, hf_x11_glx_render_Normal3fv_v_item, 3, byte_order);
}
-static void mesa_Normal3iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Normal3iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Normal3iv_v, hf_x11_glx_render_Normal3iv_v_item, 3, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Normal3iv_v, hf_x11_glx_render_Normal3iv_v_item, 3, byte_order);
}
-static void mesa_Normal3sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Normal3sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Normal3sv_v, hf_x11_glx_render_Normal3sv_v_item, 3, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Normal3sv_v, hf_x11_glx_render_Normal3sv_v_item, 3, byte_order);
}
-static void mesa_RasterPos2dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_RasterPos2dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_RasterPos2dv_v, hf_x11_glx_render_RasterPos2dv_v_item, 2, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_RasterPos2dv_v, hf_x11_glx_render_RasterPos2dv_v_item, 2, byte_order);
}
-static void mesa_RasterPos2fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_RasterPos2fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_RasterPos2fv_v, hf_x11_glx_render_RasterPos2fv_v_item, 2, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_RasterPos2fv_v, hf_x11_glx_render_RasterPos2fv_v_item, 2, byte_order);
}
-static void mesa_RasterPos2iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_RasterPos2iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_RasterPos2iv_v, hf_x11_glx_render_RasterPos2iv_v_item, 2, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_RasterPos2iv_v, hf_x11_glx_render_RasterPos2iv_v_item, 2, byte_order);
}
-static void mesa_RasterPos2sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_RasterPos2sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_RasterPos2sv_v, hf_x11_glx_render_RasterPos2sv_v_item, 2, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_RasterPos2sv_v, hf_x11_glx_render_RasterPos2sv_v_item, 2, byte_order);
}
-static void mesa_RasterPos3dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_RasterPos3dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_RasterPos3dv_v, hf_x11_glx_render_RasterPos3dv_v_item, 3, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_RasterPos3dv_v, hf_x11_glx_render_RasterPos3dv_v_item, 3, byte_order);
}
-static void mesa_RasterPos3fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_RasterPos3fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_RasterPos3fv_v, hf_x11_glx_render_RasterPos3fv_v_item, 3, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_RasterPos3fv_v, hf_x11_glx_render_RasterPos3fv_v_item, 3, byte_order);
}
-static void mesa_RasterPos3iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_RasterPos3iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_RasterPos3iv_v, hf_x11_glx_render_RasterPos3iv_v_item, 3, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_RasterPos3iv_v, hf_x11_glx_render_RasterPos3iv_v_item, 3, byte_order);
}
-static void mesa_RasterPos3sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_RasterPos3sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_RasterPos3sv_v, hf_x11_glx_render_RasterPos3sv_v_item, 3, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_RasterPos3sv_v, hf_x11_glx_render_RasterPos3sv_v_item, 3, byte_order);
}
-static void mesa_RasterPos4dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_RasterPos4dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_RasterPos4dv_v, hf_x11_glx_render_RasterPos4dv_v_item, 4, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_RasterPos4dv_v, hf_x11_glx_render_RasterPos4dv_v_item, 4, byte_order);
}
-static void mesa_RasterPos4fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_RasterPos4fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_RasterPos4fv_v, hf_x11_glx_render_RasterPos4fv_v_item, 4, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_RasterPos4fv_v, hf_x11_glx_render_RasterPos4fv_v_item, 4, byte_order);
}
-static void mesa_RasterPos4iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_RasterPos4iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_RasterPos4iv_v, hf_x11_glx_render_RasterPos4iv_v_item, 4, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_RasterPos4iv_v, hf_x11_glx_render_RasterPos4iv_v_item, 4, byte_order);
}
-static void mesa_RasterPos4sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_RasterPos4sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_RasterPos4sv_v, hf_x11_glx_render_RasterPos4sv_v_item, 4, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_RasterPos4sv_v, hf_x11_glx_render_RasterPos4sv_v_item, 4, byte_order);
}
-static void mesa_Rectdv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Rectdv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Rectdv_v1, hf_x11_glx_render_Rectdv_v1_item, 2, little_endian);
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Rectdv_v2, hf_x11_glx_render_Rectdv_v2_item, 2, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Rectdv_v1, hf_x11_glx_render_Rectdv_v1_item, 2, byte_order);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Rectdv_v2, hf_x11_glx_render_Rectdv_v2_item, 2, byte_order);
}
-static void mesa_Rectfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Rectfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Rectfv_v1, hf_x11_glx_render_Rectfv_v1_item, 2, little_endian);
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Rectfv_v2, hf_x11_glx_render_Rectfv_v2_item, 2, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Rectfv_v1, hf_x11_glx_render_Rectfv_v1_item, 2, byte_order);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Rectfv_v2, hf_x11_glx_render_Rectfv_v2_item, 2, byte_order);
}
-static void mesa_Rectiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Rectiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Rectiv_v1, hf_x11_glx_render_Rectiv_v1_item, 2, little_endian);
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Rectiv_v2, hf_x11_glx_render_Rectiv_v2_item, 2, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Rectiv_v1, hf_x11_glx_render_Rectiv_v1_item, 2, byte_order);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Rectiv_v2, hf_x11_glx_render_Rectiv_v2_item, 2, byte_order);
}
-static void mesa_Rectsv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Rectsv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Rectsv_v1, hf_x11_glx_render_Rectsv_v1_item, 2, little_endian);
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Rectsv_v2, hf_x11_glx_render_Rectsv_v2_item, 2, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Rectsv_v1, hf_x11_glx_render_Rectsv_v1_item, 2, byte_order);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Rectsv_v2, hf_x11_glx_render_Rectsv_v2_item, 2, byte_order);
}
-static void mesa_TexCoord1dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexCoord1dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_TexCoord1dv_v, hf_x11_glx_render_TexCoord1dv_v_item, 1, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_TexCoord1dv_v, hf_x11_glx_render_TexCoord1dv_v_item, 1, byte_order);
}
-static void mesa_TexCoord1fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexCoord1fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_TexCoord1fv_v, hf_x11_glx_render_TexCoord1fv_v_item, 1, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_TexCoord1fv_v, hf_x11_glx_render_TexCoord1fv_v_item, 1, byte_order);
}
-static void mesa_TexCoord1iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexCoord1iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_TexCoord1iv_v, hf_x11_glx_render_TexCoord1iv_v_item, 1, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_TexCoord1iv_v, hf_x11_glx_render_TexCoord1iv_v_item, 1, byte_order);
}
-static void mesa_TexCoord1sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexCoord1sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_TexCoord1sv_v, hf_x11_glx_render_TexCoord1sv_v_item, 1, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_TexCoord1sv_v, hf_x11_glx_render_TexCoord1sv_v_item, 1, byte_order);
}
-static void mesa_TexCoord2dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexCoord2dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_TexCoord2dv_v, hf_x11_glx_render_TexCoord2dv_v_item, 2, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_TexCoord2dv_v, hf_x11_glx_render_TexCoord2dv_v_item, 2, byte_order);
}
-static void mesa_TexCoord2fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexCoord2fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_TexCoord2fv_v, hf_x11_glx_render_TexCoord2fv_v_item, 2, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_TexCoord2fv_v, hf_x11_glx_render_TexCoord2fv_v_item, 2, byte_order);
}
-static void mesa_TexCoord2iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexCoord2iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_TexCoord2iv_v, hf_x11_glx_render_TexCoord2iv_v_item, 2, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_TexCoord2iv_v, hf_x11_glx_render_TexCoord2iv_v_item, 2, byte_order);
}
-static void mesa_TexCoord2sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexCoord2sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_TexCoord2sv_v, hf_x11_glx_render_TexCoord2sv_v_item, 2, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_TexCoord2sv_v, hf_x11_glx_render_TexCoord2sv_v_item, 2, byte_order);
}
-static void mesa_TexCoord3dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexCoord3dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_TexCoord3dv_v, hf_x11_glx_render_TexCoord3dv_v_item, 3, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_TexCoord3dv_v, hf_x11_glx_render_TexCoord3dv_v_item, 3, byte_order);
}
-static void mesa_TexCoord3fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexCoord3fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_TexCoord3fv_v, hf_x11_glx_render_TexCoord3fv_v_item, 3, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_TexCoord3fv_v, hf_x11_glx_render_TexCoord3fv_v_item, 3, byte_order);
}
-static void mesa_TexCoord3iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexCoord3iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_TexCoord3iv_v, hf_x11_glx_render_TexCoord3iv_v_item, 3, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_TexCoord3iv_v, hf_x11_glx_render_TexCoord3iv_v_item, 3, byte_order);
}
-static void mesa_TexCoord3sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexCoord3sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_TexCoord3sv_v, hf_x11_glx_render_TexCoord3sv_v_item, 3, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_TexCoord3sv_v, hf_x11_glx_render_TexCoord3sv_v_item, 3, byte_order);
}
-static void mesa_TexCoord4dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexCoord4dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_TexCoord4dv_v, hf_x11_glx_render_TexCoord4dv_v_item, 4, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_TexCoord4dv_v, hf_x11_glx_render_TexCoord4dv_v_item, 4, byte_order);
}
-static void mesa_TexCoord4fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexCoord4fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_TexCoord4fv_v, hf_x11_glx_render_TexCoord4fv_v_item, 4, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_TexCoord4fv_v, hf_x11_glx_render_TexCoord4fv_v_item, 4, byte_order);
}
-static void mesa_TexCoord4iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexCoord4iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_TexCoord4iv_v, hf_x11_glx_render_TexCoord4iv_v_item, 4, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_TexCoord4iv_v, hf_x11_glx_render_TexCoord4iv_v_item, 4, byte_order);
}
-static void mesa_TexCoord4sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexCoord4sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_TexCoord4sv_v, hf_x11_glx_render_TexCoord4sv_v_item, 4, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_TexCoord4sv_v, hf_x11_glx_render_TexCoord4sv_v_item, 4, byte_order);
}
-static void mesa_Vertex2dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Vertex2dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Vertex2dv_v, hf_x11_glx_render_Vertex2dv_v_item, 2, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Vertex2dv_v, hf_x11_glx_render_Vertex2dv_v_item, 2, byte_order);
}
-static void mesa_Vertex2fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Vertex2fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Vertex2fv_v, hf_x11_glx_render_Vertex2fv_v_item, 2, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Vertex2fv_v, hf_x11_glx_render_Vertex2fv_v_item, 2, byte_order);
}
-static void mesa_Vertex2iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Vertex2iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Vertex2iv_v, hf_x11_glx_render_Vertex2iv_v_item, 2, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Vertex2iv_v, hf_x11_glx_render_Vertex2iv_v_item, 2, byte_order);
}
-static void mesa_Vertex2sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Vertex2sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Vertex2sv_v, hf_x11_glx_render_Vertex2sv_v_item, 2, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Vertex2sv_v, hf_x11_glx_render_Vertex2sv_v_item, 2, byte_order);
}
-static void mesa_Vertex3dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Vertex3dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Vertex3dv_v, hf_x11_glx_render_Vertex3dv_v_item, 3, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Vertex3dv_v, hf_x11_glx_render_Vertex3dv_v_item, 3, byte_order);
}
-static void mesa_Vertex3fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Vertex3fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Vertex3fv_v, hf_x11_glx_render_Vertex3fv_v_item, 3, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Vertex3fv_v, hf_x11_glx_render_Vertex3fv_v_item, 3, byte_order);
}
-static void mesa_Vertex3iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Vertex3iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Vertex3iv_v, hf_x11_glx_render_Vertex3iv_v_item, 3, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Vertex3iv_v, hf_x11_glx_render_Vertex3iv_v_item, 3, byte_order);
}
-static void mesa_Vertex3sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Vertex3sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Vertex3sv_v, hf_x11_glx_render_Vertex3sv_v_item, 3, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Vertex3sv_v, hf_x11_glx_render_Vertex3sv_v_item, 3, byte_order);
}
-static void mesa_Vertex4dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Vertex4dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Vertex4dv_v, hf_x11_glx_render_Vertex4dv_v_item, 4, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Vertex4dv_v, hf_x11_glx_render_Vertex4dv_v_item, 4, byte_order);
}
-static void mesa_Vertex4fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Vertex4fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Vertex4fv_v, hf_x11_glx_render_Vertex4fv_v_item, 4, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Vertex4fv_v, hf_x11_glx_render_Vertex4fv_v_item, 4, byte_order);
}
-static void mesa_Vertex4iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Vertex4iv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Vertex4iv_v, hf_x11_glx_render_Vertex4iv_v_item, 4, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Vertex4iv_v, hf_x11_glx_render_Vertex4iv_v_item, 4, byte_order);
}
-static void mesa_Vertex4sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Vertex4sv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Vertex4sv_v, hf_x11_glx_render_Vertex4sv_v_item, 4, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_Vertex4sv_v, hf_x11_glx_render_Vertex4sv_v_item, 4, byte_order);
}
-static void mesa_ClipPlane(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ClipPlane(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ClipPlane_plane, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ClipPlane_plane, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_ClipPlane_equation, hf_x11_glx_render_ClipPlane_equation_item, 4, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_ClipPlane_equation, hf_x11_glx_render_ClipPlane_equation_item, 4, byte_order);
}
-static void mesa_ColorMaterial(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ColorMaterial(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ColorMaterial_face, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorMaterial_face, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ColorMaterial_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorMaterial_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_CullFace(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CullFace(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_CullFace_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CullFace_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_Fogf(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Fogf(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Fogf_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Fogf_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Fogf_param, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Fogf_param, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_Fogfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Fogfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Fogfv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Fogfv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Fogfv_params, hf_x11_glx_render_Fogfv_params_item, (length - 4) / 4, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Fogfv_params, hf_x11_glx_render_Fogfv_params_item, (length - 4) / 4, byte_order);
}
-static void mesa_Fogi(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Fogi(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Fogi_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Fogi_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Fogi_param, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Fogi_param, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_Fogiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Fogiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Fogiv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Fogiv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Fogiv_params, hf_x11_glx_render_Fogiv_params_item, (length - 4) / 4, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Fogiv_params, hf_x11_glx_render_Fogiv_params_item, (length - 4) / 4, byte_order);
}
-static void mesa_FrontFace(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_FrontFace(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_FrontFace_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_FrontFace_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_Hint(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Hint(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Hint_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Hint_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Hint_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Hint_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_Lightf(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Lightf(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Lightf_light, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Lightf_light, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Lightf_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Lightf_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Lightf_param, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Lightf_param, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_Lightfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Lightfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Lightfv_light, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Lightfv_light, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Lightfv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Lightfv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Lightfv_params, hf_x11_glx_render_Lightfv_params_item, (length - 8) / 4, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Lightfv_params, hf_x11_glx_render_Lightfv_params_item, (length - 8) / 4, byte_order);
}
-static void mesa_Lighti(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Lighti(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Lighti_light, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Lighti_light, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Lighti_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Lighti_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Lighti_param, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Lighti_param, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_Lightiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Lightiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Lightiv_light, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Lightiv_light, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Lightiv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Lightiv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Lightiv_params, hf_x11_glx_render_Lightiv_params_item, (length - 8) / 4, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Lightiv_params, hf_x11_glx_render_Lightiv_params_item, (length - 8) / 4, byte_order);
}
-static void mesa_LightModelf(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_LightModelf(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_LightModelf_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_LightModelf_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_LightModelf_param, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_LightModelf_param, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_LightModelfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_LightModelfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_LightModelfv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_LightModelfv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_LightModelfv_params, hf_x11_glx_render_LightModelfv_params_item, (length - 4) / 4, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_LightModelfv_params, hf_x11_glx_render_LightModelfv_params_item, (length - 4) / 4, byte_order);
}
-static void mesa_LightModeli(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_LightModeli(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_LightModeli_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_LightModeli_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_LightModeli_param, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_LightModeli_param, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_LightModeliv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_LightModeliv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_LightModeliv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_LightModeliv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_LightModeliv_params, hf_x11_glx_render_LightModeliv_params_item, (length - 4) / 4, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_LightModeliv_params, hf_x11_glx_render_LightModeliv_params_item, (length - 4) / 4, byte_order);
}
-static void mesa_LineStipple(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_LineStipple(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_LineStipple_factor, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_LineStipple_factor, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_LineStipple_pattern, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_LineStipple_pattern, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void mesa_LineWidth(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_LineWidth(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_LineWidth_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_LineWidth_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_Materialf(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Materialf(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Materialf_face, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Materialf_face, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Materialf_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Materialf_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Materialf_param, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Materialf_param, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_Materialfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Materialfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Materialfv_face, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Materialfv_face, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Materialfv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Materialfv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Materialfv_params, hf_x11_glx_render_Materialfv_params_item, (length - 8) / 4, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Materialfv_params, hf_x11_glx_render_Materialfv_params_item, (length - 8) / 4, byte_order);
}
-static void mesa_Materiali(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Materiali(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Materiali_face, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Materiali_face, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Materiali_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Materiali_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Materiali_param, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Materiali_param, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_Materialiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Materialiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Materialiv_face, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Materialiv_face, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Materialiv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Materialiv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Materialiv_params, hf_x11_glx_render_Materialiv_params_item, (length - 8) / 4, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_Materialiv_params, hf_x11_glx_render_Materialiv_params_item, (length - 8) / 4, byte_order);
}
-static void mesa_PointSize(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_PointSize(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_PointSize_size, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PointSize_size, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_PolygonMode(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_PolygonMode(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_PolygonMode_face, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PolygonMode_face, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_PolygonMode_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PolygonMode_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_PolygonStipple(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_PolygonStipple(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_PolygonStipple_swapbytes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PolygonStipple_swapbytes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- proto_tree_add_item(t, hf_x11_glx_render_PolygonStipple_lsbfirst, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PolygonStipple_lsbfirst, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- proto_tree_add_item(t, hf_x11_glx_render_PolygonStipple_rowlength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PolygonStipple_rowlength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_PolygonStipple_skiprows, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PolygonStipple_skiprows, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_PolygonStipple_skippixels, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PolygonStipple_skippixels, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_PolygonStipple_alignment, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PolygonStipple_alignment, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_PolygonStipple_mask, (length - 20) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_PolygonStipple_mask, (length - 20) / 1, byte_order);
}
-static void mesa_Scissor(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Scissor(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Scissor_x, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Scissor_x, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Scissor_y, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Scissor_y, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Scissor_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Scissor_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Scissor_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Scissor_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_ShadeModel(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ShadeModel(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ShadeModel_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ShadeModel_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_TexParameterf(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexParameterf(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_TexParameterf_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexParameterf_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexParameterf_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexParameterf_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexParameterf_param, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexParameterf_param, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_TexParameterfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexParameterfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_TexParameterfv_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexParameterfv_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexParameterfv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexParameterfv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_TexParameterfv_params, hf_x11_glx_render_TexParameterfv_params_item, (length - 8) / 4, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_TexParameterfv_params, hf_x11_glx_render_TexParameterfv_params_item, (length - 8) / 4, byte_order);
}
-static void mesa_TexParameteri(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexParameteri(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_TexParameteri_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexParameteri_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexParameteri_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexParameteri_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexParameteri_param, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexParameteri_param, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_TexParameteriv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexParameteriv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_TexParameteriv_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexParameteriv_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexParameteriv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexParameteriv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_TexParameteriv_params, hf_x11_glx_render_TexParameteriv_params_item, (length - 8) / 4, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_TexParameteriv_params, hf_x11_glx_render_TexParameteriv_params_item, (length - 8) / 4, byte_order);
}
-static void mesa_TexImage1D(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexImage1D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_swapbytes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_swapbytes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_lsbfirst, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_lsbfirst, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_rowlength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_rowlength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_skiprows, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_skiprows, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_skippixels, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_skippixels, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_alignment, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_alignment, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_level, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_level, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_internalformat, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_internalformat, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_border, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_border, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage1D_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_TexImage1D_pixels, (length - 48) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_TexImage1D_pixels, (length - 48) / 1, byte_order);
}
-static void mesa_TexImage2D(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexImage2D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_swapbytes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_swapbytes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_lsbfirst, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_lsbfirst, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_rowlength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_rowlength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_skiprows, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_skiprows, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_skippixels, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_skippixels, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_alignment, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_alignment, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_level, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_level, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_internalformat, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_internalformat, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_border, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_border, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage2D_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_TexImage2D_pixels, (length - 52) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_TexImage2D_pixels, (length - 52) / 1, byte_order);
}
-static void mesa_TexEnvf(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexEnvf(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_TexEnvf_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexEnvf_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexEnvf_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexEnvf_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexEnvf_param, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexEnvf_param, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_TexEnvfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexEnvfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_TexEnvfv_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexEnvfv_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexEnvfv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexEnvfv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_TexEnvfv_params, hf_x11_glx_render_TexEnvfv_params_item, (length - 8) / 4, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_TexEnvfv_params, hf_x11_glx_render_TexEnvfv_params_item, (length - 8) / 4, byte_order);
}
-static void mesa_TexEnvi(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexEnvi(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_TexEnvi_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexEnvi_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexEnvi_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexEnvi_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexEnvi_param, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexEnvi_param, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_TexEnviv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexEnviv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_TexEnviv_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexEnviv_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexEnviv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexEnviv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_TexEnviv_params, hf_x11_glx_render_TexEnviv_params_item, (length - 8) / 4, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_TexEnviv_params, hf_x11_glx_render_TexEnviv_params_item, (length - 8) / 4, byte_order);
}
-static void mesa_TexGend(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexGend(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_TexGend_coord, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexGend_coord, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexGend_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexGend_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexGend_param, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexGend_param, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
}
-static void mesa_TexGendv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexGendv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_TexGendv_coord, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexGendv_coord, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexGendv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexGendv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_TexGendv_params, hf_x11_glx_render_TexGendv_params_item, (length - 8) / 8, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_TexGendv_params, hf_x11_glx_render_TexGendv_params_item, (length - 8) / 8, byte_order);
}
-static void mesa_TexGenf(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexGenf(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_TexGenf_coord, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexGenf_coord, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexGenf_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexGenf_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexGenf_param, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexGenf_param, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_TexGenfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexGenfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_TexGenfv_coord, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexGenfv_coord, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexGenfv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexGenfv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_TexGenfv_params, hf_x11_glx_render_TexGenfv_params_item, (length - 8) / 4, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_TexGenfv_params, hf_x11_glx_render_TexGenfv_params_item, (length - 8) / 4, byte_order);
}
-static void mesa_TexGeni(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexGeni(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_TexGeni_coord, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexGeni_coord, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexGeni_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexGeni_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexGeni_param, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexGeni_param, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_TexGeniv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexGeniv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_TexGeniv_coord, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexGeniv_coord, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexGeniv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexGeniv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_TexGeniv_params, hf_x11_glx_render_TexGeniv_params_item, (length - 8) / 4, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_TexGeniv_params, hf_x11_glx_render_TexGeniv_params_item, (length - 8) / 4, byte_order);
}
-static void mesa_InitNames(tvbuff_t *tvb _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void mesa_InitNames(tvbuff_t *tvb _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void mesa_LoadName(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_LoadName(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_LoadName_name, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_LoadName_name, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_PassThrough(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_PassThrough(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_PassThrough_token, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PassThrough_token, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_PopName(tvbuff_t *tvb _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void mesa_PopName(tvbuff_t *tvb _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void mesa_PushName(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_PushName(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_PushName_name, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PushName_name, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_DrawBuffer(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_DrawBuffer(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_DrawBuffer_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_DrawBuffer_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_Clear(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Clear(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Clear_mask, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Clear_mask, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_ClearAccum(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ClearAccum(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ClearAccum_red, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ClearAccum_red, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ClearAccum_green, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ClearAccum_green, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ClearAccum_blue, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ClearAccum_blue, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ClearAccum_alpha, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ClearAccum_alpha, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_ClearIndex(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ClearIndex(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ClearIndex_c, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ClearIndex_c, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_ClearColor(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ClearColor(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ClearColor_red, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ClearColor_red, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ClearColor_green, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ClearColor_green, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ClearColor_blue, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ClearColor_blue, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ClearColor_alpha, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ClearColor_alpha, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_ClearStencil(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ClearStencil(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ClearStencil_s, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ClearStencil_s, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_ClearDepth(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ClearDepth(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ClearDepth_depth, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ClearDepth_depth, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
}
-static void mesa_StencilMask(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_StencilMask(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_StencilMask_mask, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_StencilMask_mask, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_ColorMask(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ColorMask(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ColorMask_red, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorMask_red, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- proto_tree_add_item(t, hf_x11_glx_render_ColorMask_green, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorMask_green, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- proto_tree_add_item(t, hf_x11_glx_render_ColorMask_blue, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorMask_blue, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- proto_tree_add_item(t, hf_x11_glx_render_ColorMask_alpha, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorMask_alpha, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void mesa_DepthMask(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_DepthMask(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_DepthMask_flag, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_DepthMask_flag, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void mesa_IndexMask(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_IndexMask(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_IndexMask_mask, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_IndexMask_mask, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_Accum(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Accum(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Accum_op, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Accum_op, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Accum_value, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Accum_value, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_Disable(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Disable(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Disable_cap, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Disable_cap, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_Enable(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Enable(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Enable_cap, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Enable_cap, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_PopAttrib(tvbuff_t *tvb _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void mesa_PopAttrib(tvbuff_t *tvb _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void mesa_PushAttrib(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_PushAttrib(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_PushAttrib_mask, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PushAttrib_mask, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_Map1d(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Map1d(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Map1d_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map1d_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Map1d_u1, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map1d_u1, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_Map1d_u2, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map1d_u2, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_Map1d_stride, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map1d_stride, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Map1d_order, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map1d_order, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Map1d_points, hf_x11_glx_render_Map1d_points_item, (length - 28) / 8, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Map1d_points, hf_x11_glx_render_Map1d_points_item, (length - 28) / 8, byte_order);
}
-static void mesa_Map1f(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Map1f(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Map1f_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map1f_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Map1f_u1, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map1f_u1, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Map1f_u2, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map1f_u2, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Map1f_stride, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map1f_stride, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Map1f_order, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map1f_order, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Map1f_points, hf_x11_glx_render_Map1f_points_item, (length - 20) / 4, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Map1f_points, hf_x11_glx_render_Map1f_points_item, (length - 20) / 4, byte_order);
}
-static void mesa_Map2d(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Map2d(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Map2d_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map2d_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Map2d_u1, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map2d_u1, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_Map2d_u2, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map2d_u2, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_Map2d_ustride, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map2d_ustride, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Map2d_uorder, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map2d_uorder, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Map2d_v1, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map2d_v1, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_Map2d_v2, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map2d_v2, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_Map2d_vstride, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map2d_vstride, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Map2d_vorder, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map2d_vorder, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Map2d_points, hf_x11_glx_render_Map2d_points_item, (length - 52) / 8, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_Map2d_points, hf_x11_glx_render_Map2d_points_item, (length - 52) / 8, byte_order);
}
-static void mesa_Map2f(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Map2f(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Map2f_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map2f_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Map2f_u1, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map2f_u1, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Map2f_u2, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map2f_u2, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Map2f_ustride, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map2f_ustride, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Map2f_uorder, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map2f_uorder, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Map2f_v1, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map2f_v1, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Map2f_v2, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map2f_v2, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Map2f_vstride, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map2f_vstride, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Map2f_vorder, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Map2f_vorder, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Map2f_points, hf_x11_glx_render_Map2f_points_item, (length - 36) / 4, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_Map2f_points, hf_x11_glx_render_Map2f_points_item, (length - 36) / 4, byte_order);
}
-static void mesa_MapGrid1d(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MapGrid1d(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_MapGrid1d_un, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MapGrid1d_un, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_MapGrid1d_u1, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MapGrid1d_u1, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_MapGrid1d_u2, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MapGrid1d_u2, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
}
-static void mesa_MapGrid1f(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MapGrid1f(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_MapGrid1f_un, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MapGrid1f_un, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_MapGrid1f_u1, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MapGrid1f_u1, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_MapGrid1f_u2, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MapGrid1f_u2, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_MapGrid2d(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MapGrid2d(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_MapGrid2d_un, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MapGrid2d_un, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_MapGrid2d_u1, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MapGrid2d_u1, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_MapGrid2d_u2, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MapGrid2d_u2, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_MapGrid2d_vn, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MapGrid2d_vn, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_MapGrid2d_v1, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MapGrid2d_v1, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_MapGrid2d_v2, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MapGrid2d_v2, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
}
-static void mesa_MapGrid2f(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MapGrid2f(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_MapGrid2f_un, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MapGrid2f_un, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_MapGrid2f_u1, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MapGrid2f_u1, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_MapGrid2f_u2, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MapGrid2f_u2, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_MapGrid2f_vn, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MapGrid2f_vn, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_MapGrid2f_v1, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MapGrid2f_v1, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_MapGrid2f_v2, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MapGrid2f_v2, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_EvalCoord1dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_EvalCoord1dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_EvalCoord1dv_u, hf_x11_glx_render_EvalCoord1dv_u_item, 1, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_EvalCoord1dv_u, hf_x11_glx_render_EvalCoord1dv_u_item, 1, byte_order);
}
-static void mesa_EvalCoord1fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_EvalCoord1fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_EvalCoord1fv_u, hf_x11_glx_render_EvalCoord1fv_u_item, 1, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_EvalCoord1fv_u, hf_x11_glx_render_EvalCoord1fv_u_item, 1, byte_order);
}
-static void mesa_EvalCoord2dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_EvalCoord2dv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_EvalCoord2dv_u, hf_x11_glx_render_EvalCoord2dv_u_item, 2, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_EvalCoord2dv_u, hf_x11_glx_render_EvalCoord2dv_u_item, 2, byte_order);
}
-static void mesa_EvalCoord2fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_EvalCoord2fv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_EvalCoord2fv_u, hf_x11_glx_render_EvalCoord2fv_u_item, 2, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_EvalCoord2fv_u, hf_x11_glx_render_EvalCoord2fv_u_item, 2, byte_order);
}
-static void mesa_EvalMesh1(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_EvalMesh1(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_EvalMesh1_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_EvalMesh1_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_EvalMesh1_i1, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_EvalMesh1_i1, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_EvalMesh1_i2, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_EvalMesh1_i2, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_EvalPoint1(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_EvalPoint1(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_EvalPoint1_i, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_EvalPoint1_i, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_EvalMesh2(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_EvalMesh2(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_EvalMesh2_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_EvalMesh2_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_EvalMesh2_i1, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_EvalMesh2_i1, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_EvalMesh2_i2, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_EvalMesh2_i2, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_EvalMesh2_j1, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_EvalMesh2_j1, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_EvalMesh2_j2, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_EvalMesh2_j2, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_EvalPoint2(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_EvalPoint2(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_EvalPoint2_i, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_EvalPoint2_i, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_EvalPoint2_j, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_EvalPoint2_j, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_AlphaFunc(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_AlphaFunc(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_AlphaFunc_func, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_AlphaFunc_func, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_AlphaFunc_ref, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_AlphaFunc_ref, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_BlendFunc(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_BlendFunc(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_BlendFunc_sfactor, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_BlendFunc_sfactor, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_BlendFunc_dfactor, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_BlendFunc_dfactor, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_LogicOp(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_LogicOp(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_LogicOp_opcode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_LogicOp_opcode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_StencilFunc(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_StencilFunc(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_StencilFunc_func, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_StencilFunc_func, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_StencilFunc_ref, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_StencilFunc_ref, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_StencilFunc_mask, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_StencilFunc_mask, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_StencilOp(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_StencilOp(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_StencilOp_fail, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_StencilOp_fail, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_StencilOp_zfail, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_StencilOp_zfail, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_StencilOp_zpass, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_StencilOp_zpass, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_DepthFunc(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_DepthFunc(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_DepthFunc_func, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_DepthFunc_func, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_PixelZoom(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_PixelZoom(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_PixelZoom_xfactor, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PixelZoom_xfactor, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_PixelZoom_yfactor, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PixelZoom_yfactor, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_PixelTransferf(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_PixelTransferf(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_PixelTransferf_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PixelTransferf_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_PixelTransferf_param, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PixelTransferf_param, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_PixelTransferi(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_PixelTransferi(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_PixelTransferi_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PixelTransferi_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_PixelTransferi_param, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PixelTransferi_param, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_PixelMapfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_PixelMapfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int mapsize;
- proto_tree_add_item(t, hf_x11_glx_render_PixelMapfv_map, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PixelMapfv_map, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
mapsize = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_PixelMapfv_mapsize, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PixelMapfv_mapsize, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_PixelMapfv_values, hf_x11_glx_render_PixelMapfv_values_item, mapsize, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_PixelMapfv_values, hf_x11_glx_render_PixelMapfv_values_item, mapsize, byte_order);
}
-static void mesa_PixelMapuiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_PixelMapuiv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int mapsize;
- proto_tree_add_item(t, hf_x11_glx_render_PixelMapuiv_map, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PixelMapuiv_map, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
mapsize = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_PixelMapuiv_mapsize, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PixelMapuiv_mapsize, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard32(tvb, offsetp, t, hf_x11_glx_render_PixelMapuiv_values, hf_x11_glx_render_PixelMapuiv_values_item, mapsize, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_render_PixelMapuiv_values, hf_x11_glx_render_PixelMapuiv_values_item, mapsize, byte_order);
}
-static void mesa_PixelMapusv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_PixelMapusv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int mapsize;
- proto_tree_add_item(t, hf_x11_glx_render_PixelMapusv_map, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PixelMapusv_map, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
mapsize = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_PixelMapusv_mapsize, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PixelMapusv_mapsize, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard16(tvb, offsetp, t, hf_x11_glx_render_PixelMapusv_values, hf_x11_glx_render_PixelMapusv_values_item, mapsize, little_endian);
+ listOfCard16(tvb, offsetp, t, hf_x11_glx_render_PixelMapusv_values, hf_x11_glx_render_PixelMapusv_values_item, mapsize, byte_order);
}
-static void mesa_ReadBuffer(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ReadBuffer(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ReadBuffer_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ReadBuffer_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_CopyPixels(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CopyPixels(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_CopyPixels_x, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyPixels_x, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyPixels_y, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyPixels_y, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyPixels_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyPixels_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyPixels_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyPixels_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyPixels_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyPixels_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_DrawPixels(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_DrawPixels(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_swapbytes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_swapbytes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_lsbfirst, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_lsbfirst, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_rowlength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_rowlength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_skiprows, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_skiprows, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_skippixels, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_skippixels, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_alignment, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_alignment, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_DrawPixels_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_DrawPixels_pixels, (length - 36) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_DrawPixels_pixels, (length - 36) / 1, byte_order);
}
-static void mesa_DepthRange(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_DepthRange(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_DepthRange_zNear, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_DepthRange_zNear, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_DepthRange_zFar, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_DepthRange_zFar, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
}
-static void mesa_Frustum(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Frustum(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Frustum_left, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Frustum_left, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_Frustum_right, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Frustum_right, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_Frustum_bottom, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Frustum_bottom, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_Frustum_top, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Frustum_top, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_Frustum_zNear, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Frustum_zNear, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_Frustum_zFar, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Frustum_zFar, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
}
-static void mesa_LoadIdentity(tvbuff_t *tvb _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void mesa_LoadIdentity(tvbuff_t *tvb _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void mesa_LoadMatrixf(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_LoadMatrixf(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_LoadMatrixf_m, hf_x11_glx_render_LoadMatrixf_m_item, 16, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_LoadMatrixf_m, hf_x11_glx_render_LoadMatrixf_m_item, 16, byte_order);
}
-static void mesa_LoadMatrixd(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_LoadMatrixd(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_LoadMatrixd_m, hf_x11_glx_render_LoadMatrixd_m_item, 16, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_LoadMatrixd_m, hf_x11_glx_render_LoadMatrixd_m_item, 16, byte_order);
}
-static void mesa_MatrixMode(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MatrixMode(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_MatrixMode_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MatrixMode_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_MultMatrixf(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MultMatrixf(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_MultMatrixf_m, hf_x11_glx_render_MultMatrixf_m_item, 16, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_MultMatrixf_m, hf_x11_glx_render_MultMatrixf_m_item, 16, byte_order);
}
-static void mesa_MultMatrixd(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MultMatrixd(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_MultMatrixd_m, hf_x11_glx_render_MultMatrixd_m_item, 16, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_MultMatrixd_m, hf_x11_glx_render_MultMatrixd_m_item, 16, byte_order);
}
-static void mesa_Ortho(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Ortho(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Ortho_left, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Ortho_left, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_Ortho_right, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Ortho_right, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_Ortho_bottom, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Ortho_bottom, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_Ortho_top, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Ortho_top, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_Ortho_zNear, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Ortho_zNear, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_Ortho_zFar, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Ortho_zFar, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
}
-static void mesa_PopMatrix(tvbuff_t *tvb _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void mesa_PopMatrix(tvbuff_t *tvb _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void mesa_PushMatrix(tvbuff_t *tvb _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void mesa_PushMatrix(tvbuff_t *tvb _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void mesa_Rotated(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Rotated(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Rotated_angle, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Rotated_angle, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_Rotated_x, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Rotated_x, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_Rotated_y, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Rotated_y, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_Rotated_z, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Rotated_z, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
}
-static void mesa_Rotatef(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Rotatef(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Rotatef_angle, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Rotatef_angle, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Rotatef_x, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Rotatef_x, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Rotatef_y, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Rotatef_y, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Rotatef_z, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Rotatef_z, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_Scaled(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Scaled(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Scaled_x, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Scaled_x, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_Scaled_y, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Scaled_y, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_Scaled_z, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Scaled_z, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
}
-static void mesa_Scalef(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Scalef(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Scalef_x, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Scalef_x, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Scalef_y, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Scalef_y, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Scalef_z, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Scalef_z, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_Translated(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Translated(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Translated_x, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Translated_x, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_Translated_y, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Translated_y, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_Translated_z, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Translated_z, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
}
-static void mesa_Translatef(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Translatef(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Translatef_x, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Translatef_x, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Translatef_y, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Translatef_y, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Translatef_z, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Translatef_z, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_Viewport(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Viewport(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Viewport_x, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Viewport_x, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Viewport_y, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Viewport_y, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Viewport_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Viewport_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Viewport_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Viewport_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_DrawArrays(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_DrawArrays(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_DrawArrays_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_DrawArrays_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_DrawArrays_first, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_DrawArrays_first, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_DrawArrays_count, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_DrawArrays_count, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_PolygonOffset(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_PolygonOffset(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_PolygonOffset_factor, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PolygonOffset_factor, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_PolygonOffset_units, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PolygonOffset_units, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_CopyTexImage1D(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CopyTexImage1D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage1D_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage1D_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage1D_level, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage1D_level, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage1D_internalformat, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage1D_internalformat, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage1D_x, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage1D_x, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage1D_y, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage1D_y, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage1D_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage1D_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage1D_border, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage1D_border, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_CopyTexImage2D(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CopyTexImage2D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage2D_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage2D_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage2D_level, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage2D_level, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage2D_internalformat, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage2D_internalformat, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage2D_x, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage2D_x, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage2D_y, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage2D_y, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage2D_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage2D_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage2D_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage2D_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage2D_border, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexImage2D_border, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_CopyTexSubImage1D(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CopyTexSubImage1D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage1D_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage1D_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage1D_level, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage1D_level, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage1D_xoffset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage1D_xoffset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage1D_x, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage1D_x, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage1D_y, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage1D_y, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage1D_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage1D_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_CopyTexSubImage2D(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CopyTexSubImage2D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage2D_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage2D_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage2D_level, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage2D_level, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage2D_xoffset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage2D_xoffset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage2D_yoffset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage2D_yoffset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage2D_x, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage2D_x, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage2D_y, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage2D_y, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage2D_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage2D_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage2D_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage2D_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_TexSubImage1D(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexSubImage1D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_swapbytes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_swapbytes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_lsbfirst, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_lsbfirst, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_rowlength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_rowlength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_skiprows, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_skiprows, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_skippixels, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_skippixels, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_alignment, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_alignment, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_level, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_level, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_xoffset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_xoffset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_UNUSED, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage1D_UNUSED, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_TexSubImage1D_pixels, (length - 48) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_TexSubImage1D_pixels, (length - 48) / 1, byte_order);
}
-static void mesa_TexSubImage2D(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexSubImage2D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_swapbytes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_swapbytes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_lsbfirst, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_lsbfirst, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_rowlength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_rowlength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_skiprows, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_skiprows, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_skippixels, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_skippixels, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_alignment, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_alignment, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_level, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_level, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_xoffset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_xoffset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_yoffset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_yoffset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_UNUSED, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage2D_UNUSED, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_TexSubImage2D_pixels, (length - 56) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_TexSubImage2D_pixels, (length - 56) / 1, byte_order);
}
-static void mesa_BindTexture(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_BindTexture(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_BindTexture_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_BindTexture_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_BindTexture_texture, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_BindTexture_texture, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_PrioritizeTextures(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_PrioritizeTextures(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int n;
n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_PrioritizeTextures_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PrioritizeTextures_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard32(tvb, offsetp, t, hf_x11_glx_render_PrioritizeTextures_textures, hf_x11_glx_render_PrioritizeTextures_textures_item, n, little_endian);
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_PrioritizeTextures_priorities, hf_x11_glx_render_PrioritizeTextures_priorities_item, n, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_render_PrioritizeTextures_textures, hf_x11_glx_render_PrioritizeTextures_textures_item, n, byte_order);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_PrioritizeTextures_priorities, hf_x11_glx_render_PrioritizeTextures_priorities_item, n, byte_order);
}
-static void mesa_Indexubv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Indexubv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_Indexubv_c, 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_Indexubv_c, 1, byte_order);
}
-static void mesa_BlendColor(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_BlendColor(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_BlendColor_red, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_BlendColor_red, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_BlendColor_green, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_BlendColor_green, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_BlendColor_blue, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_BlendColor_blue, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_BlendColor_alpha, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_BlendColor_alpha, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_BlendEquation(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_BlendEquation(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_BlendEquation_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_BlendEquation_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_ColorTable(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ColorTable(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ColorTable_swapbytes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorTable_swapbytes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- proto_tree_add_item(t, hf_x11_glx_render_ColorTable_lsbfirst, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorTable_lsbfirst, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- proto_tree_add_item(t, hf_x11_glx_render_ColorTable_rowlength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorTable_rowlength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ColorTable_skiprows, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorTable_skiprows, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ColorTable_skippixels, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorTable_skippixels, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ColorTable_alignment, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorTable_alignment, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ColorTable_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorTable_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ColorTable_internalformat, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorTable_internalformat, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ColorTable_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorTable_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ColorTable_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorTable_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ColorTable_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorTable_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_ColorTable_table, (length - 40) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_ColorTable_table, (length - 40) / 1, byte_order);
}
-static void mesa_ColorTableParameterfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ColorTableParameterfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ColorTableParameterfv_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorTableParameterfv_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ColorTableParameterfv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorTableParameterfv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_ColorTableParameterfv_params, hf_x11_glx_render_ColorTableParameterfv_params_item, (length - 8) / 4, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_ColorTableParameterfv_params, hf_x11_glx_render_ColorTableParameterfv_params_item, (length - 8) / 4, byte_order);
}
-static void mesa_ColorTableParameteriv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ColorTableParameteriv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ColorTableParameteriv_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorTableParameteriv_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ColorTableParameteriv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorTableParameteriv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_ColorTableParameteriv_params, hf_x11_glx_render_ColorTableParameteriv_params_item, (length - 8) / 4, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_ColorTableParameteriv_params, hf_x11_glx_render_ColorTableParameteriv_params_item, (length - 8) / 4, byte_order);
}
-static void mesa_CopyColorTable(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CopyColorTable(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_CopyColorTable_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyColorTable_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyColorTable_internalformat, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyColorTable_internalformat, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyColorTable_x, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyColorTable_x, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyColorTable_y, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyColorTable_y, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyColorTable_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyColorTable_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_ColorSubTable(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ColorSubTable(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_swapbytes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_swapbytes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_lsbfirst, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_lsbfirst, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_rowlength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_rowlength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_skiprows, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_skiprows, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_skippixels, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_skippixels, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_alignment, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_alignment, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_start, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_start, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_count, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_count, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ColorSubTable_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_ColorSubTable_data, (length - 40) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_ColorSubTable_data, (length - 40) / 1, byte_order);
}
-static void mesa_CopyColorSubTable(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CopyColorSubTable(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_CopyColorSubTable_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyColorSubTable_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyColorSubTable_start, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyColorSubTable_start, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyColorSubTable_x, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyColorSubTable_x, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyColorSubTable_y, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyColorSubTable_y, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyColorSubTable_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyColorSubTable_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_ConvolutionFilter1D(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ConvolutionFilter1D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_swapbytes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_swapbytes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_lsbfirst, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_lsbfirst, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_rowlength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_rowlength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_skiprows, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_skiprows, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_skippixels, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_skippixels, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_alignment, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_alignment, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_internalformat, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_internalformat, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter1D_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_ConvolutionFilter1D_image, (length - 40) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_ConvolutionFilter1D_image, (length - 40) / 1, byte_order);
}
-static void mesa_ConvolutionFilter2D(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ConvolutionFilter2D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_swapbytes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_swapbytes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_lsbfirst, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_lsbfirst, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_rowlength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_rowlength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_skiprows, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_skiprows, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_skippixels, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_skippixels, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_alignment, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_alignment, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_internalformat, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_internalformat, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionFilter2D_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_ConvolutionFilter2D_image, (length - 44) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_ConvolutionFilter2D_image, (length - 44) / 1, byte_order);
}
-static void mesa_ConvolutionParameterf(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ConvolutionParameterf(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameterf_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameterf_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameterf_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameterf_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameterf_params, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameterf_params, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_ConvolutionParameterfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ConvolutionParameterfv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameterfv_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameterfv_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameterfv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameterfv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_ConvolutionParameterfv_params, hf_x11_glx_render_ConvolutionParameterfv_params_item, (length - 8) / 4, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_ConvolutionParameterfv_params, hf_x11_glx_render_ConvolutionParameterfv_params_item, (length - 8) / 4, byte_order);
}
-static void mesa_ConvolutionParameteri(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ConvolutionParameteri(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameteri_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameteri_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameteri_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameteri_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameteri_params, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameteri_params, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_ConvolutionParameteriv(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ConvolutionParameteriv(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameteriv_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameteriv_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameteriv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ConvolutionParameteriv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_ConvolutionParameteriv_params, hf_x11_glx_render_ConvolutionParameteriv_params_item, (length - 8) / 4, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_ConvolutionParameteriv_params, hf_x11_glx_render_ConvolutionParameteriv_params_item, (length - 8) / 4, byte_order);
}
-static void mesa_CopyConvolutionFilter1D(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CopyConvolutionFilter1D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter1D_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter1D_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter1D_internalformat, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter1D_internalformat, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter1D_x, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter1D_x, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter1D_y, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter1D_y, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter1D_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter1D_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_CopyConvolutionFilter2D(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CopyConvolutionFilter2D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter2D_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter2D_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter2D_internalformat, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter2D_internalformat, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter2D_x, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter2D_x, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter2D_y, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter2D_y, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter2D_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter2D_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter2D_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyConvolutionFilter2D_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_SeparableFilter2D(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_SeparableFilter2D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_SeparableFilter2D_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_SeparableFilter2D_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_SeparableFilter2D_internalformat, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_SeparableFilter2D_internalformat, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_SeparableFilter2D_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_SeparableFilter2D_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_SeparableFilter2D_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_SeparableFilter2D_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_SeparableFilter2D_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_SeparableFilter2D_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_SeparableFilter2D_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_SeparableFilter2D_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_SeparableFilter2D_row, (length - 24) / 1, little_endian);
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_SeparableFilter2D_column, (length - 24) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_SeparableFilter2D_row, (length - 24) / 1, byte_order);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_SeparableFilter2D_column, (length - 24) / 1, byte_order);
}
-static void mesa_Histogram(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Histogram(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Histogram_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Histogram_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Histogram_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Histogram_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Histogram_internalformat, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Histogram_internalformat, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Histogram_sink, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Histogram_sink, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void mesa_Minmax(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_Minmax(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_Minmax_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Minmax_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Minmax_internalformat, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Minmax_internalformat, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_Minmax_sink, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_Minmax_sink, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void mesa_ResetHistogram(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ResetHistogram(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ResetHistogram_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ResetHistogram_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_ResetMinmax(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ResetMinmax(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ResetMinmax_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ResetMinmax_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_TexImage3D(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexImage3D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_swapbytes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_swapbytes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_lsbfirst, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_lsbfirst, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_rowlength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_rowlength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_skiprows, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_skiprows, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_skippixels, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_skippixels, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_alignment, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_alignment, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_level, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_level, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_internalformat, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_internalformat, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_depth, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_depth, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_border, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_border, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage3D_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_TexImage3D_pixels, (length - 56) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_TexImage3D_pixels, (length - 56) / 1, byte_order);
}
-static void mesa_TexSubImage3D(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexSubImage3D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_swapbytes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_swapbytes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_lsbfirst, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_lsbfirst, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_rowlength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_rowlength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_skiprows, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_skiprows, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_skippixels, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_skippixels, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_alignment, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_alignment, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_level, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_level, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_xoffset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_xoffset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_yoffset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_yoffset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_zoffset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_zoffset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_depth, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_depth, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_UNUSED, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage3D_UNUSED, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_TexSubImage3D_pixels, (length - 64) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_TexSubImage3D_pixels, (length - 64) / 1, byte_order);
}
-static void mesa_CopyTexSubImage3D(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CopyTexSubImage3D(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_level, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_level, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_xoffset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_xoffset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_yoffset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_yoffset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_zoffset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_zoffset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_x, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_x, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_y, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_y, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CopyTexSubImage3D_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_ActiveTextureARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ActiveTextureARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ActiveTextureARB_texture, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ActiveTextureARB_texture, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_MultiTexCoord1dvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MultiTexCoord1dvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord1dvARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord1dvARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord1dvARB_v, hf_x11_glx_render_MultiTexCoord1dvARB_v_item, 1, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord1dvARB_v, hf_x11_glx_render_MultiTexCoord1dvARB_v_item, 1, byte_order);
}
-static void mesa_MultiTexCoord1fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MultiTexCoord1fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord1fvARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord1fvARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord1fvARB_v, hf_x11_glx_render_MultiTexCoord1fvARB_v_item, 1, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord1fvARB_v, hf_x11_glx_render_MultiTexCoord1fvARB_v_item, 1, byte_order);
}
-static void mesa_MultiTexCoord1ivARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MultiTexCoord1ivARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord1ivARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord1ivARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord1ivARB_v, hf_x11_glx_render_MultiTexCoord1ivARB_v_item, 1, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord1ivARB_v, hf_x11_glx_render_MultiTexCoord1ivARB_v_item, 1, byte_order);
}
-static void mesa_MultiTexCoord1svARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MultiTexCoord1svARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord1svARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord1svARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord1svARB_v, hf_x11_glx_render_MultiTexCoord1svARB_v_item, 1, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord1svARB_v, hf_x11_glx_render_MultiTexCoord1svARB_v_item, 1, byte_order);
}
-static void mesa_MultiTexCoord2dvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MultiTexCoord2dvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord2dvARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord2dvARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord2dvARB_v, hf_x11_glx_render_MultiTexCoord2dvARB_v_item, 2, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord2dvARB_v, hf_x11_glx_render_MultiTexCoord2dvARB_v_item, 2, byte_order);
}
-static void mesa_MultiTexCoord2fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MultiTexCoord2fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord2fvARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord2fvARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord2fvARB_v, hf_x11_glx_render_MultiTexCoord2fvARB_v_item, 2, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord2fvARB_v, hf_x11_glx_render_MultiTexCoord2fvARB_v_item, 2, byte_order);
}
-static void mesa_MultiTexCoord2ivARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MultiTexCoord2ivARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord2ivARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord2ivARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord2ivARB_v, hf_x11_glx_render_MultiTexCoord2ivARB_v_item, 2, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord2ivARB_v, hf_x11_glx_render_MultiTexCoord2ivARB_v_item, 2, byte_order);
}
-static void mesa_MultiTexCoord2svARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MultiTexCoord2svARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord2svARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord2svARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord2svARB_v, hf_x11_glx_render_MultiTexCoord2svARB_v_item, 2, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord2svARB_v, hf_x11_glx_render_MultiTexCoord2svARB_v_item, 2, byte_order);
}
-static void mesa_MultiTexCoord3dvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MultiTexCoord3dvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord3dvARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord3dvARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord3dvARB_v, hf_x11_glx_render_MultiTexCoord3dvARB_v_item, 3, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord3dvARB_v, hf_x11_glx_render_MultiTexCoord3dvARB_v_item, 3, byte_order);
}
-static void mesa_MultiTexCoord3fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MultiTexCoord3fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord3fvARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord3fvARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord3fvARB_v, hf_x11_glx_render_MultiTexCoord3fvARB_v_item, 3, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord3fvARB_v, hf_x11_glx_render_MultiTexCoord3fvARB_v_item, 3, byte_order);
}
-static void mesa_MultiTexCoord3ivARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MultiTexCoord3ivARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord3ivARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord3ivARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord3ivARB_v, hf_x11_glx_render_MultiTexCoord3ivARB_v_item, 3, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord3ivARB_v, hf_x11_glx_render_MultiTexCoord3ivARB_v_item, 3, byte_order);
}
-static void mesa_MultiTexCoord3svARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MultiTexCoord3svARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord3svARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord3svARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord3svARB_v, hf_x11_glx_render_MultiTexCoord3svARB_v_item, 3, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord3svARB_v, hf_x11_glx_render_MultiTexCoord3svARB_v_item, 3, byte_order);
}
-static void mesa_MultiTexCoord4dvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MultiTexCoord4dvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord4dvARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord4dvARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord4dvARB_v, hf_x11_glx_render_MultiTexCoord4dvARB_v_item, 4, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord4dvARB_v, hf_x11_glx_render_MultiTexCoord4dvARB_v_item, 4, byte_order);
}
-static void mesa_MultiTexCoord4fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MultiTexCoord4fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord4fvARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord4fvARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord4fvARB_v, hf_x11_glx_render_MultiTexCoord4fvARB_v_item, 4, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord4fvARB_v, hf_x11_glx_render_MultiTexCoord4fvARB_v_item, 4, byte_order);
}
-static void mesa_MultiTexCoord4ivARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MultiTexCoord4ivARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord4ivARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord4ivARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord4ivARB_v, hf_x11_glx_render_MultiTexCoord4ivARB_v_item, 4, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord4ivARB_v, hf_x11_glx_render_MultiTexCoord4ivARB_v_item, 4, byte_order);
}
-static void mesa_MultiTexCoord4svARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MultiTexCoord4svARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord4svARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MultiTexCoord4svARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord4svARB_v, hf_x11_glx_render_MultiTexCoord4svARB_v_item, 4, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_MultiTexCoord4svARB_v, hf_x11_glx_render_MultiTexCoord4svARB_v_item, 4, byte_order);
}
-static void mesa_SampleCoverageARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_SampleCoverageARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_SampleCoverageARB_value, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_SampleCoverageARB_value, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_SampleCoverageARB_invert, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_SampleCoverageARB_invert, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void mesa_CompressedTexImage3DARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CompressedTexImage3DARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int imageSize;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage3DARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage3DARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage3DARB_level, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage3DARB_level, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage3DARB_internalformat, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage3DARB_internalformat, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage3DARB_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage3DARB_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage3DARB_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage3DARB_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage3DARB_depth, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage3DARB_depth, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage3DARB_border, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage3DARB_border, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
imageSize = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage3DARB_imageSize, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage3DARB_imageSize, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_CompressedTexImage3DARB_data, imageSize, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_CompressedTexImage3DARB_data, imageSize, byte_order);
}
-static void mesa_CompressedTexImage2DARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CompressedTexImage2DARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int imageSize;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage2DARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage2DARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage2DARB_level, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage2DARB_level, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage2DARB_internalformat, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage2DARB_internalformat, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage2DARB_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage2DARB_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage2DARB_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage2DARB_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage2DARB_border, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage2DARB_border, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
imageSize = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage2DARB_imageSize, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage2DARB_imageSize, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_CompressedTexImage2DARB_data, imageSize, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_CompressedTexImage2DARB_data, imageSize, byte_order);
}
-static void mesa_CompressedTexImage1DARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CompressedTexImage1DARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int imageSize;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage1DARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage1DARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage1DARB_level, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage1DARB_level, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage1DARB_internalformat, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage1DARB_internalformat, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage1DARB_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage1DARB_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage1DARB_border, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage1DARB_border, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
imageSize = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage1DARB_imageSize, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexImage1DARB_imageSize, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_CompressedTexImage1DARB_data, imageSize, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_CompressedTexImage1DARB_data, imageSize, byte_order);
}
-static void mesa_CompressedTexSubImage3DARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CompressedTexSubImage3DARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int imageSize;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3DARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3DARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3DARB_level, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3DARB_level, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3DARB_xoffset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3DARB_xoffset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3DARB_yoffset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3DARB_yoffset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3DARB_zoffset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3DARB_zoffset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3DARB_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3DARB_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3DARB_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3DARB_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3DARB_depth, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3DARB_depth, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3DARB_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3DARB_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
imageSize = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3DARB_imageSize, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage3DARB_imageSize, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_CompressedTexSubImage3DARB_data, imageSize, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_CompressedTexSubImage3DARB_data, imageSize, byte_order);
}
-static void mesa_CompressedTexSubImage2DARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CompressedTexSubImage2DARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int imageSize;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage2DARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage2DARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage2DARB_level, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage2DARB_level, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage2DARB_xoffset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage2DARB_xoffset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage2DARB_yoffset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage2DARB_yoffset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage2DARB_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage2DARB_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage2DARB_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage2DARB_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage2DARB_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage2DARB_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
imageSize = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage2DARB_imageSize, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage2DARB_imageSize, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_CompressedTexSubImage2DARB_data, imageSize, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_CompressedTexSubImage2DARB_data, imageSize, byte_order);
}
-static void mesa_CompressedTexSubImage1DARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CompressedTexSubImage1DARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int imageSize;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage1DARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage1DARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage1DARB_level, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage1DARB_level, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage1DARB_xoffset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage1DARB_xoffset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage1DARB_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage1DARB_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage1DARB_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage1DARB_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
imageSize = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage1DARB_imageSize, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CompressedTexSubImage1DARB_imageSize, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_CompressedTexSubImage1DARB_data, imageSize, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_CompressedTexSubImage1DARB_data, imageSize, byte_order);
}
-static void mesa_CurrentPaletteMatrixARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CurrentPaletteMatrixARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_CurrentPaletteMatrixARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CurrentPaletteMatrixARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_MatrixIndexubvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MatrixIndexubvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int size;
size = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_MatrixIndexubvARB_size, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MatrixIndexubvARB_size, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_MatrixIndexubvARB_indices, size, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_MatrixIndexubvARB_indices, size, byte_order);
}
-static void mesa_MatrixIndexusvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MatrixIndexusvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int size;
size = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_MatrixIndexusvARB_size, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MatrixIndexusvARB_size, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard16(tvb, offsetp, t, hf_x11_glx_render_MatrixIndexusvARB_indices, hf_x11_glx_render_MatrixIndexusvARB_indices_item, size, little_endian);
+ listOfCard16(tvb, offsetp, t, hf_x11_glx_render_MatrixIndexusvARB_indices, hf_x11_glx_render_MatrixIndexusvARB_indices_item, size, byte_order);
}
-static void mesa_MatrixIndexuivARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_MatrixIndexuivARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int size;
size = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_MatrixIndexuivARB_size, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_MatrixIndexuivARB_size, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard32(tvb, offsetp, t, hf_x11_glx_render_MatrixIndexuivARB_indices, hf_x11_glx_render_MatrixIndexuivARB_indices_item, size, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_render_MatrixIndexuivARB_indices, hf_x11_glx_render_MatrixIndexuivARB_indices_item, size, byte_order);
}
-static void mesa_VertexAttrib1dvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib1dvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib1dvARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib1dvARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib1dvARB_v, hf_x11_glx_render_VertexAttrib1dvARB_v_item, 1, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib1dvARB_v, hf_x11_glx_render_VertexAttrib1dvARB_v_item, 1, byte_order);
}
-static void mesa_VertexAttrib1fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib1fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib1fvARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib1fvARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib1fvARB_v, hf_x11_glx_render_VertexAttrib1fvARB_v_item, 1, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib1fvARB_v, hf_x11_glx_render_VertexAttrib1fvARB_v_item, 1, byte_order);
}
-static void mesa_VertexAttrib1svARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib1svARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib1svARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib1svARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib1svARB_v, hf_x11_glx_render_VertexAttrib1svARB_v_item, 1, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib1svARB_v, hf_x11_glx_render_VertexAttrib1svARB_v_item, 1, byte_order);
}
-static void mesa_VertexAttrib2dvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib2dvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib2dvARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib2dvARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib2dvARB_v, hf_x11_glx_render_VertexAttrib2dvARB_v_item, 2, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib2dvARB_v, hf_x11_glx_render_VertexAttrib2dvARB_v_item, 2, byte_order);
}
-static void mesa_VertexAttrib2fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib2fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib2fvARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib2fvARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib2fvARB_v, hf_x11_glx_render_VertexAttrib2fvARB_v_item, 2, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib2fvARB_v, hf_x11_glx_render_VertexAttrib2fvARB_v_item, 2, byte_order);
}
-static void mesa_VertexAttrib2svARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib2svARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib2svARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib2svARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib2svARB_v, hf_x11_glx_render_VertexAttrib2svARB_v_item, 2, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib2svARB_v, hf_x11_glx_render_VertexAttrib2svARB_v_item, 2, byte_order);
}
-static void mesa_VertexAttrib3dvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib3dvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib3dvARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib3dvARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib3dvARB_v, hf_x11_glx_render_VertexAttrib3dvARB_v_item, 3, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib3dvARB_v, hf_x11_glx_render_VertexAttrib3dvARB_v_item, 3, byte_order);
}
-static void mesa_VertexAttrib3fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib3fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib3fvARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib3fvARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib3fvARB_v, hf_x11_glx_render_VertexAttrib3fvARB_v_item, 3, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib3fvARB_v, hf_x11_glx_render_VertexAttrib3fvARB_v_item, 3, byte_order);
}
-static void mesa_VertexAttrib3svARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib3svARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib3svARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib3svARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib3svARB_v, hf_x11_glx_render_VertexAttrib3svARB_v_item, 3, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib3svARB_v, hf_x11_glx_render_VertexAttrib3svARB_v_item, 3, byte_order);
}
-static void mesa_VertexAttrib4dvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib4dvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4dvARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4dvARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4dvARB_v, hf_x11_glx_render_VertexAttrib4dvARB_v_item, 4, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4dvARB_v, hf_x11_glx_render_VertexAttrib4dvARB_v_item, 4, byte_order);
}
-static void mesa_VertexAttrib4fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib4fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4fvARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4fvARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4fvARB_v, hf_x11_glx_render_VertexAttrib4fvARB_v_item, 4, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4fvARB_v, hf_x11_glx_render_VertexAttrib4fvARB_v_item, 4, byte_order);
}
-static void mesa_VertexAttrib4svARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib4svARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4svARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4svARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4svARB_v, hf_x11_glx_render_VertexAttrib4svARB_v_item, 4, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4svARB_v, hf_x11_glx_render_VertexAttrib4svARB_v_item, 4, byte_order);
}
-static void mesa_VertexAttrib4NubvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib4NubvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4NubvARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4NubvARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4NubvARB_v, 4, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4NubvARB_v, 4, byte_order);
}
-static void mesa_VertexAttrib4bvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib4bvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4bvARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4bvARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4bvARB_v, 4, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4bvARB_v, 4, byte_order);
}
-static void mesa_VertexAttrib4ivARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib4ivARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4ivARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4ivARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4ivARB_v, hf_x11_glx_render_VertexAttrib4ivARB_v_item, 4, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4ivARB_v, hf_x11_glx_render_VertexAttrib4ivARB_v_item, 4, byte_order);
}
-static void mesa_VertexAttrib4ubvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib4ubvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4ubvARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4ubvARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4ubvARB_v, 4, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4ubvARB_v, 4, byte_order);
}
-static void mesa_VertexAttrib4usvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib4usvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4usvARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4usvARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4usvARB_v, hf_x11_glx_render_VertexAttrib4usvARB_v_item, 4, little_endian);
+ listOfCard16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4usvARB_v, hf_x11_glx_render_VertexAttrib4usvARB_v_item, 4, byte_order);
}
-static void mesa_VertexAttrib4uivARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib4uivARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4uivARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4uivARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard32(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4uivARB_v, hf_x11_glx_render_VertexAttrib4uivARB_v_item, 4, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4uivARB_v, hf_x11_glx_render_VertexAttrib4uivARB_v_item, 4, byte_order);
}
-static void mesa_VertexAttrib4NbvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib4NbvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4NbvARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4NbvARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4NbvARB_v, 4, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4NbvARB_v, 4, byte_order);
}
-static void mesa_VertexAttrib4NsvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib4NsvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4NsvARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4NsvARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4NsvARB_v, hf_x11_glx_render_VertexAttrib4NsvARB_v_item, 4, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4NsvARB_v, hf_x11_glx_render_VertexAttrib4NsvARB_v_item, 4, byte_order);
}
-static void mesa_VertexAttrib4NivARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib4NivARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4NivARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4NivARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4NivARB_v, hf_x11_glx_render_VertexAttrib4NivARB_v_item, 4, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4NivARB_v, hf_x11_glx_render_VertexAttrib4NivARB_v_item, 4, byte_order);
}
-static void mesa_VertexAttrib4NusvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib4NusvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4NusvARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4NusvARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4NusvARB_v, hf_x11_glx_render_VertexAttrib4NusvARB_v_item, 4, little_endian);
+ listOfCard16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4NusvARB_v, hf_x11_glx_render_VertexAttrib4NusvARB_v_item, 4, byte_order);
}
-static void mesa_VertexAttrib4NuivARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib4NuivARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4NuivARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4NuivARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard32(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4NuivARB_v, hf_x11_glx_render_VertexAttrib4NuivARB_v_item, 4, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4NuivARB_v, hf_x11_glx_render_VertexAttrib4NuivARB_v_item, 4, byte_order);
}
-static void mesa_ProgramStringARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ProgramStringARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int len;
- proto_tree_add_item(t, hf_x11_glx_render_ProgramStringARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ProgramStringARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ProgramStringARB_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ProgramStringARB_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_ProgramStringARB_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ProgramStringARB_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_ProgramStringARB_string, len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_ProgramStringARB_string, len, byte_order);
}
-static void mesa_ProgramEnvParameter4dvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ProgramEnvParameter4dvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ProgramEnvParameter4dvARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ProgramEnvParameter4dvARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ProgramEnvParameter4dvARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ProgramEnvParameter4dvARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_ProgramEnvParameter4dvARB_params, hf_x11_glx_render_ProgramEnvParameter4dvARB_params_item, 4, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_ProgramEnvParameter4dvARB_params, hf_x11_glx_render_ProgramEnvParameter4dvARB_params_item, 4, byte_order);
}
-static void mesa_ProgramEnvParameter4fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ProgramEnvParameter4fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ProgramEnvParameter4fvARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ProgramEnvParameter4fvARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ProgramEnvParameter4fvARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ProgramEnvParameter4fvARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_ProgramEnvParameter4fvARB_params, hf_x11_glx_render_ProgramEnvParameter4fvARB_params_item, 4, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_ProgramEnvParameter4fvARB_params, hf_x11_glx_render_ProgramEnvParameter4fvARB_params_item, 4, byte_order);
}
-static void mesa_ProgramLocalParameter4dvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ProgramLocalParameter4dvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ProgramLocalParameter4dvARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ProgramLocalParameter4dvARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ProgramLocalParameter4dvARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ProgramLocalParameter4dvARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_ProgramLocalParameter4dvARB_params, hf_x11_glx_render_ProgramLocalParameter4dvARB_params_item, 4, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_ProgramLocalParameter4dvARB_params, hf_x11_glx_render_ProgramLocalParameter4dvARB_params_item, 4, byte_order);
}
-static void mesa_ProgramLocalParameter4fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ProgramLocalParameter4fvARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ProgramLocalParameter4fvARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ProgramLocalParameter4fvARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ProgramLocalParameter4fvARB_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ProgramLocalParameter4fvARB_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_ProgramLocalParameter4fvARB_params, hf_x11_glx_render_ProgramLocalParameter4fvARB_params_item, 4, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_ProgramLocalParameter4fvARB_params, hf_x11_glx_render_ProgramLocalParameter4fvARB_params_item, 4, byte_order);
}
-static void mesa_BeginQueryARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_BeginQueryARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_BeginQueryARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_BeginQueryARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_BeginQueryARB_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_BeginQueryARB_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_EndQueryARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_EndQueryARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_EndQueryARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_EndQueryARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_DrawBuffersARB(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_PolygonOffsetEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- int n;
- n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_DrawBuffersARB_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PolygonOffsetEXT_factor, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard32(tvb, offsetp, t, hf_x11_glx_render_DrawBuffersARB_bufs, hf_x11_glx_render_DrawBuffersARB_bufs_item, n, little_endian);
-}
-
-static void mesa_PolygonOffsetEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
-{
- proto_tree_add_item(t, hf_x11_glx_render_PolygonOffsetEXT_factor, tvb, *offsetp, 4, little_endian);
- *offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_PolygonOffsetEXT_bias, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PolygonOffsetEXT_bias, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_TexFilterFuncSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexFilterFuncSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int n;
- proto_tree_add_item(t, hf_x11_glx_render_TexFilterFuncSGIS_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexFilterFuncSGIS_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexFilterFuncSGIS_filter, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexFilterFuncSGIS_filter, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_TexFilterFuncSGIS_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexFilterFuncSGIS_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_TexFilterFuncSGIS_weights, hf_x11_glx_render_TexFilterFuncSGIS_weights_item, n, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_TexFilterFuncSGIS_weights, hf_x11_glx_render_TexFilterFuncSGIS_weights_item, n, byte_order);
}
-static void mesa_TexImage4DSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexImage4DSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_swapbytes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_swapbytes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_lsbfirst, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_lsbfirst, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_rowlength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_rowlength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_skiprows, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_skiprows, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_skippixels, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_skippixels, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_alignment, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_alignment, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_level, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_level, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_internalformat, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_internalformat, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_depth, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_depth, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_size4d, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_size4d, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_border, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_border, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexImage4DSGIS_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_TexImage4DSGIS_pixels, (length - 60) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_TexImage4DSGIS_pixels, (length - 60) / 1, byte_order);
}
-static void mesa_TexSubImage4DSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TexSubImage4DSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_swapbytes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_swapbytes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_lsbfirst, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_lsbfirst, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_rowlength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_rowlength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_skiprows, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_skiprows, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_skippixels, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_skippixels, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_alignment, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_alignment, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_level, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_level, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_xoffset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_xoffset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_yoffset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_yoffset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_zoffset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_zoffset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_woffset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_woffset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_depth, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_depth, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_size4d, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_size4d, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_UNUSED, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TexSubImage4DSGIS_UNUSED, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_TexSubImage4DSGIS_pixels, (length - 72) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_TexSubImage4DSGIS_pixels, (length - 72) / 1, byte_order);
}
-static void mesa_DetailTexFuncSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_DetailTexFuncSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int n;
- proto_tree_add_item(t, hf_x11_glx_render_DetailTexFuncSGIS_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_DetailTexFuncSGIS_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_DetailTexFuncSGIS_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_DetailTexFuncSGIS_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_DetailTexFuncSGIS_points, hf_x11_glx_render_DetailTexFuncSGIS_points_item, n, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_DetailTexFuncSGIS_points, hf_x11_glx_render_DetailTexFuncSGIS_points_item, n, byte_order);
}
-static void mesa_SharpenTexFuncSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_SharpenTexFuncSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int n;
- proto_tree_add_item(t, hf_x11_glx_render_SharpenTexFuncSGIS_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_SharpenTexFuncSGIS_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_SharpenTexFuncSGIS_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_SharpenTexFuncSGIS_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_SharpenTexFuncSGIS_points, hf_x11_glx_render_SharpenTexFuncSGIS_points_item, n, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_SharpenTexFuncSGIS_points, hf_x11_glx_render_SharpenTexFuncSGIS_points_item, n, byte_order);
}
-static void mesa_SampleMaskSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_SampleMaskSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_SampleMaskSGIS_value, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_SampleMaskSGIS_value, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_SampleMaskSGIS_invert, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_SampleMaskSGIS_invert, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void mesa_SamplePatternSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_SamplePatternSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_SamplePatternSGIS_pattern, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_SamplePatternSGIS_pattern, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_PointParameterfEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_PointParameterfEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_PointParameterfEXT_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PointParameterfEXT_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_PointParameterfEXT_param, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PointParameterfEXT_param, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_PointParameterfvEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_PointParameterfvEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_PointParameterfvEXT_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PointParameterfvEXT_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_PointParameterfvEXT_params, hf_x11_glx_render_PointParameterfvEXT_params_item, (length - 4) / 4, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_PointParameterfvEXT_params, hf_x11_glx_render_PointParameterfvEXT_params_item, (length - 4) / 4, byte_order);
}
-static void mesa_FrameZoomSGIX(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_FrameZoomSGIX(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_FrameZoomSGIX_factor, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_FrameZoomSGIX_factor, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_TagSampleBufferSGIX(tvbuff_t *tvb _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void mesa_TagSampleBufferSGIX(tvbuff_t *tvb _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void mesa_ReferencePlaneSGIX(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ReferencePlaneSGIX(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_ReferencePlaneSGIX_equation, hf_x11_glx_render_ReferencePlaneSGIX_equation_item, 4, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_ReferencePlaneSGIX_equation, hf_x11_glx_render_ReferencePlaneSGIX_equation_item, 4, byte_order);
}
-static void mesa_FogFuncSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_FogFuncSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int n;
n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_FogFuncSGIS_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_FogFuncSGIS_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_FogFuncSGIS_points, hf_x11_glx_render_FogFuncSGIS_points_item, n, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_FogFuncSGIS_points, hf_x11_glx_render_FogFuncSGIS_points_item, n, byte_order);
}
-static void mesa_SecondaryColor3bvEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_SecondaryColor3bvEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_SecondaryColor3bvEXT_v, 3, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_SecondaryColor3bvEXT_v, 3, byte_order);
}
-static void mesa_SecondaryColor3dvEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_SecondaryColor3dvEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_SecondaryColor3dvEXT_v, hf_x11_glx_render_SecondaryColor3dvEXT_v_item, 3, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_SecondaryColor3dvEXT_v, hf_x11_glx_render_SecondaryColor3dvEXT_v_item, 3, byte_order);
}
-static void mesa_SecondaryColor3fvEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_SecondaryColor3fvEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_SecondaryColor3fvEXT_v, hf_x11_glx_render_SecondaryColor3fvEXT_v_item, 3, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_SecondaryColor3fvEXT_v, hf_x11_glx_render_SecondaryColor3fvEXT_v_item, 3, byte_order);
}
-static void mesa_SecondaryColor3ivEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_SecondaryColor3ivEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_SecondaryColor3ivEXT_v, hf_x11_glx_render_SecondaryColor3ivEXT_v_item, 3, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_SecondaryColor3ivEXT_v, hf_x11_glx_render_SecondaryColor3ivEXT_v_item, 3, byte_order);
}
-static void mesa_SecondaryColor3svEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_SecondaryColor3svEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_SecondaryColor3svEXT_v, hf_x11_glx_render_SecondaryColor3svEXT_v_item, 3, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_SecondaryColor3svEXT_v, hf_x11_glx_render_SecondaryColor3svEXT_v_item, 3, byte_order);
}
-static void mesa_SecondaryColor3ubvEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_SecondaryColor3ubvEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_SecondaryColor3ubvEXT_v, 3, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_SecondaryColor3ubvEXT_v, 3, byte_order);
}
-static void mesa_SecondaryColor3uivEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_SecondaryColor3uivEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfCard32(tvb, offsetp, t, hf_x11_glx_render_SecondaryColor3uivEXT_v, hf_x11_glx_render_SecondaryColor3uivEXT_v_item, 3, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_render_SecondaryColor3uivEXT_v, hf_x11_glx_render_SecondaryColor3uivEXT_v_item, 3, byte_order);
}
-static void mesa_SecondaryColor3usvEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_SecondaryColor3usvEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfCard16(tvb, offsetp, t, hf_x11_glx_render_SecondaryColor3usvEXT_v, hf_x11_glx_render_SecondaryColor3usvEXT_v_item, 3, little_endian);
+ listOfCard16(tvb, offsetp, t, hf_x11_glx_render_SecondaryColor3usvEXT_v, hf_x11_glx_render_SecondaryColor3usvEXT_v_item, 3, byte_order);
}
-static void mesa_FogCoordfvEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_FogCoordfvEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_FogCoordfvEXT_coord, hf_x11_glx_render_FogCoordfvEXT_coord_item, 1, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_FogCoordfvEXT_coord, hf_x11_glx_render_FogCoordfvEXT_coord_item, 1, byte_order);
}
-static void mesa_FogCoorddvEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_FogCoorddvEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_FogCoorddvEXT_coord, hf_x11_glx_render_FogCoorddvEXT_coord_item, 1, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_FogCoorddvEXT_coord, hf_x11_glx_render_FogCoorddvEXT_coord_item, 1, byte_order);
}
-static void mesa_PixelTexGenSGIX(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_PixelTexGenSGIX(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_PixelTexGenSGIX_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PixelTexGenSGIX_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_BlendFuncSeparateEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_BlendFuncSeparateEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_BlendFuncSeparateEXT_sfactorRGB, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_BlendFuncSeparateEXT_sfactorRGB, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_BlendFuncSeparateEXT_dfactorRGB, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_BlendFuncSeparateEXT_dfactorRGB, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_BlendFuncSeparateEXT_sfactorAlpha, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_BlendFuncSeparateEXT_sfactorAlpha, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_BlendFuncSeparateEXT_dfactorAlpha, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_BlendFuncSeparateEXT_dfactorAlpha, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_VertexWeightfvEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexWeightfvEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexWeightfvEXT_weight, hf_x11_glx_render_VertexWeightfvEXT_weight_item, 1, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexWeightfvEXT_weight, hf_x11_glx_render_VertexWeightfvEXT_weight_item, 1, byte_order);
}
-static void mesa_CombinerParameterfvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CombinerParameterfvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_CombinerParameterfvNV_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CombinerParameterfvNV_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_CombinerParameterfvNV_params, hf_x11_glx_render_CombinerParameterfvNV_params_item, (length - 4) / 4, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_CombinerParameterfvNV_params, hf_x11_glx_render_CombinerParameterfvNV_params_item, (length - 4) / 4, byte_order);
}
-static void mesa_CombinerParameterfNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CombinerParameterfNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_CombinerParameterfNV_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CombinerParameterfNV_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CombinerParameterfNV_param, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CombinerParameterfNV_param, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_CombinerParameterivNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CombinerParameterivNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_CombinerParameterivNV_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CombinerParameterivNV_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_CombinerParameterivNV_params, hf_x11_glx_render_CombinerParameterivNV_params_item, (length - 4) / 4, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_CombinerParameterivNV_params, hf_x11_glx_render_CombinerParameterivNV_params_item, (length - 4) / 4, byte_order);
}
-static void mesa_CombinerParameteriNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CombinerParameteriNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_CombinerParameteriNV_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CombinerParameteriNV_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CombinerParameteriNV_param, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CombinerParameteriNV_param, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_CombinerInputNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CombinerInputNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_CombinerInputNV_stage, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CombinerInputNV_stage, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CombinerInputNV_portion, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CombinerInputNV_portion, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CombinerInputNV_variable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CombinerInputNV_variable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CombinerInputNV_input, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CombinerInputNV_input, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CombinerInputNV_mapping, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CombinerInputNV_mapping, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CombinerInputNV_componentUsage, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CombinerInputNV_componentUsage, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_CombinerOutputNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_CombinerOutputNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_stage, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_stage, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_portion, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_portion, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_abOutput, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_abOutput, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_cdOutput, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_cdOutput, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_sumOutput, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_sumOutput, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_scale, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_scale, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_bias, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_bias, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_abDotProduct, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_abDotProduct, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_cdDotProduct, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_cdDotProduct, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_muxSum, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_CombinerOutputNV_muxSum, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void mesa_FinalCombinerInputNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_FinalCombinerInputNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_FinalCombinerInputNV_variable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_FinalCombinerInputNV_variable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_FinalCombinerInputNV_input, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_FinalCombinerInputNV_input, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_FinalCombinerInputNV_mapping, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_FinalCombinerInputNV_mapping, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_FinalCombinerInputNV_componentUsage, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_FinalCombinerInputNV_componentUsage, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_WindowPos3fvMESA(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_WindowPos3fvMESA(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_WindowPos3fvMESA_v, hf_x11_glx_render_WindowPos3fvMESA_v_item, 3, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_WindowPos3fvMESA_v, hf_x11_glx_render_WindowPos3fvMESA_v_item, 3, byte_order);
}
-static void mesa_TextureColorMaskSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TextureColorMaskSGIS(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_TextureColorMaskSGIS_red, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TextureColorMaskSGIS_red, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- proto_tree_add_item(t, hf_x11_glx_render_TextureColorMaskSGIS_green, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TextureColorMaskSGIS_green, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- proto_tree_add_item(t, hf_x11_glx_render_TextureColorMaskSGIS_blue, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TextureColorMaskSGIS_blue, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- proto_tree_add_item(t, hf_x11_glx_render_TextureColorMaskSGIS_alpha, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TextureColorMaskSGIS_alpha, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void mesa_BindProgramNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_BindProgramNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_BindProgramNV_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_BindProgramNV_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_BindProgramNV_program, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_BindProgramNV_program, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_ExecuteProgramNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ExecuteProgramNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ExecuteProgramNV_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ExecuteProgramNV_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ExecuteProgramNV_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ExecuteProgramNV_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_ExecuteProgramNV_params, hf_x11_glx_render_ExecuteProgramNV_params_item, 4, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_ExecuteProgramNV_params, hf_x11_glx_render_ExecuteProgramNV_params_item, 4, byte_order);
}
-static void mesa_LoadProgramNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_LoadProgramNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int len;
- proto_tree_add_item(t, hf_x11_glx_render_LoadProgramNV_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_LoadProgramNV_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_LoadProgramNV_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_LoadProgramNV_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_LoadProgramNV_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_LoadProgramNV_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_LoadProgramNV_program, len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_LoadProgramNV_program, len, byte_order);
}
-static void mesa_ProgramParameters4dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ProgramParameters4dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int num;
- proto_tree_add_item(t, hf_x11_glx_render_ProgramParameters4dvNV_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ProgramParameters4dvNV_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ProgramParameters4dvNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ProgramParameters4dvNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
num = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_ProgramParameters4dvNV_num, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ProgramParameters4dvNV_num, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_ProgramParameters4dvNV_params, hf_x11_glx_render_ProgramParameters4dvNV_params_item, num, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_ProgramParameters4dvNV_params, hf_x11_glx_render_ProgramParameters4dvNV_params_item, num, byte_order);
}
-static void mesa_ProgramParameters4fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ProgramParameters4fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int num;
- proto_tree_add_item(t, hf_x11_glx_render_ProgramParameters4fvNV_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ProgramParameters4fvNV_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_ProgramParameters4fvNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ProgramParameters4fvNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
num = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_ProgramParameters4fvNV_num, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ProgramParameters4fvNV_num, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_ProgramParameters4fvNV_params, hf_x11_glx_render_ProgramParameters4fvNV_params_item, num, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_ProgramParameters4fvNV_params, hf_x11_glx_render_ProgramParameters4fvNV_params_item, num, byte_order);
}
-static void mesa_RequestResidentProgramsNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_RequestResidentProgramsNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int n;
n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_RequestResidentProgramsNV_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_RequestResidentProgramsNV_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard32(tvb, offsetp, t, hf_x11_glx_render_RequestResidentProgramsNV_ids, hf_x11_glx_render_RequestResidentProgramsNV_ids_item, n, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_render_RequestResidentProgramsNV_ids, hf_x11_glx_render_RequestResidentProgramsNV_ids_item, n, byte_order);
}
-static void mesa_TrackMatrixNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_TrackMatrixNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_TrackMatrixNV_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TrackMatrixNV_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TrackMatrixNV_address, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TrackMatrixNV_address, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TrackMatrixNV_matrix, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TrackMatrixNV_matrix, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_TrackMatrixNV_transform, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_TrackMatrixNV_transform, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_VertexAttrib1svNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib1svNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib1svNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib1svNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib1svNV_v, hf_x11_glx_render_VertexAttrib1svNV_v_item, 1, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib1svNV_v, hf_x11_glx_render_VertexAttrib1svNV_v_item, 1, byte_order);
}
-static void mesa_VertexAttrib2svNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib2svNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib2svNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib2svNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib2svNV_v, hf_x11_glx_render_VertexAttrib2svNV_v_item, 2, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib2svNV_v, hf_x11_glx_render_VertexAttrib2svNV_v_item, 2, byte_order);
}
-static void mesa_VertexAttrib3svNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib3svNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib3svNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib3svNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib3svNV_v, hf_x11_glx_render_VertexAttrib3svNV_v_item, 3, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib3svNV_v, hf_x11_glx_render_VertexAttrib3svNV_v_item, 3, byte_order);
}
-static void mesa_VertexAttrib4svNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib4svNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4svNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4svNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4svNV_v, hf_x11_glx_render_VertexAttrib4svNV_v_item, 4, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4svNV_v, hf_x11_glx_render_VertexAttrib4svNV_v_item, 4, byte_order);
}
-static void mesa_VertexAttrib1fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib1fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib1fvNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib1fvNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib1fvNV_v, hf_x11_glx_render_VertexAttrib1fvNV_v_item, 1, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib1fvNV_v, hf_x11_glx_render_VertexAttrib1fvNV_v_item, 1, byte_order);
}
-static void mesa_VertexAttrib2fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib2fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib2fvNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib2fvNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib2fvNV_v, hf_x11_glx_render_VertexAttrib2fvNV_v_item, 2, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib2fvNV_v, hf_x11_glx_render_VertexAttrib2fvNV_v_item, 2, byte_order);
}
-static void mesa_VertexAttrib3fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib3fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib3fvNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib3fvNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib3fvNV_v, hf_x11_glx_render_VertexAttrib3fvNV_v_item, 3, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib3fvNV_v, hf_x11_glx_render_VertexAttrib3fvNV_v_item, 3, byte_order);
}
-static void mesa_VertexAttrib4fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib4fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4fvNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4fvNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4fvNV_v, hf_x11_glx_render_VertexAttrib4fvNV_v_item, 4, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4fvNV_v, hf_x11_glx_render_VertexAttrib4fvNV_v_item, 4, byte_order);
}
-static void mesa_VertexAttrib1dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib1dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib1dvNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib1dvNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib1dvNV_v, hf_x11_glx_render_VertexAttrib1dvNV_v_item, 1, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib1dvNV_v, hf_x11_glx_render_VertexAttrib1dvNV_v_item, 1, byte_order);
}
-static void mesa_VertexAttrib2dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib2dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib2dvNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib2dvNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib2dvNV_v, hf_x11_glx_render_VertexAttrib2dvNV_v_item, 2, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib2dvNV_v, hf_x11_glx_render_VertexAttrib2dvNV_v_item, 2, byte_order);
}
-static void mesa_VertexAttrib3dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib3dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib3dvNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib3dvNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib3dvNV_v, hf_x11_glx_render_VertexAttrib3dvNV_v_item, 3, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib3dvNV_v, hf_x11_glx_render_VertexAttrib3dvNV_v_item, 3, byte_order);
}
-static void mesa_VertexAttrib4dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib4dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4dvNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4dvNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4dvNV_v, hf_x11_glx_render_VertexAttrib4dvNV_v_item, 4, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4dvNV_v, hf_x11_glx_render_VertexAttrib4dvNV_v_item, 4, byte_order);
}
-static void mesa_VertexAttrib4ubvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttrib4ubvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4ubvNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttrib4ubvNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4ubvNV_v, 4, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_VertexAttrib4ubvNV_v, 4, byte_order);
}
-static void mesa_VertexAttribs1svNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttribs1svNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int n;
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs1svNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs1svNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs1svNV_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs1svNV_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs1svNV_v, hf_x11_glx_render_VertexAttribs1svNV_v_item, n, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs1svNV_v, hf_x11_glx_render_VertexAttribs1svNV_v_item, n, byte_order);
}
-static void mesa_VertexAttribs2svNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttribs2svNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int n;
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs2svNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs2svNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs2svNV_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs2svNV_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs2svNV_v, hf_x11_glx_render_VertexAttribs2svNV_v_item, n, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs2svNV_v, hf_x11_glx_render_VertexAttribs2svNV_v_item, n, byte_order);
}
-static void mesa_VertexAttribs3svNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttribs3svNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int n;
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs3svNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs3svNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs3svNV_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs3svNV_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs3svNV_v, hf_x11_glx_render_VertexAttribs3svNV_v_item, n, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs3svNV_v, hf_x11_glx_render_VertexAttribs3svNV_v_item, n, byte_order);
}
-static void mesa_VertexAttribs4svNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttribs4svNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int n;
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs4svNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs4svNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs4svNV_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs4svNV_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs4svNV_v, hf_x11_glx_render_VertexAttribs4svNV_v_item, n, little_endian);
+ listOfInt16(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs4svNV_v, hf_x11_glx_render_VertexAttribs4svNV_v_item, n, byte_order);
}
-static void mesa_VertexAttribs1fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttribs1fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int n;
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs1fvNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs1fvNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs1fvNV_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs1fvNV_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs1fvNV_v, hf_x11_glx_render_VertexAttribs1fvNV_v_item, n, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs1fvNV_v, hf_x11_glx_render_VertexAttribs1fvNV_v_item, n, byte_order);
}
-static void mesa_VertexAttribs2fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttribs2fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int n;
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs2fvNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs2fvNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs2fvNV_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs2fvNV_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs2fvNV_v, hf_x11_glx_render_VertexAttribs2fvNV_v_item, n, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs2fvNV_v, hf_x11_glx_render_VertexAttribs2fvNV_v_item, n, byte_order);
}
-static void mesa_VertexAttribs3fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttribs3fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int n;
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs3fvNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs3fvNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs3fvNV_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs3fvNV_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs3fvNV_v, hf_x11_glx_render_VertexAttribs3fvNV_v_item, n, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs3fvNV_v, hf_x11_glx_render_VertexAttribs3fvNV_v_item, n, byte_order);
}
-static void mesa_VertexAttribs4fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttribs4fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int n;
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs4fvNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs4fvNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs4fvNV_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs4fvNV_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs4fvNV_v, hf_x11_glx_render_VertexAttribs4fvNV_v_item, n, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs4fvNV_v, hf_x11_glx_render_VertexAttribs4fvNV_v_item, n, byte_order);
}
-static void mesa_VertexAttribs1dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttribs1dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int n;
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs1dvNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs1dvNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs1dvNV_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs1dvNV_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs1dvNV_v, hf_x11_glx_render_VertexAttribs1dvNV_v_item, n, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs1dvNV_v, hf_x11_glx_render_VertexAttribs1dvNV_v_item, n, byte_order);
}
-static void mesa_VertexAttribs2dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttribs2dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int n;
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs2dvNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs2dvNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs2dvNV_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs2dvNV_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs2dvNV_v, hf_x11_glx_render_VertexAttribs2dvNV_v_item, n, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs2dvNV_v, hf_x11_glx_render_VertexAttribs2dvNV_v_item, n, byte_order);
}
-static void mesa_VertexAttribs3dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttribs3dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int n;
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs3dvNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs3dvNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs3dvNV_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs3dvNV_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs3dvNV_v, hf_x11_glx_render_VertexAttribs3dvNV_v_item, n, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs3dvNV_v, hf_x11_glx_render_VertexAttribs3dvNV_v_item, n, byte_order);
}
-static void mesa_VertexAttribs4dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttribs4dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int n;
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs4dvNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs4dvNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs4dvNV_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs4dvNV_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs4dvNV_v, hf_x11_glx_render_VertexAttribs4dvNV_v_item, n, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs4dvNV_v, hf_x11_glx_render_VertexAttribs4dvNV_v_item, n, byte_order);
}
-static void mesa_VertexAttribs4ubvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_VertexAttribs4ubvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int n;
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs4ubvNV_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs4ubvNV_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs4ubvNV_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_VertexAttribs4ubvNV_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs4ubvNV_v, n, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_VertexAttribs4ubvNV_v, n, byte_order);
}
-static void mesa_PointParameteriNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_PointParameteriNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_PointParameteriNV_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PointParameteriNV_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_PointParameteriNV_param, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PointParameteriNV_param, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_PointParameterivNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_PointParameterivNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_PointParameterivNV_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_PointParameterivNV_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt32(tvb, offsetp, t, hf_x11_glx_render_PointParameterivNV_params, hf_x11_glx_render_PointParameterivNV_params_item, (length - 4) / 4, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_render_PointParameterivNV_params, hf_x11_glx_render_PointParameterivNV_params_item, (length - 4) / 4, byte_order);
}
-static void mesa_ActiveStencilFaceEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ActiveStencilFaceEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_ActiveStencilFaceEXT_face, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ActiveStencilFaceEXT_face, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void mesa_ProgramNamedParameter4fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ProgramNamedParameter4fvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int len;
- proto_tree_add_item(t, hf_x11_glx_render_ProgramNamedParameter4fvNV_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ProgramNamedParameter4fvNV_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_ProgramNamedParameter4fvNV_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ProgramNamedParameter4fvNV_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_ProgramNamedParameter4fvNV_name, len, little_endian);
- listOfFloat(tvb, offsetp, t, hf_x11_glx_render_ProgramNamedParameter4fvNV_v, hf_x11_glx_render_ProgramNamedParameter4fvNV_v_item, 4, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_ProgramNamedParameter4fvNV_name, len, byte_order);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_render_ProgramNamedParameter4fvNV_v, hf_x11_glx_render_ProgramNamedParameter4fvNV_v_item, 4, byte_order);
}
-static void mesa_ProgramNamedParameter4dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_ProgramNamedParameter4dvNV(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int len;
- proto_tree_add_item(t, hf_x11_glx_render_ProgramNamedParameter4dvNV_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ProgramNamedParameter4dvNV_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_render_ProgramNamedParameter4dvNV_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_ProgramNamedParameter4dvNV_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_render_ProgramNamedParameter4dvNV_name, len, little_endian);
- listOfDouble(tvb, offsetp, t, hf_x11_glx_render_ProgramNamedParameter4dvNV_v, hf_x11_glx_render_ProgramNamedParameter4dvNV_v_item, 4, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_render_ProgramNamedParameter4dvNV_name, len, byte_order);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_render_ProgramNamedParameter4dvNV_v, hf_x11_glx_render_ProgramNamedParameter4dvNV_v_item, 4, byte_order);
}
-static void mesa_DepthBoundsEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_DepthBoundsEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_DepthBoundsEXT_zmin, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_DepthBoundsEXT_zmin, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
- proto_tree_add_item(t, hf_x11_glx_render_DepthBoundsEXT_zmax, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_DepthBoundsEXT_zmax, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
}
-static void mesa_BlendEquationSeparateEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void mesa_BlendEquationSeparateEXT(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- proto_tree_add_item(t, hf_x11_glx_render_BlendEquationSeparateEXT_modeRGB, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_BlendEquationSeparateEXT_modeRGB, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- proto_tree_add_item(t, hf_x11_glx_render_BlendEquationSeparateEXT_modeA, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_render_BlendEquationSeparateEXT_modeA, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
@@ -3557,7 +3548,6 @@ static const value_string glx_render_op_name[] = {
{ 230, "glWindowPos3fvMESA" },
{ 231, "glBeginQueryARB" },
{ 232, "glEndQueryARB" },
- { 233, "glDrawBuffersARB" },
{ 2048, "glSampleMaskSGIS" },
{ 2049, "glSamplePatternSGIS" },
{ 2050, "glTagSampleBufferSGIX" },
@@ -3698,7 +3688,7 @@ static const value_string glx_render_op_name[] = {
{ 0, NULL }
};
-static void dispatch_glx_render(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian, int length)
+static void dispatch_glx_render(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order, int length)
{
while (length >= 4) {
guint32 op, len;
@@ -3713,9 +3703,9 @@ static void dispatch_glx_render(tvbuff_t *tvb, packet_info *pinfo, int *offsetp,
tt = proto_item_add_subtree(ti, ett_x11_list_of_rectangle);
- ti = proto_tree_add_item(tt, hf_x11_request_length, tvb, *offsetp, 2, little_endian);
+ ti = proto_tree_add_item(tt, hf_x11_request_length, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- proto_tree_add_item(tt, hf_x11_glx_render_op_name, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(tt, hf_x11_glx_render_op_name, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
if (len < 4) {
@@ -3730,1091 +3720,1088 @@ static void dispatch_glx_render(tvbuff_t *tvb, packet_info *pinfo, int *offsetp,
switch (op) {
case 1:
- mesa_CallList(tvb, offsetp, tt, little_endian, len);
+ mesa_CallList(tvb, offsetp, tt, byte_order, len);
break;
case 2:
- mesa_CallLists(tvb, offsetp, tt, little_endian, len);
+ mesa_CallLists(tvb, offsetp, tt, byte_order, len);
break;
case 3:
- mesa_ListBase(tvb, offsetp, tt, little_endian, len);
+ mesa_ListBase(tvb, offsetp, tt, byte_order, len);
break;
case 4:
- mesa_Begin(tvb, offsetp, tt, little_endian, len);
+ mesa_Begin(tvb, offsetp, tt, byte_order, len);
break;
case 5:
- mesa_Bitmap(tvb, offsetp, tt, little_endian, len);
+ mesa_Bitmap(tvb, offsetp, tt, byte_order, len);
break;
case 6:
- mesa_Color3bv(tvb, offsetp, tt, little_endian, len);
+ mesa_Color3bv(tvb, offsetp, tt, byte_order, len);
break;
case 7:
- mesa_Color3dv(tvb, offsetp, tt, little_endian, len);
+ mesa_Color3dv(tvb, offsetp, tt, byte_order, len);
break;
case 8:
- mesa_Color3fv(tvb, offsetp, tt, little_endian, len);
+ mesa_Color3fv(tvb, offsetp, tt, byte_order, len);
break;
case 9:
- mesa_Color3iv(tvb, offsetp, tt, little_endian, len);
+ mesa_Color3iv(tvb, offsetp, tt, byte_order, len);
break;
case 10:
- mesa_Color3sv(tvb, offsetp, tt, little_endian, len);
+ mesa_Color3sv(tvb, offsetp, tt, byte_order, len);
break;
case 11:
- mesa_Color3ubv(tvb, offsetp, tt, little_endian, len);
+ mesa_Color3ubv(tvb, offsetp, tt, byte_order, len);
break;
case 12:
- mesa_Color3uiv(tvb, offsetp, tt, little_endian, len);
+ mesa_Color3uiv(tvb, offsetp, tt, byte_order, len);
break;
case 13:
- mesa_Color3usv(tvb, offsetp, tt, little_endian, len);
+ mesa_Color3usv(tvb, offsetp, tt, byte_order, len);
break;
case 14:
- mesa_Color4bv(tvb, offsetp, tt, little_endian, len);
+ mesa_Color4bv(tvb, offsetp, tt, byte_order, len);
break;
case 15:
- mesa_Color4dv(tvb, offsetp, tt, little_endian, len);
+ mesa_Color4dv(tvb, offsetp, tt, byte_order, len);
break;
case 16:
- mesa_Color4fv(tvb, offsetp, tt, little_endian, len);
+ mesa_Color4fv(tvb, offsetp, tt, byte_order, len);
break;
case 17:
- mesa_Color4iv(tvb, offsetp, tt, little_endian, len);
+ mesa_Color4iv(tvb, offsetp, tt, byte_order, len);
break;
case 18:
- mesa_Color4sv(tvb, offsetp, tt, little_endian, len);
+ mesa_Color4sv(tvb, offsetp, tt, byte_order, len);
break;
case 19:
- mesa_Color4ubv(tvb, offsetp, tt, little_endian, len);
+ mesa_Color4ubv(tvb, offsetp, tt, byte_order, len);
break;
case 20:
- mesa_Color4uiv(tvb, offsetp, tt, little_endian, len);
+ mesa_Color4uiv(tvb, offsetp, tt, byte_order, len);
break;
case 21:
- mesa_Color4usv(tvb, offsetp, tt, little_endian, len);
+ mesa_Color4usv(tvb, offsetp, tt, byte_order, len);
break;
case 22:
- mesa_EdgeFlagv(tvb, offsetp, tt, little_endian, len);
+ mesa_EdgeFlagv(tvb, offsetp, tt, byte_order, len);
break;
case 23:
- mesa_End(tvb, offsetp, tt, little_endian, len);
+ mesa_End(tvb, offsetp, tt, byte_order, len);
break;
case 24:
- mesa_Indexdv(tvb, offsetp, tt, little_endian, len);
+ mesa_Indexdv(tvb, offsetp, tt, byte_order, len);
break;
case 25:
- mesa_Indexfv(tvb, offsetp, tt, little_endian, len);
+ mesa_Indexfv(tvb, offsetp, tt, byte_order, len);
break;
case 26:
- mesa_Indexiv(tvb, offsetp, tt, little_endian, len);
+ mesa_Indexiv(tvb, offsetp, tt, byte_order, len);
break;
case 27:
- mesa_Indexsv(tvb, offsetp, tt, little_endian, len);
+ mesa_Indexsv(tvb, offsetp, tt, byte_order, len);
break;
case 28:
- mesa_Normal3bv(tvb, offsetp, tt, little_endian, len);
+ mesa_Normal3bv(tvb, offsetp, tt, byte_order, len);
break;
case 29:
- mesa_Normal3dv(tvb, offsetp, tt, little_endian, len);
+ mesa_Normal3dv(tvb, offsetp, tt, byte_order, len);
break;
case 30:
- mesa_Normal3fv(tvb, offsetp, tt, little_endian, len);
+ mesa_Normal3fv(tvb, offsetp, tt, byte_order, len);
break;
case 31:
- mesa_Normal3iv(tvb, offsetp, tt, little_endian, len);
+ mesa_Normal3iv(tvb, offsetp, tt, byte_order, len);
break;
case 32:
- mesa_Normal3sv(tvb, offsetp, tt, little_endian, len);
+ mesa_Normal3sv(tvb, offsetp, tt, byte_order, len);
break;
case 33:
- mesa_RasterPos2dv(tvb, offsetp, tt, little_endian, len);
+ mesa_RasterPos2dv(tvb, offsetp, tt, byte_order, len);
break;
case 34:
- mesa_RasterPos2fv(tvb, offsetp, tt, little_endian, len);
+ mesa_RasterPos2fv(tvb, offsetp, tt, byte_order, len);
break;
case 35:
- mesa_RasterPos2iv(tvb, offsetp, tt, little_endian, len);
+ mesa_RasterPos2iv(tvb, offsetp, tt, byte_order, len);
break;
case 36:
- mesa_RasterPos2sv(tvb, offsetp, tt, little_endian, len);
+ mesa_RasterPos2sv(tvb, offsetp, tt, byte_order, len);
break;
case 37:
- mesa_RasterPos3dv(tvb, offsetp, tt, little_endian, len);
+ mesa_RasterPos3dv(tvb, offsetp, tt, byte_order, len);
break;
case 38:
- mesa_RasterPos3fv(tvb, offsetp, tt, little_endian, len);
+ mesa_RasterPos3fv(tvb, offsetp, tt, byte_order, len);
break;
case 39:
- mesa_RasterPos3iv(tvb, offsetp, tt, little_endian, len);
+ mesa_RasterPos3iv(tvb, offsetp, tt, byte_order, len);
break;
case 40:
- mesa_RasterPos3sv(tvb, offsetp, tt, little_endian, len);
+ mesa_RasterPos3sv(tvb, offsetp, tt, byte_order, len);
break;
case 41:
- mesa_RasterPos4dv(tvb, offsetp, tt, little_endian, len);
+ mesa_RasterPos4dv(tvb, offsetp, tt, byte_order, len);
break;
case 42:
- mesa_RasterPos4fv(tvb, offsetp, tt, little_endian, len);
+ mesa_RasterPos4fv(tvb, offsetp, tt, byte_order, len);
break;
case 43:
- mesa_RasterPos4iv(tvb, offsetp, tt, little_endian, len);
+ mesa_RasterPos4iv(tvb, offsetp, tt, byte_order, len);
break;
case 44:
- mesa_RasterPos4sv(tvb, offsetp, tt, little_endian, len);
+ mesa_RasterPos4sv(tvb, offsetp, tt, byte_order, len);
break;
case 45:
- mesa_Rectdv(tvb, offsetp, tt, little_endian, len);
+ mesa_Rectdv(tvb, offsetp, tt, byte_order, len);
break;
case 46:
- mesa_Rectfv(tvb, offsetp, tt, little_endian, len);
+ mesa_Rectfv(tvb, offsetp, tt, byte_order, len);
break;
case 47:
- mesa_Rectiv(tvb, offsetp, tt, little_endian, len);
+ mesa_Rectiv(tvb, offsetp, tt, byte_order, len);
break;
case 48:
- mesa_Rectsv(tvb, offsetp, tt, little_endian, len);
+ mesa_Rectsv(tvb, offsetp, tt, byte_order, len);
break;
case 49:
- mesa_TexCoord1dv(tvb, offsetp, tt, little_endian, len);
+ mesa_TexCoord1dv(tvb, offsetp, tt, byte_order, len);
break;
case 50:
- mesa_TexCoord1fv(tvb, offsetp, tt, little_endian, len);
+ mesa_TexCoord1fv(tvb, offsetp, tt, byte_order, len);
break;
case 51:
- mesa_TexCoord1iv(tvb, offsetp, tt, little_endian, len);
+ mesa_TexCoord1iv(tvb, offsetp, tt, byte_order, len);
break;
case 52:
- mesa_TexCoord1sv(tvb, offsetp, tt, little_endian, len);
+ mesa_TexCoord1sv(tvb, offsetp, tt, byte_order, len);
break;
case 53:
- mesa_TexCoord2dv(tvb, offsetp, tt, little_endian, len);
+ mesa_TexCoord2dv(tvb, offsetp, tt, byte_order, len);
break;
case 54:
- mesa_TexCoord2fv(tvb, offsetp, tt, little_endian, len);
+ mesa_TexCoord2fv(tvb, offsetp, tt, byte_order, len);
break;
case 55:
- mesa_TexCoord2iv(tvb, offsetp, tt, little_endian, len);
+ mesa_TexCoord2iv(tvb, offsetp, tt, byte_order, len);
break;
case 56:
- mesa_TexCoord2sv(tvb, offsetp, tt, little_endian, len);
+ mesa_TexCoord2sv(tvb, offsetp, tt, byte_order, len);
break;
case 57:
- mesa_TexCoord3dv(tvb, offsetp, tt, little_endian, len);
+ mesa_TexCoord3dv(tvb, offsetp, tt, byte_order, len);
break;
case 58:
- mesa_TexCoord3fv(tvb, offsetp, tt, little_endian, len);
+ mesa_TexCoord3fv(tvb, offsetp, tt, byte_order, len);
break;
case 59:
- mesa_TexCoord3iv(tvb, offsetp, tt, little_endian, len);
+ mesa_TexCoord3iv(tvb, offsetp, tt, byte_order, len);
break;
case 60:
- mesa_TexCoord3sv(tvb, offsetp, tt, little_endian, len);
+ mesa_TexCoord3sv(tvb, offsetp, tt, byte_order, len);
break;
case 61:
- mesa_TexCoord4dv(tvb, offsetp, tt, little_endian, len);
+ mesa_TexCoord4dv(tvb, offsetp, tt, byte_order, len);
break;
case 62:
- mesa_TexCoord4fv(tvb, offsetp, tt, little_endian, len);
+ mesa_TexCoord4fv(tvb, offsetp, tt, byte_order, len);
break;
case 63:
- mesa_TexCoord4iv(tvb, offsetp, tt, little_endian, len);
+ mesa_TexCoord4iv(tvb, offsetp, tt, byte_order, len);
break;
case 64:
- mesa_TexCoord4sv(tvb, offsetp, tt, little_endian, len);
+ mesa_TexCoord4sv(tvb, offsetp, tt, byte_order, len);
break;
case 65:
- mesa_Vertex2dv(tvb, offsetp, tt, little_endian, len);
+ mesa_Vertex2dv(tvb, offsetp, tt, byte_order, len);
break;
case 66:
- mesa_Vertex2fv(tvb, offsetp, tt, little_endian, len);
+ mesa_Vertex2fv(tvb, offsetp, tt, byte_order, len);
break;
case 67:
- mesa_Vertex2iv(tvb, offsetp, tt, little_endian, len);
+ mesa_Vertex2iv(tvb, offsetp, tt, byte_order, len);
break;
case 68:
- mesa_Vertex2sv(tvb, offsetp, tt, little_endian, len);
+ mesa_Vertex2sv(tvb, offsetp, tt, byte_order, len);
break;
case 69:
- mesa_Vertex3dv(tvb, offsetp, tt, little_endian, len);
+ mesa_Vertex3dv(tvb, offsetp, tt, byte_order, len);
break;
case 70:
- mesa_Vertex3fv(tvb, offsetp, tt, little_endian, len);
+ mesa_Vertex3fv(tvb, offsetp, tt, byte_order, len);
break;
case 71:
- mesa_Vertex3iv(tvb, offsetp, tt, little_endian, len);
+ mesa_Vertex3iv(tvb, offsetp, tt, byte_order, len);
break;
case 72:
- mesa_Vertex3sv(tvb, offsetp, tt, little_endian, len);
+ mesa_Vertex3sv(tvb, offsetp, tt, byte_order, len);
break;
case 73:
- mesa_Vertex4dv(tvb, offsetp, tt, little_endian, len);
+ mesa_Vertex4dv(tvb, offsetp, tt, byte_order, len);
break;
case 74:
- mesa_Vertex4fv(tvb, offsetp, tt, little_endian, len);
+ mesa_Vertex4fv(tvb, offsetp, tt, byte_order, len);
break;
case 75:
- mesa_Vertex4iv(tvb, offsetp, tt, little_endian, len);
+ mesa_Vertex4iv(tvb, offsetp, tt, byte_order, len);
break;
case 76:
- mesa_Vertex4sv(tvb, offsetp, tt, little_endian, len);
+ mesa_Vertex4sv(tvb, offsetp, tt, byte_order, len);
break;
case 77:
- mesa_ClipPlane(tvb, offsetp, tt, little_endian, len);
+ mesa_ClipPlane(tvb, offsetp, tt, byte_order, len);
break;
case 78:
- mesa_ColorMaterial(tvb, offsetp, tt, little_endian, len);
+ mesa_ColorMaterial(tvb, offsetp, tt, byte_order, len);
break;
case 79:
- mesa_CullFace(tvb, offsetp, tt, little_endian, len);
+ mesa_CullFace(tvb, offsetp, tt, byte_order, len);
break;
case 80:
- mesa_Fogf(tvb, offsetp, tt, little_endian, len);
+ mesa_Fogf(tvb, offsetp, tt, byte_order, len);
break;
case 81:
- mesa_Fogfv(tvb, offsetp, tt, little_endian, len);
+ mesa_Fogfv(tvb, offsetp, tt, byte_order, len);
break;
case 82:
- mesa_Fogi(tvb, offsetp, tt, little_endian, len);
+ mesa_Fogi(tvb, offsetp, tt, byte_order, len);
break;
case 83:
- mesa_Fogiv(tvb, offsetp, tt, little_endian, len);
+ mesa_Fogiv(tvb, offsetp, tt, byte_order, len);
break;
case 84:
- mesa_FrontFace(tvb, offsetp, tt, little_endian, len);
+ mesa_FrontFace(tvb, offsetp, tt, byte_order, len);
break;
case 85:
- mesa_Hint(tvb, offsetp, tt, little_endian, len);
+ mesa_Hint(tvb, offsetp, tt, byte_order, len);
break;
case 86:
- mesa_Lightf(tvb, offsetp, tt, little_endian, len);
+ mesa_Lightf(tvb, offsetp, tt, byte_order, len);
break;
case 87:
- mesa_Lightfv(tvb, offsetp, tt, little_endian, len);
+ mesa_Lightfv(tvb, offsetp, tt, byte_order, len);
break;
case 88:
- mesa_Lighti(tvb, offsetp, tt, little_endian, len);
+ mesa_Lighti(tvb, offsetp, tt, byte_order, len);
break;
case 89:
- mesa_Lightiv(tvb, offsetp, tt, little_endian, len);
+ mesa_Lightiv(tvb, offsetp, tt, byte_order, len);
break;
case 90:
- mesa_LightModelf(tvb, offsetp, tt, little_endian, len);
+ mesa_LightModelf(tvb, offsetp, tt, byte_order, len);
break;
case 91:
- mesa_LightModelfv(tvb, offsetp, tt, little_endian, len);
+ mesa_LightModelfv(tvb, offsetp, tt, byte_order, len);
break;
case 92:
- mesa_LightModeli(tvb, offsetp, tt, little_endian, len);
+ mesa_LightModeli(tvb, offsetp, tt, byte_order, len);
break;
case 93:
- mesa_LightModeliv(tvb, offsetp, tt, little_endian, len);
+ mesa_LightModeliv(tvb, offsetp, tt, byte_order, len);
break;
case 94:
- mesa_LineStipple(tvb, offsetp, tt, little_endian, len);
+ mesa_LineStipple(tvb, offsetp, tt, byte_order, len);
break;
case 95:
- mesa_LineWidth(tvb, offsetp, tt, little_endian, len);
+ mesa_LineWidth(tvb, offsetp, tt, byte_order, len);
break;
case 96:
- mesa_Materialf(tvb, offsetp, tt, little_endian, len);
+ mesa_Materialf(tvb, offsetp, tt, byte_order, len);
break;
case 97:
- mesa_Materialfv(tvb, offsetp, tt, little_endian, len);
+ mesa_Materialfv(tvb, offsetp, tt, byte_order, len);
break;
case 98:
- mesa_Materiali(tvb, offsetp, tt, little_endian, len);
+ mesa_Materiali(tvb, offsetp, tt, byte_order, len);
break;
case 99:
- mesa_Materialiv(tvb, offsetp, tt, little_endian, len);
+ mesa_Materialiv(tvb, offsetp, tt, byte_order, len);
break;
case 100:
- mesa_PointSize(tvb, offsetp, tt, little_endian, len);
+ mesa_PointSize(tvb, offsetp, tt, byte_order, len);
break;
case 101:
- mesa_PolygonMode(tvb, offsetp, tt, little_endian, len);
+ mesa_PolygonMode(tvb, offsetp, tt, byte_order, len);
break;
case 102:
- mesa_PolygonStipple(tvb, offsetp, tt, little_endian, len);
+ mesa_PolygonStipple(tvb, offsetp, tt, byte_order, len);
break;
case 103:
- mesa_Scissor(tvb, offsetp, tt, little_endian, len);
+ mesa_Scissor(tvb, offsetp, tt, byte_order, len);
break;
case 104:
- mesa_ShadeModel(tvb, offsetp, tt, little_endian, len);
+ mesa_ShadeModel(tvb, offsetp, tt, byte_order, len);
break;
case 105:
- mesa_TexParameterf(tvb, offsetp, tt, little_endian, len);
+ mesa_TexParameterf(tvb, offsetp, tt, byte_order, len);
break;
case 106:
- mesa_TexParameterfv(tvb, offsetp, tt, little_endian, len);
+ mesa_TexParameterfv(tvb, offsetp, tt, byte_order, len);
break;
case 107:
- mesa_TexParameteri(tvb, offsetp, tt, little_endian, len);
+ mesa_TexParameteri(tvb, offsetp, tt, byte_order, len);
break;
case 108:
- mesa_TexParameteriv(tvb, offsetp, tt, little_endian, len);
+ mesa_TexParameteriv(tvb, offsetp, tt, byte_order, len);
break;
case 109:
- mesa_TexImage1D(tvb, offsetp, tt, little_endian, len);
+ mesa_TexImage1D(tvb, offsetp, tt, byte_order, len);
break;
case 110:
- mesa_TexImage2D(tvb, offsetp, tt, little_endian, len);
+ mesa_TexImage2D(tvb, offsetp, tt, byte_order, len);
break;
case 111:
- mesa_TexEnvf(tvb, offsetp, tt, little_endian, len);
+ mesa_TexEnvf(tvb, offsetp, tt, byte_order, len);
break;
case 112:
- mesa_TexEnvfv(tvb, offsetp, tt, little_endian, len);
+ mesa_TexEnvfv(tvb, offsetp, tt, byte_order, len);
break;
case 113:
- mesa_TexEnvi(tvb, offsetp, tt, little_endian, len);
+ mesa_TexEnvi(tvb, offsetp, tt, byte_order, len);
break;
case 114:
- mesa_TexEnviv(tvb, offsetp, tt, little_endian, len);
+ mesa_TexEnviv(tvb, offsetp, tt, byte_order, len);
break;
case 115:
- mesa_TexGend(tvb, offsetp, tt, little_endian, len);
+ mesa_TexGend(tvb, offsetp, tt, byte_order, len);
break;
case 116:
- mesa_TexGendv(tvb, offsetp, tt, little_endian, len);
+ mesa_TexGendv(tvb, offsetp, tt, byte_order, len);
break;
case 117:
- mesa_TexGenf(tvb, offsetp, tt, little_endian, len);
+ mesa_TexGenf(tvb, offsetp, tt, byte_order, len);
break;
case 118:
- mesa_TexGenfv(tvb, offsetp, tt, little_endian, len);
+ mesa_TexGenfv(tvb, offsetp, tt, byte_order, len);
break;
case 119:
- mesa_TexGeni(tvb, offsetp, tt, little_endian, len);
+ mesa_TexGeni(tvb, offsetp, tt, byte_order, len);
break;
case 120:
- mesa_TexGeniv(tvb, offsetp, tt, little_endian, len);
+ mesa_TexGeniv(tvb, offsetp, tt, byte_order, len);
break;
case 121:
- mesa_InitNames(tvb, offsetp, tt, little_endian, len);
+ mesa_InitNames(tvb, offsetp, tt, byte_order, len);
break;
case 122:
- mesa_LoadName(tvb, offsetp, tt, little_endian, len);
+ mesa_LoadName(tvb, offsetp, tt, byte_order, len);
break;
case 123:
- mesa_PassThrough(tvb, offsetp, tt, little_endian, len);
+ mesa_PassThrough(tvb, offsetp, tt, byte_order, len);
break;
case 124:
- mesa_PopName(tvb, offsetp, tt, little_endian, len);
+ mesa_PopName(tvb, offsetp, tt, byte_order, len);
break;
case 125:
- mesa_PushName(tvb, offsetp, tt, little_endian, len);
+ mesa_PushName(tvb, offsetp, tt, byte_order, len);
break;
case 126:
- mesa_DrawBuffer(tvb, offsetp, tt, little_endian, len);
+ mesa_DrawBuffer(tvb, offsetp, tt, byte_order, len);
break;
case 127:
- mesa_Clear(tvb, offsetp, tt, little_endian, len);
+ mesa_Clear(tvb, offsetp, tt, byte_order, len);
break;
case 128:
- mesa_ClearAccum(tvb, offsetp, tt, little_endian, len);
+ mesa_ClearAccum(tvb, offsetp, tt, byte_order, len);
break;
case 129:
- mesa_ClearIndex(tvb, offsetp, tt, little_endian, len);
+ mesa_ClearIndex(tvb, offsetp, tt, byte_order, len);
break;
case 130:
- mesa_ClearColor(tvb, offsetp, tt, little_endian, len);
+ mesa_ClearColor(tvb, offsetp, tt, byte_order, len);
break;
case 131:
- mesa_ClearStencil(tvb, offsetp, tt, little_endian, len);
+ mesa_ClearStencil(tvb, offsetp, tt, byte_order, len);
break;
case 132:
- mesa_ClearDepth(tvb, offsetp, tt, little_endian, len);
+ mesa_ClearDepth(tvb, offsetp, tt, byte_order, len);
break;
case 133:
- mesa_StencilMask(tvb, offsetp, tt, little_endian, len);
+ mesa_StencilMask(tvb, offsetp, tt, byte_order, len);
break;
case 134:
- mesa_ColorMask(tvb, offsetp, tt, little_endian, len);
+ mesa_ColorMask(tvb, offsetp, tt, byte_order, len);
break;
case 135:
- mesa_DepthMask(tvb, offsetp, tt, little_endian, len);
+ mesa_DepthMask(tvb, offsetp, tt, byte_order, len);
break;
case 136:
- mesa_IndexMask(tvb, offsetp, tt, little_endian, len);
+ mesa_IndexMask(tvb, offsetp, tt, byte_order, len);
break;
case 137:
- mesa_Accum(tvb, offsetp, tt, little_endian, len);
+ mesa_Accum(tvb, offsetp, tt, byte_order, len);
break;
case 138:
- mesa_Disable(tvb, offsetp, tt, little_endian, len);
+ mesa_Disable(tvb, offsetp, tt, byte_order, len);
break;
case 139:
- mesa_Enable(tvb, offsetp, tt, little_endian, len);
+ mesa_Enable(tvb, offsetp, tt, byte_order, len);
break;
case 141:
- mesa_PopAttrib(tvb, offsetp, tt, little_endian, len);
+ mesa_PopAttrib(tvb, offsetp, tt, byte_order, len);
break;
case 142:
- mesa_PushAttrib(tvb, offsetp, tt, little_endian, len);
+ mesa_PushAttrib(tvb, offsetp, tt, byte_order, len);
break;
case 143:
- mesa_Map1d(tvb, offsetp, tt, little_endian, len);
+ mesa_Map1d(tvb, offsetp, tt, byte_order, len);
break;
case 144:
- mesa_Map1f(tvb, offsetp, tt, little_endian, len);
+ mesa_Map1f(tvb, offsetp, tt, byte_order, len);
break;
case 145:
- mesa_Map2d(tvb, offsetp, tt, little_endian, len);
+ mesa_Map2d(tvb, offsetp, tt, byte_order, len);
break;
case 146:
- mesa_Map2f(tvb, offsetp, tt, little_endian, len);
+ mesa_Map2f(tvb, offsetp, tt, byte_order, len);
break;
case 147:
- mesa_MapGrid1d(tvb, offsetp, tt, little_endian, len);
+ mesa_MapGrid1d(tvb, offsetp, tt, byte_order, len);
break;
case 148:
- mesa_MapGrid1f(tvb, offsetp, tt, little_endian, len);
+ mesa_MapGrid1f(tvb, offsetp, tt, byte_order, len);
break;
case 149:
- mesa_MapGrid2d(tvb, offsetp, tt, little_endian, len);
+ mesa_MapGrid2d(tvb, offsetp, tt, byte_order, len);
break;
case 150:
- mesa_MapGrid2f(tvb, offsetp, tt, little_endian, len);
+ mesa_MapGrid2f(tvb, offsetp, tt, byte_order, len);
break;
case 151:
- mesa_EvalCoord1dv(tvb, offsetp, tt, little_endian, len);
+ mesa_EvalCoord1dv(tvb, offsetp, tt, byte_order, len);
break;
case 152:
- mesa_EvalCoord1fv(tvb, offsetp, tt, little_endian, len);
+ mesa_EvalCoord1fv(tvb, offsetp, tt, byte_order, len);
break;
case 153:
- mesa_EvalCoord2dv(tvb, offsetp, tt, little_endian, len);
+ mesa_EvalCoord2dv(tvb, offsetp, tt, byte_order, len);
break;
case 154:
- mesa_EvalCoord2fv(tvb, offsetp, tt, little_endian, len);
+ mesa_EvalCoord2fv(tvb, offsetp, tt, byte_order, len);
break;
case 155:
- mesa_EvalMesh1(tvb, offsetp, tt, little_endian, len);
+ mesa_EvalMesh1(tvb, offsetp, tt, byte_order, len);
break;
case 156:
- mesa_EvalPoint1(tvb, offsetp, tt, little_endian, len);
+ mesa_EvalPoint1(tvb, offsetp, tt, byte_order, len);
break;
case 157:
- mesa_EvalMesh2(tvb, offsetp, tt, little_endian, len);
+ mesa_EvalMesh2(tvb, offsetp, tt, byte_order, len);
break;
case 158:
- mesa_EvalPoint2(tvb, offsetp, tt, little_endian, len);
+ mesa_EvalPoint2(tvb, offsetp, tt, byte_order, len);
break;
case 159:
- mesa_AlphaFunc(tvb, offsetp, tt, little_endian, len);
+ mesa_AlphaFunc(tvb, offsetp, tt, byte_order, len);
break;
case 160:
- mesa_BlendFunc(tvb, offsetp, tt, little_endian, len);
+ mesa_BlendFunc(tvb, offsetp, tt, byte_order, len);
break;
case 161:
- mesa_LogicOp(tvb, offsetp, tt, little_endian, len);
+ mesa_LogicOp(tvb, offsetp, tt, byte_order, len);
break;
case 162:
- mesa_StencilFunc(tvb, offsetp, tt, little_endian, len);
+ mesa_StencilFunc(tvb, offsetp, tt, byte_order, len);
break;
case 163:
- mesa_StencilOp(tvb, offsetp, tt, little_endian, len);
+ mesa_StencilOp(tvb, offsetp, tt, byte_order, len);
break;
case 164:
- mesa_DepthFunc(tvb, offsetp, tt, little_endian, len);
+ mesa_DepthFunc(tvb, offsetp, tt, byte_order, len);
break;
case 165:
- mesa_PixelZoom(tvb, offsetp, tt, little_endian, len);
+ mesa_PixelZoom(tvb, offsetp, tt, byte_order, len);
break;
case 166:
- mesa_PixelTransferf(tvb, offsetp, tt, little_endian, len);
+ mesa_PixelTransferf(tvb, offsetp, tt, byte_order, len);
break;
case 167:
- mesa_PixelTransferi(tvb, offsetp, tt, little_endian, len);
+ mesa_PixelTransferi(tvb, offsetp, tt, byte_order, len);
break;
case 168:
- mesa_PixelMapfv(tvb, offsetp, tt, little_endian, len);
+ mesa_PixelMapfv(tvb, offsetp, tt, byte_order, len);
break;
case 169:
- mesa_PixelMapuiv(tvb, offsetp, tt, little_endian, len);
+ mesa_PixelMapuiv(tvb, offsetp, tt, byte_order, len);
break;
case 170:
- mesa_PixelMapusv(tvb, offsetp, tt, little_endian, len);
+ mesa_PixelMapusv(tvb, offsetp, tt, byte_order, len);
break;
case 171:
- mesa_ReadBuffer(tvb, offsetp, tt, little_endian, len);
+ mesa_ReadBuffer(tvb, offsetp, tt, byte_order, len);
break;
case 172:
- mesa_CopyPixels(tvb, offsetp, tt, little_endian, len);
+ mesa_CopyPixels(tvb, offsetp, tt, byte_order, len);
break;
case 173:
- mesa_DrawPixels(tvb, offsetp, tt, little_endian, len);
+ mesa_DrawPixels(tvb, offsetp, tt, byte_order, len);
break;
case 174:
- mesa_DepthRange(tvb, offsetp, tt, little_endian, len);
+ mesa_DepthRange(tvb, offsetp, tt, byte_order, len);
break;
case 175:
- mesa_Frustum(tvb, offsetp, tt, little_endian, len);
+ mesa_Frustum(tvb, offsetp, tt, byte_order, len);
break;
case 176:
- mesa_LoadIdentity(tvb, offsetp, tt, little_endian, len);
+ mesa_LoadIdentity(tvb, offsetp, tt, byte_order, len);
break;
case 177:
- mesa_LoadMatrixf(tvb, offsetp, tt, little_endian, len);
+ mesa_LoadMatrixf(tvb, offsetp, tt, byte_order, len);
break;
case 178:
- mesa_LoadMatrixd(tvb, offsetp, tt, little_endian, len);
+ mesa_LoadMatrixd(tvb, offsetp, tt, byte_order, len);
break;
case 179:
- mesa_MatrixMode(tvb, offsetp, tt, little_endian, len);
+ mesa_MatrixMode(tvb, offsetp, tt, byte_order, len);
break;
case 180:
- mesa_MultMatrixf(tvb, offsetp, tt, little_endian, len);
+ mesa_MultMatrixf(tvb, offsetp, tt, byte_order, len);
break;
case 181:
- mesa_MultMatrixd(tvb, offsetp, tt, little_endian, len);
+ mesa_MultMatrixd(tvb, offsetp, tt, byte_order, len);
break;
case 182:
- mesa_Ortho(tvb, offsetp, tt, little_endian, len);
+ mesa_Ortho(tvb, offsetp, tt, byte_order, len);
break;
case 183:
- mesa_PopMatrix(tvb, offsetp, tt, little_endian, len);
+ mesa_PopMatrix(tvb, offsetp, tt, byte_order, len);
break;
case 184:
- mesa_PushMatrix(tvb, offsetp, tt, little_endian, len);
+ mesa_PushMatrix(tvb, offsetp, tt, byte_order, len);
break;
case 185:
- mesa_Rotated(tvb, offsetp, tt, little_endian, len);
+ mesa_Rotated(tvb, offsetp, tt, byte_order, len);
break;
case 186:
- mesa_Rotatef(tvb, offsetp, tt, little_endian, len);
+ mesa_Rotatef(tvb, offsetp, tt, byte_order, len);
break;
case 187:
- mesa_Scaled(tvb, offsetp, tt, little_endian, len);
+ mesa_Scaled(tvb, offsetp, tt, byte_order, len);
break;
case 188:
- mesa_Scalef(tvb, offsetp, tt, little_endian, len);
+ mesa_Scalef(tvb, offsetp, tt, byte_order, len);
break;
case 189:
- mesa_Translated(tvb, offsetp, tt, little_endian, len);
+ mesa_Translated(tvb, offsetp, tt, byte_order, len);
break;
case 190:
- mesa_Translatef(tvb, offsetp, tt, little_endian, len);
+ mesa_Translatef(tvb, offsetp, tt, byte_order, len);
break;
case 191:
- mesa_Viewport(tvb, offsetp, tt, little_endian, len);
+ mesa_Viewport(tvb, offsetp, tt, byte_order, len);
break;
case 192:
- mesa_PolygonOffset(tvb, offsetp, tt, little_endian, len);
+ mesa_PolygonOffset(tvb, offsetp, tt, byte_order, len);
break;
case 193:
- mesa_DrawArrays(tvb, offsetp, tt, little_endian, len);
+ mesa_DrawArrays(tvb, offsetp, tt, byte_order, len);
break;
case 194:
- mesa_Indexubv(tvb, offsetp, tt, little_endian, len);
+ mesa_Indexubv(tvb, offsetp, tt, byte_order, len);
break;
case 195:
- mesa_ColorSubTable(tvb, offsetp, tt, little_endian, len);
+ mesa_ColorSubTable(tvb, offsetp, tt, byte_order, len);
break;
case 196:
- mesa_CopyColorSubTable(tvb, offsetp, tt, little_endian, len);
+ mesa_CopyColorSubTable(tvb, offsetp, tt, byte_order, len);
break;
case 197:
- mesa_ActiveTextureARB(tvb, offsetp, tt, little_endian, len);
+ mesa_ActiveTextureARB(tvb, offsetp, tt, byte_order, len);
break;
case 198:
- mesa_MultiTexCoord1dvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_MultiTexCoord1dvARB(tvb, offsetp, tt, byte_order, len);
break;
case 199:
- mesa_MultiTexCoord1fvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_MultiTexCoord1fvARB(tvb, offsetp, tt, byte_order, len);
break;
case 200:
- mesa_MultiTexCoord1ivARB(tvb, offsetp, tt, little_endian, len);
+ mesa_MultiTexCoord1ivARB(tvb, offsetp, tt, byte_order, len);
break;
case 201:
- mesa_MultiTexCoord1svARB(tvb, offsetp, tt, little_endian, len);
+ mesa_MultiTexCoord1svARB(tvb, offsetp, tt, byte_order, len);
break;
case 202:
- mesa_MultiTexCoord2dvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_MultiTexCoord2dvARB(tvb, offsetp, tt, byte_order, len);
break;
case 203:
- mesa_MultiTexCoord2fvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_MultiTexCoord2fvARB(tvb, offsetp, tt, byte_order, len);
break;
case 204:
- mesa_MultiTexCoord2ivARB(tvb, offsetp, tt, little_endian, len);
+ mesa_MultiTexCoord2ivARB(tvb, offsetp, tt, byte_order, len);
break;
case 205:
- mesa_MultiTexCoord2svARB(tvb, offsetp, tt, little_endian, len);
+ mesa_MultiTexCoord2svARB(tvb, offsetp, tt, byte_order, len);
break;
case 206:
- mesa_MultiTexCoord3dvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_MultiTexCoord3dvARB(tvb, offsetp, tt, byte_order, len);
break;
case 207:
- mesa_MultiTexCoord3fvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_MultiTexCoord3fvARB(tvb, offsetp, tt, byte_order, len);
break;
case 208:
- mesa_MultiTexCoord3ivARB(tvb, offsetp, tt, little_endian, len);
+ mesa_MultiTexCoord3ivARB(tvb, offsetp, tt, byte_order, len);
break;
case 209:
- mesa_MultiTexCoord3svARB(tvb, offsetp, tt, little_endian, len);
+ mesa_MultiTexCoord3svARB(tvb, offsetp, tt, byte_order, len);
break;
case 210:
- mesa_MultiTexCoord4dvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_MultiTexCoord4dvARB(tvb, offsetp, tt, byte_order, len);
break;
case 211:
- mesa_MultiTexCoord4fvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_MultiTexCoord4fvARB(tvb, offsetp, tt, byte_order, len);
break;
case 212:
- mesa_MultiTexCoord4ivARB(tvb, offsetp, tt, little_endian, len);
+ mesa_MultiTexCoord4ivARB(tvb, offsetp, tt, byte_order, len);
break;
case 213:
- mesa_MultiTexCoord4svARB(tvb, offsetp, tt, little_endian, len);
+ mesa_MultiTexCoord4svARB(tvb, offsetp, tt, byte_order, len);
break;
case 214:
- mesa_CompressedTexImage1DARB(tvb, offsetp, tt, little_endian, len);
+ mesa_CompressedTexImage1DARB(tvb, offsetp, tt, byte_order, len);
break;
case 215:
- mesa_CompressedTexImage2DARB(tvb, offsetp, tt, little_endian, len);
+ mesa_CompressedTexImage2DARB(tvb, offsetp, tt, byte_order, len);
break;
case 216:
- mesa_CompressedTexImage3DARB(tvb, offsetp, tt, little_endian, len);
+ mesa_CompressedTexImage3DARB(tvb, offsetp, tt, byte_order, len);
break;
case 217:
- mesa_CompressedTexSubImage1DARB(tvb, offsetp, tt, little_endian, len);
+ mesa_CompressedTexSubImage1DARB(tvb, offsetp, tt, byte_order, len);
break;
case 218:
- mesa_CompressedTexSubImage2DARB(tvb, offsetp, tt, little_endian, len);
+ mesa_CompressedTexSubImage2DARB(tvb, offsetp, tt, byte_order, len);
break;
case 219:
- mesa_CompressedTexSubImage3DARB(tvb, offsetp, tt, little_endian, len);
+ mesa_CompressedTexSubImage3DARB(tvb, offsetp, tt, byte_order, len);
break;
case 229:
- mesa_SampleCoverageARB(tvb, offsetp, tt, little_endian, len);
+ mesa_SampleCoverageARB(tvb, offsetp, tt, byte_order, len);
break;
case 230:
- mesa_WindowPos3fvMESA(tvb, offsetp, tt, little_endian, len);
+ mesa_WindowPos3fvMESA(tvb, offsetp, tt, byte_order, len);
break;
case 231:
- mesa_BeginQueryARB(tvb, offsetp, tt, little_endian, len);
+ mesa_BeginQueryARB(tvb, offsetp, tt, byte_order, len);
break;
case 232:
- mesa_EndQueryARB(tvb, offsetp, tt, little_endian, len);
- break;
- case 233:
- mesa_DrawBuffersARB(tvb, offsetp, tt, little_endian, len);
+ mesa_EndQueryARB(tvb, offsetp, tt, byte_order, len);
break;
case 2048:
- mesa_SampleMaskSGIS(tvb, offsetp, tt, little_endian, len);
+ mesa_SampleMaskSGIS(tvb, offsetp, tt, byte_order, len);
break;
case 2049:
- mesa_SamplePatternSGIS(tvb, offsetp, tt, little_endian, len);
+ mesa_SamplePatternSGIS(tvb, offsetp, tt, byte_order, len);
break;
case 2050:
- mesa_TagSampleBufferSGIX(tvb, offsetp, tt, little_endian, len);
+ mesa_TagSampleBufferSGIX(tvb, offsetp, tt, byte_order, len);
break;
case 2051:
- mesa_DetailTexFuncSGIS(tvb, offsetp, tt, little_endian, len);
+ mesa_DetailTexFuncSGIS(tvb, offsetp, tt, byte_order, len);
break;
case 2052:
- mesa_SharpenTexFuncSGIS(tvb, offsetp, tt, little_endian, len);
+ mesa_SharpenTexFuncSGIS(tvb, offsetp, tt, byte_order, len);
break;
case 2053:
- mesa_ColorTable(tvb, offsetp, tt, little_endian, len);
+ mesa_ColorTable(tvb, offsetp, tt, byte_order, len);
break;
case 2054:
- mesa_ColorTableParameterfv(tvb, offsetp, tt, little_endian, len);
+ mesa_ColorTableParameterfv(tvb, offsetp, tt, byte_order, len);
break;
case 2055:
- mesa_ColorTableParameteriv(tvb, offsetp, tt, little_endian, len);
+ mesa_ColorTableParameteriv(tvb, offsetp, tt, byte_order, len);
break;
case 2056:
- mesa_CopyColorTable(tvb, offsetp, tt, little_endian, len);
+ mesa_CopyColorTable(tvb, offsetp, tt, byte_order, len);
break;
case 2057:
- mesa_TexImage4DSGIS(tvb, offsetp, tt, little_endian, len);
+ mesa_TexImage4DSGIS(tvb, offsetp, tt, byte_order, len);
break;
case 2058:
- mesa_TexSubImage4DSGIS(tvb, offsetp, tt, little_endian, len);
+ mesa_TexSubImage4DSGIS(tvb, offsetp, tt, byte_order, len);
break;
case 2059:
- mesa_PixelTexGenSGIX(tvb, offsetp, tt, little_endian, len);
+ mesa_PixelTexGenSGIX(tvb, offsetp, tt, byte_order, len);
break;
case 2064:
- mesa_TexFilterFuncSGIS(tvb, offsetp, tt, little_endian, len);
+ mesa_TexFilterFuncSGIS(tvb, offsetp, tt, byte_order, len);
break;
case 2065:
- mesa_PointParameterfEXT(tvb, offsetp, tt, little_endian, len);
+ mesa_PointParameterfEXT(tvb, offsetp, tt, byte_order, len);
break;
case 2066:
- mesa_PointParameterfvEXT(tvb, offsetp, tt, little_endian, len);
+ mesa_PointParameterfvEXT(tvb, offsetp, tt, byte_order, len);
break;
case 2067:
- mesa_FogFuncSGIS(tvb, offsetp, tt, little_endian, len);
+ mesa_FogFuncSGIS(tvb, offsetp, tt, byte_order, len);
break;
case 2071:
- mesa_ReferencePlaneSGIX(tvb, offsetp, tt, little_endian, len);
+ mesa_ReferencePlaneSGIX(tvb, offsetp, tt, byte_order, len);
break;
case 2072:
- mesa_FrameZoomSGIX(tvb, offsetp, tt, little_endian, len);
+ mesa_FrameZoomSGIX(tvb, offsetp, tt, byte_order, len);
break;
case 2082:
- mesa_TextureColorMaskSGIS(tvb, offsetp, tt, little_endian, len);
+ mesa_TextureColorMaskSGIS(tvb, offsetp, tt, byte_order, len);
break;
case 4096:
- mesa_BlendColor(tvb, offsetp, tt, little_endian, len);
+ mesa_BlendColor(tvb, offsetp, tt, byte_order, len);
break;
case 4097:
- mesa_BlendEquation(tvb, offsetp, tt, little_endian, len);
+ mesa_BlendEquation(tvb, offsetp, tt, byte_order, len);
break;
case 4098:
- mesa_PolygonOffsetEXT(tvb, offsetp, tt, little_endian, len);
+ mesa_PolygonOffsetEXT(tvb, offsetp, tt, byte_order, len);
break;
case 4099:
- mesa_TexSubImage1D(tvb, offsetp, tt, little_endian, len);
+ mesa_TexSubImage1D(tvb, offsetp, tt, byte_order, len);
break;
case 4100:
- mesa_TexSubImage2D(tvb, offsetp, tt, little_endian, len);
+ mesa_TexSubImage2D(tvb, offsetp, tt, byte_order, len);
break;
case 4101:
- mesa_ConvolutionFilter1D(tvb, offsetp, tt, little_endian, len);
+ mesa_ConvolutionFilter1D(tvb, offsetp, tt, byte_order, len);
break;
case 4102:
- mesa_ConvolutionFilter2D(tvb, offsetp, tt, little_endian, len);
+ mesa_ConvolutionFilter2D(tvb, offsetp, tt, byte_order, len);
break;
case 4103:
- mesa_ConvolutionParameterf(tvb, offsetp, tt, little_endian, len);
+ mesa_ConvolutionParameterf(tvb, offsetp, tt, byte_order, len);
break;
case 4104:
- mesa_ConvolutionParameterfv(tvb, offsetp, tt, little_endian, len);
+ mesa_ConvolutionParameterfv(tvb, offsetp, tt, byte_order, len);
break;
case 4105:
- mesa_ConvolutionParameteri(tvb, offsetp, tt, little_endian, len);
+ mesa_ConvolutionParameteri(tvb, offsetp, tt, byte_order, len);
break;
case 4106:
- mesa_ConvolutionParameteriv(tvb, offsetp, tt, little_endian, len);
+ mesa_ConvolutionParameteriv(tvb, offsetp, tt, byte_order, len);
break;
case 4107:
- mesa_CopyConvolutionFilter1D(tvb, offsetp, tt, little_endian, len);
+ mesa_CopyConvolutionFilter1D(tvb, offsetp, tt, byte_order, len);
break;
case 4108:
- mesa_CopyConvolutionFilter2D(tvb, offsetp, tt, little_endian, len);
+ mesa_CopyConvolutionFilter2D(tvb, offsetp, tt, byte_order, len);
break;
case 4109:
- mesa_SeparableFilter2D(tvb, offsetp, tt, little_endian, len);
+ mesa_SeparableFilter2D(tvb, offsetp, tt, byte_order, len);
break;
case 4110:
- mesa_Histogram(tvb, offsetp, tt, little_endian, len);
+ mesa_Histogram(tvb, offsetp, tt, byte_order, len);
break;
case 4111:
- mesa_Minmax(tvb, offsetp, tt, little_endian, len);
+ mesa_Minmax(tvb, offsetp, tt, byte_order, len);
break;
case 4112:
- mesa_ResetHistogram(tvb, offsetp, tt, little_endian, len);
+ mesa_ResetHistogram(tvb, offsetp, tt, byte_order, len);
break;
case 4113:
- mesa_ResetMinmax(tvb, offsetp, tt, little_endian, len);
+ mesa_ResetMinmax(tvb, offsetp, tt, byte_order, len);
break;
case 4114:
- mesa_TexImage3D(tvb, offsetp, tt, little_endian, len);
+ mesa_TexImage3D(tvb, offsetp, tt, byte_order, len);
break;
case 4115:
- mesa_TexSubImage3D(tvb, offsetp, tt, little_endian, len);
+ mesa_TexSubImage3D(tvb, offsetp, tt, byte_order, len);
break;
case 4117:
- mesa_BindTexture(tvb, offsetp, tt, little_endian, len);
+ mesa_BindTexture(tvb, offsetp, tt, byte_order, len);
break;
case 4118:
- mesa_PrioritizeTextures(tvb, offsetp, tt, little_endian, len);
+ mesa_PrioritizeTextures(tvb, offsetp, tt, byte_order, len);
break;
case 4119:
- mesa_CopyTexImage1D(tvb, offsetp, tt, little_endian, len);
+ mesa_CopyTexImage1D(tvb, offsetp, tt, byte_order, len);
break;
case 4120:
- mesa_CopyTexImage2D(tvb, offsetp, tt, little_endian, len);
+ mesa_CopyTexImage2D(tvb, offsetp, tt, byte_order, len);
break;
case 4121:
- mesa_CopyTexSubImage1D(tvb, offsetp, tt, little_endian, len);
+ mesa_CopyTexSubImage1D(tvb, offsetp, tt, byte_order, len);
break;
case 4122:
- mesa_CopyTexSubImage2D(tvb, offsetp, tt, little_endian, len);
+ mesa_CopyTexSubImage2D(tvb, offsetp, tt, byte_order, len);
break;
case 4123:
- mesa_CopyTexSubImage3D(tvb, offsetp, tt, little_endian, len);
+ mesa_CopyTexSubImage3D(tvb, offsetp, tt, byte_order, len);
break;
case 4124:
- mesa_FogCoordfvEXT(tvb, offsetp, tt, little_endian, len);
+ mesa_FogCoordfvEXT(tvb, offsetp, tt, byte_order, len);
break;
case 4125:
- mesa_FogCoorddvEXT(tvb, offsetp, tt, little_endian, len);
+ mesa_FogCoorddvEXT(tvb, offsetp, tt, byte_order, len);
break;
case 4126:
- mesa_SecondaryColor3bvEXT(tvb, offsetp, tt, little_endian, len);
+ mesa_SecondaryColor3bvEXT(tvb, offsetp, tt, byte_order, len);
break;
case 4127:
- mesa_SecondaryColor3svEXT(tvb, offsetp, tt, little_endian, len);
+ mesa_SecondaryColor3svEXT(tvb, offsetp, tt, byte_order, len);
break;
case 4128:
- mesa_SecondaryColor3ivEXT(tvb, offsetp, tt, little_endian, len);
+ mesa_SecondaryColor3ivEXT(tvb, offsetp, tt, byte_order, len);
break;
case 4129:
- mesa_SecondaryColor3fvEXT(tvb, offsetp, tt, little_endian, len);
+ mesa_SecondaryColor3fvEXT(tvb, offsetp, tt, byte_order, len);
break;
case 4130:
- mesa_SecondaryColor3dvEXT(tvb, offsetp, tt, little_endian, len);
+ mesa_SecondaryColor3dvEXT(tvb, offsetp, tt, byte_order, len);
break;
case 4131:
- mesa_SecondaryColor3ubvEXT(tvb, offsetp, tt, little_endian, len);
+ mesa_SecondaryColor3ubvEXT(tvb, offsetp, tt, byte_order, len);
break;
case 4132:
- mesa_SecondaryColor3usvEXT(tvb, offsetp, tt, little_endian, len);
+ mesa_SecondaryColor3usvEXT(tvb, offsetp, tt, byte_order, len);
break;
case 4133:
- mesa_SecondaryColor3uivEXT(tvb, offsetp, tt, little_endian, len);
+ mesa_SecondaryColor3uivEXT(tvb, offsetp, tt, byte_order, len);
break;
case 4134:
- mesa_BlendFuncSeparateEXT(tvb, offsetp, tt, little_endian, len);
+ mesa_BlendFuncSeparateEXT(tvb, offsetp, tt, byte_order, len);
break;
case 4135:
- mesa_VertexWeightfvEXT(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexWeightfvEXT(tvb, offsetp, tt, byte_order, len);
break;
case 4136:
- mesa_CombinerParameterfNV(tvb, offsetp, tt, little_endian, len);
+ mesa_CombinerParameterfNV(tvb, offsetp, tt, byte_order, len);
break;
case 4137:
- mesa_CombinerParameterfvNV(tvb, offsetp, tt, little_endian, len);
+ mesa_CombinerParameterfvNV(tvb, offsetp, tt, byte_order, len);
break;
case 4138:
- mesa_CombinerParameteriNV(tvb, offsetp, tt, little_endian, len);
+ mesa_CombinerParameteriNV(tvb, offsetp, tt, byte_order, len);
break;
case 4139:
- mesa_CombinerParameterivNV(tvb, offsetp, tt, little_endian, len);
+ mesa_CombinerParameterivNV(tvb, offsetp, tt, byte_order, len);
break;
case 4140:
- mesa_CombinerInputNV(tvb, offsetp, tt, little_endian, len);
+ mesa_CombinerInputNV(tvb, offsetp, tt, byte_order, len);
break;
case 4141:
- mesa_CombinerOutputNV(tvb, offsetp, tt, little_endian, len);
+ mesa_CombinerOutputNV(tvb, offsetp, tt, byte_order, len);
break;
case 4142:
- mesa_FinalCombinerInputNV(tvb, offsetp, tt, little_endian, len);
+ mesa_FinalCombinerInputNV(tvb, offsetp, tt, byte_order, len);
break;
case 4180:
- mesa_BindProgramNV(tvb, offsetp, tt, little_endian, len);
+ mesa_BindProgramNV(tvb, offsetp, tt, byte_order, len);
break;
case 4181:
- mesa_ExecuteProgramNV(tvb, offsetp, tt, little_endian, len);
+ mesa_ExecuteProgramNV(tvb, offsetp, tt, byte_order, len);
break;
case 4182:
- mesa_RequestResidentProgramsNV(tvb, offsetp, tt, little_endian, len);
+ mesa_RequestResidentProgramsNV(tvb, offsetp, tt, byte_order, len);
break;
case 4183:
- mesa_LoadProgramNV(tvb, offsetp, tt, little_endian, len);
+ mesa_LoadProgramNV(tvb, offsetp, tt, byte_order, len);
break;
case 4184:
- mesa_ProgramEnvParameter4fvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_ProgramEnvParameter4fvARB(tvb, offsetp, tt, byte_order, len);
break;
case 4185:
- mesa_ProgramEnvParameter4dvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_ProgramEnvParameter4dvARB(tvb, offsetp, tt, byte_order, len);
break;
case 4186:
- mesa_ProgramParameters4fvNV(tvb, offsetp, tt, little_endian, len);
+ mesa_ProgramParameters4fvNV(tvb, offsetp, tt, byte_order, len);
break;
case 4187:
- mesa_ProgramParameters4dvNV(tvb, offsetp, tt, little_endian, len);
+ mesa_ProgramParameters4dvNV(tvb, offsetp, tt, byte_order, len);
break;
case 4188:
- mesa_TrackMatrixNV(tvb, offsetp, tt, little_endian, len);
+ mesa_TrackMatrixNV(tvb, offsetp, tt, byte_order, len);
break;
case 4189:
- mesa_VertexAttrib1svARB(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib1svARB(tvb, offsetp, tt, byte_order, len);
break;
case 4190:
- mesa_VertexAttrib2svARB(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib2svARB(tvb, offsetp, tt, byte_order, len);
break;
case 4191:
- mesa_VertexAttrib3svARB(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib3svARB(tvb, offsetp, tt, byte_order, len);
break;
case 4192:
- mesa_VertexAttrib4svARB(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib4svARB(tvb, offsetp, tt, byte_order, len);
break;
case 4193:
- mesa_VertexAttrib1fvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib1fvARB(tvb, offsetp, tt, byte_order, len);
break;
case 4194:
- mesa_VertexAttrib2fvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib2fvARB(tvb, offsetp, tt, byte_order, len);
break;
case 4195:
- mesa_VertexAttrib3fvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib3fvARB(tvb, offsetp, tt, byte_order, len);
break;
case 4196:
- mesa_VertexAttrib4fvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib4fvARB(tvb, offsetp, tt, byte_order, len);
break;
case 4197:
- mesa_VertexAttrib1dvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib1dvARB(tvb, offsetp, tt, byte_order, len);
break;
case 4198:
- mesa_VertexAttrib2dvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib2dvARB(tvb, offsetp, tt, byte_order, len);
break;
case 4199:
- mesa_VertexAttrib3dvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib3dvARB(tvb, offsetp, tt, byte_order, len);
break;
case 4200:
- mesa_VertexAttrib4dvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib4dvARB(tvb, offsetp, tt, byte_order, len);
break;
case 4201:
- mesa_VertexAttrib4NubvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib4NubvARB(tvb, offsetp, tt, byte_order, len);
break;
case 4202:
- mesa_VertexAttribs1svNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttribs1svNV(tvb, offsetp, tt, byte_order, len);
break;
case 4203:
- mesa_VertexAttribs2svNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttribs2svNV(tvb, offsetp, tt, byte_order, len);
break;
case 4204:
- mesa_VertexAttribs3svNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttribs3svNV(tvb, offsetp, tt, byte_order, len);
break;
case 4205:
- mesa_VertexAttribs4svNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttribs4svNV(tvb, offsetp, tt, byte_order, len);
break;
case 4206:
- mesa_VertexAttribs1fvNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttribs1fvNV(tvb, offsetp, tt, byte_order, len);
break;
case 4207:
- mesa_VertexAttribs2fvNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttribs2fvNV(tvb, offsetp, tt, byte_order, len);
break;
case 4208:
- mesa_VertexAttribs3fvNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttribs3fvNV(tvb, offsetp, tt, byte_order, len);
break;
case 4209:
- mesa_VertexAttribs4fvNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttribs4fvNV(tvb, offsetp, tt, byte_order, len);
break;
case 4210:
- mesa_VertexAttribs1dvNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttribs1dvNV(tvb, offsetp, tt, byte_order, len);
break;
case 4211:
- mesa_VertexAttribs2dvNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttribs2dvNV(tvb, offsetp, tt, byte_order, len);
break;
case 4212:
- mesa_VertexAttribs3dvNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttribs3dvNV(tvb, offsetp, tt, byte_order, len);
break;
case 4213:
- mesa_VertexAttribs4dvNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttribs4dvNV(tvb, offsetp, tt, byte_order, len);
break;
case 4214:
- mesa_VertexAttribs4ubvNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttribs4ubvNV(tvb, offsetp, tt, byte_order, len);
break;
case 4215:
- mesa_ProgramLocalParameter4fvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_ProgramLocalParameter4fvARB(tvb, offsetp, tt, byte_order, len);
break;
case 4216:
- mesa_ProgramLocalParameter4dvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_ProgramLocalParameter4dvARB(tvb, offsetp, tt, byte_order, len);
break;
case 4217:
- mesa_ProgramStringARB(tvb, offsetp, tt, little_endian, len);
+ mesa_ProgramStringARB(tvb, offsetp, tt, byte_order, len);
break;
case 4218:
- mesa_ProgramNamedParameter4fvNV(tvb, offsetp, tt, little_endian, len);
+ mesa_ProgramNamedParameter4fvNV(tvb, offsetp, tt, byte_order, len);
break;
case 4219:
- mesa_ProgramNamedParameter4dvNV(tvb, offsetp, tt, little_endian, len);
+ mesa_ProgramNamedParameter4dvNV(tvb, offsetp, tt, byte_order, len);
break;
case 4220:
- mesa_ActiveStencilFaceEXT(tvb, offsetp, tt, little_endian, len);
+ mesa_ActiveStencilFaceEXT(tvb, offsetp, tt, byte_order, len);
break;
case 4221:
- mesa_PointParameteriNV(tvb, offsetp, tt, little_endian, len);
+ mesa_PointParameteriNV(tvb, offsetp, tt, byte_order, len);
break;
case 4222:
- mesa_PointParameterivNV(tvb, offsetp, tt, little_endian, len);
+ mesa_PointParameterivNV(tvb, offsetp, tt, byte_order, len);
break;
case 4228:
- mesa_BlendEquationSeparateEXT(tvb, offsetp, tt, little_endian, len);
+ mesa_BlendEquationSeparateEXT(tvb, offsetp, tt, byte_order, len);
break;
case 4229:
- mesa_DepthBoundsEXT(tvb, offsetp, tt, little_endian, len);
+ mesa_DepthBoundsEXT(tvb, offsetp, tt, byte_order, len);
break;
case 4230:
- mesa_VertexAttrib4bvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib4bvARB(tvb, offsetp, tt, byte_order, len);
break;
case 4231:
- mesa_VertexAttrib4ivARB(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib4ivARB(tvb, offsetp, tt, byte_order, len);
break;
case 4232:
- mesa_VertexAttrib4ubvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib4ubvARB(tvb, offsetp, tt, byte_order, len);
break;
case 4233:
- mesa_VertexAttrib4usvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib4usvARB(tvb, offsetp, tt, byte_order, len);
break;
case 4234:
- mesa_VertexAttrib4uivARB(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib4uivARB(tvb, offsetp, tt, byte_order, len);
break;
case 4235:
- mesa_VertexAttrib4NbvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib4NbvARB(tvb, offsetp, tt, byte_order, len);
break;
case 4236:
- mesa_VertexAttrib4NsvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib4NsvARB(tvb, offsetp, tt, byte_order, len);
break;
case 4237:
- mesa_VertexAttrib4NivARB(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib4NivARB(tvb, offsetp, tt, byte_order, len);
break;
case 4238:
- mesa_VertexAttrib4NusvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib4NusvARB(tvb, offsetp, tt, byte_order, len);
break;
case 4239:
- mesa_VertexAttrib4NuivARB(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib4NuivARB(tvb, offsetp, tt, byte_order, len);
break;
case 4265:
- mesa_VertexAttrib1svNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib1svNV(tvb, offsetp, tt, byte_order, len);
break;
case 4266:
- mesa_VertexAttrib2svNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib2svNV(tvb, offsetp, tt, byte_order, len);
break;
case 4267:
- mesa_VertexAttrib3svNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib3svNV(tvb, offsetp, tt, byte_order, len);
break;
case 4268:
- mesa_VertexAttrib4svNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib4svNV(tvb, offsetp, tt, byte_order, len);
break;
case 4269:
- mesa_VertexAttrib1fvNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib1fvNV(tvb, offsetp, tt, byte_order, len);
break;
case 4270:
- mesa_VertexAttrib2fvNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib2fvNV(tvb, offsetp, tt, byte_order, len);
break;
case 4271:
- mesa_VertexAttrib3fvNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib3fvNV(tvb, offsetp, tt, byte_order, len);
break;
case 4272:
- mesa_VertexAttrib4fvNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib4fvNV(tvb, offsetp, tt, byte_order, len);
break;
case 4273:
- mesa_VertexAttrib1dvNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib1dvNV(tvb, offsetp, tt, byte_order, len);
break;
case 4274:
- mesa_VertexAttrib2dvNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib2dvNV(tvb, offsetp, tt, byte_order, len);
break;
case 4275:
- mesa_VertexAttrib3dvNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib3dvNV(tvb, offsetp, tt, byte_order, len);
break;
case 4276:
- mesa_VertexAttrib4dvNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib4dvNV(tvb, offsetp, tt, byte_order, len);
break;
case 4277:
- mesa_VertexAttrib4ubvNV(tvb, offsetp, tt, little_endian, len);
+ mesa_VertexAttrib4ubvNV(tvb, offsetp, tt, byte_order, len);
break;
case 4326:
- mesa_MatrixIndexubvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_MatrixIndexubvARB(tvb, offsetp, tt, byte_order, len);
break;
case 4327:
- mesa_MatrixIndexusvARB(tvb, offsetp, tt, little_endian, len);
+ mesa_MatrixIndexusvARB(tvb, offsetp, tt, byte_order, len);
break;
case 4328:
- mesa_MatrixIndexuivARB(tvb, offsetp, tt, little_endian, len);
+ mesa_MatrixIndexuivARB(tvb, offsetp, tt, byte_order, len);
break;
case 4329:
- mesa_CurrentPaletteMatrixARB(tvb, offsetp, tt, little_endian, len);
+ mesa_CurrentPaletteMatrixARB(tvb, offsetp, tt, byte_order, len);
break;
default:
- proto_tree_add_item(tt, hf_x11_undecoded, tvb, *offsetp, len, little_endian);
+ proto_tree_add_item(tt, hf_x11_undecoded, tvb, *offsetp, len, ENC_NA);
*offsetp += len;
}
if (*offsetp < next) {
- proto_tree_add_item(tt, hf_x11_unused, tvb, *offsetp, next - *offsetp, little_endian);
+ proto_tree_add_item(tt, hf_x11_unused, tvb, *offsetp, next - *offsetp, ENC_NA);
*offsetp = next;
}
length -= (len + 4);
@@ -4823,10 +4810,10 @@ static void dispatch_glx_render(tvbuff_t *tvb, packet_info *pinfo, int *offsetp,
#include "x11-enum.h"
-static void bigreqEnable(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void bigreqEnable(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void bigreqEnable_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void bigreqEnable_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_maximum_request_length;
@@ -4841,10 +4828,10 @@ static void bigreqEnable_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_maximum_request_length = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_bigreq_Enable_reply_maximum_request_length, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_bigreq_Enable_reply_maximum_request_length, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
static const value_string bigreq_extension_minor[] = {
@@ -4859,7 +4846,7 @@ static x11_reply_info bigreq_replies[] = {
{ 0, NULL }
};
-static void dispatch_bigreq(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_bigreq(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(bigreq_extension_minor);
@@ -4870,7 +4857,7 @@ static void dispatch_bigreq(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, pro
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- bigreqEnable(tvb, pinfo, offsetp, t, little_endian, length);
+ bigreqEnable(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -4882,7 +4869,7 @@ static void register_bigreq(void)
set_handler("BIG-REQUESTS", dispatch_bigreq, bigreq_errors, bigreq_events, bigreq_replies);
}
-static void struct_POINT(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_POINT(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -4891,18 +4878,18 @@ static void struct_POINT(tvbuff_t *tvb, int *offsetp, proto_tree *root, int litt
int f_x;
int f_y;
- item = proto_tree_add_item(root, hf_x11_struct_POINT, tvb, *offsetp, 4, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_POINT, tvb, *offsetp, 4, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_POINT_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_POINT_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_POINT_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_POINT_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
}
-static void struct_RECTANGLE(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_RECTANGLE(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -4913,24 +4900,24 @@ static void struct_RECTANGLE(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_width;
int f_height;
- item = proto_tree_add_item(root, hf_x11_struct_RECTANGLE, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_RECTANGLE, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_RECTANGLE_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_RECTANGLE_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_RECTANGLE_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_RECTANGLE_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_RECTANGLE_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_RECTANGLE_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_RECTANGLE_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_RECTANGLE_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
}
-static int struct_size_STR(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
+static int struct_size_STR(tvbuff_t *tvb, int *offsetp, guint byte_order _U_)
{
int size = 0;
int f_name_len;
@@ -4939,7 +4926,7 @@ static int struct_size_STR(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
return size + 1;
}
-static void struct_STR(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_STR(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -4947,16 +4934,16 @@ static void struct_STR(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little
proto_tree *t;
int f_name_len;
- item = proto_tree_add_item(root, hf_x11_struct_STR, tvb, *offsetp, struct_size_STR(tvb, offsetp, little_endian), little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_STR, tvb, *offsetp, struct_size_STR(tvb, offsetp, byte_order), ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_name_len = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_STR_name_len, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_STR_name_len, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- listOfByte(tvb, offsetp, t, hf_x11_struct_STR_name, f_name_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_struct_STR_name, f_name_len, byte_order);
}
}
-static void struct_DIRECTFORMAT(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_DIRECTFORMAT(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -4971,36 +4958,36 @@ static void struct_DIRECTFORMAT(tvbuff_t *tvb, int *offsetp, proto_tree *root, i
int f_alpha_shift;
int f_alpha_mask;
- item = proto_tree_add_item(root, hf_x11_struct_DIRECTFORMAT, tvb, *offsetp, 16, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_DIRECTFORMAT, tvb, *offsetp, 16, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_red_shift = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_DIRECTFORMAT_red_shift, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_DIRECTFORMAT_red_shift, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_red_mask = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_DIRECTFORMAT_red_mask, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_DIRECTFORMAT_red_mask, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_green_shift = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_DIRECTFORMAT_green_shift, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_DIRECTFORMAT_green_shift, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_green_mask = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_DIRECTFORMAT_green_mask, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_DIRECTFORMAT_green_mask, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_blue_shift = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_DIRECTFORMAT_blue_shift, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_DIRECTFORMAT_blue_shift, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_blue_mask = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_DIRECTFORMAT_blue_mask, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_DIRECTFORMAT_blue_mask, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_alpha_shift = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_DIRECTFORMAT_alpha_shift, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_DIRECTFORMAT_alpha_shift, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_alpha_mask = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_DIRECTFORMAT_alpha_mask, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_DIRECTFORMAT_alpha_mask, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
}
-static void struct_PICTFORMINFO(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_PICTFORMINFO(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -5011,24 +4998,24 @@ static void struct_PICTFORMINFO(tvbuff_t *tvb, int *offsetp, proto_tree *root, i
int f_depth;
int f_colormap;
- item = proto_tree_add_item(root, hf_x11_struct_PICTFORMINFO, tvb, *offsetp, 28, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_PICTFORMINFO, tvb, *offsetp, 28, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_PICTFORMINFO_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_PICTFORMINFO_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_type = field8(tvb, offsetp, t, hf_x11_struct_PICTFORMINFO_type, little_endian);
+ f_type = field8(tvb, offsetp, t, hf_x11_struct_PICTFORMINFO_type, byte_order);
f_depth = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_PICTFORMINFO_depth, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_PICTFORMINFO_depth, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- struct_DIRECTFORMAT(tvb, offsetp, t, little_endian, 1);
+ struct_DIRECTFORMAT(tvb, offsetp, t, byte_order, 1);
f_colormap = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_PICTFORMINFO_colormap, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_PICTFORMINFO_colormap, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
}
-static void struct_PICTVISUAL(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_PICTVISUAL(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -5037,18 +5024,18 @@ static void struct_PICTVISUAL(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_visual;
int f_format;
- item = proto_tree_add_item(root, hf_x11_struct_PICTVISUAL, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_PICTVISUAL, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_visual = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_PICTVISUAL_visual, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_PICTVISUAL_visual, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_format = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_PICTVISUAL_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_PICTVISUAL_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
}
-static int struct_size_PICTDEPTH(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
+static int struct_size_PICTDEPTH(tvbuff_t *tvb, int *offsetp, guint byte_order _U_)
{
int size = 0;
int f_num_visuals;
@@ -5057,7 +5044,7 @@ static int struct_size_PICTDEPTH(tvbuff_t *tvb, int *offsetp, int little_endian
return size + 8;
}
-static void struct_PICTDEPTH(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_PICTDEPTH(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -5066,21 +5053,21 @@ static void struct_PICTDEPTH(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_depth;
int f_num_visuals;
- item = proto_tree_add_item(root, hf_x11_struct_PICTDEPTH, tvb, *offsetp, struct_size_PICTDEPTH(tvb, offsetp, little_endian), little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_PICTDEPTH, tvb, *offsetp, struct_size_PICTDEPTH(tvb, offsetp, byte_order), ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_depth = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_PICTDEPTH_depth, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_PICTDEPTH_depth, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
f_num_visuals = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_PICTDEPTH_num_visuals, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_PICTDEPTH_num_visuals, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(4);
- struct_PICTVISUAL(tvb, offsetp, t, little_endian, f_num_visuals);
+ struct_PICTVISUAL(tvb, offsetp, t, byte_order, f_num_visuals);
}
}
-static int struct_size_PICTSCREEN(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
+static int struct_size_PICTSCREEN(tvbuff_t *tvb, int *offsetp, guint byte_order _U_)
{
int size = 0;
int i, off;
@@ -5088,12 +5075,12 @@ static int struct_size_PICTSCREEN(tvbuff_t *tvb, int *offsetp, int little_endian
f_num_depths = VALUE32(tvb, *offsetp + size + 0);
for (i = 0; i < f_num_depths; i++) {
off = (*offsetp) + size + 8;
- size += struct_size_PICTDEPTH(tvb, &off, little_endian);
+ size += struct_size_PICTDEPTH(tvb, &off, byte_order);
}
return size + 8;
}
-static void struct_PICTSCREEN(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_PICTSCREEN(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -5102,19 +5089,19 @@ static void struct_PICTSCREEN(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_num_depths;
int f_fallback;
- item = proto_tree_add_item(root, hf_x11_struct_PICTSCREEN, tvb, *offsetp, struct_size_PICTSCREEN(tvb, offsetp, little_endian), little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_PICTSCREEN, tvb, *offsetp, struct_size_PICTSCREEN(tvb, offsetp, byte_order), ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_num_depths = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_PICTSCREEN_num_depths, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_PICTSCREEN_num_depths, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_fallback = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_PICTSCREEN_fallback, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_PICTSCREEN_fallback, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_PICTDEPTH(tvb, offsetp, t, little_endian, f_num_depths);
+ struct_PICTDEPTH(tvb, offsetp, t, byte_order, f_num_depths);
}
}
-static void struct_INDEXVALUE(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_INDEXVALUE(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -5126,27 +5113,27 @@ static void struct_INDEXVALUE(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_blue;
int f_alpha;
- item = proto_tree_add_item(root, hf_x11_struct_INDEXVALUE, tvb, *offsetp, 12, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_INDEXVALUE, tvb, *offsetp, 12, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_pixel = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_INDEXVALUE_pixel, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_INDEXVALUE_pixel, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_red = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_INDEXVALUE_red, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_INDEXVALUE_red, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_green = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_INDEXVALUE_green, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_INDEXVALUE_green, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_blue = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_INDEXVALUE_blue, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_INDEXVALUE_blue, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_alpha = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_INDEXVALUE_alpha, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_INDEXVALUE_alpha, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
}
-static void struct_COLOR(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_COLOR(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -5157,24 +5144,24 @@ static void struct_COLOR(tvbuff_t *tvb, int *offsetp, proto_tree *root, int litt
int f_blue;
int f_alpha;
- item = proto_tree_add_item(root, hf_x11_struct_COLOR, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_COLOR, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_red = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_COLOR_red, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_COLOR_red, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_green = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_COLOR_green, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_COLOR_green, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_blue = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_COLOR_blue, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_COLOR_blue, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_alpha = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_COLOR_alpha, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_COLOR_alpha, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
}
-static void struct_POINTFIX(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_POINTFIX(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -5183,47 +5170,47 @@ static void struct_POINTFIX(tvbuff_t *tvb, int *offsetp, proto_tree *root, int l
int f_x;
int f_y;
- item = proto_tree_add_item(root, hf_x11_struct_POINTFIX, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_POINTFIX, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_x = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_POINTFIX_x, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_POINTFIX_x, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_y = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_POINTFIX_y, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_POINTFIX_y, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
}
-static void struct_LINEFIX(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_LINEFIX(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
proto_item *item;
proto_tree *t;
- item = proto_tree_add_item(root, hf_x11_struct_LINEFIX, tvb, *offsetp, 16, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_LINEFIX, tvb, *offsetp, 16, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- struct_POINTFIX(tvb, offsetp, t, little_endian, 1);
- struct_POINTFIX(tvb, offsetp, t, little_endian, 1);
+ struct_POINTFIX(tvb, offsetp, t, byte_order, 1);
+ struct_POINTFIX(tvb, offsetp, t, byte_order, 1);
}
}
-static void struct_TRIANGLE(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_TRIANGLE(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
proto_item *item;
proto_tree *t;
- item = proto_tree_add_item(root, hf_x11_struct_TRIANGLE, tvb, *offsetp, 24, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_TRIANGLE, tvb, *offsetp, 24, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- struct_POINTFIX(tvb, offsetp, t, little_endian, 1);
- struct_POINTFIX(tvb, offsetp, t, little_endian, 1);
- struct_POINTFIX(tvb, offsetp, t, little_endian, 1);
+ struct_POINTFIX(tvb, offsetp, t, byte_order, 1);
+ struct_POINTFIX(tvb, offsetp, t, byte_order, 1);
+ struct_POINTFIX(tvb, offsetp, t, byte_order, 1);
}
}
-static void struct_TRAPEZOID(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_TRAPEZOID(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -5232,20 +5219,20 @@ static void struct_TRAPEZOID(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_top;
int f_bottom;
- item = proto_tree_add_item(root, hf_x11_struct_TRAPEZOID, tvb, *offsetp, 40, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_TRAPEZOID, tvb, *offsetp, 40, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_top = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_TRAPEZOID_top, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_TRAPEZOID_top, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_bottom = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_TRAPEZOID_bottom, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_TRAPEZOID_bottom, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_LINEFIX(tvb, offsetp, t, little_endian, 1);
- struct_LINEFIX(tvb, offsetp, t, little_endian, 1);
+ struct_LINEFIX(tvb, offsetp, t, byte_order, 1);
+ struct_LINEFIX(tvb, offsetp, t, byte_order, 1);
}
}
-static void struct_GLYPHINFO(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_GLYPHINFO(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -5258,30 +5245,30 @@ static void struct_GLYPHINFO(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_x_off;
int f_y_off;
- item = proto_tree_add_item(root, hf_x11_struct_GLYPHINFO, tvb, *offsetp, 12, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_GLYPHINFO, tvb, *offsetp, 12, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_GLYPHINFO_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_GLYPHINFO_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_GLYPHINFO_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_GLYPHINFO_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_GLYPHINFO_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_GLYPHINFO_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_GLYPHINFO_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_GLYPHINFO_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_x_off = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_GLYPHINFO_x_off, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_GLYPHINFO_x_off, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_y_off = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_GLYPHINFO_y_off, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_GLYPHINFO_y_off, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
}
-static void struct_TRANSFORM(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_TRANSFORM(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -5297,39 +5284,39 @@ static void struct_TRANSFORM(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_matrix32;
int f_matrix33;
- item = proto_tree_add_item(root, hf_x11_struct_TRANSFORM, tvb, *offsetp, 36, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_TRANSFORM, tvb, *offsetp, 36, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_matrix11 = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_TRANSFORM_matrix11, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_TRANSFORM_matrix11, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_matrix12 = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_TRANSFORM_matrix12, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_TRANSFORM_matrix12, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_matrix13 = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_TRANSFORM_matrix13, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_TRANSFORM_matrix13, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_matrix21 = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_TRANSFORM_matrix21, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_TRANSFORM_matrix21, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_matrix22 = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_TRANSFORM_matrix22, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_TRANSFORM_matrix22, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_matrix23 = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_TRANSFORM_matrix23, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_TRANSFORM_matrix23, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_matrix31 = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_TRANSFORM_matrix31, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_TRANSFORM_matrix31, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_matrix32 = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_TRANSFORM_matrix32, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_TRANSFORM_matrix32, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_matrix33 = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_TRANSFORM_matrix33, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_TRANSFORM_matrix33, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
}
-static void struct_ANIMCURSORELT(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_ANIMCURSORELT(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -5338,18 +5325,18 @@ static void struct_ANIMCURSORELT(tvbuff_t *tvb, int *offsetp, proto_tree *root,
int f_cursor;
int f_delay;
- item = proto_tree_add_item(root, hf_x11_struct_ANIMCURSORELT, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_ANIMCURSORELT, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_cursor = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ANIMCURSORELT_cursor, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ANIMCURSORELT_cursor, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_delay = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ANIMCURSORELT_delay, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ANIMCURSORELT_delay, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
}
-static void struct_SPANFIX(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_SPANFIX(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -5359,46 +5346,46 @@ static void struct_SPANFIX(tvbuff_t *tvb, int *offsetp, proto_tree *root, int li
int f_r;
int f_y;
- item = proto_tree_add_item(root, hf_x11_struct_SPANFIX, tvb, *offsetp, 12, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_SPANFIX, tvb, *offsetp, 12, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_l = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SPANFIX_l, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SPANFIX_l, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_r = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SPANFIX_r, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SPANFIX_r, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_y = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SPANFIX_y, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SPANFIX_y, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
}
-static void struct_TRAP(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_TRAP(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
proto_item *item;
proto_tree *t;
- item = proto_tree_add_item(root, hf_x11_struct_TRAP, tvb, *offsetp, 24, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_TRAP, tvb, *offsetp, 24, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- struct_SPANFIX(tvb, offsetp, t, little_endian, 1);
- struct_SPANFIX(tvb, offsetp, t, little_endian, 1);
+ struct_SPANFIX(tvb, offsetp, t, byte_order, 1);
+ struct_SPANFIX(tvb, offsetp, t, byte_order, 1);
}
}
-static void compositeQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void compositeQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_client_major_version;
int f_client_minor_version;
f_client_major_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_composite_QueryVersion_client_major_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_composite_QueryVersion_client_major_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_client_minor_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_composite_QueryVersion_client_minor_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_composite_QueryVersion_client_minor_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void compositeQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void compositeQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_major_version;
@@ -5414,93 +5401,93 @@ static void compositeQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_major_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_composite_QueryVersion_reply_major_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_composite_QueryVersion_reply_major_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_minor_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_composite_QueryVersion_reply_minor_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_composite_QueryVersion_reply_minor_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(16);
}
-static void compositeRedirectWindow(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void compositeRedirectWindow(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
int f_update;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_composite_RedirectWindow_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_composite_RedirectWindow_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_update = field8(tvb, offsetp, t, hf_x11_composite_RedirectWindow_update, little_endian);
+ f_update = field8(tvb, offsetp, t, hf_x11_composite_RedirectWindow_update, byte_order);
UNUSED(3);
}
-static void compositeRedirectSubwindows(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void compositeRedirectSubwindows(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
int f_update;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_composite_RedirectSubwindows_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_composite_RedirectSubwindows_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_update = field8(tvb, offsetp, t, hf_x11_composite_RedirectSubwindows_update, little_endian);
+ f_update = field8(tvb, offsetp, t, hf_x11_composite_RedirectSubwindows_update, byte_order);
UNUSED(3);
}
-static void compositeUnredirectWindow(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void compositeUnredirectWindow(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
int f_update;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_composite_UnredirectWindow_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_composite_UnredirectWindow_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_update = field8(tvb, offsetp, t, hf_x11_composite_UnredirectWindow_update, little_endian);
+ f_update = field8(tvb, offsetp, t, hf_x11_composite_UnredirectWindow_update, byte_order);
UNUSED(3);
}
-static void compositeUnredirectSubwindows(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void compositeUnredirectSubwindows(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
int f_update;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_composite_UnredirectSubwindows_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_composite_UnredirectSubwindows_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_update = field8(tvb, offsetp, t, hf_x11_composite_UnredirectSubwindows_update, little_endian);
+ f_update = field8(tvb, offsetp, t, hf_x11_composite_UnredirectSubwindows_update, byte_order);
UNUSED(3);
}
-static void compositeCreateRegionFromBorderClip(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void compositeCreateRegionFromBorderClip(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_region;
int f_window;
f_region = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_composite_CreateRegionFromBorderClip_region, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_composite_CreateRegionFromBorderClip_region, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_composite_CreateRegionFromBorderClip_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_composite_CreateRegionFromBorderClip_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void compositeNameWindowPixmap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void compositeNameWindowPixmap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
int f_pixmap;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_composite_NameWindowPixmap_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_composite_NameWindowPixmap_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pixmap = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_composite_NameWindowPixmap_pixmap, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_composite_NameWindowPixmap_pixmap, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void compositeGetOverlayWindow(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void compositeGetOverlayWindow(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_composite_GetOverlayWindow_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_composite_GetOverlayWindow_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void compositeGetOverlayWindow_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void compositeGetOverlayWindow_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_overlay_win;
@@ -5515,19 +5502,19 @@ static void compositeGetOverlayWindow_Reply(tvbuff_t *tvb, packet_info *pinfo, i
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_overlay_win = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_composite_GetOverlayWindow_reply_overlay_win, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_composite_GetOverlayWindow_reply_overlay_win, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
}
-static void compositeReleaseOverlayWindow(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void compositeReleaseOverlayWindow(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_composite_ReleaseOverlayWindow_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_composite_ReleaseOverlayWindow_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
static const value_string composite_extension_minor[] = {
@@ -5551,7 +5538,7 @@ static x11_reply_info composite_replies[] = {
{ 0, NULL }
};
-static void dispatch_composite(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_composite(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(composite_extension_minor);
@@ -5562,31 +5549,31 @@ static void dispatch_composite(tvbuff_t *tvb, packet_info *pinfo, int *offsetp,
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- compositeQueryVersion(tvb, pinfo, offsetp, t, little_endian, length);
+ compositeQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 1:
- compositeRedirectWindow(tvb, pinfo, offsetp, t, little_endian, length);
+ compositeRedirectWindow(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 2:
- compositeRedirectSubwindows(tvb, pinfo, offsetp, t, little_endian, length);
+ compositeRedirectSubwindows(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 3:
- compositeUnredirectWindow(tvb, pinfo, offsetp, t, little_endian, length);
+ compositeUnredirectWindow(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 4:
- compositeUnredirectSubwindows(tvb, pinfo, offsetp, t, little_endian, length);
+ compositeUnredirectSubwindows(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 5:
- compositeCreateRegionFromBorderClip(tvb, pinfo, offsetp, t, little_endian, length);
+ compositeCreateRegionFromBorderClip(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 6:
- compositeNameWindowPixmap(tvb, pinfo, offsetp, t, little_endian, length);
+ compositeNameWindowPixmap(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 7:
- compositeGetOverlayWindow(tvb, pinfo, offsetp, t, little_endian, length);
+ compositeGetOverlayWindow(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 8:
- compositeReleaseOverlayWindow(tvb, pinfo, offsetp, t, little_endian, length);
+ compositeReleaseOverlayWindow(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -5598,18 +5585,18 @@ static void register_composite(void)
set_handler("Composite", dispatch_composite, composite_errors, composite_events, composite_replies);
}
-static void damageQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void damageQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_client_major_version;
int f_client_minor_version;
f_client_major_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_damage_QueryVersion_client_major_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_damage_QueryVersion_client_major_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_client_minor_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_damage_QueryVersion_client_minor_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_damage_QueryVersion_client_minor_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void damageQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void damageQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_major_version;
@@ -5625,83 +5612,83 @@ static void damageQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *off
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_major_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_damage_QueryVersion_reply_major_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_damage_QueryVersion_reply_major_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_minor_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_damage_QueryVersion_reply_minor_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_damage_QueryVersion_reply_minor_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(16);
}
-static void damageCreate(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void damageCreate(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_damage;
int f_drawable;
int f_level;
f_damage = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_damage_Create_damage, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_damage_Create_damage, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_damage_Create_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_damage_Create_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_level = field8(tvb, offsetp, t, hf_x11_damage_Create_level, little_endian);
+ f_level = field8(tvb, offsetp, t, hf_x11_damage_Create_level, byte_order);
UNUSED(3);
}
-static void damageDestroy(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void damageDestroy(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_damage;
f_damage = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_damage_Destroy_damage, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_damage_Destroy_damage, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void damageSubtract(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void damageSubtract(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_damage;
int f_repair;
int f_parts;
f_damage = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_damage_Subtract_damage, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_damage_Subtract_damage, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_repair = field32(tvb, offsetp, t, hf_x11_damage_Subtract_repair, little_endian);
- f_parts = field32(tvb, offsetp, t, hf_x11_damage_Subtract_parts, little_endian);
+ f_repair = field32(tvb, offsetp, t, hf_x11_damage_Subtract_repair, byte_order);
+ f_parts = field32(tvb, offsetp, t, hf_x11_damage_Subtract_parts, byte_order);
}
-static void damageAdd(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void damageAdd(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_drawable;
int f_region;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_damage_Add_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_damage_Add_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_region = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_damage_Add_region, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_damage_Add_region, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void damageNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void damageNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_level;
int f_drawable;
int f_damage;
int f_timestamp;
- f_level = field8(tvb, offsetp, t, hf_x11_damage_Notify_level, little_endian);
+ f_level = field8(tvb, offsetp, t, hf_x11_damage_Notify_level, byte_order);
CARD16(event_sequencenumber);
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_damage_Notify_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_damage_Notify_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_damage = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_damage_Notify_damage, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_damage_Notify_damage, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_damage_Notify_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_damage_Notify_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_RECTANGLE(tvb, offsetp, t, little_endian, 1);
- struct_RECTANGLE(tvb, offsetp, t, little_endian, 1);
+ struct_RECTANGLE(tvb, offsetp, t, byte_order, 1);
+ struct_RECTANGLE(tvb, offsetp, t, byte_order, 1);
}
static const value_string damage_extension_minor[] = {
{ 0, "QueryVersion" },
@@ -5720,7 +5707,7 @@ static x11_reply_info damage_replies[] = {
{ 0, NULL }
};
-static void dispatch_damage(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_damage(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(damage_extension_minor);
@@ -5731,19 +5718,19 @@ static void dispatch_damage(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, pro
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- damageQueryVersion(tvb, pinfo, offsetp, t, little_endian, length);
+ damageQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 1:
- damageCreate(tvb, pinfo, offsetp, t, little_endian, length);
+ damageCreate(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 2:
- damageDestroy(tvb, pinfo, offsetp, t, little_endian, length);
+ damageDestroy(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 3:
- damageSubtract(tvb, pinfo, offsetp, t, little_endian, length);
+ damageSubtract(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 4:
- damageAdd(tvb, pinfo, offsetp, t, little_endian, length);
+ damageAdd(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -5755,18 +5742,18 @@ static void register_damage(void)
set_handler("DAMAGE", dispatch_damage, damage_errors, damage_events, damage_replies);
}
-static void dpmsGetVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void dpmsGetVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_client_major_version;
int f_client_minor_version;
f_client_major_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dpms_GetVersion_client_major_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_dpms_GetVersion_client_major_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_client_minor_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dpms_GetVersion_client_minor_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_dpms_GetVersion_client_minor_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void dpmsGetVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dpmsGetVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_server_major_version;
@@ -5782,20 +5769,20 @@ static void dpmsGetVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_server_major_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dpms_GetVersion_reply_server_major_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_dpms_GetVersion_reply_server_major_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_server_minor_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dpms_GetVersion_reply_server_minor_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_dpms_GetVersion_reply_server_minor_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void dpmsCapable(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void dpmsCapable(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void dpmsCapable_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dpmsCapable_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_capable;
@@ -5810,18 +5797,18 @@ static void dpmsCapable_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, p
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_capable = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dpms_Capable_reply_capable, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_dpms_Capable_reply_capable, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(23);
}
-static void dpmsGetTimeouts(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void dpmsGetTimeouts(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void dpmsGetTimeouts_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dpmsGetTimeouts_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_standby_timeout;
@@ -5838,54 +5825,54 @@ static void dpmsGetTimeouts_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_standby_timeout = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dpms_GetTimeouts_reply_standby_timeout, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_dpms_GetTimeouts_reply_standby_timeout, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_suspend_timeout = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dpms_GetTimeouts_reply_suspend_timeout, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_dpms_GetTimeouts_reply_suspend_timeout, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_off_timeout = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dpms_GetTimeouts_reply_off_timeout, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_dpms_GetTimeouts_reply_off_timeout, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(18);
}
-static void dpmsSetTimeouts(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void dpmsSetTimeouts(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_standby_timeout;
int f_suspend_timeout;
int f_off_timeout;
f_standby_timeout = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dpms_SetTimeouts_standby_timeout, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_dpms_SetTimeouts_standby_timeout, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_suspend_timeout = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dpms_SetTimeouts_suspend_timeout, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_dpms_SetTimeouts_suspend_timeout, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_off_timeout = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dpms_SetTimeouts_off_timeout, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_dpms_SetTimeouts_off_timeout, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void dpmsEnable(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void dpmsEnable(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void dpmsDisable(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void dpmsDisable(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void dpmsForceLevel(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void dpmsForceLevel(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_power_level;
- f_power_level = field16(tvb, offsetp, t, hf_x11_dpms_ForceLevel_power_level, little_endian);
+ f_power_level = field16(tvb, offsetp, t, hf_x11_dpms_ForceLevel_power_level, byte_order);
}
-static void dpmsInfo(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void dpmsInfo(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void dpmsInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dpmsInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_power_level;
@@ -5901,11 +5888,11 @@ static void dpmsInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, prot
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_power_level = field16(tvb, offsetp, t, hf_x11_dpms_Info_reply_power_level, little_endian);
+ f_power_level = field16(tvb, offsetp, t, hf_x11_dpms_Info_reply_power_level, byte_order);
f_state = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dpms_Info_reply_state, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_dpms_Info_reply_state, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(21);
}
@@ -5931,7 +5918,7 @@ static x11_reply_info dpms_replies[] = {
{ 0, NULL }
};
-static void dispatch_dpms(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_dpms(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(dpms_extension_minor);
@@ -5942,28 +5929,28 @@ static void dispatch_dpms(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- dpmsGetVersion(tvb, pinfo, offsetp, t, little_endian, length);
+ dpmsGetVersion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 1:
- dpmsCapable(tvb, pinfo, offsetp, t, little_endian, length);
+ dpmsCapable(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 2:
- dpmsGetTimeouts(tvb, pinfo, offsetp, t, little_endian, length);
+ dpmsGetTimeouts(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 3:
- dpmsSetTimeouts(tvb, pinfo, offsetp, t, little_endian, length);
+ dpmsSetTimeouts(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 4:
- dpmsEnable(tvb, pinfo, offsetp, t, little_endian, length);
+ dpmsEnable(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 5:
- dpmsDisable(tvb, pinfo, offsetp, t, little_endian, length);
+ dpmsDisable(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 6:
- dpmsForceLevel(tvb, pinfo, offsetp, t, little_endian, length);
+ dpmsForceLevel(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 7:
- dpmsInfo(tvb, pinfo, offsetp, t, little_endian, length);
+ dpmsInfo(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -5975,7 +5962,7 @@ static void register_dpms(void)
set_handler("DPMS", dispatch_dpms, dpms_errors, dpms_events, dpms_replies);
}
-static void struct_DRI2Buffer(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_DRI2Buffer(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -5987,25 +5974,25 @@ static void struct_DRI2Buffer(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_cpp;
int f_flags;
- item = proto_tree_add_item(root, hf_x11_struct_DRI2Buffer, tvb, *offsetp, 20, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_DRI2Buffer, tvb, *offsetp, 20, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- f_attachment = field32(tvb, offsetp, t, hf_x11_struct_DRI2Buffer_attachment, little_endian);
+ f_attachment = field32(tvb, offsetp, t, hf_x11_struct_DRI2Buffer_attachment, byte_order);
f_name = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_DRI2Buffer_name, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_DRI2Buffer_name, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pitch = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_DRI2Buffer_pitch, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_DRI2Buffer_pitch, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_cpp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_DRI2Buffer_cpp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_DRI2Buffer_cpp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_flags = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_DRI2Buffer_flags, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_DRI2Buffer_flags, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
}
-static void struct_AttachFormat(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_AttachFormat(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -6014,27 +6001,27 @@ static void struct_AttachFormat(tvbuff_t *tvb, int *offsetp, proto_tree *root, i
int f_attachment;
int f_format;
- item = proto_tree_add_item(root, hf_x11_struct_AttachFormat, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_AttachFormat, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- f_attachment = field32(tvb, offsetp, t, hf_x11_struct_AttachFormat_attachment, little_endian);
+ f_attachment = field32(tvb, offsetp, t, hf_x11_struct_AttachFormat_attachment, byte_order);
f_format = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_AttachFormat_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_AttachFormat_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
}
-static void dri2QueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void dri2QueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_major_version;
int f_minor_version;
f_major_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_QueryVersion_major_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_QueryVersion_major_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_minor_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_QueryVersion_minor_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_QueryVersion_minor_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void dri2QueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dri2QueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_major_version;
@@ -6050,26 +6037,26 @@ static void dri2QueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offse
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_major_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_QueryVersion_reply_major_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_QueryVersion_reply_major_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_minor_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_QueryVersion_reply_minor_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_QueryVersion_reply_minor_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void dri2Connect(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void dri2Connect(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
int f_driver_type;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_Connect_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_Connect_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_driver_type = field32(tvb, offsetp, t, hf_x11_dri2_Connect_driver_type, little_endian);
+ f_driver_type = field32(tvb, offsetp, t, hf_x11_dri2_Connect_driver_type, byte_order);
}
-static void dri2Connect_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dri2Connect_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_driver_name_length;
@@ -6085,32 +6072,32 @@ static void dri2Connect_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, p
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_driver_name_length = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_Connect_reply_driver_name_length, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_Connect_reply_driver_name_length, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_device_name_length = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_Connect_reply_device_name_length, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_Connect_reply_device_name_length, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(16);
- listOfByte(tvb, offsetp, t, hf_x11_dri2_Connect_reply_driver_name, f_driver_name_length, little_endian);
- listOfByte(tvb, offsetp, t, hf_x11_dri2_Connect_reply_alignment_pad, (((f_driver_name_length + 3 ) & (~3)) - f_driver_name_length), little_endian);
- listOfByte(tvb, offsetp, t, hf_x11_dri2_Connect_reply_device_name, f_device_name_length, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_dri2_Connect_reply_driver_name, f_driver_name_length, byte_order);
+ listOfByte(tvb, offsetp, t, hf_x11_dri2_Connect_reply_alignment_pad, (((f_driver_name_length + 3 ) & (~3)) - f_driver_name_length), byte_order);
+ listOfByte(tvb, offsetp, t, hf_x11_dri2_Connect_reply_device_name, f_device_name_length, byte_order);
}
-static void dri2Authenticate(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void dri2Authenticate(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
int f_magic;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_Authenticate_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_Authenticate_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_magic = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_Authenticate_magic, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_Authenticate_magic, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void dri2Authenticate_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dri2Authenticate_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_authenticated;
@@ -6125,42 +6112,42 @@ static void dri2Authenticate_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offse
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_authenticated = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_Authenticate_reply_authenticated, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_Authenticate_reply_authenticated, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void dri2CreateDrawable(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void dri2CreateDrawable(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_drawable;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_CreateDrawable_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_CreateDrawable_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void dri2DestroyDrawable(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void dri2DestroyDrawable(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_drawable;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_DestroyDrawable_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_DestroyDrawable_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void dri2GetBuffers(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void dri2GetBuffers(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_drawable;
int f_count;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_GetBuffers_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_GetBuffers_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_count = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_GetBuffers_count, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_GetBuffers_count, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard32(tvb, offsetp, t, hf_x11_dri2_GetBuffers_attachments, hf_x11_dri2_GetBuffers_attachments_item, (length - 12) / 4, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_dri2_GetBuffers_attachments, hf_x11_dri2_GetBuffers_attachments_item, (length - 12) / 4, byte_order);
}
-static void dri2GetBuffers_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dri2GetBuffers_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_width;
@@ -6177,41 +6164,41 @@ static void dri2GetBuffers_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_width = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_GetBuffers_reply_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_GetBuffers_reply_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_height = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_GetBuffers_reply_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_GetBuffers_reply_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_count = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_GetBuffers_reply_count, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_GetBuffers_reply_count, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- struct_DRI2Buffer(tvb, offsetp, t, little_endian, f_count);
+ struct_DRI2Buffer(tvb, offsetp, t, byte_order, f_count);
}
-static void dri2CopyRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void dri2CopyRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_drawable;
int f_region;
int f_dest;
int f_src;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_CopyRegion_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_CopyRegion_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_region = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_CopyRegion_region, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_CopyRegion_region, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_dest = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_CopyRegion_dest, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_CopyRegion_dest, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_src = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_CopyRegion_src, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_CopyRegion_src, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void dri2CopyRegion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dri2CopyRegion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
@@ -6225,23 +6212,23 @@ static void dri2CopyRegion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void dri2GetBuffersWithFormat(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void dri2GetBuffersWithFormat(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_drawable;
int f_count;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_GetBuffersWithFormat_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_GetBuffersWithFormat_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_count = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_GetBuffersWithFormat_count, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_GetBuffersWithFormat_count, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_AttachFormat(tvb, offsetp, t, little_endian, (length - 12) / 8);
+ struct_AttachFormat(tvb, offsetp, t, byte_order, (length - 12) / 8);
}
-static void dri2GetBuffersWithFormat_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dri2GetBuffersWithFormat_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_width;
@@ -6258,19 +6245,310 @@ static void dri2GetBuffersWithFormat_Reply(tvbuff_t *tvb, packet_info *pinfo, in
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_width = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_GetBuffersWithFormat_reply_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_GetBuffersWithFormat_reply_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_height = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_GetBuffersWithFormat_reply_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_GetBuffersWithFormat_reply_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_count = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_dri2_GetBuffersWithFormat_reply_count, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_dri2_GetBuffersWithFormat_reply_count, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- struct_DRI2Buffer(tvb, offsetp, t, little_endian, f_count);
+ struct_DRI2Buffer(tvb, offsetp, t, byte_order, f_count);
+}
+
+static void dri2SwapBuffers(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
+{
+ int f_drawable;
+ int f_target_msc_hi;
+ int f_target_msc_lo;
+ int f_divisor_hi;
+ int f_divisor_lo;
+ int f_remainder_hi;
+ int f_remainder_lo;
+ f_drawable = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_SwapBuffers_drawable, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_target_msc_hi = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_SwapBuffers_target_msc_hi, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_target_msc_lo = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_SwapBuffers_target_msc_lo, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_divisor_hi = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_SwapBuffers_divisor_hi, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_divisor_lo = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_SwapBuffers_divisor_lo, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_remainder_hi = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_SwapBuffers_remainder_hi, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_remainder_lo = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_SwapBuffers_remainder_lo, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+}
+static void dri2SwapBuffers_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
+{
+ int f_length, length, sequence_number;
+ int f_swap_hi;
+ int f_swap_lo;
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, "-SwapBuffers");
+
+ REPLY(reply);
+ UNUSED(1);
+ sequence_number = VALUE16(tvb, *offsetp);
+ proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
+ "sequencenumber: %d (dri2-SwapBuffers)", sequence_number);
+ *offsetp += 2;
+ f_length = VALUE32(tvb, *offsetp);
+ length = f_length * 4 + 32;
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_swap_hi = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_SwapBuffers_reply_swap_hi, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_swap_lo = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_SwapBuffers_reply_swap_lo, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+}
+
+static void dri2GetMSC(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
+{
+ int f_drawable;
+ f_drawable = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_GetMSC_drawable, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+}
+static void dri2GetMSC_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
+{
+ int f_length, length, sequence_number;
+ int f_ust_hi;
+ int f_ust_lo;
+ int f_msc_hi;
+ int f_msc_lo;
+ int f_sbc_hi;
+ int f_sbc_lo;
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, "-GetMSC");
+
+ REPLY(reply);
+ UNUSED(1);
+ sequence_number = VALUE16(tvb, *offsetp);
+ proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
+ "sequencenumber: %d (dri2-GetMSC)", sequence_number);
+ *offsetp += 2;
+ f_length = VALUE32(tvb, *offsetp);
+ length = f_length * 4 + 32;
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_ust_hi = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_GetMSC_reply_ust_hi, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_ust_lo = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_GetMSC_reply_ust_lo, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_msc_hi = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_GetMSC_reply_msc_hi, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_msc_lo = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_GetMSC_reply_msc_lo, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_sbc_hi = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_GetMSC_reply_sbc_hi, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_sbc_lo = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_GetMSC_reply_sbc_lo, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+}
+
+static void dri2WaitMSC(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
+{
+ int f_drawable;
+ int f_target_msc_hi;
+ int f_target_msc_lo;
+ int f_divisor_hi;
+ int f_divisor_lo;
+ int f_remainder_hi;
+ int f_remainder_lo;
+ f_drawable = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_WaitMSC_drawable, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_target_msc_hi = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_WaitMSC_target_msc_hi, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_target_msc_lo = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_WaitMSC_target_msc_lo, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_divisor_hi = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_WaitMSC_divisor_hi, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_divisor_lo = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_WaitMSC_divisor_lo, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_remainder_hi = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_WaitMSC_remainder_hi, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_remainder_lo = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_WaitMSC_remainder_lo, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+}
+static void dri2WaitMSC_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
+{
+ int f_length, length, sequence_number;
+ int f_ust_hi;
+ int f_ust_lo;
+ int f_msc_hi;
+ int f_msc_lo;
+ int f_sbc_hi;
+ int f_sbc_lo;
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, "-WaitMSC");
+
+ REPLY(reply);
+ UNUSED(1);
+ sequence_number = VALUE16(tvb, *offsetp);
+ proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
+ "sequencenumber: %d (dri2-WaitMSC)", sequence_number);
+ *offsetp += 2;
+ f_length = VALUE32(tvb, *offsetp);
+ length = f_length * 4 + 32;
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_ust_hi = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_WaitMSC_reply_ust_hi, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_ust_lo = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_WaitMSC_reply_ust_lo, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_msc_hi = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_WaitMSC_reply_msc_hi, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_msc_lo = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_WaitMSC_reply_msc_lo, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_sbc_hi = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_WaitMSC_reply_sbc_hi, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_sbc_lo = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_WaitMSC_reply_sbc_lo, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+}
+
+static void dri2WaitSBC(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
+{
+ int f_drawable;
+ int f_target_sbc_hi;
+ int f_target_sbc_lo;
+ f_drawable = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_WaitSBC_drawable, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_target_sbc_hi = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_WaitSBC_target_sbc_hi, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_target_sbc_lo = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_WaitSBC_target_sbc_lo, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+}
+static void dri2WaitSBC_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
+{
+ int f_length, length, sequence_number;
+ int f_ust_hi;
+ int f_ust_lo;
+ int f_msc_hi;
+ int f_msc_lo;
+ int f_sbc_hi;
+ int f_sbc_lo;
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, "-WaitSBC");
+
+ REPLY(reply);
+ UNUSED(1);
+ sequence_number = VALUE16(tvb, *offsetp);
+ proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
+ "sequencenumber: %d (dri2-WaitSBC)", sequence_number);
+ *offsetp += 2;
+ f_length = VALUE32(tvb, *offsetp);
+ length = f_length * 4 + 32;
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_ust_hi = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_WaitSBC_reply_ust_hi, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_ust_lo = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_WaitSBC_reply_ust_lo, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_msc_hi = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_WaitSBC_reply_msc_hi, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_msc_lo = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_WaitSBC_reply_msc_lo, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_sbc_hi = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_WaitSBC_reply_sbc_hi, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_sbc_lo = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_WaitSBC_reply_sbc_lo, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+}
+
+static void dri2SwapInterval(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
+{
+ int f_drawable;
+ int f_interval;
+ f_drawable = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_SwapInterval_drawable, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_interval = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_SwapInterval_interval, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+}
+
+static void dri2BufferSwapComplete(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
+{
+ int f_event_type;
+ int f_drawable;
+ int f_ust_hi;
+ int f_ust_lo;
+ int f_msc_hi;
+ int f_msc_lo;
+ int f_sbc;
+ UNUSED(1);
+ CARD16(event_sequencenumber);
+ f_event_type = field16(tvb, offsetp, t, hf_x11_dri2_BufferSwapComplete_event_type, byte_order);
+ UNUSED(2);
+ f_drawable = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_BufferSwapComplete_drawable, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_ust_hi = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_BufferSwapComplete_ust_hi, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_ust_lo = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_BufferSwapComplete_ust_lo, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_msc_hi = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_BufferSwapComplete_msc_hi, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_msc_lo = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_BufferSwapComplete_msc_lo, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_sbc = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_BufferSwapComplete_sbc, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+}
+
+static void dri2InvalidateBuffers(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
+{
+ int f_drawable;
+ UNUSED(1);
+ CARD16(event_sequencenumber);
+ f_drawable = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_dri2_InvalidateBuffers_drawable, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
}
static const value_string dri2_extension_minor[] = {
{ 0, "QueryVersion" },
@@ -6281,9 +6559,16 @@ static const value_string dri2_extension_minor[] = {
{ 5, "GetBuffers" },
{ 6, "CopyRegion" },
{ 7, "GetBuffersWithFormat" },
+ { 8, "SwapBuffers" },
+ { 9, "GetMSC" },
+ { 10, "WaitMSC" },
+ { 11, "WaitSBC" },
+ { 12, "SwapInterval" },
{ 0, NULL }
};
const x11_event_info dri2_events[] = {
+ { "dri2-BufferSwapComplete", dri2BufferSwapComplete },
+ { "dri2-InvalidateBuffers", dri2InvalidateBuffers },
{ NULL, NULL }
};
static x11_reply_info dri2_replies[] = {
@@ -6293,10 +6578,14 @@ static x11_reply_info dri2_replies[] = {
{ 5, dri2GetBuffers_Reply },
{ 6, dri2CopyRegion_Reply },
{ 7, dri2GetBuffersWithFormat_Reply },
+ { 8, dri2SwapBuffers_Reply },
+ { 9, dri2GetMSC_Reply },
+ { 10, dri2WaitMSC_Reply },
+ { 11, dri2WaitSBC_Reply },
{ 0, NULL }
};
-static void dispatch_dri2(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_dri2(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(dri2_extension_minor);
@@ -6307,28 +6596,43 @@ static void dispatch_dri2(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- dri2QueryVersion(tvb, pinfo, offsetp, t, little_endian, length);
+ dri2QueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 1:
- dri2Connect(tvb, pinfo, offsetp, t, little_endian, length);
+ dri2Connect(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 2:
- dri2Authenticate(tvb, pinfo, offsetp, t, little_endian, length);
+ dri2Authenticate(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 3:
- dri2CreateDrawable(tvb, pinfo, offsetp, t, little_endian, length);
+ dri2CreateDrawable(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 4:
- dri2DestroyDrawable(tvb, pinfo, offsetp, t, little_endian, length);
+ dri2DestroyDrawable(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 5:
- dri2GetBuffers(tvb, pinfo, offsetp, t, little_endian, length);
+ dri2GetBuffers(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 6:
- dri2CopyRegion(tvb, pinfo, offsetp, t, little_endian, length);
+ dri2CopyRegion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 7:
- dri2GetBuffersWithFormat(tvb, pinfo, offsetp, t, little_endian, length);
+ dri2GetBuffersWithFormat(tvb, pinfo, offsetp, t, byte_order, length);
+ break;
+ case 8:
+ dri2SwapBuffers(tvb, pinfo, offsetp, t, byte_order, length);
+ break;
+ case 9:
+ dri2GetMSC(tvb, pinfo, offsetp, t, byte_order, length);
+ break;
+ case 10:
+ dri2WaitMSC(tvb, pinfo, offsetp, t, byte_order, length);
+ break;
+ case 11:
+ dri2WaitSBC(tvb, pinfo, offsetp, t, byte_order, length);
+ break;
+ case 12:
+ dri2SwapInterval(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -6340,18 +6644,18 @@ static void register_dri2(void)
set_handler("DRI2", dispatch_dri2, dri2_errors, dri2_events, dri2_replies);
}
-static void geQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void geQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_client_major_version;
int f_client_minor_version;
f_client_major_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_ge_QueryVersion_client_major_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_ge_QueryVersion_client_major_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_client_minor_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_ge_QueryVersion_client_minor_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_ge_QueryVersion_client_minor_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void geQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void geQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_major_version;
@@ -6367,13 +6671,13 @@ static void geQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_major_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_ge_QueryVersion_reply_major_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_ge_QueryVersion_reply_major_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_minor_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_ge_QueryVersion_reply_minor_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_ge_QueryVersion_reply_minor_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(20);
}
@@ -6389,7 +6693,7 @@ static x11_reply_info ge_replies[] = {
{ 0, NULL }
};
-static void dispatch_ge(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_ge(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(ge_extension_minor);
@@ -6400,7 +6704,7 @@ static void dispatch_ge(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_t
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- geQueryVersion(tvb, pinfo, offsetp, t, little_endian, length);
+ geQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -6412,7 +6716,7 @@ static void register_ge(void)
set_handler("Generic Event Extension", dispatch_ge, ge_errors, ge_events, ge_replies);
}
-static void glxPbufferClobber(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void glxPbufferClobber(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_event_type;
int f_draw_type;
@@ -6427,70 +6731,70 @@ static void glxPbufferClobber(tvbuff_t *tvb, int *offsetp, proto_tree *t, int li
UNUSED(1);
CARD16(event_sequencenumber);
f_event_type = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_PbufferClobber_event_type, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_PbufferClobber_event_type, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_draw_type = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_PbufferClobber_draw_type, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_PbufferClobber_draw_type, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_PbufferClobber_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_PbufferClobber_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_b_mask = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_PbufferClobber_b_mask, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_PbufferClobber_b_mask, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_aux_buffer = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_PbufferClobber_aux_buffer, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_PbufferClobber_aux_buffer, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_PbufferClobber_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_PbufferClobber_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_PbufferClobber_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_PbufferClobber_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_PbufferClobber_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_PbufferClobber_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_PbufferClobber_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_PbufferClobber_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_count = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_PbufferClobber_count, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_PbufferClobber_count, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(4);
}
-static void glxRender(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxRender(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_Render_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_Render_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- dispatch_glx_render(tvb, pinfo, offsetp, t, little_endian, (length - 8));
+ dispatch_glx_render(tvb, pinfo, offsetp, t, byte_order, (length - 8));
}
-static void glxRenderLarge(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxRenderLarge(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_request_num;
int f_request_total;
int f_data_len;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_RenderLarge_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_RenderLarge_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_request_num = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_RenderLarge_request_num, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_RenderLarge_request_num, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_request_total = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_RenderLarge_request_total, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_RenderLarge_request_total, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_data_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_RenderLarge_data_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_RenderLarge_data_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_RenderLarge_data, f_data_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_RenderLarge_data, f_data_len, byte_order);
length -= f_data_len * 1;
}
-static void glxCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context;
int f_visual;
@@ -6498,47 +6802,47 @@ static void glxCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp
int f_share_list;
int f_is_direct;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreateContext_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreateContext_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_visual = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreateContext_visual, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreateContext_visual, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreateContext_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreateContext_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_share_list = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreateContext_share_list, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreateContext_share_list, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_is_direct = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreateContext_is_direct, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreateContext_is_direct, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
}
-static void glxDestroyContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxDestroyContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_DestroyContext_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_DestroyContext_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxMakeCurrent(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxMakeCurrent(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_drawable;
int f_context;
int f_old_context_tag;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_MakeCurrent_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_MakeCurrent_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_MakeCurrent_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_MakeCurrent_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_old_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_MakeCurrent_old_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_MakeCurrent_old_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxMakeCurrent_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxMakeCurrent_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_context_tag;
@@ -6553,22 +6857,22 @@ static void glxMakeCurrent_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_MakeCurrent_reply_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_MakeCurrent_reply_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
}
-static void glxIsDirect(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxIsDirect(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_IsDirect_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_IsDirect_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxIsDirect_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxIsDirect_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_is_direct;
@@ -6583,26 +6887,26 @@ static void glxIsDirect_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, p
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_is_direct = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_IsDirect_reply_is_direct, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_IsDirect_reply_is_direct, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(23);
}
-static void glxQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_major_version;
int f_minor_version;
f_major_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_QueryVersion_major_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_QueryVersion_major_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_minor_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_QueryVersion_minor_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_QueryVersion_minor_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_major_version;
@@ -6618,66 +6922,66 @@ static void glxQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_major_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_QueryVersion_reply_major_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_QueryVersion_reply_major_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_minor_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_QueryVersion_reply_minor_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_QueryVersion_reply_minor_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(16);
}
-static void glxWaitGL(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxWaitGL(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_WaitGL_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_WaitGL_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxWaitX(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxWaitX(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_WaitX_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_WaitX_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxCopyContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxCopyContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_src;
int f_dest;
int f_mask;
int f_src_context_tag;
f_src = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CopyContext_src, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CopyContext_src, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_dest = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CopyContext_dest, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CopyContext_dest, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_mask = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CopyContext_mask, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CopyContext_mask, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_src_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CopyContext_src_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CopyContext_src_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxSwapBuffers(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxSwapBuffers(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_drawable;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_SwapBuffers_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_SwapBuffers_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_SwapBuffers_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_SwapBuffers_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxUseXFont(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxUseXFont(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_font;
@@ -6685,50 +6989,50 @@ static void glxUseXFont(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, pro
int f_count;
int f_list_base;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_UseXFont_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_UseXFont_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_font = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_UseXFont_font, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_UseXFont_font, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_first = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_UseXFont_first, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_UseXFont_first, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_count = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_UseXFont_count, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_UseXFont_count, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_list_base = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_UseXFont_list_base, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_UseXFont_list_base, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxCreateGLXPixmap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxCreateGLXPixmap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
int f_visual;
int f_pixmap;
int f_glx_pixmap;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreateGLXPixmap_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreateGLXPixmap_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_visual = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreateGLXPixmap_visual, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreateGLXPixmap_visual, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pixmap = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreateGLXPixmap_pixmap, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreateGLXPixmap_pixmap, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_glx_pixmap = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreateGLXPixmap_glx_pixmap, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreateGLXPixmap_glx_pixmap, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetVisualConfigs(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetVisualConfigs(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetVisualConfigs_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetVisualConfigs_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetVisualConfigs_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetVisualConfigs_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_num_visuals;
@@ -6744,52 +7048,52 @@ static void glxGetVisualConfigs_Reply(tvbuff_t *tvb, packet_info *pinfo, int *of
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_visuals = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetVisualConfigs_reply_num_visuals, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetVisualConfigs_reply_num_visuals, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_properties = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetVisualConfigs_reply_num_properties, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetVisualConfigs_reply_num_properties, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(16);
- listOfCard32(tvb, offsetp, t, hf_x11_glx_GetVisualConfigs_reply_property_list, hf_x11_glx_GetVisualConfigs_reply_property_list_item, f_length, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_GetVisualConfigs_reply_property_list, hf_x11_glx_GetVisualConfigs_reply_property_list_item, f_length, byte_order);
}
-static void glxDestroyGLXPixmap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxDestroyGLXPixmap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_glx_pixmap;
f_glx_pixmap = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_DestroyGLXPixmap_glx_pixmap, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_DestroyGLXPixmap_glx_pixmap, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxVendorPrivate(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxVendorPrivate(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_vendor_code;
int f_context_tag;
f_vendor_code = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_VendorPrivate_vendor_code, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_VendorPrivate_vendor_code, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_VendorPrivate_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_VendorPrivate_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_VendorPrivate_data, (length - 12) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_VendorPrivate_data, (length - 12) / 1, byte_order);
}
-static void glxVendorPrivateWithReply(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxVendorPrivateWithReply(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_vendor_code;
int f_context_tag;
f_vendor_code = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_VendorPrivateWithReply_vendor_code, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_VendorPrivateWithReply_vendor_code, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_VendorPrivateWithReply_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_VendorPrivateWithReply_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_VendorPrivateWithReply_data, (length - 12) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_VendorPrivateWithReply_data, (length - 12) / 1, byte_order);
}
-static void glxVendorPrivateWithReply_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxVendorPrivateWithReply_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_retval;
@@ -6804,23 +7108,23 @@ static void glxVendorPrivateWithReply_Reply(tvbuff_t *tvb, packet_info *pinfo, i
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_retval = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_VendorPrivateWithReply_reply_retval, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_VendorPrivateWithReply_reply_retval, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_VendorPrivateWithReply_reply_data1, 24, little_endian);
- listOfByte(tvb, offsetp, t, hf_x11_glx_VendorPrivateWithReply_reply_data2, (f_length * 4), little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_VendorPrivateWithReply_reply_data1, 24, byte_order);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_VendorPrivateWithReply_reply_data2, (f_length * 4), byte_order);
}
-static void glxQueryExtensionsString(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxQueryExtensionsString(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_QueryExtensionsString_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_QueryExtensionsString_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxQueryExtensionsString_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxQueryExtensionsString_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -6835,27 +7139,27 @@ static void glxQueryExtensionsString_Reply(tvbuff_t *tvb, packet_info *pinfo, in
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_QueryExtensionsString_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_QueryExtensionsString_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(16);
}
-static void glxQueryServerString(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxQueryServerString(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
int f_name;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_QueryServerString_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_QueryServerString_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_name = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_QueryServerString_name, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_QueryServerString_name, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxQueryServerString_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxQueryServerString_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_str_len;
@@ -6870,42 +7174,42 @@ static void glxQueryServerString_Reply(tvbuff_t *tvb, packet_info *pinfo, int *o
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_str_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_QueryServerString_reply_str_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_QueryServerString_reply_str_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(16);
- listOfByte(tvb, offsetp, t, hf_x11_glx_QueryServerString_reply_string, f_str_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_QueryServerString_reply_string, f_str_len, byte_order);
}
-static void glxClientInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxClientInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_major_version;
int f_minor_version;
int f_str_len;
f_major_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_ClientInfo_major_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_ClientInfo_major_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_minor_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_ClientInfo_minor_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_ClientInfo_minor_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_str_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_ClientInfo_str_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_ClientInfo_str_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_glx_ClientInfo_string, f_str_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_ClientInfo_string, f_str_len, byte_order);
length -= f_str_len * 1;
}
-static void glxGetFBConfigs(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetFBConfigs(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetFBConfigs_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetFBConfigs_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetFBConfigs_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetFBConfigs_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_num_FB_configs;
@@ -6921,19 +7225,19 @@ static void glxGetFBConfigs_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_FB_configs = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetFBConfigs_reply_num_FB_configs, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetFBConfigs_reply_num_FB_configs, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_properties = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetFBConfigs_reply_num_properties, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetFBConfigs_reply_num_properties, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(16);
- listOfCard32(tvb, offsetp, t, hf_x11_glx_GetFBConfigs_reply_property_list, hf_x11_glx_GetFBConfigs_reply_property_list_item, f_length, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_GetFBConfigs_reply_property_list, hf_x11_glx_GetFBConfigs_reply_property_list_item, f_length, byte_order);
}
-static void glxCreatePixmap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxCreatePixmap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
int f_fbconfig;
@@ -6941,33 +7245,33 @@ static void glxCreatePixmap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_glx_pixmap;
int f_num_attribs;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreatePixmap_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreatePixmap_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_fbconfig = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreatePixmap_fbconfig, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreatePixmap_fbconfig, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pixmap = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreatePixmap_pixmap, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreatePixmap_pixmap, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_glx_pixmap = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreatePixmap_glx_pixmap, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreatePixmap_glx_pixmap, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_attribs = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreatePixmap_num_attribs, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreatePixmap_num_attribs, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard32(tvb, offsetp, t, hf_x11_glx_CreatePixmap_attribs, hf_x11_glx_CreatePixmap_attribs_item, (f_num_attribs * 2), little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_CreatePixmap_attribs, hf_x11_glx_CreatePixmap_attribs_item, (f_num_attribs * 2), byte_order);
length -= (f_num_attribs * 2) * 4;
}
-static void glxDestroyPixmap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxDestroyPixmap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_glx_pixmap;
f_glx_pixmap = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_DestroyPixmap_glx_pixmap, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_DestroyPixmap_glx_pixmap, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxCreateNewContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxCreateNewContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context;
int f_fbconfig;
@@ -6975,42 +7279,35 @@ static void glxCreateNewContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offs
int f_render_type;
int f_share_list;
int f_is_direct;
- int f_reserved1;
- int f_reserved2;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreateNewContext_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreateNewContext_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_fbconfig = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreateNewContext_fbconfig, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreateNewContext_fbconfig, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreateNewContext_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreateNewContext_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_render_type = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreateNewContext_render_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreateNewContext_render_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_share_list = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreateNewContext_share_list, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreateNewContext_share_list, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_is_direct = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreateNewContext_is_direct, tvb, *offsetp, 1, little_endian);
- *offsetp += 1;
- f_reserved1 = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreateNewContext_reserved1, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreateNewContext_is_direct, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- f_reserved2 = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreateNewContext_reserved2, tvb, *offsetp, 2, little_endian);
- *offsetp += 2;
+ UNUSED(3);
}
-static void glxQueryContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxQueryContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_QueryContext_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_QueryContext_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxQueryContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxQueryContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_num_attribs;
@@ -7025,35 +7322,35 @@ static void glxQueryContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_attribs = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_QueryContext_reply_num_attribs, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_QueryContext_reply_num_attribs, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- listOfCard32(tvb, offsetp, t, hf_x11_glx_QueryContext_reply_attribs, hf_x11_glx_QueryContext_reply_attribs_item, (f_num_attribs * 2), little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_QueryContext_reply_attribs, hf_x11_glx_QueryContext_reply_attribs_item, (f_num_attribs * 2), byte_order);
}
-static void glxMakeContextCurrent(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxMakeContextCurrent(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_old_context_tag;
int f_drawable;
int f_read_drawable;
int f_context;
f_old_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_MakeContextCurrent_old_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_MakeContextCurrent_old_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_MakeContextCurrent_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_MakeContextCurrent_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_read_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_MakeContextCurrent_read_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_MakeContextCurrent_read_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_MakeContextCurrent_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_MakeContextCurrent_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxMakeContextCurrent_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxMakeContextCurrent_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_context_tag;
@@ -7068,52 +7365,52 @@ static void glxMakeContextCurrent_Reply(tvbuff_t *tvb, packet_info *pinfo, int *
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_MakeContextCurrent_reply_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_MakeContextCurrent_reply_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
}
-static void glxCreatePbuffer(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxCreatePbuffer(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
int f_fbconfig;
int f_pbuffer;
int f_num_attribs;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreatePbuffer_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreatePbuffer_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_fbconfig = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreatePbuffer_fbconfig, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreatePbuffer_fbconfig, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pbuffer = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreatePbuffer_pbuffer, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreatePbuffer_pbuffer, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_attribs = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreatePbuffer_num_attribs, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreatePbuffer_num_attribs, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard32(tvb, offsetp, t, hf_x11_glx_CreatePbuffer_attribs, hf_x11_glx_CreatePbuffer_attribs_item, (f_num_attribs * 2), little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_CreatePbuffer_attribs, hf_x11_glx_CreatePbuffer_attribs_item, (f_num_attribs * 2), byte_order);
length -= (f_num_attribs * 2) * 4;
}
-static void glxDestroyPbuffer(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxDestroyPbuffer(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_pbuffer;
f_pbuffer = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_DestroyPbuffer_pbuffer, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_DestroyPbuffer_pbuffer, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetDrawableAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetDrawableAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_drawable;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetDrawableAttributes_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetDrawableAttributes_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetDrawableAttributes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetDrawableAttributes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_num_attribs;
@@ -7128,30 +7425,30 @@ static void glxGetDrawableAttributes_Reply(tvbuff_t *tvb, packet_info *pinfo, in
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_attribs = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetDrawableAttributes_reply_num_attribs, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetDrawableAttributes_reply_num_attribs, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- listOfCard32(tvb, offsetp, t, hf_x11_glx_GetDrawableAttributes_reply_attribs, hf_x11_glx_GetDrawableAttributes_reply_attribs_item, (f_num_attribs * 2), little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_GetDrawableAttributes_reply_attribs, hf_x11_glx_GetDrawableAttributes_reply_attribs_item, (f_num_attribs * 2), byte_order);
}
-static void glxChangeDrawableAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxChangeDrawableAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_drawable;
int f_num_attribs;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_ChangeDrawableAttributes_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_ChangeDrawableAttributes_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_attribs = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_ChangeDrawableAttributes_num_attribs, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_ChangeDrawableAttributes_num_attribs, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard32(tvb, offsetp, t, hf_x11_glx_ChangeDrawableAttributes_attribs, hf_x11_glx_ChangeDrawableAttributes_attribs_item, (f_num_attribs * 2), little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_ChangeDrawableAttributes_attribs, hf_x11_glx_ChangeDrawableAttributes_attribs_item, (f_num_attribs * 2), byte_order);
length -= (f_num_attribs * 2) * 4;
}
-static void glxCreateWindow(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxCreateWindow(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
int f_fbconfig;
@@ -7159,84 +7456,175 @@ static void glxCreateWindow(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_glx_window;
int f_num_attribs;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreateWindow_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreateWindow_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_fbconfig = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreateWindow_fbconfig, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreateWindow_fbconfig, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreateWindow_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreateWindow_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_glx_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreateWindow_glx_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreateWindow_glx_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_attribs = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_CreateWindow_num_attribs, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_CreateWindow_num_attribs, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard32(tvb, offsetp, t, hf_x11_glx_CreateWindow_attribs, hf_x11_glx_CreateWindow_attribs_item, (f_num_attribs * 2), little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_CreateWindow_attribs, hf_x11_glx_CreateWindow_attribs_item, (f_num_attribs * 2), byte_order);
length -= (f_num_attribs * 2) * 4;
}
-static void glxDeleteWindow(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxDeleteWindow(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_glxwindow;
f_glxwindow = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_DeleteWindow_glxwindow, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_DeleteWindow_glxwindow, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxNewList(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxSetClientInfoARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
+{
+ int f_major_version;
+ int f_minor_version;
+ int f_num_versions;
+ int f_gl_str_len;
+ int f_glx_str_len;
+ f_major_version = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_glx_SetClientInfoARB_major_version, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_minor_version = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_glx_SetClientInfoARB_minor_version, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_num_versions = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_glx_SetClientInfoARB_num_versions, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_gl_str_len = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_glx_SetClientInfoARB_gl_str_len, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_glx_str_len = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_glx_SetClientInfoARB_glx_str_len, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_SetClientInfoARB_gl_versions, hf_x11_glx_SetClientInfoARB_gl_versions_item, (f_num_versions * 2), byte_order);
+ length -= (f_num_versions * 2) * 4;
+ listOfByte(tvb, offsetp, t, hf_x11_glx_SetClientInfoARB_gl_extension_string, f_gl_str_len, byte_order);
+ length -= f_gl_str_len * 1;
+ listOfByte(tvb, offsetp, t, hf_x11_glx_SetClientInfoARB_glx_extension_string, f_glx_str_len, byte_order);
+ length -= f_glx_str_len * 1;
+}
+
+static void glxCreateContextAttribsARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
+{
+ int f_context;
+ int f_fbconfig;
+ int f_screen;
+ int f_share_list;
+ int f_is_direct;
+ int f_num_attribs;
+ f_context = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_glx_CreateContextAttribsARB_context, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_fbconfig = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_glx_CreateContextAttribsARB_fbconfig, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_screen = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_glx_CreateContextAttribsARB_screen, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_share_list = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_glx_CreateContextAttribsARB_share_list, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_is_direct = VALUE8(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_glx_CreateContextAttribsARB_is_direct, tvb, *offsetp, 1, byte_order);
+ *offsetp += 1;
+ UNUSED(3);
+ f_num_attribs = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_glx_CreateContextAttribsARB_num_attribs, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_CreateContextAttribsARB_attribs, hf_x11_glx_CreateContextAttribsARB_attribs_item, (f_num_attribs * 2), byte_order);
+ length -= (f_num_attribs * 2) * 4;
+}
+
+static void glxSetClientInfo2ARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
+{
+ int f_major_version;
+ int f_minor_version;
+ int f_num_versions;
+ int f_gl_str_len;
+ int f_glx_str_len;
+ f_major_version = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_glx_SetClientInfo2ARB_major_version, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_minor_version = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_glx_SetClientInfo2ARB_minor_version, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_num_versions = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_glx_SetClientInfo2ARB_num_versions, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_gl_str_len = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_glx_SetClientInfo2ARB_gl_str_len, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ f_glx_str_len = VALUE32(tvb, *offsetp);
+ proto_tree_add_item(t, hf_x11_glx_SetClientInfo2ARB_glx_str_len, tvb, *offsetp, 4, byte_order);
+ *offsetp += 4;
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_SetClientInfo2ARB_gl_versions, hf_x11_glx_SetClientInfo2ARB_gl_versions_item, (f_num_versions * 3), byte_order);
+ length -= (f_num_versions * 3) * 4;
+ listOfByte(tvb, offsetp, t, hf_x11_glx_SetClientInfo2ARB_gl_extension_string, f_gl_str_len, byte_order);
+ length -= f_gl_str_len * 1;
+ listOfByte(tvb, offsetp, t, hf_x11_glx_SetClientInfo2ARB_glx_extension_string, f_glx_str_len, byte_order);
+ length -= f_glx_str_len * 1;
+}
+
+static void glxNewList(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_list;
int f_mode;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_NewList_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_NewList_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_list = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_NewList_list, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_NewList_list, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_mode = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_NewList_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_NewList_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxEndList(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxEndList(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_EndList_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_EndList_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxDeleteLists(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxDeleteLists(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_list;
int f_range;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_DeleteLists_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_DeleteLists_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_list = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_DeleteLists_list, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_DeleteLists_list, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_range = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_DeleteLists_range, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_DeleteLists_range, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGenLists(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGenLists(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_range;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GenLists_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GenLists_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_range = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GenLists_range, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GenLists_range, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGenLists_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGenLists_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_ret_val;
@@ -7251,53 +7639,53 @@ static void glxGenLists_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, p
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_ret_val = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GenLists_reply_ret_val, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GenLists_reply_ret_val, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxFeedbackBuffer(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxFeedbackBuffer(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_size;
int f_type;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_FeedbackBuffer_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_FeedbackBuffer_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_size = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_FeedbackBuffer_size, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_FeedbackBuffer_size, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_type = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_FeedbackBuffer_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_FeedbackBuffer_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxSelectBuffer(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxSelectBuffer(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_size;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_SelectBuffer_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_SelectBuffer_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_size = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_SelectBuffer_size, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_SelectBuffer_size, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxRenderMode(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxRenderMode(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_mode;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_RenderMode_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_RenderMode_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_mode = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_RenderMode_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_RenderMode_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxRenderMode_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxRenderMode_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_ret_val;
@@ -7314,29 +7702,29 @@ static void glxRenderMode_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_ret_val = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_RenderMode_reply_ret_val, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_RenderMode_reply_ret_val, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_RenderMode_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_RenderMode_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_new_mode = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_RenderMode_reply_new_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_RenderMode_reply_new_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfCard32(tvb, offsetp, t, hf_x11_glx_RenderMode_reply_data, hf_x11_glx_RenderMode_reply_data_item, f_n, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_RenderMode_reply_data, hf_x11_glx_RenderMode_reply_data_item, f_n, byte_order);
}
-static void glxFinish(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxFinish(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_Finish_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_Finish_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxFinish_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxFinish_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
@@ -7350,43 +7738,43 @@ static void glxFinish_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, pro
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxPixelStoref(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxPixelStoref(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_pname;
gfloat f_datum;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_PixelStoref_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_PixelStoref_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_PixelStoref_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_PixelStoref_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = FLOAT(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_PixelStoref_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_PixelStoref_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxPixelStorei(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxPixelStorei(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_pname;
int f_datum;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_PixelStorei_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_PixelStorei_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_PixelStorei_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_PixelStorei_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_PixelStorei_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_PixelStorei_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxReadPixels(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxReadPixels(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_x;
@@ -7398,34 +7786,34 @@ static void glxReadPixels(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, p
int f_swap_bytes;
int f_lsb_first;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_ReadPixels_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_ReadPixels_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_x = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_ReadPixels_x, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_ReadPixels_x, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_y = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_ReadPixels_y, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_ReadPixels_y, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_width = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_ReadPixels_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_ReadPixels_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_height = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_ReadPixels_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_ReadPixels_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_format = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_ReadPixels_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_ReadPixels_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_type = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_ReadPixels_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_ReadPixels_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_swap_bytes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_ReadPixels_swap_bytes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_ReadPixels_swap_bytes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_lsb_first = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_ReadPixels_lsb_first, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_ReadPixels_lsb_first, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void glxReadPixels_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxReadPixels_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
@@ -7439,24 +7827,24 @@ static void glxReadPixels_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(24);
- listOfByte(tvb, offsetp, t, hf_x11_glx_ReadPixels_reply_data, (f_length * 4), little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_ReadPixels_reply_data, (f_length * 4), byte_order);
}
-static void glxGetBooleanv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetBooleanv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetBooleanv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetBooleanv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetBooleanv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetBooleanv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetBooleanv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetBooleanv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -7472,31 +7860,31 @@ static void glxGetBooleanv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetBooleanv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetBooleanv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetBooleanv_reply_datum, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetBooleanv_reply_datum, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(15);
- listOfByte(tvb, offsetp, t, hf_x11_glx_GetBooleanv_reply_data, f_n, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_GetBooleanv_reply_data, f_n, byte_order);
}
-static void glxGetClipPlane(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetClipPlane(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_plane;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetClipPlane_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetClipPlane_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_plane = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetClipPlane_plane, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetClipPlane_plane, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetClipPlane_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetClipPlane_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
@@ -7510,24 +7898,24 @@ static void glxGetClipPlane_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(24);
- listOfDouble(tvb, offsetp, t, hf_x11_glx_GetClipPlane_reply_data, hf_x11_glx_GetClipPlane_reply_data_item, (f_length / 2), little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_GetClipPlane_reply_data, hf_x11_glx_GetClipPlane_reply_data_item, (f_length / 2), byte_order);
}
-static void glxGetDoublev(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetDoublev(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetDoublev_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetDoublev_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetDoublev_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetDoublev_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetDoublev_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetDoublev_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -7543,27 +7931,27 @@ static void glxGetDoublev_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetDoublev_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetDoublev_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = DOUBLE(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetDoublev_reply_datum, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetDoublev_reply_datum, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
UNUSED(8);
- listOfDouble(tvb, offsetp, t, hf_x11_glx_GetDoublev_reply_data, hf_x11_glx_GetDoublev_reply_data_item, f_n, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_GetDoublev_reply_data, hf_x11_glx_GetDoublev_reply_data_item, f_n, byte_order);
}
-static void glxGetError(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetError(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetError_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetError_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetError_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetError_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_error;
@@ -7578,25 +7966,25 @@ static void glxGetError_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, p
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_error = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetError_reply_error, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetError_reply_error, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetFloatv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetFloatv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetFloatv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetFloatv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetFloatv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetFloatv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetFloatv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetFloatv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -7612,31 +8000,31 @@ static void glxGetFloatv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetFloatv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetFloatv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = FLOAT(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetFloatv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetFloatv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfFloat(tvb, offsetp, t, hf_x11_glx_GetFloatv_reply_data, hf_x11_glx_GetFloatv_reply_data_item, f_n, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_GetFloatv_reply_data, hf_x11_glx_GetFloatv_reply_data_item, f_n, byte_order);
}
-static void glxGetIntegerv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetIntegerv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetIntegerv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetIntegerv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetIntegerv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetIntegerv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetIntegerv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetIntegerv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -7652,35 +8040,35 @@ static void glxGetIntegerv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetIntegerv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetIntegerv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetIntegerv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetIntegerv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfInt32(tvb, offsetp, t, hf_x11_glx_GetIntegerv_reply_data, hf_x11_glx_GetIntegerv_reply_data_item, f_n, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_GetIntegerv_reply_data, hf_x11_glx_GetIntegerv_reply_data_item, f_n, byte_order);
}
-static void glxGetLightfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetLightfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_light;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetLightfv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetLightfv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_light = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetLightfv_light, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetLightfv_light, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetLightfv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetLightfv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetLightfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetLightfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -7696,35 +8084,35 @@ static void glxGetLightfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetLightfv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetLightfv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = FLOAT(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetLightfv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetLightfv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfFloat(tvb, offsetp, t, hf_x11_glx_GetLightfv_reply_data, hf_x11_glx_GetLightfv_reply_data_item, f_n, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_GetLightfv_reply_data, hf_x11_glx_GetLightfv_reply_data_item, f_n, byte_order);
}
-static void glxGetLightiv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetLightiv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_light;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetLightiv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetLightiv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_light = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetLightiv_light, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetLightiv_light, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetLightiv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetLightiv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetLightiv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetLightiv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -7740,35 +8128,35 @@ static void glxGetLightiv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetLightiv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetLightiv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetLightiv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetLightiv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfInt32(tvb, offsetp, t, hf_x11_glx_GetLightiv_reply_data, hf_x11_glx_GetLightiv_reply_data_item, f_n, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_GetLightiv_reply_data, hf_x11_glx_GetLightiv_reply_data_item, f_n, byte_order);
}
-static void glxGetMapdv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetMapdv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_target;
int f_query;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMapdv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMapdv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_target = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMapdv_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMapdv_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_query = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMapdv_query, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMapdv_query, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetMapdv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetMapdv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -7784,35 +8172,35 @@ static void glxGetMapdv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, p
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMapdv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMapdv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = DOUBLE(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMapdv_reply_datum, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMapdv_reply_datum, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
UNUSED(8);
- listOfDouble(tvb, offsetp, t, hf_x11_glx_GetMapdv_reply_data, hf_x11_glx_GetMapdv_reply_data_item, f_n, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_GetMapdv_reply_data, hf_x11_glx_GetMapdv_reply_data_item, f_n, byte_order);
}
-static void glxGetMapfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetMapfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_target;
int f_query;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMapfv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMapfv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_target = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMapfv_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMapfv_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_query = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMapfv_query, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMapfv_query, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetMapfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetMapfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -7828,35 +8216,35 @@ static void glxGetMapfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, p
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMapfv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMapfv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = FLOAT(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMapfv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMapfv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfFloat(tvb, offsetp, t, hf_x11_glx_GetMapfv_reply_data, hf_x11_glx_GetMapfv_reply_data_item, f_n, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_GetMapfv_reply_data, hf_x11_glx_GetMapfv_reply_data_item, f_n, byte_order);
}
-static void glxGetMapiv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetMapiv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_target;
int f_query;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMapiv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMapiv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_target = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMapiv_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMapiv_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_query = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMapiv_query, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMapiv_query, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetMapiv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetMapiv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -7872,35 +8260,35 @@ static void glxGetMapiv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, p
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMapiv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMapiv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMapiv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMapiv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfInt32(tvb, offsetp, t, hf_x11_glx_GetMapiv_reply_data, hf_x11_glx_GetMapiv_reply_data_item, f_n, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_GetMapiv_reply_data, hf_x11_glx_GetMapiv_reply_data_item, f_n, byte_order);
}
-static void glxGetMaterialfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetMaterialfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_face;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMaterialfv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMaterialfv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_face = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMaterialfv_face, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMaterialfv_face, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMaterialfv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMaterialfv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetMaterialfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetMaterialfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -7916,35 +8304,35 @@ static void glxGetMaterialfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offse
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMaterialfv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMaterialfv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = FLOAT(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMaterialfv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMaterialfv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfFloat(tvb, offsetp, t, hf_x11_glx_GetMaterialfv_reply_data, hf_x11_glx_GetMaterialfv_reply_data_item, f_n, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_GetMaterialfv_reply_data, hf_x11_glx_GetMaterialfv_reply_data_item, f_n, byte_order);
}
-static void glxGetMaterialiv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetMaterialiv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_face;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMaterialiv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMaterialiv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_face = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMaterialiv_face, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMaterialiv_face, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMaterialiv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMaterialiv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetMaterialiv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetMaterialiv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -7960,31 +8348,31 @@ static void glxGetMaterialiv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offse
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMaterialiv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMaterialiv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMaterialiv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMaterialiv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfInt32(tvb, offsetp, t, hf_x11_glx_GetMaterialiv_reply_data, hf_x11_glx_GetMaterialiv_reply_data_item, f_n, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_GetMaterialiv_reply_data, hf_x11_glx_GetMaterialiv_reply_data_item, f_n, byte_order);
}
-static void glxGetPixelMapfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetPixelMapfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_map;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetPixelMapfv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetPixelMapfv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_map = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetPixelMapfv_map, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetPixelMapfv_map, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetPixelMapfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetPixelMapfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -8000,31 +8388,31 @@ static void glxGetPixelMapfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offse
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetPixelMapfv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetPixelMapfv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = FLOAT(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetPixelMapfv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetPixelMapfv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfFloat(tvb, offsetp, t, hf_x11_glx_GetPixelMapfv_reply_data, hf_x11_glx_GetPixelMapfv_reply_data_item, f_n, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_GetPixelMapfv_reply_data, hf_x11_glx_GetPixelMapfv_reply_data_item, f_n, byte_order);
}
-static void glxGetPixelMapuiv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetPixelMapuiv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_map;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetPixelMapuiv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetPixelMapuiv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_map = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetPixelMapuiv_map, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetPixelMapuiv_map, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetPixelMapuiv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetPixelMapuiv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -8040,31 +8428,31 @@ static void glxGetPixelMapuiv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offs
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetPixelMapuiv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetPixelMapuiv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetPixelMapuiv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetPixelMapuiv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfCard32(tvb, offsetp, t, hf_x11_glx_GetPixelMapuiv_reply_data, hf_x11_glx_GetPixelMapuiv_reply_data_item, f_n, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_GetPixelMapuiv_reply_data, hf_x11_glx_GetPixelMapuiv_reply_data_item, f_n, byte_order);
}
-static void glxGetPixelMapusv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetPixelMapusv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_map;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetPixelMapusv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetPixelMapusv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_map = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetPixelMapusv_map, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetPixelMapusv_map, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetPixelMapusv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetPixelMapusv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -8080,31 +8468,31 @@ static void glxGetPixelMapusv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offs
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetPixelMapusv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetPixelMapusv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetPixelMapusv_reply_datum, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetPixelMapusv_reply_datum, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(16);
- listOfCard16(tvb, offsetp, t, hf_x11_glx_GetPixelMapusv_reply_data, hf_x11_glx_GetPixelMapusv_reply_data_item, f_n, little_endian);
+ listOfCard16(tvb, offsetp, t, hf_x11_glx_GetPixelMapusv_reply_data, hf_x11_glx_GetPixelMapusv_reply_data_item, f_n, byte_order);
}
-static void glxGetPolygonStipple(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetPolygonStipple(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_lsb_first;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetPolygonStipple_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetPolygonStipple_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_lsb_first = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetPolygonStipple_lsb_first, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetPolygonStipple_lsb_first, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void glxGetPolygonStipple_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetPolygonStipple_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
@@ -8118,24 +8506,24 @@ static void glxGetPolygonStipple_Reply(tvbuff_t *tvb, packet_info *pinfo, int *o
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(24);
- listOfByte(tvb, offsetp, t, hf_x11_glx_GetPolygonStipple_reply_data, (f_length * 4), little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_GetPolygonStipple_reply_data, (f_length * 4), byte_order);
}
-static void glxGetString(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetString(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_name;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetString_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetString_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_name = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetString_name, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetString_name, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetString_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetString_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -8150,32 +8538,32 @@ static void glxGetString_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetString_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetString_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(16);
- listOfByte(tvb, offsetp, t, hf_x11_glx_GetString_reply_string, f_n, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_GetString_reply_string, f_n, byte_order);
}
-static void glxGetTexEnvfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetTexEnvfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_target;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexEnvfv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexEnvfv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_target = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexEnvfv_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexEnvfv_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexEnvfv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexEnvfv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetTexEnvfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetTexEnvfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -8191,35 +8579,35 @@ static void glxGetTexEnvfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexEnvfv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexEnvfv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = FLOAT(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexEnvfv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexEnvfv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfFloat(tvb, offsetp, t, hf_x11_glx_GetTexEnvfv_reply_data, hf_x11_glx_GetTexEnvfv_reply_data_item, f_n, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_GetTexEnvfv_reply_data, hf_x11_glx_GetTexEnvfv_reply_data_item, f_n, byte_order);
}
-static void glxGetTexEnviv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetTexEnviv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_target;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexEnviv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexEnviv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_target = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexEnviv_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexEnviv_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexEnviv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexEnviv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetTexEnviv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetTexEnviv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -8235,35 +8623,35 @@ static void glxGetTexEnviv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexEnviv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexEnviv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexEnviv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexEnviv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfInt32(tvb, offsetp, t, hf_x11_glx_GetTexEnviv_reply_data, hf_x11_glx_GetTexEnviv_reply_data_item, f_n, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_GetTexEnviv_reply_data, hf_x11_glx_GetTexEnviv_reply_data_item, f_n, byte_order);
}
-static void glxGetTexGendv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetTexGendv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_coord;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexGendv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexGendv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_coord = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexGendv_coord, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexGendv_coord, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexGendv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexGendv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetTexGendv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetTexGendv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -8279,35 +8667,35 @@ static void glxGetTexGendv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexGendv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexGendv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = DOUBLE(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexGendv_reply_datum, tvb, *offsetp, 8, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexGendv_reply_datum, tvb, *offsetp, 8, byte_order);
*offsetp += 8;
UNUSED(8);
- listOfDouble(tvb, offsetp, t, hf_x11_glx_GetTexGendv_reply_data, hf_x11_glx_GetTexGendv_reply_data_item, f_n, little_endian);
+ listOfDouble(tvb, offsetp, t, hf_x11_glx_GetTexGendv_reply_data, hf_x11_glx_GetTexGendv_reply_data_item, f_n, byte_order);
}
-static void glxGetTexGenfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetTexGenfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_coord;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexGenfv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexGenfv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_coord = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexGenfv_coord, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexGenfv_coord, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexGenfv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexGenfv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetTexGenfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetTexGenfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -8323,35 +8711,35 @@ static void glxGetTexGenfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexGenfv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexGenfv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = FLOAT(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexGenfv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexGenfv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfFloat(tvb, offsetp, t, hf_x11_glx_GetTexGenfv_reply_data, hf_x11_glx_GetTexGenfv_reply_data_item, f_n, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_GetTexGenfv_reply_data, hf_x11_glx_GetTexGenfv_reply_data_item, f_n, byte_order);
}
-static void glxGetTexGeniv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetTexGeniv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_coord;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexGeniv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexGeniv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_coord = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexGeniv_coord, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexGeniv_coord, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexGeniv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexGeniv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetTexGeniv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetTexGeniv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -8367,20 +8755,20 @@ static void glxGetTexGeniv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexGeniv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexGeniv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexGeniv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexGeniv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfInt32(tvb, offsetp, t, hf_x11_glx_GetTexGeniv_reply_data, hf_x11_glx_GetTexGeniv_reply_data_item, f_n, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_GetTexGeniv_reply_data, hf_x11_glx_GetTexGeniv_reply_data_item, f_n, byte_order);
}
-static void glxGetTexImage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetTexImage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_target;
@@ -8389,25 +8777,25 @@ static void glxGetTexImage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_type;
int f_swap_bytes;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexImage_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexImage_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_target = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexImage_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexImage_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_level = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexImage_level, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexImage_level, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_format = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexImage_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexImage_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_type = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexImage_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexImage_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_swap_bytes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexImage_swap_bytes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexImage_swap_bytes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void glxGetTexImage_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetTexImage_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_width;
@@ -8424,38 +8812,38 @@ static void glxGetTexImage_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(8);
f_width = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexImage_reply_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexImage_reply_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_height = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexImage_reply_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexImage_reply_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_depth = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexImage_reply_depth, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexImage_reply_depth, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
- listOfByte(tvb, offsetp, t, hf_x11_glx_GetTexImage_reply_data, (f_length * 4), little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_GetTexImage_reply_data, (f_length * 4), byte_order);
}
-static void glxGetTexParameterfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetTexParameterfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_target;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexParameterfv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexParameterfv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_target = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexParameterfv_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexParameterfv_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexParameterfv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexParameterfv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetTexParameterfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetTexParameterfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -8471,35 +8859,35 @@ static void glxGetTexParameterfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *o
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexParameterfv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexParameterfv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = FLOAT(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexParameterfv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexParameterfv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfFloat(tvb, offsetp, t, hf_x11_glx_GetTexParameterfv_reply_data, hf_x11_glx_GetTexParameterfv_reply_data_item, f_n, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_GetTexParameterfv_reply_data, hf_x11_glx_GetTexParameterfv_reply_data_item, f_n, byte_order);
}
-static void glxGetTexParameteriv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetTexParameteriv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_target;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexParameteriv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexParameteriv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_target = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexParameteriv_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexParameteriv_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexParameteriv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexParameteriv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetTexParameteriv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetTexParameteriv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -8515,39 +8903,39 @@ static void glxGetTexParameteriv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *o
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexParameteriv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexParameteriv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexParameteriv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexParameteriv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfInt32(tvb, offsetp, t, hf_x11_glx_GetTexParameteriv_reply_data, hf_x11_glx_GetTexParameteriv_reply_data_item, f_n, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_GetTexParameteriv_reply_data, hf_x11_glx_GetTexParameteriv_reply_data_item, f_n, byte_order);
}
-static void glxGetTexLevelParameterfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetTexLevelParameterfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_target;
int f_level;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameterfv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameterfv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_target = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameterfv_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameterfv_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_level = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameterfv_level, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameterfv_level, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameterfv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameterfv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetTexLevelParameterfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetTexLevelParameterfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -8563,39 +8951,39 @@ static void glxGetTexLevelParameterfv_Reply(tvbuff_t *tvb, packet_info *pinfo, i
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameterfv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameterfv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = FLOAT(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameterfv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameterfv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfFloat(tvb, offsetp, t, hf_x11_glx_GetTexLevelParameterfv_reply_data, hf_x11_glx_GetTexLevelParameterfv_reply_data_item, f_n, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_GetTexLevelParameterfv_reply_data, hf_x11_glx_GetTexLevelParameterfv_reply_data_item, f_n, byte_order);
}
-static void glxGetTexLevelParameteriv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetTexLevelParameteriv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_target;
int f_level;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameteriv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameteriv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_target = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameteriv_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameteriv_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_level = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameteriv_level, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameteriv_level, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameteriv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameteriv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetTexLevelParameteriv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetTexLevelParameteriv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -8611,31 +8999,31 @@ static void glxGetTexLevelParameteriv_Reply(tvbuff_t *tvb, packet_info *pinfo, i
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameteriv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameteriv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameteriv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetTexLevelParameteriv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfInt32(tvb, offsetp, t, hf_x11_glx_GetTexLevelParameteriv_reply_data, hf_x11_glx_GetTexLevelParameteriv_reply_data_item, f_n, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_GetTexLevelParameteriv_reply_data, hf_x11_glx_GetTexLevelParameteriv_reply_data_item, f_n, byte_order);
}
-static void glxIsList(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxIsList(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_list;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_IsList_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_IsList_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_list = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_IsList_list, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_IsList_list, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxIsList_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxIsList_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_ret_val;
@@ -8650,35 +9038,35 @@ static void glxIsList_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, pro
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_ret_val = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_IsList_reply_ret_val, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_IsList_reply_ret_val, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxFlush(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxFlush(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_Flush_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_Flush_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxAreTexturesResident(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxAreTexturesResident(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_n;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_AreTexturesResident_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_AreTexturesResident_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_AreTexturesResident_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_AreTexturesResident_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard32(tvb, offsetp, t, hf_x11_glx_AreTexturesResident_textures, hf_x11_glx_AreTexturesResident_textures_item, f_n, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_AreTexturesResident_textures, hf_x11_glx_AreTexturesResident_textures_item, f_n, byte_order);
length -= f_n * 4;
}
-static void glxAreTexturesResident_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxAreTexturesResident_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_ret_val;
@@ -8693,41 +9081,41 @@ static void glxAreTexturesResident_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_ret_val = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_AreTexturesResident_reply_ret_val, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_AreTexturesResident_reply_ret_val, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- listOfByte(tvb, offsetp, t, hf_x11_glx_AreTexturesResident_reply_data, (f_length * 4), little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_AreTexturesResident_reply_data, (f_length * 4), byte_order);
}
-static void glxDeleteTextures(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxDeleteTextures(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_n;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_DeleteTextures_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_DeleteTextures_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_DeleteTextures_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_DeleteTextures_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard32(tvb, offsetp, t, hf_x11_glx_DeleteTextures_textures, hf_x11_glx_DeleteTextures_textures_item, f_n, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_DeleteTextures_textures, hf_x11_glx_DeleteTextures_textures_item, f_n, byte_order);
length -= f_n * 4;
}
-static void glxGenTextures(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGenTextures(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_n;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GenTextures_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GenTextures_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GenTextures_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GenTextures_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGenTextures_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGenTextures_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
@@ -8741,24 +9129,24 @@ static void glxGenTextures_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(24);
- listOfCard32(tvb, offsetp, t, hf_x11_glx_GenTextures_reply_data, hf_x11_glx_GenTextures_reply_data_item, f_length, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_GenTextures_reply_data, hf_x11_glx_GenTextures_reply_data_item, f_length, byte_order);
}
-static void glxIsTexture(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxIsTexture(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_texture;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_IsTexture_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_IsTexture_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_texture = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_IsTexture_texture, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_IsTexture_texture, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxIsTexture_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxIsTexture_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_ret_val;
@@ -8773,14 +9161,14 @@ static void glxIsTexture_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_ret_val = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_IsTexture_reply_ret_val, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_IsTexture_reply_ret_val, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetColorTable(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetColorTable(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_target;
@@ -8788,22 +9176,22 @@ static void glxGetColorTable(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp
int f_type;
int f_swap_bytes;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetColorTable_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetColorTable_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_target = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetColorTable_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetColorTable_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_format = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetColorTable_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetColorTable_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_type = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetColorTable_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetColorTable_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_swap_bytes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetColorTable_swap_bytes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetColorTable_swap_bytes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void glxGetColorTable_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetColorTable_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_width;
@@ -8818,32 +9206,32 @@ static void glxGetColorTable_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offse
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(8);
f_width = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetColorTable_reply_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetColorTable_reply_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfByte(tvb, offsetp, t, hf_x11_glx_GetColorTable_reply_data, (f_length * 4), little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_GetColorTable_reply_data, (f_length * 4), byte_order);
}
-static void glxGetColorTableParameterfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetColorTableParameterfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_target;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetColorTableParameterfv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetColorTableParameterfv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_target = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetColorTableParameterfv_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetColorTableParameterfv_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetColorTableParameterfv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetColorTableParameterfv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetColorTableParameterfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetColorTableParameterfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -8859,35 +9247,35 @@ static void glxGetColorTableParameterfv_Reply(tvbuff_t *tvb, packet_info *pinfo,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetColorTableParameterfv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetColorTableParameterfv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = FLOAT(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetColorTableParameterfv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetColorTableParameterfv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfFloat(tvb, offsetp, t, hf_x11_glx_GetColorTableParameterfv_reply_data, hf_x11_glx_GetColorTableParameterfv_reply_data_item, f_n, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_GetColorTableParameterfv_reply_data, hf_x11_glx_GetColorTableParameterfv_reply_data_item, f_n, byte_order);
}
-static void glxGetColorTableParameteriv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetColorTableParameteriv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_target;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetColorTableParameteriv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetColorTableParameteriv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_target = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetColorTableParameteriv_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetColorTableParameteriv_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetColorTableParameteriv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetColorTableParameteriv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetColorTableParameteriv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetColorTableParameteriv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -8903,20 +9291,20 @@ static void glxGetColorTableParameteriv_Reply(tvbuff_t *tvb, packet_info *pinfo,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetColorTableParameteriv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetColorTableParameteriv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetColorTableParameteriv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetColorTableParameteriv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfInt32(tvb, offsetp, t, hf_x11_glx_GetColorTableParameteriv_reply_data, hf_x11_glx_GetColorTableParameteriv_reply_data_item, f_n, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_GetColorTableParameteriv_reply_data, hf_x11_glx_GetColorTableParameteriv_reply_data_item, f_n, byte_order);
}
-static void glxGetConvolutionFilter(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetConvolutionFilter(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_target;
@@ -8924,22 +9312,22 @@ static void glxGetConvolutionFilter(tvbuff_t *tvb, packet_info *pinfo _U_, int *
int f_type;
int f_swap_bytes;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetConvolutionFilter_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetConvolutionFilter_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_target = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetConvolutionFilter_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetConvolutionFilter_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_format = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetConvolutionFilter_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetConvolutionFilter_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_type = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetConvolutionFilter_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetConvolutionFilter_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_swap_bytes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetConvolutionFilter_swap_bytes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetConvolutionFilter_swap_bytes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void glxGetConvolutionFilter_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetConvolutionFilter_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_width;
@@ -8955,35 +9343,35 @@ static void glxGetConvolutionFilter_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(8);
f_width = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetConvolutionFilter_reply_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetConvolutionFilter_reply_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_height = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetConvolutionFilter_reply_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetConvolutionFilter_reply_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(8);
- listOfByte(tvb, offsetp, t, hf_x11_glx_GetConvolutionFilter_reply_data, (f_length * 4), little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_GetConvolutionFilter_reply_data, (f_length * 4), byte_order);
}
-static void glxGetConvolutionParameterfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetConvolutionParameterfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_target;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameterfv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameterfv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_target = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameterfv_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameterfv_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameterfv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameterfv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetConvolutionParameterfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetConvolutionParameterfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -8999,35 +9387,35 @@ static void glxGetConvolutionParameterfv_Reply(tvbuff_t *tvb, packet_info *pinfo
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameterfv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameterfv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = FLOAT(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameterfv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameterfv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfFloat(tvb, offsetp, t, hf_x11_glx_GetConvolutionParameterfv_reply_data, hf_x11_glx_GetConvolutionParameterfv_reply_data_item, f_n, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_GetConvolutionParameterfv_reply_data, hf_x11_glx_GetConvolutionParameterfv_reply_data_item, f_n, byte_order);
}
-static void glxGetConvolutionParameteriv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetConvolutionParameteriv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_target;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameteriv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameteriv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_target = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameteriv_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameteriv_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameteriv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameteriv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetConvolutionParameteriv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetConvolutionParameteriv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -9043,20 +9431,20 @@ static void glxGetConvolutionParameteriv_Reply(tvbuff_t *tvb, packet_info *pinfo
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameteriv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameteriv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameteriv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetConvolutionParameteriv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfInt32(tvb, offsetp, t, hf_x11_glx_GetConvolutionParameteriv_reply_data, hf_x11_glx_GetConvolutionParameteriv_reply_data_item, f_n, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_GetConvolutionParameteriv_reply_data, hf_x11_glx_GetConvolutionParameteriv_reply_data_item, f_n, byte_order);
}
-static void glxGetSeparableFilter(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetSeparableFilter(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_target;
@@ -9064,22 +9452,22 @@ static void glxGetSeparableFilter(tvbuff_t *tvb, packet_info *pinfo _U_, int *of
int f_type;
int f_swap_bytes;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetSeparableFilter_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetSeparableFilter_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_target = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetSeparableFilter_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetSeparableFilter_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_format = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetSeparableFilter_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetSeparableFilter_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_type = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetSeparableFilter_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetSeparableFilter_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_swap_bytes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetSeparableFilter_swap_bytes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetSeparableFilter_swap_bytes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void glxGetSeparableFilter_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetSeparableFilter_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_row_w;
@@ -9095,20 +9483,20 @@ static void glxGetSeparableFilter_Reply(tvbuff_t *tvb, packet_info *pinfo, int *
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(8);
f_row_w = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetSeparableFilter_reply_row_w, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetSeparableFilter_reply_row_w, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_col_h = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetSeparableFilter_reply_col_h, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetSeparableFilter_reply_col_h, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(8);
- listOfByte(tvb, offsetp, t, hf_x11_glx_GetSeparableFilter_reply_rows_and_cols, (f_length * 4), little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_GetSeparableFilter_reply_rows_and_cols, (f_length * 4), byte_order);
}
-static void glxGetHistogram(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetHistogram(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_target;
@@ -9117,25 +9505,25 @@ static void glxGetHistogram(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_swap_bytes;
int f_reset;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetHistogram_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetHistogram_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_target = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetHistogram_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetHistogram_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_format = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetHistogram_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetHistogram_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_type = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetHistogram_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetHistogram_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_swap_bytes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetHistogram_swap_bytes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetHistogram_swap_bytes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_reset = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetHistogram_reset, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetHistogram_reset, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void glxGetHistogram_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetHistogram_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_width;
@@ -9150,32 +9538,32 @@ static void glxGetHistogram_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(8);
f_width = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetHistogram_reply_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetHistogram_reply_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfByte(tvb, offsetp, t, hf_x11_glx_GetHistogram_reply_data, (f_length * 4), little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_GetHistogram_reply_data, (f_length * 4), byte_order);
}
-static void glxGetHistogramParameterfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetHistogramParameterfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_target;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetHistogramParameterfv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetHistogramParameterfv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_target = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetHistogramParameterfv_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetHistogramParameterfv_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetHistogramParameterfv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetHistogramParameterfv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetHistogramParameterfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetHistogramParameterfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -9191,35 +9579,35 @@ static void glxGetHistogramParameterfv_Reply(tvbuff_t *tvb, packet_info *pinfo,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetHistogramParameterfv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetHistogramParameterfv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = FLOAT(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetHistogramParameterfv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetHistogramParameterfv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfFloat(tvb, offsetp, t, hf_x11_glx_GetHistogramParameterfv_reply_data, hf_x11_glx_GetHistogramParameterfv_reply_data_item, f_n, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_GetHistogramParameterfv_reply_data, hf_x11_glx_GetHistogramParameterfv_reply_data_item, f_n, byte_order);
}
-static void glxGetHistogramParameteriv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetHistogramParameteriv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_target;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetHistogramParameteriv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetHistogramParameteriv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_target = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetHistogramParameteriv_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetHistogramParameteriv_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetHistogramParameteriv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetHistogramParameteriv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetHistogramParameteriv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetHistogramParameteriv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -9235,20 +9623,20 @@ static void glxGetHistogramParameteriv_Reply(tvbuff_t *tvb, packet_info *pinfo,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetHistogramParameteriv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetHistogramParameteriv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetHistogramParameteriv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetHistogramParameteriv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfInt32(tvb, offsetp, t, hf_x11_glx_GetHistogramParameteriv_reply_data, hf_x11_glx_GetHistogramParameteriv_reply_data_item, f_n, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_GetHistogramParameteriv_reply_data, hf_x11_glx_GetHistogramParameteriv_reply_data_item, f_n, byte_order);
}
-static void glxGetMinmax(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetMinmax(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_target;
@@ -9257,25 +9645,25 @@ static void glxGetMinmax(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, pr
int f_swap_bytes;
int f_reset;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMinmax_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMinmax_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_target = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMinmax_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMinmax_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_format = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMinmax_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMinmax_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_type = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMinmax_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMinmax_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_swap_bytes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMinmax_swap_bytes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMinmax_swap_bytes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_reset = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMinmax_reset, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMinmax_reset, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void glxGetMinmax_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetMinmax_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
@@ -9289,28 +9677,28 @@ static void glxGetMinmax_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(24);
- listOfByte(tvb, offsetp, t, hf_x11_glx_GetMinmax_reply_data, (f_length * 4), little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_GetMinmax_reply_data, (f_length * 4), byte_order);
}
-static void glxGetMinmaxParameterfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetMinmaxParameterfv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_target;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameterfv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameterfv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_target = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameterfv_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameterfv_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameterfv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameterfv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetMinmaxParameterfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetMinmaxParameterfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -9326,35 +9714,35 @@ static void glxGetMinmaxParameterfv_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameterfv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameterfv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = FLOAT(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameterfv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameterfv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfFloat(tvb, offsetp, t, hf_x11_glx_GetMinmaxParameterfv_reply_data, hf_x11_glx_GetMinmaxParameterfv_reply_data_item, f_n, little_endian);
+ listOfFloat(tvb, offsetp, t, hf_x11_glx_GetMinmaxParameterfv_reply_data, hf_x11_glx_GetMinmaxParameterfv_reply_data_item, f_n, byte_order);
}
-static void glxGetMinmaxParameteriv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetMinmaxParameteriv(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_target;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameteriv_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameteriv_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_target = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameteriv_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameteriv_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameteriv_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameteriv_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetMinmaxParameteriv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetMinmaxParameteriv_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -9370,35 +9758,35 @@ static void glxGetMinmaxParameteriv_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameteriv_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameteriv_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameteriv_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetMinmaxParameteriv_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfInt32(tvb, offsetp, t, hf_x11_glx_GetMinmaxParameteriv_reply_data, hf_x11_glx_GetMinmaxParameteriv_reply_data_item, f_n, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_GetMinmaxParameteriv_reply_data, hf_x11_glx_GetMinmaxParameteriv_reply_data_item, f_n, byte_order);
}
-static void glxGetCompressedTexImageARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetCompressedTexImageARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_target;
int f_level;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetCompressedTexImageARB_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetCompressedTexImageARB_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_target = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetCompressedTexImageARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetCompressedTexImageARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_level = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetCompressedTexImageARB_level, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetCompressedTexImageARB_level, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetCompressedTexImageARB_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetCompressedTexImageARB_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_size;
@@ -9413,42 +9801,42 @@ static void glxGetCompressedTexImageARB_Reply(tvbuff_t *tvb, packet_info *pinfo,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(8);
f_size = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetCompressedTexImageARB_reply_size, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetCompressedTexImageARB_reply_size, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfByte(tvb, offsetp, t, hf_x11_glx_GetCompressedTexImageARB_reply_data, (f_length * 4), little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_glx_GetCompressedTexImageARB_reply_data, (f_length * 4), byte_order);
}
-static void glxDeleteQueriesARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxDeleteQueriesARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_n;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_DeleteQueriesARB_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_DeleteQueriesARB_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_DeleteQueriesARB_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_DeleteQueriesARB_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard32(tvb, offsetp, t, hf_x11_glx_DeleteQueriesARB_ids, hf_x11_glx_DeleteQueriesARB_ids_item, f_n, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_DeleteQueriesARB_ids, hf_x11_glx_DeleteQueriesARB_ids_item, f_n, byte_order);
length -= f_n * 4;
}
-static void glxGenQueriesARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGenQueriesARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_n;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GenQueriesARB_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GenQueriesARB_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GenQueriesARB_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GenQueriesARB_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGenQueriesARB_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGenQueriesARB_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
@@ -9462,24 +9850,24 @@ static void glxGenQueriesARB_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offse
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(24);
- listOfCard32(tvb, offsetp, t, hf_x11_glx_GenQueriesARB_reply_data, hf_x11_glx_GenQueriesARB_reply_data_item, f_length, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_GenQueriesARB_reply_data, hf_x11_glx_GenQueriesARB_reply_data_item, f_length, byte_order);
}
-static void glxIsQueryARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxIsQueryARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_id;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_IsQueryARB_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_IsQueryARB_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_IsQueryARB_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_IsQueryARB_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxIsQueryARB_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxIsQueryARB_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_ret_val;
@@ -9494,29 +9882,29 @@ static void glxIsQueryARB_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_ret_val = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_IsQueryARB_reply_ret_val, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_IsQueryARB_reply_ret_val, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetQueryivARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetQueryivARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_target;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetQueryivARB_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetQueryivARB_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_target = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetQueryivARB_target, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetQueryivARB_target, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetQueryivARB_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetQueryivARB_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetQueryivARB_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetQueryivARB_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -9532,35 +9920,35 @@ static void glxGetQueryivARB_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offse
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetQueryivARB_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetQueryivARB_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetQueryivARB_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetQueryivARB_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfInt32(tvb, offsetp, t, hf_x11_glx_GetQueryivARB_reply_data, hf_x11_glx_GetQueryivARB_reply_data_item, f_n, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_GetQueryivARB_reply_data, hf_x11_glx_GetQueryivARB_reply_data_item, f_n, byte_order);
}
-static void glxGetQueryObjectivARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetQueryObjectivARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_id;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetQueryObjectivARB_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetQueryObjectivARB_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetQueryObjectivARB_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetQueryObjectivARB_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetQueryObjectivARB_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetQueryObjectivARB_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetQueryObjectivARB_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetQueryObjectivARB_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -9576,35 +9964,35 @@ static void glxGetQueryObjectivARB_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetQueryObjectivARB_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetQueryObjectivARB_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetQueryObjectivARB_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetQueryObjectivARB_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfInt32(tvb, offsetp, t, hf_x11_glx_GetQueryObjectivARB_reply_data, hf_x11_glx_GetQueryObjectivARB_reply_data_item, f_n, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_glx_GetQueryObjectivARB_reply_data, hf_x11_glx_GetQueryObjectivARB_reply_data_item, f_n, byte_order);
}
-static void glxGetQueryObjectuivARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void glxGetQueryObjectuivARB(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_tag;
int f_id;
int f_pname;
f_context_tag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetQueryObjectuivARB_context_tag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetQueryObjectuivARB_context_tag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetQueryObjectuivARB_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetQueryObjectuivARB_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pname = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetQueryObjectuivARB_pname, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetQueryObjectuivARB_pname, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void glxGetQueryObjectuivARB_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void glxGetQueryObjectuivARB_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_n;
@@ -9620,17 +10008,17 @@ static void glxGetQueryObjectuivARB_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
f_n = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetQueryObjectuivARB_reply_n, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetQueryObjectuivARB_reply_n, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_datum = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_glx_GetQueryObjectuivARB_reply_datum, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_glx_GetQueryObjectuivARB_reply_datum, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfCard32(tvb, offsetp, t, hf_x11_glx_GetQueryObjectuivARB_reply_data, hf_x11_glx_GetQueryObjectuivARB_reply_data_item, f_n, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_glx_GetQueryObjectuivARB_reply_data, hf_x11_glx_GetQueryObjectuivARB_reply_data_item, f_n, byte_order);
}
static const value_string glx_extension_minor[] = {
{ 1, "Render" },
@@ -9665,6 +10053,9 @@ static const value_string glx_extension_minor[] = {
{ 30, "ChangeDrawableAttributes" },
{ 31, "CreateWindow" },
{ 32, "DeleteWindow" },
+ { 33, "SetClientInfoARB" },
+ { 34, "CreateContextAttribsARB" },
+ { 35, "SetClientInfo2ARB" },
{ 101, "NewList" },
{ 102, "EndList" },
{ 103, "DeleteLists" },
@@ -9806,7 +10197,7 @@ static x11_reply_info glx_replies[] = {
{ 0, NULL }
};
-static void dispatch_glx(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_glx(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(glx_extension_minor);
@@ -9817,295 +10208,304 @@ static void dispatch_glx(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_
"<Unknown opcode %d>"));
switch (minor) {
case 1:
- glxRender(tvb, pinfo, offsetp, t, little_endian, length);
+ glxRender(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 2:
- glxRenderLarge(tvb, pinfo, offsetp, t, little_endian, length);
+ glxRenderLarge(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 3:
- glxCreateContext(tvb, pinfo, offsetp, t, little_endian, length);
+ glxCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 4:
- glxDestroyContext(tvb, pinfo, offsetp, t, little_endian, length);
+ glxDestroyContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 5:
- glxMakeCurrent(tvb, pinfo, offsetp, t, little_endian, length);
+ glxMakeCurrent(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 6:
- glxIsDirect(tvb, pinfo, offsetp, t, little_endian, length);
+ glxIsDirect(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 7:
- glxQueryVersion(tvb, pinfo, offsetp, t, little_endian, length);
+ glxQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 8:
- glxWaitGL(tvb, pinfo, offsetp, t, little_endian, length);
+ glxWaitGL(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 9:
- glxWaitX(tvb, pinfo, offsetp, t, little_endian, length);
+ glxWaitX(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 10:
- glxCopyContext(tvb, pinfo, offsetp, t, little_endian, length);
+ glxCopyContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 11:
- glxSwapBuffers(tvb, pinfo, offsetp, t, little_endian, length);
+ glxSwapBuffers(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 12:
- glxUseXFont(tvb, pinfo, offsetp, t, little_endian, length);
+ glxUseXFont(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 13:
- glxCreateGLXPixmap(tvb, pinfo, offsetp, t, little_endian, length);
+ glxCreateGLXPixmap(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 14:
- glxGetVisualConfigs(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetVisualConfigs(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 15:
- glxDestroyGLXPixmap(tvb, pinfo, offsetp, t, little_endian, length);
+ glxDestroyGLXPixmap(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 16:
- glxVendorPrivate(tvb, pinfo, offsetp, t, little_endian, length);
+ glxVendorPrivate(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 17:
- glxVendorPrivateWithReply(tvb, pinfo, offsetp, t, little_endian, length);
+ glxVendorPrivateWithReply(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 18:
- glxQueryExtensionsString(tvb, pinfo, offsetp, t, little_endian, length);
+ glxQueryExtensionsString(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 19:
- glxQueryServerString(tvb, pinfo, offsetp, t, little_endian, length);
+ glxQueryServerString(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 20:
- glxClientInfo(tvb, pinfo, offsetp, t, little_endian, length);
+ glxClientInfo(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 21:
- glxGetFBConfigs(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetFBConfigs(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 22:
- glxCreatePixmap(tvb, pinfo, offsetp, t, little_endian, length);
+ glxCreatePixmap(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 23:
- glxDestroyPixmap(tvb, pinfo, offsetp, t, little_endian, length);
+ glxDestroyPixmap(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 24:
- glxCreateNewContext(tvb, pinfo, offsetp, t, little_endian, length);
+ glxCreateNewContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 25:
- glxQueryContext(tvb, pinfo, offsetp, t, little_endian, length);
+ glxQueryContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 26:
- glxMakeContextCurrent(tvb, pinfo, offsetp, t, little_endian, length);
+ glxMakeContextCurrent(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 27:
- glxCreatePbuffer(tvb, pinfo, offsetp, t, little_endian, length);
+ glxCreatePbuffer(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 28:
- glxDestroyPbuffer(tvb, pinfo, offsetp, t, little_endian, length);
+ glxDestroyPbuffer(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 29:
- glxGetDrawableAttributes(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetDrawableAttributes(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 30:
- glxChangeDrawableAttributes(tvb, pinfo, offsetp, t, little_endian, length);
+ glxChangeDrawableAttributes(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 31:
- glxCreateWindow(tvb, pinfo, offsetp, t, little_endian, length);
+ glxCreateWindow(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 32:
- glxDeleteWindow(tvb, pinfo, offsetp, t, little_endian, length);
+ glxDeleteWindow(tvb, pinfo, offsetp, t, byte_order, length);
+ break;
+ case 33:
+ glxSetClientInfoARB(tvb, pinfo, offsetp, t, byte_order, length);
+ break;
+ case 34:
+ glxCreateContextAttribsARB(tvb, pinfo, offsetp, t, byte_order, length);
+ break;
+ case 35:
+ glxSetClientInfo2ARB(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 101:
- glxNewList(tvb, pinfo, offsetp, t, little_endian, length);
+ glxNewList(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 102:
- glxEndList(tvb, pinfo, offsetp, t, little_endian, length);
+ glxEndList(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 103:
- glxDeleteLists(tvb, pinfo, offsetp, t, little_endian, length);
+ glxDeleteLists(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 104:
- glxGenLists(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGenLists(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 105:
- glxFeedbackBuffer(tvb, pinfo, offsetp, t, little_endian, length);
+ glxFeedbackBuffer(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 106:
- glxSelectBuffer(tvb, pinfo, offsetp, t, little_endian, length);
+ glxSelectBuffer(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 107:
- glxRenderMode(tvb, pinfo, offsetp, t, little_endian, length);
+ glxRenderMode(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 108:
- glxFinish(tvb, pinfo, offsetp, t, little_endian, length);
+ glxFinish(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 109:
- glxPixelStoref(tvb, pinfo, offsetp, t, little_endian, length);
+ glxPixelStoref(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 110:
- glxPixelStorei(tvb, pinfo, offsetp, t, little_endian, length);
+ glxPixelStorei(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 111:
- glxReadPixels(tvb, pinfo, offsetp, t, little_endian, length);
+ glxReadPixels(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 112:
- glxGetBooleanv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetBooleanv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 113:
- glxGetClipPlane(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetClipPlane(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 114:
- glxGetDoublev(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetDoublev(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 115:
- glxGetError(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetError(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 116:
- glxGetFloatv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetFloatv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 117:
- glxGetIntegerv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetIntegerv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 118:
- glxGetLightfv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetLightfv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 119:
- glxGetLightiv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetLightiv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 120:
- glxGetMapdv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetMapdv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 121:
- glxGetMapfv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetMapfv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 122:
- glxGetMapiv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetMapiv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 123:
- glxGetMaterialfv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetMaterialfv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 124:
- glxGetMaterialiv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetMaterialiv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 125:
- glxGetPixelMapfv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetPixelMapfv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 126:
- glxGetPixelMapuiv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetPixelMapuiv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 127:
- glxGetPixelMapusv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetPixelMapusv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 128:
- glxGetPolygonStipple(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetPolygonStipple(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 129:
- glxGetString(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetString(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 130:
- glxGetTexEnvfv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetTexEnvfv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 131:
- glxGetTexEnviv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetTexEnviv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 132:
- glxGetTexGendv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetTexGendv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 133:
- glxGetTexGenfv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetTexGenfv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 134:
- glxGetTexGeniv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetTexGeniv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 135:
- glxGetTexImage(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetTexImage(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 136:
- glxGetTexParameterfv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetTexParameterfv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 137:
- glxGetTexParameteriv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetTexParameteriv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 138:
- glxGetTexLevelParameterfv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetTexLevelParameterfv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 139:
- glxGetTexLevelParameteriv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetTexLevelParameteriv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 141:
- glxIsList(tvb, pinfo, offsetp, t, little_endian, length);
+ glxIsList(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 142:
- glxFlush(tvb, pinfo, offsetp, t, little_endian, length);
+ glxFlush(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 143:
- glxAreTexturesResident(tvb, pinfo, offsetp, t, little_endian, length);
+ glxAreTexturesResident(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 144:
- glxDeleteTextures(tvb, pinfo, offsetp, t, little_endian, length);
+ glxDeleteTextures(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 145:
- glxGenTextures(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGenTextures(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 146:
- glxIsTexture(tvb, pinfo, offsetp, t, little_endian, length);
+ glxIsTexture(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 147:
- glxGetColorTable(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetColorTable(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 148:
- glxGetColorTableParameterfv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetColorTableParameterfv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 149:
- glxGetColorTableParameteriv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetColorTableParameteriv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 150:
- glxGetConvolutionFilter(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetConvolutionFilter(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 151:
- glxGetConvolutionParameterfv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetConvolutionParameterfv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 152:
- glxGetConvolutionParameteriv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetConvolutionParameteriv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 153:
- glxGetSeparableFilter(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetSeparableFilter(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 154:
- glxGetHistogram(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetHistogram(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 155:
- glxGetHistogramParameterfv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetHistogramParameterfv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 156:
- glxGetHistogramParameteriv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetHistogramParameteriv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 157:
- glxGetMinmax(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetMinmax(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 158:
- glxGetMinmaxParameterfv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetMinmaxParameterfv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 159:
- glxGetMinmaxParameteriv(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetMinmaxParameteriv(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 160:
- glxGetCompressedTexImageARB(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetCompressedTexImageARB(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 161:
- glxDeleteQueriesARB(tvb, pinfo, offsetp, t, little_endian, length);
+ glxDeleteQueriesARB(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 162:
- glxGenQueriesARB(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGenQueriesARB(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 163:
- glxIsQueryARB(tvb, pinfo, offsetp, t, little_endian, length);
+ glxIsQueryARB(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 164:
- glxGetQueryivARB(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetQueryivARB(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 165:
- glxGetQueryObjectivARB(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetQueryObjectivARB(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 166:
- glxGetQueryObjectuivARB(tvb, pinfo, offsetp, t, little_endian, length);
+ glxGetQueryObjectuivARB(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -10117,7 +10517,7 @@ static void register_glx(void)
set_handler("GLX", dispatch_glx, glx_errors, glx_events, glx_replies);
}
-static void struct_ScreenSize(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_ScreenSize(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -10128,24 +10528,24 @@ static void struct_ScreenSize(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_mwidth;
int f_mheight;
- item = proto_tree_add_item(root, hf_x11_struct_ScreenSize, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_ScreenSize, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ScreenSize_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ScreenSize_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ScreenSize_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ScreenSize_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_mwidth = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ScreenSize_mwidth, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ScreenSize_mwidth, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_mheight = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ScreenSize_mheight, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ScreenSize_mheight, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
}
-static int struct_size_RefreshRates(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
+static int struct_size_RefreshRates(tvbuff_t *tvb, int *offsetp, guint byte_order _U_)
{
int size = 0;
int f_nRates;
@@ -10154,7 +10554,7 @@ static int struct_size_RefreshRates(tvbuff_t *tvb, int *offsetp, int little_endi
return size + 2;
}
-static void struct_RefreshRates(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_RefreshRates(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -10162,27 +10562,27 @@ static void struct_RefreshRates(tvbuff_t *tvb, int *offsetp, proto_tree *root, i
proto_tree *t;
int f_nRates;
- item = proto_tree_add_item(root, hf_x11_struct_RefreshRates, tvb, *offsetp, struct_size_RefreshRates(tvb, offsetp, little_endian), little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_RefreshRates, tvb, *offsetp, struct_size_RefreshRates(tvb, offsetp, byte_order), ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_nRates = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_RefreshRates_nRates, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_RefreshRates_nRates, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- listOfCard16(tvb, offsetp, t, hf_x11_struct_RefreshRates_rates, hf_x11_struct_RefreshRates_rates_item, f_nRates, little_endian);
+ listOfCard16(tvb, offsetp, t, hf_x11_struct_RefreshRates_rates, hf_x11_struct_RefreshRates_rates_item, f_nRates, byte_order);
}
}
-static void randrQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_major_version;
int f_minor_version;
f_major_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_QueryVersion_major_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_QueryVersion_major_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_minor_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_QueryVersion_minor_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_QueryVersion_minor_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void randrQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void randrQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_major_version;
@@ -10198,18 +10598,18 @@ static void randrQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offs
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_major_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_QueryVersion_reply_major_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_QueryVersion_reply_major_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_minor_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_QueryVersion_reply_minor_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_QueryVersion_reply_minor_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(16);
}
-static void randrSetScreenConfig(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrSetScreenConfig(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
int f_timestamp;
@@ -10218,35 +10618,35 @@ static void randrSetScreenConfig(tvbuff_t *tvb, packet_info *pinfo _U_, int *off
int f_rotation;
int f_rate;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_config_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_config_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_config_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_sizeID = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_sizeID, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_sizeID, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_rotation = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_rotation, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_rotation, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_SetScreenConfig_rotation_mask_Rotate_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_SetScreenConfig_rotation_mask_Rotate_90, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_SetScreenConfig_rotation_mask_Rotate_180, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_SetScreenConfig_rotation_mask_Rotate_270, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_SetScreenConfig_rotation_mask_Reflect_X, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_SetScreenConfig_rotation_mask_Reflect_Y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_SetScreenConfig_rotation_mask_Rotate_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_SetScreenConfig_rotation_mask_Rotate_90, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_SetScreenConfig_rotation_mask_Rotate_180, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_SetScreenConfig_rotation_mask_Rotate_270, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_SetScreenConfig_rotation_mask_Reflect_X, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_SetScreenConfig_rotation_mask_Reflect_Y, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_rate = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_rate, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_rate, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
}
-static void randrSetScreenConfig_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void randrSetScreenConfig_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_status;
@@ -10258,56 +10658,56 @@ static void randrSetScreenConfig_Reply(tvbuff_t *tvb, packet_info *pinfo, int *o
col_append_fstr(pinfo->cinfo, COL_INFO, "-SetScreenConfig");
REPLY(reply);
- f_status = field8(tvb, offsetp, t, hf_x11_randr_SetScreenConfig_reply_status, little_endian);
+ f_status = field8(tvb, offsetp, t, hf_x11_randr_SetScreenConfig_reply_status, byte_order);
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
"sequencenumber: %d (randr-SetScreenConfig)", sequence_number);
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_new_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_reply_new_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_reply_new_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_config_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_reply_config_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_reply_config_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_root = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_reply_root, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetScreenConfig_reply_root, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_subpixel_order = field16(tvb, offsetp, t, hf_x11_randr_SetScreenConfig_reply_subpixel_order, little_endian);
+ f_subpixel_order = field16(tvb, offsetp, t, hf_x11_randr_SetScreenConfig_reply_subpixel_order, byte_order);
UNUSED(10);
}
-static void randrSelectInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrSelectInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
int f_enable;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SelectInput_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SelectInput_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_enable = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_randr_SelectInput_enable, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_randr_SelectInput_enable, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_SelectInput_enable_mask_ScreenChange, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_SelectInput_enable_mask_CrtcChange, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_SelectInput_enable_mask_OutputChange, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_SelectInput_enable_mask_OutputProperty, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_SelectInput_enable_mask_ScreenChange, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_SelectInput_enable_mask_CrtcChange, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_SelectInput_enable_mask_OutputChange, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_SelectInput_enable_mask_OutputProperty, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
UNUSED(2);
}
-static void randrGetScreenInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrGetScreenInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void randrGetScreenInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void randrGetScreenInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_rotations;
@@ -10325,14 +10725,14 @@ static void randrGetScreenInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *off
REPLY(reply);
f_rotations = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_reply_rotations, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_reply_rotations, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_GetScreenInfo_reply_rotations_mask_Rotate_0, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_GetScreenInfo_reply_rotations_mask_Rotate_90, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_GetScreenInfo_reply_rotations_mask_Rotate_180, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_GetScreenInfo_reply_rotations_mask_Rotate_270, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_GetScreenInfo_reply_rotations_mask_Reflect_X, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_GetScreenInfo_reply_rotations_mask_Reflect_Y, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_GetScreenInfo_reply_rotations_mask_Rotate_0, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_GetScreenInfo_reply_rotations_mask_Rotate_90, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_GetScreenInfo_reply_rotations_mask_Rotate_180, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_GetScreenInfo_reply_rotations_mask_Rotate_270, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_GetScreenInfo_reply_rotations_mask_Reflect_X, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_GetScreenInfo_reply_rotations_mask_Reflect_Y, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
@@ -10341,54 +10741,54 @@ static void randrGetScreenInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *off
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_root = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_reply_root, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_reply_root, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_reply_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_reply_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_config_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_reply_config_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_reply_config_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_nSizes = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_reply_nSizes, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_reply_nSizes, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_sizeID = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_reply_sizeID, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_reply_sizeID, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_rotation = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_reply_rotation, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_reply_rotation, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_GetScreenInfo_reply_rotation_mask_Rotate_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_GetScreenInfo_reply_rotation_mask_Rotate_90, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_GetScreenInfo_reply_rotation_mask_Rotate_180, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_GetScreenInfo_reply_rotation_mask_Rotate_270, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_GetScreenInfo_reply_rotation_mask_Reflect_X, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_GetScreenInfo_reply_rotation_mask_Reflect_Y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_GetScreenInfo_reply_rotation_mask_Rotate_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_GetScreenInfo_reply_rotation_mask_Rotate_90, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_GetScreenInfo_reply_rotation_mask_Rotate_180, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_GetScreenInfo_reply_rotation_mask_Rotate_270, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_GetScreenInfo_reply_rotation_mask_Reflect_X, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_GetScreenInfo_reply_rotation_mask_Reflect_Y, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_rate = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_reply_rate, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_reply_rate, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nInfo = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_reply_nInfo, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenInfo_reply_nInfo, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
- struct_ScreenSize(tvb, offsetp, t, little_endian, f_nSizes);
- struct_RefreshRates(tvb, offsetp, t, little_endian, (f_nInfo - f_nSizes));
+ struct_ScreenSize(tvb, offsetp, t, byte_order, f_nSizes);
+ struct_RefreshRates(tvb, offsetp, t, byte_order, (f_nInfo - f_nSizes));
}
-static void randrGetScreenSizeRange(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrGetScreenSizeRange(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenSizeRange_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenSizeRange_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void randrGetScreenSizeRange_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void randrGetScreenSizeRange_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_min_width;
@@ -10406,24 +10806,24 @@ static void randrGetScreenSizeRange_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_min_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenSizeRange_reply_min_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenSizeRange_reply_min_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_min_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenSizeRange_reply_min_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenSizeRange_reply_min_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_max_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenSizeRange_reply_max_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenSizeRange_reply_max_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_max_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenSizeRange_reply_max_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenSizeRange_reply_max_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(16);
}
-static void randrSetScreenSize(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrSetScreenSize(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
int f_width;
@@ -10431,23 +10831,23 @@ static void randrSetScreenSize(tvbuff_t *tvb, packet_info *pinfo _U_, int *offse
int f_mm_width;
int f_mm_height;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetScreenSize_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetScreenSize_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetScreenSize_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetScreenSize_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetScreenSize_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetScreenSize_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_mm_width = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetScreenSize_mm_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetScreenSize_mm_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_mm_height = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetScreenSize_mm_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetScreenSize_mm_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void struct_ModeInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_ModeInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -10467,75 +10867,75 @@ static void struct_ModeInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, int l
int f_name_len;
int f_mode_flags;
- item = proto_tree_add_item(root, hf_x11_struct_ModeInfo, tvb, *offsetp, 32, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_ModeInfo, tvb, *offsetp, 32, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ModeInfo_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ModeInfo_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ModeInfo_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ModeInfo_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ModeInfo_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ModeInfo_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_dot_clock = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ModeInfo_dot_clock, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ModeInfo_dot_clock, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_hsync_start = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ModeInfo_hsync_start, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ModeInfo_hsync_start, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_hsync_end = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ModeInfo_hsync_end, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ModeInfo_hsync_end, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_htotal = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ModeInfo_htotal, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ModeInfo_htotal, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_hskew = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ModeInfo_hskew, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ModeInfo_hskew, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vsync_start = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ModeInfo_vsync_start, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ModeInfo_vsync_start, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vsync_end = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ModeInfo_vsync_end, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ModeInfo_vsync_end, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vtotal = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ModeInfo_vtotal, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ModeInfo_vtotal, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_name_len = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ModeInfo_name_len, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ModeInfo_name_len, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_mode_flags = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_ModeInfo_mode_flags, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_ModeInfo_mode_flags, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_HsyncPositive, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_HsyncNegative, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_VsyncPositive, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_VsyncNegative, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_Interlace, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_DoubleScan, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_Csync, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_CsyncPositive, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_CsyncNegative, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_HskewPresent, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_Bcast, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_PixelMultiplex, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_DoubleClock, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_HalveClock, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_HsyncPositive, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_HsyncNegative, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_VsyncPositive, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_VsyncNegative, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_Interlace, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_DoubleScan, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_Csync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_CsyncPositive, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_CsyncNegative, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_HskewPresent, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_Bcast, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_PixelMultiplex, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_DoubleClock, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModeInfo_mode_flags_mask_HalveClock, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
}
}
-static void randrGetScreenResources(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrGetScreenResources(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenResources_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenResources_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void randrGetScreenResources_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void randrGetScreenResources_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_timestamp;
@@ -10555,45 +10955,45 @@ static void randrGetScreenResources_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenResources_reply_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenResources_reply_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_config_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenResources_reply_config_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenResources_reply_config_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_crtcs = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenResources_reply_num_crtcs, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenResources_reply_num_crtcs, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_num_outputs = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenResources_reply_num_outputs, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenResources_reply_num_outputs, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_num_modes = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenResources_reply_num_modes, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenResources_reply_num_modes, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_names_len = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenResources_reply_names_len, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenResources_reply_names_len, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(8);
- listOfCard32(tvb, offsetp, t, hf_x11_randr_GetScreenResources_reply_crtcs, hf_x11_randr_GetScreenResources_reply_crtcs_item, f_num_crtcs, little_endian);
- listOfCard32(tvb, offsetp, t, hf_x11_randr_GetScreenResources_reply_outputs, hf_x11_randr_GetScreenResources_reply_outputs_item, f_num_outputs, little_endian);
- struct_ModeInfo(tvb, offsetp, t, little_endian, f_num_modes);
- listOfByte(tvb, offsetp, t, hf_x11_randr_GetScreenResources_reply_names, f_names_len, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_randr_GetScreenResources_reply_crtcs, hf_x11_randr_GetScreenResources_reply_crtcs_item, f_num_crtcs, byte_order);
+ listOfCard32(tvb, offsetp, t, hf_x11_randr_GetScreenResources_reply_outputs, hf_x11_randr_GetScreenResources_reply_outputs_item, f_num_outputs, byte_order);
+ struct_ModeInfo(tvb, offsetp, t, byte_order, f_num_modes);
+ listOfByte(tvb, offsetp, t, hf_x11_randr_GetScreenResources_reply_names, f_names_len, byte_order);
}
-static void randrGetOutputInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrGetOutputInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_output;
int f_config_timestamp;
f_output = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_output, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_output, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_config_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_config_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_config_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void randrGetOutputInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void randrGetOutputInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_status;
@@ -10612,58 +11012,58 @@ static void randrGetOutputInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *off
col_append_fstr(pinfo->cinfo, COL_INFO, "-GetOutputInfo");
REPLY(reply);
- f_status = field8(tvb, offsetp, t, hf_x11_randr_GetOutputInfo_reply_status, little_endian);
+ f_status = field8(tvb, offsetp, t, hf_x11_randr_GetOutputInfo_reply_status, byte_order);
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
"sequencenumber: %d (randr-GetOutputInfo)", sequence_number);
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_crtc = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_crtc, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_crtc, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_mm_width = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_mm_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_mm_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_mm_height = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_mm_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_mm_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_connection = field8(tvb, offsetp, t, hf_x11_randr_GetOutputInfo_reply_connection, little_endian);
- f_subpixel_order = field8(tvb, offsetp, t, hf_x11_randr_GetOutputInfo_reply_subpixel_order, little_endian);
+ f_connection = field8(tvb, offsetp, t, hf_x11_randr_GetOutputInfo_reply_connection, byte_order);
+ f_subpixel_order = field8(tvb, offsetp, t, hf_x11_randr_GetOutputInfo_reply_subpixel_order, byte_order);
f_num_crtcs = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_num_crtcs, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_num_crtcs, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_num_modes = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_num_modes, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_num_modes, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_num_preferred = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_num_preferred, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_num_preferred, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_num_clones = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_num_clones, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_num_clones, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_name_len = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_name_len, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetOutputInfo_reply_name_len, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- listOfCard32(tvb, offsetp, t, hf_x11_randr_GetOutputInfo_reply_crtcs, hf_x11_randr_GetOutputInfo_reply_crtcs_item, f_num_crtcs, little_endian);
- listOfCard32(tvb, offsetp, t, hf_x11_randr_GetOutputInfo_reply_modes, hf_x11_randr_GetOutputInfo_reply_modes_item, f_num_modes, little_endian);
- listOfCard32(tvb, offsetp, t, hf_x11_randr_GetOutputInfo_reply_clones, hf_x11_randr_GetOutputInfo_reply_clones_item, f_num_clones, little_endian);
- listOfByte(tvb, offsetp, t, hf_x11_randr_GetOutputInfo_reply_name, f_name_len, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_randr_GetOutputInfo_reply_crtcs, hf_x11_randr_GetOutputInfo_reply_crtcs_item, f_num_crtcs, byte_order);
+ listOfCard32(tvb, offsetp, t, hf_x11_randr_GetOutputInfo_reply_modes, hf_x11_randr_GetOutputInfo_reply_modes_item, f_num_modes, byte_order);
+ listOfCard32(tvb, offsetp, t, hf_x11_randr_GetOutputInfo_reply_clones, hf_x11_randr_GetOutputInfo_reply_clones_item, f_num_clones, byte_order);
+ listOfByte(tvb, offsetp, t, hf_x11_randr_GetOutputInfo_reply_name, f_name_len, byte_order);
}
-static void randrListOutputProperties(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrListOutputProperties(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_output;
f_output = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_ListOutputProperties_output, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_ListOutputProperties_output, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void randrListOutputProperties_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void randrListOutputProperties_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_num_atoms;
@@ -10678,27 +11078,27 @@ static void randrListOutputProperties_Reply(tvbuff_t *tvb, packet_info *pinfo, i
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_atoms = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_ListOutputProperties_reply_num_atoms, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_ListOutputProperties_reply_num_atoms, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(22);
- listOfCard32(tvb, offsetp, t, hf_x11_randr_ListOutputProperties_reply_atoms, hf_x11_randr_ListOutputProperties_reply_atoms_item, f_num_atoms, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_randr_ListOutputProperties_reply_atoms, hf_x11_randr_ListOutputProperties_reply_atoms_item, f_num_atoms, byte_order);
}
-static void randrQueryOutputProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrQueryOutputProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_output;
int f_property;
f_output = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_QueryOutputProperty_output, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_QueryOutputProperty_output, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_property = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_QueryOutputProperty_property, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_QueryOutputProperty_property, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void randrQueryOutputProperty_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void randrQueryOutputProperty_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_pending;
@@ -10715,44 +11115,44 @@ static void randrQueryOutputProperty_Reply(tvbuff_t *tvb, packet_info *pinfo, in
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pending = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_QueryOutputProperty_reply_pending, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_QueryOutputProperty_reply_pending, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_range = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_QueryOutputProperty_reply_range, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_QueryOutputProperty_reply_range, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_immutable = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_QueryOutputProperty_reply_immutable, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_QueryOutputProperty_reply_immutable, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(21);
- listOfInt32(tvb, offsetp, t, hf_x11_randr_QueryOutputProperty_reply_validValues, hf_x11_randr_QueryOutputProperty_reply_validValues_item, f_length, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_randr_QueryOutputProperty_reply_validValues, hf_x11_randr_QueryOutputProperty_reply_validValues_item, f_length, byte_order);
}
-static void randrConfigureOutputProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrConfigureOutputProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_output;
int f_property;
int f_pending;
int f_range;
f_output = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_ConfigureOutputProperty_output, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_ConfigureOutputProperty_output, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_property = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_ConfigureOutputProperty_property, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_ConfigureOutputProperty_property, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pending = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_ConfigureOutputProperty_pending, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_ConfigureOutputProperty_pending, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_range = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_ConfigureOutputProperty_range, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_ConfigureOutputProperty_range, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- listOfInt32(tvb, offsetp, t, hf_x11_randr_ConfigureOutputProperty_values, hf_x11_randr_ConfigureOutputProperty_values_item, (length - 16) / 4, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_randr_ConfigureOutputProperty_values, hf_x11_randr_ConfigureOutputProperty_values_item, (length - 16) / 4, byte_order);
}
-static void randrChangeOutputProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrChangeOutputProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_output;
int f_property;
@@ -10761,39 +11161,39 @@ static void randrChangeOutputProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int
int f_mode;
int f_num_units;
f_output = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_ChangeOutputProperty_output, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_ChangeOutputProperty_output, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_property = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_ChangeOutputProperty_property, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_ChangeOutputProperty_property, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_type = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_ChangeOutputProperty_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_ChangeOutputProperty_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_format = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_ChangeOutputProperty_format, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_ChangeOutputProperty_format, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- f_mode = field8(tvb, offsetp, t, hf_x11_randr_ChangeOutputProperty_mode, little_endian);
+ f_mode = field8(tvb, offsetp, t, hf_x11_randr_ChangeOutputProperty_mode, byte_order);
UNUSED(2);
f_num_units = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_ChangeOutputProperty_num_units, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_ChangeOutputProperty_num_units, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_randr_ChangeOutputProperty_data, ((f_num_units * f_format) / 8), little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_randr_ChangeOutputProperty_data, ((f_num_units * f_format) / 8), byte_order);
length -= ((f_num_units * f_format) / 8) * 1;
}
-static void randrDeleteOutputProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrDeleteOutputProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_output;
int f_property;
f_output = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_DeleteOutputProperty_output, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_DeleteOutputProperty_output, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_property = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_DeleteOutputProperty_property, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_DeleteOutputProperty_property, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void randrGetOutputProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrGetOutputProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_output;
int f_property;
@@ -10803,27 +11203,27 @@ static void randrGetOutputProperty(tvbuff_t *tvb, packet_info *pinfo _U_, int *o
int f_delete;
int f_pending;
f_output = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_output, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_output, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_property = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_property, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_property, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_type = field32(tvb, offsetp, t, hf_x11_randr_GetOutputProperty_type, little_endian);
+ f_type = field32(tvb, offsetp, t, hf_x11_randr_GetOutputProperty_type, byte_order);
f_long_offset = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_long_offset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_long_offset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_long_length = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_long_length, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_long_length, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_delete = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_delete, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_delete, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_pending = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_pending, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_pending, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
}
-static void randrGetOutputProperty_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void randrGetOutputProperty_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_format;
@@ -10835,7 +11235,7 @@ static void randrGetOutputProperty_Reply(tvbuff_t *tvb, packet_info *pinfo, int
REPLY(reply);
f_format = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_reply_format, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_reply_format, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -10843,29 +11243,29 @@ static void randrGetOutputProperty_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_type = field32(tvb, offsetp, t, hf_x11_randr_GetOutputProperty_reply_type, little_endian);
+ f_type = field32(tvb, offsetp, t, hf_x11_randr_GetOutputProperty_reply_type, byte_order);
f_bytes_after = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_reply_bytes_after, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_reply_bytes_after, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_items = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_reply_num_items, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetOutputProperty_reply_num_items, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfByte(tvb, offsetp, t, hf_x11_randr_GetOutputProperty_reply_data, (f_num_items * (f_format / 8)), little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_randr_GetOutputProperty_reply_data, (f_num_items * (f_format / 8)), byte_order);
}
-static void randrCreateMode(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrCreateMode(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_CreateMode_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_CreateMode_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_ModeInfo(tvb, offsetp, t, little_endian, 1);
- listOfByte(tvb, offsetp, t, hf_x11_randr_CreateMode_name, (length - 40) / 1, little_endian);
+ struct_ModeInfo(tvb, offsetp, t, byte_order, 1);
+ listOfByte(tvb, offsetp, t, hf_x11_randr_CreateMode_name, (length - 40) / 1, byte_order);
}
-static void randrCreateMode_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void randrCreateMode_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_mode;
@@ -10880,58 +11280,58 @@ static void randrCreateMode_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_mode = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_CreateMode_reply_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_CreateMode_reply_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
}
-static void randrDestroyMode(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrDestroyMode(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_mode;
f_mode = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_DestroyMode_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_DestroyMode_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void randrAddOutputMode(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrAddOutputMode(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_output;
int f_mode;
f_output = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_AddOutputMode_output, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_AddOutputMode_output, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_mode = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_AddOutputMode_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_AddOutputMode_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void randrDeleteOutputMode(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrDeleteOutputMode(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_output;
int f_mode;
f_output = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_DeleteOutputMode_output, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_DeleteOutputMode_output, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_mode = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_DeleteOutputMode_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_DeleteOutputMode_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void randrGetCrtcInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrGetCrtcInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_crtc;
int f_config_timestamp;
f_crtc = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_crtc, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_crtc, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_config_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_config_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_config_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void randrGetCrtcInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void randrGetCrtcInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_status;
@@ -10949,68 +11349,68 @@ static void randrGetCrtcInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offse
col_append_fstr(pinfo->cinfo, COL_INFO, "-GetCrtcInfo");
REPLY(reply);
- f_status = field8(tvb, offsetp, t, hf_x11_randr_GetCrtcInfo_reply_status, little_endian);
+ f_status = field8(tvb, offsetp, t, hf_x11_randr_GetCrtcInfo_reply_status, byte_order);
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
"sequencenumber: %d (randr-GetCrtcInfo)", sequence_number);
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_mode = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_rotation = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_rotation, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_rotation, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_GetCrtcInfo_reply_rotation_mask_Rotate_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_GetCrtcInfo_reply_rotation_mask_Rotate_90, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_GetCrtcInfo_reply_rotation_mask_Rotate_180, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_GetCrtcInfo_reply_rotation_mask_Rotate_270, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_GetCrtcInfo_reply_rotation_mask_Reflect_X, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_GetCrtcInfo_reply_rotation_mask_Reflect_Y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_GetCrtcInfo_reply_rotation_mask_Rotate_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_GetCrtcInfo_reply_rotation_mask_Rotate_90, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_GetCrtcInfo_reply_rotation_mask_Rotate_180, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_GetCrtcInfo_reply_rotation_mask_Rotate_270, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_GetCrtcInfo_reply_rotation_mask_Reflect_X, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_GetCrtcInfo_reply_rotation_mask_Reflect_Y, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_rotations = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_rotations, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_rotations, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_GetCrtcInfo_reply_rotations_mask_Rotate_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_GetCrtcInfo_reply_rotations_mask_Rotate_90, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_GetCrtcInfo_reply_rotations_mask_Rotate_180, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_GetCrtcInfo_reply_rotations_mask_Rotate_270, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_GetCrtcInfo_reply_rotations_mask_Reflect_X, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_GetCrtcInfo_reply_rotations_mask_Reflect_Y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_GetCrtcInfo_reply_rotations_mask_Rotate_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_GetCrtcInfo_reply_rotations_mask_Rotate_90, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_GetCrtcInfo_reply_rotations_mask_Rotate_180, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_GetCrtcInfo_reply_rotations_mask_Rotate_270, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_GetCrtcInfo_reply_rotations_mask_Reflect_X, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_GetCrtcInfo_reply_rotations_mask_Reflect_Y, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_num_outputs = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_num_outputs, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_num_outputs, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_num_possible_outputs = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_num_possible_outputs, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetCrtcInfo_reply_num_possible_outputs, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- listOfCard32(tvb, offsetp, t, hf_x11_randr_GetCrtcInfo_reply_outputs, hf_x11_randr_GetCrtcInfo_reply_outputs_item, f_num_outputs, little_endian);
- listOfCard32(tvb, offsetp, t, hf_x11_randr_GetCrtcInfo_reply_possible, hf_x11_randr_GetCrtcInfo_reply_possible_item, f_num_possible_outputs, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_randr_GetCrtcInfo_reply_outputs, hf_x11_randr_GetCrtcInfo_reply_outputs_item, f_num_outputs, byte_order);
+ listOfCard32(tvb, offsetp, t, hf_x11_randr_GetCrtcInfo_reply_possible, hf_x11_randr_GetCrtcInfo_reply_possible_item, f_num_possible_outputs, byte_order);
}
-static void randrSetCrtcConfig(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrSetCrtcConfig(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_crtc;
int f_timestamp;
@@ -11020,39 +11420,39 @@ static void randrSetCrtcConfig(tvbuff_t *tvb, packet_info *pinfo _U_, int *offse
int f_mode;
int f_rotation;
f_crtc = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetCrtcConfig_crtc, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetCrtcConfig_crtc, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetCrtcConfig_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetCrtcConfig_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_config_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetCrtcConfig_config_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetCrtcConfig_config_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetCrtcConfig_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetCrtcConfig_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetCrtcConfig_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetCrtcConfig_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_mode = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetCrtcConfig_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetCrtcConfig_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_rotation = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_randr_SetCrtcConfig_rotation, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_randr_SetCrtcConfig_rotation, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_SetCrtcConfig_rotation_mask_Rotate_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_SetCrtcConfig_rotation_mask_Rotate_90, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_SetCrtcConfig_rotation_mask_Rotate_180, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_SetCrtcConfig_rotation_mask_Rotate_270, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_SetCrtcConfig_rotation_mask_Reflect_X, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_SetCrtcConfig_rotation_mask_Reflect_Y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_SetCrtcConfig_rotation_mask_Rotate_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_SetCrtcConfig_rotation_mask_Rotate_90, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_SetCrtcConfig_rotation_mask_Rotate_180, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_SetCrtcConfig_rotation_mask_Rotate_270, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_SetCrtcConfig_rotation_mask_Reflect_X, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_SetCrtcConfig_rotation_mask_Reflect_Y, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
UNUSED(2);
- listOfCard32(tvb, offsetp, t, hf_x11_randr_SetCrtcConfig_outputs, hf_x11_randr_SetCrtcConfig_outputs_item, (length - 28) / 4, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_randr_SetCrtcConfig_outputs, hf_x11_randr_SetCrtcConfig_outputs_item, (length - 28) / 4, byte_order);
}
-static void randrSetCrtcConfig_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void randrSetCrtcConfig_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_status;
@@ -11061,29 +11461,29 @@ static void randrSetCrtcConfig_Reply(tvbuff_t *tvb, packet_info *pinfo, int *off
col_append_fstr(pinfo->cinfo, COL_INFO, "-SetCrtcConfig");
REPLY(reply);
- f_status = field8(tvb, offsetp, t, hf_x11_randr_SetCrtcConfig_reply_status, little_endian);
+ f_status = field8(tvb, offsetp, t, hf_x11_randr_SetCrtcConfig_reply_status, byte_order);
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
"sequencenumber: %d (randr-SetCrtcConfig)", sequence_number);
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetCrtcConfig_reply_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetCrtcConfig_reply_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
}
-static void randrGetCrtcGammaSize(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrGetCrtcGammaSize(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_crtc;
f_crtc = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetCrtcGammaSize_crtc, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetCrtcGammaSize_crtc, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void randrGetCrtcGammaSize_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void randrGetCrtcGammaSize_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_size;
@@ -11098,22 +11498,22 @@ static void randrGetCrtcGammaSize_Reply(tvbuff_t *tvb, packet_info *pinfo, int *
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_size = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetCrtcGammaSize_reply_size, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetCrtcGammaSize_reply_size, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(22);
}
-static void randrGetCrtcGamma(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrGetCrtcGamma(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_crtc;
f_crtc = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetCrtcGamma_crtc, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetCrtcGamma_crtc, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void randrGetCrtcGamma_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void randrGetCrtcGamma_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_size;
@@ -11128,44 +11528,44 @@ static void randrGetCrtcGamma_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offs
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_size = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetCrtcGamma_reply_size, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetCrtcGamma_reply_size, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(22);
- listOfCard16(tvb, offsetp, t, hf_x11_randr_GetCrtcGamma_reply_red, hf_x11_randr_GetCrtcGamma_reply_red_item, f_size, little_endian);
- listOfCard16(tvb, offsetp, t, hf_x11_randr_GetCrtcGamma_reply_green, hf_x11_randr_GetCrtcGamma_reply_green_item, f_size, little_endian);
- listOfCard16(tvb, offsetp, t, hf_x11_randr_GetCrtcGamma_reply_blue, hf_x11_randr_GetCrtcGamma_reply_blue_item, f_size, little_endian);
+ listOfCard16(tvb, offsetp, t, hf_x11_randr_GetCrtcGamma_reply_red, hf_x11_randr_GetCrtcGamma_reply_red_item, f_size, byte_order);
+ listOfCard16(tvb, offsetp, t, hf_x11_randr_GetCrtcGamma_reply_green, hf_x11_randr_GetCrtcGamma_reply_green_item, f_size, byte_order);
+ listOfCard16(tvb, offsetp, t, hf_x11_randr_GetCrtcGamma_reply_blue, hf_x11_randr_GetCrtcGamma_reply_blue_item, f_size, byte_order);
}
-static void randrSetCrtcGamma(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrSetCrtcGamma(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_crtc;
int f_size;
f_crtc = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetCrtcGamma_crtc, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetCrtcGamma_crtc, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_size = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetCrtcGamma_size, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetCrtcGamma_size, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
- listOfCard16(tvb, offsetp, t, hf_x11_randr_SetCrtcGamma_red, hf_x11_randr_SetCrtcGamma_red_item, f_size, little_endian);
+ listOfCard16(tvb, offsetp, t, hf_x11_randr_SetCrtcGamma_red, hf_x11_randr_SetCrtcGamma_red_item, f_size, byte_order);
length -= f_size * 2;
- listOfCard16(tvb, offsetp, t, hf_x11_randr_SetCrtcGamma_green, hf_x11_randr_SetCrtcGamma_green_item, f_size, little_endian);
+ listOfCard16(tvb, offsetp, t, hf_x11_randr_SetCrtcGamma_green, hf_x11_randr_SetCrtcGamma_green_item, f_size, byte_order);
length -= f_size * 2;
- listOfCard16(tvb, offsetp, t, hf_x11_randr_SetCrtcGamma_blue, hf_x11_randr_SetCrtcGamma_blue_item, f_size, little_endian);
+ listOfCard16(tvb, offsetp, t, hf_x11_randr_SetCrtcGamma_blue, hf_x11_randr_SetCrtcGamma_blue_item, f_size, byte_order);
length -= f_size * 2;
}
-static void randrGetScreenResourcesCurrent(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrGetScreenResourcesCurrent(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenResourcesCurrent_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenResourcesCurrent_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void randrGetScreenResourcesCurrent_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void randrGetScreenResourcesCurrent_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_timestamp;
@@ -11185,58 +11585,58 @@ static void randrGetScreenResourcesCurrent_Reply(tvbuff_t *tvb, packet_info *pin
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenResourcesCurrent_reply_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenResourcesCurrent_reply_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_config_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenResourcesCurrent_reply_config_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenResourcesCurrent_reply_config_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_crtcs = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenResourcesCurrent_reply_num_crtcs, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenResourcesCurrent_reply_num_crtcs, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_num_outputs = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenResourcesCurrent_reply_num_outputs, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenResourcesCurrent_reply_num_outputs, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_num_modes = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenResourcesCurrent_reply_num_modes, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenResourcesCurrent_reply_num_modes, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_names_len = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetScreenResourcesCurrent_reply_names_len, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetScreenResourcesCurrent_reply_names_len, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(8);
- listOfCard32(tvb, offsetp, t, hf_x11_randr_GetScreenResourcesCurrent_reply_crtcs, hf_x11_randr_GetScreenResourcesCurrent_reply_crtcs_item, f_num_crtcs, little_endian);
- listOfCard32(tvb, offsetp, t, hf_x11_randr_GetScreenResourcesCurrent_reply_outputs, hf_x11_randr_GetScreenResourcesCurrent_reply_outputs_item, f_num_outputs, little_endian);
- struct_ModeInfo(tvb, offsetp, t, little_endian, f_num_modes);
- listOfByte(tvb, offsetp, t, hf_x11_randr_GetScreenResourcesCurrent_reply_names, f_names_len, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_randr_GetScreenResourcesCurrent_reply_crtcs, hf_x11_randr_GetScreenResourcesCurrent_reply_crtcs_item, f_num_crtcs, byte_order);
+ listOfCard32(tvb, offsetp, t, hf_x11_randr_GetScreenResourcesCurrent_reply_outputs, hf_x11_randr_GetScreenResourcesCurrent_reply_outputs_item, f_num_outputs, byte_order);
+ struct_ModeInfo(tvb, offsetp, t, byte_order, f_num_modes);
+ listOfByte(tvb, offsetp, t, hf_x11_randr_GetScreenResourcesCurrent_reply_names, f_names_len, byte_order);
}
-static void randrSetCrtcTransform(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrSetCrtcTransform(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_crtc;
int f_filter_len;
f_crtc = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetCrtcTransform_crtc, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetCrtcTransform_crtc, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_TRANSFORM(tvb, offsetp, t, little_endian, 1);
+ struct_TRANSFORM(tvb, offsetp, t, byte_order, 1);
f_filter_len = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetCrtcTransform_filter_len, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetCrtcTransform_filter_len, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
- listOfByte(tvb, offsetp, t, hf_x11_randr_SetCrtcTransform_filter_name, f_filter_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_randr_SetCrtcTransform_filter_name, f_filter_len, byte_order);
length -= f_filter_len * 1;
- listOfInt32(tvb, offsetp, t, hf_x11_randr_SetCrtcTransform_filter_params, hf_x11_randr_SetCrtcTransform_filter_params_item, (length - 48) / 4, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_randr_SetCrtcTransform_filter_params, hf_x11_randr_SetCrtcTransform_filter_params_item, (length - 48) / 4, byte_order);
}
-static void randrGetCrtcTransform(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrGetCrtcTransform(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_crtc;
f_crtc = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetCrtcTransform_crtc, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetCrtcTransform_crtc, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void randrGetCrtcTransform_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void randrGetCrtcTransform_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_has_transforms;
@@ -11255,41 +11655,41 @@ static void randrGetCrtcTransform_Reply(tvbuff_t *tvb, packet_info *pinfo, int *
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_TRANSFORM(tvb, offsetp, t, little_endian, 1);
+ struct_TRANSFORM(tvb, offsetp, t, byte_order, 1);
f_has_transforms = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetCrtcTransform_reply_has_transforms, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetCrtcTransform_reply_has_transforms, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
- struct_TRANSFORM(tvb, offsetp, t, little_endian, 1);
+ struct_TRANSFORM(tvb, offsetp, t, byte_order, 1);
UNUSED(4);
f_pending_len = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetCrtcTransform_reply_pending_len, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetCrtcTransform_reply_pending_len, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_pending_nparams = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetCrtcTransform_reply_pending_nparams, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetCrtcTransform_reply_pending_nparams, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_current_len = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetCrtcTransform_reply_current_len, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetCrtcTransform_reply_current_len, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_current_nparams = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetCrtcTransform_reply_current_nparams, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetCrtcTransform_reply_current_nparams, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- listOfByte(tvb, offsetp, t, hf_x11_randr_GetCrtcTransform_reply_pending_filter_name, f_pending_len, little_endian);
- listOfInt32(tvb, offsetp, t, hf_x11_randr_GetCrtcTransform_reply_pending_params, hf_x11_randr_GetCrtcTransform_reply_pending_params_item, f_pending_nparams, little_endian);
- listOfByte(tvb, offsetp, t, hf_x11_randr_GetCrtcTransform_reply_current_filter_name, f_current_len, little_endian);
- listOfInt32(tvb, offsetp, t, hf_x11_randr_GetCrtcTransform_reply_current_params, hf_x11_randr_GetCrtcTransform_reply_current_params_item, f_current_nparams, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_randr_GetCrtcTransform_reply_pending_filter_name, f_pending_len, byte_order);
+ listOfInt32(tvb, offsetp, t, hf_x11_randr_GetCrtcTransform_reply_pending_params, hf_x11_randr_GetCrtcTransform_reply_pending_params_item, f_pending_nparams, byte_order);
+ listOfByte(tvb, offsetp, t, hf_x11_randr_GetCrtcTransform_reply_current_filter_name, f_current_len, byte_order);
+ listOfInt32(tvb, offsetp, t, hf_x11_randr_GetCrtcTransform_reply_current_params, hf_x11_randr_GetCrtcTransform_reply_current_params_item, f_current_nparams, byte_order);
}
-static void randrGetPanning(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrGetPanning(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_crtc;
f_crtc = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetPanning_crtc, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetPanning_crtc, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void randrGetPanning_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void randrGetPanning_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_status;
@@ -11310,57 +11710,57 @@ static void randrGetPanning_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
col_append_fstr(pinfo->cinfo, COL_INFO, "-GetPanning");
REPLY(reply);
- f_status = field8(tvb, offsetp, t, hf_x11_randr_GetPanning_reply_status, little_endian);
+ f_status = field8(tvb, offsetp, t, hf_x11_randr_GetPanning_reply_status, byte_order);
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
"sequencenumber: %d (randr-GetPanning)", sequence_number);
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_left = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_left, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_left, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_top = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_top, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_top, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_track_left = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_track_left, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_track_left, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_track_top = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_track_top, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_track_top, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_track_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_track_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_track_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_track_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_track_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_track_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_border_left = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_border_left, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_border_left, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_border_top = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_border_top, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_border_top, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_border_right = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_border_right, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_border_right, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_border_bottom = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_border_bottom, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetPanning_reply_border_bottom, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void randrSetPanning(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrSetPanning(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_crtc;
int f_timestamp;
@@ -11377,49 +11777,49 @@ static void randrSetPanning(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_border_right;
int f_border_bottom;
f_crtc = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetPanning_crtc, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetPanning_crtc, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetPanning_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetPanning_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_left = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetPanning_left, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetPanning_left, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_top = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetPanning_top, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetPanning_top, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetPanning_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetPanning_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetPanning_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetPanning_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_track_left = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetPanning_track_left, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetPanning_track_left, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_track_top = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetPanning_track_top, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetPanning_track_top, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_track_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetPanning_track_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetPanning_track_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_track_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetPanning_track_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetPanning_track_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_border_left = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetPanning_border_left, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetPanning_border_left, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_border_top = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetPanning_border_top, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetPanning_border_top, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_border_right = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetPanning_border_right, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetPanning_border_right, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_border_bottom = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetPanning_border_bottom, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetPanning_border_bottom, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void randrSetPanning_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void randrSetPanning_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_status;
@@ -11428,40 +11828,40 @@ static void randrSetPanning_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
col_append_fstr(pinfo->cinfo, COL_INFO, "-SetPanning");
REPLY(reply);
- f_status = field8(tvb, offsetp, t, hf_x11_randr_SetPanning_reply_status, little_endian);
+ f_status = field8(tvb, offsetp, t, hf_x11_randr_SetPanning_reply_status, byte_order);
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
"sequencenumber: %d (randr-SetPanning)", sequence_number);
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetPanning_reply_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetPanning_reply_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void randrSetOutputPrimary(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrSetOutputPrimary(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
int f_output;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetOutputPrimary_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetOutputPrimary_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_output = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_SetOutputPrimary_output, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_SetOutputPrimary_output, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void randrGetOutputPrimary(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void randrGetOutputPrimary(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetOutputPrimary_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetOutputPrimary_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void randrGetOutputPrimary_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void randrGetOutputPrimary_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_output;
@@ -11476,14 +11876,14 @@ static void randrGetOutputPrimary_Reply(tvbuff_t *tvb, packet_info *pinfo, int *
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_output = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_GetOutputPrimary_reply_output, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_GetOutputPrimary_reply_output, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void randrScreenChangeNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void randrScreenChangeNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_rotation;
int f_timestamp;
@@ -11498,48 +11898,48 @@ static void randrScreenChangeNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t,
int f_mheight;
f_rotation = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_randr_ScreenChangeNotify_rotation, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_randr_ScreenChangeNotify_rotation, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_ScreenChangeNotify_rotation_mask_Rotate_0, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_ScreenChangeNotify_rotation_mask_Rotate_90, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_ScreenChangeNotify_rotation_mask_Rotate_180, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_ScreenChangeNotify_rotation_mask_Rotate_270, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_ScreenChangeNotify_rotation_mask_Reflect_X, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_randr_ScreenChangeNotify_rotation_mask_Reflect_Y, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_ScreenChangeNotify_rotation_mask_Rotate_0, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_ScreenChangeNotify_rotation_mask_Rotate_90, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_ScreenChangeNotify_rotation_mask_Rotate_180, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_ScreenChangeNotify_rotation_mask_Rotate_270, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_ScreenChangeNotify_rotation_mask_Reflect_X, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_randr_ScreenChangeNotify_rotation_mask_Reflect_Y, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
CARD16(event_sequencenumber);
f_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_ScreenChangeNotify_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_ScreenChangeNotify_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_config_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_ScreenChangeNotify_config_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_ScreenChangeNotify_config_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_root = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_ScreenChangeNotify_root, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_ScreenChangeNotify_root, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_request_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_ScreenChangeNotify_request_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_ScreenChangeNotify_request_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_sizeID = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_ScreenChangeNotify_sizeID, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_ScreenChangeNotify_sizeID, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- f_subpixel_order = field16(tvb, offsetp, t, hf_x11_randr_ScreenChangeNotify_subpixel_order, little_endian);
+ f_subpixel_order = field16(tvb, offsetp, t, hf_x11_randr_ScreenChangeNotify_subpixel_order, byte_order);
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_ScreenChangeNotify_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_ScreenChangeNotify_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_ScreenChangeNotify_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_ScreenChangeNotify_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_mwidth = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_ScreenChangeNotify_mwidth, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_ScreenChangeNotify_mwidth, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_mheight = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_randr_ScreenChangeNotify_mheight, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_randr_ScreenChangeNotify_mheight, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void struct_CrtcChange(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_CrtcChange(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -11555,49 +11955,49 @@ static void struct_CrtcChange(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_width;
int f_height;
- item = proto_tree_add_item(root, hf_x11_struct_CrtcChange, tvb, *offsetp, 28, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_CrtcChange, tvb, *offsetp, 28, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_CrtcChange_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_CrtcChange_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_CrtcChange_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_CrtcChange_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_crtc = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_CrtcChange_crtc, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_CrtcChange_crtc, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_mode = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_CrtcChange_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_CrtcChange_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_rotation = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_CrtcChange_rotation, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_CrtcChange_rotation, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_CrtcChange_rotation_mask_Rotate_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_CrtcChange_rotation_mask_Rotate_90, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_CrtcChange_rotation_mask_Rotate_180, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_CrtcChange_rotation_mask_Rotate_270, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_CrtcChange_rotation_mask_Reflect_X, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_CrtcChange_rotation_mask_Reflect_Y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_CrtcChange_rotation_mask_Rotate_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_CrtcChange_rotation_mask_Rotate_90, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_CrtcChange_rotation_mask_Rotate_180, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_CrtcChange_rotation_mask_Rotate_270, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_CrtcChange_rotation_mask_Reflect_X, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_CrtcChange_rotation_mask_Reflect_Y, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
UNUSED(2);
f_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_CrtcChange_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_CrtcChange_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_CrtcChange_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_CrtcChange_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_CrtcChange_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_CrtcChange_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_CrtcChange_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_CrtcChange_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
}
-static void struct_OutputChange(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_OutputChange(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -11613,44 +12013,44 @@ static void struct_OutputChange(tvbuff_t *tvb, int *offsetp, proto_tree *root, i
int f_connection;
int f_subpixel_order;
- item = proto_tree_add_item(root, hf_x11_struct_OutputChange, tvb, *offsetp, 28, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_OutputChange, tvb, *offsetp, 28, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_OutputChange_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_OutputChange_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_config_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_OutputChange_config_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_OutputChange_config_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_OutputChange_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_OutputChange_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_output = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_OutputChange_output, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_OutputChange_output, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_crtc = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_OutputChange_crtc, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_OutputChange_crtc, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_mode = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_OutputChange_mode, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_OutputChange_mode, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_rotation = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_OutputChange_rotation, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_OutputChange_rotation, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_OutputChange_rotation_mask_Rotate_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_OutputChange_rotation_mask_Rotate_90, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_OutputChange_rotation_mask_Rotate_180, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_OutputChange_rotation_mask_Rotate_270, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_OutputChange_rotation_mask_Reflect_X, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_OutputChange_rotation_mask_Reflect_Y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_OutputChange_rotation_mask_Rotate_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_OutputChange_rotation_mask_Rotate_90, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_OutputChange_rotation_mask_Rotate_180, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_OutputChange_rotation_mask_Rotate_270, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_OutputChange_rotation_mask_Reflect_X, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_OutputChange_rotation_mask_Reflect_Y, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
- f_connection = field8(tvb, offsetp, t, hf_x11_struct_OutputChange_connection, little_endian);
- f_subpixel_order = field8(tvb, offsetp, t, hf_x11_struct_OutputChange_subpixel_order, little_endian);
+ f_connection = field8(tvb, offsetp, t, hf_x11_struct_OutputChange_connection, byte_order);
+ f_subpixel_order = field8(tvb, offsetp, t, hf_x11_struct_OutputChange_subpixel_order, byte_order);
}
}
-static void struct_OutputProperty(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_OutputProperty(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -11662,52 +12062,52 @@ static void struct_OutputProperty(tvbuff_t *tvb, int *offsetp, proto_tree *root,
int f_timestamp;
int f_status;
- item = proto_tree_add_item(root, hf_x11_struct_OutputProperty, tvb, *offsetp, 28, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_OutputProperty, tvb, *offsetp, 28, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_OutputProperty_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_OutputProperty_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_output = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_OutputProperty_output, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_OutputProperty_output, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_atom = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_OutputProperty_atom, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_OutputProperty_atom, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_OutputProperty_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_OutputProperty_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_status = field8(tvb, offsetp, t, hf_x11_struct_OutputProperty_status, little_endian);
+ f_status = field8(tvb, offsetp, t, hf_x11_struct_OutputProperty_status, byte_order);
UNUSED(11);
}
}
-static void struct_NotifyData(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_NotifyData(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order, int count)
{
int i;
int base = *offsetp;
for (i = 0; i < count; i++) {
proto_item *item;
proto_tree *t;
- item = proto_tree_add_item(root, hf_x11_union_NotifyData, tvb, base, 28, little_endian);
+ item = proto_tree_add_item(root, hf_x11_union_NotifyData, tvb, base, 28, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
*offsetp = base;
- struct_CrtcChange(tvb, offsetp, t, little_endian, 1);
+ struct_CrtcChange(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_OutputChange(tvb, offsetp, t, little_endian, 1);
+ struct_OutputChange(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_OutputProperty(tvb, offsetp, t, little_endian, 1);
+ struct_OutputProperty(tvb, offsetp, t, byte_order, 1);
base += 28;
}
*offsetp = base;
}
-static void randrNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void randrNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_subCode;
- f_subCode = field8(tvb, offsetp, t, hf_x11_randr_Notify_subCode, little_endian);
+ f_subCode = field8(tvb, offsetp, t, hf_x11_randr_Notify_subCode, byte_order);
CARD16(event_sequencenumber);
- struct_NotifyData(tvb, offsetp, t, little_endian, 1);
+ struct_NotifyData(tvb, offsetp, t, byte_order, 1);
}
static const value_string randr_extension_minor[] = {
{ 0, "QueryVersion" },
@@ -11770,7 +12170,7 @@ static x11_reply_info randr_replies[] = {
{ 0, NULL }
};
-static void dispatch_randr(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_randr(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(randr_extension_minor);
@@ -11781,94 +12181,94 @@ static void dispatch_randr(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, prot
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- randrQueryVersion(tvb, pinfo, offsetp, t, little_endian, length);
+ randrQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 2:
- randrSetScreenConfig(tvb, pinfo, offsetp, t, little_endian, length);
+ randrSetScreenConfig(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 4:
- randrSelectInput(tvb, pinfo, offsetp, t, little_endian, length);
+ randrSelectInput(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 5:
- randrGetScreenInfo(tvb, pinfo, offsetp, t, little_endian, length);
+ randrGetScreenInfo(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 6:
- randrGetScreenSizeRange(tvb, pinfo, offsetp, t, little_endian, length);
+ randrGetScreenSizeRange(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 7:
- randrSetScreenSize(tvb, pinfo, offsetp, t, little_endian, length);
+ randrSetScreenSize(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 8:
- randrGetScreenResources(tvb, pinfo, offsetp, t, little_endian, length);
+ randrGetScreenResources(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 9:
- randrGetOutputInfo(tvb, pinfo, offsetp, t, little_endian, length);
+ randrGetOutputInfo(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 10:
- randrListOutputProperties(tvb, pinfo, offsetp, t, little_endian, length);
+ randrListOutputProperties(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 11:
- randrQueryOutputProperty(tvb, pinfo, offsetp, t, little_endian, length);
+ randrQueryOutputProperty(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 12:
- randrConfigureOutputProperty(tvb, pinfo, offsetp, t, little_endian, length);
+ randrConfigureOutputProperty(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 13:
- randrChangeOutputProperty(tvb, pinfo, offsetp, t, little_endian, length);
+ randrChangeOutputProperty(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 14:
- randrDeleteOutputProperty(tvb, pinfo, offsetp, t, little_endian, length);
+ randrDeleteOutputProperty(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 15:
- randrGetOutputProperty(tvb, pinfo, offsetp, t, little_endian, length);
+ randrGetOutputProperty(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 16:
- randrCreateMode(tvb, pinfo, offsetp, t, little_endian, length);
+ randrCreateMode(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 17:
- randrDestroyMode(tvb, pinfo, offsetp, t, little_endian, length);
+ randrDestroyMode(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 18:
- randrAddOutputMode(tvb, pinfo, offsetp, t, little_endian, length);
+ randrAddOutputMode(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 19:
- randrDeleteOutputMode(tvb, pinfo, offsetp, t, little_endian, length);
+ randrDeleteOutputMode(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 20:
- randrGetCrtcInfo(tvb, pinfo, offsetp, t, little_endian, length);
+ randrGetCrtcInfo(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 21:
- randrSetCrtcConfig(tvb, pinfo, offsetp, t, little_endian, length);
+ randrSetCrtcConfig(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 22:
- randrGetCrtcGammaSize(tvb, pinfo, offsetp, t, little_endian, length);
+ randrGetCrtcGammaSize(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 23:
- randrGetCrtcGamma(tvb, pinfo, offsetp, t, little_endian, length);
+ randrGetCrtcGamma(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 24:
- randrSetCrtcGamma(tvb, pinfo, offsetp, t, little_endian, length);
+ randrSetCrtcGamma(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 25:
- randrGetScreenResourcesCurrent(tvb, pinfo, offsetp, t, little_endian, length);
+ randrGetScreenResourcesCurrent(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 26:
- randrSetCrtcTransform(tvb, pinfo, offsetp, t, little_endian, length);
+ randrSetCrtcTransform(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 27:
- randrGetCrtcTransform(tvb, pinfo, offsetp, t, little_endian, length);
+ randrGetCrtcTransform(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 28:
- randrGetPanning(tvb, pinfo, offsetp, t, little_endian, length);
+ randrGetPanning(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 29:
- randrSetPanning(tvb, pinfo, offsetp, t, little_endian, length);
+ randrSetPanning(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 30:
- randrSetOutputPrimary(tvb, pinfo, offsetp, t, little_endian, length);
+ randrSetOutputPrimary(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 31:
- randrGetOutputPrimary(tvb, pinfo, offsetp, t, little_endian, length);
+ randrGetOutputPrimary(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -11880,7 +12280,7 @@ static void register_randr(void)
set_handler("RANDR", dispatch_randr, randr_errors, randr_events, randr_replies);
}
-static void struct_Range8(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_Range8(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -11889,18 +12289,18 @@ static void struct_Range8(tvbuff_t *tvb, int *offsetp, proto_tree *root, int lit
int f_first;
int f_last;
- item = proto_tree_add_item(root, hf_x11_struct_Range8, tvb, *offsetp, 2, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_Range8, tvb, *offsetp, 2, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_first = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Range8_first, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Range8_first, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_last = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Range8_last, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Range8_last, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
}
-static void struct_Range16(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_Range16(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -11909,32 +12309,32 @@ static void struct_Range16(tvbuff_t *tvb, int *offsetp, proto_tree *root, int li
int f_first;
int f_last;
- item = proto_tree_add_item(root, hf_x11_struct_Range16, tvb, *offsetp, 4, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_Range16, tvb, *offsetp, 4, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_first = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Range16_first, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Range16_first, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_last = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Range16_last, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Range16_last, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
}
-static void struct_ExtRange(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_ExtRange(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
proto_item *item;
proto_tree *t;
- item = proto_tree_add_item(root, hf_x11_struct_ExtRange, tvb, *offsetp, 6, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_ExtRange, tvb, *offsetp, 6, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- struct_Range8(tvb, offsetp, t, little_endian, 1);
- struct_Range16(tvb, offsetp, t, little_endian, 1);
+ struct_Range8(tvb, offsetp, t, byte_order, 1);
+ struct_Range16(tvb, offsetp, t, byte_order, 1);
}
}
-static void struct_Range(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_Range(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -11943,25 +12343,25 @@ static void struct_Range(tvbuff_t *tvb, int *offsetp, proto_tree *root, int litt
int f_client_started;
int f_client_died;
- item = proto_tree_add_item(root, hf_x11_struct_Range, tvb, *offsetp, 24, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_Range, tvb, *offsetp, 24, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- struct_Range8(tvb, offsetp, t, little_endian, 1);
- struct_Range8(tvb, offsetp, t, little_endian, 1);
- struct_ExtRange(tvb, offsetp, t, little_endian, 1);
- struct_ExtRange(tvb, offsetp, t, little_endian, 1);
- struct_Range8(tvb, offsetp, t, little_endian, 1);
- struct_Range8(tvb, offsetp, t, little_endian, 1);
- struct_Range8(tvb, offsetp, t, little_endian, 1);
+ struct_Range8(tvb, offsetp, t, byte_order, 1);
+ struct_Range8(tvb, offsetp, t, byte_order, 1);
+ struct_ExtRange(tvb, offsetp, t, byte_order, 1);
+ struct_ExtRange(tvb, offsetp, t, byte_order, 1);
+ struct_Range8(tvb, offsetp, t, byte_order, 1);
+ struct_Range8(tvb, offsetp, t, byte_order, 1);
+ struct_Range8(tvb, offsetp, t, byte_order, 1);
f_client_started = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Range_client_started, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Range_client_started, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_client_died = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Range_client_died, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Range_client_died, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
}
-static int struct_size_ClientInfo(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
+static int struct_size_ClientInfo(tvbuff_t *tvb, int *offsetp, guint byte_order _U_)
{
int size = 0;
int f_num_ranges;
@@ -11970,7 +12370,7 @@ static int struct_size_ClientInfo(tvbuff_t *tvb, int *offsetp, int little_endian
return size + 8;
}
-static void struct_ClientInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_ClientInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -11979,30 +12379,30 @@ static void struct_ClientInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_client_resource;
int f_num_ranges;
- item = proto_tree_add_item(root, hf_x11_struct_ClientInfo, tvb, *offsetp, struct_size_ClientInfo(tvb, offsetp, little_endian), little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_ClientInfo, tvb, *offsetp, struct_size_ClientInfo(tvb, offsetp, byte_order), ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_client_resource = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ClientInfo_client_resource, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ClientInfo_client_resource, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_ranges = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ClientInfo_num_ranges, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ClientInfo_num_ranges, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_Range(tvb, offsetp, t, little_endian, f_num_ranges);
+ struct_Range(tvb, offsetp, t, byte_order, f_num_ranges);
}
}
-static void recordQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void recordQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_major_version;
int f_minor_version;
f_major_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_QueryVersion_major_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_record_QueryVersion_major_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_minor_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_QueryVersion_minor_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_record_QueryVersion_minor_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void recordQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void recordQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_major_version;
@@ -12018,88 +12418,88 @@ static void recordQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *off
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_major_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_QueryVersion_reply_major_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_record_QueryVersion_reply_major_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_minor_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_QueryVersion_reply_minor_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_record_QueryVersion_reply_minor_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void recordCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void recordCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context;
int f_element_header;
int f_num_client_specs;
int f_num_ranges;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_CreateContext_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_record_CreateContext_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_element_header = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_CreateContext_element_header, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_record_CreateContext_element_header, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
f_num_client_specs = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_CreateContext_num_client_specs, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_record_CreateContext_num_client_specs, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_ranges = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_CreateContext_num_ranges, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_record_CreateContext_num_ranges, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard32(tvb, offsetp, t, hf_x11_record_CreateContext_client_specs, hf_x11_record_CreateContext_client_specs_item, f_num_client_specs, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_record_CreateContext_client_specs, hf_x11_record_CreateContext_client_specs_item, f_num_client_specs, byte_order);
length -= f_num_client_specs * 4;
- struct_Range(tvb, offsetp, t, little_endian, f_num_ranges);
+ struct_Range(tvb, offsetp, t, byte_order, f_num_ranges);
length -= f_num_ranges * 24;
}
-static void recordRegisterClients(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void recordRegisterClients(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context;
int f_element_header;
int f_num_client_specs;
int f_num_ranges;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_RegisterClients_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_record_RegisterClients_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_element_header = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_RegisterClients_element_header, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_record_RegisterClients_element_header, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
f_num_client_specs = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_RegisterClients_num_client_specs, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_record_RegisterClients_num_client_specs, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_ranges = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_RegisterClients_num_ranges, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_record_RegisterClients_num_ranges, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard32(tvb, offsetp, t, hf_x11_record_RegisterClients_client_specs, hf_x11_record_RegisterClients_client_specs_item, f_num_client_specs, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_record_RegisterClients_client_specs, hf_x11_record_RegisterClients_client_specs_item, f_num_client_specs, byte_order);
length -= f_num_client_specs * 4;
- struct_Range(tvb, offsetp, t, little_endian, f_num_ranges);
+ struct_Range(tvb, offsetp, t, byte_order, f_num_ranges);
length -= f_num_ranges * 24;
}
-static void recordUnregisterClients(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void recordUnregisterClients(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context;
int f_num_client_specs;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_UnregisterClients_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_record_UnregisterClients_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_client_specs = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_UnregisterClients_num_client_specs, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_record_UnregisterClients_num_client_specs, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard32(tvb, offsetp, t, hf_x11_record_UnregisterClients_client_specs, hf_x11_record_UnregisterClients_client_specs_item, f_num_client_specs, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_record_UnregisterClients_client_specs, hf_x11_record_UnregisterClients_client_specs_item, f_num_client_specs, byte_order);
length -= f_num_client_specs * 4;
}
-static void recordGetContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void recordGetContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_GetContext_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_record_GetContext_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void recordGetContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void recordGetContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_enabled;
@@ -12110,7 +12510,7 @@ static void recordGetContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offse
REPLY(reply);
f_enabled = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_GetContext_reply_enabled, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_record_GetContext_reply_enabled, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -12118,27 +12518,27 @@ static void recordGetContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offse
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_element_header = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_GetContext_reply_element_header, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_record_GetContext_reply_element_header, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
f_num_intercepted_clients = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_GetContext_reply_num_intercepted_clients, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_record_GetContext_reply_num_intercepted_clients, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(16);
- struct_ClientInfo(tvb, offsetp, t, little_endian, f_num_intercepted_clients);
+ struct_ClientInfo(tvb, offsetp, t, byte_order, f_num_intercepted_clients);
}
-static void recordEnableContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void recordEnableContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_EnableContext_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_record_EnableContext_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void recordEnableContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void recordEnableContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_category;
@@ -12152,7 +12552,7 @@ static void recordEnableContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *of
REPLY(reply);
f_category = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_EnableContext_reply_category, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_record_EnableContext_reply_category, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -12160,41 +12560,41 @@ static void recordEnableContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *of
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_element_header = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_EnableContext_reply_element_header, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_record_EnableContext_reply_element_header, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_client_swapped = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_EnableContext_reply_client_swapped, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_record_EnableContext_reply_client_swapped, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
f_xid_base = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_EnableContext_reply_xid_base, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_record_EnableContext_reply_xid_base, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_server_time = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_EnableContext_reply_server_time, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_record_EnableContext_reply_server_time, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_rec_sequence_num = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_EnableContext_reply_rec_sequence_num, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_record_EnableContext_reply_rec_sequence_num, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(8);
- listOfByte(tvb, offsetp, t, hf_x11_record_EnableContext_reply_data, (f_length * 4), little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_record_EnableContext_reply_data, (f_length * 4), byte_order);
}
-static void recordDisableContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void recordDisableContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_DisableContext_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_record_DisableContext_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void recordFreeContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void recordFreeContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_record_FreeContext_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_record_FreeContext_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
static const value_string record_extension_minor[] = {
@@ -12218,7 +12618,7 @@ static x11_reply_info record_replies[] = {
{ 0, NULL }
};
-static void dispatch_record(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_record(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(record_extension_minor);
@@ -12229,28 +12629,28 @@ static void dispatch_record(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, pro
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- recordQueryVersion(tvb, pinfo, offsetp, t, little_endian, length);
+ recordQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 1:
- recordCreateContext(tvb, pinfo, offsetp, t, little_endian, length);
+ recordCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 2:
- recordRegisterClients(tvb, pinfo, offsetp, t, little_endian, length);
+ recordRegisterClients(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 3:
- recordUnregisterClients(tvb, pinfo, offsetp, t, little_endian, length);
+ recordUnregisterClients(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 4:
- recordGetContext(tvb, pinfo, offsetp, t, little_endian, length);
+ recordGetContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 5:
- recordEnableContext(tvb, pinfo, offsetp, t, little_endian, length);
+ recordEnableContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 6:
- recordDisableContext(tvb, pinfo, offsetp, t, little_endian, length);
+ recordDisableContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 7:
- recordFreeContext(tvb, pinfo, offsetp, t, little_endian, length);
+ recordFreeContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -12262,18 +12662,18 @@ static void register_record(void)
set_handler("RECORD", dispatch_record, record_errors, record_events, record_replies);
}
-static void renderQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_client_major_version;
int f_client_minor_version;
f_client_major_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_QueryVersion_client_major_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_QueryVersion_client_major_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_client_minor_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_QueryVersion_client_minor_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_QueryVersion_client_minor_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void renderQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void renderQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_major_version;
@@ -12289,21 +12689,21 @@ static void renderQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *off
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_major_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_QueryVersion_reply_major_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_QueryVersion_reply_major_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_minor_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_QueryVersion_reply_minor_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_QueryVersion_reply_minor_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(16);
}
-static void renderQueryPictFormats(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void renderQueryPictFormats(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void renderQueryPictFormats_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void renderQueryPictFormats_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_num_formats;
@@ -12322,37 +12722,37 @@ static void renderQueryPictFormats_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_formats = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_QueryPictFormats_reply_num_formats, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_QueryPictFormats_reply_num_formats, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_screens = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_QueryPictFormats_reply_num_screens, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_QueryPictFormats_reply_num_screens, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_depths = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_QueryPictFormats_reply_num_depths, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_QueryPictFormats_reply_num_depths, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_visuals = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_QueryPictFormats_reply_num_visuals, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_QueryPictFormats_reply_num_visuals, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_subpixel = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_QueryPictFormats_reply_num_subpixel, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_QueryPictFormats_reply_num_subpixel, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
- struct_PICTFORMINFO(tvb, offsetp, t, little_endian, f_num_formats);
- struct_PICTSCREEN(tvb, offsetp, t, little_endian, f_num_screens);
- listOfCard32(tvb, offsetp, t, hf_x11_render_QueryPictFormats_reply_subpixels, hf_x11_render_QueryPictFormats_reply_subpixels_item, f_num_subpixel, little_endian);
+ struct_PICTFORMINFO(tvb, offsetp, t, byte_order, f_num_formats);
+ struct_PICTSCREEN(tvb, offsetp, t, byte_order, f_num_screens);
+ listOfCard32(tvb, offsetp, t, hf_x11_render_QueryPictFormats_reply_subpixels, hf_x11_render_QueryPictFormats_reply_subpixels_item, f_num_subpixel, byte_order);
}
-static void renderQueryPictIndexValues(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderQueryPictIndexValues(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_format;
f_format = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_QueryPictIndexValues_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_QueryPictIndexValues_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void renderQueryPictIndexValues_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void renderQueryPictIndexValues_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_num_values;
@@ -12367,65 +12767,65 @@ static void renderQueryPictIndexValues_Reply(tvbuff_t *tvb, packet_info *pinfo,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_values = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_QueryPictIndexValues_reply_num_values, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_QueryPictIndexValues_reply_num_values, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- struct_INDEXVALUE(tvb, offsetp, t, little_endian, f_num_values);
+ struct_INDEXVALUE(tvb, offsetp, t, byte_order, f_num_values);
}
-static void renderCreatePicture(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderCreatePicture(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_pid;
int f_drawable;
int f_format;
f_pid = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CreatePicture_pid, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CreatePicture_pid, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CreatePicture_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CreatePicture_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_format = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CreatePicture_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CreatePicture_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void renderChangePicture(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderChangePicture(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_picture;
f_picture = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_ChangePicture_picture, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_ChangePicture_picture, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void renderSetPictureClipRectangles(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderSetPictureClipRectangles(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_picture;
int f_clip_x_origin;
int f_clip_y_origin;
f_picture = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_SetPictureClipRectangles_picture, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_SetPictureClipRectangles_picture, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_clip_x_origin = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_SetPictureClipRectangles_clip_x_origin, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_SetPictureClipRectangles_clip_x_origin, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_clip_y_origin = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_SetPictureClipRectangles_clip_y_origin, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_SetPictureClipRectangles_clip_y_origin, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- struct_RECTANGLE(tvb, offsetp, t, little_endian, (length - 12) / 8);
+ struct_RECTANGLE(tvb, offsetp, t, byte_order, (length - 12) / 8);
}
-static void renderFreePicture(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderFreePicture(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_picture;
f_picture = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_FreePicture_picture, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_FreePicture_picture, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void renderComposite(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderComposite(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_op;
int f_src;
@@ -12439,42 +12839,42 @@ static void renderComposite(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_dst_y;
int f_width;
int f_height;
- f_op = field8(tvb, offsetp, t, hf_x11_render_Composite_op, little_endian);
+ f_op = field8(tvb, offsetp, t, hf_x11_render_Composite_op, byte_order);
UNUSED(3);
f_src = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_Composite_src, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_Composite_src, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_mask = field32(tvb, offsetp, t, hf_x11_render_Composite_mask, little_endian);
+ f_mask = field32(tvb, offsetp, t, hf_x11_render_Composite_mask, byte_order);
f_dst = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_Composite_dst, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_Composite_dst, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_src_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_Composite_src_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_Composite_src_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_src_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_Composite_src_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_Composite_src_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_mask_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_Composite_mask_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_Composite_mask_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_mask_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_Composite_mask_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_Composite_mask_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_dst_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_Composite_dst_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_Composite_dst_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_dst_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_Composite_dst_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_Composite_dst_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_Composite_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_Composite_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_Composite_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_Composite_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void renderTrapezoids(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderTrapezoids(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_op;
int f_src;
@@ -12482,27 +12882,27 @@ static void renderTrapezoids(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp
int f_mask_format;
int f_src_x;
int f_src_y;
- f_op = field8(tvb, offsetp, t, hf_x11_render_Trapezoids_op, little_endian);
+ f_op = field8(tvb, offsetp, t, hf_x11_render_Trapezoids_op, byte_order);
UNUSED(3);
f_src = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_Trapezoids_src, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_Trapezoids_src, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_dst = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_Trapezoids_dst, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_Trapezoids_dst, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_mask_format = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_Trapezoids_mask_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_Trapezoids_mask_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_src_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_Trapezoids_src_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_Trapezoids_src_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_src_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_Trapezoids_src_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_Trapezoids_src_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- struct_TRAPEZOID(tvb, offsetp, t, little_endian, (length - 24) / 40);
+ struct_TRAPEZOID(tvb, offsetp, t, byte_order, (length - 24) / 40);
}
-static void renderTriangles(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderTriangles(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_op;
int f_src;
@@ -12510,27 +12910,27 @@ static void renderTriangles(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_mask_format;
int f_src_x;
int f_src_y;
- f_op = field8(tvb, offsetp, t, hf_x11_render_Triangles_op, little_endian);
+ f_op = field8(tvb, offsetp, t, hf_x11_render_Triangles_op, byte_order);
UNUSED(3);
f_src = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_Triangles_src, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_Triangles_src, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_dst = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_Triangles_dst, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_Triangles_dst, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_mask_format = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_Triangles_mask_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_Triangles_mask_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_src_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_Triangles_src_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_Triangles_src_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_src_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_Triangles_src_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_Triangles_src_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- struct_TRIANGLE(tvb, offsetp, t, little_endian, (length - 24) / 24);
+ struct_TRIANGLE(tvb, offsetp, t, byte_order, (length - 24) / 24);
}
-static void renderTriStrip(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderTriStrip(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_op;
int f_src;
@@ -12538,27 +12938,27 @@ static void renderTriStrip(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_mask_format;
int f_src_x;
int f_src_y;
- f_op = field8(tvb, offsetp, t, hf_x11_render_TriStrip_op, little_endian);
+ f_op = field8(tvb, offsetp, t, hf_x11_render_TriStrip_op, byte_order);
UNUSED(3);
f_src = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_TriStrip_src, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_TriStrip_src, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_dst = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_TriStrip_dst, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_TriStrip_dst, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_mask_format = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_TriStrip_mask_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_TriStrip_mask_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_src_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_TriStrip_src_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_TriStrip_src_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_src_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_TriStrip_src_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_TriStrip_src_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- struct_POINTFIX(tvb, offsetp, t, little_endian, (length - 24) / 8);
+ struct_POINTFIX(tvb, offsetp, t, byte_order, (length - 24) / 8);
}
-static void renderTriFan(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderTriFan(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_op;
int f_src;
@@ -12566,85 +12966,85 @@ static void renderTriFan(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, pr
int f_mask_format;
int f_src_x;
int f_src_y;
- f_op = field8(tvb, offsetp, t, hf_x11_render_TriFan_op, little_endian);
+ f_op = field8(tvb, offsetp, t, hf_x11_render_TriFan_op, byte_order);
UNUSED(3);
f_src = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_TriFan_src, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_TriFan_src, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_dst = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_TriFan_dst, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_TriFan_dst, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_mask_format = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_TriFan_mask_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_TriFan_mask_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_src_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_TriFan_src_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_TriFan_src_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_src_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_TriFan_src_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_TriFan_src_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- struct_POINTFIX(tvb, offsetp, t, little_endian, (length - 24) / 8);
+ struct_POINTFIX(tvb, offsetp, t, byte_order, (length - 24) / 8);
}
-static void renderCreateGlyphSet(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderCreateGlyphSet(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_gsid;
int f_format;
f_gsid = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CreateGlyphSet_gsid, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CreateGlyphSet_gsid, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_format = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CreateGlyphSet_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CreateGlyphSet_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void renderReferenceGlyphSet(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderReferenceGlyphSet(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_gsid;
int f_existing;
f_gsid = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_ReferenceGlyphSet_gsid, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_ReferenceGlyphSet_gsid, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_existing = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_ReferenceGlyphSet_existing, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_ReferenceGlyphSet_existing, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void renderFreeGlyphSet(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderFreeGlyphSet(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_glyphset;
f_glyphset = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_FreeGlyphSet_glyphset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_FreeGlyphSet_glyphset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void renderAddGlyphs(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderAddGlyphs(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_glyphset;
int f_glyphs_len;
f_glyphset = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_AddGlyphs_glyphset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_AddGlyphs_glyphset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_glyphs_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_AddGlyphs_glyphs_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_AddGlyphs_glyphs_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard32(tvb, offsetp, t, hf_x11_render_AddGlyphs_glyphids, hf_x11_render_AddGlyphs_glyphids_item, f_glyphs_len, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_render_AddGlyphs_glyphids, hf_x11_render_AddGlyphs_glyphids_item, f_glyphs_len, byte_order);
length -= f_glyphs_len * 4;
- struct_GLYPHINFO(tvb, offsetp, t, little_endian, f_glyphs_len);
+ struct_GLYPHINFO(tvb, offsetp, t, byte_order, f_glyphs_len);
length -= f_glyphs_len * 12;
- listOfByte(tvb, offsetp, t, hf_x11_render_AddGlyphs_data, (length - 12) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_render_AddGlyphs_data, (length - 12) / 1, byte_order);
}
-static void renderFreeGlyphs(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderFreeGlyphs(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_glyphset;
f_glyphset = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_FreeGlyphs_glyphset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_FreeGlyphs_glyphset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard32(tvb, offsetp, t, hf_x11_render_FreeGlyphs_glyphs, hf_x11_render_FreeGlyphs_glyphs_item, (length - 8) / 4, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_render_FreeGlyphs_glyphs, hf_x11_render_FreeGlyphs_glyphs_item, (length - 8) / 4, byte_order);
}
-static void renderCompositeGlyphs8(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderCompositeGlyphs8(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_op;
int f_src;
@@ -12653,30 +13053,30 @@ static void renderCompositeGlyphs8(tvbuff_t *tvb, packet_info *pinfo _U_, int *o
int f_glyphset;
int f_src_x;
int f_src_y;
- f_op = field8(tvb, offsetp, t, hf_x11_render_CompositeGlyphs8_op, little_endian);
+ f_op = field8(tvb, offsetp, t, hf_x11_render_CompositeGlyphs8_op, byte_order);
UNUSED(3);
f_src = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CompositeGlyphs8_src, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CompositeGlyphs8_src, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_dst = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CompositeGlyphs8_dst, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CompositeGlyphs8_dst, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_mask_format = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CompositeGlyphs8_mask_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CompositeGlyphs8_mask_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_glyphset = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CompositeGlyphs8_glyphset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CompositeGlyphs8_glyphset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_src_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CompositeGlyphs8_src_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CompositeGlyphs8_src_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_src_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CompositeGlyphs8_src_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CompositeGlyphs8_src_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- listOfByte(tvb, offsetp, t, hf_x11_render_CompositeGlyphs8_glyphcmds, (length - 28) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_render_CompositeGlyphs8_glyphcmds, (length - 28) / 1, byte_order);
}
-static void renderCompositeGlyphs16(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderCompositeGlyphs16(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_op;
int f_src;
@@ -12685,30 +13085,30 @@ static void renderCompositeGlyphs16(tvbuff_t *tvb, packet_info *pinfo _U_, int *
int f_glyphset;
int f_src_x;
int f_src_y;
- f_op = field8(tvb, offsetp, t, hf_x11_render_CompositeGlyphs16_op, little_endian);
+ f_op = field8(tvb, offsetp, t, hf_x11_render_CompositeGlyphs16_op, byte_order);
UNUSED(3);
f_src = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CompositeGlyphs16_src, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CompositeGlyphs16_src, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_dst = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CompositeGlyphs16_dst, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CompositeGlyphs16_dst, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_mask_format = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CompositeGlyphs16_mask_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CompositeGlyphs16_mask_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_glyphset = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CompositeGlyphs16_glyphset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CompositeGlyphs16_glyphset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_src_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CompositeGlyphs16_src_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CompositeGlyphs16_src_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_src_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CompositeGlyphs16_src_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CompositeGlyphs16_src_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- listOfByte(tvb, offsetp, t, hf_x11_render_CompositeGlyphs16_glyphcmds, (length - 28) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_render_CompositeGlyphs16_glyphcmds, (length - 28) / 1, byte_order);
}
-static void renderCompositeGlyphs32(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderCompositeGlyphs32(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_op;
int f_src;
@@ -12717,79 +13117,79 @@ static void renderCompositeGlyphs32(tvbuff_t *tvb, packet_info *pinfo _U_, int *
int f_glyphset;
int f_src_x;
int f_src_y;
- f_op = field8(tvb, offsetp, t, hf_x11_render_CompositeGlyphs32_op, little_endian);
+ f_op = field8(tvb, offsetp, t, hf_x11_render_CompositeGlyphs32_op, byte_order);
UNUSED(3);
f_src = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CompositeGlyphs32_src, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CompositeGlyphs32_src, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_dst = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CompositeGlyphs32_dst, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CompositeGlyphs32_dst, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_mask_format = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CompositeGlyphs32_mask_format, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CompositeGlyphs32_mask_format, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_glyphset = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CompositeGlyphs32_glyphset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CompositeGlyphs32_glyphset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_src_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CompositeGlyphs32_src_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CompositeGlyphs32_src_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_src_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CompositeGlyphs32_src_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CompositeGlyphs32_src_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- listOfByte(tvb, offsetp, t, hf_x11_render_CompositeGlyphs32_glyphcmds, (length - 28) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_render_CompositeGlyphs32_glyphcmds, (length - 28) / 1, byte_order);
}
-static void renderFillRectangles(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderFillRectangles(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_op;
int f_dst;
- f_op = field8(tvb, offsetp, t, hf_x11_render_FillRectangles_op, little_endian);
+ f_op = field8(tvb, offsetp, t, hf_x11_render_FillRectangles_op, byte_order);
UNUSED(3);
f_dst = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_FillRectangles_dst, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_FillRectangles_dst, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_COLOR(tvb, offsetp, t, little_endian, 1);
- struct_RECTANGLE(tvb, offsetp, t, little_endian, (length - 20) / 8);
+ struct_COLOR(tvb, offsetp, t, byte_order, 1);
+ struct_RECTANGLE(tvb, offsetp, t, byte_order, (length - 20) / 8);
}
-static void renderCreateCursor(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderCreateCursor(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_cid;
int f_source;
int f_x;
int f_y;
f_cid = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CreateCursor_cid, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CreateCursor_cid, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_source = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CreateCursor_source, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CreateCursor_source, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CreateCursor_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CreateCursor_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CreateCursor_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CreateCursor_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void renderSetPictureTransform(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderSetPictureTransform(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_picture;
f_picture = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_SetPictureTransform_picture, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_SetPictureTransform_picture, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_TRANSFORM(tvb, offsetp, t, little_endian, 1);
+ struct_TRANSFORM(tvb, offsetp, t, byte_order, 1);
}
-static void renderQueryFilters(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderQueryFilters(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_drawable;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_QueryFilters_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_QueryFilters_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void renderQueryFilters_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void renderQueryFilters_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_num_aliases;
@@ -12805,132 +13205,132 @@ static void renderQueryFilters_Reply(tvbuff_t *tvb, packet_info *pinfo, int *off
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_aliases = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_QueryFilters_reply_num_aliases, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_QueryFilters_reply_num_aliases, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_filters = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_QueryFilters_reply_num_filters, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_QueryFilters_reply_num_filters, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(16);
- listOfCard16(tvb, offsetp, t, hf_x11_render_QueryFilters_reply_aliases, hf_x11_render_QueryFilters_reply_aliases_item, f_num_aliases, little_endian);
- struct_STR(tvb, offsetp, t, little_endian, f_num_filters);
+ listOfCard16(tvb, offsetp, t, hf_x11_render_QueryFilters_reply_aliases, hf_x11_render_QueryFilters_reply_aliases_item, f_num_aliases, byte_order);
+ struct_STR(tvb, offsetp, t, byte_order, f_num_filters);
}
-static void renderSetPictureFilter(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderSetPictureFilter(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_picture;
int f_filter_len;
f_picture = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_SetPictureFilter_picture, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_SetPictureFilter_picture, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_filter_len = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_SetPictureFilter_filter_len, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_SetPictureFilter_filter_len, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
- listOfByte(tvb, offsetp, t, hf_x11_render_SetPictureFilter_filter, f_filter_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_render_SetPictureFilter_filter, f_filter_len, byte_order);
length -= f_filter_len * 1;
- listOfInt32(tvb, offsetp, t, hf_x11_render_SetPictureFilter_values, hf_x11_render_SetPictureFilter_values_item, (length - 12) / 4, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_render_SetPictureFilter_values, hf_x11_render_SetPictureFilter_values_item, (length - 12) / 4, byte_order);
}
-static void renderCreateAnimCursor(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderCreateAnimCursor(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_cid;
f_cid = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CreateAnimCursor_cid, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CreateAnimCursor_cid, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_ANIMCURSORELT(tvb, offsetp, t, little_endian, (length - 8) / 8);
+ struct_ANIMCURSORELT(tvb, offsetp, t, byte_order, (length - 8) / 8);
}
-static void renderAddTraps(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderAddTraps(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_picture;
int f_x_off;
int f_y_off;
f_picture = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_AddTraps_picture, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_AddTraps_picture, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_x_off = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_AddTraps_x_off, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_AddTraps_x_off, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_y_off = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_AddTraps_y_off, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_render_AddTraps_y_off, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- struct_TRAP(tvb, offsetp, t, little_endian, (length - 12) / 24);
+ struct_TRAP(tvb, offsetp, t, byte_order, (length - 12) / 24);
}
-static void renderCreateSolidFill(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderCreateSolidFill(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_picture;
f_picture = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CreateSolidFill_picture, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CreateSolidFill_picture, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_COLOR(tvb, offsetp, t, little_endian, 1);
+ struct_COLOR(tvb, offsetp, t, byte_order, 1);
}
-static void renderCreateLinearGradient(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderCreateLinearGradient(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_picture;
int f_num_stops;
f_picture = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CreateLinearGradient_picture, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CreateLinearGradient_picture, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_POINTFIX(tvb, offsetp, t, little_endian, 1);
- struct_POINTFIX(tvb, offsetp, t, little_endian, 1);
+ struct_POINTFIX(tvb, offsetp, t, byte_order, 1);
+ struct_POINTFIX(tvb, offsetp, t, byte_order, 1);
f_num_stops = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CreateLinearGradient_num_stops, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CreateLinearGradient_num_stops, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt32(tvb, offsetp, t, hf_x11_render_CreateLinearGradient_stops, hf_x11_render_CreateLinearGradient_stops_item, f_num_stops, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_render_CreateLinearGradient_stops, hf_x11_render_CreateLinearGradient_stops_item, f_num_stops, byte_order);
length -= f_num_stops * 4;
- struct_COLOR(tvb, offsetp, t, little_endian, f_num_stops);
+ struct_COLOR(tvb, offsetp, t, byte_order, f_num_stops);
length -= f_num_stops * 8;
}
-static void renderCreateRadialGradient(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderCreateRadialGradient(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_picture;
int f_inner_radius;
int f_outer_radius;
int f_num_stops;
f_picture = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CreateRadialGradient_picture, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CreateRadialGradient_picture, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_POINTFIX(tvb, offsetp, t, little_endian, 1);
- struct_POINTFIX(tvb, offsetp, t, little_endian, 1);
+ struct_POINTFIX(tvb, offsetp, t, byte_order, 1);
+ struct_POINTFIX(tvb, offsetp, t, byte_order, 1);
f_inner_radius = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CreateRadialGradient_inner_radius, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CreateRadialGradient_inner_radius, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_outer_radius = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CreateRadialGradient_outer_radius, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CreateRadialGradient_outer_radius, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_stops = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CreateRadialGradient_num_stops, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CreateRadialGradient_num_stops, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt32(tvb, offsetp, t, hf_x11_render_CreateRadialGradient_stops, hf_x11_render_CreateRadialGradient_stops_item, f_num_stops, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_render_CreateRadialGradient_stops, hf_x11_render_CreateRadialGradient_stops_item, f_num_stops, byte_order);
length -= f_num_stops * 4;
- struct_COLOR(tvb, offsetp, t, little_endian, f_num_stops);
+ struct_COLOR(tvb, offsetp, t, byte_order, f_num_stops);
length -= f_num_stops * 8;
}
-static void renderCreateConicalGradient(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void renderCreateConicalGradient(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_picture;
int f_angle;
int f_num_stops;
f_picture = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CreateConicalGradient_picture, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CreateConicalGradient_picture, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_POINTFIX(tvb, offsetp, t, little_endian, 1);
+ struct_POINTFIX(tvb, offsetp, t, byte_order, 1);
f_angle = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CreateConicalGradient_angle, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CreateConicalGradient_angle, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_stops = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_render_CreateConicalGradient_num_stops, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_render_CreateConicalGradient_num_stops, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfInt32(tvb, offsetp, t, hf_x11_render_CreateConicalGradient_stops, hf_x11_render_CreateConicalGradient_stops_item, f_num_stops, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_render_CreateConicalGradient_stops, hf_x11_render_CreateConicalGradient_stops_item, f_num_stops, byte_order);
length -= f_num_stops * 4;
- struct_COLOR(tvb, offsetp, t, little_endian, f_num_stops);
+ struct_COLOR(tvb, offsetp, t, byte_order, f_num_stops);
length -= f_num_stops * 8;
}
static const value_string render_extension_minor[] = {
@@ -12978,7 +13378,7 @@ static x11_reply_info render_replies[] = {
{ 0, NULL }
};
-static void dispatch_render(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_render(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(render_extension_minor);
@@ -12989,97 +13389,97 @@ static void dispatch_render(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, pro
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- renderQueryVersion(tvb, pinfo, offsetp, t, little_endian, length);
+ renderQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 1:
- renderQueryPictFormats(tvb, pinfo, offsetp, t, little_endian, length);
+ renderQueryPictFormats(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 2:
- renderQueryPictIndexValues(tvb, pinfo, offsetp, t, little_endian, length);
+ renderQueryPictIndexValues(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 4:
- renderCreatePicture(tvb, pinfo, offsetp, t, little_endian, length);
+ renderCreatePicture(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 5:
- renderChangePicture(tvb, pinfo, offsetp, t, little_endian, length);
+ renderChangePicture(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 6:
- renderSetPictureClipRectangles(tvb, pinfo, offsetp, t, little_endian, length);
+ renderSetPictureClipRectangles(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 7:
- renderFreePicture(tvb, pinfo, offsetp, t, little_endian, length);
+ renderFreePicture(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 8:
- renderComposite(tvb, pinfo, offsetp, t, little_endian, length);
+ renderComposite(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 10:
- renderTrapezoids(tvb, pinfo, offsetp, t, little_endian, length);
+ renderTrapezoids(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 11:
- renderTriangles(tvb, pinfo, offsetp, t, little_endian, length);
+ renderTriangles(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 12:
- renderTriStrip(tvb, pinfo, offsetp, t, little_endian, length);
+ renderTriStrip(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 13:
- renderTriFan(tvb, pinfo, offsetp, t, little_endian, length);
+ renderTriFan(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 17:
- renderCreateGlyphSet(tvb, pinfo, offsetp, t, little_endian, length);
+ renderCreateGlyphSet(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 18:
- renderReferenceGlyphSet(tvb, pinfo, offsetp, t, little_endian, length);
+ renderReferenceGlyphSet(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 19:
- renderFreeGlyphSet(tvb, pinfo, offsetp, t, little_endian, length);
+ renderFreeGlyphSet(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 20:
- renderAddGlyphs(tvb, pinfo, offsetp, t, little_endian, length);
+ renderAddGlyphs(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 22:
- renderFreeGlyphs(tvb, pinfo, offsetp, t, little_endian, length);
+ renderFreeGlyphs(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 23:
- renderCompositeGlyphs8(tvb, pinfo, offsetp, t, little_endian, length);
+ renderCompositeGlyphs8(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 24:
- renderCompositeGlyphs16(tvb, pinfo, offsetp, t, little_endian, length);
+ renderCompositeGlyphs16(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 25:
- renderCompositeGlyphs32(tvb, pinfo, offsetp, t, little_endian, length);
+ renderCompositeGlyphs32(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 26:
- renderFillRectangles(tvb, pinfo, offsetp, t, little_endian, length);
+ renderFillRectangles(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 27:
- renderCreateCursor(tvb, pinfo, offsetp, t, little_endian, length);
+ renderCreateCursor(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 28:
- renderSetPictureTransform(tvb, pinfo, offsetp, t, little_endian, length);
+ renderSetPictureTransform(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 29:
- renderQueryFilters(tvb, pinfo, offsetp, t, little_endian, length);
+ renderQueryFilters(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 30:
- renderSetPictureFilter(tvb, pinfo, offsetp, t, little_endian, length);
+ renderSetPictureFilter(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 31:
- renderCreateAnimCursor(tvb, pinfo, offsetp, t, little_endian, length);
+ renderCreateAnimCursor(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 32:
- renderAddTraps(tvb, pinfo, offsetp, t, little_endian, length);
+ renderAddTraps(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 33:
- renderCreateSolidFill(tvb, pinfo, offsetp, t, little_endian, length);
+ renderCreateSolidFill(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 34:
- renderCreateLinearGradient(tvb, pinfo, offsetp, t, little_endian, length);
+ renderCreateLinearGradient(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 35:
- renderCreateRadialGradient(tvb, pinfo, offsetp, t, little_endian, length);
+ renderCreateRadialGradient(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 36:
- renderCreateConicalGradient(tvb, pinfo, offsetp, t, little_endian, length);
+ renderCreateConicalGradient(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -13091,7 +13491,7 @@ static void register_render(void)
set_handler("RENDER", dispatch_render, render_errors, render_events, render_replies);
}
-static void struct_Client(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_Client(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -13100,18 +13500,18 @@ static void struct_Client(tvbuff_t *tvb, int *offsetp, proto_tree *root, int lit
int f_resource_base;
int f_resource_mask;
- item = proto_tree_add_item(root, hf_x11_struct_Client, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_Client, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_resource_base = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Client_resource_base, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Client_resource_base, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_resource_mask = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Client_resource_mask, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Client_resource_mask, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
}
-static void struct_Type(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_Type(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -13120,29 +13520,29 @@ static void struct_Type(tvbuff_t *tvb, int *offsetp, proto_tree *root, int littl
int f_resource_type;
int f_count;
- item = proto_tree_add_item(root, hf_x11_struct_Type, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_Type, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_resource_type = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Type_resource_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Type_resource_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_count = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Type_count, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Type_count, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
}
-static void resQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void resQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_client_major;
int f_client_minor;
f_client_major = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_res_QueryVersion_client_major, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_res_QueryVersion_client_major, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_client_minor = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_res_QueryVersion_client_minor, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_res_QueryVersion_client_minor, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void resQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void resQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_server_major;
@@ -13158,20 +13558,20 @@ static void resQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_server_major = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_res_QueryVersion_reply_server_major, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_res_QueryVersion_reply_server_major, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_server_minor = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_res_QueryVersion_reply_server_minor, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_res_QueryVersion_reply_server_minor, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void resQueryClients(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void resQueryClients(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void resQueryClients_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void resQueryClients_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_num_clients;
@@ -13186,23 +13586,23 @@ static void resQueryClients_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_clients = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_res_QueryClients_reply_num_clients, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_res_QueryClients_reply_num_clients, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- struct_Client(tvb, offsetp, t, little_endian, f_num_clients);
+ struct_Client(tvb, offsetp, t, byte_order, f_num_clients);
}
-static void resQueryClientResources(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void resQueryClientResources(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_xid;
f_xid = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_res_QueryClientResources_xid, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_res_QueryClientResources_xid, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void resQueryClientResources_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void resQueryClientResources_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_num_types;
@@ -13217,23 +13617,23 @@ static void resQueryClientResources_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_types = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_res_QueryClientResources_reply_num_types, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_res_QueryClientResources_reply_num_types, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- struct_Type(tvb, offsetp, t, little_endian, f_num_types);
+ struct_Type(tvb, offsetp, t, byte_order, f_num_types);
}
-static void resQueryClientPixmapBytes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void resQueryClientPixmapBytes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_xid;
f_xid = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_res_QueryClientPixmapBytes_xid, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_res_QueryClientPixmapBytes_xid, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void resQueryClientPixmapBytes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void resQueryClientPixmapBytes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_bytes;
@@ -13249,13 +13649,13 @@ static void resQueryClientPixmapBytes_Reply(tvbuff_t *tvb, packet_info *pinfo, i
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_bytes = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_res_QueryClientPixmapBytes_reply_bytes, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_res_QueryClientPixmapBytes_reply_bytes, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_bytes_overflow = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_res_QueryClientPixmapBytes_reply_bytes_overflow, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_res_QueryClientPixmapBytes_reply_bytes_overflow, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
static const value_string res_extension_minor[] = {
@@ -13276,7 +13676,7 @@ static x11_reply_info res_replies[] = {
{ 0, NULL }
};
-static void dispatch_res(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_res(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(res_extension_minor);
@@ -13287,16 +13687,16 @@ static void dispatch_res(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- resQueryVersion(tvb, pinfo, offsetp, t, little_endian, length);
+ resQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 1:
- resQueryClients(tvb, pinfo, offsetp, t, little_endian, length);
+ resQueryClients(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 2:
- resQueryClientResources(tvb, pinfo, offsetp, t, little_endian, length);
+ resQueryClientResources(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 3:
- resQueryClientPixmapBytes(tvb, pinfo, offsetp, t, little_endian, length);
+ resQueryClientPixmapBytes(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -13308,19 +13708,19 @@ static void register_res(void)
set_handler("X-Resource", dispatch_res, res_errors, res_events, res_replies);
}
-static void screensaverQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void screensaverQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_client_major_version;
int f_client_minor_version;
f_client_major_version = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_QueryVersion_client_major_version, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_QueryVersion_client_major_version, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_client_minor_version = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_QueryVersion_client_minor_version, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_QueryVersion_client_minor_version, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
}
-static void screensaverQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void screensaverQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_server_major_version;
@@ -13336,25 +13736,25 @@ static void screensaverQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_server_major_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_QueryVersion_reply_server_major_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_QueryVersion_reply_server_major_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_server_minor_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_QueryVersion_reply_server_minor_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_QueryVersion_reply_server_minor_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(20);
}
-static void screensaverQueryInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void screensaverQueryInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_drawable;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_QueryInfo_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_QueryInfo_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void screensaverQueryInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void screensaverQueryInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_state;
@@ -13368,7 +13768,7 @@ static void screensaverQueryInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *o
REPLY(reply);
f_state = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_QueryInfo_reply_state, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_QueryInfo_reply_state, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -13376,39 +13776,39 @@ static void screensaverQueryInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *o
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_saver_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_QueryInfo_reply_saver_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_QueryInfo_reply_saver_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_ms_until_server = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_QueryInfo_reply_ms_until_server, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_QueryInfo_reply_ms_until_server, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_ms_since_user_input = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_QueryInfo_reply_ms_since_user_input, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_QueryInfo_reply_ms_since_user_input, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_event_mask = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_QueryInfo_reply_event_mask, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_QueryInfo_reply_event_mask, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_kind = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_QueryInfo_reply_kind, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_QueryInfo_reply_kind, tvb, *offsetp, 1, ENC_NA);
*offsetp += 1;
UNUSED(7);
}
-static void screensaverSelectInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void screensaverSelectInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_drawable;
int f_event_mask;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_SelectInput_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_SelectInput_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_event_mask = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_SelectInput_event_mask, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_SelectInput_event_mask, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void screensaverSetAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void screensaverSetAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_drawable;
int f_x;
@@ -13420,52 +13820,52 @@ static void screensaverSetAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int
int f_depth;
int f_visual;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_border_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_border_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_border_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_class = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_class, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_class, tvb, *offsetp, 1, ENC_NA);
*offsetp += 1;
f_depth = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_depth, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_depth, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_visual = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_visual, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_SetAttributes_visual, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void screensaverUnsetAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void screensaverUnsetAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_drawable;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_UnsetAttributes_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_UnsetAttributes_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void screensaverSuspend(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void screensaverSuspend(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_suspend;
f_suspend = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_Suspend_suspend, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_Suspend_suspend, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
}
-static void screensaverNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void screensaverNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_code;
int f_state;
@@ -13476,30 +13876,30 @@ static void screensaverNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int li
int f_kind;
int f_forced;
f_code = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_Notify_code, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_Notify_code, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
CARD16(event_sequencenumber);
f_state = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_Notify_state, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_Notify_state, tvb, *offsetp, 1, ENC_NA);
*offsetp += 1;
UNUSED(1);
f_sequence_number = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_Notify_sequence_number, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_Notify_sequence_number, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_time = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_Notify_time, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_Notify_time, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_root = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_Notify_root, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_Notify_root, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_Notify_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_Notify_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_kind = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_Notify_kind, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_Notify_kind, tvb, *offsetp, 1, ENC_NA);
*offsetp += 1;
f_forced = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_screensaver_Notify_forced, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_screensaver_Notify_forced, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(14);
}
@@ -13522,7 +13922,7 @@ static x11_reply_info screensaver_replies[] = {
{ 0, NULL }
};
-static void dispatch_screensaver(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_screensaver(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(screensaver_extension_minor);
@@ -13533,22 +13933,22 @@ static void dispatch_screensaver(tvbuff_t *tvb, packet_info *pinfo, int *offsetp
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- screensaverQueryVersion(tvb, pinfo, offsetp, t, little_endian, length);
+ screensaverQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 1:
- screensaverQueryInfo(tvb, pinfo, offsetp, t, little_endian, length);
+ screensaverQueryInfo(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 2:
- screensaverSelectInput(tvb, pinfo, offsetp, t, little_endian, length);
+ screensaverSelectInput(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 3:
- screensaverSetAttributes(tvb, pinfo, offsetp, t, little_endian, length);
+ screensaverSetAttributes(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 4:
- screensaverUnsetAttributes(tvb, pinfo, offsetp, t, little_endian, length);
+ screensaverUnsetAttributes(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 5:
- screensaverSuspend(tvb, pinfo, offsetp, t, little_endian, length);
+ screensaverSuspend(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -13560,7 +13960,7 @@ static void register_screensaver(void)
set_handler("MIT-SCREEN-SAVER", dispatch_screensaver, screensaver_errors, screensaver_events, screensaver_replies);
}
-static void shapeNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void shapeNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_shape_kind;
int f_affected_window;
@@ -13570,36 +13970,36 @@ static void shapeNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_e
int f_extents_height;
int f_server_time;
int f_shaped;
- f_shape_kind = field8(tvb, offsetp, t, hf_x11_shape_Notify_shape_kind, little_endian);
+ f_shape_kind = field8(tvb, offsetp, t, hf_x11_shape_Notify_shape_kind, byte_order);
CARD16(event_sequencenumber);
f_affected_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_Notify_affected_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_Notify_affected_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_extents_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_Notify_extents_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_Notify_extents_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_extents_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_Notify_extents_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_Notify_extents_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_extents_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_Notify_extents_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_Notify_extents_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_extents_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_Notify_extents_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_Notify_extents_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_server_time = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_Notify_server_time, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_Notify_server_time, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_shaped = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_Notify_shaped, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_Notify_shaped, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(11);
}
-static void shapeQueryVersion(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void shapeQueryVersion(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void shapeQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void shapeQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_major_version;
@@ -13615,17 +14015,17 @@ static void shapeQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offs
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_major_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_QueryVersion_reply_major_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_QueryVersion_reply_major_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_minor_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_QueryVersion_reply_minor_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_QueryVersion_reply_minor_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void shapeRectangles(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void shapeRectangles(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_operation;
int f_destination_kind;
@@ -13633,23 +14033,23 @@ static void shapeRectangles(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_destination_window;
int f_x_offset;
int f_y_offset;
- f_operation = field8(tvb, offsetp, t, hf_x11_shape_Rectangles_operation, little_endian);
- f_destination_kind = field8(tvb, offsetp, t, hf_x11_shape_Rectangles_destination_kind, little_endian);
- f_ordering = field8(tvb, offsetp, t, hf_x11_shape_Rectangles_ordering, little_endian);
+ f_operation = field8(tvb, offsetp, t, hf_x11_shape_Rectangles_operation, byte_order);
+ f_destination_kind = field8(tvb, offsetp, t, hf_x11_shape_Rectangles_destination_kind, byte_order);
+ f_ordering = field8(tvb, offsetp, t, hf_x11_shape_Rectangles_ordering, byte_order);
UNUSED(1);
f_destination_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_Rectangles_destination_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_Rectangles_destination_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_x_offset = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_Rectangles_x_offset, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_Rectangles_x_offset, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_y_offset = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_Rectangles_y_offset, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_Rectangles_y_offset, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- struct_RECTANGLE(tvb, offsetp, t, little_endian, (length - 16) / 8);
+ struct_RECTANGLE(tvb, offsetp, t, byte_order, (length - 16) / 8);
}
-static void shapeMask(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void shapeMask(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_operation;
int f_destination_kind;
@@ -13657,22 +14057,22 @@ static void shapeMask(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto
int f_x_offset;
int f_y_offset;
int f_source_bitmap;
- f_operation = field8(tvb, offsetp, t, hf_x11_shape_Mask_operation, little_endian);
- f_destination_kind = field8(tvb, offsetp, t, hf_x11_shape_Mask_destination_kind, little_endian);
+ f_operation = field8(tvb, offsetp, t, hf_x11_shape_Mask_operation, byte_order);
+ f_destination_kind = field8(tvb, offsetp, t, hf_x11_shape_Mask_destination_kind, byte_order);
UNUSED(2);
f_destination_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_Mask_destination_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_Mask_destination_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_x_offset = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_Mask_x_offset, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_Mask_x_offset, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_y_offset = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_Mask_y_offset, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_Mask_y_offset, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- f_source_bitmap = field32(tvb, offsetp, t, hf_x11_shape_Mask_source_bitmap, little_endian);
+ f_source_bitmap = field32(tvb, offsetp, t, hf_x11_shape_Mask_source_bitmap, byte_order);
}
-static void shapeCombine(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void shapeCombine(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_operation;
int f_destination_kind;
@@ -13681,51 +14081,51 @@ static void shapeCombine(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, pr
int f_x_offset;
int f_y_offset;
int f_source_window;
- f_operation = field8(tvb, offsetp, t, hf_x11_shape_Combine_operation, little_endian);
- f_destination_kind = field8(tvb, offsetp, t, hf_x11_shape_Combine_destination_kind, little_endian);
- f_source_kind = field8(tvb, offsetp, t, hf_x11_shape_Combine_source_kind, little_endian);
+ f_operation = field8(tvb, offsetp, t, hf_x11_shape_Combine_operation, byte_order);
+ f_destination_kind = field8(tvb, offsetp, t, hf_x11_shape_Combine_destination_kind, byte_order);
+ f_source_kind = field8(tvb, offsetp, t, hf_x11_shape_Combine_source_kind, byte_order);
UNUSED(1);
f_destination_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_Combine_destination_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_Combine_destination_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_x_offset = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_Combine_x_offset, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_Combine_x_offset, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_y_offset = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_Combine_y_offset, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_Combine_y_offset, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_source_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_Combine_source_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_Combine_source_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void shapeOffset(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void shapeOffset(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_destination_kind;
int f_destination_window;
int f_x_offset;
int f_y_offset;
- f_destination_kind = field8(tvb, offsetp, t, hf_x11_shape_Offset_destination_kind, little_endian);
+ f_destination_kind = field8(tvb, offsetp, t, hf_x11_shape_Offset_destination_kind, byte_order);
UNUSED(3);
f_destination_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_Offset_destination_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_Offset_destination_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_x_offset = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_Offset_x_offset, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_Offset_x_offset, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_y_offset = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_Offset_y_offset, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_Offset_y_offset, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void shapeQueryExtents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void shapeQueryExtents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_destination_window;
f_destination_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_QueryExtents_destination_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_QueryExtents_destination_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void shapeQueryExtents_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void shapeQueryExtents_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_bounding_shaped;
@@ -13749,62 +14149,62 @@ static void shapeQueryExtents_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offs
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_bounding_shaped = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_bounding_shaped, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_bounding_shaped, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_clip_shaped = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_clip_shaped, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_clip_shaped, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
f_bounding_shape_extents_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_bounding_shape_extents_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_bounding_shape_extents_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_bounding_shape_extents_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_bounding_shape_extents_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_bounding_shape_extents_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_bounding_shape_extents_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_bounding_shape_extents_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_bounding_shape_extents_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_bounding_shape_extents_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_bounding_shape_extents_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_bounding_shape_extents_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_clip_shape_extents_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_clip_shape_extents_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_clip_shape_extents_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_clip_shape_extents_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_clip_shape_extents_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_clip_shape_extents_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_clip_shape_extents_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_clip_shape_extents_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_clip_shape_extents_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_clip_shape_extents_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_clip_shape_extents_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_QueryExtents_reply_clip_shape_extents_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void shapeSelectInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void shapeSelectInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_destination_window;
int f_enable;
f_destination_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_SelectInput_destination_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_SelectInput_destination_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_enable = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_SelectInput_enable, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_SelectInput_enable, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
}
-static void shapeInputSelected(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void shapeInputSelected(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_destination_window;
f_destination_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_InputSelected_destination_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_InputSelected_destination_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void shapeInputSelected_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void shapeInputSelected_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_enabled;
@@ -13813,7 +14213,7 @@ static void shapeInputSelected_Reply(tvbuff_t *tvb, packet_info *pinfo, int *off
REPLY(reply);
f_enabled = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_InputSelected_reply_enabled, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_InputSelected_reply_enabled, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -13821,21 +14221,21 @@ static void shapeInputSelected_Reply(tvbuff_t *tvb, packet_info *pinfo, int *off
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void shapeGetRectangles(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void shapeGetRectangles(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
int f_source_kind;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_GetRectangles_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_GetRectangles_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_source_kind = field8(tvb, offsetp, t, hf_x11_shape_GetRectangles_source_kind, little_endian);
+ f_source_kind = field8(tvb, offsetp, t, hf_x11_shape_GetRectangles_source_kind, byte_order);
UNUSED(3);
}
-static void shapeGetRectangles_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void shapeGetRectangles_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_ordering;
@@ -13844,20 +14244,20 @@ static void shapeGetRectangles_Reply(tvbuff_t *tvb, packet_info *pinfo, int *off
col_append_fstr(pinfo->cinfo, COL_INFO, "-GetRectangles");
REPLY(reply);
- f_ordering = field8(tvb, offsetp, t, hf_x11_shape_GetRectangles_reply_ordering, little_endian);
+ f_ordering = field8(tvb, offsetp, t, hf_x11_shape_GetRectangles_reply_ordering, byte_order);
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
"sequencenumber: %d (shape-GetRectangles)", sequence_number);
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_rectangles_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shape_GetRectangles_reply_rectangles_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shape_GetRectangles_reply_rectangles_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- struct_RECTANGLE(tvb, offsetp, t, little_endian, f_rectangles_len);
+ struct_RECTANGLE(tvb, offsetp, t, byte_order, f_rectangles_len);
}
static const value_string shape_extension_minor[] = {
{ 0, "QueryVersion" },
@@ -13883,7 +14283,7 @@ static x11_reply_info shape_replies[] = {
{ 0, NULL }
};
-static void dispatch_shape(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_shape(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(shape_extension_minor);
@@ -13894,31 +14294,31 @@ static void dispatch_shape(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, prot
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- shapeQueryVersion(tvb, pinfo, offsetp, t, little_endian, length);
+ shapeQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 1:
- shapeRectangles(tvb, pinfo, offsetp, t, little_endian, length);
+ shapeRectangles(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 2:
- shapeMask(tvb, pinfo, offsetp, t, little_endian, length);
+ shapeMask(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 3:
- shapeCombine(tvb, pinfo, offsetp, t, little_endian, length);
+ shapeCombine(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 4:
- shapeOffset(tvb, pinfo, offsetp, t, little_endian, length);
+ shapeOffset(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 5:
- shapeQueryExtents(tvb, pinfo, offsetp, t, little_endian, length);
+ shapeQueryExtents(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 6:
- shapeSelectInput(tvb, pinfo, offsetp, t, little_endian, length);
+ shapeSelectInput(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 7:
- shapeInputSelected(tvb, pinfo, offsetp, t, little_endian, length);
+ shapeInputSelected(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 8:
- shapeGetRectangles(tvb, pinfo, offsetp, t, little_endian, length);
+ shapeGetRectangles(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -13930,7 +14330,7 @@ static void register_shape(void)
set_handler("SHAPE", dispatch_shape, shape_errors, shape_events, shape_replies);
}
-static void shmCompletion(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void shmCompletion(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_drawable;
int f_minor_event;
@@ -13940,27 +14340,27 @@ static void shmCompletion(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little
UNUSED(1);
CARD16(event_sequencenumber);
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_Completion_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_Completion_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_minor_event = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_Completion_minor_event, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_Completion_minor_event, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_major_event = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_Completion_major_event, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_Completion_major_event, tvb, *offsetp, 1, ENC_NA);
*offsetp += 1;
UNUSED(1);
f_shmseg = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_Completion_shmseg, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_Completion_shmseg, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_offset = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_Completion_offset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_Completion_offset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void shmQueryVersion(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void shmQueryVersion(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void shmQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void shmQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_shared_pixmaps;
@@ -13974,7 +14374,7 @@ static void shmQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
REPLY(reply);
f_shared_pixmaps = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_QueryVersion_reply_shared_pixmaps, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_QueryVersion_reply_shared_pixmaps, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -13982,52 +14382,52 @@ static void shmQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_major_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_QueryVersion_reply_major_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_QueryVersion_reply_major_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_minor_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_QueryVersion_reply_minor_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_QueryVersion_reply_minor_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_uid = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_QueryVersion_reply_uid, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_QueryVersion_reply_uid, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_gid = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_QueryVersion_reply_gid, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_QueryVersion_reply_gid, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_pixmap_format = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_QueryVersion_reply_pixmap_format, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_QueryVersion_reply_pixmap_format, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(15);
}
-static void shmAttach(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void shmAttach(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_shmseg;
int f_shmid;
int f_read_only;
f_shmseg = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_Attach_shmseg, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_Attach_shmseg, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_shmid = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_Attach_shmid, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_Attach_shmid, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_read_only = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_Attach_read_only, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_Attach_read_only, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
}
-static void shmDetach(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void shmDetach(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_shmseg;
f_shmseg = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_Detach_shmseg, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_Detach_shmseg, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void shmPutImage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void shmPutImage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_drawable;
int f_gc;
@@ -14045,54 +14445,54 @@ static void shmPutImage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, pro
int f_shmseg;
int f_offset;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_PutImage_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_PutImage_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_gc = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_PutImage_gc, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_PutImage_gc, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_total_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_PutImage_total_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_PutImage_total_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_total_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_PutImage_total_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_PutImage_total_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_src_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_PutImage_src_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_PutImage_src_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_src_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_PutImage_src_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_PutImage_src_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_src_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_PutImage_src_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_PutImage_src_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_src_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_PutImage_src_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_PutImage_src_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_dst_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_PutImage_dst_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_PutImage_dst_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_dst_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_PutImage_dst_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_PutImage_dst_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_depth = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_PutImage_depth, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_PutImage_depth, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_format = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_PutImage_format, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_PutImage_format, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_send_event = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_PutImage_send_event, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_PutImage_send_event, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
f_shmseg = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_PutImage_shmseg, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_PutImage_shmseg, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_offset = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_PutImage_offset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_PutImage_offset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void shmGetImage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void shmGetImage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_drawable;
int f_x;
@@ -14104,35 +14504,35 @@ static void shmGetImage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, pro
int f_shmseg;
int f_offset;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_GetImage_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_GetImage_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_GetImage_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_GetImage_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_GetImage_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_GetImage_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_GetImage_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_GetImage_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_GetImage_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_GetImage_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_plane_mask = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_GetImage_plane_mask, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_GetImage_plane_mask, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_format = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_GetImage_format, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_GetImage_format, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
f_shmseg = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_GetImage_shmseg, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_GetImage_shmseg, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_offset = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_GetImage_offset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_GetImage_offset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void shmGetImage_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void shmGetImage_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_depth;
@@ -14143,7 +14543,7 @@ static void shmGetImage_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, p
REPLY(reply);
f_depth = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_GetImage_reply_depth, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_GetImage_reply_depth, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -14151,17 +14551,17 @@ static void shmGetImage_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, p
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_visual = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_GetImage_reply_visual, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_GetImage_reply_visual, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_size = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_GetImage_reply_size, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_GetImage_reply_size, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void shmCreatePixmap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void shmCreatePixmap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_pid;
int f_drawable;
@@ -14171,26 +14571,26 @@ static void shmCreatePixmap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_shmseg;
int f_offset;
f_pid = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_CreatePixmap_pid, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_CreatePixmap_pid, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_CreatePixmap_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_CreatePixmap_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_CreatePixmap_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_CreatePixmap_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_CreatePixmap_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_CreatePixmap_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_depth = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_CreatePixmap_depth, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_CreatePixmap_depth, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
f_shmseg = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_CreatePixmap_shmseg, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_CreatePixmap_shmseg, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_offset = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_shm_CreatePixmap_offset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_shm_CreatePixmap_offset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
static const value_string shm_extension_minor[] = {
@@ -14212,7 +14612,7 @@ static x11_reply_info shm_replies[] = {
{ 0, NULL }
};
-static void dispatch_shm(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_shm(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(shm_extension_minor);
@@ -14223,22 +14623,22 @@ static void dispatch_shm(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- shmQueryVersion(tvb, pinfo, offsetp, t, little_endian, length);
+ shmQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 1:
- shmAttach(tvb, pinfo, offsetp, t, little_endian, length);
+ shmAttach(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 2:
- shmDetach(tvb, pinfo, offsetp, t, little_endian, length);
+ shmDetach(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 3:
- shmPutImage(tvb, pinfo, offsetp, t, little_endian, length);
+ shmPutImage(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 4:
- shmGetImage(tvb, pinfo, offsetp, t, little_endian, length);
+ shmGetImage(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 5:
- shmCreatePixmap(tvb, pinfo, offsetp, t, little_endian, length);
+ shmCreatePixmap(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -14250,7 +14650,7 @@ static void register_shm(void)
set_handler("MIT-SHM", dispatch_shm, shm_errors, shm_events, shm_replies);
}
-static void struct_INT64(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_INT64(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -14259,18 +14659,18 @@ static void struct_INT64(tvbuff_t *tvb, int *offsetp, proto_tree *root, int litt
int f_hi;
int f_lo;
- item = proto_tree_add_item(root, hf_x11_struct_INT64, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_INT64, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_hi = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_INT64_hi, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_INT64_hi, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_lo = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_INT64_lo, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_INT64_lo, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
}
-static int struct_size_SYSTEMCOUNTER(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
+static int struct_size_SYSTEMCOUNTER(tvbuff_t *tvb, int *offsetp, guint byte_order _U_)
{
int size = 0;
int f_name_len;
@@ -14279,7 +14679,7 @@ static int struct_size_SYSTEMCOUNTER(tvbuff_t *tvb, int *offsetp, int little_end
return size + 14;
}
-static void struct_SYSTEMCOUNTER(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_SYSTEMCOUNTER(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -14288,20 +14688,20 @@ static void struct_SYSTEMCOUNTER(tvbuff_t *tvb, int *offsetp, proto_tree *root,
int f_counter;
int f_name_len;
- item = proto_tree_add_item(root, hf_x11_struct_SYSTEMCOUNTER, tvb, *offsetp, struct_size_SYSTEMCOUNTER(tvb, offsetp, little_endian), little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_SYSTEMCOUNTER, tvb, *offsetp, struct_size_SYSTEMCOUNTER(tvb, offsetp, byte_order), ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_counter = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SYSTEMCOUNTER_counter, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SYSTEMCOUNTER_counter, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_INT64(tvb, offsetp, t, little_endian, 1);
+ struct_INT64(tvb, offsetp, t, byte_order, 1);
f_name_len = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SYSTEMCOUNTER_name_len, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SYSTEMCOUNTER_name_len, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- listOfByte(tvb, offsetp, t, hf_x11_struct_SYSTEMCOUNTER_name, f_name_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_struct_SYSTEMCOUNTER_name, f_name_len, byte_order);
}
}
-static void struct_TRIGGER(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_TRIGGER(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -14311,43 +14711,43 @@ static void struct_TRIGGER(tvbuff_t *tvb, int *offsetp, proto_tree *root, int li
int f_wait_type;
int f_test_type;
- item = proto_tree_add_item(root, hf_x11_struct_TRIGGER, tvb, *offsetp, 20, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_TRIGGER, tvb, *offsetp, 20, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_counter = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_TRIGGER_counter, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_TRIGGER_counter, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_wait_type = field32(tvb, offsetp, t, hf_x11_struct_TRIGGER_wait_type, little_endian);
- struct_INT64(tvb, offsetp, t, little_endian, 1);
- f_test_type = field32(tvb, offsetp, t, hf_x11_struct_TRIGGER_test_type, little_endian);
+ f_wait_type = field32(tvb, offsetp, t, hf_x11_struct_TRIGGER_wait_type, byte_order);
+ struct_INT64(tvb, offsetp, t, byte_order, 1);
+ f_test_type = field32(tvb, offsetp, t, hf_x11_struct_TRIGGER_test_type, byte_order);
}
}
-static void struct_WAITCONDITION(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_WAITCONDITION(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
proto_item *item;
proto_tree *t;
- item = proto_tree_add_item(root, hf_x11_struct_WAITCONDITION, tvb, *offsetp, 28, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_WAITCONDITION, tvb, *offsetp, 28, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- struct_TRIGGER(tvb, offsetp, t, little_endian, 1);
- struct_INT64(tvb, offsetp, t, little_endian, 1);
+ struct_TRIGGER(tvb, offsetp, t, byte_order, 1);
+ struct_INT64(tvb, offsetp, t, byte_order, 1);
}
}
-static void syncInitialize(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void syncInitialize(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_desired_major_version;
int f_desired_minor_version;
f_desired_major_version = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_Initialize_desired_major_version, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_Initialize_desired_major_version, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_desired_minor_version = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_Initialize_desired_minor_version, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_Initialize_desired_minor_version, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void syncInitialize_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void syncInitialize_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_major_version;
@@ -14363,21 +14763,21 @@ static void syncInitialize_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_major_version = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_Initialize_reply_major_version, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_Initialize_reply_major_version, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_minor_version = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_Initialize_reply_minor_version, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_Initialize_reply_minor_version, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(22);
}
-static void syncListSystemCounters(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void syncListSystemCounters(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void syncListSystemCounters_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void syncListSystemCounters_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_counters_len;
@@ -14392,40 +14792,40 @@ static void syncListSystemCounters_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_counters_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_ListSystemCounters_reply_counters_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_ListSystemCounters_reply_counters_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- struct_SYSTEMCOUNTER(tvb, offsetp, t, little_endian, f_counters_len);
+ struct_SYSTEMCOUNTER(tvb, offsetp, t, byte_order, f_counters_len);
}
-static void syncCreateCounter(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void syncCreateCounter(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_id;
f_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_CreateCounter_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_CreateCounter_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_INT64(tvb, offsetp, t, little_endian, 1);
+ struct_INT64(tvb, offsetp, t, byte_order, 1);
}
-static void syncDestroyCounter(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void syncDestroyCounter(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_counter;
f_counter = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_DestroyCounter_counter, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_DestroyCounter_counter, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void syncQueryCounter(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void syncQueryCounter(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_counter;
f_counter = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_QueryCounter_counter, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_QueryCounter_counter, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void syncQueryCounter_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void syncQueryCounter_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
@@ -14439,66 +14839,66 @@ static void syncQueryCounter_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offse
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_INT64(tvb, offsetp, t, little_endian, 1);
+ struct_INT64(tvb, offsetp, t, byte_order, 1);
}
-static void syncAwait(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void syncAwait(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- struct_WAITCONDITION(tvb, offsetp, t, little_endian, (length - 4) / 28);
+ struct_WAITCONDITION(tvb, offsetp, t, byte_order, (length - 4) / 28);
}
-static void syncChangeCounter(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void syncChangeCounter(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_counter;
f_counter = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_ChangeCounter_counter, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_ChangeCounter_counter, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_INT64(tvb, offsetp, t, little_endian, 1);
+ struct_INT64(tvb, offsetp, t, byte_order, 1);
}
-static void syncSetCounter(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void syncSetCounter(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_counter;
f_counter = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_SetCounter_counter, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_SetCounter_counter, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_INT64(tvb, offsetp, t, little_endian, 1);
+ struct_INT64(tvb, offsetp, t, byte_order, 1);
}
-static void syncCreateAlarm(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void syncCreateAlarm(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_id;
f_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_CreateAlarm_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_CreateAlarm_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void syncChangeAlarm(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void syncChangeAlarm(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_id;
f_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_ChangeAlarm_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_ChangeAlarm_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void syncDestroyAlarm(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void syncDestroyAlarm(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_alarm;
f_alarm = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_DestroyAlarm_alarm, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_DestroyAlarm_alarm, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void syncQueryAlarm(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void syncQueryAlarm(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_alarm;
f_alarm = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_QueryAlarm_alarm, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_QueryAlarm_alarm, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void syncQueryAlarm_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void syncQueryAlarm_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_events;
@@ -14514,37 +14914,37 @@ static void syncQueryAlarm_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_TRIGGER(tvb, offsetp, t, little_endian, 1);
- struct_INT64(tvb, offsetp, t, little_endian, 1);
+ struct_TRIGGER(tvb, offsetp, t, byte_order, 1);
+ struct_INT64(tvb, offsetp, t, byte_order, 1);
f_events = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_QueryAlarm_reply_events, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_QueryAlarm_reply_events, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- f_state = field8(tvb, offsetp, t, hf_x11_sync_QueryAlarm_reply_state, little_endian);
+ f_state = field8(tvb, offsetp, t, hf_x11_sync_QueryAlarm_reply_state, byte_order);
UNUSED(2);
}
-static void syncSetPriority(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void syncSetPriority(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_id;
int f_priority;
f_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_SetPriority_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_SetPriority_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_priority = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_SetPriority_priority, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_SetPriority_priority, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void syncGetPriority(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void syncGetPriority(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_id;
f_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_GetPriority_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_GetPriority_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void syncGetPriority_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void syncGetPriority_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_priority;
@@ -14559,61 +14959,61 @@ static void syncGetPriority_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_priority = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_GetPriority_reply_priority, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_GetPriority_reply_priority, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void syncCreateFence(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void syncCreateFence(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_drawable;
int f_fence;
int f_initially_triggered;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_CreateFence_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_CreateFence_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_fence = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_CreateFence_fence, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_CreateFence_fence, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_initially_triggered = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_CreateFence_initially_triggered, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_CreateFence_initially_triggered, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void syncTriggerFence(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void syncTriggerFence(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_fence;
f_fence = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_TriggerFence_fence, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_TriggerFence_fence, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void syncResetFence(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void syncResetFence(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_fence;
f_fence = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_ResetFence_fence, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_ResetFence_fence, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void syncDestroyFence(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void syncDestroyFence(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_fence;
f_fence = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_DestroyFence_fence, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_DestroyFence_fence, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void syncQueryFence(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void syncQueryFence(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_fence;
f_fence = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_QueryFence_fence, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_QueryFence_fence, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void syncQueryFence_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void syncQueryFence_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_triggered;
@@ -14628,20 +15028,20 @@ static void syncQueryFence_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_triggered = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_QueryFence_reply_triggered, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_QueryFence_reply_triggered, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(23);
}
-static void syncAwaitFence(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void syncAwaitFence(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
- listOfCard32(tvb, offsetp, t, hf_x11_sync_AwaitFence_fence_list, hf_x11_sync_AwaitFence_fence_list_item, (length - 4) / 4, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_sync_AwaitFence_fence_list, hf_x11_sync_AwaitFence_fence_list_item, (length - 4) / 4, byte_order);
}
-static void syncCounterNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void syncCounterNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_kind;
int f_counter;
@@ -14649,45 +15049,45 @@ static void syncCounterNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int li
int f_count;
int f_destroyed;
f_kind = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_CounterNotify_kind, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_CounterNotify_kind, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
CARD16(event_sequencenumber);
f_counter = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_CounterNotify_counter, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_CounterNotify_counter, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_INT64(tvb, offsetp, t, little_endian, 1);
- struct_INT64(tvb, offsetp, t, little_endian, 1);
+ struct_INT64(tvb, offsetp, t, byte_order, 1);
+ struct_INT64(tvb, offsetp, t, byte_order, 1);
f_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_CounterNotify_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_CounterNotify_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_count = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_CounterNotify_count, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_CounterNotify_count, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_destroyed = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_CounterNotify_destroyed, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_CounterNotify_destroyed, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
}
-static void syncAlarmNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void syncAlarmNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_kind;
int f_alarm;
int f_timestamp;
int f_state;
f_kind = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_AlarmNotify_kind, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_AlarmNotify_kind, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
CARD16(event_sequencenumber);
f_alarm = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_AlarmNotify_alarm, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_AlarmNotify_alarm, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_INT64(tvb, offsetp, t, little_endian, 1);
- struct_INT64(tvb, offsetp, t, little_endian, 1);
+ struct_INT64(tvb, offsetp, t, byte_order, 1);
+ struct_INT64(tvb, offsetp, t, byte_order, 1);
f_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_sync_AlarmNotify_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_sync_AlarmNotify_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_state = field8(tvb, offsetp, t, hf_x11_sync_AlarmNotify_state, little_endian);
+ f_state = field8(tvb, offsetp, t, hf_x11_sync_AlarmNotify_state, byte_order);
UNUSED(3);
}
static const value_string sync_extension_minor[] = {
@@ -14728,7 +15128,7 @@ static x11_reply_info sync_replies[] = {
{ 0, NULL }
};
-static void dispatch_sync(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_sync(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(sync_extension_minor);
@@ -14739,64 +15139,64 @@ static void dispatch_sync(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- syncInitialize(tvb, pinfo, offsetp, t, little_endian, length);
+ syncInitialize(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 1:
- syncListSystemCounters(tvb, pinfo, offsetp, t, little_endian, length);
+ syncListSystemCounters(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 2:
- syncCreateCounter(tvb, pinfo, offsetp, t, little_endian, length);
+ syncCreateCounter(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 3:
- syncSetCounter(tvb, pinfo, offsetp, t, little_endian, length);
+ syncSetCounter(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 4:
- syncChangeCounter(tvb, pinfo, offsetp, t, little_endian, length);
+ syncChangeCounter(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 5:
- syncQueryCounter(tvb, pinfo, offsetp, t, little_endian, length);
+ syncQueryCounter(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 6:
- syncDestroyCounter(tvb, pinfo, offsetp, t, little_endian, length);
+ syncDestroyCounter(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 7:
- syncAwait(tvb, pinfo, offsetp, t, little_endian, length);
+ syncAwait(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 8:
- syncCreateAlarm(tvb, pinfo, offsetp, t, little_endian, length);
+ syncCreateAlarm(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 9:
- syncChangeAlarm(tvb, pinfo, offsetp, t, little_endian, length);
+ syncChangeAlarm(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 10:
- syncQueryAlarm(tvb, pinfo, offsetp, t, little_endian, length);
+ syncQueryAlarm(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 11:
- syncDestroyAlarm(tvb, pinfo, offsetp, t, little_endian, length);
+ syncDestroyAlarm(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 12:
- syncSetPriority(tvb, pinfo, offsetp, t, little_endian, length);
+ syncSetPriority(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 13:
- syncGetPriority(tvb, pinfo, offsetp, t, little_endian, length);
+ syncGetPriority(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 14:
- syncCreateFence(tvb, pinfo, offsetp, t, little_endian, length);
+ syncCreateFence(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 15:
- syncTriggerFence(tvb, pinfo, offsetp, t, little_endian, length);
+ syncTriggerFence(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 16:
- syncResetFence(tvb, pinfo, offsetp, t, little_endian, length);
+ syncResetFence(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 17:
- syncDestroyFence(tvb, pinfo, offsetp, t, little_endian, length);
+ syncDestroyFence(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 18:
- syncQueryFence(tvb, pinfo, offsetp, t, little_endian, length);
+ syncQueryFence(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 19:
- syncAwaitFence(tvb, pinfo, offsetp, t, little_endian, length);
+ syncAwaitFence(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -14808,18 +15208,18 @@ static void register_sync(void)
set_handler("SYNC", dispatch_sync, sync_errors, sync_events, sync_replies);
}
-static void xc_miscGetVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xc_miscGetVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_client_major_version;
int f_client_minor_version;
f_client_major_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xc_misc_GetVersion_client_major_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xc_misc_GetVersion_client_major_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_client_minor_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xc_misc_GetVersion_client_minor_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xc_misc_GetVersion_client_minor_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xc_miscGetVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xc_miscGetVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_server_major_version;
@@ -14835,20 +15235,20 @@ static void xc_miscGetVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offs
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_server_major_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xc_misc_GetVersion_reply_server_major_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xc_misc_GetVersion_reply_server_major_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_server_minor_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xc_misc_GetVersion_reply_server_minor_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xc_misc_GetVersion_reply_server_minor_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xc_miscGetXIDRange(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void xc_miscGetXIDRange(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void xc_miscGetXIDRange_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xc_miscGetXIDRange_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_start_id;
@@ -14864,24 +15264,24 @@ static void xc_miscGetXIDRange_Reply(tvbuff_t *tvb, packet_info *pinfo, int *off
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_start_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xc_misc_GetXIDRange_reply_start_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xc_misc_GetXIDRange_reply_start_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_count = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xc_misc_GetXIDRange_reply_count, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xc_misc_GetXIDRange_reply_count, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xc_miscGetXIDList(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xc_miscGetXIDList(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_count;
f_count = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xc_misc_GetXIDList_count, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xc_misc_GetXIDList_count, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xc_miscGetXIDList_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xc_miscGetXIDList_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_ids_len;
@@ -14896,13 +15296,13 @@ static void xc_miscGetXIDList_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offs
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_ids_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xc_misc_GetXIDList_reply_ids_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xc_misc_GetXIDList_reply_ids_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- listOfCard32(tvb, offsetp, t, hf_x11_xc_misc_GetXIDList_reply_ids, hf_x11_xc_misc_GetXIDList_reply_ids_item, f_ids_len, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xc_misc_GetXIDList_reply_ids, hf_x11_xc_misc_GetXIDList_reply_ids_item, f_ids_len, byte_order);
}
static const value_string xc_misc_extension_minor[] = {
{ 0, "GetVersion" },
@@ -14920,7 +15320,7 @@ static x11_reply_info xc_misc_replies[] = {
{ 0, NULL }
};
-static void dispatch_xc_misc(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_xc_misc(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(xc_misc_extension_minor);
@@ -14931,13 +15331,13 @@ static void dispatch_xc_misc(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, pr
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- xc_miscGetVersion(tvb, pinfo, offsetp, t, little_endian, length);
+ xc_miscGetVersion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 1:
- xc_miscGetXIDRange(tvb, pinfo, offsetp, t, little_endian, length);
+ xc_miscGetXIDRange(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 2:
- xc_miscGetXIDList(tvb, pinfo, offsetp, t, little_endian, length);
+ xc_miscGetXIDList(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -14949,18 +15349,18 @@ static void register_xc_misc(void)
set_handler("XC-MISC", dispatch_xc_misc, xc_misc_errors, xc_misc_events, xc_misc_replies);
}
-static void xevieQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xevieQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_client_major_version;
int f_client_minor_version;
f_client_major_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xevie_QueryVersion_client_major_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xevie_QueryVersion_client_major_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_client_minor_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xevie_QueryVersion_client_minor_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xevie_QueryVersion_client_minor_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xevieQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xevieQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_server_major_version;
@@ -14976,25 +15376,25 @@ static void xevieQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offs
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_server_major_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xevie_QueryVersion_reply_server_major_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xevie_QueryVersion_reply_server_major_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_server_minor_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xevie_QueryVersion_reply_server_minor_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xevie_QueryVersion_reply_server_minor_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(20);
}
-static void xevieStart(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xevieStart(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xevie_Start_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xevie_Start_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xevieStart_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xevieStart_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
@@ -15008,19 +15408,19 @@ static void xevieStart_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, pr
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(24);
}
-static void xevieEnd(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xevieEnd(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_cmap;
f_cmap = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xevie_End_cmap, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xevie_End_cmap, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xevieEnd_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xevieEnd_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
@@ -15034,34 +15434,34 @@ static void xevieEnd_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, prot
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(24);
}
-static void struct_Event(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_Event(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
proto_item *item;
proto_tree *t;
- item = proto_tree_add_item(root, hf_x11_struct_Event, tvb, *offsetp, 32, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_Event, tvb, *offsetp, 32, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
UNUSED(32);
}
}
-static void xevieSend(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xevieSend(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_data_type;
- struct_Event(tvb, offsetp, t, little_endian, 1);
+ struct_Event(tvb, offsetp, t, byte_order, 1);
f_data_type = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xevie_Send_data_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xevie_Send_data_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(64);
}
-static void xevieSend_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xevieSend_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
@@ -15075,19 +15475,19 @@ static void xevieSend_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, pro
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(24);
}
-static void xevieSelectInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xevieSelectInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_event_mask;
f_event_mask = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xevie_SelectInput_event_mask, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xevie_SelectInput_event_mask, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xevieSelectInput_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xevieSelectInput_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
@@ -15101,7 +15501,7 @@ static void xevieSelectInput_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offse
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(24);
}
@@ -15125,7 +15525,7 @@ static x11_reply_info xevie_replies[] = {
{ 0, NULL }
};
-static void dispatch_xevie(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_xevie(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(xevie_extension_minor);
@@ -15136,19 +15536,19 @@ static void dispatch_xevie(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, prot
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- xevieQueryVersion(tvb, pinfo, offsetp, t, little_endian, length);
+ xevieQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 1:
- xevieStart(tvb, pinfo, offsetp, t, little_endian, length);
+ xevieStart(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 2:
- xevieEnd(tvb, pinfo, offsetp, t, little_endian, length);
+ xevieEnd(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 3:
- xevieSend(tvb, pinfo, offsetp, t, little_endian, length);
+ xevieSend(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 4:
- xevieSelectInput(tvb, pinfo, offsetp, t, little_endian, length);
+ xevieSelectInput(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -15160,7 +15560,7 @@ static void register_xevie(void)
set_handler("XEVIE", dispatch_xevie, xevie_errors, xevie_events, xevie_replies);
}
-static void struct_DrmClipRect(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_DrmClipRect(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -15171,27 +15571,27 @@ static void struct_DrmClipRect(tvbuff_t *tvb, int *offsetp, proto_tree *root, in
int f_x2;
int f_x3;
- item = proto_tree_add_item(root, hf_x11_struct_DrmClipRect, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_DrmClipRect, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_x1 = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_DrmClipRect_x1, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_DrmClipRect_x1, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_y1 = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_DrmClipRect_y1, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_DrmClipRect_y1, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_x2 = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_DrmClipRect_x2, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_DrmClipRect_x2, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_x3 = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_DrmClipRect_x3, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_DrmClipRect_x3, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
}
-static void xf86driQueryVersion(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void xf86driQueryVersion(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void xf86driQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xf86driQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_dri_major_version;
@@ -15208,27 +15608,27 @@ static void xf86driQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *of
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_dri_major_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_QueryVersion_reply_dri_major_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_QueryVersion_reply_dri_major_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_dri_minor_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_QueryVersion_reply_dri_minor_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_QueryVersion_reply_dri_minor_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_dri_minor_patch = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_QueryVersion_reply_dri_minor_patch, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_QueryVersion_reply_dri_minor_patch, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xf86driQueryDirectRenderingCapable(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86driQueryDirectRenderingCapable(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_QueryDirectRenderingCapable_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_QueryDirectRenderingCapable_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xf86driQueryDirectRenderingCapable_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xf86driQueryDirectRenderingCapable_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_is_capable;
@@ -15243,21 +15643,21 @@ static void xf86driQueryDirectRenderingCapable_Reply(tvbuff_t *tvb, packet_info
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_is_capable = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_QueryDirectRenderingCapable_reply_is_capable, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_QueryDirectRenderingCapable_reply_is_capable, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void xf86driOpenConnection(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86driOpenConnection(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_OpenConnection_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_OpenConnection_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xf86driOpenConnection_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xf86driOpenConnection_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_sarea_handle_low;
@@ -15274,37 +15674,37 @@ static void xf86driOpenConnection_Reply(tvbuff_t *tvb, packet_info *pinfo, int *
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_sarea_handle_low = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_OpenConnection_reply_sarea_handle_low, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_OpenConnection_reply_sarea_handle_low, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_sarea_handle_high = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_OpenConnection_reply_sarea_handle_high, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_OpenConnection_reply_sarea_handle_high, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_bus_id_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_OpenConnection_reply_bus_id_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_OpenConnection_reply_bus_id_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfByte(tvb, offsetp, t, hf_x11_xf86dri_OpenConnection_reply_bus_id, f_bus_id_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xf86dri_OpenConnection_reply_bus_id, f_bus_id_len, byte_order);
}
-static void xf86driCloseConnection(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86driCloseConnection(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_CloseConnection_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_CloseConnection_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xf86driGetClientDriverName(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86driGetClientDriverName(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_GetClientDriverName_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_GetClientDriverName_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xf86driGetClientDriverName_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xf86driGetClientDriverName_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_client_driver_major_version;
@@ -15322,40 +15722,40 @@ static void xf86driGetClientDriverName_Reply(tvbuff_t *tvb, packet_info *pinfo,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_client_driver_major_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_GetClientDriverName_reply_client_driver_major_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_GetClientDriverName_reply_client_driver_major_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_client_driver_minor_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_GetClientDriverName_reply_client_driver_minor_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_GetClientDriverName_reply_client_driver_minor_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_client_driver_patch_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_GetClientDriverName_reply_client_driver_patch_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_GetClientDriverName_reply_client_driver_patch_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_client_driver_name_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_GetClientDriverName_reply_client_driver_name_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_GetClientDriverName_reply_client_driver_name_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(8);
- listOfByte(tvb, offsetp, t, hf_x11_xf86dri_GetClientDriverName_reply_client_driver_name, f_client_driver_name_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xf86dri_GetClientDriverName_reply_client_driver_name, f_client_driver_name_len, byte_order);
}
-static void xf86driCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86driCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
int f_visual;
int f_context;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_CreateContext_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_CreateContext_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_visual = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_CreateContext_visual, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_CreateContext_visual, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_CreateContext_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_CreateContext_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xf86driCreateContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xf86driCreateContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_hw_context;
@@ -15370,37 +15770,37 @@ static void xf86driCreateContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *o
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_hw_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_CreateContext_reply_hw_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_CreateContext_reply_hw_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xf86driDestroyContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86driDestroyContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
int f_context;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_DestroyContext_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_DestroyContext_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_DestroyContext_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_DestroyContext_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xf86driCreateDrawable(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86driCreateDrawable(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
int f_drawable;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_CreateDrawable_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_CreateDrawable_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_CreateDrawable_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_CreateDrawable_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xf86driCreateDrawable_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xf86driCreateDrawable_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_hw_drawable_handle;
@@ -15415,37 +15815,37 @@ static void xf86driCreateDrawable_Reply(tvbuff_t *tvb, packet_info *pinfo, int *
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_hw_drawable_handle = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_CreateDrawable_reply_hw_drawable_handle, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_CreateDrawable_reply_hw_drawable_handle, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xf86driDestroyDrawable(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86driDestroyDrawable(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
int f_drawable;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_DestroyDrawable_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_DestroyDrawable_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_DestroyDrawable_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_DestroyDrawable_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xf86driGetDrawableInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86driGetDrawableInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
int f_drawable;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xf86driGetDrawableInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xf86driGetDrawableInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_drawable_table_index;
@@ -15469,50 +15869,50 @@ static void xf86driGetDrawableInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_drawable_table_index = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_drawable_table_index, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_drawable_table_index, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_drawable_table_stamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_drawable_table_stamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_drawable_table_stamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_drawable_origin_X = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_drawable_origin_X, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_drawable_origin_X, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drawable_origin_Y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_drawable_origin_Y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_drawable_origin_Y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drawable_size_W = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_drawable_size_W, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_drawable_size_W, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drawable_size_H = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_drawable_size_H, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_drawable_size_H, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_num_clip_rects = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_num_clip_rects, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_num_clip_rects, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_back_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_back_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_back_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_back_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_back_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_back_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_num_back_clip_rects = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_num_back_clip_rects, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_GetDrawableInfo_reply_num_back_clip_rects, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_DrmClipRect(tvb, offsetp, t, little_endian, f_num_clip_rects);
- struct_DrmClipRect(tvb, offsetp, t, little_endian, f_num_back_clip_rects);
+ struct_DrmClipRect(tvb, offsetp, t, byte_order, f_num_clip_rects);
+ struct_DrmClipRect(tvb, offsetp, t, byte_order, f_num_back_clip_rects);
}
-static void xf86driGetDeviceInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86driGetDeviceInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_GetDeviceInfo_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_GetDeviceInfo_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xf86driGetDeviceInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xf86driGetDeviceInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_framebuffer_handle_low;
@@ -15532,41 +15932,41 @@ static void xf86driGetDeviceInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *o
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_framebuffer_handle_low = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_GetDeviceInfo_reply_framebuffer_handle_low, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_GetDeviceInfo_reply_framebuffer_handle_low, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_framebuffer_handle_high = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_GetDeviceInfo_reply_framebuffer_handle_high, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_GetDeviceInfo_reply_framebuffer_handle_high, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_framebuffer_origin_offset = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_GetDeviceInfo_reply_framebuffer_origin_offset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_GetDeviceInfo_reply_framebuffer_origin_offset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_framebuffer_size = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_GetDeviceInfo_reply_framebuffer_size, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_GetDeviceInfo_reply_framebuffer_size, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_framebuffer_stride = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_GetDeviceInfo_reply_framebuffer_stride, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_GetDeviceInfo_reply_framebuffer_stride, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_device_private_size = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_GetDeviceInfo_reply_device_private_size, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_GetDeviceInfo_reply_device_private_size, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard32(tvb, offsetp, t, hf_x11_xf86dri_GetDeviceInfo_reply_device_private, hf_x11_xf86dri_GetDeviceInfo_reply_device_private_item, f_device_private_size, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xf86dri_GetDeviceInfo_reply_device_private, hf_x11_xf86dri_GetDeviceInfo_reply_device_private_item, f_device_private_size, byte_order);
}
-static void xf86driAuthConnection(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86driAuthConnection(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
int f_magic;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_AuthConnection_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_AuthConnection_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_magic = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_AuthConnection_magic, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_AuthConnection_magic, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xf86driAuthConnection_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xf86driAuthConnection_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_authenticated;
@@ -15581,10 +15981,10 @@ static void xf86driAuthConnection_Reply(tvbuff_t *tvb, packet_info *pinfo, int *
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_authenticated = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86dri_AuthConnection_reply_authenticated, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86dri_AuthConnection_reply_authenticated, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
static const value_string xf86dri_extension_minor[] = {
@@ -15618,7 +16018,7 @@ static x11_reply_info xf86dri_replies[] = {
{ 0, NULL }
};
-static void dispatch_xf86dri(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_xf86dri(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(xf86dri_extension_minor);
@@ -15629,40 +16029,40 @@ static void dispatch_xf86dri(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, pr
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- xf86driQueryVersion(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86driQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 1:
- xf86driQueryDirectRenderingCapable(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86driQueryDirectRenderingCapable(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 2:
- xf86driOpenConnection(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86driOpenConnection(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 3:
- xf86driCloseConnection(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86driCloseConnection(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 4:
- xf86driGetClientDriverName(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86driGetClientDriverName(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 5:
- xf86driCreateContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86driCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 6:
- xf86driDestroyContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86driDestroyContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 7:
- xf86driCreateDrawable(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86driCreateDrawable(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 8:
- xf86driDestroyDrawable(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86driDestroyDrawable(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 9:
- xf86driGetDrawableInfo(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86driGetDrawableInfo(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 10:
- xf86driGetDeviceInfo(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86driGetDeviceInfo(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 11:
- xf86driAuthConnection(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86driAuthConnection(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -15674,10 +16074,10 @@ static void register_xf86dri(void)
set_handler("XFree86-DRI", dispatch_xf86dri, xf86dri_errors, xf86dri_events, xf86dri_replies);
}
-static void xf86vidmodeQueryVersion(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void xf86vidmodeQueryVersion(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void xf86vidmodeQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xf86vidmodeQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_major_version;
@@ -15693,25 +16093,25 @@ static void xf86vidmodeQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_major_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_QueryVersion_reply_major_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_QueryVersion_reply_major_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_minor_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_QueryVersion_reply_minor_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_QueryVersion_reply_minor_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xf86vidmodeGetModeLine(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86vidmodeGetModeLine(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
f_screen = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_screen, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_screen, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
}
-static void xf86vidmodeGetModeLine_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xf86vidmodeGetModeLine_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_dotclock;
@@ -15737,67 +16137,66 @@ static void xf86vidmodeGetModeLine_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_dotclock = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_dotclock, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_dotclock, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_hdisplay = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_hdisplay, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_hdisplay, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_hsyncstart = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_hsyncstart, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_hsyncstart, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_hsyncend = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_hsyncend, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_hsyncend, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_htotal = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_htotal, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_htotal, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_hskew = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_hskew, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_hskew, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vdisplay = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_vdisplay, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_vdisplay, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vsyncstart = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_vsyncstart, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_vsyncstart, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vsyncend = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_vsyncend, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_vsyncend, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vtotal = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_vtotal, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_vtotal, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
f_flags = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_flags, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_flags, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_HsyncPositive, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_HsyncNegative, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_VsyncPositive, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_VsyncNegative, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Interlace, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_DoubleScan, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Csync, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_CsyncPositive, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_CsyncNegative, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_HskewPresent, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Bcast, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_PixelMultiplex, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_DoubleClock, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_HalveClock, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Positive_HSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Negative_HSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Positive_VSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Negative_VSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Interlace, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Composite_Sync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Positive_CSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Negative_CSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_HSkew, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Broadcast, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Pixmux, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Double_Clock, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Half_Clock, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
UNUSED(12);
f_privsize = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_privsize, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetModeLine_reply_privsize, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_GetModeLine_reply_private, f_privsize, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_GetModeLine_reply_private, f_privsize, byte_order);
}
-static void xf86vidmodeModModeLine(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86vidmodeModModeLine(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
int f_hdisplay;
@@ -15812,85 +16211,84 @@ static void xf86vidmodeModModeLine(tvbuff_t *tvb, packet_info *pinfo _U_, int *o
int f_flags;
int f_privsize;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_hdisplay = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_hdisplay, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_hdisplay, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_hsyncstart = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_hsyncstart, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_hsyncstart, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_hsyncend = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_hsyncend, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_hsyncend, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_htotal = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_htotal, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_htotal, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_hskew = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_hskew, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_hskew, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vdisplay = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_vdisplay, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_vdisplay, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vsyncstart = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_vsyncstart, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_vsyncstart, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vsyncend = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_vsyncend, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_vsyncend, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vtotal = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_vtotal, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_vtotal, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
f_flags = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_flags, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_flags, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_HsyncPositive, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_HsyncNegative, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_VsyncPositive, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_VsyncNegative, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_Interlace, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_DoubleScan, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_Csync, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_CsyncPositive, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_CsyncNegative, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_HskewPresent, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_Bcast, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_PixelMultiplex, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_DoubleClock, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_HalveClock, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_Positive_HSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_Negative_HSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_Positive_VSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_Negative_VSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_Interlace, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_Composite_Sync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_Positive_CSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_Negative_CSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_HSkew, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_Broadcast, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_Pixmux, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_Double_Clock, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ModModeLine_flags_mask_Half_Clock, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
UNUSED(12);
f_privsize = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_privsize, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_ModModeLine_privsize, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_ModModeLine_private, f_privsize, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_ModModeLine_private, f_privsize, byte_order);
length -= f_privsize * 1;
}
-static void xf86vidmodeSwitchMode(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86vidmodeSwitchMode(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
int f_zoom;
f_screen = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchMode_screen, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchMode_screen, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_zoom = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchMode_zoom, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchMode_zoom, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xf86vidmodeGetMonitor(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86vidmodeGetMonitor(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
f_screen = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetMonitor_screen, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetMonitor_screen, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
}
-static void xf86vidmodeGetMonitor_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xf86vidmodeGetMonitor_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_vendor_length;
@@ -15908,49 +16306,49 @@ static void xf86vidmodeGetMonitor_Reply(tvbuff_t *tvb, packet_info *pinfo, int *
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_vendor_length = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetMonitor_reply_vendor_length, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetMonitor_reply_vendor_length, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_model_length = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetMonitor_reply_model_length, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetMonitor_reply_model_length, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_num_hsync = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetMonitor_reply_num_hsync, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetMonitor_reply_num_hsync, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_num_vsync = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetMonitor_reply_num_vsync, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetMonitor_reply_num_vsync, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(20);
- listOfCard32(tvb, offsetp, t, hf_x11_xf86vidmode_GetMonitor_reply_hsync, hf_x11_xf86vidmode_GetMonitor_reply_hsync_item, f_num_hsync, little_endian);
- listOfCard32(tvb, offsetp, t, hf_x11_xf86vidmode_GetMonitor_reply_vsync, hf_x11_xf86vidmode_GetMonitor_reply_vsync_item, f_num_vsync, little_endian);
- listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_GetMonitor_reply_vendor, f_vendor_length, little_endian);
- listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_GetMonitor_reply_alignment_pad, (((f_vendor_length + 3 ) & (~3)) - f_vendor_length), little_endian);
- listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_GetMonitor_reply_model, f_model_length, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xf86vidmode_GetMonitor_reply_hsync, hf_x11_xf86vidmode_GetMonitor_reply_hsync_item, f_num_hsync, byte_order);
+ listOfCard32(tvb, offsetp, t, hf_x11_xf86vidmode_GetMonitor_reply_vsync, hf_x11_xf86vidmode_GetMonitor_reply_vsync_item, f_num_vsync, byte_order);
+ listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_GetMonitor_reply_vendor, f_vendor_length, byte_order);
+ listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_GetMonitor_reply_alignment_pad, (((f_vendor_length + 3 ) & (~3)) - f_vendor_length), byte_order);
+ listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_GetMonitor_reply_model, f_model_length, byte_order);
}
-static void xf86vidmodeLockModeSwitch(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86vidmodeLockModeSwitch(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
int f_lock;
f_screen = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_LockModeSwitch_screen, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_LockModeSwitch_screen, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_lock = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_LockModeSwitch_lock, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_LockModeSwitch_lock, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xf86vidmodeGetAllModeLines(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86vidmodeGetAllModeLines(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
f_screen = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetAllModeLines_screen, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetAllModeLines_screen, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
}
-static void xf86vidmodeGetAllModeLines_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xf86vidmodeGetAllModeLines_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_modecount;
@@ -15965,16 +16363,16 @@ static void xf86vidmodeGetAllModeLines_Reply(tvbuff_t *tvb, packet_info *pinfo,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_modecount = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetAllModeLines_reply_modecount, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetAllModeLines_reply_modecount, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- struct_ModeInfo(tvb, offsetp, t, little_endian, f_modecount);
+ struct_ModeInfo(tvb, offsetp, t, byte_order, f_modecount);
}
-static void xf86vidmodeAddModeLine(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86vidmodeAddModeLine(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
int f_dotclock;
@@ -16001,120 +16399,118 @@ static void xf86vidmodeAddModeLine(tvbuff_t *tvb, packet_info *pinfo _U_, int *o
int f_after_vtotal;
int f_after_flags;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_dotclock = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_dotclock, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_dotclock, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_hdisplay = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_hdisplay, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_hdisplay, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_hsyncstart = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_hsyncstart, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_hsyncstart, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_hsyncend = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_hsyncend, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_hsyncend, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_htotal = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_htotal, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_htotal, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_hskew = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_hskew, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_hskew, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vdisplay = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_vdisplay, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_vdisplay, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vsyncstart = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_vsyncstart, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_vsyncstart, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vsyncend = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_vsyncend, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_vsyncend, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vtotal = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_vtotal, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_vtotal, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
f_flags = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_flags, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_flags, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_HsyncPositive, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_HsyncNegative, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_VsyncPositive, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_VsyncNegative, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_Interlace, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_DoubleScan, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_Csync, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_CsyncPositive, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_CsyncNegative, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_HskewPresent, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_Bcast, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_PixelMultiplex, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_DoubleClock, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_HalveClock, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_Positive_HSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_Negative_HSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_Positive_VSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_Negative_VSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_Interlace, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_Composite_Sync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_Positive_CSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_Negative_CSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_HSkew, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_Broadcast, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_Pixmux, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_Double_Clock, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_flags_mask_Half_Clock, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
UNUSED(12);
f_privsize = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_privsize, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_privsize, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_after_dotclock = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_dotclock, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_dotclock, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_after_hdisplay = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_hdisplay, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_hdisplay, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_after_hsyncstart = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_hsyncstart, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_hsyncstart, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_after_hsyncend = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_hsyncend, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_hsyncend, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_after_htotal = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_htotal, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_htotal, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_after_hskew = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_hskew, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_hskew, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_after_vdisplay = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_vdisplay, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_vdisplay, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_after_vsyncstart = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_vsyncstart, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_vsyncstart, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_after_vsyncend = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_vsyncend, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_vsyncend, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_after_vtotal = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_vtotal, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_vtotal, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
f_after_flags = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_flags, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xf86vidmode_AddModeLine_after_flags, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_HsyncPositive, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_HsyncNegative, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_VsyncPositive, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_VsyncNegative, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Interlace, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_DoubleScan, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Csync, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_CsyncPositive, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_CsyncNegative, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_HskewPresent, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Bcast, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_PixelMultiplex, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_DoubleClock, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_HalveClock, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Positive_HSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Negative_HSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Positive_VSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Negative_VSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Interlace, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Composite_Sync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Positive_CSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Negative_CSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_HSkew, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Broadcast, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Pixmux, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Double_Clock, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Half_Clock, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
UNUSED(12);
- listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_AddModeLine_private, f_privsize, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_AddModeLine_private, f_privsize, byte_order);
length -= f_privsize * 1;
}
-static void xf86vidmodeDeleteModeLine(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86vidmodeDeleteModeLine(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
int f_dotclock;
@@ -16130,68 +16526,67 @@ static void xf86vidmodeDeleteModeLine(tvbuff_t *tvb, packet_info *pinfo _U_, int
int f_flags;
int f_privsize;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_dotclock = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_dotclock, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_dotclock, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_hdisplay = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_hdisplay, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_hdisplay, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_hsyncstart = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_hsyncstart, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_hsyncstart, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_hsyncend = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_hsyncend, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_hsyncend, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_htotal = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_htotal, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_htotal, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_hskew = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_hskew, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_hskew, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vdisplay = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_vdisplay, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_vdisplay, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vsyncstart = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_vsyncstart, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_vsyncstart, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vsyncend = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_vsyncend, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_vsyncend, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vtotal = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_vtotal, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_vtotal, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
f_flags = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_flags, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_flags, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_HsyncPositive, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_HsyncNegative, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_VsyncPositive, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_VsyncNegative, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Interlace, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_DoubleScan, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Csync, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_CsyncPositive, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_CsyncNegative, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_HskewPresent, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Bcast, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_PixelMultiplex, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_DoubleClock, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_HalveClock, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Positive_HSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Negative_HSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Positive_VSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Negative_VSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Interlace, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Composite_Sync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Positive_CSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Negative_CSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_HSkew, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Broadcast, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Pixmux, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Double_Clock, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Half_Clock, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
UNUSED(12);
f_privsize = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_privsize, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_DeleteModeLine_privsize, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_DeleteModeLine_private, f_privsize, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_DeleteModeLine_private, f_privsize, byte_order);
length -= f_privsize * 1;
}
-static void xf86vidmodeValidateModeLine(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86vidmodeValidateModeLine(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
int f_dotclock;
@@ -16207,67 +16602,66 @@ static void xf86vidmodeValidateModeLine(tvbuff_t *tvb, packet_info *pinfo _U_, i
int f_flags;
int f_privsize;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_dotclock = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_dotclock, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_dotclock, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_hdisplay = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_hdisplay, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_hdisplay, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_hsyncstart = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_hsyncstart, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_hsyncstart, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_hsyncend = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_hsyncend, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_hsyncend, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_htotal = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_htotal, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_htotal, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_hskew = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_hskew, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_hskew, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vdisplay = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_vdisplay, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_vdisplay, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vsyncstart = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_vsyncstart, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_vsyncstart, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vsyncend = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_vsyncend, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_vsyncend, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vtotal = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_vtotal, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_vtotal, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
f_flags = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_flags, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_flags, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_HsyncPositive, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_HsyncNegative, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_VsyncPositive, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_VsyncNegative, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Interlace, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_DoubleScan, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Csync, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_CsyncPositive, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_CsyncNegative, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_HskewPresent, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Bcast, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_PixelMultiplex, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_DoubleClock, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_HalveClock, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Positive_HSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Negative_HSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Positive_VSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Negative_VSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Interlace, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Composite_Sync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Positive_CSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Negative_CSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_HSkew, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Broadcast, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Pixmux, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Double_Clock, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Half_Clock, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
UNUSED(12);
f_privsize = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_privsize, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_privsize, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_ValidateModeLine_private, f_privsize, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_ValidateModeLine_private, f_privsize, byte_order);
length -= f_privsize * 1;
}
-static void xf86vidmodeValidateModeLine_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xf86vidmodeValidateModeLine_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_status;
@@ -16282,15 +16676,15 @@ static void xf86vidmodeValidateModeLine_Reply(tvbuff_t *tvb, packet_info *pinfo,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_status = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_reply_status, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_ValidateModeLine_reply_status, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
}
-static void xf86vidmodeSwitchToMode(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86vidmodeSwitchToMode(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
int f_dotclock;
@@ -16306,76 +16700,75 @@ static void xf86vidmodeSwitchToMode(tvbuff_t *tvb, packet_info *pinfo _U_, int *
int f_flags;
int f_privsize;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_dotclock = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_dotclock, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_dotclock, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_hdisplay = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_hdisplay, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_hdisplay, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_hsyncstart = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_hsyncstart, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_hsyncstart, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_hsyncend = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_hsyncend, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_hsyncend, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_htotal = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_htotal, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_htotal, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_hskew = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_hskew, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_hskew, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vdisplay = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_vdisplay, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_vdisplay, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vsyncstart = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_vsyncstart, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_vsyncstart, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vsyncend = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_vsyncend, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_vsyncend, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vtotal = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_vtotal, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_vtotal, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
f_flags = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_flags, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_flags, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_HsyncPositive, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_HsyncNegative, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_VsyncPositive, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_VsyncNegative, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_Interlace, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_DoubleScan, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_Csync, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_CsyncPositive, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_CsyncNegative, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_HskewPresent, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_Bcast, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_PixelMultiplex, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_DoubleClock, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_HalveClock, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_Positive_HSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_Negative_HSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_Positive_VSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_Negative_VSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_Interlace, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_Composite_Sync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_Positive_CSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_Negative_CSync, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_HSkew, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_Broadcast, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_Pixmux, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_Double_Clock, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_SwitchToMode_flags_mask_Half_Clock, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
UNUSED(12);
f_privsize = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_privsize, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_SwitchToMode_privsize, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_SwitchToMode_private, f_privsize, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xf86vidmode_SwitchToMode_private, f_privsize, byte_order);
length -= f_privsize * 1;
}
-static void xf86vidmodeGetViewPort(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86vidmodeGetViewPort(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
f_screen = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetViewPort_screen, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetViewPort_screen, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
}
-static void xf86vidmodeGetViewPort_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xf86vidmodeGetViewPort_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_x;
@@ -16391,43 +16784,43 @@ static void xf86vidmodeGetViewPort_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_x = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetViewPort_reply_x, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetViewPort_reply_x, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_y = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetViewPort_reply_y, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetViewPort_reply_y, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(16);
}
-static void xf86vidmodeSetViewPort(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86vidmodeSetViewPort(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
int f_x;
int f_y;
f_screen = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_SetViewPort_screen, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_SetViewPort_screen, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
f_x = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_SetViewPort_x, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_SetViewPort_x, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_y = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_SetViewPort_y, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_SetViewPort_y, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xf86vidmodeGetDotClocks(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86vidmodeGetDotClocks(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
f_screen = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetDotClocks_screen, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetDotClocks_screen, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
}
-static void xf86vidmodeGetDotClocks_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xf86vidmodeGetDotClocks_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_flags;
@@ -16444,68 +16837,68 @@ static void xf86vidmodeGetDotClocks_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_flags = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xf86vidmode_GetDotClocks_reply_flags, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xf86vidmode_GetDotClocks_reply_flags, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetDotClocks_reply_flags_mask_Programable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetDotClocks_reply_flags_mask_Programable, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
f_clocks = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetDotClocks_reply_clocks, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetDotClocks_reply_clocks, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_maxclocks = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetDotClocks_reply_maxclocks, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetDotClocks_reply_maxclocks, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfCard32(tvb, offsetp, t, hf_x11_xf86vidmode_GetDotClocks_reply_clock, hf_x11_xf86vidmode_GetDotClocks_reply_clock_item, ((1 - (f_flags & 1)) * f_clocks), little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xf86vidmode_GetDotClocks_reply_clock, hf_x11_xf86vidmode_GetDotClocks_reply_clock_item, ((1 - (f_flags & 1)) * f_clocks), byte_order);
}
-static void xf86vidmodeSetClientVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86vidmodeSetClientVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_major;
int f_minor;
f_major = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_SetClientVersion_major, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_SetClientVersion_major, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_minor = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_SetClientVersion_minor, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_SetClientVersion_minor, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xf86vidmodeSetGamma(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86vidmodeSetGamma(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
int f_red;
int f_green;
int f_blue;
f_screen = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_SetGamma_screen, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_SetGamma_screen, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
f_red = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_SetGamma_red, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_SetGamma_red, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_green = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_SetGamma_green, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_SetGamma_green, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_blue = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_SetGamma_blue, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_SetGamma_blue, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
}
-static void xf86vidmodeGetGamma(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86vidmodeGetGamma(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
f_screen = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetGamma_screen, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetGamma_screen, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(26);
}
-static void xf86vidmodeGetGamma_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xf86vidmodeGetGamma_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_red;
@@ -16522,32 +16915,32 @@ static void xf86vidmodeGetGamma_Reply(tvbuff_t *tvb, packet_info *pinfo, int *of
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_red = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetGamma_reply_red, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetGamma_reply_red, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_green = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetGamma_reply_green, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetGamma_reply_green, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_blue = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetGamma_reply_blue, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetGamma_reply_blue, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
}
-static void xf86vidmodeGetGammaRamp(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86vidmodeGetGammaRamp(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
int f_size;
f_screen = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetGammaRamp_screen, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetGammaRamp_screen, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_size = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetGammaRamp_size, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetGammaRamp_size, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xf86vidmodeGetGammaRamp_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xf86vidmodeGetGammaRamp_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_size;
@@ -16562,44 +16955,44 @@ static void xf86vidmodeGetGammaRamp_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_size = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetGammaRamp_reply_size, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetGammaRamp_reply_size, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(22);
- listOfCard16(tvb, offsetp, t, hf_x11_xf86vidmode_GetGammaRamp_reply_red, hf_x11_xf86vidmode_GetGammaRamp_reply_red_item, ((f_size + 1) & (~1)), little_endian);
- listOfCard16(tvb, offsetp, t, hf_x11_xf86vidmode_GetGammaRamp_reply_green, hf_x11_xf86vidmode_GetGammaRamp_reply_green_item, ((f_size + 1) & (~1)), little_endian);
- listOfCard16(tvb, offsetp, t, hf_x11_xf86vidmode_GetGammaRamp_reply_blue, hf_x11_xf86vidmode_GetGammaRamp_reply_blue_item, ((f_size + 1) & (~1)), little_endian);
+ listOfCard16(tvb, offsetp, t, hf_x11_xf86vidmode_GetGammaRamp_reply_red, hf_x11_xf86vidmode_GetGammaRamp_reply_red_item, ((f_size + 1) & (~1)), byte_order);
+ listOfCard16(tvb, offsetp, t, hf_x11_xf86vidmode_GetGammaRamp_reply_green, hf_x11_xf86vidmode_GetGammaRamp_reply_green_item, ((f_size + 1) & (~1)), byte_order);
+ listOfCard16(tvb, offsetp, t, hf_x11_xf86vidmode_GetGammaRamp_reply_blue, hf_x11_xf86vidmode_GetGammaRamp_reply_blue_item, ((f_size + 1) & (~1)), byte_order);
}
-static void xf86vidmodeSetGammaRamp(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86vidmodeSetGammaRamp(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
int f_size;
f_screen = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_SetGammaRamp_screen, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_SetGammaRamp_screen, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_size = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_SetGammaRamp_size, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_SetGammaRamp_size, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- listOfCard16(tvb, offsetp, t, hf_x11_xf86vidmode_SetGammaRamp_red, hf_x11_xf86vidmode_SetGammaRamp_red_item, ((f_size + 1) & (~1)), little_endian);
+ listOfCard16(tvb, offsetp, t, hf_x11_xf86vidmode_SetGammaRamp_red, hf_x11_xf86vidmode_SetGammaRamp_red_item, ((f_size + 1) & (~1)), byte_order);
length -= ((f_size + 1) & (~1)) * 2;
- listOfCard16(tvb, offsetp, t, hf_x11_xf86vidmode_SetGammaRamp_green, hf_x11_xf86vidmode_SetGammaRamp_green_item, ((f_size + 1) & (~1)), little_endian);
+ listOfCard16(tvb, offsetp, t, hf_x11_xf86vidmode_SetGammaRamp_green, hf_x11_xf86vidmode_SetGammaRamp_green_item, ((f_size + 1) & (~1)), byte_order);
length -= ((f_size + 1) & (~1)) * 2;
- listOfCard16(tvb, offsetp, t, hf_x11_xf86vidmode_SetGammaRamp_blue, hf_x11_xf86vidmode_SetGammaRamp_blue_item, ((f_size + 1) & (~1)), little_endian);
+ listOfCard16(tvb, offsetp, t, hf_x11_xf86vidmode_SetGammaRamp_blue, hf_x11_xf86vidmode_SetGammaRamp_blue_item, ((f_size + 1) & (~1)), byte_order);
length -= ((f_size + 1) & (~1)) * 2;
}
-static void xf86vidmodeGetGammaRampSize(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86vidmodeGetGammaRampSize(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
f_screen = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetGammaRampSize_screen, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetGammaRampSize_screen, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
}
-static void xf86vidmodeGetGammaRampSize_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xf86vidmodeGetGammaRampSize_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_size;
@@ -16614,23 +17007,23 @@ static void xf86vidmodeGetGammaRampSize_Reply(tvbuff_t *tvb, packet_info *pinfo,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_size = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetGammaRampSize_reply_size, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetGammaRampSize_reply_size, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(22);
}
-static void xf86vidmodeGetPermissions(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xf86vidmodeGetPermissions(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_screen;
f_screen = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xf86vidmode_GetPermissions_screen, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xf86vidmode_GetPermissions_screen, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
}
-static void xf86vidmodeGetPermissions_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xf86vidmodeGetPermissions_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_permissions;
@@ -16645,14 +17038,14 @@ static void xf86vidmodeGetPermissions_Reply(tvbuff_t *tvb, packet_info *pinfo, i
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_permissions = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xf86vidmode_GetPermissions_reply_permissions, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xf86vidmode_GetPermissions_reply_permissions, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetPermissions_reply_permissions_mask_Read, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetPermissions_reply_permissions_mask_Write, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetPermissions_reply_permissions_mask_Read, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xf86vidmode_GetPermissions_reply_permissions_mask_Write, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
UNUSED(20);
@@ -16699,7 +17092,7 @@ static x11_reply_info xf86vidmode_replies[] = {
{ 0, NULL }
};
-static void dispatch_xf86vidmode(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_xf86vidmode(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(xf86vidmode_extension_minor);
@@ -16710,67 +17103,67 @@ static void dispatch_xf86vidmode(tvbuff_t *tvb, packet_info *pinfo, int *offsetp
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- xf86vidmodeQueryVersion(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86vidmodeQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 1:
- xf86vidmodeGetModeLine(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86vidmodeGetModeLine(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 2:
- xf86vidmodeModModeLine(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86vidmodeModModeLine(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 3:
- xf86vidmodeSwitchMode(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86vidmodeSwitchMode(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 4:
- xf86vidmodeGetMonitor(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86vidmodeGetMonitor(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 5:
- xf86vidmodeLockModeSwitch(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86vidmodeLockModeSwitch(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 6:
- xf86vidmodeGetAllModeLines(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86vidmodeGetAllModeLines(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 7:
- xf86vidmodeAddModeLine(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86vidmodeAddModeLine(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 8:
- xf86vidmodeDeleteModeLine(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86vidmodeDeleteModeLine(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 9:
- xf86vidmodeValidateModeLine(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86vidmodeValidateModeLine(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 10:
- xf86vidmodeSwitchToMode(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86vidmodeSwitchToMode(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 11:
- xf86vidmodeGetViewPort(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86vidmodeGetViewPort(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 12:
- xf86vidmodeSetViewPort(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86vidmodeSetViewPort(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 13:
- xf86vidmodeGetDotClocks(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86vidmodeGetDotClocks(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 14:
- xf86vidmodeSetClientVersion(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86vidmodeSetClientVersion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 15:
- xf86vidmodeSetGamma(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86vidmodeSetGamma(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 16:
- xf86vidmodeGetGamma(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86vidmodeGetGamma(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 17:
- xf86vidmodeGetGammaRamp(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86vidmodeGetGammaRamp(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 18:
- xf86vidmodeSetGammaRamp(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86vidmodeSetGammaRamp(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 19:
- xf86vidmodeGetGammaRampSize(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86vidmodeGetGammaRampSize(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 20:
- xf86vidmodeGetPermissions(tvb, pinfo, offsetp, t, little_endian, length);
+ xf86vidmodeGetPermissions(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -16782,18 +17175,18 @@ static void register_xf86vidmode(void)
set_handler("XFree86-VidModeExtension", dispatch_xf86vidmode, xf86vidmode_errors, xf86vidmode_events, xf86vidmode_replies);
}
-static void xfixesQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_client_major_version;
int f_client_minor_version;
f_client_major_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_QueryVersion_client_major_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_QueryVersion_client_major_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_client_minor_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_QueryVersion_client_minor_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_QueryVersion_client_minor_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xfixesQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xfixesQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_major_version;
@@ -16809,33 +17202,33 @@ static void xfixesQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *off
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_major_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_QueryVersion_reply_major_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_QueryVersion_reply_major_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_minor_version = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_QueryVersion_reply_minor_version, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_QueryVersion_reply_minor_version, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(16);
}
-static void xfixesChangeSaveSet(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesChangeSaveSet(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_mode;
int f_target;
int f_map;
int f_window;
- f_mode = field8(tvb, offsetp, t, hf_x11_xfixes_ChangeSaveSet_mode, little_endian);
- f_target = field8(tvb, offsetp, t, hf_x11_xfixes_ChangeSaveSet_target, little_endian);
- f_map = field8(tvb, offsetp, t, hf_x11_xfixes_ChangeSaveSet_map, little_endian);
+ f_mode = field8(tvb, offsetp, t, hf_x11_xfixes_ChangeSaveSet_mode, byte_order);
+ f_target = field8(tvb, offsetp, t, hf_x11_xfixes_ChangeSaveSet_target, byte_order);
+ f_map = field8(tvb, offsetp, t, hf_x11_xfixes_ChangeSaveSet_map, byte_order);
UNUSED(1);
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_ChangeSaveSet_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_ChangeSaveSet_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xfixesSelectionNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xfixesSelectionNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_subtype;
int f_window;
@@ -16843,90 +17236,90 @@ static void xfixesSelectionNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, in
int f_selection;
int f_timestamp;
int f_selection_timestamp;
- f_subtype = field8(tvb, offsetp, t, hf_x11_xfixes_SelectionNotify_subtype, little_endian);
+ f_subtype = field8(tvb, offsetp, t, hf_x11_xfixes_SelectionNotify_subtype, byte_order);
CARD16(event_sequencenumber);
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_SelectionNotify_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_SelectionNotify_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_owner = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_SelectionNotify_owner, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_SelectionNotify_owner, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_selection = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_SelectionNotify_selection, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_SelectionNotify_selection, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_SelectionNotify_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_SelectionNotify_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_selection_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_SelectionNotify_selection_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_SelectionNotify_selection_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(8);
}
-static void xfixesSelectSelectionInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesSelectSelectionInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
int f_selection;
int f_event_mask;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_SelectSelectionInput_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_SelectSelectionInput_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_selection = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_SelectSelectionInput_selection, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_SelectSelectionInput_selection, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_event_mask = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xfixes_SelectSelectionInput_event_mask, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xfixes_SelectSelectionInput_event_mask, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xfixes_SelectSelectionInput_event_mask_mask_SetSelectionOwner, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xfixes_SelectSelectionInput_event_mask_mask_SelectionWindowDestroy, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xfixes_SelectSelectionInput_event_mask_mask_SelectionClientClose, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xfixes_SelectSelectionInput_event_mask_mask_SetSelectionOwner, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xfixes_SelectSelectionInput_event_mask_mask_SelectionWindowDestroy, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xfixes_SelectSelectionInput_event_mask_mask_SelectionClientClose, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
}
-static void xfixesCursorNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xfixesCursorNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_subtype;
int f_window;
int f_cursor_serial;
int f_timestamp;
int f_name;
- f_subtype = field8(tvb, offsetp, t, hf_x11_xfixes_CursorNotify_subtype, little_endian);
+ f_subtype = field8(tvb, offsetp, t, hf_x11_xfixes_CursorNotify_subtype, byte_order);
CARD16(event_sequencenumber);
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_CursorNotify_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_CursorNotify_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_cursor_serial = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_CursorNotify_cursor_serial, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_CursorNotify_cursor_serial, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_timestamp = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_CursorNotify_timestamp, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_CursorNotify_timestamp, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_name = field32(tvb, offsetp, t, hf_x11_xfixes_CursorNotify_name, little_endian);
+ f_name = field32(tvb, offsetp, t, hf_x11_xfixes_CursorNotify_name, byte_order);
UNUSED(12);
}
-static void xfixesSelectCursorInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesSelectCursorInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
int f_event_mask;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_SelectCursorInput_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_SelectCursorInput_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_event_mask = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xfixes_SelectCursorInput_event_mask, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xfixes_SelectCursorInput_event_mask, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xfixes_SelectCursorInput_event_mask_mask_DisplayCursor, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xfixes_SelectCursorInput_event_mask_mask_DisplayCursor, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
}
-static void xfixesGetCursorImage(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void xfixesGetCursorImage(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void xfixesGetCursorImage_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xfixesGetCursorImage_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_x;
@@ -16947,219 +17340,219 @@ static void xfixesGetCursorImage_Reply(tvbuff_t *tvb, packet_info *pinfo, int *o
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_GetCursorImage_reply_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_GetCursorImage_reply_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_GetCursorImage_reply_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_GetCursorImage_reply_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_GetCursorImage_reply_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_GetCursorImage_reply_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_GetCursorImage_reply_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_GetCursorImage_reply_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_xhot = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_GetCursorImage_reply_xhot, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_GetCursorImage_reply_xhot, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_yhot = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_GetCursorImage_reply_yhot, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_GetCursorImage_reply_yhot, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_cursor_serial = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_GetCursorImage_reply_cursor_serial, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_GetCursorImage_reply_cursor_serial, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(8);
- listOfCard32(tvb, offsetp, t, hf_x11_xfixes_GetCursorImage_reply_cursor_image, hf_x11_xfixes_GetCursorImage_reply_cursor_image_item, (f_width * f_height), little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xfixes_GetCursorImage_reply_cursor_image, hf_x11_xfixes_GetCursorImage_reply_cursor_image_item, (f_width * f_height), byte_order);
}
-static void xfixesCreateRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesCreateRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_region;
f_region = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_CreateRegion_region, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_CreateRegion_region, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_RECTANGLE(tvb, offsetp, t, little_endian, (length - 8) / 8);
+ struct_RECTANGLE(tvb, offsetp, t, byte_order, (length - 8) / 8);
}
-static void xfixesCreateRegionFromBitmap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesCreateRegionFromBitmap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_region;
int f_bitmap;
f_region = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_CreateRegionFromBitmap_region, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_CreateRegionFromBitmap_region, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_bitmap = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_CreateRegionFromBitmap_bitmap, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_CreateRegionFromBitmap_bitmap, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xfixesCreateRegionFromWindow(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesCreateRegionFromWindow(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_region;
int f_window;
int f_kind;
f_region = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_CreateRegionFromWindow_region, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_CreateRegionFromWindow_region, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_CreateRegionFromWindow_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_CreateRegionFromWindow_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_kind = field8(tvb, offsetp, t, hf_x11_xfixes_CreateRegionFromWindow_kind, little_endian);
+ f_kind = field8(tvb, offsetp, t, hf_x11_xfixes_CreateRegionFromWindow_kind, byte_order);
UNUSED(3);
}
-static void xfixesCreateRegionFromGC(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesCreateRegionFromGC(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_region;
int f_gc;
f_region = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_CreateRegionFromGC_region, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_CreateRegionFromGC_region, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_gc = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_CreateRegionFromGC_gc, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_CreateRegionFromGC_gc, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xfixesCreateRegionFromPicture(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesCreateRegionFromPicture(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_region;
int f_picture;
f_region = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_CreateRegionFromPicture_region, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_CreateRegionFromPicture_region, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_picture = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_CreateRegionFromPicture_picture, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_CreateRegionFromPicture_picture, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xfixesDestroyRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesDestroyRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_region;
f_region = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_DestroyRegion_region, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_DestroyRegion_region, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xfixesSetRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesSetRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_region;
f_region = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_SetRegion_region, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_SetRegion_region, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_RECTANGLE(tvb, offsetp, t, little_endian, (length - 8) / 8);
+ struct_RECTANGLE(tvb, offsetp, t, byte_order, (length - 8) / 8);
}
-static void xfixesCopyRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesCopyRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_source;
int f_destination;
f_source = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_CopyRegion_source, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_CopyRegion_source, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_destination = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_CopyRegion_destination, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_CopyRegion_destination, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xfixesUnionRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesUnionRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_source1;
int f_source2;
int f_destination;
f_source1 = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_UnionRegion_source1, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_UnionRegion_source1, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_source2 = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_UnionRegion_source2, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_UnionRegion_source2, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_destination = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_UnionRegion_destination, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_UnionRegion_destination, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xfixesIntersectRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesIntersectRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_source1;
int f_source2;
int f_destination;
f_source1 = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_IntersectRegion_source1, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_IntersectRegion_source1, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_source2 = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_IntersectRegion_source2, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_IntersectRegion_source2, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_destination = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_IntersectRegion_destination, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_IntersectRegion_destination, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xfixesSubtractRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesSubtractRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_source1;
int f_source2;
int f_destination;
f_source1 = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_SubtractRegion_source1, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_SubtractRegion_source1, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_source2 = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_SubtractRegion_source2, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_SubtractRegion_source2, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_destination = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_SubtractRegion_destination, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_SubtractRegion_destination, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xfixesInvertRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesInvertRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_source;
int f_destination;
f_source = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_InvertRegion_source, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_InvertRegion_source, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_RECTANGLE(tvb, offsetp, t, little_endian, 1);
+ struct_RECTANGLE(tvb, offsetp, t, byte_order, 1);
f_destination = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_InvertRegion_destination, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_InvertRegion_destination, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xfixesTranslateRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesTranslateRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_region;
int f_dx;
int f_dy;
f_region = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_TranslateRegion_region, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_TranslateRegion_region, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_dx = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_TranslateRegion_dx, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_TranslateRegion_dx, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_dy = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_TranslateRegion_dy, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_TranslateRegion_dy, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xfixesRegionExtents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesRegionExtents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_source;
int f_destination;
f_source = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_RegionExtents_source, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_RegionExtents_source, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_destination = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_RegionExtents_destination, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_RegionExtents_destination, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xfixesFetchRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesFetchRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_region;
f_region = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_FetchRegion_region, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_FetchRegion_region, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xfixesFetchRegion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xfixesFetchRegion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
@@ -17173,32 +17566,32 @@ static void xfixesFetchRegion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offs
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_RECTANGLE(tvb, offsetp, t, little_endian, 1);
+ struct_RECTANGLE(tvb, offsetp, t, byte_order, 1);
UNUSED(16);
- struct_RECTANGLE(tvb, offsetp, t, little_endian, (f_length / 2));
+ struct_RECTANGLE(tvb, offsetp, t, byte_order, (f_length / 2));
}
-static void xfixesSetGCClipRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesSetGCClipRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_gc;
int f_region;
int f_x_origin;
int f_y_origin;
f_gc = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_SetGCClipRegion_gc, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_SetGCClipRegion_gc, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_region = field32(tvb, offsetp, t, hf_x11_xfixes_SetGCClipRegion_region, little_endian);
+ f_region = field32(tvb, offsetp, t, hf_x11_xfixes_SetGCClipRegion_region, byte_order);
f_x_origin = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_SetGCClipRegion_x_origin, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_SetGCClipRegion_x_origin, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_y_origin = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_SetGCClipRegion_y_origin, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_SetGCClipRegion_y_origin, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xfixesSetWindowShapeRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesSetWindowShapeRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_dest;
int f_dest_kind;
@@ -17206,60 +17599,60 @@ static void xfixesSetWindowShapeRegion(tvbuff_t *tvb, packet_info *pinfo _U_, in
int f_y_offset;
int f_region;
f_dest = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_SetWindowShapeRegion_dest, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_SetWindowShapeRegion_dest, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_dest_kind = field8(tvb, offsetp, t, hf_x11_xfixes_SetWindowShapeRegion_dest_kind, little_endian);
+ f_dest_kind = field8(tvb, offsetp, t, hf_x11_xfixes_SetWindowShapeRegion_dest_kind, byte_order);
UNUSED(3);
f_x_offset = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_SetWindowShapeRegion_x_offset, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_SetWindowShapeRegion_x_offset, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_y_offset = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_SetWindowShapeRegion_y_offset, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_SetWindowShapeRegion_y_offset, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- f_region = field32(tvb, offsetp, t, hf_x11_xfixes_SetWindowShapeRegion_region, little_endian);
+ f_region = field32(tvb, offsetp, t, hf_x11_xfixes_SetWindowShapeRegion_region, byte_order);
}
-static void xfixesSetPictureClipRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesSetPictureClipRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_picture;
int f_region;
int f_x_origin;
int f_y_origin;
f_picture = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_SetPictureClipRegion_picture, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_SetPictureClipRegion_picture, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_region = field32(tvb, offsetp, t, hf_x11_xfixes_SetPictureClipRegion_region, little_endian);
+ f_region = field32(tvb, offsetp, t, hf_x11_xfixes_SetPictureClipRegion_region, byte_order);
f_x_origin = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_SetPictureClipRegion_x_origin, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_SetPictureClipRegion_x_origin, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_y_origin = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_SetPictureClipRegion_y_origin, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_SetPictureClipRegion_y_origin, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xfixesSetCursorName(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesSetCursorName(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_cursor;
int f_nbytes;
f_cursor = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_SetCursorName_cursor, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_SetCursorName_cursor, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_nbytes = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_SetCursorName_nbytes, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_SetCursorName_nbytes, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
- listOfByte(tvb, offsetp, t, hf_x11_xfixes_SetCursorName_name, f_nbytes, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xfixes_SetCursorName_name, f_nbytes, byte_order);
length -= f_nbytes * 1;
}
-static void xfixesGetCursorName(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesGetCursorName(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_cursor;
f_cursor = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_GetCursorName_cursor, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_GetCursorName_cursor, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xfixesGetCursorName_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xfixesGetCursorName_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_atom;
@@ -17275,20 +17668,20 @@ static void xfixesGetCursorName_Reply(tvbuff_t *tvb, packet_info *pinfo, int *of
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_atom = field32(tvb, offsetp, t, hf_x11_xfixes_GetCursorName_reply_atom, little_endian);
+ f_atom = field32(tvb, offsetp, t, hf_x11_xfixes_GetCursorName_reply_atom, byte_order);
f_nbytes = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_GetCursorName_reply_nbytes, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_GetCursorName_reply_nbytes, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(18);
- listOfByte(tvb, offsetp, t, hf_x11_xfixes_GetCursorName_reply_name, f_nbytes, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xfixes_GetCursorName_reply_name, f_nbytes, byte_order);
}
-static void xfixesGetCursorImageAndName(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void xfixesGetCursorImageAndName(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void xfixesGetCursorImageAndName_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xfixesGetCursorImageAndName_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_x;
@@ -17311,66 +17704,66 @@ static void xfixesGetCursorImageAndName_Reply(tvbuff_t *tvb, packet_info *pinfo,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_GetCursorImageAndName_reply_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_GetCursorImageAndName_reply_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_GetCursorImageAndName_reply_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_GetCursorImageAndName_reply_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_GetCursorImageAndName_reply_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_GetCursorImageAndName_reply_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_GetCursorImageAndName_reply_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_GetCursorImageAndName_reply_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_xhot = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_GetCursorImageAndName_reply_xhot, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_GetCursorImageAndName_reply_xhot, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_yhot = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_GetCursorImageAndName_reply_yhot, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_GetCursorImageAndName_reply_yhot, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_cursor_serial = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_GetCursorImageAndName_reply_cursor_serial, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_GetCursorImageAndName_reply_cursor_serial, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_cursor_atom = field32(tvb, offsetp, t, hf_x11_xfixes_GetCursorImageAndName_reply_cursor_atom, little_endian);
+ f_cursor_atom = field32(tvb, offsetp, t, hf_x11_xfixes_GetCursorImageAndName_reply_cursor_atom, byte_order);
f_nbytes = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_GetCursorImageAndName_reply_nbytes, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_GetCursorImageAndName_reply_nbytes, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
- listOfByte(tvb, offsetp, t, hf_x11_xfixes_GetCursorImageAndName_reply_name, f_nbytes, little_endian);
- listOfCard32(tvb, offsetp, t, hf_x11_xfixes_GetCursorImageAndName_reply_cursor_image, hf_x11_xfixes_GetCursorImageAndName_reply_cursor_image_item, (f_width * f_height), little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xfixes_GetCursorImageAndName_reply_name, f_nbytes, byte_order);
+ listOfCard32(tvb, offsetp, t, hf_x11_xfixes_GetCursorImageAndName_reply_cursor_image, hf_x11_xfixes_GetCursorImageAndName_reply_cursor_image_item, (f_width * f_height), byte_order);
}
-static void xfixesChangeCursor(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesChangeCursor(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_source;
int f_destination;
f_source = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_ChangeCursor_source, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_ChangeCursor_source, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_destination = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_ChangeCursor_destination, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_ChangeCursor_destination, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xfixesChangeCursorByName(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesChangeCursorByName(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_src;
int f_nbytes;
f_src = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_ChangeCursorByName_src, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_ChangeCursorByName_src, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_nbytes = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_ChangeCursorByName_nbytes, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_ChangeCursorByName_nbytes, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
- listOfByte(tvb, offsetp, t, hf_x11_xfixes_ChangeCursorByName_name, f_nbytes, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xfixes_ChangeCursorByName_name, f_nbytes, byte_order);
length -= f_nbytes * 1;
}
-static void xfixesExpandRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesExpandRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_source;
int f_destination;
@@ -17379,38 +17772,38 @@ static void xfixesExpandRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offse
int f_top;
int f_bottom;
f_source = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_ExpandRegion_source, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_ExpandRegion_source, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_destination = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_ExpandRegion_destination, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_ExpandRegion_destination, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_left = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_ExpandRegion_left, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_ExpandRegion_left, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_right = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_ExpandRegion_right, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_ExpandRegion_right, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_top = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_ExpandRegion_top, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_ExpandRegion_top, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_bottom = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_ExpandRegion_bottom, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_ExpandRegion_bottom, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xfixesHideCursor(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesHideCursor(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_HideCursor_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_HideCursor_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xfixesShowCursor(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xfixesShowCursor(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xfixes_ShowCursor_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xfixes_ShowCursor_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
static const value_string xfixes_extension_minor[] = {
@@ -17461,7 +17854,7 @@ static x11_reply_info xfixes_replies[] = {
{ 0, NULL }
};
-static void dispatch_xfixes(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_xfixes(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(xfixes_extension_minor);
@@ -17472,97 +17865,97 @@ static void dispatch_xfixes(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, pro
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- xfixesQueryVersion(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 1:
- xfixesChangeSaveSet(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesChangeSaveSet(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 2:
- xfixesSelectSelectionInput(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesSelectSelectionInput(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 3:
- xfixesSelectCursorInput(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesSelectCursorInput(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 4:
- xfixesGetCursorImage(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesGetCursorImage(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 5:
- xfixesCreateRegion(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesCreateRegion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 6:
- xfixesCreateRegionFromBitmap(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesCreateRegionFromBitmap(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 7:
- xfixesCreateRegionFromWindow(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesCreateRegionFromWindow(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 8:
- xfixesCreateRegionFromGC(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesCreateRegionFromGC(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 9:
- xfixesCreateRegionFromPicture(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesCreateRegionFromPicture(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 10:
- xfixesDestroyRegion(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesDestroyRegion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 11:
- xfixesSetRegion(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesSetRegion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 12:
- xfixesCopyRegion(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesCopyRegion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 13:
- xfixesUnionRegion(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesUnionRegion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 14:
- xfixesIntersectRegion(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesIntersectRegion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 15:
- xfixesSubtractRegion(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesSubtractRegion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 16:
- xfixesInvertRegion(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesInvertRegion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 17:
- xfixesTranslateRegion(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesTranslateRegion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 18:
- xfixesRegionExtents(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesRegionExtents(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 19:
- xfixesFetchRegion(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesFetchRegion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 20:
- xfixesSetGCClipRegion(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesSetGCClipRegion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 21:
- xfixesSetWindowShapeRegion(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesSetWindowShapeRegion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 22:
- xfixesSetPictureClipRegion(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesSetPictureClipRegion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 23:
- xfixesSetCursorName(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesSetCursorName(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 24:
- xfixesGetCursorName(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesGetCursorName(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 25:
- xfixesGetCursorImageAndName(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesGetCursorImageAndName(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 26:
- xfixesChangeCursor(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesChangeCursor(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 27:
- xfixesChangeCursorByName(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesChangeCursorByName(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 28:
- xfixesExpandRegion(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesExpandRegion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 29:
- xfixesHideCursor(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesHideCursor(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 30:
- xfixesShowCursor(tvb, pinfo, offsetp, t, little_endian, length);
+ xfixesShowCursor(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -17574,7 +17967,7 @@ static void register_xfixes(void)
set_handler("XFIXES", dispatch_xfixes, xfixes_errors, xfixes_events, xfixes_replies);
}
-static void struct_ScreenInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_ScreenInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -17585,35 +17978,35 @@ static void struct_ScreenInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_width;
int f_height;
- item = proto_tree_add_item(root, hf_x11_struct_ScreenInfo, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_ScreenInfo, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_x_org = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ScreenInfo_x_org, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ScreenInfo_x_org, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_y_org = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ScreenInfo_y_org, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ScreenInfo_y_org, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ScreenInfo_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ScreenInfo_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ScreenInfo_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ScreenInfo_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
}
-static void xineramaQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xineramaQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_major;
int f_minor;
f_major = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinerama_QueryVersion_major, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinerama_QueryVersion_major, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_minor = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinerama_QueryVersion_minor, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinerama_QueryVersion_minor, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void xineramaQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xineramaQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_major;
@@ -17629,24 +18022,24 @@ static void xineramaQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *o
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_major = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinerama_QueryVersion_reply_major, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xinerama_QueryVersion_reply_major, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_minor = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinerama_QueryVersion_reply_minor, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xinerama_QueryVersion_reply_minor, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xineramaGetState(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xineramaGetState(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinerama_GetState_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinerama_GetState_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xineramaGetState_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xineramaGetState_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_state;
@@ -17656,7 +18049,7 @@ static void xineramaGetState_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offse
REPLY(reply);
f_state = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinerama_GetState_reply_state, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinerama_GetState_reply_state, tvb, *offsetp, 1, ENC_NA);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -17664,21 +18057,21 @@ static void xineramaGetState_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offse
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinerama_GetState_reply_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinerama_GetState_reply_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xineramaGetScreenCount(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xineramaGetScreenCount(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinerama_GetScreenCount_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinerama_GetScreenCount_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xineramaGetScreenCount_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xineramaGetScreenCount_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_screen_count;
@@ -17688,7 +18081,7 @@ static void xineramaGetScreenCount_Reply(tvbuff_t *tvb, packet_info *pinfo, int
REPLY(reply);
f_screen_count = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinerama_GetScreenCount_reply_screen_count, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinerama_GetScreenCount_reply_screen_count, tvb, *offsetp, 1, ENC_NA);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -17696,25 +18089,25 @@ static void xineramaGetScreenCount_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinerama_GetScreenCount_reply_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinerama_GetScreenCount_reply_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xineramaGetScreenSize(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xineramaGetScreenSize(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
int f_screen;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinerama_GetScreenSize_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinerama_GetScreenSize_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinerama_GetScreenSize_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinerama_GetScreenSize_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xineramaGetScreenSize_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xineramaGetScreenSize_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_width;
@@ -17732,26 +18125,26 @@ static void xineramaGetScreenSize_Reply(tvbuff_t *tvb, packet_info *pinfo, int *
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_width = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinerama_GetScreenSize_reply_width, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinerama_GetScreenSize_reply_width, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_height = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinerama_GetScreenSize_reply_height, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinerama_GetScreenSize_reply_height, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinerama_GetScreenSize_reply_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinerama_GetScreenSize_reply_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_screen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinerama_GetScreenSize_reply_screen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinerama_GetScreenSize_reply_screen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xineramaIsActive(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void xineramaIsActive(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void xineramaIsActive_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xineramaIsActive_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_state;
@@ -17766,17 +18159,17 @@ static void xineramaIsActive_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offse
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_state = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinerama_IsActive_reply_state, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinerama_IsActive_reply_state, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xineramaQueryScreens(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void xineramaQueryScreens(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void xineramaQueryScreens_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xineramaQueryScreens_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_number;
@@ -17791,13 +18184,13 @@ static void xineramaQueryScreens_Reply(tvbuff_t *tvb, packet_info *pinfo, int *o
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_number = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinerama_QueryScreens_reply_number, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinerama_QueryScreens_reply_number, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- struct_ScreenInfo(tvb, offsetp, t, little_endian, f_number);
+ struct_ScreenInfo(tvb, offsetp, t, byte_order, f_number);
}
static const value_string xinerama_extension_minor[] = {
{ 0, "QueryVersion" },
@@ -17821,7 +18214,7 @@ static x11_reply_info xinerama_replies[] = {
{ 0, NULL }
};
-static void dispatch_xinerama(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_xinerama(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(xinerama_extension_minor);
@@ -17832,22 +18225,22 @@ static void dispatch_xinerama(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, p
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- xineramaQueryVersion(tvb, pinfo, offsetp, t, little_endian, length);
+ xineramaQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 1:
- xineramaGetState(tvb, pinfo, offsetp, t, little_endian, length);
+ xineramaGetState(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 2:
- xineramaGetScreenCount(tvb, pinfo, offsetp, t, little_endian, length);
+ xineramaGetScreenCount(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 3:
- xineramaGetScreenSize(tvb, pinfo, offsetp, t, little_endian, length);
+ xineramaGetScreenSize(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 4:
- xineramaIsActive(tvb, pinfo, offsetp, t, little_endian, length);
+ xineramaIsActive(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 5:
- xineramaQueryScreens(tvb, pinfo, offsetp, t, little_endian, length);
+ xineramaQueryScreens(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -17859,17 +18252,17 @@ static void register_xinerama(void)
set_handler("XINERAMA", dispatch_xinerama, xinerama_errors, xinerama_events, xinerama_replies);
}
-static void xinputGetExtensionVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputGetExtensionVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_name_len;
f_name_len = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetExtensionVersion_name_len, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetExtensionVersion_name_len, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
- listOfByte(tvb, offsetp, t, hf_x11_xinput_GetExtensionVersion_name, f_name_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xinput_GetExtensionVersion_name, f_name_len, byte_order);
length -= f_name_len * 1;
}
-static void xinputGetExtensionVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xinputGetExtensionVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_server_major;
@@ -17886,21 +18279,21 @@ static void xinputGetExtensionVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, i
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_server_major = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetExtensionVersion_reply_server_major, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetExtensionVersion_reply_server_major, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_server_minor = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetExtensionVersion_reply_server_minor, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetExtensionVersion_reply_server_minor, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_present = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetExtensionVersion_reply_present, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetExtensionVersion_reply_present, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(19);
}
-static void struct_DeviceInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_DeviceInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -17911,26 +18304,26 @@ static void struct_DeviceInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_num_class_info;
int f_device_use;
- item = proto_tree_add_item(root, hf_x11_struct_DeviceInfo, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_DeviceInfo, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_device_type = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_DeviceInfo_device_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_DeviceInfo_device_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_DeviceInfo_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_DeviceInfo_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_num_class_info = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_DeviceInfo_num_class_info, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_DeviceInfo_num_class_info, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- f_device_use = field8(tvb, offsetp, t, hf_x11_struct_DeviceInfo_device_use, little_endian);
+ f_device_use = field8(tvb, offsetp, t, hf_x11_struct_DeviceInfo_device_use, byte_order);
UNUSED(1);
}
}
-static void xinputListInputDevices(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void xinputListInputDevices(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void xinputListInputDevices_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xinputListInputDevices_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_devices_len;
@@ -17945,16 +18338,16 @@ static void xinputListInputDevices_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_devices_len = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_ListInputDevices_reply_devices_len, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_ListInputDevices_reply_devices_len, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(23);
- struct_DeviceInfo(tvb, offsetp, t, little_endian, f_devices_len);
+ struct_DeviceInfo(tvb, offsetp, t, byte_order, f_devices_len);
}
-static void struct_InputClassInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_InputClassInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -17963,24 +18356,24 @@ static void struct_InputClassInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root,
int f_class_id;
int f_event_type_base;
- item = proto_tree_add_item(root, hf_x11_struct_InputClassInfo, tvb, *offsetp, 2, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_InputClassInfo, tvb, *offsetp, 2, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- f_class_id = field8(tvb, offsetp, t, hf_x11_struct_InputClassInfo_class_id, little_endian);
+ f_class_id = field8(tvb, offsetp, t, hf_x11_struct_InputClassInfo_class_id, byte_order);
f_event_type_base = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_InputClassInfo_event_type_base, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_InputClassInfo_event_type_base, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
}
-static void xinputOpenDevice(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputOpenDevice(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_device_id;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_OpenDevice_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_OpenDevice_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
}
-static void xinputOpenDevice_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xinputOpenDevice_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_num_classes;
@@ -17995,35 +18388,35 @@ static void xinputOpenDevice_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offse
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_classes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_OpenDevice_reply_num_classes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_OpenDevice_reply_num_classes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(23);
- struct_InputClassInfo(tvb, offsetp, t, little_endian, f_num_classes);
+ struct_InputClassInfo(tvb, offsetp, t, byte_order, f_num_classes);
}
-static void xinputCloseDevice(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputCloseDevice(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_device_id;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_CloseDevice_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_CloseDevice_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
}
-static void xinputSetDeviceMode(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputSetDeviceMode(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_device_id;
int f_mode;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_SetDeviceMode_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_SetDeviceMode_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- f_mode = field8(tvb, offsetp, t, hf_x11_xinput_SetDeviceMode_mode, little_endian);
+ f_mode = field8(tvb, offsetp, t, hf_x11_xinput_SetDeviceMode_mode, byte_order);
UNUSED(2);
}
-static void xinputSetDeviceMode_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xinputSetDeviceMode_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_status;
@@ -18038,35 +18431,35 @@ static void xinputSetDeviceMode_Reply(tvbuff_t *tvb, packet_info *pinfo, int *of
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_status = field8(tvb, offsetp, t, hf_x11_xinput_SetDeviceMode_reply_status, little_endian);
+ f_status = field8(tvb, offsetp, t, hf_x11_xinput_SetDeviceMode_reply_status, byte_order);
UNUSED(23);
}
-static void xinputSelectExtensionEvent(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputSelectExtensionEvent(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
int f_num_classes;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_SelectExtensionEvent_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_SelectExtensionEvent_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_classes = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_SelectExtensionEvent_num_classes, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_SelectExtensionEvent_num_classes, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
- listOfCard32(tvb, offsetp, t, hf_x11_xinput_SelectExtensionEvent_classes, hf_x11_xinput_SelectExtensionEvent_classes_item, f_num_classes, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xinput_SelectExtensionEvent_classes, hf_x11_xinput_SelectExtensionEvent_classes_item, f_num_classes, byte_order);
length -= f_num_classes * 4;
}
-static void xinputGetSelectedExtensionEvents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputGetSelectedExtensionEvents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetSelectedExtensionEvents_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetSelectedExtensionEvents_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xinputGetSelectedExtensionEvents_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xinputGetSelectedExtensionEvents_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_num_this_classes;
@@ -18082,44 +18475,44 @@ static void xinputGetSelectedExtensionEvents_Reply(tvbuff_t *tvb, packet_info *p
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_this_classes = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetSelectedExtensionEvents_reply_num_this_classes, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetSelectedExtensionEvents_reply_num_this_classes, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_num_all_classes = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetSelectedExtensionEvents_reply_num_all_classes, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetSelectedExtensionEvents_reply_num_all_classes, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(20);
- listOfCard32(tvb, offsetp, t, hf_x11_xinput_GetSelectedExtensionEvents_reply_this_classes, hf_x11_xinput_GetSelectedExtensionEvents_reply_this_classes_item, f_num_this_classes, little_endian);
- listOfCard32(tvb, offsetp, t, hf_x11_xinput_GetSelectedExtensionEvents_reply_all_classes, hf_x11_xinput_GetSelectedExtensionEvents_reply_all_classes_item, f_num_all_classes, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xinput_GetSelectedExtensionEvents_reply_this_classes, hf_x11_xinput_GetSelectedExtensionEvents_reply_this_classes_item, f_num_this_classes, byte_order);
+ listOfCard32(tvb, offsetp, t, hf_x11_xinput_GetSelectedExtensionEvents_reply_all_classes, hf_x11_xinput_GetSelectedExtensionEvents_reply_all_classes_item, f_num_all_classes, byte_order);
}
-static void xinputChangeDeviceDontPropagateList(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputChangeDeviceDontPropagateList(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
int f_num_classes;
int f_mode;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceDontPropagateList_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceDontPropagateList_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_classes = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceDontPropagateList_num_classes, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceDontPropagateList_num_classes, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- f_mode = field8(tvb, offsetp, t, hf_x11_xinput_ChangeDeviceDontPropagateList_mode, little_endian);
+ f_mode = field8(tvb, offsetp, t, hf_x11_xinput_ChangeDeviceDontPropagateList_mode, byte_order);
UNUSED(1);
- listOfCard32(tvb, offsetp, t, hf_x11_xinput_ChangeDeviceDontPropagateList_classes, hf_x11_xinput_ChangeDeviceDontPropagateList_classes_item, f_num_classes, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xinput_ChangeDeviceDontPropagateList_classes, hf_x11_xinput_ChangeDeviceDontPropagateList_classes_item, f_num_classes, byte_order);
length -= f_num_classes * 4;
}
-static void xinputGetDeviceDontPropagateList(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputGetDeviceDontPropagateList(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetDeviceDontPropagateList_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetDeviceDontPropagateList_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xinputGetDeviceDontPropagateList_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xinputGetDeviceDontPropagateList_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_num_classes;
@@ -18134,29 +18527,29 @@ static void xinputGetDeviceDontPropagateList_Reply(tvbuff_t *tvb, packet_info *p
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_classes = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetDeviceDontPropagateList_reply_num_classes, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetDeviceDontPropagateList_reply_num_classes, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(22);
- listOfCard32(tvb, offsetp, t, hf_x11_xinput_GetDeviceDontPropagateList_reply_classes, hf_x11_xinput_GetDeviceDontPropagateList_reply_classes_item, f_num_classes, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xinput_GetDeviceDontPropagateList_reply_classes, hf_x11_xinput_GetDeviceDontPropagateList_reply_classes_item, f_num_classes, byte_order);
}
-static void xinputGetDeviceMotionEvents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputGetDeviceMotionEvents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_start;
int f_stop;
int f_device_id;
f_start = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetDeviceMotionEvents_start, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetDeviceMotionEvents_start, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_stop = field32(tvb, offsetp, t, hf_x11_xinput_GetDeviceMotionEvents_stop, little_endian);
+ f_stop = field32(tvb, offsetp, t, hf_x11_xinput_GetDeviceMotionEvents_stop, byte_order);
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetDeviceMotionEvents_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetDeviceMotionEvents_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void xinputGetDeviceMotionEvents_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xinputGetDeviceMotionEvents_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_num_coords;
@@ -18173,27 +18566,27 @@ static void xinputGetDeviceMotionEvents_Reply(tvbuff_t *tvb, packet_info *pinfo,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_coords = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetDeviceMotionEvents_reply_num_coords, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetDeviceMotionEvents_reply_num_coords, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_axes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetDeviceMotionEvents_reply_num_axes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetDeviceMotionEvents_reply_num_axes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- f_device_mode = field8(tvb, offsetp, t, hf_x11_xinput_GetDeviceMotionEvents_reply_device_mode, little_endian);
+ f_device_mode = field8(tvb, offsetp, t, hf_x11_xinput_GetDeviceMotionEvents_reply_device_mode, byte_order);
UNUSED(18);
}
-static void xinputChangeKeyboardDevice(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputChangeKeyboardDevice(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_device_id;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_ChangeKeyboardDevice_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_ChangeKeyboardDevice_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
}
-static void xinputChangeKeyboardDevice_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xinputChangeKeyboardDevice_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_status;
@@ -18208,29 +18601,29 @@ static void xinputChangeKeyboardDevice_Reply(tvbuff_t *tvb, packet_info *pinfo,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_status = field8(tvb, offsetp, t, hf_x11_xinput_ChangeKeyboardDevice_reply_status, little_endian);
+ f_status = field8(tvb, offsetp, t, hf_x11_xinput_ChangeKeyboardDevice_reply_status, byte_order);
UNUSED(23);
}
-static void xinputChangePointerDevice(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputChangePointerDevice(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_x_axis;
int f_y_axis;
int f_device_id;
f_x_axis = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_ChangePointerDevice_x_axis, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_ChangePointerDevice_x_axis, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_y_axis = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_ChangePointerDevice_y_axis, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_ChangePointerDevice_y_axis, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_ChangePointerDevice_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_ChangePointerDevice_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
}
-static void xinputChangePointerDevice_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xinputChangePointerDevice_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_status;
@@ -18245,13 +18638,13 @@ static void xinputChangePointerDevice_Reply(tvbuff_t *tvb, packet_info *pinfo, i
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_status = field8(tvb, offsetp, t, hf_x11_xinput_ChangePointerDevice_reply_status, little_endian);
+ f_status = field8(tvb, offsetp, t, hf_x11_xinput_ChangePointerDevice_reply_status, byte_order);
UNUSED(23);
}
-static void xinputGrabDevice(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputGrabDevice(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_grab_window;
int f_time;
@@ -18261,25 +18654,25 @@ static void xinputGrabDevice(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp
int f_owner_events;
int f_device_id;
f_grab_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GrabDevice_grab_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GrabDevice_grab_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_time = field32(tvb, offsetp, t, hf_x11_xinput_GrabDevice_time, little_endian);
+ f_time = field32(tvb, offsetp, t, hf_x11_xinput_GrabDevice_time, byte_order);
f_num_classes = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GrabDevice_num_classes, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GrabDevice_num_classes, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- f_this_device_mode = field8(tvb, offsetp, t, hf_x11_xinput_GrabDevice_this_device_mode, little_endian);
- f_other_device_mode = field8(tvb, offsetp, t, hf_x11_xinput_GrabDevice_other_device_mode, little_endian);
+ f_this_device_mode = field8(tvb, offsetp, t, hf_x11_xinput_GrabDevice_this_device_mode, byte_order);
+ f_other_device_mode = field8(tvb, offsetp, t, hf_x11_xinput_GrabDevice_other_device_mode, byte_order);
f_owner_events = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GrabDevice_owner_events, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GrabDevice_owner_events, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GrabDevice_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GrabDevice_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- listOfCard32(tvb, offsetp, t, hf_x11_xinput_GrabDevice_classes, hf_x11_xinput_GrabDevice_classes_item, f_num_classes, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xinput_GrabDevice_classes, hf_x11_xinput_GrabDevice_classes_item, f_num_classes, byte_order);
length -= f_num_classes * 4;
}
-static void xinputGrabDevice_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xinputGrabDevice_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_status;
@@ -18294,23 +18687,23 @@ static void xinputGrabDevice_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offse
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_status = field8(tvb, offsetp, t, hf_x11_xinput_GrabDevice_reply_status, little_endian);
+ f_status = field8(tvb, offsetp, t, hf_x11_xinput_GrabDevice_reply_status, byte_order);
UNUSED(23);
}
-static void xinputUngrabDevice(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputUngrabDevice(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_time;
int f_device_id;
- f_time = field32(tvb, offsetp, t, hf_x11_xinput_UngrabDevice_time, little_endian);
+ f_time = field32(tvb, offsetp, t, hf_x11_xinput_UngrabDevice_time, byte_order);
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_UngrabDevice_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_UngrabDevice_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void xinputGrabDeviceKey(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputGrabDeviceKey(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_grab_window;
int f_num_classes;
@@ -18322,44 +18715,44 @@ static void xinputGrabDeviceKey(tvbuff_t *tvb, packet_info *pinfo _U_, int *offs
int f_other_device_mode;
int f_owner_events;
f_grab_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GrabDeviceKey_grab_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GrabDeviceKey_grab_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_classes = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GrabDeviceKey_num_classes, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GrabDeviceKey_num_classes, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_modifiers = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xinput_GrabDeviceKey_modifiers, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xinput_GrabDeviceKey_modifiers, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceKey_modifiers_mask_Shift, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceKey_modifiers_mask_Lock, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceKey_modifiers_mask_Control, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceKey_modifiers_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceKey_modifiers_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceKey_modifiers_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceKey_modifiers_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceKey_modifiers_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceKey_modifiers_mask_Any, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceKey_modifiers_mask_Shift, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceKey_modifiers_mask_Lock, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceKey_modifiers_mask_Control, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceKey_modifiers_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceKey_modifiers_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceKey_modifiers_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceKey_modifiers_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceKey_modifiers_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceKey_modifiers_mask_Any, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_modifier_device = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GrabDeviceKey_modifier_device, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GrabDeviceKey_modifier_device, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_grabbed_device = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GrabDeviceKey_grabbed_device, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GrabDeviceKey_grabbed_device, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- f_key = field8(tvb, offsetp, t, hf_x11_xinput_GrabDeviceKey_key, little_endian);
- f_this_device_mode = field8(tvb, offsetp, t, hf_x11_xinput_GrabDeviceKey_this_device_mode, little_endian);
- f_other_device_mode = field8(tvb, offsetp, t, hf_x11_xinput_GrabDeviceKey_other_device_mode, little_endian);
+ f_key = field8(tvb, offsetp, t, hf_x11_xinput_GrabDeviceKey_key, byte_order);
+ f_this_device_mode = field8(tvb, offsetp, t, hf_x11_xinput_GrabDeviceKey_this_device_mode, byte_order);
+ f_other_device_mode = field8(tvb, offsetp, t, hf_x11_xinput_GrabDeviceKey_other_device_mode, byte_order);
f_owner_events = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GrabDeviceKey_owner_events, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GrabDeviceKey_owner_events, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- listOfCard32(tvb, offsetp, t, hf_x11_xinput_GrabDeviceKey_classes, hf_x11_xinput_GrabDeviceKey_classes_item, f_num_classes, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xinput_GrabDeviceKey_classes, hf_x11_xinput_GrabDeviceKey_classes_item, f_num_classes, byte_order);
length -= f_num_classes * 4;
}
-static void xinputUngrabDeviceKey(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputUngrabDeviceKey(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_grabWindow;
int f_modifiers;
@@ -18367,33 +18760,33 @@ static void xinputUngrabDeviceKey(tvbuff_t *tvb, packet_info *pinfo _U_, int *of
int f_key;
int f_grabbed_device;
f_grabWindow = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_UngrabDeviceKey_grabWindow, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_UngrabDeviceKey_grabWindow, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_modifiers = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xinput_UngrabDeviceKey_modifiers, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xinput_UngrabDeviceKey_modifiers, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceKey_modifiers_mask_Shift, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceKey_modifiers_mask_Lock, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceKey_modifiers_mask_Control, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceKey_modifiers_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceKey_modifiers_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceKey_modifiers_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceKey_modifiers_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceKey_modifiers_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceKey_modifiers_mask_Any, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceKey_modifiers_mask_Shift, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceKey_modifiers_mask_Lock, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceKey_modifiers_mask_Control, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceKey_modifiers_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceKey_modifiers_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceKey_modifiers_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceKey_modifiers_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceKey_modifiers_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceKey_modifiers_mask_Any, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_modifier_device = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_UngrabDeviceKey_modifier_device, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_UngrabDeviceKey_modifier_device, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- f_key = field8(tvb, offsetp, t, hf_x11_xinput_UngrabDeviceKey_key, little_endian);
+ f_key = field8(tvb, offsetp, t, hf_x11_xinput_UngrabDeviceKey_key, byte_order);
f_grabbed_device = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_UngrabDeviceKey_grabbed_device, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_UngrabDeviceKey_grabbed_device, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void xinputGrabDeviceButton(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputGrabDeviceButton(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_grab_window;
int f_grabbed_device;
@@ -18405,44 +18798,44 @@ static void xinputGrabDeviceButton(tvbuff_t *tvb, packet_info *pinfo _U_, int *o
int f_button;
int f_owner_events;
f_grab_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GrabDeviceButton_grab_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GrabDeviceButton_grab_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_grabbed_device = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GrabDeviceButton_grabbed_device, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GrabDeviceButton_grabbed_device, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_modifier_device = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GrabDeviceButton_modifier_device, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GrabDeviceButton_modifier_device, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_num_classes = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GrabDeviceButton_num_classes, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GrabDeviceButton_num_classes, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_modifiers = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xinput_GrabDeviceButton_modifiers, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xinput_GrabDeviceButton_modifiers, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceButton_modifiers_mask_Shift, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceButton_modifiers_mask_Lock, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceButton_modifiers_mask_Control, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceButton_modifiers_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceButton_modifiers_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceButton_modifiers_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceButton_modifiers_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceButton_modifiers_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceButton_modifiers_mask_Any, tvb, *offsetp, 2, little_endian);
- }
- *offsetp += 2;
- f_this_device_mode = field8(tvb, offsetp, t, hf_x11_xinput_GrabDeviceButton_this_device_mode, little_endian);
- f_other_device_mode = field8(tvb, offsetp, t, hf_x11_xinput_GrabDeviceButton_other_device_mode, little_endian);
- f_button = field8(tvb, offsetp, t, hf_x11_xinput_GrabDeviceButton_button, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceButton_modifiers_mask_Shift, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceButton_modifiers_mask_Lock, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceButton_modifiers_mask_Control, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceButton_modifiers_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceButton_modifiers_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceButton_modifiers_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceButton_modifiers_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceButton_modifiers_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_GrabDeviceButton_modifiers_mask_Any, tvb, *offsetp, 2, byte_order);
+ }
+ *offsetp += 2;
+ f_this_device_mode = field8(tvb, offsetp, t, hf_x11_xinput_GrabDeviceButton_this_device_mode, byte_order);
+ f_other_device_mode = field8(tvb, offsetp, t, hf_x11_xinput_GrabDeviceButton_other_device_mode, byte_order);
+ f_button = field8(tvb, offsetp, t, hf_x11_xinput_GrabDeviceButton_button, byte_order);
f_owner_events = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GrabDeviceButton_owner_events, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GrabDeviceButton_owner_events, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- listOfCard32(tvb, offsetp, t, hf_x11_xinput_GrabDeviceButton_classes, hf_x11_xinput_GrabDeviceButton_classes_item, f_num_classes, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xinput_GrabDeviceButton_classes, hf_x11_xinput_GrabDeviceButton_classes_item, f_num_classes, byte_order);
length -= f_num_classes * 4;
}
-static void xinputUngrabDeviceButton(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputUngrabDeviceButton(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_grab_window;
int f_modifiers;
@@ -18450,53 +18843,53 @@ static void xinputUngrabDeviceButton(tvbuff_t *tvb, packet_info *pinfo _U_, int
int f_button;
int f_grabbed_device;
f_grab_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_UngrabDeviceButton_grab_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_UngrabDeviceButton_grab_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_modifiers = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xinput_UngrabDeviceButton_modifiers, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xinput_UngrabDeviceButton_modifiers, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceButton_modifiers_mask_Shift, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceButton_modifiers_mask_Lock, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceButton_modifiers_mask_Control, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceButton_modifiers_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceButton_modifiers_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceButton_modifiers_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceButton_modifiers_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceButton_modifiers_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceButton_modifiers_mask_Any, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceButton_modifiers_mask_Shift, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceButton_modifiers_mask_Lock, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceButton_modifiers_mask_Control, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceButton_modifiers_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceButton_modifiers_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceButton_modifiers_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceButton_modifiers_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceButton_modifiers_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xinput_UngrabDeviceButton_modifiers_mask_Any, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_modifier_device = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_UngrabDeviceButton_modifier_device, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_UngrabDeviceButton_modifier_device, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- f_button = field8(tvb, offsetp, t, hf_x11_xinput_UngrabDeviceButton_button, little_endian);
+ f_button = field8(tvb, offsetp, t, hf_x11_xinput_UngrabDeviceButton_button, byte_order);
f_grabbed_device = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_UngrabDeviceButton_grabbed_device, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_UngrabDeviceButton_grabbed_device, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void xinputAllowDeviceEvents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputAllowDeviceEvents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_time;
int f_mode;
int f_device_id;
- f_time = field32(tvb, offsetp, t, hf_x11_xinput_AllowDeviceEvents_time, little_endian);
- f_mode = field8(tvb, offsetp, t, hf_x11_xinput_AllowDeviceEvents_mode, little_endian);
+ f_time = field32(tvb, offsetp, t, hf_x11_xinput_AllowDeviceEvents_time, byte_order);
+ f_mode = field8(tvb, offsetp, t, hf_x11_xinput_AllowDeviceEvents_mode, byte_order);
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_AllowDeviceEvents_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_AllowDeviceEvents_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void xinputGetDeviceFocus(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputGetDeviceFocus(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_device_id;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetDeviceFocus_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetDeviceFocus_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
}
-static void xinputGetDeviceFocus_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xinputGetDeviceFocus_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_focus;
@@ -18513,39 +18906,39 @@ static void xinputGetDeviceFocus_Reply(tvbuff_t *tvb, packet_info *pinfo, int *o
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_focus = field32(tvb, offsetp, t, hf_x11_xinput_GetDeviceFocus_reply_focus, little_endian);
+ f_focus = field32(tvb, offsetp, t, hf_x11_xinput_GetDeviceFocus_reply_focus, byte_order);
f_time = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetDeviceFocus_reply_time, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetDeviceFocus_reply_time, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_revert_to = field8(tvb, offsetp, t, hf_x11_xinput_GetDeviceFocus_reply_revert_to, little_endian);
+ f_revert_to = field8(tvb, offsetp, t, hf_x11_xinput_GetDeviceFocus_reply_revert_to, byte_order);
UNUSED(15);
}
-static void xinputSetDeviceFocus(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputSetDeviceFocus(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_focus;
int f_time;
int f_revert_to;
int f_device_id;
- f_focus = field32(tvb, offsetp, t, hf_x11_xinput_SetDeviceFocus_focus, little_endian);
- f_time = field32(tvb, offsetp, t, hf_x11_xinput_SetDeviceFocus_time, little_endian);
- f_revert_to = field8(tvb, offsetp, t, hf_x11_xinput_SetDeviceFocus_revert_to, little_endian);
+ f_focus = field32(tvb, offsetp, t, hf_x11_xinput_SetDeviceFocus_focus, byte_order);
+ f_time = field32(tvb, offsetp, t, hf_x11_xinput_SetDeviceFocus_time, byte_order);
+ f_revert_to = field8(tvb, offsetp, t, hf_x11_xinput_SetDeviceFocus_revert_to, byte_order);
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_SetDeviceFocus_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_SetDeviceFocus_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void xinputGetFeedbackControl(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputGetFeedbackControl(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_device_id;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetFeedbackControl_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetFeedbackControl_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
}
-static void xinputGetFeedbackControl_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xinputGetFeedbackControl_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_num_feedback;
@@ -18560,30 +18953,30 @@ static void xinputGetFeedbackControl_Reply(tvbuff_t *tvb, packet_info *pinfo, in
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_feedback = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetFeedbackControl_reply_num_feedback, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetFeedbackControl_reply_num_feedback, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(22);
}
-static void xinputGetDeviceKeyMapping(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputGetDeviceKeyMapping(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_device_id;
int f_first_keycode;
int f_count;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetDeviceKeyMapping_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetDeviceKeyMapping_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_first_keycode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetDeviceKeyMapping_first_keycode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetDeviceKeyMapping_first_keycode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_count = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetDeviceKeyMapping_count, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetDeviceKeyMapping_count, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void xinputGetDeviceKeyMapping_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xinputGetDeviceKeyMapping_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_keysyms_per_keycode;
@@ -18598,46 +18991,46 @@ static void xinputGetDeviceKeyMapping_Reply(tvbuff_t *tvb, packet_info *pinfo, i
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_keysyms_per_keycode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetDeviceKeyMapping_reply_keysyms_per_keycode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetDeviceKeyMapping_reply_keysyms_per_keycode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(23);
- listOfCard32(tvb, offsetp, t, hf_x11_xinput_GetDeviceKeyMapping_reply_keysyms, hf_x11_xinput_GetDeviceKeyMapping_reply_keysyms_item, f_length, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xinput_GetDeviceKeyMapping_reply_keysyms, hf_x11_xinput_GetDeviceKeyMapping_reply_keysyms_item, f_length, byte_order);
}
-static void xinputChangeDeviceKeyMapping(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputChangeDeviceKeyMapping(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_device_id;
int f_first_keycode;
int f_keysyms_per_keycode;
int f_keycode_count;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceKeyMapping_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceKeyMapping_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_first_keycode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceKeyMapping_first_keycode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceKeyMapping_first_keycode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_keysyms_per_keycode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceKeyMapping_keysyms_per_keycode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceKeyMapping_keysyms_per_keycode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_keycode_count = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceKeyMapping_keycode_count, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceKeyMapping_keycode_count, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- listOfCard32(tvb, offsetp, t, hf_x11_xinput_ChangeDeviceKeyMapping_keysyms, hf_x11_xinput_ChangeDeviceKeyMapping_keysyms_item, (f_keycode_count * f_keysyms_per_keycode), little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xinput_ChangeDeviceKeyMapping_keysyms, hf_x11_xinput_ChangeDeviceKeyMapping_keysyms_item, (f_keycode_count * f_keysyms_per_keycode), byte_order);
length -= (f_keycode_count * f_keysyms_per_keycode) * 4;
}
-static void xinputGetDeviceModifierMapping(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputGetDeviceModifierMapping(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_device_id;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetDeviceModifierMapping_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetDeviceModifierMapping_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
}
-static void xinputGetDeviceModifierMapping_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xinputGetDeviceModifierMapping_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_keycodes_per_modifier;
@@ -18652,30 +19045,30 @@ static void xinputGetDeviceModifierMapping_Reply(tvbuff_t *tvb, packet_info *pin
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_keycodes_per_modifier = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetDeviceModifierMapping_reply_keycodes_per_modifier, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetDeviceModifierMapping_reply_keycodes_per_modifier, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(23);
- listOfByte(tvb, offsetp, t, hf_x11_xinput_GetDeviceModifierMapping_reply_keymaps, (f_keycodes_per_modifier * 8), little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xinput_GetDeviceModifierMapping_reply_keymaps, (f_keycodes_per_modifier * 8), byte_order);
}
-static void xinputSetDeviceModifierMapping(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputSetDeviceModifierMapping(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_device_id;
int f_keycodes_per_modifier;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_SetDeviceModifierMapping_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_SetDeviceModifierMapping_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_keycodes_per_modifier = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_SetDeviceModifierMapping_keycodes_per_modifier, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_SetDeviceModifierMapping_keycodes_per_modifier, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
- listOfByte(tvb, offsetp, t, hf_x11_xinput_SetDeviceModifierMapping_keymaps, (f_keycodes_per_modifier * 8), little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xinput_SetDeviceModifierMapping_keymaps, (f_keycodes_per_modifier * 8), byte_order);
length -= (f_keycodes_per_modifier * 8) * 1;
}
-static void xinputSetDeviceModifierMapping_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xinputSetDeviceModifierMapping_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_status;
@@ -18690,21 +19083,21 @@ static void xinputSetDeviceModifierMapping_Reply(tvbuff_t *tvb, packet_info *pin
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_status = field8(tvb, offsetp, t, hf_x11_xinput_SetDeviceModifierMapping_reply_status, little_endian);
+ f_status = field8(tvb, offsetp, t, hf_x11_xinput_SetDeviceModifierMapping_reply_status, byte_order);
UNUSED(23);
}
-static void xinputGetDeviceButtonMapping(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputGetDeviceButtonMapping(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_device_id;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetDeviceButtonMapping_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetDeviceButtonMapping_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
}
-static void xinputGetDeviceButtonMapping_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xinputGetDeviceButtonMapping_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_map_size;
@@ -18719,30 +19112,30 @@ static void xinputGetDeviceButtonMapping_Reply(tvbuff_t *tvb, packet_info *pinfo
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_map_size = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetDeviceButtonMapping_reply_map_size, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetDeviceButtonMapping_reply_map_size, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(23);
- listOfByte(tvb, offsetp, t, hf_x11_xinput_GetDeviceButtonMapping_reply_map, f_map_size, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xinput_GetDeviceButtonMapping_reply_map, f_map_size, byte_order);
}
-static void xinputSetDeviceButtonMapping(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputSetDeviceButtonMapping(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_device_id;
int f_map_size;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_SetDeviceButtonMapping_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_SetDeviceButtonMapping_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_map_size = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_SetDeviceButtonMapping_map_size, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_SetDeviceButtonMapping_map_size, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- listOfByte(tvb, offsetp, t, hf_x11_xinput_SetDeviceButtonMapping_map, f_map_size, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xinput_SetDeviceButtonMapping_map, f_map_size, byte_order);
length -= f_map_size * 1;
}
-static void xinputSetDeviceButtonMapping_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xinputSetDeviceButtonMapping_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_status;
@@ -18757,21 +19150,21 @@ static void xinputSetDeviceButtonMapping_Reply(tvbuff_t *tvb, packet_info *pinfo
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_status = field8(tvb, offsetp, t, hf_x11_xinput_SetDeviceButtonMapping_reply_status, little_endian);
+ f_status = field8(tvb, offsetp, t, hf_x11_xinput_SetDeviceButtonMapping_reply_status, byte_order);
UNUSED(23);
}
-static void xinputQueryDeviceState(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputQueryDeviceState(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_device_id;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_QueryDeviceState_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_QueryDeviceState_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
}
-static void xinputQueryDeviceState_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xinputQueryDeviceState_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_num_classes;
@@ -18786,15 +19179,15 @@ static void xinputQueryDeviceState_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_classes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_QueryDeviceState_reply_num_classes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_QueryDeviceState_reply_num_classes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(23);
}
-static void xinputSendExtensionEvent(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputSendExtensionEvent(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_destination;
int f_device_id;
@@ -18802,66 +19195,66 @@ static void xinputSendExtensionEvent(tvbuff_t *tvb, packet_info *pinfo _U_, int
int f_num_classes;
int f_num_events;
f_destination = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_SendExtensionEvent_destination, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_SendExtensionEvent_destination, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_SendExtensionEvent_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_SendExtensionEvent_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_propagate = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_SendExtensionEvent_propagate, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_SendExtensionEvent_propagate, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_num_classes = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_SendExtensionEvent_num_classes, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_SendExtensionEvent_num_classes, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_num_events = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_SendExtensionEvent_num_events, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_SendExtensionEvent_num_events, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
- listOfByte(tvb, offsetp, t, hf_x11_xinput_SendExtensionEvent_events, (f_num_events * 32), little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xinput_SendExtensionEvent_events, (f_num_events * 32), byte_order);
length -= (f_num_events * 32) * 1;
- listOfCard32(tvb, offsetp, t, hf_x11_xinput_SendExtensionEvent_classes, hf_x11_xinput_SendExtensionEvent_classes_item, f_num_classes, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xinput_SendExtensionEvent_classes, hf_x11_xinput_SendExtensionEvent_classes_item, f_num_classes, byte_order);
length -= f_num_classes * 4;
}
-static void xinputDeviceBell(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputDeviceBell(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_device_id;
int f_feedback_id;
int f_feedback_class;
int f_percent;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceBell_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceBell_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_feedback_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceBell_feedback_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceBell_feedback_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_feedback_class = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceBell_feedback_class, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceBell_feedback_class, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_percent = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceBell_percent, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceBell_percent, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void xinputSetDeviceValuators(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputSetDeviceValuators(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_device_id;
int f_first_valuator;
int f_num_valuators;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_SetDeviceValuators_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_SetDeviceValuators_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_first_valuator = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_SetDeviceValuators_first_valuator, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_SetDeviceValuators_first_valuator, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_num_valuators = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_SetDeviceValuators_num_valuators, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_SetDeviceValuators_num_valuators, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
- listOfInt32(tvb, offsetp, t, hf_x11_xinput_SetDeviceValuators_valuators, hf_x11_xinput_SetDeviceValuators_valuators_item, f_num_valuators, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_xinput_SetDeviceValuators_valuators, hf_x11_xinput_SetDeviceValuators_valuators_item, f_num_valuators, byte_order);
length -= f_num_valuators * 4;
}
-static void xinputSetDeviceValuators_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xinputSetDeviceValuators_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_status;
@@ -18876,25 +19269,25 @@ static void xinputSetDeviceValuators_Reply(tvbuff_t *tvb, packet_info *pinfo, in
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_status = field8(tvb, offsetp, t, hf_x11_xinput_SetDeviceValuators_reply_status, little_endian);
+ f_status = field8(tvb, offsetp, t, hf_x11_xinput_SetDeviceValuators_reply_status, byte_order);
UNUSED(23);
}
-static void xinputGetDeviceControl(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xinputGetDeviceControl(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_control_id;
int f_device_id;
f_control_id = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetDeviceControl_control_id, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetDeviceControl_control_id, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_GetDeviceControl_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_GetDeviceControl_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
}
-static void xinputGetDeviceControl_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xinputGetDeviceControl_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_status;
@@ -18909,35 +19302,35 @@ static void xinputGetDeviceControl_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_status = field8(tvb, offsetp, t, hf_x11_xinput_GetDeviceControl_reply_status, little_endian);
+ f_status = field8(tvb, offsetp, t, hf_x11_xinput_GetDeviceControl_reply_status, byte_order);
UNUSED(23);
}
-static void xinputDeviceValuator(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xinputDeviceValuator(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_device_id;
int f_device_state;
int f_num_valuators;
int f_first_valuator;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceValuator_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceValuator_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
CARD16(event_sequencenumber);
f_device_state = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceValuator_device_state, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceValuator_device_state, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_num_valuators = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceValuator_num_valuators, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceValuator_num_valuators, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_first_valuator = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceValuator_first_valuator, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceValuator_first_valuator, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- listOfInt32(tvb, offsetp, t, hf_x11_xinput_DeviceValuator_valuators, hf_x11_xinput_DeviceValuator_valuators_item, 6, little_endian);
+ listOfInt32(tvb, offsetp, t, hf_x11_xinput_DeviceValuator_valuators, hf_x11_xinput_DeviceValuator_valuators_item, 6, byte_order);
}
-static void xinputDeviceKeyPress(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xinputDeviceKeyPress(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_detail;
int f_time;
@@ -18952,65 +19345,65 @@ static void xinputDeviceKeyPress(tvbuff_t *tvb, int *offsetp, proto_tree *t, int
int f_same_screen;
int f_device_id;
f_detail = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_detail, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_detail, tvb, *offsetp, 1, ENC_NA);
*offsetp += 1;
CARD16(event_sequencenumber);
f_time = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_time, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_time, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_root = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_root, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_root, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_event = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_event, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_event, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_child = field32(tvb, offsetp, t, hf_x11_xinput_DeviceKeyPress_child, little_endian);
+ f_child = field32(tvb, offsetp, t, hf_x11_xinput_DeviceKeyPress_child, byte_order);
f_root_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_root_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_root_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_root_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_root_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_root_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_event_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_event_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_event_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_event_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_event_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_event_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_state = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_state, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_state, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_same_screen = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_same_screen, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_same_screen, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceKeyPress_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void xinputFocusIn(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xinputFocusIn(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_detail;
int f_time;
int f_window;
int f_mode;
int f_device_id;
- f_detail = field8(tvb, offsetp, t, hf_x11_xinput_FocusIn_detail, little_endian);
+ f_detail = field8(tvb, offsetp, t, hf_x11_xinput_FocusIn_detail, byte_order);
CARD16(event_sequencenumber);
f_time = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_FocusIn_time, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_FocusIn_time, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_FocusIn_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_FocusIn_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_mode = field8(tvb, offsetp, t, hf_x11_xinput_FocusIn_mode, little_endian);
+ f_mode = field8(tvb, offsetp, t, hf_x11_xinput_FocusIn_mode, byte_order);
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_FocusIn_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_FocusIn_device_id, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(18);
}
-static void xinputDeviceStateNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xinputDeviceStateNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_device_id;
int f_time;
@@ -19019,30 +19412,30 @@ static void xinputDeviceStateNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t,
int f_num_valuators;
int f_classes_reported;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceStateNotify_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceStateNotify_device_id, tvb, *offsetp, 1, ENC_NA);
*offsetp += 1;
CARD16(event_sequencenumber);
f_time = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceStateNotify_time, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceStateNotify_time, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_keys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceStateNotify_num_keys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceStateNotify_num_keys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_num_buttons = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceStateNotify_num_buttons, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceStateNotify_num_buttons, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_num_valuators = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceStateNotify_num_valuators, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceStateNotify_num_valuators, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_classes_reported = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceStateNotify_classes_reported, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceStateNotify_classes_reported, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- listOfByte(tvb, offsetp, t, hf_x11_xinput_DeviceStateNotify_buttons, 4, little_endian);
- listOfByte(tvb, offsetp, t, hf_x11_xinput_DeviceStateNotify_keys, 4, little_endian);
- listOfCard32(tvb, offsetp, t, hf_x11_xinput_DeviceStateNotify_valuators, hf_x11_xinput_DeviceStateNotify_valuators_item, 3, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xinput_DeviceStateNotify_buttons, 4, byte_order);
+ listOfByte(tvb, offsetp, t, hf_x11_xinput_DeviceStateNotify_keys, 4, byte_order);
+ listOfCard32(tvb, offsetp, t, hf_x11_xinput_DeviceStateNotify_valuators, hf_x11_xinput_DeviceStateNotify_valuators_item, 3, byte_order);
}
-static void xinputDeviceMappingNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xinputDeviceMappingNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_device_id;
int f_request;
@@ -19050,64 +19443,64 @@ static void xinputDeviceMappingNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t
int f_count;
int f_time;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceMappingNotify_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceMappingNotify_device_id, tvb, *offsetp, 1, ENC_NA);
*offsetp += 1;
CARD16(event_sequencenumber);
f_request = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceMappingNotify_request, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceMappingNotify_request, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_first_keycode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceMappingNotify_first_keycode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceMappingNotify_first_keycode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_count = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceMappingNotify_count, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceMappingNotify_count, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
f_time = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceMappingNotify_time, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceMappingNotify_time, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
}
-static void xinputChangeDeviceNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xinputChangeDeviceNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_device_id;
int f_time;
int f_request;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceNotify_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceNotify_device_id, tvb, *offsetp, 1, ENC_NA);
*offsetp += 1;
CARD16(event_sequencenumber);
f_time = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceNotify_time, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceNotify_time, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_request = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceNotify_request, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_ChangeDeviceNotify_request, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(23);
}
-static void xinputDeviceKeyStateNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xinputDeviceKeyStateNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_device_id;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceKeyStateNotify_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceKeyStateNotify_device_id, tvb, *offsetp, 1, ENC_NA);
*offsetp += 1;
CARD16(event_sequencenumber);
- listOfByte(tvb, offsetp, t, hf_x11_xinput_DeviceKeyStateNotify_keys, 28, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xinput_DeviceKeyStateNotify_keys, 28, byte_order);
}
-static void xinputDeviceButtonStateNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xinputDeviceButtonStateNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_device_id;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DeviceButtonStateNotify_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DeviceButtonStateNotify_device_id, tvb, *offsetp, 1, ENC_NA);
*offsetp += 1;
CARD16(event_sequencenumber);
- listOfByte(tvb, offsetp, t, hf_x11_xinput_DeviceButtonStateNotify_buttons, 28, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xinput_DeviceButtonStateNotify_buttons, 28, byte_order);
}
-static void xinputDevicePresenceNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xinputDevicePresenceNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_time;
int f_devchange;
@@ -19116,16 +19509,16 @@ static void xinputDevicePresenceNotify(tvbuff_t *tvb, int *offsetp, proto_tree *
UNUSED(1);
CARD16(event_sequencenumber);
f_time = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DevicePresenceNotify_time, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DevicePresenceNotify_time, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_devchange = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DevicePresenceNotify_devchange, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DevicePresenceNotify_devchange, tvb, *offsetp, 1, ENC_NA);
*offsetp += 1;
f_device_id = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DevicePresenceNotify_device_id, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DevicePresenceNotify_device_id, tvb, *offsetp, 1, ENC_NA);
*offsetp += 1;
f_control = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xinput_DevicePresenceNotify_control, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xinput_DevicePresenceNotify_control, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(20);
}
@@ -19201,7 +19594,7 @@ static x11_reply_info xinput_replies[] = {
{ 0, NULL }
};
-static void dispatch_xinput(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_xinput(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(xinput_extension_minor);
@@ -19212,103 +19605,103 @@ static void dispatch_xinput(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, pro
"<Unknown opcode %d>"));
switch (minor) {
case 1:
- xinputGetExtensionVersion(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputGetExtensionVersion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 2:
- xinputListInputDevices(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputListInputDevices(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 3:
- xinputOpenDevice(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputOpenDevice(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 4:
- xinputCloseDevice(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputCloseDevice(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 5:
- xinputSetDeviceMode(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputSetDeviceMode(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 6:
- xinputSelectExtensionEvent(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputSelectExtensionEvent(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 7:
- xinputGetSelectedExtensionEvents(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputGetSelectedExtensionEvents(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 8:
- xinputChangeDeviceDontPropagateList(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputChangeDeviceDontPropagateList(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 9:
- xinputGetDeviceDontPropagateList(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputGetDeviceDontPropagateList(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 10:
- xinputGetDeviceMotionEvents(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputGetDeviceMotionEvents(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 11:
- xinputChangeKeyboardDevice(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputChangeKeyboardDevice(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 12:
- xinputChangePointerDevice(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputChangePointerDevice(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 13:
- xinputGrabDevice(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputGrabDevice(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 14:
- xinputUngrabDevice(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputUngrabDevice(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 15:
- xinputGrabDeviceKey(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputGrabDeviceKey(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 16:
- xinputUngrabDeviceKey(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputUngrabDeviceKey(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 17:
- xinputGrabDeviceButton(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputGrabDeviceButton(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 18:
- xinputUngrabDeviceButton(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputUngrabDeviceButton(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 19:
- xinputAllowDeviceEvents(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputAllowDeviceEvents(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 20:
- xinputGetDeviceFocus(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputGetDeviceFocus(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 21:
- xinputSetDeviceFocus(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputSetDeviceFocus(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 22:
- xinputGetFeedbackControl(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputGetFeedbackControl(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 24:
- xinputGetDeviceKeyMapping(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputGetDeviceKeyMapping(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 25:
- xinputChangeDeviceKeyMapping(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputChangeDeviceKeyMapping(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 26:
- xinputGetDeviceModifierMapping(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputGetDeviceModifierMapping(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 27:
- xinputSetDeviceModifierMapping(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputSetDeviceModifierMapping(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 28:
- xinputGetDeviceButtonMapping(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputGetDeviceButtonMapping(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 29:
- xinputSetDeviceButtonMapping(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputSetDeviceButtonMapping(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 30:
- xinputQueryDeviceState(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputQueryDeviceState(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 31:
- xinputSendExtensionEvent(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputSendExtensionEvent(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 32:
- xinputDeviceBell(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputDeviceBell(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 33:
- xinputSetDeviceValuators(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputSetDeviceValuators(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 34:
- xinputGetDeviceControl(tvb, pinfo, offsetp, t, little_endian, length);
+ xinputGetDeviceControl(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -19320,7 +19713,7 @@ static void register_xinput(void)
set_handler("XInputExtension", dispatch_xinput, xinput_errors, xinput_events, xinput_replies);
}
-static void struct_AXOption(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_AXOption(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order, int count)
{
int i;
int base = *offsetp;
@@ -19329,19 +19722,19 @@ static void struct_AXOption(tvbuff_t *tvb, int *offsetp, proto_tree *root, int l
proto_tree *t;
int f_fbopt;
int f_skopt;
- item = proto_tree_add_item(root, hf_x11_union_AXOption, tvb, base, 2, little_endian);
+ item = proto_tree_add_item(root, hf_x11_union_AXOption, tvb, base, 2, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
*offsetp = base;
- f_fbopt = field16(tvb, offsetp, t, hf_x11_union_AXOption_fbopt, little_endian);
+ f_fbopt = field16(tvb, offsetp, t, hf_x11_union_AXOption_fbopt, byte_order);
*offsetp = base;
- f_skopt = field16(tvb, offsetp, t, hf_x11_union_AXOption_skopt, little_endian);
+ f_skopt = field16(tvb, offsetp, t, hf_x11_union_AXOption_skopt, byte_order);
base += 2;
}
*offsetp = base;
}
-static void struct_IndicatorMap(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_IndicatorMap(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -19356,69 +19749,69 @@ static void struct_IndicatorMap(tvbuff_t *tvb, int *offsetp, proto_tree *root, i
int f_vmods;
int f_ctrls;
- item = proto_tree_add_item(root, hf_x11_struct_IndicatorMap, tvb, *offsetp, 12, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_IndicatorMap, tvb, *offsetp, 12, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- f_flags = field8(tvb, offsetp, t, hf_x11_struct_IndicatorMap_flags, little_endian);
- f_whichGroups = field8(tvb, offsetp, t, hf_x11_struct_IndicatorMap_whichGroups, little_endian);
- f_groups = field8(tvb, offsetp, t, hf_x11_struct_IndicatorMap_groups, little_endian);
- f_whichMods = field8(tvb, offsetp, t, hf_x11_struct_IndicatorMap_whichMods, little_endian);
+ f_flags = field8(tvb, offsetp, t, hf_x11_struct_IndicatorMap_flags, byte_order);
+ f_whichGroups = field8(tvb, offsetp, t, hf_x11_struct_IndicatorMap_whichGroups, byte_order);
+ f_groups = field8(tvb, offsetp, t, hf_x11_struct_IndicatorMap_groups, byte_order);
+ f_whichMods = field8(tvb, offsetp, t, hf_x11_struct_IndicatorMap_whichMods, byte_order);
f_mods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_IndicatorMap_mods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_IndicatorMap_mods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_realMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_IndicatorMap_realMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_IndicatorMap_realMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_vmods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_IndicatorMap_vmods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_IndicatorMap_vmods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_15, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_15, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
- f_ctrls = field32(tvb, offsetp, t, hf_x11_struct_IndicatorMap_ctrls, little_endian);
+ f_ctrls = field32(tvb, offsetp, t, hf_x11_struct_IndicatorMap_ctrls, byte_order);
}
}
-static void struct_ModDef(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_ModDef(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -19428,91 +19821,91 @@ static void struct_ModDef(tvbuff_t *tvb, int *offsetp, proto_tree *root, int lit
int f_realMods;
int f_vmods;
- item = proto_tree_add_item(root, hf_x11_struct_ModDef, tvb, *offsetp, 4, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_ModDef, tvb, *offsetp, 4, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_mask = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_ModDef_mask, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_ModDef_mask, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_realMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_ModDef_realMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_ModDef_realMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_vmods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_ModDef_vmods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_ModDef_vmods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_15, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_15, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
}
}
-static void struct_KeyName(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_KeyName(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
proto_item *item;
proto_tree *t;
- item = proto_tree_add_item(root, hf_x11_struct_KeyName, tvb, *offsetp, 1, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_KeyName, tvb, *offsetp, 1, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- listOfByte(tvb, offsetp, t, hf_x11_struct_KeyName_name, 4, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_struct_KeyName_name, 4, byte_order);
}
}
-static void struct_KeyAlias(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_KeyAlias(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
proto_item *item;
proto_tree *t;
- item = proto_tree_add_item(root, hf_x11_struct_KeyAlias, tvb, *offsetp, 2, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_KeyAlias, tvb, *offsetp, 2, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- listOfByte(tvb, offsetp, t, hf_x11_struct_KeyAlias_real, 4, little_endian);
- listOfByte(tvb, offsetp, t, hf_x11_struct_KeyAlias_alias, 4, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_struct_KeyAlias_real, 4, byte_order);
+ listOfByte(tvb, offsetp, t, hf_x11_struct_KeyAlias_alias, 4, byte_order);
}
}
-static int struct_size_CountedString16(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
+static int struct_size_CountedString16(tvbuff_t *tvb, int *offsetp, guint byte_order _U_)
{
int size = 0;
int f_length;
@@ -19521,7 +19914,7 @@ static int struct_size_CountedString16(tvbuff_t *tvb, int *offsetp, int little_e
return size + 3;
}
-static void struct_CountedString16(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_CountedString16(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -19529,17 +19922,17 @@ static void struct_CountedString16(tvbuff_t *tvb, int *offsetp, proto_tree *root
proto_tree *t;
int f_length;
- item = proto_tree_add_item(root, hf_x11_struct_CountedString16, tvb, *offsetp, struct_size_CountedString16(tvb, offsetp, little_endian), little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_CountedString16, tvb, *offsetp, struct_size_CountedString16(tvb, offsetp, byte_order), ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_length = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_CountedString16_length, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_CountedString16_length, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- listOfByte(tvb, offsetp, t, hf_x11_struct_CountedString16_string, f_length, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_struct_CountedString16_string, f_length, byte_order);
UNUSED(1);
}
}
-static void struct_KTMapEntry(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_KTMapEntry(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -19551,71 +19944,71 @@ static void struct_KTMapEntry(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_mods_mods;
int f_mods_vmods;
- item = proto_tree_add_item(root, hf_x11_struct_KTMapEntry, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_KTMapEntry, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_active = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_KTMapEntry_active, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_KTMapEntry_active, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_level = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_KTMapEntry_level, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_KTMapEntry_level, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_mods_mask = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KTMapEntry_mods_mask, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KTMapEntry_mods_mask, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_mods_mods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KTMapEntry_mods_mods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KTMapEntry_mods_mods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_mods_vmods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KTMapEntry_mods_vmods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KTMapEntry_mods_vmods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_15, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_15, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
UNUSED(2);
}
}
-static int struct_size_KeyType(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
+static int struct_size_KeyType(tvbuff_t *tvb, int *offsetp, guint byte_order _U_)
{
int size = 0;
int f_nMapEntries;
@@ -19627,7 +20020,7 @@ static int struct_size_KeyType(tvbuff_t *tvb, int *offsetp, int little_endian _U
return size + 8;
}
-static void struct_KeyType(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_KeyType(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -19640,76 +20033,76 @@ static void struct_KeyType(tvbuff_t *tvb, int *offsetp, proto_tree *root, int li
int f_nMapEntries;
int f_hasPreserve;
- item = proto_tree_add_item(root, hf_x11_struct_KeyType, tvb, *offsetp, struct_size_KeyType(tvb, offsetp, little_endian), little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_KeyType, tvb, *offsetp, struct_size_KeyType(tvb, offsetp, byte_order), ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_mods_mask = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KeyType_mods_mask, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KeyType_mods_mask, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_mods_mods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KeyType_mods_mods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KeyType_mods_mods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_mods_vmods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KeyType_mods_vmods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KeyType_mods_vmods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_15, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_15, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_numLevels = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_KeyType_numLevels, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_KeyType_numLevels, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nMapEntries = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_KeyType_nMapEntries, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_KeyType_nMapEntries, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_hasPreserve = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_KeyType_hasPreserve, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_KeyType_hasPreserve, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
- struct_KTMapEntry(tvb, offsetp, t, little_endian, f_nMapEntries);
- struct_ModDef(tvb, offsetp, t, little_endian, (f_hasPreserve * f_nMapEntries));
+ struct_KTMapEntry(tvb, offsetp, t, byte_order, f_nMapEntries);
+ struct_ModDef(tvb, offsetp, t, byte_order, (f_hasPreserve * f_nMapEntries));
}
}
-static int struct_size_KeySymMap(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
+static int struct_size_KeySymMap(tvbuff_t *tvb, int *offsetp, guint byte_order _U_)
{
int size = 0;
int f_nSyms;
@@ -19718,7 +20111,7 @@ static int struct_size_KeySymMap(tvbuff_t *tvb, int *offsetp, int little_endian
return size + 8;
}
-static void struct_KeySymMap(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_KeySymMap(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -19728,23 +20121,23 @@ static void struct_KeySymMap(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_width;
int f_nSyms;
- item = proto_tree_add_item(root, hf_x11_struct_KeySymMap, tvb, *offsetp, struct_size_KeySymMap(tvb, offsetp, little_endian), little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_KeySymMap, tvb, *offsetp, struct_size_KeySymMap(tvb, offsetp, byte_order), ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- listOfByte(tvb, offsetp, t, hf_x11_struct_KeySymMap_kt_index, 4, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_struct_KeySymMap_kt_index, 4, byte_order);
f_groupInfo = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_KeySymMap_groupInfo, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_KeySymMap_groupInfo, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_width = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_KeySymMap_width, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_KeySymMap_width, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nSyms = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_KeySymMap_nSyms, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_KeySymMap_nSyms, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- listOfCard32(tvb, offsetp, t, hf_x11_struct_KeySymMap_syms, hf_x11_struct_KeySymMap_syms_item, f_nSyms, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_struct_KeySymMap_syms, hf_x11_struct_KeySymMap_syms_item, f_nSyms, byte_order);
}
}
-static void struct_CommonBehavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_CommonBehavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -19753,18 +20146,18 @@ static void struct_CommonBehavior(tvbuff_t *tvb, int *offsetp, proto_tree *root,
int f_type;
int f_data;
- item = proto_tree_add_item(root, hf_x11_struct_CommonBehavior, tvb, *offsetp, 2, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_CommonBehavior, tvb, *offsetp, 2, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_type = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_CommonBehavior_type, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_CommonBehavior_type, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_data = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_CommonBehavior_data, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_CommonBehavior_data, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
}
-static void struct_DefaultBehavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_DefaultBehavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -19772,16 +20165,16 @@ static void struct_DefaultBehavior(tvbuff_t *tvb, int *offsetp, proto_tree *root
proto_tree *t;
int f_type;
- item = proto_tree_add_item(root, hf_x11_struct_DefaultBehavior, tvb, *offsetp, 2, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_DefaultBehavior, tvb, *offsetp, 2, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_type = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_DefaultBehavior_type, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_DefaultBehavior_type, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
}
}
-static void struct_RadioGroupBehavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_RadioGroupBehavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -19790,18 +20183,18 @@ static void struct_RadioGroupBehavior(tvbuff_t *tvb, int *offsetp, proto_tree *r
int f_type;
int f_group;
- item = proto_tree_add_item(root, hf_x11_struct_RadioGroupBehavior, tvb, *offsetp, 2, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_RadioGroupBehavior, tvb, *offsetp, 2, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_type = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_RadioGroupBehavior_type, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_RadioGroupBehavior_type, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_group = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_RadioGroupBehavior_group, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_RadioGroupBehavior_group, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
}
-static void struct_Overlay1Behavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_Overlay1Behavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -19810,18 +20203,18 @@ static void struct_Overlay1Behavior(tvbuff_t *tvb, int *offsetp, proto_tree *roo
int f_type;
int f_key;
- item = proto_tree_add_item(root, hf_x11_struct_Overlay1Behavior, tvb, *offsetp, 2, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_Overlay1Behavior, tvb, *offsetp, 2, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_type = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Overlay1Behavior_type, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Overlay1Behavior_type, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_key = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Overlay1Behavior_key, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Overlay1Behavior_key, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
}
-static void struct_Overlay2Behavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_Overlay2Behavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -19830,18 +20223,18 @@ static void struct_Overlay2Behavior(tvbuff_t *tvb, int *offsetp, proto_tree *roo
int f_type;
int f_key;
- item = proto_tree_add_item(root, hf_x11_struct_Overlay2Behavior, tvb, *offsetp, 2, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_Overlay2Behavior, tvb, *offsetp, 2, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_type = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Overlay2Behavior_type, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Overlay2Behavior_type, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_key = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Overlay2Behavior_key, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Overlay2Behavior_key, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
}
-static void struct_Behavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_Behavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order, int count)
{
int i;
int base = *offsetp;
@@ -19849,39 +20242,39 @@ static void struct_Behavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, int l
proto_item *item;
proto_tree *t;
int f_type;
- item = proto_tree_add_item(root, hf_x11_union_Behavior, tvb, base, 2, little_endian);
+ item = proto_tree_add_item(root, hf_x11_union_Behavior, tvb, base, 2, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
*offsetp = base;
- struct_CommonBehavior(tvb, offsetp, t, little_endian, 1);
+ struct_CommonBehavior(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_DefaultBehavior(tvb, offsetp, t, little_endian, 1);
+ struct_DefaultBehavior(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_DefaultBehavior(tvb, offsetp, t, little_endian, 1);
+ struct_DefaultBehavior(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_RadioGroupBehavior(tvb, offsetp, t, little_endian, 1);
+ struct_RadioGroupBehavior(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_Overlay1Behavior(tvb, offsetp, t, little_endian, 1);
+ struct_Overlay1Behavior(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_Overlay2Behavior(tvb, offsetp, t, little_endian, 1);
+ struct_Overlay2Behavior(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_DefaultBehavior(tvb, offsetp, t, little_endian, 1);
+ struct_DefaultBehavior(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_RadioGroupBehavior(tvb, offsetp, t, little_endian, 1);
+ struct_RadioGroupBehavior(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_Overlay1Behavior(tvb, offsetp, t, little_endian, 1);
+ struct_Overlay1Behavior(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_Overlay2Behavior(tvb, offsetp, t, little_endian, 1);
+ struct_Overlay2Behavior(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
f_type = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_union_Behavior_type, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_union_Behavior_type, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
base += 2;
}
*offsetp = base;
}
-static void struct_SetBehavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_SetBehavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -19889,17 +20282,17 @@ static void struct_SetBehavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, in
proto_tree *t;
int f_keycode;
- item = proto_tree_add_item(root, hf_x11_struct_SetBehavior, tvb, *offsetp, 4, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_SetBehavior, tvb, *offsetp, 4, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_keycode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SetBehavior_keycode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SetBehavior_keycode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- struct_Behavior(tvb, offsetp, t, little_endian, 1);
+ struct_Behavior(tvb, offsetp, t, byte_order, 1);
UNUSED(1);
}
}
-static void struct_SetExplicit(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_SetExplicit(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -19908,29 +20301,29 @@ static void struct_SetExplicit(tvbuff_t *tvb, int *offsetp, proto_tree *root, in
int f_keycode;
int f_explicit;
- item = proto_tree_add_item(root, hf_x11_struct_SetExplicit, tvb, *offsetp, 2, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_SetExplicit, tvb, *offsetp, 2, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_keycode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SetExplicit_keycode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SetExplicit_keycode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_explicit = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SetExplicit_explicit, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SetExplicit_explicit, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetExplicit_explicit_mask_KeyType1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetExplicit_explicit_mask_KeyType2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetExplicit_explicit_mask_KeyType3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetExplicit_explicit_mask_KeyType4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetExplicit_explicit_mask_Interpret, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetExplicit_explicit_mask_AutoRepeat, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetExplicit_explicit_mask_Behavior, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetExplicit_explicit_mask_VModMap, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetExplicit_explicit_mask_KeyType1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetExplicit_explicit_mask_KeyType2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetExplicit_explicit_mask_KeyType3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetExplicit_explicit_mask_KeyType4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetExplicit_explicit_mask_Interpret, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetExplicit_explicit_mask_AutoRepeat, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetExplicit_explicit_mask_Behavior, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetExplicit_explicit_mask_VModMap, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
}
}
-static void struct_KeyModMap(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_KeyModMap(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -19939,30 +20332,30 @@ static void struct_KeyModMap(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_keycode;
int f_mods;
- item = proto_tree_add_item(root, hf_x11_struct_KeyModMap, tvb, *offsetp, 2, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_KeyModMap, tvb, *offsetp, 2, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_keycode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_KeyModMap_keycode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_KeyModMap_keycode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_mods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KeyModMap_mods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KeyModMap_mods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
}
}
-static void struct_KeyVModMap(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_KeyVModMap(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -19971,38 +20364,38 @@ static void struct_KeyVModMap(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_keycode;
int f_vmods;
- item = proto_tree_add_item(root, hf_x11_struct_KeyVModMap, tvb, *offsetp, 4, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_KeyVModMap, tvb, *offsetp, 4, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_keycode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_KeyVModMap_keycode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_KeyVModMap_keycode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
f_vmods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KeyVModMap_vmods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KeyVModMap_vmods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_15, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_15, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
}
}
-static void struct_KTSetMapEntry(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_KTSetMapEntry(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -20012,52 +20405,52 @@ static void struct_KTSetMapEntry(tvbuff_t *tvb, int *offsetp, proto_tree *root,
int f_realMods;
int f_virtualMods;
- item = proto_tree_add_item(root, hf_x11_struct_KTSetMapEntry, tvb, *offsetp, 4, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_KTSetMapEntry, tvb, *offsetp, 4, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_level = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_KTSetMapEntry_level, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_KTSetMapEntry_level, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_realMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KTSetMapEntry_realMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KTSetMapEntry_realMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_virtualMods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KTSetMapEntry_virtualMods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KTSetMapEntry_virtualMods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_15, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_15, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
}
}
-static int struct_size_SetKeyType(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
+static int struct_size_SetKeyType(tvbuff_t *tvb, int *offsetp, guint byte_order _U_)
{
int size = 0;
int f_nMapEntries;
@@ -20069,7 +20462,7 @@ static int struct_size_SetKeyType(tvbuff_t *tvb, int *offsetp, int little_endian
return size + 8;
}
-static void struct_SetKeyType(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_SetKeyType(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -20082,76 +20475,76 @@ static void struct_SetKeyType(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_nMapEntries;
int f_preserve;
- item = proto_tree_add_item(root, hf_x11_struct_SetKeyType, tvb, *offsetp, struct_size_SetKeyType(tvb, offsetp, little_endian), little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_SetKeyType, tvb, *offsetp, struct_size_SetKeyType(tvb, offsetp, byte_order), ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_mask = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SetKeyType_mask, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SetKeyType_mask, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_realMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SetKeyType_realMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SetKeyType_realMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_virtualMods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SetKeyType_virtualMods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SetKeyType_virtualMods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_15, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_15, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_numLevels = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SetKeyType_numLevels, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SetKeyType_numLevels, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nMapEntries = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SetKeyType_nMapEntries, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SetKeyType_nMapEntries, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_preserve = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SetKeyType_preserve, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SetKeyType_preserve, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
- struct_KTSetMapEntry(tvb, offsetp, t, little_endian, f_nMapEntries);
- struct_KTSetMapEntry(tvb, offsetp, t, little_endian, (f_preserve * f_nMapEntries));
+ struct_KTSetMapEntry(tvb, offsetp, t, byte_order, f_nMapEntries);
+ struct_KTSetMapEntry(tvb, offsetp, t, byte_order, (f_preserve * f_nMapEntries));
}
}
-static int struct_size_Property(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
+static int struct_size_Property(tvbuff_t *tvb, int *offsetp, guint byte_order _U_)
{
int size = 0;
int f_valueLength;
@@ -20163,7 +20556,7 @@ static int struct_size_Property(tvbuff_t *tvb, int *offsetp, int little_endian _
return size + 4;
}
-static void struct_Property(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_Property(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -20172,20 +20565,20 @@ static void struct_Property(tvbuff_t *tvb, int *offsetp, proto_tree *root, int l
int f_nameLength;
int f_valueLength;
- item = proto_tree_add_item(root, hf_x11_struct_Property, tvb, *offsetp, struct_size_Property(tvb, offsetp, little_endian), little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_Property, tvb, *offsetp, struct_size_Property(tvb, offsetp, byte_order), ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_nameLength = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Property_nameLength, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Property_nameLength, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- listOfByte(tvb, offsetp, t, hf_x11_struct_Property_name, f_nameLength, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_struct_Property_name, f_nameLength, byte_order);
f_valueLength = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Property_valueLength, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Property_valueLength, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- listOfByte(tvb, offsetp, t, hf_x11_struct_Property_value, f_valueLength, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_struct_Property_value, f_valueLength, byte_order);
}
}
-static int struct_size_Outline(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
+static int struct_size_Outline(tvbuff_t *tvb, int *offsetp, guint byte_order _U_)
{
int size = 0;
int f_nPoints;
@@ -20194,7 +20587,7 @@ static int struct_size_Outline(tvbuff_t *tvb, int *offsetp, int little_endian _U
return size + 4;
}
-static void struct_Outline(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_Outline(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -20203,20 +20596,20 @@ static void struct_Outline(tvbuff_t *tvb, int *offsetp, proto_tree *root, int li
int f_nPoints;
int f_cornerRadius;
- item = proto_tree_add_item(root, hf_x11_struct_Outline, tvb, *offsetp, struct_size_Outline(tvb, offsetp, little_endian), little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_Outline, tvb, *offsetp, struct_size_Outline(tvb, offsetp, byte_order), ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_nPoints = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Outline_nPoints, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Outline_nPoints, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_cornerRadius = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Outline_cornerRadius, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Outline_cornerRadius, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- struct_POINT(tvb, offsetp, t, little_endian, f_nPoints);
+ struct_POINT(tvb, offsetp, t, byte_order, f_nPoints);
}
}
-static int struct_size_Shape(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
+static int struct_size_Shape(tvbuff_t *tvb, int *offsetp, guint byte_order _U_)
{
int size = 0;
int i, off;
@@ -20224,12 +20617,12 @@ static int struct_size_Shape(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
f_nOutlines = VALUE8(tvb, *offsetp + size + 4);
for (i = 0; i < f_nOutlines; i++) {
off = (*offsetp) + size + 8;
- size += struct_size_Outline(tvb, &off, little_endian);
+ size += struct_size_Outline(tvb, &off, byte_order);
}
return size + 8;
}
-static void struct_Shape(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_Shape(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -20240,26 +20633,26 @@ static void struct_Shape(tvbuff_t *tvb, int *offsetp, proto_tree *root, int litt
int f_primaryNdx;
int f_approxNdx;
- item = proto_tree_add_item(root, hf_x11_struct_Shape, tvb, *offsetp, struct_size_Shape(tvb, offsetp, little_endian), little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_Shape, tvb, *offsetp, struct_size_Shape(tvb, offsetp, byte_order), ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_name = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Shape_name, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Shape_name, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_nOutlines = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Shape_nOutlines, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Shape_nOutlines, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_primaryNdx = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Shape_primaryNdx, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Shape_primaryNdx, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_approxNdx = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Shape_approxNdx, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Shape_approxNdx, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
- struct_Outline(tvb, offsetp, t, little_endian, f_nOutlines);
+ struct_Outline(tvb, offsetp, t, byte_order, f_nOutlines);
}
}
-static void struct_Key(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_Key(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -20269,36 +20662,36 @@ static void struct_Key(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little
int f_shapeNdx;
int f_colorNdx;
- item = proto_tree_add_item(root, hf_x11_struct_Key, tvb, *offsetp, 5, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_Key, tvb, *offsetp, 5, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- listOfByte(tvb, offsetp, t, hf_x11_struct_Key_name, 4, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_struct_Key_name, 4, byte_order);
f_gap = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Key_gap, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Key_gap, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_shapeNdx = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Key_shapeNdx, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Key_shapeNdx, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_colorNdx = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Key_colorNdx, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Key_colorNdx, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
}
-static void struct_OverlayKey(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_OverlayKey(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
proto_item *item;
proto_tree *t;
- item = proto_tree_add_item(root, hf_x11_struct_OverlayKey, tvb, *offsetp, 2, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_OverlayKey, tvb, *offsetp, 2, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- listOfByte(tvb, offsetp, t, hf_x11_struct_OverlayKey_over, 4, little_endian);
- listOfByte(tvb, offsetp, t, hf_x11_struct_OverlayKey_under, 4, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_struct_OverlayKey_over, 4, byte_order);
+ listOfByte(tvb, offsetp, t, hf_x11_struct_OverlayKey_under, 4, byte_order);
}
}
-static int struct_size_OverlayRow(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
+static int struct_size_OverlayRow(tvbuff_t *tvb, int *offsetp, guint byte_order _U_)
{
int size = 0;
int f_nKeys;
@@ -20307,7 +20700,7 @@ static int struct_size_OverlayRow(tvbuff_t *tvb, int *offsetp, int little_endian
return size + 4;
}
-static void struct_OverlayRow(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_OverlayRow(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -20316,20 +20709,20 @@ static void struct_OverlayRow(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_rowUnder;
int f_nKeys;
- item = proto_tree_add_item(root, hf_x11_struct_OverlayRow, tvb, *offsetp, struct_size_OverlayRow(tvb, offsetp, little_endian), little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_OverlayRow, tvb, *offsetp, struct_size_OverlayRow(tvb, offsetp, byte_order), ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_rowUnder = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_OverlayRow_rowUnder, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_OverlayRow_rowUnder, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_OverlayRow_nKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_OverlayRow_nKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- struct_OverlayKey(tvb, offsetp, t, little_endian, f_nKeys);
+ struct_OverlayKey(tvb, offsetp, t, byte_order, f_nKeys);
}
}
-static int struct_size_Overlay(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
+static int struct_size_Overlay(tvbuff_t *tvb, int *offsetp, guint byte_order _U_)
{
int size = 0;
int i, off;
@@ -20337,12 +20730,12 @@ static int struct_size_Overlay(tvbuff_t *tvb, int *offsetp, int little_endian _U
f_nRows = VALUE8(tvb, *offsetp + size + 4);
for (i = 0; i < f_nRows; i++) {
off = (*offsetp) + size + 8;
- size += struct_size_OverlayRow(tvb, &off, little_endian);
+ size += struct_size_OverlayRow(tvb, &off, byte_order);
}
return size + 8;
}
-static void struct_Overlay(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_Overlay(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -20351,20 +20744,20 @@ static void struct_Overlay(tvbuff_t *tvb, int *offsetp, proto_tree *root, int li
int f_name;
int f_nRows;
- item = proto_tree_add_item(root, hf_x11_struct_Overlay, tvb, *offsetp, struct_size_Overlay(tvb, offsetp, little_endian), little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_Overlay, tvb, *offsetp, struct_size_Overlay(tvb, offsetp, byte_order), ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_name = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Overlay_name, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Overlay_name, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_nRows = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Overlay_nRows, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Overlay_nRows, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
- struct_OverlayRow(tvb, offsetp, t, little_endian, f_nRows);
+ struct_OverlayRow(tvb, offsetp, t, byte_order, f_nRows);
}
}
-static int struct_size_Row(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
+static int struct_size_Row(tvbuff_t *tvb, int *offsetp, guint byte_order _U_)
{
int size = 0;
int f_nKeys;
@@ -20373,7 +20766,7 @@ static int struct_size_Row(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
return size + 8;
}
-static void struct_Row(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_Row(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -20384,26 +20777,26 @@ static void struct_Row(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little
int f_nKeys;
int f_vertical;
- item = proto_tree_add_item(root, hf_x11_struct_Row, tvb, *offsetp, struct_size_Row(tvb, offsetp, little_endian), little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_Row, tvb, *offsetp, struct_size_Row(tvb, offsetp, byte_order), ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_top = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Row_top, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Row_top, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_left = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Row_left, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Row_left, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Row_nKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Row_nKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_vertical = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Row_vertical, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Row_vertical, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- struct_Key(tvb, offsetp, t, little_endian, f_nKeys);
+ struct_Key(tvb, offsetp, t, byte_order, f_nKeys);
}
}
-static void struct_CommonDoodad(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_CommonDoodad(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -20416,28 +20809,28 @@ static void struct_CommonDoodad(tvbuff_t *tvb, int *offsetp, proto_tree *root, i
int f_left;
int f_angle;
- item = proto_tree_add_item(root, hf_x11_struct_CommonDoodad, tvb, *offsetp, 12, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_CommonDoodad, tvb, *offsetp, 12, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_name = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_CommonDoodad_name, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_CommonDoodad_name, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_type = field8(tvb, offsetp, t, hf_x11_struct_CommonDoodad_type, little_endian);
+ f_type = field8(tvb, offsetp, t, hf_x11_struct_CommonDoodad_type, byte_order);
f_priority = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_CommonDoodad_priority, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_CommonDoodad_priority, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_top = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_CommonDoodad_top, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_CommonDoodad_top, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_left = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_CommonDoodad_left, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_CommonDoodad_left, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_angle = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_CommonDoodad_angle, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_CommonDoodad_angle, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
}
-static void struct_ShapeDoodad(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_ShapeDoodad(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -20452,35 +20845,35 @@ static void struct_ShapeDoodad(tvbuff_t *tvb, int *offsetp, proto_tree *root, in
int f_colorNdx;
int f_shapeNdx;
- item = proto_tree_add_item(root, hf_x11_struct_ShapeDoodad, tvb, *offsetp, 20, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_ShapeDoodad, tvb, *offsetp, 20, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_name = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ShapeDoodad_name, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ShapeDoodad_name, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_type = field8(tvb, offsetp, t, hf_x11_struct_ShapeDoodad_type, little_endian);
+ f_type = field8(tvb, offsetp, t, hf_x11_struct_ShapeDoodad_type, byte_order);
f_priority = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ShapeDoodad_priority, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ShapeDoodad_priority, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_top = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ShapeDoodad_top, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ShapeDoodad_top, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_left = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ShapeDoodad_left, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ShapeDoodad_left, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_angle = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ShapeDoodad_angle, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ShapeDoodad_angle, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_colorNdx = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ShapeDoodad_colorNdx, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ShapeDoodad_colorNdx, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_shapeNdx = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ShapeDoodad_shapeNdx, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ShapeDoodad_shapeNdx, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(6);
}
}
-static void struct_TextDoodad(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_TextDoodad(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -20496,40 +20889,40 @@ static void struct_TextDoodad(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_height;
int f_colorNdx;
- item = proto_tree_add_item(root, hf_x11_struct_TextDoodad, tvb, *offsetp, 20, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_TextDoodad, tvb, *offsetp, 20, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_name = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_TextDoodad_name, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_TextDoodad_name, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_type = field8(tvb, offsetp, t, hf_x11_struct_TextDoodad_type, little_endian);
+ f_type = field8(tvb, offsetp, t, hf_x11_struct_TextDoodad_type, byte_order);
f_priority = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_TextDoodad_priority, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_TextDoodad_priority, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_top = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_TextDoodad_top, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_TextDoodad_top, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_left = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_TextDoodad_left, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_TextDoodad_left, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_angle = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_TextDoodad_angle, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_TextDoodad_angle, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_TextDoodad_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_TextDoodad_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_TextDoodad_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_TextDoodad_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_colorNdx = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_TextDoodad_colorNdx, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_TextDoodad_colorNdx, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
- struct_CountedString16(tvb, offsetp, t, little_endian, 1);
- struct_CountedString16(tvb, offsetp, t, little_endian, 1);
+ struct_CountedString16(tvb, offsetp, t, byte_order, 1);
+ struct_CountedString16(tvb, offsetp, t, byte_order, 1);
}
}
-static void struct_IndicatorDoodad(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_IndicatorDoodad(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -20545,38 +20938,38 @@ static void struct_IndicatorDoodad(tvbuff_t *tvb, int *offsetp, proto_tree *root
int f_onColorNdx;
int f_offColorNdx;
- item = proto_tree_add_item(root, hf_x11_struct_IndicatorDoodad, tvb, *offsetp, 20, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_IndicatorDoodad, tvb, *offsetp, 20, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_name = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_IndicatorDoodad_name, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_IndicatorDoodad_name, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_type = field8(tvb, offsetp, t, hf_x11_struct_IndicatorDoodad_type, little_endian);
+ f_type = field8(tvb, offsetp, t, hf_x11_struct_IndicatorDoodad_type, byte_order);
f_priority = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_IndicatorDoodad_priority, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_IndicatorDoodad_priority, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_top = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_IndicatorDoodad_top, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_IndicatorDoodad_top, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_left = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_IndicatorDoodad_left, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_IndicatorDoodad_left, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_angle = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_IndicatorDoodad_angle, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_IndicatorDoodad_angle, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_shapeNdx = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_IndicatorDoodad_shapeNdx, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_IndicatorDoodad_shapeNdx, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_onColorNdx = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_IndicatorDoodad_onColorNdx, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_IndicatorDoodad_onColorNdx, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_offColorNdx = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_IndicatorDoodad_offColorNdx, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_IndicatorDoodad_offColorNdx, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(5);
}
}
-static void struct_LogoDoodad(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_LogoDoodad(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -20591,61 +20984,61 @@ static void struct_LogoDoodad(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_colorNdx;
int f_shapeNdx;
- item = proto_tree_add_item(root, hf_x11_struct_LogoDoodad, tvb, *offsetp, 20, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_LogoDoodad, tvb, *offsetp, 20, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_name = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_LogoDoodad_name, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_LogoDoodad_name, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_type = field8(tvb, offsetp, t, hf_x11_struct_LogoDoodad_type, little_endian);
+ f_type = field8(tvb, offsetp, t, hf_x11_struct_LogoDoodad_type, byte_order);
f_priority = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_LogoDoodad_priority, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_LogoDoodad_priority, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_top = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_LogoDoodad_top, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_LogoDoodad_top, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_left = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_LogoDoodad_left, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_LogoDoodad_left, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_angle = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_LogoDoodad_angle, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_LogoDoodad_angle, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_colorNdx = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_LogoDoodad_colorNdx, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_LogoDoodad_colorNdx, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_shapeNdx = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_LogoDoodad_shapeNdx, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_LogoDoodad_shapeNdx, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(6);
- struct_CountedString16(tvb, offsetp, t, little_endian, 1);
+ struct_CountedString16(tvb, offsetp, t, byte_order, 1);
}
}
-static void struct_Doodad(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_Doodad(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order, int count)
{
int i;
int base = *offsetp;
for (i = 0; i < count; i++) {
proto_item *item;
proto_tree *t;
- item = proto_tree_add_item(root, hf_x11_union_Doodad, tvb, base, 20, little_endian);
+ item = proto_tree_add_item(root, hf_x11_union_Doodad, tvb, base, 20, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
*offsetp = base;
- struct_CommonDoodad(tvb, offsetp, t, little_endian, 1);
+ struct_CommonDoodad(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_ShapeDoodad(tvb, offsetp, t, little_endian, 1);
+ struct_ShapeDoodad(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_TextDoodad(tvb, offsetp, t, little_endian, 1);
+ struct_TextDoodad(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_IndicatorDoodad(tvb, offsetp, t, little_endian, 1);
+ struct_IndicatorDoodad(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_LogoDoodad(tvb, offsetp, t, little_endian, 1);
+ struct_LogoDoodad(tvb, offsetp, t, byte_order, 1);
base += 20;
}
*offsetp = base;
}
-static int struct_size_Section(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
+static int struct_size_Section(tvbuff_t *tvb, int *offsetp, guint byte_order _U_)
{
int size = 0;
int i, off;
@@ -20657,17 +21050,17 @@ static int struct_size_Section(tvbuff_t *tvb, int *offsetp, int little_endian _U
f_nOverlays = VALUE8(tvb, *offsetp + size + 17);
for (i = 0; i < f_nRows; i++) {
off = (*offsetp) + size + 20;
- size += struct_size_Row(tvb, &off, little_endian);
+ size += struct_size_Row(tvb, &off, byte_order);
}
size += f_nDoodads * 20;
for (i = 0; i < f_nOverlays; i++) {
off = (*offsetp) + size + 20;
- size += struct_size_Overlay(tvb, &off, little_endian);
+ size += struct_size_Overlay(tvb, &off, byte_order);
}
return size + 20;
}
-static void struct_Section(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_Section(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -20684,46 +21077,46 @@ static void struct_Section(tvbuff_t *tvb, int *offsetp, proto_tree *root, int li
int f_nDoodads;
int f_nOverlays;
- item = proto_tree_add_item(root, hf_x11_struct_Section, tvb, *offsetp, struct_size_Section(tvb, offsetp, little_endian), little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_Section, tvb, *offsetp, struct_size_Section(tvb, offsetp, byte_order), ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_name = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Section_name, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Section_name, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_top = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Section_top, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Section_top, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_left = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Section_left, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Section_left, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Section_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Section_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Section_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Section_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_angle = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Section_angle, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Section_angle, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_priority = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Section_priority, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Section_priority, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nRows = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Section_nRows, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Section_nRows, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nDoodads = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Section_nDoodads, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Section_nDoodads, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nOverlays = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Section_nOverlays, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Section_nOverlays, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- struct_Row(tvb, offsetp, t, little_endian, f_nRows);
- struct_Doodad(tvb, offsetp, t, little_endian, f_nDoodads);
- struct_Overlay(tvb, offsetp, t, little_endian, f_nOverlays);
+ struct_Row(tvb, offsetp, t, byte_order, f_nRows);
+ struct_Doodad(tvb, offsetp, t, byte_order, f_nDoodads);
+ struct_Overlay(tvb, offsetp, t, byte_order, f_nOverlays);
}
}
-static int struct_size_Listing(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
+static int struct_size_Listing(tvbuff_t *tvb, int *offsetp, guint byte_order _U_)
{
int size = 0;
int f_length;
@@ -20732,7 +21125,7 @@ static int struct_size_Listing(tvbuff_t *tvb, int *offsetp, int little_endian _U
return size + 4;
}
-static void struct_Listing(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_Listing(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -20741,19 +21134,19 @@ static void struct_Listing(tvbuff_t *tvb, int *offsetp, proto_tree *root, int li
int f_flags;
int f_length;
- item = proto_tree_add_item(root, hf_x11_struct_Listing, tvb, *offsetp, struct_size_Listing(tvb, offsetp, little_endian), little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_Listing, tvb, *offsetp, struct_size_Listing(tvb, offsetp, byte_order), ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_flags = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Listing_flags, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Listing_flags, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_length = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Listing_length, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Listing_length, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- listOfByte(tvb, offsetp, t, hf_x11_struct_Listing_string, f_length, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_struct_Listing_string, f_length, byte_order);
}
}
-static int struct_size_DeviceLedInfo(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
+static int struct_size_DeviceLedInfo(tvbuff_t *tvb, int *offsetp, guint byte_order _U_)
{
int size = 0;
int f_mapsPresent;
@@ -20765,7 +21158,7 @@ static int struct_size_DeviceLedInfo(tvbuff_t *tvb, int *offsetp, int little_end
return size + 20;
}
-static void struct_DeviceLedInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_DeviceLedInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -20778,28 +21171,28 @@ static void struct_DeviceLedInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root,
int f_physIndicators;
int f_state;
- item = proto_tree_add_item(root, hf_x11_struct_DeviceLedInfo, tvb, *offsetp, struct_size_DeviceLedInfo(tvb, offsetp, little_endian), little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_DeviceLedInfo, tvb, *offsetp, struct_size_DeviceLedInfo(tvb, offsetp, byte_order), ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- f_ledClass = field16(tvb, offsetp, t, hf_x11_struct_DeviceLedInfo_ledClass, little_endian);
- f_ledID = field16(tvb, offsetp, t, hf_x11_struct_DeviceLedInfo_ledID, little_endian);
+ f_ledClass = field16(tvb, offsetp, t, hf_x11_struct_DeviceLedInfo_ledClass, byte_order);
+ f_ledID = field16(tvb, offsetp, t, hf_x11_struct_DeviceLedInfo_ledID, byte_order);
f_namesPresent = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_DeviceLedInfo_namesPresent, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_DeviceLedInfo_namesPresent, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_mapsPresent = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_DeviceLedInfo_mapsPresent, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_DeviceLedInfo_mapsPresent, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_physIndicators = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_DeviceLedInfo_physIndicators, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_DeviceLedInfo_physIndicators, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_state = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_DeviceLedInfo_state, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_DeviceLedInfo_state, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfCard32(tvb, offsetp, t, hf_x11_struct_DeviceLedInfo_names, hf_x11_struct_DeviceLedInfo_names_item, popcount(f_namesPresent), little_endian);
- struct_IndicatorMap(tvb, offsetp, t, little_endian, popcount(f_mapsPresent));
+ listOfCard32(tvb, offsetp, t, hf_x11_struct_DeviceLedInfo_names, hf_x11_struct_DeviceLedInfo_names_item, popcount(f_namesPresent), byte_order);
+ struct_IndicatorMap(tvb, offsetp, t, byte_order, popcount(f_mapsPresent));
}
}
-static void struct_SANoAction(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_SANoAction(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -20807,14 +21200,14 @@ static void struct_SANoAction(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
proto_tree *t;
int f_type;
- item = proto_tree_add_item(root, hf_x11_struct_SANoAction, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_SANoAction, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- f_type = field8(tvb, offsetp, t, hf_x11_struct_SANoAction_type, little_endian);
+ f_type = field8(tvb, offsetp, t, hf_x11_struct_SANoAction_type, byte_order);
UNUSED(7);
}
}
-static void struct_SASetMods(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_SASetMods(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -20827,81 +21220,81 @@ static void struct_SASetMods(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_vmodsHigh;
int f_vmodsLow;
- item = proto_tree_add_item(root, hf_x11_struct_SASetMods, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_SASetMods, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- f_type = field8(tvb, offsetp, t, hf_x11_struct_SASetMods_type, little_endian);
+ f_type = field8(tvb, offsetp, t, hf_x11_struct_SASetMods_type, byte_order);
f_flags = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetMods_flags, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetMods_flags, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_flags_mask_ClearLocks, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_flags_mask_LatchToLock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_flags_mask_GroupAbsolute, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_flags_mask_ClearLocks, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_flags_mask_LatchToLock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_flags_mask_GroupAbsolute, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_mask = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetMods_mask, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetMods_mask, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_realMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetMods_realMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetMods_realMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_vmodsHigh = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetMods_vmodsHigh, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetMods_vmodsHigh, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsHigh_mask_8, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsHigh_mask_9, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsHigh_mask_10, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsHigh_mask_11, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsHigh_mask_12, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsHigh_mask_13, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsHigh_mask_14, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsHigh_mask_15, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsHigh_mask_8, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsHigh_mask_9, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsHigh_mask_10, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsHigh_mask_11, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsHigh_mask_12, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsHigh_mask_13, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsHigh_mask_14, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsHigh_mask_15, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_vmodsLow = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetMods_vmodsLow, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetMods_vmodsLow, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsLow_mask_0, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsLow_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsLow_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsLow_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsLow_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsLow_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsLow_mask_6, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsLow_mask_7, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsLow_mask_0, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsLow_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsLow_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsLow_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsLow_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsLow_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsLow_mask_6, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsLow_mask_7, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
UNUSED(2);
}
}
-static void struct_SASetGroup(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_SASetGroup(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -20911,26 +21304,26 @@ static void struct_SASetGroup(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_flags;
int f_group;
- item = proto_tree_add_item(root, hf_x11_struct_SASetGroup, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_SASetGroup, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- f_type = field8(tvb, offsetp, t, hf_x11_struct_SASetGroup_type, little_endian);
+ f_type = field8(tvb, offsetp, t, hf_x11_struct_SASetGroup_type, byte_order);
f_flags = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetGroup_flags, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetGroup_flags, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetGroup_flags_mask_ClearLocks, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetGroup_flags_mask_LatchToLock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetGroup_flags_mask_GroupAbsolute, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetGroup_flags_mask_ClearLocks, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetGroup_flags_mask_LatchToLock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetGroup_flags_mask_GroupAbsolute, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_group = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SASetGroup_group, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SASetGroup_group, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(5);
}
}
-static void struct_SAMovePtr(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_SAMovePtr(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -20943,35 +21336,35 @@ static void struct_SAMovePtr(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_yHigh;
int f_yLow;
- item = proto_tree_add_item(root, hf_x11_struct_SAMovePtr, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_SAMovePtr, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- f_type = field8(tvb, offsetp, t, hf_x11_struct_SAMovePtr_type, little_endian);
+ f_type = field8(tvb, offsetp, t, hf_x11_struct_SAMovePtr_type, byte_order);
f_flags = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SAMovePtr_flags, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SAMovePtr_flags, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAMovePtr_flags_mask_NoAcceleration, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAMovePtr_flags_mask_MoveAbsoluteX, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAMovePtr_flags_mask_MoveAbsoluteY, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAMovePtr_flags_mask_NoAcceleration, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAMovePtr_flags_mask_MoveAbsoluteX, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAMovePtr_flags_mask_MoveAbsoluteY, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_xHigh = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SAMovePtr_xHigh, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SAMovePtr_xHigh, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_xLow = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SAMovePtr_xLow, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SAMovePtr_xLow, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_yHigh = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SAMovePtr_yHigh, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SAMovePtr_yHigh, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_yLow = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SAMovePtr_yLow, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SAMovePtr_yLow, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
}
}
-static void struct_SAPtrBtn(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_SAPtrBtn(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -20982,23 +21375,23 @@ static void struct_SAPtrBtn(tvbuff_t *tvb, int *offsetp, proto_tree *root, int l
int f_count;
int f_button;
- item = proto_tree_add_item(root, hf_x11_struct_SAPtrBtn, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_SAPtrBtn, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- f_type = field8(tvb, offsetp, t, hf_x11_struct_SAPtrBtn_type, little_endian);
+ f_type = field8(tvb, offsetp, t, hf_x11_struct_SAPtrBtn_type, byte_order);
f_flags = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SAPtrBtn_flags, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SAPtrBtn_flags, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_count = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SAPtrBtn_count, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SAPtrBtn_count, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_button = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SAPtrBtn_button, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SAPtrBtn_button, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(4);
}
}
-static void struct_SALockPtrBtn(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_SALockPtrBtn(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -21008,21 +21401,21 @@ static void struct_SALockPtrBtn(tvbuff_t *tvb, int *offsetp, proto_tree *root, i
int f_flags;
int f_button;
- item = proto_tree_add_item(root, hf_x11_struct_SALockPtrBtn, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_SALockPtrBtn, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- f_type = field8(tvb, offsetp, t, hf_x11_struct_SALockPtrBtn_type, little_endian);
+ f_type = field8(tvb, offsetp, t, hf_x11_struct_SALockPtrBtn_type, byte_order);
f_flags = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SALockPtrBtn_flags, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SALockPtrBtn_flags, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
f_button = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SALockPtrBtn_button, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SALockPtrBtn_button, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(4);
}
}
-static void struct_SASetPtrDflt(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_SASetPtrDflt(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -21033,33 +21426,33 @@ static void struct_SASetPtrDflt(tvbuff_t *tvb, int *offsetp, proto_tree *root, i
int f_affect;
int f_value;
- item = proto_tree_add_item(root, hf_x11_struct_SASetPtrDflt, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_SASetPtrDflt, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- f_type = field8(tvb, offsetp, t, hf_x11_struct_SASetPtrDflt_type, little_endian);
+ f_type = field8(tvb, offsetp, t, hf_x11_struct_SASetPtrDflt_type, byte_order);
f_flags = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetPtrDflt_flags, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetPtrDflt_flags, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetPtrDflt_flags_mask_AffectDfltButton, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetPtrDflt_flags_mask_DfltBtnAbsolute, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetPtrDflt_flags_mask_AffectDfltButton, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetPtrDflt_flags_mask_DfltBtnAbsolute, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_affect = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetPtrDflt_affect, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetPtrDflt_affect, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetPtrDflt_affect_mask_AffectDfltButton, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetPtrDflt_affect_mask_DfltBtnAbsolute, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetPtrDflt_affect_mask_AffectDfltButton, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetPtrDflt_affect_mask_DfltBtnAbsolute, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_value = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SASetPtrDflt_value, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SASetPtrDflt_value, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(4);
}
}
-static void struct_SAIsoLock(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_SAIsoLock(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -21074,94 +21467,94 @@ static void struct_SAIsoLock(tvbuff_t *tvb, int *offsetp, proto_tree *root, int
int f_vmodsHigh;
int f_vmodsLow;
- item = proto_tree_add_item(root, hf_x11_struct_SAIsoLock, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_SAIsoLock, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- f_type = field8(tvb, offsetp, t, hf_x11_struct_SAIsoLock_type, little_endian);
+ f_type = field8(tvb, offsetp, t, hf_x11_struct_SAIsoLock_type, byte_order);
f_flags = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SAIsoLock_flags, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SAIsoLock_flags, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_flags_mask_NoLock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_flags_mask_NoUnlock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_flags_mask_GroupAbsolute, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_flags_mask_ISODfltIsGroup, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_flags_mask_NoLock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_flags_mask_NoUnlock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_flags_mask_GroupAbsolute, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_flags_mask_ISODfltIsGroup, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_mask = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SAIsoLock_mask, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SAIsoLock_mask, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_realMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SAIsoLock_realMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SAIsoLock_realMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_group = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SAIsoLock_group, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SAIsoLock_group, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_affect = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SAIsoLock_affect, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SAIsoLock_affect, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_affect_mask_Ctrls, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_affect_mask_Ptr, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_affect_mask_Group, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_affect_mask_Mods, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_affect_mask_Ctrls, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_affect_mask_Ptr, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_affect_mask_Group, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_affect_mask_Mods, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_vmodsHigh = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SAIsoLock_vmodsHigh, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SAIsoLock_vmodsHigh, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsHigh_mask_8, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsHigh_mask_9, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsHigh_mask_10, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsHigh_mask_11, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsHigh_mask_12, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsHigh_mask_13, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsHigh_mask_14, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsHigh_mask_15, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsHigh_mask_8, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsHigh_mask_9, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsHigh_mask_10, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsHigh_mask_11, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsHigh_mask_12, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsHigh_mask_13, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsHigh_mask_14, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsHigh_mask_15, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_vmodsLow = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SAIsoLock_vmodsLow, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SAIsoLock_vmodsLow, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsLow_mask_0, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsLow_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsLow_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsLow_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsLow_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsLow_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsLow_mask_6, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsLow_mask_7, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsLow_mask_0, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsLow_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsLow_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsLow_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsLow_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsLow_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsLow_mask_6, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsLow_mask_7, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
}
}
-static void struct_SATerminate(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_SATerminate(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -21169,14 +21562,14 @@ static void struct_SATerminate(tvbuff_t *tvb, int *offsetp, proto_tree *root, in
proto_tree *t;
int f_type;
- item = proto_tree_add_item(root, hf_x11_struct_SATerminate, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_SATerminate, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- f_type = field8(tvb, offsetp, t, hf_x11_struct_SATerminate_type, little_endian);
+ f_type = field8(tvb, offsetp, t, hf_x11_struct_SATerminate_type, byte_order);
UNUSED(7);
}
}
-static void struct_SASwitchScreen(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_SASwitchScreen(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -21186,20 +21579,20 @@ static void struct_SASwitchScreen(tvbuff_t *tvb, int *offsetp, proto_tree *root,
int f_flags;
int f_newScreen;
- item = proto_tree_add_item(root, hf_x11_struct_SASwitchScreen, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_SASwitchScreen, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- f_type = field8(tvb, offsetp, t, hf_x11_struct_SASwitchScreen_type, little_endian);
+ f_type = field8(tvb, offsetp, t, hf_x11_struct_SASwitchScreen_type, byte_order);
f_flags = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SASwitchScreen_flags, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SASwitchScreen_flags, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_newScreen = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SASwitchScreen_newScreen, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SASwitchScreen_newScreen, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(5);
}
}
-static void struct_SASetControls(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_SASetControls(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -21209,40 +21602,40 @@ static void struct_SASetControls(tvbuff_t *tvb, int *offsetp, proto_tree *root,
int f_boolCtrlsHigh;
int f_boolCtrlsLow;
- item = proto_tree_add_item(root, hf_x11_struct_SASetControls, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_SASetControls, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- f_type = field8(tvb, offsetp, t, hf_x11_struct_SASetControls_type, little_endian);
+ f_type = field8(tvb, offsetp, t, hf_x11_struct_SASetControls_type, byte_order);
UNUSED(3);
f_boolCtrlsHigh = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetControls_boolCtrlsHigh, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetControls_boolCtrlsHigh, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsHigh_mask_AccessXFeedback, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsHigh_mask_AudibleBell, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsHigh_mask_Overlay1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsHigh_mask_Overlay2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsHigh_mask_IgnoreGroupLock, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsHigh_mask_AccessXFeedback, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsHigh_mask_AudibleBell, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsHigh_mask_Overlay1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsHigh_mask_Overlay2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsHigh_mask_IgnoreGroupLock, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_boolCtrlsLow = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetControls_boolCtrlsLow, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetControls_boolCtrlsLow, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsLow_mask_RepeatKeys, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsLow_mask_SlowKeys, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsLow_mask_BounceKeys, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsLow_mask_StickyKeys, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsLow_mask_MouseKeys, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsLow_mask_MouseKeysAccel, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsLow_mask_AccessXKeys, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsLow_mask_AccessXTimeout, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsLow_mask_RepeatKeys, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsLow_mask_SlowKeys, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsLow_mask_BounceKeys, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsLow_mask_StickyKeys, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsLow_mask_MouseKeys, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsLow_mask_MouseKeysAccel, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsLow_mask_AccessXKeys, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsLow_mask_AccessXTimeout, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
UNUSED(2);
}
}
-static void struct_SAActionMessage(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_SAActionMessage(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -21251,23 +21644,23 @@ static void struct_SAActionMessage(tvbuff_t *tvb, int *offsetp, proto_tree *root
int f_type;
int f_flags;
- item = proto_tree_add_item(root, hf_x11_struct_SAActionMessage, tvb, *offsetp, 3, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_SAActionMessage, tvb, *offsetp, 3, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- f_type = field8(tvb, offsetp, t, hf_x11_struct_SAActionMessage_type, little_endian);
+ f_type = field8(tvb, offsetp, t, hf_x11_struct_SAActionMessage_type, byte_order);
f_flags = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SAActionMessage_flags, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SAActionMessage_flags, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAActionMessage_flags_mask_OnPress, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAActionMessage_flags_mask_OnRelease, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SAActionMessage_flags_mask_GenKeyEvent, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAActionMessage_flags_mask_OnPress, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAActionMessage_flags_mask_OnRelease, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SAActionMessage_flags_mask_GenKeyEvent, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
- listOfByte(tvb, offsetp, t, hf_x11_struct_SAActionMessage_message, 6, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_struct_SAActionMessage_message, 6, byte_order);
}
}
-static void struct_SARedirectKey(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_SARedirectKey(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -21282,102 +21675,102 @@ static void struct_SARedirectKey(tvbuff_t *tvb, int *offsetp, proto_tree *root,
int f_vmodsHigh;
int f_vmodsLow;
- item = proto_tree_add_item(root, hf_x11_struct_SARedirectKey, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_SARedirectKey, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- f_type = field8(tvb, offsetp, t, hf_x11_struct_SARedirectKey_type, little_endian);
+ f_type = field8(tvb, offsetp, t, hf_x11_struct_SARedirectKey_type, byte_order);
f_newkey = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SARedirectKey_newkey, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SARedirectKey_newkey, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_mask = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SARedirectKey_mask, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SARedirectKey_mask, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_realModifiers = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SARedirectKey_realModifiers, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SARedirectKey_realModifiers, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_vmodsMaskHigh = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SARedirectKey_vmodsMaskHigh, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SARedirectKey_vmodsMaskHigh, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskHigh_mask_8, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskHigh_mask_9, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskHigh_mask_10, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskHigh_mask_11, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskHigh_mask_12, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskHigh_mask_13, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskHigh_mask_14, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskHigh_mask_15, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskHigh_mask_8, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskHigh_mask_9, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskHigh_mask_10, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskHigh_mask_11, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskHigh_mask_12, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskHigh_mask_13, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskHigh_mask_14, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskHigh_mask_15, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_vmodsMaskLow = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SARedirectKey_vmodsMaskLow, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SARedirectKey_vmodsMaskLow, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskLow_mask_0, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskLow_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskLow_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskLow_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskLow_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskLow_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskLow_mask_6, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskLow_mask_7, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskLow_mask_0, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskLow_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskLow_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskLow_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskLow_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskLow_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskLow_mask_6, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskLow_mask_7, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_vmodsHigh = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SARedirectKey_vmodsHigh, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SARedirectKey_vmodsHigh, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsHigh_mask_8, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsHigh_mask_9, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsHigh_mask_10, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsHigh_mask_11, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsHigh_mask_12, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsHigh_mask_13, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsHigh_mask_14, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsHigh_mask_15, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsHigh_mask_8, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsHigh_mask_9, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsHigh_mask_10, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsHigh_mask_11, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsHigh_mask_12, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsHigh_mask_13, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsHigh_mask_14, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsHigh_mask_15, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_vmodsLow = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SARedirectKey_vmodsLow, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SARedirectKey_vmodsLow, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsLow_mask_0, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsLow_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsLow_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsLow_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsLow_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsLow_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsLow_mask_6, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsLow_mask_7, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsLow_mask_0, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsLow_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsLow_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsLow_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsLow_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsLow_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsLow_mask_6, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsLow_mask_7, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
}
}
-static void struct_SADeviceBtn(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_SADeviceBtn(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -21389,26 +21782,26 @@ static void struct_SADeviceBtn(tvbuff_t *tvb, int *offsetp, proto_tree *root, in
int f_button;
int f_device;
- item = proto_tree_add_item(root, hf_x11_struct_SADeviceBtn, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_SADeviceBtn, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- f_type = field8(tvb, offsetp, t, hf_x11_struct_SADeviceBtn_type, little_endian);
+ f_type = field8(tvb, offsetp, t, hf_x11_struct_SADeviceBtn_type, byte_order);
f_flags = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SADeviceBtn_flags, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SADeviceBtn_flags, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_count = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SADeviceBtn_count, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SADeviceBtn_count, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_button = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SADeviceBtn_button, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SADeviceBtn_button, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_device = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SADeviceBtn_device, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SADeviceBtn_device, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
}
}
-static void struct_SALockDeviceBtn(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_SALockDeviceBtn(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -21419,28 +21812,28 @@ static void struct_SALockDeviceBtn(tvbuff_t *tvb, int *offsetp, proto_tree *root
int f_button;
int f_device;
- item = proto_tree_add_item(root, hf_x11_struct_SALockDeviceBtn, tvb, *offsetp, 5, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_SALockDeviceBtn, tvb, *offsetp, 5, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- f_type = field8(tvb, offsetp, t, hf_x11_struct_SALockDeviceBtn_type, little_endian);
+ f_type = field8(tvb, offsetp, t, hf_x11_struct_SALockDeviceBtn_type, byte_order);
f_flags = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SALockDeviceBtn_flags, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SALockDeviceBtn_flags, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SALockDeviceBtn_flags_mask_NoLock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_SALockDeviceBtn_flags_mask_NoUnlock, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SALockDeviceBtn_flags_mask_NoLock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_SALockDeviceBtn_flags_mask_NoUnlock, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
UNUSED(1);
f_button = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SALockDeviceBtn_button, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SALockDeviceBtn_button, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_device = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SALockDeviceBtn_device, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SALockDeviceBtn_device, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
}
-static void struct_SADeviceValuator(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_SADeviceValuator(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -21455,30 +21848,30 @@ static void struct_SADeviceValuator(tvbuff_t *tvb, int *offsetp, proto_tree *roo
int f_val2index;
int f_val2value;
- item = proto_tree_add_item(root, hf_x11_struct_SADeviceValuator, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_SADeviceValuator, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
- f_type = field8(tvb, offsetp, t, hf_x11_struct_SADeviceValuator_type, little_endian);
+ f_type = field8(tvb, offsetp, t, hf_x11_struct_SADeviceValuator_type, byte_order);
f_device = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SADeviceValuator_device, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SADeviceValuator_device, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- f_val1what = field8(tvb, offsetp, t, hf_x11_struct_SADeviceValuator_val1what, little_endian);
+ f_val1what = field8(tvb, offsetp, t, hf_x11_struct_SADeviceValuator_val1what, byte_order);
f_val1index = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SADeviceValuator_val1index, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SADeviceValuator_val1index, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_val1value = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SADeviceValuator_val1value, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SADeviceValuator_val1value, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- f_val2what = field8(tvb, offsetp, t, hf_x11_struct_SADeviceValuator_val2what, little_endian);
+ f_val2what = field8(tvb, offsetp, t, hf_x11_struct_SADeviceValuator_val2what, byte_order);
f_val2index = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SADeviceValuator_val2index, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SADeviceValuator_val2index, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_val2value = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SADeviceValuator_val2value, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SADeviceValuator_val2value, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
}
-static void struct_Action(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_Action(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order, int count)
{
int i;
int base = *offsetp;
@@ -21486,70 +21879,70 @@ static void struct_Action(tvbuff_t *tvb, int *offsetp, proto_tree *root, int lit
proto_item *item;
proto_tree *t;
int f_type;
- item = proto_tree_add_item(root, hf_x11_union_Action, tvb, base, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_union_Action, tvb, base, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
*offsetp = base;
- struct_SANoAction(tvb, offsetp, t, little_endian, 1);
+ struct_SANoAction(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_SASetMods(tvb, offsetp, t, little_endian, 1);
+ struct_SASetMods(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_SASetMods(tvb, offsetp, t, little_endian, 1);
+ struct_SASetMods(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_SASetMods(tvb, offsetp, t, little_endian, 1);
+ struct_SASetMods(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_SASetGroup(tvb, offsetp, t, little_endian, 1);
+ struct_SASetGroup(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_SASetGroup(tvb, offsetp, t, little_endian, 1);
+ struct_SASetGroup(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_SASetGroup(tvb, offsetp, t, little_endian, 1);
+ struct_SASetGroup(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_SAMovePtr(tvb, offsetp, t, little_endian, 1);
+ struct_SAMovePtr(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_SAPtrBtn(tvb, offsetp, t, little_endian, 1);
+ struct_SAPtrBtn(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_SALockPtrBtn(tvb, offsetp, t, little_endian, 1);
+ struct_SALockPtrBtn(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_SASetPtrDflt(tvb, offsetp, t, little_endian, 1);
+ struct_SASetPtrDflt(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_SAIsoLock(tvb, offsetp, t, little_endian, 1);
+ struct_SAIsoLock(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_SATerminate(tvb, offsetp, t, little_endian, 1);
+ struct_SATerminate(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_SASwitchScreen(tvb, offsetp, t, little_endian, 1);
+ struct_SASwitchScreen(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_SASetControls(tvb, offsetp, t, little_endian, 1);
+ struct_SASetControls(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_SASetControls(tvb, offsetp, t, little_endian, 1);
+ struct_SASetControls(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_SAActionMessage(tvb, offsetp, t, little_endian, 1);
+ struct_SAActionMessage(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_SARedirectKey(tvb, offsetp, t, little_endian, 1);
+ struct_SARedirectKey(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_SADeviceBtn(tvb, offsetp, t, little_endian, 1);
+ struct_SADeviceBtn(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_SALockDeviceBtn(tvb, offsetp, t, little_endian, 1);
+ struct_SALockDeviceBtn(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- struct_SADeviceValuator(tvb, offsetp, t, little_endian, 1);
+ struct_SADeviceValuator(tvb, offsetp, t, byte_order, 1);
*offsetp = base;
- f_type = field8(tvb, offsetp, t, hf_x11_union_Action_type, little_endian);
+ f_type = field8(tvb, offsetp, t, hf_x11_union_Action_type, byte_order);
base += 8;
}
*offsetp = base;
}
-static void xkbUseExtension(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbUseExtension(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_wantedMajor;
int f_wantedMinor;
f_wantedMajor = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_UseExtension_wantedMajor, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_UseExtension_wantedMajor, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_wantedMinor = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_UseExtension_wantedMinor, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_UseExtension_wantedMinor, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xkbUseExtension_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xkbUseExtension_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_supported;
@@ -21560,7 +21953,7 @@ static void xkbUseExtension_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
REPLY(reply);
f_supported = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_UseExtension_reply_supported, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_UseExtension_reply_supported, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -21568,18 +21961,18 @@ static void xkbUseExtension_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_serverMajor = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_UseExtension_reply_serverMajor, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_UseExtension_reply_serverMajor, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_serverMinor = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_UseExtension_reply_serverMinor, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_UseExtension_reply_serverMinor, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(20);
}
-static void xkbSelectEvents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbSelectEvents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_deviceSpec;
int f_affectWhich;
@@ -21588,32 +21981,32 @@ static void xkbSelectEvents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_affectMap;
int f_map;
f_deviceSpec = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SelectEvents_deviceSpec, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SelectEvents_deviceSpec, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- f_affectWhich = field16(tvb, offsetp, t, hf_x11_xkb_SelectEvents_affectWhich, little_endian);
- f_clear = field16(tvb, offsetp, t, hf_x11_xkb_SelectEvents_clear, little_endian);
- f_selectAll = field16(tvb, offsetp, t, hf_x11_xkb_SelectEvents_selectAll, little_endian);
- f_affectMap = field16(tvb, offsetp, t, hf_x11_xkb_SelectEvents_affectMap, little_endian);
- f_map = field16(tvb, offsetp, t, hf_x11_xkb_SelectEvents_map, little_endian);
+ f_affectWhich = field16(tvb, offsetp, t, hf_x11_xkb_SelectEvents_affectWhich, byte_order);
+ f_clear = field16(tvb, offsetp, t, hf_x11_xkb_SelectEvents_clear, byte_order);
+ f_selectAll = field16(tvb, offsetp, t, hf_x11_xkb_SelectEvents_selectAll, byte_order);
+ f_affectMap = field16(tvb, offsetp, t, hf_x11_xkb_SelectEvents_affectMap, byte_order);
+ f_map = field16(tvb, offsetp, t, hf_x11_xkb_SelectEvents_map, byte_order);
if (((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1 << 0)) != 0) {
int f_affectNewKeyboard;
int f_newKeyboardDetails;
f_affectNewKeyboard = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_NewKeyboardNotify_affectNewKeyboard, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_NewKeyboardNotify_affectNewKeyboard, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NewKeyboardNotify_affectNewKeyboard_mask_Keycodes, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NewKeyboardNotify_affectNewKeyboard_mask_Geometry, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NewKeyboardNotify_affectNewKeyboard_mask_DeviceID, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NewKeyboardNotify_affectNewKeyboard_mask_Keycodes, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NewKeyboardNotify_affectNewKeyboard_mask_Geometry, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NewKeyboardNotify_affectNewKeyboard_mask_DeviceID, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_newKeyboardDetails = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_NewKeyboardNotify_newKeyboardDetails, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_NewKeyboardNotify_newKeyboardDetails, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NewKeyboardNotify_newKeyboardDetails_mask_Keycodes, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NewKeyboardNotify_newKeyboardDetails_mask_Geometry, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NewKeyboardNotify_newKeyboardDetails_mask_DeviceID, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NewKeyboardNotify_newKeyboardDetails_mask_Keycodes, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NewKeyboardNotify_newKeyboardDetails_mask_Geometry, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NewKeyboardNotify_newKeyboardDetails_mask_DeviceID, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
}
@@ -21622,42 +22015,42 @@ static void xkbSelectEvents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_stateDetails;
f_affectState = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_StateNotify_affectState, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_StateNotify_affectState, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_ModifierState, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_ModifierBase, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_ModifierLatch, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_ModifierLock, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_GroupState, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_GroupBase, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_GroupLatch, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_GroupLock, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_CompatState, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_GrabMods, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_CompatGrabMods, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_LookupMods, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_CompatLookupMods, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_PointerButtons, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_ModifierState, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_ModifierBase, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_ModifierLatch, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_ModifierLock, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_GroupState, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_GroupBase, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_GroupLatch, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_GroupLock, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_CompatState, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_GrabMods, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_CompatGrabMods, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_LookupMods, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_CompatLookupMods, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_PointerButtons, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_stateDetails = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_StateNotify_stateDetails, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_StateNotify_stateDetails, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_ModifierState, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_ModifierBase, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_ModifierLatch, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_ModifierLock, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_GroupState, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_GroupBase, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_GroupLatch, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_GroupLock, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_CompatState, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_GrabMods, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_CompatGrabMods, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_LookupMods, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_CompatLookupMods, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_PointerButtons, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_ModifierState, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_ModifierBase, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_ModifierLatch, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_ModifierLock, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_GroupState, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_GroupBase, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_GroupLatch, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_GroupLock, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_CompatState, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_GrabMods, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_CompatGrabMods, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_LookupMods, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_CompatLookupMods, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_PointerButtons, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
}
@@ -21666,24 +22059,24 @@ static void xkbSelectEvents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_ctrlDetails;
f_affectCtrls = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_ControlsNotify_affectCtrls, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_ControlsNotify_affectCtrls, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_affectCtrls_mask_GroupsWrap, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_affectCtrls_mask_InternalMods, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_affectCtrls_mask_IgnoreLockMods, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_affectCtrls_mask_PerKeyRepeat, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_affectCtrls_mask_ControlsEnabled, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_affectCtrls_mask_GroupsWrap, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_affectCtrls_mask_InternalMods, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_affectCtrls_mask_IgnoreLockMods, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_affectCtrls_mask_PerKeyRepeat, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_affectCtrls_mask_ControlsEnabled, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
f_ctrlDetails = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_ControlsNotify_ctrlDetails, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_ControlsNotify_ctrlDetails, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_ctrlDetails_mask_GroupsWrap, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_ctrlDetails_mask_InternalMods, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_ctrlDetails_mask_IgnoreLockMods, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_ctrlDetails_mask_PerKeyRepeat, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_ctrlDetails_mask_ControlsEnabled, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_ctrlDetails_mask_GroupsWrap, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_ctrlDetails_mask_InternalMods, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_ctrlDetails_mask_IgnoreLockMods, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_ctrlDetails_mask_PerKeyRepeat, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_ctrlDetails_mask_ControlsEnabled, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
}
@@ -21691,20 +22084,20 @@ static void xkbSelectEvents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_affectIndicatorState;
int f_indicatorStateDetails;
f_affectIndicatorState = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SelectEvents_IndicatorStateNotify_affectIndicatorState, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SelectEvents_IndicatorStateNotify_affectIndicatorState, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_indicatorStateDetails = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SelectEvents_IndicatorStateNotify_indicatorStateDetails, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SelectEvents_IndicatorStateNotify_indicatorStateDetails, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if (((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1 << 5)) != 0) {
int f_affectIndicatorMap;
int f_indicatorMapDetails;
f_affectIndicatorMap = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SelectEvents_IndicatorMapNotify_affectIndicatorMap, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SelectEvents_IndicatorMapNotify_affectIndicatorMap, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_indicatorMapDetails = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SelectEvents_IndicatorMapNotify_indicatorMapDetails, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SelectEvents_IndicatorMapNotify_indicatorMapDetails, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if (((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1 << 6)) != 0) {
@@ -21712,42 +22105,42 @@ static void xkbSelectEvents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_namesDetails;
f_affectNames = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_NamesNotify_affectNames, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_NamesNotify_affectNames, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_Keycodes, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_Geometry, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_Symbols, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_PhysSymbols, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_Types, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_Compat, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_KeyTypeNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_KTLevelNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_IndicatorNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_KeyNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_KeyAliases, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_VirtualModNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_GroupNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_RGNames, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_Keycodes, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_Geometry, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_Symbols, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_PhysSymbols, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_Types, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_Compat, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_KeyTypeNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_KTLevelNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_IndicatorNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_KeyNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_KeyAliases, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_VirtualModNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_GroupNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_RGNames, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_namesDetails = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_Keycodes, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_Geometry, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_Symbols, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_PhysSymbols, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_Types, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_Compat, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_KeyTypeNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_KTLevelNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_IndicatorNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_KeyNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_KeyAliases, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_VirtualModNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_GroupNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_RGNames, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_Keycodes, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_Geometry, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_Symbols, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_PhysSymbols, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_Types, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_Compat, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_KeyTypeNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_KTLevelNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_IndicatorNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_KeyNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_KeyAliases, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_VirtualModNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_GroupNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_RGNames, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
}
@@ -21756,18 +22149,18 @@ static void xkbSelectEvents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_compatDetails;
f_affectCompat = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_CompatMapNotify_affectCompat, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_CompatMapNotify_affectCompat, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_CompatMapNotify_affectCompat_mask_SymInterp, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_CompatMapNotify_affectCompat_mask_GroupCompat, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_CompatMapNotify_affectCompat_mask_SymInterp, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_CompatMapNotify_affectCompat_mask_GroupCompat, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_compatDetails = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_CompatMapNotify_compatDetails, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_CompatMapNotify_compatDetails, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_CompatMapNotify_compatDetails_mask_SymInterp, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_CompatMapNotify_compatDetails_mask_GroupCompat, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_CompatMapNotify_compatDetails_mask_SymInterp, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_CompatMapNotify_compatDetails_mask_GroupCompat, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
}
@@ -21775,20 +22168,20 @@ static void xkbSelectEvents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_affectBell;
int f_bellDetails;
f_affectBell = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SelectEvents_BellNotify_affectBell, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SelectEvents_BellNotify_affectBell, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_bellDetails = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SelectEvents_BellNotify_bellDetails, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SelectEvents_BellNotify_bellDetails, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
if (((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1 << 9)) != 0) {
int f_affectMsgDetails;
int f_msgDetails;
f_affectMsgDetails = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SelectEvents_ActionMessage_affectMsgDetails, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SelectEvents_ActionMessage_affectMsgDetails, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_msgDetails = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SelectEvents_ActionMessage_msgDetails, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SelectEvents_ActionMessage_msgDetails, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
if (((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1 << 10)) != 0) {
@@ -21796,28 +22189,28 @@ static void xkbSelectEvents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_accessXDetails;
f_affectAccessX = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_SKPress, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_SKAccept, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_SKReject, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_SKRelease, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_BKAccept, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_BKReject, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_AXKWarning, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_SKPress, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_SKAccept, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_SKReject, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_SKRelease, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_BKAccept, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_BKReject, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_AXKWarning, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_accessXDetails = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_SKPress, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_SKAccept, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_SKReject, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_SKRelease, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_BKAccept, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_BKReject, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_AXKWarning, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_SKPress, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_SKAccept, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_SKReject, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_SKRelease, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_BKAccept, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_BKReject, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_AXKWarning, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
}
@@ -21826,30 +22219,30 @@ static void xkbSelectEvents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_extdevDetails;
f_affectExtDev = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_affectExtDev, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_affectExtDev, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_affectExtDev_mask_Keyboards, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_affectExtDev_mask_ButtonActions, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_affectExtDev_mask_IndicatorNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_affectExtDev_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_affectExtDev_mask_IndicatorState, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_affectExtDev_mask_Keyboards, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_affectExtDev_mask_ButtonActions, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_affectExtDev_mask_IndicatorNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_affectExtDev_mask_IndicatorMaps, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_affectExtDev_mask_IndicatorState, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_extdevDetails = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_extdevDetails, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_extdevDetails, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_extdevDetails_mask_Keyboards, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_extdevDetails_mask_ButtonActions, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_extdevDetails_mask_IndicatorNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_extdevDetails_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_extdevDetails_mask_IndicatorState, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_extdevDetails_mask_Keyboards, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_extdevDetails_mask_ButtonActions, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_extdevDetails_mask_IndicatorNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_extdevDetails_mask_IndicatorMaps, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_extdevDetails_mask_IndicatorState, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
}
}
-static void xkbBell(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbBell(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_deviceSpec;
int f_bellClass;
@@ -21862,48 +22255,48 @@ static void xkbBell(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_t
int f_name;
int f_window;
f_deviceSpec = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_Bell_deviceSpec, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_Bell_deviceSpec, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_bellClass = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_Bell_bellClass, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_Bell_bellClass, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_bellID = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_Bell_bellID, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_Bell_bellID, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_percent = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_Bell_percent, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_Bell_percent, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_forceSound = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_Bell_forceSound, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_Bell_forceSound, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_eventOnly = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_Bell_eventOnly, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_Bell_eventOnly, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
f_pitch = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_Bell_pitch, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_Bell_pitch, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_duration = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_Bell_duration, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_Bell_duration, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
f_name = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_Bell_name, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_Bell_name, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_Bell_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_Bell_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xkbGetState(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbGetState(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_deviceSpec;
f_deviceSpec = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetState_deviceSpec, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetState_deviceSpec, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
}
-static void xkbGetState_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xkbGetState_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_deviceID;
@@ -21918,6 +22311,7 @@ static void xkbGetState_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, p
int f_compatState;
int f_grabMods;
int f_compatGrabMods;
+ int f_lookupMods;
int f_compatLookupMods;
int f_ptrBtnState;
@@ -21925,7 +22319,7 @@ static void xkbGetState_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, p
REPLY(reply);
f_deviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetState_reply_deviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetState_reply_deviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -21933,160 +22327,175 @@ static void xkbGetState_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, p
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_mods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_mods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_mods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_baseMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_baseMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_baseMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_latchedMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_latchedMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_latchedMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_lockedMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_lockedMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_lockedMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_Any, tvb, *offsetp, 1, little_endian);
- }
- *offsetp += 1;
- f_group = field8(tvb, offsetp, t, hf_x11_xkb_GetState_reply_group, little_endian);
- f_lockedGroup = field8(tvb, offsetp, t, hf_x11_xkb_GetState_reply_lockedGroup, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_Any, tvb, *offsetp, 1, byte_order);
+ }
+ *offsetp += 1;
+ f_group = field8(tvb, offsetp, t, hf_x11_xkb_GetState_reply_group, byte_order);
+ f_lockedGroup = field8(tvb, offsetp, t, hf_x11_xkb_GetState_reply_lockedGroup, byte_order);
f_baseGroup = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetState_reply_baseGroup, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetState_reply_baseGroup, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_latchedGroup = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetState_reply_latchedGroup, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetState_reply_latchedGroup, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_compatState = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_compatState, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_compatState, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_grabMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_grabMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_grabMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_compatGrabMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_compatGrabMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_compatGrabMods, tvb, *offsetp, 1, byte_order);
+ proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_Any, tvb, *offsetp, 1, byte_order);
+ }
+ *offsetp += 1;
+ f_lookupMods = VALUE8(tvb, *offsetp);
+ {
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_lookupMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lookupMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lookupMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lookupMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lookupMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lookupMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lookupMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lookupMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lookupMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lookupMods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_compatLookupMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_compatLookupMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_compatLookupMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
UNUSED(1);
f_ptrBtnState = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_ptrBtnState, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_ptrBtnState, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Shift, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Lock, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Control, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Mod1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Mod2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Mod3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Mod4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Mod5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Button1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Button2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Button3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Button4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Button5, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Shift, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Lock, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Control, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Mod1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Mod2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Mod3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Mod4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Mod5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Button1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Button2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Button3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Button4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Button5, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
UNUSED(6);
}
-static void xkbLatchLockState(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbLatchLockState(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_deviceSpec;
int f_affectModLocks;
@@ -22097,75 +22506,75 @@ static void xkbLatchLockState(tvbuff_t *tvb, packet_info *pinfo _U_, int *offset
int f_latchGroup;
int f_groupLatch;
f_deviceSpec = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_LatchLockState_deviceSpec, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_LatchLockState_deviceSpec, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_affectModLocks = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_LatchLockState_affectModLocks, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_LatchLockState_affectModLocks, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_modLocks = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_LatchLockState_modLocks, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_LatchLockState_modLocks, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_lockGroup = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_LatchLockState_lockGroup, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_LatchLockState_lockGroup, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- f_groupLock = field8(tvb, offsetp, t, hf_x11_xkb_LatchLockState_groupLock, little_endian);
+ f_groupLock = field8(tvb, offsetp, t, hf_x11_xkb_LatchLockState_groupLock, byte_order);
f_affectModLatches = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_LatchLockState_affectModLatches, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_LatchLockState_affectModLatches, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
UNUSED(1);
f_latchGroup = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_LatchLockState_latchGroup, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_LatchLockState_latchGroup, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_groupLatch = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_LatchLockState_groupLatch, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_LatchLockState_groupLatch, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xkbGetControls(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbGetControls(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_deviceSpec;
f_deviceSpec = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetControls_deviceSpec, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetControls_deviceSpec, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
}
-static void xkbGetControls_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xkbGetControls_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_deviceID;
@@ -22196,7 +22605,7 @@ static void xkbGetControls_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp
REPLY(reply);
f_deviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_deviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_deviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -22204,173 +22613,173 @@ static void xkbGetControls_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_mouseKeysDfltBtn = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_mouseKeysDfltBtn, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_mouseKeysDfltBtn, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_numGroups = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_numGroups, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_numGroups, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_groupsWrap = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_groupsWrap, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_groupsWrap, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_internalModsMask = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_internalModsMask, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_internalModsMask, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_ignoreLockModsMask = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_ignoreLockModsMask, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_ignoreLockModsMask, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_internalModsRealMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_internalModsRealMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_internalModsRealMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_ignoreLockModsRealMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
UNUSED(1);
f_internalModsVmods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_internalModsVmods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_internalModsVmods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_15, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_15, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_ignoreLockModsVmods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_15, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_15, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_repeatDelay = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_repeatDelay, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_repeatDelay, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_repeatInterval = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_repeatInterval, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_repeatInterval, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_slowKeysDelay = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_slowKeysDelay, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_slowKeysDelay, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_debounceDelay = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_debounceDelay, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_debounceDelay, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_mouseKeysDelay = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_mouseKeysDelay, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_mouseKeysDelay, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_mouseKeysInterval = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_mouseKeysInterval, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_mouseKeysInterval, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_mouseKeysTimeToMax = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_mouseKeysTimeToMax, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_mouseKeysTimeToMax, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_mouseKeysMaxSpeed = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_mouseKeysMaxSpeed, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_mouseKeysMaxSpeed, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_mouseKeysCurve = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_mouseKeysCurve, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_mouseKeysCurve, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- struct_AXOption(tvb, offsetp, t, little_endian, 1);
+ struct_AXOption(tvb, offsetp, t, byte_order, 1);
f_accessXTimeout = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_accessXTimeout, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_accessXTimeout, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- struct_AXOption(tvb, offsetp, t, little_endian, 1);
- struct_AXOption(tvb, offsetp, t, little_endian, 1);
+ struct_AXOption(tvb, offsetp, t, byte_order, 1);
+ struct_AXOption(tvb, offsetp, t, byte_order, 1);
UNUSED(2);
- f_accessXTimeoutMask = field32(tvb, offsetp, t, hf_x11_xkb_GetControls_reply_accessXTimeoutMask, little_endian);
- f_accessXTimeoutValues = field32(tvb, offsetp, t, hf_x11_xkb_GetControls_reply_accessXTimeoutValues, little_endian);
- f_enabledControls = field32(tvb, offsetp, t, hf_x11_xkb_GetControls_reply_enabledControls, little_endian);
- listOfByte(tvb, offsetp, t, hf_x11_xkb_GetControls_reply_perKeyRepeat, 32, little_endian);
+ f_accessXTimeoutMask = field32(tvb, offsetp, t, hf_x11_xkb_GetControls_reply_accessXTimeoutMask, byte_order);
+ f_accessXTimeoutValues = field32(tvb, offsetp, t, hf_x11_xkb_GetControls_reply_accessXTimeoutValues, byte_order);
+ f_enabledControls = field32(tvb, offsetp, t, hf_x11_xkb_GetControls_reply_enabledControls, byte_order);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_GetControls_reply_perKeyRepeat, 32, byte_order);
}
-static void xkbSetControls(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbSetControls(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_deviceSpec;
int f_affectInternalRealMods;
- int f_interanlRealMods;
+ int f_internalRealMods;
int f_affectIgnoreLockRealMods;
int f_ignoreLockRealMods;
int f_affectInternalVirtualMods;
int f_internalVirtualMods;
- int f_affectInternalLockVirtualMods;
- int f_internalLockVirtualMods;
+ int f_affectIgnoreLockVirtualMods;
+ int f_ignoreLockVirtualMods;
int f_mouseKeysDfltBtn;
int f_groupsWrap;
int f_affectEnabledControls;
@@ -22389,216 +22798,216 @@ static void xkbSetControls(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_accessXTimeoutMask;
int f_accessXTimeoutValues;
f_deviceSpec = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetControls_deviceSpec, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetControls_deviceSpec, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_affectInternalRealMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_affectInternalRealMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_affectInternalRealMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_Any, tvb, *offsetp, 1, little_endian);
- }
- *offsetp += 1;
- f_interanlRealMods = VALUE8(tvb, *offsetp);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_Any, tvb, *offsetp, 1, byte_order);
+ }
+ *offsetp += 1;
+ f_internalRealMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_interanlRealMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_internalRealMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_interanlRealMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_interanlRealMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_interanlRealMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_interanlRealMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_interanlRealMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_interanlRealMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_interanlRealMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_interanlRealMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_interanlRealMods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalRealMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalRealMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalRealMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalRealMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalRealMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalRealMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalRealMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalRealMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalRealMods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_affectIgnoreLockRealMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_affectIgnoreLockRealMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_affectIgnoreLockRealMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_ignoreLockRealMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_ignoreLockRealMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_ignoreLockRealMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_affectInternalVirtualMods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_affectInternalVirtualMods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_affectInternalVirtualMods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_15, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_15, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_internalVirtualMods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_internalVirtualMods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_internalVirtualMods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_15, tvb, *offsetp, 2, little_endian);
- }
- *offsetp += 2;
- f_affectInternalLockVirtualMods = VALUE16(tvb, *offsetp);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_15, tvb, *offsetp, 2, byte_order);
+ }
+ *offsetp += 2;
+ f_affectIgnoreLockVirtualMods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_affectInternalLockVirtualMods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_15, tvb, *offsetp, 2, little_endian);
- }
- *offsetp += 2;
- f_internalLockVirtualMods = VALUE16(tvb, *offsetp);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_15, tvb, *offsetp, 2, byte_order);
+ }
+ *offsetp += 2;
+ f_ignoreLockVirtualMods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_internalLockVirtualMods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_ignoreLockVirtualMods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_15, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_15, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_mouseKeysDfltBtn = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetControls_mouseKeysDfltBtn, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetControls_mouseKeysDfltBtn, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_groupsWrap = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetControls_groupsWrap, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetControls_groupsWrap, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- struct_AXOption(tvb, offsetp, t, little_endian, 1);
+ struct_AXOption(tvb, offsetp, t, byte_order, 1);
UNUSED(2);
- f_affectEnabledControls = field32(tvb, offsetp, t, hf_x11_xkb_SetControls_affectEnabledControls, little_endian);
- f_enabledControls = field32(tvb, offsetp, t, hf_x11_xkb_SetControls_enabledControls, little_endian);
+ f_affectEnabledControls = field32(tvb, offsetp, t, hf_x11_xkb_SetControls_affectEnabledControls, byte_order);
+ f_enabledControls = field32(tvb, offsetp, t, hf_x11_xkb_SetControls_enabledControls, byte_order);
f_changeControls = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_changeControls, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_changeControls, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_changeControls_mask_GroupsWrap, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_changeControls_mask_InternalMods, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_changeControls_mask_IgnoreLockMods, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_changeControls_mask_PerKeyRepeat, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_changeControls_mask_ControlsEnabled, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_changeControls_mask_GroupsWrap, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_changeControls_mask_InternalMods, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_changeControls_mask_IgnoreLockMods, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_changeControls_mask_PerKeyRepeat, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_changeControls_mask_ControlsEnabled, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
f_repeatDelay = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetControls_repeatDelay, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetControls_repeatDelay, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_repeatInterval = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetControls_repeatInterval, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetControls_repeatInterval, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_slowKeysDelay = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetControls_slowKeysDelay, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetControls_slowKeysDelay, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_debounceDelay = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetControls_debounceDelay, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetControls_debounceDelay, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_mouseKeysDelay = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetControls_mouseKeysDelay, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetControls_mouseKeysDelay, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_mouseKeysInterval = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetControls_mouseKeysInterval, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetControls_mouseKeysInterval, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_mouseKeysTimeToMax = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetControls_mouseKeysTimeToMax, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetControls_mouseKeysTimeToMax, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_mouseKeysMaxSpeed = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetControls_mouseKeysMaxSpeed, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetControls_mouseKeysMaxSpeed, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_mouseKeysCurve = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetControls_mouseKeysCurve, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetControls_mouseKeysCurve, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_accessXTimeout = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetControls_accessXTimeout, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetControls_accessXTimeout, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- f_accessXTimeoutMask = field32(tvb, offsetp, t, hf_x11_xkb_SetControls_accessXTimeoutMask, little_endian);
- f_accessXTimeoutValues = field32(tvb, offsetp, t, hf_x11_xkb_SetControls_accessXTimeoutValues, little_endian);
- struct_AXOption(tvb, offsetp, t, little_endian, 1);
- struct_AXOption(tvb, offsetp, t, little_endian, 1);
- listOfByte(tvb, offsetp, t, hf_x11_xkb_SetControls_perKeyRepeat, 32, little_endian);
+ f_accessXTimeoutMask = field32(tvb, offsetp, t, hf_x11_xkb_SetControls_accessXTimeoutMask, byte_order);
+ f_accessXTimeoutValues = field32(tvb, offsetp, t, hf_x11_xkb_SetControls_accessXTimeoutValues, byte_order);
+ struct_AXOption(tvb, offsetp, t, byte_order, 1);
+ struct_AXOption(tvb, offsetp, t, byte_order, 1);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_SetControls_perKeyRepeat, 32, byte_order);
length -= 32 * 1;
}
-static void xkbGetMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbGetMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_deviceSpec;
int f_full;
@@ -22619,77 +23028,77 @@ static void xkbGetMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto
int f_firstVModMapKey;
int f_nVModMapKeys;
f_deviceSpec = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_deviceSpec, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_deviceSpec, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- f_full = field16(tvb, offsetp, t, hf_x11_xkb_GetMap_full, little_endian);
- f_partial = field16(tvb, offsetp, t, hf_x11_xkb_GetMap_partial, little_endian);
+ f_full = field16(tvb, offsetp, t, hf_x11_xkb_GetMap_full, byte_order);
+ f_partial = field16(tvb, offsetp, t, hf_x11_xkb_GetMap_partial, byte_order);
f_firstType = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_firstType, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_firstType, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nTypes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_nTypes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_nTypes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKeySym = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_firstKeySym, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_firstKeySym, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeySyms = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_nKeySyms, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_nKeySyms, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKeyAction = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_firstKeyAction, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_firstKeyAction, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeyActions = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_nKeyActions, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_nKeyActions, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKeyBehavior = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_firstKeyBehavior, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_firstKeyBehavior, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeyBehaviors = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_nKeyBehaviors, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_nKeyBehaviors, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_virtualMods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetMap_virtualMods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetMap_virtualMods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_15, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_15, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_firstKeyExplicit = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_firstKeyExplicit, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_firstKeyExplicit, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeyExplicit = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_nKeyExplicit, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_nKeyExplicit, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstModMapKey = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_firstModMapKey, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_firstModMapKey, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nModMapKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_nModMapKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_nModMapKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstVModMapKey = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_firstVModMapKey, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_firstVModMapKey, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nVModMapKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_nVModMapKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_nVModMapKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
}
-static void xkbGetMap_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xkbGetMap_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_deviceID;
@@ -22723,7 +23132,7 @@ static void xkbGetMap_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, pro
REPLY(reply);
f_deviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_deviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_deviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -22731,130 +23140,130 @@ static void xkbGetMap_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, pro
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(2);
f_minKeyCode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_minKeyCode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_minKeyCode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_maxKeyCode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_maxKeyCode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_maxKeyCode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- f_present = field16(tvb, offsetp, t, hf_x11_xkb_GetMap_reply_present, little_endian);
+ f_present = field16(tvb, offsetp, t, hf_x11_xkb_GetMap_reply_present, byte_order);
f_firstType = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstType, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstType, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nTypes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nTypes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nTypes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalTypes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalTypes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalTypes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKeySym = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstKeySym, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstKeySym, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalSyms = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalSyms, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalSyms, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nKeySyms = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nKeySyms, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nKeySyms, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKeyAction = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstKeyAction, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstKeyAction, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalActions = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalActions, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalActions, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nKeyActions = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nKeyActions, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nKeyActions, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKeyBehavior = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstKeyBehavior, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstKeyBehavior, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeyBehaviors = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nKeyBehaviors, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nKeyBehaviors, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalKeyBehaviors = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalKeyBehaviors, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalKeyBehaviors, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKeyExplicit = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstKeyExplicit, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstKeyExplicit, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeyExplicit = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nKeyExplicit, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nKeyExplicit, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalKeyExplicit = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalKeyExplicit, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalKeyExplicit, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstModMapKey = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstModMapKey, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstModMapKey, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nModMapKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nModMapKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nModMapKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalModMapKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalModMapKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalModMapKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstVModMapKey = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstVModMapKey, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstVModMapKey, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nVModMapKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nVModMapKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nVModMapKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalVModMapKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalVModMapKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalVModMapKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
f_virtualMods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_virtualMods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_virtualMods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_15, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_15, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
if ((f_present & (1 << 0)) != 0) {
- struct_KeyType(tvb, offsetp, t, little_endian, f_nTypes);
+ struct_KeyType(tvb, offsetp, t, byte_order, f_nTypes);
}
if ((f_present & (1 << 1)) != 0) {
- struct_KeySymMap(tvb, offsetp, t, little_endian, f_nKeySyms);
+ struct_KeySymMap(tvb, offsetp, t, byte_order, f_nKeySyms);
}
if ((f_present & (1 << 4)) != 0) {
- listOfByte(tvb, offsetp, t, hf_x11_xkb_GetMap_reply_KeyActions_acts_rtrn_count, f_nKeyActions, little_endian);
- struct_Action(tvb, offsetp, t, little_endian, f_totalActions);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_GetMap_reply_KeyActions_acts_rtrn_count, f_nKeyActions, byte_order);
+ struct_Action(tvb, offsetp, t, byte_order, f_totalActions);
}
if ((f_present & (1 << 5)) != 0) {
- struct_SetBehavior(tvb, offsetp, t, little_endian, f_totalKeyBehaviors);
+ struct_SetBehavior(tvb, offsetp, t, byte_order, f_totalKeyBehaviors);
}
if ((f_present & (1 << 6)) != 0) {
- listOfByte(tvb, offsetp, t, hf_x11_xkb_GetMap_reply_VirtualMods_vmods_rtrn, f_nVModMapKeys, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_GetMap_reply_VirtualMods_vmods_rtrn, f_nVModMapKeys, byte_order);
}
if ((f_present & (1 << 3)) != 0) {
- struct_SetExplicit(tvb, offsetp, t, little_endian, f_totalKeyExplicit);
+ struct_SetExplicit(tvb, offsetp, t, byte_order, f_totalKeyExplicit);
}
if ((f_present & (1 << 2)) != 0) {
- struct_KeyModMap(tvb, offsetp, t, little_endian, f_totalModMapKeys);
+ struct_KeyModMap(tvb, offsetp, t, byte_order, f_totalModMapKeys);
}
if ((f_present & (1 << 7)) != 0) {
- struct_KeyVModMap(tvb, offsetp, t, little_endian, f_totalVModMapKeys);
+ struct_KeyVModMap(tvb, offsetp, t, byte_order, f_totalVModMapKeys);
}
}
-static void xkbSetMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbSetMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_deviceSpec;
int f_present;
@@ -22883,142 +23292,142 @@ static void xkbSetMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto
int f_totalVModMapKeys;
int f_virtualMods;
f_deviceSpec = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetMap_deviceSpec, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetMap_deviceSpec, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- f_present = field16(tvb, offsetp, t, hf_x11_xkb_SetMap_present, little_endian);
+ f_present = field16(tvb, offsetp, t, hf_x11_xkb_SetMap_present, byte_order);
f_flags = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetMap_flags, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetMap_flags, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_flags_mask_ResizeTypes, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_flags_mask_RecomputeActions, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_flags_mask_ResizeTypes, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_flags_mask_RecomputeActions, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_minKeyCode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetMap_minKeyCode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetMap_minKeyCode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_maxKeyCode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetMap_maxKeyCode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetMap_maxKeyCode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstType = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetMap_firstType, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetMap_firstType, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nTypes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetMap_nTypes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetMap_nTypes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKeySym = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetMap_firstKeySym, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetMap_firstKeySym, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeySyms = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetMap_nKeySyms, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetMap_nKeySyms, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalSyms = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetMap_totalSyms, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetMap_totalSyms, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_firstKeyAction = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetMap_firstKeyAction, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetMap_firstKeyAction, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeyActions = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetMap_nKeyActions, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetMap_nKeyActions, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalActions = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetMap_totalActions, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetMap_totalActions, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_firstKeyBehavior = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetMap_firstKeyBehavior, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetMap_firstKeyBehavior, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeyBehaviors = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetMap_nKeyBehaviors, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetMap_nKeyBehaviors, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalKeyBehaviors = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetMap_totalKeyBehaviors, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetMap_totalKeyBehaviors, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKeyExplicit = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetMap_firstKeyExplicit, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetMap_firstKeyExplicit, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeyExplicit = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetMap_nKeyExplicit, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetMap_nKeyExplicit, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalKeyExplicit = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetMap_totalKeyExplicit, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetMap_totalKeyExplicit, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstModMapKey = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetMap_firstModMapKey, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetMap_firstModMapKey, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nModMapKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetMap_nModMapKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetMap_nModMapKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalModMapKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetMap_totalModMapKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetMap_totalModMapKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstVModMapKey = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetMap_firstVModMapKey, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetMap_firstVModMapKey, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nVModMapKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetMap_nVModMapKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetMap_nVModMapKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalVModMapKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetMap_totalVModMapKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetMap_totalVModMapKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_virtualMods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetMap_virtualMods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetMap_virtualMods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_15, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_15, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
if ((f_present & (1 << 0)) != 0) {
- struct_SetKeyType(tvb, offsetp, t, little_endian, f_nTypes);
+ struct_SetKeyType(tvb, offsetp, t, byte_order, f_nTypes);
length -= f_nTypes * 0;
}
if ((f_present & (1 << 1)) != 0) {
- struct_KeySymMap(tvb, offsetp, t, little_endian, f_nKeySyms);
+ struct_KeySymMap(tvb, offsetp, t, byte_order, f_nKeySyms);
length -= f_nKeySyms * 0;
}
if ((f_present & (1 << 4)) != 0) {
- listOfByte(tvb, offsetp, t, hf_x11_xkb_SetMap_KeyActions_actionsCount, f_nKeyActions, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_SetMap_KeyActions_actionsCount, f_nKeyActions, byte_order);
length -= f_nKeyActions * 1;
- struct_Action(tvb, offsetp, t, little_endian, f_totalActions);
+ struct_Action(tvb, offsetp, t, byte_order, f_totalActions);
length -= f_totalActions * 8;
}
if ((f_present & (1 << 5)) != 0) {
- struct_SetBehavior(tvb, offsetp, t, little_endian, f_totalKeyBehaviors);
+ struct_SetBehavior(tvb, offsetp, t, byte_order, f_totalKeyBehaviors);
length -= f_totalKeyBehaviors * 4;
}
if ((f_present & (1 << 6)) != 0) {
- listOfByte(tvb, offsetp, t, hf_x11_xkb_SetMap_VirtualMods_vmods, f_nVModMapKeys, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_SetMap_VirtualMods_vmods, f_nVModMapKeys, byte_order);
length -= f_nVModMapKeys * 1;
}
if ((f_present & (1 << 3)) != 0) {
- struct_SetExplicit(tvb, offsetp, t, little_endian, f_totalKeyExplicit);
+ struct_SetExplicit(tvb, offsetp, t, byte_order, f_totalKeyExplicit);
length -= f_totalKeyExplicit * 2;
}
if ((f_present & (1 << 2)) != 0) {
- struct_KeyModMap(tvb, offsetp, t, little_endian, f_totalModMapKeys);
+ struct_KeyModMap(tvb, offsetp, t, byte_order, f_totalModMapKeys);
length -= f_totalModMapKeys * 2;
}
if ((f_present & (1 << 7)) != 0) {
- struct_KeyVModMap(tvb, offsetp, t, little_endian, f_totalVModMapKeys);
+ struct_KeyVModMap(tvb, offsetp, t, byte_order, f_totalVModMapKeys);
length -= f_totalVModMapKeys * 4;
}
}
-static void xkbGetCompatMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbGetCompatMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_deviceSpec;
int f_groups;
@@ -23026,29 +23435,29 @@ static void xkbGetCompatMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_firstSI;
int f_nSI;
f_deviceSpec = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_deviceSpec, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_deviceSpec, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_groups = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_groups, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_groups, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetCompatMap_groups_mask_Group1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetCompatMap_groups_mask_Group2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetCompatMap_groups_mask_Group3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetCompatMap_groups_mask_Group4, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetCompatMap_groups_mask_Group1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetCompatMap_groups_mask_Group2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetCompatMap_groups_mask_Group3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetCompatMap_groups_mask_Group4, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_getAllSI = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_getAllSI, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_getAllSI, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstSI = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_firstSI, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_firstSI, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nSI = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_nSI, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_nSI, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xkbGetCompatMap_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xkbGetCompatMap_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_deviceID;
@@ -23061,7 +23470,7 @@ static void xkbGetCompatMap_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
REPLY(reply);
f_deviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_reply_deviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_reply_deviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -23069,34 +23478,34 @@ static void xkbGetCompatMap_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_groupsRtrn = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_reply_groupsRtrn, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_reply_groupsRtrn, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetCompatMap_reply_groupsRtrn_mask_Group1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetCompatMap_reply_groupsRtrn_mask_Group2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetCompatMap_reply_groupsRtrn_mask_Group3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetCompatMap_reply_groupsRtrn_mask_Group4, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetCompatMap_reply_groupsRtrn_mask_Group1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetCompatMap_reply_groupsRtrn_mask_Group2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetCompatMap_reply_groupsRtrn_mask_Group3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetCompatMap_reply_groupsRtrn_mask_Group4, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
UNUSED(1);
f_firstSIRtrn = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_reply_firstSIRtrn, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_reply_firstSIRtrn, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nSIRtrn = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_reply_nSIRtrn, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_reply_nSIRtrn, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nTotalSI = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_reply_nTotalSI, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_reply_nTotalSI, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(16);
- listOfByte(tvb, offsetp, t, hf_x11_xkb_GetCompatMap_reply_si_rtrn, (16 * f_nSIRtrn), little_endian);
- struct_ModDef(tvb, offsetp, t, little_endian, popcount(f_groupsRtrn));
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_GetCompatMap_reply_si_rtrn, (16 * f_nSIRtrn), byte_order);
+ struct_ModDef(tvb, offsetp, t, byte_order, popcount(f_groupsRtrn));
}
-static void xkbSetCompatMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbSetCompatMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_deviceSpec;
int f_recomputeActions;
@@ -23105,47 +23514,47 @@ static void xkbSetCompatMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_firstSI;
int f_nSI;
f_deviceSpec = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetCompatMap_deviceSpec, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetCompatMap_deviceSpec, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(1);
f_recomputeActions = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetCompatMap_recomputeActions, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetCompatMap_recomputeActions, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_truncateSI = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetCompatMap_truncateSI, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetCompatMap_truncateSI, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_groups = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetCompatMap_groups, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetCompatMap_groups, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetCompatMap_groups_mask_Group1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetCompatMap_groups_mask_Group2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetCompatMap_groups_mask_Group3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetCompatMap_groups_mask_Group4, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetCompatMap_groups_mask_Group1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetCompatMap_groups_mask_Group2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetCompatMap_groups_mask_Group3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetCompatMap_groups_mask_Group4, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_firstSI = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetCompatMap_firstSI, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetCompatMap_firstSI, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nSI = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetCompatMap_nSI, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetCompatMap_nSI, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
- listOfByte(tvb, offsetp, t, hf_x11_xkb_SetCompatMap_si, (16 * f_nSI), little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_SetCompatMap_si, (16 * f_nSI), byte_order);
length -= (16 * f_nSI) * 1;
- struct_ModDef(tvb, offsetp, t, little_endian, popcount(f_groups));
+ struct_ModDef(tvb, offsetp, t, byte_order, popcount(f_groups));
length -= popcount(f_groups) * 4;
}
-static void xkbGetIndicatorState(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbGetIndicatorState(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_deviceSpec;
f_deviceSpec = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetIndicatorState_deviceSpec, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetIndicatorState_deviceSpec, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
}
-static void xkbGetIndicatorState_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xkbGetIndicatorState_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_deviceID;
@@ -23155,7 +23564,7 @@ static void xkbGetIndicatorState_Reply(tvbuff_t *tvb, packet_info *pinfo, int *o
REPLY(reply);
f_deviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetIndicatorState_reply_deviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetIndicatorState_reply_deviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -23163,27 +23572,27 @@ static void xkbGetIndicatorState_Reply(tvbuff_t *tvb, packet_info *pinfo, int *o
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_state = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetIndicatorState_reply_state, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetIndicatorState_reply_state, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
}
-static void xkbGetIndicatorMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbGetIndicatorMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_deviceSpec;
int f_which;
f_deviceSpec = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetIndicatorMap_deviceSpec, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetIndicatorMap_deviceSpec, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
f_which = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetIndicatorMap_which, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetIndicatorMap_which, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xkbGetIndicatorMap_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xkbGetIndicatorMap_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_deviceID;
@@ -23195,7 +23604,7 @@ static void xkbGetIndicatorMap_Reply(tvbuff_t *tvb, packet_info *pinfo, int *off
REPLY(reply);
f_deviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetIndicatorMap_reply_deviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetIndicatorMap_reply_deviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -23203,53 +23612,53 @@ static void xkbGetIndicatorMap_Reply(tvbuff_t *tvb, packet_info *pinfo, int *off
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_which = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetIndicatorMap_reply_which, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetIndicatorMap_reply_which, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_realIndicators = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetIndicatorMap_reply_realIndicators, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetIndicatorMap_reply_realIndicators, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_nIndicators = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetIndicatorMap_reply_nIndicators, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetIndicatorMap_reply_nIndicators, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(15);
- struct_IndicatorMap(tvb, offsetp, t, little_endian, f_nIndicators);
+ struct_IndicatorMap(tvb, offsetp, t, byte_order, f_nIndicators);
}
-static void xkbSetIndicatorMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbSetIndicatorMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_deviceSpec;
int f_which;
f_deviceSpec = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetIndicatorMap_deviceSpec, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetIndicatorMap_deviceSpec, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
f_which = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetIndicatorMap_which, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetIndicatorMap_which, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- struct_IndicatorMap(tvb, offsetp, t, little_endian, popcount(f_which));
+ struct_IndicatorMap(tvb, offsetp, t, byte_order, popcount(f_which));
length -= popcount(f_which) * 12;
}
-static void xkbGetNamedIndicator(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbGetNamedIndicator(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_deviceSpec;
int f_ledClass;
int f_ledID;
int f_indicator;
f_deviceSpec = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_deviceSpec, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_deviceSpec, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- f_ledClass = field16(tvb, offsetp, t, hf_x11_xkb_GetNamedIndicator_ledClass, little_endian);
- f_ledID = field16(tvb, offsetp, t, hf_x11_xkb_GetNamedIndicator_ledID, little_endian);
+ f_ledClass = field16(tvb, offsetp, t, hf_x11_xkb_GetNamedIndicator_ledClass, byte_order);
+ f_ledID = field16(tvb, offsetp, t, hf_x11_xkb_GetNamedIndicator_ledID, byte_order);
UNUSED(2);
f_indicator = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_indicator, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_indicator, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xkbGetNamedIndicator_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xkbGetNamedIndicator_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_deviceID;
@@ -23271,7 +23680,7 @@ static void xkbGetNamedIndicator_Reply(tvbuff_t *tvb, packet_info *pinfo, int *o
REPLY(reply);
f_deviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_deviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_deviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -23279,136 +23688,136 @@ static void xkbGetNamedIndicator_Reply(tvbuff_t *tvb, packet_info *pinfo, int *o
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_indicator = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_indicator, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_indicator, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_found = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_found, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_found, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_on = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_on, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_on, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_realIndicator = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_realIndicator, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_realIndicator, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_ndx = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_ndx, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_ndx, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_map_flags = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_map_flags, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_map_flags, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_flags_mask_LEDDrivesKB, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_flags_mask_NoAutomatic, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_flags_mask_NoExplicit, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_flags_mask_LEDDrivesKB, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_flags_mask_NoAutomatic, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_flags_mask_NoExplicit, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_map_whichGroups = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_map_whichGroups, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_map_whichGroups, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichGroups_mask_UseBase, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichGroups_mask_UseLatched, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichGroups_mask_UseLocked, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichGroups_mask_UseEffective, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichGroups_mask_UseCompat, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichGroups_mask_UseBase, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichGroups_mask_UseLatched, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichGroups_mask_UseLocked, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichGroups_mask_UseEffective, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichGroups_mask_UseCompat, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_map_groups = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_map_groups, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_map_groups, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_groups_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_groups_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_map_whichMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_map_whichMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_map_whichMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichMods_mask_UseBase, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichMods_mask_UseLatched, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichMods_mask_UseLocked, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichMods_mask_UseEffective, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichMods_mask_UseCompat, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichMods_mask_UseBase, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichMods_mask_UseLatched, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichMods_mask_UseLocked, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichMods_mask_UseEffective, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichMods_mask_UseCompat, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_map_mods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_map_mods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_map_mods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_map_realMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_map_realMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_map_realMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_map_vmod = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_map_vmod, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_map_vmod, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_15, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_15, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_map_ctrls = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_RepeatKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_SlowKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_BounceKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_StickyKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_MouseKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_MouseKeysAccel, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_AccessXKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_AccessXTimeoutMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_AccessXFeedbackMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_AudibleBellMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_Overlay1Mask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_Overlay2Mask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_RepeatKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_SlowKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_BounceKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_StickyKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_MouseKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_MouseKeysAccel, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_AccessXKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_AccessXTimeoutMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_AccessXFeedbackMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_AudibleBellMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_Overlay1Mask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_Overlay2Mask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
UNUSED(3);
}
-static void xkbSetNamedIndicator(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbSetNamedIndicator(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_deviceSpec;
int f_ledClass;
@@ -23426,153 +23835,153 @@ static void xkbSetNamedIndicator(tvbuff_t *tvb, packet_info *pinfo _U_, int *off
int f_map_vmods;
int f_map_ctrls;
f_deviceSpec = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_deviceSpec, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_deviceSpec, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- f_ledClass = field16(tvb, offsetp, t, hf_x11_xkb_SetNamedIndicator_ledClass, little_endian);
- f_ledID = field16(tvb, offsetp, t, hf_x11_xkb_SetNamedIndicator_ledID, little_endian);
+ f_ledClass = field16(tvb, offsetp, t, hf_x11_xkb_SetNamedIndicator_ledClass, byte_order);
+ f_ledID = field16(tvb, offsetp, t, hf_x11_xkb_SetNamedIndicator_ledID, byte_order);
UNUSED(2);
f_indicator = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_indicator, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_indicator, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_setState = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_setState, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_setState, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_on = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_on, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_on, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_setMap = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_setMap, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_setMap, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_createMap = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_createMap, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_createMap, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
f_map_flags = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_map_flags, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_map_flags, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_flags_mask_LEDDrivesKB, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_flags_mask_NoAutomatic, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_flags_mask_NoExplicit, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_flags_mask_LEDDrivesKB, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_flags_mask_NoAutomatic, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_flags_mask_NoExplicit, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_map_whichGroups = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_map_whichGroups, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_map_whichGroups, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichGroups_mask_UseBase, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichGroups_mask_UseLatched, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichGroups_mask_UseLocked, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichGroups_mask_UseEffective, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichGroups_mask_UseCompat, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichGroups_mask_UseBase, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichGroups_mask_UseLatched, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichGroups_mask_UseLocked, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichGroups_mask_UseEffective, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichGroups_mask_UseCompat, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_map_groups = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_map_groups, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_map_groups, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_groups_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_groups_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_map_whichMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_map_whichMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_map_whichMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichMods_mask_UseBase, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichMods_mask_UseLatched, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichMods_mask_UseLocked, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichMods_mask_UseEffective, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichMods_mask_UseCompat, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichMods_mask_UseBase, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichMods_mask_UseLatched, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichMods_mask_UseLocked, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichMods_mask_UseEffective, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichMods_mask_UseCompat, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_map_realMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_map_realMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_map_realMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_map_vmods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_map_vmods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_map_vmods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_15, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_15, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_map_ctrls = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_map_ctrls, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_map_ctrls, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_RepeatKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_SlowKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_BounceKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_StickyKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_MouseKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_MouseKeysAccel, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_AccessXKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_AccessXTimeoutMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_AccessXFeedbackMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_AudibleBellMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_Overlay1Mask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_Overlay2Mask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_RepeatKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_SlowKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_BounceKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_StickyKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_MouseKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_MouseKeysAccel, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_AccessXKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_AccessXTimeoutMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_AccessXFeedbackMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_AudibleBellMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_Overlay1Mask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_Overlay2Mask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
}
-static void xkbGetNames(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbGetNames(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_deviceSpec;
int f_which;
f_deviceSpec = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetNames_deviceSpec, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetNames_deviceSpec, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
f_which = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNames_which, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNames_which, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_Keycodes, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_Geometry, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_Symbols, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_PhysSymbols, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_Types, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_Compat, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_KeyTypeNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_KTLevelNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_IndicatorNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_KeyNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_KeyAliases, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_VirtualModNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_GroupNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_RGNames, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_Keycodes, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_Geometry, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_Symbols, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_PhysSymbols, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_Types, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_Compat, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_KeyTypeNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_KTLevelNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_IndicatorNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_KeyNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_KeyAliases, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_VirtualModNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_GroupNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_RGNames, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
}
-static void xkbGetNames_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xkbGetNames_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_deviceID;
@@ -23593,7 +24002,7 @@ static void xkbGetNames_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, p
REPLY(reply);
f_deviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_deviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_deviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -23601,152 +24010,152 @@ static void xkbGetNames_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, p
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_which = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_which, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_which, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_Keycodes, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_Geometry, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_Symbols, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_PhysSymbols, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_Types, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_Compat, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_KeyTypeNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_KTLevelNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_IndicatorNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_KeyNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_KeyAliases, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_VirtualModNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_GroupNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_RGNames, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_Keycodes, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_Geometry, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_Symbols, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_PhysSymbols, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_Types, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_Compat, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_KeyTypeNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_KTLevelNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_IndicatorNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_KeyNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_KeyAliases, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_VirtualModNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_GroupNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_RGNames, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
f_minKeyCode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_minKeyCode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_minKeyCode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_maxKeyCode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_maxKeyCode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_maxKeyCode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nTypes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_nTypes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_nTypes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_groupNames = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_groupNames, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_groupNames, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_groupNames_mask_Group1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_groupNames_mask_Group2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_groupNames_mask_Group3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_groupNames_mask_Group4, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_groupNames_mask_Group1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_groupNames_mask_Group2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_groupNames_mask_Group3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_groupNames_mask_Group4, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_virtualMods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_virtualMods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_virtualMods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_15, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_15, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_firstKey = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_firstKey, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_firstKey, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_nKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_nKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_indicators = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_indicators, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_indicators, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_nRadioGroups = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_nRadioGroups, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_nRadioGroups, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeyAliases = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_nKeyAliases, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_nKeyAliases, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKTLevels = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_nKTLevels, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_nKTLevels, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(4);
if ((f_which & (1 << 0)) != 0) {
int f_keycodesName;
f_keycodesName = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_Keycodes_keycodesName, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_Keycodes_keycodesName, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if ((f_which & (1 << 1)) != 0) {
int f_geometryName;
f_geometryName = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_Geometry_geometryName, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_Geometry_geometryName, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if ((f_which & (1 << 2)) != 0) {
int f_symbolsName;
f_symbolsName = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_Symbols_symbolsName, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_Symbols_symbolsName, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if ((f_which & (1 << 3)) != 0) {
int f_physSymbolsName;
f_physSymbolsName = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_PhysSymbols_physSymbolsName, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_PhysSymbols_physSymbolsName, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if ((f_which & (1 << 4)) != 0) {
int f_typesName;
f_typesName = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_Types_typesName, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_Types_typesName, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if ((f_which & (1 << 5)) != 0) {
int f_compatName;
f_compatName = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_Compat_compatName, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_Compat_compatName, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if ((f_which & (1 << 6)) != 0) {
- listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_KeyTypeNames_typeNames, hf_x11_xkb_GetNames_reply_KeyTypeNames_typeNames_item, f_nTypes, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_KeyTypeNames_typeNames, hf_x11_xkb_GetNames_reply_KeyTypeNames_typeNames_item, f_nTypes, byte_order);
}
if ((f_which & (1 << 7)) != 0) {
- listOfByte(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_KTLevelNames_nLevelsPerType, f_nTypes, little_endian);
- listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_KTLevelNames_ktLevelNames, hf_x11_xkb_GetNames_reply_KTLevelNames_ktLevelNames_item, (length - 56) / 4, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_KTLevelNames_nLevelsPerType, f_nTypes, byte_order);
+ listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_KTLevelNames_ktLevelNames, hf_x11_xkb_GetNames_reply_KTLevelNames_ktLevelNames_item, (length - 56) / 4, byte_order);
}
if ((f_which & (1 << 8)) != 0) {
- listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_IndicatorNames_indicatorNames, hf_x11_xkb_GetNames_reply_IndicatorNames_indicatorNames_item, popcount(f_indicators), little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_IndicatorNames_indicatorNames, hf_x11_xkb_GetNames_reply_IndicatorNames_indicatorNames_item, popcount(f_indicators), byte_order);
}
if ((f_which & (1 << 11)) != 0) {
- listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_VirtualModNames_virtualModNames, hf_x11_xkb_GetNames_reply_VirtualModNames_virtualModNames_item, popcount(f_virtualMods), little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_VirtualModNames_virtualModNames, hf_x11_xkb_GetNames_reply_VirtualModNames_virtualModNames_item, popcount(f_virtualMods), byte_order);
}
if ((f_which & (1 << 12)) != 0) {
- listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_GroupNames_groups, hf_x11_xkb_GetNames_reply_GroupNames_groups_item, popcount(f_groupNames), little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_GroupNames_groups, hf_x11_xkb_GetNames_reply_GroupNames_groups_item, popcount(f_groupNames), byte_order);
}
if ((f_which & (1 << 9)) != 0) {
- struct_KeyName(tvb, offsetp, t, little_endian, f_nKeys);
+ struct_KeyName(tvb, offsetp, t, byte_order, f_nKeys);
}
if ((f_which & (1 << 10)) != 0) {
- struct_KeyAlias(tvb, offsetp, t, little_endian, f_nKeyAliases);
+ struct_KeyAlias(tvb, offsetp, t, byte_order, f_nKeyAliases);
}
if ((f_which & (1 << 13)) != 0) {
- listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_RGNames_radioGroupNames, hf_x11_xkb_GetNames_reply_RGNames_radioGroupNames_item, f_nRadioGroups, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_RGNames_radioGroupNames, hf_x11_xkb_GetNames_reply_RGNames_radioGroupNames_item, f_nRadioGroups, byte_order);
}
}
-static void xkbSetNames(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbSetNames(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_deviceSpec;
int f_virtualMods;
@@ -23763,176 +24172,176 @@ static void xkbSetNames(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, pro
int f_nKeyAliases;
int f_totalKTLevelNames;
f_deviceSpec = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetNames_deviceSpec, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetNames_deviceSpec, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_virtualMods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNames_virtualMods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNames_virtualMods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_15, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_15, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_which = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNames_which, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNames_which, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_Keycodes, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_Geometry, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_Symbols, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_PhysSymbols, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_Types, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_Compat, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_KeyTypeNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_KTLevelNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_IndicatorNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_KeyNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_KeyAliases, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_VirtualModNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_GroupNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_RGNames, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_Keycodes, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_Geometry, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_Symbols, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_PhysSymbols, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_Types, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_Compat, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_KeyTypeNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_KTLevelNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_IndicatorNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_KeyNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_KeyAliases, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_VirtualModNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_GroupNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_RGNames, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
f_firstType = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetNames_firstType, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetNames_firstType, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nTypes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetNames_nTypes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetNames_nTypes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKTLevelt = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetNames_firstKTLevelt, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetNames_firstKTLevelt, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKTLevels = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetNames_nKTLevels, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetNames_nKTLevels, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_indicators = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetNames_indicators, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetNames_indicators, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_groupNames = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNames_groupNames, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNames_groupNames, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_groupNames_mask_Group1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_groupNames_mask_Group2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_groupNames_mask_Group3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_groupNames_mask_Group4, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_groupNames_mask_Group1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_groupNames_mask_Group2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_groupNames_mask_Group3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_groupNames_mask_Group4, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_nRadioGroups = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetNames_nRadioGroups, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetNames_nRadioGroups, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKey = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetNames_firstKey, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetNames_firstKey, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetNames_nKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetNames_nKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeyAliases = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetNames_nKeyAliases, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetNames_nKeyAliases, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
f_totalKTLevelNames = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetNames_totalKTLevelNames, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetNames_totalKTLevelNames, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
if ((f_which & (1 << 0)) != 0) {
int f_keycodesName;
f_keycodesName = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetNames_Keycodes_keycodesName, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetNames_Keycodes_keycodesName, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if ((f_which & (1 << 1)) != 0) {
int f_geometryName;
f_geometryName = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetNames_Geometry_geometryName, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetNames_Geometry_geometryName, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if ((f_which & (1 << 2)) != 0) {
int f_symbolsName;
f_symbolsName = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetNames_Symbols_symbolsName, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetNames_Symbols_symbolsName, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if ((f_which & (1 << 3)) != 0) {
int f_physSymbolsName;
f_physSymbolsName = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetNames_PhysSymbols_physSymbolsName, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetNames_PhysSymbols_physSymbolsName, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if ((f_which & (1 << 4)) != 0) {
int f_typesName;
f_typesName = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetNames_Types_typesName, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetNames_Types_typesName, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if ((f_which & (1 << 5)) != 0) {
int f_compatName;
f_compatName = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetNames_Compat_compatName, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetNames_Compat_compatName, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if ((f_which & (1 << 6)) != 0) {
- listOfCard32(tvb, offsetp, t, hf_x11_xkb_SetNames_KeyTypeNames_typeNames, hf_x11_xkb_SetNames_KeyTypeNames_typeNames_item, f_nTypes, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xkb_SetNames_KeyTypeNames_typeNames, hf_x11_xkb_SetNames_KeyTypeNames_typeNames_item, f_nTypes, byte_order);
length -= f_nTypes * 4;
}
if ((f_which & (1 << 7)) != 0) {
- listOfByte(tvb, offsetp, t, hf_x11_xkb_SetNames_KTLevelNames_nLevelsPerType, f_nKTLevels, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_SetNames_KTLevelNames_nLevelsPerType, f_nKTLevels, byte_order);
length -= f_nKTLevels * 1;
- listOfCard32(tvb, offsetp, t, hf_x11_xkb_SetNames_KTLevelNames_ktLevelNames, hf_x11_xkb_SetNames_KTLevelNames_ktLevelNames_item, (length - 52) / 4, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xkb_SetNames_KTLevelNames_ktLevelNames, hf_x11_xkb_SetNames_KTLevelNames_ktLevelNames_item, (length - 52) / 4, byte_order);
length -= (length - 52) / 4 * 4;
}
if ((f_which & (1 << 8)) != 0) {
- listOfCard32(tvb, offsetp, t, hf_x11_xkb_SetNames_IndicatorNames_indicatorNames, hf_x11_xkb_SetNames_IndicatorNames_indicatorNames_item, popcount(f_indicators), little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xkb_SetNames_IndicatorNames_indicatorNames, hf_x11_xkb_SetNames_IndicatorNames_indicatorNames_item, popcount(f_indicators), byte_order);
length -= popcount(f_indicators) * 4;
}
if ((f_which & (1 << 11)) != 0) {
- listOfCard32(tvb, offsetp, t, hf_x11_xkb_SetNames_VirtualModNames_virtualModNames, hf_x11_xkb_SetNames_VirtualModNames_virtualModNames_item, popcount(f_virtualMods), little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xkb_SetNames_VirtualModNames_virtualModNames, hf_x11_xkb_SetNames_VirtualModNames_virtualModNames_item, popcount(f_virtualMods), byte_order);
length -= popcount(f_virtualMods) * 4;
}
if ((f_which & (1 << 12)) != 0) {
- listOfCard32(tvb, offsetp, t, hf_x11_xkb_SetNames_GroupNames_groups, hf_x11_xkb_SetNames_GroupNames_groups_item, popcount(f_groupNames), little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xkb_SetNames_GroupNames_groups, hf_x11_xkb_SetNames_GroupNames_groups_item, popcount(f_groupNames), byte_order);
length -= popcount(f_groupNames) * 4;
}
if ((f_which & (1 << 9)) != 0) {
- struct_KeyName(tvb, offsetp, t, little_endian, f_nKeys);
+ struct_KeyName(tvb, offsetp, t, byte_order, f_nKeys);
length -= f_nKeys * 1;
}
if ((f_which & (1 << 10)) != 0) {
- struct_KeyAlias(tvb, offsetp, t, little_endian, f_nKeyAliases);
+ struct_KeyAlias(tvb, offsetp, t, byte_order, f_nKeyAliases);
length -= f_nKeyAliases * 2;
}
if ((f_which & (1 << 13)) != 0) {
- listOfCard32(tvb, offsetp, t, hf_x11_xkb_SetNames_RGNames_radioGroupNames, hf_x11_xkb_SetNames_RGNames_radioGroupNames_item, f_nRadioGroups, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xkb_SetNames_RGNames_radioGroupNames, hf_x11_xkb_SetNames_RGNames_radioGroupNames_item, f_nRadioGroups, byte_order);
length -= f_nRadioGroups * 4;
}
}
-static void xkbGetGeometry(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbGetGeometry(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_deviceSpec;
int f_name;
f_deviceSpec = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetGeometry_deviceSpec, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetGeometry_deviceSpec, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
f_name = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetGeometry_name, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetGeometry_name, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xkbGetGeometry_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xkbGetGeometry_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_deviceID;
@@ -23953,7 +24362,7 @@ static void xkbGetGeometry_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp
REPLY(reply);
f_deviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_deviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_deviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -23961,55 +24370,55 @@ static void xkbGetGeometry_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_name = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_name, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_name, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_found = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_found, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_found, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
f_widthMM = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_widthMM, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_widthMM, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_heightMM = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_heightMM, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_heightMM, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nProperties = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_nProperties, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_nProperties, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nColors = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_nColors, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_nColors, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nShapes = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_nShapes, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_nShapes, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nSections = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_nSections, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_nSections, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nDoodads = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_nDoodads, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_nDoodads, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nKeyAliases = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_nKeyAliases, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_nKeyAliases, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_baseColorNdx = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_baseColorNdx, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_baseColorNdx, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_labelColorNdx = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_labelColorNdx, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_labelColorNdx, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- struct_CountedString16(tvb, offsetp, t, little_endian, 1);
- struct_Property(tvb, offsetp, t, little_endian, f_nProperties);
- struct_CountedString16(tvb, offsetp, t, little_endian, f_nColors);
- struct_Shape(tvb, offsetp, t, little_endian, f_nShapes);
- struct_Section(tvb, offsetp, t, little_endian, f_nSections);
- struct_Doodad(tvb, offsetp, t, little_endian, f_nDoodads);
- struct_KeyAlias(tvb, offsetp, t, little_endian, f_nKeyAliases);
+ struct_CountedString16(tvb, offsetp, t, byte_order, 1);
+ struct_Property(tvb, offsetp, t, byte_order, f_nProperties);
+ struct_CountedString16(tvb, offsetp, t, byte_order, f_nColors);
+ struct_Shape(tvb, offsetp, t, byte_order, f_nShapes);
+ struct_Section(tvb, offsetp, t, byte_order, f_nSections);
+ struct_Doodad(tvb, offsetp, t, byte_order, f_nDoodads);
+ struct_KeyAlias(tvb, offsetp, t, byte_order, f_nKeyAliases);
}
-static void xkbSetGeometry(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbSetGeometry(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_deviceSpec;
int f_nShapes;
@@ -24024,58 +24433,58 @@ static void xkbSetGeometry(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_baseColorNdx;
int f_labelColorNdx;
f_deviceSpec = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetGeometry_deviceSpec, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetGeometry_deviceSpec, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nShapes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetGeometry_nShapes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetGeometry_nShapes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nSections = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetGeometry_nSections, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetGeometry_nSections, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_name = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetGeometry_name, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetGeometry_name, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_widthMM = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetGeometry_widthMM, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetGeometry_widthMM, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_heightMM = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetGeometry_heightMM, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetGeometry_heightMM, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nProperties = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetGeometry_nProperties, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetGeometry_nProperties, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nColors = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetGeometry_nColors, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetGeometry_nColors, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nDoodads = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetGeometry_nDoodads, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetGeometry_nDoodads, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nKeyAliases = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetGeometry_nKeyAliases, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetGeometry_nKeyAliases, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_baseColorNdx = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetGeometry_baseColorNdx, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetGeometry_baseColorNdx, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_labelColorNdx = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetGeometry_labelColorNdx, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetGeometry_labelColorNdx, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- struct_CountedString16(tvb, offsetp, t, little_endian, 1);
- struct_Property(tvb, offsetp, t, little_endian, f_nProperties);
+ struct_CountedString16(tvb, offsetp, t, byte_order, 1);
+ struct_Property(tvb, offsetp, t, byte_order, f_nProperties);
length -= f_nProperties * 0;
- struct_CountedString16(tvb, offsetp, t, little_endian, f_nColors);
+ struct_CountedString16(tvb, offsetp, t, byte_order, f_nColors);
length -= f_nColors * 0;
- struct_Shape(tvb, offsetp, t, little_endian, f_nShapes);
+ struct_Shape(tvb, offsetp, t, byte_order, f_nShapes);
length -= f_nShapes * 0;
- struct_Section(tvb, offsetp, t, little_endian, f_nSections);
+ struct_Section(tvb, offsetp, t, byte_order, f_nSections);
length -= f_nSections * 0;
- struct_Doodad(tvb, offsetp, t, little_endian, f_nDoodads);
+ struct_Doodad(tvb, offsetp, t, byte_order, f_nDoodads);
length -= f_nDoodads * 20;
- struct_KeyAlias(tvb, offsetp, t, little_endian, f_nKeyAliases);
+ struct_KeyAlias(tvb, offsetp, t, byte_order, f_nKeyAliases);
length -= f_nKeyAliases * 2;
}
-static void xkbPerClientFlags(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbPerClientFlags(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_deviceSpec;
int f_change;
@@ -24084,90 +24493,90 @@ static void xkbPerClientFlags(tvbuff_t *tvb, packet_info *pinfo _U_, int *offset
int f_autoCtrls;
int f_autoCtrlsValues;
f_deviceSpec = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_deviceSpec, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_deviceSpec, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
f_change = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_change, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_change, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_change_mask_DetectableAutoRepeat, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_change_mask_GrabsUseXKBState, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_change_mask_AutoResetControls, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_change_mask_LookupStateWhenGrabbed, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_change_mask_SendEventUsesXKBState, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_change_mask_DetectableAutoRepeat, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_change_mask_GrabsUseXKBState, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_change_mask_AutoResetControls, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_change_mask_LookupStateWhenGrabbed, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_change_mask_SendEventUsesXKBState, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
f_value = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_value, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_value, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_value_mask_DetectableAutoRepeat, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_value_mask_GrabsUseXKBState, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_value_mask_AutoResetControls, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_value_mask_LookupStateWhenGrabbed, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_value_mask_SendEventUsesXKBState, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_value_mask_DetectableAutoRepeat, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_value_mask_GrabsUseXKBState, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_value_mask_AutoResetControls, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_value_mask_LookupStateWhenGrabbed, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_value_mask_SendEventUsesXKBState, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
f_ctrlsToChange = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_ctrlsToChange, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_ctrlsToChange, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_RepeatKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_SlowKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_BounceKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_StickyKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_MouseKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_MouseKeysAccel, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_AccessXKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_AccessXTimeoutMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_AccessXFeedbackMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_AudibleBellMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_Overlay1Mask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_Overlay2Mask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_RepeatKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_SlowKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_BounceKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_StickyKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_MouseKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_MouseKeysAccel, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_AccessXKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_AccessXTimeoutMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_AccessXFeedbackMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_AudibleBellMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_Overlay1Mask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_Overlay2Mask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
f_autoCtrls = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_autoCtrls, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_autoCtrls, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_RepeatKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_SlowKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_BounceKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_StickyKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_MouseKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_MouseKeysAccel, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_AccessXKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_AccessXTimeoutMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_AccessXFeedbackMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_AudibleBellMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_Overlay1Mask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_Overlay2Mask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_RepeatKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_SlowKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_BounceKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_StickyKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_MouseKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_MouseKeysAccel, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_AccessXKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_AccessXTimeoutMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_AccessXFeedbackMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_AudibleBellMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_Overlay1Mask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_Overlay2Mask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
f_autoCtrlsValues = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_autoCtrlsValues, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_autoCtrlsValues, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_RepeatKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_SlowKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_BounceKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_StickyKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_MouseKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_MouseKeysAccel, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_AccessXKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_AccessXTimeoutMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_AccessXFeedbackMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_AudibleBellMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_Overlay1Mask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_Overlay2Mask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_RepeatKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_SlowKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_BounceKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_StickyKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_MouseKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_MouseKeysAccel, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_AccessXKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_AccessXTimeoutMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_AccessXFeedbackMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_AudibleBellMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_Overlay1Mask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_Overlay2Mask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
}
-static void xkbPerClientFlags_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xkbPerClientFlags_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_deviceID;
@@ -24180,7 +24589,7 @@ static void xkbPerClientFlags_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offs
REPLY(reply);
f_deviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_reply_deviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_reply_deviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -24188,72 +24597,72 @@ static void xkbPerClientFlags_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offs
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_supported = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_reply_supported, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_reply_supported, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_supported_mask_DetectableAutoRepeat, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_supported_mask_GrabsUseXKBState, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_supported_mask_AutoResetControls, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_supported_mask_LookupStateWhenGrabbed, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_supported_mask_SendEventUsesXKBState, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_supported_mask_DetectableAutoRepeat, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_supported_mask_GrabsUseXKBState, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_supported_mask_AutoResetControls, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_supported_mask_LookupStateWhenGrabbed, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_supported_mask_SendEventUsesXKBState, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
f_value = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_reply_value, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_reply_value, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_value_mask_DetectableAutoRepeat, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_value_mask_GrabsUseXKBState, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_value_mask_AutoResetControls, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_value_mask_LookupStateWhenGrabbed, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_value_mask_SendEventUsesXKBState, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_value_mask_DetectableAutoRepeat, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_value_mask_GrabsUseXKBState, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_value_mask_AutoResetControls, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_value_mask_LookupStateWhenGrabbed, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_value_mask_SendEventUsesXKBState, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
f_autoCtrls = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_reply_autoCtrls, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_reply_autoCtrls, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_RepeatKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_SlowKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_BounceKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_StickyKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_MouseKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_MouseKeysAccel, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_AccessXKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_AccessXTimeoutMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_AccessXFeedbackMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_AudibleBellMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_Overlay1Mask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_Overlay2Mask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_RepeatKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_SlowKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_BounceKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_StickyKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_MouseKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_MouseKeysAccel, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_AccessXKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_AccessXTimeoutMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_AccessXFeedbackMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_AudibleBellMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_Overlay1Mask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_Overlay2Mask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
f_autoCtrlsValues = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_RepeatKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_SlowKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_BounceKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_StickyKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_MouseKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_MouseKeysAccel, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_AccessXKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_AccessXTimeoutMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_AccessXFeedbackMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_AudibleBellMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_Overlay1Mask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_Overlay2Mask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_RepeatKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_SlowKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_BounceKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_StickyKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_MouseKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_MouseKeysAccel, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_AccessXKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_AccessXTimeoutMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_AccessXFeedbackMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_AudibleBellMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_Overlay1Mask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_Overlay2Mask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
UNUSED(8);
}
-static void xkbListComponents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbListComponents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_deviceSpec;
int f_maxNames;
@@ -24264,43 +24673,43 @@ static void xkbListComponents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offset
int f_symbolsSpecLen;
int f_geometrySpecLen;
f_deviceSpec = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ListComponents_deviceSpec, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ListComponents_deviceSpec, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_maxNames = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ListComponents_maxNames, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ListComponents_maxNames, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_keymapsSpecLen = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ListComponents_keymapsSpecLen, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ListComponents_keymapsSpecLen, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- listOfByte(tvb, offsetp, t, hf_x11_xkb_ListComponents_keymapsSpec, f_keymapsSpecLen, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_ListComponents_keymapsSpec, f_keymapsSpecLen, byte_order);
length -= f_keymapsSpecLen * 1;
f_keycodesSpecLen = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ListComponents_keycodesSpecLen, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ListComponents_keycodesSpecLen, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- listOfByte(tvb, offsetp, t, hf_x11_xkb_ListComponents_keycodesSpec, f_keycodesSpecLen, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_ListComponents_keycodesSpec, f_keycodesSpecLen, byte_order);
length -= f_keycodesSpecLen * 1;
f_typesSpecLen = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ListComponents_typesSpecLen, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ListComponents_typesSpecLen, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- listOfByte(tvb, offsetp, t, hf_x11_xkb_ListComponents_typesSpec, f_typesSpecLen, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_ListComponents_typesSpec, f_typesSpecLen, byte_order);
length -= f_typesSpecLen * 1;
f_compatMapSpecLen = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ListComponents_compatMapSpecLen, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ListComponents_compatMapSpecLen, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- listOfByte(tvb, offsetp, t, hf_x11_xkb_ListComponents_compatMapSpec, f_compatMapSpecLen, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_ListComponents_compatMapSpec, f_compatMapSpecLen, byte_order);
length -= f_compatMapSpecLen * 1;
f_symbolsSpecLen = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ListComponents_symbolsSpecLen, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ListComponents_symbolsSpecLen, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- listOfByte(tvb, offsetp, t, hf_x11_xkb_ListComponents_symbolsSpec, f_symbolsSpecLen, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_ListComponents_symbolsSpec, f_symbolsSpecLen, byte_order);
length -= f_symbolsSpecLen * 1;
f_geometrySpecLen = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ListComponents_geometrySpecLen, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ListComponents_geometrySpecLen, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- listOfByte(tvb, offsetp, t, hf_x11_xkb_ListComponents_geometrySpec, f_geometrySpecLen, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_ListComponents_geometrySpec, f_geometrySpecLen, byte_order);
length -= f_geometrySpecLen * 1;
}
-static void xkbListComponents_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xkbListComponents_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_deviceID;
@@ -24316,7 +24725,7 @@ static void xkbListComponents_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offs
REPLY(reply);
f_deviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_deviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_deviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -24324,39 +24733,39 @@ static void xkbListComponents_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offs
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_nKeymaps = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_nKeymaps, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_nKeymaps, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nKeycodes = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_nKeycodes, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_nKeycodes, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nTypes = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_nTypes, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_nTypes, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nCompatMaps = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_nCompatMaps, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_nCompatMaps, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nSymbols = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_nSymbols, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_nSymbols, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nGeometries = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_nGeometries, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_nGeometries, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_extra = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_extra, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_extra, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(10);
- struct_Listing(tvb, offsetp, t, little_endian, f_nKeymaps);
- struct_Listing(tvb, offsetp, t, little_endian, f_nKeycodes);
- struct_Listing(tvb, offsetp, t, little_endian, f_nTypes);
- struct_Listing(tvb, offsetp, t, little_endian, f_nCompatMaps);
- struct_Listing(tvb, offsetp, t, little_endian, f_nSymbols);
- struct_Listing(tvb, offsetp, t, little_endian, f_nGeometries);
+ struct_Listing(tvb, offsetp, t, byte_order, f_nKeymaps);
+ struct_Listing(tvb, offsetp, t, byte_order, f_nKeycodes);
+ struct_Listing(tvb, offsetp, t, byte_order, f_nTypes);
+ struct_Listing(tvb, offsetp, t, byte_order, f_nCompatMaps);
+ struct_Listing(tvb, offsetp, t, byte_order, f_nSymbols);
+ struct_Listing(tvb, offsetp, t, byte_order, f_nGeometries);
}
-static void xkbGetKbdByName(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbGetKbdByName(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_deviceSpec;
int f_need;
@@ -24369,72 +24778,72 @@ static void xkbGetKbdByName(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_symbolsSpecLen;
int f_geometrySpecLen;
f_deviceSpec = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_deviceSpec, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_deviceSpec, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_need = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_need, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_need, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_need_mask_Types, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_need_mask_CompatMap, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_need_mask_ClientSymbols, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_need_mask_ServerSymbols, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_need_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_need_mask_KeyNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_need_mask_Geometry, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_need_mask_OtherNames, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_need_mask_Types, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_need_mask_CompatMap, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_need_mask_ClientSymbols, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_need_mask_ServerSymbols, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_need_mask_IndicatorMaps, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_need_mask_KeyNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_need_mask_Geometry, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_need_mask_OtherNames, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_want = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_want, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_want, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_want_mask_Types, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_want_mask_CompatMap, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_want_mask_ClientSymbols, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_want_mask_ServerSymbols, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_want_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_want_mask_KeyNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_want_mask_Geometry, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_want_mask_OtherNames, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_want_mask_Types, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_want_mask_CompatMap, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_want_mask_ClientSymbols, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_want_mask_ServerSymbols, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_want_mask_IndicatorMaps, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_want_mask_KeyNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_want_mask_Geometry, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_want_mask_OtherNames, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_load = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_load, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_load, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
f_keymapsSpecLen = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_keymapsSpecLen, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_keymapsSpecLen, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_keymapsSpec, f_keymapsSpecLen, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_keymapsSpec, f_keymapsSpecLen, byte_order);
length -= f_keymapsSpecLen * 1;
f_keycodesSpecLen = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_keycodesSpecLen, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_keycodesSpecLen, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_keycodesSpec, f_keycodesSpecLen, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_keycodesSpec, f_keycodesSpecLen, byte_order);
length -= f_keycodesSpecLen * 1;
f_typesSpecLen = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_typesSpecLen, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_typesSpecLen, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_typesSpec, f_typesSpecLen, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_typesSpec, f_typesSpecLen, byte_order);
length -= f_typesSpecLen * 1;
f_compatMapSpecLen = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_compatMapSpecLen, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_compatMapSpecLen, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_compatMapSpec, f_compatMapSpecLen, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_compatMapSpec, f_compatMapSpecLen, byte_order);
length -= f_compatMapSpecLen * 1;
f_symbolsSpecLen = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_symbolsSpecLen, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_symbolsSpecLen, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_symbolsSpec, f_symbolsSpecLen, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_symbolsSpec, f_symbolsSpecLen, byte_order);
length -= f_symbolsSpecLen * 1;
f_geometrySpecLen = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_geometrySpecLen, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_geometrySpecLen, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_geometrySpec, f_geometrySpecLen, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_geometrySpec, f_geometrySpecLen, byte_order);
length -= f_geometrySpecLen * 1;
}
-static void xkbGetKbdByName_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xkbGetKbdByName_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_deviceID;
@@ -24449,7 +24858,7 @@ static void xkbGetKbdByName_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
REPLY(reply);
f_deviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_deviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_deviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -24457,46 +24866,46 @@ static void xkbGetKbdByName_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_minKeyCode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_minKeyCode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_minKeyCode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_maxKeyCode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_maxKeyCode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_maxKeyCode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_loaded = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_loaded, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_loaded, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_newKeyboard = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_newKeyboard, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_newKeyboard, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_found = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_found, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_found, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_found_mask_Types, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_found_mask_CompatMap, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_found_mask_ClientSymbols, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_found_mask_ServerSymbols, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_found_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_found_mask_KeyNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_found_mask_Geometry, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_found_mask_OtherNames, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_found_mask_Types, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_found_mask_CompatMap, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_found_mask_ClientSymbols, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_found_mask_ServerSymbols, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_found_mask_IndicatorMaps, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_found_mask_KeyNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_found_mask_Geometry, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_found_mask_OtherNames, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_reported = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_reported, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_reported, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_reported_mask_Types, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_reported_mask_CompatMap, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_reported_mask_ClientSymbols, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_reported_mask_ServerSymbols, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_reported_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_reported_mask_KeyNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_reported_mask_Geometry, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_reported_mask_OtherNames, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_reported_mask_Types, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_reported_mask_CompatMap, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_reported_mask_ClientSymbols, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_reported_mask_ServerSymbols, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_reported_mask_IndicatorMaps, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_reported_mask_KeyNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_reported_mask_Geometry, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_reported_mask_OtherNames, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
UNUSED(16);
@@ -24531,135 +24940,135 @@ static void xkbGetKbdByName_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
int f_totalVModMapKeys;
int f_virtualMods;
f_getmap_type = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_getmap_type, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_getmap_type, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_typeDeviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_typeDeviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_typeDeviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_getmap_sequence = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_getmap_sequence, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_getmap_sequence, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_getmap_length = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_getmap_length, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_getmap_length, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(2);
f_typeMinKeyCode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_typeMinKeyCode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_typeMinKeyCode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_typeMaxKeyCode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_typeMaxKeyCode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_typeMaxKeyCode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- f_present = field16(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_Types_present, little_endian);
+ f_present = field16(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_Types_present, byte_order);
f_firstType = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstType, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstType, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nTypes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nTypes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nTypes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalTypes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalTypes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalTypes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKeySym = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstKeySym, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstKeySym, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalSyms = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalSyms, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalSyms, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nKeySyms = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nKeySyms, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nKeySyms, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKeyAction = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstKeyAction, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstKeyAction, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalActions = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalActions, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalActions, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nKeyActions = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nKeyActions, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nKeyActions, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKeyBehavior = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstKeyBehavior, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstKeyBehavior, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeyBehaviors = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nKeyBehaviors, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nKeyBehaviors, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalKeyBehaviors = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalKeyBehaviors, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalKeyBehaviors, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKeyExplicit = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstKeyExplicit, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstKeyExplicit, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeyExplicit = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nKeyExplicit, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nKeyExplicit, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalKeyExplicit = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalKeyExplicit, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalKeyExplicit, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstModMapKey = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstModMapKey, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstModMapKey, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nModMapKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nModMapKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nModMapKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalModMapKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalModMapKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalModMapKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstVModMapKey = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstVModMapKey, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstVModMapKey, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nVModMapKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nVModMapKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nVModMapKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalVModMapKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalVModMapKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalVModMapKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
f_virtualMods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_15, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_15, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
if ((f_present & (1 << 0)) != 0) {
- struct_KeyType(tvb, offsetp, t, little_endian, f_nTypes);
+ struct_KeyType(tvb, offsetp, t, byte_order, f_nTypes);
}
if ((f_present & (1 << 1)) != 0) {
- struct_KeySymMap(tvb, offsetp, t, little_endian, f_nKeySyms);
+ struct_KeySymMap(tvb, offsetp, t, byte_order, f_nKeySyms);
}
if ((f_present & (1 << 4)) != 0) {
- listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_Types_KeyActions_acts_rtrn_count, f_nKeyActions, little_endian);
- struct_Action(tvb, offsetp, t, little_endian, f_totalActions);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_Types_KeyActions_acts_rtrn_count, f_nKeyActions, byte_order);
+ struct_Action(tvb, offsetp, t, byte_order, f_totalActions);
}
if ((f_present & (1 << 5)) != 0) {
- struct_SetBehavior(tvb, offsetp, t, little_endian, f_totalKeyBehaviors);
+ struct_SetBehavior(tvb, offsetp, t, byte_order, f_totalKeyBehaviors);
}
if ((f_present & (1 << 6)) != 0) {
- listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_Types_VirtualMods_vmods_rtrn, f_nVModMapKeys, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_Types_VirtualMods_vmods_rtrn, f_nVModMapKeys, byte_order);
}
if ((f_present & (1 << 3)) != 0) {
- struct_SetExplicit(tvb, offsetp, t, little_endian, f_totalKeyExplicit);
+ struct_SetExplicit(tvb, offsetp, t, byte_order, f_totalKeyExplicit);
}
if ((f_present & (1 << 2)) != 0) {
- struct_KeyModMap(tvb, offsetp, t, little_endian, f_totalModMapKeys);
+ struct_KeyModMap(tvb, offsetp, t, byte_order, f_totalModMapKeys);
}
if ((f_present & (1 << 7)) != 0) {
- struct_KeyVModMap(tvb, offsetp, t, little_endian, f_totalVModMapKeys);
+ struct_KeyVModMap(tvb, offsetp, t, byte_order, f_totalVModMapKeys);
}
}
if ((f_reported & (1 << 1)) != 0) {
@@ -24669,31 +25078,31 @@ static void xkbGetKbdByName_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
int f_nSIRtrn;
int f_nTotalSI;
f_compatDeviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_CompatMap_compatDeviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_CompatMap_compatDeviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_groupsRtrn = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_CompatMap_groupsRtrn, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_CompatMap_groupsRtrn, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_CompatMap_groupsRtrn_mask_Group1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_CompatMap_groupsRtrn_mask_Group2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_CompatMap_groupsRtrn_mask_Group3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_CompatMap_groupsRtrn_mask_Group4, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_CompatMap_groupsRtrn_mask_Group1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_CompatMap_groupsRtrn_mask_Group2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_CompatMap_groupsRtrn_mask_Group3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_CompatMap_groupsRtrn_mask_Group4, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
UNUSED(1);
f_firstSIRtrn = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_CompatMap_firstSIRtrn, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_CompatMap_firstSIRtrn, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nSIRtrn = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_CompatMap_nSIRtrn, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_CompatMap_nSIRtrn, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nTotalSI = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_CompatMap_nTotalSI, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_CompatMap_nTotalSI, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(16);
- listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_CompatMap_si_rtrn, (16 * f_nSIRtrn), little_endian);
- struct_ModDef(tvb, offsetp, t, little_endian, popcount(f_groupsRtrn));
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_CompatMap_si_rtrn, (16 * f_nSIRtrn), byte_order);
+ struct_ModDef(tvb, offsetp, t, byte_order, popcount(f_groupsRtrn));
}
if ((f_reported & (1 << 2)) != 0) {
int f_clientDeviceID;
@@ -24723,126 +25132,126 @@ static void xkbGetKbdByName_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
int f_totalVModMapKeys;
int f_virtualMods;
f_clientDeviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_clientDeviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_clientDeviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
f_clientMinKeyCode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_clientMinKeyCode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_clientMinKeyCode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_clientMaxKeyCode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_clientMaxKeyCode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_clientMaxKeyCode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- f_present = field16(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_present, little_endian);
+ f_present = field16(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_present, byte_order);
f_firstType = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_firstType, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_firstType, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nTypes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_nTypes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_nTypes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalTypes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_totalTypes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_totalTypes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKeySym = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_firstKeySym, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_firstKeySym, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalSyms = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_totalSyms, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_totalSyms, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nKeySyms = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_nKeySyms, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_nKeySyms, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKeyAction = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_firstKeyAction, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_firstKeyAction, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalActions = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_totalActions, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_totalActions, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nKeyActions = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_nKeyActions, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_nKeyActions, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKeyBehavior = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_firstKeyBehavior, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_firstKeyBehavior, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeyBehaviors = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_nKeyBehaviors, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_nKeyBehaviors, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalKeyBehaviors = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_totalKeyBehaviors, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_totalKeyBehaviors, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKeyExplicit = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_firstKeyExplicit, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_firstKeyExplicit, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeyExplicit = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_nKeyExplicit, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_nKeyExplicit, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalKeyExplicit = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_totalKeyExplicit, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_totalKeyExplicit, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstModMapKey = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_firstModMapKey, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_firstModMapKey, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nModMapKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_nModMapKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_nModMapKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalModMapKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_totalModMapKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_totalModMapKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstVModMapKey = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_firstVModMapKey, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_firstVModMapKey, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nVModMapKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_nVModMapKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_nVModMapKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalVModMapKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_totalVModMapKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_totalVModMapKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
f_virtualMods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_15, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_15, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
if ((f_present & (1 << 0)) != 0) {
- struct_KeyType(tvb, offsetp, t, little_endian, f_nTypes);
+ struct_KeyType(tvb, offsetp, t, byte_order, f_nTypes);
}
if ((f_present & (1 << 1)) != 0) {
- struct_KeySymMap(tvb, offsetp, t, little_endian, f_nKeySyms);
+ struct_KeySymMap(tvb, offsetp, t, byte_order, f_nKeySyms);
}
if ((f_present & (1 << 4)) != 0) {
- listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_KeyActions_acts_rtrn_count, f_nKeyActions, little_endian);
- struct_Action(tvb, offsetp, t, little_endian, f_totalActions);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_KeyActions_acts_rtrn_count, f_nKeyActions, byte_order);
+ struct_Action(tvb, offsetp, t, byte_order, f_totalActions);
}
if ((f_present & (1 << 5)) != 0) {
- struct_SetBehavior(tvb, offsetp, t, little_endian, f_totalKeyBehaviors);
+ struct_SetBehavior(tvb, offsetp, t, byte_order, f_totalKeyBehaviors);
}
if ((f_present & (1 << 6)) != 0) {
- listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_VirtualMods_vmods_rtrn, f_nVModMapKeys, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_VirtualMods_vmods_rtrn, f_nVModMapKeys, byte_order);
}
if ((f_present & (1 << 3)) != 0) {
- struct_SetExplicit(tvb, offsetp, t, little_endian, f_totalKeyExplicit);
+ struct_SetExplicit(tvb, offsetp, t, byte_order, f_totalKeyExplicit);
}
if ((f_present & (1 << 2)) != 0) {
- struct_KeyModMap(tvb, offsetp, t, little_endian, f_totalModMapKeys);
+ struct_KeyModMap(tvb, offsetp, t, byte_order, f_totalModMapKeys);
}
if ((f_present & (1 << 7)) != 0) {
- struct_KeyVModMap(tvb, offsetp, t, little_endian, f_totalVModMapKeys);
+ struct_KeyVModMap(tvb, offsetp, t, byte_order, f_totalVModMapKeys);
}
}
if ((f_reported & (1 << 3)) != 0) {
@@ -24873,126 +25282,126 @@ static void xkbGetKbdByName_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
int f_totalVModMapKeys;
int f_virtualMods;
f_serverDeviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_serverDeviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_serverDeviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
f_serverMinKeyCode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_serverMinKeyCode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_serverMinKeyCode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_serverMaxKeyCode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_serverMaxKeyCode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_serverMaxKeyCode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- f_present = field16(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_present, little_endian);
+ f_present = field16(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_present, byte_order);
f_firstType = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_firstType, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_firstType, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nTypes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_nTypes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_nTypes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalTypes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_totalTypes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_totalTypes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKeySym = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_firstKeySym, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_firstKeySym, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalSyms = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_totalSyms, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_totalSyms, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nKeySyms = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_nKeySyms, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_nKeySyms, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKeyAction = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_firstKeyAction, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_firstKeyAction, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalActions = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_totalActions, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_totalActions, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nKeyActions = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_nKeyActions, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_nKeyActions, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKeyBehavior = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_firstKeyBehavior, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_firstKeyBehavior, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeyBehaviors = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_nKeyBehaviors, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_nKeyBehaviors, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalKeyBehaviors = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_totalKeyBehaviors, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_totalKeyBehaviors, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKeyExplicit = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_firstKeyExplicit, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_firstKeyExplicit, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeyExplicit = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_nKeyExplicit, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_nKeyExplicit, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalKeyExplicit = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_totalKeyExplicit, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_totalKeyExplicit, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstModMapKey = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_firstModMapKey, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_firstModMapKey, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nModMapKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_nModMapKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_nModMapKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalModMapKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_totalModMapKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_totalModMapKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstVModMapKey = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_firstVModMapKey, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_firstVModMapKey, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nVModMapKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_nVModMapKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_nVModMapKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalVModMapKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_totalVModMapKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_totalVModMapKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
f_virtualMods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_15, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_15, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
if ((f_present & (1 << 0)) != 0) {
- struct_KeyType(tvb, offsetp, t, little_endian, f_nTypes);
+ struct_KeyType(tvb, offsetp, t, byte_order, f_nTypes);
}
if ((f_present & (1 << 1)) != 0) {
- struct_KeySymMap(tvb, offsetp, t, little_endian, f_nKeySyms);
+ struct_KeySymMap(tvb, offsetp, t, byte_order, f_nKeySyms);
}
if ((f_present & (1 << 4)) != 0) {
- listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_KeyActions_acts_rtrn_count, f_nKeyActions, little_endian);
- struct_Action(tvb, offsetp, t, little_endian, f_totalActions);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_KeyActions_acts_rtrn_count, f_nKeyActions, byte_order);
+ struct_Action(tvb, offsetp, t, byte_order, f_totalActions);
}
if ((f_present & (1 << 5)) != 0) {
- struct_SetBehavior(tvb, offsetp, t, little_endian, f_totalKeyBehaviors);
+ struct_SetBehavior(tvb, offsetp, t, byte_order, f_totalKeyBehaviors);
}
if ((f_present & (1 << 6)) != 0) {
- listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_VirtualMods_vmods_rtrn, f_nVModMapKeys, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_VirtualMods_vmods_rtrn, f_nVModMapKeys, byte_order);
}
if ((f_present & (1 << 3)) != 0) {
- struct_SetExplicit(tvb, offsetp, t, little_endian, f_totalKeyExplicit);
+ struct_SetExplicit(tvb, offsetp, t, byte_order, f_totalKeyExplicit);
}
if ((f_present & (1 << 2)) != 0) {
- struct_KeyModMap(tvb, offsetp, t, little_endian, f_totalModMapKeys);
+ struct_KeyModMap(tvb, offsetp, t, byte_order, f_totalModMapKeys);
}
if ((f_present & (1 << 7)) != 0) {
- struct_KeyVModMap(tvb, offsetp, t, little_endian, f_totalVModMapKeys);
+ struct_KeyVModMap(tvb, offsetp, t, byte_order, f_totalVModMapKeys);
}
}
if ((f_reported & (1 << 4)) != 0) {
@@ -25001,19 +25410,19 @@ static void xkbGetKbdByName_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
int f_realIndicators;
int f_nIndicators;
f_indicatorDeviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_IndicatorMaps_indicatorDeviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_IndicatorMaps_indicatorDeviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_which = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_IndicatorMaps_which, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_IndicatorMaps_which, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_realIndicators = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_IndicatorMaps_realIndicators, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_IndicatorMaps_realIndicators, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_nIndicators = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_IndicatorMaps_nIndicators, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_IndicatorMaps_nIndicators, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(15);
- struct_IndicatorMap(tvb, offsetp, t, little_endian, f_nIndicators);
+ struct_IndicatorMap(tvb, offsetp, t, byte_order, f_nIndicators);
}
if ((f_reported & (1 << 5)) != 0) {
int f_keyDeviceID;
@@ -25030,148 +25439,148 @@ static void xkbGetKbdByName_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
int f_nKeyAliases;
int f_nKTLevels;
f_keyDeviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_keyDeviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_keyDeviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_which = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_which, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_which, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_Keycodes, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_Geometry, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_Symbols, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_PhysSymbols, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_Types, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_Compat, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_KeyTypeNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_KTLevelNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_IndicatorNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_KeyNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_KeyAliases, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_VirtualModNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_GroupNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_RGNames, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_Keycodes, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_Geometry, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_Symbols, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_PhysSymbols, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_Types, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_Compat, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_KeyTypeNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_KTLevelNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_IndicatorNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_KeyNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_KeyAliases, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_VirtualModNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_GroupNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_RGNames, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
f_keyMinKeyCode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_keyMinKeyCode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_keyMinKeyCode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_keyMaxKeyCode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_keyMaxKeyCode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_keyMaxKeyCode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nTypes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_nTypes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_nTypes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_groupNames = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_groupNames, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_groupNames, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_groupNames_mask_Group1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_groupNames_mask_Group2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_groupNames_mask_Group3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_groupNames_mask_Group4, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_groupNames_mask_Group1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_groupNames_mask_Group2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_groupNames_mask_Group3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_groupNames_mask_Group4, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_virtualMods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_15, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_15, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_firstKey = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_firstKey, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_firstKey, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_nKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_nKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_indicators = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_indicators, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_indicators, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_nRadioGroups = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_nRadioGroups, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_nRadioGroups, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeyAliases = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_nKeyAliases, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_nKeyAliases, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKTLevels = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_nKTLevels, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_nKTLevels, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(4);
if ((f_which & (1 << 0)) != 0) {
int f_keycodesName;
f_keycodesName = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_Keycodes_keycodesName, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_Keycodes_keycodesName, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if ((f_which & (1 << 1)) != 0) {
int f_geometryName;
f_geometryName = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_Geometry_geometryName, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_Geometry_geometryName, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if ((f_which & (1 << 2)) != 0) {
int f_symbolsName;
f_symbolsName = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_Symbols_symbolsName, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_Symbols_symbolsName, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if ((f_which & (1 << 3)) != 0) {
int f_physSymbolsName;
f_physSymbolsName = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_PhysSymbols_physSymbolsName, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_PhysSymbols_physSymbolsName, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if ((f_which & (1 << 4)) != 0) {
int f_typesName;
f_typesName = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_Types_typesName, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_Types_typesName, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if ((f_which & (1 << 5)) != 0) {
int f_compatName;
f_compatName = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_Compat_compatName, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_Compat_compatName, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if ((f_which & (1 << 6)) != 0) {
- listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_KeyTypeNames_typeNames, hf_x11_xkb_GetKbdByName_reply_KeyNames_KeyTypeNames_typeNames_item, f_nTypes, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_KeyTypeNames_typeNames, hf_x11_xkb_GetKbdByName_reply_KeyNames_KeyTypeNames_typeNames_item, f_nTypes, byte_order);
}
if ((f_which & (1 << 7)) != 0) {
- listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_KTLevelNames_nLevelsPerType, f_nKTLevels, little_endian);
- listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_KTLevelNames_ktLevelNames, hf_x11_xkb_GetKbdByName_reply_KeyNames_KTLevelNames_ktLevelNames_item, (length - 237) / 4, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_KTLevelNames_nLevelsPerType, f_nKTLevels, byte_order);
+ listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_KTLevelNames_ktLevelNames, hf_x11_xkb_GetKbdByName_reply_KeyNames_KTLevelNames_ktLevelNames_item, (length - 237) / 4, byte_order);
}
if ((f_which & (1 << 8)) != 0) {
- listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_IndicatorNames_indicatorNames, hf_x11_xkb_GetKbdByName_reply_KeyNames_IndicatorNames_indicatorNames_item, popcount(f_indicators), little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_IndicatorNames_indicatorNames, hf_x11_xkb_GetKbdByName_reply_KeyNames_IndicatorNames_indicatorNames_item, popcount(f_indicators), byte_order);
}
if ((f_which & (1 << 11)) != 0) {
- listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_VirtualModNames_virtualModNames, hf_x11_xkb_GetKbdByName_reply_KeyNames_VirtualModNames_virtualModNames_item, popcount(f_virtualMods), little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_VirtualModNames_virtualModNames, hf_x11_xkb_GetKbdByName_reply_KeyNames_VirtualModNames_virtualModNames_item, popcount(f_virtualMods), byte_order);
}
if ((f_which & (1 << 12)) != 0) {
- listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_GroupNames_groups, hf_x11_xkb_GetKbdByName_reply_KeyNames_GroupNames_groups_item, popcount(f_groupNames), little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_GroupNames_groups, hf_x11_xkb_GetKbdByName_reply_KeyNames_GroupNames_groups_item, popcount(f_groupNames), byte_order);
}
if ((f_which & (1 << 9)) != 0) {
- struct_KeyName(tvb, offsetp, t, little_endian, f_nKeys);
+ struct_KeyName(tvb, offsetp, t, byte_order, f_nKeys);
}
if ((f_which & (1 << 10)) != 0) {
- struct_KeyAlias(tvb, offsetp, t, little_endian, f_nKeyAliases);
+ struct_KeyAlias(tvb, offsetp, t, byte_order, f_nKeyAliases);
}
if ((f_which & (1 << 13)) != 0) {
- listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_RGNames_radioGroupNames, hf_x11_xkb_GetKbdByName_reply_KeyNames_RGNames_radioGroupNames_item, f_nRadioGroups, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_RGNames_radioGroupNames, hf_x11_xkb_GetKbdByName_reply_KeyNames_RGNames_radioGroupNames_item, f_nRadioGroups, byte_order);
}
}
if ((f_reported & (1 << 7)) != 0) {
@@ -25189,148 +25598,148 @@ static void xkbGetKbdByName_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
int f_nKeyAliases;
int f_nKTLevels;
f_otherDeviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_otherDeviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_otherDeviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_which = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_which, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_which, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_Keycodes, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_Geometry, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_Symbols, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_PhysSymbols, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_Types, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_Compat, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_KeyTypeNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_KTLevelNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_IndicatorNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_KeyNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_KeyAliases, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_VirtualModNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_GroupNames, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_RGNames, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_Keycodes, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_Geometry, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_Symbols, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_PhysSymbols, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_Types, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_Compat, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_KeyTypeNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_KTLevelNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_IndicatorNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_KeyNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_KeyAliases, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_VirtualModNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_GroupNames, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_RGNames, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
f_otherMinKeyCode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_otherMinKeyCode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_otherMinKeyCode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_otherMaxKeyCode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_otherMaxKeyCode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_otherMaxKeyCode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nTypes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_nTypes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_nTypes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_groupNames = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_groupNames, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_groupNames, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_groupNames_mask_Group1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_groupNames_mask_Group2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_groupNames_mask_Group3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_groupNames_mask_Group4, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_groupNames_mask_Group1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_groupNames_mask_Group2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_groupNames_mask_Group3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_groupNames_mask_Group4, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_virtualMods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_15, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_15, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_firstKey = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_firstKey, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_firstKey, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_nKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_nKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_indicators = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_indicators, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_indicators, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_nRadioGroups = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_nRadioGroups, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_nRadioGroups, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeyAliases = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_nKeyAliases, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_nKeyAliases, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKTLevels = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_nKTLevels, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_nKTLevels, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(4);
if ((f_which & (1 << 0)) != 0) {
int f_keycodesName;
f_keycodesName = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_Keycodes_keycodesName, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_Keycodes_keycodesName, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if ((f_which & (1 << 1)) != 0) {
int f_geometryName;
f_geometryName = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_Geometry_geometryName, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_Geometry_geometryName, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if ((f_which & (1 << 2)) != 0) {
int f_symbolsName;
f_symbolsName = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_Symbols_symbolsName, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_Symbols_symbolsName, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if ((f_which & (1 << 3)) != 0) {
int f_physSymbolsName;
f_physSymbolsName = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_PhysSymbols_physSymbolsName, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_PhysSymbols_physSymbolsName, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if ((f_which & (1 << 4)) != 0) {
int f_typesName;
f_typesName = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_Types_typesName, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_Types_typesName, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if ((f_which & (1 << 5)) != 0) {
int f_compatName;
f_compatName = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_Compat_compatName, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_Compat_compatName, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
if ((f_which & (1 << 6)) != 0) {
- listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_OtherNames_KeyTypeNames_typeNames, hf_x11_xkb_GetKbdByName_reply_OtherNames_KeyTypeNames_typeNames_item, f_nTypes, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_OtherNames_KeyTypeNames_typeNames, hf_x11_xkb_GetKbdByName_reply_OtherNames_KeyTypeNames_typeNames_item, f_nTypes, byte_order);
}
if ((f_which & (1 << 7)) != 0) {
- listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_OtherNames_KTLevelNames_nLevelsPerType, f_nKTLevels, little_endian);
- listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_OtherNames_KTLevelNames_ktLevelNames, hf_x11_xkb_GetKbdByName_reply_OtherNames_KTLevelNames_ktLevelNames_item, (length - 286) / 4, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_OtherNames_KTLevelNames_nLevelsPerType, f_nKTLevels, byte_order);
+ listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_OtherNames_KTLevelNames_ktLevelNames, hf_x11_xkb_GetKbdByName_reply_OtherNames_KTLevelNames_ktLevelNames_item, (length - 286) / 4, byte_order);
}
if ((f_which & (1 << 8)) != 0) {
- listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_OtherNames_IndicatorNames_indicatorNames, hf_x11_xkb_GetKbdByName_reply_OtherNames_IndicatorNames_indicatorNames_item, popcount(f_indicators), little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_OtherNames_IndicatorNames_indicatorNames, hf_x11_xkb_GetKbdByName_reply_OtherNames_IndicatorNames_indicatorNames_item, popcount(f_indicators), byte_order);
}
if ((f_which & (1 << 11)) != 0) {
- listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_OtherNames_VirtualModNames_virtualModNames, hf_x11_xkb_GetKbdByName_reply_OtherNames_VirtualModNames_virtualModNames_item, popcount(f_virtualMods), little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_OtherNames_VirtualModNames_virtualModNames, hf_x11_xkb_GetKbdByName_reply_OtherNames_VirtualModNames_virtualModNames_item, popcount(f_virtualMods), byte_order);
}
if ((f_which & (1 << 12)) != 0) {
- listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_OtherNames_GroupNames_groups, hf_x11_xkb_GetKbdByName_reply_OtherNames_GroupNames_groups_item, popcount(f_groupNames), little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_OtherNames_GroupNames_groups, hf_x11_xkb_GetKbdByName_reply_OtherNames_GroupNames_groups_item, popcount(f_groupNames), byte_order);
}
if ((f_which & (1 << 9)) != 0) {
- struct_KeyName(tvb, offsetp, t, little_endian, f_nKeys);
+ struct_KeyName(tvb, offsetp, t, byte_order, f_nKeys);
}
if ((f_which & (1 << 10)) != 0) {
- struct_KeyAlias(tvb, offsetp, t, little_endian, f_nKeyAliases);
+ struct_KeyAlias(tvb, offsetp, t, byte_order, f_nKeyAliases);
}
if ((f_which & (1 << 13)) != 0) {
- listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_OtherNames_RGNames_radioGroupNames, hf_x11_xkb_GetKbdByName_reply_OtherNames_RGNames_radioGroupNames_item, f_nRadioGroups, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_OtherNames_RGNames_radioGroupNames, hf_x11_xkb_GetKbdByName_reply_OtherNames_RGNames_radioGroupNames_item, f_nRadioGroups, byte_order);
}
}
if ((f_reported & (1 << 6)) != 0) {
@@ -25348,56 +25757,56 @@ static void xkbGetKbdByName_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
int f_baseColorNdx;
int f_labelColorNdx;
f_geometryDeviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_geometryDeviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_geometryDeviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_name = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_name, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_name, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_geometryFound = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_geometryFound, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_geometryFound, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
f_widthMM = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_widthMM, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_widthMM, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_heightMM = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_heightMM, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_heightMM, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nProperties = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_nProperties, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_nProperties, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nColors = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_nColors, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_nColors, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nShapes = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_nShapes, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_nShapes, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nSections = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_nSections, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_nSections, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nDoodads = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_nDoodads, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_nDoodads, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nKeyAliases = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_nKeyAliases, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_nKeyAliases, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_baseColorNdx = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_baseColorNdx, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_baseColorNdx, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_labelColorNdx = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_labelColorNdx, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_labelColorNdx, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- struct_CountedString16(tvb, offsetp, t, little_endian, 1);
- struct_Property(tvb, offsetp, t, little_endian, f_nProperties);
- struct_CountedString16(tvb, offsetp, t, little_endian, f_nColors);
- struct_Shape(tvb, offsetp, t, little_endian, f_nShapes);
- struct_Section(tvb, offsetp, t, little_endian, f_nSections);
- struct_Doodad(tvb, offsetp, t, little_endian, f_nDoodads);
- struct_KeyAlias(tvb, offsetp, t, little_endian, f_nKeyAliases);
+ struct_CountedString16(tvb, offsetp, t, byte_order, 1);
+ struct_Property(tvb, offsetp, t, byte_order, f_nProperties);
+ struct_CountedString16(tvb, offsetp, t, byte_order, f_nColors);
+ struct_Shape(tvb, offsetp, t, byte_order, f_nShapes);
+ struct_Section(tvb, offsetp, t, byte_order, f_nSections);
+ struct_Doodad(tvb, offsetp, t, byte_order, f_nDoodads);
+ struct_KeyAlias(tvb, offsetp, t, byte_order, f_nKeyAliases);
}
}
-static void xkbGetDeviceInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbGetDeviceInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_deviceSpec;
int f_wanted;
@@ -25407,33 +25816,33 @@ static void xkbGetDeviceInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp
int f_ledClass;
int f_ledID;
f_deviceSpec = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_deviceSpec, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_deviceSpec, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_wanted = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_wanted, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_wanted, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_wanted_mask_Keyboards, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_wanted_mask_ButtonActions, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_wanted_mask_IndicatorNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_wanted_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_wanted_mask_IndicatorState, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_wanted_mask_Keyboards, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_wanted_mask_ButtonActions, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_wanted_mask_IndicatorNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_wanted_mask_IndicatorMaps, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_wanted_mask_IndicatorState, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_allButtons = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_allButtons, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_allButtons, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstButton = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_firstButton, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_firstButton, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nButtons = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_nButtons, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_nButtons, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
- f_ledClass = field16(tvb, offsetp, t, hf_x11_xkb_GetDeviceInfo_ledClass, little_endian);
- f_ledID = field16(tvb, offsetp, t, hf_x11_xkb_GetDeviceInfo_ledID, little_endian);
+ f_ledClass = field16(tvb, offsetp, t, hf_x11_xkb_GetDeviceInfo_ledClass, byte_order);
+ f_ledID = field16(tvb, offsetp, t, hf_x11_xkb_GetDeviceInfo_ledID, byte_order);
}
-static void xkbGetDeviceInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xkbGetDeviceInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_deviceID;
@@ -25456,7 +25865,7 @@ static void xkbGetDeviceInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offse
REPLY(reply);
f_deviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_deviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_deviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -25464,77 +25873,77 @@ static void xkbGetDeviceInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offse
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_present = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_present, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_present, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_present_mask_Keyboards, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_present_mask_ButtonActions, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_present_mask_IndicatorNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_present_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_present_mask_IndicatorState, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_present_mask_Keyboards, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_present_mask_ButtonActions, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_present_mask_IndicatorNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_present_mask_IndicatorMaps, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_present_mask_IndicatorState, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_supported = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_supported, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_supported, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_supported_mask_Keyboards, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_supported_mask_ButtonActions, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_supported_mask_IndicatorNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_supported_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_supported_mask_IndicatorState, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_supported_mask_Keyboards, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_supported_mask_ButtonActions, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_supported_mask_IndicatorNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_supported_mask_IndicatorMaps, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_supported_mask_IndicatorState, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_unsupported = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_unsupported, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_unsupported, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_unsupported_mask_Keyboards, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_unsupported_mask_ButtonActions, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_unsupported_mask_IndicatorNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_unsupported_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_unsupported_mask_IndicatorState, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_unsupported_mask_Keyboards, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_unsupported_mask_ButtonActions, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_unsupported_mask_IndicatorNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_unsupported_mask_IndicatorMaps, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_unsupported_mask_IndicatorState, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_nDeviceLedFBs = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_nDeviceLedFBs, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_nDeviceLedFBs, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_firstBtnWanted = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_firstBtnWanted, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_firstBtnWanted, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nBtnsWanted = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_nBtnsWanted, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_nBtnsWanted, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstBtnRtrn = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_firstBtnRtrn, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_firstBtnRtrn, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nBtnsRtrn = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_nBtnsRtrn, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_nBtnsRtrn, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_totalBtns = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_totalBtns, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_totalBtns, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_hasOwnState = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_hasOwnState, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_hasOwnState, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- f_dfltKbdFB = field16(tvb, offsetp, t, hf_x11_xkb_GetDeviceInfo_reply_dfltKbdFB, little_endian);
- f_dfltLedFB = field16(tvb, offsetp, t, hf_x11_xkb_GetDeviceInfo_reply_dfltLedFB, little_endian);
+ f_dfltKbdFB = field16(tvb, offsetp, t, hf_x11_xkb_GetDeviceInfo_reply_dfltKbdFB, byte_order);
+ f_dfltLedFB = field16(tvb, offsetp, t, hf_x11_xkb_GetDeviceInfo_reply_dfltLedFB, byte_order);
UNUSED(2);
f_devType = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_devType, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_devType, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_nameLen = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_nameLen, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_nameLen, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- listOfByte(tvb, offsetp, t, hf_x11_xkb_GetDeviceInfo_reply_name, f_nameLen, little_endian);
- struct_Action(tvb, offsetp, t, little_endian, f_nBtnsRtrn);
- struct_DeviceLedInfo(tvb, offsetp, t, little_endian, f_nDeviceLedFBs);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_GetDeviceInfo_reply_name, f_nameLen, byte_order);
+ struct_Action(tvb, offsetp, t, byte_order, f_nBtnsRtrn);
+ struct_DeviceLedInfo(tvb, offsetp, t, byte_order, f_nDeviceLedFBs);
}
-static void xkbSetDeviceInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbSetDeviceInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_deviceSpec;
int f_firstBtn;
@@ -25542,35 +25951,35 @@ static void xkbSetDeviceInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp
int f_change;
int f_nDeviceLedFBs;
f_deviceSpec = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetDeviceInfo_deviceSpec, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetDeviceInfo_deviceSpec, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_firstBtn = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetDeviceInfo_firstBtn, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetDeviceInfo_firstBtn, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nBtns = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetDeviceInfo_nBtns, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetDeviceInfo_nBtns, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_change = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetDeviceInfo_change, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetDeviceInfo_change, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetDeviceInfo_change_mask_Keyboards, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetDeviceInfo_change_mask_ButtonActions, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetDeviceInfo_change_mask_IndicatorNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetDeviceInfo_change_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetDeviceInfo_change_mask_IndicatorState, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetDeviceInfo_change_mask_Keyboards, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetDeviceInfo_change_mask_ButtonActions, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetDeviceInfo_change_mask_IndicatorNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetDeviceInfo_change_mask_IndicatorMaps, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetDeviceInfo_change_mask_IndicatorState, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_nDeviceLedFBs = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetDeviceInfo_nDeviceLedFBs, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetDeviceInfo_nDeviceLedFBs, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- struct_Action(tvb, offsetp, t, little_endian, f_nBtns);
+ struct_Action(tvb, offsetp, t, byte_order, f_nBtns);
length -= f_nBtns * 8;
- struct_DeviceLedInfo(tvb, offsetp, t, little_endian, f_nDeviceLedFBs);
+ struct_DeviceLedInfo(tvb, offsetp, t, byte_order, f_nDeviceLedFBs);
length -= f_nDeviceLedFBs * 0;
}
-static void xkbSetDebuggingFlags(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xkbSetDebuggingFlags(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_msgLength;
int f_affectFlags;
@@ -25578,25 +25987,25 @@ static void xkbSetDebuggingFlags(tvbuff_t *tvb, packet_info *pinfo _U_, int *off
int f_affectCtrls;
int f_ctrls;
f_msgLength = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_msgLength, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_msgLength, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
f_affectFlags = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_affectFlags, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_affectFlags, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_flags = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_flags, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_flags, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_affectCtrls = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_affectCtrls, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_affectCtrls, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_ctrls = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_ctrls, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_ctrls, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_xkb_SetDebuggingFlags_message, f_msgLength, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_SetDebuggingFlags_message, f_msgLength, byte_order);
length -= f_msgLength * 1;
}
-static void xkbSetDebuggingFlags_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xkbSetDebuggingFlags_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_currentFlags;
@@ -25614,24 +26023,24 @@ static void xkbSetDebuggingFlags_Reply(tvbuff_t *tvb, packet_info *pinfo, int *o
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_currentFlags = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_reply_currentFlags, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_reply_currentFlags, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_currentCtrls = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_reply_currentCtrls, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_reply_currentCtrls, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_supportedFlags = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_reply_supportedFlags, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_reply_supportedFlags, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_supportedCtrls = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_reply_supportedCtrls, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_reply_supportedCtrls, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(8);
}
-static void xkbNewKeyboardNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xkbNewKeyboardNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_time;
int f_deviceID;
@@ -25644,46 +26053,46 @@ static void xkbNewKeyboardNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int
int f_requestMinor;
int f_changed;
f_time = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_time, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_time, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
CARD16(event_sequencenumber);
f_deviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_deviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_deviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_oldDeviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_oldDeviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_oldDeviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_minKeyCode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_minKeyCode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_minKeyCode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_maxKeyCode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_maxKeyCode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_maxKeyCode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_oldMinKeyCode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_oldMinKeyCode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_oldMinKeyCode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_oldMaxKeyCode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_oldMaxKeyCode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_oldMaxKeyCode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_requestMajor = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_requestMajor, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_requestMajor, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_requestMinor = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_requestMinor, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_requestMinor, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_changed = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_changed, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_changed, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NewKeyboardNotify_changed_mask_Keycodes, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NewKeyboardNotify_changed_mask_Geometry, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NewKeyboardNotify_changed_mask_DeviceID, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NewKeyboardNotify_changed_mask_Keycodes, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NewKeyboardNotify_changed_mask_Geometry, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NewKeyboardNotify_changed_mask_DeviceID, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
UNUSED(14);
}
-static void xkbMapNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xkbMapNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_time;
int f_deviceID;
@@ -25707,103 +26116,103 @@ static void xkbMapNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_
int f_nVModMapKeys;
int f_virtualMods;
f_time = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_MapNotify_time, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_MapNotify_time, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
CARD16(event_sequencenumber);
f_deviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_MapNotify_deviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_MapNotify_deviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_ptrBtnActions = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_MapNotify_ptrBtnActions, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_MapNotify_ptrBtnActions, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_changed = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_MapNotify_changed, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_MapNotify_changed, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_changed_mask_KeyTypes, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_changed_mask_KeySyms, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_changed_mask_ModifierMap, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_changed_mask_ExplicitComponents, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_changed_mask_KeyActions, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_changed_mask_KeyBehaviors, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_changed_mask_VirtualMods, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_changed_mask_VirtualModMap, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_changed_mask_KeyTypes, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_changed_mask_KeySyms, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_changed_mask_ModifierMap, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_changed_mask_ExplicitComponents, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_changed_mask_KeyActions, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_changed_mask_KeyBehaviors, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_changed_mask_VirtualMods, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_changed_mask_VirtualModMap, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_minKeyCode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_MapNotify_minKeyCode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_MapNotify_minKeyCode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_maxKeyCode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_MapNotify_maxKeyCode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_MapNotify_maxKeyCode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstType = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstType, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstType, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nTypes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_MapNotify_nTypes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_MapNotify_nTypes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKeySym = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstKeySym, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstKeySym, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeySyms = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_MapNotify_nKeySyms, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_MapNotify_nKeySyms, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKeyAct = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstKeyAct, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstKeyAct, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeyActs = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_MapNotify_nKeyActs, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_MapNotify_nKeyActs, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKeyBehavior = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstKeyBehavior, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstKeyBehavior, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeyBehavior = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_MapNotify_nKeyBehavior, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_MapNotify_nKeyBehavior, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstKeyExplicit = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstKeyExplicit, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstKeyExplicit, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeyExplicit = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_MapNotify_nKeyExplicit, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_MapNotify_nKeyExplicit, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstModMapKey = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstModMapKey, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstModMapKey, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nModMapKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_MapNotify_nModMapKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_MapNotify_nModMapKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstVModMapKey = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstVModMapKey, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstVModMapKey, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nVModMapKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_MapNotify_nVModMapKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_MapNotify_nVModMapKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_virtualMods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_MapNotify_virtualMods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_MapNotify_virtualMods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_15, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_15, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
UNUSED(2);
}
-static void xkbStateNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xkbStateNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_time;
int f_deviceID;
@@ -25827,209 +26236,209 @@ static void xkbStateNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int littl
int f_requestMajor;
int f_requestMinor;
f_time = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_StateNotify_time, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_StateNotify_time, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
CARD16(event_sequencenumber);
f_deviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_StateNotify_deviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_StateNotify_deviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_mods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_mods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_mods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_baseMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_baseMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_baseMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_latchedMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_latchedMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_latchedMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_lockedMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_lockedMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_lockedMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_Any, tvb, *offsetp, 1, little_endian);
- }
- *offsetp += 1;
- f_group = field8(tvb, offsetp, t, hf_x11_xkb_StateNotify_group, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_Any, tvb, *offsetp, 1, byte_order);
+ }
+ *offsetp += 1;
+ f_group = field8(tvb, offsetp, t, hf_x11_xkb_StateNotify_group, byte_order);
f_baseGroup = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_StateNotify_baseGroup, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_StateNotify_baseGroup, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_latchedGroup = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_StateNotify_latchedGroup, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_StateNotify_latchedGroup, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- f_lockedGroup = field8(tvb, offsetp, t, hf_x11_xkb_StateNotify_lockedGroup, little_endian);
+ f_lockedGroup = field8(tvb, offsetp, t, hf_x11_xkb_StateNotify_lockedGroup, byte_order);
f_compatState = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_compatState, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_compatState, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_grabMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_grabMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_grabMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_compatGrabMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_compatGrabMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_compatGrabMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_lookupMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_lookupMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_lookupMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_compatLoockupMods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_compatLoockupMods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_compatLoockupMods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_Any, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_Any, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_ptrBtnState = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_ptrBtnState, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_ptrBtnState, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Shift, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Lock, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Control, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Mod1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Mod2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Mod3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Mod4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Mod5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Button1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Button2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Button3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Button4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Button5, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Shift, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Lock, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Control, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Mod1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Mod2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Mod3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Mod4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Mod5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Button1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Button2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Button3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Button4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Button5, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_changed = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_changed, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_changed, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_ModifierState, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_ModifierBase, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_ModifierLatch, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_ModifierLock, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_GroupState, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_GroupBase, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_GroupLatch, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_GroupLock, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_CompatState, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_GrabMods, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_CompatGrabMods, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_LookupMods, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_CompatLookupMods, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_PointerButtons, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_ModifierState, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_ModifierBase, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_ModifierLatch, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_ModifierLock, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_GroupState, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_GroupBase, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_GroupLatch, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_GroupLock, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_CompatState, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_GrabMods, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_CompatGrabMods, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_LookupMods, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_CompatLookupMods, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_PointerButtons, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_keycode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_StateNotify_keycode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_StateNotify_keycode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_eventType = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_StateNotify_eventType, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_StateNotify_eventType, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_requestMajor = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_StateNotify_requestMajor, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_StateNotify_requestMajor, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_requestMinor = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_StateNotify_requestMinor, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_StateNotify_requestMinor, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void xkbControlsNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xkbControlsNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_time;
int f_deviceID;
@@ -26042,127 +26451,127 @@ static void xkbControlsNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int li
int f_requestMajor;
int f_requestMinor;
f_time = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_time, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_time, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
CARD16(event_sequencenumber);
f_deviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_deviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_deviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_numGroups = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_numGroups, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_numGroups, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
f_changedControls = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_changedControls, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_changedControls, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_changedControls_mask_GroupsWrap, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_changedControls_mask_InternalMods, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_changedControls_mask_IgnoreLockMods, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_changedControls_mask_PerKeyRepeat, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_changedControls_mask_ControlsEnabled, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_changedControls_mask_GroupsWrap, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_changedControls_mask_InternalMods, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_changedControls_mask_IgnoreLockMods, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_changedControls_mask_PerKeyRepeat, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_changedControls_mask_ControlsEnabled, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
f_enabledControls = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_enabledControls, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_enabledControls, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_RepeatKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_SlowKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_BounceKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_StickyKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_MouseKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_MouseKeysAccel, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_AccessXKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_AccessXTimeoutMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_AccessXFeedbackMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_AudibleBellMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_Overlay1Mask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_Overlay2Mask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_RepeatKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_SlowKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_BounceKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_StickyKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_MouseKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_MouseKeysAccel, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_AccessXKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_AccessXTimeoutMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_AccessXFeedbackMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_AudibleBellMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_Overlay1Mask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_Overlay2Mask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
f_enabledControlChanges = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_enabledControlChanges, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_enabledControlChanges, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_RepeatKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_SlowKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_BounceKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_StickyKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_MouseKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_MouseKeysAccel, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_AccessXKeys, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_AccessXTimeoutMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_AccessXFeedbackMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_AudibleBellMask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_Overlay1Mask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_Overlay2Mask, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_RepeatKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_SlowKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_BounceKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_StickyKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_MouseKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_MouseKeysAccel, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_AccessXKeys, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_AccessXTimeoutMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_AccessXFeedbackMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_AudibleBellMask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_Overlay1Mask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_Overlay2Mask, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
f_keycode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_keycode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_keycode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_eventType = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_eventType, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_eventType, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_requestMajor = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_requestMajor, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_requestMajor, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_requestMinor = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_requestMinor, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_requestMinor, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(4);
}
-static void xkbIndicatorStateNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xkbIndicatorStateNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_time;
int f_deviceID;
int f_state;
int f_stateChanged;
f_time = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_IndicatorStateNotify_time, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_IndicatorStateNotify_time, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
CARD16(event_sequencenumber);
f_deviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_IndicatorStateNotify_deviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_IndicatorStateNotify_deviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
f_state = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_IndicatorStateNotify_state, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_IndicatorStateNotify_state, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_stateChanged = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_IndicatorStateNotify_stateChanged, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_IndicatorStateNotify_stateChanged, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
}
-static void xkbIndicatorMapNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xkbIndicatorMapNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_time;
int f_deviceID;
int f_state;
int f_mapChanged;
f_time = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_IndicatorMapNotify_time, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_IndicatorMapNotify_time, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
CARD16(event_sequencenumber);
f_deviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_IndicatorMapNotify_deviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_IndicatorMapNotify_deviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
f_state = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_IndicatorMapNotify_state, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_IndicatorMapNotify_state, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_mapChanged = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_IndicatorMapNotify_mapChanged, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_IndicatorMapNotify_mapChanged, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
}
-static void xkbNamesNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xkbNamesNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_time;
int f_deviceID;
@@ -26179,97 +26588,97 @@ static void xkbNamesNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int littl
int f_nKeys;
int f_changedIndicators;
f_time = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_NamesNotify_time, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_NamesNotify_time, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
CARD16(event_sequencenumber);
f_deviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_NamesNotify_deviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_NamesNotify_deviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
f_changed = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_NamesNotify_changed, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_NamesNotify_changed, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_Keycodes, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_Geometry, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_Symbols, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_PhysSymbols, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_Types, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_Compat, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_KeyTypeNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_KTLevelNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_IndicatorNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_KeyNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_KeyAliases, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_VirtualModNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_GroupNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_RGNames, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_Keycodes, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_Geometry, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_Symbols, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_PhysSymbols, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_Types, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_Compat, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_KeyTypeNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_KTLevelNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_IndicatorNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_KeyNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_KeyAliases, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_VirtualModNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_GroupNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_RGNames, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_firstType = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_NamesNotify_firstType, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_NamesNotify_firstType, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nTypes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_NamesNotify_nTypes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_NamesNotify_nTypes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_firstLevelName = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_NamesNotify_firstLevelName, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_NamesNotify_firstLevelName, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nLevelNames = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_NamesNotify_nLevelNames, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_NamesNotify_nLevelNames, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
f_nRadioGroups = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_NamesNotify_nRadioGroups, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_NamesNotify_nRadioGroups, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeyAliases = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_NamesNotify_nKeyAliases, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_NamesNotify_nKeyAliases, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_changedGroupNames = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_NamesNotify_changedGroupNames, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_NamesNotify_changedGroupNames, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedGroupNames_mask_Group1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedGroupNames_mask_Group2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedGroupNames_mask_Group3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedGroupNames_mask_Group4, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedGroupNames_mask_Group1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedGroupNames_mask_Group2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedGroupNames_mask_Group3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedGroupNames_mask_Group4, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_changedVirtualMods = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_NamesNotify_changedVirtualMods, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_NamesNotify_changedVirtualMods, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_0, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_1, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_2, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_3, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_4, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_5, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_6, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_7, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_8, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_9, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_10, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_11, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_12, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_13, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_14, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_15, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_0, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_1, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_2, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_3, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_4, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_5, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_6, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_7, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_8, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_9, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_10, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_11, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_12, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_13, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_14, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_15, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_firstKey = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_NamesNotify_firstKey, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_NamesNotify_firstKey, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nKeys = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_NamesNotify_nKeys, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_NamesNotify_nKeys, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_changedIndicators = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_NamesNotify_changedIndicators, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_NamesNotify_changedIndicators, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(4);
}
-static void xkbCompatMapNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xkbCompatMapNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_time;
int f_deviceID;
@@ -26278,35 +26687,35 @@ static void xkbCompatMapNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int l
int f_nSI;
int f_nTotalSI;
f_time = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_CompatMapNotify_time, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_CompatMapNotify_time, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
CARD16(event_sequencenumber);
f_deviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_CompatMapNotify_deviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_CompatMapNotify_deviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_changedGroups = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_CompatMapNotify_changedGroups, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_CompatMapNotify_changedGroups, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_CompatMapNotify_changedGroups_mask_Group1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_CompatMapNotify_changedGroups_mask_Group2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_CompatMapNotify_changedGroups_mask_Group3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_CompatMapNotify_changedGroups_mask_Group4, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_CompatMapNotify_changedGroups_mask_Group1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_CompatMapNotify_changedGroups_mask_Group2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_CompatMapNotify_changedGroups_mask_Group3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_CompatMapNotify_changedGroups_mask_Group4, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
f_firstSI = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_CompatMapNotify_firstSI, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_CompatMapNotify_firstSI, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nSI = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_CompatMapNotify_nSI, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_CompatMapNotify_nSI, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_nTotalSI = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_CompatMapNotify_nTotalSI, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_CompatMapNotify_nTotalSI, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(16);
}
-static void xkbBellNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xkbBellNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_time;
int f_deviceID;
@@ -26319,38 +26728,38 @@ static void xkbBellNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little
int f_window;
int f_eventOnly;
f_time = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_BellNotify_time, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_BellNotify_time, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
CARD16(event_sequencenumber);
f_deviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_BellNotify_deviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_BellNotify_deviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
- f_bellClass = field8(tvb, offsetp, t, hf_x11_xkb_BellNotify_bellClass, little_endian);
+ f_bellClass = field8(tvb, offsetp, t, hf_x11_xkb_BellNotify_bellClass, byte_order);
f_bellID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_BellNotify_bellID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_BellNotify_bellID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_percent = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_BellNotify_percent, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_BellNotify_percent, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_pitch = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_BellNotify_pitch, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_BellNotify_pitch, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_duration = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_BellNotify_duration, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_BellNotify_duration, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_name = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_BellNotify_name, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_BellNotify_name, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_BellNotify_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_BellNotify_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_eventOnly = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_BellNotify_eventOnly, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_BellNotify_eventOnly, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(7);
}
-static void xkbActionMessage(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xkbActionMessage(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_time;
int f_deviceID;
@@ -26360,42 +26769,42 @@ static void xkbActionMessage(tvbuff_t *tvb, int *offsetp, proto_tree *t, int lit
int f_mods;
int f_group;
f_time = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ActionMessage_time, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ActionMessage_time, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
CARD16(event_sequencenumber);
f_deviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ActionMessage_deviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ActionMessage_deviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_keycode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ActionMessage_keycode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ActionMessage_keycode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_press = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ActionMessage_press, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ActionMessage_press, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_keyEventFollows = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ActionMessage_keyEventFollows, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ActionMessage_keyEventFollows, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_mods = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_ActionMessage_mods, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_ActionMessage_mods, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_Shift, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_Lock, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_Control, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_1, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_2, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_3, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_4, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_5, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_Any, tvb, *offsetp, 1, little_endian);
- }
- *offsetp += 1;
- f_group = field8(tvb, offsetp, t, hf_x11_xkb_ActionMessage_group, little_endian);
- listOfByte(tvb, offsetp, t, hf_x11_xkb_ActionMessage_message, 8, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_Shift, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_Lock, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_Control, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_1, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_2, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_3, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_4, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_5, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_Any, tvb, *offsetp, 1, byte_order);
+ }
+ *offsetp += 1;
+ f_group = field8(tvb, offsetp, t, hf_x11_xkb_ActionMessage_group, byte_order);
+ listOfByte(tvb, offsetp, t, hf_x11_xkb_ActionMessage_message, 8, byte_order);
UNUSED(10);
}
-static void xkbAccessXNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xkbAccessXNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_time;
int f_deviceID;
@@ -26404,38 +26813,38 @@ static void xkbAccessXNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int lit
int f_slowKeysDelay;
int f_debounceDelay;
f_time = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_AccessXNotify_time, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_AccessXNotify_time, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
CARD16(event_sequencenumber);
f_deviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_AccessXNotify_deviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_AccessXNotify_deviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_keycode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_AccessXNotify_keycode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_AccessXNotify_keycode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_detailt = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_AccessXNotify_detailt, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_AccessXNotify_detailt, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_AccessXNotify_detailt_mask_SKPress, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_AccessXNotify_detailt_mask_SKAccept, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_AccessXNotify_detailt_mask_SKReject, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_AccessXNotify_detailt_mask_SKRelease, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_AccessXNotify_detailt_mask_BKAccept, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_AccessXNotify_detailt_mask_BKReject, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_AccessXNotify_detailt_mask_AXKWarning, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_AccessXNotify_detailt_mask_SKPress, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_AccessXNotify_detailt_mask_SKAccept, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_AccessXNotify_detailt_mask_SKReject, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_AccessXNotify_detailt_mask_SKRelease, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_AccessXNotify_detailt_mask_BKAccept, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_AccessXNotify_detailt_mask_BKReject, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_AccessXNotify_detailt_mask_AXKWarning, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_slowKeysDelay = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_AccessXNotify_slowKeysDelay, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_AccessXNotify_slowKeysDelay, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_debounceDelay = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_AccessXNotify_debounceDelay, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_AccessXNotify_debounceDelay, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(16);
}
-static void xkbExtensionDeviceNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xkbExtensionDeviceNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_time;
int f_deviceID;
@@ -26449,60 +26858,60 @@ static void xkbExtensionDeviceNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t,
int f_supported;
int f_unsupported;
f_time = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_time, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_time, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
CARD16(event_sequencenumber);
f_deviceID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_deviceID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_deviceID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
f_reason = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_reason, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_reason, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_reason_mask_Keyboards, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_reason_mask_ButtonActions, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_reason_mask_IndicatorNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_reason_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_reason_mask_IndicatorState, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_reason_mask_Keyboards, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_reason_mask_ButtonActions, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_reason_mask_IndicatorNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_reason_mask_IndicatorMaps, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_reason_mask_IndicatorState, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
- f_ledClass = field16(tvb, offsetp, t, hf_x11_xkb_ExtensionDeviceNotify_ledClass, little_endian);
+ f_ledClass = field16(tvb, offsetp, t, hf_x11_xkb_ExtensionDeviceNotify_ledClass, byte_order);
f_ledID = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_ledID, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_ledID, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_ledsDefined = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_ledsDefined, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_ledsDefined, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_ledState = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_ledState, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_ledState, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_firstButton = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_firstButton, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_firstButton, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_nButtons = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_nButtons, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_nButtons, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_supported = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_supported, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_supported, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_supported_mask_Keyboards, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_supported_mask_ButtonActions, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_supported_mask_IndicatorNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_supported_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_supported_mask_IndicatorState, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_supported_mask_Keyboards, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_supported_mask_ButtonActions, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_supported_mask_IndicatorNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_supported_mask_IndicatorMaps, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_supported_mask_IndicatorState, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
f_unsupported = VALUE16(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_unsupported, tvb, *offsetp, 2, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_unsupported, tvb, *offsetp, 2, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_unsupported_mask_Keyboards, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_unsupported_mask_ButtonActions, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_unsupported_mask_IndicatorNames, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_unsupported_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_unsupported_mask_IndicatorState, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_unsupported_mask_Keyboards, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_unsupported_mask_ButtonActions, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_unsupported_mask_IndicatorNames, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_unsupported_mask_IndicatorMaps, tvb, *offsetp, 2, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_unsupported_mask_IndicatorState, tvb, *offsetp, 2, byte_order);
}
*offsetp += 2;
UNUSED(2);
@@ -26570,7 +26979,7 @@ static x11_reply_info xkb_replies[] = {
{ 0, NULL }
};
-static void dispatch_xkb(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_xkb(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(xkb_extension_minor);
@@ -26581,82 +26990,82 @@ static void dispatch_xkb(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- xkbUseExtension(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbUseExtension(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 1:
- xkbSelectEvents(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbSelectEvents(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 3:
- xkbBell(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbBell(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 4:
- xkbGetState(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbGetState(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 5:
- xkbLatchLockState(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbLatchLockState(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 6:
- xkbGetControls(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbGetControls(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 7:
- xkbSetControls(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbSetControls(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 8:
- xkbGetMap(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbGetMap(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 9:
- xkbSetMap(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbSetMap(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 10:
- xkbGetCompatMap(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbGetCompatMap(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 11:
- xkbSetCompatMap(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbSetCompatMap(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 12:
- xkbGetIndicatorState(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbGetIndicatorState(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 13:
- xkbGetIndicatorMap(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbGetIndicatorMap(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 14:
- xkbSetIndicatorMap(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbSetIndicatorMap(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 15:
- xkbGetNamedIndicator(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbGetNamedIndicator(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 16:
- xkbSetNamedIndicator(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbSetNamedIndicator(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 17:
- xkbGetNames(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbGetNames(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 18:
- xkbSetNames(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbSetNames(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 19:
- xkbGetGeometry(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbGetGeometry(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 20:
- xkbSetGeometry(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbSetGeometry(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 21:
- xkbPerClientFlags(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbPerClientFlags(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 22:
- xkbListComponents(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbListComponents(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 23:
- xkbGetKbdByName(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbGetKbdByName(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 24:
- xkbGetDeviceInfo(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbGetDeviceInfo(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 25:
- xkbSetDeviceInfo(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbSetDeviceInfo(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 101:
- xkbSetDebuggingFlags(tvb, pinfo, offsetp, t, little_endian, length);
+ xkbSetDebuggingFlags(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -26668,7 +27077,7 @@ static void register_xkb(void)
set_handler("XKEYBOARD", dispatch_xkb, xkb_errors, xkb_events, xkb_replies);
}
-static int struct_size_PRINTER(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
+static int struct_size_PRINTER(tvbuff_t *tvb, int *offsetp, guint byte_order _U_)
{
int size = 0;
int f_nameLen;
@@ -26680,7 +27089,7 @@ static int struct_size_PRINTER(tvbuff_t *tvb, int *offsetp, int little_endian _U
return size + 8;
}
-static void struct_PRINTER(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_PRINTER(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -26689,23 +27098,23 @@ static void struct_PRINTER(tvbuff_t *tvb, int *offsetp, proto_tree *root, int li
int f_nameLen;
int f_descLen;
- item = proto_tree_add_item(root, hf_x11_struct_PRINTER, tvb, *offsetp, struct_size_PRINTER(tvb, offsetp, little_endian), little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_PRINTER, tvb, *offsetp, struct_size_PRINTER(tvb, offsetp, byte_order), ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_nameLen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_PRINTER_nameLen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_PRINTER_nameLen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_struct_PRINTER_name, f_nameLen, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_struct_PRINTER_name, f_nameLen, byte_order);
f_descLen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_PRINTER_descLen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_PRINTER_descLen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_struct_PRINTER_description, f_descLen, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_struct_PRINTER_description, f_descLen, byte_order);
}
}
-static void xprintPrintQueryVersion(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void xprintPrintQueryVersion(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void xprintPrintQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xprintPrintQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_major_version;
@@ -26721,32 +27130,32 @@ static void xprintPrintQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_major_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintQueryVersion_reply_major_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintQueryVersion_reply_major_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_minor_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintQueryVersion_reply_minor_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintQueryVersion_reply_minor_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xprintPrintGetPrinterList(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xprintPrintGetPrinterList(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_printerNameLen;
int f_localeLen;
f_printerNameLen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetPrinterList_printerNameLen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetPrinterList_printerNameLen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_localeLen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetPrinterList_localeLen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetPrinterList_localeLen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintGetPrinterList_printer_name, f_printerNameLen, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintGetPrinterList_printer_name, f_printerNameLen, byte_order);
length -= f_printerNameLen * 1;
- listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintGetPrinterList_locale, f_localeLen, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintGetPrinterList_locale, f_localeLen, byte_order);
length -= f_localeLen * 1;
}
-static void xprintPrintGetPrinterList_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xprintPrintGetPrinterList_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_listCount;
@@ -26761,51 +27170,51 @@ static void xprintPrintGetPrinterList_Reply(tvbuff_t *tvb, packet_info *pinfo, i
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_listCount = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetPrinterList_reply_listCount, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetPrinterList_reply_listCount, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- struct_PRINTER(tvb, offsetp, t, little_endian, f_listCount);
+ struct_PRINTER(tvb, offsetp, t, byte_order, f_listCount);
}
-static void xprintPrintRehashPrinterList(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void xprintPrintRehashPrinterList(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void xprintCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xprintCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_id;
int f_printerNameLen;
int f_localeLen;
f_context_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_CreateContext_context_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_CreateContext_context_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_printerNameLen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_CreateContext_printerNameLen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_CreateContext_printerNameLen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_localeLen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_CreateContext_localeLen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_CreateContext_localeLen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_xprint_CreateContext_printerName, f_printerNameLen, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xprint_CreateContext_printerName, f_printerNameLen, byte_order);
length -= f_printerNameLen * 1;
- listOfByte(tvb, offsetp, t, hf_x11_xprint_CreateContext_locale, f_localeLen, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xprint_CreateContext_locale, f_localeLen, byte_order);
length -= f_localeLen * 1;
}
-static void xprintPrintSetContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xprintPrintSetContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintSetContext_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintSetContext_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xprintPrintGetContext(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void xprintPrintGetContext(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void xprintPrintGetContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xprintPrintGetContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_context;
@@ -26820,25 +27229,25 @@ static void xprintPrintGetContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetContext_reply_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetContext_reply_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xprintPrintDestroyContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xprintPrintDestroyContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintDestroyContext_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintDestroyContext_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xprintPrintGetScreenOfContext(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void xprintPrintGetScreenOfContext(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void xprintPrintGetScreenOfContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xprintPrintGetScreenOfContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_root;
@@ -26853,81 +27262,81 @@ static void xprintPrintGetScreenOfContext_Reply(tvbuff_t *tvb, packet_info *pinf
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_root = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetScreenOfContext_reply_root, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetScreenOfContext_reply_root, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xprintPrintStartJob(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xprintPrintStartJob(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_output_mode;
f_output_mode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintStartJob_output_mode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintStartJob_output_mode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void xprintPrintEndJob(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xprintPrintEndJob(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_cancel;
f_cancel = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintEndJob_cancel, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintEndJob_cancel, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void xprintPrintStartDoc(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xprintPrintStartDoc(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_driver_mode;
f_driver_mode = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintStartDoc_driver_mode, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintStartDoc_driver_mode, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void xprintPrintEndDoc(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xprintPrintEndDoc(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_cancel;
f_cancel = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintEndDoc_cancel, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintEndDoc_cancel, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void xprintPrintPutDocumentData(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xprintPrintPutDocumentData(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_drawable;
int f_len_data;
int f_len_fmt;
int f_len_options;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintPutDocumentData_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintPutDocumentData_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_len_data = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintPutDocumentData_len_data, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintPutDocumentData_len_data, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_len_fmt = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintPutDocumentData_len_fmt, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintPutDocumentData_len_fmt, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_len_options = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintPutDocumentData_len_options, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintPutDocumentData_len_options, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintPutDocumentData_data, f_len_data, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintPutDocumentData_data, f_len_data, byte_order);
length -= f_len_data * 1;
- listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintPutDocumentData_doc_format, (length - 16) / 1, little_endian);
- listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintPutDocumentData_options, (length - 16) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintPutDocumentData_doc_format, (length - 16) / 1, byte_order);
+ listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintPutDocumentData_options, (length - 16) / 1, byte_order);
}
-static void xprintPrintGetDocumentData(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xprintPrintGetDocumentData(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context;
int f_max_bytes;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetDocumentData_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetDocumentData_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_max_bytes = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetDocumentData_max_bytes, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetDocumentData_max_bytes, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xprintPrintGetDocumentData_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xprintPrintGetDocumentData_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_status_code;
@@ -26944,54 +27353,54 @@ static void xprintPrintGetDocumentData_Reply(tvbuff_t *tvb, packet_info *pinfo,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_status_code = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetDocumentData_reply_status_code, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetDocumentData_reply_status_code, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_finished_flag = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetDocumentData_reply_finished_flag, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetDocumentData_reply_finished_flag, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_dataLen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetDocumentData_reply_dataLen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetDocumentData_reply_dataLen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(12);
- listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintGetDocumentData_reply_data, f_dataLen, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintGetDocumentData_reply_data, f_dataLen, byte_order);
}
-static void xprintPrintStartPage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xprintPrintStartPage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintStartPage_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintStartPage_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xprintPrintEndPage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xprintPrintEndPage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_cancel;
f_cancel = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintEndPage_cancel, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintEndPage_cancel, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
}
-static void xprintPrintSelectInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xprintPrintSelectInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintSelectInput_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintSelectInput_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xprintPrintInputSelected(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xprintPrintInputSelected(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintInputSelected_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintInputSelected_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xprintPrintInputSelected_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xprintPrintInputSelected_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
@@ -27005,23 +27414,23 @@ static void xprintPrintInputSelected_Reply(tvbuff_t *tvb, packet_info *pinfo, in
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xprintPrintGetAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xprintPrintGetAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context;
int f_pool;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetAttributes_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetAttributes_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pool = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetAttributes_pool, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetAttributes_pool, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
}
-static void xprintPrintGetAttributes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xprintPrintGetAttributes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_stringLen;
@@ -27037,36 +27446,36 @@ static void xprintPrintGetAttributes_Reply(tvbuff_t *tvb, packet_info *pinfo, in
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_stringLen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetAttributes_reply_stringLen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetAttributes_reply_stringLen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
f_attributes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetAttributes_reply_attributes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetAttributes_reply_attributes, tvb, *offsetp, 1, ENC_ASCII|ENC_NA);
*offsetp += 1;
}
-static void xprintPrintGetOneAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xprintPrintGetOneAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context;
int f_nameLen;
int f_pool;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetOneAttributes_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetOneAttributes_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_nameLen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetOneAttributes_nameLen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetOneAttributes_nameLen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pool = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetOneAttributes_pool, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetOneAttributes_pool, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
- listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintGetOneAttributes_name, f_nameLen, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintGetOneAttributes_name, f_nameLen, byte_order);
length -= f_nameLen * 1;
}
-static void xprintPrintGetOneAttributes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xprintPrintGetOneAttributes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_valueLen;
@@ -27081,45 +27490,45 @@ static void xprintPrintGetOneAttributes_Reply(tvbuff_t *tvb, packet_info *pinfo,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_valueLen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetOneAttributes_reply_valueLen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetOneAttributes_reply_valueLen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintGetOneAttributes_reply_value, f_valueLen, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintGetOneAttributes_reply_value, f_valueLen, byte_order);
}
-static void xprintPrintSetAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xprintPrintSetAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context;
int f_stringLen;
int f_pool;
int f_rule;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintSetAttributes_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintSetAttributes_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_stringLen = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintSetAttributes_stringLen, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintSetAttributes_stringLen, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_pool = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintSetAttributes_pool, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintSetAttributes_pool, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_rule = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintSetAttributes_rule, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintSetAttributes_rule, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
- listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintSetAttributes_attributes, (length - 16) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xprint_PrintSetAttributes_attributes, (length - 16) / 1, byte_order);
}
-static void xprintPrintGetPageDimensions(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xprintPrintGetPageDimensions(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetPageDimensions_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetPageDimensions_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xprintPrintGetPageDimensions_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xprintPrintGetPageDimensions_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_width;
@@ -27139,32 +27548,32 @@ static void xprintPrintGetPageDimensions_Reply(tvbuff_t *tvb, packet_info *pinfo
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetPageDimensions_reply_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetPageDimensions_reply_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetPageDimensions_reply_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetPageDimensions_reply_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_offset_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetPageDimensions_reply_offset_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetPageDimensions_reply_offset_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_offset_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetPageDimensions_reply_offset_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetPageDimensions_reply_offset_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_reproducible_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetPageDimensions_reply_reproducible_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetPageDimensions_reply_reproducible_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_reproducible_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetPageDimensions_reply_reproducible_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetPageDimensions_reply_reproducible_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xprintPrintQueryScreens(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void xprintPrintQueryScreens(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void xprintPrintQueryScreens_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xprintPrintQueryScreens_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_listCount;
@@ -27179,27 +27588,27 @@ static void xprintPrintQueryScreens_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_listCount = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintQueryScreens_reply_listCount, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintQueryScreens_reply_listCount, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- listOfCard32(tvb, offsetp, t, hf_x11_xprint_PrintQueryScreens_reply_roots, hf_x11_xprint_PrintQueryScreens_reply_roots_item, f_listCount, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xprint_PrintQueryScreens_reply_roots, hf_x11_xprint_PrintQueryScreens_reply_roots_item, f_listCount, byte_order);
}
-static void xprintPrintSetImageResolution(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xprintPrintSetImageResolution(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context;
int f_image_resolution;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintSetImageResolution_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintSetImageResolution_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_image_resolution = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintSetImageResolution_image_resolution, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintSetImageResolution_image_resolution, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xprintPrintSetImageResolution_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xprintPrintSetImageResolution_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_status;
@@ -27209,7 +27618,7 @@ static void xprintPrintSetImageResolution_Reply(tvbuff_t *tvb, packet_info *pinf
REPLY(reply);
f_status = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintSetImageResolution_reply_status, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintSetImageResolution_reply_status, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -27217,21 +27626,21 @@ static void xprintPrintSetImageResolution_Reply(tvbuff_t *tvb, packet_info *pinf
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_previous_resolutions = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintSetImageResolution_reply_previous_resolutions, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintSetImageResolution_reply_previous_resolutions, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xprintPrintGetImageResolution(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xprintPrintGetImageResolution(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetImageResolution_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetImageResolution_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xprintPrintGetImageResolution_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xprintPrintGetImageResolution_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_image_resolution;
@@ -27246,40 +27655,40 @@ static void xprintPrintGetImageResolution_Reply(tvbuff_t *tvb, packet_info *pinf
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_image_resolution = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_PrintGetImageResolution_reply_image_resolution, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_PrintGetImageResolution_reply_image_resolution, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xprintNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xprintNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_detail;
int f_context;
int f_cancel;
f_detail = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_Notify_detail, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_Notify_detail, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
CARD16(event_sequencenumber);
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_Notify_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_Notify_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_cancel = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_Notify_cancel, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_Notify_cancel, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void xprintAttributNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xprintAttributNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_detail;
int f_context;
f_detail = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_AttributNotify_detail, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_AttributNotify_detail, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
CARD16(event_sequencenumber);
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xprint_AttributNotify_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xprint_AttributNotify_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
static const value_string xprint_extension_minor[] = {
@@ -27331,7 +27740,7 @@ static x11_reply_info xprint_replies[] = {
{ 0, NULL }
};
-static void dispatch_xprint(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_xprint(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(xprint_extension_minor);
@@ -27342,79 +27751,79 @@ static void dispatch_xprint(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, pro
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- xprintPrintQueryVersion(tvb, pinfo, offsetp, t, little_endian, length);
+ xprintPrintQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 1:
- xprintPrintGetPrinterList(tvb, pinfo, offsetp, t, little_endian, length);
+ xprintPrintGetPrinterList(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 2:
- xprintCreateContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xprintCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 3:
- xprintPrintSetContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xprintPrintSetContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 4:
- xprintPrintGetContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xprintPrintGetContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 5:
- xprintPrintDestroyContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xprintPrintDestroyContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 6:
- xprintPrintGetScreenOfContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xprintPrintGetScreenOfContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 7:
- xprintPrintStartJob(tvb, pinfo, offsetp, t, little_endian, length);
+ xprintPrintStartJob(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 8:
- xprintPrintEndJob(tvb, pinfo, offsetp, t, little_endian, length);
+ xprintPrintEndJob(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 9:
- xprintPrintStartDoc(tvb, pinfo, offsetp, t, little_endian, length);
+ xprintPrintStartDoc(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 10:
- xprintPrintEndDoc(tvb, pinfo, offsetp, t, little_endian, length);
+ xprintPrintEndDoc(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 11:
- xprintPrintPutDocumentData(tvb, pinfo, offsetp, t, little_endian, length);
+ xprintPrintPutDocumentData(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 12:
- xprintPrintGetDocumentData(tvb, pinfo, offsetp, t, little_endian, length);
+ xprintPrintGetDocumentData(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 13:
- xprintPrintStartPage(tvb, pinfo, offsetp, t, little_endian, length);
+ xprintPrintStartPage(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 14:
- xprintPrintEndPage(tvb, pinfo, offsetp, t, little_endian, length);
+ xprintPrintEndPage(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 15:
- xprintPrintSelectInput(tvb, pinfo, offsetp, t, little_endian, length);
+ xprintPrintSelectInput(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 16:
- xprintPrintInputSelected(tvb, pinfo, offsetp, t, little_endian, length);
+ xprintPrintInputSelected(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 17:
- xprintPrintGetAttributes(tvb, pinfo, offsetp, t, little_endian, length);
+ xprintPrintGetAttributes(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 18:
- xprintPrintSetAttributes(tvb, pinfo, offsetp, t, little_endian, length);
+ xprintPrintSetAttributes(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 19:
- xprintPrintGetOneAttributes(tvb, pinfo, offsetp, t, little_endian, length);
+ xprintPrintGetOneAttributes(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 20:
- xprintPrintRehashPrinterList(tvb, pinfo, offsetp, t, little_endian, length);
+ xprintPrintRehashPrinterList(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 21:
- xprintPrintGetPageDimensions(tvb, pinfo, offsetp, t, little_endian, length);
+ xprintPrintGetPageDimensions(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 22:
- xprintPrintQueryScreens(tvb, pinfo, offsetp, t, little_endian, length);
+ xprintPrintQueryScreens(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 23:
- xprintPrintSetImageResolution(tvb, pinfo, offsetp, t, little_endian, length);
+ xprintPrintSetImageResolution(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 24:
- xprintPrintGetImageResolution(tvb, pinfo, offsetp, t, little_endian, length);
+ xprintPrintGetImageResolution(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -27426,18 +27835,18 @@ static void register_xprint(void)
set_handler("XpExtension", dispatch_xprint, xprint_errors, xprint_events, xprint_replies);
}
-static void xselinuxQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xselinuxQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_client_major;
int f_client_minor;
f_client_major = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_QueryVersion_client_major, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_QueryVersion_client_major, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_client_minor = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_QueryVersion_client_minor, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_QueryVersion_client_minor, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void xselinuxQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xselinuxQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_server_major;
@@ -27453,30 +27862,30 @@ static void xselinuxQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *o
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_server_major = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_QueryVersion_reply_server_major, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_QueryVersion_reply_server_major, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_server_minor = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_QueryVersion_reply_server_minor, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_QueryVersion_reply_server_minor, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xselinuxSetDeviceCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xselinuxSetDeviceCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_len;
f_context_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_SetDeviceCreateContext_context_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_SetDeviceCreateContext_context_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_xselinux_SetDeviceCreateContext_context, f_context_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xselinux_SetDeviceCreateContext_context, f_context_len, byte_order);
length -= f_context_len * 1;
}
-static void xselinuxGetDeviceCreateContext(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void xselinuxGetDeviceCreateContext(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void xselinuxGetDeviceCreateContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xselinuxGetDeviceCreateContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_context_len;
@@ -27491,37 +27900,37 @@ static void xselinuxGetDeviceCreateContext_Reply(tvbuff_t *tvb, packet_info *pin
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_context_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_GetDeviceCreateContext_reply_context_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_GetDeviceCreateContext_reply_context_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetDeviceCreateContext_reply_context, f_context_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetDeviceCreateContext_reply_context, f_context_len, byte_order);
}
-static void xselinuxSetDeviceContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xselinuxSetDeviceContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_device;
int f_context_len;
f_device = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_SetDeviceContext_device, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_SetDeviceContext_device, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_context_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_SetDeviceContext_context_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_SetDeviceContext_context_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_xselinux_SetDeviceContext_context, f_context_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xselinux_SetDeviceContext_context, f_context_len, byte_order);
length -= f_context_len * 1;
}
-static void xselinuxGetDeviceContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xselinuxGetDeviceContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_device;
f_device = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_GetDeviceContext_device, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_GetDeviceContext_device, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xselinuxGetDeviceContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xselinuxGetDeviceContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_context_len;
@@ -27536,29 +27945,29 @@ static void xselinuxGetDeviceContext_Reply(tvbuff_t *tvb, packet_info *pinfo, in
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_context_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_GetDeviceContext_reply_context_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_GetDeviceContext_reply_context_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetDeviceContext_reply_context, f_context_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetDeviceContext_reply_context, f_context_len, byte_order);
}
-static void xselinuxSetWindowCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xselinuxSetWindowCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_len;
f_context_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_SetWindowCreateContext_context_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_SetWindowCreateContext_context_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_xselinux_SetWindowCreateContext_context, f_context_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xselinux_SetWindowCreateContext_context, f_context_len, byte_order);
length -= f_context_len * 1;
}
-static void xselinuxGetWindowCreateContext(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void xselinuxGetWindowCreateContext(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void xselinuxGetWindowCreateContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xselinuxGetWindowCreateContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_context_len;
@@ -27573,23 +27982,23 @@ static void xselinuxGetWindowCreateContext_Reply(tvbuff_t *tvb, packet_info *pin
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_context_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_GetWindowCreateContext_reply_context_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_GetWindowCreateContext_reply_context_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetWindowCreateContext_reply_context, f_context_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetWindowCreateContext_reply_context, f_context_len, byte_order);
}
-static void xselinuxGetWindowContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xselinuxGetWindowContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_GetWindowContext_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_GetWindowContext_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xselinuxGetWindowContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xselinuxGetWindowContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_context_len;
@@ -27604,16 +28013,16 @@ static void xselinuxGetWindowContext_Reply(tvbuff_t *tvb, packet_info *pinfo, in
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_context_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_GetWindowContext_reply_context_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_GetWindowContext_reply_context_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetWindowContext_reply_context, f_context_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetWindowContext_reply_context, f_context_len, byte_order);
}
-static int struct_size_ListItem(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
+static int struct_size_ListItem(tvbuff_t *tvb, int *offsetp, guint byte_order _U_)
{
int size = 0;
int f_object_context_len;
@@ -27625,7 +28034,7 @@ static int struct_size_ListItem(tvbuff_t *tvb, int *offsetp, int little_endian _
return size + 12;
}
-static void struct_ListItem(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_ListItem(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -27635,36 +28044,36 @@ static void struct_ListItem(tvbuff_t *tvb, int *offsetp, proto_tree *root, int l
int f_object_context_len;
int f_data_context_len;
- item = proto_tree_add_item(root, hf_x11_struct_ListItem, tvb, *offsetp, struct_size_ListItem(tvb, offsetp, little_endian), little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_ListItem, tvb, *offsetp, struct_size_ListItem(tvb, offsetp, byte_order), ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_name = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ListItem_name, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ListItem_name, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_object_context_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ListItem_object_context_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ListItem_object_context_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_data_context_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ListItem_data_context_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ListItem_data_context_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_struct_ListItem_object_context, f_object_context_len, little_endian);
- listOfByte(tvb, offsetp, t, hf_x11_struct_ListItem_data_context, f_data_context_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_struct_ListItem_object_context, f_object_context_len, byte_order);
+ listOfByte(tvb, offsetp, t, hf_x11_struct_ListItem_data_context, f_data_context_len, byte_order);
}
}
-static void xselinuxSetPropertyCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xselinuxSetPropertyCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_len;
f_context_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_SetPropertyCreateContext_context_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_SetPropertyCreateContext_context_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_xselinux_SetPropertyCreateContext_context, f_context_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xselinux_SetPropertyCreateContext_context, f_context_len, byte_order);
length -= f_context_len * 1;
}
-static void xselinuxGetPropertyCreateContext(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void xselinuxGetPropertyCreateContext(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void xselinuxGetPropertyCreateContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xselinuxGetPropertyCreateContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_context_len;
@@ -27679,29 +28088,29 @@ static void xselinuxGetPropertyCreateContext_Reply(tvbuff_t *tvb, packet_info *p
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_context_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_GetPropertyCreateContext_reply_context_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_GetPropertyCreateContext_reply_context_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetPropertyCreateContext_reply_context, f_context_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetPropertyCreateContext_reply_context, f_context_len, byte_order);
}
-static void xselinuxSetPropertyUseContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xselinuxSetPropertyUseContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_len;
f_context_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_SetPropertyUseContext_context_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_SetPropertyUseContext_context_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_xselinux_SetPropertyUseContext_context, f_context_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xselinux_SetPropertyUseContext_context, f_context_len, byte_order);
length -= f_context_len * 1;
}
-static void xselinuxGetPropertyUseContext(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void xselinuxGetPropertyUseContext(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void xselinuxGetPropertyUseContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xselinuxGetPropertyUseContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_context_len;
@@ -27716,27 +28125,27 @@ static void xselinuxGetPropertyUseContext_Reply(tvbuff_t *tvb, packet_info *pinf
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_context_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_GetPropertyUseContext_reply_context_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_GetPropertyUseContext_reply_context_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetPropertyUseContext_reply_context, f_context_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetPropertyUseContext_reply_context, f_context_len, byte_order);
}
-static void xselinuxGetPropertyContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xselinuxGetPropertyContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
int f_property;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_GetPropertyContext_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_GetPropertyContext_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_property = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_GetPropertyContext_property, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_GetPropertyContext_property, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xselinuxGetPropertyContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xselinuxGetPropertyContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_context_len;
@@ -27751,27 +28160,27 @@ static void xselinuxGetPropertyContext_Reply(tvbuff_t *tvb, packet_info *pinfo,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_context_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_GetPropertyContext_reply_context_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_GetPropertyContext_reply_context_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetPropertyContext_reply_context, f_context_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetPropertyContext_reply_context, f_context_len, byte_order);
}
-static void xselinuxGetPropertyDataContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xselinuxGetPropertyDataContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
int f_property;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_GetPropertyDataContext_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_GetPropertyDataContext_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_property = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_GetPropertyDataContext_property, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_GetPropertyDataContext_property, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xselinuxGetPropertyDataContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xselinuxGetPropertyDataContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_context_len;
@@ -27786,23 +28195,23 @@ static void xselinuxGetPropertyDataContext_Reply(tvbuff_t *tvb, packet_info *pin
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_context_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_GetPropertyDataContext_reply_context_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_GetPropertyDataContext_reply_context_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetPropertyDataContext_reply_context, f_context_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetPropertyDataContext_reply_context, f_context_len, byte_order);
}
-static void xselinuxListProperties(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xselinuxListProperties(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_ListProperties_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_ListProperties_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xselinuxListProperties_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xselinuxListProperties_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_properties_len;
@@ -27817,29 +28226,29 @@ static void xselinuxListProperties_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_properties_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_ListProperties_reply_properties_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_ListProperties_reply_properties_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- struct_ListItem(tvb, offsetp, t, little_endian, f_properties_len);
+ struct_ListItem(tvb, offsetp, t, byte_order, f_properties_len);
}
-static void xselinuxSetSelectionCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xselinuxSetSelectionCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_len;
f_context_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_SetSelectionCreateContext_context_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_SetSelectionCreateContext_context_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_xselinux_SetSelectionCreateContext_context, f_context_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xselinux_SetSelectionCreateContext_context, f_context_len, byte_order);
length -= f_context_len * 1;
}
-static void xselinuxGetSelectionCreateContext(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void xselinuxGetSelectionCreateContext(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void xselinuxGetSelectionCreateContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xselinuxGetSelectionCreateContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_context_len;
@@ -27854,29 +28263,29 @@ static void xselinuxGetSelectionCreateContext_Reply(tvbuff_t *tvb, packet_info *
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_context_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_GetSelectionCreateContext_reply_context_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_GetSelectionCreateContext_reply_context_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetSelectionCreateContext_reply_context, f_context_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetSelectionCreateContext_reply_context, f_context_len, byte_order);
}
-static void xselinuxSetSelectionUseContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xselinuxSetSelectionUseContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_len;
f_context_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_SetSelectionUseContext_context_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_SetSelectionUseContext_context_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_xselinux_SetSelectionUseContext_context, f_context_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xselinux_SetSelectionUseContext_context, f_context_len, byte_order);
length -= f_context_len * 1;
}
-static void xselinuxGetSelectionUseContext(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void xselinuxGetSelectionUseContext(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void xselinuxGetSelectionUseContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xselinuxGetSelectionUseContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_context_len;
@@ -27891,23 +28300,23 @@ static void xselinuxGetSelectionUseContext_Reply(tvbuff_t *tvb, packet_info *pin
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_context_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_GetSelectionUseContext_reply_context_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_GetSelectionUseContext_reply_context_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetSelectionUseContext_reply_context, f_context_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetSelectionUseContext_reply_context, f_context_len, byte_order);
}
-static void xselinuxGetSelectionContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xselinuxGetSelectionContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_selection;
f_selection = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_GetSelectionContext_selection, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_GetSelectionContext_selection, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xselinuxGetSelectionContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xselinuxGetSelectionContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_context_len;
@@ -27922,23 +28331,23 @@ static void xselinuxGetSelectionContext_Reply(tvbuff_t *tvb, packet_info *pinfo,
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_context_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_GetSelectionContext_reply_context_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_GetSelectionContext_reply_context_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetSelectionContext_reply_context, f_context_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetSelectionContext_reply_context, f_context_len, byte_order);
}
-static void xselinuxGetSelectionDataContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xselinuxGetSelectionDataContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_selection;
f_selection = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_GetSelectionDataContext_selection, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_GetSelectionDataContext_selection, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xselinuxGetSelectionDataContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xselinuxGetSelectionDataContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_context_len;
@@ -27953,19 +28362,19 @@ static void xselinuxGetSelectionDataContext_Reply(tvbuff_t *tvb, packet_info *pi
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_context_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_GetSelectionDataContext_reply_context_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_GetSelectionDataContext_reply_context_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetSelectionDataContext_reply_context, f_context_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetSelectionDataContext_reply_context, f_context_len, byte_order);
}
-static void xselinuxListSelections(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void xselinuxListSelections(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void xselinuxListSelections_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xselinuxListSelections_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_selections_len;
@@ -27980,23 +28389,23 @@ static void xselinuxListSelections_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_selections_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_ListSelections_reply_selections_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_ListSelections_reply_selections_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- struct_ListItem(tvb, offsetp, t, little_endian, f_selections_len);
+ struct_ListItem(tvb, offsetp, t, byte_order, f_selections_len);
}
-static void xselinuxGetClientContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xselinuxGetClientContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_resource;
f_resource = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_GetClientContext_resource, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_GetClientContext_resource, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xselinuxGetClientContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xselinuxGetClientContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_context_len;
@@ -28011,13 +28420,13 @@ static void xselinuxGetClientContext_Reply(tvbuff_t *tvb, packet_info *pinfo, in
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_context_len = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xselinux_GetClientContext_reply_context_len, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xselinux_GetClientContext_reply_context_len, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetClientContext_reply_context, f_context_len, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xselinux_GetClientContext_reply_context, f_context_len, byte_order);
}
static const value_string xselinux_extension_minor[] = {
{ 0, "QueryVersion" },
@@ -28068,7 +28477,7 @@ static x11_reply_info xselinux_replies[] = {
{ 0, NULL }
};
-static void dispatch_xselinux(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_xselinux(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(xselinux_extension_minor);
@@ -28079,73 +28488,73 @@ static void dispatch_xselinux(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, p
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- xselinuxQueryVersion(tvb, pinfo, offsetp, t, little_endian, length);
+ xselinuxQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 1:
- xselinuxSetDeviceCreateContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xselinuxSetDeviceCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 2:
- xselinuxGetDeviceCreateContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xselinuxGetDeviceCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 3:
- xselinuxSetDeviceContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xselinuxSetDeviceContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 4:
- xselinuxGetDeviceContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xselinuxGetDeviceContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 5:
- xselinuxSetWindowCreateContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xselinuxSetWindowCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 6:
- xselinuxGetWindowCreateContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xselinuxGetWindowCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 7:
- xselinuxGetWindowContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xselinuxGetWindowContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 8:
- xselinuxSetPropertyCreateContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xselinuxSetPropertyCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 9:
- xselinuxGetPropertyCreateContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xselinuxGetPropertyCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 10:
- xselinuxSetPropertyUseContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xselinuxSetPropertyUseContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 11:
- xselinuxGetPropertyUseContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xselinuxGetPropertyUseContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 12:
- xselinuxGetPropertyContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xselinuxGetPropertyContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 13:
- xselinuxGetPropertyDataContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xselinuxGetPropertyDataContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 14:
- xselinuxListProperties(tvb, pinfo, offsetp, t, little_endian, length);
+ xselinuxListProperties(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 15:
- xselinuxSetSelectionCreateContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xselinuxSetSelectionCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 16:
- xselinuxGetSelectionCreateContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xselinuxGetSelectionCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 17:
- xselinuxSetSelectionUseContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xselinuxSetSelectionUseContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 18:
- xselinuxGetSelectionUseContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xselinuxGetSelectionUseContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 19:
- xselinuxGetSelectionContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xselinuxGetSelectionContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 20:
- xselinuxGetSelectionDataContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xselinuxGetSelectionDataContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 21:
- xselinuxListSelections(tvb, pinfo, offsetp, t, little_endian, length);
+ xselinuxListSelections(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 22:
- xselinuxGetClientContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xselinuxGetClientContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -28157,19 +28566,19 @@ static void register_xselinux(void)
set_handler("SELinux", dispatch_xselinux, xselinux_errors, xselinux_events, xselinux_replies);
}
-static void xtestGetVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xtestGetVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_major_version;
int f_minor_version;
f_major_version = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xtest_GetVersion_major_version, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xtest_GetVersion_major_version, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(1);
f_minor_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xtest_GetVersion_minor_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xtest_GetVersion_minor_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xtestGetVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xtestGetVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_major_version;
@@ -28179,7 +28588,7 @@ static void xtestGetVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
REPLY(reply);
f_major_version = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xtest_GetVersion_reply_major_version, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xtest_GetVersion_reply_major_version, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -28187,25 +28596,25 @@ static void xtestGetVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_minor_version = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xtest_GetVersion_reply_minor_version, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xtest_GetVersion_reply_minor_version, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xtestCompareCursor(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xtestCompareCursor(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
int f_cursor;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xtest_CompareCursor_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xtest_CompareCursor_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_cursor = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xtest_CompareCursor_cursor, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xtest_CompareCursor_cursor, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xtestCompareCursor_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xtestCompareCursor_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_same;
@@ -28214,7 +28623,7 @@ static void xtestCompareCursor_Reply(tvbuff_t *tvb, packet_info *pinfo, int *off
REPLY(reply);
f_same = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xtest_CompareCursor_reply_same, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xtest_CompareCursor_reply_same, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
@@ -28222,11 +28631,11 @@ static void xtestCompareCursor_Reply(tvbuff_t *tvb, packet_info *pinfo, int *off
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xtestFakeInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xtestFakeInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_type;
int f_detail;
@@ -28236,36 +28645,36 @@ static void xtestFakeInput(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_rootY;
int f_deviceid;
f_type = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xtest_FakeInput_type, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xtest_FakeInput_type, tvb, *offsetp, 1, ENC_NA);
*offsetp += 1;
f_detail = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xtest_FakeInput_detail, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xtest_FakeInput_detail, tvb, *offsetp, 1, ENC_NA);
*offsetp += 1;
UNUSED(2);
f_time = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xtest_FakeInput_time, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xtest_FakeInput_time, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_root = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xtest_FakeInput_root, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xtest_FakeInput_root, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(8);
f_rootX = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xtest_FakeInput_rootX, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xtest_FakeInput_rootX, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_rootY = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xtest_FakeInput_rootY, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xtest_FakeInput_rootY, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(7);
f_deviceid = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xtest_FakeInput_deviceid, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xtest_FakeInput_deviceid, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
}
-static void xtestGrabControl(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xtestGrabControl(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_impervious;
f_impervious = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xtest_GrabControl_impervious, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xtest_GrabControl_impervious, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
}
@@ -28285,7 +28694,7 @@ static x11_reply_info xtest_replies[] = {
{ 0, NULL }
};
-static void dispatch_xtest(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_xtest(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(xtest_extension_minor);
@@ -28296,16 +28705,16 @@ static void dispatch_xtest(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, prot
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- xtestGetVersion(tvb, pinfo, offsetp, t, little_endian, length);
+ xtestGetVersion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 1:
- xtestCompareCursor(tvb, pinfo, offsetp, t, little_endian, length);
+ xtestCompareCursor(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 2:
- xtestFakeInput(tvb, pinfo, offsetp, t, little_endian, length);
+ xtestFakeInput(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 3:
- xtestGrabControl(tvb, pinfo, offsetp, t, little_endian, length);
+ xtestGrabControl(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -28317,7 +28726,7 @@ static void register_xtest(void)
set_handler("XTEST", dispatch_xtest, xtest_errors, xtest_events, xtest_replies);
}
-static void struct_Rational(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_Rational(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -28326,18 +28735,18 @@ static void struct_Rational(tvbuff_t *tvb, int *offsetp, proto_tree *root, int l
int f_numerator;
int f_denominator;
- item = proto_tree_add_item(root, hf_x11_struct_Rational, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_Rational, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_numerator = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Rational_numerator, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Rational_numerator, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_denominator = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Rational_denominator, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Rational_denominator, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
}
-static void struct_Format(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_Format(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -28346,19 +28755,19 @@ static void struct_Format(tvbuff_t *tvb, int *offsetp, proto_tree *root, int lit
int f_visual;
int f_depth;
- item = proto_tree_add_item(root, hf_x11_struct_Format, tvb, *offsetp, 8, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_Format, tvb, *offsetp, 8, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_visual = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Format_visual, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Format_visual, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_depth = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_Format_depth, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_Format_depth, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
}
}
-static int struct_size_AdaptorInfo(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
+static int struct_size_AdaptorInfo(tvbuff_t *tvb, int *offsetp, guint byte_order _U_)
{
int size = 0;
int f_name_size;
@@ -28370,7 +28779,7 @@ static int struct_size_AdaptorInfo(tvbuff_t *tvb, int *offsetp, int little_endia
return size + 12;
}
-static void struct_AdaptorInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_AdaptorInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -28382,38 +28791,38 @@ static void struct_AdaptorInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, in
int f_num_formats;
int f_type;
- item = proto_tree_add_item(root, hf_x11_struct_AdaptorInfo, tvb, *offsetp, struct_size_AdaptorInfo(tvb, offsetp, little_endian), little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_AdaptorInfo, tvb, *offsetp, struct_size_AdaptorInfo(tvb, offsetp, byte_order), ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_base_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_AdaptorInfo_base_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_AdaptorInfo_base_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_name_size = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_AdaptorInfo_name_size, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_AdaptorInfo_name_size, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_num_ports = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_AdaptorInfo_num_ports, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_AdaptorInfo_num_ports, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_num_formats = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_AdaptorInfo_num_formats, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_AdaptorInfo_num_formats, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_type = VALUE8(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_AdaptorInfo_type, tvb, *offsetp, 1, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_AdaptorInfo_type, tvb, *offsetp, 1, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_AdaptorInfo_type_mask_InputMask, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_AdaptorInfo_type_mask_OutputMask, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_AdaptorInfo_type_mask_VideoMask, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_AdaptorInfo_type_mask_StillMask, tvb, *offsetp, 1, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_AdaptorInfo_type_mask_ImageMask, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_AdaptorInfo_type_mask_InputMask, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_AdaptorInfo_type_mask_OutputMask, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_AdaptorInfo_type_mask_VideoMask, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_AdaptorInfo_type_mask_StillMask, tvb, *offsetp, 1, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_AdaptorInfo_type_mask_ImageMask, tvb, *offsetp, 1, byte_order);
}
*offsetp += 1;
UNUSED(1);
- listOfByte(tvb, offsetp, t, hf_x11_struct_AdaptorInfo_name, f_name_size, little_endian);
- struct_Format(tvb, offsetp, t, little_endian, f_num_formats);
+ listOfByte(tvb, offsetp, t, hf_x11_struct_AdaptorInfo_name, f_name_size, byte_order);
+ struct_Format(tvb, offsetp, t, byte_order, f_num_formats);
}
}
-static int struct_size_EncodingInfo(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
+static int struct_size_EncodingInfo(tvbuff_t *tvb, int *offsetp, guint byte_order _U_)
{
int size = 0;
int f_name_size;
@@ -28422,7 +28831,7 @@ static int struct_size_EncodingInfo(tvbuff_t *tvb, int *offsetp, int little_endi
return size + 20;
}
-static void struct_EncodingInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_EncodingInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -28433,27 +28842,27 @@ static void struct_EncodingInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, i
int f_width;
int f_height;
- item = proto_tree_add_item(root, hf_x11_struct_EncodingInfo, tvb, *offsetp, struct_size_EncodingInfo(tvb, offsetp, little_endian), little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_EncodingInfo, tvb, *offsetp, struct_size_EncodingInfo(tvb, offsetp, byte_order), ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_encoding = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_EncodingInfo_encoding, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_EncodingInfo_encoding, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_name_size = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_EncodingInfo_name_size, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_EncodingInfo_name_size, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_EncodingInfo_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_EncodingInfo_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_EncodingInfo_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_EncodingInfo_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(2);
- struct_Rational(tvb, offsetp, t, little_endian, 1);
- listOfByte(tvb, offsetp, t, hf_x11_struct_EncodingInfo_name, f_name_size, little_endian);
+ struct_Rational(tvb, offsetp, t, byte_order, 1);
+ listOfByte(tvb, offsetp, t, hf_x11_struct_EncodingInfo_name, f_name_size, byte_order);
}
}
-static int struct_size_AttributeInfo(tvbuff_t *tvb, int *offsetp, int little_endian _U_)
+static int struct_size_AttributeInfo(tvbuff_t *tvb, int *offsetp, guint byte_order _U_)
{
int size = 0;
int f_size;
@@ -28462,7 +28871,7 @@ static int struct_size_AttributeInfo(tvbuff_t *tvb, int *offsetp, int little_end
return size + 16;
}
-static void struct_AttributeInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_AttributeInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -28473,30 +28882,30 @@ static void struct_AttributeInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root,
int f_max;
int f_size;
- item = proto_tree_add_item(root, hf_x11_struct_AttributeInfo, tvb, *offsetp, struct_size_AttributeInfo(tvb, offsetp, little_endian), little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_AttributeInfo, tvb, *offsetp, struct_size_AttributeInfo(tvb, offsetp, byte_order), ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_flags = VALUE32(tvb, *offsetp);
{
- proto_item *ti = proto_tree_add_item(t, hf_x11_struct_AttributeInfo_flags, tvb, *offsetp, 4, little_endian);
+ proto_item *ti = proto_tree_add_item(t, hf_x11_struct_AttributeInfo_flags, tvb, *offsetp, 4, byte_order);
proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_AttributeInfo_flags_mask_Gettable, tvb, *offsetp, 4, little_endian);
- proto_tree_add_item(bitmask_tree, hf_x11_struct_AttributeInfo_flags_mask_Settable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_AttributeInfo_flags_mask_Gettable, tvb, *offsetp, 4, byte_order);
+ proto_tree_add_item(bitmask_tree, hf_x11_struct_AttributeInfo_flags_mask_Settable, tvb, *offsetp, 4, byte_order);
}
*offsetp += 4;
f_min = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_AttributeInfo_min, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_AttributeInfo_min, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_max = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_AttributeInfo_max, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_AttributeInfo_max, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_size = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_AttributeInfo_size, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_AttributeInfo_size, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_struct_AttributeInfo_name, f_size, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_struct_AttributeInfo_name, f_size, byte_order);
}
}
-static void struct_ImageFormatInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_ImageFormatInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -28523,90 +28932,90 @@ static void struct_ImageFormatInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root
int f_vvert_v_period;
int f_vscanline_order;
- item = proto_tree_add_item(root, hf_x11_struct_ImageFormatInfo, tvb, *offsetp, 82, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_ImageFormatInfo, tvb, *offsetp, 82, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_type = field8(tvb, offsetp, t, hf_x11_struct_ImageFormatInfo_type, little_endian);
- f_byte_order = field8(tvb, offsetp, t, hf_x11_struct_ImageFormatInfo_byte_order, little_endian);
+ f_type = field8(tvb, offsetp, t, hf_x11_struct_ImageFormatInfo_type, byte_order);
+ f_byte_order = field8(tvb, offsetp, t, hf_x11_struct_ImageFormatInfo_byte_order, byte_order);
UNUSED(2);
- listOfByte(tvb, offsetp, t, hf_x11_struct_ImageFormatInfo_guid, 16, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_struct_ImageFormatInfo_guid, 16, byte_order);
f_bpp = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_bpp, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_bpp, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
f_num_planes = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_num_planes, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_num_planes, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(2);
f_depth = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_depth, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_depth, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
f_red_mask = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_red_mask, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_red_mask, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_green_mask = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_green_mask, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_green_mask, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_blue_mask = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_blue_mask, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_blue_mask, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_format = field8(tvb, offsetp, t, hf_x11_struct_ImageFormatInfo_format, little_endian);
+ f_format = field8(tvb, offsetp, t, hf_x11_struct_ImageFormatInfo_format, byte_order);
UNUSED(3);
f_y_sample_bits = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_y_sample_bits, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_y_sample_bits, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_u_sample_bits = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_u_sample_bits, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_u_sample_bits, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_v_sample_bits = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_v_sample_bits, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_v_sample_bits, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_vhorz_y_period = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_vhorz_y_period, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_vhorz_y_period, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_vhorz_u_period = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_vhorz_u_period, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_vhorz_u_period, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_vhorz_v_period = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_vhorz_v_period, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_vhorz_v_period, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_vvert_y_period = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_vvert_y_period, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_vvert_y_period, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_vvert_u_period = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_vvert_u_period, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_vvert_u_period, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_vvert_v_period = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_vvert_v_period, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_ImageFormatInfo_vvert_v_period, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- listOfByte(tvb, offsetp, t, hf_x11_struct_ImageFormatInfo_vcomp_order, 32, little_endian);
- f_vscanline_order = field8(tvb, offsetp, t, hf_x11_struct_ImageFormatInfo_vscanline_order, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_struct_ImageFormatInfo_vcomp_order, 32, byte_order);
+ f_vscanline_order = field8(tvb, offsetp, t, hf_x11_struct_ImageFormatInfo_vscanline_order, byte_order);
UNUSED(11);
}
}
-static void xvVideoNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xvVideoNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_reason;
int f_time;
int f_drawable;
int f_port;
- f_reason = field8(tvb, offsetp, t, hf_x11_xv_VideoNotify_reason, little_endian);
+ f_reason = field8(tvb, offsetp, t, hf_x11_xv_VideoNotify_reason, byte_order);
CARD16(event_sequencenumber);
f_time = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_VideoNotify_time, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_VideoNotify_time, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_VideoNotify_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_VideoNotify_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_port = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_VideoNotify_port, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_VideoNotify_port, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xvPortNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian)
+static void xvPortNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, guint byte_order)
{
int f_time;
int f_port;
@@ -28615,23 +29024,23 @@ static void xvPortNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_
UNUSED(1);
CARD16(event_sequencenumber);
f_time = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PortNotify_time, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PortNotify_time, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_port = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PortNotify_port, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PortNotify_port, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_attribute = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PortNotify_attribute, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PortNotify_attribute, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_value = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PortNotify_value, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PortNotify_value, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xvQueryExtension(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void xvQueryExtension(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void xvQueryExtension_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xvQueryExtension_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_major;
@@ -28647,24 +29056,24 @@ static void xvQueryExtension_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offse
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_major = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_QueryExtension_reply_major, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_QueryExtension_reply_major, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_minor = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_QueryExtension_reply_minor, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_QueryExtension_reply_minor, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xvQueryAdaptors(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvQueryAdaptors(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_window;
f_window = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_QueryAdaptors_window, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_QueryAdaptors_window, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xvQueryAdaptors_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xvQueryAdaptors_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_num_adaptors;
@@ -28679,23 +29088,23 @@ static void xvQueryAdaptors_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_adaptors = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_QueryAdaptors_reply_num_adaptors, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_QueryAdaptors_reply_num_adaptors, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(22);
- struct_AdaptorInfo(tvb, offsetp, t, little_endian, f_num_adaptors);
+ struct_AdaptorInfo(tvb, offsetp, t, byte_order, f_num_adaptors);
}
-static void xvQueryEncodings(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvQueryEncodings(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_port;
f_port = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_QueryEncodings_port, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_QueryEncodings_port, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xvQueryEncodings_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xvQueryEncodings_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_num_encodings;
@@ -28710,25 +29119,25 @@ static void xvQueryEncodings_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offse
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_encodings = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_QueryEncodings_reply_num_encodings, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_QueryEncodings_reply_num_encodings, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(22);
- struct_EncodingInfo(tvb, offsetp, t, little_endian, f_num_encodings);
+ struct_EncodingInfo(tvb, offsetp, t, byte_order, f_num_encodings);
}
-static void xvGrabPort(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvGrabPort(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_port;
int f_time;
f_port = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GrabPort_port, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GrabPort_port, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_time = field32(tvb, offsetp, t, hf_x11_xv_GrabPort_time, little_endian);
+ f_time = field32(tvb, offsetp, t, hf_x11_xv_GrabPort_time, byte_order);
}
-static void xvGrabPort_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xvGrabPort_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_result;
@@ -28736,28 +29145,28 @@ static void xvGrabPort_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, pr
col_append_fstr(pinfo->cinfo, COL_INFO, "-GrabPort");
REPLY(reply);
- f_result = field8(tvb, offsetp, t, hf_x11_xv_GrabPort_reply_result, little_endian);
+ f_result = field8(tvb, offsetp, t, hf_x11_xv_GrabPort_reply_result, byte_order);
sequence_number = VALUE16(tvb, *offsetp);
proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,
"sequencenumber: %d (xv-GrabPort)", sequence_number);
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xvUngrabPort(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvUngrabPort(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_port;
int f_time;
f_port = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_UngrabPort_port, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_UngrabPort_port, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
- f_time = field32(tvb, offsetp, t, hf_x11_xv_UngrabPort_time, little_endian);
+ f_time = field32(tvb, offsetp, t, hf_x11_xv_UngrabPort_time, byte_order);
}
-static void xvPutVideo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvPutVideo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_port;
int f_drawable;
@@ -28771,41 +29180,41 @@ static void xvPutVideo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, prot
int f_drw_w;
int f_drw_h;
f_port = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutVideo_port, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutVideo_port, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutVideo_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutVideo_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_gc = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutVideo_gc, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutVideo_gc, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_vid_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutVideo_vid_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutVideo_vid_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vid_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutVideo_vid_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutVideo_vid_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vid_w = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutVideo_vid_w, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutVideo_vid_w, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vid_h = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutVideo_vid_h, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutVideo_vid_h, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutVideo_drw_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutVideo_drw_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutVideo_drw_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutVideo_drw_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_w = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutVideo_drw_w, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutVideo_drw_w, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_h = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutVideo_drw_h, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutVideo_drw_h, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xvPutStill(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvPutStill(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_port;
int f_drawable;
@@ -28819,41 +29228,41 @@ static void xvPutStill(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, prot
int f_drw_w;
int f_drw_h;
f_port = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutStill_port, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutStill_port, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutStill_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutStill_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_gc = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutStill_gc, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutStill_gc, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_vid_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutStill_vid_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutStill_vid_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vid_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutStill_vid_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutStill_vid_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vid_w = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutStill_vid_w, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutStill_vid_w, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vid_h = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutStill_vid_h, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutStill_vid_h, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutStill_drw_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutStill_drw_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutStill_drw_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutStill_drw_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_w = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutStill_drw_w, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutStill_drw_w, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_h = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutStill_drw_h, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutStill_drw_h, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xvGetVideo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvGetVideo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_port;
int f_drawable;
@@ -28867,41 +29276,41 @@ static void xvGetVideo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, prot
int f_drw_w;
int f_drw_h;
f_port = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GetVideo_port, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GetVideo_port, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GetVideo_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GetVideo_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_gc = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GetVideo_gc, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GetVideo_gc, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_vid_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GetVideo_vid_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GetVideo_vid_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vid_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GetVideo_vid_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GetVideo_vid_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vid_w = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GetVideo_vid_w, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GetVideo_vid_w, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vid_h = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GetVideo_vid_h, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GetVideo_vid_h, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GetVideo_drw_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GetVideo_drw_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GetVideo_drw_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GetVideo_drw_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_w = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GetVideo_drw_w, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GetVideo_drw_w, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_h = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GetVideo_drw_h, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GetVideo_drw_h, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xvGetStill(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvGetStill(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_port;
int f_drawable;
@@ -28915,79 +29324,79 @@ static void xvGetStill(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, prot
int f_drw_w;
int f_drw_h;
f_port = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GetStill_port, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GetStill_port, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GetStill_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GetStill_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_gc = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GetStill_gc, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GetStill_gc, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_vid_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GetStill_vid_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GetStill_vid_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vid_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GetStill_vid_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GetStill_vid_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vid_w = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GetStill_vid_w, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GetStill_vid_w, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vid_h = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GetStill_vid_h, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GetStill_vid_h, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GetStill_drw_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GetStill_drw_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GetStill_drw_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GetStill_drw_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_w = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GetStill_drw_w, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GetStill_drw_w, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_h = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GetStill_drw_h, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GetStill_drw_h, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xvStopVideo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvStopVideo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_port;
int f_drawable;
f_port = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_StopVideo_port, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_StopVideo_port, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_StopVideo_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_StopVideo_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xvSelectVideoNotify(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvSelectVideoNotify(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_drawable;
int f_onoff;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_SelectVideoNotify_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_SelectVideoNotify_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_onoff = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_SelectVideoNotify_onoff, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_SelectVideoNotify_onoff, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
}
-static void xvSelectPortNotify(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvSelectPortNotify(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_port;
int f_onoff;
f_port = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_SelectPortNotify_port, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_SelectPortNotify_port, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_onoff = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_SelectPortNotify_onoff, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_SelectPortNotify_onoff, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
}
-static void xvQueryBestSize(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvQueryBestSize(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_port;
int f_vid_w;
@@ -28996,26 +29405,26 @@ static void xvQueryBestSize(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp,
int f_drw_h;
int f_motion;
f_port = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_QueryBestSize_port, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_QueryBestSize_port, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_vid_w = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_QueryBestSize_vid_w, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_QueryBestSize_vid_w, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_vid_h = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_QueryBestSize_vid_h, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_QueryBestSize_vid_h, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_w = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_QueryBestSize_drw_w, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_QueryBestSize_drw_w, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_h = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_QueryBestSize_drw_h, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_QueryBestSize_drw_h, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_motion = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_QueryBestSize_motion, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_QueryBestSize_motion, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
}
-static void xvQueryBestSize_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xvQueryBestSize_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_actual_width;
@@ -29031,44 +29440,44 @@ static void xvQueryBestSize_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offset
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_actual_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_QueryBestSize_reply_actual_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_QueryBestSize_reply_actual_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_actual_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_QueryBestSize_reply_actual_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_QueryBestSize_reply_actual_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xvSetPortAttribute(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvSetPortAttribute(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_port;
int f_attribute;
int f_value;
f_port = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_SetPortAttribute_port, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_SetPortAttribute_port, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_attribute = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_SetPortAttribute_attribute, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_SetPortAttribute_attribute, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_value = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_SetPortAttribute_value, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_SetPortAttribute_value, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xvGetPortAttribute(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvGetPortAttribute(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_port;
int f_attribute;
f_port = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GetPortAttribute_port, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GetPortAttribute_port, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_attribute = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GetPortAttribute_attribute, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GetPortAttribute_attribute, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xvGetPortAttribute_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xvGetPortAttribute_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_value;
@@ -29083,21 +29492,21 @@ static void xvGetPortAttribute_Reply(tvbuff_t *tvb, packet_info *pinfo, int *off
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_value = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_GetPortAttribute_reply_value, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_GetPortAttribute_reply_value, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xvQueryPortAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvQueryPortAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_port;
f_port = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_QueryPortAttributes_port, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_QueryPortAttributes_port, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xvQueryPortAttributes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xvQueryPortAttributes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_num_attributes;
@@ -29113,26 +29522,26 @@ static void xvQueryPortAttributes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_attributes = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_QueryPortAttributes_reply_num_attributes, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_QueryPortAttributes_reply_num_attributes, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_text_size = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_QueryPortAttributes_reply_text_size, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_QueryPortAttributes_reply_text_size, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(16);
- struct_AttributeInfo(tvb, offsetp, t, little_endian, f_num_attributes);
+ struct_AttributeInfo(tvb, offsetp, t, byte_order, f_num_attributes);
}
-static void xvListImageFormats(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvListImageFormats(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_port;
f_port = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_ListImageFormats_port, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_ListImageFormats_port, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xvListImageFormats_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xvListImageFormats_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_num_formats;
@@ -29147,35 +29556,35 @@ static void xvListImageFormats_Reply(tvbuff_t *tvb, packet_info *pinfo, int *off
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_formats = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_ListImageFormats_reply_num_formats, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_ListImageFormats_reply_num_formats, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- struct_ImageFormatInfo(tvb, offsetp, t, little_endian, f_num_formats);
+ struct_ImageFormatInfo(tvb, offsetp, t, byte_order, f_num_formats);
}
-static void xvQueryImageAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvQueryImageAttributes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_port;
int f_id;
int f_width;
int f_height;
f_port = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_QueryImageAttributes_port, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_QueryImageAttributes_port, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_QueryImageAttributes_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_QueryImageAttributes_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_QueryImageAttributes_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_QueryImageAttributes_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_QueryImageAttributes_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_QueryImageAttributes_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xvQueryImageAttributes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xvQueryImageAttributes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_num_planes;
@@ -29193,26 +29602,26 @@ static void xvQueryImageAttributes_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num_planes = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_QueryImageAttributes_reply_num_planes, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_QueryImageAttributes_reply_num_planes, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_data_size = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_QueryImageAttributes_reply_data_size, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_QueryImageAttributes_reply_data_size, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_QueryImageAttributes_reply_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_QueryImageAttributes_reply_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_QueryImageAttributes_reply_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_QueryImageAttributes_reply_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
UNUSED(12);
- listOfCard32(tvb, offsetp, t, hf_x11_xv_QueryImageAttributes_reply_pitches, hf_x11_xv_QueryImageAttributes_reply_pitches_item, f_num_planes, little_endian);
- listOfCard32(tvb, offsetp, t, hf_x11_xv_QueryImageAttributes_reply_offsets, hf_x11_xv_QueryImageAttributes_reply_offsets_item, f_num_planes, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xv_QueryImageAttributes_reply_pitches, hf_x11_xv_QueryImageAttributes_reply_pitches_item, f_num_planes, byte_order);
+ listOfCard32(tvb, offsetp, t, hf_x11_xv_QueryImageAttributes_reply_offsets, hf_x11_xv_QueryImageAttributes_reply_offsets_item, f_num_planes, byte_order);
}
-static void xvPutImage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvPutImage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_port;
int f_drawable;
@@ -29229,51 +29638,51 @@ static void xvPutImage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, prot
int f_width;
int f_height;
f_port = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutImage_port, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutImage_port, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutImage_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutImage_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_gc = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutImage_gc, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutImage_gc, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutImage_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutImage_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_src_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutImage_src_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutImage_src_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_src_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutImage_src_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutImage_src_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_src_w = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutImage_src_w, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutImage_src_w, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_src_h = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutImage_src_h, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutImage_src_h, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutImage_drw_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutImage_drw_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutImage_drw_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutImage_drw_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_w = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutImage_drw_w, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutImage_drw_w, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_h = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutImage_drw_h, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutImage_drw_h, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutImage_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutImage_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_PutImage_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_PutImage_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- listOfByte(tvb, offsetp, t, hf_x11_xv_PutImage_data, (length - 40) / 1, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xv_PutImage_data, (length - 40) / 1, byte_order);
}
-static void xvShmPutImage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvShmPutImage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_port;
int f_drawable;
@@ -29293,55 +29702,55 @@ static void xvShmPutImage(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, p
int f_height;
int f_send_event;
f_port = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_ShmPutImage_port, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_ShmPutImage_port, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_drawable = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_ShmPutImage_drawable, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_ShmPutImage_drawable, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_gc = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_ShmPutImage_gc, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_ShmPutImage_gc, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_shmseg = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_ShmPutImage_shmseg, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_ShmPutImage_shmseg, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_ShmPutImage_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_ShmPutImage_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_offset = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_ShmPutImage_offset, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_ShmPutImage_offset, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_src_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_ShmPutImage_src_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_ShmPutImage_src_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_src_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_ShmPutImage_src_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_ShmPutImage_src_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_src_w = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_ShmPutImage_src_w, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_ShmPutImage_src_w, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_src_h = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_ShmPutImage_src_h, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_ShmPutImage_src_h, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_x = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_ShmPutImage_drw_x, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_ShmPutImage_drw_x, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_y = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_ShmPutImage_drw_y, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_ShmPutImage_drw_y, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_w = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_ShmPutImage_drw_w, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_ShmPutImage_drw_w, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_drw_h = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_ShmPutImage_drw_h, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_ShmPutImage_drw_h, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_ShmPutImage_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_ShmPutImage_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_ShmPutImage_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_ShmPutImage_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_send_event = VALUE8(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xv_ShmPutImage_send_event, tvb, *offsetp, 1, little_endian);
+ proto_tree_add_item(t, hf_x11_xv_ShmPutImage_send_event, tvb, *offsetp, 1, byte_order);
*offsetp += 1;
UNUSED(3);
}
@@ -29386,7 +29795,7 @@ static x11_reply_info xv_replies[] = {
{ 0, NULL }
};
-static void dispatch_xv(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_xv(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(xv_extension_minor);
@@ -29397,64 +29806,64 @@ static void dispatch_xv(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_t
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- xvQueryExtension(tvb, pinfo, offsetp, t, little_endian, length);
+ xvQueryExtension(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 1:
- xvQueryAdaptors(tvb, pinfo, offsetp, t, little_endian, length);
+ xvQueryAdaptors(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 2:
- xvQueryEncodings(tvb, pinfo, offsetp, t, little_endian, length);
+ xvQueryEncodings(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 3:
- xvGrabPort(tvb, pinfo, offsetp, t, little_endian, length);
+ xvGrabPort(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 4:
- xvUngrabPort(tvb, pinfo, offsetp, t, little_endian, length);
+ xvUngrabPort(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 5:
- xvPutVideo(tvb, pinfo, offsetp, t, little_endian, length);
+ xvPutVideo(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 6:
- xvPutStill(tvb, pinfo, offsetp, t, little_endian, length);
+ xvPutStill(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 7:
- xvGetVideo(tvb, pinfo, offsetp, t, little_endian, length);
+ xvGetVideo(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 8:
- xvGetStill(tvb, pinfo, offsetp, t, little_endian, length);
+ xvGetStill(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 9:
- xvStopVideo(tvb, pinfo, offsetp, t, little_endian, length);
+ xvStopVideo(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 10:
- xvSelectVideoNotify(tvb, pinfo, offsetp, t, little_endian, length);
+ xvSelectVideoNotify(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 11:
- xvSelectPortNotify(tvb, pinfo, offsetp, t, little_endian, length);
+ xvSelectPortNotify(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 12:
- xvQueryBestSize(tvb, pinfo, offsetp, t, little_endian, length);
+ xvQueryBestSize(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 13:
- xvSetPortAttribute(tvb, pinfo, offsetp, t, little_endian, length);
+ xvSetPortAttribute(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 14:
- xvGetPortAttribute(tvb, pinfo, offsetp, t, little_endian, length);
+ xvGetPortAttribute(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 15:
- xvQueryPortAttributes(tvb, pinfo, offsetp, t, little_endian, length);
+ xvQueryPortAttributes(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 16:
- xvListImageFormats(tvb, pinfo, offsetp, t, little_endian, length);
+ xvListImageFormats(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 17:
- xvQueryImageAttributes(tvb, pinfo, offsetp, t, little_endian, length);
+ xvQueryImageAttributes(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 18:
- xvPutImage(tvb, pinfo, offsetp, t, little_endian, length);
+ xvPutImage(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 19:
- xvShmPutImage(tvb, pinfo, offsetp, t, little_endian, length);
+ xvShmPutImage(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
@@ -29466,7 +29875,7 @@ static void register_xv(void)
set_handler("XVideo", dispatch_xv, xv_errors, xv_events, xv_replies);
}
-static void struct_SurfaceInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count)
+static void struct_SurfaceInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, guint byte_order _U_, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -29482,42 +29891,42 @@ static void struct_SurfaceInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, in
int f_mc_type;
int f_flags;
- item = proto_tree_add_item(root, hf_x11_struct_SurfaceInfo, tvb, *offsetp, 24, little_endian);
+ item = proto_tree_add_item(root, hf_x11_struct_SurfaceInfo, tvb, *offsetp, 24, ENC_NA);
t = proto_item_add_subtree(item, ett_x11_rectangle);
f_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SurfaceInfo_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SurfaceInfo_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_chroma_format = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SurfaceInfo_chroma_format, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SurfaceInfo_chroma_format, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_pad0 = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SurfaceInfo_pad0, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SurfaceInfo_pad0, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_max_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SurfaceInfo_max_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SurfaceInfo_max_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_max_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SurfaceInfo_max_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SurfaceInfo_max_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_subpicture_max_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SurfaceInfo_subpicture_max_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SurfaceInfo_subpicture_max_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_subpicture_max_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SurfaceInfo_subpicture_max_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SurfaceInfo_subpicture_max_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_mc_type = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SurfaceInfo_mc_type, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SurfaceInfo_mc_type, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_flags = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_struct_SurfaceInfo_flags, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_struct_SurfaceInfo_flags, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
}
-static void xvmcQueryVersion(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, int little_endian _U_, int length _U_)
+static void xvmcQueryVersion(tvbuff_t *tvb _U_, packet_info *pinfo _U_, int *offsetp _U_, proto_tree *t _U_, guint byte_order _U_, int length _U_)
{
}
-static void xvmcQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xvmcQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_major;
@@ -29533,24 +29942,24 @@ static void xvmcQueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offse
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_major = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_QueryVersion_reply_major, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_QueryVersion_reply_major, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_minor = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_QueryVersion_reply_minor, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_QueryVersion_reply_minor, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xvmcListSurfaceTypes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvmcListSurfaceTypes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_port_id;
f_port_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_ListSurfaceTypes_port_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_ListSurfaceTypes_port_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xvmcListSurfaceTypes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xvmcListSurfaceTypes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_num;
@@ -29565,16 +29974,16 @@ static void xvmcListSurfaceTypes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *o
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_ListSurfaceTypes_reply_num, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_ListSurfaceTypes_reply_num, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- struct_SurfaceInfo(tvb, offsetp, t, little_endian, f_num);
+ struct_SurfaceInfo(tvb, offsetp, t, byte_order, f_num);
}
-static void xvmcCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvmcCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_id;
int f_port_id;
@@ -29583,25 +29992,25 @@ static void xvmcCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offset
int f_height;
int f_flags;
f_context_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_CreateContext_context_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_CreateContext_context_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_port_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_CreateContext_port_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_CreateContext_port_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_surface_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_CreateContext_surface_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_CreateContext_surface_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_CreateContext_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_CreateContext_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_CreateContext_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_CreateContext_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_flags = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_CreateContext_flags, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_CreateContext_flags, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xvmcCreateContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xvmcCreateContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_width_actual;
@@ -29618,41 +30027,41 @@ static void xvmcCreateContext_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offs
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_width_actual = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_CreateContext_reply_width_actual, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_CreateContext_reply_width_actual, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height_actual = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_CreateContext_reply_height_actual, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_CreateContext_reply_height_actual, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_flags_return = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_CreateContext_reply_flags_return, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_CreateContext_reply_flags_return, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- listOfCard32(tvb, offsetp, t, hf_x11_xvmc_CreateContext_reply_priv_data, hf_x11_xvmc_CreateContext_reply_priv_data_item, f_length, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xvmc_CreateContext_reply_priv_data, hf_x11_xvmc_CreateContext_reply_priv_data_item, f_length, byte_order);
}
-static void xvmcDestroyContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvmcDestroyContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_context_id;
f_context_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_DestroyContext_context_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_DestroyContext_context_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xvmcCreateSurface(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvmcCreateSurface(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_surface_id;
int f_context_id;
f_surface_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_CreateSurface_surface_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_CreateSurface_surface_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_context_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_CreateSurface_context_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_CreateSurface_context_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xvmcCreateSurface_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xvmcCreateSurface_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
@@ -29666,21 +30075,21 @@ static void xvmcCreateSurface_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offs
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(24);
- listOfCard32(tvb, offsetp, t, hf_x11_xvmc_CreateSurface_reply_priv_data, hf_x11_xvmc_CreateSurface_reply_priv_data_item, f_length, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xvmc_CreateSurface_reply_priv_data, hf_x11_xvmc_CreateSurface_reply_priv_data_item, f_length, byte_order);
}
-static void xvmcDestroySurface(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvmcDestroySurface(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_surface_id;
f_surface_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_DestroySurface_surface_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_DestroySurface_surface_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xvmcCreateSubpicture(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvmcCreateSubpicture(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_subpicture_id;
int f_context;
@@ -29688,22 +30097,22 @@ static void xvmcCreateSubpicture(tvbuff_t *tvb, packet_info *pinfo _U_, int *off
int f_width;
int f_height;
f_subpicture_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_subpicture_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_subpicture_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_context = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_context, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_context, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_xvimage_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_xvimage_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_xvimage_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_width = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_width, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_width, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_height, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_height, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
}
-static void xvmcCreateSubpicture_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xvmcCreateSubpicture_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_width_actual;
@@ -29721,45 +30130,45 @@ static void xvmcCreateSubpicture_Reply(tvbuff_t *tvb, packet_info *pinfo, int *o
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_width_actual = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_reply_width_actual, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_reply_width_actual, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_height_actual = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_reply_height_actual, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_reply_height_actual, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_num_palette_entries = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_reply_num_palette_entries, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_reply_num_palette_entries, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
f_entry_bytes = VALUE16(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_reply_entry_bytes, tvb, *offsetp, 2, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_CreateSubpicture_reply_entry_bytes, tvb, *offsetp, 2, byte_order);
*offsetp += 2;
- listOfByte(tvb, offsetp, t, hf_x11_xvmc_CreateSubpicture_reply_component_order, 4, little_endian);
+ listOfByte(tvb, offsetp, t, hf_x11_xvmc_CreateSubpicture_reply_component_order, 4, byte_order);
UNUSED(12);
- listOfCard32(tvb, offsetp, t, hf_x11_xvmc_CreateSubpicture_reply_priv_data, hf_x11_xvmc_CreateSubpicture_reply_priv_data_item, f_length, little_endian);
+ listOfCard32(tvb, offsetp, t, hf_x11_xvmc_CreateSubpicture_reply_priv_data, hf_x11_xvmc_CreateSubpicture_reply_priv_data_item, f_length, byte_order);
}
-static void xvmcDestroySubpicture(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvmcDestroySubpicture(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_subpicture_id;
f_subpicture_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_DestroySubpicture_subpicture_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_DestroySubpicture_subpicture_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xvmcListSubpictureTypes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_)
+static void xvmcListSubpictureTypes(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, guint byte_order, int length _U_)
{
int f_port_id;
int f_surface_id;
f_port_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_ListSubpictureTypes_port_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_ListSubpictureTypes_port_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_surface_id = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_ListSubpictureTypes_surface_id, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_ListSubpictureTypes_surface_id, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
}
-static void xvmcListSubpictureTypes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void xvmcListSubpictureTypes_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int f_length, length, sequence_number;
int f_num;
@@ -29774,13 +30183,13 @@ static void xvmcListSubpictureTypes_Reply(tvbuff_t *tvb, packet_info *pinfo, int
*offsetp += 2;
f_length = VALUE32(tvb, *offsetp);
length = f_length * 4 + 32;
- proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
f_num = VALUE32(tvb, *offsetp);
- proto_tree_add_item(t, hf_x11_xvmc_ListSubpictureTypes_reply_num, tvb, *offsetp, 4, little_endian);
+ proto_tree_add_item(t, hf_x11_xvmc_ListSubpictureTypes_reply_num, tvb, *offsetp, 4, byte_order);
*offsetp += 4;
UNUSED(20);
- struct_ImageFormatInfo(tvb, offsetp, t, little_endian, f_num);
+ struct_ImageFormatInfo(tvb, offsetp, t, byte_order, f_num);
}
static const value_string xvmc_extension_minor[] = {
{ 0, "QueryVersion" },
@@ -29807,7 +30216,7 @@ static x11_reply_info xvmc_replies[] = {
{ 0, NULL }
};
-static void dispatch_xvmc(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian)
+static void dispatch_xvmc(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, guint byte_order)
{
int minor, length;
minor = CARD8(xvmc_extension_minor);
@@ -29818,31 +30227,31 @@ static void dispatch_xvmc(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto
"<Unknown opcode %d>"));
switch (minor) {
case 0:
- xvmcQueryVersion(tvb, pinfo, offsetp, t, little_endian, length);
+ xvmcQueryVersion(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 1:
- xvmcListSurfaceTypes(tvb, pinfo, offsetp, t, little_endian, length);
+ xvmcListSurfaceTypes(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 2:
- xvmcCreateContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xvmcCreateContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 3:
- xvmcDestroyContext(tvb, pinfo, offsetp, t, little_endian, length);
+ xvmcDestroyContext(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 4:
- xvmcCreateSurface(tvb, pinfo, offsetp, t, little_endian, length);
+ xvmcCreateSurface(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 5:
- xvmcDestroySurface(tvb, pinfo, offsetp, t, little_endian, length);
+ xvmcDestroySurface(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 6:
- xvmcCreateSubpicture(tvb, pinfo, offsetp, t, little_endian, length);
+ xvmcCreateSubpicture(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 7:
- xvmcDestroySubpicture(tvb, pinfo, offsetp, t, little_endian, length);
+ xvmcDestroySubpicture(tvb, pinfo, offsetp, t, byte_order, length);
break;
case 8:
- xvmcListSubpictureTypes(tvb, pinfo, offsetp, t, little_endian, length);
+ xvmcListSubpictureTypes(tvb, pinfo, offsetp, t, byte_order, length);
break;
/* No need for a default case here, since Unknown is printed above,
and UNDECODED() is taken care of by dissect_x11_request */
diff --git a/epan/dissectors/x11-glx-render-enum.h b/epan/dissectors/x11-glx-render-enum.h
index b62572216f..155a00f835 100644
--- a/epan/dissectors/x11-glx-render-enum.h
+++ b/epan/dissectors/x11-glx-render-enum.h
@@ -1,6 +1,6 @@
/* Do not modify this file. */
/* It was automatically generated by ../../tools/process-x11-xcb.pl
- using mesa version snb-magic-3282-g51095f7 */
+ using mesa version snb-magic-10072-g9d6b46b */
/* $Id$ */
/*
@@ -1293,24 +1293,6 @@ static const value_string mesa_enum[] = {
{ 0x8861, "POINT_SPRITE_ARB" },
{ 0x8862, "COORD_REPLACE_ARB" },
/* OpenGL extension GL_ARB_fragment_program_shadow */
-/* OpenGL extension GL_ARB_draw_buffers */
- { 0x8824, "MAX_DRAW_BUFFERS_ARB" },
- { 0x8825, "DRAW_BUFFER0_ARB" },
- { 0x8826, "DRAW_BUFFER1_ARB" },
- { 0x8827, "DRAW_BUFFER2_ARB" },
- { 0x8828, "DRAW_BUFFER3_ARB" },
- { 0x8829, "DRAW_BUFFER4_ARB" },
- { 0x882A, "DRAW_BUFFER5_ARB" },
- { 0x882B, "DRAW_BUFFER6_ARB" },
- { 0x882C, "DRAW_BUFFER7_ARB" },
- { 0x882D, "DRAW_BUFFER8_ARB" },
- { 0x882E, "DRAW_BUFFER9_ARB" },
- { 0x882F, "DRAW_BUFFER10_ARB" },
- { 0x8830, "DRAW_BUFFER11_ARB" },
- { 0x8831, "DRAW_BUFFER12_ARB" },
- { 0x8832, "DRAW_BUFFER13_ARB" },
- { 0x8833, "DRAW_BUFFER14_ARB" },
- { 0x8834, "DRAW_BUFFER15_ARB" },
/* OpenGL extension GL_ARB_texture_rectangle */
{ 0x84F5, "TEXTURE_RECTANGLE_ARB" },
{ 0x84F6, "TEXTURE_BINDING_RECTANGLE_ARB" },
@@ -1788,24 +1770,6 @@ static const value_string mesa_enum[] = {
{ 0x83A3, "RGBA4_S3TC" },
{ 0x83A4, "RGBA_DXT5_S3TC" },
{ 0x83A5, "RGBA4_DXT5_S3TC" },
-/* OpenGL extension GL_ATI_draw_buffers */
- { 0x8824, "MAX_DRAW_BUFFERS_ATI" },
- { 0x8825, "DRAW_BUFFER0_ATI" },
- { 0x8826, "DRAW_BUFFER1_ATI" },
- { 0x8827, "DRAW_BUFFER2_ATI" },
- { 0x8828, "DRAW_BUFFER3_ATI" },
- { 0x8829, "DRAW_BUFFER4_ATI" },
- { 0x882A, "DRAW_BUFFER5_ATI" },
- { 0x882B, "DRAW_BUFFER6_ATI" },
- { 0x882C, "DRAW_BUFFER7_ATI" },
- { 0x882D, "DRAW_BUFFER8_ATI" },
- { 0x882E, "DRAW_BUFFER9_ATI" },
- { 0x882F, "DRAW_BUFFER10_ATI" },
- { 0x8830, "DRAW_BUFFER11_ATI" },
- { 0x8831, "DRAW_BUFFER12_ATI" },
- { 0x8832, "DRAW_BUFFER13_ATI" },
- { 0x8833, "DRAW_BUFFER14_ATI" },
- { 0x8834, "DRAW_BUFFER15_ATI" },
/* OpenGL extension GL_ATI_texture_env_combine3 */
{ 0x8744, "MODULATE_ADD_ATI" },
{ 0x8745, "MODULATE_SIGNED_ADD_ATI" },
diff --git a/epan/dissectors/x11-register-info.h b/epan/dissectors/x11-register-info.h
index ca881090b8..237fe91c3f 100644
--- a/epan/dissectors/x11-register-info.h
+++ b/epan/dissectors/x11-register-info.h
@@ -1422,9 +1422,6 @@
{ &hf_x11_glx_render_BeginQueryARB_target, { "target", "x11.glx.render.BeginQueryARB.target", FT_UINT32, BASE_HEX, VALS(mesa_enum), 0, NULL, HFILL }},
{ &hf_x11_glx_render_BeginQueryARB_id, { "id", "x11.glx.render.BeginQueryARB.id", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_glx_render_EndQueryARB_target, { "target", "x11.glx.render.EndQueryARB.target", FT_UINT32, BASE_HEX, VALS(mesa_enum), 0, NULL, HFILL }},
-{ &hf_x11_glx_render_DrawBuffersARB_n, { "n", "x11.glx.render.DrawBuffersARB.n", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_glx_render_DrawBuffersARB_bufs, { "bufs", "x11.glx.render.DrawBuffersARB.bufs", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_glx_render_DrawBuffersARB_bufs_item, { "bufs", "x11.glx.render.DrawBuffersARB.bufs", FT_UINT32, BASE_HEX, VALS(mesa_enum), 0, NULL, HFILL }},
{ &hf_x11_glx_render_PolygonOffsetEXT_factor, { "factor", "x11.glx.render.PolygonOffsetEXT.factor", FT_FLOAT, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_glx_render_PolygonOffsetEXT_bias, { "bias", "x11.glx.render.PolygonOffsetEXT.bias", FT_FLOAT, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_glx_render_TexFilterFuncSGIS_target, { "target", "x11.glx.render.TexFilterFuncSGIS.target", FT_UINT32, BASE_HEX, VALS(mesa_enum), 0, NULL, HFILL }},
@@ -1715,7 +1712,7 @@
{ &hf_x11_struct_DIRECTFORMAT_alpha_mask, { "alpha_mask", "x11.struct.DIRECTFORMAT.alpha_mask", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_PICTFORMINFO, { "PICTFORMINFO", "x11.struct.PICTFORMINFO", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_PICTFORMINFO_id, { "id", "x11.struct.PICTFORMINFO.id", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_PICTFORMINFO_type, { "type", "x11.struct.PICTFORMINFO.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_PictType), 0, NULL, HFILL }},
+{ &hf_x11_struct_PICTFORMINFO_type, { "type", "x11.struct.PICTFORMINFO.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_render_PictType), 0, NULL, HFILL }},
{ &hf_x11_struct_PICTFORMINFO_depth, { "depth", "x11.struct.PICTFORMINFO.depth", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_PICTFORMINFO_direct, { "direct", "x11.struct.PICTFORMINFO.direct", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_PICTFORMINFO_colormap, { "colormap", "x11.struct.PICTFORMINFO.colormap", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
@@ -1789,13 +1786,13 @@
{ &hf_x11_composite_QueryVersion_reply_major_version, { "major_version", "x11.composite.QueryVersion.reply.major_version", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_composite_QueryVersion_reply_minor_version, { "minor_version", "x11.composite.QueryVersion.reply.minor_version", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_composite_RedirectWindow_window, { "window", "x11.composite.RedirectWindow.window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_composite_RedirectWindow_update, { "update", "x11.composite.RedirectWindow.update", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_Redirect), 0, NULL, HFILL }},
+{ &hf_x11_composite_RedirectWindow_update, { "update", "x11.composite.RedirectWindow.update", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_composite_Redirect), 0, NULL, HFILL }},
{ &hf_x11_composite_RedirectSubwindows_window, { "window", "x11.composite.RedirectSubwindows.window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_composite_RedirectSubwindows_update, { "update", "x11.composite.RedirectSubwindows.update", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_Redirect), 0, NULL, HFILL }},
+{ &hf_x11_composite_RedirectSubwindows_update, { "update", "x11.composite.RedirectSubwindows.update", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_composite_Redirect), 0, NULL, HFILL }},
{ &hf_x11_composite_UnredirectWindow_window, { "window", "x11.composite.UnredirectWindow.window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_composite_UnredirectWindow_update, { "update", "x11.composite.UnredirectWindow.update", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_Redirect), 0, NULL, HFILL }},
+{ &hf_x11_composite_UnredirectWindow_update, { "update", "x11.composite.UnredirectWindow.update", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_composite_Redirect), 0, NULL, HFILL }},
{ &hf_x11_composite_UnredirectSubwindows_window, { "window", "x11.composite.UnredirectSubwindows.window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_composite_UnredirectSubwindows_update, { "update", "x11.composite.UnredirectSubwindows.update", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_Redirect), 0, NULL, HFILL }},
+{ &hf_x11_composite_UnredirectSubwindows_update, { "update", "x11.composite.UnredirectSubwindows.update", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_composite_Redirect), 0, NULL, HFILL }},
{ &hf_x11_composite_CreateRegionFromBorderClip_region, { "region", "x11.composite.CreateRegionFromBorderClip.region", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_composite_CreateRegionFromBorderClip_window, { "window", "x11.composite.CreateRegionFromBorderClip.window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_composite_NameWindowPixmap_window, { "window", "x11.composite.NameWindowPixmap.window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
@@ -1811,14 +1808,14 @@
{ &hf_x11_damage_QueryVersion_reply_minor_version, { "minor_version", "x11.damage.QueryVersion.reply.minor_version", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_damage_Create_damage, { "damage", "x11.damage.Create.damage", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_damage_Create_drawable, { "drawable", "x11.damage.Create.drawable", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_damage_Create_level, { "level", "x11.damage.Create.level", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_ReportLevel), 0, NULL, HFILL }},
+{ &hf_x11_damage_Create_level, { "level", "x11.damage.Create.level", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_damage_ReportLevel), 0, NULL, HFILL }},
{ &hf_x11_damage_Destroy_damage, { "damage", "x11.damage.Destroy.damage", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_damage_Subtract_damage, { "damage", "x11.damage.Subtract.damage", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_damage_Subtract_repair, { "repair", "x11.damage.Subtract.repair", FT_UINT32, BASE_HEX, VALS(x11_enum_Region), 0, NULL, HFILL }},
-{ &hf_x11_damage_Subtract_parts, { "parts", "x11.damage.Subtract.parts", FT_UINT32, BASE_HEX, VALS(x11_enum_Region), 0, NULL, HFILL }},
+{ &hf_x11_damage_Subtract_repair, { "repair", "x11.damage.Subtract.repair", FT_UINT32, BASE_HEX, VALS(x11_enum_xfixes_Region), 0, NULL, HFILL }},
+{ &hf_x11_damage_Subtract_parts, { "parts", "x11.damage.Subtract.parts", FT_UINT32, BASE_HEX, VALS(x11_enum_xfixes_Region), 0, NULL, HFILL }},
{ &hf_x11_damage_Add_drawable, { "drawable", "x11.damage.Add.drawable", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_damage_Add_region, { "region", "x11.damage.Add.region", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_damage_Notify_level, { "level", "x11.damage.Notify.level", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_ReportLevel), 0, NULL, HFILL }},
+{ &hf_x11_damage_Notify_level, { "level", "x11.damage.Notify.level", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_damage_ReportLevel), 0, NULL, HFILL }},
{ &hf_x11_damage_Notify_drawable, { "drawable", "x11.damage.Notify.drawable", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_damage_Notify_damage, { "damage", "x11.damage.Notify.damage", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_damage_Notify_timestamp, { "timestamp", "x11.damage.Notify.timestamp", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -1837,26 +1834,26 @@
{ &hf_x11_dpms_SetTimeouts_standby_timeout, { "standby_timeout", "x11.dpms.SetTimeouts.standby_timeout", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_dpms_SetTimeouts_suspend_timeout, { "suspend_timeout", "x11.dpms.SetTimeouts.suspend_timeout", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_dpms_SetTimeouts_off_timeout, { "off_timeout", "x11.dpms.SetTimeouts.off_timeout", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_dpms_ForceLevel_power_level, { "power_level", "x11.dpms.ForceLevel.power_level", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_DPMSMode), 0, NULL, HFILL }},
-{ &hf_x11_dpms_Info_reply_power_level, { "power_level", "x11.dpms.Info.reply.power_level", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_DPMSMode), 0, NULL, HFILL }},
+{ &hf_x11_dpms_ForceLevel_power_level, { "power_level", "x11.dpms.ForceLevel.power_level", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_dpms_DPMSMode), 0, NULL, HFILL }},
+{ &hf_x11_dpms_Info_reply_power_level, { "power_level", "x11.dpms.Info.reply.power_level", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_dpms_DPMSMode), 0, NULL, HFILL }},
{ &hf_x11_dpms_Info_reply_state, { "state", "x11.dpms.Info.reply.state", FT_BOOLEAN, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_dpms_extension_minor, { "extension-minor", "x11.extension-minor", FT_UINT8, BASE_DEC, VALS(dpms_extension_minor), 0, "minor opcode", HFILL }},
{ &hf_x11_struct_DRI2Buffer, { "DRI2Buffer", "x11.struct.DRI2Buffer", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_DRI2Buffer_attachment, { "attachment", "x11.struct.DRI2Buffer.attachment", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_Attachment), 0, NULL, HFILL }},
+{ &hf_x11_struct_DRI2Buffer_attachment, { "attachment", "x11.struct.DRI2Buffer.attachment", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_dri2_Attachment), 0, NULL, HFILL }},
{ &hf_x11_struct_DRI2Buffer_name, { "name", "x11.struct.DRI2Buffer.name", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_DRI2Buffer_pitch, { "pitch", "x11.struct.DRI2Buffer.pitch", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_DRI2Buffer_cpp, { "cpp", "x11.struct.DRI2Buffer.cpp", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_DRI2Buffer_flags, { "flags", "x11.struct.DRI2Buffer.flags", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_AttachFormat, { "AttachFormat", "x11.struct.AttachFormat", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_AttachFormat_attachment, { "attachment", "x11.struct.AttachFormat.attachment", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_Attachment), 0, NULL, HFILL }},
+{ &hf_x11_struct_AttachFormat_attachment, { "attachment", "x11.struct.AttachFormat.attachment", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_dri2_Attachment), 0, NULL, HFILL }},
{ &hf_x11_struct_AttachFormat_format, { "format", "x11.struct.AttachFormat.format", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_dri2_QueryVersion_major_version, { "major_version", "x11.dri2.QueryVersion.major_version", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_dri2_QueryVersion_minor_version, { "minor_version", "x11.dri2.QueryVersion.minor_version", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_dri2_QueryVersion_reply_major_version, { "major_version", "x11.dri2.QueryVersion.reply.major_version", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_dri2_QueryVersion_reply_minor_version, { "minor_version", "x11.dri2.QueryVersion.reply.minor_version", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_dri2_Connect_window, { "window", "x11.dri2.Connect.window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_dri2_Connect_driver_type, { "driver_type", "x11.dri2.Connect.driver_type", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_DriverType), 0, NULL, HFILL }},
+{ &hf_x11_dri2_Connect_driver_type, { "driver_type", "x11.dri2.Connect.driver_type", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_dri2_DriverType), 0, NULL, HFILL }},
{ &hf_x11_dri2_Connect_reply_driver_name_length, { "driver_name_length", "x11.dri2.Connect.reply.driver_name_length", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_dri2_Connect_reply_device_name_length, { "device_name_length", "x11.dri2.Connect.reply.device_name_length", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_dri2_Connect_reply_driver_name, { "driver_name", "x11.dri2.Connect.reply.driver_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
@@ -1889,6 +1886,54 @@
{ &hf_x11_dri2_GetBuffersWithFormat_reply_count, { "count", "x11.dri2.GetBuffersWithFormat.reply.count", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_dri2_GetBuffersWithFormat_reply_buffers, { "buffers", "x11.dri2.GetBuffersWithFormat.reply.buffers", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_dri2_GetBuffersWithFormat_reply_buffers_item, { "buffers", "x11.dri2.GetBuffersWithFormat.reply.buffers", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_SwapBuffers_drawable, { "drawable", "x11.dri2.SwapBuffers.drawable", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_SwapBuffers_target_msc_hi, { "target_msc_hi", "x11.dri2.SwapBuffers.target_msc_hi", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_SwapBuffers_target_msc_lo, { "target_msc_lo", "x11.dri2.SwapBuffers.target_msc_lo", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_SwapBuffers_divisor_hi, { "divisor_hi", "x11.dri2.SwapBuffers.divisor_hi", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_SwapBuffers_divisor_lo, { "divisor_lo", "x11.dri2.SwapBuffers.divisor_lo", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_SwapBuffers_remainder_hi, { "remainder_hi", "x11.dri2.SwapBuffers.remainder_hi", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_SwapBuffers_remainder_lo, { "remainder_lo", "x11.dri2.SwapBuffers.remainder_lo", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_SwapBuffers_reply_swap_hi, { "swap_hi", "x11.dri2.SwapBuffers.reply.swap_hi", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_SwapBuffers_reply_swap_lo, { "swap_lo", "x11.dri2.SwapBuffers.reply.swap_lo", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_GetMSC_drawable, { "drawable", "x11.dri2.GetMSC.drawable", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_GetMSC_reply_ust_hi, { "ust_hi", "x11.dri2.GetMSC.reply.ust_hi", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_GetMSC_reply_ust_lo, { "ust_lo", "x11.dri2.GetMSC.reply.ust_lo", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_GetMSC_reply_msc_hi, { "msc_hi", "x11.dri2.GetMSC.reply.msc_hi", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_GetMSC_reply_msc_lo, { "msc_lo", "x11.dri2.GetMSC.reply.msc_lo", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_GetMSC_reply_sbc_hi, { "sbc_hi", "x11.dri2.GetMSC.reply.sbc_hi", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_GetMSC_reply_sbc_lo, { "sbc_lo", "x11.dri2.GetMSC.reply.sbc_lo", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_WaitMSC_drawable, { "drawable", "x11.dri2.WaitMSC.drawable", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_WaitMSC_target_msc_hi, { "target_msc_hi", "x11.dri2.WaitMSC.target_msc_hi", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_WaitMSC_target_msc_lo, { "target_msc_lo", "x11.dri2.WaitMSC.target_msc_lo", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_WaitMSC_divisor_hi, { "divisor_hi", "x11.dri2.WaitMSC.divisor_hi", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_WaitMSC_divisor_lo, { "divisor_lo", "x11.dri2.WaitMSC.divisor_lo", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_WaitMSC_remainder_hi, { "remainder_hi", "x11.dri2.WaitMSC.remainder_hi", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_WaitMSC_remainder_lo, { "remainder_lo", "x11.dri2.WaitMSC.remainder_lo", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_WaitMSC_reply_ust_hi, { "ust_hi", "x11.dri2.WaitMSC.reply.ust_hi", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_WaitMSC_reply_ust_lo, { "ust_lo", "x11.dri2.WaitMSC.reply.ust_lo", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_WaitMSC_reply_msc_hi, { "msc_hi", "x11.dri2.WaitMSC.reply.msc_hi", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_WaitMSC_reply_msc_lo, { "msc_lo", "x11.dri2.WaitMSC.reply.msc_lo", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_WaitMSC_reply_sbc_hi, { "sbc_hi", "x11.dri2.WaitMSC.reply.sbc_hi", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_WaitMSC_reply_sbc_lo, { "sbc_lo", "x11.dri2.WaitMSC.reply.sbc_lo", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_WaitSBC_drawable, { "drawable", "x11.dri2.WaitSBC.drawable", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_WaitSBC_target_sbc_hi, { "target_sbc_hi", "x11.dri2.WaitSBC.target_sbc_hi", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_WaitSBC_target_sbc_lo, { "target_sbc_lo", "x11.dri2.WaitSBC.target_sbc_lo", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_WaitSBC_reply_ust_hi, { "ust_hi", "x11.dri2.WaitSBC.reply.ust_hi", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_WaitSBC_reply_ust_lo, { "ust_lo", "x11.dri2.WaitSBC.reply.ust_lo", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_WaitSBC_reply_msc_hi, { "msc_hi", "x11.dri2.WaitSBC.reply.msc_hi", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_WaitSBC_reply_msc_lo, { "msc_lo", "x11.dri2.WaitSBC.reply.msc_lo", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_WaitSBC_reply_sbc_hi, { "sbc_hi", "x11.dri2.WaitSBC.reply.sbc_hi", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_WaitSBC_reply_sbc_lo, { "sbc_lo", "x11.dri2.WaitSBC.reply.sbc_lo", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_SwapInterval_drawable, { "drawable", "x11.dri2.SwapInterval.drawable", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_SwapInterval_interval, { "interval", "x11.dri2.SwapInterval.interval", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_BufferSwapComplete_event_type, { "event_type", "x11.dri2.BufferSwapComplete.event_type", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_dri2_EventType), 0, NULL, HFILL }},
+{ &hf_x11_dri2_BufferSwapComplete_drawable, { "drawable", "x11.dri2.BufferSwapComplete.drawable", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_BufferSwapComplete_ust_hi, { "ust_hi", "x11.dri2.BufferSwapComplete.ust_hi", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_BufferSwapComplete_ust_lo, { "ust_lo", "x11.dri2.BufferSwapComplete.ust_lo", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_BufferSwapComplete_msc_hi, { "msc_hi", "x11.dri2.BufferSwapComplete.msc_hi", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_BufferSwapComplete_msc_lo, { "msc_lo", "x11.dri2.BufferSwapComplete.msc_lo", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_BufferSwapComplete_sbc, { "sbc", "x11.dri2.BufferSwapComplete.sbc", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_dri2_InvalidateBuffers_drawable, { "drawable", "x11.dri2.InvalidateBuffers.drawable", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_dri2_extension_minor, { "extension-minor", "x11.extension-minor", FT_UINT8, BASE_DEC, VALS(dri2_extension_minor), 0, "minor opcode", HFILL }},
{ &hf_x11_ge_QueryVersion_client_major_version, { "client_major_version", "x11.ge.QueryVersion.client_major_version", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -1978,7 +2023,7 @@
{ &hf_x11_glx_GetFBConfigs_reply_property_list, { "property_list", "x11.glx.GetFBConfigs.reply.property_list", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_glx_GetFBConfigs_reply_property_list_item, { "property_list", "x11.glx.GetFBConfigs.reply.property_list", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_glx_CreatePixmap_screen, { "screen", "x11.glx.CreatePixmap.screen", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_glx_CreatePixmap_fbconfig, { "fbconfig", "x11.glx.CreatePixmap.fbconfig", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_CreatePixmap_fbconfig, { "fbconfig", "x11.glx.CreatePixmap.fbconfig", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_glx_CreatePixmap_pixmap, { "pixmap", "x11.glx.CreatePixmap.pixmap", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_glx_CreatePixmap_glx_pixmap, { "glx_pixmap", "x11.glx.CreatePixmap.glx_pixmap", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_glx_CreatePixmap_num_attribs, { "num_attribs", "x11.glx.CreatePixmap.num_attribs", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -1986,13 +2031,11 @@
{ &hf_x11_glx_CreatePixmap_attribs_item, { "attribs", "x11.glx.CreatePixmap.attribs", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_glx_DestroyPixmap_glx_pixmap, { "glx_pixmap", "x11.glx.DestroyPixmap.glx_pixmap", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_glx_CreateNewContext_context, { "context", "x11.glx.CreateNewContext.context", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_glx_CreateNewContext_fbconfig, { "fbconfig", "x11.glx.CreateNewContext.fbconfig", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_CreateNewContext_fbconfig, { "fbconfig", "x11.glx.CreateNewContext.fbconfig", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_glx_CreateNewContext_screen, { "screen", "x11.glx.CreateNewContext.screen", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_glx_CreateNewContext_render_type, { "render_type", "x11.glx.CreateNewContext.render_type", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_glx_CreateNewContext_share_list, { "share_list", "x11.glx.CreateNewContext.share_list", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_CreateNewContext_share_list, { "share_list", "x11.glx.CreateNewContext.share_list", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_glx_CreateNewContext_is_direct, { "is_direct", "x11.glx.CreateNewContext.is_direct", FT_BOOLEAN, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_glx_CreateNewContext_reserved1, { "reserved1", "x11.glx.CreateNewContext.reserved1", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_glx_CreateNewContext_reserved2, { "reserved2", "x11.glx.CreateNewContext.reserved2", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_glx_QueryContext_context, { "context", "x11.glx.QueryContext.context", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_glx_QueryContext_reply_num_attribs, { "num_attribs", "x11.glx.QueryContext.reply.num_attribs", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_glx_QueryContext_reply_attribs, { "attribs", "x11.glx.QueryContext.reply.attribs", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
@@ -2025,6 +2068,32 @@
{ &hf_x11_glx_CreateWindow_attribs, { "attribs", "x11.glx.CreateWindow.attribs", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_glx_CreateWindow_attribs_item, { "attribs", "x11.glx.CreateWindow.attribs", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_glx_DeleteWindow_glxwindow, { "glxwindow", "x11.glx.DeleteWindow.glxwindow", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_SetClientInfoARB_major_version, { "major_version", "x11.glx.SetClientInfoARB.major_version", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_SetClientInfoARB_minor_version, { "minor_version", "x11.glx.SetClientInfoARB.minor_version", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_SetClientInfoARB_num_versions, { "num_versions", "x11.glx.SetClientInfoARB.num_versions", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_SetClientInfoARB_gl_str_len, { "gl_str_len", "x11.glx.SetClientInfoARB.gl_str_len", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_SetClientInfoARB_glx_str_len, { "glx_str_len", "x11.glx.SetClientInfoARB.glx_str_len", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_SetClientInfoARB_gl_versions, { "gl_versions", "x11.glx.SetClientInfoARB.gl_versions", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_SetClientInfoARB_gl_versions_item, { "gl_versions", "x11.glx.SetClientInfoARB.gl_versions", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_SetClientInfoARB_gl_extension_string, { "gl_extension_string", "x11.glx.SetClientInfoARB.gl_extension_string", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_SetClientInfoARB_glx_extension_string, { "glx_extension_string", "x11.glx.SetClientInfoARB.glx_extension_string", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_CreateContextAttribsARB_context, { "context", "x11.glx.CreateContextAttribsARB.context", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_CreateContextAttribsARB_fbconfig, { "fbconfig", "x11.glx.CreateContextAttribsARB.fbconfig", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_CreateContextAttribsARB_screen, { "screen", "x11.glx.CreateContextAttribsARB.screen", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_CreateContextAttribsARB_share_list, { "share_list", "x11.glx.CreateContextAttribsARB.share_list", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_CreateContextAttribsARB_is_direct, { "is_direct", "x11.glx.CreateContextAttribsARB.is_direct", FT_BOOLEAN, BASE_NONE, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_CreateContextAttribsARB_num_attribs, { "num_attribs", "x11.glx.CreateContextAttribsARB.num_attribs", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_CreateContextAttribsARB_attribs, { "attribs", "x11.glx.CreateContextAttribsARB.attribs", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_CreateContextAttribsARB_attribs_item, { "attribs", "x11.glx.CreateContextAttribsARB.attribs", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_SetClientInfo2ARB_major_version, { "major_version", "x11.glx.SetClientInfo2ARB.major_version", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_SetClientInfo2ARB_minor_version, { "minor_version", "x11.glx.SetClientInfo2ARB.minor_version", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_SetClientInfo2ARB_num_versions, { "num_versions", "x11.glx.SetClientInfo2ARB.num_versions", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_SetClientInfo2ARB_gl_str_len, { "gl_str_len", "x11.glx.SetClientInfo2ARB.gl_str_len", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_SetClientInfo2ARB_glx_str_len, { "glx_str_len", "x11.glx.SetClientInfo2ARB.glx_str_len", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_SetClientInfo2ARB_gl_versions, { "gl_versions", "x11.glx.SetClientInfo2ARB.gl_versions", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_SetClientInfo2ARB_gl_versions_item, { "gl_versions", "x11.glx.SetClientInfo2ARB.gl_versions", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_SetClientInfo2ARB_gl_extension_string, { "gl_extension_string", "x11.glx.SetClientInfo2ARB.gl_extension_string", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
+{ &hf_x11_glx_SetClientInfo2ARB_glx_extension_string, { "glx_extension_string", "x11.glx.SetClientInfo2ARB.glx_extension_string", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_glx_NewList_context_tag, { "context_tag", "x11.glx.NewList.context_tag", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_glx_NewList_list, { "list", "x11.glx.NewList.list", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_glx_NewList_mode, { "mode", "x11.glx.NewList.mode", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -2421,11 +2490,11 @@
{ &hf_x11_randr_SetScreenConfig_rotation_mask_Reflect_Y, { "Reflect_Y", "x11.randr.SetScreenConfig.rotation.Reflect_Y", FT_BOOLEAN, 16, NULL, 1 << 5, NULL, HFILL }},
{ &hf_x11_randr_SetScreenConfig_rotation, { "rotation", "x11.randr.SetScreenConfig.rotation", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_SetScreenConfig_rate, { "rate", "x11.randr.SetScreenConfig.rate", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_randr_SetScreenConfig_reply_status, { "status", "x11.randr.SetScreenConfig.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SetConfig), 0, NULL, HFILL }},
+{ &hf_x11_randr_SetScreenConfig_reply_status, { "status", "x11.randr.SetScreenConfig.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_randr_SetConfig), 0, NULL, HFILL }},
{ &hf_x11_randr_SetScreenConfig_reply_new_timestamp, { "new_timestamp", "x11.randr.SetScreenConfig.reply.new_timestamp", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_SetScreenConfig_reply_config_timestamp, { "config_timestamp", "x11.randr.SetScreenConfig.reply.config_timestamp", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_SetScreenConfig_reply_root, { "root", "x11.randr.SetScreenConfig.reply.root", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_randr_SetScreenConfig_reply_subpixel_order, { "subpixel_order", "x11.randr.SetScreenConfig.reply.subpixel_order", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_SubPixel), 0, NULL, HFILL }},
+{ &hf_x11_randr_SetScreenConfig_reply_subpixel_order, { "subpixel_order", "x11.randr.SetScreenConfig.reply.subpixel_order", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_render_SubPixel), 0, NULL, HFILL }},
{ &hf_x11_randr_SelectInput_window, { "window", "x11.randr.SelectInput.window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_SelectInput_enable_mask_ScreenChange, { "ScreenChange", "x11.randr.SelectInput.enable.ScreenChange", FT_BOOLEAN, 16, NULL, 1 << 0, NULL, HFILL }},
{ &hf_x11_randr_SelectInput_enable_mask_CrtcChange, { "CrtcChange", "x11.randr.SelectInput.enable.CrtcChange", FT_BOOLEAN, 16, NULL, 1 << 1, NULL, HFILL }},
@@ -2511,13 +2580,13 @@
{ &hf_x11_randr_GetScreenResources_reply_names, { "names", "x11.randr.GetScreenResources.reply.names", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_GetOutputInfo_output, { "output", "x11.randr.GetOutputInfo.output", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_GetOutputInfo_config_timestamp, { "config_timestamp", "x11.randr.GetOutputInfo.config_timestamp", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_randr_GetOutputInfo_reply_status, { "status", "x11.randr.GetOutputInfo.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SetConfig), 0, NULL, HFILL }},
+{ &hf_x11_randr_GetOutputInfo_reply_status, { "status", "x11.randr.GetOutputInfo.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_randr_SetConfig), 0, NULL, HFILL }},
{ &hf_x11_randr_GetOutputInfo_reply_timestamp, { "timestamp", "x11.randr.GetOutputInfo.reply.timestamp", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_GetOutputInfo_reply_crtc, { "crtc", "x11.randr.GetOutputInfo.reply.crtc", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_GetOutputInfo_reply_mm_width, { "mm_width", "x11.randr.GetOutputInfo.reply.mm_width", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_GetOutputInfo_reply_mm_height, { "mm_height", "x11.randr.GetOutputInfo.reply.mm_height", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_randr_GetOutputInfo_reply_connection, { "connection", "x11.randr.GetOutputInfo.reply.connection", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_Connection), 0, NULL, HFILL }},
-{ &hf_x11_randr_GetOutputInfo_reply_subpixel_order, { "subpixel_order", "x11.randr.GetOutputInfo.reply.subpixel_order", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SubPixel), 0, NULL, HFILL }},
+{ &hf_x11_randr_GetOutputInfo_reply_connection, { "connection", "x11.randr.GetOutputInfo.reply.connection", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_randr_Connection), 0, NULL, HFILL }},
+{ &hf_x11_randr_GetOutputInfo_reply_subpixel_order, { "subpixel_order", "x11.randr.GetOutputInfo.reply.subpixel_order", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_render_SubPixel), 0, NULL, HFILL }},
{ &hf_x11_randr_GetOutputInfo_reply_num_crtcs, { "num_crtcs", "x11.randr.GetOutputInfo.reply.num_crtcs", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_GetOutputInfo_reply_num_modes, { "num_modes", "x11.randr.GetOutputInfo.reply.num_modes", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_GetOutputInfo_reply_num_preferred, { "num_preferred", "x11.randr.GetOutputInfo.reply.num_preferred", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -2551,20 +2620,20 @@
{ &hf_x11_randr_ChangeOutputProperty_property, { "property", "x11.randr.ChangeOutputProperty.property", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_ChangeOutputProperty_type, { "type", "x11.randr.ChangeOutputProperty.type", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_ChangeOutputProperty_format, { "format", "x11.randr.ChangeOutputProperty.format", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_randr_ChangeOutputProperty_mode, { "mode", "x11.randr.ChangeOutputProperty.mode", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_PropMode), 0, NULL, HFILL }},
+{ &hf_x11_randr_ChangeOutputProperty_mode, { "mode", "x11.randr.ChangeOutputProperty.mode", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xproto_PropMode), 0, NULL, HFILL }},
{ &hf_x11_randr_ChangeOutputProperty_num_units, { "num_units", "x11.randr.ChangeOutputProperty.num_units", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_ChangeOutputProperty_data, { "data", "x11.randr.ChangeOutputProperty.data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_DeleteOutputProperty_output, { "output", "x11.randr.DeleteOutputProperty.output", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_DeleteOutputProperty_property, { "property", "x11.randr.DeleteOutputProperty.property", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_GetOutputProperty_output, { "output", "x11.randr.GetOutputProperty.output", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_GetOutputProperty_property, { "property", "x11.randr.GetOutputProperty.property", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_randr_GetOutputProperty_type, { "type", "x11.randr.GetOutputProperty.type", FT_UINT32, BASE_HEX, VALS(x11_enum_GetPropertyType), 0, NULL, HFILL }},
+{ &hf_x11_randr_GetOutputProperty_type, { "type", "x11.randr.GetOutputProperty.type", FT_UINT32, BASE_HEX, VALS(x11_enum_xproto_GetPropertyType), 0, NULL, HFILL }},
{ &hf_x11_randr_GetOutputProperty_long_offset, { "long_offset", "x11.randr.GetOutputProperty.long_offset", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_GetOutputProperty_long_length, { "long_length", "x11.randr.GetOutputProperty.long_length", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_GetOutputProperty_delete, { "delete", "x11.randr.GetOutputProperty.delete", FT_BOOLEAN, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_GetOutputProperty_pending, { "pending", "x11.randr.GetOutputProperty.pending", FT_BOOLEAN, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_GetOutputProperty_reply_format, { "format", "x11.randr.GetOutputProperty.reply.format", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_randr_GetOutputProperty_reply_type, { "type", "x11.randr.GetOutputProperty.reply.type", FT_UINT32, BASE_HEX, VALS(x11_enum_Atom), 0, NULL, HFILL }},
+{ &hf_x11_randr_GetOutputProperty_reply_type, { "type", "x11.randr.GetOutputProperty.reply.type", FT_UINT32, BASE_HEX, VALS(x11_enum_xproto_Atom), 0, NULL, HFILL }},
{ &hf_x11_randr_GetOutputProperty_reply_bytes_after, { "bytes_after", "x11.randr.GetOutputProperty.reply.bytes_after", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_GetOutputProperty_reply_num_items, { "num_items", "x11.randr.GetOutputProperty.reply.num_items", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_GetOutputProperty_reply_data, { "data", "x11.randr.GetOutputProperty.reply.data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
@@ -2579,7 +2648,7 @@
{ &hf_x11_randr_DeleteOutputMode_mode, { "mode", "x11.randr.DeleteOutputMode.mode", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_GetCrtcInfo_crtc, { "crtc", "x11.randr.GetCrtcInfo.crtc", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_GetCrtcInfo_config_timestamp, { "config_timestamp", "x11.randr.GetCrtcInfo.config_timestamp", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_randr_GetCrtcInfo_reply_status, { "status", "x11.randr.GetCrtcInfo.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SetConfig), 0, NULL, HFILL }},
+{ &hf_x11_randr_GetCrtcInfo_reply_status, { "status", "x11.randr.GetCrtcInfo.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_randr_SetConfig), 0, NULL, HFILL }},
{ &hf_x11_randr_GetCrtcInfo_reply_timestamp, { "timestamp", "x11.randr.GetCrtcInfo.reply.timestamp", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_GetCrtcInfo_reply_x, { "x", "x11.randr.GetCrtcInfo.reply.x", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_GetCrtcInfo_reply_y, { "y", "x11.randr.GetCrtcInfo.reply.y", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
@@ -2621,7 +2690,7 @@
{ &hf_x11_randr_SetCrtcConfig_rotation, { "rotation", "x11.randr.SetCrtcConfig.rotation", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_SetCrtcConfig_outputs, { "outputs", "x11.randr.SetCrtcConfig.outputs", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_SetCrtcConfig_outputs_item, { "outputs", "x11.randr.SetCrtcConfig.outputs", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_randr_SetCrtcConfig_reply_status, { "status", "x11.randr.SetCrtcConfig.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SetConfig), 0, NULL, HFILL }},
+{ &hf_x11_randr_SetCrtcConfig_reply_status, { "status", "x11.randr.SetCrtcConfig.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_randr_SetConfig), 0, NULL, HFILL }},
{ &hf_x11_randr_SetCrtcConfig_reply_timestamp, { "timestamp", "x11.randr.SetCrtcConfig.reply.timestamp", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_GetCrtcGammaSize_crtc, { "crtc", "x11.randr.GetCrtcGammaSize.crtc", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_GetCrtcGammaSize_reply_size, { "size", "x11.randr.GetCrtcGammaSize.reply.size", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -2676,7 +2745,7 @@
{ &hf_x11_randr_GetCrtcTransform_reply_current_params, { "current_params", "x11.randr.GetCrtcTransform.reply.current_params", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_GetCrtcTransform_reply_current_params_item, { "current_params", "x11.randr.GetCrtcTransform.reply.current_params", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_GetPanning_crtc, { "crtc", "x11.randr.GetPanning.crtc", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_randr_GetPanning_reply_status, { "status", "x11.randr.GetPanning.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SetConfig), 0, NULL, HFILL }},
+{ &hf_x11_randr_GetPanning_reply_status, { "status", "x11.randr.GetPanning.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_randr_SetConfig), 0, NULL, HFILL }},
{ &hf_x11_randr_GetPanning_reply_timestamp, { "timestamp", "x11.randr.GetPanning.reply.timestamp", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_GetPanning_reply_left, { "left", "x11.randr.GetPanning.reply.left", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_GetPanning_reply_top, { "top", "x11.randr.GetPanning.reply.top", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -2704,7 +2773,7 @@
{ &hf_x11_randr_SetPanning_border_top, { "border_top", "x11.randr.SetPanning.border_top", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_SetPanning_border_right, { "border_right", "x11.randr.SetPanning.border_right", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_SetPanning_border_bottom, { "border_bottom", "x11.randr.SetPanning.border_bottom", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_randr_SetPanning_reply_status, { "status", "x11.randr.SetPanning.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SetConfig), 0, NULL, HFILL }},
+{ &hf_x11_randr_SetPanning_reply_status, { "status", "x11.randr.SetPanning.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_randr_SetConfig), 0, NULL, HFILL }},
{ &hf_x11_randr_SetPanning_reply_timestamp, { "timestamp", "x11.randr.SetPanning.reply.timestamp", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_SetOutputPrimary_window, { "window", "x11.randr.SetOutputPrimary.window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_SetOutputPrimary_output, { "output", "x11.randr.SetOutputPrimary.output", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
@@ -2722,7 +2791,7 @@
{ &hf_x11_randr_ScreenChangeNotify_root, { "root", "x11.randr.ScreenChangeNotify.root", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_ScreenChangeNotify_request_window, { "request_window", "x11.randr.ScreenChangeNotify.request_window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_ScreenChangeNotify_sizeID, { "sizeID", "x11.randr.ScreenChangeNotify.sizeID", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_randr_ScreenChangeNotify_subpixel_order, { "subpixel_order", "x11.randr.ScreenChangeNotify.subpixel_order", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_SubPixel), 0, NULL, HFILL }},
+{ &hf_x11_randr_ScreenChangeNotify_subpixel_order, { "subpixel_order", "x11.randr.ScreenChangeNotify.subpixel_order", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_render_SubPixel), 0, NULL, HFILL }},
{ &hf_x11_randr_ScreenChangeNotify_width, { "width", "x11.randr.ScreenChangeNotify.width", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_ScreenChangeNotify_height, { "height", "x11.randr.ScreenChangeNotify.height", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_ScreenChangeNotify_mwidth, { "mwidth", "x11.randr.ScreenChangeNotify.mwidth", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -2757,19 +2826,19 @@
{ &hf_x11_struct_OutputChange_rotation_mask_Reflect_X, { "Reflect_X", "x11.struct.OutputChange.rotation.Reflect_X", FT_BOOLEAN, 16, NULL, 1 << 4, NULL, HFILL }},
{ &hf_x11_struct_OutputChange_rotation_mask_Reflect_Y, { "Reflect_Y", "x11.struct.OutputChange.rotation.Reflect_Y", FT_BOOLEAN, 16, NULL, 1 << 5, NULL, HFILL }},
{ &hf_x11_struct_OutputChange_rotation, { "rotation", "x11.struct.OutputChange.rotation", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_OutputChange_connection, { "connection", "x11.struct.OutputChange.connection", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_Connection), 0, NULL, HFILL }},
-{ &hf_x11_struct_OutputChange_subpixel_order, { "subpixel_order", "x11.struct.OutputChange.subpixel_order", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SubPixel), 0, NULL, HFILL }},
+{ &hf_x11_struct_OutputChange_connection, { "connection", "x11.struct.OutputChange.connection", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_randr_Connection), 0, NULL, HFILL }},
+{ &hf_x11_struct_OutputChange_subpixel_order, { "subpixel_order", "x11.struct.OutputChange.subpixel_order", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_render_SubPixel), 0, NULL, HFILL }},
{ &hf_x11_struct_OutputProperty, { "OutputProperty", "x11.struct.OutputProperty", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_OutputProperty_window, { "window", "x11.struct.OutputProperty.window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_OutputProperty_output, { "output", "x11.struct.OutputProperty.output", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_OutputProperty_atom, { "atom", "x11.struct.OutputProperty.atom", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_OutputProperty_timestamp, { "timestamp", "x11.struct.OutputProperty.timestamp", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_OutputProperty_status, { "status", "x11.struct.OutputProperty.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_Property), 0, NULL, HFILL }},
+{ &hf_x11_struct_OutputProperty_status, { "status", "x11.struct.OutputProperty.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xproto_Property), 0, NULL, HFILL }},
{ &hf_x11_union_NotifyData, { "NotifyData", "x11.union.NotifyData", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_union_NotifyData_cc, { "cc", "x11.union.NotifyData.cc", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_union_NotifyData_oc, { "oc", "x11.union.NotifyData.oc", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_union_NotifyData_op, { "op", "x11.union.NotifyData.op", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_randr_Notify_subCode, { "subCode", "x11.randr.Notify.subCode", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_Notify), 0, NULL, HFILL }},
+{ &hf_x11_randr_Notify_subCode, { "subCode", "x11.randr.Notify.subCode", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_randr_Notify), 0, NULL, HFILL }},
{ &hf_x11_randr_Notify_u, { "u", "x11.randr.Notify.u", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_randr_extension_minor, { "extension-minor", "x11.extension-minor", FT_UINT8, BASE_DEC, VALS(randr_extension_minor), 0, "minor opcode", HFILL }},
@@ -2851,7 +2920,7 @@
{ &hf_x11_render_QueryPictFormats_reply_formats_item, { "formats", "x11.render.QueryPictFormats.reply.formats", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_QueryPictFormats_reply_screens, { "screens", "x11.render.QueryPictFormats.reply.screens", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_QueryPictFormats_reply_subpixels, { "subpixels", "x11.render.QueryPictFormats.reply.subpixels", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_render_QueryPictFormats_reply_subpixels_item, { "subpixels", "x11.render.QueryPictFormats.reply.subpixels", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_SubPixel), 0, NULL, HFILL }},
+{ &hf_x11_render_QueryPictFormats_reply_subpixels_item, { "subpixels", "x11.render.QueryPictFormats.reply.subpixels", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_render_SubPixel), 0, NULL, HFILL }},
{ &hf_x11_render_QueryPictIndexValues_format, { "format", "x11.render.QueryPictIndexValues.format", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_QueryPictIndexValues_reply_num_values, { "num_values", "x11.render.QueryPictIndexValues.reply.num_values", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_QueryPictIndexValues_reply_values, { "values", "x11.render.QueryPictIndexValues.reply.values", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
@@ -2866,9 +2935,9 @@
{ &hf_x11_render_SetPictureClipRectangles_rectangles, { "rectangles", "x11.render.SetPictureClipRectangles.rectangles", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_SetPictureClipRectangles_rectangles_item, { "rectangles", "x11.render.SetPictureClipRectangles.rectangles", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_FreePicture_picture, { "picture", "x11.render.FreePicture.picture", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_render_Composite_op, { "op", "x11.render.Composite.op", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_PictOp), 0, NULL, HFILL }},
+{ &hf_x11_render_Composite_op, { "op", "x11.render.Composite.op", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_render_PictOp), 0, NULL, HFILL }},
{ &hf_x11_render_Composite_src, { "src", "x11.render.Composite.src", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_render_Composite_mask, { "mask", "x11.render.Composite.mask", FT_UINT32, BASE_HEX, VALS(x11_enum_Picture), 0, NULL, HFILL }},
+{ &hf_x11_render_Composite_mask, { "mask", "x11.render.Composite.mask", FT_UINT32, BASE_HEX, VALS(x11_enum_render_Picture), 0, NULL, HFILL }},
{ &hf_x11_render_Composite_dst, { "dst", "x11.render.Composite.dst", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_Composite_src_x, { "src_x", "x11.render.Composite.src_x", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_Composite_src_y, { "src_y", "x11.render.Composite.src_y", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
@@ -2878,7 +2947,7 @@
{ &hf_x11_render_Composite_dst_y, { "dst_y", "x11.render.Composite.dst_y", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_Composite_width, { "width", "x11.render.Composite.width", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_Composite_height, { "height", "x11.render.Composite.height", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_render_Trapezoids_op, { "op", "x11.render.Trapezoids.op", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_PictOp), 0, NULL, HFILL }},
+{ &hf_x11_render_Trapezoids_op, { "op", "x11.render.Trapezoids.op", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_render_PictOp), 0, NULL, HFILL }},
{ &hf_x11_render_Trapezoids_src, { "src", "x11.render.Trapezoids.src", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_Trapezoids_dst, { "dst", "x11.render.Trapezoids.dst", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_Trapezoids_mask_format, { "mask_format", "x11.render.Trapezoids.mask_format", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
@@ -2886,7 +2955,7 @@
{ &hf_x11_render_Trapezoids_src_y, { "src_y", "x11.render.Trapezoids.src_y", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_Trapezoids_traps, { "traps", "x11.render.Trapezoids.traps", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_Trapezoids_traps_item, { "traps", "x11.render.Trapezoids.traps", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_render_Triangles_op, { "op", "x11.render.Triangles.op", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_PictOp), 0, NULL, HFILL }},
+{ &hf_x11_render_Triangles_op, { "op", "x11.render.Triangles.op", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_render_PictOp), 0, NULL, HFILL }},
{ &hf_x11_render_Triangles_src, { "src", "x11.render.Triangles.src", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_Triangles_dst, { "dst", "x11.render.Triangles.dst", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_Triangles_mask_format, { "mask_format", "x11.render.Triangles.mask_format", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
@@ -2894,7 +2963,7 @@
{ &hf_x11_render_Triangles_src_y, { "src_y", "x11.render.Triangles.src_y", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_Triangles_triangles, { "triangles", "x11.render.Triangles.triangles", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_Triangles_triangles_item, { "triangles", "x11.render.Triangles.triangles", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_render_TriStrip_op, { "op", "x11.render.TriStrip.op", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_PictOp), 0, NULL, HFILL }},
+{ &hf_x11_render_TriStrip_op, { "op", "x11.render.TriStrip.op", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_render_PictOp), 0, NULL, HFILL }},
{ &hf_x11_render_TriStrip_src, { "src", "x11.render.TriStrip.src", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_TriStrip_dst, { "dst", "x11.render.TriStrip.dst", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_TriStrip_mask_format, { "mask_format", "x11.render.TriStrip.mask_format", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
@@ -2902,7 +2971,7 @@
{ &hf_x11_render_TriStrip_src_y, { "src_y", "x11.render.TriStrip.src_y", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_TriStrip_points, { "points", "x11.render.TriStrip.points", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_TriStrip_points_item, { "points", "x11.render.TriStrip.points", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_render_TriFan_op, { "op", "x11.render.TriFan.op", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_PictOp), 0, NULL, HFILL }},
+{ &hf_x11_render_TriFan_op, { "op", "x11.render.TriFan.op", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_render_PictOp), 0, NULL, HFILL }},
{ &hf_x11_render_TriFan_src, { "src", "x11.render.TriFan.src", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_TriFan_dst, { "dst", "x11.render.TriFan.dst", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_TriFan_mask_format, { "mask_format", "x11.render.TriFan.mask_format", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
@@ -2925,7 +2994,7 @@
{ &hf_x11_render_FreeGlyphs_glyphset, { "glyphset", "x11.render.FreeGlyphs.glyphset", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_FreeGlyphs_glyphs, { "glyphs", "x11.render.FreeGlyphs.glyphs", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_FreeGlyphs_glyphs_item, { "glyphs", "x11.render.FreeGlyphs.glyphs", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_render_CompositeGlyphs8_op, { "op", "x11.render.CompositeGlyphs8.op", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_PictOp), 0, NULL, HFILL }},
+{ &hf_x11_render_CompositeGlyphs8_op, { "op", "x11.render.CompositeGlyphs8.op", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_render_PictOp), 0, NULL, HFILL }},
{ &hf_x11_render_CompositeGlyphs8_src, { "src", "x11.render.CompositeGlyphs8.src", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_CompositeGlyphs8_dst, { "dst", "x11.render.CompositeGlyphs8.dst", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_CompositeGlyphs8_mask_format, { "mask_format", "x11.render.CompositeGlyphs8.mask_format", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
@@ -2933,7 +3002,7 @@
{ &hf_x11_render_CompositeGlyphs8_src_x, { "src_x", "x11.render.CompositeGlyphs8.src_x", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_CompositeGlyphs8_src_y, { "src_y", "x11.render.CompositeGlyphs8.src_y", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_CompositeGlyphs8_glyphcmds, { "glyphcmds", "x11.render.CompositeGlyphs8.glyphcmds", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_render_CompositeGlyphs16_op, { "op", "x11.render.CompositeGlyphs16.op", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_PictOp), 0, NULL, HFILL }},
+{ &hf_x11_render_CompositeGlyphs16_op, { "op", "x11.render.CompositeGlyphs16.op", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_render_PictOp), 0, NULL, HFILL }},
{ &hf_x11_render_CompositeGlyphs16_src, { "src", "x11.render.CompositeGlyphs16.src", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_CompositeGlyphs16_dst, { "dst", "x11.render.CompositeGlyphs16.dst", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_CompositeGlyphs16_mask_format, { "mask_format", "x11.render.CompositeGlyphs16.mask_format", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
@@ -2941,7 +3010,7 @@
{ &hf_x11_render_CompositeGlyphs16_src_x, { "src_x", "x11.render.CompositeGlyphs16.src_x", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_CompositeGlyphs16_src_y, { "src_y", "x11.render.CompositeGlyphs16.src_y", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_CompositeGlyphs16_glyphcmds, { "glyphcmds", "x11.render.CompositeGlyphs16.glyphcmds", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_render_CompositeGlyphs32_op, { "op", "x11.render.CompositeGlyphs32.op", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_PictOp), 0, NULL, HFILL }},
+{ &hf_x11_render_CompositeGlyphs32_op, { "op", "x11.render.CompositeGlyphs32.op", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_render_PictOp), 0, NULL, HFILL }},
{ &hf_x11_render_CompositeGlyphs32_src, { "src", "x11.render.CompositeGlyphs32.src", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_CompositeGlyphs32_dst, { "dst", "x11.render.CompositeGlyphs32.dst", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_CompositeGlyphs32_mask_format, { "mask_format", "x11.render.CompositeGlyphs32.mask_format", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
@@ -2949,7 +3018,7 @@
{ &hf_x11_render_CompositeGlyphs32_src_x, { "src_x", "x11.render.CompositeGlyphs32.src_x", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_CompositeGlyphs32_src_y, { "src_y", "x11.render.CompositeGlyphs32.src_y", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_CompositeGlyphs32_glyphcmds, { "glyphcmds", "x11.render.CompositeGlyphs32.glyphcmds", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_render_FillRectangles_op, { "op", "x11.render.FillRectangles.op", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_PictOp), 0, NULL, HFILL }},
+{ &hf_x11_render_FillRectangles_op, { "op", "x11.render.FillRectangles.op", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_render_PictOp), 0, NULL, HFILL }},
{ &hf_x11_render_FillRectangles_dst, { "dst", "x11.render.FillRectangles.dst", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_FillRectangles_color, { "color", "x11.render.FillRectangles.color", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_render_FillRectangles_rects, { "rects", "x11.render.FillRectangles.rects", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
@@ -3065,7 +3134,7 @@
{ &hf_x11_screensaver_Notify_forced, { "forced", "x11.screensaver.Notify.forced", FT_BOOLEAN, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_screensaver_extension_minor, { "extension-minor", "x11.extension-minor", FT_UINT8, BASE_DEC, VALS(screensaver_extension_minor), 0, "minor opcode", HFILL }},
-{ &hf_x11_shape_Notify_shape_kind, { "shape_kind", "x11.shape.Notify.shape_kind", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SK), 0, NULL, HFILL }},
+{ &hf_x11_shape_Notify_shape_kind, { "shape_kind", "x11.shape.Notify.shape_kind", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_shape_SK), 0, NULL, HFILL }},
{ &hf_x11_shape_Notify_affected_window, { "affected_window", "x11.shape.Notify.affected_window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_shape_Notify_extents_x, { "extents_x", "x11.shape.Notify.extents_x", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_shape_Notify_extents_y, { "extents_y", "x11.shape.Notify.extents_y", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
@@ -3075,28 +3144,28 @@
{ &hf_x11_shape_Notify_shaped, { "shaped", "x11.shape.Notify.shaped", FT_BOOLEAN, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_shape_QueryVersion_reply_major_version, { "major_version", "x11.shape.QueryVersion.reply.major_version", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_shape_QueryVersion_reply_minor_version, { "minor_version", "x11.shape.QueryVersion.reply.minor_version", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_shape_Rectangles_operation, { "operation", "x11.shape.Rectangles.operation", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SO), 0, NULL, HFILL }},
-{ &hf_x11_shape_Rectangles_destination_kind, { "destination_kind", "x11.shape.Rectangles.destination_kind", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SK), 0, NULL, HFILL }},
-{ &hf_x11_shape_Rectangles_ordering, { "ordering", "x11.shape.Rectangles.ordering", FT_UINT8, BASE_DEC, VALS(x11_enum_ClipOrdering), 0, NULL, HFILL }},
+{ &hf_x11_shape_Rectangles_operation, { "operation", "x11.shape.Rectangles.operation", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_shape_SO), 0, NULL, HFILL }},
+{ &hf_x11_shape_Rectangles_destination_kind, { "destination_kind", "x11.shape.Rectangles.destination_kind", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_shape_SK), 0, NULL, HFILL }},
+{ &hf_x11_shape_Rectangles_ordering, { "ordering", "x11.shape.Rectangles.ordering", FT_UINT8, BASE_DEC, VALS(x11_enum_xproto_ClipOrdering), 0, NULL, HFILL }},
{ &hf_x11_shape_Rectangles_destination_window, { "destination_window", "x11.shape.Rectangles.destination_window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_shape_Rectangles_x_offset, { "x_offset", "x11.shape.Rectangles.x_offset", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_shape_Rectangles_y_offset, { "y_offset", "x11.shape.Rectangles.y_offset", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_shape_Rectangles_rectangles, { "rectangles", "x11.shape.Rectangles.rectangles", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_shape_Rectangles_rectangles_item, { "rectangles", "x11.shape.Rectangles.rectangles", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_shape_Mask_operation, { "operation", "x11.shape.Mask.operation", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SO), 0, NULL, HFILL }},
-{ &hf_x11_shape_Mask_destination_kind, { "destination_kind", "x11.shape.Mask.destination_kind", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SK), 0, NULL, HFILL }},
+{ &hf_x11_shape_Mask_operation, { "operation", "x11.shape.Mask.operation", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_shape_SO), 0, NULL, HFILL }},
+{ &hf_x11_shape_Mask_destination_kind, { "destination_kind", "x11.shape.Mask.destination_kind", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_shape_SK), 0, NULL, HFILL }},
{ &hf_x11_shape_Mask_destination_window, { "destination_window", "x11.shape.Mask.destination_window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_shape_Mask_x_offset, { "x_offset", "x11.shape.Mask.x_offset", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_shape_Mask_y_offset, { "y_offset", "x11.shape.Mask.y_offset", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_shape_Mask_source_bitmap, { "source_bitmap", "x11.shape.Mask.source_bitmap", FT_UINT32, BASE_HEX, VALS(x11_enum_Pixmap), 0, NULL, HFILL }},
-{ &hf_x11_shape_Combine_operation, { "operation", "x11.shape.Combine.operation", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SO), 0, NULL, HFILL }},
-{ &hf_x11_shape_Combine_destination_kind, { "destination_kind", "x11.shape.Combine.destination_kind", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SK), 0, NULL, HFILL }},
-{ &hf_x11_shape_Combine_source_kind, { "source_kind", "x11.shape.Combine.source_kind", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SK), 0, NULL, HFILL }},
+{ &hf_x11_shape_Mask_source_bitmap, { "source_bitmap", "x11.shape.Mask.source_bitmap", FT_UINT32, BASE_HEX, VALS(x11_enum_xproto_Pixmap), 0, NULL, HFILL }},
+{ &hf_x11_shape_Combine_operation, { "operation", "x11.shape.Combine.operation", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_shape_SO), 0, NULL, HFILL }},
+{ &hf_x11_shape_Combine_destination_kind, { "destination_kind", "x11.shape.Combine.destination_kind", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_shape_SK), 0, NULL, HFILL }},
+{ &hf_x11_shape_Combine_source_kind, { "source_kind", "x11.shape.Combine.source_kind", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_shape_SK), 0, NULL, HFILL }},
{ &hf_x11_shape_Combine_destination_window, { "destination_window", "x11.shape.Combine.destination_window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_shape_Combine_x_offset, { "x_offset", "x11.shape.Combine.x_offset", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_shape_Combine_y_offset, { "y_offset", "x11.shape.Combine.y_offset", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_shape_Combine_source_window, { "source_window", "x11.shape.Combine.source_window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_shape_Offset_destination_kind, { "destination_kind", "x11.shape.Offset.destination_kind", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SK), 0, NULL, HFILL }},
+{ &hf_x11_shape_Offset_destination_kind, { "destination_kind", "x11.shape.Offset.destination_kind", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_shape_SK), 0, NULL, HFILL }},
{ &hf_x11_shape_Offset_destination_window, { "destination_window", "x11.shape.Offset.destination_window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_shape_Offset_x_offset, { "x_offset", "x11.shape.Offset.x_offset", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_shape_Offset_y_offset, { "y_offset", "x11.shape.Offset.y_offset", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
@@ -3116,8 +3185,8 @@
{ &hf_x11_shape_InputSelected_destination_window, { "destination_window", "x11.shape.InputSelected.destination_window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_shape_InputSelected_reply_enabled, { "enabled", "x11.shape.InputSelected.reply.enabled", FT_BOOLEAN, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_shape_GetRectangles_window, { "window", "x11.shape.GetRectangles.window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_shape_GetRectangles_source_kind, { "source_kind", "x11.shape.GetRectangles.source_kind", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SK), 0, NULL, HFILL }},
-{ &hf_x11_shape_GetRectangles_reply_ordering, { "ordering", "x11.shape.GetRectangles.reply.ordering", FT_UINT8, BASE_DEC, VALS(x11_enum_ClipOrdering), 0, NULL, HFILL }},
+{ &hf_x11_shape_GetRectangles_source_kind, { "source_kind", "x11.shape.GetRectangles.source_kind", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_shape_SK), 0, NULL, HFILL }},
+{ &hf_x11_shape_GetRectangles_reply_ordering, { "ordering", "x11.shape.GetRectangles.reply.ordering", FT_UINT8, BASE_DEC, VALS(x11_enum_xproto_ClipOrdering), 0, NULL, HFILL }},
{ &hf_x11_shape_GetRectangles_reply_rectangles_len, { "rectangles_len", "x11.shape.GetRectangles.reply.rectangles_len", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_shape_GetRectangles_reply_rectangles, { "rectangles", "x11.shape.GetRectangles.reply.rectangles", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_shape_GetRectangles_reply_rectangles_item, { "rectangles", "x11.shape.GetRectangles.reply.rectangles", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
@@ -3184,9 +3253,9 @@
{ &hf_x11_struct_SYSTEMCOUNTER_name, { "name", "x11.struct.SYSTEMCOUNTER.name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_TRIGGER, { "TRIGGER", "x11.struct.TRIGGER", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_TRIGGER_counter, { "counter", "x11.struct.TRIGGER.counter", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_TRIGGER_wait_type, { "wait_type", "x11.struct.TRIGGER.wait_type", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_VALUETYPE), 0, NULL, HFILL }},
+{ &hf_x11_struct_TRIGGER_wait_type, { "wait_type", "x11.struct.TRIGGER.wait_type", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_sync_VALUETYPE), 0, NULL, HFILL }},
{ &hf_x11_struct_TRIGGER_wait_value, { "wait_value", "x11.struct.TRIGGER.wait_value", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_TRIGGER_test_type, { "test_type", "x11.struct.TRIGGER.test_type", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_TESTTYPE), 0, NULL, HFILL }},
+{ &hf_x11_struct_TRIGGER_test_type, { "test_type", "x11.struct.TRIGGER.test_type", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_sync_TESTTYPE), 0, NULL, HFILL }},
{ &hf_x11_struct_WAITCONDITION, { "WAITCONDITION", "x11.struct.WAITCONDITION", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_WAITCONDITION_trigger, { "trigger", "x11.struct.WAITCONDITION.trigger", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_WAITCONDITION_event_threshold, { "event_threshold", "x11.struct.WAITCONDITION.event_threshold", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
@@ -3214,7 +3283,7 @@
{ &hf_x11_sync_QueryAlarm_reply_trigger, { "trigger", "x11.sync.QueryAlarm.reply.trigger", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_sync_QueryAlarm_reply_delta, { "delta", "x11.sync.QueryAlarm.reply.delta", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_sync_QueryAlarm_reply_events, { "events", "x11.sync.QueryAlarm.reply.events", FT_BOOLEAN, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_sync_QueryAlarm_reply_state, { "state", "x11.sync.QueryAlarm.reply.state", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_ALARMSTATE), 0, NULL, HFILL }},
+{ &hf_x11_sync_QueryAlarm_reply_state, { "state", "x11.sync.QueryAlarm.reply.state", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_sync_ALARMSTATE), 0, NULL, HFILL }},
{ &hf_x11_sync_SetPriority_id, { "id", "x11.sync.SetPriority.id", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_sync_SetPriority_priority, { "priority", "x11.sync.SetPriority.priority", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_sync_GetPriority_id, { "id", "x11.sync.GetPriority.id", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -3241,7 +3310,7 @@
{ &hf_x11_sync_AlarmNotify_counter_value, { "counter_value", "x11.sync.AlarmNotify.counter_value", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_sync_AlarmNotify_alarm_value, { "alarm_value", "x11.sync.AlarmNotify.alarm_value", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_sync_AlarmNotify_timestamp, { "timestamp", "x11.sync.AlarmNotify.timestamp", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_sync_AlarmNotify_state, { "state", "x11.sync.AlarmNotify.state", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_ALARMSTATE), 0, NULL, HFILL }},
+{ &hf_x11_sync_AlarmNotify_state, { "state", "x11.sync.AlarmNotify.state", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_sync_ALARMSTATE), 0, NULL, HFILL }},
{ &hf_x11_sync_extension_minor, { "extension-minor", "x11.extension-minor", FT_UINT8, BASE_DEC, VALS(sync_extension_minor), 0, "minor opcode", HFILL }},
{ &hf_x11_xc_misc_GetVersion_client_major_version, { "client_major_version", "x11.xc_misc.GetVersion.client_major_version", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -3344,20 +3413,19 @@
{ &hf_x11_xf86vidmode_GetModeLine_reply_vsyncstart, { "vsyncstart", "x11.xf86vidmode.GetModeLine.reply.vsyncstart", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_GetModeLine_reply_vsyncend, { "vsyncend", "x11.xf86vidmode.GetModeLine.reply.vsyncend", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_GetModeLine_reply_vtotal, { "vtotal", "x11.xf86vidmode.GetModeLine.reply.vtotal", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_HsyncPositive, { "HsyncPositive", "x11.xf86vidmode.GetModeLine.reply.flags.HsyncPositive", FT_BOOLEAN, 32, NULL, 1 << 0, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_HsyncNegative, { "HsyncNegative", "x11.xf86vidmode.GetModeLine.reply.flags.HsyncNegative", FT_BOOLEAN, 32, NULL, 1 << 1, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_VsyncPositive, { "VsyncPositive", "x11.xf86vidmode.GetModeLine.reply.flags.VsyncPositive", FT_BOOLEAN, 32, NULL, 1 << 2, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_VsyncNegative, { "VsyncNegative", "x11.xf86vidmode.GetModeLine.reply.flags.VsyncNegative", FT_BOOLEAN, 32, NULL, 1 << 3, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Positive_HSync, { "Positive_HSync", "x11.xf86vidmode.GetModeLine.reply.flags.Positive_HSync", FT_BOOLEAN, 32, NULL, 1 << 0, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Negative_HSync, { "Negative_HSync", "x11.xf86vidmode.GetModeLine.reply.flags.Negative_HSync", FT_BOOLEAN, 32, NULL, 1 << 1, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Positive_VSync, { "Positive_VSync", "x11.xf86vidmode.GetModeLine.reply.flags.Positive_VSync", FT_BOOLEAN, 32, NULL, 1 << 2, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Negative_VSync, { "Negative_VSync", "x11.xf86vidmode.GetModeLine.reply.flags.Negative_VSync", FT_BOOLEAN, 32, NULL, 1 << 3, NULL, HFILL }},
{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Interlace, { "Interlace", "x11.xf86vidmode.GetModeLine.reply.flags.Interlace", FT_BOOLEAN, 32, NULL, 1 << 4, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_DoubleScan, { "DoubleScan", "x11.xf86vidmode.GetModeLine.reply.flags.DoubleScan", FT_BOOLEAN, 32, NULL, 1 << 5, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Csync, { "Csync", "x11.xf86vidmode.GetModeLine.reply.flags.Csync", FT_BOOLEAN, 32, NULL, 1 << 6, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_CsyncPositive, { "CsyncPositive", "x11.xf86vidmode.GetModeLine.reply.flags.CsyncPositive", FT_BOOLEAN, 32, NULL, 1 << 7, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_CsyncNegative, { "CsyncNegative", "x11.xf86vidmode.GetModeLine.reply.flags.CsyncNegative", FT_BOOLEAN, 32, NULL, 1 << 8, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_HskewPresent, { "HskewPresent", "x11.xf86vidmode.GetModeLine.reply.flags.HskewPresent", FT_BOOLEAN, 32, NULL, 1 << 9, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Bcast, { "Bcast", "x11.xf86vidmode.GetModeLine.reply.flags.Bcast", FT_BOOLEAN, 32, NULL, 1 << 10, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_PixelMultiplex, { "PixelMultiplex", "x11.xf86vidmode.GetModeLine.reply.flags.PixelMultiplex", FT_BOOLEAN, 32, NULL, 1 << 11, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_DoubleClock, { "DoubleClock", "x11.xf86vidmode.GetModeLine.reply.flags.DoubleClock", FT_BOOLEAN, 32, NULL, 1 << 12, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_HalveClock, { "HalveClock", "x11.xf86vidmode.GetModeLine.reply.flags.HalveClock", FT_BOOLEAN, 32, NULL, 1 << 13, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Composite_Sync, { "Composite_Sync", "x11.xf86vidmode.GetModeLine.reply.flags.Composite_Sync", FT_BOOLEAN, 32, NULL, 1 << 5, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Positive_CSync, { "Positive_CSync", "x11.xf86vidmode.GetModeLine.reply.flags.Positive_CSync", FT_BOOLEAN, 32, NULL, 1 << 6, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Negative_CSync, { "Negative_CSync", "x11.xf86vidmode.GetModeLine.reply.flags.Negative_CSync", FT_BOOLEAN, 32, NULL, 1 << 7, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_HSkew, { "HSkew", "x11.xf86vidmode.GetModeLine.reply.flags.HSkew", FT_BOOLEAN, 32, NULL, 1 << 8, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Broadcast, { "Broadcast", "x11.xf86vidmode.GetModeLine.reply.flags.Broadcast", FT_BOOLEAN, 32, NULL, 1 << 9, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Pixmux, { "Pixmux", "x11.xf86vidmode.GetModeLine.reply.flags.Pixmux", FT_BOOLEAN, 32, NULL, 1 << 10, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Double_Clock, { "Double_Clock", "x11.xf86vidmode.GetModeLine.reply.flags.Double_Clock", FT_BOOLEAN, 32, NULL, 1 << 11, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_GetModeLine_reply_flags_mask_Half_Clock, { "Half_Clock", "x11.xf86vidmode.GetModeLine.reply.flags.Half_Clock", FT_BOOLEAN, 32, NULL, 1 << 12, NULL, HFILL }},
{ &hf_x11_xf86vidmode_GetModeLine_reply_flags, { "flags", "x11.xf86vidmode.GetModeLine.reply.flags", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_GetModeLine_reply_privsize, { "privsize", "x11.xf86vidmode.GetModeLine.reply.privsize", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_GetModeLine_reply_private, { "private", "x11.xf86vidmode.GetModeLine.reply.private", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -3371,20 +3439,19 @@
{ &hf_x11_xf86vidmode_ModModeLine_vsyncstart, { "vsyncstart", "x11.xf86vidmode.ModModeLine.vsyncstart", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_ModModeLine_vsyncend, { "vsyncend", "x11.xf86vidmode.ModModeLine.vsyncend", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_ModModeLine_vtotal, { "vtotal", "x11.xf86vidmode.ModModeLine.vtotal", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_HsyncPositive, { "HsyncPositive", "x11.xf86vidmode.ModModeLine.flags.HsyncPositive", FT_BOOLEAN, 32, NULL, 1 << 0, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_HsyncNegative, { "HsyncNegative", "x11.xf86vidmode.ModModeLine.flags.HsyncNegative", FT_BOOLEAN, 32, NULL, 1 << 1, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_VsyncPositive, { "VsyncPositive", "x11.xf86vidmode.ModModeLine.flags.VsyncPositive", FT_BOOLEAN, 32, NULL, 1 << 2, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_VsyncNegative, { "VsyncNegative", "x11.xf86vidmode.ModModeLine.flags.VsyncNegative", FT_BOOLEAN, 32, NULL, 1 << 3, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_Positive_HSync, { "Positive_HSync", "x11.xf86vidmode.ModModeLine.flags.Positive_HSync", FT_BOOLEAN, 32, NULL, 1 << 0, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_Negative_HSync, { "Negative_HSync", "x11.xf86vidmode.ModModeLine.flags.Negative_HSync", FT_BOOLEAN, 32, NULL, 1 << 1, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_Positive_VSync, { "Positive_VSync", "x11.xf86vidmode.ModModeLine.flags.Positive_VSync", FT_BOOLEAN, 32, NULL, 1 << 2, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_Negative_VSync, { "Negative_VSync", "x11.xf86vidmode.ModModeLine.flags.Negative_VSync", FT_BOOLEAN, 32, NULL, 1 << 3, NULL, HFILL }},
{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_Interlace, { "Interlace", "x11.xf86vidmode.ModModeLine.flags.Interlace", FT_BOOLEAN, 32, NULL, 1 << 4, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_DoubleScan, { "DoubleScan", "x11.xf86vidmode.ModModeLine.flags.DoubleScan", FT_BOOLEAN, 32, NULL, 1 << 5, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_Csync, { "Csync", "x11.xf86vidmode.ModModeLine.flags.Csync", FT_BOOLEAN, 32, NULL, 1 << 6, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_CsyncPositive, { "CsyncPositive", "x11.xf86vidmode.ModModeLine.flags.CsyncPositive", FT_BOOLEAN, 32, NULL, 1 << 7, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_CsyncNegative, { "CsyncNegative", "x11.xf86vidmode.ModModeLine.flags.CsyncNegative", FT_BOOLEAN, 32, NULL, 1 << 8, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_HskewPresent, { "HskewPresent", "x11.xf86vidmode.ModModeLine.flags.HskewPresent", FT_BOOLEAN, 32, NULL, 1 << 9, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_Bcast, { "Bcast", "x11.xf86vidmode.ModModeLine.flags.Bcast", FT_BOOLEAN, 32, NULL, 1 << 10, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_PixelMultiplex, { "PixelMultiplex", "x11.xf86vidmode.ModModeLine.flags.PixelMultiplex", FT_BOOLEAN, 32, NULL, 1 << 11, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_DoubleClock, { "DoubleClock", "x11.xf86vidmode.ModModeLine.flags.DoubleClock", FT_BOOLEAN, 32, NULL, 1 << 12, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_HalveClock, { "HalveClock", "x11.xf86vidmode.ModModeLine.flags.HalveClock", FT_BOOLEAN, 32, NULL, 1 << 13, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_Composite_Sync, { "Composite_Sync", "x11.xf86vidmode.ModModeLine.flags.Composite_Sync", FT_BOOLEAN, 32, NULL, 1 << 5, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_Positive_CSync, { "Positive_CSync", "x11.xf86vidmode.ModModeLine.flags.Positive_CSync", FT_BOOLEAN, 32, NULL, 1 << 6, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_Negative_CSync, { "Negative_CSync", "x11.xf86vidmode.ModModeLine.flags.Negative_CSync", FT_BOOLEAN, 32, NULL, 1 << 7, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_HSkew, { "HSkew", "x11.xf86vidmode.ModModeLine.flags.HSkew", FT_BOOLEAN, 32, NULL, 1 << 8, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_Broadcast, { "Broadcast", "x11.xf86vidmode.ModModeLine.flags.Broadcast", FT_BOOLEAN, 32, NULL, 1 << 9, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_Pixmux, { "Pixmux", "x11.xf86vidmode.ModModeLine.flags.Pixmux", FT_BOOLEAN, 32, NULL, 1 << 10, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_Double_Clock, { "Double_Clock", "x11.xf86vidmode.ModModeLine.flags.Double_Clock", FT_BOOLEAN, 32, NULL, 1 << 11, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_ModModeLine_flags_mask_Half_Clock, { "Half_Clock", "x11.xf86vidmode.ModModeLine.flags.Half_Clock", FT_BOOLEAN, 32, NULL, 1 << 12, NULL, HFILL }},
{ &hf_x11_xf86vidmode_ModModeLine_flags, { "flags", "x11.xf86vidmode.ModModeLine.flags", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_ModModeLine_privsize, { "privsize", "x11.xf86vidmode.ModModeLine.privsize", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_ModModeLine_private, { "private", "x11.xf86vidmode.ModModeLine.private", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -3419,20 +3486,19 @@
{ &hf_x11_xf86vidmode_AddModeLine_vsyncstart, { "vsyncstart", "x11.xf86vidmode.AddModeLine.vsyncstart", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_AddModeLine_vsyncend, { "vsyncend", "x11.xf86vidmode.AddModeLine.vsyncend", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_AddModeLine_vtotal, { "vtotal", "x11.xf86vidmode.AddModeLine.vtotal", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_HsyncPositive, { "HsyncPositive", "x11.xf86vidmode.AddModeLine.flags.HsyncPositive", FT_BOOLEAN, 32, NULL, 1 << 0, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_HsyncNegative, { "HsyncNegative", "x11.xf86vidmode.AddModeLine.flags.HsyncNegative", FT_BOOLEAN, 32, NULL, 1 << 1, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_VsyncPositive, { "VsyncPositive", "x11.xf86vidmode.AddModeLine.flags.VsyncPositive", FT_BOOLEAN, 32, NULL, 1 << 2, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_VsyncNegative, { "VsyncNegative", "x11.xf86vidmode.AddModeLine.flags.VsyncNegative", FT_BOOLEAN, 32, NULL, 1 << 3, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_Positive_HSync, { "Positive_HSync", "x11.xf86vidmode.AddModeLine.flags.Positive_HSync", FT_BOOLEAN, 32, NULL, 1 << 0, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_Negative_HSync, { "Negative_HSync", "x11.xf86vidmode.AddModeLine.flags.Negative_HSync", FT_BOOLEAN, 32, NULL, 1 << 1, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_Positive_VSync, { "Positive_VSync", "x11.xf86vidmode.AddModeLine.flags.Positive_VSync", FT_BOOLEAN, 32, NULL, 1 << 2, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_Negative_VSync, { "Negative_VSync", "x11.xf86vidmode.AddModeLine.flags.Negative_VSync", FT_BOOLEAN, 32, NULL, 1 << 3, NULL, HFILL }},
{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_Interlace, { "Interlace", "x11.xf86vidmode.AddModeLine.flags.Interlace", FT_BOOLEAN, 32, NULL, 1 << 4, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_DoubleScan, { "DoubleScan", "x11.xf86vidmode.AddModeLine.flags.DoubleScan", FT_BOOLEAN, 32, NULL, 1 << 5, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_Csync, { "Csync", "x11.xf86vidmode.AddModeLine.flags.Csync", FT_BOOLEAN, 32, NULL, 1 << 6, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_CsyncPositive, { "CsyncPositive", "x11.xf86vidmode.AddModeLine.flags.CsyncPositive", FT_BOOLEAN, 32, NULL, 1 << 7, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_CsyncNegative, { "CsyncNegative", "x11.xf86vidmode.AddModeLine.flags.CsyncNegative", FT_BOOLEAN, 32, NULL, 1 << 8, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_HskewPresent, { "HskewPresent", "x11.xf86vidmode.AddModeLine.flags.HskewPresent", FT_BOOLEAN, 32, NULL, 1 << 9, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_Bcast, { "Bcast", "x11.xf86vidmode.AddModeLine.flags.Bcast", FT_BOOLEAN, 32, NULL, 1 << 10, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_PixelMultiplex, { "PixelMultiplex", "x11.xf86vidmode.AddModeLine.flags.PixelMultiplex", FT_BOOLEAN, 32, NULL, 1 << 11, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_DoubleClock, { "DoubleClock", "x11.xf86vidmode.AddModeLine.flags.DoubleClock", FT_BOOLEAN, 32, NULL, 1 << 12, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_HalveClock, { "HalveClock", "x11.xf86vidmode.AddModeLine.flags.HalveClock", FT_BOOLEAN, 32, NULL, 1 << 13, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_Composite_Sync, { "Composite_Sync", "x11.xf86vidmode.AddModeLine.flags.Composite_Sync", FT_BOOLEAN, 32, NULL, 1 << 5, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_Positive_CSync, { "Positive_CSync", "x11.xf86vidmode.AddModeLine.flags.Positive_CSync", FT_BOOLEAN, 32, NULL, 1 << 6, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_Negative_CSync, { "Negative_CSync", "x11.xf86vidmode.AddModeLine.flags.Negative_CSync", FT_BOOLEAN, 32, NULL, 1 << 7, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_HSkew, { "HSkew", "x11.xf86vidmode.AddModeLine.flags.HSkew", FT_BOOLEAN, 32, NULL, 1 << 8, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_Broadcast, { "Broadcast", "x11.xf86vidmode.AddModeLine.flags.Broadcast", FT_BOOLEAN, 32, NULL, 1 << 9, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_Pixmux, { "Pixmux", "x11.xf86vidmode.AddModeLine.flags.Pixmux", FT_BOOLEAN, 32, NULL, 1 << 10, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_Double_Clock, { "Double_Clock", "x11.xf86vidmode.AddModeLine.flags.Double_Clock", FT_BOOLEAN, 32, NULL, 1 << 11, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_AddModeLine_flags_mask_Half_Clock, { "Half_Clock", "x11.xf86vidmode.AddModeLine.flags.Half_Clock", FT_BOOLEAN, 32, NULL, 1 << 12, NULL, HFILL }},
{ &hf_x11_xf86vidmode_AddModeLine_flags, { "flags", "x11.xf86vidmode.AddModeLine.flags", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_AddModeLine_privsize, { "privsize", "x11.xf86vidmode.AddModeLine.privsize", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_AddModeLine_after_dotclock, { "after_dotclock", "x11.xf86vidmode.AddModeLine.after_dotclock", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -3445,20 +3511,19 @@
{ &hf_x11_xf86vidmode_AddModeLine_after_vsyncstart, { "after_vsyncstart", "x11.xf86vidmode.AddModeLine.after_vsyncstart", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_AddModeLine_after_vsyncend, { "after_vsyncend", "x11.xf86vidmode.AddModeLine.after_vsyncend", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_AddModeLine_after_vtotal, { "after_vtotal", "x11.xf86vidmode.AddModeLine.after_vtotal", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_HsyncPositive, { "HsyncPositive", "x11.xf86vidmode.AddModeLine.after_flags.HsyncPositive", FT_BOOLEAN, 32, NULL, 1 << 0, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_HsyncNegative, { "HsyncNegative", "x11.xf86vidmode.AddModeLine.after_flags.HsyncNegative", FT_BOOLEAN, 32, NULL, 1 << 1, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_VsyncPositive, { "VsyncPositive", "x11.xf86vidmode.AddModeLine.after_flags.VsyncPositive", FT_BOOLEAN, 32, NULL, 1 << 2, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_VsyncNegative, { "VsyncNegative", "x11.xf86vidmode.AddModeLine.after_flags.VsyncNegative", FT_BOOLEAN, 32, NULL, 1 << 3, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Positive_HSync, { "Positive_HSync", "x11.xf86vidmode.AddModeLine.after_flags.Positive_HSync", FT_BOOLEAN, 32, NULL, 1 << 0, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Negative_HSync, { "Negative_HSync", "x11.xf86vidmode.AddModeLine.after_flags.Negative_HSync", FT_BOOLEAN, 32, NULL, 1 << 1, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Positive_VSync, { "Positive_VSync", "x11.xf86vidmode.AddModeLine.after_flags.Positive_VSync", FT_BOOLEAN, 32, NULL, 1 << 2, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Negative_VSync, { "Negative_VSync", "x11.xf86vidmode.AddModeLine.after_flags.Negative_VSync", FT_BOOLEAN, 32, NULL, 1 << 3, NULL, HFILL }},
{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Interlace, { "Interlace", "x11.xf86vidmode.AddModeLine.after_flags.Interlace", FT_BOOLEAN, 32, NULL, 1 << 4, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_DoubleScan, { "DoubleScan", "x11.xf86vidmode.AddModeLine.after_flags.DoubleScan", FT_BOOLEAN, 32, NULL, 1 << 5, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Csync, { "Csync", "x11.xf86vidmode.AddModeLine.after_flags.Csync", FT_BOOLEAN, 32, NULL, 1 << 6, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_CsyncPositive, { "CsyncPositive", "x11.xf86vidmode.AddModeLine.after_flags.CsyncPositive", FT_BOOLEAN, 32, NULL, 1 << 7, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_CsyncNegative, { "CsyncNegative", "x11.xf86vidmode.AddModeLine.after_flags.CsyncNegative", FT_BOOLEAN, 32, NULL, 1 << 8, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_HskewPresent, { "HskewPresent", "x11.xf86vidmode.AddModeLine.after_flags.HskewPresent", FT_BOOLEAN, 32, NULL, 1 << 9, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Bcast, { "Bcast", "x11.xf86vidmode.AddModeLine.after_flags.Bcast", FT_BOOLEAN, 32, NULL, 1 << 10, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_PixelMultiplex, { "PixelMultiplex", "x11.xf86vidmode.AddModeLine.after_flags.PixelMultiplex", FT_BOOLEAN, 32, NULL, 1 << 11, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_DoubleClock, { "DoubleClock", "x11.xf86vidmode.AddModeLine.after_flags.DoubleClock", FT_BOOLEAN, 32, NULL, 1 << 12, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_HalveClock, { "HalveClock", "x11.xf86vidmode.AddModeLine.after_flags.HalveClock", FT_BOOLEAN, 32, NULL, 1 << 13, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Composite_Sync, { "Composite_Sync", "x11.xf86vidmode.AddModeLine.after_flags.Composite_Sync", FT_BOOLEAN, 32, NULL, 1 << 5, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Positive_CSync, { "Positive_CSync", "x11.xf86vidmode.AddModeLine.after_flags.Positive_CSync", FT_BOOLEAN, 32, NULL, 1 << 6, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Negative_CSync, { "Negative_CSync", "x11.xf86vidmode.AddModeLine.after_flags.Negative_CSync", FT_BOOLEAN, 32, NULL, 1 << 7, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_HSkew, { "HSkew", "x11.xf86vidmode.AddModeLine.after_flags.HSkew", FT_BOOLEAN, 32, NULL, 1 << 8, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Broadcast, { "Broadcast", "x11.xf86vidmode.AddModeLine.after_flags.Broadcast", FT_BOOLEAN, 32, NULL, 1 << 9, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Pixmux, { "Pixmux", "x11.xf86vidmode.AddModeLine.after_flags.Pixmux", FT_BOOLEAN, 32, NULL, 1 << 10, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Double_Clock, { "Double_Clock", "x11.xf86vidmode.AddModeLine.after_flags.Double_Clock", FT_BOOLEAN, 32, NULL, 1 << 11, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_AddModeLine_after_flags_mask_Half_Clock, { "Half_Clock", "x11.xf86vidmode.AddModeLine.after_flags.Half_Clock", FT_BOOLEAN, 32, NULL, 1 << 12, NULL, HFILL }},
{ &hf_x11_xf86vidmode_AddModeLine_after_flags, { "after_flags", "x11.xf86vidmode.AddModeLine.after_flags", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_AddModeLine_private, { "private", "x11.xf86vidmode.AddModeLine.private", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_DeleteModeLine_screen, { "screen", "x11.xf86vidmode.DeleteModeLine.screen", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -3472,20 +3537,19 @@
{ &hf_x11_xf86vidmode_DeleteModeLine_vsyncstart, { "vsyncstart", "x11.xf86vidmode.DeleteModeLine.vsyncstart", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_DeleteModeLine_vsyncend, { "vsyncend", "x11.xf86vidmode.DeleteModeLine.vsyncend", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_DeleteModeLine_vtotal, { "vtotal", "x11.xf86vidmode.DeleteModeLine.vtotal", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_HsyncPositive, { "HsyncPositive", "x11.xf86vidmode.DeleteModeLine.flags.HsyncPositive", FT_BOOLEAN, 32, NULL, 1 << 0, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_HsyncNegative, { "HsyncNegative", "x11.xf86vidmode.DeleteModeLine.flags.HsyncNegative", FT_BOOLEAN, 32, NULL, 1 << 1, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_VsyncPositive, { "VsyncPositive", "x11.xf86vidmode.DeleteModeLine.flags.VsyncPositive", FT_BOOLEAN, 32, NULL, 1 << 2, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_VsyncNegative, { "VsyncNegative", "x11.xf86vidmode.DeleteModeLine.flags.VsyncNegative", FT_BOOLEAN, 32, NULL, 1 << 3, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Positive_HSync, { "Positive_HSync", "x11.xf86vidmode.DeleteModeLine.flags.Positive_HSync", FT_BOOLEAN, 32, NULL, 1 << 0, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Negative_HSync, { "Negative_HSync", "x11.xf86vidmode.DeleteModeLine.flags.Negative_HSync", FT_BOOLEAN, 32, NULL, 1 << 1, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Positive_VSync, { "Positive_VSync", "x11.xf86vidmode.DeleteModeLine.flags.Positive_VSync", FT_BOOLEAN, 32, NULL, 1 << 2, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Negative_VSync, { "Negative_VSync", "x11.xf86vidmode.DeleteModeLine.flags.Negative_VSync", FT_BOOLEAN, 32, NULL, 1 << 3, NULL, HFILL }},
{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Interlace, { "Interlace", "x11.xf86vidmode.DeleteModeLine.flags.Interlace", FT_BOOLEAN, 32, NULL, 1 << 4, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_DoubleScan, { "DoubleScan", "x11.xf86vidmode.DeleteModeLine.flags.DoubleScan", FT_BOOLEAN, 32, NULL, 1 << 5, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Csync, { "Csync", "x11.xf86vidmode.DeleteModeLine.flags.Csync", FT_BOOLEAN, 32, NULL, 1 << 6, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_CsyncPositive, { "CsyncPositive", "x11.xf86vidmode.DeleteModeLine.flags.CsyncPositive", FT_BOOLEAN, 32, NULL, 1 << 7, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_CsyncNegative, { "CsyncNegative", "x11.xf86vidmode.DeleteModeLine.flags.CsyncNegative", FT_BOOLEAN, 32, NULL, 1 << 8, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_HskewPresent, { "HskewPresent", "x11.xf86vidmode.DeleteModeLine.flags.HskewPresent", FT_BOOLEAN, 32, NULL, 1 << 9, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Bcast, { "Bcast", "x11.xf86vidmode.DeleteModeLine.flags.Bcast", FT_BOOLEAN, 32, NULL, 1 << 10, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_PixelMultiplex, { "PixelMultiplex", "x11.xf86vidmode.DeleteModeLine.flags.PixelMultiplex", FT_BOOLEAN, 32, NULL, 1 << 11, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_DoubleClock, { "DoubleClock", "x11.xf86vidmode.DeleteModeLine.flags.DoubleClock", FT_BOOLEAN, 32, NULL, 1 << 12, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_HalveClock, { "HalveClock", "x11.xf86vidmode.DeleteModeLine.flags.HalveClock", FT_BOOLEAN, 32, NULL, 1 << 13, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Composite_Sync, { "Composite_Sync", "x11.xf86vidmode.DeleteModeLine.flags.Composite_Sync", FT_BOOLEAN, 32, NULL, 1 << 5, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Positive_CSync, { "Positive_CSync", "x11.xf86vidmode.DeleteModeLine.flags.Positive_CSync", FT_BOOLEAN, 32, NULL, 1 << 6, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Negative_CSync, { "Negative_CSync", "x11.xf86vidmode.DeleteModeLine.flags.Negative_CSync", FT_BOOLEAN, 32, NULL, 1 << 7, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_HSkew, { "HSkew", "x11.xf86vidmode.DeleteModeLine.flags.HSkew", FT_BOOLEAN, 32, NULL, 1 << 8, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Broadcast, { "Broadcast", "x11.xf86vidmode.DeleteModeLine.flags.Broadcast", FT_BOOLEAN, 32, NULL, 1 << 9, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Pixmux, { "Pixmux", "x11.xf86vidmode.DeleteModeLine.flags.Pixmux", FT_BOOLEAN, 32, NULL, 1 << 10, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Double_Clock, { "Double_Clock", "x11.xf86vidmode.DeleteModeLine.flags.Double_Clock", FT_BOOLEAN, 32, NULL, 1 << 11, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_DeleteModeLine_flags_mask_Half_Clock, { "Half_Clock", "x11.xf86vidmode.DeleteModeLine.flags.Half_Clock", FT_BOOLEAN, 32, NULL, 1 << 12, NULL, HFILL }},
{ &hf_x11_xf86vidmode_DeleteModeLine_flags, { "flags", "x11.xf86vidmode.DeleteModeLine.flags", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_DeleteModeLine_privsize, { "privsize", "x11.xf86vidmode.DeleteModeLine.privsize", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_DeleteModeLine_private, { "private", "x11.xf86vidmode.DeleteModeLine.private", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -3500,20 +3564,19 @@
{ &hf_x11_xf86vidmode_ValidateModeLine_vsyncstart, { "vsyncstart", "x11.xf86vidmode.ValidateModeLine.vsyncstart", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_ValidateModeLine_vsyncend, { "vsyncend", "x11.xf86vidmode.ValidateModeLine.vsyncend", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_ValidateModeLine_vtotal, { "vtotal", "x11.xf86vidmode.ValidateModeLine.vtotal", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_HsyncPositive, { "HsyncPositive", "x11.xf86vidmode.ValidateModeLine.flags.HsyncPositive", FT_BOOLEAN, 32, NULL, 1 << 0, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_HsyncNegative, { "HsyncNegative", "x11.xf86vidmode.ValidateModeLine.flags.HsyncNegative", FT_BOOLEAN, 32, NULL, 1 << 1, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_VsyncPositive, { "VsyncPositive", "x11.xf86vidmode.ValidateModeLine.flags.VsyncPositive", FT_BOOLEAN, 32, NULL, 1 << 2, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_VsyncNegative, { "VsyncNegative", "x11.xf86vidmode.ValidateModeLine.flags.VsyncNegative", FT_BOOLEAN, 32, NULL, 1 << 3, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Positive_HSync, { "Positive_HSync", "x11.xf86vidmode.ValidateModeLine.flags.Positive_HSync", FT_BOOLEAN, 32, NULL, 1 << 0, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Negative_HSync, { "Negative_HSync", "x11.xf86vidmode.ValidateModeLine.flags.Negative_HSync", FT_BOOLEAN, 32, NULL, 1 << 1, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Positive_VSync, { "Positive_VSync", "x11.xf86vidmode.ValidateModeLine.flags.Positive_VSync", FT_BOOLEAN, 32, NULL, 1 << 2, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Negative_VSync, { "Negative_VSync", "x11.xf86vidmode.ValidateModeLine.flags.Negative_VSync", FT_BOOLEAN, 32, NULL, 1 << 3, NULL, HFILL }},
{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Interlace, { "Interlace", "x11.xf86vidmode.ValidateModeLine.flags.Interlace", FT_BOOLEAN, 32, NULL, 1 << 4, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_DoubleScan, { "DoubleScan", "x11.xf86vidmode.ValidateModeLine.flags.DoubleScan", FT_BOOLEAN, 32, NULL, 1 << 5, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Csync, { "Csync", "x11.xf86vidmode.ValidateModeLine.flags.Csync", FT_BOOLEAN, 32, NULL, 1 << 6, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_CsyncPositive, { "CsyncPositive", "x11.xf86vidmode.ValidateModeLine.flags.CsyncPositive", FT_BOOLEAN, 32, NULL, 1 << 7, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_CsyncNegative, { "CsyncNegative", "x11.xf86vidmode.ValidateModeLine.flags.CsyncNegative", FT_BOOLEAN, 32, NULL, 1 << 8, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_HskewPresent, { "HskewPresent", "x11.xf86vidmode.ValidateModeLine.flags.HskewPresent", FT_BOOLEAN, 32, NULL, 1 << 9, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Bcast, { "Bcast", "x11.xf86vidmode.ValidateModeLine.flags.Bcast", FT_BOOLEAN, 32, NULL, 1 << 10, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_PixelMultiplex, { "PixelMultiplex", "x11.xf86vidmode.ValidateModeLine.flags.PixelMultiplex", FT_BOOLEAN, 32, NULL, 1 << 11, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_DoubleClock, { "DoubleClock", "x11.xf86vidmode.ValidateModeLine.flags.DoubleClock", FT_BOOLEAN, 32, NULL, 1 << 12, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_HalveClock, { "HalveClock", "x11.xf86vidmode.ValidateModeLine.flags.HalveClock", FT_BOOLEAN, 32, NULL, 1 << 13, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Composite_Sync, { "Composite_Sync", "x11.xf86vidmode.ValidateModeLine.flags.Composite_Sync", FT_BOOLEAN, 32, NULL, 1 << 5, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Positive_CSync, { "Positive_CSync", "x11.xf86vidmode.ValidateModeLine.flags.Positive_CSync", FT_BOOLEAN, 32, NULL, 1 << 6, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Negative_CSync, { "Negative_CSync", "x11.xf86vidmode.ValidateModeLine.flags.Negative_CSync", FT_BOOLEAN, 32, NULL, 1 << 7, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_HSkew, { "HSkew", "x11.xf86vidmode.ValidateModeLine.flags.HSkew", FT_BOOLEAN, 32, NULL, 1 << 8, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Broadcast, { "Broadcast", "x11.xf86vidmode.ValidateModeLine.flags.Broadcast", FT_BOOLEAN, 32, NULL, 1 << 9, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Pixmux, { "Pixmux", "x11.xf86vidmode.ValidateModeLine.flags.Pixmux", FT_BOOLEAN, 32, NULL, 1 << 10, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Double_Clock, { "Double_Clock", "x11.xf86vidmode.ValidateModeLine.flags.Double_Clock", FT_BOOLEAN, 32, NULL, 1 << 11, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_ValidateModeLine_flags_mask_Half_Clock, { "Half_Clock", "x11.xf86vidmode.ValidateModeLine.flags.Half_Clock", FT_BOOLEAN, 32, NULL, 1 << 12, NULL, HFILL }},
{ &hf_x11_xf86vidmode_ValidateModeLine_flags, { "flags", "x11.xf86vidmode.ValidateModeLine.flags", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_ValidateModeLine_privsize, { "privsize", "x11.xf86vidmode.ValidateModeLine.privsize", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_ValidateModeLine_private, { "private", "x11.xf86vidmode.ValidateModeLine.private", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -3529,20 +3592,19 @@
{ &hf_x11_xf86vidmode_SwitchToMode_vsyncstart, { "vsyncstart", "x11.xf86vidmode.SwitchToMode.vsyncstart", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_SwitchToMode_vsyncend, { "vsyncend", "x11.xf86vidmode.SwitchToMode.vsyncend", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_SwitchToMode_vtotal, { "vtotal", "x11.xf86vidmode.SwitchToMode.vtotal", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_HsyncPositive, { "HsyncPositive", "x11.xf86vidmode.SwitchToMode.flags.HsyncPositive", FT_BOOLEAN, 32, NULL, 1 << 0, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_HsyncNegative, { "HsyncNegative", "x11.xf86vidmode.SwitchToMode.flags.HsyncNegative", FT_BOOLEAN, 32, NULL, 1 << 1, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_VsyncPositive, { "VsyncPositive", "x11.xf86vidmode.SwitchToMode.flags.VsyncPositive", FT_BOOLEAN, 32, NULL, 1 << 2, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_VsyncNegative, { "VsyncNegative", "x11.xf86vidmode.SwitchToMode.flags.VsyncNegative", FT_BOOLEAN, 32, NULL, 1 << 3, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Positive_HSync, { "Positive_HSync", "x11.xf86vidmode.SwitchToMode.flags.Positive_HSync", FT_BOOLEAN, 32, NULL, 1 << 0, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Negative_HSync, { "Negative_HSync", "x11.xf86vidmode.SwitchToMode.flags.Negative_HSync", FT_BOOLEAN, 32, NULL, 1 << 1, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Positive_VSync, { "Positive_VSync", "x11.xf86vidmode.SwitchToMode.flags.Positive_VSync", FT_BOOLEAN, 32, NULL, 1 << 2, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Negative_VSync, { "Negative_VSync", "x11.xf86vidmode.SwitchToMode.flags.Negative_VSync", FT_BOOLEAN, 32, NULL, 1 << 3, NULL, HFILL }},
{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Interlace, { "Interlace", "x11.xf86vidmode.SwitchToMode.flags.Interlace", FT_BOOLEAN, 32, NULL, 1 << 4, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_DoubleScan, { "DoubleScan", "x11.xf86vidmode.SwitchToMode.flags.DoubleScan", FT_BOOLEAN, 32, NULL, 1 << 5, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Csync, { "Csync", "x11.xf86vidmode.SwitchToMode.flags.Csync", FT_BOOLEAN, 32, NULL, 1 << 6, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_CsyncPositive, { "CsyncPositive", "x11.xf86vidmode.SwitchToMode.flags.CsyncPositive", FT_BOOLEAN, 32, NULL, 1 << 7, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_CsyncNegative, { "CsyncNegative", "x11.xf86vidmode.SwitchToMode.flags.CsyncNegative", FT_BOOLEAN, 32, NULL, 1 << 8, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_HskewPresent, { "HskewPresent", "x11.xf86vidmode.SwitchToMode.flags.HskewPresent", FT_BOOLEAN, 32, NULL, 1 << 9, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Bcast, { "Bcast", "x11.xf86vidmode.SwitchToMode.flags.Bcast", FT_BOOLEAN, 32, NULL, 1 << 10, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_PixelMultiplex, { "PixelMultiplex", "x11.xf86vidmode.SwitchToMode.flags.PixelMultiplex", FT_BOOLEAN, 32, NULL, 1 << 11, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_DoubleClock, { "DoubleClock", "x11.xf86vidmode.SwitchToMode.flags.DoubleClock", FT_BOOLEAN, 32, NULL, 1 << 12, NULL, HFILL }},
-{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_HalveClock, { "HalveClock", "x11.xf86vidmode.SwitchToMode.flags.HalveClock", FT_BOOLEAN, 32, NULL, 1 << 13, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Composite_Sync, { "Composite_Sync", "x11.xf86vidmode.SwitchToMode.flags.Composite_Sync", FT_BOOLEAN, 32, NULL, 1 << 5, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Positive_CSync, { "Positive_CSync", "x11.xf86vidmode.SwitchToMode.flags.Positive_CSync", FT_BOOLEAN, 32, NULL, 1 << 6, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Negative_CSync, { "Negative_CSync", "x11.xf86vidmode.SwitchToMode.flags.Negative_CSync", FT_BOOLEAN, 32, NULL, 1 << 7, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_HSkew, { "HSkew", "x11.xf86vidmode.SwitchToMode.flags.HSkew", FT_BOOLEAN, 32, NULL, 1 << 8, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Broadcast, { "Broadcast", "x11.xf86vidmode.SwitchToMode.flags.Broadcast", FT_BOOLEAN, 32, NULL, 1 << 9, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Pixmux, { "Pixmux", "x11.xf86vidmode.SwitchToMode.flags.Pixmux", FT_BOOLEAN, 32, NULL, 1 << 10, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Double_Clock, { "Double_Clock", "x11.xf86vidmode.SwitchToMode.flags.Double_Clock", FT_BOOLEAN, 32, NULL, 1 << 11, NULL, HFILL }},
+{ &hf_x11_xf86vidmode_SwitchToMode_flags_mask_Half_Clock, { "Half_Clock", "x11.xf86vidmode.SwitchToMode.flags.Half_Clock", FT_BOOLEAN, 32, NULL, 1 << 12, NULL, HFILL }},
{ &hf_x11_xf86vidmode_SwitchToMode_flags, { "flags", "x11.xf86vidmode.SwitchToMode.flags", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_SwitchToMode_privsize, { "privsize", "x11.xf86vidmode.SwitchToMode.privsize", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xf86vidmode_SwitchToMode_private, { "private", "x11.xf86vidmode.SwitchToMode.private", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -3598,11 +3660,11 @@
{ &hf_x11_xfixes_QueryVersion_client_minor_version, { "client_minor_version", "x11.xfixes.QueryVersion.client_minor_version", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_QueryVersion_reply_major_version, { "major_version", "x11.xfixes.QueryVersion.reply.major_version", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_QueryVersion_reply_minor_version, { "minor_version", "x11.xfixes.QueryVersion.reply.minor_version", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xfixes_ChangeSaveSet_mode, { "mode", "x11.xfixes.ChangeSaveSet.mode", FT_UINT8, BASE_DEC, VALS(x11_enum_SaveSetMode), 0, NULL, HFILL }},
-{ &hf_x11_xfixes_ChangeSaveSet_target, { "target", "x11.xfixes.ChangeSaveSet.target", FT_UINT8, BASE_DEC, VALS(x11_enum_SaveSetTarget), 0, NULL, HFILL }},
-{ &hf_x11_xfixes_ChangeSaveSet_map, { "map", "x11.xfixes.ChangeSaveSet.map", FT_UINT8, BASE_DEC, VALS(x11_enum_SaveSetMapping), 0, NULL, HFILL }},
+{ &hf_x11_xfixes_ChangeSaveSet_mode, { "mode", "x11.xfixes.ChangeSaveSet.mode", FT_UINT8, BASE_DEC, VALS(x11_enum_xfixes_SaveSetMode), 0, NULL, HFILL }},
+{ &hf_x11_xfixes_ChangeSaveSet_target, { "target", "x11.xfixes.ChangeSaveSet.target", FT_UINT8, BASE_DEC, VALS(x11_enum_xfixes_SaveSetTarget), 0, NULL, HFILL }},
+{ &hf_x11_xfixes_ChangeSaveSet_map, { "map", "x11.xfixes.ChangeSaveSet.map", FT_UINT8, BASE_DEC, VALS(x11_enum_xfixes_SaveSetMapping), 0, NULL, HFILL }},
{ &hf_x11_xfixes_ChangeSaveSet_window, { "window", "x11.xfixes.ChangeSaveSet.window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xfixes_SelectionNotify_subtype, { "subtype", "x11.xfixes.SelectionNotify.subtype", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SelectionEvent), 0, NULL, HFILL }},
+{ &hf_x11_xfixes_SelectionNotify_subtype, { "subtype", "x11.xfixes.SelectionNotify.subtype", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xfixes_SelectionEvent), 0, NULL, HFILL }},
{ &hf_x11_xfixes_SelectionNotify_window, { "window", "x11.xfixes.SelectionNotify.window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_SelectionNotify_owner, { "owner", "x11.xfixes.SelectionNotify.owner", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_SelectionNotify_selection, { "selection", "x11.xfixes.SelectionNotify.selection", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
@@ -3614,11 +3676,11 @@
{ &hf_x11_xfixes_SelectSelectionInput_event_mask_mask_SelectionWindowDestroy, { "SelectionWindowDestroy", "x11.xfixes.SelectSelectionInput.event_mask.SelectionWindowDestroy", FT_BOOLEAN, 32, NULL, 1 << 1, NULL, HFILL }},
{ &hf_x11_xfixes_SelectSelectionInput_event_mask_mask_SelectionClientClose, { "SelectionClientClose", "x11.xfixes.SelectSelectionInput.event_mask.SelectionClientClose", FT_BOOLEAN, 32, NULL, 1 << 2, NULL, HFILL }},
{ &hf_x11_xfixes_SelectSelectionInput_event_mask, { "event_mask", "x11.xfixes.SelectSelectionInput.event_mask", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xfixes_CursorNotify_subtype, { "subtype", "x11.xfixes.CursorNotify.subtype", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_CursorNotify), 0, NULL, HFILL }},
+{ &hf_x11_xfixes_CursorNotify_subtype, { "subtype", "x11.xfixes.CursorNotify.subtype", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xfixes_CursorNotify), 0, NULL, HFILL }},
{ &hf_x11_xfixes_CursorNotify_window, { "window", "x11.xfixes.CursorNotify.window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_CursorNotify_cursor_serial, { "cursor_serial", "x11.xfixes.CursorNotify.cursor_serial", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_CursorNotify_timestamp, { "timestamp", "x11.xfixes.CursorNotify.timestamp", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xfixes_CursorNotify_name, { "name", "x11.xfixes.CursorNotify.name", FT_UINT32, BASE_HEX, VALS(x11_enum_Atom), 0, NULL, HFILL }},
+{ &hf_x11_xfixes_CursorNotify_name, { "name", "x11.xfixes.CursorNotify.name", FT_UINT32, BASE_HEX, VALS(x11_enum_xproto_Atom), 0, NULL, HFILL }},
{ &hf_x11_xfixes_SelectCursorInput_window, { "window", "x11.xfixes.SelectCursorInput.window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_SelectCursorInput_event_mask_mask_DisplayCursor, { "DisplayCursor", "x11.xfixes.SelectCursorInput.event_mask.DisplayCursor", FT_BOOLEAN, 32, NULL, 1 << 0, NULL, HFILL }},
{ &hf_x11_xfixes_SelectCursorInput_event_mask, { "event_mask", "x11.xfixes.SelectCursorInput.event_mask", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -3638,7 +3700,7 @@
{ &hf_x11_xfixes_CreateRegionFromBitmap_bitmap, { "bitmap", "x11.xfixes.CreateRegionFromBitmap.bitmap", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_CreateRegionFromWindow_region, { "region", "x11.xfixes.CreateRegionFromWindow.region", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_CreateRegionFromWindow_window, { "window", "x11.xfixes.CreateRegionFromWindow.window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xfixes_CreateRegionFromWindow_kind, { "kind", "x11.xfixes.CreateRegionFromWindow.kind", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SK), 0, NULL, HFILL }},
+{ &hf_x11_xfixes_CreateRegionFromWindow_kind, { "kind", "x11.xfixes.CreateRegionFromWindow.kind", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_shape_SK), 0, NULL, HFILL }},
{ &hf_x11_xfixes_CreateRegionFromGC_region, { "region", "x11.xfixes.CreateRegionFromGC.region", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_CreateRegionFromGC_gc, { "gc", "x11.xfixes.CreateRegionFromGC.gc", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_CreateRegionFromPicture_region, { "region", "x11.xfixes.CreateRegionFromPicture.region", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
@@ -3671,23 +3733,23 @@
{ &hf_x11_xfixes_FetchRegion_reply_rectangles, { "rectangles", "x11.xfixes.FetchRegion.reply.rectangles", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_FetchRegion_reply_rectangles_item, { "rectangles", "x11.xfixes.FetchRegion.reply.rectangles", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_SetGCClipRegion_gc, { "gc", "x11.xfixes.SetGCClipRegion.gc", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xfixes_SetGCClipRegion_region, { "region", "x11.xfixes.SetGCClipRegion.region", FT_UINT32, BASE_HEX, VALS(x11_enum_Region), 0, NULL, HFILL }},
+{ &hf_x11_xfixes_SetGCClipRegion_region, { "region", "x11.xfixes.SetGCClipRegion.region", FT_UINT32, BASE_HEX, VALS(x11_enum_xfixes_Region), 0, NULL, HFILL }},
{ &hf_x11_xfixes_SetGCClipRegion_x_origin, { "x_origin", "x11.xfixes.SetGCClipRegion.x_origin", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_SetGCClipRegion_y_origin, { "y_origin", "x11.xfixes.SetGCClipRegion.y_origin", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_SetWindowShapeRegion_dest, { "dest", "x11.xfixes.SetWindowShapeRegion.dest", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xfixes_SetWindowShapeRegion_dest_kind, { "dest_kind", "x11.xfixes.SetWindowShapeRegion.dest_kind", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SK), 0, NULL, HFILL }},
+{ &hf_x11_xfixes_SetWindowShapeRegion_dest_kind, { "dest_kind", "x11.xfixes.SetWindowShapeRegion.dest_kind", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_shape_SK), 0, NULL, HFILL }},
{ &hf_x11_xfixes_SetWindowShapeRegion_x_offset, { "x_offset", "x11.xfixes.SetWindowShapeRegion.x_offset", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_SetWindowShapeRegion_y_offset, { "y_offset", "x11.xfixes.SetWindowShapeRegion.y_offset", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xfixes_SetWindowShapeRegion_region, { "region", "x11.xfixes.SetWindowShapeRegion.region", FT_UINT32, BASE_HEX, VALS(x11_enum_Region), 0, NULL, HFILL }},
+{ &hf_x11_xfixes_SetWindowShapeRegion_region, { "region", "x11.xfixes.SetWindowShapeRegion.region", FT_UINT32, BASE_HEX, VALS(x11_enum_xfixes_Region), 0, NULL, HFILL }},
{ &hf_x11_xfixes_SetPictureClipRegion_picture, { "picture", "x11.xfixes.SetPictureClipRegion.picture", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xfixes_SetPictureClipRegion_region, { "region", "x11.xfixes.SetPictureClipRegion.region", FT_UINT32, BASE_HEX, VALS(x11_enum_Region), 0, NULL, HFILL }},
+{ &hf_x11_xfixes_SetPictureClipRegion_region, { "region", "x11.xfixes.SetPictureClipRegion.region", FT_UINT32, BASE_HEX, VALS(x11_enum_xfixes_Region), 0, NULL, HFILL }},
{ &hf_x11_xfixes_SetPictureClipRegion_x_origin, { "x_origin", "x11.xfixes.SetPictureClipRegion.x_origin", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_SetPictureClipRegion_y_origin, { "y_origin", "x11.xfixes.SetPictureClipRegion.y_origin", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_SetCursorName_cursor, { "cursor", "x11.xfixes.SetCursorName.cursor", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_SetCursorName_nbytes, { "nbytes", "x11.xfixes.SetCursorName.nbytes", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_SetCursorName_name, { "name", "x11.xfixes.SetCursorName.name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_GetCursorName_cursor, { "cursor", "x11.xfixes.GetCursorName.cursor", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xfixes_GetCursorName_reply_atom, { "atom", "x11.xfixes.GetCursorName.reply.atom", FT_UINT32, BASE_HEX, VALS(x11_enum_Atom), 0, NULL, HFILL }},
+{ &hf_x11_xfixes_GetCursorName_reply_atom, { "atom", "x11.xfixes.GetCursorName.reply.atom", FT_UINT32, BASE_HEX, VALS(x11_enum_xproto_Atom), 0, NULL, HFILL }},
{ &hf_x11_xfixes_GetCursorName_reply_nbytes, { "nbytes", "x11.xfixes.GetCursorName.reply.nbytes", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_GetCursorName_reply_name, { "name", "x11.xfixes.GetCursorName.reply.name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_GetCursorImageAndName_reply_x, { "x", "x11.xfixes.GetCursorImageAndName.reply.x", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
@@ -3697,7 +3759,7 @@
{ &hf_x11_xfixes_GetCursorImageAndName_reply_xhot, { "xhot", "x11.xfixes.GetCursorImageAndName.reply.xhot", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_GetCursorImageAndName_reply_yhot, { "yhot", "x11.xfixes.GetCursorImageAndName.reply.yhot", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_GetCursorImageAndName_reply_cursor_serial, { "cursor_serial", "x11.xfixes.GetCursorImageAndName.reply.cursor_serial", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xfixes_GetCursorImageAndName_reply_cursor_atom, { "cursor_atom", "x11.xfixes.GetCursorImageAndName.reply.cursor_atom", FT_UINT32, BASE_HEX, VALS(x11_enum_Atom), 0, NULL, HFILL }},
+{ &hf_x11_xfixes_GetCursorImageAndName_reply_cursor_atom, { "cursor_atom", "x11.xfixes.GetCursorImageAndName.reply.cursor_atom", FT_UINT32, BASE_HEX, VALS(x11_enum_xproto_Atom), 0, NULL, HFILL }},
{ &hf_x11_xfixes_GetCursorImageAndName_reply_nbytes, { "nbytes", "x11.xfixes.GetCursorImageAndName.reply.nbytes", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_GetCursorImageAndName_reply_name, { "name", "x11.xfixes.GetCursorImageAndName.reply.name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xfixes_GetCursorImageAndName_reply_cursor_image, { "cursor_image", "x11.xfixes.GetCursorImageAndName.reply.cursor_image", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
@@ -3753,12 +3815,12 @@
{ &hf_x11_struct_DeviceInfo_device_type, { "device_type", "x11.struct.DeviceInfo.device_type", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_DeviceInfo_device_id, { "device_id", "x11.struct.DeviceInfo.device_id", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_DeviceInfo_num_class_info, { "num_class_info", "x11.struct.DeviceInfo.num_class_info", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_DeviceInfo_device_use, { "device_use", "x11.struct.DeviceInfo.device_use", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_DeviceUse), 0, NULL, HFILL }},
+{ &hf_x11_struct_DeviceInfo_device_use, { "device_use", "x11.struct.DeviceInfo.device_use", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xinput_DeviceUse), 0, NULL, HFILL }},
{ &hf_x11_xinput_ListInputDevices_reply_devices_len, { "devices_len", "x11.xinput.ListInputDevices.reply.devices_len", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_ListInputDevices_reply_devices, { "devices", "x11.xinput.ListInputDevices.reply.devices", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_ListInputDevices_reply_devices_item, { "devices", "x11.xinput.ListInputDevices.reply.devices", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_InputClassInfo, { "InputClassInfo", "x11.struct.InputClassInfo", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_InputClassInfo_class_id, { "class_id", "x11.struct.InputClassInfo.class_id", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_InputClass), 0, NULL, HFILL }},
+{ &hf_x11_struct_InputClassInfo_class_id, { "class_id", "x11.struct.InputClassInfo.class_id", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xinput_InputClass), 0, NULL, HFILL }},
{ &hf_x11_struct_InputClassInfo_event_type_base, { "event_type_base", "x11.struct.InputClassInfo.event_type_base", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_OpenDevice_device_id, { "device_id", "x11.xinput.OpenDevice.device_id", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_OpenDevice_reply_num_classes, { "num_classes", "x11.xinput.OpenDevice.reply.num_classes", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -3766,8 +3828,8 @@
{ &hf_x11_xinput_OpenDevice_reply_class_info_item, { "class_info", "x11.xinput.OpenDevice.reply.class_info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_CloseDevice_device_id, { "device_id", "x11.xinput.CloseDevice.device_id", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_SetDeviceMode_device_id, { "device_id", "x11.xinput.SetDeviceMode.device_id", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xinput_SetDeviceMode_mode, { "mode", "x11.xinput.SetDeviceMode.mode", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_ValuatorMode), 0, NULL, HFILL }},
-{ &hf_x11_xinput_SetDeviceMode_reply_status, { "status", "x11.xinput.SetDeviceMode.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_GrabStatus), 0, NULL, HFILL }},
+{ &hf_x11_xinput_SetDeviceMode_mode, { "mode", "x11.xinput.SetDeviceMode.mode", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xinput_ValuatorMode), 0, NULL, HFILL }},
+{ &hf_x11_xinput_SetDeviceMode_reply_status, { "status", "x11.xinput.SetDeviceMode.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xproto_GrabStatus), 0, NULL, HFILL }},
{ &hf_x11_xinput_SelectExtensionEvent_window, { "window", "x11.xinput.SelectExtensionEvent.window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_SelectExtensionEvent_num_classes, { "num_classes", "x11.xinput.SelectExtensionEvent.num_classes", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_SelectExtensionEvent_classes, { "classes", "x11.xinput.SelectExtensionEvent.classes", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
@@ -3781,7 +3843,7 @@
{ &hf_x11_xinput_GetSelectedExtensionEvents_reply_all_classes_item, { "all_classes", "x11.xinput.GetSelectedExtensionEvents.reply.all_classes", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_ChangeDeviceDontPropagateList_window, { "window", "x11.xinput.ChangeDeviceDontPropagateList.window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_ChangeDeviceDontPropagateList_num_classes, { "num_classes", "x11.xinput.ChangeDeviceDontPropagateList.num_classes", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xinput_ChangeDeviceDontPropagateList_mode, { "mode", "x11.xinput.ChangeDeviceDontPropagateList.mode", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_PropagateMode), 0, NULL, HFILL }},
+{ &hf_x11_xinput_ChangeDeviceDontPropagateList_mode, { "mode", "x11.xinput.ChangeDeviceDontPropagateList.mode", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xinput_PropagateMode), 0, NULL, HFILL }},
{ &hf_x11_xinput_ChangeDeviceDontPropagateList_classes, { "classes", "x11.xinput.ChangeDeviceDontPropagateList.classes", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_ChangeDeviceDontPropagateList_classes_item, { "classes", "x11.xinput.ChangeDeviceDontPropagateList.classes", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_GetDeviceDontPropagateList_window, { "window", "x11.xinput.GetDeviceDontPropagateList.window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
@@ -3789,28 +3851,28 @@
{ &hf_x11_xinput_GetDeviceDontPropagateList_reply_classes, { "classes", "x11.xinput.GetDeviceDontPropagateList.reply.classes", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_GetDeviceDontPropagateList_reply_classes_item, { "classes", "x11.xinput.GetDeviceDontPropagateList.reply.classes", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_GetDeviceMotionEvents_start, { "start", "x11.xinput.GetDeviceMotionEvents.start", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xinput_GetDeviceMotionEvents_stop, { "stop", "x11.xinput.GetDeviceMotionEvents.stop", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_Time), 0, NULL, HFILL }},
+{ &hf_x11_xinput_GetDeviceMotionEvents_stop, { "stop", "x11.xinput.GetDeviceMotionEvents.stop", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_xproto_Time), 0, NULL, HFILL }},
{ &hf_x11_xinput_GetDeviceMotionEvents_device_id, { "device_id", "x11.xinput.GetDeviceMotionEvents.device_id", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_GetDeviceMotionEvents_reply_num_coords, { "num_coords", "x11.xinput.GetDeviceMotionEvents.reply.num_coords", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_GetDeviceMotionEvents_reply_num_axes, { "num_axes", "x11.xinput.GetDeviceMotionEvents.reply.num_axes", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xinput_GetDeviceMotionEvents_reply_device_mode, { "device_mode", "x11.xinput.GetDeviceMotionEvents.reply.device_mode", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_ValuatorMode), 0, NULL, HFILL }},
+{ &hf_x11_xinput_GetDeviceMotionEvents_reply_device_mode, { "device_mode", "x11.xinput.GetDeviceMotionEvents.reply.device_mode", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xinput_ValuatorMode), 0, NULL, HFILL }},
{ &hf_x11_xinput_ChangeKeyboardDevice_device_id, { "device_id", "x11.xinput.ChangeKeyboardDevice.device_id", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xinput_ChangeKeyboardDevice_reply_status, { "status", "x11.xinput.ChangeKeyboardDevice.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_GrabStatus), 0, NULL, HFILL }},
+{ &hf_x11_xinput_ChangeKeyboardDevice_reply_status, { "status", "x11.xinput.ChangeKeyboardDevice.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xproto_GrabStatus), 0, NULL, HFILL }},
{ &hf_x11_xinput_ChangePointerDevice_x_axis, { "x_axis", "x11.xinput.ChangePointerDevice.x_axis", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_ChangePointerDevice_y_axis, { "y_axis", "x11.xinput.ChangePointerDevice.y_axis", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_ChangePointerDevice_device_id, { "device_id", "x11.xinput.ChangePointerDevice.device_id", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xinput_ChangePointerDevice_reply_status, { "status", "x11.xinput.ChangePointerDevice.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_GrabStatus), 0, NULL, HFILL }},
+{ &hf_x11_xinput_ChangePointerDevice_reply_status, { "status", "x11.xinput.ChangePointerDevice.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xproto_GrabStatus), 0, NULL, HFILL }},
{ &hf_x11_xinput_GrabDevice_grab_window, { "grab_window", "x11.xinput.GrabDevice.grab_window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xinput_GrabDevice_time, { "time", "x11.xinput.GrabDevice.time", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_Time), 0, NULL, HFILL }},
+{ &hf_x11_xinput_GrabDevice_time, { "time", "x11.xinput.GrabDevice.time", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_xproto_Time), 0, NULL, HFILL }},
{ &hf_x11_xinput_GrabDevice_num_classes, { "num_classes", "x11.xinput.GrabDevice.num_classes", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xinput_GrabDevice_this_device_mode, { "this_device_mode", "x11.xinput.GrabDevice.this_device_mode", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_GrabMode), 0, NULL, HFILL }},
-{ &hf_x11_xinput_GrabDevice_other_device_mode, { "other_device_mode", "x11.xinput.GrabDevice.other_device_mode", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_GrabMode), 0, NULL, HFILL }},
+{ &hf_x11_xinput_GrabDevice_this_device_mode, { "this_device_mode", "x11.xinput.GrabDevice.this_device_mode", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xproto_GrabMode), 0, NULL, HFILL }},
+{ &hf_x11_xinput_GrabDevice_other_device_mode, { "other_device_mode", "x11.xinput.GrabDevice.other_device_mode", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xproto_GrabMode), 0, NULL, HFILL }},
{ &hf_x11_xinput_GrabDevice_owner_events, { "owner_events", "x11.xinput.GrabDevice.owner_events", FT_BOOLEAN, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_GrabDevice_device_id, { "device_id", "x11.xinput.GrabDevice.device_id", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_GrabDevice_classes, { "classes", "x11.xinput.GrabDevice.classes", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_GrabDevice_classes_item, { "classes", "x11.xinput.GrabDevice.classes", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xinput_GrabDevice_reply_status, { "status", "x11.xinput.GrabDevice.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_GrabStatus), 0, NULL, HFILL }},
-{ &hf_x11_xinput_UngrabDevice_time, { "time", "x11.xinput.UngrabDevice.time", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_Time), 0, NULL, HFILL }},
+{ &hf_x11_xinput_GrabDevice_reply_status, { "status", "x11.xinput.GrabDevice.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xproto_GrabStatus), 0, NULL, HFILL }},
+{ &hf_x11_xinput_UngrabDevice_time, { "time", "x11.xinput.UngrabDevice.time", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_xproto_Time), 0, NULL, HFILL }},
{ &hf_x11_xinput_UngrabDevice_device_id, { "device_id", "x11.xinput.UngrabDevice.device_id", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_GrabDeviceKey_grab_window, { "grab_window", "x11.xinput.GrabDeviceKey.grab_window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_GrabDeviceKey_num_classes, { "num_classes", "x11.xinput.GrabDeviceKey.num_classes", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -3826,9 +3888,9 @@
{ &hf_x11_xinput_GrabDeviceKey_modifiers, { "modifiers", "x11.xinput.GrabDeviceKey.modifiers", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_GrabDeviceKey_modifier_device, { "modifier_device", "x11.xinput.GrabDeviceKey.modifier_device", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_GrabDeviceKey_grabbed_device, { "grabbed_device", "x11.xinput.GrabDeviceKey.grabbed_device", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xinput_GrabDeviceKey_key, { "key", "x11.xinput.GrabDeviceKey.key", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_Grab), 0, NULL, HFILL }},
-{ &hf_x11_xinput_GrabDeviceKey_this_device_mode, { "this_device_mode", "x11.xinput.GrabDeviceKey.this_device_mode", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_GrabMode), 0, NULL, HFILL }},
-{ &hf_x11_xinput_GrabDeviceKey_other_device_mode, { "other_device_mode", "x11.xinput.GrabDeviceKey.other_device_mode", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_GrabMode), 0, NULL, HFILL }},
+{ &hf_x11_xinput_GrabDeviceKey_key, { "key", "x11.xinput.GrabDeviceKey.key", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xproto_Grab), 0, NULL, HFILL }},
+{ &hf_x11_xinput_GrabDeviceKey_this_device_mode, { "this_device_mode", "x11.xinput.GrabDeviceKey.this_device_mode", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xproto_GrabMode), 0, NULL, HFILL }},
+{ &hf_x11_xinput_GrabDeviceKey_other_device_mode, { "other_device_mode", "x11.xinput.GrabDeviceKey.other_device_mode", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xproto_GrabMode), 0, NULL, HFILL }},
{ &hf_x11_xinput_GrabDeviceKey_owner_events, { "owner_events", "x11.xinput.GrabDeviceKey.owner_events", FT_BOOLEAN, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_GrabDeviceKey_classes, { "classes", "x11.xinput.GrabDeviceKey.classes", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_GrabDeviceKey_classes_item, { "classes", "x11.xinput.GrabDeviceKey.classes", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -3844,7 +3906,7 @@
{ &hf_x11_xinput_UngrabDeviceKey_modifiers_mask_Any, { "Any", "x11.xinput.UngrabDeviceKey.modifiers.Any", FT_BOOLEAN, 16, NULL, 1 << 15, NULL, HFILL }},
{ &hf_x11_xinput_UngrabDeviceKey_modifiers, { "modifiers", "x11.xinput.UngrabDeviceKey.modifiers", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_UngrabDeviceKey_modifier_device, { "modifier_device", "x11.xinput.UngrabDeviceKey.modifier_device", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xinput_UngrabDeviceKey_key, { "key", "x11.xinput.UngrabDeviceKey.key", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_Grab), 0, NULL, HFILL }},
+{ &hf_x11_xinput_UngrabDeviceKey_key, { "key", "x11.xinput.UngrabDeviceKey.key", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xproto_Grab), 0, NULL, HFILL }},
{ &hf_x11_xinput_UngrabDeviceKey_grabbed_device, { "grabbed_device", "x11.xinput.UngrabDeviceKey.grabbed_device", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_GrabDeviceButton_grab_window, { "grab_window", "x11.xinput.GrabDeviceButton.grab_window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_GrabDeviceButton_grabbed_device, { "grabbed_device", "x11.xinput.GrabDeviceButton.grabbed_device", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -3860,9 +3922,9 @@
{ &hf_x11_xinput_GrabDeviceButton_modifiers_mask_5, { "5", "x11.xinput.GrabDeviceButton.modifiers.5", FT_BOOLEAN, 16, NULL, 1 << 7, NULL, HFILL }},
{ &hf_x11_xinput_GrabDeviceButton_modifiers_mask_Any, { "Any", "x11.xinput.GrabDeviceButton.modifiers.Any", FT_BOOLEAN, 16, NULL, 1 << 15, NULL, HFILL }},
{ &hf_x11_xinput_GrabDeviceButton_modifiers, { "modifiers", "x11.xinput.GrabDeviceButton.modifiers", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xinput_GrabDeviceButton_this_device_mode, { "this_device_mode", "x11.xinput.GrabDeviceButton.this_device_mode", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_GrabMode), 0, NULL, HFILL }},
-{ &hf_x11_xinput_GrabDeviceButton_other_device_mode, { "other_device_mode", "x11.xinput.GrabDeviceButton.other_device_mode", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_GrabMode), 0, NULL, HFILL }},
-{ &hf_x11_xinput_GrabDeviceButton_button, { "button", "x11.xinput.GrabDeviceButton.button", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_Grab), 0, NULL, HFILL }},
+{ &hf_x11_xinput_GrabDeviceButton_this_device_mode, { "this_device_mode", "x11.xinput.GrabDeviceButton.this_device_mode", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xproto_GrabMode), 0, NULL, HFILL }},
+{ &hf_x11_xinput_GrabDeviceButton_other_device_mode, { "other_device_mode", "x11.xinput.GrabDeviceButton.other_device_mode", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xproto_GrabMode), 0, NULL, HFILL }},
+{ &hf_x11_xinput_GrabDeviceButton_button, { "button", "x11.xinput.GrabDeviceButton.button", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xproto_Grab), 0, NULL, HFILL }},
{ &hf_x11_xinput_GrabDeviceButton_owner_events, { "owner_events", "x11.xinput.GrabDeviceButton.owner_events", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_GrabDeviceButton_classes, { "classes", "x11.xinput.GrabDeviceButton.classes", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_GrabDeviceButton_classes_item, { "classes", "x11.xinput.GrabDeviceButton.classes", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -3878,18 +3940,18 @@
{ &hf_x11_xinput_UngrabDeviceButton_modifiers_mask_Any, { "Any", "x11.xinput.UngrabDeviceButton.modifiers.Any", FT_BOOLEAN, 16, NULL, 1 << 15, NULL, HFILL }},
{ &hf_x11_xinput_UngrabDeviceButton_modifiers, { "modifiers", "x11.xinput.UngrabDeviceButton.modifiers", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_UngrabDeviceButton_modifier_device, { "modifier_device", "x11.xinput.UngrabDeviceButton.modifier_device", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xinput_UngrabDeviceButton_button, { "button", "x11.xinput.UngrabDeviceButton.button", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_Grab), 0, NULL, HFILL }},
+{ &hf_x11_xinput_UngrabDeviceButton_button, { "button", "x11.xinput.UngrabDeviceButton.button", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xproto_Grab), 0, NULL, HFILL }},
{ &hf_x11_xinput_UngrabDeviceButton_grabbed_device, { "grabbed_device", "x11.xinput.UngrabDeviceButton.grabbed_device", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xinput_AllowDeviceEvents_time, { "time", "x11.xinput.AllowDeviceEvents.time", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_Time), 0, NULL, HFILL }},
-{ &hf_x11_xinput_AllowDeviceEvents_mode, { "mode", "x11.xinput.AllowDeviceEvents.mode", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_DeviceInputMode), 0, NULL, HFILL }},
+{ &hf_x11_xinput_AllowDeviceEvents_time, { "time", "x11.xinput.AllowDeviceEvents.time", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_xproto_Time), 0, NULL, HFILL }},
+{ &hf_x11_xinput_AllowDeviceEvents_mode, { "mode", "x11.xinput.AllowDeviceEvents.mode", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xinput_DeviceInputMode), 0, NULL, HFILL }},
{ &hf_x11_xinput_AllowDeviceEvents_device_id, { "device_id", "x11.xinput.AllowDeviceEvents.device_id", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_GetDeviceFocus_device_id, { "device_id", "x11.xinput.GetDeviceFocus.device_id", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xinput_GetDeviceFocus_reply_focus, { "focus", "x11.xinput.GetDeviceFocus.reply.focus", FT_UINT32, BASE_HEX, VALS(x11_enum_InputFocus), 0, NULL, HFILL }},
+{ &hf_x11_xinput_GetDeviceFocus_reply_focus, { "focus", "x11.xinput.GetDeviceFocus.reply.focus", FT_UINT32, BASE_HEX, VALS(x11_enum_xproto_InputFocus), 0, NULL, HFILL }},
{ &hf_x11_xinput_GetDeviceFocus_reply_time, { "time", "x11.xinput.GetDeviceFocus.reply.time", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xinput_GetDeviceFocus_reply_revert_to, { "revert_to", "x11.xinput.GetDeviceFocus.reply.revert_to", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_InputFocus), 0, NULL, HFILL }},
-{ &hf_x11_xinput_SetDeviceFocus_focus, { "focus", "x11.xinput.SetDeviceFocus.focus", FT_UINT32, BASE_HEX, VALS(x11_enum_InputFocus), 0, NULL, HFILL }},
-{ &hf_x11_xinput_SetDeviceFocus_time, { "time", "x11.xinput.SetDeviceFocus.time", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_Time), 0, NULL, HFILL }},
-{ &hf_x11_xinput_SetDeviceFocus_revert_to, { "revert_to", "x11.xinput.SetDeviceFocus.revert_to", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_InputFocus), 0, NULL, HFILL }},
+{ &hf_x11_xinput_GetDeviceFocus_reply_revert_to, { "revert_to", "x11.xinput.GetDeviceFocus.reply.revert_to", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xproto_InputFocus), 0, NULL, HFILL }},
+{ &hf_x11_xinput_SetDeviceFocus_focus, { "focus", "x11.xinput.SetDeviceFocus.focus", FT_UINT32, BASE_HEX, VALS(x11_enum_xproto_InputFocus), 0, NULL, HFILL }},
+{ &hf_x11_xinput_SetDeviceFocus_time, { "time", "x11.xinput.SetDeviceFocus.time", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_xproto_Time), 0, NULL, HFILL }},
+{ &hf_x11_xinput_SetDeviceFocus_revert_to, { "revert_to", "x11.xinput.SetDeviceFocus.revert_to", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xproto_InputFocus), 0, NULL, HFILL }},
{ &hf_x11_xinput_SetDeviceFocus_device_id, { "device_id", "x11.xinput.SetDeviceFocus.device_id", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_GetFeedbackControl_device_id, { "device_id", "x11.xinput.GetFeedbackControl.device_id", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_GetFeedbackControl_reply_num_feedback, { "num_feedback", "x11.xinput.GetFeedbackControl.reply.num_feedback", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -3911,14 +3973,14 @@
{ &hf_x11_xinput_SetDeviceModifierMapping_device_id, { "device_id", "x11.xinput.SetDeviceModifierMapping.device_id", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_SetDeviceModifierMapping_keycodes_per_modifier, { "keycodes_per_modifier", "x11.xinput.SetDeviceModifierMapping.keycodes_per_modifier", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_SetDeviceModifierMapping_keymaps, { "keymaps", "x11.xinput.SetDeviceModifierMapping.keymaps", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xinput_SetDeviceModifierMapping_reply_status, { "status", "x11.xinput.SetDeviceModifierMapping.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_MappingStatus), 0, NULL, HFILL }},
+{ &hf_x11_xinput_SetDeviceModifierMapping_reply_status, { "status", "x11.xinput.SetDeviceModifierMapping.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xproto_MappingStatus), 0, NULL, HFILL }},
{ &hf_x11_xinput_GetDeviceButtonMapping_device_id, { "device_id", "x11.xinput.GetDeviceButtonMapping.device_id", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_GetDeviceButtonMapping_reply_map_size, { "map_size", "x11.xinput.GetDeviceButtonMapping.reply.map_size", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_GetDeviceButtonMapping_reply_map, { "map", "x11.xinput.GetDeviceButtonMapping.reply.map", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_SetDeviceButtonMapping_device_id, { "device_id", "x11.xinput.SetDeviceButtonMapping.device_id", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_SetDeviceButtonMapping_map_size, { "map_size", "x11.xinput.SetDeviceButtonMapping.map_size", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_SetDeviceButtonMapping_map, { "map", "x11.xinput.SetDeviceButtonMapping.map", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xinput_SetDeviceButtonMapping_reply_status, { "status", "x11.xinput.SetDeviceButtonMapping.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_MappingStatus), 0, NULL, HFILL }},
+{ &hf_x11_xinput_SetDeviceButtonMapping_reply_status, { "status", "x11.xinput.SetDeviceButtonMapping.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xproto_MappingStatus), 0, NULL, HFILL }},
{ &hf_x11_xinput_QueryDeviceState_device_id, { "device_id", "x11.xinput.QueryDeviceState.device_id", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_QueryDeviceState_reply_num_classes, { "num_classes", "x11.xinput.QueryDeviceState.reply.num_classes", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_SendExtensionEvent_destination, { "destination", "x11.xinput.SendExtensionEvent.destination", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
@@ -3938,10 +4000,10 @@
{ &hf_x11_xinput_SetDeviceValuators_num_valuators, { "num_valuators", "x11.xinput.SetDeviceValuators.num_valuators", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_SetDeviceValuators_valuators, { "valuators", "x11.xinput.SetDeviceValuators.valuators", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_SetDeviceValuators_valuators_item, { "valuators", "x11.xinput.SetDeviceValuators.valuators", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xinput_SetDeviceValuators_reply_status, { "status", "x11.xinput.SetDeviceValuators.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_GrabStatus), 0, NULL, HFILL }},
+{ &hf_x11_xinput_SetDeviceValuators_reply_status, { "status", "x11.xinput.SetDeviceValuators.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xproto_GrabStatus), 0, NULL, HFILL }},
{ &hf_x11_xinput_GetDeviceControl_control_id, { "control_id", "x11.xinput.GetDeviceControl.control_id", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_GetDeviceControl_device_id, { "device_id", "x11.xinput.GetDeviceControl.device_id", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xinput_GetDeviceControl_reply_status, { "status", "x11.xinput.GetDeviceControl.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_GrabStatus), 0, NULL, HFILL }},
+{ &hf_x11_xinput_GetDeviceControl_reply_status, { "status", "x11.xinput.GetDeviceControl.reply.status", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xproto_GrabStatus), 0, NULL, HFILL }},
{ &hf_x11_xinput_DeviceValuator_device_id, { "device_id", "x11.xinput.DeviceValuator.device_id", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_DeviceValuator_device_state, { "device_state", "x11.xinput.DeviceValuator.device_state", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_DeviceValuator_num_valuators, { "num_valuators", "x11.xinput.DeviceValuator.num_valuators", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -3952,7 +4014,7 @@
{ &hf_x11_xinput_DeviceKeyPress_time, { "time", "x11.xinput.DeviceKeyPress.time", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_DeviceKeyPress_root, { "root", "x11.xinput.DeviceKeyPress.root", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_DeviceKeyPress_event, { "event", "x11.xinput.DeviceKeyPress.event", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xinput_DeviceKeyPress_child, { "child", "x11.xinput.DeviceKeyPress.child", FT_UINT32, BASE_HEX, VALS(x11_enum_Window), 0, NULL, HFILL }},
+{ &hf_x11_xinput_DeviceKeyPress_child, { "child", "x11.xinput.DeviceKeyPress.child", FT_UINT32, BASE_HEX, VALS(x11_enum_xproto_Window), 0, NULL, HFILL }},
{ &hf_x11_xinput_DeviceKeyPress_root_x, { "root_x", "x11.xinput.DeviceKeyPress.root_x", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_DeviceKeyPress_root_y, { "root_y", "x11.xinput.DeviceKeyPress.root_y", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_DeviceKeyPress_event_x, { "event_x", "x11.xinput.DeviceKeyPress.event_x", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
@@ -3960,10 +4022,10 @@
{ &hf_x11_xinput_DeviceKeyPress_state, { "state", "x11.xinput.DeviceKeyPress.state", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_DeviceKeyPress_same_screen, { "same_screen", "x11.xinput.DeviceKeyPress.same_screen", FT_BOOLEAN, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_DeviceKeyPress_device_id, { "device_id", "x11.xinput.DeviceKeyPress.device_id", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xinput_FocusIn_detail, { "detail", "x11.xinput.FocusIn.detail", FT_UINT8, BASE_DEC, VALS(x11_enum_NotifyDetail), 0, NULL, HFILL }},
+{ &hf_x11_xinput_FocusIn_detail, { "detail", "x11.xinput.FocusIn.detail", FT_UINT8, BASE_DEC, VALS(x11_enum_xproto_NotifyDetail), 0, NULL, HFILL }},
{ &hf_x11_xinput_FocusIn_time, { "time", "x11.xinput.FocusIn.time", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_FocusIn_window, { "window", "x11.xinput.FocusIn.window", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xinput_FocusIn_mode, { "mode", "x11.xinput.FocusIn.mode", FT_UINT8, BASE_DEC, VALS(x11_enum_NotifyMode), 0, NULL, HFILL }},
+{ &hf_x11_xinput_FocusIn_mode, { "mode", "x11.xinput.FocusIn.mode", FT_UINT8, BASE_DEC, VALS(x11_enum_xproto_NotifyMode), 0, NULL, HFILL }},
{ &hf_x11_xinput_FocusIn_device_id, { "device_id", "x11.xinput.FocusIn.device_id", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_DeviceStateNotify_device_id, { "device_id", "x11.xinput.DeviceStateNotify.device_id", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xinput_DeviceStateNotify_time, { "time", "x11.xinput.DeviceStateNotify.time", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -3994,13 +4056,13 @@
{ &hf_x11_xinput_extension_minor, { "extension-minor", "x11.extension-minor", FT_UINT8, BASE_DEC, VALS(xinput_extension_minor), 0, "minor opcode", HFILL }},
{ &hf_x11_union_AXOption, { "AXOption", "x11.union.AXOption", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_union_AXOption_fbopt, { "fbopt", "x11.union.AXOption.fbopt", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_AXFBOpt), 0, NULL, HFILL }},
-{ &hf_x11_union_AXOption_skopt, { "skopt", "x11.union.AXOption.skopt", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_AXSKOpt), 0, NULL, HFILL }},
+{ &hf_x11_union_AXOption_fbopt, { "fbopt", "x11.union.AXOption.fbopt", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_xkb_AXFBOpt), 0, NULL, HFILL }},
+{ &hf_x11_union_AXOption_skopt, { "skopt", "x11.union.AXOption.skopt", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_xkb_AXSKOpt), 0, NULL, HFILL }},
{ &hf_x11_struct_IndicatorMap, { "IndicatorMap", "x11.struct.IndicatorMap", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_IndicatorMap_flags, { "flags", "x11.struct.IndicatorMap.flags", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_IMFlag), 0, NULL, HFILL }},
-{ &hf_x11_struct_IndicatorMap_whichGroups, { "whichGroups", "x11.struct.IndicatorMap.whichGroups", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_IMGroupsWhich), 0, NULL, HFILL }},
-{ &hf_x11_struct_IndicatorMap_groups, { "groups", "x11.struct.IndicatorMap.groups", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SetOfGroup), 0, NULL, HFILL }},
-{ &hf_x11_struct_IndicatorMap_whichMods, { "whichMods", "x11.struct.IndicatorMap.whichMods", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_IMModsWhich), 0, NULL, HFILL }},
+{ &hf_x11_struct_IndicatorMap_flags, { "flags", "x11.struct.IndicatorMap.flags", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_IMFlag), 0, NULL, HFILL }},
+{ &hf_x11_struct_IndicatorMap_whichGroups, { "whichGroups", "x11.struct.IndicatorMap.whichGroups", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_IMGroupsWhich), 0, NULL, HFILL }},
+{ &hf_x11_struct_IndicatorMap_groups, { "groups", "x11.struct.IndicatorMap.groups", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_SetOfGroup), 0, NULL, HFILL }},
+{ &hf_x11_struct_IndicatorMap_whichMods, { "whichMods", "x11.struct.IndicatorMap.whichMods", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_IMModsWhich), 0, NULL, HFILL }},
{ &hf_x11_struct_IndicatorMap_mods_mask_Shift, { "Shift", "x11.struct.IndicatorMap.mods.Shift", FT_BOOLEAN, 8, NULL, 1 << 0, NULL, HFILL }},
{ &hf_x11_struct_IndicatorMap_mods_mask_Lock, { "Lock", "x11.struct.IndicatorMap.mods.Lock", FT_BOOLEAN, 8, NULL, 1 << 1, NULL, HFILL }},
{ &hf_x11_struct_IndicatorMap_mods_mask_Control, { "Control", "x11.struct.IndicatorMap.mods.Control", FT_BOOLEAN, 8, NULL, 1 << 2, NULL, HFILL }},
@@ -4038,7 +4100,7 @@
{ &hf_x11_struct_IndicatorMap_vmods_mask_14, { "14", "x11.struct.IndicatorMap.vmods.14", FT_BOOLEAN, 16, NULL, 1 << 14, NULL, HFILL }},
{ &hf_x11_struct_IndicatorMap_vmods_mask_15, { "15", "x11.struct.IndicatorMap.vmods.15", FT_BOOLEAN, 16, NULL, 1 << 15, NULL, HFILL }},
{ &hf_x11_struct_IndicatorMap_vmods, { "vmods", "x11.struct.IndicatorMap.vmods", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_IndicatorMap_ctrls, { "ctrls", "x11.struct.IndicatorMap.ctrls", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_BoolCtrl), 0, NULL, HFILL }},
+{ &hf_x11_struct_IndicatorMap_ctrls, { "ctrls", "x11.struct.IndicatorMap.ctrls", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_xkb_BoolCtrl), 0, NULL, HFILL }},
{ &hf_x11_struct_ModDef, { "ModDef", "x11.struct.ModDef", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_ModDef_mask_mask_Shift, { "Shift", "x11.struct.ModDef.mask.Shift", FT_BOOLEAN, 8, NULL, 1 << 0, NULL, HFILL }},
{ &hf_x11_struct_ModDef_mask_mask_Lock, { "Lock", "x11.struct.ModDef.mask.Lock", FT_BOOLEAN, 8, NULL, 1 << 1, NULL, HFILL }},
@@ -4364,14 +4426,14 @@
{ &hf_x11_struct_Row_keys_item, { "keys", "x11.struct.Row.keys", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_CommonDoodad, { "CommonDoodad", "x11.struct.CommonDoodad", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_CommonDoodad_name, { "name", "x11.struct.CommonDoodad.name", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_CommonDoodad_type, { "type", "x11.struct.CommonDoodad.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_DoodadType), 0, NULL, HFILL }},
+{ &hf_x11_struct_CommonDoodad_type, { "type", "x11.struct.CommonDoodad.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_DoodadType), 0, NULL, HFILL }},
{ &hf_x11_struct_CommonDoodad_priority, { "priority", "x11.struct.CommonDoodad.priority", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_CommonDoodad_top, { "top", "x11.struct.CommonDoodad.top", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_CommonDoodad_left, { "left", "x11.struct.CommonDoodad.left", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_CommonDoodad_angle, { "angle", "x11.struct.CommonDoodad.angle", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_ShapeDoodad, { "ShapeDoodad", "x11.struct.ShapeDoodad", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_ShapeDoodad_name, { "name", "x11.struct.ShapeDoodad.name", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_ShapeDoodad_type, { "type", "x11.struct.ShapeDoodad.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_DoodadType), 0, NULL, HFILL }},
+{ &hf_x11_struct_ShapeDoodad_type, { "type", "x11.struct.ShapeDoodad.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_DoodadType), 0, NULL, HFILL }},
{ &hf_x11_struct_ShapeDoodad_priority, { "priority", "x11.struct.ShapeDoodad.priority", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_ShapeDoodad_top, { "top", "x11.struct.ShapeDoodad.top", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_ShapeDoodad_left, { "left", "x11.struct.ShapeDoodad.left", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
@@ -4380,7 +4442,7 @@
{ &hf_x11_struct_ShapeDoodad_shapeNdx, { "shapeNdx", "x11.struct.ShapeDoodad.shapeNdx", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_TextDoodad, { "TextDoodad", "x11.struct.TextDoodad", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_TextDoodad_name, { "name", "x11.struct.TextDoodad.name", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_TextDoodad_type, { "type", "x11.struct.TextDoodad.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_DoodadType), 0, NULL, HFILL }},
+{ &hf_x11_struct_TextDoodad_type, { "type", "x11.struct.TextDoodad.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_DoodadType), 0, NULL, HFILL }},
{ &hf_x11_struct_TextDoodad_priority, { "priority", "x11.struct.TextDoodad.priority", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_TextDoodad_top, { "top", "x11.struct.TextDoodad.top", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_TextDoodad_left, { "left", "x11.struct.TextDoodad.left", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
@@ -4392,7 +4454,7 @@
{ &hf_x11_struct_TextDoodad_font, { "font", "x11.struct.TextDoodad.font", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_IndicatorDoodad, { "IndicatorDoodad", "x11.struct.IndicatorDoodad", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_IndicatorDoodad_name, { "name", "x11.struct.IndicatorDoodad.name", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_IndicatorDoodad_type, { "type", "x11.struct.IndicatorDoodad.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_DoodadType), 0, NULL, HFILL }},
+{ &hf_x11_struct_IndicatorDoodad_type, { "type", "x11.struct.IndicatorDoodad.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_DoodadType), 0, NULL, HFILL }},
{ &hf_x11_struct_IndicatorDoodad_priority, { "priority", "x11.struct.IndicatorDoodad.priority", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_IndicatorDoodad_top, { "top", "x11.struct.IndicatorDoodad.top", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_IndicatorDoodad_left, { "left", "x11.struct.IndicatorDoodad.left", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
@@ -4402,7 +4464,7 @@
{ &hf_x11_struct_IndicatorDoodad_offColorNdx, { "offColorNdx", "x11.struct.IndicatorDoodad.offColorNdx", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_LogoDoodad, { "LogoDoodad", "x11.struct.LogoDoodad", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_LogoDoodad_name, { "name", "x11.struct.LogoDoodad.name", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_LogoDoodad_type, { "type", "x11.struct.LogoDoodad.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_DoodadType), 0, NULL, HFILL }},
+{ &hf_x11_struct_LogoDoodad_type, { "type", "x11.struct.LogoDoodad.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_DoodadType), 0, NULL, HFILL }},
{ &hf_x11_struct_LogoDoodad_priority, { "priority", "x11.struct.LogoDoodad.priority", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_LogoDoodad_top, { "top", "x11.struct.LogoDoodad.top", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_LogoDoodad_left, { "left", "x11.struct.LogoDoodad.left", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
@@ -4436,8 +4498,8 @@
{ &hf_x11_struct_Listing_length, { "length", "x11.struct.Listing.length", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_Listing_string, { "string", "x11.struct.Listing.string", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_DeviceLedInfo, { "DeviceLedInfo", "x11.struct.DeviceLedInfo", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_DeviceLedInfo_ledClass, { "ledClass", "x11.struct.DeviceLedInfo.ledClass", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_LedClass), 0, NULL, HFILL }},
-{ &hf_x11_struct_DeviceLedInfo_ledID, { "ledID", "x11.struct.DeviceLedInfo.ledID", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_ID), 0, NULL, HFILL }},
+{ &hf_x11_struct_DeviceLedInfo_ledClass, { "ledClass", "x11.struct.DeviceLedInfo.ledClass", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_xkb_LedClass), 0, NULL, HFILL }},
+{ &hf_x11_struct_DeviceLedInfo_ledID, { "ledID", "x11.struct.DeviceLedInfo.ledID", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_xkb_ID), 0, NULL, HFILL }},
{ &hf_x11_struct_DeviceLedInfo_namesPresent, { "namesPresent", "x11.struct.DeviceLedInfo.namesPresent", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_DeviceLedInfo_mapsPresent, { "mapsPresent", "x11.struct.DeviceLedInfo.mapsPresent", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_DeviceLedInfo_physIndicators, { "physIndicators", "x11.struct.DeviceLedInfo.physIndicators", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -4447,9 +4509,9 @@
{ &hf_x11_struct_DeviceLedInfo_maps, { "maps", "x11.struct.DeviceLedInfo.maps", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_DeviceLedInfo_maps_item, { "maps", "x11.struct.DeviceLedInfo.maps", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SANoAction, { "SANoAction", "x11.struct.SANoAction", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_SANoAction_type, { "type", "x11.struct.SANoAction.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SAType), 0, NULL, HFILL }},
+{ &hf_x11_struct_SANoAction_type, { "type", "x11.struct.SANoAction.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_SAType), 0, NULL, HFILL }},
{ &hf_x11_struct_SASetMods, { "SASetMods", "x11.struct.SASetMods", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_SASetMods_type, { "type", "x11.struct.SASetMods.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SAType), 0, NULL, HFILL }},
+{ &hf_x11_struct_SASetMods_type, { "type", "x11.struct.SASetMods.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_SAType), 0, NULL, HFILL }},
{ &hf_x11_struct_SASetMods_flags_mask_ClearLocks, { "ClearLocks", "x11.struct.SASetMods.flags.ClearLocks", FT_BOOLEAN, 8, NULL, 1 << 0, NULL, HFILL }},
{ &hf_x11_struct_SASetMods_flags_mask_LatchToLock, { "LatchToLock", "x11.struct.SASetMods.flags.LatchToLock", FT_BOOLEAN, 8, NULL, 1 << 1, NULL, HFILL }},
{ &hf_x11_struct_SASetMods_flags_mask_GroupAbsolute, { "GroupAbsolute", "x11.struct.SASetMods.flags.GroupAbsolute", FT_BOOLEAN, 8, NULL, 1 << 2, NULL, HFILL }},
@@ -4493,14 +4555,14 @@
{ &hf_x11_struct_SASetMods_vmodsLow_mask_7, { "7", "x11.struct.SASetMods.vmodsLow.7", FT_BOOLEAN, 8, NULL, 1 << 7, NULL, HFILL }},
{ &hf_x11_struct_SASetMods_vmodsLow, { "vmodsLow", "x11.struct.SASetMods.vmodsLow", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SASetGroup, { "SASetGroup", "x11.struct.SASetGroup", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_SASetGroup_type, { "type", "x11.struct.SASetGroup.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SAType), 0, NULL, HFILL }},
+{ &hf_x11_struct_SASetGroup_type, { "type", "x11.struct.SASetGroup.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_SAType), 0, NULL, HFILL }},
{ &hf_x11_struct_SASetGroup_flags_mask_ClearLocks, { "ClearLocks", "x11.struct.SASetGroup.flags.ClearLocks", FT_BOOLEAN, 8, NULL, 1 << 0, NULL, HFILL }},
{ &hf_x11_struct_SASetGroup_flags_mask_LatchToLock, { "LatchToLock", "x11.struct.SASetGroup.flags.LatchToLock", FT_BOOLEAN, 8, NULL, 1 << 1, NULL, HFILL }},
{ &hf_x11_struct_SASetGroup_flags_mask_GroupAbsolute, { "GroupAbsolute", "x11.struct.SASetGroup.flags.GroupAbsolute", FT_BOOLEAN, 8, NULL, 1 << 2, NULL, HFILL }},
{ &hf_x11_struct_SASetGroup_flags, { "flags", "x11.struct.SASetGroup.flags", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SASetGroup_group, { "group", "x11.struct.SASetGroup.group", FT_INT8, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SAMovePtr, { "SAMovePtr", "x11.struct.SAMovePtr", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_SAMovePtr_type, { "type", "x11.struct.SAMovePtr.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SAType), 0, NULL, HFILL }},
+{ &hf_x11_struct_SAMovePtr_type, { "type", "x11.struct.SAMovePtr.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_SAType), 0, NULL, HFILL }},
{ &hf_x11_struct_SAMovePtr_flags_mask_NoAcceleration, { "NoAcceleration", "x11.struct.SAMovePtr.flags.NoAcceleration", FT_BOOLEAN, 8, NULL, 1 << 0, NULL, HFILL }},
{ &hf_x11_struct_SAMovePtr_flags_mask_MoveAbsoluteX, { "MoveAbsoluteX", "x11.struct.SAMovePtr.flags.MoveAbsoluteX", FT_BOOLEAN, 8, NULL, 1 << 1, NULL, HFILL }},
{ &hf_x11_struct_SAMovePtr_flags_mask_MoveAbsoluteY, { "MoveAbsoluteY", "x11.struct.SAMovePtr.flags.MoveAbsoluteY", FT_BOOLEAN, 8, NULL, 1 << 2, NULL, HFILL }},
@@ -4510,16 +4572,16 @@
{ &hf_x11_struct_SAMovePtr_yHigh, { "yHigh", "x11.struct.SAMovePtr.yHigh", FT_INT8, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SAMovePtr_yLow, { "yLow", "x11.struct.SAMovePtr.yLow", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SAPtrBtn, { "SAPtrBtn", "x11.struct.SAPtrBtn", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_SAPtrBtn_type, { "type", "x11.struct.SAPtrBtn.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SAType), 0, NULL, HFILL }},
+{ &hf_x11_struct_SAPtrBtn_type, { "type", "x11.struct.SAPtrBtn.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_SAType), 0, NULL, HFILL }},
{ &hf_x11_struct_SAPtrBtn_flags, { "flags", "x11.struct.SAPtrBtn.flags", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SAPtrBtn_count, { "count", "x11.struct.SAPtrBtn.count", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SAPtrBtn_button, { "button", "x11.struct.SAPtrBtn.button", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SALockPtrBtn, { "SALockPtrBtn", "x11.struct.SALockPtrBtn", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_SALockPtrBtn_type, { "type", "x11.struct.SALockPtrBtn.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SAType), 0, NULL, HFILL }},
+{ &hf_x11_struct_SALockPtrBtn_type, { "type", "x11.struct.SALockPtrBtn.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_SAType), 0, NULL, HFILL }},
{ &hf_x11_struct_SALockPtrBtn_flags, { "flags", "x11.struct.SALockPtrBtn.flags", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SALockPtrBtn_button, { "button", "x11.struct.SALockPtrBtn.button", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SASetPtrDflt, { "SASetPtrDflt", "x11.struct.SASetPtrDflt", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_SASetPtrDflt_type, { "type", "x11.struct.SASetPtrDflt.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SAType), 0, NULL, HFILL }},
+{ &hf_x11_struct_SASetPtrDflt_type, { "type", "x11.struct.SASetPtrDflt.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_SAType), 0, NULL, HFILL }},
{ &hf_x11_struct_SASetPtrDflt_flags_mask_AffectDfltButton, { "AffectDfltButton", "x11.struct.SASetPtrDflt.flags.AffectDfltButton", FT_BOOLEAN, 8, NULL, 1 << 0, NULL, HFILL }},
{ &hf_x11_struct_SASetPtrDflt_flags_mask_DfltBtnAbsolute, { "DfltBtnAbsolute", "x11.struct.SASetPtrDflt.flags.DfltBtnAbsolute", FT_BOOLEAN, 8, NULL, 1 << 1, NULL, HFILL }},
{ &hf_x11_struct_SASetPtrDflt_flags, { "flags", "x11.struct.SASetPtrDflt.flags", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -4528,7 +4590,7 @@
{ &hf_x11_struct_SASetPtrDflt_affect, { "affect", "x11.struct.SASetPtrDflt.affect", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SASetPtrDflt_value, { "value", "x11.struct.SASetPtrDflt.value", FT_INT8, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SAIsoLock, { "SAIsoLock", "x11.struct.SAIsoLock", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_SAIsoLock_type, { "type", "x11.struct.SAIsoLock.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SAType), 0, NULL, HFILL }},
+{ &hf_x11_struct_SAIsoLock_type, { "type", "x11.struct.SAIsoLock.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_SAType), 0, NULL, HFILL }},
{ &hf_x11_struct_SAIsoLock_flags_mask_NoLock, { "NoLock", "x11.struct.SAIsoLock.flags.NoLock", FT_BOOLEAN, 8, NULL, 1 << 0, NULL, HFILL }},
{ &hf_x11_struct_SAIsoLock_flags_mask_NoUnlock, { "NoUnlock", "x11.struct.SAIsoLock.flags.NoUnlock", FT_BOOLEAN, 8, NULL, 1 << 1, NULL, HFILL }},
{ &hf_x11_struct_SAIsoLock_flags_mask_GroupAbsolute, { "GroupAbsolute", "x11.struct.SAIsoLock.flags.GroupAbsolute", FT_BOOLEAN, 8, NULL, 1 << 2, NULL, HFILL }},
@@ -4579,13 +4641,13 @@
{ &hf_x11_struct_SAIsoLock_vmodsLow_mask_7, { "7", "x11.struct.SAIsoLock.vmodsLow.7", FT_BOOLEAN, 8, NULL, 1 << 7, NULL, HFILL }},
{ &hf_x11_struct_SAIsoLock_vmodsLow, { "vmodsLow", "x11.struct.SAIsoLock.vmodsLow", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SATerminate, { "SATerminate", "x11.struct.SATerminate", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_SATerminate_type, { "type", "x11.struct.SATerminate.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SAType), 0, NULL, HFILL }},
+{ &hf_x11_struct_SATerminate_type, { "type", "x11.struct.SATerminate.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_SAType), 0, NULL, HFILL }},
{ &hf_x11_struct_SASwitchScreen, { "SASwitchScreen", "x11.struct.SASwitchScreen", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_SASwitchScreen_type, { "type", "x11.struct.SASwitchScreen.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SAType), 0, NULL, HFILL }},
+{ &hf_x11_struct_SASwitchScreen_type, { "type", "x11.struct.SASwitchScreen.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_SAType), 0, NULL, HFILL }},
{ &hf_x11_struct_SASwitchScreen_flags, { "flags", "x11.struct.SASwitchScreen.flags", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SASwitchScreen_newScreen, { "newScreen", "x11.struct.SASwitchScreen.newScreen", FT_INT8, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SASetControls, { "SASetControls", "x11.struct.SASetControls", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_SASetControls_type, { "type", "x11.struct.SASetControls.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SAType), 0, NULL, HFILL }},
+{ &hf_x11_struct_SASetControls_type, { "type", "x11.struct.SASetControls.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_SAType), 0, NULL, HFILL }},
{ &hf_x11_struct_SASetControls_boolCtrlsHigh_mask_AccessXFeedback, { "AccessXFeedback", "x11.struct.SASetControls.boolCtrlsHigh.AccessXFeedback", FT_BOOLEAN, 8, NULL, 1 << 0, NULL, HFILL }},
{ &hf_x11_struct_SASetControls_boolCtrlsHigh_mask_AudibleBell, { "AudibleBell", "x11.struct.SASetControls.boolCtrlsHigh.AudibleBell", FT_BOOLEAN, 8, NULL, 1 << 1, NULL, HFILL }},
{ &hf_x11_struct_SASetControls_boolCtrlsHigh_mask_Overlay1, { "Overlay1", "x11.struct.SASetControls.boolCtrlsHigh.Overlay1", FT_BOOLEAN, 8, NULL, 1 << 2, NULL, HFILL }},
@@ -4602,14 +4664,14 @@
{ &hf_x11_struct_SASetControls_boolCtrlsLow_mask_AccessXTimeout, { "AccessXTimeout", "x11.struct.SASetControls.boolCtrlsLow.AccessXTimeout", FT_BOOLEAN, 8, NULL, 1 << 7, NULL, HFILL }},
{ &hf_x11_struct_SASetControls_boolCtrlsLow, { "boolCtrlsLow", "x11.struct.SASetControls.boolCtrlsLow", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SAActionMessage, { "SAActionMessage", "x11.struct.SAActionMessage", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_SAActionMessage_type, { "type", "x11.struct.SAActionMessage.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SAType), 0, NULL, HFILL }},
+{ &hf_x11_struct_SAActionMessage_type, { "type", "x11.struct.SAActionMessage.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_SAType), 0, NULL, HFILL }},
{ &hf_x11_struct_SAActionMessage_flags_mask_OnPress, { "OnPress", "x11.struct.SAActionMessage.flags.OnPress", FT_BOOLEAN, 8, NULL, 1 << 0, NULL, HFILL }},
{ &hf_x11_struct_SAActionMessage_flags_mask_OnRelease, { "OnRelease", "x11.struct.SAActionMessage.flags.OnRelease", FT_BOOLEAN, 8, NULL, 1 << 1, NULL, HFILL }},
{ &hf_x11_struct_SAActionMessage_flags_mask_GenKeyEvent, { "GenKeyEvent", "x11.struct.SAActionMessage.flags.GenKeyEvent", FT_BOOLEAN, 8, NULL, 1 << 2, NULL, HFILL }},
{ &hf_x11_struct_SAActionMessage_flags, { "flags", "x11.struct.SAActionMessage.flags", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SAActionMessage_message, { "message", "x11.struct.SAActionMessage.message", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SARedirectKey, { "SARedirectKey", "x11.struct.SARedirectKey", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_SARedirectKey_type, { "type", "x11.struct.SARedirectKey.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SAType), 0, NULL, HFILL }},
+{ &hf_x11_struct_SARedirectKey_type, { "type", "x11.struct.SARedirectKey.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_SAType), 0, NULL, HFILL }},
{ &hf_x11_struct_SARedirectKey_newkey, { "newkey", "x11.struct.SARedirectKey.newkey", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SARedirectKey_mask_mask_Shift, { "Shift", "x11.struct.SARedirectKey.mask.Shift", FT_BOOLEAN, 8, NULL, 1 << 0, NULL, HFILL }},
{ &hf_x11_struct_SARedirectKey_mask_mask_Lock, { "Lock", "x11.struct.SARedirectKey.mask.Lock", FT_BOOLEAN, 8, NULL, 1 << 1, NULL, HFILL }},
@@ -4668,25 +4730,25 @@
{ &hf_x11_struct_SARedirectKey_vmodsLow_mask_7, { "7", "x11.struct.SARedirectKey.vmodsLow.7", FT_BOOLEAN, 8, NULL, 1 << 7, NULL, HFILL }},
{ &hf_x11_struct_SARedirectKey_vmodsLow, { "vmodsLow", "x11.struct.SARedirectKey.vmodsLow", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SADeviceBtn, { "SADeviceBtn", "x11.struct.SADeviceBtn", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_SADeviceBtn_type, { "type", "x11.struct.SADeviceBtn.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SAType), 0, NULL, HFILL }},
+{ &hf_x11_struct_SADeviceBtn_type, { "type", "x11.struct.SADeviceBtn.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_SAType), 0, NULL, HFILL }},
{ &hf_x11_struct_SADeviceBtn_flags, { "flags", "x11.struct.SADeviceBtn.flags", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SADeviceBtn_count, { "count", "x11.struct.SADeviceBtn.count", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SADeviceBtn_button, { "button", "x11.struct.SADeviceBtn.button", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SADeviceBtn_device, { "device", "x11.struct.SADeviceBtn.device", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SALockDeviceBtn, { "SALockDeviceBtn", "x11.struct.SALockDeviceBtn", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_SALockDeviceBtn_type, { "type", "x11.struct.SALockDeviceBtn.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SAType), 0, NULL, HFILL }},
+{ &hf_x11_struct_SALockDeviceBtn_type, { "type", "x11.struct.SALockDeviceBtn.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_SAType), 0, NULL, HFILL }},
{ &hf_x11_struct_SALockDeviceBtn_flags_mask_NoLock, { "NoLock", "x11.struct.SALockDeviceBtn.flags.NoLock", FT_BOOLEAN, 8, NULL, 1 << 0, NULL, HFILL }},
{ &hf_x11_struct_SALockDeviceBtn_flags_mask_NoUnlock, { "NoUnlock", "x11.struct.SALockDeviceBtn.flags.NoUnlock", FT_BOOLEAN, 8, NULL, 1 << 1, NULL, HFILL }},
{ &hf_x11_struct_SALockDeviceBtn_flags, { "flags", "x11.struct.SALockDeviceBtn.flags", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SALockDeviceBtn_button, { "button", "x11.struct.SALockDeviceBtn.button", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SALockDeviceBtn_device, { "device", "x11.struct.SALockDeviceBtn.device", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SADeviceValuator, { "SADeviceValuator", "x11.struct.SADeviceValuator", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_SADeviceValuator_type, { "type", "x11.struct.SADeviceValuator.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SAType), 0, NULL, HFILL }},
+{ &hf_x11_struct_SADeviceValuator_type, { "type", "x11.struct.SADeviceValuator.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_SAType), 0, NULL, HFILL }},
{ &hf_x11_struct_SADeviceValuator_device, { "device", "x11.struct.SADeviceValuator.device", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_SADeviceValuator_val1what, { "val1what", "x11.struct.SADeviceValuator.val1what", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SAValWhat), 0, NULL, HFILL }},
+{ &hf_x11_struct_SADeviceValuator_val1what, { "val1what", "x11.struct.SADeviceValuator.val1what", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_SAValWhat), 0, NULL, HFILL }},
{ &hf_x11_struct_SADeviceValuator_val1index, { "val1index", "x11.struct.SADeviceValuator.val1index", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SADeviceValuator_val1value, { "val1value", "x11.struct.SADeviceValuator.val1value", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_SADeviceValuator_val2what, { "val2what", "x11.struct.SADeviceValuator.val2what", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SAValWhat), 0, NULL, HFILL }},
+{ &hf_x11_struct_SADeviceValuator_val2what, { "val2what", "x11.struct.SADeviceValuator.val2what", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_SAValWhat), 0, NULL, HFILL }},
{ &hf_x11_struct_SADeviceValuator_val2index, { "val2index", "x11.struct.SADeviceValuator.val2index", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_SADeviceValuator_val2value, { "val2value", "x11.struct.SADeviceValuator.val2value", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_union_Action, { "Action", "x11.union.Action", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
@@ -4711,18 +4773,18 @@
{ &hf_x11_union_Action_devbtn, { "devbtn", "x11.union.Action.devbtn", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_union_Action_lockdevbtn, { "lockdevbtn", "x11.union.Action.lockdevbtn", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_union_Action_devval, { "devval", "x11.union.Action.devval", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_union_Action_type, { "type", "x11.union.Action.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_SAType), 0, NULL, HFILL }},
+{ &hf_x11_union_Action_type, { "type", "x11.union.Action.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_SAType), 0, NULL, HFILL }},
{ &hf_x11_xkb_UseExtension_wantedMajor, { "wantedMajor", "x11.xkb.UseExtension.wantedMajor", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_UseExtension_wantedMinor, { "wantedMinor", "x11.xkb.UseExtension.wantedMinor", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_UseExtension_reply_supported, { "supported", "x11.xkb.UseExtension.reply.supported", FT_BOOLEAN, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_UseExtension_reply_serverMajor, { "serverMajor", "x11.xkb.UseExtension.reply.serverMajor", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_UseExtension_reply_serverMinor, { "serverMinor", "x11.xkb.UseExtension.reply.serverMinor", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_SelectEvents_deviceSpec, { "deviceSpec", "x11.xkb.SelectEvents.deviceSpec", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xkb_SelectEvents_affectWhich, { "affectWhich", "x11.xkb.SelectEvents.affectWhich", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_EventType), 0, NULL, HFILL }},
-{ &hf_x11_xkb_SelectEvents_clear, { "clear", "x11.xkb.SelectEvents.clear", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_EventType), 0, NULL, HFILL }},
-{ &hf_x11_xkb_SelectEvents_selectAll, { "selectAll", "x11.xkb.SelectEvents.selectAll", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_EventType), 0, NULL, HFILL }},
-{ &hf_x11_xkb_SelectEvents_affectMap, { "affectMap", "x11.xkb.SelectEvents.affectMap", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_MapPart), 0, NULL, HFILL }},
-{ &hf_x11_xkb_SelectEvents_map, { "map", "x11.xkb.SelectEvents.map", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_MapPart), 0, NULL, HFILL }},
+{ &hf_x11_xkb_SelectEvents_affectWhich, { "affectWhich", "x11.xkb.SelectEvents.affectWhich", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_xkb_EventType), 0, NULL, HFILL }},
+{ &hf_x11_xkb_SelectEvents_clear, { "clear", "x11.xkb.SelectEvents.clear", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_xkb_EventType), 0, NULL, HFILL }},
+{ &hf_x11_xkb_SelectEvents_selectAll, { "selectAll", "x11.xkb.SelectEvents.selectAll", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_xkb_EventType), 0, NULL, HFILL }},
+{ &hf_x11_xkb_SelectEvents_affectMap, { "affectMap", "x11.xkb.SelectEvents.affectMap", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_xkb_MapPart), 0, NULL, HFILL }},
+{ &hf_x11_xkb_SelectEvents_map, { "map", "x11.xkb.SelectEvents.map", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_xkb_MapPart), 0, NULL, HFILL }},
{ &hf_x11_xkb_SelectEvents_NewKeyboardNotify_affectNewKeyboard_mask_Keycodes, { "Keycodes", "x11.xkb.SelectEvents.NewKeyboardNotify.affectNewKeyboard.Keycodes", FT_BOOLEAN, 16, NULL, 1 << 0, NULL, HFILL }},
{ &hf_x11_xkb_SelectEvents_NewKeyboardNotify_affectNewKeyboard_mask_Geometry, { "Geometry", "x11.xkb.SelectEvents.NewKeyboardNotify.affectNewKeyboard.Geometry", FT_BOOLEAN, 16, NULL, 1 << 1, NULL, HFILL }},
{ &hf_x11_xkb_SelectEvents_NewKeyboardNotify_affectNewKeyboard_mask_DeviceID, { "DeviceID", "x11.xkb.SelectEvents.NewKeyboardNotify.affectNewKeyboard.DeviceID", FT_BOOLEAN, 16, NULL, 1 << 2, NULL, HFILL }},
@@ -4897,8 +4959,8 @@
{ &hf_x11_xkb_GetState_reply_lockedMods_mask_5, { "5", "x11.xkb.GetState.reply.lockedMods.5", FT_BOOLEAN, 8, NULL, 1 << 7, NULL, HFILL }},
{ &hf_x11_xkb_GetState_reply_lockedMods_mask_Any, { "Any", "x11.xkb.GetState.reply.lockedMods.Any", FT_BOOLEAN, 8, NULL, 1 << 15, NULL, HFILL }},
{ &hf_x11_xkb_GetState_reply_lockedMods, { "lockedMods", "x11.xkb.GetState.reply.lockedMods", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xkb_GetState_reply_group, { "group", "x11.xkb.GetState.reply.group", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_Group), 0, NULL, HFILL }},
-{ &hf_x11_xkb_GetState_reply_lockedGroup, { "lockedGroup", "x11.xkb.GetState.reply.lockedGroup", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_Group), 0, NULL, HFILL }},
+{ &hf_x11_xkb_GetState_reply_group, { "group", "x11.xkb.GetState.reply.group", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_Group), 0, NULL, HFILL }},
+{ &hf_x11_xkb_GetState_reply_lockedGroup, { "lockedGroup", "x11.xkb.GetState.reply.lockedGroup", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_Group), 0, NULL, HFILL }},
{ &hf_x11_xkb_GetState_reply_baseGroup, { "baseGroup", "x11.xkb.GetState.reply.baseGroup", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetState_reply_latchedGroup, { "latchedGroup", "x11.xkb.GetState.reply.latchedGroup", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetState_reply_compatState_mask_Shift, { "Shift", "x11.xkb.GetState.reply.compatState.Shift", FT_BOOLEAN, 8, NULL, 1 << 0, NULL, HFILL }},
@@ -4931,6 +4993,16 @@
{ &hf_x11_xkb_GetState_reply_compatGrabMods_mask_5, { "5", "x11.xkb.GetState.reply.compatGrabMods.5", FT_BOOLEAN, 8, NULL, 1 << 7, NULL, HFILL }},
{ &hf_x11_xkb_GetState_reply_compatGrabMods_mask_Any, { "Any", "x11.xkb.GetState.reply.compatGrabMods.Any", FT_BOOLEAN, 8, NULL, 1 << 15, NULL, HFILL }},
{ &hf_x11_xkb_GetState_reply_compatGrabMods, { "compatGrabMods", "x11.xkb.GetState.reply.compatGrabMods", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_xkb_GetState_reply_lookupMods_mask_Shift, { "Shift", "x11.xkb.GetState.reply.lookupMods.Shift", FT_BOOLEAN, 8, NULL, 1 << 0, NULL, HFILL }},
+{ &hf_x11_xkb_GetState_reply_lookupMods_mask_Lock, { "Lock", "x11.xkb.GetState.reply.lookupMods.Lock", FT_BOOLEAN, 8, NULL, 1 << 1, NULL, HFILL }},
+{ &hf_x11_xkb_GetState_reply_lookupMods_mask_Control, { "Control", "x11.xkb.GetState.reply.lookupMods.Control", FT_BOOLEAN, 8, NULL, 1 << 2, NULL, HFILL }},
+{ &hf_x11_xkb_GetState_reply_lookupMods_mask_1, { "1", "x11.xkb.GetState.reply.lookupMods.1", FT_BOOLEAN, 8, NULL, 1 << 3, NULL, HFILL }},
+{ &hf_x11_xkb_GetState_reply_lookupMods_mask_2, { "2", "x11.xkb.GetState.reply.lookupMods.2", FT_BOOLEAN, 8, NULL, 1 << 4, NULL, HFILL }},
+{ &hf_x11_xkb_GetState_reply_lookupMods_mask_3, { "3", "x11.xkb.GetState.reply.lookupMods.3", FT_BOOLEAN, 8, NULL, 1 << 5, NULL, HFILL }},
+{ &hf_x11_xkb_GetState_reply_lookupMods_mask_4, { "4", "x11.xkb.GetState.reply.lookupMods.4", FT_BOOLEAN, 8, NULL, 1 << 6, NULL, HFILL }},
+{ &hf_x11_xkb_GetState_reply_lookupMods_mask_5, { "5", "x11.xkb.GetState.reply.lookupMods.5", FT_BOOLEAN, 8, NULL, 1 << 7, NULL, HFILL }},
+{ &hf_x11_xkb_GetState_reply_lookupMods_mask_Any, { "Any", "x11.xkb.GetState.reply.lookupMods.Any", FT_BOOLEAN, 8, NULL, 1 << 15, NULL, HFILL }},
+{ &hf_x11_xkb_GetState_reply_lookupMods, { "lookupMods", "x11.xkb.GetState.reply.lookupMods", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetState_reply_compatLookupMods_mask_Shift, { "Shift", "x11.xkb.GetState.reply.compatLookupMods.Shift", FT_BOOLEAN, 8, NULL, 1 << 0, NULL, HFILL }},
{ &hf_x11_xkb_GetState_reply_compatLookupMods_mask_Lock, { "Lock", "x11.xkb.GetState.reply.compatLookupMods.Lock", FT_BOOLEAN, 8, NULL, 1 << 1, NULL, HFILL }},
{ &hf_x11_xkb_GetState_reply_compatLookupMods_mask_Control, { "Control", "x11.xkb.GetState.reply.compatLookupMods.Control", FT_BOOLEAN, 8, NULL, 1 << 2, NULL, HFILL }},
@@ -4977,7 +5049,7 @@
{ &hf_x11_xkb_LatchLockState_modLocks_mask_Any, { "Any", "x11.xkb.LatchLockState.modLocks.Any", FT_BOOLEAN, 8, NULL, 1 << 15, NULL, HFILL }},
{ &hf_x11_xkb_LatchLockState_modLocks, { "modLocks", "x11.xkb.LatchLockState.modLocks", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_LatchLockState_lockGroup, { "lockGroup", "x11.xkb.LatchLockState.lockGroup", FT_BOOLEAN, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xkb_LatchLockState_groupLock, { "groupLock", "x11.xkb.LatchLockState.groupLock", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_Group), 0, NULL, HFILL }},
+{ &hf_x11_xkb_LatchLockState_groupLock, { "groupLock", "x11.xkb.LatchLockState.groupLock", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_Group), 0, NULL, HFILL }},
{ &hf_x11_xkb_LatchLockState_affectModLatches_mask_Shift, { "Shift", "x11.xkb.LatchLockState.affectModLatches.Shift", FT_BOOLEAN, 8, NULL, 1 << 0, NULL, HFILL }},
{ &hf_x11_xkb_LatchLockState_affectModLatches_mask_Lock, { "Lock", "x11.xkb.LatchLockState.affectModLatches.Lock", FT_BOOLEAN, 8, NULL, 1 << 1, NULL, HFILL }},
{ &hf_x11_xkb_LatchLockState_affectModLatches_mask_Control, { "Control", "x11.xkb.LatchLockState.affectModLatches.Control", FT_BOOLEAN, 8, NULL, 1 << 2, NULL, HFILL }},
@@ -5082,9 +5154,9 @@
{ &hf_x11_xkb_GetControls_reply_accessXTimeout, { "accessXTimeout", "x11.xkb.GetControls.reply.accessXTimeout", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsMask, { "accessXTimeoutOptionsMask", "x11.xkb.GetControls.reply.accessXTimeoutOptionsMask", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetControls_reply_accessXTimeoutOptionsValues, { "accessXTimeoutOptionsValues", "x11.xkb.GetControls.reply.accessXTimeoutOptionsValues", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xkb_GetControls_reply_accessXTimeoutMask, { "accessXTimeoutMask", "x11.xkb.GetControls.reply.accessXTimeoutMask", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_BoolCtrl), 0, NULL, HFILL }},
-{ &hf_x11_xkb_GetControls_reply_accessXTimeoutValues, { "accessXTimeoutValues", "x11.xkb.GetControls.reply.accessXTimeoutValues", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_BoolCtrl), 0, NULL, HFILL }},
-{ &hf_x11_xkb_GetControls_reply_enabledControls, { "enabledControls", "x11.xkb.GetControls.reply.enabledControls", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_BoolCtrl), 0, NULL, HFILL }},
+{ &hf_x11_xkb_GetControls_reply_accessXTimeoutMask, { "accessXTimeoutMask", "x11.xkb.GetControls.reply.accessXTimeoutMask", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_xkb_BoolCtrl), 0, NULL, HFILL }},
+{ &hf_x11_xkb_GetControls_reply_accessXTimeoutValues, { "accessXTimeoutValues", "x11.xkb.GetControls.reply.accessXTimeoutValues", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_xkb_BoolCtrl), 0, NULL, HFILL }},
+{ &hf_x11_xkb_GetControls_reply_enabledControls, { "enabledControls", "x11.xkb.GetControls.reply.enabledControls", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_xkb_BoolCtrl), 0, NULL, HFILL }},
{ &hf_x11_xkb_GetControls_reply_perKeyRepeat, { "perKeyRepeat", "x11.xkb.GetControls.reply.perKeyRepeat", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_SetControls_deviceSpec, { "deviceSpec", "x11.xkb.SetControls.deviceSpec", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_SetControls_affectInternalRealMods_mask_Shift, { "Shift", "x11.xkb.SetControls.affectInternalRealMods.Shift", FT_BOOLEAN, 8, NULL, 1 << 0, NULL, HFILL }},
@@ -5097,16 +5169,16 @@
{ &hf_x11_xkb_SetControls_affectInternalRealMods_mask_5, { "5", "x11.xkb.SetControls.affectInternalRealMods.5", FT_BOOLEAN, 8, NULL, 1 << 7, NULL, HFILL }},
{ &hf_x11_xkb_SetControls_affectInternalRealMods_mask_Any, { "Any", "x11.xkb.SetControls.affectInternalRealMods.Any", FT_BOOLEAN, 8, NULL, 1 << 15, NULL, HFILL }},
{ &hf_x11_xkb_SetControls_affectInternalRealMods, { "affectInternalRealMods", "x11.xkb.SetControls.affectInternalRealMods", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_interanlRealMods_mask_Shift, { "Shift", "x11.xkb.SetControls.interanlRealMods.Shift", FT_BOOLEAN, 8, NULL, 1 << 0, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_interanlRealMods_mask_Lock, { "Lock", "x11.xkb.SetControls.interanlRealMods.Lock", FT_BOOLEAN, 8, NULL, 1 << 1, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_interanlRealMods_mask_Control, { "Control", "x11.xkb.SetControls.interanlRealMods.Control", FT_BOOLEAN, 8, NULL, 1 << 2, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_interanlRealMods_mask_1, { "1", "x11.xkb.SetControls.interanlRealMods.1", FT_BOOLEAN, 8, NULL, 1 << 3, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_interanlRealMods_mask_2, { "2", "x11.xkb.SetControls.interanlRealMods.2", FT_BOOLEAN, 8, NULL, 1 << 4, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_interanlRealMods_mask_3, { "3", "x11.xkb.SetControls.interanlRealMods.3", FT_BOOLEAN, 8, NULL, 1 << 5, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_interanlRealMods_mask_4, { "4", "x11.xkb.SetControls.interanlRealMods.4", FT_BOOLEAN, 8, NULL, 1 << 6, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_interanlRealMods_mask_5, { "5", "x11.xkb.SetControls.interanlRealMods.5", FT_BOOLEAN, 8, NULL, 1 << 7, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_interanlRealMods_mask_Any, { "Any", "x11.xkb.SetControls.interanlRealMods.Any", FT_BOOLEAN, 8, NULL, 1 << 15, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_interanlRealMods, { "interanlRealMods", "x11.xkb.SetControls.interanlRealMods", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_internalRealMods_mask_Shift, { "Shift", "x11.xkb.SetControls.internalRealMods.Shift", FT_BOOLEAN, 8, NULL, 1 << 0, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_internalRealMods_mask_Lock, { "Lock", "x11.xkb.SetControls.internalRealMods.Lock", FT_BOOLEAN, 8, NULL, 1 << 1, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_internalRealMods_mask_Control, { "Control", "x11.xkb.SetControls.internalRealMods.Control", FT_BOOLEAN, 8, NULL, 1 << 2, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_internalRealMods_mask_1, { "1", "x11.xkb.SetControls.internalRealMods.1", FT_BOOLEAN, 8, NULL, 1 << 3, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_internalRealMods_mask_2, { "2", "x11.xkb.SetControls.internalRealMods.2", FT_BOOLEAN, 8, NULL, 1 << 4, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_internalRealMods_mask_3, { "3", "x11.xkb.SetControls.internalRealMods.3", FT_BOOLEAN, 8, NULL, 1 << 5, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_internalRealMods_mask_4, { "4", "x11.xkb.SetControls.internalRealMods.4", FT_BOOLEAN, 8, NULL, 1 << 6, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_internalRealMods_mask_5, { "5", "x11.xkb.SetControls.internalRealMods.5", FT_BOOLEAN, 8, NULL, 1 << 7, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_internalRealMods_mask_Any, { "Any", "x11.xkb.SetControls.internalRealMods.Any", FT_BOOLEAN, 8, NULL, 1 << 15, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_internalRealMods, { "internalRealMods", "x11.xkb.SetControls.internalRealMods", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_Shift, { "Shift", "x11.xkb.SetControls.affectIgnoreLockRealMods.Shift", FT_BOOLEAN, 8, NULL, 1 << 0, NULL, HFILL }},
{ &hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_Lock, { "Lock", "x11.xkb.SetControls.affectIgnoreLockRealMods.Lock", FT_BOOLEAN, 8, NULL, 1 << 1, NULL, HFILL }},
{ &hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_Control, { "Control", "x11.xkb.SetControls.affectIgnoreLockRealMods.Control", FT_BOOLEAN, 8, NULL, 1 << 2, NULL, HFILL }},
@@ -5161,45 +5233,45 @@
{ &hf_x11_xkb_SetControls_internalVirtualMods_mask_14, { "14", "x11.xkb.SetControls.internalVirtualMods.14", FT_BOOLEAN, 16, NULL, 1 << 14, NULL, HFILL }},
{ &hf_x11_xkb_SetControls_internalVirtualMods_mask_15, { "15", "x11.xkb.SetControls.internalVirtualMods.15", FT_BOOLEAN, 16, NULL, 1 << 15, NULL, HFILL }},
{ &hf_x11_xkb_SetControls_internalVirtualMods, { "internalVirtualMods", "x11.xkb.SetControls.internalVirtualMods", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_0, { "0", "x11.xkb.SetControls.affectInternalLockVirtualMods.0", FT_BOOLEAN, 16, NULL, 1 << 0, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_1, { "1", "x11.xkb.SetControls.affectInternalLockVirtualMods.1", FT_BOOLEAN, 16, NULL, 1 << 1, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_2, { "2", "x11.xkb.SetControls.affectInternalLockVirtualMods.2", FT_BOOLEAN, 16, NULL, 1 << 2, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_3, { "3", "x11.xkb.SetControls.affectInternalLockVirtualMods.3", FT_BOOLEAN, 16, NULL, 1 << 3, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_4, { "4", "x11.xkb.SetControls.affectInternalLockVirtualMods.4", FT_BOOLEAN, 16, NULL, 1 << 4, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_5, { "5", "x11.xkb.SetControls.affectInternalLockVirtualMods.5", FT_BOOLEAN, 16, NULL, 1 << 5, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_6, { "6", "x11.xkb.SetControls.affectInternalLockVirtualMods.6", FT_BOOLEAN, 16, NULL, 1 << 6, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_7, { "7", "x11.xkb.SetControls.affectInternalLockVirtualMods.7", FT_BOOLEAN, 16, NULL, 1 << 7, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_8, { "8", "x11.xkb.SetControls.affectInternalLockVirtualMods.8", FT_BOOLEAN, 16, NULL, 1 << 8, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_9, { "9", "x11.xkb.SetControls.affectInternalLockVirtualMods.9", FT_BOOLEAN, 16, NULL, 1 << 9, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_10, { "10", "x11.xkb.SetControls.affectInternalLockVirtualMods.10", FT_BOOLEAN, 16, NULL, 1 << 10, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_11, { "11", "x11.xkb.SetControls.affectInternalLockVirtualMods.11", FT_BOOLEAN, 16, NULL, 1 << 11, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_12, { "12", "x11.xkb.SetControls.affectInternalLockVirtualMods.12", FT_BOOLEAN, 16, NULL, 1 << 12, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_13, { "13", "x11.xkb.SetControls.affectInternalLockVirtualMods.13", FT_BOOLEAN, 16, NULL, 1 << 13, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_14, { "14", "x11.xkb.SetControls.affectInternalLockVirtualMods.14", FT_BOOLEAN, 16, NULL, 1 << 14, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_15, { "15", "x11.xkb.SetControls.affectInternalLockVirtualMods.15", FT_BOOLEAN, 16, NULL, 1 << 15, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_affectInternalLockVirtualMods, { "affectInternalLockVirtualMods", "x11.xkb.SetControls.affectInternalLockVirtualMods", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_internalLockVirtualMods_mask_0, { "0", "x11.xkb.SetControls.internalLockVirtualMods.0", FT_BOOLEAN, 16, NULL, 1 << 0, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_internalLockVirtualMods_mask_1, { "1", "x11.xkb.SetControls.internalLockVirtualMods.1", FT_BOOLEAN, 16, NULL, 1 << 1, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_internalLockVirtualMods_mask_2, { "2", "x11.xkb.SetControls.internalLockVirtualMods.2", FT_BOOLEAN, 16, NULL, 1 << 2, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_internalLockVirtualMods_mask_3, { "3", "x11.xkb.SetControls.internalLockVirtualMods.3", FT_BOOLEAN, 16, NULL, 1 << 3, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_internalLockVirtualMods_mask_4, { "4", "x11.xkb.SetControls.internalLockVirtualMods.4", FT_BOOLEAN, 16, NULL, 1 << 4, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_internalLockVirtualMods_mask_5, { "5", "x11.xkb.SetControls.internalLockVirtualMods.5", FT_BOOLEAN, 16, NULL, 1 << 5, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_internalLockVirtualMods_mask_6, { "6", "x11.xkb.SetControls.internalLockVirtualMods.6", FT_BOOLEAN, 16, NULL, 1 << 6, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_internalLockVirtualMods_mask_7, { "7", "x11.xkb.SetControls.internalLockVirtualMods.7", FT_BOOLEAN, 16, NULL, 1 << 7, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_internalLockVirtualMods_mask_8, { "8", "x11.xkb.SetControls.internalLockVirtualMods.8", FT_BOOLEAN, 16, NULL, 1 << 8, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_internalLockVirtualMods_mask_9, { "9", "x11.xkb.SetControls.internalLockVirtualMods.9", FT_BOOLEAN, 16, NULL, 1 << 9, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_internalLockVirtualMods_mask_10, { "10", "x11.xkb.SetControls.internalLockVirtualMods.10", FT_BOOLEAN, 16, NULL, 1 << 10, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_internalLockVirtualMods_mask_11, { "11", "x11.xkb.SetControls.internalLockVirtualMods.11", FT_BOOLEAN, 16, NULL, 1 << 11, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_internalLockVirtualMods_mask_12, { "12", "x11.xkb.SetControls.internalLockVirtualMods.12", FT_BOOLEAN, 16, NULL, 1 << 12, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_internalLockVirtualMods_mask_13, { "13", "x11.xkb.SetControls.internalLockVirtualMods.13", FT_BOOLEAN, 16, NULL, 1 << 13, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_internalLockVirtualMods_mask_14, { "14", "x11.xkb.SetControls.internalLockVirtualMods.14", FT_BOOLEAN, 16, NULL, 1 << 14, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_internalLockVirtualMods_mask_15, { "15", "x11.xkb.SetControls.internalLockVirtualMods.15", FT_BOOLEAN, 16, NULL, 1 << 15, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_internalLockVirtualMods, { "internalLockVirtualMods", "x11.xkb.SetControls.internalLockVirtualMods", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_0, { "0", "x11.xkb.SetControls.affectIgnoreLockVirtualMods.0", FT_BOOLEAN, 16, NULL, 1 << 0, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_1, { "1", "x11.xkb.SetControls.affectIgnoreLockVirtualMods.1", FT_BOOLEAN, 16, NULL, 1 << 1, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_2, { "2", "x11.xkb.SetControls.affectIgnoreLockVirtualMods.2", FT_BOOLEAN, 16, NULL, 1 << 2, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_3, { "3", "x11.xkb.SetControls.affectIgnoreLockVirtualMods.3", FT_BOOLEAN, 16, NULL, 1 << 3, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_4, { "4", "x11.xkb.SetControls.affectIgnoreLockVirtualMods.4", FT_BOOLEAN, 16, NULL, 1 << 4, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_5, { "5", "x11.xkb.SetControls.affectIgnoreLockVirtualMods.5", FT_BOOLEAN, 16, NULL, 1 << 5, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_6, { "6", "x11.xkb.SetControls.affectIgnoreLockVirtualMods.6", FT_BOOLEAN, 16, NULL, 1 << 6, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_7, { "7", "x11.xkb.SetControls.affectIgnoreLockVirtualMods.7", FT_BOOLEAN, 16, NULL, 1 << 7, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_8, { "8", "x11.xkb.SetControls.affectIgnoreLockVirtualMods.8", FT_BOOLEAN, 16, NULL, 1 << 8, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_9, { "9", "x11.xkb.SetControls.affectIgnoreLockVirtualMods.9", FT_BOOLEAN, 16, NULL, 1 << 9, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_10, { "10", "x11.xkb.SetControls.affectIgnoreLockVirtualMods.10", FT_BOOLEAN, 16, NULL, 1 << 10, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_11, { "11", "x11.xkb.SetControls.affectIgnoreLockVirtualMods.11", FT_BOOLEAN, 16, NULL, 1 << 11, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_12, { "12", "x11.xkb.SetControls.affectIgnoreLockVirtualMods.12", FT_BOOLEAN, 16, NULL, 1 << 12, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_13, { "13", "x11.xkb.SetControls.affectIgnoreLockVirtualMods.13", FT_BOOLEAN, 16, NULL, 1 << 13, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_14, { "14", "x11.xkb.SetControls.affectIgnoreLockVirtualMods.14", FT_BOOLEAN, 16, NULL, 1 << 14, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods_mask_15, { "15", "x11.xkb.SetControls.affectIgnoreLockVirtualMods.15", FT_BOOLEAN, 16, NULL, 1 << 15, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_affectIgnoreLockVirtualMods, { "affectIgnoreLockVirtualMods", "x11.xkb.SetControls.affectIgnoreLockVirtualMods", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_0, { "0", "x11.xkb.SetControls.ignoreLockVirtualMods.0", FT_BOOLEAN, 16, NULL, 1 << 0, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_1, { "1", "x11.xkb.SetControls.ignoreLockVirtualMods.1", FT_BOOLEAN, 16, NULL, 1 << 1, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_2, { "2", "x11.xkb.SetControls.ignoreLockVirtualMods.2", FT_BOOLEAN, 16, NULL, 1 << 2, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_3, { "3", "x11.xkb.SetControls.ignoreLockVirtualMods.3", FT_BOOLEAN, 16, NULL, 1 << 3, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_4, { "4", "x11.xkb.SetControls.ignoreLockVirtualMods.4", FT_BOOLEAN, 16, NULL, 1 << 4, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_5, { "5", "x11.xkb.SetControls.ignoreLockVirtualMods.5", FT_BOOLEAN, 16, NULL, 1 << 5, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_6, { "6", "x11.xkb.SetControls.ignoreLockVirtualMods.6", FT_BOOLEAN, 16, NULL, 1 << 6, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_7, { "7", "x11.xkb.SetControls.ignoreLockVirtualMods.7", FT_BOOLEAN, 16, NULL, 1 << 7, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_8, { "8", "x11.xkb.SetControls.ignoreLockVirtualMods.8", FT_BOOLEAN, 16, NULL, 1 << 8, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_9, { "9", "x11.xkb.SetControls.ignoreLockVirtualMods.9", FT_BOOLEAN, 16, NULL, 1 << 9, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_10, { "10", "x11.xkb.SetControls.ignoreLockVirtualMods.10", FT_BOOLEAN, 16, NULL, 1 << 10, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_11, { "11", "x11.xkb.SetControls.ignoreLockVirtualMods.11", FT_BOOLEAN, 16, NULL, 1 << 11, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_12, { "12", "x11.xkb.SetControls.ignoreLockVirtualMods.12", FT_BOOLEAN, 16, NULL, 1 << 12, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_13, { "13", "x11.xkb.SetControls.ignoreLockVirtualMods.13", FT_BOOLEAN, 16, NULL, 1 << 13, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_14, { "14", "x11.xkb.SetControls.ignoreLockVirtualMods.14", FT_BOOLEAN, 16, NULL, 1 << 14, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_ignoreLockVirtualMods_mask_15, { "15", "x11.xkb.SetControls.ignoreLockVirtualMods.15", FT_BOOLEAN, 16, NULL, 1 << 15, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_ignoreLockVirtualMods, { "ignoreLockVirtualMods", "x11.xkb.SetControls.ignoreLockVirtualMods", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_SetControls_mouseKeysDfltBtn, { "mouseKeysDfltBtn", "x11.xkb.SetControls.mouseKeysDfltBtn", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_SetControls_groupsWrap, { "groupsWrap", "x11.xkb.SetControls.groupsWrap", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_SetControls_accessXOptions, { "accessXOptions", "x11.xkb.SetControls.accessXOptions", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_affectEnabledControls, { "affectEnabledControls", "x11.xkb.SetControls.affectEnabledControls", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_BoolCtrl), 0, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_enabledControls, { "enabledControls", "x11.xkb.SetControls.enabledControls", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_BoolCtrl), 0, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_affectEnabledControls, { "affectEnabledControls", "x11.xkb.SetControls.affectEnabledControls", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_xkb_BoolCtrl), 0, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_enabledControls, { "enabledControls", "x11.xkb.SetControls.enabledControls", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_xkb_BoolCtrl), 0, NULL, HFILL }},
{ &hf_x11_xkb_SetControls_changeControls_mask_GroupsWrap, { "GroupsWrap", "x11.xkb.SetControls.changeControls.GroupsWrap", FT_BOOLEAN, 32, NULL, 1 << 27, NULL, HFILL }},
{ &hf_x11_xkb_SetControls_changeControls_mask_InternalMods, { "InternalMods", "x11.xkb.SetControls.changeControls.InternalMods", FT_BOOLEAN, 32, NULL, 1 << 28, NULL, HFILL }},
{ &hf_x11_xkb_SetControls_changeControls_mask_IgnoreLockMods, { "IgnoreLockMods", "x11.xkb.SetControls.changeControls.IgnoreLockMods", FT_BOOLEAN, 32, NULL, 1 << 29, NULL, HFILL }},
@@ -5216,14 +5288,14 @@
{ &hf_x11_xkb_SetControls_mouseKeysMaxSpeed, { "mouseKeysMaxSpeed", "x11.xkb.SetControls.mouseKeysMaxSpeed", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_SetControls_mouseKeysCurve, { "mouseKeysCurve", "x11.xkb.SetControls.mouseKeysCurve", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_SetControls_accessXTimeout, { "accessXTimeout", "x11.xkb.SetControls.accessXTimeout", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_accessXTimeoutMask, { "accessXTimeoutMask", "x11.xkb.SetControls.accessXTimeoutMask", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_BoolCtrl), 0, NULL, HFILL }},
-{ &hf_x11_xkb_SetControls_accessXTimeoutValues, { "accessXTimeoutValues", "x11.xkb.SetControls.accessXTimeoutValues", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_BoolCtrl), 0, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_accessXTimeoutMask, { "accessXTimeoutMask", "x11.xkb.SetControls.accessXTimeoutMask", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_xkb_BoolCtrl), 0, NULL, HFILL }},
+{ &hf_x11_xkb_SetControls_accessXTimeoutValues, { "accessXTimeoutValues", "x11.xkb.SetControls.accessXTimeoutValues", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_xkb_BoolCtrl), 0, NULL, HFILL }},
{ &hf_x11_xkb_SetControls_accessXTimeoutOptionsMask, { "accessXTimeoutOptionsMask", "x11.xkb.SetControls.accessXTimeoutOptionsMask", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_SetControls_accessXTimeoutOptionsValues, { "accessXTimeoutOptionsValues", "x11.xkb.SetControls.accessXTimeoutOptionsValues", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_SetControls_perKeyRepeat, { "perKeyRepeat", "x11.xkb.SetControls.perKeyRepeat", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetMap_deviceSpec, { "deviceSpec", "x11.xkb.GetMap.deviceSpec", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xkb_GetMap_full, { "full", "x11.xkb.GetMap.full", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_MapPart), 0, NULL, HFILL }},
-{ &hf_x11_xkb_GetMap_partial, { "partial", "x11.xkb.GetMap.partial", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_MapPart), 0, NULL, HFILL }},
+{ &hf_x11_xkb_GetMap_full, { "full", "x11.xkb.GetMap.full", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_xkb_MapPart), 0, NULL, HFILL }},
+{ &hf_x11_xkb_GetMap_partial, { "partial", "x11.xkb.GetMap.partial", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_xkb_MapPart), 0, NULL, HFILL }},
{ &hf_x11_xkb_GetMap_firstType, { "firstType", "x11.xkb.GetMap.firstType", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetMap_nTypes, { "nTypes", "x11.xkb.GetMap.nTypes", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetMap_firstKeySym, { "firstKeySym", "x11.xkb.GetMap.firstKeySym", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -5258,7 +5330,7 @@
{ &hf_x11_xkb_GetMap_reply_deviceID, { "deviceID", "x11.xkb.GetMap.reply.deviceID", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetMap_reply_minKeyCode, { "minKeyCode", "x11.xkb.GetMap.reply.minKeyCode", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetMap_reply_maxKeyCode, { "maxKeyCode", "x11.xkb.GetMap.reply.maxKeyCode", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xkb_GetMap_reply_present, { "present", "x11.xkb.GetMap.reply.present", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_MapPart), 0, NULL, HFILL }},
+{ &hf_x11_xkb_GetMap_reply_present, { "present", "x11.xkb.GetMap.reply.present", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_xkb_MapPart), 0, NULL, HFILL }},
{ &hf_x11_xkb_GetMap_reply_firstType, { "firstType", "x11.xkb.GetMap.reply.firstType", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetMap_reply_nTypes, { "nTypes", "x11.xkb.GetMap.reply.nTypes", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetMap_reply_totalTypes, { "totalTypes", "x11.xkb.GetMap.reply.totalTypes", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -5321,7 +5393,7 @@
{ &hf_x11_xkb_GetMap_reply_VirtualModMap_vmodmap_rtrn, { "vmodmap_rtrn", "x11.xkb.GetMap.reply.VirtualModMap.vmodmap_rtrn", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetMap_reply_VirtualModMap_vmodmap_rtrn_item, { "vmodmap_rtrn", "x11.xkb.GetMap.reply.VirtualModMap.vmodmap_rtrn", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_SetMap_deviceSpec, { "deviceSpec", "x11.xkb.SetMap.deviceSpec", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xkb_SetMap_present, { "present", "x11.xkb.SetMap.present", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_MapPart), 0, NULL, HFILL }},
+{ &hf_x11_xkb_SetMap_present, { "present", "x11.xkb.SetMap.present", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_xkb_MapPart), 0, NULL, HFILL }},
{ &hf_x11_xkb_SetMap_flags_mask_ResizeTypes, { "ResizeTypes", "x11.xkb.SetMap.flags.ResizeTypes", FT_BOOLEAN, 16, NULL, 1 << 0, NULL, HFILL }},
{ &hf_x11_xkb_SetMap_flags_mask_RecomputeActions, { "RecomputeActions", "x11.xkb.SetMap.flags.RecomputeActions", FT_BOOLEAN, 16, NULL, 1 << 1, NULL, HFILL }},
{ &hf_x11_xkb_SetMap_flags, { "flags", "x11.xkb.SetMap.flags", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -5428,8 +5500,8 @@
{ &hf_x11_xkb_SetIndicatorMap_maps, { "maps", "x11.xkb.SetIndicatorMap.maps", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_SetIndicatorMap_maps_item, { "maps", "x11.xkb.SetIndicatorMap.maps", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetNamedIndicator_deviceSpec, { "deviceSpec", "x11.xkb.GetNamedIndicator.deviceSpec", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xkb_GetNamedIndicator_ledClass, { "ledClass", "x11.xkb.GetNamedIndicator.ledClass", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_LedClass), 0, NULL, HFILL }},
-{ &hf_x11_xkb_GetNamedIndicator_ledID, { "ledID", "x11.xkb.GetNamedIndicator.ledID", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_ID), 0, NULL, HFILL }},
+{ &hf_x11_xkb_GetNamedIndicator_ledClass, { "ledClass", "x11.xkb.GetNamedIndicator.ledClass", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_xkb_LedClass), 0, NULL, HFILL }},
+{ &hf_x11_xkb_GetNamedIndicator_ledID, { "ledID", "x11.xkb.GetNamedIndicator.ledID", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_xkb_ID), 0, NULL, HFILL }},
{ &hf_x11_xkb_GetNamedIndicator_indicator, { "indicator", "x11.xkb.GetNamedIndicator.indicator", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetNamedIndicator_reply_deviceID, { "deviceID", "x11.xkb.GetNamedIndicator.reply.deviceID", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetNamedIndicator_reply_indicator, { "indicator", "x11.xkb.GetNamedIndicator.reply.indicator", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
@@ -5507,8 +5579,8 @@
{ &hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_IgnoreGroupLockMask, { "IgnoreGroupLockMask", "x11.xkb.GetNamedIndicator.reply.map_ctrls.IgnoreGroupLockMask", FT_BOOLEAN, 32, NULL, 1 << 12, NULL, HFILL }},
{ &hf_x11_xkb_GetNamedIndicator_reply_map_ctrls, { "map_ctrls", "x11.xkb.GetNamedIndicator.reply.map_ctrls", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_SetNamedIndicator_deviceSpec, { "deviceSpec", "x11.xkb.SetNamedIndicator.deviceSpec", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xkb_SetNamedIndicator_ledClass, { "ledClass", "x11.xkb.SetNamedIndicator.ledClass", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_LedClass), 0, NULL, HFILL }},
-{ &hf_x11_xkb_SetNamedIndicator_ledID, { "ledID", "x11.xkb.SetNamedIndicator.ledID", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_ID), 0, NULL, HFILL }},
+{ &hf_x11_xkb_SetNamedIndicator_ledClass, { "ledClass", "x11.xkb.SetNamedIndicator.ledClass", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_xkb_LedClass), 0, NULL, HFILL }},
+{ &hf_x11_xkb_SetNamedIndicator_ledID, { "ledID", "x11.xkb.SetNamedIndicator.ledID", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_xkb_ID), 0, NULL, HFILL }},
{ &hf_x11_xkb_SetNamedIndicator_indicator, { "indicator", "x11.xkb.SetNamedIndicator.indicator", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_SetNamedIndicator_setState, { "setState", "x11.xkb.SetNamedIndicator.setState", FT_BOOLEAN, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_SetNamedIndicator_on, { "on", "x11.xkb.SetNamedIndicator.on", FT_BOOLEAN, BASE_NONE, NULL, 0, NULL, HFILL }},
@@ -5958,7 +6030,7 @@
{ &hf_x11_xkb_GetKbdByName_reply_Types_getmap_length, { "getmap_length", "x11.xkb.GetKbdByName.reply.Types.getmap_length", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetKbdByName_reply_Types_typeMinKeyCode, { "typeMinKeyCode", "x11.xkb.GetKbdByName.reply.Types.typeMinKeyCode", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetKbdByName_reply_Types_typeMaxKeyCode, { "typeMaxKeyCode", "x11.xkb.GetKbdByName.reply.Types.typeMaxKeyCode", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xkb_GetKbdByName_reply_Types_present, { "present", "x11.xkb.GetKbdByName.reply.Types.present", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_MapPart), 0, NULL, HFILL }},
+{ &hf_x11_xkb_GetKbdByName_reply_Types_present, { "present", "x11.xkb.GetKbdByName.reply.Types.present", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_xkb_MapPart), 0, NULL, HFILL }},
{ &hf_x11_xkb_GetKbdByName_reply_Types_firstType, { "firstType", "x11.xkb.GetKbdByName.reply.Types.firstType", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetKbdByName_reply_Types_nTypes, { "nTypes", "x11.xkb.GetKbdByName.reply.Types.nTypes", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetKbdByName_reply_Types_totalTypes, { "totalTypes", "x11.xkb.GetKbdByName.reply.Types.totalTypes", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -6035,7 +6107,7 @@
{ &hf_x11_xkb_GetKbdByName_reply_ClientSymbols_clientDeviceID, { "clientDeviceID", "x11.xkb.GetKbdByName.reply.ClientSymbols.clientDeviceID", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetKbdByName_reply_ClientSymbols_clientMinKeyCode, { "clientMinKeyCode", "x11.xkb.GetKbdByName.reply.ClientSymbols.clientMinKeyCode", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetKbdByName_reply_ClientSymbols_clientMaxKeyCode, { "clientMaxKeyCode", "x11.xkb.GetKbdByName.reply.ClientSymbols.clientMaxKeyCode", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xkb_GetKbdByName_reply_ClientSymbols_present, { "present", "x11.xkb.GetKbdByName.reply.ClientSymbols.present", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_MapPart), 0, NULL, HFILL }},
+{ &hf_x11_xkb_GetKbdByName_reply_ClientSymbols_present, { "present", "x11.xkb.GetKbdByName.reply.ClientSymbols.present", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_xkb_MapPart), 0, NULL, HFILL }},
{ &hf_x11_xkb_GetKbdByName_reply_ClientSymbols_firstType, { "firstType", "x11.xkb.GetKbdByName.reply.ClientSymbols.firstType", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetKbdByName_reply_ClientSymbols_nTypes, { "nTypes", "x11.xkb.GetKbdByName.reply.ClientSymbols.nTypes", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetKbdByName_reply_ClientSymbols_totalTypes, { "totalTypes", "x11.xkb.GetKbdByName.reply.ClientSymbols.totalTypes", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -6100,7 +6172,7 @@
{ &hf_x11_xkb_GetKbdByName_reply_ServerSymbols_serverDeviceID, { "serverDeviceID", "x11.xkb.GetKbdByName.reply.ServerSymbols.serverDeviceID", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetKbdByName_reply_ServerSymbols_serverMinKeyCode, { "serverMinKeyCode", "x11.xkb.GetKbdByName.reply.ServerSymbols.serverMinKeyCode", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetKbdByName_reply_ServerSymbols_serverMaxKeyCode, { "serverMaxKeyCode", "x11.xkb.GetKbdByName.reply.ServerSymbols.serverMaxKeyCode", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xkb_GetKbdByName_reply_ServerSymbols_present, { "present", "x11.xkb.GetKbdByName.reply.ServerSymbols.present", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_MapPart), 0, NULL, HFILL }},
+{ &hf_x11_xkb_GetKbdByName_reply_ServerSymbols_present, { "present", "x11.xkb.GetKbdByName.reply.ServerSymbols.present", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_xkb_MapPart), 0, NULL, HFILL }},
{ &hf_x11_xkb_GetKbdByName_reply_ServerSymbols_firstType, { "firstType", "x11.xkb.GetKbdByName.reply.ServerSymbols.firstType", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetKbdByName_reply_ServerSymbols_nTypes, { "nTypes", "x11.xkb.GetKbdByName.reply.ServerSymbols.nTypes", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetKbdByName_reply_ServerSymbols_totalTypes, { "totalTypes", "x11.xkb.GetKbdByName.reply.ServerSymbols.totalTypes", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -6338,8 +6410,8 @@
{ &hf_x11_xkb_GetDeviceInfo_allButtons, { "allButtons", "x11.xkb.GetDeviceInfo.allButtons", FT_BOOLEAN, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetDeviceInfo_firstButton, { "firstButton", "x11.xkb.GetDeviceInfo.firstButton", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetDeviceInfo_nButtons, { "nButtons", "x11.xkb.GetDeviceInfo.nButtons", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xkb_GetDeviceInfo_ledClass, { "ledClass", "x11.xkb.GetDeviceInfo.ledClass", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_LedClass), 0, NULL, HFILL }},
-{ &hf_x11_xkb_GetDeviceInfo_ledID, { "ledID", "x11.xkb.GetDeviceInfo.ledID", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_ID), 0, NULL, HFILL }},
+{ &hf_x11_xkb_GetDeviceInfo_ledClass, { "ledClass", "x11.xkb.GetDeviceInfo.ledClass", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_xkb_LedClass), 0, NULL, HFILL }},
+{ &hf_x11_xkb_GetDeviceInfo_ledID, { "ledID", "x11.xkb.GetDeviceInfo.ledID", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_xkb_ID), 0, NULL, HFILL }},
{ &hf_x11_xkb_GetDeviceInfo_reply_deviceID, { "deviceID", "x11.xkb.GetDeviceInfo.reply.deviceID", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetDeviceInfo_reply_present_mask_Keyboards, { "Keyboards", "x11.xkb.GetDeviceInfo.reply.present.Keyboards", FT_BOOLEAN, 16, NULL, 1 << 0, NULL, HFILL }},
{ &hf_x11_xkb_GetDeviceInfo_reply_present_mask_ButtonActions, { "ButtonActions", "x11.xkb.GetDeviceInfo.reply.present.ButtonActions", FT_BOOLEAN, 16, NULL, 1 << 1, NULL, HFILL }},
@@ -6366,8 +6438,8 @@
{ &hf_x11_xkb_GetDeviceInfo_reply_nBtnsRtrn, { "nBtnsRtrn", "x11.xkb.GetDeviceInfo.reply.nBtnsRtrn", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetDeviceInfo_reply_totalBtns, { "totalBtns", "x11.xkb.GetDeviceInfo.reply.totalBtns", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetDeviceInfo_reply_hasOwnState, { "hasOwnState", "x11.xkb.GetDeviceInfo.reply.hasOwnState", FT_BOOLEAN, BASE_NONE, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xkb_GetDeviceInfo_reply_dfltKbdFB, { "dfltKbdFB", "x11.xkb.GetDeviceInfo.reply.dfltKbdFB", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_ID), 0, NULL, HFILL }},
-{ &hf_x11_xkb_GetDeviceInfo_reply_dfltLedFB, { "dfltLedFB", "x11.xkb.GetDeviceInfo.reply.dfltLedFB", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_ID), 0, NULL, HFILL }},
+{ &hf_x11_xkb_GetDeviceInfo_reply_dfltKbdFB, { "dfltKbdFB", "x11.xkb.GetDeviceInfo.reply.dfltKbdFB", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_xkb_ID), 0, NULL, HFILL }},
+{ &hf_x11_xkb_GetDeviceInfo_reply_dfltLedFB, { "dfltLedFB", "x11.xkb.GetDeviceInfo.reply.dfltLedFB", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_xkb_ID), 0, NULL, HFILL }},
{ &hf_x11_xkb_GetDeviceInfo_reply_devType, { "devType", "x11.xkb.GetDeviceInfo.reply.devType", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetDeviceInfo_reply_nameLen, { "nameLen", "x11.xkb.GetDeviceInfo.reply.nameLen", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_GetDeviceInfo_reply_name, { "name", "x11.xkb.GetDeviceInfo.reply.name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
@@ -6497,10 +6569,10 @@
{ &hf_x11_xkb_StateNotify_lockedMods_mask_5, { "5", "x11.xkb.StateNotify.lockedMods.5", FT_BOOLEAN, 8, NULL, 1 << 7, NULL, HFILL }},
{ &hf_x11_xkb_StateNotify_lockedMods_mask_Any, { "Any", "x11.xkb.StateNotify.lockedMods.Any", FT_BOOLEAN, 8, NULL, 1 << 15, NULL, HFILL }},
{ &hf_x11_xkb_StateNotify_lockedMods, { "lockedMods", "x11.xkb.StateNotify.lockedMods", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xkb_StateNotify_group, { "group", "x11.xkb.StateNotify.group", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_Group), 0, NULL, HFILL }},
+{ &hf_x11_xkb_StateNotify_group, { "group", "x11.xkb.StateNotify.group", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_Group), 0, NULL, HFILL }},
{ &hf_x11_xkb_StateNotify_baseGroup, { "baseGroup", "x11.xkb.StateNotify.baseGroup", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_StateNotify_latchedGroup, { "latchedGroup", "x11.xkb.StateNotify.latchedGroup", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xkb_StateNotify_lockedGroup, { "lockedGroup", "x11.xkb.StateNotify.lockedGroup", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_Group), 0, NULL, HFILL }},
+{ &hf_x11_xkb_StateNotify_lockedGroup, { "lockedGroup", "x11.xkb.StateNotify.lockedGroup", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_Group), 0, NULL, HFILL }},
{ &hf_x11_xkb_StateNotify_compatState_mask_Shift, { "Shift", "x11.xkb.StateNotify.compatState.Shift", FT_BOOLEAN, 8, NULL, 1 << 0, NULL, HFILL }},
{ &hf_x11_xkb_StateNotify_compatState_mask_Lock, { "Lock", "x11.xkb.StateNotify.compatState.Lock", FT_BOOLEAN, 8, NULL, 1 << 1, NULL, HFILL }},
{ &hf_x11_xkb_StateNotify_compatState_mask_Control, { "Control", "x11.xkb.StateNotify.compatState.Control", FT_BOOLEAN, 8, NULL, 1 << 2, NULL, HFILL }},
@@ -6693,7 +6765,7 @@
{ &hf_x11_xkb_CompatMapNotify_nTotalSI, { "nTotalSI", "x11.xkb.CompatMapNotify.nTotalSI", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_BellNotify_time, { "time", "x11.xkb.BellNotify.time", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_BellNotify_deviceID, { "deviceID", "x11.xkb.BellNotify.deviceID", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xkb_BellNotify_bellClass, { "bellClass", "x11.xkb.BellNotify.bellClass", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_BellClassResult), 0, NULL, HFILL }},
+{ &hf_x11_xkb_BellNotify_bellClass, { "bellClass", "x11.xkb.BellNotify.bellClass", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_BellClassResult), 0, NULL, HFILL }},
{ &hf_x11_xkb_BellNotify_bellID, { "bellID", "x11.xkb.BellNotify.bellID", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_BellNotify_percent, { "percent", "x11.xkb.BellNotify.percent", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_BellNotify_pitch, { "pitch", "x11.xkb.BellNotify.pitch", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -6716,7 +6788,7 @@
{ &hf_x11_xkb_ActionMessage_mods_mask_5, { "5", "x11.xkb.ActionMessage.mods.5", FT_BOOLEAN, 8, NULL, 1 << 7, NULL, HFILL }},
{ &hf_x11_xkb_ActionMessage_mods_mask_Any, { "Any", "x11.xkb.ActionMessage.mods.Any", FT_BOOLEAN, 8, NULL, 1 << 15, NULL, HFILL }},
{ &hf_x11_xkb_ActionMessage_mods, { "mods", "x11.xkb.ActionMessage.mods", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xkb_ActionMessage_group, { "group", "x11.xkb.ActionMessage.group", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_Group), 0, NULL, HFILL }},
+{ &hf_x11_xkb_ActionMessage_group, { "group", "x11.xkb.ActionMessage.group", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xkb_Group), 0, NULL, HFILL }},
{ &hf_x11_xkb_ActionMessage_message, { "message", "x11.xkb.ActionMessage.message", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_AccessXNotify_time, { "time", "x11.xkb.AccessXNotify.time", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_AccessXNotify_deviceID, { "deviceID", "x11.xkb.AccessXNotify.deviceID", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -6739,7 +6811,7 @@
{ &hf_x11_xkb_ExtensionDeviceNotify_reason_mask_IndicatorMaps, { "IndicatorMaps", "x11.xkb.ExtensionDeviceNotify.reason.IndicatorMaps", FT_BOOLEAN, 16, NULL, 1 << 3, NULL, HFILL }},
{ &hf_x11_xkb_ExtensionDeviceNotify_reason_mask_IndicatorState, { "IndicatorState", "x11.xkb.ExtensionDeviceNotify.reason.IndicatorState", FT_BOOLEAN, 16, NULL, 1 << 4, NULL, HFILL }},
{ &hf_x11_xkb_ExtensionDeviceNotify_reason, { "reason", "x11.xkb.ExtensionDeviceNotify.reason", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xkb_ExtensionDeviceNotify_ledClass, { "ledClass", "x11.xkb.ExtensionDeviceNotify.ledClass", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_LedClassResult), 0, NULL, HFILL }},
+{ &hf_x11_xkb_ExtensionDeviceNotify_ledClass, { "ledClass", "x11.xkb.ExtensionDeviceNotify.ledClass", FT_UINT16, BASE_HEX_DEC, VALS(x11_enum_xkb_LedClassResult), 0, NULL, HFILL }},
{ &hf_x11_xkb_ExtensionDeviceNotify_ledID, { "ledID", "x11.xkb.ExtensionDeviceNotify.ledID", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_ExtensionDeviceNotify_ledsDefined, { "ledsDefined", "x11.xkb.ExtensionDeviceNotify.ledsDefined", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xkb_ExtensionDeviceNotify_ledState, { "ledState", "x11.xkb.ExtensionDeviceNotify.ledState", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -6918,8 +6990,8 @@
{ &hf_x11_xtest_FakeInput_detail, { "detail", "x11.xtest.FakeInput.detail", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xtest_FakeInput_time, { "time", "x11.xtest.FakeInput.time", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xtest_FakeInput_root, { "root", "x11.xtest.FakeInput.root", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xtest_FakeInput_rootX, { "rootX", "x11.xtest.FakeInput.rootX", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xtest_FakeInput_rootY, { "rootY", "x11.xtest.FakeInput.rootY", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_xtest_FakeInput_rootX, { "rootX", "x11.xtest.FakeInput.rootX", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
+{ &hf_x11_xtest_FakeInput_rootY, { "rootY", "x11.xtest.FakeInput.rootY", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xtest_FakeInput_deviceid, { "deviceid", "x11.xtest.FakeInput.deviceid", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xtest_GrabControl_impervious, { "impervious", "x11.xtest.GrabControl.impervious", FT_BOOLEAN, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xtest_extension_minor, { "extension-minor", "x11.extension-minor", FT_UINT8, BASE_DEC, VALS(xtest_extension_minor), 0, "minor opcode", HFILL }},
@@ -6961,8 +7033,8 @@
{ &hf_x11_struct_AttributeInfo_name, { "name", "x11.struct.AttributeInfo.name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_ImageFormatInfo, { "ImageFormatInfo", "x11.struct.ImageFormatInfo", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_ImageFormatInfo_id, { "id", "x11.struct.ImageFormatInfo.id", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_ImageFormatInfo_type, { "type", "x11.struct.ImageFormatInfo.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_ImageFormatInfoType), 0, NULL, HFILL }},
-{ &hf_x11_struct_ImageFormatInfo_byte_order, { "byte_order", "x11.struct.ImageFormatInfo.byte_order", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_ImageOrder), 0, NULL, HFILL }},
+{ &hf_x11_struct_ImageFormatInfo_type, { "type", "x11.struct.ImageFormatInfo.type", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xv_ImageFormatInfoType), 0, NULL, HFILL }},
+{ &hf_x11_struct_ImageFormatInfo_byte_order, { "byte_order", "x11.struct.ImageFormatInfo.byte_order", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xproto_ImageOrder), 0, NULL, HFILL }},
{ &hf_x11_struct_ImageFormatInfo_guid, { "guid", "x11.struct.ImageFormatInfo.guid", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_ImageFormatInfo_bpp, { "bpp", "x11.struct.ImageFormatInfo.bpp", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_ImageFormatInfo_num_planes, { "num_planes", "x11.struct.ImageFormatInfo.num_planes", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -6970,7 +7042,7 @@
{ &hf_x11_struct_ImageFormatInfo_red_mask, { "red_mask", "x11.struct.ImageFormatInfo.red_mask", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_ImageFormatInfo_green_mask, { "green_mask", "x11.struct.ImageFormatInfo.green_mask", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_ImageFormatInfo_blue_mask, { "blue_mask", "x11.struct.ImageFormatInfo.blue_mask", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_ImageFormatInfo_format, { "format", "x11.struct.ImageFormatInfo.format", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_ImageFormatInfoFormat), 0, NULL, HFILL }},
+{ &hf_x11_struct_ImageFormatInfo_format, { "format", "x11.struct.ImageFormatInfo.format", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xv_ImageFormatInfoFormat), 0, NULL, HFILL }},
{ &hf_x11_struct_ImageFormatInfo_y_sample_bits, { "y_sample_bits", "x11.struct.ImageFormatInfo.y_sample_bits", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_ImageFormatInfo_u_sample_bits, { "u_sample_bits", "x11.struct.ImageFormatInfo.u_sample_bits", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_ImageFormatInfo_v_sample_bits, { "v_sample_bits", "x11.struct.ImageFormatInfo.v_sample_bits", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
@@ -6981,8 +7053,8 @@
{ &hf_x11_struct_ImageFormatInfo_vvert_u_period, { "vvert_u_period", "x11.struct.ImageFormatInfo.vvert_u_period", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_ImageFormatInfo_vvert_v_period, { "vvert_v_period", "x11.struct.ImageFormatInfo.vvert_v_period", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_struct_ImageFormatInfo_vcomp_order, { "vcomp_order", "x11.struct.ImageFormatInfo.vcomp_order", FT_UINT8, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
-{ &hf_x11_struct_ImageFormatInfo_vscanline_order, { "vscanline_order", "x11.struct.ImageFormatInfo.vscanline_order", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_ScanlineOrder), 0, NULL, HFILL }},
-{ &hf_x11_xv_VideoNotify_reason, { "reason", "x11.xv.VideoNotify.reason", FT_UINT8, BASE_DEC, VALS(x11_enum_VideoNotifyReason), 0, NULL, HFILL }},
+{ &hf_x11_struct_ImageFormatInfo_vscanline_order, { "vscanline_order", "x11.struct.ImageFormatInfo.vscanline_order", FT_UINT8, BASE_HEX_DEC, VALS(x11_enum_xv_ScanlineOrder), 0, NULL, HFILL }},
+{ &hf_x11_xv_VideoNotify_reason, { "reason", "x11.xv.VideoNotify.reason", FT_UINT8, BASE_DEC, VALS(x11_enum_xv_VideoNotifyReason), 0, NULL, HFILL }},
{ &hf_x11_xv_VideoNotify_time, { "time", "x11.xv.VideoNotify.time", FT_UINT32, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xv_VideoNotify_drawable, { "drawable", "x11.xv.VideoNotify.drawable", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_xv_VideoNotify_port, { "port", "x11.xv.VideoNotify.port", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
@@ -6999,10 +7071,10 @@
{ &hf_x11_xv_QueryEncodings_reply_num_encodings, { "num_encodings", "x11.xv.QueryEncodings.reply.num_encodings", FT_UINT16, BASE_HEX_DEC, NULL, 0, NULL, HFILL }},
{ &hf_x11_xv_QueryEncodings_reply_info, { "info", "x11.xv.QueryEncodings.reply.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_x11_xv_GrabPort_port, { "port", "x11.xv.GrabPort.port", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xv_GrabPort_time, { "time", "x11.xv.GrabPort.time", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_Time), 0, NULL, HFILL }},
-{ &hf_x11_xv_GrabPort_reply_result, { "result", "x11.xv.GrabPort.reply.result", FT_UINT8, BASE_DEC, VALS(x11_enum_GrabPortStatus), 0, NULL, HFILL }},
+{ &hf_x11_xv_GrabPort_time, { "time", "x11.xv.GrabPort.time", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_xproto_Time), 0, NULL, HFILL }},
+{ &hf_x11_xv_GrabPort_reply_result, { "result", "x11.xv.GrabPort.reply.result", FT_UINT8, BASE_DEC, VALS(x11_enum_xv_GrabPortStatus), 0, NULL, HFILL }},
{ &hf_x11_xv_UngrabPort_port, { "port", "x11.xv.UngrabPort.port", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
-{ &hf_x11_xv_UngrabPort_time, { "time", "x11.xv.UngrabPort.time", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_Time), 0, NULL, HFILL }},
+{ &hf_x11_xv_UngrabPort_time, { "time", "x11.xv.UngrabPort.time", FT_UINT32, BASE_HEX_DEC, VALS(x11_enum_xproto_Time), 0, NULL, HFILL }},
{ &hf_x11_xv_PutVideo_port, { "port", "x11.xv.PutVideo.port", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_xv_PutVideo_drawable, { "drawable", "x11.xv.PutVideo.drawable", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
{ &hf_x11_xv_PutVideo_gc, { "gc", "x11.xv.PutVideo.gc", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},